From e6f6849c9bfce58780e9d62a771d319df9b75e67 Mon Sep 17 00:00:00 2001 From: Stefan Naewe Date: Tue, 17 Sep 2013 14:24:28 +0200 Subject: [PATCH] Install vim74 Signed-off-by: Stefan Naewe --- bin/gvim | 2 +- bin/vi | 2 +- bin/vim | 2 +- share/vim/vim73/autoload/ada.vim | 630 - share/vim/vim73/autoload/ccomplete.vim | 605 - share/vim/vim73/autoload/getscript.vim | 644 - share/vim/vim73/autoload/htmlcomplete.vim | 765 - share/vim/vim73/autoload/netrw.vim | 8449 --------- share/vim/vim73/autoload/netrwFileHandlers.vim | 361 - share/vim/vim73/autoload/netrwSettings.vim | 208 - share/vim/vim73/autoload/phpcomplete.vim | 5148 ------ share/vim/vim73/autoload/rubycomplete.vim | 802 - share/vim/vim73/autoload/spellfile.vim | 208 - share/vim/vim73/autoload/sqlcomplete.vim | 795 - share/vim/vim73/autoload/syntaxcomplete.vim | 450 - share/vim/vim73/autoload/tar.vim | 599 - share/vim/vim73/autoload/tohtml.vim | 378 - share/vim/vim73/autoload/vimball.vim | 737 - share/vim/vim73/autoload/xmlcomplete.vim | 539 - share/vim/vim73/autoload/zip.vim | 393 - share/vim/vim73/colors/koehler.vim | 70 - share/vim/vim73/colors/ron.vim | 43 - share/vim/vim73/compiler/checkstyle.vim | 20 - share/vim/vim73/compiler/cs.vim | 19 - share/vim/vim73/compiler/decada.vim | 55 - share/vim/vim73/compiler/eruby.vim | 41 - share/vim/vim73/compiler/gcc.vim | 39 - share/vim/vim73/compiler/gnat.vim | 73 - share/vim/vim73/compiler/hp_acc.vim | 33 - share/vim/vim73/compiler/intel.vim | 21 - share/vim/vim73/compiler/irix5_c.vim | 21 - share/vim/vim73/compiler/irix5_cpp.vim | 21 - share/vim/vim73/compiler/javac.vim | 18 - share/vim/vim73/compiler/mcs.vim | 24 - share/vim/vim73/compiler/mips_c.vim | 21 - share/vim/vim73/compiler/mipspro_c89.vim | 22 - share/vim/vim73/compiler/mipspro_cpp.vim | 21 - share/vim/vim73/compiler/php.vim | 28 - share/vim/vim73/compiler/rspec.vim | 41 - share/vim/vim73/compiler/rst.vim | 25 - share/vim/vim73/compiler/ruby.vim | 68 - share/vim/vim73/compiler/rubyunit.vim | 35 - share/vim/vim73/compiler/se.vim | 28 - share/vim/vim73/compiler/tcl.vim | 18 - share/vim/vim73/compiler/tex.vim | 68 - share/vim/vim73/compiler/tidy.vim | 29 - share/vim/vim73/compiler/xmllint.vim | 29 - share/vim/vim73/doc/arabic.txt | 322 - share/vim/vim73/doc/autocmd.txt | 1303 -- share/vim/vim73/doc/change.txt | 1659 -- share/vim/vim73/doc/cmdline.txt | 1091 -- share/vim/vim73/doc/debug.txt | 174 - share/vim/vim73/doc/debugger.txt | 140 - share/vim/vim73/doc/develop.txt | 490 - share/vim/vim73/doc/diff.txt | 414 - share/vim/vim73/doc/digraph.txt | 350 - share/vim/vim73/doc/editing.txt | 1634 -- share/vim/vim73/doc/eval.txt | 8324 --------- share/vim/vim73/doc/evim-fr.1 | 56 - share/vim/vim73/doc/evim-fr.UTF-8.1 | 56 - share/vim/vim73/doc/farsi.txt | 269 - share/vim/vim73/doc/filetype.txt | 620 - share/vim/vim73/doc/fold.txt | 590 - share/vim/vim73/doc/ft_ada.txt | 515 - share/vim/vim73/doc/ft_sql.txt | 776 - share/vim/vim73/doc/gui.txt | 1001 - share/vim/vim73/doc/gui_w16.txt | 186 - share/vim/vim73/doc/gui_w32.txt | 487 - share/vim/vim73/doc/gui_x11.txt | 583 - share/vim/vim73/doc/hangulin.txt | 105 - share/vim/vim73/doc/hebrew.txt | 142 - share/vim/vim73/doc/help.txt | 221 - share/vim/vim73/doc/helphelp.txt | 349 - share/vim/vim73/doc/howto.txt | 96 - share/vim/vim73/doc/if_cscop.txt | 490 - share/vim/vim73/doc/if_lua.txt | 244 - share/vim/vim73/doc/if_mzsch.txt | 259 - share/vim/vim73/doc/if_ole.txt | 205 - share/vim/vim73/doc/if_perl.txt | 291 - share/vim/vim73/doc/if_pyth.txt | 382 - share/vim/vim73/doc/if_ruby.txt | 213 - share/vim/vim73/doc/if_sniff.txt | 95 - share/vim/vim73/doc/if_tcl.txt | 531 - share/vim/vim73/doc/indent.txt | 811 - share/vim/vim73/doc/index.txt | 1599 -- share/vim/vim73/doc/insert.txt | 1916 -- share/vim/vim73/doc/intro.txt | 881 - share/vim/vim73/doc/map.txt | 1424 -- share/vim/vim73/doc/mbyte.txt | 1426 -- share/vim/vim73/doc/message.txt | 842 - share/vim/vim73/doc/mlang.txt | 210 - share/vim/vim73/doc/motion.txt | 1312 -- share/vim/vim73/doc/netbeans.txt | 989 - share/vim/vim73/doc/options.txt | 8046 -------- share/vim/vim73/doc/os_390.txt | 135 - share/vim/vim73/doc/os_amiga.txt | 147 - share/vim/vim73/doc/os_beos.txt | 319 - share/vim/vim73/doc/os_dos.txt | 296 - share/vim/vim73/doc/os_mac.txt | 118 - share/vim/vim73/doc/os_mint.txt | 39 - share/vim/vim73/doc/os_msdos.txt | 276 - share/vim/vim73/doc/os_os2.txt | 221 - share/vim/vim73/doc/os_qnx.txt | 138 - share/vim/vim73/doc/os_risc.txt | 322 - share/vim/vim73/doc/os_unix.txt | 60 - share/vim/vim73/doc/os_vms.txt | 941 - share/vim/vim73/doc/os_win32.txt | 339 - share/vim/vim73/doc/pattern.txt | 1289 -- share/vim/vim73/doc/pi_getscript.txt | 435 - share/vim/vim73/doc/pi_gzip.txt | 39 - share/vim/vim73/doc/pi_netrw.txt | 3561 ---- share/vim/vim73/doc/pi_paren.txt | 57 - share/vim/vim73/doc/pi_spec.txt | 111 - share/vim/vim73/doc/pi_tar.txt | 124 - share/vim/vim73/doc/pi_vimball.txt | 247 - share/vim/vim73/doc/pi_zip.txt | 115 - share/vim/vim73/doc/print.txt | 755 - share/vim/vim73/doc/quickfix.txt | 1447 -- share/vim/vim73/doc/quickref.txt | 1401 -- share/vim/vim73/doc/quotes.txt | 274 - share/vim/vim73/doc/recover.txt | 230 - share/vim/vim73/doc/remote.txt | 204 - share/vim/vim73/doc/repeat.txt | 676 - share/vim/vim73/doc/rileft.txt | 124 - share/vim/vim73/doc/russian.txt | 74 - share/vim/vim73/doc/scroll.txt | 332 - share/vim/vim73/doc/sign.txt | 191 - share/vim/vim73/doc/spell.txt | 1613 -- share/vim/vim73/doc/sponsor.txt | 216 - share/vim/vim73/doc/starting.txt | 1513 -- share/vim/vim73/doc/syntax.txt | 4757 ----- share/vim/vim73/doc/tabpage.txt | 382 - share/vim/vim73/doc/tags | 8529 --------- share/vim/vim73/doc/tagsrch.txt | 837 - share/vim/vim73/doc/term.txt | 876 - share/vim/vim73/doc/tips.txt | 534 - share/vim/vim73/doc/todo.txt | 4748 ----- share/vim/vim73/doc/uganda.txt | 288 - share/vim/vim73/doc/undo.txt | 386 - share/vim/vim73/doc/usr_01.txt | 185 - share/vim/vim73/doc/usr_02.txt | 564 - share/vim/vim73/doc/usr_03.txt | 654 - share/vim/vim73/doc/usr_04.txt | 514 - share/vim/vim73/doc/usr_05.txt | 625 - share/vim/vim73/doc/usr_06.txt | 280 - share/vim/vim73/doc/usr_07.txt | 479 - share/vim/vim73/doc/usr_08.txt | 601 - share/vim/vim73/doc/usr_09.txt | 289 - share/vim/vim73/doc/usr_10.txt | 824 - share/vim/vim73/doc/usr_11.txt | 307 - share/vim/vim73/doc/usr_12.txt | 358 - share/vim/vim73/doc/usr_20.txt | 384 - share/vim/vim73/doc/usr_21.txt | 499 - share/vim/vim73/doc/usr_22.txt | 400 - share/vim/vim73/doc/usr_23.txt | 343 - share/vim/vim73/doc/usr_24.txt | 606 - share/vim/vim73/doc/usr_25.txt | 578 - share/vim/vim73/doc/usr_26.txt | 221 - share/vim/vim73/doc/usr_27.txt | 563 - share/vim/vim73/doc/usr_28.txt | 426 - share/vim/vim73/doc/usr_29.txt | 613 - share/vim/vim73/doc/usr_30.txt | 643 - share/vim/vim73/doc/usr_31.txt | 272 - share/vim/vim73/doc/usr_32.txt | 180 - share/vim/vim73/doc/usr_40.txt | 657 - share/vim/vim73/doc/usr_41.txt | 2429 --- share/vim/vim73/doc/usr_42.txt | 365 - share/vim/vim73/doc/usr_43.txt | 173 - share/vim/vim73/doc/usr_44.txt | 719 - share/vim/vim73/doc/usr_45.txt | 419 - share/vim/vim73/doc/usr_90.txt | 498 - share/vim/vim73/doc/usr_toc.txt | 354 - share/vim/vim73/doc/various.txt | 629 - share/vim/vim73/doc/version4.txt | 355 - share/vim/vim73/doc/version5.txt | 7813 -------- share/vim/vim73/doc/version6.txt | 14530 --------------- share/vim/vim73/doc/version7.txt | 10154 ---------- share/vim/vim73/doc/vi_diff.txt | 1009 - share/vim/vim73/doc/vim-fr.1 | 588 - share/vim/vim73/doc/vim-fr.UTF-8.1 | 588 - share/vim/vim73/doc/vim2html.pl | 228 - share/vim/vim73/doc/vimdiff-fr.1 | 53 - share/vim/vim73/doc/vimdiff-fr.UTF-8.1 | 53 - share/vim/vim73/doc/vimtutor-fr.1 | 59 - share/vim/vim73/doc/vimtutor-fr.UTF-8.1 | 59 - share/vim/vim73/doc/visual.txt | 509 - share/vim/vim73/doc/windows.txt | 1194 -- share/vim/vim73/doc/workshop.txt | 98 - share/vim/vim73/doc/xxd-fr.1 | 395 - share/vim/vim73/doc/xxd-fr.UTF-8.1 | 395 - share/vim/vim73/filetype.vim | 2514 --- share/vim/vim73/ftplugin/aap.vim | 25 - share/vim/vim73/ftplugin/abaqus.vim | 89 - share/vim/vim73/ftplugin/ada.vim | 210 - share/vim/vim73/ftplugin/ant.vim | 43 - share/vim/vim73/ftplugin/art.vim | 16 - share/vim/vim73/ftplugin/aspvbs.vim | 59 - share/vim/vim73/ftplugin/c.vim | 64 - share/vim/vim73/ftplugin/changelog.vim | 301 - share/vim/vim73/ftplugin/config.vim | 41 - share/vim/vim73/ftplugin/cs.vim | 24 - share/vim/vim73/ftplugin/csc.vim | 26 - share/vim/vim73/ftplugin/csh.vim | 47 - share/vim/vim73/ftplugin/cucumber.vim | 132 - share/vim/vim73/ftplugin/debchangelog.vim | 383 - share/vim/vim73/ftplugin/dosbatch.vim | 21 - share/vim/vim73/ftplugin/dtd.vim | 39 - share/vim/vim73/ftplugin/eruby.vim | 104 - share/vim/vim73/ftplugin/fortran.vim | 118 - share/vim/vim73/ftplugin/git.vim | 37 - share/vim/vim73/ftplugin/gitcommit.vim | 68 - share/vim/vim73/ftplugin/haml.vim | 67 - share/vim/vim73/ftplugin/hamster.vim | 61 - share/vim/vim73/ftplugin/help.vim | 19 - share/vim/vim73/ftplugin/html.vim | 90 - share/vim/vim73/ftplugin/initex.vim | 38 - share/vim/vim73/ftplugin/ishd.vim | 28 - share/vim/vim73/ftplugin/java.vim | 50 - share/vim/vim73/ftplugin/jsp.vim | 66 - share/vim/vim73/ftplugin/kwt.vim | 20 - share/vim/vim73/ftplugin/lisp.vim | 26 - share/vim/vim73/ftplugin/logcheck.vim | 17 - share/vim/vim73/ftplugin/lua.vim | 36 - share/vim/vim73/ftplugin/mail.vim | 35 - share/vim/vim73/ftplugin/make.vim | 28 - share/vim/vim73/ftplugin/man.vim | 181 - share/vim/vim73/ftplugin/markdown.vim | 19 - share/vim/vim73/ftplugin/matlab.vim | 30 - share/vim/vim73/ftplugin/ocaml.vim | 584 - share/vim/vim73/ftplugin/occam.vim | 39 - share/vim/vim73/ftplugin/pascal.vim | 15 - share/vim/vim73/ftplugin/perl.vim | 71 - share/vim/vim73/ftplugin/perl6.vim | 48 - share/vim/vim73/ftplugin/php.vim | 82 - share/vim/vim73/ftplugin/plaintex.vim | 36 - share/vim/vim73/ftplugin/postscr.vim | 31 - share/vim/vim73/ftplugin/pyrex.vim | 22 - share/vim/vim73/ftplugin/python.vim | 43 - share/vim/vim73/ftplugin/qf.vim | 16 - share/vim/vim73/ftplugin/rpl.vim | 20 - share/vim/vim73/ftplugin/ruby.vim | 274 - share/vim/vim73/ftplugin/scheme.vim | 26 - share/vim/vim73/ftplugin/sgml.vim | 39 - share/vim/vim73/ftplugin/sh.vim | 38 - share/vim/vim73/ftplugin/spec.vim | 168 - share/vim/vim73/ftplugin/sql.vim | 493 - share/vim/vim73/ftplugin/svg.vim | 39 - share/vim/vim73/ftplugin/tcl.vim | 36 - share/vim/vim73/ftplugin/tcsh.vim | 39 - share/vim/vim73/ftplugin/tex.vim | 45 - share/vim/vim73/ftplugin/vhdl.vim | 84 - share/vim/vim73/ftplugin/vim.vim | 74 - share/vim/vim73/ftplugin/xhtml.vim | 66 - share/vim/vim73/ftplugin/xml.vim | 63 - share/vim/vim73/ftplugin/xs.vim | 13 - share/vim/vim73/ftplugin/xsd.vim | 38 - share/vim/vim73/ftplugin/zsh.vim | 19 - share/vim/vim73/ftplugof.vim | 11 - share/vim/vim73/gvim.exe | Bin 2008064 -> 0 bytes share/vim/vim73/indent/ada.vim | 303 - share/vim/vim73/indent/awk.vim | 228 - share/vim/vim73/indent/cmake.vim | 85 - share/vim/vim73/indent/css.vim | 84 - share/vim/vim73/indent/cucumber.vim | 60 - share/vim/vim73/indent/dtd.vim | 325 - share/vim/vim73/indent/eiffel.vim | 106 - share/vim/vim73/indent/erlang.vim | 206 - share/vim/vim73/indent/eruby.vim | 81 - share/vim/vim73/indent/fortran.vim | 166 - share/vim/vim73/indent/gitconfig.vim | 35 - share/vim/vim73/indent/haml.vim | 73 - share/vim/vim73/indent/html.vim | 242 - share/vim/vim73/indent/idlang.vim | 63 - share/vim/vim73/indent/java.vim | 130 - share/vim/vim73/indent/liquid.vim | 63 - share/vim/vim73/indent/lisp.vim | 15 - share/vim/vim73/indent/mp.vim | 206 - share/vim/vim73/indent/ocaml.vim | 253 - share/vim/vim73/indent/occam.vim | 182 - share/vim/vim73/indent/pascal.vim | 173 - share/vim/vim73/indent/perl.vim | 180 - share/vim/vim73/indent/perl6.vim | 136 - share/vim/vim73/indent/php.vim | 733 - share/vim/vim73/indent/python.vim | 193 - share/vim/vim73/indent/rst.vim | 53 - share/vim/vim73/indent/ruby.vim | 378 - share/vim/vim73/indent/sass.vim | 39 - share/vim/vim73/indent/sdl.vim | 89 - share/vim/vim73/indent/sqlanywhere.vim | 385 - share/vim/vim73/indent/tcsh.vim | 51 - share/vim/vim73/indent/verilog.vim | 219 - share/vim/vim73/indent/vhdl.vim | 406 - share/vim/vim73/indent/vim.vim | 74 - share/vim/vim73/indent/xinetd.vim | 50 - share/vim/vim73/indent/xml.vim | 96 - share/vim/vim73/lang/menu_af_af.latin1.vim | 152 - share/vim/vim73/lang/menu_ca_es.latin1.vim | 313 - share/vim/vim73/lang/menu_chinese_gb.936.vim | 263 - share/vim/vim73/lang/menu_chinese_taiwan.950.vim | 285 - share/vim/vim73/lang/menu_cs_cz.iso_8859-2.vim | 264 - share/vim/vim73/lang/menu_cs_cz.latin1.vim | 3 - .../vim73/lang/menu_czech_czech_republic.1250.vim | 264 - .../vim73/lang/menu_czech_czech_republic.ascii.vim | 264 - share/vim/vim73/lang/menu_de_de.latin1.vim | 304 - share/vim/vim73/lang/menu_eo.utf-8.vim | 457 - share/vim/vim73/lang/menu_es_es.latin1.vim | 318 - share/vim/vim73/lang/menu_fi_fi.latin1.vim | 473 - share/vim/vim73/lang/menu_fr_fr.latin1.vim | 468 - share/vim/vim73/lang/menu_hu_hu.iso_8859-2.vim | 258 - share/vim/vim73/lang/menu_hu_hu.utf-8.vim | 242 - share/vim/vim73/lang/menu_it_it.latin1.vim | 351 - share/vim/vim73/lang/menu_ja.cp932.vim | 5 - share/vim/vim73/lang/menu_ja.euc-jp.vim | 6 - share/vim/vim73/lang/menu_ja.eucjp.vim | 6 - share/vim/vim73/lang/menu_ja.ujis.vim | 6 - share/vim/vim73/lang/menu_ja_jp.cp932.vim | 5 - share/vim/vim73/lang/menu_ja_jp.euc-jp.vim | 338 - share/vim/vim73/lang/menu_ja_jp.eucjp.vim | 6 - share/vim/vim73/lang/menu_ja_jp.ujis.vim | 6 - share/vim/vim73/lang/menu_ja_jp.utf-8.vim | 338 - share/vim/vim73/lang/menu_japanese_japan.932.vim | 338 - share/vim/vim73/lang/menu_ko_kr.euckr.vim | 261 - share/vim/vim73/lang/menu_ko_kr.utf-8.vim | 261 - share/vim/vim73/lang/menu_nl_nl.latin1.vim | 240 - share/vim/vim73/lang/menu_no_no.latin1.vim | 233 - share/vim/vim73/lang/menu_pl_pl.iso_8859-2.vim | 287 - share/vim/vim73/lang/menu_pl_pl.utf-8.vim | 287 - share/vim/vim73/lang/menu_polish_poland.1250.vim | 287 - share/vim/vim73/lang/menu_pt_br.vim | 285 - share/vim/vim73/lang/menu_pt_pt.vim | 264 - share/vim/vim73/lang/menu_ru_ru.koi8-r.vim | 296 - share/vim/vim73/lang/menu_ru_ru.vim | 296 - share/vim/vim73/lang/menu_sk_sk.iso_8859-2.vim | 232 - share/vim/vim73/lang/menu_sl_si.cp1250.vim | 294 - share/vim/vim73/lang/menu_sl_si.latin2.vim | 294 - share/vim/vim73/lang/menu_sl_si.utf-8.vim | 294 - .../lang/menu_slovak_slovak_republic.1250.vim | 232 - share/vim/vim73/lang/menu_sr_rs.ascii.vim | 258 - share/vim/vim73/lang/menu_sr_rs.iso_8859-2.vim | 259 - share/vim/vim73/lang/menu_sr_rs.iso_8859-5.vim | 259 - share/vim/vim73/lang/menu_sr_rs.utf-8.vim | 261 - share/vim/vim73/lang/menu_sv_se.latin1.vim | 250 - share/vim/vim73/lang/menu_uk_ua.cp1251.vim | 246 - share/vim/vim73/lang/menu_uk_ua.koi8-u.vim | 246 - share/vim/vim73/lang/menu_vi_vn.vim | 329 - share/vim/vim73/lang/menu_zh_cn.gb2312.vim | 266 - share/vim/vim73/lang/menu_zh_cn.utf-8.vim | 263 - share/vim/vim73/lang/menu_zh_tw.utf-8.vim | 285 - share/vim/vim73/macros/editexisting.vim | 119 - share/vim/vim73/macros/justify.vim | 317 - share/vim/vim73/macros/less.sh | 18 - share/vim/vim73/macros/less.vim | 244 - share/vim/vim73/macros/matchit.vim | 812 - share/vim/vim73/makemenu.vim | 600 - share/vim/vim73/menu.vim | 1106 -- share/vim/vim73/mswin.vim | 106 - share/vim/vim73/optwin.vim | 1342 -- share/vim/vim73/plugin/getscriptPlugin.vim | 38 - share/vim/vim73/plugin/matchparen.vim | 151 - share/vim/vim73/plugin/netrwPlugin.vim | 168 - share/vim/vim73/plugin/tarPlugin.vim | 53 - share/vim/vim73/plugin/tohtml.vim | 31 - share/vim/vim73/plugin/vimballPlugin.vim | 36 - share/vim/vim73/plugin/zipPlugin.vim | 50 - share/vim/vim73/scripts.vim | 360 - share/vim/vim73/spell/br/br_FR.diff | 13 - share/vim/vim73/spell/br/main.aap | 86 - share/vim/vim73/spell/en.utf-8.spl | Bin 570548 -> 0 bytes share/vim/vim73/spell/en.utf-8.sug | Bin 556546 -> 0 bytes share/vim/vim73/spell/es/es_MX.diff | 6975 ------- share/vim/vim73/spell/ga/ga_IE.diff | 308 - share/vim/vim73/spell/gd/gd_GB.diff | 304 - share/vim/vim73/spell/hu/main.aap | 81 - share/vim/vim73/spell/sv/sv_SE.diff | 205 - share/vim/vim73/synmenu.vim | 586 - share/vim/vim73/syntax/2html.vim | 1120 -- share/vim/vim73/syntax/abap.vim | 153 - share/vim/vim73/syntax/abel.vim | 167 - share/vim/vim73/syntax/ada.vim | 363 - share/vim/vim73/syntax/art.vim | 44 - share/vim/vim73/syntax/asm.vim | 108 - share/vim/vim73/syntax/asn.vim | 81 - share/vim/vim73/syntax/autoit.vim | 1111 -- share/vim/vim73/syntax/automake.vim | 86 - share/vim/vim73/syntax/awk.vim | 216 - share/vim/vim73/syntax/ayacc.vim | 86 - share/vim/vim73/syntax/basic.vim | 174 - share/vim/vim73/syntax/bc.vim | 78 - share/vim/vim73/syntax/bib.vim | 93 - share/vim/vim73/syntax/bindzone.vim | 110 - share/vim/vim73/syntax/blank.vim | 46 - share/vim/vim73/syntax/bzr.vim | 63 - share/vim/vim73/syntax/c.vim | 374 - share/vim/vim73/syntax/cfg.vim | 60 - share/vim/vim73/syntax/cl.vim | 110 - share/vim/vim73/syntax/clean.vim | 94 - share/vim/vim73/syntax/clipper.vim | 143 - share/vim/vim73/syntax/cmake.vim | 81 - share/vim/vim73/syntax/cpp.vim | 62 - share/vim/vim73/syntax/crontab.vim | 79 - share/vim/vim73/syntax/csc.vim | 199 - share/vim/vim73/syntax/css.vim | 282 - share/vim/vim73/syntax/cucumber.vim | 126 - share/vim/vim73/syntax/cupl.vim | 130 - share/vim/vim73/syntax/cweb.vim | 80 - share/vim/vim73/syntax/d.vim | 301 - share/vim/vim73/syntax/datascript.vim | 90 - share/vim/vim73/syntax/debchangelog.vim | 59 - share/vim/vim73/syntax/debcontrol.vim | 104 - share/vim/vim73/syntax/debsources.vim | 35 - share/vim/vim73/syntax/diff.vim | 334 - share/vim/vim73/syntax/dircolors.vim | 752 - share/vim/vim73/syntax/django.vim | 96 - share/vim/vim73/syntax/docbk.vim | 150 - share/vim/vim73/syntax/dosini.vim | 44 - share/vim/vim73/syntax/dot.vim | 110 - share/vim/vim73/syntax/doxygen.vim | 594 - share/vim/vim73/syntax/dtd.vim | 181 - share/vim/vim73/syntax/eiffel.vim | 196 - share/vim/vim73/syntax/erlang.vim | 229 - share/vim/vim73/syntax/eruby.vim | 77 - share/vim/vim73/syntax/esmtprc.vim | 34 - share/vim/vim73/syntax/expect.vim | 113 - share/vim/vim73/syntax/fasm.vim | 145 - share/vim/vim73/syntax/forth.vim | 334 - share/vim/vim73/syntax/fortran.vim | 540 - share/vim/vim73/syntax/fstab.vim | 280 - share/vim/vim73/syntax/fvwm.vim | 637 - share/vim/vim73/syntax/gdb.vim | 111 - share/vim/vim73/syntax/gdmo.vim | 96 - share/vim/vim73/syntax/gitcommit.vim | 83 - share/vim/vim73/syntax/gitrebase.vim | 35 - share/vim/vim73/syntax/gp.vim | 82 - share/vim/vim73/syntax/gpg.vim | 105 - share/vim/vim73/syntax/groovy.vim | 451 - share/vim/vim73/syntax/group.vim | 52 - share/vim/vim73/syntax/gsp.vim | 59 - share/vim/vim73/syntax/hb.vim | 97 - share/vim/vim73/syntax/help.vim | 188 - share/vim/vim73/syntax/html.vim | 292 - share/vim/vim73/syntax/idl.vim | 319 - share/vim/vim73/syntax/idlang.vim | 253 - share/vim/vim73/syntax/ist.vim | 70 - share/vim/vim73/syntax/jam.vim | 252 - share/vim/vim73/syntax/java.vim | 348 - share/vim/vim73/syntax/javacc.vim | 77 - share/vim/vim73/syntax/javascript.vim | 135 - share/vim/vim73/syntax/kwt.vim | 87 - share/vim/vim73/syntax/lex.vim | 129 - share/vim/vim73/syntax/liquid.vim | 137 - share/vim/vim73/syntax/lisp.vim | 625 - share/vim/vim73/syntax/logindefs.vim | 94 - share/vim/vim73/syntax/logtalk.vim | 398 - share/vim/vim73/syntax/lout.vim | 139 - share/vim/vim73/syntax/lpc.vim | 455 - share/vim/vim73/syntax/lsl.vim | 272 - share/vim/vim73/syntax/lua.vim | 304 - share/vim/vim73/syntax/lynx.vim | 94 - share/vim/vim73/syntax/mail.vim | 106 - share/vim/vim73/syntax/mailcap.vim | 54 - share/vim/vim73/syntax/make.vim | 137 - share/vim/vim73/syntax/markdown.vim | 105 - share/vim/vim73/syntax/masm.vim | 343 - share/vim/vim73/syntax/matlab.vim | 123 - share/vim/vim73/syntax/mma.vim | 325 - share/vim/vim73/syntax/mmix.vim | 162 - share/vim/vim73/syntax/monk.vim | 228 - share/vim/vim73/syntax/mrxvtrc.vim | 276 - share/vim/vim73/syntax/msidl.vim | 92 - share/vim/vim73/syntax/muttrc.vim | 768 - share/vim/vim73/syntax/nasm.vim | 522 - share/vim/vim73/syntax/natural.vim | 209 - share/vim/vim73/syntax/netrw.vim | 109 - share/vim/vim73/syntax/nroff.vim | 259 - share/vim/vim73/syntax/objc.vim | 110 - share/vim/vim73/syntax/ocaml.vim | 327 - share/vim/vim73/syntax/opl.vim | 96 - share/vim/vim73/syntax/pamconf.vim | 118 - share/vim/vim73/syntax/perl.vim | 543 - share/vim/vim73/syntax/perl6.vim | 2249 --- share/vim/vim73/syntax/pf.vim | 75 - share/vim/vim73/syntax/pfmain.vim | 1114 -- share/vim/vim73/syntax/php.vim | 649 - share/vim/vim73/syntax/pine.vim | 372 - share/vim/vim73/syntax/po.vim | 135 - share/vim/vim73/syntax/pod.vim | 90 - share/vim/vim73/syntax/pov.vim | 144 - share/vim/vim73/syntax/povini.vim | 62 - share/vim/vim73/syntax/progress.vim | 231 - share/vim/vim73/syntax/prolog.vim | 119 - share/vim/vim73/syntax/python.vim | 295 - share/vim/vim73/syntax/r.vim | 111 - share/vim/vim73/syntax/ratpoison.vim | 272 - share/vim/vim73/syntax/rcs.vim | 76 - share/vim/vim73/syntax/readline.vim | 176 - share/vim/vim73/syntax/resolv.vim | 88 - share/vim/vim73/syntax/reva.vim | 191 - share/vim/vim73/syntax/rexx.vim | 298 - share/vim/vim73/syntax/rhelp.vim | 212 - share/vim/vim73/syntax/rpl.vim | 491 - share/vim/vim73/syntax/rst.vim | 175 - share/vim/vim73/syntax/ruby.vim | 370 - share/vim/vim73/syntax/sas.vim | 291 - share/vim/vim73/syntax/sass.vim | 90 - share/vim/vim73/syntax/scheme.vim | 324 - share/vim/vim73/syntax/sd.vim | 75 - share/vim/vim73/syntax/sdl.vim | 167 - share/vim/vim73/syntax/sendpr.vim | 32 - share/vim/vim73/syntax/sgmldecl.vim | 79 - share/vim/vim73/syntax/sgmllnx.vim | 68 - share/vim/vim73/syntax/sh.vim | 605 - share/vim/vim73/syntax/sisu.vim | 204 - share/vim/vim73/syntax/slice.vim | 90 - share/vim/vim73/syntax/smil.vim | 154 - share/vim/vim73/syntax/snnspat.vim | 68 - share/vim/vim73/syntax/spice.vim | 87 - share/vim/vim73/syntax/spup.vim | 277 - share/vim/vim73/syntax/sqlanywhere.vim | 686 - share/vim/vim73/syntax/sqr.vim | 295 - share/vim/vim73/syntax/sshconfig.vim | 116 - share/vim/vim73/syntax/sshdconfig.vim | 111 - share/vim/vim73/syntax/st.vim | 102 - share/vim/vim73/syntax/sudoers.vim | 266 - share/vim/vim73/syntax/svn.vim | 51 - share/vim/vim73/syntax/synload.vim | 76 - share/vim/vim73/syntax/sysctl.vim | 39 - share/vim/vim73/syntax/taskdata.vim | 43 - share/vim/vim73/syntax/taskedit.vim | 35 - share/vim/vim73/syntax/tasm.vim | 122 - share/vim/vim73/syntax/tex.vim | 1094 -- share/vim/vim73/syntax/tidy.vim | 162 - share/vim/vim73/syntax/tsalt.vim | 214 - share/vim/vim73/syntax/uil.vim | 86 - share/vim/vim73/syntax/valgrind.vim | 99 - share/vim/vim73/syntax/verilog.vim | 134 - share/vim/vim73/syntax/vhdl.vim | 184 - share/vim/vim73/syntax/vim.vim | 870 - share/vim/vim73/syntax/viminfo.vim | 38 - share/vim/vim73/syntax/wget.vim | 194 - share/vim/vim73/syntax/xdefaults.vim | 145 - share/vim/vim73/syntax/xf86conf.vim | 209 - share/vim/vim73/syntax/xml.vim | 346 - share/vim/vim73/syntax/xpm2.vim | 162 - share/vim/vim73/syntax/xquery.vim | 80 - share/vim/vim73/syntax/xs.vim | 39 - share/vim/vim73/syntax/yacc.vim | 122 - share/vim/vim73/syntax/yaml.vim | 86 - share/vim/vim73/tools/ccfilter_README.txt | 91 - share/vim/vim73/tools/efm_perl.pl | 153 - share/vim/vim73/tools/vim_vs_net.cmd | 24 - share/vim/vim73/tutor/Makefile | 96 - share/vim/vim73/tutor/tutor | 970 - share/vim/vim73/tutor/tutor.bj | 987 - share/vim/vim73/tutor/tutor.bj.utf-8 | 987 - share/vim/vim73/tutor/tutor.de | 980 - share/vim/vim73/tutor/tutor.de.utf-8 | 980 - share/vim/vim73/tutor/tutor.eo | 991 - share/vim/vim73/tutor/tutor.eo.utf-8 | 991 - share/vim/vim73/tutor/tutor.fr | 1038 -- share/vim/vim73/tutor/tutor.fr.utf-8 | 1038 -- share/vim/vim73/tutor/tutor.hr | 972 - share/vim/vim73/tutor/tutor.hr.cp1250 | 972 - share/vim/vim73/tutor/tutor.hr.utf-8 | 972 - share/vim/vim73/tutor/tutor.hu | 830 - share/vim/vim73/tutor/tutor.hu.cp1250 | 830 - share/vim/vim73/tutor/tutor.hu.utf-8 | 830 - share/vim/vim73/tutor/tutor.ja.euc | 975 - share/vim/vim73/tutor/tutor.ja.sjis | 975 - share/vim/vim73/tutor/tutor.ja.utf-8 | 975 - share/vim/vim73/tutor/tutor.ko.euc | 812 - share/vim/vim73/tutor/tutor.ko.utf-8 | 812 - share/vim/vim73/tutor/tutor.nb | 973 - share/vim/vim73/tutor/tutor.nb.utf-8 | 973 - share/vim/vim73/tutor/tutor.no | 973 - share/vim/vim73/tutor/tutor.no.utf-8 | 973 - share/vim/vim73/tutor/tutor.sk | 1008 - share/vim/vim73/tutor/tutor.sk.cp1250 | 1008 - share/vim/vim73/tutor/tutor.sk.utf-8 | 1008 - share/vim/vim73/tutor/tutor.utf-8 | 970 - share/vim/vim73/tutor/tutor.vim | 183 - share/vim/vim73/tutor/tutor.zh.euc | 851 - share/vim/vim73/vim.exe | Bin 1855488 -> 0 bytes share/vim/vim73/vimlogo.eps | 791 - share/vim/vim73/vimrc_example.vim | 96 - share/vim/{vim73 => vim74}/autoload/README.txt | 0 share/vim/vim74/autoload/ada.vim | 635 + .../vim/{vim73 => vim74}/autoload/adacomplete.vim | 0 share/vim/vim74/autoload/ccomplete.vim | 610 + share/vim/vim74/autoload/clojurecomplete.vim | 20 + .../vim/{vim73 => vim74}/autoload/csscomplete.vim | 0 share/vim/{vim73 => vim74}/autoload/decada.vim | 0 share/vim/vim74/autoload/getscript.vim | 667 + share/vim/{vim73 => vim74}/autoload/gnat.vim | 0 share/vim/{vim73 => vim74}/autoload/gzip.vim | 0 share/vim/vim74/autoload/htmlcomplete.vim | 766 + .../autoload/javascriptcomplete.vim | 0 share/vim/vim74/autoload/netrw.vim | 9858 ++++++++++ share/vim/vim74/autoload/netrwFileHandlers.vim | 362 + share/vim/vim74/autoload/netrwSettings.vim | 239 + share/vim/{vim73 => vim74}/autoload/paste.vim | 0 share/vim/vim74/autoload/phpcomplete.vim | 5152 ++++++ .../{vim73 => vim74}/autoload/python3complete.vim | 0 .../{vim73 => vim74}/autoload/pythoncomplete.vim | 0 share/vim/vim74/autoload/rubycomplete.vim | 805 + share/vim/vim74/autoload/spellfile.vim | 209 + share/vim/vim74/autoload/sqlcomplete.vim | 967 + share/vim/vim74/autoload/syntaxcomplete.vim | 755 + share/vim/vim74/autoload/tar.vim | 626 + share/vim/vim74/autoload/tohtml.vim | 923 + share/vim/vim74/autoload/vimball.vim | 775 + share/vim/{vim73 => vim74}/autoload/xml/html32.vim | 0 .../vim/{vim73 => vim74}/autoload/xml/html401f.vim | 0 .../vim/{vim73 => vim74}/autoload/xml/html401s.vim | 0 .../vim/{vim73 => vim74}/autoload/xml/html401t.vim | 0 .../vim/{vim73 => vim74}/autoload/xml/html40f.vim | 0 .../vim/{vim73 => vim74}/autoload/xml/html40s.vim | 0 .../vim/{vim73 => vim74}/autoload/xml/html40t.vim | 0 .../vim/{vim73 => vim74}/autoload/xml/xhtml10f.vim | 0 .../vim/{vim73 => vim74}/autoload/xml/xhtml10s.vim | 0 .../vim/{vim73 => vim74}/autoload/xml/xhtml10t.vim | 0 .../vim/{vim73 => vim74}/autoload/xml/xhtml11.vim | 0 share/vim/{vim73 => vim74}/autoload/xml/xsd.vim | 0 share/vim/{vim73 => vim74}/autoload/xml/xsl.vim | 0 share/vim/vim74/autoload/xmlcomplete.vim | 539 + share/vim/vim74/autoload/zip.vim | 405 + share/vim/{vim73 => vim74}/bugreport.vim | 0 share/vim/{vim73 => vim74}/colors/README.txt | 0 share/vim/{vim73 => vim74}/colors/blue.vim | 0 share/vim/{vim73 => vim74}/colors/darkblue.vim | 0 share/vim/{vim73 => vim74}/colors/default.vim | 0 share/vim/{vim73 => vim74}/colors/delek.vim | 0 share/vim/{vim73 => vim74}/colors/desert.vim | 0 share/vim/{vim73 => vim74}/colors/elflord.vim | 0 share/vim/{vim73 => vim74}/colors/evening.vim | 0 share/vim/vim74/colors/koehler.vim | 72 + share/vim/{vim73 => vim74}/colors/morning.vim | 0 share/vim/{vim73 => vim74}/colors/murphy.vim | 0 share/vim/{vim73 => vim74}/colors/pablo.vim | 0 share/vim/{vim73 => vim74}/colors/peachpuff.vim | 0 share/vim/vim74/colors/ron.vim | 45 + share/vim/{vim73 => vim74}/colors/shine.vim | 0 share/vim/{vim73 => vim74}/colors/slate.vim | 0 share/vim/{vim73 => vim74}/colors/torte.vim | 0 share/vim/{vim73 => vim74}/colors/zellner.vim | 0 share/vim/{vim73 => vim74}/compiler/README.txt | 0 share/vim/{vim73 => vim74}/compiler/ant.vim | 0 share/vim/{vim73 => vim74}/compiler/bcc.vim | 0 share/vim/{vim73 => vim74}/compiler/bdf.vim | 0 share/vim/vim74/compiler/checkstyle.vim | 19 + share/vim/vim74/compiler/cs.vim | 26 + share/vim/{vim73 => vim74}/compiler/cucumber.vim | 0 share/vim/vim74/compiler/decada.vim | 58 + share/vim/{vim73 => vim74}/compiler/dot.vim | 0 share/vim/vim74/compiler/erlang.vim | 13 + share/vim/vim74/compiler/eruby.vim | 39 + share/vim/{vim73 => vim74}/compiler/fortran_F.vim | 0 share/vim/{vim73 => vim74}/compiler/fortran_cv.vim | 0 .../{vim73 => vim74}/compiler/fortran_elf90.vim | 0 .../vim/{vim73 => vim74}/compiler/fortran_g77.vim | 0 .../vim/{vim73 => vim74}/compiler/fortran_lf95.vim | 0 share/vim/{vim73 => vim74}/compiler/fpc.vim | 0 share/vim/vim74/compiler/g95.vim | 28 + share/vim/vim74/compiler/gcc.vim | 39 + share/vim/vim74/compiler/gfortran.vim | 27 + share/vim/vim74/compiler/gnat.vim | 76 + share/vim/vim74/compiler/haml.vim | 28 + share/vim/vim74/compiler/hp_acc.vim | 38 + share/vim/{vim73 => vim74}/compiler/icc.vim | 0 share/vim/vim74/compiler/ifort.vim | 27 + share/vim/vim74/compiler/intel.vim | 26 + share/vim/vim74/compiler/irix5_c.vim | 26 + share/vim/vim74/compiler/irix5_cpp.vim | 26 + share/vim/vim74/compiler/javac.vim | 17 + share/vim/{vim73 => vim74}/compiler/jikes.vim | 0 share/vim/vim74/compiler/mcs.vim | 30 + share/vim/vim74/compiler/mips_c.vim | 26 + share/vim/vim74/compiler/mipspro_c89.vim | 27 + share/vim/vim74/compiler/mipspro_cpp.vim | 26 + .../{vim73 => vim74}/compiler/modelsim_vcom.vim | 0 share/vim/vim74/compiler/msbuild.vim | 21 + share/vim/{vim73 => vim74}/compiler/msvc.vim | 0 share/vim/{vim73 => vim74}/compiler/neato.vim | 0 share/vim/vim74/compiler/ocaml.vim | 44 + share/vim/{vim73 => vim74}/compiler/onsgmls.vim | 0 share/vim/{vim73 => vim74}/compiler/pbx.vim | 0 share/vim/{vim73 => vim74}/compiler/perl.vim | 0 share/vim/vim74/compiler/php.vim | 26 + share/vim/{vim73 => vim74}/compiler/pyunit.vim | 0 share/vim/vim74/compiler/rake.vim | 35 + share/vim/vim74/compiler/rspec.vim | 33 + share/vim/vim74/compiler/rst.vim | 25 + share/vim/vim74/compiler/ruby.vim | 45 + share/vim/vim74/compiler/rubyunit.vim | 33 + share/vim/vim74/compiler/sass.vim | 30 + share/vim/vim74/compiler/se.vim | 30 + share/vim/{vim73 => vim74}/compiler/splint.vim | 0 share/vim/vim74/compiler/tcl.vim | 17 + share/vim/vim74/compiler/tex.vim | 67 + share/vim/vim74/compiler/tidy.vim | 19 + share/vim/vim74/compiler/xbuild.vim | 22 + share/vim/vim74/compiler/xmllint.vim | 26 + share/vim/{vim73 => vim74}/compiler/xmlwf.vim | 0 share/vim/{vim73 => vim74}/delmenu.vim | 0 share/vim/{vim73 => vim74}/doc.info | Bin share/vim/{vim73 => vim74}/doc/Makefile | 0 share/vim/vim74/doc/arabic.txt | 322 + share/vim/vim74/doc/autocmd.txt | 1373 ++ share/vim/vim74/doc/change.txt | 1717 ++ share/vim/vim74/doc/cmdline.txt | 1104 ++ share/vim/vim74/doc/debug.txt | 175 + share/vim/vim74/doc/debugger.txt | 140 + share/vim/vim74/doc/develop.txt | 502 + share/vim/vim74/doc/diff.txt | 419 + share/vim/vim74/doc/digraph.txt | 1483 ++ share/vim/{vim73 => vim74}/doc/doctags.c | 0 share/vim/vim74/doc/editing.txt | 1658 ++ share/vim/vim74/doc/eval.txt | 8602 +++++++++ share/vim/vim74/doc/evim-fr.1 | 57 + share/vim/vim74/doc/evim-fr.UTF-8.1 | 57 + share/vim/{vim73 => vim74}/doc/evim-it.1 | 0 share/vim/{vim73 => vim74}/doc/evim-it.UTF-8.1 | 0 share/vim/vim74/doc/evim-ja.UTF-8.1 | 51 + share/vim/{vim73 => vim74}/doc/evim-pl.1 | 0 share/vim/{vim73 => vim74}/doc/evim-pl.UTF-8.1 | 0 share/vim/{vim73 => vim74}/doc/evim-ru.1 | 0 share/vim/{vim73 => vim74}/doc/evim-ru.UTF-8.1 | 0 share/vim/{vim73 => vim74}/doc/evim.1 | 0 share/vim/vim74/doc/farsi.txt | 269 + share/vim/vim74/doc/filetype.txt | 621 + share/vim/vim74/doc/fold.txt | 590 + share/vim/vim74/doc/ft_ada.txt | 515 + share/vim/vim74/doc/ft_sql.txt | 780 + share/vim/vim74/doc/gui.txt | 1016 + share/vim/vim74/doc/gui_w16.txt | 186 + share/vim/vim74/doc/gui_w32.txt | 504 + share/vim/vim74/doc/gui_x11.txt | 585 + share/vim/vim74/doc/hangulin.txt | 105 + share/vim/vim74/doc/hebrew.txt | 142 + share/vim/vim74/doc/help.txt | 221 + share/vim/{vim73 => vim74}/doc/help.txt.info | Bin share/vim/vim74/doc/helphelp.txt | 351 + share/vim/vim74/doc/howto.txt | 96 + share/vim/vim74/doc/if_cscop.txt | 499 + share/vim/vim74/doc/if_lua.txt | 403 + share/vim/vim74/doc/if_mzsch.txt | 286 + share/vim/vim74/doc/if_ole.txt | 205 + share/vim/vim74/doc/if_perl.txt | 294 + share/vim/vim74/doc/if_pyth.txt | 763 + share/vim/vim74/doc/if_ruby.txt | 216 + share/vim/vim74/doc/if_sniff.txt | 95 + share/vim/vim74/doc/if_tcl.txt | 533 + share/vim/vim74/doc/indent.txt | 1096 ++ share/vim/vim74/doc/index.txt | 1620 ++ share/vim/vim74/doc/insert.txt | 1980 ++ share/vim/vim74/doc/intro.txt | 885 + share/vim/{vim73 => vim74}/doc/makehtml.awk | 0 share/vim/{vim73 => vim74}/doc/maketags.awk | 0 share/vim/vim74/doc/map.txt | 1475 ++ share/vim/vim74/doc/mbyte.txt | 1437 ++ share/vim/vim74/doc/message.txt | 848 + share/vim/vim74/doc/mlang.txt | 210 + share/vim/vim74/doc/motion.txt | 1327 ++ share/vim/vim74/doc/netbeans.txt | 1001 + share/vim/vim74/doc/options.txt | 8293 +++++++++ share/vim/vim74/doc/os_390.txt | 135 + share/vim/vim74/doc/os_amiga.txt | 147 + share/vim/vim74/doc/os_beos.txt | 319 + share/vim/vim74/doc/os_dos.txt | 296 + share/vim/vim74/doc/os_mac.txt | 118 + share/vim/vim74/doc/os_mint.txt | 39 + share/vim/vim74/doc/os_msdos.txt | 276 + share/vim/vim74/doc/os_os2.txt | 221 + share/vim/vim74/doc/os_qnx.txt | 138 + share/vim/vim74/doc/os_risc.txt | 12 + share/vim/vim74/doc/os_unix.txt | 60 + share/vim/vim74/doc/os_vms.txt | 939 + share/vim/vim74/doc/os_win32.txt | 370 + share/vim/vim74/doc/pattern.txt | 1362 ++ share/vim/vim74/doc/pi_getscript.txt | 478 + share/vim/vim74/doc/pi_gzip.txt | 41 + share/vim/vim74/doc/pi_netrw.txt | 3176 ++++ share/vim/vim74/doc/pi_paren.txt | 60 + share/vim/vim74/doc/pi_spec.txt | 111 + share/vim/vim74/doc/pi_tar.txt | 151 + share/vim/vim74/doc/pi_vimball.txt | 273 + share/vim/vim74/doc/pi_zip.txt | 126 + share/vim/vim74/doc/print.txt | 755 + share/vim/vim74/doc/quickfix.txt | 1462 ++ share/vim/vim74/doc/quickref.txt | 1408 ++ share/vim/vim74/doc/quotes.txt | 275 + share/vim/vim74/doc/recover.txt | 230 + share/vim/vim74/doc/remote.txt | 204 + share/vim/vim74/doc/repeat.txt | 683 + share/vim/vim74/doc/rileft.txt | 124 + share/vim/vim74/doc/russian.txt | 74 + share/vim/vim74/doc/scroll.txt | 332 + share/vim/vim74/doc/sign.txt | 200 + share/vim/vim74/doc/spell.txt | 1622 ++ share/vim/vim74/doc/sponsor.txt | 216 + share/vim/vim74/doc/starting.txt | 1534 ++ share/vim/vim74/doc/syntax.txt | 5217 ++++++ share/vim/vim74/doc/tabpage.txt | 392 + share/vim/vim74/doc/tags | 8858 +++++++++ share/vim/vim74/doc/tagsrch.txt | 837 + share/vim/vim74/doc/term.txt | 879 + share/vim/vim74/doc/tips.txt | 534 + share/vim/vim74/doc/todo.txt | 5221 ++++++ share/vim/vim74/doc/uganda.txt | 288 + share/vim/vim74/doc/undo.txt | 405 + share/vim/vim74/doc/usr_01.txt | 192 + share/vim/vim74/doc/usr_02.txt | 564 + share/vim/vim74/doc/usr_03.txt | 654 + share/vim/vim74/doc/usr_04.txt | 514 + share/vim/vim74/doc/usr_05.txt | 624 + share/vim/vim74/doc/usr_06.txt | 280 + share/vim/vim74/doc/usr_07.txt | 479 + share/vim/vim74/doc/usr_08.txt | 601 + share/vim/vim74/doc/usr_09.txt | 289 + share/vim/vim74/doc/usr_10.txt | 824 + share/vim/vim74/doc/usr_11.txt | 307 + share/vim/vim74/doc/usr_12.txt | 358 + share/vim/vim74/doc/usr_20.txt | 384 + share/vim/vim74/doc/usr_21.txt | 499 + share/vim/vim74/doc/usr_22.txt | 400 + share/vim/vim74/doc/usr_23.txt | 343 + share/vim/vim74/doc/usr_24.txt | 606 + share/vim/vim74/doc/usr_25.txt | 578 + share/vim/vim74/doc/usr_26.txt | 221 + share/vim/vim74/doc/usr_27.txt | 563 + share/vim/vim74/doc/usr_28.txt | 426 + share/vim/vim74/doc/usr_29.txt | 613 + share/vim/vim74/doc/usr_30.txt | 643 + share/vim/vim74/doc/usr_31.txt | 272 + share/vim/vim74/doc/usr_32.txt | 180 + share/vim/vim74/doc/usr_40.txt | 657 + share/vim/vim74/doc/usr_41.txt | 2449 +++ share/vim/vim74/doc/usr_42.txt | 365 + share/vim/vim74/doc/usr_43.txt | 173 + share/vim/vim74/doc/usr_44.txt | 719 + share/vim/vim74/doc/usr_45.txt | 419 + share/vim/vim74/doc/usr_90.txt | 498 + share/vim/vim74/doc/usr_toc.txt | 354 + share/vim/vim74/doc/various.txt | 648 + share/vim/vim74/doc/version4.txt | 355 + share/vim/vim74/doc/version5.txt | 7813 ++++++++ share/vim/vim74/doc/version6.txt | 14530 +++++++++++++++ share/vim/vim74/doc/version7.txt | 18310 +++++++++++++++++++ share/vim/vim74/doc/vi_diff.txt | 1012 + share/vim/vim74/doc/vim-de.1 | 478 + share/vim/vim74/doc/vim-de.UTF-8.1 | 478 + share/vim/vim74/doc/vim-fr.1 | 589 + share/vim/vim74/doc/vim-fr.UTF-8.1 | 589 + share/vim/{vim73 => vim74}/doc/vim-it.1 | 0 share/vim/{vim73 => vim74}/doc/vim-it.UTF-8.1 | 0 share/vim/vim74/doc/vim-ja.UTF-8.1 | 501 + share/vim/{vim73 => vim74}/doc/vim-pl.1 | 0 share/vim/{vim73 => vim74}/doc/vim-pl.UTF-8.1 | 0 share/vim/{vim73 => vim74}/doc/vim-ru.1 | 0 share/vim/{vim73 => vim74}/doc/vim-ru.UTF-8.1 | 0 share/vim/{vim73 => vim74}/doc/vim.1 | 0 share/vim/{vim73 => vim74}/doc/vim.man | 0 share/vim/{vim73 => vim74}/doc/vim.man.info | Bin share/vim/vim74/doc/vim2html.pl | 228 + share/vim/vim74/doc/vimdiff-fr.1 | 54 + share/vim/vim74/doc/vimdiff-fr.UTF-8.1 | 54 + share/vim/{vim73 => vim74}/doc/vimdiff-it.1 | 0 share/vim/{vim73 => vim74}/doc/vimdiff-it.UTF-8.1 | 0 share/vim/vim74/doc/vimdiff-ja.UTF-8.1 | 44 + share/vim/{vim73 => vim74}/doc/vimdiff-pl.1 | 0 share/vim/{vim73 => vim74}/doc/vimdiff-pl.UTF-8.1 | 0 share/vim/{vim73 => vim74}/doc/vimdiff-ru.1 | 0 share/vim/{vim73 => vim74}/doc/vimdiff-ru.UTF-8.1 | 0 share/vim/{vim73 => vim74}/doc/vimdiff.1 | 0 share/vim/{vim73 => vim74}/doc/vimdiff.man | 0 share/vim/vim74/doc/vimtutor-fr.1 | 60 + share/vim/vim74/doc/vimtutor-fr.UTF-8.1 | 60 + share/vim/{vim73 => vim74}/doc/vimtutor-it.1 | 0 share/vim/{vim73 => vim74}/doc/vimtutor-it.UTF-8.1 | 0 share/vim/vim74/doc/vimtutor-ja.UTF-8.1 | 45 + share/vim/{vim73 => vim74}/doc/vimtutor-pl.1 | 0 share/vim/{vim73 => vim74}/doc/vimtutor-pl.UTF-8.1 | 0 share/vim/{vim73 => vim74}/doc/vimtutor-ru.1 | 0 share/vim/{vim73 => vim74}/doc/vimtutor-ru.UTF-8.1 | 0 share/vim/{vim73 => vim74}/doc/vimtutor.1 | 0 share/vim/{vim73 => vim74}/doc/vimtutor.man | 0 share/vim/vim74/doc/visual.txt | 536 + share/vim/vim74/doc/windows.txt | 1196 ++ share/vim/vim74/doc/workshop.txt | 98 + share/vim/vim74/doc/xxd-fr.1 | 396 + share/vim/vim74/doc/xxd-fr.UTF-8.1 | 396 + share/vim/{vim73 => vim74}/doc/xxd-it.1 | 0 share/vim/{vim73 => vim74}/doc/xxd-it.UTF-8.1 | 0 share/vim/vim74/doc/xxd-ja.UTF-8.1 | 366 + share/vim/{vim73 => vim74}/doc/xxd-pl.1 | 0 share/vim/{vim73 => vim74}/doc/xxd-pl.UTF-8.1 | 0 share/vim/{vim73 => vim74}/doc/xxd-ru.1 | 0 share/vim/{vim73 => vim74}/doc/xxd-ru.UTF-8.1 | 0 share/vim/{vim73 => vim74}/doc/xxd.1 | 0 share/vim/{vim73 => vim74}/doc/xxd.man | 0 share/vim/{vim73 => vim74}/evim.vim | 0 share/vim/vim74/filetype.vim | 2678 +++ share/vim/{vim73 => vim74}/ftoff.vim | 0 share/vim/{vim73 => vim74}/ftplugin.vim | 0 share/vim/{vim73 => vim74}/ftplugin/README.txt | 0 share/vim/{vim73 => vim74}/ftplugin/a2ps.vim | 0 share/vim/vim74/ftplugin/aap.vim | 25 + share/vim/vim74/ftplugin/abap.vim | 29 + share/vim/vim74/ftplugin/abaqus.vim | 97 + share/vim/vim74/ftplugin/ada.vim | 210 + share/vim/{vim73 => vim74}/ftplugin/alsaconf.vim | 0 share/vim/vim74/ftplugin/ant.vim | 44 + share/vim/{vim73 => vim74}/ftplugin/arch.vim | 0 share/vim/vim74/ftplugin/art.vim | 15 + share/vim/vim74/ftplugin/aspvbs.vim | 60 + share/vim/{vim73 => vim74}/ftplugin/automake.vim | 0 share/vim/{vim73 => vim74}/ftplugin/bdf.vim | 0 share/vim/{vim73 => vim74}/ftplugin/bst.vim | 0 share/vim/{vim73 => vim74}/ftplugin/btm.vim | 0 share/vim/vim74/ftplugin/c.vim | 64 + share/vim/{vim73 => vim74}/ftplugin/calendar.vim | 0 share/vim/{vim73 => vim74}/ftplugin/cdrdaoconf.vim | 0 share/vim/{vim73 => vim74}/ftplugin/ch.vim | 0 share/vim/vim74/ftplugin/changelog.vim | 302 + share/vim/vim74/ftplugin/clojure.vim | 79 + share/vim/{vim73 => vim74}/ftplugin/cobol.vim | 0 share/vim/{vim73 => vim74}/ftplugin/conf.vim | 0 share/vim/vim74/ftplugin/config.vim | 42 + share/vim/{vim73 => vim74}/ftplugin/context.vim | 0 share/vim/{vim73 => vim74}/ftplugin/cpp.vim | 0 share/vim/{vim73 => vim74}/ftplugin/crm.vim | 0 share/vim/vim74/ftplugin/cs.vim | 29 + share/vim/vim74/ftplugin/csc.vim | 27 + share/vim/vim74/ftplugin/csh.vim | 48 + share/vim/{vim73 => vim74}/ftplugin/css.vim | 0 share/vim/vim74/ftplugin/cucumber.vim | 154 + share/vim/{vim73 => vim74}/ftplugin/cvsrc.vim | 0 share/vim/vim74/ftplugin/debchangelog.vim | 383 + share/vim/{vim73 => vim74}/ftplugin/debcontrol.vim | 0 share/vim/{vim73 => vim74}/ftplugin/denyhosts.vim | 0 share/vim/{vim73 => vim74}/ftplugin/dictconf.vim | 0 share/vim/{vim73 => vim74}/ftplugin/dictdconf.vim | 0 share/vim/{vim73 => vim74}/ftplugin/diff.vim | 0 share/vim/{vim73 => vim74}/ftplugin/dircolors.vim | 0 share/vim/vim74/ftplugin/docbk.vim | 24 + share/vim/vim74/ftplugin/dosbatch.vim | 30 + share/vim/{vim73 => vim74}/ftplugin/dosini.vim | 0 share/vim/vim74/ftplugin/dtd.vim | 40 + share/vim/{vim73 => vim74}/ftplugin/dtrace.vim | 0 share/vim/{vim73 => vim74}/ftplugin/elinks.vim | 0 share/vim/vim74/ftplugin/erlang.vim | 87 + share/vim/vim74/ftplugin/eruby.vim | 102 + share/vim/{vim73 => vim74}/ftplugin/eterm.vim | 0 share/vim/vim74/ftplugin/falcon.vim | 48 + share/vim/{vim73 => vim74}/ftplugin/fetchmail.vim | 0 share/vim/{vim73 => vim74}/ftplugin/flexwiki.vim | 0 share/vim/vim74/ftplugin/fortran.vim | 123 + .../vim/{vim73 => vim74}/ftplugin/framescript.vim | 0 share/vim/{vim73 => vim74}/ftplugin/fvwm.vim | 0 share/vim/vim74/ftplugin/git.vim | 39 + share/vim/vim74/ftplugin/gitcommit.vim | 67 + share/vim/{vim73 => vim74}/ftplugin/gitconfig.vim | 0 share/vim/{vim73 => vim74}/ftplugin/gitrebase.vim | 0 .../vim/{vim73 => vim74}/ftplugin/gitsendemail.vim | 0 share/vim/{vim73 => vim74}/ftplugin/gpg.vim | 0 share/vim/vim74/ftplugin/gprof.vim | 32 + share/vim/{vim73 => vim74}/ftplugin/group.vim | 0 share/vim/{vim73 => vim74}/ftplugin/grub.vim | 0 share/vim/vim74/ftplugin/haml.vim | 69 + share/vim/vim74/ftplugin/hamster.vim | 62 + share/vim/{vim73 => vim74}/ftplugin/haskell.vim | 0 share/vim/vim74/ftplugin/help.vim | 22 + share/vim/{vim73 => vim74}/ftplugin/hostconf.vim | 0 .../vim/{vim73 => vim74}/ftplugin/hostsaccess.vim | 0 share/vim/vim74/ftplugin/html.vim | 91 + share/vim/{vim73 => vim74}/ftplugin/htmldjango.vim | 0 share/vim/{vim73 => vim74}/ftplugin/indent.vim | 0 share/vim/vim74/ftplugin/initex.vim | 39 + share/vim/vim74/ftplugin/ishd.vim | 33 + share/vim/vim74/ftplugin/java.vim | 51 + share/vim/{vim73 => vim74}/ftplugin/javascript.vim | 0 share/vim/vim74/ftplugin/jsp.vim | 67 + share/vim/{vim73 => vim74}/ftplugin/kconfig.vim | 0 share/vim/vim74/ftplugin/kwt.vim | 32 + share/vim/{vim73 => vim74}/ftplugin/ld.vim | 0 share/vim/{vim73 => vim74}/ftplugin/lftp.vim | 0 share/vim/{vim73 => vim74}/ftplugin/libao.vim | 0 share/vim/{vim73 => vim74}/ftplugin/limits.vim | 0 share/vim/{vim73 => vim74}/ftplugin/liquid.vim | 0 share/vim/vim74/ftplugin/lisp.vim | 29 + share/vim/vim74/ftplugin/logcheck.vim | 17 + .../vim/{vim73 => vim74}/ftplugin/loginaccess.vim | 0 share/vim/{vim73 => vim74}/ftplugin/logindefs.vim | 0 share/vim/{vim73 => vim74}/ftplugin/logtalk.dict | 0 share/vim/{vim73 => vim74}/ftplugin/logtalk.vim | 0 share/vim/{vim73 => vim74}/ftplugin/lprolog.vim | 0 share/vim/vim74/ftplugin/lua.vim | 42 + share/vim/{vim73 => vim74}/ftplugin/m4.vim | 0 share/vim/vim74/ftplugin/mail.vim | 38 + .../vim/{vim73 => vim74}/ftplugin/mailaliases.vim | 0 share/vim/{vim73 => vim74}/ftplugin/mailcap.vim | 0 share/vim/vim74/ftplugin/make.vim | 33 + share/vim/vim74/ftplugin/man.vim | 189 + share/vim/{vim73 => vim74}/ftplugin/manconf.vim | 0 share/vim/vim74/ftplugin/markdown.vim | 22 + share/vim/vim74/ftplugin/matlab.vim | 28 + share/vim/{vim73 => vim74}/ftplugin/mf.vim | 0 share/vim/{vim73 => vim74}/ftplugin/modconf.vim | 0 share/vim/{vim73 => vim74}/ftplugin/mp.vim | 0 .../vim/{vim73 => vim74}/ftplugin/mplayerconf.vim | 0 share/vim/{vim73 => vim74}/ftplugin/mrxvtrc.vim | 0 share/vim/{vim73 => vim74}/ftplugin/msmessages.vim | 0 share/vim/{vim73 => vim74}/ftplugin/muttrc.vim | 0 share/vim/{vim73 => vim74}/ftplugin/nanorc.vim | 0 share/vim/{vim73 => vim74}/ftplugin/netrc.vim | 0 share/vim/{vim73 => vim74}/ftplugin/nsis.vim | 0 share/vim/{vim73 => vim74}/ftplugin/objc.vim | 0 share/vim/vim74/ftplugin/ocaml.vim | 620 + share/vim/vim74/ftplugin/occam.vim | 49 + share/vim/{vim73 => vim74}/ftplugin/pamconf.vim | 0 share/vim/vim74/ftplugin/pascal.vim | 20 + share/vim/{vim73 => vim74}/ftplugin/passwd.vim | 0 share/vim/{vim73 => vim74}/ftplugin/pdf.vim | 0 share/vim/vim74/ftplugin/perl.vim | 88 + share/vim/vim74/ftplugin/perl6.vim | 77 + share/vim/vim74/ftplugin/php.vim | 83 + share/vim/{vim73 => vim74}/ftplugin/pinfo.vim | 0 share/vim/vim74/ftplugin/plaintex.vim | 37 + share/vim/vim74/ftplugin/postscr.vim | 38 + share/vim/{vim73 => vim74}/ftplugin/procmail.vim | 0 share/vim/{vim73 => vim74}/ftplugin/prolog.vim | 0 share/vim/{vim73 => vim74}/ftplugin/protocols.vim | 0 share/vim/vim74/ftplugin/pyrex.vim | 27 + share/vim/vim74/ftplugin/python.vim | 48 + share/vim/vim74/ftplugin/qf.vim | 16 + share/vim/{vim73 => vim74}/ftplugin/quake.vim | 0 share/vim/{vim73 => vim74}/ftplugin/racc.vim | 0 share/vim/{vim73 => vim74}/ftplugin/readline.vim | 0 share/vim/{vim73 => vim74}/ftplugin/reva.vim | 0 share/vim/{vim73 => vim74}/ftplugin/rnc.vim | 0 share/vim/vim74/ftplugin/rpl.vim | 22 + share/vim/{vim73 => vim74}/ftplugin/rst.vim | 0 share/vim/vim74/ftplugin/ruby.vim | 395 + share/vim/{vim73 => vim74}/ftplugin/sass.vim | 0 share/vim/vim74/ftplugin/scheme.vim | 48 + share/vim/{vim73 => vim74}/ftplugin/screen.vim | 0 share/vim/{vim73 => vim74}/ftplugin/scss.vim | 0 share/vim/{vim73 => vim74}/ftplugin/sensors.vim | 0 share/vim/{vim73 => vim74}/ftplugin/services.vim | 0 share/vim/{vim73 => vim74}/ftplugin/setserial.vim | 0 share/vim/vim74/ftplugin/sgml.vim | 40 + share/vim/vim74/ftplugin/sh.vim | 39 + share/vim/{vim73 => vim74}/ftplugin/sieve.vim | 0 share/vim/{vim73 => vim74}/ftplugin/slpconf.vim | 0 share/vim/{vim73 => vim74}/ftplugin/slpreg.vim | 0 share/vim/{vim73 => vim74}/ftplugin/slpspi.vim | 0 share/vim/vim74/ftplugin/spec.vim | 175 + share/vim/vim74/ftplugin/sql.vim | 524 + share/vim/{vim73 => vim74}/ftplugin/sshconfig.vim | 0 share/vim/{vim73 => vim74}/ftplugin/sudoers.vim | 0 share/vim/vim74/ftplugin/svg.vim | 40 + share/vim/{vim73 => vim74}/ftplugin/sysctl.vim | 0 share/vim/vim74/ftplugin/tcl.vim | 37 + share/vim/vim74/ftplugin/tcsh.vim | 40 + share/vim/{vim73 => vim74}/ftplugin/terminfo.vim | 0 share/vim/vim74/ftplugin/tex.vim | 46 + share/vim/vim74/ftplugin/treetop.vim | 19 + share/vim/vim74/ftplugin/tt2html.vim | 13 + share/vim/{vim73 => vim74}/ftplugin/udevconf.vim | 0 share/vim/{vim73 => vim74}/ftplugin/udevperm.vim | 0 share/vim/{vim73 => vim74}/ftplugin/udevrules.vim | 0 share/vim/{vim73 => vim74}/ftplugin/updatedb.vim | 0 share/vim/{vim73 => vim74}/ftplugin/vb.vim | 0 share/vim/{vim73 => vim74}/ftplugin/verilog.vim | 0 share/vim/vim74/ftplugin/vhdl.vim | 88 + share/vim/vim74/ftplugin/vim.vim | 74 + share/vim/{vim73 => vim74}/ftplugin/xdefaults.vim | 0 share/vim/{vim73 => vim74}/ftplugin/xf86conf.vim | 0 share/vim/vim74/ftplugin/xhtml.vim | 67 + share/vim/{vim73 => vim74}/ftplugin/xinetd.vim | 0 share/vim/vim74/ftplugin/xml.vim | 64 + share/vim/{vim73 => vim74}/ftplugin/xmodmap.vim | 0 share/vim/vim74/ftplugin/xs.vim | 14 + share/vim/vim74/ftplugin/xsd.vim | 39 + share/vim/{vim73 => vim74}/ftplugin/xslt.vim | 0 share/vim/{vim73 => vim74}/ftplugin/yaml.vim | 0 share/vim/vim74/ftplugin/zimbu.vim | 151 + share/vim/vim74/ftplugin/zsh.vim | 26 + share/vim/vim74/ftplugof.vim | 13 + share/vim/vim74/gvim.exe | Bin 0 -> 2167808 bytes share/vim/{vim73 => vim74}/gvimrc_example.vim | 0 share/vim/{vim73 => vim74}/hi16-action-make.png | Bin share/vim/{vim73 => vim74}/hi22-action-make.png | Bin share/vim/{vim73 => vim74}/icons.info | Bin share/vim/{vim73 => vim74}/icons/README.txt | 0 share/vim/{vim73 => vim74}/icons/README.txt.info | Bin share/vim/{vim73 => vim74}/icons/Vim_32Colors.info | Bin .../{vim73 => vim74}/icons/Vim_4ColorsLace.info | Bin share/vim/{vim73 => vim74}/icons/Vim_8Colors.info | Bin .../{vim73 => vim74}/icons/Vim_8ColorsLace.info | Bin share/vim/{vim73 => vim74}/indent.vim | 0 share/vim/{vim73 => vim74}/indent/README.txt | 0 share/vim/{vim73 => vim74}/indent/aap.vim | 0 share/vim/vim74/indent/ada.vim | 308 + share/vim/{vim73 => vim74}/indent/ant.vim | 0 share/vim/{vim73 => vim74}/indent/automake.vim | 0 share/vim/vim74/indent/awk.vim | 232 + share/vim/{vim73 => vim74}/indent/bib.vim | 0 share/vim/{vim73 => vim74}/indent/bst.vim | 0 share/vim/{vim73 => vim74}/indent/c.vim | 0 share/vim/{vim73 => vim74}/indent/cdl.vim | 0 share/vim/{vim73 => vim74}/indent/ch.vim | 0 share/vim/{vim73 => vim74}/indent/chaiscript.vim | 0 share/vim/{vim73 => vim74}/indent/changelog.vim | 0 share/vim/vim74/indent/clojure.vim | 398 + share/vim/vim74/indent/cmake.vim | 90 + share/vim/{vim73 => vim74}/indent/cobol.vim | 0 share/vim/{vim73 => vim74}/indent/config.vim | 0 share/vim/{vim73 => vim74}/indent/cpp.vim | 0 share/vim/{vim73 => vim74}/indent/cs.vim | 0 share/vim/vim74/indent/css.vim | 83 + share/vim/vim74/indent/cucumber.vim | 74 + share/vim/{vim73 => vim74}/indent/cuda.vim | 0 share/vim/{vim73 => vim74}/indent/d.vim | 0 share/vim/{vim73 => vim74}/indent/dictconf.vim | 0 share/vim/{vim73 => vim74}/indent/dictdconf.vim | 0 share/vim/{vim73 => vim74}/indent/docbk.vim | 0 share/vim/vim74/indent/dtd.vim | 325 + share/vim/{vim73 => vim74}/indent/dtrace.vim | 0 share/vim/{vim73 => vim74}/indent/dylan.vim | 0 share/vim/vim74/indent/eiffel.vim | 114 + share/vim/vim74/indent/erlang.vim | 1390 ++ share/vim/vim74/indent/eruby.vim | 82 + share/vim/{vim73 => vim74}/indent/eterm.vim | 0 share/vim/vim74/indent/falcon.vim | 451 + share/vim/vim74/indent/fortran.vim | 205 + share/vim/{vim73 => vim74}/indent/framescript.vim | 0 share/vim/vim74/indent/gitconfig.vim | 37 + share/vim/vim74/indent/gitolite.vim | 45 + share/vim/vim74/indent/haml.vim | 73 + share/vim/{vim73 => vim74}/indent/hamster.vim | 0 share/vim/vim74/indent/html.vim | 505 + share/vim/{vim73 => vim74}/indent/htmldjango.vim | 0 share/vim/vim74/indent/idlang.vim | 62 + share/vim/{vim73 => vim74}/indent/ishd.vim | 0 share/vim/vim74/indent/java.vim | 147 + share/vim/{vim73 => vim74}/indent/javascript.vim | 0 share/vim/{vim73 => vim74}/indent/jsp.vim | 0 share/vim/{vim73 => vim74}/indent/ld.vim | 0 share/vim/{vim73 => vim74}/indent/lifelines.vim | 0 share/vim/vim74/indent/liquid.vim | 62 + share/vim/vim74/indent/lisp.vim | 15 + share/vim/{vim73 => vim74}/indent/logtalk.vim | 0 share/vim/{vim73 => vim74}/indent/lua.vim | 0 share/vim/{vim73 => vim74}/indent/mail.vim | 0 share/vim/{vim73 => vim74}/indent/make.vim | 0 share/vim/{vim73 => vim74}/indent/matlab.vim | 0 share/vim/{vim73 => vim74}/indent/mma.vim | 0 share/vim/vim74/indent/mp.vim | 211 + share/vim/{vim73 => vim74}/indent/objc.vim | 0 share/vim/vim74/indent/ocaml.vim | 273 + share/vim/vim74/indent/occam.vim | 187 + share/vim/vim74/indent/pascal.vim | 228 + share/vim/vim74/indent/perl.vim | 183 + share/vim/vim74/indent/perl6.vim | 132 + share/vim/vim74/indent/php.vim | 748 + share/vim/{vim73 => vim74}/indent/postscr.vim | 0 share/vim/{vim73 => vim74}/indent/pov.vim | 0 share/vim/{vim73 => vim74}/indent/prolog.vim | 0 share/vim/{vim73 => vim74}/indent/pyrex.vim | 0 share/vim/vim74/indent/python.vim | 198 + share/vim/vim74/indent/r.vim | 492 + share/vim/{vim73 => vim74}/indent/readline.vim | 0 share/vim/{vim73 => vim74}/indent/rpl.vim | 0 share/vim/vim74/indent/rst.vim | 59 + share/vim/vim74/indent/ruby.vim | 537 + share/vim/vim74/indent/sass.vim | 40 + share/vim/{vim73 => vim74}/indent/scheme.vim | 0 share/vim/{vim73 => vim74}/indent/scss.vim | 0 share/vim/vim74/indent/sdl.vim | 93 + share/vim/{vim73 => vim74}/indent/sh.vim | 0 share/vim/{vim73 => vim74}/indent/sml.vim | 0 share/vim/{vim73 => vim74}/indent/sql.vim | 0 share/vim/vim74/indent/sqlanywhere.vim | 393 + share/vim/{vim73 => vim74}/indent/tcl.vim | 0 share/vim/vim74/indent/tcsh.vim | 49 + share/vim/vim74/indent/tex.vim | 295 + share/vim/{vim73 => vim74}/indent/tf.vim | 0 share/vim/{vim73 => vim74}/indent/tilde.vim | 0 share/vim/vim74/indent/treetop.vim | 38 + share/vim/{vim73 => vim74}/indent/vb.vim | 0 share/vim/vim74/indent/verilog.vim | 223 + share/vim/vim74/indent/vhdl.vim | 423 + share/vim/vim74/indent/vim.vim | 99 + share/vim/{vim73 => vim74}/indent/xf86conf.vim | 0 share/vim/{vim73 => vim74}/indent/xhtml.vim | 0 share/vim/vim74/indent/xinetd.vim | 55 + share/vim/vim74/indent/xml.vim | 107 + share/vim/{vim73 => vim74}/indent/xsd.vim | 0 share/vim/{vim73 => vim74}/indent/xslt.vim | 0 share/vim/{vim73 => vim74}/indent/yacc.vim | 0 share/vim/vim74/indent/yaml.vim | 132 + share/vim/vim74/indent/zimbu.vim | 128 + share/vim/{vim73 => vim74}/indent/zsh.vim | 0 share/vim/{vim73 => vim74}/indoff.vim | 0 share/vim/{vim73 => vim74}/keymap/README.txt | 0 share/vim/{vim73 => vim74}/keymap/accents.vim | 0 share/vim/{vim73 => vim74}/keymap/arabic.vim | 0 share/vim/{vim73 => vim74}/keymap/arabic_utf-8.vim | 0 share/vim/vim74/keymap/belarusian-jcuken.vim | 87 + .../vim/{vim73 => vim74}/keymap/bulgarian-bds.vim | 0 .../{vim73 => vim74}/keymap/bulgarian-phonetic.vim | 0 share/vim/{vim73 => vim74}/keymap/canfr-win.vim | 0 share/vim/{vim73 => vim74}/keymap/croatian.vim | 0 .../{vim73 => vim74}/keymap/croatian_cp1250.vim | 0 .../keymap/croatian_iso-8859-2.vim | 0 .../vim/{vim73 => vim74}/keymap/croatian_utf-8.vim | 0 share/vim/{vim73 => vim74}/keymap/czech.vim | 0 share/vim/{vim73 => vim74}/keymap/czech_utf-8.vim | 0 share/vim/{vim73 => vim74}/keymap/dvorak.vim | 0 share/vim/{vim73 => vim74}/keymap/esperanto.vim | 0 .../{vim73 => vim74}/keymap/esperanto_utf-8.vim | 0 share/vim/{vim73 => vim74}/keymap/greek.vim | 0 share/vim/{vim73 => vim74}/keymap/greek_cp1253.vim | 0 share/vim/{vim73 => vim74}/keymap/greek_cp737.vim | 0 .../{vim73 => vim74}/keymap/greek_iso-8859-7.vim | 0 share/vim/{vim73 => vim74}/keymap/greek_utf-8.vim | 0 share/vim/{vim73 => vim74}/keymap/hebrew.vim | 0 .../vim/{vim73 => vim74}/keymap/hebrew_cp1255.vim | 0 .../{vim73 => vim74}/keymap/hebrew_iso-8859-8.vim | 0 share/vim/{vim73 => vim74}/keymap/hebrew_utf-8.vim | 0 share/vim/{vim73 => vim74}/keymap/hebrewp.vim | 0 .../vim/{vim73 => vim74}/keymap/hebrewp_cp1255.vim | 0 .../{vim73 => vim74}/keymap/hebrewp_iso-8859-8.vim | 0 .../vim/{vim73 => vim74}/keymap/hebrewp_utf-8.vim | 0 share/vim/{vim73 => vim74}/keymap/kana.vim | 0 .../{vim73 => vim74}/keymap/lithuanian-baltic.vim | 0 share/vim/{vim73 => vim74}/keymap/magyar_utf-8.vim | 0 .../{vim73 => vim74}/keymap/mongolian_utf-8.vim | 0 .../keymap/persian-iranian_utf-8.vim | 0 share/vim/{vim73 => vim74}/keymap/persian.vim | 0 share/vim/{vim73 => vim74}/keymap/pinyin.vim | 0 share/vim/{vim73 => vim74}/keymap/polish-slash.vim | 0 .../keymap/polish-slash_cp1250.vim | 0 .../{vim73 => vim74}/keymap/polish-slash_cp852.vim | 0 .../keymap/polish-slash_iso-8859-2.vim | 0 .../{vim73 => vim74}/keymap/polish-slash_utf-8.vim | 0 .../vim/{vim73 => vim74}/keymap/russian-dvorak.vim | 0 .../vim/{vim73 => vim74}/keymap/russian-jcuken.vim | 0 .../{vim73 => vim74}/keymap/russian-jcukenwin.vim | 0 .../{vim73 => vim74}/keymap/russian-yawerty.vim | 0 .../vim/{vim73 => vim74}/keymap/serbian-latin.vim | 0 .../keymap/serbian-latin_utf-8.vim | 0 share/vim/{vim73 => vim74}/keymap/serbian.vim | 0 .../vim/{vim73 => vim74}/keymap/serbian_cp1250.vim | 0 .../vim/{vim73 => vim74}/keymap/serbian_cp1251.vim | 0 .../{vim73 => vim74}/keymap/serbian_iso-8859-2.vim | 0 .../{vim73 => vim74}/keymap/serbian_iso-8859-5.vim | 0 .../vim/{vim73 => vim74}/keymap/serbian_utf-8.vim | 0 .../keymap/sinhala-phonetic_utf-8.vim | 0 share/vim/{vim73 => vim74}/keymap/sinhala.vim | 0 share/vim/{vim73 => vim74}/keymap/slovak.vim | 0 .../vim/{vim73 => vim74}/keymap/slovak_cp1250.vim | 0 .../{vim73 => vim74}/keymap/slovak_iso-8859-2.vim | 0 share/vim/{vim73 => vim74}/keymap/slovak_utf-8.vim | 0 share/vim/{vim73 => vim74}/keymap/tamil_tscii.vim | 0 .../keymap/thaana-phonetic_utf-8.vim | 0 share/vim/{vim73 => vim74}/keymap/thaana.vim | 0 .../{vim73 => vim74}/keymap/ukrainian-dvorak.vim | 0 .../{vim73 => vim74}/keymap/ukrainian-jcuken.vim | 0 .../keymap/vietnamese-viqr_utf-8.vim | 0 share/vim/{vim73 => vim74}/lang/README.txt | 0 share/vim/{vim73 => vim74}/lang/menu_af.latin1.vim | 0 share/vim/{vim73 => vim74}/lang/menu_af.utf-8.vim | 0 share/vim/vim74/lang/menu_af_af.latin1.vim | 157 + .../vim/{vim73 => vim74}/lang/menu_af_af.utf-8.vim | 0 share/vim/{vim73 => vim74}/lang/menu_ca.latin1.vim | 0 share/vim/{vim73 => vim74}/lang/menu_ca.utf-8.vim | 0 share/vim/vim74/lang/menu_ca_es.latin1.vim | 317 + .../vim/{vim73 => vim74}/lang/menu_ca_es.utf-8.vim | 0 .../lang/menu_chinese(gb)_gb.936.vim | 0 .../lang/menu_chinese(taiwan)_taiwan.950.vim | 0 share/vim/vim74/lang/menu_chinese_gb.936.vim | 268 + share/vim/vim74/lang/menu_chinese_taiwan.950.vim | 290 + share/vim/{vim73 => vim74}/lang/menu_cs.cp1250.vim | 0 share/vim/{vim73 => vim74}/lang/menu_cs.latin1.vim | 0 .../{vim73 => vim74}/lang/menu_cs_cz.cp1250.vim | 0 share/vim/vim74/lang/menu_cs_cz.iso_8859-2.vim | 308 + share/vim/vim74/lang/menu_cs_cz.latin1.vim | 3 + share/vim/vim74/lang/menu_cs_cz.utf-8.vim | 308 + .../vim74/lang/menu_czech_czech_republic.1250.vim | 308 + .../lang/menu_czech_czech_republic.1252.vim | 0 .../vim74/lang/menu_czech_czech_republic.ascii.vim | 308 + share/vim/{vim73 => vim74}/lang/menu_de.latin1.vim | 0 share/vim/{vim73 => vim74}/lang/menu_de.utf-8.vim | 0 share/vim/vim74/lang/menu_de_de.latin1.vim | 309 + .../vim/{vim73 => vim74}/lang/menu_de_de.utf-8.vim | 0 .../{vim73 => vim74}/lang/menu_en_gb.latin1.vim | 0 .../vim/{vim73 => vim74}/lang/menu_en_gb.utf-8.vim | 0 .../lang/menu_english_united_kingdom.1252.vim | 0 .../lang/menu_english_united_kingdom.ascii.vim | 0 share/vim/vim74/lang/menu_eo.utf-8.vim | 462 + .../vim/{vim73 => vim74}/lang/menu_eo_eo.utf-8.vim | 0 .../vim/{vim73 => vim74}/lang/menu_eo_xx.utf-8.vim | 0 share/vim/{vim73 => vim74}/lang/menu_es.latin1.vim | 0 share/vim/{vim73 => vim74}/lang/menu_es.utf-8.vim | 0 share/vim/vim74/lang/menu_es_es.latin1.vim | 323 + .../vim/{vim73 => vim74}/lang/menu_es_es.utf-8.vim | 0 share/vim/{vim73 => vim74}/lang/menu_fi.latin1.vim | 0 share/vim/{vim73 => vim74}/lang/menu_fi.utf-8.vim | 0 share/vim/vim74/lang/menu_fi_fi.latin1.vim | 478 + .../vim/{vim73 => vim74}/lang/menu_fi_fi.utf-8.vim | 0 .../lang/menu_finnish_finland.1252.vim | 0 share/vim/{vim73 => vim74}/lang/menu_fr.latin1.vim | 0 share/vim/{vim73 => vim74}/lang/menu_fr.utf-8.vim | 0 share/vim/vim74/lang/menu_fr_fr.latin1.vim | 473 + .../vim/{vim73 => vim74}/lang/menu_fr_fr.utf-8.vim | 0 .../lang/menu_french_france.1252.vim | 0 .../lang/menu_german_germany.1252.vim | 0 .../{vim73 => vim74}/lang/menu_hu.iso_8859-2.vim | 0 share/vim/{vim73 => vim74}/lang/menu_hu.utf-8.vim | 0 share/vim/vim74/lang/menu_hu_hu.iso_8859-2.vim | 263 + share/vim/vim74/lang/menu_hu_hu.utf-8.vim | 247 + share/vim/{vim73 => vim74}/lang/menu_it.latin1.vim | 0 share/vim/{vim73 => vim74}/lang/menu_it.utf-8.vim | 0 share/vim/vim74/lang/menu_it_it.latin1.vim | 356 + .../vim/{vim73 => vim74}/lang/menu_it_it.utf-8.vim | 0 .../lang/menu_italian_italy.1252.vim | 0 share/vim/vim74/lang/menu_ja.cp932.vim | 8 + share/vim/vim74/lang/menu_ja.euc-jp.vim | 9 + share/vim/vim74/lang/menu_ja.eucjp.vim | 9 + share/vim/vim74/lang/menu_ja.ujis.vim | 9 + share/vim/{vim73 => vim74}/lang/menu_ja.utf-8.vim | 0 share/vim/vim74/lang/menu_ja_jp.cp932.vim | 8 + share/vim/vim74/lang/menu_ja_jp.euc-jp.vim | 306 + share/vim/vim74/lang/menu_ja_jp.eucjp.vim | 9 + share/vim/vim74/lang/menu_ja_jp.ujis.vim | 9 + share/vim/vim74/lang/menu_ja_jp.utf-8.vim | 306 + share/vim/vim74/lang/menu_japanese_japan.932.vim | 306 + share/vim/{vim73 => vim74}/lang/menu_ko.utf-8.vim | 0 share/vim/vim74/lang/menu_ko_kr.euckr.vim | 265 + share/vim/vim74/lang/menu_ko_kr.utf-8.vim | 265 + share/vim/{vim73 => vim74}/lang/menu_ko_kr.vim | 0 share/vim/{vim73 => vim74}/lang/menu_nl.latin1.vim | 0 share/vim/{vim73 => vim74}/lang/menu_nl.utf-8.vim | 0 share/vim/vim74/lang/menu_nl_nl.latin1.vim | 245 + .../vim/{vim73 => vim74}/lang/menu_nl_nl.utf-8.vim | 0 share/vim/{vim73 => vim74}/lang/menu_no.latin1.vim | 0 share/vim/{vim73 => vim74}/lang/menu_no.utf-8.vim | 0 share/vim/vim74/lang/menu_no_no.latin1.vim | 238 + .../vim/{vim73 => vim74}/lang/menu_no_no.utf-8.vim | 0 share/vim/{vim73 => vim74}/lang/menu_pl.cp1250.vim | 0 .../{vim73 => vim74}/lang/menu_pl_pl.cp1250.vim | 0 share/vim/vim74/lang/menu_pl_pl.iso_8859-2.vim | 292 + share/vim/vim74/lang/menu_pl_pl.utf-8.vim | 292 + share/vim/vim74/lang/menu_polish_poland.1250.vim | 292 + .../{vim73 => vim74}/lang/menu_pt_br.latin1.vim | 0 .../vim/{vim73 => vim74}/lang/menu_pt_br.utf-8.vim | 0 share/vim/vim74/lang/menu_pt_br.vim | 290 + .../{vim73 => vim74}/lang/menu_pt_pt.latin1.vim | 0 .../vim/{vim73 => vim74}/lang/menu_pt_pt.utf-8.vim | 0 share/vim/vim74/lang/menu_pt_pt.vim | 269 + share/vim/{vim73 => vim74}/lang/menu_ru.utf-8.vim | 0 share/vim/vim74/lang/menu_ru_ru.koi8-r.vim | 326 + .../vim/{vim73 => vim74}/lang/menu_ru_ru.utf-8.vim | 0 share/vim/vim74/lang/menu_ru_ru.vim | 326 + share/vim/{vim73 => vim74}/lang/menu_sk.cp1250.vim | 0 .../vim/{vim73 => vim74}/lang/menu_sk_sk.1250.vim | 0 .../{vim73 => vim74}/lang/menu_sk_sk.cp1250.vim | 0 share/vim/vim74/lang/menu_sk_sk.iso_8859-2.vim | 237 + share/vim/{vim73 => vim74}/lang/menu_sk_sk.vim | 0 share/vim/vim74/lang/menu_sl_si.cp1250.vim | 299 + share/vim/vim74/lang/menu_sl_si.latin2.vim | 299 + share/vim/vim74/lang/menu_sl_si.utf-8.vim | 299 + .../lang/menu_slovak_slovak_republic.1250.vim | 237 + .../lang/menu_spanish_spain.850.vim | 0 share/vim/{vim73 => vim74}/lang/menu_sr.utf-8.vim | 0 share/vim/vim74/lang/menu_sr_rs.ascii.vim | 263 + share/vim/vim74/lang/menu_sr_rs.iso_8859-2.vim | 265 + share/vim/vim74/lang/menu_sr_rs.iso_8859-5.vim | 265 + share/vim/vim74/lang/menu_sr_rs.utf-8.vim | 267 + .../vim/{vim73 => vim74}/lang/menu_sr_yu.ascii.vim | 0 .../lang/menu_sr_yu.iso_8859-2.vim | 0 .../lang/menu_sr_yu.iso_8859-5.vim | 0 .../vim/{vim73 => vim74}/lang/menu_sr_yu.utf-8.vim | 0 share/vim/{vim73 => vim74}/lang/menu_sv.latin1.vim | 0 share/vim/{vim73 => vim74}/lang/menu_sv.utf-8.vim | 0 share/vim/vim74/lang/menu_sv_se.latin1.vim | 255 + .../vim/{vim73 => vim74}/lang/menu_sv_se.utf-8.vim | 0 share/vim/vim74/lang/menu_uk_ua.cp1251.vim | 251 + share/vim/vim74/lang/menu_uk_ua.koi8-u.vim | 251 + share/vim/vim74/lang/menu_vi_vn.vim | 334 + share/vim/{vim73 => vim74}/lang/menu_zh.big5.vim | 0 share/vim/{vim73 => vim74}/lang/menu_zh.cp936.vim | 0 share/vim/{vim73 => vim74}/lang/menu_zh.cp950.vim | 0 share/vim/{vim73 => vim74}/lang/menu_zh.gb2312.vim | 0 .../vim/{vim73 => vim74}/lang/menu_zh_cn.18030.vim | 0 .../vim/{vim73 => vim74}/lang/menu_zh_cn.cp936.vim | 0 share/vim/vim74/lang/menu_zh_cn.gb2312.vim | 271 + share/vim/{vim73 => vim74}/lang/menu_zh_cn.gbk.vim | 0 share/vim/vim74/lang/menu_zh_cn.utf-8.vim | 268 + .../vim/{vim73 => vim74}/lang/menu_zh_tw.big5.vim | 0 .../vim/{vim73 => vim74}/lang/menu_zh_tw.cp950.vim | 0 share/vim/vim74/lang/menu_zh_tw.utf-8.vim | 291 + share/vim/{vim73 => vim74}/macmap.vim | 0 share/vim/{vim73 => vim74}/macros.info | Bin share/vim/{vim73 => vim74}/macros/README.txt | 0 share/vim/{vim73 => vim74}/macros/README.txt.info | Bin share/vim/{vim73 => vim74}/macros/dvorak | 0 share/vim/vim74/macros/editexisting.vim | 119 + share/vim/{vim73 => vim74}/macros/hanoi.info | Bin share/vim/{vim73 => vim74}/macros/hanoi/click.me | 0 .../{vim73 => vim74}/macros/hanoi/click.me.info | Bin share/vim/{vim73 => vim74}/macros/hanoi/hanoi.vim | 0 share/vim/{vim73 => vim74}/macros/hanoi/poster | 0 .../vim/{vim73 => vim74}/macros/hanoi/poster.info | Bin share/vim/vim74/macros/justify.vim | 316 + share/vim/vim74/macros/less.bat | 10 + share/vim/vim74/macros/less.sh | 26 + share/vim/vim74/macros/less.vim | 245 + share/vim/{vim73 => vim74}/macros/life/click.me | 0 .../vim/{vim73 => vim74}/macros/life/click.me.info | Bin share/vim/{vim73 => vim74}/macros/life/life.vim | 0 share/vim/{vim73 => vim74}/macros/matchit.txt | 0 share/vim/vim74/macros/matchit.vim | 813 + share/vim/{vim73 => vim74}/macros/maze.info | Bin share/vim/{vim73 => vim74}/macros/maze/Makefile | 0 share/vim/{vim73 => vim74}/macros/maze/README.txt | 0 .../{vim73 => vim74}/macros/maze/README.txt.info | Bin share/vim/{vim73 => vim74}/macros/maze/main.aap | 0 share/vim/{vim73 => vim74}/macros/maze/maze.c | 0 share/vim/{vim73 => vim74}/macros/maze/maze_5.78 | 0 .../{vim73 => vim74}/macros/maze/maze_5.78.info | Bin share/vim/{vim73 => vim74}/macros/maze/maze_mac | 0 share/vim/{vim73 => vim74}/macros/maze/mazeansi.c | 0 share/vim/{vim73 => vim74}/macros/maze/mazeclean.c | 0 share/vim/{vim73 => vim74}/macros/maze/poster | 0 share/vim/{vim73 => vim74}/macros/maze/poster.info | Bin share/vim/{vim73 => vim74}/macros/shellmenu.vim | 0 share/vim/{vim73 => vim74}/macros/swapmous.vim | 0 share/vim/{vim73 => vim74}/macros/urm.info | Bin share/vim/{vim73 => vim74}/macros/urm/README.txt | 0 .../{vim73 => vim74}/macros/urm/README.txt.info | Bin share/vim/{vim73 => vim74}/macros/urm/examples | 0 share/vim/{vim73 => vim74}/macros/urm/urm | 0 share/vim/{vim73 => vim74}/macros/urm/urm.vim | 0 share/vim/vim74/makemenu.vim | 633 + share/vim/vim74/menu.vim | 1113 ++ share/vim/vim74/mswin.vim | 107 + share/vim/vim74/optwin.vim | 1349 ++ share/vim/{vim73 => vim74}/plugin/README.txt | 0 share/vim/vim74/plugin/getscriptPlugin.vim | 38 + share/vim/{vim73 => vim74}/plugin/gzip.vim | 0 share/vim/vim74/plugin/matchparen.vim | 167 + share/vim/vim74/plugin/netrwPlugin.vim | 176 + share/vim/{vim73 => vim74}/plugin/rrhelper.vim | 0 share/vim/{vim73 => vim74}/plugin/spellfile.vim | 0 share/vim/vim74/plugin/tarPlugin.vim | 53 + share/vim/vim74/plugin/tohtml.vim | 179 + share/vim/vim74/plugin/vimballPlugin.vim | 40 + share/vim/vim74/plugin/zipPlugin.vim | 56 + share/vim/{vim73 => vim74}/print/ascii.ps | 0 share/vim/{vim73 => vim74}/print/cidfont.ps | 0 share/vim/{vim73 => vim74}/print/cns_roman.ps | 0 share/vim/{vim73 => vim74}/print/cp1250.ps | 0 share/vim/{vim73 => vim74}/print/cp1251.ps | 0 share/vim/{vim73 => vim74}/print/cp1252.ps | 0 share/vim/{vim73 => vim74}/print/cp1253.ps | 0 share/vim/{vim73 => vim74}/print/cp1254.ps | 0 share/vim/{vim73 => vim74}/print/cp1255.ps | 0 share/vim/{vim73 => vim74}/print/cp1257.ps | 0 share/vim/{vim73 => vim74}/print/dec-mcs.ps | 0 share/vim/{vim73 => vim74}/print/ebcdic-uk.ps | 0 share/vim/{vim73 => vim74}/print/gb_roman.ps | 0 share/vim/{vim73 => vim74}/print/hp-roman8.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-10.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-11.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-13.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-14.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-15.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-2.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-3.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-4.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-5.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-7.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-8.ps | 0 share/vim/{vim73 => vim74}/print/iso-8859-9.ps | 0 share/vim/{vim73 => vim74}/print/jis_roman.ps | 0 share/vim/{vim73 => vim74}/print/koi8-r.ps | 0 share/vim/{vim73 => vim74}/print/koi8-u.ps | 0 share/vim/{vim73 => vim74}/print/ks_roman.ps | 0 share/vim/{vim73 => vim74}/print/latin1.ps | 0 share/vim/{vim73 => vim74}/print/mac-roman.ps | 0 share/vim/{vim73 => vim74}/print/prolog.ps | 0 share/vim/{vim73 => vim74}/rgb.txt | 0 share/vim/vim74/scripts.vim | 377 + share/vim/{vim73 => vim74}/spell/README.txt | 0 share/vim/{vim73 => vim74}/spell/README_en.txt | 0 share/vim/{vim73 => vim74}/spell/af/af_ZA.diff | 0 share/vim/{vim73 => vim74}/spell/af/main.aap | 0 share/vim/{vim73 => vim74}/spell/am/am_ET.diff | 0 share/vim/{vim73 => vim74}/spell/am/main.aap | 0 share/vim/{vim73 => vim74}/spell/bg/bg_BG.diff | 0 share/vim/{vim73 => vim74}/spell/bg/main.aap | 0 .../eo/eo_l3.diff => vim74/spell/br/br_FR.diff} | 0 share/vim/vim74/spell/br/main.aap | 86 + share/vim/{vim73 => vim74}/spell/ca/ca_ES.diff | 0 share/vim/{vim73 => vim74}/spell/ca/main.aap | 0 .../vim/{vim73 => vim74}/spell/check/check_aa.aff | 0 .../vim/{vim73 => vim74}/spell/check/check_aa.dic | 0 .../vim/{vim73 => vim74}/spell/check/check_bb.aff | 0 .../vim/{vim73 => vim74}/spell/check/check_bb.dic | 0 share/vim/{vim73 => vim74}/spell/check/main.aap | 0 share/vim/{vim73 => vim74}/spell/check_locales.vim | 0 share/vim/{vim73 => vim74}/spell/cleanadd.vim | 0 share/vim/{vim73 => vim74}/spell/cs/cs_CZ.diff | 0 share/vim/{vim73 => vim74}/spell/cs/main.aap | 0 share/vim/{vim73 => vim74}/spell/cy/cy_GB.diff | 0 share/vim/{vim73 => vim74}/spell/cy/main.aap | 0 share/vim/{vim73 => vim74}/spell/da/da_DK.diff | 0 share/vim/{vim73 => vim74}/spell/da/main.aap | 0 share/vim/{vim73 => vim74}/spell/de/de_19.diff | 0 share/vim/{vim73 => vim74}/spell/de/de_20.diff | 0 share/vim/{vim73 => vim74}/spell/de/de_AT.diff | 0 share/vim/{vim73 => vim74}/spell/de/de_CH.diff | 0 share/vim/{vim73 => vim74}/spell/de/de_DE.diff | 0 share/vim/{vim73 => vim74}/spell/de/main.aap | 0 share/vim/{vim73 => vim74}/spell/el/el_GR.diff | 0 share/vim/{vim73 => vim74}/spell/el/main.aap | 0 share/vim/{vim73 => vim74}/spell/en.ascii.spl | Bin share/vim/{vim73 => vim74}/spell/en.ascii.sug | Bin share/vim/{vim73 => vim74}/spell/en.latin1.spl | Bin share/vim/{vim73 => vim74}/spell/en.latin1.sug | Bin share/vim/vim74/spell/en.utf-8.spl | Bin 0 -> 570548 bytes share/vim/vim74/spell/en.utf-8.sug | Bin 0 -> 556476 bytes share/vim/{vim73 => vim74}/spell/en/en_AU.diff | 0 share/vim/{vim73 => vim74}/spell/en/en_CA.diff | 0 share/vim/{vim73 => vim74}/spell/en/en_GB.diff | 0 share/vim/{vim73 => vim74}/spell/en/en_NZ.diff | 0 share/vim/{vim73 => vim74}/spell/en/en_US.diff | 0 share/vim/{vim73 => vim74}/spell/en/main.aap | 0 share/vim/{vim73 => vim74}/spell/eo/eo_l3.diff | 0 share/vim/{vim73 => vim74}/spell/eo/main.aap | 0 share/vim/{vim73 => vim74}/spell/es/es_ES.diff | 0 share/vim/vim74/spell/es/es_MX.diff | 6975 +++++++ share/vim/{vim73 => vim74}/spell/es/main.aap | 0 share/vim/{vim73 => vim74}/spell/fixdup.vim | 0 share/vim/{vim73 => vim74}/spell/fo/fo_FO.diff | 0 share/vim/{vim73 => vim74}/spell/fo/main.aap | 0 share/vim/{vim73 => vim74}/spell/fr/fr_FR.diff | 0 share/vim/{vim73 => vim74}/spell/fr/main.aap | 0 share/vim/vim74/spell/ga/ga_IE.diff | 308 + share/vim/{vim73 => vim74}/spell/ga/main.aap | 0 share/vim/vim74/spell/gd/gd_GB.diff | 304 + share/vim/{vim73 => vim74}/spell/gd/main.aap | 0 share/vim/{vim73 => vim74}/spell/gl/gl_ES.diff | 0 share/vim/{vim73 => vim74}/spell/gl/main.aap | 0 share/vim/{vim73 => vim74}/spell/he.vim | 0 share/vim/{vim73 => vim74}/spell/he/he_IL.diff | 0 share/vim/{vim73 => vim74}/spell/he/main.aap | 0 share/vim/{vim73 => vim74}/spell/hr/hr_HR.diff | 0 share/vim/{vim73 => vim74}/spell/hr/main.aap | 0 share/vim/{vim73 => vim74}/spell/hu/hu_HU.diff | 0 share/vim/vim74/spell/hu/main.aap | 82 + share/vim/{vim73 => vim74}/spell/id/id_ID.diff | 0 share/vim/{vim73 => vim74}/spell/id/main.aap | 0 share/vim/{vim73 => vim74}/spell/it/it_IT.diff | 0 share/vim/{vim73 => vim74}/spell/it/main.aap | 0 share/vim/{vim73 => vim74}/spell/ku/ku_TR.diff | 0 share/vim/{vim73 => vim74}/spell/ku/main.aap | 0 share/vim/{vim73 => vim74}/spell/la/la.diff | 0 share/vim/{vim73 => vim74}/spell/la/main.aap | 0 share/vim/{vim73 => vim74}/spell/lt/lt_LT.diff | 0 share/vim/{vim73 => vim74}/spell/lt/main.aap | 0 share/vim/{vim73 => vim74}/spell/lv/lv_LV.diff | 0 share/vim/{vim73 => vim74}/spell/lv/main.aap | 0 share/vim/{vim73 => vim74}/spell/main.aap | 0 share/vim/{vim73 => vim74}/spell/mg/main.aap | 0 share/vim/{vim73 => vim74}/spell/mg/mg_MG.diff | 0 share/vim/{vim73 => vim74}/spell/mi/main.aap | 0 share/vim/{vim73 => vim74}/spell/mi/mi_NZ.diff | 0 share/vim/{vim73 => vim74}/spell/ms/main.aap | 0 share/vim/{vim73 => vim74}/spell/ms/ms_MY.diff | 0 share/vim/{vim73 => vim74}/spell/nb/main.aap | 0 share/vim/{vim73 => vim74}/spell/nb/nb_NO.diff | 0 share/vim/{vim73 => vim74}/spell/nl/main.aap | 0 share/vim/{vim73 => vim74}/spell/nl/nl_NL.diff | 0 share/vim/{vim73 => vim74}/spell/nn/main.aap | 0 share/vim/{vim73 => vim74}/spell/nn/nn_NO.diff | 0 share/vim/{vim73 => vim74}/spell/ny/main.aap | 0 share/vim/{vim73 => vim74}/spell/ny/ny_MW.diff | 0 share/vim/{vim73 => vim74}/spell/pl/main.aap | 0 share/vim/{vim73 => vim74}/spell/pl/pl_PL.diff | 0 share/vim/{vim73 => vim74}/spell/pt/main.aap | 0 share/vim/{vim73 => vim74}/spell/pt/pt_BR.diff | 0 share/vim/{vim73 => vim74}/spell/pt/pt_PT.diff | 0 share/vim/{vim73 => vim74}/spell/ro/main.aap | 0 share/vim/{vim73 => vim74}/spell/ro/ro_RO.diff | 0 share/vim/{vim73 => vim74}/spell/ru/main.aap | 0 share/vim/{vim73 => vim74}/spell/ru/ru_RU.diff | 0 share/vim/{vim73 => vim74}/spell/ru/ru_YO.diff | 0 share/vim/{vim73 => vim74}/spell/rw/main.aap | 0 share/vim/{vim73 => vim74}/spell/rw/rw_RW.diff | 0 share/vim/{vim73 => vim74}/spell/sk/main.aap | 0 share/vim/{vim73 => vim74}/spell/sk/sk_SK.diff | 0 share/vim/{vim73 => vim74}/spell/sl/main.aap | 0 share/vim/{vim73 => vim74}/spell/sl/sl_SI.diff | 0 share/vim/vim74/spell/spell.vim | 4 + share/vim/{vim73 => vim74}/spell/sv/main.aap | 0 share/vim/vim74/spell/sv/sv_SE.diff | 205 + share/vim/{vim73 => vim74}/spell/sw/main.aap | 0 share/vim/{vim73 => vim74}/spell/sw/sw_KE.diff | 0 share/vim/{vim73 => vim74}/spell/tet/main.aap | 0 share/vim/{vim73 => vim74}/spell/tet/tet_ID.diff | 0 share/vim/{vim73 => vim74}/spell/th/main.aap | 0 share/vim/{vim73 => vim74}/spell/th/th.diff | 0 share/vim/{vim73 => vim74}/spell/tl/main.aap | 0 share/vim/{vim73 => vim74}/spell/tl/tl_PH.diff | 0 share/vim/{vim73 => vim74}/spell/tn/main.aap | 0 share/vim/{vim73 => vim74}/spell/tn/tn_ZA.diff | 0 share/vim/{vim73 => vim74}/spell/uk/main.aap | 0 share/vim/{vim73 => vim74}/spell/uk/uk_UA.diff | 0 share/vim/{vim73 => vim74}/spell/yi.vim | 0 share/vim/{vim73 => vim74}/spell/yi/README.txt | 0 share/vim/{vim73 => vim74}/spell/yi/main.aap | 0 share/vim/{vim73 => vim74}/spell/yi/yi.diff | 0 share/vim/{vim73 => vim74}/spell/yi/yi_tr.diff | 0 share/vim/{vim73 => vim74}/spell/zu/main.aap | 0 share/vim/{vim73 => vim74}/spell/zu/zu_ZA.diff | 0 share/vim/vim74/synmenu.vim | 619 + share/vim/vim74/syntax/2html.vim | 1804 ++ share/vim/{vim73 => vim74}/syntax/README.txt | 0 share/vim/{vim73 => vim74}/syntax/a2ps.vim | 0 share/vim/{vim73 => vim74}/syntax/a65.vim | 0 share/vim/{vim73 => vim74}/syntax/aap.vim | 0 share/vim/vim74/syntax/abap.vim | 214 + share/vim/{vim73 => vim74}/syntax/abaqus.vim | 0 share/vim/{vim73 => vim74}/syntax/abc.vim | 0 share/vim/vim74/syntax/abel.vim | 174 + share/vim/{vim73 => vim74}/syntax/acedb.vim | 0 share/vim/vim74/syntax/ada.vim | 368 + share/vim/{vim73 => vim74}/syntax/aflex.vim | 0 share/vim/{vim73 => vim74}/syntax/ahdl.vim | 0 share/vim/{vim73 => vim74}/syntax/alsaconf.vim | 0 share/vim/{vim73 => vim74}/syntax/amiga.vim | 0 share/vim/{vim73 => vim74}/syntax/aml.vim | 0 share/vim/{vim73 => vim74}/syntax/ampl.vim | 0 share/vim/{vim73 => vim74}/syntax/ant.vim | 0 share/vim/{vim73 => vim74}/syntax/antlr.vim | 0 share/vim/{vim73 => vim74}/syntax/apache.vim | 0 share/vim/{vim73 => vim74}/syntax/apachestyle.vim | 0 share/vim/vim74/syntax/aptconf.vim | 512 + share/vim/{vim73 => vim74}/syntax/arch.vim | 0 share/vim/vim74/syntax/art.vim | 50 + share/vim/vim74/syntax/asciidoc.vim | 183 + share/vim/vim74/syntax/asm.vim | 139 + share/vim/{vim73 => vim74}/syntax/asm68k.vim | 0 share/vim/{vim73 => vim74}/syntax/asmh8300.vim | 0 share/vim/vim74/syntax/asn.vim | 86 + share/vim/{vim73 => vim74}/syntax/aspperl.vim | 0 share/vim/{vim73 => vim74}/syntax/aspvbs.vim | 0 share/vim/{vim73 => vim74}/syntax/asterisk.vim | 0 share/vim/{vim73 => vim74}/syntax/asteriskvm.vim | 0 share/vim/{vim73 => vim74}/syntax/atlas.vim | 0 share/vim/{vim73 => vim74}/syntax/autohotkey.vim | 0 share/vim/vim74/syntax/autoit.vim | 1124 ++ share/vim/vim74/syntax/automake.vim | 93 + share/vim/{vim73 => vim74}/syntax/ave.vim | 0 share/vim/vim74/syntax/awk.vim | 222 + share/vim/vim74/syntax/ayacc.vim | 91 + share/vim/{vim73 => vim74}/syntax/b.vim | 0 share/vim/{vim73 => vim74}/syntax/baan.vim | 0 share/vim/vim74/syntax/basic.vim | 179 + share/vim/vim74/syntax/bc.vim | 79 + share/vim/{vim73 => vim74}/syntax/bdf.vim | 0 share/vim/vim74/syntax/bib.vim | 101 + share/vim/vim74/syntax/bindzone.vim | 110 + share/vim/vim74/syntax/blank.vim | 52 + share/vim/{vim73 => vim74}/syntax/bst.vim | 0 share/vim/{vim73 => vim74}/syntax/btm.vim | 0 share/vim/vim74/syntax/bzr.vim | 63 + share/vim/vim74/syntax/c.vim | 466 + share/vim/{vim73 => vim74}/syntax/cabal.vim | 0 share/vim/{vim73 => vim74}/syntax/calendar.vim | 0 share/vim/{vim73 => vim74}/syntax/catalog.vim | 0 share/vim/{vim73 => vim74}/syntax/cdl.vim | Bin share/vim/{vim73 => vim74}/syntax/cdrdaoconf.vim | 0 share/vim/{vim73 => vim74}/syntax/cdrtoc.vim | 0 share/vim/{vim73 => vim74}/syntax/cf.vim | 0 share/vim/vim74/syntax/cfg.vim | 60 + share/vim/{vim73 => vim74}/syntax/ch.vim | 0 share/vim/{vim73 => vim74}/syntax/chaiscript.vim | 0 share/vim/{vim73 => vim74}/syntax/change.vim | 0 share/vim/{vim73 => vim74}/syntax/changelog.vim | 0 share/vim/{vim73 => vim74}/syntax/chaskell.vim | 0 share/vim/{vim73 => vim74}/syntax/cheetah.vim | 0 share/vim/{vim73 => vim74}/syntax/chill.vim | 0 share/vim/{vim73 => vim74}/syntax/chordpro.vim | 0 share/vim/vim74/syntax/cl.vim | 115 + share/vim/vim74/syntax/clean.vim | 102 + share/vim/vim74/syntax/clipper.vim | 148 + share/vim/vim74/syntax/clojure.vim | 134 + share/vim/vim74/syntax/cmake.vim | 87 + share/vim/{vim73 => vim74}/syntax/cmusrc.vim | 0 share/vim/{vim73 => vim74}/syntax/cobol.vim | 0 share/vim/{vim73 => vim74}/syntax/coco.vim | 0 share/vim/{vim73 => vim74}/syntax/colortest.vim | 0 share/vim/{vim73 => vim74}/syntax/conaryrecipe.vim | 0 share/vim/{vim73 => vim74}/syntax/conf.vim | 0 share/vim/{vim73 => vim74}/syntax/config.vim | 0 share/vim/{vim73 => vim74}/syntax/context.vim | 0 share/vim/vim74/syntax/cpp.vim | 70 + share/vim/{vim73 => vim74}/syntax/crm.vim | 0 share/vim/vim74/syntax/crontab.vim | 78 + share/vim/{vim73 => vim74}/syntax/cs.vim | 0 share/vim/vim74/syntax/csc.vim | 204 + share/vim/vim74/syntax/csdl.vim | 536 + share/vim/{vim73 => vim74}/syntax/csh.vim | 0 share/vim/{vim73 => vim74}/syntax/csp.vim | 0 share/vim/vim74/syntax/css.vim | 491 + share/vim/{vim73 => vim74}/syntax/cterm.vim | 0 share/vim/{vim73 => vim74}/syntax/ctrlh.vim | 0 share/vim/vim74/syntax/cucumber.vim | 142 + share/vim/{vim73 => vim74}/syntax/cuda.vim | 0 share/vim/vim74/syntax/cupl.vim | 137 + share/vim/{vim73 => vim74}/syntax/cuplsim.vim | 0 share/vim/{vim73 => vim74}/syntax/cvs.vim | 0 share/vim/{vim73 => vim74}/syntax/cvsrc.vim | 0 share/vim/vim74/syntax/cweb.vim | 85 + share/vim/{vim73 => vim74}/syntax/cynlib.vim | 0 share/vim/{vim73 => vim74}/syntax/cynpp.vim | 0 share/vim/vim74/syntax/d.vim | 560 + share/vim/vim74/syntax/datascript.vim | 95 + share/vim/{vim73 => vim74}/syntax/dcd.vim | 0 share/vim/{vim73 => vim74}/syntax/dcl.vim | 0 share/vim/vim74/syntax/debchangelog.vim | 59 + share/vim/vim74/syntax/debcontrol.vim | 111 + share/vim/vim74/syntax/debsources.vim | 35 + share/vim/{vim73 => vim74}/syntax/def.vim | 0 share/vim/{vim73 => vim74}/syntax/denyhosts.vim | 0 share/vim/{vim73 => vim74}/syntax/desc.vim | 0 share/vim/{vim73 => vim74}/syntax/desktop.vim | 0 share/vim/{vim73 => vim74}/syntax/dictconf.vim | 0 share/vim/{vim73 => vim74}/syntax/dictdconf.vim | 0 share/vim/vim74/syntax/diff.vim | 369 + share/vim/vim74/syntax/dircolors.vim | 754 + share/vim/vim74/syntax/dirpager.vim | 56 + share/vim/{vim73 => vim74}/syntax/diva.vim | 0 share/vim/vim74/syntax/django.vim | 96 + share/vim/{vim73 => vim74}/syntax/dns.vim | 0 share/vim/vim74/syntax/dnsmasq.vim | 229 + share/vim/vim74/syntax/docbk.vim | 200 + share/vim/{vim73 => vim74}/syntax/docbksgml.vim | 0 share/vim/{vim73 => vim74}/syntax/docbkxml.vim | 0 share/vim/{vim73 => vim74}/syntax/dosbatch.vim | 0 share/vim/vim74/syntax/dosini.vim | 51 + share/vim/vim74/syntax/dot.vim | 110 + share/vim/vim74/syntax/doxygen.vim | 594 + share/vim/{vim73 => vim74}/syntax/dracula.vim | 0 share/vim/{vim73 => vim74}/syntax/dsl.vim | 0 share/vim/vim74/syntax/dtd.vim | 170 + share/vim/{vim73 => vim74}/syntax/dtml.vim | 0 share/vim/{vim73 => vim74}/syntax/dtrace.vim | 0 share/vim/vim74/syntax/dts.vim | 28 + share/vim/{vim73 => vim74}/syntax/dylan.vim | 0 share/vim/{vim73 => vim74}/syntax/dylanintr.vim | 0 share/vim/{vim73 => vim74}/syntax/dylanlid.vim | 0 share/vim/{vim73 => vim74}/syntax/ecd.vim | 0 share/vim/{vim73 => vim74}/syntax/edif.vim | 0 share/vim/vim74/syntax/eiffel.vim | 212 + share/vim/{vim73 => vim74}/syntax/elf.vim | 0 share/vim/{vim73 => vim74}/syntax/elinks.vim | 0 share/vim/{vim73 => vim74}/syntax/elmfilt.vim | 0 share/vim/vim74/syntax/erlang.vim | 265 + share/vim/vim74/syntax/eruby.vim | 74 + share/vim/vim74/syntax/esmtprc.vim | 34 + share/vim/{vim73 => vim74}/syntax/esqlc.vim | 0 share/vim/{vim73 => vim74}/syntax/esterel.vim | 0 share/vim/{vim73 => vim74}/syntax/eterm.vim | 0 share/vim/{vim73 => vim74}/syntax/eviews.vim | 0 share/vim/{vim73 => vim74}/syntax/exim.vim | 0 share/vim/vim74/syntax/expect.vim | 116 + share/vim/{vim73 => vim74}/syntax/exports.vim | 0 share/vim/vim74/syntax/falcon.vim | 199 + share/vim/{vim73 => vim74}/syntax/fan.vim | 0 share/vim/vim74/syntax/fasm.vim | 152 + share/vim/{vim73 => vim74}/syntax/fdcc.vim | 0 share/vim/{vim73 => vim74}/syntax/fetchmail.vim | 0 share/vim/{vim73 => vim74}/syntax/fgl.vim | 0 share/vim/{vim73 => vim74}/syntax/flexwiki.vim | 0 share/vim/{vim73 => vim74}/syntax/focexec.vim | 0 share/vim/{vim73 => vim74}/syntax/form.vim | 0 share/vim/vim74/syntax/forth.vim | 347 + share/vim/vim74/syntax/fortran.vim | 475 + share/vim/{vim73 => vim74}/syntax/foxpro.vim | 0 share/vim/{vim73 => vim74}/syntax/framescript.vim | 0 share/vim/{vim73 => vim74}/syntax/freebasic.vim | 0 share/vim/vim74/syntax/fstab.vim | 297 + share/vim/vim74/syntax/fvwm.vim | 642 + share/vim/{vim73 => vim74}/syntax/fvwm2m4.vim | 0 share/vim/vim74/syntax/gdb.vim | 116 + share/vim/vim74/syntax/gdmo.vim | 96 + share/vim/{vim73 => vim74}/syntax/gedcom.vim | 0 share/vim/{vim73 => vim74}/syntax/git.vim | 0 share/vim/vim74/syntax/gitcommit.vim | 83 + share/vim/{vim73 => vim74}/syntax/gitconfig.vim | 0 share/vim/vim74/syntax/gitolite.vim | 86 + share/vim/vim74/syntax/gitrebase.vim | 38 + share/vim/{vim73 => vim74}/syntax/gitsendemail.vim | 0 share/vim/{vim73 => vim74}/syntax/gkrellmrc.vim | 0 share/vim/vim74/syntax/gnash.vim | 99 + share/vim/{vim73 => vim74}/syntax/gnuplot.vim | 0 share/vim/vim74/syntax/gp.vim | 93 + share/vim/vim74/syntax/gpg.vim | 105 + share/vim/vim74/syntax/gprof.vim | 69 + share/vim/{vim73 => vim74}/syntax/grads.vim | 0 share/vim/{vim73 => vim74}/syntax/gretl.vim | 0 share/vim/{vim73 => vim74}/syntax/groff.vim | 0 share/vim/vim74/syntax/groovy.vim | 466 + share/vim/vim74/syntax/group.vim | 52 + share/vim/{vim73 => vim74}/syntax/grub.vim | 0 share/vim/vim74/syntax/gsp.vim | 65 + share/vim/{vim73 => vim74}/syntax/gtkrc.vim | 0 share/vim/{vim73 => vim74}/syntax/haml.vim | 0 share/vim/{vim73 => vim74}/syntax/hamster.vim | 0 share/vim/{vim73 => vim74}/syntax/haskell.vim | 0 share/vim/{vim73 => vim74}/syntax/haste.vim | 0 share/vim/{vim73 => vim74}/syntax/hastepreproc.vim | 0 share/vim/vim74/syntax/hb.vim | 102 + share/vim/vim74/syntax/help.vim | 212 + share/vim/{vim73 => vim74}/syntax/hercules.vim | 0 share/vim/{vim73 => vim74}/syntax/hex.vim | 0 share/vim/vim74/syntax/hgcommit.vim | 27 + share/vim/{vim73 => vim74}/syntax/hitest.vim | 0 share/vim/{vim73 => vim74}/syntax/hog.vim | 0 share/vim/{vim73 => vim74}/syntax/hostconf.vim | 0 share/vim/vim74/syntax/hostsaccess.vim | 27 + share/vim/vim74/syntax/html.vim | 299 + share/vim/{vim73 => vim74}/syntax/htmlcheetah.vim | 0 share/vim/{vim73 => vim74}/syntax/htmldjango.vim | 0 share/vim/{vim73 => vim74}/syntax/htmlm4.vim | 0 share/vim/{vim73 => vim74}/syntax/htmlos.vim | 0 share/vim/{vim73 => vim74}/syntax/ia64.vim | 0 share/vim/{vim73 => vim74}/syntax/ibasic.vim | 0 share/vim/{vim73 => vim74}/syntax/icemenu.vim | 0 share/vim/{vim73 => vim74}/syntax/icon.vim | 0 share/vim/vim74/syntax/idl.vim | 326 + share/vim/vim74/syntax/idlang.vim | 253 + share/vim/{vim73 => vim74}/syntax/indent.vim | 0 share/vim/{vim73 => vim74}/syntax/inform.vim | 0 share/vim/{vim73 => vim74}/syntax/initex.vim | 0 share/vim/{vim73 => vim74}/syntax/initng.vim | 0 share/vim/{vim73 => vim74}/syntax/inittab.vim | 0 share/vim/{vim73 => vim74}/syntax/ipfilter.vim | 0 share/vim/{vim73 => vim74}/syntax/ishd.vim | 0 share/vim/{vim73 => vim74}/syntax/iss.vim | 0 share/vim/vim74/syntax/ist.vim | 75 + share/vim/{vim73 => vim74}/syntax/jal.vim | 0 share/vim/vim74/syntax/jam.vim | 257 + share/vim/{vim73 => vim74}/syntax/jargon.vim | 0 share/vim/vim74/syntax/java.vim | 352 + share/vim/vim74/syntax/javacc.vim | 82 + share/vim/vim74/syntax/javascript.vim | 143 + share/vim/{vim73 => vim74}/syntax/jess.vim | 0 share/vim/{vim73 => vim74}/syntax/jgraph.vim | 0 share/vim/vim74/syntax/jovial.vim | 110 + share/vim/{vim73 => vim74}/syntax/jproperties.vim | 0 share/vim/{vim73 => vim74}/syntax/jsp.vim | 0 share/vim/{vim73 => vim74}/syntax/kconfig.vim | 0 share/vim/{vim73 => vim74}/syntax/kix.vim | 0 share/vim/{vim73 => vim74}/syntax/kscript.vim | 0 share/vim/vim74/syntax/kwt.vim | 87 + share/vim/{vim73 => vim74}/syntax/lace.vim | 0 share/vim/{vim73 => vim74}/syntax/latte.vim | 0 share/vim/{vim73 => vim74}/syntax/ld.vim | 0 share/vim/{vim73 => vim74}/syntax/ldapconf.vim | 0 share/vim/{vim73 => vim74}/syntax/ldif.vim | 0 share/vim/vim74/syntax/lex.vim | 144 + share/vim/{vim73 => vim74}/syntax/lftp.vim | 0 share/vim/{vim73 => vim74}/syntax/lhaskell.vim | 0 share/vim/{vim73 => vim74}/syntax/libao.vim | 0 share/vim/{vim73 => vim74}/syntax/lifelines.vim | 0 share/vim/{vim73 => vim74}/syntax/lilo.vim | 0 share/vim/{vim73 => vim74}/syntax/limits.vim | 0 share/vim/vim74/syntax/liquid.vim | 138 + share/vim/vim74/syntax/lisp.vim | 625 + share/vim/{vim73 => vim74}/syntax/lite.vim | 0 share/vim/{vim73 => vim74}/syntax/litestep.vim | 0 share/vim/{vim73 => vim74}/syntax/loginaccess.vim | 0 share/vim/vim74/syntax/logindefs.vim | 174 + share/vim/vim74/syntax/logtalk.vim | 450 + share/vim/{vim73 => vim74}/syntax/lotos.vim | 0 share/vim/vim74/syntax/lout.vim | 153 + share/vim/vim74/syntax/lpc.vim | 460 + share/vim/{vim73 => vim74}/syntax/lprolog.vim | 0 share/vim/{vim73 => vim74}/syntax/lscript.vim | 0 share/vim/vim74/syntax/lsl.vim | 277 + share/vim/{vim73 => vim74}/syntax/lss.vim | 0 share/vim/vim74/syntax/lua.vim | 367 + share/vim/vim74/syntax/lynx.vim | 140 + share/vim/{vim73 => vim74}/syntax/m4.vim | 0 share/vim/vim74/syntax/mail.vim | 112 + share/vim/{vim73 => vim74}/syntax/mailaliases.vim | 0 share/vim/vim74/syntax/mailcap.vim | 35 + share/vim/vim74/syntax/make.vim | 143 + share/vim/vim74/syntax/mallard.vim | 37 + share/vim/{vim73 => vim74}/syntax/man.vim | 0 share/vim/{vim73 => vim74}/syntax/manconf.vim | 0 share/vim/{vim73 => vim74}/syntax/manual.vim | 0 share/vim/{vim73 => vim74}/syntax/maple.vim | 0 share/vim/vim74/syntax/markdown.vim | 134 + share/vim/vim74/syntax/masm.vim | 355 + share/vim/{vim73 => vim74}/syntax/mason.vim | 0 share/vim/{vim73 => vim74}/syntax/master.vim | 0 share/vim/vim74/syntax/matlab.vim | 125 + share/vim/{vim73 => vim74}/syntax/maxima.vim | 0 share/vim/{vim73 => vim74}/syntax/mel.vim | 0 share/vim/{vim73 => vim74}/syntax/messages.vim | 0 share/vim/{vim73 => vim74}/syntax/mf.vim | 0 share/vim/{vim73 => vim74}/syntax/mgl.vim | 0 share/vim/{vim73 => vim74}/syntax/mgp.vim | 0 share/vim/{vim73 => vim74}/syntax/mib.vim | 0 share/vim/vim74/syntax/mma.vim | 331 + share/vim/vim74/syntax/mmix.vim | 163 + share/vim/{vim73 => vim74}/syntax/mmp.vim | 0 share/vim/{vim73 => vim74}/syntax/modconf.vim | 0 share/vim/{vim73 => vim74}/syntax/model.vim | 0 share/vim/{vim73 => vim74}/syntax/modsim3.vim | 0 share/vim/{vim73 => vim74}/syntax/modula2.vim | 0 share/vim/{vim73 => vim74}/syntax/modula3.vim | 0 share/vim/vim74/syntax/monk.vim | 234 + share/vim/{vim73 => vim74}/syntax/moo.vim | 0 share/vim/{vim73 => vim74}/syntax/mp.vim | 0 share/vim/{vim73 => vim74}/syntax/mplayerconf.vim | 0 share/vim/vim74/syntax/mrxvtrc.vim | 282 + share/vim/vim74/syntax/msidl.vim | 97 + share/vim/{vim73 => vim74}/syntax/msmessages.vim | 0 share/vim/{vim73 => vim74}/syntax/msql.vim | 0 share/vim/{vim73 => vim74}/syntax/mupad.vim | 0 share/vim/{vim73 => vim74}/syntax/mush.vim | 0 share/vim/vim74/syntax/muttrc.vim | 796 + share/vim/{vim73 => vim74}/syntax/mysql.vim | 0 share/vim/{vim73 => vim74}/syntax/named.vim | 0 share/vim/{vim73 => vim74}/syntax/nanorc.vim | 0 share/vim/vim74/syntax/nasm.vim | 527 + share/vim/{vim73 => vim74}/syntax/nastran.vim | 0 share/vim/vim74/syntax/natural.vim | 215 + share/vim/{vim73 => vim74}/syntax/ncf.vim | 0 share/vim/{vim73 => vim74}/syntax/netrc.vim | 0 share/vim/vim74/syntax/netrw.vim | 115 + share/vim/vim74/syntax/ninja.vim | 81 + share/vim/{vim73 => vim74}/syntax/nosyntax.vim | 0 share/vim/{vim73 => vim74}/syntax/nqc.vim | 0 share/vim/vim74/syntax/nroff.vim | 264 + share/vim/{vim73 => vim74}/syntax/nsis.vim | 0 share/vim/{vim73 => vim74}/syntax/obj.vim | 0 share/vim/vim74/syntax/objc.vim | 437 + share/vim/{vim73 => vim74}/syntax/objcpp.vim | 0 share/vim/vim74/syntax/ocaml.vim | 331 + share/vim/{vim73 => vim74}/syntax/occam.vim | 0 share/vim/{vim73 => vim74}/syntax/omnimark.vim | 0 share/vim/{vim73 => vim74}/syntax/openroad.vim | 0 share/vim/vim74/syntax/opl.vim | 102 + share/vim/{vim73 => vim74}/syntax/ora.vim | 0 share/vim/vim74/syntax/pamconf.vim | 120 + share/vim/{vim73 => vim74}/syntax/papp.vim | 0 share/vim/{vim73 => vim74}/syntax/pascal.vim | 0 share/vim/{vim73 => vim74}/syntax/passwd.vim | 0 share/vim/{vim73 => vim74}/syntax/pcap.vim | 0 share/vim/{vim73 => vim74}/syntax/pccts.vim | 0 share/vim/{vim73 => vim74}/syntax/pdf.vim | 0 share/vim/vim74/syntax/perl.vim | 589 + share/vim/vim74/syntax/perl6.vim | 2255 +++ share/vim/vim74/syntax/pf.vim | 76 + share/vim/vim74/syntax/pfmain.vim | 1644 ++ share/vim/vim74/syntax/php.vim | 703 + share/vim/{vim73 => vim74}/syntax/phtml.vim | 0 share/vim/{vim73 => vim74}/syntax/pic.vim | 0 share/vim/{vim73 => vim74}/syntax/pike.vim | 0 share/vim/{vim73 => vim74}/syntax/pilrc.vim | 0 share/vim/vim74/syntax/pine.vim | 372 + share/vim/{vim73 => vim74}/syntax/pinfo.vim | 0 share/vim/{vim73 => vim74}/syntax/plaintex.vim | 0 share/vim/vim74/syntax/pli.vim | 278 + share/vim/{vim73 => vim74}/syntax/plm.vim | 0 share/vim/{vim73 => vim74}/syntax/plp.vim | 0 share/vim/{vim73 => vim74}/syntax/plsql.vim | 0 share/vim/vim74/syntax/po.vim | 140 + share/vim/vim74/syntax/pod.vim | 189 + share/vim/{vim73 => vim74}/syntax/postscr.vim | 0 share/vim/vim74/syntax/pov.vim | 150 + share/vim/vim74/syntax/povini.vim | 62 + share/vim/{vim73 => vim74}/syntax/ppd.vim | 0 share/vim/{vim73 => vim74}/syntax/ppwiz.vim | 0 share/vim/{vim73 => vim74}/syntax/prescribe.vim | 0 share/vim/{vim73 => vim74}/syntax/privoxy.vim | 0 share/vim/{vim73 => vim74}/syntax/procmail.vim | 0 share/vim/vim74/syntax/progress.vim | 329 + share/vim/vim74/syntax/prolog.vim | 123 + share/vim/{vim73 => vim74}/syntax/promela.vim | 0 share/vim/vim74/syntax/proto.vim | 74 + share/vim/{vim73 => vim74}/syntax/protocols.vim | 0 share/vim/{vim73 => vim74}/syntax/psf.vim | 0 share/vim/{vim73 => vim74}/syntax/ptcap.vim | 0 share/vim/{vim73 => vim74}/syntax/purifylog.vim | 0 share/vim/{vim73 => vim74}/syntax/pyrex.vim | 0 share/vim/vim74/syntax/python.vim | 303 + share/vim/{vim73 => vim74}/syntax/qf.vim | 0 share/vim/{vim73 => vim74}/syntax/quake.vim | 0 share/vim/vim74/syntax/r.vim | 221 + share/vim/{vim73 => vim74}/syntax/racc.vim | 0 share/vim/{vim73 => vim74}/syntax/radiance.vim | 0 share/vim/vim74/syntax/ratpoison.vim | 280 + share/vim/{vim73 => vim74}/syntax/rc.vim | 0 share/vim/vim74/syntax/rcs.vim | 76 + share/vim/{vim73 => vim74}/syntax/rcslog.vim | 0 share/vim/vim74/syntax/readline.vim | 395 + share/vim/{vim73 => vim74}/syntax/rebol.vim | 0 share/vim/vim74/syntax/redif.vim | 972 + share/vim/{vim73 => vim74}/syntax/registry.vim | 0 share/vim/{vim73 => vim74}/syntax/remind.vim | 0 share/vim/vim74/syntax/resolv.vim | 88 + share/vim/vim74/syntax/reva.vim | 196 + share/vim/vim74/syntax/rexx.vim | 331 + share/vim/vim74/syntax/rhelp.vim | 236 + share/vim/{vim73 => vim74}/syntax/rib.vim | 0 share/vim/{vim73 => vim74}/syntax/rnc.vim | 0 share/vim/vim74/syntax/rng.vim | 25 + share/vim/{vim73 => vim74}/syntax/rnoweb.vim | 0 share/vim/{vim73 => vim74}/syntax/robots.vim | 0 share/vim/{vim73 => vim74}/syntax/rpcgen.vim | 0 share/vim/vim74/syntax/rpl.vim | 496 + share/vim/vim74/syntax/rst.vim | 196 + share/vim/{vim73 => vim74}/syntax/rtf.vim | 0 share/vim/vim74/syntax/ruby.vim | 371 + share/vim/{vim73 => vim74}/syntax/samba.vim | 0 share/vim/vim74/syntax/sas.vim | 284 + share/vim/vim74/syntax/sass.vim | 98 + share/vim/{vim73 => vim74}/syntax/sather.vim | 0 share/vim/vim74/syntax/scheme.vim | 330 + share/vim/{vim73 => vim74}/syntax/scilab.vim | 0 share/vim/{vim73 => vim74}/syntax/screen.vim | 0 share/vim/{vim73 => vim74}/syntax/scss.vim | 0 share/vim/vim74/syntax/sd.vim | 81 + share/vim/{vim73 => vim74}/syntax/sdc.vim | 0 share/vim/vim74/syntax/sdl.vim | 167 + share/vim/{vim73 => vim74}/syntax/sed.vim | 0 share/vim/vim74/syntax/sendpr.vim | 38 + share/vim/{vim73 => vim74}/syntax/sensors.vim | 0 share/vim/{vim73 => vim74}/syntax/services.vim | 0 share/vim/{vim73 => vim74}/syntax/setserial.vim | 0 share/vim/{vim73 => vim74}/syntax/sgml.vim | 0 share/vim/vim74/syntax/sgmldecl.vim | 85 + share/vim/vim74/syntax/sgmllnx.vim | 67 + share/vim/vim74/syntax/sh.vim | 705 + share/vim/{vim73 => vim74}/syntax/sicad.vim | 0 share/vim/{vim73 => vim74}/syntax/sieve.vim | 0 share/vim/{vim73 => vim74}/syntax/simula.vim | 0 share/vim/{vim73 => vim74}/syntax/sinda.vim | 0 share/vim/{vim73 => vim74}/syntax/sindacmp.vim | 0 share/vim/{vim73 => vim74}/syntax/sindaout.vim | 0 share/vim/vim74/syntax/sisu.vim | 265 + share/vim/{vim73 => vim74}/syntax/skill.vim | 0 share/vim/{vim73 => vim74}/syntax/sl.vim | 0 share/vim/{vim73 => vim74}/syntax/slang.vim | 0 share/vim/vim74/syntax/slice.vim | 91 + share/vim/{vim73 => vim74}/syntax/slpconf.vim | 0 share/vim/{vim73 => vim74}/syntax/slpreg.vim | 0 share/vim/{vim73 => vim74}/syntax/slpspi.vim | 0 share/vim/{vim73 => vim74}/syntax/slrnrc.vim | 0 share/vim/{vim73 => vim74}/syntax/slrnsc.vim | 0 share/vim/{vim73 => vim74}/syntax/sm.vim | 0 share/vim/{vim73 => vim74}/syntax/smarty.vim | 0 share/vim/{vim73 => vim74}/syntax/smcl.vim | 0 share/vim/vim74/syntax/smil.vim | 159 + share/vim/{vim73 => vim74}/syntax/smith.vim | 0 share/vim/{vim73 => vim74}/syntax/sml.vim | 0 share/vim/{vim73 => vim74}/syntax/snnsnet.vim | 0 share/vim/vim74/syntax/snnspat.vim | 72 + share/vim/{vim73 => vim74}/syntax/snnsres.vim | 0 share/vim/{vim73 => vim74}/syntax/snobol4.vim | 0 share/vim/{vim73 => vim74}/syntax/spec.vim | 0 share/vim/{vim73 => vim74}/syntax/specman.vim | 0 share/vim/vim74/syntax/spice.vim | 88 + share/vim/{vim73 => vim74}/syntax/splint.vim | 0 share/vim/vim74/syntax/spup.vim | 282 + share/vim/{vim73 => vim74}/syntax/spyce.vim | 0 share/vim/{vim73 => vim74}/syntax/sql.vim | 0 share/vim/vim74/syntax/sqlanywhere.vim | 908 + share/vim/{vim73 => vim74}/syntax/sqlforms.vim | 0 share/vim/vim74/syntax/sqlhana.vim | 293 + share/vim/{vim73 => vim74}/syntax/sqlinformix.vim | 0 share/vim/{vim73 => vim74}/syntax/sqlj.vim | 0 share/vim/{vim73 => vim74}/syntax/sqloracle.vim | 0 share/vim/vim74/syntax/sqr.vim | 295 + share/vim/{vim73 => vim74}/syntax/squid.vim | 0 share/vim/vim74/syntax/sshconfig.vim | 219 + share/vim/vim74/syntax/sshdconfig.vim | 215 + share/vim/vim74/syntax/st.vim | 108 + share/vim/{vim73 => vim74}/syntax/stata.vim | 0 share/vim/{vim73 => vim74}/syntax/stp.vim | 0 share/vim/{vim73 => vim74}/syntax/strace.vim | 0 share/vim/vim74/syntax/sudoers.vim | 342 + share/vim/{vim73 => vim74}/syntax/svg.vim | 0 share/vim/vim74/syntax/svn.vim | 57 + share/vim/{vim73 => vim74}/syntax/syncolor.vim | 0 share/vim/vim74/syntax/synload.vim | 78 + share/vim/{vim73 => vim74}/syntax/syntax.vim | 0 share/vim/vim74/syntax/sysctl.vim | 39 + share/vim/{vim73 => vim74}/syntax/tads.vim | 0 share/vim/{vim73 => vim74}/syntax/tags.vim | 0 share/vim/{vim73 => vim74}/syntax/tak.vim | 0 share/vim/{vim73 => vim74}/syntax/takcmp.vim | 0 share/vim/{vim73 => vim74}/syntax/takout.vim | 0 share/vim/{vim73 => vim74}/syntax/tar.vim | 0 share/vim/vim74/syntax/taskdata.vim | 48 + share/vim/vim74/syntax/taskedit.vim | 40 + share/vim/vim74/syntax/tasm.vim | 128 + share/vim/{vim73 => vim74}/syntax/tcl.vim | 0 share/vim/{vim73 => vim74}/syntax/tcsh.vim | 0 share/vim/{vim73 => vim74}/syntax/terminfo.vim | 0 share/vim/vim74/syntax/tex.vim | 1329 ++ share/vim/{vim73 => vim74}/syntax/texinfo.vim | 0 share/vim/{vim73 => vim74}/syntax/texmf.vim | 0 share/vim/{vim73 => vim74}/syntax/tf.vim | 0 share/vim/vim74/syntax/tidy.vim | 145 + share/vim/{vim73 => vim74}/syntax/tilde.vim | 0 share/vim/{vim73 => vim74}/syntax/tli.vim | 0 share/vim/{vim73 => vim74}/syntax/tpp.vim | 0 share/vim/{vim73 => vim74}/syntax/trasys.vim | 0 share/vim/vim74/syntax/treetop.vim | 110 + share/vim/{vim73 => vim74}/syntax/trustees.vim | 0 share/vim/vim74/syntax/tsalt.vim | 219 + share/vim/{vim73 => vim74}/syntax/tsscl.vim | 0 share/vim/{vim73 => vim74}/syntax/tssgm.vim | 0 share/vim/{vim73 => vim74}/syntax/tssop.vim | 0 share/vim/vim74/syntax/tt2.vim | 210 + share/vim/vim74/syntax/tt2html.vim | 20 + share/vim/vim74/syntax/tt2js.vim | 20 + share/vim/{vim73 => vim74}/syntax/uc.vim | 0 share/vim/{vim73 => vim74}/syntax/udevconf.vim | 0 share/vim/{vim73 => vim74}/syntax/udevperm.vim | 0 share/vim/{vim73 => vim74}/syntax/udevrules.vim | 0 share/vim/vim74/syntax/uil.vim | 85 + share/vim/{vim73 => vim74}/syntax/updatedb.vim | 0 share/vim/vim74/syntax/upstart.vim | 112 + share/vim/vim74/syntax/upstreamdat.vim | 296 + share/vim/vim74/syntax/upstreaminstalllog.vim | 27 + share/vim/vim74/syntax/upstreamlog.vim | 53 + share/vim/vim74/syntax/usserverlog.vim | 59 + share/vim/vim74/syntax/usw2kagtlog.vim | 49 + share/vim/vim74/syntax/valgrind.vim | 104 + share/vim/{vim73 => vim74}/syntax/vb.vim | 0 share/vim/{vim73 => vim74}/syntax/vera.vim | 0 share/vim/vim74/syntax/verilog.vim | 136 + share/vim/{vim73 => vim74}/syntax/verilogams.vim | 0 share/vim/{vim73 => vim74}/syntax/vgrindefs.vim | 0 share/vim/vim74/syntax/vhdl.vim | 190 + share/vim/vim74/syntax/vim.vim | 922 + share/vim/vim74/syntax/viminfo.vim | 44 + share/vim/{vim73 => vim74}/syntax/virata.vim | 0 share/vim/{vim73 => vim74}/syntax/vmasm.vim | 0 share/vim/{vim73 => vim74}/syntax/voscm.vim | 0 share/vim/{vim73 => vim74}/syntax/vrml.vim | 0 share/vim/{vim73 => vim74}/syntax/vsejcl.vim | 0 share/vim/{vim73 => vim74}/syntax/wdiff.vim | 0 share/vim/{vim73 => vim74}/syntax/web.vim | 0 share/vim/{vim73 => vim74}/syntax/webmacro.vim | 0 share/vim/vim74/syntax/wget.vim | 189 + share/vim/{vim73 => vim74}/syntax/whitespace.vim | 0 share/vim/{vim73 => vim74}/syntax/winbatch.vim | 0 share/vim/{vim73 => vim74}/syntax/wml.vim | 0 share/vim/{vim73 => vim74}/syntax/wsh.vim | 0 share/vim/{vim73 => vim74}/syntax/wsml.vim | 0 share/vim/{vim73 => vim74}/syntax/wvdial.vim | 0 share/vim/{vim73 => vim74}/syntax/xbl.vim | 0 share/vim/vim74/syntax/xdefaults.vim | 145 + share/vim/vim74/syntax/xf86conf.vim | 209 + share/vim/{vim73 => vim74}/syntax/xhtml.vim | 0 share/vim/{vim73 => vim74}/syntax/xinetd.vim | 0 share/vim/{vim73 => vim74}/syntax/xkb.vim | 0 share/vim/{vim73 => vim74}/syntax/xmath.vim | 0 share/vim/vim74/syntax/xml.vim | 346 + share/vim/{vim73 => vim74}/syntax/xmodmap.vim | 0 share/vim/{vim73 => vim74}/syntax/xpm.vim | 0 share/vim/vim74/syntax/xpm2.vim | 168 + share/vim/vim74/syntax/xquery.vim | 82 + share/vim/vim74/syntax/xs.vim | 3278 ++++ share/vim/{vim73 => vim74}/syntax/xsd.vim | 0 share/vim/{vim73 => vim74}/syntax/xslt.vim | 0 share/vim/{vim73 => vim74}/syntax/xxd.vim | 0 share/vim/vim74/syntax/yacc.vim | 122 + share/vim/vim74/syntax/yaml.vim | 186 + share/vim/{vim73 => vim74}/syntax/z8a.vim | 0 share/vim/vim74/syntax/zimbu.vim | 130 + share/vim/{vim73 => vim74}/syntax/zsh.vim | 0 share/vim/{vim73 => vim74}/termcap | 0 share/vim/{vim73 => vim74}/tools.info | Bin share/vim/{vim73 => vim74}/tools/README.txt | 0 share/vim/{vim73 => vim74}/tools/blink.c | 0 share/vim/{vim73 => vim74}/tools/ccfilter.1 | 0 share/vim/{vim73 => vim74}/tools/ccfilter.c | 0 share/vim/vim74/tools/ccfilter_README.txt | 91 + share/vim/{vim73 => vim74}/tools/efm_filter.pl | 0 share/vim/{vim73 => vim74}/tools/efm_filter.txt | 0 share/vim/vim74/tools/efm_perl.pl | 153 + share/vim/{vim73 => vim74}/tools/mve.awk | 0 share/vim/{vim73 => vim74}/tools/mve.txt | 0 share/vim/{vim73 => vim74}/tools/pltags.pl | 0 share/vim/{vim73 => vim74}/tools/ref | 0 share/vim/{vim73 => vim74}/tools/shtags.1 | 0 share/vim/{vim73 => vim74}/tools/shtags.pl | 0 share/vim/{vim73 => vim74}/tools/unicode.vim | 0 share/vim/{vim73 => vim74}/tools/vim132 | 0 share/vim/vim74/tools/vim_vs_net.cmd | 24 + share/vim/{vim73 => vim74}/tools/vimm | 0 share/vim/{vim73 => vim74}/tools/vimspell.sh | 0 share/vim/{vim73 => vim74}/tools/vimspell.txt | 0 share/vim/{vim73 => vim74}/tools/xcmdsrv_client.c | 0 share/vim/{vim73 => vim74}/tutor.info | Bin share/vim/vim74/tutor/Makefile | 100 + .../vim/{vim73 => vim74}/tutor/README.el.cp737.txt | 0 share/vim/{vim73 => vim74}/tutor/README.el.txt | 0 share/vim/{vim73 => vim74}/tutor/README.txt | 0 share/vim/{vim73 => vim74}/tutor/README.txt.info | Bin share/vim/vim74/tutor/tutor | 970 + share/vim/vim74/tutor/tutor.bar | 981 + share/vim/vim74/tutor/tutor.bar.utf-8 | 981 + share/vim/{vim73 => vim74}/tutor/tutor.ca | 0 share/vim/{vim73 => vim74}/tutor/tutor.ca.utf-8 | 0 share/vim/{vim73 => vim74}/tutor/tutor.cs | 0 share/vim/{vim73 => vim74}/tutor/tutor.cs.cp1250 | 0 share/vim/{vim73 => vim74}/tutor/tutor.cs.utf-8 | 0 share/vim/vim74/tutor/tutor.de | 980 + share/vim/vim74/tutor/tutor.de.utf-8 | 980 + share/vim/{vim73 => vim74}/tutor/tutor.el | 0 share/vim/{vim73 => vim74}/tutor/tutor.el.cp737 | 0 share/vim/{vim73 => vim74}/tutor/tutor.el.utf-8 | 0 share/vim/vim74/tutor/tutor.eo | 991 + share/vim/vim74/tutor/tutor.eo.utf-8 | 991 + share/vim/{vim73 => vim74}/tutor/tutor.es | 0 share/vim/{vim73 => vim74}/tutor/tutor.es.utf-8 | 0 share/vim/vim74/tutor/tutor.fr | 1038 ++ share/vim/vim74/tutor/tutor.fr.utf-8 | 1038 ++ share/vim/vim74/tutor/tutor.hr | 972 + share/vim/vim74/tutor/tutor.hr.cp1250 | 972 + share/vim/vim74/tutor/tutor.hr.utf-8 | 972 + share/vim/vim74/tutor/tutor.hu | 830 + share/vim/vim74/tutor/tutor.hu.cp1250 | 830 + share/vim/vim74/tutor/tutor.hu.utf-8 | 830 + share/vim/{vim73 => vim74}/tutor/tutor.info | Bin share/vim/{vim73 => vim74}/tutor/tutor.it | 0 share/vim/{vim73 => vim74}/tutor/tutor.it.utf-8 | 0 share/vim/vim74/tutor/tutor.ja.euc | 977 + share/vim/vim74/tutor/tutor.ja.sjis | 977 + share/vim/vim74/tutor/tutor.ja.utf-8 | 977 + share/vim/vim74/tutor/tutor.ko.euc | 812 + share/vim/vim74/tutor/tutor.ko.utf-8 | 812 + share/vim/vim74/tutor/tutor.nb | 973 + share/vim/vim74/tutor/tutor.nb.utf-8 | 973 + share/vim/vim74/tutor/tutor.nl | 950 + share/vim/vim74/tutor/tutor.nl.utf-8 | 950 + share/vim/vim74/tutor/tutor.no | 973 + share/vim/vim74/tutor/tutor.no.utf-8 | 973 + share/vim/{vim73 => vim74}/tutor/tutor.pl | 0 share/vim/{vim73 => vim74}/tutor/tutor.pl.cp1250 | 0 share/vim/{vim73 => vim74}/tutor/tutor.pl.utf-8 | 0 share/vim/{vim73 => vim74}/tutor/tutor.pt | 0 share/vim/{vim73 => vim74}/tutor/tutor.pt.utf-8 | 0 share/vim/{vim73 => vim74}/tutor/tutor.ru | 0 share/vim/{vim73 => vim74}/tutor/tutor.ru.cp1251 | 0 share/vim/{vim73 => vim74}/tutor/tutor.ru.utf-8 | 0 share/vim/vim74/tutor/tutor.sk | 1008 + share/vim/vim74/tutor/tutor.sk.cp1250 | 1008 + share/vim/vim74/tutor/tutor.sk.utf-8 | 1008 + share/vim/{vim73 => vim74}/tutor/tutor.sv | 0 share/vim/{vim73 => vim74}/tutor/tutor.sv.utf-8 | 0 share/vim/{vim73 => vim74}/tutor/tutor.tr.iso9 | 0 share/vim/{vim73 => vim74}/tutor/tutor.tr.utf-8 | 0 share/vim/vim74/tutor/tutor.utf-8 | 970 + share/vim/{vim73 => vim74}/tutor/tutor.vi.utf-8 | 0 share/vim/vim74/tutor/tutor.vim | 189 + share/vim/{vim73 => vim74}/tutor/tutor.zh.big5 | 0 share/vim/vim74/tutor/tutor.zh.euc | 996 + share/vim/{vim73 => vim74}/tutor/tutor.zh.utf-8 | 0 share/vim/vim74/tutor/tutor.zh_cn.utf-8 | 996 + .../tutor/tutor.zh_tw.utf-8} | 0 share/vim/vim74/vim.exe | Bin 0 -> 1980928 bytes share/vim/{vim73 => vim74}/vim16x16.gif | Bin share/vim/{vim73 => vim74}/vim16x16.png | Bin share/vim/{vim73 => vim74}/vim16x16.xpm | 0 share/vim/{vim73 => vim74}/vim32x32.gif | Bin share/vim/{vim73 => vim74}/vim32x32.png | Bin share/vim/{vim73 => vim74}/vim32x32.xpm | 0 share/vim/{vim73 => vim74}/vim48x48.gif | Bin share/vim/{vim73 => vim74}/vim48x48.png | Bin share/vim/{vim73 => vim74}/vim48x48.xpm | 0 share/vim/{vim73 => vim74}/vimlogo.cdr | Bin share/vim/vim74/vimlogo.eps | 791 + share/vim/{vim73 => vim74}/vimlogo.gif | Bin share/vim/{vim73 => vim74}/vimlogo.pdf | Bin share/vim/{vim73 => vim74}/vimlogo.xpm | 0 share/vim/vim74/vimrc_example.vim | 96 + 2302 files changed, 310436 insertions(+), 271328 deletions(-) delete mode 100644 share/vim/vim73/autoload/ada.vim delete mode 100644 share/vim/vim73/autoload/ccomplete.vim delete mode 100644 share/vim/vim73/autoload/getscript.vim delete mode 100644 share/vim/vim73/autoload/htmlcomplete.vim delete mode 100644 share/vim/vim73/autoload/netrw.vim delete mode 100644 share/vim/vim73/autoload/netrwFileHandlers.vim delete mode 100644 share/vim/vim73/autoload/netrwSettings.vim delete mode 100644 share/vim/vim73/autoload/phpcomplete.vim delete mode 100644 share/vim/vim73/autoload/rubycomplete.vim delete mode 100644 share/vim/vim73/autoload/spellfile.vim delete mode 100644 share/vim/vim73/autoload/sqlcomplete.vim delete mode 100644 share/vim/vim73/autoload/syntaxcomplete.vim delete mode 100644 share/vim/vim73/autoload/tar.vim delete mode 100644 share/vim/vim73/autoload/tohtml.vim delete mode 100644 share/vim/vim73/autoload/vimball.vim delete mode 100644 share/vim/vim73/autoload/xmlcomplete.vim delete mode 100644 share/vim/vim73/autoload/zip.vim delete mode 100644 share/vim/vim73/colors/koehler.vim delete mode 100644 share/vim/vim73/colors/ron.vim delete mode 100644 share/vim/vim73/compiler/checkstyle.vim delete mode 100644 share/vim/vim73/compiler/cs.vim delete mode 100644 share/vim/vim73/compiler/decada.vim delete mode 100644 share/vim/vim73/compiler/eruby.vim delete mode 100644 share/vim/vim73/compiler/gcc.vim delete mode 100644 share/vim/vim73/compiler/gnat.vim delete mode 100644 share/vim/vim73/compiler/hp_acc.vim delete mode 100644 share/vim/vim73/compiler/intel.vim delete mode 100644 share/vim/vim73/compiler/irix5_c.vim delete mode 100644 share/vim/vim73/compiler/irix5_cpp.vim delete mode 100644 share/vim/vim73/compiler/javac.vim delete mode 100644 share/vim/vim73/compiler/mcs.vim delete mode 100644 share/vim/vim73/compiler/mips_c.vim delete mode 100644 share/vim/vim73/compiler/mipspro_c89.vim delete mode 100644 share/vim/vim73/compiler/mipspro_cpp.vim delete mode 100644 share/vim/vim73/compiler/php.vim delete mode 100644 share/vim/vim73/compiler/rspec.vim delete mode 100644 share/vim/vim73/compiler/rst.vim delete mode 100644 share/vim/vim73/compiler/ruby.vim delete mode 100644 share/vim/vim73/compiler/rubyunit.vim delete mode 100644 share/vim/vim73/compiler/se.vim delete mode 100644 share/vim/vim73/compiler/tcl.vim delete mode 100644 share/vim/vim73/compiler/tex.vim delete mode 100644 share/vim/vim73/compiler/tidy.vim delete mode 100644 share/vim/vim73/compiler/xmllint.vim delete mode 100644 share/vim/vim73/doc/arabic.txt delete mode 100644 share/vim/vim73/doc/autocmd.txt delete mode 100644 share/vim/vim73/doc/change.txt delete mode 100644 share/vim/vim73/doc/cmdline.txt delete mode 100644 share/vim/vim73/doc/debug.txt delete mode 100644 share/vim/vim73/doc/debugger.txt delete mode 100644 share/vim/vim73/doc/develop.txt delete mode 100644 share/vim/vim73/doc/diff.txt delete mode 100644 share/vim/vim73/doc/digraph.txt delete mode 100644 share/vim/vim73/doc/editing.txt delete mode 100644 share/vim/vim73/doc/eval.txt delete mode 100644 share/vim/vim73/doc/evim-fr.1 delete mode 100644 share/vim/vim73/doc/evim-fr.UTF-8.1 delete mode 100644 share/vim/vim73/doc/farsi.txt delete mode 100644 share/vim/vim73/doc/filetype.txt delete mode 100644 share/vim/vim73/doc/fold.txt delete mode 100644 share/vim/vim73/doc/ft_ada.txt delete mode 100644 share/vim/vim73/doc/ft_sql.txt delete mode 100644 share/vim/vim73/doc/gui.txt delete mode 100644 share/vim/vim73/doc/gui_w16.txt delete mode 100644 share/vim/vim73/doc/gui_w32.txt delete mode 100644 share/vim/vim73/doc/gui_x11.txt delete mode 100644 share/vim/vim73/doc/hangulin.txt delete mode 100644 share/vim/vim73/doc/hebrew.txt delete mode 100644 share/vim/vim73/doc/help.txt delete mode 100644 share/vim/vim73/doc/helphelp.txt delete mode 100644 share/vim/vim73/doc/howto.txt delete mode 100644 share/vim/vim73/doc/if_cscop.txt delete mode 100644 share/vim/vim73/doc/if_lua.txt delete mode 100644 share/vim/vim73/doc/if_mzsch.txt delete mode 100644 share/vim/vim73/doc/if_ole.txt delete mode 100644 share/vim/vim73/doc/if_perl.txt delete mode 100644 share/vim/vim73/doc/if_pyth.txt delete mode 100644 share/vim/vim73/doc/if_ruby.txt delete mode 100644 share/vim/vim73/doc/if_sniff.txt delete mode 100644 share/vim/vim73/doc/if_tcl.txt delete mode 100644 share/vim/vim73/doc/indent.txt delete mode 100644 share/vim/vim73/doc/index.txt delete mode 100644 share/vim/vim73/doc/insert.txt delete mode 100644 share/vim/vim73/doc/intro.txt delete mode 100644 share/vim/vim73/doc/map.txt delete mode 100644 share/vim/vim73/doc/mbyte.txt delete mode 100644 share/vim/vim73/doc/message.txt delete mode 100644 share/vim/vim73/doc/mlang.txt delete mode 100644 share/vim/vim73/doc/motion.txt delete mode 100644 share/vim/vim73/doc/netbeans.txt delete mode 100644 share/vim/vim73/doc/options.txt delete mode 100644 share/vim/vim73/doc/os_390.txt delete mode 100644 share/vim/vim73/doc/os_amiga.txt delete mode 100644 share/vim/vim73/doc/os_beos.txt delete mode 100644 share/vim/vim73/doc/os_dos.txt delete mode 100644 share/vim/vim73/doc/os_mac.txt delete mode 100644 share/vim/vim73/doc/os_mint.txt delete mode 100644 share/vim/vim73/doc/os_msdos.txt delete mode 100644 share/vim/vim73/doc/os_os2.txt delete mode 100644 share/vim/vim73/doc/os_qnx.txt delete mode 100644 share/vim/vim73/doc/os_risc.txt delete mode 100644 share/vim/vim73/doc/os_unix.txt delete mode 100644 share/vim/vim73/doc/os_vms.txt delete mode 100644 share/vim/vim73/doc/os_win32.txt delete mode 100644 share/vim/vim73/doc/pattern.txt delete mode 100644 share/vim/vim73/doc/pi_getscript.txt delete mode 100644 share/vim/vim73/doc/pi_gzip.txt delete mode 100644 share/vim/vim73/doc/pi_netrw.txt delete mode 100644 share/vim/vim73/doc/pi_paren.txt delete mode 100644 share/vim/vim73/doc/pi_spec.txt delete mode 100644 share/vim/vim73/doc/pi_tar.txt delete mode 100644 share/vim/vim73/doc/pi_vimball.txt delete mode 100644 share/vim/vim73/doc/pi_zip.txt delete mode 100644 share/vim/vim73/doc/print.txt delete mode 100644 share/vim/vim73/doc/quickfix.txt delete mode 100644 share/vim/vim73/doc/quickref.txt delete mode 100644 share/vim/vim73/doc/quotes.txt delete mode 100644 share/vim/vim73/doc/recover.txt delete mode 100644 share/vim/vim73/doc/remote.txt delete mode 100644 share/vim/vim73/doc/repeat.txt delete mode 100644 share/vim/vim73/doc/rileft.txt delete mode 100644 share/vim/vim73/doc/russian.txt delete mode 100644 share/vim/vim73/doc/scroll.txt delete mode 100644 share/vim/vim73/doc/sign.txt delete mode 100644 share/vim/vim73/doc/spell.txt delete mode 100644 share/vim/vim73/doc/sponsor.txt delete mode 100644 share/vim/vim73/doc/starting.txt delete mode 100644 share/vim/vim73/doc/syntax.txt delete mode 100644 share/vim/vim73/doc/tabpage.txt delete mode 100644 share/vim/vim73/doc/tags delete mode 100644 share/vim/vim73/doc/tagsrch.txt delete mode 100644 share/vim/vim73/doc/term.txt delete mode 100644 share/vim/vim73/doc/tips.txt delete mode 100644 share/vim/vim73/doc/todo.txt delete mode 100644 share/vim/vim73/doc/uganda.txt delete mode 100644 share/vim/vim73/doc/undo.txt delete mode 100644 share/vim/vim73/doc/usr_01.txt delete mode 100644 share/vim/vim73/doc/usr_02.txt delete mode 100644 share/vim/vim73/doc/usr_03.txt delete mode 100644 share/vim/vim73/doc/usr_04.txt delete mode 100644 share/vim/vim73/doc/usr_05.txt delete mode 100644 share/vim/vim73/doc/usr_06.txt delete mode 100644 share/vim/vim73/doc/usr_07.txt delete mode 100644 share/vim/vim73/doc/usr_08.txt delete mode 100644 share/vim/vim73/doc/usr_09.txt delete mode 100644 share/vim/vim73/doc/usr_10.txt delete mode 100644 share/vim/vim73/doc/usr_11.txt delete mode 100644 share/vim/vim73/doc/usr_12.txt delete mode 100644 share/vim/vim73/doc/usr_20.txt delete mode 100644 share/vim/vim73/doc/usr_21.txt delete mode 100644 share/vim/vim73/doc/usr_22.txt delete mode 100644 share/vim/vim73/doc/usr_23.txt delete mode 100644 share/vim/vim73/doc/usr_24.txt delete mode 100644 share/vim/vim73/doc/usr_25.txt delete mode 100644 share/vim/vim73/doc/usr_26.txt delete mode 100644 share/vim/vim73/doc/usr_27.txt delete mode 100644 share/vim/vim73/doc/usr_28.txt delete mode 100644 share/vim/vim73/doc/usr_29.txt delete mode 100644 share/vim/vim73/doc/usr_30.txt delete mode 100644 share/vim/vim73/doc/usr_31.txt delete mode 100644 share/vim/vim73/doc/usr_32.txt delete mode 100644 share/vim/vim73/doc/usr_40.txt delete mode 100644 share/vim/vim73/doc/usr_41.txt delete mode 100644 share/vim/vim73/doc/usr_42.txt delete mode 100644 share/vim/vim73/doc/usr_43.txt delete mode 100644 share/vim/vim73/doc/usr_44.txt delete mode 100644 share/vim/vim73/doc/usr_45.txt delete mode 100644 share/vim/vim73/doc/usr_90.txt delete mode 100644 share/vim/vim73/doc/usr_toc.txt delete mode 100644 share/vim/vim73/doc/various.txt delete mode 100644 share/vim/vim73/doc/version4.txt delete mode 100644 share/vim/vim73/doc/version5.txt delete mode 100644 share/vim/vim73/doc/version6.txt delete mode 100644 share/vim/vim73/doc/version7.txt delete mode 100644 share/vim/vim73/doc/vi_diff.txt delete mode 100644 share/vim/vim73/doc/vim-fr.1 delete mode 100644 share/vim/vim73/doc/vim-fr.UTF-8.1 delete mode 100644 share/vim/vim73/doc/vim2html.pl delete mode 100644 share/vim/vim73/doc/vimdiff-fr.1 delete mode 100644 share/vim/vim73/doc/vimdiff-fr.UTF-8.1 delete mode 100644 share/vim/vim73/doc/vimtutor-fr.1 delete mode 100644 share/vim/vim73/doc/vimtutor-fr.UTF-8.1 delete mode 100644 share/vim/vim73/doc/visual.txt delete mode 100644 share/vim/vim73/doc/windows.txt delete mode 100644 share/vim/vim73/doc/workshop.txt delete mode 100644 share/vim/vim73/doc/xxd-fr.1 delete mode 100644 share/vim/vim73/doc/xxd-fr.UTF-8.1 delete mode 100644 share/vim/vim73/filetype.vim delete mode 100644 share/vim/vim73/ftplugin/aap.vim delete mode 100644 share/vim/vim73/ftplugin/abaqus.vim delete mode 100644 share/vim/vim73/ftplugin/ada.vim delete mode 100644 share/vim/vim73/ftplugin/ant.vim delete mode 100644 share/vim/vim73/ftplugin/art.vim delete mode 100644 share/vim/vim73/ftplugin/aspvbs.vim delete mode 100644 share/vim/vim73/ftplugin/c.vim delete mode 100644 share/vim/vim73/ftplugin/changelog.vim delete mode 100644 share/vim/vim73/ftplugin/config.vim delete mode 100644 share/vim/vim73/ftplugin/cs.vim delete mode 100644 share/vim/vim73/ftplugin/csc.vim delete mode 100644 share/vim/vim73/ftplugin/csh.vim delete mode 100644 share/vim/vim73/ftplugin/cucumber.vim delete mode 100644 share/vim/vim73/ftplugin/debchangelog.vim delete mode 100644 share/vim/vim73/ftplugin/dosbatch.vim delete mode 100644 share/vim/vim73/ftplugin/dtd.vim delete mode 100644 share/vim/vim73/ftplugin/eruby.vim delete mode 100644 share/vim/vim73/ftplugin/fortran.vim delete mode 100644 share/vim/vim73/ftplugin/git.vim delete mode 100644 share/vim/vim73/ftplugin/gitcommit.vim delete mode 100644 share/vim/vim73/ftplugin/haml.vim delete mode 100644 share/vim/vim73/ftplugin/hamster.vim delete mode 100644 share/vim/vim73/ftplugin/help.vim delete mode 100644 share/vim/vim73/ftplugin/html.vim delete mode 100644 share/vim/vim73/ftplugin/initex.vim delete mode 100644 share/vim/vim73/ftplugin/ishd.vim delete mode 100644 share/vim/vim73/ftplugin/java.vim delete mode 100644 share/vim/vim73/ftplugin/jsp.vim delete mode 100644 share/vim/vim73/ftplugin/kwt.vim delete mode 100644 share/vim/vim73/ftplugin/lisp.vim delete mode 100644 share/vim/vim73/ftplugin/logcheck.vim delete mode 100644 share/vim/vim73/ftplugin/lua.vim delete mode 100644 share/vim/vim73/ftplugin/mail.vim delete mode 100644 share/vim/vim73/ftplugin/make.vim delete mode 100644 share/vim/vim73/ftplugin/man.vim delete mode 100644 share/vim/vim73/ftplugin/markdown.vim delete mode 100644 share/vim/vim73/ftplugin/matlab.vim delete mode 100644 share/vim/vim73/ftplugin/ocaml.vim delete mode 100644 share/vim/vim73/ftplugin/occam.vim delete mode 100644 share/vim/vim73/ftplugin/pascal.vim delete mode 100644 share/vim/vim73/ftplugin/perl.vim delete mode 100644 share/vim/vim73/ftplugin/perl6.vim delete mode 100644 share/vim/vim73/ftplugin/php.vim delete mode 100644 share/vim/vim73/ftplugin/plaintex.vim delete mode 100644 share/vim/vim73/ftplugin/postscr.vim delete mode 100644 share/vim/vim73/ftplugin/pyrex.vim delete mode 100644 share/vim/vim73/ftplugin/python.vim delete mode 100644 share/vim/vim73/ftplugin/qf.vim delete mode 100644 share/vim/vim73/ftplugin/rpl.vim delete mode 100644 share/vim/vim73/ftplugin/ruby.vim delete mode 100644 share/vim/vim73/ftplugin/scheme.vim delete mode 100644 share/vim/vim73/ftplugin/sgml.vim delete mode 100644 share/vim/vim73/ftplugin/sh.vim delete mode 100644 share/vim/vim73/ftplugin/spec.vim delete mode 100644 share/vim/vim73/ftplugin/sql.vim delete mode 100644 share/vim/vim73/ftplugin/svg.vim delete mode 100644 share/vim/vim73/ftplugin/tcl.vim delete mode 100644 share/vim/vim73/ftplugin/tcsh.vim delete mode 100644 share/vim/vim73/ftplugin/tex.vim delete mode 100644 share/vim/vim73/ftplugin/vhdl.vim delete mode 100644 share/vim/vim73/ftplugin/vim.vim delete mode 100644 share/vim/vim73/ftplugin/xhtml.vim delete mode 100644 share/vim/vim73/ftplugin/xml.vim delete mode 100644 share/vim/vim73/ftplugin/xs.vim delete mode 100644 share/vim/vim73/ftplugin/xsd.vim delete mode 100644 share/vim/vim73/ftplugin/zsh.vim delete mode 100644 share/vim/vim73/ftplugof.vim delete mode 100644 share/vim/vim73/gvim.exe delete mode 100644 share/vim/vim73/indent/ada.vim delete mode 100644 share/vim/vim73/indent/awk.vim delete mode 100644 share/vim/vim73/indent/cmake.vim delete mode 100644 share/vim/vim73/indent/css.vim delete mode 100644 share/vim/vim73/indent/cucumber.vim delete mode 100644 share/vim/vim73/indent/dtd.vim delete mode 100644 share/vim/vim73/indent/eiffel.vim delete mode 100644 share/vim/vim73/indent/erlang.vim delete mode 100644 share/vim/vim73/indent/eruby.vim delete mode 100644 share/vim/vim73/indent/fortran.vim delete mode 100644 share/vim/vim73/indent/gitconfig.vim delete mode 100644 share/vim/vim73/indent/haml.vim delete mode 100644 share/vim/vim73/indent/html.vim delete mode 100644 share/vim/vim73/indent/idlang.vim delete mode 100644 share/vim/vim73/indent/java.vim delete mode 100644 share/vim/vim73/indent/liquid.vim delete mode 100644 share/vim/vim73/indent/lisp.vim delete mode 100644 share/vim/vim73/indent/mp.vim delete mode 100644 share/vim/vim73/indent/ocaml.vim delete mode 100644 share/vim/vim73/indent/occam.vim delete mode 100644 share/vim/vim73/indent/pascal.vim delete mode 100644 share/vim/vim73/indent/perl.vim delete mode 100644 share/vim/vim73/indent/perl6.vim delete mode 100644 share/vim/vim73/indent/php.vim delete mode 100644 share/vim/vim73/indent/python.vim delete mode 100644 share/vim/vim73/indent/rst.vim delete mode 100644 share/vim/vim73/indent/ruby.vim delete mode 100644 share/vim/vim73/indent/sass.vim delete mode 100644 share/vim/vim73/indent/sdl.vim delete mode 100644 share/vim/vim73/indent/sqlanywhere.vim delete mode 100644 share/vim/vim73/indent/tcsh.vim delete mode 100644 share/vim/vim73/indent/verilog.vim delete mode 100644 share/vim/vim73/indent/vhdl.vim delete mode 100644 share/vim/vim73/indent/vim.vim delete mode 100644 share/vim/vim73/indent/xinetd.vim delete mode 100644 share/vim/vim73/indent/xml.vim delete mode 100644 share/vim/vim73/lang/menu_af_af.latin1.vim delete mode 100644 share/vim/vim73/lang/menu_ca_es.latin1.vim delete mode 100644 share/vim/vim73/lang/menu_chinese_gb.936.vim delete mode 100644 share/vim/vim73/lang/menu_chinese_taiwan.950.vim delete mode 100644 share/vim/vim73/lang/menu_cs_cz.iso_8859-2.vim delete mode 100644 share/vim/vim73/lang/menu_cs_cz.latin1.vim delete mode 100644 share/vim/vim73/lang/menu_czech_czech_republic.1250.vim delete mode 100644 share/vim/vim73/lang/menu_czech_czech_republic.ascii.vim delete mode 100644 share/vim/vim73/lang/menu_de_de.latin1.vim delete mode 100644 share/vim/vim73/lang/menu_eo.utf-8.vim delete mode 100644 share/vim/vim73/lang/menu_es_es.latin1.vim delete mode 100644 share/vim/vim73/lang/menu_fi_fi.latin1.vim delete mode 100644 share/vim/vim73/lang/menu_fr_fr.latin1.vim delete mode 100644 share/vim/vim73/lang/menu_hu_hu.iso_8859-2.vim delete mode 100644 share/vim/vim73/lang/menu_hu_hu.utf-8.vim delete mode 100644 share/vim/vim73/lang/menu_it_it.latin1.vim delete mode 100644 share/vim/vim73/lang/menu_ja.cp932.vim delete mode 100644 share/vim/vim73/lang/menu_ja.euc-jp.vim delete mode 100644 share/vim/vim73/lang/menu_ja.eucjp.vim delete mode 100644 share/vim/vim73/lang/menu_ja.ujis.vim delete mode 100644 share/vim/vim73/lang/menu_ja_jp.cp932.vim delete mode 100644 share/vim/vim73/lang/menu_ja_jp.euc-jp.vim delete mode 100644 share/vim/vim73/lang/menu_ja_jp.eucjp.vim delete mode 100644 share/vim/vim73/lang/menu_ja_jp.ujis.vim delete mode 100644 share/vim/vim73/lang/menu_ja_jp.utf-8.vim delete mode 100644 share/vim/vim73/lang/menu_japanese_japan.932.vim delete mode 100644 share/vim/vim73/lang/menu_ko_kr.euckr.vim delete mode 100644 share/vim/vim73/lang/menu_ko_kr.utf-8.vim delete mode 100644 share/vim/vim73/lang/menu_nl_nl.latin1.vim delete mode 100644 share/vim/vim73/lang/menu_no_no.latin1.vim delete mode 100644 share/vim/vim73/lang/menu_pl_pl.iso_8859-2.vim delete mode 100644 share/vim/vim73/lang/menu_pl_pl.utf-8.vim delete mode 100644 share/vim/vim73/lang/menu_polish_poland.1250.vim delete mode 100644 share/vim/vim73/lang/menu_pt_br.vim delete mode 100644 share/vim/vim73/lang/menu_pt_pt.vim delete mode 100644 share/vim/vim73/lang/menu_ru_ru.koi8-r.vim delete mode 100644 share/vim/vim73/lang/menu_ru_ru.vim delete mode 100644 share/vim/vim73/lang/menu_sk_sk.iso_8859-2.vim delete mode 100644 share/vim/vim73/lang/menu_sl_si.cp1250.vim delete mode 100644 share/vim/vim73/lang/menu_sl_si.latin2.vim delete mode 100644 share/vim/vim73/lang/menu_sl_si.utf-8.vim delete mode 100644 share/vim/vim73/lang/menu_slovak_slovak_republic.1250.vim delete mode 100644 share/vim/vim73/lang/menu_sr_rs.ascii.vim delete mode 100644 share/vim/vim73/lang/menu_sr_rs.iso_8859-2.vim delete mode 100644 share/vim/vim73/lang/menu_sr_rs.iso_8859-5.vim delete mode 100644 share/vim/vim73/lang/menu_sr_rs.utf-8.vim delete mode 100644 share/vim/vim73/lang/menu_sv_se.latin1.vim delete mode 100644 share/vim/vim73/lang/menu_uk_ua.cp1251.vim delete mode 100644 share/vim/vim73/lang/menu_uk_ua.koi8-u.vim delete mode 100644 share/vim/vim73/lang/menu_vi_vn.vim delete mode 100644 share/vim/vim73/lang/menu_zh_cn.gb2312.vim delete mode 100644 share/vim/vim73/lang/menu_zh_cn.utf-8.vim delete mode 100644 share/vim/vim73/lang/menu_zh_tw.utf-8.vim delete mode 100644 share/vim/vim73/macros/editexisting.vim delete mode 100644 share/vim/vim73/macros/justify.vim delete mode 100644 share/vim/vim73/macros/less.sh delete mode 100644 share/vim/vim73/macros/less.vim delete mode 100644 share/vim/vim73/macros/matchit.vim delete mode 100644 share/vim/vim73/makemenu.vim delete mode 100644 share/vim/vim73/menu.vim delete mode 100644 share/vim/vim73/mswin.vim delete mode 100644 share/vim/vim73/optwin.vim delete mode 100644 share/vim/vim73/plugin/getscriptPlugin.vim delete mode 100644 share/vim/vim73/plugin/matchparen.vim delete mode 100644 share/vim/vim73/plugin/netrwPlugin.vim delete mode 100644 share/vim/vim73/plugin/tarPlugin.vim delete mode 100644 share/vim/vim73/plugin/tohtml.vim delete mode 100644 share/vim/vim73/plugin/vimballPlugin.vim delete mode 100644 share/vim/vim73/plugin/zipPlugin.vim delete mode 100644 share/vim/vim73/scripts.vim delete mode 100644 share/vim/vim73/spell/br/br_FR.diff delete mode 100644 share/vim/vim73/spell/br/main.aap delete mode 100644 share/vim/vim73/spell/en.utf-8.spl delete mode 100644 share/vim/vim73/spell/en.utf-8.sug delete mode 100644 share/vim/vim73/spell/es/es_MX.diff delete mode 100644 share/vim/vim73/spell/ga/ga_IE.diff delete mode 100644 share/vim/vim73/spell/gd/gd_GB.diff delete mode 100644 share/vim/vim73/spell/hu/main.aap delete mode 100644 share/vim/vim73/spell/sv/sv_SE.diff delete mode 100644 share/vim/vim73/synmenu.vim delete mode 100644 share/vim/vim73/syntax/2html.vim delete mode 100644 share/vim/vim73/syntax/abap.vim delete mode 100644 share/vim/vim73/syntax/abel.vim delete mode 100644 share/vim/vim73/syntax/ada.vim delete mode 100644 share/vim/vim73/syntax/art.vim delete mode 100644 share/vim/vim73/syntax/asm.vim delete mode 100644 share/vim/vim73/syntax/asn.vim delete mode 100644 share/vim/vim73/syntax/autoit.vim delete mode 100644 share/vim/vim73/syntax/automake.vim delete mode 100644 share/vim/vim73/syntax/awk.vim delete mode 100644 share/vim/vim73/syntax/ayacc.vim delete mode 100644 share/vim/vim73/syntax/basic.vim delete mode 100644 share/vim/vim73/syntax/bc.vim delete mode 100644 share/vim/vim73/syntax/bib.vim delete mode 100644 share/vim/vim73/syntax/bindzone.vim delete mode 100644 share/vim/vim73/syntax/blank.vim delete mode 100644 share/vim/vim73/syntax/bzr.vim delete mode 100644 share/vim/vim73/syntax/c.vim delete mode 100644 share/vim/vim73/syntax/cfg.vim delete mode 100644 share/vim/vim73/syntax/cl.vim delete mode 100644 share/vim/vim73/syntax/clean.vim delete mode 100644 share/vim/vim73/syntax/clipper.vim delete mode 100644 share/vim/vim73/syntax/cmake.vim delete mode 100644 share/vim/vim73/syntax/cpp.vim delete mode 100644 share/vim/vim73/syntax/crontab.vim delete mode 100644 share/vim/vim73/syntax/csc.vim delete mode 100644 share/vim/vim73/syntax/css.vim delete mode 100644 share/vim/vim73/syntax/cucumber.vim delete mode 100644 share/vim/vim73/syntax/cupl.vim delete mode 100644 share/vim/vim73/syntax/cweb.vim delete mode 100644 share/vim/vim73/syntax/d.vim delete mode 100644 share/vim/vim73/syntax/datascript.vim delete mode 100644 share/vim/vim73/syntax/debchangelog.vim delete mode 100644 share/vim/vim73/syntax/debcontrol.vim delete mode 100644 share/vim/vim73/syntax/debsources.vim delete mode 100644 share/vim/vim73/syntax/diff.vim delete mode 100644 share/vim/vim73/syntax/dircolors.vim delete mode 100644 share/vim/vim73/syntax/django.vim delete mode 100644 share/vim/vim73/syntax/docbk.vim delete mode 100644 share/vim/vim73/syntax/dosini.vim delete mode 100644 share/vim/vim73/syntax/dot.vim delete mode 100644 share/vim/vim73/syntax/doxygen.vim delete mode 100644 share/vim/vim73/syntax/dtd.vim delete mode 100644 share/vim/vim73/syntax/eiffel.vim delete mode 100644 share/vim/vim73/syntax/erlang.vim delete mode 100644 share/vim/vim73/syntax/eruby.vim delete mode 100644 share/vim/vim73/syntax/esmtprc.vim delete mode 100644 share/vim/vim73/syntax/expect.vim delete mode 100644 share/vim/vim73/syntax/fasm.vim delete mode 100644 share/vim/vim73/syntax/forth.vim delete mode 100644 share/vim/vim73/syntax/fortran.vim delete mode 100644 share/vim/vim73/syntax/fstab.vim delete mode 100644 share/vim/vim73/syntax/fvwm.vim delete mode 100644 share/vim/vim73/syntax/gdb.vim delete mode 100644 share/vim/vim73/syntax/gdmo.vim delete mode 100644 share/vim/vim73/syntax/gitcommit.vim delete mode 100644 share/vim/vim73/syntax/gitrebase.vim delete mode 100644 share/vim/vim73/syntax/gp.vim delete mode 100644 share/vim/vim73/syntax/gpg.vim delete mode 100644 share/vim/vim73/syntax/groovy.vim delete mode 100644 share/vim/vim73/syntax/group.vim delete mode 100644 share/vim/vim73/syntax/gsp.vim delete mode 100644 share/vim/vim73/syntax/hb.vim delete mode 100644 share/vim/vim73/syntax/help.vim delete mode 100644 share/vim/vim73/syntax/html.vim delete mode 100644 share/vim/vim73/syntax/idl.vim delete mode 100644 share/vim/vim73/syntax/idlang.vim delete mode 100644 share/vim/vim73/syntax/ist.vim delete mode 100644 share/vim/vim73/syntax/jam.vim delete mode 100644 share/vim/vim73/syntax/java.vim delete mode 100644 share/vim/vim73/syntax/javacc.vim delete mode 100644 share/vim/vim73/syntax/javascript.vim delete mode 100644 share/vim/vim73/syntax/kwt.vim delete mode 100644 share/vim/vim73/syntax/lex.vim delete mode 100644 share/vim/vim73/syntax/liquid.vim delete mode 100644 share/vim/vim73/syntax/lisp.vim delete mode 100644 share/vim/vim73/syntax/logindefs.vim delete mode 100644 share/vim/vim73/syntax/logtalk.vim delete mode 100644 share/vim/vim73/syntax/lout.vim delete mode 100644 share/vim/vim73/syntax/lpc.vim delete mode 100644 share/vim/vim73/syntax/lsl.vim delete mode 100644 share/vim/vim73/syntax/lua.vim delete mode 100644 share/vim/vim73/syntax/lynx.vim delete mode 100644 share/vim/vim73/syntax/mail.vim delete mode 100644 share/vim/vim73/syntax/mailcap.vim delete mode 100644 share/vim/vim73/syntax/make.vim delete mode 100644 share/vim/vim73/syntax/markdown.vim delete mode 100644 share/vim/vim73/syntax/masm.vim delete mode 100644 share/vim/vim73/syntax/matlab.vim delete mode 100644 share/vim/vim73/syntax/mma.vim delete mode 100644 share/vim/vim73/syntax/mmix.vim delete mode 100644 share/vim/vim73/syntax/monk.vim delete mode 100644 share/vim/vim73/syntax/mrxvtrc.vim delete mode 100644 share/vim/vim73/syntax/msidl.vim delete mode 100644 share/vim/vim73/syntax/muttrc.vim delete mode 100644 share/vim/vim73/syntax/nasm.vim delete mode 100644 share/vim/vim73/syntax/natural.vim delete mode 100644 share/vim/vim73/syntax/netrw.vim delete mode 100644 share/vim/vim73/syntax/nroff.vim delete mode 100644 share/vim/vim73/syntax/objc.vim delete mode 100644 share/vim/vim73/syntax/ocaml.vim delete mode 100644 share/vim/vim73/syntax/opl.vim delete mode 100644 share/vim/vim73/syntax/pamconf.vim delete mode 100644 share/vim/vim73/syntax/perl.vim delete mode 100644 share/vim/vim73/syntax/perl6.vim delete mode 100644 share/vim/vim73/syntax/pf.vim delete mode 100644 share/vim/vim73/syntax/pfmain.vim delete mode 100644 share/vim/vim73/syntax/php.vim delete mode 100644 share/vim/vim73/syntax/pine.vim delete mode 100644 share/vim/vim73/syntax/po.vim delete mode 100644 share/vim/vim73/syntax/pod.vim delete mode 100644 share/vim/vim73/syntax/pov.vim delete mode 100644 share/vim/vim73/syntax/povini.vim delete mode 100644 share/vim/vim73/syntax/progress.vim delete mode 100644 share/vim/vim73/syntax/prolog.vim delete mode 100644 share/vim/vim73/syntax/python.vim delete mode 100644 share/vim/vim73/syntax/r.vim delete mode 100644 share/vim/vim73/syntax/ratpoison.vim delete mode 100644 share/vim/vim73/syntax/rcs.vim delete mode 100644 share/vim/vim73/syntax/readline.vim delete mode 100644 share/vim/vim73/syntax/resolv.vim delete mode 100644 share/vim/vim73/syntax/reva.vim delete mode 100644 share/vim/vim73/syntax/rexx.vim delete mode 100644 share/vim/vim73/syntax/rhelp.vim delete mode 100644 share/vim/vim73/syntax/rpl.vim delete mode 100644 share/vim/vim73/syntax/rst.vim delete mode 100644 share/vim/vim73/syntax/ruby.vim delete mode 100644 share/vim/vim73/syntax/sas.vim delete mode 100644 share/vim/vim73/syntax/sass.vim delete mode 100644 share/vim/vim73/syntax/scheme.vim delete mode 100644 share/vim/vim73/syntax/sd.vim delete mode 100644 share/vim/vim73/syntax/sdl.vim delete mode 100644 share/vim/vim73/syntax/sendpr.vim delete mode 100644 share/vim/vim73/syntax/sgmldecl.vim delete mode 100644 share/vim/vim73/syntax/sgmllnx.vim delete mode 100644 share/vim/vim73/syntax/sh.vim delete mode 100644 share/vim/vim73/syntax/sisu.vim delete mode 100644 share/vim/vim73/syntax/slice.vim delete mode 100644 share/vim/vim73/syntax/smil.vim delete mode 100644 share/vim/vim73/syntax/snnspat.vim delete mode 100644 share/vim/vim73/syntax/spice.vim delete mode 100644 share/vim/vim73/syntax/spup.vim delete mode 100644 share/vim/vim73/syntax/sqlanywhere.vim delete mode 100644 share/vim/vim73/syntax/sqr.vim delete mode 100644 share/vim/vim73/syntax/sshconfig.vim delete mode 100644 share/vim/vim73/syntax/sshdconfig.vim delete mode 100644 share/vim/vim73/syntax/st.vim delete mode 100644 share/vim/vim73/syntax/sudoers.vim delete mode 100644 share/vim/vim73/syntax/svn.vim delete mode 100644 share/vim/vim73/syntax/synload.vim delete mode 100644 share/vim/vim73/syntax/sysctl.vim delete mode 100644 share/vim/vim73/syntax/taskdata.vim delete mode 100644 share/vim/vim73/syntax/taskedit.vim delete mode 100644 share/vim/vim73/syntax/tasm.vim delete mode 100644 share/vim/vim73/syntax/tex.vim delete mode 100644 share/vim/vim73/syntax/tidy.vim delete mode 100644 share/vim/vim73/syntax/tsalt.vim delete mode 100644 share/vim/vim73/syntax/uil.vim delete mode 100644 share/vim/vim73/syntax/valgrind.vim delete mode 100644 share/vim/vim73/syntax/verilog.vim delete mode 100644 share/vim/vim73/syntax/vhdl.vim delete mode 100644 share/vim/vim73/syntax/vim.vim delete mode 100644 share/vim/vim73/syntax/viminfo.vim delete mode 100644 share/vim/vim73/syntax/wget.vim delete mode 100644 share/vim/vim73/syntax/xdefaults.vim delete mode 100644 share/vim/vim73/syntax/xf86conf.vim delete mode 100644 share/vim/vim73/syntax/xml.vim delete mode 100644 share/vim/vim73/syntax/xpm2.vim delete mode 100644 share/vim/vim73/syntax/xquery.vim delete mode 100644 share/vim/vim73/syntax/xs.vim delete mode 100644 share/vim/vim73/syntax/yacc.vim delete mode 100644 share/vim/vim73/syntax/yaml.vim delete mode 100644 share/vim/vim73/tools/ccfilter_README.txt delete mode 100644 share/vim/vim73/tools/efm_perl.pl delete mode 100644 share/vim/vim73/tools/vim_vs_net.cmd delete mode 100644 share/vim/vim73/tutor/Makefile delete mode 100644 share/vim/vim73/tutor/tutor delete mode 100644 share/vim/vim73/tutor/tutor.bj delete mode 100644 share/vim/vim73/tutor/tutor.bj.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.de delete mode 100644 share/vim/vim73/tutor/tutor.de.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.eo delete mode 100644 share/vim/vim73/tutor/tutor.eo.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.fr delete mode 100644 share/vim/vim73/tutor/tutor.fr.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.hr delete mode 100644 share/vim/vim73/tutor/tutor.hr.cp1250 delete mode 100644 share/vim/vim73/tutor/tutor.hr.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.hu delete mode 100644 share/vim/vim73/tutor/tutor.hu.cp1250 delete mode 100644 share/vim/vim73/tutor/tutor.hu.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.ja.euc delete mode 100644 share/vim/vim73/tutor/tutor.ja.sjis delete mode 100644 share/vim/vim73/tutor/tutor.ja.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.ko.euc delete mode 100644 share/vim/vim73/tutor/tutor.ko.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.nb delete mode 100644 share/vim/vim73/tutor/tutor.nb.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.no delete mode 100644 share/vim/vim73/tutor/tutor.no.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.sk delete mode 100644 share/vim/vim73/tutor/tutor.sk.cp1250 delete mode 100644 share/vim/vim73/tutor/tutor.sk.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.utf-8 delete mode 100644 share/vim/vim73/tutor/tutor.vim delete mode 100644 share/vim/vim73/tutor/tutor.zh.euc delete mode 100644 share/vim/vim73/vim.exe delete mode 100644 share/vim/vim73/vimlogo.eps delete mode 100644 share/vim/vim73/vimrc_example.vim rename share/vim/{vim73 => vim74}/autoload/README.txt (100%) create mode 100644 share/vim/vim74/autoload/ada.vim rename share/vim/{vim73 => vim74}/autoload/adacomplete.vim (100%) create mode 100644 share/vim/vim74/autoload/ccomplete.vim create mode 100644 share/vim/vim74/autoload/clojurecomplete.vim rename share/vim/{vim73 => vim74}/autoload/csscomplete.vim (100%) rename share/vim/{vim73 => vim74}/autoload/decada.vim (100%) create mode 100644 share/vim/vim74/autoload/getscript.vim rename share/vim/{vim73 => vim74}/autoload/gnat.vim (100%) rename share/vim/{vim73 => vim74}/autoload/gzip.vim (100%) create mode 100644 share/vim/vim74/autoload/htmlcomplete.vim rename share/vim/{vim73 => vim74}/autoload/javascriptcomplete.vim (100%) create mode 100644 share/vim/vim74/autoload/netrw.vim create mode 100644 share/vim/vim74/autoload/netrwFileHandlers.vim create mode 100644 share/vim/vim74/autoload/netrwSettings.vim rename share/vim/{vim73 => vim74}/autoload/paste.vim (100%) create mode 100644 share/vim/vim74/autoload/phpcomplete.vim rename share/vim/{vim73 => vim74}/autoload/python3complete.vim (100%) rename share/vim/{vim73 => vim74}/autoload/pythoncomplete.vim (100%) create mode 100644 share/vim/vim74/autoload/rubycomplete.vim create mode 100644 share/vim/vim74/autoload/spellfile.vim create mode 100644 share/vim/vim74/autoload/sqlcomplete.vim create mode 100644 share/vim/vim74/autoload/syntaxcomplete.vim create mode 100644 share/vim/vim74/autoload/tar.vim create mode 100644 share/vim/vim74/autoload/tohtml.vim create mode 100644 share/vim/vim74/autoload/vimball.vim rename share/vim/{vim73 => vim74}/autoload/xml/html32.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/html401f.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/html401s.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/html401t.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/html40f.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/html40s.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/html40t.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/xhtml10f.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/xhtml10s.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/xhtml10t.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/xhtml11.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/xsd.vim (100%) rename share/vim/{vim73 => vim74}/autoload/xml/xsl.vim (100%) create mode 100644 share/vim/vim74/autoload/xmlcomplete.vim create mode 100644 share/vim/vim74/autoload/zip.vim rename share/vim/{vim73 => vim74}/bugreport.vim (100%) rename share/vim/{vim73 => vim74}/colors/README.txt (100%) rename share/vim/{vim73 => vim74}/colors/blue.vim (100%) rename share/vim/{vim73 => vim74}/colors/darkblue.vim (100%) rename share/vim/{vim73 => vim74}/colors/default.vim (100%) rename share/vim/{vim73 => vim74}/colors/delek.vim (100%) rename share/vim/{vim73 => vim74}/colors/desert.vim (100%) rename share/vim/{vim73 => vim74}/colors/elflord.vim (100%) rename share/vim/{vim73 => vim74}/colors/evening.vim (100%) create mode 100644 share/vim/vim74/colors/koehler.vim rename share/vim/{vim73 => vim74}/colors/morning.vim (100%) rename share/vim/{vim73 => vim74}/colors/murphy.vim (100%) rename share/vim/{vim73 => vim74}/colors/pablo.vim (100%) rename share/vim/{vim73 => vim74}/colors/peachpuff.vim (100%) create mode 100644 share/vim/vim74/colors/ron.vim rename share/vim/{vim73 => vim74}/colors/shine.vim (100%) rename share/vim/{vim73 => vim74}/colors/slate.vim (100%) rename share/vim/{vim73 => vim74}/colors/torte.vim (100%) rename share/vim/{vim73 => vim74}/colors/zellner.vim (100%) rename share/vim/{vim73 => vim74}/compiler/README.txt (100%) rename share/vim/{vim73 => vim74}/compiler/ant.vim (100%) rename share/vim/{vim73 => vim74}/compiler/bcc.vim (100%) rename share/vim/{vim73 => vim74}/compiler/bdf.vim (100%) create mode 100644 share/vim/vim74/compiler/checkstyle.vim create mode 100644 share/vim/vim74/compiler/cs.vim rename share/vim/{vim73 => vim74}/compiler/cucumber.vim (100%) create mode 100644 share/vim/vim74/compiler/decada.vim rename share/vim/{vim73 => vim74}/compiler/dot.vim (100%) create mode 100644 share/vim/vim74/compiler/erlang.vim create mode 100644 share/vim/vim74/compiler/eruby.vim rename share/vim/{vim73 => vim74}/compiler/fortran_F.vim (100%) rename share/vim/{vim73 => vim74}/compiler/fortran_cv.vim (100%) rename share/vim/{vim73 => vim74}/compiler/fortran_elf90.vim (100%) rename share/vim/{vim73 => vim74}/compiler/fortran_g77.vim (100%) rename share/vim/{vim73 => vim74}/compiler/fortran_lf95.vim (100%) rename share/vim/{vim73 => vim74}/compiler/fpc.vim (100%) create mode 100644 share/vim/vim74/compiler/g95.vim create mode 100644 share/vim/vim74/compiler/gcc.vim create mode 100644 share/vim/vim74/compiler/gfortran.vim create mode 100644 share/vim/vim74/compiler/gnat.vim create mode 100644 share/vim/vim74/compiler/haml.vim create mode 100644 share/vim/vim74/compiler/hp_acc.vim rename share/vim/{vim73 => vim74}/compiler/icc.vim (100%) create mode 100644 share/vim/vim74/compiler/ifort.vim create mode 100644 share/vim/vim74/compiler/intel.vim create mode 100644 share/vim/vim74/compiler/irix5_c.vim create mode 100644 share/vim/vim74/compiler/irix5_cpp.vim create mode 100644 share/vim/vim74/compiler/javac.vim rename share/vim/{vim73 => vim74}/compiler/jikes.vim (100%) create mode 100644 share/vim/vim74/compiler/mcs.vim create mode 100644 share/vim/vim74/compiler/mips_c.vim create mode 100644 share/vim/vim74/compiler/mipspro_c89.vim create mode 100644 share/vim/vim74/compiler/mipspro_cpp.vim rename share/vim/{vim73 => vim74}/compiler/modelsim_vcom.vim (100%) create mode 100644 share/vim/vim74/compiler/msbuild.vim rename share/vim/{vim73 => vim74}/compiler/msvc.vim (100%) rename share/vim/{vim73 => vim74}/compiler/neato.vim (100%) create mode 100644 share/vim/vim74/compiler/ocaml.vim rename share/vim/{vim73 => vim74}/compiler/onsgmls.vim (100%) rename share/vim/{vim73 => vim74}/compiler/pbx.vim (100%) rename share/vim/{vim73 => vim74}/compiler/perl.vim (100%) create mode 100644 share/vim/vim74/compiler/php.vim rename share/vim/{vim73 => vim74}/compiler/pyunit.vim (100%) create mode 100644 share/vim/vim74/compiler/rake.vim create mode 100644 share/vim/vim74/compiler/rspec.vim create mode 100644 share/vim/vim74/compiler/rst.vim create mode 100644 share/vim/vim74/compiler/ruby.vim create mode 100644 share/vim/vim74/compiler/rubyunit.vim create mode 100644 share/vim/vim74/compiler/sass.vim create mode 100644 share/vim/vim74/compiler/se.vim rename share/vim/{vim73 => vim74}/compiler/splint.vim (100%) create mode 100644 share/vim/vim74/compiler/tcl.vim create mode 100644 share/vim/vim74/compiler/tex.vim create mode 100644 share/vim/vim74/compiler/tidy.vim create mode 100644 share/vim/vim74/compiler/xbuild.vim create mode 100644 share/vim/vim74/compiler/xmllint.vim rename share/vim/{vim73 => vim74}/compiler/xmlwf.vim (100%) rename share/vim/{vim73 => vim74}/delmenu.vim (100%) rename share/vim/{vim73 => vim74}/doc.info (100%) rename share/vim/{vim73 => vim74}/doc/Makefile (100%) create mode 100644 share/vim/vim74/doc/arabic.txt create mode 100644 share/vim/vim74/doc/autocmd.txt create mode 100644 share/vim/vim74/doc/change.txt create mode 100644 share/vim/vim74/doc/cmdline.txt create mode 100644 share/vim/vim74/doc/debug.txt create mode 100644 share/vim/vim74/doc/debugger.txt create mode 100644 share/vim/vim74/doc/develop.txt create mode 100644 share/vim/vim74/doc/diff.txt create mode 100644 share/vim/vim74/doc/digraph.txt rename share/vim/{vim73 => vim74}/doc/doctags.c (100%) create mode 100644 share/vim/vim74/doc/editing.txt create mode 100644 share/vim/vim74/doc/eval.txt create mode 100644 share/vim/vim74/doc/evim-fr.1 create mode 100644 share/vim/vim74/doc/evim-fr.UTF-8.1 rename share/vim/{vim73 => vim74}/doc/evim-it.1 (100%) rename share/vim/{vim73 => vim74}/doc/evim-it.UTF-8.1 (100%) create mode 100644 share/vim/vim74/doc/evim-ja.UTF-8.1 rename share/vim/{vim73 => vim74}/doc/evim-pl.1 (100%) rename share/vim/{vim73 => vim74}/doc/evim-pl.UTF-8.1 (100%) rename share/vim/{vim73 => vim74}/doc/evim-ru.1 (100%) rename share/vim/{vim73 => vim74}/doc/evim-ru.UTF-8.1 (100%) rename share/vim/{vim73 => vim74}/doc/evim.1 (100%) create mode 100644 share/vim/vim74/doc/farsi.txt create mode 100644 share/vim/vim74/doc/filetype.txt create mode 100644 share/vim/vim74/doc/fold.txt create mode 100644 share/vim/vim74/doc/ft_ada.txt create mode 100644 share/vim/vim74/doc/ft_sql.txt create mode 100644 share/vim/vim74/doc/gui.txt create mode 100644 share/vim/vim74/doc/gui_w16.txt create mode 100644 share/vim/vim74/doc/gui_w32.txt create mode 100644 share/vim/vim74/doc/gui_x11.txt create mode 100644 share/vim/vim74/doc/hangulin.txt create mode 100644 share/vim/vim74/doc/hebrew.txt create mode 100644 share/vim/vim74/doc/help.txt rename share/vim/{vim73 => vim74}/doc/help.txt.info (100%) create mode 100644 share/vim/vim74/doc/helphelp.txt create mode 100644 share/vim/vim74/doc/howto.txt create mode 100644 share/vim/vim74/doc/if_cscop.txt create mode 100644 share/vim/vim74/doc/if_lua.txt create mode 100644 share/vim/vim74/doc/if_mzsch.txt create mode 100644 share/vim/vim74/doc/if_ole.txt create mode 100644 share/vim/vim74/doc/if_perl.txt create mode 100644 share/vim/vim74/doc/if_pyth.txt create mode 100644 share/vim/vim74/doc/if_ruby.txt create mode 100644 share/vim/vim74/doc/if_sniff.txt create mode 100644 share/vim/vim74/doc/if_tcl.txt create mode 100644 share/vim/vim74/doc/indent.txt create mode 100644 share/vim/vim74/doc/index.txt create mode 100644 share/vim/vim74/doc/insert.txt create mode 100644 share/vim/vim74/doc/intro.txt rename share/vim/{vim73 => vim74}/doc/makehtml.awk (100%) rename share/vim/{vim73 => vim74}/doc/maketags.awk (100%) create mode 100644 share/vim/vim74/doc/map.txt create mode 100644 share/vim/vim74/doc/mbyte.txt create mode 100644 share/vim/vim74/doc/message.txt create mode 100644 share/vim/vim74/doc/mlang.txt create mode 100644 share/vim/vim74/doc/motion.txt create mode 100644 share/vim/vim74/doc/netbeans.txt create mode 100644 share/vim/vim74/doc/options.txt create mode 100644 share/vim/vim74/doc/os_390.txt create mode 100644 share/vim/vim74/doc/os_amiga.txt create mode 100644 share/vim/vim74/doc/os_beos.txt create mode 100644 share/vim/vim74/doc/os_dos.txt create mode 100644 share/vim/vim74/doc/os_mac.txt create mode 100644 share/vim/vim74/doc/os_mint.txt create mode 100644 share/vim/vim74/doc/os_msdos.txt create mode 100644 share/vim/vim74/doc/os_os2.txt create mode 100644 share/vim/vim74/doc/os_qnx.txt create mode 100644 share/vim/vim74/doc/os_risc.txt create mode 100644 share/vim/vim74/doc/os_unix.txt create mode 100644 share/vim/vim74/doc/os_vms.txt create mode 100644 share/vim/vim74/doc/os_win32.txt create mode 100644 share/vim/vim74/doc/pattern.txt create mode 100644 share/vim/vim74/doc/pi_getscript.txt create mode 100644 share/vim/vim74/doc/pi_gzip.txt create mode 100644 share/vim/vim74/doc/pi_netrw.txt create mode 100644 share/vim/vim74/doc/pi_paren.txt create mode 100644 share/vim/vim74/doc/pi_spec.txt create mode 100644 share/vim/vim74/doc/pi_tar.txt create mode 100644 share/vim/vim74/doc/pi_vimball.txt create mode 100644 share/vim/vim74/doc/pi_zip.txt create mode 100644 share/vim/vim74/doc/print.txt create mode 100644 share/vim/vim74/doc/quickfix.txt create mode 100644 share/vim/vim74/doc/quickref.txt create mode 100644 share/vim/vim74/doc/quotes.txt create mode 100644 share/vim/vim74/doc/recover.txt create mode 100644 share/vim/vim74/doc/remote.txt create mode 100644 share/vim/vim74/doc/repeat.txt create mode 100644 share/vim/vim74/doc/rileft.txt create mode 100644 share/vim/vim74/doc/russian.txt create mode 100644 share/vim/vim74/doc/scroll.txt create mode 100644 share/vim/vim74/doc/sign.txt create mode 100644 share/vim/vim74/doc/spell.txt create mode 100644 share/vim/vim74/doc/sponsor.txt create mode 100644 share/vim/vim74/doc/starting.txt create mode 100644 share/vim/vim74/doc/syntax.txt create mode 100644 share/vim/vim74/doc/tabpage.txt create mode 100644 share/vim/vim74/doc/tags create mode 100644 share/vim/vim74/doc/tagsrch.txt create mode 100644 share/vim/vim74/doc/term.txt create mode 100644 share/vim/vim74/doc/tips.txt create mode 100644 share/vim/vim74/doc/todo.txt create mode 100644 share/vim/vim74/doc/uganda.txt create mode 100644 share/vim/vim74/doc/undo.txt create mode 100644 share/vim/vim74/doc/usr_01.txt create mode 100644 share/vim/vim74/doc/usr_02.txt create mode 100644 share/vim/vim74/doc/usr_03.txt create mode 100644 share/vim/vim74/doc/usr_04.txt create mode 100644 share/vim/vim74/doc/usr_05.txt create mode 100644 share/vim/vim74/doc/usr_06.txt create mode 100644 share/vim/vim74/doc/usr_07.txt create mode 100644 share/vim/vim74/doc/usr_08.txt create mode 100644 share/vim/vim74/doc/usr_09.txt create mode 100644 share/vim/vim74/doc/usr_10.txt create mode 100644 share/vim/vim74/doc/usr_11.txt create mode 100644 share/vim/vim74/doc/usr_12.txt create mode 100644 share/vim/vim74/doc/usr_20.txt create mode 100644 share/vim/vim74/doc/usr_21.txt create mode 100644 share/vim/vim74/doc/usr_22.txt create mode 100644 share/vim/vim74/doc/usr_23.txt create mode 100644 share/vim/vim74/doc/usr_24.txt create mode 100644 share/vim/vim74/doc/usr_25.txt create mode 100644 share/vim/vim74/doc/usr_26.txt create mode 100644 share/vim/vim74/doc/usr_27.txt create mode 100644 share/vim/vim74/doc/usr_28.txt create mode 100644 share/vim/vim74/doc/usr_29.txt create mode 100644 share/vim/vim74/doc/usr_30.txt create mode 100644 share/vim/vim74/doc/usr_31.txt create mode 100644 share/vim/vim74/doc/usr_32.txt create mode 100644 share/vim/vim74/doc/usr_40.txt create mode 100644 share/vim/vim74/doc/usr_41.txt create mode 100644 share/vim/vim74/doc/usr_42.txt create mode 100644 share/vim/vim74/doc/usr_43.txt create mode 100644 share/vim/vim74/doc/usr_44.txt create mode 100644 share/vim/vim74/doc/usr_45.txt create mode 100644 share/vim/vim74/doc/usr_90.txt create mode 100644 share/vim/vim74/doc/usr_toc.txt create mode 100644 share/vim/vim74/doc/various.txt create mode 100644 share/vim/vim74/doc/version4.txt create mode 100644 share/vim/vim74/doc/version5.txt create mode 100644 share/vim/vim74/doc/version6.txt create mode 100644 share/vim/vim74/doc/version7.txt create mode 100644 share/vim/vim74/doc/vi_diff.txt create mode 100644 share/vim/vim74/doc/vim-de.1 create mode 100644 share/vim/vim74/doc/vim-de.UTF-8.1 create mode 100644 share/vim/vim74/doc/vim-fr.1 create mode 100644 share/vim/vim74/doc/vim-fr.UTF-8.1 rename share/vim/{vim73 => vim74}/doc/vim-it.1 (100%) rename share/vim/{vim73 => vim74}/doc/vim-it.UTF-8.1 (100%) create mode 100644 share/vim/vim74/doc/vim-ja.UTF-8.1 rename share/vim/{vim73 => vim74}/doc/vim-pl.1 (100%) rename share/vim/{vim73 => vim74}/doc/vim-pl.UTF-8.1 (100%) rename share/vim/{vim73 => vim74}/doc/vim-ru.1 (100%) rename share/vim/{vim73 => vim74}/doc/vim-ru.UTF-8.1 (100%) rename share/vim/{vim73 => vim74}/doc/vim.1 (100%) rename share/vim/{vim73 => vim74}/doc/vim.man (100%) rename share/vim/{vim73 => vim74}/doc/vim.man.info (100%) create mode 100644 share/vim/vim74/doc/vim2html.pl create mode 100644 share/vim/vim74/doc/vimdiff-fr.1 create mode 100644 share/vim/vim74/doc/vimdiff-fr.UTF-8.1 rename share/vim/{vim73 => vim74}/doc/vimdiff-it.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimdiff-it.UTF-8.1 (100%) create mode 100644 share/vim/vim74/doc/vimdiff-ja.UTF-8.1 rename share/vim/{vim73 => vim74}/doc/vimdiff-pl.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimdiff-pl.UTF-8.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimdiff-ru.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimdiff-ru.UTF-8.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimdiff.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimdiff.man (100%) create mode 100644 share/vim/vim74/doc/vimtutor-fr.1 create mode 100644 share/vim/vim74/doc/vimtutor-fr.UTF-8.1 rename share/vim/{vim73 => vim74}/doc/vimtutor-it.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimtutor-it.UTF-8.1 (100%) create mode 100644 share/vim/vim74/doc/vimtutor-ja.UTF-8.1 rename share/vim/{vim73 => vim74}/doc/vimtutor-pl.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimtutor-pl.UTF-8.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimtutor-ru.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimtutor-ru.UTF-8.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimtutor.1 (100%) rename share/vim/{vim73 => vim74}/doc/vimtutor.man (100%) create mode 100644 share/vim/vim74/doc/visual.txt create mode 100644 share/vim/vim74/doc/windows.txt create mode 100644 share/vim/vim74/doc/workshop.txt create mode 100644 share/vim/vim74/doc/xxd-fr.1 create mode 100644 share/vim/vim74/doc/xxd-fr.UTF-8.1 rename share/vim/{vim73 => vim74}/doc/xxd-it.1 (100%) rename share/vim/{vim73 => vim74}/doc/xxd-it.UTF-8.1 (100%) create mode 100644 share/vim/vim74/doc/xxd-ja.UTF-8.1 rename share/vim/{vim73 => vim74}/doc/xxd-pl.1 (100%) rename share/vim/{vim73 => vim74}/doc/xxd-pl.UTF-8.1 (100%) rename share/vim/{vim73 => vim74}/doc/xxd-ru.1 (100%) rename share/vim/{vim73 => vim74}/doc/xxd-ru.UTF-8.1 (100%) rename share/vim/{vim73 => vim74}/doc/xxd.1 (100%) rename share/vim/{vim73 => vim74}/doc/xxd.man (100%) rename share/vim/{vim73 => vim74}/evim.vim (100%) create mode 100644 share/vim/vim74/filetype.vim rename share/vim/{vim73 => vim74}/ftoff.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/README.txt (100%) rename share/vim/{vim73 => vim74}/ftplugin/a2ps.vim (100%) create mode 100644 share/vim/vim74/ftplugin/aap.vim create mode 100644 share/vim/vim74/ftplugin/abap.vim create mode 100644 share/vim/vim74/ftplugin/abaqus.vim create mode 100644 share/vim/vim74/ftplugin/ada.vim rename share/vim/{vim73 => vim74}/ftplugin/alsaconf.vim (100%) create mode 100644 share/vim/vim74/ftplugin/ant.vim rename share/vim/{vim73 => vim74}/ftplugin/arch.vim (100%) create mode 100644 share/vim/vim74/ftplugin/art.vim create mode 100644 share/vim/vim74/ftplugin/aspvbs.vim rename share/vim/{vim73 => vim74}/ftplugin/automake.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/bdf.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/bst.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/btm.vim (100%) create mode 100644 share/vim/vim74/ftplugin/c.vim rename share/vim/{vim73 => vim74}/ftplugin/calendar.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/cdrdaoconf.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/ch.vim (100%) create mode 100644 share/vim/vim74/ftplugin/changelog.vim create mode 100644 share/vim/vim74/ftplugin/clojure.vim rename share/vim/{vim73 => vim74}/ftplugin/cobol.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/conf.vim (100%) create mode 100644 share/vim/vim74/ftplugin/config.vim rename share/vim/{vim73 => vim74}/ftplugin/context.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/cpp.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/crm.vim (100%) create mode 100644 share/vim/vim74/ftplugin/cs.vim create mode 100644 share/vim/vim74/ftplugin/csc.vim create mode 100644 share/vim/vim74/ftplugin/csh.vim rename share/vim/{vim73 => vim74}/ftplugin/css.vim (100%) create mode 100644 share/vim/vim74/ftplugin/cucumber.vim rename share/vim/{vim73 => vim74}/ftplugin/cvsrc.vim (100%) create mode 100644 share/vim/vim74/ftplugin/debchangelog.vim rename share/vim/{vim73 => vim74}/ftplugin/debcontrol.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/denyhosts.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/dictconf.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/dictdconf.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/diff.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/dircolors.vim (100%) create mode 100644 share/vim/vim74/ftplugin/docbk.vim create mode 100644 share/vim/vim74/ftplugin/dosbatch.vim rename share/vim/{vim73 => vim74}/ftplugin/dosini.vim (100%) create mode 100644 share/vim/vim74/ftplugin/dtd.vim rename share/vim/{vim73 => vim74}/ftplugin/dtrace.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/elinks.vim (100%) create mode 100644 share/vim/vim74/ftplugin/erlang.vim create mode 100644 share/vim/vim74/ftplugin/eruby.vim rename share/vim/{vim73 => vim74}/ftplugin/eterm.vim (100%) create mode 100644 share/vim/vim74/ftplugin/falcon.vim rename share/vim/{vim73 => vim74}/ftplugin/fetchmail.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/flexwiki.vim (100%) create mode 100644 share/vim/vim74/ftplugin/fortran.vim rename share/vim/{vim73 => vim74}/ftplugin/framescript.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/fvwm.vim (100%) create mode 100644 share/vim/vim74/ftplugin/git.vim create mode 100644 share/vim/vim74/ftplugin/gitcommit.vim rename share/vim/{vim73 => vim74}/ftplugin/gitconfig.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/gitrebase.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/gitsendemail.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/gpg.vim (100%) create mode 100644 share/vim/vim74/ftplugin/gprof.vim rename share/vim/{vim73 => vim74}/ftplugin/group.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/grub.vim (100%) create mode 100644 share/vim/vim74/ftplugin/haml.vim create mode 100644 share/vim/vim74/ftplugin/hamster.vim rename share/vim/{vim73 => vim74}/ftplugin/haskell.vim (100%) create mode 100644 share/vim/vim74/ftplugin/help.vim rename share/vim/{vim73 => vim74}/ftplugin/hostconf.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/hostsaccess.vim (100%) create mode 100644 share/vim/vim74/ftplugin/html.vim rename share/vim/{vim73 => vim74}/ftplugin/htmldjango.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/indent.vim (100%) create mode 100644 share/vim/vim74/ftplugin/initex.vim create mode 100644 share/vim/vim74/ftplugin/ishd.vim create mode 100644 share/vim/vim74/ftplugin/java.vim rename share/vim/{vim73 => vim74}/ftplugin/javascript.vim (100%) create mode 100644 share/vim/vim74/ftplugin/jsp.vim rename share/vim/{vim73 => vim74}/ftplugin/kconfig.vim (100%) create mode 100644 share/vim/vim74/ftplugin/kwt.vim rename share/vim/{vim73 => vim74}/ftplugin/ld.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/lftp.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/libao.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/limits.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/liquid.vim (100%) create mode 100644 share/vim/vim74/ftplugin/lisp.vim create mode 100644 share/vim/vim74/ftplugin/logcheck.vim rename share/vim/{vim73 => vim74}/ftplugin/loginaccess.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/logindefs.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/logtalk.dict (100%) rename share/vim/{vim73 => vim74}/ftplugin/logtalk.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/lprolog.vim (100%) create mode 100644 share/vim/vim74/ftplugin/lua.vim rename share/vim/{vim73 => vim74}/ftplugin/m4.vim (100%) create mode 100644 share/vim/vim74/ftplugin/mail.vim rename share/vim/{vim73 => vim74}/ftplugin/mailaliases.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/mailcap.vim (100%) create mode 100644 share/vim/vim74/ftplugin/make.vim create mode 100644 share/vim/vim74/ftplugin/man.vim rename share/vim/{vim73 => vim74}/ftplugin/manconf.vim (100%) create mode 100644 share/vim/vim74/ftplugin/markdown.vim create mode 100644 share/vim/vim74/ftplugin/matlab.vim rename share/vim/{vim73 => vim74}/ftplugin/mf.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/modconf.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/mp.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/mplayerconf.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/mrxvtrc.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/msmessages.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/muttrc.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/nanorc.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/netrc.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/nsis.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/objc.vim (100%) create mode 100644 share/vim/vim74/ftplugin/ocaml.vim create mode 100644 share/vim/vim74/ftplugin/occam.vim rename share/vim/{vim73 => vim74}/ftplugin/pamconf.vim (100%) create mode 100644 share/vim/vim74/ftplugin/pascal.vim rename share/vim/{vim73 => vim74}/ftplugin/passwd.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/pdf.vim (100%) create mode 100644 share/vim/vim74/ftplugin/perl.vim create mode 100644 share/vim/vim74/ftplugin/perl6.vim create mode 100644 share/vim/vim74/ftplugin/php.vim rename share/vim/{vim73 => vim74}/ftplugin/pinfo.vim (100%) create mode 100644 share/vim/vim74/ftplugin/plaintex.vim create mode 100644 share/vim/vim74/ftplugin/postscr.vim rename share/vim/{vim73 => vim74}/ftplugin/procmail.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/prolog.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/protocols.vim (100%) create mode 100644 share/vim/vim74/ftplugin/pyrex.vim create mode 100644 share/vim/vim74/ftplugin/python.vim create mode 100644 share/vim/vim74/ftplugin/qf.vim rename share/vim/{vim73 => vim74}/ftplugin/quake.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/racc.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/readline.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/reva.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/rnc.vim (100%) create mode 100644 share/vim/vim74/ftplugin/rpl.vim rename share/vim/{vim73 => vim74}/ftplugin/rst.vim (100%) create mode 100644 share/vim/vim74/ftplugin/ruby.vim rename share/vim/{vim73 => vim74}/ftplugin/sass.vim (100%) create mode 100644 share/vim/vim74/ftplugin/scheme.vim rename share/vim/{vim73 => vim74}/ftplugin/screen.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/scss.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/sensors.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/services.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/setserial.vim (100%) create mode 100644 share/vim/vim74/ftplugin/sgml.vim create mode 100644 share/vim/vim74/ftplugin/sh.vim rename share/vim/{vim73 => vim74}/ftplugin/sieve.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/slpconf.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/slpreg.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/slpspi.vim (100%) create mode 100644 share/vim/vim74/ftplugin/spec.vim create mode 100644 share/vim/vim74/ftplugin/sql.vim rename share/vim/{vim73 => vim74}/ftplugin/sshconfig.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/sudoers.vim (100%) create mode 100644 share/vim/vim74/ftplugin/svg.vim rename share/vim/{vim73 => vim74}/ftplugin/sysctl.vim (100%) create mode 100644 share/vim/vim74/ftplugin/tcl.vim create mode 100644 share/vim/vim74/ftplugin/tcsh.vim rename share/vim/{vim73 => vim74}/ftplugin/terminfo.vim (100%) create mode 100644 share/vim/vim74/ftplugin/tex.vim create mode 100644 share/vim/vim74/ftplugin/treetop.vim create mode 100644 share/vim/vim74/ftplugin/tt2html.vim rename share/vim/{vim73 => vim74}/ftplugin/udevconf.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/udevperm.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/udevrules.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/updatedb.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/vb.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/verilog.vim (100%) create mode 100644 share/vim/vim74/ftplugin/vhdl.vim create mode 100644 share/vim/vim74/ftplugin/vim.vim rename share/vim/{vim73 => vim74}/ftplugin/xdefaults.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/xf86conf.vim (100%) create mode 100644 share/vim/vim74/ftplugin/xhtml.vim rename share/vim/{vim73 => vim74}/ftplugin/xinetd.vim (100%) create mode 100644 share/vim/vim74/ftplugin/xml.vim rename share/vim/{vim73 => vim74}/ftplugin/xmodmap.vim (100%) create mode 100644 share/vim/vim74/ftplugin/xs.vim create mode 100644 share/vim/vim74/ftplugin/xsd.vim rename share/vim/{vim73 => vim74}/ftplugin/xslt.vim (100%) rename share/vim/{vim73 => vim74}/ftplugin/yaml.vim (100%) create mode 100644 share/vim/vim74/ftplugin/zimbu.vim create mode 100644 share/vim/vim74/ftplugin/zsh.vim create mode 100644 share/vim/vim74/ftplugof.vim create mode 100644 share/vim/vim74/gvim.exe rename share/vim/{vim73 => vim74}/gvimrc_example.vim (100%) rename share/vim/{vim73 => vim74}/hi16-action-make.png (100%) rename share/vim/{vim73 => vim74}/hi22-action-make.png (100%) rename share/vim/{vim73 => vim74}/icons.info (100%) rename share/vim/{vim73 => vim74}/icons/README.txt (100%) rename share/vim/{vim73 => vim74}/icons/README.txt.info (100%) rename share/vim/{vim73 => vim74}/icons/Vim_32Colors.info (100%) rename share/vim/{vim73 => vim74}/icons/Vim_4ColorsLace.info (100%) rename share/vim/{vim73 => vim74}/icons/Vim_8Colors.info (100%) rename share/vim/{vim73 => vim74}/icons/Vim_8ColorsLace.info (100%) rename share/vim/{vim73 => vim74}/indent.vim (100%) rename share/vim/{vim73 => vim74}/indent/README.txt (100%) rename share/vim/{vim73 => vim74}/indent/aap.vim (100%) create mode 100644 share/vim/vim74/indent/ada.vim rename share/vim/{vim73 => vim74}/indent/ant.vim (100%) rename share/vim/{vim73 => vim74}/indent/automake.vim (100%) create mode 100644 share/vim/vim74/indent/awk.vim rename share/vim/{vim73 => vim74}/indent/bib.vim (100%) rename share/vim/{vim73 => vim74}/indent/bst.vim (100%) rename share/vim/{vim73 => vim74}/indent/c.vim (100%) rename share/vim/{vim73 => vim74}/indent/cdl.vim (100%) rename share/vim/{vim73 => vim74}/indent/ch.vim (100%) rename share/vim/{vim73 => vim74}/indent/chaiscript.vim (100%) rename share/vim/{vim73 => vim74}/indent/changelog.vim (100%) create mode 100644 share/vim/vim74/indent/clojure.vim create mode 100644 share/vim/vim74/indent/cmake.vim rename share/vim/{vim73 => vim74}/indent/cobol.vim (100%) rename share/vim/{vim73 => vim74}/indent/config.vim (100%) rename share/vim/{vim73 => vim74}/indent/cpp.vim (100%) rename share/vim/{vim73 => vim74}/indent/cs.vim (100%) create mode 100644 share/vim/vim74/indent/css.vim create mode 100644 share/vim/vim74/indent/cucumber.vim rename share/vim/{vim73 => vim74}/indent/cuda.vim (100%) rename share/vim/{vim73 => vim74}/indent/d.vim (100%) rename share/vim/{vim73 => vim74}/indent/dictconf.vim (100%) rename share/vim/{vim73 => vim74}/indent/dictdconf.vim (100%) rename share/vim/{vim73 => vim74}/indent/docbk.vim (100%) create mode 100644 share/vim/vim74/indent/dtd.vim rename share/vim/{vim73 => vim74}/indent/dtrace.vim (100%) rename share/vim/{vim73 => vim74}/indent/dylan.vim (100%) create mode 100644 share/vim/vim74/indent/eiffel.vim create mode 100644 share/vim/vim74/indent/erlang.vim create mode 100644 share/vim/vim74/indent/eruby.vim rename share/vim/{vim73 => vim74}/indent/eterm.vim (100%) create mode 100644 share/vim/vim74/indent/falcon.vim create mode 100644 share/vim/vim74/indent/fortran.vim rename share/vim/{vim73 => vim74}/indent/framescript.vim (100%) create mode 100644 share/vim/vim74/indent/gitconfig.vim create mode 100644 share/vim/vim74/indent/gitolite.vim create mode 100644 share/vim/vim74/indent/haml.vim rename share/vim/{vim73 => vim74}/indent/hamster.vim (100%) create mode 100644 share/vim/vim74/indent/html.vim rename share/vim/{vim73 => vim74}/indent/htmldjango.vim (100%) create mode 100644 share/vim/vim74/indent/idlang.vim rename share/vim/{vim73 => vim74}/indent/ishd.vim (100%) create mode 100644 share/vim/vim74/indent/java.vim rename share/vim/{vim73 => vim74}/indent/javascript.vim (100%) rename share/vim/{vim73 => vim74}/indent/jsp.vim (100%) rename share/vim/{vim73 => vim74}/indent/ld.vim (100%) rename share/vim/{vim73 => vim74}/indent/lifelines.vim (100%) create mode 100644 share/vim/vim74/indent/liquid.vim create mode 100644 share/vim/vim74/indent/lisp.vim rename share/vim/{vim73 => vim74}/indent/logtalk.vim (100%) rename share/vim/{vim73 => vim74}/indent/lua.vim (100%) rename share/vim/{vim73 => vim74}/indent/mail.vim (100%) rename share/vim/{vim73 => vim74}/indent/make.vim (100%) rename share/vim/{vim73 => vim74}/indent/matlab.vim (100%) rename share/vim/{vim73 => vim74}/indent/mma.vim (100%) create mode 100644 share/vim/vim74/indent/mp.vim rename share/vim/{vim73 => vim74}/indent/objc.vim (100%) create mode 100644 share/vim/vim74/indent/ocaml.vim create mode 100644 share/vim/vim74/indent/occam.vim create mode 100644 share/vim/vim74/indent/pascal.vim create mode 100644 share/vim/vim74/indent/perl.vim create mode 100644 share/vim/vim74/indent/perl6.vim create mode 100644 share/vim/vim74/indent/php.vim rename share/vim/{vim73 => vim74}/indent/postscr.vim (100%) rename share/vim/{vim73 => vim74}/indent/pov.vim (100%) rename share/vim/{vim73 => vim74}/indent/prolog.vim (100%) rename share/vim/{vim73 => vim74}/indent/pyrex.vim (100%) create mode 100644 share/vim/vim74/indent/python.vim create mode 100644 share/vim/vim74/indent/r.vim rename share/vim/{vim73 => vim74}/indent/readline.vim (100%) rename share/vim/{vim73 => vim74}/indent/rpl.vim (100%) create mode 100644 share/vim/vim74/indent/rst.vim create mode 100644 share/vim/vim74/indent/ruby.vim create mode 100644 share/vim/vim74/indent/sass.vim rename share/vim/{vim73 => vim74}/indent/scheme.vim (100%) rename share/vim/{vim73 => vim74}/indent/scss.vim (100%) create mode 100644 share/vim/vim74/indent/sdl.vim rename share/vim/{vim73 => vim74}/indent/sh.vim (100%) rename share/vim/{vim73 => vim74}/indent/sml.vim (100%) rename share/vim/{vim73 => vim74}/indent/sql.vim (100%) create mode 100644 share/vim/vim74/indent/sqlanywhere.vim rename share/vim/{vim73 => vim74}/indent/tcl.vim (100%) create mode 100644 share/vim/vim74/indent/tcsh.vim create mode 100644 share/vim/vim74/indent/tex.vim rename share/vim/{vim73 => vim74}/indent/tf.vim (100%) rename share/vim/{vim73 => vim74}/indent/tilde.vim (100%) create mode 100644 share/vim/vim74/indent/treetop.vim rename share/vim/{vim73 => vim74}/indent/vb.vim (100%) create mode 100644 share/vim/vim74/indent/verilog.vim create mode 100644 share/vim/vim74/indent/vhdl.vim create mode 100644 share/vim/vim74/indent/vim.vim rename share/vim/{vim73 => vim74}/indent/xf86conf.vim (100%) rename share/vim/{vim73 => vim74}/indent/xhtml.vim (100%) create mode 100644 share/vim/vim74/indent/xinetd.vim create mode 100644 share/vim/vim74/indent/xml.vim rename share/vim/{vim73 => vim74}/indent/xsd.vim (100%) rename share/vim/{vim73 => vim74}/indent/xslt.vim (100%) rename share/vim/{vim73 => vim74}/indent/yacc.vim (100%) create mode 100644 share/vim/vim74/indent/yaml.vim create mode 100644 share/vim/vim74/indent/zimbu.vim rename share/vim/{vim73 => vim74}/indent/zsh.vim (100%) rename share/vim/{vim73 => vim74}/indoff.vim (100%) rename share/vim/{vim73 => vim74}/keymap/README.txt (100%) rename share/vim/{vim73 => vim74}/keymap/accents.vim (100%) rename share/vim/{vim73 => vim74}/keymap/arabic.vim (100%) rename share/vim/{vim73 => vim74}/keymap/arabic_utf-8.vim (100%) create mode 100644 share/vim/vim74/keymap/belarusian-jcuken.vim rename share/vim/{vim73 => vim74}/keymap/bulgarian-bds.vim (100%) rename share/vim/{vim73 => vim74}/keymap/bulgarian-phonetic.vim (100%) rename share/vim/{vim73 => vim74}/keymap/canfr-win.vim (100%) rename share/vim/{vim73 => vim74}/keymap/croatian.vim (100%) rename share/vim/{vim73 => vim74}/keymap/croatian_cp1250.vim (100%) rename share/vim/{vim73 => vim74}/keymap/croatian_iso-8859-2.vim (100%) rename share/vim/{vim73 => vim74}/keymap/croatian_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/czech.vim (100%) rename share/vim/{vim73 => vim74}/keymap/czech_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/dvorak.vim (100%) rename share/vim/{vim73 => vim74}/keymap/esperanto.vim (100%) rename share/vim/{vim73 => vim74}/keymap/esperanto_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/greek.vim (100%) rename share/vim/{vim73 => vim74}/keymap/greek_cp1253.vim (100%) rename share/vim/{vim73 => vim74}/keymap/greek_cp737.vim (100%) rename share/vim/{vim73 => vim74}/keymap/greek_iso-8859-7.vim (100%) rename share/vim/{vim73 => vim74}/keymap/greek_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/hebrew.vim (100%) rename share/vim/{vim73 => vim74}/keymap/hebrew_cp1255.vim (100%) rename share/vim/{vim73 => vim74}/keymap/hebrew_iso-8859-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/hebrew_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/hebrewp.vim (100%) rename share/vim/{vim73 => vim74}/keymap/hebrewp_cp1255.vim (100%) rename share/vim/{vim73 => vim74}/keymap/hebrewp_iso-8859-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/hebrewp_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/kana.vim (100%) rename share/vim/{vim73 => vim74}/keymap/lithuanian-baltic.vim (100%) rename share/vim/{vim73 => vim74}/keymap/magyar_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/mongolian_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/persian-iranian_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/persian.vim (100%) rename share/vim/{vim73 => vim74}/keymap/pinyin.vim (100%) rename share/vim/{vim73 => vim74}/keymap/polish-slash.vim (100%) rename share/vim/{vim73 => vim74}/keymap/polish-slash_cp1250.vim (100%) rename share/vim/{vim73 => vim74}/keymap/polish-slash_cp852.vim (100%) rename share/vim/{vim73 => vim74}/keymap/polish-slash_iso-8859-2.vim (100%) rename share/vim/{vim73 => vim74}/keymap/polish-slash_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/russian-dvorak.vim (100%) rename share/vim/{vim73 => vim74}/keymap/russian-jcuken.vim (100%) rename share/vim/{vim73 => vim74}/keymap/russian-jcukenwin.vim (100%) rename share/vim/{vim73 => vim74}/keymap/russian-yawerty.vim (100%) rename share/vim/{vim73 => vim74}/keymap/serbian-latin.vim (100%) rename share/vim/{vim73 => vim74}/keymap/serbian-latin_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/serbian.vim (100%) rename share/vim/{vim73 => vim74}/keymap/serbian_cp1250.vim (100%) rename share/vim/{vim73 => vim74}/keymap/serbian_cp1251.vim (100%) rename share/vim/{vim73 => vim74}/keymap/serbian_iso-8859-2.vim (100%) rename share/vim/{vim73 => vim74}/keymap/serbian_iso-8859-5.vim (100%) rename share/vim/{vim73 => vim74}/keymap/serbian_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/sinhala-phonetic_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/sinhala.vim (100%) rename share/vim/{vim73 => vim74}/keymap/slovak.vim (100%) rename share/vim/{vim73 => vim74}/keymap/slovak_cp1250.vim (100%) rename share/vim/{vim73 => vim74}/keymap/slovak_iso-8859-2.vim (100%) rename share/vim/{vim73 => vim74}/keymap/slovak_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/tamil_tscii.vim (100%) rename share/vim/{vim73 => vim74}/keymap/thaana-phonetic_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/keymap/thaana.vim (100%) rename share/vim/{vim73 => vim74}/keymap/ukrainian-dvorak.vim (100%) rename share/vim/{vim73 => vim74}/keymap/ukrainian-jcuken.vim (100%) rename share/vim/{vim73 => vim74}/keymap/vietnamese-viqr_utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/README.txt (100%) rename share/vim/{vim73 => vim74}/lang/menu_af.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_af.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_af_af.latin1.vim rename share/vim/{vim73 => vim74}/lang/menu_af_af.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_ca.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_ca.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_ca_es.latin1.vim rename share/vim/{vim73 => vim74}/lang/menu_ca_es.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_chinese(gb)_gb.936.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_chinese(taiwan)_taiwan.950.vim (100%) create mode 100644 share/vim/vim74/lang/menu_chinese_gb.936.vim create mode 100644 share/vim/vim74/lang/menu_chinese_taiwan.950.vim rename share/vim/{vim73 => vim74}/lang/menu_cs.cp1250.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_cs.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_cs_cz.cp1250.vim (100%) create mode 100644 share/vim/vim74/lang/menu_cs_cz.iso_8859-2.vim create mode 100644 share/vim/vim74/lang/menu_cs_cz.latin1.vim create mode 100644 share/vim/vim74/lang/menu_cs_cz.utf-8.vim create mode 100644 share/vim/vim74/lang/menu_czech_czech_republic.1250.vim rename share/vim/{vim73 => vim74}/lang/menu_czech_czech_republic.1252.vim (100%) create mode 100644 share/vim/vim74/lang/menu_czech_czech_republic.ascii.vim rename share/vim/{vim73 => vim74}/lang/menu_de.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_de.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_de_de.latin1.vim rename share/vim/{vim73 => vim74}/lang/menu_de_de.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_en_gb.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_en_gb.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_english_united_kingdom.1252.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_english_united_kingdom.ascii.vim (100%) create mode 100644 share/vim/vim74/lang/menu_eo.utf-8.vim rename share/vim/{vim73 => vim74}/lang/menu_eo_eo.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_eo_xx.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_es.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_es.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_es_es.latin1.vim rename share/vim/{vim73 => vim74}/lang/menu_es_es.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_fi.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_fi.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_fi_fi.latin1.vim rename share/vim/{vim73 => vim74}/lang/menu_fi_fi.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_finnish_finland.1252.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_fr.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_fr.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_fr_fr.latin1.vim rename share/vim/{vim73 => vim74}/lang/menu_fr_fr.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_french_france.1252.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_german_germany.1252.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_hu.iso_8859-2.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_hu.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_hu_hu.iso_8859-2.vim create mode 100644 share/vim/vim74/lang/menu_hu_hu.utf-8.vim rename share/vim/{vim73 => vim74}/lang/menu_it.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_it.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_it_it.latin1.vim rename share/vim/{vim73 => vim74}/lang/menu_it_it.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_italian_italy.1252.vim (100%) create mode 100644 share/vim/vim74/lang/menu_ja.cp932.vim create mode 100644 share/vim/vim74/lang/menu_ja.euc-jp.vim create mode 100644 share/vim/vim74/lang/menu_ja.eucjp.vim create mode 100644 share/vim/vim74/lang/menu_ja.ujis.vim rename share/vim/{vim73 => vim74}/lang/menu_ja.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_ja_jp.cp932.vim create mode 100644 share/vim/vim74/lang/menu_ja_jp.euc-jp.vim create mode 100644 share/vim/vim74/lang/menu_ja_jp.eucjp.vim create mode 100644 share/vim/vim74/lang/menu_ja_jp.ujis.vim create mode 100644 share/vim/vim74/lang/menu_ja_jp.utf-8.vim create mode 100644 share/vim/vim74/lang/menu_japanese_japan.932.vim rename share/vim/{vim73 => vim74}/lang/menu_ko.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_ko_kr.euckr.vim create mode 100644 share/vim/vim74/lang/menu_ko_kr.utf-8.vim rename share/vim/{vim73 => vim74}/lang/menu_ko_kr.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_nl.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_nl.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_nl_nl.latin1.vim rename share/vim/{vim73 => vim74}/lang/menu_nl_nl.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_no.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_no.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_no_no.latin1.vim rename share/vim/{vim73 => vim74}/lang/menu_no_no.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_pl.cp1250.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_pl_pl.cp1250.vim (100%) create mode 100644 share/vim/vim74/lang/menu_pl_pl.iso_8859-2.vim create mode 100644 share/vim/vim74/lang/menu_pl_pl.utf-8.vim create mode 100644 share/vim/vim74/lang/menu_polish_poland.1250.vim rename share/vim/{vim73 => vim74}/lang/menu_pt_br.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_pt_br.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_pt_br.vim rename share/vim/{vim73 => vim74}/lang/menu_pt_pt.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_pt_pt.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_pt_pt.vim rename share/vim/{vim73 => vim74}/lang/menu_ru.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_ru_ru.koi8-r.vim rename share/vim/{vim73 => vim74}/lang/menu_ru_ru.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_ru_ru.vim rename share/vim/{vim73 => vim74}/lang/menu_sk.cp1250.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_sk_sk.1250.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_sk_sk.cp1250.vim (100%) create mode 100644 share/vim/vim74/lang/menu_sk_sk.iso_8859-2.vim rename share/vim/{vim73 => vim74}/lang/menu_sk_sk.vim (100%) create mode 100644 share/vim/vim74/lang/menu_sl_si.cp1250.vim create mode 100644 share/vim/vim74/lang/menu_sl_si.latin2.vim create mode 100644 share/vim/vim74/lang/menu_sl_si.utf-8.vim create mode 100644 share/vim/vim74/lang/menu_slovak_slovak_republic.1250.vim rename share/vim/{vim73 => vim74}/lang/menu_spanish_spain.850.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_sr.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_sr_rs.ascii.vim create mode 100644 share/vim/vim74/lang/menu_sr_rs.iso_8859-2.vim create mode 100644 share/vim/vim74/lang/menu_sr_rs.iso_8859-5.vim create mode 100644 share/vim/vim74/lang/menu_sr_rs.utf-8.vim rename share/vim/{vim73 => vim74}/lang/menu_sr_yu.ascii.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_sr_yu.iso_8859-2.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_sr_yu.iso_8859-5.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_sr_yu.utf-8.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_sv.latin1.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_sv.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_sv_se.latin1.vim rename share/vim/{vim73 => vim74}/lang/menu_sv_se.utf-8.vim (100%) create mode 100644 share/vim/vim74/lang/menu_uk_ua.cp1251.vim create mode 100644 share/vim/vim74/lang/menu_uk_ua.koi8-u.vim create mode 100644 share/vim/vim74/lang/menu_vi_vn.vim rename share/vim/{vim73 => vim74}/lang/menu_zh.big5.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_zh.cp936.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_zh.cp950.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_zh.gb2312.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_zh_cn.18030.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_zh_cn.cp936.vim (100%) create mode 100644 share/vim/vim74/lang/menu_zh_cn.gb2312.vim rename share/vim/{vim73 => vim74}/lang/menu_zh_cn.gbk.vim (100%) create mode 100644 share/vim/vim74/lang/menu_zh_cn.utf-8.vim rename share/vim/{vim73 => vim74}/lang/menu_zh_tw.big5.vim (100%) rename share/vim/{vim73 => vim74}/lang/menu_zh_tw.cp950.vim (100%) create mode 100644 share/vim/vim74/lang/menu_zh_tw.utf-8.vim rename share/vim/{vim73 => vim74}/macmap.vim (100%) rename share/vim/{vim73 => vim74}/macros.info (100%) rename share/vim/{vim73 => vim74}/macros/README.txt (100%) rename share/vim/{vim73 => vim74}/macros/README.txt.info (100%) rename share/vim/{vim73 => vim74}/macros/dvorak (100%) create mode 100644 share/vim/vim74/macros/editexisting.vim rename share/vim/{vim73 => vim74}/macros/hanoi.info (100%) rename share/vim/{vim73 => vim74}/macros/hanoi/click.me (100%) rename share/vim/{vim73 => vim74}/macros/hanoi/click.me.info (100%) rename share/vim/{vim73 => vim74}/macros/hanoi/hanoi.vim (100%) rename share/vim/{vim73 => vim74}/macros/hanoi/poster (100%) rename share/vim/{vim73 => vim74}/macros/hanoi/poster.info (100%) create mode 100644 share/vim/vim74/macros/justify.vim create mode 100644 share/vim/vim74/macros/less.bat create mode 100644 share/vim/vim74/macros/less.sh create mode 100644 share/vim/vim74/macros/less.vim rename share/vim/{vim73 => vim74}/macros/life/click.me (100%) rename share/vim/{vim73 => vim74}/macros/life/click.me.info (100%) rename share/vim/{vim73 => vim74}/macros/life/life.vim (100%) rename share/vim/{vim73 => vim74}/macros/matchit.txt (100%) create mode 100644 share/vim/vim74/macros/matchit.vim rename share/vim/{vim73 => vim74}/macros/maze.info (100%) rename share/vim/{vim73 => vim74}/macros/maze/Makefile (100%) rename share/vim/{vim73 => vim74}/macros/maze/README.txt (100%) rename share/vim/{vim73 => vim74}/macros/maze/README.txt.info (100%) rename share/vim/{vim73 => vim74}/macros/maze/main.aap (100%) rename share/vim/{vim73 => vim74}/macros/maze/maze.c (100%) rename share/vim/{vim73 => vim74}/macros/maze/maze_5.78 (100%) rename share/vim/{vim73 => vim74}/macros/maze/maze_5.78.info (100%) rename share/vim/{vim73 => vim74}/macros/maze/maze_mac (100%) rename share/vim/{vim73 => vim74}/macros/maze/mazeansi.c (100%) rename share/vim/{vim73 => vim74}/macros/maze/mazeclean.c (100%) rename share/vim/{vim73 => vim74}/macros/maze/poster (100%) rename share/vim/{vim73 => vim74}/macros/maze/poster.info (100%) rename share/vim/{vim73 => vim74}/macros/shellmenu.vim (100%) rename share/vim/{vim73 => vim74}/macros/swapmous.vim (100%) rename share/vim/{vim73 => vim74}/macros/urm.info (100%) rename share/vim/{vim73 => vim74}/macros/urm/README.txt (100%) rename share/vim/{vim73 => vim74}/macros/urm/README.txt.info (100%) rename share/vim/{vim73 => vim74}/macros/urm/examples (100%) rename share/vim/{vim73 => vim74}/macros/urm/urm (100%) rename share/vim/{vim73 => vim74}/macros/urm/urm.vim (100%) create mode 100644 share/vim/vim74/makemenu.vim create mode 100644 share/vim/vim74/menu.vim create mode 100644 share/vim/vim74/mswin.vim create mode 100644 share/vim/vim74/optwin.vim rename share/vim/{vim73 => vim74}/plugin/README.txt (100%) create mode 100644 share/vim/vim74/plugin/getscriptPlugin.vim rename share/vim/{vim73 => vim74}/plugin/gzip.vim (100%) create mode 100644 share/vim/vim74/plugin/matchparen.vim create mode 100644 share/vim/vim74/plugin/netrwPlugin.vim rename share/vim/{vim73 => vim74}/plugin/rrhelper.vim (100%) rename share/vim/{vim73 => vim74}/plugin/spellfile.vim (100%) create mode 100644 share/vim/vim74/plugin/tarPlugin.vim create mode 100644 share/vim/vim74/plugin/tohtml.vim create mode 100644 share/vim/vim74/plugin/vimballPlugin.vim create mode 100644 share/vim/vim74/plugin/zipPlugin.vim rename share/vim/{vim73 => vim74}/print/ascii.ps (100%) rename share/vim/{vim73 => vim74}/print/cidfont.ps (100%) rename share/vim/{vim73 => vim74}/print/cns_roman.ps (100%) rename share/vim/{vim73 => vim74}/print/cp1250.ps (100%) rename share/vim/{vim73 => vim74}/print/cp1251.ps (100%) rename share/vim/{vim73 => vim74}/print/cp1252.ps (100%) rename share/vim/{vim73 => vim74}/print/cp1253.ps (100%) rename share/vim/{vim73 => vim74}/print/cp1254.ps (100%) rename share/vim/{vim73 => vim74}/print/cp1255.ps (100%) rename share/vim/{vim73 => vim74}/print/cp1257.ps (100%) rename share/vim/{vim73 => vim74}/print/dec-mcs.ps (100%) rename share/vim/{vim73 => vim74}/print/ebcdic-uk.ps (100%) rename share/vim/{vim73 => vim74}/print/gb_roman.ps (100%) rename share/vim/{vim73 => vim74}/print/hp-roman8.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-10.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-11.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-13.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-14.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-15.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-2.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-3.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-4.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-5.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-7.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-8.ps (100%) rename share/vim/{vim73 => vim74}/print/iso-8859-9.ps (100%) rename share/vim/{vim73 => vim74}/print/jis_roman.ps (100%) rename share/vim/{vim73 => vim74}/print/koi8-r.ps (100%) rename share/vim/{vim73 => vim74}/print/koi8-u.ps (100%) rename share/vim/{vim73 => vim74}/print/ks_roman.ps (100%) rename share/vim/{vim73 => vim74}/print/latin1.ps (100%) rename share/vim/{vim73 => vim74}/print/mac-roman.ps (100%) rename share/vim/{vim73 => vim74}/print/prolog.ps (100%) rename share/vim/{vim73 => vim74}/rgb.txt (100%) create mode 100644 share/vim/vim74/scripts.vim rename share/vim/{vim73 => vim74}/spell/README.txt (100%) rename share/vim/{vim73 => vim74}/spell/README_en.txt (100%) rename share/vim/{vim73 => vim74}/spell/af/af_ZA.diff (100%) rename share/vim/{vim73 => vim74}/spell/af/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/am/am_ET.diff (100%) rename share/vim/{vim73 => vim74}/spell/am/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/bg/bg_BG.diff (100%) rename share/vim/{vim73 => vim74}/spell/bg/main.aap (100%) copy share/vim/{vim73/spell/eo/eo_l3.diff => vim74/spell/br/br_FR.diff} (100%) create mode 100644 share/vim/vim74/spell/br/main.aap rename share/vim/{vim73 => vim74}/spell/ca/ca_ES.diff (100%) rename share/vim/{vim73 => vim74}/spell/ca/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/check/check_aa.aff (100%) rename share/vim/{vim73 => vim74}/spell/check/check_aa.dic (100%) rename share/vim/{vim73 => vim74}/spell/check/check_bb.aff (100%) rename share/vim/{vim73 => vim74}/spell/check/check_bb.dic (100%) rename share/vim/{vim73 => vim74}/spell/check/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/check_locales.vim (100%) rename share/vim/{vim73 => vim74}/spell/cleanadd.vim (100%) rename share/vim/{vim73 => vim74}/spell/cs/cs_CZ.diff (100%) rename share/vim/{vim73 => vim74}/spell/cs/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/cy/cy_GB.diff (100%) rename share/vim/{vim73 => vim74}/spell/cy/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/da/da_DK.diff (100%) rename share/vim/{vim73 => vim74}/spell/da/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/de/de_19.diff (100%) rename share/vim/{vim73 => vim74}/spell/de/de_20.diff (100%) rename share/vim/{vim73 => vim74}/spell/de/de_AT.diff (100%) rename share/vim/{vim73 => vim74}/spell/de/de_CH.diff (100%) rename share/vim/{vim73 => vim74}/spell/de/de_DE.diff (100%) rename share/vim/{vim73 => vim74}/spell/de/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/el/el_GR.diff (100%) rename share/vim/{vim73 => vim74}/spell/el/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/en.ascii.spl (100%) rename share/vim/{vim73 => vim74}/spell/en.ascii.sug (100%) rename share/vim/{vim73 => vim74}/spell/en.latin1.spl (100%) rename share/vim/{vim73 => vim74}/spell/en.latin1.sug (100%) create mode 100644 share/vim/vim74/spell/en.utf-8.spl create mode 100644 share/vim/vim74/spell/en.utf-8.sug rename share/vim/{vim73 => vim74}/spell/en/en_AU.diff (100%) rename share/vim/{vim73 => vim74}/spell/en/en_CA.diff (100%) rename share/vim/{vim73 => vim74}/spell/en/en_GB.diff (100%) rename share/vim/{vim73 => vim74}/spell/en/en_NZ.diff (100%) rename share/vim/{vim73 => vim74}/spell/en/en_US.diff (100%) rename share/vim/{vim73 => vim74}/spell/en/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/eo/eo_l3.diff (100%) rename share/vim/{vim73 => vim74}/spell/eo/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/es/es_ES.diff (100%) create mode 100644 share/vim/vim74/spell/es/es_MX.diff rename share/vim/{vim73 => vim74}/spell/es/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/fixdup.vim (100%) rename share/vim/{vim73 => vim74}/spell/fo/fo_FO.diff (100%) rename share/vim/{vim73 => vim74}/spell/fo/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/fr/fr_FR.diff (100%) rename share/vim/{vim73 => vim74}/spell/fr/main.aap (100%) create mode 100644 share/vim/vim74/spell/ga/ga_IE.diff rename share/vim/{vim73 => vim74}/spell/ga/main.aap (100%) create mode 100644 share/vim/vim74/spell/gd/gd_GB.diff rename share/vim/{vim73 => vim74}/spell/gd/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/gl/gl_ES.diff (100%) rename share/vim/{vim73 => vim74}/spell/gl/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/he.vim (100%) rename share/vim/{vim73 => vim74}/spell/he/he_IL.diff (100%) rename share/vim/{vim73 => vim74}/spell/he/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/hr/hr_HR.diff (100%) rename share/vim/{vim73 => vim74}/spell/hr/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/hu/hu_HU.diff (100%) create mode 100644 share/vim/vim74/spell/hu/main.aap rename share/vim/{vim73 => vim74}/spell/id/id_ID.diff (100%) rename share/vim/{vim73 => vim74}/spell/id/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/it/it_IT.diff (100%) rename share/vim/{vim73 => vim74}/spell/it/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/ku/ku_TR.diff (100%) rename share/vim/{vim73 => vim74}/spell/ku/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/la/la.diff (100%) rename share/vim/{vim73 => vim74}/spell/la/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/lt/lt_LT.diff (100%) rename share/vim/{vim73 => vim74}/spell/lt/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/lv/lv_LV.diff (100%) rename share/vim/{vim73 => vim74}/spell/lv/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/mg/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/mg/mg_MG.diff (100%) rename share/vim/{vim73 => vim74}/spell/mi/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/mi/mi_NZ.diff (100%) rename share/vim/{vim73 => vim74}/spell/ms/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/ms/ms_MY.diff (100%) rename share/vim/{vim73 => vim74}/spell/nb/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/nb/nb_NO.diff (100%) rename share/vim/{vim73 => vim74}/spell/nl/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/nl/nl_NL.diff (100%) rename share/vim/{vim73 => vim74}/spell/nn/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/nn/nn_NO.diff (100%) rename share/vim/{vim73 => vim74}/spell/ny/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/ny/ny_MW.diff (100%) rename share/vim/{vim73 => vim74}/spell/pl/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/pl/pl_PL.diff (100%) rename share/vim/{vim73 => vim74}/spell/pt/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/pt/pt_BR.diff (100%) rename share/vim/{vim73 => vim74}/spell/pt/pt_PT.diff (100%) rename share/vim/{vim73 => vim74}/spell/ro/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/ro/ro_RO.diff (100%) rename share/vim/{vim73 => vim74}/spell/ru/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/ru/ru_RU.diff (100%) rename share/vim/{vim73 => vim74}/spell/ru/ru_YO.diff (100%) rename share/vim/{vim73 => vim74}/spell/rw/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/rw/rw_RW.diff (100%) rename share/vim/{vim73 => vim74}/spell/sk/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/sk/sk_SK.diff (100%) rename share/vim/{vim73 => vim74}/spell/sl/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/sl/sl_SI.diff (100%) create mode 100644 share/vim/vim74/spell/spell.vim rename share/vim/{vim73 => vim74}/spell/sv/main.aap (100%) create mode 100644 share/vim/vim74/spell/sv/sv_SE.diff rename share/vim/{vim73 => vim74}/spell/sw/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/sw/sw_KE.diff (100%) rename share/vim/{vim73 => vim74}/spell/tet/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/tet/tet_ID.diff (100%) rename share/vim/{vim73 => vim74}/spell/th/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/th/th.diff (100%) rename share/vim/{vim73 => vim74}/spell/tl/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/tl/tl_PH.diff (100%) rename share/vim/{vim73 => vim74}/spell/tn/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/tn/tn_ZA.diff (100%) rename share/vim/{vim73 => vim74}/spell/uk/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/uk/uk_UA.diff (100%) rename share/vim/{vim73 => vim74}/spell/yi.vim (100%) rename share/vim/{vim73 => vim74}/spell/yi/README.txt (100%) rename share/vim/{vim73 => vim74}/spell/yi/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/yi/yi.diff (100%) rename share/vim/{vim73 => vim74}/spell/yi/yi_tr.diff (100%) rename share/vim/{vim73 => vim74}/spell/zu/main.aap (100%) rename share/vim/{vim73 => vim74}/spell/zu/zu_ZA.diff (100%) create mode 100644 share/vim/vim74/synmenu.vim create mode 100644 share/vim/vim74/syntax/2html.vim rename share/vim/{vim73 => vim74}/syntax/README.txt (100%) rename share/vim/{vim73 => vim74}/syntax/a2ps.vim (100%) rename share/vim/{vim73 => vim74}/syntax/a65.vim (100%) rename share/vim/{vim73 => vim74}/syntax/aap.vim (100%) create mode 100644 share/vim/vim74/syntax/abap.vim rename share/vim/{vim73 => vim74}/syntax/abaqus.vim (100%) rename share/vim/{vim73 => vim74}/syntax/abc.vim (100%) create mode 100644 share/vim/vim74/syntax/abel.vim rename share/vim/{vim73 => vim74}/syntax/acedb.vim (100%) create mode 100644 share/vim/vim74/syntax/ada.vim rename share/vim/{vim73 => vim74}/syntax/aflex.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ahdl.vim (100%) rename share/vim/{vim73 => vim74}/syntax/alsaconf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/amiga.vim (100%) rename share/vim/{vim73 => vim74}/syntax/aml.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ampl.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ant.vim (100%) rename share/vim/{vim73 => vim74}/syntax/antlr.vim (100%) rename share/vim/{vim73 => vim74}/syntax/apache.vim (100%) rename share/vim/{vim73 => vim74}/syntax/apachestyle.vim (100%) create mode 100644 share/vim/vim74/syntax/aptconf.vim rename share/vim/{vim73 => vim74}/syntax/arch.vim (100%) create mode 100644 share/vim/vim74/syntax/art.vim create mode 100644 share/vim/vim74/syntax/asciidoc.vim create mode 100644 share/vim/vim74/syntax/asm.vim rename share/vim/{vim73 => vim74}/syntax/asm68k.vim (100%) rename share/vim/{vim73 => vim74}/syntax/asmh8300.vim (100%) create mode 100644 share/vim/vim74/syntax/asn.vim rename share/vim/{vim73 => vim74}/syntax/aspperl.vim (100%) rename share/vim/{vim73 => vim74}/syntax/aspvbs.vim (100%) rename share/vim/{vim73 => vim74}/syntax/asterisk.vim (100%) rename share/vim/{vim73 => vim74}/syntax/asteriskvm.vim (100%) rename share/vim/{vim73 => vim74}/syntax/atlas.vim (100%) rename share/vim/{vim73 => vim74}/syntax/autohotkey.vim (100%) create mode 100644 share/vim/vim74/syntax/autoit.vim create mode 100644 share/vim/vim74/syntax/automake.vim rename share/vim/{vim73 => vim74}/syntax/ave.vim (100%) create mode 100644 share/vim/vim74/syntax/awk.vim create mode 100644 share/vim/vim74/syntax/ayacc.vim rename share/vim/{vim73 => vim74}/syntax/b.vim (100%) rename share/vim/{vim73 => vim74}/syntax/baan.vim (100%) create mode 100644 share/vim/vim74/syntax/basic.vim create mode 100644 share/vim/vim74/syntax/bc.vim rename share/vim/{vim73 => vim74}/syntax/bdf.vim (100%) create mode 100644 share/vim/vim74/syntax/bib.vim create mode 100644 share/vim/vim74/syntax/bindzone.vim create mode 100644 share/vim/vim74/syntax/blank.vim rename share/vim/{vim73 => vim74}/syntax/bst.vim (100%) rename share/vim/{vim73 => vim74}/syntax/btm.vim (100%) create mode 100644 share/vim/vim74/syntax/bzr.vim create mode 100644 share/vim/vim74/syntax/c.vim rename share/vim/{vim73 => vim74}/syntax/cabal.vim (100%) rename share/vim/{vim73 => vim74}/syntax/calendar.vim (100%) rename share/vim/{vim73 => vim74}/syntax/catalog.vim (100%) rename share/vim/{vim73 => vim74}/syntax/cdl.vim (100%) rename share/vim/{vim73 => vim74}/syntax/cdrdaoconf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/cdrtoc.vim (100%) rename share/vim/{vim73 => vim74}/syntax/cf.vim (100%) create mode 100644 share/vim/vim74/syntax/cfg.vim rename share/vim/{vim73 => vim74}/syntax/ch.vim (100%) rename share/vim/{vim73 => vim74}/syntax/chaiscript.vim (100%) rename share/vim/{vim73 => vim74}/syntax/change.vim (100%) rename share/vim/{vim73 => vim74}/syntax/changelog.vim (100%) rename share/vim/{vim73 => vim74}/syntax/chaskell.vim (100%) rename share/vim/{vim73 => vim74}/syntax/cheetah.vim (100%) rename share/vim/{vim73 => vim74}/syntax/chill.vim (100%) rename share/vim/{vim73 => vim74}/syntax/chordpro.vim (100%) create mode 100644 share/vim/vim74/syntax/cl.vim create mode 100644 share/vim/vim74/syntax/clean.vim create mode 100644 share/vim/vim74/syntax/clipper.vim create mode 100644 share/vim/vim74/syntax/clojure.vim create mode 100644 share/vim/vim74/syntax/cmake.vim rename share/vim/{vim73 => vim74}/syntax/cmusrc.vim (100%) rename share/vim/{vim73 => vim74}/syntax/cobol.vim (100%) rename share/vim/{vim73 => vim74}/syntax/coco.vim (100%) rename share/vim/{vim73 => vim74}/syntax/colortest.vim (100%) rename share/vim/{vim73 => vim74}/syntax/conaryrecipe.vim (100%) rename share/vim/{vim73 => vim74}/syntax/conf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/config.vim (100%) rename share/vim/{vim73 => vim74}/syntax/context.vim (100%) create mode 100644 share/vim/vim74/syntax/cpp.vim rename share/vim/{vim73 => vim74}/syntax/crm.vim (100%) create mode 100644 share/vim/vim74/syntax/crontab.vim rename share/vim/{vim73 => vim74}/syntax/cs.vim (100%) create mode 100644 share/vim/vim74/syntax/csc.vim create mode 100644 share/vim/vim74/syntax/csdl.vim rename share/vim/{vim73 => vim74}/syntax/csh.vim (100%) rename share/vim/{vim73 => vim74}/syntax/csp.vim (100%) create mode 100644 share/vim/vim74/syntax/css.vim rename share/vim/{vim73 => vim74}/syntax/cterm.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ctrlh.vim (100%) create mode 100644 share/vim/vim74/syntax/cucumber.vim rename share/vim/{vim73 => vim74}/syntax/cuda.vim (100%) create mode 100644 share/vim/vim74/syntax/cupl.vim rename share/vim/{vim73 => vim74}/syntax/cuplsim.vim (100%) rename share/vim/{vim73 => vim74}/syntax/cvs.vim (100%) rename share/vim/{vim73 => vim74}/syntax/cvsrc.vim (100%) create mode 100644 share/vim/vim74/syntax/cweb.vim rename share/vim/{vim73 => vim74}/syntax/cynlib.vim (100%) rename share/vim/{vim73 => vim74}/syntax/cynpp.vim (100%) create mode 100644 share/vim/vim74/syntax/d.vim create mode 100644 share/vim/vim74/syntax/datascript.vim rename share/vim/{vim73 => vim74}/syntax/dcd.vim (100%) rename share/vim/{vim73 => vim74}/syntax/dcl.vim (100%) create mode 100644 share/vim/vim74/syntax/debchangelog.vim create mode 100644 share/vim/vim74/syntax/debcontrol.vim create mode 100644 share/vim/vim74/syntax/debsources.vim rename share/vim/{vim73 => vim74}/syntax/def.vim (100%) rename share/vim/{vim73 => vim74}/syntax/denyhosts.vim (100%) rename share/vim/{vim73 => vim74}/syntax/desc.vim (100%) rename share/vim/{vim73 => vim74}/syntax/desktop.vim (100%) rename share/vim/{vim73 => vim74}/syntax/dictconf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/dictdconf.vim (100%) create mode 100644 share/vim/vim74/syntax/diff.vim create mode 100644 share/vim/vim74/syntax/dircolors.vim create mode 100644 share/vim/vim74/syntax/dirpager.vim rename share/vim/{vim73 => vim74}/syntax/diva.vim (100%) create mode 100644 share/vim/vim74/syntax/django.vim rename share/vim/{vim73 => vim74}/syntax/dns.vim (100%) create mode 100644 share/vim/vim74/syntax/dnsmasq.vim create mode 100644 share/vim/vim74/syntax/docbk.vim rename share/vim/{vim73 => vim74}/syntax/docbksgml.vim (100%) rename share/vim/{vim73 => vim74}/syntax/docbkxml.vim (100%) rename share/vim/{vim73 => vim74}/syntax/dosbatch.vim (100%) create mode 100644 share/vim/vim74/syntax/dosini.vim create mode 100644 share/vim/vim74/syntax/dot.vim create mode 100644 share/vim/vim74/syntax/doxygen.vim rename share/vim/{vim73 => vim74}/syntax/dracula.vim (100%) rename share/vim/{vim73 => vim74}/syntax/dsl.vim (100%) create mode 100644 share/vim/vim74/syntax/dtd.vim rename share/vim/{vim73 => vim74}/syntax/dtml.vim (100%) rename share/vim/{vim73 => vim74}/syntax/dtrace.vim (100%) create mode 100644 share/vim/vim74/syntax/dts.vim rename share/vim/{vim73 => vim74}/syntax/dylan.vim (100%) rename share/vim/{vim73 => vim74}/syntax/dylanintr.vim (100%) rename share/vim/{vim73 => vim74}/syntax/dylanlid.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ecd.vim (100%) rename share/vim/{vim73 => vim74}/syntax/edif.vim (100%) create mode 100644 share/vim/vim74/syntax/eiffel.vim rename share/vim/{vim73 => vim74}/syntax/elf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/elinks.vim (100%) rename share/vim/{vim73 => vim74}/syntax/elmfilt.vim (100%) create mode 100644 share/vim/vim74/syntax/erlang.vim create mode 100644 share/vim/vim74/syntax/eruby.vim create mode 100644 share/vim/vim74/syntax/esmtprc.vim rename share/vim/{vim73 => vim74}/syntax/esqlc.vim (100%) rename share/vim/{vim73 => vim74}/syntax/esterel.vim (100%) rename share/vim/{vim73 => vim74}/syntax/eterm.vim (100%) rename share/vim/{vim73 => vim74}/syntax/eviews.vim (100%) rename share/vim/{vim73 => vim74}/syntax/exim.vim (100%) create mode 100644 share/vim/vim74/syntax/expect.vim rename share/vim/{vim73 => vim74}/syntax/exports.vim (100%) create mode 100644 share/vim/vim74/syntax/falcon.vim rename share/vim/{vim73 => vim74}/syntax/fan.vim (100%) create mode 100644 share/vim/vim74/syntax/fasm.vim rename share/vim/{vim73 => vim74}/syntax/fdcc.vim (100%) rename share/vim/{vim73 => vim74}/syntax/fetchmail.vim (100%) rename share/vim/{vim73 => vim74}/syntax/fgl.vim (100%) rename share/vim/{vim73 => vim74}/syntax/flexwiki.vim (100%) rename share/vim/{vim73 => vim74}/syntax/focexec.vim (100%) rename share/vim/{vim73 => vim74}/syntax/form.vim (100%) create mode 100644 share/vim/vim74/syntax/forth.vim create mode 100644 share/vim/vim74/syntax/fortran.vim rename share/vim/{vim73 => vim74}/syntax/foxpro.vim (100%) rename share/vim/{vim73 => vim74}/syntax/framescript.vim (100%) rename share/vim/{vim73 => vim74}/syntax/freebasic.vim (100%) create mode 100644 share/vim/vim74/syntax/fstab.vim create mode 100644 share/vim/vim74/syntax/fvwm.vim rename share/vim/{vim73 => vim74}/syntax/fvwm2m4.vim (100%) create mode 100644 share/vim/vim74/syntax/gdb.vim create mode 100644 share/vim/vim74/syntax/gdmo.vim rename share/vim/{vim73 => vim74}/syntax/gedcom.vim (100%) rename share/vim/{vim73 => vim74}/syntax/git.vim (100%) create mode 100644 share/vim/vim74/syntax/gitcommit.vim rename share/vim/{vim73 => vim74}/syntax/gitconfig.vim (100%) create mode 100644 share/vim/vim74/syntax/gitolite.vim create mode 100644 share/vim/vim74/syntax/gitrebase.vim rename share/vim/{vim73 => vim74}/syntax/gitsendemail.vim (100%) rename share/vim/{vim73 => vim74}/syntax/gkrellmrc.vim (100%) create mode 100644 share/vim/vim74/syntax/gnash.vim rename share/vim/{vim73 => vim74}/syntax/gnuplot.vim (100%) create mode 100644 share/vim/vim74/syntax/gp.vim create mode 100644 share/vim/vim74/syntax/gpg.vim create mode 100644 share/vim/vim74/syntax/gprof.vim rename share/vim/{vim73 => vim74}/syntax/grads.vim (100%) rename share/vim/{vim73 => vim74}/syntax/gretl.vim (100%) rename share/vim/{vim73 => vim74}/syntax/groff.vim (100%) create mode 100644 share/vim/vim74/syntax/groovy.vim create mode 100644 share/vim/vim74/syntax/group.vim rename share/vim/{vim73 => vim74}/syntax/grub.vim (100%) create mode 100644 share/vim/vim74/syntax/gsp.vim rename share/vim/{vim73 => vim74}/syntax/gtkrc.vim (100%) rename share/vim/{vim73 => vim74}/syntax/haml.vim (100%) rename share/vim/{vim73 => vim74}/syntax/hamster.vim (100%) rename share/vim/{vim73 => vim74}/syntax/haskell.vim (100%) rename share/vim/{vim73 => vim74}/syntax/haste.vim (100%) rename share/vim/{vim73 => vim74}/syntax/hastepreproc.vim (100%) create mode 100644 share/vim/vim74/syntax/hb.vim create mode 100644 share/vim/vim74/syntax/help.vim rename share/vim/{vim73 => vim74}/syntax/hercules.vim (100%) rename share/vim/{vim73 => vim74}/syntax/hex.vim (100%) create mode 100644 share/vim/vim74/syntax/hgcommit.vim rename share/vim/{vim73 => vim74}/syntax/hitest.vim (100%) rename share/vim/{vim73 => vim74}/syntax/hog.vim (100%) rename share/vim/{vim73 => vim74}/syntax/hostconf.vim (100%) create mode 100644 share/vim/vim74/syntax/hostsaccess.vim create mode 100644 share/vim/vim74/syntax/html.vim rename share/vim/{vim73 => vim74}/syntax/htmlcheetah.vim (100%) rename share/vim/{vim73 => vim74}/syntax/htmldjango.vim (100%) rename share/vim/{vim73 => vim74}/syntax/htmlm4.vim (100%) rename share/vim/{vim73 => vim74}/syntax/htmlos.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ia64.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ibasic.vim (100%) rename share/vim/{vim73 => vim74}/syntax/icemenu.vim (100%) rename share/vim/{vim73 => vim74}/syntax/icon.vim (100%) create mode 100644 share/vim/vim74/syntax/idl.vim create mode 100644 share/vim/vim74/syntax/idlang.vim rename share/vim/{vim73 => vim74}/syntax/indent.vim (100%) rename share/vim/{vim73 => vim74}/syntax/inform.vim (100%) rename share/vim/{vim73 => vim74}/syntax/initex.vim (100%) rename share/vim/{vim73 => vim74}/syntax/initng.vim (100%) rename share/vim/{vim73 => vim74}/syntax/inittab.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ipfilter.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ishd.vim (100%) rename share/vim/{vim73 => vim74}/syntax/iss.vim (100%) create mode 100644 share/vim/vim74/syntax/ist.vim rename share/vim/{vim73 => vim74}/syntax/jal.vim (100%) create mode 100644 share/vim/vim74/syntax/jam.vim rename share/vim/{vim73 => vim74}/syntax/jargon.vim (100%) create mode 100644 share/vim/vim74/syntax/java.vim create mode 100644 share/vim/vim74/syntax/javacc.vim create mode 100644 share/vim/vim74/syntax/javascript.vim rename share/vim/{vim73 => vim74}/syntax/jess.vim (100%) rename share/vim/{vim73 => vim74}/syntax/jgraph.vim (100%) create mode 100644 share/vim/vim74/syntax/jovial.vim rename share/vim/{vim73 => vim74}/syntax/jproperties.vim (100%) rename share/vim/{vim73 => vim74}/syntax/jsp.vim (100%) rename share/vim/{vim73 => vim74}/syntax/kconfig.vim (100%) rename share/vim/{vim73 => vim74}/syntax/kix.vim (100%) rename share/vim/{vim73 => vim74}/syntax/kscript.vim (100%) create mode 100644 share/vim/vim74/syntax/kwt.vim rename share/vim/{vim73 => vim74}/syntax/lace.vim (100%) rename share/vim/{vim73 => vim74}/syntax/latte.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ld.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ldapconf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ldif.vim (100%) create mode 100644 share/vim/vim74/syntax/lex.vim rename share/vim/{vim73 => vim74}/syntax/lftp.vim (100%) rename share/vim/{vim73 => vim74}/syntax/lhaskell.vim (100%) rename share/vim/{vim73 => vim74}/syntax/libao.vim (100%) rename share/vim/{vim73 => vim74}/syntax/lifelines.vim (100%) rename share/vim/{vim73 => vim74}/syntax/lilo.vim (100%) rename share/vim/{vim73 => vim74}/syntax/limits.vim (100%) create mode 100644 share/vim/vim74/syntax/liquid.vim create mode 100644 share/vim/vim74/syntax/lisp.vim rename share/vim/{vim73 => vim74}/syntax/lite.vim (100%) rename share/vim/{vim73 => vim74}/syntax/litestep.vim (100%) rename share/vim/{vim73 => vim74}/syntax/loginaccess.vim (100%) create mode 100644 share/vim/vim74/syntax/logindefs.vim create mode 100644 share/vim/vim74/syntax/logtalk.vim rename share/vim/{vim73 => vim74}/syntax/lotos.vim (100%) create mode 100644 share/vim/vim74/syntax/lout.vim create mode 100644 share/vim/vim74/syntax/lpc.vim rename share/vim/{vim73 => vim74}/syntax/lprolog.vim (100%) rename share/vim/{vim73 => vim74}/syntax/lscript.vim (100%) create mode 100644 share/vim/vim74/syntax/lsl.vim rename share/vim/{vim73 => vim74}/syntax/lss.vim (100%) create mode 100644 share/vim/vim74/syntax/lua.vim create mode 100644 share/vim/vim74/syntax/lynx.vim rename share/vim/{vim73 => vim74}/syntax/m4.vim (100%) create mode 100644 share/vim/vim74/syntax/mail.vim rename share/vim/{vim73 => vim74}/syntax/mailaliases.vim (100%) create mode 100644 share/vim/vim74/syntax/mailcap.vim create mode 100644 share/vim/vim74/syntax/make.vim create mode 100644 share/vim/vim74/syntax/mallard.vim rename share/vim/{vim73 => vim74}/syntax/man.vim (100%) rename share/vim/{vim73 => vim74}/syntax/manconf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/manual.vim (100%) rename share/vim/{vim73 => vim74}/syntax/maple.vim (100%) create mode 100644 share/vim/vim74/syntax/markdown.vim create mode 100644 share/vim/vim74/syntax/masm.vim rename share/vim/{vim73 => vim74}/syntax/mason.vim (100%) rename share/vim/{vim73 => vim74}/syntax/master.vim (100%) create mode 100644 share/vim/vim74/syntax/matlab.vim rename share/vim/{vim73 => vim74}/syntax/maxima.vim (100%) rename share/vim/{vim73 => vim74}/syntax/mel.vim (100%) rename share/vim/{vim73 => vim74}/syntax/messages.vim (100%) rename share/vim/{vim73 => vim74}/syntax/mf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/mgl.vim (100%) rename share/vim/{vim73 => vim74}/syntax/mgp.vim (100%) rename share/vim/{vim73 => vim74}/syntax/mib.vim (100%) create mode 100644 share/vim/vim74/syntax/mma.vim create mode 100644 share/vim/vim74/syntax/mmix.vim rename share/vim/{vim73 => vim74}/syntax/mmp.vim (100%) rename share/vim/{vim73 => vim74}/syntax/modconf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/model.vim (100%) rename share/vim/{vim73 => vim74}/syntax/modsim3.vim (100%) rename share/vim/{vim73 => vim74}/syntax/modula2.vim (100%) rename share/vim/{vim73 => vim74}/syntax/modula3.vim (100%) create mode 100644 share/vim/vim74/syntax/monk.vim rename share/vim/{vim73 => vim74}/syntax/moo.vim (100%) rename share/vim/{vim73 => vim74}/syntax/mp.vim (100%) rename share/vim/{vim73 => vim74}/syntax/mplayerconf.vim (100%) create mode 100644 share/vim/vim74/syntax/mrxvtrc.vim create mode 100644 share/vim/vim74/syntax/msidl.vim rename share/vim/{vim73 => vim74}/syntax/msmessages.vim (100%) rename share/vim/{vim73 => vim74}/syntax/msql.vim (100%) rename share/vim/{vim73 => vim74}/syntax/mupad.vim (100%) rename share/vim/{vim73 => vim74}/syntax/mush.vim (100%) create mode 100644 share/vim/vim74/syntax/muttrc.vim rename share/vim/{vim73 => vim74}/syntax/mysql.vim (100%) rename share/vim/{vim73 => vim74}/syntax/named.vim (100%) rename share/vim/{vim73 => vim74}/syntax/nanorc.vim (100%) create mode 100644 share/vim/vim74/syntax/nasm.vim rename share/vim/{vim73 => vim74}/syntax/nastran.vim (100%) create mode 100644 share/vim/vim74/syntax/natural.vim rename share/vim/{vim73 => vim74}/syntax/ncf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/netrc.vim (100%) create mode 100644 share/vim/vim74/syntax/netrw.vim create mode 100644 share/vim/vim74/syntax/ninja.vim rename share/vim/{vim73 => vim74}/syntax/nosyntax.vim (100%) rename share/vim/{vim73 => vim74}/syntax/nqc.vim (100%) create mode 100644 share/vim/vim74/syntax/nroff.vim rename share/vim/{vim73 => vim74}/syntax/nsis.vim (100%) rename share/vim/{vim73 => vim74}/syntax/obj.vim (100%) create mode 100644 share/vim/vim74/syntax/objc.vim rename share/vim/{vim73 => vim74}/syntax/objcpp.vim (100%) create mode 100644 share/vim/vim74/syntax/ocaml.vim rename share/vim/{vim73 => vim74}/syntax/occam.vim (100%) rename share/vim/{vim73 => vim74}/syntax/omnimark.vim (100%) rename share/vim/{vim73 => vim74}/syntax/openroad.vim (100%) create mode 100644 share/vim/vim74/syntax/opl.vim rename share/vim/{vim73 => vim74}/syntax/ora.vim (100%) create mode 100644 share/vim/vim74/syntax/pamconf.vim rename share/vim/{vim73 => vim74}/syntax/papp.vim (100%) rename share/vim/{vim73 => vim74}/syntax/pascal.vim (100%) rename share/vim/{vim73 => vim74}/syntax/passwd.vim (100%) rename share/vim/{vim73 => vim74}/syntax/pcap.vim (100%) rename share/vim/{vim73 => vim74}/syntax/pccts.vim (100%) rename share/vim/{vim73 => vim74}/syntax/pdf.vim (100%) create mode 100644 share/vim/vim74/syntax/perl.vim create mode 100644 share/vim/vim74/syntax/perl6.vim create mode 100644 share/vim/vim74/syntax/pf.vim create mode 100644 share/vim/vim74/syntax/pfmain.vim create mode 100644 share/vim/vim74/syntax/php.vim rename share/vim/{vim73 => vim74}/syntax/phtml.vim (100%) rename share/vim/{vim73 => vim74}/syntax/pic.vim (100%) rename share/vim/{vim73 => vim74}/syntax/pike.vim (100%) rename share/vim/{vim73 => vim74}/syntax/pilrc.vim (100%) create mode 100644 share/vim/vim74/syntax/pine.vim rename share/vim/{vim73 => vim74}/syntax/pinfo.vim (100%) rename share/vim/{vim73 => vim74}/syntax/plaintex.vim (100%) create mode 100644 share/vim/vim74/syntax/pli.vim rename share/vim/{vim73 => vim74}/syntax/plm.vim (100%) rename share/vim/{vim73 => vim74}/syntax/plp.vim (100%) rename share/vim/{vim73 => vim74}/syntax/plsql.vim (100%) create mode 100644 share/vim/vim74/syntax/po.vim create mode 100644 share/vim/vim74/syntax/pod.vim rename share/vim/{vim73 => vim74}/syntax/postscr.vim (100%) create mode 100644 share/vim/vim74/syntax/pov.vim create mode 100644 share/vim/vim74/syntax/povini.vim rename share/vim/{vim73 => vim74}/syntax/ppd.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ppwiz.vim (100%) rename share/vim/{vim73 => vim74}/syntax/prescribe.vim (100%) rename share/vim/{vim73 => vim74}/syntax/privoxy.vim (100%) rename share/vim/{vim73 => vim74}/syntax/procmail.vim (100%) create mode 100644 share/vim/vim74/syntax/progress.vim create mode 100644 share/vim/vim74/syntax/prolog.vim rename share/vim/{vim73 => vim74}/syntax/promela.vim (100%) create mode 100644 share/vim/vim74/syntax/proto.vim rename share/vim/{vim73 => vim74}/syntax/protocols.vim (100%) rename share/vim/{vim73 => vim74}/syntax/psf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/ptcap.vim (100%) rename share/vim/{vim73 => vim74}/syntax/purifylog.vim (100%) rename share/vim/{vim73 => vim74}/syntax/pyrex.vim (100%) create mode 100644 share/vim/vim74/syntax/python.vim rename share/vim/{vim73 => vim74}/syntax/qf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/quake.vim (100%) create mode 100644 share/vim/vim74/syntax/r.vim rename share/vim/{vim73 => vim74}/syntax/racc.vim (100%) rename share/vim/{vim73 => vim74}/syntax/radiance.vim (100%) create mode 100644 share/vim/vim74/syntax/ratpoison.vim rename share/vim/{vim73 => vim74}/syntax/rc.vim (100%) create mode 100644 share/vim/vim74/syntax/rcs.vim rename share/vim/{vim73 => vim74}/syntax/rcslog.vim (100%) create mode 100644 share/vim/vim74/syntax/readline.vim rename share/vim/{vim73 => vim74}/syntax/rebol.vim (100%) create mode 100644 share/vim/vim74/syntax/redif.vim rename share/vim/{vim73 => vim74}/syntax/registry.vim (100%) rename share/vim/{vim73 => vim74}/syntax/remind.vim (100%) create mode 100644 share/vim/vim74/syntax/resolv.vim create mode 100644 share/vim/vim74/syntax/reva.vim create mode 100644 share/vim/vim74/syntax/rexx.vim create mode 100644 share/vim/vim74/syntax/rhelp.vim rename share/vim/{vim73 => vim74}/syntax/rib.vim (100%) rename share/vim/{vim73 => vim74}/syntax/rnc.vim (100%) create mode 100644 share/vim/vim74/syntax/rng.vim rename share/vim/{vim73 => vim74}/syntax/rnoweb.vim (100%) rename share/vim/{vim73 => vim74}/syntax/robots.vim (100%) rename share/vim/{vim73 => vim74}/syntax/rpcgen.vim (100%) create mode 100644 share/vim/vim74/syntax/rpl.vim create mode 100644 share/vim/vim74/syntax/rst.vim rename share/vim/{vim73 => vim74}/syntax/rtf.vim (100%) create mode 100644 share/vim/vim74/syntax/ruby.vim rename share/vim/{vim73 => vim74}/syntax/samba.vim (100%) create mode 100644 share/vim/vim74/syntax/sas.vim create mode 100644 share/vim/vim74/syntax/sass.vim rename share/vim/{vim73 => vim74}/syntax/sather.vim (100%) create mode 100644 share/vim/vim74/syntax/scheme.vim rename share/vim/{vim73 => vim74}/syntax/scilab.vim (100%) rename share/vim/{vim73 => vim74}/syntax/screen.vim (100%) rename share/vim/{vim73 => vim74}/syntax/scss.vim (100%) create mode 100644 share/vim/vim74/syntax/sd.vim rename share/vim/{vim73 => vim74}/syntax/sdc.vim (100%) create mode 100644 share/vim/vim74/syntax/sdl.vim rename share/vim/{vim73 => vim74}/syntax/sed.vim (100%) create mode 100644 share/vim/vim74/syntax/sendpr.vim rename share/vim/{vim73 => vim74}/syntax/sensors.vim (100%) rename share/vim/{vim73 => vim74}/syntax/services.vim (100%) rename share/vim/{vim73 => vim74}/syntax/setserial.vim (100%) rename share/vim/{vim73 => vim74}/syntax/sgml.vim (100%) create mode 100644 share/vim/vim74/syntax/sgmldecl.vim create mode 100644 share/vim/vim74/syntax/sgmllnx.vim create mode 100644 share/vim/vim74/syntax/sh.vim rename share/vim/{vim73 => vim74}/syntax/sicad.vim (100%) rename share/vim/{vim73 => vim74}/syntax/sieve.vim (100%) rename share/vim/{vim73 => vim74}/syntax/simula.vim (100%) rename share/vim/{vim73 => vim74}/syntax/sinda.vim (100%) rename share/vim/{vim73 => vim74}/syntax/sindacmp.vim (100%) rename share/vim/{vim73 => vim74}/syntax/sindaout.vim (100%) create mode 100644 share/vim/vim74/syntax/sisu.vim rename share/vim/{vim73 => vim74}/syntax/skill.vim (100%) rename share/vim/{vim73 => vim74}/syntax/sl.vim (100%) rename share/vim/{vim73 => vim74}/syntax/slang.vim (100%) create mode 100644 share/vim/vim74/syntax/slice.vim rename share/vim/{vim73 => vim74}/syntax/slpconf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/slpreg.vim (100%) rename share/vim/{vim73 => vim74}/syntax/slpspi.vim (100%) rename share/vim/{vim73 => vim74}/syntax/slrnrc.vim (100%) rename share/vim/{vim73 => vim74}/syntax/slrnsc.vim (100%) rename share/vim/{vim73 => vim74}/syntax/sm.vim (100%) rename share/vim/{vim73 => vim74}/syntax/smarty.vim (100%) rename share/vim/{vim73 => vim74}/syntax/smcl.vim (100%) create mode 100644 share/vim/vim74/syntax/smil.vim rename share/vim/{vim73 => vim74}/syntax/smith.vim (100%) rename share/vim/{vim73 => vim74}/syntax/sml.vim (100%) rename share/vim/{vim73 => vim74}/syntax/snnsnet.vim (100%) create mode 100644 share/vim/vim74/syntax/snnspat.vim rename share/vim/{vim73 => vim74}/syntax/snnsres.vim (100%) rename share/vim/{vim73 => vim74}/syntax/snobol4.vim (100%) rename share/vim/{vim73 => vim74}/syntax/spec.vim (100%) rename share/vim/{vim73 => vim74}/syntax/specman.vim (100%) create mode 100644 share/vim/vim74/syntax/spice.vim rename share/vim/{vim73 => vim74}/syntax/splint.vim (100%) create mode 100644 share/vim/vim74/syntax/spup.vim rename share/vim/{vim73 => vim74}/syntax/spyce.vim (100%) rename share/vim/{vim73 => vim74}/syntax/sql.vim (100%) create mode 100644 share/vim/vim74/syntax/sqlanywhere.vim rename share/vim/{vim73 => vim74}/syntax/sqlforms.vim (100%) create mode 100644 share/vim/vim74/syntax/sqlhana.vim rename share/vim/{vim73 => vim74}/syntax/sqlinformix.vim (100%) rename share/vim/{vim73 => vim74}/syntax/sqlj.vim (100%) rename share/vim/{vim73 => vim74}/syntax/sqloracle.vim (100%) create mode 100644 share/vim/vim74/syntax/sqr.vim rename share/vim/{vim73 => vim74}/syntax/squid.vim (100%) create mode 100644 share/vim/vim74/syntax/sshconfig.vim create mode 100644 share/vim/vim74/syntax/sshdconfig.vim create mode 100644 share/vim/vim74/syntax/st.vim rename share/vim/{vim73 => vim74}/syntax/stata.vim (100%) rename share/vim/{vim73 => vim74}/syntax/stp.vim (100%) rename share/vim/{vim73 => vim74}/syntax/strace.vim (100%) create mode 100644 share/vim/vim74/syntax/sudoers.vim rename share/vim/{vim73 => vim74}/syntax/svg.vim (100%) create mode 100644 share/vim/vim74/syntax/svn.vim rename share/vim/{vim73 => vim74}/syntax/syncolor.vim (100%) create mode 100644 share/vim/vim74/syntax/synload.vim rename share/vim/{vim73 => vim74}/syntax/syntax.vim (100%) create mode 100644 share/vim/vim74/syntax/sysctl.vim rename share/vim/{vim73 => vim74}/syntax/tads.vim (100%) rename share/vim/{vim73 => vim74}/syntax/tags.vim (100%) rename share/vim/{vim73 => vim74}/syntax/tak.vim (100%) rename share/vim/{vim73 => vim74}/syntax/takcmp.vim (100%) rename share/vim/{vim73 => vim74}/syntax/takout.vim (100%) rename share/vim/{vim73 => vim74}/syntax/tar.vim (100%) create mode 100644 share/vim/vim74/syntax/taskdata.vim create mode 100644 share/vim/vim74/syntax/taskedit.vim create mode 100644 share/vim/vim74/syntax/tasm.vim rename share/vim/{vim73 => vim74}/syntax/tcl.vim (100%) rename share/vim/{vim73 => vim74}/syntax/tcsh.vim (100%) rename share/vim/{vim73 => vim74}/syntax/terminfo.vim (100%) create mode 100644 share/vim/vim74/syntax/tex.vim rename share/vim/{vim73 => vim74}/syntax/texinfo.vim (100%) rename share/vim/{vim73 => vim74}/syntax/texmf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/tf.vim (100%) create mode 100644 share/vim/vim74/syntax/tidy.vim rename share/vim/{vim73 => vim74}/syntax/tilde.vim (100%) rename share/vim/{vim73 => vim74}/syntax/tli.vim (100%) rename share/vim/{vim73 => vim74}/syntax/tpp.vim (100%) rename share/vim/{vim73 => vim74}/syntax/trasys.vim (100%) create mode 100644 share/vim/vim74/syntax/treetop.vim rename share/vim/{vim73 => vim74}/syntax/trustees.vim (100%) create mode 100644 share/vim/vim74/syntax/tsalt.vim rename share/vim/{vim73 => vim74}/syntax/tsscl.vim (100%) rename share/vim/{vim73 => vim74}/syntax/tssgm.vim (100%) rename share/vim/{vim73 => vim74}/syntax/tssop.vim (100%) create mode 100644 share/vim/vim74/syntax/tt2.vim create mode 100644 share/vim/vim74/syntax/tt2html.vim create mode 100644 share/vim/vim74/syntax/tt2js.vim rename share/vim/{vim73 => vim74}/syntax/uc.vim (100%) rename share/vim/{vim73 => vim74}/syntax/udevconf.vim (100%) rename share/vim/{vim73 => vim74}/syntax/udevperm.vim (100%) rename share/vim/{vim73 => vim74}/syntax/udevrules.vim (100%) create mode 100644 share/vim/vim74/syntax/uil.vim rename share/vim/{vim73 => vim74}/syntax/updatedb.vim (100%) create mode 100644 share/vim/vim74/syntax/upstart.vim create mode 100644 share/vim/vim74/syntax/upstreamdat.vim create mode 100644 share/vim/vim74/syntax/upstreaminstalllog.vim create mode 100644 share/vim/vim74/syntax/upstreamlog.vim create mode 100644 share/vim/vim74/syntax/usserverlog.vim create mode 100644 share/vim/vim74/syntax/usw2kagtlog.vim create mode 100644 share/vim/vim74/syntax/valgrind.vim rename share/vim/{vim73 => vim74}/syntax/vb.vim (100%) rename share/vim/{vim73 => vim74}/syntax/vera.vim (100%) create mode 100644 share/vim/vim74/syntax/verilog.vim rename share/vim/{vim73 => vim74}/syntax/verilogams.vim (100%) rename share/vim/{vim73 => vim74}/syntax/vgrindefs.vim (100%) create mode 100644 share/vim/vim74/syntax/vhdl.vim create mode 100644 share/vim/vim74/syntax/vim.vim create mode 100644 share/vim/vim74/syntax/viminfo.vim rename share/vim/{vim73 => vim74}/syntax/virata.vim (100%) rename share/vim/{vim73 => vim74}/syntax/vmasm.vim (100%) rename share/vim/{vim73 => vim74}/syntax/voscm.vim (100%) rename share/vim/{vim73 => vim74}/syntax/vrml.vim (100%) rename share/vim/{vim73 => vim74}/syntax/vsejcl.vim (100%) rename share/vim/{vim73 => vim74}/syntax/wdiff.vim (100%) rename share/vim/{vim73 => vim74}/syntax/web.vim (100%) rename share/vim/{vim73 => vim74}/syntax/webmacro.vim (100%) create mode 100644 share/vim/vim74/syntax/wget.vim rename share/vim/{vim73 => vim74}/syntax/whitespace.vim (100%) rename share/vim/{vim73 => vim74}/syntax/winbatch.vim (100%) rename share/vim/{vim73 => vim74}/syntax/wml.vim (100%) rename share/vim/{vim73 => vim74}/syntax/wsh.vim (100%) rename share/vim/{vim73 => vim74}/syntax/wsml.vim (100%) rename share/vim/{vim73 => vim74}/syntax/wvdial.vim (100%) rename share/vim/{vim73 => vim74}/syntax/xbl.vim (100%) create mode 100644 share/vim/vim74/syntax/xdefaults.vim create mode 100644 share/vim/vim74/syntax/xf86conf.vim rename share/vim/{vim73 => vim74}/syntax/xhtml.vim (100%) rename share/vim/{vim73 => vim74}/syntax/xinetd.vim (100%) rename share/vim/{vim73 => vim74}/syntax/xkb.vim (100%) rename share/vim/{vim73 => vim74}/syntax/xmath.vim (100%) create mode 100644 share/vim/vim74/syntax/xml.vim rename share/vim/{vim73 => vim74}/syntax/xmodmap.vim (100%) rename share/vim/{vim73 => vim74}/syntax/xpm.vim (100%) create mode 100644 share/vim/vim74/syntax/xpm2.vim create mode 100644 share/vim/vim74/syntax/xquery.vim create mode 100644 share/vim/vim74/syntax/xs.vim rename share/vim/{vim73 => vim74}/syntax/xsd.vim (100%) rename share/vim/{vim73 => vim74}/syntax/xslt.vim (100%) rename share/vim/{vim73 => vim74}/syntax/xxd.vim (100%) create mode 100644 share/vim/vim74/syntax/yacc.vim create mode 100644 share/vim/vim74/syntax/yaml.vim rename share/vim/{vim73 => vim74}/syntax/z8a.vim (100%) create mode 100644 share/vim/vim74/syntax/zimbu.vim rename share/vim/{vim73 => vim74}/syntax/zsh.vim (100%) rename share/vim/{vim73 => vim74}/termcap (100%) rename share/vim/{vim73 => vim74}/tools.info (100%) rename share/vim/{vim73 => vim74}/tools/README.txt (100%) rename share/vim/{vim73 => vim74}/tools/blink.c (100%) rename share/vim/{vim73 => vim74}/tools/ccfilter.1 (100%) rename share/vim/{vim73 => vim74}/tools/ccfilter.c (100%) create mode 100644 share/vim/vim74/tools/ccfilter_README.txt rename share/vim/{vim73 => vim74}/tools/efm_filter.pl (100%) rename share/vim/{vim73 => vim74}/tools/efm_filter.txt (100%) create mode 100644 share/vim/vim74/tools/efm_perl.pl rename share/vim/{vim73 => vim74}/tools/mve.awk (100%) rename share/vim/{vim73 => vim74}/tools/mve.txt (100%) rename share/vim/{vim73 => vim74}/tools/pltags.pl (100%) rename share/vim/{vim73 => vim74}/tools/ref (100%) rename share/vim/{vim73 => vim74}/tools/shtags.1 (100%) rename share/vim/{vim73 => vim74}/tools/shtags.pl (100%) rename share/vim/{vim73 => vim74}/tools/unicode.vim (100%) rename share/vim/{vim73 => vim74}/tools/vim132 (100%) create mode 100644 share/vim/vim74/tools/vim_vs_net.cmd rename share/vim/{vim73 => vim74}/tools/vimm (100%) rename share/vim/{vim73 => vim74}/tools/vimspell.sh (100%) rename share/vim/{vim73 => vim74}/tools/vimspell.txt (100%) rename share/vim/{vim73 => vim74}/tools/xcmdsrv_client.c (100%) rename share/vim/{vim73 => vim74}/tutor.info (100%) create mode 100644 share/vim/vim74/tutor/Makefile rename share/vim/{vim73 => vim74}/tutor/README.el.cp737.txt (100%) rename share/vim/{vim73 => vim74}/tutor/README.el.txt (100%) rename share/vim/{vim73 => vim74}/tutor/README.txt (100%) rename share/vim/{vim73 => vim74}/tutor/README.txt.info (100%) create mode 100644 share/vim/vim74/tutor/tutor create mode 100644 share/vim/vim74/tutor/tutor.bar create mode 100644 share/vim/vim74/tutor/tutor.bar.utf-8 rename share/vim/{vim73 => vim74}/tutor/tutor.ca (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.ca.utf-8 (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.cs (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.cs.cp1250 (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.cs.utf-8 (100%) create mode 100644 share/vim/vim74/tutor/tutor.de create mode 100644 share/vim/vim74/tutor/tutor.de.utf-8 rename share/vim/{vim73 => vim74}/tutor/tutor.el (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.el.cp737 (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.el.utf-8 (100%) create mode 100644 share/vim/vim74/tutor/tutor.eo create mode 100644 share/vim/vim74/tutor/tutor.eo.utf-8 rename share/vim/{vim73 => vim74}/tutor/tutor.es (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.es.utf-8 (100%) create mode 100644 share/vim/vim74/tutor/tutor.fr create mode 100644 share/vim/vim74/tutor/tutor.fr.utf-8 create mode 100644 share/vim/vim74/tutor/tutor.hr create mode 100644 share/vim/vim74/tutor/tutor.hr.cp1250 create mode 100644 share/vim/vim74/tutor/tutor.hr.utf-8 create mode 100644 share/vim/vim74/tutor/tutor.hu create mode 100644 share/vim/vim74/tutor/tutor.hu.cp1250 create mode 100644 share/vim/vim74/tutor/tutor.hu.utf-8 rename share/vim/{vim73 => vim74}/tutor/tutor.info (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.it (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.it.utf-8 (100%) create mode 100644 share/vim/vim74/tutor/tutor.ja.euc create mode 100644 share/vim/vim74/tutor/tutor.ja.sjis create mode 100644 share/vim/vim74/tutor/tutor.ja.utf-8 create mode 100644 share/vim/vim74/tutor/tutor.ko.euc create mode 100644 share/vim/vim74/tutor/tutor.ko.utf-8 create mode 100644 share/vim/vim74/tutor/tutor.nb create mode 100644 share/vim/vim74/tutor/tutor.nb.utf-8 create mode 100644 share/vim/vim74/tutor/tutor.nl create mode 100644 share/vim/vim74/tutor/tutor.nl.utf-8 create mode 100644 share/vim/vim74/tutor/tutor.no create mode 100644 share/vim/vim74/tutor/tutor.no.utf-8 rename share/vim/{vim73 => vim74}/tutor/tutor.pl (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.pl.cp1250 (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.pl.utf-8 (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.pt (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.pt.utf-8 (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.ru (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.ru.cp1251 (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.ru.utf-8 (100%) create mode 100644 share/vim/vim74/tutor/tutor.sk create mode 100644 share/vim/vim74/tutor/tutor.sk.cp1250 create mode 100644 share/vim/vim74/tutor/tutor.sk.utf-8 rename share/vim/{vim73 => vim74}/tutor/tutor.sv (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.sv.utf-8 (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.tr.iso9 (100%) rename share/vim/{vim73 => vim74}/tutor/tutor.tr.utf-8 (100%) create mode 100644 share/vim/vim74/tutor/tutor.utf-8 rename share/vim/{vim73 => vim74}/tutor/tutor.vi.utf-8 (100%) create mode 100644 share/vim/vim74/tutor/tutor.vim rename share/vim/{vim73 => vim74}/tutor/tutor.zh.big5 (100%) create mode 100644 share/vim/vim74/tutor/tutor.zh.euc copy share/vim/{vim73 => vim74}/tutor/tutor.zh.utf-8 (100%) create mode 100644 share/vim/vim74/tutor/tutor.zh_cn.utf-8 rename share/vim/{vim73/tutor/tutor.zh.utf-8 => vim74/tutor/tutor.zh_tw.utf-8} (100%) create mode 100644 share/vim/vim74/vim.exe rename share/vim/{vim73 => vim74}/vim16x16.gif (100%) rename share/vim/{vim73 => vim74}/vim16x16.png (100%) rename share/vim/{vim73 => vim74}/vim16x16.xpm (100%) rename share/vim/{vim73 => vim74}/vim32x32.gif (100%) rename share/vim/{vim73 => vim74}/vim32x32.png (100%) rename share/vim/{vim73 => vim74}/vim32x32.xpm (100%) rename share/vim/{vim73 => vim74}/vim48x48.gif (100%) rename share/vim/{vim73 => vim74}/vim48x48.png (100%) rename share/vim/{vim73 => vim74}/vim48x48.xpm (100%) rename share/vim/{vim73 => vim74}/vimlogo.cdr (100%) create mode 100644 share/vim/vim74/vimlogo.eps rename share/vim/{vim73 => vim74}/vimlogo.gif (100%) rename share/vim/{vim73 => vim74}/vimlogo.pdf (100%) rename share/vim/{vim73 => vim74}/vimlogo.xpm (100%) create mode 100644 share/vim/vim74/vimrc_example.vim diff --git a/bin/gvim b/bin/gvim index b4b5b96e..34771e8d 100755 --- a/bin/gvim +++ b/bin/gvim @@ -1,3 +1,3 @@ #!/bin/sh -exec /share/vim/vim73/gvim "$@" +exec /share/vim/vim74/gvim "$@" diff --git a/bin/vi b/bin/vi index 90da3ce2..93ba2788 100755 --- a/bin/vi +++ b/bin/vi @@ -1,3 +1,3 @@ #!/bin/sh -exec /share/vim/vim73/vim "$@" +exec /share/vim/vim74/vim "$@" diff --git a/bin/vim b/bin/vim index 90da3ce2..93ba2788 100755 --- a/bin/vim +++ b/bin/vim @@ -1,3 +1,3 @@ #!/bin/sh -exec /share/vim/vim73/vim "$@" +exec /share/vim/vim74/vim "$@" diff --git a/share/vim/vim73/autoload/ada.vim b/share/vim/vim73/autoload/ada.vim deleted file mode 100644 index 8f525f48..00000000 --- a/share/vim/vim73/autoload/ada.vim +++ /dev/null @@ -1,630 +0,0 @@ -"------------------------------------------------------------------------------ -" Description: Perform Ada specific completion & tagging. -" Language: Ada (2005) -" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $ -" Maintainer: Martin Krischik -" Taylor Venable -" Neil Bird -" Ned Okie -" $Author: krischik $ -" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ -" Version: 4.6 -" $Revision: 887 $ -" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $ -" History: 24.05.2006 MK Unified Headers -" 26.05.2006 MK ' should not be in iskeyword. -" 16.07.2006 MK Ada-Mode as vim-ball -" 02.10.2006 MK Better folding. -" 15.10.2006 MK Bram's suggestion for runtime integration -" 05.11.2006 MK Bram suggested not to use include protection for -" autoload -" 05.11.2006 MK Bram suggested to save on spaces -" 08.07.2007 TV fix mapleader problems. -" 09.05.2007 MK Session just won't work no matter how much -" tweaking is done -" 19.09.2007 NO still some mapleader problems -" Help Page: ft-ada-functions -"------------------------------------------------------------------------------ - -if version < 700 - finish -endif - -" Section: Constants {{{1 -" -let g:ada#DotWordRegex = '\a\w*\(\_s*\.\_s*\a\w*\)*' -let g:ada#WordRegex = '\a\w*' -let g:ada#Comment = "\\v^(\"[^\"]*\"|'.'|[^\"']){-}\\zs\\s*--.*" -let g:ada#Keywords = [] - -" Section: g:ada#Keywords {{{1 -" -" Section: add Ada keywords {{{2 -" -for Item in ['abort', 'else', 'new', 'return', 'abs', 'elsif', 'not', 'reverse', 'abstract', 'end', 'null', 'accept', 'entry', 'select', 'access', 'exception', 'of', 'separate', 'aliased', 'exit', 'or', 'subtype', 'all', 'others', 'synchronized', 'and', 'for', 'out', 'array', 'function', 'overriding', 'tagged', 'at', 'task', 'generic', 'package', 'terminate', 'begin', 'goto', 'pragma', 'then', 'body', 'private', 'type', 'if', 'procedure', 'case', 'in', 'protected', 'until', 'constant', 'interface', 'use', 'is', 'raise', 'declare', 'range', 'when', 'delay', 'limited', 'record', 'while', 'delta', 'loop', 'rem', 'with', 'digits', 'renames', 'do', 'mod', 'requeue', 'xor'] - let g:ada#Keywords += [{ - \ 'word': Item, - \ 'menu': 'keyword', - \ 'info': 'Ada keyword.', - \ 'kind': 'k', - \ 'icase': 1}] -endfor - -" Section: GNAT Project Files {{{3 -" -if exists ('g:ada_with_gnat_project_files') - for Item in ['project'] - let g:ada#Keywords += [{ - \ 'word': Item, - \ 'menu': 'keyword', - \ 'info': 'GNAT projectfile keyword.', - \ 'kind': 'k', - \ 'icase': 1}] - endfor -endif - -" Section: add standart exception {{{2 -" -for Item in ['Constraint_Error', 'Program_Error', 'Storage_Error', 'Tasking_Error', 'Status_Error', 'Mode_Error', 'Name_Error', 'Use_Error', 'Device_Error', 'End_Error', 'Data_Error', 'Layout_Error', 'Length_Error', 'Pattern_Error', 'Index_Error', 'Translation_Error', 'Time_Error', 'Argument_Error', 'Tag_Error', 'Picture_Error', 'Terminator_Error', 'Conversion_Error', 'Pointer_Error', 'Dereference_Error', 'Update_Error'] - let g:ada#Keywords += [{ - \ 'word': Item, - \ 'menu': 'exception', - \ 'info': 'Ada standart exception.', - \ 'kind': 'x', - \ 'icase': 1}] -endfor - -" Section: add GNAT exception {{{3 -" -if exists ('g:ada_gnat_extensions') - for Item in ['Assert_Failure'] - let g:ada#Keywords += [{ - \ 'word': Item, - \ 'menu': 'exception', - \ 'info': 'GNAT exception.', - \ 'kind': 'x', - \ 'icase': 1}] - endfor -endif - -" Section: add Ada buildin types {{{2 -" -for Item in ['Boolean', 'Integer', 'Natural', 'Positive', 'Float', 'Character', 'Wide_Character', 'Wide_Wide_Character', 'String', 'Wide_String', 'Wide_Wide_String', 'Duration'] - let g:ada#Keywords += [{ - \ 'word': Item, - \ 'menu': 'type', - \ 'info': 'Ada buildin type.', - \ 'kind': 't', - \ 'icase': 1}] -endfor - -" Section: add GNAT buildin types {{{3 -" -if exists ('g:ada_gnat_extensions') - for Item in ['Short_Integer', 'Short_Short_Integer', 'Long_Integer', 'Long_Long_Integer', 'Short_Float', 'Short_Short_Float', 'Long_Float', 'Long_Long_Float'] - let g:ada#Keywords += [{ - \ 'word': Item, - \ 'menu': 'type', - \ 'info': 'GNAT buildin type.', - \ 'kind': 't', - \ 'icase': 1}] - endfor -endif - -" Section: add Ada Attributes {{{2 -" -for Item in ['''Access', '''Address', '''Adjacent', '''Aft', '''Alignment', '''Base', '''Bit_Order', '''Body_Version', '''Callable', '''Caller', '''Ceiling', '''Class', '''Component_Size', '''Compose', '''Constrained', '''Copy_Sign', '''Count', '''Definite', '''Delta', '''Denorm', '''Digits', '''Emax', '''Exponent', '''External_Tag', '''Epsilon', '''First', '''First_Bit', '''Floor', '''Fore', '''Fraction', '''Identity', '''Image', '''Input', '''Large', '''Last', '''Last_Bit', '''Leading_Part', '''Length', '''Machine', '''Machine_Emax', '''Machine_Emin', '''Machine_Mantissa', '''Machine_Overflows', '''Machine_Radix', '''Machine_Rounding', '''Machine_Rounds', '''Mantissa', '''Max', '''Max_Size_In_Storage_Elements', '''Min', '''Mod', '''Model', '''Model_Emin', '''Model_Epsilon', '''Model_Mantissa', '''Model_Small', '''Modulus', '''Output', '''Partition_ID', '''Pos', '''Position', '''Pred', '''Priority', '''Range', '''Read', '''Remainder', '''Round', '''Rounding', '''Safe_Emax', '''Safe_First', '''Safe_Large', '''Safe_Last', '''Safe_Small', '''Scale', '''Scaling', '''Signed_Zeros', '''Size', '''Small', '''Storage_Pool', '''Storage_Size', '''Stream_Size', '''Succ', '''Tag', '''Terminated', '''Truncation', '''Unbiased_Rounding', '''Unchecked_Access', '''Val', '''Valid', '''Value', '''Version', '''Wide_Image', '''Wide_Value', '''Wide_Wide_Image', '''Wide_Wide_Value', '''Wide_Wide_Width', '''Wide_Width', '''Width', '''Write'] - let g:ada#Keywords += [{ - \ 'word': Item, - \ 'menu': 'attribute', - \ 'info': 'Ada attribute.', - \ 'kind': 'a', - \ 'icase': 1}] -endfor - -" Section: add GNAT Attributes {{{3 -" -if exists ('g:ada_gnat_extensions') - for Item in ['''Abort_Signal', '''Address_Size', '''Asm_Input', '''Asm_Output', '''AST_Entry', '''Bit', '''Bit_Position', '''Code_Address', '''Default_Bit_Order', '''Elaborated', '''Elab_Body', '''Elab_Spec', '''Emax', '''Enum_Rep', '''Epsilon', '''Fixed_Value', '''Has_Access_Values', '''Has_Discriminants', '''Img', '''Integer_Value', '''Machine_Size', '''Max_Interrupt_Priority', '''Max_Priority', '''Maximum_Alignment', '''Mechanism_Code', '''Null_Parameter', '''Object_Size', '''Passed_By_Reference', '''Range_Length', '''Storage_Unit', '''Target_Name', '''Tick', '''To_Address', '''Type_Class', '''UET_Address', '''Unconstrained_Array', '''Universal_Literal_String', '''Unrestricted_Access', '''VADS_Size', '''Value_Size', '''Wchar_T_Size', '''Word_Size'] - let g:ada#Keywords += [{ - \ 'word': Item, - \ 'menu': 'attribute', - \ 'info': 'GNAT attribute.', - \ 'kind': 'a', - \ 'icase': 1}] - endfor -endif - -" Section: add Ada Pragmas {{{2 -" -for Item in ['All_Calls_Remote', 'Assert', 'Assertion_Policy', 'Asynchronous', 'Atomic', 'Atomic_Components', 'Attach_Handler', 'Controlled', 'Convention', 'Detect_Blocking', 'Discard_Names', 'Elaborate', 'Elaborate_All', 'Elaborate_Body', 'Export', 'Import', 'Inline', 'Inspection_Point', 'Interface (Obsolescent)', 'Interrupt_Handler', 'Interrupt_Priority', 'Linker_Options', 'List', 'Locking_Policy', 'Memory_Size (Obsolescent)', 'No_Return', 'Normalize_Scalars', 'Optimize', 'Pack', 'Page', 'Partition_Elaboration_Policy', 'Preelaborable_Initialization', 'Preelaborate', 'Priority', 'Priority_Specific_Dispatching', 'Profile', 'Pure', 'Queueing_Policy', 'Relative_Deadline', 'Remote_Call_Interface', 'Remote_Types', 'Restrictions', 'Reviewable', 'Shared (Obsolescent)', 'Shared_Passive', 'Storage_Size', 'Storage_Unit (Obsolescent)', 'Suppress', 'System_Name (Obsolescent)', 'Task_Dispatching_Policy', 'Unchecked_Union', 'Unsuppress', 'Volatile', 'Volatile_Components'] - let g:ada#Keywords += [{ - \ 'word': Item, - \ 'menu': 'pragma', - \ 'info': 'Ada pragma.', - \ 'kind': 'p', - \ 'icase': 1}] -endfor - -" Section: add GNAT Pragmas {{{3 -" -if exists ('g:ada_gnat_extensions') - for Item in ['Abort_Defer', 'Ada_83', 'Ada_95', 'Ada_05', 'Annotate', 'Ast_Entry', 'C_Pass_By_Copy', 'Comment', 'Common_Object', 'Compile_Time_Warning', 'Complex_Representation', 'Component_Alignment', 'Convention_Identifier', 'CPP_Class', 'CPP_Constructor', 'CPP_Virtual', 'CPP_Vtable', 'Debug', 'Elaboration_Checks', 'Eliminate', 'Export_Exception', 'Export_Function', 'Export_Object', 'Export_Procedure', 'Export_Value', 'Export_Valued_Procedure', 'Extend_System', 'External', 'External_Name_Casing', 'Finalize_Storage_Only', 'Float_Representation', 'Ident', 'Import_Exception', 'Import_Function', 'Import_Object', 'Import_Procedure', 'Import_Valued_Procedure', 'Initialize_Scalars', 'Inline_Always', 'Inline_Generic', 'Interface_Name', 'Interrupt_State', 'Keep_Names', 'License', 'Link_With', 'Linker_Alias', 'Linker_Section', 'Long_Float', 'Machine_Attribute', 'Main_Storage', 'Obsolescent', 'Passive', 'Polling', 'Profile_Warnings', 'Propagate_Exceptions', 'Psect_Object', 'Pure_Function', 'Restriction_Warnings', 'Source_File_Name', 'Source_File_Name_Project', 'Source_Reference', 'Stream_Convert', 'Style_Checks', 'Subtitle', 'Suppress_All', 'Suppress_Exception_Locations', 'Suppress_Initialization', 'Task_Info', 'Task_Name', 'Task_Storage', 'Thread_Body', 'Time_Slice', 'Title', 'Unimplemented_Unit', 'Universal_Data', 'Unreferenced', 'Unreserve_All_Interrupts', 'Use_VADS_Size', 'Validity_Checks', 'Warnings', 'Weak_External'] - let g:ada#Keywords += [{ - \ 'word': Item, - \ 'menu': 'pragma', - \ 'info': 'GNAT pragma.', - \ 'kind': 'p', - \ 'icase': 1}] - endfor -endif -" 1}}} - -" Section: g:ada#Ctags_Kinds {{{1 -" -let g:ada#Ctags_Kinds = { - \ 'P': ["packspec", "package specifications"], - \ 'p': ["package", "packages"], - \ 'T': ["typespec", "type specifications"], - \ 't': ["type", "types"], - \ 'U': ["subspec", "subtype specifications"], - \ 'u': ["subtype", "subtypes"], - \ 'c': ["component", "record type components"], - \ 'l': ["literal", "enum type literals"], - \ 'V': ["varspec", "variable specifications"], - \ 'v': ["variable", "variables"], - \ 'f': ["formal", "generic formal parameters"], - \ 'n': ["constant", "constants"], - \ 'x': ["exception", "user defined exceptions"], - \ 'R': ["subprogspec", "subprogram specifications"], - \ 'r': ["subprogram", "subprograms"], - \ 'K': ["taskspec", "task specifications"], - \ 'k': ["task", "tasks"], - \ 'O': ["protectspec", "protected data specifications"], - \ 'o': ["protected", "protected data"], - \ 'E': ["entryspec", "task/protected data entry specifications"], - \ 'e': ["entry", "task/protected data entries"], - \ 'b': ["label", "labels"], - \ 'i': ["identifier", "loop/declare identifiers"], - \ 'a': ["autovar", "automatic variables"], - \ 'y': ["annon", "loops and blocks with no identifier"]} - -" Section: ada#Word (...) {{{1 -" -" Extract current Ada word across multiple lines -" AdaWord ([line, column])\ -" -function ada#Word (...) - if a:0 > 1 - let l:Line_Nr = a:1 - let l:Column_Nr = a:2 - 1 - else - let l:Line_Nr = line('.') - let l:Column_Nr = col('.') - 1 - endif - - let l:Line = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' ) - - " Cope with tag searching for items in comments; if we are, don't loop - " backards looking for previous lines - if l:Column_Nr > strlen(l:Line) - " We were in a comment - let l:Line = getline(l:Line_Nr) - let l:Search_Prev_Lines = 0 - else - let l:Search_Prev_Lines = 1 - endif - - " Go backwards until we find a match (Ada ID) that *doesn't* include our - " location - i.e., the previous ID. This is because the current 'correct' - " match will toggle matching/not matching as we traverse characters - " backwards. Thus, we have to find the previous unrelated match, exclude - " it, then use the next full match (ours). - " Remember to convert vim column 'l:Column_Nr' [1..n] to string offset [0..(n-1)] - " ... but start, here, one after the required char. - let l:New_Column = l:Column_Nr + 1 - while 1 - let l:New_Column = l:New_Column - 1 - if l:New_Column < 0 - " Have to include previous l:Line from file - let l:Line_Nr = l:Line_Nr - 1 - if l:Line_Nr < 1 || !l:Search_Prev_Lines - " Start of file or matching in a comment - let l:Line_Nr = 1 - let l:New_Column = 0 - let l:Our_Match = match (l:Line, g:ada#WordRegex ) - break - endif - " Get previous l:Line, and prepend it to our search string - let l:New_Line = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' ) - let l:New_Column = strlen (l:New_Line) - 1 - let l:Column_Nr = l:Column_Nr + l:New_Column - let l:Line = l:New_Line . l:Line - endif - " Check to see if this is a match excluding 'us' - let l:Match_End = l:New_Column + - \ matchend (strpart (l:Line,l:New_Column), g:ada#WordRegex ) - 1 - if l:Match_End >= l:New_Column && - \ l:Match_End < l:Column_Nr - " Yes - let l:Our_Match = l:Match_End+1 + - \ match (strpart (l:Line,l:Match_End+1), g:ada#WordRegex ) - break - endif - endwhile - - " Got anything? - if l:Our_Match < 0 - return '' - else - let l:Line = strpart (l:Line, l:Our_Match) - endif - - " Now simply add further lines until the match gets no bigger - let l:Match_String = matchstr (l:Line, g:ada#WordRegex) - let l:Last_Line = line ('$') - let l:Line_Nr = line ('.') + 1 - while l:Line_Nr <= l:Last_Line - let l:Last_Match = l:Match_String - let l:Line = l:Line . - \ substitute (getline (l:Line_Nr), g:ada#Comment, '', '') - let l:Match_String = matchstr (l:Line, g:ada#WordRegex) - if l:Match_String == l:Last_Match - break - endif - endwhile - - " Strip whitespace & return - return substitute (l:Match_String, '\s\+', '', 'g') -endfunction ada#Word - -" Section: ada#List_Tag (...) {{{1 -" -" List tags in quickfix window -" -function ada#List_Tag (...) - if a:0 > 1 - let l:Tag_Word = ada#Word (a:1, a:2) - elseif a:0 > 0 - let l:Tag_Word = a:1 - else - let l:Tag_Word = ada#Word () - endif - - echo "Searching for" l:Tag_Word - - let l:Pattern = '^' . l:Tag_Word . '$' - let l:Tag_List = taglist (l:Pattern) - let l:Error_List = [] - " - " add symbols - " - for Tag_Item in l:Tag_List - if l:Tag_Item['kind'] == '' - let l:Tag_Item['kind'] = 's' - endif - - let l:Error_List += [ - \ l:Tag_Item['filename'] . '|' . - \ l:Tag_Item['cmd'] . '|' . - \ l:Tag_Item['kind'] . "\t" . - \ l:Tag_Item['name'] ] - endfor - set errorformat=%f\|%l\|%m - cexpr l:Error_List - cwindow -endfunction ada#List_Tag - -" Section: ada#Jump_Tag (Word, Mode) {{{1 -" -" Word tag - include '.' and if Ada make uppercase -" -function ada#Jump_Tag (Word, Mode) - if a:Word == '' - " Get current word - let l:Word = ada#Word() - if l:Word == '' - throw "NOT_FOUND: no identifier found." - endif - else - let l:Word = a:Word - endif - - echo "Searching for " . l:Word - - try - execute a:Mode l:Word - catch /.*:E426:.*/ - let ignorecase = &ignorecase - set ignorecase - execute a:Mode l:Word - let &ignorecase = ignorecase - endtry - - return -endfunction ada#Jump_Tag - -" Section: ada#Insert_Backspace () {{{1 -" -" Backspace at end of line after auto-inserted commentstring '-- ' wipes it -" -function ada#Insert_Backspace () - let l:Line = getline ('.') - if col ('.') > strlen (l:Line) && - \ match (l:Line, '-- $') != -1 && - \ match (&comments,'--') != -1 - return "\\\" - else - return "\" - endif - - return -endfunction ada#InsertBackspace - -" Section: Insert Completions {{{1 -" -" Section: ada#User_Complete(findstart, base) {{{2 -" -" This function is used for the 'complete' option. -" -function! ada#User_Complete(findstart, base) - if a:findstart == 1 - " - " locate the start of the word - " - let line = getline ('.') - let start = col ('.') - 1 - while start > 0 && line[start - 1] =~ '\i\|''' - let start -= 1 - endwhile - return start - else - " - " look up matches - " - let l:Pattern = '^' . a:base . '.*$' - " - " add keywords - " - for Tag_Item in g:ada#Keywords - if l:Tag_Item['word'] =~? l:Pattern - if complete_add (l:Tag_Item) == 0 - return [] - endif - if complete_check () - return [] - endif - endif - endfor - return [] - endif -endfunction ada#User_Complete - -" Section: ada#Completion (cmd) {{{2 -" -" Word completion (^N/^R/^X^]) - force '.' inclusion -function ada#Completion (cmd) - set iskeyword+=46 - return a:cmd . "\=ada#Completion_End ()\" -endfunction ada#Completion - -" Section: ada#Completion_End () {{{2 -" -function ada#Completion_End () - set iskeyword-=46 - return '' -endfunction ada#Completion_End - -" Section: ada#Create_Tags {{{1 -" -function ada#Create_Tags (option) - if a:option == 'file' - let l:Filename = fnamemodify (bufname ('%'), ':p') - elseif a:option == 'dir' - let l:Filename = - \ fnamemodify (bufname ('%'), ':p:h') . "*.ada " . - \ fnamemodify (bufname ('%'), ':p:h') . "*.adb " . - \ fnamemodify (bufname ('%'), ':p:h') . "*.ads" - else - let l:Filename = a:option - endif - execute '!ctags --excmd=number ' . l:Filename -endfunction ada#Create_Tags - -" Section: ada#Switch_Session {{{1 -" -function ada#Switch_Session (New_Session) - " - " you should not save to much date into the seession since they will - " be sourced - " - let l:sessionoptions=&sessionoptions - - try - set sessionoptions=buffers,curdir,folds,globals,resize,slash,tabpages,tabpages,unix,winpos,winsize - - if a:New_Session != v:this_session - " - " We actualy got a new session - otherwise there - " is nothing to do. - " - if strlen (v:this_session) > 0 - execute 'mksession! ' . v:this_session - endif - - let v:this_session = a:New_Session - - "if filereadable (v:this_session) - "execute 'source ' . v:this_session - "endif - - augroup ada_session - autocmd! - autocmd VimLeavePre * execute 'mksession! ' . v:this_session - augroup END - - "if exists ("g:Tlist_Auto_Open") && g:Tlist_Auto_Open - "TlistOpen - "endif - - endif - finally - let &sessionoptions=l:sessionoptions - endtry - - return -endfunction ada#Switch_Session - -" Section: GNAT Pretty Printer folding {{{1 -" -if exists('g:ada_folding') && g:ada_folding[0] == 'g' - " - " Lines consisting only of ')' ';' are due to a gnat pretty bug and - " have the same level as the line above (can't happen in the first - " line). - " - let s:Fold_Collate = '^\([;)]*$\|' - - " - " some lone statements are folded with the line above - " - if stridx (g:ada_folding, 'i') >= 0 - let s:Fold_Collate .= '\s\+\$\|' - endif - if stridx (g:ada_folding, 'b') >= 0 - let s:Fold_Collate .= '\s\+\$\|' - endif - if stridx (g:ada_folding, 'p') >= 0 - let s:Fold_Collate .= '\s\+\$\|' - endif - if stridx (g:ada_folding, 'x') >= 0 - let s:Fold_Collate .= '\s\+\$\|' - endif - - " We also handle empty lines and - " comments here. - let s:Fold_Collate .= '--\)' - - function ada#Pretty_Print_Folding (Line) " {{{2 - let l:Text = getline (a:Line) - - if l:Text =~ s:Fold_Collate - " - " fold with line above - " - let l:Level = "=" - elseif l:Text =~ '^\s\+(' - " - " gnat outdents a line which stards with a ( by one characters so - " that parameters which follow are aligned. - " - let l:Level = (indent (a:Line) + 1) / &shiftwidth - else - let l:Level = indent (a:Line) / &shiftwidth - endif - - return l:Level - endfunction ada#Pretty_Print_Folding " }}}2 -endif - -" Section: Options and Menus {{{1 -" -" Section: ada#Switch_Syntax_Options {{{2 -" -function ada#Switch_Syntax_Option (option) - syntax off - if exists ('g:ada_' . a:option) - unlet g:ada_{a:option} - echo a:option . 'now off' - else - let g:ada_{a:option}=1 - echo a:option . 'now on' - endif - syntax on -endfunction ada#Switch_Syntax_Option - -" Section: ada#Map_Menu {{{2 -" -function ada#Map_Menu (Text, Keys, Command) - if a:Keys[0] == ':' - execute - \ "50amenu " . - \ "Ada." . escape(a:Text, ' ') . - \ "" . a:Keys . - \ " :" . a:Command . "" - execute - \ "command -buffer " . - \ a:Keys[1:] . - \" :" . a:Command . "" - elseif a:Keys[0] == '<' - execute - \ "50amenu " . - \ "Ada." . escape(a:Text, ' ') . - \ "" . a:Keys . - \ " :" . a:Command . "" - execute - \ "nnoremap " . - \ a:Keys . - \" :" . a:Command . "" - execute - \ "inoremap " . - \ a:Keys . - \" :" . a:Command . "" - else - if exists("g:mapleader") - let l:leader = g:mapleader - else - let l:leader = '\' - endif - execute - \ "50amenu " . - \ "Ada." . escape(a:Text, ' ') . - \ "" . escape(l:leader . "a" . a:Keys , '\') . - \ " :" . a:Command . "" - execute - \ "nnoremap " . - \ escape(l:leader . "a" . a:Keys , '\') . - \" :" . a:Command - execute - \ "inoremap " . - \ escape(l:leader . "a" . a:Keys , '\') . - \" :" . a:Command - endif - return -endfunction - -" Section: ada#Map_Popup {{{2 -" -function ada#Map_Popup (Text, Keys, Command) - if exists("g:mapleader") - let l:leader = g:mapleader - else - let l:leader = '\' - endif - execute - \ "50amenu " . - \ "PopUp." . escape(a:Text, ' ') . - \ "" . escape(l:leader . "a" . a:Keys , '\') . - \ " :" . a:Command . "" - - call ada#Map_Menu (a:Text, a:Keys, a:Command) - return -endfunction ada#Map_Popup - -" }}}1 - -lockvar g:ada#WordRegex -lockvar g:ada#DotWordRegex -lockvar g:ada#Comment -lockvar! g:ada#Keywords -lockvar! g:ada#Ctags_Kinds - -finish " 1}}} - -"------------------------------------------------------------------------------ -" Copyright (C) 2006 Martin Krischik -" -" Vim is Charityware - see ":help license" or uganda.txt for licence details. -"------------------------------------------------------------------------------ -" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab -" vim: foldmethod=marker diff --git a/share/vim/vim73/autoload/ccomplete.vim b/share/vim/vim73/autoload/ccomplete.vim deleted file mode 100644 index 12fc92df..00000000 --- a/share/vim/vim73/autoload/ccomplete.vim +++ /dev/null @@ -1,605 +0,0 @@ -" Vim completion script -" Language: C -" Maintainer: Bram Moolenaar -" Last Change: 2010 Mar 23 - - -" 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 - - " init cache for vimgrep to empty - let s:grepCache = {} - - " 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 stridx(strpart(line, 0, col), ';') != -1 - " Handle multiple declarations on the same line. - let col2 = col - 1 - while line[col2] != ';' - let col2 -= 1 - endwhile - let line = strpart(line, col2 + 1) - let col -= col2 - endif - if stridx(strpart(line, 0, col), ',') != -1 - " Handle multiple declarations on the same line in a function - " declaration. - let col2 = col - 1 - while line[col2] != ',' - let col2 -= 1 - endwhile - if strpart(line, col2 + 1, col - col2 - 1) =~ ' *[^ ][^ ]* *[^ ]' - let line = strpart(line, col2 + 1) - let col -= col2 - endif - endif - if len(items) == 1 - " Completing one word and it's a local variable: May add '[', '.' or - " '->'. - let match = items[0] - let kind = 'v' - if match(line, '\<' . match . '\s*\[') > 0 - let match .= '[' - else - let res = s:Nextitem(strpart(line, 0, col), [''], 0, 1) - 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' : '', 'kind' : kind, 'info' : line}] - else - " Completing "var.", "var.something", etc. - let res = s:Nextitem(strpart(line, 0, col), items[1:], 0, 1) - endif - endif - - if len(items) == 1 - " Only one part, no "." or "->": complete from tags file. - let tags = taglist('^' . base) - - " Remove members, these can't appear without something in front. - call filter(tags, 'has_key(v:val, "kind") ? v:val["kind"] != "m" : 1') - - " Remove static matches in other files. - call filter(tags, '!has_key(v:val, "static") || !v:val["static"] || bufnr("%") == bufnr(v:val["filename"])') - - call extend(res, map(tags, 's:Tag2item(v:val)')) - endif - - if len(res) == 0 - " Find the variable in the tags file(s) - let diclist = taglist('^' . items[0] . '$') - - " Remove members, these can't appear without something in front. - call filter(diclist, 'has_key(v:val, "kind") ? v:val["kind"] != "m" : 1') - - let res = [] - for i in range(len(diclist)) - " New ctags has the "typeref" field. Patched version has "typename". - if has_key(diclist[i], 'typename') - call extend(res, s:StructMembers(diclist[i]['typename'], items[1:], 1)) - elseif has_key(diclist[i], 'typeref') - call extend(res, s:StructMembers(diclist[i]['typeref'], items[1:], 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, 1)) - 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, 1) - 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)) > 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 res = {'match': a:val['name']} - - let res['extra'] = s:Tagcmd2extra(a:val['cmd'], a:val['name'], a:val['filename']) - - let s = s:Dict2info(a:val) - if s != '' - let res['info'] = s - endif - - let res['tagline'] = '' - if has_key(a:val, "kind") - let kind = a:val['kind'] - let res['kind'] = kind - if kind == 'v' - let res['tagline'] = "\t" . a:val['cmd'] - let res['dict'] = a:val - elseif kind == 'f' - let res['match'] = a:val['name'] . '(' - endif - endif - - return res -endfunction - -" Use all the items in dictionary for the "info" entry. -function! s:Dict2info(dict) - let info = '' - for k in sort(keys(a:dict)) - let info .= k . repeat(' ', 10 - len(k)) - if k == 'cmd' - let info .= substitute(matchstr(a:dict['cmd'], '/^\s*\zs.*\ze$/'), '\\\(.\)', '\1', 'g') - else - let info .= a:dict[k] - endif - let info .= "\n" - endfor - return info -endfunc - -" Parse a tag line and return a dictionary with items like taglist() -function! s:ParseTagline(line) - let l = split(a:line, "\t") - let d = {} - if len(l) >= 3 - let d['name'] = l[0] - let d['filename'] = l[1] - let d['cmd'] = l[2] - let n = 2 - if l[2] =~ '^/' - " Find end of cmd, it may contain Tabs. - while n < len(l) && l[n] !~ '/;"$' - let n += 1 - let d['cmd'] .= " " . l[n] - endwhile - endif - for i in range(n + 1, len(l) - 1) - if l[i] == 'file:' - let d['static'] = 1 - elseif l[i] !~ ':' - let d['kind'] = l[i] - else - let d[matchstr(l[i], '[^:]*')] = matchstr(l[i], ':\zs.*') - endif - endfor - endif - - return d -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 add = s:GetAddition(line, a:val['match'], [a:val], a:brackets == '') - let res = {'word': a:val['match'] . a:brackets . add } - - if has_key(a:val, 'info') - " Use info from Tag2item(). - let res['info'] = a:val['info'] - else - " Parse the tag line and add each part to the "info" entry. - let s = s:Dict2info(s:ParseTagline(line)) - if s != '' - let res['info'] = s - endif - endif - - if has_key(a:val, 'kind') - let res['kind'] = a:val['kind'] - elseif add == '(' - let res['kind'] = 'f' - else - let s = matchstr(line, '\t\(kind:\)\=\zs\S\ze\(\t\|$\)') - if s != '' - let res['kind'] = s - endif - endif - - if has_key(a:val, 'extra') - let res['menu'] = a:val['extra'] - return res - endif - - " Isolate the command after the tag and filename. - let s = matchstr(line, '[^\t]*\t[^\t]*\t\zs\(/^.*$/\|[^\t]*\)\ze\(;"\t\|\t\|$\)') - if s != '' - let res['menu'] = s:Tagcmd2extra(s, a:val['match'], matchstr(line, '[^\t]*\t\zs[^\t]*\ze\t')) - endif - return res -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, '^/^\s*\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, all) - - " 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)) - - " Skip tokens starting with a non-ID character. - if tokens[tidx] !~ '^\h' - continue - endif - - " Recognize "struct foobar" and "union foobar". - " Also do "class foobar" when it's C++ after all (doesn't work very well - " though). - if (tokens[tidx] == 'struct' || tokens[tidx] == 'union' || tokens[tidx] == 'class') && tidx + 1 < len(tokens) - let res = s:StructMembers(tokens[tidx] . ':' . tokens[tidx + 1], a:items, a:all) - 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)) - let item = diclist[tagidx] - - " New ctags has the "typeref" field. Patched version has "typename". - if has_key(item, 'typeref') - call extend(res, s:StructMembers(item['typeref'], a:items, a:all)) - continue - endif - if has_key(item, 'typename') - call extend(res, s:StructMembers(item['typename'], a:items, a:all)) - continue - endif - - " Only handle typedefs here. - if item['kind'] != 't' - continue - endif - - " Skip matches local to another file. - if has_key(item, 'static') && item['static'] && bufnr('%') != bufnr(item['filename']) - continue - endif - - " For old ctags we recognize "typedef struct aaa" and - " "typedef union bbb" in the tags file command. - let cmd = item['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' || cmdtokens[0] == 'class' - 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, a:all)) - endif - elseif a:depth < 10 - " Could be "typedef other_T some_T". - call extend(res, s:Nextitem(cmdtokens[0], a:items, a:depth + 1, a:all)) - 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. -" When "all" is non-zero find all, otherwise just return 1 if there is any -" member. -function! s:StructMembers(typename, items, all) - " Todo: What about local structures? - let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")')) - if fnames == '' - return [] - endif - - let typename = a:typename - let qflist = [] - let cached = 0 - if a:all == 0 - let n = '1' " stop at first found match - if has_key(s:grepCache, a:typename) - let qflist = s:grepCache[a:typename] - let cached = 1 - endif - else - let n = '' - endif - if !cached - while 1 - exe 'silent! ' . n . '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 - - if a:all == 0 - " Store the result to be able to use it again later. - let s:grepCache[a:typename] = qflist - endif - endif - - " Put matching members in matches[]. - let matches = [] - for l in qflist - let memb = matchstr(l['text'], '[^\t]*') - if memb =~ '^' . a:items[0] - " Skip matches local to another file. - if match(l['text'], "\tfile:") < 0 || bufnr('%') == bufnr(matchstr(l['text'], '\t\zs[^\t]*')) - let item = {'match': memb, 'tagline': l['text']} - - " Add the kind of item. - let s = matchstr(l['text'], '\t\(kind:\)\=\zs\S\ze\(\t\|$\)') - if s != '' - let item['kind'] = s - if s == 'f' - let item['match'] = memb . '(' - endif - endif - - call add(matches, item) - endif - 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 :], a:all) - endif - - " Failed to find anything. - return [] -endfunction - -" For matching members, find matches for following items. -" When "all" is non-zero find all, otherwise just return 1 if there is any -" member. -function! s:SearchMembers(matches, items, all) - 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'] - elseif has_key(a:matches[i].dict, 'typeref') - let typename = a:matches[i].dict['typeref'] - endif - let line = "\t" . a:matches[i].dict['cmd'] - else - let line = a:matches[i]['tagline'] - let e = matchend(line, '\ttypename:') - if e < 0 - let e = matchend(line, '\ttyperef:') - endif - if e > 0 - " Use typename field - let typename = matchstr(line, '[^\t]*', e) - endif - endif - - if typename != '' - call extend(res, s:StructMembers(typename, a:items, a:all)) - 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, a:all)) - endif - endif - endif - if a:all == 0 && len(res) > 0 - break - endif - endfor - return res -endfunc diff --git a/share/vim/vim73/autoload/getscript.vim b/share/vim/vim73/autoload/getscript.vim deleted file mode 100644 index 6e019764..00000000 --- a/share/vim/vim73/autoload/getscript.vim +++ /dev/null @@ -1,644 +0,0 @@ -" --------------------------------------------------------------------- -" getscript.vim -" Author: Charles E. Campbell, Jr. -" Date: Dec 28, 2009 -" Version: 32 -" Installing: :help glvs-install -" Usage: :help glvs -" -" GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim -"redraw!|call inputsave()|call input("Press to continue")|call inputrestore() -" --------------------------------------------------------------------- -" Initialization: {{{1 -" if you're sourcing this file, surely you can't be -" expecting vim to be in its vi-compatible mode! -if exists("g:loaded_getscript") - finish -endif -let g:loaded_getscript= "v32" -if &cp - echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)" - finish -endif -if v:version < 702 - echohl WarningMsg - echo "***warning*** this version of getscript needs vim 7.2" - echohl Normal - finish -endif -let s:keepcpo = &cpo -set cpo&vim -"DechoTabOn - -" --------------------------- -" Global Variables: {{{1 -" --------------------------- -" Cygwin Detection ------- {{{2 -if !exists("g:getscript_cygwin") - if has("win32") || has("win95") || has("win64") || has("win16") - if &shell =~ '\%(\\|\\)\%(\.exe\)\=$' - let g:getscript_cygwin= 1 - else - let g:getscript_cygwin= 0 - endif - else - let g:getscript_cygwin= 0 - endif -endif - -" wget vs curl {{{2 -if !exists("g:GetLatestVimScripts_wget") - if executable("wget") - let g:GetLatestVimScripts_wget= "wget" - elseif executable("curl") - let g:GetLatestVimScripts_wget= "curl" - else - let g:GetLatestVimScripts_wget = 'echo "GetLatestVimScripts needs wget or curl"' - let g:GetLatestVimScripts_options = "" - endif -endif - -" options that wget and curl require: -if !exists("g:GetLatestVimScripts_options") - if g:GetLatestVimScripts_wget == "wget" - let g:GetLatestVimScripts_options= "-q -O" - elseif g:GetLatestVimScripts_wget == "curl" - let g:GetLatestVimScripts_options= "-s -O" - else - let g:GetLatestVimScripts_options= "" - endif -endif - -" by default, allow autoinstall lines to work -if !exists("g:GetLatestVimScripts_allowautoinstall") - let g:GetLatestVimScripts_allowautoinstall= 1 -endif - -"" For debugging: -"let g:GetLatestVimScripts_wget = "echo" -"let g:GetLatestVimScripts_options = "options" - -" --------------------------------------------------------------------- -" Check If AutoInstall Capable: {{{1 -let s:autoinstall= "" -if g:GetLatestVimScripts_allowautoinstall - - if (has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")) && &shell != "bash" - " windows (but not cygwin/bash) - let s:dotvim= "vimfiles" - if !exists("g:GetLatestVimScripts_mv") - let g:GetLatestVimScripts_mv= "ren" - endif - - else - " unix - let s:dotvim= ".vim" - if !exists("g:GetLatestVimScripts_mv") - let g:GetLatestVimScripts_mv= "mv" - endif - endif - - if exists("g:GetLatestVimScripts_autoinstalldir") && isdirectory(g:GetLatestVimScripts_autoinstalldir) - let s:autoinstall= g:GetLatestVimScripts_autoinstalldir" - elseif exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim) - let s:autoinstall= $HOME."/".s:dotvim - endif -" call Decho("s:autoinstall<".s:autoinstall.">") -"else "Decho -" call Decho("g:GetLatestVimScripts_allowautoinstall=".g:GetLatestVimScripts_allowautoinstall.": :AutoInstall: disabled") -endif - -" --------------------------------------------------------------------- -" Public Interface: {{{1 -com! -nargs=0 GetLatestVimScripts call getscript#GetLatestVimScripts() -com! -nargs=0 GetScript call getscript#GetLatestVimScripts() -silent! com -nargs=0 GLVS call getscript#GetLatestVimScripts() - -" --------------------------------------------------------------------- -" GetLatestVimScripts: this function gets the latest versions of {{{1 -" scripts based on the list in -" (first dir in runtimepath)/GetLatest/GetLatestVimScripts.dat -fun! getscript#GetLatestVimScripts() -" call Dfunc("GetLatestVimScripts() autoinstall<".s:autoinstall.">") - -" insure that wget is executable - if executable(g:GetLatestVimScripts_wget) != 1 - echoerr "GetLatestVimScripts needs ".g:GetLatestVimScripts_wget." which apparently is not available on your system" -" call Dret("GetLatestVimScripts : wget not executable/availble") - return - endif - - " insure that fnameescape() is available - if !exists("*fnameescape") - echoerr "GetLatestVimScripts needs fnameescape() (provided by 7.1.299 or later)" - return - endif - - " Find the .../GetLatest subdirectory under the runtimepath - for datadir in split(&rtp,',') + [''] - if isdirectory(datadir."/GetLatest") -" call Decho("found directory<".datadir.">") - let datadir= datadir . "/GetLatest" - break - endif - if filereadable(datadir."GetLatestVimScripts.dat") -" call Decho("found ".datadir."/GetLatestVimScripts.dat") - break - endif - endfor - - " Sanity checks: readability and writability - if datadir == "" - echoerr 'Missing "GetLatest/" on your runtimepath - see :help glvs-dist-install' -" call Dret("GetLatestVimScripts : unable to find a GetLatest subdirectory") - return - endif - if filewritable(datadir) != 2 - echoerr "(getLatestVimScripts) Your ".datadir." isn't writable" -" call Dret("GetLatestVimScripts : non-writable directory<".datadir.">") - return - endif - let datafile= datadir."/GetLatestVimScripts.dat" - if !filereadable(datafile) - echoerr "Your data file<".datafile."> isn't readable" -" call Dret("GetLatestVimScripts : non-readable datafile<".datafile.">") - return - endif - if !filewritable(datafile) - echoerr "Your data file<".datafile."> isn't writable" -" call Dret("GetLatestVimScripts : non-writable datafile<".datafile.">") - return - endif - " -------------------- - " Passed sanity checks - " -------------------- - -" call Decho("datadir <".datadir.">") -" call Decho("datafile <".datafile.">") - - " don't let any event handlers interfere (like winmanager's, taglist's, etc) - let eikeep = &ei - let hlskeep = &hls - let acdkeep = &acd - set ei=all hls&vim noacd - - " Edit the datafile (ie. GetLatestVimScripts.dat): - " 1. record current directory (origdir), - " 2. change directory to datadir, - " 3. split window - " 4. edit datafile - let origdir= getcwd() -" call Decho("exe cd ".fnameescape(substitute(datadir,'\','/','ge'))) - exe "cd ".fnameescape(substitute(datadir,'\','/','ge')) - split -" call Decho("exe e ".fnameescape(substitute(datafile,'\','/','ge'))) - exe "e ".fnameescape(substitute(datafile,'\','/','ge')) - res 1000 - let s:downloads = 0 - let s:downerrors= 0 - - " Check on dependencies mentioned in plugins -" call Decho(" ") -" call Decho("searching plugins for GetLatestVimScripts dependencies") - let lastline = line("$") -" call Decho("lastline#".lastline) - let firstdir = substitute(&rtp,',.*$','','') - let plugins = split(globpath(firstdir,"plugin/*.vim"),'\n') - let plugins = plugins + split(globpath(firstdir,"AsNeeded/*.vim"),'\n') - let foundscript = 0 - - " this loop updates the GetLatestVimScripts.dat file - " with dependencies explicitly mentioned in the plugins - " via GetLatestVimScripts: ... lines - " It reads the plugin script at the end of the GetLatestVimScripts.dat - " file, examines it, and then removes it. - for plugin in plugins -" call Decho(" ") -" call Decho("plugin<".plugin.">") - - " read plugin in - " evidently a :r creates a new buffer (the "#" buffer) that is subsequently unused -- bwiping it - $ -" call Decho(".dependency checking<".plugin."> line$=".line("$")) -" call Decho("..exe silent r ".fnameescape(plugin)) - exe "silent r ".fnameescape(plugin) - exe "silent bwipe ".bufnr("#") - - while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0 - let depscript = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e') - let depscriptid = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\(\d\+\)\s\+.*$','\1','') - let llp1 = lastline+1 -" call Decho("..depscript<".depscript.">") - - " found a "GetLatestVimScripts: # #" line in the script; - " check if its already in the datafile by searching backwards from llp1, - " the (prior to reading in the plugin script) last line plus one of the GetLatestVimScripts.dat file, - " for the script-id with no wrapping allowed. - let curline = line(".") - let noai_script = substitute(depscript,'\s*:AutoInstall:\s*','','e') - exe llp1 - let srchline = search('^\s*'.depscriptid.'\s\+\d\+\s\+.*$','bW') - if srchline == 0 - " this second search is taken when, for example, a 0 0 scriptname is to be skipped over - let srchline= search('\<'.noai_script.'\>','bW') - endif -" call Decho("..noai_script<".noai_script."> depscriptid#".depscriptid." srchline#".srchline." curline#".line(".")." lastline#".lastline) - - if srchline == 0 - " found a new script to permanently include in the datafile - let keep_rega = @a - let @a = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','') - echomsg "Appending <".@a."> to ".datafile." for ".depscript -" call Decho("..Appending <".@a."> to ".datafile." for ".depscript) - exe lastline."put a" - let @a = keep_rega - let lastline = llp1 - let curline = curline + 1 - let foundscript = foundscript + 1 -" else " Decho -" call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")") - endif - - let curline = curline + 1 - exe curline - endwhile - - " llp1: last line plus one - let llp1= lastline + 1 -" call Decho(".deleting lines: ".llp1.",$d") - exe "silent! ".llp1.",$d" - endfor -" call Decho("--- end dependency checking loop --- foundscript=".foundscript) -" call Decho(" ") -" call Dredir("BUFFER TEST (GetLatestVimScripts 1)","ls!") - - if foundscript == 0 - setlocal nomod - endif - - " -------------------------------------------------------------------- - " Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat - " -------------------------------------------------------------------- -" call Decho("begin: checking out-of-date scripts using datafile<".datafile.">") - setlocal lz - 1 -" /^-----/,$g/^\s*\d/call Decho(getline(".")) - 1 - /^-----/,$g/^\s*\d/call s:GetOneScript() -" call Decho("--- end out-of-date checking --- ") - - " Final report (an echomsg) - try - silent! ?^-------? - catch /^Vim\%((\a\+)\)\=:E114/ -" call Dret("GetLatestVimScripts : nothing done!") - return - endtry - exe "norm! kz\" - redraw! - let s:msg = "" - if s:downloads == 1 - let s:msg = "Downloaded one updated script to <".datadir.">" - elseif s:downloads == 2 - let s:msg= "Downloaded two updated scripts to <".datadir.">" - elseif s:downloads > 1 - let s:msg= "Downloaded ".s:downloads." updated scripts to <".datadir.">" - else - let s:msg= "Everything was already current" - endif - if s:downerrors > 0 - let s:msg= s:msg." (".s:downerrors." downloading errors)" - endif - echomsg s:msg - " save the file - if &mod - silent! w! - endif - q - - " restore events and current directory - exe "cd ".fnameescape(substitute(origdir,'\','/','ge')) - let &ei = eikeep - let &hls = hlskeep - let &acd = acdkeep - setlocal nolz -" call Dredir("BUFFER TEST (GetLatestVimScripts 2)","ls!") -" call Dret("GetLatestVimScripts : did ".s:downloads." downloads") -endfun - -" --------------------------------------------------------------------- -" GetOneScript: (Get Latest Vim Script) this function operates {{{1 -" on the current line, interpreting two numbers and text as -" ScriptID, SourceID, and Filename. -" It downloads any scripts that have newer versions from vim.sourceforge.net. -fun! s:GetOneScript(...) -" call Dfunc("GetOneScript()") - - " set options to allow progress to be shown on screen - let rega= @a - let t_ti= &t_ti - let t_te= &t_te - let rs = &rs - set t_ti= t_te= nors - - " put current line on top-of-screen and interpret it into - " a script identifer : used to obtain webpage - " source identifier : used to identify current version - " and an associated comment: used to report on what's being considered - if a:0 >= 3 - let scriptid = a:1 - let srcid = a:2 - let fname = a:3 - let cmmnt = "" -" call Decho("scriptid<".scriptid.">") -" call Decho("srcid <".srcid.">") -" call Decho("fname <".fname.">") - else - let curline = getline(".") - if curline =~ '^\s*#' - let @a= rega -" call Dret("GetOneScript : skipping a pure comment line") - return - endif - let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)\(\s*#.*\)\=$' - try - let scriptid = substitute(curline,parsepat,'\1','e') - catch /^Vim\%((\a\+)\)\=:E486/ - let scriptid= 0 - endtry - try - let srcid = substitute(curline,parsepat,'\2','e') - catch /^Vim\%((\a\+)\)\=:E486/ - let srcid= 0 - endtry - try - let fname= substitute(curline,parsepat,'\3','e') - catch /^Vim\%((\a\+)\)\=:E486/ - let fname= "" - endtry - try - let cmmnt= substitute(curline,parsepat,'\4','e') - catch /^Vim\%((\a\+)\)\=:E486/ - let cmmnt= "" - endtry -" call Decho("curline <".curline.">") -" call Decho("parsepat<".parsepat.">") -" call Decho("scriptid<".scriptid.">") -" call Decho("srcid <".srcid.">") -" call Decho("fname <".fname.">") - endif - - " plugin author protection from downloading his/her own scripts atop their latest work - if scriptid == 0 || srcid == 0 - " When looking for :AutoInstall: lines, skip scripts that have 0 0 scriptname - let @a= rega -" call Dret("GetOneScript : skipping a scriptid==srcid==0 line") - return - endif - - let doautoinstall= 0 - if fname =~ ":AutoInstall:" -" call Decho("case AutoInstall: fname<".fname.">") - let aicmmnt= substitute(fname,'\s\+:AutoInstall:\s\+',' ','') -" call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall) - if s:autoinstall != "" - let doautoinstall = g:GetLatestVimScripts_allowautoinstall - endif - else - let aicmmnt= fname - endif -" call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall) - - exe "norm z\" - redraw! -" call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid) - echo 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid - - " grab a copy of the plugin's vim.sourceforge.net webpage - let scriptaddr = 'http://vim.sourceforge.net/script.php?script_id='.scriptid - let tmpfile = tempname() - let v:errmsg = "" - - " make up to three tries at downloading the description - let itry= 1 - while itry <= 3 -" call Decho(".try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr) - if has("win32") || has("win16") || has("win95") -" call Decho(".new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile).' '.shellescape(scriptaddr)."|bw!") - new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile).' '.shellescape(scriptaddr)|bw! - else -" call Decho(".exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile)." ".shellescape(scriptaddr)) - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile)." ".shellescape(scriptaddr) - endif - if itry == 1 - exe "silent vsplit ".fnameescape(tmpfile) - else - silent! e % - endif - setlocal bh=wipe - - " find the latest source-id in the plugin's webpage - silent! 1 - let findpkg= search('Click on the package to download','W') - if findpkg > 0 - break - endif - let itry= itry + 1 - endwhile -" call Decho(" --- end downloading tries while loop --- itry=".itry) - - " testing: did finding "Click on the package..." fail? - if findpkg == 0 || itry >= 4 - silent q! - call delete(tmpfile) - " restore options - let &t_ti = t_ti - let &t_te = t_te - let &rs = rs - let s:downerrors = s:downerrors + 1 -" call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">") - echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">" -" call Dret("GetOneScript : srch for /Click on the package/ failed") - let @a= rega - return - endif -" call Decho('found "Click on the package to download"') - - let findsrcid= search('src_id=','W') - if findsrcid == 0 - silent q! - call delete(tmpfile) - " restore options - let &t_ti = t_ti - let &t_te = t_te - let &rs = rs - let s:downerrors = s:downerrors + 1 -" call Decho("***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">") - echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">" - let @a= rega -" call Dret("GetOneScript : srch for /src_id/ failed") - return - endif -" call Decho('found "src_id=" in description page') - - let srcidpat = '^\s*\([^<]\+\)<.*$' - let latestsrcid= substitute(getline("."),srcidpat,'\1','') - let sname = substitute(getline("."),srcidpat,'\2','') " script name actually downloaded -" call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> sname<".sname.">") - silent q! - call delete(tmpfile) - - " convert the strings-of-numbers into numbers - let srcid = srcid + 0 - let latestsrcid = latestsrcid + 0 -" call Decho("srcid=".srcid." latestsrcid=".latestsrcid." sname<".sname.">") - - " has the plugin's most-recent srcid increased, which indicates that it has been updated - if latestsrcid > srcid -" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."]: need to update <".sname.">") - - let s:downloads= s:downloads + 1 - if sname == bufname("%") - " GetLatestVimScript has to be careful about downloading itself - let sname= "NEW_".sname - endif - - " ----------------------------------------------------------------------------- - " the plugin has been updated since we last obtained it, so download a new copy - " ----------------------------------------------------------------------------- -" call Decho(".downloading new <".sname.">") - echomsg ".downloading new <".sname.">" - if has("win32") || has("win16") || has("win95") -" call Decho(".new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='.latestsrcid)."|q") - new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='.latestsrcid)|q - else -" call Decho(".exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id=')) - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id=').latestsrcid - endif - - " -------------------------------------------------------------------------- - " AutoInstall: only if doautoinstall has been requested by the plugin itself - " -------------------------------------------------------------------------- - if doautoinstall -" call Decho(" ") -" call Decho("Autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname)) - if filereadable(sname) -" call Decho("<".sname."> is readable") -" call Decho("exe silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall)) - exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall) - let curdir = escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #") - let installdir= curdir."/Installed" - if !isdirectory(installdir) - call mkdir(installdir) - endif -" call Decho("curdir<".curdir."> installdir<".installdir.">") -" call Decho("exe cd ".fnameescape(s:autoinstall)) - exe "cd ".fnameescape(s:autoinstall) - - " determine target directory for moves - let firstdir= substitute(&rtp,',.*$','','') - let pname = substitute(sname,'\..*','.vim','') -" call Decho("determine tgtdir: is <".firstdir.'/AsNeeded/'.pname." readable?") - if filereadable(firstdir.'/AsNeeded/'.pname) - let tgtdir= "AsNeeded" - else - let tgtdir= "plugin" - endif -" call Decho("tgtdir<".tgtdir."> pname<".pname.">") - - " decompress - if sname =~ '\.bz2$' -" call Decho("decompress: attempt to bunzip2 ".sname) - exe "silent !bunzip2 ".shellescape(sname) - let sname= substitute(sname,'\.bz2$','','') -" call Decho("decompress: new sname<".sname."> after bunzip2") - elseif sname =~ '\.gz$' -" call Decho("decompress: attempt to gunzip ".sname) - exe "silent !gunzip ".shellescape(sname) - let sname= substitute(sname,'\.gz$','','') -" call Decho("decompress: new sname<".sname."> after gunzip") - else -" call Decho("no decompression needed") - endif - - " distribute archive(.zip, .tar, .vba) contents - if sname =~ '\.zip$' -" call Decho("dearchive: attempt to unzip ".sname) - exe "silent !unzip -o ".shellescape(sname) - elseif sname =~ '\.tar$' -" call Decho("dearchive: attempt to untar ".sname) - exe "silent !tar -xvf ".shellescape(sname) - elseif sname =~ '\.vba$' -" call Decho("dearchive: attempt to handle a vimball: ".sname) - silent 1split - if exists("g:vimball_home") - let oldvimballhome= g:vimball_home - endif - let g:vimball_home= s:autoinstall - exe "silent e ".fnameescape(sname) - silent so % - silent q - if exists("oldvimballhome") - let g:vimball_home= oldvimballhome - else - unlet g:vimball_home - endif - else -" call Decho("no dearchiving needed") - endif - - " --------------------------------------------- - " move plugin to plugin/ or AsNeeded/ directory - " --------------------------------------------- - if sname =~ '.vim$' -" call Decho("dearchive: attempt to simply move ".sname." to ".tgtdir) - exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".tgtdir - else -" call Decho("dearchive: move <".sname."> to installdir<".installdir.">") - exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".installdir - endif - if tgtdir != "plugin" -" call Decho("exe silent !".g:GetLatestVimScripts_mv." plugin/".shellescape(pname)." ".tgtdir) - exe "silent !".g:GetLatestVimScripts_mv." plugin/".shellescape(pname)." ".tgtdir - endif - - " helptags step - let docdir= substitute(&rtp,',.*','','e')."/doc" -" call Decho("helptags: docdir<".docdir.">") - exe "helptags ".fnameescape(docdir) - exe "cd ".fnameescape(curdir) - endif - if fname !~ ':AutoInstall:' - let modline=scriptid." ".latestsrcid." :AutoInstall: ".fname.cmmnt - else - let modline=scriptid." ".latestsrcid." ".fname.cmmnt - endif - else - let modline=scriptid." ".latestsrcid." ".fname.cmmnt - endif - - " update the data in the file - call setline(line("."),modline) -" call Decho("update data in ".expand("%")."#".line(".").": modline<".modline.">") -" else " Decho -" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."], no need to update") - endif - - " restore options - let &t_ti = t_ti - let &t_te = t_te - let &rs = rs - let @a = rega -" call Dredir("BUFFER TEST (GetOneScript)","ls!") - -" call Dret("GetOneScript") -endfun - -" --------------------------------------------------------------------- -" Restore Options: {{{1 -let &cpo= s:keepcpo -unlet s:keepcpo - -" --------------------------------------------------------------------- -" Modelines: {{{1 -" vim: ts=8 sts=2 fdm=marker nowrap diff --git a/share/vim/vim73/autoload/htmlcomplete.vim b/share/vim/vim73/autoload/htmlcomplete.vim deleted file mode 100644 index 5420321b..00000000 --- a/share/vim/vim73/autoload/htmlcomplete.vim +++ /dev/null @@ -1,765 +0,0 @@ -" Vim completion script -" Language: HTML and XHTML -" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) -" Last Change: 2006 Oct 19 - -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 ') - if style_start > 0 && style_end > 0 - let buf_styles = getline(style_start + 1, style_end - 1) - for a_style in buf_styles - if index(style, a_style) == -1 - if diff_style_start == 0 - if a_style =~ '\?,$d_ - let temp = getline(1,'$') - " undo deletion of start and end part - " so we can later save the file as valid html - " TODO: restore using grabbed lines if undolevel is 1? - normal 2u - if s:settings.use_css - call add(html, '
') - elseif s:settings.use_xhtml - call add(html, '
') - else - call add(html, '
') - endif - let html += temp - call add(html, '
') - - " Close this buffer - " TODO: the comment above says we're going to allow saving the file - " later...but here we discard it? - quit! - endfor - - let html[body_line_num] = body_line - - call add(html, '') - call add(html, '') - call add(html, s:body_end_line) - call add(html, '') - - let i = 1 - let name = "Diff" . (s:settings.use_xhtml ? ".xhtml" : ".html") - " Find an unused file name if current file name is already in use - while filereadable(name) - let name = substitute(name, '\d*\.x\?html$', '', '') . i . '.' . fnamemodify(copy(name), ":t:e") - let i += 1 - endwhile - exe "topleft new " . name - setlocal modifiable - - " just in case some user autocmd creates content in the new buffer, make sure - " it is empty before proceeding - %d - call append(0, html) - - if len(style) > 0 - 1 - let style_start = search('^')-1 - - " Insert javascript to toggle matching folds open and closed in all windows, - " if dynamic folding is active. - if s:settings.dynamic_folds - call append(style_start, [ - \ "" - \ ]) - endif - - " Insert styles from all the generated html documents and additional styles - " for the table-based layout of the side-by-side diff. The diff should take - " up the full browser window (but not more), and be static in size, - " horizontally scrollable when the lines are too long. Otherwise, the diff - " is pretty useless for really long lines. - if s:settings.use_css - call append(style_start, - \ ['' - \ ]) - endif - endif - - let &paste = s:old_paste - let &magic = s:old_magic -endfunc - -" Gets a single user option and sets it in the passed-in Dict, or gives it the -" default value if the option doesn't actually exist. -func! tohtml#GetOption(settings, option, default) - if exists('g:html_'.a:option) - let a:settings[a:option] = g:html_{a:option} - else - let a:settings[a:option] = a:default - endif -endfunc - -" returns a Dict containing the values of all user options for 2html, including -" default values for those not given an explicit value by the user. Discards the -" html_ prefix of the option for nicer looking code. -func! tohtml#GetUserSettings() - if exists('s:settings') - " just restore the known options if we've already retrieved them - return s:settings - else - " otherwise figure out which options are set - let user_settings = {} - - " Define the correct option if the old option name exists and we haven't - " already defined the correct one. Maybe I'll put out a warnig message about - " this sometime and remove the old option entirely at some even later time, - " but for now just silently accept the old option. - if exists('g:use_xhtml') && !exists("g:html_use_xhtml") - let g:html_use_xhtml = g:use_xhtml - endif - - " get current option settings with appropriate defaults - call tohtml#GetOption(user_settings, 'no_progress', !has("statusline") ) - call tohtml#GetOption(user_settings, 'diff_one_file', 0 ) - call tohtml#GetOption(user_settings, 'number_lines', &number ) - call tohtml#GetOption(user_settings, 'use_css', 1 ) - call tohtml#GetOption(user_settings, 'ignore_conceal', 0 ) - call tohtml#GetOption(user_settings, 'ignore_folding', 0 ) - call tohtml#GetOption(user_settings, 'dynamic_folds', 0 ) - call tohtml#GetOption(user_settings, 'no_foldcolumn', 0 ) - call tohtml#GetOption(user_settings, 'hover_unfold', 0 ) - call tohtml#GetOption(user_settings, 'no_pre', 0 ) - call tohtml#GetOption(user_settings, 'whole_filler', 0 ) - call tohtml#GetOption(user_settings, 'use_xhtml', 0 ) - - " override those settings that need it - - " hover opening implies dynamic folding - if user_settings.hover_unfold - let user_settings.dynamic_folds = 1 - endif - - " ignore folding overrides dynamic folding - if user_settings.ignore_folding && user_settings.dynamic_folds - let user_settings.dynamic_folds = 0 - let user_settings.hover_unfold = 0 - endif - - " dynamic folding with no foldcolumn implies hover opens - if user_settings.dynamic_folds && user_settings.no_foldcolumn - let user_settings.hover_unfold = 1 - endif - - " dynamic folding implies css - if user_settings.dynamic_folds - let user_settings.use_css = 1 - endif - - " if we're not using CSS we cannot use a pre section because tags - " aren't allowed inside a
 block
-    if !user_settings.use_css
-      let user_settings.no_pre = 1
-    endif
-
-    " Figure out proper MIME charset from the 'encoding' option.
-    if exists("g:html_use_encoding")
-      let user_settings.encoding = g:html_use_encoding
-    else
-      let vim_encoding = &encoding
-      if vim_encoding =~ '^8bit\|^2byte'
-	let vim_encoding = substitute(vim_encoding, '^8bit-\|^2byte-', '', '')
-      endif
-      if vim_encoding == 'latin1'
-	let user_settings.encoding = 'iso-8859-1'
-      elseif vim_encoding =~ "^cp12"
-	let user_settings.encoding = substitute(vim_encoding, 'cp', 'windows-', '')
-      elseif vim_encoding == 'sjis' || vim_encoding == 'cp932'
-	let user_settings.encoding = 'Shift_JIS'
-      elseif vim_encoding == 'big5' || vim_encoding == 'cp950'
-	let user_settings.encoding = "Big5"
-      elseif vim_encoding == 'euc-cn'
-	let user_settings.encoding = 'GB_2312-80'
-      elseif vim_encoding == 'euc-tw'
-	let user_settings.encoding = ""
-      elseif vim_encoding =~ '^euc\|^iso\|^koi'
-	let user_settings.encoding = substitute(vim_encoding, '.*', '\U\0', '')
-      elseif vim_encoding == 'cp949'
-	let user_settings.encoding = 'KS_C_5601-1987'
-      elseif vim_encoding == 'cp936'
-	let user_settings.encoding = 'GBK'
-      elseif vim_encoding =~ '^ucs\|^utf'
-	let user_settings.encoding = 'UTF-8'
-      else
-	let user_settings.encoding = ""
-      endif
-    endif
-
-    " TODO: font
-
-    return user_settings
-  endif
-endfunc
-
-let &cpo = s:cpo_sav
-unlet s:cpo_sav
-
-" Make sure any patches will probably use consistent indent
-"   vim: ts=8 sw=2 sts=2 noet
diff --git a/share/vim/vim73/autoload/vimball.vim b/share/vim/vim73/autoload/vimball.vim
deleted file mode 100644
index 13e82ac4..00000000
--- a/share/vim/vim73/autoload/vimball.vim
+++ /dev/null
@@ -1,737 +0,0 @@
-" vimball.vim : construct a file containing both paths and files
-" Author:	Charles E. Campbell, Jr.
-" Date:		Apr 12, 2010
-" Version:	31
-" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
-" Copyright: (c) 2004-2009 by Charles E. Campbell, Jr.
-"            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
-"            (see |copyright|) except use "Vimball" instead of "Vim".
-"            No warranty, express or implied.
-"  *** ***   Use At-Your-Own-Risk!   *** ***
-
-" ---------------------------------------------------------------------
-"  Load Once: {{{1
-if &cp || exists("g:loaded_vimball")
- finish
-endif
-let g:loaded_vimball = "v31"
-if v:version < 702
- echohl WarningMsg
- echo "***warning*** this version of vimball needs vim 7.2"
- echohl Normal
- finish
-endif
-let s:keepcpo= &cpo
-set cpo&vim
-"DechoTabOn
-
-" =====================================================================
-" Constants: {{{1
-if !exists("s:USAGE")
- let s:USAGE   = 0
- let s:WARNING = 1
- let s:ERROR   = 2
-
- " determine if cygwin is in use or not
- if !exists("g:netrw_cygwin")
-  if has("win32") || has("win95") || has("win64") || has("win16")
-   if &shell =~ '\%(\\|\\)\%(\.exe\)\=$'
-    let g:netrw_cygwin= 1
-   else
-    let g:netrw_cygwin= 0
-   endif
-  else
-   let g:netrw_cygwin= 0
-  endif
- endif
-
- " set up g:vimball_mkdir if the mkdir() call isn't defined
- if !exists("*mkdir")
-  if exists("g:netrw_local_mkdir")
-   let g:vimball_mkdir= g:netrw_local_mkdir
-  elseif executable("mkdir")
-   let g:vimball_mkdir= "mkdir"
-  elseif executable("makedir")
-   let g:vimball_mkdir= "makedir"
-  endif
-  if !exists(g:vimball_mkdir)
-   call vimball#ShowMesg(s:WARNING,"(vimball) g:vimball_mkdir undefined")
-  endif
- endif
-endif
-
-" =====================================================================
-"  Functions: {{{1
-
-" ---------------------------------------------------------------------
-" vimball#MkVimball: creates a vimball given a list of paths to files {{{2
-" Input:
-"     line1,line2: a range of lines containing paths to files to be included in the vimball
-"     writelevel : if true, force a write to filename.vba, even if it exists
-"                  (usually accomplished with :MkVimball! ...
-"     filename   : base name of file to be created (ie. filename.vba)
-" Output: a filename.vba using vimball format:
-"     path
-"     filesize
-"     [file]
-"     path
-"     filesize
-"     [file]
-fun! vimball#MkVimball(line1,line2,writelevel,...) range
-"  call Dfunc("MkVimball(line1=".a:line1." line2=".a:line2." writelevel=".a:writelevel." vimballname<".a:1.">) a:0=".a:0)
-  if a:1 =~ '\.vim$' || a:1 =~ '\.txt$'
-   let vbname= substitute(a:1,'\.\a\{3}$','.vba','')
-  else
-   let vbname= a:1
-  endif
-  if vbname !~ '\.vba$'
-   let vbname= vbname.'.vba'
-  endif
-"  call Decho("vbname<".vbname.">")
-  if !a:writelevel && a:1 =~ '[\/]'
-   call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes; use ! to insist")
-"   call Dret("MkVimball : vimball name<".a:1."> should not include slashes")
-   return
-  endif
-  if !a:writelevel && filereadable(vbname)
-   call vimball#ShowMesg(s:ERROR,"(MkVimball) file<".vbname."> exists; use ! to insist")
-"   call Dret("MkVimball : file<".vbname."> already exists; use ! to insist")
-   return
-  endif
-
-  " user option bypass
-  call vimball#SaveSettings()
-
-  if a:0 >= 2
-   " allow user to specify where to get the files
-   let home= expand(a:2)
-  else
-   " use first existing directory from rtp
-   let home= vimball#VimballHome()
-  endif
-
-  " save current directory
-  let curdir = getcwd()
-  call s:ChgDir(home)
-
-  " record current tab, initialize while loop index
-  let curtabnr = tabpagenr()
-  let linenr   = a:line1
-"  call Decho("curtabnr=".curtabnr)
-
-  while linenr <= a:line2
-   let svfile  = getline(linenr)
-"   call Decho("svfile<".svfile.">")
- 
-   if !filereadable(svfile)
-    call vimball#ShowMesg(s:ERROR,"unable to read file<".svfile.">")
-	call s:ChgDir(curdir)
-	call vimball#RestoreSettings()
-"    call Dret("MkVimball")
-    return
-   endif
- 
-   " create/switch to mkvimball tab
-   if !exists("vbtabnr")
-    tabnew
-    silent! file Vimball
-    let vbtabnr= tabpagenr()
-   else
-    exe "tabn ".vbtabnr
-   endif
- 
-   let lastline= line("$") + 1
-   if lastline == 2 && getline("$") == ""
-	call setline(1,'" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.')
-	call setline(2,'UseVimball')
-	call setline(3,'finish')
-	let lastline= line("$") + 1
-   endif
-   call setline(lastline  ,substitute(svfile,'$','	[[[1',''))
-   call setline(lastline+1,0)
-
-   " write the file from the tab
-"   call Decho("exe $r ".fnameescape(svfile))
-   exe "$r ".fnameescape(svfile)
-
-   call setline(lastline+1,line("$") - lastline - 1)
-"   call Decho("lastline=".lastline." line$=".line("$"))
-
-  " restore to normal tab
-   exe "tabn ".curtabnr
-   let linenr= linenr + 1
-  endwhile
-
-  " write the vimball
-  exe "tabn ".vbtabnr
-  call s:ChgDir(curdir)
-  setlocal ff=unix
-  if a:writelevel
-"   call Decho("exe w! ".fnameescape(vbname))
-   exe "w! ".fnameescape(vbname)
-  else
-"   call Decho("exe w ".fnameescape(vbname))
-   exe "w ".fnameescape(vbname)
-  endif
-"  call Decho("Vimball<".vbname."> created")
-  echo "Vimball<".vbname."> created"
-
-  " remove the evidence
-  setlocal nomod bh=wipe
-  exe "tabn ".curtabnr
-  exe "tabc ".vbtabnr
-
-  " restore options
-  call vimball#RestoreSettings()
-
-"  call Dret("MkVimball")
-endfun
-
-" ---------------------------------------------------------------------
-" vimball#Vimball: extract and distribute contents from a vimball {{{2
-"                  (invoked the the UseVimball command embedded in 
-"                  vimballs' prologue)
-fun! vimball#Vimball(really,...)
-"  call Dfunc("vimball#Vimball(really=".a:really.") a:0=".a:0)
-
-  if v:version < 701 || (v:version == 701 && !exists('*fnameescape'))
-   echoerr "your vim is missing the fnameescape() function"
-"   call Dret("vimball#Vimball : needs 7.1 with patch 299")
-   return
-  endif
-
-  if getline(1) !~ '^" Vimball Archiver'
-   echoerr "(Vimball) The current file does not appear to be a Vimball!"
-"   call Dret("vimball#Vimball")
-   return
-  endif
-
-  " set up standard settings
-  call vimball#SaveSettings()
-  let curtabnr    = tabpagenr()
-  let vimballfile = expand("%:tr")
-
-  " set up vimball tab
-"  call Decho("setting up vimball tab")
-  tabnew
-  silent! file Vimball
-  let vbtabnr= tabpagenr()
-  let didhelp= ""
-
-  " go to vim plugin home
-  if a:0 > 0
-   let home= expand(a:1)
-  else
-   let home= vimball#VimballHome()
-  endif
-"  call Decho("home<".home.">")
-
-  " save current directory and remove older same-named vimball, if any
-  let curdir = getcwd()
-"  call Decho("home<".home.">")
-"  call Decho("curdir<".curdir.">")
-
-  call s:ChgDir(home)
-  let s:ok_unablefind= 1
-  call vimball#RmVimball(vimballfile)
-  unlet s:ok_unablefind
-
-  let linenr  = 4
-  let filecnt = 0
-
-  " give title to listing of (extracted) files from Vimball Archive
-  if a:really
-   echohl Title     | echomsg "Vimball Archive"         | echohl None
-  else             
-   echohl Title     | echomsg "Vimball Archive Listing" | echohl None
-   echohl Statement | echomsg "files would be placed under: ".home | echohl None
-  endif
-
-  " apportion vimball contents to various files
-"  call Decho("exe tabn ".curtabnr)
-  exe "tabn ".curtabnr
-"  call Decho("linenr=".linenr." line$=".line("$"))
-  while 1 < linenr && linenr < line("$")
-   let fname   = substitute(getline(linenr),'\t\[\[\[1$','','')
-   let fname   = substitute(fname,'\\','/','g')
-"   let fsize   = getline(linenr+1)+0
-   let fsize   = substitute(getline(linenr+1),'^\(\d\+\).\{-}$','\1','')+0
-   let fenc    = substitute(getline(linenr+1),'^\d\+\s*\(\S\+\)$','\1','')
-   let filecnt = filecnt + 1
-"   call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt)
-
-   if a:really
-    echomsg "extracted <".fname.">: ".fsize." lines"
-   else
-    echomsg "would extract <".fname.">: ".fsize." lines"
-   endif
-"   call Decho("using L#".linenr.": will extract file<".fname.">")
-"   call Decho("using L#".(linenr+1).": fsize=".fsize)
-
-   " Allow AsNeeded/ directory to take place of plugin/ directory
-   " when AsNeeded/filename is filereadable or was present in VimballRecord
-   if fname =~ '\ instead of <".fname.">")
-	 let fname= anfname
-	endif
-   endif
-
-   " make directories if they don't exist yet
-   if a:really
-"    call Decho("making directories if they don't exist yet (fname<".fname.">)")
-    let fnamebuf= substitute(fname,'\\','/','g')
-	let dirpath = substitute(home,'\\','/','g')
-    while fnamebuf =~ '/'
-     let dirname  = dirpath."/".substitute(fnamebuf,'/.*$','','')
-	 let dirpath  = dirname
-     let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','')
-"	 call Decho("dirname<".dirname.">")
-     if !isdirectory(dirname)
-"      call Decho("making <".dirname.">")
-      if exists("g:vimball_mkdir")
-	   call system(g:vimball_mkdir." ".shellescape(dirname))
-      else
-       call mkdir(dirname)
-      endif
-	  call s:RecordInVar(home,"rmdir('".dirname."')")
-     endif
-    endwhile
-   endif
-   call s:ChgDir(home)
-
-   " grab specified qty of lines and place into "a" buffer
-   " (skip over path/filename and qty-lines)
-   let linenr   = linenr + 2
-   let lastline = linenr + fsize - 1
-"   call Decho("exe ".linenr.",".lastline."yank a")
-   exe "silent ".linenr.",".lastline."yank a"
-
-   " copy "a" buffer into tab
-"   call Decho('copy "a buffer into tab#'.vbtabnr)
-   exe "tabn ".vbtabnr
-   setlocal ma
-   silent! %d
-   silent put a
-   1
-   silent d
-
-   " write tab to file
-   if a:really
-    let fnamepath= home."/".fname
-"    call Decho("exe w! ".fnameescape(fnamepath))
-	if fenc != ""
-	 exe "silent w! ++enc=".fnameescape(fenc)." ".fnameescape(fnamepath)
-	else
-	 exe "silent w! ".fnameescape(fnamepath)
-	endif
-	echo "wrote ".fnameescape(fnamepath)
-	call s:RecordInVar(home,"call delete('".fnamepath."')")
-   endif
-
-   " return to tab with vimball
-"   call Decho("exe tabn ".curtabnr)
-   exe "tabn ".curtabnr
-
-   " set up help if its a doc/*.txt file
-"   call Decho("didhelp<".didhelp."> fname<".fname.">")
-   if a:really && didhelp == "" && fname =~ 'doc/[^/]\+\.\(txt\|..x\)$'
-   	let didhelp= substitute(fname,'^\(.*\")
-   endif
-
-   " update for next file
-"   call Decho("update linenr= [linenr=".linenr."] + [fsize=".fsize."] = ".(linenr+fsize))
-   let linenr= linenr + fsize
-  endwhile
-
-  " set up help
-"  call Decho("about to set up help: didhelp<".didhelp.">")
-  if didhelp != ""
-   let htpath= home."/".didhelp
-"   call Decho("exe helptags ".htpath)
-   exe "helptags ".fnameescape(htpath)
-   echo "did helptags"
-  endif
-
-  " make sure a "Press ENTER..." prompt appears to keep the messages showing!
-  while filecnt <= &ch
-   echomsg " "
-   let filecnt= filecnt + 1
-  endwhile
-
-  " record actions in <.VimballRecord>
-  call s:RecordInFile(home)
-
-  " restore events, delete tab and buffer
-  exe "tabn ".vbtabnr
-  setlocal nomod bh=wipe
-  exe "tabn ".curtabnr
-  exe "tabc ".vbtabnr
-  call vimball#RestoreSettings()
-  call s:ChgDir(curdir)
-
-"  call Dret("vimball#Vimball")
-endfun
-
-" ---------------------------------------------------------------------
-" vimball#RmVimball: remove any files, remove any directories made by any {{{2
-"               previous vimball extraction based on a file of the current
-"               name.
-"  Usage:  RmVimball  (assume current file is a vimball; remove)
-"          RmVimball vimballname
-fun! vimball#RmVimball(...)
-"  call Dfunc("vimball#RmVimball() a:0=".a:0)
-  if exists("g:vimball_norecord")
-"   call Dret("vimball#RmVimball : (g:vimball_norecord)")
-   return
-  endif
-
-  if a:0 == 0
-   let curfile= expand("%:tr")
-"   call Decho("case a:0=0: curfile<".curfile."> (used expand(%:tr))")
-  else
-   if a:1 =~ '[\/]'
-    call vimball#ShowMesg(s:USAGE,"RmVimball vimballname [path]")
-"    call Dret("vimball#RmVimball : suspect a:1<".a:1.">")
-    return
-   endif
-   let curfile= a:1
-"   call Decho("case a:0=".a:0.": curfile<".curfile.">")
-  endif
-  if curfile =~ '\.vba$'
-   let curfile= substitute(curfile,'\.vba','','')
-  endif
-  if a:0 >= 2
-   let home= expand(a:2)
-  else
-   let home= vimball#VimballHome()
-  endif
-  let curdir = getcwd()
-"  call Decho("home   <".home.">")
-"  call Decho("curfile<".curfile.">")
-"  call Decho("curdir <".curdir.">")
-
-  call s:ChgDir(home)
-  if filereadable(".VimballRecord")
-"   call Decho(".VimballRecord is readable")
-"   call Decho("curfile<".curfile.">")
-   keepalt keepjumps 1split 
-   silent! keepalt keepjumps e .VimballRecord
-   let keepsrch= @/
-"   call Decho('search for ^\M'.curfile.'.\m: ')
-"   call Decho('search for ^\M'.curfile.'.\mvba: ')
-"   call Decho('search for ^\M'.curfile.'\m[-0-9.]*\.vba: ')
-   if search('^\M'.curfile."\m: ".'cw')
-	let foundit= 1
-   elseif search('^\M'.curfile.".\mvba: ",'cw')
-	let foundit= 1
-   elseif search('^\M'.curfile.'\m[-0-9.]*\.vba: ','cw')
-	let foundit= 1
-   else
-    let foundit = 0
-   endif
-   if foundit
-	let exestring  = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vba: ','','')
-    let s:VBRstring= substitute(exestring,'call delete(','','g')
-    let s:VBRstring= substitute(s:VBRstring,"[')]",'','g')
-"	call Decho("exe ".exestring)
-	silent! keepalt keepjumps exe exestring
-	silent! keepalt keepjumps d
-	let exestring= strlen(substitute(exestring,'call delete(.\{-})|\=',"D","g"))
-"	call Decho("exestring<".exestring.">")
-	echomsg "removed ".exestring." files"
-   else
-    let s:VBRstring= ''
-	let curfile    = substitute(curfile,'\.vba','','')
-"    call Decho("unable to find <".curfile."> in .VimballRecord")
-	if !exists("s:ok_unablefind")
-     call vimball#ShowMesg(s:WARNING,"(RmVimball) unable to find <".curfile."> in .VimballRecord")
-	endif
-   endif
-   silent! keepalt keepjumps g/^\s*$/d
-   silent! keepalt keepjumps wq!
-   let @/= keepsrch
-  endif
-  call s:ChgDir(curdir)
-
-"  call Dret("vimball#RmVimball")
-endfun
-
-" ---------------------------------------------------------------------
-" vimball#Decompress: attempts to automatically decompress vimballs {{{2
-fun! vimball#Decompress(fname,...)
-"  call Dfunc("Decompress(fname<".a:fname.">) a:0=".a:0)
-
-  " decompression:
-  if     expand("%") =~ '.*\.gz'  && executable("gunzip")
-   " handle *.gz with gunzip
-   silent exe "!gunzip ".shellescape(a:fname)
-   if v:shell_error != 0
-	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">")
-   endif
-   let fname= substitute(a:fname,'\.gz$','','')
-   exe "e ".escape(fname,' \')
-   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
-
-  elseif expand("%") =~ '.*\.gz' && executable("gzip")
-   " handle *.gz with gzip -d
-   silent exe "!gzip -d ".shellescape(a:fname)
-   if v:shell_error != 0
-	call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "gzip -d" may have failed with <'.a:fname.">")
-   endif
-   let fname= substitute(a:fname,'\.gz$','','')
-   exe "e ".escape(fname,' \')
-   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
-
-  elseif expand("%") =~ '.*\.bz2' && executable("bunzip2")
-   " handle *.bz2 with bunzip2
-   silent exe "!bunzip2 ".shellescape(a:fname)
-   if v:shell_error != 0
-	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">")
-   endif
-   let fname= substitute(a:fname,'\.bz2$','','')
-   exe "e ".escape(fname,' \')
-   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
-
-  elseif expand("%") =~ '.*\.bz2' && executable("bzip2")
-   " handle *.bz2 with bzip2 -d
-   silent exe "!bzip2 -d ".shellescape(a:fname)
-   if v:shell_error != 0
-	call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip2 -d" may have failed with <'.a:fname.">")
-   endif
-   let fname= substitute(a:fname,'\.bz2$','','')
-   exe "e ".escape(fname,' \')
-   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
-
-  elseif expand("%") =~ '.*\.zip' && executable("unzip")
-   " handle *.zip with unzip
-   silent exe "!unzip ".shellescape(a:fname)
-   if v:shell_error != 0
-	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">")
-   endif
-   let fname= substitute(a:fname,'\.zip$','','')
-   exe "e ".escape(fname,' \')
-   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
-  endif
-
-  if a:0 == 0| setlocal noma bt=nofile fmr=[[[,]]] fdm=marker | endif
-
-"  call Dret("Decompress")
-endfun
-
-" ---------------------------------------------------------------------
-" vimball#ShowMesg: {{{2
-fun! vimball#ShowMesg(level,msg)
-"  call Dfunc("vimball#ShowMesg(level=".a:level." msg<".a:msg.">)")
-
-  let rulerkeep   = &ruler
-  let showcmdkeep = &showcmd
-  set noruler noshowcmd
-  redraw!
-
-  if &fo =~ '[ta]'
-   echomsg "***vimball*** ".a:msg
-  else
-   if a:level == s:WARNING || a:level == s:USAGE
-    echohl WarningMsg
-   elseif a:level == s:ERROR
-    echohl Error
-   endif
-   echomsg "***vimball*** ".a:msg
-   echohl None
-  endif
-
-  if a:level != s:USAGE
-   call inputsave()|let ok= input("Press  to continue")|call inputrestore()
-  endif
-
-  let &ruler   = rulerkeep
-  let &showcmd = showcmdkeep
-
-"  call Dret("vimball#ShowMesg")
-endfun
-" =====================================================================
-" s:ChgDir: change directory (in spite of Windoze) {{{2
-fun! s:ChgDir(newdir)
-"  call Dfunc("ChgDir(newdir<".a:newdir.">)")
-  if (has("win32") || has("win95") || has("win64") || has("win16"))
-   exe 'silent cd '.fnameescape(substitute(a:newdir,'/','\\','g'))
-  else
-   exe 'silent cd '.fnameescape(a:newdir)
-  endif
-"  call Dret("ChgDir : curdir<".getcwd().">")
-endfun
-
-" ---------------------------------------------------------------------
-" s:RecordInVar: record a un-vimball command in the .VimballRecord file {{{2
-fun! s:RecordInVar(home,cmd)
-"  call Dfunc("RecordInVar(home<".a:home."> cmd<".a:cmd.">)")
-  if a:cmd =~ '^rmdir'
-"   if !exists("s:recorddir")
-"    let s:recorddir= substitute(a:cmd,'^rmdir',"call s:Rmdir",'')
-"   else
-"    let s:recorddir= s:recorddir."|".substitute(a:cmd,'^rmdir',"call s:Rmdir",'')
-"   endif
-  elseif !exists("s:recordfile")
-   let s:recordfile= a:cmd
-  else
-   let s:recordfile= s:recordfile."|".a:cmd
-  endif
-"  call Dret("RecordInVar : s:recordfile<".(exists("s:recordfile")? s:recordfile : "")."> s:recorddir<".(exists("s:recorddir")? s:recorddir : "").">")
-endfun
-
-" ---------------------------------------------------------------------
-" s:RecordInFile: {{{2
-fun! s:RecordInFile(home)
-"  call Dfunc("s:RecordInFile()")
-  if exists("g:vimball_norecord")
-"   call Dret("s:RecordInFile : g:vimball_norecord")
-   return
-  endif
-
-  if exists("s:recordfile") || exists("s:recorddir")
-   let curdir= getcwd()
-   call s:ChgDir(a:home)
-   keepalt keepjumps 1split 
-
-   let cmd= expand("%:tr").": "
-"   call Decho("cmd<".cmd.">")
-
-   silent! keepalt keepjumps e .VimballRecord
-   setlocal ma
-   $
-   if exists("s:recordfile") && exists("s:recorddir")
-   	let cmd= cmd.s:recordfile."|".s:recorddir
-   elseif exists("s:recorddir")
-   	let cmd= cmd.s:recorddir
-   elseif exists("s:recordfile")
-   	let cmd= cmd.s:recordfile
-   else
-"    call Dret("s:RecordInFile : neither recordfile nor recorddir exist")
-	return
-   endif
-"   call Decho("cmd<".cmd.">")
-
-   " put command into buffer, write .VimballRecord `file
-   keepalt keepjumps put=cmd
-   silent! keepalt keepjumps g/^\s*$/d
-   silent! keepalt keepjumps wq!
-   call s:ChgDir(curdir)
-
-   if exists("s:recorddir")
-"	call Decho("unlet s:recorddir<".s:recorddir.">")
-   	unlet s:recorddir
-   endif
-   if exists("s:recordfile")
-"	call Decho("unlet s:recordfile<".s:recordfile.">")
-   	unlet s:recordfile
-   endif
-  else
-"   call Decho("s:record[file|dir] doesn't exist")
-  endif
-
-"  call Dret("s:RecordInFile")
-endfun
-
-" ---------------------------------------------------------------------
-" vimball#VimballHome: determine/get home directory path (usually from rtp) {{{2
-fun! vimball#VimballHome()
-"  call Dfunc("vimball#VimballHome()")
-  if exists("g:vimball_home")
-   let home= g:vimball_home
-  else
-   " go to vim plugin home
-   for home in split(&rtp,',') + ['']
-    if isdirectory(home) && filewritable(home) | break | endif
-	let basehome= substitute(home,'[/\\]\.vim$','','')
-    if isdirectory(basehome) && filewritable(basehome)
-	 let home= basehome."/.vim"
-	 break
-	endif
-   endfor
-   if home == ""
-    " just pick the first directory
-    let home= substitute(&rtp,',.*$','','')
-   endif
-   if (has("win32") || has("win95") || has("win64") || has("win16"))
-    let home= substitute(home,'/','\\','g')
-   endif
-  endif
-  " insure that the home directory exists
-"  call Decho("picked home<".home.">")
-  if !isdirectory(home)
-   if exists("g:vimball_mkdir")
-"	call Decho("home<".home."> isn't a directory -- making it now with g:vimball_mkdir<".g:vimball_mkdir.">")
-"    call Decho("system(".g:vimball_mkdir." ".shellescape(home).")")
-    call system(g:vimball_mkdir." ".shellescape(home))
-   else
-"	call Decho("home<".home."> isn't a directory -- making it now with mkdir()")
-    call mkdir(home)
-   endif
-  endif
-"  call Dret("vimball#VimballHome <".home.">")
-  return home
-endfun
-
-" ---------------------------------------------------------------------
-" vimball#SaveSettings: {{{2
-fun! vimball#SaveSettings()
-"  call Dfunc("SaveSettings()")
-  let s:makeep  = getpos("'a")
-  let s:regakeep= @a
-  if exists("&acd")
-   let s:acdkeep = &acd
-  endif
-  let s:eikeep  = &ei
-  let s:fenkeep = &l:fen
-  let s:hidkeep = &hidden
-  let s:ickeep  = &ic
-  let s:lzkeep  = &lz
-  let s:pmkeep  = &pm
-  let s:repkeep = &report
-  let s:vekeep  = &ve
-  let s:ffkeep  = &l:ff
-  if exists("&acd")
-   setlocal ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz pm= ff=unix
-  else
-   setlocal ei=all ve=all       nofen noic report=999 nohid bt= ma lz pm= ff=unix
-  endif
-  " vimballs should be in unix format
-  setlocal ff=unix
-"  call Dret("SaveSettings")
-endfun
-
-" ---------------------------------------------------------------------
-" vimball#RestoreSettings: {{{2
-fun! vimball#RestoreSettings()
-"  call Dfunc("RestoreSettings()")
-  let @a      = s:regakeep
-  if exists("&acd")
-   let &acd   = s:acdkeep
-  endif
-  let &l:fen  = s:fenkeep
-  let &hidden = s:hidkeep
-  let &ic     = s:ickeep
-  let &lz     = s:lzkeep
-  let &pm     = s:pmkeep
-  let &report = s:repkeep
-  let &ve     = s:vekeep
-  let &ei     = s:eikeep
-  let &l:ff   = s:ffkeep
-  if s:makeep[0] != 0
-   " restore mark a
-"   call Decho("restore mark-a: makeep=".string(makeep))
-   call setpos("'a",s:makeep)
-  endif
-  if exists("&acd")
-   unlet s:acdkeep
-  endif
-  unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep s:ffkeep
-"  call Dret("RestoreSettings")
-endfun
-
-" ---------------------------------------------------------------------
-" Modelines: {{{1
-" vim: fdm=marker
diff --git a/share/vim/vim73/autoload/xmlcomplete.vim b/share/vim/vim73/autoload/xmlcomplete.vim
deleted file mode 100644
index 37f9bb41..00000000
--- a/share/vim/vim73/autoload/xmlcomplete.vim
+++ /dev/null
@@ -1,539 +0,0 @@
-" Vim completion script
-" Language:	XML
-" Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change:	2006 Aug 15
-" Version: 1.9
-"
-" Changelog:
-" 1.9 - 2007 Aug 15
-" 		- fix closing of namespaced tags (Johannes Weiss)
-" 1.8 - 2006 Jul 18
-"       - allow for closing of xml tags even when data file isn't available
-
-" 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 in ftplugin/xml.vim
-" 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-1) + [b:compl_context]
-				let b:compl_context = join(context_lines, ' ')
-				break
-			elseif context_line =~ '>[^<]*$' || i == curline
-				" Normal tag line, no need for completion at all
-				" OR reached first line without tag 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
-	" 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
-	" There is no connection of namespace and data file.
-	if !exists("g:xmldata_connection") || g:xmldata_connection == {}
-		" There is still possibility we may do something - eg. 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.">"]
-		else
-			return []
-		endif
-	endif
-
-	" 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 =~ " 0
-			let intent = map(copy(entdecl), 'matchstr(v:val, "'
-		" 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*[\"']" || 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
-				if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, tag) && has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1], attrname)
-					let values = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][attrname]
-				else
-					return []
-				endif
-			endif
-
-			if len(values) == 0
-				return []
-			endif
-
-			" We need special version of sbase
-			let attrbase = matchstr(context, ".*[\"']")
-			let attrquote = matchstr(attrbase, '.$')
-			if attrquote !~ "['\"]"
-				let attrquoteopen = '"'
-				let attrquote = '"'
-			else
-				let attrquoteopen = ''
-			endif
-
-			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, attrquoteopen . m . attrquote.' ')
-				elseif m =~ entered_value
-					call add(res2, attrquoteopen . m . attrquote.' ')
-				endif
-			endfor
-
-			return res + res2
-
-		endif
-
-		if tag =~ '?xml'
-			" Two possible arguments for  plus variation
-			let attrs = ['encoding', 'version="1.0"', 'version']
-		elseif tag =~ '^!'
-			" Don't make completion at all
-			"
-			return []
-		else
-            if !has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, tag)
-				" Abandon when data file isn't complete
- 				return []
- 			endif
-			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
-	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
-		if !has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, opentag)
-			" Abandon when data file isn't complete
-			return []
-		endif
-		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 b:xml_namespace == 'DEFAULT'
-		let xml_namespace = ''
-	else
-		let xml_namespace = b:xml_namespace.':'
-	endif
-	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
-			let final_menu += [{'word':xml_namespace.item, 'menu':m_menu, 'info':m_info}]
-		endfor
-	else
-		let final_menu = map(menu, 'xml_namespace.v:val')
-	endif
-
-	return final_menu
-
-  endif
-endfunction
-
-" MM: This is severely reduced closetag.vim used with kind permission of Steven
-"     Mueller
-"     Changes: strip all comments; delete error messages; add checking for
-"     namespace
-" Author: Steven Mueller 
-" 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=''
-		else
-			let tagpat=''
-		endif
-	else
-		let tagpat=''
-	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
-" vim:set foldmethod=marker:
diff --git a/share/vim/vim73/autoload/zip.vim b/share/vim/vim73/autoload/zip.vim
deleted file mode 100644
index a55f1dcc..00000000
--- a/share/vim/vim73/autoload/zip.vim
+++ /dev/null
@@ -1,393 +0,0 @@
-" zip.vim: Handles browsing zipfiles
-"            AUTOLOAD PORTION
-" Date:		Apr 12, 2010
-" Version:	23
-" Maintainer:	Charles E Campbell, Jr 
-" License:	Vim License  (see vim's :help license)
-" Copyright:    Copyright (C) 2005-2008 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,
-"               zip.vim and zipPlugin.vim are 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.
-
-" ---------------------------------------------------------------------
-" Load Once: {{{1
-if &cp || exists("g:loaded_zip")
- finish
-endif
-let g:loaded_zip= "v23"
-if v:version < 702
- echohl WarningMsg
- echo "***warning*** this version of zip needs vim 7.2"
- echohl Normal
- finish
-endif
-let s:keepcpo= &cpo
-set cpo&vim
-
-let s:zipfile_escape = ' ?&;\'
-let s:ERROR          = 2
-let s:WARNING        = 1
-let s:NOTE           = 0
-
-" ---------------------------------------------------------------------
-"  Global Values: {{{1
-if !exists("g:zip_shq")
- if &shq != ""
-  let g:zip_shq= &shq
- elseif has("unix")
-  let g:zip_shq= "'"
- else
-  let g:zip_shq= '"'
- endif
-endif
-if !exists("g:zip_zipcmd")
- let g:zip_zipcmd= "zip"
-endif
-if !exists("g:zip_unzipcmd")
- let g:zip_unzipcmd= "unzip"
-endif
-
-" ----------------
-"  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 !exists("*fnameescape")
-   if &verbose > 1
-    echoerr "the zip plugin is not available (your vim doens't support fnameescape())"
-   endif
-   return
-  endif
-  if !executable(g:zip_unzipcmd)
-   redraw!
-   echohl Error | echo "***error*** (zip#Browse) unzip not available on your system"
-"   call inputsave()|call input("Press  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
-    redraw!
-    echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None
-"    call inputsave()|call input("Press  to continue")|call inputrestore()
-   endif
-   let &report= repkeep
-"   call Dret("zip#Browse : file<".a:zipfile."> not readable")
-   return
-  endif
-"  call Decho("passed sanity checks")
-  if &ma != 1
-   set ma
-  endif
-  let b:zipfile= a:zipfile
-
-  setlocal noswapfile
-  setlocal buftype=nofile
-  setlocal bufhidden=hide
-  setlocal nobuflisted
-  setlocal nowrap
-  set ft=tar
-
-  " give header
-  let lastline= line("$")
-  call setline(lastline+1,'" zip.vim version '.g:loaded_zip)
-  call setline(lastline+2,'" Browsing zipfile '.a:zipfile)
-  call setline(lastline+3,'" Select a file with cursor and press ENTER')
-  $put =''
-  0d
-  $
-
-"  call Decho("exe silent r! ".g:zip_unzipcmd." -l -- ".s:Escape(a:zipfile,1))
-  exe "silent r! ".g:zip_unzipcmd." -l -- ".s:Escape(a:zipfile,1)
-  if v:shell_error != 0
-   redraw!
-   echohl WarningMsg | echo "***warning*** (zip#Browse) ".fnameescape(a:zipfile)." is not a zip file" | echohl None
-"   call inputsave()|call input("Press  to continue")|call inputrestore()
-   silent %d
-   let eikeep= &ei
-   set ei=BufReadCmd,FileReadCmd
-   exe "r ".fnameescape(a:zipfile)
-   let &ei= eikeep
-   1d
-"   call Dret("zip#Browse")
-   return
-  endif
-"  call Decho("line 6: ".getline(6))
-  let namecol= stridx(getline(6),'Name') + 1
-"  call Decho("namecol=".namecol)
-  4,$g/^\s*----/d
-  4,$g/^\s*\a/d
-  $d
-  if namecol > 0
-   exe 'silent 4,$s/^.*\%'.namecol.'c//'
-  endif
-
-  setlocal noma nomod ro
-  noremap    :call ZipBrowseSelect()
-
-  let &report= repkeep
-"  call Dret("zip#Browse")
-endfun
-
-" ---------------------------------------------------------------------
-" ZipBrowseSelect: {{{2
-fun! s:ZipBrowseSelect()
-"  call Dfunc("ZipBrowseSelect() zipfile<".b: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 =~ '/$'
-   redraw!
-   echohl Error | echo "***error*** (zip#Browse) Please specify a file, not a directory" | echohl None
-"   call inputsave()|call input("Press  to continue")|call inputrestore()
-   let &report= repkeep
-"   call Dret("ZipBrowseSelect")
-   return
-  endif
-
-"  call Decho("fname<".fname.">")
-
-  " get zipfile to the new-window
-  let zipfile = b:zipfile
-  let curfile= expand("%")
-"  call Decho("zipfile<".zipfile.">")
-"  call Decho("curfile<".curfile.">")
-
-  new
-  if !exists("g:zip_nomax") || g:zip_nomax == 0
-   wincmd _
-  endif
-  let s:zipfile_{winnr()}= curfile
-"  call Decho("exe e ".fnameescape("zipfile:".zipfile.'::'.fname))
-  exe "e ".fnameescape("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
-
-  if has("unix")
-   let zipfile = substitute(a:fname,'zipfile:\(.\{-}\)::[^\\].*$','\1','')
-   let fname   = substitute(a:fname,'zipfile:.\{-}::\([^\\].*\)$','\1','')
-  else
-   let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','')
-   let fname   = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','')
-   let fname = substitute(fname, '[', '[[]', 'g')
-  endif
-"  call Decho("zipfile<".zipfile.">")
-"  call Decho("fname  <".fname.">")
-
-"  call Decho("exe r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fname,1))
-  exe "silent r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fname,1)
-
-  " 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(g:zip_zipcmd)
-   redraw!
-   echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the zip pgm" | echohl None
-"   call inputsave()|call input("Press  to continue")|call inputrestore()
-   let &report= repkeep
-"   call Dret("zip#Write")
-   return
-  endif
-  if !exists("*mkdir")
-   redraw!
-   echohl Error | echo "***error*** (zip#Write) sorry, mkdir() doesn't work on your system" | echohl None
-"   call inputsave()|call input("Press  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
-  if s:ChgDir(tmpdir,s:ERROR,"(zip#Write) cannot cd to temporary directory")
-   let &report= repkeep
-"   call Dret("zip#Write")
-   return
-  endif
-"  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())
-
-  if has("unix")
-   let zipfile = substitute(a:fname,'zipfile:\(.\{-}\)::[^\\].*$','\1','')
-   let fname   = substitute(a:fname,'zipfile:.\{-}::\([^\\].*\)$','\1','')
-  else
-   let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','')
-   let fname   = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','')
-  endif
-"  call Decho("zipfile<".zipfile.">")
-"  call Decho("fname  <".fname.">")
-
-  if fname =~ '/'
-   let dirpath = substitute(fname,'/[^/]\+$','','e')
-   if executable("cygpath")
-    let dirpath = substitute(system("cygpath ".s:Escape(dirpath,0)),'\n','','e')
-   endif
-"   call Decho("mkdir(dirpath<".dirpath.">,p)")
-   call mkdir(dirpath,"p")
-  endif
-  if zipfile !~ '/'
-   let zipfile= curdir.'/'.zipfile
-  endif
-"  call Decho("zipfile<".zipfile."> fname<".fname.">")
-
-  exe "w! ".fnameescape(fname)
-  if executable("cygpath")
-   let zipfile = substitute(system("cygpath ".s:Escape(zipfile,0)),'\n','','e')
-  endif
-
-  if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
-    let fname = substitute(fname, '[', '[[]', 'g')
-  endif
-
-"  call Decho(g:zip_zipcmd." -u ".s:Escape(fnamemodify(zipfile,":p"),0)." ".s:Escape(fname,0))
-  call system(g:zip_zipcmd." -u ".s:Escape(fnamemodify(zipfile,":p"),0)." ".s:Escape(fname,0))
-  if v:shell_error != 0
-   redraw!
-   echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None
-"   call inputsave()|call input("Press  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."> across network as <".netzipfile.">")
-   1split|enew
-   let binkeep= &binary
-   let eikeep = &ei
-   set binary ei=all
-   exe "e! ".fnameescape(zipfile)
-   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_")
-  call s:ChgDir(curdir,s:WARNING,"(zip#Write) unable to return to ".curdir."!")
-  call s:Rmdir(tmpdir)
-  setlocal nomod
-
-  let &report= repkeep
-"  call Dret("zip#Write")
-endfun
-
-" ---------------------------------------------------------------------
-" s:Escape: {{{2
-fun! s:Escape(fname,isfilt)
-"  call Dfunc("QuoteFileDir(fname<".a:fname."> isfilt=".a:isfilt.")")
-  if exists("*shellescape")
-   if a:isfilt
-    let qnameq= shellescape(a:fname,1)
-   else
-    let qnameq= shellescape(a:fname)
-   endif
-  else
-   let qnameq= g:zip_shq.escape(a:fname,g:zip_shq).g:zip_shq
-  endif
-"  call Dret("QuoteFileDir <".qnameq.">")
-  return qnameq
-endfun
-
-" ---------------------------------------------------------------------
-" ChgDir: {{{2
-fun! s:ChgDir(newdir,errlvl,errmsg)
-"  call Dfunc("ChgDir(newdir<".a:newdir."> errlvl=".a:errlvl."  errmsg<".a:errmsg.">)")
-
-  try
-   exe "cd ".fnameescape(a:newdir)
-  catch /^Vim\%((\a\+)\)\=:E344/
-   redraw!
-   if a:errlvl == s:NOTE
-    echo "***note*** ".a:errmsg
-   elseif a:errlvl == s:WARNING
-    echohl WarningMsg | echo "***warning*** ".a:errmsg | echohl NONE
-   elseif a:errlvl == s:ERROR
-    echohl Error | echo "***error*** ".a:errmsg | echohl NONE
-   endif
-"   call inputsave()|call input("Press  to continue")|call inputrestore()
-"   call Dret("ChgDir 1")
-   return 1
-  endtry
-
-"  call Dret("ChgDir 0")
-  return 0
-endfun
-
-" ---------------------------------------------------------------------
-" s:Rmdir: {{{2
-fun! s:Rmdir(fname)
-"  call Dfunc("Rmdir(fname<".a:fname.">)")
-  if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
-   call system("rmdir /S/Q ".s:Escape(a:fname,0))
-  else
-   call system("/bin/rm -rf ".s:Escape(a:fname,0))
-  endif
-"  call Dret("Rmdir")
-endfun
-
-" ------------------------------------------------------------------------
-" Modelines And Restoration: {{{1
-let &cpo= s:keepcpo
-unlet s:keepcpo
-" vim:ts=8 fdm=marker
diff --git a/share/vim/vim73/colors/koehler.vim b/share/vim/vim73/colors/koehler.vim
deleted file mode 100644
index 6aaa2441..00000000
--- a/share/vim/vim73/colors/koehler.vim
+++ /dev/null
@@ -1,70 +0,0 @@
-" local syntax file - set colors on a per-machine basis:
-" vim: tw=0 ts=4 sw=4
-" Vim color file
-" Maintainer:	Ron Aaron 
-" Last Change:	2006 Dec 10
-
-hi clear
-set background=dark
-if exists("syntax_on")
-  syntax reset
-endif
-let g:colors_name = "koehler"
-hi Normal		  guifg=white  guibg=black
-hi Scrollbar	  guifg=darkcyan guibg=cyan
-hi Menu			  guifg=black guibg=cyan
-hi SpecialKey	  term=bold  cterm=bold  ctermfg=darkred  guifg=#cc0000
-hi NonText		  term=bold  cterm=bold  ctermfg=darkred  gui=bold      guifg=#cc0000
-hi Directory	  term=bold  cterm=bold  ctermfg=brown  guifg=#cc8000
-hi ErrorMsg		  term=standout  cterm=bold  ctermfg=grey  ctermbg=red  guifg=White  guibg=Red
-hi Search		  term=reverse  ctermfg=white  ctermbg=red      guifg=white  guibg=Red
-hi MoreMsg		  term=bold  cterm=bold  ctermfg=darkgreen	gui=bold  guifg=SeaGreen
-hi ModeMsg		  term=bold  cterm=bold  gui=bold  guifg=White	guibg=Blue
-hi LineNr		  term=underline  cterm=bold  ctermfg=darkcyan	guifg=Yellow
-hi Question		  term=standout  cterm=bold  ctermfg=darkgreen	gui=bold  guifg=Green
-hi StatusLine	  term=bold,reverse  cterm=bold ctermfg=lightblue ctermbg=white gui=bold guifg=blue guibg=white
-hi StatusLineNC   term=reverse	ctermfg=white ctermbg=lightblue guifg=white guibg=blue
-hi Title		  term=bold  cterm=bold  ctermfg=darkmagenta  gui=bold	guifg=Magenta
-hi Visual		  term=reverse	cterm=reverse  gui=reverse
-hi WarningMsg	  term=standout  cterm=bold  ctermfg=darkred guifg=Red
-hi Cursor		  guifg=bg	guibg=Green
-hi Comment		  term=bold  cterm=bold ctermfg=cyan  guifg=#80a0ff
-hi Constant		  term=underline  cterm=bold ctermfg=magenta  guifg=#ffa0a0
-hi Special		  term=bold  cterm=bold ctermfg=red  guifg=Orange
-hi Identifier	  term=underline   ctermfg=brown  guifg=#40ffff
-hi Statement	  term=bold  cterm=bold ctermfg=yellow	gui=bold  guifg=#ffff60
-hi PreProc		  term=underline  ctermfg=darkmagenta   guifg=#ff80ff
-hi Type			  term=underline  cterm=bold ctermfg=lightgreen  gui=bold  guifg=#60ff60
-hi Error		  term=reverse	ctermfg=darkcyan  ctermbg=black  guifg=Red	guibg=Black
-hi Todo			  term=standout  ctermfg=black	ctermbg=darkcyan  guifg=Blue  guibg=Yellow
-hi CursorLine	  term=underline  guibg=#555555 cterm=underline
-hi CursorColumn	  term=underline  guibg=#555555 cterm=underline
-hi MatchParen	  term=reverse  ctermfg=blue guibg=Blue
-hi TabLine		  term=bold,reverse  cterm=bold ctermfg=lightblue ctermbg=white gui=bold guifg=blue guibg=white
-hi TabLineFill	  term=bold,reverse  cterm=bold ctermfg=lightblue ctermbg=white gui=bold guifg=blue guibg=white
-hi TabLineSel	  term=reverse	ctermfg=white ctermbg=lightblue guifg=white guibg=blue
-hi link IncSearch		Visual
-hi link String			Constant
-hi link Character		Constant
-hi link Number			Constant
-hi link Boolean			Constant
-hi link Float			Number
-hi link Function		Identifier
-hi link Conditional		Statement
-hi link Repeat			Statement
-hi link Label			Statement
-hi link Operator		Statement
-hi link Keyword			Statement
-hi link Exception		Statement
-hi link Include			PreProc
-hi link Define			PreProc
-hi link Macro			PreProc
-hi link PreCondit		PreProc
-hi link StorageClass	Type
-hi link Structure		Type
-hi link Typedef			Type
-hi link Tag				Special
-hi link SpecialChar		Special
-hi link Delimiter		Special
-hi link SpecialComment	Special
-hi link Debug			Special
diff --git a/share/vim/vim73/colors/ron.vim b/share/vim/vim73/colors/ron.vim
deleted file mode 100644
index 45d64455..00000000
--- a/share/vim/vim73/colors/ron.vim
+++ /dev/null
@@ -1,43 +0,0 @@
-" local syntax file - set colors on a per-machine basis:
-" vim: tw=0 ts=4 sw=4
-" Vim color file
-" Maintainer:	Ron Aaron 
-" Last Change:	2003 May 02
-
-set background=dark
-hi clear
-if exists("syntax_on")
-  syntax reset
-endif
-let g:colors_name = "ron"
-hi Normal		guifg=cyan	guibg=black
-hi NonText		guifg=brown
-hi comment		guifg=green
-hi constant		guifg=cyan	gui=bold
-hi identifier	guifg=cyan	gui=NONE
-hi statement	guifg=lightblue	gui=NONE
-hi preproc		guifg=Pink2
-hi type			guifg=seagreen	gui=bold
-hi special		guifg=yellow
-hi ErrorMsg		guifg=Black	guibg=Red
-hi WarningMsg	guifg=Black	guibg=Green
-hi Error		guibg=Red
-hi Todo			guifg=Black	guibg=orange
-hi Cursor		guibg=#60a060 guifg=#00ff00
-hi Search		guibg=lightslateblue
-hi IncSearch	gui=NONE guibg=steelblue
-hi LineNr		guifg=darkgrey
-hi title		guifg=darkgrey
-hi StatusLineNC	gui=NONE guifg=lightblue guibg=darkblue
-hi StatusLine	gui=bold	guifg=cyan	guibg=blue
-hi label		guifg=gold2
-hi operator		guifg=orange
-hi clear Visual
-hi Visual		term=reverse cterm=reverse gui=reverse
-hi DiffChange   guibg=darkgreen
-hi DiffText		guibg=olivedrab
-hi DiffAdd		guibg=slateblue
-hi DiffDelete   guibg=coral
-hi Folded		guibg=gray30
-hi FoldColumn	guibg=gray30 guifg=white
-hi cIf0			guifg=gray
diff --git a/share/vim/vim73/compiler/checkstyle.vim b/share/vim/vim73/compiler/checkstyle.vim
deleted file mode 100644
index 74ab3e42..00000000
--- a/share/vim/vim73/compiler/checkstyle.vim
+++ /dev/null
@@ -1,20 +0,0 @@
-" Vim compiler file
-" Compiler:	Checkstyle
-" Maintainer:	Doug Kearns 
-" URL:		http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/checkstyle.vim
-" Last Change:	2004 Nov 27
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "checkstyle"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain
-
-" sample error: WebTable.java:282: '+=' is not preceeded with whitespace.
-"		WebTable.java:201:1: '{' should be on the previous line.
-CompilerSet errorformat=%f:%l:\ %m,%f:%l:%v:\ %m,%-G%.%#
diff --git a/share/vim/vim73/compiler/cs.vim b/share/vim/vim73/compiler/cs.vim
deleted file mode 100644
index 5b75d6d2..00000000
--- a/share/vim/vim73/compiler/cs.vim
+++ /dev/null
@@ -1,19 +0,0 @@
-" Vim compiler file
-" Compiler:	ms C#
-" Maintainer:	Joseph H. Yao (hyao@sina.com)
-" Last Change:	2004 Mar 27
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "cs"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-" default errorformat
-CompilerSet errorformat&
-
-" default make
-CompilerSet makeprg=csc\ %
diff --git a/share/vim/vim73/compiler/decada.vim b/share/vim/vim73/compiler/decada.vim
deleted file mode 100644
index 8e267ece..00000000
--- a/share/vim/vim73/compiler/decada.vim
+++ /dev/null
@@ -1,55 +0,0 @@
-"------------------------------------------------------------------------------
-"  Description: Vim Ada/Dec Ada compiler file
-"     Language: Ada (Dec Ada)
-"          $Id: decada.vim 887 2008-07-08 14:29:01Z krischik $
-"    Copyright: Copyright (C) 2006 Martin Krischik
-"   Maintainer:	Martin Krischik 
-"      $Author: krischik $
-"        $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
-"      Version: 4.6
-"    $Revision: 887 $
-"     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/decada.vim $
-"      History: 21.07.2006 MK New Dec Ada
-"               15.10.2006 MK Bram's suggestion for runtime integration
-"               08.09.2006 MK Correct double load protection.
-"    Help Page: compiler-decada
-"------------------------------------------------------------------------------
-
-if (exists("current_compiler")	    &&
-   \ current_compiler == "decada")  ||
-   \ version < 700
-   finish
-endif
-
-let current_compiler = "decada"
-
-if !exists("g:decada")
-   let g:decada = decada#New ()
-
-   call ada#Map_Menu (
-     \'Dec Ada.Build',
-     \'',
-     \'call decada.Make ()')
-
-   call g:decada.Set_Session ()
-endif
-
-if exists(":CompilerSet") != 2
-   "
-   " plugin loaded by other means then the "compiler" command
-   "
-   command -nargs=* CompilerSet setlocal 
-endif
-
-execute "CompilerSet makeprg="     . escape (g:decada.Make_Command, ' ')
-execute "CompilerSet errorformat=" . escape (g:decada.Error_Format, ' ')
-
-finish " 1}}}
-
-"------------------------------------------------------------------------------
-"   Copyright (C) 2006  Martin Krischik
-"
-"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
-"------------------------------------------------------------------------------
-" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
-" vim: foldmethod=marker
diff --git a/share/vim/vim73/compiler/eruby.vim b/share/vim/vim73/compiler/eruby.vim
deleted file mode 100644
index 614fc17f..00000000
--- a/share/vim/vim73/compiler/eruby.vim
+++ /dev/null
@@ -1,41 +0,0 @@
-" Vim compiler file
-" Language:		eRuby
-" Maintainer:		Doug Kearns 
-" Last Change:		2008 Aug 1
-" URL:			http://vim-ruby.rubyforge.org
-" Anon CVS:		See above site
-" Release Coordinator:	Doug Kearns 
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "eruby"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-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:
diff --git a/share/vim/vim73/compiler/gcc.vim b/share/vim/vim73/compiler/gcc.vim
deleted file mode 100644
index 776bdee2..00000000
--- a/share/vim/vim73/compiler/gcc.vim
+++ /dev/null
@@ -1,39 +0,0 @@
-" Vim compiler file
-" Compiler:         GNU C Compiler
-" Maintainer:       Nikolai Weibull 
-" Latest Revision:  2010-05-30
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "gcc"
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-CompilerSet errorformat=
-      \%*[^\"]\"%f\"%*\\D%l:%c:\ %m,
-      \%*[^\"]\"%f\"%*\\D%l:\ %m,
-      \\"%f\"%*\\D%l:%c:\ %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:%c:\ %terror:\ %m,
-      \%f:%l:%c:\ %tarning:\ %m,
-      \%f:%l:%c:\ %m,
-      \%f:%l:\ %terror:\ %m,
-      \%f:%l:\ %tarning:\ %m,
-      \%f:%l:\ %m,
-      \\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
-      \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
-      \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
-      \%D%*\\a:\ Entering\ directory\ `%f',
-      \%X%*\\a:\ Leaving\ directory\ `%f',
-      \%DMaking\ %*\\a\ in\ %f
-
-if exists('g:compiler_gcc_ignore_unmatched_lines')
-  CompilerSet errorformat+=%-G%.%#
-endif
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/share/vim/vim73/compiler/gnat.vim b/share/vim/vim73/compiler/gnat.vim
deleted file mode 100644
index d7ec55b9..00000000
--- a/share/vim/vim73/compiler/gnat.vim
+++ /dev/null
@@ -1,73 +0,0 @@
-"------------------------------------------------------------------------------
-"  Description: Vim Ada/GNAT compiler file
-"     Language: Ada (GNAT)
-"          $Id: gnat.vim 887 2008-07-08 14:29:01Z krischik $
-"    Copyright: Copyright (C) 2006 Martin Krischik
-"   Maintainer:	Martin Krischi k
-"		Ned Okie 
-"      $Author: krischik $
-"        $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
-"      Version: 4.6
-"    $Revision: 887 $
-"     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/gnat.vim $
-"      History: 24.05.2006 MK Unified Headers
-"		16.07.2006 MK Ada-Mode as vim-ball
-"               15.10.2006 MK Bram's suggestion for runtime integration
-"		19.09.2007 NO use project file only when there is a project
-"    Help Page: compiler-gnat
-"------------------------------------------------------------------------------
-
-if (exists("current_compiler")	    &&
-   \ current_compiler == "gnat")    ||
-   \ version < 700
-   finish
-endif
-
-let current_compiler = "gnat"
-
-if !exists("g:gnat")
-   let g:gnat = gnat#New ()
-
-   call ada#Map_Menu (
-      \ 'GNAT.Build',
-      \ '',
-      \ 'call gnat.Make ()')
-   call ada#Map_Menu (
-      \ 'GNAT.Pretty Print',
-      \ ':GnatPretty',
-      \ 'call gnat.Pretty ()')
-   call ada#Map_Menu (
-      \ 'GNAT.Tags',
-      \ ':GnatTags',
-      \ 'call gnat.Tags ()')
-   call ada#Map_Menu (
-      \ 'GNAT.Find',
-      \ ':GnatFind',
-      \ 'call gnat.Find ()')
-   call ada#Map_Menu (
-      \ 'GNAT.Set Projectfile\.\.\.',
-      \ ':SetProject',
-      \ 'call gnat.Set_Project_File ()')
-
-   call g:gnat.Set_Session ()
-endif
-
-if exists(":CompilerSet") != 2
-   "
-   " plugin loaded by other means then the "compiler" command
-   "
-   command -nargs=* CompilerSet setlocal 
-endif
-
-execute "CompilerSet makeprg="     . escape (g:gnat.Get_Command('Make'), ' ')
-execute "CompilerSet errorformat=" . escape (g:gnat.Error_Format, ' ')
-
-finish " 1}}}
-
-"------------------------------------------------------------------------------
-"   Copyright (C) 2006  Martin Krischik
-"
-"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
-"------------------------------------------------------------------------------
-" vim: textwidth=0 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
-" vim: foldmethod=marker
diff --git a/share/vim/vim73/compiler/hp_acc.vim b/share/vim/vim73/compiler/hp_acc.vim
deleted file mode 100644
index 685bd5b1..00000000
--- a/share/vim/vim73/compiler/hp_acc.vim
+++ /dev/null
@@ -1,33 +0,0 @@
-" Vim compiler file
-" Compiler:	HP aCC
-" Maintainer:	Matthias Ulrich 
-" 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:
-"       hp-ux 10.20, hp-ux 11.0 and hp-ux 11.11 (64bit)
-"
-"  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
-endif
-let current_compiler = "hp_acc"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet 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%.%#
-
-" vim:ts=8:sw=4:cindent
diff --git a/share/vim/vim73/compiler/intel.vim b/share/vim/vim73/compiler/intel.vim
deleted file mode 100644
index 91838264..00000000
--- a/share/vim/vim73/compiler/intel.vim
+++ /dev/null
@@ -1,21 +0,0 @@
-" Vim compiler file
-" Compiler:     Intel C++ 7.1
-" Maintainer:   David Harrison 
-" Last Change:  2004 May 16
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "intel"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-CompilerSet errorformat=%E%f(%l):\ error:\ %m,
-		    \%W%f(%l):\ warning:\ %m,
-		    \%I%f(%l):\ remark\ #%n:\ %m,
-		    \%+C\ \ %m.,
-		    \%-Z\ \ %p^,
-		    \%-G\\s%#,
-		    \%-G%.%#
diff --git a/share/vim/vim73/compiler/irix5_c.vim b/share/vim/vim73/compiler/irix5_c.vim
deleted file mode 100644
index 87bb9e11..00000000
--- a/share/vim/vim73/compiler/irix5_c.vim
+++ /dev/null
@@ -1,21 +0,0 @@
-" Vim compiler file
-" Compiler:	SGI IRIX 5.3 cc
-" Maintainer:	David Harrison 
-" Last Change:	2004 Mar 27
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "irix5_c"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-CompilerSet errorformat=\%Ecfe:\ Error:\ %f\\,\ line\ %l:\ %m,
-		     \%Wcfe:\ Warning:\ %n:\ %f\\,\ line\ %l:\ %m,
-		     \%Wcfe:\ Warning\ %n:\ %f\\,\ line\ %l:\ %m,
-		     \%W(%l)\ \ Warning\ %n:\ %m,
-		     \%-Z\ %p^,
-		     \-G\\s%#,
-		     \%-G%.%#
diff --git a/share/vim/vim73/compiler/irix5_cpp.vim b/share/vim/vim73/compiler/irix5_cpp.vim
deleted file mode 100644
index f5057682..00000000
--- a/share/vim/vim73/compiler/irix5_cpp.vim
+++ /dev/null
@@ -1,21 +0,0 @@
-" Vim compiler file
-" Compiler:	SGI IRIX 5.3 CC or NCC
-" Maintainer:	David Harrison 
-" Last Change:	2004 Mar 27
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "irix5_cpp"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-CompilerSet errorformat=%E\"%f\"\\,\ line\ %l:\ error(%n):\ ,
-		    \%E\"%f\"\\,\ line\ %l:\ error(%n):\ %m,
-		    \%W\"%f\"\\,\ line\ %l:\ warning(%n):\ %m,
-		    \%+IC++\ prelinker:\ %m,
-		      \%-Z\ \ %p%^,
-		      \%+C\ %\\{10}%.%#,
-		      \%-G%.%#
diff --git a/share/vim/vim73/compiler/javac.vim b/share/vim/vim73/compiler/javac.vim
deleted file mode 100644
index 234e28b6..00000000
--- a/share/vim/vim73/compiler/javac.vim
+++ /dev/null
@@ -1,18 +0,0 @@
-" Vim compiler file
-" Compiler:     javac
-" Maintainer:   Doug Kearns 
-" URL:		http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/javac.vim
-" Last Change:  2004 Nov 27
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "javac"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-CompilerSet makeprg=javac
-
-CompilerSet errorformat=%E%f:%l:\ %m,%-Z%p^,%-C%.%#,%-G%.%#
diff --git a/share/vim/vim73/compiler/mcs.vim b/share/vim/vim73/compiler/mcs.vim
deleted file mode 100644
index d85da7d1..00000000
--- a/share/vim/vim73/compiler/mcs.vim
+++ /dev/null
@@ -1,24 +0,0 @@
-" Vim compiler file
-" Compiler:    Mono C# Compiler
-" Maintainer:  Jarek Sobiecki 
-" Latest Revision: 2006-06-18
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "mcs"
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-setlocal errorformat=
-         \%E%f(%l\\,%c):\ error\ CS%n:%m,
-         \%W%f(%l\\,%c):\ warning\ CS%n:%m,
-         \%E%>syntax\ error\\,%m,%Z%f(%l\\,%c):\ error\ CS%n:%m,
-         \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
-         \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
-         \%DMaking\ %*\\a\ in\ %f,
-         \%G-%.%#
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/share/vim/vim73/compiler/mips_c.vim b/share/vim/vim73/compiler/mips_c.vim
deleted file mode 100644
index b57eac02..00000000
--- a/share/vim/vim73/compiler/mips_c.vim
+++ /dev/null
@@ -1,21 +0,0 @@
-" Vim compiler file
-" Compiler:	SGI IRIX 6.5 MIPS C (cc)
-" Maintainer:	David Harrison 
-" Last Change:	2004 Mar 27
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "mips_c"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-CompilerSet errorformat=%Ecc\-%n\ %.%#:\ ERROR\ File\ =\ %f\%\\,\ Line\ =\ %l,
-		    \%Wcc\-%n\ %.%#:\ WARNING\ File\ =\ %f\%\\,\ Line\ =\ %l,
-		    \%Icc\-%n\ %.%#:\ REMARK\ File\ =\ %f\%\\,\ Line\ =\ %l,
-		    \%+C\ \ %m.,
-		    \%-Z\ \ %p^,
-		    \%-G\\s%#,
-		    \%-G%.%#
diff --git a/share/vim/vim73/compiler/mipspro_c89.vim b/share/vim/vim73/compiler/mipspro_c89.vim
deleted file mode 100644
index 258a8004..00000000
--- a/share/vim/vim73/compiler/mipspro_c89.vim
+++ /dev/null
@@ -1,22 +0,0 @@
-" Vim compiler file
-" Compiler:	SGI IRIX 6.5 MIPSPro C (c89)
-" Maintainer:	David Harrison 
-" Last Change:	2004 Mar 27
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "mipspro_c89"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-CompilerSet errorformat=%Ecc\-%n\ %.%#:\ ERROR\ File\ =\ %f\%\\,\ Line\ =\ %l,
-		    \%Wcc\-%n\ %.%#:\ WARNING\ File\ =\ %f\%\\,\ Line\ =\ %l,
-		    \%Icc\-%n\ %.%#:\ REMARK\ File\ =\ %f\%\\,\ Line\ =\ %l,
-		    \%-Z%p%^,
-		    \%+C\ %\\{10}%m%.,
-		    \%+C\ \ %m,
-		    \%-G\\s%#,
-		    \%-G%.%#
diff --git a/share/vim/vim73/compiler/mipspro_cpp.vim b/share/vim/vim73/compiler/mipspro_cpp.vim
deleted file mode 100644
index 1f6074a1..00000000
--- a/share/vim/vim73/compiler/mipspro_cpp.vim
+++ /dev/null
@@ -1,21 +0,0 @@
-" Vim compiler file
-" Compiler:	SGI IRIX 6.5 MIPSPro C++ (CC)
-" Maintainer:	David Harrison 
-" Last Change:	2004 Mar 27
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "mipspro_cpp"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-CompilerSet errorformat=%Ecc\-%n\ %.%#:\ ERROR\ File\ =\ %f\%\\,\ Line\ =\ %l,
-		    \%Wcc\-%n\ %.%#:\ WARNING\ File\ =\ %f\%\\,\ Line\ =\ %l,
-		    \%Icc\-%n\ %.%#:\ REMARK\ File\ =\ %f\%\\,\ Line\ =\ %l,
-		    \%+C\ \ %m.,
-		    \%-Z\ \ %p^,
-		    \%-G\\s%#,
-		    \%-G%.%#
diff --git a/share/vim/vim73/compiler/php.vim b/share/vim/vim73/compiler/php.vim
deleted file mode 100644
index 2f4f032b..00000000
--- a/share/vim/vim73/compiler/php.vim
+++ /dev/null
@@ -1,28 +0,0 @@
-" Vim compiler file
-" Compiler:	PHP
-" Maintainer:	Doug Kearns 
-" 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 
-endif
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-CompilerSet makeprg=php\ -lq
-
-CompilerSet errorformat=%EParse\ error:\ %m\ in\ %f\ on\ line\ %l,
-		       \%WNotice:\ %m\ in\ %f\ on\ line\ %l,
-		       \%EParse\ error:\ %m\ in\ %f\ on\ line\ %l,
-		       \%WNotice:\ %m\ in\ %f\ on\ line\ %l,
-		       \%-G%.%#
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/share/vim/vim73/compiler/rspec.vim b/share/vim/vim73/compiler/rspec.vim
deleted file mode 100644
index f46527ef..00000000
--- a/share/vim/vim73/compiler/rspec.vim
+++ /dev/null
@@ -1,41 +0,0 @@
-" Vim compiler file
-" Language:		RSpec
-" Maintainer:		Tim Pope 
-" Last Change:		2009 Dec 22
-" URL:			http://vim-ruby.rubyforge.org
-" Anon CVS:		See above site
-" Release Coordinator:	Doug Kearns 
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "rspec"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-CompilerSet makeprg=spec
-
-CompilerSet errorformat=
-    \%+W'%.%#'\ FAILED,
-    \%+I'%.%#'\ FIXED,
-    \%-Cexpected:%.%#,
-    \%-C\ \ \ \ \ got:%.%#,
-    \%E%.%#:in\ `load':\ %f:%l:%m,
-    \%C%f:%l:,
-    \%W%f:%l:\ warning:\ %m,
-    \%E%f:%l:in\ %*[^:]:\ %m,
-    \%E%f:%l:\ %m,
-    \%-Z%\tfrom\ %f:%l,
-    \%-Z%p^%.%#,
-    \%-C%.%#,
-    \%-G%.%#
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
-
-" vim: nowrap sw=2 sts=2 ts=8:
diff --git a/share/vim/vim73/compiler/rst.vim b/share/vim/vim73/compiler/rst.vim
deleted file mode 100644
index 07c7d413..00000000
--- a/share/vim/vim73/compiler/rst.vim
+++ /dev/null
@@ -1,25 +0,0 @@
-" Vim compiler file
-" Compiler:         reStructuredText Documentation Format
-" Maintainer:       Nikolai Weibull 
-" Latest Revision:  2006-04-19
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "rst"
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-setlocal errorformat=
-      \%f:%l:\ (%tEBUG/0)\ %m,
-      \%f:%l:\ (%tNFO/1)\ %m,
-      \%f:%l:\ (%tARNING/2)\ %m,
-      \%f:%l:\ (%tRROR/3)\ %m,
-      \%f:%l:\ (%tEVERE/3)\ %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
diff --git a/share/vim/vim73/compiler/ruby.vim b/share/vim/vim73/compiler/ruby.vim
deleted file mode 100644
index 9499ce18..00000000
--- a/share/vim/vim73/compiler/ruby.vim
+++ /dev/null
@@ -1,68 +0,0 @@
-" Vim compiler file
-" Language:		Ruby
-" Function:		Syntax check and/or error reporting
-" Maintainer:		Tim Hammerquist 
-" Last Change:		2008 Aug 1
-" URL:			http://vim-ruby.rubyforge.org
-" Anon CVS:		See above site
-" Release Coordinator:	Doug Kearns 
-" ----------------------------------------------------------------------------
-"
-" Changelog:
-" 0.2:	script saves and restores 'cpoptions' value to prevent problems with
-"	line continuations
-" 0.1:	initial release
-"
-" Contributors:
-"   Hugh Sasse 
-"   Doug Kearns 
-"
-" Todo:
-"   match error type %m
-"
-" Comments:
-"   I know this file isn't perfect.  If you have any questions, suggestions,
-"   patches, etc., please don't hesitate to let me know.
-"
-"   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
-endif
-let current_compiler = "ruby"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-" default settings runs script normally
-" add '-c' switch to run syntax check only:
-"
-"   CompilerSet makeprg=ruby\ -wc\ $*
-"
-" or add '-c' at :make command line:
-"
-"   :make -c %
-"
-CompilerSet makeprg=ruby\ -w\ $*
-
-CompilerSet errorformat=
-    \%+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:
diff --git a/share/vim/vim73/compiler/rubyunit.vim b/share/vim/vim73/compiler/rubyunit.vim
deleted file mode 100644
index 524c205f..00000000
--- a/share/vim/vim73/compiler/rubyunit.vim
+++ /dev/null
@@ -1,35 +0,0 @@
-" Vim compiler file
-" Language:		Test::Unit - Ruby Unit Testing Framework
-" Maintainer:		Doug Kearns 
-" Last Change:		2008 Aug 1
-" URL:			http://vim-ruby.rubyforge.org
-" Anon CVS:		See above site
-" Release Coordinator:	Doug Kearns 
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "rubyunit"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-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:
diff --git a/share/vim/vim73/compiler/se.vim b/share/vim/vim73/compiler/se.vim
deleted file mode 100644
index fbfa62da..00000000
--- a/share/vim/vim73/compiler/se.vim
+++ /dev/null
@@ -1,28 +0,0 @@
-" Vim compiler file
-" Compiler:	se (SmartEiffel Compiler)
-" Maintainer:	Doug Kearns 
-" URL:		http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/se.vim
-" Last Change:	2004 Nov 27
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "se"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-CompilerSet makeprg=compile\ %
-
-CompilerSet errorformat=%W******\ Warning:\ %m,
-		    \%E******\ Fatal\ Error:\ %m,
-		    \%E******\ Error:\ %m,
-		    \%CLine\ %l\ column\ %c\ in\ %\\w%\\+\ (%f)\ :,
-		    \%-G%.%#
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/share/vim/vim73/compiler/tcl.vim b/share/vim/vim73/compiler/tcl.vim
deleted file mode 100644
index 8bd6de68..00000000
--- a/share/vim/vim73/compiler/tcl.vim
+++ /dev/null
@@ -1,18 +0,0 @@
-" Vim compiler file
-" Compiler:	tcl
-" Maintainer:	Doug Kearns 
-" URL:		http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/tcl.vim
-" Last Change:	2004 Nov 27
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "tcl"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-CompilerSet makeprg=tcl
-
-CompilerSet errorformat=%EError:\ %m,%+Z\ %\\{4}(file\ \"%f\"\ line\ %l),%-G%.%#
diff --git a/share/vim/vim73/compiler/tex.vim b/share/vim/vim73/compiler/tex.vim
deleted file mode 100644
index 5828a91a..00000000
--- a/share/vim/vim73/compiler/tex.vim
+++ /dev/null
@@ -1,68 +0,0 @@
-" Vim compiler file
-" Compiler:     TeX
-" Maintainer:   Artem Chuprina 
-" Last Change:  2004 Mar 27
-
-if exists("current_compiler")
-	finish
-endif
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-" If makefile exists and we are not asked to ignore it, we use standard make
-" (do not redefine makeprg)
-if exists('b:tex_ignore_makefile') || exists('g:tex_ignore_makefile') ||
-			\(!filereadable('Makefile') && !filereadable('makefile'))
-	" If buffer-local variable 'tex_flavor' exists, it defines TeX flavor,
-	" otherwize the same for global variable with same name, else it will be
-	" LaTeX
-	if exists("b:tex_flavor")
-		let current_compiler = b:tex_flavor
-	elseif exists("g:tex_flavor")
-		let current_compiler = g:tex_flavor
-	else
-		let current_compiler = "latex"
-	endif
-	let &l:makeprg=current_compiler.' -interaction=nonstopmode'
-else
-	let current_compiler = 'make'
-endif
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-" Value errorformat are taken from vim help, see :help errorformat-LaTeX, with
-" addition from Srinath Avadhanula 
-CompilerSet errorformat=%E!\ LaTeX\ %trror:\ %m,
-	\%E!\ %m,
-	\%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#,
-	\%+W%.%#\ at\ lines\ %l--%*\\d,
-	\%WLaTeX\ %.%#Warning:\ %m,
-	\%Cl.%l\ %m,
-	\%+C\ \ %m.,
-	\%+C%.%#-%.%#,
-	\%+C%.%#[]%.%#,
-	\%+C[]%.%#,
-	\%+C%.%#%[{}\\]%.%#,
-	\%+C<%.%#>%.%#,
-	\%C\ \ %m,
-	\%-GSee\ the\ LaTeX%m,
-	\%-GType\ \ H\ %m,
-	\%-G\ ...%.%#,
-	\%-G%.%#\ (C)\ %.%#,
-	\%-G(see\ the\ transcript%.%#),
-	\%-G\\s%#,
-	\%+O(%*[^()])%r,
-	\%+O%*[^()](%*[^()])%r,
-	\%+P(%f%r,
-	\%+P\ %\\=(%f%r,
-	\%+P%*[^()](%f%r,
-	\%+P[%\\d%[^()]%#(%f%r,
-	\%+Q)%r,
-	\%+Q%*[^()])%r,
-	\%+Q[%\\d%*[^()])%r
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/share/vim/vim73/compiler/tidy.vim b/share/vim/vim73/compiler/tidy.vim
deleted file mode 100644
index 52bc5262..00000000
--- a/share/vim/vim73/compiler/tidy.vim
+++ /dev/null
@@ -1,29 +0,0 @@
-" Vim compiler file
-" Compiler:	HTML Tidy
-" Maintainer:	Doug Kearns 
-" 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.
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "tidy"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-" this is needed to work around a bug in the 04/08/00 release of tidy which
-" failed to set the filename if the -quiet option was used
-if exists("tidy_compiler_040800")
-  CompilerSet makeprg=tidy\ -errors\ --gnu-emacs\ yes\ %
-else
-  CompilerSet makeprg=tidy\ -quiet\ -errors\ --gnu-emacs\ yes\ %
-endif
-
-" sample warning: foo.html:8:1: Warning: inserting missing 'foobar' element
-" sample error:   foo.html:9:2: Error:  is not recognized!
-CompilerSet errorformat=%f:%l:%c:\ Error:%m,%f:%l:%c:\ Warning:%m,%-G%.%#
diff --git a/share/vim/vim73/compiler/xmllint.vim b/share/vim/vim73/compiler/xmllint.vim
deleted file mode 100644
index 8fde4e10..00000000
--- a/share/vim/vim73/compiler/xmllint.vim
+++ /dev/null
@@ -1,29 +0,0 @@
-" Vim compiler file
-" Compiler:	xmllint
-" Maintainer:	Doug Kearns 
-" URL:		http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/xmllint.vim
-" Last Change:	2004 Nov 27
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "xmllint"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal 
-endif
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-CompilerSet makeprg=xmllint\ --valid\ --noout\ 
-
-CompilerSet errorformat=%E%f:%l:\ error:\ %m,
-		    \%W%f:%l:\ warning:\ %m,
-		    \%E%f:%l:\ validity\ error:\ %m,
-		    \%W%f:%l:\ validity\ warning:\ %m,
-		    \%-Z%p^,
-		    \%-G%.%#
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/share/vim/vim73/doc/arabic.txt b/share/vim/vim73/doc/arabic.txt
deleted file mode 100644
index 7a4bfaaa..00000000
--- a/share/vim/vim73/doc/arabic.txt
+++ /dev/null
@@ -1,322 +0,0 @@
-*arabic.txt*	For Vim version 7.3.  Last change: 2005 Mar 29
-
-
-		  VIM REFERENCE MANUAL	  by Nadim Shaikli
-
-
-Arabic Language support (options & mappings) for Vim		*Arabic*
-
-{Vi does not have any of these commands}
-
-								*E800*
-In order to use right-to-left and Arabic mapping support, it is
-necessary to compile VIM with the |+arabic| feature.
-
-These functions have been created by Nadim Shaikli 
-
-It is best to view this file with these settings within VIM's GUI: >
-
-	:set encoding=utf-8
-	:set arabicshape
-
-
-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 (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
-requires two different forms of combining and the ability, in
-certain instances, to either superimpose up to two characters on top
-of another (composing) or the actual substitution of two characters
-into one (combining).  Lastly, to display Arabic properly one will
-require not only ISO-8859-6 (U+0600-U+06FF) fonts, but will also
-require Presentation Form-B (U+FE70-U+FEFF) fonts both of which are
-subsets within a so-called ISO-10646-1 font.
-
-The commands, prompts and help files are not in Arabic, therefore
-the user interface remains the standard Vi interface.
-
-
-Highlights
-----------
-o  Editing left-to-right files as in the original VIM hasn't changed.
-
-o  Viewing and editing files in right-to-left windows.	 File
-   orientation is per window, so it is possible to view the same
-   file in right-to-left and left-to-right modes, simultaneously.
-
-o  No special terminal with right-to-left capabilities is required.
-   The right-to-left changes are completely hardware independent.
-   Only Arabic fonts are necessary.
-
-o  Compatible with the original VIM.   Almost all features work in
-   right-to-left mode (there are liable to be bugs).
-
-o  Changing keyboard mapping and reverse insert modes using a single
-   command.
-
-o  Toggling complete Arabic support via a single command.
-
-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.
-
-o  Arabic keymapping on the command line in reverse insert mode.
-
-o  Proper Bidirectional functionality is possible given VIM is
-   started within a Bidi capable terminal emulator.
-
-
-Arabic Fonts						*arabicfonts*
-------------
-
-VIM requires monospaced fonts of which there are many out there.
-Arabic requires ISO-8859-6 as well as Presentation Form-B fonts
-(without Form-B, Arabic will _NOT_ be usable).	It is highly
-recommended that users search for so-called 'ISO-10646-1' fonts.
-Do an Internet search or check www.arabeyes.org for further
-info on where to attain the necessary Arabic fonts.
-
-
-Font Installation
------------------
-
-o  Installation of fonts for X Window systems (Unix/Linux)
-
-   Depending on your system, copy your_ARABIC_FONT file into a
-   directory of your choice.  Change to the directory containing
-   the Arabic fonts and execute the following commands:
-
-     %	mkfontdir
-     %	xset +fp path_name_of_arabic_fonts_directory
-
-
-Usage
------
-Prior to the actual usage of Arabic within VIM, a number of settings
-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
-      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 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,
-      you can include ':set guifont=your_ARABIC_FONT' to your .vimrc
-      file.
-
-   +  Under the X Window environment, you can also start VIM with
-      '-fn your_ARABIC_FONT' option.
-
-o  Setting the appropriate character Encoding
-   To enable the correct Arabic encoding the following command needs
-   to be appended,
->
-		:set encoding=utf-8
-<
-   to your .vimrc file (entering the command manually into you VIM
-   window is highly discouraged).  In short, include ':set
-   encoding=utf-8' to your .vimrc file.
-
-   Attempts to use Arabic without UTF-8 will result the following
-   warning message,
-
-								*W17*  >
-     Arabic requires UTF-8, do ':set encoding=utf-8'
-
-o  Enable Arabic settings [short-cut]
-
-   In order to simplify and streamline things, you can either invoke
-   VIM with the command-line option,
-
-     % vim -A my_utf8_arabic_file ...
-
-   or enable 'arabic' via the following command within VIM
->
-		:set arabic
-<
-   The two above noted possible invocations are the preferred manner
-   in which users are instructed to proceed.  Baring an enabled 'termbidi'
-   setting, both command options:
-
-     1. set the appropriate keymap
-     2. enable the deletion of a single combined pair character
-     3. enable rightleft    mode
-     4. enable rightleftcmd mode (affecting the command-line)
-     5. enable arabicshape  mode (do visual character alterations)
-
-   You may also append the command to your .vimrc file and simply
-   include ':set arabic' to it.
-
-   You are also capable of disabling Arabic support via
->
-		:set noarabic
-<
-   which resets everything that the command had enabled without touching
-   the global settings as they could affect other possible open buffers.
-   In short the 'noarabic' command,
-
-     1. resets to the alternate keymap
-     2. disables the deletion of a single combined pair character
-     3. disables rightleft mode
-
-   NOTE: the 'arabic' command takes into consideration 'termbidi' for
-	 possible external bi-directional (bidi) support from the
-	 terminal ("mlterm" for instance offers such support).
-	 'termbidi', if available, is superior to rightleft support
-	 and its support is preferred due to its level of offerings.
-	 'arabic' when 'termbidi' is enabled only sets the keymap.
-
-   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 (i.e. if you use ':set arabic' you can skip this section) -
-
-   +  Arabic Keymapping Activation
-
-      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
->
-		:set keymap=arabic
-<
-      in your VIM window.  You can also append the 'keymap' set command to
-      your .vimrc file.  In other words, you can include ':set keymap=arabic'
-      to your .vimrc file.
-
-      To turn toggle (or switch) your keymapping between Arabic and the
-      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 (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 (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
->
-		:set delcombine
-<
-      in our VIM window.  You can also append the 'delcombine' set command
-      to your .vimrc file.  In other words, you can include ':set delcombine'
-      to your .vimrc file.
-
-   +  Arabic right-to-left Mode
-
-      By default VIM starts in Left-to-right mode.  'rightleft' is the
-      command that allows one to alter a window's orientation - that can
-      be accomplished via,
-
-      - Toggling between left-to-right and right-to-left modes is
-	accomplished through ':set rightleft' and ':set norightleft'.
-
-      - 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 Vim in
-	right-to-left mode permanently.
-
-   +  Arabic right-to-left command-line Mode
-
-      For certain commands the editing can be done in right-to-left mode.
-      Currently this is only applicable to search commands.
-
-      This is controlled with the 'rightleftcmd' option.  The default is
-      "search", which means that windows in which 'rightleft' is set will
-      edit search commands in right-left mode.	To disable this behavior,
->
-		:set rightleftcmd=
-<
-      To enable right-left editing of search commands again,
->
-		:set rightleftcmd&
-<
-   +  Arabic Shaping Mode
-
-      To activate the required visual characters alterations (shaping,
-      composing, combining) which the Arabic language requires, enable
-      the 'arabicshape' command.  This is done by entering
->
-		:set arabicshape
-<
-      in our VIM window.  You can also append the 'arabicshape' set
-      command to your .vimrc file.  In other words, you can include
-      ':set arabicshape' to your .vimrc file.
-
-
-Keymap/Keyboard						*arabickeymap*
----------------
-
-The character/letter encoding used in VIM is the standard UTF-8.
-It is widely discouraged that any other encoding be used or even
-attempted.
-
-Note: UTF-8 is an all encompassing encoding and as such is
-      the only supported (and encouraged) encoding with
-      regard to Arabic (all other proprietary encodings
-      should be discouraged and frowned upon).
-
-o  Keyboard
-
-   +  CTRL-^ in insert/replace mode toggles between Arabic/Latin mode
-
-   +  Keyboard mapping is based on the Microsoft's Arabic keymap (the
-      de facto standard in the Arab world):
-
-  +---------------------------------------------------------------------+
-  |!   |@   |#   |$   |%   |^   |&   |*   |(   |)   |_   |+   ||   |~  ّ |
-  |1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |-   |=   |\   |` ذ |
-  +---------------------------------------------------------------------+
-       |Q  َ |W  ً |E  ُ |R  ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > |
-       |q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د |
-       +-----------------------------------------------------------+
-	 |A  ِ |S  ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |:   |"   |
-	 |a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط |
-	 +------------------------------------------------------+
-	   |Z ~ |X  ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ |
-	   |z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ |
-	   +-------------------------------------------------+
-
-Restrictions
-------------
-
-o  VIM in its GUI form does not currently support Bi-directionality
-   (i.e. the ability to see both Arabic and Latin intermixed within
-   the same line).
-
-
-Known Bugs
-----------
-
-There is one known minor bug,
-
- 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.
-
-    WORK-AROUND: Don't include harakats between LAM and ALEF combos.
-		 In general, don't anticipate to see correct visual
-		 representation with regard to harakats and LAM+ALEF
-		 combined characters (even those entered after both
-		 characters).  The problem noted is strictly a visual
-		 one, meaning saving such a file will contain all the
-		 appropriate info/encodings - nothing is lost.
-
-No other bugs are known to exist.
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/autocmd.txt b/share/vim/vim73/doc/autocmd.txt
deleted file mode 100644
index c129e3fc..00000000
--- a/share/vim/vim73/doc/autocmd.txt
+++ /dev/null
@@ -1,1303 +0,0 @@
-*autocmd.txt*   For Vim version 7.3.  Last change: 2010 Jul 22
-
-
-		  VIM REFERENCE MANUAL    by Bram Moolenaar
-
-
-Automatic commands					*autocommand*
-
-For a basic explanation, see section |40.3| in the user manual.
-
-1.  Introduction		|autocmd-intro|
-2.  Defining autocommands	|autocmd-define|
-3.  Removing autocommands	|autocmd-remove|
-4.  Listing autocommands	|autocmd-list|
-5.  Events			|autocmd-events|
-6.  Patterns			|autocmd-patterns|
-7.  Buffer-local autocommands	|autocmd-buflocal|
-8.  Groups			|autocmd-groups|
-9.  Executing autocommands	|autocmd-execute|
-10. Using autocommands		|autocmd-use|
-11. Disabling autocommands	|autocmd-disable|
-
-{Vi does not have any of these commands}
-{only when the |+autocmd| feature has not been disabled at compile time}
-
-==============================================================================
-1. Introduction						*autocmd-intro*
-
-You can specify commands to be executed automatically when reading or writing
-a file, when entering or leaving a buffer or window, and when exiting Vim.
-For example, you can create an autocommand to set the 'cindent' option for
-files matching *.c.  You can also use autocommands to implement advanced
-features, such as editing compressed files (see |gzip-example|).  The usual
-place to put autocommands is in your .vimrc or .exrc file.
-
-							*E203* *E204* *E143*
-WARNING: Using autocommands is very powerful, and may lead to unexpected side
-effects.  Be careful not to destroy your text.
-- It's a good idea to do some testing on an expendable copy of a file first.
-  For example: If you use autocommands to decompress a file when starting to
-  edit it, make sure that the autocommands for compressing when writing work
-  correctly.
-- Be prepared for an error halfway through (e.g., disk full).  Vim will mostly
-  be able to undo the changes to the buffer, but you may have to clean up the
-  changes to other files by hand (e.g., compress a file that has been
-  decompressed).
-- If the BufRead* events allow you to edit a compressed file, the FileRead*
-  events should do the same (this makes recovery possible in some rare cases).
-  It's a good idea to use the same autocommands for the File* and Buf* events
-  when possible.
-
-==============================================================================
-2. Defining autocommands				*autocmd-define*
-
-Note: The ":autocmd" command cannot be followed by another command, since any
-'|' is considered part of the command.
-
-							*:au* *:autocmd*
-:au[tocmd] [group] {event} {pat} [nested] {cmd}
-			Add {cmd} to the list of commands that Vim will
-			execute automatically on {event} for a file matching
-			{pat} |autocmd-patterns|.
-			Vim always adds the {cmd} after existing autocommands,
-			so that the autocommands execute in the order in which
-			they were given.  See |autocmd-nested| for [nested].
-
-The special pattern  or  defines a buffer-local autocommand.
-See |autocmd-buflocal|.
-
-Note that special characters (e.g., "%", "") in the ":autocmd"
-arguments are not expanded when the autocommand is defined.  These will be
-expanded when the Event is recognized, and the {cmd} is executed.  The only
-exception is that "" is expanded when the autocmd is defined.  Example:
->
-	:au BufNewFile,BufRead *.html so :h/html.vim
-
-Here Vim expands  to the name of the file containing this line.
-
-When your .vimrc file is sourced twice, the autocommands will appear twice.
-To avoid this, put this command in your .vimrc file, before defining
-autocommands: >
-
-	:autocmd!	" Remove ALL autocommands for the current group.
-
-If you don't want to remove all autocommands, you can instead use a variable
-to ensure that Vim includes the autocommands only once: >
-
-	:if !exists("autocommands_loaded")
-	:  let autocommands_loaded = 1
-	:  au ...
-	:endif
-
-When the [group] argument is not given, Vim uses the current group (as defined
-with ":augroup"); otherwise, Vim uses the group defined with [group].  Note
-that [group] must have been defined before.  You cannot define a new group
-with ":au group ..."; use ":augroup" for that.
-
-While testing autocommands, you might find the 'verbose' option to be useful: >
-	:set verbose=9
-This setting makes Vim echo the autocommands as it executes them.
-
-When defining an autocommand in a script, it will be able to call functions
-local to the script and use mappings local to the script.  When the event is
-triggered and the command executed, it will run in the context of the script
-it was defined in.  This matters if || is used in a command.
-
-When executing the commands, the message from one command overwrites a
-previous message.  This is different from when executing the commands
-manually.  Mostly the screen will not scroll up, thus there is no hit-enter
-prompt.  When one command outputs two messages this can happen anyway.
-
-==============================================================================
-3. Removing autocommands				*autocmd-remove*
-
-:au[tocmd]! [group] {event} {pat} [nested] {cmd}
-			Remove all autocommands associated with {event} and
-			{pat}, and add the command {cmd}.  See
-			|autocmd-nested| for [nested].
-
-:au[tocmd]! [group] {event} {pat}
-			Remove all autocommands associated with {event} and
-			{pat}.
-
-:au[tocmd]! [group] * {pat}
-			Remove all autocommands associated with {pat} for all
-			events.
-
-:au[tocmd]! [group] {event}
-			Remove ALL autocommands for {event}.
-
-:au[tocmd]! [group]	Remove ALL autocommands.
-
-When the [group] argument is not given, Vim uses the current group (as defined
-with ":augroup"); otherwise, Vim uses the group defined with [group].
-
-==============================================================================
-4. Listing autocommands					*autocmd-list*
-
-:au[tocmd] [group] {event} {pat}
-			Show the autocommands associated with {event} and
-			{pat}.
-
-:au[tocmd] [group] * {pat}
-			Show the autocommands associated with {pat} for all
-			events.
-
-:au[tocmd] [group] {event}
-			Show all autocommands for {event}.
-
-:au[tocmd] [group]	Show all autocommands.
-
-If you provide the [group] argument, Vim lists only the autocommands for
-[group]; otherwise, Vim lists the autocommands for ALL groups.  Note that this
-argument behavior differs from that for defining and removing autocommands.
-
-In order to list buffer-local autocommands, use a pattern in the form 
-or .  See |autocmd-buflocal|.
-
-							*:autocmd-verbose*
-When 'verbose' is non-zero, listing an autocommand will also display where it
-was last defined. Example: >
-
-    :verbose autocmd BufEnter
-    FileExplorer  BufEnter
-	*	  call s:LocalBrowse(expand(""))
-	    Last set from /usr/share/vim/vim-7.0/plugin/NetrwPlugin.vim
-<
-See |:verbose-cmd| for more information.
-
-==============================================================================
-5. Events					*autocmd-events* *E215* *E216*
-
-You can specify a comma-separated list of event names.  No white space can be
-used in this list.  The command applies to all the events in the list.
-
-For READING FILES there are four kinds of events possible:
-	BufNewFile			starting to edit a non-existent file
-	BufReadPre	BufReadPost	starting to edit an existing file
-	FilterReadPre	FilterReadPost	read the temp file with filter output
-	FileReadPre	FileReadPost	any other file read
-Vim uses only one of these four kinds when reading a file.  The "Pre" and
-"Post" events are both triggered, before and after reading the file.
-
-Note that the autocommands for the *ReadPre events and all the Filter events
-are not allowed to change the current buffer (you will get an error message if
-this happens).  This is to prevent the file to be read into the wrong buffer.
-
-Note that the 'modified' flag is reset AFTER executing the BufReadPost
-and BufNewFile autocommands.  But when the 'modified' option was set by the
-autocommands, this doesn't happen.
-
-You can use the 'eventignore' option to ignore a number of events or all
-events.
-					*autocommand-events* *{event}*
-Vim recognizes the following events.  Vim ignores the case of event names
-(e.g., you can use "BUFread" or "bufread" instead of "BufRead").
-
-First an overview by function with a short explanation.  Then the list
-alphabetically with full explanations |autocmd-events-abc|.
-
-Name			triggered by ~
-
-	Reading
-|BufNewFile|		starting to edit a file that doesn't exist
-|BufReadPre|		starting to edit a new buffer, before reading the file
-|BufRead|		starting to edit a new buffer, after reading the file
-|BufReadPost|		starting to edit a new buffer, after reading the file
-|BufReadCmd|		before starting to edit a new buffer |Cmd-event|
-
-|FileReadPre|		before reading a file with a ":read" command
-|FileReadPost|		after reading a file with a ":read" command
-|FileReadCmd|		before reading a file with a ":read" command |Cmd-event|
-
-|FilterReadPre|		before reading a file from a filter command
-|FilterReadPost|	after reading a file from a filter command
-
-|StdinReadPre|		before reading from stdin into the buffer
-|StdinReadPost|		After reading from the stdin into the buffer
-
-	Writing
-|BufWrite|		starting to write the whole buffer to a file
-|BufWritePre|		starting to write the whole buffer to a file
-|BufWritePost|		after writing the whole buffer to a file
-|BufWriteCmd|		before writing the whole buffer to a file |Cmd-event|
-
-|FileWritePre|		starting to write part of a buffer to a file
-|FileWritePost|		after writing part of a buffer to a file
-|FileWriteCmd|		before writing part of a buffer to a file |Cmd-event|
-
-|FileAppendPre|		starting to append to a file
-|FileAppendPost|	after appending to a file
-|FileAppendCmd|		before appending to a file |Cmd-event|
-
-|FilterWritePre|	starting to write a file for a filter command or diff
-|FilterWritePost|	after writing a file for a filter command or diff
-
-	Buffers
-|BufAdd|		just after adding a buffer to the buffer list
-|BufCreate|		just after adding a buffer to the buffer list
-|BufDelete|		before deleting a buffer from the buffer list
-|BufWipeout|		before completely deleting a buffer
-
-|BufFilePre|		before changing the name of the current buffer
-|BufFilePost|		after changing the name of the current buffer
-
-|BufEnter|		after entering a buffer
-|BufLeave|		before leaving to another buffer
-|BufWinEnter|		after a buffer is displayed in a window
-|BufWinLeave|		before a buffer is removed from a window
-
-|BufUnload|		before unloading a buffer
-|BufHidden|		just after a buffer has become hidden
-|BufNew|		just after creating a new buffer
-
-|SwapExists|		detected an existing swap file
-
-	Options
-|FileType|		when the 'filetype' option has been set
-|Syntax|		when the 'syntax' option has been set
-|EncodingChanged|	after the 'encoding' option has been changed
-|TermChanged|		after the value of 'term' has changed
-
-	Startup and exit
-|VimEnter|		after doing all the startup stuff
-|GUIEnter|		after starting the GUI successfully
-|TermResponse|		after the terminal response to |t_RV| is received
-
-|VimLeavePre|		before exiting Vim, before writing the viminfo file
-|VimLeave|		before exiting Vim, after writing the viminfo file
-
-	Various
-|FileChangedShell|	Vim notices that a file changed since editing started
-|FileChangedShellPost|	After handling a file changed since editing started
-|FileChangedRO|		before making the first change to a read-only file
-
-|ShellCmdPost|		after executing a shell command
-|ShellFilterPost|	after filtering with a shell command
-
-|FuncUndefined|		a user function is used but it isn't defined
-|SpellFileMissing|	a spell file is used but it can't be found
-|SourcePre|		before sourcing a Vim script
-|SourceCmd|		before sourcing a Vim script |Cmd-event|
-
-|VimResized|		after the Vim window size changed
-|FocusGained|		Vim got input focus
-|FocusLost|		Vim lost input focus
-|CursorHold|		the user doesn't press a key for a while
-|CursorHoldI|		the user doesn't press a key for a while in Insert mode
-|CursorMoved|		the cursor was moved in Normal mode
-|CursorMovedI|		the cursor was moved in Insert mode
-
-|WinEnter|		after entering another window
-|WinLeave|		before leaving a window
-|TabEnter|		after entering another tab page
-|TabLeave|		before leaving a tab page
-|CmdwinEnter|		after entering the command-line window
-|CmdwinLeave|		before leaving the command-line window
-
-|InsertEnter|		starting Insert mode
-|InsertChange|		when typing  while in Insert or Replace mode
-|InsertLeave|		when leaving Insert mode
-
-|ColorScheme|		after loading a color scheme
-
-|RemoteReply|		a reply from a server Vim was received
-
-|QuickFixCmdPre|	before a quickfix command is run
-|QuickFixCmdPost|	after a quickfix command is run
-
-|SessionLoadPost|	after loading a session file
-
-|MenuPopup|		just before showing the popup menu
-
-|User|			to be used in combination with ":doautocmd"
-
-
-The alphabetical list of autocommand events:		*autocmd-events-abc*
-
-							*BufCreate* *BufAdd*
-BufAdd or BufCreate		Just after creating a new buffer which is
-				added to the buffer list, or adding a buffer
-				to the buffer list.
-				Also used just after a buffer in the buffer
-				list has been renamed.
-				The BufCreate event is for historic reasons.
-				NOTE: When this autocommand is executed, the
-				current buffer "%" may be different from the
-				buffer being created "".
-							*BufDelete*
-BufDelete			Before deleting a buffer from the buffer list.
-				The BufUnload may be called first (if the
-				buffer was loaded).
-				Also used just before a buffer in the buffer
-				list is renamed.
-				NOTE: When this autocommand is executed, the
-				current buffer "%" may be different from the
-				buffer being deleted "" and "".
-				Don't change to another buffer, it will cause
-				problems.
-							*BufEnter*
-BufEnter			After entering a buffer.  Useful for setting
-				options for a file type.  Also executed when
-				starting to edit a buffer, after the
-				BufReadPost autocommands.
-							*BufFilePost*
-BufFilePost			After changing the name of the current buffer
-				with the ":file" or ":saveas" command.
-							*BufFilePre*
-BufFilePre			Before changing the name of the current buffer
-				with the ":file" or ":saveas" command.
-							*BufHidden*
-BufHidden			Just after a buffer has become hidden.  That
-				is, when there are no longer windows that show
-				the buffer, but the buffer is not unloaded or
-				deleted.  Not used for ":qa" or ":q" when
-				exiting Vim.
-				NOTE: When this autocommand is executed, the
-				current buffer "%" may be different from the
-				buffer being unloaded "".
-							*BufLeave*
-BufLeave			Before leaving to another buffer.  Also when
-				leaving or closing the current window and the
-				new current window is not for the same buffer.
-				Not used for ":qa" or ":q" when exiting Vim.
-							*BufNew*
-BufNew				Just after creating a new buffer.  Also used
-				just after a buffer has been renamed.  When
-				the buffer is added to the buffer list BufAdd
-				will be triggered too.
-				NOTE: When this autocommand is executed, the
-				current buffer "%" may be different from the
-				buffer being created "".
-							*BufNewFile*
-BufNewFile			When starting to edit a file that doesn't
-				exist.  Can be used to read in a skeleton
-				file.
-						*BufRead* *BufReadPost*
-BufRead or BufReadPost		When starting to edit a new buffer, after
-				reading the file into the buffer, before
-				executing the modelines.  See |BufWinEnter|
-				for when you need to do something after
-				processing the modelines.
-				This does NOT work for ":r file".  Not used
-				when the file doesn't exist.  Also used after
-				successfully recovering a file.
-							*BufReadCmd*
-BufReadCmd			Before starting to edit a new buffer.  Should
-				read the file into the buffer. |Cmd-event|
-						*BufReadPre* *E200* *E201*
-BufReadPre			When starting to edit a new buffer, before
-				reading the file into the buffer.  Not used
-				if the file doesn't exist.
-							*BufUnload*
-BufUnload			Before unloading a buffer.  This is when the
-				text in the buffer is going to be freed.  This
-				may be after a BufWritePost and before a
-				BufDelete.  Also used for all buffers that are
-				loaded when Vim is going to exit.
-				NOTE: When this autocommand is executed, the
-				current buffer "%" may be different from the
-				buffer being unloaded "".
-				Don't change to another buffer, it will cause
-				problems.
-				When exiting and v:dying is 2 or more this
-				event is not triggered.
-							*BufWinEnter*
-BufWinEnter			After a buffer is displayed in a window.  This
-				can be when the buffer is loaded (after
-				processing the modelines) or when a hidden
-				buffer is displayed in a window (and is no
-				longer hidden).
-				Does not happen for |:split| without
-				arguments, since you keep editing the same
-				buffer, or ":split" with a file that's already
-				open in a window, because it re-uses an
-				existing buffer.  But it does happen for a
-				":split" with the name of the current buffer,
-				since it reloads that buffer.
-							*BufWinLeave*
-BufWinLeave			Before a buffer is removed from a window.
-				Not when it's still visible in another window.
-				Also triggered when exiting.  It's triggered
-				before BufUnload or BufHidden.
-				NOTE: When this autocommand is executed, the
-				current buffer "%" may be different from the
-				buffer being unloaded "".
-				When exiting and v:dying is 2 or more this
-				event is not triggered.
-							*BufWipeout*
-BufWipeout			Before completely deleting a buffer.  The
-				BufUnload and BufDelete events may be called
-				first (if the buffer was loaded and was in the
-				buffer list).  Also used just before a buffer
-				is renamed (also when it's not in the buffer
-				list).
-				NOTE: When this autocommand is executed, the
-				current buffer "%" may be different from the
-				buffer being deleted "".
-				Don't change to another buffer, it will cause
-				problems.
-						*BufWrite* *BufWritePre*
-BufWrite or BufWritePre		Before writing the whole buffer to a file.
-							*BufWriteCmd*
-BufWriteCmd			Before writing the whole buffer to a file.
-				Should do the writing of the file and reset
-				'modified' if successful, unless '+' is in
-				'cpo' and writing to another file |cpo-+|.
-				The buffer contents should not be changed.
-				|Cmd-event|
-							*BufWritePost*
-BufWritePost			After writing the whole buffer to a file
-				(should undo the commands for BufWritePre).
-							*CmdwinEnter*
-CmdwinEnter			After entering the command-line window.
-				Useful for setting options specifically for
-				this special type of window.  This is
-				triggered _instead_ of BufEnter and WinEnter.
-				 is set to a single character,
-				indicating the type of command-line.
-				|cmdwin-char|
-							*CmdwinLeave*
-CmdwinLeave			Before leaving the command-line window.
-				Useful to clean up any global setting done
-				with CmdwinEnter.  This is triggered _instead_
-				of BufLeave and WinLeave.
-				 is set to a single character,
-				indicating the type of command-line.
-				|cmdwin-char|
-							*ColorScheme*
-ColorScheme			After loading a color scheme. |:colorscheme|
-
-							*CursorHold*
-CursorHold			When the user doesn't press a key for the time
-				specified with 'updatetime'.  Not re-triggered
-				until the user has pressed a key (i.e. doesn't
-				fire every 'updatetime' ms if you leave Vim to
-				make some coffee. :)  See |CursorHold-example|
-				for previewing tags.
-				This event is only triggered in Normal mode.
-				It is not triggered when waiting for a command
-				argument to be typed, or a movement after an
-				operator.
-				While recording the CursorHold event is not
-				triggered. |q|
-				Note: Interactive commands cannot be used for
-				this event.  There is no hit-enter prompt,
-				the screen is updated directly (when needed).
-				Note: In the future there will probably be
-				another option to set the time.
-				Hint: to force an update of the status lines
-				use: >
-					:let &ro = &ro
-<				{only on Amiga, Unix, Win32, MSDOS and all GUI
-				versions}
-							*CursorHoldI*
-CursorHoldI			Just like CursorHold, but in Insert mode.
-
-							*CursorMoved*
-CursorMoved			After the cursor was moved in Normal mode.
-				Also when the text of the cursor line has been
-				changed, e.g., with "x", "rx" or "p".
-				Not triggered when there is typeahead or when
-				an operator is pending.
-				For an example see |match-parens|.
-				Careful: Don't do anything that the user does
-				not expect or that is slow.
-							*CursorMovedI*
-CursorMovedI			After the cursor was moved in Insert mode.
-				Otherwise the same as CursorMoved.
-							*EncodingChanged*
-EncodingChanged			Fires off after the 'encoding' option has been
-				changed.  Useful to set up fonts, for example.
-							*FileAppendCmd*
-FileAppendCmd			Before appending to a file.  Should do the
-				appending to the file.  Use the '[ and ']
-				marks for the range of lines.|Cmd-event|
-							*FileAppendPost*
-FileAppendPost			After appending to a file.
-							*FileAppendPre*
-FileAppendPre			Before appending to a file.  Use the '[ and ']
-				marks for the range of lines.
-							*FileChangedRO*
-FileChangedRO			Before making the first change to a read-only
-				file.  Can be used to check-out the file from
-				a source control system.  Not triggered when
-				the change was caused by an autocommand.
-				This event is triggered when making the first
-				change in a buffer or the first change after
-				'readonly' was set, just before the change is
-				applied to the text.
-				WARNING: If the autocommand moves the cursor
-				the effect of the change is undefined.
-							*E788*
-				It is not allowed to change to another buffer
-				here.  You can reload the buffer but not edit
-				another one.
-							*FileChangedShell*
-FileChangedShell		When Vim notices that the modification time of
-				a file has changed since editing started.
-				Also when the file attributes of the file
-				change. |timestamp|
-				Mostly triggered after executing a shell
-				command, but also with a |:checktime| command
-				or when Gvim regains input focus.
-				This autocommand is triggered for each changed
-				file.  It is not used when 'autoread' is set
-				and the buffer was not changed.  If a
-				FileChangedShell autocommand is present the
-				warning message and prompt is not given.
-				The |v:fcs_reason| variable is set to indicate
-				what happened and |v:fcs_choice| can be used
-				to tell Vim what to do next.
-				NOTE: When this autocommand is executed, the
-				current buffer "%" may be different from the
-				buffer that was changed "".
-				NOTE: The commands must not change the current
-				buffer, jump to another buffer or delete a
-				buffer.  *E246* *E811*
-				NOTE: This event never nests, to avoid an
-				endless loop.  This means that while executing
-				commands for the FileChangedShell event no
-				other FileChangedShell event will be
-				triggered.
-							*FileChangedShellPost*
-FileChangedShellPost		After handling a file that was changed outside
-				of Vim.  Can be used to update the statusline.
-							*FileEncoding*
-FileEncoding			Obsolete.  It still works and is equivalent
-				to |EncodingChanged|.
-							*FileReadCmd*
-FileReadCmd			Before reading a file with a ":read" command.
-				Should do the reading of the file. |Cmd-event|
-							*FileReadPost*
-FileReadPost			After reading a file with a ":read" command.
-				Note that Vim sets the '[ and '] marks to the
-				first and last line of the read.  This can be
-				used to operate on the lines just read.
-							*FileReadPre*
-FileReadPre			Before reading a file with a ":read" command.
-							*FileType*
-FileType			When the 'filetype' option has been set.  The
-				pattern is matched against the filetype.
-				 can be used for the name of the file
-				where this option was set, and  for
-				the new value of 'filetype'.
-				See |filetypes|.
-							*FileWriteCmd*
-FileWriteCmd			Before writing to a file, when not writing the
-				whole buffer.  Should do the writing to the
-				file.  Should not change the buffer.  Use the
-				'[ and '] marks for the range of lines.
-				|Cmd-event|
-							*FileWritePost*
-FileWritePost			After writing to a file, when not writing the
-				whole buffer.
-							*FileWritePre*
-FileWritePre			Before writing to a file, when not writing the
-				whole buffer.  Use the '[ and '] marks for the
-				range of lines.
-							*FilterReadPost*
-FilterReadPost			After reading a file from a filter command.
-				Vim checks the pattern against the name of
-				the current buffer as with FilterReadPre.
-				Not triggered when 'shelltemp' is off.
-							*FilterReadPre* *E135*
-FilterReadPre			Before reading a file from a filter command.
-				Vim checks the pattern against the name of
-				the current buffer, not the name of the
-				temporary file that is the output of the
-				filter command.
-				Not triggered when 'shelltemp' is off.
-							*FilterWritePost*
-FilterWritePost			After writing a file for a filter command or
-				making a diff.
-				Vim checks the pattern against the name of
-				the current buffer as with FilterWritePre.
-				Not triggered when 'shelltemp' is off.
-							*FilterWritePre*
-FilterWritePre			Before writing a file for a filter command or
-				making a diff.
-				Vim checks the pattern against the name of
-				the current buffer, not the name of the
-				temporary file that is the output of the
-				filter command.
-				Not triggered when 'shelltemp' is off.
-							*FocusGained*
-FocusGained			When Vim got input focus.  Only for the GUI
-				version and a few console versions where this
-				can be detected.
-							*FocusLost*
-FocusLost			When Vim lost input focus.  Only for the GUI
-				version and a few console versions where this
-				can be detected.  May also happen when a
-				dialog pops up.
-							*FuncUndefined*
-FuncUndefined			When a user function is used but it isn't
-				defined.  Useful for defining a function only
-				when it's used.  The pattern is matched
-				against the function name.  Both  and
-				 are set to the name of the function.
-				See |autoload-functions|.
-							*GUIEnter*
-GUIEnter			After starting the GUI successfully, and after
-				opening the window.  It is triggered before
-				VimEnter when using gvim.  Can be used to
-				position the window from a .gvimrc file: >
-	:autocmd GUIEnter * winpos 100 50
-<							*GUIFailed*
-GUIFailed			After starting the GUI failed.  Vim may
-				continue to run in the terminal, if possible
-				(only on Unix and alikes, when connecting the
-				X server fails).  You may want to quit Vim: >
-	:autocmd GUIFailed * qall
-<							*InsertChange*
-InsertChange			When typing  while in Insert or
-				Replace mode.  The |v:insertmode| variable
-				indicates the new mode.
-				Be careful not to move the cursor or do
-				anything else that the user does not expect.
-							*InsertEnter*
-InsertEnter			Just before starting Insert mode.  Also for
-				Replace mode and Virtual Replace mode.  The
-				|v:insertmode| variable indicates the mode.
-				Be careful not to move the cursor or do
-				anything else that the user does not expect.
-							*InsertLeave*
-InsertLeave			When leaving Insert mode.  Also when using
-				CTRL-O |i_CTRL-O|.  But not for |i_CTRL-C|.
-							*MenuPopup*
-MenuPopup			Just before showing the popup menu (under the
-				right mouse button).  Useful for adjusting the
-				menu for what is under the cursor or mouse
-				pointer.
-				The pattern is matched against a single
-				character representing the mode:
-					n	Normal
-					v	Visual
-					o	Operator-pending
-					i	Insert
-					c	Command line
-							*QuickFixCmdPre*
-QuickFixCmdPre			Before a quickfix command is run (|:make|,
-				|:lmake|, |:grep|, |:lgrep|, |:grepadd|,
-				|:lgrepadd|, |:vimgrep|, |:lvimgrep|,
-				|:vimgrepadd|, |:lvimgrepadd|, |:cscope|).
-				The pattern is matched against the command
-				being run.  When |:grep| is used but 'grepprg'
-				is set to "internal" it still matches "grep".
-				This command cannot be used to set the
-				'makeprg' and 'grepprg' variables.
-				If this command causes an error, the quickfix
-				command is not executed.
-							*QuickFixCmdPost*
-QuickFixCmdPost			Like QuickFixCmdPre, but after a quickfix
-				command is run, before jumping to the first
-				location.  See |QuickFixCmdPost-example|.
-							*RemoteReply*
-RemoteReply			When a reply from a Vim that functions as
-				server was received |server2client()|.  The
-				pattern is matched against the {serverid}.
-				 is equal to the {serverid} from which
-				the reply was sent, and  is the actual
-				reply string.
-				Note that even if an autocommand is defined,
-				the reply should be read with |remote_read()|
-				to consume it.
-							*SessionLoadPost*
-SessionLoadPost			After loading the session file created using
-				the |:mksession| command.
-							*ShellCmdPost*
-ShellCmdPost			After executing a shell command with |:!cmd|,
-				|:shell|, |:make| and |:grep|.  Can be used to
-				check for any changed files.
-							*ShellFilterPost*
-ShellFilterPost			After executing a shell command with
-				":{range}!cmd", ":w !cmd" or ":r !cmd".
-				Can be used to check for any changed files.
-							*SourcePre*
-SourcePre			Before sourcing a Vim script. |:source|
-				 is the name of the file being sourced.
-							*SourceCmd*
-SourceCmd			When sourcing a Vim script. |:source|
-				 is the name of the file being sourced.
-				The autocommand must source this file.
-				|Cmd-event|
-							*SpellFileMissing*
-SpellFileMissing		When trying to load a spell checking file and
-				it can't be found.  The pattern is matched
-				against the language.   is the
-				language, 'encoding' also matters.  See
-				|spell-SpellFileMissing|.
-							*StdinReadPost*
-StdinReadPost			After reading from the stdin into the buffer,
-				before executing the modelines.  Only used
-				when the "-" argument was used when Vim was
-				started |--|.
-							*StdinReadPre*
-StdinReadPre			Before reading from stdin into the buffer.
-				Only used when the "-" argument was used when
-				Vim was started |--|.
-							*SwapExists*
-SwapExists			Detected an existing swap file when starting
-				to edit a file.  Only when it is possible to
-				select a way to handle the situation, when Vim
-				would ask the user what to do.
-				The |v:swapname| variable holds the name of
-				the swap file found,  the file being
-				edited.  |v:swapcommand| may contain a command
-				to be executed in the opened file.
-				The commands should set the |v:swapchoice|
-				variable to a string with one character to
-				tell Vim what should be done next:
-					'o'	open read-only
-					'e'	edit the file anyway
-					'r'	recover
-					'd'	delete the swap file
-					'q'	quit, don't edit the file
-					'a'	abort, like hitting CTRL-C
-				When set to an empty string the user will be
-				asked, as if there was no SwapExists autocmd.
-							*E812*
-				It is not allowed to change to another buffer,
-				change a buffer name or change directory
-				here.
-							*Syntax*
-Syntax				When the 'syntax' option has been set.  The
-				pattern is matched against the syntax name.
-				 can be used for the name of the file
-				where this option was set, and  for
-				the new value of 'syntax'.
-				See |:syn-on|.
-							*TabEnter*
-TabEnter			Just after entering a tab page. |tab-page|
-				After triggering the WinEnter and before
-				triggering the BufEnter event.
-							*TabLeave*
-TabLeave			Just before leaving a tab page. |tab-page|
-				A WinLeave event will have been triggered
-				first.
-							*TermChanged*
-TermChanged			After the value of 'term' has changed.  Useful
-				for re-loading the syntax file to update the
-				colors, fonts and other terminal-dependent
-				settings.  Executed for all loaded buffers.
-							*TermResponse*
-TermResponse			After the response to |t_RV| is received from
-				the terminal.  The value of |v:termresponse|
-				can be used to do things depending on the
-				terminal version.
-							*User*
-User				Never executed automatically.  To be used for
-				autocommands that are only executed with
-				":doautocmd".
-							*UserGettingBored*
-UserGettingBored		When the user hits CTRL-C.  Just kidding! :-)
-							*VimEnter*
-VimEnter			After doing all the startup stuff, including
-				loading .vimrc files, executing the "-c cmd"
-				arguments, creating all windows and loading
-				the buffers in them.
-							*VimLeave*
-VimLeave			Before exiting Vim, just after writing the
-				.viminfo file.  Executed only once, like
-				VimLeavePre.
-				To detect an abnormal exit use |v:dying|.
-				When v:dying is 2 or more this event is not
-				triggered.
-							*VimLeavePre*
-VimLeavePre			Before exiting Vim, just before writing the
-				.viminfo file.  This is executed only once,
-				if there is a match with the name of what
-				happens to be the current buffer when exiting.
-				Mostly useful with a "*" pattern. >
-	:autocmd VimLeavePre * call CleanupStuff()
-<				To detect an abnormal exit use |v:dying|.
-				When v:dying is 2 or more this event is not
-				triggered.
-							*VimResized*
-VimResized			After the Vim window was resized, thus 'lines'
-				and/or 'columns' changed.  Not when starting
-				up though.
-							*WinEnter*
-WinEnter			After entering another window.  Not done for
-				the first window, when Vim has just started.
-				Useful for setting the window height.
-				If the window is for another buffer, Vim
-				executes the BufEnter autocommands after the
-				WinEnter autocommands.
-				Note: When using ":split fname" the WinEnter
-				event is triggered after the split but before
-				the file "fname" is loaded.
-							*WinLeave*
-WinLeave			Before leaving a window.  If the window to be
-				entered next is for a different buffer, Vim
-				executes the BufLeave autocommands before the
-				WinLeave autocommands (but not for ":new").
-				Not used for ":qa" or ":q" when exiting Vim.
-
-==============================================================================
-6. Patterns					*autocmd-patterns* *{pat}*
-
-The file pattern {pat} is tested for a match against the file name in one of
-two ways:
-1. When there is no '/' in the pattern, Vim checks for a match against only
-   the tail part of the file name (without its leading directory path).
-2. When there is a '/' in the pattern, Vim checks for a match against both the
-   short file name (as you typed it) and the full file name (after expanding
-   it to a full path and resolving symbolic links).
-
-The special pattern  or  is used for buffer-local
-autocommands |autocmd-buflocal|.  This pattern is not matched against the name
-of a buffer.
-
-Examples: >
-	:autocmd BufRead *.txt		set et
-Set the 'et' option for all text files. >
-
-	:autocmd BufRead /vim/src/*.c	set cindent
-Set the 'cindent' option for C files in the /vim/src directory. >
-
-	:autocmd BufRead /tmp/*.c	set ts=5
-If you have a link from "/tmp/test.c" to "/home/nobody/vim/src/test.c", and
-you start editing "/tmp/test.c", this autocommand will match.
-
-Note:  To match part of a path, but not from the root directory, use a '*' as
-the first character.  Example: >
-	:autocmd BufRead */doc/*.txt	set tw=78
-This autocommand will for example be executed for "/tmp/doc/xx.txt" and
-"/usr/home/piet/doc/yy.txt".  The number of directories does not matter here.
-
-
-The file name that the pattern is matched against is after expanding
-wildcards.  Thus if you issue this command: >
-	:e $ROOTDIR/main.$EXT
-The argument is first expanded to: >
-	/usr/root/main.py
-Before it's matched with the pattern of the autocommand.  Careful with this
-when using events like FileReadCmd, the value of  may not be what you
-expect.
-
-
-Environment variables can be used in a pattern: >
-	:autocmd BufRead $VIMRUNTIME/doc/*.txt  set expandtab
-And ~ can be used for the home directory (if $HOME is defined): >
-	:autocmd BufWritePost ~/.vimrc   so ~/.vimrc
-	:autocmd BufRead ~archive/*      set readonly
-The environment variable is expanded when the autocommand is defined, not when
-the autocommand is executed.  This is different from the command!
-
-							*file-pattern*
-The pattern is interpreted like mostly used in file names:
-	*	matches any sequence of characters
-	?	matches any single character
-	\?	matches a '?'
-	.	matches a '.'
-	~	matches a '~'
-	,	separates patterns
-	\,	matches a ','
-	{ }	like \( \) in a |pattern|
-	,	inside { }: like \| in a |pattern|
-	\	special meaning like in a |pattern|
-	[ch]	matches 'c' or 'h'
-	[^ch]   match any character but 'c' and 'h'
-
-Note that for all systems the '/' character is used for path separator (even
-MS-DOS and OS/2).  This was done because the backslash is difficult to use
-in a pattern and to make the autocommands portable across different systems.
-
-							*autocmd-changes*
-Matching with the pattern is done when an event is triggered.  Changing the
-buffer name in one of the autocommands, or even deleting the buffer, does not
-change which autocommands will be executed.  Example: >
-
-	au BufEnter *.foo  bdel
-	au BufEnter *.foo  set modified
-
-This will delete the current buffer and then set 'modified' in what has become
-the current buffer instead.  Vim doesn't take into account that "*.foo"
-doesn't match with that buffer name.  It matches "*.foo" with the name of the
-buffer at the moment the event was triggered.
-
-However, buffer-local autocommands will not be executed for a buffer that has
-been wiped out with |:bwipe|.  After deleting the buffer with |:bdel| the
-buffer actually still exists (it becomes unlisted), thus the autocommands are
-still executed.
-
-==============================================================================
-7. Buffer-local autocommands	*autocmd-buflocal* *autocmd-buffer-local*
-					** ** *E680*
-
-Buffer-local autocommands are attached to a specific buffer.  They are useful
-if the buffer does not have a name and when the name does not match a specific
-pattern.  But it also means they must be explicitly added to each buffer.
-
-Instead of a pattern buffer-local autocommands use one of these forms:
-		current buffer
-		buffer number 99
-		using  (only when executing autocommands)
-			||
-
-Examples: >
-    :au CursorHold   echo 'hold'
-    :au CursorHold   echo 'hold'
-    :au CursorHold   echo 'hold'
-
-All the commands for autocommands also work with buffer-local autocommands,
-simply use the special string instead of the pattern.  Examples: >
-    :au! * 		     " remove buffer-local autocommands for
-				     " current buffer
-    :au! * 		     " remove buffer-local autocommands for
-				     " buffer #33
-    :bufdo :au! CursorHold   " remove autocmd for given event for all
-				     " buffers
-    :au * 		     " list buffer-local autocommands for
-				     " current buffer
-
-Note that when an autocommand is defined for the current buffer, it is stored
-with the buffer number.  Thus it uses the form "", where 12 is the
-number of the current buffer.  You will see this when listing autocommands,
-for example.
-
-To test for presence of buffer-local autocommands use the |exists()| function
-as follows: >
-    :if exists("#CursorHold#") | ... | endif
-    :if exists("#CursorHold#") | ... | endif    " for current buffer
-
-When a buffer is wiped out its buffer-local autocommands are also gone, of
-course.  Note that when deleting a buffer, e.g., with ":bdel", it is only
-unlisted, the autocommands are still present.  In order to see the removal of
-buffer-local autocommands: >
-    :set verbose=6
-
-It is not possible to define buffer-local autocommands for a non-existent
-buffer.
-
-==============================================================================
-8. Groups						*autocmd-groups*
-
-Autocommands can be put together in a group.  This is useful for removing or
-executing a group of autocommands.  For example, all the autocommands for
-syntax highlighting are put in the "highlight" group, to be able to execute
-":doautoall highlight BufRead" when the GUI starts.
-
-When no specific group is selected, Vim uses the default group.  The default
-group does not have a name.  You cannot execute the autocommands from the
-default group separately; you can execute them only by executing autocommands
-for all groups.
-
-Normally, when executing autocommands automatically, Vim uses the autocommands
-for all groups.  The group only matters when executing autocommands with
-":doautocmd" or ":doautoall", or when defining or deleting autocommands.
-
-The group name can contain any characters except white space.  The group name
-"end" is reserved (also in uppercase).
-
-The group name is case sensitive.  Note that this is different from the event
-name!
-
-							*:aug* *:augroup*
-:aug[roup] {name}		Define the autocmd group name for the
-				following ":autocmd" commands.  The name "end"
-				or "END" selects the default group.
-
-						*:augroup-delete* *E367*
-:aug[roup]! {name}		Delete the autocmd group {name}.  Don't use
-				this if there is still an autocommand using
-				this group!  This is not checked.
-
-To enter autocommands for a specific group, use this method:
-1. Select the group with ":augroup {name}".
-2. Delete any old autocommands with ":au!".
-3. Define the autocommands.
-4. Go back to the default group with "augroup END".
-
-Example: >
-	:augroup uncompress
-	:  au!
-	:  au BufEnter *.gz	%!gunzip
-	:augroup END
-
-This prevents having the autocommands defined twice (e.g., after sourcing the
-.vimrc file again).
-
-==============================================================================
-9. Executing autocommands				*autocmd-execute*
-
-Vim can also execute Autocommands non-automatically.  This is useful if you
-have changed autocommands, or when Vim has executed the wrong autocommands
-(e.g., the file pattern match was wrong).
-
-Note that the 'eventignore' option applies here too.  Events listed in this
-option will not cause any commands to be executed.
-
-					*:do* *:doau* *:doautocmd* *E217*
-:do[autocmd] [group] {event} [fname]
-			Apply the autocommands matching [fname] (default:
-			current file name) for {event} to the current buffer.
-			You can use this when the current file name does not
-			match the right pattern, after changing settings, or
-			to execute autocommands for a certain event.
-			It's possible to use this inside an autocommand too,
-			so you can base the autocommands for one extension on
-			another extension.  Example: >
-				:au Bufenter *.cpp so ~/.vimrc_cpp
-				:au Bufenter *.cpp doau BufEnter x.c
-<			Be careful to avoid endless loops.  See
-			|autocmd-nested|.
-
-			When the [group] argument is not given, Vim executes
-			the autocommands for all groups.  When the [group]
-			argument is included, Vim executes only the matching
-			autocommands for that group.  Note: if you use an
-			undefined group name, Vim gives you an error message.
-
-			After applying the autocommands the modelines are
-			processed, so that their settings overrule the
-			settings from autocommands, like what happens when
-			editing a file.
-
-						*:doautoa* *:doautoall*
-:doautoa[ll] [group] {event} [fname]
-			Like ":doautocmd", but apply the autocommands to each
-			loaded buffer.  Note that [fname] is used to select
-			the autocommands, not the buffers to which they are
-			applied.
-			Careful: Don't use this for autocommands that delete a
-			buffer, change to another buffer or change the
-			contents of a buffer; the result is unpredictable.
-			This command is intended for autocommands that set
-			options, change highlighting, and things like that.
-
-==============================================================================
-10. Using autocommands					*autocmd-use*
-
-For WRITING FILES there are four possible sets of events.  Vim uses only one
-of these sets for a write command:
-
-BufWriteCmd	BufWritePre	BufWritePost	writing the whole buffer
-		FilterWritePre	FilterWritePost	writing to filter temp file
-FileAppendCmd	FileAppendPre	FileAppendPost	appending to a file
-FileWriteCmd	FileWritePre	FileWritePost	any other file write
-
-When there is a matching "*Cmd" autocommand, it is assumed it will do the
-writing.  No further writing is done and the other events are not triggered.
-|Cmd-event|
-
-Note that the *WritePost commands should undo any changes to the buffer that
-were caused by the *WritePre commands; otherwise, writing the file will have
-the side effect of changing the buffer.
-
-Before executing the autocommands, the buffer from which the lines are to be
-written temporarily becomes the current buffer.  Unless the autocommands
-change the current buffer or delete the previously current buffer, the
-previously current buffer is made the current buffer again.
-
-The *WritePre and *AppendPre autocommands must not delete the buffer from
-which the lines are to be written.
-
-The '[ and '] marks have a special position:
-- Before the *ReadPre event the '[ mark is set to the line just above where
-  the new lines will be inserted.
-- Before the *ReadPost event the '[ mark is set to the first line that was
-  just read, the '] mark to the last line.
-- Before executing the *WriteCmd, *WritePre and *AppendPre autocommands the '[
-  mark is set to the first line that will be written, the '] mark to the last
-  line.
-Careful: '[ and '] change when using commands that change the buffer.
-
-In commands which expect a file name, you can use "" for the file name
-that is being read |:| (you can also use "%" for the current file
-name).  "" can be used for the buffer number of the currently effective
-buffer.  This also works for buffers that doesn't have a name.  But it doesn't
-work for files without a buffer (e.g., with ":r file").
-
-							*gzip-example*
-Examples for reading and writing compressed files: >
-  :augroup gzip
-  :  autocmd!
-  :  autocmd BufReadPre,FileReadPre	*.gz set bin
-  :  autocmd BufReadPost,FileReadPost	*.gz '[,']!gunzip
-  :  autocmd BufReadPost,FileReadPost	*.gz set nobin
-  :  autocmd BufReadPost,FileReadPost	*.gz execute ":doautocmd BufReadPost " . expand("%:r")
-  :  autocmd BufWritePost,FileWritePost	*.gz !mv  :r
-  :  autocmd BufWritePost,FileWritePost	*.gz !gzip :r
-
-  :  autocmd FileAppendPre		*.gz !gunzip 
-  :  autocmd FileAppendPre		*.gz !mv :r 
-  :  autocmd FileAppendPost		*.gz !mv  :r
-  :  autocmd FileAppendPost		*.gz !gzip :r
-  :augroup END
-
-The "gzip" group is used to be able to delete any existing autocommands with
-":autocmd!", for when the file is sourced twice.
-
-(":r" is the file name without the extension, see |:_%:|)
-
-The commands executed for the BufNewFile, BufRead/BufReadPost, BufWritePost,
-FileAppendPost and VimLeave events do not set or reset the changed flag of the
-buffer.  When you decompress the buffer with the BufReadPost autocommands, you
-can still exit with ":q".  When you use ":undo" in BufWritePost to undo the
-changes made by BufWritePre commands, you can still do ":q" (this also makes
-"ZZ" work).  If you do want the buffer to be marked as modified, set the
-'modified' option.
-
-To execute Normal mode commands from an autocommand, use the ":normal"
-command.  Use with care!  If the Normal mode command is not finished, the user
-needs to type characters (e.g., after ":normal m" you need to type a mark
-name).
-
-If you want the buffer to be unmodified after changing it, reset the
-'modified' option.  This makes it possible to exit the buffer with ":q"
-instead of ":q!".
-
-							*autocmd-nested* *E218*
-By default, autocommands do not nest.  If you use ":e" or ":w" in an
-autocommand, Vim does not execute the BufRead and BufWrite autocommands for
-those commands.  If you do want this, use the "nested" flag for those commands
-in which you want nesting.  For example: >
-  :autocmd FileChangedShell *.c nested e!
-The nesting is limited to 10 levels to get out of recursive loops.
-
-It's possible to use the ":au" command in an autocommand.  This can be a
-self-modifying command!  This can be useful for an autocommand that should
-execute only once.
-
-If you want to skip autocommands for one command, use the |:noautocmd| command
-modifier or the 'eventignore' option.
-
-Note: When reading a file (with ":read file" or with a filter command) and the
-last line in the file does not have an , Vim remembers this.  At the next
-write (with ":write file" or with a filter command), if the same line is
-written again as the last line in a file AND 'binary' is set, Vim does not
-supply an .  This makes a filter command on the just read lines write the
-same file as was read, and makes a write command on just filtered lines write
-the same file as was read from the filter.  For example, another way to write
-a compressed file: >
-
-  :autocmd FileWritePre *.gz   set bin|'[,']!gzip
-  :autocmd FileWritePost *.gz  undo|set nobin
-<
-							*autocommand-pattern*
-You can specify multiple patterns, separated by commas.  Here are some
-examples: >
-
-  :autocmd BufRead   *		set tw=79 nocin ic infercase fo=2croq
-  :autocmd BufRead   .letter	set tw=72 fo=2tcrq
-  :autocmd BufEnter  .letter	set dict=/usr/lib/dict/words
-  :autocmd BufLeave  .letter	set dict=
-  :autocmd BufRead,BufNewFile   *.c,*.h	set tw=0 cin noic
-  :autocmd BufEnter  *.c,*.h	abbr FOR for (i = 0; i < 3; ++i){}O
-  :autocmd BufLeave  *.c,*.h	unabbr FOR
-
-For makefiles (makefile, Makefile, imakefile, makefile.unix, etc.): >
-
-  :autocmd BufEnter  ?akefile*	set include=^s\=include
-  :autocmd BufLeave  ?akefile*	set include&
-
-To always start editing C files at the first function: >
-
-  :autocmd BufRead   *.c,*.h	1;/^{
-
-Without the "1;" above, the search would start from wherever the file was
-entered, rather than from the start of the file.
-
-						*skeleton* *template*
-To read a skeleton (template) file when opening a new file: >
-
-  :autocmd BufNewFile  *.c	0r ~/vim/skeleton.c
-  :autocmd BufNewFile  *.h	0r ~/vim/skeleton.h
-  :autocmd BufNewFile  *.java	0r ~/vim/skeleton.java
-
-To insert the current date and time in a *.html file when writing it: >
-
-  :autocmd BufWritePre,FileWritePre *.html   ks|call LastMod()|'s
-  :fun LastMod()
-  :  if line("$") > 20
-  :    let l = 20
-  :  else
-  :    let l = line("$")
-  :  endif
-  :  exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " .
-  :  \ strftime("%Y %b %d")
-  :endfun
-
-You need to have a line "Last modified: " in the first 20 lines
-of the file for this to work.  Vim replaces  (and anything in the
-same line after it) with the current date and time.  Explanation:
-	ks		mark current position with mark 's'
-	call LastMod()  call the LastMod() function to do the work
-	's		return the cursor to the old position
-The LastMod() function checks if the file is shorter than 20 lines, and then
-uses the ":g" command to find lines that contain "Last modified: ".  For those
-lines the ":s" command is executed to replace the existing date with the
-current one.  The ":execute" command is used to be able to use an expression
-for the ":g" and ":s" commands.  The date is obtained with the strftime()
-function.  You can change its argument to get another date string.
-
-When entering :autocmd on the command-line, completion of events and command
-names may be done (with , CTRL-D, etc.) where appropriate.
-
-Vim executes all matching autocommands in the order that you specify them.
-It is recommended that your first autocommand be used for all files by using
-"*" as the file pattern.  This means that you can define defaults you like
-here for any settings, and if there is another matching autocommand it will
-override these.  But if there is no other matching autocommand, then at least
-your default settings are recovered (if entering this file from another for
-which autocommands did match).  Note that "*" will also match files starting
-with ".", unlike Unix shells.
-
-						    *autocmd-searchpat*
-Autocommands do not change the current search patterns.  Vim saves the current
-search patterns before executing autocommands then restores them after the
-autocommands finish.  This means that autocommands do not affect the strings
-highlighted with the 'hlsearch' option.  Within autocommands, you can still
-use search patterns normally, e.g., with the "n" command.
-If you want an autocommand to set the search pattern, such that it is used
-after the autocommand finishes, use the ":let @/ =" command.
-The search-highlighting cannot be switched off with ":nohlsearch" in an
-autocommand.  Use the 'h' flag in the 'viminfo' option to disable search-
-highlighting when starting Vim.
-
-							*Cmd-event*
-When using one of the "*Cmd" events, the matching autocommands are expected to
-do the file reading, writing or sourcing.  This can be used when working with
-a special kind of file, for example on a remote system.
-CAREFUL: If you use these events in a wrong way, it may have the effect of
-making it impossible to read or write the matching files!  Make sure you test
-your autocommands properly.  Best is to use a pattern that will never match a
-normal file name, for example "ftp://*".
-
-When defining a BufReadCmd it will be difficult for Vim to recover a crashed
-editing session.  When recovering from the original file, Vim reads only those
-parts of a file that are not found in the swap file.  Since that is not
-possible with a BufReadCmd, use the |:preserve| command to make sure the
-original file isn't needed for recovery.  You might want to do this only when
-you expect the file to be modified.
-
-For file read and write commands the |v:cmdarg| variable holds the "++enc="
-and "++ff=" argument that are effective.  These should be used for the command
-that reads/writes the file.  The |v:cmdbang| variable is one when "!" was
-used, zero otherwise.
-
-See the $VIMRUNTIME/plugin/netrwPlugin.vim for examples.
-
-==============================================================================
-11. Disabling autocommands				*autocmd-disable*
-
-To disable autocommands for some time use the 'eventignore' option.  Note that
-this may cause unexpected behavior, make sure you restore 'eventignore'
-afterwards, using a |:try| block with |:finally|.
-
-							*:noautocmd* *:noa*
-To disable autocommands for just one command use the ":noautocmd" command
-modifier.  This will set 'eventignore' to "all" for the duration of the
-following command.  Example: >
-
-	:noautocmd w fname.gz
-
-This will write the file without triggering the autocommands defined by the
-gzip plugin.
-
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/change.txt b/share/vim/vim73/doc/change.txt
deleted file mode 100644
index 19528edc..00000000
--- a/share/vim/vim73/doc/change.txt
+++ /dev/null
@@ -1,1659 +0,0 @@
-*change.txt*    For Vim version 7.3.  Last change: 2010 Jul 29
-
-
-		  VIM REFERENCE MANUAL    by Bram Moolenaar
-
-
-This file describes commands that delete or change text.  In this context,
-changing text means deleting the text and replacing it with other text using
-one command.  You can undo all of these commands.  You can repeat the non-Ex
-commands with the "." command.
-
-1. Deleting text		|deleting|
-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|.
-
-==============================================================================
-1. Deleting text					*deleting* *E470*
-
-["x]	or					** *x* *dl*
-["x]x			Delete [count] characters under and after the cursor
-			[into register x] (not |linewise|).  Does the same as
-			"dl".
-			The  key does not take a [count].  Instead, it
-			deletes the last character of the count.
-			See |:fixdel| if the  key does not do what you
-			want.  See |'whichwrap'| for deleting a line break
-			(join lines).  {Vi does not support }
-
-							*X* *dh*
-["x]X			Delete [count] characters before the cursor [into
-			register x] (not |linewise|).  Does the same as "dh".
-			Also see |'whichwrap'|.
-
-							*d*
-["x]d{motion}		Delete text that {motion} moves over [into register
-			x].  See below for exceptions.
-
-							*dd*
-["x]dd			Delete [count] lines [into register x] |linewise|.
-
-							*D*
-["x]D			Delete the characters under the cursor until the end
-			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_*
-{Visual}["x]d   or
-{Visual}["x]	Delete the highlighted text [into register x] (for
-			{Visual} see |Visual-mode|).  {not in Vi}
-
-{Visual}["x]CTRL-H   or					*v_CTRL-H* *v_*
-{Visual}["x]	When in Select mode: Delete the highlighted text [into
-			register x].
-
-{Visual}["x]X	or					*v_X* *v_D* *v_b_D*
-{Visual}["x]D		Delete the highlighted lines [into register x] (for
-			{Visual} see |Visual-mode|).  In Visual block mode,
-			"D" deletes the highlighted text plus all text until
-			the end of the line.  {not in Vi}
-
-						*:d* *:de* *:del* *:delete*
-:[range]d[elete] [x]	Delete [range] lines (default: current line) [into
-			register x].
-
-:[range]d[elete] [x] {count}
-			Delete {count} lines, starting with [range]
-			(default: current line |cmdline-ranges|) [into
-			register x].
-
-These commands delete text.  You can repeat them with the "." command
-(except ":d") and undo them.  Use Visual mode to delete blocks of text.  See
-|registers| for an explanation of registers.
-
-An exception for the d{motion} command: If the motion is not linewise, the
-start and end of the motion are not in the same line, and there are only
-blanks before the start and after the end of the motion, the delete becomes
-linewise.  This means that the delete also removes the line of blanks that you
-might expect to remain.
-
-Trying to delete an empty region of text (e.g., "d0" in the first column)
-is an error when 'cpoptions' includes the 'E' flag.
-
-							*J*
-J			Join [count] lines, with a minimum of two lines.
-			Remove the indent and insert up to two spaces (see
-			below).
-
-							*v_J*
-{Visual}J		Join the highlighted lines, with a minimum of two
-			lines.  Remove the indent and insert up to two spaces
-			(see below).  {not in Vi}
-
-							*gJ*
-gJ			Join [count] lines, with a minimum of two lines.
-			Don't insert or remove any spaces.  {not in Vi}
-
-							*v_gJ*
-{Visual}gJ		Join the highlighted lines, with a minimum of two
-			lines.  Don't insert or remove any spaces.  {not in
-			Vi}
-
-							*:j* *:join*
-:[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} [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  between lines.  This has the effect of joining
-multiple lines into one line.  You can repeat these commands (except ":j") and
-undo them.
-
-These commands, except "gJ", insert one space in place of the  unless
-there is trailing white space or the next line starts with a ')'.  These
-commands, except "gJ", delete any leading white space on the next line.  If
-the 'joinspaces' option is on, these commands insert two spaces after a '.',
-'!' or '?' (but if 'cpoptions' includes the 'j' flag, they insert two spaces
-only after a '.').
-The 'B' and 'M' flags in 'formatoptions' change the behavior for inserting
-spaces before and after a multi-byte character |fo-table|.
-
-
-==============================================================================
-2. Delete and insert				*delete-insert* *replacing*
-
-							*R*
-R			Enter Replace mode: Each character you type replaces
-			an existing character, starting with the character
-			under the cursor.  Repeat the entered text [count]-1
-			times.  See |Replace-mode| for more details.
-
-							*gR*
-gR			Enter Virtual Replace mode: Each character you type
-			replaces existing characters in screen space.  So a
-			 may replace several characters at once.
-			Repeat the entered text [count]-1 times.  See
-			|Virtual-Replace-mode| for more details.
-			{not available when compiled without the |+vreplace|
-			feature}
-
-							*c*
-["x]c{motion}		Delete {motion} text [into register x] and start
-			insert.  When  'cpoptions' includes the 'E' flag and
-			there is no text to delete (e.g., with "cTx" when the
-			cursor is just after an 'x'), an error occurs and
-			insert mode does not start (this is Vi compatible).
-			When  'cpoptions' does not include the 'E' flag, the
-			"c" command always starts insert mode, even if there
-			is no text to delete.
-
-							*cc*
-["x]cc			Delete [count] lines [into register x] and start
-			insert |linewise|.  If 'autoindent' is on, preserve
-			the indent of the first line.
-
-							*C*
-["x]C			Delete from the cursor position to the end of the
-			line and [count]-1 more lines [into register x], and
-			start insert.  Synonym for c$ (not |linewise|).
-
-							*s*
-["x]s			Delete [count] characters [into register x] and start
-			insert (s stands for Substitute).  Synonym for "cl"
-			(not |linewise|).
-
-							*S*
-["x]S			Delete [count] lines [into register x] and start
-			insert.  Synonym for "cc" |linewise|.
-
-{Visual}["x]c	or					*v_c* *v_s*
-{Visual}["x]s		Delete the highlighted text [into register x] and
-			start insert (for {Visual} see |Visual-mode|).  {not
-			in Vi}
-
-							*v_r*
-{Visual}["x]r{char}	Replace all selected characters by {char}.
-
-							*v_C*
-{Visual}["x]C		Delete the highlighted lines [into register x] and
-			start insert.  In Visual block mode it works
-			differently |v_b_C|.  {not in Vi}
-							*v_S*
-{Visual}["x]S		Delete the highlighted lines [into register x] and
-			start insert (for {Visual} see |Visual-mode|).  {not
-			in Vi}
-							*v_R*
-{Visual}["x]R		Currently just like {Visual}["x]S.  In a next version
-			it might work differently. {not in Vi}
-
-Notes:
-- You can end Insert and Replace mode with .
-- See the section "Insert and Replace mode" |mode-ins-repl| for the other
-  special characters in these modes.
-- The effect of [count] takes place after Vim exits Insert or Replace mode.
-- When the 'cpoptions' option contains '$' and the change is within one line,
-  Vim continues to show the text to be deleted and puts a '$' at the last
-  deleted character.
-
-See |registers| for an explanation of registers.
-
-Replace mode is just like Insert mode, except that every character you enter
-deletes one character.  If you reach the end of a line, Vim appends any
-further characters (just like Insert mode).  In Replace mode, the backspace
-key restores the original text (if there was any).  (See section "Insert and
-Replace mode" |mode-ins-repl|).
-
-						*cw* *cW*
-Special case: When the cursor is in a word, "cw" and "cW" do not include the
-white space after a word, they only change up to the end of the word.  This is
-because Vim interprets "cw" as change-word, and a word does not include the
-following white space.
-{Vi: "cw" when on a blank followed by other blanks changes only the first
-blank; this is probably a bug, because "dw" deletes all the blanks; use the
-'w' flag in 'cpoptions' to make it work like Vi anyway}
-
-If you prefer "cw" to include the space after a word, use this mapping: >
-	:map cw dwi
-Or use "caw" (see |aw|).
-
-							*:c* *:ch* *:change*
-:{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*
-
-							*r*
-r{char}			Replace the character under the cursor with {char}.
-			If {char} is a  or , a line break replaces the
-			character.  To replace with a real , use CTRL-V
-			.  CTRL-V  replaces with a .
-			{Vi: CTRL-V  still replaces with a line break,
-			cannot replace something with a }
-			If you give a [count], Vim replaces [count] characters
-			with [count] {char}s.  When {char} is a  or ,
-			however, Vim inserts only one : "5r" replaces
-			five characters with a single line break.
-			When {char} is a  or , Vim performs
-			autoindenting.  This works just like deleting the
-			characters that are replaced and then doing
-			"i".
-			{char} can be entered as a digraph |digraph-arg|.
-			|:lmap| mappings apply to {char}.  The CTRL-^ command
-			in Insert mode can be used to switch this on/off
-			|i_CTRL-^|.  See |utf-8-char-arg| about using
-			composing characters when 'encoding' is Unicode.
-
-							*gr*
-gr{char}		Replace the virtual characters under the cursor with
-			{char}.  This replaces in screen space, not file
-			space.  See |gR| and |Virtual-Replace-mode| for more
-			details.  As with |r| a count may be given.
-			{char} can be entered like with |r|.
-			{not available when compiled without the |+vreplace|
-			feature}
-
-						*digraph-arg*
-The argument for Normal mode commands like |r| and |t| is a single character.
-When 'cpo' doesn't contain the 'D' flag, this character can also be entered
-like |digraphs|.  First type CTRL-K and then the two digraph characters.
-{not available when compiled without the |+digraphs| feature}
-
-						*case*
-The following commands change the case of letters.  The currently active
-|locale| is used.  See |:language|.  The LC_CTYPE value matters here.
-
-							*~*
-~			'notildeop' option: Switch case of the character
-			under the cursor and move the cursor to the right.
-			If a [count] is given, do that many characters. {Vi:
-			no count}
-
-~{motion}		'tildeop' option: switch case of {motion} text. {Vi:
-			tilde cannot be used as an operator}
-
-							*g~*
-g~{motion}		Switch case of {motion} text. {not in Vi}
-
-g~g~							*g~g~* *g~~*
-g~~			Switch case of current line. {not in Vi}.
-
-							*v_~*
-{Visual}~		Switch case of highlighted text (for {Visual} see
-			|Visual-mode|). {not in Vi}
-
-							*v_U*
-{Visual}U		Make highlighted text uppercase (for {Visual} see
-			|Visual-mode|). {not in Vi}
-
-							*gU* *uppercase*
-gU{motion}		Make {motion} text uppercase. {not in Vi}
-			Example: >
-				:map!  gUiw`]a
-<			This works in Insert mode: press CTRL-F to make the
-			word before the cursor uppercase.  Handy to type
-			words in lowercase and then make them uppercase.
-
-
-gUgU							*gUgU* *gUU*
-gUU			Make current line uppercase. {not in Vi}.
-
-							*v_u*
-{Visual}u		Make highlighted text lowercase (for {Visual} see
-			|Visual-mode|).  {not in Vi}
-
-							*gu* *lowercase*
-gu{motion}		Make {motion} text lowercase. {not in Vi}
-
-gugu							*gugu* *guu*
-guu			Make current line lowercase. {not in Vi}.
-
-							*g?* *rot13*
-g?{motion}		Rot13 encode {motion} text. {not in Vi}
-
-							*v_g?*
-{Visual}g?		Rot13 encode the highlighted text (for {Visual} see
-			|Visual-mode|).  {not in Vi}
-
-g?g?							*g?g?* *g??*
-g??			Rot13 encode current line. {not in Vi}.
-
-To turn one line into title caps, make every first letter of a word
-uppercase: >
-	:s/\v<(.)(\w*)/\u\1\L\2/g
-
-
-Adding and subtracting ~
-							*CTRL-A*
-CTRL-A			Add [count] to the number or alphabetic character at
-			or after the cursor.  {not in Vi}
-
-							*CTRL-X*
-CTRL-X			Subtract [count] from the number or alphabetic
-			character at or after the cursor.  {not in Vi}
-
-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 "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 "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".
-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 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
-6. q	     - stop recording
-7. @a - repeat the yank, put and increment  times
-
-
-SHIFTING LINES LEFT OR RIGHT				*shift-left-right*
-
-							*<*
-<{motion}		Shift {motion} lines one 'shiftwidth' leftwards.
-
-							*<<*
-<<			Shift [count] lines one 'shiftwidth' leftwards.
-
-							*v_<*
-{Visual}[count]<	Shift the highlighted lines [count] 'shiftwidth'
-			leftwards (for {Visual} see |Visual-mode|).  {not in
-			Vi}
-
-							*>*
- >{motion}		Shift {motion} lines one 'shiftwidth' rightwards.
-
-							*>>*
- >>			Shift [count] lines one 'shiftwidth' rightwards.
-
-							*v_>*
-{Visual}[count]>	Shift the highlighted lines [count] 'shiftwidth'
-			rightwards (for {Visual} see |Visual-mode|).  {not in
-			Vi}
-
-							*:<*
-:[range]<		Shift [range] lines one 'shiftwidth' left.  Repeat '<'
-			for shifting multiple 'shiftwidth's.
-
-:[range]< {count}	Shift {count} lines one 'shiftwidth' left, starting
-			with [range] (default current line |cmdline-ranges|).
-			Repeat '<' for shifting multiple 'shiftwidth's.
-
-:[range]le[ft] [indent]	left align lines in [range].  Sets the indent in the
-			lines to [indent] (default 0).  {not in Vi}
-
-							*:>*
-:[range]> [flags]	Shift {count} [range] lines one 'shiftwidth' right.
-			Repeat '>' for shifting multiple 'shiftwidth's.
-			See |ex-flags| for [flags].
-
-:[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
-which these commands insert or delete.  Normally the 'shiftwidth' option is 8,
-but you can set it to, say, 3 to make smaller indents.  The shift leftwards
-stops when there is no indent.  The shift right does not affect empty lines.
-
-If the 'shiftround' option is on, the indent is rounded to a multiple of
-'shiftwidth'.
-
-If the 'smartindent' option is on, or 'cindent' is on and 'cinkeys' contains
-'#', shift right does not affect lines starting with '#' (these are supposed
-to be C preprocessor lines that must stay in column 1).
-
-When the 'expandtab' option is off (this is the default) Vim uses s as
-much as possible to make the indent.  You can use ">><<" to replace an indent
-made out of spaces with the same indent made out of s (and a few spaces
-if necessary).  If the 'expandtab' option is on, Vim uses only spaces.  Then
-you can use ">><<" to replace s in the indent by spaces (or use
-":retab!").
-
-To move a line several 'shiftwidth's, use Visual mode or the ":" commands.
-For example: >
-	Vjj4>		move three lines 4 indents to the right
-	:<<<		move current line 3 indents to the left
-	:>> 5		move 5 lines 2 indents to the right
-	:5>>		move line 5 2 indents to the right
-
-==============================================================================
-4. Complex changes					*complex-change*
-
-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 replaced 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}.
-
-							*!!*
-!!{filter}		Filter [count] lines through the external program
-			{filter}.
-
-							*v_!*
-{Visual}!{filter}	Filter the highlighted lines through the external
-			program {filter} (for {Visual} see |Visual-mode|).
-			{not in Vi}
-
-:{range}![!]{filter} [!][arg]				*:range!*
-			Filter {range} lines through the external program
-			{filter}.  Vim replaces the optional bangs with the
-			latest given command and appends the optional [arg].
-			Vim saves the output of the filter command in a
-			temporary file and then reads the file into the buffer
-			|tempfile|.  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: >
-				:keepmarks '<,'>!sort
-<			When the number of lines after filtering is less than
-			before, marks in the missing lines are deleted anyway.
-
-							*=*
-={motion}		Filter {motion} lines through the external program
-			given with the 'equalprg' option.  When the 'equalprg'
-			option is empty (this is the default), use the
-			internal formatting function |C-indenting|.  But when
-			'indentexpr' is not empty, it will be used instead
-			|indent-expression|.  When Vim was compiled without
-			internal formatting then the "indent" program is used
-			as a last resort.
-
-							*==*
-==			Filter [count] lines like with ={motion}.
-
-							*v_=*
-{Visual}=		Filter the highlighted lines like with ={motion}.
-			{not in Vi}
-
-
-						*tempfile* *setuid*
-Vim uses temporary files for filtering, generating diffs and also for
-tempname().  For Unix, the file will be in a private directory (only
-accessible by the current user) to avoid security problems (e.g., a symlink
-attack or other people reading your file).  When Vim exits the directory and
-all files in it are deleted.  When Vim has the setuid bit set this may cause
-problems, the temp file is owned by the setuid user but the filter command
-probably runs as the original user.
-On MS-DOS and OS/2 the first of these directories that works is used: $TMP,
-$TEMP, c:\TMP, c:\TEMP.
-For Unix the list of directories is: $TMPDIR, /tmp, current-dir, $HOME.
-For MS-Windows the GetTempFileName() system function is used.
-For other systems the tmpnam() library function is used.
-
-
-
-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|.
-			{string} can be a literal string, or something
-			special; see |sub-replace-special|.
-			When [range] and [count] are omitted, replace in the
-			current line only.
-			When [count] is given, replace in [count] lines,
-			starting with the last line in [range].  When [range]
-			is omitted start in the current line.
-			Also see |cmdline-ranges|.
-			See |:s_flags| for [flags].
-
-:[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 [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]~[&][flags] [count]					*:~*
-			Repeat last substitute with same substitute string
-			but with last used search pattern.  This is like
-			":&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&			Synonym for ":%s//~/&" (repeat last substitute on all
-			lines with the same flags).
-			Mnemonic: global substitute. {not in Vi}
-
-						*:snomagic* *:sno*
-:[range]sno[magic] ...	Same as ":substitute", but always use 'nomagic'.
-			{not in Vi}
-
-						*:smagic* *:sm*
-:[range]sm[agic] ...	Same as ":substitute", but always use 'magic'.
-			{not in Vi}
-
-							*:s_flags*
-The flags that you can use for the substitute commands:
-
-[&]	Must be the first one: Keep the flags from the previous substitute
-	command.  Examples: >
-		:&&
-		:s/this/that/&
-<	Note that ":s" and ":&" don't keep the flags.
-	{not in Vi}
-
-[c]	Confirm each substitution.  Vim highlights the matching string (with
-	|hl-IncSearch|).  You can type:				*:s_c*
-	    'y'	    to substitute this match
-	    'l'	    to substitute this match and then quit ("last")
-	    'n'	    to skip this match
-	       to quit substituting
-	    'a'	    to substitute this and all remaining matches {not in Vi}
-	    'q'	    to quit substituting {not in Vi}
-	    CTRL-E  to scroll the screen up {not in Vi, not available when
-			compiled without the |+insert_expand| feature}
-	    CTRL-Y  to scroll the screen down {not in Vi, not available when
-			compiled without the |+insert_expand| feature}
-	If the 'edcompatible' option is on, Vim remembers the [c] flag and
-	toggles it each time you use it, but resets it when you give a new
-	search pattern.
-	{not in Vi: highlighting of the match, other responses than 'y' or 'n'}
-
-[e]     When the search pattern fails, do not issue an error message and, in
-	particular, continue in maps as if no error occurred.  This is most
-	useful to prevent the "No match" error from breaking a mapping.  Vim
-	does not suppress the following error messages, however:
-		Regular expressions can't be delimited by letters
-		\ should be followed by /, ? or &
-		No previous substitute regular expression
-		Trailing characters
-		Interrupted
-	{not in Vi}
-
-[g]	Replace all occurrences in the line.  Without this argument,
-	replacement occurs only for the first occurrence in each line.  If
-	the 'edcompatible' option is on, Vim remembers this flag and toggles
-	it each time you use it, but resets it when you give a new search
-	pattern.  If the 'gdefault' option is on, this flag is on by default
-	and the [g] argument switches it off.
-
-[i]	Ignore case for the pattern.  The 'ignorecase' and 'smartcase' options
-	are not used.
-	{not in Vi}
-
-[I]	Don't ignore case for the pattern.  The 'ignorecase' and 'smartcase'
-	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.
-
-[#]	Like [p] and prepend the line number.
-
-[l]	Like [p] 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
-	previously used search pattern instead of the search pattern from the
-	last substitute or ":global".  If the last command that did a search
-	was a substitute or ":global", there is no effect.  If the last
-	command was a search command such as "/", use the pattern from that
-	command.
-	For ":s" with an argument this already happens: >
-		:s/blue/red/
-		/green
-		:s//red/   or  :~   or  :&r
-<	The last commands will replace "green" with "red". >
-		:s/blue/red/
-		/green
-		:&
-<	The last command will replace "blue" with "red".
-	{not in Vi}
-
-Note that there is no flag to change the "magicness" of the pattern.  A
-different command is used instead, or you can use |/\v| and friends.  The
-reason is that the flags can only be found by skipping the pattern, and in
-order to skip the pattern the "magicness" must be known.  Catch 22!
-
-If the {pattern} for the substitute command is empty, the command uses the
-pattern from the last substitute or ":global" command.  With the [r] flag, the
-command uses the pattern from the last substitute, ":global", or search
-command.
-
-If the {string} is omitted the substitute is done as if it's empty.  Thus the
-matched pattern is deleted.  The separator after {pattern} can also be left
-out then.  Example: >
-	:%s/TESTING
-This deletes "TESTING" from all lines, but only one per line.
-
-For compatibility with Vi these two exceptions are allowed:
-"\/{string}/" and "\?{string}?" do the same as "//{string}/r".
-"\&{string}&" does the same as "//{string}/".
-							*E146*
-Instead of the '/' which surrounds the pattern and replacement string, you
-can use any other single-byte character, but not an alphanumeric character,
-'\', '"' or '|'.  This is useful if you want to include a '/' in the search
-pattern or replacement string.  Example: >
-	:s+/+//+
-
-For the definition of a pattern, see |pattern|.  In Visual block mode, use
-|/\%V| in the pattern to have the substitute work in the block only.
-Otherwise it works on whole lines anyway.
-
-					*sub-replace-special* *:s\=*
-When the {string} starts with "\=" it is evaluated as an expression, see
-|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 'cpoptions' option,
-then the {string} of the previous substitute command is used. |cpo-/|
-
-magic	nomagic	  action    ~
-  &	  \&	  replaced with the whole matched pattern	     *s/\&*
- \&	   &	  replaced with &
-      \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 second
-		  pair of ()					     *s/\2*
-      ..	  ..						     *s/\3*
-      \9	  replaced with the matched pattern in the ninth
-		  pair of ()					     *s/\9*
-  ~	  \~	  replaced with the {string} of the previous
-		  substitute					     *s~*
- \~	   ~	  replaced with ~				     *s/\~*
-      \u	  next character made uppercase			     *s/\u*
-      \U	  following characters made uppercase, until \E      *s/\U*
-      \l	  next character made lowercase			     *s/\l*
-      \L	  following characters made lowercase, until \E      *s/\L*
-      \e	  end of \u, \U, \l and \L (NOTE: not !)	     *s/\e*
-      \E	  end of \u, \U, \l and \L			     *s/\E*
-      	  split line in two at this point
-		  (Type the  as CTRL-V )		     *s*
-      \r	  idem						     *s/\r*
-      \	  insert a carriage-return (CTRL-M)
-		  (Type the  as CTRL-V )		     *s/\*
-      \n	  insert a  ( in the file)
-		  (does NOT break the line)			     *s/\n*
-      \b	  insert a 					     *s/\b*
-      \t	  insert a 				     *s/\t*
-      \\	  insert a single backslash			     *s/\\*
-      \x	  where x is any character not mentioned above:
-		  Reserved for future expansion
-
-Examples: >
-  :s/a\|b/xxx\0xxx/g		 modifies "a b"	     to "xxxaxxx xxxbxxx"
-  :s/\([abc]\)\([efg]\)/\2\1/g	 modifies "af fa bg" to "fa fa gb"
-  :s/abcde/abc^Mde/		 modifies "abcde"    to "abc", "de" (two lines)
-  :s/$/\^M/			 modifies "abcde"    to "abcde^M"
-  :s/\w\+/\u\0/g		 modifies "bla bla"  to "Bla Bla"
-
-Note: In previous versions CTRL-V was handled in a special way.  Since this is
-not Vi compatible, this was removed.  Use a backslash instead.
-
-command		text	result ~
-:s/aa/a^Ma/	aa	aa
-:s/aa/a\^Ma/	aa	a^Ma
-:s/aa/a\\^Ma/	aa	a\a
-
-(you need to type CTRL-V  to get a ^M here)
-
-The numbering of "\1", "\2" etc. is done based on which "\(" comes first in
-the pattern (going left to right).  When a parentheses group matches several
-times, the last one will be used for "\1", "\2", etc.  Example: >
-  :s/\(\(a[a-d] \)*\)/\2/      modifies "aa ab x" to "ab x"
-
-When using parentheses in combination with '|', like in \([ab]\)\|\([cd]\),
-either the first or second pattern in parentheses did not match, so either
-\1 or \2 is empty.  Example: >
-  :s/\([ab]\)\|\([cd]\)/\1x/g   modifies "a b c d"  to "ax bx x x"
-<
-
-Substitute with an expression			*sub-replace-expression*
-						*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.
-
-The special meaning for characters as mentioned at |sub-replace-special| does
-not apply except for "", "\" and "\\".  Thus in the result of the
-expression you need to use two backslashes to get one, put a backslash before a
- you want to insert, and use a  without a backslash where you want to
-break the line.
-
-For convenience a  character is also used as a line break.  Prepend a
-backslash to get a real  character (which will be a NUL in the file).
-
-When the result is a |List| then the items are joined with separating line
-breaks.  Thus each item becomes a line, except that they can contain line
-breaks themselves.
-
-The whole matched text can be accessed with "submatch(0)".  The text matched
-with the first pair of () with "submatch(1)".  Likewise for further
-sub-matches in ().
-
-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.
-
-Examples: >
-	:s@\n@\="\r" . expand("$HOME") . "\r"@
-This replaces an end-of-line with a new line containing the value of $HOME. >
-
-	s/E/\="\"/g
-This replaces each 'E' character with a euro sign.  Read more in ||.
-
-
-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.
-			{only for Win32, Motif and GTK GUI}
-
-						*:promptr* *:promptrepl*
-:promptr[epl] [string]
-			Put up a Search/Replace dialog.  When [string] is
-			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
-			 with new strings of white-space using the new
-			tabstop value given.  If you do not specify a new
-			tabstop size or it is zero, Vim uses the current value
-			of 'tabstop'.
-			The current value of 'tabstop' is always used to
-			compute the width of existing tabs.
-			With !, Vim also replaces strings of only normal
-			spaces with tabs where appropriate.
-			With 'expandtab' on, Vim replaces all tabs with the
-			appropriate number of spaces.
-			This command sets 'tabstop' to the new value given,
-			and if performed on the whole file, which is default,
-			should not make any visible change.
-			Careful: This command modifies any  characters
-			inside of strings in a C program.  Use "\t" to avoid
-			this (that's a good habit anyway).
-			":retab!" may also change a sequence of spaces by
-			 characters, which can mess up a printf().
-			{not in Vi}
-			Not available when |+ex_extra| feature was disabled at
-			compile time.
-
-							*retab-example*
-Example for using autocommands and ":retab" to edit a file which is stored
-with tabstops at 8 but edited with tabstops set at 4.  Warning: white space
-inside of strings can change!  Also see 'softtabstop' option. >
-
-  :auto BufReadPost	*.xx	retab! 4
-  :auto BufWritePre	*.xx	retab! 8
-  :auto BufWritePost	*.xx	retab! 4
-  :auto BufNewFile	*.xx	set ts=4
-
-==============================================================================
-5. Copying and moving text				*copy-move*
-
-							*quote*
-"{a-zA-Z0-9.%#:-"}	Use register {a-zA-Z0-9.%#:-"} for next delete, yank
-			or put (use uppercase character to append with
-			delete and yank) ({.%#:} only work with put).
-
-							*:reg* *:registers*
-:reg[isters]		Display the contents of all numbered and named
-			registers.  If a register is written to for |:redir|
-			it will not be listed.
-			{not in Vi}
-
-
-:reg[isters] {arg}	Display the contents of the numbered and named
-			registers that are mentioned in {arg}.  For example: >
-				:dis 1a
-<			to display registers '1' and 'a'.  Spaces are allowed
-			in {arg}.  {not in Vi}
-
-							*:di* *:display*
-:di[splay] [arg]	Same as :registers.  {not in Vi}
-
-							*y* *yank*
-["x]y{motion}		Yank {motion} text [into register x].  When no
-			characters are to be yanked (e.g., "y0" in column 1),
-			this is an error when 'cpoptions' includes the 'E'
-			flag.
-
-							*yy*
-["x]yy			Yank [count] lines [into register x] |linewise|.
-
-							*Y*
-["x]Y			yank [count] lines [into register x] (synonym for
-			yy, |linewise|).  If you like "Y" to work from the
-			cursor to the end of line (which is more logical,
-			but not Vi-compatible) use ":map Y y$".
-
-							*v_y*
-{Visual}["x]y		Yank the highlighted text [into register x] (for
-			{Visual} see |Visual-mode|).  {not in Vi}
-
-							*v_Y*
-{Visual}["x]Y		Yank the highlighted lines [into register x] (for
-			{Visual} see |Visual-mode|).  {not in Vi}
-
-							*:y* *:yank*
-:[range]y[ank] [x]	Yank [range] lines [into register x].
-
-:[range]y[ank] [x] {count}
-			Yank {count} lines, starting with last line number
-			in [range] (default: current line |cmdline-ranges|),
-			[into register x].
-
-							*p* *put* *E353*
-["x]p			Put the text [from register x] after the cursor
-			[count] times.  {Vi: no count}
-
-							*P*
-["x]P			Put the text [from register x] before the cursor
-			[count] times.  {Vi: no count}
-
-							**
-["x]	Put the text from a register before the cursor [count]
-			times.  Uses the "* register, unless another is
-			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
-			pasting with the middle mouse button: >
-				:map  
-				:imap  
-<			You might want to disable the multi-click versions
-			too, see |double-click|.
-
-							*gp*
-["x]gp			Just like "p", but leave the cursor just after the new
-			text.  {not in Vi}
-
-							*gP*
-["x]gP			Just like "P", but leave the cursor just after the new
-			text.  {not in Vi}
-
-							*:pu* *:put*
-:[line]pu[t] [x]	Put the text [from register x] after [line] (default
-			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 '"'
-			characters to prevent them from terminating the
-			command.  Example: >
-				:put ='path' . \",/test\"
-<			If there is no expression after '=', Vim uses the
-			previous expression.  You can see it with ":dis =".
-
-:[line]pu[t]! [x]	Put the text [from register x] before [line] (default
-			current line).
-
-["x]]p		    or					*]p* *]*
-["x]]	Like "p", but adjust the indent to the current line.
-			Using the mouse only works when 'mouse' contains 'n'
-			or 'a'.  {not in Vi}
-
-["x][P		    or					*[P*
-["x]]P		    or					*]P*
-["x][p		    or					*[p* *[*
-["x][	Like "P", but adjust the indent to the current line.
-			Using the mouse only works when 'mouse' contains 'n'
-			or 'a'.  {not in Vi}
-
-You can use these commands to copy text from one place to another.  Do this
-by first getting the text into a register with a yank, delete or change
-command, then inserting the register contents with a put command.  You can
-also use these commands to move text from one file to another, because Vim
-preserves all registers when changing buffers (the CTRL-^ command is a quick
-way to toggle between two files).
-
-				*linewise-register* *characterwise-register*
-You can repeat the put commands with "." (except for :put) and undo them.  If
-the command that was used to get the text into the register was |linewise|,
-Vim inserts the text below ("p") or above ("P") the line where the cursor is.
-Otherwise Vim inserts the text after ("p") or before ("P") the cursor.  With
-the ":put" command, Vim always inserts the text in the next line.  You can
-exchange two characters with the command sequence "xp".  You can exchange two
-lines with the command sequence "ddp".  You can exchange two words with the
-command sequence "deep" (start with the cursor in the blank space before the
-first word).  You can use the "']" or "`]" command after the put command to
-move the cursor to the end of the inserted text, or use "'[" or "`[" to move
-the cursor to the start.
-
-						*put-Visual-mode* *v_p* *v_P*
-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:
-it actually works by first putting the register after the selection and then
-deleting the selection.)
-The previously selected text is put in the unnamed register.  If you want to
-put the same text into a Visual selection several times you need to use
-another register.  E.g., yank the text to copy, Visually select the text to
-replace and use "0p .  You can repeat this as many times as you like, the
-unnamed register will be changed each time.
-
-							*blockwise-register*
-If you use a blockwise Visual mode command to get the text into the register,
-the block of text will be inserted before ("P") or after ("p") the cursor
-column in the current and next lines.  Vim makes the whole block of text start
-in the same column.  Thus the inserted text looks the same as when it was
-yanked or deleted.  Vim may replace some  characters with spaces to make
-this happen.  However, if the width of the block is not a multiple of a 
-width and the text after the inserted block contains s, that text may be
-misaligned.
-
-Note that after a characterwise yank command, Vim leaves the cursor on the
-first yanked character that is closest to the start of the buffer.  This means
-that "yl" doesn't move the cursor, but "yh" moves the cursor one character
-left.
-Rationale:	In Vi the "y" command followed by a backwards motion would
-		sometimes not move the cursor to the first yanked character,
-		because redisplaying was skipped.  In Vim it always moves to
-		the first character, as specified by Posix.
-With a linewise yank command the cursor is put in the first line, but the
-column is unmodified, thus it may not be on the first yanked character.
-
-There are nine types of registers:			*registers* *E354*
-1. The unnamed register ""
-2. 10 numbered registers "0 to "9
-3. The small delete register "-
-4. 26 named registers "a to "z or "A to "Z
-5. four read-only registers ":, "., "% and "#
-6. the expression register "=
-7. The selection and drop registers "*, "+ and "~ 
-8. The black hole register "_
-9. Last search pattern register "/
-
-1. Unnamed register ""				*quote_quote* *quotequote*
-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.  Thus when appending using an uppercase register
-name, the unnamed register contains the same text as the named register.
-An exception is the '_' register: "_dd does not 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*
-					*quote2* *quote3* *quote4* *quote9*
-Vim fills these registers with text from yank and delete commands.
-   Numbered register 0 contains the text from the most recent yank command,
-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 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.
-{Vi: numbered register contents are lost when changing files; register 0 does
-not exist}
-
-3. Small delete register "-				*quote_-* *quote-*
-This register contains text from commands that delete less than one line,
-except when the command specifies a register with ["x].
-{not in Vi}
-
-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.  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",
-and ":put" commands and with CTRL-R.  {not in Vi}
-						*quote_.* *quote.* *E29*
-	".	Contains the last inserted text (the same as what is inserted
-		with the insert mode commands CTRL-A and CTRL-@).  Note: this
-		doesn't work with CTRL-R on the command-line.  It works a bit
-		differently, like inserting the text instead of putting it
-		('textwidth' and other options affect what is inserted).
-							*quote_%* *quote%*
-	"%	Contains the name of the current file.
-							*quote_#* *quote#*
-	"#	Contains the name of the alternate file.
-						*quote_:* *quote:* *E30*
-	":	Contains the most recent executed command-line.  Example: Use
-		"@:" to repeat the previous command-line command.
-		The command-line is only stored in this register when at least
-		one character of it was typed.  Thus it remains unchanged if
-		the command was completely from a mapping.
-		{not available when compiled without the |+cmdline_hist|
-		feature}
-
-6. Expression register "=			*quote_=* *quote=* *@=*
-This is not really a register that stores text, but is a way to use an
-expression in commands which use a register.  The expression register is
-read-only; you cannot put text into it.  After the '=', the cursor moves to
-the command-line, where you can enter any expression (see |expression|).  All
-normal command-line editing commands are available, including a special
-history for expressions.  When you end the command-line by typing , Vim
-computes the result of the expression.  If you end it with , Vim abandons
-the expression.  If you do not enter an expression, Vim uses the previous
-expression (like with the "/" command).
-
-The expression must evaluate to a String.  A Number is always automatically
-converted to a String.  For the "p" and ":put" command, if the result is a
-Float it's converted into a String.  If the result is a List each element is
-turned into a String and used as a line.  A 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 
-characters.  If the String ends in a , it is regarded as a linewise
-register.  {not in Vi}
-
-7. Selection and drop registers "*, "+ and "~ 
-Use these registers 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.  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
-of "* and "+ is actually synonymous and refers to the |gui-clipboard|.
-
-						*quote_~* *quote~* **
-The read-only "~ register stores the dropped text from the last drag'n'drop
-operation.  When something has been dropped onto Vim, the "~ register is
-filled in and the  pseudo key is sent for notification.  You can remap
-this key if you want; the default action (for all modes) is to insert the
-contents of the "~ register at the cursor position.  {not in Vi}
-{only available when compiled with the |+dnd| feature, currently only with the
-GTK GUI}
-
-Note: The "~ register is only used when dropping plain text onto Vim.
-Drag'n'drop of URI lists is handled internally.
-
-8. Black hole register "_				*quote_*
-When writing to this register, nothing happens.  This can be used to delete
-text without affecting the normal registers.  When reading from this register,
-nothing is returned.  {not in Vi}
-
-9. Last search pattern register	"/			*quote_/* *quote/*
-Contains the most recent search-pattern.  This is used for "n" and 'hlsearch'.
-It is writable with ":let", you can change it to have 'hlsearch' highlight
-other matches without actually searching.  You can't yank or delete into this
-register.  The search direction is available in |v:searchforward|.
-Note that the valued is restored when returning from a function
-|function-search-undo|.
-{not in Vi}
-
-							*@/*
-You can write to a register with a ":let" command |:let-@|.  Example: >
-	:let @/ = "the"
-
-If you use a put command without specifying a register, Vim uses the register
-that was last filled (this is also the contents of the unnamed register).  If
-you are confused, use the ":dis" command to find out what Vim will put (this
-command displays all named and numbered registers; the unnamed register is
-labelled '"').
-
-The next three commands always work on whole lines.
-
-:[range]co[py] {address}				*:co* *:copy*
-			Copy the lines given by [range] to below the line
-			given by {address}.
-
-							*:t*
-:t			Synonym for copy.
-
-:[range]m[ove] {address}			*:m* *:mo* *:move* *E134*
-			Move the lines given by [range] to below the line
-			given by {address}.
-
-==============================================================================
-6. Formatting text					*formatting*
-
-:[range]ce[nter] [width]				*:ce* *:center*
-			Center lines in [range] between [width] columns
-			(default 'textwidth' or 80 when 'textwidth' is 0).
-			{not in Vi}
-			Not available when |+ex_extra| feature was disabled at
-			compile time.
-
-:[range]ri[ght] [width]					*:ri* *:right*
-			Right-align lines in [range] at [width] columns
-			(default 'textwidth' or 80 when 'textwidth' is 0).
-			{not in Vi}
-			Not available when |+ex_extra| feature was disabled at
-			compile time.
-
-							*:le* *:left*
-:[range]le[ft] [indent]
-			Left-align lines in [range].  Sets the indent in the
-			lines to [indent] (default 0).  {not in Vi}
-			Not available when |+ex_extra| feature was disabled at
-			compile time.
-
-							*gq*
-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. Otherwise 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: >
-				:nnoremap Q gq
-
-gqgq							*gqgq* *gqq*
-gqq			Format the current line.  With a count format that
-			many lines.  {not in Vi}
-
-							*v_gq*
-{Visual}gq		Format the highlighted text.  (for {Visual} see
-			|Visual-mode|).  {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' and 'formatexpr' are
-			not used.  {not in Vi}
-
-gwgw							*gwgw* *gww*
-gww			Format the current line as with "gw".  {not in Vi}
-
-							*v_gw*
-{Visual}gw		Format the highlighted text as with "gw".  (for
-			{Visual} see |Visual-mode|).  {not in Vi}
-
-Example: To format the current paragraph use:			*gqap*  >
-	gqap
-
-The "gq" command leaves the cursor in the line where the motion command takes
-the cursor.  This allows you to repeat formatting repeated with ".".  This
-works well with "gqj" (format current and next line) and "gq}" (format until
-end of paragraph).  Note: When 'formatprg' is set, "gq" leaves the cursor on
-the first formatted line (as with using a filter command).
-
-If you want to format the current paragraph and continue where you were, use: >
-	gwap
-If you always want to keep paragraphs formatted you may want to add the 'a'
-flag to 'formatoptions'.  See |auto-format|.
-
-If the 'autoindent' option is on, Vim uses the indent of the first line for
-the following lines.
-
-Formatting does not change empty lines (but it does change lines with only
-white space!).
-
-The 'joinspaces' option is used when lines are joined together.
-
-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
-an external command, like "par" (e.g.: "!}par" to format until the end of the
-paragraph) or set 'formatprg' to "par".
-
-							*format-comments*
-An overview of comment formatting is in section |30.6| of the user manual.
-
-Vim can automatically insert and format comments in a special way.  Vim
-recognizes a comment by a specific string at the start of the line (ignoring
-white space).  Three types of comments can be used:
-
-- A comment string that repeats at the start of each line.  An example is the
-  type of comment used in shell scripts, starting with "#".
-- A comment string that occurs only in the first line, not in the following
-  lines.  An example is this list with dashes.
-- Three-piece comments that have a start string, an end string, and optional
-  lines in between.  The strings for the start, middle and end are different.
-  An example is the C style comment:
-	/*
-	 * this is a C comment
-	 */
-
-The 'comments' option is a comma-separated list of parts.  Each part defines a
-type of comment string.  A part consists of:
-	{flags}:{string}
-
-{string} is the literal text that must appear.
-
-{flags}:
-  n	Nested comment.  Nesting with mixed parts is allowed.  If 'comments'
-	is "n:),n:>" a line starting with "> ) >" is a comment.
-
-  b	Blank (,  or ) required after {string}.
-
-  f	Only the first line has the comment string.  Do not repeat comment on
-	the next line, but preserve indentation (e.g., a bullet-list).
-
-  s	Start of three-piece comment
-
-  m	Middle of a three-piece comment
-
-  e	End of a three-piece comment
-
-  l	Left align. Used together with 's' or 'e', the leftmost character of
-	start or end will line up with the leftmost character from the middle.
-	This is the default and can be omitted. See below for more details.
-
-  r	Right align. Same as above but rightmost instead of leftmost. See
-	below for more details.
-
-  O	Don't consider this comment for the "O" command.
-
-  x	Allows three-piece comments to be ended by just typing the last
-	character of the end-comment string as the first action on a new
-	line when the middle-comment string has been inserted automatically.
-	See below for more details.
-
-  {digits}
-	When together with 's' or 'e': add {digit} amount of offset to an
-	automatically inserted middle or end comment leader. The offset begins
-	from a left alignment. See below for more details.
-
-  -{digits}
-	Like {digits} but reduce the indent.  This only works when there is
-	some indent for the start or end part that can be removed.
-
-When a string has none of the 'f', 's', 'm' or 'e' flags, Vim assumes the
-comment string repeats at the start of each line.  The flags field may be
-empty.
-
-Any blank space in the text before and after the {string} is part of the
-{string}, so do not include leading or trailing blanks unless the blanks are a
-required part of the comment string.
-
-When one comment leader is part of another, specify the part after the whole.
-For example, to include both "-" and "->", use >
-	:set comments=f:->,f:-
-
-A three-piece comment must always be given as start,middle,end, with no other
-parts in between.  An example of a three-piece comment is >
-	sr:/*,mb:*,ex:*/
-for C-comments.  To avoid recognizing "*ptr" as a comment, the middle string
-includes the 'b' flag.  For three-piece comments, Vim checks the text after
-the start and middle strings for the end string.  If Vim finds the end string,
-the comment does not continue on the next line.  Three-piece comments must
-have a middle string because otherwise Vim can't recognize the middle lines.
-
-Notice the use of the "x" flag in the above three-piece comment definition.
-When you hit Return in a C-comment, Vim will insert the middle comment leader
-for the new line: " * ".  To close this comment you just have to type "/"
-before typing anything else on the new line.  This will replace the
-middle-comment leader with the end-comment leader and apply any specified
-alignment, leaving just " */".  There is no need to hit BackSpace first.
-
-
-Here is an example of alignment flags at work to make a comment stand out
-(kind of looks like a 1 too). Consider comment string >
-	sr:/***,m:**,ex2:******/
-
-                                   /***
-                                     **<--right aligned from "r" flag
-                                     **
-offset 2 spaces from the "2" flag--->**
-                                   ******/
-In this case, the first comment was typed, then return was pressed 4 times,
-then "/" was pressed to end the comment.
-
-Here are some finer points of three part comments. There are three times when
-alignment and offset flags are taken into consideration: opening a new line
-after a start-comment, opening a new line before an end-comment, and
-automatically ending a three-piece comment.  The end alignment flag has a
-backwards perspective; the result is that the same alignment flag used with
-"s" and "e" will result in the same indent for the starting and ending pieces.
-Only one alignment per comment part is meant to be used, but an offset number
-will override the "r" and "l" flag.
-
-Enabling 'cindent' will override the alignment flags in many cases.
-Reindenting using a different method like |gq| or |=| will not consult
-alignment flags either. The same behaviour can be defined in those other
-formatting options. One consideration is that 'cindent' has additional options
-for context based indenting of comments but cannot replicate many three piece
-indent alignments.  However, 'indentexpr' is has the ability to work better
-with three piece comments.
-
-Other examples: >
-   "b:*"	Includes lines starting with "*", but not if the "*" is
-		followed by a non-blank.  This avoids a pointer dereference
-		like "*str" to be recognized as a comment.
-   "n:>"	Includes a line starting with ">", ">>", ">>>", etc.
-   "fb:-"	Format a list that starts with "- ".
-
-By default, "b:#" is included.  This means that a line that starts with
-"#include" is not recognized as a comment line.  But a line that starts with
-"# define" is recognized.  This is a compromise.
-
-{not available when compiled without the |+comments| feature}
-
-							*fo-table*
-You can use the 'formatoptions' option  to influence how Vim formats text.
-'formatoptions' is a string that can contain any of the letters below.  The
-default setting is "tcq".  You can separate the option letters with commas for
-readability.
-
-letter	 meaning when present in 'formatoptions'    ~
-
-t	Auto-wrap text using textwidth
-c	Auto-wrap comments using textwidth, inserting the current comment
-	leader automatically.
-r	Automatically insert the current comment leader after hitting
-	 in Insert mode.
-o	Automatically insert the current comment leader after hitting 'o' or
-	'O' in Normal mode.
-q	Allow formatting of comments with "gq".
-	Note that formatting will not change blank lines or lines containing
-	only the comment leader.  A new paragraph starts after such a line,
-	or when the comment leader changes.
-w	Trailing white space indicates a paragraph continues in the next line.
-	A line that ends in a non-white character ends a paragraph.
-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.  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 followed by '.', ':', ')',
-	']' or '}'.  Note that 'autoindent' must be set too.  Doesn't work
-	well together with "2".
-	Example: >
-		1. the first item
-		   wraps
-		2. the second item
-2	When formatting text, use the indent of the second line of a paragraph
-	for the rest of the paragraph, instead of the indent of the first
-	line.  This supports paragraphs in which the first line has a
-	different indent than the rest.  Note that 'autoindent' must be set
-	too.  Example: >
-			first line of a paragraph
-		second line of the same paragraph
-		third line.
-v	Vi-compatible auto-wrapping in insert mode: Only break a line at a
-	blank that you have entered during the current insert command.  (Note:
-	this is not 100% Vi compatible.  Vi has some "unexpected features" or
-	bugs in this area.  It uses the screen column instead of the line
-	column.)
-b	Like 'v', but only auto-wrap if you enter a blank at or before
-	the wrap margin.  If the line was longer than 'textwidth' when you
-	started the insert, or you do not enter a blank in the insert before
-	reaching 'textwidth', Vim does not perform auto-wrapping.
-l	Long lines are not broken in insert mode: When a line was longer than
-	'textwidth' when the insert command started, Vim does not
-	automatically format it.
-m	Also break at a multi-byte character above 255.  This is useful for
-	Asian text where every character is a word on its own.
-M	When joining lines, don't insert a space before or after a multi-byte
-	character.  Overrules the 'B' flag.
-B	When joining lines, don't insert a space between two multi-byte
-	characters.  Overruled by the 'M' flag.
-1	Don't break a line after a one-letter word.  It's broken before it
-	instead (if possible).
-
-
-With 't' and 'c' you can specify when Vim performs auto-wrapping:
-value	action	~
-""	no automatic formatting (you can use "gq" for manual formatting)
-"t"	automatic formatting of text, but not comments
-"c"	automatic formatting for comments, but not text (good for C code)
-"tc"	automatic formatting for text and comments
-
-Note that when 'textwidth' is 0, Vim does no automatic formatting anyway (but
-does insert comment leaders according to the 'comments' option).  An exception
-is when the 'a' flag is present. |auto-format|
-
-Note that when 'paste' is on, Vim does no formatting at all.
-
-Note that 'textwidth' can be non-zero even if Vim never performs auto-wrapping;
-'textwidth' is still useful for formatting with "gq".
-
-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
-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.
-E.g.:
-    /* ~
-     * Your typical comment. ~
-     */ ~
-    The indent on this line is the same as the start of the above
-    comment.
-
-All of this should be really cool, especially in conjunction with the new
-:autocmd command to prepare different settings for different types of file.
-
-Some examples:
-  for C code (only format comments): >
-	:set fo=croq
-< for Mail/news	(format all, don't start comment with "o" command): >
-	:set fo=tcrq
-<
-
-Automatic formatting					*auto-format*
-
-When the 'a' flag is present in 'formatoptions' text is formatted
-automatically when inserting text or deleting text.  This works nice for
-editing text paragraphs.  A few hints on how to use this:
-
-- You need to properly define paragraphs.  The simplest is paragraphs that are
-  separated by a blank line.  When there is no separating blank line, consider
-  using the 'w' flag and adding a space at the end of each line in the
-  paragraphs except the last one.
-
-- You can set the 'formatoptions' based on the type of file |filetype| or
-  specifically for one file with a |modeline|.
-
-- Set 'formatoptions' to "aw2tq" to make text with indents like this:
-
-	    bla bla foobar bla 
-	bla foobar bla foobar bla
-	    bla bla foobar bla 
-	bla foobar bla bla foobar
-
-- Add the 'c' flag to only auto-format comments.  Useful in source code.
-
-- Set 'textwidth' to the desired width.  If it is zero then 79 is used, or the
-  width of the screen if this is smaller.
-
-And a few warnings:
-
-- When part of the text is not properly separated in paragraphs, making
-  changes in this text will cause it to be formatted anyway.  Consider doing >
-
-	:set fo-=a
-
-- When using the 'w' flag (trailing space means paragraph continues) and
-  deleting the last line of a paragraph with |dd|, the paragraph will be
-  joined with the next one.
-
-- Changed text is saved for undo.  Formatting is also a change.  Thus each
-  format action saves text for undo.  This may consume quite a lot of memory.
-
-- 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][r][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 or inside a {pattern} match).
-			One leading '-' is included in the number.
-
-			With [x] sorting is done on the first hexadecimal
-			number in the line (after or inside a {pattern}
-			match).  A leading "0x" or "0X" is ignored.
-			One leading '-' is included in the number.
-
-			With [o] sorting is done on the first octal number in
-			the line (after or inside a {pattern} match).
-
-			With [u] only keep the first of a sequence of
-			identical lines (ignoring case when [i] is used).
-			Without this flag, a sequence of identical lines
-			will be kept in their original order.
-			Note that leading and trailing white space may cause
-			lines to be different.
-
-			When /{pattern}/ is specified and there is no [r] flag
-			the text matched with {pattern} is skipped, so that
-			you sort on what comes after the match.
-			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/
-<			To sort on the first number in the line, no matter
-			what is in front of it: >
-				:sort /.\{-}\ze\d/
-<			(Explanation: ".\{-}" matches any text, "\ze" sets the
-			end of the match and \d matches a digit.)
-			With [r] sorting is done on the matching {pattern}
-			instead of skipping past it as described above.
-			For example, to sort on only the first three letters
-			of each line: >
-				:sort /\a\a\a/ r
-
-<			If a {pattern} is used, any lines which don't have a
-			match for {pattern} are kept in their current order,
-			but separate from the lines which do match {pattern}.
-			If you sorted in reverse, they will be in reverse
-			order after the sorted lines, otherwise they will be
-			in their original order, right before the sorted
-			lines.
-
-			If {pattern} is empty (e.g. // is specified), the
-			last search pattern is used.  This allows trying out
-			a pattern first.
-
-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 can be interrupted, but if you interrupt it too late in the
-process you may end up with duplicated lines.  This also depends on the system
-library function used.
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/cmdline.txt b/share/vim/vim73/doc/cmdline.txt
deleted file mode 100644
index a072c6cd..00000000
--- a/share/vim/vim73/doc/cmdline.txt
+++ /dev/null
@@ -1,1091 +0,0 @@
-*cmdline.txt*   For Vim version 7.3.  Last change: 2010 May 07
-
-
-		  VIM REFERENCE MANUAL    by Bram Moolenaar
-
-
-				*Cmdline-mode* *Command-line-mode*
-Command-line mode		*Cmdline* *Command-line* *mode-cmdline* *:*
-
-Command-line mode is used to enter Ex commands (":"), search patterns
-("/" and "?"), and filter commands ("!").
-
-Basic command line editing is explained in chapter 20 of the user manual
-|usr_20.txt|.
-
-1. Command-line editing		|cmdline-editing|
-2. Command-line completion	|cmdline-completion|
-3. Ex command-lines		|cmdline-lines|
-4. Ex command-line ranges	|cmdline-ranges|
-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*
-
-Normally characters are inserted in front of the cursor position.  You can
-move around in the command-line with the left and right cursor keys.  With the
- key, you can toggle between inserting and overstriking characters.
-{Vi: can only alter the last character in the line}
-
-Note that if your keyboard does not have working cursor keys or any of the
-other special keys, you can use ":cnoremap" to define another key for them.
-For example, to define tcsh style editing keys:		*tcsh-style*  >
-	:cnoremap  
-	:cnoremap  
-	:cnoremap  
-	:cnoremap b 
-	:cnoremap f 
-(<> notation |<>|; type all this literally)
-
-							*cmdline-too-long*
-When the command line is getting longer than what fits on the screen, only the
-part that fits will be shown.  The cursor can only move in this visible part,
-thus you cannot edit beyond that.
-
-						*cmdline-history* *history*
-The command-lines that you enter are remembered in a history table.  You can
-recall them with the up and down cursor keys.  There are actually five
-history tables:
-- one for ':' commands
-- one for search strings
-- one for expressions
-- one for input lines, typed for the |input()| function.
-- one for debug mode commands
-These are completely separate.  Each history can only be accessed when
-entering the same type of line.
-Use the 'history' option to set the number of lines that are remembered
-(default: 20).
-Notes:
-- When you enter a command-line that is exactly the same as an older one, the
-  old one is removed (to avoid repeated commands moving older commands out of
-  the history).
-- Only commands that are typed are remembered.  Ones that completely come from
-  mappings are not put in the history.
-- All searches are put in the search history, including the ones that come
-  from commands like "*" and "#".  But for a mapping, only the last search is
-  remembered (to avoid that long mappings trash the history).
-{Vi: no history}
-{not available when compiled without the |+cmdline_hist| feature}
-
-There is an automatic completion of names on the command-line; see
-|cmdline-completion|.
-
-							*c_CTRL-V*
-CTRL-V		Insert next non-digit literally.  Up to three digits form the
-		decimal value of a single byte.  The non-digit and the three
-		digits are not considered for mapping.  This works the same
-		way as in Insert mode (see above, |i_CTRL-V|).
-		Note: Under Windows CTRL-V is often mapped to paste text.
-		Use CTRL-Q instead then.
-							*c_CTRL-Q*
-CTRL-Q		Same as CTRL-V.  But with some terminals it is used for
-		control flow, it doesn't work then.
-
-							*c_*
-		cursor left
-							*c_*
-		cursor right
-							*c_*
- or 					*c_*
-		cursor one WORD left
-							*c_*
- or 					*c_*
-		cursor one WORD right
-CTRL-B or 					*c_CTRL-B* *c_*
-		cursor to beginning of command-line
-CTRL-E or 						*c_CTRL-E* *c_*
-		cursor to end of command-line
-
-							*c_*
-	Move the cursor to the position of the mouse click.
-
-CTRL-H							*c_* *c_CTRL-H*
-		Delete the character in front of the cursor (see |:fixdel| if
-		your  key does not do what you want).
-							*c_*
-		Delete the character under the cursor (at end of line:
-		character before the cursor) (see |:fixdel| if your 
-		key does not do what you want).
-							*c_CTRL-W*
-CTRL-W		Delete the |word| before the cursor.  This depends on the
-		'iskeyword' option.
-							*c_CTRL-U*
-CTRL-U		Remove all characters between the cursor position and
-		the beginning of the line.  Previous versions of vim
-		deleted all characters on the line.  If that is the
-		preferred behavior, add the following to your .vimrc: >
-			:cnoremap  
-<
-							*c_*
-	Toggle between insert and overstrike.  {not in Vi}
-
-{char1}  {char2}	or				*c_digraph*
-CTRL-K {char1} {char2}					*c_CTRL-K*
-		enter digraph (see |digraphs|).  When {char1} is a special
-		key, the code for that key is inserted in <> form.  {not in Vi}
-
-CTRL-R {0-9a-z"%#:-=.}					*c_CTRL-R* *c_*
-		Insert the contents of a numbered or named register.  Between
-		typing CTRL-R and the second character '"' will be displayed
-		to indicate that you are expected to enter the name of a
-		register.
-		The text is inserted as if you typed it, but mappings and
-		abbreviations are not used.  Command-line completion through
-		'wildchar' is not triggered though.  And characters that end
-		the command line are inserted literally (, , ,
-		).  A  or CTRL-W could still end the command line
-		though, and remaining characters will then be interpreted in
-		another mode, which might not be what you intended.
-		Special registers:
-			'"'	the unnamed register, containing the text of
-				the last delete or yank
-			'%'	the current file name
-			'#'	the alternate file name
-			'*'	the clipboard contents (X11: primary selection)
-			'+'	the clipboard contents
-			'/'	the last search pattern
-			':'	the last command-line
-			'-'	the last small (less than a line) delete
-			'.'	the last inserted text
-							*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)
-				When the result is a |List| the items are used
-				as lines.  They can have line breaks inside
-				too.
-				When the result is a Float it's automatically
-				converted to a String.
-		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__*
-CTRL-R CTRL-P				*c_CTRL-R_CTRL-P* *c__*
-CTRL-R CTRL-W				*c_CTRL-R_CTRL-W* *c__*
-CTRL-R CTRL-A				*c_CTRL-R_CTRL-A* *c__*
-		Insert the object under the cursor:
-			CTRL-F	the Filename under the cursor
-			CTRL-P	the Filename under the cursor, expanded with
-				'path' as in |gf|
-			CTRL-W	the Word under the cursor
-			CTRL-A	the WORD under the cursor; see |WORD|
-
-		When 'incsearch' is set the cursor position at the end of the
-		currently displayed match is used.  With CTRL-W the part of
-		the word that was already typed is not inserted again.
-
-		{not in Vi}
-		CTRL-F and CTRL-P: {only when |+file_in_path| feature is
-		included}
-
-					*c_CTRL-R_CTRL-R* *c__*
-					*c_CTRL-R_CTRL-O* *c__*
-CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A}
-CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A}
-		Insert register or object under the cursor.  Works like
-		|c_CTRL-R| but inserts the text literally.  For example, if
-		register a contains "xy^Hz" (where ^H is a backspace),
-		"CTRL-R a" will insert "xz" while "CTRL-R CTRL-R a" will
-		insert "xy^Hz".
-
-CTRL-\ e {expr}						*c_CTRL-\_e*
-		Evaluate {expr} and replace the whole command line with the
-		result.  You will be prompted for the expression, type 
-		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 |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  eAppendSome()
-			:func AppendSome()
-			   :let cmd = getcmdline() . " Some()"
-			   :" place the cursor on the )
-			   :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|
-		If there is no selection CTRL-Y is inserted as a character.
-
-CTRL-J						*c_CTRL-J* *c_* *c_*
- or 	start entered command
-							*c_*
-		When typed and 'x' not present in 'cpoptions', quit
-		Command-line mode without executing.  In macros or when 'x'
-		present in 'cpoptions', start entered command.
-		Note: If your  key is hard to hit on your keyboard, train
-		yourself to use CTRL-[.
-							*c_CTRL-C*
-CTRL-C		quit command-line without executing
-
-							*c_*
-		recall older command-line from history, whose beginning
-		matches the current command-line (see below).
-		{not available when compiled without the |+cmdline_hist|
-		feature}
-							*c_*
-		recall more recent command-line from history, whose beginning
-		matches the current command-line (see below).
-		{not available when compiled without the |+cmdline_hist|
-		feature}
-
-							*c_* *c_*
- or 
-		recall older command-line from history
-		{not available when compiled without the |+cmdline_hist|
-		feature}
-						*c_* *c_*
- or 
-		recall more recent command-line from history
-		{not available when compiled without the |+cmdline_hist|
-		feature}
-
-CTRL-D		command-line completion (see |cmdline-completion|)
-'wildchar' option
-		command-line completion (see |cmdline-completion|)
-CTRL-N		command-line completion (see |cmdline-completion|)
-CTRL-P		command-line completion (see |cmdline-completion|)
-CTRL-A		command-line completion (see |cmdline-completion|)
-CTRL-L		command-line completion (see |cmdline-completion|)
-
-							*c_CTRL-_*
-CTRL-_		a - switch between Hebrew and English keyboard mode, which is
-		private to the command-line and not related to hkmap.
-		This is useful when Hebrew text entry is required in the
-		command-line, searches, abbreviations, etc.  Applies only if
-		Vim is compiled with the |+rightleft| feature and the
-		'allowrevins' option is set.
-		See |rileft.txt|.
-
-		b - switch between Farsi and English keyboard mode, which is
-		private to the command-line and not related to fkmap.  In
-		Farsi keyboard mode the characters are inserted in reverse
-		insert manner.  This is useful when Farsi text entry is
-		required in the command-line, searches, abbreviations, etc.
-		Applies only if Vim is compiled with the |+farsi| feature.
-		See |farsi.txt|.
-
-							*c_CTRL-^*
-CTRL-^		Toggle the use of language |:lmap| mappings and/or Input
-		Method.
-		When typing a pattern for a search command and 'imsearch' is
-		not -1, VAL is the value of 'imsearch', otherwise VAL is the
-		value of 'iminsert'.
-		When language mappings are defined:
-		- If VAL is 1 (langmap mappings used) it becomes 0 (no langmap
-		  mappings used).
-		- If VAL was not 1 it becomes 1, thus langmap mappings are
-		  enabled.
-		When no language mappings are defined:
-		- If VAL is 2 (Input Method is used) it becomes 0 (no input
-		  method used)
-		- If VAL has another value it becomes 2, thus the Input Method
-		  is enabled.
-		These language mappings are normally used to type characters
-		that are different from what the keyboard produces.  The
-		'keymap' option can be used to install a whole number of them.
-		When entering a command line, langmap mappings are switched
-		off, since you are expected to type a command.  After
-		switching it on with CTRL-^, the new state is not used again
-		for the next command or Search pattern.
-		{not in Vi}
-
-						*c_CTRL-]*
-CTRL-]		Trigger abbreviation, without inserting a character.  {not in
-		Vi}
-
-For Emacs-style editing on the command-line see |emacs-keys|.
-
-The  and  keys take the current command-line as a search string.
-The beginning of the next/previous command-lines are compared with this
-string.  The first line that matches is the new command-line.  When typing
-these two keys repeatedly, the same string is used again.  For example, this
-can be used to find the previous substitute command: Type ":s" and then .
-The same could be done by typing  a number of times until the desired
-command-line is shown.  (Note: the shifted arrow keys do not work on all
-terminals)
-
-							*:his* *:history*
-:his[tory]	Print the history of last entered commands.
-		{not in Vi}
-		{not available when compiled without the |+cmdline_hist|
-		feature}
-
-:his[tory] [{name}] [{first}][, [{last}]]
-		List the contents of history {name} which can be:
-		c[md]	 or :	command-line history
-		s[earch] or /	search string history
-		e[xpr]	 or =	expression register history
-		i[nput]	 or @	input line history
-		d[ebug]	 or >	debug command history
-		a[ll]		all of the above
-		{not in Vi}
-
-		If the numbers {first} and/or {last} are given, the respective
-		range of entries from a history is listed.  These numbers can
-		be specified in the following form:
-							*:history-indexing*
-		A positive number represents the absolute index of an entry
-		as it is given in the first column of a :history listing.
-		This number remains fixed even if other entries are deleted.
-
-		A negative number means the relative position of an entry,
-		counted from the newest entry (which has index -1) backwards.
-
-		Examples:
-		List entries 6 to 12 from the search history: >
-			:history / 6,12
-<
-		List the recent five entries from all histories: >
-			:history all -5,
-
-==============================================================================
-2. Command-line completion				*cmdline-completion*
-
-When editing the command-line, a few commands can be used to complete the
-word before the cursor.  This is available for:
-
-- Command names: At the start of the command-line.
-- Tags: Only after the ":tag" command.
-- File names: Only after a command that accepts a file name or a setting for
-  an option that can be set to a file name.  This is called file name
-  completion.
-- Shell command names: After ":!cmd", ":r !cmd" and ":w !cmd".  $PATH is used.
-- Options: Only after the ":set" command.
-- Mappings: Only after a ":map" or similar command.
-- Variable and function names: Only after a ":if", ":call" or similar command.
-
-When Vim was compiled with the |+cmdline_compl| feature disabled, only file
-names, directories and help items can be completed.  The number of help item
-matches is limited (currently to 300) to avoid a long delay when there are
-very many matches.
-
-These are the commands that can be used:
-
-							*c_CTRL-D*
-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_*
-'wildchar' option
-		A match is done on the pattern in front of the cursor.  The
-		match (if there are several, the first match) is inserted
-		in place of the pattern.  (Note: does not work inside a
-		macro, because  or  are mostly used as 'wildchar',
-		and these have a special meaning in some macros.) When typed
-		again and there were multiple matches, the next
-		match is inserted.  After the last match, the first is used
-		again (wrap around).
-		The behavior can be changed with the 'wildmode' option.
-							*c_CTRL-N*
-CTRL-N		After using 'wildchar' which got multiple matches, go to next
-		match.  Otherwise recall more recent command-line from history.
-							*c_CTRL-P* *c_*
-CTRL-P		After using 'wildchar' which got multiple matches, go to
-		previous match.  Otherwise recall older command-line from
-		history.   only works with the GUI, on the Amiga and
-		with MS-DOS.
-							*c_CTRL-A*
-CTRL-A		All names that match the pattern in front of the cursor are
-		inserted.
-							*c_CTRL-L*
-CTRL-L		A match is done on the pattern in front of the cursor.  If
-		there is one match, it is inserted in place of the pattern.
-		If there are multiple matches the longest common part is
-		inserted in place of the pattern.  If the result is shorter
-		than the pattern, no completion is done.
-		When 'incsearch' is set, entering a search pattern for "/" or
-		"?" and the current match is displayed then CTRL-L will add
-		one character from the end of the current match.  If
-		'ignorecase' and 'smartcase' are set and the command line has
-		no uppercase characters, the added character is converted to
-		lowercase.
-
-The 'wildchar' option defaults to  (CTRL-E when in Vi compatible mode; in
-a previous version  was used).  In the pattern standard wildcards '*' and
-'?' are accepted.  '*' matches any string, '?' matches exactly one character.
-
-If you like tcsh's autolist completion, you can use this mapping:
-	:cnoremap X 
-(Where X is the command key to use,  is CTRL-L and  is CTRL-D)
-This will find the longest match and then list all matching files.
-
-If you like tcsh's autolist completion, you can use the 'wildmode' option to
-emulate it.  For example, this mimics autolist=ambiguous:
-	:set wildmode=longest,list
-This will find the longest match with the first 'wildchar', then list all
-matching files with the next.
-
-							*suffixes*
-For file name completion you can use the 'suffixes' option to set a priority
-between files with almost the same name.  If there are multiple matches,
-those files with an extension that is in the 'suffixes' option are ignored.
-The default is ".bak,~,.o,.h,.info,.swp,.obj", which means that files ending
-in ".bak", "~", ".o", ".h", ".info", ".swp" and ".obj" are sometimes ignored.
-
-An empty entry, two consecutive commas, match a file name that does not
-contain a ".", thus has no suffix.  This is useful to ignore "prog" and prefer
-"prog.c".
-
-Examples:
-
-  pattern:	files:				match:	~
-   test*	test.c test.h test.o		test.c
-   test*	test.h test.o			test.h and test.o
-   test*	test.i test.h test.c		test.i and test.c
-
-It is impossible to ignore suffixes with two dots.
-
-If there is more than one matching file (after ignoring the ones matching
-the 'suffixes' option) the first file name is inserted.  You can see that
-there is only one match when you type 'wildchar' twice and the completed
-match stays the same.  You can get to the other matches by entering
-'wildchar', CTRL-N or CTRL-P.  All files are included, also the ones with
-extensions matching the 'suffixes' option.
-
-To completely ignore files with some extension use 'wildignore'.
-
-To match only files that end at the end of the typed text append a "$".  For
-example, to match only files that end in ".c": >
-	:e *.c$
-This will not match a file ending in ".cpp".  Without the "$" it does match.
-
-The old value of an option can be obtained by hitting 'wildchar' just after
-the '='.  For example, typing 'wildchar' after ":set dir=" will insert the
-current value of 'dir'.  This overrules file name completion for the options
-that take a file name.
-
-If you would like using  for CTRL-P in an xterm, put this command in
-your .cshrc: >
-	xmodmap -e "keysym Tab = Tab Find"
-And this in your .vimrc: >
-	:cmap [1~ 
-
-==============================================================================
-3. Ex command-lines					*cmdline-lines*
-
-The Ex commands have a few specialties:
-
-							*:quote* *:comment*
-'"' at the start of a line causes the whole line to be ignored.  '"'
-after a command causes the rest of the line to be ignored.  This can be used
-to add comments.  Example: >
-	:set ai		"set 'autoindent' option
-It is not possible to add a comment to a shell command ":!cmd" or to the
-":map" command and a few others, because they see the '"' as part of their
-argument.  This is mentioned where the command is explained.
-
-							*:bar* *:\bar*
-'|' can be used to separate commands, so you can give multiple commands in one
-line.  If you want to use '|' in an argument, precede it with '\'.
-
-These commands see the '|' as their argument, and can therefore not be
-followed by another Vim command:
-    :argdo
-    :autocmd
-    :bufdo
-    :command
-    :cscope
-    :debug
-    :folddoopen
-    :folddoclosed
-    :function
-    :global
-    :help
-    :helpfind
-    :lcscope
-    :make
-    :normal
-    :perl
-    :perldo
-    :promptfind
-    :promptrepl
-    :pyfile
-    :python
-    :registers
-    :read !
-    :scscope
-    :sign
-    :tcl
-    :tcldo
-    :tclfile
-    :vglobal
-    :windo
-    :write !
-    :[range]!
-    a user defined command without the "-bar" argument |:command|
-
-Note that this is confusing (inherited from Vi): With ":g" the '|' is included
-in the command, with ":s" it is not.
-
-To be able to use another command anyway, use the ":execute" command.
-Example (append the output of "ls" and jump to the first line): >
-	:execute 'r !ls' | '[
-
-There is one exception: When the 'b' flag is present in 'cpoptions', with the
-":map" and ":abbr" commands and friends CTRL-V needs to be used instead of
-'\'.  You can also use "" instead.  See also |map_bar|.
-
-Examples: >
-	:!ls | wc		view the output of two commands
-	:r !ls | wc		insert the same output in the text
-	:%g/foo/p|>		moves all matching lines one shiftwidth
-	:%s/foo/bar/|>		moves one line one shiftwidth
-	:map q 10^V|		map "q" to "10|"
-	:map q 10\| map \ l	map "q" to "10\" and map "\" to "l"
-					(when 'b' is present in 'cpoptions')
-
-You can also use  to separate commands in the same way as with '|'.  To
-insert a  use CTRL-V CTRL-J.  "^@" will be shown.  Using '|' is the
-preferred method.  But for external commands a  must be used, because a
-'|' is included in the external command.  To avoid the special meaning of 
-it must be preceded with a backslash.  Example: >
-	:r !date-join
-This reads the current date into the file and joins it with the previous line.
-
-Note that when the command before the '|' generates an error, the following
-commands will not be executed.
-
-
-Because of Vi compatibility the following strange commands are supported: >
-	:|			print current line (like ":p")
-	:3|			print line 3 (like ":3p")
-	:3			goto line 3
-
-A colon is allowed between the range and the command name.  It is ignored
-(this is Vi compatible).  For example: >
-	:1,$:s/pat/string
-
-When the character '%' or '#' is used where a file name is expected, they are
-expanded to the current and alternate file name (see the chapter "editing
-files" |:_%| |:_#|).
-
-Embedded spaces in file names are allowed on the Amiga if one file name is
-expected as argument.  Trailing spaces will be ignored, unless escaped with a
-backslash or CTRL-V.  Note that the ":next" command uses spaces to separate
-file names.  Escape the spaces to include them in a file name.  Example: >
-	:next foo\ bar goes\ to school\
-starts editing the three files "foo bar", "goes to" and "school ".
-
-When you want to use the special characters '"' or '|' in a command, or want
-to use '%' or '#' in a file name, precede them with a backslash.  The
-backslash is not required in a range and in the ":substitute" command.
-
-							*:_!*
-The '!' (bang) character after an Ex command makes the command behave in a
-different way.  The '!' should be placed immediately after the command, without
-any blanks in between.  If you insert blanks the '!' will be seen as an
-argument for the command, which has a different meaning.  For example:
-	:w! name	write the current buffer to file "name", overwriting
-			any existing file
-	:w !name	send the current buffer as standard input to command
-			"name"
-
-==============================================================================
-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
-';'.
-
-The basics are explained in section |10.3| of the user manual.
-
-						*:,* *:;*
-When separated with ';' the cursor position will be set to that line
-before interpreting the next line specifier.  This doesn't happen for ','.
-Examples: >
-   4,/this line/
-<	from line 4 till match with "this line" after the cursor line. >
-   5;/that line/
-<	from line 5 till match with "that line" after line 5.
-
-The default line specifier for most commands is the cursor position, but the
-commands ":write" and ":global" have the whole file (1,$) as default.
-
-If more line specifiers are given than required for the command, the first
-one(s) will be ignored.
-
-Line numbers may be specified with:		*:range* *E14* *{address}*
-	{number}	an absolute line number
-	.		the current line			  *:.*
-	$		the last line in the file		  *:$*
-	%		equal to 1,$ (the entire file)		  *:%*
-	't		position of mark t (lowercase)		  *:'*
-	'T		position of mark T (uppercase); when the mark is in
-			another file it cannot be used in a range
-	/{pattern}[/]	the next line where {pattern} matches	  *:/*
-	?{pattern}[?]	the previous line where {pattern} matches *:?*
-	\/		the next line where the previously used search
-			pattern matches
-	\?		the previous line where the previously used search
-			pattern matches
-	\&		the next line where the previously used substitute
-			pattern matches
-
-Each may be followed (several times) by '+' or '-' and an optional number.
-This number is added or subtracted from the preceding line number.  If the
-number is omitted, 1 is used.
-
-The "/" and "?" after {pattern} are required to separate the pattern from
-anything that follows.
-
-The "/" and "?" may be preceded with another address.  The search starts from
-there.  The difference from using ';' is that the cursor isn't moved.
-Examples: >
-	/pat1//pat2/	Find line containing "pat2" after line containing
-			"pat1", without moving the cursor.
-	7;/pat2/	Find line containing "pat2", after line 7, leaving
-			the cursor in line 7.
-
-The {number} must be between 0 and the number of lines in the file.  When
-using a 0 (zero) this is interpreted as a 1 by most commands.  Commands that
-use it as a count do use it as a zero (|:tag|, |:pop|, etc).  Some commands
-interpret the zero as "before the first line" (|:read|, search pattern, etc).
-
-Examples: >
-	.+3		three lines below the cursor
-	/that/+1	the line below the next line containing "that"
-	.,$		from current line until end of file
-	0;/that		the first line containing "that", also matches in the
-			first line.
-	1;/that		the first line after line 1 containing "that"
-
-Some commands allow for a count after the command.  This count is used as the
-number of lines to be used, starting with the line given in the last line
-specifier (the default is the cursor line).  The commands that accept a count
-are the ones that use a range but do not have a file name argument (because
-a file name can also be a number).
-
-Examples: >
-	:s/x/X/g 5	substitute 'x' by 'X' in the current line and four
-			following lines
-	:23d 4		delete lines 23, 24, 25 and 26
-
-
-Folds and Range
-
-When folds are active the line numbers are rounded off to include the whole
-closed fold.  See |fold-behavior|.
-
-
-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.
-	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:*
-
-When giving a count before entering ":", this is translated into:
-		:.,.+(count - 1)
-In words: The 'count' lines at and after the cursor.  Example: To delete
-three lines: >
-		3:d		is translated into: .,.+2d
-<
-
-Visual Mode and Range					*v_:*
-
-{Visual}:	Starts a command-line with the Visual selected lines as a
-		range.  The code ":'<,'>" is used for this range, which makes
-		it possible to select a similar line from the command-line
-		history for repeating a command on different Visually selected
-		lines.
-
-==============================================================================
-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|.
-
-Note: If you want to avoid the special characters in a Vim script you may want
-to use |fnameescape()|.
-
-
-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
-function expand() |expand()|.
-	%	Is replaced with the current file name.		  *:_%* *c_%*
-	#	Is replaced with the alternate file name.	  *:_#* *c_#*
-	#n	(where n is a number) is replaced with		  *:_#0* *:_#n*
-		the file name of buffer n.  "#0" is the same as "#".     *c_#n*
-	##	Is replaced with all names in the argument list	  *:_##* *c_##*
-		concatenated, separated by spaces.  Each space in a name
-		is preceded with a backslash.
-	# 0) is replaced with old	  *:_#<* *c_#<*
-		file name n.  See |:oldfiles| or |v:oldfiles| to get the
-		number.							*E809*
-		{only when compiled with the |+eval| and |+viminfo| features}
-
-Note that these, except "#
-	:!ls "%"
-	:r !spell "%"
-
-To avoid the special meaning of '%' and '#' insert a backslash before it.
-Detail: The special meaning is always escaped when there is a backslash before
-it, no matter how many backslashes.
-	you type:		result	~
-	   #			alternate.file
-	   \#			#
-	   \\#			\#
-
-			       *:* *:* *:* **
-			       *:* ** *:* **
-			       *:* ** *:* **
-			       *E495* *E496* *E497* *E498* *E499* *E500*
-Note: these are typed literally, they are not special keys!
-	    is replaced with the word under the cursor (like |star|)
-	    is replaced with the WORD under the cursor (see |WORD|)
-	    is replaced with the path name under the cursor (like what
-		   |gf| uses)
-	    when executing autocommands, is replaced with the file name
-		   for a file read or write
-	     when executing autocommands, is replaced with the currently
-		   effective buffer number (for ":r file" and ":so file" it is
-		   the current buffer, the file being read/sourced is not in a
-		   buffer).
-	   when executing autocommands, is replaced with the match for
-		   which this autocommand was executed.  It differs from
-		    only when the file name isn't used to match with
-		   (for FileType, Syntax and SpellFileMissing events).
-	    when executing a ":source" command, is replaced with the
-		   file name of the sourced file;
-		   when executing a function, is replaced with
-		   "function {function-name}"; function call nesting is
-		   indicated like this:
-		   "function {function-name1}..{function-name2}".  Note that
-		   filename-modifiers are useless when  is used inside
-		   a function.
-
-							 *filename-modifiers*
-	 *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs*
-	        *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs*
-The file name modifiers can be used after "%", "#", "#n", "", "",
-"" or "".  They are also used with the |fnamemodify()| function.
-These are not available when Vim has been compiled without the |+modify_fname|
-feature.
-These modifiers can be given, in this order:
-	:p	Make file name a full path.  Must be the first modifier.  Also
-		changes "~/" (and "~user/" for Unix and VMS) to the path for
-		the home directory.  If the name is a directory a path
-		separator is added at the end.  For a file name that does not
-		exist and does not have an absolute path the result is
-		unpredictable.
-	:8	Converts the path to 8.3 short format (currently only on
-		win32).  Will act on as much of a path that is an existing
-		path.
-	:~	Reduce file name to be relative to the home directory, if
-		possible.  File name is unmodified if it is not below the home
-		directory.
-	:.	Reduce file name to be relative to current directory, if
-		possible.  File name is unmodified if it is not below the
-		current directory.
-		For maximum shortness, use ":~:.".
-	:h	Head of the file name (the last component and any separators
-		removed).  Cannot be used with :e, :r or :t.
-		Can be repeated to remove several components at the end.
-		When the file name ends in a path separator, only the path
-		separator is removed.  Thus ":p:h" on a directory name results
-		on the directory name itself (without trailing slash).
-		When the file name is an absolute path (starts with "/" for
-		Unix; "x:\" for MS-DOS, WIN32, OS/2; "drive:" for Amiga), that
-		part is not removed.  When there is no head (path is relative
-		to current directory) the result is empty.
-	:t	Tail of the file name (last component of the name).  Must
-		precede any :r or :e.
-	:r	Root of the file name (the last extension removed).  When
-		there is only an extension (file name that starts with '.',
-		e.g., ".vimrc"), it is not removed.  Can be repeated to remove
-		several extensions (last one first).
-	:e	Extension of the file name.  Only makes sense when used alone.
-		When there is no extension the result is empty.
-		When there is only an extension (file name that starts with
-		'.'), the result is empty.  Can be repeated to include more
-		extensions.  If there are not enough extensions (but at least
-		one) as much as possible are included.
-	:s?pat?sub?
-		Substitute the first occurrence of "pat" with "sub".  This
-		works like the |:s| command.  "pat" is a regular expression.
-		Any character can be used for '?', but it must not occur in
-		"pat" or "sub".
-		After this, the previous modifiers can be used again.  For
-		example ":p", to make a full path after the substitution.
-	:gs?pat?sub?
-		Substitute all occurrences of "path" with "sub".  Otherwise
-		this works like ":s".
-
-Examples, when the file name is "src/version.c", current dir
-"/home/mool/vim": >
-  :p			/home/mool/vim/src/version.c
-  :p:.				       src/version.c
-  :p:~				 ~/vim/src/version.c
-  :h				       src
-  :p:h			/home/mool/vim/src
-  :p:h:h		/home/mool/vim
-  :t					   version.c
-  :p:t					   version.c
-  :r				       src/version
-  :p:r			/home/mool/vim/src/version
-  :t:r					   version
-  :e						   c
-  :s?version?main?		       src/main.c
-  :s?version?main?:p	/home/mool/vim/src/main.c
-  :p:gs?/?\\?		\home\mool\vim\src\version.c
-
-Examples, when the file name is "src/version.c.gz": >
-  :p			/home/mool/vim/src/version.c.gz
-  :e						     gz
-  :e:e						   c.gz
-  :e:e:e					   c.gz
-  :e:e:r					   c
-  :r				       src/version.c
-  :r:e						   c
-  :r:r				       src/version
-  :r:r:r			       src/version
-<
-					*extension-removal* *:_%<*
-If a "<" is appended to "%", "#", "#n" or "CTRL-V p" the extension of the file
-name is removed (everything after and including the last '.' in the file
-name).  This is included for backwards compatibility with version 3.0, the
-":r" form is preferred.  Examples: >
-
-	%		current file name
-	%<		current file name without extension
-	#		alternate file name for current window
-	#<		idem, without extension
-	#31		alternate file number 31
-	#31<		idem, without extension
-			word under the cursor
-			WORD under the cursor (see |WORD|)
-			path name under the cursor
-	<	idem, without extension
-
-Note: Where a file name is expected wildcards expansion is done.  On Unix the
-shell is used for this, unless it can be done internally (for speed).
-Backticks also work, like in >
-	:n `echo *.c`
-(backtick expansion is not possible in |restricted-mode|)
-But expansion is only done if there are any wildcards before expanding the
-'%', '#', etc..  This avoids expanding wildcards inside a file name.  If you
-want to expand the result of , add a wildcard character to it.
-Examples: (alternate file name is "?readme?")
-	command		expands to  ~
-	:e #		:e ?readme?
-	:e `ls #`	:e {files matching "?readme?"}
-	:e #.*		:e {files matching "?readme?.*"}
-	:cd 	:cd {file name under cursor}
-	:cd *	:cd {file name under cursor plus "*" and then expanded}
-
-When the expanded argument contains a "!" and it is used for a shell command
-(":!cmd", ":r !cmd" or ":w !cmd"), the "!" is escaped with a backslash to
-avoid it being expanded into a previously used command.  When the 'shell'
-option contains "sh", this is done twice, to avoid the shell trying to expand
-the "!".
-
-							*filename-backslash*
-For filesystems that use a backslash as directory separator (MS-DOS, Windows,
-OS/2), it's a bit difficult to recognize a backslash that is used to escape
-the special meaning of the next character.  The general rule is: If the
-backslash is followed by a normal file name character, it does not have a
-special meaning.  Therefore "\file\foo" is a valid file name, you don't have
-to type the backslash twice.
-
-An exception is the '$' sign.  It is a valid character in a file name.  But
-to avoid a file name like "$home" to be interpreted as an environment variable,
-it needs to be preceded by a backslash.  Therefore you need to use "/\$home"
-for the file "$home" in the root directory.  A few examples:
-
-	FILE NAME	INTERPRETED AS	~
-	$home		expanded to value of environment var $home
-	\$home		file "$home" in current directory
-	/\$home		file "$home" in root directory
-	\\$home		file "\\", followed by expanded $home
-
-==============================================================================
-6. Command-line window				*cmdline-window* *cmdwin*
-							*command-line-window*
-In the command-line window the command line can be edited just like editing
-text in any window.  It is a special kind of window, because you cannot leave
-it in a normal way.
-{not available when compiled without the |+cmdline_hist| or |+vertsplit|
-feature}
-
-
-OPEN						*c_CTRL-F* *q:* *q/* *q?*
-
-There are two ways to open the command-line window:
-1. From Command-line mode, use the key specified with the 'cedit' option.
-   The default is CTRL-F when 'compatible' is not set.
-2. From Normal mode, use the "q:", "q/" or "q?" command.
-   This starts editing an Ex command-line ("q:") or search string ("q/" or
-   "q?").  Note that this is not possible while recording is in progress (the
-   "q" stops recording then).
-
-When the window opens it is filled with the command-line history.  The last
-line contains the command as typed so far.  The left column will show a
-character that indicates the type of command-line being edited, see
-|cmdwin-char|.
-
-Vim will be in Normal mode when the editor is opened, except when 'insertmode'
-is set.
-
-The height of the window is specified with 'cmdwinheight' (or smaller if there
-is no room).  The window is always full width and is positioned just above the
-command-line.
-
-
-EDIT
-
-You can now use commands to move around and edit the text in the window.  Both
-in Normal mode and Insert mode.
-
-It is possible to use ":", "/" and other commands that use the command-line,
-but it's not possible to open another command-line window then.  There is no
-nesting.
-							*E11*
-The command-line window is not a normal window.  It is not possible to move to
-another window or edit another buffer.  All commands that would do this are
-disabled in the command-line window.  Of course it _is_ possible to execute
-any command that you entered in the command-line window.  Other text edits are
-discarded when closing the window.
-
-
-CLOSE							*E199*
-
-There are several ways to leave the command-line window:
-
-		Execute the command-line under the cursor.  Works both in
-		Insert and in Normal mode.
-CTRL-C		Continue in Command-line mode.  The command-line under the
-		cursor is used as the command-line.  Works both in Insert and
-		in Normal mode.  ":close" also works.  There is no redraw,
-		thus the window will remain visible.
-:quit		Discard the command line and go back to Normal mode.
-		":exit", ":xit" and CTRL-\ CTRL-N also work.
-:qall		Quit Vim, unless there are changes in some buffer.
-:qall!		Quit Vim, discarding changes to any buffer.
-
-Once the command-line window is closed the old window sizes are restored.  The
-executed command applies to the window and buffer where the command-line was
-started from.  This works as if the command-line window was not there, except
-that there will be an extra screen redraw.
-The buffer used for the command-line window is deleted.  Any changes to lines
-other than the one that is executed with  are lost.
-
-If you would like to execute the command under the cursor and then have the
-command-line window open again, you may find this mapping useful: >
-
-	:autocmd CmdwinEnter * map   q:
-
-
-VARIOUS
-
-The command-line window cannot be used:
-- when there already is a command-line window (no nesting)
-- for entering an encryption key or when using inputsecret()
-- when Vim was not compiled with the |+vertsplit| feature
-
-Some options are set when the command-line window is opened:
-'filetype'	"vim", when editing an Ex command-line; this starts Vim syntax
-		highlighting if it was enabled
-'rightleft'	off
-'modifiable'	on
-'buftype'	"nofile"
-'swapfile'	off
-
-It is allowed to write the buffer contents to a file.  This is an easy way to
-save the command-line history and read it back later.
-
-If the 'wildchar' option is set to , and the command-line window is used
-for an Ex command, then two mappings will be added to use  for completion
-in the command-line window, like this: >
-	:imap   
-	:nmap   a
-Note that hitting  in Normal mode will do completion on the next
-character.  That way it works at the end of the line.
-If you don't want these mappings, disable them with: >
-	au CmdwinEnter [:>] iunmap 
-	au CmdwinEnter [:>] nunmap 
-You could put these lines in your vimrc file.
-
-While in the command-line window you cannot use the mouse to put the cursor in
-another window, or drag statuslines of other windows.  You can drag the
-statusline of the command-line window itself and the statusline above it.
-Thus you can resize the command-line window, but not others.
-
-
-AUTOCOMMANDS
-
-Two autocommand events are used: |CmdwinEnter| and |CmdwinLeave|.  Since this
-window is of a special type, the WinEnter, WinLeave, BufEnter and BufLeave
-events are not triggered.  You can use the Cmdwin events to do settings
-specifically for the command-line window.  Be careful not to cause side
-effects!
-Example: >
-	:au CmdwinEnter :  let b:cpt_save = &cpt | set cpt=.
-	:au CmdwinLeave :  let &cpt = b:cpt_save
-This sets 'complete' to use completion in the current window for |i_CTRL-N|.
-Another example: >
-	:au CmdwinEnter [/?]  startinsert
-This will make Vim start in Insert mode in the command-line window.
-
-						*cmdwin-char*
-The character used for the pattern indicates the type of command-line:
-	:	normal Ex command
-	>	debug mode command |debug-mode|
-	/	forward search string
-	?	backward search string
-	=	expression for "= |expr-register|
-	@	string for |input()|
-	-	text for |:insert| or |:append|
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/debug.txt b/share/vim/vim73/doc/debug.txt
deleted file mode 100644
index 015c4e73..00000000
--- a/share/vim/vim73/doc/debug.txt
+++ /dev/null
@@ -1,174 +0,0 @@
-*debug.txt*     For Vim version 7.3.  Last change: 2010 Jul 20
-
-
-		  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. Locating memory leaks			|debug-leaks|
-3. 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. Locating memory leaks			*debug-leaks* *valgrind*
-
-If you suspect Vim is leaking memory and you are using Linux, the valgrind
-tool is very useful to pinpoint memory leaks.
-
-First of all, build Vim with EXITFREE defined.  Search for this in MAKEFILE
-and uncomment the line.
-
-Use this command to start Vim:
->
-	valgrind --log-file=valgrind.log --leak-check=full ./vim
-
-Note: Vim will run much slower.  If your .vimrc is big or you have several
-plugins you need to be patient for startup, or run with the "-u NONE"
-argument.
-
-There are often a few leaks from libraries, such as getpwuid() and
-XtVaAppCreateShell().  Those are unavoidable.  The number of bytes should be
-very small a Kbyte or less.
-
-==============================================================================
-
-3. 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.
-
-
-GENERIC ~
-
-You must obtain the debugger symbols (PDB) file for your executable: gvim.pdb
-for gvim.exe, or vim.pdb for vim.exe. The PDB should be available from the
-same place that you obtained the executable. Be sure to use the PDB that
-matches the EXE (same date).
-
-If you built the executable yourself with the Microsoft Visual C++ compiler,
-then the PDB was built with the EXE.
-
-Alternatively, if you have the source files, you can import Make_ivc.mak into
-Visual Studio as a workspace.  Then select a debug configuration, build and
-you can do all kinds of debugging (set breakpoints, watch variables, etc.).
-
-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.
-
-
-								*debug-vs2005*
-2.2 Debugging Vim crashes with Visual Studio 2005/Visual C++ 2005 Express ~
-
-First launch vim.exe or gvim.exe and then launch Visual Studio.  (If you don't
-have Visual Studio, follow the instructions at |get-ms-debuggers| to obtain a
-free copy of Visual C++ 2005 Express Edition.)
-
-On the Tools menu, click Attach to Process.  Choose the Vim process.
-
-In Vim, reproduce the crash.  A dialog will appear in Visual Studio, telling
-you about the unhandled exception in the Vim process.  Click Break to break
-into the process.
-
-Visual Studio will pop up another dialog, telling you that no symbols are
-loaded and that the source code cannot be displayed.  Click OK.
-
-Several windows will open.  Right-click in the Call Stack window.  Choose Load
-Symbols.  The Find Symbols dialog will open, looking for (g)vim.pdb.  Navigate
-to the directory where you have the PDB file and click Open.
-
-At this point, you should have a full call stack with vim function names and
-line numbers.  Double-click one of the lines and the Find Source dialog will
-appear.  Navigate to the directory where the Vim source is (if you have it.)
-
-If you don't know how to debug this any further, follow the instructions
-at ":help bug-reports".  Paste the call stack into the bug report.
-
-If you have a non-free version of Visual Studio, you can save a minidump via
-the Debug menu and send it with the bug report.  A minidump is a small file
-(<100KB), which contains information about the state of your process.
-Visual C++ 2005 Express Edition cannot save minidumps and it cannot be
-installed as a just-in-time debugger. Use WinDbg, |debug-windbg|, if you
-need to save minidumps or you want a just-in-time (postmortem) debugger.
-
-								*debug-windbg*
-2.3 Debugging Vim crashes with WinDbg ~
-
-See |get-ms-debuggers| to obtain a copy of WinDbg.
-
-As with the Visual Studio IDE, you can attach WinDbg to a running Vim process.
-You can also have your system automatically invoke WinDbg as a postmortem
-debugger. To set WinDbg as your postmortem debugger, run "windbg -I".
-
-To attach WinDbg to a running Vim process, launch WinDbg. On the File menu,
-choose Attach to a Process. Select the Vim process and click OK.
-
-At this point, choose Symbol File Path on the File menu, and add the folder
-containing your Vim PDB to the sympath. If you have Vim source available,
-use Source File Path on the File menu. You can now open source files in WinDbg
-and set breakpoints, if you like. Reproduce your crash. WinDbg should open the
-source file at the point of the crash. Using the View menu, you can examine
-the call stack, local variables, watch windows, and so on.
-
-If WinDbg is your postmortem debugger, you do not need to attach WinDbg to
-your Vim process. Simply reproduce the crash and WinDbg will launch
-automatically. As above, set the Symbol File Path and the Source File Path.
-
-To save a minidump, type the following at the WinDbg command line: >
-        .dump vim.dmp
-<
-							*debug-minidump*
-2.4 Opening a Minidump ~
-
-If you have a minidump file, you can open it in Visual Studio or in WinDbg.
-
-In Visual Studio 2005: on the File menu, choose Open, then Project/Solution.
-Navigate to the .dmp file and open it. Now press F5 to invoke the debugger.
-Follow the instructions in |debug-vs2005| to set the Symbol File Path.
-
-In WinDbg: choose Open Crash Dump on the File menu. Follow the instructions in
-|debug-windbg| to set the Symbol File Path.
-
-							*get-ms-debuggers*
-2.5 Obtaining Microsoft Debugging Tools ~
-
-The Debugging Tools for Windows (including WinDbg) can be downloaded from
-    http://www.microsoft.com/whdc/devtools/debugging/default.mspx
-This includes the WinDbg debugger.
-
-Visual C++ 2005 Express Edition can be downloaded for free from:
-    http://msdn.microsoft.com/vstudio/express/visualC/default.aspx
-
-=========================================================================
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/debugger.txt b/share/vim/vim73/doc/debugger.txt
deleted file mode 100644
index d80eee6b..00000000
--- a/share/vim/vim73/doc/debugger.txt
+++ /dev/null
@@ -1,140 +0,0 @@
-*debugger.txt*  For Vim version 7.3.  Last change: 2005 Mar 29
-
-
-		  VIM REFERENCE MANUAL    by Gordon Prieur
-
-
-Debugger Support Features				*debugger-support*
-
-1. Debugger Features		|debugger-features|
-2. Vim Compile Options		|debugger-compilation|
-3. Integrated Debuggers		|debugger-integration|
-
-{Vi does not have any of these features}
-
-==============================================================================
-1. Debugger Features					*debugger-features*
-
-The following features are available for an integration with a debugger or
-an Integrated Programming Environment (IPE) or Integrated Development
-Environment (IDE):
-
-	Alternate Command Input				|alt-input|
-	Debug Signs					|debug-signs|
-	Debug Source Highlight				|debug-highlight|
-	Message Footer					|gui-footer|
-	Balloon Evaluation				|balloon-eval|
-
-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
-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
-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
-enough control to display the current debug environment and state.
-
-The current implementation is based on the X Toolkit dispatch loop and the
-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
-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
-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
-can also work together with the |debug-highlight| to ensure the mark is
-highly visible.
-
-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
-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
-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
-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'.
-
-
-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
-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.  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|
-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
-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.
-
-The following compile time preprocessor variables control the features:
-
-    Alternate Command Input			ALT_X_INPUT
-    Debug Glyphs				FEAT_SIGNS
-    Debug Highlights				FEAT_SIGNS
-    Message Footer				FEAT_FOOTER
-    Balloon Evaluation				FEAT_BEVAL
-
-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:
-
-    Sun Visual WorkShop				FEAT_SUN_WORKSHOP
-
-==============================================================================
-3. Integrated Debuggers					*debugger-integration*
-
-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:
diff --git a/share/vim/vim73/doc/develop.txt b/share/vim/vim73/doc/develop.txt
deleted file mode 100644
index 7cfdd5b2..00000000
--- a/share/vim/vim73/doc/develop.txt
+++ /dev/null
@@ -1,490 +0,0 @@
-*develop.txt*   For Vim version 7.3.  Last change: 2008 Dec 17
-
-
-		  VIM REFERENCE MANUAL    by Bram Moolenaar
-
-
-Development of Vim.					*development*
-
-This text is important for those who want to be involved in further developing
-Vim.
-
-1. Design goals		|design-goals|
-2. Coding style		|coding-style|
-3. Design decisions	|design-decisions|
-4. Assumptions		|design-assumptions|
-
-See the file README.txt in the "src" directory for an overview of the source
-code.
-
-Vim is open source software.  Everybody is encouraged to contribute to help
-improving Vim.  For sending patches a context diff "diff -c" is preferred.
-Also see http://www.vim.org/tips/tip.php?tip_id=618.
-
-==============================================================================
-1. Design goals						*design-goals*
-
-Most important things come first (roughly).
-
-Note that quite a few items are contradicting.  This is intentional.  A
-balance must be found between them.
-
-
-VIM IS... VI COMPATIBLE					*design-compatible*
-
-First of all, it should be possible to use Vim as a drop-in replacement for
-Vi.  When the user wants to, he can use Vim in compatible mode and hardly
-notice any difference with the original Vi.
-
-Exceptions:
-- We don't reproduce obvious Vi bugs in Vim.
-- There are different versions of Vi.  I am using Version 3.7 (6/7/85) as a
-  reference.  But support for other versions is also included when possible.
-  The Vi part of POSIX is not considered a definitive source.
-- Vim adds new commands, you cannot rely on some command to fail because it
-  didn't exist in Vi.
-- Vim will have a lot of features that Vi doesn't have.  Going back from Vim
-  to Vi will be a problem, this cannot be avoided.
-- Some things are hardly ever used (open mode, sending an e-mail when
-  crashing, etc.).  Those will only be included when someone has a good reason
-  why it should be included and it's not too much work.
-- For some items it is debatable whether Vi compatibility should be
-  maintained.  There will be an option flag for these.
-
-
-VIM IS... IMPROVED					*design-improved*
-
-The IMproved bits of Vim should make it a better Vi, without becoming a
-completely different editor.  Extensions are done with a "Vi spirit".
-- Use the keyboard as much as feasible.  The mouse requires a third hand,
-  which we don't have.  Many terminals don't have a mouse.
-- When the mouse is used anyway, avoid the need to switch back to the
-  keyboard.  Avoid mixing mouse and keyboard handling.
-- Add commands and options in a consistent way.  Otherwise people will have a
-  hard time finding and remembering them.  Keep in mind that more commands and
-  options will be added later.
-- A feature that people do not know about is a useless feature.  Don't add
-  obscure features, or at least add hints in documentation that they exist.
-- Minimize using CTRL and other modifiers, they are more difficult to type.
-- There are many first-time and inexperienced Vim users.  Make it easy for
-  them to start using Vim and learn more over time.
-- There is no limit to the features that can be added.  Selecting new features
-  is one based on (1) what users ask for, (2) how much effort it takes to
-  implement and (3) someone actually implementing it.
-
-
-VIM IS... MULTI PLATFORM				*design-multi-platform*
-
-Vim tries to help as many users on as many platforms as possible.
-- Support many kinds of terminals.  The minimal demands are cursor positioning
-  and clear-screen.  Commands should only use key strokes that most keyboards
-  have.  Support all the keys on the keyboard for mapping.
-- Support many platforms.  A condition is that there is someone willing to do
-  Vim development on that platform, and it doesn't mean messing up the code.
-- Support many compilers and libraries.  Not everybody is able or allowed to
-  install another compiler or GUI library.
-- People switch from one platform to another, and from GUI to terminal
-  version.  Features should be present in all versions, or at least in as many
-  as possible with a reasonable effort.  Try to avoid that users must switch
-  between platforms to accomplish their work efficiently.
-- That a feature is not possible on some platforms, or only possible on one
-  platform, does not mean it cannot be implemented.  [This intentionally
-  contradicts the previous item, these two must be balanced.]
-
-
-VIM IS... WELL DOCUMENTED				*design-documented*
-
-- A feature that isn't documented is a useless feature.  A patch for a new
-  feature must include the documentation.
-- Documentation should be comprehensive and understandable.  Using examples is
-  recommended.
-- Don't make the text unnecessarily long.  Less documentation means that an
-  item is easier to find.
-
-
-VIM IS... HIGH SPEED AND SMALL IN SIZE			*design-speed-size*
-
-Using Vim must not be a big attack on system resources.  Keep it small and
-fast.
-- Computers are becoming faster and bigger each year.  Vim can grow too, but
-  no faster than computers are growing.  Keep Vim usable on older systems.
-- Many users start Vim from a shell very often.  Startup time must be short.
-- Commands must work efficiently.  The time they consume must be as small as
-  possible.  Useful commands may take longer.
-- Don't forget that some people use Vim over a slow connection.  Minimize the
-  communication overhead.
-- Items that add considerably to the size and are not used by many people
-  should be a feature that can be disabled.
-- Vim is a component among other components.  Don't turn it into a massive
-  application, but have it work well together with other programs.
-
-
-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!  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
-  knowledge spread to other parts of the code.
-
-
-VIM IS... FLEXIBLE					*design-flexible*
-
-Vim should make it easy for users to work in their preferred styles rather
-than coercing its users into particular patterns of work.  This can be for
-items with a large impact (e.g., the 'compatible' option) or for details.  The
-defaults are carefully chosen such that most users will enjoy using Vim as it
-is.  Commands and options can be used to adjust Vim to the desire of the user
-and its environment.
-
-
-VIM IS... NOT						*design-not*
-
-- Vim is not a shell or an Operating System.  You will not be able to run a
-  shell inside Vim or use it to control a debugger.  This should work the
-  other way around: Use Vim as a component from a shell or in an IDE.
-  A satirical way to say this: "Unlike Emacs, Vim does not attempt to include
-  everything but the kitchen sink, but some people say that you can clean one
-  with it.  ;-)"
-  To use Vim with gdb see: http://www.agide.org and http://clewn.sf.net.
-- Vim is not a fancy GUI editor that tries to look nice at the cost of
-  being less consistent over all platforms.  But functional GUI features are
-  welcomed.
-
-==============================================================================
-2. Coding style						*coding-style*
-
-These are the rules to use when making changes to the Vim source code.  Please
-stick to these rules, to keep the sources readable and maintainable.
-
-This list is not complete.  Look in the source code for more examples.
-
-
-MAKING CHANGES						*style-changes*
-
-The basic steps to make changes to the code:
-1. Adjust the documentation.  Doing this first gives you an impression of how
-   your changes affect the user.
-2. Make the source code changes.
-3. Check ../doc/todo.txt if the change affects any listed item.
-4. Make a patch with "diff -c" against the unmodified code and docs.
-5. Make a note about what changed and include it with the patch.
-
-
-USE OF COMMON FUNCTIONS					*style-functions*
-
-Some functions that are common to use, have a special Vim version.  Always
-consider using the Vim version, because they were introduced with a reason.
-
-NORMAL NAME	VIM NAME	DIFFERENCE OF VIM VERSION
-free()		vim_free()	Checks for freeing NULL
-malloc()	alloc()		Checks for out of memory situation
-malloc()	lalloc()	Like alloc(), but has long argument
-strcpy()	STRCPY()	Includes cast to (char *), for char_u * args
-strchr()	vim_strchr()	Accepts special characters
-strrchr()	vim_strrchr()	Accepts special characters
-isspace()	vim_isspace()	Can handle characters > 128
-iswhite()	vim_iswhite()	Only TRUE for tab and space
-memcpy()	mch_memmove()	Handles overlapped copies
-bcopy()		mch_memmove()	Handles overlapped copies
-memset()	vim_memset()	Uniform for all systems
-
-
-NAMES							*style-names*
-
-Function names can not be more than 31 characters long (because of VMS).
-
-Don't use "delete" as a variable name, C++ doesn't like it.
-
-Because of the requirement that Vim runs on as many systems as possible, we
-need to avoid using names that are already defined by the system.  This is a
-list of names that are known to cause trouble.  The name is given as a regexp
-pattern.
-
-is.*()		POSIX, ctype.h
-to.*()		POSIX, ctype.h
-
-d_.*		POSIX, dirent.h
-l_.*		POSIX, fcntl.h
-gr_.*		POSIX, grp.h
-pw_.*		POSIX, pwd.h
-sa_.*		POSIX, signal.h
-mem.*		POSIX, string.h
-str.*		POSIX, string.h
-wcs.*		POSIX, string.h
-st_.*		POSIX, stat.h
-tms_.*		POSIX, times.h
-tm_.*		POSIX, time.h
-c_.*		POSIX, termios.h
-MAX.*		POSIX, limits.h
-__.*		POSIX, system
-_[A-Z].*	POSIX, system
-E[A-Z0-9]*	POSIX, errno.h
-
-.*_t		POSIX, for typedefs.  Use .*_T instead.
-
-wait		don't use as argument to a function, conflicts with types.h
-index		shadows global declaration
-time		shadows global declaration
-new		C++ reserved keyword
-try		Borland C++ doesn't like it to be used as a variable.
-
-basename()	GNU string function
-dirname()	GNU string function
-get_env_value()	Linux system function
-
-
-VARIOUS							*style-various*
-
-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_": >
-    #define FEAT_FOO
-
-Don't use '\"', some compilers can't handle it.  '"' works fine.
-
-Don't use:
-    #if HAVE_SOME
-Some compilers can't handle that and complain that "HAVE_SOME" is not defined.
-Use
-    #ifdef HAVE_SOME
-or
-    #if defined(HAVE_SOME)
-
-
-STYLE							*style-examples*
-
-General rule: One statement per line.
-
-Wrong:	    if (cond) a = 1;
-
-OK:	    if (cond)
-		a = 1;
-
-Wrong:	    while (cond);
-
-OK:	    while (cond)
-		;
-
-Wrong:	    do a = 1; while (cond);
-
-OK:	    do
-		a = 1;
-	    while (cond);
-
-
-Functions start with:
-
-Wrong:	int function_name(int arg1, int arg2)
-
-OK:	/*
-	 * Explanation of what this function is used for.
-	 *
-	 * Return value explanation.
-	 */
-	    int
-	function_name(arg1, arg2)
-	    int		arg1;		/* short comment about arg1 */
-	    int		arg2;		/* short comment about arg2 */
-	{
-	    int		local;		/* comment about local */
-
-	    local = arg1 * arg2;
-
-NOTE: Don't use ANSI style function declarations.  A few people still have to
-use a compiler that doesn't support it.
-
-
-SPACES AND PUNCTUATION					*style-spaces*
-
-No space between a function name and the bracket:
-
-Wrong:  func (arg);
-OK:	func(arg);
-
-Do use a space after if, while, switch, etc.
-
-Wrong:	if(arg)		for(;;)
-OK:	if (arg)	for (;;)
-
-Use a space after a comma and semicolon:
-
-Wrong:  func(arg1,arg2);	for (i = 0;i < 2;++i)
-OK:	func(arg1, arg2);	for (i = 0; i < 2; ++i)
-
-Use a space before and after '=', '+', '/', etc.
-
-Wrong:	var=a*5;
-OK:	var = a * 5;
-
-In general: Use empty lines to group lines of code together.  Put a comment
-just above the group of lines.  This makes it easier to quickly see what is
-being done.
-
-OK:	/* Prepare for building the table. */
-	get_first_item();
-	table_idx = 0;
-
-	/* Build the table */
-	while (has_item())
-	    table[table_idx++] = next_item();
-
-	/* Finish up. */
-	cleanup_items();
-	generate_hash(table);
-
-==============================================================================
-3. Design decisions					*design-decisions*
-
-Folding
-
-Several forms of folding should be possible for the same buffer.  For example,
-have one window that shows the text with function bodies folded, another
-window that shows a function body.
-
-Folding is a way to display the text.  It should not change the text itself.
-Therefore the folding has been implemented as a filter between the text stored
-in a buffer (buffer lines) and the text displayed in a window (logical lines).
-
-
-Naming the window
-
-The word "window" is commonly used for several things: A window on the screen,
-the xterm window, a window inside Vim to view a buffer.
-To avoid confusion, other items that are sometimes called window have been
-given another name.  Here is an overview of the related items:
-
-screen		The whole display.  For the GUI it's something like 1024x768
-		pixels.  The Vim shell can use the whole screen or part of it.
-shell		The Vim application.  This can cover the whole screen (e.g.,
-		when running in a console) or part of it (xterm or GUI).
-window		View on a buffer.  There can be several windows in Vim,
-		together with the command line, menubar, toolbar, etc. they
-		fit in the shell.
-
-
-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 too 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 noticeable improvement over not using the word
-count.
-
-==============================================================================
-4. Assumptions						*design-assumptions*
-
-Size of variables:
-char	    8 bit signed
-char_u	    8 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
-standard specifies a limit of 509 characters.
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/diff.txt b/share/vim/vim73/doc/diff.txt
deleted file mode 100644
index 1d62e545..00000000
--- a/share/vim/vim73/doc/diff.txt
+++ /dev/null
@@ -1,414 +0,0 @@
-*diff.txt*      For Vim version 7.3.  Last change: 2010 Jul 31
-
-
-		  VIM REFERENCE MANUAL    by Bram Moolenaar
-
-
-				*diff* *vimdiff* *gvimdiff* *diff-mode*
-This file describes the |+diff| feature: Showing differences between two,
-three or four versions of the same file.
-
-The basics are explained in section |08.7| of the user manual.
-
-1. Starting diff mode		|vimdiff|
-2. Viewing diffs		|view-diffs|
-3. Jumping to diffs		|jumpto-diffs|
-4. Copying diffs		|copy-diffs|
-5. Diff options			|diff-options|
-
-{not in Vi}
-
-==============================================================================
-1. Starting diff mode
-
-The easiest way to start editing in diff mode is with the "vimdiff" command.
-This starts Vim as usual, and additionally sets up for viewing the differences
-between the arguments. >
-
-	vimdiff file1 file2 [file3 [file4]]
-
-This is equivalent to: >
-
-	vim -d file1 file2 [file3 [file4]]
-
-You may also use "gvimdiff" or "vim -d -g".  The GUI is started then.
-You may also use "viewdiff" or "gviewdiff".  Vim starts in readonly mode then.
-"r" may be prepended for restricted mode (see |-Z|).
-
-The second and following arguments may also be a directory name.  Vim will
-then append the file name of the first argument to the directory name to find
-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: >
-
-	vimdiff -o file1 file2 [file3 [file4]]
-
-If you always prefer horizontal splits include "horizontal" in 'diffopt'.
-
-In each of the edited files these options are set:
-
-	'diff'		on
-	'scrollbind'	on
-	'cursorbind'	on
-	'scrollopt'	includes "hor"
-	'wrap'		off
-	'foldmethod'	"diff"
-	'foldcolumn'	value from 'diffopt', default is 2
-
-These options are set local to the window.  When editing another file they are
-reset to the global value.
-The options can still be overruled from a modeline when re-editing the file.
-However, 'foldmethod' and 'wrap' won't be set from a modeline when 'diff' is
-set.
-
-The differences shown are actually the differences in the buffer.  Thus if you
-make changes after loading a file, these will be included in the displayed
-diffs.  You might have to do ":diffupdate" now and then, not all changes are
-immediately taken into account.
-
-In your .vimrc file you could do something special when Vim was started in
-diff mode.  You could use a construct like this: >
-
-	if &diff
-	   setup for diff mode
-	else
-	   setup for non-diff mode
-	endif
-
-While already in Vim you can start diff mode in three ways.
-
-							*E98*
-:diffsplit {filename}					*:diffs* *:diffsplit*
-		Open a new window on the file {filename}.  The options are set
-		as for "vimdiff" for the current and the newly opened window.
-		Also see 'diffexpr'.
-
-							*:difft* *:diffthis*
-:diffthis	Make the current window part of the diff windows.  This sets
-		the options like for "vimdiff".
-
-:diffpatch {patchfile}				 *E816* *:diffp* *:diffpatch*
-		Use the current buffer, patch it with the diff found in
-		{patchfile} and open a buffer on the result.  The options are
-		set as for "vimdiff".
-		{patchfile} can be in any format that the "patch" program
-		understands or 'patchexpr' can handle.
-		Note that {patchfile} should only contain a diff for one file,
-		the current file.  If {patchfile} contains diffs for other
-		files as well, the results are unpredictable.  Vim changes
-		directory to /tmp to avoid files in the current directory
-		accidentally being patched.  But it may still result in
-		various ".rej" files to be created.  And when absolute path
-		names are present these files may get patched anyway.
-
-To make these commands use a vertical split, prepend |:vertical|.  Examples: >
-
-	:vert diffsplit main.c~
-	:vert diffpatch /tmp/diff
-
-If you always prefer a vertical split include "vertical" in 'diffopt'.
-
-							*E96*
-There can be up to four buffers with 'diff' set.
-
-Since the option values are remembered with the buffer, you can edit another
-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 the current window and in all windows
-		in the current tab page where 'diff' is set.
-
-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,
-the old values are not remembered.
-
-	'diff'		off
-	'scrollbind'	off
-	'cursorbind'	off
-	'scrollopt'	without "hor"
-	'wrap'		on
-	'foldmethod'	"manual"
-	'foldcolumn'	0
-
-==============================================================================
-2. Viewing diffs						*view-diffs*
-
-The effect is that the diff windows show the same text, with the differences
-highlighted.  When scrolling the text, the 'scrollbind' option will make the
-text in other windows to be scrolled as well.  With vertical splits the text
-should be aligned properly.
-
-The alignment of text will go wrong when:
-- 'wrap' is on, some lines will be wrapped and occupy two or more screen
-  lines
-- folds are open in one window but not another
-- 'scrollbind' is off
-- changes have been made to the text
-- "filler" is not present in 'diffopt', deleted/inserted lines makes the
-  alignment go wrong
-
-All the buffers edited in a window where the 'diff' option is set will join in
-the diff.  This is also possible for hidden buffers.  They must have been
-edited in a window first for this to be possible.
-
-					*:DiffOrig* *diff-original-file*
-Since 'diff' is a window-local option, it's possible to view the same buffer
-in diff mode in one window and "normal" in another window.  It is also
-possible to view the changes you have made to a buffer since the file was
-loaded.  Since Vim doesn't allow having two buffers for the same file, you
-need another buffer.  This command is useful: >
-	 command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
-	 	\ | wincmd p | diffthis
-(this is in |vimrc_example.vim|).  Use ":DiffOrig" to see the differences
-between the current buffer and the file it was loaded from.
-
-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.  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.
-To force the differences to be updated use: >
-
-	:diffupdate
-
-
-Vim will show filler lines for lines that are missing in one window but are
-present in another.  These lines were inserted in another file or deleted in
-this file.  Removing "filler" from the 'diffopt' option will make Vim not
-display these filler lines.
-
-
-Folds are used to hide the text that wasn't changed.  See |folding| for all
-the commands that can be used with folds.
-
-The context of lines above a difference that are not included in the fold can
-be set with the 'diffopt' option.  For example, to set the context to three
-lines: >
-
-	:set diffopt=filler,context:3
-
-
-The diffs are highlighted with these groups:
-
-|hl-DiffAdd|	DiffAdd		Added (inserted) lines.  These lines exist in
-				this buffer but not in another.
-|hl-DiffChange|	DiffChange	Changed lines.
-|hl-DiffText|	DiffText	Changed text inside a Changed line.  Vim
-				finds the first character that is different,
-				and the last character that is different
-				(searching from the end of the line).  The
-				text in between is highlighted.  This means
-				that parts in the middle that are still the
-				same are highlighted anyway.  Only "iwhite" of
-				'diffopt' is used here.
-|hl-DiffDelete| DiffDelete	Deleted lines.  Also called filler lines,
-				because they don't really exist in this
-				buffer.
-
-==============================================================================
-3. Jumping to diffs					*jumpto-diffs*
-
-Two commands can be used to jump to diffs:
-								*[c*
-	[c		Jump backwards to the previous start of a change.
-			When a count is used, do it that many times.
-								*]c*
-	]c		Jump forwards to the next start of a change.
-			When a count is used, do it that many times.
-
-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.
-
-							*:diffg* *:diffget*
-:[range]diffg[et] [bufspec]
-		Modify the current buffer to undo difference with another
-		buffer.  If [bufspec] is given, that buffer is used.  If
-		[bufspec] refers to the current buffer then nothing happens.
-		Otherwise this only works if there is one other buffer in diff
-		mode.
-		See below for [range].
-
-						*:diffpu* *:diffput* *E793*
-:[range]diffpu[t] [bufspec]
-		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*
-do		Same as ":diffget" without argument or range.  The "o" stands
-		for "obtain" ("dg" can't be used, it could be the start of
-		"dgg"!).
-
-							*dp*
-dp		Same as ":diffput" without argument or range.
-
-When no [range] is given, the diff at the cursor position or just above it is
-affected.  When [range] is used, Vim tries to only put or get the specified
-lines.  When there are deleted lines, this may not always be possible.
-
-There can be deleted lines below the last line of the buffer.  When the cursor
-is on the last line in the buffer and there is no diff above this line, the
-":diffget" and "do" commands will obtain lines from the other buffer.
-
-To be able to get those lines from another buffer in a [range] it's allowed to
-use the last line number plus one.  This command gets all diffs from the other
-buffer: >
-
-	:1,$+1diffget
-
-Note that deleted lines are displayed, but not counted as text lines.  You
-can't move the cursor into them.  To fill the deleted lines with the lines
-from another buffer use ":diffget" on the line below them.
-								*E787*
-When the buffer that is about to be modified is read-only and the autocommand
-that is triggered by |FileChangedRO| changes buffers the command will fail.
-The autocommand must not change buffers.
-
-The [bufspec] argument above can be a buffer number, a pattern for a buffer
-name or a part of a buffer name.  Examples:
-
-	:diffget		Use the other buffer which is in diff mode
-	:diffget 3		Use buffer 3
-	:diffget v2		Use the buffer which matches "v2" and is in
-				diff mode (e.g., "file.c.v2")
-
-==============================================================================
-5. Diff options						*diff-options*
-
-Also see |'diffopt'| and the "diff" item of |'fillchars'|.
-
-
-FINDING THE DIFFERENCES					*diff-diffexpr*
-
-The 'diffexpr' option can be set to use something else than the standard
-"diff" program to compare two files and find the differences.
-
-When 'diffexpr' is empty, Vim uses this command to find the differences
-between file1 and file2: >
-
-	diff file1 file2 > outfile
-
-The ">" is replaced with the value of 'shellredir'.
-
-The output of "diff" must be a normal "ed" style diff.  Do NOT use a context
-diff.  This example explains the format that Vim expects: >
-
-	1a2
-	> bbb
-	4d4
-	< 111
-	7c7
-	< GGG
-	---
-	> ggg
-
-The "1a2" item appends the line "bbb".
-The "4d4" item deletes the line "111".
-The '7c7" item replaces the line "GGG" with "ggg".
-
-When 'diffexpr' is not empty, Vim evaluates it to obtain a diff file in the
-format mentioned.  These variables are set to the file names used:
-
-	v:fname_in		original file
-	v:fname_new		new version of the same file
-	v:fname_out		resulting diff file
-
-Additionally, 'diffexpr' should take care of "icase" and "iwhite" in the
-'diffopt' option.  'diffexpr' cannot change the value of 'lines' and
-'columns'.
-
-Example (this does almost the same as 'diffexpr' being empty): >
-
-	set diffexpr=MyDiff()
-	function MyDiff()
-	   let opt = ""
-	   if &diffopt =~ "icase"
-	     let opt = opt . "-i "
-	   endif
-	   if &diffopt =~ "iwhite"
-	     let opt = opt . "-b "
-	   endif
-	   silent execute "!diff -a --binary " . opt . v:fname_in . " " . v:fname_new .
-		\  " > " . v:fname_out
-	endfunction
-
-The "-a" argument is used to force comparing the files as text, comparing as
-binaries isn't useful.  The "--binary" argument makes the files read in binary
-mode, so that a CTRL-Z doesn't end the text on DOS.
-
-						*E810* *E97*
-Vim will do a test if the diff output looks alright.  If it doesn't, you will
-get an error message.  Possible causes:
--  The "diff" program cannot be executed.
--  The "diff" program doesn't produce normal "ed" style diffs (see above).
--  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 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*
-
-The 'patchexpr' option can be set to use something else than the standard
-"patch" program.
-
-When 'patchexpr' is empty, Vim will call the "patch" program like this: >
-
-	patch -o outfile origfile < patchfile
-
-This should work fine with most versions of the "patch" program.  Note that a
-CR in the middle of a line may cause problems, it is seen as a line break.
-
-If the default doesn't work for you, set the 'patchexpr' to an expression that
-will have the same effect.  These variables are set to the file names used:
-
-	v:fname_in		original file
-	v:fname_diff		patch file
-	v:fname_out		resulting patched file
-
-Example (this does the same as 'patchexpr' being empty): >
-
-	set patchexpr=MyPatch()
-	function MyPatch()
-	   :call system("patch -o " . v:fname_out . " " . v:fname_in .
-	   \  " < " . v:fname_diff)
-	endfunction
-
-Make sure that using the "patch" program doesn't have unwanted side effects.
-For example, watch out for additionally generated files, which should be
-deleted.  It should just patch the file and nothing else.
-   Vim will change directory to "/tmp" or another temp directory before
-evaluating 'patchexpr'.  This hopefully avoids that files in the current
-directory are accidentally patched.  Vim will also delete files starting with
-v:fname_in and ending in ".rej" and ".orig".
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/digraph.txt b/share/vim/vim73/doc/digraph.txt
deleted file mode 100644
index 9faeceeb..00000000
--- a/share/vim/vim73/doc/digraph.txt
+++ /dev/null
@@ -1,350 +0,0 @@
-*digraph.txt*   For Vim version 7.3.  Last change: 2010 Apr 11
-
-
-		  VIM REFERENCE MANUAL    by Bram Moolenaar
-
-
-Digraphs					*digraph* *digraphs* *Digraphs*
-
-Digraphs are used to enter characters that normally cannot be entered by
-an ordinary keyboard.  These are mostly printable non-ASCII characters.  The
-digraphs are easier to remember than the decimal number that can be entered
-with CTRL-V (see |i_CTRL-V|).
-
-There is a brief introduction on digraphs in the user manual: |24.9|
-An alternative is using the 'keymap' option.
-
-1. Defining digraphs	|digraphs-define|
-2. Using digraphs	|digraphs-use|
-3. Default digraphs	|digraphs-default|
-
-{Vi does not have any of these commands}
-
-==============================================================================
-1. Defining digraphs					*digraphs-define*
-
-						*:dig* *:digraphs*
-:dig[raphs]		show currently defined digraphs.
-							*E104* *E39*
-:dig[raphs] {char1}{char2} {number} ...
-			Add digraph {char1}{char2} to the list.  {number} is
-			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
-			first character, it has a special meaning in the
-			future.
-
-Vim is normally compiled with the |+digraphs| feature.  If the feature is
-disabled, the ":digraph" command will display an error message.
-
-Example of the output of ":digraphs": >
- TH Þ  222  ss ß  223  a! à  224  a' á  225  a> â  226  a? ã  227  a: ä  228
-
-The first two characters in each column are the characters you have to type to
-enter the digraph.
-
-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.
-
-							*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.  For the NUL character you will see
-"10".  That's because NUL characters are internally represented with a NL
-character.  When you write the file it will become a NUL character.
-
-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*
-
-There are two methods to enter digraphs:			*i_digraph*
-	CTRL-K {char1} {char2}		or
-	{char1}  {char2}
-The first is always available; the second only when the 'digraph' option is
-set.
-
-If a digraph with {char1}{char2} does not exist, Vim searches for a digraph
-{char2}{char1}.  This helps when you don't remember which character comes
-first.
-
-Note that when you enter CTRL-K {char1}, where {char1} is a special key, Vim
-enters the code for that special key.  This is not a digraph.
-
-Once you have entered the digraph, Vim treats the character like a normal
-character that occupies only one character in the file and on the screen.
-Example: >
-	'B'  'B'	will enter the broken '|' character (166)
-	'a'  '>'	will enter an 'a' with a circumflex (226)
-	CTRL-K '-' '-'	will enter a soft hyphen (173)
-
-The current digraphs are listed with the ":digraphs" command.  Some of the
-default ones are listed below |digraph-table|.
-
-For CTRL-K, there is one general digraph: CTRL-K  {char} will enter
-{char} with the highest bit set.  You can use this to enter meta-characters.
-
-The  character cannot be part of a digraph.  When hitting , Vim
-stops digraph entry and ends Insert mode or Command-line mode, just like
-hitting an  out of digraph context.  Use CTRL-V 155 to enter meta-ESC
-(CSI).
-
-If you accidentally typed an 'a' that should be an 'e', you will type 'a' 
-'e'.  But that is a digraph, so you will not get what you want.  To correct
-this, you will have to type  e again.  To avoid this don't set the
-'digraph' option and use CTRL-K to enter digraphs.
-
-You may have problems using Vim with characters which have a value above 128.
-For example: You insert ue (u-umlaut) and the editor echoes \334 in Insert
-mode.  After leaving the Insert mode everything is fine.  Note that fmt
-removes all characters with a value above 128 from the text being formatted.
-On some Unix systems this means you have to define the environment-variable
-LC_CTYPE.  If you are using csh, then put the following line in your .cshrc: >
-	setenv LC_CTYPE iso_8859_1
-
-==============================================================================
-3. Default digraphs					*digraphs-default*
-
-Vim comes with a set of default digraphs.  Check the output of ":digraphs" to
-see them.
-
-On most systems Vim uses the same digraphs.  They work for the Unicode and
-ISO-8859-1 character sets.  These default digraphs are taken from the RFC1345
-mnemonics.  To make it easy to remember the mnemonic, the second character has
-a standard meaning:
-
-	char name		char	meaning ~
-	Exclamation mark	!	Grave
-	Apostrophe		'	Acute accent
-	Greater-Than sign	>	Circumflex accent
-	Question mark		?	Tilde
-	Hyphen-Minus		-	Macron
-	Left parenthesis	(	Breve
-	Full stop		.	Dot above
-	Colon			:	Diaeresis
-	Comma			,	Cedilla
-	Underline		_	Underline
-	Solidus			/	Stroke
-	Quotation mark		"	Double acute accent
-	Semicolon		;	Ogonek
-	Less-Than sign		<	Caron
-	Zero			0	Ring above
-	Two			2	Hook
-	Nine			9	Horn
-
-	Equals			=	Cyrillic
-	Asterisk		*	Greek
-	Percent sign		%	Greek/Cyrillic special
-	Plus			+	smalls: Arabic, capitals: Hebrew
-	Three			3	some Latin/Greek/Cyrillic letters
-	Four			4	Bopomofo
-	Five			5	Hiragana
-	Six			6	Katakana
-
-Example: a: is ä  and o: 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)
-^A	SH	0x01	  1	START OF HEADING (SOH)
-^B	SX	0x02	  2	START OF TEXT (STX)
-^C	EX	0x03	  3	END OF TEXT (ETX)
-^D	ET	0x04	  4	END OF TRANSMISSION (EOT)
-^E	EQ	0x05	  5	ENQUIRY (ENQ)
-^F	AK	0x06	  6	ACKNOWLEDGE (ACK)
-^G	BL	0x07	  7	BELL (BEL)
-^H	BS	0x08	  8	BACKSPACE (BS)
-^I	HT	0x09	  9	CHARACTER TABULATION (HT)
-^@	LF	0x0a	 10	LINE FEED (LF)
-^K	VT	0x0b	 11	LINE TABULATION (VT)
-^L	FF	0x0c	 12	FORM FEED (FF)
-^M	CR	0x0d	 13	CARRIAGE RETURN (CR)
-^N	SO	0x0e	 14	SHIFT OUT (SO)
-^O	SI	0x0f	 15	SHIFT IN (SI)
-^P	DL	0x10	 16	DATALINK ESCAPE (DLE)
-^Q	D1	0x11	 17	DEVICE CONTROL ONE (DC1)
-^R	D2	0x12	 18	DEVICE CONTROL TWO (DC2)
-^S	D3	0x13	 19	DEVICE CONTROL THREE (DC3)
-^T	D4	0x14	 20	DEVICE CONTROL FOUR (DC4)
-^U	NK	0x15	 21	NEGATIVE ACKNOWLEDGE (NAK)
-^V	SY	0x16	 22	SYNCHRONOUS IDLE (SYN)
-^W	EB	0x17	 23	END OF TRANSMISSION BLOCK (ETB)
-^X	CN	0x18	 24	CANCEL (CAN)
-^Y	EM	0x19	 25	END OF MEDIUM (EM)
-^Z	SB	0x1a	 26	SUBSTITUTE (SUB)
-^[	EC	0x1b	 27	ESCAPE (ESC)
-^\	FS	0x1c	 28	FILE SEPARATOR (IS4)
-^]	GS	0x1d	 29	GROUP SEPARATOR (IS3)
-^^	RS	0x1e	 30	RECORD SEPARATOR (IS2)
-^_	US	0x1f	 31	UNIT SEPARATOR (IS1)
-	SP	0x20	 32	SPACE
-#	Nb	0x23	 35	NUMBER SIGN
-$	DO	0x24	 36	DOLLAR SIGN
-@	At	0x40	 64	COMMERCIAL AT
-[	<(	0x5b	 91	LEFT SQUARE BRACKET
-\	//	0x5c	 92	REVERSE SOLIDUS
-]	)>	0x5d	 93	RIGHT SQUARE BRACKET
-^	'>	0x5e	 94	CIRCUMFLEX ACCENT
-`	'!	0x60	 96	GRAVE ACCENT
-{	(!	0x7b	123	LEFT CURLY BRACKET
-|	!!	0x7c	124	VERTICAL LINE
-}	!)	0x7d	125	RIGHT CURLY BRACKET
-~	'?	0x7e	126	TILDE
-^?	DT	0x7f	127	DELETE (DEL)
-~@	PA	0x80	128	PADDING CHARACTER (PAD)
-~A	HO	0x81	129	HIGH OCTET PRESET (HOP)
-~B	BH	0x82	130	BREAK PERMITTED HERE (BPH)
-~C	NH	0x83	131	NO BREAK HERE (NBH)
-~D	IN	0x84	132	INDEX (IND)
-~E	NL	0x85	133	NEXT LINE (NEL)
-~F	SA	0x86	134	START OF SELECTED AREA (SSA)
-~G	ES	0x87	135	END OF SELECTED AREA (ESA)
-~H	HS	0x88	136	CHARACTER TABULATION SET (HTS)
-~I	HJ	0x89	137	CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
-~J	VS	0x8a	138	LINE TABULATION SET (VTS)
-~K	PD	0x8b	139	PARTIAL LINE FORWARD (PLD)
-~L	PU	0x8c	140	PARTIAL LINE BACKWARD (PLU)
-~M	RI	0x8d	141	REVERSE LINE FEED (RI)
-~N	S2	0x8e	142	SINGLE-SHIFT TWO (SS2)
-~O	S3	0x8f	143	SINGLE-SHIFT THREE (SS3)
-~P	DC	0x90	144	DEVICE CONTROL STRING (DCS)
-~Q	P1	0x91	145	PRIVATE USE ONE (PU1)
-~R	P2	0x92	146	PRIVATE USE TWO (PU2)
-~S	TS	0x93	147	SET TRANSMIT STATE (STS)
-~T	CC	0x94	148	CANCEL CHARACTER (CCH)
-~U	MW	0x95	149	MESSAGE WAITING (MW)
-~V	SG	0x96	150	START OF GUARDED AREA (SPA)
-~W	EG	0x97	151	END OF GUARDED AREA (EPA)
-~X	SS	0x98	152	START OF STRING (SOS)
-~Y	GC	0x99	153	SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
-~Z	SC	0x9a	154	SINGLE CHARACTER INTRODUCER (SCI)
-~[	CI	0x9b	155	CONTROL SEQUENCE INTRODUCER (CSI)
-~\	ST	0x9c	156	STRING TERMINATOR (ST)
-~]	OC	0x9d	157	OPERATING SYSTEM COMMAND (OSC)
-~^	PM	0x9e	158	PRIVACY MESSAGE (PM)
-~_	AC	0x9f	159	APPLICATION PROGRAM COMMAND (APC)
-|	NS	0xa0	160	NO-BREAK SPACE
-¡	!I	0xa1	161	INVERTED EXCLAMATION MARK
-¢	Ct	0xa2	162	CENT SIGN
-£	Pd	0xa3	163	POUND SIGN
-¤	Cu	0xa4	164	CURRENCY SIGN
-¥	Ye	0xa5	165	YEN SIGN
-¦	BB	0xa6	166	BROKEN BAR
-§	SE	0xa7	167	SECTION SIGN
-¨	':	0xa8	168	DIAERESIS
-©	Co	0xa9	169	COPYRIGHT SIGN
-ª	-a	0xaa	170	FEMININE ORDINAL INDICATOR
-«	<<	0xab	171	LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-¬	NO	0xac	172	NOT SIGN
-­	--	0xad	173	SOFT HYPHEN
-®	Rg	0xae	174	REGISTERED SIGN
-¯	'm	0xaf	175	MACRON
-°	DG	0xb0	176	DEGREE SIGN
-±	+-	0xb1	177	PLUS-MINUS SIGN
-²	2S	0xb2	178	SUPERSCRIPT TWO
-³	3S	0xb3	179	SUPERSCRIPT THREE
-´	''	0xb4	180	ACUTE ACCENT
-µ	My	0xb5	181	MICRO SIGN
-¶	PI	0xb6	182	PILCROW SIGN
-·	.M	0xb7	183	MIDDLE DOT
-¸	',	0xb8	184	CEDILLA
-¹	1S	0xb9	185	SUPERSCRIPT ONE
-º	-o	0xba	186	MASCULINE ORDINAL INDICATOR
-»	>>	0xbb	187	RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-¼	14	0xbc	188	VULGAR FRACTION ONE QUARTER
-½	12	0xbd	189	VULGAR FRACTION ONE HALF
-¾	34	0xbe	190	VULGAR FRACTION THREE QUARTERS
-¿	?I	0xbf	191	INVERTED QUESTION MARK
-À	A!	0xc0	192	LATIN CAPITAL LETTER A WITH GRAVE
-Á	A'	0xc1	193	LATIN CAPITAL LETTER A WITH ACUTE
-Â	A>	0xc2	194	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-Ã	A?	0xc3	195	LATIN CAPITAL LETTER A WITH TILDE
-Ä	A:	0xc4	196	LATIN CAPITAL LETTER A WITH DIAERESIS
-Å	AA	0xc5	197	LATIN CAPITAL LETTER A WITH RING ABOVE
-Æ	AE	0xc6	198	LATIN CAPITAL LETTER AE
-Ç	C,	0xc7	199	LATIN CAPITAL LETTER C WITH CEDILLA
-È	E!	0xc8	200	LATIN CAPITAL LETTER E WITH GRAVE
-É	E'	0xc9	201	LATIN CAPITAL LETTER E WITH ACUTE
-Ê	E>	0xca	202	LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-Ë	E:	0xcb	203	LATIN CAPITAL LETTER E WITH DIAERESIS
-Ì	I!	0xcc	204	LATIN CAPITAL LETTER I WITH GRAVE
-Í	I'	0xcd	205	LATIN CAPITAL LETTER I WITH ACUTE
-Î	I>	0xce	206	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-Ï	I:	0xcf	207	LATIN CAPITAL LETTER I WITH DIAERESIS
-Ð	D-	0xd0	208	LATIN CAPITAL LETTER ETH (Icelandic)
-Ñ	N?	0xd1	209	LATIN CAPITAL LETTER N WITH TILDE
-Ò	O!	0xd2	210	LATIN CAPITAL LETTER O WITH GRAVE
-Ó	O'	0xd3	211	LATIN CAPITAL LETTER O WITH ACUTE
-Ô	O>	0xd4	212	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-Õ	O?	0xd5	213	LATIN CAPITAL LETTER O WITH TILDE
-Ö	O:	0xd6	214	LATIN CAPITAL LETTER O WITH DIAERESIS
-×	*X	0xd7	215	MULTIPLICATION SIGN
-Ø	O/	0xd8	216	LATIN CAPITAL LETTER O WITH STROKE
-Ù	U!	0xd9	217	LATIN CAPITAL LETTER U WITH GRAVE
-Ú	U'	0xda	218	LATIN CAPITAL LETTER U WITH ACUTE
-Û	U>	0xdb	219	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-Ü	U:	0xdc	220	LATIN CAPITAL LETTER U WITH DIAERESIS
-Ý	Y'	0xdd	221	LATIN CAPITAL LETTER Y WITH ACUTE
-Þ	TH	0xde	222	LATIN CAPITAL LETTER THORN (Icelandic)
-ß	ss	0xdf	223	LATIN SMALL LETTER SHARP S (German)
-à	a!	0xe0	224	LATIN SMALL LETTER A WITH GRAVE
-á	a'	0xe1	225	LATIN SMALL LETTER A WITH ACUTE
-â	a>	0xe2	226	LATIN SMALL LETTER A WITH CIRCUMFLEX
-ã	a?	0xe3	227	LATIN SMALL LETTER A WITH TILDE
-ä	a:	0xe4	228	LATIN SMALL LETTER A WITH DIAERESIS
-å	aa	0xe5	229	LATIN SMALL LETTER A WITH RING ABOVE
-æ	ae	0xe6	230	LATIN SMALL LETTER AE
-ç	c,	0xe7	231	LATIN SMALL LETTER C WITH CEDILLA
-è	e!	0xe8	232	LATIN SMALL LETTER E WITH GRAVE
-é	e'	0xe9	233	LATIN SMALL LETTER E WITH ACUTE
-ê	e>	0xea	234	LATIN SMALL LETTER E WITH CIRCUMFLEX
-ë	e:	0xeb	235	LATIN SMALL LETTER E WITH DIAERESIS
-ì	i!	0xec	236	LATIN SMALL LETTER I WITH GRAVE
-í	i'	0xed	237	LATIN SMALL LETTER I WITH ACUTE
-î	i>	0xee	238	LATIN SMALL LETTER I WITH CIRCUMFLEX
-ï	i:	0xef	239	LATIN SMALL LETTER I WITH DIAERESIS
-ð	d-	0xf0	240	LATIN SMALL LETTER ETH (Icelandic)
-ñ	n?	0xf1	241	LATIN SMALL LETTER N WITH TILDE
-ò	o!	0xf2	242	LATIN SMALL LETTER O WITH GRAVE
-ó	o'	0xf3	243	LATIN SMALL LETTER O WITH ACUTE
-ô	o>	0xf4	244	LATIN SMALL LETTER O WITH CIRCUMFLEX
-õ	o?	0xf5	245	LATIN SMALL LETTER O WITH TILDE
-ö	o:	0xf6	246	LATIN SMALL LETTER O WITH DIAERESIS
-÷	-:	0xf7	247	DIVISION SIGN
-ø	o/	0xf8	248	LATIN SMALL LETTER O WITH STROKE
-ù	u!	0xf9	249	LATIN SMALL LETTER U WITH GRAVE
-ú	u'	0xfa	250	LATIN SMALL LETTER U WITH ACUTE
-û	u>	0xfb	251	LATIN SMALL LETTER U WITH CIRCUMFLEX
-ü	u:	0xfc	252	LATIN SMALL LETTER U WITH DIAERESIS
-ý	y'	0xfd	253	LATIN SMALL LETTER Y WITH ACUTE
-þ	th	0xfe	254	LATIN SMALL LETTER THORN (Icelandic)
-ÿ	y:	0xff	255	LATIN SMALL LETTER Y WITH DIAERESIS
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/editing.txt b/share/vim/vim73/doc/editing.txt
deleted file mode 100644
index 84800aa7..00000000
--- a/share/vim/vim73/doc/editing.txt
+++ /dev/null
@@ -1,1634 +0,0 @@
-*editing.txt*   For Vim version 7.3.  Last change: 2010 Jul 28
-
-
-		  VIM REFERENCE MANUAL    by Bram Moolenaar
-
-
-Editing files						*edit-files*
-
-1.  Introduction		|edit-intro|
-2.  Editing a file		|edit-a-file|
-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 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".  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.  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, 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.
-
-{count}CTRL-G		Like CTRL-G, but prints the current file name with
-			full path.  If the count is higher than 1 the current
-			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 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 ( 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, 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}
-
-:buffers
-:files
-:ls			List all the currently known file names.  See
-			'windows.txt' |:files| |:buffers| |:ls|.  {not in
-			Vi}
-
-Vim will remember the full path name of a file name that you enter.  In most
-cases when the file name is displayed only the name you typed is shown, but
-the full path name is being used if you used the ":cd" command |:cd|.
-
-							*home-replace*
-If the environment variable $HOME is set, and the file name starts with that
-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
-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
-overwritten.  If you do not want this, the buffer can be written into another
-file by giving a file name argument to the ":write" command.  For example: >
-
-	vim testfile
-	[change the buffer with editor commands]
-	:w newfile
-	:q
-
-This will create a file "newfile", that is a modified copy of "testfile".
-The file "testfile" will remain unchanged.  Anyway, if the 'backup' option is
-set, Vim renames or copies the original file before it will be overwritten.
-You can use this file if you discover that you need the original file.  See
-also the 'patchmode' option.  The name of the backup file is normally the same
-as the original file with 'backupext' appended.  The default "~" is a bit
-strange to avoid accidentally overwriting existing files.  If you prefer ".bak"
-change the 'backupext' option.  Extra dots are replaced with '_' on MS-DOS
-machines, when Vim has detected that an MS-DOS-like filesystem is being used
-(e.g., messydos or crossdos) or when the 'shortname' option is on.  The
-backup file can be placed in another directory by setting 'backupdir'.
-
-							*auto-shortname*
-Technical: On the Amiga you can use 30 characters for a file name.  But on an
-	   MS-DOS-compatible filesystem only 8 plus 3 characters are
-	   available.  Vim tries to detect the type of filesystem when it is
-	   creating the .swp file.  If an MS-DOS-like filesystem is suspected,
-	   a flag is set that has the same effect as setting the 'shortname'
-	   option.  This flag will be reset as soon as you start editing a
-	   new file.  The flag will be used when making the file name for the
-	   ".swp" and ".~" files for the current file.  But when you are
-	   editing a file in a normal filesystem and write to an MS-DOS-like
-	   filesystem the flag will not have been set.  In that case the
-	   creation of the ".~" file may fail and you will get an error
-	   message.  Use the 'shortname' option in this case.
-
-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) |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
-"notedited" flag.  You can see if this flag is set with the CTRL-G or ":file"
-command.  It will include "[Not edited]" when the "notedited" flag is set.
-When writing the buffer to the current file name (with ":w!"), the "notedited"
-flag is reset.
-
-							*abandon*
-Vim remembers whether you have changed the buffer.  You are protected from
-losing the changes you made.  If you try to quit without writing, or want to
-start editing another file, Vim will refuse this.  In order to overrule this
-protection, add a '!' to the command.  The changes will then be lost.  For
-example: ":q" will not work if the buffer was changed, but ":q!" will.  To see
-whether the buffer was changed use the "CTRL-G" command.  The message includes
-the string "[Modified]" if the buffer has been changed.
-
-If you want to automatically save the changes without asking, switch on the
-'autowriteall' option.  'autowrite' is the associated Vi-compatible option
-that does not work for all commands.
-
-If you want to keep the changed buffer without saving it, switch on the
-'hidden' option.  See |hidden-buffer|.
-
-==============================================================================
-2. Editing a file					*edit-a-file*
-
-							*:e* *:edit*
-:e[dit] [++opt] [+cmd]	Edit the current file.  This is useful to re-edit the
-			current file, when it has been changed outside of Vim.
-			This fails when changes have been made to the current
-			buffer and 'autowriteall' isn't set or the file can't
-			be written.
-			Also see |++opt| and |+cmd|.
-			{Vi: no ++opt}
-
-							*:edit!*
-:e[dit]! [++opt] [+cmd]
-			Edit the current file always.  Discard any changes to
-			the current buffer.  This is useful if you want to
-			start all over again.
-			Also see |++opt| and |+cmd|.
-			{Vi: no ++opt}
-
-							*:edit_f*
-:e[dit] [++opt] [+cmd] {file}
-			Edit {file}.
-			This fails when changes have been made to the current
-			buffer, unless 'hidden' is set or 'autowriteall' is
-			set and the file can be written.
-			Also see |++opt| and |+cmd|.
-			{Vi: no ++opt}
-
-							*:edit!_f*
-:e[dit]! [++opt] [+cmd] {file}
-			Edit {file} always.  Discard any changes to the
-			current buffer.
-			Also see |++opt| and |+cmd|.
-			{Vi: no ++opt}
-
-:e[dit] [++opt] [+cmd] #[count]
-			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}
-
-							*:ene* *:enew*
-:ene[w]			Edit a new, unnamed buffer.  This fails when changes
-			have been made to the current buffer, unless 'hidden'
-			is set or 'autowriteall' is set and the file can be
-			written.
-			If 'fileformats' is not empty, the first format given
-			will be used for the new buffer.  If 'fileformats' is
-			empty, the 'fileformat' of the current buffer is used.
-			{not in Vi}
-
-							*:ene!* *:enew!*
-:ene[w]!		Edit a new, unnamed buffer.  Discard any changes to
-			the current buffer.
-			Set 'fileformat' like |:enew|.
-			{not in Vi}
-
-							*:fin* *:find*
-:fin[d][!] [++opt] [+cmd] {file}
-			Find {file} in 'path' and then |:edit| it.
-			{not in Vi} {not available when the |+file_in_path|
-			feature was disabled at compile time}
-
-:{count}fin[d][!] [++opt] [+cmd] {file}
-			Just like ":find", but use the {count} match in
-			'path'.  Thus ":2find file" will find the second
-			"file" found in 'path'.  When there are fewer matches
-			for the file in 'path' than asked for, you get an
-			error message.
-
-							*:ex*
-:ex [++opt] [+cmd] [file]
-			Same as |:edit|.
-
-							*:vi* *:visual*
-:vi[sual][!] [++opt] [+cmd] [file]
-			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 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*
-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,
-			pressing CTRL and 6 then gets you what we call CTRL-^.
-			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.
-
-							*gf* *E446* *E447*
-[count]gf		Edit the file whose name is under or after the cursor.
-			Mnemonic: "goto file".
-			Uses the 'isfname' option to find out which characters
-			are supposed to be in a file name.  Trailing
-			punctuation characters ".,:;!" are ignored.
-			Uses the 'path' option as a list of directory names to
-			look for the file.  See the 'path' option for details
-			about relative directories and wildcards.
-			Uses the 'suffixesadd' option to check for file names
-			with a suffix added.
-			If the file can't be found, 'includeexpr' is used to
-			modify the name and another attempt is done.
-			If a [count] is given, the count'th file that is found
-			in the 'path' is edited.
-			This command fails if Vim refuses to |abandon| the
-			current file.
-			If you want to edit the file in a new window use
-			|CTRL-W_CTRL-F|.
-			If you do want to edit a new file, use: >
-				:e 
-<			To make gf always work like that: >
-				:map gf :e 
-<			If the name is a hypertext link, that looks like
-			"type://machine/path", you need the |netrw| plugin.
-			For Unix the '~' character is expanded, like in
-			"~user/file".  Environment variables are expanded too
-			|expand-env|.
-			{not in Vi}
-			{not available when the |+file_in_path| feature was
-			disabled at compile time}
-
-							*v_gf*
-{Visual}[count]gf	Same as "gf", but the highlighted text is used as the
-			name of the file to edit.  'isfname' is ignored.
-			Leading blanks are skipped, otherwise all blanks and
-			special characters are included in the file name.
-			(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|.
-
-See |read-messages| for an explanation of the message that is given after the
-file has been read.
-
-You can use the ":e!" command if you messed up the buffer and want to start
-all over again.  The ":e" command is only useful if you have changed the
-current file name.
-
-							*:filename* *{file}*
-Besides the things mentioned here, more special items for where a filename is
-expected are mentioned at |cmdline-special|.
-
-Note for systems other than Unix: 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 regularly embed
-spaces in file names (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*
-Wildcards in {file} are expanded.  Which wildcards are supported depends on
-the system.  These are the common ones:
-	?	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.
-Note there are some commands where this works slightly different, see
-|file-searching|.
-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 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.
-This also works for most other systems, with the restriction that the
-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.: >
-	:e `=tempname()`
-The expression can contain just about anything, thus this can also be used to
-avoid the special meaning of '"', '|', '%' and '#'.  Names are to be separated
-with line breaks.  When the result is a |List| then each item is used as a
-name.  Line breaks also separate names.
-
-							*++opt* *[++opt]*
-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}
-Or: >
-	++{optname}={value}
-
-Where {optname} is one of:	    *++ff* *++enc* *++bin* *++nobin* *++edit*
-    ff     or  fileformat   overrides 'fileformat'
-    enc    or  encoding	    overrides 'fileencoding'
-    bin    or  binary	    sets 'binary'
-    nobin  or  nobinary	    resets 'binary'
-    bad			    specifies behavior for bad characters
-    edit		    for |:read| only: keep option values as if editing
-			    a file
-
-{value} cannot contain white space.  It can be any valid value for these
-options.  Examples: >
-	:e ++ff=unix
-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.  In some places an inverted question mark is used (0xBF).
-
-Note that not all commands use the ++bad argument, even though they do not
-give an error when you add it.  E.g. |:write|.
-
-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.
-
-
-							*+cmd* *[+cmd]*
-The [+cmd] argument can be used to position the cursor in the newly opened
-file, or execute any other command:
-	+		Start at the last line.
-	+{num}		Start at line {num}.
-	+/{pat}		Start at first line containing {pat}.
-	+{command}	Execute {command} after opening the new file.
-			{command} is any Ex command.
-To include a white space in the {pat} or {command}, precede it with a
-backslash.  Double the number of backslashes. >
-	:edit  +/The\ book	     file
-	:edit  +/dir\ dirname\\      file
-	:edit  +set\ dir=c:\\\\temp  file
-Note that in the last example the number of backslashes is halved twice: Once
-for the "+cmd" argument and once for the ":set" command.
-
-							*file-formats*
-The 'fileformat' option sets the  style for a file:
-'fileformat'    characters	   name				~
-  "dos"		 or    DOS format		*DOS-format*
-  "unix"			   Unix format		*Unix-format*
-  "mac"				   Mac format		*Mac-format*
-Previously 'textmode' was used.  It is obsolete now.
-
-When reading a file, the mentioned characters are interpreted as the .
-In DOS format (default for MS-DOS, OS/2 and Win32),  and  are both
-interpreted as the .  Note that when writing the file in DOS format,
- characters will be added for each single .  Also see |file-read|.
-
-When writing a file, the mentioned characters are used for .  For DOS
-format  is used.  Also see |DOS-format-write|.
-
-You can read a file in DOS format and write it in Unix format.  This will
-replace all  pairs by  (assuming 'fileformats' includes "dos"): >
-	:e file
-	:set fileformat=unix
-	:w
-If you read a file in Unix format and write with DOS format, all 
-characters will be replaced with  (assuming 'fileformats' includes
-"unix"): >
-	:e file
-	:set fileformat=dos
-	:w
-
-If you start editing a new file and the 'fileformats' option is not empty
-(which is the default), Vim will try to detect whether the lines in the file
-are separated by the specified formats.  When set to "unix,dos", Vim will
-check for lines with a single  (as used on Unix and Amiga) or by a 
- pair (MS-DOS).  Only when ALL lines end in , 'fileformat' is set
-to "dos", otherwise it is set to "unix".  When 'fileformats' includes "mac",
-and no  characters are found in the file, 'fileformat' is set to "mac".
-
-If the 'fileformat' option is set to "dos" on non-MS-DOS systems the message
-"[dos format]" is shown to remind you that something unusual is happening.  On
-MS-DOS systems you get the message "[unix format]" if 'fileformat' is set to
-"unix".  On all systems but the Macintosh you get the message "[mac format]"
-if 'fileformat' is set to "mac".
-
-If the 'fileformats' option is empty and DOS format is used, but while reading
-a file some lines did not end in , "[CR missing]" will be included in
-the file message.
-If the 'fileformats' option is empty and Mac format is used, but while reading
-a file a  was found, "[NL missing]" will be included in the file message.
-
-If the new file does not exist, the 'fileformat' of the current buffer is used
-when 'fileformats' is empty.  Otherwise the first format from 'fileformats' is
-used for the new file.
-
-Before editing binary, executable or Vim script files you should set the
-'binary' option.  A simple way to do this is by starting Vim with the "-b"
-option.  This will avoid the use of 'fileformat'.  Without this you risk that
-single  characters are unexpectedly replaced with .
-
-You can encrypt files that are written by setting the 'key' option.  This
-provides some security against others reading your files. |encryption|
-
-
-==============================================================================
-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.  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.
-
-There is one global argument list, which is used for all windows by default.
-It is possible to create a new argument list local to a window, see
-|:arglocal|.
-
-You can use the argument list with the following commands, and with the
-expression functions |argc()| and |argv()|.  These all work on the argument
-list of the current window.
-
-							*:ar* *:args*
-:ar[gs]			Print the argument list, with the current file in
-			square brackets.
-
-:ar[gs] [++opt] [+cmd] {arglist}			*:args_f*
-			Define {arglist} as the new argument list and edit
-			the first one.  This fails when changes have been made
-			and Vim does not want to |abandon| the current buffer.
-			Also see |++opt| and |+cmd|.
-			{Vi: no ++opt}
-
-:ar[gs]! [++opt] [+cmd] {arglist}			*:args_f!*
-			Define {arglist} as the new argument list and edit
-			the first one.  Discard any changes to the current
-			buffer.
-			Also see |++opt| and |+cmd|.
-			{Vi: no ++opt}
-
-:[count]arge[dit][!] [++opt] [+cmd] {name}		*:arge* *:argedit*
-			Add {name} to the argument list and edit it.
-			When {name} already exists in the argument list, this
-			entry is edited.
-			This is like using |:argadd| and then |:edit|.
-			Note that only one file name is allowed, and spaces
-			inside the file name are allowed, like with |:edit|.
-			[count] is used like with |:argadd|.
-			[!] is required if the current file cannot be
-			|abandon|ed.
-			Also see |++opt| and |+cmd|.
-			{not in Vi}
-
-:[count]arga[dd] {name} ..			*:arga* *:argadd* *E479*
-			Add the {name}s to the argument list.
-			If [count] is omitted, the {name}s are added just
-			after the current entry in the argument list.
-			Otherwise they are added after the [count]'th file.
-			If the argument list is "a b c", and "b" is the
-			current argument, then these commands result in:
-				command		new argument list ~
-				:argadd x	a b x c
-				:0argadd x	x a b c
-				:1argadd x	a x b c
-				:99argadd x	a b c x
-			There is no check for duplicates, it is possible to
-			add a file to the argument list twice.
-			The currently edited file is not changed.
-			{not in Vi} {not available when compiled without the
-			|+listcmds| feature}
-			Note: you can also use this method: >
-				:args ## x
-<			This will add the "x" item and sort the new list.
-
-:argd[elete] {pattern} ..			*:argd* *:argdelete* *E480*
-			Delete files from the argument list that match the
-			{pattern}s.  {pattern} is used like a file pattern,
-			see |file-pattern|.  "%" can be used to delete the
-			current entry.
-			This command keeps the currently edited file, also
-			when it's deleted from the argument list.
-			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.
-			When the last number in the range is too high, up to
-			the last argument is deleted.  Example: >
-				:10,1000argdel
-<			Deletes arguments 10 and further, keeping 1-9.
-			{not in Vi} {not available when compiled without the
-			|+listcmds| feature}
-
-							*:argu* *:argument*
-:[count]argu[ment] [count] [++opt] [+cmd]
-			Edit file [count] in the argument list.  When [count]
-			is omitted the current entry is used.  This fails
-			when changes have been made and Vim does not want to
-			|abandon| the current buffer.
-			Also see |++opt| and |+cmd|.
-			{not in Vi} {not available when compiled without the
-			|+listcmds| feature}
-
-:[count]argu[ment]! [count] [++opt] [+cmd]
-			Edit file [count] in the argument list, discard any
-			changes to the current buffer.  When [count] is
-			omitted the current entry is used.
-			Also see |++opt| and |+cmd|.
-			{not in Vi} {not available when compiled without the
-			|+listcmds| feature}
-
-:[count]n[ext] [++opt] [+cmd]			*:n* *:ne* *:next* *E165* *E163*
-			Edit [count] next file.  This fails when changes have
-			been made and Vim does not want to |abandon| the
-			current buffer.  Also see |++opt| and |+cmd|.  {Vi: no
-			count or ++opt}.
-
-:[count]n[ext]! [++opt] [+cmd]
-			Edit [count] next file, discard any changes to the
-			buffer.  Also see |++opt| and |+cmd|.  {Vi: no count
-			or ++opt}.
-
-:n[ext] [++opt] [+cmd] {arglist}			*:next_f*
-			Same as |:args_f|.
-
-:n[ext]! [++opt] [+cmd] {arglist}
-			Same as |:args_f!|.
-
-:[count]N[ext] [count] [++opt] [+cmd]			*:Next* *:N* *E164*
-			Edit [count] previous file in argument list.  This
-			fails when changes have been made and Vim does not
-			want to |abandon| the current buffer.
-			Also see |++opt| and |+cmd|.  {Vi: no count or ++opt}.
-
-:[count]N[ext]! [count] [++opt] [+cmd]
-			Edit [count] previous file in argument list.  Discard
-			any changes to the buffer.  Also see |++opt| and
-			|+cmd|.  {Vi: no count or ++opt}.
-
-:[count]prev[ious] [count] [++opt] [+cmd]		*:prev* *:previous*
-			Same as :Next.  Also see |++opt| and |+cmd|.  {Vi:
-			only in some versions}
-
-							*:rew* *:rewind*
-:rew[ind] [++opt] [+cmd]
-			Start editing the first file in the argument list.
-			This fails when changes have been made and Vim does
-			not want to |abandon| the current buffer.
-			Also see |++opt| and |+cmd|. {Vi: no ++opt}
-
-:rew[ind]! [++opt] [+cmd]
-			Start editing the first file in the argument list.
-			Discard any changes to the buffer.  Also see |++opt|
-			and |+cmd|. {Vi: no ++opt}
-
-							*:fir* *:first*
-:fir[st][!] [++opt] [+cmd]
-			Other name for ":rewind". {not in Vi}
-
-							*:la* *:last*
-:la[st] [++opt] [+cmd]
-			Start editing the last file in the argument list.
-			This fails when changes have been made and Vim does
-			not want to |abandon| the current buffer.
-			Also see |++opt| and |+cmd|.  {not in Vi}
-
-:la[st]! [++opt] [+cmd]
-			Start editing the last file in the argument list.
-			Discard any changes to the buffer.  Also see |++opt|
-			and |+cmd|.  {not in Vi}
-
-							*:wn* *:wnext*
-:[count]wn[ext] [++opt]
-			Write current file and start editing the [count]
-			next file.  Also see |++opt| and |+cmd|.  {not in Vi}
-
-:[count]wn[ext] [++opt] {file}
-			Write current file to {file} and start editing the
-			[count] next file, unless {file} already exists and
-			the 'writeany' option is off.  Also see |++opt| and
-			|+cmd|.  {not in Vi}
-
-:[count]wn[ext]! [++opt] {file}
-			Write current file to {file} and start editing the
-			[count] next file.  Also see |++opt| and |+cmd|.  {not
-			in Vi}
-
-:[count]wN[ext][!] [++opt] [file]		*:wN* *:wNext*
-:[count]wp[revious][!] [++opt] [file]		*:wp* *:wprevious*
-			Same as :wnext, but go to previous file instead of
-			next.  {not in Vi}
-
-The [count] in the commands above defaults to one.  For some commands it is
-possible to use two counts.  The last one (rightmost one) is used.
-
-If no [+cmd] argument is present, the cursor is positioned at the last known
-cursor position for the file.  If 'startofline' is set, the cursor will be
-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.
-
-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.
-
-							*arglist-position*
-When there is an argument list you can see which file you are editing in the
-title of the window (if there is one and 'title' is on) and with the file
-message you get with the "CTRL-G" command.  You will see something like
-	(file 4 of 11)
-If 'shortmess' contains 'f' it will be
-	(4 of 11)
-If you are not really editing the file at the current position in the argument
-list it will be
-	(file (4) of 11)
-This means that you are position 4 in the argument list, but not editing the
-fourth file in the argument list.  This happens when you do ":e file".
-
-
-LOCAL ARGUMENT LIST
-
-{not in Vi}
-{not available when compiled without the |+windows| or |+listcmds| features}
-
-							*:arglocal*
-:argl[ocal]		Make a local copy of the global argument list.
-			Doesn't start editing another file.
-
-:argl[ocal][!] [++opt] [+cmd] {arglist}
-			Define a new argument list, which is local to the
-			current window.  Works like |:args_f| otherwise.
-
-							*:argglobal*
-:argg[lobal]		Use the global argument list for the current window.
-			Doesn't start editing another file.
-
-:argg[lobal][!] [++opt] [+cmd] {arglist}
-			Use the global argument list for the current window.
-			Define a new global argument list like |:args_f|.
-			All windows using the global argument list will see
-			this new list.
-
-There can be several argument lists.  They can be shared between windows.
-When they are shared, changing the argument list in one window will also
-change it in the other window.
-
-When a window is split the new window inherits the argument list from the
-current window.  The two windows then share this list, until one of them uses
-|:arglocal| or |:argglobal| to use another argument list.
-
-
-USING THE ARGUMENT LIST
-
-						*:argdo*
-:argdo[!] {cmd}		Execute {cmd} for each file in the argument list.
-			It works like doing this: >
-				:rewind
-				:{cmd}
-				:next
-				:{cmd}
-				etc.
-<			When the current file can't be |abandon|ed and the [!]
-			is not present, the command fails.
-			When an error is detected on one file, further files
-			in the argument list will not be visited.
-			The last file in the argument list (or where an error
-			occurred) becomes the current file.
-			{cmd} can contain '|' to concatenate several commands.
-			{cmd} must not change the argument list.
-			Note: While this command is executing, the Syntax
-			autocommand event is disabled by adding it to
-			'eventignore'.  This considerably speeds up editing
-			each file.
-			{not in Vi} {not available when compiled without the
-			|+listcmds| feature}
-			Also see |:windo|, |:tabdo| and |:bufdo|.
-
-Example: >
-	:args *.c
-	:argdo set ff=unix | update
-This sets the 'fileformat' option to "unix" and writes the file if it is now
-changed.  This is done for all *.c files.
-
-Example: >
-	:args *.[ch]
-	:argdo %s/\/My_Foo/ge | update
-This changes the word "my_foo" to "My_Foo" in all *.c and *.h files.  The "e"
-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.
-
-==============================================================================
-4. Writing					*writing* *save-file*
-
-Note: When the 'write' option is off, you are not able to write any file.
-
-							*:w* *:write*
-						*E502* *E503* *E504* *E505*
-						*E512* *E514* *E667* *E796*
-:w[rite] [++opt]	Write the whole buffer to the current file.  This is
-			the normal way to save changes to a file.  It fails
-			when the 'readonly' option is set or when there is
-			another reason why the file can't be written.
-			For ++opt see |++opt|, but only ++bin, ++nobin, ++ff
-			and ++enc are effective.
-
-:w[rite]! [++opt]	Like ":write", but forcefully write when 'readonly' is
-			set or there is another reason why writing was
-			refused.
-			Note: This may change the permission and ownership of
-			the file and break (symbolic) links.  Add the 'W' flag
-			to 'cpoptions' to avoid this.
-
-:[range]w[rite][!] [++opt]
-			Write the specified lines to the current file.  This
-			is unusual, because the file will not contain all
-			lines in the buffer.
-
-							*:w_f* *:write_f*
-:[range]w[rite] [++opt]	{file}
-			Write the specified lines to {file}, unless it
-			already exists and the 'writeany' option is off.
-
-							*:w!*
-:[range]w[rite]! [++opt] {file}
-			Write the specified lines to {file}.  Overwrite an
-			existing file.
-
-						*:w_a* *:write_a* *E494*
-:[range]w[rite][!] [++opt] >>
-			Append the specified lines to the current file.
-
-:[range]w[rite][!] [++opt] >> {file}
-			Append the specified lines to {file}.  '!' forces the
-			write even if file does not exist.
-
-							*:w_c* *:write_c*
-:[range]w[rite] [++opt] !{cmd}
-			Execute {cmd} with [range] lines as standard input
-			(note the space in front of the '!').  {cmd} is
-			executed like with ":!{cmd}", any '!' is replaced with
-			the previous command |:!|.
-
-The default [range] for the ":w" command is the whole buffer (1,$).  If you
-write the whole buffer, it is no longer considered changed.  When you
-write it to a different file with ":w somefile" it depends on the "+" flag in
-'cpoptions'.  When included, the write command will reset the 'modified' flag,
-even though the buffer itself may still be different from its file.
-
-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
-'cpoptions' option.
-
-							*:sav* *:saveas*
-:sav[eas][!] [++opt] {file}
-			Save the current buffer under the name {file} and set
-			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.
-			When the write was successful 'readonly' is reset.
-			{not in Vi}
-
-							*:up* *:update*
-:[range]up[date][!] [++opt] [>>] [file]
-			Like ":write", but only write when the buffer has been
-			modified.  {not in Vi}
-
-
-WRITING WITH MULTIPLE BUFFERS				*buffer-write*
-
-							*:wa* *:wall*
-:wa[ll]			Write all changed buffers.  Buffers without a file
-			name or which are readonly are not written. {not in
-			Vi}
-
-:wa[ll]!		Write all changed buffers, even the ones that are
-			readonly.  Buffers without a file name are not
-			written. {not in Vi}
-
-
-Vim will warn you if you try to overwrite a file that has been changed
-elsewhere.  See |timestamp|.
-
-			    *backup* *E207* *E506* *E507* *E508* *E509* *E510*
-If you write to an existing file (but do not append) while the 'backup',
-'writebackup' or 'patchmode' option is on, a backup of the original file is
-made.  The file is either copied or renamed (see 'backupcopy').  After the
-file has been successfully written and when the 'writebackup' option is on and
-the 'backup' option is off, the backup file is deleted.  When the 'patchmode'
-option is on the backup file may be renamed.
-
-							*backup-table*
-'backup' 'writebackup'	action	~
-   off	     off	no backup made
-   off	     on		backup current file, deleted afterwards (default)
-   on	     off	delete old backup, backup current file
-   on	     on		delete old backup, backup current file
-
-When the 'backupskip' pattern matches with the name of the file which is
-written, no backup file is made.  The values of 'backup' and 'writebackup' are
-ignored then.
-
-When the 'backup' option is on, an old backup file (with the same name as the
-new backup file) will be deleted.  If 'backup' is not set, but 'writebackup'
-is set, an existing backup file will not be deleted.  The backup file that is
-made while the file is being written will have a different name.
-
-On some filesystems it's possible that in a crash you lose both the backup and
-the newly written file (it might be there but contain bogus data).  In that
-case try recovery, because the swap file is synced to disk and might still be
-there. |:recover|
-
-The directories given with the 'backupdir' option is used to put the backup
-file in.  (default: same directory as the written file).
-
-Whether the backup is a new file, which is a copy of the original file, or the
-original file renamed depends on the 'backupcopy' option.  See there for an
-explanation of when the copy is made and when the file is renamed.
-
-If the creation of a backup file fails, the write is not done.  If you want
-to write anyway add a '!' to the command.
-
-							*write-readonly*
-When the 'cpoptions' option contains 'W', Vim will refuse to overwrite a
-readonly file.  When 'W' is not present, ":w!" will overwrite a readonly file,
-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
-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
-lost the original file.
-
-						*DOS-format-write*
-If the 'fileformat' is "dos",   is used for .  This is default
-for MS-DOS, Win32 and OS/2.  On other systems the message "[dos format]" is
-shown to remind you that an unusual  was used.
-						*Unix-format-write*
-If the 'fileformat' is "unix",  is used for .  On MS-DOS, Win32 and
-OS/2 the message "[unix format]" is shown.
-						*Mac-format-write*
-If the 'fileformat' is "mac",  is used for .  On non-Mac systems the
-message "[mac format]" is shown.
-
-See also |file-formats| and the 'fileformat' and 'fileformats' options.
-
-						*ACL*
-ACL stands for Access Control List.  It is an advanced way to control access
-rights for a file.  It is used on new MS-Windows and Unix systems, but only
-when the filesystem supports it.
-   Vim attempts to preserve the ACL info when writing a file.  The backup file
-will get the ACL info of the original file.
-   The ACL info is also used to check if a file is read-only (when opening the
-file).
-
-						*read-only-share*
-When MS-Windows shares a drive on the network it can be marked as read-only.
-This means that even if the file read-only attribute is absent, and the ACL
-settings on NT network shared drives allow writing to the file, you can still
-not write to the file.  Vim on Win32 platforms will detect read-only network
-drives and will mark the file as read-only.  You will not be able to override
-it with |:write|.
-
-						*write-device*
-When the file name is actually a device name, Vim will not make a backup (that
-would be impossible).  You need to use "!", since the device already exists.
-Example for Unix: >
-	:w! /dev/lpt0
-and for MS-DOS or MS-Windows: >
-	:w! lpt0
-For Unix a device is detected when the name doesn't refer to a normal file or
-a directory.  A fifo or named pipe also looks like a device to Vim.
-For MS-DOS and MS-Windows the device is detected by its name:
-	AUX
-	CON
-	CLOCK$
-	NUL
-	PRN
-	COMn	n=1,2,3... etc
-	LPTn	n=1,2,3... etc
-The names can be in upper- or lowercase.
-
-==============================================================================
-5. Writing and quitting					*write-quit*
-
-							*:q* *:quit*
-:q[uit]			Quit the current window.  Quit Vim if this is the last
-			window.  This fails when changes have been made and
-			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
-			edited.  See |:confirm| and 'confirm'.  {not in Vi}
-
-:q[uit]!		Quit without writing, also when visible buffers have
-			changes.  Does not exit when there are changed hidden
-			buffers.  Use ":qall!" to exit always.
-
-:cq[uit]		Quit always, without writing, and return an error
-			code.  See |:cq|.  Used for Manx's QuickFix mode (see
-			|quickfix|).  {not in Vi}
-
-							*:wq*
-:wq [++opt]		Write the current file and quit.  Writing fails when
-			the file is read-only or the buffer does not have a
-			name.  Quitting fails when the last file in the
-			argument list has not been edited.
-
-:wq! [++opt]		Write the current file and quit.  Writing fails when
-			the current buffer does not have a name.
-
-:wq [++opt] {file}	Write to {file} and quit.  Quitting fails when the
-			last file in the argument list has not been edited.
-
-:wq! [++opt] {file}	Write to {file} and quit.
-
-:[range]wq[!] [++opt] [file]
-			Same as above, but only write the lines in [range].
-
-							*:x* *:xit*
-:[range]x[it][!] [++opt] [file]
-			Like ":wq", but write only when changes have been
-			made.
-			When 'hidden' is set and there are more windows, the
-			current buffer becomes hidden, after writing the file.
-
-							*:exi* *:exit*
-:[range]exi[t][!] [++opt] [file]
-			Same as :xit.
-
-							*ZZ*
-ZZ			Write current file, if modified, and quit (same as
-			":x").  (Note: If there are several windows for the
-			current file, the file is written if it was modified
-			and the window is closed).
-
-							*ZQ*
-ZQ			Quit without checking for changes (same as ":q!").
-			{not in Vi}
-
-MULTIPLE WINDOWS AND BUFFERS				*window-exit*
-
-							*:qa* *:qall*
-:qa[ll]		Exit Vim, unless there are some buffers which have been
-		changed.  (Use ":bmod" to go to the next modified buffer).
-		When 'autowriteall' is set all changed buffers will be
-		written, like |:wqall|. {not in Vi}
-
-:conf[irm] qa[ll]
-		Exit Vim.  Bring up a prompt when some buffers have been
-		changed.  See |:confirm|. {not in Vi}
-
-:qa[ll]!	Exit Vim.  Any changes to buffers are lost. {not in Vi}
-		Also see |:cquit|, it does the same but exits with a non-zero
-		value.
-
-							*:quita* *:quitall*
-:quita[ll][!]	Same as ":qall". {not in Vi}
-
-:wqa[ll] [++opt]				*:wqa* *:wqall* *:xa* *:xall*
-:xa[ll]		Write all changed buffers and exit Vim.  If there are buffers
-		without a file name, which are readonly or which cannot be
-		written for another reason, Vim will not quit. {not in Vi}
-
-:conf[irm] wqa[ll] [++opt]
-:conf[irm] xa[ll]
-		Write all changed buffers and exit Vim.  Bring up a prompt
-		when some buffers are readonly or cannot be written for
-		another reason.  See |:confirm|. {not in Vi}
-
-:wqa[ll]! [++opt]
-:xa[ll]!	Write all changed buffers, even the ones that are readonly,
-		and exit Vim.  If there are buffers without a file name or
-		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|,
-			|:wall|, |:wq|, |:wqall|, |:x|, |:xall|, |:exit|,
-			|:view|, |:sview|, |:r|, |:saveas|, |:sp|, |:mkexrc|,
-			|:mkvimrc|, |:mksession|, |:mkview|, |:split|,
-			|:vsplit|, |:tabe|, |:tabnew|, |:cfile|, |:cgetfile|,
-			|:caddfile|, |:lfile|, |:lgetfile|, |:laddfile|,
-			|:diffsplit|, |:diffpatch|, |:open|, |:pedit|,
-			|:redir|, |:source|, |:update|, |:visual|, |:vsplit|,
-			and |:qall| if 'confirm' is set.
-			{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|.
-			See also |:oldfiles| for ":browse oldfiles".
-
-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* *E747* *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*
-
-Although Vim was made to edit text files, it is possible to edit binary
-files.  The |-b| Vim argument (b for binary) makes Vim do file I/O in binary
-mode, and sets some options for editing binary files ('binary' on, 'textwidth'
-to 0, 'modeline' off, 'expandtab' off).  Setting the 'binary' option has the
-same effect.  Don't forget to do this before reading the file.
-
-There are a few things to remember when editing binary files:
-- When editing executable files the number of characters must not change.
-  Use only the "R" or "r" command to change text.  Do not delete characters
-  with "x" or by backspacing.
-- Set the 'textwidth' option to 0.  Otherwise lines will unexpectedly be
-  split in two.
-- When there are not many s, the lines will become very long.  If you
-  want to edit a line that does not fit on the screen reset the 'wrap' option.
-  Horizontal scrolling is used then.  If a line becomes too long (more than
-  about 32767 characters on the Amiga, much more on 32-bit systems, see
-  |limits|) you cannot edit that line.  The line will be split when reading
-  the file.  It is also possible that you get an "out of memory" error when
-  reading the file.
-- Make sure the 'binary' option is set BEFORE loading the
-  file.  Otherwise both   and  are considered to end a line
-  and when the file is written the  will be replaced with  .
--  characters are shown on the screen as ^@.  You can enter them with
-  "CTRL-V CTRL-@" or "CTRL-V 000" {Vi cannot handle  characters in the
-  file}
-- To insert a  character in the file split up a line.  When writing the
-  buffer to a file a  will be written for the .
-- Vim normally appends an  at the end of the file if there is none.
-  Setting the 'binary' option prevents this.  If you want to add the final
-  , set the 'endofline' option.  You can also read the value of this
-  option to see if there was an  for the last line (you cannot see this
-  in the text).
-
-==============================================================================
-9. Encryption						*encryption*
-
-Vim is able to write files encrypted, and read them back.  The encrypted text
-cannot be read without the right key.
-{only available when compiled with the |+cryptv| feature}  *E833*
-
-The text in the swap file and the undo file is also encrypted.
-
-Note: The text in memory is not encrypted.  A system administrator may be able
-to see your text while you are editing it.  When filtering text with
-":!filter" or using ":w !command" the text is not encrypted, this may reveal
-it to others.  The 'viminfo' file is not encrypted.
-
-WARNING: If you make a typo when entering the key and then write the file and
-exit, the text will be lost!
-
-The normal way to work with encryption, is to use the ":X" command, which will
-ask you to enter a key.  A following write command will use that key to
-encrypt the file.  If you later edit the same file, Vim will ask you to enter
-a key.  If you type the same key as that was used for writing, the text will
-be readable again.  If you use a wrong key, it will be a mess.
-
-							*:X*
-:X	Prompt for an encryption key.  The typing is done without showing the
-	actual text, so that someone looking at the display won't see it.
-	The typed key is stored in the 'key' option, which is used to encrypt
-	the file when it is written.  The file will remain unchanged until you
-	write it.  See also |-x|.
-
-The value of the 'key' options is used when text is written.  When the option
-is not empty, the written file will be encrypted, using the value as the
-encryption key.  A magic number is prepended, so that Vim can recognize that
-the file is encrypted.
-
-To disable the encryption, reset the 'key' option to an empty value: >
-	:set key=
-
-You can use the 'cryptmethod' option to select the type of encryption, use one
-of these two: >
-	:setlocal cm=zip       " weak method, backwards compatible
-	:setlocal cm=blowfish  " strong method
-Do this before writing the file.  When reading an encrypted file it will be
-set automatically to the method used when that file was written.  You can
-change 'cryptmethod' before writing that file to change the method.
-To set the default method, used for new files, use one of these in your
-|vimrc| file: >
-	set cm=zip
-	set cm=blowfish
-
-When writing an undo file, the same key and method will be used for the text
-in the undo file. |persistent-undo|.
-
-						*E817* *E818* *E819* *E820*
-When encryption does not work properly, you would be able to write your text
-to a file and never be able to read it back.  Therefore a test is performed to
-check if the encryption works as expected.  If you get one of these errors
-don't write the file encrypted!  You need to rebuild the Vim binary to fix
-this.
-
-*E831* This is an internal error, "cannot happen".  If you can reproduce it,
-please report to the developers.
-
-When reading a file that has been encrypted and the 'key' option is not empty,
-it will be used for decryption.  If the value is empty, you will be prompted
-to enter the key.  If you don't enter a key, or you enter the wrong key, the
-file is edited without being decrypted.  There is no warning about using the
-wrong key (this makes brute force methods to find the key more difficult).
-
-If want to start reading a file that uses a different key, set the 'key'
-option to an empty string, so that Vim will prompt for a new one.  Don't use
-the ":set" command to enter the value, other people can read the command over
-your shoulder.
-
-Since the value of the 'key' option is supposed to be a secret, its value can
-never be viewed.  You should not set this option in a vimrc file.
-
-An encrypted file can be recognized by the "file" command, if you add these
-lines to "/etc/magic", "/usr/share/misc/magic" or wherever your system has the
-"magic" file: >
-     0	string	VimCrypt~	Vim encrypted file
-     >9	string	01	- "zip" cryptmethod
-     >9	string	02	- "blowfish" cryptmethod
-
-
-Notes:
-- Encryption is not possible when doing conversion with 'charconvert'.
-- Text you copy or delete goes to the numbered registers.  The registers can
-  be saved in the .viminfo file, where they could be read.  Change your
-  'viminfo' option to be safe.
-- Someone can type commands in Vim when you walk away for a moment, he should
-  not be able to get the key.
-- If you make a typing mistake when entering the key, you might not be able to
-  get your text back!
-- If you type the key with a ":set key=value" command, it can be kept in the
-  history, showing the 'key' value in a viminfo file.
-- There is never 100% safety.  The encryption in Vim has not been tested for
-  robustness.
-- The algorithm used is breakable.  A 4 character key in about one hour, a 6
-  character key in one day (on a Pentium 133 PC).  This requires that you know
-  some text that must appear in the file.  An expert can break it for any key.
-  When the text has been decrypted, this also means that the key can be
-  revealed, and other files encrypted with the same key can be decrypted.
-- Pkzip uses the same encryption, and US Govt has no objection to its export.
-  Pkzip's public file APPNOTE.TXT describes this algorithm in detail.
-- Vim originates from the Netherlands.  That is where the sources come from.
-  Thus the encryption code is not exported from the USA.
-
-==============================================================================
-10. Timestamps					*timestamp* *timestamps*
-
-Vim remembers the modification timestamp of a file when you begin editing it.
-This is used to avoid that you have two different versions of the same file
-(without you knowing this).
-
-After a shell command is run (|:!cmd| |suspend| |:read!| |K|) timestamps are
-compared for all buffers in a window.   Vim will run any associated
-|FileChangedShell| autocommands or display a warning for any files that have
-changed.  In the GUI this happens when Vim regains input focus.
-
-							*E321* *E462*
-If you want to automatically reload a file when it has been changed outside of
-Vim, set the 'autoread' option.  This doesn't work at the moment you write the
-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., 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
-is equal.  This is done by reading the file again (into a hidden buffer, which
-is immediately deleted again) and comparing the text.  If the text is equal,
-you will get no warning.
-
-If you don't get warned often enough you can use the following command.
-
-							*:checkt* *:checktime*
-:checkt[ime]		Check if any buffers were changed outside of Vim.
-			This checks and warns you if you would end up with two
-			versions of a file.
-			If this is called from an autocommand, a ":global"
-			command or is not typed the actual check is postponed
-			until a moment the side effects (reloading the file)
-			would be harmless.
-			Each loaded buffer is checked for its associated file
-			being changed.  If the file was changed Vim will take
-			action.  If there are no changes in the buffer and
-			'autoread' is set, the buffer is reloaded.  Otherwise,
-			you are offered the choice of reloading the file.  If
-			the file was deleted you get an error message.
-			If the file previously didn't exist you get a warning
-			if it exists now.
-			Once a file has been checked the timestamp is reset,
-			you will not be warned again.
-
-:[N]checkt[ime] {filename}
-:[N]checkt[ime] [N]
-			Check the timestamp of a specific buffer.  The buffer
-			may be specified by name, number or with a pattern.
-
-
-							*E813* *E814*
-Vim will reload the buffer if you chose to.  If a window is visible that
-contains this buffer, the reloading will happen in the context of this window.
-Otherwise a special window is used, so that most autocommands will work.  You
-can't close this window.  A few other restrictions apply.  Best is to make
-sure nothing happens outside of the current buffer.  E.g., setting
-window-local options may end up in the wrong window.  Splitting the window,
-doing something there and closing it should be OK (if there are no side
-effects from other autocommands).  Closing unrelated windows and buffers will
-get you into trouble.
-
-Before writing a file the timestamp is checked.  If it has changed, Vim will
-ask if you really want to overwrite the file:
-
-	WARNING: The file has been changed since reading it!!!
-	Do you really want to write to it (y/n)?
-
-If you hit 'y' Vim will continue writing the file.  If you hit 'n' the write is
-aborted.  If you used ":wq" or "ZZ" Vim will not exit, you will get another
-chance to write the file.
-
-The message would normally mean that somebody has written to the file after
-the edit session started.  This could be another person, in which case you
-probably want to check if your changes to the file and the changes from the
-other person should be merged.  Write the file under another name and check for
-differences (the "diff" program can be used for this).
-
-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, for |finddir()| and |findfile()|.  Other commands use |wildcards|
-which is slightly different.
-
-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.  Note that "**" only acts as a
-   special wildcard when it is at the start of a name.
-
-   The usage of '*' is quite simple: It matches 0 or more characters.  In a
-   search pattern this would be ".*".  Note that the "." is not used for file
-   searching.
-
-   '**' is more sophisticated:
-      - It ONLY matches directories.
-      - It matches up to 30 directories deep by default, 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 100
-	If the given number is smaller than 0 it defaults to 30, if it's
-	bigger than 100 then 100 is used.  The system also has a limit on the
-	path length, usually 256 or 1024 bytes.
-      - '**' 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/*tory/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.
-
-   Note that completion for ":find", ":sfind", and ":tabfind" commands do not
-   currently work with 'path' items that contain a url or use the double star
-   (/usr/**2) or upward search (;) notations. >
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/eval.txt b/share/vim/vim73/doc/eval.txt
deleted file mode 100644
index 54035519..00000000
--- a/share/vim/vim73/doc/eval.txt
+++ /dev/null
@@ -1,8324 +0,0 @@
-*eval.txt*	For Vim version 7.3.  Last change: 2010 Aug 15
-
-
-		  VIM REFERENCE MANUAL	  by Bram Moolenaar
-
-
-Expression evaluation			*expression* *expr* *E15* *eval*
-
-Using expressions is introduced in chapter 41 of the user manual |usr_41.txt|.
-
-Note: Expression evaluation can be disabled at compile time.  If this has been
-done, the features in this document are not available.	See |+eval| and
-|no-eval-feature|.
-
-1.  Variables			|variables|
-    1.1 Variable types
-    1.2 Function references		|Funcref|
-    1.3 Lists				|Lists|
-    1.4 Dictionaries			|Dictionaries|
-    1.5 More about variables		|more-variables|
-2.  Expression syntax		|expression-syntax|
-3.  Internal variable		|internal-variables|
-4.  Builtin Functions		|functions|
-5.  Defining functions		|user-functions|
-6.  Curly braces names		|curly-braces-names|
-7.  Commands			|expression-commands|
-8.  Exception handling		|exception-handling|
-9.  Examples			|eval-examples|
-10. No +eval feature		|no-eval-feature|
-11. The sandbox			|eval-sandbox|
-12. Textlock			|textlock|
-
-{Vi does not have any of these commands}
-
-==============================================================================
-1. Variables						*variables*
-
-1.1 Variable types ~
-							*E712*
-There are six types of variables:
-
-Number		A 32 bit signed number.  |expr-number| *Number*
-		Examples:  -123  0x10  0177
-
-Float		A floating point number. |floating-point-format| *Float*
-		{only when compiled with the |+float| feature}
-		Examples: 123.456  1.15e-6  -1.1e3
-
-String		A NUL terminated string of 8-bit unsigned characters (bytes).
-		|expr-string| Examples: "ab\txx\"--"  'x-z''a,c'
-
-Funcref		A reference to a function |Funcref|.
-		Example: function("strlen")
-
-List		An ordered sequence of items |List|.
-		Example: [1, 2, ['a', 'b']]
-
-Dictionary	An associative, unordered array: Each entry has a key and a
-		value. |Dictionary|
-		Example: {'blue': "#0000ff", 'red': "#ff0000"}
-
-The Number and String types are converted automatically, depending on how they
-are used.
-
-Conversion from a Number to a String is by making the ASCII representation of
-the Number.  Examples: >
-	Number 123	-->	String "123"
-	Number 0	-->	String "0"
-	Number -1	-->	String "-1"
-							*octal*
-Conversion from a String to a Number is done by converting the first digits
-to a number.  Hexadecimal "0xf9" and Octal "017" numbers are recognized.  If
-the String doesn't start with digits, the result is zero.  Examples: >
-	String "456"	-->	Number 456
-	String "6bar"	-->	Number 6
-	String "foo"	-->	Number 0
-	String "0xf1"	-->	Number 241
-	String "0100"	-->	Number 64
-	String "-8"	-->	Number -8
-	String "+8"	-->	Number 0
-
-To force conversion from String to Number, add zero to it: >
-	:echo "0100" + 0
-<	64 ~
-
-To avoid a leading zero to cause octal conversion, or for using a different
-base, use |str2nr()|.
-
-For boolean operators Numbers are used.  Zero is FALSE, non-zero is TRUE.
-
-Note that in the command >
-	:if "foo"
-"foo" is converted to 0, which means FALSE.  To test for a non-empty string,
-use strlen(): >
-	:if strlen("foo")
-<				*E745* *E728* *E703* *E729* *E730* *E731*
-List, Dictionary and Funcref types are not automatically converted.
-
-							*E805* *E806* *E808*
-When mixing Number and Float the Number is converted to Float.	Otherwise
-there is no automatic conversion of Float.  You can use str2float() for String
-to Float, printf() for Float to String and float2nr() for Float to Number.
-
-						*E706* *sticky-type-checking*
-You will get an error if you try to change the type of a variable.  You need
-to |:unlet| it first to avoid this error.  String and Number are considered
-equivalent though, as well are Float and Number.  Consider this sequence of
-commands: >
-	:let l = "string"
-	:let l = 44		" changes type from String to Number
-	:let l = [1, 2, 3]	" error!  l is still a Number
-	:let l = 4.4		" changes type from Number to Float
-	:let l = "string"	" error!
-
-
-1.2 Function references ~
-					*Funcref* *E695* *E718*
-A Funcref variable is obtained with the |function()| function.	It can be used
-in an expression in the place of a function name, before the parenthesis
-around the arguments, to invoke the function it refers to.  Example: >
-
-	:let Fn = function("MyFunc")
-	:echo Fn()
-<							*E704* *E705* *E707*
-A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:".  You
-cannot have both a Funcref variable and a function with the same name.
-
-A special case is defining a function and directly assigning its Funcref to a
-Dictionary entry.  Example: >
-	:function dict.init() dict
-	:   let self.val = 0
-	:endfunction
-
-The key of the Dictionary can start with a lower case letter.  The actual
-function name is not used here.  Also see |numbered-function|.
-
-A Funcref can also be used with the |:call| command: >
-	:call Fn()
-	:call dict.init()
-
-The name of the referenced function can be obtained with |string()|. >
-	:let func = string(Fn)
-
-You can use |call()| to invoke a Funcref and use a list variable for the
-arguments: >
-	:let r = call(Fn, mylist)
-
-
-1.3 Lists ~
-							*List* *Lists* *E686*
-A List is an ordered sequence of items.  An item can be of any type.  Items
-can be accessed by their index number.	Items can be added and removed at any
-position in the sequence.
-
-
-List creation ~
-							*E696* *E697*
-A List is created with a comma separated list of items in square brackets.
-Examples: >
-	:let mylist = [1, two, 3, "four"]
-	:let emptylist = []
-
-An item can be any expression.	Using a List for an item creates a
-List of Lists: >
-	:let nestlist = [[11, 12], [21, 22], [31, 32]]
-
-An extra comma after the last item is ignored.
-
-
-List index ~
-							*list-index* *E684*
-An item in the List can be accessed by putting the index in square brackets
-after the List.  Indexes are zero-based, thus the first item has index zero. >
-	:let item = mylist[0]		" get the first item: 1
-	:let item = mylist[2]		" get the third item: 3
-
-When the resulting item is a list this can be repeated: >
-	:let item = nestlist[0][1]	" get the first list, second item: 12
-<
-A negative index is counted from the end.  Index -1 refers to the last item in
-the List, -2 to the last but one item, etc. >
-	:let last = mylist[-1]		" get the last item: "four"
-
-To avoid an error for an invalid index use the |get()| function.  When an item
-is not available it returns zero or the default value you specify: >
-	:echo get(mylist, idx)
-	:echo get(mylist, idx, "NONE")
-
-
-List concatenation ~
-
-Two lists can be concatenated with the "+" operator: >
-	:let longlist = mylist + [5, 6]
-	:let mylist += [7, 8]
-
-To prepend or append an item turn the item into a list by putting [] around
-it.  To change a list in-place see |list-modification| below.
-
-
-Sublist ~
-
-A part of the List can be obtained by specifying the first and last index,
-separated by a colon in square brackets: >
-	:let shortlist = mylist[2:-1]	" get List [3, "four"]
-
-Omitting the first index is similar to zero.  Omitting the last index is
-similar to -1. >
-	:let endlist = mylist[2:]	" from item 2 to the end: [3, "four"]
-	:let shortlist = mylist[2:2]	" List with one item: [3]
-	:let otherlist = mylist[:]	" make a copy of the List
-
-If the first index is beyond the last item of the List or the second item is
-before the first item, the result is an empty list.  There is no error
-message.
-
-If the second index is equal to or greater than the length of the list the
-length minus one is used: >
-	:let mylist = [0, 1, 2, 3]
-	:echo mylist[2:8]		" result: [2, 3]
-
-NOTE: mylist[s:e] means using the variable "s:e" as index.  Watch out for
-using a single letter variable before the ":".	Insert a space when needed:
-mylist[s : e].
-
-
-List identity ~
-							*list-identity*
-When variable "aa" is a list and you assign it to another variable "bb", both
-variables refer to the same list.  Thus changing the list "aa" will also
-change "bb": >
-	:let aa = [1, 2, 3]
-	:let bb = aa
-	:call add(aa, 4)
-	:echo bb
-<	[1, 2, 3, 4]
-
-Making a copy of a list is done with the |copy()| function.  Using [:] also
-works, as explained above.  This creates a shallow copy of the list: Changing
-a list item in the list will also change the item in the copied list: >
-	:let aa = [[1, 'a'], 2, 3]
-	:let bb = copy(aa)
-	:call add(aa, 4)
-	:let aa[0][1] = 'aaa'
-	:echo aa
-<	[[1, aaa], 2, 3, 4] >
-	:echo bb
-<	[[1, aaa], 2, 3]
-
-To make a completely independent list use |deepcopy()|.  This also makes a
-copy of the values in the list, recursively.  Up to a hundred levels deep.
-
-The operator "is" can be used to check if two variables refer to the same
-List.  "isnot" does the opposite.  In contrast "==" compares if two lists have
-the same value. >
-	:let alist = [1, 2, 3]
-	:let blist = [1, 2, 3]
-	:echo alist is blist
-<	0 >
-	:echo alist == blist
-<	1
-
-Note about comparing lists: Two lists are considered equal if they have the
-same length and all items compare equal, as with using "==".  There is one
-exception: When comparing a number with a string they are considered
-different.  There is no automatic type conversion, as with using "==" on
-variables.  Example: >
-	echo 4 == "4"
-<	1 >
-	echo [4] == ["4"]
-<	0
-
-Thus comparing Lists is more strict than comparing numbers and strings.  You
-can compare simple values this way too by putting them in a list: >
-
-	:let a = 5
-	:let b = "5"
-	:echo a == b
-<	1 >
-	:echo [a] == [b]
-<	0
-
-
-List unpack ~
-
-To unpack the items in a list to individual variables, put the variables in
-square brackets, like list items: >
-	:let [var1, var2] = mylist
-
-When the number of variables does not match the number of items in the list
-this produces an error.  To handle any extra items from the list append ";"
-and a variable name: >
-	:let [var1, var2; rest] = mylist
-
-This works like: >
-	:let var1 = mylist[0]
-	:let var2 = mylist[1]
-	:let rest = mylist[2:]
-
-Except that there is no error if there are only two items.  "rest" will be an
-empty list then.
-
-
-List modification ~
-							*list-modification*
-To change a specific item of a list use |:let| this way: >
-	:let list[4] = "four"
-	:let listlist[0][3] = item
-
-To change part of a list you can specify the first and last item to be
-modified.  The value must at least have the number of items in the range: >
-	:let list[3:5] = [3, 4, 5]
-
-Adding and removing items from a list is done with functions.  Here are a few
-examples: >
-	:call insert(list, 'a')		" prepend item 'a'
-	:call insert(list, 'a', 3)	" insert item 'a' before list[3]
-	:call add(list, "new")		" append String item
-	:call add(list, [1, 2])		" append a List as one new item
-	:call extend(list, [1, 2])	" extend the list with two more items
-	:let i = remove(list, 3)	" remove item 3
-	:unlet list[3]			" idem
-	:let l = remove(list, 3, -1)	" remove items 3 to last item
-	:unlet list[3 : ]		" idem
-	:call filter(list, 'v:val !~ "x"')  " remove items with an 'x'
-
-Changing the order of items in a list: >
-	:call sort(list)		" sort a list alphabetically
-	:call reverse(list)		" reverse the order of items
-
-
-For loop ~
-
-The |:for| loop executes commands for each item in a list.  A variable is set
-to each item in the list in sequence.  Example: >
-	:for item in mylist
-	:   call Doit(item)
-	:endfor
-
-This works like: >
-	:let index = 0
-	:while index < len(mylist)
-	:   let item = mylist[index]
-	:   :call Doit(item)
-	:   let index = index + 1
-	:endwhile
-
-Note that all items in the list should be of the same type, otherwise this
-results in error |E706|.  To avoid this |:unlet| the variable at the end of
-the loop.
-
-If all you want to do is modify each item in the list then the |map()|
-function will be a simpler method than a for loop.
-
-Just like the |:let| command, |:for| also accepts a list of variables.	This
-requires the argument to be a list of lists. >
-	:for [lnum, col] in [[1, 3], [2, 8], [3, 0]]
-	:   call Doit(lnum, col)
-	:endfor
-
-This works like a |:let| command is done for each list item.  Again, the types
-must remain the same to avoid an error.
-
-It is also possible to put remaining items in a List variable: >
-	:for [i, j; rest] in listlist
-	:   call Doit(i, j)
-	:   if !empty(rest)
-	:      echo "remainder: " . string(rest)
-	:   endif
-	:endfor
-
-
-List functions ~
-						*E714*
-Functions that are useful with a List: >
-	:let r = call(funcname, list)	" call a function with an argument list
-	:if empty(list)			" check if list is empty
-	:let l = len(list)		" number of items in list
-	:let big = max(list)		" maximum value in list
-	:let small = min(list)		" minimum value in list
-	:let xs = count(list, 'x')	" count nr of times 'x' appears in list
-	:let i = index(list, 'x')	" index of first 'x' in list
-	:let lines = getline(1, 10)	" get ten text lines from buffer
-	:call append('$', lines)	" append text lines in buffer
-	:let list = split("a b c")	" create list from items in a string
-	:let string = join(list, ', ')	" create string from list items
-	:let s = string(list)		" String representation of list
-	:call map(list, '">> " . v:val')  " prepend ">> " to each item
-
-Don't forget that a combination of features can make things simple.  For
-example, to add up all the numbers in a list: >
-	:exe 'let sum = ' . join(nrlist, '+')
-
-
-1.4 Dictionaries ~
-						*Dictionaries* *Dictionary*
-A Dictionary is an associative array: Each entry has a key and a value.  The
-entry can be located with the key.  The entries are stored without a specific
-ordering.
-
-
-Dictionary creation ~
-						*E720* *E721* *E722* *E723*
-A Dictionary is created with a comma separated list of entries in curly
-braces.  Each entry has a key and a value, separated by a colon.  Each key can
-only appear once.  Examples: >
-	:let mydict = {1: 'one', 2: 'two', 3: 'three'}
-	:let emptydict = {}
-<							*E713* *E716* *E717*
-A key is always a String.  You can use a Number, it will be converted to a
-String automatically.  Thus the String '4' and the number 4 will find the same
-entry.	Note that the String '04' and the Number 04 are different, since the
-Number will be converted to the String '4'.
-
-A value can be any expression.	Using a Dictionary for a value creates a
-nested Dictionary: >
-	:let nestdict = {1: {11: 'a', 12: 'b'}, 2: {21: 'c'}}
-
-An extra comma after the last entry is ignored.
-
-
-Accessing entries ~
-
-The normal way to access an entry is by putting the key in square brackets: >
-	:let val = mydict["one"]
-	:let mydict["four"] = 4
-
-You can add new entries to an existing Dictionary this way, unlike Lists.
-
-For keys that consist entirely of letters, digits and underscore the following
-form can be used |expr-entry|: >
-	:let val = mydict.one
-	:let mydict.four = 4
-
-Since an entry can be any type, also a List and a Dictionary, the indexing and
-key lookup can be repeated: >
-	:echo dict.key[idx].key
-
-
-Dictionary to List conversion ~
-
-You may want to loop over the entries in a dictionary.	For this you need to
-turn the Dictionary into a List and pass it to |:for|.
-
-Most often you want to loop over the keys, using the |keys()| function: >
-	:for key in keys(mydict)
-	:   echo key . ': ' . mydict[key]
-	:endfor
-
-The List of keys is unsorted.  You may want to sort them first: >
-	:for key in sort(keys(mydict))
-
-To loop over the values use the |values()| function:  >
-	:for v in values(mydict)
-	:   echo "value: " . v
-	:endfor
-
-If you want both the key and the value use the |items()| function.  It returns
-a List in which each item is a	List with two items, the key and the value: >
-	:for [key, value] in items(mydict)
-	:   echo key . ': ' . value
-	:endfor
-
-
-Dictionary identity ~
-							*dict-identity*
-Just like Lists you need to use |copy()| and |deepcopy()| to make a copy of a
-Dictionary.  Otherwise, assignment results in referring to the same
-Dictionary: >
-	:let onedict = {'a': 1, 'b': 2}
-	:let adict = onedict
-	:let adict['a'] = 11
-	:echo onedict['a']
-	11
-
-Two Dictionaries compare equal if all the key-value pairs compare equal.  For
-more info see |list-identity|.
-
-
-Dictionary modification ~
-							*dict-modification*
-To change an already existing entry of a Dictionary, or to add a new entry,
-use |:let| this way: >
-	:let dict[4] = "four"
-	:let dict['one'] = item
-
-Removing an entry from a Dictionary is done with |remove()| or |:unlet|.
-Three ways to remove the entry with key "aaa" from dict: >
-	:let i = remove(dict, 'aaa')
-	:unlet dict.aaa
-	:unlet dict['aaa']
-
-Merging a Dictionary with another is done with |extend()|: >
-	:call extend(adict, bdict)
-This extends adict with all entries from bdict.  Duplicate keys cause entries
-in adict to be overwritten.  An optional third argument can change this.
-Note that the order of entries in a Dictionary is irrelevant, thus don't
-expect ":echo adict" to show the items from bdict after the older entries in
-adict.
-
-Weeding out entries from a Dictionary can be done with |filter()|: >
-	:call filter(dict, 'v:val =~ "x"')
-This removes all entries from "dict" with a value not matching 'x'.
-
-
-Dictionary function ~
-					*Dictionary-function* *self* *E725*
-When a function is defined with the "dict" attribute it can be used in a
-special way with a dictionary.	Example: >
-	:function Mylen() dict
-	:   return len(self.data)
-	:endfunction
-	:let mydict = {'data': [0, 1, 2, 3], 'len': function("Mylen")}
-	:echo mydict.len()
-
-This is like a method in object oriented programming.  The entry in the
-Dictionary is a |Funcref|.  The local variable "self" refers to the dictionary
-the function was invoked from.
-
-It is also possible to add a function without the "dict" attribute as a
-Funcref to a Dictionary, but the "self" variable is not available then.
-
-				*numbered-function* *anonymous-function*
-To avoid the extra name for the function it can be defined and directly
-assigned to a Dictionary in this way: >
-	:let mydict = {'data': [0, 1, 2, 3]}
-	:function mydict.len() dict
-	:   return len(self.data)
-	:endfunction
-	:echo mydict.len()
-
-The function will then get a number and the value of dict.len is a |Funcref|
-that references this function.	The function can only be used through a
-|Funcref|.  It will automatically be deleted when there is no |Funcref|
-remaining that refers to it.
-
-It is not necessary to use the "dict" attribute for a numbered function.
-
-If you get an error for a numbered function, you can find out what it is with
-a trick.  Assuming the function is 42, the command is: >
-	:function {42}
-
-
-Functions for Dictionaries ~
-							*E715*
-Functions that can be used with a Dictionary: >
-	:if has_key(dict, 'foo')	" TRUE if dict has entry with key "foo"
-	:if empty(dict)			" TRUE if dict is empty
-	:let l = len(dict)		" number of items in dict
-	:let big = max(dict)		" maximum value in dict
-	:let small = min(dict)		" minimum value in dict
-	:let xs = count(dict, 'x')	" count nr of times 'x' appears in dict
-	:let s = string(dict)		" String representation of dict
-	:call map(dict, '">> " . v:val')  " prepend ">> " to each item
-
-
-1.5 More about variables ~
-							*more-variables*
-If you need to know the type of a variable or expression, use the |type()|
-function.
-
-When the '!' flag is included in the 'viminfo' option, global variables that
-start with an uppercase letter, and don't contain a lowercase letter, are
-stored in the viminfo file |viminfo-file|.
-
-When the 'sessionoptions' option contains "global", global variables that
-start with an uppercase letter and contain at least one lowercase letter are
-stored in the session file |session-file|.
-
-variable name		can be stored where ~
-my_var_6		not
-My_Var_6		session file
-MY_VAR_6		viminfo file
-
-
-It's possible to form a variable name with curly braces, see
-|curly-braces-names|.
-
-==============================================================================
-2. Expression syntax					*expression-syntax*
-
-Expression syntax summary, from least to most significant:
-
-|expr1| expr2 ? expr1 : expr1	if-then-else
-
-|expr2|	expr3 || expr3 ..	logical OR
-
-|expr3|	expr4 && expr4 ..	logical AND
-
-|expr4|	expr5 == expr5		equal
-	expr5 != expr5		not equal
-	expr5 >	 expr5		greater than
-	expr5 >= expr5		greater than or equal
-	expr5 <	 expr5		smaller than
-	expr5 <= expr5		smaller than or equal
-	expr5 =~ expr5		regexp matches
-	expr5 !~ expr5		regexp doesn't match
-
-	expr5 ==? expr5		equal, ignoring case
-	expr5 ==# expr5		equal, match case
-	etc.			As above, append ? for ignoring case, # for
-				matching case
-
-	expr5 is expr5		same |List| instance
-	expr5 isnot expr5	different |List| instance
-
-|expr5|	expr6 +	 expr6 ..	number addition or list concatenation
-	expr6 -	 expr6 ..	number subtraction
-	expr6 .	 expr6 ..	string concatenation
-
-|expr6|	expr7 *	 expr7 ..	number multiplication
-	expr7 /	 expr7 ..	number division
-	expr7 %	 expr7 ..	number modulo
-
-|expr7|	! expr7			logical NOT
-	- expr7			unary minus
-	+ expr7			unary plus
-
-
-|expr8|	expr8[expr1]		byte of a String or item of a |List|
-	expr8[expr1 : expr1]	substring of a String or sublist of a |List|
-	expr8.name		entry in a |Dictionary|
-	expr8(expr1, ...)	function call with |Funcref| variable
-
-|expr9| number			number constant
-	"string"		string constant, backslash is special
-	'string'		string constant, ' is doubled
-	[expr1, ...]		|List|
-	{expr1: expr1, ...}	|Dictionary|
-	&option			option value
-	(expr1)			nested expression
-	variable		internal variable
-	va{ria}ble		internal variable with curly braces
-	$VAR			environment variable
-	@r			contents of register 'r'
-	function(expr1, ...)	function call
-	func{ti}on(expr1, ...)	function call with curly braces
-
-
-".." indicates that the operations in this level can be concatenated.
-Example: >
-	&nu || &list && &shell == "csh"
-
-All expressions within one level are parsed from left to right.
-
-
-expr1							*expr1* *E109*
------
-
-expr2 ? expr1 : expr1
-
-The expression before the '?' is evaluated to a number.  If it evaluates to
-non-zero, the result is the value of the expression between the '?' and ':',
-otherwise the result is the value of the expression after the ':'.
-Example: >
-	:echo lnum == 1 ? "top" : lnum
-
-Since the first expression is an "expr2", it cannot contain another ?:.  The
-other two expressions can, thus allow for recursive use of ?:.
-Example: >
-	:echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum
-
-To keep this readable, using |line-continuation| is suggested: >
-	:echo lnum == 1
-	:\	? "top"
-	:\	: lnum == 1000
-	:\		? "last"
-	:\		: lnum
-
-You should always put a space before the ':', otherwise it can be mistaken for
-use in a variable such as "a:1".
-
-
-expr2 and expr3						*expr2* *expr3*
----------------
-
-					*expr-barbar* *expr-&&*
-The "||" and "&&" operators take one argument on each side.  The arguments
-are (converted to) Numbers.  The result is:
-
-	 input				 output ~
-n1		n2		n1 || n2	n1 && n2 ~
-zero		zero		zero		zero
-zero		non-zero	non-zero	zero
-non-zero	zero		non-zero	zero
-non-zero	non-zero	non-zero	non-zero
-
-The operators can be concatenated, for example: >
-
-	&nu || &list && &shell == "csh"
-
-Note that "&&" takes precedence over "||", so this has the meaning of: >
-
-	&nu || (&list && &shell == "csh")
-
-Once the result is known, the expression "short-circuits", that is, further
-arguments are not evaluated.  This is like what happens in C.  For example: >
-
-	let a = 1
-	echo a || b
-
-This is valid even if there is no variable called "b" because "a" is non-zero,
-so the result must be non-zero.  Similarly below: >
-
-	echo exists("b") && b == "yes"
-
-This is valid whether "b" has been defined or not.  The second clause will
-only be evaluated if "b" has been defined.
-
-
-expr4							*expr4*
------
-
-expr5 {cmp} expr5
-
-Compare two expr5 expressions, resulting in a 0 if it evaluates to false, or 1
-if it evaluates to true.
-
-			*expr-==*  *expr-!=*  *expr->*	 *expr->=*
-			*expr-<*   *expr-<=*  *expr-=~*  *expr-!~*
-			*expr-==#* *expr-!=#* *expr->#*  *expr->=#*
-			*expr-<#*  *expr-<=#* *expr-=~#* *expr-!~#*
-			*expr-==?* *expr-!=?* *expr->?*  *expr->=?*
-			*expr-		>#		>?
-greater than or equal	>=		>=#		>=?
-smaller than		<		<#		
-	1 . 90 + 90.0
-As: >
-	(1 . 90) + 90.0
-That works, since the String "190" is automatically converted to the Number
-190, which can be added to the Float 90.0.  However: >
-	1 . 90 * 90.0
-Should be read as: >
-	1 . (90 * 90.0)
-Since '.' has lower precedence than '*'.  This does NOT work, since this
-attempts to concatenate a Float and a String.
-
-When dividing a Number by zero the result depends on the value:
-	  0 / 0  = -0x80000000	(like NaN for Float)
-	 >0 / 0  =  0x7fffffff	(like positive infinity)
-	 <0 / 0  = -0x7fffffff	(like negative infinity)
-	(before Vim 7.2 it was always 0x7fffffff)
-
-When the righthand side of '%' is zero, the result is 0.
-
-None of these work for |Funcref|s.
-
-. and % do not work for Float. *E804*
-
-
-expr7							*expr7*
------
-! expr7			logical NOT		*expr-!*
-- expr7			unary minus		*expr-unary--*
-+ expr7			unary plus		*expr-unary-+*
-
-For '!' non-zero becomes zero, zero becomes one.
-For '-' the sign of the number is changed.
-For '+' the number is unchanged.
-
-A String will be converted to a Number first.
-
-These three can be repeated and mixed.	Examples:
-	!-1	    == 0
-	!!8	    == 1
-	--9	    == 9
-
-
-expr8							*expr8*
------
-expr8[expr1]		item of String or |List|	*expr-[]* *E111*
-
-If expr8 is a Number or String this results in a String that contains the
-expr1'th single byte from expr8.  expr8 is used as a String, expr1 as a
-Number.  This doesn't recognize multi-byte encodings, see |byteidx()| for
-an alternative.
-
-Index zero gives the first character.  This is like it works in C.  Careful:
-text column numbers start with one!  Example, to get the character under the
-cursor: >
-	:let c = getline(".")[col(".") - 1]
-
-If the length of the String is less than the index, the result is an empty
-String.  A negative index always results in an empty string (reason: backwards
-compatibility).  Use [-1:] to get the last byte.
-
-If expr8 is a |List| then it results the item at index expr1.  See |list-index|
-for possible index values.  If the index is out of range this results in an
-error.	Example: >
-	:let item = mylist[-1]		" get last item
-
-Generally, if a |List| index is equal to or higher than the length of the
-|List|, or more negative than the length of the |List|, this results in an
-error.
-
-
-expr8[expr1a : expr1b]	substring or sublist		*expr-[:]*
-
-If expr8 is a Number or String this results in the substring with the bytes
-from expr1a to and including expr1b.  expr8 is used as a String, expr1a and
-expr1b are used as a Number.  This doesn't recognize multi-byte encodings, see
-|byteidx()| for computing the indexes.
-
-If expr1a is omitted zero is used.  If expr1b is omitted the length of the
-string minus one is used.
-
-A negative number can be used to measure from the end of the string.  -1 is
-the last character, -2 the last but one, etc.
-
-If an index goes out of range for the string characters are omitted.  If
-expr1b is smaller than expr1a the result is an empty string.
-
-Examples: >
-	:let c = name[-1:]		" last byte of a string
-	:let c = name[-2:-2]		" last but one byte of a string
-	:let s = line(".")[4:]		" from the fifth byte to the end
-	:let s = s[:-3]			" remove last two bytes
-<
-							*sublist* *slice*
-If expr8 is a |List| this results in a new |List| with the items indicated by
-the indexes expr1a and expr1b.	This works like with a String, as explained
-just above, except that indexes out of range cause an error.  Examples: >
-	:let l = mylist[:3]		" first four items
-	:let l = mylist[4:4]		" List with one item
-	:let l = mylist[:]		" shallow copy of a List
-
-Using expr8[expr1] or expr8[expr1a : expr1b] on a |Funcref| results in an
-error.
-
-
-expr8.name		entry in a |Dictionary|		*expr-entry*
-
-If expr8 is a |Dictionary| and it is followed by a dot, then the following
-name will be used as a key in the |Dictionary|.  This is just like:
-expr8[name].
-
-The name must consist of alphanumeric characters, just like a variable name,
-but it may start with a number.  Curly braces cannot be used.
-
-There must not be white space before or after the dot.
-
-Examples: >
-	:let dict = {"one": 1, 2: "two"}
-	:echo dict.one
-	:echo dict .2
-
-Note that the dot is also used for String concatenation.  To avoid confusion
-always put spaces around the dot for String concatenation.
-
-
-expr8(expr1, ...)	|Funcref| function call
-
-When expr8 is a |Funcref| type variable, invoke the function it refers to.
-
-
-
-							*expr9*
-number
-------
-number			number constant		*expr-number*
-
-Decimal, Hexadecimal (starting with 0x or 0X), or Octal (starting with 0).
-
-						*floating-point-format*
-Floating point numbers can be written in two forms:
-
-	[-+]{N}.{M}
-	[-+]{N}.{M}e[-+]{exp}
-
-{N} and {M} are numbers.  Both {N} and {M} must be present and can only
-contain digits.
-[-+] means there is an optional plus or minus sign.
-{exp} is the exponent, power of 10.
-Only a decimal point is accepted, not a comma.	No matter what the current
-locale is.
-{only when compiled with the |+float| feature}
-
-Examples:
-	123.456
-	+0.0001
-	55.0
-	-0.123
-	1.234e03
-	1.0E-6
-	-3.1416e+88
-
-These are INVALID:
-	3.		empty {M}
-	1e40		missing .{M}
-
-							*float-pi* *float-e*
-A few useful values to copy&paste: >
-	:let pi = 3.14159265359
-	:let e  = 2.71828182846
-
-Rationale:
-Before floating point was introduced, the text "123.456" was interpreted as
-the two numbers "123" and "456", both converted to a string and concatenated,
-resulting in the string "123456".  Since this was considered pointless, and we
-could not find it intentionally being used in Vim scripts, this backwards
-incompatibility was accepted in favor of being able to use the normal notation
-for floating point numbers.
-
-						*floating-point-precision*
-The precision and range of floating points numbers depends on what "double"
-means in the library Vim was compiled with.  There is no way to change this at
-runtime.
-
-The default for displaying a |Float| is to use 6 decimal places, like using
-printf("%g", f).  You can select something else when using the |printf()|
-function.  Example: >
-	:echo printf('%.15e', atan(1))
-<	7.853981633974483e-01
-
-
-
-string							*expr-string* *E114*
-------
-"string"		string constant		*expr-quote*
-
-Note that double quotes are used.
-
-A string constant accepts these special characters:
-\...	three-digit octal number (e.g., "\316")
-\..	two-digit octal number (must be followed by non-digit)
-\.	one-digit octal number (must be followed by non-digit)
-\x..	byte specified with two hex numbers (e.g., "\x1f")
-\x.	byte specified with one hex number (must be followed by non-hex char)
-\X..	same as \x..
-\X.	same as \x.
-\u....	character specified with up to 4 hex numbers, stored according to the
-	current value of 'encoding' (e.g., "\u02a4")
-\U....	same as \u....
-\b	backspace 
-\e	escape 
-\f	formfeed 
-\n	newline 
-\r	return 
-\t	tab 
-\\	backslash
-\"	double quote
-\	Special key named "xxx".  e.g. "\" for CTRL-W.  This is for use
-	in mappings, the 0x80 byte is escaped.  Don't use  to get a
-	utf-8 character, use \uxxxx as mentioned above.
-
-Note that "\xff" is stored as the byte 255, which may be invalid in some
-encodings.  Use "\u00ff" to store character 255 according to the current value
-of 'encoding'.
-
-Note that "\000" and "\x00" force the end of the string.
-
-
-literal-string						*literal-string* *E115*
----------------
-'string'		string constant			*expr-'*
-
-Note that single quotes are used.
-
-This string is taken as it is.	No backslashes are removed or have a special
-meaning.  The only exception is that two quotes stand for one quote.
-
-Single quoted strings are useful for patterns, so that backslashes do not need
-to be doubled.	These two commands are equivalent: >
-	if a =~ "\\s*"
-	if a =~ '\s*'
-
-
-option						*expr-option* *E112* *E113*
-------
-&option			option value, local value if possible
-&g:option		global option value
-&l:option		local option value
-
-Examples: >
-	echo "tabstop is " . &tabstop
-	if &insertmode
-
-Any option name can be used here.  See |options|.  When using the local value
-and there is no buffer-local or window-local value, the global value is used
-anyway.
-
-
-register						*expr-register* *@r*
---------
-@r			contents of register 'r'
-
-The result is the contents of the named register, as a single string.
-Newlines are inserted where required.  To get the contents of the unnamed
-register use @" or @@.	See |registers| for an explanation of the available
-registers.
-
-When using the '=' register you get the expression itself, not what it
-evaluates to.  Use |eval()| to evaluate it.
-
-
-nesting							*expr-nesting* *E110*
--------
-(expr1)			nested expression
-
-
-environment variable					*expr-env*
---------------------
-$VAR			environment variable
-
-The String value of any environment variable.  When it is not defined, the
-result is an empty string.
-						*expr-env-expand*
-Note that there is a difference between using $VAR directly and using
-expand("$VAR").  Using it directly will only expand environment variables that
-are known inside the current Vim session.  Using expand() will first try using
-the environment variables known inside the current Vim session.  If that
-fails, a shell will be used to expand the variable.  This can be slow, but it
-does expand all variables that the shell knows about.  Example: >
-	:echo $version
-	:echo expand("$version")
-The first one probably doesn't echo anything, the second echoes the $version
-variable (if your shell supports it).
-
-
-internal variable					*expr-variable*
------------------
-variable		internal variable
-See below |internal-variables|.
-
-
-function call		*expr-function* *E116* *E118* *E119* *E120*
--------------
-function(expr1, ...)	function call
-See below |functions|.
-
-
-==============================================================================
-3. Internal variable				*internal-variables* *E121*
-									*E461*
-An internal variable name can be made up of letters, digits and '_'.  But it
-cannot start with a digit.  It's also possible to use curly braces, see
-|curly-braces-names|.
-
-An internal variable is created with the ":let" command |:let|.
-An internal variable is explicitly destroyed with the ":unlet" command
-|:unlet|.
-Using a name that is not an internal variable or refers to a variable that has
-been destroyed results in an error.
-
-There are several name spaces for variables.  Which one is to be used is
-specified by what is prepended:
-
-		(nothing) In a function: local to a function; otherwise: global
-|buffer-variable|    b:	  Local to the current buffer.
-|window-variable|    w:	  Local to the current window.
-|tabpage-variable|   t:	  Local to the current tab page.
-|global-variable|    g:	  Global.
-|local-variable|     l:	  Local to a function.
-|script-variable|    s:	  Local to a |:source|'ed Vim script.
-|function-argument|  a:	  Function argument (only inside a function).
-|vim-variable|	     v:	  Global, predefined by Vim.
-
-The scope name by itself can be used as a |Dictionary|.  For example, to
-delete all script-local variables: >
-	:for k in keys(s:)
-	:    unlet s:[k]
-	:endfor
-<
-						*buffer-variable* *b:var*
-A variable name that is preceded with "b:" is local to the current buffer.
-Thus you can have several "b:foo" variables, one for each buffer.
-This kind of variable is deleted when the buffer is wiped out or deleted with
-|:bdelete|.
-
-One local buffer variable is predefined:
-					*b:changedtick-variable* *changetick*
-b:changedtick	The total number of changes to the current buffer.  It is
-		incremented for each change.  An undo command is also a change
-		in this case.  This can be used to perform an action only when
-		the buffer has changed.  Example: >
-		    :if my_changedtick != b:changedtick
-		    :	let my_changedtick = b:changedtick
-		    :	call My_Update()
-		    :endif
-<
-						*window-variable* *w:var*
-A variable name that is preceded with "w:" is local to the current window.  It
-is deleted when the window is closed.
-
-						*tabpage-variable* *t:var*
-A variable name that is preceded with "t:" is local to the current tab page,
-It is deleted when the tab page is closed. {not available when compiled
-without the |+windows| feature}
-
-						*global-variable* *g:var*
-Inside functions global variables are accessed with "g:".  Omitting this will
-access a variable local to a function.	But "g:" can also be used in any other
-place if you like.
-
-						*local-variable* *l:var*
-Inside functions local variables are accessed without prepending anything.
-But you can also prepend "l:" if you like.  However, without prepending "l:"
-you may run into reserved variable names.  For example "count".  By itself it
-refers to "v:count".  Using "l:count" you can have a local variable with the
-same name.
-
-						*script-variable* *s:var*
-In a Vim script variables starting with "s:" can be used.  They cannot be
-accessed from outside of the scripts, thus are local to the script.
-
-They can be used in:
-- commands executed while the script is sourced
-- functions defined in the script
-- autocommands defined in the script
-- functions and autocommands defined in functions and autocommands which were
-  defined in the script (recursively)
-- user defined commands defined in the script
-Thus not in:
-- other scripts sourced from this one
-- mappings
-- menus
-- etc.
-
-Script variables can be used to avoid conflicts with global variable names.
-Take this example: >
-
-	let s:counter = 0
-	function MyCounter()
-	  let s:counter = s:counter + 1
-	  echo s:counter
-	endfunction
-	command Tick call MyCounter()
-
-You can now invoke "Tick" from any script, and the "s:counter" variable in
-that script will not be changed, only the "s:counter" in the script where
-"Tick" was defined is used.
-
-Another example that does the same: >
-
-	let s:counter = 0
-	command Tick let s:counter = s:counter + 1 | echo s:counter
-
-When calling a function and invoking a user-defined command, the context for
-script variables is set to the script where the function or command was
-defined.
-
-The script variables are also available when a function is defined inside a
-function that is defined in a script.  Example: >
-
-	let s:counter = 0
-	function StartCounting(incr)
-	  if a:incr
-	    function MyCounter()
-	      let s:counter = s:counter + 1
-	    endfunction
-	  else
-	    function MyCounter()
-	      let s:counter = s:counter - 1
-	    endfunction
-	  endif
-	endfunction
-
-This defines the MyCounter() function either for counting up or counting down
-when calling StartCounting().  It doesn't matter from where StartCounting() is
-called, the s:counter variable will be accessible in MyCounter().
-
-When the same script is sourced again it will use the same script variables.
-They will remain valid as long as Vim is running.  This can be used to
-maintain a counter: >
-
-	if !exists("s:counter")
-	  let s:counter = 1
-	  echo "script executed for the first time"
-	else
-	  let s:counter = s:counter + 1
-	  echo "script executed " . s:counter . " times now"
-	endif
-
-Note that this means that filetype plugins don't get a different set of script
-variables for each buffer.  Use local buffer variables instead |b:var|.
-
-
-Predefined Vim variables:			*vim-variable* *v:var*
-
-					*v:beval_col* *beval_col-variable*
-v:beval_col	The number of the column, over which the mouse pointer is.
-		This is the byte index in the |v:beval_lnum| line.
-		Only valid while evaluating the 'balloonexpr' option.
-
-					*v:beval_bufnr* *beval_bufnr-variable*
-v:beval_bufnr	The number of the buffer, over which the mouse pointer is. Only
-		valid while evaluating the 'balloonexpr' option.
-
-					*v:beval_lnum* *beval_lnum-variable*
-v:beval_lnum	The number of the line, over which the mouse pointer is. Only
-		valid while evaluating the 'balloonexpr' option.
-
-					*v:beval_text* *beval_text-variable*
-v:beval_text	The text under or after the mouse pointer.  Usually a word as
-		it is useful for debugging a C program.  'iskeyword' applies,
-		but a dot and "->" before the position is included.  When on a
-		']' the text before it is used, including the matching '[' and
-		word before it.  When on a Visual area within one line the
-		highlighted text is used.
-		Only valid while evaluating the 'balloonexpr' option.
-
-					*v:beval_winnr* *beval_winnr-variable*
-v:beval_winnr	The number of the window, over which the mouse pointer is. Only
-		valid while evaluating the 'balloonexpr' option.
-
-					*v:char* *char-variable*
-v:char		Argument for evaluating 'formatexpr' and used for the typed
-		character when using  in an abbreviation |:map-|.
-
-			*v:charconvert_from* *charconvert_from-variable*
-v:charconvert_from
-		The name of the character encoding of a file to be converted.
-		Only valid while evaluating the 'charconvert' option.
-
-			*v:charconvert_to* *charconvert_to-variable*
-v:charconvert_to
-		The name of the character encoding of a file after conversion.
-		Only valid while evaluating the 'charconvert' option.
-
-					*v:cmdarg* *cmdarg-variable*
-v:cmdarg	This variable is used for two purposes:
-		1. The extra arguments given to a file read/write command.
-		   Currently these are "++enc=" and "++ff=".  This variable is
-		   set before an autocommand event for a file read/write
-		   command is triggered.  There is a leading space to make it
-		   possible to append this variable directly after the
-		   read/write command.	Note: The "+cmd" argument isn't
-		   included here, because it will be executed anyway.
-		2. When printing a PostScript file with ":hardcopy" this is
-		   the argument for the ":hardcopy" command.  This can be used
-		   in 'printexpr'.
-
-					*v:cmdbang* *cmdbang-variable*
-v:cmdbang	Set like v:cmdarg for a file read/write command.  When a "!"
-		was used the value is 1, otherwise it is 0.  Note that this
-		can only be used in autocommands.  For user commands ||
-		can be used.
-
-					*v:count* *count-variable*
-v:count		The count given for the last Normal mode command.  Can be used
-		to get the count before a mapping.  Read-only.	Example: >
-	:map _x :echo "the count is " . v:count
-<		Note: The  is required to remove the line range that you
-		get when typing ':' after a count.
-		When there are two counts, as in "3d2w", they are multiplied,
-		just like what happens in the command, "d6w" for the example.
-		Also used for evaluating the 'formatexpr' option.
-		"count" also works, for backwards compatibility.
-
-					*v:count1* *count1-variable*
-v:count1	Just like "v:count", but defaults to one when no count is
-		used.
-
-						*v:ctype* *ctype-variable*
-v:ctype		The current locale setting for characters of the runtime
-		environment.  This allows Vim scripts to be aware of the
-		current locale encoding.  Technical: it's the value of
-		LC_CTYPE.  When not using a locale the value is "C".
-		This variable can not be set directly, use the |:language|
-		command.
-		See |multi-lang|.
-
-					*v:dying* *dying-variable*
-v:dying		Normally zero.	When a deadly signal is caught it's set to
-		one.  When multiple signals are caught the number increases.
-		Can be used in an autocommand to check if Vim didn't
-		terminate normally. {only works on Unix}
-		Example: >
-	:au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif
-<		Note: if another deadly signal is caught when v:dying is one,
-		VimLeave autocommands will not be executed.
-
-					*v:errmsg* *errmsg-variable*
-v:errmsg	Last given error message.  It's allowed to set this variable.
-		Example: >
-	:let v:errmsg = ""
-	:silent! next
-	:if v:errmsg != ""
-	:  ... handle error
-<		"errmsg" also works, for backwards compatibility.
-
-					*v:exception* *exception-variable*
-v:exception	The value of the exception most recently caught and not
-		finished.  See also |v:throwpoint| and |throw-variables|.
-		Example: >
-	:try
-	:  throw "oops"
-	:catch /.*/
-	:  echo "caught" v:exception
-	:endtry
-<		Output: "caught oops".
-
-					*v:fcs_reason* *fcs_reason-variable*
-v:fcs_reason	The reason why the |FileChangedShell| event was triggered.
-		Can be used in an autocommand to decide what to do and/or what
-		to set v:fcs_choice to.  Possible values:
-			deleted		file no longer exists
-			conflict	file contents, mode or timestamp was
-					changed and buffer is modified
-			changed		file contents has changed
-			mode		mode of file changed
-			time		only file timestamp changed
-
-					*v:fcs_choice* *fcs_choice-variable*
-v:fcs_choice	What should happen after a |FileChangedShell| event was
-		triggered.  Can be used in an autocommand to tell Vim what to
-		do with the affected buffer:
-			reload		Reload the buffer (does not work if
-					the file was deleted).
-			ask		Ask the user what to do, as if there
-					was no autocommand.  Except that when
-					only the timestamp changed nothing
-					will happen.
-					Nothing, the autocommand should do
-					everything that needs to be done.
-		The default is empty.  If another (invalid) value is used then
-		Vim behaves like it is empty, there is no warning message.
-
-					*v:fname_in* *fname_in-variable*
-v:fname_in	The name of the input file.  Valid while evaluating:
-			option		used for ~
-			'charconvert'	file to be converted
-			'diffexpr'	original file
-			'patchexpr'	original file
-			'printexpr'	file to be printed
-		And set to the swap file name for |SwapExists|.
-
-					*v:fname_out* *fname_out-variable*
-v:fname_out	The name of the output file.  Only valid while
-		evaluating:
-			option		used for ~
-			'charconvert'	resulting converted file (*)
-			'diffexpr'	output of diff
-			'patchexpr'	resulting patched file
-		(*) When doing conversion for a write command (e.g., ":w
-		file") it will be equal to v:fname_in.	When doing conversion
-		for a read command (e.g., ":e file") it will be a temporary
-		file and different from v:fname_in.
-
-					*v:fname_new* *fname_new-variable*
-v:fname_new	The name of the new version of the file.  Only valid while
-		evaluating 'diffexpr'.
-
-					*v:fname_diff* *fname_diff-variable*
-v:fname_diff	The name of the diff (patch) file.  Only valid while
-		evaluating 'patchexpr'.
-
-					*v:folddashes* *folddashes-variable*
-v:folddashes	Used for 'foldtext': dashes representing foldlevel of a closed
-		fold.
-		Read-only in the |sandbox|. |fold-foldtext|
-
-					*v:foldlevel* *foldlevel-variable*
-v:foldlevel	Used for 'foldtext': foldlevel of closed fold.
-		Read-only in the |sandbox|. |fold-foldtext|
-
-					*v:foldend* *foldend-variable*
-v:foldend	Used for 'foldtext': last line of closed fold.
-		Read-only in the |sandbox|. |fold-foldtext|
-
-					*v:foldstart* *foldstart-variable*
-v:foldstart	Used for 'foldtext': first line of closed fold.
-		Read-only in the |sandbox|. |fold-foldtext|
-
-					*v:insertmode* *insertmode-variable*
-v:insertmode	Used for the |InsertEnter| and |InsertChange| autocommand
-		events.  Values:
-			i	Insert mode
-			r	Replace mode
-			v	Virtual Replace mode
-
-						*v:key* *key-variable*
-v:key		Key of the current item of a |Dictionary|.  Only valid while
-		evaluating the expression used with |map()| and |filter()|.
-		Read-only.
-
-						*v:lang* *lang-variable*
-v:lang		The current locale setting for messages of the runtime
-		environment.  This allows Vim scripts to be aware of the
-		current language.  Technical: it's the value of LC_MESSAGES.
-		The value is system dependent.
-		This variable can not be set directly, use the |:language|
-		command.
-		It can be different from |v:ctype| when messages are desired
-		in a different language than what is used for character
-		encoding.  See |multi-lang|.
-
-						*v:lc_time* *lc_time-variable*
-v:lc_time	The current locale setting for time messages of the runtime
-		environment.  This allows Vim scripts to be aware of the
-		current language.  Technical: it's the value of LC_TIME.
-		This variable can not be set directly, use the |:language|
-		command.  See |multi-lang|.
-
-						*v:lnum* *lnum-variable*
-v:lnum		Line number for the 'foldexpr' |fold-expr|, 'formatexpr' and
-		'indentexpr' expressions, tab page number for 'guitablabel'
-		and 'guitabtooltip'.  Only valid while one of these
-		expressions is being evaluated.  Read-only when in the
-		|sandbox|.
-
-					*v:mouse_win* *mouse_win-variable*
-v:mouse_win	Window number for a mouse click obtained with |getchar()|.
-		First window has number 1, like with |winnr()|.  The value is
-		zero when there was no mouse button click.
-
-					*v:mouse_lnum* *mouse_lnum-variable*
-v:mouse_lnum	Line number for a mouse click obtained with |getchar()|.
-		This is the text line number, not the screen line number.  The
-		value is zero when there was no mouse button click.
-
-					*v:mouse_col* *mouse_col-variable*
-v:mouse_col	Column number for a mouse click obtained with |getchar()|.
-		This is the screen column number, like with |virtcol()|.  The
-		value is zero when there was no mouse button click.
-
-					*v:oldfiles* *oldfiles-variable*
-v:oldfiles	List of file names that is loaded from the |viminfo| file on
-		startup.  These are the files that Vim remembers marks for.
-		The length of the List is limited by the ' argument of the
-		'viminfo' option (default is 100).
-		Also see |:oldfiles| and |c_#<|.
-		The List can be modified, but this has no effect on what is
-		stored in the |viminfo| file later.  If you use values other
-		than String this will cause trouble.
-		{only when compiled with the |+viminfo| feature}
-
-					*v:operator* *operator-variable*
-v:operator	The last operator given in Normal mode.  This is a single
-		character except for commands starting with  or ,
-		in which case it is two characters.  Best used alongside
-		|v:prevcount| and |v:register|.  Useful if you want to cancel
-		Operator-pending mode and then use the operator, e.g.: >
-			:omap O :call MyMotion(v:operator)
-<		The value remains set until another operator is entered, thus
-		don't expect it to be empty.
-		v:operator is not set for |:delete|, |:yank| or other Ex
-		commands.
-		Read-only.
-
-					*v:prevcount* *prevcount-variable*
-v:prevcount	The count given for the last but one Normal mode command.
-		This is the v:count value of the previous command.  Useful if
-		you want to cancel Visual or Operator-pending mode and then
-		use the count, e.g.: >
-			:vmap % :call MyFilter(v:prevcount)
-<		Read-only.
-
-					*v:profiling* *profiling-variable*
-v:profiling	Normally zero.	Set to one after using ":profile start".
-		See |profiling|.
-
-					*v:progname* *progname-variable*
-v:progname	Contains the name (with path removed) with which Vim was
-		invoked.  Allows you to do special initialisations for "view",
-		"evim" etc., or any other name you might symlink to Vim.
-		Read-only.
-
-					*v:register* *register-variable*
-v:register	The name of the register supplied to the last normal mode
-		command.  Empty if none were supplied. |getreg()| |setreg()|
-
-					*v:scrollstart* *scrollstart-variable*
-v:scrollstart	String describing the script or function that caused the
-		screen to scroll up.  It's only set when it is empty, thus the
-		first reason is remembered.  It is set to "Unknown" for a
-		typed command.
-		This can be used to find out why your script causes the
-		hit-enter prompt.
-
-					*v:servername* *servername-variable*
-v:servername	The resulting registered |x11-clientserver| name if any.
-		Read-only.
-
-		
-v:searchforward			*v:searchforward* *searchforward-variable*
-		Search direction:  1 after a forward search, 0 after a
-		backward search.  It is reset to forward when directly setting
-		the last search pattern, see |quote/|.
-		Note that the value is restored when returning from a
-		function. |function-search-undo|.
-		Read-write.
-
-					*v:shell_error* *shell_error-variable*
-v:shell_error	Result of the last shell command.  When non-zero, the last
-		shell command had an error.  When zero, there was no problem.
-		This only works when the shell returns the error code to Vim.
-		The value -1 is often used when the command could not be
-		executed.  Read-only.
-		Example: >
-	:!mv foo bar
-	:if v:shell_error
-	:  echo 'could not rename "foo" to "bar"!'
-	:endif
-<		"shell_error" also works, for backwards compatibility.
-
-					*v:statusmsg* *statusmsg-variable*
-v:statusmsg	Last given status message.  It's allowed to set this variable.
-
-					*v:swapname* *swapname-variable*
-v:swapname	Only valid when executing |SwapExists| autocommands: Name of
-		the swap file found.  Read-only.
-
-					*v:swapchoice* *swapchoice-variable*
-v:swapchoice	|SwapExists| autocommands can set this to the selected choice
-		for handling an existing swap file:
-			'o'	Open read-only
-			'e'	Edit anyway
-			'r'	Recover
-			'd'	Delete swapfile
-			'q'	Quit
-			'a'	Abort
-		The value should be a single-character string.	An empty value
-		results in the user being asked, as would happen when there is
-		no SwapExists autocommand.  The default is empty.
-
-					*v:swapcommand* *swapcommand-variable*
-v:swapcommand	Normal mode command to be executed after a file has been
-		opened.  Can be used for a |SwapExists| autocommand to have
-		another Vim open the file and jump to the right place.	For
-		example, when jumping to a tag the value is ":tag tagname\r".
-		For ":edit +cmd file" the value is ":cmd\r".
-
-				*v:termresponse* *termresponse-variable*
-v:termresponse	The escape sequence returned by the terminal for the |t_RV|
-		termcap entry.	It is set when Vim receives an escape sequence
-		that starts with ESC [ or CSI and ends in a 'c', with only
-		digits, ';' and '.' in between.
-		When this option is set, the TermResponse autocommand event is
-		fired, so that you can react to the response from the
-		terminal.
-		The response from a new xterm is: "[ Pp ; Pv ; Pc c".  Pp
-		is the terminal type: 0 for vt100 and 1 for vt220.  Pv is the
-		patch level (since this was introduced in patch 95, it's
-		always 95 or bigger).  Pc is always zero.
-		{only when compiled with |+termresponse| feature}
-
-				*v:this_session* *this_session-variable*
-v:this_session	Full filename of the last loaded or saved session file.  See
-		|:mksession|.  It is allowed to set this variable.  When no
-		session file has been saved, this variable is empty.
-		"this_session" also works, for backwards compatibility.
-
-					*v:throwpoint* *throwpoint-variable*
-v:throwpoint	The point where the exception most recently caught and not
-		finished was thrown.  Not set when commands are typed.	See
-		also |v:exception| and |throw-variables|.
-		Example: >
-	:try
-	:  throw "oops"
-	:catch /.*/
-	:  echo "Exception from" v:throwpoint
-	:endtry
-<		Output: "Exception from test.vim, line 2"
-
-						*v:val* *val-variable*
-v:val		Value of the current item of a |List| or |Dictionary|.	Only
-		valid while evaluating the expression used with |map()| and
-		|filter()|.  Read-only.
-
-					*v:version* *version-variable*
-v:version	Version number of Vim: Major version number times 100 plus
-		minor version number.  Version 5.0 is 500.  Version 5.1 (5.01)
-		is 501.  Read-only.  "version" also works, for backwards
-		compatibility.
-		Use |has()| to check if a certain patch was included, e.g.: >
-			if has("patch123")
-<		Note that patch numbers are specific to the version, thus both
-		version 5.0 and 5.1 may have a patch 123, but these are
-		completely different.
-
-					*v:warningmsg* *warningmsg-variable*
-v:warningmsg	Last given warning message.  It's allowed to set this variable.
-
-==============================================================================
-4. Builtin Functions					*functions*
-
-See |function-list| for a list grouped by what the function is used for.
-
-(Use CTRL-] on the function name to jump to the full explanation.)
-
-USAGE				RESULT	DESCRIPTION	~
-
-abs( {expr})			Float or Number  absolute value of {expr}
-acos( {expr})			Float	arc cosine of {expr}
-add( {list}, {item})		List	append {item} to |List| {list}
-append( {lnum}, {string})	Number	append {string} below line {lnum}
-append( {lnum}, {list})		Number	append lines {list} below line {lnum}
-argc()				Number	number of files in the argument list
-argidx()			Number	current index in the argument list
-argv( {nr})			String	{nr} entry of the argument list
-argv( )				List	the argument list
-asin( {expr})			Float	arc sine of {expr}
-atan( {expr})			Float	arc tangent of {expr}
-atan2( {expr}, {expr})		Float   arc tangent of {expr1} / {expr2}
-browse( {save}, {title}, {initdir}, {default})
-				String	put up a file requester
-browsedir( {title}, {initdir})	String	put up a directory requester
-bufexists( {expr})		Number	TRUE if buffer {expr} exists
-buflisted( {expr})		Number	TRUE if buffer {expr} is listed
-bufloaded( {expr})		Number	TRUE if buffer {expr} is loaded
-bufname( {expr})		String	Name of the buffer {expr}
-bufnr( {expr})			Number	Number of the buffer {expr}
-bufwinnr( {expr})		Number	window number of buffer {expr}
-byte2line( {byte})		Number	line number at byte count {byte}
-byteidx( {expr}, {nr})		Number	byte index of {nr}'th char in {expr}
-call( {func}, {arglist} [, {dict}])
-				any	call {func} with arguments {arglist}
-ceil( {expr})			Float	round {expr} up
-changenr()			Number	current change number
-char2nr( {expr})		Number	ASCII value of first char in {expr}
-cindent( {lnum})		Number	C indent for line {lnum}
-clearmatches()			none	clear all matches
-col( {expr})			Number	column nr of cursor or mark
-complete( {startcol}, {matches}) none	set Insert mode completion
-complete_add( {expr})		Number	add completion match
-complete_check()		Number	check for key typed during completion
-confirm( {msg} [, {choices} [, {default} [, {type}]]])
-				Number	number of choice picked by user
-copy( {expr})			any	make a shallow copy of {expr}
-cos( {expr})			Float	cosine of {expr}
-cosh( {expr})			Float	hyperbolic cosine of {expr}
-count( {list}, {expr} [, {start} [, {ic}]])
-				Number	 count how many {expr} are in {list}
-cscope_connection( [{num} , {dbpath} [, {prepend}]])
-				Number	checks existence of cscope connection
-cursor( {lnum}, {col} [, {coladd}])
-				Number	move cursor to {lnum}, {col}, {coladd}
-cursor( {list})			Number	move cursor to position in {list}
-deepcopy( {expr})		any	make a full copy of {expr}
-delete( {fname})		Number	delete file {fname}
-did_filetype()			Number	TRUE if FileType autocommand event used
-diff_filler( {lnum})		Number	diff filler lines about {lnum}
-diff_hlID( {lnum}, {col})	Number	diff highlighting at {lnum}/{col}
-empty( {expr})			Number	TRUE if {expr} is empty
-escape( {string}, {chars})	String	escape {chars} in {string} with '\'
-eval( {string})			any	evaluate {string} into its value
-eventhandler( )			Number	TRUE if inside an event handler
-executable( {expr})		Number	1 if executable {expr} exists
-exists( {expr})			Number	TRUE if {expr} exists
-extend( {expr1}, {expr2} [, {expr3}])
-				List/Dict insert items of {expr2} into {expr1}
-exp( {expr})			Float	exponential of {expr}
-expand( {expr} [, {flag}])	String	expand special keywords in {expr}
-feedkeys( {string} [, {mode}])	Number	add key sequence to typeahead buffer
-filereadable( {file})		Number	TRUE if {file} is a readable file
-filewritable( {file})		Number	TRUE if {file} is a writable file
-filter( {expr}, {string})	List/Dict  remove items from {expr} where
-					{string} is 0
-finddir( {name}[, {path}[, {count}]])
-				String	find directory {name} in {path}
-findfile( {name}[, {path}[, {count}]])
-				String	find file {name} in {path}
-float2nr( {expr})		Number	convert Float {expr} to a Number
-floor( {expr})			Float	round {expr} down
-fmod( {expr1}, {expr2})		Float	remainder of {expr1} / {expr2}
-fnameescape( {fname})		String	escape special characters in {fname}
-fnamemodify( {fname}, {mods})	String	modify file name
-foldclosed( {lnum})		Number	first line of fold at {lnum} if closed
-foldclosedend( {lnum})		Number	last line of fold at {lnum} if closed
-foldlevel( {lnum})		Number	fold level at {lnum}
-foldtext( )			String	line displayed for closed fold
-foldtextresult( {lnum})		String	text for closed fold at {lnum}
-foreground( )			Number	bring the Vim window to the foreground
-function( {name})		Funcref reference to function {name}
-garbagecollect( [at_exit])	none	free memory, breaking cyclic references
-get( {list}, {idx} [, {def}])	any	get item {idx} from {list} or {def}
-get( {dict}, {key} [, {def}])	any	get item {key} from {dict} or {def}
-getbufline( {expr}, {lnum} [, {end}])
-				List	lines {lnum} to {end} of buffer {expr}
-getbufvar( {expr}, {varname})	any	variable {varname} in buffer {expr}
-getchar( [expr])		Number	get one character from the user
-getcharmod( )			Number	modifiers for the last typed character
-getcmdline()			String	return the current command-line
-getcmdpos()			Number	return cursor position in command-line
-getcmdtype()			String	return the current command-line type
-getcwd()			String	the current working directory
-getfperm( {fname})		String	file permissions of file {fname}
-getfsize( {fname})		Number	size in bytes of file {fname}
-getfontname( [{name}])		String	name of font being used
-getftime( {fname})		Number	last modification time of file
-getftype( {fname})		String	description of type of file {fname}
-getline( {lnum})		String	line {lnum} of current buffer
-getline( {lnum}, {end})		List	lines {lnum} to {end} of current buffer
-getloclist( {nr})		List	list of location list items
-getmatches()			List	list of current matches
-getpid()			Number	process ID of Vim
-getpos( {expr})			List	position of cursor, mark, etc.
-getqflist()			List	list of quickfix items
-getreg( [{regname} [, 1]])	String	contents of register
-getregtype( [{regname}])	String	type of register
-gettabvar( {nr}, {varname})	any	variable {varname} in tab {nr}
-gettabwinvar( {tabnr}, {winnr}, {name})
-				any	{name} in {winnr} in tab page {tabnr}
-getwinposx()			Number	X coord in pixels of GUI Vim window
-getwinposy()			Number	Y coord in pixels of GUI Vim window
-getwinvar( {nr}, {varname})	any	variable {varname} in window {nr}
-glob( {expr} [, {flag}])	String	expand file wildcards in {expr}
-globpath( {path}, {expr} [, {flag}])
-				String	do glob({expr}) for all dirs in {path}
-has( {feature})			Number	TRUE if feature {feature} supported
-has_key( {dict}, {key})		Number	TRUE if {dict} has entry {key}
-haslocaldir()			Number	TRUE if current window executed |:lcd|
-hasmapto( {what} [, {mode} [, {abbr}]])
-				Number	TRUE if mapping to {what} exists
-histadd( {history},{item})	String	add an item to a history
-histdel( {history} [, {item}])	String	remove an item from a history
-histget( {history} [, {index}])	String	get the item {index} from a history
-histnr( {history})		Number	highest index of a history
-hlexists( {name})		Number	TRUE if highlight group {name} exists
-hlID( {name})			Number	syntax ID of highlight group {name}
-hostname()			String	name of the machine Vim is running on
-iconv( {expr}, {from}, {to})	String	convert encoding of {expr}
-indent( {lnum})			Number	indent of line {lnum}
-index( {list}, {expr} [, {start} [, {ic}]])
-				Number	index in {list} where {expr} appears
-input( {prompt} [, {text} [, {completion}]])
-				String	get input from the user
-inputdialog( {p} [, {t} [, {c}]]) String  like input() but in a GUI dialog
-inputlist( {textlist})		Number	let the user pick from a choice list
-inputrestore()			Number	restore typeahead
-inputsave()			Number	save and clear typeahead
-inputsecret( {prompt} [, {text}]) String  like input() but hiding the text
-insert( {list}, {item} [, {idx}]) List	insert {item} in {list} [before {idx}]
-isdirectory( {directory})	Number	TRUE if {directory} is a directory
-islocked( {expr})		Number	TRUE if {expr} is locked
-items( {dict})			List	key-value pairs in {dict}
-join( {list} [, {sep}])		String	join {list} items into one String
-keys( {dict})			List	keys in {dict}
-len( {expr})			Number	the length of {expr}
-libcall( {lib}, {func}, {arg})	String	call {func} in library {lib} with {arg}
-libcallnr( {lib}, {func}, {arg})  Number  idem, but return a Number
-line( {expr})			Number	line nr of cursor, last line or mark
-line2byte( {lnum})		Number	byte count of line {lnum}
-lispindent( {lnum})		Number	Lisp indent for line {lnum}
-localtime()			Number	current time
-log( {expr})			Float	natural logarithm (base e) of {expr}
-log10( {expr})			Float	logarithm of Float {expr} to base 10
-map( {expr}, {string})		List/Dict  change each item in {expr} to {expr}
-maparg( {name}[, {mode} [, {abbr}]])
-				String	rhs of mapping {name} in mode {mode}
-mapcheck( {name}[, {mode} [, {abbr}]])
-				String	check for mappings matching {name}
-match( {expr}, {pat}[, {start}[, {count}]])
-				Number	position where {pat} matches in {expr}
-matchadd( {group}, {pattern}[, {priority}[, {id}]])
-				Number	highlight {pattern} with {group}
-matcharg( {nr})			List	arguments of |:match|
-matchdelete( {id})		Number	delete match identified by {id}
-matchend( {expr}, {pat}[, {start}[, {count}]])
-				Number	position where {pat} ends in {expr}
-matchlist( {expr}, {pat}[, {start}[, {count}]])
-				List	match and submatches of {pat} in {expr}
-matchstr( {expr}, {pat}[, {start}[, {count}]])
-				String	{count}'th match of {pat} in {expr}
-max( {list})			Number	maximum value of items in {list}
-min( {list})			Number	minimum value of items in {list}
-mkdir( {name} [, {path} [, {prot}]])
-				Number	create directory {name}
-mode( [expr])			String	current editing mode
-mzeval( {expr})			any	evaluate |MzScheme| expression
-nextnonblank( {lnum})		Number	line nr of non-blank line >= {lnum}
-nr2char( {expr})		String	single char with ASCII value {expr}
-pathshorten( {expr})		String	shorten directory names in a path
-pow( {x}, {y})			Float	{x} to the power of {y}
-prevnonblank( {lnum})		Number	line nr of non-blank line <= {lnum}
-printf( {fmt}, {expr1}...)	String	format text
-pumvisible()			Number	whether popup menu is visible
-range( {expr} [, {max} [, {stride}]])
-				List	items from {expr} to {max}
-readfile( {fname} [, {binary} [, {max}]])
-				List	get list of lines from file {fname}
-reltime( [{start} [, {end}]])	List	get time value
-reltimestr( {time})		String	turn time value into a String
-remote_expr( {server}, {string} [, {idvar}])
-				String	send expression
-remote_foreground( {server})	Number	bring Vim server to the foreground
-remote_peek( {serverid} [, {retvar}])
-				Number	check for reply string
-remote_read( {serverid})	String	read reply string
-remote_send( {server}, {string} [, {idvar}])
-				String	send key sequence
-remove( {list}, {idx} [, {end}])  any	remove items {idx}-{end} from {list}
-remove( {dict}, {key})		any	remove entry {key} from {dict}
-rename( {from}, {to})		Number	rename (move) file from {from} to {to}
-repeat( {expr}, {count})	String	repeat {expr} {count} times
-resolve( {filename})		String	get filename a shortcut points to
-reverse( {list})		List	reverse {list} in-place
-round( {expr})			Float	round off {expr}
-search( {pattern} [, {flags} [, {stopline} [, {timeout}]]])
-				Number	search for {pattern}
-searchdecl( {name} [, {global} [, {thisblock}]])
-				Number	search for variable declaration
-searchpair( {start}, {middle}, {end} [, {flags} [, {skip} [...]]])
-				Number	search for other end of start/end pair
-searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip} [...]]])
-				List	search for other end of start/end pair
-searchpos( {pattern} [, {flags} [, {stopline} [, {timeout}]]])
-				List	search for {pattern}
-server2client( {clientid}, {string})
-				Number	send reply string
-serverlist()			String	get a list of available servers
-setbufvar( {expr}, {varname}, {val})	set {varname} in buffer {expr} to {val}
-setcmdpos( {pos})		Number	set cursor position in command-line
-setline( {lnum}, {line})	Number	set line {lnum} to {line}
-setloclist( {nr}, {list}[, {action}])
-				Number	modify location list using {list}
-setmatches( {list})		Number	restore a list of matches
-setpos( {expr}, {list})		Number	set the {expr} position to {list}
-setqflist( {list}[, {action}])	Number	modify quickfix list using {list}
-setreg( {n}, {v}[, {opt}])	Number	set register to value and type
-settabvar( {nr}, {varname}, {val})	set {varname} in tab page {nr} to {val}
-settabwinvar( {tabnr}, {winnr}, {varname}, {val})    set {varname} in window
-					{winnr} in tab page {tabnr} to {val}
-setwinvar( {nr}, {varname}, {val})	set {varname} in window {nr} to {val}
-shellescape( {string} [, {special}])
-				String	escape {string} for use as shell
-					command argument
-simplify( {filename})		String	simplify filename as much as possible
-sin( {expr})			Float	sine of {expr}
-sinh( {expr})			Float	hyperbolic sine of {expr}
-sort( {list} [, {func}])	List	sort {list}, using {func} to compare
-soundfold( {word})		String	sound-fold {word}
-spellbadword()			String	badly spelled word at cursor
-spellsuggest( {word} [, {max} [, {capital}]])
-				List	spelling suggestions
-split( {expr} [, {pat} [, {keepempty}]])
-				List	make |List| from {pat} separated {expr}
-sqrt( {expr}			Float	squar root of {expr}
-str2float( {expr})		Float	convert String to Float
-str2nr( {expr} [, {base}])	Number	convert String to Number
-strchars( {expr})		Number	character length of the String {expr}
-strdisplaywidth( {expr} [, {col}]) Number display length of the String {expr}
-strftime( {format}[, {time}])	String	time in specified format
-stridx( {haystack}, {needle}[, {start}])
-				Number	index of {needle} in {haystack}
-string( {expr})			String	String representation of {expr} value
-strlen( {expr})			Number	length of the String {expr}
-strpart( {src}, {start}[, {len}])
-				String	{len} characters of {src} at {start}
-strridx( {haystack}, {needle} [, {start}])
-				Number	last index of {needle} in {haystack}
-strtrans( {expr})		String	translate string to make it printable
-strwidth( {expr})		Number	display cell length of the String {expr}
-submatch( {nr})			String	specific match in ":substitute"
-substitute( {expr}, {pat}, {sub}, {flags})
-				String	all {pat} in {expr} replaced with {sub}
-synID( {lnum}, {col}, {trans})	Number	syntax ID at {lnum} and {col}
-synIDattr( {synID}, {what} [, {mode}])
-				String	attribute {what} of syntax ID {synID}
-synIDtrans( {synID})		Number	translated syntax ID of {synID}
-synstack( {lnum}, {col})	List	stack of syntax IDs at {lnum} and {col}
-system( {expr} [, {input}])	String	output of shell command/filter {expr}
-tabpagebuflist( [{arg}])	List	list of buffer numbers in tab page
-tabpagenr( [{arg}])		Number	number of current or last tab page
-tabpagewinnr( {tabarg}[, {arg}])
-				Number	number of current window in tab page
-taglist( {expr})		List	list of tags matching {expr}
-tagfiles()			List	tags files used
-tempname()			String	name for a temporary file
-tan( {expr})			Float	tangent of {expr}
-tanh( {expr})			Float	hyperbolic tangent of {expr}
-tolower( {expr})		String	the String {expr} switched to lowercase
-toupper( {expr})		String	the String {expr} switched to uppercase
-tr( {src}, {fromstr}, {tostr})	String	translate chars of {src} in {fromstr}
-					to chars in {tostr}
-trunc( {expr}			Float	truncate Float {expr}
-type( {name})			Number	type of variable {name}
-undofile( {name})		String	undo file name for {name}
-undotree()			List	undo file tree
-values( {dict})			List	values in {dict}
-virtcol( {expr})		Number	screen column of cursor or mark
-visualmode( [expr])		String	last visual mode used
-winbufnr( {nr})			Number	buffer number of window {nr}
-wincol()			Number	window column of the cursor
-winheight( {nr})		Number	height of window {nr}
-winline()			Number	window line of the cursor
-winnr( [{expr}])		Number	number of current window
-winrestcmd()			String	returns command to restore window sizes
-winrestview( {dict})		none	restore view of current window
-winsaveview()			Dict	save view of current window
-winwidth( {nr})			Number	width of window {nr}
-writefile( {list}, {fname} [, {binary}])
-				Number	write list of lines to file {fname}
-
-abs({expr})							*abs()*
-		Return the absolute value of {expr}.  When {expr} evaluates to
-		a |Float| abs() returns a |Float|.  When {expr} can be
-		converted to a |Number| abs() returns a |Number|.  Otherwise
-		abs() gives an error message and returns -1.
-		Examples: >
-			echo abs(1.456)
-<			1.456  >
-			echo abs(-5.456)
-<			5.456  >
-			echo abs(-4)
-<			4
-		{only available when compiled with the |+float| feature}
-
-
-acos({expr})							*acos()*
-		Return the arc cosine of {expr} measured in radians, as a
-		|Float| in the range of [0, pi].
-		{expr} must evaluate to a |Float| or a |Number| in the range
-		[-1, 1].
-		Examples: >
-			:echo acos(0)
-<			1.570796 >
-			:echo acos(-0.5)
-<			2.094395
-		{only available when compiled with the |+float| feature}
-
-
-add({list}, {expr})					*add()*
-		Append the item {expr} to |List| {list}.  Returns the
-		resulting |List|.  Examples: >
-			:let alist = add([1, 2, 3], item)
-			:call add(mylist, "woodstock")
-<		Note that when {expr} is a |List| it is appended as a single
-		item.  Use |extend()| to concatenate |Lists|.
-		Use |insert()| to add an item at another position.
-
-
-append({lnum}, {expr})					*append()*
-		When {expr} is a |List|: Append each item of the |List| as a
-		text line below line {lnum} in the current buffer.
-		Otherwise append {expr} as one text line below line {lnum} in
-		the current buffer.
-		{lnum} can be zero to insert a line before the first one.
-		Returns 1 for failure ({lnum} out of range or out of memory),
-		0 for success.	Example: >
-			:let failed = append(line('$'), "# THE END")
-			:let failed = append(0, ["Chapter 1", "the beginning"])
-<
-							*argc()*
-argc()		The result is the number of files in the argument list of the
-		current window.  See |arglist|.
-
-							*argidx()*
-argidx()	The result is the current index in the argument list.  0 is
-		the first file.  argc() - 1 is the last one.  See |arglist|.
-
-							*argv()*
-argv([{nr}])	The result is the {nr}th file in the argument list of the
-		current window.  See |arglist|.  "argv(0)" is the first one.
-		Example: >
-	:let i = 0
-	:while i < argc()
-	:  let f = escape(fnameescape(argv(i)), '.')
-	:  exe 'amenu Arg.' . f . ' :e ' . f . ''
-	:  let i = i + 1
-	:endwhile
-<		Without the {nr} argument a |List| with the whole |arglist| is
-		returned.
-
-asin({expr})						*asin()*
-		Return the arc sine of {expr} measured in radians, as a |Float|
-		in the range of [-pi/2, pi/2].
-		{expr} must evaluate to a |Float| or a |Number| in the range
-		[-1, 1].
-		Examples: >
-			:echo asin(0.8)
-<			0.927295 >
-			:echo asin(-0.5)
-<			-0.523599
-		{only available when compiled with the |+float| feature}
-
-
-atan({expr})						*atan()*
-		Return the principal value of the arc tangent of {expr}, in
-		the range [-pi/2, +pi/2] radians, as a |Float|.
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo atan(100)
-<			1.560797 >
-			:echo atan(-4.01)
-<			-1.326405
-		{only available when compiled with the |+float| feature}
-
-
-atan2({expr1}, {expr2})					*atan2()*
-		Return the arc tangent of {expr1} / {expr2}, measured in
-		radians, as a |Float| in the range [-pi, pi].
-		{expr1} and {expr2} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo atan2(-1, 1)
-<			-0.785398 >
-			:echo atan2(1, -1)
-<			2.356194
-		{only available when compiled with the |+float| feature}
-
-
-							*browse()*
-browse({save}, {title}, {initdir}, {default})
-		Put up a file requester.  This only works when "has("browse")"
-		returns non-zero (only in some GUI versions).
-		The input fields are:
-		    {save}	when non-zero, select file to write
-		    {title}	title for the requester
-		    {initdir}	directory to start browsing in
-		    {default}	default file name
-		When the "Cancel" button is hit, something went wrong, or
-		browsing is not possible, an empty string is returned.
-
-							*browsedir()*
-browsedir({title}, {initdir})
-		Put up a directory requester.  This only works when
-		"has("browse")" returns non-zero (only in some GUI versions).
-		On systems where a directory browser is not supported a file
-		browser is used.  In that case: select a file in the directory
-		to be used.
-		The input fields are:
-		    {title}	title for the requester
-		    {initdir}	directory to start browsing in
-		When the "Cancel" button is hit, something went wrong, or
-		browsing is not possible, an empty string is returned.
-
-bufexists({expr})					*bufexists()*
-		The result is a Number, which is non-zero if a buffer called
-		{expr} exists.
-		If the {expr} argument is a number, buffer numbers are used.
-		If the {expr} argument is a string it must match a buffer name
-		exactly.  The name can be:
-		- Relative to the current directory.
-		- A full path.
-		- The name of a buffer with 'buftype' set to "nofile".
-		- A URL name.
-		Unlisted buffers will be found.
-		Note that help files are listed by their short name in the
-		output of |:buffers|, but bufexists() requires using their
-		long name to be able to find them.
-		bufexists() may report a buffer exists, but to use the name
-		with a |:buffer| command you may need to use |expand()|.  Esp
-		for MS-Windows 8.3 names in the form "c:\DOCUME~1"
-		Use "bufexists(0)" to test for the existence of an alternate
-		file name.
-							*buffer_exists()*
-		Obsolete name: buffer_exists().
-
-buflisted({expr})					*buflisted()*
-		The result is a Number, which is non-zero if a buffer called
-		{expr} exists and is listed (has the 'buflisted' option set).
-		The {expr} argument is used like with |bufexists()|.
-
-bufloaded({expr})					*bufloaded()*
-		The result is a Number, which is non-zero if a buffer called
-		{expr} exists and is loaded (shown in a window or hidden).
-		The {expr} argument is used like with |bufexists()|.
-
-bufname({expr})						*bufname()*
-		The result is the name of a buffer, as it is displayed by the
-		":ls" command.
-		If {expr} is a Number, that buffer number's name is given.
-		Number zero is the alternate buffer for the current window.
-		If {expr} is a String, it is used as a |file-pattern| to match
-		with the buffer names.	This is always done like 'magic' is
-		set and 'cpoptions' is empty.  When there is more than one
-		match an empty string is returned.
-		"" or "%" can be used for the current buffer, "#" for the
-		alternate buffer.
-		A full match is preferred, otherwise a match at the start, end
-		or middle of the buffer name is accepted.  If you only want a
-		full match then put "^" at the start and "$" at the end of the
-		pattern.
-		Listed buffers are found first.  If there is a single match
-		with a listed buffer, that one is returned.  Next unlisted
-		buffers are searched for.
-		If the {expr} is a String, but you want to use it as a buffer
-		number, force it to be a Number by adding zero to it: >
-			:echo bufname("3" + 0)
-<		If the buffer doesn't exist, or doesn't have a name, an empty
-		string is returned. >
-	bufname("#")		alternate buffer name
-	bufname(3)		name of buffer 3
-	bufname("%")		name of current buffer
-	bufname("file2")	name of buffer where "file2" matches.
-<							*buffer_name()*
-		Obsolete name: buffer_name().
-
-							*bufnr()*
-bufnr({expr} [, {create}])
-		The result is the number of a buffer, as it is displayed by
-		the ":ls" command.  For the use of {expr}, see |bufname()|
-		above.
-		If the buffer doesn't exist, -1 is returned.  Or, if the
-		{create} argument is present and not zero, a new, unlisted,
-		buffer is created and its number is returned.
-		bufnr("$") is the last buffer: >
-	:let last_buffer = bufnr("$")
-<		The result is a Number, which is the highest buffer number
-		of existing buffers.  Note that not all buffers with a smaller
-		number necessarily exist, because ":bwipeout" may have removed
-		them.  Use bufexists() to test for the existence of a buffer.
-							*buffer_number()*
-		Obsolete name: buffer_number().
-							*last_buffer_nr()*
-		Obsolete name for bufnr("$"): last_buffer_nr().
-
-bufwinnr({expr})					*bufwinnr()*
-		The result is a Number, which is the number of the first
-		window associated with buffer {expr}.  For the use of {expr},
-		see |bufname()| above.	If buffer {expr} doesn't exist or
-		there is no such window, -1 is returned.  Example: >
-
-	echo "A window containing buffer 1 is " . (bufwinnr(1))
-
-<		The number can be used with |CTRL-W_w| and ":wincmd w"
-		|:wincmd|.
-		Only deals with the current tab page.
-
-
-byte2line({byte})					*byte2line()*
-		Return the line number that contains the character at byte
-		count {byte} in the current buffer.  This includes the
-		end-of-line character, depending on the 'fileformat' option
-		for the current buffer.  The first character has byte count
-		one.
-		Also see |line2byte()|, |go| and |:goto|.
-		{not available when compiled without the |+byte_offset|
-		feature}
-
-byteidx({expr}, {nr})					*byteidx()*
-		Return byte index of the {nr}'th character in the string
-		{expr}.  Use zero for the first character, it returns zero.
-		This function is only useful when there are multibyte
-		characters, otherwise the returned value is equal to {nr}.
-		Composing characters are counted as a separate character.
-		Example : >
-			echo matchstr(str, ".", byteidx(str, 3))
-<		will display the fourth character.  Another way to do the
-		same: >
-			let s = strpart(str, byteidx(str, 3))
-			echo strpart(s, 0, byteidx(s, 1))
-<		If there are less than {nr} characters -1 is returned.
-		If there are exactly {nr} characters the length of the string
-		is returned.
-
-call({func}, {arglist} [, {dict}])			*call()* *E699*
-		Call function {func} with the items in |List| {arglist} as
-		arguments.
-		{func} can either be a |Funcref| or the name of a function.
-		a:firstline and a:lastline are set to the cursor line.
-		Returns the return value of the called function.
-		{dict} is for functions with the "dict" attribute.  It will be
-		used to set the local variable "self". |Dictionary-function|
-
-ceil({expr})							*ceil()*
-		Return the smallest integral value greater than or equal to
-		{expr} as a |Float| (round up).
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			echo ceil(1.456)
-<			2.0  >
-			echo ceil(-5.456)
-<			-5.0  >
-			echo ceil(4.0)
-<			4.0
-		{only available when compiled with the |+float| feature}
-
-changenr()						*changenr()*
-		Return the number of the most recent change.  This is the same
-		number as what is displayed with |:undolist| and can be used
-		with the |:undo| command.
-		When a change was made it is the number of that change.  After
-		redo it is the number of the redone change.  After undo it is
-		one less than the number of the undone change.
-
-char2nr({expr})						*char2nr()*
-		Return number value of the first char in {expr}.  Examples: >
-			char2nr(" ")		returns 32
-			char2nr("ABC")		returns 65
-<		The current 'encoding' is used.  Example for "utf-8": >
-			char2nr("á")		returns 225
-			char2nr("á"[0])		returns 195
-<		|nr2char()| does the opposite.
-
-cindent({lnum})						*cindent()*
-		Get the amount of indent for line {lnum} according the C
-		indenting rules, as with 'cindent'.
-		The indent is counted in spaces, the value of 'tabstop' is
-		relevant.  {lnum} is used just like in |getline()|.
-		When {lnum} is invalid or Vim was not compiled the |+cindent|
-		feature, -1 is returned.
-		See |C-indenting|.
-
-clearmatches()						*clearmatches()*
-		Clears all matches previously defined by |matchadd()| and the
-		|:match| commands.
-
-							*col()*
-col({expr})	The result is a Number, which is the byte index of the column
-		position given with {expr}.  The accepted positions are:
-		    .	    the cursor position
-		    $	    the end of the cursor line (the result is the
-			    number of characters in the cursor line plus one)
-		    'x	    position of mark x (if the mark is not set, 0 is
-			    returned)
-		Additionally {expr} can be [lnum, col]: a |List| with the line
-		and column number. Most useful when the column is "$", to get
-		the last column of a specific line.  When "lnum" or "col" is
-		out of range then col() returns zero.
-		To get the line number use |line()|.  To get both use
-		|getpos()|.
-		For the screen column position use |virtcol()|.
-		Note that only marks in the current file can be used.
-		Examples: >
-			col(".")		column of cursor
-			col("$")		length of cursor line plus one
-			col("'t")		column of mark t
-			col("'" . markname)	column of mark markname
-<		The first column is 1.	0 is returned for an error.
-		For an uppercase mark the column may actually be in another
-		buffer.
-		For the cursor position, when 'virtualedit' is active, the
-		column is one higher if the cursor is after the end of the
-		line.  This can be used to obtain the column in Insert mode: >
-			:imap  :let save_ve = &ve
-				\:set ve=all
-				\:echo col(".") . "\n" 
-				\let &ve = save_ve
-<
-
-complete({startcol}, {matches})			*complete()* *E785*
-		Set the matches for Insert mode completion.
-		Can only be used in Insert mode.  You need to use a mapping
-		with CTRL-R = |i_CTRL-R|.  It does not work after CTRL-O or
-		with an expression mapping.
-		{startcol} is the byte offset in the line where the completed
-		text start.  The text up to the cursor is the original text
-		that will be replaced by the matches.  Use col('.') for an
-		empty string.  "col('.') - 1" will replace one character by a
-		match.
-		{matches} must be a |List|.  Each |List| item is one match.
-		See |complete-items| for the kind of items that are possible.
-		Note that the after calling this function you need to avoid
-		inserting anything that would cause completion to stop.
-		The match can be selected with CTRL-N and CTRL-P as usual with
-		Insert mode completion.  The popup menu will appear if
-		specified, see |ins-completion-menu|.
-		Example: >
-	inoremap  =ListMonths()
-
-	func! ListMonths()
-	  call complete(col('.'), ['January', 'February', 'March',
-		\ 'April', 'May', 'June', 'July', 'August', 'September',
-		\ 'October', 'November', 'December'])
-	  return ''
-	endfunc
-<		This isn't very useful, but it shows how it works.  Note that
-		an empty string is returned to avoid a zero being inserted.
-
-complete_add({expr})				*complete_add()*
-		Add {expr} to the list of matches.  Only to be used by the
-		function specified with the 'completefunc' option.
-		Returns 0 for failure (empty string or out of memory),
-		1 when the match was added, 2 when the match was already in
-		the list.
-		See |complete-functions| for an explanation of {expr}.	It is
-		the same as one item in the list that 'omnifunc' would return.
-
-complete_check()				*complete_check()*
-		Check for a key typed while looking for completion matches.
-		This is to be used when looking for matches takes some time.
-		Returns non-zero when searching for matches is to be aborted,
-		zero otherwise.
-		Only to be used by the function specified with the
-		'completefunc' option.
-
-						*confirm()*
-confirm({msg} [, {choices} [, {default} [, {type}]]])
-		Confirm() offers the user a dialog, from which a choice can be
-		made.  It returns the number of the choice.  For the first
-		choice this is 1.
-		Note: confirm() is only supported when compiled with dialog
-		support, see |+dialog_con| and |+dialog_gui|.
-
-		{msg} is displayed in a |dialog| with {choices} as the
-		alternatives.  When {choices} is missing or empty, "&OK" is
-		used (and translated).
-		{msg} is a String, use '\n' to include a newline.  Only on
-		some systems the string is wrapped when it doesn't fit.
-
-		{choices} is a String, with the individual choices separated
-		by '\n', e.g. >
-			confirm("Save changes?", "&Yes\n&No\n&Cancel")
-<		The letter after the '&' is the shortcut key for that choice.
-		Thus you can type 'c' to select "Cancel".  The shortcut does
-		not need to be the first letter: >
-			confirm("file has been modified", "&Save\nSave &All")
-<		For the console, the first letter of each choice is used as
-		the default shortcut key.
-
-		The optional {default} argument is the number of the choice
-		that is made if the user hits .  Use 1 to make the first
-		choice the default one.  Use 0 to not set a default.  If
-		{default} is omitted, 1 is used.
-
-		The optional {type} argument gives the type of dialog.  This
-		is only used for the icon of the GTK, Mac, Motif and Win32
-		GUI.  It can be one of these values: "Error", "Question",
-		"Info", "Warning" or "Generic".  Only the first character is
-		relevant.  When {type} is omitted, "Generic" is used.
-
-		If the user aborts the dialog by pressing , CTRL-C,
-		or another valid interrupt key, confirm() returns 0.
-
-		An example: >
-   :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2)
-   :if choice == 0
-   :	echo "make up your mind!"
-   :elseif choice == 3
-   :	echo "tasteful"
-   :else
-   :	echo "I prefer bananas myself."
-   :endif
-<		In a GUI dialog, buttons are used.  The layout of the buttons
-		depends on the 'v' flag in 'guioptions'.  If it is included,
-		the buttons are always put vertically.	Otherwise,  confirm()
-		tries to put the buttons in one horizontal line.  If they
-		don't fit, a vertical layout is used anyway.  For some systems
-		the horizontal layout is always used.
-
-							*copy()*
-copy({expr})	Make a copy of {expr}.	For Numbers and Strings this isn't
-		different from using {expr} directly.
-		When {expr} is a |List| a shallow copy is created.  This means
-		that the original |List| can be changed without changing the
-		copy, and vice versa.  But the items are identical, thus
-		changing an item changes the contents of both |Lists|.	Also
-		see |deepcopy()|.
-
-cos({expr})						*cos()*
-		Return the cosine of {expr}, measured in radians, as a |Float|.
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo cos(100)
-<			0.862319 >
-			:echo cos(-4.01)
-<			-0.646043
-		{only available when compiled with the |+float| feature}
-
-
-cosh({expr})						*cosh()*
-		Return the hyperbolic cosine of {expr} as a |Float| in the range
-		[1, inf].
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo cosh(0.5)
-<			1.127626 >
-			:echo cosh(-0.5)
-<			-1.127626
-		{only available when compiled with the |+float| feature}
-
-		
-count({comp}, {expr} [, {ic} [, {start}]])			*count()*
-		Return the number of times an item with value {expr} appears
-		in |List| or |Dictionary| {comp}.
-		If {start} is given then start with the item with this index.
-		{start} can only be used with a |List|.
-		When {ic} is given and it's non-zero then case is ignored.
-
-
-							*cscope_connection()*
-cscope_connection([{num} , {dbpath} [, {prepend}]])
-		Checks for the existence of a |cscope| connection.  If no
-		parameters are specified, then the function returns:
-			0, if cscope was not available (not compiled in), or
-			   if there are no cscope connections;
-			1, if there is at least one cscope connection.
-
-		If parameters are specified, then the value of {num}
-		determines how existence of a cscope connection is checked:
-
-		{num}	Description of existence check
-		-----	------------------------------
-		0	Same as no parameters (e.g., "cscope_connection()").
-		1	Ignore {prepend}, and use partial string matches for
-			{dbpath}.
-		2	Ignore {prepend}, and use exact string matches for
-			{dbpath}.
-		3	Use {prepend}, use partial string matches for both
-			{dbpath} and {prepend}.
-		4	Use {prepend}, use exact string matches for both
-			{dbpath} and {prepend}.
-
-		Note: All string comparisons are case sensitive!
-
-		Examples.  Suppose we had the following (from ":cs show"): >
-
-  # pid    database name			prepend path
-  0 27664  cscope.out				/usr/local
-<
-		Invocation					Return Val ~
-		----------					---------- >
-		cscope_connection()					1
-		cscope_connection(1, "out")				1
-		cscope_connection(2, "out")				0
-		cscope_connection(3, "out")				0
-		cscope_connection(3, "out", "local")			1
-		cscope_connection(4, "out")				0
-		cscope_connection(4, "out", "local")			0
-		cscope_connection(4, "cscope.out", "/usr/local")	1
-<
-cursor({lnum}, {col} [, {off}])				*cursor()*
-cursor({list})
-		Positions the cursor at the column (byte count) {col} in the
-		line {lnum}.  The first column is one.
-		When there is one argument {list} this is used as a |List|
-		with two or three items {lnum}, {col} and {off}.  This is like
-		the return value of |getpos()|, but without the first item.
-		Does not change the jumplist.
-		If {lnum} is greater than the number of lines in the buffer,
-		the cursor will be positioned at the last line in the buffer.
-		If {lnum} is zero, the cursor will stay in the current line.
-		If {col} is greater than the number of bytes in the line,
-		the cursor will be positioned at the last character in the
-		line.
-		If {col} is zero, the cursor will stay in the current column.
-		When 'virtualedit' is used {off} specifies the offset in
-		screen columns from the start of the character.  E.g., a
-		position within a  or after the last character.
-		Returns 0 when the position could be set, -1 otherwise.
-
-
-deepcopy({expr}[, {noref}])				*deepcopy()* *E698*
-		Make a copy of {expr}.	For Numbers and Strings this isn't
-		different from using {expr} directly.
-		When {expr} is a |List| a full copy is created.  This means
-		that the original |List| can be changed without changing the
-		copy, and vice versa.  When an item is a |List|, a copy for it
-		is made, recursively.  Thus changing an item in the copy does
-		not change the contents of the original |List|.
-		When {noref} is omitted or zero a contained |List| or
-		|Dictionary| is only copied once.  All references point to
-		this single copy.  With {noref} set to 1 every occurrence of a
-		|List| or |Dictionary| results in a new copy.  This also means
-		that a cyclic reference causes deepcopy() to fail.
-								*E724*
-		Nesting is possible up to 100 levels.  When there is an item
-		that refers back to a higher level making a deep copy with
-		{noref} set to 1 will fail.
-		Also see |copy()|.
-
-delete({fname})							*delete()*
-		Deletes the file by the name {fname}.  The result is a Number,
-		which is 0 if the file was deleted successfully, and non-zero
-		when the deletion failed.
-		Use |remove()| to delete an item from a |List|.
-
-							*did_filetype()*
-did_filetype()	Returns non-zero when autocommands are being executed and the
-		FileType event has been triggered at least once.  Can be used
-		to avoid triggering the FileType event again in the scripts
-		that detect the file type. |FileType|
-		When editing another file, the counter is reset, thus this
-		really checks if the FileType event has been triggered for the
-		current buffer.  This allows an autocommand that starts
-		editing another buffer to set 'filetype' and load a syntax
-		file.
-
-diff_filler({lnum})					*diff_filler()*
-		Returns the number of filler lines above line {lnum}.
-		These are the lines that were inserted at this point in
-		another diff'ed window.  These filler lines are shown in the
-		display but don't exist in the buffer.
-		{lnum} is used like with |getline()|.  Thus "." is the current
-		line, "'m" mark m, etc.
-		Returns 0 if the current window is not in diff mode.
-
-diff_hlID({lnum}, {col})				*diff_hlID()*
-		Returns the highlight ID for diff mode at line {lnum} column
-		{col} (byte index).  When the current line does not have a
-		diff change zero is returned.
-		{lnum} is used like with |getline()|.  Thus "." is the current
-		line, "'m" mark m, etc.
-		{col} is 1 for the leftmost column, {lnum} is 1 for the first
-		line.
-		The highlight ID can be used with |synIDattr()| to obtain
-		syntax information about the highlighting.
-
-empty({expr})						*empty()*
-		Return the Number 1 if {expr} is empty, zero otherwise.
-		A |List| or |Dictionary| is empty when it does not have any
-		items.	A Number is empty when its value is zero.
-		For a long |List| this is much faster than comparing the
-		length with zero.
-
-escape({string}, {chars})				*escape()*
-		Escape the characters in {chars} that occur in {string} with a
-		backslash.  Example: >
-			:echo escape('c:\program files\vim', ' \')
-<		results in: >
-			c:\\program\ files\\vim
-<		Also see |shellescape()|.
-
-							*eval()*
-eval({string})	Evaluate {string} and return the result.  Especially useful to
-		turn the result of |string()| back into the original value.
-		This works for Numbers, Floats, Strings and composites of
-		them.  Also works for |Funcref|s that refer to existing
-		functions.
-
-eventhandler()						*eventhandler()*
-		Returns 1 when inside an event handler.  That is that Vim got
-		interrupted while waiting for the user to type a character,
-		e.g., when dropping a file on Vim.  This means interactive
-		commands cannot be used.  Otherwise zero is returned.
-
-executable({expr})					*executable()*
-		This function checks if an executable with the name {expr}
-		exists.  {expr} must be the name of the program without any
-		arguments.
-		executable() uses the value of $PATH and/or the normal
-		searchpath for programs.		*PATHEXT*
-		On MS-DOS and MS-Windows the ".exe", ".bat", etc. can
-		optionally be included.  Then the extensions in $PATHEXT are
-		tried.	Thus if "foo.exe" does not exist, "foo.exe.bat" can be
-		found.	If $PATHEXT is not set then ".exe;.com;.bat;.cmd" is
-		used.  A dot by itself can be used in $PATHEXT to try using
-		the name without an extension.	When 'shell' looks like a
-		Unix shell, then the name is also tried without adding an
-		extension.
-		On MS-DOS and MS-Windows it only checks if the file exists and
-		is not a directory, not if it's really executable.
-		On MS-Windows an executable in the same directory as Vim is
-		always found.  Since this directory is added to $PATH it
-		should also work to execute it |win32-PATH|.
-		The result is a Number:
-			1	exists
-			0	does not exist
-			-1	not implemented on this system
-
-							*exists()*
-exists({expr})	The result is a Number, which is non-zero if {expr} is
-		defined, zero otherwise.  The {expr} argument is a string,
-		which contains one of these:
-			&option-name	Vim option (only checks if it exists,
-					not if it really works)
-			+option-name	Vim option that works.
-			$ENVNAME	environment variable (could also be
-					done by comparing with an empty
-					string)
-			*funcname	built-in function (see |functions|)
-					or user defined function (see
-					|user-functions|).
-			varname		internal variable (see
-					|internal-variables|).	Also works
-					for |curly-braces-names|, |Dictionary|
-					entries, |List| items, etc.  Beware
-					that evaluating an index may cause an
-					error message for an invalid
-					expression.  E.g.: >
-					   :let l = [1, 2, 3]
-					   :echo exists("l[5]")
-<					   0 >
-					   :echo exists("l[xx]")
-<					   E121: Undefined variable: xx
-					   0
-			:cmdname	Ex command: built-in command, user
-					command or command modifier |:command|.
-					Returns:
-					1  for match with start of a command
-					2  full match with a command
-					3  matches several user commands
-					To check for a supported command
-					always check the return value to be 2.
-			:2match		The |:2match| command.
-			:3match		The |:3match| command.
-			#event		autocommand defined for this event
-			#event#pattern	autocommand defined for this event and
-					pattern (the pattern is taken
-					literally and compared to the
-					autocommand patterns character by
-					character)
-			#group		autocommand group exists
-			#group#event	autocommand defined for this group and
-					event.
-			#group#event#pattern
-					autocommand defined for this group,
-					event and pattern.
-			##event		autocommand for this event is
-					supported.
-		For checking for a supported feature use |has()|.
-
-		Examples: >
-			exists("&shortname")
-			exists("$HOSTNAME")
-			exists("*strftime")
-			exists("*s:MyFunc")
-			exists("bufcount")
-			exists(":Make")
-			exists("#CursorHold")
-			exists("#BufReadPre#*.gz")
-			exists("#filetypeindent")
-			exists("#filetypeindent#FileType")
-			exists("#filetypeindent#FileType#*")
-			exists("##ColorScheme")
-<		There must be no space between the symbol (&/$/*/#) and the
-		name.
-		There must be no extra characters after the name, although in
-		a few cases this is ignored.  That may become more strict in
-		the future, thus don't count on it!
-		Working example: >
-			exists(":make")
-<		NOT working example: >
-			exists(":make install")
-
-<		Note that the argument must be a string, not the name of the
-		variable itself.  For example: >
-			exists(bufcount)
-<		This doesn't check for existence of the "bufcount" variable,
-		but gets the value of "bufcount", and checks if that exists.
-
-exp({expr})						*exp()*
-		Return the exponential of {expr} as a |Float| in the range
-		[0, inf].
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo exp(2)
-<			7.389056 >
-			:echo exp(-1)
-<			0.367879
-		{only available when compiled with the |+float| feature}
-
-
-expand({expr} [, {flag}])				*expand()*
-		Expand wildcards and the following special keywords in {expr}.
-		The result is a String.
-
-		When there are several matches, they are separated by 
-		characters.  [Note: in version 5.0 a space was used, which
-		caused problems when a file name contains a space]
-
-		If the expansion fails, the result is an empty string.	A name
-		for a non-existing file is not included.
-
-		When {expr} starts with '%', '#' or '<', the expansion is done
-		like for the |cmdline-special| variables with their associated
-		modifiers.  Here is a short overview:
-
-			%		current file name
-			#		alternate file name
-			#n		alternate file name n
-					file name under the cursor
-					autocmd file name
-					autocmd buffer number (as a String!)
-				autocmd matched name
-					sourced script file name
-					word under the cursor
-					WORD under the cursor
-				the {clientid} of the last received
-					message |server2client()|
-		Modifiers:
-			:p		expand to full path
-			:h		head (last path component removed)
-			:t		tail (last path component only)
-			:r		root (one extension removed)
-			:e		extension only
-
-		Example: >
-			:let &tags = expand("%:p:h") . "/tags"
-<		Note that when expanding a string that starts with '%', '#' or
-		'<', any following text is ignored.  This does NOT work: >
-			:let doesntwork = expand("%:h.bak")
-<		Use this: >
-			:let doeswork = expand("%:h") . ".bak"
-<		Also note that expanding "" and others only returns the
-		referenced file name without further expansion.  If ""
-		is "~/.cshrc", you need to do another expand() to have the
-		"~/" expanded into the path of the home directory: >
-			:echo expand(expand(""))
-<
-		There cannot be white space between the variables and the
-		following modifier.  The |fnamemodify()| function can be used
-		to modify normal file names.
-
-		When using '%' or '#', and the current or alternate file name
-		is not defined, an empty string is used.  Using "%:p" in a
-		buffer with no name, results in the current directory, with a
-		'/' added.
-
-		When {expr} does not start with '%', '#' or '<', it is
-		expanded like a file name is expanded on the command line.
-		'suffixes' and 'wildignore' are used, unless the optional
-		{flag} argument is given and it is non-zero.  Names for
-		non-existing files are included.  The "**" item can be used to
-		search in a directory tree.  For example, to find all "README"
-		files in the current directory and below: >
-			:echo expand("**/README")
-<
-		Expand() can also be used to expand variables and environment
-		variables that are only known in a shell.  But this can be
-		slow, because a shell must be started.	See |expr-env-expand|.
-		The expanded variable is still handled like a list of file
-		names.	When an environment variable cannot be expanded, it is
-		left unchanged.  Thus ":echo expand('$FOOBAR')" results in
-		"$FOOBAR".
-
-		See |glob()| for finding existing files.  See |system()| for
-		getting the raw output of an external command.
-
-extend({expr1}, {expr2} [, {expr3}])			*extend()*
-		{expr1} and {expr2} must be both |Lists| or both
-		|Dictionaries|.
-
-		If they are |Lists|: Append {expr2} to {expr1}.
-		If {expr3} is given insert the items of {expr2} before item
-		{expr3} in {expr1}.  When {expr3} is zero insert before the
-		first item.  When {expr3} is equal to len({expr1}) then
-		{expr2} is appended.
-		Examples: >
-			:echo sort(extend(mylist, [7, 5]))
-			:call extend(mylist, [2, 3], 1)
-<		When {expr1} is the same List as {expr2} then the number of
-		items copied is equal to the original length of the List.
-		E.g., when {expr3} is 1 you get N new copies of the first item
-		(where N is the original length of the List).
-		Use |add()| to concatenate one item to a list.	To concatenate
-		two lists into a new list use the + operator: >
-			:let newlist = [1, 2, 3] + [4, 5]
-<
-		If they are |Dictionaries|:
-		Add all entries from {expr2} to {expr1}.
-		If a key exists in both {expr1} and {expr2} then {expr3} is
-		used to decide what to do:
-		{expr3} = "keep": keep the value of {expr1}
-		{expr3} = "force": use the value of {expr2}
-		{expr3} = "error": give an error message		*E737*
-		When {expr3} is omitted then "force" is assumed.
-
-		{expr1} is changed when {expr2} is not empty.  If necessary
-		make a copy of {expr1} first.
-		{expr2} remains unchanged.
-		Returns {expr1}.
-
-
-feedkeys({string} [, {mode}])				*feedkeys()*
-		Characters in {string} are queued for processing as if they
-		come from a mapping or were typed by the user.	They are added
-		to the end of the typeahead buffer, thus if a mapping is still
-		being executed these characters come after them.
-		The function does not wait for processing of keys contained in
-		{string}.
-		To include special keys into {string}, use double-quotes
-		and "\..." notation |expr-quote|. For example,
-		feedkeys("\") simulates pressing of the  key. But
-		feedkeys('\') pushes 5 characters.
-		If {mode} is absent, keys are remapped.
-		{mode} is a String, which can contain these character flags:
-		'm'	Remap keys. This is default.
-		'n'	Do not remap keys.
-		't'	Handle keys as if typed; otherwise they are handled as
-			if coming from a mapping.  This matters for undo,
-			opening folds, etc.
-		Return value is always 0.
-
-filereadable({file})					*filereadable()*
-		The result is a Number, which is TRUE when a file with the
-		name {file} exists, and can be read.  If {file} doesn't exist,
-		or is a directory, the result is FALSE.  {file} is any
-		expression, which is used as a String.
-		If you don't care about the file being readable you can use
-		|glob()|.
-							*file_readable()*
-		Obsolete name: file_readable().
-
-
-filewritable({file})					*filewritable()*
-		The result is a Number, which is 1 when a file with the
-		name {file} exists, and can be written.  If {file} doesn't
-		exist, or is not writable, the result is 0.  If {file} is a
-		directory, and we can write to it, the result is 2.
-
-
-filter({expr}, {string})					*filter()*
-		{expr} must be a |List| or a |Dictionary|.
-		For each item in {expr} evaluate {string} and when the result
-		is zero remove the item from the |List| or |Dictionary|.
-		Inside {string} |v:val| has the value of the current item.
-		For a |Dictionary| |v:key| has the key of the current item.
-		Examples: >
-			:call filter(mylist, 'v:val !~ "OLD"')
-<		Removes the items where "OLD" appears. >
-			:call filter(mydict, 'v:key >= 8')
-<		Removes the items with a key below 8. >
-			:call filter(var, 0)
-<		Removes all the items, thus clears the |List| or |Dictionary|.
-
-		Note that {string} is the result of expression and is then
-		used as an expression again.  Often it is good to use a
-		|literal-string| to avoid having to double backslashes.
-
-		The operation is done in-place.  If you want a |List| or
-		|Dictionary| to remain unmodified make a copy first: >
-			:let l = filter(copy(mylist), 'v:val =~ "KEEP"')
-
-<		Returns {expr}, the |List| or |Dictionary| that was filtered.
-		When an error is encountered while evaluating {string} no
-		further items in {expr} are processed.
-
-
-finddir({name}[, {path}[, {count}]])				*finddir()*
-		Find directory {name} in {path}.  Supports both downwards and
-		upwards recursive directory searches.  See |file-searching|
-		for the syntax of {path}.
-		Returns the path of the first found match.  When the found
-		directory is below the current directory a relative path is
-		returned.  Otherwise a full path is returned.
-		If {path} is omitted or empty then 'path' is used.
-		If the optional {count} is given, find {count}'s occurrence of
-		{name} in {path} instead of the first one.
-		When {count} is negative return all the matches in a |List|.
-		This is quite similar to the ex-command |:find|.
-		{only available when compiled with the |+file_in_path|
-		feature}
-
-findfile({name}[, {path}[, {count}]])				*findfile()*
-		Just like |finddir()|, but find a file instead of a directory.
-		Uses 'suffixesadd'.
-		Example: >
-			:echo findfile("tags.vim", ".;")
-<		Searches from the directory of the current file upwards until
-		it finds the file "tags.vim".
-
-float2nr({expr})					*float2nr()*
-		Convert {expr} to a Number by omitting the part after the
-		decimal point.
-		{expr} must evaluate to a |Float| or a Number.
-		When the value of {expr} is out of range for a |Number| the
-		result is truncated to 0x7fffffff or -0x7fffffff.  NaN results
-		in -0x80000000.
-		Examples: >
-			echo float2nr(3.95)
-<			3  >
-			echo float2nr(-23.45)
-<			-23  >
-			echo float2nr(1.0e100)
-<			2147483647  >
-			echo float2nr(-1.0e150)
-<			-2147483647  >
-			echo float2nr(1.0e-100)
-<			0
-		{only available when compiled with the |+float| feature}
-
-
-floor({expr})							*floor()*
-		Return the largest integral value less than or equal to
-		{expr} as a |Float| (round down).
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			echo floor(1.856)
-<			1.0  >
-			echo floor(-5.456)
-<			-6.0  >
-			echo floor(4.0)
-<			4.0
-		{only available when compiled with the |+float| feature}
-		
-
-fmod({expr1}, {expr2})					*fmod()*
-		Return the remainder of {expr1} / {expr2}, even if the
-		division is not representable.  Returns {expr1} - i * {expr2}
-		for some integer i such that if {expr2} is non-zero, the
-		result has the same sign as {expr1} and magnitude less than
-		the magnitude of {expr2}.  If {expr2} is zero, the value
-		returned is zero.  The value returned is a |Float|.
-		{expr1} and {expr2} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo fmod(12.33, 1.22)
-<			0.13 >
-			:echo fmod(-12.33, 1.22)
-<			-0.13
-		{only available when compiled with |+float| feature}
-
-
-fnameescape({string})					*fnameescape()*
-		Escape {string} for use as file name command argument.	All
-		characters that have a special meaning, such as '%' and '|'
-		are escaped with a backslash.
-		For most systems the characters escaped are
-		" \t\n*?[{`$\\%#'\"|!<".  For systems where a backslash
-		appears in a filename, it depends on the value of 'isfname'.
-		A leading '+' and '>' is also escaped (special after |:edit|
-		and |:write|).  And a "-" by itself (special after |:cd|).
-		Example: >
-			:let fname = '+some str%nge|name'
-			:exe "edit " . fnameescape(fname)
-<		results in executing: >
-			edit \+some\ str\%nge\|name
-
-fnamemodify({fname}, {mods})				*fnamemodify()*
-		Modify file name {fname} according to {mods}.  {mods} is a
-		string of characters like it is used for file names on the
-		command line.  See |filename-modifiers|.
-		Example: >
-			:echo fnamemodify("main.c", ":p:h")
-<		results in: >
-			/home/mool/vim/vim/src
-<		Note: Environment variables don't work in {fname}, use
-		|expand()| first then.
-
-foldclosed({lnum})					*foldclosed()*
-		The result is a Number.  If the line {lnum} is in a closed
-		fold, the result is the number of the first line in that fold.
-		If the line {lnum} is not in a closed fold, -1 is returned.
-
-foldclosedend({lnum})					*foldclosedend()*
-		The result is a Number.  If the line {lnum} is in a closed
-		fold, the result is the number of the last line in that fold.
-		If the line {lnum} is not in a closed fold, -1 is returned.
-
-foldlevel({lnum})					*foldlevel()*
-		The result is a Number, which is the foldlevel of line {lnum}
-		in the current buffer.	For nested folds the deepest level is
-		returned.  If there is no fold at line {lnum}, zero is
-		returned.  It doesn't matter if the folds are open or closed.
-		When used while updating folds (from 'foldexpr') -1 is
-		returned for lines where folds are still to be updated and the
-		foldlevel is unknown.  As a special case the level of the
-		previous line is usually available.
-
-							*foldtext()*
-foldtext()	Returns a String, to be displayed for a closed fold.  This is
-		the default function used for the 'foldtext' option and should
-		only be called from evaluating 'foldtext'.  It uses the
-		|v:foldstart|, |v:foldend| and |v:folddashes| variables.
-		The returned string looks like this: >
-			+-- 45 lines: abcdef
-<		The number of dashes depends on the foldlevel.	The "45" is
-		the number of lines in the fold.  "abcdef" is the text in the
-		first non-blank line of the fold.  Leading white space, "//"
-		or "/*" and the text from the 'foldmarker' and 'commentstring'
-		options is removed.
-		{not available when compiled without the |+folding| feature}
-
-foldtextresult({lnum})					*foldtextresult()*
-		Returns the text that is displayed for the closed fold at line
-		{lnum}.  Evaluates 'foldtext' in the appropriate context.
-		When there is no closed fold at {lnum} an empty string is
-		returned.
-		{lnum} is used like with |getline()|.  Thus "." is the current
-		line, "'m" mark m, etc.
-		Useful when exporting folded text, e.g., to HTML.
-		{not available when compiled without the |+folding| feature}
-
-							*foreground()*
-foreground()	Move the Vim window to the foreground.	Useful when sent from
-		a client to a Vim server. |remote_send()|
-		On Win32 systems this might not work, the OS does not always
-		allow a window to bring itself to the foreground.  Use
-		|remote_foreground()| instead.
-		{only in the Win32, Athena, Motif and GTK GUI versions and the
-		Win32 console version}
-
-
-function({name})					*function()* *E700*
-		Return a |Funcref| variable that refers to function {name}.
-		{name} can be a user defined function or an internal function.
-
-
-garbagecollect([at_exit])				*garbagecollect()*
-		Cleanup unused |Lists| and |Dictionaries| that have circular
-		references.  There is hardly ever a need to invoke this
-		function, as it is automatically done when Vim runs out of
-		memory or is waiting for the user to press a key after
-		'updatetime'.  Items without circular references are always
-		freed when they become unused.
-		This is useful if you have deleted a very big |List| and/or
-		|Dictionary| with circular references in a script that runs
-		for a long time.
-		When the optional "at_exit" argument is one, garbage
-		collection will also be done when exiting Vim, if it wasn't
-		done before.  This is useful when checking for memory leaks.
-
-get({list}, {idx} [, {default}])			*get()*
-		Get item {idx} from |List| {list}.  When this item is not
-		available return {default}.  Return zero when {default} is
-		omitted.
-get({dict}, {key} [, {default}])
-		Get item with key {key} from |Dictionary| {dict}.  When this
-		item is not available return {default}.  Return zero when
-		{default} is omitted.
-
-							*getbufline()*
-getbufline({expr}, {lnum} [, {end}])
-		Return a |List| with the lines starting from {lnum} to {end}
-		(inclusive) in the buffer {expr}.  If {end} is omitted, a
-		|List| with only the line {lnum} is returned.
-
-		For the use of {expr}, see |bufname()| above.
-
-		For {lnum} and {end} "$" can be used for the last line of the
-		buffer.  Otherwise a number must be used.
-
-		When {lnum} is smaller than 1 or bigger than the number of
-		lines in the buffer, an empty |List| is returned.
-
-		When {end} is greater than the number of lines in the buffer,
-		it is treated as {end} is set to the number of lines in the
-		buffer.  When {end} is before {lnum} an empty |List| is
-		returned.
-
-		This function works only for loaded buffers.  For unloaded and
-		non-existing buffers, an empty |List| is returned.
-
-		Example: >
-			:let lines = getbufline(bufnr("myfile"), 1, "$")
-
-getbufvar({expr}, {varname})				*getbufvar()*
-		The result is the value of option or local buffer variable
-		{varname} in buffer {expr}.  Note that the name without "b:"
-		must be used.
-		When {varname} is empty returns a dictionary with all the
-		buffer-local variables.
-		This also works for a global or buffer-local option, but it
-		doesn't work for a global variable, window-local variable or
-		window-local option.
-		For the use of {expr}, see |bufname()| above.
-		When the buffer or variable doesn't exist an empty string is
-		returned, there is no error message.
-		Examples: >
-			:let bufmodified = getbufvar(1, "&mod")
-			:echo "todo myvar = " . getbufvar("todo", "myvar")
-<
-getchar([expr])						*getchar()*
-		Get a single character from the user or input stream.
-		If [expr] is omitted, wait until a character is available.
-		If [expr] is 0, only get a character when one is available.
-			Return zero otherwise.
-		If [expr] is 1, only check if a character is available, it is
-			not consumed.  Return zero if no character available.
-
-		Without {expr} and when {expr} is 0 a whole character or
-		special key is returned.  If it is an 8-bit character, the
-		result is a number.  Use nr2char() to convert it to a String.
-		Otherwise a String is returned with the encoded character.
-		For a special key it's a sequence of bytes starting with 0x80
-		(decimal: 128).  This is the same value as the string
-		"\", e.g., "\".  The returned value is also a
-		String when a modifier (shift, control, alt) was used that is
-		not included in the character.
-
-		When {expr} is 1 only the first byte is returned.  For a
-		one-byte character it is the character itself as a number.
-		Use nr2char() to convert it to a String.
-
-		When the user clicks a mouse button, the mouse event will be
-		returned.  The position can then be found in |v:mouse_col|,
-		|v:mouse_lnum| and |v:mouse_win|.  This example positions the
-		mouse as it would normally happen: >
-			let c = getchar()
-			if c == "\" && v:mouse_win > 0
-			  exe v:mouse_win . "wincmd w"
-			  exe v:mouse_lnum
-			  exe "normal " . v:mouse_col . "|"
-			endif
-<
-		There is no prompt, you will somehow have to make clear to the
-		user that a character has to be typed.
-		There is no mapping for the character.
-		Key codes are replaced, thus when the user presses the 
-		key you get the code for the  key, not the raw character
-		sequence.  Examples: >
-			getchar() == "\"
-			getchar() == "\"
-<		This example redefines "f" to ignore case: >
-			:nmap f :call FindChar()
-			:function FindChar()
-			:  let c = nr2char(getchar())
-			:  while col('.') < col('$') - 1
-			:    normal l
-			:    if getline('.')[col('.') - 1] ==? c
-			:      break
-			:    endif
-			:  endwhile
-			:endfunction
-
-getcharmod()						*getcharmod()*
-		The result is a Number which is the state of the modifiers for
-		the last obtained character with getchar() or in another way.
-		These values are added together:
-			2	shift
-			4	control
-			8	alt (meta)
-			16	mouse double click
-			32	mouse triple click
-			64	mouse quadruple click
-			128	Macintosh only: command
-		Only the modifiers that have not been included in the
-		character itself are obtained.	Thus Shift-a results in "A"
-		without a modifier.
-
-getcmdline()						*getcmdline()*
-		Return the current command-line.  Only works when the command
-		line is being edited, thus requires use of |c_CTRL-\_e| or
-		|c_CTRL-R_=|.
-		Example: >
-			:cmap  eescape(getcmdline(), ' \')
-<		Also see |getcmdtype()|, |getcmdpos()| and |setcmdpos()|.
-
-getcmdpos()						*getcmdpos()*
-		Return the position of the cursor in the command line as a
-		byte count.  The first column is 1.
-		Only works when editing the command line, thus requires use of
-		|c_CTRL-\_e| or |c_CTRL-R_=|.  Returns 0 otherwise.
-		Also see |getcmdtype()|, |setcmdpos()| and |getcmdline()|.
-
-getcmdtype()						*getcmdtype()*
-		Return the current command-line type. Possible return values
-		are:
-		    :	normal Ex command
-		    >	debug mode command |debug-mode|
-		    /	forward search command
-		    ?	backward search command
-		    @	|input()| command
-		    -	|:insert| or |:append| command
-		Only works when editing the command line, thus requires use of
-		|c_CTRL-\_e| or |c_CTRL-R_=|.  Returns an empty string
-		otherwise.
-		Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
-
-							*getcwd()*
-getcwd()	The result is a String, which is the name of the current
-		working directory.
-
-getfsize({fname})					*getfsize()*
-		The result is a Number, which is the size in bytes of the
-		given file {fname}.
-		If {fname} is a directory, 0 is returned.
-		If the file {fname} can't be found, -1 is returned.
-		If the size of {fname} is too big to fit in a Number then -2
-		is returned.
-
-getfontname([{name}])					*getfontname()*
-		Without an argument returns the name of the normal font being
-		used.  Like what is used for the Normal highlight group
-		|hl-Normal|.
-		With an argument a check is done whether {name} is a valid
-		font name.  If not then an empty string is returned.
-		Otherwise the actual font name is returned, or {name} if the
-		GUI does not support obtaining the real name.
-		Only works when the GUI is running, thus not in your vimrc or
-		gvimrc file.  Use the |GUIEnter| autocommand to use this
-		function just after the GUI has started.
-		Note that the GTK 2 GUI accepts any font name, thus checking
-		for a valid name does not work.
-
-getfperm({fname})					*getfperm()*
-		The result is a String, which is the read, write, and execute
-		permissions of the given file {fname}.
-		If {fname} does not exist or its directory cannot be read, an
-		empty string is returned.
-		The result is of the form "rwxrwxrwx", where each group of
-		"rwx" flags represent, in turn, the permissions of the owner
-		of the file, the group the file belongs to, and other users.
-		If a user does not have a given permission the flag for this
-		is replaced with the string "-".  Example: >
-			:echo getfperm("/etc/passwd")
-<		This will hopefully (from a security point of view) display
-		the string "rw-r--r--" or even "rw-------".
-
-getftime({fname})					*getftime()*
-		The result is a Number, which is the last modification time of
-		the given file {fname}.  The value is measured as seconds
-		since 1st Jan 1970, and may be passed to strftime().  See also
-		|localtime()| and |strftime()|.
-		If the file {fname} can't be found -1 is returned.
-
-getftype({fname})					*getftype()*
-		The result is a String, which is a description of the kind of
-		file of the given file {fname}.
-		If {fname} does not exist an empty string is returned.
-		Here is a table over different kinds of files and their
-		results:
-			Normal file		"file"
-			Directory		"dir"
-			Symbolic link		"link"
-			Block device		"bdev"
-			Character device	"cdev"
-			Socket			"socket"
-			FIFO			"fifo"
-			All other		"other"
-		Example: >
-			getftype("/home")
-<		Note that a type such as "link" will only be returned on
-		systems that support it.  On some systems only "dir" and
-		"file" are returned.
-
-							*getline()*
-getline({lnum} [, {end}])
-		Without {end} the result is a String, which is line {lnum}
-		from the current buffer.  Example: >
-			getline(1)
-<		When {lnum} is a String that doesn't start with a
-		digit, line() is called to translate the String into a Number.
-		To get the line under the cursor: >
-			getline(".")
-<		When {lnum} is smaller than 1 or bigger than the number of
-		lines in the buffer, an empty string is returned.
-
-		When {end} is given the result is a |List| where each item is
-		a line from the current buffer in the range {lnum} to {end},
-		including line {end}.
-		{end} is used in the same way as {lnum}.
-		Non-existing lines are silently omitted.
-		When {end} is before {lnum} an empty |List| is returned.
-		Example: >
-			:let start = line('.')
-			:let end = search("^$") - 1
-			:let lines = getline(start, end)
-
-<		To get lines from another buffer see |getbufline()|
-
-getloclist({nr})					*getloclist()*
-		Returns a list with all the entries in the location list for
-		window {nr}. When {nr} is zero the current window is used.
-		For a location list window, the displayed location list is
-		returned.  For an invalid window number {nr}, an empty list is
-		returned. Otherwise, same as |getqflist()|.
-
-getmatches()						*getmatches()*
-		Returns a |List| with all matches previously defined by
-		|matchadd()| and the |:match| commands.  |getmatches()| is
-		useful in combination with |setmatches()|, as |setmatches()|
-		can restore a list of matches saved by |getmatches()|.
-		Example: >
-			:echo getmatches()
-<			[{'group': 'MyGroup1', 'pattern': 'TODO',
-			'priority': 10, 'id': 1}, {'group': 'MyGroup2',
-			'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
-			:let m = getmatches()
-			:call clearmatches()
-			:echo getmatches()
-<			[] >
-			:call setmatches(m)
-			:echo getmatches()
-<			[{'group': 'MyGroup1', 'pattern': 'TODO',
-			'priority': 10, 'id': 1}, {'group': 'MyGroup2',
-			'pattern': 'FIXME', 'priority': 10, 'id': 2}] >
-			:unlet m
-<
-
-getqflist()						*getqflist()*
-		Returns a list with all the current quickfix errors.  Each
-		list item is a dictionary with these entries:
-			bufnr	number of buffer that has the file name, use
-				bufname() to get the name
-			lnum	line number in the buffer (first line is 1)
-			col	column number (first column is 1)
-			vcol	non-zero: "col" is visual column
-				zero: "col" is byte index
-			nr	error number
-			pattern	search pattern used to locate the error
-			text	description of the error
-			type	type of the error, 'E', '1', etc.
-			valid	non-zero: recognized error message
-
-		When there is no error list or it's empty an empty list is
-		returned. Quickfix list entries with non-existing buffer
-		number are returned with "bufnr" set to zero.
-
-		Useful application: Find pattern matches in multiple files and
-		do something with them: >
-			:vimgrep /theword/jg *.c
-			:for d in getqflist()
-			:   echo bufname(d.bufnr) ':' d.lnum '=' d.text
-			:endfor
-
-
-getreg([{regname} [, 1]])				*getreg()*
-		The result is a String, which is the contents of register
-		{regname}.  Example: >
-			:let cliptext = getreg('*')
-<		getreg('=') returns the last evaluated value of the expression
-		register.  (For use in maps.)
-		getreg('=', 1) returns the expression itself, so that it can
-		be restored with |setreg()|.  For other registers the extra
-		argument is ignored, thus you can always give it.
-		If {regname} is not specified, |v:register| is used.
-
-
-getregtype([{regname}])					*getregtype()*
-		The result is a String, which is type of register {regname}.
-		The value will be one of:
-		    "v"			for |characterwise| text
-		    "V"			for |linewise| text
-		    "{width}"	for |blockwise-visual| text
-		    0			for an empty or unknown register
-		 is one character with value 0x16.
-		If {regname} is not specified, |v:register| is used.
-
-gettabvar({tabnr}, {varname})				*gettabvar()*
-		Get the value of a tab-local variable {varname} in tab page
-		{tabnr}. |t:var|
-		Tabs are numbered starting with one.
-		Note that the name without "t:" must be used.
-
-gettabwinvar({tabnr}, {winnr}, {varname})		*gettabwinvar()*
-		Get the value of window-local variable {varname} in window
-		{winnr} in tab page {tabnr}.
-		When {varname} starts with "&" get the value of a window-local
-		option.
-		Tabs are numbered starting with one.  For the current tabpage
-		use |getwinvar()|.
-		When {winnr} is zero the current window is used.
-		This also works for a global option, buffer-local option and
-		window-local option, but it doesn't work for a global variable
-		or buffer-local variable.
-		When {varname} is empty a dictionary with all window-local
-		variables is returned.
-		Note that {varname} must be the name without "w:".
-		Examples: >
-			:let list_is_on = gettabwinvar(1, 2, '&list')
-			:echo "myvar = " . gettabwinvar(3, 1, 'myvar')
-<
-							*getwinposx()*
-getwinposx()	The result is a Number, which is the X coordinate in pixels of
-		the left hand side of the GUI Vim window.  The result will be
-		-1 if the information is not available.
-
-							*getwinposy()*
-getwinposy()	The result is a Number, which is the Y coordinate in pixels of
-		the top of the GUI Vim window.	The result will be -1 if the
-		information is not available.
-
-getwinvar({winnr}, {varname})				*getwinvar()*
-		Like |gettabwinvar()| for the current tabpage.
-		Examples: >
-			:let list_is_on = getwinvar(2, '&list')
-			:echo "myvar = " . getwinvar(1, 'myvar')
-<
-glob({expr} [, {flag}])					*glob()*
-		Expand the file wildcards in {expr}.  See |wildcards| for the
-		use of special characters.
-		The result is a String.
-		When there are several matches, they are separated by 
-		characters.
-		Unless the optional {flag} argument is given and is non-zero,
-		the 'suffixes' and 'wildignore' options apply: Names matching
-		one of the patterns in 'wildignore' will be skipped and
-		'suffixes' affect the ordering of matches.
-		If the expansion fails, the result is an empty string.
-		A name for a non-existing file is not included.
-
-		For most systems backticks can be used to get files names from
-		any external command.  Example: >
-			:let tagfiles = glob("`find . -name tags -print`")
-			:let &tags = substitute(tagfiles, "\n", ",", "g")
-<		The result of the program inside the backticks should be one
-		item per line.	Spaces inside an item are allowed.
-
-		See |expand()| for expanding special Vim variables.  See
-		|system()| for getting the raw output of an external command.
-
-globpath({path}, {expr} [, {flag}])			*globpath()*
-		Perform glob() on all directories in {path} and concatenate
-		the results.  Example: >
-			:echo globpath(&rtp, "syntax/c.vim")
-<		{path} is a comma-separated list of directory names.  Each
-		directory name is prepended to {expr} and expanded like with
-		|glob()|.  A path separator is inserted when needed.
-		To add a comma inside a directory name escape it with a
-		backslash.  Note that on MS-Windows a directory may have a
-		trailing backslash, remove it if you put a comma after it.
-		If the expansion fails for one of the directories, there is no
-		error message.
-		Unless the optional {flag} argument is given and is non-zero,
-		the 'suffixes' and 'wildignore' options apply: Names matching
-		one of the patterns in 'wildignore' will be skipped and
-		'suffixes' affect the ordering of matches.
-
-		The "**" item can be used to search in a directory tree.
-		For example, to find all "README.txt" files in the directories
-		in 'runtimepath' and below: >
-			:echo globpath(&rtp, "**/README.txt")
-<		Upwards search and limiting the depth of "**" is not
-		supported, thus using 'path' will not always work properly.
-
-							*has()*
-has({feature})	The result is a Number, which is 1 if the feature {feature} is
-		supported, zero otherwise.  The {feature} argument is a
-		string.  See |feature-list| below.
-		Also see |exists()|.
-
-
-has_key({dict}, {key})					*has_key()*
-		The result is a Number, which is 1 if |Dictionary| {dict} has
-		an entry with key {key}.  Zero otherwise.
-
-haslocaldir()						*haslocaldir()*
-		The result is a Number, which is 1 when the current
-		window has set a local path via |:lcd|, and 0 otherwise.
-
-hasmapto({what} [, {mode} [, {abbr}]])			*hasmapto()*
-		The result is a Number, which is 1 if there is a mapping that
-		contains {what} in somewhere in the rhs (what it is mapped to)
-		and this mapping exists in one of the modes indicated by
-		{mode}.
-		When {abbr} is there and it is non-zero use abbreviations
-		instead of mappings.  Don't forget to specify Insert and/or
-		Command-line mode.
-		Both the global mappings and the mappings local to the current
-		buffer are checked for a match.
-		If no matching mapping is found 0 is returned.
-		The following characters are recognized in {mode}:
-			n	Normal mode
-			v	Visual mode
-			o	Operator-pending mode
-			i	Insert mode
-			l	Language-Argument ("r", "f", "t", etc.)
-			c	Command-line mode
-		When {mode} is omitted, "nvo" is used.
-
-		This function is useful to check if a mapping already exists
-		to a function in a Vim script.	Example: >
-			:if !hasmapto('\ABCdoit')
-			:   map d \ABCdoit
-			:endif
-<		This installs the mapping to "\ABCdoit" only if there isn't
-		already a mapping to "\ABCdoit".
-
-histadd({history}, {item})				*histadd()*
-		Add the String {item} to the history {history} which can be
-		one of:					*hist-names*
-			"cmd"	 or ":"	  command line history
-			"search" or "/"   search pattern history
-			"expr"	 or "="   typed expression history
-			"input"  or "@"	  input line history
-		If {item} does already exist in the history, it will be
-		shifted to become the newest entry.
-		The result is a Number: 1 if the operation was successful,
-		otherwise 0 is returned.
-
-		Example: >
-			:call histadd("input", strftime("%Y %b %d"))
-			:let date=input("Enter date: ")
-<		This function is not available in the |sandbox|.
-
-histdel({history} [, {item}])				*histdel()*
-		Clear {history}, i.e. delete all its entries.  See |hist-names|
-		for the possible values of {history}.
-
-		If the parameter {item} evaluates to a String, it is used as a
-		regular expression.  All entries matching that expression will
-		be removed from the history (if there are any).
-		Upper/lowercase must match, unless "\c" is used |/\c|.
-		If {item} evaluates to a Number, it will be interpreted as
-		an index, see |:history-indexing|.  The respective entry will
-		be removed if it exists.
-
-		The result is a Number: 1 for a successful operation,
-		otherwise 0 is returned.
-
-		Examples:
-		Clear expression register history: >
-			:call histdel("expr")
-<
-		Remove all entries starting with "*" from the search history: >
-			:call histdel("/", '^\*')
-<
-		The following three are equivalent: >
-			:call histdel("search", histnr("search"))
-			:call histdel("search", -1)
-			:call histdel("search", '^'.histget("search", -1).'$')
-<
-		To delete the last search pattern and use the last-but-one for
-		the "n" command and 'hlsearch': >
-			:call histdel("search", -1)
-			:let @/ = histget("search", -1)
-
-histget({history} [, {index}])				*histget()*
-		The result is a String, the entry with Number {index} from
-		{history}.  See |hist-names| for the possible values of
-		{history}, and |:history-indexing| for {index}.  If there is
-		no such entry, an empty String is returned.  When {index} is
-		omitted, the most recent item from the history is used.
-
-		Examples:
-		Redo the second last search from history. >
-			:execute '/' . histget("search", -2)
-
-<		Define an Ex command ":H {num}" that supports re-execution of
-		the {num}th entry from the output of |:history|. >
-			:command -nargs=1 H execute histget("cmd", 0+)
-<
-histnr({history})					*histnr()*
-		The result is the Number of the current entry in {history}.
-		See |hist-names| for the possible values of {history}.
-		If an error occurred, -1 is returned.
-
-		Example: >
-			:let inp_index = histnr("expr")
-<
-hlexists({name})					*hlexists()*
-		The result is a Number, which is non-zero if a highlight group
-		called {name} exists.  This is when the group has been
-		defined in some way.  Not necessarily when highlighting has
-		been defined for it, it may also have been used for a syntax
-		item.
-							*highlight_exists()*
-		Obsolete name: highlight_exists().
-
-							*hlID()*
-hlID({name})	The result is a Number, which is the ID of the highlight group
-		with name {name}.  When the highlight group doesn't exist,
-		zero is returned.
-		This can be used to retrieve information about the highlight
-		group.	For example, to get the background color of the
-		"Comment" group: >
-	:echo synIDattr(synIDtrans(hlID("Comment")), "bg")
-<							*highlightID()*
-		Obsolete name: highlightID().
-
-hostname()						*hostname()*
-		The result is a String, which is the name of the machine on
-		which Vim is currently running.  Machine names greater than
-		256 characters long are truncated.
-
-iconv({expr}, {from}, {to})				*iconv()*
-		The result is a String, which is the text {expr} converted
-		from encoding {from} to encoding {to}.
-		When the conversion completely fails an empty string is
-		returned.  When some characters could not be converted they
-		are replaced with "?".
-		The encoding names are whatever the iconv() library function
-		can accept, see ":!man 3 iconv".
-		Most conversions require Vim to be compiled with the |+iconv|
-		feature.  Otherwise only UTF-8 to latin1 conversion and back
-		can be done.
-		This can be used to display messages with special characters,
-		no matter what 'encoding' is set to.  Write the message in
-		UTF-8 and use: >
-			echo iconv(utf8_str, "utf-8", &enc)
-<		Note that Vim uses UTF-8 for all Unicode encodings, conversion
-		from/to UCS-2 is automatically changed to use UTF-8.  You
-		cannot use UCS-2 in a string anyway, because of the NUL bytes.
-		{only available when compiled with the |+multi_byte| feature}
-
-							*indent()*
-indent({lnum})	The result is a Number, which is indent of line {lnum} in the
-		current buffer.  The indent is counted in spaces, the value
-		of 'tabstop' is relevant.  {lnum} is used just like in
-		|getline()|.
-		When {lnum} is invalid -1 is returned.
-
-
-index({list}, {expr} [, {start} [, {ic}]])			*index()*
-		Return the lowest index in |List| {list} where the item has a
-		value equal to {expr}.  There is no automatic conversion, so
-		the String "4" is different from the Number 4.  And the number
-		4 is different from the Float 4.0.  The value of 'ignorecase'
-		is not used here, case always matters.
-		If {start} is given then start looking at the item with index
-		{start} (may be negative for an item relative to the end).
-		When {ic} is given and it is non-zero, ignore case.  Otherwise
-		case must match.
-		-1 is returned when {expr} is not found in {list}.
-		Example: >
-			:let idx = index(words, "the")
-			:if index(numbers, 123) >= 0
-
-
-input({prompt} [, {text} [, {completion}]])		*input()*
-		The result is a String, which is whatever the user typed on
-		the command-line.  The {prompt} argument is either a prompt
-		string, or a blank string (for no prompt).  A '\n' can be used
-		in the prompt to start a new line.
-		The highlighting set with |:echohl| is used for the prompt.
-		The input is entered just like a command-line, with the same
-		editing commands and mappings.	There is a separate history
-		for lines typed for input().
-		Example: >
-			:if input("Coffee or beer? ") == "beer"
-			:  echo "Cheers!"
-			:endif
-<
-		If the optional {text} argument is present and not empty, this
-		is used for the default reply, as if the user typed this.
-		Example: >
-			:let color = input("Color? ", "white")
-
-<		The optional {completion} argument specifies the type of
-		completion supported for the input.  Without it completion is
-		not performed.	The supported completion types are the same as
-		that can be supplied to a user-defined command using the
-		"-complete=" argument.	Refer to |:command-completion| for
-		more information.  Example: >
-			let fname = input("File: ", "", "file")
-<
-		NOTE: This function must not be used in a startup file, for
-		the versions that only run in GUI mode (e.g., the Win32 GUI).
-		Note: When input() is called from within a mapping it will
-		consume remaining characters from that mapping, because a
-		mapping is handled like the characters were typed.
-		Use |inputsave()| before input() and |inputrestore()|
-		after input() to avoid that.  Another solution is to avoid
-		that further characters follow in the mapping, e.g., by using
-		|:execute| or |:normal|.
-
-		Example with a mapping: >
-			:nmap \x :call GetFoo():exe "/" . Foo
-			:function GetFoo()
-			:  call inputsave()
-			:  let g:Foo = input("enter search pattern: ")
-			:  call inputrestore()
-			:endfunction
-
-inputdialog({prompt} [, {text} [, {cancelreturn}]])		*inputdialog()*
-		Like |input()|, but when the GUI is running and text dialogs
-		are supported, a dialog window pops up to input the text.
-		Example: >
-			:let n = inputdialog("value for shiftwidth", &sw)
-			:if n != ""
-			:  let &sw = n
-			:endif
-<		When the dialog is cancelled {cancelreturn} is returned.  When
-		omitted an empty string is returned.
-		Hitting  works like pressing the OK button.  Hitting
-		 works like pressing the Cancel button.
-		NOTE: Command-line completion is not supported.
-
-inputlist({textlist})					*inputlist()*
-		{textlist} must be a |List| of strings.  This |List| is
-		displayed, one string per line.  The user will be prompted to
-		enter a number, which is returned.
-		The user can also select an item by clicking on it with the
-		mouse.	For the first string 0 is returned.  When clicking
-		above the first item a negative number is returned.  When
-		clicking on the prompt one more than the length of {textlist}
-		is returned.
-		Make sure {textlist} has less than 'lines' entries, otherwise
-		it won't work.	It's a good idea to put the entry number at
-		the start of the string.  And put a prompt in the first item.
-		Example: >
-			let color = inputlist(['Select color:', '1. red',
-				\ '2. green', '3. blue'])
-
-inputrestore()						*inputrestore()*
-		Restore typeahead that was saved with a previous |inputsave()|.
-		Should be called the same number of times inputsave() is
-		called.  Calling it more often is harmless though.
-		Returns 1 when there is nothing to restore, 0 otherwise.
-
-inputsave()						*inputsave()*
-		Preserve typeahead (also from mappings) and clear it, so that
-		a following prompt gets input from the user.  Should be
-		followed by a matching inputrestore() after the prompt.  Can
-		be used several times, in which case there must be just as
-		many inputrestore() calls.
-		Returns 1 when out of memory, 0 otherwise.
-
-inputsecret({prompt} [, {text}])			*inputsecret()*
-		This function acts much like the |input()| function with but
-		two exceptions:
-		a) the user's response will be displayed as a sequence of
-		asterisks ("*") thereby keeping the entry secret, and
-		b) the user's response will not be recorded on the input
-		|history| stack.
-		The result is a String, which is whatever the user actually
-		typed on the command-line in response to the issued prompt.
-		NOTE: Command-line completion is not supported.
-
-insert({list}, {item} [, {idx}])			*insert()*
-		Insert {item} at the start of |List| {list}.
-		If {idx} is specified insert {item} before the item with index
-		{idx}.	If {idx} is zero it goes before the first item, just
-		like omitting {idx}.  A negative {idx} is also possible, see
-		|list-index|.  -1 inserts just before the last item.
-		Returns the resulting |List|.  Examples: >
-			:let mylist = insert([2, 3, 5], 1)
-			:call insert(mylist, 4, -1)
-			:call insert(mylist, 6, len(mylist))
-<		The last example can be done simpler with |add()|.
-		Note that when {item} is a |List| it is inserted as a single
-		item.  Use |extend()| to concatenate |Lists|.
-
-isdirectory({directory})				*isdirectory()*
-		The result is a Number, which is non-zero when a directory
-		with the name {directory} exists.  If {directory} doesn't
-		exist, or isn't a directory, the result is FALSE.  {directory}
-		is any expression, which is used as a String.
-
-islocked({expr})					*islocked()* *E786*
-		The result is a Number, which is non-zero when {expr} is the
-		name of a locked variable.
-		{expr} must be the name of a variable, |List| item or
-		|Dictionary| entry, not the variable itself!  Example: >
-			:let alist = [0, ['a', 'b'], 2, 3]
-			:lockvar 1 alist
-			:echo islocked('alist')		" 1
-			:echo islocked('alist[1]')	" 0
-
-<		When {expr} is a variable that does not exist you get an error
-		message.  Use |exists()| to check for existence.
-
-items({dict})						*items()*
-		Return a |List| with all the key-value pairs of {dict}.  Each
-		|List| item is a list with two items: the key of a {dict}
-		entry and the value of this entry.  The |List| is in arbitrary
-		order.
-
-
-join({list} [, {sep}])					*join()*
-		Join the items in {list} together into one String.
-		When {sep} is specified it is put in between the items.  If
-		{sep} is omitted a single space is used.
-		Note that {sep} is not added at the end.  You might want to
-		add it there too: >
-			let lines = join(mylist, "\n") . "\n"
-<		String items are used as-is.  |Lists| and |Dictionaries| are
-		converted into a string like with |string()|.
-		The opposite function is |split()|.
-
-keys({dict})						*keys()*
-		Return a |List| with all the keys of {dict}.  The |List| is in
-		arbitrary order.
-
-							*len()* *E701*
-len({expr})	The result is a Number, which is the length of the argument.
-		When {expr} is a String or a Number the length in bytes is
-		used, as with |strlen()|.
-		When {expr} is a |List| the number of items in the |List| is
-		returned.
-		When {expr} is a |Dictionary| the number of entries in the
-		|Dictionary| is returned.
-		Otherwise an error is given.
-
-						*libcall()* *E364* *E368*
-libcall({libname}, {funcname}, {argument})
-		Call function {funcname} in the run-time library {libname}
-		with single argument {argument}.
-		This is useful to call functions in a library that you
-		especially made to be used with Vim.  Since only one argument
-		is possible, calling standard library functions is rather
-		limited.
-		The result is the String returned by the function.  If the
-		function returns NULL, this will appear as an empty string ""
-		to Vim.
-		If the function returns a number, use libcallnr()!
-		If {argument} is a number, it is passed to the function as an
-		int; if {argument} is a string, it is passed as a
-		null-terminated string.
-		This function will fail in |restricted-mode|.
-
-		libcall() allows you to write your own 'plug-in' extensions to
-		Vim without having to recompile the program.  It is NOT a
-		means to call system functions!  If you try to do so Vim will
-		very probably crash.
-
-		For Win32, the functions you write must be placed in a DLL
-		and use the normal C calling convention (NOT Pascal which is
-		used in Windows System DLLs).  The function must take exactly
-		one parameter, either a character pointer or a long integer,
-		and must return a character pointer or NULL.  The character
-		pointer returned must point to memory that will remain valid
-		after the function has returned (e.g. in static data in the
-		DLL).  If it points to allocated memory, that memory will
-		leak away.  Using a static buffer in the function should work,
-		it's then freed when the DLL is unloaded.
-
-		WARNING: If the function returns a non-valid pointer, Vim may
-		crash!	This also happens if the function returns a number,
-		because Vim thinks it's a pointer.
-		For Win32 systems, {libname} should be the filename of the DLL
-		without the ".DLL" suffix.  A full path is only required if
-		the DLL is not in the usual places.
-		For Unix: When compiling your own plugins, remember that the
-		object code must be compiled as position-independent ('PIC').
-		{only in Win32 and some Unix versions, when the |+libcall|
-		feature is present}
-		Examples: >
-			:echo libcall("libc.so", "getenv", "HOME")
-<
-							*libcallnr()*
-libcallnr({libname}, {funcname}, {argument})
-		Just like |libcall()|, but used for a function that returns an
-		int instead of a string.
-		{only in Win32 on some Unix versions, when the |+libcall|
-		feature is present}
-		Examples: >
-			:echo libcallnr("/usr/lib/libc.so", "getpid", "")
-			:call libcallnr("libc.so", "printf", "Hello World!\n")
-			:call libcallnr("libc.so", "sleep", 10)
-<
-							*line()*
-line({expr})	The result is a Number, which is the line number of the file
-		position given with {expr}.  The accepted positions are:
-		    .	    the cursor position
-		    $	    the last line in the current buffer
-		    'x	    position of mark x (if the mark is not set, 0 is
-			    returned)
-		    w0	    first line visible in current window
-		    w$	    last line visible in current window
-		    v	    In Visual mode: the start of the Visual area (the
-			    cursor is the end).  When not in Visual mode
-			    returns the cursor position.  Differs from |'<| in
-			    that it's updated right away.
-		Note that a mark in another file can be used.  The line number
-		then applies to another buffer.
-		To get the column number use |col()|.  To get both use
-		|getpos()|.
-		Examples: >
-			line(".")		line number of the cursor
-			line("'t")		line number of mark t
-			line("'" . marker)	line number of mark marker
-<							*last-position-jump*
-		This autocommand jumps to the last known position in a file
-		just after opening it, if the '" mark is set: >
-	:au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
-
-line2byte({lnum})					*line2byte()*
-		Return the byte count from the start of the buffer for line
-		{lnum}.  This includes the end-of-line character, depending on
-		the 'fileformat' option for the current buffer.  The first
-		line returns 1.
-		This can also be used to get the byte count for the line just
-		below the last line: >
-			line2byte(line("$") + 1)
-<		This is the file size plus one.
-		When {lnum} is invalid, or the |+byte_offset| feature has been
-		disabled at compile time, -1 is returned.
-		Also see |byte2line()|, |go| and |:goto|.
-
-lispindent({lnum})					*lispindent()*
-		Get the amount of indent for line {lnum} according the lisp
-		indenting rules, as with 'lisp'.
-		The indent is counted in spaces, the value of 'tabstop' is
-		relevant.  {lnum} is used just like in |getline()|.
-		When {lnum} is invalid or Vim was not compiled the
-		|+lispindent| feature, -1 is returned.
-
-localtime()						*localtime()*
-		Return the current time, measured as seconds since 1st Jan
-		1970.  See also |strftime()| and |getftime()|.
-
-
-log({expr})						*log()*
-		Return the natural logarithm (base e) of {expr} as a |Float|.
-		{expr} must evaluate to a |Float| or a |Number| in the range
-		(0, inf].
-		Examples: >
-			:echo log(10)
-<			2.302585 >
-			:echo log(exp(5))
-<			5.0
-		{only available when compiled with the |+float| feature}
-
-
-log10({expr})						*log10()*
-		Return the logarithm of Float {expr} to base 10 as a |Float|.
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo log10(1000)
-<			3.0 >
-			:echo log10(0.01)
-<			-2.0
-		{only available when compiled with the |+float| feature}
-		
-map({expr}, {string})					*map()*
-		{expr} must be a |List| or a |Dictionary|.
-		Replace each item in {expr} with the result of evaluating
-		{string}.
-		Inside {string} |v:val| has the value of the current item.
-		For a |Dictionary| |v:key| has the key of the current item
-		and for a |List| |v:key| has the index of the current item.
-		Example: >
-			:call map(mylist, '"> " . v:val . " <"')
-<		This puts "> " before and " <" after each item in "mylist".
-
-		Note that {string} is the result of an expression and is then
-		used as an expression again.  Often it is good to use a
-		|literal-string| to avoid having to double backslashes.  You
-		still have to double ' quotes
-
-		The operation is done in-place.  If you want a |List| or
-		|Dictionary| to remain unmodified make a copy first: >
-			:let tlist = map(copy(mylist), ' & . "\t"')
-
-<		Returns {expr}, the |List| or |Dictionary| that was filtered.
-		When an error is encountered while evaluating {string} no
-		further items in {expr} are processed.
-
-
-maparg({name}[, {mode} [, {abbr}]])			*maparg()*
-		Return the rhs of mapping {name} in mode {mode}.  When there
-		is no mapping for {name}, an empty String is returned.
-		{mode} can be one of these strings:
-			"n"	Normal
-			"v"	Visual
-			"o"	Operator-pending
-			"i"	Insert
-			"c"	Cmd-line
-			"l"	langmap |language-mapping|
-			""	Normal, Visual and Operator-pending
-		When {mode} is omitted, the modes for "" are used.
-		When {abbr} is there and it is non-zero use abbreviations
-		instead of mappings.
-		The {name} can have special key names, like in the ":map"
-		command.  The returned String has special characters
-		translated like in the output of the ":map" command listing.
-		The mappings local to the current buffer are checked first,
-		then the global mappings.
-		This function can be used to map a key even when it's already
-		mapped, and have it do the original mapping too.  Sketch: >
-			exe 'nnoremap  ==' . maparg('', 'n')
-
-
-mapcheck({name}[, {mode} [, {abbr}]])			*mapcheck()*
-		Check if there is a mapping that matches with {name} in mode
-		{mode}.  See |maparg()| for {mode} and special names in
-		{name}.
-		When {abbr} is there and it is non-zero use abbreviations
-		instead of mappings.
-		A match happens with a mapping that starts with {name} and
-		with a mapping which is equal to the start of {name}.
-
-			matches mapping "a"	"ab"	"abc" ~
-		   mapcheck("a")	yes	yes	 yes
-		   mapcheck("abc")	yes	yes	 yes
-		   mapcheck("ax")	yes	no	 no
-		   mapcheck("b")	no	no	 no
-
-		The difference with maparg() is that mapcheck() finds a
-		mapping that matches with {name}, while maparg() only finds a
-		mapping for {name} exactly.
-		When there is no mapping that starts with {name}, an empty
-		String is returned.  If there is one, the rhs of that mapping
-		is returned.  If there are several mappings that start with
-		{name}, the rhs of one of them is returned.
-		The mappings local to the current buffer are checked first,
-		then the global mappings.
-		This function can be used to check if a mapping can be added
-		without being ambiguous.  Example: >
-	:if mapcheck("_vv") == ""
-	:   map _vv :set guifont=7x13
-	:endif
-<		This avoids adding the "_vv" mapping when there already is a
-		mapping for "_v" or for "_vvv".
-
-match({expr}, {pat}[, {start}[, {count}]])			*match()*
-		When {expr} is a |List| then this returns the index of the
-		first item where {pat} matches.  Each item is used as a
-		String, |Lists| and |Dictionaries| are used as echoed.
-		Otherwise, {expr} is used as a String.	The result is a
-		Number, which gives the index (byte offset) in {expr} where
-		{pat} matches.
-		A match at the first character or |List| item returns zero.
-		If there is no match -1 is returned.
-		Example: >
-			:echo match("testing", "ing")	" results in 4
-			:echo match([1, 'x'], '\a')	" results in 1
-<		See |string-match| for how {pat} is used.
-								*strpbrk()*
-		Vim doesn't have a strpbrk() function.	But you can do: >
-			:let sepidx = match(line, '[.,;: \t]')
-<								*strcasestr()*
-		Vim doesn't have a strcasestr() function.  But you can add
-		"\c" to the pattern to ignore case: >
-			:let idx = match(haystack, '\cneedle')
-<
-		If {start} is given, the search starts from byte index
-		{start} in a String or item {start} in a |List|.
-		The result, however, is still the index counted from the
-		first character/item.  Example: >
-			:echo match("testing", "ing", 2)
-<		result is again "4". >
-			:echo match("testing", "ing", 4)
-<		result is again "4". >
-			:echo match("testing", "t", 2)
-<		result is "3".
-		For a String, if {start} > 0 then it is like the string starts
-		{start} bytes later, thus "^" will match at {start}.  Except
-		when {count} is given, then it's like matches before the
-		{start} byte are ignored (this is a bit complicated to keep it
-		backwards compatible).
-		For a String, if {start} < 0, it will be set to 0.  For a list
-		the index is counted from the end.
-		If {start} is out of range ({start} > strlen({expr}) for a
-		String or {start} > len({expr}) for a |List|) -1 is returned.
-
-		When {count} is given use the {count}'th match.  When a match
-		is found in a String the search for the next one starts one
-		character further.  Thus this example results in 1: >
-			echo match("testing", "..", 0, 2)
-<		In a |List| the search continues in the next item.
-		Note that when {count} is added the way {start} works changes,
-		see above.
-
-		See |pattern| for the patterns that are accepted.
-		The 'ignorecase' option is used to set the ignore-caseness of
-		the pattern.  'smartcase' is NOT used.	The matching is always
-		done like 'magic' is set and 'cpoptions' is empty.
-
-					*matchadd()* *E798* *E799* *E801*
-matchadd({group}, {pattern}[, {priority}[, {id}]])
-		Defines a pattern to be highlighted in the current window (a
-		"match").  It will be highlighted with {group}.  Returns an
-		identification number (ID), which can be used to delete the
-		match using |matchdelete()|.
-
-		The optional {priority} argument assigns a priority to the
-		match.	A match with a high priority will have its
-		highlighting overrule that of a match with a lower priority.
-		A priority is specified as an integer (negative numbers are no
-		exception).  If the {priority} argument is not specified, the
-		default priority is 10.  The priority of 'hlsearch' is zero,
-		hence all matches with a priority greater than zero will
-		overrule it.  Syntax highlighting (see 'syntax') is a separate
-		mechanism, and regardless of the chosen priority a match will
-		always overrule syntax highlighting.
-
-		The optional {id} argument allows the request for a specific
-		match ID.  If a specified ID is already taken, an error
-		message will appear and the match will not be added.  An ID
-		is specified as a positive integer (zero excluded).  IDs 1, 2
-		and 3 are reserved for |:match|, |:2match| and |:3match|,
-		respectively.  If the {id} argument is not specified,
-		|matchadd()| automatically chooses a free ID.
-
-		The number of matches is not limited, as it is the case with
-		the |:match| commands.
-
-		Example: >
-			:highlight MyGroup ctermbg=green guibg=green
-			:let m = matchadd("MyGroup", "TODO")
-<		Deletion of the pattern: >
-			:call matchdelete(m)
-
-<		A list of matches defined by |matchadd()| and |:match| are
-		available from |getmatches()|.	All matches can be deleted in
-		one operation by |clearmatches()|.
-
-matcharg({nr})							*matcharg()*
-		Selects the {nr} match item, as set with a |:match|,
-		|:2match| or |:3match| command.
-		Return a |List| with two elements:
-			The name of the highlight group used
-			The pattern used.
-		When {nr} is not 1, 2 or 3 returns an empty |List|.
-		When there is no match item set returns ['', ''].
-		This is useful to save and restore a |:match|.
-		Highlighting matches using the |:match| commands are limited
-		to three matches. |matchadd()| does not have this limitation.
-
-matchdelete({id})			       *matchdelete()* *E802* *E803*
-		Deletes a match with ID {id} previously defined by |matchadd()|
-		or one of the |:match| commands.  Returns 0 if successful,
-		otherwise -1.  See example for |matchadd()|.  All matches can
-		be deleted in one operation by |clearmatches()|.
-
-matchend({expr}, {pat}[, {start}[, {count}]])			*matchend()*
-		Same as |match()|, but return the index of first character
-		after the match.  Example: >
-			:echo matchend("testing", "ing")
-<		results in "7".
-							*strspn()* *strcspn()*
-		Vim doesn't have a strspn() or strcspn() function, but you can
-		do it with matchend(): >
-			:let span = matchend(line, '[a-zA-Z]')
-			:let span = matchend(line, '[^a-zA-Z]')
-<		Except that -1 is returned when there are no matches.
-
-		The {start}, if given, has the same meaning as for |match()|. >
-			:echo matchend("testing", "ing", 2)
-<		results in "7". >
-			:echo matchend("testing", "ing", 5)
-<		result is "-1".
-		When {expr} is a |List| the result is equal to |match()|.
-
-matchlist({expr}, {pat}[, {start}[, {count}]])			*matchlist()*
-		Same as |match()|, but return a |List|.  The first item in the
-		list is the matched string, same as what matchstr() would
-		return.  Following items are submatches, like "\1", "\2", etc.
-		in |:substitute|.  When an optional submatch didn't match an
-		empty string is used.  Example: >
-			echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)')
-<		Results in: ['acd', 'a', '', 'c', 'd', '', '', '', '', '']
-		When there is no match an empty list is returned.
-
-matchstr({expr}, {pat}[, {start}[, {count}]])			*matchstr()*
-		Same as |match()|, but return the matched string.  Example: >
-			:echo matchstr("testing", "ing")
-<		results in "ing".
-		When there is no match "" is returned.
-		The {start}, if given, has the same meaning as for |match()|. >
-			:echo matchstr("testing", "ing", 2)
-<		results in "ing". >
-			:echo matchstr("testing", "ing", 5)
-<		result is "".
-		When {expr} is a |List| then the matching item is returned.
-		The type isn't changed, it's not necessarily a String.
-
-							*max()*
-max({list})	Return the maximum value of all items in {list}.
-		If {list} is not a list or one of the items in {list} cannot
-		be used as a Number this results in an error.
-		An empty |List| results in zero.
-
-							*min()*
-min({list})	Return the minimum value of all items in {list}.
-		If {list} is not a list or one of the items in {list} cannot
-		be used as a Number this results in an error.
-		An empty |List| results in zero.
-
-							*mkdir()* *E739*
-mkdir({name} [, {path} [, {prot}]])
-		Create directory {name}.
-		If {path} is "p" then intermediate directories are created as
-		necessary.  Otherwise it must be "".
-		If {prot} is given it is used to set the protection bits of
-		the new directory.  The default is 0755 (rwxr-xr-x: r/w for
-		the user readable for others).	Use 0700 to make it unreadable
-		for others.  This is only used for the last part of {name}.
-		Thus if you create /tmp/foo/bar then /tmp/foo will be created
-		with 0755.
-		Example: >
-			:call mkdir($HOME . "/tmp/foo/bar", "p", 0700)
-<		This function is not available in the |sandbox|.
-		Not available on all systems.  To check use: >
-			:if exists("*mkdir")
-<
-							*mode()*
-mode([expr])	Return a string that indicates the current mode.
-		If [expr] is supplied and it evaluates to a non-zero Number or
-		a non-empty String (|non-zero-arg|), then the full mode is
-		returned, otherwise only the first letter is returned.  Note
-		that " " and "0" are also non-empty strings.
-
-			n	Normal
-			no	Operator-pending
-			v	Visual by character
-			V	Visual by line
-			CTRL-V	Visual blockwise
-			s	Select by character
-			S	Select by line
-			CTRL-S	Select blockwise
-			i	Insert
-			R	Replace |R|
-			Rv	Virtual Replace |gR|
-			c	Command-line
-			cv	Vim Ex mode |gQ|
-			ce	Normal Ex mode |Q|
-			r	Hit-enter prompt
-			rm	The -- more -- prompt
-			r?	A |:confirm| query of some sort
-			!	Shell or external command is executing
-		This is useful in the 'statusline' option or when used
-		with |remote_expr()| In most other places it always returns
-		"c" or "n".
-		Also see |visualmode()|.
-
-mzeval({expr})							*mzeval()*
-		Evaluate MzScheme expression {expr} and return its result
-		convert to Vim data structures.
-		Numbers and strings are returned as they are.
-		Pairs (including lists and improper lists) and vectors are
-		returned as Vim |Lists|.
-		Hash tables are represented as Vim |Dictionary| type with keys
-		converted to strings.
-		All other types are converted to string with display function.
-		Examples: >
-		    :mz (define l (list 1 2 3))
-		    :mz (define h (make-hash)) (hash-set! h "list" l)
-		    :echo mzeval("l")
-		    :echo mzeval("h")
-<
-		{only available when compiled with the |+mzscheme| feature}
-
-nextnonblank({lnum})					*nextnonblank()*
-		Return the line number of the first line at or below {lnum}
-		that is not blank.  Example: >
-			if getline(nextnonblank(1)) =~ "Java"
-<		When {lnum} is invalid or there is no non-blank line at or
-		below it, zero is returned.
-		See also |prevnonblank()|.
-
-nr2char({expr})						*nr2char()*
-		Return a string with a single character, which has the number
-		value {expr}.  Examples: >
-			nr2char(64)		returns "@"
-			nr2char(32)		returns " "
-<		The current 'encoding' is used.  Example for "utf-8": >
-			nr2char(300)		returns I with bow character
-<		Note that a NUL character in the file is specified with
-		nr2char(10), because NULs are represented with newline
-		characters.  nr2char(0) is a real NUL and terminates the
-		string, thus results in an empty string.
-
-							*getpid()*
-getpid()	Return a Number which is the process ID of the Vim process.
-		On Unix and MS-Windows this is a unique number, until Vim
-		exits.	On MS-DOS it's always zero.
-
-							*getpos()*
-getpos({expr})	Get the position for {expr}.  For possible values of {expr}
-		see |line()|.
-		The result is a |List| with four numbers:
-		    [bufnum, lnum, col, off]
-		"bufnum" is zero, unless a mark like '0 or 'A is used, then it
-		is the buffer number of the mark.
-		"lnum" and "col" are the position in the buffer.  The first
-		column is 1.
-		The "off" number is zero, unless 'virtualedit' is used.  Then
-		it is the offset in screen columns from the start of the
-		character.  E.g., a position within a  or after the last
-		character.
-		This can be used to save and restore the cursor position: >
-			let save_cursor = getpos(".")
-			MoveTheCursorAround
-			call setpos('.', save_cursor)
-<		Also see |setpos()|.
-
-pathshorten({expr})					*pathshorten()*
-		Shorten directory names in the path {expr} and return the
-		result.  The tail, the file name, is kept as-is.  The other
-		components in the path are reduced to single letters.  Leading
-		'~' and '.' characters are kept.  Example: >
-			:echo pathshorten('~/.vim/autoload/myfile.vim')
-<			~/.v/a/myfile.vim ~
-		It doesn't matter if the path exists or not.
-
-pow({x}, {y})						*pow()*
-		Return the power of {x} to the exponent {y} as a |Float|.
-		{x} and {y} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo pow(3, 3)
-<			27.0 >
-			:echo pow(2, 16)
-<			65536.0 >
-			:echo pow(32, 0.20)
-<			2.0
-		{only available when compiled with the |+float| feature}
-		
-prevnonblank({lnum})					*prevnonblank()*
-		Return the line number of the first line at or above {lnum}
-		that is not blank.  Example: >
-			let ind = indent(prevnonblank(v:lnum - 1))
-<		When {lnum} is invalid or there is no non-blank line at or
-		above it, zero is returned.
-		Also see |nextnonblank()|.
-
-
-printf({fmt}, {expr1} ...)				*printf()*
-		Return a String with {fmt}, where "%" items are replaced by
-		the formatted form of their respective arguments.  Example: >
-			printf("%4d: E%d %.30s", lnum, errno, msg)
-<		May result in:
-			"  99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~
-
-		Often used items are:
-		  %s	string
-		  %6s	string right-aligned in 6 bytes
-		  %.9s	string truncated to 9 bytes
-		  %c	single byte
-		  %d	decimal number
-		  %5d	decimal number padded with spaces to 5 characters
-		  %x	hex number
-		  %04x	hex number padded with zeros to at least 4 characters
-		  %X	hex number using upper case letters
-		  %o	octal number
-		  %f	floating point number in the form 123.456
-		  %e	floating point number in the form 1.234e3
-		  %E	floating point number in the form 1.234E3
-		  %g	floating point number, as %f or %e depending on value
-		  %G	floating point number, as %f or %E depending on value
-		  %%	the % character itself
-
-		Conversion specifications start with '%' and end with the
-		conversion type.  All other characters are copied unchanged to
-		the result.
-
-		The "%" starts a conversion specification.  The following
-		arguments appear in sequence:
-
-			%  [flags]  [field-width]  [.precision]  type
-
-		flags
-			Zero or more of the following flags:
-
-		    #	      The value should be converted to an "alternate
-			      form".  For c, d, and s conversions, this option
-			      has no effect.  For o conversions, the precision
-			      of the number is increased to force the first
-			      character of the output string to a zero (except
-			      if a zero value is printed with an explicit
-			      precision of zero).
-			      For x and X conversions, a non-zero result has
-			      the string "0x" (or "0X" for X conversions)
-			      prepended to it.
-
-		    0 (zero)  Zero padding.  For all conversions the converted
-			      value is padded on the left with zeros rather
-			      than blanks.  If a precision is given with a
-			      numeric conversion (d, o, x, and X), the 0 flag
-			      is ignored.
-
-		    -	      A negative field width flag; the converted value
-			      is to be left adjusted on the field boundary.
-			      The converted value is padded on the right with
-			      blanks, rather than on the left with blanks or
-			      zeros.  A - overrides a 0 if both are given.
-
-		    ' ' (space)  A blank should be left before a positive
-			      number produced by a signed conversion (d).
-
-		    +	      A sign must always be placed before a number
-			      produced by a signed conversion.	A + overrides
-			      a space if both are used.
-
-		field-width
-			An optional decimal digit string specifying a minimum
-			field width.  If the converted value has fewer bytes
-			than the field width, it will be padded with spaces on
-			the left (or right, if the left-adjustment flag has
-			been given) to fill out the field width.
-
-		.precision
-			An optional precision, in the form of a period '.'
-			followed by an optional digit string.  If the digit
-			string is omitted, the precision is taken as zero.
-			This gives the minimum number of digits to appear for
-			d, o, x, and X conversions, or the maximum number of
-			bytes to be printed from a string for s conversions.
-			For floating point it is the number of digits after
-			the decimal point.
-
-		type
-			A character that specifies the type of conversion to
-			be applied, see below.
-
-		A field width or precision, or both, may be indicated by an
-		asterisk '*' instead of a digit string.  In this case, a
-		Number argument supplies the field width or precision.	A
-		negative field width is treated as a left adjustment flag
-		followed by a positive field width; a negative precision is
-		treated as though it were missing.  Example: >
-			:echo printf("%d: %.*s", nr, width, line)
-<		This limits the length of the text used from "line" to
-		"width" bytes.
-
-		The conversion specifiers and their meanings are:
-
-				*printf-d* *printf-o* *printf-x* *printf-X*
-		doxX	The Number argument is converted to signed decimal
-			(d), unsigned octal (o), or unsigned hexadecimal (x
-			and X) notation.  The letters "abcdef" are used for
-			x conversions; the letters "ABCDEF" are used for X
-			conversions.
-			The precision, if any, gives the minimum number of
-			digits that must appear; if the converted value
-			requires fewer digits, it is padded on the left with
-			zeros.
-			In no case does a non-existent or small field width
-			cause truncation of a numeric field; if the result of
-			a conversion is wider than the field width, the field
-			is expanded to contain the conversion result.
-
-							*printf-c*
-		c	The Number argument is converted to a byte, and the
-			resulting character is written.
-
-							*printf-s*
-		s	The text of the String argument is used.  If a
-			precision is specified, no more bytes than the number
-			specified are used.
-
-							*printf-f* *E807*
-		f	The Float argument is converted into a string of the 
-			form 123.456.  The precision specifies the number of
-			digits after the decimal point.  When the precision is
-			zero the decimal point is omitted.  When the precision
-			is not specified 6 is used.  A really big number
-			(out of range or dividing by zero) results in "inf".
-			"0.0 / 0.0" results in "nan".
-			Example: >
-				echo printf("%.2f", 12.115)
-<				12.12
-			Note that roundoff depends on the system libraries.
-			Use |round()| when in doubt.
-
-							*printf-e* *printf-E*
-		e E	The Float argument is converted into a string of the
-			form 1.234e+03 or 1.234E+03 when using 'E'.  The
-			precision specifies the number of digits after the
-			decimal point, like with 'f'.
-
-							*printf-g* *printf-G*
-		g G	The Float argument is converted like with 'f' if the
-			value is between 0.001 (inclusive) and 10000000.0
-			(exclusive).  Otherwise 'e' is used for 'g' and 'E'
-			for 'G'.  When no precision is specified superfluous
-			zeroes and '+' signs are removed, except for the zero
-			immediately after the decimal point.  Thus 10000000.0
-			results in 1.0e7.
-
-							*printf-%*
-		%	A '%' is written.  No argument is converted.  The
-			complete conversion specification is "%%".
-
-		When a Number argument is expected a String argument is also
-		accepted and automatically converted.
-		When a Float or String argument is expected a Number argument
-		is also accepted and automatically converted.
-		Any other argument type results in an error message.
-
-							*E766* *E767*
-		The number of {exprN} arguments must exactly match the number
-		of "%" items.  If there are not sufficient or too many
-		arguments an error is given.  Up to 18 arguments can be used.
-
-
-pumvisible()						*pumvisible()*
-		Returns non-zero when the popup menu is visible, zero
-		otherwise.  See |ins-completion-menu|.
-		This can be used to avoid some things that would remove the
-		popup menu.
-
-							*E726* *E727*
-range({expr} [, {max} [, {stride}]])				*range()*
-		Returns a |List| with Numbers:
-		- If only {expr} is specified: [0, 1, ..., {expr} - 1]
-		- If {max} is specified: [{expr}, {expr} + 1, ..., {max}]
-		- If {stride} is specified: [{expr}, {expr} + {stride}, ...,
-		  {max}] (increasing {expr} with {stride} each time, not
-		  producing a value past {max}).
-		When the maximum is one before the start the result is an
-		empty list.  When the maximum is more than one before the
-		start this is an error.
-		Examples: >
-			range(4)		" [0, 1, 2, 3]
-			range(2, 4)		" [2, 3, 4]
-			range(2, 9, 3)		" [2, 5, 8]
-			range(2, -2, -1)	" [2, 1, 0, -1, -2]
-			range(0)		" []
-			range(2, 0)		" error!
-<
-							*readfile()*
-readfile({fname} [, {binary} [, {max}]])
-		Read file {fname} and return a |List|, each line of the file
-		as an item.  Lines broken at NL characters.  Macintosh files
-		separated with CR will result in a single long line (unless a
-		NL appears somewhere).
-		All NUL characters are replaced with a NL character.
-		When {binary} is equal to "b" binary mode is used:
-		- When the last line ends in a NL an extra empty list item is
-		  added.
-		- No CR characters are removed.
-		Otherwise:
-		- CR characters that appear before a NL are removed.
-		- Whether the last line ends in a NL or not does not matter.
-		- When 'encoding' is Unicode any UTF-8 byte order mark is
-		  removed from the text.
-		When {max} is given this specifies the maximum number of lines
-		to be read.  Useful if you only want to check the first ten
-		lines of a file: >
-			:for line in readfile(fname, '', 10)
-			:  if line =~ 'Date' | echo line | endif
-			:endfor
-<		When {max} is negative -{max} lines from the end of the file
-		are returned, or as many as there are.
-		When {max} is zero the result is an empty list.
-		Note that without {max} the whole file is read into memory.
-		Also note that there is no recognition of encoding.  Read a
-		file into a buffer if you need to.
-		When the file can't be opened an error message is given and
-		the result is an empty list.
-		Also see |writefile()|.
-
-reltime([{start} [, {end}]])				*reltime()*
-		Return an item that represents a time value.  The format of
-		the item depends on the system.  It can be passed to
-		|reltimestr()| to convert it to a string.
-		Without an argument it returns the current time.
-		With one argument is returns the time passed since the time
-		specified in the argument.
-		With two arguments it returns the time passed between {start}
-		and {end}.
-		The {start} and {end} arguments must be values returned by
-		reltime().
-		{only available when compiled with the |+reltime| feature}
-
-reltimestr({time})				*reltimestr()*
-		Return a String that represents the time value of {time}.
-		This is the number of seconds, a dot and the number of
-		microseconds.  Example: >
-			let start = reltime()
-			call MyFunction()
-			echo reltimestr(reltime(start))
-<		Note that overhead for the commands will be added to the time.
-		The accuracy depends on the system.
-		Leading spaces are used to make the string align nicely.  You
-		can use split() to remove it. >
-			echo split(reltimestr(reltime(start)))[0]
-<		Also see |profiling|.
-		{only available when compiled with the |+reltime| feature}
-
-							*remote_expr()* *E449*
-remote_expr({server}, {string} [, {idvar}])
-		Send the {string} to {server}.	The string is sent as an
-		expression and the result is returned after evaluation.
-		The result must be a String or a |List|.  A |List| is turned
-		into a String by joining the items with a line break in
-		between (not at the end), like with join(expr, "\n").
-		If {idvar} is present, it is taken as the name of a
-		variable and a {serverid} for later use with
-		remote_read() is stored there.
-		See also |clientserver| |RemoteReply|.
-		This function is not available in the |sandbox|.
-		{only available when compiled with the |+clientserver| feature}
-		Note: Any errors will cause a local error message to be issued
-		and the result will be the empty string.
-		Examples: >
-			:echo remote_expr("gvim", "2+2")
-			:echo remote_expr("gvim1", "b:current_syntax")
-<
-
-remote_foreground({server})				*remote_foreground()*
-		Move the Vim server with the name {server} to the foreground.
-		This works like: >
-			remote_expr({server}, "foreground()")
-<		Except that on Win32 systems the client does the work, to work
-		around the problem that the OS doesn't always allow the server
-		to bring itself to the foreground.
-		Note: This does not restore the window if it was minimized,
-		like foreground() does.
-		This function is not available in the |sandbox|.
-		{only in the Win32, Athena, Motif and GTK GUI versions and the
-		Win32 console version}
-
-
-remote_peek({serverid} [, {retvar}])		*remote_peek()*
-		Returns a positive number if there are available strings
-		from {serverid}.  Copies any reply string into the variable
-		{retvar} if specified.	{retvar} must be a string with the
-		name of a variable.
-		Returns zero if none are available.
-		Returns -1 if something is wrong.
-		See also |clientserver|.
-		This function is not available in the |sandbox|.
-		{only available when compiled with the |+clientserver| feature}
-		Examples: >
-			:let repl = ""
-			:echo "PEEK: ".remote_peek(id, "repl").": ".repl
-
-remote_read({serverid})				*remote_read()*
-		Return the oldest available reply from {serverid} and consume
-		it.  It blocks until a reply is available.
-		See also |clientserver|.
-		This function is not available in the |sandbox|.
-		{only available when compiled with the |+clientserver| feature}
-		Example: >
-			:echo remote_read(id)
-<
-							*remote_send()* *E241*
-remote_send({server}, {string} [, {idvar}])
-		Send the {string} to {server}.	The string is sent as input
-		keys and the function returns immediately.  At the Vim server
-		the keys are not mapped |:map|.
-		If {idvar} is present, it is taken as the name of a variable
-		and a {serverid} for later use with remote_read() is stored
-		there.
-		See also |clientserver| |RemoteReply|.
-		This function is not available in the |sandbox|.
-		{only available when compiled with the |+clientserver| feature}
-		Note: Any errors will be reported in the server and may mess
-		up the display.
-		Examples: >
-		:echo remote_send("gvim", ":DropAndReply ".file, "serverid").
-		 \ remote_read(serverid)
-
-		:autocmd NONE RemoteReply *
-		 \ echo remote_read(expand(""))
-		:echo remote_send("gvim", ":sleep 10 | echo ".
-		 \ 'server2client(expand(""), "HELLO")')
-<
-remove({list}, {idx} [, {end}])				*remove()*
-		Without {end}: Remove the item at {idx} from |List| {list} and
-		return the item.
-		With {end}: Remove items from {idx} to {end} (inclusive) and
-		return a List with these items.  When {idx} points to the same
-		item as {end} a list with one item is returned.  When {end}
-		points to an item before {idx} this is an error.
-		See |list-index| for possible values of {idx} and {end}.
-		Example: >
-			:echo "last item: " . remove(mylist, -1)
-			:call remove(mylist, 0, 9)
-remove({dict}, {key})
-		Remove the entry from {dict} with key {key}.  Example: >
-			:echo "removed " . remove(dict, "one")
-<		If there is no {key} in {dict} this is an error.
-
-		Use |delete()| to remove a file.
-
-rename({from}, {to})					*rename()*
-		Rename the file by the name {from} to the name {to}.  This
-		should also work to move files across file systems.  The
-		result is a Number, which is 0 if the file was renamed
-		successfully, and non-zero when the renaming failed.
-		NOTE: If {to} exists it is overwritten without warning.
-		This function is not available in the |sandbox|.
-
-repeat({expr}, {count})					*repeat()*
-		Repeat {expr} {count} times and return the concatenated
-		result.  Example: >
-			:let separator = repeat('-', 80)
-<		When {count} is zero or negative the result is empty.
-		When {expr} is a |List| the result is {expr} concatenated
-		{count} times.	Example: >
-			:let longlist = repeat(['a', 'b'], 3)
-<		Results in ['a', 'b', 'a', 'b', 'a', 'b'].
-
-
-resolve({filename})					*resolve()* *E655*
-		On MS-Windows, when {filename} is a shortcut (a .lnk file),
-		returns the path the shortcut points to in a simplified form.
-		On Unix, repeat resolving symbolic links in all path
-		components of {filename} and return the simplified result.
-		To cope with link cycles, resolving of symbolic links is
-		stopped after 100 iterations.
-		On other systems, return the simplified {filename}.
-		The simplification step is done as by |simplify()|.
-		resolve() keeps a leading path component specifying the
-		current directory (provided the result is still a relative
-		path name) and also keeps a trailing path separator.
-
-							*reverse()*
-reverse({list})	Reverse the order of items in {list} in-place.	Returns
-		{list}.
-		If you want a list to remain unmodified make a copy first: >
-			:let revlist = reverse(copy(mylist))
-
-round({expr})							*round()*
-		Round off {expr} to the nearest integral value and return it
-		as a |Float|.  If {expr} lies halfway between two integral
-		values, then use the larger one (away from zero).
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			echo round(0.456)
-<			0.0  >
-			echo round(4.5)
-<			5.0 >
-			echo round(-4.5)
-<			-5.0
-		{only available when compiled with the |+float| feature}
-		
-		
-search({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*search()*
-		Search for regexp pattern {pattern}.  The search starts at the
-		cursor position (you can use |cursor()| to set it).
-
-		{flags} is a String, which can contain these character flags:
-		'b'	search backward instead of forward
-		'c'	accept a match at the cursor position
-		'e'	move to the End of the match
-		'n'	do Not move the cursor
-		'p'	return number of matching sub-pattern (see below)
-		's'	set the ' mark at the previous location of the cursor
-		'w'	wrap around the end of the file
-		'W'	don't wrap around the end of the file
-		If neither 'w' or 'W' is given, the 'wrapscan' option applies.
-
-		If the 's' flag is supplied, the ' mark is set, only if the
-		cursor is moved. The 's' flag cannot be combined with the 'n'
-		flag.
-
-		'ignorecase', 'smartcase' and 'magic' are used.
-
-		When the {stopline} argument is given then the search stops
-		after searching this line.  This is useful to restrict the
-		search to a range of lines.  Examples: >
-			let match = search('(', 'b', line("w0"))
-			let end = search('END', '', line("w$"))
-<		When {stopline} is used and it is not zero this also implies
-		that the search does not wrap around the end of the file.
-		A zero value is equal to not giving the argument.
-
-		When the {timeout} argument is given the search stops when
-		more than this many milli seconds have passed.	Thus when
-		{timeout} is 500 the search stops after half a second.
-		The value must not be negative.  A zero value is like not
-		giving the argument.
-		{only available when compiled with the |+reltime| feature}
-
-		If there is no match a 0 is returned and the cursor doesn't
-		move.  No error message is given.
-		When a match has been found its line number is returned.
-							*search()-sub-match*
-		With the 'p' flag the returned value is one more than the
-		first sub-match in \(\).  One if none of them matched but the
-		whole pattern did match.
-		To get the column number too use |searchpos()|.
-
-		The cursor will be positioned at the match, unless the 'n'
-		flag is used.
-
-		Example (goes over all files in the argument list): >
-		    :let n = 1
-		    :while n <= argc()	    " loop over all files in arglist
-		    :  exe "argument " . n
-		    :  " start at the last char in the file and wrap for the
-		    :  " first search to find match at start of file
-		    :  normal G$
-		    :  let flags = "w"
-		    :  while search("foo", flags) > 0
-		    :	 s/foo/bar/g
-		    :	 let flags = "W"
-		    :  endwhile
-		    :  update		    " write the file if modified
-		    :  let n = n + 1
-		    :endwhile
-<
-		Example for using some flags: >
-		    :echo search('\
-			if searchdecl('myvar') == 0
-			   echo getline('.')
-			endif
-<
-							*searchpair()*
-searchpair({start}, {middle}, {end} [, {flags} [, {skip}
-				[, {stopline} [, {timeout}]]]])
-		Search for the match of a nested start-end pair.  This can be
-		used to find the "endif" that matches an "if", while other
-		if/endif pairs in between are ignored.
-		The search starts at the cursor.  The default is to search
-		forward, include 'b' in {flags} to search backward.
-		If a match is found, the cursor is positioned at it and the
-		line number is returned.  If no match is found 0 or -1 is
-		returned and the cursor doesn't move.  No error message is
-		given.
-
-		{start}, {middle} and {end} are patterns, see |pattern|.  They
-		must not contain \( \) pairs.  Use of \%( \) is allowed.  When
-		{middle} is not empty, it is found when searching from either
-		direction, but only when not in a nested start-end pair.  A
-		typical use is: >
-			searchpair('\', '\', '\')
-<		By leaving {middle} empty the "else" is skipped.
-
-		{flags} 'b', 'c', 'n', 's', 'w' and 'W' are used like with
-		|search()|.  Additionally:
-		'r'	Repeat until no more matches found; will find the
-			outer pair.  Implies the 'W' flag.
-		'm'	Return number of matches instead of line number with
-			the match; will be > 1 when 'r' is used.
-		Note: it's nearly always a good idea to use the 'W' flag, to
-		avoid wrapping around the end of the file.
-
-		When a match for {start}, {middle} or {end} is found, the
-		{skip} expression is evaluated with the cursor positioned on
-		the start of the match.  It should return non-zero if this
-		match is to be skipped.  E.g., because it is inside a comment
-		or a string.
-		When {skip} is omitted or empty, every match is accepted.
-		When evaluating {skip} causes an error the search is aborted
-		and -1 returned.
-
-		For {stopline} and {timeout} see |search()|.
-
-		The value of 'ignorecase' is used.  'magic' is ignored, the
-		patterns are used like it's on.
-
-		The search starts exactly at the cursor.  A match with
-		{start}, {middle} or {end} at the next character, in the
-		direction of searching, is the first one found.  Example: >
-			if 1
-			  if 2
-			  endif 2
-			endif 1
-<		When starting at the "if 2", with the cursor on the "i", and
-		searching forwards, the "endif 2" is found.  When starting on
-		the character just before the "if 2", the "endif 1" will be
-		found.	That's because the "if 2" will be found first, and
-		then this is considered to be a nested if/endif from "if 2" to
-		"endif 2".
-		When searching backwards and {end} is more than one character,
-		it may be useful to put "\zs" at the end of the pattern, so
-		that when the cursor is inside a match with the end it finds
-		the matching start.
-
-		Example, to find the "endif" command in a Vim script: >
-
-	:echo searchpair('\', '\', '\', 'W',
-			\ 'getline(".") =~ "^\\s*\""')
-
-<		The cursor must be at or after the "if" for which a match is
-		to be found.  Note that single-quote strings are used to avoid
-		having to double the backslashes.  The skip expression only
-		catches comments at the start of a line, not after a command.
-		Also, a word "en" or "if" halfway a line is considered a
-		match.
-		Another example, to search for the matching "{" of a "}": >
-
-	:echo searchpair('{', '', '}', 'bW')
-
-<		This works when the cursor is at or before the "}" for which a
-		match is to be found.  To reject matches that syntax
-		highlighting recognized as strings: >
-
-	:echo searchpair('{', '', '}', 'bW',
-	     \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
-<
-							*searchpairpos()*
-searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
-				[, {stopline} [, {timeout}]]]])
-		Same as |searchpair()|, but returns a |List| with the line and
-		column position of the match. The first element of the |List|
-		is the line number and the second element is the byte index of
-		the column position of the match.  If no match is found,
-		returns [0, 0]. >
-
-			:let [lnum,col] = searchpairpos('{', '', '}', 'n')
-<
-		See |match-parens| for a bigger and more useful example.
-
-searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*searchpos()*
-		Same as |search()|, but returns a |List| with the line and
-		column position of the match. The first element of the |List|
-		is the line number and the second element is the byte index of
-		the column position of the match. If no match is found,
-		returns [0, 0].
-		Example: >
-	:let [lnum, col] = searchpos('mypattern', 'n')
-
-<		When the 'p' flag is given then there is an extra item with
-		the sub-pattern match number |search()-sub-match|.  Example: >
-	:let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np')
-<		In this example "submatch" is 2 when a lowercase letter is
-		found |/\l|, 3 when an uppercase letter is found |/\u|.
-
-server2client( {clientid}, {string})			*server2client()*
-		Send a reply string to {clientid}.  The most recent {clientid}
-		that sent a string can be retrieved with expand("").
-		{only available when compiled with the |+clientserver| feature}
-		Note:
-		This id has to be stored before the next command can be
-		received.  I.e. before returning from the received command and
-		before calling any commands that waits for input.
-		See also |clientserver|.
-		Example: >
-			:echo server2client(expand(""), "HELLO")
-<
-serverlist()					*serverlist()*
-		Return a list of available server names, one per line.
-		When there are no servers or the information is not available
-		an empty string is returned.  See also |clientserver|.
-		{only available when compiled with the |+clientserver| feature}
-		Example: >
-			:echo serverlist()
-<
-setbufvar({expr}, {varname}, {val})			*setbufvar()*
-		Set option or local variable {varname} in buffer {expr} to
-		{val}.
-		This also works for a global or local window option, but it
-		doesn't work for a global or local window variable.
-		For a local window option the global value is unchanged.
-		For the use of {expr}, see |bufname()| above.
-		Note that the variable name without "b:" must be used.
-		Examples: >
-			:call setbufvar(1, "&mod", 1)
-			:call setbufvar("todo", "myvar", "foobar")
-<		This function is not available in the |sandbox|.
-
-setcmdpos({pos})					*setcmdpos()*
-		Set the cursor position in the command line to byte position
-		{pos}.	The first position is 1.
-		Use |getcmdpos()| to obtain the current position.
-		Only works while editing the command line, thus you must use
-		|c_CTRL-\_e|, |c_CTRL-R_=| or |c_CTRL-R_CTRL-R| with '='.  For
-		|c_CTRL-\_e| and |c_CTRL-R_CTRL-R| with '=' the position is
-		set after the command line is set to the expression.  For
-		|c_CTRL-R_=| it is set after evaluating the expression but
-		before inserting the resulting text.
-		When the number is too big the cursor is put at the end of the
-		line.  A number smaller than one has undefined results.
-		Returns 0 when successful, 1 when not editing the command
-		line.
-
-setline({lnum}, {text})					*setline()*
-		Set line {lnum} of the current buffer to {text}.
-		{lnum} is used like with |getline()|.
-		When {lnum} is just below the last line the {text} will be
-		added as a new line.
-		If this succeeds, 0 is returned.  If this fails (most likely
-		because {lnum} is invalid) 1 is returned.  Example: >
-			:call setline(5, strftime("%c"))
-<		When {text} is a |List| then line {lnum} and following lines
-		will be set to the items in the list.  Example: >
-			:call setline(5, ['aaa', 'bbb', 'ccc'])
-<		This is equivalent to: >
-			:for [n, l] in [[5, 6, 7], ['aaa', 'bbb', 'ccc']]
-			:  call setline(n, l)
-			:endfor
-<		Note: The '[ and '] marks are not set.
-
-setloclist({nr}, {list} [, {action}])			*setloclist()*
-		Create or replace or add to the location list for window {nr}.
-		When {nr} is zero the current window is used. For a location
-		list window, the displayed location list is modified.  For an
-		invalid window number {nr}, -1 is returned.
-		Otherwise, same as |setqflist()|.
-		Also see |location-list|.
-
-setmatches({list})					*setmatches()*
-		Restores a list of matches saved by |getmatches()|.  Returns 0
-		if successful, otherwise -1.  All current matches are cleared
-		before the list is restored.  See example for |getmatches()|.
-
-							*setpos()*
-setpos({expr}, {list})
-		Set the position for {expr}.  Possible values:
-			.	the cursor
-			'x	mark x
-
-		{list} must be a |List| with four numbers:
-		    [bufnum, lnum, col, off]
-
-		"bufnum" is the buffer number.	Zero can be used for the
-		current buffer.  Setting the cursor is only possible for
-		the current buffer.  To set a mark in another buffer you can
-		use the |bufnr()| function to turn a file name into a buffer
-		number.
-		Does not change the jumplist.
-
-		"lnum" and "col" are the position in the buffer.  The first
-		column is 1.  Use a zero "lnum" to delete a mark.  If "col" is
-		smaller than 1 then 1 is used.
-
-		The "off" number is only used when 'virtualedit' is set. Then
-		it is the offset in screen columns from the start of the
-		character.  E.g., a position within a  or after the last
-		character.
-
-		Returns 0 when the position could be set, -1 otherwise.
-		An error message is given if {expr} is invalid.
-
-		Also see |getpos()|
-
-		This does not restore the preferred column for moving
-		vertically.  See |winrestview()| for that.
-
-
-setqflist({list} [, {action}])				*setqflist()*
-		Create or replace or add to the quickfix list using the items
-		in {list}.  Each item in {list} is a dictionary.
-		Non-dictionary items in {list} are ignored.  Each dictionary
-		item can contain the following entries:
-
-		    bufnr	buffer number; must be the number of a valid
-				buffer
-		    filename	name of a file; only used when "bufnr" is not
-				present or it is invalid.
-		    lnum	line number in the file
-		    pattern	search pattern used to locate the error
-		    col		column number
-		    vcol	when non-zero: "col" is visual column
-				when zero: "col" is byte index
-		    nr		error number
-		    text	description of the error
-		    type	single-character error type, 'E', 'W', etc.
-
-		The "col", "vcol", "nr", "type" and "text" entries are
-		optional.  Either "lnum" or "pattern" entry can be used to
-		locate a matching error line.
-		If the "filename" and "bufnr" entries are not present or
-		neither the "lnum" or "pattern" entries are present, then the
-		item will not be handled as an error line.
-		If both "pattern" and "lnum" are present then "pattern" will
-		be used.
-		If you supply an empty {list}, the quickfix list will be
-		cleared.
-		Note that the list is not exactly the same as what
-		|getqflist()| returns.
-
-		If {action} is set to 'a', then the items from {list} are
-		added to the existing quickfix list. If there is no existing
-		list, then a new list is created. If {action} is set to 'r',
-		then the items from the current quickfix list are replaced
-		with the items from {list}. If {action} is not present or is
-		set to ' ', then a new list is created.
-
-		Returns zero for success, -1 for failure.
-
-		This function can be used to create a quickfix list
-		independent of the 'errorformat' setting.  Use a command like
-		":cc 1" to jump to the first position.
-
-
-							*setreg()*
-setreg({regname}, {value} [,{options}])
-		Set the register {regname} to {value}.
-		If {options} contains "a" or {regname} is upper case,
-		then the value is appended.
-		{options} can also contain a register type specification:
-		    "c" or "v"	      |characterwise| mode
-		    "l" or "V"	      |linewise| mode
-		    "b" or "" |blockwise-visual| mode
-		If a number immediately follows "b" or "" then this is
-		used as the width of the selection - if it is not specified
-		then the width of the block is set to the number of characters
-		in the longest line (counting a  as 1 character).
-
-		If {options} contains no register settings, then the default
-		is to use character mode unless {value} ends in a .
-		Setting the '=' register is not possible.
-		Returns zero for success, non-zero for failure.
-
-		Examples: >
-			:call setreg(v:register, @*)
-			:call setreg('*', @%, 'ac')
-			:call setreg('a', "1\n2\n3", 'b5')
-
-<		This example shows using the functions to save and restore a
-		register. >
-			:let var_a = getreg('a', 1)
-			:let var_amode = getregtype('a')
-			    ....
-			:call setreg('a', var_a, var_amode)
-
-<		You can also change the type of a register by appending
-		nothing: >
-			:call setreg('a', '', 'al')
-
-settabvar({tabnr}, {varname}, {val})			*settabvar()*
-		Set tab-local variable {varname} to {val} in tab page {tabnr}.
-		|t:var|
-		Note that the variable name without "t:" must be used.
-		Tabs are numbered starting with one.
-		Vim briefly goes to the tab page {tabnr}, this may trigger
-		TabLeave and TabEnter autocommands.
-		This function is not available in the |sandbox|.
-
-settabwinvar({tabnr}, {winnr}, {varname}, {val})	*settabwinvar()*
-		Set option or local variable {varname} in window {winnr} to
-		{val}.
-		Tabs are numbered starting with one.  For the current tabpage
-		use |setwinvar()|.
-		When {winnr} is zero the current window is used.
-		This also works for a global or local buffer option, but it
-		doesn't work for a global or local buffer variable.
-		For a local buffer option the global value is unchanged.
-		Note that the variable name without "w:" must be used.
-		Vim briefly goes to the tab page {tabnr}, this may trigger
-		TabLeave and TabEnter autocommands.
-		Examples: >
-			:call settabwinvar(1, 1, "&list", 0)
-			:call settabwinvar(3, 2, "myvar", "foobar")
-<		This function is not available in the |sandbox|.
-
-setwinvar({nr}, {varname}, {val})			*setwinvar()*
-		Like |settabwinvar()| for the current tab page.
-		Examples: >
-			:call setwinvar(1, "&list", 0)
-			:call setwinvar(2, "myvar", "foobar")
-
-shellescape({string} [, {special}])			*shellescape()*
-		Escape {string} for use as a shell command argument.
-		On MS-Windows and MS-DOS, when 'shellslash' is not set, it
-		will enclose {string} in double quotes and double all double
-		quotes within {string}.
-		For other systems, it will enclose {string} in single quotes
-		and replace all "'" with "'\''".
-		When the {special} argument is present and it's a non-zero
-		Number or a non-empty String (|non-zero-arg|), then special
-		items such as "!", "%", "#" and "" will be preceded by
-		a backslash.  This backslash will be removed again by the |:!|
-		command.
-		The "!" character will be escaped (again with a |non-zero-arg|
-		{special}) when 'shell' contains "csh" in the tail.  That is
-		because for csh and tcsh "!" is used for history replacement
-		even when inside single quotes.
-		The  character is also escaped.  With a |non-zero-arg|
-		{special} and 'shell' containing "csh" in the tail it's
-		escaped a second time.
-		Example of use with a |:!| command: >
-		    :exe '!dir ' . shellescape(expand(''), 1)
-<		This results in a directory listing for the file under the
-		cursor.  Example of use with |system()|: >
-		    :call system("chmod +w -- " . shellescape(expand("%")))
-
-
-simplify({filename})					*simplify()*
-		Simplify the file name as much as possible without changing
-		the meaning.  Shortcuts (on MS-Windows) or symbolic links (on
-		Unix) are not resolved.  If the first path component in
-		{filename} designates the current directory, this will be
-		valid for the result as well.  A trailing path separator is
-		not removed either.
-		Example: >
-			simplify("./dir/.././/file/") == "./file/"
-<		Note: The combination "dir/.." is only removed if "dir" is
-		a searchable directory or does not exist.  On Unix, it is also
-		removed when "dir" is a symbolic link within the same
-		directory.  In order to resolve all the involved symbolic
-		links before simplifying the path name, use |resolve()|.
-
-
-sin({expr})						*sin()*
-		Return the sine of {expr}, measured in radians, as a |Float|.
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo sin(100)
-<			-0.506366 >
-			:echo sin(-4.01)
-<			0.763301
-		{only available when compiled with the |+float| feature}
-		
-
-sinh({expr})						*sinh()*
-		Return the hyperbolic sine of {expr} as a |Float| in the range
-		[-inf, inf].
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo sinh(0.5)
-<			0.521095 >
-			:echo sinh(-0.9)
-<			-1.026517
-		{only available when compiled with the |+float| feature}
-
-
-sort({list} [, {func}])					*sort()* *E702*
-		Sort the items in {list} in-place.  Returns {list}.  If you
-		want a list to remain unmodified make a copy first: >
-			:let sortedlist = sort(copy(mylist))
-<		Uses the string representation of each item to sort on.
-		Numbers sort after Strings, |Lists| after Numbers.
-		For sorting text in the current buffer use |:sort|.
-		When {func} is given and it is one then case is ignored.
-		When {func} is a |Funcref| or a function name, this function
-		is called to compare items.  The function is invoked with two
-		items as argument and must return zero if they are equal, 1 or
-		bigger if the first one sorts after the second one, -1 or
-		smaller if the first one sorts before the second one.
-		Example: >
-			func MyCompare(i1, i2)
-			   return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
-			endfunc
-			let sortedlist = sort(mylist, "MyCompare")
-<		A shorter compare version for this specific simple case, which
-		ignores overflow: >
-			func MyCompare(i1, i2)
-			   return a:i1 - a:i2
-			endfunc
-<
-							*soundfold()*
-soundfold({word})
-		Return the sound-folded equivalent of {word}.  Uses the first
-		language in 'spelllang' for the current window that supports
-		soundfolding.  'spell' must be set.  When no sound folding is
-		possible the {word} is returned unmodified.
-		This can be used for making spelling suggestions.  Note that
-		the method can be quite slow.
-
-							*spellbadword()*
-spellbadword([{sentence}])
-		Without argument: The result is the badly spelled word under
-		or after the cursor.  The cursor is moved to the start of the
-		bad word.  When no bad word is found in the cursor line the
-		result is an empty string and the cursor doesn't move.
-
-		With argument: The result is the first word in {sentence} that
-		is badly spelled.  If there are no spelling mistakes the
-		result is an empty string.
-
-		The return value is a list with two items:
-		- The badly spelled word or an empty string.
-		- The type of the spelling error:
-			"bad"		spelling mistake
-			"rare"		rare word
-			"local"		word only valid in another region
-			"caps"		word should start with Capital
-		Example: >
-			echo spellbadword("the quik brown fox")
-<			['quik', 'bad'] ~
-
-		The spelling information for the current window is used.  The
-		'spell' option must be set and the value of 'spelllang' is
-		used.
-
-							*spellsuggest()*
-spellsuggest({word} [, {max} [, {capital}]])
-		Return a |List| with spelling suggestions to replace {word}.
-		When {max} is given up to this number of suggestions are
-		returned.  Otherwise up to 25 suggestions are returned.
-
-		When the {capital} argument is given and it's non-zero only
-		suggestions with a leading capital will be given.  Use this
-		after a match with 'spellcapcheck'.
-
-		{word} can be a badly spelled word followed by other text.
-		This allows for joining two words that were split.  The
-		suggestions also include the following text, thus you can
-		replace a line.
-
-		{word} may also be a good word.  Similar words will then be
-		returned.  {word} itself is not included in the suggestions,
-		although it may appear capitalized.
-
-		The spelling information for the current window is used.  The
-		'spell' option must be set and the values of 'spelllang' and
-		'spellsuggest' are used.
-
-
-split({expr} [, {pattern} [, {keepempty}]])			*split()*
-		Make a |List| out of {expr}.  When {pattern} is omitted or
-		empty each white-separated sequence of characters becomes an
-		item.
-		Otherwise the string is split where {pattern} matches,
-		removing the matched characters.
-		When the first or last item is empty it is omitted, unless the
-		{keepempty} argument is given and it's non-zero.
-		Other empty items are kept when {pattern} matches at least one
-		character or when {keepempty} is non-zero.
-		Example: >
-			:let words = split(getline('.'), '\W\+')
-<		To split a string in individual characters: >
-			:for c in split(mystring, '\zs')
-<		If you want to keep the separator you can also use '\zs': >
-			:echo split('abc:def:ghi', ':\zs')
-<			['abc:', 'def:', 'ghi'] ~
-		Splitting a table where the first element can be empty: >
-			:let items = split(line, ':', 1)
-<		The opposite function is |join()|.
-
-
-sqrt({expr})						*sqrt()*
-		Return the non-negative square root of Float {expr} as a
-		|Float|.
-		{expr} must evaluate to a |Float| or a |Number|.  When {expr}
-		is negative the result is NaN (Not a Number).
-		Examples: >
-			:echo sqrt(100)
-<			10.0 >
-			:echo sqrt(-4.01)
-<			nan
-		"nan" may be different, it depends on system libraries.
-		{only available when compiled with the |+float| feature}
-		
-
-str2float( {expr})					*str2float()*
-		Convert String {expr} to a Float.  This mostly works the same
-		as when using a floating point number in an expression, see
-		|floating-point-format|.  But it's a bit more permissive.
-		E.g., "1e40" is accepted, while in an expression you need to
-		write "1.0e40".
-		Text after the number is silently ignored.
-		The decimal point is always '.', no matter what the locale is
-		set to.  A comma ends the number: "12,345.67" is converted to
-		12.0.  You can strip out thousands separators with
-		|substitute()|: >
-			let f = str2float(substitute(text, ',', '', 'g'))
-<		{only available when compiled with the |+float| feature}
-
-
-str2nr( {expr} [, {base}])				*str2nr()*
-		Convert string {expr} to a number.
-		{base} is the conversion base, it can be 8, 10 or 16.
-		When {base} is omitted base 10 is used.  This also means that
-		a leading zero doesn't cause octal conversion to be used, as
-		with the default String to Number conversion.
-		When {base} is 16 a leading "0x" or "0X" is ignored.  With a
-		different base the result will be zero.
-		Text after the number is silently ignored.
-
-
-strchars({expr})					*strchars()*
-		The result is a Number, which is the number of characters
-		String {expr} occupies.  Composing characters are counted
-		separately.
-		Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
-
-strdisplaywidth({expr}[, {col}])			*strdisplaywidth()*
-		The result is a Number, which is the number of display cells
-		String {expr} occupies on the screen.
-		When {col} is omitted zero is used.  Otherwise it is the
-		screen column where to start.  This matters for Tab
-		characters.
-		The option settings of the current window are used.  This
-		matters for anything that's displayed differently, such as
-		'tabstop' and 'display'.
-		When {expr} contains characters with East Asian Width Class
-		Ambiguous, this function's return value depends on 'ambiwidth'.
-		Also see |strlen()|, |strwidth()| and |strchars()|.
-
-strftime({format} [, {time}])				*strftime()*
-		The result is a String, which is a formatted date and time, as
-		specified by the {format} string.  The given {time} is used,
-		or the current time if no time is given.  The accepted
-		{format} depends on your system, thus this is not portable!
-		See the manual page of the C function strftime() for the
-		format.  The maximum length of the result is 80 characters.
-		See also |localtime()| and |getftime()|.
-		The language can be changed with the |:language| command.
-		Examples: >
-		  :echo strftime("%c")		   Sun Apr 27 11:49:23 1997
-		  :echo strftime("%Y %b %d %X")	   1997 Apr 27 11:53:25
-		  :echo strftime("%y%m%d %T")	   970427 11:53:55
-		  :echo strftime("%H:%M")	   11:55
-		  :echo strftime("%c", getftime("file.c"))
-						   Show mod time of file.c.
-<		Not available on all systems.  To check use: >
-			:if exists("*strftime")
-
-stridx({haystack}, {needle} [, {start}])		*stridx()*
-		The result is a Number, which gives the byte index in
-		{haystack} of the first occurrence of the String {needle}.
-		If {start} is specified, the search starts at index {start}.
-		This can be used to find a second match: >
-			:let comma1 = stridx(line, ",")
-			:let comma2 = stridx(line, ",", comma1 + 1)
-<		The search is done case-sensitive.
-		For pattern searches use |match()|.
-		-1 is returned if the {needle} does not occur in {haystack}.
-		See also |strridx()|.
-		Examples: >
-		  :echo stridx("An Example", "Example")	     3
-		  :echo stridx("Starting point", "Start")    0
-		  :echo stridx("Starting point", "start")   -1
-<						*strstr()* *strchr()*
-		stridx() works similar to the C function strstr().  When used
-		with a single character it works similar to strchr().
-
-							*string()*
-string({expr})	Return {expr} converted to a String.  If {expr} is a Number,
-		Float, String or a composition of them, then the result can be
-		parsed back with |eval()|.
-			{expr} type	result ~
-			String		'string'
-			Number		123
-			Float		123.123456 or 1.123456e8
-			Funcref		function('name')
-			List		[item, item]
-			Dictionary	{key: value, key: value}
-		Note that in String values the ' character is doubled.
-		Also see |strtrans()|.
-
-							*strlen()*
-strlen({expr})	The result is a Number, which is the length of the String
-		{expr} in bytes.
-		If you want to count the number of multi-byte characters (not
-		counting composing characters) use something like this: >
-
-			:let len = strlen(substitute(str, ".", "x", "g"))
-<
-		If the argument is a Number it is first converted to a String.
-		For other types an error is given.
-		Also see |len()|, |strchars()|, |strdisplaywidth()| and
-		|strwidth()|.
-
-strpart({src}, {start}[, {len}])			*strpart()*
-		The result is a String, which is part of {src}, starting from
-		byte {start}, with the byte length {len}.
-		When non-existing bytes are included, this doesn't result in
-		an error, the bytes are simply omitted.
-		If {len} is missing, the copy continues from {start} till the
-		end of the {src}. >
-			strpart("abcdefg", 3, 2)    == "de"
-			strpart("abcdefg", -2, 4)   == "ab"
-			strpart("abcdefg", 5, 4)    == "fg"
-			strpart("abcdefg", 3)	    == "defg"
-<		Note: To get the first character, {start} must be 0.  For
-		example, to get three bytes under and after the cursor: >
-			strpart(getline("."), col(".") - 1, 3)
-<
-strridx({haystack}, {needle} [, {start}])			*strridx()*
-		The result is a Number, which gives the byte index in
-		{haystack} of the last occurrence of the String {needle}.
-		When {start} is specified, matches beyond this index are
-		ignored.  This can be used to find a match before a previous
-		match: >
-			:let lastcomma = strridx(line, ",")
-			:let comma2 = strridx(line, ",", lastcomma - 1)
-<		The search is done case-sensitive.
-		For pattern searches use |match()|.
-		-1 is returned if the {needle} does not occur in {haystack}.
-		If the {needle} is empty the length of {haystack} is returned.
-		See also |stridx()|.  Examples: >
-		  :echo strridx("an angry armadillo", "an")	     3
-<							*strrchr()*
-		When used with a single character it works similar to the C
-		function strrchr().
-
-strtrans({expr})					*strtrans()*
-		The result is a String, which is {expr} with all unprintable
-		characters translated into printable characters |'isprint'|.
-		Like they are shown in a window.  Example: >
-			echo strtrans(@a)
-<		This displays a newline in register a as "^@" instead of
-		starting a new line.
-
-strwidth({expr})					*strwidth()*
-		The result is a Number, which is the number of display cells
-		String {expr} occupies.  A Tab character is counted as one
-		cell, alternatively use |strdisplaywidth()|.
-		When {expr} contains characters with East Asian Width Class
-		Ambiguous, this function's return value depends on 'ambiwidth'.
-		Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
-
-submatch({nr})						*submatch()*
-		Only for an expression in a |:substitute| command.  Returns
-		the {nr}'th submatch of the matched text.  When {nr} is 0
-		the whole matched text is returned.
-		Example: >
-			:s/\d\+/\=submatch(0) + 1/
-<		This finds the first number in the line and adds one to it.
-		A line break is included as a newline character.
-
-substitute({expr}, {pat}, {sub}, {flags})		*substitute()*
-		The result is a String, which is a copy of {expr}, in which
-		the first match of {pat} is replaced with {sub}.  This works
-		like the ":substitute" command (without any flags).  But the
-		matching with {pat} is always done like the 'magic' option is
-		set and 'cpoptions' is empty (to make scripts portable).
-		'ignorecase' is still relevant.  'smartcase' is not used.
-		See |string-match| for how {pat} is used.
-		And a "~" in {sub} is not replaced with the previous {sub}.
-		Note that some codes in {sub} have a special meaning
-		|sub-replace-special|.	For example, to replace something with
-		"\n" (two characters), use "\\\\n" or '\\n'.
-		When {pat} does not match in {expr}, {expr} is returned
-		unmodified.
-		When {flags} is "g", all matches of {pat} in {expr} are
-		replaced.  Otherwise {flags} should be "".
-		Example: >
-			:let &path = substitute(&path, ",\\=[^,]*$", "", "")
-<		This removes the last component of the 'path' option. >
-			:echo substitute("testing", ".*", "\\U\\0", "")
-<		results in "TESTING".
-
-synID({lnum}, {col}, {trans})				*synID()*
-		The result is a Number, which is the syntax ID at the position
-		{lnum} and {col} in the current window.
-		The syntax ID can be used with |synIDattr()| and
-		|synIDtrans()| to obtain syntax information about text.
-
-		{col} is 1 for the leftmost column, {lnum} is 1 for the first
-		line.  'synmaxcol' applies, in a longer line zero is returned.
-
-		When {trans} is non-zero, transparent items are reduced to the
-		item that they reveal.	This is useful when wanting to know
-		the effective color.  When {trans} is zero, the transparent
-		item is returned.  This is useful when wanting to know which
-		syntax item is effective (e.g. inside parens).
-		Warning: This function can be very slow.  Best speed is
-		obtained by going through the file in forward direction.
-
-		Example (echoes the name of the syntax item under the cursor): >
-			:echo synIDattr(synID(line("."), col("."), 1), "name")
-<
-
-synconcealed({lnum}, {col})				*synconcealed()*
-		The result is a List. The first item in the list is 0 if the
-		character at the position {lnum} and {col} is not part of a
-		concealable region, 1 if it is. The second item in the list is
-		a string. If the first item is 1, the second item contains the
-		text which will be displayed in place of the concealed text,
-		depending on the current setting of 'conceallevel'. The third
-		and final item in the list is a unique number representing the
-		specific syntax region matched. This allows detection of the
-		beginning of a new concealable region if there are two
-		consecutive regions with the same replacement character.
-		For an example use see $VIMRUNTIME/syntax/2html.vim .
-
-
-synIDattr({synID}, {what} [, {mode}])			*synIDattr()*
-		The result is a String, which is the {what} attribute of
-		syntax ID {synID}.  This can be used to obtain information
-		about a syntax item.
-		{mode} can be "gui", "cterm" or "term", to get the attributes
-		for that mode.	When {mode} is omitted, or an invalid value is
-		used, the attributes for the currently active highlighting are
-		used (GUI, cterm or term).
-		Use synIDtrans() to follow linked highlight groups.
-		{what}		result
-		"name"		the name of the syntax item
-		"fg"		foreground color (GUI: color name used to set
-				the color, cterm: color number as a string,
-				term: empty string)
-		"bg"		background color (as with "fg")
-		"font"		font name (only available in the GUI)
-				|highlight-font|
-		"sp"		special color (as with "fg") |highlight-guisp|
-		"fg#"		like "fg", but for the GUI and the GUI is
-				running the name in "#RRGGBB" form
-		"bg#"		like "fg#" for "bg"
-		"sp#"		like "fg#" for "sp"
-		"bold"		"1" if bold
-		"italic"	"1" if italic
-		"reverse"	"1" if reverse
-		"inverse"	"1" if inverse (= reverse)
-		"standout"	"1" if standout
-		"underline"	"1" if underlined
-		"undercurl"	"1" if undercurled
-
-		Example (echoes the color of the syntax item under the
-		cursor): >
-	:echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg")
-<
-synIDtrans({synID})					*synIDtrans()*
-		The result is a Number, which is the translated syntax ID of
-		{synID}.  This is the syntax group ID of what is being used to
-		highlight the character.  Highlight links given with
-		":highlight link" are followed.
-
-synstack({lnum}, {col})					*synstack()*
-		Return a |List|, which is the stack of syntax items at the
-		position {lnum} and {col} in the current window.  Each item in
-		the List is an ID like what |synID()| returns.
-		The first item in the List is the outer region, following are
-		items contained in that one.  The last one is what |synID()|
-		returns, unless not the whole item is highlighted or it is a
-		transparent item.
-		This function is useful for debugging a syntax file.
-		Example that shows the syntax stack under the cursor: >
-			for id in synstack(line("."), col("."))
-			   echo synIDattr(id, "name")
-			endfor
-<		When the position specified with {lnum} and {col} is invalid
-		nothing is returned.  The position just after the last
-		character in a line and the first column in an empty line are
-		valid positions.
-
-system({expr} [, {input}])				*system()* *E677*
-		Get the output of the shell command {expr}.
-		When {input} is given, this string is written to a file and
-		passed as stdin to the command.  The string is written as-is,
-		you need to take care of using the correct line separators
-		yourself.  Pipes are not used.
-		Note: Use |shellescape()| to escape special characters in a
-		command argument.  Newlines in {expr} may cause the command to
-		fail.  The characters in 'shellquote' and 'shellxquote' may
-		also cause trouble.
-		This is not to be used for interactive commands.
-
-		The result is a String.  Example: >
-		    :let files = system("ls " .  shellescape(expand('%:h')))
-
-<		To make the result more system-independent, the shell output
-		is filtered to replace  with  for Macintosh, and
-		 with  for DOS-like systems.
-		The command executed is constructed using several options:
-	'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote'
-		({tmp} is an automatically generated file name).
-		For Unix and OS/2 braces are put around {expr} to allow for
-		concatenated commands.
-
-		The command will be executed in "cooked" mode, so that a
-		CTRL-C will interrupt the command (on Unix at least).
-
-		The resulting error code can be found in |v:shell_error|.
-		This function will fail in |restricted-mode|.
-
-		Note that any wrong value in the options mentioned above may
-		make the function fail.  It has also been reported to fail
-		when using a security agent application.
-		Unlike ":!cmd" there is no automatic check for changed files.
-		Use |:checktime| to force a check.
-
-
-tabpagebuflist([{arg}])					*tabpagebuflist()*
-		The result is a |List|, where each item is the number of the
-		buffer associated with each window in the current tab page.
-		{arg} specifies the number of tab page to be used.  When
-		omitted the current tab page is used.
-		When {arg} is invalid the number zero is returned.
-		To get a list of all buffers in all tabs use this: >
-			tablist = []
-			for i in range(tabpagenr('$'))
-			   call extend(tablist, tabpagebuflist(i + 1))
-			endfor
-<		Note that a buffer may appear in more than one window.
-
-
-tabpagenr([{arg}])					*tabpagenr()*
-		The result is a Number, which is the number of the current
-		tab page.  The first tab page has number 1.
-		When the optional argument is "$", the number of the last tab
-		page is returned (the tab page count).
-		The number can be used with the |:tab| command.
-
-
-tabpagewinnr({tabarg}, [{arg}])				*tabpagewinnr()*
-		Like |winnr()| but for tab page {tabarg}.
-		{tabarg} specifies the number of tab page to be used.
-		{arg} is used like with |winnr()|:
-		- When omitted the current window number is returned.  This is
-		  the window which will be used when going to this tab page.
-		- When "$" the number of windows is returned.
-		- When "#" the previous window nr is returned.
-		Useful examples: >
-		    tabpagewinnr(1)	    " current window of tab page 1
-		    tabpagewinnr(4, '$')    " number of windows in tab page 4
-<		When {tabarg} is invalid zero is returned.
-
-							*tagfiles()*
-tagfiles()	Returns a |List| with the file names used to search for tags
-		for the current buffer.  This is the 'tags' option expanded.
-
-
-taglist({expr})							*taglist()*
-		Returns a list of tags matching the regular expression {expr}.
-		Each list item is a dictionary with at least the following
-		entries:
-			name		Name of the tag.
-			filename	Name of the file where the tag is
-					defined.  It is either relative to the
-					current directory or a full path.
-			cmd		Ex command used to locate the tag in
-					the file.
-			kind		Type of the tag.  The value for this
-					entry depends on the language specific
-					kind values.  Only available when
-					using a tags file generated by
-					Exuberant ctags or hdrtag.
-			static		A file specific tag.  Refer to
-					|static-tag| for more information.
-		More entries may be present, depending on the content of the
-		tags file: access, implementation, inherits and signature.
-		Refer to the ctags documentation for information about these
-		fields.  For C code the fields "struct", "class" and "enum"
-		may appear, they give the name of the entity the tag is
-		contained in.
-
-		The ex-command 'cmd' can be either an ex search pattern, a
-		line number or a line number followed by a byte number.
-
-		If there are no matching tags, then an empty list is returned.
-
-		To get an exact tag match, the anchors '^' and '$' should be
-		used in {expr}.  Refer to |tag-regexp| for more information
-		about the tag search regular expression pattern.
-
-		Refer to |'tags'| for information about how the tags file is
-		located by Vim. Refer to |tags-file-format| for the format of
-		the tags file generated by the different ctags tools.
-
-tempname()					*tempname()* *temp-file-name*
-		The result is a String, which is the name of a file that
-		doesn't exist.	It can be used for a temporary file.  The name
-		is different for at least 26 consecutive calls.  Example: >
-			:let tmpfile = tempname()
-			:exe "redir > " . tmpfile
-<		For Unix, the file will be in a private directory |tempfile|.
-		For MS-Windows forward slashes are used when the 'shellslash'
-		option is set or when 'shellcmdflag' starts with '-'.
-
-
-tan({expr})						*tan()*
-		Return the tangent of {expr}, measured in radians, as a |Float|
-		in the range [-inf, inf].
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo tan(10)
-<			0.648361 >
-			:echo tan(-4.01)
-<			-1.181502
-		{only available when compiled with the |+float| feature}
-
-
-tanh({expr})						*tanh()*
-		Return the hyperbolic tangent of {expr} as a |Float| in the
-		range [-1, 1].
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			:echo tanh(0.5)
-<			0.462117 >
-			:echo tanh(-1)
-<			-0.761594
-		{only available when compiled with the |+float| feature}
-
-
-tolower({expr})						*tolower()*
-		The result is a copy of the String given, with all uppercase
-		characters turned into lowercase (just like applying |gu| to
-		the string).
-
-toupper({expr})						*toupper()*
-		The result is a copy of the String given, with all lowercase
-		characters turned into uppercase (just like applying |gU| to
-		the string).
-
-tr({src}, {fromstr}, {tostr})				*tr()*
-		The result is a copy of the {src} string with all characters
-		which appear in {fromstr} replaced by the character in that
-		position in the {tostr} string.  Thus the first character in
-		{fromstr} is translated into the first character in {tostr}
-		and so on.  Exactly like the unix "tr" command.
-		This code also deals with multibyte characters properly.
-
-		Examples: >
-			echo tr("hello there", "ht", "HT")
-<		returns "Hello THere" >
-			echo tr("", "<>", "{}")
-<		returns "{blob}"
-
-trunc({expr})							*trunc()*
-		Return the largest integral value with magnitude less than or
-		equal to {expr} as a |Float| (truncate towards zero).
-		{expr} must evaluate to a |Float| or a |Number|.
-		Examples: >
-			echo trunc(1.456)
-<			1.0  >
-			echo trunc(-5.456)
-<			-5.0  >
-			echo trunc(4.0)
-<			4.0
-		{only available when compiled with the |+float| feature}
-		
-							*type()*
-type({expr})	The result is a Number, depending on the type of {expr}:
-			Number:	    0
-			String:	    1
-			Funcref:    2
-			List:	    3
-			Dictionary: 4
-			Float:	    5
-		To avoid the magic numbers it should be used this way: >
-			:if type(myvar) == type(0)
-			:if type(myvar) == type("")
-			:if type(myvar) == type(function("tr"))
-			:if type(myvar) == type([])
-			:if type(myvar) == type({})
-			:if type(myvar) == type(0.0)
-
-undofile({name})					*undofile()*
-		Return the name of the undo file that would be used for a file
-		with name {name} when writing.  This uses the 'undodir'
-		option, finding directories that exist.  It does not check if
-		the undo file exists.
-		{name} is always expanded to the full path, since that is what
-		is used internally.
-		Useful in combination with |:wundo| and |:rundo|.
-		When compiled without the +persistent_undo option this always
-		returns an empty string.
-
-undotree()						*undotree()*
-		Return the current state of the undo tree in a dictionary with
-		the following items:
-		  "seq_last"	The highest undo sequence number used.
-		  "seq_cur"	The sequence number of the current position in
-				the undo tree.  This differs from "seq_last"
-				when some changes were undone.
-		  "time_cur"	Time last used for |:earlier| and related
-				commands.  Use |strftime()| to convert to
-				something readable.
-		  "save_last"	Number of the last file write.  Zero when no
-				write yet.
-		  "save_cur"	Number of the current position in the undo
-				tree.  
-		  "synced"	Non-zero when the last undo block was synced.
-				This happens when waiting from input from the
-				user.  See |undo-blocks|.
-		  "entries"	A list of dictionaries with information about
-				undo blocks.
-
-		The first item in the "entries" list is the oldest undo item.
-		Each List item is a Dictionary with these items:
-		  "seq"		Undo sequence number.  Same as what appears in
-				|:undolist|.
-		  "time"	Timestamp when the change happened.  Use
-				|strftime()| to convert to something readable.
-		  "newhead"	Only appears in the item that is the last one
-				that was added.  This marks the last change
-				and where further changes will be added.
-		  "curhead"	Only appears in the item that is the last one
-				that was undone.  This marks the current
-				position in the undo tree, the block that will
-				be used by a redo command.  When nothing was
-				undone after the last change this item will
-				not appear anywhere.
-		  "save"	Only appears on the last block before a file
-				write.  The number is the write count.  The
-				first write has number 1, the last one the
-				"save_last" mentioned above.
-		  "alt"		Alternate entry.  This is again a List of undo
-				blocks.  Each item may again have an "alt"
-				item.
-
-values({dict})						*values()*
-		Return a |List| with all the values of {dict}.	The |List| is
-		in arbitrary order.
-
-
-virtcol({expr})						*virtcol()*
-		The result is a Number, which is the screen column of the file
-		position given with {expr}.  That is, the last screen position
-		occupied by the character at that position, when the screen
-		would be of unlimited width.  When there is a  at the
-		position, the returned Number will be the column at the end of
-		the .  For example, for a  in column 1, with 'ts'
-		set to 8, it returns 8.
-		For the byte position use |col()|.
-		For the use of {expr} see |col()|.
-		When 'virtualedit' is used {expr} can be [lnum, col, off], where
-		"off" is the offset in screen columns from the start of the
-		character.  E.g., a position within a  or after the last
-		character.
-		When Virtual editing is active in the current mode, a position
-		beyond the end of the line can be returned. |'virtualedit'|
-		The accepted positions are:
-		    .	    the cursor position
-		    $	    the end of the cursor line (the result is the
-			    number of displayed characters in the cursor line
-			    plus one)
-		    'x	    position of mark x (if the mark is not set, 0 is
-			    returned)
-		Note that only marks in the current file can be used.
-		Examples: >
-  virtcol(".")	   with text "foo^Lbar", with cursor on the "^L", returns 5
-  virtcol("$")	   with text "foo^Lbar", returns 9
-  virtcol("'t")    with text "	  there", with 't at 'h', returns 6
-<		The first column is 1.	0 is returned for an error.
-		A more advanced example that echoes the maximum length of
-		all lines: >
-		    echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
-
-
-visualmode([expr])						*visualmode()*
-		The result is a String, which describes the last Visual mode
-		used in the current buffer.  Initially it returns an empty
-		string, but once Visual mode has been used, it returns "v",
-		"V", or "" (a single CTRL-V character) for
-		character-wise, line-wise, or block-wise Visual mode
-		respectively.
-		Example: >
-			:exe "normal " . visualmode()
-<		This enters the same Visual mode as before.  It is also useful
-		in scripts if you wish to act differently depending on the
-		Visual mode that was used.
-		If Visual mode is active, use |mode()| to get the Visual mode
-		(e.g., in a |:vmap|).
-							*non-zero-arg*
-		If [expr] is supplied and it evaluates to a non-zero Number or
-		a non-empty String, then the Visual mode will be cleared and
-		the old value is returned.  Note that " " and "0" are also
-		non-empty strings, thus cause the mode to be cleared.  A List,
-		Dictionary or Float is not a Number or String, thus does not
-		cause the mode to be cleared.
-
-							*winbufnr()*
-winbufnr({nr})	The result is a Number, which is the number of the buffer
-		associated with window {nr}.  When {nr} is zero, the number of
-		the buffer in the current window is returned.  When window
-		{nr} doesn't exist, -1 is returned.
-		Example: >
-  :echo "The file in the current window is " . bufname(winbufnr(0))
-<
-							*wincol()*
-wincol()	The result is a Number, which is the virtual column of the
-		cursor in the window.  This is counting screen cells from the
-		left side of the window.  The leftmost column is one.
-
-winheight({nr})						*winheight()*
-		The result is a Number, which is the height of window {nr}.
-		When {nr} is zero, the height of the current window is
-		returned.  When window {nr} doesn't exist, -1 is returned.
-		An existing window always has a height of zero or more.
-		Examples: >
-  :echo "The current window has " . winheight(0) . " lines."
-<
-							*winline()*
-winline()	The result is a Number, which is the screen line of the cursor
-		in the window.	This is counting screen lines from the top of
-		the window.  The first line is one.
-		If the cursor was moved the view on the file will be updated
-		first, this may cause a scroll.
-
-							*winnr()*
-winnr([{arg}])	The result is a Number, which is the number of the current
-		window.  The top window has number 1.
-		When the optional argument is "$", the number of the
-		last window is returned (the window count).
-		When the optional argument is "#", the number of the last
-		accessed window is returned (where |CTRL-W_p| goes to).
-		If there is no previous window or it is in another tab page 0
-		is returned.
-		The number can be used with |CTRL-W_w| and ":wincmd w"
-		|:wincmd|.
-		Also see |tabpagewinnr()|.
-
-							*winrestcmd()*
-winrestcmd()	Returns a sequence of |:resize| commands that should restore
-		the current window sizes.  Only works properly when no windows
-		are opened or closed and the current window and tab page is
-		unchanged.
-		Example: >
-			:let cmd = winrestcmd()
-			:call MessWithWindowSizes()
-			:exe cmd
-<
-							*winrestview()*
-winrestview({dict})
-		Uses the |Dictionary| returned by |winsaveview()| to restore
-		the view of the current window.
-		If you have changed the values the result is unpredictable.
-		If the window size changed the result won't be the same.
-
-							*winsaveview()*
-winsaveview()	Returns a |Dictionary| that contains information to restore
-		the view of the current window.  Use |winrestview()| to
-		restore the view.
-		This is useful if you have a mapping that jumps around in the
-		buffer and you want to go back to the original view.
-		This does not save fold information.  Use the 'foldenable'
-		option to temporarily switch off folding, so that folds are
-		not opened when moving around.
-		The return value includes:
-			lnum		cursor line number
-			col		cursor column
-			coladd		cursor column offset for 'virtualedit'
-			curswant	column for vertical movement
-			topline		first line in the window
-			topfill		filler lines, only in diff mode
-			leftcol		first column displayed
-			skipcol		columns skipped
-		Note that no option values are saved.
-
-
-winwidth({nr})						*winwidth()*
-		The result is a Number, which is the width of window {nr}.
-		When {nr} is zero, the width of the current window is
-		returned.  When window {nr} doesn't exist, -1 is returned.
-		An existing window always has a width of zero or more.
-		Examples: >
-  :echo "The current window has " . winwidth(0) . " columns."
-  :if winwidth(0) <= 50
-  :  exe "normal 50\|"
-  :endif
-<
-							*writefile()*
-writefile({list}, {fname} [, {binary}])
-		Write |List| {list} to file {fname}.  Each list item is
-		separated with a NL.  Each list item must be a String or
-		Number.
-		When {binary} is equal to "b" binary mode is used: There will
-		not be a NL after the last list item.  An empty item at the
-		end does cause the last line in the file to end in a NL.
-		All NL characters are replaced with a NUL character.
-		Inserting CR characters needs to be done before passing {list}
-		to writefile().
-		An existing file is overwritten, if possible.
-		When the write fails -1 is returned, otherwise 0.  There is an
-		error message if the file can't be created or when writing
-		fails.
-		Also see |readfile()|.
-		To copy a file byte for byte: >
-			:let fl = readfile("foo", "b")
-			:call writefile(fl, "foocopy", "b")
-<
-
-							*feature-list*
-There are three types of features:
-1.  Features that are only supported when they have been enabled when Vim
-    was compiled |+feature-list|.  Example: >
-	:if has("cindent")
-2.  Features that are only supported when certain conditions have been met.
-    Example: >
-	:if has("gui_running")
-<							*has-patch*
-3.  Included patches.  First check |v:version| for the version of Vim.
-    Then the "patch123" feature means that patch 123 has been included for
-    this version.  Example (checking version 6.2.148 or later): >
-	:if v:version > 602 || v:version == 602 && has("patch148")
-<   Note that it's possible for patch 147 to be omitted even though 148 is
-    included.
-
-all_builtin_terms	Compiled with all builtin terminals enabled.
-amiga			Amiga version of Vim.
-arabic			Compiled with Arabic support |Arabic|.
-arp			Compiled with ARP support (Amiga).
-autocmd			Compiled with autocommand support. |autocommand|
-balloon_eval		Compiled with |balloon-eval| support.
-balloon_multiline	GUI supports multiline balloons.
-beos			BeOS version of Vim.
-browse			Compiled with |:browse| support, and browse() will
-			work.
-builtin_terms		Compiled with some builtin terminals.
-byte_offset		Compiled with support for 'o' in 'statusline'
-cindent			Compiled with 'cindent' support.
-clientserver		Compiled with remote invocation support |clientserver|.
-clipboard		Compiled with 'clipboard' support.
-cmdline_compl		Compiled with |cmdline-completion| support.
-cmdline_hist		Compiled with |cmdline-history| support.
-cmdline_info		Compiled with 'showcmd' and 'ruler' support.
-comments		Compiled with |'comments'| support.
-cryptv			Compiled with encryption support |encryption|.
-cscope			Compiled with |cscope| support.
-compatible		Compiled to be very Vi compatible.
-debug			Compiled with "DEBUG" defined.
-dialog_con		Compiled with console dialog support.
-dialog_gui		Compiled with GUI dialog support.
-diff			Compiled with |vimdiff| and 'diff' support.
-digraphs		Compiled with support for digraphs.
-dnd			Compiled with support for the "~ register |quote_~|.
-dos32			32 bits DOS (DJGPP) version of Vim.
-dos16			16 bits DOS version of Vim.
-ebcdic			Compiled on a machine with ebcdic character set.
-emacs_tags		Compiled with support for Emacs tags.
-eval			Compiled with expression evaluation support.  Always
-			true, of course!
-ex_extra		Compiled with extra Ex commands |+ex_extra|.
-extra_search		Compiled with support for |'incsearch'| and
-			|'hlsearch'|
-farsi			Compiled with Farsi support |farsi|.
-file_in_path		Compiled with support for |gf| and ||
-filterpipe		When 'shelltemp' is off pipes are used for shell
-			read/write/filter commands
-find_in_path		Compiled with support for include file searches
-			|+find_in_path|.
-float			Compiled with support for |Float|.
-fname_case		Case in file names matters (for Amiga, MS-DOS, and
-			Windows this is not present).
-folding			Compiled with |folding| support.
-footer			Compiled with GUI footer support. |gui-footer|
-fork			Compiled to use fork()/exec() instead of system().
-gettext			Compiled with message translation |multi-lang|
-gui			Compiled with GUI enabled.
-gui_athena		Compiled with Athena GUI.
-gui_gtk			Compiled with GTK+ GUI (any version).
-gui_gtk2		Compiled with GTK+ 2 GUI (gui_gtk is also defined).
-gui_gnome		Compiled with Gnome support (gui_gtk is also defined).
-gui_mac			Compiled with Macintosh GUI.
-gui_motif		Compiled with Motif GUI.
-gui_photon		Compiled with Photon GUI.
-gui_win32		Compiled with MS Windows Win32 GUI.
-gui_win32s		idem, and Win32s system being used (Windows 3.1)
-gui_running		Vim is running in the GUI, or it will start soon.
-hangul_input		Compiled with Hangul input support. |hangul|
-iconv			Can use iconv() for conversion.
-insert_expand		Compiled with support for CTRL-X expansion commands in
-			Insert mode.
-jumplist		Compiled with |jumplist| support.
-keymap			Compiled with 'keymap' support.
-langmap			Compiled with 'langmap' support.
-libcall			Compiled with |libcall()| support.
-linebreak		Compiled with 'linebreak', 'breakat' and 'showbreak'
-			support.
-lispindent		Compiled with support for lisp indenting.
-listcmds		Compiled with commands for the buffer list |:files|
-			and the argument list |arglist|.
-localmap		Compiled with local mappings and abbr. |:map-local|
-lua			Compiled with Lua interface |Lua|.
-mac			Macintosh version of Vim.
-macunix			Macintosh version of Vim, using Unix files (OS-X).
-menu			Compiled with support for |:menu|.
-mksession		Compiled with support for |:mksession|.
-modify_fname		Compiled with file name modifiers. |filename-modifiers|
-mouse			Compiled with support mouse.
-mouseshape		Compiled with support for 'mouseshape'.
-mouse_dec		Compiled with support for Dec terminal mouse.
-mouse_gpm		Compiled with support for gpm (Linux console mouse)
-mouse_netterm		Compiled with support for netterm mouse.
-mouse_pterm		Compiled with support for qnx pterm mouse.
-mouse_sysmouse		Compiled with support for sysmouse (*BSD console mouse)
-mouse_xterm		Compiled with support for xterm mouse.
-multi_byte		Compiled with support for 'encoding'
-multi_byte_encoding	'encoding' is set to a multi-byte encoding.
-multi_byte_ime		Compiled with support for IME input method.
-multi_lang		Compiled with support for multiple languages.
-mzscheme		Compiled with MzScheme interface |mzscheme|.
-netbeans_intg		Compiled with support for |netbeans|.
-netbeans_enabled	Compiled with support for |netbeans| and connected.
-ole			Compiled with OLE automation support for Win32.
-os2			OS/2 version of Vim.
-osfiletype		Compiled with support for osfiletypes |+osfiletype|
-path_extra		Compiled with up/downwards search in 'path' and 'tags'
-perl			Compiled with Perl interface.
-persistent_undo		Compiled with support for persistent undo history.
-postscript		Compiled with PostScript file printing.
-printer			Compiled with |:hardcopy| support.
-profile			Compiled with |:profile| support.
-python			Compiled with Python interface.
-qnx			QNX version of Vim.
-quickfix		Compiled with |quickfix| support.
-reltime			Compiled with |reltime()| support.
-rightleft		Compiled with 'rightleft' support.
-ruby			Compiled with Ruby interface |ruby|.
-scrollbind		Compiled with 'scrollbind' support.
-showcmd			Compiled with 'showcmd' support.
-signs			Compiled with |:sign| support.
-smartindent		Compiled with 'smartindent' support.
-sniff			Compiled with SNiFF interface support.
-startuptime		Compiled with |--startuptime| support.
-statusline		Compiled with support for 'statusline', 'rulerformat'
-			and special formats of 'titlestring' and 'iconstring'.
-sun_workshop		Compiled with support for Sun |workshop|.
-spell			Compiled with spell checking support |spell|.
-syntax			Compiled with syntax highlighting support |syntax|.
-syntax_items		There are active syntax highlighting items for the
-			current buffer.
-system			Compiled to use system() instead of fork()/exec().
-tag_binary		Compiled with binary searching in tags files
-			|tag-binary-search|.
-tag_old_static		Compiled with support for old static tags
-			|tag-old-static|.
-tag_any_white		Compiled with support for any white characters in tags
-			files |tag-any-white|.
-tcl			Compiled with Tcl interface.
-terminfo		Compiled with terminfo instead of termcap.
-termresponse		Compiled with support for |t_RV| and |v:termresponse|.
-textobjects		Compiled with support for |text-objects|.
-tgetent			Compiled with tgetent support, able to use a termcap
-			or terminfo file.
-title			Compiled with window title support |'title'|.
-toolbar			Compiled with support for |gui-toolbar|.
-unix			Unix version of Vim.
-user_commands		User-defined commands.
-viminfo			Compiled with viminfo support.
-vim_starting		True while initial source'ing takes place.
-vertsplit		Compiled with vertically split windows |:vsplit|.
-virtualedit		Compiled with 'virtualedit' option.
-visual			Compiled with Visual mode.
-visualextra		Compiled with extra Visual mode commands.
-			|blockwise-operators|.
-vms			VMS version of Vim.
-vreplace		Compiled with |gR| and |gr| commands.
-wildignore		Compiled with 'wildignore' option.
-wildmenu		Compiled with 'wildmenu' option.
-windows			Compiled with support for more than one window.
-winaltkeys		Compiled with 'winaltkeys' option.
-win16			Win16 version of Vim (MS-Windows 3.1).
-win32			Win32 version of Vim (MS-Windows 95/98/ME/NT/2000/XP).
-win64			Win64 version of Vim (MS-Windows 64 bit).
-win32unix		Win32 version of Vim, using Unix files (Cygwin)
-win95			Win32 version for MS-Windows 95/98/ME.
-writebackup		Compiled with 'writebackup' default on.
-xfontset		Compiled with X fontset support |xfontset|.
-xim			Compiled with X input method support |xim|.
-xsmp			Compiled with X session management support.
-xsmp_interact		Compiled with interactive X session management support.
-xterm_clipboard		Compiled with support for xterm clipboard.
-xterm_save		Compiled with support for saving and restoring the
-			xterm screen.
-x11			Compiled with X11 support.
-
-							*string-match*
-Matching a pattern in a String
-
-A regexp pattern as explained at |pattern| is normally used to find a match in
-the buffer lines.  When a pattern is used to find a match in a String, almost
-everything works in the same way.  The difference is that a String is handled
-like it is one line.  When it contains a "\n" character, this is not seen as a
-line break for the pattern.  It can be matched with a "\n" in the pattern, or
-with ".".  Example: >
-	:let a = "aaaa\nxxxx"
-	:echo matchstr(a, "..\n..")
-	aa
-	xx
-	:echo matchstr(a, "a.x")
-	a
-	x
-
-Don't forget that "^" will only match at the first character of the String and
-"$" at the last character of the string.  They don't match after or before a
-"\n".
-
-==============================================================================
-5. Defining functions					*user-functions*
-
-New functions can be defined.  These can be called just like builtin
-functions.  The function executes a sequence of Ex commands.  Normal mode
-commands can be executed with the |:normal| command.
-
-The function name must start with an uppercase letter, to avoid confusion with
-builtin functions.  To prevent from using the same name in different scripts
-avoid obvious, short names.  A good habit is to start the function name with
-the name of the script, e.g., "HTMLcolor()".
-
-It's also possible to use curly braces, see |curly-braces-names|.  And the
-|autoload| facility is useful to define a function only when it's called.
-
-							*local-function*
-A function local to a script must start with "s:".  A local script function
-can only be called from within the script and from functions, user commands
-and autocommands defined in the script.  It is also possible to call the
-function from a mapping defined in the script, but then || must be used
-instead of "s:" when the mapping is expanded outside of the script.
-
-					*:fu* *:function* *E128* *E129* *E123*
-:fu[nction]		List all functions and their arguments.
-
-:fu[nction] {name}	List function {name}.
-			{name} can also be a |Dictionary| entry that is a
-			|Funcref|: >
-				:function dict.init
-
-:fu[nction] /{pattern}	List functions with a name matching {pattern}.
-			Example that lists all functions ending with "File": >
-				:function /File$
-<
-							*:function-verbose*
-When 'verbose' is non-zero, listing a function will also display where it was
-last defined. Example: >
-
-    :verbose function SetFileTypeSH
-	function SetFileTypeSH(name)
-	    Last set from /usr/share/vim/vim-7.0/filetype.vim
-<
-See |:verbose-cmd| for more information.
-
-							*E124* *E125*
-:fu[nction][!] {name}([arguments]) [range] [abort] [dict]
-			Define a new function by the name {name}.  The name
-			must be made of alphanumeric characters and '_', and
-			must start with a capital or "s:" (see above).
-
-			{name} can also be a |Dictionary| entry that is a
-			|Funcref|: >
-				:function dict.init(arg)
-<			"dict" must be an existing dictionary.	The entry
-			"init" is added if it didn't exist yet.  Otherwise [!]
-			is required to overwrite an existing function.	The
-			result is a |Funcref| to a numbered function.  The
-			function can only be used with a |Funcref| and will be
-			deleted if there are no more references to it.
-								*E127* *E122*
-			When a function by this name already exists and [!] is
-			not used an error message is given.  When [!] is used,
-			an existing function is silently replaced.  Unless it
-			is currently being executed, that is an error.
-
-			For the {arguments} see |function-argument|.
-
-						*a:firstline* *a:lastline*
-			When the [range] argument is added, the function is
-			expected to take care of a range itself.  The range is
-			passed as "a:firstline" and "a:lastline".  If [range]
-			is excluded, ":{range}call" will call the function for
-			each line in the range, with the cursor on the start
-			of each line.  See |function-range-example|.
-
-			When the [abort] argument is added, the function will
-			abort as soon as an error is detected.
-
-			When the [dict] argument is added, the function must
-			be invoked through an entry in a |Dictionary|.	The
-			local variable "self" will then be set to the
-			dictionary.  See |Dictionary-function|.
-
-						*function-search-undo*
-			The last used search pattern and the redo command "."
-			will not be changed by the function.  This also
-			implies that the effect of |:nohlsearch| is undone
-			when the function returns.
-
-					*:endf* *:endfunction* *E126* *E193*
-:endf[unction]		The end of a function definition.  Must be on a line
-			by its own, without other commands.
-
-					*:delf* *:delfunction* *E130* *E131*
-:delf[unction] {name}	Delete function {name}.
-			{name} can also be a |Dictionary| entry that is a
-			|Funcref|: >
-				:delfunc dict.init
-<			This will remove the "init" entry from "dict".	The
-			function is deleted if there are no more references to
-			it.
-							*:retu* *:return* *E133*
-:retu[rn] [expr]	Return from a function.  When "[expr]" is given, it is
-			evaluated and returned as the result of the function.
-			If "[expr]" is not given, the number 0 is returned.
-			When a function ends without an explicit ":return",
-			the number 0 is returned.
-			Note that there is no check for unreachable lines,
-			thus there is no warning if commands follow ":return".
-
-			If the ":return" is used after a |:try| but before the
-			matching |:finally| (if present), the commands
-			following the ":finally" up to the matching |:endtry|
-			are executed first.  This process applies to all
-			nested ":try"s inside the function.  The function
-			returns at the outermost ":endtry".
-
-						*function-argument* *a:var*
-An argument can be defined by giving its name.	In the function this can then
-be used as "a:name" ("a:" for argument).
-					*a:0* *a:1* *a:000* *E740* *...*
-Up to 20 arguments can be given, separated by commas.  After the named
-arguments an argument "..." can be specified, which means that more arguments
-may optionally be following.  In the function the extra arguments can be used
-as "a:1", "a:2", etc.  "a:0" is set to the number of extra arguments (which
-can be 0).  "a:000" is set to a |List| that contains these arguments.  Note
-that "a:1" is the same as "a:000[0]".
-								*E742*
-The a: scope and the variables in it cannot be changed, they are fixed.
-However, if a |List| or |Dictionary| is used, you can change their contents.
-Thus you can pass a |List| to a function and have the function add an item to
-it.  If you want to make sure the function cannot change a |List| or
-|Dictionary| use |:lockvar|.
-
-When not using "...", the number of arguments in a function call must be equal
-to the number of named arguments.  When using "...", the number of arguments
-may be larger.
-
-It is also possible to define a function without any arguments.  You must
-still supply the () then.  The body of the function follows in the next lines,
-until the matching |:endfunction|.  It is allowed to define another function
-inside a function body.
-
-							*local-variables*
-Inside a function variables can be used.  These are local variables, which
-will disappear when the function returns.  Global variables need to be
-accessed with "g:".
-
-Example: >
-  :function Table(title, ...)
-  :  echohl Title
-  :  echo a:title
-  :  echohl None
-  :  echo a:0 . " items:"
-  :  for s in a:000
-  :    echon ' ' . s
-  :  endfor
-  :endfunction
-
-This function can then be called with: >
-  call Table("Table", "line1", "line2")
-  call Table("Empty Table")
-
-To return more than one value, return a |List|: >
-  :function Compute(n1, n2)
-  :  if a:n2 == 0
-  :    return ["fail", 0]
-  :  endif
-  :  return ["ok", a:n1 / a:n2]
-  :endfunction
-
-This function can then be called with: >
-  :let [success, div] = Compute(102, 6)
-  :if success == "ok"
-  :  echo div
-  :endif
-<
-						*:cal* *:call* *E107* *E117*
-:[range]cal[l] {name}([arguments])
-		Call a function.  The name of the function and its arguments
-		are as specified with |:function|.  Up to 20 arguments can be
-		used.  The returned value is discarded.
-		Without a range and for functions that accept a range, the
-		function is called once.  When a range is given the cursor is
-		positioned at the start of the first line before executing the
-		function.
-		When a range is given and the function doesn't handle it
-		itself, the function is executed for each line in the range,
-		with the cursor in the first column of that line.  The cursor
-		is left at the last line (possibly moved by the last function
-		call).	The arguments are re-evaluated for each line.  Thus
-		this works:
-						*function-range-example*  >
-	:function Mynumber(arg)
-	:  echo line(".") . " " . a:arg
-	:endfunction
-	:1,5call Mynumber(getline("."))
-<
-		The "a:firstline" and "a:lastline" are defined anyway, they
-		can be used to do something different at the start or end of
-		the range.
-
-		Example of a function that handles the range itself: >
-
-	:function Cont() range
-	:  execute (a:firstline + 1) . "," . a:lastline . 's/^/\t\\ '
-	:endfunction
-	:4,8call Cont()
-<
-		This function inserts the continuation character "\" in front
-		of all the lines in the range, except the first one.
-
-		When the function returns a composite value it can be further
-		dereferenced, but the range will not be used then.  Example: >
-	:4,8call GetDict().method()
-<		Here GetDict() gets the range but method() does not.
-
-								*E132*
-The recursiveness of user functions is restricted with the |'maxfuncdepth'|
-option.
-
-
-AUTOMATICALLY LOADING FUNCTIONS ~
-							*autoload-functions*
-When using many or large functions, it's possible to automatically define them
-only when they are used.  There are two methods: with an autocommand and with
-the "autoload" directory in 'runtimepath'.
-
-
-Using an autocommand ~
-
-This is introduced in the user manual, section |41.14|.
-
-The autocommand is useful if you have a plugin that is a long Vim script file.
-You can define the autocommand and quickly quit the script with |:finish|.
-That makes Vim startup faster.	The autocommand should then load the same file
-again, setting a variable to skip the |:finish| command.
-
-Use the FuncUndefined autocommand event with a pattern that matches the
-function(s) to be defined.  Example: >
-
-	:au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim
-
-The file "~/vim/bufnetfuncs.vim" should then define functions that start with
-"BufNet".  Also see |FuncUndefined|.
-
-
-Using an autoload script ~
-							*autoload* *E746*
-This is introduced in the user manual, section |41.15|.
-
-Using a script in the "autoload" directory is simpler, but requires using
-exactly the right file name.  A function that can be autoloaded has a name
-like this: >
-
-	:call filename#funcname()
-
-When such a function is called, and it is not defined yet, Vim will search the
-"autoload" directories in 'runtimepath' for a script file called
-"filename.vim".  For example "~/.vim/autoload/filename.vim".  That file should
-then define the function like this: >
-
-	function filename#funcname()
-	   echo "Done!"
-	endfunction
-
-The file name and the name used before the # in the function must match
-exactly, and the defined function must have the name exactly as it will be
-called.
-
-It is possible to use subdirectories.  Every # in the function name works like
-a path separator.  Thus when calling a function: >
-
-	:call foo#bar#func()
-
-Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'.
-
-This also works when reading a variable that has not been set yet: >
-
-	:let l = foo#bar#lvar
-
-However, when the autoload script was already loaded it won't be loaded again
-for an unknown variable.
-
-When assigning a value to such a variable nothing special happens.  This can
-be used to pass settings to the autoload script before it's loaded: >
-
-	:let foo#bar#toggle = 1
-	:call foo#bar#func()
-
-Note that when you make a mistake and call a function that is supposed to be
-defined in an autoload script, but the script doesn't actually define the
-function, the script will be sourced every time you try to call the function.
-And you will get an error message every time.
-
-Also note that if you have two script files, and one calls a function in the
-other and vice versa, before the used function is defined, it won't work.
-Avoid using the autoload functionality at the toplevel.
-
-Hint: If you distribute a bunch of scripts you can pack them together with the
-|vimball| utility.  Also read the user manual |distribute-script|.
-
-==============================================================================
-6. Curly braces names					*curly-braces-names*
-
-Wherever you can use a variable, you can use a "curly braces name" variable.
-This is a regular variable name with one or more expressions wrapped in braces
-{} like this: >
-	my_{adjective}_variable
-
-When Vim encounters this, it evaluates the expression inside the braces, puts
-that in place of the expression, and re-interprets the whole as a variable
-name.  So in the above example, if the variable "adjective" was set to
-"noisy", then the reference would be to "my_noisy_variable", whereas if
-"adjective" was set to "quiet", then it would be to "my_quiet_variable".
-
-One application for this is to create a set of variables governed by an option
-value.	For example, the statement >
-	echo my_{&background}_message
-
-would output the contents of "my_dark_message" or "my_light_message" depending
-on the current value of 'background'.
-
-You can use multiple brace pairs: >
-	echo my_{adverb}_{adjective}_message
-..or even nest them: >
-	echo my_{ad{end_of_word}}_message
-where "end_of_word" is either "verb" or "jective".
-
-However, the expression inside the braces must evaluate to a valid single
-variable name, e.g. this is invalid: >
-	:let foo='a + b'
-	:echo c{foo}d
-.. since the result of expansion is "ca + bd", which is not a variable name.
-
-						*curly-braces-function-names*
-You can call and define functions by an evaluated name in a similar way.
-Example: >
-	:let func_end='whizz'
-	:call my_func_{func_end}(parameter)
-
-This would call the function "my_func_whizz(parameter)".
-
-==============================================================================
-7. Commands						*expression-commands*
-
-:let {var-name} = {expr1}				*:let* *E18*
-			Set internal variable {var-name} to the result of the
-			expression {expr1}.  The variable will get the type
-			from the {expr}.  If {var-name} didn't exist yet, it
-			is created.
-
-:let {var-name}[{idx}] = {expr1}			*E689*
-			Set a list item to the result of the expression
-			{expr1}.  {var-name} must refer to a list and {idx}
-			must be a valid index in that list.  For nested list
-			the index can be repeated.
-			This cannot be used to add an item to a |List|.
-			This cannot be used to set a byte in a String.	You
-			can do that like this: >
-				:let var = var[0:2] . 'X' . var[4:]
-<
-							*E711* *E719*
-:let {var-name}[{idx1}:{idx2}] = {expr1}		*E708* *E709* *E710*
-			Set a sequence of items in a |List| to the result of
-			the expression {expr1}, which must be a list with the
-			correct number of items.
-			{idx1} can be omitted, zero is used instead.
-			{idx2} can be omitted, meaning the end of the list.
-			When the selected range of items is partly past the
-			end of the list, items will be added.
-
-					*:let+=* *:let-=* *:let.=* *E734*
-:let {var} += {expr1}	Like ":let {var} = {var} + {expr1}".
-:let {var} -= {expr1}	Like ":let {var} = {var} - {expr1}".
-:let {var} .= {expr1}	Like ":let {var} = {var} . {expr1}".
-			These fail if {var} was not set yet and when the type
-			of {var} and {expr1} don't fit the operator.
-
-
-:let ${env-name} = {expr1}			*:let-environment* *:let-$*
-			Set environment variable {env-name} to the result of
-			the expression {expr1}.  The type is always String.
-:let ${env-name} .= {expr1}
-			Append {expr1} to the environment variable {env-name}.
-			If the environment variable didn't exist yet this
-			works like "=".
-
-:let @{reg-name} = {expr1}			*:let-register* *:let-@*
-			Write the result of the expression {expr1} in register
-			{reg-name}.  {reg-name} must be a single letter, and
-			must be the name of a writable register (see
-			|registers|).  "@@" can be used for the unnamed
-			register, "@/" for the search pattern.
-			If the result of {expr1} ends in a  or , the
-			register will be linewise, otherwise it will be set to
-			characterwise.
-			This can be used to clear the last search pattern: >
-				:let @/ = ""
-<			This is different from searching for an empty string,
-			that would match everywhere.
-
-:let @{reg-name} .= {expr1}
-			Append {expr1} to register {reg-name}.	If the
-			register was empty it's like setting it to {expr1}.
-
-:let &{option-name} = {expr1}			*:let-option* *:let-&*
-			Set option {option-name} to the result of the
-			expression {expr1}.  A String or Number value is
-			always converted to the type of the option.
-			For an option local to a window or buffer the effect
-			is just like using the |:set| command: both the local
-			value and the global value are changed.
-			Example: >
-				:let &path = &path . ',/usr/local/include'
-
-:let &{option-name} .= {expr1}
-			For a string option: Append {expr1} to the value.
-			Does not insert a comma like |:set+=|.
-
-:let &{option-name} += {expr1}
-:let &{option-name} -= {expr1}
-			For a number or boolean option: Add or subtract
-			{expr1}.
-
-:let &l:{option-name} = {expr1}
-:let &l:{option-name} .= {expr1}
-:let &l:{option-name} += {expr1}
-:let &l:{option-name} -= {expr1}
-			Like above, but only set the local value of an option
-			(if there is one).  Works like |:setlocal|.
-
-:let &g:{option-name} = {expr1}
-:let &g:{option-name} .= {expr1}
-:let &g:{option-name} += {expr1}
-:let &g:{option-name} -= {expr1}
-			Like above, but only set the global value of an option
-			(if there is one).  Works like |:setglobal|.
-
-:let [{name1}, {name2}, ...] = {expr1}		*:let-unpack* *E687* *E688*
-			{expr1} must evaluate to a |List|.  The first item in
-			the list is assigned to {name1}, the second item to
-			{name2}, etc.
-			The number of names must match the number of items in
-			the |List|.
-			Each name can be one of the items of the ":let"
-			command as mentioned above.
-			Example: >
-				:let [s, item] = GetItem(s)
-<			Detail: {expr1} is evaluated first, then the
-			assignments are done in sequence.  This matters if
-			{name2} depends on {name1}.  Example: >
-				:let x = [0, 1]
-				:let i = 0
-				:let [i, x[i]] = [1, 2]
-				:echo x
-<			The result is [0, 2].
-
-:let [{name1}, {name2}, ...] .= {expr1}
-:let [{name1}, {name2}, ...] += {expr1}
-:let [{name1}, {name2}, ...] -= {expr1}
-			Like above, but append/add/subtract the value for each
-			|List| item.
-
-:let [{name}, ..., ; {lastname}] = {expr1}
-			Like |:let-unpack| above, but the |List| may have more
-			items than there are names.  A list of the remaining
-			items is assigned to {lastname}.  If there are no
-			remaining items {lastname} is set to an empty list.
-			Example: >
-				:let [a, b; rest] = ["aval", "bval", 3, 4]
-<
-:let [{name}, ..., ; {lastname}] .= {expr1}
-:let [{name}, ..., ; {lastname}] += {expr1}
-:let [{name}, ..., ; {lastname}] -= {expr1}
-			Like above, but append/add/subtract the value for each
-			|List| item.
-							*E106*
-:let {var-name}	..	List the value of variable {var-name}.	Multiple
-			variable names may be given.  Special names recognized
-			here:				*E738*
-			  g:	global variables
-			  b:	local buffer variables
-			  w:	local window variables
-			  t:	local tab page variables
-			  s:	script-local variables
-			  l:	local function variables
-			  v:	Vim variables.
-
-:let			List the values of all variables.  The type of the
-			variable is indicated before the value:
-			    	String
-				#	Number
-				*	Funcref
-
-
-:unl[et][!] {name} ...				*:unlet* *:unl* *E108* *E795*
-			Remove the internal variable {name}.  Several variable
-			names can be given, they are all removed.  The name
-			may also be a |List| or |Dictionary| item.
-			With [!] no error message is given for non-existing
-			variables.
-			One or more items from a |List| can be removed: >
-				:unlet list[3]	  " remove fourth item
-				:unlet list[3:]   " remove fourth item to last
-<			One item from a |Dictionary| can be removed at a time: >
-				:unlet dict['two']
-				:unlet dict.two
-<			This is especially useful to clean up used global
-			variables and script-local variables (these are not
-			deleted when the script ends).  Function-local
-			variables are automatically deleted when the function
-			ends.
-
-:lockv[ar][!] [depth] {name} ...			*:lockvar* *:lockv*
-			Lock the internal variable {name}.  Locking means that
-			it can no longer be changed (until it is unlocked).
-			A locked variable can be deleted: >
-				:lockvar v
-				:let v = 'asdf'		" fails!
-				:unlet v
-<							*E741*
-			If you try to change a locked variable you get an
-			error message: "E741: Value of {name} is locked"
-
-			[depth] is relevant when locking a |List| or
-			|Dictionary|.  It specifies how deep the locking goes:
-				1	Lock the |List| or |Dictionary| itself,
-					cannot add or remove items, but can
-					still change their values.
-				2	Also lock the values, cannot change
-					the items.  If an item is a |List| or
-					|Dictionary|, cannot add or remove
-					items, but can still change the
-					values.
-				3	Like 2 but for the |List| /
-					|Dictionary| in the |List| /
-					|Dictionary|, one level deeper.
-			The default [depth] is 2, thus when {name} is a |List|
-			or |Dictionary| the values cannot be changed.
-								*E743*
-			For unlimited depth use [!] and omit [depth].
-			However, there is a maximum depth of 100 to catch
-			loops.
-
-			Note that when two variables refer to the same |List|
-			and you lock one of them, the |List| will also be
-			locked when used through the other variable.
-			Example: >
-				:let l = [0, 1, 2, 3]
-				:let cl = l
-				:lockvar l
-				:let cl[1] = 99		" won't work!
-<			You may want to make a copy of a list to avoid this.
-			See |deepcopy()|.
-
-
-:unlo[ckvar][!] [depth] {name} ...			*:unlockvar* *:unlo*
-			Unlock the internal variable {name}.  Does the
-			opposite of |:lockvar|.
-
-
-:if {expr1}			*:if* *:endif* *:en* *E171* *E579* *E580*
-:en[dif]		Execute the commands until the next matching ":else"
-			or ":endif" if {expr1} evaluates to non-zero.
-
-			From Vim version 4.5 until 5.0, every Ex command in
-			between the ":if" and ":endif" is ignored.  These two
-			commands were just to allow for future expansions in a
-			backwards compatible way.  Nesting was allowed.  Note
-			that any ":else" or ":elseif" was ignored, the "else"
-			part was not executed either.
-
-			You can use this to remain compatible with older
-			versions: >
-				:if version >= 500
-				:  version-5-specific-commands
-				:endif
-<			The commands still need to be parsed to find the
-			"endif".  Sometimes an older Vim has a problem with a
-			new command.  For example, ":silent" is recognized as
-			a ":substitute" command.  In that case ":execute" can
-			avoid problems: >
-				:if version >= 600
-				:  execute "silent 1,$delete"
-				:endif
-<
-			NOTE: The ":append" and ":insert" commands don't work
-			properly in between ":if" and ":endif".
-
-						*:else* *:el* *E581* *E583*
-:el[se]			Execute the commands until the next matching ":else"
-			or ":endif" if they previously were not being
-			executed.
-
-					*:elseif* *:elsei* *E582* *E584*
-:elsei[f] {expr1}	Short for ":else" ":if", with the addition that there
-			is no extra ":endif".
-
-:wh[ile] {expr1}			*:while* *:endwhile* *:wh* *:endw*
-						*E170* *E585* *E588* *E733*
-:endw[hile]		Repeat the commands between ":while" and ":endwhile",
-			as long as {expr1} evaluates to non-zero.
-			When an error is detected from a command inside the
-			loop, execution continues after the "endwhile".
-			Example: >
-				:let lnum = 1
-				:while lnum <= line("$")
-				   :call FixLine(lnum)
-				   :let lnum = lnum + 1
-				:endwhile
-<
-			NOTE: The ":append" and ":insert" commands don't work
-			properly inside a ":while" and ":for" loop.
-
-:for {var} in {list}					*:for* *E690* *E732*
-:endfo[r]						*:endfo* *:endfor*
-			Repeat the commands between ":for" and ":endfor" for
-			each item in {list}.  Variable {var} is set to the
-			value of each item.
-			When an error is detected for a command inside the
-			loop, execution continues after the "endfor".
-			Changing {list} inside the loop affects what items are
-			used.  Make a copy if this is unwanted: >
-				:for item in copy(mylist)
-<			When not making a copy, Vim stores a reference to the
-			next item in the list, before executing the commands
-			with the current item.	Thus the current item can be
-			removed without effect.  Removing any later item means
-			it will not be found.  Thus the following example
-			works (an inefficient way to make a list empty): >
-				for item in mylist
-				   call remove(mylist, 0)
-				endfor
-<			Note that reordering the list (e.g., with sort() or
-			reverse()) may have unexpected effects.
-			Note that the type of each list item should be
-			identical to avoid errors for the type of {var}
-			changing.  Unlet the variable at the end of the loop
-			to allow multiple item types: >
-				for item in ["foo", ["bar"]]
-				   echo item
-				   unlet item  " E706 without this
-				endfor
-
-:for [{var1}, {var2}, ...] in {listlist}
-:endfo[r]
-			Like ":for" above, but each item in {listlist} must be
-			a list, of which each item is assigned to {var1},
-			{var2}, etc.  Example: >
-				:for [lnum, col] in [[1, 3], [2, 5], [3, 8]]
-				   :echo getline(lnum)[col]
-				:endfor
-<
-						*:continue* *:con* *E586*
-:con[tinue]		When used inside a ":while" or ":for" loop, jumps back
-			to the start of the loop.
-			If it is used after a |:try| inside the loop but
-			before the matching |:finally| (if present), the
-			commands following the ":finally" up to the matching
-			|:endtry| are executed first.  This process applies to
-			all nested ":try"s inside the loop.  The outermost
-			":endtry" then jumps back to the start of the loop.
-
-						*:break* *:brea* *E587*
-:brea[k]		When used inside a ":while" or ":for" loop, skips to
-			the command after the matching ":endwhile" or
-			":endfor".
-			If it is used after a |:try| inside the loop but
-			before the matching |:finally| (if present), the
-			commands following the ":finally" up to the matching
-			|:endtry| are executed first.  This process applies to
-			all nested ":try"s inside the loop.  The outermost
-			":endtry" then jumps to the command after the loop.
-
-:try				*:try* *:endt* *:endtry* *E600* *E601* *E602*
-:endt[ry]		Change the error handling for the commands between
-			":try" and ":endtry" including everything being
-			executed across ":source" commands, function calls,
-			or autocommand invocations.
-
-			When an error or interrupt is detected and there is
-			a |:finally| command following, execution continues
-			after the ":finally".  Otherwise, or when the
-			":endtry" is reached thereafter, the next
-			(dynamically) surrounding ":try" is checked for
-			a corresponding ":finally" etc.  Then the script
-			processing is terminated.  (Whether a function
-			definition has an "abort" argument does not matter.)
-			Example: >
-		:try | edit too much | finally | echo "cleanup" | endtry
-		:echo "impossible"	" not reached, script terminated above
-<
-			Moreover, an error or interrupt (dynamically) inside
-			":try" and ":endtry" is converted to an exception.  It
-			can be caught as if it were thrown by a |:throw|
-			command (see |:catch|).  In this case, the script
-			processing is not terminated.
-
-			The value "Vim:Interrupt" is used for an interrupt
-			exception.  An error in a Vim command is converted
-			to a value of the form "Vim({command}):{errmsg}",
-			other errors are converted to a value of the form
-			"Vim:{errmsg}".  {command} is the full command name,
-			and {errmsg} is the message that is displayed if the
-			error exception is not caught, always beginning with
-			the error number.
-			Examples: >
-		:try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
-		:try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
-<
-					*:cat* *:catch* *E603* *E604* *E605*
-:cat[ch] /{pattern}/	The following commands until the next |:catch|,
-			|:finally|, or |:endtry| that belongs to the same
-			|:try| as the ":catch" are executed when an exception
-			matching {pattern} is being thrown and has not yet
-			been caught by a previous ":catch".  Otherwise, these
-			commands are skipped.
-			When {pattern} is omitted all errors are caught.
-			Examples: >
-		:catch /^Vim:Interrupt$/	" catch interrupts (CTRL-C)
-		:catch /^Vim\%((\a\+)\)\=:E/	" catch all Vim errors
-		:catch /^Vim\%((\a\+)\)\=:/	" catch errors and interrupts
-		:catch /^Vim(write):/		" catch all errors in :write
-		:catch /^Vim\%((\a\+)\)\=:E123/	" catch error E123
-		:catch /my-exception/		" catch user exception
-		:catch /.*/			" catch everything
-		:catch				" same as /.*/
-<
-			Another character can be used instead of / around the
-			{pattern}, so long as it does not have a special
-			meaning (e.g., '|' or '"') and doesn't occur inside
-			{pattern}.
-			NOTE: It is not reliable to ":catch" the TEXT of
-			an error message because it may vary in different
-			locales.
-
-					*:fina* *:finally* *E606* *E607*
-:fina[lly]		The following commands until the matching |:endtry|
-			are executed whenever the part between the matching
-			|:try| and the ":finally" is left:  either by falling
-			through to the ":finally" or by a |:continue|,
-			|:break|, |:finish|, or |:return|, or by an error or
-			interrupt or exception (see |:throw|).
-
-							*:th* *:throw* *E608*
-:th[row] {expr1}	The {expr1} is evaluated and thrown as an exception.
-			If the ":throw" is used after a |:try| but before the
-			first corresponding |:catch|, commands are skipped
-			until the first ":catch" matching {expr1} is reached.
-			If there is no such ":catch" or if the ":throw" is
-			used after a ":catch" but before the |:finally|, the
-			commands following the ":finally" (if present) up to
-			the matching |:endtry| are executed.  If the ":throw"
-			is after the ":finally", commands up to the ":endtry"
-			are skipped.  At the ":endtry", this process applies
-			again for the next dynamically surrounding ":try"
-			(which may be found in a calling function or sourcing
-			script), until a matching ":catch" has been found.
-			If the exception is not caught, the command processing
-			is terminated.
-			Example: >
-		:try | throw "oops" | catch /^oo/ | echo "caught" | endtry
-<
-
-							*:ec* *:echo*
-:ec[ho] {expr1} ..	Echoes each {expr1}, with a space in between.  The
-			first {expr1} starts on a new line.
-			Also see |:comment|.
-			Use "\n" to start a new line.  Use "\r" to move the
-			cursor to the first column.
-			Uses the highlighting set by the |:echohl| command.
-			Cannot be followed by a comment.
-			Example: >
-		:echo "the value of 'shell' is" &shell
-<							*:echo-redraw*
-			A later redraw may make the message disappear again.
-			And since Vim mostly postpones redrawing until it's
-			finished with a sequence of commands this happens
-			quite often.  To avoid that a command from before the
-			":echo" causes a redraw afterwards (redraws are often
-			postponed until you type something), force a redraw
-			with the |:redraw| command.  Example: >
-		:new | redraw | echo "there is a new window"
-<
-							*:echon*
-:echon {expr1} ..	Echoes each {expr1}, without anything added.  Also see
-			|:comment|.
-			Uses the highlighting set by the |:echohl| command.
-			Cannot be followed by a comment.
-			Example: >
-				:echon "the value of 'shell' is " &shell
-<
-			Note the difference between using ":echo", which is a
-			Vim command, and ":!echo", which is an external shell
-			command: >
-		:!echo %		--> filename
-<			The arguments of ":!" are expanded, see |:_%|. >
-		:!echo "%"		--> filename or "filename"
-<			Like the previous example.  Whether you see the double
-			quotes or not depends on your 'shell'. >
-		:echo %			--> nothing
-<			The '%' is an illegal character in an expression. >
-		:echo "%"		--> %
-<			This just echoes the '%' character. >
-		:echo expand("%")	--> filename
-<			This calls the expand() function to expand the '%'.
-
-							*:echoh* *:echohl*
-:echoh[l] {name}	Use the highlight group {name} for the following
-			|:echo|, |:echon| and |:echomsg| commands.  Also used
-			for the |input()| prompt.  Example: >
-		:echohl WarningMsg | echo "Don't panic!" | echohl None
-<			Don't forget to set the group back to "None",
-			otherwise all following echo's will be highlighted.
-
-							*:echom* *:echomsg*
-:echom[sg] {expr1} ..	Echo the expression(s) as a true message, saving the
-			message in the |message-history|.
-			Spaces are placed between the arguments as with the
-			|:echo| command.  But unprintable characters are
-			displayed, not interpreted.
-			The parsing works slightly different from |:echo|,
-			more like |:execute|.  All the expressions are first
-			evaluated and concatenated before echoing anything.
-			The expressions must evaluate to a Number or String, a
-			Dictionary or List causes an error.
-			Uses the highlighting set by the |:echohl| command.
-			Example: >
-		:echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see."
-<			See |:echo-redraw| to avoid the message disappearing
-			when the screen is redrawn.
-							*:echoe* *:echoerr*
-:echoe[rr] {expr1} ..	Echo the expression(s) as an error message, saving the
-			message in the |message-history|.  When used in a
-			script or function the line number will be added.
-			Spaces are placed between the arguments as with the
-			:echo command.	When used inside a try conditional,
-			the message is raised as an error exception instead
-			(see |try-echoerr|).
-			Example: >
-		:echoerr "This script just failed!"
-<			If you just want a highlighted message use |:echohl|.
-			And to get a beep: >
-		:exe "normal \"
-<
-							*:exe* *:execute*
-:exe[cute] {expr1} ..	Executes the string that results from the evaluation
-			of {expr1} as an Ex command.
-			Multiple arguments are concatenated, with a space in
-			between.  To avoid the extra space use the "."
-			operator to concatenate strings into one argument.
-			{expr1} is used as the processed command, command line
-			editing keys are not recognized.
-			Cannot be followed by a comment.
-			Examples: >
-		:execute "buffer" nextbuf
-		:execute "normal" count . "w"
-<
-			":execute" can be used to append a command to commands
-			that don't accept a '|'.  Example: >
-		:execute '!ls' | echo "theend"
-
-<			":execute" is also a nice way to avoid having to type
-			control characters in a Vim script for a ":normal"
-			command: >
-		:execute "normal ixxx\"
-<			This has an  character, see |expr-string|.
-
-			Be careful to correctly escape special characters in
-			file names.  The |fnameescape()| function can be used
-			for Vim commands, |shellescape()| for |:!| commands.
-			Examples: >
-		:execute "e " . fnameescape(filename)
-		:execute "!ls " . shellescape(expand('%:h'), 1)
-<
-			Note: The executed string may be any command-line, but
-			you cannot start or end a "while", "for" or "if"
-			command.  Thus this is illegal: >
-		:execute 'while i > 5'
-		:execute 'echo "test" | break'
-<
-			It is allowed to have a "while" or "if" command
-			completely in the executed string: >
-		:execute 'while i < 5 | echo i | let i = i + 1 | endwhile'
-<
-
-							*:exe-comment*
-			":execute", ":echo" and ":echon" cannot be followed by
-			a comment directly, because they see the '"' as the
-			start of a string.  But, you can use '|' followed by a
-			comment.  Example: >
-		:echo "foo" | "this is a comment
-
-==============================================================================
-8. Exception handling					*exception-handling*
-
-The Vim script language comprises an exception handling feature.  This section
-explains how it can be used in a Vim script.
-
-Exceptions may be raised by Vim on an error or on interrupt, see
-|catch-errors| and |catch-interrupt|.  You can also explicitly throw an
-exception by using the ":throw" command, see |throw-catch|.
-
-
-TRY CONDITIONALS					*try-conditionals*
-
-Exceptions can be caught or can cause cleanup code to be executed.  You can
-use a try conditional to specify catch clauses (that catch exceptions) and/or
-a finally clause (to be executed for cleanup).
-   A try conditional begins with a |:try| command and ends at the matching
-|:endtry| command.  In between, you can use a |:catch| command to start
-a catch clause, or a |:finally| command to start a finally clause.  There may
-be none or multiple catch clauses, but there is at most one finally clause,
-which must not be followed by any catch clauses.  The lines before the catch
-clauses and the finally clause is called a try block. >
-
-     :try
-     :	...
-     :	...				TRY BLOCK
-     :	...
-     :catch /{pattern}/
-     :	...
-     :	...				CATCH CLAUSE
-     :	...
-     :catch /{pattern}/
-     :	...
-     :	...				CATCH CLAUSE
-     :	...
-     :finally
-     :	...
-     :	...				FINALLY CLAUSE
-     :	...
-     :endtry
-
-The try conditional allows to watch code for exceptions and to take the
-appropriate actions.  Exceptions from the try block may be caught.  Exceptions
-from the try block and also the catch clauses may cause cleanup actions.
-   When no exception is thrown during execution of the try block, the control
-is transferred to the finally clause, if present.  After its execution, the
-script continues with the line following the ":endtry".
-   When an exception occurs during execution of the try block, the remaining
-lines in the try block are skipped.  The exception is matched against the
-patterns specified as arguments to the ":catch" commands.  The catch clause
-after the first matching ":catch" is taken, other catch clauses are not
-executed.  The catch clause ends when the next ":catch", ":finally", or
-":endtry" command is reached - whatever is first.  Then, the finally clause
-(if present) is executed.  When the ":endtry" is reached, the script execution
-continues in the following line as usual.
-   When an exception that does not match any of the patterns specified by the
-":catch" commands is thrown in the try block, the exception is not caught by
-that try conditional and none of the catch clauses is executed.  Only the
-finally clause, if present, is taken.  The exception pends during execution of
-the finally clause.  It is resumed at the ":endtry", so that commands after
-the ":endtry" are not executed and the exception might be caught elsewhere,
-see |try-nesting|.
-   When during execution of a catch clause another exception is thrown, the
-remaining lines in that catch clause are not executed.	The new exception is
-not matched against the patterns in any of the ":catch" commands of the same
-try conditional and none of its catch clauses is taken.  If there is, however,
-a finally clause, it is executed, and the exception pends during its
-execution.  The commands following the ":endtry" are not executed.  The new
-exception might, however, be caught elsewhere, see |try-nesting|.
-   When during execution of the finally clause (if present) an exception is
-thrown, the remaining lines in the finally clause are skipped.	If the finally
-clause has been taken because of an exception from the try block or one of the
-catch clauses, the original (pending) exception is discarded.  The commands
-following the ":endtry" are not executed, and the exception from the finally
-clause is propagated and can be caught elsewhere, see |try-nesting|.
-
-The finally clause is also executed, when a ":break" or ":continue" for
-a ":while" loop enclosing the complete try conditional is executed from the
-try block or a catch clause.  Or when a ":return" or ":finish" is executed
-from the try block or a catch clause of a try conditional in a function or
-sourced script, respectively.  The ":break", ":continue", ":return", or
-":finish" pends during execution of the finally clause and is resumed when the
-":endtry" is reached.  It is, however, discarded when an exception is thrown
-from the finally clause.
-   When a ":break" or ":continue" for a ":while" loop enclosing the complete
-try conditional or when a ":return" or ":finish" is encountered in the finally
-clause, the rest of the finally clause is skipped, and the ":break",
-":continue", ":return" or ":finish" is executed as usual.  If the finally
-clause has been taken because of an exception or an earlier ":break",
-":continue", ":return", or ":finish" from the try block or a catch clause,
-this pending exception or command is discarded.
-
-For examples see |throw-catch| and |try-finally|.
-
-
-NESTING	OF TRY CONDITIONALS				*try-nesting*
-
-Try conditionals can be nested arbitrarily.  That is, a complete try
-conditional can be put into the try block, a catch clause, or the finally
-clause of another try conditional.  If the inner try conditional does not
-catch an exception thrown in its try block or throws a new exception from one
-of its catch clauses or its finally clause, the outer try conditional is
-checked according to the rules above.  If the inner try conditional is in the
-try block of the outer try conditional, its catch clauses are checked, but
-otherwise only the finally clause is executed.	It does not matter for
-nesting, whether the inner try conditional is directly contained in the outer
-one, or whether the outer one sources a script or calls a function containing
-the inner try conditional.
-
-When none of the active try conditionals catches an exception, just their
-finally clauses are executed.  Thereafter, the script processing terminates.
-An error message is displayed in case of an uncaught exception explicitly
-thrown by a ":throw" command.  For uncaught error and interrupt exceptions
-implicitly raised by Vim, the error message(s) or interrupt message are shown
-as usual.
-
-For examples see |throw-catch|.
-
-
-EXAMINING EXCEPTION HANDLING CODE			*except-examine*
-
-Exception handling code can get tricky.  If you are in doubt what happens, set
-'verbose' to 13 or use the ":13verbose" command modifier when sourcing your
-script file.  Then you see when an exception is thrown, discarded, caught, or
-finished.  When using a verbosity level of at least 14, things pending in
-a finally clause are also shown.  This information is also given in debug mode
-(see |debug-scripts|).
-
-
-THROWING AND CATCHING EXCEPTIONS			*throw-catch*
-
-You can throw any number or string as an exception.  Use the |:throw| command
-and pass the value to be thrown as argument: >
-	:throw 4711
-	:throw "string"
-<							*throw-expression*
-You can also specify an expression argument.  The expression is then evaluated
-first, and the result is thrown: >
-	:throw 4705 + strlen("string")
-	:throw strpart("strings", 0, 6)
-
-An exception might be thrown during evaluation of the argument of the ":throw"
-command.  Unless it is caught there, the expression evaluation is abandoned.
-The ":throw" command then does not throw a new exception.
-   Example: >
-
-	:function! Foo(arg)
-	:  try
-	:    throw a:arg
-	:  catch /foo/
-	:  endtry
-	:  return 1
-	:endfunction
-	:
-	:function! Bar()
-	:  echo "in Bar"
-	:  return 4710
-	:endfunction
-	:
-	:throw Foo("arrgh") + Bar()
-
-This throws "arrgh", and "in Bar" is not displayed since Bar() is not
-executed. >
-	:throw Foo("foo") + Bar()
-however displays "in Bar" and throws 4711.
-
-Any other command that takes an expression as argument might also be
-abandoned by an (uncaught) exception during the expression evaluation.	The
-exception is then propagated to the caller of the command.
-   Example: >
-
-	:if Foo("arrgh")
-	:  echo "then"
-	:else
-	:  echo "else"
-	:endif
-
-Here neither of "then" or "else" is displayed.
-
-							*catch-order*
-Exceptions can be caught by a try conditional with one or more |:catch|
-commands, see |try-conditionals|.   The values to be caught by each ":catch"
-command can be specified as a pattern argument.  The subsequent catch clause
-gets executed when a matching exception is caught.
-   Example: >
-
-	:function! Foo(value)
-	:  try
-	:    throw a:value
-	:  catch /^\d\+$/
-	:    echo "Number thrown"
-	:  catch /.*/
-	:    echo "String thrown"
-	:  endtry
-	:endfunction
-	:
-	:call Foo(0x1267)
-	:call Foo('string')
-
-The first call to Foo() displays "Number thrown", the second "String thrown".
-An exception is matched against the ":catch" commands in the order they are
-specified.  Only the first match counts.  So you should place the more
-specific ":catch" first.  The following order does not make sense: >
-
-	:  catch /.*/
-	:    echo "String thrown"
-	:  catch /^\d\+$/
-	:    echo "Number thrown"
-
-The first ":catch" here matches always, so that the second catch clause is
-never taken.
-
-							*throw-variables*
-If you catch an exception by a general pattern, you may access the exact value
-in the variable |v:exception|: >
-
-	:  catch /^\d\+$/
-	:    echo "Number thrown.  Value is" v:exception
-
-You may also be interested where an exception was thrown.  This is stored in
-|v:throwpoint|.  Note that "v:exception" and "v:throwpoint" are valid for the
-exception most recently caught as long it is not finished.
-   Example: >
-
-	:function! Caught()
-	:  if v:exception != ""
-	:    echo 'Caught "' . v:exception . '" in ' . v:throwpoint
-	:  else
-	:    echo 'Nothing caught'
-	:  endif
-	:endfunction
-	:
-	:function! Foo()
-	:  try
-	:    try
-	:      try
-	:	 throw 4711
-	:      finally
-	:	 call Caught()
-	:      endtry
-	:    catch /.*/
-	:      call Caught()
-	:      throw "oops"
-	:    endtry
-	:  catch /.*/
-	:    call Caught()
-	:  finally
-	:    call Caught()
-	:  endtry
-	:endfunction
-	:
-	:call Foo()
-
-This displays >
-
-	Nothing caught
-	Caught "4711" in function Foo, line 4
-	Caught "oops" in function Foo, line 10
-	Nothing caught
-
-A practical example:  The following command ":LineNumber" displays the line
-number in the script or function where it has been used: >
-
-	:function! LineNumber()
-	:    return substitute(v:throwpoint, '.*\D\(\d\+\).*', '\1', "")
-	:endfunction
-	:command! LineNumber try | throw "" | catch | echo LineNumber() | endtry
-<
-							*try-nested*
-An exception that is not caught by a try conditional can be caught by
-a surrounding try conditional: >
-
-	:try
-	:  try
-	:    throw "foo"
-	:  catch /foobar/
-	:    echo "foobar"
-	:  finally
-	:    echo "inner finally"
-	:  endtry
-	:catch /foo/
-	:  echo "foo"
-	:endtry
-
-The inner try conditional does not catch the exception, just its finally
-clause is executed.  The exception is then caught by the outer try
-conditional.  The example displays "inner finally" and then "foo".
-
-							*throw-from-catch*
-You can catch an exception and throw a new one to be caught elsewhere from the
-catch clause: >
-
-	:function! Foo()
-	:  throw "foo"
-	:endfunction
-	:
-	:function! Bar()
-	:  try
-	:    call Foo()
-	:  catch /foo/
-	:    echo "Caught foo, throw bar"
-	:    throw "bar"
-	:  endtry
-	:endfunction
-	:
-	:try
-	:  call Bar()
-	:catch /.*/
-	:  echo "Caught" v:exception
-	:endtry
-
-This displays "Caught foo, throw bar" and then "Caught bar".
-
-							*rethrow*
-There is no real rethrow in the Vim script language, but you may throw
-"v:exception" instead: >
-
-	:function! Bar()
-	:  try
-	:    call Foo()
-	:  catch /.*/
-	:    echo "Rethrow" v:exception
-	:    throw v:exception
-	:  endtry
-	:endfunction
-<							*try-echoerr*
-Note that this method cannot be used to "rethrow" Vim error or interrupt
-exceptions, because it is not possible to fake Vim internal exceptions.
-Trying so causes an error exception.  You should throw your own exception
-denoting the situation.  If you want to cause a Vim error exception containing
-the original error exception value, you can use the |:echoerr| command: >
-
-	:try
-	:  try
-	:    asdf
-	:  catch /.*/
-	:    echoerr v:exception
-	:  endtry
-	:catch /.*/
-	:  echo v:exception
-	:endtry
-
-This code displays
-
-	Vim(echoerr):Vim:E492: Not an editor command:	asdf ~
-
-
-CLEANUP CODE						*try-finally*
-
-Scripts often change global settings and restore them at their end.  If the
-user however interrupts the script by pressing CTRL-C, the settings remain in
-an inconsistent state.	The same may happen to you in the development phase of
-a script when an error occurs or you explicitly throw an exception without
-catching it.  You can solve these problems by using a try conditional with
-a finally clause for restoring the settings.  Its execution is guaranteed on
-normal control flow, on error, on an explicit ":throw", and on interrupt.
-(Note that errors and interrupts from inside the try conditional are converted
-to exceptions.	When not caught, they terminate the script after the finally
-clause has been executed.)
-Example: >
-
-	:try
-	:  let s:saved_ts = &ts
-	:  set ts=17
-	:
-	:  " Do the hard work here.
-	:
-	:finally
-	:  let &ts = s:saved_ts
-	:  unlet s:saved_ts
-	:endtry
-
-This method should be used locally whenever a function or part of a script
-changes global settings which need to be restored on failure or normal exit of
-that function or script part.
-
-							*break-finally*
-Cleanup code works also when the try block or a catch clause is left by
-a ":continue", ":break", ":return", or ":finish".
-   Example: >
-
-	:let first = 1
-	:while 1
-	:  try
-	:    if first
-	:      echo "first"
-	:      let first = 0
-	:      continue
-	:    else
-	:      throw "second"
-	:    endif
-	:  catch /.*/
-	:    echo v:exception
-	:    break
-	:  finally
-	:    echo "cleanup"
-	:  endtry
-	:  echo "still in while"
-	:endwhile
-	:echo "end"
-
-This displays "first", "cleanup", "second", "cleanup", and "end". >
-
-	:function! Foo()
-	:  try
-	:    return 4711
-	:  finally
-	:    echo "cleanup\n"
-	:  endtry
-	:  echo "Foo still active"
-	:endfunction
-	:
-	:echo Foo() "returned by Foo"
-
-This displays "cleanup" and "4711 returned by Foo".  You don't need to add an
-extra ":return" in the finally clause.	(Above all, this would override the
-return value.)
-
-							*except-from-finally*
-Using either of ":continue", ":break", ":return", ":finish", or ":throw" in
-a finally clause is possible, but not recommended since it abandons the
-cleanup actions for the try conditional.  But, of course, interrupt and error
-exceptions might get raised from a finally clause.
-   Example where an error in the finally clause stops an interrupt from
-working correctly: >
-
-	:try
-	:  try
-	:    echo "Press CTRL-C for interrupt"
-	:    while 1
-	:    endwhile
-	:  finally
-	:    unlet novar
-	:  endtry
-	:catch /novar/
-	:endtry
-	:echo "Script still running"
-	:sleep 1
-
-If you need to put commands that could fail into a finally clause, you should
-think about catching or ignoring the errors in these commands, see
-|catch-errors| and |ignore-errors|.
-
-
-CATCHING ERRORS						*catch-errors*
-
-If you want to catch specific errors, you just have to put the code to be
-watched in a try block and add a catch clause for the error message.  The
-presence of the try conditional causes all errors to be converted to an
-exception.  No message is displayed and |v:errmsg| is not set then.  To find
-the right pattern for the ":catch" command, you have to know how the format of
-the error exception is.
-   Error exceptions have the following format: >
-
-	Vim({cmdname}):{errmsg}
-or >
-	Vim:{errmsg}
-
-{cmdname} is the name of the command that failed; the second form is used when
-the command name is not known.	{errmsg} is the error message usually produced
-when the error occurs outside try conditionals.  It always begins with
-a capital "E", followed by a two or three-digit error number, a colon, and
-a space.
-
-Examples:
-
-The command >
-	:unlet novar
-normally produces the error message >
-	E108: No such variable: "novar"
-which is converted inside try conditionals to an exception >
-	Vim(unlet):E108: No such variable: "novar"
-
-The command >
-	:dwim
-normally produces the error message >
-	E492: Not an editor command: dwim
-which is converted inside try conditionals to an exception >
-	Vim:E492: Not an editor command: dwim
-
-You can catch all ":unlet" errors by a >
-	:catch /^Vim(unlet):/
-or all errors for misspelled command names by a >
-	:catch /^Vim:E492:/
-
-Some error messages may be produced by different commands: >
-	:function nofunc
-and >
-	:delfunction nofunc
-both produce the error message >
-	E128: Function name must start with a capital: nofunc
-which is converted inside try conditionals to an exception >
-	Vim(function):E128: Function name must start with a capital: nofunc
-or >
-	Vim(delfunction):E128: Function name must start with a capital: nofunc
-respectively.  You can catch the error by its number independently on the
-command that caused it if you use the following pattern: >
-	:catch /^Vim(\a\+):E128:/
-
-Some commands like >
-	:let x = novar
-produce multiple error messages, here: >
-	E121: Undefined variable: novar
-	E15: Invalid expression:  novar
-Only the first is used for the exception value, since it is the most specific
-one (see |except-several-errors|).  So you can catch it by >
-	:catch /^Vim(\a\+):E121:/
-
-You can catch all errors related to the name "nofunc" by >
-	:catch /\/
-
-You can catch all Vim errors in the ":write" and ":read" commands by >
-	:catch /^Vim(\(write\|read\)):E\d\+:/
-
-You can catch all Vim errors by the pattern >
-	:catch /^Vim\((\a\+)\)\=:E\d\+:/
-<
-							*catch-text*
-NOTE: You should never catch the error message text itself: >
-	:catch /No such variable/
-only works in the english locale, but not when the user has selected
-a different language by the |:language| command.  It is however helpful to
-cite the message text in a comment: >
-	:catch /^Vim(\a\+):E108:/   " No such variable
-
-
-IGNORING ERRORS						*ignore-errors*
-
-You can ignore errors in a specific Vim command by catching them locally: >
-
-	:try
-	:  write
-	:catch
-	:endtry
-
-But you are strongly recommended NOT to use this simple form, since it could
-catch more than you want.  With the ":write" command, some autocommands could
-be executed and cause errors not related to writing, for instance: >
-
-	:au BufWritePre * unlet novar
-
-There could even be such errors you are not responsible for as a script
-writer: a user of your script might have defined such autocommands.  You would
-then hide the error from the user.
-   It is much better to use >
-
-	:try
-	:  write
-	:catch /^Vim(write):/
-	:endtry
-
-which only catches real write errors.  So catch only what you'd like to ignore
-intentionally.
-
-For a single command that does not cause execution of autocommands, you could
-even suppress the conversion of errors to exceptions by the ":silent!"
-command: >
-	:silent! nunmap k
-This works also when a try conditional is active.
-
-
-CATCHING INTERRUPTS					*catch-interrupt*
-
-When there are active try conditionals, an interrupt (CTRL-C) is converted to
-the exception "Vim:Interrupt".	You can catch it like every exception.	The
-script is not terminated, then.
-   Example: >
-
-	:function! TASK1()
-	:  sleep 10
-	:endfunction
-
-	:function! TASK2()
-	:  sleep 20
-	:endfunction
-
-	:while 1
-	:  let command = input("Type a command: ")
-	:  try
-	:    if command == ""
-	:      continue
-	:    elseif command == "END"
-	:      break
-	:    elseif command == "TASK1"
-	:      call TASK1()
-	:    elseif command == "TASK2"
-	:      call TASK2()
-	:    else
-	:      echo "\nIllegal command:" command
-	:      continue
-	:    endif
-	:  catch /^Vim:Interrupt$/
-	:    echo "\nCommand interrupted"
-	:    " Caught the interrupt.  Continue with next prompt.
-	:  endtry
-	:endwhile
-
-You can interrupt a task here by pressing CTRL-C; the script then asks for
-a new command.	If you press CTRL-C at the prompt, the script is terminated.
-
-For testing what happens when CTRL-C would be pressed on a specific line in
-your script, use the debug mode and execute the |>quit| or |>interrupt|
-command on that line.  See |debug-scripts|.
-
-
-CATCHING ALL						*catch-all*
-
-The commands >
-
-	:catch /.*/
-	:catch //
-	:catch
-
-catch everything, error exceptions, interrupt exceptions and exceptions
-explicitly thrown by the |:throw| command.  This is useful at the top level of
-a script in order to catch unexpected things.
-   Example: >
-
-	:try
-	:
-	:  " do the hard work here
-	:
-	:catch /MyException/
-	:
-	:  " handle known problem
-	:
-	:catch /^Vim:Interrupt$/
-	:    echo "Script interrupted"
-	:catch /.*/
-	:  echo "Internal error (" . v:exception . ")"
-	:  echo " - occurred at " . v:throwpoint
-	:endtry
-	:" end of script
-
-Note: Catching all might catch more things than you want.  Thus, you are
-strongly encouraged to catch only for problems that you can really handle by
-specifying a pattern argument to the ":catch".
-   Example: Catching all could make it nearly impossible to interrupt a script
-by pressing CTRL-C: >
-
-	:while 1
-	:  try
-	:    sleep 1
-	:  catch
-	:  endtry
-	:endwhile
-
-
-EXCEPTIONS AND AUTOCOMMANDS				*except-autocmd*
-
-Exceptions may be used during execution of autocommands.  Example: >
-
-	:autocmd User x try
-	:autocmd User x   throw "Oops!"
-	:autocmd User x catch
-	:autocmd User x   echo v:exception
-	:autocmd User x endtry
-	:autocmd User x throw "Arrgh!"
-	:autocmd User x echo "Should not be displayed"
-	:
-	:try
-	:  doautocmd User x
-	:catch
-	:  echo v:exception
-	:endtry
-
-This displays "Oops!" and "Arrgh!".
-
-							*except-autocmd-Pre*
-For some commands, autocommands get executed before the main action of the
-command takes place.  If an exception is thrown and not caught in the sequence
-of autocommands, the sequence and the command that caused its execution are
-abandoned and the exception is propagated to the caller of the command.
-   Example: >
-
-	:autocmd BufWritePre * throw "FAIL"
-	:autocmd BufWritePre * echo "Should not be displayed"
-	:
-	:try
-	:  write
-	:catch
-	:  echo "Caught:" v:exception "from" v:throwpoint
-	:endtry
-
-Here, the ":write" command does not write the file currently being edited (as
-you can see by checking 'modified'), since the exception from the BufWritePre
-autocommand abandons the ":write".  The exception is then caught and the
-script displays: >
-
-	Caught: FAIL from BufWrite Auto commands for "*"
-<
-							*except-autocmd-Post*
-For some commands, autocommands get executed after the main action of the
-command has taken place.  If this main action fails and the command is inside
-an active try conditional, the autocommands are skipped and an error exception
-is thrown that can be caught by the caller of the command.
-   Example: >
-
-	:autocmd BufWritePost * echo "File successfully written!"
-	:
-	:try
-	:  write /i/m/p/o/s/s/i/b/l/e
-	:catch
-	:  echo v:exception
-	:endtry
-
-This just displays: >
-
-	Vim(write):E212: Can't open file for writing (/i/m/p/o/s/s/i/b/l/e)
-
-If you really need to execute the autocommands even when the main action
-fails, trigger the event from the catch clause.
-   Example: >
-
-	:autocmd BufWritePre  * set noreadonly
-	:autocmd BufWritePost * set readonly
-	:
-	:try
-	:  write /i/m/p/o/s/s/i/b/l/e
-	:catch
-	:  doautocmd BufWritePost /i/m/p/o/s/s/i/b/l/e
-	:endtry
-<
-You can also use ":silent!": >
-
-	:let x = "ok"
-	:let v:errmsg = ""
-	:autocmd BufWritePost * if v:errmsg != ""
-	:autocmd BufWritePost *   let x = "after fail"
-	:autocmd BufWritePost * endif
-	:try
-	:  silent! write /i/m/p/o/s/s/i/b/l/e
-	:catch
-	:endtry
-	:echo x
-
-This displays "after fail".
-
-If the main action of the command does not fail, exceptions from the
-autocommands will be catchable by the caller of the command:  >
-
-	:autocmd BufWritePost * throw ":-("
-	:autocmd BufWritePost * echo "Should not be displayed"
-	:
-	:try
-	:  write
-	:catch
-	:  echo v:exception
-	:endtry
-<
-							*except-autocmd-Cmd*
-For some commands, the normal action can be replaced by a sequence of
-autocommands.  Exceptions from that sequence will be catchable by the caller
-of the command.
-   Example:  For the ":write" command, the caller cannot know whether the file
-had actually been written when the exception occurred.	You need to tell it in
-some way. >
-
-	:if !exists("cnt")
-	:  let cnt = 0
-	:
-	:  autocmd BufWriteCmd * if &modified
-	:  autocmd BufWriteCmd *   let cnt = cnt + 1
-	:  autocmd BufWriteCmd *   if cnt % 3 == 2
-	:  autocmd BufWriteCmd *     throw "BufWriteCmdError"
-	:  autocmd BufWriteCmd *   endif
-	:  autocmd BufWriteCmd *   write | set nomodified
-	:  autocmd BufWriteCmd *   if cnt % 3 == 0
-	:  autocmd BufWriteCmd *     throw "BufWriteCmdError"
-	:  autocmd BufWriteCmd *   endif
-	:  autocmd BufWriteCmd *   echo "File successfully written!"
-	:  autocmd BufWriteCmd * endif
-	:endif
-	:
-	:try
-	:	write
-	:catch /^BufWriteCmdError$/
-	:  if &modified
-	:    echo "Error on writing (file contents not changed)"
-	:  else
-	:    echo "Error after writing"
-	:  endif
-	:catch /^Vim(write):/
-	:    echo "Error on writing"
-	:endtry
-
-When this script is sourced several times after making changes, it displays
-first >
-	File successfully written!
-then >
-	Error on writing (file contents not changed)
-then >
-	Error after writing
-etc.
-
-							*except-autocmd-ill*
-You cannot spread a try conditional over autocommands for different events.
-The following code is ill-formed: >
-
-	:autocmd BufWritePre  * try
-	:
-	:autocmd BufWritePost * catch
-	:autocmd BufWritePost *   echo v:exception
-	:autocmd BufWritePost * endtry
-	:
-	:write
-
-
-EXCEPTION HIERARCHIES AND PARAMETERIZED EXCEPTIONS	*except-hier-param*
-
-Some programming languages allow to use hierarchies of exception classes or to
-pass additional information with the object of an exception class.  You can do
-similar things in Vim.
-   In order to throw an exception from a hierarchy, just throw the complete
-class name with the components separated by a colon, for instance throw the
-string "EXCEPT:MATHERR:OVERFLOW" for an overflow in a mathematical library.
-   When you want to pass additional information with your exception class, add
-it in parentheses, for instance throw the string "EXCEPT:IO:WRITEERR(myfile)"
-for an error when writing "myfile".
-   With the appropriate patterns in the ":catch" command, you can catch for
-base classes or derived classes of your hierarchy.  Additional information in
-parentheses can be cut out from |v:exception| with the ":substitute" command.
-   Example: >
-
-	:function! CheckRange(a, func)
-	:  if a:a < 0
-	:    throw "EXCEPT:MATHERR:RANGE(" . a:func . ")"
-	:  endif
-	:endfunction
-	:
-	:function! Add(a, b)
-	:  call CheckRange(a:a, "Add")
-	:  call CheckRange(a:b, "Add")
-	:  let c = a:a + a:b
-	:  if c < 0
-	:    throw "EXCEPT:MATHERR:OVERFLOW"
-	:  endif
-	:  return c
-	:endfunction
-	:
-	:function! Div(a, b)
-	:  call CheckRange(a:a, "Div")
-	:  call CheckRange(a:b, "Div")
-	:  if (a:b == 0)
-	:    throw "EXCEPT:MATHERR:ZERODIV"
-	:  endif
-	:  return a:a / a:b
-	:endfunction
-	:
-	:function! Write(file)
-	:  try
-	:    execute "write" fnameescape(a:file)
-	:  catch /^Vim(write):/
-	:    throw "EXCEPT:IO(" . getcwd() . ", " . a:file . "):WRITEERR"
-	:  endtry
-	:endfunction
-	:
-	:try
-	:
-	:  " something with arithmetics and I/O
-	:
-	:catch /^EXCEPT:MATHERR:RANGE/
-	:  let function = substitute(v:exception, '.*(\(\a\+\)).*', '\1', "")
-	:  echo "Range error in" function
-	:
-	:catch /^EXCEPT:MATHERR/	" catches OVERFLOW and ZERODIV
-	:  echo "Math error"
-	:
-	:catch /^EXCEPT:IO/
-	:  let dir = substitute(v:exception, '.*(\(.\+\),\s*.\+).*', '\1', "")
-	:  let file = substitute(v:exception, '.*(.\+,\s*\(.\+\)).*', '\1', "")
-	:  if file !~ '^/'
-	:    let file = dir . "/" . file
-	:  endif
-	:  echo 'I/O error for "' . file . '"'
-	:
-	:catch /^EXCEPT/
-	:  echo "Unspecified error"
-	:
-	:endtry
-
-The exceptions raised by Vim itself (on error or when pressing CTRL-C) use
-a flat hierarchy:  they are all in the "Vim" class.  You cannot throw yourself
-exceptions with the "Vim" prefix; they are reserved for Vim.
-   Vim error exceptions are parameterized with the name of the command that
-failed, if known.  See |catch-errors|.
-
-
-PECULIARITIES
-							*except-compat*
-The exception handling concept requires that the command sequence causing the
-exception is aborted immediately and control is transferred to finally clauses
-and/or a catch clause.
-
-In the Vim script language there are cases where scripts and functions
-continue after an error: in functions without the "abort" flag or in a command
-after ":silent!", control flow goes to the following line, and outside
-functions, control flow goes to the line following the outermost ":endwhile"
-or ":endif".  On the other hand, errors should be catchable as exceptions
-(thus, requiring the immediate abortion).
-
-This problem has been solved by converting errors to exceptions and using
-immediate abortion (if not suppressed by ":silent!") only when a try
-conditional is active.	This is no restriction since an (error) exception can
-be caught only from an active try conditional.	If you want an immediate
-termination without catching the error, just use a try conditional without
-catch clause.  (You can cause cleanup code being executed before termination
-by specifying a finally clause.)
-
-When no try conditional is active, the usual abortion and continuation
-behavior is used instead of immediate abortion.  This ensures compatibility of
-scripts written for Vim 6.1 and earlier.
-
-However, when sourcing an existing script that does not use exception handling
-commands (or when calling one of its functions) from inside an active try
-conditional of a new script, you might change the control flow of the existing
-script on error.  You get the immediate abortion on error and can catch the
-error in the new script.  If however the sourced script suppresses error
-messages by using the ":silent!" command (checking for errors by testing
-|v:errmsg| if appropriate), its execution path is not changed.	The error is
-not converted to an exception.	(See |:silent|.)  So the only remaining cause
-where this happens is for scripts that don't care about errors and produce
-error messages.  You probably won't want to use such code from your new
-scripts.
-
-							*except-syntax-err*
-Syntax errors in the exception handling commands are never caught by any of
-the ":catch" commands of the try conditional they belong to.  Its finally
-clauses, however, is executed.
-   Example: >
-
-	:try
-	:  try
-	:    throw 4711
-	:  catch /\(/
-	:    echo "in catch with syntax error"
-	:  catch
-	:    echo "inner catch-all"
-	:  finally
-	:    echo "inner finally"
-	:  endtry
-	:catch
-	:  echo 'outer catch-all caught "' . v:exception . '"'
-	:  finally
-	:    echo "outer finally"
-	:endtry
-
-This displays: >
-    inner finally
-    outer catch-all caught "Vim(catch):E54: Unmatched \("
-    outer finally
-The original exception is discarded and an error exception is raised, instead.
-
-							*except-single-line*
-The ":try", ":catch", ":finally", and ":endtry" commands can be put on
-a single line, but then syntax errors may make it difficult to recognize the
-"catch" line, thus you better avoid this.
-   Example: >
-	:try | unlet! foo # | catch | endtry
-raises an error exception for the trailing characters after the ":unlet!"
-argument, but does not see the ":catch" and ":endtry" commands, so that the
-error exception is discarded and the "E488: Trailing characters" message gets
-displayed.
-
-							*except-several-errors*
-When several errors appear in a single command, the first error message is
-usually the most specific one and therefor converted to the error exception.
-   Example: >
-	echo novar
-causes >
-	E121: Undefined variable: novar
-	E15: Invalid expression: novar
-The value of the error exception inside try conditionals is: >
-	Vim(echo):E121: Undefined variable: novar
-<							*except-syntax-error*
-But when a syntax error is detected after a normal error in the same command,
-the syntax error is used for the exception being thrown.
-   Example: >
-	unlet novar #
-causes >
-	E108: No such variable: "novar"
-	E488: Trailing characters
-The value of the error exception inside try conditionals is: >
-	Vim(unlet):E488: Trailing characters
-This is done because the syntax error might change the execution path in a way
-not intended by the user.  Example: >
-	try
-	    try | unlet novar # | catch | echo v:exception | endtry
-	catch /.*/
-	    echo "outer catch:" v:exception
-	endtry
-This displays "outer catch: Vim(unlet):E488: Trailing characters", and then
-a "E600: Missing :endtry" error message is given, see |except-single-line|.
-
-==============================================================================
-9. Examples						*eval-examples*
-
-Printing in Binary ~
->
-  :" The function Nr2Bin() returns the binary string representation of a number.
-  :func Nr2Bin(nr)
-  :  let n = a:nr
-  :  let r = ""
-  :  while n
-  :    let r = '01'[n % 2] . r
-  :    let n = n / 2
-  :  endwhile
-  :  return r
-  :endfunc
-
-  :" The function String2Bin() converts each character in a string to a
-  :" binary string, separated with dashes.
-  :func String2Bin(str)
-  :  let out = ''
-  :  for ix in range(strlen(a:str))
-  :    let out = out . '-' . Nr2Bin(char2nr(a:str[ix]))
-  :  endfor
-  :  return out[1:]
-  :endfunc
-
-Example of its use: >
-  :echo Nr2Bin(32)
-result: "100000" >
-  :echo String2Bin("32")
-result: "110011-110010"
-
-
-Sorting lines ~
-
-This example sorts lines with a specific compare function. >
-
-  :func SortBuffer()
-  :  let lines = getline(1, '$')
-  :  call sort(lines, function("Strcmp"))
-  :  call setline(1, lines)
-  :endfunction
-
-As a one-liner: >
-  :call setline(1, sort(getline(1, '$'), function("Strcmp")))
-
-
-scanf() replacement ~
-							*sscanf*
-There is no sscanf() function in Vim.  If you need to extract parts from a
-line, you can use matchstr() and substitute() to do it.  This example shows
-how to get the file name, line number and column number out of a line like
-"foobar.txt, 123, 45". >
-   :" Set up the match bit
-   :let mx='\(\f\+\),\s*\(\d\+\),\s*\(\d\+\)'
-   :"get the part matching the whole expression
-   :let l = matchstr(line, mx)
-   :"get each item out of the match
-   :let file = substitute(l, mx, '\1', '')
-   :let lnum = substitute(l, mx, '\2', '')
-   :let col = substitute(l, mx, '\3', '')
-
-The input is in the variable "line", the results in the variables "file",
-"lnum" and "col". (idea from Michael Geddes)
-
-
-getting the scriptnames in a Dictionary ~
-						*scriptnames-dictionary*
-The |:scriptnames| command can be used to get a list of all script files that
-have been sourced.  There is no equivalent function or variable for this
-(because it's rarely needed).  In case you need to manipulate the list this
-code can be used: >
-    " Get the output of ":scriptnames" in the scriptnames_output variable.
-    let scriptnames_output = ''
-    redir => scriptnames_output
-    silent scriptnames
-    redir END
-    
-    " Split the output into lines and parse each line.	Add an entry to the
-    " "scripts" dictionary.
-    let scripts = {}
-    for line in split(scriptnames_output, "\n")
-      " Only do non-blank lines.
-      if line =~ '\S'
-	" Get the first number in the line.
-	let nr = matchstr(line, '\d\+')
-	" Get the file name, remove the script number " 123: ".
-	let name = substitute(line, '.\+:\s*', '', '')
-	" Add an item to the Dictionary
-	let scripts[nr] = name
-      endif
-    endfor
-    unlet scriptnames_output
-
-==============================================================================
-10. No +eval feature				*no-eval-feature*
-
-When the |+eval| feature was disabled at compile time, none of the expression
-evaluation commands are available.  To prevent this from causing Vim scripts
-to generate all kinds of errors, the ":if" and ":endif" commands are still
-recognized, though the argument of the ":if" and everything between the ":if"
-and the matching ":endif" is ignored.  Nesting of ":if" blocks is allowed, but
-only if the commands are at the start of the line.  The ":else" command is not
-recognized.
-
-Example of how to avoid executing commands when the |+eval| feature is
-missing: >
-
-	:if 1
-	:  echo "Expression evaluation is compiled in"
-	:else
-	:  echo "You will _never_ see this message"
-	:endif
-
-==============================================================================
-11. The sandbox					*eval-sandbox* *sandbox* *E48*
-
-The 'foldexpr', 'formatexpr', 'includeexpr', 'indentexpr', 'statusline' and
-'foldtext' options may be evaluated in a sandbox.  This means that you are
-protected from these expressions having nasty side effects.  This gives some
-safety for when these options are set from a modeline.  It is also used when
-the command from a tags file is executed and for CTRL-R = in the command line.
-The sandbox is also used for the |:sandbox| command.
-
-These items are not allowed in the sandbox:
-	- changing the buffer text
-	- defining or changing mapping, autocommands, functions, user commands
-	- setting certain options (see |option-summary|)
-	- setting certain v: variables (see |v:var|)  *E794*
-	- executing a shell command
-	- reading or writing a file
-	- jumping to another buffer or editing a file
-	- executing Python, Perl, etc. commands
-This is not guaranteed 100% secure, but it should block most attacks.
-
-							*:san* *:sandbox*
-:san[dbox] {cmd}	Execute {cmd} in the sandbox.  Useful to evaluate an
-			option that may have been set from a modeline, e.g.
-			'foldexpr'.
-
-							*sandbox-option*
-A few options contain an expression.  When this expression is evaluated it may
-have to be done in the sandbox to avoid a security risk.  But the sandbox is
-restrictive, thus this only happens when the option was set from an insecure
-location.  Insecure in this context are:
-- sourcing a .vimrc or .exrc in the current directory
-- while executing in the sandbox
-- value coming from a modeline
-
-Note that when in the sandbox and saving an option value and restoring it, the
-option will still be marked as it was set in the sandbox.
-
-==============================================================================
-12. Textlock							*textlock*
-
-In a few situations it is not allowed to change the text in the buffer, jump
-to another window and some other things that might confuse or break what Vim
-is currently doing.  This mostly applies to things that happen when Vim is
-actually doing something else.	For example, evaluating the 'balloonexpr' may
-happen any moment the mouse cursor is resting at some position.
-
-This is not allowed when the textlock is active:
-	- changing the buffer text
-	- jumping to another buffer or window
-	- editing another file
-	- closing a window or quitting Vim
-	- etc.
-
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/evim-fr.1 b/share/vim/vim73/doc/evim-fr.1
deleted file mode 100644
index 792c1bc3..00000000
--- a/share/vim/vim73/doc/evim-fr.1
+++ /dev/null
@@ -1,56 +0,0 @@
-.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.
- 2005-03-26.
diff --git a/share/vim/vim73/doc/evim-fr.UTF-8.1 b/share/vim/vim73/doc/evim-fr.UTF-8.1
deleted file mode 100644
index 95941610..00000000
--- a/share/vim/vim73/doc/evim-fr.UTF-8.1
+++ /dev/null
@@ -1,56 +0,0 @@
-.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.
- 2005-03-26.
diff --git a/share/vim/vim73/doc/farsi.txt b/share/vim/vim73/doc/farsi.txt
deleted file mode 100644
index a24a2dc2..00000000
--- a/share/vim/vim73/doc/farsi.txt
+++ /dev/null
@@ -1,269 +0,0 @@
-*farsi.txt*     For Vim version 7.3.  Last change: 2010 Aug 07
-
-
-		  VIM REFERENCE MANUAL    by Mortaza Ghassab Shiran
-
-
-Right to Left and Farsi Mapping for Vim		*farsi* *Farsi*
-
-{Vi does not have any of these commands}
-
-						*E27*
-In order to use right-to-left and Farsi mapping support, it is necessary to
-compile Vim with the |+farsi| feature.
-
-These functions have been made by Mortaza G. Shiran 
-
-
-Introduction
-------------
-In right-to-left oriented files the characters appear on the screen from right
-to left.  This kind of file is most useful when writing Farsi documents,
-composing faxes or writing Farsi memos.
-
-The commands, prompts and help files are not in Farsi, therefore the user
-interface remains the standard Vi interface.
-
-
-Highlights
-----------
-o  Editing left-to-right files as in the original Vim, no change.
-
-o  Viewing and editing files in right-to-left windows.   File orientation is
-   per window, so it is possible to view the same file in right-to-left and
-   left-to-right modes, simultaneously.
-
-o  Compatibility to the original Vim.   Almost all features work in
-   right-to-left mode (see bugs below).
-
-o  Changing keyboard mapping and reverse insert modes using a single
-   command.
-
-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
-   a none number character, that character will be inserted just into the
-   left of the last number.
-
-o  No special terminal with right-to-left capabilities is required.  The
-   right-to-left changes are completely hardware independent.  Only
-   Farsi font is necessary.
-
-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
-   right-to-left mode, this function is also supported only in right-to-left
-   mode.
-
-Farsi Fonts					*farsi fonts*
------------
-
-The following files are found in the subdirectories of the '$VIM/farsi/fonts'
-directory:
-
-   +  far-a01.pcf    X Windows fonts for Unix including Linux systems
-   +  far-a01.bf     X Windows fonts for SunOS
-   +  far-a01.f16    a screen fonts for Unix including Linux systems
-   +  far-a01.fon    a monospaced fonts for Windows NT/95/98
-   +  far-a01.com    a screen fonts for DOS
-
-
-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
-   'far-a01.fon', then follow the installation guide.
-   NOTE: several people have reported that this does not work.  The solution
-   is unknown.
-
-o  Installation of fonts for X Window systems (Unix/Linux)
-
-   Depending on your system, copy far-a01.pcf.Z or far-a01.pcf.gz into a
-   directory of your choice.  Change to the directory containing the Farsi
-   fonts and execute the following commands:
-
-   >  mkfontdir
-   >  xset +fp path_name_of_farsi_fonts_directory
-
-o  Installation of fonts for X Window systems (SunOS)
-
-   Copy far-a01.bf font into a directory of your choice.
-   Change to the directory containing the far-a01.fb fonts and
-   execute the following commands:
-
-   >  fldfamily
-   >  xset +fp path_name_of_fonts_directory
-
-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
-   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
-   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,
-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
-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.
-
-      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 Vim with the
-      '-fn far-a01' option.
-
-   +  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
-      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.
-   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.
-
-   To turn off the Farsi keymapping as a default second language keymapping,
-   reset the 'altkeymap' by entering ':set noakm'.
-
-o  right-to-left Farsi Mode
-
-   By default Vim starts in Left-to-right mode.  Following are ways to change
-   the window orientation:
-
-   + Start Vim with the -F option (e.g. vim -F ...).
-
-   + 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 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.
-
-For document portability reasons, the letter encoding is kept the same across
-different platforms (i.e. UNIX's, NT/95/98, MS DOS, ...).
-
-
-o  Keyboard
-
-   +  CTRL-_ in insert/replace modes toggles between Farsi(akm)/Latin
-      mode as follows:
-
-   +  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.
-
-   +  F8 - Toggles between left-to-right and right-to-left.
-
-   +  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.
-      Following table shows the keyboard mapping while Farsi(akm) mode set:
-
-	-------------------------------------
-	`  1  2  3  4  5  6  7  8  9  0  -  =
-	¢  ±  ²  ³  ´  µ  ¶  ·  ¸  ¹  °  ­  ½
-	-------------------------------------
-	~  !  @  #  $  %  ^  &  *  (  )  _  +
-	~  £  §  ®  ¤  ¥  ª  ¬  è  ¨  ©  é  «
-	-------------------------------------
-	q  w  e  r  t  z  u  i  o  p  [  ]
-	Ó  Ò  Æ  Ù  Ø  Õ  Ö  à  Ê  É  Ç  ˆ
-	-------------------------------------
-	Q  W  E  R  T  Z  U  I  O  P  {  }
-	÷  õ  ô  ó  ò  ý  ð  ö  [  ]  {  }
-	-------------------------------------
-	a  s  d  f  g  h  j  k  l  ;  '  \
-	Ñ  Ð  á  Ã  Ü  Á  Å  Þ  Ý  Ú  Û  ë
-	-------------------------------------
-	A  S  D  F  G  H  J  K  L  :  "  |
-	ù  û  þ  ú  ø  À  ü  æ  ç  º  »  ê
-	-------------------------------------
-	<  y  x  c  v  b  n  m  ,  .  /
-	¾  ×  Ô  Î  Í  Ì  Ë  Ä  ß  ¦  ¯
-	-------------------------------------
-	>  Y  X  C  V  B  N  M  <  >  ?
-	¼  ñ  Ô  Ï  Í  ¡  Ë  Â  ¾  ¼  ¿
-	-------------------------------------
-
-Note:
-	¡  stands for Farsi PSP (break without space)
-
-	¢  stands for Farsi PCN (for HAMZE attribute )
-
-Restrictions
-------------
-
-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
-   '.') 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 cannot redo the last changes (using '.') after
-   entering numbers.
-
-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 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 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
-   have certain meanings in the standard xterm terminal emulator.
-
-   Note: Under X Window environment, Vim GUI works fine in Farsi mode.
-	 This eliminates the need of any xterm terminal emulator.
-
-
-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
-changes made in the current line.
-
-For more information about the bugs refer to rileft.txt.
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/filetype.txt b/share/vim/vim73/doc/filetype.txt
deleted file mode 100644
index c76adfc7..00000000
--- a/share/vim/vim73/doc/filetype.txt
+++ /dev/null
@@ -1,620 +0,0 @@
-*filetype.txt*  For Vim version 7.3.  Last change: 2008 Jul 15
-
-
-		  VIM REFERENCE MANUAL    by Bram Moolenaar
-
-
-Filetypes						*filetype* *file-type*
-
-1. Filetypes					|filetypes|
-2. Filetype plugin				|filetype-plugins|
-3. Docs for the default filetype plugins.	|ftplugin-docs|
-
-Also see |autocmd.txt|.
-
-{Vi does not have any of these commands}
-
-==============================================================================
-1. Filetypes					*filetypes* *file-types*
-
-Vim can detect the type of file that is edited.  This is done by checking the
-file name and sometimes by inspecting the contents of the file for specific
-text.
-
-							*:filetype* *:filet*
-To enable file type detection, use this command in your vimrc: >
-	:filetype on
-Each time a new or existing file is edited, Vim will try to recognize the type
-of the file and set the 'filetype' option.  This will trigger the FileType
-event, which can be used to set the syntax highlighting, set options, etc.
-
-NOTE: Filetypes and 'compatible' don't work together well, since being Vi
-compatible means options are global.  Resetting 'compatible' is recommended,
-if you didn't do that already.
-
-Detail: The ":filetype on" command will load one of these files:
-		Amiga	    $VIMRUNTIME/filetype.vim
-		Mac	    $VIMRUNTIME:filetype.vim
-		MS-DOS	    $VIMRUNTIME\filetype.vim
-		RiscOS	    Vim:Filetype
-		Unix	    $VIMRUNTIME/filetype.vim
-		VMS	    $VIMRUNTIME/filetype.vim
-	This file is a Vim script that defines autocommands for the
-	BufNewFile and BufRead events.  If the file type is not found by the
-	name, the file $VIMRUNTIME/scripts.vim is used to detect it from the
-	contents of the file.
-	When the GUI is running or will start soon, the menu.vim script is
-	also sourced.  See |'go-M'| about avoiding that.
-
-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 an IDL file use the command: >
-	: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
-If filetype detection was not switched on yet, it will be as well.
-This actually loads the file "ftplugin.vim" in 'runtimepath'.
-The result is that when a file is edited its plugin file is loaded (if there
-is one for the detected filetype). |filetype-plugin|
-
-						*:filetype-plugin-off*
-You can disable it again with: >
-	:filetype plugin off
-The filetype detection is not switched off then.  But if you do switch off
-filetype detection, the plugins will not be loaded either.
-This actually loads the file "ftplugof.vim" in 'runtimepath'.
-
-						*:filetype-indent-on*
-You can enable loading the indent file for specific file types with: >
-	:filetype indent on
-If filetype detection was not switched on yet, it will be as well.
-This actually loads the file "indent.vim" in 'runtimepath'.
-The result is that when a file is edited its indent file is loaded (if there
-is one for the detected filetype). |indent-expression|
-
-						*:filetype-indent-off*
-You can disable it again with: >
-	:filetype indent off
-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: >
-	:filetype off
-This will keep the flags for "plugin" and "indent", but since no file types
-are being detected, they won't work until the next ":filetype on".
-
-
-Overview:					*:filetype-overview*
-
-command				detection	plugin		indent ~
-:filetype on			on		unchanged	unchanged
-:filetype off			off		unchanged	unchanged
-:filetype plugin on		on		on		unchanged
-:filetype plugin off		unchanged	off		unchanged
-:filetype indent on		on		unchanged	on
-:filetype indent off		unchanged	unchanged	off
-:filetype plugin indent on	on		on		on
-:filetype plugin indent off	unchanged	off		off
-
-To see the current status, type: >
-	:filetype
-The output looks something like this: >
-	filetype detection:ON  plugin:ON  indent:OFF
-
-The file types are also used for syntax highlighting.  If the ":syntax on"
-command is used, the file type detection is installed too.  There is no need
-to do ":filetype on" after ":syntax on".
-
-To disable one of the file types, add a line in your filetype file, see
-|remove-filetype|.
-
-							*filetype-detect*
-To detect the file type again: >
-	:filetype detect
-Use this if you started with an empty file and typed text that makes it
-possible to detect the file type.  For example, when you entered this in a
-shell script: "#!/bin/csh".
-   When filetype detection was off, it will be enabled first, like the "on"
-argument was used.
-
-							*filetype-overrule*
-When the same extension is used for two filetypes, Vim tries to guess what
-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	|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	|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|
-	*.tex		g:tex_flavor	|ft-tex-plugin|
-
-							*filetype-ignore*
-To avoid that certain files are being inspected, the g:ft_ignore_pat variable
-is used.  The default value is set like this: >
-	:let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
-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 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.
-
-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: >
-	:!mkdir ~/.vim
-	:!mkdir ~/.vim/ftdetect
-<
-   2. Create a file that contains an autocommand to detect the file type.
-      Example: >
-	au BufRead,BufNewFile *.mine		set filetype=mine
-<     Note that there is no "augroup" command, this has already been done
-      when sourcing your file.  You could also use the pattern "*" and then
-      check the contents of the file to recognize it.
-      Write this file as "mine.vim" in the "ftdetect" directory in your user
-      runtime directory.  For example, for Unix: >
-	:w ~/.vim/ftdetect/mine.vim
-
-<  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.  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.
-
-   This works like A above, but instead of setting 'filetype' unconditionally
-   use ":setfiletype".  This will only set 'filetype' if no file type was
-   detected yet.  Example: >
-	au BufRead,BufNewFile *.txt		setfiletype text
-<
-   You can also use the already detected file type in your command.  For
-   example, to use the file type "mypascal" when "pascal" has been detected: >
-	au BufRead,BufNewFile *		if &ft == 'pascal' | set ft=mypascal
-								       | endif
-
-C. If your file type can be detected by the file name.
-   1. Create your user runtime directory.  You would normally use the first
-      item of the 'runtimepath' option.  Example for Unix: >
-	:!mkdir ~/.vim
-<
-   2. Create a file that contains autocommands to detect the file type.
-      Example: >
-	" my filetype file
-	if exists("did_load_filetypes")
-	  finish
-	endif
-	augroup filetypedetect
-	  au! BufRead,BufNewFile *.mine		setfiletype mine
-	  au! BufRead,BufNewFile *.xyz		setfiletype drawing
-	augroup END
-<     Write this file as "filetype.vim" in your user runtime directory.  For
-      example, for Unix: >
-	:w ~/.vim/filetype.vim
-
-<  3. To use the new filetype detection you must restart Vim.
-
-   Your filetype.vim will be sourced before the default FileType autocommands
-   have been installed.  Your autocommands will match first, and the
-   ":setfiletype" command will make sure that no other autocommands will set
-   'filetype' after this.
-							*new-filetype-scripts*
-D. If your filetype can only be detected by inspecting the contents of the
-   file.
-
-   1. Create your user runtime directory.  You would normally use the first
-      item of the 'runtimepath' option.  Example for Unix: >
-	:!mkdir ~/.vim
-<
-   2. Create a vim script file for doing this.  Example: >
-	if did_filetype()	" filetype already set..
-	  finish		" ..don't do these checks
-	endif
-	if getline(1) =~ '^#!.*\'
-	  setfiletype mine
-	elseif getline(1) =~? '\'
-	  setfiletype drawing
-	endif
-<     See $VIMRUNTIME/scripts.vim for more examples.
-      Write this file as "scripts.vim" in your user runtime directory.  For
-      example, for Unix: >
-	:w ~/.vim/scripts.vim
-<
-   3. The detection will work right away, no need to restart Vim.
-
-   Your scripts.vim is loaded before the default checks for file types, which
-   means that your rules override the default rules in
-   $VIMRUNTIME/scripts.vim.
-
-						*remove-filetype*
-If a file type is detected that is wrong for you, install a filetype.vim or
-scripts.vim to catch it (see above).  You can set 'filetype' to a non-existing
-name to avoid that it will be set later anyway: >
-	:set filetype=ignored
-
-If you are setting up a system with many users, and you don't want each user
-to add/remove the same filetypes, consider writing the filetype.vim and
-scripts.vim files in a runtime directory that is used for everybody.  Check
-the 'runtimepath' for a directory to use.  If there isn't one, set
-'runtimepath' in the |system-vimrc|.  Be careful to keep the default
-directories!
-
-
-						*autocmd-osfiletypes*
-On operating systems which support storing a file type with the file, you can
-specify that an autocommand should only be executed if the file is of a
-certain type.
-
-The actual type checking depends on which platform you are running Vim
-on; see your system's documentation for details.
-
-To use osfiletype checking in an autocommand you should put a list of types to
-match in angle brackets in place of a pattern, like this: >
-
-	:au BufRead *.html,<&faf;HTML>  runtime! syntax/html.vim
-
-This will match:
-
-- Any file whose name ends in ".html"
-- Any file whose type is "&faf" or "HTML", where the meaning of these types
-  depends on which version of Vim you are using.
-  Unknown types are considered NOT to match.
-
-You can also specify a type and a pattern at the same time (in which case they
-must both match): >
-
-	:au BufRead <&fff>diff*
-
-This will match files of type "&fff" whose names start with "diff".
-
-Note that osfiletype checking is skipped if Vim is compiled without the
-|+osfiletype| feature.
-
-							*plugin-details*
-The "plugin" directory can be in any of the directories in the 'runtimepath'
-option.  All of these directories will be searched for plugins and they are
-all loaded.  For example, if this command: >
-
-	set runtimepath
-
-produces this output:
-
-	runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 ~
-
-then Vim will load all plugins in these directories and below:
-
-	/etc/vim/plugin/  ~
-	~/.vim/plugin/  ~
-	/usr/local/share/vim/vim60/plugin/  ~
-
-Note that the last one is the value of $VIMRUNTIME which has been expanded.
-
-What if it looks like your plugin is not being loaded?  You can find out what
-happens when Vim starts up by using the |-V| argument: >
-
-	vim -V2
-
-You will see a lot of messages, in between them is a remark about loading the
-plugins.  It starts with:
-
-	Searching for "plugin/**/*.vim" in ~
-
-There you can see where Vim looks for your plugin scripts.
-
-==============================================================================
-2. Filetype plugin					*filetype-plugins*
-
-When loading filetype plugins has been enabled |:filetype-plugin-on|, options
-will be set and mappings defined.  These are all local to the buffer, they
-will not be used for other files.
-
-Defining mappings for a filetype may get in the way of the mappings you
-define yourself.  There are a few ways to avoid this:
-1. Set the "maplocalleader" variable to the key sequence you want the mappings
-   to start with.  Example: >
-	:let maplocalleader = ","
-<  All mappings will then start with a comma instead of the default, which
-   is a backslash.  Also see ||.
-
-2. Define your own mapping.  Example: >
-	:map ,p MailQuote
-<  You need to check the description of the plugin file below for the
-   functionality it offers and the string to map to.
-   You need to define your own mapping before the plugin is loaded (before
-   editing a file of that type).  The plugin will then skip installing the
-   default mapping.
-
-3. Disable defining mappings for a specific filetype by setting a variable,
-   which contains the name of the filetype.  For the "mail" filetype this
-   would be: >
-	:let no_mail_maps = 1
-
-4. Disable defining mappings for all filetypes by setting a variable: >
-	:let no_plugin_maps = 1
-<
-
-							*ftplugin-overrule*
-If a global filetype plugin does not do exactly what you want, there are three
-ways to change this:
-
-1. Add a few settings.
-   You must create a new filetype plugin in a directory early in
-   'runtimepath'.  For Unix, for example you could use this file: >
-	vim ~/.vim/ftplugin/fortran.vim
-<  You can set those settings and mappings that you would like to add.  Note
-   that the global plugin will be loaded after this, it may overrule the
-   settings that you do here.  If this is the case, you need to use one of the
-   following two methods.
-
-2. Make a copy of the plugin and change it.
-   You must put the copy in a directory early in 'runtimepath'.  For Unix, for
-   example, you could do this: >
-	cp $VIMRUNTIME/ftplugin/fortran.vim ~/.vim/ftplugin/fortran.vim
-<  Then you can edit the copied file to your liking.  Since the b:did_ftplugin
-   variable will be set, the global plugin will not be loaded.
-   A disadvantage of this method is that when the distributed plugin gets
-   improved, you will have to copy and modify it again.
-
-3. Overrule the settings after loading the global plugin.
-   You must create a new filetype plugin in a directory from the end of
-   'runtimepath'.  For Unix, for example, you could use this file: >
-	vim ~/.vim/after/ftplugin/fortran.vim
-<  In this file you can change just those settings that you want to change.
-
-==============================================================================
-3.  Docs for the default filetype plugins.		*ftplugin-docs*
-
-
-CHANGELOG						*ft-changelog-plugin*
-
-Allows for easy entrance of Changelog entries in Changelog files.  There are
-some commands, mappings, and variables worth exploring:
-
-Options:
-'comments'		is made empty to not mess up formatting.
-'textwidth'		is set to 78, which is standard.
-'formatoptions'		the 't' flag is added to wrap when inserting text.
-
-Commands:
-NewChangelogEntry	Adds a new Changelog entry in an intelligent fashion
-			(see below).
-
-Local mappings:
-o		Starts a new Changelog entry in an equally intelligent
-			fashion (see below).
-
-Global mappings:
-			NOTE: The global mappings are accessed by sourcing the
-			ftplugin/changelog.vim file first, e.g. with >
-				runtime ftplugin/changelog.vim
-<			in your |.vimrc|.
-o		Switches to the ChangeLog buffer opened for the
-			current directory, or opens it in a new buffer if it
-			exists in the current directory.  Then it does the
-			same as the local o described above.
-
-Variables:
-g:changelog_timeformat  Deprecated; use g:changelog_dateformat instead.
-g:changelog_dateformat	The date (and time) format used in ChangeLog entries.
-			The format accepted is the same as for the
-			|strftime()| function.
-			The default is "%Y-%m-%d" which is the standard format
-			for many ChangeLog layouts.
-g:changelog_username	The name and email address of the user.
-			The default is deduced from environment variables and
-			system files.  It searches /etc/passwd for the comment
-			part of the current user, which informally contains
-			the real name of the user up to the first separating
-			comma.  then it checks the $NAME environment variable
-			and finally runs `whoami` and `hostname` to build an
-			email address.  The final form is >
-				Full Name  
-<
-g:changelog_new_date_format
-			The format to use when creating a new date-entry.
-			The following table describes special tokens in the
-			string:
-				%%	insert a single '%' character
-				%d	insert the date from above
-				%u	insert the user from above
-				%c	where to position cursor when done
-			The default is "%d  %u\n\n\t* %c\n\n", which produces
-			something like (| is where cursor will be, unless at
-			the start of the line where it denotes the beginning
-			of the line) >
-				|2003-01-14  Full Name  
-				|
-				|        * |
-<
-g:changelog_new_entry_format
-			The format used when creating a new entry.
-			The following table describes special tokens in the
-			string:
-				%c	where to position cursor when done
-			The default is "\t*%c", which produces something
-			similar to >
-				|        * |
-<
-g:changelog_date_entry_search
-			The search pattern to use when searching for a
-			date-entry.
-			The same tokens that can be used for
-			g:changelog_new_date_format can be used here as well.
-			The default is '^\s*%d\_s*%u' which finds lines
-			matching the form >
-				|2003-01-14  Full Name  
-<			and some similar formats.
-
-g:changelog_date_end_entry_search
-			The search pattern to use when searching for the end
-			of a date-entry.
-			The same tokens that can be used for
-			g:changelog_new_date_format can be used here as well.
-			The default is '^\s*$' which finds lines that contain
-			only whitespace or are completely empty.
-
-b:changelog_name					*b:changelog_name*
-			Name of the ChangeLog file to look for.
-			The default is 'ChangeLog'.
-
-b:changelog_path
-			Path of the ChangeLog to use for the current buffer.
-			The default is empty, thus looking for a file named
-			|b:changelog_name| in the same directory as the
-			current buffer.  If not found, the parent directory of
-			the current buffer is searched.  This continues
-			recursively until a file is found or there are no more
-			parent directories to search.
-
-b:changelog_entry_prefix
-			Name of a function to call to generate a prefix to a
-			new entry.  This function takes no arguments and
-			should return a string containing the prefix.
-			Returning an empty prefix is fine.
-			The default generates the shortest path between the
-			ChangeLog's pathname and the current buffers pathname.
-			In the future, it will also be possible to use other
-			variable contexts for this variable, for example, g:.
-
-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
-the Changelog.
-
-
-FORTRAN							*ft-fortran-plugin*
-
-Options:
-'expandtab'	is switched on to avoid tabs as required by the Fortran
-		standards unless the user has set fortran_have_tabs in .vimrc.
-'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|.
-For further discussion of fortran_have_tabs and the method used for the
-detection of source format see |ft-fortran-syntax|.
-
-
-GIT COMMIT                                              *ft-gitcommit-plugin*
-
-One command, :DiffGitCached, is provided to show a diff of the current commit
-in the preview window.  It is equivalent to calling "git diff --cached" plus
-any arguments given to the command.
-
-
-MAIL							*ft-mail-plugin*
-
-Options:
-'modeline'	is switched off to avoid the danger of trojan horses, and to
-		avoid that a Subject line with "Vim:" in it will cause an
-		error message.
-'textwidth'	is set to 72.  This is often recommended for e-mail.
-'formatoptions'  is set to break text lines and to repeat the comment leader
-		in new lines, so that a leading ">" for quotes is repeated.
-		You can also format quoted text with |gq|.
-
-Local mappings:
-q   or   \\MailQuote
-	Quotes the text selected in Visual mode, or from the cursor position
-	to the end of the file in Normal mode.  This means "> " is inserted in
-	each line.
-
-MAN							*ft-man-plugin* *:Man*
-
-Displays a manual page in a nice way.  Also see the user manual
-|find-manpage|.
-
-To start using the ":Man" command before any manual page was loaded, source
-this script from your startup vimrc file: >
-
-	runtime ftplugin/man.vim
-
-Options:
-'iskeyword'	the '.' character is added to be able to use CTRL-] on the
-		manual page name.
-
-Commands:
-Man {name}	Display the manual page for {name} in a window.
-Man {number} {name}
-		Display the manual page for {name} in a section {number}.
-
-Global mapping:
-K	Displays the manual page for the word under the cursor.
-
-Local mappings:
-CTRL-]		Jump to the manual page for the word under the cursor.
-CTRL-T		Jump back to the previous manual page.
-
-
-PDF							*ft-pdf-plugin*
-
-Two maps,  and , are provided to simulate a tag stack for navigating
-the PDF.  The following are treated as tags:
-
-- The byte offset after "startxref" to the xref table
-- The byte offset after the /Prev key in the trailer to an earlier xref table
-- A line of the form "0123456789 00000 n" in the xref table
-- An object reference like "1 0 R" anywhere in the PDF
-
-These maps can be disabled with >
-	:let g:no_pdf_maps = 1
-<
-
-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|.
-
-
-SQL							*ft-sql*
-
-Since the text for this plugin is rather long it has been put in a separate
-file: |ft_sql.txt|.
-
-
-TEX							*ft-tex-plugin*
-
-If the first line of a *.tex file has the form >
-	%&
-then this determined the file type:  plaintex (for plain TeX), context (for
-ConTeXt), or tex (for LaTeX).  Otherwise, the file is searched for keywords to
-choose context or tex.  If no keywords are found, it defaults to plaintex.
-You can change the default by defining the variable g:tex_flavor to the format
-(not the file type) you use most.  Use one of these: >
-	let g:tex_flavor = "plain"
-	let g:tex_flavor = "context"
-	let g:tex_flavor = "latex"
-Currently no other formats are recognized.
-
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/fold.txt b/share/vim/vim73/doc/fold.txt
deleted file mode 100644
index 24a8dcb6..00000000
--- a/share/vim/vim73/doc/fold.txt
+++ /dev/null
@@ -1,590 +0,0 @@
-*fold.txt*      For Vim version 7.3.  Last change: 2010 May 13
-
-
-		  VIM REFERENCE MANUAL    by Bram Moolenaar
-
-
-Folding						*Folding* *folding* *folds*
-
-You can find an introduction on folding in chapter 28 of the user manual.
-|usr_28.txt|
-
-1. Fold methods		|fold-methods|
-2. Fold commands	|fold-commands|
-3. Fold options		|fold-options|
-4. Behavior of folds	|fold-behavior|
-
-{Vi has no Folding}
-{not available when compiled without the |+folding| feature}
-
-==============================================================================
-1. Fold methods					*fold-methods*
-
-The folding method can be set with the 'foldmethod' option.
-
-When setting 'foldmethod' to a value other than "manual", all folds are
-deleted and new ones created.  Switching to the "manual" method doesn't remove
-the existing folds.  This can be used to first define the folds automatically
-and then change them manually.
-
-There are six methods to select folds:
-	manual		manually define folds
-	indent		more indent means a higher fold level
-	expr		specify an expression to define folds
-	syntax		folds defined by syntax highlighting
-	diff		folds for unchanged text
-	marker		folds defined by markers in the text
-
-
-MANUAL						*fold-manual*
-
-Use commands to manually define the fold regions.  This can also be used by a
-script that parses text to find folds.
-
-The level of a fold is only defined by its nesting.  To increase the fold
-level of a fold for a range of lines, define a fold inside it that has the
-same lines.
-
-The manual folds are lost when you abandon the file.  To save the folds use
-the |:mkview| command.  The view can be restored later with |:loadview|.
-
-
-INDENT						*fold-indent*
-
-The folds are automatically defined by the indent of the lines.
-
-The foldlevel is computed from the indent of the line, divided by the
-'shiftwidth' (rounded down).  A sequence of lines with the same or higher fold
-level form a fold, with the lines with a higher level forming a nested fold.
-
-The nesting of folds is limited with 'foldnestmax'.
-
-Some lines are ignored and get the fold level of the line above or below it,
-whatever is the lowest.  These are empty or white lines and lines starting
-with a character in 'foldignore'.  White space is skipped before checking for
-characters in 'foldignore'.  For C use "#" to ignore preprocessor lines.
-
-When you want to ignore lines in another way, use the 'expr' method.  The
-|indent()| function can be used in 'foldexpr' to get the indent of a line.
-
-
-EXPR						*fold-expr*
-
-The folds are automatically defined by their foldlevel, like with the "indent"
-method.  The value of the 'foldexpr' option is evaluated to get the foldlevel
-of a line.  Examples:
-This will create a fold for all consecutive lines that start with a tab: >
-	:set foldexpr=getline(v:lnum)[0]==\"\\t\"
-This will call a function to compute the fold level: >
-	:set foldexpr=MyFoldLevel(v:lnum)
-This will make a fold out of paragraphs separated by blank lines: >
-	:set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1
-this does the same: >
-	:set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1
-
-Note that backslashes must be used to escape characters that ":set" handles
-differently (space, backslash, double quote, etc., see |option-backslash|).
-
-These are the conditions with which the expression is evaluated:
-- The current buffer and window are set for the line.
-- The variable "v:lnum" is set to the line number.
-- The result is used for the fold level in this way:
-  value			meaning ~
-  0			the line is not in a fold
-  1, 2, ..		the line is in a fold with this level
-  -1			the fold level is undefined, use the fold level of a
-			line before or after this line, whichever is the
-			lowest.
-  "="			use fold level from the previous line
-  "a1", "a2", ..	add one, two, .. to the fold level of the previous
-			line
-  "s1", "s2", ..	subtract one, two, .. from the fold level of the
-			previous line
-  "<1", "<2", ..	a fold with this level ends at this line
-  ">1", ">2", ..	a fold with this level starts at this line
-
-It is not required to mark the start (end) of a fold with ">1" ("<1"), a fold
-will also start (end) when the fold level is higher (lower) than the fold
-level of the previous line.
-
-There must be no side effects from the expression.  The text in the buffer,
-cursor position, the search patterns, options etc. must not be changed.
-You can change and restore them if you are careful.
-
-If there is some error in the expression, or the resulting value isn't
-recognized, there is no error message and the fold level will be zero.
-For debugging the 'debug' option can be set to "msg", the error messages will
-be visible then.
-
-Note: Since the expression has to be evaluated for every line, this fold
-method can be very slow!
-
-Try to avoid the "=", "a" and "s" return values, since Vim often has to search
-backwards for a line for which the fold level is defined.  This can be slow.
-
-|foldlevel()| can be useful to compute a fold level relative to a previous
-fold level.  But note that foldlevel() may return -1 if the level is not known
-yet.  And it returns the level at the start of the line, while a fold might
-end in that line.
-
-It may happened that folds are not updated properly.  You can use |zx| or |zX|
-to force updating folds.
-
-
-SYNTAX						*fold-syntax*
-
-A fold is defined by syntax items that have the "fold" argument. |:syn-fold|
-
-The fold level is defined by nesting folds.  The nesting of folds is limited
-with 'foldnestmax'.
-
-Be careful to specify proper syntax syncing.  If this is not done right, folds
-may differ from the displayed highlighting.  This is especially relevant when
-using patterns that match more than one line.  In case of doubt, try using
-brute-force syncing: >
-	:syn sync fromstart
-
-
-DIFF						*fold-diff*
-
-The folds are automatically defined for text that is not part of a change or
-close to a change.
-
-This method only works properly when the 'diff' option is set for the current
-window and changes are being displayed.  Otherwise the whole buffer will be
-one big fold.
-
-The 'diffopt' option can be used to specify the context.  That is, the number
-of lines between the fold and a change that are not included in the fold.  For
-example, to use a context of 8 lines: >
-	:set diffopt=filler,context:8
-The default context is six lines.
-
-When 'scrollbind' is also set, Vim will attempt to keep the same folds open in
-other diff windows, so that the same text is visible.
-
-
-MARKER						*fold-marker*
-
-Markers in the text tell where folds start and end.  This allows you to
-precisely specify the folds.  This will allow deleting and putting a fold,
-without the risk of including the wrong lines.  The 'foldtext' option is
-normally set such that the text before the marker shows up in the folded line.
-This makes it possible to give a name to the fold.
-
-Markers can have a level included, or can use matching pairs.  Including a
-level is easier, you don't have to add end markers and avoid problems with
-non-matching marker pairs.  Example: >
-	/* global variables {{{1 */
-	int varA, varB;
-
-	/* functions {{{1 */
-	/* funcA() {{{2 */
-	void funcA() {}
-
-	/* funcB() {{{2 */
-	void funcB() {}
-
-A fold starts at a "{{{" marker.  The following number specifies the fold
-level.  What happens depends on the difference between the current fold level
-and the level given by the marker:
-1. If a marker with the same fold level is encountered, the previous fold
-   ends and another fold with the same level starts.
-2. If a marker with a higher fold level is found, a nested fold is started.
-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 (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
-	{{{3
-	fold level here is 3
-	}}}3
-	fold level here is 2
-
-You can also use matching pairs of "{{{" and "}}}" markers to define folds.
-Each "{{{" increases the fold level by one, each "}}}" decreases the fold
-level by one.  Be careful to keep the markers matching!  Example: >
-
-	{{{
-	fold level here is 1
-	{{{
-	fold level here is 2
-	}}}
-	fold level here is 1
-
-You can mix using markers with a number and without a number.  A useful way of
-doing this is to use numbered markers for large folds, and unnumbered markers
-locally in a function.  For example use level one folds for the sections of
-your file like "structure definitions", "local variables" and "functions".
-Use level 2 markers for each definition and function,  Use unnumbered markers
-inside functions.  When you make changes in a function to split up folds, you
-don't have to renumber the markers.
-
-The markers can be set with the 'foldmarker' option.  It is recommended to
-keep this at the default value of "{{{,}}}", so that files can be exchanged
-between Vim users.  Only change it when it is required for the file (e.g., it
-contains markers from another folding editor, or the default markers cause
-trouble for the language of the file).
-
-							*fold-create-marker*
-"zf" can be used to create a fold defined by markers.  Vim will insert the
-markers for you.  Vim will append the start and end marker, as specified with
-'foldmarker'.  The markers are appended to the end of the line.
-'commentstring' is used if it isn't empty.
-This does not work properly when:
-- The line already contains a marker with a level number.  Vim then doesn't
-  know what to do.
-- Folds nearby use a level number in their marker which gets in the way.
-- The line is inside a comment, 'commentstring' isn't empty and nested
-  comments don't work.  For example with C: adding /* {{{ */ inside a comment
-  will truncate the existing comment.  Either put the marker before or after
-  the comment, or add the marker manually.
-Generally it's not a good idea to let Vim create markers when you already have
-markers with a level number.
-
-							*fold-delete-marker*
-"zd" can be used to delete a fold defined by markers.  Vim will delete the
-markers for you.  Vim will search for the start and end markers, as specified
-with 'foldmarker', at the start and end of the fold.  When the text around the
-marker matches with 'commentstring', that text is deleted as well.
-This does not work properly when:
-- A line contains more than one marker and one of them specifies a level.
-  Only the first one is removed, without checking if this will have the
-  desired effect of deleting the fold.
-- The marker contains a level number and is used to start or end several folds
-  at the same time.
-
-==============================================================================
-2. Fold commands				*fold-commands* *E490*
-
-All folding commands start with "z".  Hint: the "z" looks like a folded piece
-of paper, if you look at it from the side.
-
-
-CREATING AND DELETING FOLDS ~
-							*zf* *E350*
-zf{motion}  or
-{Visual}zf	Operator to create a fold.
-		This only works when 'foldmethod' is "manual" or "marker".
-		The new fold will be closed for the "manual" method.
-		'foldenable' will be set.
-		Also see |fold-create-marker|.
-
-							*zF*
-zF		Create a fold for [count] lines.  Works like "zf".
-
-:{range}fo[ld]						*:fold* *:fo*
-		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 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
-		expect and there is no undo.
-		This only works when 'foldmethod' is "manual" or "marker".
-		Also see |fold-delete-marker|.
-
-							*zD*
-zD		Delete folds recursively at the cursor.  In Visual mode all
-		folds (partially) in the selected area and all nested folds in
-		them are deleted.
-		This only works when 'foldmethod' is "manual" or "marker".
-		Also see |fold-delete-marker|.
-
-							*zE* *E352*
-zE		Eliminate all folds in the window.
-		This only works when 'foldmethod' is "manual" or "marker".
-		Also see |fold-delete-marker|.
-
-
-OPENING AND CLOSING FOLDS ~
-
-A fold smaller than 'foldminlines' will always be displayed like it was open.
-Therefore the commands below may work differently on small folds.
-
-							*zo*
-zo		Open one fold under the cursor.  When a count is given, that
-		many folds deep will be opened.  In Visual mode one level of
-		folds is opened for all lines in the selected area.
-
-							*zO*
-zO		Open all folds under the cursor recursively.  Folds that don't
-		contain the cursor line are unchanged.
-		In Visual mode it opens all folds that are in the selected
-		area, also those that are only partly selected.
-
-							*zc*
-zc		Close one fold under the cursor.  When a count is given, that
-		many folds deep are closed.  In Visual mode one level of folds
-		is closed for all lines in the selected area.
-		'foldenable' will be set.
-
-							*zC*
-zC		Close all folds under the cursor recursively.  Folds that
-		don't contain the cursor line are unchanged.
-		In Visual mode it closes all folds that are in the selected
-		area, also those that are only partly selected.
-		'foldenable' will be set.
-
-							*za*
-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
-		will only close one level, since using "za" again will open
-		the fold.  When a count is given that many folds will be
-		closed (that's not the same as repeating "za" that many
-		times).
-
-							*zA*
-zA		When on a closed fold: open it recursively.
-		When on an open fold: close it recursively and set
-		'foldenable'.
-
-							*zv*
-zv		View cursor line: Open just enough folds to make the line in
-		which the cursor is located not folded.
-
-							*zx*
-zx		Update folds: Undo manually opened and closed folds: re-apply
-		'foldlevel', then do "zv": View cursor line.
-		Also forces recomputing folds.  This is useful when using
-		'foldexpr' and the buffer is changed in a way that results in
-		folds not to be updated properly.
-
-							*zX*
-zX		Undo manually opened and closed folds: re-apply 'foldlevel'.
-		Also forces recomputing folds, like |zx|.
-
-							*zm*
-zm		Fold more: Subtract one from 'foldlevel'.  If 'foldlevel' was
-		already zero nothing happens.
-		'foldenable' will be set.
-
-							*zM*
-zM		Close all folds: set 'foldlevel' to 0.
-		'foldenable' will be set.
-
-							*zr*
-zr		Reduce folding: Add one to 'foldlevel'.
-
-							*zR*
-zR		Open all folds.  This sets 'foldlevel' to highest fold level.
-
-							*:foldo* *:foldopen*
-:{range}foldo[pen][!]
-		Open folds in {range}.  When [!] is added all folds are
-		opened.  Useful to see all the text in {range}.  Without [!]
-		one level of folds is opened.
-
-							*:foldc* *:foldclose*
-:{range}foldc[lose][!]
-		Close folds in {range}.  When [!] is added all folds are
-		closed.  Useful to hide all the text in {range}.  Without [!]
-		one level of folds is closed.
-
-							*zn*
-zn		Fold none: reset 'foldenable'.  All folds will be open.
-
-							*zN*
-zN		Fold normal: set 'foldenable'.  All folds will be as they
-		were before.
-
-							*zi*
-zi		Invert 'foldenable'.
-
-
-MOVING OVER FOLDS ~
-							*[z*
-[z		Move to the start of the current open fold.  If already at the
-		start, move to the start of the fold that contains it.  If
-		there is no containing fold, the command fails.
-		When a count is used, repeats the command [count] times.
-
-							*]z*
-]z		Move to the end of the current open fold.  If already at the
-		end, move to the end of the fold that contains it.  If there
-		is no containing fold, the command fails.
-		When a count is used, repeats the command [count] times.
-
-							*zj*
-zj		Move downwards to the start of the next fold.  A closed fold
-		is counted as one fold.
-		When a count is used, repeats the command [count] times.
-		This command can be used after an |operator|.
-
-							*zk*
-zk		Move upwards to the end of the previous fold.  A closed fold
-		is counted as one fold.
-		When a count is used, repeats the command [count] times.
-		This command can be used after an |operator|.
-
-
-EXECUTING COMMANDS ON FOLDS ~
-
-:[range]foldd[oopen] {cmd}			*:foldd* *:folddoopen*
-		Execute {cmd} on all lines that are not in a closed fold.
-		When [range] is given, only these lines are used.
-		Each time {cmd} is executed the cursor is positioned on the
-		line it is executed for.
-		This works like the ":global" command: First all lines that
-		are not in a closed fold are marked.  Then the {cmd} is
-		executed for all marked lines.  Thus when {cmd} changes the
-		folds, this has no influence on where it is executed (except
-		when lines are deleted, of course).
-		Example: >
-			:folddoopen s/end/loop_end/ge
-<		Note the use of the "e" flag to avoid getting an error message
-		where "end" doesn't match.
-
-:[range]folddoc[losed] {cmd}			*:folddoc* *:folddoclosed*
-		Execute {cmd} on all lines that are in a closed fold.
-		Otherwise like ":folddoopen".
-
-==============================================================================
-3. Fold options					*fold-options*
-
-COLORS							*fold-colors*
-
-The colors of a closed fold are set with the Folded group |hl-Folded|.  The
-colors of the fold column are set with the FoldColumn group |hl-FoldColumn|.
-Example to set the colors: >
-
-	:highlight Folded guibg=grey guifg=blue
-	:highlight FoldColumn guibg=darkgrey guifg=white
-
-
-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 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.
-When increased, folds above the new level are opened.  No manually opened
-folds will be closed.
-When decreased, folds above the new level are closed.  No manually closed
-folds will be opened.
-
-
-FOLDTEXT						*fold-foldtext*
-
-'foldtext' is a string option that specifies an expression.  This expression
-is evaluated to obtain the text displayed for a closed fold.  Example: >
-
-    :set foldtext=v:folddashes.substitute(getline(v:foldstart),'/\\*\\\|\\*/\\\|{{{\\d\\=','','g')
-
-This shows the first line of the fold, with "/*", "*/" and "{{{" removed.
-Note the use of backslashes to avoid some characters to be interpreted by the
-":set" command.  It's simpler to define a function and call that: >
-
-    :set foldtext=MyFoldText()
-    :function MyFoldText()
-    :  let line = getline(v:foldstart)
-    :  let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g')
-    :  return v:folddashes . sub
-    :endfunction
-
-Evaluating 'foldtext' is done in the |sandbox|.  The current window is set to
-the window that displays the line.  Errors are ignored.
-
-The default value is |foldtext()|.  This returns a reasonable text for most
-types of folding.  If you don't like it, you can specify your own 'foldtext'
-expression.  It can use these special Vim variables:
-	v:foldstart	line number of first line in the fold
-	v:foldend	line number of last line in the fold
-	v:folddashes	a string that contains dashes to represent the
-			foldlevel.
-	v:foldlevel	the foldlevel of the fold
-
-In the result a TAB is replaced with a space and unprintable characters are
-made into printable characters.
-
-The resulting line is truncated to fit in the window, it never wraps.
-When there is room after the text, it is filled with the character specified
-by 'fillchars'.
-
-Note that backslashes need to be used for characters that the ":set" command
-handles differently: Space, backslash and double-quote. |option-backslash|
-
-
-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, 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
-nest, the nested fold is one character right of the fold it's contained in.
-
-A closed fold is indicated with a '+'.
-
-Where the fold column is too narrow to display all nested folds, digits are
-shown to indicate the nesting level.
-
-The mouse can also be used to open and close folds by clicking in the
-fold column:
-- Click on a '+' to open the closed fold at this row.
-- Click on any other non-blank character to close the open fold at this row.
-
-
-OTHER OPTIONS
-
-'foldenable'  'fen':	Open all folds while not set.
-'foldexpr'    'fde':	Expression used for "expr" folding.
-'foldignore'  'fdi':	Characters used for "indent" folding.
-'foldmarker'  'fmr':	Defined markers used for "marker" folding.
-'foldmethod'  'fdm':	Name of the current folding method.
-'foldminlines' 'fml':	Minimum number of screen lines for a fold to be
-			displayed closed.
-'foldnestmax' 'fdn':	Maximum nesting for "indent" and "syntax" folding.
-'foldopen'    'fdo':	Which kinds of commands open closed folds.
-'foldclose'   'fcl':	When the folds not under the cursor are closed.
-
-==============================================================================
-4. Behavior of folds					*fold-behavior*
-
-When moving the cursor upwards or downwards and when scrolling, the cursor
-will move to the first line of a sequence of folded lines.  When the cursor is
-already on a folded line, it moves to the next unfolded line or the next
-closed fold.
-
-While the cursor is on folded lines, the cursor is always displayed in the
-first column.  The ruler does show the actual cursor position, but since the
-line is folded, it cannot be displayed there.
-
-Many movement commands handle a sequence of folded lines like an empty line.
-For example, the "w" command stops once in the first column.
-
-When in Insert mode, the cursor line is never folded.  That allows you to see
-what you type!
-
-When using an operator, a closed fold is included as a whole.  Thus "dl"
-deletes the whole closed fold under the cursor.
-
-For Ex commands the range is adjusted to always start at the first line of a
-closed fold and end at the last line of a closed fold.  Thus this command: >
-	:s/foo/bar/g
-when used with the cursor on a closed fold, will replace "foo" with "bar" in
-all lines of the fold.
-This does not happen for |:folddoopen| and |:folddoclosed|.
-
-When editing a buffer that has been edited before, the last used folding
-settings are used again.  For manual folding the defined folds are restored.
-For all folding methods the manually opened and closed folds are restored.
-If this buffer has been edited in this window, the values from back then are
-used.  Otherwise the values from the window where the buffer was edited last
-are used.
-
-==============================================================================
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/ft_ada.txt b/share/vim/vim73/doc/ft_ada.txt
deleted file mode 100644
index 54c6b3f5..00000000
--- a/share/vim/vim73/doc/ft_ada.txt
+++ /dev/null
@@ -1,515 +0,0 @@
-*ft_ada.txt*	For Vim version 7.3.  Last change: 2010 Jul 20
-
-
-		    ADA FILE TYPE PLUG-INS REFERENCE MANUAL~
-
-ADA								      *ada.vim*
-
-1.  Syntax Highlighting			    |ft-ada-syntax|
-2.  Plug-in				    |ft-ada-plugin|
-3.  Omni Completion			    |ft-ada-omni|
-    3.1 Omni Completion with "gnat xref"	|gnat-xref|
-    3.2 Omni Completion with "ctags"		|ada-ctags|
-4.  Compiler Support			    |ada-compiler|
-    4.1 GNAT					|compiler-gnat|
-    4.1 Dec Ada					|compiler-decada|
-5.  References				    |ada-reference|
-    5.1 Options					|ft-ada-options|
-    5.2 Functions				|ft-ada-functions|
-    5.3 Commands				|ft-ada-commands|
-    5.4 Variables				|ft-ada-variables|
-    5.5 Constants				|ft-ada-constants|
-8.  Extra Plug-ins			    |ada-extra-plugins|
-
-==============================================================================
-1. Syntax Highlighting ~
-							       *ft-ada-syntax*
-
-This mode is designed for the 2005 edition of Ada ("Ada 2005"), which includes
-support for objected-programming, protected types, and so on.  It handles code
-written for the original Ada language ("Ada83", "Ada87", "Ada95") as well,
-though code which uses Ada 2005-only keywords will be wrongly colored (such
-code should be fixed anyway).  For more information about Ada, see
-http://www.adapower.com.
-
-The Ada mode handles a number of situations cleanly.
-
-For example, it knows that the "-" in "-5" is a number, but the same character
-in "A-5" is an operator.  Normally, a "with" or "use" clause referencing
-another compilation unit is coloured the same way as C's "#include" is coloured.
-If you have "Conditional" or "Repeat" groups coloured differently, then "end
-if" and "end loop" will be coloured as part of those respective groups.
-
-You can set these to different colours using vim's "highlight" command (e.g.,
-to change how loops are displayed, enter the command ":hi Repeat" followed by
-the colour specification; on simple terminals the colour specification
-ctermfg=White often shows well).
-
-There are several options you can select in this Ada mode. See |ft-ada-options|
-for a complete list.
-
-To enable them, assign a value to the option.  For example, to turn one on:
- >
-    > let g:ada_standard_types = 1
->
-To disable them use ":unlet".  Example:
->
-    > unlet g:ada_standard_types
-
-You can just use ":" and type these into the command line to set these
-temporarily before loading an Ada file.  You can make these option settings
-permanent by adding the "let" command(s), without a colon, to your "~/.vimrc"
-file.
-
-Even on a slow (90Mhz) PC this mode works quickly, but if you find the
-performance unacceptable, turn on |g:ada_withuse_ordinary|.
-
-Syntax folding instructions (|fold-syntax|) are added when |g:ada_folding| is
-set.
-
-==============================================================================
-2. File type Plug-in ~
-					       *ft-ada-indent* *ft-ada-plugin*
-
-The Ada plug-in provides support for:
-
- - auto indenting	(|indent.txt|)
- - insert completion	(|i_CTRL-N|)
- - user completion	(|i_CTRL-X_CTRL-U|)
- - tag searches		(|tagsrch.txt|)
- - Quick Fix		(|quickfix.txt|)
- - backspace handling	(|'backspace'|)
- - comment handling	(|'comments'|, |'commentstring'|)
-
-The plug-in only activates the features of the Ada mode whenever an Ada
-file is opened and adds Ada related entries to the main and pop-up menu.
-
-==============================================================================
-3. Omni Completion ~
-								 *ft-ada-omni*
-
-The Ada omni-completions (|i_CTRL-X_CTRL-O|) uses tags database created either
-by "gnat xref -v" or the "exuberant Ctags (http://ctags.sourceforge.net).  The
-complete function will automatically detect which tool was used to create the
-tags file.
-
-------------------------------------------------------------------------------
-3.1 Omni Completion with "gnat xref" ~
-								   *gnat-xref*
-
-GNAT XREF uses the compiler internal information (ali-files) to produce the
-tags file. This has the advantage to be 100% correct and the option of deep
-nested analysis. However the code must compile, the generator is quite
-slow and the created tags file contains only the basic Ctags information for
-each entry - not enough for some of the more advanced Vim code browser
-plug-ins.
-
-NOTE: "gnat xref -v" is very tricky to use as it has almost no diagnostic
-       output - If nothing is printed then usually the parameters are wrong.
-       Here some important tips:
-
-1)  You need to compile your code first and use the "-aO" option to point to
-    your .ali files.
-2)  "gnat xref -v ../Include/adacl.ads" won't work - use  the "gnat xref -v
-    -aI../Include adacl.ads" instead.
-3)  "gnat xref -v -aI../Include *.ad?" won't work - use "cd ../Include" and
-    then "gnat xref -v *.ad?"
-4)  Project manager support is completely broken - don't even try "gnat xref
-    -Padacl.gpr".
-5)  VIM is faster when the tags file is sorted - use "sort --unique
-    --ignore-case --output=tags tags" .
-6)  Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark
-    the file assorted.
-
-------------------------------------------------------------------------------
-3.2 Omni Completion with "ctags"~
-								   *ada-ctags*
-
-Exuberant Ctags uses its own multi-language code parser. The parser is quite
-fast, produces a lot of extra information (hence the name "Exuberant Ctags")
-and can run on files which currently do not compile.
-
-There are also lots of other Vim-tools which use exuberant Ctags.
-
-You will need to install a version of the Exuberant Ctags which has Ada
-support patched in. Such a version is available from the GNU Ada Project
-(http://gnuada.sourceforge.net).
-
-The Ada parser for Exuberant Ctags is fairly new - don't expect complete
-support yet.
-
-==============================================================================
-4.  Compiler Support ~
-								*ada-compiler*
-
-The Ada mode supports more than one Ada compiler and will automatically load the
-compiler set in |g:ada_default_compiler| whenever an Ada source is opened. The
-provided compiler plug-ins are split into the actual compiler plug-in and a
-collection of support functions and variables. This allows the easy
-development of specialized compiler plug-ins fine tuned to your development
-environment.
-
-------------------------------------------------------------------------------
-4.1 GNAT ~
-							       *compiler-gnat*
-
-GNAT is the only free (beer and speech) Ada compiler available. There are
-several versions available which differ in the licence terms used.
-
-The GNAT compiler plug-in will perform a compile on pressing  and then
-immediately shows the result. You can set the project file to be used by
-setting:
- >
- > call g:gnat.Set_Project_File ('my_project.gpr')
-
-Setting a project file will also create a Vim session (|views-sessions|) so -
-like with the GPS - opened files, window positions etc. will be remembered
-separately for all projects.
-
-								*gnat_members*
-GNAT OBJECT ~
-
-							       *g:gnat.Make()*
-g:gnat.Make()
-		Calls |g:gnat.Make_Command| and displays the result inside a
-               |quickfix| window.
-
-							     *g:gnat.Pretty()*
-g:gnat.Pretty()
-		Calls |g:gnat.Pretty_Program|
-
-							       *g:gnat.Find()*
-g:gnat.Find()
-		Calls |g:gnat.Find_Program|
-
-							       *g:gnat.Tags()*
-g:gnat.Tags()
-		Calls |g:gnat.Tags_Command|
-
-						   *g:gnat.Set_Project_File()*
-g:gnat.Set_Project_File([{file}])
-		Set gnat project file and load associated session.  An open
-		project will be closed and the session written.  If called
-		without file name the file selector opens for selection of a
-		project file. If called with an empty string then the project
-		and associated session are closed.
-
-							 *g:gnat.Project_File*
-g:gnat.Project_File	string
-		Current project file.
-
-							 *g:gnat.Make_Command*
-g:gnat.Make_Command	string
-		External command used for |g:gnat.Make()| (|'makeprg'|).
-
-						       *g:gnat.Pretty_Program*
-g:gnat.Pretty_Program	string
-		External command used for |g:gnat.Pretty()|
-
-							 *g:gnat.Find_Program*
-g:gnat.Find_Program	string
-		External command used for |g:gnat.Find()|
-
-							 *g:gnat.Tags_Command*
-g:gnat.Tags_Command	string
-		External command used for |g:gnat.Tags()|
-
-							 *g:gnat.Error_Format*
-g:gnat.Error_Format	string
-		Error format (|'errorformat'|)
-
-------------------------------------------------------------------------------
-4.2 Dec Ada ~
-					    *compiler-hpada* *compiler-decada*
-					*compiler-vaxada* *compiler-compaqada*
-
-Dec Ada (also known by - in chronological order - VAX Ada, Dec Ada, Compaq Ada
-and HP Ada) is a fairly dated Ada 83 compiler. Support is basic:  will
-compile the current unit.
-
-The Dec Ada compiler expects the package name and not the file name to be
-passed as a parameter. The compiler plug-in supports the usual file name
-convention to convert the file into a unit name. Both '-' and '__' are allowed
-as separators.
-
-							      *decada_members*
-DEC ADA OBJECT ~
-
-							     *g:decada.Make()*
-g:decada.Make()		function
-		Calls |g:decada.Make_Command| and displays the result inside a
-		|quickfix| window.
-
-							*g:decada.Unit_Name()*
-g:decada.Unit_Name()	function
-		Get the Unit name for the current file.
-
-						       *g:decada.Make_Command*
-g:decada.Make_Command	string
-		External command used for |g:decada.Make()| (|'makeprg'|).
-
-						       *g:decada.Error_Format*
-g:decada.Error_Format|	string
-		Error format (|'errorformat'|).
-
-==============================================================================
-5. References ~
-							       *ada-reference*
-
-------------------------------------------------------------------------------
-5.1 Options ~
-							      *ft-ada-options*
-
-							*g:ada_standard_types*
-g:ada_standard_types	bool (true when exists)
-		Highlight types in package Standard (e.g., "Float").
-
-							  *g:ada_space_errors*
-						  *g:ada_no_trail_space_error*
-						    *g:ada_no_tab_space_error*
-							 *g:ada_all_tab_usage*
-g:ada_space_errors	 bool (true when exists)
-		Highlight extraneous errors in spaces ...
-		g:ada_no_trail_space_error
-		    - but ignore trailing spaces at the end of a line
-		g:ada_no_tab_space_error
-		    - but ignore tabs after spaces
-		g:ada_all_tab_usage
-		    - highlight all tab use
-
-							   *g:ada_line_errors*
-g:ada_line_errors	  bool (true when exists)
-		Highlight lines which are too long. Note: This highlighting
-		option is quite CPU intensive.
-
-							 *g:ada_rainbow_color*
-g:ada_rainbow_color	  bool (true when exists)
-		Use rainbow colours for '(' and ')'. You need the
-		rainbow_parenthesis for this to work.
-
-							       *g:ada_folding*
-g:ada_folding		  set ('sigpft')
-		Use folding for Ada sources.
-		    's':    activate syntax folding on load
-			'p':    fold packages
-			'f':    fold functions and procedures
-			't':    fold types
-			'c':    fold conditionals
-		    'g':    activate gnat pretty print folding on load
-			'i':    lone 'is' folded with line above
-			'b':	lone 'begin' folded with line above
-			'p':	lone 'private' folded with line above
-			'x':	lone 'exception' folded with line above
-		    'i':    activate indent folding on load
-
-		Note: Syntax folding is in an early (unusable) stage and
-		      indent or gnat pretty folding is suggested.
-
-		For gnat pretty folding to work the following settings are
-		suggested: -cl3 -M79 -c2 -c3 -c4 -A1 -A2 -A3 -A4 -A5
-
-		For indent folding to work the following settings are
-		suggested: shiftwidth=3 softtabstop=3
-
-								*g:ada_abbrev*
-g:ada_abbrev		  bool (true when exists)
-		Add some abbreviations. This feature is more or less superseded
-		by the various completion methods.
-
-						      *g:ada_withuse_ordinary*
-g:ada_withuse_ordinary	  bool (true when exists)
-		Show "with" and "use" as ordinary keywords (when used to
-		reference other compilation units they're normally highlighted
-		specially).
-
-							 *g:ada_begin_preproc*
-g:ada_begin_preproc	  bool (true when exists)
-		Show all begin-like keywords using the colouring of C
-		preprocessor commands.
-
-						    *g:ada_omni_with_keywords*
-g:ada_omni_with_keywords
-		Add Keywords, Pragmas, Attributes to omni-completions
-		(|compl-omni|). Note: You can always complete then with user
-		completion (|i_CTRL-X_CTRL-U|).
-
-						      *g:ada_extended_tagging*
-g:ada_extended_tagging	  enum ('jump', 'list')
-		use extended tagging, two options are available
-		    'jump': use tjump to jump.
-		    'list': add tags quick fix list.
-		Normal tagging does not support function or operator
-		overloading as these features are not available in C and
-		tagging was originally developed for C.
-
-						   *g:ada_extended_completion*
-g:ada_extended_completion
-		Uses extended completion for  and  completions
-		(|i_CTRL-N|). In this mode the '.' is used as part of the
-		identifier so that 'Object.Method' or 'Package.Procedure' are
-		completed together.
-
-						       *g:ada_gnat_extensions*
-g:ada_gnat_extensions	  bool (true when exists)
-		 Support GNAT extensions.
-
-					       *g:ada_with_gnat_project_files*
-g:ada_with_gnat_project_files	 bool (true when exists)
-		 Add gnat project file keywords and Attributes.
-
-						      *g:ada_default_compiler*
-g:ada_default_compiler	  string
-		set default compiler. Currently supported are 'gnat' and
-		'decada'.
-
-An "exists" type is a boolean considered true when the variable is defined and
-false when the variable is undefined. The value to which the variable is set
-makes no difference.
-
-------------------------------------------------------------------------------
-5.3 Commands ~
-							     *ft-ada-commands*
-
-:AdaRainbow							 *:AdaRainbow*
-		Toggles rainbow colour (|g:ada_rainbow_color|) mode for
-		'(' and ')'.
-
-:AdaLines							   *:AdaLines*
-		Toggles line error (|g:ada_line_errors|) display.
-
-:AdaSpaces							  *:AdaSpaces*
-		Toggles space error (|g:ada_space_errors|) display.
-
-:AdaTagDir							  *:AdaTagDir*
-		Creates tags file for the directory of the current file.
-
-:AdaTagFile							 *:AdaTagFile*
-		Creates tags file for the current file.
-
-:AdaTypes							   *:AdaTypes*
-		Toggles standard types (|g:ada_standard_types|) colour.
-
-:GnatFind							   *:GnatFind*
-		Calls |g:gnat.Find()|
-
-:GnatPretty							 *:GnatPretty*
-		Calls |g:gnat.Pretty()|
-
-:GnatTags							   *:GnatTags*
-		Calls |g:gnat.Tags()|
-
-------------------------------------------------------------------------------
-5.3 Variables ~
-							    *ft-ada-variables*
-
-								      *g:gnat*
-g:gnat			    object
-		Control object which manages GNAT compiles.  The object
-		is created when the first Ada source code is loaded provided
-		that |g:ada_default_compiler| is set to 'gnat'. See
-		|gnat_members| for details.
-
-								    *g:decada*
-g:decada		      object
-		Control object which manages Dec Ada compiles.	The object
-		is created when the first Ada source code is loaded provided
-		that |g:ada_default_compiler| is set to 'decada'. See
-		|decada_members| for details.
-
-------------------------------------------------------------------------------
-5.4 Constants ~
-							    *ft-ada-constants*
-
-All constants are locked. See |:lockvar| for details.
-
-							     *g:ada#WordRegex*
-g:ada#WordRegex		string
-		Regular expression to search for Ada words.
-
-							  *g:ada#DotWordRegex*
-g:ada#DotWordRegex	string
-		Regular expression to search for Ada words separated by dots.
-
-							       *g:ada#Comment*
-g:ada#Comment		string
-		Regular expression to search for Ada comments.
-
-							      *g:ada#Keywords*
-g:ada#Keywords		list of dictionaries
-		List of keywords, attributes etc. pp. in the format used by
-		omni completion. See |complete-items| for details.
-
-							   *g:ada#Ctags_Kinds*
-g:ada#Ctags_Kinds	dictionary of lists
-		Dictionary of the various kinds of items which the Ada support
-		for Ctags generates.
-
-------------------------------------------------------------------------------
-5.2 Functions ~
-							    *ft-ada-functions*
-
-ada#Word([{line}, {col}])					  *ada#Word()*
-		Return full name of Ada entity under the cursor (or at given
-		line/column), stripping white space/newlines as necessary.
-
-ada#List_Tag([{line}, {col}])				      *ada#Listtags()*
-		List all occurrences of the Ada entity under the cursor (or at
-		given line/column) inside the quick-fix window.
-
-ada#Jump_Tag ({ident}, {mode})				      *ada#Jump_Tag()*
-		List all occurrences of the Ada entity under the cursor (or at
-		given line/column) in the tag jump list. Mode can either be
-		'tjump' or 'stjump'.
-
-ada#Create_Tags ({option})				   *ada#Create_Tags()*
-		Creates tag file using Ctags. The option can either be 'file'
-		for the current file, 'dir' for the directory of the current
-		file or a file name.
-
-gnat#Insert_Tags_Header()			   *gnat#Insert_Tags_Header()*
-		Adds the tag file header (!_TAG_) information to the current
-		file which are missing from the GNAT XREF output.
-
-ada#Switch_Syntax_Option ({option})		  *ada#Switch_Syntax_Option()*
-		Toggles highlighting options on or off. Used for the Ada menu.
-
-								  *gnat#New()*
-gnat#New ()
-		Create a new gnat object. See |g:gnat| for details.
-
-
-==============================================================================
-8. Extra Plugins ~
-							   *ada-extra-plugins*
-
-You can optionally install the following extra plug-ins. They work well with
-Ada and enhance the ability of the Ada mode:
-
-backup.vim
-	http://www.vim.org/scripts/script.php?script_id=1537
-	Keeps as many backups as you like so you don't have to.
-
-rainbow_parenthsis.vim
-	http://www.vim.org/scripts/script.php?script_id=1561
-	Very helpful since Ada uses only '(' and ')'.
-
-nerd_comments.vim
-	http://www.vim.org/scripts/script.php?script_id=1218
-	Excellent commenting and uncommenting support for almost any
-	programming language.
-
-matchit.vim
-	http://www.vim.org/scripts/script.php?script_id=39
-	'%' jumping for any language. The normal '%' jump only works for '{}'
-	style languages. The Ada mode will set the needed search patterns.
-
-taglist.vim
-	http://www.vim.org/scripts/script.php?script_id=273
-	Source code explorer sidebar. There is a patch for Ada available.
-
-The GNU Ada Project distribution (http://gnuada.sourceforge.net) of Vim
-contains all of the above.
-
-==============================================================================
-vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab
-vim: filetype=help
diff --git a/share/vim/vim73/doc/ft_sql.txt b/share/vim/vim73/doc/ft_sql.txt
deleted file mode 100644
index 1360a037..00000000
--- a/share/vim/vim73/doc/ft_sql.txt
+++ /dev/null
@@ -1,776 +0,0 @@
-*ft_sql.txt*	For Vim version 7.3.  Last change: 2010 Jul 20
-
-by David Fishburn
-
-This is a filetype plugin to work with SQL files.
-
-The Structured Query Language (SQL) is a standard which specifies statements
-that allow a user to interact with a relational database.  Vim includes
-features for navigation, indentation and syntax highlighting.
-
-1. Navigation					|sql-navigation|
-    1.1 Matchit					|sql-matchit|
-    1.2 Text Object Motions			|sql-object-motions|
-    1.3 Predefined Object Motions		|sql-predefined-objects|
-    1.4 Macros					|sql-macros|
-2. SQL Dialects					|sql-dialects|
-    2.1 SQLSetType				|SQLSetType|
-    2.2 SQLGetType				|SQLGetType|
-    2.3 SQL Dialect Default			|sql-type-default|
-3. Adding new SQL Dialects			|sql-adding-dialects|
-4. OMNI SQL Completion				|sql-completion|
-    4.1 Static mode				|sql-completion-static|
-    4.2 Dynamic mode				|sql-completion-dynamic|
-    4.3 Tutorial				|sql-completion-tutorial|
-	4.3.1 Complete Tables			|sql-completion-tables|
-	4.3.2 Complete Columns			|sql-completion-columns|
-	4.3.3 Complete Procedures		|sql-completion-procedures|
-	4.3.4 Complete Views			|sql-completion-views|
-    4.4 Completion Customization		|sql-completion-customization|
-    4.5 SQL Maps				|sql-completion-maps|
-    4.6 Using with other filetypes		|sql-completion-filetypes|
-
-==============================================================================
-1. Navigation					*sql-navigation*
-
-The SQL ftplugin provides a number of options to assist with file
-navigation.
-
-
-1.1 Matchit					*sql-matchit*
------------
-The matchit plugin (http://www.vim.org/scripts/script.php?script_id=39)
-provides many additional features and can be customized for different
-languages.  The matchit plugin is configured by defining a local
-buffer variable, b:match_words.  Pressing the % key while on various
-keywords will move the cursor to its match.  For example, if the cursor
-is on an "if", pressing % will cycle between the "else", "elseif" and
-"end if" keywords.
-
-The following keywords are supported: >
-    if
-    elseif | elsif
-    else [if]
-    end if
-
-    [while condition] loop
-	leave
-	break
-	continue
-	exit
-    end loop
-
-    for
-	leave
-	break
-	continue
-	exit
-    end loop
-
-    do
-	statements
-    doend
-
-    case
-    when
-    when
-    default
-    end case
-
-    merge
-    when not matched
-    when matched
-
-    create[ or replace] procedure|function|event
-    returns
-
-
-1.2 Text Object Motions				*sql-object-motions*
------------------------
-Vim has a number of predefined keys for working with text |object-motions|.
-This filetype plugin attempts to translate these keys to maps which make sense
-for the SQL language.
-
-The following |Normal| mode and |Visual| mode maps exist (when you edit a SQL
-file): >
-    ]]		    move forward to the next 'begin'
-    [[		    move backwards to the previous 'begin'
-    ][		    move forward to the next 'end'
-    []		    move backwards to the previous 'end'
-
-
-1.3 Predefined Object Motions			*sql-predefined-objects*
------------------------------
-Most relational databases support various standard features, tables, indices,
-triggers and stored procedures.  Each vendor also has a variety of proprietary
-objects.  The next set of maps have been created to help move between these
-objects.  Depends on which database vendor you are using, the list of objects
-must be configurable.  The filetype plugin attempts to define many of the
-standard objects, plus many additional ones.  In order to make this as
-flexible as possible, you can override the list of objects from within your
-|vimrc| with the following: >
-    let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' .
-		\ ',schema,service,publication,database,datatype,domain' .
-		\ ',index,subscription,synchronization,view,variable'
-
-The following |Normal| mode and |Visual| mode maps have been created which use
-the above list: >
-    ]}		    move forward to the next 'create '
-    [{		    move backward to the previous 'create '
-
-Repeatedly pressing ]} will cycle through each of these create statements: >
-    create table t1 (
-	...
-    );
-
-    create procedure p1
-    begin
-	...
-    end;
-
-    create index i1 on t1 (c1);
-
-The default setting for g:ftplugin_sql_objects is: >
-    let g:ftplugin_sql_objects = 'function,procedure,event,' .
-		\ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' .
-		\ 'table,trigger' .
-		\ ',schema,service,publication,database,datatype,domain' .
-		\ ',index,subscription,synchronization,view,variable'
-
-The above will also handle these cases: >
-    create table t1 (
-	...
-    );
-    create existing table t2 (
-	...
-    );
-    create global temporary table t3 (
-	...
-    );
-
-By default, the ftplugin only searches for CREATE statements.  You can also
-override this via your |vimrc| with the following: >
-    let g:ftplugin_sql_statements = 'create,alter'
-
-The filetype plugin defines three types of comments: >
-    1.  --
-    2.  //
-    3.  /*
-	 *
-	 */
-
-The following |Normal| mode and |Visual| mode maps have been created to work
-with comments: >
-    ]"		    move forward to the beginning of a comment
-    ["		    move forward to the end of a comment
-
-
-
-1.4 Macros					   *sql-macros*
-----------
-Vim's feature to find macro definitions, |'define'|, is supported using this
-regular expression: >
-    \c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>
-
-This addresses the following code: >
-    CREATE VARIABLE myVar1 INTEGER;
-
-    CREATE PROCEDURE sp_test(
-	IN myVar2 INTEGER,
-	OUT myVar3 CHAR(30),
-	INOUT myVar4 NUMERIC(20,0)
-    )
-    BEGIN
-	DECLARE myVar5 INTEGER;
-
-	SELECT c1, c2, c3
-	  INTO myVar2, myVar3, myVar4
-	  FROM T1
-	 WHERE c4 = myVar1;
-    END;
-
-Place your cursor on "myVar1" on this line: >
-	 WHERE c4 = myVar1;
-		     ^
-
-Press any of the following keys: >
-    [d
-    [D
-    [CTRL-D
-
-
-==============================================================================
-2. SQL Dialects					*sql-dialects* *sql-types*
-						*sybase* *TSQL* *Transact-SQL*
-						*sqlanywhere*
-						*oracle* *plsql* *sqlj*
-						*sqlserver*
-						*mysql* *postgresql* *psql*
-						*informix*
-
-All relational databases support SQL.  There is a portion of SQL that is
-portable across vendors (ex. CREATE TABLE, CREATE INDEX), but there is a
-great deal of vendor specific extensions to SQL.  Oracle supports the
-"CREATE OR REPLACE" syntax, column defaults specified in the CREATE TABLE
-statement and the procedural language (for stored procedures and triggers).
-
-The default Vim distribution ships with syntax highlighting based on Oracle's
-PL/SQL.  The default SQL indent script works for Oracle and SQL Anywhere.
-The default filetype plugin works for all vendors and should remain vendor
-neutral, but extendable.
-
-Vim currently has support for a variety of different vendors, currently this
-is via syntax scripts. Unfortunately, to flip between different syntax rules
-you must either create:
-    1.  New filetypes
-    2.  Custom autocmds
-    3.  Manual steps / commands
-
-The majority of people work with only one vendor's database product, it would
-be nice to specify a default in your |vimrc|.
-
-
-2.1 SQLSetType					*sqlsettype* *SQLSetType*
---------------
-For the people that work with many different databases, it is nice to be
-able to flip between the various vendors rules (indent, syntax) on a per
-buffer basis, at any time.  The ftplugin/sql.vim file defines this function: >
-    SQLSetType
-
-Executing this function without any parameters will set the indent and syntax
-scripts back to their defaults, see |sql-type-default|.  If you have turned
-off Vi's compatibility mode, |'compatible'|, you can use the  key to
-complete the optional parameter.
-
-After typing the function name and a space, you can use the completion to
-supply a parameter.  The function takes the name of the Vim script you want to
-source.  Using the |cmdline-completion| feature, the SQLSetType function will
-search the |'runtimepath'| for all Vim scripts with a name containing 'sql'.
-This takes the guess work out of the spelling of the names.  The following are
-examples: >
-    :SQLSetType
-    :SQLSetType sqloracle
-    :SQLSetType sqlanywhere
-    :SQLSetType sqlinformix
-    :SQLSetType mysql
-
-The easiest approach is to the use  character which will first complete
-the command name (SQLSetType), after a space and another , display a list
-of available Vim script names: >
-    :SQL
-
-
-2.2 SQLGetType					*sqlgettype* *SQLGetType*
---------------
-At anytime you can determine which SQL dialect you are using by calling the
-SQLGetType command.  The ftplugin/sql.vim file defines this function: >
-    SQLGetType
-
-This will echo: >
-    Current SQL dialect in use:sqlanywhere
-
-
-2.3 SQL Dialect Default				*sql-type-default*
------------------------
-As mentioned earlier, the default syntax rules for Vim is based on Oracle
-(PL/SQL).  You can override this default by placing one of the following in
-your |vimrc|: >
-    let g:sql_type_default = 'sqlanywhere'
-    let g:sql_type_default = 'sqlinformix'
-    let g:sql_type_default = 'mysql'
-
-If you added the following to your |vimrc|: >
-    let g:sql_type_default = 'sqlinformix'
-
-The next time edit a SQL file the following scripts will be automatically
-loaded by Vim: >
-    ftplugin/sql.vim
-    syntax/sqlinformix.vim
-    indent/sql.vim
->
-Notice indent/sqlinformix.sql was not loaded.  There is no indent file
-for Informix, Vim loads the default files if the specified files does not
-exist.
-
-
-==============================================================================
-3. Adding new SQL Dialects			*sql-adding-dialects*
-
-If you begin working with a SQL dialect which does not have any customizations
-available with the default Vim distribution you can check http://www.vim.org
-to see if any customization currently exist.  If not, you can begin by cloning
-an existing script.  Read |filetype-plugins| for more details.
-
-To help identify these scripts, try to create the files with a "sql" prefix.
-If you decide you wish to create customizations for the SQLite database, you
-can create any of the following: >
-    Unix
-	~/.vim/syntax/sqlite.vim
-	~/.vim/indent/sqlite.vim
-    Windows
-	$VIM/vimfiles/syntax/sqlite.vim
-	$VIM/vimfiles/indent/sqlite.vim
-
-No changes are necessary to the SQLSetType function.  It will automatically
-pickup the new SQL files and load them when you issue the SQLSetType command.
-
-
-==============================================================================
-4. OMNI SQL Completion				*sql-completion*
-						*omni-sql-completion*
-
-Vim 7 includes a code completion interface and functions which allows plugin
-developers to build in code completion for any language.  Vim 7 includes
-code completion for the SQL language.
-
-There are two modes to the SQL completion plugin, static and dynamic.  The
-static mode populates the popups with the data generated from current syntax
-highlight rules.  The dynamic mode populates the popups with data retrieved
-directly from a database.  This includes, table lists, column lists,
-procedures names and more.
-
-4.1 Static Mode					*sql-completion-static*
----------------
-The static popups created contain items defined by the active syntax rules
-while editing a file with a filetype of SQL.  The plugin defines (by default)
-various maps to help the user refine the list of items to be displayed.
-The defaults static maps are: >
-    imap  a :call sqlcomplete#Map('syntax')
-    imap  k :call sqlcomplete#Map('sqlKeyword')
-    imap  f :call sqlcomplete#Map('sqlFunction')
-    imap  o :call sqlcomplete#Map('sqlOption')
-    imap  T :call sqlcomplete#Map('sqlType')
-    imap  s :call sqlcomplete#Map('sqlStatement')
-
-The use of "" can be user chosen by using the following in your |.vimrc| as it 
-may not work properly on all platforms: >
-    let g:ftplugin_sql_omni_key = ''
->
-The static maps (which are based on the syntax highlight groups) follow this
-format: >
-    imap  k :call sqlcomplete#Map('sqlKeyword')
-
-This command breaks down as: >
-    imap		   - Create an insert map
-    		   - Only for this buffer
-    k		   - Your choice of key map
-    		   - Execute one command, return to Insert mode
-    :call sqlcomplete#Map( - Allows the SQL completion plugin to perform some
-			     housekeeping functions to allow it to be used in
-			     conjunction with other completion plugins.
-			     Indicate which item you want the SQL completion
-			     plugin to complete.
-			     In this case we are asking the plugin to display
-			     items from the syntax highlight group
-			     'sqlKeyword'.
-			     You can view a list of highlight group names to
-			     choose from by executing the
-				 :syntax list
-			     command while editing a SQL file.
-    'sqlKeyword'	   - Display the items for the sqlKeyword highlight
-			     group
-    )		   - Execute the :let command
-    		   - Trigger the standard omni completion key stroke.
-			     Passing in 'sqlKeyword' instructs the SQL
-			     completion plugin to populate the popup with
-			     items from the sqlKeyword highlight group.  The
-			     plugin will also cache this result until Vim is
-			     restarted.  The syntax list is retrieved using
-			     the syntaxcomplete plugin.
-
-Using the 'syntax' keyword is a special case.  This instructs the
-syntaxcomplete plugin to retrieve all syntax items.  So this will effectively
-work for any of Vim's SQL syntax files.  At the time of writing this includes
-10 different syntax files for the different dialects of SQL (see section 3
-above, |sql-dialects|).
-
-Here are some examples of the entries which are pulled from the syntax files: >
-     All
-	 - Contains the contents of all syntax highlight groups
-     Statements
-	 - Select, Insert, Update, Delete, Create, Alter, ...
-     Functions
-	 - Min, Max, Trim, Round, Date, ...
-     Keywords
-	 - Index, Database, Having, Group, With
-     Options
-	 - Isolation_level, On_error, Qualify_owners, Fire_triggers, ...
-     Types
-	 - Integer, Char, Varchar, Date, DateTime, Timestamp, ...
-
-
-4.2 Dynamic Mode				*sql-completion-dynamic*
-----------------
-Dynamic mode populates the popups with data directly from a database.  In
-order for the dynamic feature to be enabled you must have the dbext.vim
-plugin installed, (http://vim.sourceforge.net/script.php?script_id=356).
-
-Dynamic mode is used by several features of the SQL completion plugin.
-After installing the dbext plugin see the dbext-tutorial for additional
-configuration and usage.  The dbext plugin allows the SQL completion plugin
-to display a list of tables, procedures, views and columns. >
-     Table List
-	 - All tables for all schema owners
-     Procedure List
-	 - All stored procedures for all schema owners
-     View List
-	 - All stored procedures for all schema owners
-     Column List
-	 - For the selected table, the columns that are part of the table
-
-To enable the popup, while in INSERT mode, use the following key combinations
-for each group (where  means hold the CTRL key down while pressing
-the space bar):
-     Table List		   - t
-			   -  (the default map assumes tables)
-     Stored Procedure List - p
-     View List		   - v
-     Column List	   - c
-
-     Drilling In / Out     - When viewing a popup window displaying the list
-			     of tables, you can press , this will
-			     replace the table currently highlighted with
-			     the column list for that table.
-			   - When viewing a popup window displaying the list
-			     of columns, you can press , this will
-			     replace the column list with the list of tables.
-			   - This allows you to quickly drill down into a
-			     table to view it's columns and back again.
-			   -  and  can be also be chosen via
-			     your |.vimrc| >
-                                let g:ftplugin_sql_omni_key_right = ''
-                                let g:ftplugin_sql_omni_key_left  = ''
-
-The SQL completion plugin caches various lists that are displayed in
-the popup window.  This makes the re-displaying of these lists very
-fast.  If new tables or columns are added to the database it may become
-necessary to clear the plugins cache.  The default map for this is: >
-    imap  R :call sqlcomplete#Map('ResetCache')
-
-
-4.3 SQL Tutorial				*sql-completion-tutorial*
-----------------
-
-This tutorial is designed to take you through the common features of the SQL
-completion plugin so that: >
-     a) You gain familiarity with the plugin
-     b) You are introduced to some of the more common features
-     c) Show how to customize it to your preferences
-     d) Demonstrate "Best of Use" of the plugin (easiest way to configure).
-
-First, create a new buffer: >
-     :e tutorial.sql
-
-
-Static features
----------------
-To take you through the various lists, simply enter insert mode, hit:
-    s   (show SQL statements)
-At this point, you can page down through the list until you find "select".
-If you are familiar with the item you are looking for, for example you know
-the statement begins with the letter "s".  You can type ahead (without the
-quotes) "se" then press:
-    t
-Assuming "select" is highlighted in the popup list press  to choose
-the entry.  Now type:
-    * fra (show all syntax items)
-choose "from" from the popup list.
-
-When writing stored procedures using the "type" list is useful.  It contains
-a list of all the database supported types.  This may or may not be true
-depending on the syntax file you are using.  The SQL Anywhere syntax file
-(sqlanywhere.vim) has support for this: >
-     BEGIN
-	DECLARE customer_id T <-- Choose a type from the list
-
-
-Dynamic features
-----------------
-To take advantage of the dynamic features you must first install the
-dbext.vim plugin (http://vim.sourceforge.net/script.php?script_id=356).  It
-also comes with a tutorial.  From the SQL completion plugin's perspective,
-the main feature dbext provides is a connection to a database.  dbext
-connection profiles are the most efficient mechanism to define connection
-information.  Once connections have been setup, the SQL completion plugin
-uses the features of dbext in the background to populate the popups.
-
-What follows assumes dbext.vim has been correctly configured, a simple test
-is to run the command, :DBListTable.  If a list of tables is shown, you know
-dbext.vim is working as expected.  If not, please consult the dbext.txt
-documentation.
-
-Assuming you have followed the dbext-tutorial you can press t to
-display a list of tables.  There is a delay while dbext is creating the table
-list.  After the list is displayed press .  This will remove both the
-popup window and the table name already chosen when the list became active. >
-
- 4.3.1 Table Completion:			*sql-completion-tables*
-
-Press t to display a list of tables from within the database you
-have connected via the dbext plugin.
-NOTE: All of the SQL completion popups support typing a prefix before pressing
-the key map.  This will limit the contents of the popup window to just items
-beginning with those characters.  >
-
- 4.3.2 Column Completion:			*sql-completion-columns*
-
-The SQL completion plugin can also display a list of columns for particular
-tables.  The column completion is trigger via c.
-
-NOTE: The following example uses  to trigger a column list while
-      the popup window is active.  
-
-Example of using column completion:
-     - Press t again to display the list of tables.
-     - When the list is displayed in the completion window, press ,
-       this will replace the list of tables, with a list of columns for the
-       table highlighted (after the same short delay).
-     - If you press , this will again replace the column list with the
-       list of tables.  This allows you to drill into tables and column lists
-       very quickly.
-     - Press  again while the same table is highlighted.  You will
-       notice there is no delay since the column list has been cached.  If you
-       change the schema of a cached table you can press R, which
-       clears the SQL completion cache.
-     - NOTE:  and  have been designed to work while the
-       completion window is active.  If the completion popup window is
-       not active, a normal  or  will be executed.
-
-Let's look at how we can build a SQL statement dynamically.  A select statement
-requires a list of columns.  There are two ways to build a column list using
-the SQL completion plugin. >
-    One column at a time:
-<       1. After typing SELECT press t to display a list of tables.
-	2. Choose a table from the list.
-	3. Press  to display a list of columns.
-	4. Choose the column from the list and press enter.
-	5. Enter a "," and press c.  Generating a column list
-	   generally requires having the cursor on a table name.  The plugin
-	   uses this name to determine what table to retrieve the column list.
-	   In this step, since we are pressing c without the cursor
-	   on a table name the column list displayed will be for the previous
-	   table.  Choose a different column and move on.
-	6. Repeat step 5 as often as necessary. >
-    All columns for a table:
-<	1. After typing SELECT press t to display a list of tables.
-	2. Highlight the table you need the column list for.
-	3. Press  to choose the table from the list.
-	4. Press l to request a comma separated list of all columns
-	   for this table.
-	5. Based on the table name chosen in step 3, the plugin attempts to
-	   decide on a reasonable table alias.	You are then prompted to
-	   either accept of change the alias.  Press OK.
-	6. The table name is replaced with the column list of the table is
-	   replaced with the comma separate list of columns with the alias
-	   prepended to each of the columns.
-	7. Step 3 and 4 can be replaced by pressing L, which has
-	   a  embedded in the map to choose the currently highlighted
-	   table in the list.
-
-There is a special provision when writing select statements.  Consider the
-following statement: >
-     select *
-       from customer c,
-	    contact cn,
-	    department as dp,
-	    employee e,
-	    site_options so
-      where c.
-
-In INSERT mode after typing the final "c." which is an alias for the
-"customer" table, you can press either c or .  This will
-popup a list of columns for the customer table.  It does this by looking back
-to the beginning of the select statement and finding a list of the tables
-specified in the FROM clause.  In this case it notes that in the string
-"customer c", "c" is an alias for the customer table.  The optional "AS"
-keyword is also supported, "customer AS c". >
-
-
- 4.3.3 Procedure Completion:			*sql-completion-procedures*
-
-Similar to the table list, p, will display a list of stored
-procedures stored within the database. >
-
- 4.3.4 View Completion:				*sql-completion-views*
-
-Similar to the table list, v, will display a list of views in the
-database.
-
-
-4.4 Completion Customization			*sql-completion-customization*
-----------------------------
-
-The SQL completion plugin can be customized through various options set in
-your |vimrc|: >
-    omni_sql_no_default_maps
-<       - Default: This variable is not defined
-	- If this variable is defined, no maps are created for OMNI
-	  completion.  See |sql-completion-maps| for further discussion.
->
-    omni_sql_use_tbl_alias
-<	- Default: a
-	- This setting is only used when generating a comma separated
-	  column list.	By default the map is l.  When generating
-	  a column list, an alias can be prepended to the beginning of each
-	  column, for example:	e.emp_id, e.emp_name.  This option has three
-	  settings: >
-		n - do not use an alias
-		d - use the default (calculated) alias
-		a - ask to confirm the alias name
-<
-	  An alias is determined following a few rules:
-	       1.  If the table name has an '_', then use it as a separator: >
-		   MY_TABLE_NAME --> MTN
-		   my_table_name --> mtn
-		   My_table_NAME --> MtN
-<	       2.  If the table name does NOT contain an '_', but DOES use
-		   mixed case then the case is used as a separator: >
-		   MyTableName --> MTN
-<	       3.  If the table name does NOT contain an '_', and does NOT
-		   use mixed case then the first letter of the table is used: >
-		   mytablename --> m
-		   MYTABLENAME --> M
-
-    omni_sql_ignorecase
-<	- Default: Current setting for 'ignorecase'
-	- Valid settings are 0 or 1.
-	- When entering a few letters before initiating completion, the list
-	  will be filtered to display only the entries which begin with the
-	  list of characters.  When this option is set to 0, the list will be
-	  filtered using case sensitivity. >
-
-    omni_sql_include_owner
-<	- Default: 0, unless dbext.vim 3.00 has been installed
-	- Valid settings are 0 or 1.
-	- When completing tables, procedure or views and using dbext.vim 3.00
-	  or higher the list of objects will also include the owner name.
-	  When completing these objects and omni_sql_include_owner is enabled
-	  the owner name will be be replaced. >
-
-    omni_sql_precache_syntax_groups
-<	- Default:
-	  ['syntax','sqlKeyword','sqlFunction','sqlOption','sqlType','sqlStatement']
-	- sqlcomplete can be used in conjunction with other completion
-	  plugins.  This is outlined at |sql-completion-filetypes|.  When the
-	  filetype is changed temporarily to SQL, the sqlcompletion plugin
-	  will cache the syntax groups listed in the List specified in this
-	  option.
->
-
-4.5 SQL Maps					*sql-completion-maps*
-------------
-
-The default SQL maps have been described in other sections of this document in
-greater detail.  Here is a list of the maps with a brief description of each.
-
-Static Maps
------------
-These are maps which use populate the completion list using Vim's syntax
-highlighting rules. >
-    a
-<       - Displays all SQL syntax items. >
-    k
-<       - Displays all SQL syntax items defined as 'sqlKeyword'. >
-    f
-<       - Displays all SQL syntax items defined as 'sqlFunction. >
-    o
-<       - Displays all SQL syntax items defined as 'sqlOption'. >
-    T
-<       - Displays all SQL syntax items defined as 'sqlType'. >
-    s
-<       - Displays all SQL syntax items defined as 'sqlStatement'. >
-
-Dynamic Maps
-------------
-These are maps which use populate the completion list using the dbext.vim
-plugin. >
-    t
-<       - Displays a list of tables. >
-    p
-<       - Displays a list of procedures. >
-    v
-<       - Displays a list of views. >
-    c
-<       - Displays a list of columns for a specific table. >
-    l
-<       - Displays a comma separated list of columns for a specific table. >
-    L
-<       - Displays a comma separated list of columns for a specific table.
-	  This should only be used when the completion window is active. >
-    
-<	- Displays a list of columns for the table currently highlighted in
-	  the completion window.   is not recognized on most Unix
-	  systems, so this maps is only created on the Windows platform.
-	  If you would like the same feature on Unix, choose a different key
-	  and make the same map in your vimrc. >
-    
-<	- Displays the list of tables.
-	   is not recognized on most Unix systems, so this maps is
-	  only created on the Windows platform.  If you would like the same
-	  feature on Unix, choose a different key and make the same map in
-	  your vimrc. >
-    R
-<	- This maps removes all cached items and forces the SQL completion
-	  to regenerate the list of items.
-
-Customizing Maps
-----------------
-You can create as many additional key maps as you like.  Generally, the maps
-will be specifying different syntax highlight groups.
-
-If you do not wish the default maps created or the key choices do not work on
-your platform (often a case on *nix) you define the following variable in
-your |vimrc|: >
-    let g:omni_sql_no_default_maps = 1
-
-Do no edit ftplugin/sql.vim directly!  If you change this file your changes
-will be over written on future updates.  Vim has a special directory structure
-which allows you to make customizations without changing the files that are
-included with the Vim distribution.  If you wish to customize the maps
-create an after/ftplugin/sql.vim (see |after-directory|) and place the same
-maps from the ftplugin/sql.vim in it using your own key strokes.   was
-chosen since it will work on both Windows and *nix platforms.  On the windows
-platform you can also use  or ALT keys.
-
-
-4.6 Using with other filetypes			*sql-completion-filetypes*
-------------------------------
-
-Many times SQL can be used with different filetypes.  For example Perl, Java,
-PHP, Javascript can all interact with a database.  Often you need both the SQL
-completion and the completion capabilities for the current language you are
-editing.
-
-This can be enabled easily with the following steps (assuming a Perl file): >
-    1.  :e test.pl
-    2.  :set filetype=sql
-    3.  :set ft=perl
-
-Step 1
-------
-Begins by editing a Perl file.  Vim automatically sets the filetype to
-"perl".  By default, Vim runs the appropriate filetype file
-ftplugin/perl.vim.  If you are using the syntax completion plugin by following
-the directions at |ft-syntax-omni| then the |'omnifunc'| option has been set to
-"syntax#Complete".  Pressing  will display the omni popup containing
-the syntax items for Perl.
-
-Step 2
-------
-Manually setting the filetype to 'sql' will also fire the appropriate filetype
-files ftplugin/sql.vim.  This file will define a number of buffer specific
-maps for SQL completion, see |sql-completion-maps|.  Now these maps have
-been created and the SQL completion plugin has been initialized.  All SQL
-syntax items have been cached in preparation.  The SQL filetype script detects
-we are attempting to use two different completion plugins.  Since the SQL maps
-begin with , the maps will toggle the |'omnifunc'| when in use.  So you
-can use  to continue using the completion for Perl (using the syntax
-completion plugin) and  to use the SQL completion features.
-
-Step 3
-------
-Setting the filetype back to Perl sets all the usual "perl" related items back
-as they were.
-
-
-vim:tw=78:ts=8:ft=help:norl:
diff --git a/share/vim/vim73/doc/gui.txt b/share/vim/vim73/doc/gui.txt
deleted file mode 100644
index f9bbf78d..00000000
--- a/share/vim/vim73/doc/gui.txt
+++ /dev/null
@@ -1,1001 +0,0 @@
-*gui.txt*       For Vim version 7.3.  Last change: 2010 May 14
-
-
-		  VIM REFERENCE MANUAL    by Bram Moolenaar
-
-
-Vim's Graphical User Interface				*gui* *GUI*
-
-1. Starting the GUI		|gui-start|
-2. Scrollbars			|gui-scrollbars|
-3. Mouse Control		|gui-mouse|
-4. Making GUI Selections	|gui-selections|
-5. Menus			|menus|
-6. Extras			|gui-extras|
-7. Shell Commands		|gui-shell|
-
-Other GUI documentation:
-|gui_x11.txt|	For specific items of the X11 GUI.
-|gui_w32.txt|	For specific items of the Win32 GUI.
-
-{Vi does not have any of these commands}
-
-==============================================================================
-1. Starting the GUI				*gui-start* *E229* *E233*
-
-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 says "with xxx
-GUI", where "xxx" is X11-Motif, X11-Athena, Photon, GTK, GTK2, etc., or
-"MS-Windows 32 bit GUI version".
-
-How to start the GUI depends on the system used.  Mostly you can run the
-GUI version of Vim with:
-    gvim [options] [files...]
-
-The X11 version of Vim can run both in GUI and in non-GUI mode.  See
-|gui-x11-start|.
-
-			*gui-init* *gvimrc* *.gvimrc* *_gvimrc* *$MYGVIMRC*
-The gvimrc file is where GUI-specific startup commands should be placed.  It
-is always sourced after the |vimrc| file.  If you have one then the $MYGVIMRC
-environment variable has its name.
-
-When the GUI starts up initializations are carried out, in this order:
-- The 'term' option is set to "builtin_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
-  'guioptions'.				*buffers-menu* *no_buffers_menu*
-  The system menu file includes a "Buffers" menu.  If you don't want this, set
-  the "no_buffers_menu" variable in your .vimrc (not .gvimrc!): >
-	:let no_buffers_menu = 1
-< NOTE: Switching on syntax highlighting also loads the menu file, thus
-  disabling the Buffers menu must be done before ":syntax on".
-  The path names are truncated to 35 characters.  You can truncate them at a
-  different length, for example 50, like this: >
-	: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.  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|.
-- The following are tried, and only the first one that exists is used:
-  - If the GVIMINIT environment variable exists and is not empty, it is
-    executed as an Ex command.
-  - If the user gvimrc file exists, it is sourced.  The name of this file is
-    normally "$HOME/.gvimrc".  You can check this with ":version".
-  - For Win32, when $HOME is not set, "$VIM\_gvimrc" is used.
-  - When a "_gvimrc" file is not found, ".gvimrc" is tried too.  And vice
-    versa.
-  The name of the first file found is stored in $MYGVIMRC, unless it was
-  already set.
-- If the 'exrc' option is set (which is NOT the default) the file ./.gvimrc
-  is sourced, if it exists and isn't the same file as the system or user
-  gvimrc file.  If this file is not owned by you, some security restrictions
-  apply.  When ".gvimrc" is not found, "_gvimrc" is tried too.  For Macintosh
-  and DOS/Win32 "_gvimrc" is tried first.
-
-NOTE: All but the first one are not carried out if Vim was started with
-"-u NONE" and no "-U" argument was given, or when started with "-U NONE".
-
-All this happens AFTER the normal Vim initializations, like reading your
-.vimrc file.  See |initialization|.
-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: >
-	: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
-terminal version.
-
-Recommended place for your personal GUI initializations:
-	Unix		    $HOME/.gvimrc
-	OS/2		    $HOME/.gvimrc or $VIM/.gvimrc
-	MS-DOS and Win32    $HOME/_gvimrc or $VIM/_gvimrc
-	Amiga		    s:.gvimrc or $VIM/.gvimrc
-
-There are a number of options which only have meaning in the GUI version of
-Vim.  These are 'guicursor', 'guifont', 'guipty' and 'guioptions'.  They are
-documented in |options.txt| with all the other options.
-
-If using the Motif or Athena version of the GUI (but not for the GTK+ or
-Win32 version), a number of X resources are available.  See |gui-resources|.
-
-Another way to set the colors for different occasions is with highlight
-groups.  The "Normal" group is used to set the background and foreground
-colors.  Example (which looks nice): >
-
-	:highlight Normal guibg=grey90
-
-The "guibg" and "guifg" settings override the normal background and
-foreground settings.  The other settings for the Normal highlight group are
-not used.  Use the 'guifont' option to set the font.
-
-Also check out the 'guicursor' option, to set the colors for the cursor in
-various modes.
-
-Vim tries to make the window fit on the screen when it starts up.  This avoids
-that you can't see part of it.  On the X Window System this requires a bit of
-guesswork.  You can change the height that is used for the window title and a
-task bar with the 'guiheadroom' option.
-
-						*:winp* *:winpos* *E188*
-:winp[os]
-		Display current position of the top left corner of the GUI vim
-		window in pixels.  Does not work in all versions.
-
-:winp[os] {X} {Y}							*E466*
-		Put the GUI vim window at the given {X} and {Y} coordinates.
-		The coordinates should specify the position in pixels of the
-		top left corner of the window.  Does not work in all versions.
-		Does work in an (new) xterm |xterm-color|.
-		When the GUI window has not been opened yet, the values are
-		remembered until the window is opened.  The position is
-		adjusted to make the window fit on the screen (if possible).
-
-						    *:win* *:winsize* *E465*
-:win[size] {width} {height}
-		Set the window height to {width} by {height} characters.
-		Obsolete, use ":set lines=11 columns=22".
-		If you get less lines than expected, check the 'guiheadroom'
-		option.
-
-If you are running the X Window System, you can get information about the
-window Vim is running in with this command: >
-	:!xwininfo -id $WINDOWID
-
-==============================================================================
-2. Scrollbars						*gui-scrollbars*
-
-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"):
-
-		       +------------------------------+
-		       | File  Edit		 Help | <- Menu bar (m)
-		       +-+--------------------------+-+
-		       |^|			    |^|
-		       |#| Text area.		    |#|
-		       | |			    | |
-		       |v|__________________________|v|
- Normal status line -> |-+ File.c	       5,2  +-|
- between Vim windows   |^|""""""""""""""""""""""""""|^|
-		       | |			    | |
-		       | | Another file buffer.     | |
-		       | |			    | |
-		       |#|			    |#|
- Left scrollbar (l) -> |#|			    |#| <- Right
-		       |#|			    |#|    scrollbar (r)
-		       | |			    | |
-		       |v|			    |v|
-		       +-+--------------------------+-+
-		       | |< ####		   >| | <- Bottom
-		       +-+--------------------------+-+    scrollbar (b)
-
-Any of the scrollbar or menu components may be turned off by not putting the
-appropriate letter in the 'guioptions' string.  The bottom scrollbar is
-only useful when 'nowrap' is set.
-
-
-VERTICAL SCROLLBARS					*gui-vert-scroll*
-
-Each Vim window has a scrollbar next to it which may be scrolled up and down
-to move through the text in that buffer.  The size of the scrollbar-thumb
-indicates the fraction of the buffer which can be seen in the window.
-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.
-
-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
-vertical line, this line goes through the window.
-When there are scrollbars on both sides, and the middle of the current window
-is on the left half, the right scrollbar column will contain scrollbars for
-the rightmost windows.  The same happens on the other side.
-
-
-HORIZONTAL SCROLLBARS					*gui-horiz-scroll*
-
-The horizontal scrollbar (at the bottom of the Vim GUI) may be used to
-scroll text sideways when the 'wrap' option is turned off.  The
-scrollbar-thumb size is such that the text of the longest visible line may be
-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 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,
-then you can use the wheel to scroll the text up and down in gvim.  This works
-with XFree86 4.0 and later, and with some older versions when you add patches.
-See |scroll-mouse-wheel|.
-
-For older versions of XFree86 you must patch your X server.  The following
-page has a bit of information about using the Intellimouse on Linux as well as
-links to the patches and X server binaries (may not have the one you need
-though):
-    http://www.inria.fr/koala/colas/mouse-wheel-scroll/
-
-==============================================================================
-3. Mouse Control					*gui-mouse*
-
-The mouse only works if the appropriate flag in the 'mouse' option is set.
-When the GUI is switched on, and 'mouse' wasn't set yet, the 'mouse' option is
-automatically set to "a", enabling it for all modes except for the
-|hit-enter| prompt.  If you don't want this, a good place to change the
-'mouse' option is the "gvimrc" file.
-
-Other options that are relevant:
-'mousefocus'	window focus follows mouse pointer |gui-mouse-focus|
-'mousemodel'	what mouse button does which action
-'mousehide'	hide mouse pointer while typing text
-'selectmode'	whether to start Select mode or Visual mode
-
-A quick way to set these is with the ":behave" command.
-							*:behave* *:be*
-:be[have] {model}	Set behavior for mouse and selection.  Valid
-			arguments are:
-			   mswin	MS-Windows behavior
-			   xterm	Xterm behavior
-
-			Using ":behave" changes these options:
-			option		mswin			xterm	~
-			'selectmode'	"mouse,key"		""
-			'mousemodel'	"popup"			"extend"
-			'keymodel'	"startsel,stopsel"	""
-			'selection'	"exclusive"		"inclusive"
-
-In the $VIMRUNTIME directory, there is a script called |mswin.vim|, which will
-also map a few keys to the MS-Windows cut/copy/paste commands.  This is NOT
-compatible, since it uses the CTRL-V, CTRL-X and CTRL-C keys.  If you don't
-mind, use this command: >
-	:so $VIMRUNTIME/mswin.vim
-
-For scrolling with a wheel on a mouse, see |scroll-mouse-wheel|.
-
-
-3.1 Moving Cursor with Mouse				*gui-mouse-move*
-
-Click the left mouse button somewhere in a text buffer where you want the
-cursor to go, and it does!
-This works in	    when 'mouse' contains ~
-Normal mode	    'n' or 'a'
-Visual mode	    'v' or 'a'
-Insert mode	    'i' or 'a'
-
-Select mode is handled like Visual mode.
-
-You may use this with an operator such as 'd' to delete text from the current
-cursor position to the position you point to with the mouse.  That is, you hit
-'d' and then click the mouse somewhere.
-
-							*gui-mouse-focus*
-The 'mousefocus' option can be set to make the keyboard focus follow the
-mouse pointer.  This means that the window where the mouse pointer is, is the
-active window.  Warning: this doesn't work very well when using a menu,
-because the menu command will always be applied to the top window.
-
-If you are on the ':' line (or '/' or '?'), then clicking the left or right
-mouse button will position the cursor on the ':' line (if 'mouse' contains
-'c', 'a' or 'A').
-
-In any situation the middle mouse button may be clicked to paste the current
-selection.
-
-
-3.2 Selection with Mouse				*gui-mouse-select*
-
-The mouse can be used to start a selection.  How depends on the 'mousemodel'
-option:
-'mousemodel' is "extend": use the right mouse button
-'mousemodel' is "popup":  use the left mouse button, while keeping the Shift
-key pressed.
-
-If there was no selection yet, this starts a selection from the old cursor
-position to the position pointed to with the mouse.  If there already is a
-selection then the closest end will be extended.
-
-If 'selectmode' contains "mouse", then the selection will be in Select mode.
-This means that typing normal text will replace the selection.  See
-|Select-mode|.  Otherwise, the selection will be in Visual mode.
-
-Double clicking may be done to make the selection word-wise, triple clicking
-makes it line-wise, and quadruple clicking makes it rectangular block-wise.
-
-See |gui-selections| on how the selection is used.
-
-
-3.3 Other Text Selection with Mouse		*gui-mouse-modeless*
-						*modeless-selection*
-A different kind of selection is used when:
-- in Command-line mode
-- in the Command-line window and pointing in another window
-- at the |hit-enter| prompt
-- whenever the current mode is not in the 'mouse' option
-- when holding the CTRL and SHIFT keys in the GUI
-
-Since Vim continues like the selection isn't there, and there is no mode
-associated with the selection, this is called modeless selection.  Any text in
-the Vim window can be selected.  Select the text by pressing the left mouse
-button at the start, drag to the end and release.  To extend the selection,
-use the right mouse button when 'mousemodel' is "extend", or the left mouse
-button with the shift key pressed when 'mousemodel' is "popup".
-The selection is removed when the selected text is scrolled or changed.
-
-On the command line CTRL-Y can be used to copy the selection into the
-clipboard.  To do this from Insert mode, use CTRL-O : CTRL-Y .  When
-'guioptions' contains a or A (default on X11), the selection is automatically
-copied to the "* register.
-
-The middle mouse button can then paste the text.  On non-X11 systems, you can
-use CTRL-R +.
-
-
-3.4 Using Mouse on Status Lines				*gui-mouse-status*
-
-Clicking the left or right mouse button on the status line below a Vim
-window makes that window the current window.  This actually happens on button
-release (to be able to distinguish a click from a drag action).
-
-With the left mouse button a status line can be dragged up and down, thus
-resizing the windows above and below it.  This does not change window focus.
-
-The same can be used on the vertical separator: click to give the window left
-of it focus, drag left and right to make windows wider and narrower.
-
-
-3.5 Various Mouse Clicks				*gui-mouse-various*
-
-    	Search forward for the word under the mouse click.
-			When 'mousemodel' is "popup" this starts or extends a
-			selection.
-    	Search backward for the word under the mouse click.
-    	Jump to the tag name under the mouse click.
-    	Jump back to position before the previous tag jump
-			(same as "CTRL-T")
-
-
-3.6 Mouse Mappings					*gui-mouse-mapping*
-
-The mouse events, complete with modifiers, may be mapped.  Eg: >
-   :map      
-   :map       
-   :map    
-   :map <2-S-LeftMouse>   <2-RightMouse>
-   :map <2-S-LeftDrag>    <2-RightDrag>
-   :map <2-S-LeftRelease> <2-RightRelease>
-   :map <3-S-LeftMouse>   <3-RightMouse>
-   :map <3-S-LeftDrag>    <3-RightDrag>
-   :map <3-S-LeftRelease> <3-RightRelease>
-   :map <4-S-LeftMouse>   <4-RightMouse>
-   :map <4-S-LeftDrag>    <4-RightDrag>
-   :map <4-S-LeftRelease> <4-RightRelease>
-These mappings make selection work the way it probably should in a Motif
-application, with shift-left mouse allowing for extending the visual area
-rather than the right mouse button.
-
-Mouse mapping with modifiers does not work for modeless selection.
-
-
-3.7 Drag and drop						*drag-n-drop*
-
-You can drag and drop one or more files into the Vim window, where they will
-be opened as if a |:drop| command was used.
-
-If you hold down Shift while doing this, Vim changes to the first dropped
-file's directory.  If you hold Ctrl Vim will always split a new window for the
-file.  Otherwise it's only done if the current buffer has been changed.
-
-You can also drop a directory on Vim.  This starts the explorer plugin for
-that directory (assuming it was enabled, otherwise you'll get an error
-message).  Keep Shift pressed to change to the directory instead.
-
-If Vim happens to be editing a command line, the names of the dropped files
-and directories will be inserted at the cursor.  This allows you to use these
-names with any Ex command.  Special characters (space, tab, double quote and
-'|'; backslash on non-MS-Windows systems) will be escaped.
-
-==============================================================================
-4. Making GUI Selections				*gui-selections*
-
-							*quotestar*
-You may make selections with the mouse (see |gui-mouse-select|), or by using
-Vim's Visual mode (see |v|).  If 'a' is present in 'guioptions', then
-whenever a selection is started (Visual or Select mode), or when the selection
-is changed, Vim becomes the owner of the windowing system's primary selection
-(on MS-Windows the |gui-clipboard| is used; under X11, the |x11-selection| is
-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 (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: >
-
-	"*dd
-
-Similarly, when you want to paste a selection from another application, e.g.,
-by clicking the middle mouse button, the selection is put in the "* register
-first, and then 'put' like any other register.  For example, to put the
-selection (contents of the clipboard): >
-
-	"*p
-
-When using this register under X11, also see |x11-selection|.  This also
-explains the related "+ register.
-
-Note that when pasting text from one Vim into another separate Vim, the type
-of selection (character, line, or block) will also be copied.  For other
-applications the type is always character.  However, if the text gets
-transferred via the |x11-cut-buffer|, the selection type is ALWAYS lost.
-
-When the "unnamed" string is included in the 'clipboard' option, the unnamed
-register is the same as the "* register.  Thus you can yank to and paste the
-selection without prepending "* to commands.
-
-==============================================================================
-5. Menus						*menus*
-
-For an introduction see |usr_42.txt| in the user manual.
-
-
-5.1 Using Menus						*using-menus*
-
-Basically, menus can be used just like mappings.  You can define your own
-menus, as many as you like.
-Long-time Vim users won't use menus much.  But the power is in adding your own
-menus and menu items.  They are most useful for things that you can't remember
-what the key sequence was.
-
-For creating menus in a different language, see |:menutrans|.
-
-							*menu.vim*
-The default menus are read from the file "$VIMRUNTIME/menu.vim".  See
-|$VIMRUNTIME| for where the path comes from.  You can set up your own menus.
-Starting off with the default set is a good idea.  You can add more items, or,
-if you don't like the defaults at all, start with removing all menus
-|:unmenu-all|.  You can also avoid the default menus being loaded by adding
-this line to your .vimrc file (NOT your .gvimrc file!): >
-	:let did_install_default_menus = 1
-If you also want to avoid the Syntax menu: >
-	:let did_install_syntax_menu = 1
-The first item in the Syntax menu can be used to show all available filetypes
-in the menu (which can take a bit of time to load).  If you want to have all
-filetypes already present at startup, add: >
-	:let do_syntax_sel_menu = 1
-
-<
-							*console-menus*
-Although this documentation is in the GUI section, you can actually use menus
-in console mode too.  You will have to load |menu.vim| explicitly then, it is
-not done by default.  You can use the |:emenu| command and command-line
-completion with 'wildmenu' to access the menu entries almost like a real menu
-system.  To do this, put these commands in your .vimrc file: >
-	:source $VIMRUNTIME/menu.vim
-	:set wildmenu
-	:set cpo-=<
-	:set wcm=
-	:map  :emenu 
-Pressing  will start the menu.  You can now use the cursor keys to select
-a menu entry.  Hit  to execute it.  Hit  if you want to cancel.
-This does require the |+menu| feature enabled at compile time.
-
-							*tear-off-menus*
-GTK+ and Motif support Tear-off menus.  These are sort of sticky menus or
-pop-up menus that are present all the time.  If the resizing does not work
-correctly, this may be caused by using something like "Vim*geometry" in the
-defaults.  Use "Vim.geometry" instead.
-
-The Win32 GUI version emulates Motif's tear-off menus.  Actually, a Motif user
-will spot the differences easily, but hopefully they're just as useful.  You
-can also use the |:tearoff| command together with |hidden-menus| to create
-floating menus that do not appear on the main menu bar.
-
-
-5.2 Creating New Menus					*creating-menus*
-
-				*:me*  *:menu*  *:noreme*  *:noremenu*
-				*:am*  *:amenu* *:an*      *:anoremenu*
-				*:nme* *:nmenu* *:nnoreme* *:nnoremenu*
-				*:ome* *:omenu* *:onoreme* *:onoremenu*
-				*:vme* *:vmenu* *:vnoreme* *:vnoremenu*
-				*:xme* *:xmenu* *:xnoreme* *:xnoremenu*
-				*:sme* *:smenu* *:snoreme* *:snoremenu*
-				*:ime* *:imenu* *:inoreme* *:inoremenu*
-				*:cme* *:cmenu* *:cnoreme* *:cnoremenu*
-				*E330* *E327* *E331* *E336* *E333*
-				*E328* *E329* *E337* *E792*
-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, e.g.: >
-
-   :menu File.Save  :w
-   :inoremenu File.Save  :w
-   :menu Edit.Big\ Changes.Delete\ All\ Spaces  :%s/[ ^I]//g
-
-This last one will create a new item in the menu bar called "Edit", holding
-the mouse button down on this will pop up a menu containing the item
-"Big Changes", which is a sub-menu containing the item "Delete All Spaces",
-which when selected, performs the operation.
-
-Special characters in a menu name:
-
-	&	The next character is the shortcut key.  Make sure each
-		shortcut key is only used once in a (sub)menu.  If you want to
-		insert a literal "&" in the menu name use "&&".
-		Separates the menu name from right-aligned text.  This can be
-		used to show the equivalent typed command.  The text ""
-		can be used here for convenience.  If you are using a real
-		tab, don't forget to put a backslash before it!
-Example: >
-
-   :amenu &File.&Open:e  :browse e
-
-[typed literally]
-With the shortcut "F" (while keeping the  key pressed), and then "O",
-this menu can be used.  The second part is shown as "Open     :e".  The ":e"
-is right aligned, and the "O" is underlined, to indicate it is the shortcut.
-
-The ":amenu" command can be used to define menu entries for all modes at once.
-To make the command work correctly, a character is automatically inserted for
-some modes:
-	mode		inserted	appended	~
-	Normal		nothing		nothing
-	Visual				
-	Insert		
-	Cmdline				
-	Op-pending			
-
-Appending CTRL-\ CTRL-G is for going back to insert mode when 'insertmode' is
-set. |CTRL-\_CTRL-G|
-
-Example: >
-
-   :amenu File.Next	:next^M
-
-is equal to: >
-
-   :nmenu File.Next	:next^M
-   :vmenu File.Next	^C:next^M^\^G
-   :imenu File.Next	^\^O:next^M
-   :cmenu File.Next	^C:next^M^\^G
-   :omenu File.Next	^C:next^M^\^G
-
-Careful: In Insert mode this only works for a SINGLE Normal mode command,
-because of the CTRL-O.  If you have two or more commands, you will need to use
-the ":imenu" command.  For inserting text in any mode, you can use the
-expression register: >
-
-   :amenu Insert.foobar   "='foobar'P
-
-Note that the '<' and 'k' flags in 'cpoptions' also apply here (when
-included they make the <> form and raw key codes not being recognized).
-
-Note that  in Cmdline mode executes the command, like in a mapping.  This
-is Vi compatible.  Use CTRL-C to quit Cmdline mode.
-
-						*:menu-* *:menu-silent*
-To define a menu which will not be echoed on the command line, add
-"" as the first argument.  Example: >
-	:menu  Settings.Ignore\ case  :set ic
-The ":set ic" will not be echoed when using this menu.  Messages from the
-executed command are still given though.  To shut them up too, add a ":silent"
-in the executed command: >
-	:menu  Search.Header :exe ":silent normal /Header\r"
-"" may also appear just after "" or "
-
-See |mysyntaxfile-add| for installing script languages permanently.
-
-
-APACHE						*apache.vim* *ft-apache-syntax*
-
-The apache syntax file provides syntax highlighting depending on Apache HTTP
-server version, by default for 1.3.x.  Set "apache_version" to Apache version
-(as a string) to get highlighting for another version.	Example: >
-
-	:let apache_version = "2.0"
-<
-
-		*asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k*
-ASSEMBLY	*ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax*
-		*ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim*
-
-Files matching "*.i" could be Progress or Assembly.  If the automatic detection
-doesn't work for you, or you don't edit Progress at all, use this in your
-startup vimrc: >
-   :let filetype_i = "asm"
-Replace "asm" with the type of assembly you use.
-
-There are many types of assembly languages that all use the same file name
-extensions.  Therefore you will have to select the type yourself, or add a
-line in the assembly file that Vim will recognize.  Currently these syntax
-files are included:
-	asm		GNU assembly (the default)
-	asm68k		Motorola 680x0 assembly
-	asmh8300	Hitachi H-8300 version of GNU assembly
-	ia64		Intel Itanium 64
-	fasm		Flat assembly (http://flatassembler.net)
-	masm		Microsoft assembly (probably works for any 80x86)
-	nasm		Netwide assembly
-	tasm		Turbo Assembly (with opcodes 80x86 up to Pentium, and
-			MMX)
-	pic		PIC assembly (currently for PIC16F84)
-
-The most flexible is to add a line in your assembly file containing: >
-	asmsyntax=nasm
-Replace "nasm" with the name of the real assembly syntax.  This line must be
-one of the first five lines in the file.  No non-white text must be
-immediately before or after this text.
-
-The syntax type can always be overruled for a specific buffer by setting the
-b:asmsyntax variable: >
-	:let b:asmsyntax = "nasm"
-
-If b:asmsyntax is not set, either automatically or by hand, then the value of
-the global variable asmsyntax is used.	This can be seen as a default assembly
-language: >
-	:let asmsyntax = "nasm"
-
-As a last resort, if nothing is defined, the "asm" syntax is used.
-
-
-Netwide assembler (nasm.vim) optional highlighting ~
-
-To enable a feature: >
-	:let   {variable}=1|set syntax=nasm
-To disable a feature: >
-	:unlet {variable}  |set syntax=nasm
-
-Variable		Highlight ~
-nasm_loose_syntax	unofficial parser allowed syntax not as Error
-			  (parser dependent; not recommended)
-nasm_ctx_outside_macro	contexts outside macro not as Error
-nasm_no_warn		potentially risky syntax not as ToDo
-
-
-ASPPERL and ASPVBS			*ft-aspperl-syntax* *ft-aspvbs-syntax*
-
-*.asp and *.asa files could be either Perl or Visual Basic script.  Since it's
-hard to detect this you can set two global variables to tell Vim what you are
-using.	For Perl script use: >
-	:let g:filetype_asa = "aspperl"
-	:let g:filetype_asp = "aspperl"
-For Visual Basic use: >
-	:let g:filetype_asa = "aspvbs"
-	:let g:filetype_asp = "aspvbs"
-
-
-BAAN						    *baan.vim* *baan-syntax*
-
-The baan.vim gives syntax support for BaanC of release BaanIV upto SSA ERP LN
-for both 3 GL and 4 GL programming. Large number of standard defines/constants
-are supported.
-
-Some special violation of coding standards will be signalled when one specify
-in ones |.vimrc|: >
-	let baan_code_stds=1
-
-*baan-folding*
-
-Syntax folding can be enabled at various levels through the variables
-mentioned below (Set those in your |.vimrc|). The more complex folding on
-source blocks and SQL can be CPU intensive.
-
-To allow any folding and enable folding at function level use: >
-	let baan_fold=1
-Folding can be enabled at source block level as if, while, for ,... The
-indentation preceding the begin/end keywords has to match (spaces are not
-considered equal to a tab). >
-	let baan_fold_block=1
-Folding can be enabled for embedded SQL blocks as SELECT, SELECTDO,
-SELECTEMPTY, ... The indentation preceding the begin/end keywords has to
-match (spaces are not considered equal to a tab). >
-	let baan_fold_sql=1
-Note: Block folding can result in many small folds. It is suggested to |:set|
-the options 'foldminlines' and 'foldnestmax' in |.vimrc| or use |:setlocal| in
-.../after/syntax/baan.vim (see |after-directory|). Eg: >
-	set foldminlines=5
-	set foldnestmax=6
-
-
-BASIC			*basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax*
-
-Both Visual Basic and "normal" basic use the extension ".bas".	To detect
-which one should be used, Vim checks for the string "VB_Name" in the first
-five lines of the file.  If it is not found, filetype will be "basic",
-otherwise "vb".  Files with the ".frm" extension will always be seen as Visual
-Basic.
-
-
-C							*c.vim* *ft-c-syntax*
-
-A few things in C highlighting are optional.  To enable them assign any value
-to the respective variable.  Example: >
-	:let c_comment_strings = 1
-To disable them use ":unlet".  Example: >
-	:unlet c_comment_strings
-
-Variable		Highlight ~
-c_gnu			GNU gcc specific items
-c_comment_strings	strings and numbers inside a comment
-c_space_errors		trailing white space and spaces before a 
-c_no_trail_space_error	 ... but no trailing spaces
-c_no_tab_space_error	 ... but no spaces before a 
-c_no_bracket_error	don't highlight {}; inside [] as errors
-c_no_curly_error	don't highlight {}; inside [] and () as errors;
-				except { and } in first column
-c_curly_error		highlight a missing }; this forces syncing from the
-			start of the file, can be slow
-c_no_ansi		don't do standard ANSI types and constants
-c_ansi_typedefs		 ... but do standard ANSI types
-c_ansi_constants	 ... but do standard ANSI constants
-c_no_utf		don't highlight \u and \U in strings
-c_syntax_for_h		use C syntax for *.h files, instead of C++
-c_no_if0		don't highlight "#if 0" blocks as comments
-c_no_cformat		don't highlight %-formats in strings
-c_no_c99		don't highlight C99 standard items
-
-When 'foldmethod' is set to "syntax" then /* */ comments and { } blocks will
-become a fold.  If you don't want comments to become a fold use: >
-	:let c_no_comment_fold = 1
-"#if 0" blocks are also folded, unless: >
-	:let c_no_if0_fold = 1
-
-If you notice highlighting errors while scrolling backwards, which are fixed
-when redrawing with CTRL-L, try setting the "c_minlines" internal variable
-to a larger number: >
-	:let c_minlines = 100
-This will make the syntax synchronization start 100 lines before the first
-displayed line.  The default value is 50 (15 when c_no_if0 is set).  The
-disadvantage of using a larger number is that redrawing can become slow.
-
-When using the "#if 0" / "#endif" comment highlighting, notice that this only
-works when the "#if 0" is within "c_minlines" from the top of the window.  If
-you have a long "#if 0" construct it will not be highlighted correctly.
-
-To match extra items in comments, use the cCommentGroup cluster.
-Example: >
-   :au Syntax c call MyCadd()
-   :function MyCadd()
-   :  syn keyword cMyItem contained Ni
-   :  syn cluster cCommentGroup add=cMyItem
-   :  hi link cMyItem Title
-   :endfun
-
-ANSI constants will be highlighted with the "cConstant" group.	This includes
-"NULL", "SIG_IGN" and others.  But not "TRUE", for example, because this is
-not in the ANSI standard.  If you find this confusing, remove the cConstant
-highlighting: >
-	:hi link cConstant NONE
-
-If you see '{' and '}' highlighted as an error where they are OK, reset the
-highlighting for cErrInParen and cErrInBracket.
-
-If you want to use folding in your C files, you can add these lines in a file
-in the "after" directory in 'runtimepath'.  For Unix this would be
-~/.vim/after/syntax/c.vim. >
-    syn sync fromstart
-    set foldmethod=syntax
-
-CH						*ch.vim* *ft-ch-syntax*
-
-C/C++ interpreter.  Ch has similar syntax highlighting to C and builds upon
-the C syntax file.  See |c.vim| for all the settings that are available for C.
-
-By setting a variable you can tell Vim to use Ch syntax for *.h files, instead
-of C or C++: >
-	:let ch_syntax_for_h = 1
-
-
-CHILL						*chill.vim* *ft-chill-syntax*
-
-Chill syntax highlighting is similar to C.  See |c.vim| for all the settings
-that are available.  Additionally there is:
-
-chill_space_errors	like c_space_errors
-chill_comment_string	like c_comment_strings
-chill_minlines		like c_minlines
-
-
-CHANGELOG				*changelog.vim* *ft-changelog-syntax*
-
-ChangeLog supports highlighting spaces at the start of a line.
-If you do not like this, add following line to your .vimrc: >
-	let g:changelog_spacing_errors = 0
-This works the next time you edit a changelog file.  You can also use
-"b:changelog_spacing_errors" to set this per buffer (before loading the syntax
-file).
-
-You can change the highlighting used, e.g., to flag the spaces as an error: >
-	:hi link ChangelogError Error
-Or to avoid the highlighting: >
-	:hi link ChangelogError NONE
-This works immediately.
-
-
-COBOL						*cobol.vim* *ft-cobol-syntax*
-
-COBOL highlighting has different needs for legacy code than it does for fresh
-development.  This is due to differences in what is being done (maintenance
-versus development) and other factors.	To enable legacy code highlighting,
-add this line to your .vimrc: >
-	:let cobol_legacy_code = 1
-To disable it again, use this: >
-	:unlet cobol_legacy_code
-
-
-COLD FUSION			*coldfusion.vim* *ft-coldfusion-syntax*
-
-The ColdFusion has its own version of HTML comments.  To turn on ColdFusion
-comment highlighting, add the following line to your startup file: >
-
-	:let html_wrong_comments = 1
-
-The ColdFusion syntax file is based on the HTML syntax file.
-
-
-CSH						*csh.vim* *ft-csh-syntax*
-
-This covers the shell named "csh".  Note that on some systems tcsh is actually
-used.
-
-Detecting whether a file is csh or tcsh is notoriously hard.  Some systems
-symlink /bin/csh to /bin/tcsh, making it almost impossible to distinguish
-between csh and tcsh.  In case VIM guesses wrong you can set the
-"filetype_csh" variable.  For using csh: >
-
-	:let filetype_csh = "csh"
-
-For using tcsh: >
-
-	:let filetype_csh = "tcsh"
-
-Any script with a tcsh extension or a standard tcsh filename (.tcshrc,
-tcsh.tcshrc, tcsh.login) will have filetype tcsh.  All other tcsh/csh scripts
-will be classified as tcsh, UNLESS the "filetype_csh" variable exists.  If the
-"filetype_csh" variable exists, the filetype will be set to the value of the
-variable.
-
-
-CYNLIB						*cynlib.vim* *ft-cynlib-syntax*
-
-Cynlib files are C++ files that use the Cynlib class library to enable
-hardware modelling and simulation using C++.  Typically Cynlib files have a .cc
-or a .cpp extension, which makes it very difficult to distinguish them from a
-normal C++ file.  Thus, to enable Cynlib highlighting for .cc files, add this
-line to your .vimrc file: >
-
-	:let cynlib_cyntax_for_cc=1
-
-Similarly for cpp files (this extension is only usually used in Windows) >
-
-	:let cynlib_cyntax_for_cpp=1
-
-To disable these again, use this: >
-
-	:unlet cynlib_cyntax_for_cc
-	:unlet cynlib_cyntax_for_cpp
-<
-
-CWEB						*cweb.vim* *ft-cweb-syntax*
-
-Files matching "*.w" could be Progress or cweb.  If the automatic detection
-doesn't work for you, or you don't edit Progress at all, use this in your
-startup vimrc: >
-   :let filetype_w = "cweb"
-
-
-DESKTOP					   *desktop.vim* *ft-desktop-syntax*
-
-Primary goal of this syntax file is to highlight .desktop and .directory files
-according to freedesktop.org standard:
-http://standards.freedesktop.org/desktop-entry-spec/latest/
-But actually almost none implements this standard fully.  Thus it will
-highlight all Unix ini files.  But you can force strict highlighting according
-to standard by placing this in your vimrc file: >
-	:let enforce_freedesktop_standard = 1
-
-
-DIRCOLORS			       *dircolors.vim* *ft-dircolors-syntax*
-
-The dircolors utility highlighting definition has one option.  It exists to
-provide compatibility with the Slackware GNU/Linux distributions version of
-the command.  It adds a few keywords that are generally ignored by most
-versions.  On Slackware systems, however, the utility accepts the keywords and
-uses them for processing.  To enable the Slackware keywords add the following
-line to your startup file: >
-	let dircolors_is_slackware = 1
-
-
-DOCBOOK					*docbk.vim* *ft-docbk-syntax* *docbook*
-DOCBOOK	XML				*docbkxml.vim* *ft-docbkxml-syntax*
-DOCBOOK	SGML				*docbksgml.vim* *ft-docbksgml-syntax*
-
-There are two types of DocBook files: SGML and XML.  To specify what type you
-are using the "b:docbk_type" variable should be set.  Vim does this for you
-automatically if it can recognize the type.  When Vim can't guess it the type
-defaults to XML.
-You can set the type manually: >
-	:let docbk_type = "sgml"
-or: >
-	:let docbk_type = "xml"
-You need to do this before loading the syntax file, which is complicated.
-Simpler is setting the filetype to "docbkxml" or "docbksgml": >
-	:set filetype=docbksgml
-or: >
-	:set filetype=docbkxml
-
-
-DOSBATCH				*dosbatch.vim* *ft-dosbatch-syntax*
-
-There is one option with highlighting DOS batch files.	This covers new
-extensions to the Command Interpreter introduced with Windows 2000 and
-is controlled by the variable dosbatch_cmdextversion.  For Windows NT
-this should have the value 1, and for Windows 2000 it should be 2.
-Select the version you want with the following line: >
-
-   :let dosbatch_cmdextversion = 1
-
-If this variable is not defined it defaults to a value of 2 to support
-Windows 2000.
-
-A second option covers whether *.btm files should be detected as type
-"dosbatch" (MS-DOS batch files) or type "btm" (4DOS batch files).  The latter
-is used by default.  You may select the former with the following line: >
-
-   :let g:dosbatch_syntax_for_btm = 1
-
-If this variable is undefined or zero, btm syntax is selected.
-
-
-DOXYGEN						*doxygen.vim* *doxygen-syntax*
-
-Doxygen generates code documentation using a special documentation format
-(similar to Javadoc).  This syntax script adds doxygen highlighting to c, cpp,
-idl and php files, and should also work with java.
-
-There are a few of ways to turn on doxygen formatting. It can be done
-explicitly or in a modeline by appending '.doxygen' to the syntax of the file.
-Example: >
-	:set syntax=c.doxygen
-or >
-	// vim:syntax=c.doxygen
-
-It can also be done automatically for C, C++, C# and IDL files by setting the
-global or buffer-local variable load_doxygen_syntax.  This is done by adding
-the following to your .vimrc. >
-	:let g:load_doxygen_syntax=1
-
-There are a couple of variables that have an effect on syntax highlighting, and
-are to do with non-standard highlighting options.
-
-Variable			Default	Effect ~
-g:doxygen_enhanced_color
-g:doxygen_enhanced_colour	0	Use non-standard highlighting for
-					doxygen comments.
-
-doxygen_my_rendering		0	Disable rendering of HTML bold, italic
-					and html_my_rendering underline.
-
-doxygen_javadoc_autobrief	1	Set to 0 to disable javadoc autobrief
-					colour highlighting.
-
-doxygen_end_punctuation		'[.]'	Set to regexp match for the ending
-					punctuation of brief
-
-There are also some hilight groups worth mentioning as they can be useful in
-configuration.
-
-Highlight			Effect ~
-doxygenErrorComment		The colour of an end-comment when missing
-				punctuation in a code, verbatim or dot section
-doxygenLinkError		The colour of an end-comment when missing the
-				\endlink from a \link section.
-
-
-DTD						*dtd.vim* *ft-dtd-syntax*
-
-The DTD syntax highlighting is case sensitive by default.  To disable
-case-sensitive highlighting, add the following line to your startup file: >
-
-	:let dtd_ignore_case=1
-
-The DTD syntax file will highlight unknown tags as errors.  If
-this is annoying, it can be turned off by setting: >
-
-	:let dtd_no_tag_errors=1
-
-before sourcing the dtd.vim syntax file.
-Parameter entity names are highlighted in the definition using the
-'Type' highlighting group and 'Comment' for punctuation and '%'.
-Parameter entity instances are highlighted using the 'Constant'
-highlighting group and the 'Type' highlighting group for the
-delimiters % and ;.  This can be turned off by setting: >
-
-	:let dtd_no_param_entities=1
-
-The DTD syntax file is also included by xml.vim to highlight included dtd's.
-
-
-EIFFEL					*eiffel.vim* *ft-eiffel-syntax*
-
-While Eiffel is not case-sensitive, its style guidelines are, and the
-syntax highlighting file encourages their use.  This also allows to
-highlight class names differently.  If you want to disable case-sensitive
-highlighting, add the following line to your startup file: >
-
-	:let eiffel_ignore_case=1
-
-Case still matters for class names and TODO marks in comments.
-
-Conversely, for even stricter checks, add one of the following lines: >
-
-	:let eiffel_strict=1
-	:let eiffel_pedantic=1
-
-Setting eiffel_strict will only catch improper capitalization for the
-five predefined words "Current", "Void", "Result", "Precursor", and
-"NONE", to warn against their accidental use as feature or class names.
-
-Setting eiffel_pedantic will enforce adherence to the Eiffel style
-guidelines fairly rigorously (like arbitrary mixes of upper- and
-lowercase letters as well as outdated ways to capitalize keywords).
-
-If you want to use the lower-case version of "Current", "Void",
-"Result", and "Precursor", you can use >
-
-	:let eiffel_lower_case_predef=1
-
-instead of completely turning case-sensitive highlighting off.
-
-Support for ISE's proposed new creation syntax that is already
-experimentally handled by some compilers can be enabled by: >
-
-	:let eiffel_ise=1
-
-Finally, some vendors support hexadecimal constants.  To handle them, add >
-
-	:let eiffel_hex_constants=1
-
-to your startup file.
-
-
-ERLANG						*erlang.vim* *ft-erlang-syntax*
-
-The erlang highlighting supports Erlang (ERicsson LANGuage).
-Erlang is case sensitive and default extension is ".erl".
-
-If you want to disable keywords highlighting, put in your .vimrc: >
-	:let erlang_keywords = 1
-If you want to disable built-in-functions highlighting, put in your
-.vimrc file: >
-	:let erlang_functions = 1
-If you want to disable special characters highlighting, put in
-your .vimrc: >
-	:let erlang_characters = 1
-
-
-FLEXWIKI				*flexwiki.vim* *ft-flexwiki-syntax*
-
-FlexWiki is an ASP.NET-based wiki package available at http://www.flexwiki.com
-
-Syntax highlighting is available for the most common elements of FlexWiki
-syntax. The associated ftplugin script sets some buffer-local options to make
-editing FlexWiki pages more convenient. FlexWiki considers a newline as the
-start of a new paragraph, so the ftplugin sets 'tw'=0 (unlimited line length),
-'wrap' (wrap long lines instead of using horizontal scrolling), 'linebreak'
-(to wrap at a character in 'breakat' instead of at the last char on screen),
-and so on. It also includes some keymaps that are disabled by default.
-
-If you want to enable the keymaps that make "j" and "k" and the cursor keys
-move up and down by display lines, add this to your .vimrc: >
-	:let flexwiki_maps = 1
-
-
-FORM						*form.vim* *ft-form-syntax*
-
-The coloring scheme for syntax elements in the FORM file uses the default
-modes Conditional, Number, Statement, Comment, PreProc, Type, and String,
-following the language specifications in 'Symbolic Manipulation with FORM' by
-J.A.M. Vermaseren, CAN, Netherlands, 1991.
-
-If you want include your own changes to the default colors, you have to
-redefine the following syntax groups:
-
-    - formConditional
-    - formNumber
-    - formStatement
-    - formHeaderStatement
-    - formComment
-    - formPreProc
-    - formDirective
-    - formType
-    - formString
-
-Note that the form.vim syntax file implements FORM preprocessor commands and
-directives per default in the same syntax group.
-
-A predefined enhanced color mode for FORM is available to distinguish between
-header statements and statements in the body of a FORM program.  To activate
-this mode define the following variable in your vimrc file >
-
-	:let form_enhanced_color=1
-
-The enhanced mode also takes advantage of additional color features for a dark
-gvim display.  Here, statements are colored LightYellow instead of Yellow, and
-conditionals are LightBlue for better distinction.
-
-
-FORTRAN					*fortran.vim* *ft-fortran-syntax*
-
-Default highlighting and dialect ~
-Highlighting appropriate for f95 (Fortran 95) is used by default.  This choice
-should be appropriate for most users most of the time because Fortran 95 is a
-superset of Fortran 90 and almost a superset of Fortran 77. Support for 
-Fortran 2003 and Fortran 2008 features has been introduced and is
-automatically available in the default (f95) highlighting.
-
-Fortran source code form ~
-Fortran 9x code can be in either fixed or free source form.  Note that the
-syntax highlighting will not be correct if the form is incorrectly set.
-
-When you create a new fortran file, the syntax script assumes fixed source
-form.  If you always use free source form, then >
-    :let fortran_free_source=1
-in your .vimrc prior to the :syntax on command.  If you always use fixed source
-form, then >
-    :let fortran_fixed_source=1
-in your .vimrc prior to the :syntax on command.
-
-If the form of the source code depends upon the file extension, then it is
-most convenient to set fortran_free_source in a ftplugin file.  For more
-information on ftplugin files, see |ftplugin|.  For example, if all your
-fortran files with an .f90 extension are written in free source form and the
-rest in fixed source form, add the following code to your ftplugin file >
-    let s:extfname = expand("%:e")
-    if s:extfname ==? "f90"
-	let fortran_free_source=1
-	unlet! fortran_fixed_source
-    else
-	let fortran_fixed_source=1
-	unlet! fortran_free_source
-    endif
-Note that this will work only if the "filetype plugin indent on" command
-precedes the "syntax on" command in your .vimrc file.
-
-When you edit an existing fortran file, the syntax script will assume free
-source form if the fortran_free_source variable has been set, and assumes
-fixed source form if the fortran_fixed_source variable has been set.  If
-neither of these variables have been set, the syntax script attempts to
-determine which source form has been used by examining the first five columns
-of the first 250 lines of your file.  If no signs of free source form are
-detected, then the file is assumed to be in fixed source form.  The algorithm
-should work in the vast majority of cases.  In some cases, such as a file that
-begins with 250 or more full-line comments, the script may incorrectly decide
-that the fortran code is in fixed form.  If that happens, just add a
-non-comment statement beginning anywhere in the first five columns of the
-first twenty five lines, save (:w) and then reload (:e!) the file.
-
-Tabs in fortran files ~
-Tabs are not recognized by the Fortran standards.  Tabs are not a good idea in
-fixed format fortran source code which requires fixed column boundaries.
-Therefore, tabs are marked as errors.  Nevertheless, some programmers like
-using tabs.  If your fortran files contain tabs, then you should set the
-variable fortran_have_tabs in your .vimrc with a command such as >
-    :let fortran_have_tabs=1
-placed prior to the :syntax on command.  Unfortunately, the use of tabs will
-mean that the syntax file will not be able to detect incorrect margins.
-
-Syntax folding of fortran files ~
-If you wish to use foldmethod=syntax, then you must first set the variable
-fortran_fold with a command such as >
-    :let fortran_fold=1
-to instruct the syntax script to define fold regions for program units, that
-is main programs starting with a program statement, subroutines, function
-subprograms, block data subprograms, interface blocks, and modules.  If you
-also set the variable fortran_fold_conditionals with a command such as >
-    :let fortran_fold_conditionals=1
-then fold regions will also be defined for do loops, if blocks, and select
-case constructs.  If you also set the variable
-fortran_fold_multilinecomments with a command such as >
-    :let fortran_fold_multilinecomments=1
-then fold regions will also be defined for three or more consecutive comment
-lines.  Note that defining fold regions can be slow for large files.
-
-If fortran_fold, and possibly fortran_fold_conditionals and/or
-fortran_fold_multilinecomments, have been set, then vim will fold your file if
-you set foldmethod=syntax.  Comments or blank lines placed between two program
-units are not folded because they are seen as not belonging to any program
-unit.
-
-More precise fortran syntax ~
-If you set the variable fortran_more_precise with a command such as >
-    :let fortran_more_precise=1
-then the syntax coloring will be more precise but slower.  In particular,
-statement labels used in do, goto and arithmetic if statements will be
-recognized, as will construct names at the end of a do, if, select or forall
-construct.
-
-Non-default fortran dialects ~
-The syntax script supports five Fortran dialects: f95, f90, f77, the Lahey
-subset elf90, and the Imagine1 subset F.
-
-If you use f77 with extensions, even common ones like do/enddo loops, do/while
-loops and free source form that are supported by most f77 compilers including
-g77 (GNU Fortran), then you will probably find the default highlighting
-satisfactory.  However, if you use strict f77 with no extensions, not even free
-source form or the MIL STD 1753 extensions, then the advantages of setting the
-dialect to f77 are that names such as SUM are recognized as user variable
-names and not highlighted as f9x intrinsic functions, that obsolete constructs
-such as ASSIGN statements are not highlighted as todo items, and that fixed
-source form will be assumed.
-
-If you use elf90 or F, the advantage of setting the dialect appropriately is
-that f90 features excluded from these dialects will be highlighted as todo
-items and that free source form will be assumed as required for these
-dialects.
-
-The dialect can be selected by setting the variable fortran_dialect.  The
-permissible values of fortran_dialect are case-sensitive and must be "f95",
-"f90", "f77", "elf" or "F".  Invalid values of fortran_dialect are ignored.
-
-If all your fortran files use the same dialect, set fortran_dialect in your
-.vimrc prior to your syntax on statement.  If the dialect depends upon the file
-extension, then it is most convenient to set it in a ftplugin file.  For more
-information on ftplugin files, see |ftplugin|.  For example, if all your
-fortran files with an .f90 extension are written in the elf subset, your
-ftplugin file should contain the code >
-    let s:extfname = expand("%:e")
-    if s:extfname ==? "f90"
-	let fortran_dialect="elf"
-    else
-	unlet! fortran_dialect
-    endif
-Note that this will work only if the "filetype plugin indent on" command
-precedes the "syntax on" command in your .vimrc file.
-
-Finer control is necessary if the file extension does not uniquely identify
-the dialect.  You can override the default dialect, on a file-by-file basis, by
-including a comment with the directive "fortran_dialect=xx" (where xx=f77 or
-elf or F or f90 or f95) in one of the first three lines in your file.  For
-example, your older .f files may be written in extended f77 but your newer
-ones may be F codes, and you would identify the latter by including in the
-first three lines of those files a Fortran comment of the form >
-  ! fortran_dialect=F
-F overrides elf if both directives are present.
-
-Limitations ~
-Parenthesis checking does not catch too few closing parentheses.  Hollerith
-strings are not recognized.  Some keywords may be highlighted incorrectly
-because Fortran90 has no reserved words.
-
-For further information related to fortran, see |ft-fortran-indent| and
-|ft-fortran-plugin|.
-
-
-FVWM CONFIGURATION FILES			*fvwm.vim* *ft-fvwm-syntax*
-
-In order for Vim to recognize Fvwm configuration files that do not match
-the patterns *fvwmrc* or *fvwm2rc* , you must put additional patterns
-appropriate to your system in your myfiletypes.vim file.  For these
-patterns, you must set the variable "b:fvwm_version" to the major version
-number of Fvwm, and the 'filetype' option to fvwm.
-
-For example, to make Vim identify all files in /etc/X11/fvwm2/
-as Fvwm2 configuration files, add the following: >
-
-  :au! BufNewFile,BufRead /etc/X11/fvwm2/*  let b:fvwm_version = 2 |
-					 \ set filetype=fvwm
-
-If you'd like Vim to highlight all valid color names, tell it where to
-find the color database (rgb.txt) on your system.  Do this by setting
-"rgb_file" to its location.  Assuming your color database is located
-in /usr/X11/lib/X11/, you should add the line >
-
-	:let rgb_file = "/usr/X11/lib/X11/rgb.txt"
-
-to your .vimrc file.
-
-
-GSP						*gsp.vim* *ft-gsp-syntax*
-
-The default coloring style for GSP pages is defined by |html.vim|, and
-the coloring for java code (within java tags or inline between backticks)
-is defined by |java.vim|.  The following HTML groups defined in |html.vim|
-are redefined to incorporate and highlight inline java code:
-
-    htmlString
-    htmlValue
-    htmlEndTag
-    htmlTag
-    htmlTagN
-
-Highlighting should look fine most of the places where you'd see inline
-java code, but in some special cases it may not.  To add another HTML
-group where you will have inline java code where it does not highlight
-correctly, just copy the line you want from |html.vim| and add gspJava
-to the contains clause.
-
-The backticks for inline java are highlighted according to the htmlError
-group to make them easier to see.
-
-
-GROFF						*groff.vim* *ft-groff-syntax*
-
-The groff syntax file is a wrapper for |nroff.vim|, see the notes
-under that heading for examples of use and configuration.  The purpose
-of this wrapper is to set up groff syntax extensions by setting the
-filetype from a |modeline| or in a personal filetype definitions file
-(see |filetype.txt|).
-
-
-HASKELL			     *haskell.vim* *lhaskell.vim* *ft-haskell-syntax*
-
-The Haskell syntax files support plain Haskell code as well as literate
-Haskell code, the latter in both Bird style and TeX style.  The Haskell
-syntax highlighting will also highlight C preprocessor directives.
-
-If you want to highlight delimiter characters (useful if you have a
-light-coloured background), add to your .vimrc: >
-	:let hs_highlight_delimiters = 1
-To treat True and False as keywords as opposed to ordinary identifiers,
-add: >
-	:let hs_highlight_boolean = 1
-To also treat the names of primitive types as keywords: >
-	:let hs_highlight_types = 1
-And to treat the names of even more relatively common types as keywords: >
-	:let hs_highlight_more_types = 1
-If you want to highlight the names of debugging functions, put in
-your .vimrc: >
-	:let hs_highlight_debug = 1
-
-The Haskell syntax highlighting also highlights C preprocessor
-directives, and flags lines that start with # but are not valid
-directives as erroneous.  This interferes with Haskell's syntax for
-operators, as they may start with #.  If you want to highlight those
-as operators as opposed to errors, put in your .vimrc: >
-	:let hs_allow_hash_operator = 1
-
-The syntax highlighting for literate Haskell code will try to
-automatically guess whether your literate Haskell code contains
-TeX markup or not, and correspondingly highlight TeX constructs
-or nothing at all.  You can override this globally by putting
-in your .vimrc >
-	:let lhs_markup = none
-for no highlighting at all, or >
-	:let lhs_markup = tex
-to force the highlighting to always try to highlight TeX markup.
-For more flexibility, you may also use buffer local versions of
-this variable, so e.g. >
-	:let b:lhs_markup = tex
-will force TeX highlighting for a particular buffer.  It has to be
-set before turning syntax highlighting on for the buffer or
-loading a file.
-
-
-HTML						*html.vim* *ft-html-syntax*
-
-The coloring scheme for tags in the HTML file works as follows.
-
-The  <> of opening tags are colored differently than the  of a closing tag.
-This is on purpose! For opening tags the 'Function' color is used, while for
-closing tags the 'Type' color is used (See syntax.vim to check how those are
-defined for you)
-
-Known tag names are colored the same way as statements in C.  Unknown tag
-names are colored with the same color as the <> or  respectively which
-makes it easy to spot errors
-
-Note that the same is true for argument (or attribute) names.  Known attribute
-names are colored differently than unknown ones.
-
-Some HTML tags are used to change the rendering of text.  The following tags
-are recognized by the html.vim syntax coloring file and change the way normal
-text is shown:      ( is used as an alias for ,
-while  as an alias for ), 

-

, , and <A>, but -only if used as a link (that is, it must include a href as in -<A href="somefile.html">). - -If you want to change how such text is rendered, you must redefine the -following syntax groups: - - - htmlBold - - htmlBoldUnderline - - htmlBoldUnderlineItalic - - htmlUnderline - - htmlUnderlineItalic - - htmlItalic - - htmlTitle for titles - - htmlH1 - htmlH6 for headings - -To make this redefinition work you must redefine them all with the exception -of the last two (htmlTitle and htmlH[1-6], which are optional) and define the -following variable in your vimrc (this is due to the order in which the files -are read during initialization) > - :let html_my_rendering=1 - -If you'd like to see an example download mysyntax.vim at -http://www.fleiner.com/vim/download.html - -You can also disable this rendering by adding the following line to your -vimrc file: > - :let html_no_rendering=1 - -HTML comments are rather special (see an HTML reference document for the -details), and the syntax coloring scheme will highlight all errors. -However, if you prefer to use the wrong style (starts with <!-- and -ends with --!>) you can define > - :let html_wrong_comments=1 - -JavaScript and Visual Basic embedded inside HTML documents are highlighted as -'Special' with statements, comments, strings and so on colored as in standard -programming languages. Note that only JavaScript and Visual Basic are currently -supported, no other scripting language has been added yet. - -Embedded and inlined cascading style sheets (CSS) are highlighted too. - -There are several html preprocessor languages out there. html.vim has been -written such that it should be trivial to include it. To do so add the -following two lines to the syntax coloring file for that language -(the example comes from the asp.vim file): - - runtime! syntax/html.vim - syn cluster htmlPreproc add=asp - -Now you just need to make sure that you add all regions that contain -the preprocessor language to the cluster htmlPreproc. - - -HTML/OS (by Aestiva) *htmlos.vim* *ft-htmlos-syntax* - -The coloring scheme for HTML/OS works as follows: - -Functions and variable names are the same color by default, because VIM -doesn't specify different colors for Functions and Identifiers. To change -this (which is recommended if you want function names to be recognizable in a -different color) you need to add the following line to either your ~/.vimrc: > - :hi Function term=underline cterm=bold ctermfg=LightGray - -Of course, the ctermfg can be a different color if you choose. - -Another issues that HTML/OS runs into is that there is no special filetype to -signify that it is a file with HTML/OS coding. You can change this by opening -a file and turning on HTML/OS syntax by doing the following: > - :set syntax=htmlos - -Lastly, it should be noted that the opening and closing characters to begin a -block of HTML/OS code can either be << or [[ and >> or ]], respectively. - - -IA64 *ia64.vim* *intel-itanium* *ft-ia64-syntax* - -Highlighting for the Intel Itanium 64 assembly language. See |asm.vim| for -how to recognize this filetype. - -To have *.inc files be recognized as IA64, add this to your .vimrc file: > - :let g:filetype_inc = "ia64" - - -INFORM *inform.vim* *ft-inform-syntax* - -Inform highlighting includes symbols provided by the Inform Library, as -most programs make extensive use of it. If do not wish Library symbols -to be highlighted add this to your vim startup: > - :let inform_highlight_simple=1 - -By default it is assumed that Inform programs are Z-machine targeted, -and highlights Z-machine assembly language symbols appropriately. If -you intend your program to be targeted to a Glulx/Glk environment you -need to add this to your startup sequence: > - :let inform_highlight_glulx=1 - -This will highlight Glulx opcodes instead, and also adds glk() to the -set of highlighted system functions. - -The Inform compiler will flag certain obsolete keywords as errors when -it encounters them. These keywords are normally highlighted as errors -by Vim. To prevent such error highlighting, you must add this to your -startup sequence: > - :let inform_suppress_obsolete=1 - -By default, the language features highlighted conform to Compiler -version 6.30 and Library version 6.11. If you are using an older -Inform development environment, you may with to add this to your -startup sequence: > - :let inform_highlight_old=1 - -IDL *idl.vim* *idl-syntax* - -IDL (Interface Definition Language) files are used to define RPC calls. In -Microsoft land, this is also used for defining COM interfaces and calls. - -IDL's structure is simple enough to permit a full grammar based approach to -rather than using a few heuristics. The result is large and somewhat -repetitive but seems to work. - -There are some Microsoft extensions to idl files that are here. Some of them -are disabled by defining idl_no_ms_extensions. - -The more complex of the extensions are disabled by defining idl_no_extensions. - -Variable Effect ~ - -idl_no_ms_extensions Disable some of the Microsoft specific - extensions -idl_no_extensions Disable complex extensions -idlsyntax_showerror Show IDL errors (can be rather intrusive, but - quite helpful) -idlsyntax_showerror_soft Use softer colours by default for errors - - -JAVA *java.vim* *ft-java-syntax* - -The java.vim syntax highlighting file offers several options: - -In Java 1.0.2 it was never possible to have braces inside parens, so this was -flagged as an error. Since Java 1.1 this is possible (with anonymous -classes), and therefore is no longer marked as an error. If you prefer the old -way, put the following line into your vim startup file: > - :let java_mark_braces_in_parens_as_errors=1 - -All identifiers in java.lang.* are always visible in all classes. To -highlight them use: > - :let java_highlight_java_lang_ids=1 - -You can also highlight identifiers of most standard Java packages if you -download the javaid.vim script at http://www.fleiner.com/vim/download.html. -If you prefer to only highlight identifiers of a certain package, say java.io -use the following: > - :let java_highlight_java_io=1 -Check the javaid.vim file for a list of all the packages that are supported. - -Function names are not highlighted, as the way to find functions depends on -how you write Java code. The syntax file knows two possible ways to highlight -functions: - -If you write function declarations that are always indented by either -a tab, 8 spaces or 2 spaces you may want to set > - :let java_highlight_functions="indent" -However, if you follow the Java guidelines about how functions and classes are -supposed to be named (with respect to upper and lowercase), use > - :let java_highlight_functions="style" -If both options do not work for you, but you would still want function -declarations to be highlighted create your own definitions by changing the -definitions in java.vim or by creating your own java.vim which includes the -original one and then adds the code to highlight functions. - -In Java 1.1 the functions System.out.println() and System.err.println() should -only be used for debugging. Therefore it is possible to highlight debugging -statements differently. To do this you must add the following definition in -your startup file: > - :let java_highlight_debug=1 -The result will be that those statements are highlighted as 'Special' -characters. If you prefer to have them highlighted differently you must define -new highlightings for the following groups.: - Debug, DebugSpecial, DebugString, DebugBoolean, DebugType -which are used for the statement itself, special characters used in debug -strings, strings, boolean constants and types (this, super) respectively. I -have opted to chose another background for those statements. - -In order to help you write code that can be easily ported between Java and -C++, all C++ keywords can be marked as an error in a Java program. To -have this add this line in your .vimrc file: > - :let java_allow_cpp_keywords = 0 - -Javadoc is a program that takes special comments out of Java program files and -creates HTML pages. The standard configuration will highlight this HTML code -similarly to HTML files (see |html.vim|). You can even add Javascript -and CSS inside this code (see below). There are four differences however: - 1. The title (all characters up to the first '.' which is followed by - some white space or up to the first '@') is colored differently (to change - the color change the group CommentTitle). - 2. The text is colored as 'Comment'. - 3. HTML comments are colored as 'Special' - 4. The special Javadoc tags (@see, @param, ...) are highlighted as specials - and the argument (for @see, @param, @exception) as Function. -To turn this feature off add the following line to your startup file: > - :let java_ignore_javadoc=1 - -If you use the special Javadoc comment highlighting described above you -can also turn on special highlighting for Javascript, visual basic -scripts and embedded CSS (stylesheets). This makes only sense if you -actually have Javadoc comments that include either Javascript or embedded -CSS. The options to use are > - :let java_javascript=1 - :let java_css=1 - :let java_vb=1 - -In order to highlight nested parens with different colors define colors -for javaParen, javaParen1 and javaParen2, for example with > - :hi link javaParen Comment -or > - :hi javaParen ctermfg=blue guifg=#0000ff - -If you notice highlighting errors while scrolling backwards, which are fixed -when redrawing with CTRL-L, try setting the "java_minlines" internal variable -to a larger number: > - :let java_minlines = 50 -This will make the syntax synchronization start 50 lines before the first -displayed line. The default value is 10. The disadvantage of using a larger -number is that redrawing can become slow. - - -LACE *lace.vim* *ft-lace-syntax* - -Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the -style guide lines are not. If you prefer case insensitive highlighting, just -define the vim variable 'lace_case_insensitive' in your startup file: > - :let lace_case_insensitive=1 - - -LEX *lex.vim* *ft-lex-syntax* - -Lex uses brute-force synchronizing as the "^%%$" section delimiter -gives no clue as to what section follows. Consequently, the value for > - :syn sync minlines=300 -may be changed by the user if s/he is experiencing synchronization -difficulties (such as may happen with large lex files). - - -LIFELINES *lifelines.vim* *ft-lifelines-syntax* - -To highlight deprecated functions as errors, add in your .vimrc: > - - :let g:lifelines_deprecated = 1 -< - -LISP *lisp.vim* *ft-lisp-syntax* - -The lisp syntax highlighting provides two options: > - - g:lisp_instring : if it exists, then "(...)" strings are highlighted - as if the contents of the string were lisp. - Useful for AutoLisp. - g:lisp_rainbow : if it exists and is nonzero, then differing levels - of parenthesization will receive different - highlighting. -< -The g:lisp_rainbow option provides 10 levels of individual colorization for -the parentheses and backquoted parentheses. Because of the quantity of -colorization levels, unlike non-rainbow highlighting, the rainbow mode -specifies its highlighting using ctermfg and guifg, thereby bypassing the -usual colorscheme control using standard highlighting groups. The actual -highlighting used depends on the dark/bright setting (see |'bg'|). - - -LITE *lite.vim* *ft-lite-syntax* - -There are two options for the lite syntax highlighting. - -If you like SQL syntax highlighting inside Strings, use this: > - - :let lite_sql_query = 1 - -For syncing, minlines defaults to 100. If you prefer another value, you can -set "lite_minlines" to the value you desire. Example: > - - :let lite_minlines = 200 - - -LPC *lpc.vim* *ft-lpc-syntax* - -LPC stands for a simple, memory-efficient language: Lars Pensj| C. The -file name of LPC is usually *.c. Recognizing these files as LPC would bother -users writing only C programs. If you want to use LPC syntax in Vim, you -should set a variable in your .vimrc file: > - - :let lpc_syntax_for_c = 1 - -If it doesn't work properly for some particular C or LPC files, use a -modeline. For a LPC file: - - // vim:set ft=lpc: - -For a C file that is recognized as LPC: - - // vim:set ft=c: - -If you don't want to set the variable, use the modeline in EVERY LPC file. - -There are several implementations for LPC, we intend to support most widely -used ones. Here the default LPC syntax is for MudOS series, for MudOS v22 -and before, you should turn off the sensible modifiers, and this will also -asserts the new efuns after v22 to be invalid, don't set this variable when -you are using the latest version of MudOS: > - - :let lpc_pre_v22 = 1 - -For LpMud 3.2 series of LPC: > - - :let lpc_compat_32 = 1 - -For LPC4 series of LPC: > - - :let lpc_use_lpc4_syntax = 1 - -For uLPC series of LPC: -uLPC has been developed to Pike, so you should use Pike syntax -instead, and the name of your source file should be *.pike - - -LUA *lua.vim* *ft-lua-syntax* - -This syntax file may be used for Lua 4.0, Lua 5.0 or Lua 5.1 (the latter is -the default). You can select one of these versions using the global variables -lua_version and lua_subversion. For example, to activate Lua -4.0 syntax highlighting, use this command: > - - :let lua_version = 4 - -If you are using Lua 5.0, use these commands: > - - :let lua_version = 5 - :let lua_subversion = 0 - -To restore highlighting for Lua 5.1: > - - :let lua_version = 5 - :let lua_subversion = 1 - - -MAIL *mail.vim* *ft-mail.vim* - -Vim highlights all the standard elements of an email (headers, signatures, -quoted text and URLs / email addresses). In keeping with standard conventions, -signatures begin in a line containing only "--" followed optionally by -whitespaces and end with a newline. - -Vim treats lines beginning with ']', '}', '|', '>' or a word followed by '>' -as quoted text. However Vim highlights headers and signatures in quoted text -only if the text is quoted with '>' (optionally followed by one space). - -By default mail.vim synchronises syntax to 100 lines before the first -displayed line. If you have a slow machine, and generally deal with emails -with short headers, you can change this to a smaller value: > - - :let mail_minlines = 30 - - -MAKE *make.vim* *ft-make-syntax* - -In makefiles, commands are usually highlighted to make it easy for you to spot -errors. However, this may be too much coloring for you. You can turn this -feature off by using: > - - :let make_no_commands = 1 - - -MAPLE *maple.vim* *ft-maple-syntax* - -Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language -supports many packages of functions which are selectively loaded by the user. -The standard set of packages' functions as supplied in Maple V release 4 may be -highlighted at the user's discretion. Users may place in their .vimrc file: > - - :let mvpkg_all= 1 - -to get all package functions highlighted, or users may select any subset by -choosing a variable/package from the table below and setting that variable to -1, also in their .vimrc file (prior to sourcing -$VIMRUNTIME/syntax/syntax.vim). - - Table of Maple V Package Function Selectors > - mv_DEtools mv_genfunc mv_networks mv_process - mv_Galois mv_geometry mv_numapprox mv_simplex - mv_GaussInt mv_grobner mv_numtheory mv_stats - mv_LREtools mv_group mv_orthopoly mv_student - mv_combinat mv_inttrans mv_padic mv_sumtools - mv_combstruct mv_liesymm mv_plots mv_tensor - mv_difforms mv_linalg mv_plottools mv_totorder - mv_finance mv_logic mv_powseries - - -MATHEMATICA *mma.vim* *ft-mma-syntax* *ft-mathematica-syntax* - -Empty *.m files will automatically be presumed to be Matlab files unless you -have the following in your .vimrc: > - - let filetype_m = "mma" - - -MOO *moo.vim* *ft-moo-syntax* - -If you use C-style comments inside expressions and find it mangles your -highlighting, you may want to use extended (slow!) matches for C-style -comments: > - - :let moo_extended_cstyle_comments = 1 - -To disable highlighting of pronoun substitution patterns inside strings: > - - :let moo_no_pronoun_sub = 1 - -To disable highlighting of the regular expression operator '%|', and matching -'%(' and '%)' inside strings: > - - :let moo_no_regexp = 1 - -Unmatched double quotes can be recognized and highlighted as errors: > - - :let moo_unmatched_quotes = 1 - -To highlight builtin properties (.name, .location, .programmer etc.): > - - :let moo_builtin_properties = 1 - -Unknown builtin functions can be recognized and highlighted as errors. If you -use this option, add your own extensions to the mooKnownBuiltinFunction group. -To enable this option: > - - :let moo_unknown_builtin_functions = 1 - -An example of adding sprintf() to the list of known builtin functions: > - - :syn keyword mooKnownBuiltinFunction sprintf contained - - -MSQL *msql.vim* *ft-msql-syntax* - -There are two options for the msql syntax highlighting. - -If you like SQL syntax highlighting inside Strings, use this: > - - :let msql_sql_query = 1 - -For syncing, minlines defaults to 100. If you prefer another value, you can -set "msql_minlines" to the value you desire. Example: > - - :let msql_minlines = 200 - - -NCF *ncf.vim* *ft-ncf-syntax* - -There is one option for NCF syntax highlighting. - -If you want to have unrecognized (by ncf.vim) statements highlighted as -errors, use this: > - - :let ncf_highlight_unknowns = 1 - -If you don't want to highlight these errors, leave it unset. - - -NROFF *nroff.vim* *ft-nroff-syntax* - -The nroff syntax file works with AT&T n/troff out of the box. You need to -activate the GNU groff extra features included in the syntax file before you -can use them. - -For example, Linux and BSD distributions use groff as their default text -processing package. In order to activate the extra syntax highlighting -features for groff, add the following option to your start-up files: > - - :let b:nroff_is_groff = 1 - -Groff is different from the old AT&T n/troff that you may still find in -Solaris. Groff macro and request names can be longer than 2 characters and -there are extensions to the language primitives. For example, in AT&T troff -you access the year as a 2-digit number with the request \(yr. In groff you -can use the same request, recognized for compatibility, or you can use groff's -native syntax, \[yr]. Furthermore, you can use a 4-digit year directly: -\[year]. Macro requests can be longer than 2 characters, for example, GNU mm -accepts the requests ".VERBON" and ".VERBOFF" for creating verbatim -environments. - -In order to obtain the best formatted output g/troff can give you, you should -follow a few simple rules about spacing and punctuation. - -1. Do not leave empty spaces at the end of lines. - -2. Leave one space and one space only after an end-of-sentence period, - exclamation mark, etc. - -3. For reasons stated below, it is best to follow all period marks with a - carriage return. - -The reason behind these unusual tips is that g/n/troff have a line breaking -algorithm that can be easily upset if you don't follow the rules given above. - -Unlike TeX, troff fills text line-by-line, not paragraph-by-paragraph and, -furthermore, it does not have a concept of glue or stretch, all horizontal and -vertical space input will be output as is. - -Therefore, you should be careful about not using more space between sentences -than you intend to have in your final document. For this reason, the common -practice is to insert a carriage return immediately after all punctuation -marks. If you want to have "even" text in your final processed output, you -need to maintaining regular spacing in the input text. To mark both trailing -spaces and two or more spaces after a punctuation as an error, use: > - - :let nroff_space_errors = 1 - -Another technique to detect extra spacing and other errors that will interfere -with the correct typesetting of your file, is to define an eye-catching -highlighting definition for the syntax groups "nroffDefinition" and -"nroffDefSpecial" in your configuration files. For example: > - - hi def nroffDefinition term=italic cterm=italic gui=reverse - hi def nroffDefSpecial term=italic,bold cterm=italic,bold - \ gui=reverse,bold - -If you want to navigate preprocessor entries in your source file as easily as -with section markers, you can activate the following option in your .vimrc -file: > - - let b:preprocs_as_sections = 1 - -As well, the syntax file adds an extra paragraph marker for the extended -paragraph macro (.XP) in the ms package. - -Finally, there is a |groff.vim| syntax file that can be used for enabling -groff syntax highlighting either on a file basis or globally by default. - - -OCAML *ocaml.vim* *ft-ocaml-syntax* - -The OCaml syntax file handles files having the following prefixes: .ml, -.mli, .mll and .mly. By setting the following variable > - - :let ocaml_revised = 1 - -you can switch from standard OCaml-syntax to revised syntax as supported -by the camlp4 preprocessor. Setting the variable > - - :let ocaml_noend_error = 1 - -prevents highlighting of "end" as error, which is useful when sources -contain very long structures that Vim does not synchronize anymore. - - -PAPP *papp.vim* *ft-papp-syntax* - -The PApp syntax file handles .papp files and, to a lesser extend, .pxml -and .pxsl files which are all a mixture of perl/xml/html/other using xml -as the top-level file format. By default everything inside phtml or pxml -sections is treated as a string with embedded preprocessor commands. If -you set the variable: > - - :let papp_include_html=1 - -in your startup file it will try to syntax-hilight html code inside phtml -sections, but this is relatively slow and much too colourful to be able to -edit sensibly. ;) - -The newest version of the papp.vim syntax file can usually be found at -http://papp.plan9.de. - - -PASCAL *pascal.vim* *ft-pascal-syntax* - -Files matching "*.p" could be Progress or Pascal. If the automatic detection -doesn't work for you, or you don't edit Progress at all, use this in your -startup vimrc: > - - :let filetype_p = "pascal" - -The Pascal syntax file has been extended to take into account some extensions -provided by Turbo Pascal, Free Pascal Compiler and GNU Pascal Compiler. -Delphi keywords are also supported. By default, Turbo Pascal 7.0 features are -enabled. If you prefer to stick with the standard Pascal keywords, add the -following line to your startup file: > - - :let pascal_traditional=1 - -To switch on Delphi specific constructions (such as one-line comments, -keywords, etc): > - - :let pascal_delphi=1 - - -The option pascal_symbol_operator controls whether symbol operators such as +, -*, .., etc. are displayed using the Operator color or not. To colorize symbol -operators, add the following line to your startup file: > - - :let pascal_symbol_operator=1 - -Some functions are highlighted by default. To switch it off: > - - :let pascal_no_functions=1 - -Furthermore, there are specific variables for some compilers. Besides -pascal_delphi, there are pascal_gpc and pascal_fpc. Default extensions try to -match Turbo Pascal. > - - :let pascal_gpc=1 - -or > - - :let pascal_fpc=1 - -To ensure that strings are defined on a single line, you can define the -pascal_one_line_string variable. > - - :let pascal_one_line_string=1 - -If you dislike <Tab> chars, you can set the pascal_no_tabs variable. Tabs -will be highlighted as Error. > - - :let pascal_no_tabs=1 - - - -PERL *perl.vim* *ft-perl-syntax* - -There are a number of possible options to the perl syntax highlighting. - -If you use POD files or POD segments, you might: > - - :let perl_include_pod = 1 - -The reduce the complexity of parsing (and increase performance) you can switch -off two elements in the parsing of variable names and contents. > - -To handle package references in variable and function names not differently -from the rest of the name (like 'PkgName::' in '$PkgName::VarName'): > - - :let perl_no_scope_in_variables = 1 - -(In Vim 6.x it was the other way around: "perl_want_scope_in_variables" -enabled it.) - -If you do not want complex things like '@{${"foo"}}' to be parsed: > - - :let perl_no_extended_vars = 1 - -(In Vim 6.x it was the other way around: "perl_extended_vars" enabled it.) - -The coloring strings can be changed. By default strings and qq friends will be -highlighted like the first line. If you set the variable -perl_string_as_statement, it will be highlighted as in the second line. - - "hello world!"; qq|hello world|; - ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N (unlet perl_string_as_statement) - S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^SN (let perl_string_as_statement) - -(^ = perlString, S = perlStatement, N = None at all) - -The syncing has 3 options. The first two switch off some triggering of -synchronization and should only be needed in case it fails to work properly. -If while scrolling all of a sudden the whole screen changes color completely -then you should try and switch off one of those. Let me know if you can figure -out the line that causes the mistake. - -One triggers on "^\s*sub\s*" and the other on "^[$@%]" more or less. > - - :let perl_no_sync_on_sub - :let perl_no_sync_on_global_var - -Below you can set the maximum distance VIM should look for starting points for -its attempts in syntax highlighting. > - - :let perl_sync_dist = 100 - -If you want to use folding with perl, set perl_fold: > - - :let perl_fold = 1 - -If you want to fold blocks in if statements, etc. as well set the following: > - - :let perl_fold_blocks = 1 - -To avoid folding packages or subs when perl_fold is let, let the appropriate -variable(s): > - - :unlet perl_nofold_packages - :unlet perl_nofold_subs - - - -PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* - -[note: previously this was called "php3", but since it now also supports php4 -it has been renamed to "php"] - -There are the following options for the php syntax highlighting. - -If you like SQL syntax highlighting inside Strings: > - - let php_sql_query = 1 - -For highlighting the Baselib methods: > - - let php_baselib = 1 - -Enable HTML syntax highlighting inside strings: > - - let php_htmlInStrings = 1 - -Using the old colorstyle: > - - let php_oldStyle = 1 - -Enable highlighting ASP-style short tags: > - - let php_asp_tags = 1 - -Disable short tags: > - - let php_noShortTags = 1 - -For highlighting parent error ] or ): > - - let php_parent_error_close = 1 - -For skipping an php end tag, if there exists an open ( or [ without a closing -one: > - - let php_parent_error_open = 1 - -Enable folding for classes and functions: > - - let php_folding = 1 - -Selecting syncing method: > - - let php_sync_method = x - -x = -1 to sync by search (default), -x > 0 to sync at least x lines backwards, -x = 0 to sync from start. - - -PLAINTEX *plaintex.vim* *ft-plaintex-syntax* - -TeX is a typesetting language, and plaintex is the file type for the "plain" -variant of TeX. If you never want your *.tex files recognized as plain TeX, -see |ft-tex-plugin|. - -This syntax file has the option > - - let g:plaintex_delimiters = 1 - -if you want to highlight brackets "[]" and braces "{}". - - -PPWIZARD *ppwiz.vim* *ft-ppwiz-syntax* - -PPWizard is a preprocessor for HTML and OS/2 INF files - -This syntax file has the options: - -- ppwiz_highlight_defs : determines highlighting mode for PPWizard's - definitions. Possible values are - - ppwiz_highlight_defs = 1 : PPWizard #define statements retain the - colors of their contents (e.g. PPWizard macros and variables) - - ppwiz_highlight_defs = 2 : preprocessor #define and #evaluate - statements are shown in a single color with the exception of line - continuation symbols - - The default setting for ppwiz_highlight_defs is 1. - -- ppwiz_with_html : If the value is 1 (the default), highlight literal - HTML code; if 0, treat HTML code like ordinary text. - - -PHTML *phtml.vim* *ft-phtml-syntax* - -There are two options for the phtml syntax highlighting. - -If you like SQL syntax highlighting inside Strings, use this: > - - :let phtml_sql_query = 1 - -For syncing, minlines defaults to 100. If you prefer another value, you can -set "phtml_minlines" to the value you desire. Example: > - - :let phtml_minlines = 200 - - -POSTSCRIPT *postscr.vim* *ft-postscr-syntax* - -There are several options when it comes to highlighting PostScript. - -First which version of the PostScript language to highlight. There are -currently three defined language versions, or levels. Level 1 is the original -and base version, and includes all extensions prior to the release of level 2. -Level 2 is the most common version around, and includes its own set of -extensions prior to the release of level 3. Level 3 is currently the highest -level supported. You select which level of the PostScript language you want -highlighted by defining the postscr_level variable as follows: > - - :let postscr_level=2 - -If this variable is not defined it defaults to 2 (level 2) since this is -the most prevalent version currently. - -Note, not all PS interpreters will support all language features for a -particular language level. In particular the %!PS-Adobe-3.0 at the start of -PS files does NOT mean the PostScript present is level 3 PostScript! - -If you are working with Display PostScript, you can include highlighting of -Display PS language features by defining the postscr_display variable as -follows: > - - :let postscr_display=1 - -If you are working with Ghostscript, you can include highlighting of -Ghostscript specific language features by defining the variable -postscr_ghostscript as follows: > - - :let postscr_ghostscript=1 - -PostScript is a large language, with many predefined elements. While it -useful to have all these elements highlighted, on slower machines this can -cause Vim to slow down. In an attempt to be machine friendly font names and -character encodings are not highlighted by default. Unless you are working -explicitly with either of these this should be ok. If you want them to be -highlighted you should set one or both of the following variables: > - - :let postscr_fonts=1 - :let postscr_encodings=1 - -There is a stylistic option to the highlighting of and, or, and not. In -PostScript the function of these operators depends on the types of their -operands - if the operands are booleans then they are the logical operators, -if they are integers then they are binary operators. As binary and logical -operators can be highlighted differently they have to be highlighted one way -or the other. By default they are treated as logical operators. They can be -highlighted as binary operators by defining the variable -postscr_andornot_binary as follows: > - - :let postscr_andornot_binary=1 -< - - *ptcap.vim* *ft-printcap-syntax* -PRINTCAP + TERMCAP *ft-ptcap-syntax* *ft-termcap-syntax* - -This syntax file applies to the printcap and termcap databases. - -In order for Vim to recognize printcap/termcap files that do not match -the patterns *printcap*, or *termcap*, you must put additional patterns -appropriate to your system in your |myfiletypefile| file. For these -patterns, you must set the variable "b:ptcap_type" to either "print" or -"term", and then the 'filetype' option to ptcap. - -For example, to make Vim identify all files in /etc/termcaps/ as termcap -files, add the following: > - - :au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" | - \ set filetype=ptcap - -If you notice highlighting errors while scrolling backwards, which -are fixed when redrawing with CTRL-L, try setting the "ptcap_minlines" -internal variable to a larger number: > - - :let ptcap_minlines = 50 - -(The default is 20 lines.) - - -PROGRESS *progress.vim* *ft-progress-syntax* - -Files matching "*.w" could be Progress or cweb. If the automatic detection -doesn't work for you, or you don't edit cweb at all, use this in your -startup vimrc: > - :let filetype_w = "progress" -The same happens for "*.i", which could be assembly, and "*.p", which could be -Pascal. Use this if you don't use assembly and Pascal: > - :let filetype_i = "progress" - :let filetype_p = "progress" - - -PYTHON *python.vim* *ft-python-syntax* - -There are four options to control Python syntax highlighting. - -For highlighted numbers: > - :let python_highlight_numbers = 1 - -For highlighted builtin functions: > - :let python_highlight_builtins = 1 - -For highlighted standard exceptions: > - :let python_highlight_exceptions = 1 - -For highlighted trailing whitespace and mix of spaces and tabs: - :let python_highlight_space_errors = 1 - -If you want all possible Python highlighting (the same as setting the -preceding three options): > - :let python_highlight_all = 1 - - -QUAKE *quake.vim* *ft-quake-syntax* - -The Quake syntax definition should work for most any FPS (First Person -Shooter) based on one of the Quake engines. However, the command names vary -a bit between the three games (Quake, Quake 2, and Quake 3 Arena) so the -syntax definition checks for the existence of three global variables to allow -users to specify what commands are legal in their files. The three variables -can be set for the following effects: - -set to highlight commands only available in Quake: > - :let quake_is_quake1 = 1 - -set to highlight commands only available in Quake 2: > - :let quake_is_quake2 = 1 - -set to highlight commands only available in Quake 3 Arena: > - :let quake_is_quake3 = 1 - -Any combination of these three variables is legal, but might highlight more -commands than are actually available to you by the game. - - -READLINE *readline.vim* *ft-readline-syntax* - -The readline library is primarily used by the BASH shell, which adds quite a -few commands and options to the ones already available. To highlight these -items as well you can add the following to your |vimrc| or just type it in the -command line before loading a file with the readline syntax: > - let readline_has_bash = 1 - -This will add highlighting for the commands that BASH (version 2.05a and -later, and part earlier) adds. - - -REXX *rexx.vim* *ft-rexx-syntax* - -If you notice highlighting errors while scrolling backwards, which are fixed -when redrawing with CTRL-L, try setting the "rexx_minlines" internal variable -to a larger number: > - :let rexx_minlines = 50 -This will make the syntax synchronization start 50 lines before the first -displayed line. The default value is 10. The disadvantage of using a larger -number is that redrawing can become slow. - - -RUBY *ruby.vim* *ft-ruby-syntax* - -There are a number of options to the Ruby syntax highlighting. - -By default, the "end" keyword is colorized according to the opening statement -of the block it closes. While useful, this feature can be expensive; if you -experience slow redrawing (or you are on a terminal with poor color support) -you may want to turn it off by defining the "ruby_no_expensive" variable: > - - :let ruby_no_expensive = 1 -< -In this case the same color will be used for all control keywords. - -If you do want this feature enabled, but notice highlighting errors while -scrolling backwards, which are fixed when redrawing with CTRL-L, try setting -the "ruby_minlines" variable to a value larger than 50: > - - :let ruby_minlines = 100 -< -Ideally, this value should be a number of lines large enough to embrace your -largest class or module. - -Highlighting of special identifiers can be disabled by removing the -rubyIdentifier highlighting: > - - :hi link rubyIdentifier NONE -< -This will prevent highlighting of special identifiers like "ConstantName", -"$global_var", "@@class_var", "@instance_var", "| block_param |", and -":symbol". - -Significant methods of Kernel, Module and Object are highlighted by default. -This can be disabled by defining "ruby_no_special_methods": > - - :let ruby_no_special_methods = 1 -< -This will prevent highlighting of important methods such as "require", "attr", -"private", "raise" and "proc". - -Ruby operators can be highlighted. This is enabled by defining -"ruby_operators": > - - :let ruby_operators = 1 -< -Whitespace errors can be highlighted by defining "ruby_space_errors": > - - :let ruby_space_errors = 1 -< -This will highlight trailing whitespace and tabs preceded by a space character -as errors. This can be refined by defining "ruby_no_trail_space_error" and -"ruby_no_tab_space_error" which will ignore trailing whitespace and tabs after -spaces respectively. - -Folding can be enabled by defining "ruby_fold": > - - :let ruby_fold = 1 -< -This will set the 'foldmethod' option to "syntax" and allow folding of -classes, modules, methods, code blocks, heredocs and comments. - -Folding of multiline comments can be disabled by defining -"ruby_no_comment_fold": > - - :let ruby_no_comment_fold = 1 -< - -SCHEME *scheme.vim* *ft-scheme-syntax* - -By default only R5RS keywords are highlighted and properly indented. - -MzScheme-specific stuff will be used if b:is_mzscheme or g:is_mzscheme -variables are defined. - -Also scheme.vim supports keywords of the Chicken Scheme->C compiler. Define -b:is_chicken or g:is_chicken, if you need them. - - -SDL *sdl.vim* *ft-sdl-syntax* - -The SDL highlighting probably misses a few keywords, but SDL has so many -of them it's almost impossibly to cope. - -The new standard, SDL-2000, specifies that all identifiers are -case-sensitive (which was not so before), and that all keywords can be -used either completely lowercase or completely uppercase. To have the -highlighting reflect this, you can set the following variable: > - :let sdl_2000=1 - -This also sets many new keywords. If you want to disable the old -keywords, which is probably a good idea, use: > - :let SDL_no_96=1 - - -The indentation is probably also incomplete, but right now I am very -satisfied with it for my own projects. - - -SED *sed.vim* *ft-sed-syntax* - -To make tabs stand out from regular blanks (accomplished by using Todo -highlighting on the tabs), define "highlight_sedtabs" by putting > - - :let highlight_sedtabs = 1 - -in the vimrc file. (This special highlighting only applies for tabs -inside search patterns, replacement texts, addresses or text included -by an Append/Change/Insert command.) If you enable this option, it is -also a good idea to set the tab width to one character; by doing that, -you can easily count the number of tabs in a string. - -Bugs: - - The transform command (y) is treated exactly like the substitute - command. This means that, as far as this syntax file is concerned, - transform accepts the same flags as substitute, which is wrong. - (Transform accepts no flags.) I tolerate this bug because the - involved commands need very complex treatment (95 patterns, one for - each plausible pattern delimiter). - - -SGML *sgml.vim* *ft-sgml-syntax* - -The coloring scheme for tags in the SGML file works as follows. - -The <> of opening tags are colored differently than the </> of a closing tag. -This is on purpose! For opening tags the 'Function' color is used, while for -closing tags the 'Type' color is used (See syntax.vim to check how those are -defined for you) - -Known tag names are colored the same way as statements in C. Unknown tag -names are not colored which makes it easy to spot errors. - -Note that the same is true for argument (or attribute) names. Known attribute -names are colored differently than unknown ones. - -Some SGML tags are used to change the rendering of text. The following tags -are recognized by the sgml.vim syntax coloring file and change the way normal -text is shown: <varname> <emphasis> <command> <function> <literal> -<replaceable> <ulink> and <link>. - -If you want to change how such text is rendered, you must redefine the -following syntax groups: - - - sgmlBold - - sgmlBoldItalic - - sgmlUnderline - - sgmlItalic - - sgmlLink for links - -To make this redefinition work you must redefine them all and define the -following variable in your vimrc (this is due to the order in which the files -are read during initialization) > - let sgml_my_rendering=1 - -You can also disable this rendering by adding the following line to your -vimrc file: > - let sgml_no_rendering=1 - -(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>) - - -SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax* - -This covers the "normal" Unix (Bourne) sh, bash and the Korn shell. - -Vim attempts to determine which shell type is in use by specifying that -various filenames are of specific types: > - - ksh : .kshrc* *.ksh - bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash -< -If none of these cases pertain, then the first line of the file is examined -(ex. /bin/sh /bin/ksh /bin/bash). If the first line specifies a shelltype, -then that shelltype is used. However some files (ex. .profile) are known to -be shell files but the type is not apparent. Furthermore, on many systems -sh is symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (Posix). - -One may specify a global default by instantiating one of the following three -variables in your <.vimrc>: - - ksh: > - let g:is_kornshell = 1 -< posix: (using this is the same as setting is_kornshell to 1) > - let g:is_posix = 1 -< bash: > - let g:is_bash = 1 -< sh: (default) Bourne shell > - let g:is_sh = 1 - -If there's no "#! ..." line, and the user hasn't availed himself/herself of a -default sh.vim syntax setting as just shown, then syntax/sh.vim will assume -the Bourne shell syntax. No need to quote RFCs or market penetration -statistics in error reports, please -- just select the default version of the -sh your system uses in your <.vimrc>. - -The syntax/sh.vim file provides several levels of syntax-based folding: > - - let g:sh_fold_enabled= 0 (default, no syntax folding) - let g:sh_fold_enabled= 1 (enable function folding) - let g:sh_fold_enabled= 2 (enable heredoc folding) - let g:sh_fold_enabled= 4 (enable if/do/for folding) -> -then various syntax items (HereDocuments and function bodies) become -syntax-foldable (see |:syn-fold|). You also may add these together -to get multiple types of folding: > - - let g:sh_fold_enabled= 3 (enables function and heredoc folding) - -If you notice highlighting errors while scrolling backwards which are fixed -when one redraws with CTRL-L, try setting the "sh_minlines" internal variable -to a larger number. Example: > - - let sh_minlines = 500 - -This will make syntax synchronization start 500 lines before the first -displayed line. The default value is 200. The disadvantage of using a larger -number is that redrawing can become slow. - -If you don't have much to synchronize on, displaying can be very slow. To -reduce this, the "sh_maxlines" internal variable can be set. Example: > - - let sh_maxlines = 100 -< -The default is to use the twice sh_minlines. Set it to a smaller number to -speed up displaying. The disadvantage is that highlight errors may appear. - - -SPEEDUP (AspenTech plant simulator) *spup.vim* *ft-spup-syntax* - -The Speedup syntax file has some options: - -- strict_subsections : If this variable is defined, only keywords for - sections and subsections will be highlighted as statements but not - other keywords (like WITHIN in the OPERATION section). - -- highlight_types : Definition of this variable causes stream types - like temperature or pressure to be highlighted as Type, not as a - plain Identifier. Included are the types that are usually found in - the DECLARE section; if you defined own types, you have to include - them in the syntax file. - -- oneline_comments : this value ranges from 1 to 3 and determines the - highlighting of # style comments. - - oneline_comments = 1 : allow normal Speedup code after an even - number of #s. - - oneline_comments = 2 : show code starting with the second # as - error. This is the default setting. - - oneline_comments = 3 : show the whole line as error if it contains - more than one #. - -Since especially OPERATION sections tend to become very large due to -PRESETting variables, syncing may be critical. If your computer is -fast enough, you can increase minlines and/or maxlines near the end of -the syntax file. - - -SQL *sql.vim* *ft-sql-syntax* - *sqlinformix.vim* *ft-sqlinformix-syntax* - *sqlanywhere.vim* *ft-sqlanywhere-syntax* - -While there is an ANSI standard for SQL, most database engines add their own -custom extensions. Vim currently supports the Oracle and Informix dialects of -SQL. Vim assumes "*.sql" files are Oracle SQL by default. - -Vim currently has SQL support for a variety of different vendors via syntax -scripts. You can change Vim's default from Oracle to any of the current SQL -supported types. You can also easily alter the SQL dialect being used on a -buffer by buffer basis. - -For more detailed instructions see |ft_sql.txt|. - - -TCSH *tcsh.vim* *ft-tcsh-syntax* - -This covers the shell named "tcsh". It is a superset of csh. See |csh.vim| -for how the filetype is detected. - -Tcsh does not allow \" in strings unless the "backslash_quote" shell variable -is set. If you want VIM to assume that no backslash quote constructs exist add -this line to your .vimrc: > - - :let tcsh_backslash_quote = 0 - -If you notice highlighting errors while scrolling backwards, which are fixed -when redrawing with CTRL-L, try setting the "tcsh_minlines" internal variable -to a larger number: > - - :let tcsh_minlines = 1000 - -This will make the syntax synchronization start 1000 lines before the first -displayed line. If you set "tcsh_minlines" to "fromstart", then -synchronization is done from the start of the file. The default value for -tcsh_minlines is 100. The disadvantage of using a larger number is that -redrawing can become slow. - - -TEX *tex.vim* *ft-tex-syntax* - - *tex-folding* - Tex: Want Syntax Folding? ~ - -As of version 28 of <syntax/tex.vim>, syntax-based folding of parts, chapters, -sections, subsections, etc are supported. Put > - let g:tex_fold_enabled=1 -in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a -modeline at the end of your LaTeX file: > - % vim: fdm=syntax -< - *tex-nospell* - Tex: Don't Want Spell Checking In Comments? ~ - -Some folks like to include things like source code in comments and so would -prefer that spell checking be disabled in comments in LaTeX files. To do -this, put the following in your <.vimrc>: > - let g:tex_comment_nospell= 1 -< - *tex-verb* - Tex: Want Spell Checking in Verbatim Zones?~ - -Often verbatim regions are used for things like source code; seldom does -one want source code spell-checked. However, for those of you who do -want your verbatim zones spell-checked, put the following in your <.vimrc>: > - let g:tex_verbspell= 1 -< - *tex-runon* - Tex: Run-on Comments or MathZones ~ - -The <syntax/tex.vim> highlighting supports TeX, LaTeX, and some AmsTeX. The -highlighting supports three primary zones/regions: normal, texZone, and -texMathZone. Although considerable effort has been made to have these zones -terminate properly, zones delineated by $..$ and $$..$$ cannot be synchronized -as there's no difference between start and end patterns. Consequently, a -special "TeX comment" has been provided > - %stopzone -which will forcibly terminate the highlighting of either a texZone or a -texMathZone. - - *tex-slow* - Tex: Slow Syntax Highlighting? ~ - -If you have a slow computer, you may wish to reduce the values for > - :syn sync maxlines=200 - :syn sync minlines=50 -(especially the latter). If your computer is fast, you may wish to -increase them. This primarily affects synchronizing (i.e. just what group, -if any, is the text at the top of the screen supposed to be in?). - - *tex-morecommands* *tex-package* - Tex: Want To Highlight More Commands? ~ - -LaTeX is a programmable language, and so there are thousands of packages full -of specialized LaTeX commands, syntax, and fonts. If you're using such a -package you'll often wish that the distributed syntax/tex.vim would support -it. However, clearly this is impractical. So please consider using the -techniques in |mysyntaxfile-add| to extend or modify the highlighting provided -by syntax/tex.vim. - - *tex-error* - Tex: Excessive Error Highlighting? ~ - -The <tex.vim> supports lexical error checking of various sorts. Thus, -although the error checking is ofttimes very useful, it can indicate -errors where none actually are. If this proves to be a problem for you, -you may put in your <.vimrc> the following statement: > - let tex_no_error=1 -and all error checking by <syntax/tex.vim> will be suppressed. - - *tex-math* - Tex: Need a new Math Group? ~ - -If you want to include a new math group in your LaTeX, the following -code shows you an example as to how you might do so: > - call TexNewMathZone(sfx,mathzone,starform) -You'll want to provide the new math group with a unique suffix -(currently, A-L and V-Z are taken by <syntax/tex.vim> itself). -As an example, consider how eqnarray is set up by <syntax/tex.vim>: > - call TexNewMathZone("D","eqnarray",1) -You'll need to change "mathzone" to the name of your new math group, -and then to the call to it in .vim/after/syntax/tex.vim. -The "starform" variable, if true, implies that your new math group -has a starred form (ie. eqnarray*). - - *tex-style* - Tex: Starting a New Style? ~ - -One may use "\makeatletter" in *.tex files, thereby making the use of "@" in -commands available. However, since the *.tex file doesn't have one of the -following suffices: sty cls clo dtx ltx, the syntax highlighting will flag -such use of @ as an error. To solve this: > - - :let b:tex_stylish = 1 - :set ft=tex - -Putting "let g:tex_stylish=1" into your <.vimrc> will make <syntax/tex.vim> -always accept such use of @. - - *tex-cchar* *tex-cole* *tex-conceal* - Tex: Taking Advantage of Conceal Mode~ - -If you have |'conceallevel'| set to 2 and if your encoding is utf-8, then a -number of character sequences can be translated into appropriate utf-8 glyphs, -including various accented characters, Greek characters in MathZones, and -superscripts and subscripts in MathZones. Not all characters can be made into -superscripts or subscripts; the constraint is due to what utf-8 supports. -In fact, only a few characters are supported as subscripts. - -One way to use this is to have vertically split windows (see |CTRL-W_v|); one -with |'conceallevel'| at 0 and the other at 2; and both using |'scrollbind'|. - - *g:tex_conceal* - Tex: Selective Conceal Mode~ - -You may selectively use conceal mode by setting g:tex_conceal in your -<.vimrc>. By default it is set to "admgs" to enable conceal for the -following sets of characters: > - - a = accents/ligatures - d = delimiters - m = math symbols - g = Greek - s = superscripts/subscripts -< -By leaving one or more of these out, the associated conceal-character -substitution will not be made. - - -TF *tf.vim* *ft-tf-syntax* - -There is one option for the tf syntax highlighting. - -For syncing, minlines defaults to 100. If you prefer another value, you can -set "tf_minlines" to the value you desire. Example: > - - :let tf_minlines = your choice - - -VIM *vim.vim* *ft-vim-syntax* - *g:vimsyn_minlines* *g:vimsyn_maxlines* -There is a trade-off between more accurate syntax highlighting versus screen -updating speed. To improve accuracy, you may wish to increase the -g:vimsyn_minlines variable. The g:vimsyn_maxlines variable may be used to -improve screen updating rates (see |:syn-sync| for more on this). > - - g:vimsyn_minlines : used to set synchronization minlines - g:vimsyn_maxlines : used to set synchronization maxlines -< - (g:vim_minlines and g:vim_maxlines are deprecated variants of - these two options) - - *g:vimsyn_embed* -The g:vimsyn_embed option allows users to select what, if any, types of -embedded script highlighting they wish to have. > - - g:vimsyn_embed == 0 : don't embed any scripts - g:vimsyn_embed =~ 'm' : embed mzscheme (but only if vim supports it) - g:vimsyn_embed =~ 'p' : embed perl (but only if vim supports it) - g:vimsyn_embed =~ 'P' : embed python (but only if vim supports it) - g:vimsyn_embed =~ 'r' : embed ruby (but only if vim supports it) - g:vimsyn_embed =~ 't' : embed tcl (but only if vim supports it) -< -By default, g:vimsyn_embed is "mpPr"; ie. syntax/vim.vim will support -highlighting mzscheme, perl, python, and ruby by default. Vim's has("tcl") -test appears to hang vim when tcl is not truly available. Thus, by default, -tcl is not supported for embedding (but those of you who like tcl embedded in -their vim syntax highlighting can simply include it in the g:vimembedscript -option). - *g:vimsyn_folding* - -Some folding is now supported with syntax/vim.vim: > - - g:vimsyn_folding == 0 or doesn't exist: no syntax-based folding - g:vimsyn_folding =~ 'a' : augroups - g:vimsyn_folding =~ 'f' : fold functions - g:vimsyn_folding =~ 'm' : fold mzscheme script - g:vimsyn_folding =~ 'p' : fold perl script - g:vimsyn_folding =~ 'P' : fold python script - g:vimsyn_folding =~ 'r' : fold ruby script - g:vimsyn_folding =~ 't' : fold tcl script - - *g:vimsyn_noerror* -Not all error highlighting that syntax/vim.vim does may be correct; VimL is a -difficult language to highlight correctly. A way to suppress error -highlighting is to put the following line in your |vimrc|: > - - let g:vimsyn_noerror = 1 -< - - -XF86CONFIG *xf86conf.vim* *ft-xf86conf-syntax* - -The syntax of XF86Config file differs in XFree86 v3.x and v4.x. Both -variants are supported. Automatic detection is used, but is far from perfect. -You may need to specify the version manually. Set the variable -xf86conf_xfree86_version to 3 or 4 according to your XFree86 version in -your .vimrc. Example: > - :let xf86conf_xfree86_version=3 -When using a mix of versions, set the b:xf86conf_xfree86_version variable. - -Note that spaces and underscores in option names are not supported. Use -"SyncOnGreen" instead of "__s yn con gr_e_e_n" if you want the option name -highlighted. - - -XML *xml.vim* *ft-xml-syntax* - -Xml namespaces are highlighted by default. This can be inhibited by -setting a global variable: > - - :let g:xml_namespace_transparent=1 -< - *xml-folding* -The xml syntax file provides syntax |folding| (see |:syn-fold|) between -start and end tags. This can be turned on by > - - :let g:xml_syntax_folding = 1 - :set foldmethod=syntax - -Note: syntax folding might slow down syntax highlighting significantly, -especially for large files. - - -X Pixmaps (XPM) *xpm.vim* *ft-xpm-syntax* - -xpm.vim creates its syntax items dynamically based upon the contents of the -XPM file. Thus if you make changes e.g. in the color specification strings, -you have to source it again e.g. with ":set syn=xpm". - -To copy a pixel with one of the colors, yank a "pixel" with "yl" and insert it -somewhere else with "P". - -Do you want to draw with the mouse? Try the following: > - :function! GetPixel() - : let c = getline(".")[col(".") - 1] - : echo c - : exe "noremap <LeftMouse> <LeftMouse>r".c - : exe "noremap <LeftDrag> <LeftMouse>r".c - :endfunction - :noremap <RightMouse> <LeftMouse>:call GetPixel()<CR> - :set guicursor=n:hor20 " to see the color beneath the cursor -This turns the right button into a pipette and the left button into a pen. -It will work with XPM files that have one character per pixel only and you -must not click outside of the pixel strings, but feel free to improve it. - -It will look much better with a font in a quadratic cell size, e.g. for X: > - :set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-* - -============================================================================== -5. Defining a syntax *:syn-define* *E410* - -Vim understands three types of syntax items: - -1. Keyword - It can only contain keyword characters, according to the 'iskeyword' - option. It cannot contain other syntax items. It will only match with a - complete word (there are no keyword characters before or after the match). - The keyword "if" would match in "if(a=b)", but not in "ifdef x", because - "(" is not a keyword character and "d" is. - -2. Match - This is a match with a single regexp pattern. - -3. Region - This starts at a match of the "start" regexp pattern and ends with a match - with the "end" regexp pattern. Any other text can appear in between. A - "skip" regexp pattern can be used to avoid matching the "end" pattern. - -Several syntax ITEMs can be put into one syntax GROUP. For a syntax group -you can give highlighting attributes. For example, you could have an item -to define a "/* .. */" comment and another one that defines a "// .." comment, -and put them both in the "Comment" group. You can then specify that a -"Comment" will be in bold font and have a blue color. You are free to make -one highlight group for one syntax item, or put all items into one group. -This depends on how you want to specify your highlighting attributes. Putting -each item in its own group results in having to specify the highlighting -for a lot of groups. - -Note that a syntax group and a highlight group are similar. For a highlight -group you will have given highlight attributes. These attributes will be used -for the syntax group with the same name. - -In case more than one item matches at the same position, the one that was -defined LAST wins. Thus you can override previously defined syntax items by -using an item that matches the same text. But a keyword always goes before a -match or region. And a keyword with matching case always goes before a -keyword with ignoring case. - - -PRIORITY *:syn-priority* - -When several syntax items may match, these rules are used: - -1. When multiple Match or Region items start in the same position, the item - defined last has priority. -2. A Keyword has priority over Match and Region items. -3. An item that starts in an earlier position has priority over items that - start in later positions. - - -DEFINING CASE *:syn-case* *E390* - -:sy[ntax] case [match | ignore] - This defines if the following ":syntax" commands will work with - matching case, when using "match", or with ignoring case, when using - "ignore". Note that any items before this are not affected, and all - items until the next ":syntax case" command are affected. - - -SPELL CHECKING *:syn-spell* - -:sy[ntax] spell [toplevel | notoplevel | default] - This defines where spell checking is to be done for text that is not - in a syntax item: - - toplevel: Text is spell checked. - notoplevel: Text is not spell checked. - default: When there is a @Spell cluster no spell checking. - - For text in syntax items use the @Spell and @NoSpell clusters - |spell-syntax|. When there is no @Spell and no @NoSpell cluster then - spell checking is done for "default" and "toplevel". - - To activate spell checking the 'spell' option must be set. - - -DEFINING KEYWORDS *:syn-keyword* - -:sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}] - - This defines a number of keywords. - - {group-name} Is a syntax group name such as "Comment". - [{options}] See |:syn-arguments| below. - {keyword} .. Is a list of keywords which are part of this group. - - Example: > - :syntax keyword Type int long char -< - The {options} can be given anywhere in the line. They will apply to - all keywords given, also for options that come after a keyword. - These examples do exactly the same: > - :syntax keyword Type contained int long char - :syntax keyword Type int long contained char - :syntax keyword Type int long char contained -< *E789* - When you have a keyword with an optional tail, like Ex commands in - Vim, you can put the optional characters inside [], to define all the - variations at once: > - :syntax keyword vimCommand ab[breviate] n[ext] -< - Don't forget that a keyword can only be recognized if all the - characters are included in the 'iskeyword' option. If one character - isn't, the keyword will never be recognized. - Multi-byte characters can also be used. These do not have to be in - 'iskeyword'. - - A keyword always has higher priority than a match or region, the - keyword is used if more than one item matches. Keywords do not nest - and a keyword can't contain anything else. - - Note that when you have a keyword that is the same as an option (even - one that isn't allowed here), you can not use it. Use a match - instead. - - The maximum length of a keyword is 80 characters. - - The same keyword can be defined multiple times, when its containment - differs. For example, you can define the keyword once not contained - and use one highlight group, and once contained, and use a different - highlight group. Example: > - :syn keyword vimCommand tag - :syn keyword vimSetting contained tag -< When finding "tag" outside of any syntax item, the "vimCommand" - highlight group is used. When finding "tag" in a syntax item that - contains "vimSetting", the "vimSetting" group is used. - - -DEFINING MATCHES *:syn-match* - -:sy[ntax] match {group-name} [{options}] [excludenl] {pattern} [{options}] - - This defines one match. - - {group-name} A syntax group name such as "Comment". - [{options}] See |:syn-arguments| below. - [excludenl] Don't make a pattern with the end-of-line "$" - extend a containing match or region. Must be - given before the pattern. |:syn-excludenl| - {pattern} The search pattern that defines the match. - See |:syn-pattern| below. - Note that the pattern may match more than one - line, which makes the match depend on where - Vim starts searching for the pattern. You - need to make sure syncing takes care of this. - - Example (match a character constant): > - :syntax match Character /'.'/hs=s+1,he=e-1 -< - -DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* - *E398* *E399* -:sy[ntax] region {group-name} [{options}] - [matchgroup={group-name}] - [keepend] - [extend] - [excludenl] - start={start_pattern} .. - [skip={skip_pattern}] - end={end_pattern} .. - [{options}] - - This defines one region. It may span several lines. - - {group-name} A syntax group name such as "Comment". - [{options}] See |:syn-arguments| below. - [matchgroup={group-name}] The syntax group to use for the following - start or end pattern matches only. Not used - for the text in between the matched start and - end patterns. Use NONE to reset to not using - a different group for the start or end match. - See |:syn-matchgroup|. - keepend Don't allow contained matches to go past a - match with the end pattern. See - |:syn-keepend|. - extend Override a "keepend" for an item this region - is contained in. See |:syn-extend|. - excludenl Don't make a pattern with the end-of-line "$" - extend a containing match or item. Only - useful for end patterns. Must be given before - the patterns it applies to. |:syn-excludenl| - start={start_pattern} The search pattern that defines the start of - the region. See |:syn-pattern| below. - skip={skip_pattern} The search pattern that defines text inside - the region where not to look for the end - pattern. See |:syn-pattern| below. - end={end_pattern} The search pattern that defines the end of - the region. See |:syn-pattern| below. - - Example: > - :syntax region String start=+"+ skip=+\\"+ end=+"+ -< - The start/skip/end patterns and the options can be given in any order. - There can be zero or one skip pattern. There must be one or more - start and end patterns. This means that you can omit the skip - pattern, but you must give at least one start and one end pattern. It - is allowed to have white space before and after the equal sign - (although it mostly looks better without white space). - - When more than one start pattern is given, a match with one of these - is sufficient. This means there is an OR relation between the start - patterns. The last one that matches is used. The same is true for - the end patterns. - - The search for the end pattern starts right after the start pattern. - Offsets are not used for this. This implies that the match for the - end pattern will never overlap with the start pattern. - - The skip and end pattern can match across line breaks, but since the - search for the pattern can start in any line it often does not do what - you want. The skip pattern doesn't avoid a match of an end pattern in - the next line. Use single-line patterns to avoid trouble. - - Note: The decision to start a region is only based on a matching start - pattern. There is no check for a matching end pattern. This does NOT - work: > - :syn region First start="(" end=":" - :syn region Second start="(" end=";" -< The Second always matches before the First (last defined pattern has - higher priority). The Second region then continues until the next - ';', no matter if there is a ':' before it. Using a match does work: > - :syn match First "(\_.\{-}:" - :syn match Second "(\_.\{-};" -< This pattern matches any character or line break with "\_." and - repeats that with "\{-}" (repeat as few as possible). - - *:syn-keepend* - By default, a contained match can obscure a match for the end pattern. - This is useful for nesting. For example, a region that starts with - "{" and ends with "}", can contain another region. An encountered "}" - will then end the contained region, but not the outer region: - { starts outer "{}" region - { starts contained "{}" region - } ends contained "{}" region - } ends outer "{} region - If you don't want this, the "keepend" argument will make the matching - of an end pattern of the outer region also end any contained item. - This makes it impossible to nest the same region, but allows for - contained items to highlight parts of the end pattern, without causing - that to skip the match with the end pattern. Example: > - :syn match vimComment +"[^"]\+$+ - :syn region vimCommand start="set" end="$" contains=vimComment keepend -< The "keepend" makes the vimCommand always end at the end of the line, - even though the contained vimComment includes a match with the <EOL>. - - When "keepend" is not used, a match with an end pattern is retried - after each contained match. When "keepend" is included, the first - encountered match with an end pattern is used, truncating any - contained matches. - *:syn-extend* - The "keepend" behavior can be changed by using the "extend" argument. - When an item with "extend" is contained in an item that uses - "keepend", the "keepend" is ignored and the containing region will be - extended. - This can be used to have some contained items extend a region while - others don't. Example: > - - :syn region htmlRef start=+<a>+ end=+</a>+ keepend contains=htmlItem,htmlScript - :syn match htmlItem +<[^>]*>+ contained - :syn region htmlScript start=+<script+ end=+</script[^>]*>+ contained extend - -< Here the htmlItem item does not make the htmlRef item continue - further, it is only used to highlight the <> items. The htmlScript - item does extend the htmlRef item. - - Another example: > - :syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend -< This defines a region with "keepend", so that its end cannot be - changed by contained items, like when the "</a>" is matched to - highlight it differently. But when the xmlFold region is nested (it - includes itself), the "extend" applies, so that the "</a>" of a nested - region only ends that region, and not the one it is contained in. - - *:syn-excludenl* - When a pattern for a match or end pattern of a region includes a '$' - to match the end-of-line, it will make a region item that it is - contained in continue on the next line. For example, a match with - "\\$" (backslash at the end of the line) can make a region continue - that would normally stop at the end of the line. This is the default - behavior. If this is not wanted, there are two ways to avoid it: - 1. Use "keepend" for the containing item. This will keep all - contained matches from extending the match or region. It can be - used when all contained items must not extend the containing item. - 2. Use "excludenl" in the contained item. This will keep that match - from extending the containing match or region. It can be used if - only some contained items must not extend the containing item. - "excludenl" must be given before the pattern it applies to. - - *:syn-matchgroup* - "matchgroup" can be used to highlight the start and/or end pattern - differently than the body of the region. Example: > - :syntax region String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+ -< This will highlight the quotes with the "Quote" group, and the text in - between with the "String" group. - The "matchgroup" is used for all start and end patterns that follow, - until the next "matchgroup". Use "matchgroup=NONE" to go back to not - using a matchgroup. - - In a start or end pattern that is highlighted with "matchgroup" the - contained items of the region are not used. This can be used to avoid - that a contained item matches in the start or end pattern match. When - using "transparent", this does not apply to a start or end pattern - match that is highlighted with "matchgroup". - - Here is an example, which highlights three levels of parentheses in - different colors: > - :sy region par1 matchgroup=par1 start=/(/ end=/)/ contains=par2 - :sy region par2 matchgroup=par2 start=/(/ end=/)/ contains=par3 contained - :sy region par3 matchgroup=par3 start=/(/ end=/)/ contains=par1 contained - :hi par1 ctermfg=red guifg=red - :hi par2 ctermfg=blue guifg=blue - :hi par3 ctermfg=darkgreen guifg=darkgreen - -============================================================================== -6. :syntax arguments *:syn-arguments* - -The :syntax commands that define syntax items take a number of arguments. -The common ones are explained here. The arguments may be given in any order -and may be mixed with patterns. - -Not all commands accept all arguments. This table shows which arguments -can not be used for all commands: - *E395* - contains oneline fold display extend concealends~ -:syntax keyword - - - - - - -:syntax match yes - yes yes yes - -:syntax region yes yes yes yes yes yes - -These arguments can be used for all three commands: - conceal - cchar - contained - containedin - nextgroup - transparent - skipwhite - skipnl - skipempty - -conceal *conceal* *:syn-conceal* - -When the "conceal" argument is given, the item is marked as concealable. -Whether or not it is actually concealed depends on the value of the -'conceallevel' option. The 'concealcursor' option is used to decide whether -concealable items in the current line are displayed unconcealed to be able to -edit the line. - -concealends *:syn-concealends* - -When the "concealends" argument is given, the start and end matches of -the region, but not the contents of the region, are marked as concealable. -Whether or not they are actually concealed depends on the setting on the -'conceallevel' option. The ends of a region can only be concealed separately -in this way when they have their own highlighting via "matchgroup" - -cchar *:syn-cchar* - -The "cchar" argument defines the character shown in place of the item -when it is concealed (setting "cchar" only makes sense when the conceal -argument is given.) If "cchar" is not set then the default conceal -character defined in the 'listchars' option is used. Example: > - :syntax match Entity "&" conceal cchar=& -See |hl-Conceal| for highlighting. - -contained *:syn-contained* - -When the "contained" argument is given, this item will not be recognized at -the top level, but only when it is mentioned in the "contains" field of -another match. Example: > - :syntax keyword Todo TODO contained - :syntax match Comment "//.*" contains=Todo - - -display *:syn-display* - -If the "display" argument is given, this item will be skipped when the -detected highlighting will not be displayed. This will speed up highlighting, -by skipping this item when only finding the syntax state for the text that is -to be displayed. - -Generally, you can use "display" for match and region items that meet these -conditions: -- The item does not continue past the end of a line. Example for C: A region - for a "/*" comment can't contain "display", because it continues on the next - line. -- The item does not contain items that continue past the end of the line or - make it continue on the next line. -- The item does not change the size of any item it is contained in. Example - for C: A match with "\\$" in a preprocessor match can't have "display", - because it may make that preprocessor match shorter. -- The item does not allow other items to match that didn't match otherwise, - and that item may extend the match too far. Example for C: A match for a - "//" comment can't use "display", because a "/*" inside that comment would - match then and start a comment which extends past the end of the line. - -Examples, for the C language, where "display" can be used: -- match with a number -- match with a label - - -transparent *:syn-transparent* - -If the "transparent" argument is given, this item will not be highlighted -itself, but will take the highlighting of the item it is contained in. This -is useful for syntax items that don't need any highlighting but are used -only to skip over a part of the text. - -The "contains=" argument is also inherited from the item it is contained in, -unless a "contains" argument is given for the transparent item itself. To -avoid that unwanted items are contained, use "contains=NONE". Example, which -highlights words in strings, but makes an exception for "vim": > - :syn match myString /'[^']*'/ contains=myWord,myVim - :syn match myWord /\<[a-z]*\>/ contained - :syn match myVim /\<vim\>/ transparent contained contains=NONE - :hi link myString String - :hi link myWord Comment -Since the "myVim" match comes after "myWord" it is the preferred match (last -match in the same position overrules an earlier one). The "transparent" -argument makes the "myVim" match use the same highlighting as "myString". But -it does not contain anything. If the "contains=NONE" argument would be left -out, then "myVim" would use the contains argument from myString and allow -"myWord" to be contained, which will be highlighted as a Constant. This -happens because a contained match doesn't match inside itself in the same -position, thus the "myVim" match doesn't overrule the "myWord" match here. - -When you look at the colored text, it is like looking at layers of contained -items. The contained item is on top of the item it is contained in, thus you -see the contained item. When a contained item is transparent, you can look -through, thus you see the item it is contained in. In a picture: - - look from here - - | | | | | | - V V V V V V - - xxxx yyy more contained items - .................... contained item (transparent) - ============================= first item - -The 'x', 'y' and '=' represent a highlighted syntax item. The '.' represent a -transparent group. - -What you see is: - - =======xxxx=======yyy======== - -Thus you look through the transparent "....". - - -oneline *:syn-oneline* - -The "oneline" argument indicates that the region does not cross a line -boundary. It must match completely in the current line. However, when the -region has a contained item that does cross a line boundary, it continues on -the next line anyway. A contained item can be used to recognize a line -continuation pattern. But the "end" pattern must still match in the first -line, otherwise the region doesn't even start. - -When the start pattern includes a "\n" to match an end-of-line, the end -pattern must be found in the same line as where the start pattern ends. The -end pattern may also include an end-of-line. Thus the "oneline" argument -means that the end of the start pattern and the start of the end pattern must -be within one line. This can't be changed by a skip pattern that matches a -line break. - - -fold *:syn-fold* - -The "fold" argument makes the fold level increase by one for this item. -Example: > - :syn region myFold start="{" end="}" transparent fold - :syn sync fromstart - :set foldmethod=syntax -This will make each {} block form one fold. - -The fold will start on the line where the item starts, and end where the item -ends. If the start and end are within the same line, there is no fold. -The 'foldnestmax' option limits the nesting of syntax folds. -{not available when Vim was compiled without |+folding| feature} - - - *:syn-contains* *E405* *E406* *E407* *E408* *E409* -contains={groupname},.. - -The "contains" argument is followed by a list of syntax group names. These -groups will be allowed to begin inside the item (they may extend past the -containing group's end). This allows for recursive nesting of matches and -regions. If there is no "contains" argument, no groups will be contained in -this item. The group names do not need to be defined before they can be used -here. - -contains=ALL - If the only item in the contains list is "ALL", then all - groups will be accepted inside the item. - -contains=ALLBUT,{group-name},.. - If the first item in the contains list is "ALLBUT", then all - groups will be accepted inside the item, except the ones that - are listed. Example: > - :syntax region Block start="{" end="}" ... contains=ALLBUT,Function - -contains=TOP - If the first item in the contains list is "TOP", then all - groups will be accepted that don't have the "contained" - argument. -contains=TOP,{group-name},.. - Like "TOP", but excluding the groups that are listed. - -contains=CONTAINED - If the first item in the contains list is "CONTAINED", then - all groups will be accepted that have the "contained" - argument. -contains=CONTAINED,{group-name},.. - Like "CONTAINED", but excluding the groups that are - listed. - - -The {group-name} in the "contains" list can be a pattern. All group names -that match the pattern will be included (or excluded, if "ALLBUT" is used). -The pattern cannot contain white space or a ','. Example: > - ... contains=Comment.*,Keyw[0-3] -The matching will be done at moment the syntax command is executed. Groups -that are defined later will not be matched. Also, if the current syntax -command defines a new group, it is not matched. Be careful: When putting -syntax commands in a file you can't rely on groups NOT being defined, because -the file may have been sourced before, and ":syn clear" doesn't remove the -group names. - -The contained groups will also match in the start and end patterns of a -region. If this is not wanted, the "matchgroup" argument can be used -|:syn-matchgroup|. The "ms=" and "me=" offsets can be used to change the -region where contained items do match. Note that this may also limit the -area that is highlighted - - -containedin={groupname}... *:syn-containedin* - -The "containedin" argument is followed by a list of syntax group names. The -item will be allowed to begin inside these groups. This works as if the -containing item has a "contains=" argument that includes this item. - -The {groupname}... can be used just like for "contains", as explained above. - -This is useful when adding a syntax item afterwards. An item can be told to -be included inside an already existing item, without changing the definition -of that item. For example, to highlight a word in a C comment after loading -the C syntax: > - :syn keyword myword HELP containedin=cComment contained -Note that "contained" is also used, to avoid that the item matches at the top -level. - -Matches for "containedin" are added to the other places where the item can -appear. A "contains" argument may also be added as usual. Don't forget that -keywords never contain another item, thus adding them to "containedin" won't -work. - - -nextgroup={groupname},.. *:syn-nextgroup* - -The "nextgroup" argument is followed by a list of syntax group names, -separated by commas (just like with "contains", so you can also use patterns). - -If the "nextgroup" argument is given, the mentioned syntax groups will be -tried for a match, after the match or region ends. If none of the groups have -a match, highlighting continues normally. If there is a match, this group -will be used, even when it is not mentioned in the "contains" field of the -current group. This is like giving the mentioned group priority over all -other groups. Example: > - :syntax match ccFoobar "Foo.\{-}Bar" contains=ccFoo - :syntax match ccFoo "Foo" contained nextgroup=ccFiller - :syntax region ccFiller start="." matchgroup=ccBar end="Bar" contained - -This will highlight "Foo" and "Bar" differently, and only when there is a -"Bar" after "Foo". In the text line below, "f" shows where ccFoo is used for -highlighting, and "bbb" where ccBar is used. > - - Foo asdfasd Bar asdf Foo asdf Bar asdf - fff bbb fff bbb - -Note the use of ".\{-}" to skip as little as possible until the next Bar. -when ".*" would be used, the "asdf" in between "Bar" and "Foo" would be -highlighted according to the "ccFoobar" group, because the ccFooBar match -would include the first "Foo" and the last "Bar" in the line (see |pattern|). - - -skipwhite *:syn-skipwhite* -skipnl *:syn-skipnl* -skipempty *:syn-skipempty* - -These arguments are only used in combination with "nextgroup". They can be -used to allow the next group to match after skipping some text: - skipwhite skip over space and tab characters - skipnl skip over the end of a line - skipempty skip over empty lines (implies a "skipnl") - -When "skipwhite" is present, the white space is only skipped if there is no -next group that matches the white space. - -When "skipnl" is present, the match with nextgroup may be found in the next -line. This only happens when the current item ends at the end of the current -line! When "skipnl" is not present, the nextgroup will only be found after -the current item in the same line. - -When skipping text while looking for a next group, the matches for other -groups are ignored. Only when no next group matches, other items are tried -for a match again. This means that matching a next group and skipping white -space and <EOL>s has a higher priority than other items. - -Example: > - :syn match ifstart "\<if.*" nextgroup=ifline skipwhite skipempty - :syn match ifline "[^ \t].*" nextgroup=ifline skipwhite skipempty contained - :syn match ifline "endif" contained -Note that the "[^ \t].*" match matches all non-white text. Thus it would also -match "endif". Therefore the "endif" match is put last, so that it takes -precedence. -Note that this example doesn't work for nested "if"s. You need to add -"contains" arguments to make that work (omitted for simplicity of the -example). - -IMPLICIT CONCEAL *:syn-conceal-implicit* - -:sy[ntax] conceal [on|off] - This defines if the following ":syntax" commands will define keywords, - matches or regions with the "conceal" flag set. After ":syn conceal - on", all subsequent ":syn keyword", ":syn match" or ":syn region" - defined will have the "conceal" flag set implicitly. ":syn conceal - off" returns to the normal state where the "conceal" flag must be - given explicitly. - -============================================================================== -7. Syntax patterns *:syn-pattern* *E401* *E402* - -In the syntax commands, a pattern must be surrounded by two identical -characters. This is like it works for the ":s" command. The most common to -use is the double quote. But if the pattern contains a double quote, you can -use another character that is not used in the pattern. Examples: > - :syntax region Comment start="/\*" end="\*/" - :syntax region String start=+"+ end=+"+ skip=+\\"+ - -See |pattern| for the explanation of what a pattern is. Syntax patterns are -always interpreted like the 'magic' option is set, no matter what the actual -value of 'magic' is. And the patterns are interpreted like the 'l' flag is -not included in 'cpoptions'. This was done to make syntax files portable and -independent of 'compatible' and 'magic' settings. - -Try to avoid patterns that can match an empty string, such as "[a-z]*". -This slows down the highlighting a lot, because it matches everywhere. - - *:syn-pattern-offset* -The pattern can be followed by a character offset. This can be used to -change the highlighted part, and to change the text area included in the -match or region (which only matters when trying to match other items). Both -are relative to the matched pattern. The character offset for a skip -pattern can be used to tell where to continue looking for an end pattern. - -The offset takes the form of "{what}={offset}" -The {what} can be one of seven strings: - -ms Match Start offset for the start of the matched text -me Match End offset for the end of the matched text -hs Highlight Start offset for where the highlighting starts -he Highlight End offset for where the highlighting ends -rs Region Start offset for where the body of a region starts -re Region End offset for where the body of a region ends -lc Leading Context offset past "leading context" of pattern - -The {offset} can be: - -s start of the matched pattern -s+{nr} start of the matched pattern plus {nr} chars to the right -s-{nr} start of the matched pattern plus {nr} chars to the left -e end of the matched pattern -e+{nr} end of the matched pattern plus {nr} chars to the right -e-{nr} end of the matched pattern plus {nr} chars to the left -{nr} (for "lc" only): start matching {nr} chars to the left - -Examples: "ms=s+1", "hs=e-2", "lc=3". - -Although all offsets are accepted after any pattern, they are not always -meaningful. This table shows which offsets are actually used: - - ms me hs he rs re lc ~ -match item yes yes yes yes - - yes -region item start yes - yes - yes - yes -region item skip - yes - - - - yes -region item end - yes - yes - yes yes - -Offsets can be concatenated, with a ',' in between. Example: > - :syn match String /"[^"]*"/hs=s+1,he=e-1 -< - some "string" text - ^^^^^^ highlighted - -Notes: -- There must be no white space between the pattern and the character - offset(s). -- The highlighted area will never be outside of the matched text. -- A negative offset for an end pattern may not always work, because the end - pattern may be detected when the highlighting should already have stopped. -- Before Vim 7.2 the offsets were counted in bytes instead of characters. - This didn't work well for multi-byte characters, so it was changed with the - Vim 7.2 release. -- The start of a match cannot be in a line other than where the pattern - matched. This doesn't work: "a\nb"ms=e. You can make the highlighting - start in another line, this does work: "a\nb"hs=e. - -Example (match a comment but don't highlight the /* and */): > - :syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1 -< - /* this is a comment */ - ^^^^^^^^^^^^^^^^^^^ highlighted - -A more complicated Example: > - :syn region Exa matchgroup=Foo start="foo"hs=s+2,rs=e+2 matchgroup=Bar end="bar"me=e-1,he=e-1,re=s-1 -< - abcfoostringbarabc - mmmmmmmmmmm match - sssrrreee highlight start/region/end ("Foo", "Exa" and "Bar") - -Leading context *:syn-lc* *:syn-leading* *:syn-context* - -Note: This is an obsolete feature, only included for backwards compatibility -with previous Vim versions. It's now recommended to use the |/\@<=| construct -in the pattern. - -The "lc" offset specifies leading context -- a part of the pattern that must -be present, but is not considered part of the match. An offset of "lc=n" will -cause Vim to step back n columns before attempting the pattern match, allowing -characters which have already been matched in previous patterns to also be -used as leading context for this match. This can be used, for instance, to -specify that an "escaping" character must not precede the match: > - - :syn match ZNoBackslash "[^\\]z"ms=s+1 - :syn match WNoBackslash "[^\\]w"lc=1 - :syn match Underline "_\+" -< - ___zzzz ___wwww - ^^^ ^^^ matches Underline - ^ ^ matches ZNoBackslash - ^^^^ matches WNoBackslash - -The "ms" offset is automatically set to the same value as the "lc" offset, -unless you set "ms" explicitly. - - -Multi-line patterns *:syn-multi-line* - -The patterns can include "\n" to match an end-of-line. Mostly this works as -expected, but there are a few exceptions. - -When using a start pattern with an offset, the start of the match is not -allowed to start in a following line. The highlighting can start in a -following line though. Using the "\zs" item also requires that the start of -the match doesn't move to another line. - -The skip pattern can include the "\n", but the search for an end pattern will -continue in the first character of the next line, also when that character is -matched by the skip pattern. This is because redrawing may start in any line -halfway a region and there is no check if the skip pattern started in a -previous line. For example, if the skip pattern is "a\nb" and an end pattern -is "b", the end pattern does match in the second line of this: > - x x a - b x x -Generally this means that the skip pattern should not match any characters -after the "\n". - - -External matches *:syn-ext-match* - -These extra regular expression items are available in region patterns: - - */\z(* */\z(\)* *E50* *E52* - \z(\) Marks the sub-expression as "external", meaning that it is can - be accessed from another pattern match. Currently only usable - in defining a syntax region start pattern. - - */\z1* */\z2* */\z3* */\z4* */\z5* - \z1 ... \z9 */\z6* */\z7* */\z8* */\z9* *E66* *E67* - Matches the same string that was matched by the corresponding - sub-expression in a previous start pattern match. - -Sometimes the start and end patterns of a region need to share a common -sub-expression. A common example is the "here" document in Perl and many Unix -shells. This effect can be achieved with the "\z" special regular expression -items, which marks a sub-expression as "external", in the sense that it can be -referenced from outside the pattern in which it is defined. The here-document -example, for instance, can be done like this: > - :syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$" - -As can be seen here, the \z actually does double duty. In the start pattern, -it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it -changes the \1 back-reference into an external reference referring to the -first external sub-expression in the start pattern. External references can -also be used in skip patterns: > - :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1" - -Note that normal and external sub-expressions are completely orthogonal and -indexed separately; for instance, if the pattern "\z(..\)\(..\)" is applied -to the string "aabb", then \1 will refer to "bb" and \z1 will refer to "aa". -Note also that external sub-expressions cannot be accessed as back-references -within the same pattern like normal sub-expressions. If you want to use one -sub-expression as both a normal and an external sub-expression, you can nest -the two, as in "\(\z(...\)\)". - -Note that only matches within a single line can be used. Multi-line matches -cannot be referred to. - -============================================================================== -8. Syntax clusters *:syn-cluster* *E400* - -:sy[ntax] cluster {cluster-name} [contains={group-name}..] - [add={group-name}..] - [remove={group-name}..] - -This command allows you to cluster a list of syntax groups together under a -single name. - - contains={group-name}.. - The cluster is set to the specified list of groups. - add={group-name}.. - The specified groups are added to the cluster. - remove={group-name}.. - The specified groups are removed from the cluster. - -A cluster so defined may be referred to in a contains=.., containedin=.., -nextgroup=.., add=.. or remove=.. list with a "@" prefix. You can also use -this notation to implicitly declare a cluster before specifying its contents. - -Example: > - :syntax match Thing "# [^#]\+ #" contains=@ThingMembers - :syntax cluster ThingMembers contains=ThingMember1,ThingMember2 - -As the previous example suggests, modifications to a cluster are effectively -retroactive; the membership of the cluster is checked at the last minute, so -to speak: > - :syntax keyword A aaa - :syntax keyword B bbb - :syntax cluster AandB contains=A - :syntax match Stuff "( aaa bbb )" contains=@AandB - :syntax cluster AandB add=B " now both keywords are matched in Stuff - -This also has implications for nested clusters: > - :syntax keyword A aaa - :syntax keyword B bbb - :syntax cluster SmallGroup contains=B - :syntax cluster BigGroup contains=A,@SmallGroup - :syntax match Stuff "( aaa bbb )" contains=@BigGroup - :syntax cluster BigGroup remove=B " no effect, since B isn't in BigGroup - :syntax cluster SmallGroup remove=B " now bbb isn't matched within Stuff - -============================================================================== -9. Including syntax files *:syn-include* *E397* - -It is often useful for one language's syntax file to include a syntax file for -a related language. Depending on the exact relationship, this can be done in -two different ways: - - - If top-level syntax items in the included syntax file are to be - allowed at the top level in the including syntax, you can simply use - the |:runtime| command: > - - " In cpp.vim: - :runtime! syntax/c.vim - :unlet b:current_syntax - -< - If top-level syntax items in the included syntax file are to be - contained within a region in the including syntax, you can use the - ":syntax include" command: - -:sy[ntax] include [@{grouplist-name}] {file-name} - - All syntax items declared in the included file will have the - "contained" flag added. In addition, if a group list is specified, - all top-level syntax items in the included file will be added to - that list. > - - " In perl.vim: - :syntax include @Pod <sfile>:p:h/pod.vim - :syntax region perlPOD start="^=head" end="^=cut" contains=@Pod -< - When {file-name} is an absolute path (starts with "/", "c:", "$VAR" - or "<sfile>") that file is sourced. When it is a relative path - (e.g., "syntax/pod.vim") the file is searched for in 'runtimepath'. - All matching files are loaded. Using a relative path is - recommended, because it allows a user to replace the included file - with his own version, without replacing the file that does the ":syn - include". - -============================================================================== -10. Synchronizing *:syn-sync* *E403* *E404* - -Vim wants to be able to start redrawing in any position in the document. To -make this possible it needs to know the syntax state at the position where -redrawing starts. - -:sy[ntax] sync [ccomment [group-name] | minlines={N} | ...] - -There are four ways to synchronize: -1. Always parse from the start of the file. - |:syn-sync-first| -2. Based on C-style comments. Vim understands how C-comments work and can - figure out if the current line starts inside or outside a comment. - |:syn-sync-second| -3. Jumping back a certain number of lines and start parsing there. - |:syn-sync-third| -4. Searching backwards in the text for a pattern to sync on. - |:syn-sync-fourth| - - *:syn-sync-maxlines* *:syn-sync-minlines* -For the last three methods, the line range where the parsing can start is -limited by "minlines" and "maxlines". - -If the "minlines={N}" argument is given, the parsing always starts at least -that many lines backwards. This can be used if the parsing may take a few -lines before it's correct, or when it's not possible to use syncing. - -If the "maxlines={N}" argument is given, the number of lines that are searched -for a comment or syncing pattern is restricted to N lines backwards (after -adding "minlines"). This is useful if you have few things to sync on and a -slow machine. Example: > - :syntax sync ccomment maxlines=500 -< - *:syn-sync-linebreaks* -When using a pattern that matches multiple lines, a change in one line may -cause a pattern to no longer match in a previous line. This means has to -start above where the change was made. How many lines can be specified with -the "linebreaks" argument. For example, when a pattern may include one line -break use this: > - :syntax sync linebreaks=1 -The result is that redrawing always starts at least one line before where a -change was made. The default value for "linebreaks" is zero. Usually the -value for "minlines" is bigger than "linebreaks". - - -First syncing method: *:syn-sync-first* -> - :syntax sync fromstart - -The file will be parsed from the start. This makes syntax highlighting -accurate, but can be slow for long files. Vim caches previously parsed text, -so that it's only slow when parsing the text for the first time. However, -when making changes some part of the next needs to be parsed again (worst -case: to the end of the file). - -Using "fromstart" is equivalent to using "minlines" with a very large number. - - -Second syncing method: *:syn-sync-second* *:syn-sync-ccomment* - -For the second method, only the "ccomment" argument needs to be given. -Example: > - :syntax sync ccomment - -When Vim finds that the line where displaying starts is inside a C-style -comment, the last region syntax item with the group-name "Comment" will be -used. This requires that there is a region with the group-name "Comment"! -An alternate group name can be specified, for example: > - :syntax sync ccomment javaComment -This means that the last item specified with "syn region javaComment" will be -used for the detected C comment region. This only works properly if that -region does have a start pattern "\/*" and an end pattern "*\/". - -The "maxlines" argument can be used to restrict the search to a number of -lines. The "minlines" argument can be used to at least start a number of -lines back (e.g., for when there is some construct that only takes a few -lines, but it hard to sync on). - -Note: Syncing on a C comment doesn't work properly when strings are used -that cross a line and contain a "*/". Since letting strings cross a line -is a bad programming habit (many compilers give a warning message), and the -chance of a "*/" appearing inside a comment is very small, this restriction -is hardly ever noticed. - - -Third syncing method: *:syn-sync-third* - -For the third method, only the "minlines={N}" argument needs to be given. -Vim will subtract {N} from the line number and start parsing there. This -means {N} extra lines need to be parsed, which makes this method a bit slower. -Example: > - :syntax sync minlines=50 - -"lines" is equivalent to "minlines" (used by older versions). - - -Fourth syncing method: *:syn-sync-fourth* - -The idea is to synchronize on the end of a few specific regions, called a -sync pattern. Only regions can cross lines, so when we find the end of some -region, we might be able to know in which syntax item we are. The search -starts in the line just above the one where redrawing starts. From there -the search continues backwards in the file. - -This works just like the non-syncing syntax items. You can use contained -matches, nextgroup, etc. But there are a few differences: -- Keywords cannot be used. -- The syntax items with the "sync" keyword form a completely separated group - of syntax items. You can't mix syncing groups and non-syncing groups. -- The matching works backwards in the buffer (line by line), instead of - forwards. -- A line continuation pattern can be given. It is used to decide which group - of lines need to be searched like they were one line. This means that the - search for a match with the specified items starts in the first of the - consecutive that contain the continuation pattern. -- When using "nextgroup" or "contains", this only works within one line (or - group of continued lines). -- When using a region, it must start and end in the same line (or group of - continued lines). Otherwise the end is assumed to be at the end of the - line (or group of continued lines). -- When a match with a sync pattern is found, the rest of the line (or group of - continued lines) is searched for another match. The last match is used. - This is used when a line can contain both the start end the end of a region - (e.g., in a C-comment like /* this */, the last "*/" is used). - -There are two ways how a match with a sync pattern can be used: -1. Parsing for highlighting starts where redrawing starts (and where the - search for the sync pattern started). The syntax group that is expected - to be valid there must be specified. This works well when the regions - that cross lines cannot contain other regions. -2. Parsing for highlighting continues just after the match. The syntax group - that is expected to be present just after the match must be specified. - This can be used when the previous method doesn't work well. It's much - slower, because more text needs to be parsed. -Both types of sync patterns can be used at the same time. - -Besides the sync patterns, other matches and regions can be specified, to -avoid finding unwanted matches. - -[The reason that the sync patterns are given separately, is that mostly the -search for the sync point can be much simpler than figuring out the -highlighting. The reduced number of patterns means it will go (much) -faster.] - - *syn-sync-grouphere* *E393* *E394* - :syntax sync match {sync-group-name} grouphere {group-name} "pattern" .. - - Define a match that is used for syncing. {group-name} is the - name of a syntax group that follows just after the match. Parsing - of the text for highlighting starts just after the match. A region - must exist for this {group-name}. The first one defined will be used. - "NONE" can be used for when there is no syntax group after the match. - - *syn-sync-groupthere* - :syntax sync match {sync-group-name} groupthere {group-name} "pattern" .. - - Like "grouphere", but {group-name} is the name of a syntax group that - is to be used at the start of the line where searching for the sync - point started. The text between the match and the start of the sync - pattern searching is assumed not to change the syntax highlighting. - For example, in C you could search backwards for "/*" and "*/". If - "/*" is found first, you know that you are inside a comment, so the - "groupthere" is "cComment". If "*/" is found first, you know that you - are not in a comment, so the "groupthere" is "NONE". (in practice - it's a bit more complicated, because the "/*" and "*/" could appear - inside a string. That's left as an exercise to the reader...). - - :syntax sync match .. - :syntax sync region .. - - Without a "groupthere" argument. Define a region or match that is - skipped while searching for a sync point. - - *syn-sync-linecont* - :syntax sync linecont {pattern} - - When {pattern} matches in a line, it is considered to continue in - the next line. This means that the search for a sync point will - consider the lines to be concatenated. - -If the "maxlines={N}" argument is given too, the number of lines that are -searched for a match is restricted to N. This is useful if you have very -few things to sync on and a slow machine. Example: > - :syntax sync maxlines=100 - -You can clear all sync settings with: > - :syntax sync clear - -You can clear specific sync patterns with: > - :syntax sync clear {sync-group-name} .. - -============================================================================== -11. Listing syntax items *:syntax* *:sy* *:syn* *:syn-list* - -This command lists all the syntax items: > - - :sy[ntax] [list] - -To show the syntax items for one syntax group: > - - :sy[ntax] list {group-name} - -To list the syntax groups in one cluster: *E392* > - - :sy[ntax] list @{cluster-name} - -See above for other arguments for the ":syntax" command. - -Note that the ":syntax" command can be abbreviated to ":sy", although ":syn" -is mostly used, because it looks better. - -============================================================================== -12. Highlight command *:highlight* *:hi* *E28* *E411* *E415* - -There are three types of highlight groups: -- The ones used for specific languages. For these the name starts with the - name of the language. Many of these don't have any attributes, but are - linked to a group of the second type. -- The ones used for all syntax languages. -- The ones used for the 'highlight' option. - *hitest.vim* -You can see all the groups currently active with this command: > - :so $VIMRUNTIME/syntax/hitest.vim -This will open a new window containing all highlight group names, displayed -in their own color. - - *:colo* *:colorscheme* *E185* -:colo[rscheme] Output the name of the currently active color scheme. - This is basically the same as > - :echo g:colors_name -< In case g:colors_name has not been defined :colo will - output "default". When compiled without the |+eval| - feature it will output "unknown". - -:colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' - for the file "colors/{name}.vim. The first one that - is found is loaded. - To see the name of the currently active color scheme: > - :colo -< The name is also stored in the g:colors_name variable. - Doesn't work recursively, thus you can't use - ":colorscheme" in a color scheme script. - After the color scheme has been loaded the - |ColorScheme| autocommand event is triggered. - For info about writing a colorscheme file: > - :edit $VIMRUNTIME/colors/README.txt - -:hi[ghlight] List all the current highlight groups that have - attributes set. - -:hi[ghlight] {group-name} - List one highlight group. - -:hi[ghlight] clear Reset all highlighting to the defaults. Removes all - highlighting for groups added by the user! - Uses the current value of 'background' to decide which - default colors to use. - -:hi[ghlight] clear {group-name} -:hi[ghlight] {group-name} NONE - Disable the highlighting for one highlight group. It - is _not_ set back to the default colors. - -:hi[ghlight] [default] {group-name} {key}={arg} .. - Add a highlight group, or change the highlighting for - an existing group. - See |highlight-args| for the {key}={arg} arguments. - See |:highlight-default| for the optional [default] - argument. - -Normally a highlight group is added once when starting up. This sets the -default values for the highlighting. After that, you can use additional -highlight commands to change the arguments that you want to set to non-default -values. The value "NONE" can be used to switch the value off or go back to -the default value. - -A simple way to change colors is with the |:colorscheme| command. This loads -a file with ":highlight" commands such as this: > - - :hi Comment gui=bold - -Note that all settings that are not included remain the same, only the -specified field is used, and settings are merged with previous ones. So, the -result is like this single command has been used: > - :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold -< - *:highlight-verbose* -When listing a highlight group and 'verbose' is non-zero, the listing will -also tell where it was last set. Example: > - :verbose hi Comment -< Comment xxx term=bold ctermfg=4 guifg=Blue ~ - Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~ - -When ":hi clear" is used then the script where this command is used will be -mentioned for the default values. See |:verbose-cmd| for more information. - - *highlight-args* *E416* *E417* *E423* -There are three types of terminals for highlighting: -term a normal terminal (vt100, xterm) -cterm a color terminal (MS-DOS console, color-xterm, these have the "Co" - termcap entry) -gui the GUI - -For each type the highlighting can be given. This makes it possible to use -the same syntax file on all terminals, and use the optimal highlighting. - -1. highlight arguments for normal terminals - - *bold* *underline* *undercurl* - *inverse* *italic* *standout* -term={attr-list} *attr-list* *highlight-term* *E418* - attr-list is a comma separated list (without spaces) of the - following items (in any order): - bold - underline - undercurl not always available - reverse - inverse same as reverse - italic - standout - NONE no attributes used (used to reset it) - - Note that "bold" can be used here and by using a bold font. They - have the same effect. - "undercurl" is a curly underline. When "undercurl" is not possible - then "underline" is used. In general "undercurl" is only available in - the GUI. The color is set with |highlight-guisp|. - -start={term-list} *highlight-start* *E422* -stop={term-list} *term-list* *highlight-stop* - These lists of terminal codes can be used to get - non-standard attributes on a terminal. - - The escape sequence specified with the "start" argument - is written before the characters in the highlighted - area. It can be anything that you want to send to the - terminal to highlight this area. The escape sequence - specified with the "stop" argument is written after the - highlighted area. This should undo the "start" argument. - Otherwise the screen will look messed up. - - The {term-list} can have two forms: - - 1. A string with escape sequences. - This is any string of characters, except that it can't start with - "t_" and blanks are not allowed. The <> notation is recognized - here, so you can use things like "<Esc>" and "<Space>". Example: - start=<Esc>[27h;<Esc>[<Space>r; - - 2. A list of terminal codes. - Each terminal code has the form "t_xx", where "xx" is the name of - the termcap entry. The codes have to be separated with commas. - White space is not allowed. Example: - start=t_C1,t_BL - The terminal codes must exist for this to work. - - -2. highlight arguments for color terminals - -cterm={attr-list} *highlight-cterm* - See above for the description of {attr-list} |attr-list|. - The "cterm" argument is likely to be different from "term", when - colors are used. For example, in a normal terminal comments could - be underlined, in a color terminal they can be made Blue. - Note: Many terminals (e.g., DOS console) can't mix these attributes - with coloring. Use only one of "cterm=" OR "ctermfg=" OR "ctermbg=". - -ctermfg={color-nr} *highlight-ctermfg* *E421* -ctermbg={color-nr} *highlight-ctermbg* - The {color-nr} argument is a color number. Its range is zero to - (not including) the number given by the termcap entry "Co". - The actual color with this number depends on the type of terminal - and its settings. Sometimes the color also depends on the settings of - "cterm". For example, on some systems "cterm=bold ctermfg=3" gives - another color, on others you just get color 3. - - For an xterm this depends on your resources, and is a bit - unpredictable. See your xterm documentation for the defaults. The - colors for a color-xterm can be changed from the .Xdefaults file. - Unfortunately this means that it's not possible to get the same colors - for each user. See |xterm-color| for info about color xterms. - - The MSDOS standard colors are fixed (in a console window), so these - have been used for the names. But the meaning of color names in X11 - are fixed, so these color settings have been used, to make the - highlighting settings portable (complicated, isn't it?). The - following names are recognized, with the color number used: - - *cterm-colors* - NR-16 NR-8 COLOR NAME ~ - 0 0 Black - 1 4 DarkBlue - 2 2 DarkGreen - 3 6 DarkCyan - 4 1 DarkRed - 5 5 DarkMagenta - 6 3 Brown, DarkYellow - 7 7 LightGray, LightGrey, Gray, Grey - 8 0* DarkGray, DarkGrey - 9 4* Blue, LightBlue - 10 2* Green, LightGreen - 11 6* Cyan, LightCyan - 12 1* Red, LightRed - 13 5* Magenta, LightMagenta - 14 3* Yellow, LightYellow - 15 7* White - - The number under "NR-16" is used for 16-color terminals ('t_Co' - greater than or equal to 16). The number under "NR-8" is used for - 8-color terminals ('t_Co' less than 16). The '*' indicates that the - bold attribute is set for ctermfg. In many 8-color terminals (e.g., - "linux"), this causes the bright colors to appear. This doesn't work - for background colors! Without the '*' the bold attribute is removed. - If you want to set the bold attribute in a different way, put a - "cterm=" argument AFTER the "ctermfg=" or "ctermbg=" argument. Or use - a number instead of a color name. - - The case of the color names is ignored. - Note that for 16 color ansi style terminals (including xterms), the - numbers in the NR-8 column is used. Here '*' means 'add 8' so that Blue - is 12, DarkGray is 8 etc. - - Note that for some color terminals these names may result in the wrong - colors! - - *:hi-normal-cterm* - When setting the "ctermfg" or "ctermbg" colors for the Normal group, - these will become the colors used for the non-highlighted text. - Example: > - :highlight Normal ctermfg=grey ctermbg=darkblue -< When setting the "ctermbg" color for the Normal group, the - 'background' option will be adjusted automatically. This causes the - highlight groups that depend on 'background' to change! This means - you should set the colors for Normal first, before setting other - colors. - When a colorscheme is being used, changing 'background' causes it to - be reloaded, which may reset all colors (including Normal). First - delete the "g:colors_name" variable when you don't want this. - - When you have set "ctermfg" or "ctermbg" for the Normal group, Vim - needs to reset the color when exiting. This is done with the "op" - termcap entry |t_op|. If this doesn't work correctly, try setting the - 't_op' option in your .vimrc. - *E419* *E420* - When Vim knows the normal foreground and background colors, "fg" and - "bg" can be used as color names. This only works after setting the - colors for the Normal group and for the MS-DOS console. Example, for - reverse video: > - :highlight Visual ctermfg=bg ctermbg=fg -< Note that the colors are used that are valid at the moment this - command are given. If the Normal group colors are changed later, the - "fg" and "bg" colors will not be adjusted. - - -3. highlight arguments for the GUI - -gui={attr-list} *highlight-gui* - These give the attributes to use in the GUI mode. - See |attr-list| for a description. - Note that "bold" can be used here and by using a bold font. They - have the same effect. - Note that the attributes are ignored for the "Normal" group. - -font={font-name} *highlight-font* - font-name is the name of a font, as it is used on the system Vim - runs on. For X11 this is a complicated name, for example: > - font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1 -< - The font-name "NONE" can be used to revert to the default font. - When setting the font for the "Normal" group, this becomes the default - font (until the 'guifont' option is changed; the last one set is - used). - The following only works with Motif and Athena, not with other GUIs: - When setting the font for the "Menu" group, the menus will be changed. - When setting the font for the "Tooltip" group, the tooltips will be - changed. - All fonts used, except for Menu and Tooltip, should be of the same - character size as the default font! Otherwise redrawing problems will - occur. - -guifg={color-name} *highlight-guifg* -guibg={color-name} *highlight-guibg* -guisp={color-name} *highlight-guisp* - These give the foreground (guifg), background (guibg) and special - (guisp) color to use in the GUI. "guisp" is used for undercurl. - There are a few special names: - NONE no color (transparent) - bg use normal background color - background use normal background color - fg use normal foreground color - foreground use normal foreground color - To use a color name with an embedded space or other special character, - put it in single quotes. The single quote cannot be used then. - Example: > - :hi comment guifg='salmon pink' -< - *gui-colors* - Suggested color names (these are available on most systems): - Red LightRed DarkRed - Green LightGreen DarkGreen SeaGreen - Blue LightBlue DarkBlue SlateBlue - Cyan LightCyan DarkCyan - Magenta LightMagenta DarkMagenta - Yellow LightYellow Brown DarkYellow - Gray LightGray DarkGray - Black White - Orange Purple Violet - - In the Win32 GUI version, additional system colors are available. See - |win32-colors|. - - You can also specify a color by its Red, Green and Blue values. - The format is "#rrggbb", where - "rr" is the Red value - "gg" is the Green value - "bb" is the Blue value - All values are hexadecimal, range from "00" to "ff". Examples: > - :highlight Comment guifg=#11f0c3 guibg=#ff00ff -< - *highlight-groups* *highlight-default* -These are the default highlighting groups. These groups are used by the -'highlight' option default. Note that the highlighting depends on the value -of 'background'. You can see the current settings with the ":highlight" -command. - *hl-ColorColumn* -ColorColumn used for the columns set with 'colorcolumn' - *hl-Conceal* -Conceal placeholder characters substituted for concealed - text (see 'conceallevel') - *hl-Cursor* -Cursor the character under the cursor - *hl-CursorIM* -CursorIM like Cursor, but used when in IME mode |CursorIM| - *hl-CursorColumn* -CursorColumn the screen column that the cursor is in when 'cursorcolumn' is - set - *hl-CursorLine* -CursorLine the screen line that the cursor is in when 'cursorline' is - set - *hl-Directory* -Directory directory names (and other special names in listings) - *hl-DiffAdd* -DiffAdd diff mode: Added line |diff.txt| - *hl-DiffChange* -DiffChange diff mode: Changed line |diff.txt| - *hl-DiffDelete* -DiffDelete diff mode: Deleted line |diff.txt| - *hl-DiffText* -DiffText diff mode: Changed text within a changed line |diff.txt| - *hl-ErrorMsg* -ErrorMsg error messages on the command line - *hl-VertSplit* -VertSplit the column separating vertically split windows - *hl-Folded* -Folded line used for closed folds - *hl-FoldColumn* -FoldColumn 'foldcolumn' - *hl-SignColumn* -SignColumn column where |signs| are displayed - *hl-IncSearch* -IncSearch 'incsearch' highlighting; also used for the text replaced with - ":s///c" - *hl-LineNr* -LineNr Line number for ":number" and ":#" commands, and when 'number' - or 'relativenumber' option is set. - *hl-MatchParen* -MatchParen The character under the cursor or just before it, if it - is a paired bracket, and its match. |pi_paren.txt| - - *hl-ModeMsg* -ModeMsg 'showmode' message (e.g., "-- INSERT --") - *hl-MoreMsg* -MoreMsg |more-prompt| - *hl-NonText* -NonText '~' and '@' at the end of the window, characters from - 'showbreak' and other characters that do not really exist in - the text (e.g., ">" displayed when a double-wide character - doesn't fit at the end of the line). - *hl-Normal* -Normal normal text - *hl-Pmenu* -Pmenu Popup menu: normal item. - *hl-PmenuSel* -PmenuSel Popup menu: selected item. - *hl-PmenuSbar* -PmenuSbar Popup menu: scrollbar. - *hl-PmenuThumb* -PmenuThumb Popup menu: Thumb of the scrollbar. - *hl-Question* -Question |hit-enter| prompt and yes/no questions - *hl-Search* -Search Last search pattern highlighting (see 'hlsearch'). - Also used for highlighting the current line in the quickfix - window and similar items that need to stand out. - *hl-SpecialKey* -SpecialKey Meta and special keys listed with ":map", also for text used - to show unprintable characters in the text, 'listchars'. - Generally: text that is displayed differently from what it - really is. - *hl-SpellBad* -SpellBad Word that is not recognized by the spellchecker. |spell| - This will be combined with the highlighting used otherwise. - *hl-SpellCap* -SpellCap Word that should start with a capital. |spell| - This will be combined with the highlighting used otherwise. - *hl-SpellLocal* -SpellLocal Word that is recognized by the spellchecker as one that is - used in another region. |spell| - This will be combined with the highlighting used otherwise. - *hl-SpellRare* -SpellRare Word that is recognized by the spellchecker as one that is - hardly ever used. |spell| - This will be combined with the highlighting used otherwise. - *hl-StatusLine* -StatusLine status line of current window - *hl-StatusLineNC* -StatusLineNC status lines of not-current windows - Note: if this is equal to "StatusLine" Vim will use "^^^" in - the status line of the current window. - *hl-TabLine* -TabLine tab pages line, not active tab page label - *hl-TabLineFill* -TabLineFill tab pages line, where there are no labels - *hl-TabLineSel* -TabLineSel tab pages line, active tab page label - *hl-Title* -Title titles for output from ":set all", ":autocmd" etc. - *hl-Visual* -Visual Visual mode selection - *hl-VisualNOS* -VisualNOS Visual mode selection when vim is "Not Owning the Selection". - Only X11 Gui's |gui-x11| and |xterm-clipboard| supports this. - *hl-WarningMsg* -WarningMsg warning messages - *hl-WildMenu* -WildMenu current match in 'wildmenu' completion - - *hl-User1* *hl-User1..9* *hl-User9* -The 'statusline' syntax allows the use of 9 different highlights in the -statusline and ruler (via 'rulerformat'). The names are User1 to User9. - -For the GUI you can use the following groups to set the colors for the menu, -scrollbars and tooltips. They don't have defaults. This doesn't work for the -Win32 GUI. Only three highlight arguments have any effect here: font, guibg, -and guifg. - - *hl-Menu* -Menu Current font, background and foreground colors of the menus. - Also used for the toolbar. - Applicable highlight arguments: font, guibg, guifg. - - NOTE: For Motif and Athena the font argument actually - specifies a fontset at all times, no matter if 'guifontset' is - empty, and as such it is tied to the current |:language| when - set. - - *hl-Scrollbar* -Scrollbar Current background and foreground of the main window's - scrollbars. - Applicable highlight arguments: guibg, guifg. - - *hl-Tooltip* -Tooltip Current font, background and foreground of the tooltips. - Applicable highlight arguments: font, guibg, guifg. - - NOTE: For Motif and Athena the font argument actually - specifies a fontset at all times, no matter if 'guifontset' is - empty, and as such it is tied to the current |:language| when - set. - -============================================================================== -13. Linking groups *:hi-link* *:highlight-link* *E412* *E413* - -When you want to use the same highlighting for several syntax groups, you -can do this more easily by linking the groups into one common highlight -group, and give the color attributes only for that group. - -To set a link: - - :hi[ghlight][!] [default] link {from-group} {to-group} - -To remove a link: - - :hi[ghlight][!] [default] link {from-group} NONE - -Notes: *E414* -- If the {from-group} and/or {to-group} doesn't exist, it is created. You - don't get an error message for a non-existing group. -- As soon as you use a ":highlight" command for a linked group, the link is - removed. -- If there are already highlight settings for the {from-group}, the link is - not made, unless the '!' is given. For a ":highlight link" command in a - sourced file, you don't get an error message. This can be used to skip - links for groups that already have settings. - - *:hi-default* *:highlight-default* -The [default] argument is used for setting the default highlighting for a -group. If highlighting has already been specified for the group the command -will be ignored. Also when there is an existing link. - -Using [default] is especially useful to overrule the highlighting of a -specific syntax file. For example, the C syntax file contains: > - :highlight default link cComment Comment -If you like Question highlighting for C comments, put this in your vimrc file: > - :highlight link cComment Question -Without the "default" in the C syntax file, the highlighting would be -overruled when the syntax file is loaded. - -============================================================================== -14. Cleaning up *:syn-clear* *E391* - -If you want to clear the syntax stuff for the current buffer, you can use this -command: > - :syntax clear - -This command should be used when you want to switch off syntax highlighting, -or when you want to switch to using another syntax. It's normally not needed -in a syntax file itself, because syntax is cleared by the autocommands that -load the syntax file. -The command also deletes the "b:current_syntax" variable, since no syntax is -loaded after this command. - -If you want to disable syntax highlighting for all buffers, you need to remove -the autocommands that load the syntax files: > - :syntax off - -What this command actually does, is executing the command > - :source $VIMRUNTIME/syntax/nosyntax.vim -See the "nosyntax.vim" file for details. Note that for this to work -$VIMRUNTIME must be valid. See |$VIMRUNTIME|. - -To clean up specific syntax groups for the current buffer: > - :syntax clear {group-name} .. -This removes all patterns and keywords for {group-name}. - -To clean up specific syntax group lists for the current buffer: > - :syntax clear @{grouplist-name} .. -This sets {grouplist-name}'s contents to an empty list. - - *:syntax-reset* *:syn-reset* -If you have changed the colors and messed them up, use this command to get the -defaults back: > - - :syntax reset - -This doesn't change the colors for the 'highlight' option. - -Note that the syntax colors that you set in your vimrc file will also be reset -back to their Vim default. -Note that if you are using a color scheme, the colors defined by the color -scheme for syntax highlighting will be lost. - -What this actually does is: > - - let g:syntax_cmd = "reset" - runtime! syntax/syncolor.vim - -Note that this uses the 'runtimepath' option. - - *syncolor* -If you want to use different colors for syntax highlighting, you can add a Vim -script file to set these colors. Put this file in a directory in -'runtimepath' which comes after $VIMRUNTIME, so that your settings overrule -the default colors. This way these colors will be used after the ":syntax -reset" command. - -For Unix you can use the file ~/.vim/after/syntax/syncolor.vim. Example: > - - if &background == "light" - highlight comment ctermfg=darkgreen guifg=darkgreen - else - highlight comment ctermfg=green guifg=green - endif - - *E679* -Do make sure this syncolor.vim script does not use a "syntax on", set the -'background' option or uses a "colorscheme" command, because it results in an -endless loop. - -Note that when a color scheme is used, there might be some confusion whether -your defined colors are to be used or the colors from the scheme. This -depends on the color scheme file. See |:colorscheme|. - - *syntax_cmd* -The "syntax_cmd" variable is set to one of these values when the -syntax/syncolor.vim files are loaded: - "on" ":syntax on" command. Highlight colors are overruled but - links are kept - "enable" ":syntax enable" command. Only define colors for groups that - don't have highlighting yet. Use ":syntax default". - "reset" ":syntax reset" command or loading a color scheme. Define all - the colors. - "skip" Don't define colors. Used to skip the default settings when a - syncolor.vim file earlier in 'runtimepath' has already set - them. - -============================================================================== -15. Highlighting tags *tag-highlight* - -If you want to highlight all the tags in your file, you can use the following -mappings. - - <F11> -- Generate tags.vim file, and highlight tags. - <F12> -- Just highlight tags based on existing tags.vim file. -> - :map <F11> :sp tags<CR>:%s/^\([^ :]*:\)\=\([^ ]*\).*/syntax keyword Tag \2/<CR>:wq! tags.vim<CR>/^<CR><F12> - :map <F12> :so tags.vim<CR> - -WARNING: The longer the tags file, the slower this will be, and the more -memory Vim will consume. - -Only highlighting typedefs, unions and structs can be done too. For this you -must use Exuberant ctags (found at http://ctags.sf.net). - -Put these lines in your Makefile: - -# Make a highlight file for types. Requires Exuberant ctags and awk -types: types.vim -types.vim: *.[ch] - ctags --c-kinds=gstu -o- *.[ch] |\ - awk 'BEGIN{printf("syntax keyword Type\t")}\ - {printf("%s ", $$1)}END{print ""}' > $@ - -And put these lines in your .vimrc: > - - " load the types.vim highlighting file, if it exists - autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim' - autocmd BufRead,BufNewFile *.[ch] if filereadable(fname) - autocmd BufRead,BufNewFile *.[ch] exe 'so ' . fname - autocmd BufRead,BufNewFile *.[ch] endif - -============================================================================== -16. Window-local syntax *:ownsyntax* - -Normally all windows on a buffer share the same syntax settings. It is -possible, however, to set a particular window on a file to have its own -private syntax setting. A possible example would be to edit LaTeX source -with conventional highlighting in one window, while seeing the same source -highlighted differently (so as to hide control sequences and indicate bold, -italic etc regions) in another. The 'scrollbind' option is useful here. - -To set the current window to have the syntax "foo", separately from all other -windows on the buffer: > - :ownsyntax foo -< *w:current_syntax* -This will set the "w:current_syntax" variable to "foo". The value of -"b:current_syntax" does not change. This is implemented by saving and -restoring "b:current_syntax", since the syntax files do set -"b:current_syntax". The value set by the syntax file is assigned to -"w:current_syntax". - -Once a window has its own syntax, syntax commands executed from other windows -on the same buffer (including :syntax clear) have no effect. Conversely, -syntax commands executed from that window do not effect other windows on the -same buffer. - -A window with its own syntax reverts to normal behavior when another buffer -is loaded into that window or the file is reloaded. -When splitting the window, the new window will use the original syntax. - -============================================================================== -16. Color xterms *xterm-color* *color-xterm* - -Most color xterms have only eight colors. If you don't get colors with the -default setup, it should work with these lines in your .vimrc: > - :if &term =~ "xterm" - : if has("terminfo") - : set t_Co=8 - : set t_Sf=<Esc>[3%p1%dm - : set t_Sb=<Esc>[4%p1%dm - : else - : set t_Co=8 - : set t_Sf=<Esc>[3%dm - : set t_Sb=<Esc>[4%dm - : endif - :endif -< [<Esc> is a real escape, type CTRL-V <Esc>] - -You might want to change the first "if" to match the name of your terminal, -e.g. "dtterm" instead of "xterm". - -Note: Do these settings BEFORE doing ":syntax on". Otherwise the colors may -be wrong. - *xiterm* *rxvt* -The above settings have been mentioned to work for xiterm and rxvt too. -But for using 16 colors in an rxvt these should work with terminfo: > - :set t_AB=<Esc>[%?%p1%{8}%<%t25;%p1%{40}%+%e5;%p1%{32}%+%;%dm - :set t_AF=<Esc>[%?%p1%{8}%<%t22;%p1%{30}%+%e1;%p1%{22}%+%;%dm -< - *colortest.vim* -To test your color setup, a file has been included in the Vim distribution. -To use it, execute this command: > - :runtime syntax/colortest.vim - -Some versions of xterm (and other terminals, like the Linux console) can -output lighter foreground colors, even though the number of colors is defined -at 8. Therefore Vim sets the "cterm=bold" attribute for light foreground -colors, when 't_Co' is 8. - - *xfree-xterm* -To get 16 colors or more, get the newest xterm version (which should be -included with XFree86 3.3 and later). You can also find the latest version -at: > - http://invisible-island.net/xterm/xterm.html -Here is a good way to configure it. This uses 88 colors and enables the -termcap-query feature, which allows Vim to ask the xterm how many colors it -supports. > - ./configure --disable-bold-color --enable-88-color --enable-tcap-query -If you only get 8 colors, check the xterm compilation settings. -(Also see |UTF8-xterm| for using this xterm with UTF-8 character encoding). - -This xterm should work with these lines in your .vimrc (for 16 colors): > - :if has("terminfo") - : set t_Co=16 - : set t_AB=<Esc>[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm - : set t_AF=<Esc>[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm - :else - : set t_Co=16 - : set t_Sf=<Esc>[3%dm - : set t_Sb=<Esc>[4%dm - :endif -< [<Esc> is a real escape, type CTRL-V <Esc>] - -Without |+terminfo|, Vim will recognize these settings, and automatically -translate cterm colors of 8 and above to "<Esc>[9%dm" and "<Esc>[10%dm". -Colors above 16 are also translated automatically. - -For 256 colors this has been reported to work: > - - :set t_AB=<Esc>[48;5;%dm - :set t_AF=<Esc>[38;5;%dm - -Or just set the TERM environment variable to "xterm-color" or "xterm-16color" -and try if that works. - -You probably want to use these X resources (in your ~/.Xdefaults file): - XTerm*color0: #000000 - XTerm*color1: #c00000 - XTerm*color2: #008000 - XTerm*color3: #808000 - XTerm*color4: #0000c0 - XTerm*color5: #c000c0 - XTerm*color6: #008080 - XTerm*color7: #c0c0c0 - XTerm*color8: #808080 - XTerm*color9: #ff6060 - XTerm*color10: #00ff00 - XTerm*color11: #ffff00 - XTerm*color12: #8080ff - XTerm*color13: #ff40ff - XTerm*color14: #00ffff - XTerm*color15: #ffffff - Xterm*cursorColor: Black - -[Note: The cursorColor is required to work around a bug, which changes the -cursor color to the color of the last drawn text. This has been fixed by a -newer version of xterm, but not everybody is using it yet.] - -To get these right away, reload the .Xdefaults file to the X Option database -Manager (you only need to do this when you just changed the .Xdefaults file): > - xrdb -merge ~/.Xdefaults -< - *xterm-blink* *xterm-blinking-cursor* -To make the cursor blink in an xterm, see tools/blink.c. Or use Thomas -Dickey's xterm above patchlevel 107 (see above for where to get it), with -these resources: - XTerm*cursorBlink: on - XTerm*cursorOnTime: 400 - XTerm*cursorOffTime: 250 - XTerm*cursorColor: White - - *hpterm-color* -These settings work (more or less) for an hpterm, which only supports 8 -foreground colors: > - :if has("terminfo") - : set t_Co=8 - : set t_Sf=<Esc>[&v%p1%dS - : set t_Sb=<Esc>[&v7S - :else - : set t_Co=8 - : set t_Sf=<Esc>[&v%dS - : set t_Sb=<Esc>[&v7S - :endif -< [<Esc> is a real escape, type CTRL-V <Esc>] - - *Eterm* *enlightened-terminal* -These settings have been reported to work for the Enlightened terminal -emulator, or Eterm. They might work for all xterm-like terminals that use the -bold attribute to get bright colors. Add an ":if" like above when needed. > - :set t_Co=16 - :set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m - :set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m -< - *TTpro-telnet* -These settings should work for TTpro telnet. Tera Term Pro is a freeware / -open-source program for MS-Windows. > - set t_Co=16 - set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{32}%+5;%;%dm - set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{22}%+1;%;%dm -Also make sure TTpro's Setup / Window / Full Color is enabled, and make sure -that Setup / Font / Enable Bold is NOT enabled. -(info provided by John Love-Jensen <eljay@Adobe.COM>) - - vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/tabpage.txt b/share/vim/vim73/doc/tabpage.txt deleted file mode 100644 index a30d3a17..00000000 --- a/share/vim/vim73/doc/tabpage.txt +++ /dev/null @@ -1,382 +0,0 @@ -*tabpage.txt* For Vim version 7.3. Last change: 2010 Jul 31 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Editing with windows in multiple tab pages. *tab-page* *tabpage* - -The commands which have been added to use multiple tab pages are explained -here. Additionally, there are explanations for commands that work differently -when used in combination with more than one tab page. - -1. Introduction |tab-page-intro| -2. Commands |tab-page-commands| -3. Other items |tab-page-other| -4. Setting 'tabline' |setting-tabline| -5. Setting 'guitablabel' |setting-guitablabel| - -{Vi does not have any of these commands} -{not able to use multiple tab pages when the |+windows| feature was disabled -at compile time} - -============================================================================== -1. Introduction *tab-page-intro* - -A tab page holds one or more windows. You can easily switch between tab -pages, so that you have several collections of windows to work on different -things. - -Usually you will see a list of labels at the top of the Vim window, one for -each tab page. With the mouse you can click on the label to jump to that tab -page. There are other ways to move between tab pages, see below. - -Most commands work only in the current tab page. That includes the |CTRL-W| -commands, |:windo|, |:all| and |:ball| (when not using the |:tab| modifier). -The commands that are aware of other tab pages than the current one are -mentioned below. - -Tabs are also a nice way to edit a buffer temporarily without changing the -current window layout. Open a new tab page, do whatever you want to do and -close the tab page. - -============================================================================== -2. Commands *tab-page-commands* - -OPENING A NEW TAB PAGE: - -When starting Vim "vim -p filename ..." opens each file argument in a separate -tab page (up to 'tabpagemax'). See |-p| - -A double click with the mouse in the non-GUI tab pages line opens a new, empty -tab page. It is placed left of the position of the click. The first click -may select another tab page first, causing an extra screen update. - -This also works in a few GUI versions, esp. Win32 and Motif. But only when -clicking right of the labels. - -In the GUI tab pages line you can use the right mouse button to open menu. -|tabline-menu|. - -:[count]tabe[dit] *:tabe* *:tabedit* *:tabnew* -:[count]tabnew - Open a new tab page with an empty window, after the current - tab page. For [count] see |:tab| below. - -:[count]tabe[dit] [++opt] [+cmd] {file} -:[count]tabnew [++opt] [+cmd] {file} - Open a new tab page and edit {file}, like with |:edit|. - For [count] see |:tab| below. - -:[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* - Open a new tab page and edit {file} in 'path', like with - |:find|. For [count] see |:tab| below. - {not available when the |+file_in_path| feature was disabled - at compile time} - -:[count]tab {cmd} *:tab* - Execute {cmd} and when it opens a new window open a new tab - page instead. Doesn't work for |:diffsplit|, |:diffpatch|, - |:execute| and |:normal|. - When [count] is omitted the tab page appears after the current - one. - When [count] is specified the new tab page comes after tab - page [count]. Use ":0tab cmd" to get the new tab page as the - first one. - Examples: > - :tab split " opens current buffer in new tab page - :tab help gt " opens tab page with help for "gt" - -CTRL-W gf Open a new tab page and edit the file name under the cursor. - See |CTRL-W_gf|. - -CTRL-W gF Open a new tab page and edit the file name under the cursor - and jump to the line number following the file name. - See |CTRL-W_gF|. - -CLOSING A TAB PAGE: - -Closing the last window of a tab page closes the tab page too, unless there is -only one tab page. - -Using the mouse: If the tab page line is displayed you can click in the "X" at -the top right to close the current tab page. A custom |'tabline'| may show -something else. - - *:tabc* *:tabclose* -:tabc[lose][!] Close current tab page. - This command fails when: - - There is only one tab page on the screen. *E784* - - When 'hidden' is not set, [!] is not used, a buffer has - changes, and there is no other window on this buffer. - Changes to the buffer are not written and won't get lost, so - this is a "safe" command. - -:tabc[lose][!] {count} - Close tab page {count}. Fails in the same way as ':tabclose" - above. - - *:tabo* *:tabonly* -:tabo[nly][!] Close all other tab pages. - When the 'hidden' option is set, all buffers in closed windows - become hidden. - When 'hidden' is not set, and the 'autowrite' option is set, - modified buffers are written. Otherwise, windows that have - buffers that are modified are not removed, unless the [!] is - given, then they become hidden. But modified buffers are - never abandoned, so changes cannot get lost. - - -SWITCHING TO ANOTHER TAB PAGE: - -Using the mouse: If the tab page line is displayed you can click in a tab page -label to switch to that tab page. Click where there is no label to go to the -next tab page. |'tabline'| - -:tabn[ext] *:tabn* *:tabnext* *gt* -<C-PageDown> *CTRL-<PageDown>* *<C-PageDown>* -gt *i_CTRL-<PageDown>* *i_<C-PageDown>* - Go to the next tab page. Wraps around from the last to the - first one. - -:tabn[ext] {count} -{count}<C-PageDown> -{count}gt Go to tab page {count}. The first tab page has number one. - - -:tabp[revious] *:tabp* *:tabprevious* *gT* *:tabN* -:tabN[ext] *:tabNext* *CTRL-<PageUp>* -<C-PageUp> *<C-PageUp>* *i_CTRL-<PageUp>* *i_<C-PageUp>* -gT Go to the previous tab page. Wraps around from the first one - to the last one. - -:tabp[revious] {count} -:tabN[ext] {count} -{count}<C-PageUp> -{count}gT Go {count} tab pages back. Wraps around from the first one - to the last one. - -:tabr[ewind] *:tabfir* *:tabfirst* *:tabr* *:tabrewind* -:tabfir[st] Go to the first tab page. - - *:tabl* *:tablast* -:tabl[ast] Go to the last tab page. - - -Other commands: - *:tabs* -:tabs List the tab pages and the windows they contain. - Shows a ">" for the current window. - Shows a "+" for modified buffers. - - -REORDERING TAB PAGES: - -:tabm[ove] [N] *:tabm* *:tabmove* - Move the current tab page to after tab page N. Use zero to - make the current tab page the first one. Without N the tab - page is made the last one. - - -LOOPING OVER TAB PAGES: - - *:tabd* *:tabdo* -:tabd[o] {cmd} Execute {cmd} in each tab page. - It works like doing this: > - :tabfirst - :{cmd} - :tabnext - :{cmd} - etc. -< This only operates in the current window of each tab page. - When an error is detected on one tab page, further tab pages - will not be visited. - The last tab page (or where an error occurred) becomes the - current tab page. - {cmd} can contain '|' to concatenate several commands. - {cmd} must not open or close tab pages or reorder them. - {not in Vi} {not available when compiled without the - |+listcmds| feature} - Also see |:windo|, |:argdo| and |:bufdo|. - -============================================================================== -3. Other items *tab-page-other* - - *tabline-menu* -The GUI tab pages line has a popup menu. It is accessed with a right click. -The entries are: - Close Close the tab page under the mouse pointer. The - current one if there is no label under the mouse - pointer. - New Tab Open a tab page, editing an empty buffer. It appears - to the left of the mouse pointer. - Open Tab... Like "New Tab" and additionally use a file selector to - select a file to edit. - -Diff mode works per tab page. You can see the diffs between several files -within one tab page. Other tab pages can show differences between other -files. - -Variables local to a tab page start with "t:". |tabpage-variable| - -Currently there is only one option local to a tab page: 'cmdheight'. - -The TabLeave and TabEnter autocommand events can be used to do something when -switching from one tab page to another. The exact order depends on what you -are doing. When creating a new tab page this works as if you create a new -window on the same buffer and then edit another buffer. Thus ":tabnew" -triggers: - WinLeave leave current window - TabLeave leave current tab page - TabEnter enter new tab page - WinEnter enter window in new tab page - BufLeave leave current buffer - BufEnter enter new empty buffer - -When switching to another tab page the order is: - BufLeave - WinLeave - TabLeave - TabEnter - WinEnter - BufEnter - -============================================================================== -4. Setting 'tabline' *setting-tabline* - -The 'tabline' option specifies what the line with tab pages labels looks like. -It is only used when there is no GUI tab line. - -You can use the 'showtabline' option to specify when you want the line with -tab page labels to appear: never, when there is more than one tab page or -always. - -The highlighting of the tab pages line is set with the groups TabLine -TabLineSel and TabLineFill. |hl-TabLine| |hl-TabLineSel| |hl-TabLineFill| - -A "+" will be shown for a tab page that has a modified window. The number of -windows in a tabpage is also shown. Thus "3+" means three windows and one of -them has a modified buffer. - -The 'tabline' option allows you to define your preferred way to tab pages -labels. This isn't easy, thus an example will be given here. - -For basics see the 'statusline' option. The same items can be used in the -'tabline' option. Additionally, the |tabpagebuflist()|, |tabpagenr()| and -|tabpagewinnr()| functions are useful. - -Since the number of tab labels will vary, you need to use an expression for -the whole option. Something like: > - :set tabline=%!MyTabLine() - -Then define the MyTabLine() function to list all the tab pages labels. A -convenient method is to split it in two parts: First go over all the tab -pages and define labels for them. Then get the label for each tab page. > - - function MyTabLine() - let s = '' - for i in range(tabpagenr('$')) - " select the highlighting - if i + 1 == tabpagenr() - let s .= '%#TabLineSel#' - else - let s .= '%#TabLine#' - endif - - " set the tab page number (for mouse clicks) - let s .= '%' . (i + 1) . 'T' - - " the label is made by MyTabLabel() - let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' - endfor - - " after the last tab fill with TabLineFill and reset tab page nr - let s .= '%#TabLineFill#%T' - - " right-align the label to close the current tab page - if tabpagenr('$') > 1 - let s .= '%=%#TabLine#%999Xclose' - endif - - return s - endfunction - -Now the MyTabLabel() function is called for each tab page to get its label. > - - function MyTabLabel(n) - let buflist = tabpagebuflist(a:n) - let winnr = tabpagewinnr(a:n) - return bufname(buflist[winnr - 1]) - endfunction - -This is just a simplistic example that results in a tab pages line that -resembles the default, but without adding a + for a modified buffer or -truncating the names. You will want to reduce the width of labels in a -clever way when there is not enough room. Check the 'columns' option for the -space available. - -============================================================================== -5. Setting 'guitablabel' *setting-guitablabel* - -When the GUI tab pages line is displayed, 'guitablabel' can be used to -specify the label to display for each tab page. Unlike 'tabline', which -specifies the whole tab pages line at once, 'guitablabel' is used for each -label separately. - -'guitabtooltip' is very similar and is used for the tooltip of the same label. -This only appears when the mouse pointer hovers over the label, thus it -usually is longer. Only supported on some systems though. - -See the 'statusline' option for the format of the value. - -The "%N" item can be used for the current tab page number. The |v:lnum| -variable is also set to this number when the option is evaluated. -The items that use a file name refer to the current window of the tab page. - -Note that syntax highlighting is not used for the option. The %T and %X -items are also ignored. - -A simple example that puts the tab page number and the buffer name in the -label: > - :set guitablabel=%N\ %f - -An example that resembles the default 'guitablabel': Show the number of -windows in the tab page and a '+' if there is a modified buffer: > - - function GuiTabLabel() - let label = '' - let bufnrlist = tabpagebuflist(v:lnum) - - " Add '+' if one of the buffers in the tab page is modified - for bufnr in bufnrlist - if getbufvar(bufnr, "&modified") - let label = '+' - break - endif - endfor - - " Append the number of windows in the tab page if more than one - let wincount = tabpagewinnr(v:lnum, '$') - if wincount > 1 - let label .= wincount - endif - if label != '' - let label .= ' ' - endif - - " Append the buffer name - return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) - endfunction - - set guitablabel=%{GuiTabLabel()} - -Note that the function must be defined before setting the option, otherwise -you get an error message for the function not being known. - -If you want to fall back to the default label, return an empty string. - -If you want to show something specific for a tab page, you might want to use a -tab page local variable. |t:var| - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/tags b/share/vim/vim73/doc/tags deleted file mode 100644 index 3ebcf41f..00000000 --- a/share/vim/vim73/doc/tags +++ /dev/null @@ -1,8529 +0,0 @@ -! change.txt /*!* -!! change.txt /*!!* -# pattern.txt /*#* -$ motion.txt /*$* -$HOME options.txt /*$HOME* -$HOME-use version5.txt /*$HOME-use* -$MYGVIMRC gui.txt /*$MYGVIMRC* -$MYVIMRC starting.txt /*$MYVIMRC* -$VIM starting.txt /*$VIM* -$VIM-use version5.txt /*$VIM-use* -$VIMRUNTIME starting.txt /*$VIMRUNTIME* -% motion.txt /*%* -%:. cmdline.txt /*%:.* -%:8 cmdline.txt /*%:8* -%:e cmdline.txt /*%:e* -%:gs cmdline.txt /*%:gs* -%:h cmdline.txt /*%:h* -%:p cmdline.txt /*%:p* -%:r cmdline.txt /*%:r* -%:s cmdline.txt /*%:s* -%:t cmdline.txt /*%:t* -%:~ cmdline.txt /*%:~* -& change.txt /*&* -' motion.txt /*'* -'' motion.txt /*''* -'( motion.txt /*'(* -') motion.txt /*')* -'. motion.txt /*'.* -'0 motion.txt /*'0* -'< motion.txt /*'<* -'> motion.txt /*'>* -'A motion.txt /*'A* -'[ motion.txt /*'[* -'] motion.txt /*']* -'^ motion.txt /*'^* -'a motion.txt /*'a* -'acd' options.txt /*'acd'* -'ai' options.txt /*'ai'* -'akm' options.txt /*'akm'* -'al' options.txt /*'al'* -'aleph' options.txt /*'aleph'* -'allowrevins' options.txt /*'allowrevins'* -'altkeymap' options.txt /*'altkeymap'* -'ambiwidth' options.txt /*'ambiwidth'* -'ambw' options.txt /*'ambw'* -'anti' options.txt /*'anti'* -'antialias' options.txt /*'antialias'* -'ap' vi_diff.txt /*'ap'* -'ar' options.txt /*'ar'* -'arab' options.txt /*'arab'* -'arabic' options.txt /*'arabic'* -'arabicshape' options.txt /*'arabicshape'* -'ari' options.txt /*'ari'* -'arshape' options.txt /*'arshape'* -'as' todo.txt /*'as'* -'autochdir' options.txt /*'autochdir'* -'autoindent' options.txt /*'autoindent'* -'autoprint' vi_diff.txt /*'autoprint'* -'autoread' options.txt /*'autoread'* -'autosave' todo.txt /*'autosave'* -'autowrite' options.txt /*'autowrite'* -'autowriteall' options.txt /*'autowriteall'* -'aw' options.txt /*'aw'* -'awa' options.txt /*'awa'* -'background' options.txt /*'background'* -'backspace' options.txt /*'backspace'* -'backup' options.txt /*'backup'* -'backupcopy' options.txt /*'backupcopy'* -'backupdir' options.txt /*'backupdir'* -'backupext' options.txt /*'backupext'* -'backupskip' options.txt /*'backupskip'* -'balloondelay' options.txt /*'balloondelay'* -'ballooneval' options.txt /*'ballooneval'* -'balloonexpr' options.txt /*'balloonexpr'* -'bdir' options.txt /*'bdir'* -'bdlay' options.txt /*'bdlay'* -'beautify' vi_diff.txt /*'beautify'* -'beval' options.txt /*'beval'* -'bex' options.txt /*'bex'* -'bexpr' options.txt /*'bexpr'* -'bf' vi_diff.txt /*'bf'* -'bg' options.txt /*'bg'* -'bh' options.txt /*'bh'* -'bin' options.txt /*'bin'* -'binary' options.txt /*'binary'* -'biosk' options.txt /*'biosk'* -'bioskey' options.txt /*'bioskey'* -'bk' options.txt /*'bk'* -'bkc' options.txt /*'bkc'* -'bl' options.txt /*'bl'* -'bomb' options.txt /*'bomb'* -'breakat' options.txt /*'breakat'* -'brk' options.txt /*'brk'* -'browsedir' options.txt /*'browsedir'* -'bs' options.txt /*'bs'* -'bsdir' options.txt /*'bsdir'* -'bsk' options.txt /*'bsk'* -'bt' options.txt /*'bt'* -'bufhidden' options.txt /*'bufhidden'* -'buflisted' options.txt /*'buflisted'* -'buftype' options.txt /*'buftype'* -'casemap' options.txt /*'casemap'* -'cb' options.txt /*'cb'* -'cc' options.txt /*'cc'* -'ccv' options.txt /*'ccv'* -'cd' options.txt /*'cd'* -'cdpath' options.txt /*'cdpath'* -'cedit' options.txt /*'cedit'* -'cf' options.txt /*'cf'* -'cfu' options.txt /*'cfu'* -'ch' options.txt /*'ch'* -'character' intro.txt /*'character'* -'charconvert' options.txt /*'charconvert'* -'ci' options.txt /*'ci'* -'cin' options.txt /*'cin'* -'cindent' options.txt /*'cindent'* -'cink' options.txt /*'cink'* -'cinkeys' options.txt /*'cinkeys'* -'cino' options.txt /*'cino'* -'cinoptions' options.txt /*'cinoptions'* -'cinw' options.txt /*'cinw'* -'cinwords' options.txt /*'cinwords'* -'clipboard' options.txt /*'clipboard'* -'cm' options.txt /*'cm'* -'cmdheight' options.txt /*'cmdheight'* -'cmdwinheight' options.txt /*'cmdwinheight'* -'cmp' options.txt /*'cmp'* -'cms' options.txt /*'cms'* -'co' options.txt /*'co'* -'cocu' options.txt /*'cocu'* -'cole' options.txt /*'cole'* -'colorcolumn' options.txt /*'colorcolumn'* -'columns' options.txt /*'columns'* -'com' options.txt /*'com'* -'comments' options.txt /*'comments'* -'commentstring' options.txt /*'commentstring'* -'compatible' options.txt /*'compatible'* -'complete' options.txt /*'complete'* -'completefunc' options.txt /*'completefunc'* -'completeopt' options.txt /*'completeopt'* -'concealcursor' options.txt /*'concealcursor'* -'conceallevel' options.txt /*'conceallevel'* -'confirm' options.txt /*'confirm'* -'consk' options.txt /*'consk'* -'conskey' options.txt /*'conskey'* -'copyindent' options.txt /*'copyindent'* -'cot' options.txt /*'cot'* -'cp' options.txt /*'cp'* -'cpo' options.txt /*'cpo'* -'cpoptions' options.txt /*'cpoptions'* -'cpt' options.txt /*'cpt'* -'crb' options.txt /*'crb'* -'cryptmethod' options.txt /*'cryptmethod'* -'cscopepathcomp' options.txt /*'cscopepathcomp'* -'cscopeprg' options.txt /*'cscopeprg'* -'cscopequickfix' options.txt /*'cscopequickfix'* -'cscopetag' options.txt /*'cscopetag'* -'cscopetagorder' options.txt /*'cscopetagorder'* -'cscopeverbose' options.txt /*'cscopeverbose'* -'cspc' options.txt /*'cspc'* -'csprg' options.txt /*'csprg'* -'csqf' options.txt /*'csqf'* -'cst' options.txt /*'cst'* -'csto' options.txt /*'csto'* -'csverb' options.txt /*'csverb'* -'cuc' options.txt /*'cuc'* -'cul' options.txt /*'cul'* -'cursorbind' options.txt /*'cursorbind'* -'cursorcolumn' options.txt /*'cursorcolumn'* -'cursorline' options.txt /*'cursorline'* -'cwh' options.txt /*'cwh'* -'debug' options.txt /*'debug'* -'deco' options.txt /*'deco'* -'def' options.txt /*'def'* -'define' options.txt /*'define'* -'delcombine' options.txt /*'delcombine'* -'dex' options.txt /*'dex'* -'dg' options.txt /*'dg'* -'dict' options.txt /*'dict'* -'dictionary' options.txt /*'dictionary'* -'diff' options.txt /*'diff'* -'diffexpr' options.txt /*'diffexpr'* -'diffopt' options.txt /*'diffopt'* -'digraph' options.txt /*'digraph'* -'dip' options.txt /*'dip'* -'dir' options.txt /*'dir'* -'directory' options.txt /*'directory'* -'display' options.txt /*'display'* -'dy' options.txt /*'dy'* -'ea' options.txt /*'ea'* -'ead' options.txt /*'ead'* -'eadirection' options.txt /*'eadirection'* -'eb' options.txt /*'eb'* -'ed' options.txt /*'ed'* -'edcompatible' options.txt /*'edcompatible'* -'ef' options.txt /*'ef'* -'efm' options.txt /*'efm'* -'ei' options.txt /*'ei'* -'ek' options.txt /*'ek'* -'enc' options.txt /*'enc'* -'encoding' options.txt /*'encoding'* -'endofline' options.txt /*'endofline'* -'eol' options.txt /*'eol'* -'ep' options.txt /*'ep'* -'equalalways' options.txt /*'equalalways'* -'equalprg' options.txt /*'equalprg'* -'errorbells' options.txt /*'errorbells'* -'errorfile' options.txt /*'errorfile'* -'errorformat' options.txt /*'errorformat'* -'esckeys' options.txt /*'esckeys'* -'et' options.txt /*'et'* -'eventignore' options.txt /*'eventignore'* -'ex' options.txt /*'ex'* -'expandtab' options.txt /*'expandtab'* -'exrc' options.txt /*'exrc'* -'fcl' options.txt /*'fcl'* -'fcs' options.txt /*'fcs'* -'fdc' options.txt /*'fdc'* -'fde' options.txt /*'fde'* -'fdi' options.txt /*'fdi'* -'fdl' options.txt /*'fdl'* -'fdls' options.txt /*'fdls'* -'fdm' options.txt /*'fdm'* -'fdn' options.txt /*'fdn'* -'fdo' options.txt /*'fdo'* -'fdt' options.txt /*'fdt'* -'fe' options.txt /*'fe'* -'fen' options.txt /*'fen'* -'fenc' options.txt /*'fenc'* -'fencs' options.txt /*'fencs'* -'fex' options.txt /*'fex'* -'ff' options.txt /*'ff'* -'ffs' options.txt /*'ffs'* -'fileencoding' options.txt /*'fileencoding'* -'fileencodings' options.txt /*'fileencodings'* -'fileformat' options.txt /*'fileformat'* -'fileformats' options.txt /*'fileformats'* -'filetype' options.txt /*'filetype'* -'fillchars' options.txt /*'fillchars'* -'fk' options.txt /*'fk'* -'fkmap' options.txt /*'fkmap'* -'fl' vi_diff.txt /*'fl'* -'flash' vi_diff.txt /*'flash'* -'flp' options.txt /*'flp'* -'fml' options.txt /*'fml'* -'fmr' options.txt /*'fmr'* -'fo' options.txt /*'fo'* -'foldclose' options.txt /*'foldclose'* -'foldcolumn' options.txt /*'foldcolumn'* -'foldenable' options.txt /*'foldenable'* -'foldexpr' options.txt /*'foldexpr'* -'foldignore' options.txt /*'foldignore'* -'foldlevel' options.txt /*'foldlevel'* -'foldlevelstart' options.txt /*'foldlevelstart'* -'foldmarker' options.txt /*'foldmarker'* -'foldmethod' options.txt /*'foldmethod'* -'foldminlines' options.txt /*'foldminlines'* -'foldnestmax' options.txt /*'foldnestmax'* -'foldopen' options.txt /*'foldopen'* -'foldtext' options.txt /*'foldtext'* -'formatexpr' options.txt /*'formatexpr'* -'formatlistpat' options.txt /*'formatlistpat'* -'formatoptions' options.txt /*'formatoptions'* -'formatprg' options.txt /*'formatprg'* -'fp' options.txt /*'fp'* -'fs' options.txt /*'fs'* -'fsync' options.txt /*'fsync'* -'ft' options.txt /*'ft'* -'gcr' options.txt /*'gcr'* -'gd' options.txt /*'gd'* -'gdefault' options.txt /*'gdefault'* -'gfm' options.txt /*'gfm'* -'gfn' options.txt /*'gfn'* -'gfs' options.txt /*'gfs'* -'gfw' options.txt /*'gfw'* -'ghr' options.txt /*'ghr'* -'go' options.txt /*'go'* -'go-A' options.txt /*'go-A'* -'go-F' options.txt /*'go-F'* -'go-L' options.txt /*'go-L'* -'go-M' options.txt /*'go-M'* -'go-R' options.txt /*'go-R'* -'go-T' options.txt /*'go-T'* -'go-a' options.txt /*'go-a'* -'go-b' options.txt /*'go-b'* -'go-c' options.txt /*'go-c'* -'go-e' options.txt /*'go-e'* -'go-f' options.txt /*'go-f'* -'go-g' options.txt /*'go-g'* -'go-h' options.txt /*'go-h'* -'go-i' options.txt /*'go-i'* -'go-l' options.txt /*'go-l'* -'go-m' options.txt /*'go-m'* -'go-p' options.txt /*'go-p'* -'go-r' options.txt /*'go-r'* -'go-t' options.txt /*'go-t'* -'go-v' options.txt /*'go-v'* -'gp' options.txt /*'gp'* -'gr' vi_diff.txt /*'gr'* -'graphic' vi_diff.txt /*'graphic'* -'grepformat' options.txt /*'grepformat'* -'grepprg' options.txt /*'grepprg'* -'gtl' options.txt /*'gtl'* -'gtt' options.txt /*'gtt'* -'guicursor' options.txt /*'guicursor'* -'guifont' options.txt /*'guifont'* -'guifontset' options.txt /*'guifontset'* -'guifontwide' options.txt /*'guifontwide'* -'guiheadroom' options.txt /*'guiheadroom'* -'guioptions' options.txt /*'guioptions'* -'guipty' options.txt /*'guipty'* -'guitablabel' options.txt /*'guitablabel'* -'guitabtooltip' options.txt /*'guitabtooltip'* -'hardtabs' vi_diff.txt /*'hardtabs'* -'helpfile' options.txt /*'helpfile'* -'helpheight' options.txt /*'helpheight'* -'helplang' options.txt /*'helplang'* -'hf' options.txt /*'hf'* -'hh' options.txt /*'hh'* -'hi' options.txt /*'hi'* -'hid' options.txt /*'hid'* -'hidden' options.txt /*'hidden'* -'highlight' options.txt /*'highlight'* -'history' options.txt /*'history'* -'hk' options.txt /*'hk'* -'hkmap' options.txt /*'hkmap'* -'hkmapp' options.txt /*'hkmapp'* -'hkp' options.txt /*'hkp'* -'hl' options.txt /*'hl'* -'hlg' options.txt /*'hlg'* -'hls' options.txt /*'hls'* -'hlsearch' options.txt /*'hlsearch'* -'ht' vi_diff.txt /*'ht'* -'ic' options.txt /*'ic'* -'icon' options.txt /*'icon'* -'iconstring' options.txt /*'iconstring'* -'ignorecase' options.txt /*'ignorecase'* -'im' options.txt /*'im'* -'imactivatekey' options.txt /*'imactivatekey'* -'imak' options.txt /*'imak'* -'imc' options.txt /*'imc'* -'imcmdline' options.txt /*'imcmdline'* -'imd' options.txt /*'imd'* -'imdisable' options.txt /*'imdisable'* -'imi' options.txt /*'imi'* -'iminsert' options.txt /*'iminsert'* -'ims' options.txt /*'ims'* -'imsearch' options.txt /*'imsearch'* -'inc' options.txt /*'inc'* -'include' options.txt /*'include'* -'includeexpr' options.txt /*'includeexpr'* -'incsearch' options.txt /*'incsearch'* -'inde' options.txt /*'inde'* -'indentexpr' options.txt /*'indentexpr'* -'indentkeys' options.txt /*'indentkeys'* -'indk' options.txt /*'indk'* -'inex' options.txt /*'inex'* -'inf' options.txt /*'inf'* -'infercase' options.txt /*'infercase'* -'insertmode' options.txt /*'insertmode'* -'is' options.txt /*'is'* -'isf' options.txt /*'isf'* -'isfname' options.txt /*'isfname'* -'isi' options.txt /*'isi'* -'isident' options.txt /*'isident'* -'isk' options.txt /*'isk'* -'iskeyword' options.txt /*'iskeyword'* -'isp' options.txt /*'isp'* -'isprint' options.txt /*'isprint'* -'joinspaces' options.txt /*'joinspaces'* -'js' options.txt /*'js'* -'key' options.txt /*'key'* -'keymap' options.txt /*'keymap'* -'keymodel' options.txt /*'keymodel'* -'keywordprg' options.txt /*'keywordprg'* -'km' options.txt /*'km'* -'kmp' options.txt /*'kmp'* -'kp' options.txt /*'kp'* -'langmap' options.txt /*'langmap'* -'langmenu' options.txt /*'langmenu'* -'laststatus' options.txt /*'laststatus'* -'lazyredraw' options.txt /*'lazyredraw'* -'lbr' options.txt /*'lbr'* -'lcs' options.txt /*'lcs'* -'linebreak' options.txt /*'linebreak'* -'lines' options.txt /*'lines'* -'linespace' options.txt /*'linespace'* -'lisp' options.txt /*'lisp'* -'lispwords' options.txt /*'lispwords'* -'list' options.txt /*'list'* -'listchars' options.txt /*'listchars'* -'lm' options.txt /*'lm'* -'lmap' options.txt /*'lmap'* -'loadplugins' options.txt /*'loadplugins'* -'lpl' options.txt /*'lpl'* -'ls' options.txt /*'ls'* -'lsp' options.txt /*'lsp'* -'lw' options.txt /*'lw'* -'lz' options.txt /*'lz'* -'ma' options.txt /*'ma'* -'macatsui' options.txt /*'macatsui'* -'magic' options.txt /*'magic'* -'makeef' options.txt /*'makeef'* -'makeprg' options.txt /*'makeprg'* -'mat' options.txt /*'mat'* -'matchpairs' options.txt /*'matchpairs'* -'matchtime' options.txt /*'matchtime'* -'maxcombine' options.txt /*'maxcombine'* -'maxfuncdepth' options.txt /*'maxfuncdepth'* -'maxmapdepth' options.txt /*'maxmapdepth'* -'maxmem' options.txt /*'maxmem'* -'maxmempattern' options.txt /*'maxmempattern'* -'maxmemtot' options.txt /*'maxmemtot'* -'mco' options.txt /*'mco'* -'mef' options.txt /*'mef'* -'menuitems' options.txt /*'menuitems'* -'mesg' vi_diff.txt /*'mesg'* -'mfd' options.txt /*'mfd'* -'mh' options.txt /*'mh'* -'mis' options.txt /*'mis'* -'mkspellmem' options.txt /*'mkspellmem'* -'ml' options.txt /*'ml'* -'mls' options.txt /*'mls'* -'mm' options.txt /*'mm'* -'mmd' options.txt /*'mmd'* -'mmp' options.txt /*'mmp'* -'mmt' options.txt /*'mmt'* -'mod' options.txt /*'mod'* -'modeline' options.txt /*'modeline'* -'modelines' options.txt /*'modelines'* -'modifiable' options.txt /*'modifiable'* -'modified' options.txt /*'modified'* -'more' options.txt /*'more'* -'mouse' options.txt /*'mouse'* -'mousef' options.txt /*'mousef'* -'mousefocus' options.txt /*'mousefocus'* -'mousehide' options.txt /*'mousehide'* -'mousem' options.txt /*'mousem'* -'mousemodel' options.txt /*'mousemodel'* -'mouses' options.txt /*'mouses'* -'mouseshape' options.txt /*'mouseshape'* -'mouset' options.txt /*'mouset'* -'mousetime' options.txt /*'mousetime'* -'mp' options.txt /*'mp'* -'mps' options.txt /*'mps'* -'msm' options.txt /*'msm'* -'mzq' options.txt /*'mzq'* -'mzquantum' options.txt /*'mzquantum'* -'nf' options.txt /*'nf'* -'noacd' options.txt /*'noacd'* -'noai' options.txt /*'noai'* -'noakm' options.txt /*'noakm'* -'noallowrevins' options.txt /*'noallowrevins'* -'noaltkeymap' options.txt /*'noaltkeymap'* -'noanti' options.txt /*'noanti'* -'noantialias' options.txt /*'noantialias'* -'noar' options.txt /*'noar'* -'noarab' options.txt /*'noarab'* -'noarabic' options.txt /*'noarabic'* -'noarabicshape' options.txt /*'noarabicshape'* -'noari' options.txt /*'noari'* -'noarshape' options.txt /*'noarshape'* -'noas' todo.txt /*'noas'* -'noautochdir' options.txt /*'noautochdir'* -'noautoindent' options.txt /*'noautoindent'* -'noautoread' options.txt /*'noautoread'* -'noautosave' todo.txt /*'noautosave'* -'noautowrite' options.txt /*'noautowrite'* -'noautowriteall' options.txt /*'noautowriteall'* -'noaw' options.txt /*'noaw'* -'noawa' options.txt /*'noawa'* -'nobackup' options.txt /*'nobackup'* -'noballooneval' options.txt /*'noballooneval'* -'nobeval' options.txt /*'nobeval'* -'nobin' options.txt /*'nobin'* -'nobinary' options.txt /*'nobinary'* -'nobiosk' options.txt /*'nobiosk'* -'nobioskey' options.txt /*'nobioskey'* -'nobk' options.txt /*'nobk'* -'nobl' options.txt /*'nobl'* -'nobomb' options.txt /*'nobomb'* -'nobuflisted' options.txt /*'nobuflisted'* -'nocf' options.txt /*'nocf'* -'noci' options.txt /*'noci'* -'nocin' options.txt /*'nocin'* -'nocindent' options.txt /*'nocindent'* -'nocompatible' options.txt /*'nocompatible'* -'noconfirm' options.txt /*'noconfirm'* -'noconsk' options.txt /*'noconsk'* -'noconskey' options.txt /*'noconskey'* -'nocopyindent' options.txt /*'nocopyindent'* -'nocp' options.txt /*'nocp'* -'nocrb' options.txt /*'nocrb'* -'nocscopetag' options.txt /*'nocscopetag'* -'nocscopeverbose' options.txt /*'nocscopeverbose'* -'nocst' options.txt /*'nocst'* -'nocsverb' options.txt /*'nocsverb'* -'nocuc' options.txt /*'nocuc'* -'nocul' options.txt /*'nocul'* -'nocursorbind' options.txt /*'nocursorbind'* -'nocursorcolumn' options.txt /*'nocursorcolumn'* -'nocursorline' options.txt /*'nocursorline'* -'nodeco' options.txt /*'nodeco'* -'nodelcombine' options.txt /*'nodelcombine'* -'nodg' options.txt /*'nodg'* -'nodiff' options.txt /*'nodiff'* -'nodigraph' options.txt /*'nodigraph'* -'noea' options.txt /*'noea'* -'noeb' options.txt /*'noeb'* -'noed' options.txt /*'noed'* -'noedcompatible' options.txt /*'noedcompatible'* -'noek' options.txt /*'noek'* -'noendofline' options.txt /*'noendofline'* -'noeol' options.txt /*'noeol'* -'noequalalways' options.txt /*'noequalalways'* -'noerrorbells' options.txt /*'noerrorbells'* -'noesckeys' options.txt /*'noesckeys'* -'noet' options.txt /*'noet'* -'noex' options.txt /*'noex'* -'noexpandtab' options.txt /*'noexpandtab'* -'noexrc' options.txt /*'noexrc'* -'nofen' options.txt /*'nofen'* -'nofk' options.txt /*'nofk'* -'nofkmap' options.txt /*'nofkmap'* -'nofoldenable' options.txt /*'nofoldenable'* -'nogd' options.txt /*'nogd'* -'nogdefault' options.txt /*'nogdefault'* -'noguipty' options.txt /*'noguipty'* -'nohid' options.txt /*'nohid'* -'nohidden' options.txt /*'nohidden'* -'nohk' options.txt /*'nohk'* -'nohkmap' options.txt /*'nohkmap'* -'nohkmapp' options.txt /*'nohkmapp'* -'nohkp' options.txt /*'nohkp'* -'nohls' options.txt /*'nohls'* -'nohlsearch' options.txt /*'nohlsearch'* -'noic' options.txt /*'noic'* -'noicon' options.txt /*'noicon'* -'noignorecase' options.txt /*'noignorecase'* -'noim' options.txt /*'noim'* -'noimc' options.txt /*'noimc'* -'noimcmdline' options.txt /*'noimcmdline'* -'noimd' options.txt /*'noimd'* -'noimdisable' options.txt /*'noimdisable'* -'noincsearch' options.txt /*'noincsearch'* -'noinf' options.txt /*'noinf'* -'noinfercase' options.txt /*'noinfercase'* -'noinsertmode' options.txt /*'noinsertmode'* -'nois' options.txt /*'nois'* -'nojoinspaces' options.txt /*'nojoinspaces'* -'nojs' options.txt /*'nojs'* -'nolazyredraw' options.txt /*'nolazyredraw'* -'nolbr' options.txt /*'nolbr'* -'nolinebreak' options.txt /*'nolinebreak'* -'nolisp' options.txt /*'nolisp'* -'nolist' options.txt /*'nolist'* -'noloadplugins' options.txt /*'noloadplugins'* -'nolpl' options.txt /*'nolpl'* -'nolz' options.txt /*'nolz'* -'noma' options.txt /*'noma'* -'nomacatsui' options.txt /*'nomacatsui'* -'nomagic' options.txt /*'nomagic'* -'nomh' options.txt /*'nomh'* -'noml' options.txt /*'noml'* -'nomod' options.txt /*'nomod'* -'nomodeline' options.txt /*'nomodeline'* -'nomodifiable' options.txt /*'nomodifiable'* -'nomodified' options.txt /*'nomodified'* -'nomore' options.txt /*'nomore'* -'nomousef' options.txt /*'nomousef'* -'nomousefocus' options.txt /*'nomousefocus'* -'nomousehide' options.txt /*'nomousehide'* -'nonu' options.txt /*'nonu'* -'nonumber' options.txt /*'nonumber'* -'noodev' options.txt /*'noodev'* -'noopendevice' options.txt /*'noopendevice'* -'nopaste' options.txt /*'nopaste'* -'nopi' options.txt /*'nopi'* -'nopreserveindent' options.txt /*'nopreserveindent'* -'nopreviewwindow' options.txt /*'nopreviewwindow'* -'noprompt' options.txt /*'noprompt'* -'nopvw' options.txt /*'nopvw'* -'noreadonly' options.txt /*'noreadonly'* -'norelativenumber' options.txt /*'norelativenumber'* -'noremap' options.txt /*'noremap'* -'norestorescreen' options.txt /*'norestorescreen'* -'norevins' options.txt /*'norevins'* -'nori' options.txt /*'nori'* -'norightleft' options.txt /*'norightleft'* -'norl' options.txt /*'norl'* -'nornu' options.txt /*'nornu'* -'noro' options.txt /*'noro'* -'nors' options.txt /*'nors'* -'noru' options.txt /*'noru'* -'noruler' options.txt /*'noruler'* -'nosb' options.txt /*'nosb'* -'nosc' options.txt /*'nosc'* -'noscb' options.txt /*'noscb'* -'noscrollbind' options.txt /*'noscrollbind'* -'noscs' options.txt /*'noscs'* -'nosecure' options.txt /*'nosecure'* -'nosft' options.txt /*'nosft'* -'noshellslash' options.txt /*'noshellslash'* -'noshelltemp' options.txt /*'noshelltemp'* -'noshiftround' options.txt /*'noshiftround'* -'noshortname' options.txt /*'noshortname'* -'noshowcmd' options.txt /*'noshowcmd'* -'noshowfulltag' options.txt /*'noshowfulltag'* -'noshowmatch' options.txt /*'noshowmatch'* -'noshowmode' options.txt /*'noshowmode'* -'nosi' options.txt /*'nosi'* -'nosm' options.txt /*'nosm'* -'nosmartcase' options.txt /*'nosmartcase'* -'nosmartindent' options.txt /*'nosmartindent'* -'nosmarttab' options.txt /*'nosmarttab'* -'nosmd' options.txt /*'nosmd'* -'nosn' options.txt /*'nosn'* -'nosol' options.txt /*'nosol'* -'nospell' options.txt /*'nospell'* -'nosplitbelow' options.txt /*'nosplitbelow'* -'nosplitright' options.txt /*'nosplitright'* -'nospr' options.txt /*'nospr'* -'nosr' options.txt /*'nosr'* -'nossl' options.txt /*'nossl'* -'nosta' options.txt /*'nosta'* -'nostartofline' options.txt /*'nostartofline'* -'nostmp' options.txt /*'nostmp'* -'noswapfile' options.txt /*'noswapfile'* -'noswf' options.txt /*'noswf'* -'nota' options.txt /*'nota'* -'notagbsearch' options.txt /*'notagbsearch'* -'notagrelative' options.txt /*'notagrelative'* -'notagstack' options.txt /*'notagstack'* -'notbi' options.txt /*'notbi'* -'notbidi' options.txt /*'notbidi'* -'notbs' options.txt /*'notbs'* -'notermbidi' options.txt /*'notermbidi'* -'noterse' options.txt /*'noterse'* -'notextauto' options.txt /*'notextauto'* -'notextmode' options.txt /*'notextmode'* -'notf' options.txt /*'notf'* -'notgst' options.txt /*'notgst'* -'notildeop' options.txt /*'notildeop'* -'notimeout' options.txt /*'notimeout'* -'notitle' options.txt /*'notitle'* -'noto' options.txt /*'noto'* -'notop' options.txt /*'notop'* -'notr' options.txt /*'notr'* -'nottimeout' options.txt /*'nottimeout'* -'nottybuiltin' options.txt /*'nottybuiltin'* -'nottyfast' options.txt /*'nottyfast'* -'notx' options.txt /*'notx'* -'novb' options.txt /*'novb'* -'novice' vi_diff.txt /*'novice'* -'novisualbell' options.txt /*'novisualbell'* -'nowa' options.txt /*'nowa'* -'nowarn' options.txt /*'nowarn'* -'nowb' options.txt /*'nowb'* -'noweirdinvert' options.txt /*'noweirdinvert'* -'nowfh' options.txt /*'nowfh'* -'nowfw' options.txt /*'nowfw'* -'nowildmenu' options.txt /*'nowildmenu'* -'nowinfixheight' options.txt /*'nowinfixheight'* -'nowinfixwidth' options.txt /*'nowinfixwidth'* -'nowiv' options.txt /*'nowiv'* -'nowmnu' options.txt /*'nowmnu'* -'nowrap' options.txt /*'nowrap'* -'nowrapscan' options.txt /*'nowrapscan'* -'nowrite' options.txt /*'nowrite'* -'nowriteany' options.txt /*'nowriteany'* -'nowritebackup' options.txt /*'nowritebackup'* -'nows' options.txt /*'nows'* -'nrformats' options.txt /*'nrformats'* -'nu' options.txt /*'nu'* -'number' options.txt /*'number'* -'numberwidth' options.txt /*'numberwidth'* -'nuw' options.txt /*'nuw'* -'odev' options.txt /*'odev'* -'oft' options.txt /*'oft'* -'ofu' options.txt /*'ofu'* -'omnifunc' options.txt /*'omnifunc'* -'op' vi_diff.txt /*'op'* -'open' vi_diff.txt /*'open'* -'opendevice' options.txt /*'opendevice'* -'operatorfunc' options.txt /*'operatorfunc'* -'opfunc' options.txt /*'opfunc'* -'optimize' vi_diff.txt /*'optimize'* -'option' intro.txt /*'option'* -'osfiletype' options.txt /*'osfiletype'* -'pa' options.txt /*'pa'* -'para' options.txt /*'para'* -'paragraphs' options.txt /*'paragraphs'* -'paste' options.txt /*'paste'* -'pastetoggle' options.txt /*'pastetoggle'* -'patchexpr' options.txt /*'patchexpr'* -'patchmode' options.txt /*'patchmode'* -'path' options.txt /*'path'* -'pdev' options.txt /*'pdev'* -'penc' options.txt /*'penc'* -'pex' options.txt /*'pex'* -'pexpr' options.txt /*'pexpr'* -'pfn' options.txt /*'pfn'* -'ph' options.txt /*'ph'* -'pheader' options.txt /*'pheader'* -'pi' options.txt /*'pi'* -'pm' options.txt /*'pm'* -'pmbcs' options.txt /*'pmbcs'* -'pmbfn' options.txt /*'pmbfn'* -'popt' options.txt /*'popt'* -'preserveindent' options.txt /*'preserveindent'* -'previewheight' options.txt /*'previewheight'* -'previewwindow' options.txt /*'previewwindow'* -'printdevice' options.txt /*'printdevice'* -'printencoding' options.txt /*'printencoding'* -'printexpr' options.txt /*'printexpr'* -'printfont' options.txt /*'printfont'* -'printheader' options.txt /*'printheader'* -'printmbcharset' options.txt /*'printmbcharset'* -'printmbfont' options.txt /*'printmbfont'* -'printoptions' options.txt /*'printoptions'* -'prompt' options.txt /*'prompt'* -'pt' options.txt /*'pt'* -'pumheight' options.txt /*'pumheight'* -'pvh' options.txt /*'pvh'* -'pvw' options.txt /*'pvw'* -'qe' options.txt /*'qe'* -'quote motion.txt /*'quote* -'quoteescape' options.txt /*'quoteescape'* -'rdt' options.txt /*'rdt'* -'readonly' options.txt /*'readonly'* -'redraw' vi_diff.txt /*'redraw'* -'redrawtime' options.txt /*'redrawtime'* -'relativenumber' options.txt /*'relativenumber'* -'remap' options.txt /*'remap'* -'report' options.txt /*'report'* -'restorescreen' options.txt /*'restorescreen'* -'revins' options.txt /*'revins'* -'ri' options.txt /*'ri'* -'rightleft' options.txt /*'rightleft'* -'rightleftcmd' options.txt /*'rightleftcmd'* -'rl' options.txt /*'rl'* -'rlc' options.txt /*'rlc'* -'rnu' options.txt /*'rnu'* -'ro' options.txt /*'ro'* -'rs' options.txt /*'rs'* -'rtp' options.txt /*'rtp'* -'ru' options.txt /*'ru'* -'ruf' options.txt /*'ruf'* -'ruler' options.txt /*'ruler'* -'rulerformat' options.txt /*'rulerformat'* -'runtimepath' options.txt /*'runtimepath'* -'sb' options.txt /*'sb'* -'sbo' options.txt /*'sbo'* -'sbr' options.txt /*'sbr'* -'sc' options.txt /*'sc'* -'scb' options.txt /*'scb'* -'scr' options.txt /*'scr'* -'scroll' options.txt /*'scroll'* -'scrollbind' options.txt /*'scrollbind'* -'scrolljump' options.txt /*'scrolljump'* -'scrolloff' options.txt /*'scrolloff'* -'scrollopt' options.txt /*'scrollopt'* -'scs' options.txt /*'scs'* -'sect' options.txt /*'sect'* -'sections' options.txt /*'sections'* -'secure' options.txt /*'secure'* -'sel' options.txt /*'sel'* -'selection' options.txt /*'selection'* -'selectmode' options.txt /*'selectmode'* -'sessionoptions' options.txt /*'sessionoptions'* -'sft' options.txt /*'sft'* -'sh' options.txt /*'sh'* -'shcf' options.txt /*'shcf'* -'shell' options.txt /*'shell'* -'shellcmdflag' options.txt /*'shellcmdflag'* -'shellpipe' options.txt /*'shellpipe'* -'shellquote' options.txt /*'shellquote'* -'shellredir' options.txt /*'shellredir'* -'shellslash' options.txt /*'shellslash'* -'shelltemp' options.txt /*'shelltemp'* -'shelltype' options.txt /*'shelltype'* -'shellxquote' options.txt /*'shellxquote'* -'shiftround' options.txt /*'shiftround'* -'shiftwidth' options.txt /*'shiftwidth'* -'shm' options.txt /*'shm'* -'shortmess' options.txt /*'shortmess'* -'shortname' options.txt /*'shortname'* -'showbreak' options.txt /*'showbreak'* -'showcmd' options.txt /*'showcmd'* -'showfulltag' options.txt /*'showfulltag'* -'showmatch' options.txt /*'showmatch'* -'showmode' options.txt /*'showmode'* -'showtabline' options.txt /*'showtabline'* -'shq' options.txt /*'shq'* -'si' options.txt /*'si'* -'sidescroll' options.txt /*'sidescroll'* -'sidescrolloff' options.txt /*'sidescrolloff'* -'siso' options.txt /*'siso'* -'sj' options.txt /*'sj'* -'slm' options.txt /*'slm'* -'slow' vi_diff.txt /*'slow'* -'slowopen' vi_diff.txt /*'slowopen'* -'sm' options.txt /*'sm'* -'smartcase' options.txt /*'smartcase'* -'smartindent' options.txt /*'smartindent'* -'smarttab' options.txt /*'smarttab'* -'smc' options.txt /*'smc'* -'smd' options.txt /*'smd'* -'sn' options.txt /*'sn'* -'so' options.txt /*'so'* -'softtabstop' options.txt /*'softtabstop'* -'sol' options.txt /*'sol'* -'sourceany' vi_diff.txt /*'sourceany'* -'sp' options.txt /*'sp'* -'spc' options.txt /*'spc'* -'spell' options.txt /*'spell'* -'spellcapcheck' options.txt /*'spellcapcheck'* -'spellfile' options.txt /*'spellfile'* -'spelllang' options.txt /*'spelllang'* -'spellsuggest' options.txt /*'spellsuggest'* -'spf' options.txt /*'spf'* -'spl' options.txt /*'spl'* -'splitbelow' options.txt /*'splitbelow'* -'splitright' options.txt /*'splitright'* -'spr' options.txt /*'spr'* -'sps' options.txt /*'sps'* -'sr' options.txt /*'sr'* -'srr' options.txt /*'srr'* -'ss' options.txt /*'ss'* -'ssl' options.txt /*'ssl'* -'ssop' options.txt /*'ssop'* -'st' options.txt /*'st'* -'sta' options.txt /*'sta'* -'stal' options.txt /*'stal'* -'startofline' options.txt /*'startofline'* -'statusline' options.txt /*'statusline'* -'stl' options.txt /*'stl'* -'stmp' options.txt /*'stmp'* -'sts' options.txt /*'sts'* -'su' options.txt /*'su'* -'sua' options.txt /*'sua'* -'suffixes' options.txt /*'suffixes'* -'suffixesadd' options.txt /*'suffixesadd'* -'sw' options.txt /*'sw'* -'swapfile' options.txt /*'swapfile'* -'swapsync' options.txt /*'swapsync'* -'swb' options.txt /*'swb'* -'swf' options.txt /*'swf'* -'switchbuf' options.txt /*'switchbuf'* -'sws' options.txt /*'sws'* -'sxq' options.txt /*'sxq'* -'syn' options.txt /*'syn'* -'synmaxcol' options.txt /*'synmaxcol'* -'syntax' options.txt /*'syntax'* -'t_#2' term.txt /*'t_#2'* -'t_#4' term.txt /*'t_#4'* -'t_%1' term.txt /*'t_%1'* -'t_%i' term.txt /*'t_%i'* -'t_&8' term.txt /*'t_&8'* -'t_@7' term.txt /*'t_@7'* -'t_AB' term.txt /*'t_AB'* -'t_AF' term.txt /*'t_AF'* -'t_AL' term.txt /*'t_AL'* -'t_CS' term.txt /*'t_CS'* -'t_CV' term.txt /*'t_CV'* -'t_Ce' term.txt /*'t_Ce'* -'t_Co' term.txt /*'t_Co'* -'t_Cs' term.txt /*'t_Cs'* -'t_DL' term.txt /*'t_DL'* -'t_EI' term.txt /*'t_EI'* -'t_F1' term.txt /*'t_F1'* -'t_F2' term.txt /*'t_F2'* -'t_F3' term.txt /*'t_F3'* -'t_F4' term.txt /*'t_F4'* -'t_F5' term.txt /*'t_F5'* -'t_F6' term.txt /*'t_F6'* -'t_F7' term.txt /*'t_F7'* -'t_F8' term.txt /*'t_F8'* -'t_F9' term.txt /*'t_F9'* -'t_IE' term.txt /*'t_IE'* -'t_IS' term.txt /*'t_IS'* -'t_K1' term.txt /*'t_K1'* -'t_K3' term.txt /*'t_K3'* -'t_K4' term.txt /*'t_K4'* -'t_K5' term.txt /*'t_K5'* -'t_K6' term.txt /*'t_K6'* -'t_K7' term.txt /*'t_K7'* -'t_K8' term.txt /*'t_K8'* -'t_K9' term.txt /*'t_K9'* -'t_KA' term.txt /*'t_KA'* -'t_KB' term.txt /*'t_KB'* -'t_KC' term.txt /*'t_KC'* -'t_KD' term.txt /*'t_KD'* -'t_KE' term.txt /*'t_KE'* -'t_KF' term.txt /*'t_KF'* -'t_KG' term.txt /*'t_KG'* -'t_KH' term.txt /*'t_KH'* -'t_KI' term.txt /*'t_KI'* -'t_KJ' term.txt /*'t_KJ'* -'t_KK' term.txt /*'t_KK'* -'t_KL' term.txt /*'t_KL'* -'t_RI' term.txt /*'t_RI'* -'t_RV' term.txt /*'t_RV'* -'t_SI' term.txt /*'t_SI'* -'t_Sb' term.txt /*'t_Sb'* -'t_Sf' term.txt /*'t_Sf'* -'t_WP' term.txt /*'t_WP'* -'t_WS' term.txt /*'t_WS'* -'t_ZH' term.txt /*'t_ZH'* -'t_ZR' term.txt /*'t_ZR'* -'t_al' term.txt /*'t_al'* -'t_bc' term.txt /*'t_bc'* -'t_cd' term.txt /*'t_cd'* -'t_ce' term.txt /*'t_ce'* -'t_cl' term.txt /*'t_cl'* -'t_cm' term.txt /*'t_cm'* -'t_cs' term.txt /*'t_cs'* -'t_da' term.txt /*'t_da'* -'t_db' term.txt /*'t_db'* -'t_dl' term.txt /*'t_dl'* -'t_fs' term.txt /*'t_fs'* -'t_k1' term.txt /*'t_k1'* -'t_k2' term.txt /*'t_k2'* -'t_k3' term.txt /*'t_k3'* -'t_k4' term.txt /*'t_k4'* -'t_k5' term.txt /*'t_k5'* -'t_k6' term.txt /*'t_k6'* -'t_k7' term.txt /*'t_k7'* -'t_k8' term.txt /*'t_k8'* -'t_k9' term.txt /*'t_k9'* -'t_k;' term.txt /*'t_k;'* -'t_kB' term.txt /*'t_kB'* -'t_kD' term.txt /*'t_kD'* -'t_kI' term.txt /*'t_kI'* -'t_kN' term.txt /*'t_kN'* -'t_kP' term.txt /*'t_kP'* -'t_kb' term.txt /*'t_kb'* -'t_kd' term.txt /*'t_kd'* -'t_ke' term.txt /*'t_ke'* -'t_kh' term.txt /*'t_kh'* -'t_kl' term.txt /*'t_kl'* -'t_kr' term.txt /*'t_kr'* -'t_ks' term.txt /*'t_ks'* -'t_ku' term.txt /*'t_ku'* -'t_le' term.txt /*'t_le'* -'t_mb' term.txt /*'t_mb'* -'t_md' term.txt /*'t_md'* -'t_me' term.txt /*'t_me'* -'t_mr' term.txt /*'t_mr'* -'t_ms' term.txt /*'t_ms'* -'t_nd' term.txt /*'t_nd'* -'t_op' term.txt /*'t_op'* -'t_se' term.txt /*'t_se'* -'t_so' term.txt /*'t_so'* -'t_sr' term.txt /*'t_sr'* -'t_star7' term.txt /*'t_star7'* -'t_te' term.txt /*'t_te'* -'t_ti' term.txt /*'t_ti'* -'t_ts' term.txt /*'t_ts'* -'t_ue' term.txt /*'t_ue'* -'t_us' term.txt /*'t_us'* -'t_ut' term.txt /*'t_ut'* -'t_vb' term.txt /*'t_vb'* -'t_ve' term.txt /*'t_ve'* -'t_vi' term.txt /*'t_vi'* -'t_vs' term.txt /*'t_vs'* -'t_xs' term.txt /*'t_xs'* -'ta' options.txt /*'ta'* -'tabline' options.txt /*'tabline'* -'tabpagemax' options.txt /*'tabpagemax'* -'tabstop' options.txt /*'tabstop'* -'tag' options.txt /*'tag'* -'tagbsearch' options.txt /*'tagbsearch'* -'taglength' options.txt /*'taglength'* -'tagrelative' options.txt /*'tagrelative'* -'tags' options.txt /*'tags'* -'tagstack' options.txt /*'tagstack'* -'tal' options.txt /*'tal'* -'tb' options.txt /*'tb'* -'tbi' options.txt /*'tbi'* -'tbidi' options.txt /*'tbidi'* -'tbis' options.txt /*'tbis'* -'tbs' options.txt /*'tbs'* -'tenc' options.txt /*'tenc'* -'term' options.txt /*'term'* -'termbidi' options.txt /*'termbidi'* -'termencoding' options.txt /*'termencoding'* -'terse' options.txt /*'terse'* -'textauto' options.txt /*'textauto'* -'textmode' options.txt /*'textmode'* -'textwidth' options.txt /*'textwidth'* -'tf' options.txt /*'tf'* -'tgst' options.txt /*'tgst'* -'thesaurus' options.txt /*'thesaurus'* -'tildeop' options.txt /*'tildeop'* -'timeout' options.txt /*'timeout'* -'timeoutlen' options.txt /*'timeoutlen'* -'title' options.txt /*'title'* -'titlelen' options.txt /*'titlelen'* -'titleold' options.txt /*'titleold'* -'titlestring' options.txt /*'titlestring'* -'tl' options.txt /*'tl'* -'tm' options.txt /*'tm'* -'to' options.txt /*'to'* -'toolbar' options.txt /*'toolbar'* -'toolbariconsize' options.txt /*'toolbariconsize'* -'top' options.txt /*'top'* -'tpm' options.txt /*'tpm'* -'tr' options.txt /*'tr'* -'ts' options.txt /*'ts'* -'tsl' options.txt /*'tsl'* -'tsr' options.txt /*'tsr'* -'ttimeout' options.txt /*'ttimeout'* -'ttimeoutlen' options.txt /*'ttimeoutlen'* -'ttm' options.txt /*'ttm'* -'tty' options.txt /*'tty'* -'ttybuiltin' options.txt /*'ttybuiltin'* -'ttyfast' options.txt /*'ttyfast'* -'ttym' options.txt /*'ttym'* -'ttymouse' options.txt /*'ttymouse'* -'ttyscroll' options.txt /*'ttyscroll'* -'ttytype' options.txt /*'ttytype'* -'tw' options.txt /*'tw'* -'tx' options.txt /*'tx'* -'uc' options.txt /*'uc'* -'udf' options.txt /*'udf'* -'udir' options.txt /*'udir'* -'ul' options.txt /*'ul'* -'undodir' options.txt /*'undodir'* -'undofile' options.txt /*'undofile'* -'undolevels' options.txt /*'undolevels'* -'undoreload' options.txt /*'undoreload'* -'updatecount' options.txt /*'updatecount'* -'updatetime' options.txt /*'updatetime'* -'ur' options.txt /*'ur'* -'ut' options.txt /*'ut'* -'vb' options.txt /*'vb'* -'vbs' options.txt /*'vbs'* -'vdir' options.txt /*'vdir'* -'ve' options.txt /*'ve'* -'verbose' options.txt /*'verbose'* -'verbosefile' options.txt /*'verbosefile'* -'vfile' options.txt /*'vfile'* -'vi' options.txt /*'vi'* -'viewdir' options.txt /*'viewdir'* -'viewoptions' options.txt /*'viewoptions'* -'viminfo' options.txt /*'viminfo'* -'virtualedit' options.txt /*'virtualedit'* -'visualbell' options.txt /*'visualbell'* -'vop' options.txt /*'vop'* -'w1200' vi_diff.txt /*'w1200'* -'w300' vi_diff.txt /*'w300'* -'w9600' vi_diff.txt /*'w9600'* -'wa' options.txt /*'wa'* -'wak' options.txt /*'wak'* -'warn' options.txt /*'warn'* -'wb' options.txt /*'wb'* -'wc' options.txt /*'wc'* -'wcm' options.txt /*'wcm'* -'wd' options.txt /*'wd'* -'weirdinvert' options.txt /*'weirdinvert'* -'wfh' options.txt /*'wfh'* -'wfw' options.txt /*'wfw'* -'wh' options.txt /*'wh'* -'whichwrap' options.txt /*'whichwrap'* -'wi' options.txt /*'wi'* -'wig' options.txt /*'wig'* -'wildchar' options.txt /*'wildchar'* -'wildcharm' options.txt /*'wildcharm'* -'wildignore' options.txt /*'wildignore'* -'wildmenu' options.txt /*'wildmenu'* -'wildmode' options.txt /*'wildmode'* -'wildoptions' options.txt /*'wildoptions'* -'wim' options.txt /*'wim'* -'winaltkeys' options.txt /*'winaltkeys'* -'window' options.txt /*'window'* -'winfixheight' options.txt /*'winfixheight'* -'winfixwidth' options.txt /*'winfixwidth'* -'winheight' options.txt /*'winheight'* -'winminheight' options.txt /*'winminheight'* -'winminwidth' options.txt /*'winminwidth'* -'winwidth' options.txt /*'winwidth'* -'wiv' options.txt /*'wiv'* -'wiw' options.txt /*'wiw'* -'wm' options.txt /*'wm'* -'wmh' options.txt /*'wmh'* -'wmnu' options.txt /*'wmnu'* -'wmw' options.txt /*'wmw'* -'wop' options.txt /*'wop'* -'wrap' options.txt /*'wrap'* -'wrapmargin' options.txt /*'wrapmargin'* -'wrapscan' options.txt /*'wrapscan'* -'write' options.txt /*'write'* -'writeany' options.txt /*'writeany'* -'writebackup' options.txt /*'writebackup'* -'writedelay' options.txt /*'writedelay'* -'ws' options.txt /*'ws'* -'ww' options.txt /*'ww'* -'{ motion.txt /*'{* -'} motion.txt /*'}* -( motion.txt /*(* -) motion.txt /*)* -+ motion.txt /*+* -++bad editing.txt /*++bad* -++bin editing.txt /*++bin* -++builtin_terms various.txt /*++builtin_terms* -++edit editing.txt /*++edit* -++enc editing.txt /*++enc* -++ff editing.txt /*++ff* -++nobin editing.txt /*++nobin* -++opt editing.txt /*++opt* -+ARP various.txt /*+ARP* -+GUI_Athena various.txt /*+GUI_Athena* -+GUI_GTK various.txt /*+GUI_GTK* -+GUI_Motif various.txt /*+GUI_Motif* -+GUI_Photon various.txt /*+GUI_Photon* -+GUI_neXtaw various.txt /*+GUI_neXtaw* -+X11 various.txt /*+X11* -+arabic various.txt /*+arabic* -+autocmd various.txt /*+autocmd* -+balloon_eval various.txt /*+balloon_eval* -+browse various.txt /*+browse* -+builtin_terms various.txt /*+builtin_terms* -+byte_offset various.txt /*+byte_offset* -+cindent various.txt /*+cindent* -+clientserver various.txt /*+clientserver* -+clipboard various.txt /*+clipboard* -+cmd editing.txt /*+cmd* -+cmdline_compl various.txt /*+cmdline_compl* -+cmdline_hist various.txt /*+cmdline_hist* -+cmdline_info various.txt /*+cmdline_info* -+comments various.txt /*+comments* -+conceal various.txt /*+conceal* -+cryptv various.txt /*+cryptv* -+cscope various.txt /*+cscope* -+cursorbind various.txt /*+cursorbind* -+cursorshape various.txt /*+cursorshape* -+debug various.txt /*+debug* -+dialog_con various.txt /*+dialog_con* -+dialog_con_gui various.txt /*+dialog_con_gui* -+dialog_gui various.txt /*+dialog_gui* -+diff various.txt /*+diff* -+digraphs various.txt /*+digraphs* -+dnd various.txt /*+dnd* -+emacs_tags various.txt /*+emacs_tags* -+eval various.txt /*+eval* -+ex_extra various.txt /*+ex_extra* -+extra_search various.txt /*+extra_search* -+farsi various.txt /*+farsi* -+feature-list various.txt /*+feature-list* -+file_in_path various.txt /*+file_in_path* -+find_in_path various.txt /*+find_in_path* -+float various.txt /*+float* -+folding various.txt /*+folding* -+footer various.txt /*+footer* -+fork various.txt /*+fork* -+gettext various.txt /*+gettext* -+hangul_input various.txt /*+hangul_input* -+iconv various.txt /*+iconv* -+iconv/dyn various.txt /*+iconv\/dyn* -+insert_expand various.txt /*+insert_expand* -+jumplist various.txt /*+jumplist* -+keymap various.txt /*+keymap* -+langmap various.txt /*+langmap* -+libcall various.txt /*+libcall* -+linebreak various.txt /*+linebreak* -+lispindent various.txt /*+lispindent* -+listcmds various.txt /*+listcmds* -+localmap various.txt /*+localmap* -+lua various.txt /*+lua* -+lua/dyn various.txt /*+lua\/dyn* -+menu various.txt /*+menu* -+mksession various.txt /*+mksession* -+modify_fname various.txt /*+modify_fname* -+mouse various.txt /*+mouse* -+mouse_dec various.txt /*+mouse_dec* -+mouse_gpm various.txt /*+mouse_gpm* -+mouse_netterm various.txt /*+mouse_netterm* -+mouse_pterm various.txt /*+mouse_pterm* -+mouse_sysmouse various.txt /*+mouse_sysmouse* -+mouse_xterm various.txt /*+mouse_xterm* -+mouseshape various.txt /*+mouseshape* -+multi_byte various.txt /*+multi_byte* -+multi_byte_ime various.txt /*+multi_byte_ime* -+multi_lang various.txt /*+multi_lang* -+mzscheme various.txt /*+mzscheme* -+mzscheme/dyn various.txt /*+mzscheme\/dyn* -+netbeans_intg various.txt /*+netbeans_intg* -+ole various.txt /*+ole* -+osfiletype various.txt /*+osfiletype* -+path_extra various.txt /*+path_extra* -+perl various.txt /*+perl* -+perl/dyn various.txt /*+perl\/dyn* -+persistent_undo various.txt /*+persistent_undo* -+postscript various.txt /*+postscript* -+printer various.txt /*+printer* -+profile various.txt /*+profile* -+python various.txt /*+python* -+python/dyn various.txt /*+python\/dyn* -+python3 various.txt /*+python3* -+python3/dyn various.txt /*+python3\/dyn* -+quickfix various.txt /*+quickfix* -+reltime various.txt /*+reltime* -+rightleft various.txt /*+rightleft* -+ruby various.txt /*+ruby* -+ruby/dyn various.txt /*+ruby\/dyn* -+scrollbind various.txt /*+scrollbind* -+signs various.txt /*+signs* -+smartindent various.txt /*+smartindent* -+sniff various.txt /*+sniff* -+startuptime various.txt /*+startuptime* -+statusline various.txt /*+statusline* -+sun_workshop various.txt /*+sun_workshop* -+syntax various.txt /*+syntax* -+system() various.txt /*+system()* -+tag_any_white various.txt /*+tag_any_white* -+tag_binary various.txt /*+tag_binary* -+tag_old_static various.txt /*+tag_old_static* -+tcl various.txt /*+tcl* -+tcl/dyn various.txt /*+tcl\/dyn* -+terminfo various.txt /*+terminfo* -+termresponse various.txt /*+termresponse* -+textobjects various.txt /*+textobjects* -+tgetent various.txt /*+tgetent* -+title various.txt /*+title* -+toolbar various.txt /*+toolbar* -+user_commands various.txt /*+user_commands* -+vertsplit various.txt /*+vertsplit* -+viminfo various.txt /*+viminfo* -+virtualedit various.txt /*+virtualedit* -+visual various.txt /*+visual* -+visualextra various.txt /*+visualextra* -+vreplace various.txt /*+vreplace* -+wildignore various.txt /*+wildignore* -+wildmenu various.txt /*+wildmenu* -+windows various.txt /*+windows* -+writebackup various.txt /*+writebackup* -+xfontset various.txt /*+xfontset* -+xim various.txt /*+xim* -+xsmp various.txt /*+xsmp* -+xsmp_interact various.txt /*+xsmp_interact* -+xterm_clipboard various.txt /*+xterm_clipboard* -+xterm_save various.txt /*+xterm_save* -, motion.txt /*,* -- motion.txt /*-* --+ starting.txt /*-+* --+/ starting.txt /*-+\/* --+c starting.txt /*-+c* --+reverse gui_x11.txt /*-+reverse* --+rv gui_x11.txt /*-+rv* --- starting.txt /*--* ---- starting.txt /*---* ---cmd starting.txt /*--cmd* ---echo-wid starting.txt /*--echo-wid* ---help starting.txt /*--help* ---literal starting.txt /*--literal* ---nofork starting.txt /*--nofork* ---noplugin starting.txt /*--noplugin* ---remote remote.txt /*--remote* ---remote-expr remote.txt /*--remote-expr* ---remote-send remote.txt /*--remote-send* ---remote-silent remote.txt /*--remote-silent* ---remote-tab remote.txt /*--remote-tab* ---remote-tab-silent remote.txt /*--remote-tab-silent* ---remote-tab-wait remote.txt /*--remote-tab-wait* ---remote-tab-wait-silent remote.txt /*--remote-tab-wait-silent* ---remote-wait remote.txt /*--remote-wait* ---remote-wait-silent remote.txt /*--remote-wait-silent* ---role starting.txt /*--role* ---serverlist remote.txt /*--serverlist* ---servername remote.txt /*--servername* ---socketid starting.txt /*--socketid* ---startuptime starting.txt /*--startuptime* ---version starting.txt /*--version* ---windowid starting.txt /*--windowid* --A starting.txt /*-A* --C starting.txt /*-C* --D starting.txt /*-D* --E starting.txt /*-E* --F starting.txt /*-F* --H starting.txt /*-H* --L starting.txt /*-L* --M starting.txt /*-M* --N starting.txt /*-N* --O starting.txt /*-O* --P starting.txt /*-P* --R starting.txt /*-R* --S starting.txt /*-S* --T starting.txt /*-T* --U starting.txt /*-U* --V starting.txt /*-V* --W starting.txt /*-W* --X starting.txt /*-X* --Z starting.txt /*-Z* --b starting.txt /*-b* --background gui_x11.txt /*-background* --bg gui_x11.txt /*-bg* --boldfont gui_x11.txt /*-boldfont* --borderwidth gui_x11.txt /*-borderwidth* --bw gui_x11.txt /*-bw* --c starting.txt /*-c* --d starting.txt /*-d* --dev starting.txt /*-dev* --display gui_x11.txt /*-display* --e starting.txt /*-e* --f starting.txt /*-f* --fg gui_x11.txt /*-fg* --file starting.txt /*-file* --fn gui_x11.txt /*-fn* --font gui_x11.txt /*-font* --foreground gui_x11.txt /*-foreground* --g starting.txt /*-g* --geom gui_x11.txt /*-geom* --geometry gui_x11.txt /*-geometry* --geometry-example gui_x11.txt /*-geometry-example* --gui gui_x11.txt /*-gui* --h starting.txt /*-h* --i starting.txt /*-i* --iconic gui_x11.txt /*-iconic* --italicfont gui_x11.txt /*-italicfont* --l starting.txt /*-l* --m starting.txt /*-m* --menufont gui_x11.txt /*-menufont* --menufontset gui_x11.txt /*-menufontset* --menuheight gui_x11.txt /*-menuheight* --mf gui_x11.txt /*-mf* --mh gui_x11.txt /*-mh* --n starting.txt /*-n* --nb starting.txt /*-nb* --o starting.txt /*-o* --p starting.txt /*-p* --q starting.txt /*-q* --qf starting.txt /*-qf* --r starting.txt /*-r* --register if_ole.txt /*-register* --reverse gui_x11.txt /*-reverse* --rv gui_x11.txt /*-rv* --s starting.txt /*-s* --s-ex starting.txt /*-s-ex* --scrollbarwidth gui_x11.txt /*-scrollbarwidth* --silent if_ole.txt /*-silent* --sw gui_x11.txt /*-sw* --t starting.txt /*-t* --tag starting.txt /*-tag* --u starting.txt /*-u* --ul gui_x11.txt /*-ul* --unregister if_ole.txt /*-unregister* --v starting.txt /*-v* --vim starting.txt /*-vim* --w starting.txt /*-w* --w_nr starting.txt /*-w_nr* --x starting.txt /*-x* --xrm gui_x11.txt /*-xrm* --y starting.txt /*-y* -. repeat.txt /*.* -... eval.txt /*...* -.Xdefaults gui_x11.txt /*.Xdefaults* -.aff spell.txt /*.aff* -.dic spell.txt /*.dic* -.exrc starting.txt /*.exrc* -.gvimrc gui.txt /*.gvimrc* -.vimrc starting.txt /*.vimrc* -/ pattern.txt /*\/* -/$ pattern.txt /*\/$* -/. pattern.txt /*\/.* -// version7.txt /*\/\/* -//; pattern.txt /*\/\/;* -/<CR> pattern.txt /*\/<CR>* -/[[. pattern.txt /*\/[[.* -/[[= pattern.txt /*\/[[=* -/[\n] pattern.txt /*\/[\\n]* -/[] pattern.txt /*\/[]* -/\ pattern.txt /*\/\\* -/\$ pattern.txt /*\/\\$* -/\%# pattern.txt /*\/\\%#* -/\%$ pattern.txt /*\/\\%$* -/\%'m pattern.txt /*\/\\%'m* -/\%( pattern.txt /*\/\\%(* -/\%(\) pattern.txt /*\/\\%(\\)* -/\%<'m pattern.txt /*\/\\%<'m* -/\%<c pattern.txt /*\/\\%<c* -/\%<l pattern.txt /*\/\\%<l* -/\%<v pattern.txt /*\/\\%<v* -/\%>'m pattern.txt /*\/\\%>'m* -/\%>c pattern.txt /*\/\\%>c* -/\%>l pattern.txt /*\/\\%>l* -/\%>v pattern.txt /*\/\\%>v* -/\%U pattern.txt /*\/\\%U* -/\%V pattern.txt /*\/\\%V* -/\%[] pattern.txt /*\/\\%[]* -/\%^ pattern.txt /*\/\\%^* -/\%c pattern.txt /*\/\\%c* -/\%d pattern.txt /*\/\\%d* -/\%l pattern.txt /*\/\\%l* -/\%o pattern.txt /*\/\\%o* -/\%u pattern.txt /*\/\\%u* -/\%v pattern.txt /*\/\\%v* -/\%x pattern.txt /*\/\\%x* -/\& pattern.txt /*\/\\&* -/\( pattern.txt /*\/\\(* -/\(\) pattern.txt /*\/\\(\\)* -/\) pattern.txt /*\/\\)* -/\+ pattern.txt /*\/\\+* -/\. pattern.txt /*\/\\.* -/\1 pattern.txt /*\/\\1* -/\2 pattern.txt /*\/\\2* -/\3 pattern.txt /*\/\\3* -/\9 pattern.txt /*\/\\9* -/\< pattern.txt /*\/\\<* -/\= pattern.txt /*\/\\=* -/\> pattern.txt /*\/\\>* -/\? pattern.txt /*\/\\?* -/\@! pattern.txt /*\/\\@!* -/\@<! pattern.txt /*\/\\@<!* -/\@<= pattern.txt /*\/\\@<=* -/\@= pattern.txt /*\/\\@=* -/\@> pattern.txt /*\/\\@>* -/\A pattern.txt /*\/\\A* -/\C pattern.txt /*\/\\C* -/\D pattern.txt /*\/\\D* -/\F pattern.txt /*\/\\F* -/\H pattern.txt /*\/\\H* -/\I pattern.txt /*\/\\I* -/\K pattern.txt /*\/\\K* -/\L pattern.txt /*\/\\L* -/\M pattern.txt /*\/\\M* -/\O pattern.txt /*\/\\O* -/\P pattern.txt /*\/\\P* -/\S pattern.txt /*\/\\S* -/\U pattern.txt /*\/\\U* -/\V pattern.txt /*\/\\V* -/\W pattern.txt /*\/\\W* -/\X pattern.txt /*\/\\X* -/\Z pattern.txt /*\/\\Z* -/\[] pattern.txt /*\/\\[]* -/\\ pattern.txt /*\/\\\\* -/\] pattern.txt /*\/\\]* -/\^ pattern.txt /*\/\\^* -/\_ pattern.txt /*\/\\_* -/\_$ pattern.txt /*\/\\_$* -/\_. pattern.txt /*\/\\_.* -/\_A pattern.txt /*\/\\_A* -/\_D pattern.txt /*\/\\_D* -/\_F pattern.txt /*\/\\_F* -/\_H pattern.txt /*\/\\_H* -/\_I pattern.txt /*\/\\_I* -/\_K pattern.txt /*\/\\_K* -/\_L pattern.txt /*\/\\_L* -/\_O pattern.txt /*\/\\_O* -/\_P pattern.txt /*\/\\_P* -/\_S pattern.txt /*\/\\_S* -/\_U pattern.txt /*\/\\_U* -/\_W pattern.txt /*\/\\_W* -/\_X pattern.txt /*\/\\_X* -/\_[] pattern.txt /*\/\\_[]* -/\_^ pattern.txt /*\/\\_^* -/\_a pattern.txt /*\/\\_a* -/\_d pattern.txt /*\/\\_d* -/\_f pattern.txt /*\/\\_f* -/\_h pattern.txt /*\/\\_h* -/\_i pattern.txt /*\/\\_i* -/\_k pattern.txt /*\/\\_k* -/\_l pattern.txt /*\/\\_l* -/\_o pattern.txt /*\/\\_o* -/\_p pattern.txt /*\/\\_p* -/\_s pattern.txt /*\/\\_s* -/\_u pattern.txt /*\/\\_u* -/\_w pattern.txt /*\/\\_w* -/\_x pattern.txt /*\/\\_x* -/\a pattern.txt /*\/\\a* -/\b pattern.txt /*\/\\b* -/\bar pattern.txt /*\/\\bar* -/\c pattern.txt /*\/\\c* -/\d pattern.txt /*\/\\d* -/\e pattern.txt /*\/\\e* -/\f pattern.txt /*\/\\f* -/\h pattern.txt /*\/\\h* -/\i pattern.txt /*\/\\i* -/\k pattern.txt /*\/\\k* -/\l pattern.txt /*\/\\l* -/\m pattern.txt /*\/\\m* -/\n pattern.txt /*\/\\n* -/\o pattern.txt /*\/\\o* -/\p pattern.txt /*\/\\p* -/\r pattern.txt /*\/\\r* -/\s pattern.txt /*\/\\s* -/\star pattern.txt /*\/\\star* -/\t pattern.txt /*\/\\t* -/\u pattern.txt /*\/\\u* -/\v pattern.txt /*\/\\v* -/\w pattern.txt /*\/\\w* -/\x pattern.txt /*\/\\x* -/\z( syntax.txt /*\/\\z(* -/\z(\) syntax.txt /*\/\\z(\\)* -/\z1 syntax.txt /*\/\\z1* -/\z2 syntax.txt /*\/\\z2* -/\z3 syntax.txt /*\/\\z3* -/\z4 syntax.txt /*\/\\z4* -/\z5 syntax.txt /*\/\\z5* -/\z6 syntax.txt /*\/\\z6* -/\z7 syntax.txt /*\/\\z7* -/\z8 syntax.txt /*\/\\z8* -/\z9 syntax.txt /*\/\\z9* -/\ze pattern.txt /*\/\\ze* -/\zs pattern.txt /*\/\\zs* -/\{ pattern.txt /*\/\\{* -/\{- pattern.txt /*\/\\{-* -/\~ pattern.txt /*\/\\~* -/^ pattern.txt /*\/^* -/atom pattern.txt /*\/atom* -/bar pattern.txt /*\/bar* -/branch pattern.txt /*\/branch* -/character-classes pattern.txt /*\/character-classes* -/collection pattern.txt /*\/collection* -/concat pattern.txt /*\/concat* -/dyn various.txt /*\/dyn* -/ignorecase pattern.txt /*\/ignorecase* -/magic pattern.txt /*\/magic* -/multi pattern.txt /*\/multi* -/ordinary-atom pattern.txt /*\/ordinary-atom* -/pattern pattern.txt /*\/pattern* -/piece pattern.txt /*\/piece* -/star pattern.txt /*\/star* -/zero-width pattern.txt /*\/zero-width* -/~ pattern.txt /*\/~* -0 motion.txt /*0* -01.1 usr_01.txt /*01.1* -01.2 usr_01.txt /*01.2* -01.3 usr_01.txt /*01.3* -01.4 usr_01.txt /*01.4* -02.1 usr_02.txt /*02.1* -02.2 usr_02.txt /*02.2* -02.3 usr_02.txt /*02.3* -02.4 usr_02.txt /*02.4* -02.5 usr_02.txt /*02.5* -02.6 usr_02.txt /*02.6* -02.7 usr_02.txt /*02.7* -02.8 usr_02.txt /*02.8* -03.1 usr_03.txt /*03.1* -03.10 usr_03.txt /*03.10* -03.2 usr_03.txt /*03.2* -03.3 usr_03.txt /*03.3* -03.4 usr_03.txt /*03.4* -03.5 usr_03.txt /*03.5* -03.6 usr_03.txt /*03.6* -03.7 usr_03.txt /*03.7* -03.8 usr_03.txt /*03.8* -03.9 usr_03.txt /*03.9* -04.1 usr_04.txt /*04.1* -04.10 usr_04.txt /*04.10* -04.2 usr_04.txt /*04.2* -04.3 usr_04.txt /*04.3* -04.4 usr_04.txt /*04.4* -04.5 usr_04.txt /*04.5* -04.6 usr_04.txt /*04.6* -04.7 usr_04.txt /*04.7* -04.8 usr_04.txt /*04.8* -04.9 usr_04.txt /*04.9* -05.1 usr_05.txt /*05.1* -05.2 usr_05.txt /*05.2* -05.3 usr_05.txt /*05.3* -05.4 usr_05.txt /*05.4* -05.5 usr_05.txt /*05.5* -05.6 usr_05.txt /*05.6* -05.7 usr_05.txt /*05.7* -06.1 usr_06.txt /*06.1* -06.2 usr_06.txt /*06.2* -06.3 usr_06.txt /*06.3* -06.4 usr_06.txt /*06.4* -06.5 usr_06.txt /*06.5* -06.6 usr_06.txt /*06.6* -07.1 usr_07.txt /*07.1* -07.2 usr_07.txt /*07.2* -07.3 usr_07.txt /*07.3* -07.4 usr_07.txt /*07.4* -07.5 usr_07.txt /*07.5* -07.6 usr_07.txt /*07.6* -07.7 usr_07.txt /*07.7* -08.1 usr_08.txt /*08.1* -08.2 usr_08.txt /*08.2* -08.3 usr_08.txt /*08.3* -08.4 usr_08.txt /*08.4* -08.5 usr_08.txt /*08.5* -08.6 usr_08.txt /*08.6* -08.7 usr_08.txt /*08.7* -08.8 usr_08.txt /*08.8* -08.9 usr_08.txt /*08.9* -09.1 usr_09.txt /*09.1* -09.2 usr_09.txt /*09.2* -09.3 usr_09.txt /*09.3* -09.4 usr_09.txt /*09.4* -10.1 usr_10.txt /*10.1* -10.2 usr_10.txt /*10.2* -10.3 usr_10.txt /*10.3* -10.4 usr_10.txt /*10.4* -10.5 usr_10.txt /*10.5* -10.6 usr_10.txt /*10.6* -10.7 usr_10.txt /*10.7* -10.8 usr_10.txt /*10.8* -10.9 usr_10.txt /*10.9* -11.1 usr_11.txt /*11.1* -11.2 usr_11.txt /*11.2* -11.3 usr_11.txt /*11.3* -11.4 usr_11.txt /*11.4* -12.1 usr_12.txt /*12.1* -12.2 usr_12.txt /*12.2* -12.3 usr_12.txt /*12.3* -12.4 usr_12.txt /*12.4* -12.5 usr_12.txt /*12.5* -12.6 usr_12.txt /*12.6* -12.7 usr_12.txt /*12.7* -12.8 usr_12.txt /*12.8* -1gD pattern.txt /*1gD* -1gd pattern.txt /*1gd* -20.1 usr_20.txt /*20.1* -20.2 usr_20.txt /*20.2* -20.3 usr_20.txt /*20.3* -20.4 usr_20.txt /*20.4* -20.5 usr_20.txt /*20.5* -21.1 usr_21.txt /*21.1* -21.2 usr_21.txt /*21.2* -21.3 usr_21.txt /*21.3* -21.4 usr_21.txt /*21.4* -21.5 usr_21.txt /*21.5* -21.6 usr_21.txt /*21.6* -22.1 usr_22.txt /*22.1* -22.2 usr_22.txt /*22.2* -22.3 usr_22.txt /*22.3* -22.4 usr_22.txt /*22.4* -23.1 usr_23.txt /*23.1* -23.2 usr_23.txt /*23.2* -23.3 usr_23.txt /*23.3* -23.4 usr_23.txt /*23.4* -23.5 usr_23.txt /*23.5* -24.1 usr_24.txt /*24.1* -24.10 usr_24.txt /*24.10* -24.2 usr_24.txt /*24.2* -24.3 usr_24.txt /*24.3* -24.4 usr_24.txt /*24.4* -24.5 usr_24.txt /*24.5* -24.6 usr_24.txt /*24.6* -24.7 usr_24.txt /*24.7* -24.8 usr_24.txt /*24.8* -24.9 usr_24.txt /*24.9* -25.1 usr_25.txt /*25.1* -25.2 usr_25.txt /*25.2* -25.3 usr_25.txt /*25.3* -25.4 usr_25.txt /*25.4* -25.5 usr_25.txt /*25.5* -26.1 usr_26.txt /*26.1* -26.2 usr_26.txt /*26.2* -26.3 usr_26.txt /*26.3* -26.4 usr_26.txt /*26.4* -27.1 usr_27.txt /*27.1* -27.2 usr_27.txt /*27.2* -27.3 usr_27.txt /*27.3* -27.4 usr_27.txt /*27.4* -27.5 usr_27.txt /*27.5* -27.6 usr_27.txt /*27.6* -27.7 usr_27.txt /*27.7* -27.8 usr_27.txt /*27.8* -27.9 usr_27.txt /*27.9* -28.1 usr_28.txt /*28.1* -28.10 usr_28.txt /*28.10* -28.2 usr_28.txt /*28.2* -28.3 usr_28.txt /*28.3* -28.4 usr_28.txt /*28.4* -28.5 usr_28.txt /*28.5* -28.6 usr_28.txt /*28.6* -28.7 usr_28.txt /*28.7* -28.8 usr_28.txt /*28.8* -28.9 usr_28.txt /*28.9* -29.1 usr_29.txt /*29.1* -29.2 usr_29.txt /*29.2* -29.3 usr_29.txt /*29.3* -29.4 usr_29.txt /*29.4* -29.5 usr_29.txt /*29.5* -2html.vim syntax.txt /*2html.vim* -30.1 usr_30.txt /*30.1* -30.2 usr_30.txt /*30.2* -30.3 usr_30.txt /*30.3* -30.4 usr_30.txt /*30.4* -30.5 usr_30.txt /*30.5* -30.6 usr_30.txt /*30.6* -31.1 usr_31.txt /*31.1* -31.2 usr_31.txt /*31.2* -31.3 usr_31.txt /*31.3* -31.4 usr_31.txt /*31.4* -31.5 usr_31.txt /*31.5* -32.1 usr_32.txt /*32.1* -32.2 usr_32.txt /*32.2* -32.3 usr_32.txt /*32.3* -32.4 usr_32.txt /*32.4* -40.1 usr_40.txt /*40.1* -40.2 usr_40.txt /*40.2* -40.3 usr_40.txt /*40.3* -41.1 usr_41.txt /*41.1* -41.10 usr_41.txt /*41.10* -41.11 usr_41.txt /*41.11* -41.12 usr_41.txt /*41.12* -41.13 usr_41.txt /*41.13* -41.14 usr_41.txt /*41.14* -41.15 usr_41.txt /*41.15* -41.16 usr_41.txt /*41.16* -41.2 usr_41.txt /*41.2* -41.3 usr_41.txt /*41.3* -41.4 usr_41.txt /*41.4* -41.5 usr_41.txt /*41.5* -41.6 usr_41.txt /*41.6* -41.7 usr_41.txt /*41.7* -41.8 usr_41.txt /*41.8* -41.9 usr_41.txt /*41.9* -42 usr_42.txt /*42* -42.1 usr_42.txt /*42.1* -42.2 usr_42.txt /*42.2* -42.3 usr_42.txt /*42.3* -42.4 usr_42.txt /*42.4* -43.1 usr_43.txt /*43.1* -43.2 usr_43.txt /*43.2* -44.1 usr_44.txt /*44.1* -44.10 usr_44.txt /*44.10* -44.11 usr_44.txt /*44.11* -44.12 usr_44.txt /*44.12* -44.2 usr_44.txt /*44.2* -44.3 usr_44.txt /*44.3* -44.4 usr_44.txt /*44.4* -44.5 usr_44.txt /*44.5* -44.6 usr_44.txt /*44.6* -44.7 usr_44.txt /*44.7* -44.8 usr_44.txt /*44.8* -44.9 usr_44.txt /*44.9* -45.1 usr_45.txt /*45.1* -45.2 usr_45.txt /*45.2* -45.3 usr_45.txt /*45.3* -45.4 usr_45.txt /*45.4* -45.5 usr_45.txt /*45.5* -8g8 various.txt /*8g8* -90.1 usr_90.txt /*90.1* -90.2 usr_90.txt /*90.2* -90.3 usr_90.txt /*90.3* -90.4 usr_90.txt /*90.4* -90.5 usr_90.txt /*90.5* -: cmdline.txt /*:* -:! various.txt /*:!* -:!! various.txt /*:!!* -:!cmd various.txt /*:!cmd* -:!start os_win32.txt /*:!start* -:# various.txt /*:#* -:#! various.txt /*:#!* -:$ cmdline.txt /*:$* -:% cmdline.txt /*:%* -:& change.txt /*:&* -:' cmdline.txt /*:'* -:, cmdline.txt /*:,* -:. cmdline.txt /*:.* -:/ cmdline.txt /*:\/* -:0file editing.txt /*:0file* -:2match pattern.txt /*:2match* -:3match pattern.txt /*:3match* -::. cmdline.txt /*::.* -::8 cmdline.txt /*::8* -::e cmdline.txt /*::e* -::gs cmdline.txt /*::gs* -::h cmdline.txt /*::h* -::p cmdline.txt /*::p* -::r cmdline.txt /*::r* -::s cmdline.txt /*::s* -::t cmdline.txt /*::t* -::~ cmdline.txt /*::~* -:; cmdline.txt /*:;* -:< change.txt /*:<* -:<abuf> cmdline.txt /*:<abuf>* -:<afile> cmdline.txt /*:<afile>* -:<amatch> cmdline.txt /*:<amatch>* -:<cWORD> cmdline.txt /*:<cWORD>* -:<cfile> cmdline.txt /*:<cfile>* -:<cword> cmdline.txt /*:<cword>* -:<sfile> cmdline.txt /*:<sfile>* -:= various.txt /*:=* -:> change.txt /*:>* -:? cmdline.txt /*:?* -:@ repeat.txt /*:@* -:@: repeat.txt /*:@:* -:@@ repeat.txt /*:@@* -:AdaLines ft_ada.txt /*:AdaLines* -:AdaRainbow ft_ada.txt /*:AdaRainbow* -:AdaSpaces ft_ada.txt /*:AdaSpaces* -:AdaTagDir ft_ada.txt /*:AdaTagDir* -:AdaTagFile ft_ada.txt /*:AdaTagFile* -:AdaTypes ft_ada.txt /*:AdaTypes* -:CompilerSet usr_41.txt /*:CompilerSet* -:DiffOrig diff.txt /*:DiffOrig* -:DoMatchParen pi_paren.txt /*:DoMatchParen* -:Explore pi_netrw.txt /*:Explore* -:GLVS pi_getscript.txt /*:GLVS* -:GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat* -:GnatFind ft_ada.txt /*:GnatFind* -:GnatPretty ft_ada.txt /*:GnatPretty* -:GnatTags ft_ada.txt /*:GnatTags* -:Hexplore pi_netrw.txt /*:Hexplore* -:Man filetype.txt /*:Man* -:MkVimball pi_vimball.txt /*:MkVimball* -:N editing.txt /*:N* -:NetrwClean pi_netrw.txt /*:NetrwClean* -:Nexplore pi_netrw.txt /*:Nexplore* -:Next editing.txt /*:Next* -:NoMatchParen pi_paren.txt /*:NoMatchParen* -:Nr pi_netrw.txt /*:Nr* -:Nread pi_netrw.txt /*:Nread* -:Ns pi_netrw.txt /*:Ns* -:Nsource pi_netrw.txt /*:Nsource* -:Nw pi_netrw.txt /*:Nw* -:Nwrite pi_netrw.txt /*:Nwrite* -:P various.txt /*:P* -:Pexplore pi_netrw.txt /*:Pexplore* -:Print various.txt /*:Print* -:Rexplore pi_netrw.txt /*:Rexplore* -:RmVimball pi_vimball.txt /*:RmVimball* -:Sexplore pi_netrw.txt /*:Sexplore* -:TOhtml syntax.txt /*:TOhtml* -:Texplore pi_netrw.txt /*:Texplore* -:UseVimball pi_vimball.txt /*:UseVimball* -:Vexplore pi_netrw.txt /*:Vexplore* -:VimballList pi_vimball.txt /*:VimballList* -:Vimuntar pi_tar.txt /*:Vimuntar* -:X editing.txt /*:X* -:XMLent insert.txt /*:XMLent* -:XMLns insert.txt /*:XMLns* -:\bar cmdline.txt /*:\\bar* -:_! cmdline.txt /*:_!* -:_# cmdline.txt /*:_#* -:_## cmdline.txt /*:_##* -:_#0 cmdline.txt /*:_#0* -:_#< cmdline.txt /*:_#<* -:_#n cmdline.txt /*:_#n* -:_% cmdline.txt /*:_%* -:_%: cmdline.txt /*:_%:* -:_%< cmdline.txt /*:_%<* -:a insert.txt /*:a* -:ab map.txt /*:ab* -:abbreviate map.txt /*:abbreviate* -:abbreviate-<buffer> map.txt /*:abbreviate-<buffer>* -:abbreviate-local map.txt /*:abbreviate-local* -:abbreviate-verbose map.txt /*:abbreviate-verbose* -:abc map.txt /*:abc* -:abclear map.txt /*:abclear* -:abo windows.txt /*:abo* -:aboveleft windows.txt /*:aboveleft* -:al windows.txt /*:al* -:all windows.txt /*:all* -:am gui.txt /*:am* -:amenu gui.txt /*:amenu* -:an gui.txt /*:an* -:anoremenu gui.txt /*:anoremenu* -:append insert.txt /*:append* -:ar editing.txt /*:ar* -:arga editing.txt /*:arga* -:argadd editing.txt /*:argadd* -:argd editing.txt /*:argd* -:argdelete editing.txt /*:argdelete* -:argdo editing.txt /*:argdo* -:arge editing.txt /*:arge* -:argedit editing.txt /*:argedit* -:argglobal editing.txt /*:argglobal* -:arglocal editing.txt /*:arglocal* -:args editing.txt /*:args* -:args_f editing.txt /*:args_f* -:args_f! editing.txt /*:args_f!* -:argu editing.txt /*:argu* -:argument editing.txt /*:argument* -:as various.txt /*:as* -:ascii various.txt /*:ascii* -:au autocmd.txt /*:au* -:aug autocmd.txt /*:aug* -:augroup autocmd.txt /*:augroup* -:augroup-delete autocmd.txt /*:augroup-delete* -:aun gui.txt /*:aun* -:aunmenu gui.txt /*:aunmenu* -:autocmd autocmd.txt /*:autocmd* -:autocmd-verbose autocmd.txt /*:autocmd-verbose* -:b windows.txt /*:b* -:bN windows.txt /*:bN* -:bNext windows.txt /*:bNext* -:ba windows.txt /*:ba* -:bad windows.txt /*:bad* -:badd windows.txt /*:badd* -:ball windows.txt /*:ball* -:bar cmdline.txt /*:bar* -:bd windows.txt /*:bd* -:bdel windows.txt /*:bdel* -:bdelete windows.txt /*:bdelete* -:be gui.txt /*:be* -:behave gui.txt /*:behave* -:bel windows.txt /*:bel* -:belowright windows.txt /*:belowright* -:bf windows.txt /*:bf* -:bfirst windows.txt /*:bfirst* -:bl windows.txt /*:bl* -:blast windows.txt /*:blast* -:bm windows.txt /*:bm* -:bmodified windows.txt /*:bmodified* -:bn windows.txt /*:bn* -:bnext windows.txt /*:bnext* -:botright windows.txt /*:botright* -:bp windows.txt /*:bp* -:bprevious windows.txt /*:bprevious* -:br windows.txt /*:br* -:brea eval.txt /*:brea* -:break eval.txt /*:break* -:breaka repeat.txt /*:breaka* -:breakadd repeat.txt /*:breakadd* -:breakd repeat.txt /*:breakd* -:breakdel repeat.txt /*:breakdel* -:breakl repeat.txt /*:breakl* -:breaklist repeat.txt /*:breaklist* -:brewind windows.txt /*:brewind* -:bro editing.txt /*:bro* -:browse editing.txt /*:browse* -:browse-set options.txt /*:browse-set* -:bu windows.txt /*:bu* -:buf windows.txt /*:buf* -:bufdo windows.txt /*:bufdo* -:buffer windows.txt /*:buffer* -:buffer-! windows.txt /*:buffer-!* -:buffers windows.txt /*:buffers* -:bun windows.txt /*:bun* -:bunload windows.txt /*:bunload* -:bw windows.txt /*:bw* -:bwipe windows.txt /*:bwipe* -:bwipeout windows.txt /*:bwipeout* -:c change.txt /*:c* -:cN quickfix.txt /*:cN* -:cNext quickfix.txt /*:cNext* -:cNf quickfix.txt /*:cNf* -:cNfile quickfix.txt /*:cNfile* -:ca map.txt /*:ca* -:cabbrev map.txt /*:cabbrev* -:cabc map.txt /*:cabc* -:cabclear map.txt /*:cabclear* -:cad quickfix.txt /*:cad* -:caddb quickfix.txt /*:caddb* -:caddbuffer quickfix.txt /*:caddbuffer* -:caddexpr quickfix.txt /*:caddexpr* -:caddf quickfix.txt /*:caddf* -:caddfile quickfix.txt /*:caddfile* -:cal eval.txt /*:cal* -:call eval.txt /*:call* -:cat eval.txt /*:cat* -:catch eval.txt /*:catch* -:cb quickfix.txt /*:cb* -:cbuffer quickfix.txt /*:cbuffer* -:cc quickfix.txt /*:cc* -:ccl quickfix.txt /*:ccl* -:cclose quickfix.txt /*:cclose* -:cd editing.txt /*:cd* -:cd- editing.txt /*:cd-* -:ce change.txt /*:ce* -:center change.txt /*:center* -:cex quickfix.txt /*:cex* -:cexpr quickfix.txt /*:cexpr* -:cf quickfix.txt /*:cf* -:cfile quickfix.txt /*:cfile* -:cfir quickfix.txt /*:cfir* -:cfirst quickfix.txt /*:cfirst* -:cg quickfix.txt /*:cg* -:cgetb quickfix.txt /*:cgetb* -:cgetbuffer quickfix.txt /*:cgetbuffer* -:cgete quickfix.txt /*:cgete* -:cgetexpr quickfix.txt /*:cgetexpr* -:cgetfile quickfix.txt /*:cgetfile* -:ch change.txt /*:ch* -:change change.txt /*:change* -:changes motion.txt /*:changes* -:chd editing.txt /*:chd* -:chdir editing.txt /*:chdir* -:che tagsrch.txt /*:che* -:checkpath tagsrch.txt /*:checkpath* -:checkt editing.txt /*:checkt* -:checktime editing.txt /*:checktime* -:cl quickfix.txt /*:cl* -:cla quickfix.txt /*:cla* -:clast quickfix.txt /*:clast* -:clist quickfix.txt /*:clist* -:clo windows.txt /*:clo* -:close windows.txt /*:close* -:cm map.txt /*:cm* -:cmap map.txt /*:cmap* -:cmap_l map.txt /*:cmap_l* -:cmapc map.txt /*:cmapc* -:cmapclear map.txt /*:cmapclear* -:cme gui.txt /*:cme* -:cmenu gui.txt /*:cmenu* -:cn quickfix.txt /*:cn* -:cnew quickfix.txt /*:cnew* -:cnewer quickfix.txt /*:cnewer* -:cnext quickfix.txt /*:cnext* -:cnf quickfix.txt /*:cnf* -:cnfile quickfix.txt /*:cnfile* -:cno map.txt /*:cno* -:cnorea map.txt /*:cnorea* -:cnoreabbrev map.txt /*:cnoreabbrev* -:cnoremap map.txt /*:cnoremap* -:cnoreme gui.txt /*:cnoreme* -:cnoremenu gui.txt /*:cnoremenu* -:co change.txt /*:co* -:col quickfix.txt /*:col* -:colder quickfix.txt /*:colder* -:colo syntax.txt /*:colo* -:colorscheme syntax.txt /*:colorscheme* -:com map.txt /*:com* -:comc map.txt /*:comc* -:comclear map.txt /*:comclear* -:command map.txt /*:command* -:command-bang map.txt /*:command-bang* -:command-bar map.txt /*:command-bar* -:command-buffer map.txt /*:command-buffer* -:command-complete map.txt /*:command-complete* -:command-completion map.txt /*:command-completion* -:command-completion-custom map.txt /*:command-completion-custom* -:command-completion-customlist map.txt /*:command-completion-customlist* -:command-count map.txt /*:command-count* -:command-nargs map.txt /*:command-nargs* -:command-range map.txt /*:command-range* -:command-register map.txt /*:command-register* -:command-verbose map.txt /*:command-verbose* -:comment cmdline.txt /*:comment* -:comp quickfix.txt /*:comp* -:compiler quickfix.txt /*:compiler* -:con eval.txt /*:con* -:conf editing.txt /*:conf* -:confirm editing.txt /*:confirm* -:continue eval.txt /*:continue* -:cope quickfix.txt /*:cope* -:copen quickfix.txt /*:copen* -:copy change.txt /*:copy* -:cp quickfix.txt /*:cp* -:cpf quickfix.txt /*:cpf* -:cpfile quickfix.txt /*:cpfile* -:cprevious quickfix.txt /*:cprevious* -:cq quickfix.txt /*:cq* -:cquit quickfix.txt /*:cquit* -:cr quickfix.txt /*:cr* -:crewind quickfix.txt /*:crewind* -:cs if_cscop.txt /*:cs* -:cscope if_cscop.txt /*:cscope* -:cstag if_cscop.txt /*:cstag* -:cu map.txt /*:cu* -:cuna map.txt /*:cuna* -:cunabbrev map.txt /*:cunabbrev* -:cunmap map.txt /*:cunmap* -:cunme gui.txt /*:cunme* -:cunmenu gui.txt /*:cunmenu* -:cw quickfix.txt /*:cw* -:cwindow quickfix.txt /*:cwindow* -:d change.txt /*:d* -:de change.txt /*:de* -:debug repeat.txt /*:debug* -:debug-name repeat.txt /*:debug-name* -:debugg repeat.txt /*:debugg* -:debuggreedy repeat.txt /*:debuggreedy* -:del change.txt /*:del* -:delc map.txt /*:delc* -:delcommand map.txt /*:delcommand* -:delcr todo.txt /*:delcr* -:delete change.txt /*:delete* -:delf eval.txt /*:delf* -:delfunction eval.txt /*:delfunction* -:delm motion.txt /*:delm* -:delmarks motion.txt /*:delmarks* -:di change.txt /*:di* -:diffg diff.txt /*:diffg* -:diffget diff.txt /*:diffget* -:diffo diff.txt /*:diffo* -:diffoff diff.txt /*:diffoff* -:diffp diff.txt /*:diffp* -:diffpatch diff.txt /*:diffpatch* -:diffpu diff.txt /*:diffpu* -:diffput diff.txt /*:diffput* -:diffs diff.txt /*:diffs* -:diffsplit diff.txt /*:diffsplit* -:difft diff.txt /*:difft* -:diffthis diff.txt /*:diffthis* -:diffu diff.txt /*:diffu* -:diffupdate diff.txt /*:diffupdate* -:dig digraph.txt /*:dig* -:digraphs digraph.txt /*:digraphs* -:display change.txt /*:display* -:dj tagsrch.txt /*:dj* -:djump tagsrch.txt /*:djump* -:dli tagsrch.txt /*:dli* -:dlist tagsrch.txt /*:dlist* -:do autocmd.txt /*:do* -:doau autocmd.txt /*:doau* -:doautoa autocmd.txt /*:doautoa* -:doautoall autocmd.txt /*:doautoall* -:doautocmd autocmd.txt /*:doautocmd* -:dr windows.txt /*:dr* -:drop windows.txt /*:drop* -:ds tagsrch.txt /*:ds* -:dsearch tagsrch.txt /*:dsearch* -:dsp tagsrch.txt /*:dsp* -:dsplit tagsrch.txt /*:dsplit* -:e editing.txt /*:e* -:ea undo.txt /*:ea* -:earlier undo.txt /*:earlier* -:ec eval.txt /*:ec* -:echo eval.txt /*:echo* -:echo-redraw eval.txt /*:echo-redraw* -:echoe eval.txt /*:echoe* -:echoerr eval.txt /*:echoerr* -:echoh eval.txt /*:echoh* -:echohl eval.txt /*:echohl* -:echom eval.txt /*:echom* -:echomsg eval.txt /*:echomsg* -:echon eval.txt /*:echon* -:edit editing.txt /*:edit* -:edit! editing.txt /*:edit!* -:edit!_f editing.txt /*:edit!_f* -:edit_f editing.txt /*:edit_f* -:el eval.txt /*:el* -:else eval.txt /*:else* -:elsei eval.txt /*:elsei* -:elseif eval.txt /*:elseif* -:em gui.txt /*:em* -:emenu gui.txt /*:emenu* -:en eval.txt /*:en* -:endf eval.txt /*:endf* -:endfo eval.txt /*:endfo* -:endfor eval.txt /*:endfor* -:endfunction eval.txt /*:endfunction* -:endif eval.txt /*:endif* -:endt eval.txt /*:endt* -:endtry eval.txt /*:endtry* -:endw eval.txt /*:endw* -:endwhile eval.txt /*:endwhile* -:ene editing.txt /*:ene* -:ene! editing.txt /*:ene!* -:enew editing.txt /*:enew* -:enew! editing.txt /*:enew!* -:ex editing.txt /*:ex* -:exe eval.txt /*:exe* -:exe-comment eval.txt /*:exe-comment* -:execute eval.txt /*:execute* -:exi editing.txt /*:exi* -:exit editing.txt /*:exit* -:exu helphelp.txt /*:exu* -:exusage helphelp.txt /*:exusage* -:f editing.txt /*:f* -:fi editing.txt /*:fi* -:file editing.txt /*:file* -:file_f editing.txt /*:file_f* -:filename editing.txt /*:filename* -:files windows.txt /*:files* -:filet filetype.txt /*:filet* -:filetype filetype.txt /*:filetype* -:filetype-indent-off filetype.txt /*:filetype-indent-off* -:filetype-indent-on filetype.txt /*:filetype-indent-on* -:filetype-off filetype.txt /*:filetype-off* -:filetype-overview filetype.txt /*:filetype-overview* -:filetype-plugin-off filetype.txt /*:filetype-plugin-off* -:filetype-plugin-on filetype.txt /*:filetype-plugin-on* -:fin editing.txt /*:fin* -:fina eval.txt /*:fina* -:finally eval.txt /*:finally* -:find editing.txt /*:find* -:fini repeat.txt /*:fini* -:finish repeat.txt /*:finish* -:fir editing.txt /*:fir* -:first editing.txt /*:first* -:fix options.txt /*:fix* -:fixdel options.txt /*:fixdel* -:fo fold.txt /*:fo* -:fold fold.txt /*:fold* -:foldc fold.txt /*:foldc* -:foldclose fold.txt /*:foldclose* -:foldd fold.txt /*:foldd* -:folddoc fold.txt /*:folddoc* -:folddoclosed fold.txt /*:folddoclosed* -:folddoopen fold.txt /*:folddoopen* -:foldo fold.txt /*:foldo* -:foldopen fold.txt /*:foldopen* -:for eval.txt /*:for* -:fu eval.txt /*:fu* -:function eval.txt /*:function* -:function-verbose eval.txt /*:function-verbose* -:g repeat.txt /*:g* -:global repeat.txt /*:global* -:go motion.txt /*:go* -:goto motion.txt /*:goto* -:gr quickfix.txt /*:gr* -:grep quickfix.txt /*:grep* -:grepa quickfix.txt /*:grepa* -:grepadd quickfix.txt /*:grepadd* -:gu gui_x11.txt /*:gu* -:gui gui_x11.txt /*:gui* -:gv gui_x11.txt /*:gv* -:gvim gui_x11.txt /*:gvim* -:h helphelp.txt /*:h* -:ha print.txt /*:ha* -:hardcopy print.txt /*:hardcopy* -:help helphelp.txt /*:help* -:helpf helphelp.txt /*:helpf* -:helpfind helphelp.txt /*:helpfind* -:helpg helphelp.txt /*:helpg* -:helpgrep helphelp.txt /*:helpgrep* -:helpt helphelp.txt /*:helpt* -:helptags helphelp.txt /*:helptags* -:hi syntax.txt /*:hi* -:hi-default syntax.txt /*:hi-default* -:hi-link syntax.txt /*:hi-link* -:hi-normal syntax.txt /*:hi-normal* -:hi-normal-cterm syntax.txt /*:hi-normal-cterm* -:hide windows.txt /*:hide* -:highlight syntax.txt /*:highlight* -:highlight-default syntax.txt /*:highlight-default* -:highlight-link syntax.txt /*:highlight-link* -:highlight-normal syntax.txt /*:highlight-normal* -:highlight-verbose syntax.txt /*:highlight-verbose* -:his cmdline.txt /*:his* -:history cmdline.txt /*:history* -:history-indexing cmdline.txt /*:history-indexing* -:i insert.txt /*:i* -:ia map.txt /*:ia* -:iabbrev map.txt /*:iabbrev* -:iabc map.txt /*:iabc* -:iabclear map.txt /*:iabclear* -:if eval.txt /*:if* -:ij tagsrch.txt /*:ij* -:ijump tagsrch.txt /*:ijump* -:il tagsrch.txt /*:il* -:ilist tagsrch.txt /*:ilist* -:im map.txt /*:im* -:imap map.txt /*:imap* -:imap_l map.txt /*:imap_l* -:imapc map.txt /*:imapc* -:imapclear map.txt /*:imapclear* -:ime gui.txt /*:ime* -:imenu gui.txt /*:imenu* -:in insert.txt /*:in* -:index index.txt /*:index* -:ino map.txt /*:ino* -:inorea map.txt /*:inorea* -:inoreabbrev map.txt /*:inoreabbrev* -:inoremap map.txt /*:inoremap* -:inoreme gui.txt /*:inoreme* -:inoremenu gui.txt /*:inoremenu* -:insert insert.txt /*:insert* -:intro starting.txt /*:intro* -:is tagsrch.txt /*:is* -:isearch tagsrch.txt /*:isearch* -:isp tagsrch.txt /*:isp* -:isplit tagsrch.txt /*:isplit* -:iu map.txt /*:iu* -:iuna map.txt /*:iuna* -:iunabbrev map.txt /*:iunabbrev* -:iunmap map.txt /*:iunmap* -:iunme gui.txt /*:iunme* -:iunmenu gui.txt /*:iunmenu* -:j change.txt /*:j* -:join change.txt /*:join* -:ju motion.txt /*:ju* -:jumps motion.txt /*:jumps* -:k motion.txt /*:k* -:kee motion.txt /*:kee* -:keepa editing.txt /*:keepa* -:keepalt editing.txt /*:keepalt* -:keepj motion.txt /*:keepj* -:keepjumps motion.txt /*:keepjumps* -:keepmarks motion.txt /*:keepmarks* -:l various.txt /*:l* -:lN quickfix.txt /*:lN* -:lNext quickfix.txt /*:lNext* -:lNf quickfix.txt /*:lNf* -:lNfile quickfix.txt /*:lNfile* -:la editing.txt /*:la* -:lad quickfix.txt /*:lad* -:laddb quickfix.txt /*:laddb* -:laddbuffer quickfix.txt /*:laddbuffer* -:laddexpr quickfix.txt /*:laddexpr* -:laddf quickfix.txt /*:laddf* -:laddfile quickfix.txt /*:laddfile* -:lan mlang.txt /*:lan* -:lang mlang.txt /*:lang* -:language mlang.txt /*:language* -:last editing.txt /*:last* -:lat undo.txt /*:lat* -:later undo.txt /*:later* -:lb quickfix.txt /*:lb* -:lbuffer quickfix.txt /*:lbuffer* -:lc editing.txt /*:lc* -:lcd editing.txt /*:lcd* -:lch editing.txt /*:lch* -:lchdir editing.txt /*:lchdir* -:lcl quickfix.txt /*:lcl* -:lclose quickfix.txt /*:lclose* -:lcs if_cscop.txt /*:lcs* -:lcscope if_cscop.txt /*:lcscope* -:le change.txt /*:le* -:left change.txt /*:left* -:lefta windows.txt /*:lefta* -:leftabove windows.txt /*:leftabove* -:let eval.txt /*:let* -:let+= eval.txt /*:let+=* -:let-$ eval.txt /*:let-$* -:let-& eval.txt /*:let-&* -:let-= eval.txt /*:let-=* -:let-@ eval.txt /*:let-@* -:let-environment eval.txt /*:let-environment* -:let-option eval.txt /*:let-option* -:let-register eval.txt /*:let-register* -:let-unpack eval.txt /*:let-unpack* -:let.= eval.txt /*:let.=* -:lex quickfix.txt /*:lex* -:lexpr quickfix.txt /*:lexpr* -:lf quickfix.txt /*:lf* -:lfile quickfix.txt /*:lfile* -:lfir quickfix.txt /*:lfir* -:lfirst quickfix.txt /*:lfirst* -:lg quickfix.txt /*:lg* -:lgetb quickfix.txt /*:lgetb* -:lgetbuffer quickfix.txt /*:lgetbuffer* -:lgete quickfix.txt /*:lgete* -:lgetexpr quickfix.txt /*:lgetexpr* -:lgetfile quickfix.txt /*:lgetfile* -:lgr quickfix.txt /*:lgr* -:lgrep quickfix.txt /*:lgrep* -:lgrepa quickfix.txt /*:lgrepa* -:lgrepadd quickfix.txt /*:lgrepadd* -:lh helphelp.txt /*:lh* -:lhelpgrep helphelp.txt /*:lhelpgrep* -:list various.txt /*:list* -:ll quickfix.txt /*:ll* -:lla quickfix.txt /*:lla* -:llast quickfix.txt /*:llast* -:lli quickfix.txt /*:lli* -:llist quickfix.txt /*:llist* -:lm map.txt /*:lm* -:lmak quickfix.txt /*:lmak* -:lmake quickfix.txt /*:lmake* -:lmap map.txt /*:lmap* -:lmap_l map.txt /*:lmap_l* -:lmapc map.txt /*:lmapc* -:lmapclear map.txt /*:lmapclear* -:ln map.txt /*:ln* -:lne quickfix.txt /*:lne* -:lnew quickfix.txt /*:lnew* -:lnewer quickfix.txt /*:lnewer* -:lnext quickfix.txt /*:lnext* -:lnf quickfix.txt /*:lnf* -:lnfile quickfix.txt /*:lnfile* -:lnoremap map.txt /*:lnoremap* -:lo starting.txt /*:lo* -:loadk mbyte.txt /*:loadk* -:loadkeymap mbyte.txt /*:loadkeymap* -:loadview starting.txt /*:loadview* -:loc motion.txt /*:loc* -:lockmarks motion.txt /*:lockmarks* -:lockv eval.txt /*:lockv* -:lockvar eval.txt /*:lockvar* -:lol quickfix.txt /*:lol* -:lolder quickfix.txt /*:lolder* -:lop quickfix.txt /*:lop* -:lopen quickfix.txt /*:lopen* -:lp quickfix.txt /*:lp* -:lpf quickfix.txt /*:lpf* -:lpfile quickfix.txt /*:lpfile* -:lprevious quickfix.txt /*:lprevious* -:lr quickfix.txt /*:lr* -:lrewind quickfix.txt /*:lrewind* -:ls windows.txt /*:ls* -:lt tagsrch.txt /*:lt* -:ltag tagsrch.txt /*:ltag* -:lu map.txt /*:lu* -:lua if_lua.txt /*:lua* -:luado if_lua.txt /*:luado* -:luafile if_lua.txt /*:luafile* -:lunmap map.txt /*:lunmap* -:lv quickfix.txt /*:lv* -:lvimgrep quickfix.txt /*:lvimgrep* -:lvimgrepa quickfix.txt /*:lvimgrepa* -:lvimgrepadd quickfix.txt /*:lvimgrepadd* -:lw quickfix.txt /*:lw* -:lwindow quickfix.txt /*:lwindow* -:m change.txt /*:m* -:ma motion.txt /*:ma* -:mak quickfix.txt /*:mak* -:make quickfix.txt /*:make* -:make_makeprg quickfix.txt /*:make_makeprg* -:map map.txt /*:map* -:map! map.txt /*:map!* -:map-<buffer> map.txt /*:map-<buffer>* -:map-<expr> map.txt /*:map-<expr>* -:map-<script> map.txt /*:map-<script>* -:map-<silent> map.txt /*:map-<silent>* -:map-<special> map.txt /*:map-<special>* -:map-<unique> map.txt /*:map-<unique>* -:map-alt-keys map.txt /*:map-alt-keys* -:map-arguments map.txt /*:map-arguments* -:map-commands map.txt /*:map-commands* -:map-expression map.txt /*:map-expression* -:map-local map.txt /*:map-local* -:map-modes map.txt /*:map-modes* -:map-operator map.txt /*:map-operator* -:map-script map.txt /*:map-script* -:map-silent map.txt /*:map-silent* -:map-special map.txt /*:map-special* -:map-special-chars map.txt /*:map-special-chars* -:map-special-keys map.txt /*:map-special-keys* -:map-undo map.txt /*:map-undo* -:map-verbose map.txt /*:map-verbose* -:map_l map.txt /*:map_l* -:map_l! map.txt /*:map_l!* -:mapc map.txt /*:mapc* -:mapc! map.txt /*:mapc!* -:mapclear map.txt /*:mapclear* -:mapclear! map.txt /*:mapclear!* -:mark motion.txt /*:mark* -:marks motion.txt /*:marks* -:mat pattern.txt /*:mat* -:match pattern.txt /*:match* -:me gui.txt /*:me* -:menu gui.txt /*:menu* -:menu-<script> gui.txt /*:menu-<script>* -:menu-<silent> gui.txt /*:menu-<silent>* -:menu-<special> gui.txt /*:menu-<special>* -:menu-disable gui.txt /*:menu-disable* -:menu-enable gui.txt /*:menu-enable* -:menu-script gui.txt /*:menu-script* -:menu-silent gui.txt /*:menu-silent* -:menu-special gui.txt /*:menu-special* -:menut mlang.txt /*:menut* -:menutrans mlang.txt /*:menutrans* -:menutranslate mlang.txt /*:menutranslate* -:mes message.txt /*:mes* -:messages message.txt /*:messages* -:mk starting.txt /*:mk* -:mkexrc starting.txt /*:mkexrc* -:mks starting.txt /*:mks* -:mksession starting.txt /*:mksession* -:mksp spell.txt /*:mksp* -:mkspell spell.txt /*:mkspell* -:mkv starting.txt /*:mkv* -:mkvie starting.txt /*:mkvie* -:mkview starting.txt /*:mkview* -:mkvimrc starting.txt /*:mkvimrc* -:mo change.txt /*:mo* -:mod term.txt /*:mod* -:mode term.txt /*:mode* -:move change.txt /*:move* -:mz if_mzsch.txt /*:mz* -:mzf if_mzsch.txt /*:mzf* -:mzfile if_mzsch.txt /*:mzfile* -:mzscheme if_mzsch.txt /*:mzscheme* -:n editing.txt /*:n* -:nbclose netbeans.txt /*:nbclose* -:nbkey netbeans.txt /*:nbkey* -:nbstart netbeans.txt /*:nbstart* -:ne editing.txt /*:ne* -:new windows.txt /*:new* -:next editing.txt /*:next* -:next_f editing.txt /*:next_f* -:nm map.txt /*:nm* -:nmap map.txt /*:nmap* -:nmap_l map.txt /*:nmap_l* -:nmapc map.txt /*:nmapc* -:nmapclear map.txt /*:nmapclear* -:nme gui.txt /*:nme* -:nmenu gui.txt /*:nmenu* -:nn map.txt /*:nn* -:nnoremap map.txt /*:nnoremap* -:nnoreme gui.txt /*:nnoreme* -:nnoremenu gui.txt /*:nnoremenu* -:no map.txt /*:no* -:no! map.txt /*:no!* -:noa autocmd.txt /*:noa* -:noautocmd autocmd.txt /*:noautocmd* -:noh pattern.txt /*:noh* -:nohlsearch pattern.txt /*:nohlsearch* -:norea map.txt /*:norea* -:noreabbrev map.txt /*:noreabbrev* -:noremap map.txt /*:noremap* -:noremap! map.txt /*:noremap!* -:noreme gui.txt /*:noreme* -:noremenu gui.txt /*:noremenu* -:norm various.txt /*:norm* -:normal various.txt /*:normal* -:normal-range various.txt /*:normal-range* -:nu various.txt /*:nu* -:number various.txt /*:number* -:nun map.txt /*:nun* -:nunmap map.txt /*:nunmap* -:nunme gui.txt /*:nunme* -:nunmenu gui.txt /*:nunmenu* -:o vi_diff.txt /*:o* -:ol starting.txt /*:ol* -:oldfiles starting.txt /*:oldfiles* -:om map.txt /*:om* -:omap map.txt /*:omap* -:omap_l map.txt /*:omap_l* -:omapc map.txt /*:omapc* -:omapclear map.txt /*:omapclear* -:ome gui.txt /*:ome* -:omenu gui.txt /*:omenu* -:on windows.txt /*:on* -:only windows.txt /*:only* -:ono map.txt /*:ono* -:onoremap map.txt /*:onoremap* -:onoreme gui.txt /*:onoreme* -:onoremenu gui.txt /*:onoremenu* -:op vi_diff.txt /*:op* -:open vi_diff.txt /*:open* -:opt options.txt /*:opt* -:options options.txt /*:options* -:ou map.txt /*:ou* -:ounmap map.txt /*:ounmap* -:ounme gui.txt /*:ounme* -:ounmenu gui.txt /*:ounmenu* -:ownsyntax syntax.txt /*:ownsyntax* -:p various.txt /*:p* -:pc windows.txt /*:pc* -:pclose windows.txt /*:pclose* -:pe if_perl.txt /*:pe* -:ped windows.txt /*:ped* -:pedit windows.txt /*:pedit* -:perl if_perl.txt /*:perl* -:perld if_perl.txt /*:perld* -:perldo if_perl.txt /*:perldo* -:po tagsrch.txt /*:po* -:pop tagsrch.txt /*:pop* -:popu gui.txt /*:popu* -:popup gui.txt /*:popup* -:pp windows.txt /*:pp* -:ppop windows.txt /*:ppop* -:pr various.txt /*:pr* -:pre recover.txt /*:pre* -:preserve recover.txt /*:preserve* -:prev editing.txt /*:prev* -:previous editing.txt /*:previous* -:print various.txt /*:print* -:pro change.txt /*:pro* -:prof repeat.txt /*:prof* -:profd repeat.txt /*:profd* -:profdel repeat.txt /*:profdel* -:profile repeat.txt /*:profile* -:promptfind change.txt /*:promptfind* -:promptr change.txt /*:promptr* -:promptrepl change.txt /*:promptrepl* -:ps windows.txt /*:ps* -:psearch windows.txt /*:psearch* -:ptN tagsrch.txt /*:ptN* -:ptNext tagsrch.txt /*:ptNext* -:pta windows.txt /*:pta* -:ptag windows.txt /*:ptag* -:ptf tagsrch.txt /*:ptf* -:ptfirst tagsrch.txt /*:ptfirst* -:ptj tagsrch.txt /*:ptj* -:ptjump tagsrch.txt /*:ptjump* -:ptl tagsrch.txt /*:ptl* -:ptlast tagsrch.txt /*:ptlast* -:ptn tagsrch.txt /*:ptn* -:ptnext tagsrch.txt /*:ptnext* -:ptp tagsrch.txt /*:ptp* -:ptprevious tagsrch.txt /*:ptprevious* -:ptr tagsrch.txt /*:ptr* -:ptrewind tagsrch.txt /*:ptrewind* -:pts tagsrch.txt /*:pts* -:ptselect tagsrch.txt /*:ptselect* -:pu change.txt /*:pu* -:put change.txt /*:put* -:pw editing.txt /*:pw* -:pwd editing.txt /*:pwd* -:py if_pyth.txt /*:py* -:py3 if_pyth.txt /*:py3* -:py3file if_pyth.txt /*:py3file* -:pyf if_pyth.txt /*:pyf* -:pyfile if_pyth.txt /*:pyfile* -:python if_pyth.txt /*:python* -:python3 if_pyth.txt /*:python3* -:q editing.txt /*:q* -:qa editing.txt /*:qa* -:qall editing.txt /*:qall* -:quit editing.txt /*:quit* -:quita editing.txt /*:quita* -:quitall editing.txt /*:quitall* -:quote cmdline.txt /*:quote* -:r insert.txt /*:r* -:r! insert.txt /*:r!* -:range cmdline.txt /*:range* -:range! change.txt /*:range!* -:re insert.txt /*:re* -:read insert.txt /*:read* -:read! insert.txt /*:read!* -:rec recover.txt /*:rec* -:recover recover.txt /*:recover* -:recover-crypt recover.txt /*:recover-crypt* -:red undo.txt /*:red* -:redi various.txt /*:redi* -:redir various.txt /*:redir* -:redo undo.txt /*:redo* -:redr various.txt /*:redr* -:redraw various.txt /*:redraw* -:redraws various.txt /*:redraws* -:redrawstatus various.txt /*:redrawstatus* -:reg change.txt /*:reg* -:registers change.txt /*:registers* -:res windows.txt /*:res* -:resize windows.txt /*:resize* -:ret change.txt /*:ret* -:retab change.txt /*:retab* -:retu eval.txt /*:retu* -:return eval.txt /*:return* -:rew editing.txt /*:rew* -:rewind editing.txt /*:rewind* -:ri change.txt /*:ri* -:right change.txt /*:right* -:rightb windows.txt /*:rightb* -:rightbelow windows.txt /*:rightbelow* -:ru repeat.txt /*:ru* -:rub if_ruby.txt /*:rub* -:ruby if_ruby.txt /*:ruby* -:rubyd if_ruby.txt /*:rubyd* -:rubydo if_ruby.txt /*:rubydo* -:rubyf if_ruby.txt /*:rubyf* -:rubyfile if_ruby.txt /*:rubyfile* -:rundo undo.txt /*:rundo* -:runtime repeat.txt /*:runtime* -:rv starting.txt /*:rv* -:rviminfo starting.txt /*:rviminfo* -:s change.txt /*:s* -:s% change.txt /*:s%* -:sN windows.txt /*:sN* -:sNext windows.txt /*:sNext* -:s\= change.txt /*:s\\=* -:s_c change.txt /*:s_c* -:s_flags change.txt /*:s_flags* -:sa windows.txt /*:sa* -:sal windows.txt /*:sal* -:sall windows.txt /*:sall* -:san eval.txt /*:san* -:sandbox eval.txt /*:sandbox* -:sargument windows.txt /*:sargument* -:sav editing.txt /*:sav* -:saveas editing.txt /*:saveas* -:sb windows.txt /*:sb* -:sbN windows.txt /*:sbN* -:sbNext windows.txt /*:sbNext* -:sba windows.txt /*:sba* -:sball windows.txt /*:sball* -:sbf windows.txt /*:sbf* -:sbfirst windows.txt /*:sbfirst* -:sbl windows.txt /*:sbl* -:sblast windows.txt /*:sblast* -:sbm windows.txt /*:sbm* -:sbmodified windows.txt /*:sbmodified* -:sbn windows.txt /*:sbn* -:sbnext windows.txt /*:sbnext* -:sbp windows.txt /*:sbp* -:sbprevious windows.txt /*:sbprevious* -:sbr windows.txt /*:sbr* -:sbrewind windows.txt /*:sbrewind* -:sbuffer windows.txt /*:sbuffer* -:scrip repeat.txt /*:scrip* -:scripte repeat.txt /*:scripte* -:scriptencoding repeat.txt /*:scriptencoding* -:scriptnames repeat.txt /*:scriptnames* -:scs if_cscop.txt /*:scs* -:scscope if_cscop.txt /*:scscope* -:se options.txt /*:se* -:search-args tagsrch.txt /*:search-args* -:set options.txt /*:set* -:set+= options.txt /*:set+=* -:set-! options.txt /*:set-!* -:set-& options.txt /*:set-&* -:set-&vi options.txt /*:set-&vi* -:set-&vim options.txt /*:set-&vim* -:set-= options.txt /*:set-=* -:set-args options.txt /*:set-args* -:set-browse options.txt /*:set-browse* -:set-default options.txt /*:set-default* -:set-inv options.txt /*:set-inv* -:set-termcap options.txt /*:set-termcap* -:set-verbose options.txt /*:set-verbose* -:set^= options.txt /*:set^=* -:set_env options.txt /*:set_env* -:setf options.txt /*:setf* -:setfiletype options.txt /*:setfiletype* -:setg options.txt /*:setg* -:setglobal options.txt /*:setglobal* -:setl options.txt /*:setl* -:setlocal options.txt /*:setlocal* -:sf windows.txt /*:sf* -:sfind windows.txt /*:sfind* -:sfir windows.txt /*:sfir* -:sfirst windows.txt /*:sfirst* -:sh various.txt /*:sh* -:shell various.txt /*:shell* -:si gui_w32.txt /*:si* -:sig sign.txt /*:sig* -:sign sign.txt /*:sign* -:sign-define sign.txt /*:sign-define* -:sign-fname sign.txt /*:sign-fname* -:sign-jump sign.txt /*:sign-jump* -:sign-list sign.txt /*:sign-list* -:sign-place sign.txt /*:sign-place* -:sign-undefine sign.txt /*:sign-undefine* -:sign-unplace sign.txt /*:sign-unplace* -:sil various.txt /*:sil* -:silent various.txt /*:silent* -:simalt gui_w32.txt /*:simalt* -:sl various.txt /*:sl* -:sla windows.txt /*:sla* -:slast windows.txt /*:slast* -:sleep various.txt /*:sleep* -:sm change.txt /*:sm* -:smagic change.txt /*:smagic* -:smap map.txt /*:smap* -:smap_l map.txt /*:smap_l* -:smapc map.txt /*:smapc* -:smapclear map.txt /*:smapclear* -:sme gui.txt /*:sme* -:smenu gui.txt /*:smenu* -:sn windows.txt /*:sn* -:snext windows.txt /*:snext* -:sni if_sniff.txt /*:sni* -:sniff if_sniff.txt /*:sniff* -:sno change.txt /*:sno* -:snomagic change.txt /*:snomagic* -:snor map.txt /*:snor* -:snoremap map.txt /*:snoremap* -:snoreme gui.txt /*:snoreme* -:snoremenu gui.txt /*:snoremenu* -:so repeat.txt /*:so* -:sor change.txt /*:sor* -:sort change.txt /*:sort* -:source repeat.txt /*:source* -:source_crnl repeat.txt /*:source_crnl* -:sp windows.txt /*:sp* -:spe spell.txt /*:spe* -:spelld spell.txt /*:spelld* -:spelldump spell.txt /*:spelldump* -:spellgood spell.txt /*:spellgood* -:spelli spell.txt /*:spelli* -:spellinfo spell.txt /*:spellinfo* -:spellr spell.txt /*:spellr* -:spellrepall spell.txt /*:spellrepall* -:spellu spell.txt /*:spellu* -:spellundo spell.txt /*:spellundo* -:spellw spell.txt /*:spellw* -:spellwrong spell.txt /*:spellwrong* -:split windows.txt /*:split* -:split_f windows.txt /*:split_f* -:spr windows.txt /*:spr* -:sprevious windows.txt /*:sprevious* -:sre windows.txt /*:sre* -:srewind windows.txt /*:srewind* -:st starting.txt /*:st* -:sta windows.txt /*:sta* -:stag windows.txt /*:stag* -:star repeat.txt /*:star* -:start insert.txt /*:start* -:startgreplace insert.txt /*:startgreplace* -:startinsert insert.txt /*:startinsert* -:startreplace insert.txt /*:startreplace* -:stj tagsrch.txt /*:stj* -:stjump tagsrch.txt /*:stjump* -:stop starting.txt /*:stop* -:stopi insert.txt /*:stopi* -:stopinsert insert.txt /*:stopinsert* -:sts tagsrch.txt /*:sts* -:stselect tagsrch.txt /*:stselect* -:su change.txt /*:su* -:substitute change.txt /*:substitute* -:sun windows.txt /*:sun* -:sunhide windows.txt /*:sunhide* -:sunm map.txt /*:sunm* -:sunmap map.txt /*:sunmap* -:sunme gui.txt /*:sunme* -:sunmenu gui.txt /*:sunmenu* -:sus starting.txt /*:sus* -:suspend starting.txt /*:suspend* -:sv windows.txt /*:sv* -:sview windows.txt /*:sview* -:sw recover.txt /*:sw* -:swapname recover.txt /*:swapname* -:sy syntax.txt /*:sy* -:syn syntax.txt /*:syn* -:syn-arguments syntax.txt /*:syn-arguments* -:syn-case syntax.txt /*:syn-case* -:syn-cchar syntax.txt /*:syn-cchar* -:syn-clear syntax.txt /*:syn-clear* -:syn-cluster syntax.txt /*:syn-cluster* -:syn-conceal syntax.txt /*:syn-conceal* -:syn-conceal-implicit syntax.txt /*:syn-conceal-implicit* -:syn-concealends syntax.txt /*:syn-concealends* -:syn-contained syntax.txt /*:syn-contained* -:syn-containedin syntax.txt /*:syn-containedin* -:syn-contains syntax.txt /*:syn-contains* -:syn-context syntax.txt /*:syn-context* -:syn-default-override usr_06.txt /*:syn-default-override* -:syn-define syntax.txt /*:syn-define* -:syn-display syntax.txt /*:syn-display* -:syn-enable syntax.txt /*:syn-enable* -:syn-end syntax.txt /*:syn-end* -:syn-excludenl syntax.txt /*:syn-excludenl* -:syn-ext-match syntax.txt /*:syn-ext-match* -:syn-extend syntax.txt /*:syn-extend* -:syn-file-remarks syntax.txt /*:syn-file-remarks* -:syn-files syntax.txt /*:syn-files* -:syn-fold syntax.txt /*:syn-fold* -:syn-include syntax.txt /*:syn-include* -:syn-keepend syntax.txt /*:syn-keepend* -:syn-keyword syntax.txt /*:syn-keyword* -:syn-lc syntax.txt /*:syn-lc* -:syn-leading syntax.txt /*:syn-leading* -:syn-list syntax.txt /*:syn-list* -:syn-manual usr_06.txt /*:syn-manual* -:syn-match syntax.txt /*:syn-match* -:syn-matchgroup syntax.txt /*:syn-matchgroup* -:syn-multi-line syntax.txt /*:syn-multi-line* -:syn-nextgroup syntax.txt /*:syn-nextgroup* -:syn-off usr_06.txt /*:syn-off* -:syn-on syntax.txt /*:syn-on* -:syn-oneline syntax.txt /*:syn-oneline* -:syn-pattern syntax.txt /*:syn-pattern* -:syn-pattern-offset syntax.txt /*:syn-pattern-offset* -:syn-priority syntax.txt /*:syn-priority* -:syn-qstart syntax.txt /*:syn-qstart* -:syn-region syntax.txt /*:syn-region* -:syn-reset syntax.txt /*:syn-reset* -:syn-skip syntax.txt /*:syn-skip* -:syn-skipempty syntax.txt /*:syn-skipempty* -:syn-skipnl syntax.txt /*:syn-skipnl* -:syn-skipwhite syntax.txt /*:syn-skipwhite* -:syn-spell syntax.txt /*:syn-spell* -:syn-start syntax.txt /*:syn-start* -:syn-sync syntax.txt /*:syn-sync* -:syn-sync-ccomment syntax.txt /*:syn-sync-ccomment* -:syn-sync-first syntax.txt /*:syn-sync-first* -:syn-sync-fourth syntax.txt /*:syn-sync-fourth* -:syn-sync-linebreaks syntax.txt /*:syn-sync-linebreaks* -:syn-sync-maxlines syntax.txt /*:syn-sync-maxlines* -:syn-sync-minlines syntax.txt /*:syn-sync-minlines* -:syn-sync-second syntax.txt /*:syn-sync-second* -:syn-sync-third syntax.txt /*:syn-sync-third* -:syn-transparent syntax.txt /*:syn-transparent* -:sync scroll.txt /*:sync* -:syncbind scroll.txt /*:syncbind* -:syntax syntax.txt /*:syntax* -:syntax-enable syntax.txt /*:syntax-enable* -:syntax-on syntax.txt /*:syntax-on* -:syntax-reset syntax.txt /*:syntax-reset* -:t change.txt /*:t* -:tN tagsrch.txt /*:tN* -:tNext tagsrch.txt /*:tNext* -:ta tagsrch.txt /*:ta* -:tab tabpage.txt /*:tab* -:tabN tabpage.txt /*:tabN* -:tabNext tabpage.txt /*:tabNext* -:tabc tabpage.txt /*:tabc* -:tabclose tabpage.txt /*:tabclose* -:tabd tabpage.txt /*:tabd* -:tabdo tabpage.txt /*:tabdo* -:tabe tabpage.txt /*:tabe* -:tabedit tabpage.txt /*:tabedit* -:tabf tabpage.txt /*:tabf* -:tabfind tabpage.txt /*:tabfind* -:tabfir tabpage.txt /*:tabfir* -:tabfirst tabpage.txt /*:tabfirst* -:tabl tabpage.txt /*:tabl* -:tablast tabpage.txt /*:tablast* -:tabm tabpage.txt /*:tabm* -:tabmove tabpage.txt /*:tabmove* -:tabn tabpage.txt /*:tabn* -:tabnew tabpage.txt /*:tabnew* -:tabnext tabpage.txt /*:tabnext* -:tabo tabpage.txt /*:tabo* -:tabonly tabpage.txt /*:tabonly* -:tabp tabpage.txt /*:tabp* -:tabprevious tabpage.txt /*:tabprevious* -:tabr tabpage.txt /*:tabr* -:tabrewind tabpage.txt /*:tabrewind* -:tabs tabpage.txt /*:tabs* -:tag tagsrch.txt /*:tag* -:tags tagsrch.txt /*:tags* -:tc if_tcl.txt /*:tc* -:tcl if_tcl.txt /*:tcl* -:tcld if_tcl.txt /*:tcld* -:tcldo if_tcl.txt /*:tcldo* -:tclf if_tcl.txt /*:tclf* -:tclfile if_tcl.txt /*:tclfile* -:te gui_w32.txt /*:te* -:tearoff gui_w32.txt /*:tearoff* -:tf tagsrch.txt /*:tf* -:tfirst tagsrch.txt /*:tfirst* -:th eval.txt /*:th* -:throw eval.txt /*:throw* -:tj tagsrch.txt /*:tj* -:tjump tagsrch.txt /*:tjump* -:tl tagsrch.txt /*:tl* -:tlast tagsrch.txt /*:tlast* -:tm gui.txt /*:tm* -:tmenu gui.txt /*:tmenu* -:tn tagsrch.txt /*:tn* -:tnext tagsrch.txt /*:tnext* -:topleft windows.txt /*:topleft* -:tp tagsrch.txt /*:tp* -:tprevious tagsrch.txt /*:tprevious* -:tr tagsrch.txt /*:tr* -:trewind tagsrch.txt /*:trewind* -:try eval.txt /*:try* -:ts tagsrch.txt /*:ts* -:tselect tagsrch.txt /*:tselect* -:tu gui.txt /*:tu* -:tunmenu gui.txt /*:tunmenu* -:u undo.txt /*:u* -:un undo.txt /*:un* -:una map.txt /*:una* -:unabbreviate map.txt /*:unabbreviate* -:undo undo.txt /*:undo* -:undoj undo.txt /*:undoj* -:undojoin undo.txt /*:undojoin* -:undol undo.txt /*:undol* -:undolist undo.txt /*:undolist* -:unh windows.txt /*:unh* -:unhide windows.txt /*:unhide* -:unl eval.txt /*:unl* -:unlet eval.txt /*:unlet* -:unlo eval.txt /*:unlo* -:unlockvar eval.txt /*:unlockvar* -:unm map.txt /*:unm* -:unm! map.txt /*:unm!* -:unmap map.txt /*:unmap* -:unmap! map.txt /*:unmap!* -:unme gui.txt /*:unme* -:unmenu gui.txt /*:unmenu* -:unmenu-all gui.txt /*:unmenu-all* -:uns various.txt /*:uns* -:unsilent various.txt /*:unsilent* -:up editing.txt /*:up* -:update editing.txt /*:update* -:v repeat.txt /*:v* -:ve various.txt /*:ve* -:verb various.txt /*:verb* -:verbose various.txt /*:verbose* -:verbose-cmd various.txt /*:verbose-cmd* -:version various.txt /*:version* -:vert windows.txt /*:vert* -:vertical windows.txt /*:vertical* -:vertical-resize windows.txt /*:vertical-resize* -:vglobal repeat.txt /*:vglobal* -:vi editing.txt /*:vi* -:vie editing.txt /*:vie* -:view editing.txt /*:view* -:vim quickfix.txt /*:vim* -:vimgrep quickfix.txt /*:vimgrep* -:vimgrepa quickfix.txt /*:vimgrepa* -:vimgrepadd quickfix.txt /*:vimgrepadd* -:visual editing.txt /*:visual* -:visual_example visual.txt /*:visual_example* -:viu helphelp.txt /*:viu* -:viusage helphelp.txt /*:viusage* -:vm map.txt /*:vm* -:vmap map.txt /*:vmap* -:vmap_l map.txt /*:vmap_l* -:vmapc map.txt /*:vmapc* -:vmapclear map.txt /*:vmapclear* -:vme gui.txt /*:vme* -:vmenu gui.txt /*:vmenu* -:vn map.txt /*:vn* -:vne windows.txt /*:vne* -:vnew windows.txt /*:vnew* -:vnoremap map.txt /*:vnoremap* -:vnoreme gui.txt /*:vnoreme* -:vnoremenu gui.txt /*:vnoremenu* -:vs windows.txt /*:vs* -:vsplit windows.txt /*:vsplit* -:vu map.txt /*:vu* -:vunmap map.txt /*:vunmap* -:vunme gui.txt /*:vunme* -:vunmenu gui.txt /*:vunmenu* -:w editing.txt /*:w* -:w! editing.txt /*:w!* -:wN editing.txt /*:wN* -:wNext editing.txt /*:wNext* -:w_a editing.txt /*:w_a* -:w_c editing.txt /*:w_c* -:w_f editing.txt /*:w_f* -:wa editing.txt /*:wa* -:wall editing.txt /*:wall* -:wh eval.txt /*:wh* -:while eval.txt /*:while* -:win gui.txt /*:win* -:winc windows.txt /*:winc* -:wincmd windows.txt /*:wincmd* -:windo windows.txt /*:windo* -:winp gui.txt /*:winp* -:winpos gui.txt /*:winpos* -:winsize gui.txt /*:winsize* -:wn editing.txt /*:wn* -:wnext editing.txt /*:wnext* -:wp editing.txt /*:wp* -:wprevious editing.txt /*:wprevious* -:wq editing.txt /*:wq* -:wqa editing.txt /*:wqa* -:wqall editing.txt /*:wqall* -:write editing.txt /*:write* -:write_a editing.txt /*:write_a* -:write_c editing.txt /*:write_c* -:write_f editing.txt /*:write_f* -:ws workshop.txt /*:ws* -:wsverb workshop.txt /*:wsverb* -:wundo undo.txt /*:wundo* -:wv starting.txt /*:wv* -:wviminfo starting.txt /*:wviminfo* -:x editing.txt /*:x* -:xa editing.txt /*:xa* -:xall editing.txt /*:xall* -:xit editing.txt /*:xit* -:xm map.txt /*:xm* -:xmap map.txt /*:xmap* -:xmap_l map.txt /*:xmap_l* -:xmapc map.txt /*:xmapc* -:xmapclear map.txt /*:xmapclear* -:xme gui.txt /*:xme* -:xmenu gui.txt /*:xmenu* -:xn map.txt /*:xn* -:xnoremap map.txt /*:xnoremap* -:xnoreme gui.txt /*:xnoreme* -:xnoremenu gui.txt /*:xnoremenu* -:xu map.txt /*:xu* -:xunmap map.txt /*:xunmap* -:xunme gui.txt /*:xunme* -:xunmenu gui.txt /*:xunmenu* -:y change.txt /*:y* -:yank change.txt /*:yank* -:z various.txt /*:z* -:z# various.txt /*:z#* -:~ change.txt /*:~* -; motion.txt /*;* -< change.txt /*<* -<2-LeftMouse> term.txt /*<2-LeftMouse>* -<3-LeftMouse> term.txt /*<3-LeftMouse>* -<4-LeftMouse> term.txt /*<4-LeftMouse>* -<< change.txt /*<<* -<> intro.txt /*<>* -<A- intro.txt /*<A-* -<A-LeftMouse> term.txt /*<A-LeftMouse>* -<A-RightMouse> term.txt /*<A-RightMouse>* -<BS> motion.txt /*<BS>* -<Bar> intro.txt /*<Bar>* -<Bslash> intro.txt /*<Bslash>* -<C- intro.txt /*<C-* -<C-Del> os_dos.txt /*<C-Del>* -<C-End> motion.txt /*<C-End>* -<C-Home> motion.txt /*<C-Home>* -<C-Insert> os_dos.txt /*<C-Insert>* -<C-Left> motion.txt /*<C-Left>* -<C-LeftMouse> tagsrch.txt /*<C-LeftMouse>* -<C-PageDown> tabpage.txt /*<C-PageDown>* -<C-PageUp> tabpage.txt /*<C-PageUp>* -<C-Right> motion.txt /*<C-Right>* -<C-RightMouse> tagsrch.txt /*<C-RightMouse>* -<C-ScrollWheelDown> scroll.txt /*<C-ScrollWheelDown>* -<C-ScrollWheelLeft> scroll.txt /*<C-ScrollWheelLeft>* -<C-ScrollWheelRight> scroll.txt /*<C-ScrollWheelRight>* -<C-ScrollWheelUp> scroll.txt /*<C-ScrollWheelUp>* -<CR> motion.txt /*<CR>* -<CSI> intro.txt /*<CSI>* -<Char-> map.txt /*<Char->* -<Char> map.txt /*<Char>* -<D- intro.txt /*<D-* -<Del> change.txt /*<Del>* -<Down> motion.txt /*<Down>* -<Drop> change.txt /*<Drop>* -<EOL> intro.txt /*<EOL>* -<End> motion.txt /*<End>* -<Enter> intro.txt /*<Enter>* -<Esc> intro.txt /*<Esc>* -<F10> term.txt /*<F10>* -<F11> term.txt /*<F11>* -<F12> term.txt /*<F12>* -<F13> term.txt /*<F13>* -<F14> term.txt /*<F14>* -<F15> term.txt /*<F15>* -<F16> term.txt /*<F16>* -<F17> term.txt /*<F17>* -<F18> term.txt /*<F18>* -<F19> term.txt /*<F19>* -<F1> helphelp.txt /*<F1>* -<F2> term.txt /*<F2>* -<F3> term.txt /*<F3>* -<F4> term.txt /*<F4>* -<F5> term.txt /*<F5>* -<F6> term.txt /*<F6>* -<F7> term.txt /*<F7>* -<F8> term.txt /*<F8>* -<F9> term.txt /*<F9>* -<Help> helphelp.txt /*<Help>* -<Home> motion.txt /*<Home>* -<Insert> insert.txt /*<Insert>* -<Leader> map.txt /*<Leader>* -<Left> motion.txt /*<Left>* -<LeftDrag> term.txt /*<LeftDrag>* -<LeftMouse> visual.txt /*<LeftMouse>* -<LeftRelease> visual.txt /*<LeftRelease>* -<LocalLeader> map.txt /*<LocalLeader>* -<M- intro.txt /*<M-* -<MiddleDrag> term.txt /*<MiddleDrag>* -<MiddleMouse> change.txt /*<MiddleMouse>* -<MiddleRelease> term.txt /*<MiddleRelease>* -<Mouse> term.txt /*<Mouse>* -<MouseDown> scroll.txt /*<MouseDown>* -<MouseUp> scroll.txt /*<MouseUp>* -<NL> motion.txt /*<NL>* -<Nop> map.txt /*<Nop>* -<Nul> intro.txt /*<Nul>* -<PageDown> scroll.txt /*<PageDown>* -<PageUp> scroll.txt /*<PageUp>* -<Plug> map.txt /*<Plug>* -<Return> intro.txt /*<Return>* -<Right> motion.txt /*<Right>* -<RightDrag> term.txt /*<RightDrag>* -<RightMouse> visual.txt /*<RightMouse>* -<RightRelease> term.txt /*<RightRelease>* -<S- intro.txt /*<S-* -<S-Del> os_dos.txt /*<S-Del>* -<S-Down> scroll.txt /*<S-Down>* -<S-End> term.txt /*<S-End>* -<S-F10> term.txt /*<S-F10>* -<S-F11> term.txt /*<S-F11>* -<S-F12> term.txt /*<S-F12>* -<S-F1> intro.txt /*<S-F1>* -<S-F2> term.txt /*<S-F2>* -<S-F3> term.txt /*<S-F3>* -<S-F4> term.txt /*<S-F4>* -<S-F5> term.txt /*<S-F5>* -<S-F6> term.txt /*<S-F6>* -<S-F7> term.txt /*<S-F7>* -<S-F8> term.txt /*<S-F8>* -<S-F9> term.txt /*<S-F9>* -<S-Home> term.txt /*<S-Home>* -<S-Insert> os_dos.txt /*<S-Insert>* -<S-Left> motion.txt /*<S-Left>* -<S-LeftMouse> term.txt /*<S-LeftMouse>* -<S-Right> motion.txt /*<S-Right>* -<S-RightMouse> term.txt /*<S-RightMouse>* -<S-ScrollWheelDown> scroll.txt /*<S-ScrollWheelDown>* -<S-ScrollWheelLeft> scroll.txt /*<S-ScrollWheelLeft>* -<S-ScrollWheelRight> scroll.txt /*<S-ScrollWheelRight>* -<S-ScrollWheelUp> scroll.txt /*<S-ScrollWheelUp>* -<S-Tab> term.txt /*<S-Tab>* -<S-Up> scroll.txt /*<S-Up>* -<S-xF1> term.txt /*<S-xF1>* -<S-xF2> term.txt /*<S-xF2>* -<S-xF3> term.txt /*<S-xF3>* -<S-xF4> term.txt /*<S-xF4>* -<SID> map.txt /*<SID>* -<SNR> map.txt /*<SNR>* -<ScrollWheelDown> scroll.txt /*<ScrollWheelDown>* -<ScrollWheelLeft> scroll.txt /*<ScrollWheelLeft>* -<ScrollWheelRight> scroll.txt /*<ScrollWheelRight>* -<ScrollWheelUp> scroll.txt /*<ScrollWheelUp>* -<Space> motion.txt /*<Space>* -<Tab> motion.txt /*<Tab>* -<Undo> undo.txt /*<Undo>* -<Up> motion.txt /*<Up>* -<abuf> cmdline.txt /*<abuf>* -<afile> cmdline.txt /*<afile>* -<amatch> cmdline.txt /*<amatch>* -<args> map.txt /*<args>* -<bang> map.txt /*<bang>* -<buffer=N> autocmd.txt /*<buffer=N>* -<buffer=abuf> autocmd.txt /*<buffer=abuf>* -<cfile> cmdline.txt /*<cfile>* -<character> intro.txt /*<character>* -<count> map.txt /*<count>* -<f-args> map.txt /*<f-args>* -<k0> term.txt /*<k0>* -<k1> term.txt /*<k1>* -<k2> term.txt /*<k2>* -<k3> term.txt /*<k3>* -<k4> term.txt /*<k4>* -<k5> term.txt /*<k5>* -<k6> term.txt /*<k6>* -<k7> term.txt /*<k7>* -<k8> term.txt /*<k8>* -<k9> term.txt /*<k9>* -<kDivide> term.txt /*<kDivide>* -<kEnd> motion.txt /*<kEnd>* -<kEnter> term.txt /*<kEnter>* -<kHome> motion.txt /*<kHome>* -<kMinus> term.txt /*<kMinus>* -<kMultiply> term.txt /*<kMultiply>* -<kPageDown> scroll.txt /*<kPageDown>* -<kPageUp> scroll.txt /*<kPageUp>* -<kPlus> term.txt /*<kPlus>* -<kPoint> term.txt /*<kPoint>* -<line1> map.txt /*<line1>* -<line2> map.txt /*<line2>* -<lt> intro.txt /*<lt>* -<q-args> map.txt /*<q-args>* -<reg> map.txt /*<reg>* -<register> map.txt /*<register>* -<sfile> cmdline.txt /*<sfile>* -<xCSI> intro.txt /*<xCSI>* -<xDown> term.txt /*<xDown>* -<xEnd> term.txt /*<xEnd>* -<xEnd>-xterm term.txt /*<xEnd>-xterm* -<xF1> term.txt /*<xF1>* -<xF1>-xterm term.txt /*<xF1>-xterm* -<xF2> term.txt /*<xF2>* -<xF2>-xterm term.txt /*<xF2>-xterm* -<xF3> term.txt /*<xF3>* -<xF3>-xterm term.txt /*<xF3>-xterm* -<xF4> term.txt /*<xF4>* -<xF4>-xterm term.txt /*<xF4>-xterm* -<xHome> term.txt /*<xHome>* -<xHome>-xterm term.txt /*<xHome>-xterm* -<xLeft> term.txt /*<xLeft>* -<xRight> term.txt /*<xRight>* -<xUp> term.txt /*<xUp>* -= change.txt /*=* -== change.txt /*==* -> change.txt /*>* ->> change.txt /*>>* ->cont repeat.txt /*>cont* ->finish repeat.txt /*>finish* ->interrupt repeat.txt /*>interrupt* ->next repeat.txt /*>next* ->quit repeat.txt /*>quit* ->step repeat.txt /*>step* -? pattern.txt /*?* -?<CR> pattern.txt /*?<CR>* -@ repeat.txt /*@* -@/ change.txt /*@\/* -@: repeat.txt /*@:* -@= change.txt /*@=* -@@ repeat.txt /*@@* -@r eval.txt /*@r* -A insert.txt /*A* -ACL editing.txt /*ACL* -ATTENTION usr_11.txt /*ATTENTION* -Abbreviations map.txt /*Abbreviations* -Aleph options.txt /*Aleph* -Amiga os_amiga.txt /*Amiga* -Arabic arabic.txt /*Arabic* -Atari os_mint.txt /*Atari* -Athena gui_x11.txt /*Athena* -B motion.txt /*B* -BeBox os_beos.txt /*BeBox* -BeOS os_beos.txt /*BeOS* -Bram intro.txt /*Bram* -BufAdd autocmd.txt /*BufAdd* -BufCreate autocmd.txt /*BufCreate* -BufDelete autocmd.txt /*BufDelete* -BufEnter autocmd.txt /*BufEnter* -BufFilePost autocmd.txt /*BufFilePost* -BufFilePre autocmd.txt /*BufFilePre* -BufHidden autocmd.txt /*BufHidden* -BufLeave autocmd.txt /*BufLeave* -BufNew autocmd.txt /*BufNew* -BufNewFile autocmd.txt /*BufNewFile* -BufRead autocmd.txt /*BufRead* -BufReadCmd autocmd.txt /*BufReadCmd* -BufReadPost autocmd.txt /*BufReadPost* -BufReadPre autocmd.txt /*BufReadPre* -BufUnload autocmd.txt /*BufUnload* -BufWinEnter autocmd.txt /*BufWinEnter* -BufWinLeave autocmd.txt /*BufWinLeave* -BufWipeout autocmd.txt /*BufWipeout* -BufWrite autocmd.txt /*BufWrite* -BufWriteCmd autocmd.txt /*BufWriteCmd* -BufWritePost autocmd.txt /*BufWritePost* -BufWritePre autocmd.txt /*BufWritePre* -C change.txt /*C* -C-editing tips.txt /*C-editing* -C-indenting indent.txt /*C-indenting* -COMSPEC starting.txt /*COMSPEC* -CR-used-for-NL pattern.txt /*CR-used-for-NL* -CTRL-6 editing.txt /*CTRL-6* -CTRL-<PageDown> tabpage.txt /*CTRL-<PageDown>* -CTRL-<PageUp> tabpage.txt /*CTRL-<PageUp>* -CTRL-A change.txt /*CTRL-A* -CTRL-B scroll.txt /*CTRL-B* -CTRL-C pattern.txt /*CTRL-C* -CTRL-D scroll.txt /*CTRL-D* -CTRL-E scroll.txt /*CTRL-E* -CTRL-F scroll.txt /*CTRL-F* -CTRL-G editing.txt /*CTRL-G* -CTRL-H motion.txt /*CTRL-H* -CTRL-I motion.txt /*CTRL-I* -CTRL-J motion.txt /*CTRL-J* -CTRL-L various.txt /*CTRL-L* -CTRL-M motion.txt /*CTRL-M* -CTRL-N motion.txt /*CTRL-N* -CTRL-O motion.txt /*CTRL-O* -CTRL-P motion.txt /*CTRL-P* -CTRL-Q gui_w32.txt /*CTRL-Q* -CTRL-R undo.txt /*CTRL-R* -CTRL-T tagsrch.txt /*CTRL-T* -CTRL-U scroll.txt /*CTRL-U* -CTRL-U-changed version6.txt /*CTRL-U-changed* -CTRL-V visual.txt /*CTRL-V* -CTRL-V-alternative gui_w32.txt /*CTRL-V-alternative* -CTRL-W index.txt /*CTRL-W* -CTRL-W_+ windows.txt /*CTRL-W_+* -CTRL-W_- windows.txt /*CTRL-W_-* -CTRL-W_< windows.txt /*CTRL-W_<* -CTRL-W_<BS> windows.txt /*CTRL-W_<BS>* -CTRL-W_<CR> quickfix.txt /*CTRL-W_<CR>* -CTRL-W_<Down> windows.txt /*CTRL-W_<Down>* -CTRL-W_<Enter> quickfix.txt /*CTRL-W_<Enter>* -CTRL-W_<Left> windows.txt /*CTRL-W_<Left>* -CTRL-W_<Right> windows.txt /*CTRL-W_<Right>* -CTRL-W_<Up> windows.txt /*CTRL-W_<Up>* -CTRL-W_= windows.txt /*CTRL-W_=* -CTRL-W_> windows.txt /*CTRL-W_>* -CTRL-W_CTRL-B windows.txt /*CTRL-W_CTRL-B* -CTRL-W_CTRL-C windows.txt /*CTRL-W_CTRL-C* -CTRL-W_CTRL-D tagsrch.txt /*CTRL-W_CTRL-D* -CTRL-W_CTRL-F windows.txt /*CTRL-W_CTRL-F* -CTRL-W_CTRL-H windows.txt /*CTRL-W_CTRL-H* -CTRL-W_CTRL-I tagsrch.txt /*CTRL-W_CTRL-I* -CTRL-W_CTRL-J windows.txt /*CTRL-W_CTRL-J* -CTRL-W_CTRL-K windows.txt /*CTRL-W_CTRL-K* -CTRL-W_CTRL-L windows.txt /*CTRL-W_CTRL-L* -CTRL-W_CTRL-N windows.txt /*CTRL-W_CTRL-N* -CTRL-W_CTRL-O windows.txt /*CTRL-W_CTRL-O* -CTRL-W_CTRL-P windows.txt /*CTRL-W_CTRL-P* -CTRL-W_CTRL-Q windows.txt /*CTRL-W_CTRL-Q* -CTRL-W_CTRL-R windows.txt /*CTRL-W_CTRL-R* -CTRL-W_CTRL-S windows.txt /*CTRL-W_CTRL-S* -CTRL-W_CTRL-T windows.txt /*CTRL-W_CTRL-T* -CTRL-W_CTRL-V windows.txt /*CTRL-W_CTRL-V* -CTRL-W_CTRL-W windows.txt /*CTRL-W_CTRL-W* -CTRL-W_CTRL-X windows.txt /*CTRL-W_CTRL-X* -CTRL-W_CTRL-Z windows.txt /*CTRL-W_CTRL-Z* -CTRL-W_CTRL-] windows.txt /*CTRL-W_CTRL-]* -CTRL-W_CTRL-^ windows.txt /*CTRL-W_CTRL-^* -CTRL-W_CTRL-_ windows.txt /*CTRL-W_CTRL-_* -CTRL-W_F windows.txt /*CTRL-W_F* -CTRL-W_H windows.txt /*CTRL-W_H* -CTRL-W_J windows.txt /*CTRL-W_J* -CTRL-W_K windows.txt /*CTRL-W_K* -CTRL-W_L windows.txt /*CTRL-W_L* -CTRL-W_P windows.txt /*CTRL-W_P* -CTRL-W_R windows.txt /*CTRL-W_R* -CTRL-W_S windows.txt /*CTRL-W_S* -CTRL-W_T windows.txt /*CTRL-W_T* -CTRL-W_W windows.txt /*CTRL-W_W* -CTRL-W_] windows.txt /*CTRL-W_]* -CTRL-W_^ windows.txt /*CTRL-W_^* -CTRL-W__ windows.txt /*CTRL-W__* -CTRL-W_b windows.txt /*CTRL-W_b* -CTRL-W_bar windows.txt /*CTRL-W_bar* -CTRL-W_c windows.txt /*CTRL-W_c* -CTRL-W_d tagsrch.txt /*CTRL-W_d* -CTRL-W_f windows.txt /*CTRL-W_f* -CTRL-W_gF windows.txt /*CTRL-W_gF* -CTRL-W_g] windows.txt /*CTRL-W_g]* -CTRL-W_g_CTRL-] windows.txt /*CTRL-W_g_CTRL-]* -CTRL-W_gf windows.txt /*CTRL-W_gf* -CTRL-W_g} windows.txt /*CTRL-W_g}* -CTRL-W_h windows.txt /*CTRL-W_h* -CTRL-W_i tagsrch.txt /*CTRL-W_i* -CTRL-W_j windows.txt /*CTRL-W_j* -CTRL-W_k windows.txt /*CTRL-W_k* -CTRL-W_l windows.txt /*CTRL-W_l* -CTRL-W_n windows.txt /*CTRL-W_n* -CTRL-W_o windows.txt /*CTRL-W_o* -CTRL-W_p windows.txt /*CTRL-W_p* -CTRL-W_q windows.txt /*CTRL-W_q* -CTRL-W_r windows.txt /*CTRL-W_r* -CTRL-W_s windows.txt /*CTRL-W_s* -CTRL-W_t windows.txt /*CTRL-W_t* -CTRL-W_v windows.txt /*CTRL-W_v* -CTRL-W_w windows.txt /*CTRL-W_w* -CTRL-W_x windows.txt /*CTRL-W_x* -CTRL-W_z windows.txt /*CTRL-W_z* -CTRL-W_} windows.txt /*CTRL-W_}* -CTRL-X change.txt /*CTRL-X* -CTRL-Y scroll.txt /*CTRL-Y* -CTRL-Z starting.txt /*CTRL-Z* -CTRL-\_CTRL-G intro.txt /*CTRL-\\_CTRL-G* -CTRL-\_CTRL-N intro.txt /*CTRL-\\_CTRL-N* -CTRL-] tagsrch.txt /*CTRL-]* -CTRL-^ editing.txt /*CTRL-^* -CTRL-{char} intro.txt /*CTRL-{char}* -Chinese mbyte.txt /*Chinese* -Cmd-event autocmd.txt /*Cmd-event* -Cmdline cmdline.txt /*Cmdline* -Cmdline-mode cmdline.txt /*Cmdline-mode* -CmdwinEnter autocmd.txt /*CmdwinEnter* -CmdwinLeave autocmd.txt /*CmdwinLeave* -ColorScheme autocmd.txt /*ColorScheme* -Command-line cmdline.txt /*Command-line* -Command-line-mode cmdline.txt /*Command-line-mode* -Contents quickref.txt /*Contents* -Cscope if_cscop.txt /*Cscope* -CursorHold autocmd.txt /*CursorHold* -CursorHold-example windows.txt /*CursorHold-example* -CursorHoldI autocmd.txt /*CursorHoldI* -CursorIM mbyte.txt /*CursorIM* -CursorMoved autocmd.txt /*CursorMoved* -CursorMovedI autocmd.txt /*CursorMovedI* -D change.txt /*D* -DOS os_dos.txt /*DOS* -DOS-format editing.txt /*DOS-format* -DOS-format-write editing.txt /*DOS-format-write* -DPMI os_msdos.txt /*DPMI* -Dictionaries eval.txt /*Dictionaries* -Dictionary eval.txt /*Dictionary* -Dictionary-function eval.txt /*Dictionary-function* -Digraphs digraph.txt /*Digraphs* -E motion.txt /*E* -E10 message.txt /*E10* -E100 diff.txt /*E100* -E101 diff.txt /*E101* -E102 diff.txt /*E102* -E103 diff.txt /*E103* -E104 digraph.txt /*E104* -E105 mbyte.txt /*E105* -E106 eval.txt /*E106* -E107 eval.txt /*E107* -E108 eval.txt /*E108* -E109 eval.txt /*E109* -E11 cmdline.txt /*E11* -E110 eval.txt /*E110* -E111 eval.txt /*E111* -E112 eval.txt /*E112* -E113 eval.txt /*E113* -E114 eval.txt /*E114* -E115 eval.txt /*E115* -E116 eval.txt /*E116* -E117 eval.txt /*E117* -E118 eval.txt /*E118* -E119 eval.txt /*E119* -E12 message.txt /*E12* -E120 eval.txt /*E120* -E121 eval.txt /*E121* -E122 eval.txt /*E122* -E123 eval.txt /*E123* -E124 eval.txt /*E124* -E125 eval.txt /*E125* -E126 eval.txt /*E126* -E127 eval.txt /*E127* -E128 eval.txt /*E128* -E129 eval.txt /*E129* -E13 message.txt /*E13* -E130 eval.txt /*E130* -E131 eval.txt /*E131* -E132 eval.txt /*E132* -E133 eval.txt /*E133* -E134 change.txt /*E134* -E135 autocmd.txt /*E135* -E136 starting.txt /*E136* -E137 starting.txt /*E137* -E138 starting.txt /*E138* -E139 message.txt /*E139* -E14 cmdline.txt /*E14* -E140 message.txt /*E140* -E141 message.txt /*E141* -E142 message.txt /*E142* -E143 autocmd.txt /*E143* -E144 various.txt /*E144* -E145 starting.txt /*E145* -E146 change.txt /*E146* -E147 repeat.txt /*E147* -E148 repeat.txt /*E148* -E149 helphelp.txt /*E149* -E15 eval.txt /*E15* -E150 helphelp.txt /*E150* -E151 helphelp.txt /*E151* -E152 helphelp.txt /*E152* -E153 helphelp.txt /*E153* -E154 helphelp.txt /*E154* -E155 sign.txt /*E155* -E156 sign.txt /*E156* -E157 sign.txt /*E157* -E158 sign.txt /*E158* -E159 sign.txt /*E159* -E16 cmdline.txt /*E16* -E160 sign.txt /*E160* -E161 repeat.txt /*E161* -E162 message.txt /*E162* -E163 editing.txt /*E163* -E164 editing.txt /*E164* -E165 editing.txt /*E165* -E166 message.txt /*E166* -E167 repeat.txt /*E167* -E168 repeat.txt /*E168* -E169 message.txt /*E169* -E17 message.txt /*E17* -E170 eval.txt /*E170* -E171 eval.txt /*E171* -E172 message.txt /*E172* -E173 message.txt /*E173* -E174 map.txt /*E174* -E175 map.txt /*E175* -E176 map.txt /*E176* -E177 map.txt /*E177* -E178 map.txt /*E178* -E179 map.txt /*E179* -E18 eval.txt /*E18* -E180 map.txt /*E180* -E181 map.txt /*E181* -E182 map.txt /*E182* -E183 map.txt /*E183* -E184 map.txt /*E184* -E185 syntax.txt /*E185* -E186 editing.txt /*E186* -E187 editing.txt /*E187* -E188 gui.txt /*E188* -E189 message.txt /*E189* -E19 message.txt /*E19* -E190 message.txt /*E190* -E191 motion.txt /*E191* -E192 message.txt /*E192* -E193 eval.txt /*E193* -E194 message.txt /*E194* -E195 starting.txt /*E195* -E196 various.txt /*E196* -E197 mlang.txt /*E197* -E198 options.txt /*E198* -E199 cmdline.txt /*E199* -E20 motion.txt /*E20* -E200 autocmd.txt /*E200* -E201 autocmd.txt /*E201* -E202 options.txt /*E202* -E203 autocmd.txt /*E203* -E204 autocmd.txt /*E204* -E205 if_pyth.txt /*E205* -E206 options.txt /*E206* -E207 editing.txt /*E207* -E208 message.txt /*E208* -E209 message.txt /*E209* -E21 options.txt /*E21* -E210 message.txt /*E210* -E211 message.txt /*E211* -E212 message.txt /*E212* -E213 options.txt /*E213* -E214 options.txt /*E214* -E215 autocmd.txt /*E215* -E216 autocmd.txt /*E216* -E217 autocmd.txt /*E217* -E218 autocmd.txt /*E218* -E219 message.txt /*E219* -E22 message.txt /*E22* -E220 message.txt /*E220* -E222 message.txt /*E222* -E223 options.txt /*E223* -E224 map.txt /*E224* -E225 map.txt /*E225* -E226 map.txt /*E226* -E227 map.txt /*E227* -E228 message.txt /*E228* -E229 gui.txt /*E229* -E23 message.txt /*E23* -E230 starting.txt /*E230* -E231 options.txt /*E231* -E232 message.txt /*E232* -E233 gui.txt /*E233* -E234 options.txt /*E234* -E235 options.txt /*E235* -E236 options.txt /*E236* -E237 print.txt /*E237* -E238 print.txt /*E238* -E239 sign.txt /*E239* -E24 message.txt /*E24* -E240 remote.txt /*E240* -E241 eval.txt /*E241* -E243 if_ole.txt /*E243* -E244 options.txt /*E244* -E245 options.txt /*E245* -E246 autocmd.txt /*E246* -E247 remote.txt /*E247* -E248 remote.txt /*E248* -E25 message.txt /*E25* -E250 options.txt /*E250* -E251 remote.txt /*E251* -E252 options.txt /*E252* -E253 mbyte.txt /*E253* -E254 message.txt /*E254* -E255 sign.txt /*E255* -E256 message.txt /*E256* -E257 if_cscop.txt /*E257* -E258 remote.txt /*E258* -E259 if_cscop.txt /*E259* -E26 rileft.txt /*E26* -E260 if_cscop.txt /*E260* -E261 if_cscop.txt /*E261* -E262 if_cscop.txt /*E262* -E263 if_pyth.txt /*E263* -E264 if_pyth.txt /*E264* -E265 if_ruby.txt /*E265* -E266 if_ruby.txt /*E266* -E267 if_ruby.txt /*E267* -E268 if_ruby.txt /*E268* -E269 if_ruby.txt /*E269* -E27 farsi.txt /*E27* -E270 if_ruby.txt /*E270* -E271 if_ruby.txt /*E271* -E272 if_ruby.txt /*E272* -E273 if_ruby.txt /*E273* -E274 if_sniff.txt /*E274* -E275 if_sniff.txt /*E275* -E276 if_sniff.txt /*E276* -E277 remote.txt /*E277* -E278 if_sniff.txt /*E278* -E279 if_sniff.txt /*E279* -E28 syntax.txt /*E28* -E280 if_tcl.txt /*E280* -E281 if_tcl.txt /*E281* -E282 starting.txt /*E282* -E283 motion.txt /*E283* -E284 mbyte.txt /*E284* -E285 mbyte.txt /*E285* -E286 mbyte.txt /*E286* -E287 mbyte.txt /*E287* -E288 mbyte.txt /*E288* -E289 mbyte.txt /*E289* -E29 change.txt /*E29* -E290 mbyte.txt /*E290* -E291 mbyte.txt /*E291* -E292 mbyte.txt /*E292* -E293 message.txt /*E293* -E294 message.txt /*E294* -E295 message.txt /*E295* -E296 message.txt /*E296* -E297 message.txt /*E297* -E298 message.txt /*E298* -E299 if_perl.txt /*E299* -E30 change.txt /*E30* -E300 message.txt /*E300* -E301 message.txt /*E301* -E302 message.txt /*E302* -E303 message.txt /*E303* -E304 message.txt /*E304* -E305 recover.txt /*E305* -E306 recover.txt /*E306* -E307 recover.txt /*E307* -E308 recover.txt /*E308* -E309 recover.txt /*E309* -E31 message.txt /*E31* -E310 recover.txt /*E310* -E311 recover.txt /*E311* -E312 recover.txt /*E312* -E313 recover.txt /*E313* -E314 recover.txt /*E314* -E315 message.txt /*E315* -E316 message.txt /*E316* -E317 message.txt /*E317* -E318 message.txt /*E318* -E319 message.txt /*E319* -E32 message.txt /*E32* -E320 message.txt /*E320* -E321 editing.txt /*E321* -E322 message.txt /*E322* -E323 message.txt /*E323* -E324 print.txt /*E324* -E325 usr_11.txt /*E325* -E326 recover.txt /*E326* -E327 gui.txt /*E327* -E328 gui.txt /*E328* -E329 gui.txt /*E329* -E33 message.txt /*E33* -E330 gui.txt /*E330* -E331 gui.txt /*E331* -E332 gui.txt /*E332* -E333 gui.txt /*E333* -E334 gui.txt /*E334* -E335 gui.txt /*E335* -E336 gui.txt /*E336* -E337 gui.txt /*E337* -E338 editing.txt /*E338* -E339 message.txt /*E339* -E34 various.txt /*E34* -E340 vi_diff.txt /*E340* -E341 message.txt /*E341* -E342 message.txt /*E342* -E343 options.txt /*E343* -E344 options.txt /*E344* -E345 options.txt /*E345* -E346 options.txt /*E346* -E347 options.txt /*E347* -E348 pattern.txt /*E348* -E349 pattern.txt /*E349* -E35 message.txt /*E35* -E350 fold.txt /*E350* -E351 fold.txt /*E351* -E352 fold.txt /*E352* -E353 change.txt /*E353* -E354 change.txt /*E354* -E355 options.txt /*E355* -E356 message.txt /*E356* -E357 options.txt /*E357* -E358 options.txt /*E358* -E359 term.txt /*E359* -E36 windows.txt /*E36* -E360 various.txt /*E360* -E362 term.txt /*E362* -E363 options.txt /*E363* -E364 eval.txt /*E364* -E365 print.txt /*E365* -E366 options.txt /*E366* -E367 autocmd.txt /*E367* -E368 eval.txt /*E368* -E369 pattern.txt /*E369* -E37 message.txt /*E37* -E370 various.txt /*E370* -E371 various.txt /*E371* -E372 quickfix.txt /*E372* -E373 quickfix.txt /*E373* -E374 quickfix.txt /*E374* -E375 quickfix.txt /*E375* -E376 quickfix.txt /*E376* -E377 quickfix.txt /*E377* -E378 quickfix.txt /*E378* -E379 quickfix.txt /*E379* -E38 message.txt /*E38* -E380 quickfix.txt /*E380* -E381 quickfix.txt /*E381* -E382 options.txt /*E382* -E383 pattern.txt /*E383* -E384 options.txt /*E384* -E385 options.txt /*E385* -E386 pattern.txt /*E386* -E387 tagsrch.txt /*E387* -E388 tagsrch.txt /*E388* -E389 tagsrch.txt /*E389* -E39 digraph.txt /*E39* -E390 syntax.txt /*E390* -E391 syntax.txt /*E391* -E392 syntax.txt /*E392* -E393 syntax.txt /*E393* -E394 syntax.txt /*E394* -E395 syntax.txt /*E395* -E397 syntax.txt /*E397* -E398 syntax.txt /*E398* -E399 syntax.txt /*E399* -E40 message.txt /*E40* -E400 syntax.txt /*E400* -E401 syntax.txt /*E401* -E402 syntax.txt /*E402* -E403 syntax.txt /*E403* -E404 syntax.txt /*E404* -E405 syntax.txt /*E405* -E406 syntax.txt /*E406* -E407 syntax.txt /*E407* -E408 syntax.txt /*E408* -E409 syntax.txt /*E409* -E41 message.txt /*E41* -E410 syntax.txt /*E410* -E411 syntax.txt /*E411* -E412 syntax.txt /*E412* -E413 syntax.txt /*E413* -E414 syntax.txt /*E414* -E415 syntax.txt /*E415* -E416 syntax.txt /*E416* -E417 syntax.txt /*E417* -E418 syntax.txt /*E418* -E419 syntax.txt /*E419* -E42 quickfix.txt /*E42* -E420 syntax.txt /*E420* -E421 syntax.txt /*E421* -E422 syntax.txt /*E422* -E423 syntax.txt /*E423* -E424 message.txt /*E424* -E425 tagsrch.txt /*E425* -E426 tagsrch.txt /*E426* -E427 tagsrch.txt /*E427* -E428 tagsrch.txt /*E428* -E429 tagsrch.txt /*E429* -E43 message.txt /*E43* -E430 tagsrch.txt /*E430* -E431 tagsrch.txt /*E431* -E432 message.txt /*E432* -E433 options.txt /*E433* -E434 tagsrch.txt /*E434* -E435 tagsrch.txt /*E435* -E436 term.txt /*E436* -E437 term.txt /*E437* -E438 message.txt /*E438* -E439 message.txt /*E439* -E44 message.txt /*E44* -E440 message.txt /*E440* -E441 windows.txt /*E441* -E442 windows.txt /*E442* -E443 windows.txt /*E443* -E444 windows.txt /*E444* -E445 windows.txt /*E445* -E446 editing.txt /*E446* -E447 editing.txt /*E447* -E448 various.txt /*E448* -E449 eval.txt /*E449* -E45 message.txt /*E45* -E450 os_msdos.txt /*E450* -E451 os_msdos.txt /*E451* -E452 os_msdos.txt /*E452* -E453 os_msdos.txt /*E453* -E454 os_msdos.txt /*E454* -E455 print.txt /*E455* -E456 print.txt /*E456* -E457 print.txt /*E457* -E458 message.txt /*E458* -E459 message.txt /*E459* -E46 message.txt /*E46* -E460 message.txt /*E460* -E461 eval.txt /*E461* -E462 editing.txt /*E462* -E463 netbeans.txt /*E463* -E464 message.txt /*E464* -E465 gui.txt /*E465* -E466 gui.txt /*E466* -E467 map.txt /*E467* -E468 map.txt /*E468* -E469 if_cscop.txt /*E469* -E47 message.txt /*E47* -E470 change.txt /*E470* -E471 message.txt /*E471* -E472 editing.txt /*E472* -E473 message.txt /*E473* -E474 message.txt /*E474* -E475 message.txt /*E475* -E476 pattern.txt /*E476* -E477 message.txt /*E477* -E478 message.txt /*E478* -E479 editing.txt /*E479* -E48 eval.txt /*E48* -E480 editing.txt /*E480* -E481 message.txt /*E481* -E482 message.txt /*E482* -E483 message.txt /*E483* -E484 message.txt /*E484* -E485 message.txt /*E485* -E486 pattern.txt /*E486* -E487 options.txt /*E487* -E488 message.txt /*E488* -E489 intro.txt /*E489* -E49 message.txt /*E49* -E490 fold.txt /*E490* -E492 message.txt /*E492* -E493 cmdline.txt /*E493* -E494 editing.txt /*E494* -E495 cmdline.txt /*E495* -E496 cmdline.txt /*E496* -E497 cmdline.txt /*E497* -E498 cmdline.txt /*E498* -E499 cmdline.txt /*E499* -E50 syntax.txt /*E50* -E500 cmdline.txt /*E500* -E501 intro.txt /*E501* -E502 editing.txt /*E502* -E503 editing.txt /*E503* -E504 editing.txt /*E504* -E505 editing.txt /*E505* -E506 editing.txt /*E506* -E507 editing.txt /*E507* -E508 editing.txt /*E508* -E509 editing.txt /*E509* -E51 pattern.txt /*E51* -E510 editing.txt /*E510* -E511 netbeans.txt /*E511* -E512 editing.txt /*E512* -E513 options.txt /*E513* -E514 editing.txt /*E514* -E515 windows.txt /*E515* -E516 windows.txt /*E516* -E517 windows.txt /*E517* -E518 options.txt /*E518* -E519 options.txt /*E519* -E52 syntax.txt /*E52* -E520 options.txt /*E520* -E521 options.txt /*E521* -E522 options.txt /*E522* -E523 options.txt /*E523* -E524 options.txt /*E524* -E525 options.txt /*E525* -E526 options.txt /*E526* -E527 options.txt /*E527* -E528 options.txt /*E528* -E529 options.txt /*E529* -E53 pattern.txt /*E53* -E530 options.txt /*E530* -E531 options.txt /*E531* -E532 netbeans.txt /*E532* -E533 options.txt /*E533* -E534 options.txt /*E534* -E535 options.txt /*E535* -E536 options.txt /*E536* -E537 options.txt /*E537* -E538 options.txt /*E538* -E539 options.txt /*E539* -E54 pattern.txt /*E54* -E540 options.txt /*E540* -E541 options.txt /*E541* -E542 options.txt /*E542* -E543 options.txt /*E543* -E544 options.txt /*E544* -E545 options.txt /*E545* -E546 options.txt /*E546* -E547 options.txt /*E547* -E548 options.txt /*E548* -E549 options.txt /*E549* -E55 pattern.txt /*E55* -E550 options.txt /*E550* -E551 options.txt /*E551* -E552 options.txt /*E552* -E553 quickfix.txt /*E553* -E554 pattern.txt /*E554* -E555 tagsrch.txt /*E555* -E556 tagsrch.txt /*E556* -E557 term.txt /*E557* -E558 term.txt /*E558* -E559 term.txt /*E559* -E56 pattern.txt /*E56* -E560 if_cscop.txt /*E560* -E561 if_cscop.txt /*E561* -E562 if_cscop.txt /*E562* -E563 if_cscop.txt /*E563* -E564 if_cscop.txt /*E564* -E565 if_cscop.txt /*E565* -E566 if_cscop.txt /*E566* -E567 if_cscop.txt /*E567* -E568 if_cscop.txt /*E568* -E569 if_cscop.txt /*E569* -E57 pattern.txt /*E57* -E570 message.txt /*E570* -E571 if_tcl.txt /*E571* -E572 if_tcl.txt /*E572* -E573 remote.txt /*E573* -E574 starting.txt /*E574* -E575 starting.txt /*E575* -E576 starting.txt /*E576* -E577 starting.txt /*E577* -E578 editing.txt /*E578* -E579 eval.txt /*E579* -E58 pattern.txt /*E58* -E580 eval.txt /*E580* -E581 eval.txt /*E581* -E582 eval.txt /*E582* -E583 eval.txt /*E583* -E584 eval.txt /*E584* -E585 eval.txt /*E585* -E586 eval.txt /*E586* -E587 eval.txt /*E587* -E588 eval.txt /*E588* -E589 options.txt /*E589* -E59 pattern.txt /*E59* -E590 options.txt /*E590* -E591 options.txt /*E591* -E592 options.txt /*E592* -E593 options.txt /*E593* -E594 options.txt /*E594* -E595 options.txt /*E595* -E596 options.txt /*E596* -E597 options.txt /*E597* -E598 options.txt /*E598* -E599 options.txt /*E599* -E60 pattern.txt /*E60* -E600 eval.txt /*E600* -E601 eval.txt /*E601* -E602 eval.txt /*E602* -E603 eval.txt /*E603* -E604 eval.txt /*E604* -E605 eval.txt /*E605* -E606 eval.txt /*E606* -E607 eval.txt /*E607* -E608 eval.txt /*E608* -E609 if_cscop.txt /*E609* -E61 pattern.txt /*E61* -E610 options.txt /*E610* -E611 options.txt /*E611* -E612 sign.txt /*E612* -E613 print.txt /*E613* -E614 editing.txt /*E614* -E615 editing.txt /*E615* -E616 editing.txt /*E616* -E617 options.txt /*E617* -E618 print.txt /*E618* -E619 print.txt /*E619* -E62 pattern.txt /*E62* -E620 print.txt /*E620* -E621 print.txt /*E621* -E622 if_cscop.txt /*E622* -E623 if_cscop.txt /*E623* -E624 print.txt /*E624* -E625 if_cscop.txt /*E625* -E626 if_cscop.txt /*E626* -E627 netbeans.txt /*E627* -E628 netbeans.txt /*E628* -E629 netbeans.txt /*E629* -E63 pattern.txt /*E63* -E630 netbeans.txt /*E630* -E631 netbeans.txt /*E631* -E632 netbeans.txt /*E632* -E633 netbeans.txt /*E633* -E634 netbeans.txt /*E634* -E635 netbeans.txt /*E635* -E636 netbeans.txt /*E636* -E637 netbeans.txt /*E637* -E638 netbeans.txt /*E638* -E639 netbeans.txt /*E639* -E64 pattern.txt /*E64* -E640 netbeans.txt /*E640* -E641 netbeans.txt /*E641* -E642 netbeans.txt /*E642* -E643 netbeans.txt /*E643* -E644 netbeans.txt /*E644* -E645 netbeans.txt /*E645* -E646 netbeans.txt /*E646* -E647 netbeans.txt /*E647* -E648 netbeans.txt /*E648* -E649 netbeans.txt /*E649* -E65 pattern.txt /*E65* -E650 netbeans.txt /*E650* -E651 netbeans.txt /*E651* -E652 netbeans.txt /*E652* -E653 netbeans.txt /*E653* -E654 netbeans.txt /*E654* -E655 eval.txt /*E655* -E656 netbeans.txt /*E656* -E657 netbeans.txt /*E657* -E658 netbeans.txt /*E658* -E659 if_pyth.txt /*E659* -E66 syntax.txt /*E66* -E660 netbeans.txt /*E660* -E661 helphelp.txt /*E661* -E662 motion.txt /*E662* -E663 motion.txt /*E663* -E664 motion.txt /*E664* -E665 gui_x11.txt /*E665* -E666 quickfix.txt /*E666* -E667 editing.txt /*E667* -E668 netbeans.txt /*E668* -E669 syntax.txt /*E669* -E67 syntax.txt /*E67* -E670 helphelp.txt /*E670* -E671 starting.txt /*E671* -E672 starting.txt /*E672* -E673 print.txt /*E673* -E674 print.txt /*E674* -E675 print.txt /*E675* -E676 options.txt /*E676* -E677 eval.txt /*E677* -E678 pattern.txt /*E678* -E679 syntax.txt /*E679* -E68 pattern.txt /*E68* -E680 autocmd.txt /*E680* -E681 quickfix.txt /*E681* -E682 quickfix.txt /*E682* -E683 quickfix.txt /*E683* -E684 eval.txt /*E684* -E685 message.txt /*E685* -E686 eval.txt /*E686* -E687 eval.txt /*E687* -E688 eval.txt /*E688* -E689 eval.txt /*E689* -E69 pattern.txt /*E69* -E690 eval.txt /*E690* -E691 eval.txt /*E691* -E692 eval.txt /*E692* -E693 eval.txt /*E693* -E694 eval.txt /*E694* -E695 eval.txt /*E695* -E696 eval.txt /*E696* -E697 eval.txt /*E697* -E698 eval.txt /*E698* -E699 eval.txt /*E699* -E70 pattern.txt /*E70* -E700 eval.txt /*E700* -E701 eval.txt /*E701* -E702 eval.txt /*E702* -E703 eval.txt /*E703* -E704 eval.txt /*E704* -E705 eval.txt /*E705* -E706 eval.txt /*E706* -E707 eval.txt /*E707* -E708 eval.txt /*E708* -E709 eval.txt /*E709* -E71 pattern.txt /*E71* -E710 eval.txt /*E710* -E711 eval.txt /*E711* -E712 eval.txt /*E712* -E713 eval.txt /*E713* -E714 eval.txt /*E714* -E715 eval.txt /*E715* -E716 eval.txt /*E716* -E717 eval.txt /*E717* -E718 eval.txt /*E718* -E719 eval.txt /*E719* -E72 message.txt /*E72* -E720 eval.txt /*E720* -E721 eval.txt /*E721* -E722 eval.txt /*E722* -E723 eval.txt /*E723* -E724 eval.txt /*E724* -E725 eval.txt /*E725* -E726 eval.txt /*E726* -E727 eval.txt /*E727* -E728 eval.txt /*E728* -E729 eval.txt /*E729* -E73 tagsrch.txt /*E73* -E730 eval.txt /*E730* -E731 eval.txt /*E731* -E732 eval.txt /*E732* -E733 eval.txt /*E733* -E734 eval.txt /*E734* -E735 eval.txt /*E735* -E736 eval.txt /*E736* -E737 eval.txt /*E737* -E738 eval.txt /*E738* -E739 eval.txt /*E739* -E74 message.txt /*E74* -E740 eval.txt /*E740* -E741 eval.txt /*E741* -E742 eval.txt /*E742* -E743 eval.txt /*E743* -E744 netbeans.txt /*E744* -E745 eval.txt /*E745* -E746 eval.txt /*E746* -E747 editing.txt /*E747* -E748 repeat.txt /*E748* -E749 various.txt /*E749* -E75 vi_diff.txt /*E75* -E750 repeat.txt /*E750* -E751 spell.txt /*E751* -E752 spell.txt /*E752* -E753 spell.txt /*E753* -E754 spell.txt /*E754* -E755 spell.txt /*E755* -E756 spell.txt /*E756* -E757 options.txt /*E757* -E758 spell.txt /*E758* -E759 spell.txt /*E759* -E76 pattern.txt /*E76* -E760 spell.txt /*E760* -E761 spell.txt /*E761* -E762 spell.txt /*E762* -E763 spell.txt /*E763* -E764 options.txt /*E764* -E765 options.txt /*E765* -E766 eval.txt /*E766* -E767 eval.txt /*E767* -E768 message.txt /*E768* -E769 pattern.txt /*E769* -E77 message.txt /*E77* -E770 spell.txt /*E770* -E771 spell.txt /*E771* -E772 spell.txt /*E772* -E773 recover.txt /*E773* -E774 map.txt /*E774* -E775 map.txt /*E775* -E776 quickfix.txt /*E776* -E777 quickfix.txt /*E777* -E778 spell.txt /*E778* -E779 spell.txt /*E779* -E78 motion.txt /*E78* -E780 spell.txt /*E780* -E781 spell.txt /*E781* -E782 spell.txt /*E782* -E783 spell.txt /*E783* -E784 tabpage.txt /*E784* -E785 eval.txt /*E785* -E786 eval.txt /*E786* -E787 diff.txt /*E787* -E788 autocmd.txt /*E788* -E789 syntax.txt /*E789* -E79 message.txt /*E79* -E790 undo.txt /*E790* -E791 mbyte.txt /*E791* -E792 gui.txt /*E792* -E793 diff.txt /*E793* -E794 eval.txt /*E794* -E795 eval.txt /*E795* -E796 editing.txt /*E796* -E797 spell.txt /*E797* -E798 eval.txt /*E798* -E799 eval.txt /*E799* -E80 message.txt /*E80* -E800 arabic.txt /*E800* -E801 eval.txt /*E801* -E802 eval.txt /*E802* -E803 eval.txt /*E803* -E804 eval.txt /*E804* -E805 eval.txt /*E805* -E806 eval.txt /*E806* -E807 eval.txt /*E807* -E808 eval.txt /*E808* -E809 cmdline.txt /*E809* -E81 map.txt /*E81* -E810 diff.txt /*E810* -E811 autocmd.txt /*E811* -E812 autocmd.txt /*E812* -E813 editing.txt /*E813* -E814 editing.txt /*E814* -E815 if_mzsch.txt /*E815* -E816 diff.txt /*E816* -E817 editing.txt /*E817* -E818 editing.txt /*E818* -E819 editing.txt /*E819* -E82 message.txt /*E82* -E820 editing.txt /*E820* -E821 options.txt /*E821* -E822 undo.txt /*E822* -E823 undo.txt /*E823* -E824 undo.txt /*E824* -E825 undo.txt /*E825* -E826 undo.txt /*E826* -E827 undo.txt /*E827* -E828 undo.txt /*E828* -E829 undo.txt /*E829* -E83 message.txt /*E83* -E830 undo.txt /*E830* -E831 editing.txt /*E831* -E832 undo.txt /*E832* -E833 editing.txt /*E833* -E834 options.txt /*E834* -E835 options.txt /*E835* -E836 if_pyth.txt /*E836* -E837 if_pyth.txt /*E837* -E84 windows.txt /*E84* -E85 options.txt /*E85* -E86 windows.txt /*E86* -E87 windows.txt /*E87* -E88 windows.txt /*E88* -E89 message.txt /*E89* -E90 message.txt /*E90* -E91 options.txt /*E91* -E92 message.txt /*E92* -E93 windows.txt /*E93* -E94 windows.txt /*E94* -E95 message.txt /*E95* -E96 diff.txt /*E96* -E97 diff.txt /*E97* -E98 diff.txt /*E98* -E99 diff.txt /*E99* -EX intro.txt /*EX* -EXINIT starting.txt /*EXINIT* -Elvis intro.txt /*Elvis* -EncodingChanged autocmd.txt /*EncodingChanged* -Eterm syntax.txt /*Eterm* -Ex intro.txt /*Ex* -Ex-mode intro.txt /*Ex-mode* -Exuberant_ctags tagsrch.txt /*Exuberant_ctags* -F motion.txt /*F* -FAQ intro.txt /*FAQ* -Farsi farsi.txt /*Farsi* -FileAppendCmd autocmd.txt /*FileAppendCmd* -FileAppendPost autocmd.txt /*FileAppendPost* -FileAppendPre autocmd.txt /*FileAppendPre* -FileChangedRO autocmd.txt /*FileChangedRO* -FileChangedShell autocmd.txt /*FileChangedShell* -FileChangedShellPost autocmd.txt /*FileChangedShellPost* -FileEncoding autocmd.txt /*FileEncoding* -FileReadCmd autocmd.txt /*FileReadCmd* -FileReadPost autocmd.txt /*FileReadPost* -FileReadPre autocmd.txt /*FileReadPre* -FileType autocmd.txt /*FileType* -FileWriteCmd autocmd.txt /*FileWriteCmd* -FileWritePost autocmd.txt /*FileWritePost* -FileWritePre autocmd.txt /*FileWritePre* -FilterReadPost autocmd.txt /*FilterReadPost* -FilterReadPre autocmd.txt /*FilterReadPre* -FilterWritePost autocmd.txt /*FilterWritePost* -FilterWritePre autocmd.txt /*FilterWritePre* -Float eval.txt /*Float* -FocusGained autocmd.txt /*FocusGained* -FocusLost autocmd.txt /*FocusLost* -Folding fold.txt /*Folding* -FuncUndefined autocmd.txt /*FuncUndefined* -Funcref eval.txt /*Funcref* -G motion.txt /*G* -GNOME gui_x11.txt /*GNOME* -GTK gui_x11.txt /*GTK* -GTK+ gui_x11.txt /*GTK+* -GUI gui.txt /*GUI* -GUI-X11 gui_x11.txt /*GUI-X11* -GUIEnter autocmd.txt /*GUIEnter* -GUIFailed autocmd.txt /*GUIFailed* -GetLatestVimScripts pi_getscript.txt /*GetLatestVimScripts* -GetLatestVimScripts-copyright pi_getscript.txt /*GetLatestVimScripts-copyright* -GetLatestVimScripts_dat pi_getscript.txt /*GetLatestVimScripts_dat* -Gnome gui_x11.txt /*Gnome* -H motion.txt /*H* -I insert.txt /*I* -ICCF uganda.txt /*ICCF* -IM-server mbyte.txt /*IM-server* -IME mbyte.txt /*IME* -Insert insert.txt /*Insert* -Insert-mode insert.txt /*Insert-mode* -InsertChange autocmd.txt /*InsertChange* -InsertEnter autocmd.txt /*InsertEnter* -InsertLeave autocmd.txt /*InsertLeave* -J change.txt /*J* -Japanese mbyte.txt /*Japanese* -K various.txt /*K* -KDE gui_x11.txt /*KDE* -KVim gui_x11.txt /*KVim* -Kibaale uganda.txt /*Kibaale* -Korean mbyte.txt /*Korean* -L motion.txt /*L* -Linux-backspace options.txt /*Linux-backspace* -List eval.txt /*List* -Lists eval.txt /*Lists* -Lua if_lua.txt /*Lua* -M motion.txt /*M* -MDI starting.txt /*MDI* -MS-DOS os_msdos.txt /*MS-DOS* -MS-Windows os_win32.txt /*MS-Windows* -MSDOS os_msdos.txt /*MSDOS* -MSVisualStudio if_ole.txt /*MSVisualStudio* -MVS os_390.txt /*MVS* -Mac os_mac.txt /*Mac* -Mac-format editing.txt /*Mac-format* -Mac-format-write editing.txt /*Mac-format-write* -Macintosh os_mac.txt /*Macintosh* -Mark motion.txt /*Mark* -MenuPopup autocmd.txt /*MenuPopup* -MiNT os_mint.txt /*MiNT* -Moolenaar intro.txt /*Moolenaar* -MorphOS os_amiga.txt /*MorphOS* -Motif gui_x11.txt /*Motif* -Myspell spell.txt /*Myspell* -MzScheme if_mzsch.txt /*MzScheme* -N pattern.txt /*N* -N% motion.txt /*N%* -N: cmdline.txt /*N:* -N<Del> various.txt /*N<Del>* -NL-used-for-Nul pattern.txt /*NL-used-for-Nul* -NetBSD-backspace options.txt /*NetBSD-backspace* -NetUserPass() pi_netrw.txt /*NetUserPass()* -Normal intro.txt /*Normal* -Normal-mode intro.txt /*Normal-mode* -Number eval.txt /*Number* -Nvi intro.txt /*Nvi* -O insert.txt /*O* -OS/2 os_os2.txt /*OS\/2* -OS2 os_os2.txt /*OS2* -OS390 os_390.txt /*OS390* -OS390-Motif os_390.txt /*OS390-Motif* -OS390-PuTTY os_390.txt /*OS390-PuTTY* -OS390-bugs os_390.txt /*OS390-bugs* -OS390-has-ebcdic os_390.txt /*OS390-has-ebcdic* -OS390-limitations os_390.txt /*OS390-limitations* -OS390-open-source os_390.txt /*OS390-open-source* -OffTheSpot mbyte.txt /*OffTheSpot* -OnTheSpot mbyte.txt /*OnTheSpot* -Operator-pending intro.txt /*Operator-pending* -Operator-pending-mode intro.txt /*Operator-pending-mode* -OverTheSpot mbyte.txt /*OverTheSpot* -P change.txt /*P* -PATHEXT eval.txt /*PATHEXT* -Pattern pattern.txt /*Pattern* -Perl if_perl.txt /*Perl* -Posix intro.txt /*Posix* -Python if_pyth.txt /*Python* -Q intro.txt /*Q* -Q-command-changed version5.txt /*Q-command-changed* -QNX os_qnx.txt /*QNX* -Q_ab quickref.txt /*Q_ab* -Q_ac quickref.txt /*Q_ac* -Q_ai quickref.txt /*Q_ai* -Q_bu quickref.txt /*Q_bu* -Q_ce quickref.txt /*Q_ce* -Q_ch quickref.txt /*Q_ch* -Q_cm quickref.txt /*Q_cm* -Q_co quickref.txt /*Q_co* -Q_ct help.txt /*Q_ct* -Q_de quickref.txt /*Q_de* -Q_di quickref.txt /*Q_di* -Q_ed quickref.txt /*Q_ed* -Q_et quickref.txt /*Q_et* -Q_ex quickref.txt /*Q_ex* -Q_fl quickref.txt /*Q_fl* -Q_fo quickref.txt /*Q_fo* -Q_gu quickref.txt /*Q_gu* -Q_in quickref.txt /*Q_in* -Q_km quickref.txt /*Q_km* -Q_lr quickref.txt /*Q_lr* -Q_ma quickref.txt /*Q_ma* -Q_op quickref.txt /*Q_op* -Q_pa quickref.txt /*Q_pa* -Q_qf quickref.txt /*Q_qf* -Q_ra quickref.txt /*Q_ra* -Q_re quickref.txt /*Q_re* -Q_sc quickref.txt /*Q_sc* -Q_si quickref.txt /*Q_si* -Q_ss quickref.txt /*Q_ss* -Q_st quickref.txt /*Q_st* -Q_sy quickref.txt /*Q_sy* -Q_ta quickref.txt /*Q_ta* -Q_tm quickref.txt /*Q_tm* -Q_to quickref.txt /*Q_to* -Q_ud quickref.txt /*Q_ud* -Q_ur quickref.txt /*Q_ur* -Q_vc quickref.txt /*Q_vc* -Q_vi quickref.txt /*Q_vi* -Q_vm quickref.txt /*Q_vm* -Q_wi quickref.txt /*Q_wi* -Q_wq quickref.txt /*Q_wq* -QuickFixCmdPost autocmd.txt /*QuickFixCmdPost* -QuickFixCmdPost-example quickfix.txt /*QuickFixCmdPost-example* -QuickFixCmdPre autocmd.txt /*QuickFixCmdPre* -Quickfix quickfix.txt /*Quickfix* -R change.txt /*R* -RISC-OS os_risc.txt /*RISC-OS* -RISCOS os_risc.txt /*RISCOS* -RemoteReply autocmd.txt /*RemoteReply* -Replace insert.txt /*Replace* -Replace-mode insert.txt /*Replace-mode* -Root mbyte.txt /*Root* -Ruby if_ruby.txt /*Ruby* -Russian russian.txt /*Russian* -S change.txt /*S* -SHELL starting.txt /*SHELL* -SQLGetType ft_sql.txt /*SQLGetType* -SQLSetType ft_sql.txt /*SQLSetType* -Select visual.txt /*Select* -Select-mode visual.txt /*Select-mode* -Select-mode-mapping visual.txt /*Select-mode-mapping* -Session starting.txt /*Session* -SessionLoad-variable starting.txt /*SessionLoad-variable* -SessionLoadPost autocmd.txt /*SessionLoadPost* -ShellCmdPost autocmd.txt /*ShellCmdPost* -ShellFilterPost autocmd.txt /*ShellFilterPost* -SourceCmd autocmd.txt /*SourceCmd* -SourcePre autocmd.txt /*SourcePre* -SpellFileMissing autocmd.txt /*SpellFileMissing* -StdinReadPost autocmd.txt /*StdinReadPost* -StdinReadPre autocmd.txt /*StdinReadPre* -SwapExists autocmd.txt /*SwapExists* -Syntax autocmd.txt /*Syntax* -T motion.txt /*T* -TCL if_tcl.txt /*TCL* -TERM starting.txt /*TERM* -TSQL ft_sql.txt /*TSQL* -TTpro-telnet syntax.txt /*TTpro-telnet* -Tab intro.txt /*Tab* -TabEnter autocmd.txt /*TabEnter* -TabLeave autocmd.txt /*TabLeave* -Tcl if_tcl.txt /*Tcl* -TermChanged autocmd.txt /*TermChanged* -TermResponse autocmd.txt /*TermResponse* -Transact-SQL ft_sql.txt /*Transact-SQL* -U undo.txt /*U* -UTF-8 mbyte.txt /*UTF-8* -UTF8-xterm mbyte.txt /*UTF8-xterm* -Uganda uganda.txt /*Uganda* -Unicode mbyte.txt /*Unicode* -Unix os_unix.txt /*Unix* -Unix-format editing.txt /*Unix-format* -Unix-format-write editing.txt /*Unix-format-write* -User autocmd.txt /*User* -UserGettingBored autocmd.txt /*UserGettingBored* -V visual.txt /*V* -VIMINIT starting.txt /*VIMINIT* -VMS os_vms.txt /*VMS* -Vi intro.txt /*Vi* -View starting.txt /*View* -VimEnter autocmd.txt /*VimEnter* -VimLeave autocmd.txt /*VimLeave* -VimLeavePre autocmd.txt /*VimLeavePre* -VimResized autocmd.txt /*VimResized* -Vimball-copyright pi_vimball.txt /*Vimball-copyright* -Virtual-Replace-mode insert.txt /*Virtual-Replace-mode* -VisVim if_ole.txt /*VisVim* -Visual visual.txt /*Visual* -Visual-mode visual.txt /*Visual-mode* -W motion.txt /*W* -W10 message.txt /*W10* -W11 message.txt /*W11* -W12 message.txt /*W12* -W13 message.txt /*W13* -W14 message.txt /*W14* -W15 repeat.txt /*W15* -W16 message.txt /*W16* -W17 arabic.txt /*W17* -W18 syntax.txt /*W18* -WORD motion.txt /*WORD* -WWW intro.txt /*WWW* -Win32 os_win32.txt /*Win32* -WinEnter autocmd.txt /*WinEnter* -WinLeave autocmd.txt /*WinLeave* -X change.txt /*X* -X11 options.txt /*X11* -X11-icon gui_x11.txt /*X11-icon* -X11_mouse_shapes gui_x11.txt /*X11_mouse_shapes* -X1Drag term.txt /*X1Drag* -X1Mouse term.txt /*X1Mouse* -X1Release term.txt /*X1Release* -X2Drag term.txt /*X2Drag* -X2Mouse term.txt /*X2Mouse* -X2Release term.txt /*X2Release* -XIM mbyte.txt /*XIM* -XLFD mbyte.txt /*XLFD* -Y change.txt /*Y* -Y2K intro.txt /*Y2K* -ZQ editing.txt /*ZQ* -ZZ editing.txt /*ZZ* -[ index.txt /*[* -[# motion.txt /*[#* -[' motion.txt /*['* -[( motion.txt /*[(* -[++opt] editing.txt /*[++opt]* -[+cmd] editing.txt /*[+cmd]* -[..] pattern.txt /*[..]* -[/ motion.txt /*[\/* -[:alnum:] pattern.txt /*[:alnum:]* -[:alpha:] pattern.txt /*[:alpha:]* -[:backspace:] pattern.txt /*[:backspace:]* -[:blank:] pattern.txt /*[:blank:]* -[:cntrl:] pattern.txt /*[:cntrl:]* -[:digit:] pattern.txt /*[:digit:]* -[:escape:] pattern.txt /*[:escape:]* -[:graph:] pattern.txt /*[:graph:]* -[:lower:] pattern.txt /*[:lower:]* -[:print:] pattern.txt /*[:print:]* -[:punct:] pattern.txt /*[:punct:]* -[:return:] pattern.txt /*[:return:]* -[:space:] pattern.txt /*[:space:]* -[:tab:] pattern.txt /*[:tab:]* -[:upper:] pattern.txt /*[:upper:]* -[:xdigit:] pattern.txt /*[:xdigit:]* -[<MiddleMouse> change.txt /*[<MiddleMouse>* -[==] pattern.txt /*[==]* -[D tagsrch.txt /*[D* -[I tagsrch.txt /*[I* -[M motion.txt /*[M* -[P change.txt /*[P* -[S spell.txt /*[S* -[[ motion.txt /*[[* -[] motion.txt /*[]* -[_CTRL-D tagsrch.txt /*[_CTRL-D* -[_CTRL-I tagsrch.txt /*[_CTRL-I* -[` motion.txt /*[`* -[c diff.txt /*[c* -[count] intro.txt /*[count]* -[d tagsrch.txt /*[d* -[f editing.txt /*[f* -[i tagsrch.txt /*[i* -[m motion.txt /*[m* -[p change.txt /*[p* -[pattern] pattern.txt /*[pattern]* -[quotex] intro.txt /*[quotex]* -[range] cmdline.txt /*[range]* -[s spell.txt /*[s* -[star motion.txt /*[star* -[z fold.txt /*[z* -[{ motion.txt /*[{* -\0 change.txt /*\\0* -] index.txt /*]* -]# motion.txt /*]#* -]' motion.txt /*]'* -]) motion.txt /*])* -]/ motion.txt /*]\/* -]<MiddleMouse> change.txt /*]<MiddleMouse>* -]D tagsrch.txt /*]D* -]I tagsrch.txt /*]I* -]M motion.txt /*]M* -]P change.txt /*]P* -]S spell.txt /*]S* -][ motion.txt /*][* -]] motion.txt /*]]* -]_CTRL-D tagsrch.txt /*]_CTRL-D* -]_CTRL-I tagsrch.txt /*]_CTRL-I* -]` motion.txt /*]`* -]c diff.txt /*]c* -]d tagsrch.txt /*]d* -]f editing.txt /*]f* -]i tagsrch.txt /*]i* -]m motion.txt /*]m* -]p change.txt /*]p* -]s spell.txt /*]s* -]star motion.txt /*]star* -]z fold.txt /*]z* -]} motion.txt /*]}* -^ motion.txt /*^* -_ motion.txt /*_* -_exrc starting.txt /*_exrc* -_gvimrc gui.txt /*_gvimrc* -_vimrc starting.txt /*_vimrc* -` motion.txt /*`* -`( motion.txt /*`(* -`) motion.txt /*`)* -`-expansion editing.txt /*`-expansion* -`. motion.txt /*`.* -`0 motion.txt /*`0* -`< motion.txt /*`<* -`= editing.txt /*`=* -`> motion.txt /*`>* -`A motion.txt /*`A* -`[ motion.txt /*`[* -`] motion.txt /*`]* -`^ motion.txt /*`^* -`` motion.txt /*``* -`a motion.txt /*`a* -`quote motion.txt /*`quote* -`{ motion.txt /*`{* -`} motion.txt /*`}* -a insert.txt /*a* -a' motion.txt /*a'* -a( motion.txt /*a(* -a) motion.txt /*a)* -a4 print.txt /*a4* -a:0 eval.txt /*a:0* -a:000 eval.txt /*a:000* -a:1 eval.txt /*a:1* -a:firstline eval.txt /*a:firstline* -a:lastline eval.txt /*a:lastline* -a:var eval.txt /*a:var* -a< motion.txt /*a<* -a> motion.txt /*a>* -aB motion.txt /*aB* -aW motion.txt /*aW* -a[ motion.txt /*a[* -a] motion.txt /*a]* -a` motion.txt /*a`* -ab motion.txt /*ab* -abandon editing.txt /*abandon* -abbreviations map.txt /*abbreviations* -abel.vim syntax.txt /*abel.vim* -abs() eval.txt /*abs()* -acos() eval.txt /*acos()* -active-buffer windows.txt /*active-buffer* -ada#Create_Tags() ft_ada.txt /*ada#Create_Tags()* -ada#Jump_Tag() ft_ada.txt /*ada#Jump_Tag()* -ada#Listtags() ft_ada.txt /*ada#Listtags()* -ada#Switch_Syntax_Option() ft_ada.txt /*ada#Switch_Syntax_Option()* -ada#Word() ft_ada.txt /*ada#Word()* -ada-compiler ft_ada.txt /*ada-compiler* -ada-ctags ft_ada.txt /*ada-ctags* -ada-extra-plugins ft_ada.txt /*ada-extra-plugins* -ada-reference ft_ada.txt /*ada-reference* -ada.vim ft_ada.txt /*ada.vim* -add() eval.txt /*add()* -add-filetype-plugin usr_05.txt /*add-filetype-plugin* -add-global-plugin usr_05.txt /*add-global-plugin* -add-local-help usr_05.txt /*add-local-help* -add-option-flags options.txt /*add-option-flags* -add-plugin usr_05.txt /*add-plugin* -added-5.1 version5.txt /*added-5.1* -added-5.2 version5.txt /*added-5.2* -added-5.3 version5.txt /*added-5.3* -added-5.4 version5.txt /*added-5.4* -added-5.5 version5.txt /*added-5.5* -added-5.6 version5.txt /*added-5.6* -added-5.7 version5.txt /*added-5.7* -added-5.8 version5.txt /*added-5.8* -added-6.1 version6.txt /*added-6.1* -added-6.2 version6.txt /*added-6.2* -added-6.3 version6.txt /*added-6.3* -added-6.4 version6.txt /*added-6.4* -added-7.1 version7.txt /*added-7.1* -added-7.2 version7.txt /*added-7.2* -added-7.3 version7.txt /*added-7.3* -added-BeOS version5.txt /*added-BeOS* -added-Mac version5.txt /*added-Mac* -added-VMS version5.txt /*added-VMS* -added-cmdline-args version5.txt /*added-cmdline-args* -added-options version5.txt /*added-options* -added-regexp version5.txt /*added-regexp* -added-various version5.txt /*added-various* -added-win32-GUI version5.txt /*added-win32-GUI* -aff-dic-format spell.txt /*aff-dic-format* -after-directory options.txt /*after-directory* -aleph options.txt /*aleph* -alt intro.txt /*alt* -alt-input debugger.txt /*alt-input* -alternate-file editing.txt /*alternate-file* -amiga-window starting.txt /*amiga-window* -anonymous-function eval.txt /*anonymous-function* -ant.vim syntax.txt /*ant.vim* -ap motion.txt /*ap* -apache.vim syntax.txt /*apache.vim* -append() eval.txt /*append()* -aquote motion.txt /*aquote* -arabic.txt arabic.txt /*arabic.txt* -arabicfonts arabic.txt /*arabicfonts* -arabickeymap arabic.txt /*arabickeymap* -arg-functions usr_41.txt /*arg-functions* -argc() eval.txt /*argc()* -argidx() eval.txt /*argidx()* -arglist editing.txt /*arglist* -arglist-position editing.txt /*arglist-position* -arglist-quit usr_07.txt /*arglist-quit* -argument-list editing.txt /*argument-list* -argv() eval.txt /*argv()* -as motion.txt /*as* -asin() eval.txt /*asin()* -asm.vim syntax.txt /*asm.vim* -asm68k syntax.txt /*asm68k* -asmh8300.vim syntax.txt /*asmh8300.vim* -at motion.txt /*at* -atan() eval.txt /*atan()* -atan2() eval.txt /*atan2()* -athena-intellimouse gui.txt /*athena-intellimouse* -attr-list syntax.txt /*attr-list* -author intro.txt /*author* -auto-format change.txt /*auto-format* -auto-setting options.txt /*auto-setting* -auto-shortname editing.txt /*auto-shortname* -autocmd-<> tips.txt /*autocmd-<>* -autocmd-buffer-local autocmd.txt /*autocmd-buffer-local* -autocmd-buflocal autocmd.txt /*autocmd-buflocal* -autocmd-changes autocmd.txt /*autocmd-changes* -autocmd-define autocmd.txt /*autocmd-define* -autocmd-disable autocmd.txt /*autocmd-disable* -autocmd-events autocmd.txt /*autocmd-events* -autocmd-events-abc autocmd.txt /*autocmd-events-abc* -autocmd-execute autocmd.txt /*autocmd-execute* -autocmd-groups autocmd.txt /*autocmd-groups* -autocmd-intro autocmd.txt /*autocmd-intro* -autocmd-list autocmd.txt /*autocmd-list* -autocmd-nested autocmd.txt /*autocmd-nested* -autocmd-osfiletypes filetype.txt /*autocmd-osfiletypes* -autocmd-patterns autocmd.txt /*autocmd-patterns* -autocmd-remove autocmd.txt /*autocmd-remove* -autocmd-searchpat autocmd.txt /*autocmd-searchpat* -autocmd-use autocmd.txt /*autocmd-use* -autocmd.txt autocmd.txt /*autocmd.txt* -autocmds-kept version5.txt /*autocmds-kept* -autocommand autocmd.txt /*autocommand* -autocommand-events autocmd.txt /*autocommand-events* -autocommand-pattern autocmd.txt /*autocommand-pattern* -autoload eval.txt /*autoload* -autoload-functions eval.txt /*autoload-functions* -avoid-hit-enter version5.txt /*avoid-hit-enter* -aw motion.txt /*aw* -a{ motion.txt /*a{* -a} motion.txt /*a}* -b motion.txt /*b* -b:changedtick-variable eval.txt /*b:changedtick-variable* -b:changelog_name filetype.txt /*b:changelog_name* -b:current_syntax-variable syntax.txt /*b:current_syntax-variable* -b:netrw_lastfile pi_netrw.txt /*b:netrw_lastfile* -b:var eval.txt /*b:var* -baan-folding syntax.txt /*baan-folding* -baan-syntax syntax.txt /*baan-syntax* -baan.vim syntax.txt /*baan.vim* -backslash intro.txt /*backslash* -backspace intro.txt /*backspace* -backspace-delete version4.txt /*backspace-delete* -backtick-expansion editing.txt /*backtick-expansion* -backup editing.txt /*backup* -backup-changed version4.txt /*backup-changed* -backup-extension version4.txt /*backup-extension* -backup-table editing.txt /*backup-table* -balloon-eval debugger.txt /*balloon-eval* -bar motion.txt /*bar* -bars help.txt /*bars* -base_font_name_list mbyte.txt /*base_font_name_list* -basic.vim syntax.txt /*basic.vim* -beep options.txt /*beep* -beos-colors os_beos.txt /*beos-colors* -beos-compiling os_beos.txt /*beos-compiling* -beos-dragndrop os_beos.txt /*beos-dragndrop* -beos-fonts os_beos.txt /*beos-fonts* -beos-general os_beos.txt /*beos-general* -beos-gui os_beos.txt /*beos-gui* -beos-launch os_beos.txt /*beos-launch* -beos-meta os_beos.txt /*beos-meta* -beos-mouse os_beos.txt /*beos-mouse* -beos-perl os_beos.txt /*beos-perl* -beos-timeout os_beos.txt /*beos-timeout* -beos-unicode os_beos.txt /*beos-unicode* -beos-utf8 os_beos.txt /*beos-utf8* -beos-vimdir os_beos.txt /*beos-vimdir* -beval_bufnr-variable eval.txt /*beval_bufnr-variable* -beval_col-variable eval.txt /*beval_col-variable* -beval_lnum-variable eval.txt /*beval_lnum-variable* -beval_text-variable eval.txt /*beval_text-variable* -beval_winnr-variable eval.txt /*beval_winnr-variable* -blockwise-examples visual.txt /*blockwise-examples* -blockwise-operators visual.txt /*blockwise-operators* -blockwise-register change.txt /*blockwise-register* -blockwise-visual visual.txt /*blockwise-visual* -blowfish options.txt /*blowfish* -bold syntax.txt /*bold* -bom-bytes mbyte.txt /*bom-bytes* -book intro.txt /*book* -bookmark usr_03.txt /*bookmark* -boolean options.txt /*boolean* -break-finally eval.txt /*break-finally* -browse() eval.txt /*browse()* -browsedir() eval.txt /*browsedir()* -browsefilter editing.txt /*browsefilter* -bufexists() eval.txt /*bufexists()* -buffer-functions usr_41.txt /*buffer-functions* -buffer-hidden windows.txt /*buffer-hidden* -buffer-list windows.txt /*buffer-list* -buffer-variable eval.txt /*buffer-variable* -buffer-write editing.txt /*buffer-write* -buffer_exists() eval.txt /*buffer_exists()* -buffer_name() eval.txt /*buffer_name()* -buffer_number() eval.txt /*buffer_number()* -buffers windows.txt /*buffers* -buffers-menu gui.txt /*buffers-menu* -buflisted() eval.txt /*buflisted()* -bufloaded() eval.txt /*bufloaded()* -bufname() eval.txt /*bufname()* -bufnr() eval.txt /*bufnr()* -bufwinnr() eval.txt /*bufwinnr()* -bug-fixes-5 version5.txt /*bug-fixes-5* -bug-fixes-6 version6.txt /*bug-fixes-6* -bug-fixes-7 version7.txt /*bug-fixes-7* -bug-reports intro.txt /*bug-reports* -bugreport.vim intro.txt /*bugreport.vim* -bugs intro.txt /*bugs* -builtin-terms term.txt /*builtin-terms* -builtin-tools gui.txt /*builtin-tools* -builtin_terms term.txt /*builtin_terms* -byte-count editing.txt /*byte-count* -byte2line() eval.txt /*byte2line()* -byteidx() eval.txt /*byteidx()* -bzip2 pi_gzip.txt /*bzip2* -c change.txt /*c* -c.vim syntax.txt /*c.vim* -cW change.txt /*cW* -c_# cmdline.txt /*c_#* -c_## cmdline.txt /*c_##* -c_#< cmdline.txt /*c_#<* -c_#n cmdline.txt /*c_#n* -c_% cmdline.txt /*c_%* -c_<BS> cmdline.txt /*c_<BS>* -c_<C-Left> cmdline.txt /*c_<C-Left>* -c_<C-R> cmdline.txt /*c_<C-R>* -c_<C-R>_<C-A> cmdline.txt /*c_<C-R>_<C-A>* -c_<C-R>_<C-F> cmdline.txt /*c_<C-R>_<C-F>* -c_<C-R>_<C-O> cmdline.txt /*c_<C-R>_<C-O>* -c_<C-R>_<C-P> cmdline.txt /*c_<C-R>_<C-P>* -c_<C-R>_<C-R> cmdline.txt /*c_<C-R>_<C-R>* -c_<C-R>_<C-W> cmdline.txt /*c_<C-R>_<C-W>* -c_<C-Right> cmdline.txt /*c_<C-Right>* -c_<CR> cmdline.txt /*c_<CR>* -c_<Del> cmdline.txt /*c_<Del>* -c_<Down> cmdline.txt /*c_<Down>* -c_<End> cmdline.txt /*c_<End>* -c_<Esc> cmdline.txt /*c_<Esc>* -c_<Home> cmdline.txt /*c_<Home>* -c_<Insert> cmdline.txt /*c_<Insert>* -c_<Left> cmdline.txt /*c_<Left>* -c_<LeftMouse> cmdline.txt /*c_<LeftMouse>* -c_<NL> cmdline.txt /*c_<NL>* -c_<PageDown> cmdline.txt /*c_<PageDown>* -c_<PageUp> cmdline.txt /*c_<PageUp>* -c_<Right> cmdline.txt /*c_<Right>* -c_<S-Down> cmdline.txt /*c_<S-Down>* -c_<S-Left> cmdline.txt /*c_<S-Left>* -c_<S-Right> cmdline.txt /*c_<S-Right>* -c_<S-Tab> cmdline.txt /*c_<S-Tab>* -c_<S-Up> cmdline.txt /*c_<S-Up>* -c_<Tab> cmdline.txt /*c_<Tab>* -c_<Up> cmdline.txt /*c_<Up>* -c_CTRL-A cmdline.txt /*c_CTRL-A* -c_CTRL-B cmdline.txt /*c_CTRL-B* -c_CTRL-C cmdline.txt /*c_CTRL-C* -c_CTRL-D cmdline.txt /*c_CTRL-D* -c_CTRL-E cmdline.txt /*c_CTRL-E* -c_CTRL-F cmdline.txt /*c_CTRL-F* -c_CTRL-H cmdline.txt /*c_CTRL-H* -c_CTRL-I cmdline.txt /*c_CTRL-I* -c_CTRL-J cmdline.txt /*c_CTRL-J* -c_CTRL-K cmdline.txt /*c_CTRL-K* -c_CTRL-L cmdline.txt /*c_CTRL-L* -c_CTRL-N cmdline.txt /*c_CTRL-N* -c_CTRL-P cmdline.txt /*c_CTRL-P* -c_CTRL-Q cmdline.txt /*c_CTRL-Q* -c_CTRL-R cmdline.txt /*c_CTRL-R* -c_CTRL-R_= cmdline.txt /*c_CTRL-R_=* -c_CTRL-R_CTRL-A cmdline.txt /*c_CTRL-R_CTRL-A* -c_CTRL-R_CTRL-F cmdline.txt /*c_CTRL-R_CTRL-F* -c_CTRL-R_CTRL-O cmdline.txt /*c_CTRL-R_CTRL-O* -c_CTRL-R_CTRL-P cmdline.txt /*c_CTRL-R_CTRL-P* -c_CTRL-R_CTRL-R cmdline.txt /*c_CTRL-R_CTRL-R* -c_CTRL-R_CTRL-W cmdline.txt /*c_CTRL-R_CTRL-W* -c_CTRL-U cmdline.txt /*c_CTRL-U* -c_CTRL-V cmdline.txt /*c_CTRL-V* -c_CTRL-W cmdline.txt /*c_CTRL-W* -c_CTRL-Y cmdline.txt /*c_CTRL-Y* -c_CTRL-\_CTRL-G intro.txt /*c_CTRL-\\_CTRL-G* -c_CTRL-\_CTRL-N intro.txt /*c_CTRL-\\_CTRL-N* -c_CTRL-\_e cmdline.txt /*c_CTRL-\\_e* -c_CTRL-] cmdline.txt /*c_CTRL-]* -c_CTRL-^ cmdline.txt /*c_CTRL-^* -c_CTRL-_ cmdline.txt /*c_CTRL-_* -c_digraph cmdline.txt /*c_digraph* -c_wildchar cmdline.txt /*c_wildchar* -call() eval.txt /*call()* -carriage-return intro.txt /*carriage-return* -case change.txt /*case* -catch-all eval.txt /*catch-all* -catch-errors eval.txt /*catch-errors* -catch-interrupt eval.txt /*catch-interrupt* -catch-order eval.txt /*catch-order* -catch-text eval.txt /*catch-text* -cc change.txt /*cc* -ceil() eval.txt /*ceil()* -ch.vim syntax.txt /*ch.vim* -change-list-jumps motion.txt /*change-list-jumps* -change-name tips.txt /*change-name* -change-tabs change.txt /*change-tabs* -change.txt change.txt /*change.txt* -changed-5.1 version5.txt /*changed-5.1* -changed-5.2 version5.txt /*changed-5.2* -changed-5.3 version5.txt /*changed-5.3* -changed-5.4 version5.txt /*changed-5.4* -changed-5.5 version5.txt /*changed-5.5* -changed-5.6 version5.txt /*changed-5.6* -changed-5.7 version5.txt /*changed-5.7* -changed-5.8 version5.txt /*changed-5.8* -changed-6.1 version6.txt /*changed-6.1* -changed-6.2 version6.txt /*changed-6.2* -changed-6.3 version6.txt /*changed-6.3* -changed-6.4 version6.txt /*changed-6.4* -changed-7.1 version7.txt /*changed-7.1* -changed-7.2 version7.txt /*changed-7.2* -changed-7.3 version7.txt /*changed-7.3* -changelist motion.txt /*changelist* -changelog.vim syntax.txt /*changelog.vim* -changenr() eval.txt /*changenr()* -changetick eval.txt /*changetick* -changing change.txt /*changing* -char-variable eval.txt /*char-variable* -char2nr() eval.txt /*char2nr()* -characterwise motion.txt /*characterwise* -characterwise-register change.txt /*characterwise-register* -characterwise-visual visual.txt /*characterwise-visual* -charconvert_from-variable eval.txt /*charconvert_from-variable* -charconvert_to-variable eval.txt /*charconvert_to-variable* -charity uganda.txt /*charity* -charset mbyte.txt /*charset* -charset-conversion mbyte.txt /*charset-conversion* -chill.vim syntax.txt /*chill.vim* -cindent() eval.txt /*cindent()* -cinkeys-format indent.txt /*cinkeys-format* -cinoptions-values indent.txt /*cinoptions-values* -clear-undo undo.txt /*clear-undo* -clearmatches() eval.txt /*clearmatches()* -client-server remote.txt /*client-server* -clientserver remote.txt /*clientserver* -clipboard gui.txt /*clipboard* -cmdarg-variable eval.txt /*cmdarg-variable* -cmdbang-variable eval.txt /*cmdbang-variable* -cmdline-arguments vi_diff.txt /*cmdline-arguments* -cmdline-changed version5.txt /*cmdline-changed* -cmdline-completion cmdline.txt /*cmdline-completion* -cmdline-editing cmdline.txt /*cmdline-editing* -cmdline-history cmdline.txt /*cmdline-history* -cmdline-lines cmdline.txt /*cmdline-lines* -cmdline-ranges cmdline.txt /*cmdline-ranges* -cmdline-special cmdline.txt /*cmdline-special* -cmdline-too-long cmdline.txt /*cmdline-too-long* -cmdline-window cmdline.txt /*cmdline-window* -cmdline.txt cmdline.txt /*cmdline.txt* -cmdwin cmdline.txt /*cmdwin* -cmdwin-char cmdline.txt /*cmdwin-char* -cobol.vim syntax.txt /*cobol.vim* -codeset mbyte.txt /*codeset* -coding-style develop.txt /*coding-style* -col() eval.txt /*col()* -coldfusion.vim syntax.txt /*coldfusion.vim* -collapse tips.txt /*collapse* -color-xterm syntax.txt /*color-xterm* -coloring syntax.txt /*coloring* -colortest.vim syntax.txt /*colortest.vim* -command-line-functions usr_41.txt /*command-line-functions* -command-line-window cmdline.txt /*command-line-window* -command-mode intro.txt /*command-mode* -compatible-default starting.txt /*compatible-default* -compile-changes-5 version5.txt /*compile-changes-5* -compile-changes-6 version6.txt /*compile-changes-6* -compile-changes-7 version7.txt /*compile-changes-7* -compiler-compaqada ft_ada.txt /*compiler-compaqada* -compiler-decada ft_ada.txt /*compiler-decada* -compiler-gcc quickfix.txt /*compiler-gcc* -compiler-gnat ft_ada.txt /*compiler-gnat* -compiler-hpada ft_ada.txt /*compiler-hpada* -compiler-manx quickfix.txt /*compiler-manx* -compiler-perl quickfix.txt /*compiler-perl* -compiler-pyunit quickfix.txt /*compiler-pyunit* -compiler-select quickfix.txt /*compiler-select* -compiler-tex quickfix.txt /*compiler-tex* -compiler-vaxada ft_ada.txt /*compiler-vaxada* -compl-current insert.txt /*compl-current* -compl-define insert.txt /*compl-define* -compl-dictionary insert.txt /*compl-dictionary* -compl-filename insert.txt /*compl-filename* -compl-function insert.txt /*compl-function* -compl-generic insert.txt /*compl-generic* -compl-keyword insert.txt /*compl-keyword* -compl-omni insert.txt /*compl-omni* -compl-omni-filetypes insert.txt /*compl-omni-filetypes* -compl-spelling insert.txt /*compl-spelling* -compl-tag insert.txt /*compl-tag* -compl-vim insert.txt /*compl-vim* -compl-whole-line insert.txt /*compl-whole-line* -complete() eval.txt /*complete()* -complete-functions insert.txt /*complete-functions* -complete-items insert.txt /*complete-items* -complete_CTRL-E insert.txt /*complete_CTRL-E* -complete_CTRL-Y insert.txt /*complete_CTRL-Y* -complete_add() eval.txt /*complete_add()* -complete_check() eval.txt /*complete_check()* -completion-functions usr_41.txt /*completion-functions* -complex-change change.txt /*complex-change* -complex-repeat repeat.txt /*complex-repeat* -compress pi_gzip.txt /*compress* -conceal syntax.txt /*conceal* -confirm() eval.txt /*confirm()* -connection-refused message.txt /*connection-refused* -console-menus gui.txt /*console-menus* -control intro.txt /*control* -conversion-server mbyte.txt /*conversion-server* -convert-to-HTML syntax.txt /*convert-to-HTML* -convert-to-XHTML syntax.txt /*convert-to-XHTML* -convert-to-XML syntax.txt /*convert-to-XML* -copy() eval.txt /*copy()* -copy-diffs diff.txt /*copy-diffs* -copy-move change.txt /*copy-move* -copying uganda.txt /*copying* -copyright uganda.txt /*copyright* -cos() eval.txt /*cos()* -cosh() eval.txt /*cosh()* -count intro.txt /*count* -count() eval.txt /*count()* -count-bytes tips.txt /*count-bytes* -count-items tips.txt /*count-items* -count-variable eval.txt /*count-variable* -count1-variable eval.txt /*count1-variable* -cp-default version5.txt /*cp-default* -cpo-! options.txt /*cpo-!* -cpo-# options.txt /*cpo-#* -cpo-$ options.txt /*cpo-$* -cpo-% options.txt /*cpo-%* -cpo-& options.txt /*cpo-&* -cpo-+ options.txt /*cpo-+* -cpo-- options.txt /*cpo--* -cpo-. options.txt /*cpo-.* -cpo-/ options.txt /*cpo-\/* -cpo-< options.txt /*cpo-<* -cpo-> options.txt /*cpo->* -cpo-A options.txt /*cpo-A* -cpo-B options.txt /*cpo-B* -cpo-C options.txt /*cpo-C* -cpo-D options.txt /*cpo-D* -cpo-E options.txt /*cpo-E* -cpo-F options.txt /*cpo-F* -cpo-H options.txt /*cpo-H* -cpo-I options.txt /*cpo-I* -cpo-J options.txt /*cpo-J* -cpo-K options.txt /*cpo-K* -cpo-L options.txt /*cpo-L* -cpo-M options.txt /*cpo-M* -cpo-O options.txt /*cpo-O* -cpo-P options.txt /*cpo-P* -cpo-R options.txt /*cpo-R* -cpo-S options.txt /*cpo-S* -cpo-W options.txt /*cpo-W* -cpo-X options.txt /*cpo-X* -cpo-Z options.txt /*cpo-Z* -cpo-\ options.txt /*cpo-\\* -cpo-a options.txt /*cpo-a* -cpo-b options.txt /*cpo-b* -cpo-bar options.txt /*cpo-bar* -cpo-c options.txt /*cpo-c* -cpo-d options.txt /*cpo-d* -cpo-e options.txt /*cpo-e* -cpo-f options.txt /*cpo-f* -cpo-g options.txt /*cpo-g* -cpo-i options.txt /*cpo-i* -cpo-j options.txt /*cpo-j* -cpo-k options.txt /*cpo-k* -cpo-l options.txt /*cpo-l* -cpo-m options.txt /*cpo-m* -cpo-n options.txt /*cpo-n* -cpo-o options.txt /*cpo-o* -cpo-p options.txt /*cpo-p* -cpo-q options.txt /*cpo-q* -cpo-r options.txt /*cpo-r* -cpo-s options.txt /*cpo-s* -cpo-star options.txt /*cpo-star* -cpo-t options.txt /*cpo-t* -cpo-u options.txt /*cpo-u* -cpo-v options.txt /*cpo-v* -cpo-w options.txt /*cpo-w* -cpo-x options.txt /*cpo-x* -cpo-y options.txt /*cpo-y* -cpo-{ options.txt /*cpo-{* -crash-recovery recover.txt /*crash-recovery* -creating-menus gui.txt /*creating-menus* -credits intro.txt /*credits* -crontab options.txt /*crontab* -cs-find if_cscop.txt /*cs-find* -cs7-problem term.txt /*cs7-problem* -cscope if_cscop.txt /*cscope* -cscope-commands if_cscop.txt /*cscope-commands* -cscope-find if_cscop.txt /*cscope-find* -cscope-howtouse if_cscop.txt /*cscope-howtouse* -cscope-info if_cscop.txt /*cscope-info* -cscope-intro if_cscop.txt /*cscope-intro* -cscope-limitations if_cscop.txt /*cscope-limitations* -cscope-options if_cscop.txt /*cscope-options* -cscope-suggestions if_cscop.txt /*cscope-suggestions* -cscope-win32 if_cscop.txt /*cscope-win32* -cscope_connection() eval.txt /*cscope_connection()* -cscopepathcomp if_cscop.txt /*cscopepathcomp* -cscopeprg if_cscop.txt /*cscopeprg* -cscopequickfix if_cscop.txt /*cscopequickfix* -cscopetag if_cscop.txt /*cscopetag* -cscopetagorder if_cscop.txt /*cscopetagorder* -cscopeverbose if_cscop.txt /*cscopeverbose* -csh.vim syntax.txt /*csh.vim* -cspc if_cscop.txt /*cspc* -csprg if_cscop.txt /*csprg* -csqf if_cscop.txt /*csqf* -cst if_cscop.txt /*cst* -csto if_cscop.txt /*csto* -csverb if_cscop.txt /*csverb* -ctags tagsrch.txt /*ctags* -ctags-gone version6.txt /*ctags-gone* -cterm-colors syntax.txt /*cterm-colors* -ctrl intro.txt /*ctrl* -ctype-variable eval.txt /*ctype-variable* -curly-braces-function-names eval.txt /*curly-braces-function-names* -curly-braces-names eval.txt /*curly-braces-names* -curpos-visual version6.txt /*curpos-visual* -current-directory editing.txt /*current-directory* -current-file editing.txt /*current-file* -current_compiler quickfix.txt /*current_compiler* -cursor() eval.txt /*cursor()* -cursor-blinking options.txt /*cursor-blinking* -cursor-down intro.txt /*cursor-down* -cursor-functions usr_41.txt /*cursor-functions* -cursor-left intro.txt /*cursor-left* -cursor-motions motion.txt /*cursor-motions* -cursor-position pattern.txt /*cursor-position* -cursor-right intro.txt /*cursor-right* -cursor-up intro.txt /*cursor-up* -cursor_down intro.txt /*cursor_down* -cursor_left intro.txt /*cursor_left* -cursor_right intro.txt /*cursor_right* -cursor_up intro.txt /*cursor_up* -cw change.txt /*cw* -cweb.vim syntax.txt /*cweb.vim* -cynlib.vim syntax.txt /*cynlib.vim* -d change.txt /*d* -daB motion.txt /*daB* -daW motion.txt /*daW* -dab motion.txt /*dab* -dap motion.txt /*dap* -das motion.txt /*das* -date-functions usr_41.txt /*date-functions* -dav pi_netrw.txt /*dav* -davs pi_netrw.txt /*davs* -daw motion.txt /*daw* -dd change.txt /*dd* -debug-gcc debug.txt /*debug-gcc* -debug-highlight debugger.txt /*debug-highlight* -debug-leaks debug.txt /*debug-leaks* -debug-minidump debug.txt /*debug-minidump* -debug-mode repeat.txt /*debug-mode* -debug-scripts repeat.txt /*debug-scripts* -debug-signs debugger.txt /*debug-signs* -debug-vim debug.txt /*debug-vim* -debug-vs2005 debug.txt /*debug-vs2005* -debug-win32 debug.txt /*debug-win32* -debug-windbg debug.txt /*debug-windbg* -debug.txt debug.txt /*debug.txt* -debugger-compilation debugger.txt /*debugger-compilation* -debugger-features debugger.txt /*debugger-features* -debugger-integration debugger.txt /*debugger-integration* -debugger-support debugger.txt /*debugger-support* -debugger.txt debugger.txt /*debugger.txt* -dec-mouse options.txt /*dec-mouse* -decada_members ft_ada.txt /*decada_members* -deepcopy() eval.txt /*deepcopy()* -definition-search tagsrch.txt /*definition-search* -definitions intro.txt /*definitions* -delete() eval.txt /*delete()* -delete-insert change.txt /*delete-insert* -delete-menus gui.txt /*delete-menus* -deleting change.txt /*deleting* -design-assumptions develop.txt /*design-assumptions* -design-compatible develop.txt /*design-compatible* -design-decisions develop.txt /*design-decisions* -design-documented develop.txt /*design-documented* -design-flexible develop.txt /*design-flexible* -design-goals develop.txt /*design-goals* -design-improved develop.txt /*design-improved* -design-maintain develop.txt /*design-maintain* -design-multi-platform develop.txt /*design-multi-platform* -design-not develop.txt /*design-not* -design-speed-size develop.txt /*design-speed-size* -desktop.vim syntax.txt /*desktop.vim* -develop-spell develop.txt /*develop-spell* -develop-spell-suggestions develop.txt /*develop-spell-suggestions* -develop.txt develop.txt /*develop.txt* -development develop.txt /*development* -dh change.txt /*dh* -diB motion.txt /*diB* -diW motion.txt /*diW* -dialog gui_w32.txt /*dialog* -dialogs-added version5.txt /*dialogs-added* -dib motion.txt /*dib* -dict-functions usr_41.txt /*dict-functions* -dict-identity eval.txt /*dict-identity* -dict-modification eval.txt /*dict-modification* -did_filetype() eval.txt /*did_filetype()* -diff diff.txt /*diff* -diff-diffexpr diff.txt /*diff-diffexpr* -diff-mode diff.txt /*diff-mode* -diff-options diff.txt /*diff-options* -diff-original-file diff.txt /*diff-original-file* -diff-patchexpr diff.txt /*diff-patchexpr* -diff.txt diff.txt /*diff.txt* -diff_filler() eval.txt /*diff_filler()* -diff_hlID() eval.txt /*diff_hlID()* -digraph digraph.txt /*digraph* -digraph-arg change.txt /*digraph-arg* -digraph-encoding digraph.txt /*digraph-encoding* -digraph-table digraph.txt /*digraph-table* -digraph.txt digraph.txt /*digraph.txt* -digraphs digraph.txt /*digraphs* -digraphs-changed version6.txt /*digraphs-changed* -digraphs-default digraph.txt /*digraphs-default* -digraphs-define digraph.txt /*digraphs-define* -digraphs-use digraph.txt /*digraphs-use* -dip motion.txt /*dip* -dircolors.vim syntax.txt /*dircolors.vim* -dis motion.txt /*dis* -disable-menus gui.txt /*disable-menus* -distribute-script usr_41.txt /*distribute-script* -distribution intro.txt /*distribution* -diw motion.txt /*diw* -dl change.txt /*dl* -do diff.txt /*do* -doc-file-list help.txt /*doc-file-list* -docbk.vim syntax.txt /*docbk.vim* -docbksgml.vim syntax.txt /*docbksgml.vim* -docbkxml.vim syntax.txt /*docbkxml.vim* -docbook syntax.txt /*docbook* -documentation-6 version6.txt /*documentation-6* -donate uganda.txt /*donate* -dos os_dos.txt /*dos* -dos-:cd os_dos.txt /*dos-:cd* -dos-CTRL-Break os_dos.txt /*dos-CTRL-Break* -dos-backslash os_dos.txt /*dos-backslash* -dos-colors os_dos.txt /*dos-colors* -dos-file-formats os_dos.txt /*dos-file-formats* -dos-locations os_dos.txt /*dos-locations* -dos-shell os_dos.txt /*dos-shell* -dos-standard-mappings os_dos.txt /*dos-standard-mappings* -dos-temp-files os_dos.txt /*dos-temp-files* -dos16 os_msdos.txt /*dos16* -dos32 os_msdos.txt /*dos32* -dosbatch.vim syntax.txt /*dosbatch.vim* -double-click term.txt /*double-click* -download intro.txt /*download* -doxygen-syntax syntax.txt /*doxygen-syntax* -doxygen.vim syntax.txt /*doxygen.vim* -dp diff.txt /*dp* -drag-n-drop gui.txt /*drag-n-drop* -drag-n-drop-win32 gui_w32.txt /*drag-n-drop-win32* -drag-status-line term.txt /*drag-status-line* -dtd.vim syntax.txt /*dtd.vim* -dtd2vim insert.txt /*dtd2vim* -dying-variable eval.txt /*dying-variable* -e motion.txt /*e* -easy starting.txt /*easy* -edit-a-file editing.txt /*edit-a-file* -edit-binary editing.txt /*edit-binary* -edit-dialogs editing.txt /*edit-dialogs* -edit-files editing.txt /*edit-files* -edit-intro editing.txt /*edit-intro* -edit-no-break usr_25.txt /*edit-no-break* -editing.txt editing.txt /*editing.txt* -efm-%> quickfix.txt /*efm-%>* -efm-entries quickfix.txt /*efm-entries* -efm-ignore quickfix.txt /*efm-ignore* -eiffel.vim syntax.txt /*eiffel.vim* -emacs-keys tips.txt /*emacs-keys* -emacs-tags tagsrch.txt /*emacs-tags* -emacs_tags tagsrch.txt /*emacs_tags* -empty() eval.txt /*empty()* -encoding-names mbyte.txt /*encoding-names* -encoding-table mbyte.txt /*encoding-table* -encoding-values mbyte.txt /*encoding-values* -encryption editing.txt /*encryption* -end intro.txt /*end* -end-of-file pattern.txt /*end-of-file* -enlightened-terminal syntax.txt /*enlightened-terminal* -erlang.vim syntax.txt /*erlang.vim* -errmsg-variable eval.txt /*errmsg-variable* -error-file-format quickfix.txt /*error-file-format* -error-messages message.txt /*error-messages* -errorformat quickfix.txt /*errorformat* -errorformat-Jikes quickfix.txt /*errorformat-Jikes* -errorformat-LaTeX quickfix.txt /*errorformat-LaTeX* -errorformat-Perl quickfix.txt /*errorformat-Perl* -errorformat-ant quickfix.txt /*errorformat-ant* -errorformat-changed version4.txt /*errorformat-changed* -errorformat-jade quickfix.txt /*errorformat-jade* -errorformat-javac quickfix.txt /*errorformat-javac* -errorformat-multi-line quickfix.txt /*errorformat-multi-line* -errorformat-separate-filename quickfix.txt /*errorformat-separate-filename* -errorformats quickfix.txt /*errorformats* -errors message.txt /*errors* -escape intro.txt /*escape* -escape() eval.txt /*escape()* -escape-bar version4.txt /*escape-bar* -eval eval.txt /*eval* -eval() eval.txt /*eval()* -eval-examples eval.txt /*eval-examples* -eval-sandbox eval.txt /*eval-sandbox* -eval.txt eval.txt /*eval.txt* -eventhandler() eval.txt /*eventhandler()* -eview starting.txt /*eview* -evim starting.txt /*evim* -evim-keys starting.txt /*evim-keys* -evim.vim starting.txt /*evim.vim* -ex starting.txt /*ex* -ex-cmd-index index.txt /*ex-cmd-index* -ex-edit-index index.txt /*ex-edit-index* -ex-flags cmdline.txt /*ex-flags* -ex: options.txt /*ex:* -except-autocmd eval.txt /*except-autocmd* -except-autocmd-Cmd eval.txt /*except-autocmd-Cmd* -except-autocmd-Post eval.txt /*except-autocmd-Post* -except-autocmd-Pre eval.txt /*except-autocmd-Pre* -except-autocmd-ill eval.txt /*except-autocmd-ill* -except-compat eval.txt /*except-compat* -except-examine eval.txt /*except-examine* -except-from-finally eval.txt /*except-from-finally* -except-hier-param eval.txt /*except-hier-param* -except-several-errors eval.txt /*except-several-errors* -except-single-line eval.txt /*except-single-line* -except-syntax-err eval.txt /*except-syntax-err* -except-syntax-error eval.txt /*except-syntax-error* -exception-handling eval.txt /*exception-handling* -exception-variable eval.txt /*exception-variable* -exclusive motion.txt /*exclusive* -exclusive-linewise motion.txt /*exclusive-linewise* -executable() eval.txt /*executable()* -execute-menus gui.txt /*execute-menus* -exim starting.txt /*exim* -exists() eval.txt /*exists()* -exp() eval.txt /*exp()* -expand() eval.txt /*expand()* -expand-env options.txt /*expand-env* -expand-environment-var options.txt /*expand-environment-var* -expr eval.txt /*expr* -expr-! eval.txt /*expr-!* -expr-!= eval.txt /*expr-!=* -expr-!=# eval.txt /*expr-!=#* -expr-!=? eval.txt /*expr-!=?* -expr-!~ eval.txt /*expr-!~* -expr-!~# eval.txt /*expr-!~#* -expr-!~? eval.txt /*expr-!~?* -expr-% eval.txt /*expr-%* -expr-&& eval.txt /*expr-&&* -expr-' eval.txt /*expr-'* -expr-+ eval.txt /*expr-+* -expr-- eval.txt /*expr--* -expr-. eval.txt /*expr-.* -expr-/ eval.txt /*expr-\/* -expr-< eval.txt /*expr-<* -expr-<# eval.txt /*expr-<#* -expr-<= eval.txt /*expr-<=* -expr-<=# eval.txt /*expr-<=#* -expr-<=? eval.txt /*expr-<=?* -expr-<? eval.txt /*expr-<?* -expr-== eval.txt /*expr-==* -expr-==# eval.txt /*expr-==#* -expr-==? eval.txt /*expr-==?* -expr-=~ eval.txt /*expr-=~* -expr-=~# eval.txt /*expr-=~#* -expr-=~? eval.txt /*expr-=~?* -expr-> eval.txt /*expr->* -expr-># eval.txt /*expr->#* -expr->= eval.txt /*expr->=* -expr->=# eval.txt /*expr->=#* -expr->=? eval.txt /*expr->=?* -expr->? eval.txt /*expr->?* -expr-[:] eval.txt /*expr-[:]* -expr-[] eval.txt /*expr-[]* -expr-barbar eval.txt /*expr-barbar* -expr-entry eval.txt /*expr-entry* -expr-env eval.txt /*expr-env* -expr-env-expand eval.txt /*expr-env-expand* -expr-function eval.txt /*expr-function* -expr-is eval.txt /*expr-is* -expr-nesting eval.txt /*expr-nesting* -expr-number eval.txt /*expr-number* -expr-option eval.txt /*expr-option* -expr-quote eval.txt /*expr-quote* -expr-register eval.txt /*expr-register* -expr-star eval.txt /*expr-star* -expr-string eval.txt /*expr-string* -expr-unary-+ eval.txt /*expr-unary-+* -expr-unary-- eval.txt /*expr-unary--* -expr-variable eval.txt /*expr-variable* -expr1 eval.txt /*expr1* -expr2 eval.txt /*expr2* -expr3 eval.txt /*expr3* -expr4 eval.txt /*expr4* -expr5 eval.txt /*expr5* -expr6 eval.txt /*expr6* -expr7 eval.txt /*expr7* -expr8 eval.txt /*expr8* -expr9 eval.txt /*expr9* -expression eval.txt /*expression* -expression-commands eval.txt /*expression-commands* -expression-syntax eval.txt /*expression-syntax* -exrc starting.txt /*exrc* -extend() eval.txt /*extend()* -extension-removal cmdline.txt /*extension-removal* -extensions-improvements todo.txt /*extensions-improvements* -f motion.txt /*f* -faq intro.txt /*faq* -farsi farsi.txt /*farsi* -farsi.txt farsi.txt /*farsi.txt* -fasm.vim syntax.txt /*fasm.vim* -fcs_choice-variable eval.txt /*fcs_choice-variable* -fcs_reason-variable eval.txt /*fcs_reason-variable* -feature-list eval.txt /*feature-list* -feedkeys() eval.txt /*feedkeys()* -fetch pi_netrw.txt /*fetch* -file-browser-5.2 version5.txt /*file-browser-5.2* -file-formats editing.txt /*file-formats* -file-functions usr_41.txt /*file-functions* -file-pattern autocmd.txt /*file-pattern* -file-read insert.txt /*file-read* -file-searching editing.txt /*file-searching* -file-type filetype.txt /*file-type* -file-types filetype.txt /*file-types* -file_readable() eval.txt /*file_readable()* -fileencoding-changed version6.txt /*fileencoding-changed* -filename-backslash cmdline.txt /*filename-backslash* -filename-modifiers cmdline.txt /*filename-modifiers* -filereadable() eval.txt /*filereadable()* -filetype filetype.txt /*filetype* -filetype-detect filetype.txt /*filetype-detect* -filetype-ignore filetype.txt /*filetype-ignore* -filetype-overrule filetype.txt /*filetype-overrule* -filetype-plugin usr_43.txt /*filetype-plugin* -filetype-plugins filetype.txt /*filetype-plugins* -filetype.txt filetype.txt /*filetype.txt* -filetypedetect-changed version6.txt /*filetypedetect-changed* -filetypes filetype.txt /*filetypes* -filewritable() eval.txt /*filewritable()* -filter change.txt /*filter* -filter() eval.txt /*filter()* -find-manpage usr_12.txt /*find-manpage* -find-replace usr_10.txt /*find-replace* -finddir() eval.txt /*finddir()* -findfile() eval.txt /*findfile()* -fixed-5.1 version5.txt /*fixed-5.1* -fixed-5.2 version5.txt /*fixed-5.2* -fixed-5.3 version5.txt /*fixed-5.3* -fixed-5.4 version5.txt /*fixed-5.4* -fixed-5.5 version5.txt /*fixed-5.5* -fixed-5.6 version5.txt /*fixed-5.6* -fixed-5.7 version5.txt /*fixed-5.7* -fixed-5.8 version5.txt /*fixed-5.8* -fixed-6.1 version6.txt /*fixed-6.1* -fixed-6.2 version6.txt /*fixed-6.2* -fixed-6.3 version6.txt /*fixed-6.3* -fixed-6.4 version6.txt /*fixed-6.4* -fixed-7.1 version7.txt /*fixed-7.1* -fixed-7.2 version7.txt /*fixed-7.2* -fixed-7.3 version7.txt /*fixed-7.3* -flexwiki.vim syntax.txt /*flexwiki.vim* -float-e eval.txt /*float-e* -float-functions usr_41.txt /*float-functions* -float-pi eval.txt /*float-pi* -float2nr() eval.txt /*float2nr()* -floating-point-format eval.txt /*floating-point-format* -floating-point-precision eval.txt /*floating-point-precision* -floor() eval.txt /*floor()* -fmod() eval.txt /*fmod()* -fname_diff-variable eval.txt /*fname_diff-variable* -fname_in-variable eval.txt /*fname_in-variable* -fname_new-variable eval.txt /*fname_new-variable* -fname_out-variable eval.txt /*fname_out-variable* -fnameescape() eval.txt /*fnameescape()* -fnamemodify() eval.txt /*fnamemodify()* -fo-table change.txt /*fo-table* -fold-behavior fold.txt /*fold-behavior* -fold-colors fold.txt /*fold-colors* -fold-commands fold.txt /*fold-commands* -fold-create-marker fold.txt /*fold-create-marker* -fold-delete-marker fold.txt /*fold-delete-marker* -fold-diff fold.txt /*fold-diff* -fold-expr fold.txt /*fold-expr* -fold-foldcolumn fold.txt /*fold-foldcolumn* -fold-foldlevel fold.txt /*fold-foldlevel* -fold-foldtext fold.txt /*fold-foldtext* -fold-indent fold.txt /*fold-indent* -fold-manual fold.txt /*fold-manual* -fold-marker fold.txt /*fold-marker* -fold-methods fold.txt /*fold-methods* -fold-options fold.txt /*fold-options* -fold-syntax fold.txt /*fold-syntax* -fold.txt fold.txt /*fold.txt* -foldclosed() eval.txt /*foldclosed()* -foldclosedend() eval.txt /*foldclosedend()* -folddashes-variable eval.txt /*folddashes-variable* -foldend-variable eval.txt /*foldend-variable* -folding fold.txt /*folding* -folding-functions usr_41.txt /*folding-functions* -foldlevel() eval.txt /*foldlevel()* -foldlevel-variable eval.txt /*foldlevel-variable* -folds fold.txt /*folds* -foldstart-variable eval.txt /*foldstart-variable* -foldtext() eval.txt /*foldtext()* -foldtextresult() eval.txt /*foldtextresult()* -font-sizes gui_x11.txt /*font-sizes* -fontset mbyte.txt /*fontset* -foreground() eval.txt /*foreground()* -fork os_unix.txt /*fork* -form.vim syntax.txt /*form.vim* -format-bullet-list tips.txt /*format-bullet-list* -format-comments change.txt /*format-comments* -formatting change.txt /*formatting* -formfeed intro.txt /*formfeed* -fortran.vim syntax.txt /*fortran.vim* -frombook usr_01.txt /*frombook* -ft-abel-syntax syntax.txt /*ft-abel-syntax* -ft-ada-commands ft_ada.txt /*ft-ada-commands* -ft-ada-constants ft_ada.txt /*ft-ada-constants* -ft-ada-functions ft_ada.txt /*ft-ada-functions* -ft-ada-indent ft_ada.txt /*ft-ada-indent* -ft-ada-omni ft_ada.txt /*ft-ada-omni* -ft-ada-options ft_ada.txt /*ft-ada-options* -ft-ada-plugin ft_ada.txt /*ft-ada-plugin* -ft-ada-syntax ft_ada.txt /*ft-ada-syntax* -ft-ada-variables ft_ada.txt /*ft-ada-variables* -ft-ant-syntax syntax.txt /*ft-ant-syntax* -ft-apache-syntax syntax.txt /*ft-apache-syntax* -ft-asm-syntax syntax.txt /*ft-asm-syntax* -ft-asm68k-syntax syntax.txt /*ft-asm68k-syntax* -ft-asmh8300-syntax syntax.txt /*ft-asmh8300-syntax* -ft-aspperl-syntax syntax.txt /*ft-aspperl-syntax* -ft-aspvbs-syntax syntax.txt /*ft-aspvbs-syntax* -ft-bash-syntax syntax.txt /*ft-bash-syntax* -ft-basic-syntax syntax.txt /*ft-basic-syntax* -ft-c-omni insert.txt /*ft-c-omni* -ft-c-syntax syntax.txt /*ft-c-syntax* -ft-ch-syntax syntax.txt /*ft-ch-syntax* -ft-changelog-plugin filetype.txt /*ft-changelog-plugin* -ft-changelog-syntax syntax.txt /*ft-changelog-syntax* -ft-chill-syntax syntax.txt /*ft-chill-syntax* -ft-cobol-syntax syntax.txt /*ft-cobol-syntax* -ft-coldfusion-syntax syntax.txt /*ft-coldfusion-syntax* -ft-csh-syntax syntax.txt /*ft-csh-syntax* -ft-css-omni insert.txt /*ft-css-omni* -ft-cweb-syntax syntax.txt /*ft-cweb-syntax* -ft-cynlib-syntax syntax.txt /*ft-cynlib-syntax* -ft-desktop-syntax syntax.txt /*ft-desktop-syntax* -ft-dircolors-syntax syntax.txt /*ft-dircolors-syntax* -ft-docbk-syntax syntax.txt /*ft-docbk-syntax* -ft-docbksgml-syntax syntax.txt /*ft-docbksgml-syntax* -ft-docbkxml-syntax syntax.txt /*ft-docbkxml-syntax* -ft-dosbatch-syntax syntax.txt /*ft-dosbatch-syntax* -ft-dtd-syntax syntax.txt /*ft-dtd-syntax* -ft-eiffel-syntax syntax.txt /*ft-eiffel-syntax* -ft-erlang-syntax syntax.txt /*ft-erlang-syntax* -ft-flexwiki-syntax syntax.txt /*ft-flexwiki-syntax* -ft-form-syntax syntax.txt /*ft-form-syntax* -ft-fortran-indent indent.txt /*ft-fortran-indent* -ft-fortran-plugin filetype.txt /*ft-fortran-plugin* -ft-fortran-syntax syntax.txt /*ft-fortran-syntax* -ft-fvwm-syntax syntax.txt /*ft-fvwm-syntax* -ft-gitcommit-plugin filetype.txt /*ft-gitcommit-plugin* -ft-groff-syntax syntax.txt /*ft-groff-syntax* -ft-gsp-syntax syntax.txt /*ft-gsp-syntax* -ft-haskell-syntax syntax.txt /*ft-haskell-syntax* -ft-html-omni insert.txt /*ft-html-omni* -ft-html-syntax syntax.txt /*ft-html-syntax* -ft-htmlos-syntax syntax.txt /*ft-htmlos-syntax* -ft-ia64-syntax syntax.txt /*ft-ia64-syntax* -ft-inform-syntax syntax.txt /*ft-inform-syntax* -ft-java-syntax syntax.txt /*ft-java-syntax* -ft-javascript-omni insert.txt /*ft-javascript-omni* -ft-ksh-syntax syntax.txt /*ft-ksh-syntax* -ft-lace-syntax syntax.txt /*ft-lace-syntax* -ft-lex-syntax syntax.txt /*ft-lex-syntax* -ft-lifelines-syntax syntax.txt /*ft-lifelines-syntax* -ft-lisp-syntax syntax.txt /*ft-lisp-syntax* -ft-lite-syntax syntax.txt /*ft-lite-syntax* -ft-lpc-syntax syntax.txt /*ft-lpc-syntax* -ft-lua-syntax syntax.txt /*ft-lua-syntax* -ft-mail-plugin filetype.txt /*ft-mail-plugin* -ft-mail.vim syntax.txt /*ft-mail.vim* -ft-make-syntax syntax.txt /*ft-make-syntax* -ft-man-plugin filetype.txt /*ft-man-plugin* -ft-maple-syntax syntax.txt /*ft-maple-syntax* -ft-masm-syntax syntax.txt /*ft-masm-syntax* -ft-mathematica-syntax syntax.txt /*ft-mathematica-syntax* -ft-mma-syntax syntax.txt /*ft-mma-syntax* -ft-moo-syntax syntax.txt /*ft-moo-syntax* -ft-msql-syntax syntax.txt /*ft-msql-syntax* -ft-nasm-syntax syntax.txt /*ft-nasm-syntax* -ft-ncf-syntax syntax.txt /*ft-ncf-syntax* -ft-nroff-syntax syntax.txt /*ft-nroff-syntax* -ft-ocaml-syntax syntax.txt /*ft-ocaml-syntax* -ft-papp-syntax syntax.txt /*ft-papp-syntax* -ft-pascal-syntax syntax.txt /*ft-pascal-syntax* -ft-pdf-plugin filetype.txt /*ft-pdf-plugin* -ft-perl-syntax syntax.txt /*ft-perl-syntax* -ft-php-indent indent.txt /*ft-php-indent* -ft-php-omni insert.txt /*ft-php-omni* -ft-php-syntax syntax.txt /*ft-php-syntax* -ft-php3-syntax syntax.txt /*ft-php3-syntax* -ft-phtml-syntax syntax.txt /*ft-phtml-syntax* -ft-plaintex-syntax syntax.txt /*ft-plaintex-syntax* -ft-postscr-syntax syntax.txt /*ft-postscr-syntax* -ft-ppwiz-syntax syntax.txt /*ft-ppwiz-syntax* -ft-printcap-syntax syntax.txt /*ft-printcap-syntax* -ft-progress-syntax syntax.txt /*ft-progress-syntax* -ft-ptcap-syntax syntax.txt /*ft-ptcap-syntax* -ft-python-indent indent.txt /*ft-python-indent* -ft-python-syntax syntax.txt /*ft-python-syntax* -ft-quake-syntax syntax.txt /*ft-quake-syntax* -ft-readline-syntax syntax.txt /*ft-readline-syntax* -ft-rexx-syntax syntax.txt /*ft-rexx-syntax* -ft-ruby-omni insert.txt /*ft-ruby-omni* -ft-ruby-syntax syntax.txt /*ft-ruby-syntax* -ft-scheme-syntax syntax.txt /*ft-scheme-syntax* -ft-sdl-syntax syntax.txt /*ft-sdl-syntax* -ft-sed-syntax syntax.txt /*ft-sed-syntax* -ft-sgml-syntax syntax.txt /*ft-sgml-syntax* -ft-sh-indent indent.txt /*ft-sh-indent* -ft-sh-syntax syntax.txt /*ft-sh-syntax* -ft-spec-plugin filetype.txt /*ft-spec-plugin* -ft-spup-syntax syntax.txt /*ft-spup-syntax* -ft-sql filetype.txt /*ft-sql* -ft-sql-omni insert.txt /*ft-sql-omni* -ft-sql-syntax syntax.txt /*ft-sql-syntax* -ft-sqlanywhere-syntax syntax.txt /*ft-sqlanywhere-syntax* -ft-sqlinformix-syntax syntax.txt /*ft-sqlinformix-syntax* -ft-syntax-omni insert.txt /*ft-syntax-omni* -ft-tcsh-syntax syntax.txt /*ft-tcsh-syntax* -ft-termcap-syntax syntax.txt /*ft-termcap-syntax* -ft-tex-plugin filetype.txt /*ft-tex-plugin* -ft-tex-syntax syntax.txt /*ft-tex-syntax* -ft-tf-syntax syntax.txt /*ft-tf-syntax* -ft-vb-syntax syntax.txt /*ft-vb-syntax* -ft-verilog-indent indent.txt /*ft-verilog-indent* -ft-vhdl-indent indent.txt /*ft-vhdl-indent* -ft-vim-indent indent.txt /*ft-vim-indent* -ft-vim-syntax syntax.txt /*ft-vim-syntax* -ft-xf86conf-syntax syntax.txt /*ft-xf86conf-syntax* -ft-xhtml-omni insert.txt /*ft-xhtml-omni* -ft-xml-omni insert.txt /*ft-xml-omni* -ft-xml-syntax syntax.txt /*ft-xml-syntax* -ft-xpm-syntax syntax.txt /*ft-xpm-syntax* -ft_ada.txt ft_ada.txt /*ft_ada.txt* -ft_sql.txt ft_sql.txt /*ft_sql.txt* -ftdetect filetype.txt /*ftdetect* -ftp pi_netrw.txt /*ftp* -ftplugin usr_41.txt /*ftplugin* -ftplugin-docs filetype.txt /*ftplugin-docs* -ftplugin-name usr_05.txt /*ftplugin-name* -ftplugin-overrule filetype.txt /*ftplugin-overrule* -ftplugin-special usr_41.txt /*ftplugin-special* -ftplugins usr_05.txt /*ftplugins* -function() eval.txt /*function()* -function-argument eval.txt /*function-argument* -function-key intro.txt /*function-key* -function-list usr_41.txt /*function-list* -function-range-example eval.txt /*function-range-example* -function-search-undo eval.txt /*function-search-undo* -function_key intro.txt /*function_key* -functions eval.txt /*functions* -fvwm.vim syntax.txt /*fvwm.vim* -fvwm2rc syntax.txt /*fvwm2rc* -fvwmrc syntax.txt /*fvwmrc* -g index.txt /*g* -g# pattern.txt /*g#* -g$ motion.txt /*g$* -g& change.txt /*g&* -g' motion.txt /*g'* -g'a motion.txt /*g'a* -g+ undo.txt /*g+* -g, motion.txt /*g,* -g- undo.txt /*g-* -g0 motion.txt /*g0* -g8 various.txt /*g8* -g:NetrwTopLvlMenu pi_netrw.txt /*g:NetrwTopLvlMenu* -g:Netrw_funcref pi_netrw.txt /*g:Netrw_funcref* -g:ada#Comment ft_ada.txt /*g:ada#Comment* -g:ada#Ctags_Kinds ft_ada.txt /*g:ada#Ctags_Kinds* -g:ada#DotWordRegex ft_ada.txt /*g:ada#DotWordRegex* -g:ada#Keywords ft_ada.txt /*g:ada#Keywords* -g:ada#WordRegex ft_ada.txt /*g:ada#WordRegex* -g:ada_abbrev ft_ada.txt /*g:ada_abbrev* -g:ada_all_tab_usage ft_ada.txt /*g:ada_all_tab_usage* -g:ada_begin_preproc ft_ada.txt /*g:ada_begin_preproc* -g:ada_default_compiler ft_ada.txt /*g:ada_default_compiler* -g:ada_extended_completion ft_ada.txt /*g:ada_extended_completion* -g:ada_extended_tagging ft_ada.txt /*g:ada_extended_tagging* -g:ada_folding ft_ada.txt /*g:ada_folding* -g:ada_gnat_extensions ft_ada.txt /*g:ada_gnat_extensions* -g:ada_line_errors ft_ada.txt /*g:ada_line_errors* -g:ada_no_tab_space_error ft_ada.txt /*g:ada_no_tab_space_error* -g:ada_no_trail_space_error ft_ada.txt /*g:ada_no_trail_space_error* -g:ada_omni_with_keywords ft_ada.txt /*g:ada_omni_with_keywords* -g:ada_rainbow_color ft_ada.txt /*g:ada_rainbow_color* -g:ada_space_errors ft_ada.txt /*g:ada_space_errors* -g:ada_standard_types ft_ada.txt /*g:ada_standard_types* -g:ada_with_gnat_project_files ft_ada.txt /*g:ada_with_gnat_project_files* -g:ada_withuse_ordinary ft_ada.txt /*g:ada_withuse_ordinary* -g:colors_name options.txt /*g:colors_name* -g:decada ft_ada.txt /*g:decada* -g:decada.Error_Format ft_ada.txt /*g:decada.Error_Format* -g:decada.Make() ft_ada.txt /*g:decada.Make()* -g:decada.Make_Command ft_ada.txt /*g:decada.Make_Command* -g:decada.Unit_Name() ft_ada.txt /*g:decada.Unit_Name()* -g:gnat ft_ada.txt /*g:gnat* -g:gnat.Error_Format ft_ada.txt /*g:gnat.Error_Format* -g:gnat.Find() ft_ada.txt /*g:gnat.Find()* -g:gnat.Find_Program ft_ada.txt /*g:gnat.Find_Program* -g:gnat.Make() ft_ada.txt /*g:gnat.Make()* -g:gnat.Make_Command ft_ada.txt /*g:gnat.Make_Command* -g:gnat.Pretty() ft_ada.txt /*g:gnat.Pretty()* -g:gnat.Pretty_Program ft_ada.txt /*g:gnat.Pretty_Program* -g:gnat.Project_File ft_ada.txt /*g:gnat.Project_File* -g:gnat.Set_Project_File() ft_ada.txt /*g:gnat.Set_Project_File()* -g:gnat.Tags() ft_ada.txt /*g:gnat.Tags()* -g:gnat.Tags_Command ft_ada.txt /*g:gnat.Tags_Command* -g:netrw_alto pi_netrw.txt /*g:netrw_alto* -g:netrw_altv pi_netrw.txt /*g:netrw_altv* -g:netrw_banner pi_netrw.txt /*g:netrw_banner* -g:netrw_browse_split pi_netrw.txt /*g:netrw_browse_split* -g:netrw_browsex_viewer pi_netrw.txt /*g:netrw_browsex_viewer* -g:netrw_bufsettings pi_netrw.txt /*g:netrw_bufsettings* -g:netrw_chgperm pi_netrw.txt /*g:netrw_chgperm* -g:netrw_chgwin pi_netrw.txt /*g:netrw_chgwin* -g:netrw_compress pi_netrw.txt /*g:netrw_compress* -g:netrw_ctags pi_netrw.txt /*g:netrw_ctags* -g:netrw_cursorline pi_netrw.txt /*g:netrw_cursorline* -g:netrw_cygwin pi_netrw.txt /*g:netrw_cygwin* -g:netrw_dav_cmd pi_netrw.txt /*g:netrw_dav_cmd* -g:netrw_decompress pi_netrw.txt /*g:netrw_decompress* -g:netrw_fastbrowse pi_netrw.txt /*g:netrw_fastbrowse* -g:netrw_fetch_cmd pi_netrw.txt /*g:netrw_fetch_cmd* -g:netrw_fname_escape pi_netrw.txt /*g:netrw_fname_escape* -g:netrw_ftp pi_netrw.txt /*g:netrw_ftp* -g:netrw_ftp_browse_reject pi_netrw.txt /*g:netrw_ftp_browse_reject* -g:netrw_ftp_cmd pi_netrw.txt /*g:netrw_ftp_cmd* -g:netrw_ftp_list_cmd pi_netrw.txt /*g:netrw_ftp_list_cmd* -g:netrw_ftp_sizelist_cmd pi_netrw.txt /*g:netrw_ftp_sizelist_cmd* -g:netrw_ftp_timelist_cmd pi_netrw.txt /*g:netrw_ftp_timelist_cmd* -g:netrw_ftpextracmd pi_netrw.txt /*g:netrw_ftpextracmd* -g:netrw_ftpmode pi_netrw.txt /*g:netrw_ftpmode* -g:netrw_glob_escape pi_netrw.txt /*g:netrw_glob_escape* -g:netrw_hide pi_netrw.txt /*g:netrw_hide* -g:netrw_home pi_netrw.txt /*g:netrw_home* -g:netrw_http_cmd pi_netrw.txt /*g:netrw_http_cmd* -g:netrw_http_xcmd pi_netrw.txt /*g:netrw_http_xcmd* -g:netrw_ignorenetrc pi_netrw.txt /*g:netrw_ignorenetrc* -g:netrw_keepdir pi_netrw.txt /*g:netrw_keepdir* -g:netrw_list_cmd pi_netrw.txt /*g:netrw_list_cmd* -g:netrw_list_hide pi_netrw.txt /*g:netrw_list_hide* -g:netrw_liststyle pi_netrw.txt /*g:netrw_liststyle* -g:netrw_local_mkdir pi_netrw.txt /*g:netrw_local_mkdir* -g:netrw_local_rmdir pi_netrw.txt /*g:netrw_local_rmdir* -g:netrw_localcopycmd pi_netrw.txt /*g:netrw_localcopycmd* -g:netrw_localmovecmd pi_netrw.txt /*g:netrw_localmovecmd* -g:netrw_maxfilenamelen pi_netrw.txt /*g:netrw_maxfilenamelen* -g:netrw_menu pi_netrw.txt /*g:netrw_menu* -g:netrw_mkdir_cmd pi_netrw.txt /*g:netrw_mkdir_cmd* -g:netrw_mousemaps pi_netrw.txt /*g:netrw_mousemaps* -g:netrw_nogx pi_netrw.txt /*g:netrw_nogx* -g:netrw_preview pi_netrw.txt /*g:netrw_preview* -g:netrw_rcp_cmd pi_netrw.txt /*g:netrw_rcp_cmd* -g:netrw_retmap pi_netrw.txt /*g:netrw_retmap* -g:netrw_rm_cmd pi_netrw.txt /*g:netrw_rm_cmd* -g:netrw_rmdir_cmd pi_netrw.txt /*g:netrw_rmdir_cmd* -g:netrw_rmf_cmd pi_netrw.txt /*g:netrw_rmf_cmd* -g:netrw_rsync_cmd pi_netrw.txt /*g:netrw_rsync_cmd* -g:netrw_scp_cmd pi_netrw.txt /*g:netrw_scp_cmd* -g:netrw_scpport pi_netrw.txt /*g:netrw_scpport* -g:netrw_sepchr pi_netrw.txt /*g:netrw_sepchr* -g:netrw_sftp_cmd pi_netrw.txt /*g:netrw_sftp_cmd* -g:netrw_silent pi_netrw.txt /*g:netrw_silent* -g:netrw_sort_by pi_netrw.txt /*g:netrw_sort_by* -g:netrw_sort_direction pi_netrw.txt /*g:netrw_sort_direction* -g:netrw_sort_options pi_netrw.txt /*g:netrw_sort_options* -g:netrw_sort_sequence pi_netrw.txt /*g:netrw_sort_sequence* -g:netrw_special_syntax pi_netrw.txt /*g:netrw_special_syntax* -g:netrw_ssh_browse_reject pi_netrw.txt /*g:netrw_ssh_browse_reject* -g:netrw_ssh_cmd pi_netrw.txt /*g:netrw_ssh_cmd* -g:netrw_sshport pi_netrw.txt /*g:netrw_sshport* -g:netrw_timefmt pi_netrw.txt /*g:netrw_timefmt* -g:netrw_tmpfile_escape pi_netrw.txt /*g:netrw_tmpfile_escape* -g:netrw_uid pi_netrw.txt /*g:netrw_uid* -g:netrw_use_errorwindow pi_netrw.txt /*g:netrw_use_errorwindow* -g:netrw_use_noswf pi_netrw.txt /*g:netrw_use_noswf* -g:netrw_use_nt_rcp pi_netrw.txt /*g:netrw_use_nt_rcp* -g:netrw_win95ftp pi_netrw.txt /*g:netrw_win95ftp* -g:netrw_winsize pi_netrw.txt /*g:netrw_winsize* -g:netrw_xstrlen pi_netrw.txt /*g:netrw_xstrlen* -g:syntax_on syntax.txt /*g:syntax_on* -g:tar_browseoptions pi_tar.txt /*g:tar_browseoptions* -g:tar_cmd pi_tar.txt /*g:tar_cmd* -g:tar_copycmd pi_tar.txt /*g:tar_copycmd* -g:tar_extractcmd pi_tar.txt /*g:tar_extractcmd* -g:tar_nomax pi_tar.txt /*g:tar_nomax* -g:tar_readoptions pi_tar.txt /*g:tar_readoptions* -g:tar_secure pi_tar.txt /*g:tar_secure* -g:tar_writeoptions pi_tar.txt /*g:tar_writeoptions* -g:tex_conceal syntax.txt /*g:tex_conceal* -g:var eval.txt /*g:var* -g:vimball_home pi_vimball.txt /*g:vimball_home* -g:vimball_mkdir pi_vimball.txt /*g:vimball_mkdir* -g:vimsyn_embed syntax.txt /*g:vimsyn_embed* -g:vimsyn_folding syntax.txt /*g:vimsyn_folding* -g:vimsyn_maxlines syntax.txt /*g:vimsyn_maxlines* -g:vimsyn_minlines syntax.txt /*g:vimsyn_minlines* -g:vimsyn_noerror syntax.txt /*g:vimsyn_noerror* -g:zip_nomax pi_zip.txt /*g:zip_nomax* -g:zip_shq pi_zip.txt /*g:zip_shq* -g:zip_unzipcmd pi_zip.txt /*g:zip_unzipcmd* -g:zip_zipcmd pi_zip.txt /*g:zip_zipcmd* -g; motion.txt /*g;* -g< message.txt /*g<* -g<Down> motion.txt /*g<Down>* -g<End> motion.txt /*g<End>* -g<Home> motion.txt /*g<Home>* -g<LeftMouse> tagsrch.txt /*g<LeftMouse>* -g<RightMouse> tagsrch.txt /*g<RightMouse>* -g<Up> motion.txt /*g<Up>* -g? change.txt /*g?* -g?? change.txt /*g??* -g?g? change.txt /*g?g?* -g@ map.txt /*g@* -gD pattern.txt /*gD* -gE motion.txt /*gE* -gF editing.txt /*gF* -gH visual.txt /*gH* -gI insert.txt /*gI* -gJ change.txt /*gJ* -gP change.txt /*gP* -gQ intro.txt /*gQ* -gR change.txt /*gR* -gT tabpage.txt /*gT* -gU change.txt /*gU* -gUU change.txt /*gUU* -gUgU change.txt /*gUgU* -gV visual.txt /*gV* -g] tagsrch.txt /*g]* -g^ motion.txt /*g^* -g_ motion.txt /*g_* -g_CTRL-A various.txt /*g_CTRL-A* -g_CTRL-G editing.txt /*g_CTRL-G* -g_CTRL-H visual.txt /*g_CTRL-H* -g_CTRL-] tagsrch.txt /*g_CTRL-]* -g` motion.txt /*g`* -g`a motion.txt /*g`a* -ga various.txt /*ga* -garbagecollect() eval.txt /*garbagecollect()* -gd pattern.txt /*gd* -ge motion.txt /*ge* -get() eval.txt /*get()* -get-ms-debuggers debug.txt /*get-ms-debuggers* -getbufline() eval.txt /*getbufline()* -getbufvar() eval.txt /*getbufvar()* -getchar() eval.txt /*getchar()* -getcharmod() eval.txt /*getcharmod()* -getcmdline() eval.txt /*getcmdline()* -getcmdpos() eval.txt /*getcmdpos()* -getcmdtype() eval.txt /*getcmdtype()* -getcwd() eval.txt /*getcwd()* -getfontname() eval.txt /*getfontname()* -getfperm() eval.txt /*getfperm()* -getfsize() eval.txt /*getfsize()* -getftime() eval.txt /*getftime()* -getftype() eval.txt /*getftype()* -getlatestvimscripts-install pi_getscript.txt /*getlatestvimscripts-install* -getline() eval.txt /*getline()* -getloclist() eval.txt /*getloclist()* -getmatches() eval.txt /*getmatches()* -getpid() eval.txt /*getpid()* -getpos() eval.txt /*getpos()* -getqflist() eval.txt /*getqflist()* -getreg() eval.txt /*getreg()* -getregtype() eval.txt /*getregtype()* -getscript pi_getscript.txt /*getscript* -getscript-autoinstall pi_getscript.txt /*getscript-autoinstall* -getscript-data pi_getscript.txt /*getscript-data* -getscript-history pi_getscript.txt /*getscript-history* -getscript-plugins pi_getscript.txt /*getscript-plugins* -getscript-start pi_getscript.txt /*getscript-start* -gettabvar() eval.txt /*gettabvar()* -gettabwinvar() eval.txt /*gettabwinvar()* -getwinposx() eval.txt /*getwinposx()* -getwinposy() eval.txt /*getwinposy()* -getwinvar() eval.txt /*getwinvar()* -gex starting.txt /*gex* -gf editing.txt /*gf* -gg motion.txt /*gg* -gh visual.txt /*gh* -gi insert.txt /*gi* -gj motion.txt /*gj* -gk motion.txt /*gk* -glob() eval.txt /*glob()* -global-ime mbyte.txt /*global-ime* -global-local options.txt /*global-local* -global-variable eval.txt /*global-variable* -global_markfilelist pi_netrw.txt /*global_markfilelist* -globpath() eval.txt /*globpath()* -glvs pi_getscript.txt /*glvs* -glvs-alg pi_getscript.txt /*glvs-alg* -glvs-algorithm pi_getscript.txt /*glvs-algorithm* -glvs-autoinstall pi_getscript.txt /*glvs-autoinstall* -glvs-contents pi_getscript.txt /*glvs-contents* -glvs-copyright pi_getscript.txt /*glvs-copyright* -glvs-data pi_getscript.txt /*glvs-data* -glvs-dist-install pi_getscript.txt /*glvs-dist-install* -glvs-hist pi_getscript.txt /*glvs-hist* -glvs-install pi_getscript.txt /*glvs-install* -glvs-options pi_getscript.txt /*glvs-options* -glvs-plugins pi_getscript.txt /*glvs-plugins* -glvs-usage pi_getscript.txt /*glvs-usage* -gm motion.txt /*gm* -gnat#Insert_Tags_Header() ft_ada.txt /*gnat#Insert_Tags_Header()* -gnat#New() ft_ada.txt /*gnat#New()* -gnat-xref ft_ada.txt /*gnat-xref* -gnat_members ft_ada.txt /*gnat_members* -gnome-session gui_x11.txt /*gnome-session* -go motion.txt /*go* -gp change.txt /*gp* -gpm-mouse term.txt /*gpm-mouse* -gq change.txt /*gq* -gqap change.txt /*gqap* -gqgq change.txt /*gqgq* -gqq change.txt /*gqq* -gr change.txt /*gr* -graphic-option-gone version4.txt /*graphic-option-gone* -greek options.txt /*greek* -grep quickfix.txt /*grep* -groff.vim syntax.txt /*groff.vim* -group-name syntax.txt /*group-name* -gs various.txt /*gs* -gsp.vim syntax.txt /*gsp.vim* -gstar pattern.txt /*gstar* -gt tabpage.txt /*gt* -gtk-tooltip-colors gui_x11.txt /*gtk-tooltip-colors* -gu change.txt /*gu* -gugu change.txt /*gugu* -gui gui.txt /*gui* -gui-clipboard gui_w32.txt /*gui-clipboard* -gui-colors syntax.txt /*gui-colors* -gui-extras gui.txt /*gui-extras* -gui-footer debugger.txt /*gui-footer* -gui-fork gui_x11.txt /*gui-fork* -gui-functions usr_41.txt /*gui-functions* -gui-gnome gui_x11.txt /*gui-gnome* -gui-gnome-session gui_x11.txt /*gui-gnome-session* -gui-gtk gui_x11.txt /*gui-gtk* -gui-gtk-socketid gui_x11.txt /*gui-gtk-socketid* -gui-horiz-scroll gui.txt /*gui-horiz-scroll* -gui-init gui.txt /*gui-init* -gui-kde gui_x11.txt /*gui-kde* -gui-mouse gui.txt /*gui-mouse* -gui-mouse-focus gui.txt /*gui-mouse-focus* -gui-mouse-mapping gui.txt /*gui-mouse-mapping* -gui-mouse-modeless gui.txt /*gui-mouse-modeless* -gui-mouse-move gui.txt /*gui-mouse-move* -gui-mouse-select gui.txt /*gui-mouse-select* -gui-mouse-status gui.txt /*gui-mouse-status* -gui-mouse-various gui.txt /*gui-mouse-various* -gui-pty gui_x11.txt /*gui-pty* -gui-pty-erase gui_x11.txt /*gui-pty-erase* -gui-resources gui_x11.txt /*gui-resources* -gui-scrollbars gui.txt /*gui-scrollbars* -gui-selections gui.txt /*gui-selections* -gui-shell gui.txt /*gui-shell* -gui-shell-win32 gui_w32.txt /*gui-shell-win32* -gui-start gui.txt /*gui-start* -gui-toolbar gui.txt /*gui-toolbar* -gui-vert-scroll gui.txt /*gui-vert-scroll* -gui-w16 gui_w16.txt /*gui-w16* -gui-w32 gui_w32.txt /*gui-w32* -gui-w32-cmdargs gui_w32.txt /*gui-w32-cmdargs* -gui-w32-dialogs gui_w32.txt /*gui-w32-dialogs* -gui-w32-printing gui_w32.txt /*gui-w32-printing* -gui-w32-start gui_w32.txt /*gui-w32-start* -gui-w32-various gui_w32.txt /*gui-w32-various* -gui-w32-windowid gui_w32.txt /*gui-w32-windowid* -gui-w32s gui_w32.txt /*gui-w32s* -gui-win32-maximized gui_w32.txt /*gui-win32-maximized* -gui-x11 gui_x11.txt /*gui-x11* -gui-x11-athena gui_x11.txt /*gui-x11-athena* -gui-x11-compiling gui_x11.txt /*gui-x11-compiling* -gui-x11-gtk gui_x11.txt /*gui-x11-gtk* -gui-x11-kde gui_x11.txt /*gui-x11-kde* -gui-x11-misc gui_x11.txt /*gui-x11-misc* -gui-x11-motif gui_x11.txt /*gui-x11-motif* -gui-x11-neXtaw gui_x11.txt /*gui-x11-neXtaw* -gui-x11-printing gui_x11.txt /*gui-x11-printing* -gui-x11-start gui_x11.txt /*gui-x11-start* -gui-x11-various gui_x11.txt /*gui-x11-various* -gui.txt gui.txt /*gui.txt* -gui_w16.txt gui_w16.txt /*gui_w16.txt* -gui_w32.txt gui_w32.txt /*gui_w32.txt* -gui_x11.txt gui_x11.txt /*gui_x11.txt* -guifontwide_gtk2 options.txt /*guifontwide_gtk2* -guioptions_a options.txt /*guioptions_a* -guu change.txt /*guu* -gv visual.txt /*gv* -gview starting.txt /*gview* -gvim starting.txt /*gvim* -gvimdiff diff.txt /*gvimdiff* -gvimrc gui.txt /*gvimrc* -gw change.txt /*gw* -gwgw change.txt /*gwgw* -gww change.txt /*gww* -gzip pi_gzip.txt /*gzip* -gzip-autocmd pi_gzip.txt /*gzip-autocmd* -gzip-example autocmd.txt /*gzip-example* -gzip-helpfile tips.txt /*gzip-helpfile* -g~ change.txt /*g~* -g~g~ change.txt /*g~g~* -g~~ change.txt /*g~~* -h motion.txt /*h* -hangul hangulin.txt /*hangul* -hangulin.txt hangulin.txt /*hangulin.txt* -has() eval.txt /*has()* -has-patch eval.txt /*has-patch* -has_key() eval.txt /*has_key()* -haskell.vim syntax.txt /*haskell.vim* -haslocaldir() eval.txt /*haslocaldir()* -hasmapto() eval.txt /*hasmapto()* -hebrew hebrew.txt /*hebrew* -hebrew.txt hebrew.txt /*hebrew.txt* -help helphelp.txt /*help* -help-context help.txt /*help-context* -help-summary usr_02.txt /*help-summary* -help-tags tags 1 -help-translated helphelp.txt /*help-translated* -help-writing helphelp.txt /*help-writing* -help-xterm-window helphelp.txt /*help-xterm-window* -help.txt help.txt /*help.txt* -helpfile_name.txt helphelp.txt /*helpfile_name.txt* -helphelp helphelp.txt /*helphelp* -helphelp.txt helphelp.txt /*helphelp.txt* -hex-editing tips.txt /*hex-editing* -hidden-buffer windows.txt /*hidden-buffer* -hidden-changed version5.txt /*hidden-changed* -hidden-menus gui.txt /*hidden-menus* -hidden-options options.txt /*hidden-options* -hidden-quit windows.txt /*hidden-quit* -highlight-args syntax.txt /*highlight-args* -highlight-changed version4.txt /*highlight-changed* -highlight-cterm syntax.txt /*highlight-cterm* -highlight-ctermbg syntax.txt /*highlight-ctermbg* -highlight-ctermfg syntax.txt /*highlight-ctermfg* -highlight-default syntax.txt /*highlight-default* -highlight-font syntax.txt /*highlight-font* -highlight-groups syntax.txt /*highlight-groups* -highlight-gui syntax.txt /*highlight-gui* -highlight-guibg syntax.txt /*highlight-guibg* -highlight-guifg syntax.txt /*highlight-guifg* -highlight-guisp syntax.txt /*highlight-guisp* -highlight-start syntax.txt /*highlight-start* -highlight-stop syntax.txt /*highlight-stop* -highlight-term syntax.txt /*highlight-term* -highlightID() eval.txt /*highlightID()* -highlight_exists() eval.txt /*highlight_exists()* -highlighting-functions usr_41.txt /*highlighting-functions* -hist-names eval.txt /*hist-names* -histadd() eval.txt /*histadd()* -histdel() eval.txt /*histdel()* -histget() eval.txt /*histget()* -histnr() eval.txt /*histnr()* -history cmdline.txt /*history* -history-functions usr_41.txt /*history-functions* -hit-enter message.txt /*hit-enter* -hit-enter-prompt message.txt /*hit-enter-prompt* -hit-return message.txt /*hit-return* -hitest.vim syntax.txt /*hitest.vim* -hjkl usr_02.txt /*hjkl* -hl-ColorColumn syntax.txt /*hl-ColorColumn* -hl-Conceal syntax.txt /*hl-Conceal* -hl-Cursor syntax.txt /*hl-Cursor* -hl-CursorColumn syntax.txt /*hl-CursorColumn* -hl-CursorIM syntax.txt /*hl-CursorIM* -hl-CursorLine syntax.txt /*hl-CursorLine* -hl-DiffAdd syntax.txt /*hl-DiffAdd* -hl-DiffChange syntax.txt /*hl-DiffChange* -hl-DiffDelete syntax.txt /*hl-DiffDelete* -hl-DiffText syntax.txt /*hl-DiffText* -hl-Directory syntax.txt /*hl-Directory* -hl-ErrorMsg syntax.txt /*hl-ErrorMsg* -hl-FoldColumn syntax.txt /*hl-FoldColumn* -hl-Folded syntax.txt /*hl-Folded* -hl-Ignore syntax.txt /*hl-Ignore* -hl-IncSearch syntax.txt /*hl-IncSearch* -hl-LineNr syntax.txt /*hl-LineNr* -hl-MatchParen syntax.txt /*hl-MatchParen* -hl-Menu syntax.txt /*hl-Menu* -hl-ModeMsg syntax.txt /*hl-ModeMsg* -hl-MoreMsg syntax.txt /*hl-MoreMsg* -hl-NonText syntax.txt /*hl-NonText* -hl-Normal syntax.txt /*hl-Normal* -hl-Pmenu syntax.txt /*hl-Pmenu* -hl-PmenuSbar syntax.txt /*hl-PmenuSbar* -hl-PmenuSel syntax.txt /*hl-PmenuSel* -hl-PmenuThumb syntax.txt /*hl-PmenuThumb* -hl-Question syntax.txt /*hl-Question* -hl-Scrollbar syntax.txt /*hl-Scrollbar* -hl-Search syntax.txt /*hl-Search* -hl-SignColumn syntax.txt /*hl-SignColumn* -hl-SpecialKey syntax.txt /*hl-SpecialKey* -hl-SpellBad syntax.txt /*hl-SpellBad* -hl-SpellCap syntax.txt /*hl-SpellCap* -hl-SpellLocal syntax.txt /*hl-SpellLocal* -hl-SpellRare syntax.txt /*hl-SpellRare* -hl-StatusLine syntax.txt /*hl-StatusLine* -hl-StatusLineNC syntax.txt /*hl-StatusLineNC* -hl-TabLine syntax.txt /*hl-TabLine* -hl-TabLineFill syntax.txt /*hl-TabLineFill* -hl-TabLineSel syntax.txt /*hl-TabLineSel* -hl-Title syntax.txt /*hl-Title* -hl-Tooltip syntax.txt /*hl-Tooltip* -hl-User1 syntax.txt /*hl-User1* -hl-User1..9 syntax.txt /*hl-User1..9* -hl-User9 syntax.txt /*hl-User9* -hl-VertSplit syntax.txt /*hl-VertSplit* -hl-Visual syntax.txt /*hl-Visual* -hl-VisualNOS syntax.txt /*hl-VisualNOS* -hl-WarningMsg syntax.txt /*hl-WarningMsg* -hl-WildMenu syntax.txt /*hl-WildMenu* -hlID() eval.txt /*hlID()* -hlexists() eval.txt /*hlexists()* -holy-grail index.txt /*holy-grail* -home intro.txt /*home* -home-replace editing.txt /*home-replace* -hostname() eval.txt /*hostname()* -how-do-i howto.txt /*how-do-i* -how-to howto.txt /*how-to* -howdoi howto.txt /*howdoi* -howto howto.txt /*howto* -howto.txt howto.txt /*howto.txt* -hpterm term.txt /*hpterm* -hpterm-color syntax.txt /*hpterm-color* -html-flavor insert.txt /*html-flavor* -html.vim syntax.txt /*html.vim* -htmlos.vim syntax.txt /*htmlos.vim* -http pi_netrw.txt /*http* -i insert.txt /*i* -i' motion.txt /*i'* -i( motion.txt /*i(* -i) motion.txt /*i)* -i< motion.txt /*i<* -i> motion.txt /*i>* -iB motion.txt /*iB* -iW motion.txt /*iW* -i[ motion.txt /*i[* -i] motion.txt /*i]* -i_0_CTRL-D insert.txt /*i_0_CTRL-D* -i_<BS> insert.txt /*i_<BS>* -i_<C-End> insert.txt /*i_<C-End>* -i_<C-Home> insert.txt /*i_<C-Home>* -i_<C-Left> insert.txt /*i_<C-Left>* -i_<C-PageDown> tabpage.txt /*i_<C-PageDown>* -i_<C-PageUp> tabpage.txt /*i_<C-PageUp>* -i_<C-Right> insert.txt /*i_<C-Right>* -i_<CR> insert.txt /*i_<CR>* -i_<Del> insert.txt /*i_<Del>* -i_<Down> insert.txt /*i_<Down>* -i_<End> insert.txt /*i_<End>* -i_<Esc> insert.txt /*i_<Esc>* -i_<F1> helphelp.txt /*i_<F1>* -i_<Help> helphelp.txt /*i_<Help>* -i_<Home> insert.txt /*i_<Home>* -i_<Insert> insert.txt /*i_<Insert>* -i_<Left> insert.txt /*i_<Left>* -i_<LeftMouse> insert.txt /*i_<LeftMouse>* -i_<NL> insert.txt /*i_<NL>* -i_<PageDown> insert.txt /*i_<PageDown>* -i_<PageUp> insert.txt /*i_<PageUp>* -i_<Right> insert.txt /*i_<Right>* -i_<S-Down> insert.txt /*i_<S-Down>* -i_<S-Left> insert.txt /*i_<S-Left>* -i_<S-Right> insert.txt /*i_<S-Right>* -i_<S-ScrollWheelDown> insert.txt /*i_<S-ScrollWheelDown>* -i_<S-ScrollWheelLeft> insert.txt /*i_<S-ScrollWheelLeft>* -i_<S-ScrollWheelRight> insert.txt /*i_<S-ScrollWheelRight>* -i_<S-ScrollWheelUp> insert.txt /*i_<S-ScrollWheelUp>* -i_<S-Up> insert.txt /*i_<S-Up>* -i_<ScrollWheelDown> insert.txt /*i_<ScrollWheelDown>* -i_<ScrollWheelLeft> insert.txt /*i_<ScrollWheelLeft>* -i_<ScrollWheelRight> insert.txt /*i_<ScrollWheelRight>* -i_<ScrollWheelUp> insert.txt /*i_<ScrollWheelUp>* -i_<Tab> insert.txt /*i_<Tab>* -i_<Up> insert.txt /*i_<Up>* -i_BS insert.txt /*i_BS* -i_CTRL-<PageDown> tabpage.txt /*i_CTRL-<PageDown>* -i_CTRL-<PageUp> tabpage.txt /*i_CTRL-<PageUp>* -i_CTRL-@ insert.txt /*i_CTRL-@* -i_CTRL-A insert.txt /*i_CTRL-A* -i_CTRL-B-gone version5.txt /*i_CTRL-B-gone* -i_CTRL-C insert.txt /*i_CTRL-C* -i_CTRL-D insert.txt /*i_CTRL-D* -i_CTRL-E insert.txt /*i_CTRL-E* -i_CTRL-F indent.txt /*i_CTRL-F* -i_CTRL-G_<Down> insert.txt /*i_CTRL-G_<Down>* -i_CTRL-G_<Up> insert.txt /*i_CTRL-G_<Up>* -i_CTRL-G_CTRL-J insert.txt /*i_CTRL-G_CTRL-J* -i_CTRL-G_CTRL-K insert.txt /*i_CTRL-G_CTRL-K* -i_CTRL-G_j insert.txt /*i_CTRL-G_j* -i_CTRL-G_k insert.txt /*i_CTRL-G_k* -i_CTRL-G_u insert.txt /*i_CTRL-G_u* -i_CTRL-H insert.txt /*i_CTRL-H* -i_CTRL-I insert.txt /*i_CTRL-I* -i_CTRL-J insert.txt /*i_CTRL-J* -i_CTRL-K insert.txt /*i_CTRL-K* -i_CTRL-L insert.txt /*i_CTRL-L* -i_CTRL-M insert.txt /*i_CTRL-M* -i_CTRL-N insert.txt /*i_CTRL-N* -i_CTRL-O insert.txt /*i_CTRL-O* -i_CTRL-P insert.txt /*i_CTRL-P* -i_CTRL-Q insert.txt /*i_CTRL-Q* -i_CTRL-R insert.txt /*i_CTRL-R* -i_CTRL-R_= insert.txt /*i_CTRL-R_=* -i_CTRL-R_CTRL-O insert.txt /*i_CTRL-R_CTRL-O* -i_CTRL-R_CTRL-P insert.txt /*i_CTRL-R_CTRL-P* -i_CTRL-R_CTRL-R insert.txt /*i_CTRL-R_CTRL-R* -i_CTRL-T insert.txt /*i_CTRL-T* -i_CTRL-U insert.txt /*i_CTRL-U* -i_CTRL-V insert.txt /*i_CTRL-V* -i_CTRL-V_digit insert.txt /*i_CTRL-V_digit* -i_CTRL-W insert.txt /*i_CTRL-W* -i_CTRL-X insert.txt /*i_CTRL-X* -i_CTRL-X_CTRL-D insert.txt /*i_CTRL-X_CTRL-D* -i_CTRL-X_CTRL-E insert.txt /*i_CTRL-X_CTRL-E* -i_CTRL-X_CTRL-F insert.txt /*i_CTRL-X_CTRL-F* -i_CTRL-X_CTRL-I insert.txt /*i_CTRL-X_CTRL-I* -i_CTRL-X_CTRL-K insert.txt /*i_CTRL-X_CTRL-K* -i_CTRL-X_CTRL-L insert.txt /*i_CTRL-X_CTRL-L* -i_CTRL-X_CTRL-N insert.txt /*i_CTRL-X_CTRL-N* -i_CTRL-X_CTRL-O insert.txt /*i_CTRL-X_CTRL-O* -i_CTRL-X_CTRL-P insert.txt /*i_CTRL-X_CTRL-P* -i_CTRL-X_CTRL-S insert.txt /*i_CTRL-X_CTRL-S* -i_CTRL-X_CTRL-T insert.txt /*i_CTRL-X_CTRL-T* -i_CTRL-X_CTRL-U insert.txt /*i_CTRL-X_CTRL-U* -i_CTRL-X_CTRL-V insert.txt /*i_CTRL-X_CTRL-V* -i_CTRL-X_CTRL-Y insert.txt /*i_CTRL-X_CTRL-Y* -i_CTRL-X_CTRL-] insert.txt /*i_CTRL-X_CTRL-]* -i_CTRL-X_index index.txt /*i_CTRL-X_index* -i_CTRL-X_s insert.txt /*i_CTRL-X_s* -i_CTRL-Y insert.txt /*i_CTRL-Y* -i_CTRL-Z options.txt /*i_CTRL-Z* -i_CTRL-[ insert.txt /*i_CTRL-[* -i_CTRL-\_CTRL-G intro.txt /*i_CTRL-\\_CTRL-G* -i_CTRL-\_CTRL-N intro.txt /*i_CTRL-\\_CTRL-N* -i_CTRL-\_CTRL-O insert.txt /*i_CTRL-\\_CTRL-O* -i_CTRL-] insert.txt /*i_CTRL-]* -i_CTRL-^ insert.txt /*i_CTRL-^* -i_CTRL-_ insert.txt /*i_CTRL-_* -i_DEL insert.txt /*i_DEL* -i_Tab insert.txt /*i_Tab* -i_^_CTRL-D insert.txt /*i_^_CTRL-D* -i_backspacing insert.txt /*i_backspacing* -i_digraph digraph.txt /*i_digraph* -i_esc intro.txt /*i_esc* -i` motion.txt /*i`* -ia64.vim syntax.txt /*ia64.vim* -ib motion.txt /*ib* -iccf uganda.txt /*iccf* -iccf-donations uganda.txt /*iccf-donations* -icon-changed version4.txt /*icon-changed* -iconise starting.txt /*iconise* -iconize starting.txt /*iconize* -iconv() eval.txt /*iconv()* -iconv-dynamic mbyte.txt /*iconv-dynamic* -ident-search tips.txt /*ident-search* -idl-syntax syntax.txt /*idl-syntax* -idl.vim syntax.txt /*idl.vim* -if_cscop.txt if_cscop.txt /*if_cscop.txt* -if_lua.txt if_lua.txt /*if_lua.txt* -if_mzsch.txt if_mzsch.txt /*if_mzsch.txt* -if_ole.txt if_ole.txt /*if_ole.txt* -if_perl.txt if_perl.txt /*if_perl.txt* -if_pyth.txt if_pyth.txt /*if_pyth.txt* -if_ruby.txt if_ruby.txt /*if_ruby.txt* -if_sniff.txt if_sniff.txt /*if_sniff.txt* -if_tcl.txt if_tcl.txt /*if_tcl.txt* -ignore-errors eval.txt /*ignore-errors* -improved-autocmds-5.4 version5.txt /*improved-autocmds-5.4* -improved-quickfix version5.txt /*improved-quickfix* -improved-sessions version5.txt /*improved-sessions* -improved-viminfo version5.txt /*improved-viminfo* -improvements-5 version5.txt /*improvements-5* -improvements-6 version6.txt /*improvements-6* -improvements-7 version7.txt /*improvements-7* -inactive-buffer windows.txt /*inactive-buffer* -include-search tagsrch.txt /*include-search* -inclusive motion.txt /*inclusive* -incomp-small-6 version6.txt /*incomp-small-6* -incompatible-5 version5.txt /*incompatible-5* -incompatible-6 version6.txt /*incompatible-6* -incompatible-7 version7.txt /*incompatible-7* -indent() eval.txt /*indent()* -indent-expression indent.txt /*indent-expression* -indent.txt indent.txt /*indent.txt* -indentkeys-format indent.txt /*indentkeys-format* -index index.txt /*index* -index() eval.txt /*index()* -index.txt index.txt /*index.txt* -info-message starting.txt /*info-message* -inform.vim syntax.txt /*inform.vim* -informix ft_sql.txt /*informix* -initialization starting.txt /*initialization* -input() eval.txt /*input()* -inputdialog() eval.txt /*inputdialog()* -inputlist() eval.txt /*inputlist()* -inputrestore() eval.txt /*inputrestore()* -inputsave() eval.txt /*inputsave()* -inputsecret() eval.txt /*inputsecret()* -ins-completion insert.txt /*ins-completion* -ins-completion-menu insert.txt /*ins-completion-menu* -ins-expandtab insert.txt /*ins-expandtab* -ins-reverse rileft.txt /*ins-reverse* -ins-smarttab insert.txt /*ins-smarttab* -ins-softtabstop insert.txt /*ins-softtabstop* -ins-special-keys insert.txt /*ins-special-keys* -ins-special-special insert.txt /*ins-special-special* -ins-textwidth insert.txt /*ins-textwidth* -insert insert.txt /*insert* -insert() eval.txt /*insert()* -insert-index index.txt /*insert-index* -insert.txt insert.txt /*insert.txt* -insert_expand insert.txt /*insert_expand* -inserting insert.txt /*inserting* -inserting-ex insert.txt /*inserting-ex* -inserting-file insert.txt /*inserting-file* -insertmode-variable eval.txt /*insertmode-variable* -install usr_90.txt /*install* -install-home usr_90.txt /*install-home* -install-registry gui_w32.txt /*install-registry* -intel-itanium syntax.txt /*intel-itanium* -intellimouse-wheel-problems gui_w32.txt /*intellimouse-wheel-problems* -interactive-functions usr_41.txt /*interactive-functions* -interfaces-5.2 version5.txt /*interfaces-5.2* -internal-variables eval.txt /*internal-variables* -internal-wordlist spell.txt /*internal-wordlist* -internet intro.txt /*internet* -intro intro.txt /*intro* -intro.txt intro.txt /*intro.txt* -inverse syntax.txt /*inverse* -ip motion.txt /*ip* -iquote motion.txt /*iquote* -is motion.txt /*is* -isdirectory() eval.txt /*isdirectory()* -islocked() eval.txt /*islocked()* -it motion.txt /*it* -italic syntax.txt /*italic* -items() eval.txt /*items()* -iw motion.txt /*iw* -i{ motion.txt /*i{* -i} motion.txt /*i}* -j motion.txt /*j* -java-cinoptions indent.txt /*java-cinoptions* -java-indenting indent.txt /*java-indenting* -java.vim syntax.txt /*java.vim* -javascript-cinoptions indent.txt /*javascript-cinoptions* -javascript-indenting indent.txt /*javascript-indenting* -join() eval.txt /*join()* -jsbterm-mouse options.txt /*jsbterm-mouse* -jtags tagsrch.txt /*jtags* -jump-motions motion.txt /*jump-motions* -jumplist motion.txt /*jumplist* -jumpto-diffs diff.txt /*jumpto-diffs* -k motion.txt /*k* -kcc uganda.txt /*kcc* -kde gui_x11.txt /*kde* -key-codes intro.txt /*key-codes* -key-codes-changed version4.txt /*key-codes-changed* -key-mapping map.txt /*key-mapping* -key-notation intro.txt /*key-notation* -key-variable eval.txt /*key-variable* -keycodes intro.txt /*keycodes* -keymap-accents mbyte.txt /*keymap-accents* -keymap-file-format mbyte.txt /*keymap-file-format* -keymap-hebrew mbyte.txt /*keymap-hebrew* -keypad-0 intro.txt /*keypad-0* -keypad-9 intro.txt /*keypad-9* -keypad-comma term.txt /*keypad-comma* -keypad-divide intro.txt /*keypad-divide* -keypad-end intro.txt /*keypad-end* -keypad-enter intro.txt /*keypad-enter* -keypad-home intro.txt /*keypad-home* -keypad-minus intro.txt /*keypad-minus* -keypad-multiply intro.txt /*keypad-multiply* -keypad-page-down intro.txt /*keypad-page-down* -keypad-page-up intro.txt /*keypad-page-up* -keypad-plus intro.txt /*keypad-plus* -keypad-point intro.txt /*keypad-point* -keys() eval.txt /*keys()* -known-bugs todo.txt /*known-bugs* -l motion.txt /*l* -l:var eval.txt /*l:var* -lCursor mbyte.txt /*lCursor* -lace.vim syntax.txt /*lace.vim* -lang-variable eval.txt /*lang-variable* -language-mapping map.txt /*language-mapping* -last-pattern pattern.txt /*last-pattern* -last-position-jump eval.txt /*last-position-jump* -last_buffer_nr() eval.txt /*last_buffer_nr()* -lc_time-variable eval.txt /*lc_time-variable* -left-right-motions motion.txt /*left-right-motions* -len() eval.txt /*len()* -less various.txt /*less* -letter print.txt /*letter* -lex.vim syntax.txt /*lex.vim* -lhaskell.vim syntax.txt /*lhaskell.vim* -libcall() eval.txt /*libcall()* -libcallnr() eval.txt /*libcallnr()* -license uganda.txt /*license* -lid quickfix.txt /*lid* -lifelines.vim syntax.txt /*lifelines.vim* -limits vi_diff.txt /*limits* -line() eval.txt /*line()* -line-continuation repeat.txt /*line-continuation* -line2byte() eval.txt /*line2byte()* -linefeed intro.txt /*linefeed* -linewise motion.txt /*linewise* -linewise-register change.txt /*linewise-register* -linewise-visual visual.txt /*linewise-visual* -lisp.vim syntax.txt /*lisp.vim* -lispindent() eval.txt /*lispindent()* -list-functions usr_41.txt /*list-functions* -list-identity eval.txt /*list-identity* -list-index eval.txt /*list-index* -list-modification eval.txt /*list-modification* -list-repeat windows.txt /*list-repeat* -lite.vim syntax.txt /*lite.vim* -literal-string eval.txt /*literal-string* -lnum-variable eval.txt /*lnum-variable* -load-plugins starting.txt /*load-plugins* -load-vim-script repeat.txt /*load-vim-script* -local-additions help.txt /*local-additions* -local-function eval.txt /*local-function* -local-options options.txt /*local-options* -local-variable eval.txt /*local-variable* -local-variables eval.txt /*local-variables* -local_markfilelist pi_netrw.txt /*local_markfilelist* -locale mbyte.txt /*locale* -locale-name mbyte.txt /*locale-name* -localtime() eval.txt /*localtime()* -location-list quickfix.txt /*location-list* -location-list-window quickfix.txt /*location-list-window* -log() eval.txt /*log()* -log10() eval.txt /*log10()* -long-lines version5.txt /*long-lines* -lowercase change.txt /*lowercase* -lpc.vim syntax.txt /*lpc.vim* -lua if_lua.txt /*lua* -lua-buffer if_lua.txt /*lua-buffer* -lua-commands if_lua.txt /*lua-commands* -lua-vim if_lua.txt /*lua-vim* -lua-window if_lua.txt /*lua-window* -lua.vim syntax.txt /*lua.vim* -m motion.txt /*m* -m' motion.txt /*m'* -m[ motion.txt /*m[* -m] motion.txt /*m]* -m` motion.txt /*m`* -mac os_mac.txt /*mac* -mac-bug os_mac.txt /*mac-bug* -mac-compile os_mac.txt /*mac-compile* -mac-faq os_mac.txt /*mac-faq* -mac-filename os_mac.txt /*mac-filename* -mac-lack os_mac.txt /*mac-lack* -mac-vimfile os_mac.txt /*mac-vimfile* -macintosh os_mac.txt /*macintosh* -macro map.txt /*macro* -mail-list intro.txt /*mail-list* -mail.vim syntax.txt /*mail.vim* -maillist intro.txt /*maillist* -maillist-archive intro.txt /*maillist-archive* -make.vim syntax.txt /*make.vim* -manual-copyright usr_01.txt /*manual-copyright* -map() eval.txt /*map()* -map-<SID> map.txt /*map-<SID>* -map-ambiguous map.txt /*map-ambiguous* -map-backtick tips.txt /*map-backtick* -map-comments map.txt /*map-comments* -map-examples map.txt /*map-examples* -map-keys-fails map.txt /*map-keys-fails* -map-listing map.txt /*map-listing* -map-modes map.txt /*map-modes* -map-multibyte map.txt /*map-multibyte* -map-overview map.txt /*map-overview* -map-self-destroy tips.txt /*map-self-destroy* -map-typing map.txt /*map-typing* -map-which-keys map.txt /*map-which-keys* -map.txt map.txt /*map.txt* -map_CTRL-C map.txt /*map_CTRL-C* -map_backslash map.txt /*map_backslash* -map_bar map.txt /*map_bar* -map_empty_rhs map.txt /*map_empty_rhs* -map_return map.txt /*map_return* -map_space_in_lhs map.txt /*map_space_in_lhs* -map_space_in_rhs map.txt /*map_space_in_rhs* -maparg() eval.txt /*maparg()* -mapcheck() eval.txt /*mapcheck()* -maple.vim syntax.txt /*maple.vim* -mapleader map.txt /*mapleader* -maplocalleader map.txt /*maplocalleader* -mapmode-c map.txt /*mapmode-c* -mapmode-i map.txt /*mapmode-i* -mapmode-ic map.txt /*mapmode-ic* -mapmode-l map.txt /*mapmode-l* -mapmode-n map.txt /*mapmode-n* -mapmode-nvo map.txt /*mapmode-nvo* -mapmode-o map.txt /*mapmode-o* -mapmode-s map.txt /*mapmode-s* -mapmode-v map.txt /*mapmode-v* -mapmode-x map.txt /*mapmode-x* -mapping map.txt /*mapping* -mark motion.txt /*mark* -mark-functions usr_41.txt /*mark-functions* -mark-motions motion.txt /*mark-motions* -markfilelist pi_netrw.txt /*markfilelist* -masm.vim syntax.txt /*masm.vim* -match() eval.txt /*match()* -match-highlight pattern.txt /*match-highlight* -match-parens tips.txt /*match-parens* -matchadd() eval.txt /*matchadd()* -matcharg() eval.txt /*matcharg()* -matchdelete() eval.txt /*matchdelete()* -matchend() eval.txt /*matchend()* -matchit-install usr_05.txt /*matchit-install* -matchlist() eval.txt /*matchlist()* -matchparen pi_paren.txt /*matchparen* -matchstr() eval.txt /*matchstr()* -max() eval.txt /*max()* -mbyte-IME mbyte.txt /*mbyte-IME* -mbyte-XIM mbyte.txt /*mbyte-XIM* -mbyte-combining mbyte.txt /*mbyte-combining* -mbyte-composing mbyte.txt /*mbyte-composing* -mbyte-conversion mbyte.txt /*mbyte-conversion* -mbyte-encoding mbyte.txt /*mbyte-encoding* -mbyte-first mbyte.txt /*mbyte-first* -mbyte-fonts-MSwin mbyte.txt /*mbyte-fonts-MSwin* -mbyte-fonts-X11 mbyte.txt /*mbyte-fonts-X11* -mbyte-keymap mbyte.txt /*mbyte-keymap* -mbyte-locale mbyte.txt /*mbyte-locale* -mbyte-options mbyte.txt /*mbyte-options* -mbyte-terminal mbyte.txt /*mbyte-terminal* -mbyte-utf8 mbyte.txt /*mbyte-utf8* -mbyte.txt mbyte.txt /*mbyte.txt* -menu-changes-5.4 version5.txt /*menu-changes-5.4* -menu-examples gui.txt /*menu-examples* -menu-priority gui.txt /*menu-priority* -menu-separator gui.txt /*menu-separator* -menu.vim gui.txt /*menu.vim* -menus gui.txt /*menus* -merge diff.txt /*merge* -message-history message.txt /*message-history* -message.txt message.txt /*message.txt* -messages message.txt /*messages* -meta intro.txt /*meta* -min() eval.txt /*min()* -minimal-features os_msdos.txt /*minimal-features* -missing-options vi_diff.txt /*missing-options* -mkdir() eval.txt /*mkdir()* -mlang.txt mlang.txt /*mlang.txt* -mma.vim syntax.txt /*mma.vim* -mode() eval.txt /*mode()* -mode-Ex intro.txt /*mode-Ex* -mode-cmdline cmdline.txt /*mode-cmdline* -mode-ins-repl insert.txt /*mode-ins-repl* -mode-replace insert.txt /*mode-replace* -mode-switching intro.txt /*mode-switching* -modeless-and-clipboard version6.txt /*modeless-and-clipboard* -modeless-selection gui.txt /*modeless-selection* -modeline options.txt /*modeline* -modeline-local options.txt /*modeline-local* -modeline-version options.txt /*modeline-version* -moo.vim syntax.txt /*moo.vim* -more-compatible version5.txt /*more-compatible* -more-prompt message.txt /*more-prompt* -more-variables eval.txt /*more-variables* -motion.txt motion.txt /*motion.txt* -mouse-mode-table term.txt /*mouse-mode-table* -mouse-overview term.txt /*mouse-overview* -mouse-swap-buttons term.txt /*mouse-swap-buttons* -mouse-using term.txt /*mouse-using* -mouse_col-variable eval.txt /*mouse_col-variable* -mouse_lnum-variable eval.txt /*mouse_lnum-variable* -mouse_win-variable eval.txt /*mouse_win-variable* -movement intro.txt /*movement* -ms-dos os_msdos.txt /*ms-dos* -msdos os_msdos.txt /*msdos* -msdos-arrows os_msdos.txt /*msdos-arrows* -msdos-clipboard-limits os_msdos.txt /*msdos-clipboard-limits* -msdos-compiling os_msdos.txt /*msdos-compiling* -msdos-copy-paste os_msdos.txt /*msdos-copy-paste* -msdos-fname-extensions os_msdos.txt /*msdos-fname-extensions* -msdos-limitations os_msdos.txt /*msdos-limitations* -msdos-linked-files os_msdos.txt /*msdos-linked-files* -msdos-longfname os_msdos.txt /*msdos-longfname* -msdos-mode gui_w32.txt /*msdos-mode* -msdos-problems os_msdos.txt /*msdos-problems* -msdos-termcap os_msdos.txt /*msdos-termcap* -msdos-versions os_msdos.txt /*msdos-versions* -msql.vim syntax.txt /*msql.vim* -mswin.vim gui_w32.txt /*mswin.vim* -multi-byte mbyte.txt /*multi-byte* -multi-lang mlang.txt /*multi-lang* -multi-repeat repeat.txt /*multi-repeat* -multibyte mbyte.txt /*multibyte* -multibyte-ime mbyte.txt /*multibyte-ime* -multibyte-input mbyte.txt /*multibyte-input* -multilang mlang.txt /*multilang* -multilang-menus mlang.txt /*multilang-menus* -multilang-messages mlang.txt /*multilang-messages* -multilang-scripts mlang.txt /*multilang-scripts* -myfiletypefile syntax.txt /*myfiletypefile* -myscriptsfile syntax.txt /*myscriptsfile* -mysql ft_sql.txt /*mysql* -mysyntaxfile syntax.txt /*mysyntaxfile* -mysyntaxfile-add syntax.txt /*mysyntaxfile-add* -mysyntaxfile-replace syntax.txt /*mysyntaxfile-replace* -mzeval() eval.txt /*mzeval()* -mzscheme if_mzsch.txt /*mzscheme* -mzscheme-buffer if_mzsch.txt /*mzscheme-buffer* -mzscheme-commands if_mzsch.txt /*mzscheme-commands* -mzscheme-dynamic if_mzsch.txt /*mzscheme-dynamic* -mzscheme-examples if_mzsch.txt /*mzscheme-examples* -mzscheme-mzeval if_mzsch.txt /*mzscheme-mzeval* -mzscheme-sandbox if_mzsch.txt /*mzscheme-sandbox* -mzscheme-threads if_mzsch.txt /*mzscheme-threads* -mzscheme-vim if_mzsch.txt /*mzscheme-vim* -mzscheme-vimext if_mzsch.txt /*mzscheme-vimext* -mzscheme-window if_mzsch.txt /*mzscheme-window* -n pattern.txt /*n* -nasm.vim syntax.txt /*nasm.vim* -navigation motion.txt /*navigation* -nb-commands netbeans.txt /*nb-commands* -nb-events netbeans.txt /*nb-events* -nb-functions netbeans.txt /*nb-functions* -nb-messages netbeans.txt /*nb-messages* -nb-protocol_errors netbeans.txt /*nb-protocol_errors* -nb-special netbeans.txt /*nb-special* -nb-terms netbeans.txt /*nb-terms* -ncf.vim syntax.txt /*ncf.vim* -netbeans netbeans.txt /*netbeans* -netbeans-commands netbeans.txt /*netbeans-commands* -netbeans-configure netbeans.txt /*netbeans-configure* -netbeans-debugging netbeans.txt /*netbeans-debugging* -netbeans-download netbeans.txt /*netbeans-download* -netbeans-integration netbeans.txt /*netbeans-integration* -netbeans-intro netbeans.txt /*netbeans-intro* -netbeans-keybindings netbeans.txt /*netbeans-keybindings* -netbeans-messages netbeans.txt /*netbeans-messages* -netbeans-parameters netbeans.txt /*netbeans-parameters* -netbeans-preparation netbeans.txt /*netbeans-preparation* -netbeans-problems netbeans.txt /*netbeans-problems* -netbeans-protocol netbeans.txt /*netbeans-protocol* -netbeans-run netbeans.txt /*netbeans-run* -netbeans-setup netbeans.txt /*netbeans-setup* -netbeans-support netbeans.txt /*netbeans-support* -netbeans.txt netbeans.txt /*netbeans.txt* -netreadfixup pi_netrw.txt /*netreadfixup* -netrw pi_netrw.txt /*netrw* -netrw-% pi_netrw.txt /*netrw-%* -netrw-- pi_netrw.txt /*netrw--* -netrw-C pi_netrw.txt /*netrw-C* -netrw-D pi_netrw.txt /*netrw-D* -netrw-O pi_netrw.txt /*netrw-O* -netrw-P pi_netrw.txt /*netrw-P* -netrw-R pi_netrw.txt /*netrw-R* -netrw-S pi_netrw.txt /*netrw-S* -netrw-T pi_netrw.txt /*netrw-T* -netrw-U pi_netrw.txt /*netrw-U* -netrw-a pi_netrw.txt /*netrw-a* -netrw-activate pi_netrw.txt /*netrw-activate* -netrw-bookmark pi_netrw.txt /*netrw-bookmark* -netrw-bookmarks pi_netrw.txt /*netrw-bookmarks* -netrw-browse pi_netrw.txt /*netrw-browse* -netrw-browse-cmds pi_netrw.txt /*netrw-browse-cmds* -netrw-browse-maps pi_netrw.txt /*netrw-browse-maps* -netrw-browser pi_netrw.txt /*netrw-browser* -netrw-browser-options pi_netrw.txt /*netrw-browser-options* -netrw-browser-var pi_netrw.txt /*netrw-browser-var* -netrw-browsing pi_netrw.txt /*netrw-browsing* -netrw-c pi_netrw.txt /*netrw-c* -netrw-cadaver pi_netrw.txt /*netrw-cadaver* -netrw-chgup pi_netrw.txt /*netrw-chgup* -netrw-clean pi_netrw.txt /*netrw-clean* -netrw-contents pi_netrw.txt /*netrw-contents* -netrw-copyright pi_netrw.txt /*netrw-copyright* -netrw-cr pi_netrw.txt /*netrw-cr* -netrw-credits pi_netrw.txt /*netrw-credits* -netrw-ctrl-h pi_netrw.txt /*netrw-ctrl-h* -netrw-ctrl-l pi_netrw.txt /*netrw-ctrl-l* -netrw-ctrl_l pi_netrw.txt /*netrw-ctrl_l* -netrw-curdir pi_netrw.txt /*netrw-curdir* -netrw-d pi_netrw.txt /*netrw-d* -netrw-debug pi_netrw.txt /*netrw-debug* -netrw-del pi_netrw.txt /*netrw-del* -netrw-delete pi_netrw.txt /*netrw-delete* -netrw-dir pi_netrw.txt /*netrw-dir* -netrw-dirlist pi_netrw.txt /*netrw-dirlist* -netrw-downdir pi_netrw.txt /*netrw-downdir* -netrw-edithide pi_netrw.txt /*netrw-edithide* -netrw-ex pi_netrw.txt /*netrw-ex* -netrw-explore pi_netrw.txt /*netrw-explore* -netrw-explore-cmds pi_netrw.txt /*netrw-explore-cmds* -netrw-externapp pi_netrw.txt /*netrw-externapp* -netrw-file pi_netrw.txt /*netrw-file* -netrw-filigree pi_netrw.txt /*netrw-filigree* -netrw-fixup pi_netrw.txt /*netrw-fixup* -netrw-ftp pi_netrw.txt /*netrw-ftp* -netrw-ftype pi_netrw.txt /*netrw-ftype* -netrw-gb pi_netrw.txt /*netrw-gb* -netrw-getftype pi_netrw.txt /*netrw-getftype* -netrw-gh pi_netrw.txt /*netrw-gh* -netrw-gp pi_netrw.txt /*netrw-gp* -netrw-gx pi_netrw.txt /*netrw-gx* -netrw-handler pi_netrw.txt /*netrw-handler* -netrw-help pi_netrw.txt /*netrw-help* -netrw-hexplore pi_netrw.txt /*netrw-hexplore* -netrw-hide pi_netrw.txt /*netrw-hide* -netrw-hiding pi_netrw.txt /*netrw-hiding* -netrw-history pi_netrw.txt /*netrw-history* -netrw-horiz pi_netrw.txt /*netrw-horiz* -netrw-i pi_netrw.txt /*netrw-i* -netrw-incompatible pi_netrw.txt /*netrw-incompatible* -netrw-intro-browse pi_netrw.txt /*netrw-intro-browse* -netrw-leftmouse pi_netrw.txt /*netrw-leftmouse* -netrw-list pi_netrw.txt /*netrw-list* -netrw-listbookmark pi_netrw.txt /*netrw-listbookmark* -netrw-listhack pi_netrw.txt /*netrw-listhack* -netrw-login pi_netrw.txt /*netrw-login* -netrw-mB pi_netrw.txt /*netrw-mB* -netrw-mT pi_netrw.txt /*netrw-mT* -netrw-mb pi_netrw.txt /*netrw-mb* -netrw-mc pi_netrw.txt /*netrw-mc* -netrw-md pi_netrw.txt /*netrw-md* -netrw-me pi_netrw.txt /*netrw-me* -netrw-mf pi_netrw.txt /*netrw-mf* -netrw-mg pi_netrw.txt /*netrw-mg* -netrw-mh pi_netrw.txt /*netrw-mh* -netrw-middlemouse pi_netrw.txt /*netrw-middlemouse* -netrw-ml_get pi_netrw.txt /*netrw-ml_get* -netrw-mm pi_netrw.txt /*netrw-mm* -netrw-mouse pi_netrw.txt /*netrw-mouse* -netrw-move pi_netrw.txt /*netrw-move* -netrw-mp pi_netrw.txt /*netrw-mp* -netrw-mr pi_netrw.txt /*netrw-mr* -netrw-ms pi_netrw.txt /*netrw-ms* -netrw-mt pi_netrw.txt /*netrw-mt* -netrw-mu pi_netrw.txt /*netrw-mu* -netrw-mx pi_netrw.txt /*netrw-mx* -netrw-mz pi_netrw.txt /*netrw-mz* -netrw-netrc pi_netrw.txt /*netrw-netrc* -netrw-nexplore pi_netrw.txt /*netrw-nexplore* -netrw-noload pi_netrw.txt /*netrw-noload* -netrw-nread pi_netrw.txt /*netrw-nread* -netrw-nwrite pi_netrw.txt /*netrw-nwrite* -netrw-o pi_netrw.txt /*netrw-o* -netrw-options pi_netrw.txt /*netrw-options* -netrw-p pi_netrw.txt /*netrw-p* -netrw-p1 pi_netrw.txt /*netrw-p1* -netrw-p10 pi_netrw.txt /*netrw-p10* -netrw-p11 pi_netrw.txt /*netrw-p11* -netrw-p12 pi_netrw.txt /*netrw-p12* -netrw-p13 pi_netrw.txt /*netrw-p13* -netrw-p2 pi_netrw.txt /*netrw-p2* -netrw-p3 pi_netrw.txt /*netrw-p3* -netrw-p4 pi_netrw.txt /*netrw-p4* -netrw-p5 pi_netrw.txt /*netrw-p5* -netrw-p6 pi_netrw.txt /*netrw-p6* -netrw-p7 pi_netrw.txt /*netrw-p7* -netrw-p8 pi_netrw.txt /*netrw-p8* -netrw-p9 pi_netrw.txt /*netrw-p9* -netrw-passwd pi_netrw.txt /*netrw-passwd* -netrw-password pi_netrw.txt /*netrw-password* -netrw-path pi_netrw.txt /*netrw-path* -netrw-pexplore pi_netrw.txt /*netrw-pexplore* -netrw-preview pi_netrw.txt /*netrw-preview* -netrw-problems pi_netrw.txt /*netrw-problems* -netrw-protocol pi_netrw.txt /*netrw-protocol* -netrw-prvwin pi_netrw.txt /*netrw-prvwin* -netrw-pscp pi_netrw.txt /*netrw-pscp* -netrw-psftp pi_netrw.txt /*netrw-psftp* -netrw-putty pi_netrw.txt /*netrw-putty* -netrw-qb pi_netrw.txt /*netrw-qb* -netrw-qf pi_netrw.txt /*netrw-qf* -netrw-quickcom pi_netrw.txt /*netrw-quickcom* -netrw-quickcoms pi_netrw.txt /*netrw-quickcoms* -netrw-quickhelp pi_netrw.txt /*netrw-quickhelp* -netrw-quickmap pi_netrw.txt /*netrw-quickmap* -netrw-quickmaps pi_netrw.txt /*netrw-quickmaps* -netrw-r pi_netrw.txt /*netrw-r* -netrw-read pi_netrw.txt /*netrw-read* -netrw-ref pi_netrw.txt /*netrw-ref* -netrw-rename pi_netrw.txt /*netrw-rename* -netrw-reverse pi_netrw.txt /*netrw-reverse* -netrw-rexplore pi_netrw.txt /*netrw-rexplore* -netrw-rightmouse pi_netrw.txt /*netrw-rightmouse* -netrw-s pi_netrw.txt /*netrw-s* -netrw-settings pi_netrw.txt /*netrw-settings* -netrw-sexplore pi_netrw.txt /*netrw-sexplore* -netrw-sort pi_netrw.txt /*netrw-sort* -netrw-sortsequence pi_netrw.txt /*netrw-sortsequence* -netrw-source pi_netrw.txt /*netrw-source* -netrw-ssh-hack pi_netrw.txt /*netrw-ssh-hack* -netrw-star pi_netrw.txt /*netrw-star* -netrw-starpat pi_netrw.txt /*netrw-starpat* -netrw-starstar pi_netrw.txt /*netrw-starstar* -netrw-starstarpat pi_netrw.txt /*netrw-starstarpat* -netrw-start pi_netrw.txt /*netrw-start* -netrw-t pi_netrw.txt /*netrw-t* -netrw-texplore pi_netrw.txt /*netrw-texplore* -netrw-todo pi_netrw.txt /*netrw-todo* -netrw-transparent pi_netrw.txt /*netrw-transparent* -netrw-u pi_netrw.txt /*netrw-u* -netrw-updir pi_netrw.txt /*netrw-updir* -netrw-urls pi_netrw.txt /*netrw-urls* -netrw-userpass pi_netrw.txt /*netrw-userpass* -netrw-v pi_netrw.txt /*netrw-v* -netrw-var pi_netrw.txt /*netrw-var* -netrw-variables pi_netrw.txt /*netrw-variables* -netrw-vexplore pi_netrw.txt /*netrw-vexplore* -netrw-write pi_netrw.txt /*netrw-write* -netrw-x pi_netrw.txt /*netrw-x* -netrw-xfer pi_netrw.txt /*netrw-xfer* -netrw.vim pi_netrw.txt /*netrw.vim* -netrw_filehandler pi_netrw.txt /*netrw_filehandler* -netterm-mouse options.txt /*netterm-mouse* -network pi_netrw.txt /*network* -new-5 version5.txt /*new-5* -new-6 version6.txt /*new-6* -new-7 version7.txt /*new-7* -new-GTK-GUI version5.txt /*new-GTK-GUI* -new-MzScheme version7.txt /*new-MzScheme* -new-Select-mode version5.txt /*new-Select-mode* -new-View version6.txt /*new-View* -new-argument-list version6.txt /*new-argument-list* -new-buftype version6.txt /*new-buftype* -new-cmdwin version6.txt /*new-cmdwin* -new-color-schemes version6.txt /*new-color-schemes* -new-commands version5.txt /*new-commands* -new-commands-5.4 version5.txt /*new-commands-5.4* -new-conceal version7.txt /*new-conceal* -new-debug-itf version6.txt /*new-debug-itf* -new-debug-mode version6.txt /*new-debug-mode* -new-debug-support version7.txt /*new-debug-support* -new-define-operator version7.txt /*new-define-operator* -new-diff-mode version6.txt /*new-diff-mode* -new-encryption version5.txt /*new-encryption* -new-evim version6.txt /*new-evim* -new-ex-commands-5.2 version5.txt /*new-ex-commands-5.2* -new-file-browser version6.txt /*new-file-browser* -new-file-writing version6.txt /*new-file-writing* -new-filetype filetype.txt /*new-filetype* -new-filetype-5.4 version5.txt /*new-filetype-5.4* -new-filetype-plugins version6.txt /*new-filetype-plugins* -new-filetype-scripts filetype.txt /*new-filetype-scripts* -new-folding version6.txt /*new-folding* -new-functions-5.2 version5.txt /*new-functions-5.2* -new-global-values version6.txt /*new-global-values* -new-highlighting version5.txt /*new-highlighting* -new-indent-flex version6.txt /*new-indent-flex* -new-items-6 version6.txt /*new-items-6* -new-items-7 version7.txt /*new-items-7* -new-line-continuation version5.txt /*new-line-continuation* -new-location-list version7.txt /*new-location-list* -new-lua version7.txt /*new-lua* -new-manpage-trans version7.txt /*new-manpage-trans* -new-map-expression version7.txt /*new-map-expression* -new-map-select version7.txt /*new-map-select* -new-more-encryption version7.txt /*new-more-encryption* -new-more-highlighting version7.txt /*new-more-highlighting* -new-more-unicode version7.txt /*new-more-unicode* -new-multi-byte version5.txt /*new-multi-byte* -new-multi-lang version6.txt /*new-multi-lang* -new-netrw-explore version7.txt /*new-netrw-explore* -new-network-files version6.txt /*new-network-files* -new-omni-completion version7.txt /*new-omni-completion* -new-onemore version7.txt /*new-onemore* -new-operator-mod version6.txt /*new-operator-mod* -new-options-5.2 version5.txt /*new-options-5.2* -new-options-5.4 version5.txt /*new-options-5.4* -new-perl-python version5.txt /*new-perl-python* -new-persistent-undo version7.txt /*new-persistent-undo* -new-plugins version6.txt /*new-plugins* -new-posix version7.txt /*new-posix* -new-print-multi-byte version7.txt /*new-print-multi-byte* -new-printing version6.txt /*new-printing* -new-python3 version7.txt /*new-python3* -new-runtime-dir version5.txt /*new-runtime-dir* -new-script version5.txt /*new-script* -new-script-5.4 version5.txt /*new-script-5.4* -new-scroll-back version7.txt /*new-scroll-back* -new-search-path version6.txt /*new-search-path* -new-searchpat version6.txt /*new-searchpat* -new-session-files version5.txt /*new-session-files* -new-spell version7.txt /*new-spell* -new-tab-pages version7.txt /*new-tab-pages* -new-undo-branches version7.txt /*new-undo-branches* -new-unlisted-buffers version6.txt /*new-unlisted-buffers* -new-user-defined version5.txt /*new-user-defined* -new-user-manual version6.txt /*new-user-manual* -new-utf-8 version6.txt /*new-utf-8* -new-vertsplit version6.txt /*new-vertsplit* -new-vim-script version7.txt /*new-vim-script* -new-vim-server version6.txt /*new-vim-server* -new-vimgrep version7.txt /*new-vimgrep* -new-virtedit version6.txt /*new-virtedit* -news intro.txt /*news* -nextnonblank() eval.txt /*nextnonblank()* -nice todo.txt /*nice* -no-eval-feature eval.txt /*no-eval-feature* -no_buffers_menu gui.txt /*no_buffers_menu* -non-greedy pattern.txt /*non-greedy* -non-zero-arg eval.txt /*non-zero-arg* -normal-index index.txt /*normal-index* -not-compatible usr_01.txt /*not-compatible* -not-edited editing.txt /*not-edited* -notation intro.txt /*notation* -notepad gui_w32.txt /*notepad* -nr2char() eval.txt /*nr2char()* -nroff.vim syntax.txt /*nroff.vim* -numbered-function eval.txt /*numbered-function* -o insert.txt /*o* -o_CTRL-V motion.txt /*o_CTRL-V* -o_V motion.txt /*o_V* -o_v motion.txt /*o_v* -object-motions motion.txt /*object-motions* -object-select motion.txt /*object-select* -objects index.txt /*objects* -obtaining-exted netbeans.txt /*obtaining-exted* -ocaml.vim syntax.txt /*ocaml.vim* -octal eval.txt /*octal* -octal-number options.txt /*octal-number* -oldfiles-variable eval.txt /*oldfiles-variable* -ole-activation if_ole.txt /*ole-activation* -ole-eval if_ole.txt /*ole-eval* -ole-gethwnd if_ole.txt /*ole-gethwnd* -ole-interface if_ole.txt /*ole-interface* -ole-methods if_ole.txt /*ole-methods* -ole-normal if_ole.txt /*ole-normal* -ole-registration if_ole.txt /*ole-registration* -ole-sendkeys if_ole.txt /*ole-sendkeys* -ole-setforeground if_ole.txt /*ole-setforeground* -omap-info map.txt /*omap-info* -omni-sql-completion ft_sql.txt /*omni-sql-completion* -online-help helphelp.txt /*online-help* -opening-window windows.txt /*opening-window* -operator motion.txt /*operator* -operator-variable eval.txt /*operator-variable* -option-backslash options.txt /*option-backslash* -option-list quickref.txt /*option-list* -option-summary options.txt /*option-summary* -options options.txt /*options* -options-changed version5.txt /*options-changed* -options.txt options.txt /*options.txt* -oracle ft_sql.txt /*oracle* -os2 os_os2.txt /*os2* -os2ansi os_os2.txt /*os2ansi* -os390 os_390.txt /*os390* -os_390.txt os_390.txt /*os_390.txt* -os_amiga.txt os_amiga.txt /*os_amiga.txt* -os_beos.txt os_beos.txt /*os_beos.txt* -os_dos.txt os_dos.txt /*os_dos.txt* -os_mac.txt os_mac.txt /*os_mac.txt* -os_mint.txt os_mint.txt /*os_mint.txt* -os_msdos.txt os_msdos.txt /*os_msdos.txt* -os_os2.txt os_os2.txt /*os_os2.txt* -os_qnx.txt os_qnx.txt /*os_qnx.txt* -os_risc.txt os_risc.txt /*os_risc.txt* -os_unix.txt os_unix.txt /*os_unix.txt* -os_vms.txt os_vms.txt /*os_vms.txt* -os_win32.txt os_win32.txt /*os_win32.txt* -other-features vi_diff.txt /*other-features* -p change.txt /*p* -page-down intro.txt /*page-down* -page-up intro.txt /*page-up* -page_down intro.txt /*page_down* -page_up intro.txt /*page_up* -pager message.txt /*pager* -papp.vim syntax.txt /*papp.vim* -paragraph motion.txt /*paragraph* -pascal.vim syntax.txt /*pascal.vim* -pathshorten() eval.txt /*pathshorten()* -pattern pattern.txt /*pattern* -pattern-atoms pattern.txt /*pattern-atoms* -pattern-multi-byte pattern.txt /*pattern-multi-byte* -pattern-multi-items pattern.txt /*pattern-multi-items* -pattern-overview pattern.txt /*pattern-overview* -pattern-searches pattern.txt /*pattern-searches* -pattern.txt pattern.txt /*pattern.txt* -patterns-composing pattern.txt /*patterns-composing* -pdev-option print.txt /*pdev-option* -penc-option print.txt /*penc-option* -perl if_perl.txt /*perl* -perl-Append if_perl.txt /*perl-Append* -perl-Buffer if_perl.txt /*perl-Buffer* -perl-Buffers if_perl.txt /*perl-Buffers* -perl-Count if_perl.txt /*perl-Count* -perl-Delete if_perl.txt /*perl-Delete* -perl-DoCommand if_perl.txt /*perl-DoCommand* -perl-Eval if_perl.txt /*perl-Eval* -perl-Get if_perl.txt /*perl-Get* -perl-GetCursor if_perl.txt /*perl-GetCursor* -perl-Msg if_perl.txt /*perl-Msg* -perl-Name if_perl.txt /*perl-Name* -perl-Number if_perl.txt /*perl-Number* -perl-Set if_perl.txt /*perl-Set* -perl-SetHeight if_perl.txt /*perl-SetHeight* -perl-SetOption if_perl.txt /*perl-SetOption* -perl-Windows if_perl.txt /*perl-Windows* -perl-compiling if_perl.txt /*perl-compiling* -perl-dynamic if_perl.txt /*perl-dynamic* -perl-editing if_perl.txt /*perl-editing* -perl-overview if_perl.txt /*perl-overview* -perl-patterns pattern.txt /*perl-patterns* -perl-using if_perl.txt /*perl-using* -perl.vim syntax.txt /*perl.vim* -persistent-undo undo.txt /*persistent-undo* -pexpr-option print.txt /*pexpr-option* -pfn-option print.txt /*pfn-option* -pheader-option print.txt /*pheader-option* -photon-fonts os_qnx.txt /*photon-fonts* -photon-gui os_qnx.txt /*photon-gui* -php-comment indent.txt /*php-comment* -php-indent indent.txt /*php-indent* -php-indenting indent.txt /*php-indenting* -php.vim syntax.txt /*php.vim* -php3.vim syntax.txt /*php3.vim* -phtml.vim syntax.txt /*phtml.vim* -pi_getscript.txt pi_getscript.txt /*pi_getscript.txt* -pi_gzip.txt pi_gzip.txt /*pi_gzip.txt* -pi_netrw.txt pi_netrw.txt /*pi_netrw.txt* -pi_paren.txt pi_paren.txt /*pi_paren.txt* -pi_spec.txt pi_spec.txt /*pi_spec.txt* -pi_tar.txt pi_tar.txt /*pi_tar.txt* -pi_vimball.txt pi_vimball.txt /*pi_vimball.txt* -pi_zip.txt pi_zip.txt /*pi_zip.txt* -pkzip options.txt /*pkzip* -plaintex.vim syntax.txt /*plaintex.vim* -plsql ft_sql.txt /*plsql* -plugin usr_05.txt /*plugin* -plugin-details filetype.txt /*plugin-details* -plugin-filetype usr_41.txt /*plugin-filetype* -plugin-special usr_41.txt /*plugin-special* -pmbcs-option print.txt /*pmbcs-option* -pmbfn-option print.txt /*pmbfn-option* -popt-option print.txt /*popt-option* -popup-menu gui.txt /*popup-menu* -popup-menu-added version5.txt /*popup-menu-added* -popupmenu-completion insert.txt /*popupmenu-completion* -popupmenu-keys insert.txt /*popupmenu-keys* -ports-5.2 version5.txt /*ports-5.2* -ports-6 version6.txt /*ports-6* -posix vi_diff.txt /*posix* -posix-compliance vi_diff.txt /*posix-compliance* -posix-screen-size vi_diff.txt /*posix-screen-size* -postgresql ft_sql.txt /*postgresql* -postscr.vim syntax.txt /*postscr.vim* -postscript-cjk-printing print.txt /*postscript-cjk-printing* -postscript-print-encoding print.txt /*postscript-print-encoding* -postscript-print-trouble print.txt /*postscript-print-trouble* -postscript-print-util print.txt /*postscript-print-util* -postscript-printing print.txt /*postscript-printing* -pow() eval.txt /*pow()* -ppwiz.vim syntax.txt /*ppwiz.vim* -press-enter message.txt /*press-enter* -press-return message.txt /*press-return* -prevcount-variable eval.txt /*prevcount-variable* -preview-window windows.txt /*preview-window* -prevnonblank() eval.txt /*prevnonblank()* -print-intro print.txt /*print-intro* -print-options print.txt /*print-options* -print.txt print.txt /*print.txt* -printf() eval.txt /*printf()* -printf-% eval.txt /*printf-%* -printf-E eval.txt /*printf-E* -printf-G eval.txt /*printf-G* -printf-X eval.txt /*printf-X* -printf-c eval.txt /*printf-c* -printf-d eval.txt /*printf-d* -printf-e eval.txt /*printf-e* -printf-f eval.txt /*printf-f* -printf-g eval.txt /*printf-g* -printf-o eval.txt /*printf-o* -printf-s eval.txt /*printf-s* -printf-x eval.txt /*printf-x* -printing print.txt /*printing* -printing-formfeed print.txt /*printing-formfeed* -profile repeat.txt /*profile* -profiling repeat.txt /*profiling* -profiling-variable eval.txt /*profiling-variable* -progname-variable eval.txt /*progname-variable* -progress.vim syntax.txt /*progress.vim* -pronounce intro.txt /*pronounce* -psql ft_sql.txt /*psql* -ptcap.vim syntax.txt /*ptcap.vim* -pterm-mouse options.txt /*pterm-mouse* -pumvisible() eval.txt /*pumvisible()* -put change.txt /*put* -put-Visual-mode change.txt /*put-Visual-mode* -python if_pyth.txt /*python* -python-buffer if_pyth.txt /*python-buffer* -python-buffers if_pyth.txt /*python-buffers* -python-command if_pyth.txt /*python-command* -python-commands if_pyth.txt /*python-commands* -python-current if_pyth.txt /*python-current* -python-dynamic if_pyth.txt /*python-dynamic* -python-error if_pyth.txt /*python-error* -python-eval if_pyth.txt /*python-eval* -python-examples if_pyth.txt /*python-examples* -python-input if_pyth.txt /*python-input* -python-output if_pyth.txt /*python-output* -python-range if_pyth.txt /*python-range* -python-vim if_pyth.txt /*python-vim* -python-window if_pyth.txt /*python-window* -python-windows if_pyth.txt /*python-windows* -python.vim syntax.txt /*python.vim* -python3 if_pyth.txt /*python3* -q repeat.txt /*q* -q/ cmdline.txt /*q\/* -q: cmdline.txt /*q:* -q? cmdline.txt /*q?* -qnx os_qnx.txt /*qnx* -qnx-compiling os_qnx.txt /*qnx-compiling* -qnx-general os_qnx.txt /*qnx-general* -qnx-terminal os_qnx.txt /*qnx-terminal* -quake.vim syntax.txt /*quake.vim* -quickfix quickfix.txt /*quickfix* -quickfix-6 version6.txt /*quickfix-6* -quickfix-directory-stack quickfix.txt /*quickfix-directory-stack* -quickfix-error-lists quickfix.txt /*quickfix-error-lists* -quickfix-functions usr_41.txt /*quickfix-functions* -quickfix-gcc quickfix.txt /*quickfix-gcc* -quickfix-manx quickfix.txt /*quickfix-manx* -quickfix-perl quickfix.txt /*quickfix-perl* -quickfix-valid quickfix.txt /*quickfix-valid* -quickfix-window quickfix.txt /*quickfix-window* -quickfix.txt quickfix.txt /*quickfix.txt* -quickref quickref.txt /*quickref* -quickref.txt quickref.txt /*quickref.txt* -quote change.txt /*quote* -quote# change.txt /*quote#* -quote% change.txt /*quote%* -quote+ gui_x11.txt /*quote+* -quote- change.txt /*quote-* -quote. change.txt /*quote.* -quote/ change.txt /*quote\/* -quote0 change.txt /*quote0* -quote1 change.txt /*quote1* -quote2 change.txt /*quote2* -quote3 change.txt /*quote3* -quote4 change.txt /*quote4* -quote9 change.txt /*quote9* -quote: change.txt /*quote:* -quote= change.txt /*quote=* -quote_ change.txt /*quote_* -quote_# change.txt /*quote_#* -quote_% change.txt /*quote_%* -quote_- change.txt /*quote_-* -quote_. change.txt /*quote_.* -quote_/ change.txt /*quote_\/* -quote_: change.txt /*quote_:* -quote_= change.txt /*quote_=* -quote_alpha change.txt /*quote_alpha* -quote_number change.txt /*quote_number* -quote_quote change.txt /*quote_quote* -quote_~ change.txt /*quote_~* -quotea change.txt /*quotea* -quotecommandquote intro.txt /*quotecommandquote* -quoteplus gui_x11.txt /*quoteplus* -quotequote change.txt /*quotequote* -quotes quotes.txt /*quotes* -quotes.txt quotes.txt /*quotes.txt* -quotestar gui.txt /*quotestar* -quote~ change.txt /*quote~* -r change.txt /*r* -range() eval.txt /*range()* -raw-terminal-mode term.txt /*raw-terminal-mode* -rcp pi_netrw.txt /*rcp* -read-messages insert.txt /*read-messages* -read-only-share editing.txt /*read-only-share* -read-stdin version5.txt /*read-stdin* -readfile() eval.txt /*readfile()* -readline.vim syntax.txt /*readline.vim* -recording repeat.txt /*recording* -recover.txt recover.txt /*recover.txt* -recovery recover.txt /*recovery* -recursive_mapping map.txt /*recursive_mapping* -redo undo.txt /*redo* -redo-register undo.txt /*redo-register* -ref intro.txt /*ref* -reference intro.txt /*reference* -reference_toc help.txt /*reference_toc* -regexp pattern.txt /*regexp* -regexp-changes-5.4 version5.txt /*regexp-changes-5.4* -register sponsor.txt /*register* -register-faq sponsor.txt /*register-faq* -register-variable eval.txt /*register-variable* -registers change.txt /*registers* -regular-expression pattern.txt /*regular-expression* -reltime() eval.txt /*reltime()* -reltimestr() eval.txt /*reltimestr()* -remote.txt remote.txt /*remote.txt* -remote_expr() eval.txt /*remote_expr()* -remote_foreground() eval.txt /*remote_foreground()* -remote_peek() eval.txt /*remote_peek()* -remote_read() eval.txt /*remote_read()* -remote_send() eval.txt /*remote_send()* -remove() eval.txt /*remove()* -remove-filetype filetype.txt /*remove-filetype* -remove-option-flags options.txt /*remove-option-flags* -rename() eval.txt /*rename()* -rename-files tips.txt /*rename-files* -repeat() eval.txt /*repeat()* -repeat.txt repeat.txt /*repeat.txt* -repeating repeat.txt /*repeating* -replacing change.txt /*replacing* -replacing-ex insert.txt /*replacing-ex* -reselect-Visual visual.txt /*reselect-Visual* -resolve() eval.txt /*resolve()* -restore-cursor usr_05.txt /*restore-cursor* -restore-position tips.txt /*restore-position* -restricted-mode starting.txt /*restricted-mode* -retab-example change.txt /*retab-example* -rethrow eval.txt /*rethrow* -reverse() eval.txt /*reverse()* -rexx.vim syntax.txt /*rexx.vim* -rgb.txt gui_w32.txt /*rgb.txt* -rgview starting.txt /*rgview* -rgvim starting.txt /*rgvim* -right-justify change.txt /*right-justify* -rileft rileft.txt /*rileft* -rileft.txt rileft.txt /*rileft.txt* -riscos os_risc.txt /*riscos* -riscos-commandline os_risc.txt /*riscos-commandline* -riscos-filetypes os_risc.txt /*riscos-filetypes* -riscos-gui os_risc.txt /*riscos-gui* -riscos-interrupt os_risc.txt /*riscos-interrupt* -riscos-locations os_risc.txt /*riscos-locations* -riscos-memory os_risc.txt /*riscos-memory* -riscos-munging os_risc.txt /*riscos-munging* -riscos-porting os_risc.txt /*riscos-porting* -riscos-remote os_risc.txt /*riscos-remote* -riscos-shell os_risc.txt /*riscos-shell* -riscos-temp-files os_risc.txt /*riscos-temp-files* -rot13 change.txt /*rot13* -round() eval.txt /*round()* -rsync pi_netrw.txt /*rsync* -ruby if_ruby.txt /*ruby* -ruby-buffer if_ruby.txt /*ruby-buffer* -ruby-command if_ruby.txt /*ruby-command* -ruby-commands if_ruby.txt /*ruby-commands* -ruby-dynamic if_ruby.txt /*ruby-dynamic* -ruby-evaluate if_ruby.txt /*ruby-evaluate* -ruby-globals if_ruby.txt /*ruby-globals* -ruby-message if_ruby.txt /*ruby-message* -ruby-set_option if_ruby.txt /*ruby-set_option* -ruby-vim if_ruby.txt /*ruby-vim* -ruby-window if_ruby.txt /*ruby-window* -ruby.vim syntax.txt /*ruby.vim* -russian russian.txt /*russian* -russian-intro russian.txt /*russian-intro* -russian-issues russian.txt /*russian-issues* -russian-keymap russian.txt /*russian-keymap* -russian-l18n russian.txt /*russian-l18n* -russian.txt russian.txt /*russian.txt* -rview starting.txt /*rview* -rvim starting.txt /*rvim* -rxvt syntax.txt /*rxvt* -s change.txt /*s* -s/\& change.txt /*s\/\\&* -s/\0 change.txt /*s\/\\0* -s/\1 change.txt /*s\/\\1* -s/\2 change.txt /*s\/\\2* -s/\3 change.txt /*s\/\\3* -s/\9 change.txt /*s\/\\9* -s/\<CR> change.txt /*s\/\\<CR>* -s/\E change.txt /*s\/\\E* -s/\L change.txt /*s\/\\L* -s/\U change.txt /*s\/\\U* -s/\\ change.txt /*s\/\\\\* -s/\b change.txt /*s\/\\b* -s/\e change.txt /*s\/\\e* -s/\l change.txt /*s\/\\l* -s/\n change.txt /*s\/\\n* -s/\r change.txt /*s\/\\r* -s/\t change.txt /*s\/\\t* -s/\u change.txt /*s\/\\u* -s/\~ change.txt /*s\/\\~* -s:netrw_passwd pi_netrw.txt /*s:netrw_passwd* -s:var eval.txt /*s:var* -s<CR> change.txt /*s<CR>* -sandbox eval.txt /*sandbox* -sandbox-option eval.txt /*sandbox-option* -save-file editing.txt /*save-file* -save-settings starting.txt /*save-settings* -scheme.vim syntax.txt /*scheme.vim* -scp pi_netrw.txt /*scp* -script usr_41.txt /*script* -script-here if_perl.txt /*script-here* -script-local map.txt /*script-local* -script-variable eval.txt /*script-variable* -scriptnames-dictionary eval.txt /*scriptnames-dictionary* -scriptout-changed version4.txt /*scriptout-changed* -scroll-binding scroll.txt /*scroll-binding* -scroll-cursor scroll.txt /*scroll-cursor* -scroll-down scroll.txt /*scroll-down* -scroll-horizontal scroll.txt /*scroll-horizontal* -scroll-insert tips.txt /*scroll-insert* -scroll-mouse-wheel scroll.txt /*scroll-mouse-wheel* -scroll-region term.txt /*scroll-region* -scroll-smooth tips.txt /*scroll-smooth* -scroll-up scroll.txt /*scroll-up* -scroll.txt scroll.txt /*scroll.txt* -scrollbind-quickadj scroll.txt /*scrollbind-quickadj* -scrollbind-relative scroll.txt /*scrollbind-relative* -scrolling scroll.txt /*scrolling* -scrollstart-variable eval.txt /*scrollstart-variable* -sdl.vim syntax.txt /*sdl.vim* -search() eval.txt /*search()* -search()-sub-match eval.txt /*search()-sub-match* -search-commands pattern.txt /*search-commands* -search-offset pattern.txt /*search-offset* -search-pattern pattern.txt /*search-pattern* -search-range pattern.txt /*search-range* -search-replace change.txt /*search-replace* -searchdecl() eval.txt /*searchdecl()* -searchforward-variable eval.txt /*searchforward-variable* -searchpair() eval.txt /*searchpair()* -searchpairpos() eval.txt /*searchpairpos()* -searchpos() eval.txt /*searchpos()* -section motion.txt /*section* -sed.vim syntax.txt /*sed.vim* -self eval.txt /*self* -send-money sponsor.txt /*send-money* -send-to-menu gui_w32.txt /*send-to-menu* -sendto gui_w32.txt /*sendto* -sentence motion.txt /*sentence* -server-functions usr_41.txt /*server-functions* -server2client() eval.txt /*server2client()* -serverlist() eval.txt /*serverlist()* -servername-variable eval.txt /*servername-variable* -session-file starting.txt /*session-file* -set-option options.txt /*set-option* -set-spc-auto spell.txt /*set-spc-auto* -setbufvar() eval.txt /*setbufvar()* -setcmdpos() eval.txt /*setcmdpos()* -setline() eval.txt /*setline()* -setloclist() eval.txt /*setloclist()* -setmatches() eval.txt /*setmatches()* -setpos() eval.txt /*setpos()* -setqflist() eval.txt /*setqflist()* -setreg() eval.txt /*setreg()* -settabvar() eval.txt /*settabvar()* -settabwinvar() eval.txt /*settabwinvar()* -setting-guifont gui.txt /*setting-guifont* -setting-guitablabel tabpage.txt /*setting-guitablabel* -setting-tabline tabpage.txt /*setting-tabline* -setuid change.txt /*setuid* -setwinvar() eval.txt /*setwinvar()* -sftp pi_netrw.txt /*sftp* -sgml.vim syntax.txt /*sgml.vim* -sh.vim syntax.txt /*sh.vim* -shell-window tips.txt /*shell-window* -shell_error-variable eval.txt /*shell_error-variable* -shellescape() eval.txt /*shellescape()* -shift intro.txt /*shift* -shift-left-right change.txt /*shift-left-right* -short-name-changed version4.txt /*short-name-changed* -showing-menus gui.txt /*showing-menus* -sign-commands sign.txt /*sign-commands* -sign-intro sign.txt /*sign-intro* -sign-support sign.txt /*sign-support* -sign.txt sign.txt /*sign.txt* -signs sign.txt /*signs* -simple-change change.txt /*simple-change* -simplify() eval.txt /*simplify()* -simulated-command vi_diff.txt /*simulated-command* -sin() eval.txt /*sin()* -single-repeat repeat.txt /*single-repeat* -sinh() eval.txt /*sinh()* -skeleton autocmd.txt /*skeleton* -slice eval.txt /*slice* -slow-fast-terminal term.txt /*slow-fast-terminal* -slow-start starting.txt /*slow-start* -slow-terminal term.txt /*slow-terminal* -sniff if_sniff.txt /*sniff* -sniff-commands if_sniff.txt /*sniff-commands* -sniff-compiling if_sniff.txt /*sniff-compiling* -sniff-intro if_sniff.txt /*sniff-intro* -socket-interface netbeans.txt /*socket-interface* -sort() eval.txt /*sort()* -sorting change.txt /*sorting* -soundfold() eval.txt /*soundfold()* -space intro.txt /*space* -spec-customizing pi_spec.txt /*spec-customizing* -spec-how-to-use-it pi_spec.txt /*spec-how-to-use-it* -spec-setting-a-map pi_spec.txt /*spec-setting-a-map* -spec_chglog_format pi_spec.txt /*spec_chglog_format* -spec_chglog_prepend pi_spec.txt /*spec_chglog_prepend* -spec_chglog_release_info pi_spec.txt /*spec_chglog_release_info* -special-buffers windows.txt /*special-buffers* -speed-up tips.txt /*speed-up* -spell spell.txt /*spell* -spell-ACCENT spell.txt /*spell-ACCENT* -spell-AUTHOR spell.txt /*spell-AUTHOR* -spell-BAD spell.txt /*spell-BAD* -spell-BREAK spell.txt /*spell-BREAK* -spell-CHECKCOMPOUNDCASE spell.txt /*spell-CHECKCOMPOUNDCASE* -spell-CHECKCOMPOUNDDUP spell.txt /*spell-CHECKCOMPOUNDDUP* -spell-CHECKCOMPOUNDPATTERN spell.txt /*spell-CHECKCOMPOUNDPATTERN* -spell-CHECKCOMPOUNDREP spell.txt /*spell-CHECKCOMPOUNDREP* -spell-CHECKCOMPOUNDTRIPLE spell.txt /*spell-CHECKCOMPOUNDTRIPLE* -spell-CIRCUMFIX spell.txt /*spell-CIRCUMFIX* -spell-COMMON spell.txt /*spell-COMMON* -spell-COMPLEXPREFIXES spell.txt /*spell-COMPLEXPREFIXES* -spell-COMPOUND spell.txt /*spell-COMPOUND* -spell-COMPOUNDBEGIN spell.txt /*spell-COMPOUNDBEGIN* -spell-COMPOUNDEND spell.txt /*spell-COMPOUNDEND* -spell-COMPOUNDFIRST spell.txt /*spell-COMPOUNDFIRST* -spell-COMPOUNDFLAG spell.txt /*spell-COMPOUNDFLAG* -spell-COMPOUNDFORBIDFLAG spell.txt /*spell-COMPOUNDFORBIDFLAG* -spell-COMPOUNDMIDDLE spell.txt /*spell-COMPOUNDMIDDLE* -spell-COMPOUNDMIN spell.txt /*spell-COMPOUNDMIN* -spell-COMPOUNDPERMITFLAG spell.txt /*spell-COMPOUNDPERMITFLAG* -spell-COMPOUNDROOT spell.txt /*spell-COMPOUNDROOT* -spell-COMPOUNDRULE spell.txt /*spell-COMPOUNDRULE* -spell-COMPOUNDRULES spell.txt /*spell-COMPOUNDRULES* -spell-COMPOUNDSYLLABLE spell.txt /*spell-COMPOUNDSYLLABLE* -spell-COMPOUNDSYLMAX spell.txt /*spell-COMPOUNDSYLMAX* -spell-COMPOUNDWORDMAX spell.txt /*spell-COMPOUNDWORDMAX* -spell-COPYRIGHT spell.txt /*spell-COPYRIGHT* -spell-EMAIL spell.txt /*spell-EMAIL* -spell-FLAG spell.txt /*spell-FLAG* -spell-FOL spell.txt /*spell-FOL* -spell-FORBIDDENWORD spell.txt /*spell-FORBIDDENWORD* -spell-HOME spell.txt /*spell-HOME* -spell-KEEPCASE spell.txt /*spell-KEEPCASE* -spell-KEY spell.txt /*spell-KEY* -spell-LANG spell.txt /*spell-LANG* -spell-LEMMA_PRESENT spell.txt /*spell-LEMMA_PRESENT* -spell-LOW spell.txt /*spell-LOW* -spell-MAP spell.txt /*spell-MAP* -spell-MAXNGRAMSUGS spell.txt /*spell-MAXNGRAMSUGS* -spell-NAME spell.txt /*spell-NAME* -spell-NEEDAFFIX spell.txt /*spell-NEEDAFFIX* -spell-NEEDCOMPOUND spell.txt /*spell-NEEDCOMPOUND* -spell-NOBREAK spell.txt /*spell-NOBREAK* -spell-NOSPLITSUGS spell.txt /*spell-NOSPLITSUGS* -spell-NOSUGFILE spell.txt /*spell-NOSUGFILE* -spell-NOSUGGEST spell.txt /*spell-NOSUGGEST* -spell-ONLYINCOMPOUND spell.txt /*spell-ONLYINCOMPOUND* -spell-PFX spell.txt /*spell-PFX* -spell-PFXPOSTPONE spell.txt /*spell-PFXPOSTPONE* -spell-PSEUDOROOT spell.txt /*spell-PSEUDOROOT* -spell-RARE spell.txt /*spell-RARE* -spell-REP spell.txt /*spell-REP* -spell-SAL spell.txt /*spell-SAL* -spell-SET spell.txt /*spell-SET* -spell-SFX spell.txt /*spell-SFX* -spell-SLASH spell.txt /*spell-SLASH* -spell-SOFOFROM spell.txt /*spell-SOFOFROM* -spell-SOFOTO spell.txt /*spell-SOFOTO* -spell-SUGSWITHDOTS spell.txt /*spell-SUGSWITHDOTS* -spell-SYLLABLE spell.txt /*spell-SYLLABLE* -spell-SYLLABLENUM spell.txt /*spell-SYLLABLENUM* -spell-SpellFileMissing spell.txt /*spell-SpellFileMissing* -spell-TRY spell.txt /*spell-TRY* -spell-UPP spell.txt /*spell-UPP* -spell-VERSION spell.txt /*spell-VERSION* -spell-WORDCHARS spell.txt /*spell-WORDCHARS* -spell-aff-format spell.txt /*spell-aff-format* -spell-affix-chars spell.txt /*spell-affix-chars* -spell-affix-comment spell.txt /*spell-affix-comment* -spell-affix-flags spell.txt /*spell-affix-flags* -spell-affix-mbyte spell.txt /*spell-affix-mbyte* -spell-affix-not-supported spell.txt /*spell-affix-not-supported* -spell-affix-vim spell.txt /*spell-affix-vim* -spell-compound spell.txt /*spell-compound* -spell-dic-format spell.txt /*spell-dic-format* -spell-double-scoring spell.txt /*spell-double-scoring* -spell-file-format spell.txt /*spell-file-format* -spell-functions usr_41.txt /*spell-functions* -spell-german spell.txt /*spell-german* -spell-load spell.txt /*spell-load* -spell-midword spell.txt /*spell-midword* -spell-mkspell spell.txt /*spell-mkspell* -spell-quickstart spell.txt /*spell-quickstart* -spell-remarks spell.txt /*spell-remarks* -spell-russian spell.txt /*spell-russian* -spell-sug-file spell.txt /*spell-sug-file* -spell-syntax spell.txt /*spell-syntax* -spell-wordlist-format spell.txt /*spell-wordlist-format* -spell-yiddish spell.txt /*spell-yiddish* -spell.txt spell.txt /*spell.txt* -spellbadword() eval.txt /*spellbadword()* -spellfile-cleanup spell.txt /*spellfile-cleanup* -spellfile.vim spell.txt /*spellfile.vim* -spellsuggest() eval.txt /*spellsuggest()* -split() eval.txt /*split()* -splitfind windows.txt /*splitfind* -splitview windows.txt /*splitview* -sponsor sponsor.txt /*sponsor* -sponsor-faq sponsor.txt /*sponsor-faq* -sponsor.txt sponsor.txt /*sponsor.txt* -spoon os_unix.txt /*spoon* -spup.vim syntax.txt /*spup.vim* -sql-adding-dialects ft_sql.txt /*sql-adding-dialects* -sql-completion ft_sql.txt /*sql-completion* -sql-completion-columns ft_sql.txt /*sql-completion-columns* -sql-completion-customization ft_sql.txt /*sql-completion-customization* -sql-completion-dynamic ft_sql.txt /*sql-completion-dynamic* -sql-completion-filetypes ft_sql.txt /*sql-completion-filetypes* -sql-completion-maps ft_sql.txt /*sql-completion-maps* -sql-completion-procedures ft_sql.txt /*sql-completion-procedures* -sql-completion-static ft_sql.txt /*sql-completion-static* -sql-completion-tables ft_sql.txt /*sql-completion-tables* -sql-completion-tutorial ft_sql.txt /*sql-completion-tutorial* -sql-completion-views ft_sql.txt /*sql-completion-views* -sql-dialects ft_sql.txt /*sql-dialects* -sql-macros ft_sql.txt /*sql-macros* -sql-matchit ft_sql.txt /*sql-matchit* -sql-navigation ft_sql.txt /*sql-navigation* -sql-object-motions ft_sql.txt /*sql-object-motions* -sql-predefined-objects ft_sql.txt /*sql-predefined-objects* -sql-type-default ft_sql.txt /*sql-type-default* -sql-types ft_sql.txt /*sql-types* -sql.vim syntax.txt /*sql.vim* -sqlanywhere ft_sql.txt /*sqlanywhere* -sqlanywhere.vim syntax.txt /*sqlanywhere.vim* -sqlgettype ft_sql.txt /*sqlgettype* -sqlinformix.vim syntax.txt /*sqlinformix.vim* -sqlj ft_sql.txt /*sqlj* -sqlserver ft_sql.txt /*sqlserver* -sqlsettype ft_sql.txt /*sqlsettype* -sqrt() eval.txt /*sqrt()* -sscanf eval.txt /*sscanf* -standard-plugin usr_05.txt /*standard-plugin* -standard-plugin-list help.txt /*standard-plugin-list* -standout syntax.txt /*standout* -star pattern.txt /*star* -starstar editing.txt /*starstar* -starstar-wildcard editing.txt /*starstar-wildcard* -start-of-file pattern.txt /*start-of-file* -starting starting.txt /*starting* -starting-amiga starting.txt /*starting-amiga* -starting.txt starting.txt /*starting.txt* -startup starting.txt /*startup* -startup-options starting.txt /*startup-options* -startup-terminal term.txt /*startup-terminal* -static-tag tagsrch.txt /*static-tag* -status-line windows.txt /*status-line* -statusmsg-variable eval.txt /*statusmsg-variable* -sticky-type-checking eval.txt /*sticky-type-checking* -str2float() eval.txt /*str2float()* -str2nr() eval.txt /*str2nr()* -strcasestr() eval.txt /*strcasestr()* -strchars() eval.txt /*strchars()* -strchr() eval.txt /*strchr()* -strcspn() eval.txt /*strcspn()* -strdisplaywidth() eval.txt /*strdisplaywidth()* -strftime() eval.txt /*strftime()* -stridx() eval.txt /*stridx()* -string() eval.txt /*string()* -string-functions usr_41.txt /*string-functions* -string-match eval.txt /*string-match* -strlen() eval.txt /*strlen()* -strpart() eval.txt /*strpart()* -strpbrk() eval.txt /*strpbrk()* -strrchr() eval.txt /*strrchr()* -strridx() eval.txt /*strridx()* -strspn() eval.txt /*strspn()* -strstr() eval.txt /*strstr()* -strtrans() eval.txt /*strtrans()* -strwidth() eval.txt /*strwidth()* -style-changes develop.txt /*style-changes* -style-examples develop.txt /*style-examples* -style-functions develop.txt /*style-functions* -style-names develop.txt /*style-names* -style-spaces develop.txt /*style-spaces* -style-various develop.txt /*style-various* -sub-menu-priority gui.txt /*sub-menu-priority* -sub-replace-\= change.txt /*sub-replace-\\=* -sub-replace-expression change.txt /*sub-replace-expression* -sub-replace-special change.txt /*sub-replace-special* -sublist eval.txt /*sublist* -submatch() eval.txt /*submatch()* -subscribe-maillist intro.txt /*subscribe-maillist* -substitute() eval.txt /*substitute()* -substitute-CR version6.txt /*substitute-CR* -suffixes cmdline.txt /*suffixes* -suspend starting.txt /*suspend* -swap-exists-choices usr_11.txt /*swap-exists-choices* -swap-file recover.txt /*swap-file* -swapchoice-variable eval.txt /*swapchoice-variable* -swapcommand-variable eval.txt /*swapcommand-variable* -swapfile-changed version4.txt /*swapfile-changed* -swapname-variable eval.txt /*swapname-variable* -sybase ft_sql.txt /*sybase* -syn-sync-grouphere syntax.txt /*syn-sync-grouphere* -syn-sync-groupthere syntax.txt /*syn-sync-groupthere* -syn-sync-linecont syntax.txt /*syn-sync-linecont* -synID() eval.txt /*synID()* -synIDattr() eval.txt /*synIDattr()* -synIDtrans() eval.txt /*synIDtrans()* -syncbind scroll.txt /*syncbind* -syncolor syntax.txt /*syncolor* -synconcealed() eval.txt /*synconcealed()* -synload-1 syntax.txt /*synload-1* -synload-2 syntax.txt /*synload-2* -synload-3 syntax.txt /*synload-3* -synload-4 syntax.txt /*synload-4* -synload-5 syntax.txt /*synload-5* -synload-6 syntax.txt /*synload-6* -synstack() eval.txt /*synstack()* -syntax syntax.txt /*syntax* -syntax-functions usr_41.txt /*syntax-functions* -syntax-highlighting syntax.txt /*syntax-highlighting* -syntax-loading syntax.txt /*syntax-loading* -syntax-printing usr_06.txt /*syntax-printing* -syntax.txt syntax.txt /*syntax.txt* -syntax_cmd syntax.txt /*syntax_cmd* -sys-file-list help.txt /*sys-file-list* -sysmouse term.txt /*sysmouse* -system() eval.txt /*system()* -system-functions usr_41.txt /*system-functions* -system-vimrc starting.txt /*system-vimrc* -s~ change.txt /*s~* -t motion.txt /*t* -t:var eval.txt /*t:var* -t_#2 term.txt /*t_#2* -t_#4 term.txt /*t_#4* -t_%1 term.txt /*t_%1* -t_%i term.txt /*t_%i* -t_&8 term.txt /*t_&8* -t_@7 term.txt /*t_@7* -t_AB term.txt /*t_AB* -t_AF term.txt /*t_AF* -t_AL term.txt /*t_AL* -t_CS term.txt /*t_CS* -t_CV term.txt /*t_CV* -t_Ce term.txt /*t_Ce* -t_Co term.txt /*t_Co* -t_Cs term.txt /*t_Cs* -t_DL term.txt /*t_DL* -t_EI term.txt /*t_EI* -t_F1 term.txt /*t_F1* -t_F2 term.txt /*t_F2* -t_F3 term.txt /*t_F3* -t_F4 term.txt /*t_F4* -t_F5 term.txt /*t_F5* -t_F6 term.txt /*t_F6* -t_F7 term.txt /*t_F7* -t_F8 term.txt /*t_F8* -t_F9 term.txt /*t_F9* -t_IE term.txt /*t_IE* -t_IS term.txt /*t_IS* -t_K1 term.txt /*t_K1* -t_K3 term.txt /*t_K3* -t_K4 term.txt /*t_K4* -t_K5 term.txt /*t_K5* -t_K6 term.txt /*t_K6* -t_K7 term.txt /*t_K7* -t_K8 term.txt /*t_K8* -t_K9 term.txt /*t_K9* -t_KA term.txt /*t_KA* -t_KB term.txt /*t_KB* -t_KC term.txt /*t_KC* -t_KD term.txt /*t_KD* -t_KE term.txt /*t_KE* -t_KF term.txt /*t_KF* -t_KG term.txt /*t_KG* -t_KH term.txt /*t_KH* -t_KI term.txt /*t_KI* -t_KJ term.txt /*t_KJ* -t_KK term.txt /*t_KK* -t_KL term.txt /*t_KL* -t_RI term.txt /*t_RI* -t_RV term.txt /*t_RV* -t_SI term.txt /*t_SI* -t_Sb term.txt /*t_Sb* -t_Sf term.txt /*t_Sf* -t_WP term.txt /*t_WP* -t_WS term.txt /*t_WS* -t_ZH term.txt /*t_ZH* -t_ZR term.txt /*t_ZR* -t_al term.txt /*t_al* -t_bc term.txt /*t_bc* -t_cd term.txt /*t_cd* -t_cdl version4.txt /*t_cdl* -t_ce term.txt /*t_ce* -t_ci version4.txt /*t_ci* -t_cil version4.txt /*t_cil* -t_cl term.txt /*t_cl* -t_cm term.txt /*t_cm* -t_cri version4.txt /*t_cri* -t_cs term.txt /*t_cs* -t_csc version4.txt /*t_csc* -t_cv version4.txt /*t_cv* -t_cvv version4.txt /*t_cvv* -t_da term.txt /*t_da* -t_db term.txt /*t_db* -t_dl term.txt /*t_dl* -t_ed version4.txt /*t_ed* -t_el version4.txt /*t_el* -t_f1 version4.txt /*t_f1* -t_f10 version4.txt /*t_f10* -t_f2 version4.txt /*t_f2* -t_f3 version4.txt /*t_f3* -t_f4 version4.txt /*t_f4* -t_f5 version4.txt /*t_f5* -t_f6 version4.txt /*t_f6* -t_f7 version4.txt /*t_f7* -t_f8 version4.txt /*t_f8* -t_f9 version4.txt /*t_f9* -t_fs term.txt /*t_fs* -t_help version4.txt /*t_help* -t_il version4.txt /*t_il* -t_k1 term.txt /*t_k1* -t_k2 term.txt /*t_k2* -t_k3 term.txt /*t_k3* -t_k4 term.txt /*t_k4* -t_k5 term.txt /*t_k5* -t_k6 term.txt /*t_k6* -t_k7 term.txt /*t_k7* -t_k8 term.txt /*t_k8* -t_k9 term.txt /*t_k9* -t_k; term.txt /*t_k;* -t_kB term.txt /*t_kB* -t_kD term.txt /*t_kD* -t_kI term.txt /*t_kI* -t_kN term.txt /*t_kN* -t_kP term.txt /*t_kP* -t_kb term.txt /*t_kb* -t_kd term.txt /*t_kd* -t_ke term.txt /*t_ke* -t_kh term.txt /*t_kh* -t_kl term.txt /*t_kl* -t_kr term.txt /*t_kr* -t_ks term.txt /*t_ks* -t_ku term.txt /*t_ku* -t_le term.txt /*t_le* -t_mb term.txt /*t_mb* -t_md term.txt /*t_md* -t_me term.txt /*t_me* -t_mr term.txt /*t_mr* -t_ms term.txt /*t_ms* -t_nd term.txt /*t_nd* -t_op term.txt /*t_op* -t_se term.txt /*t_se* -t_sf1 version4.txt /*t_sf1* -t_sf10 version4.txt /*t_sf10* -t_sf2 version4.txt /*t_sf2* -t_sf3 version4.txt /*t_sf3* -t_sf4 version4.txt /*t_sf4* -t_sf5 version4.txt /*t_sf5* -t_sf6 version4.txt /*t_sf6* -t_sf7 version4.txt /*t_sf7* -t_sf8 version4.txt /*t_sf8* -t_sf9 version4.txt /*t_sf9* -t_skd version4.txt /*t_skd* -t_skl version4.txt /*t_skl* -t_skr version4.txt /*t_skr* -t_sku version4.txt /*t_sku* -t_so term.txt /*t_so* -t_sr term.txt /*t_sr* -t_star7 term.txt /*t_star7* -t_tb version4.txt /*t_tb* -t_te term.txt /*t_te* -t_ti term.txt /*t_ti* -t_tp version4.txt /*t_tp* -t_ts term.txt /*t_ts* -t_ts_old version4.txt /*t_ts_old* -t_ue term.txt /*t_ue* -t_undo version4.txt /*t_undo* -t_us term.txt /*t_us* -t_ut term.txt /*t_ut* -t_vb term.txt /*t_vb* -t_ve term.txt /*t_ve* -t_vi term.txt /*t_vi* -t_vs term.txt /*t_vs* -t_xs term.txt /*t_xs* -tab intro.txt /*tab* -tab-page tabpage.txt /*tab-page* -tab-page-commands tabpage.txt /*tab-page-commands* -tab-page-intro tabpage.txt /*tab-page-intro* -tab-page-other tabpage.txt /*tab-page-other* -tabline-menu tabpage.txt /*tabline-menu* -tabpage tabpage.txt /*tabpage* -tabpage-variable eval.txt /*tabpage-variable* -tabpage.txt tabpage.txt /*tabpage.txt* -tabpagebuflist() eval.txt /*tabpagebuflist()* -tabpagenr() eval.txt /*tabpagenr()* -tabpagewinnr() eval.txt /*tabpagewinnr()* -tag tagsrch.txt /*tag* -tag-! tagsrch.txt /*tag-!* -tag-any-white tagsrch.txt /*tag-any-white* -tag-binary-search tagsrch.txt /*tag-binary-search* -tag-blocks motion.txt /*tag-blocks* -tag-commands tagsrch.txt /*tag-commands* -tag-details tagsrch.txt /*tag-details* -tag-highlight syntax.txt /*tag-highlight* -tag-matchlist tagsrch.txt /*tag-matchlist* -tag-old-static tagsrch.txt /*tag-old-static* -tag-overloaded version5.txt /*tag-overloaded* -tag-preview tagsrch.txt /*tag-preview* -tag-priority tagsrch.txt /*tag-priority* -tag-regexp tagsrch.txt /*tag-regexp* -tag-search tagsrch.txt /*tag-search* -tag-security tagsrch.txt /*tag-security* -tag-skip-file tagsrch.txt /*tag-skip-file* -tag-stack tagsrch.txt /*tag-stack* -tagfiles() eval.txt /*tagfiles()* -taglist() eval.txt /*taglist()* -tags tagsrch.txt /*tags* -tags-and-searches tagsrch.txt /*tags-and-searches* -tags-file-changed version5.txt /*tags-file-changed* -tags-file-format tagsrch.txt /*tags-file-format* -tags-option tagsrch.txt /*tags-option* -tagsrch.txt tagsrch.txt /*tagsrch.txt* -tagstack tagsrch.txt /*tagstack* -tan() eval.txt /*tan()* -tanh() eval.txt /*tanh()* -tar pi_tar.txt /*tar* -tar-contents pi_tar.txt /*tar-contents* -tar-copyright pi_tar.txt /*tar-copyright* -tar-history pi_tar.txt /*tar-history* -tar-manual pi_tar.txt /*tar-manual* -tar-options pi_tar.txt /*tar-options* -tar-usage pi_tar.txt /*tar-usage* -tcl if_tcl.txt /*tcl* -tcl-beep if_tcl.txt /*tcl-beep* -tcl-buffer if_tcl.txt /*tcl-buffer* -tcl-buffer-append if_tcl.txt /*tcl-buffer-append* -tcl-buffer-cmds if_tcl.txt /*tcl-buffer-cmds* -tcl-buffer-command if_tcl.txt /*tcl-buffer-command* -tcl-buffer-count if_tcl.txt /*tcl-buffer-count* -tcl-buffer-delcmd if_tcl.txt /*tcl-buffer-delcmd* -tcl-buffer-delete if_tcl.txt /*tcl-buffer-delete* -tcl-buffer-expr if_tcl.txt /*tcl-buffer-expr* -tcl-buffer-get if_tcl.txt /*tcl-buffer-get* -tcl-buffer-insert if_tcl.txt /*tcl-buffer-insert* -tcl-buffer-last if_tcl.txt /*tcl-buffer-last* -tcl-buffer-mark if_tcl.txt /*tcl-buffer-mark* -tcl-buffer-option if_tcl.txt /*tcl-buffer-option* -tcl-buffer-set if_tcl.txt /*tcl-buffer-set* -tcl-buffer-windows if_tcl.txt /*tcl-buffer-windows* -tcl-bugs if_tcl.txt /*tcl-bugs* -tcl-command if_tcl.txt /*tcl-command* -tcl-commands if_tcl.txt /*tcl-commands* -tcl-dynamic if_tcl.txt /*tcl-dynamic* -tcl-ex-commands if_tcl.txt /*tcl-ex-commands* -tcl-examples if_tcl.txt /*tcl-examples* -tcl-expr if_tcl.txt /*tcl-expr* -tcl-linenumbers if_tcl.txt /*tcl-linenumbers* -tcl-misc if_tcl.txt /*tcl-misc* -tcl-option if_tcl.txt /*tcl-option* -tcl-output if_tcl.txt /*tcl-output* -tcl-var-current if_tcl.txt /*tcl-var-current* -tcl-var-lbase if_tcl.txt /*tcl-var-lbase* -tcl-var-line if_tcl.txt /*tcl-var-line* -tcl-var-lnum if_tcl.txt /*tcl-var-lnum* -tcl-var-range if_tcl.txt /*tcl-var-range* -tcl-variables if_tcl.txt /*tcl-variables* -tcl-window if_tcl.txt /*tcl-window* -tcl-window-buffer if_tcl.txt /*tcl-window-buffer* -tcl-window-cmds if_tcl.txt /*tcl-window-cmds* -tcl-window-command if_tcl.txt /*tcl-window-command* -tcl-window-cursor if_tcl.txt /*tcl-window-cursor* -tcl-window-delcmd if_tcl.txt /*tcl-window-delcmd* -tcl-window-expr if_tcl.txt /*tcl-window-expr* -tcl-window-height if_tcl.txt /*tcl-window-height* -tcl-window-option if_tcl.txt /*tcl-window-option* -tcsh-style cmdline.txt /*tcsh-style* -tcsh.vim syntax.txt /*tcsh.vim* -tear-off-menus gui.txt /*tear-off-menus* -telnet-CTRL-] tagsrch.txt /*telnet-CTRL-]* -temp-file-name eval.txt /*temp-file-name* -tempfile change.txt /*tempfile* -template autocmd.txt /*template* -tempname() eval.txt /*tempname()* -term-dependent-settings term.txt /*term-dependent-settings* -term-list syntax.txt /*term-list* -term.txt term.txt /*term.txt* -termcap term.txt /*termcap* -termcap-changed version4.txt /*termcap-changed* -termcap-colors term.txt /*termcap-colors* -termcap-cursor-color term.txt /*termcap-cursor-color* -termcap-cursor-shape term.txt /*termcap-cursor-shape* -termcap-options term.txt /*termcap-options* -termcap-title term.txt /*termcap-title* -terminal-colors os_unix.txt /*terminal-colors* -terminal-info term.txt /*terminal-info* -terminal-options term.txt /*terminal-options* -terminfo term.txt /*terminfo* -termresponse-variable eval.txt /*termresponse-variable* -tex-cchar syntax.txt /*tex-cchar* -tex-cole syntax.txt /*tex-cole* -tex-conceal syntax.txt /*tex-conceal* -tex-error syntax.txt /*tex-error* -tex-folding syntax.txt /*tex-folding* -tex-math syntax.txt /*tex-math* -tex-morecommands syntax.txt /*tex-morecommands* -tex-nospell syntax.txt /*tex-nospell* -tex-package syntax.txt /*tex-package* -tex-runon syntax.txt /*tex-runon* -tex-slow syntax.txt /*tex-slow* -tex-style syntax.txt /*tex-style* -tex-verb syntax.txt /*tex-verb* -tex.vim syntax.txt /*tex.vim* -text-functions usr_41.txt /*text-functions* -text-objects motion.txt /*text-objects* -text-objects-changed version5.txt /*text-objects-changed* -textlock eval.txt /*textlock* -tf.vim syntax.txt /*tf.vim* -this_session-variable eval.txt /*this_session-variable* -throw-catch eval.txt /*throw-catch* -throw-expression eval.txt /*throw-expression* -throw-from-catch eval.txt /*throw-from-catch* -throw-variables eval.txt /*throw-variables* -throwpoint-variable eval.txt /*throwpoint-variable* -time-functions usr_41.txt /*time-functions* -timestamp editing.txt /*timestamp* -timestamps editing.txt /*timestamps* -tips tips.txt /*tips* -tips.txt tips.txt /*tips.txt* -todo todo.txt /*todo* -todo.txt todo.txt /*todo.txt* -toggle options.txt /*toggle* -toggle-revins version4.txt /*toggle-revins* -tolower() eval.txt /*tolower()* -toolbar-icon gui.txt /*toolbar-icon* -toupper() eval.txt /*toupper()* -tr() eval.txt /*tr()* -trojan-horse starting.txt /*trojan-horse* -trunc() eval.txt /*trunc()* -try-conditionals eval.txt /*try-conditionals* -try-echoerr eval.txt /*try-echoerr* -try-finally eval.txt /*try-finally* -try-nested eval.txt /*try-nested* -try-nesting eval.txt /*try-nesting* -tutor usr_01.txt /*tutor* -twice if_cscop.txt /*twice* -type() eval.txt /*type()* -type-mistakes tips.txt /*type-mistakes* -typecorr-settings usr_41.txt /*typecorr-settings* -typecorr.txt usr_41.txt /*typecorr.txt* -u undo.txt /*u* -uganda uganda.txt /*uganda* -uganda.txt uganda.txt /*uganda.txt* -undercurl syntax.txt /*undercurl* -underline syntax.txt /*underline* -undo undo.txt /*undo* -undo-blocks undo.txt /*undo-blocks* -undo-branches undo.txt /*undo-branches* -undo-commands undo.txt /*undo-commands* -undo-persistence undo.txt /*undo-persistence* -undo-redo undo.txt /*undo-redo* -undo-remarks undo.txt /*undo-remarks* -undo-tree undo.txt /*undo-tree* -undo-two-ways undo.txt /*undo-two-ways* -undo.txt undo.txt /*undo.txt* -undo_ftplugin usr_41.txt /*undo_ftplugin* -undofile() eval.txt /*undofile()* -undotree() eval.txt /*undotree()* -unicode mbyte.txt /*unicode* -unix os_unix.txt /*unix* -unlisted-buffer windows.txt /*unlisted-buffer* -up-down-motions motion.txt /*up-down-motions* -uppercase change.txt /*uppercase* -use-cpo-save usr_41.txt /*use-cpo-save* -use-visual-cmds version4.txt /*use-visual-cmds* -useful-mappings tips.txt /*useful-mappings* -usenet intro.txt /*usenet* -user-cmd-ambiguous map.txt /*user-cmd-ambiguous* -user-commands map.txt /*user-commands* -user-functions eval.txt /*user-functions* -user-manual usr_toc.txt /*user-manual* -using-<Plug> usr_41.txt /*using-<Plug>* -using-menus gui.txt /*using-menus* -using-scripts repeat.txt /*using-scripts* -using-xxd tips.txt /*using-xxd* -using_CTRL-V map.txt /*using_CTRL-V* -usr_01.txt usr_01.txt /*usr_01.txt* -usr_02.txt usr_02.txt /*usr_02.txt* -usr_03.txt usr_03.txt /*usr_03.txt* -usr_04.txt usr_04.txt /*usr_04.txt* -usr_05.txt usr_05.txt /*usr_05.txt* -usr_06.txt usr_06.txt /*usr_06.txt* -usr_07.txt usr_07.txt /*usr_07.txt* -usr_08.txt usr_08.txt /*usr_08.txt* -usr_09.txt usr_09.txt /*usr_09.txt* -usr_10.txt usr_10.txt /*usr_10.txt* -usr_11.txt usr_11.txt /*usr_11.txt* -usr_12.txt usr_12.txt /*usr_12.txt* -usr_20.txt usr_20.txt /*usr_20.txt* -usr_21.txt usr_21.txt /*usr_21.txt* -usr_22.txt usr_22.txt /*usr_22.txt* -usr_23.txt usr_23.txt /*usr_23.txt* -usr_24.txt usr_24.txt /*usr_24.txt* -usr_25.txt usr_25.txt /*usr_25.txt* -usr_26.txt usr_26.txt /*usr_26.txt* -usr_27.txt usr_27.txt /*usr_27.txt* -usr_28.txt usr_28.txt /*usr_28.txt* -usr_29.txt usr_29.txt /*usr_29.txt* -usr_30.txt usr_30.txt /*usr_30.txt* -usr_31.txt usr_31.txt /*usr_31.txt* -usr_32.txt usr_32.txt /*usr_32.txt* -usr_40.txt usr_40.txt /*usr_40.txt* -usr_41.txt usr_41.txt /*usr_41.txt* -usr_42.txt usr_42.txt /*usr_42.txt* -usr_43.txt usr_43.txt /*usr_43.txt* -usr_44.txt usr_44.txt /*usr_44.txt* -usr_45.txt usr_45.txt /*usr_45.txt* -usr_90.txt usr_90.txt /*usr_90.txt* -usr_toc.txt usr_toc.txt /*usr_toc.txt* -utf-8 mbyte.txt /*utf-8* -utf-8-char-arg mbyte.txt /*utf-8-char-arg* -utf-8-in-xwindows mbyte.txt /*utf-8-in-xwindows* -utf-8-typing mbyte.txt /*utf-8-typing* -utf8 mbyte.txt /*utf8* -v visual.txt /*v* -v:beval_bufnr eval.txt /*v:beval_bufnr* -v:beval_col eval.txt /*v:beval_col* -v:beval_lnum eval.txt /*v:beval_lnum* -v:beval_text eval.txt /*v:beval_text* -v:beval_winnr eval.txt /*v:beval_winnr* -v:char eval.txt /*v:char* -v:charconvert_from eval.txt /*v:charconvert_from* -v:charconvert_to eval.txt /*v:charconvert_to* -v:cmdarg eval.txt /*v:cmdarg* -v:cmdbang eval.txt /*v:cmdbang* -v:count eval.txt /*v:count* -v:count1 eval.txt /*v:count1* -v:ctype eval.txt /*v:ctype* -v:dying eval.txt /*v:dying* -v:errmsg eval.txt /*v:errmsg* -v:exception eval.txt /*v:exception* -v:fcs_choice eval.txt /*v:fcs_choice* -v:fcs_reason eval.txt /*v:fcs_reason* -v:fname_diff eval.txt /*v:fname_diff* -v:fname_in eval.txt /*v:fname_in* -v:fname_new eval.txt /*v:fname_new* -v:fname_out eval.txt /*v:fname_out* -v:folddashes eval.txt /*v:folddashes* -v:foldend eval.txt /*v:foldend* -v:foldlevel eval.txt /*v:foldlevel* -v:foldstart eval.txt /*v:foldstart* -v:insertmode eval.txt /*v:insertmode* -v:key eval.txt /*v:key* -v:lang eval.txt /*v:lang* -v:lc_time eval.txt /*v:lc_time* -v:lnum eval.txt /*v:lnum* -v:mouse_col eval.txt /*v:mouse_col* -v:mouse_lnum eval.txt /*v:mouse_lnum* -v:mouse_win eval.txt /*v:mouse_win* -v:oldfiles eval.txt /*v:oldfiles* -v:operator eval.txt /*v:operator* -v:prevcount eval.txt /*v:prevcount* -v:profiling eval.txt /*v:profiling* -v:progname eval.txt /*v:progname* -v:register eval.txt /*v:register* -v:scrollstart eval.txt /*v:scrollstart* -v:searchforward eval.txt /*v:searchforward* -v:servername eval.txt /*v:servername* -v:shell_error eval.txt /*v:shell_error* -v:statusmsg eval.txt /*v:statusmsg* -v:swapchoice eval.txt /*v:swapchoice* -v:swapcommand eval.txt /*v:swapcommand* -v:swapname eval.txt /*v:swapname* -v:termresponse eval.txt /*v:termresponse* -v:this_session eval.txt /*v:this_session* -v:throwpoint eval.txt /*v:throwpoint* -v:val eval.txt /*v:val* -v:var eval.txt /*v:var* -v:version eval.txt /*v:version* -v:warningmsg eval.txt /*v:warningmsg* -v_! change.txt /*v_!* -v_$ visual.txt /*v_$* -v_: cmdline.txt /*v_:* -v_< change.txt /*v_<* -v_<BS> change.txt /*v_<BS>* -v_<Del> change.txt /*v_<Del>* -v_<Esc> visual.txt /*v_<Esc>* -v_= change.txt /*v_=* -v_> change.txt /*v_>* -v_C change.txt /*v_C* -v_CTRL-C visual.txt /*v_CTRL-C* -v_CTRL-G visual.txt /*v_CTRL-G* -v_CTRL-H change.txt /*v_CTRL-H* -v_CTRL-O visual.txt /*v_CTRL-O* -v_CTRL-V visual.txt /*v_CTRL-V* -v_CTRL-Z starting.txt /*v_CTRL-Z* -v_CTRL-\_CTRL-G intro.txt /*v_CTRL-\\_CTRL-G* -v_CTRL-\_CTRL-N intro.txt /*v_CTRL-\\_CTRL-N* -v_CTRL-] tagsrch.txt /*v_CTRL-]* -v_D change.txt /*v_D* -v_J change.txt /*v_J* -v_K various.txt /*v_K* -v_O visual.txt /*v_O* -v_P change.txt /*v_P* -v_R change.txt /*v_R* -v_S change.txt /*v_S* -v_U change.txt /*v_U* -v_V visual.txt /*v_V* -v_X change.txt /*v_X* -v_Y change.txt /*v_Y* -v_a motion.txt /*v_a* -v_a' motion.txt /*v_a'* -v_a( motion.txt /*v_a(* -v_a) motion.txt /*v_a)* -v_a< motion.txt /*v_a<* -v_a> motion.txt /*v_a>* -v_aB motion.txt /*v_aB* -v_aW motion.txt /*v_aW* -v_a[ motion.txt /*v_a[* -v_a] motion.txt /*v_a]* -v_a` motion.txt /*v_a`* -v_ab motion.txt /*v_ab* -v_ap motion.txt /*v_ap* -v_aquote motion.txt /*v_aquote* -v_as motion.txt /*v_as* -v_at motion.txt /*v_at* -v_aw motion.txt /*v_aw* -v_a{ motion.txt /*v_a{* -v_a} motion.txt /*v_a}* -v_b_< visual.txt /*v_b_<* -v_b_<_example visual.txt /*v_b_<_example* -v_b_> visual.txt /*v_b_>* -v_b_>_example visual.txt /*v_b_>_example* -v_b_A visual.txt /*v_b_A* -v_b_A_example visual.txt /*v_b_A_example* -v_b_C visual.txt /*v_b_C* -v_b_D change.txt /*v_b_D* -v_b_I visual.txt /*v_b_I* -v_b_I_example visual.txt /*v_b_I_example* -v_b_c visual.txt /*v_b_c* -v_b_r visual.txt /*v_b_r* -v_b_r_example visual.txt /*v_b_r_example* -v_c change.txt /*v_c* -v_d change.txt /*v_d* -v_g? change.txt /*v_g?* -v_gF editing.txt /*v_gF* -v_gJ change.txt /*v_gJ* -v_gV visual.txt /*v_gV* -v_g] tagsrch.txt /*v_g]* -v_g_CTRL-G editing.txt /*v_g_CTRL-G* -v_g_CTRL-] tagsrch.txt /*v_g_CTRL-]* -v_gf editing.txt /*v_gf* -v_gq change.txt /*v_gq* -v_gv visual.txt /*v_gv* -v_gw change.txt /*v_gw* -v_i motion.txt /*v_i* -v_i' motion.txt /*v_i'* -v_i( motion.txt /*v_i(* -v_i) motion.txt /*v_i)* -v_i< motion.txt /*v_i<* -v_i> motion.txt /*v_i>* -v_iB motion.txt /*v_iB* -v_iW motion.txt /*v_iW* -v_i[ motion.txt /*v_i[* -v_i] motion.txt /*v_i]* -v_i` motion.txt /*v_i`* -v_ib motion.txt /*v_ib* -v_ip motion.txt /*v_ip* -v_iquote motion.txt /*v_iquote* -v_is motion.txt /*v_is* -v_it motion.txt /*v_it* -v_iw motion.txt /*v_iw* -v_i{ motion.txt /*v_i{* -v_i} motion.txt /*v_i}* -v_o visual.txt /*v_o* -v_p change.txt /*v_p* -v_r change.txt /*v_r* -v_s change.txt /*v_s* -v_u change.txt /*v_u* -v_v visual.txt /*v_v* -v_x change.txt /*v_x* -v_y change.txt /*v_y* -v_~ change.txt /*v_~* -val-variable eval.txt /*val-variable* -valgrind debug.txt /*valgrind* -values() eval.txt /*values()* -var-functions usr_41.txt /*var-functions* -variables eval.txt /*variables* -various various.txt /*various* -various-cmds various.txt /*various-cmds* -various-functions usr_41.txt /*various-functions* -various-motions motion.txt /*various-motions* -various.txt various.txt /*various.txt* -vb.vim syntax.txt /*vb.vim* -vba pi_vimball.txt /*vba* -verbose starting.txt /*verbose* -version-5.1 version5.txt /*version-5.1* -version-5.2 version5.txt /*version-5.2* -version-5.3 version5.txt /*version-5.3* -version-5.4 version5.txt /*version-5.4* -version-5.5 version5.txt /*version-5.5* -version-5.6 version5.txt /*version-5.6* -version-5.7 version5.txt /*version-5.7* -version-5.8 version5.txt /*version-5.8* -version-6.1 version6.txt /*version-6.1* -version-6.2 version6.txt /*version-6.2* -version-6.3 version6.txt /*version-6.3* -version-6.4 version6.txt /*version-6.4* -version-7.0 version7.txt /*version-7.0* -version-7.1 version7.txt /*version-7.1* -version-7.2 version7.txt /*version-7.2* -version-7.3 version7.txt /*version-7.3* -version-variable eval.txt /*version-variable* -version4.txt version4.txt /*version4.txt* -version5.txt version5.txt /*version5.txt* -version6.txt version6.txt /*version6.txt* -version7.0 version7.txt /*version7.0* -version7.1 version7.txt /*version7.1* -version7.2 version7.txt /*version7.2* -version7.3 version7.txt /*version7.3* -version7.txt version7.txt /*version7.txt* -vi intro.txt /*vi* -vi-differences vi_diff.txt /*vi-differences* -vi: options.txt /*vi:* -vi_diff.txt vi_diff.txt /*vi_diff.txt* -view starting.txt /*view* -view-diffs diff.txt /*view-diffs* -view-file starting.txt /*view-file* -views-sessions starting.txt /*views-sessions* -vim-additions vi_diff.txt /*vim-additions* -vim-announce intro.txt /*vim-announce* -vim-arguments starting.txt /*vim-arguments* -vim-default-editor gui_w32.txt /*vim-default-editor* -vim-dev intro.txt /*vim-dev* -vim-mac intro.txt /*vim-mac* -vim-modes intro.txt /*vim-modes* -vim-modes-intro intro.txt /*vim-modes-intro* -vim-multibyte intro.txt /*vim-multibyte* -vim-script-intro usr_41.txt /*vim-script-intro* -vim-variable eval.txt /*vim-variable* -vim.vim syntax.txt /*vim.vim* -vim7 version7.txt /*vim7* -vim: options.txt /*vim:* -vimball pi_vimball.txt /*vimball* -vimball-contents pi_vimball.txt /*vimball-contents* -vimball-extract pi_vimball.txt /*vimball-extract* -vimball-history pi_vimball.txt /*vimball-history* -vimball-intro pi_vimball.txt /*vimball-intro* -vimball-manual pi_vimball.txt /*vimball-manual* -vimball-windows pi_vimball.txt /*vimball-windows* -vimdev intro.txt /*vimdev* -vimdiff diff.txt /*vimdiff* -vimfiles options.txt /*vimfiles* -viminfo starting.txt /*viminfo* -viminfo-encoding starting.txt /*viminfo-encoding* -viminfo-errors starting.txt /*viminfo-errors* -viminfo-file starting.txt /*viminfo-file* -viminfo-file-marks starting.txt /*viminfo-file-marks* -viminfo-file-name starting.txt /*viminfo-file-name* -viminfo-read starting.txt /*viminfo-read* -viminfo-read-write starting.txt /*viminfo-read-write* -viminfo-write starting.txt /*viminfo-write* -vimrc starting.txt /*vimrc* -vimrc-filetype usr_05.txt /*vimrc-filetype* -vimrc-intro usr_05.txt /*vimrc-intro* -vimrc-option-example starting.txt /*vimrc-option-example* -vimrc_example.vim usr_05.txt /*vimrc_example.vim* -vimtutor usr_01.txt /*vimtutor* -virtcol() eval.txt /*virtcol()* -visual-block visual.txt /*visual-block* -visual-change visual.txt /*visual-change* -visual-examples visual.txt /*visual-examples* -visual-index index.txt /*visual-index* -visual-mode visual.txt /*visual-mode* -visual-operators visual.txt /*visual-operators* -visual-repeat visual.txt /*visual-repeat* -visual-search visual.txt /*visual-search* -visual-start visual.txt /*visual-start* -visual-use visual.txt /*visual-use* -visual.txt visual.txt /*visual.txt* -visualmode() eval.txt /*visualmode()* -vms os_vms.txt /*vms* -vms-authors os_vms.txt /*vms-authors* -vms-changes os_vms.txt /*vms-changes* -vms-compiling os_vms.txt /*vms-compiling* -vms-deploy os_vms.txt /*vms-deploy* -vms-download os_vms.txt /*vms-download* -vms-gui os_vms.txt /*vms-gui* -vms-notes os_vms.txt /*vms-notes* -vms-problems os_vms.txt /*vms-problems* -vms-started os_vms.txt /*vms-started* -vms-usage os_vms.txt /*vms-usage* -vote-for-features sponsor.txt /*vote-for-features* -votes-counted sponsor.txt /*votes-counted* -votes-for-changes todo.txt /*votes-for-changes* -vreplace-mode insert.txt /*vreplace-mode* -vt100-cursor-keys term.txt /*vt100-cursor-keys* -vt100-function-keys term.txt /*vt100-function-keys* -w motion.txt /*w* -w32-clientserver remote.txt /*w32-clientserver* -w:current_syntax syntax.txt /*w:current_syntax* -w:quickfix_title quickfix.txt /*w:quickfix_title* -w:var eval.txt /*w:var* -warningmsg-variable eval.txt /*warningmsg-variable* -white-space pattern.txt /*white-space* -whitespace pattern.txt /*whitespace* -wildcard editing.txt /*wildcard* -wildcards editing.txt /*wildcards* -win16-!start gui_w16.txt /*win16-!start* -win16-clipboard gui_w16.txt /*win16-clipboard* -win16-colors gui_w16.txt /*win16-colors* -win16-default-editor gui_w16.txt /*win16-default-editor* -win16-dialogs gui_w16.txt /*win16-dialogs* -win16-drag-n-drop gui_w16.txt /*win16-drag-n-drop* -win16-gui gui_w16.txt /*win16-gui* -win16-maximized gui_w16.txt /*win16-maximized* -win16-printing gui_w16.txt /*win16-printing* -win16-shell gui_w16.txt /*win16-shell* -win16-start gui_w16.txt /*win16-start* -win16-truetype gui_w16.txt /*win16-truetype* -win16-various gui_w16.txt /*win16-various* -win32 os_win32.txt /*win32* -win32-!start gui_w32.txt /*win32-!start* -win32-PATH os_win32.txt /*win32-PATH* -win32-colors gui_w32.txt /*win32-colors* -win32-compiling os_win32.txt /*win32-compiling* -win32-curdir os_win32.txt /*win32-curdir* -win32-faq os_win32.txt /*win32-faq* -win32-gettext mlang.txt /*win32-gettext* -win32-gui gui_w32.txt /*win32-gui* -win32-hidden-menus gui.txt /*win32-hidden-menus* -win32-mouse os_win32.txt /*win32-mouse* -win32-open-with-menu gui_w32.txt /*win32-open-with-menu* -win32-popup-menu gui_w32.txt /*win32-popup-menu* -win32-problems os_win32.txt /*win32-problems* -win32-restore os_win32.txt /*win32-restore* -win32-startup os_win32.txt /*win32-startup* -win32-term os_win32.txt /*win32-term* -win32-vimrun gui_w32.txt /*win32-vimrun* -win32-win3.1 os_win32.txt /*win32-win3.1* -win32s os_win32.txt /*win32s* -winbufnr() eval.txt /*winbufnr()* -wincol() eval.txt /*wincol()* -window windows.txt /*window* -window-contents intro.txt /*window-contents* -window-exit editing.txt /*window-exit* -window-functions usr_41.txt /*window-functions* -window-move-cursor windows.txt /*window-move-cursor* -window-moving windows.txt /*window-moving* -window-resize windows.txt /*window-resize* -window-size term.txt /*window-size* -window-size-functions usr_41.txt /*window-size-functions* -window-tag windows.txt /*window-tag* -window-variable eval.txt /*window-variable* -windows windows.txt /*windows* -windows-3.1 os_win32.txt /*windows-3.1* -windows-intro windows.txt /*windows-intro* -windows-starting windows.txt /*windows-starting* -windows.txt windows.txt /*windows.txt* -windows95 os_win32.txt /*windows95* -winheight() eval.txt /*winheight()* -winline() eval.txt /*winline()* -winnr() eval.txt /*winnr()* -winrestcmd() eval.txt /*winrestcmd()* -winrestview() eval.txt /*winrestview()* -winsaveview() eval.txt /*winsaveview()* -winwidth() eval.txt /*winwidth()* -word motion.txt /*word* -word-count editing.txt /*word-count* -word-motions motion.txt /*word-motions* -workbench starting.txt /*workbench* -workshop workshop.txt /*workshop* -workshop-commands workshop.txt /*workshop-commands* -workshop-compiling workshop.txt /*workshop-compiling* -workshop-configure workshop.txt /*workshop-configure* -workshop-intro workshop.txt /*workshop-intro* -workshop-support workshop.txt /*workshop-support* -workshop-xpm workshop.txt /*workshop-xpm* -workshop.txt workshop.txt /*workshop.txt* -wrap-off intro.txt /*wrap-off* -write-compiler-plugin usr_41.txt /*write-compiler-plugin* -write-device editing.txt /*write-device* -write-fail editing.txt /*write-fail* -write-filetype-plugin usr_41.txt /*write-filetype-plugin* -write-library-script usr_41.txt /*write-library-script* -write-local-help usr_41.txt /*write-local-help* -write-plugin usr_41.txt /*write-plugin* -write-plugin-quickload usr_41.txt /*write-plugin-quickload* -write-quit editing.txt /*write-quit* -write-readonly editing.txt /*write-readonly* -writefile() eval.txt /*writefile()* -writing editing.txt /*writing* -www intro.txt /*www* -x change.txt /*x* -x-input-method mbyte.txt /*x-input-method* -x-resources version5.txt /*x-resources* -x11-clientserver remote.txt /*x11-clientserver* -x11-cut-buffer gui_x11.txt /*x11-cut-buffer* -x11-selection gui_x11.txt /*x11-selection* -xf86conf.vim syntax.txt /*xf86conf.vim* -xfontset mbyte.txt /*xfontset* -xfree-xterm syntax.txt /*xfree-xterm* -xim mbyte.txt /*xim* -xim-input-style mbyte.txt /*xim-input-style* -xiterm syntax.txt /*xiterm* -xml-folding syntax.txt /*xml-folding* -xml-omni-datafile insert.txt /*xml-omni-datafile* -xml.vim syntax.txt /*xml.vim* -xpm.vim syntax.txt /*xpm.vim* -xterm-8-bit term.txt /*xterm-8-bit* -xterm-8bit term.txt /*xterm-8bit* -xterm-blink syntax.txt /*xterm-blink* -xterm-blinking-cursor syntax.txt /*xterm-blinking-cursor* -xterm-clipboard term.txt /*xterm-clipboard* -xterm-codes term.txt /*xterm-codes* -xterm-color syntax.txt /*xterm-color* -xterm-command-server term.txt /*xterm-command-server* -xterm-copy-paste term.txt /*xterm-copy-paste* -xterm-cursor-keys term.txt /*xterm-cursor-keys* -xterm-end-home-keys term.txt /*xterm-end-home-keys* -xterm-function-keys term.txt /*xterm-function-keys* -xterm-modifier-keys term.txt /*xterm-modifier-keys* -xterm-mouse options.txt /*xterm-mouse* -xterm-mouse-wheel scroll.txt /*xterm-mouse-wheel* -xterm-resize term.txt /*xterm-resize* -xterm-save-screen tips.txt /*xterm-save-screen* -xterm-screens tips.txt /*xterm-screens* -xterm-scroll-region term.txt /*xterm-scroll-region* -xterm-shifted-keys term.txt /*xterm-shifted-keys* -y change.txt /*y* -yank change.txt /*yank* -ye-option-gone version4.txt /*ye-option-gone* -year-2000 intro.txt /*year-2000* -your-runtime-dir usr_43.txt /*your-runtime-dir* -yy change.txt /*yy* -z index.txt /*z* -z+ scroll.txt /*z+* -z- scroll.txt /*z-* -z. scroll.txt /*z.* -z/OS os_390.txt /*z\/OS* -z<CR> scroll.txt /*z<CR>* -z<Left> scroll.txt /*z<Left>* -z<Right> scroll.txt /*z<Right>* -z= spell.txt /*z=* -zA fold.txt /*zA* -zC fold.txt /*zC* -zD fold.txt /*zD* -zE fold.txt /*zE* -zF fold.txt /*zF* -zG spell.txt /*zG* -zH scroll.txt /*zH* -zL scroll.txt /*zL* -zM fold.txt /*zM* -zN fold.txt /*zN* -zN<CR> scroll.txt /*zN<CR>* -zO fold.txt /*zO* -zOS os_390.txt /*zOS* -zOS-Bugs os_390.txt /*zOS-Bugs* -zOS-Motif os_390.txt /*zOS-Motif* -zOS-PuTTY os_390.txt /*zOS-PuTTY* -zOS-has-ebcdic os_390.txt /*zOS-has-ebcdic* -zOS-limitations os_390.txt /*zOS-limitations* -zOS-open-source os_390.txt /*zOS-open-source* -zR fold.txt /*zR* -zW spell.txt /*zW* -zX fold.txt /*zX* -z^ scroll.txt /*z^* -za fold.txt /*za* -zb scroll.txt /*zb* -zc fold.txt /*zc* -zd fold.txt /*zd* -ze scroll.txt /*ze* -zf fold.txt /*zf* -zg spell.txt /*zg* -zh scroll.txt /*zh* -zi fold.txt /*zi* -zip pi_zip.txt /*zip* -zip-contents pi_zip.txt /*zip-contents* -zip-copyright pi_zip.txt /*zip-copyright* -zip-extension pi_zip.txt /*zip-extension* -zip-history pi_zip.txt /*zip-history* -zip-manual pi_zip.txt /*zip-manual* -zip-usage pi_zip.txt /*zip-usage* -zj fold.txt /*zj* -zk fold.txt /*zk* -zl scroll.txt /*zl* -zm fold.txt /*zm* -zn fold.txt /*zn* -zo fold.txt /*zo* -zr fold.txt /*zr* -zs scroll.txt /*zs* -zt scroll.txt /*zt* -zuG spell.txt /*zuG* -zuW spell.txt /*zuW* -zug spell.txt /*zug* -zuw spell.txt /*zuw* -zv fold.txt /*zv* -zw spell.txt /*zw* -zx fold.txt /*zx* -zz scroll.txt /*zz* -{ motion.txt /*{* -{Visual} intro.txt /*{Visual}* -{address} cmdline.txt /*{address}* -{arglist} editing.txt /*{arglist}* -{char1-char2} intro.txt /*{char1-char2}* -{event} autocmd.txt /*{event}* -{file} editing.txt /*{file}* -{group-name} syntax.txt /*{group-name}* -{lhs} map.txt /*{lhs}* -{motion} intro.txt /*{motion}* -{move-around} visual.txt /*{move-around}* -{offset} pattern.txt /*{offset}* -{pat} autocmd.txt /*{pat}* -{rhs} map.txt /*{rhs}* -{subject} helphelp.txt /*{subject}* -{} intro.txt /*{}* -} motion.txt /*}* -~ change.txt /*~* diff --git a/share/vim/vim73/doc/tagsrch.txt b/share/vim/vim73/doc/tagsrch.txt deleted file mode 100644 index 70c6c68a..00000000 --- a/share/vim/vim73/doc/tagsrch.txt +++ /dev/null @@ -1,837 +0,0 @@ -*tagsrch.txt* For Vim version 7.3. Last change: 2009 Feb 18 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Tags and special searches *tags-and-searches* - -See section |29.1| of the user manual for an introduction. - -1. Jump to a tag |tag-commands| -2. Tag stack |tag-stack| -3. Tag match list |tag-matchlist| -4. Tags details |tag-details| -5. Tags file format |tags-file-format| -6. Include file searches |include-search| - -============================================================================== -1. Jump to a tag *tag-commands* - - *tag* *tags* -A tag is an identifier that appears in a "tags" file. It is a sort of label -that can be jumped to. For example: In C programs each function name can be -used as a tag. The "tags" file has to be generated by a program like ctags, -before the tag commands can be used. - -With the ":tag" command the cursor will be positioned on the tag. With the -CTRL-] command, the keyword on which the cursor is standing is used as the -tag. If the cursor is not on a keyword, the first keyword to the right of the -cursor is used. - -The ":tag" command works very well for C programs. If you see a call to a -function and wonder what that function does, position the cursor inside of the -function name and hit CTRL-]. This will bring you to the function definition. -An easy way back is with the CTRL-T command. Also read about the tag stack -below. - - *:ta* *:tag* *E426* *E429* -:[count]ta[g][!] {ident} - Jump to the definition of {ident}, using the - information in the tags file(s). Put {ident} in the - tag stack. See |tag-!| for [!]. - {ident} can be a regexp pattern, see |tag-regexp|. - When there are several matching tags for {ident}, jump - to the [count] one. When [count] is omitted the - first one is jumped to. See |tag-matchlist| for - jumping to other matching tags. - -g<LeftMouse> *g<LeftMouse>* -<C-LeftMouse> *<C-LeftMouse>* *CTRL-]* -CTRL-] Jump to the definition of the keyword under the - cursor. Same as ":tag {ident}", where {ident} is the - keyword under or after cursor. - When there are several matching tags for {ident}, jump - to the [count] one. When no [count] is given the - first one is jumped to. See |tag-matchlist| for - jumping to other matching tags. - {Vi: identifier after the cursor} - - *v_CTRL-]* -{Visual}CTRL-] Same as ":tag {ident}", where {ident} is the text that - is highlighted. {not in Vi} - - *telnet-CTRL-]* -CTRL-] is the default telnet escape key. When you type CTRL-] to jump to a -tag, you will get the telnet prompt instead. Most versions of telnet allow -changing or disabling the default escape key. See the telnet man page. You -can 'telnet -E {Hostname}' to disable the escape character, or 'telnet -e -{EscapeCharacter} {Hostname}' to specify another escape character. If -possible, try to use "ssh" instead of "telnet" to avoid this problem. - - *tag-priority* -When there are multiple matches for a tag, this priority is used: -1. "FSC" A full matching static tag for the current file. -2. "F C" A full matching global tag for the current file. -3. "F " A full matching global tag for another file. -4. "FS " A full matching static tag for another file. -5. " SC" An ignore-case matching static tag for the current file. -6. " C" An ignore-case matching global tag for the current file. -7. " " An ignore-case matching global tag for another file. -8. " S " An ignore-case matching static tag for another file. - -Note that when the current file changes, the priority list is mostly not -changed, to avoid confusion when using ":tnext". It is changed when using -":tag {ident}". - -The ignore-case matches are not found for a ":tag" command when the -'ignorecase' option is off. They are found when a pattern is used (starting -with a "/") and for ":tselect", also when 'ignorecase' is off. Note that -using ignore-case tag searching disables binary searching in the tags file, -which causes a slowdown. This can be avoided by fold-case sorting the tag -file. See the 'tagbsearch' option for an explanation. - -============================================================================== -2. Tag stack *tag-stack* *tagstack* *E425* - -On the tag stack is remembered which tags you jumped to, and from where. -Tags are only pushed onto the stack when the 'tagstack' option is set. - -g<RightMouse> *g<RightMouse>* -<C-RightMouse> *<C-RightMouse>* *CTRL-T* -CTRL-T Jump to [count] older entry in the tag stack - (default 1). {not in Vi} - - *:po* *:pop* *E555* *E556* -:[count]po[p][!] Jump to [count] older entry in tag stack (default 1). - See |tag-!| for [!]. {not in Vi} - -:[count]ta[g][!] Jump to [count] newer entry in tag stack (default 1). - See |tag-!| for [!]. {not in Vi} - - *:tags* -:tags Show the contents of the tag stack. The active - entry is marked with a '>'. {not in Vi} - -The output of ":tags" looks like this: - - # TO tag FROM line in file/line - 1 1 main 1 harddisk2:text/vim/test - > 2 2 FuncA 58 i = FuncA(10); - 3 1 FuncC 357 harddisk2:text/vim/src/amiga.c - -This list shows the tags that you jumped to and the cursor position before -that jump. The older tags are at the top, the newer at the bottom. - -The '>' points to the active entry. This is the tag that will be used by the -next ":tag" command. The CTRL-T and ":pop" command will use the position -above the active entry. - -Below the "TO" is the number of the current match in the match list. Note -that this doesn't change when using ":pop" or ":tag". - -The line number and file name are remembered to be able to get back to where -you were before the tag command. The line number will be correct, also when -deleting/inserting lines, unless this was done by another program (e.g. -another instance of Vim). - -For the current file, the "file/line" column shows the text at the position. -An indent is removed and a long line is truncated to fit in the window. - -You can jump to previously used tags with several commands. Some examples: - - ":pop" or CTRL-T to position before previous tag - {count}CTRL-T to position before {count} older tag - ":tag" to newer tag - ":0tag" to last used tag - -The most obvious way to use this is while browsing through the call graph of -a program. Consider the following call graph: - - main ---> FuncA ---> FuncC - ---> FuncB - -(Explanation: main calls FuncA and FuncB; FuncA calls FuncC). -You can get from main to FuncA by using CTRL-] on the call to FuncA. Then -you can CTRL-] to get to FuncC. If you now want to go back to main you can -use CTRL-T twice. Then you can CTRL-] to FuncB. - -If you issue a ":ta {ident}" or CTRL-] command, this tag is inserted at the -current position in the stack. If the stack was full (it can hold up to 20 -entries), the oldest entry is deleted and the older entries shift one -position up (their index number is decremented by one). If the last used -entry was not at the bottom, the entries below the last used one are -deleted. This means that an old branch in the call graph is lost. After the -commands explained above the tag stack will look like this: - - # TO tag FROM line in file - 1 main 1 harddisk2:text/vim/test - 2 FuncB 59 harddisk2:text/vim/src/main.c - - *E73* -When you try to use the tag stack while it doesn't contain anything you will -get an error message. - -============================================================================== -3. Tag match list *tag-matchlist* *E427* *E428* - -When there are several matching tags, these commands can be used to jump -between them. Note that these commands don't change the tag stack, they keep -the same entry. - - *:ts* *:tselect* -:ts[elect][!] [ident] List the tags that match [ident], using the - information in the tags file(s). - When [ident] is not given, the last tag name from the - tag stack is used. - With a '>' in the first column is indicated which is - the current position in the list (if there is one). - [ident] can be a regexp pattern, see |tag-regexp|. - See |tag-priority| for the priorities used in the - listing. {not in Vi} - Example output: - -> - nr pri kind tag file - 1 F f mch_delay os_amiga.c - mch_delay(msec, ignoreinput) - > 2 F f mch_delay os_msdos.c - mch_delay(msec, ignoreinput) - 3 F f mch_delay os_unix.c - mch_delay(msec, ignoreinput) - Enter nr of choice (<CR> to abort): -< - See |tag-priority| for the "pri" column. Note that - this depends on the current file, thus using - ":tselect xxx" can produce different results. - The "kind" column gives the kind of tag, if this was - included in the tags file. - The "info" column shows information that could be - found in the tags file. It depends on the program - that produced the tags file. - When the list is long, you may get the |more-prompt|. - If you already see the tag you want to use, you can - type 'q' and enter the number. - - *:sts* *:stselect* -:sts[elect][!] [ident] Does ":tselect[!] [ident]" and splits the window for - the selected tag. {not in Vi} - - *g]* -g] Like CTRL-], but use ":tselect" instead of ":tag". - {not in Vi} - - *v_g]* -{Visual}g] Same as "g]", but use the highlighted text as the - identifier. {not in Vi} - - *:tj* *:tjump* -:tj[ump][!] [ident] Like ":tselect", but jump to the tag directly when - there is only one match. {not in Vi} - - *:stj* *:stjump* -:stj[ump][!] [ident] Does ":tjump[!] [ident]" and splits the window for the - selected tag. {not in Vi} - - *g_CTRL-]* -g CTRL-] Like CTRL-], but use ":tjump" instead of ":tag". - {not in Vi} - - *v_g_CTRL-]* -{Visual}g CTRL-] Same as "g CTRL-]", but use the highlighted text as - the identifier. {not in Vi} - - *:tn* *:tnext* -:[count]tn[ext][!] Jump to [count] next matching tag (default 1). See - |tag-!| for [!]. {not in Vi} - - *:tp* *:tprevious* -:[count]tp[revious][!] Jump to [count] previous matching tag (default 1). - See |tag-!| for [!]. {not in Vi} - - *:tN* *:tNext* -:[count]tN[ext][!] Same as ":tprevious". {not in Vi} - - *:tr* *:trewind* -:[count]tr[ewind][!] Jump to first matching tag. If [count] is given, jump - to [count]th matching tag. See |tag-!| for [!]. {not - in Vi} - - *:tf* *:tfirst* -:[count]tf[irst][!] Same as ":trewind". {not in Vi} - - *:tl* *:tlast* -:tl[ast][!] Jump to last matching tag. See |tag-!| for [!]. {not - in Vi} - - *:lt* *:ltag* -:lt[ag][!] [ident] Jump to tag [ident] and add the matching tags to a new - location list for the current window. [ident] can be - a regexp pattern, see |tag-regexp|. When [ident] is - not given, the last tag name from the tag stack is - used. The search pattern to locate the tag line is - prefixed with "\V" to escape all the special - characters (very nomagic). The location list showing - the matching tags is independent of the tag stack. - See |tag-!| for [!]. - {not in Vi} - -When there is no other message, Vim shows which matching tag has been jumped -to, and the number of matching tags: > - tag 1 of 3 or more -The " or more" is used to indicate that Vim didn't try all the tags files yet. -When using ":tnext" a few times, or with ":tlast", more matches may be found. - -When you didn't see this message because of some other message, or you just -want to know where you are, this command will show it again (and jump to the -same tag as last time): > - :0tn -< - *tag-skip-file* -When a matching tag is found for which the file doesn't exist, this match is -skipped and the next matching tag is used. Vim reports this, to notify you of -missing files. When the end of the list of matches has been reached, an error -message is given. - - *tag-preview* -The tag match list can also be used in the preview window. The commands are -the same as above, with a "p" prepended. -{not available when compiled without the |+quickfix| feature} - - *:pts* *:ptselect* -:pts[elect][!] [ident] Does ":tselect[!] [ident]" and shows the new tag in a - "Preview" window. See |:ptag| for more info. - {not in Vi} - - *:ptj* *:ptjump* -:ptj[ump][!] [ident] Does ":tjump[!] [ident]" and shows the new tag in a - "Preview" window. See |:ptag| for more info. - {not in Vi} - - *:ptn* *:ptnext* -:[count]ptn[ext][!] ":tnext" in the preview window. See |:ptag|. - {not in Vi} - - *:ptp* *:ptprevious* -:[count]ptp[revious][!] ":tprevious" in the preview window. See |:ptag|. - {not in Vi} - - *:ptN* *:ptNext* -:[count]ptN[ext][!] Same as ":ptprevious". {not in Vi} - - *:ptr* *:ptrewind* -:[count]ptr[ewind][!] ":trewind" in the preview window. See |:ptag|. - {not in Vi} - - *:ptf* *:ptfirst* -:[count]ptf[irst][!] Same as ":ptrewind". {not in Vi} - - *:ptl* *:ptlast* -:ptl[ast][!] ":tlast" in the preview window. See |:ptag|. - {not in Vi} - -============================================================================== -4. Tags details *tag-details* - - *static-tag* -A static tag is a tag that is defined for a specific file. In a C program -this could be a static function. - -In Vi jumping to a tag sets the current search pattern. This means that -the "n" command after jumping to a tag does not search for the same pattern -that it did before jumping to the tag. Vim does not do this as we consider it -to be a bug. You can still find the tag search pattern in the search history. -If you really want the old Vi behavior, set the 't' flag in 'cpoptions'. - - *tag-binary-search* -Vim uses binary searching in the tags file to find the desired tag quickly -(when enabled at compile time |+tag_binary|). But this only works if the -tags file was sorted on ASCII byte value. Therefore, if no match was found, -another try is done with a linear search. If you only want the linear search, -reset the 'tagbsearch' option. Or better: Sort the tags file! - -Note that the binary searching is disabled when not looking for a tag with a -specific name. This happens when ignoring case and when a regular expression -is used that doesn't start with a fixed string. Tag searching can be a lot -slower then. The former can be avoided by case-fold sorting the tags file. -See 'tagbsearch' for details. - - *tag-regexp* -The ":tag" and "tselect" commands accept a regular expression argument. See -|pattern| for the special characters that can be used. -When the argument starts with '/', it is used as a pattern. If the argument -does not start with '/', it is taken literally, as a full tag name. -Examples: > - :tag main -< jumps to the tag "main" that has the highest priority. > - :tag /^get -< jumps to the tag that starts with "get" and has the highest priority. > - :tag /norm -< lists all the tags that contain "norm", including "id_norm". -When the argument both exists literally, and match when used as a regexp, a -literal match has a higher priority. For example, ":tag /open" matches "open" -before "open_file" and "file_open". -When using a pattern case is ignored. If you want to match case use "\C" in -the pattern. - - *tag-!* -If the tag is in the current file this will always work. Otherwise the -performed actions depend on whether the current file was changed, whether a ! -is added to the command and on the 'autowrite' option: - - tag in file autowrite ~ -current file changed ! option action ~ ------------------------------------------------------------------------------ - yes x x x goto tag - no no x x read other file, goto tag - no yes yes x abandon current file, read other file, goto - tag - no yes no on write current file, read other file, goto - tag - no yes no off fail ------------------------------------------------------------------------------ - -- If the tag is in the current file, the command will always work. -- If the tag is in another file and the current file was not changed, the - other file will be made the current file and read into the buffer. -- If the tag is in another file, the current file was changed and a ! is - added to the command, the changes to the current file are lost, the other - file will be made the current file and read into the buffer. -- If the tag is in another file, the current file was changed and the - 'autowrite' option is on, the current file will be written, the other - file will be made the current file and read into the buffer. -- If the tag is in another file, the current file was changed and the - 'autowrite' option is off, the command will fail. If you want to save - the changes, use the ":w" command and then use ":tag" without an argument. - This works because the tag is put on the stack anyway. If you want to lose - the changes you can use the ":tag!" command. - - *tag-security* -Note that Vim forbids some commands, for security reasons. This works like -using the 'secure' option for exrc/vimrc files in the current directory. See -|trojan-horse| and |sandbox|. -When the {tagaddress} changes a buffer, you will get a warning message: - "WARNING: tag command changed a buffer!!!" -In a future version changing the buffer will be impossible. All this for -security reasons: Somebody might hide a nasty command in the tags file, which -would otherwise go unnoticed. Example: > - :$d|/tag-function-name/ -{this security prevention is not present in Vi} - -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 -put in the search history, so you can modify it if searching fails. - - *emacs-tags* *emacs_tags* *E430* -Emacs style tag files are only supported if Vim was compiled with the -|+emacs_tags| feature enabled. Sorry, there is no explanation about Emacs tag -files here, it is only supported for backwards compatibility :-). - -Lines in Emacs tags files can be very long. Vim only deals with lines of up -to about 510 bytes. To see whether lines are ignored set 'verbose' to 5 or -higher. - - *tags-option* -The 'tags' option is a list of file names. Each of these files is searched -for the tag. This can be used to use a different tags file than the default -file "tags". It can also be used to access a common tags file. - -The next file in the list is not used when: -- A matching static tag for the current buffer has been found. -- A matching global tag has been found. -This also depends on the 'ignorecase' option. If it is off, and the tags file -only has a match without matching case, the next tags file is searched for a -match with matching case. If no tag with matching case is found, the first -match without matching case is used. If 'ignorecase' is on, and a matching -global tag with or without matching case is found, this one is used, no -further tags files are searched. - -When a tag file name starts with "./", the '.' is replaced with the path of -the current file. This makes it possible to use a tags file in the directory -where the current file is (no matter what the current directory is). The idea -of using "./" is that you can define which tag file is searched first: In the -current directory ("tags,./tags") or in the directory of the current file -("./tags,tags"). - -For example: > - :set tags=./tags,tags,/home/user/commontags - -In this example the tag will first be searched for in the file "tags" in the -directory where the current file is. Next the "tags" file in the current -directory. If it is not found there, then the file "/home/user/commontags" -will be searched for the tag. - -This can be switched off by including the 'd' flag in 'cpoptions', to make -it Vi compatible. "./tags" will then be the tags file in the current -directory, instead of the tags file in the directory where the current file -is. - -Instead of the comma a space may be used. Then a backslash is required for -the space to be included in the string option: > - :set tags=tags\ /home/user/commontags - -To include a space in a file name use three backslashes. To include a comma -in a file name use two backslashes. For example, use: > - :set tags=tag\\\ file,/home/user/common\\,tags - -for the files "tag file" and "/home/user/common,tags". The 'tags' option will -have the value "tag\ file,/home/user/common\,tags". - -If the 'tagrelative' option is on (which is the default) and using a tag file -in another directory, file names in that tag file are relative to the -directory where the tag file is. - -============================================================================== -5. Tags file format *tags-file-format* *E431* - - *ctags* *jtags* -A tags file can be created with an external command, for example "ctags". It -will contain a tag for each function. Some versions of "ctags" will also make -a tag for each "#defined" macro, typedefs, enums, etc. - -Some programs that generate tags files: -ctags As found on most Unix systems. Only supports C. Only - does the basic work. - *Exuberant_ctags* -exuberant ctags This a very good one. It works for C, C++, Java, - Fortran, Eiffel and others. It can generate tags for - many items. See http://ctags.sourceforge.net. -etags Connected to Emacs. Supports many languages. -JTags For Java, in Java. It can be found at - http://www.fleiner.com/jtags/. -ptags.py For Python, in Python. Found in your Python source - directory at Tools/scripts/ptags.py. -ptags For Perl, in Perl. It can be found at - http://www.eleves.ens.fr:8080/home/nthiery/Tags/. -gnatxref For Ada. See http://www.gnuada.org/. gnatxref is - part of the gnat package. - - -The lines in the tags file must have one of these three formats: - -1. {tagname} {TAB} {tagfile} {TAB} {tagaddress} -2. {tagfile}:{tagname} {TAB} {tagfile} {TAB} {tagaddress} -3. {tagname} {TAB} {tagfile} {TAB} {tagaddress} {term} {field} .. - -The first is a normal tag, which is completely compatible with Vi. It is the -only format produced by traditional ctags implementations. This is often used -for functions that are global, also referenced in other files. - -The lines in the tags file can end in <LF> or <CR><LF>. On the Macintosh <CR> -also works. The <CR> and <NL> characters can never appear inside a line. - - *tag-old-static* -The second format is for a static tag only. It is obsolete now, replaced by -the third format. It is only supported by Elvis 1.x and Vim and a few -versions of ctags. A static tag is often used for functions that are local, -only referenced in the file {tagfile}. Note that for the static tag, the two -occurrences of {tagfile} must be exactly the same. Also see |tags-option| -below, for how static tags are used. - -The third format is new. It includes additional information in optional -fields at the end of each line. It is backwards compatible with Vi. It is -only supported by new versions of ctags (such as Exuberant ctags). - -{tagname} The identifier. Normally the name of a function, but it can - be any identifier. It cannot contain a <Tab>. -{TAB} One <Tab> character. Note: previous versions allowed any - white space here. This has been abandoned to allow spaces in - {tagfile}. It can be re-enabled by including the - |+tag_any_white| feature at compile time. *tag-any-white* -{tagfile} The file that contains the definition of {tagname}. It can - have an absolute or relative path. It may contain environment - variables and wildcards (although the use of wildcards is - doubtful). It cannot contain a <Tab>. -{tagaddress} The Ex command that positions the cursor on the tag. It can - be any Ex command, although restrictions apply (see - |tag-security|). Posix only allows line numbers and search - commands, which are mostly used. -{term} ;" The two characters semicolon and double quote. This is - interpreted by Vi as the start of a comment, which makes the - following be ignored. This is for backwards compatibility - with Vi, it ignores the following fields. -{field} .. A list of optional fields. Each field has the form: - - <Tab>{fieldname}:{value} - - The {fieldname} identifies the field, and can only contain - alphabetical characters [a-zA-Z]. - The {value} is any string, but cannot contain a <Tab>. - These characters are special: - "\t" stands for a <Tab> - "\r" stands for a <CR> - "\n" stands for a <NL> - "\\" stands for a single '\' character - - There is one field that doesn't have a ':'. This is the kind - of the tag. It is handled like it was preceded with "kind:". - See the documentation of ctags for the kinds it produces. - - The only other field currently recognized by Vim is "file:" - (with an empty value). It is used for a static tag. - -The first lines in the tags file can contain lines that start with - !_TAG_ -These are sorted to the first lines, only rare tags that start with "!" can -sort to before them. Vim recognizes two items. The first one is the line -that indicates if the file was sorted. When this line is found, Vim uses -binary searching for the tags file: - !_TAG_FILE_SORTED<Tab>1<Tab>{anything} ~ - -A tag file may be case-fold sorted to avoid a linear search when 'ignorecase' -is on. See 'tagbsearch' for details. The value '2' should be used then: - !_TAG_FILE_SORTED<Tab>2<Tab>{anything} ~ - -The other tag that Vim recognizes, but only when compiled with the -|+multi_byte| feature, is the encoding of the tags file: - !_TAG_FILE_ENCODING<Tab>utf-8<Tab>{anything} ~ -Here "utf-8" is the encoding used for the tags. Vim will then convert the tag -being searched for from 'encoding' to the encoding of the tags file. And when -listing tags the reverse happens. When the conversion fails the unconverted -tag is used. - - *tag-search* -The command can be any Ex command, but often it is a search command. -Examples: - tag1 file1 /^main(argc, argv)/ ~ - tag2 file2 108 ~ - -The command is always executed with 'magic' not set. The only special -characters in a search pattern are "^" (begin-of-line) and "$" (<EOL>). -See |pattern|. Note that you must put a backslash before each backslash in -the search text. This is for backwards compatibility with Vi. - - *E434* *E435* -If the command is a normal search command (it starts and ends with "/" or -"?"), some special handling is done: -- Searching starts on line 1 of the file. - The direction of the search is forward for "/", backward for "?". - Note that 'wrapscan' does not matter, the whole file is always searched. (Vi - does use 'wrapscan', which caused tags sometimes not be found.) {Vi starts - searching in line 2 of another file. It does not find a tag in line 1 of - another file when 'wrapscan' is not set} -- If the search fails, another try is done ignoring case. If that fails too, - a search is done for: - "^tagname[ \t]*(" - (the tag with '^' prepended and "[ \t]*(" appended). When using function - names, this will find the function name when it is in column 0. This will - help when the arguments to the function have changed since the tags file was - made. If this search also fails another search is done with: - "^[#a-zA-Z_].*\<tagname[ \t]*(" - This means: A line starting with '#' or an identifier and containing the tag - followed by white space and a '('. This will find macro names and function - names with a type prepended. {the extra searches are not in Vi} - -============================================================================== -6. Include file searches *include-search* *definition-search* - *E387* *E388* *E389* - -These commands look for a string in the current file and in all encountered -included files (recursively). This can be used to find the definition of a -variable, function or macro. If you only want to search in the current -buffer, use the commands listed at |pattern-searches|. - -These commands are not available when the |+find_in_path| feature was disabled -at compile time. - -When a line is encountered that includes another file, that file is searched -before continuing in the current buffer. Files included by included files are -also searched. When an include file could not be found it is silently -ignored. Use the |:checkpath| command to discover which files could not be -found, possibly your 'path' option is not set up correctly. Note: the -included file is searched, not a buffer that may be editing that file. Only -for the current file the lines in the buffer are used. - -The string can be any keyword or a defined macro. For the keyword any match -will be found. For defined macros only lines that match with the 'define' -option will be found. The default is "^#\s*define", which is for C programs. -For other languages you probably want to change this. See 'define' for an -example for C++. The string cannot contain an end-of-line, only matches -within a line are found. - -When a match is found for a defined macro, the displaying of lines continues -with the next line when a line ends in a backslash. - -The commands that start with "[" start searching from the start of the current -file. The commands that start with "]" start at the current cursor position. - -The 'include' option is used to define a line that includes another file. The -default is "\^#\s*include", which is for C programs. Note: Vim does not -recognize C syntax, if the 'include' option matches a line inside -"#ifdef/#endif" or inside a comment, it is searched anyway. The 'isfname' -option is used to recognize the file name that comes after the matched -pattern. - -The 'path' option is used to find the directory for the include files that -do not have an absolute path. - -The 'comments' option is used for the commands that display a single line or -jump to a line. It defines patterns that may start a comment. Those lines -are ignored for the search, unless [!] is used. One exception: When the line -matches the pattern "^# *define" it is not considered to be a comment. - -If you want to list matches, and then select one to jump to, you could use a -mapping to do that for you. Here is an example: > - - :map <F4> [I:let nr = input("Which one: ")<Bar>exe "normal " . nr ."[\t"<CR> -< - *[i* -[i Display the first line that contains the keyword - under the cursor. The search starts at the beginning - of the file. Lines that look like a comment are - ignored (see 'comments' option). If a count is given, - the count'th matching line is displayed, and comment - lines are not ignored. {not in Vi} - - *]i* -]i like "[i", but start at the current cursor position. - {not in Vi} - - *:is* *:isearch* -:[range]is[earch][!] [count] [/]pattern[/] - Like "[i" and "]i", but search in [range] lines - (default: whole file). - See |:search-args| for [/] and [!]. {not in Vi} - - *[I* -[I Display all lines that contain the keyword under the - cursor. Filenames and line numbers are displayed - for the found lines. The search starts at the - beginning of the file. {not in Vi} - - *]I* -]I like "[I", but start at the current cursor position. - {not in Vi} - - *:il* *:ilist* -:[range]il[ist][!] [/]pattern[/] - Like "[I" and "]I", but search in [range] lines - (default: whole file). - See |:search-args| for [/] and [!]. {not in Vi} - - *[_CTRL-I* -[ CTRL-I Jump to the first line that contains the keyword - under the cursor. The search starts at the beginning - of the file. Lines that look like a comment are - ignored (see 'comments' option). If a count is given, - the count'th matching line is jumped to, and comment - lines are not ignored. {not in Vi} - - *]_CTRL-I* -] CTRL-I like "[ CTRL-I", but start at the current cursor - position. {not in Vi} - - *:ij* *:ijump* -:[range]ij[ump][!] [count] [/]pattern[/] - Like "[ CTRL-I" and "] CTRL-I", but search in - [range] lines (default: whole file). - See |:search-args| for [/] and [!]. {not in Vi} - -CTRL-W CTRL-I *CTRL-W_CTRL-I* *CTRL-W_i* -CTRL-W i Open a new window, with the cursor on the first line - that contains the keyword under the cursor. The - search starts at the beginning of the file. Lines - that look like a comment line are ignored (see - 'comments' option). If a count is given, the count'th - matching line is jumped to, and comment lines are not - ignored. {not in Vi} - - *:isp* *:isplit* -:[range]isp[lit][!] [count] [/]pattern[/] - Like "CTRL-W i" and "CTRL-W i", but search in - [range] lines (default: whole file). - See |:search-args| for [/] and [!]. {not in Vi} - - *[d* -[d Display the first macro definition that contains the - macro under the cursor. The search starts from the - beginning of the file. If a count is given, the - count'th matching line is displayed. {not in Vi} - - *]d* -]d like "[d", but start at the current cursor position. - {not in Vi} - - *:ds* *:dsearch* -:[range]ds[earch][!] [count] [/]string[/] - Like "[d" and "]d", but search in [range] lines - (default: whole file). - See |:search-args| for [/] and [!]. {not in Vi} - - *[D* -[D Display all macro definitions that contain the macro - under the cursor. Filenames and line numbers are - displayed for the found lines. The search starts - from the beginning of the file. {not in Vi} - - *]D* -]D like "[D", but start at the current cursor position. - {not in Vi} - - *:dli* *:dlist* -:[range]dl[ist][!] [/]string[/] - Like "[D" and "]D", but search in [range] lines - (default: whole file). - See |:search-args| for [/] and [!]. {not in Vi} - Note that ":dl" works like ":delete" with the "l" - flag. - - *[_CTRL-D* -[ CTRL-D Jump to the first macro definition that contains the - keyword under the cursor. The search starts from - the beginning of the file. If a count is given, the - count'th matching line is jumped to. {not in Vi} - - *]_CTRL-D* -] CTRL-D like "[ CTRL-D", but start at the current cursor - position. {not in Vi} - - *:dj* *:djump* -:[range]dj[ump][!] [count] [/]string[/] - Like "[ CTRL-D" and "] CTRL-D", but search in - [range] lines (default: whole file). - See |:search-args| for [/] and [!]. {not in Vi} - -CTRL-W CTRL-D *CTRL-W_CTRL-D* *CTRL-W_d* -CTRL-W d Open a new window, with the cursor on the first - macro definition line that contains the keyword - under the cursor. The search starts from the - beginning of the file. If a count is given, the - count'th matching line is jumped to. {not in Vi} - - *:dsp* *:dsplit* -:[range]dsp[lit][!] [count] [/]string[/] - Like "CTRL-W d", but search in [range] lines - (default: whole file). - See |:search-args| for [/] and [!]. {not in Vi} - - *:che* *:checkpath* -:che[ckpath] List all the included files that could not be found. - {not in Vi} - -:che[ckpath]! List all the included files. {not in Vi} - - *:search-args* -Common arguments for the commands above: -[!] When included, find matches in lines that are recognized as comments. - When excluded, a match is ignored when the line is recognized as a - comment (according to 'comments'), or the match is in a C comment (after - "//" or inside /* */). Note that a match may be missed if a line is - recognized as a comment, but the comment ends halfway the line. - And if the line is a comment, but it is not recognized (according to - 'comments') a match may be found in it anyway. Example: > - /* comment - foobar */ -< A match for "foobar" is found, because this line is not recognized as a - comment (even though syntax highlighting does recognize it). - Note: Since a macro definition mostly doesn't look like a comment, the - [!] makes no difference for ":dlist", ":dsearch" and ":djump". -[/] A pattern can be surrounded by '/'. Without '/' only whole words are - matched, using the pattern "\<pattern\>". Only after the second '/' a - next command can be appended with '|'. Example: > - :isearch /string/ | echo "the last one" -< For a ":djump", ":dsplit", ":dlist" and ":dsearch" command the pattern - is used as a literal string, not as a search pattern. - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/term.txt b/share/vim/vim73/doc/term.txt deleted file mode 100644 index 8dc97739..00000000 --- a/share/vim/vim73/doc/term.txt +++ /dev/null @@ -1,876 +0,0 @@ -*term.txt* For Vim version 7.3. Last change: 2009 Nov 05 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Terminal information *terminal-info* - -Vim uses information about the terminal you are using to fill the screen and -recognize what keys you hit. If this information is not correct, the screen -may be messed up or keys may not be recognized. The actions which have to be -performed on the screen are accomplished by outputting a string of -characters. Special keys produce a string of characters. These strings are -stored in the terminal options, see |terminal-options|. - -NOTE: Most of this is not used when running the |GUI|. - -1. Startup |startup-terminal| -2. Terminal options |terminal-options| -3. Window size |window-size| -4. Slow and fast terminals |slow-fast-terminal| -5. Using the mouse |mouse-using| - -============================================================================== -1. Startup *startup-terminal* - -When Vim is started a default terminal type is assumed. For the Amiga this is -a standard CLI window, for MS-DOS the pc terminal, for Unix an ansi terminal. -A few other terminal types are always available, see below |builtin-terms|. - -You can give the terminal name with the '-T' Vim argument. If it is not given -Vim will try to get the name from the TERM environment variable. - - *termcap* *terminfo* *E557* *E558* *E559* -On Unix the terminfo database or termcap file is used. This is referred to as -"termcap" in all the documentation. At compile time, when running configure, -the choice whether to use terminfo or termcap is done automatically. When -running Vim the output of ":version" will show |+terminfo| if terminfo is -used. Also see |xterm-screens|. - -On non-Unix systems a termcap is only available if Vim was compiled with -TERMCAP defined. - - *builtin-terms* *builtin_terms* -Which builtin terminals are available depends on a few defines in feature.h, -which need to be set at compile time: - define output of ":version" terminals builtin ~ -NO_BUILTIN_TCAPS -builtin_terms none -SOME_BUILTIN_TCAPS +builtin_terms most common ones (default) -ALL_BUILTIN_TCAPS ++builtin_terms all available - -You can see a list of available builtin terminals with ":set term=xxx" (when -not running the GUI). Also see |+builtin_terms|. - -If the termcap code is included Vim will try to get the strings for the -terminal you are using from the termcap file and the builtin termcaps. Both -are always used, if an entry for the terminal you are using is present. Which -one is used first depends on the 'ttybuiltin' option: - -'ttybuiltin' on 1: builtin termcap 2: external termcap -'ttybuiltin' off 1: external termcap 2: builtin termcap - -If an option is missing in one of them, it will be obtained from the other -one. If an option is present in both, the one first encountered is used. - -Which external termcap file is used varies from system to system and may -depend on the environment variables "TERMCAP" and "TERMPATH". See "man -tgetent". - -Settings depending on terminal *term-dependent-settings* - -If you want to set options or mappings, depending on the terminal name, you -can do this best in your .vimrc. Example: > - - if &term == "xterm" - ... xterm maps and settings ... - elseif &term =~ "vt10." - ... vt100, vt102 maps and settings ... - endif -< - *raw-terminal-mode* -For normal editing the terminal will be put into "raw" mode. The strings -defined with 't_ti' and 't_ks' will be sent to the terminal. Normally this -puts the terminal in a state where the termcap codes are valid and activates -the cursor and function keys. When Vim exits the terminal will be put back -into the mode it was before Vim started. The strings defined with 't_te' and -'t_ke' will be sent to the terminal. On the Amiga, with commands that execute -an external command (e.g., "!!"), the terminal will be put into Normal mode -for a moment. This means that you can stop the output to the screen by -hitting a printing key. Output resumes when you hit <BS>. - - *cs7-problem* -Note: If the terminal settings are changed after running Vim, you might have -an illegal combination of settings. This has been reported on Solaris 2.5 -with "stty cs8 parenb", which is restored as "stty cs7 parenb". Use -"stty cs8 -parenb -istrip" instead, this is restored correctly. - -Some termcap entries are wrong in the sense that after sending 't_ks' the -cursor keys send codes different from the codes defined in the termcap. To -avoid this you can set 't_ks' (and 't_ke') to empty strings. This must be -done during initialization (see |initialization|), otherwise it's too late. - -Some termcap entries assume that the highest bit is always reset. For -example: The cursor-up entry for the Amiga could be ":ku=\E[A:". But the -Amiga really sends "\233A". This works fine if the highest bit is reset, -e.g., when using an Amiga over a serial line. If the cursor keys don't work, -try the entry ":ku=\233A:". - -Some termcap entries have the entry ":ku=\E[A:". But the Amiga really sends -"\233A". On output "\E[" and "\233" are often equivalent, on input they -aren't. You will have to change the termcap entry, or change the key code with -the :set command to fix this. - -Many cursor key codes start with an <Esc>. Vim must find out if this is a -single hit of the <Esc> key or the start of a cursor key sequence. It waits -for a next character to arrive. If it does not arrive within one second a -single <Esc> is assumed. On very slow systems this may fail, causing cursor -keys not to work sometimes. If you discover this problem reset the 'timeout' -option. Vim will wait for the next character to arrive after an <Esc>. If -you want to enter a single <Esc> you must type it twice. Resetting the -'esckeys' option avoids this problem in Insert mode, but you lose the -possibility to use cursor and function keys in Insert mode. - -On the Amiga the recognition of window resizing is activated only when the -terminal name is "amiga" or "builtin_amiga". - -Some terminals have confusing codes for the cursor keys. The televideo 925 is -such a terminal. It sends a CTRL-H for cursor-left. This would make it -impossible to distinguish a backspace and cursor-left. To avoid this problem -CTRL-H is never recognized as cursor-left. - - *vt100-cursor-keys* *xterm-cursor-keys* -Other terminals (e.g., vt100 and xterm) have cursor keys that send <Esc>OA, -<Esc>OB, etc. Unfortunately these are valid commands in insert mode: Stop -insert, Open a new line above the new one, start inserting 'A', 'B', etc. -Instead of performing these commands Vim will erroneously recognize this typed -key sequence as a cursor key movement. To avoid this and make Vim do what you -want in either case you could use these settings: > - :set notimeout " don't timeout on mappings - :set ttimeout " do timeout on terminal key codes - :set timeoutlen=100 " timeout after 100 msec -This requires the key-codes to be sent within 100 msec in order to recognize -them as a cursor key. When you type you normally are not that fast, so they -are recognized as individual typed commands, even though Vim receives the same -sequence of bytes. - - *vt100-function-keys* *xterm-function-keys* -An xterm can send function keys F1 to F4 in two modes: vt100 compatible or -not. Because Vim may not know what the xterm is sending, both types of keys -are recognized. The same happens for the <Home> and <End> keys. - normal vt100 ~ - <F1> t_k1 <Esc>[11~ <xF1> <Esc>OP *<xF1>-xterm* - <F2> t_k2 <Esc>[12~ <xF2> <Esc>OQ *<xF2>-xterm* - <F3> t_k3 <Esc>[13~ <xF3> <Esc>OR *<xF3>-xterm* - <F4> t_k4 <Esc>[14~ <xF4> <Esc>OS *<xF4>-xterm* - <Home> t_kh <Esc>[7~ <xHome> <Esc>OH *<xHome>-xterm* - <End> t_@7 <Esc>[4~ <xEnd> <Esc>OF *<xEnd>-xterm* - -When Vim starts, <xF1> is mapped to <F1>, <xF2> to <F2> etc. This means that -by default both codes do the same thing. If you make a mapping for <xF2>, -because your terminal does have two keys, the default mapping is overwritten, -thus you can use the <F2> and <xF2> keys for something different. - - *xterm-shifted-keys* -Newer versions of xterm support shifted function keys and special keys. Vim -recognizes most of them. Use ":set termcap" to check which are supported and -what the codes are. Mostly these are not in a termcap, they are only -supported by the builtin_xterm termcap. - - *xterm-modifier-keys* -Newer versions of xterm support Alt and Ctrl for most function keys. To avoid -having to add all combinations of Alt, Ctrl and Shift for every key a special -sequence is recognized at the end of a termcap entry: ";*X". The "X" can be -any character, often '~' is used. The ";*" stands for an optional modifier -argument. ";2" is Shift, ";3" is Alt, ";5" is Ctrl and ";9" is Meta (when -it's different from Alt). They can be combined. Examples: > - :set <F8>=^[[19;*~ - :set <Home>=^[[1;*H -Another speciality about these codes is that they are not overwritten by -another code. That is to avoid that the codes obtained from xterm directly -|t_RV| overwrite them. - *xterm-scroll-region* -The default termcap entry for xterm on Sun and other platforms does not -contain the entry for scroll regions. Add ":cs=\E[%i%d;%dr:" to the xterm -entry in /etc/termcap and everything should work. - - *xterm-end-home-keys* -On some systems (at least on FreeBSD with XFree86 3.1.2) the codes that the -<End> and <Home> keys send contain a <Nul> character. To make these keys send -the proper key code, add these lines to your ~/.Xdefaults file: - -*VT100.Translations: #override \n\ - <Key>Home: string("0x1b") string("[7~") \n\ - <Key>End: string("0x1b") string("[8~") - - *xterm-8bit* *xterm-8-bit* -Xterm can be run in a mode where it uses 8-bit escape sequences. The CSI code -is used instead of <Esc>[. The advantage is that an <Esc> can quickly be -recognized in Insert mode, because it can't be confused with the start of a -special key. -For the builtin termcap entries, Vim checks if the 'term' option contains -"8bit" anywhere. It then uses 8-bit characters for the termcap entries, the -mouse and a few other things. You would normally set $TERM in your shell to -"xterm-8bit" and Vim picks this up and adjusts to the 8-bit setting -automatically. -When Vim receives a response to the |t_RV| (request version) sequence and it -starts with CSI, it assumes that the terminal is in 8-bit mode and will -convert all key sequences to their 8-bit variants. - -============================================================================== -2. Terminal options *terminal-options* *termcap-options* *E436* - -The terminal options can be set just like normal options. But they are not -shown with the ":set all" command. Instead use ":set termcap". - -It is always possible to change individual strings by setting the -appropriate option. For example: > - :set t_ce=^V^[[K (CTRL-V, <Esc>, [, K) - -{Vi: no terminal options. You have to exit Vi, edit the termcap entry and -try again} - -The options are listed below. The associated termcap code is always equal to -the last two characters of the option name. Only one termcap code is -required: Cursor motion, 't_cm'. - -The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap. -When the termcap flag is present, the option will be set to "y". But any -non-empty string means that the flag is set. An empty string means that the -flag is not set. 't_CS' works like this too, but it isn't a termcap flag. - -OUTPUT CODES - option meaning ~ - - t_AB set background color (ANSI) *t_AB* *'t_AB'* - t_AF set foreground color (ANSI) *t_AF* *'t_AF'* - t_AL add number of blank lines *t_AL* *'t_AL'* - t_al add new blank line *t_al* *'t_al'* - t_bc backspace character *t_bc* *'t_bc'* - t_cd clear to end of screen *t_cd* *'t_cd'* - t_ce clear to end of line *t_ce* *'t_ce'* - t_cl clear screen *t_cl* *'t_cl'* - t_cm cursor motion (required!) *E437* *t_cm* *'t_cm'* - t_Co number of colors *t_Co* *'t_Co'* - t_CS if non-empty, cursor relative to scroll region *t_CS* *'t_CS'* - t_cs define scrolling region *t_cs* *'t_cs'* - t_CV define vertical scrolling region *t_CV* *'t_CV'* - t_da if non-empty, lines from above scroll down *t_da* *'t_da'* - t_db if non-empty, lines from below scroll up *t_db* *'t_db'* - t_DL delete number of lines *t_DL* *'t_DL'* - t_dl delete line *t_dl* *'t_dl'* - t_fs set window title end (from status line) *t_fs* *'t_fs'* - t_ke exit "keypad transmit" mode *t_ke* *'t_ke'* - t_ks start "keypad transmit" mode *t_ks* *'t_ks'* - t_le move cursor one char left *t_le* *'t_le'* - t_mb blinking mode *t_mb* *'t_mb'* - t_md bold mode *t_md* *'t_md'* - t_me Normal mode (undoes t_mr, t_mb, t_md and color) *t_me* *'t_me'* - t_mr reverse (invert) mode *t_mr* *'t_mr'* - *t_ms* *'t_ms'* - t_ms if non-empty, cursor can be moved in standout/inverse mode - t_nd non destructive space character *t_nd* *'t_nd'* - t_op reset to original color pair *t_op* *'t_op'* - t_RI cursor number of chars right *t_RI* *'t_RI'* - t_Sb set background color *t_Sb* *'t_Sb'* - t_Sf set foreground color *t_Sf* *'t_Sf'* - t_se standout end *t_se* *'t_se'* - t_so standout mode *t_so* *'t_so'* - t_sr scroll reverse (backward) *t_sr* *'t_sr'* - t_te out of "termcap" mode *t_te* *'t_te'* - t_ti put terminal in "termcap" mode *t_ti* *'t_ti'* - t_ts set window title start (to status line) *t_ts* *'t_ts'* - t_ue underline end *t_ue* *'t_ue'* - t_us underline mode *t_us* *'t_us'* - t_Ce undercurl end *t_Ce* *'t_Ce'* - t_Cs undercurl mode *t_Cs* *'t_Cs'* - t_ut clearing uses the current background color *t_ut* *'t_ut'* - t_vb visual bell *t_vb* *'t_vb'* - t_ve cursor visible *t_ve* *'t_ve'* - t_vi cursor invisible *t_vi* *'t_vi'* - t_vs cursor very visible *t_vs* *'t_vs'* - *t_xs* *'t_xs'* - t_xs if non-empty, standout not erased by overwriting (hpterm) - t_ZH italics mode *t_ZH* *'t_ZH'* - t_ZR italics end *t_ZR* *'t_ZR'* - -Added by Vim (there are no standard codes for these): - t_IS set icon text start *t_IS* *'t_IS'* - t_IE set icon text end *t_IE* *'t_IE'* - t_WP set window position (Y, X) in pixels *t_WP* *'t_WP'* - t_WS set window size (height, width) in characters *t_WS* *'t_WS'* - t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'* - t_EI end insert mode (block cursor shape) *t_EI* *'t_EI'* - |termcap-cursor-shape| - t_RV request terminal version string (for xterm) *t_RV* *'t_RV'* - |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| - -KEY CODES -Note: Use the <> form if possible - - option name meaning ~ - - t_ku <Up> arrow up *t_ku* *'t_ku'* - t_kd <Down> arrow down *t_kd* *'t_kd'* - t_kr <Right> arrow right *t_kr* *'t_kr'* - t_kl <Left> arrow left *t_kl* *'t_kl'* - <xUp> alternate arrow up *<xUp>* - <xDown> alternate arrow down *<xDown>* - <xRight> alternate arrow right *<xRight>* - <xLeft> alternate arrow left *<xLeft>* - <S-Up> shift arrow up - <S-Down> shift arrow down - t_%i <S-Right> shift arrow right *t_%i* *'t_%i'* - t_#4 <S-Left> shift arrow left *t_#4* *'t_#4'* - t_k1 <F1> function key 1 *t_k1* *'t_k1'* - <xF1> alternate F1 *<xF1>* - t_k2 <F2> function key 2 *<F2>* *t_k2* *'t_k2'* - <xF2> alternate F2 *<xF2>* - t_k3 <F3> function key 3 *<F3>* *t_k3* *'t_k3'* - <xF3> alternate F3 *<xF3>* - t_k4 <F4> function key 4 *<F4>* *t_k4* *'t_k4'* - <xF4> alternate F4 *<xF4>* - t_k5 <F5> function key 5 *<F5>* *t_k5* *'t_k5'* - t_k6 <F6> function key 6 *<F6>* *t_k6* *'t_k6'* - t_k7 <F7> function key 7 *<F7>* *t_k7* *'t_k7'* - t_k8 <F8> function key 8 *<F8>* *t_k8* *'t_k8'* - t_k9 <F9> function key 9 *<F9>* *t_k9* *'t_k9'* - t_k; <F10> function key 10 *<F10>* *t_k;* *'t_k;'* - t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'* - t_F2 <F12> function key 12 *<F12>* *t_F2* *'t_F2'* - t_F3 <F13> function key 13 *<F13>* *t_F3* *'t_F3'* - t_F4 <F14> function key 14 *<F14>* *t_F4* *'t_F4'* - t_F5 <F15> function key 15 *<F15>* *t_F5* *'t_F5'* - t_F6 <F16> function key 16 *<F16>* *t_F6* *'t_F6'* - t_F7 <F17> function key 17 *<F17>* *t_F7* *'t_F7'* - t_F8 <F18> function key 18 *<F18>* *t_F8* *'t_F8'* - t_F9 <F19> function key 19 *<F19>* *t_F9* *'t_F9'* - <S-F1> shifted function key 1 - <S-xF1> alternate <S-F1> *<S-xF1>* - <S-F2> shifted function key 2 *<S-F2>* - <S-xF2> alternate <S-F2> *<S-xF2>* - <S-F3> shifted function key 3 *<S-F3>* - <S-xF3> alternate <S-F3> *<S-xF3>* - <S-F4> shifted function key 4 *<S-F4>* - <S-xF4> alternate <S-F4> *<S-xF4>* - <S-F5> shifted function key 5 *<S-F5>* - <S-F6> shifted function key 6 *<S-F6>* - <S-F7> shifted function key 7 *<S-F7>* - <S-F8> shifted function key 8 *<S-F8>* - <S-F9> shifted function key 9 *<S-F9>* - <S-F10> shifted function key 10 *<S-F10>* - <S-F11> shifted function key 11 *<S-F11>* - <S-F12> shifted function key 12 *<S-F12>* - t_%1 <Help> help key *t_%1* *'t_%1'* - t_&8 <Undo> undo key *t_&8* *'t_&8'* - t_kI <Insert> insert key *t_kI* *'t_kI'* - t_kD <Del> delete key *t_kD* *'t_kD'* - t_kb <BS> backspace key *t_kb* *'t_kb'* - t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'* - t_kh <Home> home key *t_kh* *'t_kh'* - t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'* - <xHome> alternate home key *<xHome>* - t_@7 <End> end key *t_@7* *'t_@7'* - t_*7 <S-End> shifted end key *<S-End>* *t_star7* *'t_star7'* - <xEnd> alternate end key *<xEnd>* - t_kP <PageUp> page-up key *t_kP* *'t_kP'* - t_kN <PageDown> page-down key *t_kN* *'t_kN'* - t_K1 <kHome> keypad home key *t_K1* *'t_K1'* - t_K4 <kEnd> keypad end key *t_K4* *'t_K4'* - t_K3 <kPageUp> keypad page-up key *t_K3* *'t_K3'* - t_K5 <kPageDown> keypad page-down key *t_K5* *'t_K5'* - t_K6 <kPlus> keypad plus key *<kPlus>* *t_K6* *'t_K6'* - t_K7 <kMinus> keypad minus key *<kMinus>* *t_K7* *'t_K7'* - t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'* - t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'* - t_KA <kEnter> keypad enter key *<kEnter>* *t_KA* *'t_KA'* - t_KB <kPoint> keypad decimal point *<kPoint>* *t_KB* *'t_KB'* - t_KC <k0> keypad 0 *<k0>* *t_KC* *'t_KC'* - t_KD <k1> keypad 1 *<k1>* *t_KD* *'t_KD'* - t_KE <k2> keypad 2 *<k2>* *t_KE* *'t_KE'* - t_KF <k3> keypad 3 *<k3>* *t_KF* *'t_KF'* - t_KG <k4> keypad 4 *<k4>* *t_KG* *'t_KG'* - t_KH <k5> keypad 5 *<k5>* *t_KH* *'t_KH'* - t_KI <k6> keypad 6 *<k6>* *t_KI* *'t_KI'* - t_KJ <k7> keypad 7 *<k7>* *t_KJ* *'t_KJ'* - t_KK <k8> keypad 8 *<k8>* *t_KK* *'t_KK'* - t_KL <k9> keypad 9 *<k9>* *t_KL* *'t_KL'* - <Mouse> leader of mouse code *<Mouse>* - -Note about t_so and t_mr: When the termcap entry "so" is not present the -entry for "mr" is used. And vice versa. The same is done for "se" and "me". -If your terminal supports both inversion and standout mode, you can see two -different modes. If your terminal supports only one of the modes, both will -look the same. - - *keypad-comma* -The keypad keys, when they are not mapped, behave like the equivalent normal -key. There is one exception: if you have a comma on the keypad instead of a -decimal point, Vim will use a dot anyway. Use these mappings to fix that: > - :noremap <kPoint> , - :noremap! <kPoint> , -< *xterm-codes* -There is a special trick to obtain the key codes which currently only works -for xterm. When |t_RV| is defined and a response is received which indicates -an xterm with patchlevel 141 or higher, Vim uses special escape sequences to -request the key codes directly from the xterm. The responses are used to -adjust the various t_ codes. This avoids the problem that the xterm can -produce different codes, depending on the mode it is in (8-bit, VT102, -VT220, etc.). The result is that codes like <xF1> are no longer needed. -Note: This is only done on startup. If the xterm options are changed after -Vim has started, the escape sequences may not be recognized any more. - - *xterm-resize* -Window resizing with xterm only works if the allowWindowOps resource is -enabled. On some systems and versions of xterm it's disabled by default -because someone thought it would be a security issue. It's not clear if this -is actually the case. - -To overrule the default, put this line in your ~/.Xdefaults or -~/.Xresources: -> - XTerm*allowWindowOps: true - -And run "xrdb -merge .Xresources" to make it effective. You can check the -value with the context menu (right mouse button while CTRL key is pressed), -there should be a tick at allow-window-ops. - - *termcap-colors* -Note about colors: The 't_Co' option tells Vim the number of colors available. -When it is non-zero, the 't_AB' and 't_AF' options are used to set the color. -If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used -to reset to the default colors. - - *termcap-cursor-shape* *termcap-cursor-color* -When Vim enters Insert mode the 't_SI' escape sequence is sent. When leaving -Insert mode 't_EI' is used. But only if both are defined. This can be used -to change the shape or color of the cursor in Insert mode. These are not -standard termcap/terminfo entries, you need to set them yourself. -Example for an xterm, this changes the color of the cursor: > - if &term =~ "xterm" - let &t_SI = "\<Esc>]12;purple\x7" - let &t_EI = "\<Esc>]12;blue\x7" - endif -NOTE: When Vim exits the shape for Normal mode will remain. The shape from -before Vim started will not be restored. -{not available when compiled without the |+cursorshape| feature} - - *termcap-title* -The 't_ts' and 't_fs' options are used to set the window title if the terminal -allows title setting via sending strings. They are sent before and after the -title string, respectively. Similar 't_IS' and 't_IE' are used to set the -icon text. These are Vim-internal extensions of the Unix termcap, so they -cannot be obtained from an external termcap. However, the builtin termcap -contains suitable entries for xterm and iris-ansi, so you don't need to set -them here. - *hpterm* -If inversion or other highlighting does not work correctly, try setting the -'t_xs' option to a non-empty string. This makes the 't_ce' code be used to -remove highlighting from a line. This is required for "hpterm". Setting the -'weirdinvert' option has the same effect as making 't_xs' non-empty, and vice -versa. - - *scroll-region* -Some termcaps do not include an entry for 'cs' (scroll region), although the -terminal does support it. For example: xterm on a Sun. You can use the -builtin_xterm or define t_cs yourself. For example: > - :set t_cs=^V^[[%i%d;%dr -Where ^V is CTRL-V and ^[ is <Esc>. - -The vertical scroll region t_CV is not a standard termcap code. Vim uses it -internally in the GUI. But it can also be defined for a terminal, if you can -find one that supports it. The two arguments are the left and right column of -the region which to restrict the scrolling to. Just like t_cs defines the top -and bottom lines. Defining t_CV will make scrolling in vertically split -windows a lot faster. Don't set t_CV when t_da or t_db is set (text isn't -cleared when scrolling). - -Unfortunately it is not possible to deduce from the termcap how cursor -positioning should be done when using a scrolling region: Relative to the -beginning of the screen or relative to the beginning of the scrolling region. -Most terminals use the first method. A known exception is the MS-DOS console -(pcterm). The 't_CS' option should be set to any string when cursor -positioning is relative to the start of the scrolling region. It should be -set to an empty string otherwise. It defaults to "yes" when 'term' is -"pcterm". - -Note for xterm users: The shifted cursor keys normally don't work. You can - make them work with the xmodmap command and some mappings in Vim. - - Give these commands in the xterm: - xmodmap -e "keysym Up = Up F13" - xmodmap -e "keysym Down = Down F16" - xmodmap -e "keysym Left = Left F18" - xmodmap -e "keysym Right = Right F19" - - And use these mappings in Vim: - :map <t_F3> <S-Up> - :map! <t_F3> <S-Up> - :map <t_F6> <S-Down> - :map! <t_F6> <S-Down> - :map <t_F8> <S-Left> - :map! <t_F8> <S-Left> - :map <t_F9> <S-Right> - :map! <t_F9> <S-Right> - -Instead of, say, <S-Up> you can use any other command that you want to use the -shift-cursor-up key for. (Note: To help people that have a Sun keyboard with -left side keys F14 is not used because it is confused with the undo key; F15 -is not used, because it does a window-to-front; F17 is not used, because it -closes the window. On other systems you can probably use them.) - -============================================================================== -3. Window size *window-size* - -[This is about the size of the whole window Vim is using, not a window that is -created with the ":split" command.] - -If you are running Vim on an Amiga and the terminal name is "amiga" or -"builtin_amiga", the amiga-specific window resizing will be enabled. On Unix -systems three methods are tried to get the window size: - -- an ioctl call (TIOCGSIZE or TIOCGWINSZ, depends on your system) -- the environment variables "LINES" and "COLUMNS" -- from the termcap entries "li" and "co" - -If everything fails a default size of 24 lines and 80 columns is assumed. If -a window-resize signal is received the size will be set again. If the window -size is wrong you can use the 'lines' and 'columns' options to set the -correct values. - -One command can be used to set the screen size: - - *:mod* *:mode* *E359* *E362* -:mod[e] [mode] - -Without argument this only detects the screen size and redraws the screen. -With MS-DOS it is possible to switch screen mode. [mode] can be one of these -values: - "bw40" 40 columns black&white - "c40" 40 columns color - "bw80" 80 columns black&white - "c80" 80 columns color (most people use this) - "mono" 80 columns monochrome - "c4350" 43 or 50 lines EGA/VGA mode - number mode number to use, depends on your video card - -============================================================================== -4. Slow and fast terminals *slow-fast-terminal* - *slow-terminal* - -If you have a fast terminal you may like to set the 'ruler' option. The -cursor position is shown in the status line. If you are using horizontal -scrolling ('wrap' option off) consider setting 'sidescroll' to a small -number. - -If you have a slow terminal you may want to reset the 'showcmd' option. -The command characters will not be shown in the status line. If the terminal -scrolls very slowly, set the 'scrolljump' to 5 or so. If the cursor is moved -off the screen (e.g., with "j") Vim will scroll 5 lines at a time. Another -possibility is to reduce the number of lines that Vim uses with the command -"z{height}<CR>". - -If the characters from the terminal are arriving with more than 1 second -between them you might want to set the 'timeout' and/or 'ttimeout' option. -See the "Options" chapter |options|. - -If your terminal does not support a scrolling region, but it does support -insert/delete line commands, scrolling with multiple windows may make the -lines jump up and down. If you don't want this set the 'ttyfast' option. -This will redraw the window instead of scroll it. - -If your terminal scrolls very slowly, but redrawing is not slow, set the -'ttyscroll' option to a small number, e.g., 3. This will make Vim redraw the -screen instead of scrolling, when there are more than 3 lines to be scrolled. - -If you are using a color terminal that is slow, use this command: > - hi NonText cterm=NONE ctermfg=NONE -This avoids that spaces are sent when they have different attributes. On most -terminals you can't see this anyway. - -If you are using Vim over a slow serial line, you might want to try running -Vim inside the "screen" program. Screen will optimize the terminal I/O quite -a bit. - -If you are testing termcap options, but you cannot see what is happening, -you might want to set the 'writedelay' option. When non-zero, one character -is sent to the terminal at a time (does not work for MS-DOS). This makes the -screen updating a lot slower, making it possible to see what is happening. - -============================================================================== -5. Using the mouse *mouse-using* - -This section is about using the mouse on a terminal or a terminal window. How -to use the mouse in a GUI window is explained in |gui-mouse|. For scrolling -with a mouse wheel see |scroll-mouse-wheel|. - -Don't forget to enable the mouse with this command: > - :set mouse=a -Otherwise Vim won't recognize the mouse in all modes (See 'mouse'). - -Currently the mouse is supported for Unix in an xterm window, in a *BSD -console with |sysmouse|, in a Linux console (with GPM |gpm-mouse|), for -MS-DOS and in a Windows console. -Mouse clicks can be used to position the cursor, select an area and paste. - -These characters in the 'mouse' option tell in which situations the mouse will -be used by Vim: - n Normal mode - v Visual mode - i Insert mode - c Command-line mode - h all previous modes when in a help file - a all previous modes - r for |hit-enter| prompt - -The default for 'mouse' is empty, the mouse is not used. Normally you would -do: > - :set mouse=a -to start using the mouse (this is equivalent to setting 'mouse' to "nvich"). -If you only want to use the mouse in a few modes or also want to use it for -the two questions you will have to concatenate the letters for those modes. -For example: > - :set mouse=nv -Will make the mouse work in Normal mode and Visual mode. > - :set mouse=h -Will make the mouse work in help files only (so you can use "g<LeftMouse>" to -jump to tags). - -Whether the selection that is started with the mouse is in Visual mode or -Select mode depends on whether "mouse" is included in the 'selectmode' -option. - -In an xterm, with the currently active mode included in the 'mouse' option, -normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key -pressed go to the xterm. With the currently active mode not included in -'mouse' all mouse clicks go to the xterm. - - *xterm-clipboard* -In the Athena and Motif GUI versions, when running in a terminal and there is -access to the X-server (DISPLAY is set), the copy and paste will behave like -in the GUI. If not, the middle mouse button will insert the unnamed register. -In that case, here is how you copy and paste a piece of text: - -Copy/paste with the mouse and Visual mode ('mouse' option must be set, see -above): -1. Press left mouse button on first letter of text, move mouse pointer to last - letter of the text and release the button. This will start Visual mode and - highlight the selected area. -2. Press "y" to yank the Visual text in the unnamed register. -3. Click the left mouse button at the insert position. -4. Click the middle mouse button. - -Shortcut: If the insert position is on the screen at the same time as the -Visual text, you can do 2, 3 and 4 all in one: Click the middle mouse button -at the insert position. - -Note: When the |-X| command line argument is used, Vim will not connect to the -X server and copy/paste to the X clipboard (selection) will not work. Use the -shift key with the mouse buttons to let the xterm do the selection. - - *xterm-command-server* -When the X-server clipboard is available, the command server described in -|x11-clientserver| can be enabled with the --servername command line argument. - - *xterm-copy-paste* -NOTE: In some (older) xterms, it's not possible to move the cursor past column -95. This is an xterm problem, not Vim's. Get a newer xterm |color-xterm|. - -Copy/paste in xterm with (current mode NOT included in 'mouse'): -1. Press left mouse button on first letter of text, move mouse pointer to last - letter of the text and release the button. -2. Use normal Vim commands to put the cursor at the insert position. -3. Press "a" to start Insert mode. -4. Click the middle mouse button. -5. Press ESC to end Insert mode. -(The same can be done with anything in 'mouse' if you keep the shift key -pressed while using the mouse.) - -Note: if you lose the 8th bit when pasting (special characters are translated -into other characters), you may have to do "stty cs8 -istrip -parenb" in your -shell before starting Vim. - -Thus in an xterm the shift and ctrl keys cannot be used with the mouse. Mouse -commands requiring the CTRL modifier can be simulated by typing the "g" key -before using the mouse: - "g<LeftMouse>" is "<C-LeftMouse> (jump to tag under mouse click) - "g<RightMouse>" is "<C-RightMouse> ("CTRL-T") - - *mouse-mode-table* *mouse-overview* -A short overview of what the mouse buttons do, when 'mousemodel' is "extend": - -Normal Mode: -event position selection change action ~ - cursor window ~ -<LeftMouse> yes end yes -<C-LeftMouse> yes end yes "CTRL-]" (2) -<S-LeftMouse> yes no change yes "*" (2) *<S-LeftMouse>* -<LeftDrag> yes start or extend (1) no *<LeftDrag>* -<LeftRelease> yes start or extend (1) no -<MiddleMouse> yes if not active no put -<MiddleMouse> yes if active no yank and put -<RightMouse> yes start or extend yes -<A-RightMouse> yes start or extend blockw. yes *<A-RightMouse>* -<S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>* -<C-RightMouse> no no change no "CTRL-T" -<RightDrag> yes extend no *<RightDrag>* -<RightRelease> yes extend no *<RightRelease>* - -Insert or Replace Mode: -event position selection change action ~ - cursor window ~ -<LeftMouse> yes (cannot be active) yes -<C-LeftMouse> yes (cannot be active) yes "CTRL-O^]" (2) -<S-LeftMouse> yes (cannot be active) yes "CTRL-O*" (2) -<LeftDrag> yes start or extend (1) no like CTRL-O (1) -<LeftRelease> yes start or extend (1) no like CTRL-O (1) -<MiddleMouse> no (cannot be active) no put register -<RightMouse> yes start or extend yes like CTRL-O -<A-RightMouse> yes start or extend blockw. yes -<S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2) -<C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T" - -In a help window: -event position selection change action ~ - cursor window ~ -<2-LeftMouse> yes (cannot be active) no "^]" (jump to help tag) - -When 'mousemodel' is "popup", these are different: - -Normal Mode: -event position selection change action ~ - cursor window ~ -<S-LeftMouse> yes start or extend (1) no -<A-LeftMouse> yes start or extend blockw. no *<A-LeftMouse>* -<RightMouse> no popup menu no - -Insert or Replace Mode: -event position selection change action ~ - cursor window ~ -<S-LeftMouse> yes start or extend (1) no like CTRL-O (1) -<A-LeftMouse> yes start or extend blockw. no -<RightMouse> no popup menu no - -(1) only if mouse pointer moved since press -(2) only if click is in same buffer - -Clicking the left mouse button causes the cursor to be positioned. If the -click is in another window that window is made the active window. When -editing the command-line the cursor can only be positioned on the -command-line. When in Insert mode Vim remains in Insert mode. If 'scrolloff' -is set, and the cursor is positioned within 'scrolloff' lines from the window -border, the text is scrolled. - -A selection can be started by pressing the left mouse button on the first -character, moving the mouse to the last character, then releasing the mouse -button. You will not always see the selection until you release the button, -only in some versions (GUI, MS-DOS, WIN32) will the dragging be shown -immediately. Note that you can make the text scroll by moving the mouse at -least one character in the first/last line in the window when 'scrolloff' is -non-zero. - -In Normal, Visual and Select mode clicking the right mouse button causes the -Visual area to be extended. When 'mousemodel' is "popup", the left button has -to be used while keeping the shift key pressed. When clicking in a window -which is editing another buffer, the Visual or Select mode is stopped. - -In Normal, Visual and Select mode clicking the right mouse button with the alt -key pressed causes the Visual area to become blockwise. When 'mousemodel' is -"popup" the left button has to be used with the alt key. Note that this won't -work on systems where the window manager consumes the mouse events when the -alt key is pressed (it may move the window). - - *double-click* -Double, triple and quadruple clicks are supported when the GUI is active, -for MS-DOS and Win32, and for an xterm (if the gettimeofday() function is -available). For selecting text, extra clicks extend the selection: - click select ~ - double word or % match *<2-LeftMouse>* - triple line *<3-LeftMouse>* - quadruple rectangular block *<4-LeftMouse>* -Exception: In a Help window a double click jumps to help for the word that is -clicked on. -A double click on a word selects that word. 'iskeyword' is used to specify -which characters are included in a word. A double click on a character -that has a match selects until that match (like using "v%"). If the match is -an #if/#else/#endif block, the selection becomes linewise. -For MS-DOS and xterm the time for double clicking can be set with the -'mousetime' option. For the other systems this time is defined outside of -Vim. -An example, for using a double click to jump to the tag under the cursor: > - :map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR> - -Dragging the mouse with a double click (button-down, button-up, button-down -and then drag) will result in whole words to be selected. This continues -until the button is released, at which point the selection is per character -again. - - *gpm-mouse* -The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at -compile time. The GPM mouse driver (Linux console) does not support quadruple -clicks. - -In Insert mode, when a selection is started, Vim goes into Normal mode -temporarily. When Visual or Select mode ends, it returns to Insert mode. -This is like using CTRL-O in Insert mode. Select mode is used when the -'selectmode' option contains "mouse". - *sysmouse* -The sysmouse is only supported when the |+mouse_sysmouse| feature was enabled -at compile time. The sysmouse driver (*BSD console) does not support keyboard -modifiers. - - *drag-status-line* -When working with several windows, the size of the windows can be changed by -dragging the status line with the mouse. Point the mouse at a status line, -press the left button, move the mouse to the new position of the status line, -release the button. Just clicking the mouse in a status line makes that window -the current window, without moving the cursor. If by selecting a window it -will change position or size, the dragging of the status line will look -confusing, but it will work (just try it). - - *<MiddleRelease>* *<MiddleDrag>* -Mouse clicks can be mapped. The codes for mouse clicks are: - code mouse button normal action ~ - <LeftMouse> left pressed set cursor position - <LeftDrag> left moved while pressed extend selection - <LeftRelease> left released set selection end - <MiddleMouse> middle pressed paste text at cursor position - <MiddleDrag> middle moved while pressed - - <MiddleRelease> middle released - - <RightMouse> right pressed extend selection - <RightDrag> right moved while pressed extend selection - <RightRelease> right released set selection end - <X1Mouse> X1 button pressed - *X1Mouse* - <X1Drag> X1 moved while pressed - *X1Drag* - <X1Release> X1 button release - *X1Release* - <X2Mouse> X2 button pressed - *X2Mouse* - <X2Drag> X2 moved while pressed - *X2Drag* - <X2Release> X2 button release - *X2Release* - -The X1 and X2 buttons refer to the extra buttons found on some mice. The -'Microsoft Explorer' mouse has these buttons available to the right thumb. -Currently X1 and X2 only work on Win32 environments. - -Examples: > - :noremap <MiddleMouse> <LeftMouse><MiddleMouse> -Paste at the position of the middle mouse button click (otherwise the paste -would be done at the cursor position). > - - :noremap <LeftRelease> <LeftRelease>y -Immediately yank the selection, when using Visual mode. - -Note the use of ":noremap" instead of "map" to avoid a recursive mapping. -> - :map <X1Mouse> <C-O> - :map <X2Mouse> <C-I> -Map the X1 and X2 buttons to go forwards and backwards in the jump list, see -|CTRL-O| and |CTRL-I|. - - *mouse-swap-buttons* -To swap the meaning of the left and right mouse buttons: > - :noremap <LeftMouse> <RightMouse> - :noremap <LeftDrag> <RightDrag> - :noremap <LeftRelease> <RightRelease> - :noremap <RightMouse> <LeftMouse> - :noremap <RightDrag> <LeftDrag> - :noremap <RightRelease> <LeftRelease> - :noremap g<LeftMouse> <C-RightMouse> - :noremap g<RightMouse> <C-LeftMouse> - :noremap! <LeftMouse> <RightMouse> - :noremap! <LeftDrag> <RightDrag> - :noremap! <LeftRelease> <RightRelease> - :noremap! <RightMouse> <LeftMouse> - :noremap! <RightDrag> <LeftDrag> - :noremap! <RightRelease> <LeftRelease> -< - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/tips.txt b/share/vim/vim73/doc/tips.txt deleted file mode 100644 index a27463b9..00000000 --- a/share/vim/vim73/doc/tips.txt +++ /dev/null @@ -1,534 +0,0 @@ -*tips.txt* For Vim version 7.3. Last change: 2009 Nov 07 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Tips and ideas for using Vim *tips* - -These are just a few that we thought would be helpful for many users. -You can find many more tips on the wiki. The URL can be found on -http://www.vim.org - -Don't forget to browse the user manual, it also contains lots of useful tips -|usr_toc.txt|. - -Editing C programs |C-editing| -Finding where identifiers are used |ident-search| -Switching screens in an xterm |xterm-screens| -Scrolling in Insert mode |scroll-insert| -Smooth scrolling |scroll-smooth| -Correcting common typing mistakes |type-mistakes| -Counting words, lines, etc. |count-items| -Restoring the cursor position |restore-position| -Renaming files |rename-files| -Change a name in multiple files |change-name| -Speeding up external commands |speed-up| -Useful mappings |useful-mappings| -Compressing the help files |gzip-helpfile| -Executing shell commands in a window |shell-window| -Hex editing |hex-editing| -Using <> notation in autocommands |autocmd-<>| -Highlighting matching parens |match-parens| - -============================================================================== -Editing C programs *C-editing* - -There are quite a few features in Vim to help you edit C program files. Here -is an overview with tags to jump to: - -|usr_29.txt| Moving through programs chapter in the user manual. -|usr_30.txt| Editing programs chapter in the user manual. -|C-indenting| Automatically set the indent of a line while typing - text. -|=| Re-indent a few lines. -|format-comments| Format comments. - -|:checkpath| Show all recursively included files. -|[i| Search for identifier under cursor in current and - included files. -|[_CTRL-I| Jump to match for "[i" -|[I| List all lines in current and included files where - identifier under the cursor matches. -|[d| Search for define under cursor in current and included - files. - -|CTRL-]| Jump to tag under cursor (e.g., definition of a - function). -|CTRL-T| Jump back to before a CTRL-] command. -|:tselect| Select one tag out of a list of matching tags. - -|gd| Go to Declaration of local variable under cursor. -|gD| Go to Declaration of global variable under cursor. - -|gf| Go to file name under the cursor. - -|%| Go to matching (), {}, [], /* */, #if, #else, #endif. -|[/| Go to previous start of comment. -|]/| Go to next end of comment. -|[#| Go back to unclosed #if, #ifdef, or #else. -|]#| Go forward to unclosed #else or #endif. -|[(| Go back to unclosed '(' -|])| Go forward to unclosed ')' -|[{| Go back to unclosed '{' -|]}| Go forward to unclosed '}' - -|v_ab| Select "a block" from "[(" to "])", including braces -|v_ib| Select "inner block" from "[(" to "])" -|v_aB| Select "a block" from "[{" to "]}", including brackets -|v_iB| Select "inner block" from "[{" to "]}" - -============================================================================== -Finding where identifiers are used *ident-search* - -You probably already know that |tags| can be used to jump to the place where a -function or variable is defined. But sometimes you wish you could jump to all -the places where a function or variable is being used. This is possible in -two ways: -1. Using the |:grep| command. This should work on most Unix systems, - but can be slow (it reads all files) and only searches in one directory. -2. Using ID utils. This is fast and works in multiple directories. It uses a - database to store locations. You will need some additional programs for - this to work. And you need to keep the database up to date. - -Using the GNU id-tools: - -What you need: -- The GNU id-tools installed (mkid is needed to create ID and lid is needed to - use the macros). -- An identifier database file called "ID" in the current directory. You can - create it with the shell command "mkid file1 file2 ..". - -Put this in your .vimrc: > - map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR> - map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR> - - function! ID_search() - let g:word = expand("<cword>") - let x = system("lid --key=none ". g:word) - let x = substitute(x, "\n", " ", "g") - execute "next " . x - endfun - -To use it, place the cursor on a word, type "_u" and vim will load the file -that contains the word. Search for the next occurrence of the word in the -same file with "n". Go to the next file with "_n". - -This has been tested with id-utils-3.2 (which is the name of the id-tools -archive file on your closest gnu-ftp-mirror). - -[the idea for this comes from Andreas Kutschera] - -============================================================================== -Switching screens in an xterm *xterm-screens* *xterm-save-screen* - -(From comp.editors, by Juergen Weigert, in reply to a question) - -:> Another question is that after exiting vim, the screen is left as it -:> was, i.e. the contents of the file I was viewing (editing) was left on -:> the screen. The output from my previous like "ls" were lost, -:> ie. no longer in the scrolling buffer. I know that there is a way to -:> restore the screen after exiting vim or other vi like editors, -:> I just don't know how. Helps are appreciated. Thanks. -: -:I imagine someone else can answer this. I assume though that vim and vi do -:the same thing as each other for a given xterm setup. - -They not necessarily do the same thing, as this may be a termcap vs. -terminfo problem. You should be aware that there are two databases for -describing attributes of a particular type of terminal: termcap and -terminfo. This can cause differences when the entries differ AND when of -the programs in question one uses terminfo and the other uses termcap -(also see |+terminfo|). - -In your particular problem, you are looking for the control sequences -^[[?47h and ^[[?47l. These switch between xterms alternate and main screen -buffer. As a quick workaround a command sequence like > - echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l" -may do what you want. (My notation ^[ means the ESC character, further down -you'll see that the databases use \E instead). - -On startup, vim echoes the value of the termcap variable ti (terminfo: -smcup) to the terminal. When exiting, it echoes te (terminfo: rmcup). Thus -these two variables are the correct place where the above mentioned control -sequences should go. - -Compare your xterm termcap entry (found in /etc/termcap) with your xterm -terminfo entry (retrieved with "infocmp -C xterm"). Both should contain -entries similar to: > - :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h: - -PS: If you find any difference, someone (your sysadmin?) should better check - the complete termcap and terminfo database for consistency. - -NOTE 1: If you recompile Vim with FEAT_XTERM_SAVE defined in feature.h, the -builtin xterm will include the mentioned "te" and "ti" entries. - -NOTE 2: If you want to disable the screen switching, and you don't want to -change your termcap, you can add these lines to your .vimrc: > - :set t_ti= t_te= - -============================================================================== -Scrolling in Insert mode *scroll-insert* - -If you are in insert mode and you want to see something that is just off the -screen, you can use CTRL-X CTRL-E and CTRL-X CTRL-Y to scroll the screen. - |i_CTRL-X_CTRL-E| - -To make this easier, you could use these mappings: > - :inoremap <C-E> <C-X><C-E> - :inoremap <C-Y> <C-X><C-Y> -(Type this literally, make sure the '<' flag is not in 'cpoptions'). -You then lose the ability to copy text from the line above/below the cursor -|i_CTRL-E|. - -Also consider setting 'scrolloff' to a larger value, so that you can always see -some context around the cursor. If 'scrolloff' is bigger than half the window -height, the cursor will always be in the middle and the text is scrolled when -the cursor is moved up/down. - -============================================================================== -Smooth scrolling *scroll-smooth* - -If you like the scrolling to go a bit smoother, you can use these mappings: > - :map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y> - :map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E> - -(Type this literally, make sure the '<' flag is not in 'cpoptions'). - -============================================================================== -Correcting common typing mistakes *type-mistakes* - -When there are a few words that you keep on typing in the wrong way, make -abbreviations that correct them. For example: > - :ab teh the - :ab fro for - -============================================================================== -Counting words, lines, etc. *count-items* - -To count how often any pattern occurs in the current buffer use the substitute -command and add the 'n' flag to avoid the substitution. The reported number -of substitutions is the number of items. Examples: > - - :%s/./&/gn characters - :%s/\i\+/&/gn words - :%s/^//n lines - :%s/the/&/gn "the" anywhere - :%s/\<the\>/&/gn "the" as a word - -You might want to reset 'hlsearch' or do ":nohlsearch". -Add the 'e' flag if you don't want an error when there are no matches. - -An alternative is using |v_g_CTRL-G| in Visual mode. - -If you want to find matches in multiple files use |:vimgrep|. - - *count-bytes* -If you want to count bytes, you can use this: - - Visually select the characters (block is also possible) - Use "y" to yank the characters - Use the strlen() function: > - :echo strlen(@") -A line break is counted for one byte. - -============================================================================== -Restoring the cursor position *restore-position* - -Sometimes you want to write a mapping that makes a change somewhere in the -file and restores the cursor position, without scrolling the text. For -example, to change the date mark in a file: > - :map <F2> msHmtgg/Last [cC]hange:\s*/e+1<CR>"_D"=strftime("%Y %b %d")<CR>p'tzt`s - -Breaking up saving the position: - ms store cursor position in the 's' mark - H go to the first line in the window - mt store this position in the 't' mark - -Breaking up restoring the position: - 't go to the line previously at the top of the window - zt scroll to move this line to the top of the window - `s jump to the original position of the cursor - -For something more advanced see |winsaveview()| and |winrestview()|. - -============================================================================== -Renaming files *rename-files* - -Say I have a directory with the following files in them (directory picked at -random :-): - -buffer.c -charset.c -digraph.c -... - -and I want to rename *.c *.bla. I'd do it like this: > - - $ vim - :r !ls *.c - :%s/\(.*\).c/mv & \1.bla - :w !sh - :q! - -============================================================================== -Change a name in multiple files *change-name* - -Example for using a script file to change a name in several files: - - Create a file "subs.vim" containing substitute commands and a :update - command: > - :%s/Jones/Smith/g - :%s/Allen/Peter/g - :update -< - Execute Vim on all files you want to change, and source the script for - each argument: > - - vim *.let - argdo source subs.vim - -See |:argdo|. - -============================================================================== -Speeding up external commands *speed-up* - -In some situations, execution of an external command can be very slow. This -can also slow down wildcard expansion on Unix. Here are a few suggestions to -increase the speed. - -If your .cshrc (or other file, depending on the shell used) is very long, you -should separate it into a section for interactive use and a section for -non-interactive use (often called secondary shells). When you execute a -command from Vim like ":!ls", you do not need the interactive things (for -example, setting the prompt). Put the stuff that is not needed after these -lines: > - - if ($?prompt == 0) then - exit 0 - endif - -Another way is to include the "-f" flag in the 'shell' option, e.g.: > - - :set shell=csh\ -f - -(the backslash is needed to include the space in the option). -This will make csh completely skip the use of the .cshrc file. This may cause -some things to stop working though. - -============================================================================== -Useful mappings *useful-mappings* - -Here are a few mappings that some people like to use. - - *map-backtick* > - :map ' ` -Make the single quote work like a backtick. Puts the cursor on the column of -a mark, instead of going to the first non-blank character in the line. - - *emacs-keys* -For Emacs-style editing on the command-line: > - " start of line - :cnoremap <C-A> <Home> - " back one character - :cnoremap <C-B> <Left> - " delete character under cursor - :cnoremap <C-D> <Del> - " end of line - :cnoremap <C-E> <End> - " forward one character - :cnoremap <C-F> <Right> - " recall newer command-line - :cnoremap <C-N> <Down> - " recall previous (older) command-line - :cnoremap <C-P> <Up> - " back one word - :cnoremap <Esc><C-B> <S-Left> - " forward one word - :cnoremap <Esc><C-F> <S-Right> - -NOTE: This requires that the '<' flag is excluded from 'cpoptions'. |<>| - - *format-bullet-list* -This mapping will format any bullet list. It requires that there is an empty -line above and below each list entry. The expression commands are used to -be able to give comments to the parts of the mapping. > - - :let m = ":map _f :set ai<CR>" " need 'autoindent' set - :let m = m . "{O<Esc>" " add empty line above item - :let m = m . "}{)^W" " move to text after bullet - :let m = m . "i <CR> <Esc>" " add space for indent - :let m = m . "gq}" " format text after the bullet - :let m = m . "{dd" " remove the empty line - :let m = m . "5lDJ" " put text after bullet - :execute m |" define the mapping - -(<> notation |<>|. Note that this is all typed literally. ^W is "^" "W", not -CTRL-W. You can copy/paste this into Vim if '<' is not included in -'cpoptions'.) - -Note that the last comment starts with |", because the ":execute" command -doesn't accept a comment directly. - -You also need to set 'textwidth' to a non-zero value, e.g., > - :set tw=70 - -A mapping that does about the same, but takes the indent for the list from the -first line (Note: this mapping is a single long line with a lot of spaces): > - :map _f :set ai<CR>}{a <Esc>WWmmkD`mi<CR><Esc>kkddpJgq}'mJO<Esc>j -< - *collapse* -These two mappings reduce a sequence of empty (;b) or blank (;n) lines into a -single line > - :map ;b GoZ<Esc>:g/^$/.,/./-j<CR>Gdd - :map ;n GoZ<Esc>:g/^[ <Tab>]*$/.,/[^ <Tab>]/-j<CR>Gdd - -============================================================================== -Compressing the help files *gzip-helpfile* - -For those of you who are really short on disk space, you can compress the help -files and still be able to view them with Vim. This makes accessing the help -files a bit slower and requires the "gzip" program. - -(1) Compress all the help files: "gzip doc/*.txt". - -(2) Edit "doc/tags" and change the ".txt" to ".txt.gz": > - :%s=\(\t.*\.txt\)\t=\1.gz\t= - -(3) Add this line to your vimrc: > - set helpfile={dirname}/help.txt.gz - -Where {dirname} is the directory where the help files are. The |gzip| plugin -will take care of decompressing the files. -You must make sure that $VIMRUNTIME is set to where the other Vim files are, -when they are not in the same location as the compressed "doc" directory. See -|$VIMRUNTIME|. - -============================================================================== -Executing shell commands in a window *shell-window* - -There have been questions for the possibility to execute a shell in a window -inside Vim. The answer: you can't! Including this would add a lot of code to -Vim, which is a good reason not to do this. After all, Vim is an editor, it -is not supposed to do non-editing tasks. However, to get something like this, -you might try splitting your terminal screen or display window with the -"splitvt" program. You can probably find it on some ftp server. The person -that knows more about this is Sam Lantinga <slouken@cs.ucdavis.edu>. -An alternative is the "window" command, found on BSD Unix systems, which -supports multiple overlapped windows. Or the "screen" program, found at -www.uni-erlangen.de, which supports a stack of windows. - -============================================================================== -Hex editing *hex-editing* *using-xxd* - -See section |23.4| of the user manual. - -If one has a particular extension that one uses for binary files (such as exe, -bin, etc), you may find it helpful to automate the process with the following -bit of autocmds for your <.vimrc>. Change that "*.bin" to whatever -comma-separated list of extension(s) you find yourself wanting to edit: > - - " vim -b : edit binary using xxd-format! - augroup Binary - au! - au BufReadPre *.bin let &bin=1 - au BufReadPost *.bin if &bin | %!xxd - au BufReadPost *.bin set ft=xxd | endif - au BufWritePre *.bin if &bin | %!xxd -r - au BufWritePre *.bin endif - au BufWritePost *.bin if &bin | %!xxd - au BufWritePost *.bin set nomod | endif - augroup END - -============================================================================== -Using <> notation in autocommands *autocmd-<>* - -The <> notation is not recognized in the argument of an :autocmd. To avoid -having to use special characters, you could use a self-destroying mapping to -get the <> notation and then call the mapping from the autocmd. Example: - - *map-self-destroy* > - " This is for automatically adding the name of the file to the menu list. - " It uses a self-destroying mapping! - " 1. use a line in the buffer to convert the 'dots' in the file name to \. - " 2. store that in register '"' - " 3. add that name to the Buffers menu list - " WARNING: this does have some side effects, like overwriting the - " current register contents and removing any mapping for the "i" command. - " - autocmd BufNewFile,BufReadPre * nmap i :nunmap i<CR>O<C-R>%<Esc>:.g/\./s/\./\\./g<CR>0"9y$u:menu Buffers.<C-R>9 :buffer <C-R>%<C-V><CR><CR> - autocmd BufNewFile,BufReadPre * normal i - -Another method, perhaps better, is to use the ":execute" command. In the -string you can use the <> notation by preceding it with a backslash. Don't -forget to double the number of existing backslashes and put a backslash before -'"'. -> - autocmd BufNewFile,BufReadPre * exe "normal O\<C-R>%\<Esc>:.g/\\./s/\\./\\\\./g\<CR>0\"9y$u:menu Buffers.\<C-R>9 :buffer \<C-R>%\<C-V>\<CR>\<CR>" - -For a real buffer menu, user functions should be used (see |:function|), but -then the <> notation isn't used, which defeats using it as an example here. - -============================================================================== -Highlighting matching parens *match-parens* - -This example shows the use of a few advanced tricks: -- using the |CursorMoved| autocommand event -- using |searchpairpos()| to find a matching paren -- using |synID()| to detect whether the cursor is in a string or comment -- using |:match| to highlight something -- using a |pattern| to match a specific position in the file. - -This should be put in a Vim script file, since it uses script-local variables. -It skips matches in strings or comments, unless the cursor started in string -or comment. This requires syntax highlighting. - -A slightly more advanced version is used in the |matchparen| plugin. -> - let s:paren_hl_on = 0 - function s:Highlight_Matching_Paren() - if s:paren_hl_on - match none - let s:paren_hl_on = 0 - endif - - let c_lnum = line('.') - let c_col = col('.') - - let c = getline(c_lnum)[c_col - 1] - let plist = split(&matchpairs, ':\|,') - let i = index(plist, c) - if i < 0 - return - endif - if i % 2 == 0 - let s_flags = 'nW' - let c2 = plist[i + 1] - else - let s_flags = 'nbW' - let c2 = c - let c = plist[i - 1] - endif - if c == '[' - let c = '\[' - let c2 = '\]' - endif - let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . - \ '=~? "string\\|comment"' - execute 'if' s_skip '| let s_skip = 0 | endif' - - let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip) - - if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$') - exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col . - \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' - let s:paren_hl_on = 1 - endif - endfunction - - autocmd CursorMoved,CursorMovedI * call s:Highlight_Matching_Paren() - autocmd InsertEnter * match none -< - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/todo.txt b/share/vim/vim73/doc/todo.txt deleted file mode 100644 index b2ab959a..00000000 --- a/share/vim/vim73/doc/todo.txt +++ /dev/null @@ -1,4748 +0,0 @@ -*todo.txt* For Vim version 7.3. Last change: 2010 Aug 15 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - - TODO list for Vim *todo* - -This is a veeeery long list of known bugs, current work and desired -improvements. To make it a little bit accessible, the items are grouped by -subject. In the first column of the line a classification is used to be able -to look for "the next thing to do": - -Priority classification: -9 next point release -8 next release -7 as soon as possible -6 soon -5 should be included -4 nice to have -3 consider including -2 maybe not -1 probably not -- unclassified - - *votes-for-changes* -See |develop.txt| for development plans. You can vote for which items should -be worked on, but only if you sponsor Vim development. See |sponsor|. - - *known-bugs* --------------------- Known bugs and current work ----------------------- - -":find e" completion, editing a file in the Vim source directory, 'path' set -to "./proto", does not shorten ./proto/eval.pro, probably because of -./proto/ex_eval.pro. - -Problem with \NL in Ex script. (Ray Frish, 2010 Aug 10) - -Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5) - -CTRL-] on help tag |/[\n]| doesn't jump to the right place. (Tony Mechelynck, -2010 Aug 8) - -":command Print echo 'print'" works, but ":Print" doesn't. Builtin Print -should be overruled. (Aaron Thoma) - -GTK: drawing a double-width combining character over single-width characters -doesn't look right. (Dominique Pelle, 2010 Aug 8) - -Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the -^M is displayed as ^J sometimes. Getting 'ff' value from wrong window/buffer? - -Problem producing tags file when hebrew.frx is present. It has a BOM. -Results in E670. (Tony Mechelynck, 2010 May 2) - -setpos() does not restore cursor position after :normal. (Tyru, 2010 Aug 11) - -Test 73 fails on MS-Windows when compiled with DJGPP and run twice. How to -delete the Xfind directory? Add an rmdir() function, just like we have -mkdir(). - -'cindent' not correct when 'list' is set. (Zdravi Korusef, 2010 Apr 15) - -":helpgrep" does not put the cursor in the correct column when preceded by -accented character. (Tony Mechelynck, 2010 Apr 15) - -Echo starts in the wrong column: - while 1 | let s = input('A') | echo 'R' | endw -(Boyko Bantchev, 2010 Aug 9) - -Patch: Let rare word highlighting overrule good word highlighting. -(Jakson A. Aquino, 2010 Jul 30) - -Patch to make more characters work in dialogs. (Yankwei Jia, 2010 Aug 4) - -":drop" does not respect 'autochdir'. (Peter Odding, 2010 Jul 24) - -Problem with cursor in the wrong column. (SungHyun Nam, 2010 Mar 11) -Additional info by Dominique Pelle. (also on 2010 Apr 10) - -Is ~/bin (literally) in $PATH supposed to work? (Paul, 2010 March 29) -Looks like only bash can do it. (Yakov Lerner) - -8 Add an event like CursorHold that is triggered repeatedly, not just once - after typing something. -Need for CursorHold that retriggers. Use a key that doesn't do anything, or a -function that resets did_cursorhold. - -Cscope "cs add" stopped working somewhat before 7.2.438. (Gary Johnson, 2010 -Jun 29) Caused by 7.2.433? - -I often see pasted text (from Firefox, to Vim in xterm) appear twice. -Also, Vim in xterm sometimes loses copy/paste ability (probably after running -an external command). - -Jumplist doesn't work properly in Insert mode? (Jean Johner, 2010 Mar 20) - -Problem with transparent cmdline. Also: Terminal title is wrong with -non-ASCII character. (Lily White, 2010 Mar 7) - -iconv() doesn't fail on an illegal character, as documented. (Yongwei Wu, 2009 -Nov 15, example Nov 26) Add argument to specify whether iconv() should fail -or replace with a character and continue? - -Add local time at start of --startuptime output. -Requires configure check for localtime(). -Use format year-month-day hr:min:sec. - -Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3) -Find tail? Might have a / in argument. Find space? Might have space in -path. - -":function f(x) keepjumps" creates a function where every command is executed -like it has ":keepjumps" before it. - -Coverity: ask someone to create new user: Dominique. -Check if there are new reported defects: http://scan.coverity.com/rung2.html - -When setting 'undofile' while the file is already loaded, but unchanged, try -to read the undo file. Requires computing a checksum of the text. (Andy -Wokula) - -Bug with 'incsearch' going to wrong line. (Wolfram Kresse, 2009 Aug 17) -Only with "vim -u NONE". - -Problem with editing file in binary mode. (Ingo Krabbe, 2009 Oct 8) - -Display error when 'tabline' that includes a file name with double-width -characters. (2010 Aug 14, bootleq) - -Problem with stop directory in findfile(). (Adam Simpkins, 2009 Aug 26) - -Undo problem: line not removed as expected when using setline() from Insert -mode. (Israel Chauca, 2010 May 13, more in second msg) -Break undo when CTRL-R = changes the text? Or save more lines? - -Change to C syntax folding to make it work much faster, but a bit less -reliable. (Lech Lorens, 2009 Nov 9) Enable with an option? -Most time is spent in in_id_list(). - -Slow combination of folding and PHP syntax highlighting. Script to reproduce -it. Caused by "syntax sync fromstart" in combination with patch 7.2.274. -(Christian Brabandt, 2010 May 27) - -When completion inserts the first match, it may trigger the line to be folded. -Disable updating folds while completion is active? (Peter Odding, 2010 Jun 9) - -In command line window ":close" doesn't work properly. (Tony Mechelynck, 2009 -Jun 1) - -When a:base in 'completefunc' starts with a number it's passed as a number, -not a string. (Sean Ma) Need to add flag to call_func_retlist() to force a -string value. - -There is no command line completion for ":lmap". - -Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2) - -For running gvim on an USB stick: avoid the OLE registration. Use a command -line argument -noregister. - -When a mapping exists both for insert mode and lang-insert mode, the last one -doesn't work. (Tyru, 2010 May 6) Or is this intended? - -Still a problem with ":make" in the wrong directory. Caused by ":bufdo". -(Ajit Thakkar, 2009 Jul 1) More information Jul 9, Jul 15. -Caused by "doautoall syntaxset BufEnter *" in syntax/nosyntax.vim ? -There also is a BufLeave/BufEnter aucmd to save/restore view. -Does the patch to save/restore globaldir work? - -":bufdo normal gg" while 'hidden' is set leaves buffers without syntax -highlighting. Don't disable Syntax autocommands then? Or add a flag/modifier -to avoid changing 'eventignore'? - -Patch for displaying 0x200c and 0x200d. (Ali Gholami Rudi, 2009 May 6) -Probably needs a bit of work. - -List of encoding aliases. (Takao Fujiware, 2009 Jul 18) -Are they all OK? Update Jul 22. - -Win32: Expanding 'path' runs into a maximum size limit. (bgold12, 2009 Nov 15) - -Putting a Visual block while 'visualedit' is "all" does not leave the cursor -on the first character. (John Beckett, 2010 Aug 7) - -Setting 'tags' to "tagsdir/*" does not find "tagsdir/tags". (Steven K. Wong, -2009 Jul 18) - -Patch to add farsi handling to arabic.c (Ali Gholami Rudi, 2009 May 2) -Added test, updates, June 23. - -Patch to add "focusonly" to 'scrollopt', so that scrollbind also applies in -window that doesn't have focus. (Jonathon Mah, 2009 Jan 12) -Needs more work. - -Problem with <script> mappings (Andy Wokula, 2009 Mar 8) - -When starting Vim with "gvim -f -u non_existent_file > foo.txt" there are a -few control characters in the output. (Dale Wiles, 2009 May 28) - -'cmdwinheight is only used in last window when 'winheight' is a large value. -(Tony Mechelynck, 2009 Apr 15) - -Status line containing winnr() isn't updated when splitting the window (Clark -J. Wang, 2009 Mar 31) - -When $VIMRUNTIME is set in .vimrc, need to reload lang files. Already done -for GTK, how about others? (Ron Aaron, 2010 Apr 10) - -Patch for GTK buttons X1Mouse and X2Mouse. (Christian J. Robinson, 2010 Aug 9) - -Motif: Build on Ubuntu can't enter any text in dialog text fields. - -When 'ft' changes redraw custom status line. - -":tab split fname" doesn't set the alternate file in the original window, -because win_valid() always returns FALSE. Below win_new_tabpage() in -ex_docmd.c. - -Space before comma in function definition not allowed: "function x(a , b)" -Give a more appropriate error message. Add a remark to the docs. - -string_convert() should be able to convert between utf-8 and utf-16le. Used -for GTK clipboard. Avoid requirement for iconv. - -Now that colnr_T is int instead of unsigned, more type casts can be removed. - -'delcombine' does not work for the command line. (Tony Mechelynck, 2009 Jul -20) - -Unwanted file name escaping: ":echo input('file:' , '', 'file')" -And use file name completion on a file with spaces. (Frederic Hardy, 2009 Mar -23) - -Don't load macmap.vim on startup, turn it into a plugin. (Ron Aaron, -2009 Apr 7) Reminder Apr 14. - -Add "no_hlsearch" to winsaveview(). - -Cursorline highlighting combines with Search ('hlsearch') but not with -SpellBad. (Jim Karsten, 2009 Mar 18) - -When 'foldmethod' is "indent", using >> on a line just above a fold makes the -cursor line folded. (Evan Laforge, 2009 Oct 17) - -When 'foldmethod' is "indent", adding an empty line below a fold and then -indented text, creates a new fold instead of joining it with the previous one. -(Evan Laforge, 2009 Oct 17) - -Bug: When reloading a buffer changed outside of Vim, BufRead autocommands -are applied to the wrong buffer/window. (Ben Fritz, 2009 Apr 2, May 11) -Ignore window options when not in the right window? -Perhaps we need to use a hidden window for applying autocommands to a buffer -that doesn't have a window. - -When using "ab foo bar" and mapping <Tab> to <Esc>, pressing <Tab> after foo -doesn't trigger the abbreviation like <Esc> would. (Ramana Kumar, 2009 Sep 6) - -getbufvar() to get a window-local option value for a buffer that's not -displayed in a window should return the value that's stored for that buffer. - -":he ctrl_u" can be auto-corrected to ":he ctrl-u". - -There should be a way after an abbreviation has expanded to go back to what -was typed. CTRL-G h ? Would also undo last word or line break inserted -perhaps. And undo CTRL-W. CTRL-G l would redo. - -Diff mode out of sync. (Gary Johnson, 2010 Aug 4) - -Win32: A --remote command that has a directory name starting with a ( doesn't -work, the backslash is removed, assuming that it escapes the (. (Valery -Kondakoff, 2009 May 13) - -Win32 GUI: Changing manifest helps for dpi changes (Joe Castro, 2009 Mar 27) - -Win32 GUI: last message from startup doesn't show up when there is an echoerr -command. (Cyril Slobin, 2009 Mar 13) - -Win32: use different args for SearchPath()? (Yasuhiro Matsumoto, 2009 Jan 30) - -Win32: completion of file name ":e c:\!test" results in ":e c:\\!test", which -does not work. (Nieko Maatjes, 2009 Jan 8, Ingo Karkat, 2009 Jan 22) - -opening/closing window causes other window with 'winfixheight' to change -height. Also happens when there is another window in the frame, if it's not -very high. (Yegappan Lakshmanan, 2010 Jul 22, Michael Peeters, 2010 Jul 22) - -Directory wrong in session file, caused by ":lcd" in BufEnter autocommand. -(Felix Kater, 2009 Mar 3) - -maparg() doesn't return the flags, such as <buffer>, <script>, <silent>. -These are needed to save and restore a mapping. -Also: the rhs string is not always correct. (Hari Krishna Dara, 2009 Sept 29) - -Using ~ works OK on 'a' with composing char, but not on 0x0418 with composing -char 0x0301. (Tony Mechelynck, 2009 Mar 4) - -Inconsistent: starting with $LANG set to es_ES.utf-8 gives Spanish -messages, even though locale is not supported. But ":lang messages -es_ES.utf-8" gives an error and doesn't switch messages. (Dominique Pelle, -2009 Jan 26) - -When $HOME contains special characters, sich as a comma, escape them when used -in an option. (Michael Hordijk, 2009 May 5) -Turn "esc" argument of expand_env_esc() into string of chars to be escaped. - -Can 'undolevels' be a buffer-local option? Helps for making big changes in -one file only, set 'ul' to -1 only for that buffer. - -Should make 'ignorecase' global-local, so that it makes sense setting it from -a modeline. - -Add cscope target to Makefile. (Tony Mechelynck, 2009 Jun 18, replies by -Sergey Khorev) - -Consider making YankRing or something else that keeps a list of yanked text -part of standard Vim. The "1 to "9 registers are not sufficient. - -netrw: dragging status line causes selection of entry. Should check row -number to be below last visible line. - -After doing "su" $HOME can be the old user's home, thus ~root/file is not -correct. Don't use it in the swap file. - -Completion for ":buf" doesn't work properly on Win32 when 'shellslash' is off. -(Henrik Ohman, 2009, Jan 29) - -Allow patches to add something to version.c, like with an official patch, so -that :version output shows which patches have been applied. - -Bug: in Ex mode (after "Q") backslash before line break, when yanked into a -register and executed, results in <Nul>: instead of line break. -(Konrad Schwarz, 2010 Apr 16) - -Have a look at patch for utf-8 line breaking. (Yongwei Wu, 2008 Mar 1, Mar 23) -Now at: http://vimgadgets.sourceforge.net/liblinebreak/ - -Greek sigma character should be lower cased depending on the context. Can we -make this work? (Dominique Pelle, 2009 Sep 24) - -When changing 'encoding' convert all the swap file names, so that we can -still delete them. Also convert all buffer file names? - -"gqip" in Insert mode has an off-by-one error, causing it to reflow text. -(Raul Coronado, 2009 Nov 2) - -Update src/testdir/main.aap. - -"vim -c 'sniff connect'" hangs Vim. (Dominique Pelle, 2008 Dec 7) - -Something wrong with session that has "cd" commands and "badd", in such a way -that Vim doesn't find the edited file in the buffer list, causing the -ATTENTION message? (Tony Mechelynck, 2008 Dec 1) -Also: swap files are in ~/tmp/ One has relative file name ".mozilla/...". - -Add v:motion_force. (Kana Natsuno, 2008 Dec 6) - -Runtime files for Clojure. (Toralf Wittner, 2008 Jun 25) - -MS-Windows: editing the first, empty buffer, 'ffs' set to "unix,dos", ":enew" -doesn't set 'ff' to "unix". (Ben Fritz, 2008 Dec 5) Reusing the old buffer -probably causes this. - -'scrollbind' is not respected when deleting lines or undo. (Milan Vancura, -2009 Jan 16) - -Document that default font in Athena can be set with resources: - XtDefaultFont: "9x15" - XtDefaultFontSet: "9x15" -(Richard Sherman, 2009 Apr 12) - -Having "Syntax" in 'eventignore' for :bufdo may cause problems, e.g. for -":bufdo e" when buffers are open in windows. ex_listdo(eap) could set the -option only for when jumping to another buffer, not when the command argument -is executed. - -Crash with dragn-n-drop of file combined with netrw (Marius Gedminas, 2008 Jun -11) I can't reproduce it. It's probably caused by a handle_drop() call -in combination with autocommands that invoke a ":redraw" command. -Another valgrind output Jun 30. - -":pedit %" with a BufReadPre autocommand causes the cursor to move to the -first line. (Ingo Karkat, 2008 Jul 1) Ian Kelling is working on this. - -Wildmenu not deleted: "gvim -u NONE", ":set nocp wildmenu cmdheight=3 -laststatus=2", CTRL-D CTRL-H CTRL-H CTRL-H. (A.Politz, 2008 April 1) -Works OK with Vim in an xterm. - -Cursor line moves in other window when using CTRL-W J that doesn't change -anything. (Dasn, 2009 Apr 7) - -On Unix "glob('does not exist~')" returns the string. Without the "~" it -doesn't. (John Little, 2008 Nov 9) -Shell expansion returns unexpanded string? -Don't use shell when "~" is not at the start? - -":unlet $VAR" doesn't work. - -When using ":e ++enc=foo file" and the file is already loaded with -'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though the -fileencoding differs. Reload the buffer in this situation? Need to check for -the buffer to be unmodified. -Unfinished patch by Ian Kelling, 2008 Jul 11. Followup Jul 14, need to have -another look at it. - -Patch for c.vim and cpp.vim syntax files. (Chung-chieh Shan, 2008 Nov 26) - -c.vim: XXX in a comment is colored yellow, but not when it's after "#if 0". -(Ilya Dogolazky, 2009 Aug 7) - -Win32: ":dis +" shows nothing, but "+p does insert text. Problem with "* and -"+ being the same thing? - -You can type ":w ++bad=x fname", but the ++bad argument is ignored. Give an -error message? Or is this easy to implement? (Nathan Stratton Treadway, 2008 -Aug 20) This is in ucs2bytes(), search for 0xBF. Using the ++bad argument is -at the other match for 0xBF. - -Fix for matchparen HL doesn't work. beep. - -When adding "-complete=file" to a user command this also changes how the -argument is processed for <f-args>. (Ivan Tishchenko, 2008 Aug 19) - -Win32: associating a type with Vim doesn't take care of space after a -backslash? (Robert Vibrant, 2008 Jun 5) - -After using <Tab> for command line completion after ":ta blah" and getting E33 -(no tags file), further editing the command to e.g., ":echo 'blah'", the -command is not executed. Fix by Ian Kelling? - -":help s/~" jumps to *s/\~*, while ":help s/\~" doesn't find anything. (Tim -Chase) Fix by Ian Kelling, 2008 Jul 14. - -Use "\U12345678" for 32 bit Unicode characters? (Tony Mechelynck, 2009 -Apr 6) Or use "\u(123456)", similar to Perl. - -When mapping : to ; and ; to :, @; doesn't work like @: and @: doesn't work -either. Matt Wozniski: nv_at() calls do_execreg() which uses -put_in_typebuf(). Char mapped twice? - -8 Some file systems are case-sensitive, some are not. Turn - CASE_INSENSITIVE_FILENAME into an option, at least for completion. - -Despite adding save_subexpr() this still doesn't work properly: -Regexp: matchlist('12a4aaa', '^\(.\{-}\)\(\%5c\@<=a\+\)\(.\+\)\?') -Returns ['12a4', 'aaa', '4aaa'], should be ['12a4', 'aaa', ''] -Backreference not cleared when retrying after \@<= fails? -(Brett Stahlman, 2008 March 8) - -Problem with remote_send(). (Charles Campbell, 2008 Aug 12) - -ftplugin for help file should set 'isk' to help file value. - -Win32: remote editing fails when the current directory name contains "[". -(Ivan Tishchenko, Liu Yubao) Suggested patch by Chris Lubinski: Avoid -escaping characters where the backslash is not removed later. Asked Chris for -an alternate solution, also for src/ex_getln.c. -This also fails when the file or directory name contains "%". (Thoml, 2008 -July 7) - -The str2special() function doesn't handle multi-byte characters properly. -Patch from Vladimir Vichniakov, 2007 Apr 24. -Should clean up the whole function. Also allow modifiers like <S-Char-32>? -find_special_key() also has this problem. - -Problem with 'langmap' being used on the rhs of a mapping. (Nikolai Weibull, -2008 May 14) - -Problem with CTRL-F. (Charles Campbell, 2008 March 21) -Only happens with "gvim -geometry "160x26+4+27" -u NONE -U NONE prop.c". -'lines' is 54. (2008 March 27) - -Problem with pointer wrapping around in getvcol(). (Wolfgang Kroworsch, 2008 -Oct 19) Check for "col" being "MAXCOL" separately? - -Unexpectedly inserting a double quote. (Anton Woellert, 2008 Mar 23) -Works OK when 'cmdheight' is 2. - -Test54 should not use shell commands. Make it portable. - -The utf class table is missing some entries: - 0x2212, minus sign - 0x2217, star - 0x2500, bar - 0x26ab, circle - -Visual line mode doesn't highlight properly when 'showbreak' is used and the -line doesn't fit. (Dasn, 2008 May 1) - -GUI: In Normal mode can't yank the modeless selection. Make "gy" do this? -Works like CTRL-Y in Command line mode. - -Mac: Move Carbon todo items to os_mac.txt. Note that this version is frozen, -try the Cocoa version. - -Mac: After a ":vsplit" the left scrollbar doesn't appear until 'columns' is -changed or the window is resized. - -Mac: Patch for configure: remove arch from ruby link args. (Knezevic, 2008 -Mar 5) Alternative: Kazuki Sakamoto, Mar 7. - -Mac: trouble compiling with Motif, requires --disable-darwin. (Raf, 2008 Aug -1) Reply by Ben Schmidt. - -C't: On utf-8 system, editing file with umlaut through Gnome results in URL -with %nn%nn, which is taken as two characters instead of one. -Try to reproduce at work. - -Patch for default choice in file changed dialog. (Bjorn Winckler, 2008 Oct 19) -Is there a way to list all the files first? - -When 'smartcase' is set and using CTRL-L to add to the search pattern it may -result in no matches. Convert chars to lower case? (Erik Wognsen, 2009 Apr -16) - -Patch for redo register. (Ben Schmidt, 2007 Oct 19) -Await response to question to make the register writable. - -src/testdir/Make_dos.mak: not all tests are included, e.g., test49, without a -remark why. - -Problem with 'ts' set to 9 and 'showbreak' to ">>>". (Matthew Winn, 2007 Oct -1) - -In the swapfile dialog, add a H(elp) option that gives more info about what -each choice does. Similar to ":help swap-exists-choices" - -try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15) - -Recognize and ignore BOM in error file. (Aleksey Baibarin) - -":tab help" always opens a new tab, while ":help" re-uses an existing window. -Would be more consistent when an existing tab is re-used. (Tony Mechelynck) - -":tab drop filename" doesn't work nicely when "filename" is open in a window -in another tab. (Tony Mechelynck, 2009 Feb 13) - -Add ":nofold". Range will apply without expanding to closed fold. - -Including NFA regexp code: -Use "\%#= to set the engine: 0 = automatic, 1 = backtracking, 2 = new. -Useful in tests. -Performance tests: -- ~/vim/test/veryslow.js (file from Daniel Fetchinson) -- ~/vim/test/slowsearch -- ~/vim/test/rgb.vim -- ~/vim/text/FeiqCfg.xml (file from Netjune) -- search for a.*e*exn in the vim executable. Go to last line to use - 'hlsearch'. - -Using Aap to build Vim: add remarks about how to set personal preferences. -Example on http://www.calmar.ws/tmp/aap.html - -Syntax highlighting wrong for transparent region. (Doug Kearns, 2007 Feb 26) -Bug in using a transparent syntax region. (Hanlen in vim-dev maillist, 2007 -Jul 31) - -C syntax: {} inside () causes following {} to be highlighted as error. -(Michalis Giannakidis, 2006 Jun 1) - -Can't easily close the help window, like ":pc" closes the preview window and -":ccl" closes the quickfix window. Add ":hclose". (Chris Gaal) - -When 'diffopt' has "context:0" a single deleted line causes two folds to merge -and mess up syncing. (Austin Jennings, 2008 Jan 31) - -Gnome improvements: Edward Catmur, 2007 Jan 7 - Also use Save/Discard for other GUIs - -New PHP syntax file, use it? (Peter Hodge) - -'foldcolumn' in modeline applied to wrong window when using a session. (Teemu -Likonen, March 19) - -Test 54 uses shell commands, that doesn't work on non-Unix systems. Use some -other way to test buffer-local autocommands. - -The documentation mentions the priority for ":2match" and ":3match", but it -appears the last one wins. (John Beckett, 2008 Jul 22) Caused by adding -matchadd()? Suggested patch by John, 2008 Jul 24. - -When 'encoding' is utf-8 the command line is redrawn as a whole on every -character typed. (Tyler Spivey, 2008 Sep 3) Only redraw cmdline for -'arabicshape' when there is a character on the command line for which -(ARABIC_CHAR(u8c)) is TRUE. - -Cheng Fang made javacomplete. (2007 Aug 11) -Asked about latest version: 0.77.1 is on www.vim.org. - -More AmigaOS4 patches. (Peter Bengtsson, Nov 9) - -Insert mode completion: When editing the text and pressing CTRL-N again goes -back to originally completed text, edited text is gone. (Peng Yu, 2008 Jul 24) -Suggestion by Ben Schmidt, 2008 Aug 6. - -Problem with compound words? (Bert, 2008 May 6) -No warning for when flags are defined after they are used in an affix. - -Screen redrawing when continuously updating the buffer and resizing the -terminal. (Yakov Lerner, 2006 Sept 7) - -Add option settings to help ftplugin. (David Eggum, 2006 Dec 18) - -Autoconf problem: when checking for iconv library we may add -L/usr/local/lib, -but when compiling further tests -liconv is added without the -L argument, -that may fail (e.g., sizeof(int)). (Blaine, 2007 Aug 21) - -When opening quickfix window, disable spell checking? - -Problem with ".add" files when using two languages and restarting Vim. (Raul -Coronado, 2008 Oct 30) - -Popup menu redraw: Instead of first redrawing the text and then drawing the -popup menu over it, first draw the new popup menu, remember its position and -size and then redraw the text, skipping the characters under the popup menu. -This should avoid flicker. Other solution by A.Politz, 2007 Aug 22. - -When the popup menu is close to the edge of the window it is truncated. Patch -to anchor the popup menu in a different way. (James Vega, 2008 Jul 30) - -Windows 98: pasting from the clipboard with text from another application has -a trailing NUL. (Joachim Hofmann) Perhaps the length specified for CF_TEXT -isn't right? - -When a register contains illegal bytes, writing viminfo in utf-8 and reading -it back doesn't result in utf-8. (Devin Bayer) - -Command line completion: Scanning for tags doesn't check for typed key now and -then? Hangs for about 5 seconds. Appears to be caused by finding include -files with "foo/**" in 'path'. (Kalisiak, 2006 July 15) -Additional info: When using the |wildcards| ** globing, vim hangs -indefinitely on lots of directories. The |file-searching| globing, like in -":set path=/**" does not hang as often as with globing with |wildcards|, like -in ":1find /**/file". This is for a files that unix "find" can find very -quick. Merging the 2 kinds of globing might make this an easier fix. (Ian -Kelling, 2008 July 4) - -When the file name has parenthesis, e.g., "foo (bar).txt", ":!ls '%'" has the -parenthesis escaped but not the space. That's inconsistent. Either escape -neither or both. No escaping might be best, because it doesn't depend on -particularities of the shell. (Zvi Har'El, 2007 Nov 10) (Teemu Likonen, 2008 -Jun 3) -However, for backwards compatibility escaping might be necessary. Check if -the user put quotes around the expanded item? - -Error E324 can be given when a cron script has wiped out our temp directory. -Give a clear error message about this (and tell them not to wipe out /tmp). - -Color for cUserLabel should differ from case label, so that a mistake in a -switch list is noticed: - switch (i) - { - case 1: - foobar: - } - -Look at http://www.gtk-server.org/ . It has a Vim script implementation. - -Netbeans problem. Use "nc -l 127.0.0.1 55555" for the server, then run gvim -with "gvim -nb:localhost:55555:foo". From nc do: '1:editFile!0 "foo"'. Then -go to Insert mode and add a few lines. Then backspacing every other time -moves the cursor instead of deleting. (Chris Kaiser, 2007 Sep 25) - -Patch to use Modern UI 2.0 for the Nsis installer. (Guopeng Wen, 2010 Jul 30) - -Changes for Win32 makefile. (Mike Williams, 2007 Jan 22, Alexei Alexandrov, -2007 Feb 8) - -Patch for Win32 clipboard under Cygwin. (Frodak Baksik, Feb 15) - Sutcliffe says it works well. - Update 2007 May 22 for Vim 7.1 - Update 2008 Dec 2008 for Vim 7.2.xx (Sharonov) - -Win32: Can't complete shell command names. Why is setting xp_context in -set_one_cmd_context() inside #ifndef BACKSLASH_IN_FILENAME? - -Win32: Patch for convert_filterW(). (Taro Muraoka, 2007 Mar 2) - -Win32: Patch for cscope external command. (Mike Williams, 2007 Aug 7) - -Win32: XPM support only works with path without spaces. Patch by Mathias -Michaelis, 2006 Jun 9. Another patch for more path names, 2006 May 31. -New version: http://members.tcnet.ch/michaelis/vim/patches.zip (also for other -patches by Mathias, see mail Feb 22) - -Win32: compiling with normal features and OLE fails. Patch by Mathias -Michaelis, 2006 Jun 4. - -Win32: echo doesn't work for gvim.exe.mnf. Use inline file. Patch by Mathias -Michaelis. http://groups.yahoo.com/group/vimdev/message/43765 -Patch that includes this and does more by George Reilly, 2007 Feb 12 - -Win16: include patches to make Win16 version work. (Vince Negri, 2006 May 22) - -Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis, -2007 Feb 18) -Patch by Alex Dobrynin, 2007 Jun 3. Also fixes other scroll wheel problems. - -Win32: using CTRL-S in Insert mode doesn't remove the "+" from the tab pages -label. (Tsakiridis, 2007 Feb 18) Patch from Ian Kelling, 2008 Aug 6. - -Win32: using "gvim --remote-tab-silent fname" sometimes gives an empty screen -with the more prompt. Caused by setting the guitablabel? (Thomas Michael -Engelke, 2007 Dec 20 - 2008 Jan 17) - -Win64: Seek error in swap file for a very big file (3 Gbyte). Check storing -pointer in long and seek offset in 64 bit var. - -Win32: patch for fullscreen mode. (Liushaolin, 2008 April 17) - -Win32: When 'shell' is cmd.exe this command fails: - echo system('"c:/path/echo.exe" "foo bar"') -Should we set the default for 'shellxquote' to a double quote, when 'shell' -contains "cmd" in the tail? (Benjamin Fritz, 2008 Oct 13) -Also set 'shellcmdflag' to include /s. - -Win32: When there is 4 Gbyte of memory mch_avail_mem() doesn't work properly. -Unfinished patch by Jelle Geerts, 2008 Aug 24. -Let mch_avail_mem() return Kbyte instead? - -Win32: With two monitors, gvim partly on both, and adding/removing a scrollbar -Vim resizes and moves to one of the monitors. (Chris Monkiewicz, 2008 Oct) - -Win32: When 'shell' is bash shellescape() doesn't always do the right thing. -Depends on 'shellslash', 'shellquote' and 'shellxquote', but shellescape() -only takes 'shellslash' into account. - -Pressing the 'pastetoggle' key doesn't update the statusline. (Jan Christoph -Ebersbach, 2008 Feb 1) - -Menu item that does "xxd -r" doesn't work when 'fileencoding' is utf-16. -Check for this and use iconv? (Edward L. Fox, 2007 Sep 12) -Does the conversion in the other direction work when 'filenecodings' is set -properly? - -Cursor displayed in the wrong position when using 'numberwidth'. (James Vega, -2007 Jun 21) - -When $VAR contains a backslash expand('$VAR') removes it. (Teemu Likonen, 2008 -Jun 18) - -If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work. - -Feature request: Command to go to previous tab, like what CTRL-W p does for -windows. (Adam George) - -When using input() in a loop and then ":echo" the display column isn't right. -(Benjamin Fritz, 2008 Aug 28) Patch by Ben Schmidt, 2008 Sep 2. - -F1 - F4 in an xterm produce a different escape sequence when used with a -modifier key. Need to catch three different sequences. Use K_ZF1, like -K_ZHOME? (Dickey, 2007 Dec 2) - -UTF-8: mapping a multi-byte key where the second byte is 0x80 doesn't appear -to work. (Tony Mechelynck, 2007 March 2) - -In debug mode, using CTRL-R = to evaluate a function causes stepping through -the function. (Hari Krishna Dara, 2006 Jun 28) - -C++ indenting wrong with "=". (James Kanze, 2007 Jan 26) - -":lockvar" should use copyID to avoid endless loop. - -When using --remote-silent and the file name matches 'wildignore' get an E479 -error. without --remote-silent it works fine. (Ben Fritz, 2008 Jun 20) - -Gvim: dialog for closing Vim should check if Vim is busy writing a file. Then -use a different dialog: "busy saving, really quit? yes / no". - -Check other interfaces for changing curbuf in a wrong way. Patch like for -if_ruby.c. - -":helpgrep" should use the directory from 'helpfile'. - -Patch to dynamically load Python on Solaris. (Danek Duvall, 2009 Feb 16) -Needs more work. - -The need_fileinfo flag is messy. Instead make the message right away and put -it in keep_msg? - -Editing a file remotely that matches 'wildignore' results in a "no match" -error. Should only happen when there are wildcards, not when giving the file -name literally, and esp. if there is only one name. - -Test 61 fails sometimes. This is a timing problem: "sleep 2" sometimes takes -longer than 2 seconds. - -Using ":au CursorMoved * cmd" invokes mch_FullName(), which can be slow. -Can this be avoided? (Thomas Waba, 2008 Aug 24) -Also for ":w" without a file name. -The buffer has the full path in ffname, should pass this to the autocommand. - -"vim -C" often has 'nocompatible', because it's set in some startup script. -Set 'compatible' after startup is done? Patch by James Vega, 2008 Feb 7. - -VMS: while editing a file found in complex, Vim will save file into the first -directory of the path and not to the original location of the file. -(Zoltan Arpadffy) - -VMS: VFC files are in some cases truncated during reading (Zoltan Arpadffy) - -input() completion should not insert a backslash to escape a space in a file -name? - -getpos()/setpos() don't include curswant. getpos() could return a fifth -element. setpos() could accept an optional fifth element. - -Ruby completion is insecure. Can this be fixed? - -When 'backupskip' is set from $TEMP special characters need to be escaped. -(patch by Grembowietz, 2007 Feb 26, not quite right) -Another problem is that file_pat_to_reg_pat() doesn't recognize "\\", so "\\(" -will be seen as a path separator plus "\(". - -gvim d:\path\path\(FILE).xml should not remove the \ before the (. -This also fails with --remote. - -When doing ":quit" the Netbeans "killed" event isn't sent. (Xavier de Gaye, -2008 Nov 10) call netbeans_file_closed() at the end of buf_freeall(), or in -all places where buf_freeall() is called? - -":python os.chdir('/tmp')" makes short buffer names invalid. (Xavier de Gaye) -Check directory and call shorten_fnames()? - -aucmd_prepbuf() should also use a window in another tab page. - -When unloading a buffer in a BufHidden autocommand the hidden flag is reset? -(Bob Hiestand, 2008 Aug 26, Aug 27) - -Substituting an area with a line break with almost the same area does change -the Visual area. Can this be fixed? (James Vega, 2006 Sept 15) - -Windows installer could add a "open in new tab of existing Vim" menu entry. -Gvimext: patch to add "Edit with single Vim &tabbed" menu entry. -Just have two choices, always using one Vim and selecting between using an -argument list or opening each file in a separate tab. -(Erik Falor, 2008 May 21, 2008 Jun 26) - -GUI: When combining fg en bg make sure they are not equal. - -Spell checking: Add a way to specify punctuation characters. Add the -superscript numbers by default: 0x2070, 0xb9, 0xb2, 0xb3, 0x2074 - 0x2079. - -Spell checking in popup menu: If the only problem is the case of the first -character, don't offer "ignore" and "add to word list". - -Use different pt_br dictionary for spell checking. (Jackson A. Aquino, 2006 -Jun 5) - -Use different romanian dictionary for spell checking. (Andrei Popescu, Nov -2008) Use http://downloads.sourceforge.net/rospell/ro_RO.3.2.zip -Or the hunspell-ro.3.2.tar.gz file, it also has a iso-8859-2 list. - -In a C file with spell checking, in "% integer" "nteger" is seen as an error, -but "]s" doesn't find it. "nteger" by itself is found. (Ralf Wildenhues, 2008 -Jul 22) - -There should be something about spell checking in the user manual. - -Spell menu: When using the Popup menu to select a replacement word, -":spellrepeat" doesn't work. SpellReplace() uses setline(). Can it use "z=" -somehow? Or use a new function. - -Mac: Using gvim: netrw window disappears. (Nick Lo, 2006 Jun 21) - -Mac: OS/X 10.4 with Python 2.5 installed: configure finds an extra argument -that breaks the build. (Brian Victor, 2008 Sep 1) - -Add an option to specify the character to use when a double-width character is -moved to the next line. Default '>', set to a space to blank it out. Check -that char is single width when it's set (compare with 'listchars'). - -The generated vim.bat can avoid the loop for NT. (Carl Zmola, 2006 Sep 3) - -Session file creation: 'autochdir' causes trouble. Keep it off until after -loading all files. - -Win32: When 'autochdir' is on and 'encoding' is changed, files on the command -line are opened again, but from the wrong directory. Apply 'autochdir' only -after starting up? - -When showing a diff between a non-existent file and an existing one, with the -cursor in the empty buffer, the other buffer only shows the last line. Change -the "insert" into a change from one line to many? (Yakov Lerner, 2008 May 27) - -Add autocommand for when a tabpage is being closed. Also for when a tab page -has been created. - -Using ":make" blocks Vim. Allow running one make in the background (if the -shell supports it), catch errors in a file and update the error list on the -fly. A bit like "!make > file&" and repeating ":cf file". ":bgmake", -background make. ":bgcancel" interrupts it. -A.Politz may work on this. - -These two abbreviations don't give the same result: - let asdfasdf = "xyz\<Left>" - cabbr XXX <C-R>=asdfasdf<CR> - cabbr YYY xyz<Left> - -Michael Dietrich: maximized gvim sometimes displays output of external command -partly. (2006 Dec 7) - -In FileChangedShell command it's no longer allowed to switch to another -buffer. But the changed buffer may differ from the current buffer, how to -reload it then? - -New syntax files for fstab and resolv from Radu Dineiu, David Necas did -previous version. - -For Aap: include a config.arg.example file with hints how to use config.arg. - -Command line completion when 'cmdheight' is maximum and 'wildmenu' is set, -only one buffer line displayed, causes display errors. - -Completing with 'wildmenu' and using <Up> and <Down> to move through directory -tree stops unexpectedly when using ":cd " and entering a directory that -doesn't contain other directories. - -Linux distributions: -- Suggest compiling xterm with --enable-tcap-query, so that nr of colors is - known to Vim. 88 colors instead of 16 works better. See ":help - xfree-xterm". -- Suggest including bare "vi" and "vim" with X11, syntax, etc. - -Completion menu: For a wrapping line, completing a long file name, only the -start of the path is shown in the menu. Should move the menu to the right to -show more text of the completions. Shorten the items that don't fit in the -middle? - -When running inside screen it's possible to kill the X server and restart it -(using pty's the program can keep on running). Vim dies because it loses the -connection to the X server. Can Vim simply quit using the X server instead of -dying? Also relevant when running in a console. - -Accessing file#var in a function should not need the g: prepended. - -When exiting detects a modified buffer, instead of opening the buffer in the -current tab, use an existing tab, if possible. Like finding a window where -the buffer is displayed. (Antonios Tsakiridis) - -When ":cn" moves to an error in the same line the message isn't shortened. -Only skip shortening for ":cc"? - -Write "making vim work better" for the docs (mostly pointers): *nice* - - sourcing $VIMRUNTIME/vimrc_example.vim - - setting 'mouse' to "a" - - getting colors in xterm - - compiling Vim with X11, GUI, etc. - -Problem with ":call" and dictionary function. Hari Krishna Dara, Charles -Campbell 2006 Jul 06. - -Syntax HL error caused by "containedin". (Peter Hodge, 2006 Oct 6) - -A custom completion function in a ":command" cannot be a Funcref. (Andy -Wokula, 2007 Aug 25) - -Problem with using :redir in user command completion function? (Hari Krishna -Dara, 2006 June 21) - -Another resizing problem when setting 'columns' and 'lines' to a very large -number. (Tony Mechelynck, 2007 Feb 6) - -After starting Vim, using '0 to jump somewhere in a file, ":sp" doesn't center -the cursor line. It works OK after some other commands. - -Win32: Is it possible to have both postscript and Win32 printing? -Does multi-byte printing with ":hardcopy" work? Add remark in documentation -about this. - -Check: Running Vim in a console and still having connect to the X server for -copy/paste: is stopping the X server handled gracefully? Should catch the X -error and stop using the connection to the server. - -Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME. (2006 -Jul 26, Gary Johnson) - -Using UTF-8 character with ":command" does not work properly. (Matt Wozniski, -2008 Sep 29) - -In the Netbeans interface add a "vimeval" function, so that the other side can -check the result of has("patch13"). - -Cursor line at bottom of window instead of halfway after saving view and -restoring. Only with 'nowrap'. (Robert Webb, 2008 Aug 25) - -Add command modifier that skips wildcard expansion, so that you don't need to -put backslashes before special chars, only for white space. - -Syntax HL: open two windows on the same C code, delete a ")" in one window, -resulting in highlighted "{" in that window, not in the other. - -In mswin.vim: Instead of mapping <C-V> for Insert mode in a complicated way, -can it be done like ":imap <C-V> <MiddleMouse>" without negative side effects? - -Win32: When the GUI tab pages line is displayed Vim jumps from the secondary -to the primary monitor. (Afton Lewis, 2007 Mar 9) Old resizing problem? - -GTK: when the Tab pages bar appears or disappears while the window is -maximized the window is no longer maximized. Patch that has some idea but -doesn't work from Geoffrey Antos, 2008 May 5. -Also: the window may no longer fit on the screen, thus the command line is not -visible. - -GTK: when setting 'columns' in a startup script and doing ":vertical diffsplit" -the window isn't redrawn properly, see two vertical bars. - -The magic clipboard format "VimClipboard2" appears in several places. Should -be only one. - -"vim -C" often has 'nocompatible', because it's set somewhere in a startup -script. Do "set compatible" after startup? - -It's difficult to debug numbered functions (function in a Dictionary). Print -the function name before resolving it to a number? - let d = {} - fun! d.foo() - echo "here" - endfun - call d.foo(9) - -Add a mark for the other end of the Visual area (VIsual pos). '< and '> are -only set after Visual moded is ended. -Also add a variable for the Visual mode. So that this mode and '< '> can be -used to set what "gv" selects. (Ben Schmidt) - -Win32: When running ":make" and 'encoding' differs from the system locale, the -output should be converted. Esp. when 'encoding' is "utf-8". (Yongwei Wu) -Should we use 'termencoding' for this? - -Win32, NTFS: When editing a specific infostream directly and 'backupcopy' is -"auto" should detect this situation and work like 'backupcopy' is "yes". File -name is something like "c:\path\foo.txt:bar", includes a colon. (Alex -Jakushev, 2008 Feb 1) - -Small problem displaying diff filler line when opening windows with a script. -(David Luyer, 2007 Mar 1 ~/Mail/oldmail/mool/in.15872 ) - -Is it allowed that 'backupext' is empty? Problems when backup is in same dir -as original file? If it's OK don't compare with 'patchmode'. (Thierry Closen) - -Patch for supporting count before CR in quickfix window. (AOYAMA Shotaro, 2007 -Jan 1) - -Patch for adding ":lscscope". (Navdeep Parhar, 2007 Apr 26; update 2008 Apr -23) - -":mkview" isn't called with the right buffer argument. Happens when using -tabs and the autocommand "autocmd BufWinLeave * mkview". (James Vega, 2007 -Jun 18) - -xterm should be able to pass focus changes to Vim, so that Vim can check for -buffers that changed. Perhaps in misc.c, function selectwindow(). -Xterm 224 supports it! - -When completing from another file that uses a different encoding completion -text has the wrong encoding. E.g., when 'encoding' is utf-8 and file is -latin1. Example from Gombault Damien, 2007 Mar 24. - -Is it possible to use "foo#var" instead of "g:foo#var" inside a function? - -Syntax HL: When using "nextgroup" and the group has an empty match, there is -no search at that position for another match. (Lukas Mai, 2008 April 11) - -In gvim the backspace key produces a backspace character, but on Linux the -VERASE key is Delete. Set VERASE to Backspace? (patch by Stephane Chazelas, -2007 Oct 16) - -When entering a C /* comment, after typing <Enter> for 70 times the indent -disappears. (Vincent Beffara, 2008 Jul 3) - -TermResponse autocommand isn't always triggered when using vimdiff. (Aron -Griffis, 2007 Sep 19) - -Create a gvimtutor.1 file and change Makefiles to install it. - -When 'encoding' is utf-8 typing text at the end of the line causes previously -typed characters to be redrawn. Caused by patch 7.1.329. (Tyler Spivey, 2008 -Sep 3, 11) - -When Vim in an xterm owns the selection and the user does ":shell" Vim doesn't -respond to selection requests. Invoking XtDisownSelection() before executing -the shell doesn't help. Would require forking and doing a message loop, like -what happens for the GUI. - -X11: Putting more than about 262040 characters of text on the clipboard and -pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23) -clip_x11_request_selection_cb() is called with zero value and length. -Also: Get an error message from free() in the process that owns the selection. -Seems to happen when the selection is requested the second time, but before -clip_x11_convert_selection_cb() is invoked, thus in X library code. - -":vimgrep" does not recognize a recursive symlink. Is it possible to detect -this, at least for Unix (using device/inode)? - -When switching between windows the cursor is often put in the middle. -Remember the relative position and restore that, just like lnum and col are -restored. (Luc St-Louis) - -Patch to support horizontal scroll wheel in GTK. Untested. (Bjorn Winckler, -2010 Jun 30) - - -More patches: -- Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11) - Needs a few tests. -- Add 'cscopeignorecase' option. (Liang Wenzhi, 2006 Sept 3) -- Argument for feedkeys() to prepend to typeahead (Yakov Lerner, 2006 Oct - 21) -- Load intl.dll too, not only libintl.dll. (Mike Williams, 2006 May 9, docs - patch May 10) -- Extra argument to strtrans() to translate special keys to their name (Eric - Arnold, 2006 May 22) -- 'threglookexp' option: only match with first word in thesaurus file. - (Jakson A. Aquino, 2006 Jun 14) -- Mac: indicate whether a buffer was modified. (Nicolas Weber, 2006 Jun 30) -- Allow negative 'nrwidth' for left aligning. (Nathan Laredo, 2006 Aug 16) -- ml_append_string(): efficiently append to an existing line. (Brad - Beveridge, 2006 Aug 26) Use in some situations, e.g., when pasting a - character at a time? -- recognize hex numbers better. (Mark Manning, 2006 Sep 13) -- Add <AbbrExpand> key, to expand an abbreviation in a mapping. (Kana - Natsuno, 2008 Jul 17) -- Add 'wspara' option, also accept blank lines like empty lines for "{" and - "}". (Mark Lundquist, 2008 Jul 18) -- Patch to add CTRL-T to delete part of a path on cmdline. (Adek, 2008 Jul - 21) -- Instead of creating a copy of the tutor in all the shell scripts, do it in - vimtutor.vim. (Jan Minar, 2008 Jul 20) -- When fsync() fails there is no hint about what went wrong. Patch by Ben - Schmidt, 2008 Jul 22. -- testdir/Make_dos_sh.mak for running tests with MingW. (Bill Mccarthy, 2008 - Sep 13) -- Patch for adding "space" item in 'listchars'. (Jérémie Roquet, 2009 Oct 29, - Docs patch Oct 30) -- Replace ccomplete.vim by cppcomplete.vim from www.vim.org? script 1520 by - Vissale Neang. (Martin Stubenschrott) Asked Vissale to make the scripts - more friendly for the Vim distribution. - New version received 2008 Jan 6. - No maintenance in two years... -- Patch to access screen under Python. (Marko Mahni, 2010 Jul 18) -- Patch to open dropped files in new tabs. (Michael Trim, 2010 Aug 3) - -Awaiting updated patches: -9 Mac unicode patch (Da Woon Jung, Eckehard Berns): - 8 Add patch from Muraoka Taro (Mar 16) to support input method on Mac? - New patch 2004 Jun 16 - - selecting proportional font breaks display - - UTF-8 text causes display problems. Font replacement causes this. - - Command-key mappings do not work. (Alan Schmitt) - - With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work. - (Alan Schmitt) - - remove 'macatsui' option when this has been fixed. - - when 'macatsui' is off should we always convert to "macroman" and ignore - 'termencoding'? -9 HTML indenting can be slow. Caused by using searchpair(). Can search() - be used instead? A.Politz is looking into a solution. -8 Win32: Add minidump generation. (George Reilly, 2006 Apr 24) -8 Add ":n" to fnamemodify(): normalize path, remove "../" when possible. - Aric Blumer has a patch for this. He will update the patch for 6.3. -7 Completion of network shares, patch by Yasuhiro Matsumoto. - Update 2004 Sep 6. - How does this work? Missing comments. -- Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav - Smilauer, 2004 Sep 13, fix Oct 31, update 2007 May 30) - Version for latest MacVim: Tobia Conforto, 2009 Nov 23 -8 Add a few more command names to the menus. Patch from Jiri Brezina - (28 feb 2002). Will mess the translations... -7 ATTENTION dialog choices are more logical when "Delete it' appears - before "Quit". Patch by Robert Webb, 2004 May 3. -- Include flipcase patch: ~/vim/patches/wall.flipcase2 ? Make it work - for multi-byte characters. -- Win32: add options to print dialog. Patch from Vipin Aravind. -- Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5) - use the patch that keeps using HLF_8 if HLF_WS has not - been given values. - Add section in help files for these highlight groups? -8 "fg" and "bg" don't work in an xterm. Get default colors from xterm - with an ESC sequence. - xterm can send colors for many things. E.g. for the cursor: - <Esc>]12;?<Bel> - Can use this to get the background color and restore the colors on exit. -7 Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Marcin - Dalecki has a patch for Motif and Carbon) -- Add possibility to highlight specific columns (for Fortran). Or put a - line in between columns (e.g., for 'textwidth'). - Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20. -8 Add functions: - gettext() Translate a message. (Patch from Yasuhiro Matsumoto) - Update 2004 Sep 10 - Another patch from Edward L. Fox (2005 Nov 24) - Search in 'runtimepath'? - More docs needed about how to use this. - How to get the messages into the .po files? - strchars() Like strlen() and strwidth() but counting characters - instead of bytes. - confirm() add "flags" argument, with 'v' for vertical - layout and 'c' for console dialog. (Haegg) - Flemming Madsen has a patch for the 'c' flag - (2003 May 13) - raisewin() raise gvim window (see HierAssist patch for - Tcl implementation ~/vim/HierAssist/ ) - taglist() add argument to specify maximum number of matches. - useful for interactive things or completion. - col('^') column of first non-white character. - Can use "len(substitute(getline('.'), '\S.*', '', '')) - + 1", but that's ugly. -7 Add patch from Benoit Cerrina to integrate Vim and Perl functions - better. Now also works for Ruby (2001 Nov 10) -- Patch from Herculano de Lima Einloft Neto for better formatting of the - quickfix window (2004 dec 2) -7 When 'rightleft' is set, the search pattern should be displayed right - to left as well? See patch of Dec 26. (Nadim Shaikli) -8 Option to lock all used memory so that it doesn't get swapped to disk - (uncrypted). Patch by Jason Holt, 2003 May 23. Uses mlock. -7 Add ! register, for shell commands. (patch from Grenie) -8 In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc. Like it's - done for filetype detection. Patch from Walter Briscoe, 2003 Jul 1. -7 Add a "-@ filelist" argument: read file names from a file. (David - Kotchan has a patch for it) -8 Include a connection to an external program through a pipe? See - patches from Felbinger for a mathematica interface. - Or use emacs server kind of thing? -7 Add ":justify" command. Patch from Vit Stradal 2002 Nov 25. -- findmatch() should be adjusted for Lisp. See remark at - get_lisp_indent(). Esp. \( and \) should be skipped. (Dorai Sitaram, - incomplete patch Mar 18) -- For GUI Find/Replace dialog support using a regexp. Patch for Motif - and GTK by degreneir (nov 10 and nov 18). -- Patch for "paranoid mode" by Kevin Collins, March 7. Needs much more work. - - -Vi incompatibility: -- Try new POSIX tests, made after my comments. (Geoff Clare, 2005 April 7) - Version 1.5 is in ~/src/posix/1.5. (Lynne Canal) -8 With undo/redo only marks in the changed lines should be changed. Other - marks should be kept. Vi keeps each mark at the same text, even when it - is deleted or restored. (Webb) - Also: A mark is lost after: make change, undo, redo and undo. - Example: "{d''" then "u" then "d''": deletes an extra line, because the '' - position is one line down. (Veselinovic) -8 When stdin is not a tty, and Vim reads commands from it, an error should - make Vim exit. -7 Unix Vim (not gvim): Typing CTRL-C in Ex mode should finish the line - (currently you can continue typing, but it's truncated later anyway). - Requires a way to make CTRL-C interrupt select() when in cooked input. -8 When loading a file in the .exrc, Vi loads the argument anyway. Vim skips - loading the argument if there is a file already. When no file argument - given, Vi starts with an empty buffer, Vim keeps the loaded file. (Bearded) -6 In Insert mode, when using <BS> or <Del>, don't wipe out the text, but - only move back the cursor. Behaves like '$' in 'cpoptions'. Use a flag - in 'cpoptions' to switch this on/off. -8 When editing a file which is a symbolic link, and then opening another - symbolic link on the same file, Vim uses the name of the first one. - Adjust the file name in the buffer to the last one used? Use several file - names in one buffer??? - Also: When first editing file "test", which is symlink to "test2", and - then editing "test2", you end up editing buffer "test" again. It's not - logical that the name that was first used sticks with the buffer. -7 The ":undo" command works differently in Ex mode. Edit a file, make some - changes, "Q", "undo" and _all_ changes are undone, like the ":visual" - command was one command. - On the other hand, an ":undo" command in an Ex script only undoes the last - change (e.g., use two :append commands, then :undo). -7 The ":map" command output overwrites the command. Perhaps it should keep - the ":map" when it's used without arguments? -7 CTRL-L is not the end of a section? It is for Posix! Make it an option. -7 Implement 'prompt' option. Init to off when stdin is not a tty. -7 CTRL-T in Insert mode inserts 'shiftwidth' of spaces at the cursor. Add a - flag in 'cpoptions' for this. -7 Add a way to send an email for a crashed edit session. Create a file when - making changes (containing name of the swap file), delete it when writing - the file. Supply a program that can check for crashed sessions (either - all, for a system startup, or for one user, for in a .login file). -7 Vi doesn't do autoindenting when input is not from a tty (in Ex mode). -7 "z3<CR>" should still use the whole window, but only redisplay 3 lines. -7 ":tag xx" should move the cursor to the first non-blank. Or should it go - to the match with the tag? Option? -7 Implement 'autoprint'/'ap' option. -7 Add flag in 'cpoptions' that makes <BS> after a count work like <Del> - (Sayre). -7 Add flag in 'cpoptions' that makes operator (yank, filter) not move the - cursor, at least when cancelled. (default Vi compatible). -7 This Vi-trick doesn't work: "Q" to go to Ex mode, then "g/pattern/visual". - In Vi you can edit in visual mode, and when doing "Q" you jump to the next - match. Nvi can do it too. -7 Support '\' for line continuation in Ex mode for these commands: (Luebking) - g/./a\ g/pattern1/ s/pattern2/rep1\\ - line 1\ line 2\\ - line 2\ line 3\\ - . line4/ -6 ":e /tmp/$tty" doesn't work. ":e $uid" does. Is $tty not set because of - the way the shell is started? -6 Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange - thing. (only repeat insert for the first line). - - -GTK+ GUI known bugs: -9 Crash with X command server over ssh. (Ciaran McCreesh, 2006 Feb 6) -8 GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj - Machowski) They are displayed as separate characters. Problem in - creating a label? -8 GTK 2: Combining UTF-8 characters are sometimes not drawn properly. - Depends on the font size, "monospace 13" has the problem. Vim seems to do - everything right, must be a GTK bug. Is there a way to work around it? -9 Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim - when it is longer than 4000 characters. Works OK from gvim to gvim and - vim to vim. Pasting through xterm (using the shift key) also works. - It starts working after GTK gvim loses the selection and gains it again. -- Gnome2: When moving the toolbar out of the dock, so that it becomes - floating, it can no longer be moved. Therefore making it float has been - blocked for now. - - -Win32 GUI known bugs: -- Win32: tearoff menu window should have a scrollbar when it's taller than - the screen. -8 non-ASCII font names don't work. Need to convert from 'encoding' and use - the wide functions. -8 On Windows 98 the unicows library is needed to support functions with UCS2 - file names. Can we load unicows.dll dynamically? -8 When the primary monitor is below or right of the secondary monitor and - Vim is on the secondary monitor it will often move to the primary monitor. - Window position coordinates can be negative. (James Harvey) -8 The -P argument doesn't work very well with many MDI applications. - The last argument of CreateWindowEx() should be used, see MSDN docs. - Tutorial: http://win32assembly.online.fr/tut32.html -8 In eval.c, io.h is included when MSWIN32 is defined. Shouldn't this be - WIN32? Or can including io.h be moved to vim.h? (Dan Sharp) -7 Windows XP: When using "ClearType" for text smoothing, a column of yellow - pixels remains when typing spaces in front of a "D" ('guifont' set to - "lucida_console:h8"). -6 Win32 GUI: With "-u NONE -U NONE" and doing "CTRL-W v" "CTRL-W o", the ":" - of ":only" is highlighted like the cursor. (Lipelis) -8 When 'encoding' is "utf-8", should use 'guifont' for both normal and wide - characters to make Asian languages work. Win32 fonts contain both - type of characters. -7 When font smoothing is enabled, redrawing can become very slow. The reason - appears to be drawing with a transparent background. Would it be possible - to use an opaque background in most places? -8 Use another default for 'termencoding': the active codepage. Means that - when 'encoding' is changed typing characters still works properly. - Alternative: use the Unicode functions to obtain typed characters. -8 Win32: Multi-byte characters are not displayed, even though the same font - in Notepad can display them. (Srinath Avadhanula) Try with the - UTF-8-demo.txt page with Andale Mono. -7 The cursor color indicating IME mode doesn't work properly. (Shizhu Pan, - 2004 May 9) -8 Win32: When clicking on the gvim title bar, which gives it focus, produces - a file-changed dialog, after clicking on a button in that dialog the gvim - window follows the mouse. The button-up event is lost. Only with - MS-Windows 98? - Try this: ":set sw ts", get enter-prompt, then change the file in a - console, go back to Vim and click "reload" in the dialog for the changed - file: Window moves with the cursor! - Put focus event in input buffer and let generic Vim code handle it? -8 Win32: When mouse is hidden and in the toolbar, moving it won't make it - appear. (Sami Salonen) -8 Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that - comes available. (Poucet) It works OK on Win 98 but doesn't work on Win - NT 4.0. Leaves a grey area where the scrollbar was. ":set go+=r" also - doesn't work properly. -8 When Vim is minimized and when maximizing it a file-changed dialog pops - up, Vim isn't maximized. It should be done before the dialog, so that it - appears in the right position. (Webb) -9 When selecting at the more-prompt or hit-enter-prompt, the right mouse - button doesn't give popup menu. - At the hit-enter prompt CTRL-Y doesn't work to copy the modeless - selection. - On the command line, don't get a popup menu for the right mouse button. - Let the middle button paste selected text (not the clipboard but the - non-Visual selection)? Otherwise CTRL-Y has to be used to copy the text. -8 When 'grepprg' doesn't execute, the error only flashes by, the - user can hardly see what is wrong. (Moore) - Could use vimrun with an "-nowait" argument to only wait when an error - occurs, but "command.com" doesn't return an error code. -8 When the 'shell' cannot be executed, should give an appropriate error msg. - Esp. for a filter command, currently it only complains the file could not - be read. -7 Add an option to add one pixel column to the character width? Lucida - Console italic is wider than the normal font ("d" overlaps with next char). - Opposite of 'linespace': 'columnspace'. -7 At the hit-enter prompt scrolling now no longer works. Need to use the - keyboard to get around this. Pretend <CR> was hit when the user tries to - scroll? -7 Scrollbar width doesn't change when selecting other windows appearance. - Also background color of Toolbar and rectangle below vert. scrollbar. -7 "!start /min cmd" should run in a minimized window, instead of using - "/min" as the command name. (Rogall) -6 Drawing text transparently doesn't seem to work (when drawing part cursor). -8 CTRL key doesn't always work in combination with ALT key. It does work - for function keys, not for alphabetic characters. Perhaps this is because - CTRL-ALT is used by Windows as AltGr? -8 CTRL-- doesn't work for AZERTY, because it's CTRL-[ for QWERTY. How do we - know which keyboard is being used? -7 When scrolling, and a background color is dithered, the dither pattern - doesn't always join correctly between the scrolled area and the new drawn - area (Koloseike). -8 When gui_init_font() is called with "*", p_guifont is freed while it might - still be used somewhere. This is too tricky, do the font selection first, - then set the new font by name (requires putting all logfont parameters in - the font name). - - -Athena and Motif: -6 New Motif toolbar button from Marcin Dalecki: - - When the mouse pointer is over an Agide button the red becomes black. - Something with the way colors are specified in the .xpm file. - - The pixmap is two pixels smaller than it should be. The gap is filled - with grey instead of the current toolbar background color. -9 Can configure be changed to disable netbeans if the Xpm library is - required and it's missing? -8 When using the resource "Vim*borderwidth 2" the widgets are positioned - wrong. -9 XIM is disabled by default for SGI/IRIX. Fix XIM so that 'imdisable' can - be off by default. -9 XIM doesn't work properly for Athena/Motif. (Yasuhiro Matsumoto) For now, - keep XIM active at all times when the input method has the preediting - flag. -8 X11: A menu that contains an umlaut is truncated at that character. - Happens when the locale is "C", which uses ASCII instead of IS0-8859-1. - Is there a way to use latin1 by default? Gnome_init() seems to do this. -8 Perhaps use fontsets for everything? -6 When starting in English and switching the language to Japanese, setting - the locale with ":lang", 'guifontset' and "hi menu font=", deleting all - menus and setting them again, the menus don't use the new font. Most of - the tooltips work though... -7 Motif: when using a file selection dialog, the specified file name is not - always used (when specifying a filter or another directory). -8 When 'encoding' is different from the current locale (e.g., utf-8) the - menu strings don't work. Requires conversion from 'encoding' to the - current locale. Workaround: set 'langmenu'. - - -Athena GUI: -9 When dragging the scrollbar thumb very fast, focus is only obtained in - the scrollbar itself. And the thumb is no longer updated when moving - through files. -7 The file selector is not resizable. With a big font it is difficult to - read long file names. (Schroeder) -4 Re-write the widget attachments and code so that we will not have to go - through and calculate the absolute position of every widget every time the - window is refreshed/changes size. This will help the "flashing-widgets" - problem during a refresh. -5 When starting gvim with all the default colors and then typing - ":hi Menu guibg=cyan", the menus change color but the background of the - pullright pixmap doesn't change colors. - If you type ":hi Menu guibg=cyan font=anyfont", then the pixmap changes - colors as it should. - Allocating a new pixmap and setting the resource doesn't change the - pullright pixmap's colors. Why? Possible Athena bug? - - -Motif GUI: -- gui_mch_browsedir() is missing. -7 Use XmStringCreateLocalized() instead of XmStringCreateSimple()? - David Harrison says it's OK (it exists in Motif 1.2). -8 Lesstif: When deleting a menu that's torn off, the torn off menu becomes - very small instead of disappearing. When closing it, Vim crashes. - (Phillipps) - - -GUI: -9 On Solaris, creating the popup menu causes the right mouse button no - longer to work for extending the selection. (Halevy) -9 When running an external program, it can't always be killed with CTRL-C. - e.g., on Solaris 5.5, when using "K" (Keech). Other 'guipty' problems on - Solaris 2.6. (Marley) -9 On Solaris: Using a "-geometry" argument, bigger than the window where Vim - is started from, causes empty lines below the cmdline. (raf) -8 X11 GUI: When menu is disabled by excluding 'm' from 'guioptions', ALT key - should not be used to trigger a menu (like the Win32 version). -8 When setting 'langmenu', it should be effective immediately. Store both - the English and the translated text in the menu structure. Re-generate - the translation when 'langmenu' has changed. -8 Basic flaw in the GUI code: NextScreen is updated before calling - gui_write(), but the GUI code relies on NextScreen to represent the state - of where it is processing the output. - Need better separation of Vim core and GUI code. -8 When fontset support is enabled, setting 'guifont' to a single font - doesn't work. -8 Menu priority for sub-menus for: Amiga, BeOS. -8 When translating menus ignore the part after the Tab, the shortcut. So - that the same menu item with a different shortcut (e.g., for the Mac) are - still translated. -8 Add menu separators for Amiga, RISCOS. -8 Add way to specify the file filter for the browse dialog. At least for - browse(). -8 Add dialog for search/replace to other GUIs? Tk has something for this, - use that code? Or use console dialog. -8 When selecting a font with the font dialog and the font is invalid, the - error message disappears too quick. -7 More features in the find/replace dialog: - - regexp on/off - - search in selection/buffer/all buffers/directory - when all buffers/directory is used: - - filter for file name - when directory is used: - - subdirectory on/off - - top directory browser -8 gui_check_colors() is not called at the right moment. Do it much later, - to avoid problems. -8 gui_update_cursor() is called for a cursor shape change, even when there - are mappings to be processed. Only do something when going to wait for - input. Or maybe every 100 ms? -8 X11: When the window size is reduced to fit on screen, there are blank - lines below the text and bottom scrollbar. "gvim -geometry 80x78+0+0". - When the "+0+0" is omitted it works. -8 When starting an external command, and 'guipty' set, BS and DEL are mixed - up. Set erase character somehow? -8 A dead circumflex followed by a space should give the '^' character - (Rommel). Look how xterm does this. - Also: Bednar has some code for dead key handling. - Also: Nedit 5.0.2 with USE_XMIM does it right. (Gaya) -8 The compose key doesn't work properly (Cepas). Both for Win32 and X11. -7 The cursor in an inactive window should be hollow. Currently it's not - visible. -7 GUI on Solaris 2.5.1, using /usr/dt/..: When gvim starts, cursor is - hollow, after window lowered/raised it's OK. (Godfrey) -7 When starting GUI with ":gui", and window is made smaller because it - doesn't fit on the screen, there is an extra redraw. -8 When setting font with .Xdefaults, there is an extra empty line at the - bottom, which disappears when using ":set guifont=<Tab>". (Chadzelek) -8 When font shape changes, but not the size, doing ":set font=" does not - redraw the screen with the new font. Also for Win32. - When the size changes, on Solaris 2.5 there isn't a redraw for the - remaining part of the window (Phillipps). -- Flashes really badly in certain cases when running remotely from a Sun. -4 Re-write the code so that the highlighting isn't changed multiple times - when doing a ":hi clear". The color changes happen three or more times - currently. This is very obvious on a 66Mhz 486. - - -MSDOS/DJGPP: -9 Pressing CTRL-C often crashes the console Vim runs in. (Ken Liao) - When 'bioskey' isn't set it doesn't happen. Could be a problem with the - BIOS emulation of the console. Version 5.6 already had this problem. -8 DJGPP: "cd c:" can take us to a directory that no longer exists. - change_drive() doesn't check this. How to check for this error? -9 The 16 bit version runs out of memory very quickly. Should find unused - code and reduce static data. Resetting 'writebackup' helps to be able to - write a file. -9 Crash when running on Windows 98 in a console window and pressing CTRL-C. - Happens now and then. When debugging Vim in gdb this also happens. Since - the console crashes, might be a bug in the DOS console. Resetting - 'bioskey' avoids it, but then CTRL-C doesn't work. -9 DOS: Make CTRL-Fx and ALT-Fx work. - CTRL-F1 = CE-5E, CTRL-F2 = CE-5F, .., CTRL-F10 = CE-67 - ALT-F1 = CE-68, ALT-F2 = CE-69, .., ALT-F10 = CE-71 - Shifted cursor keys produce same codes as unshifted keys. Use bioskey(2) - to get modifier mask for <S-C-M-Fx>. - Use K_SPECIAL/KS_MODIFIER codes to insert modifier mask in input stream? - Make this work like in Win32 console. - Mapping things like <M-A> doesn't work, because it generates an extended - key code. Use a translation table? -9 Can't read an opened swap file when the "share" command has not been used. - At least ignore the swap files that Vim has opened itself. -8 Use DJGPP 2.03. -8 The Dos32 version (DJGPP) can't use long file names on Windows NT. - Check if new package can be used (v2misc/ntlfn08[bs].zip). -8 setlocale() is bogus. -8 Vim busy waits for new characters or mouse clicks. Should put in some - sort of sleep, to avoid eating 50% of the CPU time. Test on an unpatched - Windows 95 system! -8 DJGPP: when shell is bash, make fails. (Donahoe) -7 Hitting CTRL-P twice quickly (e.g., in keyword completion) on a 8088 - machine, starts printer echo! (John Mullin). -7 MSDOS 16 bit version can't work with COMSPEC that has an argument, e.g.: - COMSPEC=C:\WINDOWS\COMMAND.COM /E:4096 (Bradley) - Caused by BCC system() function (Borland "make" has the same problem). -8 Mouse: handle left&right button pressed as middle button pressed. Add - modifier keys shift, ctrl and alt. -7 When too many files are open (depends on FILES), strange things happen. - The Dos16 version runs out of memory, in the Dos32 version "!ls" causes a - crash. Another symptom: .swp files are not deleted, existing files are - "[New file]". -7 DJGPP version doesn't work with graphics display mode. Switch to a mode - that is supported? -8 DJGPP: ":mode" doesn't work for many modes. Disable them. -8 DJGPP: When starting in Ex mode, shouldn't clear the screen. (Walter - Briscoe) - - -MSDOS, OS/2 and Win32: -8 OS/2: Add backtick expansion. Undefine NO_EXPANDPATH and use - gen_expand_wildcards(). -8 OS/2: Add clipboard support? See example clipbrd.exe from Alexander - Wagner. -8 OS/2: Add Extended Attributes support and define HAVE_ACL. -8 OS/2: When editing a file name "foo.txt" that is actually called FOO.txt, - writing uses "foo.txt". Should obtain the real file name. -8 Should $USERPROFILE be preferred above $HOMEDRIVE/$HOMEPATH? No, but it's - a good fallback, thus use: - $HOME - $HOMEDRIVE$HOMEPATH - SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_APPDATA, FALSE); - $USERPROFILE - SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_COMMON_APPDATA, FALSE); - $ALLUSERSPROFILE - $SYSTEMDRIVE\ - C:\ -8 Win32 console: <M-Up> and <M-Down> don't work. (Geddes) We don't have - special keys for these. Should use modifier + key. -8 Win32 console: caps-lock makes non-alpha keys work like with shift. - Should work like in the GUI version. -8 Environment variables in DOS are not case sensitive. Make a define for - STRCMP_ENV(), and use it when comparing environment var names. -8 Setting 'shellslash' has no immediate effect. Change all file names when - it is set/reset? Or only use it when actually executing a shell command? -8 When editing a file on a Samba server, case might matter. ":e file" - followed by ":e FILE" will edit "file" again, even though "FILE" might be - another one. Set last used name in buflist_new()? Fix do_ecmd(), etc. -8 When a buffer is editing a file like "ftp://mach/file", which is not going - to be used like a normal file name, don't change the slashes to - backslashes. (Ronald Hoellwarth) - - -Windows 95: -8 Editing a file by its short file name and writing it, makes the long file - name disappear. Setting 'backupcopy' helps. - Use FindFirstFile()->cAlternateFileName in fname_case() (George Reilly). -8 Doing wildcard expansion, will match the short filename, but result in the - long filename (both DJGPP and Win32). - - -Win32 console: -9 When editing a file by its short file name, it should be expanded into its - long file name, to avoid problems like these: (Mccollister) - 1) Create a file called ".bashrc" using some other editor. - 2) Drag that file onto a shortcut or the actual executable. - 3) Note that the file name is something like BASHRC~1 - 4) Go to File->Save As menu item and type ".bashrc" as the file name. - 5) Press "Yes" to indicate that I want to overwrite the file. - 6) Note that the message "File exists (add ! to override)" is displayed - and the file is not saved. - Use FindFirstFile() to expand a file name and directory in the path to its - long name. -8 Also implement 'conskey' option for the Win32 console version? Look at - how Xvi does console I/O under Windows NT. -7 Re-install the use of $TERM and support the use of different terminals, - besides the console. -8 Use of <altgr> modifier doesn't work? 5.3 was OK. (Garcia-Suarez/Guckes) -9 Mapping <C-S-Tab> doesn't work correctly. How to see the difference with - <C-S-i>? -9 tmpnam() uses file in root of file system: "\asdf". That doesn't work on - a Netware network drive. Use same function as for Win32 GUI? -8 In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__ - is not defined. Shouldn't that be the other way around? -7 Use SetConsoleCP() and SetConsoleOutputCP() to implement 'termencoding'? - Avoids that input and output work differently. Need to be restored when - exiting. - - -Amiga: -8 In mch_inchar() should use convert_input_safe() to handle incomplete byte - sequences. -9 In mch_expandpath() a "*" is to be expanded, but "\*" isn't. Remove - backslashes in result. -8 Executing a shell, only one option for 'shell' is separated. Should do - all options, using white space separation. - - -Macintosh: -- GUI: gui_mch_browsedir() is missing. -7 Patch to add 'transparency' option. Disadvantage: it's slow. (Eckehard - Berns, 2004 May 9) http://ecki.to/vim/TransBack-2004-05-09.diff - Needs more work. Add when someone really wants it. -7 Loading the Perl library only works on OS/X 10.2 or 10.3, never on both. - Load the Perl library dynamically see Python sources file dynload_mac - (Jack) - dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html -8 Inputting Unicode characters does not work in the terminal. They appear - to arrive as upper and lower bytes. (David Brown, 2004 April 17) -8 Typing Unicode characters doesn't work at all in the GUI. -8 inputdialog() doesn't resize when giving more text lines. (David Fishburn, - 2006 Sept 28) -9 Problems in Carbon version for OS X: (Benji Fisher) - - keyboard shortcuts in the menus get lost. -8 The Vim/About menu doesn't work. -8 ":gui" doesn't fork. Enabling the code in gui.c to fork causes a SEGV. -8 Define vim_mkdir() for Macintosh. -8 Define mch_writable() for Macintosh. -9 When DiskLock is running, using a swap file causes a crash. Appears to be - a problem with writing a file that starts with a dot. (Giacalone) -9 On G3 Mac, OS version 8, control strip causes characters messed up when - scrolling (CTRL-L cleans it up). (Benji Fisher) -9 On G3 Mac, OS version 8, variable-speed scrolling doesn't work, after two - seconds of scrolling the screen freezes. (Benji Fisher) -9 In mac_expandpath() check that handling of backslashes is done properly. -8 Standard Mac shortcuts are missing. (Amerige) -8 Handling of non-fixed width fonts is wrong. (Amerige) - - -"Small" problems: -- Can't disable terminal flow control, to enable the use of CTRL-S and - CTRL-Q. Add an option for it? -- When using e_secure in do_one_cmd() mention the command being executed, - otherwise it's not clear where it comes from. -- When the quickfix window is open and executing ":echo 'hello'" using the - Command-line window, the text is immediately removed by the redrawing. - (Michael Henry, 2008 Nov 1) - Generic solution: When redrawing while there is a message on the - cmdline, don't erase the display but draw over the existing text. - Other solution, redraw after closing the cmdline window, before executing - the command. -9 For Turkish vim_tolower() and vim_toupper() also need to use utf_ - functions for characters below 0x80. (Sertacyildiz) -9 When the last edited file is a help file, using '0 in a new Vim doesn't - edit the file as a help file. 'filetype' is OK, but 'iskeyword' isn't, - file isn't readonly, etc. -8 When an ":edit" is inside a try command and the ATTENTION prompt is used, - the :catch commands are always executed, also when the file is edited - normally. Should reset did_emsg and undo side effects. Also make sure - the ATTENTION message shows up. Servatius Brandt works on this. -8 ":g//" gives "Pattern not found error" with E486. Should not use the - error number, it's not a regular error message. -7 Vimtutor leaves escape sequence in terminal. This is the xterm response to - requesting the version number. (Yasuhiro Matsumoto) -8 When redirecting and using ":silent" the current column for displaying and - redirection can be different. Use a separate variable to hold the column - for redirection. -7 The messages for "vim --help" and "vim --version" don't use - 'termencoding'. -- Could the hit-enter prompt be avoided when a message only overlaps the - 'showcmd' area? Clear that area when the next cmd is typed. -8 When 'scrollbind' is set, a window won't scroll horizontally if the cursor - line is too short. Add a word in 'scrollopt' to allow moving the cursor - to longer line that is visible. A similar thing is done for the GUI when - using the horizontal scrollbar. -7 VisVim can only open one file. Hard to solve: each opened file is passed - with a separate invocation, would need to use timestamps to know the - invocations belong together. -8 When giving a ":bwipeout" command a file-changed dialog may popup for this - buffer, which is pointless. (Mike Williams) -8 On MS-Windows ":make" doesn't show output while it is working. Use the - tee.exe from http://unxutils.sourceforge.net/ ? About 16 Kbyte in the - UnxUtils.zip archive. - Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter - Briscoe says it's not as good. -8 "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters. -8 When doing Insert mode completion a mapping cannot recursively call - edit(), because the completion information is global. Put everything in - an allocated structure? -6 Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) -8 Command line completion: buffers "foo.txt" and "../b/foo.txt", completing - ":buf foo<Tab>" doesn't find the second one. (George V. Reilly) -7 Output for ":scriptnames" and ":breaklist" should shorten the file names: - use "~/" when possible. -7 mb_off2cells() doesn't work correctly on the tail byte of a double-byte - character. (Yasuhiro Matsumoto) It should return 1 when used on a tail - byte, like for utf-8. Store second byte of double-byte in ScreenLines2[] - (like for DBCS_JPNU) and put a zero in the second byte (like for UTF-8). -8 'backupdir' and 'directory' should use $TMPDIR, $TMP and/or $TEMP when - defined. -7 Inside a function with "perl <<EOF" a line with "$i++" is recognized as an - ":insert" command, causing the following "endfunction" not to be found. - Add skipping this perl construction inside function definitions. -7 When 'ttimeoutlen' is 10 and 'timeoutlen' is 1000, there is a keycode - "<Esc>a" and a mapping <Esc>x", when typing "<Esc>a" with half a second - delay should not be interpreted as a keycode. (Hans Ginzel) -7 ":botright 1 new" twice causes all window heights to be changed. Make the - bottom window only bigger as much as needed. -7 The Cygwin and MingW makefiles define "PC", but it's not used anywhere. - Remove? (Dan Sharp) -9 User commands use the context of the script they were defined in. This - causes a "s:var" argument to unexpectedly use a variable in the defining - script, not the calling script. Add an argument to ":command": - "-keepcontext". Do replace <SID>, so that a function in the defining - script can be called. -8 The Japanese message translations for MS-Windows are called ja.sjis.po, - but they use encoding cp932. Rename the file and check that it still - works. -8 A very long message in confirm() can't be quit. Make this possible with - CTRL-C. -7 clip_x11_own_selection() uses CurrentTime, that is not allowed. VNC X - server has a problem with this. (Mark Waggoner) Remembering the timestamp - of events isn't always possible. We don't get them in an xterm. GTK - doesn't obtain the selection again when the timestamp differs, thus it - won't work for GTK anyway. -8 When the clipboard isn't supported: ":yank*" gives a confusing error - message. Specifically mention that the register name is invalid. -8 "gf" always excludes trailing punctuation characters. file_name_in_line() - is currently fixed to use ".,:;!". Add an option to make this - configurable? -8 'hkmap' should probably be global-local. -9 When "$" is in 'cpoptions' and folding is active, a "C" command changes - the folds and resets w_lines_valid. The display updating doesn't work - then. (Pritesh Mistry) -8 Using ":s" in a function changes the previous replacement string. Save - "old_sub" in save_search_patterns()? -8 Should allow multi-byte characters for the delimiter: ":s+a+b+" where "+" - is a multi-byte character. -8 When appending to a file and 'patchmode' isn't empty, a backup file is - always written, even when the original file already exists. -7 When using "daw" on the last word in a file and this is a single letter, - nothing is deleted. Should delete the letter and preceding white space. -9 When getting focus while writing a large file, could warn for this file - being changed outside of Vim. Avoid checking this while the file is being - written. -7 The message in bt_dontwrite_msg() could be clearer. -8 The script ID that is stored with an option and displayed with ":verbose - set" isn't reset when the option is set internally. For example when - 'foldlevel' is set from 'foldlevelstart'. -8 Also store the line number with the script ID and use it for ":verbose", - so that "set nocompatible" is found when it changes other option values. - When an option is set indirectly mention the command? E.g. when - ":diffsplit" sets 'foldmethod'. -8 In the fileformat dialog, "Cancel" isn't translated. Add a global - variable for this. (Eduardo Fernandez) -9 When editing a file with 'readonly' set, there is no check for an existing - swap file. Then using ":write" (without making any changes) doesn't give - a warning either. Should check for an existing swap file without creating - one. Unfinished patch by Ian Kelling, 2008 July 14. -7 When 'showbreak' is set, the amount of space a Tab occupies changes. - Should work like 'showbreak' is inserted without changing the Tabs. -7 When 'mousefocus' is set and switching to another window with a typed - command, the mouse pointer may be moved to a part of the window that's - covered by another window and we lose focus. Only move in the y - direction, not horizontally? -8 ":hardcopy": - - Using the cterm_color[] table is wrong when t_colors is > 16. - - Need to handle unprintable characters. - - Win32: On a B&W printer syntax highlighting isn't visible. Perform - dithering to make grey text? - - Add a flag in 'printoptions' to add an empty page to make the total - number even. "addempty"? (Mike Williams) - - Respect 'linebreak'. Perhaps also 'showbreak'? - - Should interpret CTRL-L as a page break. - - Grey line numbers are not always readable. Add field in 'printoptions'. - Default to black when no syntax highlighting. - - Be able to print a window in diff mode. - - Be able to specify a colorscheme to use for printing. And a separate - one for B&W printing (if that can be detected). -8 In Visual block mode with 'lbr' set, a change command doesn't insert the - text in following lines where the linebreak changes. -9 dosinst.c: The DJGPP version can't uninstall the Uninstall registry key on - Windows NT. How to install a .inf file on Windows NT and how to detect - that Windows NT is being used? -8 When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a - block of one double-wide character, then "d" deletes only half of it. -8 When 'virtualedit' is set, should "I" in blockwise visual mode also insert - in lines that don't extend into the block? -8 With 'virtualedit' set, in Insert mode just after the end of line, CTRL-O - yh does not yank the last character of the line. (Pavel Papushev) - Doing "hl" first appears to make it work. -8 With 'virtualedit' set it's possible to move into the blank area from - 'linebreak'. -8 With 'virtualedit' set and 'selection' "exclusive", a Visual selection - that ends in or after a tab, "d" doesn't delete (part of) the tab. - (Helmut Stiegler) -9 When jumping to a tag, the search pattern is put in the history. When - 'magic' is on, the pattern may not work. Translate the pattern depending - on p_magic when putting it in the history? Alternative: Store value of - 'magic' in history. (Margo) -9 optwin.vim: Restoring a mapping for <Space> or <CR> is not correct for - ":noremap". Add "mapcmd({string}, {mode})? Use code from ":mkexrc". -9 incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern - isn't updated). -9 term_console is used before it is set (msdos, Amiga). -9 Get out-of-memory for ":g/^/,$s//@/" on 1000 lines, this is not handled - correctly. Get many error messages while redrawing the screen, which - cause another redraw, etc. -8 [<C-I> doesn't work when '*' is in 'iskeyword'. find_pattern_in_path() - must escape special characters in the pattern. -8 Vim can overwrite a read-only file with ":w!". ":w" can't overwrite an - existing file, "w!" can, but perhaps not a read-only file? Then use - ":w!!" for that. - Or ask for permission to overwrite it (if file can be made writable) and - restore file to readonly afterwards. - Overwriting a file for which a swap file exists is similar issue. -7 When compiled with "xterm_clipboard", startup can be slower and might get - error message for invalid $DISPLAY. Try connecting to the X server in the - background (forked), so that Vim starts up quicker? Connect as soon as - the clipboard is to be used (Visual select mode starts, paste from - clipboard) -7 X11: Some people prefer to use CLIPBOARD instead of PRIMARY for the normal - selection. Add an "xclipboard" argument to the 'clipboard' option? (Mark - Waggoner) -8 For xterm need to open a connection to the X server to get the window - title, which can be slow. Can also get the title with "<Esc>[21t", no - need to use X11 calls. This returns "<Esc>]l{title}<Esc>\". -6 When the xterm reports the number of colors, a redraw occurs. This is - annoying on a slow connection. Wait for the xterm to report the number of - colors before drawing the screen. With a timeout. -8 When the builtin xterm termcap contains codes that are not wanted, need a - way to avoid using the builtin termcap. -8 Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode. Also - recognize these keys? Mostly useful for xterm simulators, like gnometerm. - See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style. -8 For xterm also recognize keypad up/down/left/right and insert. -8 '[ and '] should be set to start/end of line when using a linewise operator - (e.g., ":w"). -8 CTRL-A can't handle big "long" numbers, they become negative. Check for - "-" character, if not present, use unsigned long. -8 Make it possible to disable the special meaning of "#" in the first column - for ">>". -8 Add suspending with CTRL-Z at the "more" prompt, and when executing a long - script in do_cmdline(). -8 When using 'hidden', many swap files will be open. When Vim runs into the - maximum number of open files, error messages will appear. Detect that - this problem is present, and close any hidden files that don't have - changes. -8 With 'viminfo' set such that the ".viminfo" file is written on a FAT - filesystem, an illegal file name may be created: ".vim". -8 For each buffer that is opened, the viminfo file is opened and read to - check for file marks. This can be slow. -7 In xterm, recognize both vt100 and vt220 cursor keys. Change - add_termcode() to not remove an existing entry for a name, when it's - needed. - Need a generic solution to recognize different codes for the same key. -8 Core dump within signal function: gdb doesn't show stack backtrace! Option - to skip catch_signals()? -9 Repeating a "cw" with "." doesn't work if the text was pasted from the - clipboard. (Thomas Jones) It's because the menu/toolbar item exits Insert - mode and uses "gP". How to fix this without breaking inserting a block of - text? -8 In Replace mode pasting from the clipboard (using menu or toolbar) inserts - all the text. Add ":rmenu"? -8 Pasting with the mouse in Replace mode inserts the text, instead of - overwriting, when it is more than one line. Same for using <C-R>. -9 CTRL-E and CTRL-Y don't work in small window when 'so' is 4 and lines are - wrapping (Acevedo/in.226). E.g., when using CTRL-E, window height 7, - window might actually scroll down when last line of buffer is displayed. - --> Remember if the previous command was "cursor follows screen" or - "screen follow cursor" and use this in cursupdate(). -7 tilde_replace() can only handle "~/", should also do "~user/". - Get the list of home directories (from /etc/passwd? Use getpwent()) and - use some clever algorithm to match a path with that. Find common strings - in the list? -8 When dragging status line with mouse, sometimes a jump when first clicking - on the status line (caused by 'winheight'). Select window on button up, - instead of on button down. -8 Dragging the status line doesn't scroll but redraw. -9 Evaluating 'statusline' in build_stl_str_hl() does not properly check for - reaching the end of the available buffer. - Patch to dynamically allocate the buffer for % items. (Eric Arnold, 2006 - May 14) -8 When performing incremental search, should abort searching as soon as a - character is typed. -8 When the value of $MAKE contains a path, configure can't handle this. - It's an autoconf bug. Remove the path from $MAKE to work around it. -8 How to set VIMRC_FILE to \"something\" for configure? Why does this not - work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure -8 The temporary file is sometimes not writable. Check for this, and use an - alternate name when it isn't. Or add the 'temptemplate' option: template - for the temp file name ":set temptemplate=/usr/tmp/?????.tmp". - Also: Win32 version uses Windows temp directory, which might not work for - cygwin bash. -7 Get error "*, \+ or \( operand could be empty" for pattern "\(.\)\1\{3}". - Remember flags for backreferences. -7 When switching to Daylight Saving Time, Vim complains that a file has been - changed since last read. Can we use a function that uses GMT? -7 When completing an environment variable after a '$', check for file names - that contain a '$' after all have been found. -8 When "cm" termcap entry is missing, starting gvim shouldn't complain about - it. (Lohner) Try out with "vt100" entry, cm replaced with cX. -7 When an include file starts with "../", the check for already visiting - this file doesn't work. Need to simplify the file name. -7 The names and comments for the arguments of do_browse() are confusing. - "dflt" isn't the default file name when "initdir" is not NULL and - "initdir" is the default path to be used. -7 When 'scrolloff' is exactly half the window height, "j" causes a scroll of - two lines at a time. "k" doesn't do this. (Cory T. Echols) -8 When write_viminfo() is used while there are many orphaned viminfo - tempfiles writing the viminfo file fails. Give a clear error message so - that the user knows he has to delete the files. -7 It's possible to redefine a script-local function with ":func - <SNR>123_Test()". (Krishna) Disallow this. - - -I can't reproduce these (if you can, let me know how!): -9 NT 4.0 on NTFS file system: Editing ".bashrc" (drag and drop), file - disappears. Editing ".xyz" is OK. Also, drag&drop only works for three - files. (McCollister) - - -Problems that will (probably) not be solved: -- GTK: when using the popup menu with spelling suggestions and releasing the - right mouse button before the menu appears selecting an item with the - right mouse button has no effect. GTK does not produce an event for this. -- GTK 2: Cannot use the file selector. When using it many things become - slow. This is caused by some code in GTK that writes - ~/.recently-used.xbel every time an event is handled. It assumes the main - loop is never quit, which is a wrong assumption. Also, it overwrites the - file with different file permissions, which is a privacy issue. This - needs to be fixed in GTK. A solution in Vim would be really complicated. - (2008 Jul 31) This appears to be fixed in Vim 7.3. -- xterm title: The following scenario may occur (esp. when running the Vim - test script): Vim 1 sets the title to "file1", then restores the title to - "xterm" with an ESC sequence when exiting. Vim 2 obtains the old title - with an X library call, this may result in "file1", because the window - manager hasn't processed the "xterm" title yet. Can apparently only be - worked around with a delay. -- In a terminal with 'mouse' set such that the mouse is active when entering - a command line, after executing a shell command that scrolls up the - display and then pressing ":": Selecting text with the mouse works like - the display wasn't scrolled. Vim doesn't know how much the external - command scrolled up the display. Use Shift to select text. -- X windows: When $DISPLAY points to a X server where there is no access - permission, trying to connect to the X server causes an error message. - XtOpenDisplay() prints this directly, there is no way to avoid it. -- X windows: Setting 'guifontset' to an illegal value sometimes crashes Vim. - This is caused by a fault in a X library function, can't be solved in Vim. -- Win32 tcl: has("tcl") hangs when the tcl84.dll is from cygwin. -- Motif: When adding a menu item "Find this &Symbol", the "s" in "this" will - be underlined, instead of in "Symbol". Motif doesn't let us specify which - character gets the highlighting. -- Moving the cursor removes color in color-xterm. This is a color-xterm - problem! color-xterm ver. 6.1 beta 3 and later work properly. -- In zsh, "gvim&" changes the terminal settings. This is a zsh problem. - (Jennings) -- Problem with HPterm under X: old contents of window is lost (Cosentino). -- Amiga: When using quickfix with the Manx compiler we only get the first 25 - errors. How do we get the rest? -- Amiga: The ":cq" command does not always abort the Manx compiler. Why? -- Linux: A file with protection r--rw-rw- is seen readonly for others. The - access() function in GNU libc is probably wrong. -- MSDOS: When using smartdrive with write-back buffering, writing to a - readonly floppy will cause problems. How to test for a writable floppy - first? -- MSDOS: Both 16 and 32 bit versions: File name expansion doesn't work for - names that start with a dot. These used to be illegal file names. -- When doing a CTRL-Z and typing a command for the shell, while Vim is busy - (e.g. writing a file), the command for the shell is sometimes eaten by Vim, - because the terminal mode is changed from RAW to CBREAK. -- An old version of GNU tgoto can't handle the terminfo code for "AF". The - "%p1" is interpreted as "%p" and "1", causing color not to be working. - Fix: Change the "%p1" in the "AF" and "AB" terminfo entries to "%p". - (Benzinger). -- When running an external command from the GUI, typeahead is going to that - program, not to Vim. It looks like the shell eats the characters, Vim - can't get back what the external command didn't use. -- Win32 GUI: Error code from external command not returned in shell_error. - It appears that cmd.exe and command.com don't return an error code. -- Win32 GUI: The Toolbar is a bit too high when the flat style is being - used. We don't have control over the height of the Toolbar. -- Win32: All files created on the day of switching from winter to summer - time cause "changed since editing started" messages. It goes away when - the file is written again the next day, or the timezone is adjusted. - DJGPP version is OK. (Zaimi) Looks like a problem with the Win32 library. - Rebooting doesn't help. Time stamps look OK in directory. (Penn) - Is this on FAT (stores wall clock time) or NTFS (stores UTS)? -- Win32, MS-Windows XP: $HOME uses the wrong drive when the user profiles - are not on the boot disk. This is caused by a wrong value of $HOMEDRIVE. - This is a bug in XP, see MSKB article 818134. -- SunOS 5.5.1 with Motif: The file open dialog does not have a horizontal - scroll bar for the "files" selection. This is a problem in the Motif - libraries, get a patch from Sun. -- Solaris 2.6 with GTK and Perl: gvim crashes when started. Problem with X - input method called from GDK code. Without Perl it doesn't crash. -- VMS: Vimdiff doesn't work with the VMS diff, because the output looks - different. This makes test 47 fail. Install a Unix-compatible diff. -- VMS v7.1 and older: Tests 21 and 32 fail. From VMS v7.1-2 and newer Vim - does not have this behavior. (Zoltan Arpadffy) -- Win32 GUI: mouse wheel always scrolls rightmost window. The events arrive - in Vim as if the rightmost scrollbar was used. -- GTK with Gnome: Produces an error message when starting up: - Gdk-WARNING **: locale not supported by C library - This is caused by the gnome library gnome_init() setting $LC_CTYPE to - "en_US". Not all systems support this locale name, thus causing the - error. Hopefully a newer version of GTK/Gnome fixes this problem. -- GTK 2: With this mapping the hit-enter prompt is _sometimes_ below the - screen, at other times there is a grey area below the command line: - :nmap <F11> :if &guioptions=~'m' \| set guioptions-=m \| else \| set guioptions+=m \| endif<cr> -- GTK: When pasting a selection from Vim to xclipboard gvim crashes with a - ABRT signal. Probably an error in the file gdkselection.c, the assert - always fails when XmbTextListToTextProperty() fails. (Tom Allard) -- GTK 2: gives an assertion error for every non-builtin icon in the toolbar. - This is a GTK 2.4.x bug, fixed in GTK 2.4.2. (Thomas de Grenier de Latour) -- When using an xterm that supports the termresponse feature, and the 't_Co' - termcap option was wrong when Vim started, it will be corrected when the - termresponse is received. Since the number of colors changes, the - highlighting needs to be initialized again. This may cause colors defined - in the vimrc file to be lost. -- On Windows NT 4.0 the number of files passed to Vim with drag&drop and - "Edit with Vim" is limited. The maximum command line length is 255 chars. - ---------------------- extensions and improvements ---------------------- - *extensions-improvements* - -Most interesting new features to be added when all bugs have been fixed: -- Using ":exe edit fname" has escaping problems. Use ":edit ++(fname)". - Thus use "++=" to give arguments as expressions, comma separated as if - calling a function. - With options: ":edit ++(['!', '++enc=abc'], ['+/pat'], fname)". - Alternative: Make a function for Ex commands: cmd_edit(). -- Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd". Block - can be selected with CTRL-V. Allow '$' (end of line) for col2. -- Add DEBUGGER INTERFACE. Implementation for gdb by Xavier de Gaye. - Should work like an IDE. Try to keep it generic. Now found here: - http://clewn.sf.net. - And the idevim plugin/script. - To be able to start the debugger from inside Vim: For GUI run a program - with a netbeans connection; for console: start a program that splits the - terminal, runs the debugger in one window and reconnect Vim I/O to the - other window. - Wishes for NetBeans commands: - - make it possible to have 'defineAnnoType' also handle terminal colors. - - send 'balloonText' events for the cursor position (using CursorHold ?) - in terminal mode. -- ECLIPSE plugin. Problem is: the interface is very complicated. Need to - implement part in Java and then connect to Vim. Some hints from Alexandru - Roman, 2004 Dec 15. Should then also work with Oracle Jdeveloper, see JSR - 198 standard http://www.jcp.org/en/jsr/detail?id=198. - Eclim does it: http://eclim.sourceforge.net/ (Eric Van Dewoestine) - Plugin that uses a terminal emulator: http://vimplugin.sf.net - And another one: http://www.satokar.com/viplugin/index.php -- STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is. - Especially when using the scrollbar. Typing a cursor-movement command - scrolls back to where the cursor is. -- Scroll commands by screen line. g CTRL-E and g CTRL-Y ? Requires the - first line to be able to start halfway. -- Running a shell command from the GUI still has limitations. Look into how - the terminal emulator of the Vim shell project can help: - http://vimshell.wana.at -8 Add a command to jump to a certain kind of tag. Allow the user to specify - values for the optional fields. E.g., ":tag size type=m". - Also allow specifying the file and command, so that the result of - taglist() can be used. -- X11: Make it possible to run Vim inside a window of another program. - This can be done with XReparentWindow(). But how exactly? - - -Documentation: -8 List of Vim runtime directories. dotvim.txt from Charles Campbell, 2007 - Feb 20. -8 The GUI help should explain the Find and Find/Replace dialogs. Add a link - to it from ":promptrepl" and ":promptfind". -8 List of options should mention whether environment variables are expanded - or not. -8 Extend usr_27.txt a bit. (Adam Seyfarth) -7 Add a section on debugging scripts in the user manual. -9 Make the Reference Manual more precise. For each command mention: - - change to cursor position and curswant - - if it can be undone (u/CTRL-R) and redone (.) - - how it works for folded lines - - how it works with multi-byte characters -9 In change.txt, remark about Javadoc isn't right. Right alignment would - work too. -8 Spread the windows commands over the other files. For example, ":stag" - should be with ":tag". Cross-link with tags to avoid too much double - text. -8 Add tags for all features, e.g. "gui_running". -7 MS-Windows: When a wrong command is typed with an ALT key, give a hint to - look at the help for 'winaltkeys'. -7 Add a help.vim plugin that maps <Tab> to jump to the next tag in || and - <C-Tab> (and <S-Tab>) to the previous tag. - Patch by Balazs Kezes, 2007 Dec 30. Remark from A. Politz. -- Check text editor compendium for vi and Vim remarks. - - -Help: -- First try using the ":help" argument literally, before using it as a - pattern. And then match it as part of a tag. -- When a help item has multiple matches make it possible to use ":tn" to go - to the other matches. -- Support a way to view (and edit) .info files. -- Default mapping for help files: <Tab> to position cursor on next |:tag|. -- Implement a "sticky" help window, some help text lines that are always - displayed in a window with fixed height. (Guckes) Use "~/.vimhelp" file, - user can edit it to insert his favorite commands, new account can contain a - default contents. -- Make 'winminheight' a local option, so that the user can set a minimal - height for the help window (and other windows). -- ":help :s^I" should expand to ":help :substitute". -- Make the help key (<F1>) context sensitive? -- Learn mode: show short help while typing commands. - - -User Friendlier: -8 Windows install with NSIS: make it possible to do a silent install, see - http://nsis.sourceforge.net/Docs/Chapter4.html#4.12 -8 Windows install with install.exe: Use .exe instead of .bat files for - links, so that command line arguments are passed on unmodified? (Walter - Briscoe) -8 Windows install: Be able to associate Vim with a selection of file types? -8 Windows uninstall: Have uninstal.c delete the vimfiles directories that - dosinst.c creates. List the contents of the directory (recursively) if - the user asks for it. Requires an implementation of "rm -rf". -8 Remember the name of the vimrc file that was used (~/.vimrc, $VIM/_vimrc, - $HOME/_vimrc, etc.) and add "edit vimrc" to the File menu. -- Add a way to save local settings and mappings into a new plugin file. - ":mkplugin <file>"? -8 Add ":plugininstall" command. Can be used to install a plugin file that - includes documentation. Let the user select a directory from - 'runtimepath'. - " Vim plugin - <main plugin code> - " >>> plugin help start <<< - <plugin docs> -- Add mappings local to a window: ":map <window> ..."? -9 Add buffer-local menu. Should offer a choice between removing the menu or - disabling it. Be careful that tear-offs don't disappear (keep one empty - item?). - Alternative: use BufEnter and BufLeave autocommands. -8 make a vimtutor script for Amiga and other systems. -7 Add the arguments for configure to the ":version" output? -7 When Vim detects a file is being edited elsewhere and it's a gvim session - of the same user it should offer a "Raise" button, so that the other gvim - window can be displayed. (Eduard) -8 Support saving and restoring session for X windows? It should work to do - ":mksession" and use "-S fname" for the restart command. The - gui_x11_wm_protocol_handler() already takes care of the rest. - global_event_filter() for GTK. - - -Tab pages: -9 GUI implementation for the tab pages line for other systems. -7 GUI: Control over the appearance of the text in the labels (bold, color, - font, etc.) -8 Make GUI menu in tab pages line configurable. Like the popup menu. -8 balloons for the tab page labels that are shortened to show the full path. -8 :tabmove +N move tab page N pages forward -8 :tabmove -N move tab page N pages backward -7 :tabdup duplicate the tab with all its windows. -7 Option to put tab line at the left or right? Need an option to specify - its width. It's like a separate window with ":tabs" output. -7 Add local variables for each tab page? -8 Add local options for each tab page? E.g., 'diffopt' could differ between - tab pages. -7 Add local highlighting for each tab page? -7 Add local directory for tab pages? How would this interfere with - window-local directories? - - -Spell checking: -- have some way not to give spelling errors for a range of characters. - E.g. for Chinese and other languages with specific characters for which we - don't have a spell file. Useful when there is also text in other - languages in the file. -- Support more regions? Caolan McNamara argues it's needed for es_XX. - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=219777 -- Unicode defines another quote character: 0x2019. Use it as an equivalent - of a single quote, thus use it as a word character like a quote and match - with words, replacing the curly quote with a single quote. -- Could filter é things for HTML before doing spell checking. - Similarly for TeX. -- The Hungarian spell file uses four extra characters in the FOL/UPP/LOW - items than other spell files with the ISO-8859-2 encoding, that causes - problem when changing 'spelllang'. There is no obvious way to fix this. -- Considering Hunspell 1.1.4: - What does MAXNGRAMSUGS do? - Is COMPLEXPREFIXES necessary when we have flags for affixes? -- Support spelling words in CamelCase as if they were two separate words. - Requires some option to enable it. (Timothy Knox) -- There is no Finnish spell checking file. For openoffice Voikko is now - used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/ - (Teemu Likonen) -8 ":mkspell" still takes much too long in Hungarian dictionary from - hunspell. Only solution appears to be to postpone secondary suffixes. -8 Handle postponed prefix with COMPOUNDPERMITFLAG or COMPOUNDFORBIDFLAG. - WFP_COMPPERMIT and WFP_COMPFORBID -8 implement use of <compoptions> in .spl file: - implement CHECKCOMPOUNDREP: when a compound word seems to be OK apply REP - items and check if the result is a valid word. - implement CHECKCOMPOUNDDUP - implement CHECKCOMPOUNDTRIPLE - Add CHECKCOMPOUNDCASE: when compounding make leading capital lower case. - How is it supposed to work? -- Add a command the repeats ]s and z=, showing the misspelled word in its - context. Thus to spell-check a whole file. -- suggestion for "KG" to "kg" when it's keepcase. -- For flags on affixes: Use a "AFFCOMPSET" flag; means the compound flags of - the word are not used. -- Support breakpoint character ? 0xb7 and ignore it? Makes it possible to - use same wordlist for hyphenation. -- Compound word is accepted if nr of words is <= COMPOUNDWORDMAX OR nr of - syllables <= COMPOUNDSYLMAX. Specify using AND in the affix file? -- NEEDCOMPOUND also used for affix? Or is this called ONLYINCOMPOUND now? - Or is ONLYINCOMPOUND only for inside a compound, not at start or end? -- Do we need a flag for the rule that when compounding is done the following - word doesn't have a capital after a word character, even for Onecap words? -- New hunspell home page: http://hunspell.sourceforge.net/ - - Version 1.1.0 is out now, look into that. - - Lots of code depends on LANG, that isn't right. Enable each mechanism - in the affix file separately. - - Example with compounding dash is bad, gets in the way of setting - COMPOUNDMIN and COMPOUNDWORDMAX to a reasonable value. - - PSEUDOROOT == NEEDAFFIX - - COMPOUNDROOT -> COMPOUNDED? For a word that already is a compound word - Or use COMPOUNDED2, COMPOUNDED3, etc. -- CIRCUMFIX: when a word uses a prefix marked with the CIRCUMFIX flag, then - the word must also have a suffix marked with the CIRCUMFIX flag. It's a - bit primitive, since only one flag is used, which doesn't allow matching - specific prefixes with suffixes. - Alternative: - PSFX {flag} {pchop} {padd} {pcond} {schop} {sadd}[/flags] {scond} - We might not need this at all, you can use the NEEDAFFIX flag and the - affix which is required. -- When a suffix has more than one syllable, it may count as a word for - COMPOUNDWORDMAX. -- Add flags to count extra syllables in a word. SYLLABLEADD1 SYLLABLEADD2, - etc.? Or make it possible to specify the syllable count of a word - directly, e.g., after another slash: /abc/3 -- MORPHO item in affix file: ignore TAB and morphological field after - word/flags and affix. -- Implement multiple flags for compound words and CMP item? - Await comments from other spell checking authors. -- Also see tklspell: http://tkltrans.sourceforge.net/ -8 Charles Campbell asks for method to add "contained" groups to existing - syntax items (to add @Spell). - Add ":syntax contains {pattern} add=@Spell" command? A bit like ":syn - cluster" but change the contains list directly for matching syntax items. -- References: MySpell library (in OpenOffice.org). - http://spellchecker.mozdev.org/source.html - http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/ - author: Kevin Hendricks <kevin.hendricks@sympatico.ca> -8 It is currently not possible to mark "can not" as rare, because "can" and - "not" are good words. Find a way to let "rare" overrule "good"? -8 Make "en-rare" spell file? Ask Charles Campbell. -8 The English dictionaries for different regions are not consistent in their - use of words with a dash. -7 Insert mode completion mechanism that uses the spell word lists. -8 Add hl groups to 'spelllang'? - :set spelllang=en_us,en-rare/SpellRare,en-math/SpellMath - More complicated: Regions with different languages? E.g., comments - in English, strings in German (po file). - - -Diff mode: -9 Instead invoking an external diff program, use builtin code. One can be - found here: http://www.ioplex.com/~miallen/libmba/dl/src/diff.c - It's quite big and badly documented though. -8 Use diff mode to show the changes made in a buffer (compared to the file). - Use an unnamed buffer, like doing: - new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis - Also show difference with the file when editing started? Should show what - can be undone. (Tom Popovich) -7 Add cursor-binding: when moving the cursor in one diff'ed buffer, also - move it in other diff'ed buffers, so that CTRL-W commands go to the same - location. - - -Folding: - (commands still available: zI zJ zK zp zP zq zQ zV zy zY; - secondary: zB zS zT zZ, z=) -8 Vertical folds: looks like vertically split windows, but the cursor moves - through the vertical separator, separator moves when scrolling. -8 Add "z/" and "z?" for searching in not folded text only. -9 Add search pattern item to only match in closed or open fold and/or fold - with certain level. Allows doing ":g/pat/cmd" to work on closed folds. -7 Use "++--", "+++--" for different levels instead of "+---" "+----". -8 When a closed fold is displayed open because of 'foldminlines', the - behavior of commands is still like the fold is closed. How to make the - user aware of this? -8 Add an option 'foldskip' with values like 'foldopen' that specifies which - commands skip over a closed fold. -8 "H" and "L" count buffer lines instead of window lines. (Servatius Brandt) -8 Add a way to add fold-plugins. Johannes Zellner has one for VB. -7 When using manual folding, the undo command should also restore folds. -- Allow completely hiding a closed fold. E.g., by setting 'foldtext' to an - empty string. Require showing a character in 'foldcolumn' to avoid the - missing line goes unnoticed. - How to implement this? -- When pressing the down arrow of a scrollbar, a closed fold doesn't scroll - until after a long time. How to make scrolling with closed folds - smoother? -- When creating a session, also store folds for buffers in the buffer list, - using the wininfo in wi_folds. -- When currently editing the first file in the argument list the session - file can contain: - args version.c main.c - edit version.c - Can editing version.c twice be avoided? -- 'foldmethod' "textobject": fold on sections and paragraph text objects. -- "zuf": undo change in manual fold. "zUf" redo change in manual fold. How - to implement this? -- "zJ" command: add the line or fold below the fold in the fold under the - cursor. -- 'foldmethod' "syntax": "fold=3" argument: set fold level for a region or - match. -- Apply a new foldlevel to a range of lines. (Steve Litt) -8 Have some way to restrict commands to not folded text. Also commands like - searches. - - -Multi-byte characters: -- When editing a file with both utf-8 and latin1 text Vim always falls back - to latin1. Add a command to convert the latin1 characters to utf-8? - :unmix utf-8,latin1 filename - Would only work when 'encoding' is utf-8. -9 When the tail byte of a double-byte character is illegal (e.g., a CR), the - display is messed up (Yasuhiro Matsumoto). Should check for illegal - double-byte characters and display them differently (display each single - byte). -9 'fenc' in modeline problem: add option to reload the file when 'fenc' is - set to a different value in a modeline? Option can be default on. Could - it be done with an autocommand? -8 Add an item in 'fileencodings' to check the first lines of a file for - the encoding. See Python PEP: http://www.python.org/peps/pep-0263.html. - To avoid getting a wrong encoding only accept something Emacs-like: - "-*- coding: enc-na_me.foo -*-" and "-*- coding= enc-na_me.foo -*-" - Match with "-\*-\s*coding[:=]\s*\([::word::-_.]\+\)\s*-\*-" and use first - item. -8 Add an item in 'fileencodings' to check the first line of an XML file for - the encoding. <?xml version="1.0" encoding="UTF-8"?> Or "charset=UTF-8"? - For HTML look for "charset=utf-8". -8 The quickfix file is read without conversion, thus in 'encoding'. Add an - option to specify the encoding of the errorfile and convert it. Also for - ":grep" and ":helpgrep". - More generic solution: support a filter (e.g., by calling a function). -8 When a file was converted from 'fileencoding' to 'encoding', a tag search - should also do this on the search pattern. (Andrzej M. Ostruszka) -8 When filtering changes the encoding 'fileencoding' may not work. E.g., - when using xxd and 'fileencoding' is "utf-16". Add an option to set a - different fileencoding for filter output? -7 When converting a file fails, mention which byte could not be converted, - so that the user can fix the problem. -8 Add configure option to be able to disable using the iconv library. (Udo - Schweigert) -9 'aleph' should be set to 1488 for Unicode. (Zvi Har'El) -8 Should add test for using various commands with multi-byte characters. -8 'infercase' doesn't work with multi-byte characters. -8 toupper() function doesn't handle byte count changes. -7 Searching and composing characters: - When searching, should order of composing characters be ignored? - Add special item to match with a composing character, zero-width, so that - one can replace a base character and keep the composing characters. - Add a special item to match with a composing character, so that composing - characters can be manipulated. - Add a modifier to ignore composing characters, only compare base - characters. Useful for Hebrew (Ron Aaron) -8 Should implement 'delcombine' for command line editing. -8 Detect overlong UTF-8 sequences and handle them like illegal bytes. -8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte - characters. -8 UTF-8: "r" in Visual mode doesn't take composing characters. -8 UTF-8: When there is a precomposed character in the font, use it instead - of a character and a composing character. See xterm for an example. -7 When a character can't be displayed, display its digraph instead. - 'display' option to specify this. -7 Use ideas for nl_langinfo() from Markus Kuhn in enc_default(): - (www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c) -- GTK and Win32: Allow selecting fonts for 'guifontset' with the - fontselector somehow. -- GTK and Win32: make it possible to set the font for the menu to make it - possible to have 'encoding' different from the current locale. -- dbcs_class() only works for Japanese and Korean. Implement this for - other encodings. The "euc-jp" and "euc-kr" choices might be wrong. -- Find some way to automatically select the right GUI font or fontset, - depending on the default value of 'encoding'. - Irrelevant in the GTK+ 2 GUI so long as UTF-8 is used. - For Windows, the charset_pairs[] table could be used. But how do we know - if a font exists? -- Do keyboard conversion from 'termencoding' to 'encoding' with - convert_input() for Mac GUI and RiscOS GUI. -- Add mnemonics from RFC1345 longer than two characters. - Support CTRL-K _{mnemonic}_ -7 In "-- INSERT (lang) --" show the name of the keymap used instead of - "lang". (Ilya Dogolazky) -- Make 'breakat' accept multi-byte characters. Problem: can't use a lookup - table anymore (breakat_flags[]). - Simplistic solution: when 'formatoptions' contains "m" also break a line - at a multi-byte character >= 0x100. -- Add the possibility to enter mappings which are used whenever normal text - could be entered. E.g., for "f" command. But not in Normal mode. Sort - of opposite of 'langmap'. Use ":tmap" command? -- When breaking a line, take properties of multi-byte characters into - account. The "linebreak" program from Bruno Haible can do it: - ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz - But it's very complicated... - - -Printing: -7 Implement "undercurl" for printing. -- Add "page width" to wrap long lines. -- Win32: use a font dialog for setting 'printfont'. Can reuse the code for - the 'guifont' dialog, put the common code in a separate function. -- Add the file timestamp to the page header (with an option). (George - Reilly) -- Win32: when 'printfont' is empty use 'guifont'. -- Unix: Use some dialog box to do the obvious settings (paper size, printer - name, portrait/landscape, etc). -- PostScript: Only works for text that can be converted to an 8-bit - character set. How to support Unicode fully? -- Allow specifying the paper size, instead of using a standard size. Same - units as for the margins. -- Support right-to-left text? -8 Make the foreground color darkening function preserve the hue of the - color. - - -Syntax highlighting: -8 Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson) - Should do the same for ":syn on" and ":syn manual". -8 Support "containedin" argument for ":syn include", so that the defined - cluster can be added to existing syntax items. -8 C syntax: Don't highlight {} as errors inside () when used like this: - "({ something })", often used in GCC code. -7 Add a "startgroup" to a region. Used like "nextgroup" inside the region, - preferred item at the start of the region. (Charles Campbell) -8 When editing a new file without a name and giving it a name (by writing - it) and 'filetype' is not set, detect the filetype. Avoid doing it for - ":wq file". -7 For "nextgroup" we have skipwhite, skipnl and skipempty. It would be - really nice to be able to skip with a pattern. Or skip with a syntax - group. (Nikolai Weibull, 2007 Feb 27) -8 Make conversion to HTML faster (Write it in C or pre-compile the script). -9 There is still a redraw bug somewhere. Probably because a cached state is - used in a wrong way. I can't reproduce it... -7 Be able to change only the background highlighting. Useful for Diff* and - Search highlighting. -7 When 'number' is set highlight the number of the current line. - Must be enabled with an option, because it slows down display updating. -8 Allow the user to add items to the Syntax menu sorted, without having to - change this for each release. -8 Add a "matchcontains" for regions: items contained in the start or end - pattern, but not in the body. -8 Add a "keepend-contained" argument: Don't change the end of an item this - one is contained in. Like "keepend" but specified on the contained item, - instead of the containing item. -8 cpp.vim: In C++ it's allowed to use {} inside (). -8 Some syntax files set 'iskeyword'. When switching to another filetype - this isn't reset. Add a special keyword definition for the syntax rules? - When this is done, use vim.vim syntax highlighting for help file examples, - but without ":" in 'iskeyword' for syntax. -8 Add specific syntax item to match with parens/braces that don't have a - "%" match. :syntax nomatch cMatchError (,{,[,),},] [contained] -8 Highlight the text between two matching parens (e.g., with a grey - background) when on one of the parens or in between them. - Option for the matchparen plugin? -8 Add a command to jump to the next character highlighted with "Error". -8 When using a cterm, and no ctermfg or ctermbg are defined, use start/stop - sequences. Add remark in docs that :if 'term' == "term-name" should be - used. -8 Add @spell cluster to String and Comment groups for many languages. Will - allow spell checking. (Fleiner) -8 When listing syntax items, try to sort the keywords alphabetically. And - re-insert the [] if possible. -8 Make it possible to use color of text for Visual highlight group (like for - the Cursor). -8 It would be useful to make the highlight group name an expression. Then - when there is a match, the expression would be evaluated to find out what - highlight group to use. Could be used to check if the shell used in a - password file appears in /etc/shells. (Nikolai Weibull) - syn match =s:checkShell(v:match) contained 'pattern' -8 Make it possible to only highlight a sub-expression of a match. Like - using "\1" in a ":s" command. -8 Support for deleting syntax items: - :syn keyword cTodo remove this - :syn match cTodo remove "pattern" - :syn region cString remove start="this" end="that" -8 Add possibility to sync on something else, when the syncing in one way - doesn't find match. For HTML: When no {script} is found, try looking for - a '<'. (Fleiner) -7 Replace the synchronizing method with a state machine specification? - Should be able to start at any line in the file, search forwards or - backwards, and use the result of matching a pattern. -7 Use parsing like awk, so that e.g., a ( without a matching ) can be - detected. -8 Make it possible to use "inverted" highlighting, invert the original - character. For Visual mode. (xterm-selection already does this). -8 Highlight non-printable characters with "SpecialChar", linked to - "Special". Display them with the digraph characters, if possible. -8 Highlight the clipboard-selection with a highlight group. -8 Be able to reset highlighting to its original (default) values. -7 Be able to write current highlighting to a file as commands, similar to - ":mkvimrc". -8 Improve c.vim: - - Add check for unterminated strings, with a variable to switch it on: - "c_strict_ansi". - - Detect unbalanced "#endif". Requires looking back a long way... -8 Add an option to restrict the updating of syntax highlighting to the - current line while in Insert mode. -8 When guessing value of 'background', the syntax file has already been - loaded (from the .gvimrc). After changing 'background', load it again? -8 Add ":syn resync" command, to re-parse the whole file until the current - display position. -8 Should support "me" offset for a region start pattern. To be used to - allow searching for the end pattern inside the match of the end pattern. - Example: syn region pikeXX start="([^{]" end=")" should work on "()". -8 When using a regexp for "contains=", should delay matching with it until - redrawing happens. Set a flag when a group is added, check this flag when - highlighting starts. -8 Some terminals can display colors like the GUI. Add some setting to use - GUI colors for the terminal? With something to define the escape - sequence. -7 It's possible for an item to be transparent, so that the colors of an item - lower on the stack is used. Also do this with highlighting, so that the - user can set transparent highlighting? E.g. a number in a C comment would - get the color of a comment, a number in an assignment Normal. (Nikolai - Weibull) -7 Add "semitrans": Add highlighting. E.g., make the text bold, but keep the - colors. And add colors, so that Green+Red becomes Yellow. - E.g. for this html: - <B> bold text <I> italic+bold text </B> italic text </I> -7 Wild idea: Not only set highlighting, but also change what is displayed - (e.g., remove characters, so that "<B>bold</B>" can be shown as "bold"): - :syn region boldstuff start="<B>" display="" end="</B>" display="" -7 CTRL-] checks the highlight group for finding out what the tag is. -7 Add an explanation how a list of words can be used to highlight misspelled - words. -8 Add more command line completion for :syntax. -8 Add more command line completion for :highlight. -7 Should find a better way to parse the :syntax and :highlight commands. - Use tables or lists that can be shared by parsing for execution and - completion? -8 Add ColorSchemePost autocommand event, so that scripts can set up their - highlighting. (Salman Halim) -7 Add a few sets of colors (e.g. Borland Turbo C one). With a menu to - select one of the sets. -8 Add offsets to sub-matches: "\(a*\) *"he=e1-1 - 'e' is end of match 'e1' is end of sub-match 1, 's2' is start of submatch - 2, etc. -8 In Insert mode, when there are typeahead characters, postpone the - highlighting (for "." command). -8 Syncing on comments isn't 100% correct when / / lines mix with / * and * /. - For example: What about a line that starts with / / and contains * /? -8 Ignore / * and * / inside strings, when syncing. -7 Build a few more syntax files from the file "/usr/share/misc/vgrindefs": - ISP, LDL, Icon, ratfor. And check "nedit/source/highlight.c". -6 Add possibility to have background color continue until the right edge of - the window. Useful for comment blocks and function headings. (Rogall) -- Make it possible to add "contains" items for all items in a group. Useful - when extending an already existing syntax file. -- Add line-continuation pattern for non-syncing items too? -- Add possibility to highlight the whole line, including the right margin - (for comment blocks). -- Add 'hlmatch' option: List of flags: - 'c': highlight match for character under the cursor. - 'b': highlight the previous (, and its match. - 'a': highlight all text from the previous ( until its match. - Also for {}, <>, etc.? - 'e': highlight all braces without a match (slow?) - OR: add an argument "cursor" to the syntax command, which means that the - region/match/keyword is only highlighted when the cursor is on it. - (Campbell) - Or do it like Elvis: define text objects and how to highlight them around - the cursor. (Iain Truskett) -7 Make it possible to use all words in the tags files as Keyword. - Can also be done with a script (but it's slow). -7 Make it possible to call a ":" command when a match is found. Should - allow for adding keywords from the text (e.g. variables that are set). - And allows for sections with different highlighting. -7 Add highlight group for commandline: "Commandline". Make sure it - highlights the command line while typing a command, and any output from - messages. And external commands? -8 Make a version that works like less, but with highlighting: read stdin for - text, exit at end of file, don't allow editing, etc. moreim? lessim? -7 SpecialKey highlighting overrules syntax highlighting. Can't give an - unprintable char another color. Would be useful for ^M at end of line. - - -Built-in script language: -8 Make the filename and line number available to script functions, so that - they can give useful debugging info. The whole call stack would be ideal. -7 Execute a function with standard option values. No need to save and - restore option values. Especially useful for new options. Problem: how - to avoid a performance penalty (esp. for string options)? -8 Add referring to key options with "&t_xx". Both for "echo &t_xx" and - ":let &t_xx =". Useful for making portable mappings. -- Add ":let var ?= value", conditional assignment. Patch by Dave Eggum, - 2006 Dec 11. -- range for ":exec", pass it on to the executed command. (Webb) -8 ":{range}source": source the lines from the current file. - You can already yank lines and use :@" to execute them. - Most of do_source() would not be used, need a new function. - It's easy when not doing breakpoints or profiling. - Requires copying the lines into a list and then creating a function to - execute lines from the list. Similar to getnextac(). -7 ":include" command: just like ":source" but doesn't start a new scriptID? - Will be tricky for the list of script names. -8 Have a look at VSEL. Would it be useful to include? (Bigham) -8 Add ":fungroup" command, to group function definitions together. When - encountered, all functions in the group are removed. Suggest using an - obscure name to avoid name clashes. Require a ":fungroup END" in the same - sourced file? Assume the group ends at the end of the file. Handle - nested packages? - Alternative: Support packages. {package-name}:{function-name}(). - Packages are loaded automatically when first used, from - $VIMRUNTIME/packages (or use a search path). -7 Pre-parse or compile Vim scripts into a bytecode. - 1. Put the bytecode with the original script, with an ":if - has('bytecode')" around it, so that it's only used with a Vim that - supports it. Update the code with a command, can be used in an - autocommand. - 2. Use a ".vic" file (like Python use .pyc). Create it when writing a - .vim file. Problem: distribution. - 3. Use a cache directory for each user. How to recognize which cached - file belongs to a sourced script? -7 Add argument to winwidth() to subtract the space taken by 'foldcolumn', - signs and/or 'number'. -6 Add ++ and -- operators? They only work on variables (lvals), how to - implement this? -8 Add functions: - has(":command") Check if ":command" works. compare function - with "ex_ni". E.g. for ":simalt". - system() With a List argument. Bypasses the shell, use - exec() directly. (Bob Hiestand) - escape() Add argument to specify what to escape with. - modestack() Instead of just the current mode return the - stack of Insert / CTRL-O / :normal things. - realname() Get user name (first, last, full) - user_fullname() patch by Nikolai Weibull, Nov - 3 2002 - Only add this when also implemented for - non-Unix systems, otherwise a shell cmd could - be used. - get_user_name() gets login name. - menuprop({name}, {idx}, {what}) - Get menu property of menu {name} item {idx}. - menuprop("", 1, "name") returns "File". - menuprop("File", 1, "n") returns "nmenu - File.Open..." argument. - Patch by Ilya Sher, 2004 Apr 22 - Return a list of menus and/or a dictionary - with properties instead. - mapname({idx}, mode) return the name of the idx'th mapping. - Patch by Ilya Sher, 2004 Mar 4. - Return a list instead. - char2hex() convert char string to hex string. - attributes() return file protection flags "drwxrwxrwx" - filecopy(from, to) Copy a file - shorten(fname) shorten a file name, like home_replace() - perl(cmd) call Perl and return string - inputrl() like input() but right-to-left - typed() return the characters typed and consumed (to - find out what happened) - virtualmode() add argument to obtain whether "$" was used in - Visual block mode. - getacp() Win32: get codepage (Glenn Maynard) - deletebufline() delete line in any buffer - appendbufline() append line in any buffer - libcall() Allow more than one argument. - libcallext() Like libcall(), but using a callback function - to allow the library to execute a command or - evaluate an expression. -7 Make bufname("'0") return the buffer name from mark '0. How to get the - column and line number? col("'0") currently returns zero. -8 argc() returns 0 when using "vim -t tag". How to detect that no file was - specified in any way? To be able to jump to the last edited file. -8 Pass the command line arguments to Vim scripts in some way. As v:args - List? Or extra parameter to argv()? -8 Add command arguments with three dashes, passed on to Vim scripts. -7 Add optional arguments to user functions: - :func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17) -6 User functions: Functions local to buffer "b:func()"? -8 For Strings add ":let var[{expr}] = {expr}". When past the end of "var" - just ignore. -8 The "= register should be writable, if followed by the name of a variable, - option or environment variable. -8 ":let &option" should list the value of the option. -8 ":let Func().foo = value" should work, also when "foo" doesn't exist. - Also: ":let Func()[foo] = value" should work. Same for a List. -7 Add synIDlist(), making the whole list of syntax items on the syntax stack - available as a List. -8 Add autocommand-event for when a variable is changed: - :au VarChanged {varname} {commands} -8 Add "has("gui_capable")", to check if the GUI can be started. -8 Add possibility to use variables like registers: characterwise (default), - linewise (when ending in '\n'), blockwise (when ending in '\001'). reg0, - rega, reg%, etc. Add functions linewise({expr}), blockwise({expr}) and - charwise({expr}). -7 Make it possible to do any command on a string variable (make a buffer - with one line, containing the string). Maybe add an (invisible) scratch - buffer for this? - result = scratch(string, command) - result = apply(string, command) - result = execute(string, command) - "command" would use <> notation. - Does scratch buffer have a number? Or re-use same number? -7 Add function to generate unique number (date in milliseconds). -7 Automatically load a function from a file when it is called. Need an - option for the search path. (Sekera) - - -Robustness: -6 Add file locking. Lock a file when starting to edit it with flock() or - fcntl(). This patch has advisory file locking while reading/writing - the file for Vim 5.4: ~/vim/patches/kahn_file_locking . - The patch is incomplete (needs support for more systems, autoconf). - Andy doesn't have time to work on it. - Disadvantage: Need to find ways to gracefully handle failure to obtain a - lock. When to release a lock: When buffer is unloaded? - - -Performance: -7 For string variables up to 3 bytes don't allocate memory, use v_list - itself as a character array. Use VAR_SSTRING (short string). -7 Add 'lazysize' option: Above this size Vim doesn't load everything before - starting to edit a file. Things like 'fileencodings' only work up to this - size, modelines only work at the top. Useful for large log files where - you only want to look at the first few pages. Use zero to disable it. -8 move_lines() copies every line into allocated memory, making reloading a - buffer a lot slower than re-editing the file. Can the memline be locked - so that we don't need to make a copy? Or avoid invoking ml_updatechunk(), - that is taking a lot of time. (Ralf Wildenhues, 2008 Jul 7) - With a patch, but does it work? -8 Instead of loading rgb.txt every time a color wasn't recognized load it - once and keep it in memory. Move the code to a common place to avoid - repeating it in various system files. -8 Turn b_syn_ic and b_syn_containedin into b_syn_flags. -9 Loading menu.vim still takes quite a bit of time. How to make it faster? -8 in_id_list() takes much time for syntax highlighting. Cache the result? -7 setpcmark() shifts the jumplist, this takes quite a bit of time when - jumping around. Instead use an index for the start? -8 When displaying a space with only foreground highlighting, it's the same - as a space without attributes. Avoid displaying spaces for the "~" lines - when starting up in a color terminal. -8 Avoid alloc() for scratch buffer use, esp. in syntax.c. It's very slow on - Win16. -8 Profiling shows that in_id_list() is used very often for C code. Can this - function be improved? -8 For an existing file, the page size of the swap file is always the - default, instead of using the block size of the device, because the swap - file is created only after setting the block size in mf_open(). How can - this be improved? -8 Set default for 'ttyscroll' to half a screen height? Should speed up - MS-DOS version. (Negri) -7 C syntax highlighting gets a lot slower after ":set foldmethod=syntax". - (Charles Campbell) Inserting a "{" is very slow. (dman) -7 HTML syntax highlighting is slow for long lines. Try displaying - http://www.theregister.co.uk/content/4/22908.html. (Andre Pang) -7 Check how performance of loading the wordlist can be improved (adding a - lot of abbreviations). -7 DOS console: Add t_DL support, to make scrolling faster. -7 Compile Ex commands to byte codes. Store byte codes in a vim script file - at the end, after "compiled:. Make it look like a single comment line - for old Vim versions. Insert first line "Vim script compiled <timestamp>. - Only used compiled code when timestamp matches the file stat. - Add command to compile a vim script and add it to the file in-place. - Split Ex command executing into a parsing and executing phase. - Use compiled code for functions, while loops, etc. -8 When editing a file with extremely long lines (e.g., an executable), the - "linerest" in readfile() is allocated twice to be able to copy what was - read so far. Use realloc() instead? Or split the line when allocating - memory fails and "linerest" is big (> 100000)? -8 When defining autocommands (e.g., from $VIMRUNTIME/filetype.vim), need to - compare each pattern with all existing patterns. Use a hash code to avoid - using strcmp() too often? -7 Include turbo_loader patches, speeding up reading a file? - Speed up reading a file by reading it into a fixed-size buffer, creating - the list of indexes in another buffer, and then copying the result into a - memfile block with two copies. Then read the next block into another - fixed-size buffer, create the second list of indexes and copy text from - the two blocks to the memfile block. -7 do_cmdline(): Avoid that the command line is copied to allocated memory - and freed again later all the time. For while loops, and for when called - with an argument that can be messed with. - Generic solution: Make a struct that contains a pointer and a flag that - indicates if the pointer should be freed when replaced. -7 Check that the file size is not more than "sizeof(long)". -- Further improve finding mappings in maphash[] in vgetorpeek() -8 Syntax highlighting is slow when deleting lines. Try in - $VIMRUNTIME/filetype.vim. -- "out of memory" after deleting (1,$d) and changing (:%s/^/> /) a lot of - lines (27000) a few times. Memory fragmentation? -- Have a look at how pdksh does memory allocation (alloc.c). (Dalecki) -- Do profiling on: - - :g/pat/normal cmd - - 1000ii<Esc> - - deleting 10Mbyte worth of lines (netscape binary) - - "[i" and "[d" (Yegappan Lakshmanan) - - ":g/^/m0" on a 450Kbyte file. And the "u". - - highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and - "~/vim/test/lockup.pl". - - loading a syntax file to highlight all words not from a dictionary. - - editing a Vim script with syntax highlighting on (loading vim.vim). -7 Screen updating can be further improved by only redrawing lines that were - changed (and lines after them, when syntax highlighting was used, and it - changed). - - On each change, remember start and end of the change. - - When inserting/deleting lines, remember begin, end, and line count. -- Use macros/duarte/capicua for profiling. Nvi 1.71 is the fastest! -- When using a file with one long line (1Mbyte), then do "$hhhh", is still - very slow. Avoid calling getvcol() for each "h"? -- Executing a register, e.g. "10000@@" is slow, because ins_typebuf has to - move the previous commands forward each time. Pass count from - normal_cmd() down to do_execreg(). -- Repeating insert "1000i-<Esc>" displays --INSERT-- all the time, because of - the <Esc> at the end. Make this work faster (disable redrawing). -- Avoid calls to plines() for cursor line, use w_cline_height. -- After ":set nowrap" remove superfluous redraw with wrong hor. offset if - cursor is right of the screen. -8 Make CTRL-C on Unix generate a signal, avoid using select() to check for a - CTRL-C (it's slow). - - -Code size: -8 GUI: When NO_CONSOLE is defined, more code can be excluded. -- Put getline() and cookie in a struct, so only one argument has to be - passed to do_cmdline() and other functions. -8 Make a GUI-only version for Unix? -8 In buf_write _() isn't needed when setting errmsg, do it once when using - it. -7 When compiling with a GUI-only version, the code for cterm colors can be - left out. -8 When compiled with a GUI-only version, the termcap entries for terminals - can be removed. -8 Can the check for libelf in configure.in be removed? - - -Messages: -8 When using ":q" in a changed file, the error says to "add !". Add the - command so that beginners understand it: "use :q!". -8 For 'verbose' level 12 prints commands from source'ed files. How to skip - lines that aren't executed? Perhaps move the echoing to do_cmdline()? -8 Use 'report' for ":bdel"? (Krishna) To avoid these messages when using a - script. -- Delete message after new command has been entered and have waited for key. - Perhaps after ten seconds? -- Make message history available in "msg" variables: msg1, msg2, .. msg9. -8 When reading from stdin allow suppressing the "reading from stdin" - message. -9 Check handling of overwriting of messages and delays: - Very wrong: errors while redrawing cause endless loop. - When switching to another file and screen scrolls because of the long - message and return must be typed, don't scroll the screen back before - redrawing. -8 When address range is wrong you only get "Invalid range". Be a bit more - specific: Negative, beyond last line, reverse range? Include the text. -8 Make it possible to ignore errors for a moment ('errorignore'?). Another - option to switch off giving error messages ('errorquiet'?). Also an option - not to give any messages ('quiet')? Or ":quiet on", ":quiet off". - Careful: For a severe error (out of memory), and when the user starts - typing, error messages must be switched back on. - Also a flag to ignore error messages for shell commands (for mappings). -- Option to set time for emsg() sleep. Interrupt sleep when key is typed? - Sleep before second message? -8 In Ex silent mode or when reading commands from a file, what exactly is - not printed and what is? Check ":print", ":set all", ":args", ":vers", - etc. At least there should be no prompt. (Smulders) And don't clear the - screen when reading commands from stdin. (Kendall) - --> Make a difference between informative messages, prompts, etc. and - error messages, printing text, etc. -8 Window should be redrawn when resizing at the hit-enter prompt. - Also at the ":tselect" prompt. Find a generic solution for redrawing when - a prompt is present (with a callback function?). - - -Screen updating: -7 Add a string to the 'display' option to make CTRL-E and CTRL-Y scroll one - screen line, also if this means the first line doesn't start with the - first character (like what happens with a single line that doesn't fit). -- screen_line(): - - insert/delete character stuff. - - improve delete rest of line (spaces at end of line). -- When moving or resizing window, try to avoid a complete redraw (esp. when - dragging the status line with the mouse). -- When 'lazyredraw' set, don't echo :ex commands? Need a flag to redraw when - waiting for a character. -8 Add a ":refresh [winnr]" command, to force updating a window. Useful from - an event handler where ":normal" can't be used. Also useful when - 'lazyredraw' is set in a mapping. -7 Make 'list' and 'linebreak' work together. - - -Scrolling: -8 Add "zm" command: scroll horizontally to put the cursor in the middle. -6 Add option to set the overlap for CTRL-F and CTRL-B. (Garhi) -- extend 'scrollbind' option: 'scrollopt' words "search", "relative", etc.. - Also 'e'xecute some commands (search, vertical movements) in all bound - windows. -7 Add 'scrollbind' feature to make the offset of one window with the next - one equal to the window height. When editing one file in both windows it - looks like each window displays a page of the buffer. -- Allow scrolling by dragging with the mouse (grab a character and move it - up/down). Like the "hand" in Acrobat reader. Use Alt-LeftMouse for this? - (Goldfarb) -- Add command to execute some commands (search, vertical movements) in all - bound windows. -- Add 'search' option to 'scrollopt' to allow 'scrollbind' windows to - be bound by regexp searches -- Add "z>" and "z<": scroll sideways one screenful. (Campbell) -- Add option to set the number of lines when not to scroll, instead of the - fixed number used now (for terminals that scroll slow with a large number - of lines but not with a single line). - - -Autoconf: -8 Should use acconfig.h to define prototypes that are used by autoheader. -8 Some compilers don't give an error for "-OPT:Olimit" but a warning. (Webb) - Add a check for the warning, so that "Olimit" can be added automatically? -- Autoconf: Use @datadir@ for the system independent files. Make sure the - system dependent and system independent files are separated. (Leitner). -- Add autoconf check for waitpid()/wait4(). -- Remove fcntl() from autoconf, all systems have it? -- Set default for 'dictionary', add search for dictionary to autoconf. - - -Perl interface: -8 Rename typemap file to something else? -7 Make buffers accessed as Perl arrays. (Clark) -7 Make it possible to compile with non-ANSI C? -6 Tcl/Tk has the "load" command: load a shared library (.so or .dll). - - -Shared libraries: -6 Add support for loading shared libraries, and calling functions in it. - :libload internal-name libname - :libunload internal-name - :liblist - :libcall internal-name function(arg1, arg2, ...) - :libcall function(arg1, arg2, ...) - libcall() can have only one integer or String argument at the moment. -6 Have a look on how Perl handles loading dynamic libraries. - - -Tags: -9 With ":set tags=./tags,../tags" and a tag appears in both tags files it is - added twice. Requires figuring out the actual file name for each found - match. Remove tag_fname from the match and combine it with the fname in - the match (without expanding or other things that take time). When - 'tagrelative' is off tag_fname isn't needed at all. -8 For 'tags' wildcard in the file name is not supported, only in the path. - This is due to it using |file-searching|. Suboptimal solution would be to - make the filename or the whole option use |wildcards| globing, better - would be to merge the 2 kinds of globing. originally (Erik Falor, 2008 - April 18), updated (Ian Kelling, 2008 July 4) -8 Use a mechanism similar to omni completion to figure out the kind of tab - for CTRL-] and jump to the appropriate matching tag (if there are - several). - Alternative: be able to define a function that takes the tag name and uses - taglist() to find the right location. With indication of using CTRL-] so - that the context can be taken into account. (Robert Webb) -7 Can CTRL-] (jump to tag) include a following "." and "->" to restrict the - number of possible matches? Check tags file for an item that has members. - (Flemming Madsen) -8 Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis. -8 When output of ":tselect" is long, getting the more-prompt, should be able - to type the tag number directly. -7 Add the possibility to use the "-t {tag}" argument multiple times. Open a - window for each tag. -7 Make output of ":tselect" a bit nicer. Use highlighting? -7 Highlight the "tag 1 of >2" message. New highlight group, or same as "hit - bottom" search message. -7 When using ":tag" at the top of the tag stack, should add another entry, - so CTRL-T can bring you back to where you are now AND to where you were - before the previous ":tag" command. (Webb) -- When doing "[^I" or "[^D" add position to tag stack. -- Add command to put current position to tag stack: ":tpush". -- Add functions to save and restore the tag stack? Or a command to switch - to another tag stack? So that you can do something else and come back to - what you were working on. -7 When using CTRL-] on someClass::someMethod, separate class from method and - use ":ta class:someClass someMethod". - Include C++ tags changes (Bertin). Change "class::func" tag into "func" - with "class=class"? Docs in oldmail/bertin/in.xxx. -7 Add ":tagargs", to set values for fields: - :tagargs class:someclass file:version.c - :tagargs clear - These are then the default values (changes the order of priority in tag - matching). -7 Support for "gtags" and "global"? With ":rtag" command? - There is an example for how to do this in Nvi. - Or do it like Elvis: 'tagprg' and 'tagprgonce' options. (Yamaguchi) - The Elvis method is far more flexible, do it that way. -7 Support "col:99" extra field, to position the cursor in that column. With - a flag in 'cpoptions' to switch it off again. -7 Better support for jumping to where a function or variable is used. Use - the id-utils, with a connection to "gid" (Emacs can do it too). Add - ":idselect", which uses an "ID" database (made by "mkid") like "tselect". - - -Win32 GUI: -8 Make debug mode work while starting up (vim -D). Open console window for - the message and input? -7 The Python interface only works with one version of Python, selected at - compile time. Can this be made to work with version 2.1 and 2.2 - dynamically? -7 GvimExt: when there are several existing Vims, move the list to a submenu. - (Mike McCollister) -8 When using "Edit with Vim" for one file it changes directory, when several - files are selected and using "Edit with single Vim" the directory isn't - changed. At least change directory when the path is the same for all - files. Perhaps just use the path of the first file or use the longest - common part of the path. -8 Add font argument to set the lfCharSet. (Bobcik) -8 Somehow automatically detect the system language and set $LANG, so that - gettext and menus work. -8 Could keep console open to run multiple commands, to avoid the need to hit - return in every console. - Also: Look at how Emacs does run external commands: - http://www.cs.washington.edu/homes/voelker/ntemacs.html. -8 Need a separate PopUp menu for modeless selection. Need two new commands: - Copy selection to clipboard, Paste selection (as typed text). -8 Support copy/paste for other file formats. At least HTML, perhaps RTF. - Add "copy special" and "paste special" commands? -7 Use different default colors, to match the current Windows color scheme. - Sys_WindowText, Sys_Window, etc. (Lionel Schaffhauser) -7 Use <C-Tab> to cycle through open windows (e.g., the find dialog). -7 <Esc> should close a dialog. -7 Keep the console for external commands open. Don't wait for a key to be - hit. Re-open it when the user has closed it anyway. Or use a prepended - command: ":nowait {cmd}", or ":quiet", which executes {cmd} without any - prompts. -7 Should be able to set an option so that when you double click a file that - is associated with Vim, you can either get a new instance of Vim, or have - the file added into an already running Vim. -7 The "-P" argument only works for the current codepage. Use wide - functions to find the window title. - - -GUI: -8 Make inputdialog() work for Photon, Amiga, RiscOS. -- <C--> cannot be mapped. Should be possible to recognize this as a - normal "-" with the Ctrl modifier. -7 Implement ":popup" for other systems than Windows. -8 Implement ":tearoff" for other systems than Win32 GUI. -6 Implement ":untearoff": hide a torn-off menu. -8 When using the scrollbar to scroll, don't move the cursor position. When - moving the cursor: scroll to the cursor position. -9 Make <S-Insert> paste from the clipboard by default. (Kunze) -7 Menu local to a buffer, like mappings. Or local to a filetype? -8 In Buffers menu, add a choice whether selecting a buffer opens it in the - current window, splits the window or uses ":hide". -8 Dragging the mouse pointer outside of a Vim Window should make the text - scroll. Return a value from gui_send_mouse_event() to the machine - specific code to indicate the time in which the event should be repeated. -8 Make it possible to ignore a mouse click when it's used to give Vim (gvim) - window focus. Also when a mouse click is used to bring a window to front. -8 Make the split into system independent code and system specific code more - explicit. There are too many #ifdefs in gui.c. - If possible, separate the Vim code completely from the GUI code, to allow - running them in separate processes. -7 X11: Support cursorColor resource and "-cr" argument. -8 X11 (and others): CTRL-; is not different from ';'. Set the modifier mask - to include CTRL for keys where CTRL produces the same ASCII code. -7 Add some code to handle proportional fonts on more systems? Need to draw - each character separately (like xterm). Also for when a double-width font - is not exactly double-width. (Maeda) -8 Should take font from xterm where gvim was started (if no other default). -8 Selecting font names in X11 is difficult, make a script or something to - select one. -8 Visual highlighting should keep the same font (bold, italic, etc.). -8 Add flag to 'guioptions' to not put anything in the clipboard at all? -8 Should support a way to use keys that we don't recognize yet. Add a - command that adds entries to special_keys somehow. How do we make this - portable (X11, Win32, ..)? -7 Add a flag to 'guioptions' that tells not to remove inactive menu items. - For systems where greying-out or removing menu items is very slow. The - menu items would remain visibly normally, but not do anything. -7 Add ":minimize" and ":maximize", which iconize the window and back. - Useful when using gvim to run a script (e.g. 2html.vim). -7 X11: Is it possible to free allocated colors, so that other programs can - use them again? Otherwise, allow disabling allocating the default colors. - Or allocate an own colormap (check UAE). With an option to use it. For - the commandline, "-install" is mostly used for X11 programs. -7 Add command line argument for "gvim" not to start the GUI. Sort of the - inverse of "vim -g". (Vikas) -7 Should support multi-column menus. -- Should add option for where to put the "Help" menu: like Motif at the far - right, or with the other menus (but still at the right). -- Add menu item to "Keep Insert mode". -8 ":mkgvimrc" command, that includes menus. -6 Big change: Move GUI to separate program "vimgui", to make startup of vim a - lot faster, but still be able to do "vim -g" or ":gui". -7 More explicit mouse button binding instead of 'mousemodel'? -7 Add option to set the position of the window on the screen. 'windowpos', - which has a value of "123,456": <x>,<y>. - Or add a command, like ":winsize"? -7 Add toolbar for more GUIs. -8 Make it possible to use "amenu icon=BuiltIn##", so that the toolbar item - name can be chosen free. -7 Make it possible to put the toolbar on top, left, right and/or bottom of - the window? Allows for softkey-like use. -6 Separate the part of Vim that does the editing from the part that runs the - GUI. Communicate through a pseudo-tty. Vim starts up, creates a - pty that is connected to the terminal. When the GUI starts, the pty is - reconnected to the GUI process. When the GUI stops, it is connected to - the terminal again. Also use the pty for external processes, it looks - like a vt100 terminal to them. Vim uses extra commands to communicate GUI - things. -7 Motif: For a confirm() dialog <Enter> should be ignored when no default - button selected, <Esc> should close the dialog. -7 When using a pseudo-tty Vim should behave like some terminal (vt52 looks - simple enough). Terminal codes to/from shell should be translated. -- Would it be useful to be able to quit the GUI and go back to the terminal - where it was started from? -7 Support "-visual <type>" command line argument. - - -Autocommands: -- Put autocommand event names in a hashtable for faster lookup? -8 When the SwapExists event is triggered, provide information about the - swap file, e.g., whether the process is running, file was modified, etc. - Must be possible to check the situation that it's probably OK to delete - the swap file. (Marc Merlin) -8 When all the patterns for an event are "*" there is no need to expand - buffer names to a full path. This can be slow for NFS. -7 For autocommand events that trigger multiple times per buffer (e.g., - CursorHold), go through the list once and cache the result for a specific - buffer. Invalidate the cache when adding/deleting autocommands or - changing the buffer name. -8 Add ScriptReadCmd event: used to load remote Vim scripts, e.g. - "vim -u http://mach/path/vimrc". -7 Add TagJump event: do something after jumping to a tag. -8 Add "TagJumpFile" autocommand: When jumping to another file for a tag. - Can be used to open "main.c.gz" when "main.c" isn't found. -8 Use another option than 'updatetime' for the CursorHold event. The two - things are unrelated for the user (but the implementation is more - difficult). -7 Add autocommand event for when a buffer cannot be abandoned. So that the - user can define the action taking (autowrite, dialog, fail) based on the - kind of file. (Yakov Lerner) Or is BufLeave sufficient? -8 Autocommand for when modified files have been found, when getting input - focus again (e.g., FileChangedFocus). - Check when: getting focus, jumping to another buffer, ... -7 Autocommand for when an option is changed. Match buffer name or option - name? -8 Autocommands should not change registers. And marks? And the jumplist? - And anything else? Add a command to save and restore these things. -8 Add autocommands, user functions and user commands to ":mkvimrc". -6 Add KeymapChanged event, so that the effects of a different keymap can be - handled (e.g., other font) (Ron Aaron) -7 When trying to open a directory, trigger an OpenDirectory event. -7 Add file type in front of file pattern: <d> for directory, <l> for link, - <x> for executable, etc. <&xxx> for Risc OS. With commas to separate - alternatives. The autocommand is only executed when both the file type - AND the file pattern match. (Leonard) -5 Add option that specifies extensions which are to be discarded from the - file name. E.g. 'ausuffix', with ".gz,.orig". Such that file.c.gz will - trigger the "*.c" autocommands. (Belabas) -7 Add something to break the autocommands for the current event, and for - what follows. Useful for a "BufWritePre" that wants to avoid writing the - file. -8 When editing "tt.gz", which is in DOS format, 'fileformat' stays at - "unix", thus writing the file changes it. Somehow detect that the read - command used dos fileformat. Same for 'fileencoding'. -- Add events to autocommands: - Error - When an error happens - NormalEnter - Entering Normal mode - ReplaceEnter - Entering Replace mode - CmdEnter - Entering Cmdline mode (with type of cmdline to allow - different mapping) - VisualEnter - Entering Visual mode - *Leave - Leaving a mode (in pair with the above *Enter) - VimLeaveCheck - Before Vim decides to exit, so that it can be cancelled - when exiting isn't a good idea. - CursorHoldC - CursorHold while command-line editing - WinMoved - when windows have been moved around, e.g, ":wincmd J" - CmdUndefined - Like FuncUndefined but for user commands. - SearchPost - After doing a search command (e.g. to do "M") - PreDirChanged/PostDirChanged - - Before/after ":cd" has been used (for changing the - window title) - BufReadAction - replaces reading a file - BufWriteAction - replaces writing a file - ShutDown - when the system is about to shut down - InsertCharPre - user typed character Insert mode, before inserting the - char. Pattern is matched with text before the cursor. - Set v:char to the character, can be changed. - (not triggered when 'paste' is set). - InsertCharPost - user typed a character in Insert mode, after inserting - the char. - BufModified - When a buffer becomes modified, or unmodified (for - putting a [+] in the window title or checking out the - file from CVS). - BufFirstChange - When making a change, when 'modified' is set. Can be - used to do a :preserve for remote files. - BufChange - after a change was made. Set some variables to indicate - the position and number of inserted/deleted lines, so - that marks can be updated. HierAssist has patch to add - BufChangePre, BufChangePost and RevertBuf. (Shah) - ViewChanged - triggered when the text scrolls and when the window size - changes. - WinResized - After a window has been resized - WinClose - Just before closing a window -- Write the file now and then ('autosave'): - *'autosave'* *'as'* *'noautosave'* *'noas'* - 'autosave' 'as' number (default 0) - Automatically write the current buffer to file N seconds after the - last change has been made and when |'modified'| is still set. - Default: 0 = do not autosave the buffer. - Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make - them save the file itself besides the swapfile. - - -Omni completion: -- Add a flag to 'complete' to be able to do omni completion with CTRL-N (and - mix it with other kinds of completion). -- Ideas from the Vim 7 BOF at SANE: - - For interpreted languages, use the interpreter to obtain information. - Should work for Java (Eclipse does this), Python, Tcl, etc. - Richard Emberson mentioned working on an interface to Java. - - Check Readline for its completion interface. -- Ideas from others: - http://www.wholetomato.com/ - http://www.vim.org/scripts/script.php?script_id=747 - http://sourceforge.net/projects/insenvim - or http://insenvim.sourceforge.net - Java, XML, HTML, C++, JSP, SQL, C# - MS-Windows only, lots of dependencies (e.g. Perl, Internet - explorer), uses .dll shared libraries. - For C++ uses $INCLUDE environment var. - Uses Perl for C++. - Uses ctags to find the info: - ctags -f $allTagsFile --fields=+aiKmnsSz --language-force=C++ --C++-kinds=+cefgmnpsut-dlux -u $files - www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang) - IComplete: http://www.vim.org/scripts/script.php?script_id=1265 - and http://stud4.tuwien.ac.at/~e0125672/icomplete/ - http://cedet.sourceforge.net/intellisense.shtml (for Emacs) - Ivan Villanueva has something for Java. - Emacs: http://www.xref-tech.com/xrefactory/more_c_completion.html - Completion in .NET framework SharpDevelop: http://www.icsharpcode.net -- Pre-expand abbreviations, show which abbrevs would match? - - -Insert mode completion/expansion: -- GUI implementation of the popup menu. -7 When searching in other files the name flash by, too fast to read. Only - display a name every second or so, like with ":vimgrep". -7 When expanding file names with an environment variable, add the match with - the unexpanded var. So $HOME/tm expands to "/home/guy/tmp" and - "$HOME/tmp" -8 When there is no word before the cursor but something like "sys." complete - with "sys.". Works well for C and similar languages. -9 ^X^L completion doesn't repeat correctly. It uses the first match with - the last added line, instead of continuing where the last match ended. - (Webb) -8 Add option to set different behavior for Insert mode completion: - - ignore/match case - - different characters than 'iskeyword' -8 Add option 'isexpand', containing characters when doing expansion (so that - "." and "\" can be included, without changing 'iskeyword'). (Goldfarb) - Also: 'istagword': characters used for CTRL-]. - When 'isexpand' or 'istagword' are empty, use 'iskeyword'. - Alternative: Use a pattern so that start and end of a keyword can be - defined, only allow dash in the middle, etc. -8 Add a command to undo the completion, go back to the original text. -7 Completion of an abbreviation: Can leave letters out, like what Instant - text does: www.textware.com -8 Use the class information in the tags file to do context-sensitive - completion. After "foo." complete all member functions/variables of - "foo". Need to search backwards for the class definition of foo. - Should work for C++ and Java. - Even more context would be nice: "import java.^N" -> "io", "lang", etc. -7 When expanding $HOME/dir with ^X^F keep the $HOME (with an option?). -7 Add CTRL-X command in Insert mode like CTRL-X CTRL-N, that completes WORDS - instead of words. -8 Add CTRL-X CTRL-R: complete words from register contents. -8 Add completion of previously inserted texts (like what CTRL-A does). - Requires remembering a number of insertions. -8 Add 'f' flag to 'complete': Expand file names. - Also apply 'complete' to whole line completion. -- Add a flag to 'complete' to only scan local header files, not system - header files. (Andri Moell) -- Make it possible to search include files in several places. Use the - 'path' option? Can this be done with the dictionary completion (use - wildcards in the file name)? -- Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted). -- Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?). -- Set a mark at the position where the match was found (file mark, could - be in another file). -- Add CTRL-A command in CTRL-X mode: show all matches. -- Make CTRL-X CTRL-L use the 'complete' option? -- Add command in CTRL-X mode to add following words to the completed string - (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W) -- CTRL-X CTRL-F: Use 'path' to find completions. -- CTRL-X CTRL-F: Option to use forward slashes on MS-Windows? -- CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly) -- Allow listing all matches in some way (and picking one from the list). - - -Command line editing: -7 Add commands (keys) to delete from the cursor to the end of the command - line. -8 Custom completion of user commands can't use the standard completion - functions. Add a hook to invoke a user function that returns the type of - completion to be done: "file", "tag", "custom", etc. -- Add flags to 'whichwrap' for command line editing (cursor right at end of - lines wraps to start of line). -- Make editing the command line work like Insert mode in a single-line view - on a buffer that contains the command line history. But this has many - disadvantages, only implement it when these can be solved. Elvis has run - into these, see remarks from Steve (~/Mail/oldmail/kirkendall/in.00012). - - Going back in history and editing a line there would change the history. - Would still need to keep a copy of the history elsewhere. Like the - cmdwin does now already. - - Use CTRL-O to execute one Normal mode command. How to switch to normal - mode for more commands? <Esc> should cancel the command line. CTRL-T? - - To allow "/" and "= need to recursively call getcmdline(), overwrite the - cmdline. But then we are editing a command-line again. How to avoid - that the user gets confused by the stack of command lines? - - Use edit() for normal cmdline editing? Would have to integrate - getcmdline() into edit(). Need to solve conflicts between Insert mode - and Command-line mode commands. Make it work like Korn shell and tcsh. - Problems: - - Insert: completion with 'wildchar' - - Insert: use cmdline abbreviations - - Insert: CTRL-D deletes indent instead of listing matches - - Normal: no CTRL-W commands - - Normal: no ":" commands? - - Normal: allow Visual mode only within one line. - - where to show insert/normal mode message? Change highlighting of - character in first column? - - Implementation ideas: - - Set "curwin" and "curbuf" to the command line window and buffer. - - curwin->w_topline is always equal to curwin->w_cursor.lnum. - - never set 'number', no folding, etc. No status line. - - sync undo after entering a command line? - - use NV_NOCL flag for commands that are not allowed in Command-line - Mode. - - -Command line completion: -8 Completing ":r ~br" should find matching user names. -8 Change expand_interactively into a flag that is passed as an argument. -8 With command line completion after '%' and '#', expand current/alternate - file name, so it can be edited. Also with modifiers, such as "%:h". -8 When completing command names, either sort them on the long name, or list - them with the optional part inside []. -8 Add an option to ignore case when doing interactive completion. So that - ":e file<Tab>" also lists "Filelist" (sorted after matching case matches). -7 Completion of ":map x ": fill in the current mapping, so that it can be - edited. (Sven Guckes) -- For 'wildmenu': Simplify "../bar" when possible. -- When using <Up> in wildmenu mode for a submenu, should go back to the - current menu, not the first one. E.g., ":emenu File.Save<Up>". -8 When using backtick expansion, the external command may write a greeting - message. Add an option or commands to remove lines that match a regexp? -7 When listing matches of files, display the common path separately from the - file names, if this makes the listing shorter. (Webb) -- Add command line completion for ":ilist" and friends, show matching - identifiers (Webb). -8 Add command line completion for "old value" of a command. ":args <key>" - would result in the current list of arguments, which you can then edit. -7 Add command line completion with CTRL-X, just like Insert mode completion. - Useful for ":s/word/xx/". -- Add command to go back to the text as it was before completion started. - Also to be used for <Up> in the command line. -- Add 'wildlongest' option: Key to use to find longest common match for - command line completion (default CTRL-L), like 'wildchar'. (Cregut) - Also: when there are several matches, show them line a CTRL-D. - - -Command line history: -9 Remember which command lines were actually typed and were not loaded from - viminfo. When writing viminfo append only these lines, so that lines from - other Vim's are not overwritten. -- Add "KeyWasTyped" flag: It's reset before each command and set when a - character from the keyboard is consumed. Value is used to decide to put a - command line in history or not. Put line in history if it didn't - completely resulted from one mapping. -- When using ":browse", also put the resulting edit command in the history, - so that it can be repeated. (Demirel) - - -Insert mode: -9 When 'autoindent' is set, hitting <CR> twice, while there is text after - the cursor, doesn't delete the autoindent in the resulting blank line. - (Rich Wales) This is Vi compatible, but it looks like a bug. -8 When using CTRL-O in Insert mode, then executing an insert command - "a" or "i", should we return to Insert mode after <Esc>? (Eggink) - Perhaps it can be allowed a single time, to be able to do - "<C-O>10axyz<Esc>". Nesting this further is confusing. - ":map <F2> 5aabc<Esc>" works only once from Insert mode. -8 When using CTRL-G CTRL-O do like CTRL-\ CTRL-O, but when returning with - the cursor in the same position and the text didn't change continue the - same change, so that "." repeats the whole insert. -7 Use CTRL-G <count> to repeat what follows. Useful for inserting a - character multiple times or repeating CTRL-Y. -- Make 'revins' work in Replace mode. -7 Use 'matchpairs' for 'showmatch': When inserting a character check if it - appears in the rhs of 'matchpairs'. -- In Insert mode (and command line editing?): Allow undo of the last typed - character. This is useful for CTRL-U, CTRL-W, delete and backspace, and - also for characters that wrap to the next line. - Also: be able to undo CTRL-R (insert register). - Possibly use 'backspace'="whole" for a mode where at least a <CR> that - inserts autoindent is undone by a single <BS>. -- Use CTRL-G in Insert mode for an extra range of commands, like "g" in - Normal mode. -- Make 'paste' work without resetting other options, but override their - value. Avoids problems when changing files and modelines or autocommands - are used. -- When typing CTRL-V and a digit higher than 2, only expect two digits. -- Insert binary numbers with CTRL-V b. -- Make it possible to undo <BS>, <C-W> and <C-U>. Bash uses CTRL-Y. - - -'cindent', 'smartindent': -9 ") :" confuses continuation line: (Colin Bennett, 2007 Dec 14) - cout << "a" - << ") :" - << "y"; -9 "} else" causes following lines to be indented too much. (Rouben - Rostamian, 2008 Aug 30) -8 Lisp indenting: "\\" confuses the indenter. (Dorai Sitaram, 2006 May 17) -8 Why are continuation lines outside of a {} block not indented? E.g.: - long_type foo = - value; -8 Java: Inside an anonymous class, after an "else" or "try" the indent is - too small. (Vincent Bergbauer) - Problem of using {} inside (), 'cindent' doesn't work then. -8 In C++ it's possible to have {} inside (): (Kirshna) - func( - new String[] { - "asdf", - "asdf" - } - ); -8 In C++ a function isn't recognized inside a namespace: - (Chow Loong Jin) - namespace { - int - func(int arg) { - } - } -6 Add 'cino' flag for this function argument layout: (Spencer Collyer) - func( arg1 - , arg2 - , arg3 - ); -7 Add separate "(0" option into inside/outside a function (Zellner): - func( - int x) // indent like "(4" - { - if (a - && b) // indent like "(0" -9 Using "{" in a comment: (Helmut Stiegler) - if (a) - { - if (b) - { - // { - } - } <-- this is indented incorrect - Problem is that find_start_brace() checks for the matching brace to be in - a comment, but not braces in between. Requires adding a comment check to - findmatchlimit(). -- Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the - indent to 0 should be switched on/off. -7 Support ANSI style function header, with each argument on its own line. -- "[p" and "]p" should use 'cindent' code if it's on (only for the first - line). -- Add option to 'cindent' to set indent for comments outside of {}? -- Make a command to line up a comment after a code line with a previous - comment after a code line. Can 'cindent' do this automatically? -7 Add 'j' flag to 'formatoptions': Remove comment leader when joining lines. -- When 'cindent'ing a '}', showmatch is done before fixing the indent. It - looks better when the indent is fixed before the showmatch. (Webb) -- Add option to make indenting work in comments too (for commented-out - code), unless the line starts with "*". -- Don't use 'cindent' when doing formatting with "gq"? -- When formatting a comment after some text, insert the '*' for the new line - (indent is correct if 'cindent' is set, but '*' doesn't get inserted). -8 When 'comments' has both "s1:/*,mb:*,ex:*/" and "s1:(*,mb:*,ex:*)", the - 'x' flag always uses the first match. Need to continue looking for more - matches of "*" and remember all characters that could end the comment. -- For smartindent: When typing 'else' line it up with matching 'if'. -- 'smartindent': allow patterns in 'cinwords', for e.g. TeX files, where - lines start with "\item". -- Support this style of comments (with an option): (Brown) - /* here is a comment that - is just autoindented, and - nothing else */ -- Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi". -7 Use Tabs for the indent of starting lines, pad with spaces for - continuation lines. Allows changing 'tabstop' without messing up the - indents. - 'keeptabs': when set don't change the tabs and spaces used for indent, - when the indent remains the same or increases. - - -Java: -8 Can have {} constructs inside parens. Include changes from Steve - Odendahl? -8 Recognize "import java.util.Vector" and use $CLASSPATH to find files for - "[i" commands and friends. -- For files found with 'include': handle "*" in included name, for Java. - (Jason) -- How to make a "package java.util" cause all classes in the package to be - searched? Also for "import java.util.*". (Mark Brophy) - - -'comments': -8 When formatting C comments that are after code, the "*" isn't repeated - like it's done when there is no code. And there is no automatic wrapping. - Recognize comments that come after code. Should insert the comment leader - when it's "#" or "//". - Other way around: when a C command starts with "* 4" the "*" is repeated - while it should not. Use syntax HL comment recognition? -7 When using "comments=fg:--", Vim inserts three spaces for a new line. - When hitting a TAB, these spaces could be removed. -7 The 'n'esting flag doesn't do the indenting of the last (rightmost) item. -6 Make strings in 'comments' option a RE, to be able to match more - complicated things. (Phillipps) Use a special flag to indicate that a - regexp is used. -8 Make the 'comments' option with "/* * */" lines only repeat the "*" line - when there is a "/*" before it? Or include this in 'cindent'? - - -Virtual edit: -8 Make the horizontal scrollbar work to move the text further left. -7 Allow specifying it separately for Tabs and beyond end-of-line? - - -Text objects: -8 Add text object for fold, so that it can be yanked when it's open. -8 Add test script for text object commands "aw", "iW", etc. -8 Add text object for part of a CamelHumpedWord and under_scored_word. - (Scott Graham) "ac" and "au"? -8 Add a text object for any kind of quoting, also with multi-byte - characters. Option to specify what quotes are recognized (default: all) - use "aq" and "iq". Use 'quotepairs' to define pairs of quotes, like - 'matchpairs'? -8 Add text object for any kind of parens, also multi-byte ones. -7 Add text object for current search pattern: "a/" and "i/". Makes it - possible to turn text highlighted for 'hlsearch' into a Visual area. -8 Add a way to make an ":omap" for a user-defined text object. Requires - changing the starting position in oap->start. -8 Add "gp" and "gP" commands: insert text and make sure there is a single - space before it, unless at the start of the line, and after it, unless at - the end of the line or before a ".". -7 Add objects with backwards extension? Use "I" and "A". Thus "2dAs" - deletes the current and previous sentence. (Jens Paulus) -7 Add "g{" and "g}" to move to the first/last character of a paragraph - (instead of the line just before/after a paragraph as with "{" and "}"). -6 Ignore comment leaders for objects. Make "das" work in reply-email. -5 Make it possible to use syntax group matches as a text object. For - example, define a "ccItem" group, then do "da<ccItem>" to delete one. - Or, maybe just define "dai", delete-an-item, to delete the syntax item the - cursor is on. - - -Select mode: -8 In blockwise mode, typed characters are inserted in front of the block, - backspace deletes a column before the block. (Steve Hall) -7 Alt-leftmouse starts block mode selection in MS Word. - See http://www.vim.org/tips/tip.php?tip_id=743 -7 Add Cmdline-select mode. Like Select mode, but used on the command line. - - Change gui_send_mouse_event() to pass on mouse events when 'mouse' - contains 'C' or 'A'. - - Catch mouse events in ex_getln.c. Also shift-cursor, etc., like in - normal_cmd(). - - remember start and end of selection in cmdline_info. - - Typing text replaces the selection. - - -Visual mode: -- When dragging the Visual selection with the mouse and 'scrolloff' is zero, - behave like 'scrolloff' is one, so that the text scrolls when the pointer - is in the top line. -- Displaying size of Visual area: use 24-33 column display. - When selecting multiple lines, up to about a screenful, also count the - characters. -8 When using "I" or "A" in Visual block mode, short lines do not get the new - text. Make it possible to add the text to short lines too, with padding - where needed. -7 With a Visual block selected, "2x" deletes a block of double the width, - "3y" yanks a block of triple width, etc. -7 When selecting linewise, using "itext" should insert "text" at the start - of each selected line. -8 What is "R" supposed to do in Visual mode? -8 Make Visual mode local to the buffer. Allow changing to another buffer. - When starting a new Visual selection, remove the Visual selection in any - other buffer. (Ron Aaron) -8 Support dragging the Visual area to drop it somewhere else. (Ron Aaron, - Ben Godfrey) -7 Support dragging the Visual area to drop it in another program, and - receive dropped text from another program. (Ben Godfrey) -7 With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of - a <CR>. The entered lines are repeated over the Visual area. -7 CTRL-V :s should substitute only in the block, not to whole lines. (David - Young is working on this) -7 Filtering a block should only apply to the block, not to the whole lines. - When the number of lines is increased, add lines. When decreased, pad with - spaces or delete? Use ":`<,`>" on the command line. -8 After filtering the Visual area, make "gv" select the filtered text? - Currently "gv" only selects a single line, not useful. -7 Don't move the cursor when scrolling? Needed when the selection should - stay the same. Scroll to the cursor at any movement command. With an - option! -7 In Visual block mode, need to be able to define a corner on a position - that doesn't have text? Also: when using the mouse, be able to select - part of a TAB. Even more: Add a mode where the cursor can be on a screen - position where there is no text. When typing, add spaces to fill the gap. - Other solution: Always use curswant, so that you can move the cursor to - the right column, and then use up/down movements to select the line, - without changing the column. -6 ":left" and ":right" should work in Visual block mode. -7 CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the - current buffer. -7 CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area. -6 In non-Block mode, "I" should insert the same text in front of each line, - before the first non-blank, "gI" in column 1. -6 In non-Block mode, "A" should append the same text after each line. -6 When in blockwise visual selection (CTRL-V), allow cursor to be placed - right of the line. Could also allow cursor to be placed anywhere on a TAB - or other special character. -6 Add commands to move selected text, without deselecting. - - -More advanced repeating commands: -- Add "." command for visual mode: redo last visual command (e.g. ":fmt"). -7 Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher) Somehow remember - the command line so that it can be repeated? -- Add "gn": repeat last movement command. Including count. -- Add "." command after operator: repeat last command of same operator. E.g. - "c." will repeat last change, also when "x" used since then (Webb). - "y." will repeat last yank. - "c2." will repeat the last but one change? - Also: keep history of Normal mode commands, add command to list the history - and/or pick an older command. -- History stack for . command? Use "g." command. - - -Mappings and Abbreviations: -8 When "0" is mapped (it is a movement command) this mapping should not be - used after typing another number, e.g. "20l". (Charles Campbell) - Is this possible without disabling the mapping of the following command? -8 Should mapping <C-A> and <C-S-A> both work? -7 ":abbr b byte", append "b " to an existing word still expands to "byte". - This is Vi compatible, but can we avoid it anyway? -8 To make a mapping work with a prepended "x to select a register, store the - last _typed_ register name and access it with "&. -8 Add ":amap", like ":amenu". -7 Add a mapping that works always, for remapping the keyboard. -8 Add ":cab!", abbreviations that only apply to Command-line mode and not to - entering search strings. -8 Add a flag to ":abbrev" to eat the character that triggers the - abbreviation. Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and - not the <Space>. -8 Allow mapping of CTRL-@ (anywhere in the LHS). -8 Give a warning when using CTRL-C in the lhs of a mapping. It will never - (?) work. -8 Add a way to save a current mapping and restore it later. Use a function - that returns the mapping command to restore it: mapcmd()? mapcheck() is - not fool proof. How to handle ambiguous mappings? -7 Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation? -7 Allow mapping "Q" and "Q}" at the same time. Need to put a flag with "Q", - that it needs an extra character before it can match. See Vile 'maplonger' - option. -7 When someone tries to unmap with a trailing space, and it fails, try - unmapping without the trailing space. Helps for ":unmap xx | unmap yy". -7 Make it possible to map 'wildchar', but only when it's a special character - (like CTRL-E). Currently it's only recognized when typed. Useful for - mapping a key to do something and then completion. -6 Context-sensitive abbreviations: Specify syntax group(s) in which the - abbreviations are to be used. -- Add mappings that take arguments. Could work like the ":s" command. For - example, for a mouse escape sequence: - :mapexp <Esc>{\([0-9]*\),\([0-9]*\); H\1j\2l -- Add optional <Number> argument for mappings: - :map <Number>q ^W^W<Number>G - :map <Number>q<Number>t ^W^W<Number1-1>G<Number2>l - :map q<Char> :s/<Char>/\u\0/g - Or implicit: - :map q <Register>d<Number>$ -- Make it possible to include a <Nul> in the lhs and rhs of a mapping. -- Add command to repeat a whole mapping ("." only repeats the last change in - a mapping). Also: Repeat a whole insert command, including any mappings - that it included. Sort-of automatic recording? -- Add an option to ":map" that makes it display the special keys in - <> notation (e.g. <CR> instead of ^M). Or just always do this? -- Include an option (or flag to 'cpoptions') that makes errors in mappings - not flush the rest of the mapping (like nvi does). -- Use context sensitiveness of completion to switch abbreviations and - mappings off for :unab and :unmap. -6 When using mappings in Insert mode, insert characters for incomplete - mappings first, then remove them again when a mapping matches. Avoids - that characters that are the start of some mapping are not shown until you - hit another character. -- Add mappings for replace mode: ":rmap". How do we then enter mappings for - non-replace Insert mode? -- Add separate mappings for Visual-character/block/line mode? -- Add 'mapstop' command, to stop recursive mappings. -- List mappings that have a raw escape sequence both with the name of the key - for that escape sequence (if there is one) and the sequence itself. -- List mappings: Once with special keys listed as <>, once with meta chars as - <M-a>, once with the byte values (octal?). Sort of "spell mapping" command? -- When entering mappings: Add the possibility to enter meta keys like they - are displayed, within <>: <M-a>, <~@> or <|a>. -- Allow multiple arguments to :unmap. -- Command to show keys that are not used and available for mapping - ":freekeys". -- Allow any character except white space in abbreviations lhs (Riehm). - - -Incsearch: -- Add a limit to the number of lines that are searched for 'incsearch'? -- When no match is found and the user types more, the screen is redrawn - anyway. Could skip that. Esp. if the line wraps and the text is scrolled - up every time. -- Temporarily open folds to show where the search ends up. Restore the - folds when going to another line. -- When incsearch used and hitting return, no need to search again in many - cases, saves a lot of time in big files. (Slootman wants to work on this?) - When not using special characters, can continue search from the last match - (or not at all, when there was no match). See oldmail/webb/in.872. -- With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other - key to copy matched word to search pattern (Alexander Schmid). - - -Searching: -8 Add "g/" and "gb" to search for a pattern in the Visually selected text? - "g?" is already used for rot13. - The vis.vim script has a ":S" command that does something like this. - Can use "g/" in Normal mode, uses the '< to '> area. - Use "&/" for searching the text in the Visual area? -9 Add "v" offset: "/pat/v": search for pattern and start Visual mode on the - matching text. -8 Add a mechanism for recursiveness: "\@(([^()]*\@g[^()]*)\)". \@g stands - for "go recursive here" and \@( \) marks the recursive part. - Perl does it this way: - $paren = qr/ \(( [^()] | (??{ $paren }) )* \) /x; - Here $paren is evaluated when it's encountered. This is like a regexp - inside a regexp. In the above terms it would be: - \@((\([^()]\|\@g\)*)\) -8 Show the progress every second. Could use the code that checks for CTRL-C - to find out how much time has passed. Or use SIGALRM. Where to show the - number? -8 When using an expression for ":s", set the match position in a v: - variable. So that you can do ":%s/^/\=v:lnum/" to put a line number - before each line. -7 Support for approximate-regexps to find similar words (agrep - http://www.tgries.de/agrep/ tre: http://laurikari.net/tre/index.html). -8 Add an item for a big character range, so that one can search for a - chinese character: \z[234-1234] or \z[XX-YY] or \z[0x23-0x234]. -7 Add an item stack to allow matching (). One side is "push X on - the stack if previous atom matched". Other side is "match with top of - stack, pop it when it matches". Use "\@pX" and "\@m"? - Example: \((\@p).\{-}\@m\)* -7 Add an option to accept a match at the cursor position. Also for - search(). (Brett) -7 Add a flag to "/pat/" to discard an error. Useful to continue a mapping - when a search fails. Could be "/pat/E" (e is already used for end offset). -7 Add pattern item to use properties of Unicode characters. In Perl it's - "\p{L}" for a letter. See Regular Expression Pocket Reference. -8 Would it be possible to allow ":23,45/pat/flags" to search for "pat" in - lines 23 to 45? Or does this conflict with Ex range syntax? -8 Allow identical pairs in 'matchpairs'. Restrict the search to the current - line. -7 Allow longer pairs in 'matchpairs'. Use ~/vim/macros/matchit.vim as an - example. -8 Make it possible to define the character that "%" checks for in - #if/#endif. For nmake it's !if/!endif. -- For "%" command: set hierarchy for which things include other things that - should be ignored (like "*/" or "#endif" inside /* */). - Also: use "%" to jump from start to end of syntax region and back. - Alternative: use matchit.vim -8 "/:/e+1" gets stuck on a match at the end of the line. Do we care? -8 A pattern like "\([^a]\+\)\+" takes an awful long time. Recognize that - the recursive "\+" is meaningless and optimize for it. - This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$". -7 Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and - "\d". -7 Add a way to specify characters in <C-M> or <Key> form. Could be - \%<C-M>. -8 Add an argument after ":s/pat/str/" for a range of matches. For example, - ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line. -8 When 'iskeyword' is changed the matches from 'hlsearch' may change. (Benji - Fisher) redraw if some options are set while 'hlsearch' is set? -8 Add an option not to use 'hlsearch' highlighting for ":s" and ":g" - commands. (Kahn) It would work like ":noh" is used after that command. - Also: An extra flag to do this once, and a flag to keep the existing - search pattern. -- Make 'hlsearch' a local/global option, so that it can be disabled in some - of the windows. -- Add \%h{group-name}; to search for a specific highlight group. - Add \%s{syntax-group}; to search for a specific syntax group. -- Support Perl regexp. Use PCRE (Perl Compatible RE) package. (Shade) - Or translate the pattern to a Vim one. - Don't switch on with an option for typed commands/mappings/functions, it's - too confusing. Use "\@@" in the pattern, to avoid incompatibilities. -8 Add a way to access the last substitute text, what is used for ":s//~/". - Can't use the ~ register, it's already used for drag & drop. -- Remember flags for backreferenced items, so that "*" can be used after it. - Check with "\(\S\)\1\{3}". (Hemmerling) -8 Flags that apply to the whole pattern. - This works for all places where a regexp is used. - Add "\q" to not store this pattern as the last search pattern? -- Add flags to search command (also for ":s"?): - i ignore case - I use case - p use Perl regexp syntax (or POSIX?) - v use Vi regexp syntax - f forget pattern, don't keep it for "n" command - F remember pattern, keep it for "n" command - Perl uses these too: - e evaluate the right side as an expression (Perl only) - m multiple line expression (we don't need it) - o compile only once (Perl only) - s single line expression (we don't need it) - x extended regexp (we don't need it) - When used after ":g" command, backslash needed to avoid confusion with the - following command. - Add 'searchflags' for default flags (replaces 'gdefault'). -- Add command to display the last used substitute pattern and last used - pattern. (Margo) Maybe make it accessible through a register (like "/ - for search string)? -7 Use T-search algorithm, to speed up searching for strings without special - characters. See C't article, August 1997. -- Add 'fuzzycase' option, so that case doesn't matter, and '-' and '_' are - equivalent (for Unix filenames). -- Add 'v' flag to search command: enter Visual mode, with the matching text - as Visual area. (variation on idea from Bertin) -- Searching: "/this//that/" should find "that" after "this". -- Add global search commands: Instead of wrapping at the end of the buffer, - they continue in another buffer. Use flag after search pattern: - a for the next file in the argument list - f for file in the buffer list - w for file edited in a window. - e.g. "/pat/f". Then "n" and "N" work through files too. "f" flag also for - ":s/pat/foo/f"??? Then when 'autowrite' and 'hidden' are both not set, ask - before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No - Save-all/hide-All/Quit) ". -- ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler) -7 When searching with 'n' give message when getting back where the search - first started. Remember start of search in '/ mark. -7 Add option that scrolls screen to put cursor in middle of screen after - search always/when off-screen/never. And after a ":tag" command. Maybe - specify how many lines below the screen causes a redraw with the cursor in - the middle (default would be half a screen, zero means always). -6 Support multiple search buffers, so macros can be made without side - effects. -7 From xvim: Allow a newline in search patterns (also for :s, can delete - newline). Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc. - [not in xvim:] Add option to switch on matches crossing ONE line boundary. -7 Add ":iselect", a combination of ":ilist" and ":tselect". (Aaron) (Zellner) - Also ":dselect". - - -Undo: -9 After undo/redo, in the message show whether the buffer is modified or - not. -8 Use timestamps for undo, so that a version a certain time ago can be found - and info before some time/date can be flushed. 'undopersist' gives maximum - time to keep undo: "3h", "1d", "2w", "1y", etc. -8 Search for pattern in undo tree, showing when it happened and the text - state, so that you can jump to it. -8 Undo tree: visually show the tree somehow (Damian Conway) - Show only the leaves, indicating how many changed from the branch and the - timestamp? - Put branch with most recent change on the left, older changes get more - indent? -8 See ":e" as a change operation, find the changes and add them to the - undo info. Also be able to undo the "Reload file" choice for when a file - was changed outside of Vim. - Would require doing a diff between the buffer text and the file and - storing the differences. - Alternative: before reloading a buffer, store it somewhere. Keep a list - of about 10 last reloaded buffers. -- Make it possible to undo all the commands from a mapping, including a - trailing unfinished command, e.g. for ":map K iX^[r". -- When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not - possible, even when typing <Esc> immediately. (Grahn) Also for "i", "a", - etc. Postpone saving for undo until something is really inserted? -8 When Inserting a lot of text, it can only be undone as a whole. Make undo - sync points at every line or word. Could recognize the start of a new - word (white space and then non-white space) and backspacing. - Can already use CTRL-G u, but that requires remapping a lot of things. -8 Make undo more memory-efficient: Compare text before and after change, - only remember the lines that really changed. -7 Add undo for a range of lines. Can change these back to a previous - version without changing the rest of the file. Stop doing this when a - change includes only some of these lines and changes the line count. Need - to store these undo actions as a separate change that can be undone. -- For u_save() include the column number. This can be used to set '[ and ']. - And in the future the undo can be made more efficient (Webb). -- In out-of-memory situations: Free allocated space in undo, and reduce the - number of undo levels (with confirmation). -- Instead of [+], give the number of changes since the last write: [+123]. - When undoing to before the last write, change this to a negative number: - [-99]. -- With undo with simple line delete/insert: optimize screen updating. -- When executing macro's: Save each line for undo only once. -- When doing a global substitute, causing almost all lines to be changed, - undo info becomes very big. Put undo info in swap file?? - - -Buffer list: -7 Command to execute a command in another buffer: ":inbuf {bufname} {cmd}". - Also for other windows: ":inwin {winnr} {cmd}". How to make sure that - this works properly for all commands, and still be able to return to the - current buffer/window? E.g.: ":inbuf xxx only". -8 Add File.{recent_files} menu entries: Recently edited files. - Ron Aaron has a plugin for this: mru.vim. -8 Unix: Check all uses of fnamecmp() and fnamencmp() if they should check - inode too. -7 Add another number for a buffer, which is visible for the user. When - creating a new buffer, use the lowest number not in use (or the highest - number in use plus one?). -7 Offer some buffer selection from the command line? Like using ":ls" and - asking for a buffer number. (Zachmann) -- When starting to edit a file that is already in the buffer list, use the - file name argument for the new short file name. (Webb) -- Add an option to make ":bnext" and ":bprev" wrap around the end of the - buffer list. Also for ":next" and ":prev"? -7 Add argument to ":ls" which is a pattern for buffers to list. - E.g. ":ls *.c". (Thompson) -7 Add expansion of buffer names, so that "*.c" is expanded to all buffer - names. Needed for ":bdel *.c", ":bunload *.c", etc. -8 Support for <afile> where a buffer name is expected. -8 Some commands don't use line numbers, but buffer numbers. '$' - should then mean the number of the last buffer. E.g.: "4,$bdel". -7 Add an option to mostly use slashes in file names. Separately for - internal use and for when executing an external program? - - -Swap (.swp) files: -8 If writing to the swap file fails, should try to open one in another - directory from 'dir'. Useful in case the file system is full and when - there are short file name problems. -8 Also use the code to try using a short file name for the backup and swap - file for the Win32 and Dos 32 bit versions. -8 When a file is edited by root, add $LOGNAME to know who did su. -8 When the edited file is a symlink, try to put the swap file in the same - dir as the actual file. Adjust FullName(). Avoids editing the same file - twice (e.g. when using quickfix). Also try to make the name of the backup - file the same as the actual file? - Use the code for resolve()? -7 When using 64 bit inode numbers, also store the top 32 bits. Add another - field for this, using part of bo_fname[], to keep it compatible. -7 When editing a file on removable media, should put swap file somewhere - else. Use something like 'r' flag in 'viminfo'. 'diravoid'? - Also: Be able to specify minimum disk space, skip directory when not - enough room. -7 Add a configure check for which directory should be used: /tmp, /var/tmp - or /var/preserve. -- Add an option to create a swap file only when making the first change to - the buffer. (Liang) Or only when the buffer is not read-only. -- Add option to set "umask" for backup files and swap files (Antwerpen). - 'backupumask' and 'swapumask'? Or 'umaskback' and 'umaskswap'? -- When editing a readonly file, don't use a swap file but read parts from the - original file. Also do this when the file is huge (>'maxmem'). We do - need to load the file once to count the number of lines? Perhaps keep a - cached list of which line is where. - - -Viminfo: -7 Can probably remove the code that checks for a writable viminfo file, - because we now do the chown() for root, and others can't overwrite someone - else's viminfo file. -8 When there is no .viminfo file and someone does "su", runs Vim, a - root-owned .viminfo file is created. Is there a good way to avoid this? - Perhaps check the owner of the directory. Only when root? -8 Add argument to keep the list of buffers when Vim is started with a file - name. (Schild) -8 Keep the last used directory of the file browser (File/Open menu). -8 Remember the last used register for "@@". -8 Remember the redo buffer, so that "." works after restarting. -8 Remember a list of last accessed files. To be used in the - "File.Open Recent" menu. Default is to remember 10 files or so. - Also remember which files have been read and written. How to display - this? -7 Also store the ". register (last inserted text). -7 Make it possible to store buffer names in viminfo file relative to some - directory, to make them portable over a network. (Aaron) -6 Store a snapshot of the currently opened windows. So that when quitting - Vim, and then starting again (without a file name argument), you see the - same files in the windows. Use ":mksession" code? -- Make marks present in .viminfo usable as file marks: Display a list of - "last visited files" and select one to jump to. - - -Modelines: -8 Before trying to execute a modeline, check that it looks like one (valid - option names). If it's very wrong, silently ignore it. - Ignore a line that starts with "Subject: ". -- Add an option to whitelist options that are allowed in a modeline. This - would allow careful users to use modelines, e.g., only allowing - 'shiftwidth'. -- Add an option to let modelines only set local options, not global ones - such as 'encoding'. -- When an option value is coming from a modeline, do not carry it over to - another edited file? Would need to remember the value from before the - modeline setting. -- Allow setting a variable from a modeline? Only allow using fixed strings, - no function calls, to avoid a security problem. -- Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for - .cpp files. -- Support the "abbreviate" command in modelines (Kearns). Careful for - characters after <Esc>, that is a security leak. -- Add option setting to ask user if he wants to have the modelines executed - or not. Same for .exrc in local dir. - - -Sessions: -8 DOS/Windows: ":mksession" generates a "cd" command where "aa\#bb" means - directory "#bb" in "aa", but it's used as "aa#bb". (Ronald Hoellwarth) -7 When there is a "help.txt" window in a session file, restoring that - session will not get the "LOCAL ADDITIONS" back. -8 With ":mksession" always store the 'sessionoptions' option, even when - "options" isn't in it. (St-Amant) -8 When using ":mksession", also store a command to reset all options to - their default value, before setting the options that are not at their - default value. -7 With ":mksession" also store the tag stack and jump history. (Michal - Malecki) -7 Persistent variables: "p:var"; stored in viminfo file and sessions files. - - -Options: -7 ":with option=value | command": temporarily set an option value and - restore it after the command has executed. -7 Setting an option always sets "w_set_curswant", while this is only - required for a few options. Only do it for those options to avoid the - side effect. -8 Make "old" number options that really give a number of effects into string - options that are a comma separated list. The old number values should - also be supported. -8 Add commands to save and restore an option, which also preserves the flag - that marks if the option was set. Useful to keep the effect of setting - 'compatible' after ":syntax on" has been used. -7 There is 'titleold', why is there no 'iconold'? (Chazelas) -7 Make 'scrolloff' a global-local option, so that it can be different in the - quickfix window, for example. (Gary Holloway) - - -External commands: -8 When filtering text, redirect stderr so that it can't mess up the screen - and Vim doesn't need to redraw it. Also for ":r !cmd". -4 Set separate shell for ":sh", piping "range!filter", reading text "r !ls" - and writing text "w !wc". (Deutsche) Allow arguments for fast start (e.g. - -f). -4 Allow direct execution, without using a shell. -4 Run an external command in the background. But how about I/O in the GUI? - Careful: don't turn Vim into a shell! -4 Add feature to disable using a shell or external commands. - - -Multiple Windows: -7 "vim -oO file ..." use both horizontal and vertical splits. -8 Add CTRL-W T: go to the top window in the column of the current window. - And CTRL-W B: go to bottom window. -7 Use CTRL-W <Tab>, like alt-tab, to switch between buffers. Repeat <Tab> - to select another buffer (only loaded ones?), <BS> to go back, <Enter> to - select buffer, <Esc> to go back to original buffer. -7 Make it possible to edit a new buffer in the preview window. A script can - then fill it with something. ":popen"? -7 Add a 'tool' window: behaves like a preview window but there can be - several. Don't count it in only_one_window(). (Alexei Alexandrov) -6 Add an option to resize the shell when splitting and/or closing a window. - ":vsp" would make the shell wider by as many columns as needed for the new - window. Specify a maximum size (or use the screen size). ":close" would - shrink the shell by as many columns as come available. (Demirel) -7 When starting Vim several times, instantiate a Vim server, that allows - communication between the different Vims. Feels like one Vim running with - multiple top-level windows. Esp. useful when Vim is started from an IDE - too. Requires some form of inter process communication. -- Support a connection to an external viewer. Could call the viewer - automatically after some seconds of non-activity, or with a command. - Allow some way of reporting scrolling and cursor positioning in the viewer - to Vim, so that the link between the viewed and edited text can be made. - - -Marks: -8 Add ten marks for last changed files: ':0, ':1, etc. One mark per file. -8 When cursor is first moved because of scrolling, set a mark at this - position. (Rimon Barr) Use '-. -8 Add a command to jump to a mark and make the motion inclusive. g'm and g`m? -8 The '" mark is set to the first line, even when doing ":next" a few times. - Only set the '" mark when the cursor was really moved in a file. -8 Make `` and '', which would position the new cursor position in the middle - of the window, restore the old topline (or relative position) from when - the mark was set. -7 Make a list of file marks in a separate window. For listing all buffers, - matching tags, errors, etc. Normal commands to move around. Add commands - to jump to the mark (in current window or new window). Start it with - ":browse marks"? -6 Add a menu that lists the Marks like ":marks". (Amerige) -7 For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the - text at the mark. Highlight the column with the mark. -7 Highlight each mark in some way (With "Mark" highlight group). - Or display marks in a separate column, like 'number' does. -7 Use d"m to delete rectangular area from cursor to mark m (like Vile's \m - command). -7 Try to keep marks in the same position when: - - replacing with a line break, like in ":s/pat/^M/", move marks after the - line break column to the next line. (Acevedo) - - inserting/deleting characters in a line. -5 Include marks for start/end of the current word and section. Useful in - mappings. -6 Add "unnamed mark" feature: Like marks for the ":g" command, but place and - unplace them with commands before doing something with the lines. - Highlight the marked lines somehow. - - -Digraphs: -7 Make "ga" show the digraph for a character, if it exists. - Also the keymap? -- Make it possible to enter "r<C-E>" and "r<C-Y>" (get character from line - below/above). -- Use digraph table to tell Vim about the collating sequence of special - characters? -8 Add command to remove one or more (all) digraphs. (Brown) -7 Support different sets of digraphs (depending on the character set?). At - least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32). - - -Writing files: -- In vim_rename(), should lock "from" file when deleting "to" file for - systems other than Amiga. Avoids problems with unexpected longname to - shortname conversion. -8 write mch_isdevice() for Amiga, Mac, VMS, etc. -8 When appending to a file, Vim should also make a backup and a 'patchmode' - file. -8 'backupskip' doesn't write a backup file at all, a bit dangerous for some - applications. Add 'backupelsewhere' to write a backup file in another - directory? Or add a flag to 'backupdir'? -7 The 'directory' option supports changing path separators to "%" to make - file names unique, also support this for 'backupdir'. (Mikolaj Machowski) -6 Add an option to write a new, numbered, backup file each time. Like - 'patchmode', e.g., 'backupmode'. -6 Make it possible to write 'patchmode' files to a different directory. - E.g., ":set patchmode=~/backups/*.orig". (Thomas) -6 Add an option to prepend something to the backup file name. E.g., "#". - Or maybe allow a function to modify the backup file name? -8 Only make a backup when overwriting a file for the first time. Avoids - losing the original when writing twice. (Slootman) -7 On non-Unix machines, also overwrite the original file in some situations - (file system full, it's a link on an NFS partition). -7 When editing a file, check that it has been change outside of Vim more - often, not only when writing over it. E.g., at the time the swap file is - flushed. Or every ten seconds or so (use the time of day, check it before - waiting for a character to be typed). -8 When a file was changed since editing started, show this in the status - line of the window, like "[time]". - Make it easier to reload all outdated files that don't have changes. - Automatic and/or with a command. - - -Substitute: -8 Substitute with hex/unicode number "\%xff" and "\%uabcd". Just like - "\%uabcd" in search pattern. -8 Make it easier to replace in all files in the argument list. E.g.: - ":argsub/oldword/newword/". Works like ":argdo %s/oldword/newword/g|w". -- :s///p prints the line after a substitution. -- With :s///c replace \&, ~, etc. when showing the replacement pattern. -8 With :s///c allow scrolling horizontally when 'nowrap' is effective. - Also allow a count before the scrolling keys. -- Add number option to ":s//2": replace second occurrence of string? Or: - :s///N substitutes N times. -- Add answers to ":substitute" with 'c' flag, used in a ":global", e.g.: - ":g/pat1/s/pat2/pat3/cg": 'A' do all remaining replacements, 'Q' don't do - any replacements, 'u' undo last substitution. -7 Substitute in a block of text. Use {line}.{column} notation in an Ex - range, e.g.: ":1.3,$.5s" means to substitute from line 1 column 3 to the - last line column 5. -5 Add commands to bookmark lines, display bookmarks, remove bookmarks, - operate on lines with bookmarks, etc. Like ":global" but with the - possibility to keep the bookmarks and use them with several commands. - (Stanislav Sitar) - - -Mouse support: -8 Add 'o' flag to 'mouse'? -7 Be able to set a 'mouseshape' for the popup menu. -8 Add 'mouse' flag, which sets a behavior like Visual mode, but automatic - yanking at the button-up event. Or like Select mode, but typing gets you - out of Select mode, instead of replacing the text. (Bhaskar) -- Implement mouse support for the Amiga console. -- Using right mouse button to extend a blockwise selection should attach to - the nearest corner of the rectangle (four possible corners). -- Precede mouse click by a number to simulate double clicks?!? -- When mouse click after 'r' command, get character that was pointed to. - - -Argument list: -6 Add command to put all filenames from the tag files in the argument list. - When given an argument, only use the files where that argument matches - (like `grep -l ident`) and jump to the first match. -6 Add command to form an args list from all the buffers? - - -Registers: -8 Don't display empty registers with ":display". (Etienne) -8 Make the # register writable, so that it can be restored after jumping - around in windows. -8 Add put command that overwrites existing text. Should also work for - blocks. Useful to move text around in a table. Works like using "R ^R r" - for every line. -6 When yanking into the unnamed registers several times, somehow make the - previous contents also available (like it's done for deleting). What - register names to use? g"1, g"2, etc.? -- When appending to a register, also report the total resulting number of - lines. Or just say "99 more lines yanked", add the "more". -- When inserting a register in Insert mode with CTRL-R, don't insert comment - leader when line wraps? -- The ":@r" commands should take a range and execute the register for each - line in the range. -- Add "P" command to insert contents of unnamed register, move selected text - to position of previous deleted (to swap foo and bar in " + foo") -8 Should be able to yank and delete into the "/ register. - How to take care of the flags (offset, magic)? - - -Debug mode: -7 Add something to enable debugging when a remote message is received. -8 Add breakpoints for setting an option -8 Add breakpoints for assigning to a variable. -7 Add a watchpoint in the debug mode: An expression that breaks execution - when evaluating to non-zero. Add the "watchadd expr" command, stop when - the value of the expression changes. ":watchdel" deletes an item, - ":watchlist" lists the items. (Charles Campbell) -7 Store the history from debug mode in viminfo. -7 Make the debug mode history available with histget() et al. - - -Various improvements: -8 ":sign unplace * file={filename}" should work. Also: ":sign unplace * - buffer={bufnr}". So one can remove all signs for one file/buffer. -7 Add plugins for formatting? Should be able to make a choice depending on - the language of a file (English/Korean/Japanese/etc.). - Setting the 'langformat' option to "chinese" would load the - "format/chinese.vim" plugin. - The plugin would set 'formatexpr' and define the function being called. - Edward L. Fox explains how it should be done for most Asian languages. - (2005 Nov 24) - Alternative: patch for utf-8 line breaking. (Yongwei Wu, 2008 Feb 23) -7 [t to move to previous xml/html tag (like "vatov"), ]t to move to next - ("vatv"). -7 [< to move to previous xml/html tag, e.g., previous <li>. ]< to move to - next <li>, ]< to next </li>, [< to previous </li>. -8 Add ":rename" command: rename the file of the current buffer and rename - the buffer. Buffer may be modified. -7 Instead of filtering errors with a shell script it should be possible to - do this with Vim script. A function that filters the raw text that comes - from the 'makeprg'? -- Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh - Govindachar) -7 Add a command that goes back to the position from before jumping to the - first quickfix location. ":cbefore"? -7 Allow a window not to have a statusline. Makes it possible to use a - window as a buffer-tab selection. -8 Allow non-active windows to have a different statusline. (Yakov Lerner) -6 Python interface: add vim.message() function. (Michal Vitecek, 2002 Nov 5) -7 Support using ":vert" with User commands. Add expandable items <vert>. - Do the same for ":browse" and ":confirm"? - For ":silent" and ":debug" apply to the whole user command. - More general: need a way to access command modifiers in a user command. - Assign them to a v: variable? -7 Add an invisible buffer which can be edited. For use in scripts that want - to manipulate text without changing the window layout. -8 Add a command to revert to the saved version of file; undo or redo until - all changes are gone. -6 "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri) -8 Add "--remote-fail": When contacting the server fails, exit Vim. - Add "--remote-self": When contacting the server fails, do it in this Vim. - Overrules the default of "--remote-send" to fail and "--remote" to do it - in this Vim. -8 When Vim was started without a server, make it possible to start one, as - if the "--servername" argument was given. ":startserver <name>"? -8 No address range can be used before the command modifiers. This makes - them difficult to use in a menu for Visual mode. Accept the range and - have it apply to the following command. -8 Add the possibility to set 'fileformats' to force a format and strip other - CR characters. For example, for "dos" files remove CR characters at the - end of the line, so that a file with mixed line endings is cleaned up. - To just not display the CR characters: Add a flag to 'display'? -7 Some compilers give error messages in which the file name does not have a - path. Be able to specify that 'path' is used for these files. -7 Xterm sends <Esc>O3F for <M-End>. Similarly for other <M-Home>, <M-Left>, - etc. Combinations of Alt, Ctrl and Shift are also possible. Recognize - these to avoid inserting the raw byte sequence, handle like the key - without modifier (unless mapped). -6 Add "gG": like what "gj" is to "j": go to the N'th window line. -8 Add command like ":normal" that accepts <Key> notation like ":map". -9 Support ACLs on more systems. -7 Add ModeMsgVisual, ModeMsgInsert, etc. so that each mode message can be - highlighted differently. -7 Add a message area for the user. Set some option to reserve space (above - the command line?). Use an ":echouser" command to display the message - (truncated to fit in the space). -7 Add %s to 'keywordprg': replace with word under the cursor. (Zellner) -8 Support printing on Unix. Can use "lpansi.c" as an example. (Bookout) -8 Add put command that replaces the text under it. Esp. for blockwise - Visual mode. -7 Enhance termresponse stuff: Add t_CV(?): pattern of term response, use - regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV. -7 Add "g|" command: move to N'th column from the left margin (after wrapping - and applying 'leftcol'). Works as "|" like what "g0" is to "0". -7 Support setting 'equalprg' to a user function name. -7 Highlight the characters after the end-of-line differently. -7 When 'whichwrap' contains "l", "$dl" should join lines? -8 Add an argument to configure to use $CFLAGS and not modify it? (Mooney) -8 Enabling features is a mix of configure arguments and defines in - feature.h. How to make this consistent? Feature.h is required for - non-unix systems. Perhaps let configure define CONF_XXX, and use #ifdef - CONF_XXX in feature.h? Then what should min-features and max-features do? -8 Add "g^E" and "g^Y", to scroll a screen-full line up and down. -6 Add ":timer" command, to set a command to be executed at a certain - interval, or once after some time has elapsed. (Aaron) - Perhaps an autocommand event like CursorHold is better? -8 Add ":confirm" handling in open_exfile(), for when file already exists. -8 When quitting with changed files, make the dialog list the changed file - and allow "write all", "discard all", "write some". The last one would - then ask "write" or "discard" for each changed file. Patch in HierAssist - does something like this. (Shah) -7 Use growarray for replace stack. -7 Have a look at viH (Hellenic or Greek version of Vim). But a solution - outside of Vim might be satisfactory (Haritsis). -3 Make "2d%" work like "d%d%" instead of "d2%"? -7 "g CTRL-O" jumps back to last used buffer. Skip CTRL-O jumps in the same - buffer. Make jumplist remember the last ten accessed buffers? -- Add code to disable the CAPS key when going from Insert to Normal mode. -- Set date/protection/etc. of the patchfile the same as the original file. -- Use growarray for termcodes[] in term.c -- Add <window-99>, like <cword> but use filename of 99'th window. -7 Add a way to change an operator to always work characterwise-inclusive - (like "v" makes the operator characterwise-exclusive). "x" could be used. -- Make a set of operations on list of names: expand wildcards, replace home - dir, append a string, delete a string, etc. -- Remove mktemp() and use tmpname() only? Ctags does this. -- When replacing environment variables, and there is one that is not set, - turn it into an empty string? Only when expanding options? (Hiebert) -- Option to set command to be executed instead of producing a beep (e.g. to - call "play newbeep.au"). -- Add option to show the current function name in the status line. More or - less what you find with "[[k", like how 'cindent' recognizes a function. - (Bhatt). -- "[r" and "]r": like "p" and "P", but replace instead of insert (esp. for - blockwise registers). -- Add 'timecheck' option, on by default. Makes it possible to switch off the - timestamp warning and question. (Dodt). -- Add an option to set the time after which Vim should check the timestamps - of the files. Only check when an event occurs (e.g., character typed, - mouse moved). Useful for non-GUI versions where keyboard focus isn't - noticeable. -- Make 'smartcase' work even though 'ic' isn't set (Webb). -7 When formatting text, allow to break the line at a number of characters. - Use an option for this: 'breakchars'? Useful for formatting Fortran code. -- Add flag to 'formatoptions' to be able to format book-style paragraphs - (first line of paragraph has larger indent, no empty lines between - paragraphs). Complements the '2' flag. Use '>' flag when larger indent - starts a new paragraph, use '<' flag when smaller indent starts a new - paragraph. Both start a new paragraph on any indent change. -8 The 'a' flag in 'formatoptions' is too dangerous. In some way only do - auto-formatting in specific regions, e.g. defined by syntax highlighting. -8 Allow using a trailing space to signal a paragraph that continues on the - next line (MIME text/plain; format=flowed, RFC 2646). Can be used for - continuous formatting. Could use 'autoformat' option, which specifies a - regexp which triggers auto-formatting (for one line). - ":set autoformat=\\s$". -- Be able to redefine where a sentence stops. Use a regexp pattern? -- Support multi-byte characters for sentences. Example from Ben Peterson. -7 Add command "g)" to go to the end of a sentence, "g(" to go back to the - end of a sentence. (Servatius Brandt) -- Be able to redefine where a paragraph starts. For "[[" where the '{' is - not in column 1. -6 Add ":cdprev": go back to the previous directory. Need to remember a - stack of previous directories. We also need ":cdnext". -7 Should ":cd" for MS-DOS go to $HOME, when it's defined? -- Make "gq<CR>" work on the last line in the file. Maybe for every operator? -- Add more redirecting of Ex commands: - :redir #> bufname - :redir #>> bufname (append) -- Give error message when starting :redir: twice or using END when no - redirection was active. -- Setting of options, specifically for a buffer or window, with - ":set window.option" or ":set buffer.option=val". Or use ":buffer.set". - Also: "buffer.map <F1> quit". -6 Would it be possible to change the color of the cursor in the Win32 - console? (Klaus Hast) -- Add :delcr command: - *:delcr* - :[range]delcr[!] Check [range] lines (default: whole buffer) for lines - ending in <CR>. If all lines end in <CR>, or [!] is - used, remove the <CR> at the end of lines in [range]. - A CTRL-Z at the end of the file is removed. If - [range] is omitted, or it is the whole file, and all - lines end in <CR> 'textmode' is set. {not in Vi} -- Should integrate addstar() and file_pat_to_reg_pat(). -- When working over a serial line with 7 bit characters, remove meta - characters from 'isprint'. -- Use fchdir() in init_homedir(), like in FullName(). -- In win_update(), when the GUI is active, always use the scrolling area. - Avoid that the last status line is deleted and needs to be redrawn. -- That "cTx" fails when the cursor is just after 'x' is Vi compatible, but - may not be what you expect. Add a flag in 'cpoptions' for this? More - general: Add an option to allow "c" to work with a null motion. -- Give better error messages by using errno (strerror()). -- Give "Usage:" error message when command used with wrong arguments (like - Nvi). -- Make 'restorescreen' option also work for xterm (and others), replaces the - SAVE_XTERM_SCREEN define. -7 Support for ":winpos" In xterm: report the current window position. -- Give warning message when using ":set t_xx=asdf" for a termcap code that - Vim doesn't know about. Add flag in 'shortmess'? -6 Add ":che <file>", list all the include paths which lead to this file. -- For a commandline that has several commands (:s, :d, etc.) summarize the - changes all together instead of for each command (e.g. for the rot13 - macro). -- Add command like "[I" that also shows the tree of included files. -- ":set sm^L" results in ":set s", because short names of options are also - expanded. Is there a better way to do this? -- Add ":@!" command, to ":@" like what ":source!" is to ":source". -8 Add ":@:!": repeat last command with forceit set. -- Should be possible to write to a device, e.g. ":w! /dev/null". -- Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty. -- ":cab map test ^V| je", ":cunab map" doesn't work. This is vi compatible! -- CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down - if it is not the first or last window. -- Include-file-search commands should look in the loaded buffer of a file (if - there is one) instead of the file itself. -7 Change 'nrformats' to include the leader for each format. Example: - nrformats=hex:$,binary:b,octal:0 - Add setting of 'nrformats' to syntax files. -- 'path' can become very long, don't use NameBuff for expansion. -- When unhiding a hidden buffer, put the same line at top of the window as - the one before hiding it. Or: keep the same relative cursor position (so - many percent down the windows). -- Make it possible for the 'showbreak' to be displayed at the end of the - line. Use a comma to separate the part at the end and the start of the - line? Highlight the linebreak characters, add flag in 'highlight'. -- Some string options should be expanded if they have wildcards, e.g. - 'dictionary' when it is "*.h". -- Use a specific type for number and boolean options, making it possible to - change it for specific machines (e.g. when a long is 64 bit). -- Add option for <Insert> in replace mode going to normal mode. (Nugent) -- Add a next/previous possibility to "[^I" and friends. -- Add possibility to change the HOME directory. Use the directory from the - passwd file? (Antwerpen) -8 Add commands to push and pop all or individual options. ":setpush tw", - ":setpop tw", ":setpush all". Maybe pushing/popping all options is - sufficient. ":setflush" resets the option stack? - How to handle an aborted mapping? Remember position in tag stack when - mapping starts, restore it when an error aborts the mapping? -- Change ":fixdel" into option 'fixdel', t_del will be adjusted each time - t_bs is set? (Webb) -- "gc": goto character, move absolute character positions forward, also - counting newlines. "gC" goes backwards (Weigert). -- When doing CTRL-^, redraw buffer with the same topline. (Demirel) Store - cursor row and window height to redraw cursor at same percentage of window - (Webb). -- Besides remembering the last used line number of a file, also remember the - column. Use it with CTRL-^ et. al. -- Check for non-digits when setting a number option (careful when entering - hex codes like 0xff). -- Add option to make "." redo the "@r" command, instead of the last command - executed by it. Also to make "." redo the whole mapping. Basically: redo - the last TYPED command. -- Support URL links for ^X^F in Insert mode, like for "gf". -- Support %name% expansion for "gf" on Windows. -- Make "gf" work on "file://c:/path/name". "file:/c:/" and "file:///c:/" - should also work? -- Add 'urlpath', used like 'path' for when "gf" used on an URL? -8 When using "gf" on an absolute file name, while editing a remote file - (starts with scp:// or http://) should prepend the method and machine - name. -- When finding an URL or file name, and it doesn't exist, try removing a - trailing '.'. -- Add ":path" command modifier. Should work for every command that takes a - file name argument, to search for the file name in 'path'. Use - find_file_in_path(). -- Highlight control characters on the screen: Shows the difference between - CTRL-X and "^" followed by "X" (Colon). -- Integrate parsing of cmdline command and parsing for expansion. -- Create a program that can translate a .swp file from any machine into a - form usable by Vim on the current machine. -- Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have - a readonly file. ":noro!" will reset all 'ro' flags. -- Add a variant of CTRL-V that stops interpretation of more than one - character. For entering mappings on the command line where a key contains - several special characters, e.g. a trailing newline. -- Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine - the two into a regex for searching. (Ned Konz) -- Make '2' option in 'formatoptions' also work inside comments. -- Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt) -- When window size changed (with the mouse) and made too small, set it back - to the minimal size. -- Add "]>" and "[<", shift comment at end of line (command; /* comment */). -- Should not call cursorcmd() for each vgetc() in getcmdline(). -- ":split file1 file2" adds two more windows (Webb). -- Don't give message "Incomplete last line" when editing binary file. -- Add ":a", ":i" for preloading of named buffers. -- Allow autowrite when doing ":e file" (with an option 'eaw'). -- Allow a "+command" argument before each file name in the Vim command line: - "vim +123 file1 +234 file2 +345 file3". ??? -- When entering text, keep other windows on same buffer updated (when a line - entered)? -- Check out how screen does output optimizing. Apparently this is possible - as an output filter. -- In dosub() regexec is called twice for the same line. Try to avoid this. -- Window updating from memline.c: insert/delete/replace line. -- Optimize ml_append() for speed, esp. for reading a file. -- V..c should keep indent when 'ai' is set, just like [count]cc. -- Updatescript() can be done faster with a string instead of a char. -- Screen updating is inefficient with CTRL-F and CTRL-B when there are long - lines. -- Uppercase characters in Ex commands can be made lowercase? -8 Add option to show characters in text not as "|A" but as decimal ("^129"), - hex ("\x81") or octal ("\201") or meta (M-x). Nvi has the 'octal' option - to switch from hex to octal. Vile can show unprintable characters in hex - or in octal. -7 Tighter integration with xxd to edit binary files. Make it more - easy/obvious to use. Command line argument? -- How does vi detect whether a filter has messed up the screen? Check source. - After ":w !command" a wait_return? -- Improve screen updating code for doput() (use s_ins()). -- With 'p' command on last line: scroll screen up (also for terminals without - insert line command). -- Use insert/delete char when terminal supports it. -- Optimize screen redraw for slow terminals. -- Optimize "dw" for long row of spaces (say, 30000). -- Add "-d null" for editing from a script file without displaying. -- In Insert mode: Remember the characters that were removed with backspace - and re-insert them one at a time with <key1>, all together with <key2>. -- Amiga: Add possibility to set a keymap. The code in amiga.c does not work - yet. -- Implement 'redraw' option. -- Add special code to 'sections' option to define something else but '{' or - '}' as the start of a section (e.g. one shiftwidth to the right). -7 Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy". Only needs - implementing ":w" to stdout in the buffer that was read from stdin. - Perhaps writing to stdout will work, since stderr is used for the terminal - I/O. -8 Allow opening an unnamed buffer with ":e !cmd" and ":sp !cmd". Vile can - do it. -- Add commands like ]] and [[ that do not include the line jumped to. -- When :unab without matching "from" part and several matching "to" parts, - delete the entry that was used last, instead of the first in the list. -- Add text justification option. -- Set boolean options on/off with ":set paste=off", ":set paste=on". -- After "inv"ing an option show the value: ":set invpaste" gives "paste is - off". -- Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR. -- When a file cannot be opened but does exist, give error message. -- Amiga: When 'r' protection bit is not set, file can still be opened but - gives read errors. Check protection before opening. -- When writing check for file exists but no permission, "Permission denied". -- If file does not exist, check if directory exists. -- MSDOS: although t_cv and t_ci are not set, do invert char under cursor. -- Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex - commands. -- ":set -w all": list one option per line. -- Amiga: test for 'w' flag when reading a file. -- :table command (Webb) -- Add new operator: clear, make area white (replace with spaces): "g ". -- Add command to ":read" a file at a certain column (blockwise read?). -- Add sort of replace mode where case is taken from the old text (Goldfarb). -- Allow multiple arguments for ":read", read all the files. -- Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel). -- Add 'searchdir' option: Directories to search for file name being edited - (Demirel). -- Modifier for the put command: Change to linewise, charwise, blockwise, etc. -- Add commands for saving and restoring options ":set save" "set restore", - for use in macro's and the like. -- Keep output from listings in a window, so you can have a look at it while - working in another window. Put cmdline in a separate window? -- Add possibility to put output of Ex commands in a buffer or file, e.g. for - ":set all". ":r :set all"? -- 'edit' option: When off changing the buffer is not possible (Really - read-only mode). -- When the 'equalalways' option is set, creating a new window should not - result in windows to become bigger. Deleting a window should not result in - a window to become smaller (Webb). -- When resizing the whole Vim window, the windows inside should be resized - proportionally (Webb). -- Include options directly in option table, no indirect pointers. Use - mkopttab to make option table? -- When doing ":w dir", where "dir" is a directory name, write the current - file into that directory, with the current file name (without the path)? -- Support for 'dictionary's that are sorted, makes access a lot faster - (Haritsis). -- Add "^Vrx" on the command line, replace with contents of register x. Used - instead of CTRL-R to make repeating possible. (Marinichev) -- Add "^Vb" on the command line, replace with word before or under the - cursor? -- Option to make a .swp file only when a change is made (Templeton). -- Support mapping for replace mode and "r" command (Vi doesn't do this)? -5 Add 'ignorefilecase' option: Ignore case when expanding file names. - ":e ma<Tab>" would also find "Makefile" on Unix. -8 Sorting of filenames for completion is wrong on systems that ignore - case of filenames. Add 'ignorefncase' option. When set, case in - filenames is ignored for sorting them. Patch by Mike Williams: - ~/vim/patches/ignorefncase. Also change what matches? Or use another - option name. -8 Should be able to compile Vim in another directory, with $(srcdir) set to - where the sources are. Add $(srcdir) in the Makefile in a lot of places. - (Netherton) -6 Make it configurable when "J" inserts a space or not. Should not add a - space after "(", for example. -5 When inserting spaces after the end-of-line for 'virtualedit', use tabs - when the user wants this (e.g., add a "tab" field to 'virtualedit'). - (Servatius Brandt) - - -From Elvis: -- Use "instman.sh" to install manpages? -- Add ":alias" command. -- Search patterns: - \@ match word under cursor. - but do: - \@w match the word under the cursor? - \@W match the WORD under the cursor? -8 ":window" command: - :win + next window (up) - :win ++ idem, wrapping - :win - previous window (down) - :win -- idem, wrapping - :win nr to window number "nr" - :win name to window editing buffer "name" -7 ":cc" compiles a single file (default: current one). 'ccprg' option is - program to use with ":cc". Use ":compile" instead of ":cc"? - - -From xvi: -- CTRL-_ : swap 8th bit of character. -- Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet) - - -From vile: -- When horizontal scrolling, use '>' for lines continuing right of a window. -- Support putting .swp files in /tmp: Command in rc.local to move .swp files - from /tmp to some directory before deleting files. - - -Far future and "big" extensions: -- Instead of using a Makefile and autoconf, use a simple shell script to - find the C compiler and do everything with C code. Translate something - like an Aap recipe and configure.in to C. Avoids depending on Python, - thus will work everywhere. With batch file to find the C compiler it - would also work on MS-Windows. -- Make it easy to setup Vim for groups of users: novice vi users, novice - Vim users, C programmers, xterm users, GUI users,... -- Change layout of blocks in swap file: Text at the start, with '\n' in - between lines (just load the file without changes, except for Mac). - Indexes for lines are from the end of the block backwards. It's the - current layout mirrored. -- Make it possible to edit a register, in a window, like a buffer. -- Add stuff to syntax highlighting to change the text (upper-case keywords, - set indent, define other highlighting, etc.). -- Mode to keep C-code formatted all the time (sort of on-line indent). -- Several top-level windows in one Vim session. Be able to use a different - font in each top-level window. -- Allow editing above start and below end of buffer (flag in 'virtualedit'). -- Smart cut/paste: recognize words and adjust spaces before/after them. -- Add open mode, use it when terminal has no cursor positioning. -- Special "drawing mode": a line is drawn where the cursor is moved to. - Backspace deletes along the line (from jvim). -- Implement ":Bset", set option in all buffers. Also ":Wset", set in all - windows, ":Aset, set in all arguments and ":Tset", set in all files - mentioned in the tags file. - Add buffer/arg range, like in ":2,5B%s/..." (do we really need this???) - Add search string: "B/*.c/%s/.."? Or ":F/*.c/%s/.."? -- Support for underlining (underscore-BS-char), bold (char-BS-char) and other - standout modes switched on/off with , 'overstrike' option (Reiter). -- Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five - lines, "3vitextESC" will insert "text" in three lines, etc.. -4 Recognize l, #, p as 'flags' to EX commands: - :g/RE/#l shall print lines with line numbers and in list format. - :g/RE/dp shall print lines that are deleted. - POSIX: Commands where flags shall apply to all lines written: list, - number, open, print, substitute, visual, &, z. For other commands, flags - shall apply to the current line after the command completes. Examples: - :7,10j #l Join the lines 7-10 and print the result in list -- Allow two or more users to edit the same file at the same time. Changes - are reflected in each Vim immediately. Could work with local files but - also over the internet. See http://www.codingmonkeys.de/subethaedit/. - -When using "do" or ":diffget" in a buffer with changes in every line an extra -empty line would appear. - -vim:tw=78:sw=4:sts=4:ts=8:ft=help:norl: -vim: set fo+=n : diff --git a/share/vim/vim73/doc/uganda.txt b/share/vim/vim73/doc/uganda.txt deleted file mode 100644 index 3f23f1dc..00000000 --- a/share/vim/vim73/doc/uganda.txt +++ /dev/null @@ -1,288 +0,0 @@ -*uganda.txt* For Vim version 7.3. Last change: 2010 Aug 07 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - - *uganda* *Uganda* *copying* *copyright* *license* -SUMMARY - *iccf* *ICCF* -Vim is Charityware. You can use and copy it as much as you like, but you are -encouraged to make a donation for needy children in Uganda. Please see |kcc| -below or visit the ICCF web site, available at these URLs: - - http://iccf-holland.org/ - http://www.vim.org/iccf/ - http://www.iccf.nl/ - -You can also sponsor the development of Vim. Vim sponsors can vote for -features. See |sponsor|. The money goes to Uganda anyway. - -The Open Publication License applies to the Vim documentation, see -|manual-copyright|. - -=== begin of license === - -VIM LICENSE - -I) There are no restrictions on distributing unmodified copies of Vim except - that they must include this license text. You can also distribute - unmodified parts of Vim, likewise unrestricted except that they must - include this license text. You are also allowed to include executables - that you made from the unmodified Vim sources, plus your own usage - examples and Vim scripts. - -II) It is allowed to distribute a modified (or extended) version of Vim, - including executables and/or source code, when the following four - conditions are met: - 1) This license text must be included unmodified. - 2) The modified Vim must be distributed in one of the following five ways: - a) If you make changes to Vim yourself, you must clearly describe in - the distribution how to contact you. When the maintainer asks you - (in any way) for a copy of the modified Vim you distributed, you - must make your changes, including source code, available to the - maintainer without fee. The maintainer reserves the right to - include your changes in the official version of Vim. What the - maintainer will do with your changes and under what license they - will be distributed is negotiable. If there has been no negotiation - then this license, or a later version, also applies to your changes. - The current maintainer is Bram Moolenaar <Bram@vim.org>. If this - changes it will be announced in appropriate places (most likely - vim.sf.net, www.vim.org and/or comp.editors). When it is completely - impossible to contact the maintainer, the obligation to send him - your changes ceases. Once the maintainer has confirmed that he has - received your changes they will not have to be sent again. - b) If you have received a modified Vim that was distributed as - mentioned under a) you are allowed to further distribute it - unmodified, as mentioned at I). If you make additional changes the - text under a) applies to those changes. - c) Provide all the changes, including source code, with every copy of - the modified Vim you distribute. This may be done in the form of a - context diff. You can choose what license to use for new code you - add. The changes and their license must not restrict others from - making their own changes to the official version of Vim. - d) When you have a modified Vim which includes changes as mentioned - under c), you can distribute it without the source code for the - changes if the following three conditions are met: - - The license that applies to the changes permits you to distribute - the changes to the Vim maintainer without fee or restriction, and - permits the Vim maintainer to include the changes in the official - version of Vim without fee or restriction. - - You keep the changes for at least three years after last - distributing the corresponding modified Vim. When the maintainer - or someone who you distributed the modified Vim to asks you (in - any way) for the changes within this period, you must make them - available to him. - - You clearly describe in the distribution how to contact you. This - contact information must remain valid for at least three years - after last distributing the corresponding modified Vim, or as long - as possible. - e) When the GNU General Public License (GPL) applies to the changes, - you can distribute the modified Vim under the GNU GPL version 2 or - any later version. - 3) A message must be added, at least in the output of the ":version" - command and in the intro screen, such that the user of the modified Vim - is able to see that it was modified. When distributing as mentioned - under 2)e) adding the message is only required for as far as this does - not conflict with the license used for the changes. - 4) The contact information as required under 2)a) and 2)d) must not be - removed or changed, except that the person himself can make - corrections. - -III) If you distribute a modified version of Vim, you are encouraged to use - the Vim license for your changes and make them available to the - maintainer, including the source code. The preferred way to do this is - by e-mail or by uploading the files to a server and e-mailing the URL. - If the number of changes is small (e.g., a modified Makefile) e-mailing a - context diff will do. The e-mail address to be used is - <maintainer@vim.org> - -IV) It is not allowed to remove this license from the distribution of the Vim - sources, parts of it or from a modified version. You may use this - license for previous Vim releases instead of the license that they came - with, at your option. - -=== end of license === - -Note: - -- If you are happy with Vim, please express that by reading the rest of this - file and consider helping needy children in Uganda. - -- If you want to support further Vim development consider becoming a - |sponsor|. The money goes to Uganda anyway. - -- According to Richard Stallman the Vim license is GNU GPL compatible. - A few minor changes have been made since he checked it, but that should not - make a difference. - -- If you link Vim with a library that goes under the GNU GPL, this limits - further distribution to the GNU GPL. Also when you didn't actually change - anything in Vim. - -- Once a change is included that goes under the GNU GPL, this forces all - further changes to also be made under the GNU GPL or a compatible license. - -- If you distribute a modified version of Vim, you can include your name and - contact information with the "--with-modified-by" configure argument or the - MODIFIED_BY define. - -============================================================================== -Kibaale Children's Centre *kcc* *Kibaale* *charity* - -Kibaale Children's Centre (KCC) is located in Kibaale, a small town in the -south of Uganda, near Tanzania, in East Africa. The area is known as Rakai -District. The population is mostly farmers. Although people are poor, there -is enough food. But this district is suffering from AIDS more than any other -part of the world. Some say that it started there. Estimations are that 10 -to 30% of the Ugandans are infected with HIV. Because parents die, there are -many orphans. In this district about 60,000 children have lost one or both -parents, out of a population of 350,000. And this is still continuing. - -The children need a lot of help. The KCC is working hard to provide the needy -with food, medical care and education. Food and medical care to keep them -healthy now, and education so that they can take care of themselves in the -future. KCC works on a Christian base, but help is given to children of any -religion. - -The key to solving the problems in this area is education. This has been -neglected in the past years with president Idi Amin and the following civil -wars. Now that the government is stable again, the children and parents have -to learn how to take care of themselves and how to avoid infections. There is -also help for people who are ill and hungry, but the primary goal is to -prevent people from getting ill and to teach them how to grow healthy food. - -Most of the orphans are living in an extended family. An uncle or older -sister is taking care of them. Because these families are big and the income -(if any) is low, a child is lucky if it gets healthy food. Clothes, medical -care and schooling is beyond its reach. To help these needy children, a -sponsorship program was put into place. A child can be financially adopted. -For a few dollars a month KCC sees to it that the child gets indispensable -items, is healthy, goes to school and KCC takes care of anything else that -needs to be done for the child and the family that supports it. - -Besides helping the child directly, the environment where the child grows up -needs to be improved. KCC helps schools to improve their teaching methods. -There is a demonstration school at the centre and teacher trainings are given. -Health workers are being trained, hygiene education is carried out and -households are stimulated to build a proper latrine. I helped setting up a -production site for cement slabs. These are used to build a good latrine. -They are sold below cost price. - -There is a small clinic at the project, which provides children and their -family with medical help. When needed, transport to a hospital is offered. -Immunization programs are carried out and help is provided when an epidemic is -breaking out (measles and cholera have been a problem). - *donate* -Summer 1994 to summer 1995 I spent a whole year at the centre, working as a -volunteer. I have helped to expand the centre and worked in the area of water -and sanitation. I learned that the help that the KCC provides really helps. -When I came back to Holland, I wanted to continue supporting KCC. To do this -I'm raising funds and organizing the sponsorship program. Please consider one -of these possibilities: - -1. Sponsor a child in primary school: 17 euro a month (or more). -2. Sponsor a child in secondary school: 25 euro a month (or more). -3. Sponsor the clinic: Any amount a month or quarter -4. A one-time donation - -Compared with other organizations that do child sponsorship the amounts are -very low. This is because the money goes directly to the centre. Less than -5% is used for administration. This is possible because this is a small -organization that works with volunteers. If you would like to sponsor a -child, you should have the intention to do this for at least one year. - -How do you know that the money will be spent right? First of all you have my -personal guarantee as the author of Vim. I trust the people that are working -at the centre, I know them personally. Further more, the centre has been -co-sponsored and inspected by World Vision, Save the Children Fund and is now -under the supervision of Pacific Academy Outreach Society. The centre is -visited about once a year to check the progress (at our own cost). I have -visited the centre myself many times, starting in 1993. The visit reports are -on the ICCF web site. - -If you have any further questions, send me e-mail: <Bram@vim.org>. - -The address of the centre is: - Kibaale Children's Centre - p.o. box 1658 - Masaka, Uganda, East Africa - -Sending money: *iccf-donations* - -Check the ICCF web site for the latest information! See |iccf| for the URL. - - -USA: The methods mentioned below can be used. - Sending a check to the Nehemiah Group Outreach Society (NGOS) - is no longer possible, unfortunately. We are looking for - another way to get you an IRS tax receipt. - For sponsoring a child contact KCF in Canada (see below). US - checks can be sent to them to lower banking costs. - -Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They - take care of the Canadian sponsors for the children in - Kibaale. KCF forwards 100% of the money to the project in - Uganda. You can send them a one time donation directly. - Please send me a note so that I know what has been donated - because of Vim. Ask KCF for information about sponsorship. - Kibaale Children's Fund c/o Pacific Academy - 10238-168 Street - Surrey, B.C. V4N 1Z4 - Canada - Phone: 604-581-5353 - If you make a donation to Kibaale Children's Fund (KCF) you - will receive a tax receipt which can be submitted with your - tax return. - -Holland: Transfer to the account of "Stichting ICCF Holland" in Lisse. - This will allow for tax deduction if you live in Holland. - Postbank, nr. 4548774 - -Germany: It is possible to make donations that allow for a tax return. - Check the ICCF web site for the latest information: - http://iccf-holland.org/germany.html - -World: Use a postal money order. That should be possible from any - country, mostly from the post office. Use this name (which is - in my passport): "Abraham Moolenaar". Use Euro for the - currency if possible. - -Europe: Use a bank transfer if possible. Your bank should have a form - that you can use for this. See "Others" below for the swift - code and IBAN number. - Any other method should work. Ask for information about - sponsorship. - -Credit Card: You can use PayPal to send money with a Credit card. This is - the most widely used Internet based payment system. It's - really simple to use. Use this link to find more info: - https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q - The e-mail address for sending the money to is: - Bram@iccf-holland.org - For amounts above 400 Euro ($500) sending a check is - preferred. - -Others: Transfer to one of these accounts if possible: - Postbank, account 4548774 - Swift code: INGB NL 2A - IBAN: NL47 PSTB 0004 5487 74 - under the name "stichting ICCF Holland", Lisse - If that doesn't work: - Rabobank Lisse, account 3765.05.117 - Swift code: RABO NL 2U - under the name "Bram Moolenaar", Lisse - Otherwise, send a check in euro or US dollars to the address - below. Minimal amount: $70 (my bank does not accept smaller - amounts for foreign check, sorry) - -Address to send checks to: - stichting ICCF Holland - Bram Moolenaar - Finsterruetihof 1 - 8134 Adliswil - Switzerland - -This address is expected to be valid for a long time. - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/undo.txt b/share/vim/vim73/doc/undo.txt deleted file mode 100644 index 3c47db7f..00000000 --- a/share/vim/vim73/doc/undo.txt +++ /dev/null @@ -1,386 +0,0 @@ -*undo.txt* For Vim version 7.3. Last change: 2010 Jul 20 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Undo and redo *undo-redo* - -The basics are explained in section |02.5| of the user manual. - -1. Undo and redo commands |undo-commands| -2. Two ways of undo |undo-two-ways| -3. Undo blocks |undo-blocks| -4. Undo branches |undo-branches| -5. Undo persistence |undo-persistence| -6. Remarks about undo |undo-remarks| - -============================================================================== -1. Undo and redo commands *undo-commands* - -<Undo> or *undo* *<Undo>* *u* -u Undo [count] changes. {Vi: only one level} - - *:u* *:un* *:undo* -:u[ndo] Undo one change. {Vi: only one level} - *E830* -:u[ndo] {N} Jump to after change number {N}. See |undo-branches| - for the meaning of {N}. {not in Vi} - - *CTRL-R* -CTRL-R Redo [count] changes which were undone. {Vi: redraw - screen} - - *:red* *:redo* *redo* -:red[o] Redo one change which was undone. {Vi: no redo} - - *U* -U Undo all latest changes on one line. {Vi: while not - moved off of it} - -The last changes are remembered. You can use the undo and redo commands above -to revert the text to how it was before each change. You can also apply the -changes again, getting back the text before the undo. - -The "U" command is treated by undo/redo just like any other command. Thus a -"u" command undoes a "U" command and a 'CTRL-R' command redoes it again. When -mixing "U", "u" and 'CTRL-R' you will notice that the "U" command will -restore the situation of a line to before the previous "U" command. This may -be confusing. Try it out to get used to it. -The "U" command will always mark the buffer as changed. When "U" changes the -buffer back to how it was without changes, it is still considered changed. -Use "u" to undo changes until the buffer becomes unchanged. - -============================================================================== -2. Two ways of undo *undo-two-ways* - -How undo and redo commands work depends on the 'u' flag in 'cpoptions'. -There is the Vim way ('u' excluded) and the vi-compatible way ('u' included). -In the Vim way, "uu" undoes two changes. In the Vi-compatible way, "uu" does -nothing (undoes an undo). - -'u' excluded, the Vim way: -You can go back in time with the undo command. You can then go forward again -with the redo command. If you make a new change after the undo command, -the redo will not be possible anymore. - -'u' included, the Vi-compatible way: -The undo command undoes the previous change, and also the previous undo command. -The redo command repeats the previous undo command. It does NOT repeat a -change command, use "." for that. - -Examples Vim way Vi-compatible way ~ -"uu" two times undo no-op -"u CTRL-R" no-op two times undo - -Rationale: Nvi uses the "." command instead of CTRL-R. Unfortunately, this - is not Vi compatible. For example "dwdwu." in Vi deletes two - words, in Nvi it does nothing. - -============================================================================== -3. Undo blocks *undo-blocks* - -One undo command normally undoes a typed command, no matter how many changes -that command makes. This sequence of undo-able changes forms an undo block. -Thus if the typed key(s) call a function, all the commands in the function are -undone together. - -If you want to write a function or script that doesn't create a new undoable -change but joins in with the previous change use this command: - - *:undoj* *:undojoin* *E790* -:undoj[oin] Join further changes with the previous undo block. - Warning: Use with care, it may prevent the user from - properly undoing changes. Don't use this after undo - or redo. - {not in Vi} - -This is most useful when you need to prompt the user halfway a change. For -example in a function that calls |getchar()|. Do make sure that there was a -related change before this that you must join with. - -This doesn't work by itself, because the next key press will start a new -change again. But you can do something like this: > - - :undojoin | delete - -After this an "u" command will undo the delete command and the previous -change. - -To do the opposite, break a change into two undo blocks, in Insert mode use -CTRL-G u. This is useful if you want an insert command to be undoable in -parts. E.g., for each sentence. |i_CTRL-G_u| -Setting the value of 'undolevels' also breaks undo. Even when the new value -is equal to the old value. - -============================================================================== -4. Undo branches *undo-branches* *undo-tree* - -Above we only discussed one line of undo/redo. But it is also possible to -branch off. This happens when you undo a few changes and then make a new -change. The undone changes become a branch. You can go to that branch with -the following commands. - -This is explained in the user manual: |usr_32.txt|. - - *:undol* *:undolist* -:undol[ist] List the leafs in the tree of changes. Example: - number changes time ~ - 4 10 10:34:11 - 18 4 11:01:46 - - The "number" column is the change number. This number - continuously increases and can be used to identify a - specific undo-able change, see |:undo|. - The "changes" column is the number of changes to this - leaf from the root of the tree. - The "time" column is the time this change was made. - For more details use the |undotree()| function. - - *g-* -g- Go to older text state. With a count repeat that many - times. {not in Vi} - *:ea* *:earlier* -:earlier {count} Go to older text state {count} times. -:earlier {N}s Go to older text state about {N} seconds before. -:earlier {N}m Go to older text state about {N} minutes before. -:earlier {N}h Go to older text state about {N} hours before. -:earlier {N}d Go to older text state about {N} days before. - -:earlier {N}f Go to older text state {N} file writes before. - When changes were made since the laste write - ":earlier 1f" will revert the text to the state when - it was written. Otherwise it will go to the write - before that. - When at the state of the first file write, or when - the file was not written, ":earlier 1f" will go to - before the first change. - - *g+* -g+ Go to newer text state. With a count repeat that many - times. {not in Vi} - *:lat* *:later* -:later {count} Go to newer text state {count} times. -:later {N}s Go to newer text state about {N} seconds later. -:later {N}m Go to newer text state about {N} minutes later. -:later {N}h Go to newer text state about {N} hours later. -:later {N}d Go to newer text state about {N} days later. - -:later {N}f Go to newer text state {N} file writes later. - When at the state of the last file write, ":later 1f" - will go to the newest text state. - - -Note that text states will become unreachable when undo information is cleared -for 'undolevels'. - -Don't be surprised when moving through time shows multiple changes to take -place at a time. This happens when moving through the undo tree and then -making a new change. - -EXAMPLE - -Start with this text: - one two three ~ - -Delete the first word by pressing "x" three times: - ne two three ~ - e two three ~ - two three ~ - -Now undo that by pressing "u" three times: - e two three ~ - ne two three ~ - one two three ~ - -Delete the second word by pressing "x" three times: - one wo three ~ - one o three ~ - one three ~ - -Now undo that by using "g-" three times: - one o three ~ - one wo three ~ - two three ~ - -You are now back in the first undo branch, after deleting "one". Repeating -"g-" will now bring you back to the original text: - e two three ~ - ne two three ~ - one two three ~ - -Jump to the last change with ":later 1h": - one three ~ - -And back to the start again with ":earlier 1h": - one two three ~ - - -Note that using "u" and CTRL-R will not get you to all possible text states -while repeating "g-" and "g+" does. - -============================================================================== -5. Undo persistence *undo-persistence* *persistent-undo* - -When unloading a buffer Vim normally destroys the tree of undos created for -that buffer. By setting the 'undofile' option, Vim will automatically save -your undo history when you write a file and restore undo history when you edit -the file again. - -The 'undofile' option is checked after writing a file, before the BufWritePost -autocommands. If you want to control what files to write undo information -for, you can use a BufWritePre autocommand: > - au BufWritePre /tmp/* setlocal noundofile - -Vim saves undo trees in a separate undo file, one for each edited file, using -a simple scheme that maps filesystem paths directly to undo files. Vim will -detect if an undo file is no longer synchronized with the file it was written -for (with a hash of the file contents) and ignore it when the file was changed -after the undo file was written, to prevent corruption. - -Undo files are normally saved in the same directory as the file. This can be -changed with the 'undodir' option. - -When the file is encrypted, the text in the undo file is also crypted. The -same key and method is used. |encryption| - -You can also save and restore undo histories by using ":wundo" and ":rundo" -respectively: - *:wundo* *:rundo* -:wundo[!] {file} - Write undo history to {file}. - When {file} exists and it does not look like an undo file - (the magic number at the start of the file is wrong), then - this fails, unless the ! was added. - If it exists and does look like an undo file it is - overwritten. - {not in Vi} - -:rundo {file} Read undo history from {file}. - {not in Vi} - -You can use these in autocommands to explicitly specify the name of the -history file. E.g.: > - - au BufReadPost * call ReadUndo() - au BufWritePost * call WriteUndo() - func ReadUndo() - if filereadable(expand('%:h'). '/UNDO/' . expand('%:t')) - rundo %:h/UNDO/%:t - endif - endfunc - func WriteUndo() - let dirname = expand('%:h') . '/UNDO' - if !isdirectory(dirname) - call mkdir(dirname) - endif - wundo %:h/UNDO/%:t - endfunc - -You should keep 'undofile' off, otherwise you end up with two undo files for -every write. - -You can use the |undofile()| function to find out the file name that Vim would -use. - -Note that while reading/writing files and 'undofile' is set most errors will -be silent, unless 'verbose' is set. With :wundo and :rundo you will get more -error messages, e.g., when the file cannot be read or written. - -NOTE: undo files are never deleted by Vim. You need to delete them yourself. - -Reading an existing undo file may fail for several reasons: -*E822* It cannot be opened, because the file permissions don't allow it. -*E823* The magic number at the start of the file doesn't match. This usually - means it is not an undo file. -*E824* The version number of the undo file indicates that it's written by a - newer version of Vim. You need that newer version to open it. Don't - write the buffer if you want to keep the undo info in the file. -"File contents changed, cannot use undo info" - The file text differs from when the undo file was written. This means - the undo file cannot be used, it would corrupt the text. This also - happens when 'encoding' differs from when the undo file was written. -*E825* The undo file does not contain valid contents and cannot be used. -*E826* The undo file is encrypted but decryption failed. -*E827* The undo file is encrypted but this version of Vim does not support - encryption. Open the file with another Vim. -*E832* The undo file is encrypted but 'key' is not set, the text file is not - encrypted. This would happen if the text file was written by Vim - encrypted at first, and later overwritten by not encrypted text. - You probably want to delete this undo file. -"Not reading undo file, owner differs" - The undo file is owned by someone else than the owner of the text - file. For safety the undo file is not used. - -Writing an undo file may fail for these reasons: -*E828* The file to be written cannot be created. Perhaps you do not have - write permissions in the directory. -"Cannot write undo file in any directory in 'undodir'" - None of the directories in 'undodir' can be used. -"Will not overwrite with undo file, cannot read" - A file exists with the name of the undo file to be written, but it - cannot be read. You may want to delete this file or rename it. -"Will not overwrite, this is not an undo file" - A file exists with the name of the undo file to be written, but it - does not start with the right magic number. You may want to delete - this file or rename it. -"Skipping undo file write, noting to undo" - There is no undo information not be written, nothing has been changed - or 'undolevels' is negative. -*E829* An error occurred while writing the undo file. You may want to try - again. - -============================================================================== -6. Remarks about undo *undo-remarks* - -The number of changes that are remembered is set with the 'undolevels' option. -If it is zero, the Vi-compatible way is always used. If it is negative no -undo is possible. Use this if you are running out of memory. - - *clear-undo* -When you set 'undolevels' to -1 the undo information is not immediately -cleared, this happens at the next change. To force clearing the undo -information you can use these commands: > - :let old_undolevels = &undolevels - :set undolevels=-1 - :exe "normal a \<BS>\<Esc>" - :let &undolevels = old_undolevels - :unlet old_undolevels - -Marks for the buffer ('a to 'z) are also saved and restored, together with the -text. {Vi does this a little bit different} - -When all changes have been undone, the buffer is not considered to be changed. -It is then possible to exit Vim with ":q" instead of ":q!" {not in Vi}. Note -that this is relative to the last write of the file. Typing "u" after ":w" -actually changes the buffer, compared to what was written, so the buffer is -considered changed then. - -When manual |folding| is being used, the folds are not saved and restored. -Only changes completely within a fold will keep the fold as it was, because -the first and last line of the fold don't change. - -The numbered registers can also be used for undoing deletes. Each time you -delete text, it is put into register "1. The contents of register "1 are -shifted to "2, etc. The contents of register "9 are lost. You can now get -back the most recent deleted text with the put command: '"1P'. (also, if the -deleted text was the result of the last delete or copy operation, 'P' or 'p' -also works as this puts the contents of the unnamed register). You can get -back the text of three deletes ago with '"3P'. - - *redo-register* -If you want to get back more than one part of deleted text, you can use a -special feature of the repeat command ".". It will increase the number of the -register used. So if you first do ""1P", the following "." will result in a -'"2P'. Repeating this will result in all numbered registers being inserted. - -Example: If you deleted text with 'dd....' it can be restored with - '"1P....'. - -If you don't know in which register the deleted text is, you can use the -:display command. An alternative is to try the first register with '"1P', and -if it is not what you want do 'u.'. This will remove the contents of the -first put, and repeat the put command for the second register. Repeat the -'u.' until you got what you want. - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_01.txt b/share/vim/vim73/doc/usr_01.txt deleted file mode 100644 index da977233..00000000 --- a/share/vim/vim73/doc/usr_01.txt +++ /dev/null @@ -1,185 +0,0 @@ -*usr_01.txt* For Vim version 7.3. Last change: 2008 May 07 - - VIM USER MANUAL - by Bram Moolenaar - - About the manuals - - -This chapter introduces the manuals available with Vim. Read this to know the -conditions under which the commands are explained. - -|01.1| Two manuals -|01.2| Vim installed -|01.3| Using the Vim tutor -|01.4| Copyright - - Next chapter: |usr_02.txt| The first steps in Vim -Table of contents: |usr_toc.txt| - -============================================================================== -*01.1* Two manuals - -The Vim documentation consists of two parts: - -1. The User manual - Task oriented explanations, from simple to complex. Reads from start to - end like a book. - -2. The Reference manual - Precise description of how everything in Vim works. - -The notation used in these manuals is explained here: |notation| - - -JUMPING AROUND - -The text contains hyperlinks between the two parts, allowing you to quickly -jump between the description of an editing task and a precise explanation of -the commands and options used for it. Use these two commands: - - Press CTRL-] to jump to a subject under the cursor. - Press CTRL-O to jump back (repeat to go further back). - -Many links are in vertical bars, like this: |bars|. An option name, like -'number', a command in double quotes like ":write" and any other word can also -be used as a link. Try it out: Move the cursor to CTRL-] and press CTRL-] -on it. - -Other subjects can be found with the ":help" command, see |help.txt|. - -============================================================================== -*01.2* Vim installed - -Most of the manuals assume that Vim has been properly installed. If you -didn't do that yet, or if Vim doesn't run properly (e.g., files can't be found -or in the GUI the menus do not show up) first read the chapter on -installation: |usr_90.txt|. - *not-compatible* -The manuals often assume you are using Vim with Vi-compatibility switched -off. For most commands this doesn't matter, but sometimes it is important, -e.g., for multi-level undo. An easy way to make sure you are using a nice -setup is to copy the example vimrc file. By doing this inside Vim you don't -have to check out where it is located. How to do this depends on the system -you are using: - -Unix: > - :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc -MS-DOS, MS-Windows, OS/2: > - :!copy $VIMRUNTIME/vimrc_example.vim $VIM/_vimrc -Amiga: > - :!copy $VIMRUNTIME/vimrc_example.vim $VIM/.vimrc - -If the file already exists you probably want to keep it. - -If you start Vim now, the 'compatible' option should be off. You can check it -with this command: > - - :set compatible? - -If it responds with "nocompatible" you are doing well. If the response is -"compatible" you are in trouble. You will have to find out why the option is -still set. Perhaps the file you wrote above is not found. Use this command -to find out: > - - :scriptnames - -If your file is not in the list, check its location and name. If it is in the -list, there must be some other place where the 'compatible' option is switched -back on. - -For more info see |vimrc| and |compatible-default|. - - Note: - This manual is about using Vim in the normal way. There is an - alternative called "evim" (easy Vim). This is still Vim, but used in - a way that resembles a click-and-type editor like Notepad. It always - stays in Insert mode, thus it feels very different. It is not - explained in the user manual, since it should be mostly self - explanatory. See |evim-keys| for details. - -============================================================================== -*01.3* Using the Vim tutor *tutor* *vimtutor* - -Instead of reading the text (boring!) you can use the vimtutor to learn your -first Vim commands. This is a 30 minute tutorial that teaches the most basic -Vim functionality hands-on. - -On Unix, if Vim has been properly installed, you can start it from the shell: -> - vimtutor - -On MS-Windows you can find it in the Program/Vim menu. Or execute -vimtutor.bat in the $VIMRUNTIME directory. - -This will make a copy of the tutor file, so that you can edit it without -the risk of damaging the original. - There are a few translated versions of the tutor. To find out if yours is -available, use the two-letter language code. For French: > - - vimtutor fr - -On Unix, if you prefer using the GUI version of Vim, use "gvimtutor" or -"vimtutor -g" instead of "vimtutor". - -For OpenVMS, if Vim has been properly installed, you can start vimtutor from a -VMS prompt with: > - - @VIM:vimtutor - -Optionally add the two-letter language code as above. - - -On other systems, you have to do a little work: - -1. Copy the tutor file. You can do this with Vim (it knows where to find it): -> - vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' -< - This will write the file "TUTORCOPY" in the current directory. To use a -translated version of the tutor, append the two-letter language code to the -filename. For French: -> - vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q' -< -2. Edit the copied file with Vim: -> - vim -u NONE -c "set nocp" TUTORCOPY -< - The extra arguments make sure Vim is started in a good mood. - -3. Delete the copied file when you are finished with it: -> - del TUTORCOPY -< -============================================================================== -*01.4* Copyright *manual-copyright* - -The Vim user manual and reference manual are Copyright (c) 1988-2003 by Bram -Moolenaar. This material may be distributed only subject to the terms and -conditions set forth in the Open Publication License, v1.0 or later. The -latest version is presently available at: - http://www.opencontent.org/openpub/ - -People who contribute to the manuals must agree with the above copyright -notice. - *frombook* -Parts of the user manual come from the book "Vi IMproved - Vim" by Steve -Oualline (published by New Riders Publishing, ISBN: 0735710015). The Open -Publication License applies to this book. Only selected parts are included -and these have been modified (e.g., by removing the pictures, updating the -text for Vim 6.0 and later, fixing mistakes). The omission of the |frombook| -tag does not mean that the text does not come from the book. - -Many thanks to Steve Oualline and New Riders for creating this book and -publishing it under the OPL! It has been a great help while writing the user -manual. Not only by providing literal text, but also by setting the tone and -style. - -If you make money through selling the manuals, you are strongly encouraged to -donate part of the profit to help AIDS victims in Uganda. See |iccf|. - -============================================================================== - -Next chapter: |usr_02.txt| The first steps in Vim - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_02.txt b/share/vim/vim73/doc/usr_02.txt deleted file mode 100644 index 6b9f9ae6..00000000 --- a/share/vim/vim73/doc/usr_02.txt +++ /dev/null @@ -1,564 +0,0 @@ -*usr_02.txt* For Vim version 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - The first steps in Vim - - -This chapter provides just enough information to edit a file with Vim. Not -well or fast, but you can edit. Take some time to practice with these -commands, they form the base for what follows. - -|02.1| Running Vim for the First Time -|02.2| Inserting text -|02.3| Moving around -|02.4| Deleting characters -|02.5| Undo and Redo -|02.6| Other editing commands -|02.7| Getting out -|02.8| Finding help - - Next chapter: |usr_03.txt| Moving around - Previous chapter: |usr_01.txt| About the manuals -Table of contents: |usr_toc.txt| - -============================================================================== -*02.1* Running Vim for the First Time - -To start Vim, enter this command: > - - gvim file.txt - -In UNIX you can type this at any command prompt. If you are running Microsoft -Windows, open an MS-DOS prompt window and enter the command. - In either case, Vim starts editing a file called file.txt. Because this -is a new file, you get a blank window. This is what your screen will look -like: - - +---------------------------------------+ - |# | - |~ | - |~ | - |~ | - |~ | - |"file.txt" [New file] | - +---------------------------------------+ - ('#" is the cursor position.) - -The tilde (~) lines indicate lines not in the file. In other words, when Vim -runs out of file to display, it displays tilde lines. At the bottom of the -screen, a message line indicates the file is named file.txt and shows that you -are creating a new file. The message information is temporary and other -information overwrites it. - - -THE VIM COMMAND - -The gvim command causes the editor to create a new window for editing. If you -use this command: > - - vim file.txt - -the editing occurs inside your command window. In other words, if you are -running inside an xterm, the editor uses your xterm window. If you are using -an MS-DOS command prompt window under Microsoft Windows, the editing occurs -inside this window. The text in the window will look the same for both -versions, but with gvim you have extra features, like a menu bar. More about -that later. - -============================================================================== -*02.2* Inserting text - -The Vim editor is a modal editor. That means that the editor behaves -differently, depending on which mode you are in. The two basic modes are -called Normal mode and Insert mode. In Normal mode the characters you type -are commands. In Insert mode the characters are inserted as text. - Since you have just started Vim it will be in Normal mode. To start Insert -mode you type the "i" command (i for Insert). Then you can enter -the text. It will be inserted into the file. Do not worry if you make -mistakes; you can correct them later. To enter the following programmer's -limerick, this is what you type: > - - iA very intelligent turtle - Found programming UNIX a hurdle - -After typing "turtle" you press the <Enter> key to start a new line. Finally -you press the <Esc> key to stop Insert mode and go back to Normal mode. You -now have two lines of text in your Vim window: - - +---------------------------------------+ - |A very intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - | | - +---------------------------------------+ - - -WHAT IS THE MODE? - -To be able to see what mode you are in, type this command: > - - :set showmode - -You will notice that when typing the colon Vim moves the cursor to the last -line of the window. That's where you type colon commands (commands that start -with a colon). Finish this command by pressing the <Enter> key (all commands -that start with a colon are finished this way). - Now, if you type the "i" command Vim will display --INSERT-- at the bottom -of the window. This indicates you are in Insert mode. - - +---------------------------------------+ - |A very intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - |-- INSERT -- | - +---------------------------------------+ - -If you press <Esc> to go back to Normal mode the last line will be made blank. - - -GETTING OUT OF TROUBLE - -One of the problems for Vim novices is mode confusion, which is caused by -forgetting which mode you are in or by accidentally typing a command that -switches modes. To get back to Normal mode, no matter what mode you are in, -press the <Esc> key. Sometimes you have to press it twice. If Vim beeps back -at you, you already are in Normal mode. - -============================================================================== -*02.3* Moving around - -After you return to Normal mode, you can move around by using these keys: - - h left *hjkl* - j down - k up - l right - -At first, it may appear that these commands were chosen at random. After all, -who ever heard of using l for right? But actually, there is a very good -reason for these choices: Moving the cursor is the most common thing you do in -an editor, and these keys are on the home row of your right hand. In other -words, these commands are placed where you can type them the fastest -(especially when you type with ten fingers). - - Note: - You can also move the cursor by using the arrow keys. If you do, - however, you greatly slow down your editing because to press the arrow - keys, you must move your hand from the text keys to the arrow keys. - Considering that you might be doing it hundreds of times an hour, this - can take a significant amount of time. - Also, there are keyboards which do not have arrow keys, or which - locate them in unusual places; therefore, knowing the use of the hjkl - keys helps in those situations. - -One way to remember these commands is that h is on the left, l is on the -right and j points down. In a picture: > - - k - h l - j - -The best way to learn these commands is by using them. Use the "i" command to -insert some more lines of text. Then use the hjkl keys to move around and -insert a word somewhere. Don't forget to press <Esc> to go back to Normal -mode. The |vimtutor| is also a nice way to learn by doing. - -For Japanese users, Hiroshi Iwatani suggested using this: - - Komsomolsk - ^ - | - Huan Ho <--- ---> Los Angeles - (Yellow river) | - v - Java (the island, not the programming language) - -============================================================================== -*02.4* Deleting characters - -To delete a character, move the cursor over it and type "x". (This is a -throwback to the old days of the typewriter, when you deleted things by typing -xxxx over them.) Move the cursor to the beginning of the first line, for -example, and type xxxxxxx (seven x's) to delete "A very ". The result should -look like this: - - +---------------------------------------+ - |intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - | | - +---------------------------------------+ - -Now you can insert new text, for example by typing: > - - iA young <Esc> - -This begins an insert (the i), inserts the words "A young", and then exits -insert mode (the final <Esc>). The result: - - +---------------------------------------+ - |A young intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - | | - +---------------------------------------+ - - -DELETING A LINE - -To delete a whole line use the "dd" command. The following line will -then move up to fill the gap: - - +---------------------------------------+ - |Found programming UNIX a hurdle | - |~ | - |~ | - |~ | - | | - +---------------------------------------+ - - -DELETING A LINE BREAK - -In Vim you can join two lines together, which means that the line break -between them is deleted. The "J" command does this. - Take these two lines: - - A young intelligent ~ - turtle ~ - -Move the cursor to the first line and press "J": - - A young intelligent turtle ~ - -============================================================================== -*02.5* Undo and Redo - -Suppose you delete too much. Well, you can type it in again, but an easier -way exists. The "u" command undoes the last edit. Take a look at this in -action: After using "dd" to delete the first line, "u" brings it back. - Another one: Move the cursor to the A in the first line: - - A young intelligent turtle ~ - -Now type xxxxxxx to delete "A young". The result is as follows: - - intelligent turtle ~ - -Type "u" to undo the last delete. That delete removed the g, so the undo -restores the character. - - g intelligent turtle ~ - -The next u command restores the next-to-last character deleted: - - ng intelligent turtle ~ - -The next u command gives you the u, and so on: - - ung intelligent turtle ~ - oung intelligent turtle ~ - young intelligent turtle ~ - young intelligent turtle ~ - A young intelligent turtle ~ - - Note: - If you type "u" twice, and the result is that you get the same text - back, you have Vim configured to work Vi compatible. Look here to fix - this: |not-compatible|. - This text assumes you work "The Vim Way". You might prefer to use - the good old Vi way, but you will have to watch out for small - differences in the text then. - - -REDO - -If you undo too many times, you can press CTRL-R (redo) to reverse the -preceding command. In other words, it undoes the undo. To see this in -action, press CTRL-R twice. The character A and the space after it disappear: - - young intelligent turtle ~ - -There's a special version of the undo command, the "U" (undo line) command. -The undo line command undoes all the changes made on the last line that was -edited. Typing this command twice cancels the preceding "U". - - A very intelligent turtle ~ - xxxx Delete very - - A intelligent turtle ~ - xxxxxx Delete turtle - - A intelligent ~ - Restore line with "U" - A very intelligent turtle ~ - Undo "U" with "u" - A intelligent ~ - -The "U" command is a change by itself, which the "u" command undoes and CTRL-R -redoes. This might be a bit confusing. Don't worry, with "u" and CTRL-R you -can go to any of the situations you had. More about that in section |32.2|. - -============================================================================== -*02.6* Other editing commands - -Vim has a large number of commands to change the text. See |Q_in| and below. -Here are a few often used ones. - - -APPENDING - -The "i" command inserts a character before the character under the cursor. -That works fine; but what happens if you want to add stuff to the end of the -line? For that you need to insert text after the cursor. This is done with -the "a" (append) command. - For example, to change the line - - and that's not saying much for the turtle. ~ -to - and that's not saying much for the turtle!!! ~ - -move the cursor over to the dot at the end of the line. Then type "x" to -delete the period. The cursor is now positioned at the end of the line on the -e in turtle. Now type > - - a!!!<Esc> - -to append three exclamation points after the e in turtle: - - and that's not saying much for the turtle!!! ~ - - -OPENING UP A NEW LINE - -The "o" command creates a new, empty line below the cursor and puts Vim in -Insert mode. Then you can type the text for the new line. - Suppose the cursor is somewhere in the first of these two lines: - - A very intelligent turtle ~ - Found programming UNIX a hurdle ~ - -If you now use the "o" command and type new text: > - - oThat liked using Vim<Esc> - -The result is: - - A very intelligent turtle ~ - That liked using Vim ~ - Found programming UNIX a hurdle ~ - -The "O" command (uppercase) opens a line above the cursor. - - -USING A COUNT - -Suppose you want to move up nine lines. You can type "kkkkkkkkk" or you can -enter the command "9k". In fact, you can precede many commands with a number. -Earlier in this chapter, for instance, you added three exclamation points to -the end of a line by typing "a!!!<Esc>". Another way to do this is to use the -command "3a!<Esc>". The count of 3 tells the command that follows to triple -its effect. Similarly, to delete three characters, use the command "3x". The -count always comes before the command it applies to. - -============================================================================== -*02.7* Getting out - -To exit, use the "ZZ" command. This command writes the file and exits. - - Note: - Unlike many other editors, Vim does not automatically make a backup - file. If you type "ZZ", your changes are committed and there's no - turning back. You can configure the Vim editor to produce backup - files, see |07.4|. - - -DISCARDING CHANGES - -Sometimes you will make a sequence of changes and suddenly realize you were -better off before you started. Not to worry; Vim has a -quit-and-throw-things-away command. It is: > - - :q! - -Don't forget to press <Enter> to finish the command. - -For those of you interested in the details, the three parts of this command -are the colon (:), which enters Command-line mode; the q command, which tells -the editor to quit; and the override command modifier (!). - The override command modifier is needed because Vim is reluctant to throw -away changes. If you were to just type ":q", Vim would display an error -message and refuse to exit: - - E37: No write since last change (use ! to override) ~ - -By specifying the override, you are in effect telling Vim, "I know that what -I'm doing looks stupid, but I'm a big boy and really want to do this." - -If you want to continue editing with Vim: The ":e!" command reloads the -original version of the file. - -============================================================================== -*02.8* Finding help - -Everything you always wanted to know can be found in the Vim help files. -Don't be afraid to ask! - To get generic help use this command: > - - :help - -You could also use the first function key <F1>. If your keyboard has a <Help> -key it might work as well. - If you don't supply a subject, ":help" displays the general help window. -The creators of Vim did something very clever (or very lazy) with the help -system: They made the help window a normal editing window. You can use all -the normal Vim commands to move through the help information. Therefore h, j, -k, and l move left, down, up and right. - To get out of the help window, use the same command you use to get out of -the editor: "ZZ". This will only close the help window, not exit Vim. - -As you read the help text, you will notice some text enclosed in vertical bars -(for example, |help|). This indicates a hyperlink. If you position the -cursor anywhere between the bars and press CTRL-] (jump to tag), the help -system takes you to the indicated subject. (For reasons not discussed here, -the Vim terminology for a hyperlink is tag. So CTRL-] jumps to the location -of the tag given by the word under the cursor.) - After a few jumps, you might want to go back. CTRL-T (pop tag) takes you -back to the preceding position. CTRL-O (jump to older position) also works -nicely here. - At the top of the help screen, there is the notation *help.txt*. This name -between "*" characters is used by the help system to define a tag (hyperlink -destination). - See |29.1| for details about using tags. - -To get help on a given subject, use the following command: > - - :help {subject} - -To get help on the "x" command, for example, enter the following: > - - :help x - -To find out how to delete text, use this command: > - - :help deleting - -To get a complete index of all Vim commands, use the following command: > - - :help index - -When you need to get help for a control character command (for example, -CTRL-A), you need to spell it with the prefix "CTRL-". > - - :help CTRL-A - -The Vim editor has many different modes. By default, the help system displays -the normal-mode commands. For example, the following command displays help -for the normal-mode CTRL-H command: > - - :help CTRL-H - -To identify other modes, use a mode prefix. If you want the help for the -insert-mode version of a command, use "i_". For CTRL-H this gives you the -following command: > - - :help i_CTRL-H - -When you start the Vim editor, you can use several command-line arguments. -These all begin with a dash (-). To find what the -t argument does, for -example, use the command: > - - :help -t - -The Vim editor has a number of options that enable you to configure and -customize the editor. If you want help for an option, you need to enclose it -in single quotation marks. To find out what the 'number' option does, for -example, use the following command: > - - :help 'number' - -The table with all mode prefixes can be found here: |help-context|. - -Special keys are enclosed in angle brackets. To find help on the up-arrow key -in Insert mode, for instance, use this command: > - - :help i_<Up> - -If you see an error message that you don't understand, for example: - - E37: No write since last change (use ! to override) ~ - -You can use the error ID at the start to find help about it: > - - :help E37 - - -Summary: *help-summary* > - :help -< Gives you very general help. Scroll down to see a list of all - helpfiles, including those added locally (i.e. not distributed - with Vim). > - :help user-toc.txt -< Table of contents of the User Manual. > - :help :subject -< Ex-command "subject", for instance the following: > - :help :help -< Help on getting help. > - :help abc -< normal-mode command "abc". > - :help CTRL-B -< Control key <C-B> in Normal mode. > - :help i_abc - :help i_CTRL-B -< The same in Insert mode. > - :help v_abc - :help v_CTRL-B -< The same in Visual mode. > - :help c_abc - :help c_CTRL-B -< The same in Command-line mode. > - :help 'subject' -< Option 'subject'. > - :help subject() -< Function "subject". > - :help -subject -< Command-line option "-subject". > - :help +subject -< Compile-time feature "+subject". > - :help EventName -< Autocommand event "EventName". > - :help digraphs.txt -< The top of the helpfile "digraph.txt". - Similarly for any other helpfile. > - :help pattern<Tab> -< Find a help tag starting with "pattern". Repeat <Tab> for - others. > - :help pattern<Ctrl-D> -< See all possible help tag matches "pattern" at once. > - :helpgrep pattern -< Search the whole text of all help files for pattern "pattern". - Jumps to the first match. Jump to other matches with: > - :cn -< next match > - :cprev - :cN -< previous match > - :cfirst - :clast -< first or last match > - :copen - :cclose -< open/close the quickfix window; press <Enter> to jump - to the item under the cursor - - -============================================================================== - -Next chapter: |usr_03.txt| Moving around - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_03.txt b/share/vim/vim73/doc/usr_03.txt deleted file mode 100644 index 0f73c551..00000000 --- a/share/vim/vim73/doc/usr_03.txt +++ /dev/null @@ -1,654 +0,0 @@ -*usr_03.txt* For Vim version 7.3. Last change: 2006 Jun 21 - - VIM USER MANUAL - by Bram Moolenaar - - Moving around - - -Before you can insert or delete text the cursor has to be moved to the right -place. Vim has a large number of commands to position the cursor. This -chapter shows you how to use the most important ones. You can find a list of -these commands below |Q_lr|. - -|03.1| Word movement -|03.2| Moving to the start or end of a line -|03.3| Moving to a character -|03.4| Matching a parenthesis -|03.5| Moving to a specific line -|03.6| Telling where you are -|03.7| Scrolling around -|03.8| Simple searches -|03.9| Simple search patterns -|03.10| Using marks - - Next chapter: |usr_04.txt| Making small changes - Previous chapter: |usr_02.txt| The first steps in Vim -Table of contents: |usr_toc.txt| - -============================================================================== -*03.1* Word movement - -To move the cursor forward one word, use the "w" command. Like most Vim -commands, you can use a numeric prefix to move past multiple words. For -example, "3w" moves three words. This figure shows how it works: - - This is a line with example text ~ - --->-->->-----------------> - w w w 3w - -Notice that "w" moves to the start of the next word if it already is at the -start of a word. - The "b" command moves backward to the start of the previous word: - - This is a line with example text ~ - <----<--<-<---------<--- - b b b 2b b - -There is also the "e" command that moves to the next end of a word and "ge", -which moves to the previous end of a word: - - This is a line with example text ~ - <- <--- -----> ----> - ge ge e e - -If you are at the last word of a line, the "w" command will take you to the -first word in the next line. Thus you can use this to move through a -paragraph, much faster than using "l". "b" does the same in the other -direction. - -A word ends at a non-word character, such as a ".", "-" or ")". To change -what Vim considers to be a word, see the 'iskeyword' option. - It is also possible to move by white-space separated WORDs. This is not a -word in the normal sense, that's why the uppercase is used. The commands for -moving by WORDs are also uppercase, as this figure shows: - - ge b w e - <- <- ---> ---> - This is-a line, with special/separated/words (and some more). ~ - <----- <----- --------------------> -----> - gE B W E - -With this mix of lowercase and uppercase commands, you can quickly move -forward and backward through a paragraph. - -============================================================================== -*03.2* Moving to the start or end of a line - -The "$" command moves the cursor to the end of a line. If your keyboard has -an <End> key it will do the same thing. - -The "^" command moves to the first non-blank character of the line. The "0" -command (zero) moves to the very first character of the line. The <Home> key -does the same thing. In a picture: - - ^ - <------------ - .....This is a line with example text ~ - <----------------- ---------------> - 0 $ - -(the "....." indicates blanks here) - - The "$" command takes a count, like most movement commands. But moving to -the end of the line several times doesn't make sense. Therefore it causes the -editor to move to the end of another line. For example, "1$" moves you to -the end of the first line (the one you're on), "2$" to the end of the next -line, and so on. - The "0" command doesn't take a count argument, because the "0" would be -part of the count. Unexpectedly, using a count with "^" doesn't have any -effect. - -============================================================================== -*03.3* Moving to a character - -One of the most useful movement commands is the single-character search -command. The command "fx" searches forward in the line for the single -character x. Hint: "f" stands for "Find". - For example, you are at the beginning of the following line. Suppose you -want to go to the h of human. Just execute the command "fh" and the cursor -will be positioned over the h: - - To err is human. To really foul up you need a computer. ~ - ---------->---------------> - fh fy - -This also shows that the command "fy" moves to the end of the word really. - You can specify a count; therefore, you can go to the "l" of "foul" with -"3fl": - - To err is human. To really foul up you need a computer. ~ - ---------------------> - 3fl - -The "F" command searches to the left: - - To err is human. To really foul up you need a computer. ~ - <--------------------- - Fh - -The "tx" command works like the "fx" command, except it stops one character -before the searched character. Hint: "t" stands for "To". The backward -version of this command is "Tx". - - To err is human. To really foul up you need a computer. ~ - <------------ -------------> - Th tn - -These four commands can be repeated with ";". "," repeats in the other -direction. The cursor is never moved to another line. Not even when the -sentence continues. - -Sometimes you will start a search, only to realize that you have typed the -wrong command. You type "f" to search backward, for example, only to realize -that you really meant "F". To abort a search, press <Esc>. So "f<Esc>" is an -aborted forward search and doesn't do anything. Note: <Esc> cancels most -operations, not just searches. - -============================================================================== -*03.4* Matching a parenthesis - -When writing a program you often end up with nested () constructs. Then the -"%" command is very handy: It moves to the matching paren. If the cursor is -on a "(" it will move to the matching ")". If it's on a ")" it will move to -the matching "(". - - % - <-----> - if (a == (b * c) / d) ~ - <----------------> - % - -This also works for [] and {} pairs. (This can be defined with the -'matchpairs' option.) - -When the cursor is not on a useful character, "%" will search forward to find -one. Thus if the cursor is at the start of the line of the previous example, -"%" will search forward and find the first "(". Then it moves to its match: - - if (a == (b * c) / d) ~ - ---+----------------> - % - -============================================================================== -*03.5* Moving to a specific line - -If you are a C or C++ programmer, you are familiar with error messages such as -the following: - - prog.c:33: j undeclared (first use in this function) ~ - -This tells you that you might want to fix something on line 33. So how do you -find line 33? One way is to do "9999k" to go to the top of the file and "32j" -to go down thirty two lines. It is not a good way, but it works. A much -better way of doing things is to use the "G" command. With a count, this -command positions you at the given line number. For example, "33G" puts you -on line 33. (For a better way of going through a compiler's error list, see -|usr_30.txt|, for information on the :make command.) - With no argument, "G" positions you at the end of the file. A quick way to -go to the start of a file use "gg". "1G" will do the same, but is a tiny bit -more typing. - - | first line of a file ^ - | text text text text | - | text text text text | gg - 7G | text text text text | - | text text text text - | text text text text - V text text text text | - text text text text | G - text text text text | - last line of a file V - -Another way to move to a line is using the "%" command with a count. For -example "50%" moves you to halfway the file. "90%" goes to near the end. - -The previous assumes that you want to move to a line in the file, no matter if -it's currently visible or not. What if you want to move to one of the lines -you can see? This figure shows the three commands you can use: - - +---------------------------+ - H --> | text sample text | - | sample text | - | text sample text | - | sample text | - M --> | text sample text | - | sample text | - | text sample text | - | sample text | - L --> | text sample text | - +---------------------------+ - -Hints: "H" stands for Home, "M" for Middle and "L" for Last. - -============================================================================== -*03.6* Telling where you are - -To see where you are in a file, there are three ways: - -1. Use the CTRL-G command. You get a message like this (assuming the 'ruler' - option is off): - - "usr_03.txt" line 233 of 650 --35%-- col 45-52 ~ - - This shows the name of the file you are editing, the line number where the - cursor is, the total number of lines, the percentage of the way through - the file and the column of the cursor. - Sometimes you will see a split column number. For example, "col 2-9". - This indicates that the cursor is positioned on the second character, but - because character one is a tab, occupying eight spaces worth of columns, - the screen column is 9. - -2. Set the 'number' option. This will display a line number in front of - every line: > - - :set number -< - To switch this off again: > - - :set nonumber -< - Since 'number' is a boolean option, prepending "no" to its name has the - effect of switching it off. A boolean option has only these two values, - it is either on or off. - Vim has many options. Besides the boolean ones there are options with - a numerical value and string options. You will see examples of this where - they are used. - -3. Set the 'ruler' option. This will display the cursor position in the - lower right corner of the Vim window: > - - :set ruler - -Using the 'ruler' option has the advantage that it doesn't take much room, -thus there is more space for your text. - -============================================================================== -*03.7* Scrolling around - -The CTRL-U command scrolls down half a screen of text. Think of looking -through a viewing window at the text and moving this window up by half the -height of the window. Thus the window moves up over the text, which is -backward in the file. Don't worry if you have a little trouble remembering -which end is up. Most users have the same problem. - The CTRL-D command moves the viewing window down half a screen in the file, -thus scrolls the text up half a screen. - - +----------------+ - | some text | - | some text | - | some text | - +---------------+ | some text | - | some text | CTRL-U --> | | - | | | 123456 | - | 123456 | +----------------+ - | 7890 | - | | +----------------+ - | example | CTRL-D --> | 7890 | - +---------------+ | | - | example | - | example | - | example | - | example | - +----------------+ - -To scroll one line at a time use CTRL-E (scroll up) and CTRL-Y (scroll down). -Think of CTRL-E to give you one line Extra. (If you use MS-Windows compatible -key mappings CTRL-Y will redo a change instead of scroll.) - -To scroll forward by a whole screen (except for two lines) use CTRL-F. The -other way is backward, CTRL-B is the command to use. Fortunately CTRL-F is -Forward and CTRL-B is Backward, that's easy to remember. - -A common issue is that after moving down many lines with "j" your cursor is at -the bottom of the screen. You would like to see the context of the line with -the cursor. That's done with the "zz" command. - - +------------------+ +------------------+ - | some text | | some text | - | some text | | some text | - | some text | | some text | - | some text | zz --> | line with cursor | - | some text | | some text | - | some text | | some text | - | line with cursor | | some text | - +------------------+ +------------------+ - -The "zt" command puts the cursor line at the top, "zb" at the bottom. There -are a few more scrolling commands, see |Q_sc|. To always keep a few lines of -context around the cursor, use the 'scrolloff' option. - -============================================================================== -*03.8* Simple searches - -To search for a string, use the "/string" command. To find the word include, -for example, use the command: > - - /include - -You will notice that when you type the "/" the cursor jumps to the last line -of the Vim window, like with colon commands. That is where you type the word. -You can press the backspace key (backarrow or <BS>) to make corrections. Use -the <Left> and <Right> cursor keys when necessary. - Pressing <Enter> executes the command. - - Note: - The characters .*[]^%/\?~$ have special meanings. If you want to use - them in a search you must put a \ in front of them. See below. - -To find the next occurrence of the same string use the "n" command. Use this -to find the first #include after the cursor: > - - /#include - -And then type "n" several times. You will move to each #include in the text. -You can also use a count if you know which match you want. Thus "3n" finds -the third match. Using a count with "/" doesn't work. - -The "?" command works like "/" but searches backwards: > - - ?word - -The "N" command repeats the last search the opposite direction. Thus using -"N" after a "/" command search backwards, using "N" after "?" searches -forward. - - -IGNORING CASE - -Normally you have to type exactly what you want to find. If you don't care -about upper or lowercase in a word, set the 'ignorecase' option: > - - :set ignorecase - -If you now search for "word", it will also match "Word" and "WORD". To match -case again: > - - :set noignorecase - - -HISTORY - -Suppose you do three searches: > - - /one - /two - /three - -Now let's start searching by typing a simple "/" without pressing <Enter>. If -you press <Up> (the cursor key), Vim puts "/three" on the command line. -Pressing <Enter> at this point searches for three. If you do not press -<Enter>, but press <Up> instead, Vim changes the prompt to "/two". Another -press of <Up> moves you to "/one". - You can also use the <Down> cursor key to move through the history of -search commands in the other direction. - -If you know what a previously used pattern starts with, and you want to use it -again, type that character before pressing <Up>. With the previous example, -you can type "/o<Up>" and Vim will put "/one" on the command line. - -The commands starting with ":" also have a history. That allows you to recall -a previous command and execute it again. These two histories are separate. - - -SEARCHING FOR A WORD IN THE TEXT - -Suppose you see the word "TheLongFunctionName" in the text and you want to -find the next occurrence of it. You could type "/TheLongFunctionName", but -that's a lot of typing. And when you make a mistake Vim won't find it. - There is an easier way: Position the cursor on the word and use the "*" -command. Vim will grab the word under the cursor and use it as the search -string. - The "#" command does the same in the other direction. You can prepend a -count: "3*" searches for the third occurrence of the word under the cursor. - - -SEARCHING FOR WHOLE WORDS - -If you type "/the" it will also match "there". To only find words that end -in "the" use: > - - /the\> - -The "\>" item is a special marker that only matches at the end of a word. -Similarly "\<" only matches at the begin of a word. Thus to search for the -word "the" only: > - - /\<the\> - -This does not match "there" or "soothe". Notice that the "*" and "#" commands -use these start-of-word and end-of-word markers to only find whole words (you -can use "g*" and "g#" to match partial words). - - -HIGHLIGHTING MATCHES - -While editing a program you see a variable called "nr". You want to check -where it's used. You could move the cursor to "nr" and use the "*" command -and press "n" to go along all the matches. - There is another way. Type this command: > - - :set hlsearch - -If you now search for "nr", Vim will highlight all matches. That is a very -good way to see where the variable is used, without the need to type commands. - To switch this off: > - - :set nohlsearch - -Then you need to switch it on again if you want to use it for the next search -command. If you only want to remove the highlighting, use this command: > - - :nohlsearch - -This doesn't reset the option. Instead, it disables the highlighting. As -soon as you execute a search command, the highlighting will be used again. -Also for the "n" and "N" commands. - - -TUNING SEARCHES - -There are a few options that change how searching works. These are the -essential ones: -> - :set incsearch - -This makes Vim display the match for the string while you are still typing it. -Use this to check if the right match will be found. Then press <Enter> to -really jump to that location. Or type more to change the search string. -> - :set nowrapscan - -This stops the search at the end of the file. Or, when you are searching -backwards, at the start of the file. The 'wrapscan' option is on by default, -thus searching wraps around the end of the file. - - -INTERMEZZO - -If you like one of the options mentioned before, and set it each time you use -Vim, you can put the command in your Vim startup file. - Edit the file, as mentioned at |not-compatible|. Or use this command to -find out where it is: > - - :scriptnames - -Edit the file, for example with: > - - :edit ~/.vimrc - -Then add a line with the command to set the option, just like you typed it in -Vim. Example: > - - Go:set hlsearch<Esc> - -"G" moves to the end of the file. "o" starts a new line, where you type the -":set" command. You end insert mode with <Esc>. Then write the file: > - - ZZ - -If you now start Vim again, the 'hlsearch' option will already be set. - -============================================================================== -*03.9* Simple search patterns - -The Vim editor uses regular expressions to specify what to search for. -Regular expressions are an extremely powerful and compact way to specify a -search pattern. Unfortunately, this power comes at a price, because regular -expressions are a bit tricky to specify. - In this section we mention only a few essential ones. More about search -patterns and commands in chapter 27 |usr_27.txt|. You can find the full -explanation here: |pattern|. - - -BEGINNING AND END OF A LINE - -The ^ character matches the beginning of a line. On an English-US keyboard -you find it above the 6. The pattern "include" matches the word include -anywhere on the line. But the pattern "^include" matches the word include -only if it is at the beginning of a line. - The $ character matches the end of a line. Therefore, "was$" matches the -word was only if it is at the end of a line. - -Let's mark the places where "the" matches in this example line with "x"s: - - the solder holding one of the chips melted and the ~ - xxx xxx xxx - -Using "/the$" we find this match: - - the solder holding one of the chips melted and the ~ - xxx - -And with "/^the" we find this one: - the solder holding one of the chips melted and the ~ - xxx - -You can try searching with "/^the$", it will only match a single line -consisting of "the". White space does matter here, thus if a line contains a -space after the word, like "the ", the pattern will not match. - - -MATCHING ANY SINGLE CHARACTER - -The . (dot) character matches any existing character. For example, the -pattern "c.m" matches a string whose first character is a c, whose second -character is anything, and whose the third character is m. Example: - - We use a computer that became the cummin winter. ~ - xxx xxx xxx - - -MATCHING SPECIAL CHARACTERS - -If you really want to match a dot, you must avoid its special meaning by -putting a backslash before it. - If you search for "ter.", you will find these matches: - - We use a computer that became the cummin winter. ~ - xxxx xxxx - -Searching for "ter\." only finds the second match. - -============================================================================== -*03.10* Using marks - -When you make a jump to a position with the "G" command, Vim remembers the -position from before this jump. This position is called a mark. To go back -where you came from, use this command: > - - `` - -This ` is a backtick or open single-quote character. - If you use the same command a second time you will jump back again. That's -because the ` command is a jump itself, and the position from before this jump -is remembered. - -Generally, every time you do a command that can move the cursor further than -within the same line, this is called a jump. This includes the search -commands "/" and "n" (it doesn't matter how far away the match is). But not -the character searches with "fx" and "tx" or the word movements "w" and "e". - Also, "j" and "k" are not considered to be a jump. Even when you use a -count to make them move the cursor quite a long way away. - -The `` command jumps back and forth, between two points. The CTRL-O command -jumps to older positions (Hint: O for older). CTRL-I then jumps back to newer -positions (Hint: I is just next to O on the keyboard). Consider this sequence -of commands: > - - 33G - /^The - CTRL-O - -You first jump to line 33, then search for a line that starts with "The". -Then with CTRL-O you jump back to line 33. Another CTRL-O takes you back to -where you started. If you now use CTRL-I you jump to line 33 again. And -to the match for "The" with another CTRL-I. - - - | example text ^ | - 33G | example text | CTRL-O | CTRL-I - | example text | | - V line 33 text ^ V - | example text | | - /^The | example text | CTRL-O | CTRL-I - V There you are | V - example text - - Note: - CTRL-I is the same as <Tab>. - -The ":jumps" command gives a list of positions you jumped to. The entry which -you used last is marked with a ">". - - -NAMED MARKS *bookmark* - -Vim enables you to place your own marks in the text. The command "ma" marks -the place under the cursor as mark a. You can place 26 marks (a through z) in -your text. You can't see them, it's just a position that Vim remembers. - To go to a mark, use the command `{mark}, where {mark} is the mark letter. -Thus to move to the a mark: -> - `a - -The command 'mark (single quotation mark, or apostrophe) moves you to the -beginning of the line containing the mark. This differs from the `mark -command, which moves you to marked column. - -The marks can be very useful when working on two related parts in a file. -Suppose you have some text near the start of the file you need to look at, -while working on some text near the end of the file. - Move to the text at the start and place the s (start) mark there: > - - ms - -Then move to the text you want to work on and put the e (end) mark there: > - - me - -Now you can move around, and when you want to look at the start of the file, -you use this to jump there: > - - 's - -Then you can use '' to jump back to where you were, or 'e to jump to the text -you were working on at the end. - There is nothing special about using s for start and e for end, they are -just easy to remember. - -You can use this command to get a list of marks: > - - :marks - -You will notice a few special marks. These include: - - ' The cursor position before doing a jump - " The cursor position when last editing the file - [ Start of the last change - ] End of the last change - -============================================================================== - -Next chapter: |usr_04.txt| Making small changes - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_04.txt b/share/vim/vim73/doc/usr_04.txt deleted file mode 100644 index 5a3f97b4..00000000 --- a/share/vim/vim73/doc/usr_04.txt +++ /dev/null @@ -1,514 +0,0 @@ -*usr_04.txt* For Vim version 7.3. Last change: 2008 Sep 06 - - VIM USER MANUAL - by Bram Moolenaar - - Making small changes - - -This chapter shows you several ways of making corrections and moving text -around. It teaches you the three basic ways to change text: operator-motion, -Visual mode and text objects. - -|04.1| Operators and motions -|04.2| Changing text -|04.3| Repeating a change -|04.4| Visual mode -|04.5| Moving text -|04.6| Copying text -|04.7| Using the clipboard -|04.8| Text objects -|04.9| Replace mode -|04.10| Conclusion - - Next chapter: |usr_05.txt| Set your settings - Previous chapter: |usr_03.txt| Moving around -Table of contents: |usr_toc.txt| - -============================================================================== -*04.1* Operators and motions - -In chapter 2 you learned the "x" command to delete a single character. And -using a count: "4x" deletes four characters. - The "dw" command deletes a word. You may recognize the "w" command as the -move word command. In fact, the "d" command may be followed by any motion -command, and it deletes from the current location to the place where the -cursor winds up. - The "4w" command, for example, moves the cursor over four words. The d4w -command deletes four words. - - To err is human. To really foul up you need a computer. ~ - ------------------> - d4w - - To err is human. you need a computer. ~ - -Vim only deletes up to the position where the motion takes the cursor. That's -because Vim knows that you probably don't want to delete the first character -of a word. If you use the "e" command to move to the end of a word, Vim -guesses that you do want to include that last character: - - To err is human. you need a computer. ~ - --------> - d2e - - To err is human. a computer. ~ - -Whether the character under the cursor is included depends on the command you -used to move to that character. The reference manual calls this "exclusive" -when the character isn't included and "inclusive" when it is. - -The "$" command moves to the end of a line. The "d$" command deletes from the -cursor to the end of the line. This is an inclusive motion, thus the last -character of the line is included in the delete operation: - - To err is human. a computer. ~ - ------------> - d$ - - To err is human ~ - -There is a pattern here: operator-motion. You first type an operator command. -For example, "d" is the delete operator. Then you type a motion command like -"4l" or "w". This way you can operate on any text you can move over. - -============================================================================== -*04.2* Changing text - -Another operator is "c", change. It acts just like the "d" operator, except -it leaves you in Insert mode. For example, "cw" changes a word. Or more -specifically, it deletes a word and then puts you in Insert mode. - - To err is human ~ - -------> - c2wbe<Esc> - - To be human ~ - -This "c2wbe<Esc>" contains these bits: - - c the change operator - 2w move two words (they are deleted and Insert mode started) - be insert this text - <Esc> back to Normal mode - -If you have paid attention, you will have noticed something strange: The space -before "human" isn't deleted. There is a saying that for every problem there -is an answer that is simple, clear, and wrong. That is the case with the -example used here for the "cw" command. The c operator works just like the -d operator, with one exception: "cw". It actually works like "ce", change to -end of word. Thus the space after the word isn't included. This is an -exception that dates back to the old Vi. Since many people are used to it -now, the inconsistency has remained in Vim. - - -MORE CHANGES - -Like "dd" deletes a whole line, "cc" changes a whole line. It keeps the -existing indent (leading white space) though. - -Just like "d$" deletes until the end of the line, "c$" changes until the end -of the line. It's like doing "d$" to delete the text and then "a" to start -Insert mode and append new text. - - -SHORTCUTS - -Some operator-motion commands are used so often that they have been given a -single letter command: - - x stands for dl (delete character under the cursor) - X stands for dh (delete character left of the cursor) - D stands for d$ (delete to end of the line) - C stands for c$ (change to end of the line) - s stands for cl (change one character) - S stands for cc (change a whole line) - - -WHERE TO PUT THE COUNT - -The commands "3dw" and "d3w" delete three words. If you want to get really -picky about things, the first command, "3dw", deletes one word three times; -the command "d3w" deletes three words once. This is a difference without a -distinction. You can actually put in two counts, however. For example, -"3d2w" deletes two words, repeated three times, for a total of six words. - - -REPLACING WITH ONE CHARACTER - -The "r" command is not an operator. It waits for you to type a character, and -will replace the character under the cursor with it. You could do the same -with "cl" or with the "s" command, but with "r" you don't have to press <Esc> - - there is somerhing grong here ~ - rT rt rw - - There is something wrong here ~ - -Using a count with "r" causes that many characters to be replaced with the -same character. Example: - - There is something wrong here ~ - 5rx - - There is something xxxxx here ~ - -To replace a character with a line break use "r<Enter>". This deletes one -character and inserts a line break. Using a count here only applies to the -number of characters deleted: "4r<Enter>" replaces four characters with one -line break. - -============================================================================== -*04.3* Repeating a change - -The "." command is one of the most simple yet powerful commands in Vim. It -repeats the last change. For instance, suppose you are editing an HTML file -and want to delete all the <B> tags. You position the cursor on the first < -and delete the <B> with the command "df>". You then go to the < of the next -</B> and kill it using the "." command. The "." command executes the last -change command (in this case, "df>"). To delete another tag, position the -cursor on the < and use the "." command. - - To <B>generate</B> a table of <B>contents ~ - f< find first < ---> - df> delete to > --> - f< find next < ---------> - . repeat df> ---> - f< find next < -------------> - . repeat df> --> - -The "." command works for all changes you make, except for the "u" (undo), -CTRL-R (redo) and commands that start with a colon (:). - -Another example: You want to change the word "four" to "five". It appears -several times in your text. You can do this quickly with this sequence of -commands: - - /four<Enter> find the first string "four" - cwfive<Esc> change the word to "five" - n find the next "four" - . repeat the change to "five' - n find the next "four" - . repeat the change - etc. - -============================================================================== -*04.4* Visual mode - -To delete simple items the operator-motion changes work quite well. But often -it's not so easy to decide which command will move over the text you want to -change. Then you can use Visual mode. - -You start Visual mode by pressing "v". You move the cursor over the text you -want to work on. While you do this, the text is highlighted. Finally type -the operator command. - For example, to delete from halfway one word to halfway another word: - - This is an examination sample of visual mode ~ - ----------> - velllld - - This is an example of visual mode ~ - -When doing this you don't really have to count how many times you have to -press "l" to end up in the right position. You can immediately see what text -will be deleted when you press "d". - -If at any time you decide you don't want to do anything with the highlighted -text, just press <Esc> and Visual mode will stop without doing anything. - - -SELECTING LINES - -If you want to work on whole lines, use "V" to start Visual mode. You will -see right away that the whole line is highlighted, without moving around. -When you move left or right nothing changes. When you move up or down the -selection is extended whole lines at a time. - For example, select three lines with "Vjj": - - +------------------------+ - | text more text | - >> | more text more text | | - selected lines >> | text text text | | Vjj - >> | text more | V - | more text more | - +------------------------+ - - -SELECTING BLOCKS - -If you want to work on a rectangular block of characters, use CTRL-V to start -Visual mode. This is very useful when working on tables. - - name Q1 Q2 Q3 - pierre 123 455 234 - john 0 90 39 - steve 392 63 334 - -To delete the middle "Q2" column, move the cursor to the "Q" of "Q2". Press -CTRL-V to start blockwise Visual mode. Now move the cursor three lines down -with "3j" and to the next word with "w". You can see the first character of -the last column is included. To exclude it, use "h". Now press "d" and the -middle column is gone. - - -GOING TO THE OTHER SIDE - -If you have selected some text in Visual mode, and discover that you need to -change the other end of the selection, use the "o" command (Hint: o for other -end). The cursor will go to the other end, and you can move the cursor to -change where the selection starts. Pressing "o" again brings you back to the -other end. - -When using blockwise selection, you have four corners. "o" only takes you to -one of the other corners, diagonally. Use "O" to move to the other corner in -the same line. - -Note that "o" and "O" in Visual mode work very differently from Normal mode, -where they open a new line below or above the cursor. - -============================================================================== -*04.5* Moving text - -When you delete something with the "d", "x", or another command, the text is -saved. You can paste it back by using the p command. (The Vim name for -this is put). - Take a look at how this works. First you will delete an entire line, by -putting the cursor on the line you want to delete and typing "dd". Now you -move the cursor to where you want to put the line and use the "p" (put) -command. The line is inserted on the line below the cursor. - - a line a line a line - line 2 dd line 3 p line 3 - line 3 line 2 - -Because you deleted an entire line, the "p" command placed the text line below -the cursor. If you delete part of a line (a word, for instance), the "p" -command puts it just after the cursor. - - Some more boring try text to out commands. ~ - ----> - dw - - Some more boring text to out commands. ~ - -------> - welp - - Some more boring text to try out commands. ~ - - -MORE ON PUTTING - -The "P" command puts text like "p", but before the cursor. When you deleted a -whole line with "dd", "P" will put it back above the cursor. When you deleted -a word with "dw", "P" will put it back just before the cursor. - -You can repeat putting as many times as you like. The same text will be used. - -You can use a count with "p" and "P". The text will be repeated as many times -as specified with the count. Thus "dd" and then "3p" puts three copies of the -same deleted line. - - -SWAPPING TWO CHARACTERS - -Frequently when you are typing, your fingers get ahead of your brain (or the -other way around?). The result is a typo such as "teh" for "the". Vim -makes it easy to correct such problems. Just put the cursor on the e of "teh" -and execute the command "xp". This works as follows: "x" deletes the -character e and places it in a register. "p" puts the text after the cursor, -which is after the h. - - teh th the ~ - x p - -============================================================================== -*04.6* Copying text - -To copy text from one place to another, you could delete it, use "u" to undo -the deletion and then "p" to put it somewhere else. There is an easier way: -yanking. The "y" operator copies text into a register. Then a "p" command -can be used to put it. - Yanking is just a Vim name for copying. The "c" letter was already used -for the change operator, and "y" was still available. Calling this -operator "yank" made it easier to remember to use the "y" key. - -Since "y" is an operator, you use "yw" to yank a word. A count is possible as -usual. To yank two words use "y2w". Example: - - let sqr = LongVariable * ~ - --------------> - y2w - - let sqr = LongVariable * ~ - p - - let sqr = LongVariable * LongVariable ~ - -Notice that "yw" includes the white space after a word. If you don't want -this, use "ye". - -The "yy" command yanks a whole line, just like "dd" deletes a whole line. -Unexpectedly, while "D" deletes from the cursor to the end of the line, "Y" -works like "yy", it yanks the whole line. Watch out for this inconsistency! -Use "y$" to yank to the end of the line. - - a text line yy a text line a text line - line 2 line 2 p line 2 - last line last line a text line - last line - -============================================================================== -*04.7* Using the clipboard - -If you are using the GUI version of Vim (gvim), you can find the "Copy" item -in the "Edit" menu. First select some text with Visual mode, then use the -Edit/Copy menu. The selected text is now copied to the clipboard. You can -paste the text in other programs. In Vim itself too. - -If you have copied text to the clipboard in another application, you can paste -it in Vim with the Edit/Paste menu. This works in Normal mode and Insert -mode. In Visual mode the selected text is replaced with the pasted text. - -The "Cut" menu item deletes the text before it's put on the clipboard. The -"Copy", "Cut" and "Paste" items are also available in the popup menu (only -when there is a popup menu, of course). If your Vim has a toolbar, you can -also find these items there. - -If you are not using the GUI, or if you don't like using a menu, you have to -use another way. You use the normal "y" (yank) and "p" (put) commands, but -prepend "* (double-quote star) before it. To copy a line to the clipboard: > - - "*yy - -To put text from the clipboard back into the text: > - - "*p - -This only works on versions of Vim that include clipboard support. More about -the clipboard in section |09.3| and here: |clipboard|. - -============================================================================== -*04.8* Text objects - -If the cursor is in the middle of a word and you want to delete that word, you -need to move back to its start before you can do "dw". There is a simpler way -to do this: "daw". - - this is some example text. ~ - daw - - this is some text. ~ - -The "d" of "daw" is the delete operator. "aw" is a text object. Hint: "aw" -stands for "A Word". Thus "daw" is "Delete A Word". To be precise, the white -space after the word is also deleted (the white space before the word at the -end of the line). - -Using text objects is the third way to make changes in Vim. We already had -operator-motion and Visual mode. Now we add operator-text object. - It is very similar to operator-motion, but instead of operating on the text -between the cursor position before and after a movement command, the text -object is used as a whole. It doesn't matter where in the object the cursor -was. - -To change a whole sentence use "cis". Take this text: - - Hello there. This ~ - is an example. Just ~ - some text. ~ - -Move to the start of the second line, on "is an". Now use "cis": - - Hello there. Just ~ - some text. ~ - -The cursor is in between the blanks in the first line. Now you type the new -sentence "Another line.": - - Hello there. Another line. Just ~ - some text. ~ - -"cis" consists of the "c" (change) operator and the "is" text object. This -stands for "Inner Sentence". There is also the "as" (a sentence) object. The -difference is that "as" includes the white space after the sentence and "is" -doesn't. If you would delete a sentence, you want to delete the white space -at the same time, thus use "das". If you want to type new text the white -space can remain, thus you use "cis". - -You can also use text objects in Visual mode. It will include the text object -in the Visual selection. Visual mode continues, thus you can do this several -times. For example, start Visual mode with "v" and select a sentence with -"as". Now you can repeat "as" to include more sentences. Finally you use an -operator to do something with the selected sentences. - -You can find a long list of text objects here: |text-objects|. - -============================================================================== -*04.9* Replace mode - -The "R" command causes Vim to enter replace mode. In this mode, each -character you type replaces the one under the cursor. This continues until -you type <Esc>. - In this example you start Replace mode on the first "t" of "text": - - This is text. ~ - Rinteresting.<Esc> - - This is interesting. ~ - -You may have noticed that this command replaced 5 characters in the line with -twelve others. The "R" command automatically extends the line if it runs out -of characters to replace. It will not continue on the next line. - -You can switch between Insert mode and Replace mode with the <Insert> key. - -When you use <BS> (backspace) to make correction, you will notice that the -old text is put back. Thus it works like an undo command for the last typed -character. - -============================================================================== -*04.10* Conclusion - -The operators, movement commands and text objects give you the possibility to -make lots of combinations. Now that you know how it works, you can use N -operators with M movement commands to make N * M commands! - -You can find a list of operators here: |operator| - -For example, there are many other ways to delete pieces of text. Here are a -few often used ones: - -x delete character under the cursor (short for "dl") -X delete character before the cursor (short for "dh") -D delete from cursor to end of line (short for "d$") -dw delete from cursor to next start of word -db delete from cursor to previous start of word -diw delete word under the cursor (excluding white space) -daw delete word under the cursor (including white space) -dG delete until the end of the file -dgg delete until the start of the file - -If you use "c" instead of "d" they become change commands. And with "y" you -yank the text. And so forth. - - -There are a few often used commands to make changes that didn't fit somewhere -else: - - ~ change case of the character under the cursor, and move the - cursor to the next character. This is not an operator (unless - 'tildeop' is set), thus you can't use it with a motion - command. It does work in Visual mode and changes case for - all the selected text then. - - I Start Insert mode after moving the cursor to the first - non-blank in the line. - - A Start Insert mode after moving the cursor to the end of the - line. - -============================================================================== - -Next chapter: |usr_05.txt| Set your settings - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_05.txt b/share/vim/vim73/doc/usr_05.txt deleted file mode 100644 index b0f27d1f..00000000 --- a/share/vim/vim73/doc/usr_05.txt +++ /dev/null @@ -1,625 +0,0 @@ -*usr_05.txt* For Vim version 7.3. Last change: 2009 Jun 04 - - VIM USER MANUAL - by Bram Moolenaar - - Set your settings - - -Vim can be tuned to work like you want it to. This chapter shows you how to -make Vim start with options set to different values. Add plugins to extend -Vim's capabilities. Or define your own macros. - -|05.1| The vimrc file -|05.2| The example vimrc file explained -|05.3| Simple mappings -|05.4| Adding a plugin -|05.5| Adding a help file -|05.6| The option window -|05.7| Often used options - - Next chapter: |usr_06.txt| Using syntax highlighting - Previous chapter: |usr_04.txt| Making small changes -Table of contents: |usr_toc.txt| - -============================================================================== -*05.1* The vimrc file *vimrc-intro* - -You probably got tired of typing commands that you use very often. To start -Vim with all your favorite option settings and mappings, you write them in -what is called the vimrc file. Vim executes the commands in this file when it -starts up. - -If you already have a vimrc file (e.g., when your sysadmin has one setup for -you), you can edit it this way: > - - :edit $MYVIMRC - -If you don't have a vimrc file yet, see |vimrc| to find out where you can -create a vimrc file. Also, the ":version" command mentions the name of the -"user vimrc file" Vim looks for. - -For Unix and Macintosh this file is always used and is recommended: - - ~/.vimrc ~ - -For MS-DOS and MS-Windows you can use one of these: - - $HOME/_vimrc ~ - $VIM/_vimrc ~ - -The vimrc file can contain all the commands that you type after a colon. The -most simple ones are for setting options. For example, if you want Vim to -always start with the 'incsearch' option on, add this line you your vimrc -file: > - - set incsearch - -For this new line to take effect you need to exit Vim and start it again. -Later you will learn how to do this without exiting Vim. - -This chapter only explains the most basic items. For more information on how -to write a Vim script file: |usr_41.txt|. - -============================================================================== -*05.2* The example vimrc file explained *vimrc_example.vim* - -In the first chapter was explained how the example vimrc (included in the -Vim distribution) file can be used to make Vim startup in not-compatible mode -(see |not-compatible|). The file can be found here: - - $VIMRUNTIME/vimrc_example.vim ~ - -In this section we will explain the various commands used in this file. This -will give you hints about how to set up your own preferences. Not everything -will be explained though. Use the ":help" command to find out more. - -> - set nocompatible - -As mentioned in the first chapter, these manuals explain Vim working in an -improved way, thus not completely Vi compatible. Setting the 'compatible' -option off, thus 'nocompatible' takes care of this. - -> - set backspace=indent,eol,start - -This specifies where in Insert mode the <BS> is allowed to delete the -character in front of the cursor. The three items, separated by commas, tell -Vim to delete the white space at the start of the line, a line break and the -character before where Insert mode started. -> - - set autoindent - -This makes Vim use the indent of the previous line for a newly created line. -Thus there is the same amount of white space before the new line. For example -when pressing <Enter> in Insert mode, and when using the "o" command to open a -new line. -> - - if has("vms") - set nobackup - else - set backup - endif - -This tells Vim to keep a backup copy of a file when overwriting it. But not -on the VMS system, since it keeps old versions of files already. The backup -file will have the same name as the original file with "~" added. See |07.4| -> - - set history=50 - -Keep 50 commands and 50 search patterns in the history. Use another number if -you want to remember fewer or more lines. -> - - set ruler - -Always display the current cursor position in the lower right corner of the -Vim window. - -> - set showcmd - -Display an incomplete command in the lower right corner of the Vim window, -left of the ruler. For example, when you type "2f", Vim is waiting for you to -type the character to find and "2f" is displayed. When you press "w" next, -the "2fw" command is executed and the displayed "2f" is removed. - - +-------------------------------------------------+ - |text in the Vim window | - |~ | - |~ | - |-- VISUAL -- 2f 43,8 17% | - +-------------------------------------------------+ - ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ - 'showmode' 'showcmd' 'ruler' - -> - set incsearch - -Display the match for a search pattern when halfway typing it. - -> - map Q gq - -This defines a key mapping. More about that in the next section. This -defines the "Q" command to do formatting with the "gq" operator. This is how -it worked before Vim 5.0. Otherwise the "Q" command starts Ex mode, but you -will not need it. - -> - vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h"<CR> - -This mapping yanks the visually selected text and searches for it in C files. -This is a complicated mapping. You can see that mappings can be used to do -quite complicated things. Still, it is just a sequence of commands that are -executed like you typed them. - -> - if &t_Co > 2 || has("gui_running") - syntax on - set hlsearch - endif - -This switches on syntax highlighting, but only if colors are available. And -the 'hlsearch' option tells Vim to highlight matches with the last used search -pattern. The "if" command is very useful to set options only when some -condition is met. More about that in |usr_41.txt|. - - *vimrc-filetype* > - filetype plugin indent on - -This switches on three very clever mechanisms: -1. Filetype detection. - Whenever you start editing a file, Vim will try to figure out what kind of - file this is. When you edit "main.c", Vim will see the ".c" extension and - recognize this as a "c" filetype. When you edit a file that starts with - "#!/bin/sh", Vim will recognize it as a "sh" filetype. - The filetype detection is used for syntax highlighting and the other two - items below. - See |filetypes|. - -2. Using filetype plugin files - Many different filetypes are edited with different options. For example, - when you edit a "c" file, it's very useful to set the 'cindent' option to - automatically indent the lines. These commonly useful option settings are - included with Vim in filetype plugins. You can also add your own, see - |write-filetype-plugin|. - -3. Using indent files - When editing programs, the indent of a line can often be computed - automatically. Vim comes with these indent rules for a number of - filetypes. See |:filetype-indent-on| and 'indentexpr'. - -> - autocmd FileType text setlocal textwidth=78 - -This makes Vim break text to avoid lines getting longer than 78 characters. -But only for files that have been detected to be plain text. There are -actually two parts here. "autocmd FileType text" is an autocommand. This -defines that when the file type is set to "text" the following command is -automatically executed. "setlocal textwidth=78" sets the 'textwidth' option -to 78, but only locally in one file. - - *restore-cursor* > - autocmd BufReadPost * - \ if line("'\"") > 1 && line("'\"") <= line("$") | - \ exe "normal! g`\"" | - \ endif - -Another autocommand. This time it is used after reading any file. The -complicated stuff after it checks if the '" mark is defined, and jumps to it -if so. The backslash at the start of a line is used to continue the command -from the previous line. That avoids a line getting very long. -See |line-continuation|. This only works in a Vim script file, not when -typing commands at the command-line. - -============================================================================== -*05.3* Simple mappings - -A mapping enables you to bind a set of Vim commands to a single key. Suppose, -for example, that you need to surround certain words with curly braces. In -other words, you need to change a word such as "amount" into "{amount}". With -the :map command, you can tell Vim that the F5 key does this job. The command -is as follows: > - - :map <F5> i{<Esc>ea}<Esc> -< - Note: - When entering this command, you must enter <F5> by typing four - characters. Similarly, <Esc> is not entered by pressing the <Esc> - key, but by typing five characters. Watch out for this difference - when reading the manual! - -Let's break this down: - <F5> The F5 function key. This is the trigger key that causes the - command to be executed as the key is pressed. - - i{<Esc> Insert the { character. The <Esc> key ends Insert mode. - - e Move to the end of the word. - - a}<Esc> Append the } to the word. - -After you execute the ":map" command, all you have to do to put {} around a -word is to put the cursor on the first character and press F5. - -In this example, the trigger is a single key; it can be any string. But when -you use an existing Vim command, that command will no longer be available. -You better avoid that. - One key that can be used with mappings is the backslash. Since you -probably want to define more than one mapping, add another character. You -could map "\p" to add parentheses around a word, and "\c" to add curly braces, -for example: > - - :map \p i(<Esc>ea)<Esc> - :map \c i{<Esc>ea}<Esc> - -You need to type the \ and the p quickly after another, so that Vim knows they -belong together. - -The ":map" command (with no arguments) lists your current mappings. At -least the ones for Normal mode. More about mappings in section |40.1|. - -============================================================================== -*05.4* Adding a plugin *add-plugin* *plugin* - -Vim's functionality can be extended by adding plugins. A plugin is nothing -more than a Vim script file that is loaded automatically when Vim starts. You -can add a plugin very easily by dropping it in your plugin directory. -{not available when Vim was compiled without the |+eval| feature} - -There are two types of plugins: - - global plugin: Used for all kinds of files - filetype plugin: Only used for a specific type of file - -The global plugins will be discussed first, then the filetype ones -|add-filetype-plugin|. - - -GLOBAL PLUGINS *standard-plugin* - -When you start Vim, it will automatically load a number of global plugins. -You don't have to do anything for this. They add functionality that most -people will want to use, but which was implemented as a Vim script instead of -being compiled into Vim. You can find them listed in the help index -|standard-plugin-list|. Also see |load-plugins|. - - *add-global-plugin* -You can add a global plugin to add functionality that will always be present -when you use Vim. There are only two steps for adding a global plugin: -1. Get a copy of the plugin. -2. Drop it in the right directory. - - -GETTING A GLOBAL PLUGIN - -Where can you find plugins? -- Some come with Vim. You can find them in the directory $VIMRUNTIME/macros - and its sub-directories. -- Download from the net. There is a large collection on http://www.vim.org. -- They are sometimes posted in a Vim |maillist|. -- You could write one yourself, see |write-plugin|. - -Some plugins come as a vimball archive, see |vimball|. -Some plugins can be updated automatically, see |getscript|. - - -USING A GLOBAL PLUGIN - -First read the text in the plugin itself to check for any special conditions. -Then copy the file to your plugin directory: - - system plugin directory ~ - Unix ~/.vim/plugin/ - PC and OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin - Amiga s:vimfiles/plugin - Macintosh $VIM:vimfiles:plugin - Mac OS X ~/.vim/plugin/ - RISC-OS Choices:vimfiles.plugin - -Example for Unix (assuming you didn't have a plugin directory yet): > - - mkdir ~/.vim - mkdir ~/.vim/plugin - cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin - -That's all! Now you can use the commands defined in this plugin to justify -text. - -Instead of putting plugins directly into the plugin/ directory, you may -better organize them by putting them into subdirectories under plugin/. -As an example, consider using "~/.vim/plugin/perl/*.vim" for all your Perl -plugins. - - -FILETYPE PLUGINS *add-filetype-plugin* *ftplugins* - -The Vim distribution comes with a set of plugins for different filetypes that -you can start using with this command: > - - :filetype plugin on - -That's all! See |vimrc-filetype|. - -If you are missing a plugin for a filetype you are using, or you found a -better one, you can add it. There are two steps for adding a filetype plugin: -1. Get a copy of the plugin. -2. Drop it in the right directory. - - -GETTING A FILETYPE PLUGIN - -You can find them in the same places as the global plugins. Watch out if the -type of file is mentioned, then you know if the plugin is a global or a -filetype one. The scripts in $VIMRUNTIME/macros are global ones, the filetype -plugins are in $VIMRUNTIME/ftplugin. - - -USING A FILETYPE PLUGIN *ftplugin-name* - -You can add a filetype plugin by dropping it in the right directory. The -name of this directory is in the same directory mentioned above for global -plugins, but the last part is "ftplugin". Suppose you have found a plugin for -the "stuff" filetype, and you are on Unix. Then you can move this file to the -ftplugin directory: > - - mv thefile ~/.vim/ftplugin/stuff.vim - -If that file already exists you already have a plugin for "stuff". You might -want to check if the existing plugin doesn't conflict with the one you are -adding. If it's OK, you can give the new one another name: > - - mv thefile ~/.vim/ftplugin/stuff_too.vim - -The underscore is used to separate the name of the filetype from the rest, -which can be anything. If you use "otherstuff.vim" it wouldn't work, it would -be loaded for the "otherstuff" filetype. - -On MS-DOS you cannot use long filenames. You would run into trouble if you -add a second plugin and the filetype has more than six characters. You can -use an extra directory to get around this: > - - mkdir $VIM/vimfiles/ftplugin/fortran - copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim - -The generic names for the filetype plugins are: > - - ftplugin/<filetype>.vim - ftplugin/<filetype>_<name>.vim - ftplugin/<filetype>/<name>.vim - -Here "<name>" can be any name that you prefer. -Examples for the "stuff" filetype on Unix: > - - ~/.vim/ftplugin/stuff.vim - ~/.vim/ftplugin/stuff_def.vim - ~/.vim/ftplugin/stuff/header.vim - -The <filetype> part is the name of the filetype the plugin is to be used for. -Only files of this filetype will use the settings from the plugin. The <name> -part of the plugin file doesn't matter, you can use it to have several plugins -for the same filetype. Note that it must end in ".vim". - - -Further reading: -|filetype-plugins| Documentation for the filetype plugins and information - about how to avoid that mappings cause problems. -|load-plugins| When the global plugins are loaded during startup. -|ftplugin-overrule| Overruling the settings from a global plugin. -|write-plugin| How to write a plugin script. -|plugin-details| For more information about using plugins or when your - plugin doesn't work. -|new-filetype| How to detect a new file type. - -============================================================================== -*05.5* Adding a help file *add-local-help* *matchit-install* - -If you are lucky, the plugin you installed also comes with a help file. We -will explain how to install the help file, so that you can easily find help -for your new plugin. - Let us use the "matchit.vim" plugin as an example (it is included with -Vim). This plugin makes the "%" command jump to matching HTML tags, -if/else/endif in Vim scripts, etc. Very useful, although it's not backwards -compatible (that's why it is not enabled by default). - This plugin comes with documentation: "matchit.txt". Let's first copy the -plugin to the right directory. This time we will do it from inside Vim, so -that we can use $VIMRUNTIME. (You may skip some of the "mkdir" commands if -you already have the directory.) > - - :!mkdir ~/.vim - :!mkdir ~/.vim/plugin - :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin - -The "cp" command is for Unix, on MS-DOS you can use "copy". - -Now create a "doc" directory in one of the directories in 'runtimepath'. > - - :!mkdir ~/.vim/doc - -Copy the help file to the "doc" directory. > - - :!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc - -Now comes the trick, which allows you to jump to the subjects in the new help -file: Generate the local tags file with the |:helptags| command. > - - :helptags ~/.vim/doc - -Now you can use the > - - :help g% - -command to find help for "g%" in the help file you just added. You can see an -entry for the local help file when you do: > - - :help local-additions - -The title lines from the local help files are automagically added to this -section. There you can see which local help files have been added and jump to -them through the tag. - -For writing a local help file, see |write-local-help|. - -============================================================================== -*05.6* The option window - -If you are looking for an option that does what you want, you can search in -the help files here: |options|. Another way is by using this command: > - - :options - -This opens a new window, with a list of options with a one-line explanation. -The options are grouped by subject. Move the cursor to a subject and press -<Enter> to jump there. Press <Enter> again to jump back. Or use CTRL-O. - -You can change the value of an option. For example, move to the "displaying -text" subject. Then move the cursor down to this line: - - set wrap nowrap ~ - -When you hit <Enter>, the line will change to: - - set nowrap wrap ~ - -The option has now been switched off. - -Just above this line is a short description of the 'wrap' option. Move the -cursor one line up to place it in this line. Now hit <Enter> and you jump to -the full help on the 'wrap' option. - -For options that take a number or string argument you can edit the value. -Then press <Enter> to apply the new value. For example, move the cursor a few -lines up to this line: - - set so=0 ~ - -Position the cursor on the zero with "$". Change it into a five with "r5". -Then press <Enter> to apply the new value. When you now move the cursor -around you will notice that the text starts scrolling before you reach the -border. This is what the 'scrolloff' option does, it specifies an offset -from the window border where scrolling starts. - -============================================================================== -*05.7* Often used options - -There are an awful lot of options. Most of them you will hardly ever use. -Some of the more useful ones will be mentioned here. Don't forget you can -find more help on these options with the ":help" command, with single quotes -before and after the option name. For example: > - - :help 'wrap' - -In case you have messed up an option value, you can set it back to the -default by putting an ampersand (&) after the option name. Example: > - - :set iskeyword& - - -NOT WRAPPING LINES - -Vim normally wraps long lines, so that you can see all of the text. Sometimes -it's better to let the text continue right of the window. Then you need to -scroll the text left-right to see all of a long line. Switch wrapping off -with this command: > - - :set nowrap - -Vim will automatically scroll the text when you move to text that is not -displayed. To see a context of ten characters, do this: > - - :set sidescroll=10 - -This doesn't change the text in the file, only the way it is displayed. - - -WRAPPING MOVEMENT COMMANDS - -Most commands for moving around will stop moving at the start and end of a -line. You can change that with the 'whichwrap' option. This sets it to the -default value: > - - :set whichwrap=b,s - -This allows the <BS> key, when used in the first position of a line, to move -the cursor to the end of the previous line. And the <Space> key moves from -the end of a line to the start of the next one. - -To allow the cursor keys <Left> and <Right> to also wrap, use this command: > - - :set whichwrap=b,s,<,> - -This is still only for Normal mode. To let <Left> and <Right> do this in -Insert mode as well: > - - :set whichwrap=b,s,<,>,[,] - -There are a few other flags that can be added, see 'whichwrap'. - - -VIEWING TABS - -When there are tabs in a file, you cannot see where they are. To make them -visible: > - - :set list - -Now every tab is displayed as ^I. And a $ is displayed at the end of each -line, so that you can spot trailing spaces that would otherwise go unnoticed. - A disadvantage is that this looks ugly when there are many Tabs in a file. -If you have a color terminal, or are using the GUI, Vim can show the spaces -and tabs as highlighted characters. Use the 'listchars' option: > - - :set listchars=tab:>-,trail:- - -Now every tab will be displayed as ">---" (with more or less "-") and trailing -white space as "-". Looks a lot better, doesn't it? - - -KEYWORDS - -The 'iskeyword' option specifies which characters can appear in a word: > - - :set iskeyword -< iskeyword=@,48-57,_,192-255 ~ - -The "@" stands for all alphabetic letters. "48-57" stands for ASCII -characters 48 to 57, which are the numbers 0 to 9. "192-255" are the -printable latin characters. - Sometimes you will want to include a dash in keywords, so that commands -like "w" consider "upper-case" to be one word. You can do it like this: > - - :set iskeyword+=- - :set iskeyword -< iskeyword=@,48-57,_,192-255,- ~ - -If you look at the new value, you will see that Vim has added a comma for you. - To remove a character use "-=". For example, to remove the underscore: > - - :set iskeyword-=_ - :set iskeyword -< iskeyword=@,48-57,192-255,- ~ - -This time a comma is automatically deleted. - - -ROOM FOR MESSAGES - -When Vim starts there is one line at the bottom that is used for messages. -When a message is long, it is either truncated, thus you can only see part of -it, or the text scrolls and you have to press <Enter> to continue. - You can set the 'cmdheight' option to the number of lines used for -messages. Example: > - - :set cmdheight=3 - -This does mean there is less room to edit text, thus it's a compromise. - -============================================================================== - -Next chapter: |usr_06.txt| Using syntax highlighting - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_06.txt b/share/vim/vim73/doc/usr_06.txt deleted file mode 100644 index 208cc3ef..00000000 --- a/share/vim/vim73/doc/usr_06.txt +++ /dev/null @@ -1,280 +0,0 @@ -*usr_06.txt* For Vim version 7.3. Last change: 2009 Oct 28 - - VIM USER MANUAL - by Bram Moolenaar - - Using syntax highlighting - - -Black and white text is boring. With colors your file comes to life. This -not only looks nice, it also speeds up your work. Change the colors used for -the different sorts of text. Print your text, with the colors you see on the -screen. - -|06.1| Switching it on -|06.2| No or wrong colors? -|06.3| Different colors -|06.4| With colors or without colors -|06.5| Printing with colors -|06.6| Further reading - - Next chapter: |usr_07.txt| Editing more than one file - Previous chapter: |usr_05.txt| Set your settings -Table of contents: |usr_toc.txt| - -============================================================================== -*06.1* Switching it on - -It all starts with one simple command: > - - :syntax enable - -That should work in most situations to get color in your files. Vim will -automagically detect the type of file and load the right syntax highlighting. -Suddenly comments are blue, keywords brown and strings red. This makes it -easy to overview the file. After a while you will find that black&white text -slows you down! - -If you always want to use syntax highlighting, put the ":syntax enable" -command in your |vimrc| file. - -If you want syntax highlighting only when the terminal supports colors, you -can put this in your |vimrc| file: > - - if &t_Co > 1 - syntax enable - endif - -If you want syntax highlighting only in the GUI version, put the ":syntax -enable" command in your |gvimrc| file. - -============================================================================== -*06.2* No or wrong colors? - -There can be a number of reasons why you don't see colors: - -- Your terminal does not support colors. - Vim will use bold, italic and underlined text, but this doesn't look - very nice. You probably will want to try to get a terminal with - colors. For Unix, I recommend the xterm from the XFree86 project: - |xfree-xterm|. - -- Your terminal does support colors, but Vim doesn't know this. - Make sure your $TERM setting is correct. For example, when using an - xterm that supports colors: > - - setenv TERM xterm-color -< - or (depending on your shell): > - - TERM=xterm-color; export TERM - -< The terminal name must match the terminal you are using. If it - still doesn't work, have a look at |xterm-color|, which shows a few - ways to make Vim display colors (not only for an xterm). - -- The file type is not recognized. - Vim doesn't know all file types, and sometimes it's near to impossible - to tell what language a file uses. Try this command: > - - :set filetype -< - If the result is "filetype=" then the problem is indeed that Vim - doesn't know what type of file this is. You can set the type - manually: > - - :set filetype=fortran - -< To see which types are available, look in the directory - $VIMRUNTIME/syntax. For the GUI you can use the Syntax menu. - Setting the filetype can also be done with a |modeline|, so that the - file will be highlighted each time you edit it. For example, this - line can be used in a Makefile (put it near the start or end of the - file): > - - # vim: syntax=make - -< You might know how to detect the file type yourself. Often the file - name extension (after the dot) can be used. - See |new-filetype| for how to tell Vim to detect that file type. - -- There is no highlighting for your file type. - You could try using a similar file type by manually setting it as - mentioned above. If that isn't good enough, you can write your own - syntax file, see |mysyntaxfile|. - - -Or the colors could be wrong: - -- The colored text is very hard to read. - Vim guesses the background color that you are using. If it is black - (or another dark color) it will use light colors for text. If it is - white (or another light color) it will use dark colors for text. If - Vim guessed wrong the text will be hard to read. To solve this, set - the 'background' option. For a dark background: > - - :set background=dark - -< And for a light background: > - - :set background=light - -< Make sure you put this _before_ the ":syntax enable" command, - otherwise the colors will already have been set. You could do - ":syntax reset" after setting 'background' to make Vim set the default - colors again. - -- The colors are wrong when scrolling bottom to top. - Vim doesn't read the whole file to parse the text. It starts parsing - wherever you are viewing the file. That saves a lot of time, but - sometimes the colors are wrong. A simple fix is hitting CTRL-L. Or - scroll back a bit and then forward again. - For a real fix, see |:syn-sync|. Some syntax files have a way to make - it look further back, see the help for the specific syntax file. For - example, |tex.vim| for the TeX syntax. - -============================================================================== -*06.3* Different colors *:syn-default-override* - -If you don't like the default colors, you can select another color scheme. In -the GUI use the Edit/Color Scheme menu. You can also type the command: > - - :colorscheme evening - -"evening" is the name of the color scheme. There are several others you might -want to try out. Look in the directory $VIMRUNTIME/colors. - -When you found the color scheme that you like, add the ":colorscheme" command -to your |vimrc| file. - -You could also write your own color scheme. This is how you do it: - -1. Select a color scheme that comes close. Copy this file to your own Vim - directory. For Unix, this should work: > - - !mkdir ~/.vim/colors - !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim -< - This is done from Vim, because it knows the value of $VIMRUNTIME. - -2. Edit the color scheme file. These entries are useful: - - term attributes in a B&W terminal - cterm attributes in a color terminal - ctermfg foreground color in a color terminal - ctermbg background color in a color terminal - gui attributes in the GUI - guifg foreground color in the GUI - guibg background color in the GUI - - For example, to make comments green: > - - :highlight Comment ctermfg=green guifg=green -< - Attributes you can use for "cterm" and "gui" are "bold" and "underline". - If you want both, use "bold,underline". For details see the |:highlight| - command. - -3. Tell Vim to always use your color scheme. Put this line in your |vimrc|: > - - colorscheme mine - -If you want to see what the most often used color combinations look like, use -this command: > - - :runtime syntax/colortest.vim - -You will see text in various color combinations. You can check which ones are -readable and look nice. - -============================================================================== -*06.4* With colors or without colors - -Displaying text in color takes a lot of effort. If you find the displaying -too slow, you might want to disable syntax highlighting for a moment: > - - :syntax clear - -When editing another file (or the same one) the colors will come back. - - *:syn-off* -If you want to stop highlighting completely use: > - - :syntax off - -This will completely disable syntax highlighting and remove it immediately for -all buffers. - - *:syn-manual* -If you want syntax highlighting only for specific files, use this: > - - :syntax manual - -This will enable the syntax highlighting, but not switch it on automatically -when starting to edit a buffer. To switch highlighting on for the current -buffer, set the 'syntax' option: > - - :set syntax=ON -< -============================================================================== -*06.5* Printing with colors *syntax-printing* - -In the MS-Windows version you can print the current file with this command: > - - :hardcopy - -You will get the usual printer dialog, where you can select the printer and a -few settings. If you have a color printer, the paper output should look the -same as what you see inside Vim. But when you use a dark background the -colors will be adjusted to look good on white paper. - -There are several options that change the way Vim prints: - 'printdevice' - 'printheader' - 'printfont' - 'printoptions' - -To print only a range of lines, use Visual mode to select the lines and then -type the command: > - - v100j:hardcopy - -"v" starts Visual mode. "100j" moves a hundred lines down, they will be -highlighted. Then ":hardcopy" will print those lines. You can use other -commands to move in Visual mode, of course. - -This also works on Unix, if you have a PostScript printer. Otherwise, you -will have to do a bit more work. You need to convert the text to HTML first, -and then print it from a web browser. - -Convert the current file to HTML with this command: > - - :TOhtml - -In case that doesn't work: > - - :source $VIMRUNTIME/syntax/2html.vim - -You will see it crunching away, this can take quite a while for a large file. -Some time later another window shows the HTML code. Now write this somewhere -(doesn't matter where, you throw it away later): -> - :write main.c.html - -Open this file in your favorite browser and print it from there. If all goes -well, the output should look exactly as it does in Vim. See |2html.vim| for -details. Don't forget to delete the HTML file when you are done with it. - -Instead of printing, you could also put the HTML file on a web server, and let -others look at the colored text. - -============================================================================== -*06.6* Further reading - -|usr_44.txt| Your own syntax highlighted. -|syntax| All the details. - -============================================================================== - -Next chapter: |usr_07.txt| Editing more than one file - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_07.txt b/share/vim/vim73/doc/usr_07.txt deleted file mode 100644 index 4722ddbf..00000000 --- a/share/vim/vim73/doc/usr_07.txt +++ /dev/null @@ -1,479 +0,0 @@ -*usr_07.txt* For Vim version 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - Editing more than one file - - -No matter how many files you have, you can edit them without leaving Vim. -Define a list of files to work on and jump from one to the other. Copy text -from one file and put it in another one. - -|07.1| Edit another file -|07.2| A list of files -|07.3| Jumping from file to file -|07.4| Backup files -|07.5| Copy text between files -|07.6| Viewing a file -|07.7| Changing the file name - - Next chapter: |usr_08.txt| Splitting windows - Previous chapter: |usr_06.txt| Using syntax highlighting -Table of contents: |usr_toc.txt| - -============================================================================== -*07.1* Edit another file - -So far you had to start Vim for every file you wanted to edit. There is a -simpler way. To start editing another file, use this command: > - - :edit foo.txt - -You can use any file name instead of "foo.txt". Vim will close the current -file and open the new one. If the current file has unsaved changes, however, -Vim displays an error message and does not open the new file: - - E37: No write since last change (use ! to override) ~ - - Note: - Vim puts an error ID at the start of each error message. If you do - not understand the message or what caused it, look in the help system - for this ID. In this case: > - - :help E37 - -At this point, you have a number of alternatives. You can write the file -using this command: > - - :write - -Or you can force Vim to discard your changes and edit the new file, using the -force (!) character: > - - :edit! foo.txt - -If you want to edit another file, but not write the changes in the current -file yet, you can make it hidden: > - - :hide edit foo.txt - -The text with changes is still there, but you can't see it. This is further -explained in section |22.4|: The buffer list. - -============================================================================== -*07.2* A list of files - -You can start Vim to edit a sequence of files. For example: > - - vim one.c two.c three.c - -This command starts Vim and tells it that you will be editing three files. -Vim displays just the first file. After you have done your thing in this -file, to edit the next file you use this command: > - - :next - -If you have unsaved changes in the current file, you will get an error -message and the ":next" will not work. This is the same problem as with -":edit" mentioned in the previous section. To abandon the changes: > - - :next! - -But mostly you want to save the changes and move on to the next file. There -is a special command for this: > - - :wnext - -This does the same as using two separate commands: > - - :write - :next - - -WHERE AM I? - -To see which file in the argument list you are editing, look in the window -title. It should show something like "(2 of 3)". This means you are editing -the second file out of three files. - If you want to see the list of files, use this command: > - - :args - -This is short for "arguments". The output might look like this: - - one.c [two.c] three.c ~ - -These are the files you started Vim with. The one you are currently editing, -"two.c", is in square brackets. - - -MOVING TO OTHER ARGUMENTS - -To go back one file: > - - :previous - -This is just like the ":next" command, except that it moves in the other -direction. Again, there is a shortcut command for when you want to write the -file first: > - - :wprevious - -To move to the very last file in the list: > - - :last - -And to move back to the first one again: > - - :first - -There is no ":wlast" or ":wfirst" command though! - -You can use a count for ":next" and ":previous". To skip two files forward: > - - :2next - - -AUTOMATIC WRITING - -When moving around the files and making changes, you have to remember to use -":write". Otherwise you will get an error message. If you are sure you -always want to write modified files, you can tell Vim to automatically write -them: > - - :set autowrite - -When you are editing a file which you may not want to write, switch it off -again: > - - :set noautowrite - - -EDITING ANOTHER LIST OF FILES - -You can redefine the list of files without the need to exit Vim and start it -again. Use this command to edit three other files: > - - :args five.c six.c seven.h - -Or use a wildcard, like it's used in the shell: > - - :args *.txt - -Vim will take you to the first file in the list. Again, if the current file -has changes, you can either write the file first, or use ":args!" (with ! -added) to abandon the changes. - - -DID YOU EDIT THE LAST FILE? - *arglist-quit* -When you use a list of files, Vim assumes you want to edit them all. To -protect you from exiting too early, you will get this error when you didn't -edit the last file in the list yet: - - E173: 46 more files to edit ~ - -If you really want to exit, just do it again. Then it will work (but not when -you did other commands in between). - -============================================================================== -*07.3* Jumping from file to file - -To quickly jump between two files, press CTRL-^ (on English-US keyboards the ^ -is above the 6 key). Example: > - - :args one.c two.c three.c - -You are now in one.c. > - - :next - -Now you are in two.c. Now use CTRL-^ to go back to one.c. Another CTRL-^ and -you are back in two.c. Another CTRL-^ and you are in one.c again. If you now -do: > - - :next - -You are in three.c. Notice that the CTRL-^ command does not change the idea -of where you are in the list of files. Only commands like ":next" and -":previous" do that. - -The file you were previously editing is called the "alternate" file. When you -just started Vim CTRL-^ will not work, since there isn't a previous file. - - -PREDEFINED MARKS - -After jumping to another file, you can use two predefined marks which are very -useful: > - - `" - -This takes you to the position where the cursor was when you left the file. -Another mark that is remembered is the position where you made the last -change: > - - `. - -Suppose you are editing the file "one.txt". Somewhere halfway the file you -use "x" to delete a character. Then you go to the last line with "G" and -write the file with ":w". You edit several other files, and then use ":edit -one.txt" to come back to "one.txt". If you now use `" Vim jumps to the last -line of the file. Using `. takes you to the position where you deleted the -character. Even when you move around in the file `" and `. will take you to -the remembered position. At least until you make another change or leave the -file. - - -FILE MARKS - -In chapter 4 was explained how you can place a mark in a file with "mx" and -jump to that position with "`x". That works within one file. If you edit -another file and place marks there, these are specific for that file. Thus -each file has its own set of marks, they are local to the file. - So far we were using marks with a lowercase letter. There are also marks -with an uppercase letter. These are global, they can be used from any file. -For example suppose that we are editing the file "foo.txt". Go to halfway the -file ("50%") and place the F mark there (F for foo): > - - 50%mF - -Now edit the file "bar.txt" and place the B mark (B for bar) at its last line: -> - GmB - -Now you can use the "'F" command to jump back to halfway foo.txt. Or edit yet -another file, type "'B" and you are at the end of bar.txt again. - -The file marks are remembered until they are placed somewhere else. Thus you -can place the mark, do hours of editing and still be able to jump back to that -mark. - It's often useful to think of a simple connection between the mark letter -and where it is placed. For example, use the H mark in a header file, M in -a Makefile and C in a C code file. - -To see where a specific mark is, give an argument to the ":marks" command: > - - :marks M - -You can also give several arguments: > - - :marks MCP - -Don't forget that you can use CTRL-O and CTRL-I to jump to older and newer -positions without placing marks there. - -============================================================================== -*07.4* Backup files - -Usually Vim does not produce a backup file. If you want to have one, all you -need to do is execute the following command: > - - :set backup - -The name of the backup file is the original file with a ~ added to the end. -If your file is named data.txt, for example, the backup file name is -data.txt~. - If you do not like the fact that the backup files end with ~, you can -change the extension: > - - :set backupext=.bak - -This will use data.txt.bak instead of data.txt~. - Another option that matters here is 'backupdir'. It specifies where the -backup file is written. The default, to write the backup in the same -directory as the original file, will mostly be the right thing. - - Note: - When the 'backup' option isn't set but the 'writebackup' is, Vim will - still create a backup file. However, it is deleted as soon as writing - the file was completed successfully. This functions as a safety - against losing your original file when writing fails in some way (disk - full is the most common cause; being hit by lightning might be - another, although less common). - - -KEEPING THE ORIGINAL FILE - -If you are editing source files, you might want to keep the file before you -make any changes. But the backup file will be overwritten each time you write -the file. Thus it only contains the previous version, not the first one. - To make Vim keep the original file, set the 'patchmode' option. This -specifies the extension used for the first backup of a changed file. Usually -you would do this: > - - :set patchmode=.orig - -When you now edit the file data.txt for the first time, make changes and write -the file, Vim will keep a copy of the unchanged file under the name -"data.txt.orig". - If you make further changes to the file, Vim will notice that -"data.txt.orig" already exists and leave it alone. Further backup files will -then be called "data.txt~" (or whatever you specified with 'backupext'). - If you leave 'patchmode' empty (that is the default), the original file -will not be kept. - -============================================================================== -*07.5* Copy text between files - -This explains how to copy text from one file to another. Let's start with a -simple example. Edit the file that contains the text you want to copy. Move -the cursor to the start of the text and press "v". This starts Visual mode. -Now move the cursor to the end of the text and press "y". This yanks (copies) -the selected text. - To copy the above paragraph, you would do: > - - :edit thisfile - /This - vjjjj$y - -Now edit the file you want to put the text in. Move the cursor to the -character where you want the text to appear after. Use "p" to put the text -there. > - :edit otherfile - /There - p - -Of course you can use many other commands to yank the text. For example, to -select whole lines start Visual mode with "V". Or use CTRL-V to select a -rectangular block. Or use "Y" to yank a single line, "yaw" to yank-a-word, -etc. - The "p" command puts the text after the cursor. Use "P" to put the text -before the cursor. Notice that Vim remembers if you yanked a whole line or a -block, and puts it back that way. - - -USING REGISTERS - -When you want to copy several pieces of text from one file to another, having -to switch between the files and writing the target file takes a lot of time. -To avoid this, copy each piece of text to its own register. - A register is a place where Vim stores text. Here we will use the -registers named a to z (later you will find out there are others). Let's copy -a sentence to the f register (f for First): > - - "fyas - -The "yas" command yanks a sentence like before. It's the "f that tells Vim -the text should be place in the f register. This must come just before the -yank command. - Now yank three whole lines to the l register (l for line): > - - "l3Y - -The count could be before the "l just as well. To yank a block of text to the -b (for block) register: > - - CTRL-Vjjww"by - -Notice that the register specification "b is just before the "y" command. -This is required. If you would have put it before the "w" command, it would -not have worked. - Now you have three pieces of text in the f, l and b registers. Edit -another file, move around and place the text where you want it: > - - "fp - -Again, the register specification "f comes before the "p" command. - You can put the registers in any order. And the text stays in the register -until you yank something else into it. Thus you can put it as many times as -you like. - -When you delete text, you can also specify a register. Use this to move -several pieces of text around. For example, to delete-a-word and write it in -the w register: > - - "wdaw - -Again, the register specification comes before the delete command "d". - - -APPENDING TO A FILE - -When collecting lines of text into one file, you can use this command: > - - :write >> logfile - -This will write the text of the current file to the end of "logfile". Thus it -is appended. This avoids that you have to copy the lines, edit the log file -and put them there. Thus you save two steps. But you can only append to the -end of a file. - To append only a few lines, select them in Visual mode before typing -":write". In chapter 10 you will learn other ways to select a range of lines. - -============================================================================== -*07.6* Viewing a file - -Sometimes you only want to see what a file contains, without the intention to -ever write it back. There is the risk that you type ":w" without thinking and -overwrite the original file anyway. To avoid this, edit the file read-only. - To start Vim in readonly mode, use this command: > - - vim -R file - -On Unix this command should do the same thing: > - - view file - -You are now editing "file" in read-only mode. When you try using ":w" you -will get an error message and the file won't be written. - When you try to make a change to the file Vim will give you a warning: - - W10: Warning: Changing a readonly file ~ - -The change will be done though. This allows for formatting the file, for -example, to be able to read it easily. - If you make changes to a file and forgot that it was read-only, you can -still write it. Add the ! to the write command to force writing. - -If you really want to forbid making changes in a file, do this: > - - vim -M file - -Now every attempt to change the text will fail. The help files are like this, -for example. If you try to make a change you get this error message: - - E21: Cannot make changes, 'modifiable' is off ~ - -You could use the -M argument to setup Vim to work in a viewer mode. This is -only voluntary though, since these commands will remove the protection: > - - :set modifiable - :set write - -============================================================================== -*07.7* Changing the file name - -A clever way to start editing a new file is by using an existing file that -contains most of what you need. For example, you start writing a new program -to move a file. You know that you already have a program that copies a file, -thus you start with: > - - :edit copy.c - -You can delete the stuff you don't need. Now you need to save the file under -a new name. The ":saveas" command can be used for this: > - - :saveas move.c - -Vim will write the file under the given name, and edit that file. Thus the -next time you do ":write", it will write "move.c". "copy.c" remains -unmodified. - When you want to change the name of the file you are editing, but don't -want to write the file, you can use this command: > - - :file move.c - -Vim will mark the file as "not edited". This means that Vim knows this is not -the file you started editing. When you try to write the file, you might get -this message: - - E13: File exists (use ! to override) ~ - -This protects you from accidentally overwriting another file. - -============================================================================== - -Next chapter: |usr_08.txt| Splitting windows - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_08.txt b/share/vim/vim73/doc/usr_08.txt deleted file mode 100644 index 9a928020..00000000 --- a/share/vim/vim73/doc/usr_08.txt +++ /dev/null @@ -1,601 +0,0 @@ -*usr_08.txt* For Vim version 7.3. Last change: 2006 Jul 18 - - VIM USER MANUAL - by Bram Moolenaar - - Splitting windows - - -Display two different files above each other. Or view two locations in the -file at the same time. See the difference between two files by putting them -side by side. All this is possible with split windows. - -|08.1| Split a window -|08.2| Split a window on another file -|08.3| Window size -|08.4| Vertical splits -|08.5| Moving windows -|08.6| Commands for all windows -|08.7| Viewing differences with vimdiff -|08.8| Various -|08.9| Tab pages - - Next chapter: |usr_09.txt| Using the GUI - Previous chapter: |usr_07.txt| Editing more than one file -Table of contents: |usr_toc.txt| - -============================================================================== -*08.1* Split a window - -The easiest way to open a new window is to use the following command: > - - :split - -This command splits the screen into two windows and leaves the cursor in the -top one: - - +----------------------------------+ - |/* file one.c */ | - |~ | - |~ | - |one.c=============================| - |/* file one.c */ | - |~ | - |one.c=============================| - | | - +----------------------------------+ - -What you see here is two windows on the same file. The line with "====" is -that status line. It displays information about the window above it. (In -practice the status line will be in reverse video.) - The two windows allow you to view two parts of the same file. For example, -you could make the top window show the variable declarations of a program, and -the bottom one the code that uses these variables. - -The CTRL-W w command can be used to jump between the windows. If you are in -the top window, CTRL-W w jumps to the window below it. If you are in the -bottom window it will jump to the first window. (CTRL-W CTRL-W does the same -thing, in case you let go of the CTRL key a bit later.) - - -CLOSE THE WINDOW - -To close a window, use the command: > - - :close - -Actually, any command that quits editing a file works, like ":quit" and "ZZ". -But ":close" prevents you from accidentally exiting Vim when you close the -last window. - - -CLOSING ALL OTHER WINDOWS - -If you have opened a whole bunch of windows, but now want to concentrate on -one of them, this command will be useful: > - - :only - -This closes all windows, except for the current one. If any of the other -windows has changes, you will get an error message and that window won't be -closed. - -============================================================================== -*08.2* Split a window on another file - -The following command opens a second window and starts editing the given file: -> - :split two.c - -If you were editing one.c, then the result looks like this: - - +----------------------------------+ - |/* file two.c */ | - |~ | - |~ | - |two.c=============================| - |/* file one.c */ | - |~ | - |one.c=============================| - | | - +----------------------------------+ - -To open a window on a new, empty file, use this: > - - :new - -You can repeat the ":split" and ":new" commands to create as many windows as -you like. - -============================================================================== -*08.3* Window size - -The ":split" command can take a number argument. If specified, this will be -the height of the new window. For example, the following opens a new window -three lines high and starts editing the file alpha.c: > - - :3split alpha.c - -For existing windows you can change the size in several ways. When you have a -working mouse, it is easy: Move the mouse pointer to the status line that -separates two windows, and drag it up or down. - -To increase the size of a window: > - - CTRL-W + - -To decrease it: > - - CTRL-W - - -Both of these commands take a count and increase or decrease the window size -by that many lines. Thus "4 CTRL-W +" make the window four lines higher. - -To set the window height to a specified number of lines: > - - {height}CTRL-W _ - -That's: a number {height}, CTRL-W and then an underscore (the - key with Shift -on English-US keyboards). - To make a window as high as it can be, use the CTRL-W _ command without a -count. - - -USING THE MOUSE - -In Vim you can do many things very quickly from the keyboard. Unfortunately, -the window resizing commands require quite a bit of typing. In this case, -using the mouse is faster. Position the mouse pointer on a status line. Now -press the left mouse button and drag. The status line will move, thus making -the window on one side higher and the other smaller. - - -OPTIONS - -The 'winheight' option can be set to a minimal desired height of a window and -'winminheight' to a hard minimum height. - Likewise, there is 'winwidth' for the minimal desired width and -'winminwidth' for the hard minimum width. - The 'equalalways' option, when set, makes Vim equalize the windows sizes -when a window is closed or opened. - -============================================================================== -*08.4* Vertical splits - -The ":split" command creates the new window above the current one. To make -the window appear at the left side, use: > - - :vsplit - -or: > - :vsplit two.c - -The result looks something like this: - - +--------------------------------------+ - |/* file two.c */ |/* file one.c */ | - |~ |~ | - |~ |~ | - |~ |~ | - |two.c===============one.c=============| - | | - +--------------------------------------+ - -Actually, the | lines in the middle will be in reverse video. This is called -the vertical separator. It separates the two windows left and right of it. - -There is also the ":vnew" command, to open a vertically split window on a new, -empty file. Another way to do this: > - - :vertical new - -The ":vertical" command can be inserted before another command that splits a -window. This will cause that command to split the window vertically instead -of horizontally. (If the command doesn't split a window, it works -unmodified.) - - -MOVING BETWEEN WINDOWS - -Since you can split windows horizontally and vertically as much as you like, -you can create almost any layout of windows. Then you can use these commands -to move between them: - - CTRL-W h move to the window on the left - CTRL-W j move to the window below - CTRL-W k move to the window above - CTRL-W l move to the window on the right - - CTRL-W t move to the TOP window - CTRL-W b move to the BOTTOM window - -You will notice the same letters as used for moving the cursor. And the -cursor keys can also be used, if you like. - More commands to move to other windows: |Q_wi|. - -============================================================================== -*08.5* Moving windows - -You have split a few windows, but now they are in the wrong place. Then you -need a command to move the window somewhere else. For example, you have three -windows like this: - - +----------------------------------+ - |/* file two.c */ | - |~ | - |~ | - |two.c=============================| - |/* file three.c */ | - |~ | - |~ | - |three.c===========================| - |/* file one.c */ | - |~ | - |one.c=============================| - | | - +----------------------------------+ - -Clearly the last one should be at the top. Go to that window (using CTRL-W w) -and the type this command: > - - CTRL-W K - -This uses the uppercase letter K. What happens is that the window is moved to -the very top. You will notice that K is again used for moving upwards. - When you have vertical splits, CTRL-W K will move the current window to the -top and make it occupy the full width of the Vim window. If this is your -layout: - - +-------------------------------------------+ - |/* two.c */ |/* three.c */ |/* one.c */ | - |~ |~ |~ | - |~ |~ |~ | - |~ |~ |~ | - |~ |~ |~ | - |~ |~ |~ | - |two.c=========three.c=========one.c========| - | | - +-------------------------------------------+ - -Then using CTRL-W K in the middle window (three.c) will result in: - - +-------------------------------------------+ - |/* three.c */ | - |~ | - |~ | - |three.c====================================| - |/* two.c */ |/* one.c */ | - |~ |~ | - |two.c==================one.c===============| - | | - +-------------------------------------------+ - -The other three similar commands (you can probably guess these now): - - CTRL-W H move window to the far left - CTRL-W J move window to the bottom - CTRL-W L move window to the far right - -============================================================================== -*08.6* Commands for all windows - -When you have several windows open and you want to quit Vim, you can close -each window separately. A quicker way is using this command: > - - :qall - -This stands for "quit all". If any of the windows contain changes, Vim will -not exit. The cursor will automatically be positioned in a window with -changes. You can then either use ":write" to save the changes, or ":quit!" to -throw them away. - -If you know there are windows with changes, and you want to save all these -changes, use this command: > - - :wall - -This stands for "write all". But actually, it only writes files with -changes. Vim knows it doesn't make sense to write files that were not -changed. - And then there is the combination of ":qall" and ":wall": the "write and -quit all" command: > - - :wqall - -This writes all modified files and quits Vim. - Finally, there is a command that quits Vim and throws away all changes: > - - :qall! - -Be careful, there is no way to undo this command! - - -OPENING A WINDOW FOR ALL ARGUMENTS - -To make Vim open a window for each file, start it with the "-o" argument: > - - vim -o one.txt two.txt three.txt - -This results in: - - +-------------------------------+ - |file one.txt | - |~ | - |one.txt========================| - |file two.txt | - |~ | - |two.txt========================| - |file three.txt | - |~ | - |three.txt======================| - | | - +-------------------------------+ - -The "-O" argument is used to get vertically split windows. - When Vim is already running, the ":all" command opens a window for each -file in the argument list. ":vertical all" does it with vertical splits. - -============================================================================== -*08.7* Viewing differences with vimdiff - -There is a special way to start Vim, which shows the differences between two -files. Let's take a file "main.c" and insert a few characters in one line. -Write this file with the 'backup' option set, so that the backup file -"main.c~" will contain the previous version of the file. - Type this command in a shell (not in Vim): > - - vimdiff main.c~ main.c - -Vim will start, with two windows side by side. You will only see the line -in which you added characters, and a few lines above and below it. - - VV VV - +-----------------------------------------+ - |+ +--123 lines: /* a|+ +--123 lines: /* a| <- fold - | text | text | - | text | text | - | text | text | - | text | changed text | <- changed line - | text | text | - | text | ------------------| <- deleted line - | text | text | - | text | text | - | text | text | - |+ +--432 lines: text|+ +--432 lines: text| <- fold - | ~ | ~ | - | ~ | ~ | - |main.c~==============main.c==============| - | | - +-----------------------------------------+ - -(This picture doesn't show the highlighting, use the vimdiff command for a -better look.) - -The lines that were not modified have been collapsed into one line. This is -called a closed fold. They are indicated in the picture with "<- fold". Thus -the single fold line at the top stands for 123 text lines. These lines are -equal in both files. - The line marked with "<- changed line" is highlighted, and the inserted -text is displayed with another color. This clearly shows what the difference -is between the two files. - The line that was deleted is displayed with "---" in the main.c window. -See the "<- deleted line" marker in the picture. These characters are not -really there. They just fill up main.c, so that it displays the same number -of lines as the other window. - - -THE FOLD COLUMN - -Each window has a column on the left with a slightly different background. In -the picture above these are indicated with "VV". You notice there is a plus -character there, in front of each closed fold. Move the mouse pointer to that -plus and click the left button. The fold will open, and you can see the text -that it contains. - The fold column contains a minus sign for an open fold. If you click on -this -, the fold will close. - Obviously, this only works when you have a working mouse. You can also use -"zo" to open a fold and "zc" to close it. - - -DIFFING IN VIM - -Another way to start in diff mode can be done from inside Vim. Edit the -"main.c" file, then make a split and show the differences: > - - :edit main.c - :vertical diffsplit main.c~ - -The ":vertical" command is used to make the window split vertically. If you -omit this, you will get a horizontal split. - -If you have a patch or diff file, you can use the third way to start diff -mode. First edit the file to which the patch applies. Then tell Vim the name -of the patch file: > - - :edit main.c - :vertical diffpatch main.c.diff - -WARNING: The patch file must contain only one patch, for the file you are -editing. Otherwise you will get a lot of error messages, and some files might -be patched unexpectedly. - The patching will only be done to the copy of the file in Vim. The file on -your harddisk will remain unmodified (until you decide to write the file). - - -SCROLL BINDING - -When the files have more changes, you can scroll in the usual way. Vim will -try to keep both the windows start at the same position, so you can easily see -the differences side by side. - When you don't want this for a moment, use this command: > - - :set noscrollbind - - -JUMPING TO CHANGES - -When you have disabled folding in some way, it may be difficult to find the -changes. Use this command to jump forward to the next change: > - - ]c - -To go the other way use: > - - [c - -Prepended a count to jump further away. - - -REMOVING CHANGES - -You can move text from one window to the other. This either removes -differences or adds new ones. Vim doesn't keep the highlighting updated in -all situations. To update it use this command: > - - :diffupdate - -To remove a difference, you can move the text in a highlighted block from one -window to another. Take the "main.c" and "main.c~" example above. Move the -cursor to the left window, on the line that was deleted in the other window. -Now type this command: > - - dp - -The change will be removed by putting the text of the current window in the -other window. "dp" stands for "diff put". - You can also do it the other way around. Move the cursor to the right -window, to the line where "changed" was inserted. Now type this command: > - - do - -The change will now be removed by getting the text from the other window. -Since there are no changes left now, Vim puts all text in a closed fold. -"do" stands for "diff obtain". "dg" would have been better, but that already -has a different meaning ("dgg" deletes from the cursor until the first line). - -For details about diff mode, see |vimdiff|. - -============================================================================== -*08.8* Various - -The 'laststatus' option can be used to specify when the last window has a -statusline: - - 0 never - 1 only when there are split windows (the default) - 2 always - -Many commands that edit another file have a variant that splits the window. -For Command-line commands this is done by prepending an "s". For example: -":tag" jumps to a tag, ":stag" splits the window and jumps to a -tag. - For Normal mode commands a CTRL-W is prepended. CTRL-^ jumps to the -alternate file, CTRL-W CTRL-^ splits the window and edits the alternate file. - -The 'splitbelow' option can be set to make a new window appear below the -current window. The 'splitright' option can be set to make a vertically split -window appear right of the current window. - -When splitting a window you can prepend a modifier command to tell where the -window is to appear: - - :leftabove {cmd} left or above the current window - :aboveleft {cmd} idem - :rightbelow {cmd} right or below the current window - :belowright {cmd} idem - :topleft {cmd} at the top or left of the Vim window - :botright {cmd} at the bottom or right of the Vim window - - -============================================================================== -*08.9* Tab pages - -You will have noticed that windows never overlap. That means you quickly run -out of screen space. The solution for this is called Tab pages. - -Assume you are editing "thisfile". To create a new tab page use this command: > - - :tabedit thatfile - -This will edit the file "thatfile" in a window that occupies the whole Vim -window. And you will notice a bar at the top with the two file names: - - +----------------------------------+ - | thisfile | /thatfile/ __________X| (thatfile is bold) - |/* thatfile */ | - |that | - |that | - |~ | - |~ | - |~ | - | | - +----------------------------------+ - -You now have two tab pages. The first one has a window for "thisfile" and the -second one a window for "thatfile". It's like two pages that are on top of -eachother, with a tab sticking out of each page showing the file name. - -Now use the mouse to click on "thisfile" in the top line. The result is - - +----------------------------------+ - | /thisfile/ | thatfile __________X| (thisfile is bold) - |/* thisfile */ | - |this | - |this | - |~ | - |~ | - |~ | - | | - +----------------------------------+ - -Thus you can switch between tab pages by clicking on the label in the top -line. If you don't have a mouse or don't want to use it, you can use the "gt" -command. Mnemonic: Goto Tab. - -Now let's create another tab page with the command: > - - :tab split - -This makes a new tab page with one window that is editing the same buffer as -the window we were in: - - +-------------------------------------+ - | thisfile | /thisfile/ | thatfile __X| (thisfile is bold) - |/* thisfile */ | - |this | - |this | - |~ | - |~ | - |~ | - | | - +-------------------------------------+ - -You can put ":tab" before any Ex command that opens a window. The window will -be opened in a new tab page. Another example: > - - :tab help gt - -Will show the help text for "gt" in a new tab page. - -A few more things you can do with tab pages: - -- click with the mouse in the space after the last label - The next tab page will be selected, like with "gt". - -- click with the mouse on the "X" in the top right corner - The current tab page will be closed. Unless there are unsaved - changes in the current tab page. - -- double click with the mouse in the top line - A new tab page will be created. - -- the "tabonly" command - Closes all tab pages except the current one. Unless there are unsaved - changes in other tab pages. - -For more information about tab pages see |tab-page|. - -============================================================================== - -Next chapter: |usr_09.txt| Using the GUI - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_09.txt b/share/vim/vim73/doc/usr_09.txt deleted file mode 100644 index fbc38656..00000000 --- a/share/vim/vim73/doc/usr_09.txt +++ /dev/null @@ -1,289 +0,0 @@ -*usr_09.txt* For Vim version 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - Using the GUI - - -Vim works in an ordinary terminal. GVim can do the same things and a few -more. The GUI offers menus, a toolbar, scrollbars and other items. This -chapter is about these extra things that the GUI offers. - -|09.1| Parts of the GUI -|09.2| Using the mouse -|09.3| The clipboard -|09.4| Select mode - - Next chapter: |usr_10.txt| Making big changes - Previous chapter: |usr_08.txt| Splitting windows -Table of contents: |usr_toc.txt| - -============================================================================== -*09.1* Parts of the GUI - -You might have an icon on your desktop that starts gVim. Otherwise, one of -these commands should do it: > - - gvim file.txt - vim -g file.txt - -If this doesn't work you don't have a version of Vim with GUI support. You -will have to install one first. - Vim will open a window and display "file.txt" in it. What the window looks -like depends on the version of Vim. It should resemble the following picture -(for as far as this can be shown in ASCII!). - - +----------------------------------------------------+ - | file.txt + (~/dir) - VIM X | <- window title - +----------------------------------------------------+ - | File Edit Tools Syntax Buffers Window Help | <- menubar - +----------------------------------------------------+ - | aaa bbb ccc ddd eee fff ggg hhh iii jjj | <- toolbar - | aaa bbb ccc ddd eee fff ggg hhh iii jjj | - +----------------------------------------------------+ - | file text | ^ | - | ~ | # | - | ~ | # | <- scrollbar - | ~ | # | - | ~ | # | - | ~ | # | - | | V | - +----------------------------------------------------+ - -The largest space is occupied by the file text. This shows the file in the -same way as in a terminal. With some different colors and another font -perhaps. - - -THE WINDOW TITLE - -At the very top is the window title. This is drawn by your window system. -Vim will set the title to show the name of the current file. First comes the -name of the file. Then some special characters and the directory of the file -in parens. These special character can be present: - - - The file cannot be modified (e.g., a help file) - + The file contains changes - = The file is read-only - =+ The file is read-only, contains changes anyway - -If nothing is shown you have an ordinary, unchanged file. - - -THE MENUBAR - -You know how menus work, right? Vim has the usual items, plus a few more. -Browse them to get an idea of what you can use them for. A relevant submenu -is Edit/Global Settings. You will find these entries: - - Toggle Toolbar make the toolbar appear/disappear - Toggle Bottom Scrollbar make a scrollbar appear/disappear at the bottom - Toggle Left Scrollbar make a scrollbar appear/disappear at the left - Toggle Right Scrollbar make a scrollbar appear/disappear at the right - -On most systems you can tear-off the menus. Select the top item of the menu, -the one that looks like a dashed line. You will get a separate window with -the items of the menu. It will hang around until you close the window. - - -THE TOOLBAR - -This contains icons for the most often used actions. Hopefully the icons are -self-explanatory. There are tooltips to get an extra hint (move the mouse -pointer to the icon without clicking and don't move it for a second). - -The "Edit/Global Settings/Toggle Toolbar" menu item can be used to make the -toolbar disappear. If you never want a toolbar, use this command in your -vimrc file: > - - :set guioptions-=T - -This removes the 'T' flag from the 'guioptions' option. Other parts of the -GUI can also be enabled or disabled with this option. See the help for it. - - -THE SCROLLBARS - -By default there is one scrollbar on the right. It does the obvious thing. -When you split the window, each window will get its own scrollbar. - You can make a horizontal scrollbar appear with the menu item -Edit/Global Settings/Toggle Bottom Scrollbar. This is useful in diff mode, or -when the 'wrap' option has been reset (more about that later). - -When there are vertically split windows, only the windows on the right side -will have a scrollbar. However, when you move the cursor to a window on the -left, it will be this one the that scrollbar controls. This takes a bit of -time to get used to. - When you work with vertically split windows, consider adding a scrollbar on -the left. This can be done with a menu item, or with the 'guioptions' option: -> - :set guioptions+=l - -This adds the 'l' flag to 'guioptions'. - -============================================================================== -*09.2* Using the mouse - -Standards are wonderful. In Microsoft Windows, you can use the mouse to -select text in a standard manner. The X Window system also has a standard -system for using the mouse. Unfortunately, these two standards are not the -same. - Fortunately, you can customize Vim. You can make the behavior of the mouse -work like an X Window system mouse or a Microsoft Windows mouse. The following -command makes the mouse behave like an X Window mouse: > - - :behave xterm - -The following command makes the mouse work like a Microsoft Windows mouse: > - - :behave mswin - -The default behavior of the mouse on UNIX systems is xterm. The default -behavior on a Microsoft Windows system is selected during the installation -process. For details about what the two behaviors are, see |:behave|. Here -follows a summary. - - -XTERM MOUSE BEHAVIOR - -Left mouse click position the cursor -Left mouse drag select text in Visual mode -Middle mouse click paste text from the clipboard -Right mouse click extend the selected text until the mouse - pointer - - -MSWIN MOUSE BEHAVIOR - -Left mouse click position the cursor -Left mouse drag select text in Select mode (see |09.4|) -Left mouse click, with Shift extend the selected text until the mouse - pointer -Middle mouse click paste text from the clipboard -Right mouse click display a pop-up menu - - -The mouse can be further tuned. Check out these options if you want to change -the way how the mouse works: - - 'mouse' in which mode the mouse is used by Vim - 'mousemodel' what effect a mouse click has - 'mousetime' time between clicks for a double-click - 'mousehide' hide the mouse while typing - 'selectmode' whether the mouse starts Visual or Select mode - -============================================================================== -*09.3* The clipboard - -In section |04.7| the basic use of the clipboard was explained. There is one -essential thing to explain about X-windows: There are actually two places to -exchange text between programs. MS-Windows doesn't have this. - -In X-Windows there is the "current selection". This is the text that is -currently highlighted. In Vim this is the Visual area (this assumes you are -using the default option settings). You can paste this selection in another -application without any further action. - For example, in this text select a few words with the mouse. Vim will -switch to Visual mode and highlight the text. Now start another gVim, without -a file name argument, so that it displays an empty window. Click the middle -mouse button. The selected text will be inserted. - -The "current selection" will only remain valid until some other text is -selected. After doing the paste in the other gVim, now select some characters -in that window. You will notice that the words that were previously selected -in the other gVim window are displayed differently. This means that it no -longer is the current selection. - -You don't need to select text with the mouse, using the keyboard commands for -Visual mode works just as well. - - -THE REAL CLIPBOARD - -Now for the other place with which text can be exchanged. We call this the -"real clipboard", to avoid confusion. Often both the "current selection" and -the "real clipboard" are called clipboard, you'll have to get used to that. - To put text on the real clipboard, select a few different words in one of -the gVims you have running. Then use the Edit/Copy menu entry. Now the text -has been copied to the real clipboard. You can't see this, unless you have -some application that shows the clipboard contents (e.g., KDE's klipper). - Now select the other gVim, position the cursor somewhere and use the -Edit/Paste menu. You will see the text from the real clipboard is inserted. - - -USING BOTH - -This use of both the "current selection" and the "real clipboard" might sound -a bit confusing. But it is very useful. Let's show this with an example. -Use one gVim with a text file and perform these actions: - -- Select two words in Visual mode. -- Use the Edit/Copy menu to get these words onto the clipboard. -- Select one other word in Visual mode. -- Use the Edit/Paste menu item. What will happen is that the single selected - word is replaced with the two words from the clipboard. -- Move the mouse pointer somewhere else and click the middle button. You - will see that the word you just overwrote with the clipboard is inserted - here. - -If you use the "current selection" and the "real clipboard" with care, you can -do a lot of useful editing with them. - - -USING THE KEYBOARD - -If you don't like using the mouse, you can access the current selection and -the real clipboard with two registers. The "* register is for the current -selection. - To make text become the current selection, use Visual mode. For example, -to select a whole line just press "V". - To insert the current selection before the cursor: > - - "*P - -Notice the uppercase "P". The lowercase "p" puts the text after the cursor. - -The "+ register is used for the real clipboard. For example, to copy the text -from the cursor position until the end of the line to the clipboard: > - - "+y$ - -Remember, "y" is yank, which is Vim's copy command. - To insert the contents of the real clipboard before the cursor: > - - "+P - -It's the same as for the current selection, but uses the plus (+) register -instead of the star (*) register. - -============================================================================== -*09.4* Select mode - -And now something that is used more often on MS-Windows than on X-Windows. -But both can do it. You already know about Visual mode. Select mode is like -Visual mode, because it is also used to select text. But there is an obvious -difference: When typing text, the selected text is deleted and the typed text -replaces it. - -To start working with Select mode, you must first enable it (for MS-Windows -it is probably already enabled, but you can do this anyway): > - - :set selectmode+=mouse - -Now use the mouse to select some text. It is highlighted like in Visual mode. -Now press a letter. The selected text is deleted, and the single letter -replaces it. You are in Insert mode now, thus you can continue typing. - -Since typing normal text causes the selected text to be deleted, you can not -use the normal movement commands "hjkl", "w", etc. Instead, use the shifted -function keys. <S-Left> (shifted cursor left key) moves the cursor left. The -selected text is changed like in Visual mode. The other shifted cursor keys -do what you expect. <S-End> and <S-Home> also work. - -You can tune the way Select mode works with the 'selectmode' option. - -============================================================================== - -Next chapter: |usr_10.txt| Making big changes - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_10.txt b/share/vim/vim73/doc/usr_10.txt deleted file mode 100644 index 9bf6a221..00000000 --- a/share/vim/vim73/doc/usr_10.txt +++ /dev/null @@ -1,824 +0,0 @@ -*usr_10.txt* For Vim version 7.3. Last change: 2006 Nov 05 - - VIM USER MANUAL - by Bram Moolenaar - - Making big changes - - -In chapter 4 several ways to make small changes were explained. This chapter -goes into making changes that are repeated or can affect a large amount of -text. The Visual mode allows doing various things with blocks of text. Use -an external program to do really complicated things. - -|10.1| Record and playback commands -|10.2| Substitution -|10.3| Command ranges -|10.4| The global command -|10.5| Visual block mode -|10.6| Reading and writing part of a file -|10.7| Formatting text -|10.8| Changing case -|10.9| Using an external program - - Next chapter: |usr_11.txt| Recovering from a crash - Previous chapter: |usr_09.txt| Using the GUI -Table of contents: |usr_toc.txt| - -============================================================================== -*10.1* Record and playback commands - -The "." command repeats the preceding change. But what if you want to do -something more complex than a single change? That's where command recording -comes in. There are three steps: - -1. The "q{register}" command starts recording keystrokes into the register - named {register}. The register name must be between a and z. -2. Type your commands. -3. To finish recording, press q (without any extra character). - -You can now execute the macro by typing the command "@{register}". - -Take a look at how to use these commands in practice. You have a list of -filenames that look like this: - - stdio.h ~ - fcntl.h ~ - unistd.h ~ - stdlib.h ~ - -And what you want is the following: - - #include "stdio.h" ~ - #include "fcntl.h" ~ - #include "unistd.h" ~ - #include "stdlib.h" ~ - -You start by moving to the first character of the first line. Next you -execute the following commands: - - qa Start recording a macro in register a. - ^ Move to the beginning of the line. - i#include "<Esc> Insert the string #include " at the beginning - of the line. - $ Move to the end of the line. - a"<Esc> Append the character double quotation mark (") - to the end of the line. - j Go to the next line. - q Stop recording the macro. - -Now that you have done the work once, you can repeat the change by typing the -command "@a" three times. - The "@a" command can be preceded by a count, which will cause the macro to -be executed that number of times. In this case you would type: > - - 3@a - - -MOVE AND EXECUTE - -You might have the lines you want to change in various places. Just move the -cursor to each location and use the "@a" command. If you have done that once, -you can do it again with "@@". That's a bit easier to type. If you now -execute register b with "@b", the next "@@" will use register b. - If you compare the playback method with using ".", there are several -differences. First of all, "." can only repeat one change. As seen in the -example above, "@a" can do several changes, and move around as well. -Secondly, "." can only remember the last change. Executing a register allows -you to make any changes and then still use "@a" to replay the recorded -commands. Finally, you can use 26 different registers. Thus you can remember -26 different command sequences to execute. - - -USING REGISTERS - -The registers used for recording are the same ones you used for yank and -delete commands. This allows you to mix recording with other commands to -manipulate the registers. - Suppose you have recorded a few commands in register n. When you execute -this with "@n" you notice you did something wrong. You could try recording -again, but perhaps you will make another mistake. Instead, use this trick: - - G Go to the end of the file. - o<Esc> Create an empty line. - "np Put the text from the n register. You now see - the commands you typed as text in the file. - {edits} Change the commands that were wrong. This is - just like editing text. - 0 Go to the start of the line. - "ny$ Yank the corrected commands into the n - register. - dd Delete the scratch line. - -Now you can execute the corrected commands with "@n". (If your recorded -commands include line breaks, adjust the last two items in the example to -include all the lines.) - - -APPENDING TO A REGISTER - -So far we have used a lowercase letter for the register name. To append to a -register, use an uppercase letter. - Suppose you have recorded a command to change a word to register c. It -works properly, but you would like to add a search for the next word to -change. This can be done with: > - - qC/word<Enter>q - -You start with "qC", which records to the c register and appends. Thus -writing to an uppercase register name means to append to the register with -the same letter, but lowercase. - -This works both with recording and with yank and delete commands. For -example, you want to collect a sequence of lines into the a register. Yank -the first line with: > - - "aY - -Now move to the second line, and type: > - - "AY - -Repeat this command for all lines. The a register now contains all those -lines, in the order you yanked them. - -============================================================================== -*10.2* Substitution *find-replace* - -The ":substitute" command enables you to perform string replacements on a -whole range of lines. The general form of this command is as follows: > - - :[range]substitute/from/to/[flags] - -This command changes the "from" string to the "to" string in the lines -specified with [range]. For example, you can change "Professor" to "Teacher" -in all lines with the following command: > - - :%substitute/Professor/Teacher/ -< - Note: - The ":substitute" command is almost never spelled out completely. - Most of the time, people use the abbreviated version ":s". From here - on the abbreviation will be used. - -The "%" before the command specifies the command works on all lines. Without -a range, ":s" only works on the current line. More about ranges in the next -section |10.3|. - -By default, the ":substitute" command changes only the first occurrence on -each line. For example, the preceding command changes the line: - - Professor Smith criticized Professor Johnson today. ~ - -to: - - Teacher Smith criticized Professor Johnson today. ~ - -To change every occurrence on the line, you need to add the g (global) flag. -The command: > - - :%s/Professor/Teacher/g - -results in (starting with the original line): - - Teacher Smith criticized Teacher Johnson today. ~ - -Other flags include p (print), which causes the ":substitute" command to print -out the last line it changes. The c (confirm) flag tells ":substitute" to ask -you for confirmation before it performs each substitution. Enter the -following: > - - :%s/Professor/Teacher/c - -Vim finds the first occurrence of "Professor" and displays the text it is -about to change. You get the following prompt: > - - replace with Teacher (y/n/a/q/l/^E/^Y)? - -At this point, you must enter one of the following answers: - - y Yes; make this change. - n No; skip this match. - a All; make this change and all remaining ones without - further confirmation. - q Quit; don't make any more changes. - l Last; make this change and then quit. - CTRL-E Scroll the text one line up. - CTRL-Y Scroll the text one line down. - - -The "from" part of the substitute command is actually a pattern. The same -kind as used for the search command. For example, this command only -substitutes "the" when it appears at the start of a line: > - - :s/^the/these/ - -If you are substituting with a "from" or "to" part that includes a slash, you -need to put a backslash before it. A simpler way is to use another character -instead of the slash. A plus, for example: > - - :s+one/two+one or two+ - -============================================================================== -*10.3* Command ranges - -The ":substitute" command, and many other : commands, can be applied to a -selection of lines. This is called a range. - The simple form of a range is {number},{number}. For example: > - - :1,5s/this/that/g - -Executes the substitute command on the lines 1 to 5. Line 5 is included. -The range is always placed before the command. - -A single number can be used to address one specific line: > - - :54s/President/Fool/ - -Some commands work on the whole file when you do not specify a range. To make -them work on the current line the "." address is used. The ":write" command -works like that. Without a range, it writes the whole file. To make it write -only the current line into a file: > - - :.write otherfile - -The first line always has number one. How about the last line? The "$" -character is used for this. For example, to substitute in the lines from the -cursor to the end: > - - :.,$s/yes/no/ - -The "%" range that we used before, is actually a short way to say "1,$", from -the first to the last line. - - -USING A PATTERN IN A RANGE - -Suppose you are editing a chapter in a book, and want to replace all -occurrences of "grey" with "gray". But only in this chapter, not in the next -one. You know that only chapter boundaries have the word "Chapter" in the -first column. This command will work then: > - - :?^Chapter?,/^Chapter/s=grey=gray=g - -You can see a search pattern is used twice. The first "?^Chapter?" finds the -line above the current position that matches this pattern. Thus the ?pattern? -range is used to search backwards. Similarly, "/^Chapter/" is used to search -forward for the start of the next chapter. - To avoid confusion with the slashes, the "=" character was used in the -substitute command here. A slash or another character would have worked as -well. - - -ADD AND SUBTRACT - -There is a slight error in the above command: If the title of the next chapter -had included "grey" it would be replaced as well. Maybe that's what you -wanted, but what if you didn't? Then you can specify an offset. - To search for a pattern and then use the line above it: > - - /Chapter/-1 - -You can use any number instead of the 1. To address the second line below the -match: > - - /Chapter/+2 - -The offsets can also be used with the other items in a range. Look at this -one: > - - :.+3,$-5 - -This specifies the range that starts three lines below the cursor and ends -five lines before the last line in the file. - - -USING MARKS - -Instead of figuring out the line numbers of certain positions, remembering them -and typing them in a range, you can use marks. - Place the marks as mentioned in chapter 3. For example, use "mt" to mark -the top of an area and "mb" to mark the bottom. Then you can use this range -to specify the lines between the marks (including the lines with the marks): > - - :'t,'b - - -VISUAL MODE AND RANGES - -You can select text with Visual mode. If you then press ":" to start a colon -command, you will see this: > - - :'<,'> - -Now you can type the command and it will be applied to the range of lines that -was visually selected. - - Note: - When using Visual mode to select part of a line, or using CTRL-V to - select a block of text, the colon commands will still apply to whole - lines. This might change in a future version of Vim. - -The '< and '> are actually marks, placed at the start and end of the Visual -selection. The marks remain at their position until another Visual selection -is made. Thus you can use the "'<" command to jump to position where the -Visual area started. And you can mix the marks with other items: > - - :'>,$ - -This addresses the lines from the end of the Visual area to the end of the -file. - - -A NUMBER OF LINES - -When you know how many lines you want to change, you can type the number and -then ":". For example, when you type "5:", you will get: > - - :.,.+4 - -Now you can type the command you want to use. It will use the range "." -(current line) until ".+4" (four lines down). Thus it spans five lines. - -============================================================================== -*10.4* The global command - -The ":global" command is one of the more powerful features of Vim. It allows -you to find a match for a pattern and execute a command there. The general -form is: > - - :[range]global/{pattern}/{command} - -This is similar to the ":substitute" command. But, instead of replacing the -matched text with other text, the command {command} is executed. - - Note: - The command executed for ":global" must be one that starts with a - colon. Normal mode commands can not be used directly. The |:normal| - command can do this for you. - -Suppose you want to change "foobar" to "barfoo", but only in C++ style -comments. These comments start with "//". Use this command: > - - :g+//+s/foobar/barfoo/g - -This starts with ":g". That is short for ":global", just like ":s" is short -for ":substitute". Then the pattern, enclosed in plus characters. Since the -pattern we are looking for contains a slash, this uses the plus character to -separate the pattern. Next comes the substitute command that changes "foobar" -into "barfoo". - The default range for the global command is the whole file. Thus no range -was specified in this example. This is different from ":substitute", which -works on one line without a range. - The command isn't perfect, since it also matches lines where "//" appears -halfway a line, and the substitution will also take place before the "//". - -Just like with ":substitute", any pattern can be used. When you learn more -complicated patterns later, you can use them here. - -============================================================================== -*10.5* Visual block mode - -With CTRL-V you can start selection of a rectangular area of text. There are -a few commands that do something special with the text block. - -There is something special about using the "$" command in Visual block mode. -When the last motion command used was "$", all lines in the Visual selection -will extend until the end of the line, also when the line with the cursor is -shorter. This remains effective until you use a motion command that moves the -cursor horizontally. Thus using "j" keeps it, "h" stops it. - - -INSERTING TEXT - -The command "I{string}<Esc>" inserts the text {string} in each line, just -left of the visual block. You start by pressing CTRL-V to enter visual block -mode. Now you move the cursor to define your block. Next you type I to enter -Insert mode, followed by the text to insert. As you type, the text appears on -the first line only. - After you press <Esc> to end the insert, the text will magically be -inserted in the rest of the lines contained in the visual selection. Example: - - include one ~ - include two ~ - include three ~ - include four ~ - -Move the cursor to the "o" of "one" and press CTRL-V. Move it down with "3j" -to "four". You now have a block selection that spans four lines. Now type: > - - Imain.<Esc> - -The result: - - include main.one ~ - include main.two ~ - include main.three ~ - include main.four ~ - -If the block spans short lines that do not extend into the block, the text is -not inserted in that line. For example, make a Visual block selection that -includes the word "long" in the first and last line of this text, and thus has -no text selected in the second line: - - This is a long line ~ - short ~ - Any other long line ~ - - ^^^^ selected block - -Now use the command "Ivery <Esc>". The result is: - - This is a very long line ~ - short ~ - Any other very long line ~ - -In the short line no text was inserted. - -If the string you insert contains a newline, the "I" acts just like a Normal -insert command and affects only the first line of the block. - -The "A" command works the same way, except that it appends after the right -side of the block. And it does insert text in a short line. Thus you can -make a choice whether you do or don't want to append text to a short line. - There is one special case for "A": Select a Visual block and then use "$" -to make the block extend to the end of each line. Using "A" now will append -the text to the end of each line. - Using the same example from above, and then typing "$A XXX<Esc>, you get -this result: - - This is a long line XXX ~ - short XXX ~ - Any other long line XXX ~ - -This really requires using the "$" command. Vim remembers that it was used. -Making the same selection by moving the cursor to the end of the longest line -with other movement commands will not have the same result. - - -CHANGING TEXT - -The Visual block "c" command deletes the block and then throws you into Insert -mode to enable you to type in a string. The string will be inserted in each -line in the block. - Starting with the same selection of the "long" words as above, then typing -"c_LONG_<Esc>", you get this: - - This is a _LONG_ line ~ - short ~ - Any other _LONG_ line ~ - -Just like with "I" the short line is not changed. Also, you can't enter a -newline in the new text. - -The "C" command deletes text from the left edge of the block to the end of -line. It then puts you in Insert mode so that you can type in a string, -which is added to the end of each line. - Starting with the same text again, and typing "Cnew text<Esc>" you get: - - This is a new text ~ - short ~ - Any other new text ~ - -Notice that, even though only the "long" word was selected, the text after it -is deleted as well. Thus only the location of the left edge of the visual -block really matters. - Again, short lines that do not reach into the block are excluded. - -Other commands that change the characters in the block: - - ~ swap case (a -> A and A -> a) - U make uppercase (a -> A and A -> A) - u make lowercase (a -> a and A -> a) - - -FILLING WITH A CHARACTER - -To fill the whole block with one character, use the "r" command. Again, -starting with the same example text from above, and then typing "rx": - - This is a xxxx line ~ - short ~ - Any other xxxx line ~ - - - Note: - If you want to include characters beyond the end of the line in the - block, check out the 'virtualedit' feature in chapter 25. - - -SHIFTING - -The command ">" shifts the selected text to the right one shift amount, -inserting whitespace. The starting point for this shift is the left edge of -the visual block. - With the same example again, ">" gives this result: - - This is a long line ~ - short ~ - Any other long line ~ - -The shift amount is specified with the 'shiftwidth' option. To change it to -use 4 spaces: > - - :set shiftwidth=4 - -The "<" command removes one shift amount of whitespace at the left -edge of the block. This command is limited by the amount of text that is -there; so if there is less than a shift amount of whitespace available, it -removes what it can. - - -JOINING LINES - -The "J" command joins all selected lines together into one line. Thus it -removes the line breaks. Actually, the line break, leading white space and -trailing white space is replaced by one space. Two spaces are used after a -line ending (that can be changed with the 'joinspaces' option). - Let's use the example that we got so familiar with now. The result of -using the "J" command: - - This is a long line short Any other long line ~ - -The "J" command doesn't require a blockwise selection. It works with "v" and -"V" selection in exactly the same way. - -If you don't want the white space to be changed, use the "gJ" command. - -============================================================================== -*10.6* Reading and writing part of a file - -When you are writing an e-mail message, you may want to include another file. -This can be done with the ":read {filename}" command. The text of the file is -put below the cursor line. - Starting with this text: - - Hi John, ~ - Here is the diff that fixes the bug: ~ - Bye, Pierre. ~ - -Move the cursor to the second line and type: > - - :read patch - -The file named "patch" will be inserted, with this result: - - Hi John, ~ - Here is the diff that fixes the bug: ~ - 2c2 ~ - < for (i = 0; i <= length; ++i) ~ - --- ~ - > for (i = 0; i < length; ++i) ~ - Bye, Pierre. ~ - -The ":read" command accepts a range. The file will be put below the last line -number of this range. Thus ":$r patch" appends the file "patch" at the end of -the file. - What if you want to read the file above the first line? This can be done -with the line number zero. This line doesn't really exist, you will get an -error message when using it with most commands. But this command is allowed: -> - :0read patch - -The file "patch" will be put above the first line of the file. - - -WRITING A RANGE OF LINES - -To write a range of lines to a file, the ":write" command can be used. -Without a range it writes the whole file. With a range only the specified -lines are written: > - - :.,$write tempo - -This writes the lines from the cursor until the end of the file into the file -"tempo". If this file already exists you will get an error message. Vim -protects you from accidentally overwriting an existing file. If you know what -you are doing and want to overwrite the file, append !: > - - :.,$write! tempo - -CAREFUL: The ! must follow the ":write" command immediately, without white -space. Otherwise it becomes a filter command, which is explained later in -this chapter. - - -APPENDING TO A FILE - -In the first section of this chapter was explained how to collect a number of -lines into a register. The same can be done to collect lines in a file. -Write the first line with this command: > - - :.write collection - -Now move the cursor to the second line you want to collect, and type this: > - - :.write >>collection - -The ">>" tells Vim the "collection" file is not to be written as a new file, -but the line must be appended at the end. You can repeat this as many times -as you like. - -============================================================================== -*10.7* Formatting text - -When you are typing plain text, it's nice if the length of each line is -automatically trimmed to fit in the window. To make this happen while -inserting text, set the 'textwidth' option: > - - :set textwidth=72 - -You might remember that in the example vimrc file this command was used for -every text file. Thus if you are using that vimrc file, you were already -using it. To check the current value of 'textwidth': > - - :set textwidth - -Now lines will be broken to take only up to 72 characters. But when you -insert text halfway a line, or when you delete a few words, the lines will get -too long or too short. Vim doesn't automatically reformat the text. - To tell Vim to format the current paragraph: > - - gqap - -This starts with the "gq" command, which is an operator. Following is "ap", -the text object that stands for "a paragraph". A paragraph is separated from -the next paragraph by an empty line. - - Note: - A blank line, which contains white space, does NOT separate - paragraphs. This is hard to notice! - -Instead of "ap" you could use any motion or text object. If your paragraphs -are properly separated, you can use this command to format the whole file: > - - gggqG - -"gg" takes you to the first line, "gq" is the format operator and "G" the -motion that jumps to the last line. - -In case your paragraphs aren't clearly defined, you can format just the lines -you manually select. Move the cursor to the first line you want to format. -Start with the command "gqj". This formats the current line and the one below -it. If the first line was short, words from the next line will be appended. -If it was too long, words will be moved to the next line. The cursor moves to -the second line. Now you can use "." to repeat the command. Keep doing this -until you are at the end of the text you want to format. - -============================================================================== -*10.8* Changing case - -You have text with section headers in lowercase. You want to make the word -"section" all uppercase. Do this with the "gU" operator. Start with the -cursor in the first column: > - - gUw -< section header ----> SECTION header - -The "gu" operator does exactly the opposite: > - - guw -< SECTION header ----> section header - -You can also use "g~" to swap case. All these are operators, thus they work -with any motion command, with text objects and in Visual mode. - To make an operator work on lines you double it. The delete operator is -"d", thus to delete a line you use "dd". Similarly, "gugu" makes a whole line -lowercase. This can be shortened to "guu". "gUgU" is shortened to "gUU" and -"g~g~" to "g~~". Example: > - - g~~ -< Some GIRLS have Fun ----> sOME girls HAVE fUN ~ - -============================================================================== -*10.9* Using an external program - -Vim has a very powerful set of commands, it can do anything. But there may -still be something that an external command can do better or faster. - The command "!{motion}{program}" takes a block of text and filters it -through an external program. In other words, it runs the system command -represented by {program}, giving it the block of text represented by {motion} -as input. The output of this command then replaces the selected block. - Because this summarizes badly if you are unfamiliar with UNIX filters, take -a look at an example. The sort command sorts a file. If you execute the -following command, the unsorted file input.txt will be sorted and written to -output.txt. (This works on both UNIX and Microsoft Windows.) > - - sort <input.txt >output.txt - -Now do the same thing in Vim. You want to sort lines 1 through 5 of a file. -You start by putting the cursor on line 1. Next you execute the following -command: > - - !5G - -The "!" tells Vim that you are performing a filter operation. The Vim editor -expects a motion command to follow, indicating which part of the file to -filter. The "5G" command tells Vim to go to line 5, so it now knows that it -is to filter lines 1 (the current line) through 5. - In anticipation of the filtering, the cursor drops to the bottom of the -screen and a ! prompt displays. You can now type in the name of the filter -program, in this case "sort". Therefore, your full command is as follows: > - - !5Gsort<Enter> - -The result is that the sort program is run on the first 5 lines. The output -of the program replaces these lines. - - line 55 line 11 - line 33 line 22 - line 11 --> line 33 - line 22 line 44 - line 44 line 55 - last line last line - -The "!!" command filters the current line through a filter. In Unix the "date" -command prints the current time and date. "!!date<Enter>" replaces the current -line with the output of "date". This is useful to add a timestamp to a file. - - -WHEN IT DOESN'T WORK - -Starting a shell, sending it text and capturing the output requires that Vim -knows how the shell works exactly. When you have problems with filtering, -check the values of these options: - - 'shell' specifies the program that Vim uses to execute - external programs. - 'shellcmdflag' argument to pass a command to the shell - 'shellquote' quote to be used around the command - 'shellxquote' quote to be used around the command and redirection - 'shelltype' kind of shell (only for the Amiga) - 'shellslash' use forward slashes in the command (only for - MS-Windows and alikes) - 'shellredir' string used to write the command output into a file - -On Unix this is hardly ever a problem, because there are two kinds of shells: -"sh" like and "csh" like. Vim checks the 'shell' option and sets related -options automatically, depending on whether it sees "csh" somewhere in -'shell'. - On MS-Windows, however, there are many different shells and you might have -to tune the options to make filtering work. Check the help for the options -for more information. - - -READING COMMAND OUTPUT - -To read the contents of the current directory into the file, use this: - -on Unix: > - :read !ls -on MS-Windows: > - :read !dir - -The output of the "ls" or "dir" command is captured and inserted in the text, -below the cursor. This is similar to reading a file, except that the "!" is -used to tell Vim that a command follows. - The command may have arguments. And a range can be used to tell where Vim -should put the lines: > - - :0read !date -u - -This inserts the current time and date in UTC format at the top of the file. -(Well, if you have a date command that accepts the "-u" argument.) Note the -difference with using "!!date": that replaced a line, while ":read !date" will -insert a line. - - -WRITING TEXT TO A COMMAND - -The Unix command "wc" counts words. To count the words in the current file: > - - :write !wc - -This is the same write command as before, but instead of a file name the "!" -character is used and the name of an external command. The written text will -be passed to the specified command as its standard input. The output could -look like this: - - 4 47 249 ~ - -The "wc" command isn't verbose. This means you have 4 lines, 47 words and 249 -characters. - -Watch out for this mistake: > - - :write! wc - -This will write the file "wc" in the current directory, with force. White -space is important here! - - -REDRAWING THE SCREEN - -If the external command produced an error message, the display may have been -messed up. Vim is very efficient and only redraws those parts of the screen -that it knows need redrawing. But it can't know about what another program -has written. To tell Vim to redraw the screen: > - - CTRL-L - -============================================================================== - -Next chapter: |usr_11.txt| Recovering from a crash - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_11.txt b/share/vim/vim73/doc/usr_11.txt deleted file mode 100644 index fed950c3..00000000 --- a/share/vim/vim73/doc/usr_11.txt +++ /dev/null @@ -1,307 +0,0 @@ -*usr_11.txt* For Vim version 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - Recovering from a crash - - -Did your computer crash? And you just spent hours editing? Don't panic! Vim -stores enough information to be able to restore most of your work. This -chapter shows you how to get your work back and explains how the swap file is -used. - -|11.1| Basic recovery -|11.2| Where is the swap file? -|11.3| Crashed or not? -|11.4| Further reading - - Next chapter: |usr_12.txt| Clever tricks - Previous chapter: |usr_10.txt| Making big changes -Table of contents: |usr_toc.txt| - -============================================================================== -*11.1* Basic recovery - -In most cases recovering a file is quite simple, assuming you know which file -you were editing (and the harddisk is still working). Start Vim on the file, -with the "-r" argument added: > - - vim -r help.txt - -Vim will read the swap file (used to store text you were editing) and may read -bits and pieces of the original file. If Vim recovered your changes you will -see these messages (with different file names, of course): - - Using swap file ".help.txt.swp" ~ - Original file "~/vim/runtime/doc/help.txt" ~ - Recovery completed. You should check if everything is OK. ~ - (You might want to write out this file under another name ~ - and run diff with the original file to check for changes) ~ - You may want to delete the .swp file now. ~ - -To be on the safe side, write this file under another name: > - - :write help.txt.recovered - -Compare the file with the original file to check if you ended up with what you -expected. Vimdiff is very useful for this |08.7|. For example: > - - :write help.txt.recovered - :edit # - :diffsp help.txt - -Watch out for the original file to contain a more recent version (you saved -the file just before the computer crashed). And check that no lines are -missing (something went wrong that Vim could not recover). - If Vim produces warning messages when recovering, read them carefully. -This is rare though. - -If the recovery resulted in text that is exactly the same as the file -contents, you will get this message: - - Using swap file ".help.txt.swp" ~ - Original file "~/vim/runtime/doc/help.txt" ~ - Recovery completed. Buffer contents equals file contents. ~ - You may want to delete the .swp file now. ~ - -This usually happens if you already recovered your changes, or you wrote the -file after making changes. It is safe to delete the swap file now. - -It is normal that the last few changes can not be recovered. Vim flushes the -changes to disk when you don't type for about four seconds, or after typing -about two hundred characters. This is set with the 'updatetime' and -'updatecount' options. Thus when Vim didn't get a chance to save itself when -the system went down, the changes after the last flush will be lost. - -If you were editing without a file name, give an empty string as argument: > - - vim -r "" - -You must be in the right directory, otherwise Vim can't find the swap file. - -============================================================================== -*11.2* Where is the swap file? - -Vim can store the swap file in several places. Normally it is in the same -directory as the original file. To find it, change to the directory of the -file, and use: > - - vim -r - -Vim will list the swap files that it can find. It will also look in other -directories where the swap file for files in the current directory may be -located. It will not find swap files in any other directories though, it -doesn't search the directory tree. - The output could look like this: - - Swap files found: ~ - In current directory: ~ - 1. .main.c.swp ~ - owned by: mool dated: Tue May 29 21:00:25 2001 ~ - file name: ~mool/vim/vim6/src/main.c ~ - modified: YES ~ - user name: mool host name: masaka.moolenaar.net ~ - process ID: 12525 ~ - In directory ~/tmp: ~ - -- none -- ~ - In directory /var/tmp: ~ - -- none -- ~ - In directory /tmp: ~ - -- none -- ~ - -If there are several swap files that look like they may be the one you want to -use, a list is given of these swap files and you are requested to enter the -number of the one you want to use. Carefully look at the dates to decide -which one you want to use. - In case you don't know which one to use, just try them one by one and check -the resulting files if they are what you expected. - - -USING A SPECIFIC SWAP FILE - -If you know which swap file needs to be used, you can recover by giving the -swap file name. Vim will then finds out the name of the original file from -the swap file. - -Example: > - vim -r .help.txt.swo - -This is also handy when the swap file is in another directory than expected. -Vim recognizes files with the pattern *.s[uvw][a-z] as swap files. - -If this still does not work, see what file names Vim reports and rename the -files accordingly. Check the 'directory' option to see where Vim may have -put the swap file. - - Note: - Vim tries to find the swap file by searching the directories in the - 'dir' option, looking for files that match "filename.sw?". If - wildcard expansion doesn't work (e.g., when the 'shell' option is - invalid), Vim does a desperate try to find the file "filename.swp". - If that fails too, you will have to give the name of the swapfile - itself to be able to recover the file. - -============================================================================== -*11.3* Crashed or not? *ATTENTION* *E325* - -Vim tries to protect you from doing stupid things. Suppose you innocently -start editing a file, expecting the contents of the file to show up. Instead, -Vim produces a very long message: - - E325: ATTENTION ~ - Found a swap file by the name ".main.c.swp" ~ - owned by: mool dated: Tue May 29 21:09:28 2001 ~ - file name: ~mool/vim/vim6/src/main.c ~ - modified: no ~ - user name: mool host name: masaka.moolenaar.net ~ - process ID: 12559 (still running) ~ - While opening file "main.c" ~ - dated: Tue May 29 19:46:12 2001 ~ - ~ - (1) Another program may be editing the same file. ~ - If this is the case, be careful not to end up with two ~ - different instances of the same file when making changes. ~ - Quit, or continue with caution. ~ - ~ - (2) An edit session for this file crashed. ~ - If this is the case, use ":recover" or "vim -r main.c" ~ - to recover the changes (see ":help recovery"). ~ - If you did this already, delete the swap file ".main.c.swp" ~ - to avoid this message. ~ - -You get this message, because, when starting to edit a file, Vim checks if a -swap file already exists for that file. If there is one, there must be -something wrong. It may be one of these two situations. - -1. Another edit session is active on this file. Look in the message for the - line with "process ID". It might look like this: - - process ID: 12559 (still running) ~ - - The text "(still running)" indicates that the process editing this file - runs on the same computer. When working on a non-Unix system you will not - get this extra hint. When editing a file over a network, you may not see - the hint, because the process might be running on another computer. In - those two cases you must find out what the situation is yourself. - If there is another Vim editing the same file, continuing to edit will - result in two versions of the same file. The one that is written last will - overwrite the other one, resulting in loss of changes. You better quit - this Vim. - -2. The swap file might be the result from a previous crash of Vim or the - computer. Check the dates mentioned in the message. If the date of the - swap file is newer than the file you were editing, and this line appears: - - modified: YES ~ - - Then you very likely have a crashed edit session that is worth recovering. - If the date of the file is newer than the date of the swap file, then - either it was changed after the crash (perhaps you recovered it earlier, - but didn't delete the swap file?), or else the file was saved before the - crash but after the last write of the swap file (then you're lucky: you - don't even need that old swap file). Vim will warn you for this with this - extra line: - - NEWER than swap file! ~ - - -UNREADABLE SWAP FILE - -Sometimes the line - - [cannot be read] ~ - -will appear under the name of the swap file. This can be good or bad, -depending on circumstances. - -It is good if a previous editing session crashed without having made any -changes to the file. Then a directory listing of the swap file will show -that it has zero bytes. You may delete it and proceed. - -It is slightly bad if you don't have read permission for the swap file. You -may want to view the file read-only, or quit. On multi-user systems, if you -yourself did the last changes under a different login name, a logout -followed by a login under that other name might cure the "read error". Or -else you might want to find out who last edited (or is editing) the file and -have a talk with them. - -It is very bad if it means there is a physical read error on the disk -containing the swap file. Fortunately, this almost never happens. -You may want to view the file read-only at first (if you can), to see the -extent of the changes that were "forgotten". If you are the one in charge of -that file, be prepared to redo your last changes. - - -WHAT TO DO? *swap-exists-choices* - -If dialogs are supported you will be asked to select one of five choices: - - Swap file ".main.c.swp" already exists! ~ - [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~ - -O Open the file readonly. Use this when you just want to view the file and - don't need to recover it. You might want to use this when you know someone - else is editing the file, but you just want to look in it and not make - changes. - -E Edit the file anyway. Use this with caution! If the file is being edited - in another Vim, you might end up with two versions of the file. Vim will - try to warn you when this happens, but better be safe then sorry. - -R Recover the file from the swap file. Use this if you know that the swap - file contains changes that you want to recover. - -Q Quit. This avoids starting to edit the file. Use this if there is another - Vim editing the same file. - When you just started Vim, this will exit Vim. When starting Vim with - files in several windows, Vim quits only if there is a swap file for the - first one. When using an edit command, the file will not be loaded and you - are taken back to the previously edited file. - -A Abort. Like Quit, but also abort further commands. This is useful when - loading a script that edits several files, such as a session with multiple - windows. - -D Delete the swap file. Use this when you are sure you no longer need it. - For example, when it doesn't contain changes, or when the file itself is - newer than the swap file. - On Unix this choice is only offered when the process that created the - swap file does not appear to be running. - -If you do not get the dialog (you are running a version of Vim that does not -support it), you will have to do it manually. To recover the file, use this -command: > - - :recover - - -Vim cannot always detect that a swap file already exists for a file. This is -the case when the other edit session puts the swap files in another directory -or when the path name for the file is different when editing it on different -machines. Therefore, don't rely on Vim always warning you. - -If you really don't want to see this message, you can add the 'A' flag to the -'shortmess' option. But it's very unusual that you need this. - -For remarks about encryption and the swap file, see |:recover-crypt|. - -============================================================================== -*11.4* Further reading - -|swap-file| An explanation about where the swap file will be created and - what its name is. -|:preserve| Manually flushing the swap file to disk. -|:swapname| See the name of the swap file for the current file. -'updatecount' Number of key strokes after which the swap file is flushed to - disk. -'updatetime' Timeout after which the swap file is flushed to disk. -'swapsync' Whether the disk is synced when the swap file is flushed. -'directory' List of directory names where to store the swap file. -'maxmem' Limit for memory usage before writing text to the swap file. -'maxmemtot' Same, but for all files in total. - -============================================================================== - -Next chapter: |usr_12.txt| Clever tricks - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_12.txt b/share/vim/vim73/doc/usr_12.txt deleted file mode 100644 index 5dda76aa..00000000 --- a/share/vim/vim73/doc/usr_12.txt +++ /dev/null @@ -1,358 +0,0 @@ -*usr_12.txt* For Vim version 7.3. Last change: 2007 May 11 - - VIM USER MANUAL - by Bram Moolenaar - - Clever tricks - - -By combining several commands you can make Vim do nearly everything. In this -chapter a number of useful combinations will be presented. This uses the -commands introduced in the previous chapters and a few more. - -|12.1| Replace a word -|12.2| Change "Last, First" to "First Last" -|12.3| Sort a list -|12.4| Reverse line order -|12.5| Count words -|12.6| Find a man page -|12.7| Trim blanks -|12.8| Find where a word is used - - Next chapter: |usr_20.txt| Typing command-line commands quickly - Previous chapter: |usr_11.txt| Recovering from a crash -Table of contents: |usr_toc.txt| - -============================================================================== -*12.1* Replace a word - -The substitute command can be used to replace all occurrences of a word with -another word: > - - :%s/four/4/g - -The "%" range means to replace in all lines. The "g" flag at the end causes -all words in a line to be replaced. - This will not do the right thing if your file also contains "thirtyfour". -It would be replaced with "thirty4". To avoid this, use the "\<" item to -match the start of a word: > - - :%s/\<four/4/g - -Obviously, this still goes wrong on "fourteen". Use "\>" to match the end of -a word: > - - :%s/\<four\>/4/g - -If you are programming, you might want to replace "four" in comments, but not -in the code. Since this is difficult to specify, add the "c" flag to have the -substitute command prompt you for each replacement: > - - - :%s/\<four\>/4/gc - - -REPLACING IN SEVERAL FILES - -Suppose you want to replace a word in more than one file. You could edit each -file and type the command manually. It's a lot faster to use record and -playback. - Let's assume you have a directory with C++ files, all ending in ".cpp". -There is a function called "GetResp" that you want to rename to "GetAnswer". - - vim *.cpp Start Vim, defining the argument list to - contain all the C++ files. You are now in the - first file. - qq Start recording into the q register - :%s/\<GetResp\>/GetAnswer/g - Do the replacements in the first file. - :wnext Write this file and move to the next one. - q Stop recording. - @q Execute the q register. This will replay the - substitution and ":wnext". You can verify - that this doesn't produce an error message. - 999@q Execute the q register on the remaining files. - -At the last file you will get an error message, because ":wnext" cannot move -to the next file. This stops the execution, and everything is done. - - Note: - When playing back a recorded sequence, an error stops the execution. - Therefore, make sure you don't get an error message when recording. - -There is one catch: If one of the .cpp files does not contain the word -"GetResp", you will get an error and replacing will stop. To avoid this, add -the "e" flag to the substitute command: > - - :%s/\<GetResp\>/GetAnswer/ge - -The "e" flag tells ":substitute" that not finding a match is not an error. - -============================================================================== -*12.2* Change "Last, First" to "First Last" - -You have a list of names in this form: - - Doe, John ~ - Smith, Peter ~ - -You want to change that to: - - John Doe ~ - Peter Smith ~ - -This can be done with just one command: > - - :%s/\([^,]*\), \(.*\)/\2 \1/ - -Let's break this down in parts. Obviously it starts with a substitute -command. The "%" is the line range, which stands for the whole file. Thus -the substitution is done in every line in the file. - The arguments for the substitute command are "/from/to/". The slashes -separate the "from" pattern and the "to" string. This is what the "from" -pattern contains: - \([^,]*\), \(.*\) ~ - - The first part between \( \) matches "Last" \( \) - match anything but a comma [^,] - any number of times * - matches ", " literally , - The second part between \( \) matches "First" \( \) - any character . - any number of times * - -In the "to" part we have "\2" and "\1". These are called backreferences. -They refer to the text matched by the "\( \)" parts in the pattern. "\2" -refers to the text matched by the second "\( \)", which is the "First" name. -"\1" refers to the first "\( \)", which is the "Last" name. - You can use up to nine backreferences in the "to" part of a substitute -command. "\0" stands for the whole matched pattern. There are a few more -special items in a substitute command, see |sub-replace-special|. - -============================================================================== -*12.3* Sort a list - -In a Makefile you often have a list of files. For example: - - OBJS = \ ~ - version.o \ ~ - pch.o \ ~ - getopt.o \ ~ - util.o \ ~ - getopt1.o \ ~ - inp.o \ ~ - patch.o \ ~ - backup.o ~ - -To sort this list, filter the text through the external sort command: > - - /^OBJS - j - :.,/^$/-1!sort - -This goes to the first line, where "OBJS" is the first thing in the line. -Then it goes one line down and filters the lines until the next empty line. -You could also select the lines in Visual mode and then use "!sort". That's -easier to type, but more work when there are many lines. - The result is this: - - OBJS = \ ~ - backup.o ~ - getopt.o \ ~ - getopt1.o \ ~ - inp.o \ ~ - patch.o \ ~ - pch.o \ ~ - util.o \ ~ - version.o \ ~ - - -Notice that a backslash at the end of each line is used to indicate the line -continues. After sorting, this is wrong! The "backup.o" line that was at -the end didn't have a backslash. Now that it sorts to another place, it -must have a backslash. - The simplest solution is to add the backslash with "A \<Esc>". You can -keep the backslash in the last line, if you make sure an empty line comes -after it. That way you don't have this problem again. - -============================================================================== -*12.4* Reverse line order - -The |:global| command can be combined with the |:move| command to move all the -lines before the first line, resulting in a reversed file. The command is: > - - :global/^/m 0 - -Abbreviated: > - - :g/^/m 0 - -The "^" regular expression matches the beginning of the line (even if the line -is blank). The |:move| command moves the matching line to after the mythical -zeroth line, so the current matching line becomes the first line of the file. -As the |:global| command is not confused by the changing line numbering, -|:global| proceeds to match all remaining lines of the file and puts each as -the first. - -This also works on a range of lines. First move to above the first line and -mark it with "mt". Then move the cursor to the last line in the range and -type: > - - :'t+1,.g/^/m 't - -============================================================================== -*12.5* Count words - -Sometimes you have to write a text with a maximum number of words. Vim can -count the words for you. - When the whole file is what you want to count the words in, use this -command: > - - g CTRL-G - -Do not type a space after the g, this is just used here to make the command -easy to read. - The output looks like this: - - Col 1 of 0; Line 141 of 157; Word 748 of 774; Byte 4489 of 4976 ~ - -You can see on which word you are (748), and the total number of words in the -file (774). - -When the text is only part of a file, you could move to the start of the text, -type "g CTRL-G", move to the end of the text, type "g CTRL-G" again, and then -use your brain to compute the difference in the word position. That's a good -exercise, but there is an easier way. With Visual mode, select the text you -want to count words in. Then type g CTRL-G. The result: - - Selected 5 of 293 Lines; 70 of 1884 Words; 359 of 10928 Bytes ~ - -For other ways to count words, lines and other items, see |count-items|. - -============================================================================== -*12.6* Find a man page *find-manpage* - -While editing a shell script or C program, you are using a command or function -that you want to find the man page for (this is on Unix). Let's first use a -simple way: Move the cursor to the word you want to find help on and press > - - K - -Vim will run the external "man" program on the word. If the man page is -found, it is displayed. This uses the normal pager to scroll through the text -(mostly the "more" program). When you get to the end pressing <Enter> will -get you back into Vim. - -A disadvantage is that you can't see the man page and the text you are working -on at the same time. There is a trick to make the man page appear in a Vim -window. First, load the man filetype plugin: > - - :runtime! ftplugin/man.vim - -Put this command in your vimrc file if you intend to do this often. Now you -can use the ":Man" command to open a window on a man page: > - - :Man csh - -You can scroll around and the text is highlighted. This allows you to find -the help you were looking for. Use CTRL-W w to jump to the window with the -text you were working on. - To find a man page in a specific section, put the section number first. -For example, to look in section 3 for "echo": > - - :Man 3 echo - -To jump to another man page, which is in the text with the typical form -"word(1)", press CTRL-] on it. Further ":Man" commands will use the same -window. - -To display a man page for the word under the cursor, use this: > - - \K - -(If you redefined the <Leader>, use it instead of the backslash). -For example, you want to know the return value of "strstr()" while editing -this line: - - if ( strstr (input, "aap") == ) ~ - -Move the cursor to somewhere on "strstr" and type "\K". A window will open -to display the man page for strstr(). - -============================================================================== -*12.7* Trim blanks - -Some people find spaces and tabs at the end of a line useless, wasteful, and -ugly. To remove whitespace at the end of every line, execute the following -command: > - - :%s/\s\+$// - -The line range "%" is used, thus this works on the whole file. The pattern -that the ":substitute" command matches with is "\s\+$". This finds white -space characters (\s), 1 or more of them (\+), before the end-of-line ($). -Later will be explained how you write patterns like this |usr_27.txt|. - The "to" part of the substitute command is empty: "//". Thus it replaces -with nothing, effectively deleting the matched white space. - -Another wasteful use of spaces is placing them before a tab. Often these can -be deleted without changing the amount of white space. But not always! -Therefore, you can best do this manually. Use this search command: > - - / - -You cannot see it, but there is a space before a tab in this command. Thus -it's "/<Space><Tab>". Now use "x" to delete the space and check that the -amount of white space doesn't change. You might have to insert a tab if it -does change. Type "n" to find the next match. Repeat this until no more -matches can be found. - -============================================================================== -*12.8* Find where a word is used - -If you are a UNIX user, you can use a combination of Vim and the grep command -to edit all the files that contain a given word. This is extremely useful if -you are working on a program and want to view or edit all the files that -contain a specific variable. - For example, suppose you want to edit all the C program files that contain -the word "frame_counter". To do this you use the command: > - - vim `grep -l frame_counter *.c` - -Let's look at this command in detail. The grep command searches through a set -of files for a given word. Because the -l argument is specified, the command -will only list the files containing the word and not print the matching lines. -The word it is searching for is "frame_counter". Actually, this can be any -regular expression. (Note: What grep uses for regular expressions is not -exactly the same as what Vim uses.) - The entire command is enclosed in backticks (`). This tells the UNIX shell -to run this command and pretend that the results were typed on the command -line. So what happens is that the grep command is run and produces a list of -files, these files are put on the Vim command line. This results in Vim -editing the file list that is the output of grep. You can then use commands -like ":next" and ":first" to browse through the files. - - -FINDING EACH LINE - -The above command only finds the files in which the word is found. You still -have to find the word within the files. - Vim has a built-in command that you can use to search a set of files for a -given string. If you want to find all occurrences of "error_string" in all C -program files, for example, enter the following command: > - - :grep error_string *.c - -This causes Vim to search for the string "error_string" in all the specified -files (*.c). The editor will now open the first file where a match is found -and position the cursor on the first matching line. To go to the next -matching line (no matter in what file it is), use the ":cnext" command. To go -to the previous match, use the ":cprev" command. Use ":clist" to see all the -matches and where they are. - The ":grep" command uses the external commands grep (on Unix) or findstr -(on Windows). You can change this by setting the option 'grepprg'. - -============================================================================== - -Next chapter: |usr_20.txt| Typing command-line commands quickly - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_20.txt b/share/vim/vim73/doc/usr_20.txt deleted file mode 100644 index 2b5393a9..00000000 --- a/share/vim/vim73/doc/usr_20.txt +++ /dev/null @@ -1,384 +0,0 @@ -*usr_20.txt* For Vim version 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - Typing command-line commands quickly - - -Vim has a few generic features that makes it easier to enter commands. Colon -commands can be abbreviated, edited and repeated. Completion is available for -nearly everything. - -|20.1| Command line editing -|20.2| Command line abbreviations -|20.3| Command line completion -|20.4| Command line history -|20.5| Command line window - - Next chapter: |usr_21.txt| Go away and come back - Previous chapter: |usr_12.txt| Clever tricks -Table of contents: |usr_toc.txt| - -============================================================================== -*20.1* Command line editing - -When you use a colon (:) command or search for a string with / or ?, Vim puts -the cursor on the bottom of the screen. There you type the command or search -pattern. This is called the Command line. Also when it's used for entering a -search command. - -The most obvious way to edit the command you type is by pressing the <BS> key. -This erases the character before the cursor. To erase another character, -typed earlier, first move the cursor with the cursor keys. - For example, you have typed this: > - - :s/col/pig/ - -Before you hit <Enter>, you notice that "col" should be "cow". To correct -this, you type <Left> five times. The cursor is now just after "col". Type -<BS> and "w" to correct: > - - :s/cow/pig/ - -Now you can press <Enter> directly. You don't have to move the cursor to the -end of the line before executing the command. - -The most often used keys to move around in the command line: - - <Left> one character left - <Right> one character right - <S-Left> or <C-Left> one word left - <S-Right> or <C-Right> one word right - CTRL-B or <Home> to begin of command line - CTRL-E or <End> to end of command line - - Note: - <S-Left> (cursor left key with Shift key pressed) and <C-Left> (cursor - left key with Control pressed) will not work on all keyboards. Same - for the other Shift and Control combinations. - -You can also use the mouse to move the cursor. - - -DELETING - -As mentioned, <BS> deletes the character before the cursor. To delete a whole -word use CTRL-W. - - /the fine pig ~ - - CTRL-W - - /the fine ~ - -CTRL-U removes all text, thus allows you to start all over again. - - -OVERSTRIKE - -The <Insert> key toggles between inserting characters and replacing the -existing ones. Start with this text: - - /the fine pig ~ - -Move the cursor to the start of "fine" with <S-Left> twice (or <Left> eight -times, if <S-Left> doesn't work). Now press <Insert> to switch to overstrike -and type "great": - - /the greatpig ~ - -Oops, we lost the space. Now, don't use <BS>, because it would delete the -"t" (this is different from Replace mode). Instead, press <Insert> to switch -from overstrike to inserting, and type the space: - - /the great pig ~ - - -CANCELLING - -You thought of executing a : or / command, but changed your mind. To get rid -of what you already typed, without executing it, press CTRL-C or <Esc>. - - Note: - <Esc> is the universal "get out" key. Unfortunately, in the good old - Vi pressing <Esc> in a command line executed the command! Since that - might be considered to be a bug, Vim uses <Esc> to cancel the command. - But with the 'cpoptions' option it can be made Vi compatible. And - when using a mapping (which might be written for Vi) <Esc> also works - Vi compatible. Therefore, using CTRL-C is a method that always works. - -If you are at the start of the command line, pressing <BS> will cancel the -command. It's like deleting the ":" or "/" that the line starts with. - -============================================================================== -*20.2* Command line abbreviations - -Some of the ":" commands are really long. We already mentioned that -":substitute" can be abbreviated to ":s". This is a generic mechanism, all -":" commands can be abbreviated. - -How short can a command get? There are 26 letters, and many more commands. -For example, ":set" also starts with ":s", but ":s" doesn't start a ":set" -command. Instead ":set" can be abbreviated to ":se". - When the shorter form of a command could be used for two commands, it -stands for only one of them. There is no logic behind which one, you have to -learn them. In the help files the shortest form that works is mentioned. For -example: > - - :s[ubstitute] - -This means that the shortest form of ":substitute" is ":s". The following -characters are optional. Thus ":su" and ":sub" also work. - -In the user manual we will either use the full name of command, or a short -version that is still readable. For example, ":function" can be abbreviated -to ":fu". But since most people don't understand what that stands for, we -will use ":fun". (Vim doesn't have a ":funny" command, otherwise ":fun" would -be confusing too.) - -It is recommended that in Vim scripts you write the full command name. That -makes it easier to read back when you make later changes. Except for some -often used commands like ":w" (":write") and ":r" (":read"). - A particularly confusing one is ":end", which could stand for ":endif", -":endwhile" or ":endfunction". Therefore, always use the full name. - - -SHORT OPTION NAMES - -In the user manual the long version of the option names is used. Many options -also have a short name. Unlike ":" commands, there is only one short name -that works. For example, the short name of 'autoindent' is 'ai'. Thus these -two commands do the same thing: > - - :set autoindent - :set ai - -You can find the full list of long and short names here: |option-list|. - -============================================================================== -*20.3* Command line completion - -This is one of those Vim features that, by itself, is a reason to switch from -Vi to Vim. Once you have used this, you can't do without. - -Suppose you have a directory that contains these files: - - info.txt - intro.txt - bodyofthepaper.txt - -To edit the last one, you use the command: > - - :edit bodyofthepaper.txt - -It's easy to type this wrong. A much quicker way is: > - - :edit b<Tab> - -Which will result in the same command. What happened? The <Tab> key does -completion of the word before the cursor. In this case "b". Vim looks in the -directory and finds only one file that starts with a "b". That must be the -one you are looking for, thus Vim completes the file name for you. - -Now type: > - - :edit i<Tab> - -Vim will beep, and give you: > - - :edit info.txt - -The beep means that Vim has found more than one match. It then uses the first -match it found (alphabetically). If you press <Tab> again, you get: > - - :edit intro.txt - -Thus, if the first <Tab> doesn't give you the file you were looking for, press -it again. If there are more matches, you will see them all, one at a time. - If you press <Tab> on the last matching entry, you will go back to what you -first typed: > - - :edit i - -Then it starts all over again. Thus Vim cycles through the list of matches. -Use CTRL-P to go through the list in the other direction: - - <------------------- <Tab> -------------------------+ - | - <Tab> --> <Tab> --> - :edit i :edit info.txt :edit intro.txt - <-- CTRL-P <-- CTRL-P - | - +---------------------- CTRL-P ------------------------> - - -CONTEXT - -When you type ":set i" instead of ":edit i" and press <Tab> you get: > - - :set icon - -Hey, why didn't you get ":set info.txt"? That's because Vim has context -sensitive completion. The kind of words Vim will look for depends on the -command before it. Vim knows that you cannot use a file name just after a -":set" command, but you can use an option name. - Again, if you repeat typing the <Tab>, Vim will cycle through all matches. -There are quite a few, it's better to type more characters first: > - - :set isk<Tab> - -Gives: > - - :set iskeyword - -Now type "=" and press <Tab>: > - - :set iskeyword=@,48-57,_,192-255 - -What happens here is that Vim inserts the old value of the option. Now you -can edit it. - What is completed with <Tab> is what Vim expects in that place. Just try -it out to see how it works. In some situations you will not get what you -want. That's either because Vim doesn't know what you want, or because -completion was not implemented for that situation. In that case you will get -a <Tab> inserted (displayed as ^I). - - -LIST MATCHES - -When there are many matches, you would like to see an overview. Do this by -pressing CTRL-D. For example, pressing CTRL-D after: > - - :set is - -results in: > - - :set is - incsearch isfname isident iskeyword isprint - :set is - -Vim lists the matches and then comes back with the text you typed. You can -now check the list for the item you wanted. If it isn't there, you can use -<BS> to correct the word. If there are many matches, type a few more -characters before pressing <Tab> to complete the rest. - If you have watched carefully, you will have noticed that "incsearch" -doesn't start with "is". In this case "is" stands for the short name of -"incsearch". (Many options have a short and a long name.) Vim is clever -enough to know that you might have wanted to expand the short name of the -option into the long name. - - -THERE IS MORE - -The CTRL-L command completes the word to the longest unambiguous string. If -you type ":edit i" and there are files "info.txt" and "info_backup.txt" you -will get ":edit info". - -The 'wildmode' option can be used to change the way completion works. -The 'wildmenu' option can be used to get a menu-like list of matches. -Use the 'suffixes' option to specify files that are less important and appear -at the end of the list of files. -The 'wildignore' option specifies files that are not listed at all. - -More about all of this here: |cmdline-completion| - -============================================================================== -*20.4* Command line history - -In chapter 3 we briefly mentioned the history. The basics are that you can -use the <Up> key to recall an older command line. <Down> then takes you back -to newer commands. - -There are actually four histories. The ones we will mention here are for ":" -commands and for "/" and "?" search commands. The "/" and "?" commands share -the same history, because they are both search commands. The two other -histories are for expressions and input lines for the input() function. -|cmdline-history| - -Suppose you have done a ":set" command, typed ten more colon commands and then -want to repeat that ":set" command again. You could press ":" and then ten -times <Up>. There is a quicker way: > - - :se<Up> - -Vim will now go back to the previous command that started with "se". You have -a good chance that this is the ":set" command you were looking for. At least -you should not have to press <Up> very often (unless ":set" commands is all -you have done). - -The <Up> key will use the text typed so far and compare it with the lines in -the history. Only matching lines will be used. - If you do not find the line you were looking for, use <Down> to go back to -what you typed and correct that. Or use CTRL-U to start all over again. - -To see all the lines in the history: > - - :history - -That's the history of ":" commands. The search history is displayed with this -command: > - - :history / - -CTRL-P will work like <Up>, except that it doesn't matter what you already -typed. Similarly for CTRL-N and <Down>. CTRL-P stands for previous, CTRL-N -for next. - -============================================================================== -*20.5* Command line window - -Typing the text in the command line works different from typing text in Insert -mode. It doesn't allow many commands to change the text. For most commands -that's OK, but sometimes you have to type a complicated command. That's where -the command line window is useful. - -Open the command line window with this command: > - - q: - -Vim now opens a (small) window at the bottom. It contains the command line -history, and an empty line at the end: - - +-------------------------------------+ - |other window | - |~ | - |file.txt=============================| - |:e c | - |:e config.h.in | - |:set path=.,/usr/include,, | - |:set iskeyword=@,48-57,_,192-255 | - |:set is | - |:q | - |: | - |command-line=========================| - | | - +-------------------------------------+ - -You are now in Normal mode. You can use the "hjkl" keys to move around. For -example, move up with "5k" to the ":e config.h.in" line. Type "$h" to go to -the "i" of "in" and type "cwout". Now you have changed the line to: - - :e config.h.out ~ - -Now press <Enter> and this command will be executed. The command line window -will close. - The <Enter> command will execute the line under the cursor. It doesn't -matter whether Vim is in Insert mode or in Normal mode. - Changes in the command line window are lost. They do not result in the -history to be changed. Except that the command you execute will be added to -the end of the history, like with all executed commands. - -The command line window is very useful when you want to have overview of the -history, lookup a similar command, change it a bit and execute it. A search -command can be used to find something. - In the previous example the "?config" search command could have been used -to find the previous command that contains "config". It's a bit strange, -because you are using a command line to search in the command line window. -While typing that search command you can't open another command line window, -there can be only one. - -============================================================================== - -Next chapter: |usr_21.txt| Go away and come back - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_21.txt b/share/vim/vim73/doc/usr_21.txt deleted file mode 100644 index a49c98c2..00000000 --- a/share/vim/vim73/doc/usr_21.txt +++ /dev/null @@ -1,499 +0,0 @@ -*usr_21.txt* For Vim version 7.3. Last change: 2008 Nov 09 - - VIM USER MANUAL - by Bram Moolenaar - - Go away and come back - - -This chapter goes into mixing the use of other programs with Vim. Either by -executing program from inside Vim or by leaving Vim and coming back later. -Furthermore, this is about the ways to remember the state of Vim and restore -it later. - -|21.1| Suspend and resume -|21.2| Executing shell commands -|21.3| Remembering information; viminfo -|21.4| Sessions -|21.5| Views -|21.6| Modelines - - Next chapter: |usr_22.txt| Finding the file to edit - Previous chapter: |usr_20.txt| Typing command-line commands quickly -Table of contents: |usr_toc.txt| - -============================================================================== -*21.1* Suspend and resume - -Like most Unix programs Vim can be suspended by pressing CTRL-Z. This stops -Vim and takes you back to the shell it was started in. You can then do any -other commands until you are bored with them. Then bring back Vim with the -"fg" command. > - - CTRL-Z - {any sequence of shell commands} - fg - -You are right back where you left Vim, nothing has changed. - In case pressing CTRL-Z doesn't work, you can also use ":suspend". -Don't forget to bring Vim back to the foreground, you would lose any changes -that you made! - -Only Unix has support for this. On other systems Vim will start a shell for -you. This also has the functionality of being able to execute shell commands. -But it's a new shell, not the one that you started Vim from. - When you are running the GUI you can't go back to the shell where Vim was -started. CTRL-Z will minimize the Vim window instead. - -============================================================================== -*21.2* Executing shell commands - -To execute a single shell command from Vim use ":!{command}". For example, to -see a directory listing: > - - :!ls - :!dir - -The first one is for Unix, the second one for MS-Windows. - Vim will execute the program. When it ends you will get a prompt to hit -<Enter>. This allows you to have a look at the output from the command before -returning to the text you were editing. - The "!" is also used in other places where a program is run. Let's take -a look at an overview: - - :!{program} execute {program} - :r !{program} execute {program} and read its output - :w !{program} execute {program} and send text to its input - :[range]!{program} filter text through {program} - -Notice that the presence of a range before "!{program}" makes a big -difference. Without it executes the program normally, with the range a number -of text lines is filtered through the program. - -Executing a whole row of programs this way is possible. But a shell is much -better at it. You can start a new shell this way: > - - :shell - -This is similar to using CTRL-Z to suspend Vim. The difference is that a new -shell is started. - -When using the GUI the shell will be using the Vim window for its input and -output. Since Vim is not a terminal emulator, this will not work perfectly. -If you have trouble, try toggling the 'guipty' option. If this still doesn't -work well enough, start a new terminal to run the shell in. For example with: -> - :!xterm& - -============================================================================== -*21.3* Remembering information; viminfo - -After editing for a while you will have text in registers, marks in various -files, a command line history filled with carefully crafted commands. When -you exit Vim all of this is lost. But you can get it back! - -The viminfo file is designed to store status information: - - Command-line and Search pattern history - Text in registers - Marks for various files - The buffer list - Global variables - -Each time you exit Vim it will store this information in a file, the viminfo -file. When Vim starts again, the viminfo file is read and the information -restored. - -The 'viminfo' option is set by default to restore a limited number of items. -You might want to set it to remember more information. This is done through -the following command: > - - :set viminfo=string - -The string specifies what to save. The syntax of this string is an option -character followed by an argument. The option/argument pairs are separated by -commas. - Take a look at how you can build up your own viminfo string. First, the ' -option is used to specify how many files for which you save marks (a-z). Pick -a nice even number for this option (1000, for instance). Your command now -looks like this: > - - :set viminfo='1000 - -The f option controls whether global marks (A-Z and 0-9) are stored. If this -option is 0, none are stored. If it is 1 or you do not specify an f option, -the marks are stored. You want this feature, so now you have this: > - - :set viminfo='1000,f1 - -The < option controls how many lines are saved for each of the registers. By -default, all the lines are saved. If 0, nothing is saved. To avoid adding -thousands of lines to your viminfo file (which might never get used and makes -starting Vim slower) you use a maximum of 500 lines: > - - :set viminfo='1000,f1,<500 -< -Other options you might want to use: - : number of lines to save from the command line history - @ number of lines to save from the input line history - / number of lines to save from the search history - r removable media, for which no marks will be stored (can be - used several times) - ! global variables that start with an uppercase letter and - don't contain lowercase letters - h disable 'hlsearch' highlighting when starting - % the buffer list (only restored when starting Vim without file - arguments) - c convert the text using 'encoding' - n name used for the viminfo file (must be the last option) - -See the 'viminfo' option and |viminfo-file| for more information. - -When you run Vim multiple times, the last one exiting will store its -information. This may cause information that previously exiting Vims stored -to be lost. Each item can be remembered only once. - - -GETTING BACK TO WHERE YOU STOPPED VIM - -You are halfway editing a file and it's time to leave for holidays. You exit -Vim and go enjoy yourselves, forgetting all about your work. After a couple -of weeks you start Vim, and type: -> - '0 - -And you are right back where you left Vim. So you can get on with your work. - Vim creates a mark each time you exit Vim. The last one is '0. The -position that '0 pointed to is made '1. And '1 is made to '2, and so forth. -Mark '9 is lost. - The |:marks| command is useful to find out where '0 to '9 will take you. - - -GETTING BACK TO SOME FILE - -If you want to go back to a file that you edited recently, but not when -exiting Vim, there is a slightly more complicated way. You can see a list of -files by typing the command: > - - :oldfiles -< 1: ~/.viminfo ~ - 2: ~/text/resume.txt ~ - 3: /tmp/draft ~ - -Now you would like to edit the second file, which is in the list preceded by -"2:". You type: > - - :e #<2 - -Instead of ":e" you can use any command that has a file name argument, the -"#<2" item works in the same place as "%" (current file name) and "#" -(alternate file name). So you can also split the window to edit the third -file: > - - :split #<3 - -That #<123 thing is a bit complicated when you just want to edit a file. -Fortunately there is a simpler way: > - - :browse oldfiles -< 1: ~/.viminfo ~ - 2: ~/text/resume.txt ~ - 3: /tmp/draft ~ - -- More -- - -You get the same list of files as with |:oldfiles|. If you want to edit -"resume.txt" first press "q" to stop the listing. You will get a prompt: - - Type number and <Enter> (empty cancels): ~ - -Type "2" and press <Enter> to edit the second file. - -More info at |:oldfiles|, |v:oldfiles| and |c_#<|. - - -MOVE INFO FROM ONE VIM TO ANOTHER - -You can use the ":wviminfo" and ":rviminfo" commands to save and restore the -information while still running Vim. This is useful for exchanging register -contents between two instances of Vim, for example. In the first Vim do: > - - :wviminfo! ~/tmp/viminfo - -And in the second Vim do: > - - :rviminfo! ~/tmp/viminfo - -Obviously, the "w" stands for "write" and the "r" for "read". - The ! character is used by ":wviminfo" to forcefully overwrite an existing -file. When it is omitted, and the file exists, the information is merged into -the file. - The ! character used for ":rviminfo" means that all the information is -used, this may overwrite existing information. Without the ! only information -that wasn't set is used. - These commands can also be used to store info and use it again later. You -could make a directory full of viminfo files, each containing info for a -different purpose. - -============================================================================== -*21.4* Sessions - -Suppose you are editing along, and it is the end of the day. You want to quit -work and pick up where you left off the next day. You can do this by saving -your editing session and restoring it the next day. - A Vim session contains all the information about what you are editing. -This includes things such as the file list, window layout, global variables, -options and other information. (Exactly what is remembered is controlled by -the 'sessionoptions' option, described below.) - The following command creates a session file: > - - :mksession vimbook.vim - -Later if you want to restore this session, you can use this command: > - - :source vimbook.vim - -If you want to start Vim and restore a specific session, you can use the -following command: > - - vim -S vimbook.vim - -This tells Vim to read a specific file on startup. The 'S' stands for -session (actually, you can source any Vim script with -S, thus it might as -well stand for "source"). - -The windows that were open are restored, with the same position and size as -before. Mappings and option values are like before. - What exactly is restored depends on the 'sessionoptions' option. The -default value is "blank,buffers,curdir,folds,help,options,winsize". - - blank keep empty windows - buffers all buffers, not only the ones in a window - curdir the current directory - folds folds, also manually created ones - help the help window - options all options and mappings - winsize window sizes - -Change this to your liking. To also restore the size of the Vim window, for -example, use: > - - :set sessionoptions+=resize - - -SESSION HERE, SESSION THERE - -The obvious way to use sessions is when working on different projects. -Suppose you store you session files in the directory "~/.vim". You are -currently working on the "secret" project and have to switch to the "boring" -project: > - - :wall - :mksession! ~/.vim/secret.vim - :source ~/.vim/boring.vim - -This first uses ":wall" to write all modified files. Then the current session -is saved, using ":mksession!". This overwrites the previous session. The -next time you load the secret session you can continue where you were at this -point. And finally you load the new "boring" session. - -If you open help windows, split and close various window, and generally mess -up the window layout, you can go back to the last saved session: > - - :source ~/.vim/boring.vim - -Thus you have complete control over whether you want to continue next time -where you are now, by saving the current setup in a session, or keep the -session file as a starting point. - Another way of using sessions is to create a window layout that you like to -use, and save this in a session. Then you can go back to this layout whenever -you want. - For example, this is a nice layout to use: - - +----------------------------------------+ - | VIM - main help file | - | | - |Move around: Use the cursor keys, or "h| - |help.txt================================| - |explorer | | - |dir |~ | - |dir |~ | - |file |~ | - |file |~ | - |file |~ | - |file |~ | - |~/=========|[No File]===================| - | | - +----------------------------------------+ - -This has a help window at the top, so that you can read this text. The narrow -vertical window on the left contains a file explorer. This is a Vim plugin -that lists the contents of a directory. You can select files to edit there. -More about this in the next chapter. - Create this from a just started Vim with: > - - :help - CTRL-W w - :vertical split ~/ - -You can resize the windows a bit to your liking. Then save the session with: -> - :mksession ~/.vim/mine.vim - -Now you can start Vim with this layout: > - - vim -S ~/.vim/mine.vim - -Hint: To open a file you see listed in the explorer window in the empty -window, move the cursor to the filename and press "O". Double clicking with -the mouse will also do this. - - -UNIX AND MS-WINDOWS - -Some people have to do work on MS-Windows systems one day and on Unix another -day. If you are one of them, consider adding "slash" and "unix" to -'sessionoptions'. The session files will then be written in a format that can -be used on both systems. This is the command to put in your vimrc file: > - - :set sessionoptions+=unix,slash - -Vim will use the Unix format then, because the MS-Windows Vim can read and -write Unix files, but Unix Vim can't read MS-Windows format session files. -Similarly, MS-Windows Vim understands file names with / to separate names, but -Unix Vim doesn't understand \. - - -SESSIONS AND VIMINFO - -Sessions store many things, but not the position of marks, contents of -registers and the command line history. You need to use the viminfo feature -for these things. - In most situations you will want to use sessions separately from viminfo. -This can be used to switch to another session, but keep the command line -history. And yank text into registers in one session, and paste it back in -another session. - You might prefer to keep the info with the session. You will have to do -this yourself then. Example: > - - :mksession! ~/.vim/secret.vim - :wviminfo! ~/.vim/secret.viminfo - -And to restore this again: > - - :source ~/.vim/secret.vim - :rviminfo! ~/.vim/secret.viminfo - -============================================================================== -*21.5* Views - -A session stores the looks of the whole of Vim. When you want to store the -properties for one window only, use a view. - The use of a view is for when you want to edit a file in a specific way. -For example, you have line numbers enabled with the 'number' option and -defined a few folds. Just like with sessions, you can remember this view on -the file and restore it later. Actually, when you store a session, it stores -the view of each window. - There are two basic ways to use views. The first is to let Vim pick a name -for the view file. You can restore the view when you later edit the same -file. To store the view for the current window: > - - :mkview - -Vim will decide where to store the view. When you later edit the same file -you get the view back with this command: > - - :loadview - -That's easy, isn't it? - Now you want to view the file without the 'number' option on, or with all -folds open, you can set the options to make the window look that way. Then -store this view with: > - - :mkview 1 - -Obviously, you can get this back with: > - - :loadview 1 - -Now you can switch between the two views on the file by using ":loadview" with -and without the "1" argument. - You can store up to ten views for the same file this way, one unnumbered -and nine numbered 1 to 9. - - -A VIEW WITH A NAME - -The second basic way to use views is by storing the view in a file with a name -you chose. This view can be loaded while editing another file. Vim will then -switch to editing the file specified in the view. Thus you can use this to -quickly switch to editing another file, with all its options set as you saved -them. - For example, to save the view of the current file: > - - :mkview ~/.vim/main.vim - -You can restore it with: > - - :source ~/.vim/main.vim - -============================================================================== -*21.6* Modelines - -When editing a specific file, you might set options specifically for that -file. Typing these commands each time is boring. Using a session or view for -editing a file doesn't work when sharing the file between several people. - The solution for this situation is adding a modeline to the file. This is -a line of text that tells Vim the values of options, to be used in this file -only. - A typical example is a C program where you make indents by a multiple of 4 -spaces. This requires setting the 'shiftwidth' option to 4. This modeline -will do that: - - /* vim:set shiftwidth=4: */ ~ - -Put this line as one of the first or last five lines in the file. When -editing the file, you will notice that 'shiftwidth' will have been set to -four. When editing another file, it's set back to the default value of eight. - For some files the modeline fits well in the header, thus it can be put at -the top of the file. For text files and other files where the modeline gets -in the way of the normal contents, put it at the end of the file. - -The 'modelines' option specifies how many lines at the start and end of the -file are inspected for containing a modeline. To inspect ten lines: > - - :set modelines=10 - -The 'modeline' option can be used to switch this off. Do this when you are -working as root on Unix or Administrator on MS-Windows, or when you don't -trust the files you are editing: > - - :set nomodeline - -Use this format for the modeline: - - any-text vim:set {option}={value} ... : any-text ~ - -The "any-text" indicates that you can put any text before and after the part -that Vim will use. This allows making it look like a comment, like what was -done above with /* and */. - The " vim:" part is what makes Vim recognize this line. There must be -white space before "vim", or "vim" must be at the start of the line. Thus -using something like "gvim:" will not work. - The part between the colons is a ":set" command. It works the same way as -typing the ":set" command, except that you need to insert a backslash before a -colon (otherwise it would be seen as the end of the modeline). - -Another example: - - // vim:set textwidth=72 dir=c\:\tmp: use c:\tmp here ~ - -There is an extra backslash before the first colon, so that it's included in -the ":set" command. The text after the second colon is ignored, thus a remark -can be placed there. - -For more details see |modeline|. - -============================================================================== - -Next chapter: |usr_22.txt| Finding the file to edit - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_22.txt b/share/vim/vim73/doc/usr_22.txt deleted file mode 100644 index 8ca034e8..00000000 --- a/share/vim/vim73/doc/usr_22.txt +++ /dev/null @@ -1,400 +0,0 @@ -*usr_22.txt* For Vim version 7.3. Last change: 2010 Feb 21 - - VIM USER MANUAL - by Bram Moolenaar - - Finding the file to edit - - -Files can be found everywhere. So how do you find them? Vim offers various -ways to browse the directory tree. There are commands to jump to a file that -is mentioned in another. And Vim remembers which files have been edited -before. - -|22.1| The file browser -|22.2| The current directory -|22.3| Finding a file -|22.4| The buffer list - - Next chapter: |usr_23.txt| Editing other files - Previous chapter: |usr_21.txt| Go away and come back -Table of contents: |usr_toc.txt| - -============================================================================== -*22.1* The file browser - -Vim has a plugin that makes it possible to edit a directory. Try this: > - - :edit . - -Through the magic of autocommands and Vim scripts, the window will be filled -with the contents of the directory. It looks like this: - -" ============================================================================ ~ -" Netrw Directory Listing (netrw v109) ~ -" Sorted by name ~ -" Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,*,\.info$,\.swp$,\.o$\.obj$,\.bak$ ~ -" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec ~ -" ============================================================================ ~ -../ ~ -./ ~ -check/ ~ -Makefile ~ -autocmd.txt ~ -change.txt ~ -eval.txt~ ~ -filetype.txt~ ~ -help.txt.info ~ - -You can see these items: - -1. The name of the browsing tool and its version number -2. The name of the browsing directory -3. The method of sorting (may be by name, time, or size) -4. How names are to be sorted (directories first, then *.h files, - *.c files, etc) -5. How to get help (use the <F1> key), and an abbreviated listing - of available commands -6. A listing of files, including "../", which allows one to list - the parent directory. - -If you have syntax highlighting enabled, the different parts are highlighted -so as to make it easier to spot them. - -You can use Normal mode Vim commands to move around in the text. For example, -move the cursor atop a file and press <Enter>; you will then be editing that -file. To go back to the browser use ":edit ." again, or use ":Explore". -CTRL-O also works. - -Try using <Enter> while the cursor is atop a directory name. The result is -that the file browser moves into that directory and displays the items found -there. Pressing <Enter> on the first directory "../" moves you one level -higher. Pressing "-" does the same thing, without the need to move to the -"../" item first. - -You can press <F1> to get help on the things you can do in the netrw file -browser. This is what you get: > - - 9. Directory Browsing netrw-browse netrw-dir netrw-list netrw-help - - MAPS netrw-maps - <F1>.............Help.......................................|netrw-help| - <cr>.............Browsing...................................|netrw-cr| - <del>............Deleting Files or Directories..............|netrw-delete| - -................Going Up...................................|netrw--| - a................Hiding Files or Directories................|netrw-a| - mb...............Bookmarking a Directory....................|netrw-mb| - gb...............Changing to a Bookmarked Directory.........|netrw-gb| - c................Make Browsing Directory The Current Dir....|netrw-c| - d................Make A New Directory.......................|netrw-d| - D................Deleting Files or Directories..............|netrw-D| - <c-h>............Edit File/Directory Hiding List............|netrw-ctrl-h| - i................Change Listing Style.......................|netrw-i| - <c-l>............Refreshing the Listing.....................|netrw-ctrl-l| - o................Browsing with a Horizontal Split...........|netrw-o| - p................Use Preview Window.........................|netrw-p| - P................Edit in Previous Window....................|netrw-p| - q................Listing Bookmarks and History..............|netrw-q| - r................Reversing Sorting Order....................|netrw-r| -< (etc) - -The <F1> key thus brings you to a netrw directory browsing contents help page. -It's a regular help page; use the usual |CTRL-]| to jump to tagged help items -and |CTRL-O| to jump back. - -To select files for display and editing: (with the cursor is atop a filename) - - <enter> Open the file in the current window. |netrw-cr| - o Horizontally split window and display file |netrw-o| - v Vertically split window and display file |netrw-v| - p Use the |preview-window| |netrw-p| - P Edit in the previous window |netrw-P| - t Open file in a new tab |netrw-t| - -The following normal-mode commands may be used to control the browser display: - - i Controls listing style (thin, long, wide, and tree). - The long listing includes size and date information. - s Repeatedly pressing s will change the way the files - are sorted; one may sort on name, modification time, - or size. - r Reverse the sorting order. - -As a sampling of extra normal-mode commands: - - c Change Vim's notion of the current directory to be - the same as the browser directory. (see - |g:netrw_keepdir| to control this, too) - R Rename the file or directory under the cursor; a - prompt will be issued for the new name. - D Delete the file or directory under the cursor; a - confirmation request will be issued. - mb gb Make bookmark/goto bookmark - - -One may also use command mode; again, just a sampling: - - :Explore [directory] Browse specified/current directory - :NetrwSettings A comprehensive list of your current netrw - settings with help linkage. - -The netrw browser is not limited to just your local machine; one may use -urls such as: (that trailing / is important) - - :Explore ftp://somehost/path/to/dir/ - :e scp://somehost/path/to/dir/ - -See |netrw-browse| for more. - -============================================================================== -*22.2* The current directory - -Just like the shell, Vim has the concept of a current directory. Suppose you -are in your home directory and want to edit several files in a directory -"VeryLongFileName". You could do: > - - :edit VeryLongFileName/file1.txt - :edit VeryLongFileName/file2.txt - :edit VeryLongFileName/file3.txt - -To avoid much of the typing, do this: > - - :cd VeryLongFileName - :edit file1.txt - :edit file2.txt - :edit file3.txt - -The ":cd" command changes the current directory. You can see what the current -directory is with the ":pwd" command: > - - :pwd - /home/Bram/VeryLongFileName - -Vim remembers the last directory that you used. Use "cd -" to go back to it. -Example: > - - :pwd - /home/Bram/VeryLongFileName - :cd /etc - :pwd - /etc - :cd - - :pwd - /home/Bram/VeryLongFileName - :cd - - :pwd - /etc - - -WINDOW LOCAL DIRECTORY - -When you split a window, both windows use the same current directory. When -you want to edit a number of files somewhere else in the new window, you can -make it use a different directory, without changing the current directory in -the other window. This is called a local directory. > - - :pwd - /home/Bram/VeryLongFileName - :split - :lcd /etc - :pwd - /etc - CTRL-W w - :pwd - /home/Bram/VeryLongFileName - -So long as no ":lcd" command has been used, all windows share the same current -directory. Doing a ":cd" command in one window will also change the current -directory of the other window. - For a window where ":lcd" has been used a different current directory is -remembered. Using ":cd" or ":lcd" in other windows will not change it. - When using a ":cd" command in a window that uses a different current -directory, it will go back to using the shared directory. - -============================================================================== -*22.3* Finding a file - -You are editing a C program that contains this line: - - #include "inits.h" ~ - -You want to see what is in that "inits.h" file. Move the cursor on the name -of the file and type: > - - gf - -Vim will find the file and edit it. - What if the file is not in the current directory? Vim will use the 'path' -option to find the file. This option is a list of directory names where to -look for your file. - Suppose you have your include files located in "c:/prog/include". This -command will add it to the 'path' option: > - - :set path+=c:/prog/include - -This directory is an absolute path. No matter where you are, it will be the -same place. What if you have located files in a subdirectory, below where the -file is? Then you can specify a relative path name. This starts with a dot: -> - :set path+=./proto - -This tells Vim to look in the directory "proto", below the directory where the -file in which you use "gf" is. Thus using "gf" on "inits.h" will make Vim -look for "proto/inits.h", starting in the directory of the file. - Without the "./", thus "proto", Vim would look in the "proto" directory -below the current directory. And the current directory might not be where the -file that you are editing is located. - -The 'path' option allows specifying the directories where to search for files -in many more ways. See the help on the 'path' option. - The 'isfname' option is used to decide which characters are included in the -file name, and which ones are not (e.g., the " character in the example -above). - -When you know the file name, but it's not to be found in the file, you can -type it: > - - :find inits.h - -Vim will then use the 'path' option to try and locate the file. This is the -same as the ":edit" command, except for the use of 'path'. - -To open the found file in a new window use CTRL-W f instead of "gf", or use -":sfind" instead of ":find". - - -A nice way to directly start Vim to edit a file somewhere in the 'path': > - - vim "+find stdio.h" - -This finds the file "stdio.h" in your value of 'path'. The quotes are -necessary to have one argument |-+c|. - -============================================================================== -*22.4* The buffer list - -The Vim editor uses the term buffer to describe a file being edited. -Actually, a buffer is a copy of the file that you edit. When you finish -changing the buffer, you write the contents of the buffer to the file. -Buffers not only contain file contents, but also all the marks, settings, and -other stuff that goes with it. - - -HIDDEN BUFFERS - -Suppose you are editing the file one.txt and need to edit the file two.txt. -You could simply use ":edit two.txt", but since you made changes to one.txt -that won't work. You also don't want to write one.txt yet. Vim has a -solution for you: > - - :hide edit two.txt - -The buffer "one.txt" disappears from the screen, but Vim still knows that you -are editing this buffer, so it keeps the modified text. This is called a -hidden buffer: The buffer contains text, but you can't see it. - The argument of ":hide" is another command. ":hide" makes that command -behave as if the 'hidden' option was set. You could also set this option -yourself. The effect is that when any buffer is abandoned, it becomes hidden. - Be careful! When you have hidden buffers with changes, don't exit Vim -without making sure you have saved all the buffers. - - -INACTIVE BUFFERS - - When a buffer has been used once, Vim remembers some information about it. -When it is not displayed in a window and it is not hidden, it is still in the -buffer list. This is called an inactive buffer. Overview: - - Active Appears in a window, text loaded. - Hidden Not in a window, text loaded. - Inactive Not in a window, no text loaded. - -The inactive buffers are remembered, because Vim keeps information about them, -like marks. And remembering the file name is useful too, so that you can see -which files you have edited. And edit them again. - - -LISTING BUFFERS - -View the buffer list with this command: > - - :buffers - -A command which does the same, is not so obvious to list buffers, but is much -shorter to type: > - - :ls - -The output could look like this: - - 1 #h "help.txt" line 62 ~ - 2 %a+ "usr_21.txt" line 1 ~ - 3 "usr_toc.txt" line 1 ~ - -The first column contains the buffer number. You can use this to edit the -buffer without having to type the name, see below. - After the buffer number come the flags. Then the name of the file -and the line number where the cursor was the last time. - The flags that can appear are these (from left to right): - - u Buffer is unlisted |unlisted-buffer|. - % Current buffer. - # Alternate buffer. - a Buffer is loaded and displayed. - h Buffer is loaded but hidden. - = Buffer is read-only. - - Buffer is not modifiable, the 'modifiable' option is off. - + Buffer has been modified. - - -EDITING A BUFFER - -You can edit a buffer by its number. That avoids having to type the file -name: > - - :buffer 2 - -But the only way to know the number is by looking in the buffer list. You can -use the name, or part of it, instead: > - - :buffer help - -Vim will find the best match for the name you type. If there is only one -buffer that matches the name, it will be used. In this case "help.txt". - To open a buffer in a new window: > - - :sbuffer 3 - -This works with a name as well. - - -USING THE BUFFER LIST - -You can move around in the buffer list with these commands: - - :bnext go to next buffer - :bprevious go to previous buffer - :bfirst go to the first buffer - :blast go to the last buffer - -To remove a buffer from the list, use this command: > - - :bdelete 3 - -Again, this also works with a name. - If you delete a buffer that was active (visible in a window), that window -will be closed. If you delete the current buffer, the current window will be -closed. If it was the last window, Vim will find another buffer to edit. You -can't be editing nothing! - - Note: - Even after removing the buffer with ":bdelete" Vim still remembers it. - It's actually made "unlisted", it no longer appears in the list from - ":buffers". The ":buffers!" command will list unlisted buffers (yes, - Vim can do the impossible). To really make Vim forget about a buffer, - use ":bwipe". Also see the 'buflisted' option. - -============================================================================== - -Next chapter: |usr_23.txt| Editing other files - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_23.txt b/share/vim/vim73/doc/usr_23.txt deleted file mode 100644 index 50e7f8f6..00000000 --- a/share/vim/vim73/doc/usr_23.txt +++ /dev/null @@ -1,343 +0,0 @@ -*usr_23.txt* For Vim version 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - Editing other files - - -This chapter is about editing files that are not ordinary files. With Vim you -can edit files that are compressed or encrypted. Some files need to be -accessed over the internet. With some restrictions, binary files can be -edited as well. - -|23.1| DOS, Mac and Unix files -|23.2| Files on the internet -|23.3| Encryption -|23.4| Binary files -|23.5| Compressed files - - Next chapter: |usr_24.txt| Inserting quickly - Previous chapter: |usr_22.txt| Finding the file to edit -Table of contents: |usr_toc.txt| - -============================================================================== -*23.1* DOS, Mac and Unix files - -Back in the early days, the old Teletype machines used two characters to -start a new line. One to move the carriage back to the first position -(carriage return, <CR>), another to move the paper up (line feed, <LF>). - When computers came out, storage was expensive. Some people decided that -they did not need two characters for end-of-line. The UNIX people decided -they could use <Line Feed> only for end-of-line. The Apple people -standardized on <CR>. The MS-DOS (and Microsoft Windows) folks decided to -keep the old <CR><LF>. - This means that if you try to move a file from one system to another, you -have line-break problems. The Vim editor automatically recognizes the -different file formats and handles things properly behind your back. - The option 'fileformats' contains the various formats that will be tried -when a new file is edited. The following command, for example, tells Vim to -try UNIX format first and MS-DOS format second: > - - :set fileformats=unix,dos - -You will notice the format in the message you get when editing a file. You -don't see anything if you edit a native file format. Thus editing a Unix file -on Unix won't result in a remark. But when you edit a dos file, Vim will -notify you of this: - - "/tmp/test" [dos] 3L, 71C ~ - -For a Mac file you would see "[mac]". - The detected file format is stored in the 'fileformat' option. To see -which format you have, execute the following command: > - - :set fileformat? - -The three names that Vim uses are: - - unix <LF> - dos <CR><LF> - mac <CR> - - -USING THE MAC FORMAT - -On Unix, <LF> is used to break a line. It's not unusual to have a <CR> -character halfway a line. Incidentally, this happens quite often in Vi (and -Vim) scripts. - On the Macintosh, where <CR> is the line break character, it's possible to -have a <LF> character halfway a line. - The result is that it's not possible to be 100% sure whether a file -containing both <CR> and <LF> characters is a Mac or a Unix file. Therefore, -Vim assumes that on Unix you probably won't edit a Mac file, and doesn't check -for this type of file. To check for this format anyway, add "mac" to -'fileformats': > - - :set fileformats+=mac - -Then Vim will take a guess at the file format. Watch out for situations where -Vim guesses wrong. - - -OVERRULING THE FORMAT - -If you use the good old Vi and try to edit an MS-DOS format file, you will -find that each line ends with a ^M character. (^M is <CR>). The automatic -detection avoids this. Suppose you do want to edit the file that way? Then -you need to overrule the format: > - - :edit ++ff=unix file.txt - -The "++" string is an item that tells Vim that an option name follows, which -overrules the default for this single command. "++ff" is used for -'fileformat'. You could also use "++ff=mac" or "++ff=dos". - This doesn't work for any option, only "++ff" and "++enc" are currently -implemented. The full names "++fileformat" and "++encoding" also work. - - -CONVERSION - -You can use the 'fileformat' option to convert from one file format to -another. Suppose, for example, that you have an MS-DOS file named README.TXT -that you want to convert to UNIX format. Start by editing the MS-DOS format -file: > - vim README.TXT - -Vim will recognize this as a dos format file. Now change the file format to -UNIX: > - - :set fileformat=unix - :write - -The file is written in Unix format. - -============================================================================== -*23.2* Files on the internet - -Someone sends you an e-mail message, which refers to a file by its URL. For -example: - - You can find the information here: ~ - ftp://ftp.vim.org/pub/vim/README ~ - -You could start a program to download the file, save it on your local disk and -then start Vim to edit it. - There is a much simpler way. Move the cursor to any character of the URL. -Then use this command: > - - gf - -With a bit of luck, Vim will figure out which program to use for downloading -the file, download it and edit the copy. To open the file in a new window use -CTRL-W f. - If something goes wrong you will get an error message. It's possible that -the URL is wrong, you don't have permission to read it, the network connection -is down, etc. Unfortunately, it's hard to tell the cause of the error. You -might want to try the manual way of downloading the file. - -Accessing files over the internet works with the netrw plugin. Currently URLs -with these formats are recognized: - - ftp:// uses ftp - rcp:// uses rcp - scp:// uses scp - http:// uses wget (reading only) - -Vim doesn't do the communication itself, it relies on the mentioned programs -to be available on your computer. On most Unix systems "ftp" and "rcp" will -be present. "scp" and "wget" might need to be installed. - -Vim detects these URLs for each command that starts editing a new file, also -with ":edit" and ":split", for example. Write commands also work, except for -http://. - -For more information, also about passwords, see |netrw|. - -============================================================================== -*23.3* Encryption - -Some information you prefer to keep to yourself. For example, when writing -a test on a computer that students also use. You don't want clever students -to figure out a way to read the questions before the exam starts. Vim can -encrypt the file for you, which gives you some protection. - To start editing a new file with encryption, use the "-x" argument to start -Vim. Example: > - - vim -x exam.txt - -Vim prompts you for a key used for encrypting and decrypting the file: - - Enter encryption key: ~ - -Carefully type the secret key now. You cannot see the characters you type, -they will be replaced by stars. To avoid the situation that a typing mistake -will cause trouble, Vim asks you to enter the key again: - - Enter same key again: ~ - -You can now edit this file normally and put in all your secrets. When you -finish editing the file and tell Vim to exit, the file is encrypted and -written. - When you edit the file with Vim, it will ask you to enter the same key -again. You don't need to use the "-x" argument. You can also use the normal -":edit" command. Vim adds a magic string to the file by which it recognizes -that the file was encrypted. - If you try to view this file using another program, all you get is garbage. -Also, if you edit the file with Vim and enter the wrong key, you get garbage. -Vim does not have a mechanism to check if the key is the right one (this makes -it much harder to break the key). - - -SWITCHING ENCRYPTION ON AND OFF - -To disable the encryption of a file, set the 'key' option to an empty string: -> - :set key= - -The next time you write the file this will be done without encryption. - Setting the 'key' option to enable encryption is not a good idea, because -the password appears in the clear. Anyone shoulder-surfing can read your -password. - To avoid this problem, the ":X" command was created. It asks you for an -encryption key, just like the "-x" argument did: > - - :X - Enter encryption key: ****** - Enter same key again: ****** - - -LIMITS ON ENCRYPTION - -The encryption algorithm used by Vim is weak. It is good enough to keep out -the casual prowler, but not good enough to keep out a cryptology expert with -lots of time on his hands. Also you should be aware that the swap file is not -encrypted; so while you are editing, people with superuser privileges can read -the unencrypted text from this file. - One way to avoid letting people read your swap file is to avoid using one. -If the -n argument is supplied on the command line, no swap file is used -(instead, Vim puts everything in memory). For example, to edit the encrypted -file "file.txt" without a swap file use the following command: > - - vim -x -n file.txt - -When already editing a file, the swapfile can be disabled with: > - - :setlocal noswapfile - -Since there is no swapfile, recovery will be impossible. Save the file a bit -more often to avoid the risk of losing your changes. - -While the file is in memory, it is in plain text. Anyone with privilege can -look in the editor's memory and discover the contents of the file. - If you use a viminfo file, be aware that the contents of text registers are -written out in the clear as well. - If you really want to secure the contents of a file, edit it only on a -portable computer not connected to a network, use good encryption tools, and -keep the computer locked up in a big safe when not in use. - -============================================================================== -*23.4* Binary files - -You can edit binary files with Vim. Vim wasn't really made for this, thus -there are a few restrictions. But you can read a file, change a character and -write it back, with the result that only that one character was changed and -the file is identical otherwise. - To make sure that Vim does not use its clever tricks in the wrong way, add -the "-b" argument when starting Vim: > - - vim -b datafile - -This sets the 'binary' option. The effect of this is that unexpected side -effects are turned off. For example, 'textwidth' is set to zero, to avoid -automatic formatting of lines. And files are always read in Unix file format. - -Binary mode can be used to change a message in a program. Be careful not to -insert or delete any characters, it would stop the program from working. Use -"R" to enter replace mode. - -Many characters in the file will be unprintable. To see them in Hex format: > - - :set display=uhex - -Otherwise, the "ga" command can be used to see the value of the character -under the cursor. The output, when the cursor is on an <Esc>, looks like -this: - - <^[> 27, Hex 1b, Octal 033 ~ - -There might not be many line breaks in the file. To get some overview switch -the 'wrap' option off: > - - :set nowrap - - -BYTE POSITION - -To see on which byte you are in the file use this command: > - - g CTRL-G - -The output is verbose: - - Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 ~ - -The last two numbers are the byte position in the file and the total number of -bytes. This takes into account how 'fileformat' changes the number of bytes -that a line break uses. - To move to a specific byte in the file, use the "go" command. For -example, to move to byte 2345: > - - 2345go - - -USING XXD - -A real binary editor shows the text in two ways: as it is and in hex format. -You can do this in Vim by first converting the file with the "xxd" program. -This comes with Vim. - First edit the file in binary mode: > - - vim -b datafile - -Now convert the file to a hex dump with xxd: > - - :%!xxd - -The text will look like this: - - 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ - 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ - 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ - -You can now view and edit the text as you like. Vim treats the information as -ordinary text. Changing the hex does not cause the printable character to be -changed, or the other way around. - Finally convert it back with: -> - :%!xxd -r - -Only changes in the hex part are used. Changes in the printable text part on -the right are ignored. - -See the manual page of xxd for more information. - -============================================================================== -*23.5* Compressed files - -This is easy: You can edit a compressed file just like any other file. The -"gzip" plugin takes care of decompressing the file when you edit it. And -compressing it again when you write it. - These compression methods are currently supported: - - .Z compress - .gz gzip - .bz2 bzip2 - -Vim uses the mentioned programs to do the actual compression and -decompression. You might need to install the programs first. - -============================================================================== - -Next chapter: |usr_24.txt| Inserting quickly - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_24.txt b/share/vim/vim73/doc/usr_24.txt deleted file mode 100644 index e33e0c73..00000000 --- a/share/vim/vim73/doc/usr_24.txt +++ /dev/null @@ -1,606 +0,0 @@ -*usr_24.txt* For Vim version 7.3. Last change: 2006 Jul 23 - - VIM USER MANUAL - by Bram Moolenaar - - Inserting quickly - - -When entering text, Vim offers various ways to reduce the number of keystrokes -and avoid typing mistakes. Use Insert mode completion to repeat previously -typed words. Abbreviate long words to short ones. Type characters that -aren't on your keyboard. - -|24.1| Making corrections -|24.2| Showing matches -|24.3| Completion -|24.4| Repeating an insert -|24.5| Copying from another line -|24.6| Inserting a register -|24.7| Abbreviations -|24.8| Entering special characters -|24.9| Digraphs -|24.10| Normal mode commands - - Next chapter: |usr_25.txt| Editing formatted text - Previous chapter: |usr_23.txt| Editing other files -Table of contents: |usr_toc.txt| - -============================================================================== -*24.1* Making corrections - -The <BS> key was already mentioned. It deletes the character just before the -cursor. The <Del> key does the same for the character under (after) the -cursor. - When you typed a whole word wrong, use CTRL-W: - - The horse had fallen to the sky ~ - CTRL-W - The horse had fallen to the ~ - -If you really messed up a line and want to start over, use CTRL-U to delete -it. This keeps the text after the cursor and the indent. Only the text from -the first non-blank to the cursor is deleted. With the cursor on the "f" of -"fallen" in the next line pressing CTRL-U does this: - - The horse had fallen to the ~ - CTRL-U - fallen to the ~ - -When you spot a mistake a few words back, you need to move the cursor there to -correct it. For example, you typed this: - - The horse had follen to the ground ~ - -You need to change "follen" to "fallen". With the cursor at the end, you -would type this to correct it: > - - <Esc>4blraA - -< get out of Insert mode <Esc> - four words back 4b - move on top of the "o" l - replace with "a" ra - restart Insert mode A - -Another way to do this: > - - <C-Left><C-Left><C-Left><C-Left><Right><Del>a<End> - -< four words back <C-Left><C-Left><C-Left><C-Left> - move on top of the "o" <Right> - delete the "o" <Del> - insert an "a" a - go to end of the line <End> - -This uses special keys to move around, while remaining in Insert mode. This -resembles what you would do in a modeless editor. It's easier to remember, -but takes more time (you have to move your hand from the letters to the cursor -keys, and the <End> key is hard to press without looking at the keyboard). - These special keys are most useful when writing a mapping that doesn't -leave Insert mode. The extra typing doesn't matter then. - An overview of the keys you can use in Insert mode: - - <C-Home> to start of the file - <PageUp> a whole screenful up - <Home> to start of line - <S-Left> one word left - <C-Left> one word left - <S-Right> one word right - <C-Right> one word right - <End> to end of the line - <PageDown> a whole screenful down - <C-End> to end of the file - -There are a few more, see |ins-special-special|. - -============================================================================== -*24.2* Showing matches - -When you type a ) it would be nice to see with which ( it matches. To make -Vim do that use this command: > - - :set showmatch - -When you now type a text like "(example)", as soon as you type the ) Vim will -briefly move the cursor to the matching (, keep it there for half a second, -and move back to where you were typing. - In case there is no matching (, Vim will beep. Then you know that you -might have forgotten the ( somewhere, or typed a ) too many. - The match will also be shown for [] and {} pairs. You don't have to wait -with typing the next character, as soon as Vim sees it the cursor will move -back and inserting continues as before. - You can change the time Vim waits with the 'matchtime' option. For -example, to make Vim wait one and a half second: > - - :set matchtime=15 - -The time is specified in tenths of a second. - -============================================================================== -*24.3* Completion - -Vim can automatically complete words on insertion. You type the first part of -a word, press CTRL-P, and Vim guesses the rest. - Suppose, for example, that you are creating a C program and want to type in -the following: - - total = ch_array[0] + ch_array[1] + ch_array[2]; ~ - -You start by entering the following: - - total = ch_array[0] + ch_ ~ - -At this point, you tell Vim to complete the word using the command CTRL-P. -Vim searches for a word that starts with what's in front of the cursor. In -this case, it is "ch_", which matches with the word ch_array. So typing -CTRL-P gives you the following: - - total = ch_array[0] + ch_array ~ - -After a little more typing, you get this (ending in a space): - - total = ch_array[0] + ch_array[1] + ~ - -If you now type CTRL-P Vim will search again for a word that completes the -word before the cursor. Since there is nothing in front of the cursor, it -finds the first word backwards, which is "ch_array". Typing CTRL-P again -gives you the next word that matches, in this case "total". A third CTRL-P -searches further back. If there is nothing else, it causes the editor to run -out of words, so it returns to the original text, which is nothing. A fourth -CTRL-P causes the editor to start over again with "ch_array". - -To search forward, use CTRL-N. Since the search wraps around the end of the -file, CTRL-N and CTRL-P will find the same matches, but in a different -sequence. Hint: CTRL-N is Next-match and CTRL-P is Previous-match. - -The Vim editor goes through a lot of effort to find words to complete. By -default, it searches the following places: - - 1. Current file - 2. Files in other windows - 3. Other loaded files (hidden buffers) - 4. Files which are not loaded (inactive buffers) - 5. Tag files - 6. All files #included by the current file - - -OPTIONS - -You can customize the search order with the 'complete' option. - -The 'ignorecase' option is used. When it is set, case differences are ignored -when searching for matches. - -A special option for completion is 'infercase'. This is useful to find -matches while ignoring case ('ignorecase' must be set) but still using the -case of the word typed so far. Thus if you type "For" and Vim finds a match -"fortunately", it will result in "Fortunately". - - -COMPLETING SPECIFIC ITEMS - -If you know what you are looking for, you can use these commands to complete -with a certain type of item: - - CTRL-X CTRL-F file names - CTRL-X CTRL-L whole lines - CTRL-X CTRL-D macro definitions (also in included files) - CTRL-X CTRL-I current and included files - CTRL-X CTRL-K words from a dictionary - CTRL-X CTRL-T words from a thesaurus - CTRL-X CTRL-] tags - CTRL-X CTRL-V Vim command line - -After each of them CTRL-N can be used to find the next match, CTRL-P to find -the previous match. - More information for each of these commands here: |ins-completion|. - - -COMPLETING FILE NAMES - -Let's take CTRL-X CTRL-F as an example. This will find file names. It scans -the current directory for files and displays each one that matches the word in -front of the cursor. - Suppose, for example, that you have the following files in the current -directory: - - main.c sub_count.c sub_done.c sub_exit.c - -Now enter Insert mode and start typing: - - The exit code is in the file sub ~ - -At this point, you enter the command CTRL-X CTRL-F. Vim now completes the -current word "sub" by looking at the files in the current directory. The -first match is sub_count.c. This is not the one you want, so you match the -next file by typing CTRL-N. This match is sub_done.c. Typing CTRL-N again -takes you to sub_exit.c. The results: - - The exit code is in the file sub_exit.c ~ - -If the file name starts with / (Unix) or C:\ (MS-Windows) you can find all -files in the file system. For example, type "/u" and CTRL-X CTRL-F. This -will match "/usr" (this is on Unix): - - the file is found in /usr/ ~ - -If you now press CTRL-N you go back to "/u". Instead, to accept the "/usr/" -and go one directory level deeper, use CTRL-X CTRL-F again: - - the file is found in /usr/X11R6/ ~ - -The results depend on what is found in your file system, of course. The -matches are sorted alphabetically. - - -COMPLETING IN SOURCE CODE - -Source code files are well structured. That makes it possible to do -completion in an intelligent way. In Vim this is called Omni completion. In -some other editors it's called intellisense, but that is a trademark. - -The key to Omni completion is CTRL-X CTRL-O. Obviously the O stands for Omni -here, so that you can remember it easier. Let's use an example for editing C -source: - - { ~ - struct foo *p; ~ - p-> ~ - -The cursor is after "p->". Now type CTRL-X CTRL-O. Vim will offer you a list -of alternatives, which are the items that "struct foo" contains. That is -quite different from using CTRL-P, which would complete any word, while only -members of "struct foo" are valid here. - -For Omni completion to work you may need to do some setup. At least make sure -filetype plugins are enabled. Your vimrc file should contain a line like -this: > - filetype plugin on -Or: > - filetype plugin indent on - -For C code you need to create a tags file and set the 'tags' option. That is -explained |ft-c-omni|. For other filetypes you may need to do something -similar, look below |compl-omni-filetypes|. It only works for specific -filetypes. Check the value of the 'omnifunc' option to find out if it would -work. - -============================================================================== -*24.4* Repeating an insert - -If you press CTRL-A, the editor inserts the text you typed the last time you -were in Insert mode. - Assume, for example, that you have a file that begins with the following: - - "file.h" ~ - /* Main program begins */ ~ - -You edit this file by inserting "#include " at the beginning of the first -line: - - #include "file.h" ~ - /* Main program begins */ ~ - -You go down to the beginning of the next line using the commands "j^". You -now start to insert a new "#include" line. So you type: > - - i CTRL-A - -The result is as follows: - - #include "file.h" ~ - #include /* Main program begins */ ~ - -The "#include " was inserted because CTRL-A inserts the text of the previous -insert. Now you type "main.h"<Enter> to finish the line: - - - #include "file.h" ~ - #include "main.h" ~ - /* Main program begins */ ~ - -The CTRL-@ command does a CTRL-A and then exits Insert mode. That's a quick -way of doing exactly the same insertion again. - -============================================================================== -*24.5* Copying from another line - -The CTRL-Y command inserts the character above the cursor. This is useful -when you are duplicating a previous line. For example, you have this line of -C code: - - b_array[i]->s_next = a_array[i]->s_next; ~ - -Now you need to type the same line, but with "s_prev" instead of "s_next". -Start the new line, and press CTRL-Y 14 times, until you are at the "n" of -"next": - - b_array[i]->s_next = a_array[i]->s_next; ~ - b_array[i]->s_ ~ - -Now you type "prev": - - b_array[i]->s_next = a_array[i]->s_next; ~ - b_array[i]->s_prev ~ - -Continue pressing CTRL-Y until the following "next": - - b_array[i]->s_next = a_array[i]->s_next; ~ - b_array[i]->s_prev = a_array[i]->s_ ~ - -Now type "prev;" to finish it off. - -The CTRL-E command acts like CTRL-Y except it inserts the character below the -cursor. - -============================================================================== -*24.6* Inserting a register - -The command CTRL-R {register} inserts the contents of the register. This is -useful to avoid having to type a long word. For example, you need to type -this: - - r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c) ~ - -The function name is defined in a different file. Edit that file and move the -cursor on top of the function name there, and yank it into register v: > - - "vyiw - -"v is the register specification, "yiw" is yank-inner-word. Now edit the file -where the new line is to be inserted, and type the first letters: - - r = ~ - -Now use CTRL-R v to insert the function name: - - r = VeryLongFunction ~ - -You continue to type the characters in between the function name, and use -CTRL-R v two times more. - You could have done the same with completion. Using a register is useful -when there are many words that start with the same characters. - -If the register contains characters such as <BS> or other special characters, -they are interpreted as if they had been typed from the keyboard. If you do -not want this to happen (you really want the <BS> to be inserted in the text), -use the command CTRL-R CTRL-R {register}. - -============================================================================== -*24.7* Abbreviations - -An abbreviation is a short word that takes the place of a long one. For -example, "ad" stands for "advertisement". Vim enables you to type an -abbreviation and then will automatically expand it for you. - To tell Vim to expand "ad" into "advertisement" every time you insert it, -use the following command: > - - :iabbrev ad advertisement - -Now, when you type "ad", the whole word "advertisement" will be inserted into -the text. This is triggered by typing a character that can't be part of a -word, for example a space: - - What Is Entered What You See - I saw the a I saw the a ~ - I saw the ad I saw the ad ~ - I saw the ad<Space> I saw the advertisement<Space> ~ - -The expansion doesn't happen when typing just "ad". That allows you to type a -word like "add", which will not get expanded. Only whole words are checked -for abbreviations. - - -ABBREVIATING SEVERAL WORDS - -It is possible to define an abbreviation that results in multiple words. For -example, to define "JB" as "Jack Benny", use the following command: > - - :iabbrev JB Jack Benny - -As a programmer, I use two rather unusual abbreviations: > - - :iabbrev #b /**************************************** - :iabbrev #e <Space>****************************************/ - -These are used for creating boxed comments. The comment starts with #b, which -draws the top line. I then type the comment text and use #e to draw the -bottom line. - Notice that the #e abbreviation begins with a space. In other words, the -first two characters are space-star. Usually Vim ignores spaces between the -abbreviation and the expansion. To avoid that problem, I spell space as seven -characters: <, S, p, a, c, e, >. - - Note: - ":iabbrev" is a long word to type. ":iab" works just as well. - That's abbreviating the abbreviate command! - - -FIXING TYPING MISTAKES - -It's very common to make the same typing mistake every time. For example, -typing "teh" instead of "the". You can fix this with an abbreviation: > - - :abbreviate teh the - -You can add a whole list of these. Add one each time you discover a common -mistake. - - -LISTING ABBREVIATIONS - -The ":abbreviate" command lists the abbreviations: - - :abbreviate - i #e ****************************************/ - i #b /**************************************** - i JB Jack Benny - i ad advertisement - ! teh the - -The "i" in the first column indicates Insert mode. These abbreviations are -only active in Insert mode. Other possible characters are: - - c Command-line mode :cabbrev - ! both Insert and Command-line mode :abbreviate - -Since abbreviations are not often useful in Command-line mode, you will mostly -use the ":iabbrev" command. That avoids, for example, that "ad" gets expanded -when typing a command like: > - - :edit ad - - -DELETING ABBREVIATIONS - -To get rid of an abbreviation, use the ":unabbreviate" command. Suppose you -have the following abbreviation: > - - :abbreviate @f fresh - -You can remove it with this command: > - - :unabbreviate @f - -While you type this, you will notice that @f is expanded to "fresh". Don't -worry about this, Vim understands it anyway (except when you have an -abbreviation for "fresh", but that's very unlikely). - To remove all the abbreviations: > - - :abclear - -":unabbreviate" and ":abclear" also come in the variants for Insert mode -(":iunabbreviate and ":iabclear") and Command-line mode (":cunabbreviate" and -":cabclear"). - - -REMAPPING ABBREVIATIONS - -There is one thing to watch out for when defining an abbreviation: The -resulting string should not be mapped. For example: > - - :abbreviate @a adder - :imap dd disk-door - -When you now type @a, you will get "adisk-doorer". That's not what you want. -To avoid this, use the ":noreabbrev" command. It does the same as -":abbreviate", but avoids that the resulting string is used for mappings: > - - :noreabbrev @a adder - -Fortunately, it's unlikely that the result of an abbreviation is mapped. - -============================================================================== -*24.8* Entering special characters - -The CTRL-V command is used to insert the next character literally. In other -words, any special meaning the character has, it will be ignored. For -example: > - - CTRL-V <Esc> - -Inserts an escape character. Thus you don't leave Insert mode. (Don't type -the space after CTRL-V, it's only to make this easier to read). - - Note: - On MS-Windows CTRL-V is used to paste text. Use CTRL-Q instead of - CTRL-V. On Unix, on the other hand, CTRL-Q does not work on some - terminals, because it has a special meaning. - -You can also use the command CTRL-V {digits} to insert a character with the -decimal number {digits}. For example, the character number 127 is the <Del> -character (but not necessarily the <Del> key!). To insert <Del> type: > - - CTRL-V 127 - -You can enter characters up to 255 this way. When you type fewer than two -digits, a non-digit will terminate the command. To avoid the need of typing a -non-digit, prepend one or two zeros to make three digits. - All the next commands insert a <Tab> and then a dot: - - CTRL-V 9. - CTRL-V 09. - CTRL-V 009. - -To enter a character in hexadecimal, use an "x" after the CTRL-V: > - - CTRL-V x7f - -This also goes up to character 255 (CTRL-V xff). You can use "o" to type a -character as an octal number and two more methods allow you to type up to -a 16 bit and a 32 bit number (e.g., for a Unicode character): > - - CTRL-V o123 - CTRL-V u1234 - CTRL-V U12345678 - -============================================================================== -*24.9* Digraphs - -Some characters are not on the keyboard. For example, the copyright character -(©). To type these characters in Vim, you use digraphs, where two characters -represent one. To enter a ©, for example, you press three keys: > - - CTRL-K Co - -To find out what digraphs are available, use the following command: > - - :digraphs - -Vim will display the digraph table. Here are three lines of it: - - AC ~_ 159 NS | 160 !I ¡ 161 Ct ¢ 162 Pd £ 163 Cu ¤ 164 Ye ¥ 165 ~ - BB ¦ 166 SE § 167 ': ¨ 168 Co © 169 -a ª 170 << « 171 NO ¬ 172 ~ - -- ­ 173 Rg ® 174 'm ¯ 175 DG ° 176 +- ± 177 2S ² 178 3S ³ 179 ~ - -This shows, for example, that the digraph you get by typing CTRL-K Pd is the -character (£). This is character number 163 (decimal). - Pd is short for Pound. Most digraphs are selected to give you a hint about -the character they will produce. If you look through the list you will -understand the logic. - You can exchange the first and second character, if there is no digraph for -that combination. Thus CTRL-K dP also works. Since there is no digraph for -"dP" Vim will also search for a "Pd" digraph. - - Note: - The digraphs depend on the character set that Vim assumes you are - using. On MS-DOS they are different from MS-Windows. Always use - ":digraphs" to find out which digraphs are currently available. - -You can define your own digraphs. Example: > - - :digraph a" ä - -This defines that CTRL-K a" inserts an ä character. You can also specify the -character with a decimal number. This defines the same digraph: > - - :digraph a" 228 - -More information about digraphs here: |digraphs| - Another way to insert special characters is with a keymap. More about that -here: |45.5| - -============================================================================== -*24.10* Normal mode commands - -Insert mode offers a limited number of commands. In Normal mode you have many -more. When you want to use one, you usually leave Insert mode with <Esc>, -execute the Normal mode command, and re-enter Insert mode with "i" or "a". - There is a quicker way. With CTRL-O {command} you can execute any Normal -mode command from Insert mode. For example, to delete from the cursor to the -end of the line: > - - CTRL-O D - -You can execute only one Normal mode command this way. But you can specify a -register or a count. A more complicated example: > - - CTRL-O "g3dw - -This deletes up to the third word into register g. - -============================================================================== - -Next chapter: |usr_25.txt| Editing formatted text - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_25.txt b/share/vim/vim73/doc/usr_25.txt deleted file mode 100644 index 3cc46e25..00000000 --- a/share/vim/vim73/doc/usr_25.txt +++ /dev/null @@ -1,578 +0,0 @@ -*usr_25.txt* For Vim version 7.3. Last change: 2007 May 11 - - VIM USER MANUAL - by Bram Moolenaar - - Editing formatted text - - -Text hardly ever comes in one sentence per line. This chapter is about -breaking sentences to make them fit on a page and other formatting. -Vim also has useful features for editing single-line paragraphs and tables. - -|25.1| Breaking lines -|25.2| Aligning text -|25.3| Indents and tabs -|25.4| Dealing with long lines -|25.5| Editing tables - - Next chapter: |usr_26.txt| Repeating - Previous chapter: |usr_24.txt| Inserting quickly -Table of contents: |usr_toc.txt| - -============================================================================== -*25.1* Breaking lines - -Vim has a number of functions that make dealing with text easier. By default, -the editor does not perform automatic line breaks. In other words, you have -to press <Enter> yourself. This is useful when you are writing programs where -you want to decide where the line ends. It is not so good when you are -creating documentation and want the text to be at most 70 character wide. - If you set the 'textwidth' option, Vim automatically inserts line breaks. -Suppose, for example, that you want a very narrow column of only 30 -characters. You need to execute the following command: > - - :set textwidth=30 - -Now you start typing (ruler added): - - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a whi ~ - -If you type "l" next, this makes the line longer than the 30-character limit. -When Vim sees this, it inserts a line break and you get the following: - - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a ~ - whil ~ - -Continuing on, you can type in the rest of the paragraph: - - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a ~ - while. One time, I was stopped ~ - by the Fort Worth police, ~ - because my homework was too ~ - hard. True story. ~ - -You do not have to type newlines; Vim puts them in automatically. - - Note: - The 'wrap' option makes Vim display lines with a line break, but this - doesn't insert a line break in the file. - - -REFORMATTING - -The Vim editor is not a word processor. In a word processor, if you delete -something at the beginning of the paragraph, the line breaks are reworked. In -Vim they are not; so if you delete the word "programming" from the first line, -all you get is a short line: - - 1 2 3 - 12345678901234567890123456789012345 - I taught for a ~ - while. One time, I was stopped ~ - by the Fort Worth police, ~ - because my homework was too ~ - hard. True story. ~ - -This does not look good. To get the paragraph into shape you use the "gq" -operator. - Let's first use this with a Visual selection. Starting from the first -line, type: > - - v4jgq - -"v" to start Visual mode, "4j' to move to the end of the paragraph and then -the "gq" operator. The result is: - - 1 2 3 - 12345678901234567890123456789012345 - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - -Note: there is a way to do automatic formatting for specific types of text -layouts, see |auto-format|. - -Since "gq" is an operator, you can use one of the three ways to select the -text it works on: With Visual mode, with a movement and with a text object. - The example above could also be done with "gq4j". That's less typing, but -you have to know the line count. A more useful motion command is "}". This -moves to the end of a paragraph. Thus "gq}" formats from the cursor to the -end of the current paragraph. - A very useful text object to use with "gq" is the paragraph. Try this: > - - gqap - -"ap" stands for "a-paragraph". This formats the text of one paragraph -(separated by empty lines). Also the part before the cursor. - If you have your paragraphs separated by empty lines, you can format the -whole file by typing this: > - - gggqG - -"gg" to move to the first line, "gqG" to format until the last line. - Warning: If your paragraphs are not properly separated, they will be joined -together. A common mistake is to have a line with a space or tab. That's a -blank line, but not an empty line. - -Vim is able to format more than just plain text. See |fo-table| for how to -change this. See the 'joinspaces' option to change the number of spaces used -after a full stop. - It is possible to use an external program for formatting. This is useful -if your text can't be properly formatted with Vim's builtin command. See the -'formatprg' option. - -============================================================================== -*25.2* Aligning text - -To center a range of lines, use the following command: > - - :{range}center [width] - -{range} is the usual command-line range. [width] is an optional line width to -use for centering. If [width] is not specified, it defaults to the value of -'textwidth'. (If 'textwidth' is 0, the default is 80.) - For example: > - - :1,5center 40 - -results in the following: - - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - - -RIGHT ALIGNMENT - -Similarly, the ":right" command right-justifies the text: > - - :1,5right 37 - -gives this result: - - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - -LEFT ALIGNMENT - -Finally there is this command: > - - :{range}left [margin] - -Unlike ":center" and ":right", however, the argument to ":left" is not the -length of the line. Instead it is the left margin. If it is omitted, the -text will be put against the left side of the screen (using a zero margin -would do the same). If it is 5, the text will be indented 5 spaces. For -example, use these commands: > - - :1left 5 - :2,5left - -This results in the following: - - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - - -JUSTIFYING TEXT - -Vim has no built-in way of justifying text. However, there is a neat macro -package that does the job. To use this package, execute the following -command: > - - :runtime macros/justify.vim - -This Vim script file defines a new visual command "_j". To justify a block of -text, highlight the text in Visual mode and then execute "_j". - Look in the file for more explanations. To go there, do "gf" on this name: -$VIMRUNTIME/macros/justify.vim. - -An alternative is to filter the text through an external program. Example: > - - :%!fmt - -============================================================================== -*25.3* Indents and tabs - -Indents can be used to make text stand out from the rest. The example texts -in this manual, for example, are indented by eight spaces or a tab. You would -normally enter this by typing a tab at the start of each line. Take this -text: - the first line ~ - the second line ~ - -This is entered by typing a tab, some text, <Enter>, tab and more text. - The 'autoindent' option inserts indents automatically: > - - :set autoindent - -When a new line is started it gets the same indent as the previous line. In -the above example, the tab after the <Enter> is not needed anymore. - - -INCREASING INDENT - -To increase the amount of indent in a line, use the ">" operator. Often this -is used as ">>", which adds indent to the current line. - The amount of indent added is specified with the 'shiftwidth' option. The -default value is 8. To make ">>" insert four spaces worth of indent, for -example, type this: > - - :set shiftwidth=4 - -When used on the second line of the example text, this is what you get: - - the first line ~ - the second line ~ - -"4>>" will increase the indent of four lines. - - -TABSTOP - -If you want to make indents a multiple of 4, you set 'shiftwidth' to 4. But -when pressing a <Tab> you still get 8 spaces worth of indent. To change this, -set the 'softtabstop' option: > - - :set softtabstop=4 - -This will make the <Tab> key insert 4 spaces worth of indent. If there are -already four spaces, a <Tab> character is used (saving seven characters in the -file). (If you always want spaces and no tab characters, set the 'expandtab' -option.) - - Note: - You could set the 'tabstop' option to 4. However, if you edit the - file another time, with 'tabstop' set to the default value of 8, it - will look wrong. In other programs and when printing the indent will - also be wrong. Therefore it is recommended to keep 'tabstop' at eight - all the time. That's the standard value everywhere. - - -CHANGING TABS - -You edit a file which was written with a tabstop of 3. In Vim it looks ugly, -because it uses the normal tabstop value of 8. You can fix this by setting -'tabstop' to 3. But you have to do this every time you edit this file. - Vim can change the use of tabstops in your file. First, set 'tabstop' to -make the indents look good, then use the ":retab" command: > - - :set tabstop=3 - :retab 8 - -The ":retab" command will change 'tabstop' to 8, while changing the text such -that it looks the same. It changes spans of white space into tabs and spaces -for this. You can now write the file. Next time you edit it the indents will -be right without setting an option. - Warning: When using ":retab" on a program, it may change white space inside -a string constant. Therefore it's a good habit to use "\t" instead of a -real tab. - -============================================================================== -*25.4* Dealing with long lines - -Sometimes you will be editing a file that is wider than the number of columns -in the window. When that occurs, Vim wraps the lines so that everything fits -on the screen. - If you switch the 'wrap' option off, each line in the file shows up as one -line on the screen. Then the ends of the long lines disappear off the screen -to the right. - When you move the cursor to a character that can't be seen, Vim will scroll -the text to show it. This is like moving a viewport over the text in the -horizontal direction. - By default, Vim does not display a horizontal scrollbar in the GUI. If you -want to enable one, use the following command: > - - :set guioptions+=b - -One horizontal scrollbar will appear at the bottom of the Vim window. - -If you don't have a scrollbar or don't want to use it, use these commands to -scroll the text. The cursor will stay in the same place, but it's moved back -into the visible text if necessary. - - zh scroll right - 4zh scroll four characters right - zH scroll half a window width right - ze scroll right to put the cursor at the end - zl scroll left - 4zl scroll four characters left - zL scroll half a window width left - zs scroll left to put the cursor at the start - -Let's attempt to show this with one line of text. The cursor is on the "w" of -"which". The "current window" above the line indicates the text that is -currently visible. The "window"s below the text indicate the text that is -visible after the command left of it. - - |<-- current window -->| - some long text, part of which is visible in the window ~ - ze |<-- window -->| - zH |<-- window -->| - 4zh |<-- window -->| - zh |<-- window -->| - zl |<-- window -->| - 4zl |<-- window -->| - zL |<-- window -->| - zs |<-- window -->| - - -MOVING WITH WRAP OFF - -When 'wrap' is off and the text has scrolled horizontally, you can use the -following commands to move the cursor to a character you can see. Thus text -left and right of the window is ignored. These never cause the text to -scroll: - - g0 to first visible character in this line - g^ to first non-blank visible character in this line - gm to middle of this line - g$ to last visible character in this line - - |<-- window -->| - some long text, part of which is visible ~ - g0 g^ gm g$ - - -BREAKING AT WORDS *edit-no-break* - -When preparing text for use by another program, you might have to make -paragraphs without a line break. A disadvantage of using 'nowrap' is that you -can't see the whole sentence you are working on. When 'wrap' is on, words are -broken halfway, which makes them hard to read. - A good solution for editing this kind of paragraph is setting the -'linebreak' option. Vim then breaks lines at an appropriate place when -displaying the line. The text in the file remains unchanged. - Without 'linebreak' text might look like this: - - +---------------------------------+ - |letter generation program for a b| - |ank. They wanted to send out a s| - |pecial, personalized letter to th| - |eir richest 1000 customers. Unfo| - |rtunately for the programmer, he | - +---------------------------------+ -After: > - - :set linebreak - -it looks like this: - - +---------------------------------+ - |letter generation program for a | - |bank. They wanted to send out a | - |special, personalized letter to | - |their richest 1000 customers. | - |Unfortunately for the programmer,| - +---------------------------------+ - -Related options: -'breakat' specifies the characters where a break can be inserted. -'showbreak' specifies a string to show at the start of broken line. -Set 'textwidth' to zero to avoid a paragraph to be split. - - -MOVING BY VISIBLE LINES - -The "j" and "k" commands move to the next and previous lines. When used on -a long line, this means moving a lot of screen lines at once. - To move only one screen line, use the "gj" and "gk" commands. When a line -doesn't wrap they do the same as "j" and "k". When the line does wrap, they -move to a character displayed one line below or above. - You might like to use these mappings, which bind these movement commands to -the cursor keys: > - - :map <Up> gk - :map <Down> gj - - -TURNING A PARAGRAPH INTO ONE LINE - -If you want to import text into a program like MS-Word, each paragraph should -be a single line. If your paragraphs are currently separated with empty -lines, this is how you turn each paragraph into a single line: > - - :g/./,/^$/join - -That looks complicated. Let's break it up in pieces: - - :g/./ A ":global" command that finds all lines that contain - at least one character. - ,/^$/ A range, starting from the current line (the non-empty - line) until an empty line. - join The ":join" command joins the range of lines together - into one line. - -Starting with this text, containing eight lines broken at column 30: - - +----------------------------------+ - |A letter generation program | - |for a bank. They wanted to | - |send out a special, | - |personalized letter. | - | | - |To their richest 1000 | - |customers. Unfortunately for | - |the programmer, | - +----------------------------------+ - -You end up with two lines: - - +----------------------------------+ - |A letter generation program for a | - |bank. They wanted to send out a s| - |pecial, personalized letter. | - |To their richest 1000 customers. | - |Unfortunately for the programmer, | - +----------------------------------+ - -Note that this doesn't work when the separating line is blank but not empty; -when it contains spaces and/or tabs. This command does work with blank lines: -> - :g/\S/,/^\s*$/join - -This still requires a blank or empty line at the end of the file for the last -paragraph to be joined. - -============================================================================== -*25.5* Editing tables - -Suppose you are editing a table with four columns: - - nice table test 1 test 2 test 3 ~ - input A 0.534 ~ - input B 0.913 ~ - -You need to enter numbers in the third column. You could move to the second -line, use "A", enter a lot of spaces and type the text. - For this kind of editing there is a special option: > - - set virtualedit=all - -Now you can move the cursor to positions where there isn't any text. This is -called "virtual space". Editing a table is a lot easier this way. - Move the cursor by searching for the header of the last column: > - - /test 3 - -Now press "j" and you are right where you can enter the value for "input A". -Typing "0.693" results in: - - nice table test 1 test 2 test 3 ~ - input A 0.534 0.693 ~ - input B 0.913 ~ - -Vim has automatically filled the gap in front of the new text for you. Now, -to enter the next field in this column use "Bj". "B" moves back to the start -of a white space separated word. Then "j" moves to the place where the next -field can be entered. - - Note: - You can move the cursor anywhere in the display, also beyond the end - of a line. But Vim will not insert spaces there, until you insert a - character in that position. - - -COPYING A COLUMN - -You want to add a column, which should be a copy of the third column and -placed before the "test 1" column. Do this in seven steps: -1. Move the cursor to the left upper corner of this column, e.g., with - "/test 3". -2. Press CTRL-V to start blockwise Visual mode. -3. Move the cursor down two lines with "2j". You are now in "virtual space": - the "input B" line of the "test 3" column. -4. Move the cursor right, to include the whole column in the selection, plus - the space that you want between the columns. "9l" should do it. -5. Yank the selected rectangle with "y". -6. Move the cursor to "test 1", where the new column must be placed. -7. Press "P". - -The result should be: - - nice table test 3 test 1 test 2 test 3 ~ - input A 0.693 0.534 0.693 ~ - input B 0.913 ~ - -Notice that the whole "test 1" column was shifted right, also the line where -the "test 3" column didn't have text. - -Go back to non-virtual cursor movements with: > - - :set virtualedit= - - -VIRTUAL REPLACE MODE - -The disadvantage of using 'virtualedit' is that it "feels" different. You -can't recognize tabs or spaces beyond the end of line when moving the cursor -around. Another method can be used: Virtual Replace mode. - Suppose you have a line in a table that contains both tabs and other -characters. Use "rx" on the first tab: - - inp 0.693 0.534 0.693 ~ - - | - rx | - V - - inpx0.693 0.534 0.693 ~ - -The layout is messed up. To avoid that, use the "gr" command: - - inp 0.693 0.534 0.693 ~ - - | - grx | - V - - inpx 0.693 0.534 0.693 ~ - -What happens is that the "gr" command makes sure the new character takes the -right amount of screen space. Extra spaces or tabs are inserted to fill the -gap. Thus what actually happens is that a tab is replaced by "x" and then -blanks added to make the text after it keep its place. In this case a -tab is inserted. - When you need to replace more than one character, you use the "R" command -to go to Replace mode (see |04.9|). This messes up the layout and replaces -the wrong characters: - - inp 0 0.534 0.693 ~ - - | - R0.786 | - V - - inp 0.78634 0.693 ~ - -The "gR" command uses Virtual Replace mode. This preserves the layout: - - inp 0 0.534 0.693 ~ - - | - gR0.786 | - V - - inp 0.786 0.534 0.693 ~ - -============================================================================== - -Next chapter: |usr_26.txt| Repeating - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_26.txt b/share/vim/vim73/doc/usr_26.txt deleted file mode 100644 index e32802c8..00000000 --- a/share/vim/vim73/doc/usr_26.txt +++ /dev/null @@ -1,221 +0,0 @@ -*usr_26.txt* For Vim version 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - Repeating - - -An editing task is hardly ever unstructured. A change often needs to be made -several times. In this chapter a number of useful ways to repeat a change -will be explained. - -|26.1| Repeating with Visual mode -|26.2| Add and subtract -|26.3| Making a change in many files -|26.4| Using Vim from a shell script - - Next chapter: |usr_27.txt| Search commands and patterns - Previous chapter: |usr_25.txt| Editing formatted text -Table of contents: |usr_toc.txt| - -============================================================================== -*26.1* Repeating with Visual mode - -Visual mode is very handy for making a change in any sequence of lines. You -can see the highlighted text, thus you can check if the correct lines are -changed. But making the selection takes some typing. The "gv" command -selects the same area again. This allows you to do another operation on the -same text. - Suppose you have some lines where you want to change "2001" to "2002" and -"2000" to "2001": - - The financial results for 2001 are better ~ - than for 2000. The income increased by 50%, ~ - even though 2001 had more rain than 2000. ~ - 2000 2001 ~ - income 45,403 66,234 ~ - -First change "2001" to "2002". Select the lines in Visual mode, and use: > - - :s/2001/2002/g - -Now use "gv" to reselect the same text. It doesn't matter where the cursor -is. Then use ":s/2000/2001/g" to make the second change. - Obviously, you can repeat these changes several times. - -============================================================================== -*26.2* Add and subtract - -When repeating the change of one number into another, you often have a fixed -offset. In the example above, one was added to each year. Instead of typing -a substitute command for each year that appears, the CTRL-A command can be -used. - Using the same text as above, search for a year: > - - /19[0-9][0-9]\|20[0-9][0-9] - -Now press CTRL-A. The year will be increased by one: - - The financial results for 2002 are better ~ - than for 2000. The income increased by 50%, ~ - even though 2001 had more rain than 2000. ~ - 2000 2001 ~ - income 45,403 66,234 ~ - -Use "n" to find the next year, and press "." to repeat the CTRL-A ("." is a -bit quicker to type). Repeat "n" and "." for all years that appear. - Hint: set the 'hlsearch' option to see the matches you are going to change, -then you can look ahead and do it faster. - -Adding more than one can be done by prepending the number to CTRL-A. Suppose -you have this list: - - 1. item four ~ - 2. item five ~ - 3. item six ~ - -Move the cursor to "1." and type: > - - 3 CTRL-A - -The "1." will change to "4.". Again, you can use "." to repeat this on the -other numbers. - -Another example: - - 006 foo bar ~ - 007 foo bar ~ - -Using CTRL-A on these numbers results in: - - 007 foo bar ~ - 010 foo bar ~ - -7 plus one is 10? What happened here is that Vim recognized "007" as an octal -number, because there is a leading zero. This notation is often used in C -programs. If you do not want a number with leading zeros to be handled as -octal, use this: > - - :set nrformats-=octal - -The CTRL-X command does subtraction in a similar way. - -============================================================================== -*26.3* Making a change in many files - -Suppose you have a variable called "x_cnt" and you want to change it to -"x_counter". This variable is used in several of your C files. You need to -change it in all files. This is how you do it. - Put all the relevant files in the argument list: > - - :args *.c -< -This finds all C files and edits the first one. Now you can perform a -substitution command on all these files: > - - :argdo %s/\<x_cnt\>/x_counter/ge | update - -The ":argdo" command takes an argument that is another command. That command -will be executed on all files in the argument list. - The "%s" substitute command that follows works on all lines. It finds the -word "x_cnt" with "\<x_cnt\>". The "\<" and "\>" are used to match the whole -word only, and not "px_cnt" or "x_cnt2". - The flags for the substitute command include "g" to replace all occurrences -of "x_cnt" in the same line. The "e" flag is used to avoid an error message -when "x_cnt" does not appear in the file. Otherwise ":argdo" would abort on -the first file where "x_cnt" was not found. - The "|" separates two commands. The following "update" command writes the -file only if it was changed. If no "x_cnt" was changed to "x_counter" nothing -happens. - -There is also the ":windo" command, which executes its argument in all -windows. And ":bufdo" executes its argument on all buffers. Be careful with -this, because you might have more files in the buffer list than you think. -Check this with the ":buffers" command (or ":ls"). - -============================================================================== -*26.4* Using Vim from a shell script - -Suppose you have a lot of files in which you need to change the string -"-person-" to "Jones" and then print it. How do you do that? One way is to -do a lot of typing. The other is to write a shell script to do the work. - The Vim editor does a superb job as a screen-oriented editor when using -Normal mode commands. For batch processing, however, Normal mode commands do -not result in clear, commented command files; so here you will use Ex mode -instead. This mode gives you a nice command-line interface that makes it easy -to put into a batch file. ("Ex command" is just another name for a -command-line (:) command.) - The Ex mode commands you need are as follows: > - - %s/-person-/Jones/g - write tempfile - quit - -You put these commands in the file "change.vim". Now to run the editor in -batch mode, use this shell script: > - - for file in *.txt; do - vim -e -s $file < change.vim - lpr -r tempfile - done - -The for-done loop is a shell construct to repeat the two lines in between, -while the $file variable is set to a different file name each time. - The second line runs the Vim editor in Ex mode (-e argument) on the file -$file and reads commands from the file "change.vim". The -s argument tells -Vim to operate in silent mode. In other words, do not keep outputting the -:prompt, or any other prompt for that matter. - The "lpr -r tempfile" command prints the resulting "tempfile" and deletes -it (that's what the -r argument does). - - -READING FROM STDIN - -Vim can read text on standard input. Since the normal way is to read commands -there, you must tell Vim to read text instead. This is done by passing the -"-" argument in place of a file. Example: > - - ls | vim - - -This allows you to edit the output of the "ls" command, without first saving -the text in a file. - If you use the standard input to read text from, you can use the "-S" -argument to read a script: > - - producer | vim -S change.vim - - - -NORMAL MODE SCRIPTS - -If you really want to use Normal mode commands in a script, you can use it -like this: > - - vim -s script file.txt ... -< - Note: - "-s" has a different meaning when it is used without "-e". Here it - means to source the "script" as Normal mode commands. When used with - "-e" it means to be silent, and doesn't use the next argument as a - file name. - -The commands in "script" are executed like you typed them. Don't forget that -a line break is interpreted as pressing <Enter>. In Normal mode that moves -the cursor to the next line. - To create the script you can edit the script file and type the commands. -You need to imagine what the result would be, which can be a bit difficult. -Another way is to record the commands while you perform them manually. This -is how you do that: > - - vim -w script file.txt ... - -All typed keys will be written to "script". If you make a small mistake you -can just continue and remember to edit the script later. - The "-w" argument appends to an existing script. That is good when you -want to record the script bit by bit. If you want to start from scratch and -start all over, use the "-W" argument. It overwrites any existing file. - -============================================================================== - -Next chapter: |usr_27.txt| Search commands and patterns - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_27.txt b/share/vim/vim73/doc/usr_27.txt deleted file mode 100644 index 107411ea..00000000 --- a/share/vim/vim73/doc/usr_27.txt +++ /dev/null @@ -1,563 +0,0 @@ -*usr_27.txt* For Vim version 7.3. Last change: 2010 Mar 28 - - VIM USER MANUAL - by Bram Moolenaar - - Search commands and patterns - - -In chapter 3 a few simple search patterns were mentioned |03.9|. Vim can do -much more complex searches. This chapter explains the most often used ones. -A detailed specification can be found here: |pattern| - -|27.1| Ignoring case -|27.2| Wrapping around the file end -|27.3| Offsets -|27.4| Matching multiple times -|27.5| Alternatives -|27.6| Character ranges -|27.7| Character classes -|27.8| Matching a line break -|27.9| Examples - - Next chapter: |usr_28.txt| Folding - Previous chapter: |usr_26.txt| Repeating -Table of contents: |usr_toc.txt| - -============================================================================== -*27.1* Ignoring case - -By default, Vim's searches are case sensitive. Therefore, "include", -"INCLUDE", and "Include" are three different words and a search will match -only one of them. - Now switch on the 'ignorecase' option: > - - :set ignorecase - -Search for "include" again, and now it will match "Include", "INCLUDE" and -"InClUDe". (Set the 'hlsearch' option to quickly see where a pattern -matches.) - You can switch this off again with: > - - :set noignorecase - -But let's keep it set, and search for "INCLUDE". It will match exactly the -same text as "include" did. Now set the 'smartcase' option: > - - :set ignorecase smartcase - -If you have a pattern with at least one uppercase character, the search -becomes case sensitive. The idea is that you didn't have to type that -uppercase character, so you must have done it because you wanted case to -match. That's smart! - With these two options set you find the following matches: - - pattern matches ~ - word word, Word, WORD, WoRd, etc. - Word Word - WORD WORD - WoRd WoRd - - -CASE IN ONE PATTERN - -If you want to ignore case for one specific pattern, you can do this by -prepending the "\c" string. Using "\C" will make the pattern to match case. -This overrules the 'ignorecase' and 'smartcase' options, when "\c" or "\C" is -used their value doesn't matter. - - pattern matches ~ - \Cword word - \CWord Word - \cword word, Word, WORD, WoRd, etc. - \cWord word, Word, WORD, WoRd, etc. - -A big advantage of using "\c" and "\C" is that it sticks with the pattern. -Thus if you repeat a pattern from the search history, the same will happen, no -matter if 'ignorecase' or 'smartcase' was changed. - - Note: - The use of "\" items in search patterns depends on the 'magic' option. - In this chapter we will assume 'magic' is on, because that is the - standard and recommended setting. If you would change 'magic', many - search patterns would suddenly become invalid. - - Note: - If your search takes much longer than you expected, you can interrupt - it with CTRL-C on Unix and CTRL-Break on MS-DOS and MS-Windows. - -============================================================================== -*27.2* Wrapping around the file end - -By default, a forward search starts searching for the given string at the -current cursor location. It then proceeds to the end of the file. If it has -not found the string by that time, it starts from the beginning and searches -from the start of the file to the cursor location. - Keep in mind that when repeating the "n" command to search for the next -match, you eventually get back to the first match. If you don't notice this -you keep searching forever! To give you a hint, Vim displays this message: - - search hit BOTTOM, continuing at TOP ~ - -If you use the "?" command, to search in the other direction, you get this -message: - - search hit TOP, continuing at BOTTOM ~ - -Still, you don't know when you are back at the first match. One way to see -this is by switching on the 'ruler' option: > - - :set ruler - -Vim will display the cursor position in the lower righthand corner of the -window (in the status line if there is one). It looks like this: - - 101,29 84% ~ - -The first number is the line number of the cursor. Remember the line number -where you started, so that you can check if you passed this position again. - - -NOT WRAPPING - -To turn off search wrapping, use the following command: > - - :set nowrapscan - -Now when the search hits the end of the file, an error message displays: - - E385: search hit BOTTOM without match for: forever ~ - -Thus you can find all matches by going to the start of the file with "gg" and -keep searching until you see this message. - If you search in the other direction, using "?", you get: - - E384: search hit TOP without match for: forever ~ - -============================================================================== -*27.3* Offsets - -By default, the search command leaves the cursor positioned on the beginning -of the pattern. You can tell Vim to leave it some other place by specifying -an offset. For the forward search command "/", the offset is specified by -appending a slash (/) and the offset: > - - /default/2 - -This command searches for the pattern "default" and then moves to the -beginning of the second line past the pattern. Using this command on the -paragraph above, Vim finds the word "default" in the first line. Then the -cursor is moved two lines down and lands on "an offset". - -If the offset is a simple number, the cursor will be placed at the beginning -of the line that many lines from the match. The offset number can be positive -or negative. If it is positive, the cursor moves down that many lines; if -negative, it moves up. - - -CHARACTER OFFSETS - -The "e" offset indicates an offset from the end of the match. It moves the -cursor onto the last character of the match. The command: > - - /const/e - -puts the cursor on the "t" of "const". - From that position, adding a number moves forward that many characters. -This command moves to the character just after the match: > - - /const/e+1 - -A positive number moves the cursor to the right, a negative number moves it to -the left. For example: > - - /const/e-1 - -moves the cursor to the "s" of "const". - -If the offset begins with "b", the cursor moves to the beginning of the -pattern. That's not very useful, since leaving out the "b" does the same -thing. It does get useful when a number is added or subtracted. The cursor -then goes forward or backward that many characters. For example: > - - /const/b+2 - -Moves the cursor to the beginning of the match and then two characters to the -right. Thus it lands on the "n". - - -REPEATING - -To repeat searching for the previously used search pattern, but with a -different offset, leave out the pattern: > - - /that - //e - -Is equal to: > - - /that/e - -To repeat with the same offset: > - - / - -"n" does the same thing. To repeat while removing a previously used offset: > - - // - - -SEARCHING BACKWARDS - -The "?" command uses offsets in the same way, but you must use "?" to separate -the offset from the pattern, instead of "/": > - - ?const?e-2 - -The "b" and "e" keep their meaning, they don't change direction with the use -of "?". - - -START POSITION - -When starting a search, it normally starts at the cursor position. When you -specify a line offset, this can cause trouble. For example: > - - /const/-2 - -This finds the next word "const" and then moves two lines up. If you -use "n" to search again, Vim could start at the current position and find the same -"const" match. Then using the offset again, you would be back where you started. -You would be stuck! - It could be worse: Suppose there is another match with "const" in the next -line. Then repeating the forward search would find this match and move two -lines up. Thus you would actually move the cursor back! - -When you specify a character offset, Vim will compensate for this. Thus the -search starts a few characters forward or backward, so that the same match -isn't found again. - -============================================================================== -*27.4* Matching multiple times - -The "*" item specifies that the item before it can match any number of times. -Thus: > - - /a* - -matches "a", "aa", "aaa", etc. But also "" (the empty string), because zero -times is included. - The "*" only applies to the item directly before it. Thus "ab*" matches -"a", "ab", "abb", "abbb", etc. To match a whole string multiple times, it -must be grouped into one item. This is done by putting "\(" before it and -"\)" after it. Thus this command: > - - /\(ab\)* - -Matches: "ab", "abab", "ababab", etc. And also "". - -To avoid matching the empty string, use "\+". This makes the previous item -match one or more times. > - - /ab\+ - -Matches "ab", "abb", "abbb", etc. It does not match "a" when no "b" follows. - -To match an optional item, use "\=". Example: > - - /folders\= - -Matches "folder" and "folders". - - -SPECIFIC COUNTS - -To match a specific number of items use the form "\{n,m}". "n" and "m" are -numbers. The item before it will be matched "n" to "m" times |inclusive|. -Example: > - - /ab\{3,5} - -matches "abbb", "abbbb" and "abbbbb". - When "n" is omitted, it defaults to zero. When "m" is omitted it defaults -to infinity. When ",m" is omitted, it matches exactly "n" times. -Examples: - - pattern match count ~ - \{,4} 0, 1, 2, 3 or 4 - \{3,} 3, 4, 5, etc. - \{0,1} 0 or 1, same as \= - \{0,} 0 or more, same as * - \{1,} 1 or more, same as \+ - \{3} 3 - - -MATCHING AS LITTLE AS POSSIBLE - -The items so far match as many characters as they can find. To match as few -as possible, use "\{-n,m}". It works the same as "\{n,m}", except that the -minimal amount possible is used. - For example, use: > - - /ab\{-1,3} - -Will match "ab" in "abbb". Actually, it will never match more than one b, -because there is no reason to match more. It requires something else to force -it to match more than the lower limit. - The same rules apply to removing "n" and "m". It's even possible to remove -both of the numbers, resulting in "\{-}". This matches the item before it -zero or more times, as few as possible. The item by itself always matches -zero times. It is useful when combined with something else. Example: > - - /a.\{-}b - -This matches "axb" in "axbxb". If this pattern would be used: > - - /a.*b - -It would try to match as many characters as possible with ".*", thus it -matches "axbxb" as a whole. - -============================================================================== -*27.5* Alternatives - -The "or" operator in a pattern is "\|". Example: > - - /foo\|bar - -This matches "foo" or "bar". More alternatives can be concatenated: > - - /one\|two\|three - -Matches "one", "two" and "three". - To match multiple times, the whole thing must be placed in "\(" and "\)": > - - /\(foo\|bar\)\+ - -This matches "foo", "foobar", "foofoo", "barfoobar", etc. - Another example: > - - /end\(if\|while\|for\) - -This matches "endif", "endwhile" and "endfor". - -A related item is "\&". This requires that both alternatives match in the -same place. The resulting match uses the last alternative. Example: > - - /forever\&... - -This matches "for" in "forever". It will not match "fortuin", for example. - -============================================================================== -*27.6* Character ranges - -To match "a", "b" or "c" you could use "/a\|b\|c". When you want to match all -letters from "a" to "z" this gets very long. There is a shorter method: > - - /[a-z] - -The [] construct matches a single character. Inside you specify which -characters to match. You can include a list of characters, like this: > - - /[0123456789abcdef] - -This will match any of the characters included. For consecutive characters -you can specify the range. "0-3" stands for "0123". "w-z" stands for "wxyz". -Thus the same command as above can be shortened to: > - - /[0-9a-f] - -To match the "-" character itself make it the first or last one in the range. -These special characters are accepted to make it easier to use them inside a -[] range (they can actually be used anywhere in the search pattern): - - \e <Esc> - \t <Tab> - \r <CR> - \b <BS> - -There are a few more special cases for [] ranges, see |/[]| for the whole -story. - - -COMPLEMENTED RANGE - -To avoid matching a specific character, use "^" at the start of the range. -The [] item then matches everything but the characters included. Example: > - - /"[^"]*" -< - " a double quote - [^"] any character that is not a double quote - * as many as possible - " a double quote again - -This matches "foo" and "3!x", including the double quotes. - - -PREDEFINED RANGES - -A number of ranges are used very often. Vim provides a shortcut for these. -For example: > - - /\a - -Finds alphabetic characters. This is equal to using "/[a-zA-Z]". Here are a -few more of these: - - item matches equivalent ~ - \d digit [0-9] - \D non-digit [^0-9] - \x hex digit [0-9a-fA-F] - \X non-hex digit [^0-9a-fA-F] - \s white space [ ] (<Tab> and <Space>) - \S non-white characters [^ ] (not <Tab> and <Space>) - \l lowercase alpha [a-z] - \L non-lowercase alpha [^a-z] - \u uppercase alpha [A-Z] - \U non-uppercase alpha [^A-Z] - - Note: - Using these predefined ranges works a lot faster than the character - range it stands for. - These items can not be used inside []. Thus "[\d\l]" does NOT work to - match a digit or lowercase alpha. Use "\(\d\|\l\)" instead. - -See |/\s| for the whole list of these ranges. - -============================================================================== -*27.7* Character classes - -The character range matches a fixed set of characters. A character class is -similar, but with an essential difference: The set of characters can be -redefined without changing the search pattern. - For example, search for this pattern: > - - /\f\+ - -The "\f" items stands for file name characters. Thus this matches a sequence -of characters that can be a file name. - Which characters can be part of a file name depends on the system you are -using. On MS-Windows, the backslash is included, on Unix it is not. This is -specified with the 'isfname' option. The default value for Unix is: > - - :set isfname - isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,= - -For other systems the default value is different. Thus you can make a search -pattern with "\f" to match a file name, and it will automatically adjust to -the system you are using it on. - - Note: - Actually, Unix allows using just about any character in a file name, - including white space. Including these characters in 'isfname' would - be theoretically correct. But it would make it impossible to find the - end of a file name in text. Thus the default value of 'isfname' is a - compromise. - -The character classes are: - - item matches option ~ - \i identifier characters 'isident' - \I like \i, excluding digits - \k keyword characters 'iskeyword' - \K like \k, excluding digits - \p printable characters 'isprint' - \P like \p, excluding digits - \f file name characters 'isfname' - \F like \f, excluding digits - -============================================================================== -*27.8* Matching a line break - -Vim can find a pattern that includes a line break. You need to specify where -the line break happens, because all items mentioned so far don't match a line -break. - To check for a line break in a specific place, use the "\n" item: > - - /the\nword - -This will match at a line that ends in "the" and the next line starts with -"word". To match "the word" as well, you need to match a space or a line -break. The item to use for it is "\_s": > - - /the\_sword - -To allow any amount of white space: > - - /the\_s\+word - -This also matches when "the " is at the end of a line and " word" at the -start of the next one. - -"\s" matches white space, "\_s" matches white space or a line break. -Similarly, "\a" matches an alphabetic character, and "\_a" matches an -alphabetic character or a line break. The other character classes and ranges -can be modified in the same way by inserting a "_". - -Many other items can be made to match a line break by prepending "\_". For -example: "\_." matches any character or a line break. - - Note: - "\_.*" matches everything until the end of the file. Be careful with - this, it can make a search command very slow. - -Another example is "\_[]", a character range that includes a line break: > - - /"\_[^"]*" - -This finds a text in double quotes that may be split up in several lines. - -============================================================================== -*27.9* Examples - -Here are a few search patterns you might find useful. This shows how the -items mentioned above can be combined. - - -FINDING A CALIFORNIA LICENSE PLATE - -A sample license plate number is "1MGU103". It has one digit, three uppercase -letters and three digits. Directly putting this into a search pattern: > - - /\d\u\u\u\d\d\d - -Another way is to specify that there are three digits and letters with a -count: > - - /\d\u\{3}\d\{3} - -Using [] ranges instead: > - - /[0-9][A-Z]\{3}[0-9]\{3} - -Which one of these you should use? Whichever one you can remember. The -simple way you can remember is much faster than the fancy way that you can't. -If you can remember them all, then avoid the last one, because it's both more -typing and slower to execute. - - -FINDING AN IDENTIFIER - -In C programs (and many other computer languages) an identifier starts with a -letter and further consists of letters and digits. Underscores can be used -too. This can be found with: > - - /\<\h\w*\> - -"\<" and "\>" are used to find only whole words. "\h" stands for "[A-Za-z_]" -and "\w" for "[0-9A-Za-z_]". - - Note: - "\<" and "\>" depend on the 'iskeyword' option. If it includes "-", - for example, then "ident-" is not matched. In this situation use: > - - /\w\@<!\h\w*\w\@! -< - This checks if "\w" does not match before or after the identifier. - See |/\@<!| and |/\@!|. - -============================================================================== - -Next chapter: |usr_28.txt| Folding - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_28.txt b/share/vim/vim73/doc/usr_28.txt deleted file mode 100644 index 8a02838d..00000000 --- a/share/vim/vim73/doc/usr_28.txt +++ /dev/null @@ -1,426 +0,0 @@ -*usr_28.txt* For Vim version 7.3. Last change: 2008 Jun 14 - - VIM USER MANUAL - by Bram Moolenaar - - Folding - - -Structured text can be separated in sections. And sections in sub-sections. -Folding allows you to display a section as one line, providing an overview. -This chapter explains the different ways this can be done. - -|28.1| What is folding? -|28.2| Manual folding -|28.3| Working with folds -|28.4| Saving and restoring folds -|28.5| Folding by indent -|28.6| Folding with markers -|28.7| Folding by syntax -|28.8| Folding by expression -|28.9| Folding unchanged lines -|28.10| Which fold method to use? - - Next chapter: |usr_29.txt| Moving through programs - Previous chapter: |usr_27.txt| Search commands and patterns -Table of contents: |usr_toc.txt| - -============================================================================== -*28.1* What is folding? - -Folding is used to show a range of lines in the buffer as a single line on the -screen. Like a piece of paper which is folded to make it shorter: - - +------------------------+ - | line 1 | - | line 2 | - | line 3 | - |_______________________ | - \ \ - \________________________\ - / folded lines / - /________________________/ - | line 12 | - | line 13 | - | line 14 | - +------------------------+ - -The text is still in the buffer, unchanged. Only the way lines are displayed -is affected by folding. - -The advantage of folding is that you can get a better overview of the -structure of text, by folding lines of a section and replacing it with a line -that indicates that there is a section. - -============================================================================== -*28.2* Manual folding - -Try it out: Position the cursor in a paragraph and type: > - - zfap - -You will see that the paragraph is replaced by a highlighted line. You have -created a fold. |zf| is an operator and |ap| a text object selection. You -can use the |zf| operator with any movement command to create a fold for the -text that it moved over. |zf| also works in Visual mode. - -To view the text again, open the fold by typing: > - - zo - -And you can close the fold again with: > - - zc - -All the folding commands start with "z". With some fantasy, this looks like a -folded piece of paper, seen from the side. The letter after the "z" has a -mnemonic meaning to make it easier to remember the commands: - - zf F-old creation - zo O-pen a fold - zc C-lose a fold - -Folds can be nested: A region of text that contains folds can be folded -again. For example, you can fold each paragraph in this section, and then -fold all the sections in this chapter. Try it out. You will notice that -opening the fold for the whole chapter will restore the nested folds as they -were, some may be open and some may be closed. - -Suppose you have created several folds, and now want to view all the text. -You could go to each fold and type "zo". To do this faster, use this command: > - - zr - -This will R-educe the folding. The opposite is: > - - zm - -This folds M-ore. You can repeat "zr" and "zm" to open and close nested folds -of several levels. - -If you have nested several levels deep, you can open all of them with: > - - zR - -This R-educes folds until there are none left. And you can close all folds -with: > - - zM - -This folds M-ore and M-ore. - -You can quickly disable the folding with the |zn| command. Then |zN| brings -back the folding as it was. |zi| toggles between the two. This is a useful -way of working: -- create folds to get overview on your file -- move around to where you want to do your work -- do |zi| to look at the text and edit it -- do |zi| again to go back to moving around - -More about manual folding in the reference manual: |fold-manual| - -============================================================================== -*28.3* Working with folds - -When some folds are closed, movement commands like "j" and "k" move over a -fold like it was a single, empty line. This allows you to quickly move around -over folded text. - -You can yank, delete and put folds as if it was a single line. This is very -useful if you want to reorder functions in a program. First make sure that -each fold contains a whole function (or a bit less) by selecting the right -'foldmethod'. Then delete the function with "dd", move the cursor and put it -with "p". If some lines of the function are above or below the fold, you can -use Visual selection: -- put the cursor on the first line to be moved -- hit "V" to start Visual mode -- put the cursor on the last line to be moved -- hit "d" to delete the selected lines. -- move the cursor to the new position and "p"ut the lines there. - -It is sometimes difficult to see or remember where a fold is located, thus -where a |zo| command would actually work. To see the defined folds: > - - :set foldcolumn=4 - -This will show a small column on the left of the window to indicate folds. -A "+" is shown for a closed fold. A "-" is shown at the start of each open -fold and "|" at following lines of the fold. - -You can use the mouse to open a fold by clicking on the "+" in the foldcolumn. -Clicking on the "-" or a "|" below it will close an open fold. - -To open all folds at the cursor line use |zO|. -To close all folds at the cursor line use |zC|. -To delete a fold at the cursor line use |zd|. -To delete all folds at the cursor line use |zD|. - -When in Insert mode, the fold at the cursor line is never closed. That allows -you to see what you type! - -Folds are opened automatically when jumping around or moving the cursor left -or right. For example, the "0" command opens the fold under the cursor -(if 'foldopen' contains "hor", which is the default). The 'foldopen' option -can be changed to open folds for specific commands. If you want the line -under the cursor always to be open, do this: > - - :set foldopen=all - -Warning: You won't be able to move onto a closed fold then. You might want to -use this only temporarily and then set it back to the default: > - - :set foldopen& - -You can make folds close automatically when you move out of it: > - - :set foldclose=all - -This will re-apply 'foldlevel' to all folds that don't contain the cursor. -You have to try it out if you like how this feels. Use |zm| to fold more and -|zr| to fold less (reduce folds). - -The folding is local to the window. This allows you to open two windows on -the same buffer, one with folds and one without folds. Or one with all folds -closed and one with all folds open. - -============================================================================== -*28.4* Saving and restoring folds - -When you abandon a file (starting to edit another one), the state of the folds -is lost. If you come back to the same file later, all manually opened and -closed folds are back to their default. When folds have been created -manually, all folds are gone! To save the folds use the |:mkview| command: > - - :mkview - -This will store the settings and other things that influence the view on the -file. You can change what is stored with the 'viewoptions' option. -When you come back to the same file later, you can load the view again: > - - :loadview - -You can store up to ten views on one file. For example, to save the current -setup as the third view and load the second view: > - - :mkview 3 - :loadview 2 - -Note that when you insert or delete lines the views might become invalid. -Also check out the 'viewdir' option, which specifies where the views are -stored. You might want to delete old views now and then. - -============================================================================== -*28.5* Folding by indent - -Defining folds with |zf| is a lot of work. If your text is structured by -giving lower level items a larger indent, you can use the indent folding -method. This will create folds for every sequence of lines with the same -indent. Lines with a larger indent will become nested folds. This works well -with many programming languages. - -Try this by setting the 'foldmethod' option: > - - :set foldmethod=indent - -Then you can use the |zm| and |zr| commands to fold more and reduce folding. -It's easy to see on this example text: - -This line is not indented - This line is indented once - This line is indented twice - This line is indented twice - This line is indented once -This line is not indented - This line is indented once - This line is indented once - -Note that the relation between the amount of indent and the fold depth depends -on the 'shiftwidth' option. Each 'shiftwidth' worth of indent adds one to the -depth of the fold. This is called a fold level. - -When you use the |zr| and |zm| commands you actually increase or decrease the -'foldlevel' option. You could also set it directly: > - - :set foldlevel=3 - -This means that all folds with three times a 'shiftwidth' indent or more will -be closed. The lower the foldlevel, the more folds will be closed. When -'foldlevel' is zero, all folds are closed. |zM| does set 'foldlevel' to zero. -The opposite command |zR| sets 'foldlevel' to the deepest fold level that is -present in the file. - -Thus there are two ways to open and close the folds: -(A) By setting the fold level. - This gives a very quick way of "zooming out" to view the structure of the - text, move the cursor, and "zoom in" on the text again. - -(B) By using |zo| and |zc| commands to open or close specific folds. - This allows opening only those folds that you want to be open, while other - folds remain closed. - -This can be combined: You can first close most folds by using |zm| a few times -and then open a specific fold with |zo|. Or open all folds with |zR| and -then close specific folds with |zc|. - -But you cannot manually define folds when 'foldmethod' is "indent", as that -would conflict with the relation between the indent and the fold level. - -More about folding by indent in the reference manual: |fold-indent| - -============================================================================== -*28.6* Folding with markers - -Markers in the text are used to specify the start and end of a fold region. -This gives precise control over which lines are included in a fold. The -disadvantage is that the text needs to be modified. - -Try it: > - - :set foldmethod=marker - -Example text, as it could appear in a C program: - - /* foobar () {{{ */ - int foobar() - { - /* return a value {{{ */ - return 42; - /* }}} */ - } - /* }}} */ - -Notice that the folded line will display the text before the marker. This is -very useful to tell what the fold contains. - -It's quite annoying when the markers don't pair up correctly after moving some -lines around. This can be avoided by using numbered markers. Example: - - /* global variables {{{1 */ - int varA, varB; - - /* functions {{{1 */ - /* funcA() {{{2 */ - void funcA() {} - - /* funcB() {{{2 */ - void funcB() {} - /* }}}1 */ - -At every numbered marker a fold at the specified level begins. This will make -any fold at a higher level stop here. You can just use numbered start markers -to define all folds. Only when you want to explicitly stop a fold before -another starts you need to add an end marker. - -More about folding with markers in the reference manual: |fold-marker| - -============================================================================== -*28.7* Folding by syntax - -For each language Vim uses a different syntax file. This defines the colors -for various items in the file. If you are reading this in Vim, in a terminal -that supports colors, the colors you see are made with the "help" syntax file. - In the syntax files it is possible to add syntax items that have the "fold" -argument. These define a fold region. This requires writing a syntax file -and adding these items in it. That's not so easy to do. But once it's done, -all folding happens automatically. - Here we'll assume you are using an existing syntax file. Then there is -nothing more to explain. You can open and close folds as explained above. -The folds will be created and deleted automatically when you edit the file. - -More about folding by syntax in the reference manual: |fold-syntax| - -============================================================================== -*28.8* Folding by expression - -This is similar to folding by indent, but instead of using the indent of a -line a user function is called to compute the fold level of a line. You can -use this for text where something in the text indicates which lines belong -together. An example is an e-mail message where the quoted text is indicated -by a ">" before the line. To fold these quotes use this: > - - :set foldmethod=expr - :set foldexpr=strlen(substitute(substitute(getline(v:lnum),'\\s','',\"g\"),'[^>].*','','')) - -You can try it out on this text: - -> quoted text he wrote -> quoted text he wrote -> > double quoted text I wrote -> > double quoted text I wrote - -Explanation for the 'foldexpr' used in the example (inside out): - getline(v:lnum) gets the current line - substitute(...,'\\s','','g') removes all white space from the line - substitute(...,'[^>].*','','') removes everything after leading '>'s - strlen(...) counts the length of the string, which - is the number of '>'s found - -Note that a backslash must be inserted before every space, double quote and -backslash for the ":set" command. If this confuses you, do > - - :set foldexpr - -to check the actual resulting value. To correct a complicated expression, use -the command-line completion: > - - :set foldexpr=<Tab> - -Where <Tab> is a real Tab. Vim will fill in the previous value, which you can -then edit. - -When the expression gets more complicated you should put it in a function and -set 'foldexpr' to call that function. - -More about folding by expression in the reference manual: |fold-expr| - -============================================================================== -*28.9* Folding unchanged lines - -This is useful when you set the 'diff' option in the same window. The -|vimdiff| command does this for you. Example: > - - :setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1 - -Do this in every window that shows a different version of the same file. You -will clearly see the differences between the files, while the text that didn't -change is folded. - -For more details see |fold-diff|. - -============================================================================== -*28.10* Which fold method to use? - -All these possibilities make you wonder which method you should choose. -Unfortunately, there is no golden rule. Here are some hints. - -If there is a syntax file with folding for the language you are editing, that -is probably the best choice. If there isn't one, you might try to write it. -This requires a good knowledge of search patterns. It's not easy, but when -it's working you will not have to define folds manually. - -Typing commands to manually fold regions can be used for unstructured text. -Then use the |:mkview| command to save and restore your folds. - -The marker method requires you to change the file. If you are sharing the -files with other people or you have to meet company standards, you might not -be allowed to add them. - The main advantage of markers is that you can put them exactly where you -want them. That avoids that a few lines are missed when you cut and paste -folds. And you can add a comment about what is contained in the fold. - -Folding by indent is something that works in many files, but not always very -well. Use it when you can't use one of the other methods. However, it is -very useful for outlining. Then you specifically use one 'shiftwidth' for -each nesting level. - -Folding with expressions can make folds in almost any structured text. It is -quite simple to specify, especially if the start and end of a fold can easily -be recognized. - If you use the "expr" method to define folds, but they are not exactly how -you want them, you could switch to the "manual" method. This will not remove -the defined folds. Then you can delete or add folds manually. - -============================================================================== - -Next chapter: |usr_29.txt| Moving through programs - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_29.txt b/share/vim/vim73/doc/usr_29.txt deleted file mode 100644 index fb7d688a..00000000 --- a/share/vim/vim73/doc/usr_29.txt +++ /dev/null @@ -1,613 +0,0 @@ -*usr_29.txt* For Vim version 7.3. Last change: 2008 Jun 28 - - VIM USER MANUAL - by Bram Moolenaar - - Moving through programs - - -The creator of Vim is a computer programmer. It's no surprise that Vim -contains many features to aid in writing programs. Jump around to find where -identifiers are defined and used. Preview declarations in a separate window. -There is more in the next chapter. - -|29.1| Using tags -|29.2| The preview window -|29.3| Moving through a program -|29.4| Finding global identifiers -|29.5| Finding local identifiers - - Next chapter: |usr_30.txt| Editing programs - Previous chapter: |usr_28.txt| Folding -Table of contents: |usr_toc.txt| - -============================================================================== -*29.1* Using tags - -What is a tag? It is a location where an identifier is defined. An example -is a function definition in a C or C++ program. A list of tags is kept in a -tags file. This can be used by Vim to directly jump from any place to the -tag, the place where an identifier is defined. - To generate the tags file for all C files in the current directory, use the -following command: > - - ctags *.c - -"ctags" is a separate program. Most Unix systems already have it installed. -If you do not have it yet, you can find Exuberant ctags here: - - http://ctags.sf.net ~ - -Now when you are in Vim and you want to go to a function definition, you can -jump to it by using the following command: > - - :tag startlist - -This command will find the function "startlist" even if it is in another file. - The CTRL-] command jumps to the tag of the word that is under the cursor. -This makes it easy to explore a tangle of C code. Suppose, for example, that -you are in the function "write_block". You can see that it calls -"write_line". But what does "write_line" do? By placing the cursor on the -call to "write_line" and pressing CTRL-], you jump to the definition of this -function. - The "write_line" function calls "write_char". You need to figure out what -it does. So you position the cursor over the call to "write_char" and press -CTRL-]. Now you are at the definition of "write_char". - - +-------------------------------------+ - |void write_block(char **s; int cnt) | - |{ | - | int i; | - | for (i = 0; i < cnt; ++i) | - | write_line(s[i]); | - |} | | - +-----------|-------------------------+ - | - CTRL-] | - | +----------------------------+ - +--> |void write_line(char *s) | - |{ | - | while (*s != 0) | - | write_char(*s++); | - |} | | - +--------|-------------------+ - | - CTRL-] | - | +------------------------------------+ - +--> |void write_char(char c) | - |{ | - | putchar((int)(unsigned char)c); | - |} | - +------------------------------------+ - -The ":tags" command shows the list of tags that you traversed through: - - :tags - # TO tag FROM line in file/text ~ - 1 1 write_line 8 write_block.c ~ - 2 1 write_char 7 write_line.c ~ - > ~ -> -Now to go back. The CTRL-T command goes to the preceding tag. In the example -above you get back to the "write_line" function, in the call to "write_char". - This command takes a count argument that indicates how many tags to jump -back. You have gone forward, and now back. Let's go forward again. The -following command goes to the tag on top of the list: > - - :tag - -You can prefix it with a count and jump forward that many tags. For example: -":3tag". CTRL-T also can be preceded with a count. - These commands thus allow you to go down a call tree with CTRL-] and back -up again with CTRL-T. Use ":tags" to find out where you are. - - -SPLIT WINDOWS - -The ":tag" command replaces the file in the current window with the one -containing the new function. But suppose you want to see not only the old -function but also the new one? You can split the window using the ":split" -command followed by the ":tag" command. Vim has a shorthand command that does -both: > - :stag tagname - -To split the current window and jump to the tag under the cursor use this -command: > - - CTRL-W ] - -If a count is specified, the new window will be that many lines high. - - -MORE TAGS FILES - -When you have files in many directories, you can create a tags file in each of -them. Vim will then only be able to jump to tags within that directory. - To find more tags files, set the 'tags' option to include all the relevant -tags files. Example: > - - :set tags=./tags,./../tags,./*/tags - -This finds a tags file in the same directory as the current file, one -directory level higher and in all subdirectories. - This is quite a number of tags files, but it may still not be enough. For -example, when editing a file in "~/proj/src", you will not find the tags file -"~/proj/sub/tags". For this situation Vim offers to search a whole directory -tree for tags files. Example: > - - :set tags=~/proj/**/tags - - -ONE TAGS FILE - -When Vim has to search many places for tags files, you can hear the disk -rattling. It may get a bit slow. In that case it's better to spend this -time while generating one big tags file. You might do this overnight. - This requires the Exuberant ctags program, mentioned above. It offers an -argument to search a whole directory tree: > - - cd ~/proj - ctags -R . - -The nice thing about this is that Exuberant ctags recognizes various file -types. Thus this doesn't work just for C and C++ programs, also for Eiffel -and even Vim scripts. See the ctags documentation to tune this. - Now you only need to tell Vim where your big tags file is: > - - :set tags=~/proj/tags - - -MULTIPLE MATCHES - -When a function is defined multiple times (or a method in several classes), -the ":tag" command will jump to the first one. If there is a match in the -current file, that one is used first. - You can now jump to other matches for the same tag with: > - - :tnext - -Repeat this to find further matches. If there are many, you can select which -one to jump to: > - - :tselect tagname - -Vim will present you with a list of choices: - - # pri kind tag file ~ - 1 F f mch_init os_amiga.c ~ - mch_init() ~ - 2 F f mch_init os_mac.c ~ - mch_init() ~ - 3 F f mch_init os_msdos.c ~ - mch_init(void) ~ - 4 F f mch_init os_riscos.c ~ - mch_init() ~ - Enter nr of choice (<CR> to abort): ~ - -You can now enter the number (in the first column) of the match that you would -like to jump to. The information in the other columns give you a good idea of -where the match is defined. - -To move between the matching tags, these commands can be used: - - :tfirst go to first match - :[count]tprevious go to [count] previous match - :[count]tnext go to [count] next match - :tlast go to last match - -If [count] is omitted then one is used. - - -GUESSING TAG NAMES - -Command line completion is a good way to avoid typing a long tag name. Just -type the first bit and press <Tab>: > - - :tag write_<Tab> - -You will get the first match. If it's not the one you want, press <Tab> until -you find the right one. - Sometimes you only know part of the name of a function. Or you have many -tags that start with the same string, but end differently. Then you can tell -Vim to use a pattern to find the tag. - Suppose you want to jump to a tag that contains "block". First type -this: > - - :tag /block - -Now use command line completion: press <Tab>. Vim will find all tags that -contain "block" and use the first match. - The "/" before a tag name tells Vim that what follows is not a literal tag -name, but a pattern. You can use all the items for search patterns here. For -example, suppose you want to select a tag that starts with "write_": > - - :tselect /^write_ - -The "^" specifies that the tag starts with "write_". Otherwise it would also -be found halfway a tag name. Similarly "$" at the end makes sure the pattern -matches until the end of a tag. - - -A TAGS BROWSER - -Since CTRL-] takes you to the definition of the identifier under the cursor, -you can use a list of identifier names as a table of contents. Here is an -example. - First create a list of identifiers (this requires Exuberant ctags): > - - ctags --c-types=f -f functions *.c - -Now start Vim without a file, and edit this file in Vim, in a vertically split -window: > - - vim - :vsplit functions - -The window contains a list of all the functions. There is some more stuff, -but you can ignore that. Do ":setlocal ts=99" to clean it up a bit. - In this window, define a mapping: > - - :nnoremap <buffer> <CR> 0ye<C-W>w:tag <C-R>"<CR> - -Move the cursor to the line that contains the function you want to go to. -Now press <Enter>. Vim will go to the other window and jump to the selected -function. - - -RELATED ITEMS - -You can set 'ignorecase' to make case in tag names be ignored. - -The 'tagbsearch' option tells if the tags file is sorted or not. The default -is to assume a sorted tags file, which makes a tags search a lot faster, but -doesn't work if the tags file isn't sorted. - -The 'taglength' option can be used to tell Vim the number of significant -characters in a tag. - -When you use the SNiFF+ program, you can use the Vim interface to it |sniff|. -SNiFF+ is a commercial program. - -Cscope is a free program. It does not only find places where an identifier is -declared, but also where it is used. See |cscope|. - -============================================================================== -*29.2* The preview window - -When you edit code that contains a function call, you need to use the correct -arguments. To know what values to pass you can look at how the function is -defined. The tags mechanism works very well for this. Preferably the -definition is displayed in another window. For this the preview window can be -used. - To open a preview window to display the function "write_char": > - - :ptag write_char - -Vim will open a window, and jumps to the tag "write_char". Then it takes you -back to the original position. Thus you can continue typing without the need -to use a CTRL-W command. - If the name of a function appears in the text, you can get its definition -in the preview window with: > - - CTRL-W } - -There is a script that automatically displays the text where the word under -the cursor was defined. See |CursorHold-example|. - -To close the preview window use this command: > - - :pclose - -To edit a specific file in the preview window, use ":pedit". This can be -useful to edit a header file, for example: > - - :pedit defs.h - -Finally, ":psearch" can be used to find a word in the current file and any -included files and display the match in the preview window. This is -especially useful when using library functions, for which you do not have a -tags file. Example: > - - :psearch popen - -This will show the "stdio.h" file in the preview window, with the function -prototype for popen(): - - FILE *popen __P((const char *, const char *)); ~ - -You can specify the height of the preview window, when it is opened, with the -'previewheight' option. - -============================================================================== -*29.3* Moving through a program - -Since a program is structured, Vim can recognize items in it. Specific -commands can be used to move around. - C programs often contain constructs like this: - - #ifdef USE_POPEN ~ - fd = popen("ls", "r") ~ - #else ~ - fd = fopen("tmp", "w") ~ - #endif ~ - -But then much longer, and possibly nested. Position the cursor on the -"#ifdef" and press %. Vim will jump to the "#else". Pressing % again takes -you to the "#endif". Another % takes you to the "#ifdef" again. - When the construct is nested, Vim will find the matching items. This is a -good way to check if you didn't forget an "#endif". - When you are somewhere inside a "#if" - "#endif", you can jump to the start -of it with: > - - [# - -If you are not after a "#if" or "#ifdef" Vim will beep. To jump forward to -the next "#else" or "#endif" use: > - - ]# - -These two commands skip any "#if" - "#endif" blocks that they encounter. -Example: - - #if defined(HAS_INC_H) ~ - a = a + inc(); ~ - # ifdef USE_THEME ~ - a += 3; ~ - # endif ~ - set_width(a); ~ - -With the cursor in the last line, "[#" moves to the first line. The "#ifdef" -- "#endif" block in the middle is skipped. - - -MOVING IN CODE BLOCKS - -In C code blocks are enclosed in {}. These can get pretty long. To move to -the start of the outer block use the "[[" command. Use "][" to find the end. -This assumes that the "{" and "}" are in the first column. - The "[{" command moves to the start of the current block. It skips over -pairs of {} at the same level. "]}" jumps to the end. - An overview: - - function(int a) - +-> { - | if (a) - | +-> { - [[ | | for (;;) --+ - | | +-> { | - | [{ | | foo(32); | --+ - | | [{ | if (bar(a)) --+ | ]} | - +-- | +-- break; | ]} | | - | } <-+ | | ][ - +-- foobar(a) | | - } <-+ | - } <-+ - -When writing C++ or Java, the outer {} block is for the class. The next level -of {} is for a method. When somewhere inside a class use "[m" to find the -previous start of a method. "]m" finds the next start of a method. - -Additionally, "[]" moves backward to the end of a function and "]]" moves -forward to the start of the next function. The end of a function is defined -by a "}" in the first column. - - int func1(void) - { - return 1; - +----------> } - | - [] | int func2(void) - | +-> { - | [[ | if (flag) - start +-- +-- return flag; - | ][ | return 2; - | +-> } - ]] | - | int func3(void) - +----------> { - return 3; - } - -Don't forget you can also use "%" to move between matching (), {} and []. -That also works when they are many lines apart. - - -MOVING IN BRACES - -The "[(" and "])" commands work similar to "[{" and "]}", except that they -work on () pairs instead of {} pairs. -> - [( -< <-------------------------------- - <------- - if (a == b && (c == d || (e > f)) && x > y) ~ - --------------> - --------------------------------> > - ]) - -MOVING IN COMMENTS - -To move back to the start of a comment use "[/". Move forward to the end of a -comment with "]/". This only works for /* - */ comments. - - +-> +-> /* - | [/ | * A comment about --+ - [/ | +-- * wonderful life. | ]/ - | */ <-+ - | - +-- foo = bar * 3; --+ - | ]/ - /* a short comment */ <-+ - -============================================================================== -*29.4* Finding global identifiers - -You are editing a C program and wonder if a variable is declared as "int" or -"unsigned". A quick way to find this is with the "[I" command. - Suppose the cursor is on the word "column". Type: > - - [I - -Vim will list the matching lines it can find. Not only in the current file, -but also in all included files (and files included in them, etc.). The result -looks like this: - - structs.h ~ - 1: 29 unsigned column; /* column number */ ~ - -The advantage over using tags or the preview window is that included files are -searched. In most cases this results in the right declaration to be found. -Also when the tags file is out of date. Also when you don't have tags for the -included files. - However, a few things must be right for "[I" to do its work. First of all, -the 'include' option must specify how a file is included. The default value -works for C and C++. For other languages you will have to change it. - - -LOCATING INCLUDED FILES - - Vim will find included files in the places specified with the 'path' -option. If a directory is missing, some include files will not be found. You -can discover this with this command: > - - :checkpath - -It will list the include files that could not be found. Also files included -by the files that could be found. An example of the output: - - --- Included files not found in path --- ~ - <io.h> ~ - vim.h --> ~ - <functions.h> ~ - <clib/exec_protos.h> ~ - -The "io.h" file is included by the current file and can't be found. "vim.h" -can be found, thus ":checkpath" goes into this file and checks what it -includes. The "functions.h" and "clib/exec_protos.h" files, included by -"vim.h" are not found. - - Note: - Vim is not a compiler. It does not recognize "#ifdef" statements. - This means every "#include" statement is used, also when it comes - after "#if NEVER". - -To fix the files that could not be found, add a directory to the 'path' -option. A good place to find out about this is the Makefile. Look out for -lines that contain "-I" items, like "-I/usr/local/X11". To add this directory -use: > - - :set path+=/usr/local/X11 - -When there are many subdirectories, you can use the "*" wildcard. Example: > - - :set path+=/usr/*/include - -This would find files in "/usr/local/include" as well as "/usr/X11/include". - -When working on a project with a whole nested tree of included files, the "**" -items is useful. This will search down in all subdirectories. Example: > - - :set path+=/projects/invent/**/include - -This will find files in the directories: - - /projects/invent/include ~ - /projects/invent/main/include ~ - /projects/invent/main/os/include ~ - etc. - -There are even more possibilities. Check out the 'path' option for info. - If you want to see which included files are actually found, use this -command: > - - :checkpath! - -You will get a (very long) list of included files, the files they include, and -so on. To shorten the list a bit, Vim shows "(Already listed)" for files that -were found before and doesn't list the included files in there again. - - -JUMPING TO A MATCH - -"[I" produces a list with only one line of text. When you want to have a -closer look at the first item, you can jump to that line with the command: > - - [<Tab> - -You can also use "[ CTRL-I", since CTRL-I is the same as pressing <Tab>. - -The list that "[I" produces has a number at the start of each line. When you -want to jump to another item than the first one, type the number first: > - - 3[<Tab> - -Will jump to the third item in the list. Remember that you can use CTRL-O to -jump back to where you started from. - - -RELATED COMMANDS - - [i only lists the first match - ]I only lists items below the cursor - ]i only lists the first item below the cursor - - -FINDING DEFINED IDENTIFIERS - -The "[I" command finds any identifier. To find only macros, defined with -"#define" use: > - - [D - -Again, this searches in included files. The 'define' option specifies what a -line looks like that defines the items for "[D". You could change it to make -it work with other languages than C or C++. - The commands related to "[D" are: - - [d only lists the first match - ]D only lists items below the cursor - ]d only lists the first item below the cursor - -============================================================================== -*29.5* Finding local identifiers - -The "[I" command searches included files. To search in the current file only, -and jump to the first place where the word under the cursor is used: > - - gD - -Hint: Goto Definition. This command is very useful to find a variable or -function that was declared locally ("static", in C terms). Example (cursor on -"counter"): - - +-> static int counter = 0; - | - | int get_counter(void) - gD | { - | ++counter; - +-- return counter; - } - -To restrict the search even further, and look only in the current function, -use this command: > - - gd - -This will go back to the start of the current function and find the first -occurrence of the word under the cursor. Actually, it searches backwards to -an empty line above a "{" in the first column. From there it searches forward -for the identifier. Example (cursor on "idx"): - - int find_entry(char *name) - { - +-> int idx; - | - gd | for (idx = 0; idx < table_len; ++idx) - | if (strcmp(table[idx].name, name) == 0) - +-- return idx; - } - -============================================================================== - -Next chapter: |usr_30.txt| Editing programs - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_30.txt b/share/vim/vim73/doc/usr_30.txt deleted file mode 100644 index 09f90f82..00000000 --- a/share/vim/vim73/doc/usr_30.txt +++ /dev/null @@ -1,643 +0,0 @@ -*usr_30.txt* For Vim version 7.3. Last change: 2007 Nov 10 - - VIM USER MANUAL - by Bram Moolenaar - - Editing programs - - -Vim has various commands that aid in writing computer programs. Compile a -program and directly jump to reported errors. Automatically set the indent -for many languages and format comments. - -|30.1| Compiling -|30.2| Indenting C files -|30.3| Automatic indenting -|30.4| Other indenting -|30.5| Tabs and spaces -|30.6| Formatting comments - - Next chapter: |usr_31.txt| Exploiting the GUI - Previous chapter: |usr_29.txt| Moving through programs -Table of contents: |usr_toc.txt| - -============================================================================== -*30.1* Compiling - -Vim has a set of so called "quickfix" commands. They enable you to compile a -program from within Vim and then go through the errors generated and fix them -(hopefully). You can then recompile and fix any new errors that are found -until finally your program compiles without any error. - -The following command runs the program "make" (supplying it with any argument -you give) and captures the results: > - - :make {arguments} - -If errors were generated, they are captured and the editor positions you where -the first error occurred. - Take a look at an example ":make" session. (Typical :make sessions generate -far more errors and fewer stupid ones.) After typing ":make" the screen looks -like this: - - :!make | &tee /tmp/vim215953.err ~ - gcc -g -Wall -o prog main.c sub.c ~ - main.c: In function 'main': ~ - main.c:6: too many arguments to function 'do_sub' ~ - main.c: At top level: ~ - main.c:10: parse error before '}' ~ - make: *** [prog] Error 1 ~ - - 2 returned ~ - "main.c" 11L, 111C ~ - (3 of 6): too many arguments to function 'do_sub' ~ - Press ENTER or type command to continue ~ - -From this you can see that you have errors in the file "main.c". When you -press <Enter>, Vim displays the file "main.c", with the cursor positioned on -line 6, the first line with an error. You did not need to specify the file or -the line number, Vim knew where to go by looking in the error messages. - - +---------------------------------------------------+ - |int main() | - |{ | - | int i=3; | - cursor -> | do_sub("foo"); | - | ++i; | - | return (0); | - |} | - |} | - | ~ | - |(3 of 12): too many arguments to function 'do_sub' | - +---------------------------------------------------+ - -The following command goes to where the next error occurs: > - - :cnext - -Vim jumps to line 10, the last line in the file, where there is an extra '}'. - When there is not enough room, Vim will shorten the error message. To see -the whole message use: > - - :cc - -You can get an overview of all the error messages with the ":clist" command. -The output looks like this: > - - :clist -< 3 main.c: 6:too many arguments to function 'do_sub' ~ - 5 main.c: 10:parse error before '}' ~ - -Only the lines where Vim recognized a file name and line number are listed -here. It assumes those are the interesting lines and the rest is just boring -messages. However, sometimes unrecognized lines do contain something you want -to see. Output from the linker, for example, about an undefined function. -To see all the messages add a "!" to the command: > - - :clist! -< 1 gcc -g -Wall -o prog main.c sub.c ~ - 2 main.c: In function 'main': ~ - 3 main.c:6: too many arguments to function 'do_sub' ~ - 4 main.c: At top level: ~ - 5 main.c:10: parse error before '}' ~ - 6 make: *** [prog] Error 1 ~ - -Vim will highlight the current error. To go back to the previous error, use: -> - :cprevious - -Other commands to move around in the error list: - - :cfirst to first error - :clast to last error - :cc 3 to error nr 3 - - -USING ANOTHER COMPILER - -The name of the program to run when the ":make" command is executed is defined -by the 'makeprg' option. Usually this is set to "make", but Visual C++ users -should set this to "nmake" by executing the following command: > - - :set makeprg=nmake - -You can also include arguments in this option. Special characters need to -be escaped with a backslash. Example: > - - :set makeprg=nmake\ -f\ project.mak - -You can include special Vim keywords in the command specification. The % -character expands to the name of the current file. So if you execute the -command: > - :set makeprg=make\ % - -When you are editing main.c, then ":make" executes the following command: > - - make main.c - -This is not too useful, so you will refine the command a little and use the :r -(root) modifier: > - - :set makeprg=make\ %:r.o - -Now the command executed is as follows: > - - make main.o - -More about these modifiers here: |filename-modifiers|. - - -OLD ERROR LISTS - -Suppose you ":make" a program. There is a warning message in one file and an -error message in another. You fix the error and use ":make" again to check if -it was really fixed. Now you want to look at the warning message. It doesn't -show up in the last error list, since the file with the warning wasn't -compiled again. You can go back to the previous error list with: > - - :colder - -Then use ":clist" and ":cc {nr}" to jump to the place with the warning. - To go forward to the next error list: > - - :cnewer - -Vim remembers ten error lists. - - -SWITCHING COMPILERS - -You have to tell Vim what format the error messages are that your compiler -produces. This is done with the 'errorformat' option. The syntax of this -option is quite complicated and it can be made to fit almost any compiler. -You can find the explanation here: |errorformat|. - -You might be using various different compilers. Setting the 'makeprg' option, -and especially the 'errorformat' each time is not easy. Vim offers a simple -method for this. For example, to switch to using the Microsoft Visual C++ -compiler: > - - :compiler msvc - -This will find the Vim script for the "msvc" compiler and set the appropriate -options. - You can write your own compiler files. See |write-compiler-plugin|. - - -OUTPUT REDIRECTION - -The ":make" command redirects the output of the executed program to an error -file. How this works depends on various things, such as the 'shell'. If your -":make" command doesn't capture the output, check the 'makeef' and -'shellpipe' options. The 'shellquote' and 'shellxquote' options might also -matter. - -In case you can't get ":make" to redirect the file for you, an alternative is -to compile the program in another window and redirect the output into a file. -Then have Vim read this file with: > - - :cfile {filename} - -Jumping to errors will work like with the ":make" command. - -============================================================================== -*30.2* Indenting C style text - -A program is much easier to understand when the lines have been properly -indented. Vim offers various ways to make this less work. For C or C style -programs like Java or C++, set the 'cindent' option. Vim knows a lot about C -programs and will try very hard to automatically set the indent for you. Set -the 'shiftwidth' option to the amount of spaces you want for a deeper level. -Four spaces will work fine. One ":set" command will do it: > - - :set cindent shiftwidth=4 - -With this option enabled, when you type something such as "if (x)", the next -line will automatically be indented an additional level. - - if (flag) - Automatic indent ---> do_the_work(); - Automatic unindent <-- if (other_flag) { - Automatic indent ---> do_file(); - keep indent do_some_more(); - Automatic unindent <-- } - -When you type something in curly braces ({}), the text will be indented at the -start and unindented at the end. The unindenting will happen after typing the -'}', since Vim can't guess what you are going to type. - -One side effect of automatic indentation is that it helps you catch errors in -your code early. When you type a } to finish a function, only to find that -the automatic indentation gives it more indent than what you expected, there -is probably a } missing. Use the "%" command to find out which { matches the -} you typed. - A missing ) and ; also cause extra indent. Thus if you get more white -space than you would expect, check the preceding lines. - -When you have code that is badly formatted, or you inserted and deleted lines, -you need to re-indent the lines. The "=" operator does this. The simplest -form is: > - - == - -This indents the current line. Like with all operators, there are three ways -to use it. In Visual mode "=" indents the selected lines. A useful text -object is "a{". This selects the current {} block. Thus, to re-indent the -code block the cursor is in: > - - =a{ - -I you have really badly indented code, you can re-indent the whole file with: -> - gg=G - -However, don't do this in files that have been carefully indented manually. -The automatic indenting does a good job, but in some situations you might want -to overrule it. - - -SETTING INDENT STYLE - -Different people have different styles of indentation. By default Vim does a -pretty good job of indenting in a way that 90% of programmers do. There are -different styles, however; so if you want to, you can customize the -indentation style with the 'cinoptions' option. - By default 'cinoptions' is empty and Vim uses the default style. You can -add various items where you want something different. For example, to make -curly braces be placed like this: - - if (flag) ~ - { ~ - i = 8; ~ - j = 0; ~ - } ~ - -Use this command: > - - :set cinoptions+={2 - -There are many of these items. See |cinoptions-values|. - -============================================================================== -*30.3* Automatic indenting - -You don't want to switch on the 'cindent' option manually every time you edit -a C file. This is how you make it work automatically: > - - :filetype indent on - -Actually, this does a lot more than switching on 'cindent' for C files. First -of all, it enables detecting the type of a file. That's the same as what is -used for syntax highlighting. - When the filetype is known, Vim will search for an indent file for this -type of file. The Vim distribution includes a number of these for various -programming languages. This indent file will then prepare for automatic -indenting specifically for this file. - -If you don't like the automatic indenting, you can switch it off again: > - - :filetype indent off - -If you don't like the indenting for one specific type of file, this is how you -avoid it. Create a file with just this one line: > - - :let b:did_indent = 1 - -Now you need to write this in a file with a specific name: - - {directory}/indent/{filetype}.vim - -The {filetype} is the name of the file type, such as "cpp" or "java". You can -see the exact name that Vim detected with this command: > - - :set filetype - -In this file the output is: - - filetype=help ~ - -Thus you would use "help" for {filetype}. - For the {directory} part you need to use your runtime directory. Look at -the output of this command: > - - set runtimepath - -Now use the first item, the name before the first comma. Thus if the output -looks like this: - - runtimepath=~/.vim,/usr/local/share/vim/vim60/runtime,~/.vim/after ~ - -You use "~/.vim" for {directory}. Then the resulting file name is: - - ~/.vim/indent/help.vim ~ - -Instead of switching the indenting off, you could write your own indent file. -How to do that is explained here: |indent-expression|. - -============================================================================== -*30.4* Other indenting - -The most simple form of automatic indenting is with the 'autoindent' option. -It uses the indent from the previous line. A bit smarter is the 'smartindent' -option. This is useful for languages where no indent file is available. -'smartindent' is not as smart as 'cindent', but smarter than 'autoindent'. - With 'smartindent' set, an extra level of indentation is added for each { -and removed for each }. An extra level of indentation will also be added for -any of the words in the 'cinwords' option. Lines that begin with # are -treated specially: all indentation is removed. This is done so that -preprocessor directives will all start in column 1. The indentation is -restored for the next line. - - -CORRECTING INDENTS - -When you are using 'autoindent' or 'smartindent' to get the indent of the -previous line, there will be many times when you need to add or remove one -'shiftwidth' worth of indent. A quick way to do this is using the CTRL-D and -CTRL-T commands in Insert mode. - For example, you are typing a shell script that is supposed to look like -this: - - if test -n a; then ~ - echo a ~ - echo "-------" ~ - fi ~ - -Start off by setting these options: > - - :set autoindent shiftwidth=3 - -You start by typing the first line, <Enter> and the start of the second line: - - if test -n a; then ~ - echo ~ - -Now you see that you need an extra indent. Type CTRL-T. The result: - - if test -n a; then ~ - echo ~ - -The CTRL-T command, in Insert mode, adds one 'shiftwidth' to the indent, no -matter where in the line you are. - You continue typing the second line, <Enter> and the third line. This time -the indent is OK. Then <Enter> and the last line. Now you have this: - - if test -n a; then ~ - echo a ~ - echo "-------" ~ - fi ~ - -To remove the superfluous indent in the last line press CTRL-D. This deletes -one 'shiftwidth' worth of indent, no matter where you are in the line. - When you are in Normal mode, you can use the ">>" and "<<" commands to -shift lines. ">" and "<" are operators, thus you have the usual three ways to -specify the lines you want to indent. A useful combination is: > - - >i{ - -This adds one indent to the current block of lines, inside {}. The { and } -lines themselves are left unmodified. ">a{" includes them. In this example -the cursor is on "printf": - - original text after ">i{" after ">a{" - - if (flag) if (flag) if (flag) ~ - { { { ~ - printf("yes"); printf("yes"); printf("yes"); ~ - flag = 0; flag = 0; flag = 0; ~ - } } } ~ - -============================================================================== -*30.5* Tabs and spaces - -'tabstop' is set to eight by default. Although you can change it, you quickly -run into trouble later. Other programs won't know what tabstop value you -used. They probably use the default value of eight, and your text suddenly -looks very different. Also, most printers use a fixed tabstop value of eight. -Thus it's best to keep 'tabstop' alone. (If you edit a file which was written -with a different tabstop setting, see |25.3| for how to fix that.) - For indenting lines in a program, using a multiple of eight spaces makes -you quickly run into the right border of the window. Using a single space -doesn't provide enough visual difference. Many people prefer to use four -spaces, a good compromise. - Since a <Tab> is eight spaces and you want to use an indent of four spaces, -you can't use a <Tab> character to make your indent. There are two ways to -handle this: - -1. Use a mix of <Tab> and space characters. Since a <Tab> takes the place of - eight spaces, you have fewer characters in your file. Inserting a <Tab> - is quicker than eight spaces. Backspacing works faster as well. - -2. Use spaces only. This avoids the trouble with programs that use a - different tabstop value. - -Fortunately, Vim supports both methods quite well. - - -SPACES AND TABS - -If you are using a combination of tabs and spaces, you just edit normally. -The Vim defaults do a fine job of handling things. - You can make life a little easier by setting the 'softtabstop' option. -This option tells Vim to make the <Tab> key look and feel as if tabs were set -at the value of 'softtabstop', but actually use a combination of tabs and -spaces. - After you execute the following command, every time you press the <Tab> key -the cursor moves to the next 4-column boundary: > - - :set softtabstop=4 - -When you start in the first column and press <Tab>, you get 4 spaces inserted -in your text. The second time, Vim takes out the 4 spaces and puts in a <Tab> -(thus taking you to column 8). Thus Vim uses as many <Tab>s as possible, and -then fills up with spaces. - When backspacing it works the other way around. A <BS> will always delete -the amount specified with 'softtabstop'. Then <Tab>s are used as many as -possible and spaces to fill the gap. - The following shows what happens pressing <Tab> a few times, and then using -<BS>. A "." stands for a space and "------->" for a <Tab>. - - type result ~ - <Tab> .... - <Tab><Tab> -------> - <Tab><Tab><Tab> ------->.... - <Tab><Tab><Tab><BS> -------> - <Tab><Tab><Tab><BS><BS> .... - -An alternative is to use the 'smarttab' option. When it's set, Vim uses -'shiftwidth' for a <Tab> typed in the indent of a line, and a real <Tab> when -typed after the first non-blank character. However, <BS> doesn't work like -with 'softtabstop'. - - -JUST SPACES - -If you want absolutely no tabs in your file, you can set the 'expandtab' -option: > - - :set expandtab - -When this option is set, the <Tab> key inserts a series of spaces. Thus you -get the same amount of white space as if a <Tab> character was inserted, but -there isn't a real <Tab> character in your file. - The backspace key will delete each space by itself. Thus after typing one -<Tab> you have to press the <BS> key up to eight times to undo it. If you are -in the indent, pressing CTRL-D will be a lot quicker. - - -CHANGING TABS IN SPACES (AND BACK) - -Setting 'expandtab' does not affect any existing tabs. In other words, any -tabs in the document remain tabs. If you want to convert tabs to spaces, use -the ":retab" command. Use these commands: > - - :set expandtab - :%retab - -Now Vim will have changed all indents to use spaces instead of tabs. However, -all tabs that come after a non-blank character are kept. If you want these to -be converted as well, add a !: > - - :%retab! - -This is a little bit dangerous, because it can also change tabs inside a -string. To check if these exist, you could use this: > - - /"[^"\t]*\t[^"]*" - -It's recommended not to use hard tabs inside a string. Replace them with -"\t" to avoid trouble. - -The other way around works just as well: > - - :set noexpandtab - :%retab! - -============================================================================== -*30.6* Formatting comments - -One of the great things about Vim is that it understands comments. You can -ask Vim to format a comment and it will do the right thing. - Suppose, for example, that you have the following comment: - - /* ~ - * This is a test ~ - * of the text formatting. ~ - */ ~ - -You then ask Vim to format it by positioning the cursor at the start of the -comment and type: > - - gq]/ - -"gq" is the operator to format text. "]/" is the motion that takes you to the -end of a comment. The result is: - - /* ~ - * This is a test of the text formatting. ~ - */ ~ - -Notice that Vim properly handled the beginning of each line. - An alternative is to select the text that is to be formatted in Visual mode -and type "gq". - -To add a new line to the comment, position the cursor on the middle line and -press "o". The result looks like this: - - /* ~ - * This is a test of the text formatting. ~ - * ~ - */ ~ - -Vim has automatically inserted a star and a space for you. Now you can type -the comment text. When it gets longer than 'textwidth', Vim will break the -line. Again, the star is inserted automatically: - - /* ~ - * This is a test of the text formatting. ~ - * Typing a lot of text here will make Vim ~ - * break ~ - */ ~ - -For this to work some flags must be present in 'formatoptions': - - r insert the star when typing <Enter> in Insert mode - o insert the star when using "o" or "O" in Normal mode - c break comment text according to 'textwidth' - -See |fo-table| for more flags. - - -DEFINING A COMMENT - -The 'comments' option defines what a comment looks like. Vim distinguishes -between a single-line comment and a comment that has a different start, end -and middle part. - Many single-line comments start with a specific character. In C++ // is -used, in Makefiles #, in Vim scripts ". For example, to make Vim understand -C++ comments: > - - :set comments=:// - -The colon separates the flags of an item from the text by which the comment is -recognized. The general form of an item in 'comments' is: - - {flags}:{text} - -The {flags} part can be empty, as in this case. - Several of these items can be concatenated, separated by commas. This -allows recognizing different types of comments at the same time. For example, -let's edit an e-mail message. When replying, the text that others wrote is -preceded with ">" and "!" characters. This command would work: > - - :set comments=n:>,n:! - -There are two items, one for comments starting with ">" and one for comments -that start with "!". Both use the flag "n". This means that these comments -nest. Thus a line starting with ">" may have another comment after the ">". -This allows formatting a message like this: - - > ! Did you see that site? ~ - > ! It looks really great. ~ - > I don't like it. The ~ - > colors are terrible. ~ - What is the URL of that ~ - site? ~ - -Try setting 'textwidth' to a different value, e.g., 80, and format the text by -Visually selecting it and typing "gq". The result is: - - > ! Did you see that site? It looks really great. ~ - > I don't like it. The colors are terrible. ~ - What is the URL of that site? ~ - -You will notice that Vim did not move text from one type of comment to -another. The "I" in the second line would have fit at the end of the first -line, but since that line starts with "> !" and the second line with ">", Vim -knows that this is a different kind of comment. - - -A THREE PART COMMENT - -A C comment starts with "/*", has "*" in the middle and "*/" at the end. The -entry in 'comments' for this looks like this: > - - :set comments=s1:/*,mb:*,ex:*/ - -The start is defined with "s1:/*". The "s" indicates the start of a -three-piece comment. The colon separates the flags from the text by which the -comment is recognized: "/*". There is one flag: "1". This tells Vim that the -middle part has an offset of one space. - The middle part "mb:*" starts with "m", which indicates it is a middle -part. The "b" flag means that a blank must follow the text. Otherwise Vim -would consider text like "*pointer" also to be the middle of a comment. - The end part "ex:*/" has the "e" for identification. The "x" flag has a -special meaning. It means that after Vim automatically inserted a star, -typing / will remove the extra space. - -For more details see |format-comments|. - -============================================================================== - -Next chapter: |usr_31.txt| Exploiting the GUI - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_31.txt b/share/vim/vim73/doc/usr_31.txt deleted file mode 100644 index adbd56a2..00000000 --- a/share/vim/vim73/doc/usr_31.txt +++ /dev/null @@ -1,272 +0,0 @@ -*usr_31.txt* For Vim version 7.3. Last change: 2007 May 08 - - VIM USER MANUAL - by Bram Moolenaar - - Exploiting the GUI - - -Vim works well in a terminal, but the GUI has a few extra items. A file -browser can be used for commands that use a file. A dialog to make a choice -between alternatives. Use keyboard shortcuts to access menu items quickly. - -|31.1| The file browser -|31.2| Confirmation -|31.3| Menu shortcuts -|31.4| Vim window position and size -|31.5| Various - - Next chapter: |usr_32.txt| The undo tree - Previous chapter: |usr_30.txt| Editing programs -Table of contents: |usr_toc.txt| - -============================================================================== -*31.1* The file browser - -When using the File/Open... menu you get a file browser. This makes it easier -to find the file you want to edit. But what if you want to split a window to -edit another file? There is no menu entry for this. You could first use -Window/Split and then File/Open..., but that's more work. - Since you are typing most commands in Vim, opening the file browser with a -typed command is possible as well. To make the split command use the file -browser, prepend "browse": > - - :browse split - -Select a file and then the ":split" command will be executed with it. If you -cancel the file dialog nothing happens, the window isn't split. - You can also specify a file name argument. This is used to tell the file -browser where to start. Example: > - - :browse split /etc - -The file browser will pop up, starting in the directory "/etc". - -The ":browse" command can be prepended to just about any command that opens a -file. - If no directory is specified, Vim will decide where to start the file -browser. By default it uses the same directory as the last time. Thus when -you used ":browse split" and selected a file in "/usr/local/share", the next -time you use a ":browse" it will start in "/usr/local/share" again. - This can be changed with the 'browsedir' option. It can have one of three -values: - - last Use the last directory browsed (default) - buffer Use the same directory as the current buffer - current use the current directory - -For example, when you are in the directory "/usr", editing the file -"/usr/local/share/readme", then the command: > - - :set browsedir=buffer - :browse edit - -Will start the browser in "/usr/local/share". Alternatively: > - - :set browsedir=current - :browse edit - -Will start the browser in "/usr". - - Note: - To avoid using the mouse, most file browsers offer using key presses - to navigate. Since this is different for every system, it is not - explained here. Vim uses a standard browser when possible, your - system documentation should contain an explanation on the keyboard - shortcuts somewhere. - -When you are not using the GUI version, you could use the file explorer window -to select files like in a file browser. However, this doesn't work for the -":browse" command. See |netrw-browse|. - -============================================================================== -*31.2* Confirmation - -Vim protects you from accidentally overwriting a file and other ways to lose -changes. If you do something that might be a bad thing to do, Vim produces an -error message and suggests appending ! if you really want to do it. - To avoid retyping the command with the !, you can make Vim give you a -dialog. You can then press "OK" or "Cancel" to tell Vim what you want. - For example, you are editing a file and made changes to it. You start -editing another file with: > - - :confirm edit foo.txt - -Vim will pop up a dialog that looks something like this: - - +-----------------------------------+ - | | - | ? Save changes to "bar.txt"? | - | | - | YES NO CANCEL | - +-----------------------------------+ - -Now make your choice. If you do want to save the changes, select "YES". If -you want to lose the changes for ever: "NO". If you forgot what you were -doing and want to check what really changed use "CANCEL". You will be back in -the same file, with the changes still there. - -Just like ":browse", the ":confirm" command can be prepended to most commands -that edit another file. They can also be combined: > - - :confirm browse edit - -This will produce a dialog when the current buffer was changed. Then it will -pop up a file browser to select the file to edit. - - Note: - In the dialog you can use the keyboard to select the choice. - Typically the <Tab> key and the cursor keys change the choice. - Pressing <Enter> selects the choice. This depends on the system - though. - -When you are not using the GUI, the ":confirm" command works as well. Instead -of popping up a dialog, Vim will print the message at the bottom of the Vim -window and ask you to press a key to make a choice. > - - :confirm edit main.c -< Save changes to "Untitled"? ~ - [Y]es, (N)o, (C)ancel: ~ - -You can now press the single key for the choice. You don't have to press -<Enter>, unlike other typing on the command line. - -============================================================================== -*31.3* Menu shortcuts - -The keyboard is used for all Vim commands. The menus provide a simple way to -select commands, without knowing what they are called. But you have to move -your hand from the keyboard and grab the mouse. - Menus can often be selected with keys as well. This depends on your -system, but most often it works this way. Use the <Alt> key in combination -with the underlined letter of a menu. For example, <A-w> (<Alt> and w) pops -up the Window menu. - In the Window menu, the "split" item has the p underlined. To select it, -let go of the <Alt> key and press p. - -After the first selection of a menu with the <Alt> key, you can use the cursor -keys to move through the menus. <Right> selects a submenu and <left> closes -it. <Esc> also closes a menu. <Enter> selects a menu item. - -There is a conflict between using the <Alt> key to select menu items, and -using <Alt> key combinations for mappings. The 'winaltkeys' option tells Vim -what it should do with the <Alt> key. - The default value "menu" is the smart choice: If the key combination is a -menu shortcut it can't be mapped. All other keys are available for mapping. - The value "no" doesn't use any <Alt> keys for the menus. Thus you must use -the mouse for the menus, and all <Alt> keys can be mapped. - The value "yes" means that Vim will use any <Alt> keys for the menus. Some -<Alt> key combinations may also do other things than selecting a menu. - -============================================================================== -*31.4* Vim window position and size - -To see the current Vim window position on the screen use: > - - :winpos - -This will only work in the GUI. The output may look like this: - - Window position: X 272, Y 103 ~ - -The position is given in screen pixels. Now you can use the numbers to move -Vim somewhere else. For example, to move it to the left a hundred pixels: > - - :winpos 172 103 -< - Note: - There may be a small offset between the reported position and where - the window moves. This is because of the border around the window. - This is added by the window manager. - -You can use this command in your startup script to position the window at a -specific position. - -The size of the Vim window is computed in characters. Thus this depends on -the size of the font being used. You can see the current size with this -command: > - - :set lines columns - -To change the size set the 'lines' and/or 'columns' options to a new value: > - - :set lines=50 - :set columns=80 - -Obtaining the size works in a terminal just like in the GUI. Setting the size -is not possible in most terminals. - -You can start the X-Windows version of gvim with an argument to specify the -size and position of the window: > - - gvim -geometry {width}x{height}+{x_offset}+{y_offset} - -{width} and {height} are in characters, {x_offset} and {y_offset} are in -pixels. Example: > - - gvim -geometry 80x25+100+300 - -============================================================================== -*31.5* Various - -You can use gvim to edit an e-mail message. In your e-mail program you must -select gvim to be the editor for messages. When you try that, you will -see that it doesn't work: The mail program thinks that editing is finished, -while gvim is still running! - What happens is that gvim disconnects from the shell it was started in. -That is fine when you start gvim in a terminal, so that you can do other work -in that terminal. But when you really want to wait for gvim to finish, you -must prevent it from disconnecting. The "-f" argument does this: > - - gvim -f file.txt - -The "-f" stands for foreground. Now Vim will block the shell it was started -in until you finish editing and exit. - - -DELAYED START OF THE GUI - -On Unix it's possible to first start Vim in a terminal. That's useful if you -do various tasks in the same shell. If you are editing a file and decide you -want to use the GUI after all, you can start it with: > - - :gui - -Vim will open the GUI window and no longer use the terminal. You can continue -using the terminal for something else. The "-f" argument is used here to run -the GUI in the foreground. You can also use ":gui -f". - - -THE GVIM STARTUP FILE - -When gvim starts, it reads the gvimrc file. That's similar to the vimrc file -used when starting Vim. The gvimrc file can be used for settings and commands -that are only to be used when the GUI is going to be started. For example, -you can set the 'lines' option to set a different window size: > - - :set lines=55 - -You don't want to do this in a terminal, since its size is fixed (except for -an xterm that supports resizing). - The gvimrc file is searched for in the same locations as the vimrc file. -Normally its name is "~/.gvimrc" for Unix and "$VIM/_gvimrc" for MS-Windows. -The $MYGVIMRC environment variable is set to it, thus you can use this command -to edit the file, if you have one: > - - :edit $MYGVIMRC -< - If for some reason you don't want to use the normal gvimrc file, you can -specify another one with the "-U" argument: > - - gvim -U thisrc ... - -That allows starting gvim for different kinds of editing. You could set -another font size, for example. - To completely skip reading a gvimrc file: > - - gvim -U NONE ... - -============================================================================== - -Next chapter: |usr_32.txt| The undo tree - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_32.txt b/share/vim/vim73/doc/usr_32.txt deleted file mode 100644 index 7999efee..00000000 --- a/share/vim/vim73/doc/usr_32.txt +++ /dev/null @@ -1,180 +0,0 @@ -*usr_32.txt* For Vim version 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - The undo tree - - -Vim provides multi-level undo. If you undo a few changes and then make a new -change you create a branch in the undo tree. This text is about moving -through the branches. - -|32.1| Undo up to a file write -|32.2| Numbering changes -|32.3| Jumping around the tree -|32.4| Time travelling - - Next chapter: |usr_40.txt| Make new commands - Previous chapter: |usr_31.txt| Exploiting the GUI -Table of contents: |usr_toc.txt| - -============================================================================== -*32.1* Undo up to a file write - -Sometimes you make several changes, and then discover you want to go back to -when you have last written the file. You can do that with this command: > - - :earlier 1f - -The "f" stands for "file" here. - -You can repeat this command to go further back in the past. Or use a count -different from 1 to go back faster. - -If you go back too far, go forward again with: > - - :later 1f - -Note that these commands really work in time sequence. This matters if you -made changes after undoing some changes. It's explained in the next section. - -Also note that we are talking about text writes here. For writing the undo -information in a file see |undo-persistence|. - -============================================================================== -*32.2* Numbering changes - -In section |02.5| we only discussed one line of undo/redo. But it is also -possible to branch off. This happens when you undo a few changes and then -make a new change. The new changes become a branch in the undo tree. - -Let's start with the text "one". The first change to make is to append -" too". And then move to the first 'o' and change it into 'w'. We then have -two changes, numbered 1 and 2, and three states of the text: - - one ~ - | - change 1 - | - one too ~ - | - change 2 - | - one two ~ - -If we now undo one change, back to "one too", and change "one" to "me" we -create a branch in the undo tree: - - one ~ - | - change 1 - | - one too ~ - / \ - change 2 change 3 - | | - one two me too ~ - -You can now use the |u| command to undo. If you do this twice you get to -"one". Use |CTRL-R| to redo, and you will go to "one too". One more |CTRL-R| -takes you to "me too". Thus undo and redo go up and down in the tree, using -the branch that was last used. - -What matters here is the order in which the changes are made. Undo and redo -are not considered changes in this context. After each change you have a new -state of the text. - -Note that only the changes are numbered, the text shown in the tree above has -no identifier. They are mostly referred to by the number of the change above -it. But sometimes by the number of one of the changes below it, especially -when moving up in the tree, so that you know which change was just undone. - -============================================================================== -*32.3* Jumping around the tree - -So how do you get to "one two" now? You can use this command: > - - :undo 2 - -The text is now "one two", you are below change 2. You can use the |:undo| -command to jump to below any change in the tree. - -Now make another change: change "one" to "not": - - one ~ - | - change 1 - | - one too ~ - / \ - change 2 change 3 - | | - one two me too ~ - | - change 4 - | - not two ~ - -Now you change your mind and want to go back to "me too". Use the |g-| -command. This moves back in time. Thus it doesn't walk the tree upwards or -downwards, but goes to the change made before. - -You can repeat |g-| and you will see the text change: - me too ~ - one two ~ - one too ~ - one ~ - -Use |g+| to move forward in time: - one ~ - one too ~ - one two ~ - me too ~ - not two ~ - -Using |:undo| is useful if you know what change you want to jump to. |g-| and -|g+| are useful if you don't know exactly what the change number is. - -You can type a count before |g-| and |g+| to repeat them. - -============================================================================== -*32.4* Time travelling - -When you have been working on text for a while the tree grows to become big. -Then you may want to go to the text of some minutes ago. - -To see what branches there are in the undo tree use this command: > - - :undolist -< number changes time ~ - 3 2 16 seconds ago - 4 3 5 seconds ago - -Here you can see the number of the leaves in each branch and when the change -was made. Assuming we are below change 4, at "not two", you can go back ten -seconds with this command: > - - :earlier 10s - -Depending on how much time you took for the changes you end up at a certain -position in the tree. The |:earlier| command argument can be "m" for minutes, -"h" for hours and "d" for days. To go all the way back use a big number: > - - :earlier 100d - -To travel forward in time again use the |:later| command: > - - :later 1m - -The arguments are "s", "m" and "h", just like with |:earlier|. - -If you want even more details, or want to manipulate the information, you can -use the |undotree()| function. To see what it returns: > - - :echo undotree() - -============================================================================== - -Next chapter: |usr_40.txt| Make new commands - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_40.txt b/share/vim/vim73/doc/usr_40.txt deleted file mode 100644 index c7a5e477..00000000 --- a/share/vim/vim73/doc/usr_40.txt +++ /dev/null @@ -1,657 +0,0 @@ -*usr_40.txt* For Vim version 7.3. Last change: 2006 Jun 21 - - VIM USER MANUAL - by Bram Moolenaar - - Make new commands - - -Vim is an extensible editor. You can take a sequence of commands you use -often and turn it into a new command. Or redefine an existing command. -Autocommands make it possible to execute commands automatically. - -|40.1| Key mapping -|40.2| Defining command-line commands -|40.3| Autocommands - - Next chapter: |usr_41.txt| Write a Vim script - Previous chapter: |usr_32.txt| The undo tree -Table of contents: |usr_toc.txt| - -============================================================================== -*40.1* Key mapping - -A simple mapping was explained in section |05.3|. The principle is that one -sequence of key strokes is translated into another sequence of key strokes. -This is a simple, yet powerful mechanism. - The simplest form is that one key is mapped to a sequence of keys. Since -the function keys, except <F1>, have no predefined meaning in Vim, these are -good choices to map. Example: > - - :map <F2> GoDate: <Esc>:read !date<CR>kJ - -This shows how three modes are used. After going to the last line with "G", -the "o" command opens a new line and starts Insert mode. The text "Date: " is -inserted and <Esc> takes you out of insert mode. - Notice the use of special keys inside <>. This is called angle bracket -notation. You type these as separate characters, not by pressing the key -itself. This makes the mappings better readable and you can copy and paste -the text without problems. - The ":" character takes Vim to the command line. The ":read !date" command -reads the output from the "date" command and appends it below the current -line. The <CR> is required to execute the ":read" command. - At this point of execution the text looks like this: - - Date: ~ - Fri Jun 15 12:54:34 CEST 2001 ~ - -Now "kJ" moves the cursor up and joins the lines together. - To decide which key or keys you use for mapping, see |map-which-keys|. - - -MAPPING AND MODES - -The ":map" command defines remapping for keys in Normal mode. You can also -define mappings for other modes. For example, ":imap" applies to Insert mode. -You can use it to insert a date below the cursor: > - - :imap <F2> <CR>Date: <Esc>:read !date<CR>kJ - -It looks a lot like the mapping for <F2> in Normal mode, only the start is -different. The <F2> mapping for Normal mode is still there. Thus you can map -the same key differently for each mode. - Notice that, although this mapping starts in Insert mode, it ends in Normal -mode. If you want it to continue in Insert mode, append an "a" to the -mapping. - -Here is an overview of map commands and in which mode they work: - - :map Normal, Visual and Operator-pending - :vmap Visual - :nmap Normal - :omap Operator-pending - :map! Insert and Command-line - :imap Insert - :cmap Command-line - -Operator-pending mode is when you typed an operator character, such as "d" or -"y", and you are expected to type the motion command or a text object. Thus -when you type "dw", the "w" is entered in operator-pending mode. - -Suppose that you want to define <F7> so that the command d<F7> deletes a C -program block (text enclosed in curly braces, {}). Similarly y<F7> would yank -the program block into the unnamed register. Therefore, what you need to do -is to define <F7> to select the current program block. You can do this with -the following command: > - - :omap <F7> a{ - -This causes <F7> to perform a select block "a{" in operator-pending mode, just -like you typed it. This mapping is useful if typing a { on your keyboard is a -bit difficult. - - -LISTING MAPPINGS - -To see the currently defined mappings, use ":map" without arguments. Or one -of the variants that include the mode in which they work. The output could -look like this: - - _g :call MyGrep(1)<CR> ~ - v <F2> :s/^/> /<CR>:noh<CR>`` ~ - n <F2> :.,$s/^/> /<CR>:noh<CR>`` ~ - <xHome> <Home> - <xEnd> <End> - - -The first column of the list shows in which mode the mapping is effective. -This is "n" for Normal mode, "i" for Insert mode, etc. A blank is used for a -mapping defined with ":map", thus effective in both Normal and Visual mode. - One useful purpose of listing the mapping is to check if special keys in <> -form have been recognized (this only works when color is supported). For -example, when <Esc> is displayed in color, it stands for the escape character. -When it has the same color as the other text, it is five characters. - - -REMAPPING - -The result of a mapping is inspected for other mappings in it. For example, -the mappings for <F2> above could be shortened to: > - - :map <F2> G<F3> - :imap <F2> <Esc><F3> - :map <F3> oDate: <Esc>:read !date<CR>kJ - -For Normal mode <F2> is mapped to go to the last line, and then behave like -<F3> was pressed. In Insert mode <F2> stops Insert mode with <Esc> and then -also uses <F3>. Then <F3> is mapped to do the actual work. - -Suppose you hardly ever use Ex mode, and want to use the "Q" command to format -text (this was so in old versions of Vim). This mapping will do it: > - - :map Q gq - -But, in rare cases you need to use Ex mode anyway. Let's map "gQ" to Q, so -that you can still go to Ex mode: > - - :map gQ Q - -What happens now is that when you type "gQ" it is mapped to "Q". So far so -good. But then "Q" is mapped to "gq", thus typing "gQ" results in "gq", and -you don't get to Ex mode at all. - To avoid keys to be mapped again, use the ":noremap" command: > - - :noremap gQ Q - -Now Vim knows that the "Q" is not to be inspected for mappings that apply to -it. There is a similar command for every mode: - - :noremap Normal, Visual and Operator-pending - :vnoremap Visual - :nnoremap Normal - :onoremap Operator-pending - :noremap! Insert and Command-line - :inoremap Insert - :cnoremap Command-line - - -RECURSIVE MAPPING - -When a mapping triggers itself, it will run forever. This can be used to -repeat an action an unlimited number of times. - For example, you have a list of files that contain a version number in the -first line. You edit these files with "vim *.txt". You are now editing the -first file. Define this mapping: > - - :map ,, :s/5.1/5.2/<CR>:wnext<CR>,, - -Now you type ",,". This triggers the mapping. It replaces "5.1" with "5.2" -in the first line. Then it does a ":wnext" to write the file and edit the -next one. The mapping ends in ",,". This triggers the same mapping again, -thus doing the substitution, etc. - This continues until there is an error. In this case it could be a file -where the substitute command doesn't find a match for "5.1". You can then -make a change to insert "5.1" and continue by typing ",," again. Or the -":wnext" fails, because you are in the last file in the list. - When a mapping runs into an error halfway, the rest of the mapping is -discarded. CTRL-C interrupts the mapping (CTRL-Break on MS-Windows). - - -DELETE A MAPPING - -To remove a mapping use the ":unmap" command. Again, the mode the unmapping -applies to depends on the command used: - - :unmap Normal, Visual and Operator-pending - :vunmap Visual - :nunmap Normal - :ounmap Operator-pending - :unmap! Insert and Command-line - :iunmap Insert - :cunmap Command-line - -There is a trick to define a mapping that works in Normal and Operator-pending -mode, but not in Visual mode. First define it for all three modes, then -delete it for Visual mode: > - - :map <C-A> /---><CR> - :vunmap <C-A> - -Notice that the five characters "<C-A>" stand for the single key CTRL-A. - -To remove all mappings use the |:mapclear| command. You can guess the -variations for different modes by now. Be careful with this command, it can't -be undone. - - -SPECIAL CHARACTERS - -The ":map" command can be followed by another command. A | character -separates the two commands. This also means that a | character can't be used -inside a map command. To include one, use <Bar> (five characters). Example: -> - :map <F8> :write <Bar> !checkin %<CR> - -The same problem applies to the ":unmap" command, with the addition that you -have to watch out for trailing white space. These two commands are different: -> - :unmap a | unmap b - :unmap a| unmap b - -The first command tries to unmap "a ", with a trailing space. - -When using a space inside a mapping, use <Space> (seven characters): > - - :map <Space> W - -This makes the spacebar move a blank-separated word forward. - -It is not possible to put a comment directly after a mapping, because the " -character is considered to be part of the mapping. You can use |", this -starts a new, empty command with a comment. Example: > - - :map <Space> W| " Use spacebar to move forward a word - - -MAPPINGS AND ABBREVIATIONS - -Abbreviations are a lot like Insert mode mappings. The arguments are handled -in the same way. The main difference is the way they are triggered. An -abbreviation is triggered by typing a non-word character after the word. A -mapping is triggered when typing the last character. - Another difference is that the characters you type for an abbreviation are -inserted in the text while you type them. When the abbreviation is triggered -these characters are deleted and replaced by what the abbreviation produces. -When typing the characters for a mapping, nothing is inserted until you type -the last character that triggers it. If the 'showcmd' option is set, the -typed characters are displayed in the last line of the Vim window. - An exception is when a mapping is ambiguous. Suppose you have done two -mappings: > - - :imap aa foo - :imap aaa bar - -Now, when you type "aa", Vim doesn't know if it should apply the first or the -second mapping. It waits for another character to be typed. If it is an "a", -the second mapping is applied and results in "bar". If it is a space, for -example, the first mapping is applied, resulting in "foo", and then the space -is inserted. - - -ADDITIONALLY... - -The <script> keyword can be used to make a mapping local to a script. See -|:map-<script>|. - -The <buffer> keyword can be used to make a mapping local to a specific buffer. -See |:map-<buffer>| - -The <unique> keyword can be used to make defining a new mapping fail when it -already exists. Otherwise a new mapping simply overwrites the old one. See -|:map-<unique>|. - -To make a key do nothing, map it to <Nop> (five characters). This will make -the <F7> key do nothing at all: > - - :map <F7> <Nop>| map! <F7> <Nop> - -There must be no space after <Nop>. - -============================================================================== -*40.2* Defining command-line commands - -The Vim editor enables you to define your own commands. You execute these -commands just like any other Command-line mode command. - To define a command, use the ":command" command, as follows: > - - :command DeleteFirst 1delete - -Now when you execute the command ":DeleteFirst" Vim executes ":1delete", which -deletes the first line. - - Note: - User-defined commands must start with a capital letter. You cannot - use ":X", ":Next" and ":Print". The underscore cannot be used! You - can use digits, but this is discouraged. - -To list the user-defined commands, execute the following command: > - - :command - -Just like with the builtin commands, the user defined commands can be -abbreviated. You need to type just enough to distinguish the command from -another. Command line completion can be used to get the full name. - - -NUMBER OF ARGUMENTS - -User-defined commands can take a series of arguments. The number of arguments -must be specified by the -nargs option. For instance, the example -:DeleteFirst command takes no arguments, so you could have defined it as -follows: > - - :command -nargs=0 DeleteFirst 1delete - -However, because zero arguments is the default, you do not need to add -"-nargs=0". The other values of -nargs are as follows: - - -nargs=0 No arguments - -nargs=1 One argument - -nargs=* Any number of arguments - -nargs=? Zero or one argument - -nargs=+ One or more arguments - - -USING THE ARGUMENTS - -Inside the command definition, the arguments are represented by the -<args> keyword. For example: > - - :command -nargs=+ Say :echo "<args>" - -Now when you type > - - :Say Hello World - -Vim echoes "Hello World". However, if you add a double quote, it won't work. -For example: > - - :Say he said "hello" - -To get special characters turned into a string, properly escaped to use as an -expression, use "<q-args>": > - - :command -nargs=+ Say :echo <q-args> - -Now the above ":Say" command will result in this to be executed: > - - :echo "he said \"hello\"" - -The <f-args> keyword contains the same information as the <args> keyword, -except in a format suitable for use as function call arguments. For example: -> - :command -nargs=* DoIt :call AFunction(<f-args>) - :DoIt a b c - -Executes the following command: > - - :call AFunction("a", "b", "c") - - -LINE RANGE - -Some commands take a range as their argument. To tell Vim that you are -defining such a command, you need to specify a -range option. The values for -this option are as follows: - - -range Range is allowed; default is the current line. - -range=% Range is allowed; default is the whole file. - -range={count} Range is allowed; the last number in it is used as a - single number whose default is {count}. - -When a range is specified, the keywords <line1> and <line2> get the values of -the first and last line in the range. For example, the following command -defines the SaveIt command, which writes out the specified range to the file -"save_file": > - - :command -range=% SaveIt :<line1>,<line2>write! save_file - - -OTHER OPTIONS - -Some of the other options and keywords are as follows: - - -count={number} The command can take a count whose default is - {number}. The resulting count can be used - through the <count> keyword. - -bang You can use a !. If present, using <bang> will - result in a !. - -register You can specify a register. (The default is - the unnamed register.) - The register specification is available as - <reg> (a.k.a. <register>). - -complete={type} Type of command-line completion used. See - |:command-completion| for the list of possible - values. - -bar The command can be followed by | and another - command, or " and a comment. - -buffer The command is only available for the current - buffer. - -Finally, you have the <lt> keyword. It stands for the character <. Use this -to escape the special meaning of the <> items mentioned. - - -REDEFINING AND DELETING - -To redefine the same command use the ! argument: > - - :command -nargs=+ Say :echo "<args>" - :command! -nargs=+ Say :echo <q-args> - -To delete a user command use ":delcommand". It takes a single argument, which -is the name of the command. Example: > - - :delcommand SaveIt - -To delete all the user commands: > - - :comclear - -Careful, this can't be undone! - -More details about all this in the reference manual: |user-commands|. - -============================================================================== -*40.3* Autocommands - -An autocommand is a command that is executed automatically in response to some -event, such as a file being read or written or a buffer change. Through the -use of autocommands you can train Vim to edit compressed files, for example. -That is used in the |gzip| plugin. - Autocommands are very powerful. Use them with care and they will help you -avoid typing many commands. Use them carelessly and they will cause a lot of -trouble. - -Suppose you want to replace a datestamp on the end of a file every time it is -written. First you define a function: > - - :function DateInsert() - : $delete - : read !date - :endfunction - -You want this function to be called each time, just before a file is written. -This will make that happen: > - - :autocmd FileWritePre * call DateInsert() - -"FileWritePre" is the event for which this autocommand is triggered: Just -before (pre) writing a file. The "*" is a pattern to match with the file -name. In this case it matches all files. - With this command enabled, when you do a ":write", Vim checks for any -matching FileWritePre autocommands and executes them, and then it -performs the ":write". - The general form of the :autocmd command is as follows: > - - :autocmd [group] {events} {file_pattern} [nested] {command} - -The [group] name is optional. It is used in managing and calling the commands -(more on this later). The {events} parameter is a list of events (comma -separated) that trigger the command. - {file_pattern} is a filename, usually with wildcards. For example, using -"*.txt" makes the autocommand be used for all files whose name end in ".txt". -The optional [nested] flag allows for nesting of autocommands (see below), and -finally, {command} is the command to be executed. - - -EVENTS - -One of the most useful events is BufReadPost. It is triggered after a new -file is being edited. It is commonly used to set option values. For example, -you know that "*.gsm" files are GNU assembly language. To get the syntax file -right, define this autocommand: > - - :autocmd BufReadPost *.gsm set filetype=asm - -If Vim is able to detect the type of file, it will set the 'filetype' option -for you. This triggers the Filetype event. Use this to do something when a -certain type of file is edited. For example, to load a list of abbreviations -for text files: > - - :autocmd Filetype text source ~/.vim/abbrevs.vim - -When starting to edit a new file, you could make Vim insert a skeleton: > - - :autocmd BufNewFile *.[ch] 0read ~/skeletons/skel.c - -See |autocmd-events| for a complete list of events. - - -PATTERNS - -The {file_pattern} argument can actually be a comma-separated list of file -patterns. For example: "*.c,*.h" matches files ending in ".c" and ".h". - The usual file wildcards can be used. Here is a summary of the most often -used ones: - - * Match any character any number of times - ? Match any character once - [abc] Match the character a, b or c - . Matches a dot - a{b,c} Matches "ab" and "ac" - -When the pattern includes a slash (/) Vim will compare directory names. -Without the slash only the last part of a file name is used. For example, -"*.txt" matches "/home/biep/readme.txt". The pattern "/home/biep/*" would -also match it. But "home/foo/*.txt" wouldn't. - When including a slash, Vim matches the pattern against both the full path -of the file ("/home/biep/readme.txt") and the relative path (e.g., -"biep/readme.txt"). - - Note: - When working on a system that uses a backslash as file separator, such - as MS-Windows, you still use forward slashes in autocommands. This - makes it easier to write the pattern, since a backslash has a special - meaning. It also makes the autocommands portable. - - -DELETING - -To delete an autocommand, use the same command as what it was defined with, -but leave out the {command} at the end and use a !. Example: > - - :autocmd! FileWritePre * - -This will delete all autocommands for the "FileWritePre" event that use the -"*" pattern. - - -LISTING - -To list all the currently defined autocommands, use this: > - - :autocmd - -The list can be very long, especially when filetype detection is used. To -list only part of the commands, specify the group, event and/or pattern. For -example, to list all BufNewFile autocommands: > - - :autocmd BufNewFile - -To list all autocommands for the pattern "*.c": > - - :autocmd * *.c - -Using "*" for the event will list all the events. To list all autocommands -for the cprograms group: > - - :autocmd cprograms - - -GROUPS - -The {group} item, used when defining an autocommand, groups related autocommands -together. This can be used to delete all the autocommands in a certain group, -for example. - When defining several autocommands for a certain group, use the ":augroup" -command. For example, let's define autocommands for C programs: > - - :augroup cprograms - : autocmd BufReadPost *.c,*.h :set sw=4 sts=4 - : autocmd BufReadPost *.cpp :set sw=3 sts=3 - :augroup END - -This will do the same as: > - - :autocmd cprograms BufReadPost *.c,*.h :set sw=4 sts=4 - :autocmd cprograms BufReadPost *.cpp :set sw=3 sts=3 - -To delete all autocommands in the "cprograms" group: > - - :autocmd! cprograms - - -NESTING - -Generally, commands executed as the result of an autocommand event will not -trigger any new events. If you read a file in response to a FileChangedShell -event, it will not trigger the autocommands that would set the syntax, for -example. To make the events triggered, add the "nested" argument: > - - :autocmd FileChangedShell * nested edit - - -EXECUTING AUTOCOMMANDS - -It is possible to trigger an autocommand by pretending an event has occurred. -This is useful to have one autocommand trigger another one. Example: > - - :autocmd BufReadPost *.new execute "doautocmd BufReadPost " . expand("<afile>:r") - -This defines an autocommand that is triggered when a new file has been edited. -The file name must end in ".new". The ":execute" command uses expression -evaluation to form a new command and execute it. When editing the file -"tryout.c.new" the executed command will be: > - - :doautocmd BufReadPost tryout.c - -The expand() function takes the "<afile>" argument, which stands for the file -name the autocommand was executed for, and takes the root of the file name -with ":r". - -":doautocmd" executes on the current buffer. The ":doautoall" command works -like "doautocmd" except it executes on all the buffers. - - -USING NORMAL MODE COMMANDS - -The commands executed by an autocommand are Command-line commands. If you -want to use a Normal mode command, the ":normal" command can be used. -Example: > - - :autocmd BufReadPost *.log normal G - -This will make the cursor jump to the last line of *.log files when you start -to edit it. - Using the ":normal" command is a bit tricky. First of all, make sure its -argument is a complete command, including all the arguments. When you use "i" -to go to Insert mode, there must also be a <Esc> to leave Insert mode again. -If you use a "/" to start a search pattern, there must be a <CR> to execute -it. - The ":normal" command uses all the text after it as commands. Thus there -can be no | and another command following. To work around this, put the -":normal" command inside an ":execute" command. This also makes it possible -to pass unprintable characters in a convenient way. Example: > - - :autocmd BufReadPost *.chg execute "normal ONew entry:\<Esc>" | - \ 1read !date - -This also shows the use of a backslash to break a long command into more -lines. This can be used in Vim scripts (not at the command line). - -When you want the autocommand do something complicated, which involves jumping -around in the file and then returning to the original position, you may want -to restore the view on the file. See |restore-position| for an example. - - -IGNORING EVENTS - -At times, you will not want to trigger an autocommand. The 'eventignore' -option contains a list of events that will be totally ignored. For example, -the following causes events for entering and leaving a window to be ignored: > - - :set eventignore=WinEnter,WinLeave - -To ignore all events, use the following command: > - - :set eventignore=all - -To set it back to the normal behavior, make 'eventignore' empty: > - - :set eventignore= - -============================================================================== - -Next chapter: |usr_41.txt| Write a Vim script - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_41.txt b/share/vim/vim73/doc/usr_41.txt deleted file mode 100644 index 6ac0dc18..00000000 --- a/share/vim/vim73/doc/usr_41.txt +++ /dev/null @@ -1,2429 +0,0 @@ -*usr_41.txt* For Vim version 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - Write a Vim script - - -The Vim script language is used for the startup vimrc file, syntax files, and -many other things. This chapter explains the items that can be used in a Vim -script. There are a lot of them, thus this is a long chapter. - -|41.1| Introduction -|41.2| Variables -|41.3| Expressions -|41.4| Conditionals -|41.5| Executing an expression -|41.6| Using functions -|41.7| Defining a function -|41.8| Lists and Dictionaries -|41.9| Exceptions -|41.10| Various remarks -|41.11| Writing a plugin -|41.12| Writing a filetype plugin -|41.13| Writing a compiler plugin -|41.14| Writing a plugin that loads quickly -|41.15| Writing library scripts -|41.16| Distributing Vim scripts - - Next chapter: |usr_42.txt| Add new menus - Previous chapter: |usr_40.txt| Make new commands -Table of contents: |usr_toc.txt| - -============================================================================== -*41.1* Introduction *vim-script-intro* *script* - -Your first experience with Vim scripts is the vimrc file. Vim reads it when -it starts up and executes the commands. You can set options to values you -prefer. And you can use any colon command in it (commands that start with a -":"; these are sometimes referred to as Ex commands or command-line commands). - Syntax files are also Vim scripts. As are files that set options for a -specific file type. A complicated macro can be defined by a separate Vim -script file. You can think of other uses yourself. - -Let's start with a simple example: > - - :let i = 1 - :while i < 5 - : echo "count is" i - : let i += 1 - :endwhile -< - Note: - The ":" characters are not really needed here. You only need to use - them when you type a command. In a Vim script file they can be left - out. We will use them here anyway to make clear these are colon - commands and make them stand out from Normal mode commands. - Note: - You can try out the examples by yanking the lines from the text here - and executing them with :@" - -The output of the example code is: - - count is 1 ~ - count is 2 ~ - count is 3 ~ - count is 4 ~ - -In the first line the ":let" command assigns a value to a variable. The -generic form is: > - - :let {variable} = {expression} - -In this case the variable name is "i" and the expression is a simple value, -the number one. - The ":while" command starts a loop. The generic form is: > - - :while {condition} - : {statements} - :endwhile - -The statements until the matching ":endwhile" are executed for as long as the -condition is true. The condition used here is the expression "i < 5". This -is true when the variable i is smaller than five. - Note: - If you happen to write a while loop that keeps on running, you can - interrupt it by pressing CTRL-C (CTRL-Break on MS-Windows). - -The ":echo" command prints its arguments. In this case the string "count is" -and the value of the variable i. Since i is one, this will print: - - count is 1 ~ - -Then there is the ":let i += 1" command. This does the same thing as -":let i = i + 1". This adds one to the variable i and assigns the new value -to the same variable. - -The example was given to explain the commands, but would you really want to -make such a loop it can be written much more compact: > - - :for i in range(1, 4) - : echo "count is" i - :endfor - -We won't explain how |:for| and |range()| work until later. Follow the links -if you are impatient. - - -THREE KINDS OF NUMBERS - -Numbers can be decimal, hexadecimal or octal. A hexadecimal number starts -with "0x" or "0X". For example "0x1f" is decimal 31. An octal number starts -with a zero. "017" is decimal 15. Careful: don't put a zero before a decimal -number, it will be interpreted as an octal number! - The ":echo" command always prints decimal numbers. Example: > - - :echo 0x7f 036 -< 127 30 ~ - -A number is made negative with a minus sign. This also works for hexadecimal -and octal numbers. A minus sign is also used for subtraction. Compare this -with the previous example: > - - :echo 0x7f -036 -< 97 ~ - -White space in an expression is ignored. However, it's recommended to use it -for separating items, to make the expression easier to read. For example, to -avoid the confusion with a negative number above, put a space between the -minus sign and the following number: > - - :echo 0x7f - 036 - -============================================================================== -*41.2* Variables - -A variable name consists of ASCII letters, digits and the underscore. It -cannot start with a digit. Valid variable names are: - - counter - _aap3 - very_long_variable_name_with_underscores - FuncLength - LENGTH - -Invalid names are "foo+bar" and "6var". - These variables are global. To see a list of currently defined variables -use this command: > - - :let - -You can use global variables everywhere. This also means that when the -variable "count" is used in one script file, it might also be used in another -file. This leads to confusion at least, and real problems at worst. To avoid -this, you can use a variable local to a script file by prepending "s:". For -example, one script contains this code: > - - :let s:count = 1 - :while s:count < 5 - : source other.vim - : let s:count += 1 - :endwhile - -Since "s:count" is local to this script, you can be sure that sourcing the -"other.vim" script will not change this variable. If "other.vim" also uses an -"s:count" variable, it will be a different copy, local to that script. More -about script-local variables here: |script-variable|. - -There are more kinds of variables, see |internal-variables|. The most often -used ones are: - - b:name variable local to a buffer - w:name variable local to a window - g:name global variable (also in a function) - v:name variable predefined by Vim - - -DELETING VARIABLES - -Variables take up memory and show up in the output of the ":let" command. To -delete a variable use the ":unlet" command. Example: > - - :unlet s:count - -This deletes the script-local variable "s:count" to free up the memory it -uses. If you are not sure if the variable exists, and don't want an error -message when it doesn't, append !: > - - :unlet! s:count - -When a script finishes, the local variables used there will not be -automatically freed. The next time the script executes, it can still use the -old value. Example: > - - :if !exists("s:call_count") - : let s:call_count = 0 - :endif - :let s:call_count = s:call_count + 1 - :echo "called" s:call_count "times" - -The "exists()" function checks if a variable has already been defined. Its -argument is the name of the variable you want to check. Not the variable -itself! If you would do this: > - - :if !exists(s:call_count) - -Then the value of s:call_count will be used as the name of the variable that -exists() checks. That's not what you want. - The exclamation mark ! negates a value. When the value was true, it -becomes false. When it was false, it becomes true. You can read it as "not". -Thus "if !exists()" can be read as "if not exists()". - What Vim calls true is anything that is not zero. Zero is false. - Note: - Vim automatically converts a string to a number when it is looking for - a number. When using a string that doesn't start with a digit the - resulting number is zero. Thus look out for this: > - :if "true" -< The "true" will be interpreted as a zero, thus as false! - - -STRING VARIABLES AND CONSTANTS - -So far only numbers were used for the variable value. Strings can be used as -well. Numbers and strings are the basic types of variables that Vim supports. -The type is dynamic, it is set each time when assigning a value to the -variable with ":let". More about types in |41.8|. - To assign a string value to a variable, you need to use a string constant. -There are two types of these. First the string in double quotes: > - - :let name = "peter" - :echo name -< peter ~ - -If you want to include a double quote inside the string, put a backslash in -front of it: > - - :let name = "\"peter\"" - :echo name -< "peter" ~ - -To avoid the need for a backslash, you can use a string in single quotes: > - - :let name = '"peter"' - :echo name -< "peter" ~ - -Inside a single-quote string all the characters are as they are. Only the -single quote itself is special: you need to use two to get one. A backslash -is taken literally, thus you can't use it to change the meaning of the -character after it. - In double-quote strings it is possible to use special characters. Here are -a few useful ones: - - \t <Tab> - \n <NL>, line break - \r <CR>, <Enter> - \e <Esc> - \b <BS>, backspace - \" " - \\ \, backslash - \<Esc> <Esc> - \<C-W> CTRL-W - -The last two are just examples. The "\<name>" form can be used to include -the special key "name". - See |expr-quote| for the full list of special items in a string. - -============================================================================== -*41.3* Expressions - -Vim has a rich, yet simple way to handle expressions. You can read the -definition here: |expression-syntax|. Here we will show the most common -items. - The numbers, strings and variables mentioned above are expressions by -themselves. Thus everywhere an expression is expected, you can use a number, -string or variable. Other basic items in an expression are: - - $NAME environment variable - &name option - @r register - -Examples: > - - :echo "The value of 'tabstop' is" &ts - :echo "Your home directory is" $HOME - :if @a > 5 - -The &name form can be used to save an option value, set it to a new value, -do something and restore the old value. Example: > - - :let save_ic = &ic - :set noic - :/The Start/,$delete - :let &ic = save_ic - -This makes sure the "The Start" pattern is used with the 'ignorecase' option -off. Still, it keeps the value that the user had set. (Another way to do -this would be to add "\C" to the pattern, see |/\C|.) - - -MATHEMATICS - -It becomes more interesting if we combine these basic items. Let's start with -mathematics on numbers: - - a + b add - a - b subtract - a * b multiply - a / b divide - a % b modulo - -The usual precedence is used. Example: > - - :echo 10 + 5 * 2 -< 20 ~ - -Grouping is done with braces. No surprises here. Example: > - - :echo (10 + 5) * 2 -< 30 ~ - -Strings can be concatenated with ".". Example: > - - :echo "foo" . "bar" -< foobar ~ - -When the ":echo" command gets multiple arguments, it separates them with a -space. In the example the argument is a single expression, thus no space is -inserted. - -Borrowed from the C language is the conditional expression: - - a ? b : c - -If "a" evaluates to true "b" is used, otherwise "c" is used. Example: > - - :let i = 4 - :echo i > 5 ? "i is big" : "i is small" -< i is small ~ - -The three parts of the constructs are always evaluated first, thus you could -see it work as: - - (a) ? (b) : (c) - -============================================================================== -*41.4* Conditionals - -The ":if" commands executes the following statements, until the matching -":endif", only when a condition is met. The generic form is: - - :if {condition} - {statements} - :endif - -Only when the expression {condition} evaluates to true (non-zero) will the -{statements} be executed. These must still be valid commands. If they -contain garbage, Vim won't be able to find the ":endif". - You can also use ":else". The generic form for this is: - - :if {condition} - {statements} - :else - {statements} - :endif - -The second {statements} is only executed if the first one isn't. - Finally, there is ":elseif": - - :if {condition} - {statements} - :elseif {condition} - {statements} - :endif - -This works just like using ":else" and then "if", but without the need for an -extra ":endif". - A useful example for your vimrc file is checking the 'term' option and -doing something depending upon its value: > - - :if &term == "xterm" - : " Do stuff for xterm - :elseif &term == "vt100" - : " Do stuff for a vt100 terminal - :else - : " Do something for other terminals - :endif - - -LOGIC OPERATIONS - -We already used some of them in the examples. These are the most often used -ones: - - a == b equal to - a != b not equal to - a > b greater than - a >= b greater than or equal to - a < b less than - a <= b less than or equal to - -The result is one if the condition is met and zero otherwise. An example: > - - :if v:version >= 700 - : echo "congratulations" - :else - : echo "you are using an old version, upgrade!" - :endif - -Here "v:version" is a variable defined by Vim, which has the value of the Vim -version. 600 is for version 6.0. Version 6.1 has the value 601. This is -very useful to write a script that works with multiple versions of Vim. -|v:version| - -The logic operators work both for numbers and strings. When comparing two -strings, the mathematical difference is used. This compares byte values, -which may not be right for some languages. - When comparing a string with a number, the string is first converted to a -number. This is a bit tricky, because when a string doesn't look like a -number, the number zero is used. Example: > - - :if 0 == "one" - : echo "yes" - :endif - -This will echo "yes", because "one" doesn't look like a number, thus it is -converted to the number zero. - -For strings there are two more items: - - a =~ b matches with - a !~ b does not match with - -The left item "a" is used as a string. The right item "b" is used as a -pattern, like what's used for searching. Example: > - - :if str =~ " " - : echo "str contains a space" - :endif - :if str !~ '\.$' - : echo "str does not end in a full stop" - :endif - -Notice the use of a single-quote string for the pattern. This is useful, -because backslashes would need to be doubled in a double-quote string and -patterns tend to contain many backslashes. - -The 'ignorecase' option is used when comparing strings. When you don't want -that, append "#" to match case and "?" to ignore case. Thus "==?" compares -two strings to be equal while ignoring case. And "!~#" checks if a pattern -doesn't match, also checking the case of letters. For the full table see -|expr-==|. - - -MORE LOOPING - -The ":while" command was already mentioned. Two more statements can be used -in between the ":while" and the ":endwhile": - - :continue Jump back to the start of the while loop; the - loop continues. - :break Jump forward to the ":endwhile"; the loop is - discontinued. - -Example: > - - :while counter < 40 - : call do_something() - : if skip_flag - : continue - : endif - : if finished_flag - : break - : endif - : sleep 50m - :endwhile - -The ":sleep" command makes Vim take a nap. The "50m" specifies fifty -milliseconds. Another example is ":sleep 4", which sleeps for four seconds. - -Even more looping can be done with the ":for" command, see below in |41.8|. - -============================================================================== -*41.5* Executing an expression - -So far the commands in the script were executed by Vim directly. The -":execute" command allows executing the result of an expression. This is a -very powerful way to build commands and execute them. - An example is to jump to a tag, which is contained in a variable: > - - :execute "tag " . tag_name - -The "." is used to concatenate the string "tag " with the value of variable -"tag_name". Suppose "tag_name" has the value "get_cmd", then the command that -will be executed is: > - - :tag get_cmd - -The ":execute" command can only execute colon commands. The ":normal" command -executes Normal mode commands. However, its argument is not an expression but -the literal command characters. Example: > - - :normal gg=G - -This jumps to the first line and formats all lines with the "=" operator. - To make ":normal" work with an expression, combine ":execute" with it. -Example: > - - :execute "normal " . normal_commands - -The variable "normal_commands" must contain the Normal mode commands. - Make sure that the argument for ":normal" is a complete command. Otherwise -Vim will run into the end of the argument and abort the command. For example, -if you start Insert mode, you must leave Insert mode as well. This works: > - - :execute "normal Inew text \<Esc>" - -This inserts "new text " in the current line. Notice the use of the special -key "\<Esc>". This avoids having to enter a real <Esc> character in your -script. - -If you don't want to execute a string but evaluate it to get its expression -value, you can use the eval() function: > - - :let optname = "path" - :let optval = eval('&' . optname) - -A "&" character is prepended to "path", thus the argument to eval() is -"&path". The result will then be the value of the 'path' option. - The same thing can be done with: > - :exe 'let optval = &' . optname - -============================================================================== -*41.6* Using functions - -Vim defines many functions and provides a large amount of functionality that -way. A few examples will be given in this section. You can find the whole -list here: |functions|. - -A function is called with the ":call" command. The parameters are passed in -between braces, separated by commas. Example: > - - :call search("Date: ", "W") - -This calls the search() function, with arguments "Date: " and "W". The -search() function uses its first argument as a search pattern and the second -one as flags. The "W" flag means the search doesn't wrap around the end of -the file. - -A function can be called in an expression. Example: > - - :let line = getline(".") - :let repl = substitute(line, '\a', "*", "g") - :call setline(".", repl) - -The getline() function obtains a line from the current buffer. Its argument -is a specification of the line number. In this case "." is used, which means -the line where the cursor is. - The substitute() function does something similar to the ":substitute" -command. The first argument is the string on which to perform the -substitution. The second argument is the pattern, the third the replacement -string. Finally, the last arguments are the flags. - The setline() function sets the line, specified by the first argument, to a -new string, the second argument. In this example the line under the cursor is -replaced with the result of the substitute(). Thus the effect of the three -statements is equal to: > - - :substitute/\a/*/g - -Using the functions becomes more interesting when you do more work before and -after the substitute() call. - - -FUNCTIONS *function-list* - -There are many functions. We will mention them here, grouped by what they are -used for. You can find an alphabetical list here: |functions|. Use CTRL-] on -the function name to jump to detailed help on it. - -String manipulation: *string-functions* - nr2char() get a character by its ASCII value - char2nr() get ASCII value of a character - str2nr() convert a string to a Number - str2float() convert a string to a Float - printf() format a string according to % items - escape() escape characters in a string with a '\' - shellescape() escape a string for use with a shell command - fnameescape() escape a file name for use with a Vim command - tr() translate characters from one set to another - strtrans() translate a string to make it printable - tolower() turn a string to lowercase - toupper() turn a string to uppercase - match() position where a pattern matches in a string - matchend() position where a pattern match ends in a string - matchstr() match of a pattern in a string - matchlist() like matchstr() and also return submatches - stridx() first index of a short string in a long string - strridx() last index of a short string in a long string - strlen() length of a string - substitute() substitute a pattern match with a string - submatch() get a specific match in a ":substitute" - strpart() get part of a string - expand() expand special keywords - iconv() convert text from one encoding to another - byteidx() byte index of a character in a string - repeat() repeat a string multiple times - eval() evaluate a string expression - -List manipulation: *list-functions* - get() get an item without error for wrong index - len() number of items in a List - empty() check if List is empty - insert() insert an item somewhere in a List - add() append an item to a List - extend() append a List to a List - remove() remove one or more items from a List - copy() make a shallow copy of a List - deepcopy() make a full copy of a List - filter() remove selected items from a List - map() change each List item - sort() sort a List - reverse() reverse the order of a List - split() split a String into a List - join() join List items into a String - range() return a List with a sequence of numbers - string() String representation of a List - call() call a function with List as arguments - index() index of a value in a List - max() maximum value in a List - min() minimum value in a List - count() count number of times a value appears in a List - repeat() repeat a List multiple times - -Dictionary manipulation: *dict-functions* - get() get an entry without an error for a wrong key - len() number of entries in a Dictionary - has_key() check whether a key appears in a Dictionary - empty() check if Dictionary is empty - remove() remove an entry from a Dictionary - extend() add entries from one Dictionary to another - filter() remove selected entries from a Dictionary - map() change each Dictionary entry - keys() get List of Dictionary keys - values() get List of Dictionary values - items() get List of Dictionary key-value pairs - copy() make a shallow copy of a Dictionary - deepcopy() make a full copy of a Dictionary - string() String representation of a Dictionary - max() maximum value in a Dictionary - min() minimum value in a Dictionary - count() count number of times a value appears - -Floating point computation: *float-functions* - float2nr() convert Float to Number - abs() absolute value (also works for Number) - round() round off - ceil() round up - floor() round down - trunc() remove value after decimal point - log10() logarithm to base 10 - pow() value of x to the exponent y - sqrt() square root - sin() sine - cos() cosine - atan() arc tangent - -Variables: *var-functions* - type() type of a variable - islocked() check if a variable is locked - function() get a Funcref for a function name - getbufvar() get a variable value from a specific buffer - setbufvar() set a variable in a specific buffer - getwinvar() get a variable from specific window - gettabvar() get a variable from specific tab page - gettabwinvar() get a variable from specific window & tab page - setwinvar() set a variable in a specific window - settabvar() set a variable in a specific tab page - settabwinvar() set a variable in a specific window & tab page - garbagecollect() possibly free memory - -Cursor and mark position: *cursor-functions* *mark-functions* - col() column number of the cursor or a mark - virtcol() screen column of the cursor or a mark - line() line number of the cursor or mark - wincol() window column number of the cursor - winline() window line number of the cursor - cursor() position the cursor at a line/column - getpos() get position of cursor, mark, etc. - setpos() set position of cursor, mark, etc. - byte2line() get line number at a specific byte count - line2byte() byte count at a specific line - diff_filler() get the number of filler lines above a line - -Working with text in the current buffer: *text-functions* - getline() get a line or list of lines from the buffer - setline() replace a line in the buffer - append() append line or list of lines in the buffer - indent() indent of a specific line - cindent() indent according to C indenting - lispindent() indent according to Lisp indenting - nextnonblank() find next non-blank line - prevnonblank() find previous non-blank line - search() find a match for a pattern - searchpos() find a match for a pattern - searchpair() find the other end of a start/skip/end - searchpairpos() find the other end of a start/skip/end - searchdecl() search for the declaration of a name - - *system-functions* *file-functions* -System functions and manipulation of files: - glob() expand wildcards - globpath() expand wildcards in a number of directories - findfile() find a file in a list of directories - finddir() find a directory in a list of directories - resolve() find out where a shortcut points to - fnamemodify() modify a file name - pathshorten() shorten directory names in a path - simplify() simplify a path without changing its meaning - executable() check if an executable program exists - filereadable() check if a file can be read - filewritable() check if a file can be written to - getfperm() get the permissions of a file - getftype() get the kind of a file - isdirectory() check if a directory exists - getfsize() get the size of a file - getcwd() get the current working directory - haslocaldir() check if current window used |:lcd| - tempname() get the name of a temporary file - mkdir() create a new directory - delete() delete a file - rename() rename a file - system() get the result of a shell command - hostname() name of the system - readfile() read a file into a List of lines - writefile() write a List of lines into a file - -Date and Time: *date-functions* *time-functions* - getftime() get last modification time of a file - localtime() get current time in seconds - strftime() convert time to a string - reltime() get the current or elapsed time accurately - reltimestr() convert reltime() result to a string - - *buffer-functions* *window-functions* *arg-functions* -Buffers, windows and the argument list: - argc() number of entries in the argument list - argidx() current position in the argument list - argv() get one entry from the argument list - bufexists() check if a buffer exists - buflisted() check if a buffer exists and is listed - bufloaded() check if a buffer exists and is loaded - bufname() get the name of a specific buffer - bufnr() get the buffer number of a specific buffer - tabpagebuflist() return List of buffers in a tab page - tabpagenr() get the number of a tab page - tabpagewinnr() like winnr() for a specified tab page - winnr() get the window number for the current window - bufwinnr() get the window number of a specific buffer - winbufnr() get the buffer number of a specific window - getbufline() get a list of lines from the specified buffer - -Command line: *command-line-functions* - getcmdline() get the current command line - getcmdpos() get position of the cursor in the command line - setcmdpos() set position of the cursor in the command line - getcmdtype() return the current command-line type - -Quickfix and location lists: *quickfix-functions* - getqflist() list of quickfix errors - setqflist() modify a quickfix list - getloclist() list of location list items - setloclist() modify a location list - -Insert mode completion: *completion-functions* - complete() set found matches - complete_add() add to found matches - complete_check() check if completion should be aborted - pumvisible() check if the popup menu is displayed - -Folding: *folding-functions* - foldclosed() check for a closed fold at a specific line - foldclosedend() like foldclosed() but return the last line - foldlevel() check for the fold level at a specific line - foldtext() generate the line displayed for a closed fold - foldtextresult() get the text displayed for a closed fold - -Syntax and highlighting: *syntax-functions* *highlighting-functions* - clearmatches() clear all matches defined by |matchadd()| and - the |:match| commands - getmatches() get all matches defined by |matchadd()| and - the |:match| commands - hlexists() check if a highlight group exists - hlID() get ID of a highlight group - synID() get syntax ID at a specific position - synIDattr() get a specific attribute of a syntax ID - synIDtrans() get translated syntax ID - diff_hlID() get highlight ID for diff mode at a position - matchadd() define a pattern to highlight (a "match") - matcharg() get info about |:match| arguments - matchdelete() delete a match defined by |matchadd()| or a - |:match| command - setmatches() restore a list of matches saved by - |getmatches()| - -Spelling: *spell-functions* - spellbadword() locate badly spelled word at or after cursor - spellsuggest() return suggested spelling corrections - soundfold() return the sound-a-like equivalent of a word - -History: *history-functions* - histadd() add an item to a history - histdel() delete an item from a history - histget() get an item from a history - histnr() get highest index of a history list - -Interactive: *interactive-functions* - browse() put up a file requester - browsedir() put up a directory requester - confirm() let the user make a choice - getchar() get a character from the user - getcharmod() get modifiers for the last typed character - feedkeys() put characters in the typeahead queue - input() get a line from the user - inputlist() let the user pick an entry from a list - inputsecret() get a line from the user without showing it - inputdialog() get a line from the user in a dialog - inputsave() save and clear typeahead - inputrestore() restore typeahead - -GUI: *gui-functions* - getfontname() get name of current font being used - getwinposx() X position of the GUI Vim window - getwinposy() Y position of the GUI Vim window - -Vim server: *server-functions* - serverlist() return the list of server names - remote_send() send command characters to a Vim server - remote_expr() evaluate an expression in a Vim server - server2client() send a reply to a client of a Vim server - remote_peek() check if there is a reply from a Vim server - remote_read() read a reply from a Vim server - foreground() move the Vim window to the foreground - remote_foreground() move the Vim server window to the foreground - -Window size and position: *window-size-functions* - winheight() get height of a specific window - winwidth() get width of a specific window - winrestcmd() return command to restore window sizes - winsaveview() get view of current window - winrestview() restore saved view of current window - -Various: *various-functions* - mode() get current editing mode - visualmode() last visual mode used - hasmapto() check if a mapping exists - mapcheck() check if a matching mapping exists - maparg() get rhs of a mapping - exists() check if a variable, function, etc. exists - has() check if a feature is supported in Vim - changenr() return number of most recent change - cscope_connection() check if a cscope connection exists - did_filetype() check if a FileType autocommand was used - eventhandler() check if invoked by an event handler - getpid() get process ID of Vim - - libcall() call a function in an external library - libcallnr() idem, returning a number - - getreg() get contents of a register - getregtype() get type of a register - setreg() set contents and type of a register - - taglist() get list of matching tags - tagfiles() get a list of tags files - - mzeval() evaluate |MzScheme| expression - -============================================================================== -*41.7* Defining a function - -Vim enables you to define your own functions. The basic function declaration -begins as follows: > - - :function {name}({var1}, {var2}, ...) - : {body} - :endfunction -< - Note: - Function names must begin with a capital letter. - -Let's define a short function to return the smaller of two numbers. It starts -with this line: > - - :function Min(num1, num2) - -This tells Vim that the function is named "Min" and it takes two arguments: -"num1" and "num2". - The first thing you need to do is to check to see which number is smaller: - > - : if a:num1 < a:num2 - -The special prefix "a:" tells Vim that the variable is a function argument. -Let's assign the variable "smaller" the value of the smallest number: > - - : if a:num1 < a:num2 - : let smaller = a:num1 - : else - : let smaller = a:num2 - : endif - -The variable "smaller" is a local variable. Variables used inside a function -are local unless prefixed by something like "g:", "a:", or "s:". - - Note: - To access a global variable from inside a function you must prepend - "g:" to it. Thus "g:today" inside a function is used for the global - variable "today", and "today" is another variable, local to the - function. - -You now use the ":return" statement to return the smallest number to the user. -Finally, you end the function: > - - : return smaller - :endfunction - -The complete function definition is as follows: > - - :function Min(num1, num2) - : if a:num1 < a:num2 - : let smaller = a:num1 - : else - : let smaller = a:num2 - : endif - : return smaller - :endfunction - -For people who like short functions, this does the same thing: > - - :function Min(num1, num2) - : if a:num1 < a:num2 - : return a:num1 - : endif - : return a:num2 - :endfunction - -A user defined function is called in exactly the same way as a built-in -function. Only the name is different. The Min function can be used like -this: > - - :echo Min(5, 8) - -Only now will the function be executed and the lines be interpreted by Vim. -If there are mistakes, like using an undefined variable or function, you will -now get an error message. When defining the function these errors are not -detected. - -When a function reaches ":endfunction" or ":return" is used without an -argument, the function returns zero. - -To redefine a function that already exists, use the ! for the ":function" -command: > - - :function! Min(num1, num2, num3) - - -USING A RANGE - -The ":call" command can be given a line range. This can have one of two -meanings. When a function has been defined with the "range" keyword, it will -take care of the line range itself. - The function will be passed the variables "a:firstline" and "a:lastline". -These will have the line numbers from the range the function was called with. -Example: > - - :function Count_words() range - : let lnum = a:firstline - : let n = 0 - : while lnum <= a:lastline - : let n = n + len(split(getline(lnum))) - : let lnum = lnum + 1 - : endwhile - : echo "found " . n . " words" - :endfunction - -You can call this function with: > - - :10,30call Count_words() - -It will be executed once and echo the number of words. - The other way to use a line range is by defining a function without the -"range" keyword. The function will be called once for every line in the -range, with the cursor in that line. Example: > - - :function Number() - : echo "line " . line(".") . " contains: " . getline(".") - :endfunction - -If you call this function with: > - - :10,15call Number() - -The function will be called six times. - - -VARIABLE NUMBER OF ARGUMENTS - -Vim enables you to define functions that have a variable number of arguments. -The following command, for instance, defines a function that must have 1 -argument (start) and can have up to 20 additional arguments: > - - :function Show(start, ...) - -The variable "a:1" contains the first optional argument, "a:2" the second, and -so on. The variable "a:0" contains the number of extra arguments. - For example: > - - :function Show(start, ...) - : echohl Title - : echo "Show is " . a:start - : echohl None - : let index = 1 - : while index <= a:0 - : echo " Arg " . index . " is " . a:{index} - : let index = index + 1 - : endwhile - : echo "" - :endfunction - -This uses the ":echohl" command to specify the highlighting used for the -following ":echo" command. ":echohl None" stops it again. The ":echon" -command works like ":echo", but doesn't output a line break. - -You can also use the a:000 variable, it is a List of all the "..." arguments. -See |a:000|. - - -LISTING FUNCTIONS - -The ":function" command lists the names and arguments of all user-defined -functions: > - - :function -< function Show(start, ...) ~ - function GetVimIndent() ~ - function SetSyn(name) ~ - -To see what a function does, use its name as an argument for ":function": > - - :function SetSyn -< 1 if &syntax == '' ~ - 2 let &syntax = a:name ~ - 3 endif ~ - endfunction ~ - - -DEBUGGING - -The line number is useful for when you get an error message or when debugging. -See |debug-scripts| about debugging mode. - You can also set the 'verbose' option to 12 or higher to see all function -calls. Set it to 15 or higher to see every executed line. - - -DELETING A FUNCTION - -To delete the Show() function: > - - :delfunction Show - -You get an error when the function doesn't exist. - - -FUNCTION REFERENCES - -Sometimes it can be useful to have a variable point to one function or -another. You can do it with the function() function. It turns the name of a -function into a reference: > - - :let result = 0 " or 1 - :function! Right() - : return 'Right!' - :endfunc - :function! Wrong() - : return 'Wrong!' - :endfunc - : - :if result == 1 - : let Afunc = function('Right') - :else - : let Afunc = function('Wrong') - :endif - :echo call(Afunc, []) -< Wrong! ~ - -Note that the name of a variable that holds a function reference must start -with a capital. Otherwise it could be confused with the name of a builtin -function. - The way to invoke a function that a variable refers to is with the call() -function. Its first argument is the function reference, the second argument -is a List with arguments. - -Function references are most useful in combination with a Dictionary, as is -explained in the next section. - -============================================================================== -*41.8* Lists and Dictionaries - -So far we have used the basic types String and Number. Vim also supports two -composite types: List and Dictionary. - -A List is an ordered sequence of things. The things can be any kind of value, -thus you can make a List of numbers, a List of Lists and even a List of mixed -items. To create a List with three strings: > - - :let alist = ['aap', 'mies', 'noot'] - -The List items are enclosed in square brackets and separated by commas. To -create an empty List: > - - :let alist = [] - -You can add items to a List with the add() function: > - - :let alist = [] - :call add(alist, 'foo') - :call add(alist, 'bar') - :echo alist -< ['foo', 'bar'] ~ - -List concatenation is done with +: > - - :echo alist + ['foo', 'bar'] -< ['foo', 'bar', 'foo', 'bar'] ~ - -Or, if you want to extend a List directly: > - - :let alist = ['one'] - :call extend(alist, ['two', 'three']) - :echo alist -< ['one', 'two', 'three'] ~ - -Notice that using add() will have a different effect: > - - :let alist = ['one'] - :call add(alist, ['two', 'three']) - :echo alist -< ['one', ['two', 'three']] ~ - -The second argument of add() is added as a single item. - - -FOR LOOP - -One of the nice things you can do with a List is iterate over it: > - - :let alist = ['one', 'two', 'three'] - :for n in alist - : echo n - :endfor -< one ~ - two ~ - three ~ - -This will loop over each element in List "alist", assigning the value to -variable "n". The generic form of a for loop is: > - - :for {varname} in {listexpression} - : {commands} - :endfor - -To loop a certain number of times you need a List of a specific length. The -range() function creates one for you: > - - :for a in range(3) - : echo a - :endfor -< 0 ~ - 1 ~ - 2 ~ - -Notice that the first item of the List that range() produces is zero, thus the -last item is one less than the length of the list. - You can also specify the maximum value, the stride and even go backwards: > - - :for a in range(8, 4, -2) - : echo a - :endfor -< 8 ~ - 6 ~ - 4 ~ - -A more useful example, looping over lines in the buffer: > - - :for line in getline(1, 20) - : if line =~ "Date: " - : echo matchstr(line, 'Date: \zs.*') - : endif - :endfor - -This looks into lines 1 to 20 (inclusive) and echoes any date found in there. - - -DICTIONARIES - -A Dictionary stores key-value pairs. You can quickly lookup a value if you -know the key. A Dictionary is created with curly braces: > - - :let uk2nl = {'one': 'een', 'two': 'twee', 'three': 'drie'} - -Now you can lookup words by putting the key in square brackets: > - - :echo uk2nl['two'] -< twee ~ - -The generic form for defining a Dictionary is: > - - {<key> : <value>, ...} - -An empty Dictionary is one without any keys: > - - {} - -The possibilities with Dictionaries are numerous. There are various functions -for them as well. For example, you can obtain a list of the keys and loop -over them: > - - :for key in keys(uk2nl) - : echo key - :endfor -< three ~ - one ~ - two ~ - -You will notice the keys are not ordered. You can sort the list to get a -specific order: > - - :for key in sort(keys(uk2nl)) - : echo key - :endfor -< one ~ - three ~ - two ~ - -But you can never get back the order in which items are defined. For that you -need to use a List, it stores items in an ordered sequence. - - -DICTIONARY FUNCTIONS - -The items in a Dictionary can normally be obtained with an index in square -brackets: > - - :echo uk2nl['one'] -< een ~ - -A method that does the same, but without so many punctuation characters: > - - :echo uk2nl.one -< een ~ - -This only works for a key that is made of ASCII letters, digits and the -underscore. You can also assign a new value this way: > - - :let uk2nl.four = 'vier' - :echo uk2nl -< {'three': 'drie', 'four': 'vier', 'one': 'een', 'two': 'twee'} ~ - -And now for something special: you can directly define a function and store a -reference to it in the dictionary: > - - :function uk2nl.translate(line) dict - : return join(map(split(a:line), 'get(self, v:val, "???")')) - :endfunction - -Let's first try it out: > - - :echo uk2nl.translate('three two five one') -< drie twee ??? een ~ - -The first special thing you notice is the "dict" at the end of the ":function" -line. This marks the function as being used from a Dictionary. The "self" -local variable will then refer to that Dictionary. - Now let's break up the complicated return command: > - - split(a:line) - -The split() function takes a string, chops it into white separated words -and returns a list with these words. Thus in the example it returns: > - - :echo split('three two five one') -< ['three', 'two', 'five', 'one'] ~ - -This list is the first argument to the map() function. This will go through -the list, evaluating its second argument with "v:val" set to the value of each -item. This is a shortcut to using a for loop. This command: > - - :let alist = map(split(a:line), 'get(self, v:val, "???")') - -Is equivalent to: > - - :let alist = split(a:line) - :for idx in range(len(alist)) - : let alist[idx] = get(self, alist[idx], "???") - :endfor - -The get() function checks if a key is present in a Dictionary. If it is, then -the value is retrieved. If it isn't, then the default value is returned, in -the example it's '???'. This is a convenient way to handle situations where a -key may not be present and you don't want an error message. - -The join() function does the opposite of split(): it joins together a list of -words, putting a space in between. - This combination of split(), map() and join() is a nice way to filter a line -of words in a very compact way. - - -OBJECT ORIENTED PROGRAMMING - -Now that you can put both values and functions in a Dictionary, you can -actually use a Dictionary like an object. - Above we used a Dictionary for translating Dutch to English. We might want -to do the same for other languages. Let's first make an object (aka -Dictionary) that has the translate function, but no words to translate: > - - :let transdict = {} - :function transdict.translate(line) dict - : return join(map(split(a:line), 'get(self.words, v:val, "???")')) - :endfunction - -It's slightly different from the function above, using 'self.words' to lookup -word translations. But we don't have a self.words. Thus you could call this -an abstract class. - -Now we can instantiate a Dutch translation object: > - - :let uk2nl = copy(transdict) - :let uk2nl.words = {'one': 'een', 'two': 'twee', 'three': 'drie'} - :echo uk2nl.translate('three one') -< drie een ~ - -And a German translator: > - - :let uk2de = copy(transdict) - :let uk2de.words = {'one': 'ein', 'two': 'zwei', 'three': 'drei'} - :echo uk2de.translate('three one') -< drei ein ~ - -You see that the copy() function is used to make a copy of the "transdict" -Dictionary and then the copy is changed to add the words. The original -remains the same, of course. - -Now you can go one step further, and use your preferred translator: > - - :if $LANG =~ "de" - : let trans = uk2de - :else - : let trans = uk2nl - :endif - :echo trans.translate('one two three') -< een twee drie ~ - -Here "trans" refers to one of the two objects (Dictionaries). No copy is -made. More about List and Dictionary identity can be found at |list-identity| -and |dict-identity|. - -Now you might use a language that isn't supported. You can overrule the -translate() function to do nothing: > - - :let uk2uk = copy(transdict) - :function! uk2uk.translate(line) - : return a:line - :endfunction - :echo uk2uk.translate('three one wladiwostok') -< three one wladiwostok ~ - -Notice that a ! was used to overwrite the existing function reference. Now -use "uk2uk" when no recognized language is found: > - - :if $LANG =~ "de" - : let trans = uk2de - :elseif $LANG =~ "nl" - : let trans = uk2nl - :else - : let trans = uk2uk - :endif - :echo trans.translate('one two three') -< one two three ~ - -For further reading see |Lists| and |Dictionaries|. - -============================================================================== -*41.9* Exceptions - -Let's start with an example: > - - :try - : read ~/templates/pascal.tmpl - :catch /E484:/ - : echo "Sorry, the Pascal template file cannot be found." - :endtry - -The ":read" command will fail if the file does not exist. Instead of -generating an error message, this code catches the error and gives the user a -nice message instead. - -For the commands in between ":try" and ":endtry" errors are turned into -exceptions. An exception is a string. In the case of an error the string -contains the error message. And every error message has a number. In this -case, the error we catch contains "E484:". This number is guaranteed to stay -the same (the text may change, e.g., it may be translated). - -When the ":read" command causes another error, the pattern "E484:" will not -match in it. Thus this exception will not be caught and result in the usual -error message. - -You might be tempted to do this: > - - :try - : read ~/templates/pascal.tmpl - :catch - : echo "Sorry, the Pascal template file cannot be found." - :endtry - -This means all errors are caught. But then you will not see errors that are -useful, such as "E21: Cannot make changes, 'modifiable' is off". - -Another useful mechanism is the ":finally" command: > - - :let tmp = tempname() - :try - : exe ".,$write " . tmp - : exe "!filter " . tmp - : .,$delete - : exe "$read " . tmp - :finally - : call delete(tmp) - :endtry - -This filters the lines from the cursor until the end of the file through the -"filter" command, which takes a file name argument. No matter if the -filtering works, something goes wrong in between ":try" and ":finally" or the -user cancels the filtering by pressing CTRL-C, the "call delete(tmp)" is -always executed. This makes sure you don't leave the temporary file behind. - -More information about exception handling can be found in the reference -manual: |exception-handling|. - -============================================================================== -*41.10* Various remarks - -Here is a summary of items that apply to Vim scripts. They are also mentioned -elsewhere, but form a nice checklist. - -The end-of-line character depends on the system. For Unix a single <NL> -character is used. For MS-DOS, Windows, OS/2 and the like, <CR><LF> is used. -This is important when using mappings that end in a <CR>. See |:source_crnl|. - - -WHITE SPACE - -Blank lines are allowed and ignored. - -Leading whitespace characters (blanks and TABs) are always ignored. The -whitespaces between parameters (e.g. between the 'set' and the 'cpoptions' in -the example below) are reduced to one blank character and plays the role of a -separator, the whitespaces after the last (visible) character may or may not -be ignored depending on the situation, see below. - -For a ":set" command involving the "=" (equal) sign, such as in: > - - :set cpoptions =aABceFst - -the whitespace immediately before the "=" sign is ignored. But there can be -no whitespace after the "=" sign! - -To include a whitespace character in the value of an option, it must be -escaped by a "\" (backslash) as in the following example: > - - :set tags=my\ nice\ file - -The same example written as > - - :set tags=my nice file - -will issue an error, because it is interpreted as: > - - :set tags=my - :set nice - :set file - - -COMMENTS - -The character " (the double quote mark) starts a comment. Everything after -and including this character until the end-of-line is considered a comment and -is ignored, except for commands that don't consider comments, as shown in -examples below. A comment can start on any character position on the line. - -There is a little "catch" with comments for some commands. Examples: > - - :abbrev dev development " shorthand - :map <F3> o#include " insert include - :execute cmd " do it - :!ls *.c " list C files - -The abbreviation 'dev' will be expanded to 'development " shorthand'. The -mapping of <F3> will actually be the whole line after the 'o# ....' including -the '" insert include'. The "execute" command will give an error. The "!" -command will send everything after it to the shell, causing an error for an -unmatched '"' character. - There can be no comment after ":map", ":abbreviate", ":execute" and "!" -commands (there are a few more commands with this restriction). For the -":map", ":abbreviate" and ":execute" commands there is a trick: > - - :abbrev dev development|" shorthand - :map <F3> o#include|" insert include - :execute cmd |" do it - -With the '|' character the command is separated from the next one. And that -next command is only a comment. For the last command you need to do two -things: |:execute| and use '|': > - :exe '!ls *.c' |" list C files - -Notice that there is no white space before the '|' in the abbreviation and -mapping. For these commands, any character until the end-of-line or '|' is -included. As a consequence of this behavior, you don't always see that -trailing whitespace is included: > - - :map <F4> o#include - -To spot these problems, you can set the 'list' option when editing vimrc -files. - -For Unix there is one special way to comment a line, that allows making a Vim -script executable: > - #!/usr/bin/env vim -S - echo "this is a Vim script" - quit - -The "#" command by itself lists a line with the line number. Adding an -exclamation mark changes it into doing nothing, so that you can add the shell -command to execute the rest of the file. |:#!| |-S| - - -PITFALLS - -Even bigger problem arises in the following example: > - - :map ,ab o#include - :unmap ,ab - -Here the unmap command will not work, because it tries to unmap ",ab ". This -does not exist as a mapped sequence. An error will be issued, which is very -hard to identify, because the ending whitespace character in ":unmap ,ab " is -not visible. - -And this is the same as what happens when one uses a comment after an 'unmap' -command: > - - :unmap ,ab " comment - -Here the comment part will be ignored. However, Vim will try to unmap -',ab ', which does not exist. Rewrite it as: > - - :unmap ,ab| " comment - - -RESTORING THE VIEW - -Sometimes you want to make a change and go back to where cursor was. -Restoring the relative position would also be nice, so that the same line -appears at the top of the window. - This example yanks the current line, puts it above the first line in the -file and then restores the view: > - - map ,p ma"aYHmbgg"aP`bzt`a - -What this does: > - ma"aYHmbgg"aP`bzt`a -< ma set mark a at cursor position - "aY yank current line into register a - Hmb go to top line in window and set mark b there - gg go to first line in file - "aP put the yanked line above it - `b go back to top line in display - zt position the text in the window as before - `a go back to saved cursor position - - -PACKAGING - -To avoid your function names to interfere with functions that you get from -others, use this scheme: -- Prepend a unique string before each function name. I often use an - abbreviation. For example, "OW_" is used for the option window functions. -- Put the definition of your functions together in a file. Set a global - variable to indicate that the functions have been loaded. When sourcing the - file again, first unload the functions. -Example: > - - " This is the XXX package - - if exists("XXX_loaded") - delfun XXX_one - delfun XXX_two - endif - - function XXX_one(a) - ... body of function ... - endfun - - function XXX_two(b) - ... body of function ... - endfun - - let XXX_loaded = 1 - -============================================================================== -*41.11* Writing a plugin *write-plugin* - -You can write a Vim script in such a way that many people can use it. This is -called a plugin. Vim users can drop your script in their plugin directory and -use its features right away |add-plugin|. - -There are actually two types of plugins: - - global plugins: For all types of files. -filetype plugins: Only for files of a specific type. - -In this section the first type is explained. Most items are also relevant for -writing filetype plugins. The specifics for filetype plugins are in the next -section |write-filetype-plugin|. - - -NAME - -First of all you must choose a name for your plugin. The features provided -by the plugin should be clear from its name. And it should be unlikely that -someone else writes a plugin with the same name but which does something -different. And please limit the name to 8 characters, to avoid problems on -old Windows systems. - -A script that corrects typing mistakes could be called "typecorr.vim". We -will use it here as an example. - -For the plugin to work for everybody, it should follow a few guidelines. This -will be explained step-by-step. The complete example plugin is at the end. - - -BODY - -Let's start with the body of the plugin, the lines that do the actual work: > - - 14 iabbrev teh the - 15 iabbrev otehr other - 16 iabbrev wnat want - 17 iabbrev synchronisation - 18 \ synchronization - 19 let s:count = 4 - -The actual list should be much longer, of course. - -The line numbers have only been added to explain a few things, don't put them -in your plugin file! - - -HEADER - -You will probably add new corrections to the plugin and soon have several -versions laying around. And when distributing this file, people will want to -know who wrote this wonderful plugin and where they can send remarks. -Therefore, put a header at the top of your plugin: > - - 1 " Vim global plugin for correcting typing mistakes - 2 " Last Change: 2000 Oct 15 - 3 " Maintainer: Bram Moolenaar <Bram@vim.org> - -About copyright and licensing: Since plugins are very useful and it's hardly -worth restricting their distribution, please consider making your plugin -either public domain or use the Vim |license|. A short note about this near -the top of the plugin should be sufficient. Example: > - - 4 " License: This file is placed in the public domain. - - -LINE CONTINUATION, AVOIDING SIDE EFFECTS *use-cpo-save* - -In line 18 above, the line-continuation mechanism is used |line-continuation|. -Users with 'compatible' set will run into trouble here, they will get an error -message. We can't just reset 'compatible', because that has a lot of side -effects. To avoid this, we will set the 'cpoptions' option to its Vim default -value and restore it later. That will allow the use of line-continuation and -make the script work for most people. It is done like this: > - - 11 let s:save_cpo = &cpo - 12 set cpo&vim - .. - 42 let &cpo = s:save_cpo - -We first store the old value of 'cpoptions' in the s:save_cpo variable. At -the end of the plugin this value is restored. - -Notice that a script-local variable is used |s:var|. A global variable could -already be in use for something else. Always use script-local variables for -things that are only used in the script. - - -NOT LOADING - -It's possible that a user doesn't always want to load this plugin. Or the -system administrator has dropped it in the system-wide plugin directory, but a -user has his own plugin he wants to use. Then the user must have a chance to -disable loading this specific plugin. This will make it possible: > - - 6 if exists("g:loaded_typecorr") - 7 finish - 8 endif - 9 let g:loaded_typecorr = 1 - -This also avoids that when the script is loaded twice it would cause error -messages for redefining functions and cause trouble for autocommands that are -added twice. - -The name is recommended to start with "loaded_" and then the file name of the -plugin, literally. The "g:" is prepended just to avoid mistakes when using -the variable in a function (without "g:" it would be a variable local to the -function). - -Using "finish" stops Vim from reading the rest of the file, it's much quicker -than using if-endif around the whole file. - - -MAPPING - -Now let's make the plugin more interesting: We will add a mapping that adds a -correction for the word under the cursor. We could just pick a key sequence -for this mapping, but the user might already use it for something else. To -allow the user to define which keys a mapping in a plugin uses, the <Leader> -item can be used: > - - 22 map <unique> <Leader>a <Plug>TypecorrAdd - -The "<Plug>TypecorrAdd" thing will do the work, more about that further on. - -The user can set the "mapleader" variable to the key sequence that he wants -this mapping to start with. Thus if the user has done: > - - let mapleader = "_" - -the mapping will define "_a". If the user didn't do this, the default value -will be used, which is a backslash. Then a map for "\a" will be defined. - -Note that <unique> is used, this will cause an error message if the mapping -already happened to exist. |:map-<unique>| - -But what if the user wants to define his own key sequence? We can allow that -with this mechanism: > - - 21 if !hasmapto('<Plug>TypecorrAdd') - 22 map <unique> <Leader>a <Plug>TypecorrAdd - 23 endif - -This checks if a mapping to "<Plug>TypecorrAdd" already exists, and only -defines the mapping from "<Leader>a" if it doesn't. The user then has a -chance of putting this in his vimrc file: > - - map ,c <Plug>TypecorrAdd - -Then the mapped key sequence will be ",c" instead of "_a" or "\a". - - -PIECES - -If a script gets longer, you often want to break up the work in pieces. You -can use functions or mappings for this. But you don't want these functions -and mappings to interfere with the ones from other scripts. For example, you -could define a function Add(), but another script could try to define the same -function. To avoid this, we define the function local to the script by -prepending it with "s:". - -We will define a function that adds a new typing correction: > - - 30 function s:Add(from, correct) - 31 let to = input("type the correction for " . a:from . ": ") - 32 exe ":iabbrev " . a:from . " " . to - .. - 36 endfunction - -Now we can call the function s:Add() from within this script. If another -script also defines s:Add(), it will be local to that script and can only -be called from the script it was defined in. There can also be a global Add() -function (without the "s:"), which is again another function. - -<SID> can be used with mappings. It generates a script ID, which identifies -the current script. In our typing correction plugin we use it like this: > - - 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add - .. - 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> - -Thus when a user types "\a", this sequence is invoked: > - - \a -> <Plug>TypecorrAdd -> <SID>Add -> :call <SID>Add() - -If another script would also map <SID>Add, it would get another script ID and -thus define another mapping. - -Note that instead of s:Add() we use <SID>Add() here. That is because the -mapping is typed by the user, thus outside of the script. The <SID> is -translated to the script ID, so that Vim knows in which script to look for -the Add() function. - -This is a bit complicated, but it's required for the plugin to work together -with other plugins. The basic rule is that you use <SID>Add() in mappings and -s:Add() in other places (the script itself, autocommands, user commands). - -We can also add a menu entry to do the same as the mapping: > - - 26 noremenu <script> Plugin.Add\ Correction <SID>Add - -The "Plugin" menu is recommended for adding menu items for plugins. In this -case only one item is used. When adding more items, creating a submenu is -recommended. For example, "Plugin.CVS" could be used for a plugin that offers -CVS operations "Plugin.CVS.checkin", "Plugin.CVS.checkout", etc. - -Note that in line 28 ":noremap" is used to avoid that any other mappings cause -trouble. Someone may have remapped ":call", for example. In line 24 we also -use ":noremap", but we do want "<SID>Add" to be remapped. This is why -"<script>" is used here. This only allows mappings which are local to the -script. |:map-<script>| The same is done in line 26 for ":noremenu". -|:menu-<script>| - - -<SID> AND <Plug> *using-<Plug>* - -Both <SID> and <Plug> are used to avoid that mappings of typed keys interfere -with mappings that are only to be used from other mappings. Note the -difference between using <SID> and <Plug>: - -<Plug> is visible outside of the script. It is used for mappings which the - user might want to map a key sequence to. <Plug> is a special code - that a typed key will never produce. - To make it very unlikely that other plugins use the same sequence of - characters, use this structure: <Plug> scriptname mapname - In our example the scriptname is "Typecorr" and the mapname is "Add". - This results in "<Plug>TypecorrAdd". Only the first character of - scriptname and mapname is uppercase, so that we can see where mapname - starts. - -<SID> is the script ID, a unique identifier for a script. - Internally Vim translates <SID> to "<SNR>123_", where "123" can be any - number. Thus a function "<SID>Add()" will have a name "<SNR>11_Add()" - in one script, and "<SNR>22_Add()" in another. You can see this if - you use the ":function" command to get a list of functions. The - translation of <SID> in mappings is exactly the same, that's how you - can call a script-local function from a mapping. - - -USER COMMAND - -Now let's add a user command to add a correction: > - - 38 if !exists(":Correct") - 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) - 40 endif - -The user command is defined only if no command with the same name already -exists. Otherwise we would get an error here. Overriding the existing user -command with ":command!" is not a good idea, this would probably make the user -wonder why the command he defined himself doesn't work. |:command| - - -SCRIPT VARIABLES - -When a variable starts with "s:" it is a script variable. It can only be used -inside a script. Outside the script it's not visible. This avoids trouble -with using the same variable name in different scripts. The variables will be -kept as long as Vim is running. And the same variables are used when sourcing -the same script again. |s:var| - -The fun is that these variables can also be used in functions, autocommands -and user commands that are defined in the script. In our example we can add -a few lines to count the number of corrections: > - - 19 let s:count = 4 - .. - 30 function s:Add(from, correct) - .. - 34 let s:count = s:count + 1 - 35 echo s:count . " corrections now" - 36 endfunction - -First s:count is initialized to 4 in the script itself. When later the -s:Add() function is called, it increments s:count. It doesn't matter from -where the function was called, since it has been defined in the script, it -will use the local variables from this script. - - -THE RESULT - -Here is the resulting complete example: > - - 1 " Vim global plugin for correcting typing mistakes - 2 " Last Change: 2000 Oct 15 - 3 " Maintainer: Bram Moolenaar <Bram@vim.org> - 4 " License: This file is placed in the public domain. - 5 - 6 if exists("g:loaded_typecorr") - 7 finish - 8 endif - 9 let g:loaded_typecorr = 1 - 10 - 11 let s:save_cpo = &cpo - 12 set cpo&vim - 13 - 14 iabbrev teh the - 15 iabbrev otehr other - 16 iabbrev wnat want - 17 iabbrev synchronisation - 18 \ synchronization - 19 let s:count = 4 - 20 - 21 if !hasmapto('<Plug>TypecorrAdd') - 22 map <unique> <Leader>a <Plug>TypecorrAdd - 23 endif - 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add - 25 - 26 noremenu <script> Plugin.Add\ Correction <SID>Add - 27 - 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> - 29 - 30 function s:Add(from, correct) - 31 let to = input("type the correction for " . a:from . ": ") - 32 exe ":iabbrev " . a:from . " " . to - 33 if a:correct | exe "normal viws\<C-R>\" \b\e" | endif - 34 let s:count = s:count + 1 - 35 echo s:count . " corrections now" - 36 endfunction - 37 - 38 if !exists(":Correct") - 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) - 40 endif - 41 - 42 let &cpo = s:save_cpo - -Line 33 wasn't explained yet. It applies the new correction to the word under -the cursor. The |:normal| command is used to use the new abbreviation. Note -that mappings and abbreviations are expanded here, even though the function -was called from a mapping defined with ":noremap". - -Using "unix" for the 'fileformat' option is recommended. The Vim scripts will -then work everywhere. Scripts with 'fileformat' set to "dos" do not work on -Unix. Also see |:source_crnl|. To be sure it is set right, do this before -writing the file: > - - :set fileformat=unix - - -DOCUMENTATION *write-local-help* - -It's a good idea to also write some documentation for your plugin. Especially -when its behavior can be changed by the user. See |add-local-help| for how -they are installed. - -Here is a simple example for a plugin help file, called "typecorr.txt": > - - 1 *typecorr.txt* Plugin for correcting typing mistakes - 2 - 3 If you make typing mistakes, this plugin will have them corrected - 4 automatically. - 5 - 6 There are currently only a few corrections. Add your own if you like. - 7 - 8 Mappings: - 9 <Leader>a or <Plug>TypecorrAdd - 10 Add a correction for the word under the cursor. - 11 - 12 Commands: - 13 :Correct {word} - 14 Add a correction for {word}. - 15 - 16 *typecorr-settings* - 17 This plugin doesn't have any settings. - -The first line is actually the only one for which the format matters. It will -be extracted from the help file to be put in the "LOCAL ADDITIONS:" section of -help.txt |local-additions|. The first "*" must be in the first column of the -first line. After adding your help file do ":help" and check that the entries -line up nicely. - -You can add more tags inside ** in your help file. But be careful not to use -existing help tags. You would probably use the name of your plugin in most of -them, like "typecorr-settings" in the example. - -Using references to other parts of the help in || is recommended. This makes -it easy for the user to find associated help. - - -FILETYPE DETECTION *plugin-filetype* - -If your filetype is not already detected by Vim, you should create a filetype -detection snippet in a separate file. It is usually in the form of an -autocommand that sets the filetype when the file name matches a pattern. -Example: > - - au BufNewFile,BufRead *.foo set filetype=foofoo - -Write this single-line file as "ftdetect/foofoo.vim" in the first directory -that appears in 'runtimepath'. For Unix that would be -"~/.vim/ftdetect/foofoo.vim". The convention is to use the name of the -filetype for the script name. - -You can make more complicated checks if you like, for example to inspect the -contents of the file to recognize the language. Also see |new-filetype|. - - -SUMMARY *plugin-special* - -Summary of special things to use in a plugin: - -s:name Variables local to the script. - -<SID> Script-ID, used for mappings and functions local to - the script. - -hasmapto() Function to test if the user already defined a mapping - for functionality the script offers. - -<Leader> Value of "mapleader", which the user defines as the - keys that plugin mappings start with. - -:map <unique> Give a warning if a mapping already exists. - -:noremap <script> Use only mappings local to the script, not global - mappings. - -exists(":Cmd") Check if a user command already exists. - -============================================================================== -*41.12* Writing a filetype plugin *write-filetype-plugin* *ftplugin* - -A filetype plugin is like a global plugin, except that it sets options and -defines mappings for the current buffer only. See |add-filetype-plugin| for -how this type of plugin is used. - -First read the section on global plugins above |41.11|. All that is said there -also applies to filetype plugins. There are a few extras, which are explained -here. The essential thing is that a filetype plugin should only have an -effect on the current buffer. - - -DISABLING - -If you are writing a filetype plugin to be used by many people, they need a -chance to disable loading it. Put this at the top of the plugin: > - - " Only do this when not done yet for this buffer - if exists("b:did_ftplugin") - finish - endif - let b:did_ftplugin = 1 - -This also needs to be used to avoid that the same plugin is executed twice for -the same buffer (happens when using an ":edit" command without arguments). - -Now users can disable loading the default plugin completely by making a -filetype plugin with only this line: > - - let b:did_ftplugin = 1 - -This does require that the filetype plugin directory comes before $VIMRUNTIME -in 'runtimepath'! - -If you do want to use the default plugin, but overrule one of the settings, -you can write the different setting in a script: > - - setlocal textwidth=70 - -Now write this in the "after" directory, so that it gets sourced after the -distributed "vim.vim" ftplugin |after-directory|. For Unix this would be -"~/.vim/after/ftplugin/vim.vim". Note that the default plugin will have set -"b:did_ftplugin", but it is ignored here. - - -OPTIONS - -To make sure the filetype plugin only affects the current buffer use the > - - :setlocal - -command to set options. And only set options which are local to a buffer (see -the help for the option to check that). When using |:setlocal| for global -options or options local to a window, the value will change for many buffers, -and that is not what a filetype plugin should do. - -When an option has a value that is a list of flags or items, consider using -"+=" and "-=" to keep the existing value. Be aware that the user may have -changed an option value already. First resetting to the default value and -then changing it often a good idea. Example: > - - :setlocal formatoptions& formatoptions+=ro - - -MAPPINGS - -To make sure mappings will only work in the current buffer use the > - - :map <buffer> - -command. This needs to be combined with the two-step mapping explained above. -An example of how to define functionality in a filetype plugin: > - - if !hasmapto('<Plug>JavaImport') - map <buffer> <unique> <LocalLeader>i <Plug>JavaImport - endif - noremap <buffer> <unique> <Plug>JavaImport oimport ""<Left><Esc> - -|hasmapto()| is used to check if the user has already defined a map to -<Plug>JavaImport. If not, then the filetype plugin defines the default -mapping. This starts with |<LocalLeader>|, which allows the user to select -the key(s) he wants filetype plugin mappings to start with. The default is a -backslash. -"<unique>" is used to give an error message if the mapping already exists or -overlaps with an existing mapping. -|:noremap| is used to avoid that any other mappings that the user has defined -interferes. You might want to use ":noremap <script>" to allow remapping -mappings defined in this script that start with <SID>. - -The user must have a chance to disable the mappings in a filetype plugin, -without disabling everything. Here is an example of how this is done for a -plugin for the mail filetype: > - - " Add mappings, unless the user didn't want this. - if !exists("no_plugin_maps") && !exists("no_mail_maps") - " Quote text by inserting "> " - if !hasmapto('<Plug>MailQuote') - vmap <buffer> <LocalLeader>q <Plug>MailQuote - nmap <buffer> <LocalLeader>q <Plug>MailQuote - endif - vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR> - nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR> - endif - -Two global variables are used: -no_plugin_maps disables mappings for all filetype plugins -no_mail_maps disables mappings for a specific filetype - - -USER COMMANDS - -To add a user command for a specific file type, so that it can only be used in -one buffer, use the "-buffer" argument to |:command|. Example: > - - :command -buffer Make make %:r.s - - -VARIABLES - -A filetype plugin will be sourced for each buffer of the type it's for. Local -script variables |s:var| will be shared between all invocations. Use local -buffer variables |b:var| if you want a variable specifically for one buffer. - - -FUNCTIONS - -When defining a function, this only needs to be done once. But the filetype -plugin will be sourced every time a file with this filetype will be opened. -This construct makes sure the function is only defined once: > - - :if !exists("*s:Func") - : function s:Func(arg) - : ... - : endfunction - :endif -< - -UNDO *undo_ftplugin* - -When the user does ":setfiletype xyz" the effect of the previous filetype -should be undone. Set the b:undo_ftplugin variable to the commands that will -undo the settings in your filetype plugin. Example: > - - let b:undo_ftplugin = "setlocal fo< com< tw< commentstring<" - \ . "| unlet b:match_ignorecase b:match_words b:match_skip" - -Using ":setlocal" with "<" after the option name resets the option to its -global value. That is mostly the best way to reset the option value. - -This does require removing the "C" flag from 'cpoptions' to allow line -continuation, as mentioned above |use-cpo-save|. - - -FILE NAME - -The filetype must be included in the file name |ftplugin-name|. Use one of -these three forms: - - .../ftplugin/stuff.vim - .../ftplugin/stuff_foo.vim - .../ftplugin/stuff/bar.vim - -"stuff" is the filetype, "foo" and "bar" are arbitrary names. - - -SUMMARY *ftplugin-special* - -Summary of special things to use in a filetype plugin: - -<LocalLeader> Value of "maplocalleader", which the user defines as - the keys that filetype plugin mappings start with. - -:map <buffer> Define a mapping local to the buffer. - -:noremap <script> Only remap mappings defined in this script that start - with <SID>. - -:setlocal Set an option for the current buffer only. - -:command -buffer Define a user command local to the buffer. - -exists("*s:Func") Check if a function was already defined. - -Also see |plugin-special|, the special things used for all plugins. - -============================================================================== -*41.13* Writing a compiler plugin *write-compiler-plugin* - -A compiler plugin sets options for use with a specific compiler. The user can -load it with the |:compiler| command. The main use is to set the -'errorformat' and 'makeprg' options. - -Easiest is to have a look at examples. This command will edit all the default -compiler plugins: > - - :next $VIMRUNTIME/compiler/*.vim - -Use |:next| to go to the next plugin file. - -There are two special items about these files. First is a mechanism to allow -a user to overrule or add to the default file. The default files start with: > - - :if exists("current_compiler") - : finish - :endif - :let current_compiler = "mine" - -When you write a compiler file and put it in your personal runtime directory -(e.g., ~/.vim/compiler for Unix), you set the "current_compiler" variable to -make the default file skip the settings. - *:CompilerSet* -The second mechanism is to use ":set" for ":compiler!" and ":setlocal" for -":compiler". Vim defines the ":CompilerSet" user command for this. However, -older Vim versions don't, thus your plugin should define it then. This is an -example: > - - if exists(":CompilerSet") != 2 - command -nargs=* CompilerSet setlocal <args> - endif - CompilerSet errorformat& " use the default 'errorformat' - CompilerSet makeprg=nmake - -When you write a compiler plugin for the Vim distribution or for a system-wide -runtime directory, use the mechanism mentioned above. When -"current_compiler" was already set by a user plugin nothing will be done. - -When you write a compiler plugin to overrule settings from a default plugin, -don't check "current_compiler". This plugin is supposed to be loaded -last, thus it should be in a directory at the end of 'runtimepath'. For Unix -that could be ~/.vim/after/compiler. - -============================================================================== -*41.14* Writing a plugin that loads quickly *write-plugin-quickload* - -A plugin may grow and become quite long. The startup delay may become -noticeable, while you hardly ever use the plugin. Then it's time for a -quickload plugin. - -The basic idea is that the plugin is loaded twice. The first time user -commands and mappings are defined that offer the functionality. The second -time the functions that implement the functionality are defined. - -It may sound surprising that quickload means loading a script twice. What we -mean is that it loads quickly the first time, postponing the bulk of the -script to the second time, which only happens when you actually use it. When -you always use the functionality it actually gets slower! - -Note that since Vim 7 there is an alternative: use the |autoload| -functionality |41.15|. - -The following example shows how it's done: > - - " Vim global plugin for demonstrating quick loading - " Last Change: 2005 Feb 25 - " Maintainer: Bram Moolenaar <Bram@vim.org> - " License: This file is placed in the public domain. - - if !exists("s:did_load") - command -nargs=* BNRead call BufNetRead(<f-args>) - map <F19> :call BufNetWrite('something')<CR> - - let s:did_load = 1 - exe 'au FuncUndefined BufNet* source ' . expand('<sfile>') - finish - endif - - function BufNetRead(...) - echo 'BufNetRead(' . string(a:000) . ')' - " read functionality here - endfunction - - function BufNetWrite(...) - echo 'BufNetWrite(' . string(a:000) . ')' - " write functionality here - endfunction - -When the script is first loaded "s:did_load" is not set. The commands between -the "if" and "endif" will be executed. This ends in a |:finish| command, thus -the rest of the script is not executed. - -The second time the script is loaded "s:did_load" exists and the commands -after the "endif" are executed. This defines the (possible long) -BufNetRead() and BufNetWrite() functions. - -If you drop this script in your plugin directory Vim will execute it on -startup. This is the sequence of events that happens: - -1. The "BNRead" command is defined and the <F19> key is mapped when the script - is sourced at startup. A |FuncUndefined| autocommand is defined. The - ":finish" command causes the script to terminate early. - -2. The user types the BNRead command or presses the <F19> key. The - BufNetRead() or BufNetWrite() function will be called. - -3. Vim can't find the function and triggers the |FuncUndefined| autocommand - event. Since the pattern "BufNet*" matches the invoked function, the - command "source fname" will be executed. "fname" will be equal to the name - of the script, no matter where it is located, because it comes from - expanding "<sfile>" (see |expand()|). - -4. The script is sourced again, the "s:did_load" variable exists and the - functions are defined. - -Notice that the functions that are loaded afterwards match the pattern in the -|FuncUndefined| autocommand. You must make sure that no other plugin defines -functions that match this pattern. - -============================================================================== -*41.15* Writing library scripts *write-library-script* - -Some functionality will be required in several places. When this becomes more -than a few lines you will want to put it in one script and use it from many -scripts. We will call that one script a library script. - -Manually loading a library script is possible, so long as you avoid loading it -when it's already done. You can do this with the |exists()| function. -Example: > - - if !exists('*MyLibFunction') - runtime library/mylibscript.vim - endif - call MyLibFunction(arg) - -Here you need to know that MyLibFunction() is defined in a script -"library/mylibscript.vim" in one of the directories in 'runtimepath'. - -To make this a bit simpler Vim offers the autoload mechanism. Then the -example looks like this: > - - call mylib#myfunction(arg) - -That's a lot simpler, isn't it? Vim will recognize the function name and when -it's not defined search for the script "autoload/mylib.vim" in 'runtimepath'. -That script must define the "mylib#myfunction()" function. - -You can put many other functions in the mylib.vim script, you are free to -organize your functions in library scripts. But you must use function names -where the part before the '#' matches the script name. Otherwise Vim would -not know what script to load. - -If you get really enthusiastic and write lots of library scripts, you may -want to use subdirectories. Example: > - - call netlib#ftp#read('somefile') - -For Unix the library script used for this could be: - - ~/.vim/autoload/netlib/ftp.vim - -Where the function is defined like this: > - - function netlib#ftp#read(fname) - " Read the file fname through ftp - endfunction - -Notice that the name the function is defined with is exactly the same as the -name used for calling the function. And the part before the last '#' -exactly matches the subdirectory and script name. - -You can use the same mechanism for variables: > - - let weekdays = dutch#weekdays - -This will load the script "autoload/dutch.vim", which should contain something -like: > - - let dutch#weekdays = ['zondag', 'maandag', 'dinsdag', 'woensdag', - \ 'donderdag', 'vrijdag', 'zaterdag'] - -Further reading: |autoload|. - -============================================================================== -*41.16* Distributing Vim scripts *distribute-script* - -Vim users will look for scripts on the Vim website: http://www.vim.org. -If you made something that is useful for others, share it! - -Vim scripts can be used on any system. There might not be a tar or gzip -command. If you want to pack files together and/or compress them the "zip" -utility is recommended. - -For utmost portability use Vim itself to pack scripts together. This can be -done with the Vimball utility. See |vimball|. - -It's good if you add a line to allow automatic updating. See |glvs-plugins|. - -============================================================================== - -Next chapter: |usr_42.txt| Add new menus - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_42.txt b/share/vim/vim73/doc/usr_42.txt deleted file mode 100644 index 82007a03..00000000 --- a/share/vim/vim73/doc/usr_42.txt +++ /dev/null @@ -1,365 +0,0 @@ -*usr_42.txt* For Vim version 7.3. Last change: 2008 May 05 - - VIM USER MANUAL - by Bram Moolenaar - - Add new menus - - -By now you know that Vim is very flexible. This includes the menus used in -the GUI. You can define your own menu entries to make certain commands easily -accessible. This is for mouse-happy users only. - -|42.1| Introduction -|42.2| Menu commands -|42.3| Various -|42.4| Toolbar and popup menus - - Next chapter: |usr_43.txt| Using filetypes - Previous chapter: |usr_41.txt| Write a Vim script -Table of contents: |usr_toc.txt| - -============================================================================== -*42.1* Introduction - -The menus that Vim uses are defined in the file "$VIMRUNTIME/menu.vim". If -you want to write your own menus, you might first want to look through that -file. - To define a menu item, use the ":menu" command. The basic form of this -command is as follows: > - - :menu {menu-item} {keys} - -The {menu-item} describes where on the menu to put the item. A typical -{menu-item} is "File.Save", which represents the item "Save" under the -"File" menu. A dot is used to separate the names. Example: > - - :menu File.Save :update<CR> - -The ":update" command writes the file when it was modified. - You can add another level: "Edit.Settings.Shiftwidth" defines a submenu -"Settings" under the "Edit" menu, with an item "Shiftwidth". You could use -even deeper levels. Don't use this too much, you need to move the mouse quite -a bit to use such an item. - The ":menu" command is very similar to the ":map" command: the left side -specifies how the item is triggered and the right hand side defines the -characters that are executed. {keys} are characters, they are used just like -you would have typed them. Thus in Insert mode, when {keys} is plain text, -that text is inserted. - - -ACCELERATORS - -The ampersand character (&) is used to indicate an accelerator. For instance, -you can use Alt-F to select "File" and S to select "Save". (The 'winaltkeys' -option may disable this though!). Therefore, the {menu-item} looks like -"&File.&Save". The accelerator characters will be underlined in the menu. - You must take care that each key is used only once in each menu. Otherwise -you will not know which of the two will actually be used. Vim doesn't warn -you for this. - - -PRIORITIES - -The actual definition of the File.Save menu item is as follows: > - - :menu 10.340 &File.&Save<Tab>:w :confirm w<CR> - -The number 10.340 is called the priority number. It is used by the editor to -decide where it places the menu item. The first number (10) indicates the -position on the menu bar. Lower numbered menus are positioned to the left, -higher numbers to the right. - These are the priorities used for the standard menus: - - 10 20 40 50 60 70 9999 - - +------------------------------------------------------------+ - | File Edit Tools Syntax Buffers Window Help | - +------------------------------------------------------------+ - -Notice that the Help menu is given a very high number, to make it appear on -the far right. - The second number (340) determines the location of the item within the -pull-down menu. Lower numbers go on top, higher number on the bottom. These -are the priorities in the File menu: - - +-----------------+ - 10.310 |Open... | - 10.320 |Split-Open... | - 10.325 |New | - 10.330 |Close | - 10.335 |---------------- | - 10.340 |Save | - 10.350 |Save As... | - 10.400 |---------------- | - 10.410 |Split Diff with | - 10.420 |Split Patched By | - 10.500 |---------------- | - 10.510 |Print | - 10.600 |---------------- | - 10.610 |Save-Exit | - 10.620 |Exit | - +-----------------+ - -Notice that there is room in between the numbers. This is where you can -insert your own items, if you really want to (it's often better to leave the -standard menus alone and add a new menu for your own items). - When you create a submenu, you can add another ".number" to the priority. -Thus each name in {menu-item} has its priority number. - - -SPECIAL CHARACTERS - -The {menu-item} in this example is "&File.&Save<Tab>:w". This brings up an -important point: {menu-item} must be one word. If you want to put a dot, -space or tabs in the name, you either use the <> notation (<Space> and <Tab>, -for instance) or use the backslash (\) escape. > - - :menu 10.305 &File.&Do\ It\.\.\. :exit<CR> - -In this example, the name of the menu item "Do It..." contains a space and the -command is ":exit<CR>". - -The <Tab> character in a menu name is used to separate the part that defines -the menu name from the part that gives a hint to the user. The part after the -<Tab> is displayed right aligned in the menu. In the File.Save menu the name -used is "&File.&Save<Tab>:w". Thus the menu name is "File.Save" and the hint -is ":w". - - -SEPARATORS - -The separator lines, used to group related menu items together, can be defined -by using a name that starts and ends in a '-'. For example "-sep-". When -using several separators the names must be different. Otherwise the names -don't matter. - The command from a separator will never be executed, but you have to define -one anyway. A single colon will do. Example: > - - :amenu 20.510 Edit.-sep3- : - -============================================================================== -*42.2* Menu commands - -You can define menu items that exist for only certain modes. This works just -like the variations on the ":map" command: - - :menu Normal, Visual and Operator-pending mode - :nmenu Normal mode - :vmenu Visual mode - :omenu Operator-pending mode - :menu! Insert and Command-line mode - :imenu Insert mode - :cmenu Command-line mode - :amenu All modes - -To avoid that the commands of a menu item are being mapped, use the command -":noremenu", ":nnoremenu", ":anoremenu", etc. - - -USING :AMENU - -The ":amenu" command is a bit different. It assumes that the {keys} you -give are to be executed in Normal mode. When Vim is in Visual or Insert mode -when the menu is used, Vim first has to go back to Normal mode. ":amenu" -inserts a CTRL-C or CTRL-O for you. For example, if you use this command: -> - :amenu 90.100 Mine.Find\ Word * - -Then the resulting menu commands will be: - - Normal mode: * - Visual mode: CTRL-C * - Operator-pending mode: CTRL-C * - Insert mode: CTRL-O * - Command-line mode: CTRL-C * - -When in Command-line mode the CTRL-C will abandon the command typed so far. -In Visual and Operator-pending mode CTRL-C will stop the mode. The CTRL-O in -Insert mode will execute the command and then return to Insert mode. - CTRL-O only works for one command. If you need to use two or more -commands, put them in a function and call that function. Example: > - - :amenu Mine.Next\ File :call <SID>NextFile()<CR> - :function <SID>NextFile() - : next - : 1/^Code - :endfunction - -This menu entry goes to the next file in the argument list with ":next". Then -it searches for the line that starts with "Code". - The <SID> before the function name is the script ID. This makes the -function local to the current Vim script file. This avoids problems when a -function with the same name is defined in another script file. See |<SID>|. - - -SILENT MENUS - -The menu executes the {keys} as if you typed them. For a ":" command this -means you will see the command being echoed on the command line. If it's a -long command, the hit-Enter prompt will appear. That can be very annoying! - To avoid this, make the menu silent. This is done with the <silent> -argument. For example, take the call to NextFile() in the previous example. -When you use this menu, you will see this on the command line: - - :call <SNR>34_NextFile() ~ - -To avoid this text on the command line, insert "<silent>" as the first -argument: > - - :amenu <silent> Mine.Next\ File :call <SID>NextFile()<CR> - -Don't use "<silent>" too often. It is not needed for short commands. If you -make a menu for someone else, being able the see the executed command will -give him a hint about what he could have typed, instead of using the mouse. - - -LISTING MENUS - -When a menu command is used without a {keys} part, it lists the already -defined menus. You can specify a {menu-item}, or part of it, to list specific -menus. Example: > - - :amenu - -This lists all menus. That's a long list! Better specify the name of a menu -to get a shorter list: > - - :amenu Edit - -This lists only the "Edit" menu items for all modes. To list only one -specific menu item for Insert mode: > - - :imenu Edit.Undo - -Take care that you type exactly the right name. Case matters here. But the -'&' for accelerators can be omitted. The <Tab> and what comes after it can be -left out as well. - - -DELETING MENUS - -To delete a menu, the same command is used as for listing, but with "menu" -changed to "unmenu". Thus ":menu" becomes, ":unmenu", ":nmenu" becomes -":nunmenu", etc. To delete the "Tools.Make" item for Insert mode: > - - :iunmenu Tools.Make - -You can delete a whole menu, with all its items, by using the menu name. -Example: > - - :aunmenu Syntax - -This deletes the Syntax menu and all the items in it. - -============================================================================== -*42.3* Various - -You can change the appearance of the menus with flags in 'guioptions'. In the -default value they are all included, except "M". You can remove a flag with a -command like: > - - :set guioptions-=m -< - m When removed the menubar is not displayed. - - M When added the default menus are not loaded. - - g When removed the inactive menu items are not made grey - but are completely removed. (Does not work on all - systems.) - - t When removed the tearoff feature is not enabled. - -The dotted line at the top of a menu is not a separator line. When you select -this item, the menu is "teared-off": It is displayed in a separate window. -This is called a tearoff menu. This is useful when you use the same menu -often. - -For translating menu items, see |:menutrans|. - -Since the mouse has to be used to select a menu item, it is a good idea to use -the ":browse" command for selecting a file. And ":confirm" to get a dialog -instead of an error message, e.g., when the current buffer contains changes. -These two can be combined: > - - :amenu File.Open :browse confirm edit<CR> - -The ":browse" makes a file browser appear to select the file to edit. The -":confirm" will pop up a dialog when the current buffer has changes. You can -then select to save the changes, throw them away or cancel the command. - For more complicated items, the confirm() and inputdialog() functions can -be used. The default menus contain a few examples. - -============================================================================== -*42.4* Toolbar and popup menus - -There are two special menus: ToolBar and PopUp. Items that start with these -names do not appear in the normal menu bar. - - -TOOLBAR - -The toolbar appears only when the "T" flag is included in the 'guioptions' -option. - The toolbar uses icons rather than text to represent the command. For -example, the {menu-item} named "ToolBar.New" causes the "New" icon to appear -on the toolbar. - The Vim editor has 28 built-in icons. You can find a table here: -|builtin-tools|. Most of them are used in the default toolbar. You can -redefine what these items do (after the default menus are setup). - You can add another bitmap for a toolbar item. Or define a new toolbar -item with a bitmap. For example, define a new toolbar item with: > - - :tmenu ToolBar.Compile Compile the current file - :amenu ToolBar.Compile :!cc % -o %:r<CR> - -Now you need to create the icon. For MS-Windows it must be in bitmap format, -with the name "Compile.bmp". For Unix XPM format is used, the file name is -"Compile.xpm". The size must be 18 by 18 pixels. On MS-Windows other sizes -can be used as well, but it will look ugly. - Put the bitmap in the directory "bitmaps" in one of the directories from -'runtimepath'. E.g., for Unix "~/.vim/bitmaps/Compile.xpm". - -You can define tooltips for the items in the toolbar. A tooltip is a short -text that explains what a toolbar item will do. For example "Open file". It -appears when the mouse pointer is on the item, without moving for a moment. -This is very useful if the meaning of the picture isn't that obvious. -Example: > - - :tmenu ToolBar.Make Run make in the current directory -< - Note: - Pay attention to the case used. "Toolbar" and "toolbar" are different - from "ToolBar"! - -To remove a tooltip, use the |:tunmenu| command. - -The 'toolbar' option can be used to display text instead of a bitmap, or both -text and a bitmap. Most people use just the bitmap, since the text takes -quite a bit of space. - - -POPUP MENU - -The popup menu pops up where the mouse pointer is. On MS-Windows you activate -it by clicking the right mouse button. Then you can select an item with the -left mouse button. On Unix the popup menu is used by pressing and holding the -right mouse button. - The popup menu only appears when the 'mousemodel' has been set to "popup" -or "popup_setpos". The difference between the two is that "popup_setpos" -moves the cursor to the mouse pointer position. When clicking inside a -selection, the selection will be used unmodified. When there is a selection -but you click outside of it, the selection is removed. - There is a separate popup menu for each mode. Thus there are never grey -items like in the normal menus. - -What is the meaning of life, the universe and everything? *42* -Douglas Adams, the only person who knew what this question really was about is -now dead, unfortunately. So now you might wonder what the meaning of death -is... - -============================================================================== - -Next chapter: |usr_43.txt| Using filetypes - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_43.txt b/share/vim/vim73/doc/usr_43.txt deleted file mode 100644 index 2d9fbf71..00000000 --- a/share/vim/vim73/doc/usr_43.txt +++ /dev/null @@ -1,173 +0,0 @@ -*usr_43.txt* For Vim version 7.3. Last change: 2008 Dec 28 - - VIM USER MANUAL - by Bram Moolenaar - - Using filetypes - - -When you are editing a file of a certain type, for example a C program or a -shell script, you often use the same option settings and mappings. You -quickly get tired of manually setting these each time. This chapter explains -how to do it automatically. - -|43.1| Plugins for a filetype -|43.2| Adding a filetype - - Next chapter: |usr_44.txt| Your own syntax highlighted - Previous chapter: |usr_42.txt| Add new menus -Table of contents: |usr_toc.txt| - -============================================================================== -*43.1* Plugins for a filetype *filetype-plugin* - -How to start using filetype plugins has already been discussed here: -|add-filetype-plugin|. But you probably are not satisfied with the default -settings, because they have been kept minimal. Suppose that for C files you -want to set the 'softtabstop' option to 4 and define a mapping to insert a -three-line comment. You do this with only two steps: - - *your-runtime-dir* -1. Create your own runtime directory. On Unix this usually is "~/.vim". In - this directory create the "ftplugin" directory: > - - mkdir ~/.vim - mkdir ~/.vim/ftplugin -< - When you are not on Unix, check the value of the 'runtimepath' option to - see where Vim will look for the "ftplugin" directory: > - - set runtimepath - -< You would normally use the first directory name (before the first comma). - You might want to prepend a directory name to the 'runtimepath' option in - your |vimrc| file if you don't like the default value. - -2. Create the file "~/.vim/ftplugin/c.vim", with the contents: > - - setlocal softtabstop=4 - noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc> - -Try editing a C file. You should notice that the 'softtabstop' option is set -to 4. But when you edit another file it's reset to the default zero. That is -because the ":setlocal" command was used. This sets the 'softtabstop' option -only locally to the buffer. As soon as you edit another buffer, it will be -set to the value set for that buffer. For a new buffer it will get the -default value or the value from the last ":set" command. - -Likewise, the mapping for "\c" will disappear when editing another buffer. -The ":map <buffer>" command creates a mapping that is local to the current -buffer. This works with any mapping command: ":map!", ":vmap", etc. The -|<LocalLeader>| in the mapping is replaced with the value of the -"maplocalleader" variable. - -You can find examples for filetype plugins in this directory: > - - $VIMRUNTIME/ftplugin/ - -More details about writing a filetype plugin can be found here: -|write-plugin|. - -============================================================================== -*43.2* Adding a filetype - -If you are using a type of file that is not recognized by Vim, this is how to -get it recognized. You need a runtime directory of your own. See -|your-runtime-dir| above. - -Create a file "filetype.vim" which contains an autocommand for your filetype. -(Autocommands were explained in section |40.3|.) Example: > - - augroup filetypedetect - au BufNewFile,BufRead *.xyz setf xyz - augroup END - -This will recognize all files that end in ".xyz" as the "xyz" filetype. The -":augroup" commands put this autocommand in the "filetypedetect" group. This -allows removing all autocommands for filetype detection when doing ":filetype -off". The "setf" command will set the 'filetype' option to its argument, -unless it was set already. This will make sure that 'filetype' isn't set -twice. - -You can use many different patterns to match the name of your file. Directory -names can also be included. See |autocmd-patterns|. For example, the files -under "/usr/share/scripts/" are all "ruby" files, but don't have the expected -file name extension. Adding this to the example above: > - - augroup filetypedetect - au BufNewFile,BufRead *.xyz setf xyz - au BufNewFile,BufRead /usr/share/scripts/* setf ruby - augroup END - -However, if you now edit a file /usr/share/scripts/README.txt, this is not a -ruby file. The danger of a pattern ending in "*" is that it quickly matches -too many files. To avoid trouble with this, put the filetype.vim file in -another directory, one that is at the end of 'runtimepath'. For Unix for -example, you could use "~/.vim/after/filetype.vim". - You now put the detection of text files in ~/.vim/filetype.vim: > - - augroup filetypedetect - au BufNewFile,BufRead *.txt setf text - augroup END - -That file is found in 'runtimepath' first. Then use this in -~/.vim/after/filetype.vim, which is found last: > - - augroup filetypedetect - au BufNewFile,BufRead /usr/share/scripts/* setf ruby - augroup END - -What will happen now is that Vim searches for "filetype.vim" files in each -directory in 'runtimepath'. First ~/.vim/filetype.vim is found. The -autocommand to catch *.txt files is defined there. Then Vim finds the -filetype.vim file in $VIMRUNTIME, which is halfway 'runtimepath'. Finally -~/.vim/after/filetype.vim is found and the autocommand for detecting ruby -files in /usr/share/scripts is added. - When you now edit /usr/share/scripts/README.txt, the autocommands are -checked in the order in which they were defined. The *.txt pattern matches, -thus "setf text" is executed to set the filetype to "text". The pattern for -ruby matches too, and the "setf ruby" is executed. But since 'filetype' was -already set to "text", nothing happens here. - When you edit the file /usr/share/scripts/foobar the same autocommands are -checked. Only the one for ruby matches and "setf ruby" sets 'filetype' to -ruby. - - -RECOGNIZING BY CONTENTS - -If your file cannot be recognized by its file name, you might be able to -recognize it by its contents. For example, many script files start with a -line like: - - #!/bin/xyz ~ - -To recognize this script create a file "scripts.vim" in your runtime directory -(same place where filetype.vim goes). It might look like this: > - - if did_filetype() - finish - endif - if getline(1) =~ '^#!.*[/\\]xyz\>' - setf xyz - endif - -The first check with did_filetype() is to avoid that you will check the -contents of files for which the filetype was already detected by the file -name. That avoids wasting time on checking the file when the "setf" command -won't do anything. - The scripts.vim file is sourced by an autocommand in the default -filetype.vim file. Therefore, the order of checks is: - - 1. filetype.vim files before $VIMRUNTIME in 'runtimepath' - 2. first part of $VIMRUNTIME/filetype.vim - 3. all scripts.vim files in 'runtimepath' - 4. remainder of $VIMRUNTIME/filetype.vim - 5. filetype.vim files after $VIMRUNTIME in 'runtimepath' - -If this is not sufficient for you, add an autocommand that matches all files -and sources a script or executes a function to check the contents of the file. - -============================================================================== - -Next chapter: |usr_44.txt| Your own syntax highlighted - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_44.txt b/share/vim/vim73/doc/usr_44.txt deleted file mode 100644 index 266708f6..00000000 --- a/share/vim/vim73/doc/usr_44.txt +++ /dev/null @@ -1,719 +0,0 @@ -*usr_44.txt* For Vim version 7.3. Last change: 2008 Dec 28 - - VIM USER MANUAL - by Bram Moolenaar - - Your own syntax highlighted - - -Vim comes with highlighting for a couple of hundred different file types. If -the file you are editing isn't included, read this chapter to find out how to -get this type of file highlighted. Also see |:syn-define| in the reference -manual. - -|44.1| Basic syntax commands -|44.2| Keywords -|44.3| Matches -|44.4| Regions -|44.5| Nested items -|44.6| Following groups -|44.7| Other arguments -|44.8| Clusters -|44.9| Including another syntax file -|44.10| Synchronizing -|44.11| Installing a syntax file -|44.12| Portable syntax file layout - - Next chapter: |usr_45.txt| Select your language - Previous chapter: |usr_43.txt| Using filetypes -Table of contents: |usr_toc.txt| - -============================================================================== -*44.1* Basic syntax commands - -Using an existing syntax file to start with will save you a lot of time. Try -finding a syntax file in $VIMRUNTIME/syntax for a language that is similar. -These files will also show you the normal layout of a syntax file. To -understand it, you need to read the following. - -Let's start with the basic arguments. Before we start defining any new -syntax, we need to clear out any old definitions: > - - :syntax clear - -This isn't required in the final syntax file, but very useful when -experimenting. - -There are more simplifications in this chapter. If you are writing a syntax -file to be used by others, read all the way through the end to find out the -details. - - -LISTING DEFINED ITEMS - -To check which syntax items are currently defined, use this command: > - - :syntax - -You can use this to check which items have actually been defined. Quite -useful when you are experimenting with a new syntax file. It also shows the -colors used for each item, which helps to find out what is what. - To list the items in a specific syntax group use: > - - :syntax list {group-name} - -This also can be used to list clusters (explained in |44.8|). Just include -the @ in the name. - - -MATCHING CASE - -Some languages are not case sensitive, such as Pascal. Others, such as C, are -case sensitive. You need to tell which type you have with the following -commands: > - :syntax case match - :syntax case ignore - -The "match" argument means that Vim will match the case of syntax elements. -Therefore, "int" differs from "Int" and "INT". If the "ignore" argument is -used, the following are equivalent: "Procedure", "PROCEDURE" and "procedure". - The ":syntax case" commands can appear anywhere in a syntax file and affect -the syntax definitions that follow. In most cases, you have only one ":syntax -case" command in your syntax file; if you work with an unusual language that -contains both case-sensitive and non-case-sensitive elements, however, you can -scatter the ":syntax case" command throughout the file. - -============================================================================== -*44.2* Keywords - -The most basic syntax elements are keywords. To define a keyword, use the -following form: > - - :syntax keyword {group} {keyword} ... - -The {group} is the name of a syntax group. With the ":highlight" command you -can assign colors to a {group}. The {keyword} argument is an actual keyword. -Here are a few examples: > - - :syntax keyword xType int long char - :syntax keyword xStatement if then else endif - -This example uses the group names "xType" and "xStatement". By convention, -each group name is prefixed by the filetype for the language being defined. -This example defines syntax for the x language (eXample language without an -interesting name). In a syntax file for "csh" scripts the name "cshType" -would be used. Thus the prefix is equal to the value of 'filetype'. - These commands cause the words "int", "long" and "char" to be highlighted -one way and the words "if", "then", "else" and "endif" to be highlighted -another way. Now you need to connect the x group names to standard Vim -names. You do this with the following commands: > - - :highlight link xType Type - :highlight link xStatement Statement - -This tells Vim to highlight "xType" like "Type" and "xStatement" like -"Statement". See |group-name| for the standard names. - - -UNUSUAL KEYWORDS - -The characters used in a keyword must be in the 'iskeyword' option. If you -use another character, the word will never match. Vim doesn't give a warning -message for this. - The x language uses the '-' character in keywords. This is how it's done: -> - :setlocal iskeyword+=- - :syntax keyword xStatement when-not - -The ":setlocal" command is used to change 'iskeyword' only for the current -buffer. Still it does change the behavior of commands like "w" and "*". If -that is not wanted, don't define a keyword but use a match (explained in the -next section). - -The x language allows for abbreviations. For example, "next" can be -abbreviated to "n", "ne" or "nex". You can define them by using this command: -> - :syntax keyword xStatement n[ext] - -This doesn't match "nextone", keywords always match whole words only. - -============================================================================== -*44.3* Matches - -Consider defining something a bit more complex. You want to match ordinary -identifiers. To do this, you define a match syntax item. This one matches -any word consisting of only lowercase letters: > - - :syntax match xIdentifier /\<\l\+\>/ -< - Note: - Keywords overrule any other syntax item. Thus the keywords "if", - "then", etc., will be keywords, as defined with the ":syntax keyword" - commands above, even though they also match the pattern for - xIdentifier. - -The part at the end is a pattern, like it's used for searching. The // is -used to surround the pattern (like how it's done in a ":substitute" command). -You can use any other character, like a plus or a quote. - -Now define a match for a comment. In the x language it is anything from # to -the end of a line: > - - :syntax match xComment /#.*/ - -Since you can use any search pattern, you can highlight very complex things -with a match item. See |pattern| for help on search patterns. - -============================================================================== -*44.4* Regions - -In the example x language, strings are enclosed in double quotation marks ("). -To highlight strings you define a region. You need a region start (double -quote) and a region end (double quote). The definition is as follows: > - - :syntax region xString start=/"/ end=/"/ - -The "start" and "end" directives define the patterns used to find the start -and end of the region. But what about strings that look like this? - - "A string with a double quote (\") in it" ~ - -This creates a problem: The double quotation marks in the middle of the string -will end the region. You need to tell Vim to skip over any escaped double -quotes in the string. Do this with the skip keyword: > - - :syntax region xString start=/"/ skip=/\\"/ end=/"/ - -The double backslash matches a single backslash, since the backslash is a -special character in search patterns. - -When to use a region instead of a match? The main difference is that a match -item is a single pattern, which must match as a whole. A region starts as -soon as the "start" pattern matches. Whether the "end" pattern is found or -not doesn't matter. Thus when the item depends on the "end" pattern to match, -you cannot use a region. Otherwise, regions are often simpler to define. And -it is easier to use nested items, as is explained in the next section. - -============================================================================== -*44.5* Nested items - -Take a look at this comment: - - %Get input TODO: Skip white space ~ - -You want to highlight TODO in big yellow letters, even though it is in a -comment that is highlighted blue. To let Vim know about this, you define the -following syntax groups: > - - :syntax keyword xTodo TODO contained - :syntax match xComment /%.*/ contains=xTodo - -In the first line, the "contained" argument tells Vim that this keyword can -exist only inside another syntax item. The next line has "contains=xTodo". -This indicates that the xTodo syntax element is inside it. The result is that -the comment line as a whole is matched with "xComment" and made blue. The -word TODO inside it is matched by xTodo and highlighted yellow (highlighting -for xTodo was setup for this). - - -RECURSIVE NESTING - -The x language defines code blocks in curly braces. And a code block may -contain other code blocks. This can be defined this way: > - - :syntax region xBlock start=/{/ end=/}/ contains=xBlock - -Suppose you have this text: - - while i < b { ~ - if a { ~ - b = c; ~ - } ~ - } ~ - -First a xBlock starts at the { in the first line. In the second line another -{ is found. Since we are inside a xBlock item, and it contains itself, a -nested xBlock item will start here. Thus the "b = c" line is inside the -second level xBlock region. Then a } is found in the next line, which matches -with the end pattern of the region. This ends the nested xBlock. Because the -} is included in the nested region, it is hidden from the first xBlock region. -Then at the last } the first xBlock region ends. - - -KEEPING THE END - -Consider the following two syntax items: > - - :syntax region xComment start=/%/ end=/$/ contained - :syntax region xPreProc start=/#/ end=/$/ contains=xComment - -You define a comment as anything from % to the end of the line. A -preprocessor directive is anything from # to the end of the line. Because you -can have a comment on a preprocessor line, the preprocessor definition -includes a "contains=xComment" argument. Now look what happens with this -text: - - #define X = Y % Comment text ~ - int foo = 1; ~ - -What you see is that the second line is also highlighted as xPreProc. The -preprocessor directive should end at the end of the line. That is why -you have used "end=/$/". So what is going wrong? - The problem is the contained comment. The comment starts with % and ends -at the end of the line. After the comment ends, the preprocessor syntax -continues. This is after the end of the line has been seen, so the next -line is included as well. - To avoid this problem and to avoid a contained syntax item eating a needed -end of line, use the "keepend" argument. This takes care of -the double end-of-line matching: > - - :syntax region xComment start=/%/ end=/$/ contained - :syntax region xPreProc start=/#/ end=/$/ contains=xComment keepend - - -CONTAINING MANY ITEMS - -You can use the contains argument to specify that everything can be contained. -For example: > - - :syntax region xList start=/\[/ end=/\]/ contains=ALL - -All syntax items will be contained in this one. It also contains itself, but -not at the same position (that would cause an endless loop). - You can specify that some groups are not contained. Thus contain all -groups but the ones that are listed: -> - :syntax region xList start=/\[/ end=/\]/ contains=ALLBUT,xString - -With the "TOP" item you can include all items that don't have a "contained" -argument. "CONTAINED" is used to only include items with a "contained" -argument. See |:syn-contains| for the details. - -============================================================================== -*44.6* Following groups - -The x language has statements in this form: - - if (condition) then ~ - -You want to highlight the three items differently. But "(condition)" and -"then" might also appear in other places, where they get different -highlighting. This is how you can do this: > - - :syntax match xIf /if/ nextgroup=xIfCondition skipwhite - :syntax match xIfCondition /([^)]*)/ contained nextgroup=xThen skipwhite - :syntax match xThen /then/ contained - -The "nextgroup" argument specifies which item can come next. This is not -required. If none of the items that are specified are found, nothing happens. -For example, in this text: - - if not (condition) then ~ - -The "if" is matched by xIf. "not" doesn't match the specified nextgroup -xIfCondition, thus only the "if" is highlighted. - -The "skipwhite" argument tells Vim that white space (spaces and tabs) may -appear in between the items. Similar arguments are "skipnl", which allows a -line break in between the items, and "skipempty", which allows empty lines. -Notice that "skipnl" doesn't skip an empty line, something must match after -the line break. - -============================================================================== -*44.7* Other arguments - -MATCHGROUP - -When you define a region, the entire region is highlighted according to the -group name specified. To highlight the text enclosed in parentheses () with -the group xInside, for example, use the following command: > - - :syntax region xInside start=/(/ end=/)/ - -Suppose, that you want to highlight the parentheses differently. You can do -this with a lot of convoluted region statements, or you can use the -"matchgroup" argument. This tells Vim to highlight the start and end of a -region with a different highlight group (in this case, the xParen group): > - - :syntax region xInside matchgroup=xParen start=/(/ end=/)/ - -The "matchgroup" argument applies to the start or end match that comes after -it. In the previous example both start and end are highlighted with xParen. -To highlight the end with xParenEnd: > - - :syntax region xInside matchgroup=xParen start=/(/ - \ matchgroup=xParenEnd end=/)/ - -A side effect of using "matchgroup" is that contained items will not match in -the start or end of the region. The example for "transparent" uses this. - - -TRANSPARENT - -In a C language file you would like to highlight the () text after a "while" -differently from the () text after a "for". In both of these there can be -nested () items, which should be highlighted in the same way. You must make -sure the () highlighting stops at the matching ). This is one way to do this: -> - :syntax region cWhile matchgroup=cWhile start=/while\s*(/ end=/)/ - \ contains=cCondNest - :syntax region cFor matchgroup=cFor start=/for\s*(/ end=/)/ - \ contains=cCondNest - :syntax region cCondNest start=/(/ end=/)/ contained transparent - -Now you can give cWhile and cFor different highlighting. The cCondNest item -can appear in either of them, but take over the highlighting of the item it is -contained in. The "transparent" argument causes this. - Notice that the "matchgroup" argument has the same group as the item -itself. Why define it then? Well, the side effect of using a matchgroup is -that contained items are not found in the match with the start item then. -This avoids that the cCondNest group matches the ( just after the "while" or -"for". If this would happen, it would span the whole text until the matching -) and the region would continue after it. Now cCondNest only matches after -the match with the start pattern, thus after the first (. - - -OFFSETS - -Suppose you want to define a region for the text between ( and ) after an -"if". But you don't want to include the "if" or the ( and ). You can do this -by specifying offsets for the patterns. Example: > - - :syntax region xCond start=/if\s*(/ms=e+1 end=/)/me=s-1 - -The offset for the start pattern is "ms=e+1". "ms" stands for Match Start. -This defines an offset for the start of the match. Normally the match starts -where the pattern matches. "e+1" means that the match now starts at the end -of the pattern match, and then one character further. - The offset for the end pattern is "me=s-1". "me" stands for Match End. -"s-1" means the start of the pattern match and then one character back. The -result is that in this text: - - if (foo == bar) ~ - -Only the text "foo == bar" will be highlighted as xCond. - -More about offsets here: |:syn-pattern-offset|. - - -ONELINE - -The "oneline" argument indicates that the region does not cross a line -boundary. For example: > - - :syntax region xIfThen start=/if/ end=/then/ oneline - -This defines a region that starts at "if" and ends at "then". But if there is -no "then" after the "if", the region doesn't match. - - Note: - When using "oneline" the region doesn't start if the end pattern - doesn't match in the same line. Without "oneline" Vim does _not_ - check if there is a match for the end pattern. The region starts even - when the end pattern doesn't match in the rest of the file. - - -CONTINUATION LINES AND AVOIDING THEM - -Things now become a little more complex. Let's define a preprocessor line. -This starts with a # in the first column and continues until the end of the -line. A line that ends with \ makes the next line a continuation line. The -way you handle this is to allow the syntax item to contain a continuation -pattern: > - - :syntax region xPreProc start=/^#/ end=/$/ contains=xLineContinue - :syntax match xLineContinue "\\$" contained - -In this case, although xPreProc normally matches a single line, the group -contained in it (namely xLineContinue) lets it go on for more than one line. -For example, it would match both of these lines: - - #define SPAM spam spam spam \ ~ - bacon and spam ~ - -In this case, this is what you want. If it is not what you want, you can call -for the region to be on a single line by adding "excludenl" to the contained -pattern. For example, you want to highlight "end" in xPreProc, but only at -the end of the line. To avoid making the xPreProc continue on the next line, -like xLineContinue does, use "excludenl" like this: > - - :syntax region xPreProc start=/^#/ end=/$/ - \ contains=xLineContinue,xPreProcEnd - :syntax match xPreProcEnd excludenl /end$/ contained - :syntax match xLineContinue "\\$" contained - -"excludenl" must be placed before the pattern. Since "xLineContinue" doesn't -have "excludenl", a match with it will extend xPreProc to the next line as -before. - -============================================================================== -*44.8* Clusters - -One of the things you will notice as you start to write a syntax file is that -you wind up generating a lot of syntax groups. Vim enables you to define a -collection of syntax groups called a cluster. - Suppose you have a language that contains for loops, if statements, while -loops, and functions. Each of them contains the same syntax elements: numbers -and identifiers. You define them like this: > - - :syntax match xFor /^for.*/ contains=xNumber,xIdent - :syntax match xIf /^if.*/ contains=xNumber,xIdent - :syntax match xWhile /^while.*/ contains=xNumber,xIdent - -You have to repeat the same "contains=" every time. If you want to add -another contained item, you have to add it three times. Syntax clusters -simplify these definitions by enabling you to have one cluster stand for -several syntax groups. - To define a cluster for the two items that the three groups contain, use -the following command: > - - :syntax cluster xState contains=xNumber,xIdent - -Clusters are used inside other syntax items just like any syntax group. -Their names start with @. Thus, you can define the three groups like this: > - - :syntax match xFor /^for.*/ contains=@xState - :syntax match xIf /^if.*/ contains=@xState - :syntax match xWhile /^while.*/ contains=@xState - -You can add new group names to this cluster with the "add" argument: > - - :syntax cluster xState add=xString - -You can remove syntax groups from this list as well: > - - :syntax cluster xState remove=xNumber - -============================================================================== -*44.9* Including another syntax file - -The C++ language syntax is a superset of the C language. Because you do not -want to write two syntax files, you can have the C++ syntax file read in the -one for C by using the following command: > - - :runtime! syntax/c.vim - -The ":runtime!" command searches 'runtimepath' for all "syntax/c.vim" files. -This makes the C parts of the C++ syntax be defined like for C files. If you -have replaced the c.vim syntax file, or added items with an extra file, these -will be loaded as well. - After loading the C syntax items the specific C++ items can be defined. -For example, add keywords that are not used in C: > - - :syntax keyword cppStatement new delete this friend using - -This works just like in any other syntax file. - -Now consider the Perl language. A Perl script consists of two distinct parts: -a documentation section in POD format, and a program written in Perl itself. -The POD section starts with "=head" and ends with "=cut". - You want to define the POD syntax in one file, and use it from the Perl -syntax file. The ":syntax include" command reads in a syntax file and stores -the elements it defined in a syntax cluster. For Perl, the statements are as -follows: > - - :syntax include @Pod <sfile>:p:h/pod.vim - :syntax region perlPOD start=/^=head/ end=/^=cut/ contains=@Pod - -When "=head" is found in a Perl file, the perlPOD region starts. In this -region the @Pod cluster is contained. All the items defined as top-level -items in the pod.vim syntax files will match here. When "=cut" is found, the -region ends and we go back to the items defined in the Perl file. - The ":syntax include" command is clever enough to ignore a ":syntax clear" -command in the included file. And an argument such as "contains=ALL" will -only contain items defined in the included file, not in the file that includes -it. - The "<sfile>:p:h/" part uses the name of the current file (<sfile>), -expands it to a full path (:p) and then takes the head (:h). This results in -the directory name of the file. This causes the pod.vim file in the same -directory to be included. - -============================================================================== -*44.10* Synchronizing - -Compilers have it easy. They start at the beginning of a file and parse it -straight through. Vim does not have it so easy. It must start in the middle, -where the editing is being done. So how does it tell where it is? - The secret is the ":syntax sync" command. This tells Vim how to figure out -where it is. For example, the following command tells Vim to scan backward -for the beginning or end of a C-style comment and begin syntax coloring from -there: > - - :syntax sync ccomment - -You can tune this processing with some arguments. The "minlines" argument -tells Vim the minimum number of lines to look backward, and "maxlines" tells -the editor the maximum number of lines to scan. - For example, the following command tells Vim to look at least 10 lines -before the top of the screen: > - - :syntax sync ccomment minlines=10 maxlines=500 - -If it cannot figure out where it is in that space, it starts looking farther -and farther back until it figures out what to do. But it looks no farther -back than 500 lines. (A large "maxlines" slows down processing. A small one -might cause synchronization to fail.) - To make synchronizing go a bit faster, tell Vim which syntax items can be -skipped. Every match and region that only needs to be used when actually -displaying text can be given the "display" argument. - By default, the comment to be found will be colored as part of the Comment -syntax group. If you want to color things another way, you can specify a -different syntax group: > - - :syntax sync ccomment xAltComment - -If your programming language does not have C-style comments in it, you can try -another method of synchronization. The simplest way is to tell Vim to space -back a number of lines and try to figure out things from there. The following -command tells Vim to go back 150 lines and start parsing from there: > - - :syntax sync minlines=150 - -A large "minlines" value can make Vim slower, especially when scrolling -backwards in the file. - Finally, you can specify a syntax group to look for by using this command: -> - :syntax sync match {sync-group-name} - \ grouphere {group-name} {pattern} - -This tells Vim that when it sees {pattern} the syntax group named {group-name} -begins just after the pattern given. The {sync-group-name} is used to give a -name to this synchronization specification. For example, the sh scripting -language begins an if statement with "if" and ends it with "fi": - - if [ --f file.txt ] ; then ~ - echo "File exists" ~ - fi ~ - -To define a "grouphere" directive for this syntax, you use the following -command: > - - :syntax sync match shIfSync grouphere shIf "\<if\>" - -The "groupthere" argument tells Vim that the pattern ends a group. For -example, the end of the if/fi group is as follows: > - - :syntax sync match shIfSync groupthere NONE "\<fi\>" - -In this example, the NONE tells Vim that you are not in any special syntax -region. In particular, you are not inside an if block. - -You also can define matches and regions that are with no "grouphere" or -"groupthere" arguments. These groups are for syntax groups skipped during -synchronization. For example, the following skips over anything inside {}, -even if it would normally match another synchronization method: > - - :syntax sync match xSpecial /{.*}/ - -More about synchronizing in the reference manual: |:syn-sync|. - -============================================================================== -*44.11* Installing a syntax file - -When your new syntax file is ready to be used, drop it in a "syntax" directory -in 'runtimepath'. For Unix that would be "~/.vim/syntax". - The name of the syntax file must be equal to the file type, with ".vim" -added. Thus for the x language, the full path of the file would be: - - ~/.vim/syntax/x.vim ~ - -You must also make the file type be recognized. See |43.2|. - -If your file works well, you might want to make it available to other Vim -users. First read the next section to make sure your file works well for -others. Then e-mail it to the Vim maintainer: <maintainer@vim.org>. Also -explain how the filetype can be detected. With a bit of luck your file will -be included in the next Vim version! - - -ADDING TO AN EXISTING SYNTAX FILE - -We were assuming you were adding a completely new syntax file. When an existing -syntax file works, but is missing some items, you can add items in a separate -file. That avoids changing the distributed syntax file, which will be lost -when installing a new version of Vim. - Write syntax commands in your file, possibly using group names from the -existing syntax. For example, to add new variable types to the C syntax file: -> - :syntax keyword cType off_t uint - -Write the file with the same name as the original syntax file. In this case -"c.vim". Place it in a directory near the end of 'runtimepath'. This makes -it loaded after the original syntax file. For Unix this would be: - - ~/.vim/after/syntax/c.vim ~ - -============================================================================== -*44.12* Portable syntax file layout - -Wouldn't it be nice if all Vim users exchange syntax files? To make this -possible, the syntax file must follow a few guidelines. - -Start with a header that explains what the syntax file is for, who maintains -it and when it was last updated. Don't include too much information about -changes history, not many people will read it. Example: > - - " Vim syntax file - " Language: C - " Maintainer: Bram Moolenaar <Bram@vim.org> - " Last Change: 2001 Jun 18 - " Remark: Included by the C++ syntax. - -Use the same layout as the other syntax files. Using an existing syntax file -as an example will save you a lot of time. - -Choose a good, descriptive name for your syntax file. Use lowercase letters -and digits. Don't make it too long, it is used in many places: The name of -the syntax file "name.vim", 'filetype', b:current_syntax and the start of each -syntax group (nameType, nameStatement, nameString, etc). - -Start with a check for "b:current_syntax". If it is defined, some other -syntax file, earlier in 'runtimepath' was already loaded: > - - if exists("b:current_syntax") - finish - endif - -To be compatible with Vim 5.8 use: > - - if version < 600 - syntax clear - elseif exists("b:current_syntax") - finish - endif - -Set "b:current_syntax" to the name of the syntax at the end. Don't forget -that included files do this too, you might have to reset "b:current_syntax" if -you include two files. - -If you want your syntax file to work with Vim 5.x, add a check for v:version. -See yacc.vim for an example. - -Do not include anything that is a user preference. Don't set 'tabstop', -'expandtab', etc. These belong in a filetype plugin. - -Do not include mappings or abbreviations. Only include setting 'iskeyword' if -it is really necessary for recognizing keywords. - -To allow users select their own preferred colors, make a different group name -for every kind of highlighted item. Then link each of them to one of the -standard highlight groups. That will make it work with every color scheme. -If you select specific colors it will look bad with some color schemes. And -don't forget that some people use a different background color, or have only -eight colors available. - -For the linking use "hi def link", so that the user can select different -highlighting before your syntax file is loaded. Example: > - - hi def link nameString String - hi def link nameNumber Number - hi def link nameCommand Statement - ... etc ... - -Add the "display" argument to items that are not used when syncing, to speed -up scrolling backwards and CTRL-L. - -============================================================================== - -Next chapter: |usr_45.txt| Select your language - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_45.txt b/share/vim/vim73/doc/usr_45.txt deleted file mode 100644 index 1026ee6f..00000000 --- a/share/vim/vim73/doc/usr_45.txt +++ /dev/null @@ -1,419 +0,0 @@ -*usr_45.txt* For Vim version 7.3. Last change: 2008 Nov 15 - - VIM USER MANUAL - by Bram Moolenaar - - Select your language - - -The messages in Vim can be given in several languages. This chapter explains -how to change which one is used. Also, the different ways to work with files -in various languages is explained. - -|45.1| Language for Messages -|45.2| Language for Menus -|45.3| Using another encoding -|45.4| Editing files with a different encoding -|45.5| Entering language text - - Next chapter: |usr_90.txt| Installing Vim - Previous chapter: |usr_44.txt| Your own syntax highlighted -Table of contents: |usr_toc.txt| - -============================================================================== -*45.1* Language for Messages - -When you start Vim, it checks the environment to find out what language you -are using. Mostly this should work fine, and you get the messages in your -language (if they are available). To see what the current language is, use -this command: > - - :language - -If it replies with "C", this means the default is being used, which is -English. - - Note: - Using different languages only works when Vim was compiled to handle - it. To find out if it works, use the ":version" command and check the - output for "+gettext" and "+multi_lang". If they are there, you are - OK. If you see "-gettext" or "-multi_lang" you will have to find - another Vim. - -What if you would like your messages in a different language? There are -several ways. Which one you should use depends on the capabilities of your -system. - The first way is to set the environment to the desired language before -starting Vim. Example for Unix: > - - env LANG=de_DE.ISO_8859-1 vim - -This only works if the language is available on your system. The advantage is -that all the GUI messages and things in libraries will use the right language -as well. A disadvantage is that you must do this before starting Vim. If you -want to change language while Vim is running, you can use the second method: > - - :language fr_FR.ISO_8859-1 - -This way you can try out several names for your language. You will get an -error message when it's not supported on your system. You don't get an error -when translated messages are not available. Vim will silently fall back to -using English. - To find out which languages are supported on your system, find the -directory where they are listed. On my system it is "/usr/share/locale". On -some systems it's in "/usr/lib/locale". The manual page for "setlocale" -should give you a hint where it is found on your system. - Be careful to type the name exactly as it should be. Upper and lowercase -matter, and the '-' and '_' characters are easily confused. - -You can also set the language separately for messages, edited text and the -time format. See |:language|. - - -DO-IT-YOURSELF MESSAGE TRANSLATION - -If translated messages are not available for your language, you could write -them yourself. To do this, get the source code for Vim and the GNU gettext -package. After unpacking the sources, instructions can be found in the -directory src/po/README.txt. - It's not too difficult to do the translation. You don't need to be a -programmer. You must know both English and the language you are translating -to, of course. - When you are satisfied with the translation, consider making it available -to others. Upload it at vim-online (http://vim.sf.net) or e-mail it to -the Vim maintainer <maintainer@vim.org>. Or both. - -============================================================================== -*45.2* Language for Menus - -The default menus are in English. To be able to use your local language, they -must be translated. Normally this is automatically done for you if the -environment is set for your language, just like with messages. You don't need -to do anything extra for this. But it only works if translations for the -language are available. - Suppose you are in Germany, with the language set to German, but prefer to -use "File" instead of "Datei". You can switch back to using the English menus -this way: > - - :set langmenu=none - -It is also possible to specify a language: > - - :set langmenu=nl_NL.ISO_8859-1 - -Like above, differences between "-" and "_" matter. However, upper/lowercase -differences are ignored here. - The 'langmenu' option must be set before the menus are loaded. Once the -menus have been defined changing 'langmenu' has no direct effect. Therefore, -put the command to set 'langmenu' in your vimrc file. - If you really want to switch menu language while running Vim, you can do it -this way: > - - :source $VIMRUNTIME/delmenu.vim - :set langmenu=de_DE.ISO_8859-1 - :source $VIMRUNTIME/menu.vim - -There is one drawback: All menus that you defined yourself will be gone. You -will need to redefine them as well. - - -DO-IT-YOURSELF MENU TRANSLATION - -To see which menu translations are available, look in this directory: - - $VIMRUNTIME/lang ~ - -The files are called menu_{language}.vim. If you don't see the language you -want to use, you can do your own translations. The simplest way to do this is -by copying one of the existing language files, and change it. - First find out the name of your language with the ":language" command. Use -this name, but with all letters made lowercase. Then copy the file to your -own runtime directory, as found early in 'runtimepath'. For example, for Unix -you would do: > - - :!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim - -You will find hints for the translation in "$VIMRUNTIME/lang/README.txt". - -============================================================================== -*45.3* Using another encoding - -Vim guesses that the files you are going to edit are encoded for your -language. For many European languages this is "latin1". Then each byte is -one character. That means there are 256 different characters possible. For -Asian languages this is not sufficient. These mostly use a double-byte -encoding, providing for over ten thousand possible characters. This still -isn't enough when a text is to contain several different languages. This is -where Unicode comes in. It was designed to include all characters used in -commonly used languages. This is the "Super encoding that replaces all -others". But it isn't used that much yet. - Fortunately, Vim supports these three kinds of encodings. And, with some -restrictions, you can use them even when your environment uses another -language than the text. - Nevertheless, when you only edit files that are in the encoding of your -language, the default should work fine and you don't need to do anything. The -following is only relevant when you want to edit different languages. - - Note: - Using different encodings only works when Vim was compiled to handle - it. To find out if it works, use the ":version" command and check the - output for "+multi_byte". If it's there, you are OK. If you see - "-multi_byte" you will have to find another Vim. - - -USING UNICODE IN THE GUI - -The nice thing about Unicode is that other encodings can be converted to it -and back without losing information. When you make Vim use Unicode -internally, you will be able to edit files in any encoding. - Unfortunately, the number of systems supporting Unicode is still limited. -Thus it's unlikely that your language uses it. You need to tell Vim you want -to use Unicode, and how to handle interfacing with the rest of the system. - Let's start with the GUI version of Vim, which is able to display Unicode -characters. This should work: > - - :set encoding=utf-8 - :set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 - -The 'encoding' option tells Vim the encoding of the characters that you use. -This applies to the text in buffers (files you are editing), registers, Vim -script files, etc. You can regard 'encoding' as the setting for the internals -of Vim. - This example assumes you have this font on your system. The name in the -example is for the X Window System. This font is in a package that is used to -enhance xterm with Unicode support. If you don't have this font, you might -find it here: - - http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz ~ - -For MS-Windows, some fonts have a limited number of Unicode characters. Try -using the "Courier New" font. You can use the Edit/Select Font... menu to -select and try out the fonts available. Only fixed-width fonts can be used -though. Example: > - - :set guifont=courier_new:h12 - -If it doesn't work well, try getting a fontpack. If Microsoft didn't move it, -you can find it here: - - http://www.microsoft.com/typography/fonts/default.aspx ~ - -Now you have told Vim to use Unicode internally and display text with a -Unicode font. Typed characters still arrive in the encoding of your original -language. This requires converting them to Unicode. Tell Vim the language -from which to convert with the 'termencoding' option. You can do it like -this: > - - :let &termencoding = &encoding - :set encoding=utf-8 - -This assigns the old value of 'encoding' to 'termencoding' before setting -'encoding' to utf-8. You will have to try out if this really works for your -setup. It should work especially well when using an input method for an Asian -language, and you want to edit Unicode text. - - -USING UNICODE IN A UNICODE TERMINAL - -There are terminals that support Unicode directly. The standard xterm that -comes with XFree86 is one of them. Let's use that as an example. - First of all, the xterm must have been compiled with Unicode support. See -|UTF8-xterm| how to check that and how to compile it when needed. - Start the xterm with the "-u8" argument. You might also need so specify a -font. Example: > - - xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 - -Now you can run Vim inside this terminal. Set 'encoding' to "utf-8" as -before. That's all. - - -USING UNICODE IN AN ORDINARY TERMINAL - -Suppose you want to work with Unicode files, but don't have a terminal with -Unicode support. You can do this with Vim, although characters that are not -supported by the terminal will not be displayed. The layout of the text -will be preserved. > - - :let &termencoding = &encoding - :set encoding=utf-8 - -This is the same as what was used for the GUI. But it works differently: Vim -will convert the displayed text before sending it to the terminal. That -avoids that the display is messed up with strange characters. - For this to work the conversion between 'termencoding' and 'encoding' must -be possible. Vim will convert from latin1 to Unicode, thus that always works. -For other conversions the |+iconv| feature is required. - Try editing a file with Unicode characters in it. You will notice that Vim -will put a question mark (or underscore or some other character) in places -where a character should be that the terminal can't display. Move the cursor -to a question mark and use this command: > - - ga - -Vim will display a line with the code of the character. This gives you a hint -about what character it is. You can look it up in a Unicode table. You could -actually view a file that way, if you have lots of time at hand. - - Note: - Since 'encoding' is used for all text inside Vim, changing it makes - all non-ASCII text invalid. You will notice this when using registers - and the 'viminfo' file (e.g., a remembered search pattern). It's - recommended to set 'encoding' in your vimrc file, and leave it alone. - -============================================================================== -*45.4* Editing files with a different encoding - -Suppose you have setup Vim to use Unicode, and you want to edit a file that is -in 16-bit Unicode. Sounds simple, right? Well, Vim actually uses utf-8 -encoding internally, thus the 16-bit encoding must be converted, since there -is a difference between the character set (Unicode) and the encoding (utf-8 or -16-bit). - Vim will try to detect what kind of file you are editing. It uses the -encoding names in the 'fileencodings' option. When using Unicode, the default -value is: "ucs-bom,utf-8,latin1". This means that Vim checks the file to see -if it's one of these encodings: - - ucs-bom File must start with a Byte Order Mark (BOM). This - allows detection of 16-bit, 32-bit and utf-8 Unicode - encodings. - utf-8 utf-8 Unicode. This is rejected when a sequence of - bytes is illegal in utf-8. - latin1 The good old 8-bit encoding. Always works. - -When you start editing that 16-bit Unicode file, and it has a BOM, Vim will -detect this and convert the file to utf-8 when reading it. The 'fileencoding' -option (without s at the end) is set to the detected value. In this case it -is "utf-16le". That means it's Unicode, 16-bit and little-endian. This -file format is common on MS-Windows (e.g., for registry files). - When writing the file, Vim will compare 'fileencoding' with 'encoding'. If -they are different, the text will be converted. - An empty value for 'fileencoding' means that no conversion is to be done. -Thus the text is assumed to be encoded with 'encoding'. - -If the default 'fileencodings' value is not good for you, set it to the -encodings you want Vim to try. Only when a value is found to be invalid will -the next one be used. Putting "latin1" first doesn't work, because it is -never illegal. An example, to fall back to Japanese when the file doesn't -have a BOM and isn't utf-8: > - - :set fileencodings=ucs-bom,utf-8,sjis - -See |encoding-values| for suggested values. Other values may work as well. -This depends on the conversion available. - - -FORCING AN ENCODING - -If the automatic detection doesn't work you must tell Vim what encoding the -file is. Example: > - - :edit ++enc=koi8-r russian.txt - -The "++enc" part specifies the name of the encoding to be used for this file -only. Vim will convert the file from the specified encoding, Russian in this -example, to 'encoding'. 'fileencoding' will also be set to the specified -encoding, so that the reverse conversion can be done when writing the file. - The same argument can be used when writing the file. This way you can -actually use Vim to convert a file. Example: > - - :write ++enc=utf-8 russian.txt -< - Note: - Conversion may result in lost characters. Conversion from an encoding - to Unicode and back is mostly free of this problem, unless there are - illegal characters. Conversion from Unicode to other encodings often - loses information when there was more than one language in the file. - -============================================================================== -*45.5* Entering language text - -Computer keyboards don't have much more than a hundred keys. Some languages -have thousands of characters, Unicode has ten thousands. So how do you type -these characters? - First of all, when you don't use too many of the special characters, you -can use digraphs. This was already explained in |24.9|. - When you use a language that uses many more characters than keys on your -keyboard, you will want to use an Input Method (IM). This requires learning -the translation from typed keys to resulting character. When you need an IM -you probably already have one on your system. It should work with Vim like -with other programs. For details see |mbyte-XIM| for the X Window system and -|mbyte-IME| for MS-Windows. - - -KEYMAPS - -For some languages the character set is different from latin, but uses a -similar number of characters. It's possible to map keys to characters. Vim -uses keymaps for this. - Suppose you want to type Hebrew. You can load the keymap like this: > - - :set keymap=hebrew - -Vim will try to find a keymap file for you. This depends on the value of -'encoding'. If no matching file was found, you will get an error message. - -Now you can type Hebrew in Insert mode. In Normal mode, and when typing a ":" -command, Vim automatically switches to English. You can use this command to -switch between Hebrew and English: > - - CTRL-^ - -This only works in Insert mode and Command-line mode. In Normal mode it does -something completely different (jumps to alternate file). - The usage of the keymap is indicated in the mode message, if you have the -'showmode' option set. In the GUI Vim will indicate the usage of keymaps with -a different cursor color. - You can also change the usage of the keymap with the 'iminsert' and -'imsearch' options. - -To see the list of mappings, use this command: > - - :lmap - -To find out which keymap files are available, in the GUI you can use the -Edit/Keymap menu. Otherwise you can use this command: > - - :echo globpath(&rtp, "keymap/*.vim") - - -DO-IT-YOURSELF KEYMAPS - -You can create your own keymap file. It's not very difficult. Start with -a keymap file that is similar to the language you want to use. Copy it to the -"keymap" directory in your runtime directory. For example, for Unix, you -would use the directory "~/.vim/keymap". - The name of the keymap file must look like this: - - keymap/{name}.vim ~ -or - keymap/{name}_{encoding}.vim ~ - -{name} is the name of the keymap. Chose a name that is obvious, but different -from existing keymaps (unless you want to replace an existing keymap file). -{name} cannot contain an underscore. Optionally, add the encoding used after -an underscore. Examples: - - keymap/hebrew.vim ~ - keymap/hebrew_utf-8.vim ~ - -The contents of the file should be self-explanatory. Look at a few of the -keymaps that are distributed with Vim. For the details, see |mbyte-keymap|. - - -LAST RESORT - -If all other methods fail, you can enter any character with CTRL-V: - - encoding type range ~ - 8-bit CTRL-V 123 decimal 0-255 - 8-bit CTRL-V x a1 hexadecimal 00-ff - 16-bit CTRL-V u 013b hexadecimal 0000-ffff - 31-bit CTRL-V U 001303a4 hexadecimal 00000000-7fffffff - -Don't type the spaces. See |i_CTRL-V_digit| for the details. - -============================================================================== - -Next chapter: |usr_90.txt| Installing Vim - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_90.txt b/share/vim/vim73/doc/usr_90.txt deleted file mode 100644 index 3b1358da..00000000 --- a/share/vim/vim73/doc/usr_90.txt +++ /dev/null @@ -1,498 +0,0 @@ -*usr_90.txt* For Vim version 7.3. Last change: 2008 Sep 10 - - VIM USER MANUAL - by Bram Moolenaar - - Installing Vim - - *install* -Before you can use Vim you have to install it. Depending on your system it's -simple or easy. This chapter gives a few hints and also explains how -upgrading to a new version is done. - -|90.1| Unix -|90.2| MS-Windows -|90.3| Upgrading -|90.4| Common installation issues -|90.5| Uninstalling Vim - - Previous chapter: |usr_45.txt| Select your language -Table of contents: |usr_toc.txt| - -============================================================================== -*90.1* Unix - -First you have to decide if you are going to install Vim system-wide or for a -single user. The installation is almost the same, but the directory where Vim -is installed in differs. - For a system-wide installation the base directory "/usr/local" is often -used. But this may be different for your system. Try finding out where other -packages are installed. - When installing for a single user, you can use your home directory as the -base. The files will be placed in subdirectories like "bin" and "shared/vim". - - -FROM A PACKAGE - -You can get precompiled binaries for many different UNIX systems. There is a -long list with links on this page: - - http://www.vim.org/binaries.html ~ - -Volunteers maintain the binaries, so they are often out of date. It is a -good idea to compile your own UNIX version from the source. Also, creating -the editor from the source allows you to control which features are compiled. -This does require a compiler though. - -If you have a Linux distribution, the "vi" program is probably a minimal -version of Vim. It doesn't do syntax highlighting, for example. Try finding -another Vim package in your distribution, or search on the web site. - - -FROM SOURCES - -To compile and install Vim, you will need the following: - - - A C compiler (GCC preferred) - - The GZIP program (you can get it from www.gnu.org) - - The Vim source and runtime archives - -To get the Vim archives, look in this file for a mirror near you, this should -provide the fastest download: - - ftp://ftp.vim.org/pub/vim/MIRRORS ~ - -Or use the home site ftp.vim.org, if you think it's fast enough. Go to the -"unix" directory and you'll find a list of files there. The version number is -embedded in the file name. You will want to get the most recent version. - You can get the files for Unix in two ways: One big archive that contains -everything, or four smaller ones that each fit on a floppy disk. For version -6.1 the single big one is called: - - vim-6.1.tar.bz2 ~ - -You need the bzip2 program to uncompress it. If you don't have it, get the -four smaller files, which can be uncompressed with gzip. For Vim 6.1 they are -called: - - vim-6.1-src1.tar.gz ~ - vim-6.1-src2.tar.gz ~ - vim-6.1-rt1.tar.gz ~ - vim-6.1-rt2.tar.gz ~ - - -COMPILING - -First create a top directory to work in, for example: > - - mkdir ~/vim - cd ~/vim - -Then unpack the archives there. If you have the one big archive, you unpack -it like this: > - - bzip2 -d -c path/vim-6.1.tar.bz2 | tar xf - - -Change "path" to where you have downloaded the file. > - - gzip -d -c path/vim-6.1-src1.tar.gz | tar xf - - gzip -d -c path/vim-6.1-src2.tar.gz | tar xf - - gzip -d -c path/vim-6.1-rt1.tar.gz | tar xf - - gzip -d -c path/vim-6.1-rt2.tar.gz | tar xf - - -If you are satisfied with getting the default features, and your environment -is setup properly, you should be able to compile Vim with just this: > - - cd vim61/src - make - -The make program will run configure and compile everything. Further on we -will explain how to compile with different features. - If there are errors while compiling, carefully look at the error messages. -There should be a hint about what went wrong. Hopefully you will be able to -correct it. You might have to disable some features to make Vim compile. -Look in the Makefile for specific hints for your system. - - -TESTING - -Now you can check if compiling worked OK: > - - make test - -This will run a sequence of test scripts to verify that Vim works as expected. -Vim will be started many times and all kinds of text and messages flash by. -If it is alright you will finally see: - - test results: ~ - ALL DONE ~ - -If you get "TEST FAILURE" some test failed. If there are one or two messages -about failed tests, Vim might still work, but not perfectly. If you see a lot -of error messages or Vim doesn't finish until the end, there must be something -wrong. Either try to find out yourself, or find someone who can solve it. -You could look in the |maillist-archive| for a solution. If everything else -fails, you could ask in the vim |maillist| if someone can help you. - - -INSTALLING - *install-home* -If you want to install in your home directory, edit the Makefile and search -for a line: - - #prefix = $(HOME) ~ - -Remove the # at the start of the line. - When installing for the whole system, Vim has most likely already selected -a good installation directory for you. You can also specify one, see below. -You need to become root for the following. - -To install Vim do: > - - make install - -That should move all the relevant files to the right place. Now you can try -running vim to verify that it works. Use two simple tests to check if Vim can -find its runtime files: > - - :help - :syntax enable - -If this doesn't work, use this command to check where Vim is looking for the -runtime files: > - - :echo $VIMRUNTIME - -You can also start Vim with the "-V" argument to see what happens during -startup: > - - vim -V - -Don't forget that the user manual assumes you Vim in a certain way. After -installing Vim, follow the instructions at |not-compatible| to make Vim work -as assumed in this manual. - - -SELECTING FEATURES - -Vim has many ways to select features. One of the simple ways is to edit the -Makefile. There are many directions and examples. Often you can enable or -disable a feature by uncommenting a line. - An alternative is to run "configure" separately. This allows you to -specify configuration options manually. The disadvantage is that you have to -figure out what exactly to type. - Some of the most interesting configure arguments follow. These can also be -enabled from the Makefile. - - --prefix={directory} Top directory where to install Vim. - - --with-features=tiny Compile with many features disabled. - --with-features=small Compile with some features disabled. - --with-features=big Compile with more features enabled. - --with-features=huge Compile with most features enabled. - See |+feature-list| for which feature - is enabled in which case. - - --enable-perlinterp Enable the Perl interface. There are - similar arguments for ruby, python and - tcl. - - --disable-gui Do not compile the GUI interface. - --without-x Do not compile X-windows features. - When both of these are used, Vim will - not connect to the X server, which - makes startup faster. - -To see the whole list use: > - - ./configure --help - -You can find a bit of explanation for each feature, and links for more -information here: |feature-list|. - For the adventurous, edit the file "feature.h". You can also change the -source code yourself! - -============================================================================== -*90.2* MS-Windows - -There are two ways to install the Vim program for Microsoft Windows. You can -uncompress several archives, or use a self-installing big archive. Most users -with fairly recent computers will prefer the second method. For the first -one, you will need: - - - An archive with binaries for Vim. - - The Vim runtime archive. - - A program to unpack the zip files. - -To get the Vim archives, look in this file for a mirror near you, this should -provide the fastest download: - - ftp://ftp.vim.org/pub/vim/MIRRORS ~ - -Or use the home site ftp.vim.org, if you think it's fast enough. Go to the -"pc" directory and you'll find a list of files there. The version number is -embedded in the file name. You will want to get the most recent version. -We will use "61" here, which is version 6.1. - - gvim61.exe The self-installing archive. - -This is all you need for the second method. Just launch the executable, and -follow the prompts. - -For the first method you must chose one of the binary archives. These are -available: - - gvim61.zip The normal MS-Windows GUI version. - gvim61ole.zip The MS-Windows GUI version with OLE support. - Uses more memory, supports interfacing with - other OLE applications. - vim61w32.zip 32 bit MS-Windows console version. For use in - a Win NT/2000/XP console. Does not work well - on Win 95/98. - vim61d32.zip 32 bit MS-DOS version. For use in the - Win 95/98 console window. - vim61d16.zip 16 bit MS-DOS version. Only for old systems. - Does not support long filenames. - -You only need one of them. Although you could install both a GUI and a -console version. You always need to get the archive with runtime files. - - vim61rt.zip The runtime files. - -Use your un-zip program to unpack the files. For example, using the "unzip" -program: > - - cd c:\ - unzip path\gvim61.zip - unzip path\vim61rt.zip - -This will unpack the files in the directory "c:\vim\vim61". If you already -have a "vim" directory somewhere, you will want to move to the directory just -above it. - Now change to the "vim\vim61" directory and run the install program: > - - install - -Carefully look through the messages and select the options you want to use. -If you finally select "do it" the install program will carry out the actions -you selected. - The install program doesn't move the runtime files. They remain where you -unpacked them. - -In case you are not satisfied with the features included in the supplied -binaries, you could try compiling Vim yourself. Get the source archive from -the same location as where the binaries are. You need a compiler for which a -makefile exists. Microsoft Visual C works, but is expensive. The Free -Borland command-line compiler 5.5 can be used, as well as the free MingW and -Cygwin compilers. Check the file src/INSTALLpc.txt for hints. - -============================================================================== -*90.3* Upgrading - -If you are running one version of Vim and want to install another, here is -what to do. - - -UNIX - -When you type "make install" the runtime files will be copied to a directory -which is specific for this version. Thus they will not overwrite a previous -version. This makes it possible to use two or more versions next to -each other. - The executable "vim" will overwrite an older version. If you don't care -about keeping the old version, running "make install" will work fine. You can -delete the old runtime files manually. Just delete the directory with the -version number in it and all files below it. Example: > - - rm -rf /usr/local/share/vim/vim58 - -There are normally no changed files below this directory. If you did change -the "filetype.vim" file, for example, you better merge the changes into the -new version before deleting it. - -If you are careful and want to try out the new version for a while before -switching to it, install the new version under another name. You need to -specify a configure argument. For example: > - - ./configure --with-vim-name=vim6 - -Before running "make install", you could use "make -n install" to check that -no valuable existing files are overwritten. - When you finally decide to switch to the new version, all you need to do is -to rename the binary to "vim". For example: > - - mv /usr/local/bin/vim6 /usr/local/bin/vim - - -MS-WINDOWS - -Upgrading is mostly equal to installing a new version. Just unpack the files -in the same place as the previous version. A new directory will be created, -e.g., "vim61", for the files of the new version. Your runtime files, vimrc -file, viminfo, etc. will be left alone. - If you want to run the new version next to the old one, you will have to do -some handwork. Don't run the install program, it will overwrite a few files -of the old version. Execute the new binaries by specifying the full path. -The program should be able to automatically find the runtime files for the -right version. However, this won't work if you set the $VIMRUNTIME variable -somewhere. - If you are satisfied with the upgrade, you can delete the files of the -previous version. See |90.5|. - -============================================================================== -*90.4* Common installation issues - -This section describes some of the common problems that occur when installing -Vim and suggests some solutions. It also contains answers to many -installation questions. - - -Q: I Do Not Have Root Privileges. How Do I Install Vim? (Unix) - -Use the following configuration command to install Vim in a directory called -$HOME/vim: > - - ./configure --prefix=$HOME - -This gives you a personal copy of Vim. You need to put $HOME/bin in your -path to execute the editor. Also see |install-home|. - - -Q: The Colors Are Not Right on My Screen. (Unix) - -Check your terminal settings by using the following command in a shell: > - - echo $TERM - -If the terminal type listed is not correct, fix it. For more hints, see -|06.2|. Another solution is to always use the GUI version of Vim, called -gvim. This avoids the need for a correct terminal setup. - - -Q: My Backspace And Delete Keys Don't Work Right - -The definition of what key sends what code is very unclear for backspace <BS> -and Delete <Del> keys. First of all, check your $TERM setting. If there is -nothing wrong with it, try this: > - - :set t_kb=^V<BS> - :set t_kD=^V<Del> - -In the first line you need to press CTRL-V and then hit the backspace key. -In the second line you need to press CTRL-V and then hit the Delete key. -You can put these lines in your vimrc file, see |05.1|. A disadvantage is -that it won't work when you use another terminal some day. Look here for -alternate solutions: |:fixdel|. - - -Q: I Am Using RedHat Linux. Can I Use the Vim That Comes with the System? - -By default RedHat installs a minimal version of Vim. Check your RPM packages -for something named "Vim-enhanced-version.rpm" and install that. - - -Q: How Do I Turn Syntax Coloring On? How do I make plugins work? - -Use the example vimrc script. You can find an explanation on how to use it -here: |not-compatible|. - -See chapter 6 for information about syntax highlighting: |usr_06.txt|. - - -Q: What Is a Good vimrc File to Use? - -See the www.vim.org Web site for several good examples. - - -Q: Where Do I Find a Good Vim Plugin? - -See the Vim-online site: http://vim.sf.net. Many users have uploaded useful -Vim scripts and plugins there. - - -Q: Where Do I Find More Tips? - -See the Vim-online site: http://vim.sf.net. There is an archive with hints -from Vim users. You might also want to search in the |maillist-archive|. - -============================================================================== -*90.5* Uninstalling Vim - -In the unlikely event you want to uninstall Vim completely, this is how you do -it. - - -UNIX - -When you installed Vim as a package, check your package manager to find out -how to remove the package again. - If you installed Vim from sources you can use this command: > - - make uninstall - -However, if you have deleted the original files or you used an archive that -someone supplied, you can't do this. Do delete the files manually, here is an -example for when "/usr/local" was used as the root: > - - rm -rf /usr/local/share/vim/vim61 - rm /usr/local/bin/eview - rm /usr/local/bin/evim - rm /usr/local/bin/ex - rm /usr/local/bin/gview - rm /usr/local/bin/gvim - rm /usr/local/bin/gvim - rm /usr/local/bin/gvimdiff - rm /usr/local/bin/rgview - rm /usr/local/bin/rgvim - rm /usr/local/bin/rview - rm /usr/local/bin/rvim - rm /usr/local/bin/rvim - rm /usr/local/bin/view - rm /usr/local/bin/vim - rm /usr/local/bin/vimdiff - rm /usr/local/bin/vimtutor - rm /usr/local/bin/xxd - rm /usr/local/man/man1/eview.1 - rm /usr/local/man/man1/evim.1 - rm /usr/local/man/man1/ex.1 - rm /usr/local/man/man1/gview.1 - rm /usr/local/man/man1/gvim.1 - rm /usr/local/man/man1/gvimdiff.1 - rm /usr/local/man/man1/rgview.1 - rm /usr/local/man/man1/rgvim.1 - rm /usr/local/man/man1/rview.1 - rm /usr/local/man/man1/rvim.1 - rm /usr/local/man/man1/view.1 - rm /usr/local/man/man1/vim.1 - rm /usr/local/man/man1/vimdiff.1 - rm /usr/local/man/man1/vimtutor.1 - rm /usr/local/man/man1/xxd.1 - - -MS-WINDOWS - -If you installed Vim with the self-installing archive you can run -the "uninstall-gui" program located in the same directory as the other Vim -programs, e.g. "c:\vim\vim61". You can also launch it from the Start menu if -installed the Vim entries there. This will remove most of the files, menu -entries and desktop shortcuts. Some files may remain however, as they need a -Windows restart before being deleted. - You will be given the option to remove the whole "vim" directory. It -probably contains your vimrc file and other runtime files that you created, so -be careful. - -Else, if you installed Vim with the zip archives, the preferred way is to use -the "uninstal" program (note the missing l at the end). You can find it in -the same directory as the "install" program, e.g., "c:\vim\vim61". This -should also work from the usual "install/remove software" page. - However, this only removes the registry entries for Vim. You have to -delete the files yourself. Simply select the directory "vim\vim61" and delete -it recursively. There should be no files there that you changed, but you -might want to check that first. - The "vim" directory probably contains your vimrc file and other runtime -files that you created. You might want to keep that. - -============================================================================== - -Table of contents: |usr_toc.txt| - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/usr_toc.txt b/share/vim/vim73/doc/usr_toc.txt deleted file mode 100644 index 5d360d51..00000000 --- a/share/vim/vim73/doc/usr_toc.txt +++ /dev/null @@ -1,354 +0,0 @@ -*usr_toc.txt* For Vim version 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - Table Of Contents *user-manual* - -============================================================================== -Overview ~ - -Getting Started -|usr_01.txt| About the manuals -|usr_02.txt| The first steps in Vim -|usr_03.txt| Moving around -|usr_04.txt| Making small changes -|usr_05.txt| Set your settings -|usr_06.txt| Using syntax highlighting -|usr_07.txt| Editing more than one file -|usr_08.txt| Splitting windows -|usr_09.txt| Using the GUI -|usr_10.txt| Making big changes -|usr_11.txt| Recovering from a crash -|usr_12.txt| Clever tricks - -Editing Effectively -|usr_20.txt| Typing command-line commands quickly -|usr_21.txt| Go away and come back -|usr_22.txt| Finding the file to edit -|usr_23.txt| Editing other files -|usr_24.txt| Inserting quickly -|usr_25.txt| Editing formatted text -|usr_26.txt| Repeating -|usr_27.txt| Search commands and patterns -|usr_28.txt| Folding -|usr_29.txt| Moving through programs -|usr_30.txt| Editing programs -|usr_31.txt| Exploiting the GUI -|usr_32.txt| The undo tree - -Tuning Vim -|usr_40.txt| Make new commands -|usr_41.txt| Write a Vim script -|usr_42.txt| Add new menus -|usr_43.txt| Using filetypes -|usr_44.txt| Your own syntax highlighted -|usr_45.txt| Select your language - -Making Vim Run -|usr_90.txt| Installing Vim - - -Reference manual -|reference_toc| More detailed information for all commands - -The user manual is available as a single, ready to print HTML and PDF file -here: - http://vimdoc.sf.net - -============================================================================== -Getting Started ~ - -Read this from start to end to learn the essential commands. - -|usr_01.txt| About the manuals - |01.1| Two manuals - |01.2| Vim installed - |01.3| Using the Vim tutor - |01.4| Copyright - -|usr_02.txt| The first steps in Vim - |02.1| Running Vim for the First Time - |02.2| Inserting text - |02.3| Moving around - |02.4| Deleting characters - |02.5| Undo and Redo - |02.6| Other editing commands - |02.7| Getting out - |02.8| Finding help - -|usr_03.txt| Moving around - |03.1| Word movement - |03.2| Moving to the start or end of a line - |03.3| Moving to a character - |03.4| Matching a paren - |03.5| Moving to a specific line - |03.6| Telling where you are - |03.7| Scrolling around - |03.8| Simple searches - |03.9| Simple search patterns - |03.10| Using marks - -|usr_04.txt| Making small changes - |04.1| Operators and motions - |04.2| Changing text - |04.3| Repeating a change - |04.4| Visual mode - |04.5| Moving text - |04.6| Copying text - |04.7| Using the clipboard - |04.8| Text objects - |04.9| Replace mode - |04.10| Conclusion - -|usr_05.txt| Set your settings - |05.1| The vimrc file - |05.2| The example vimrc file explained - |05.3| Simple mappings - |05.4| Adding a plugin - |05.5| Adding a help file - |05.6| The option window - |05.7| Often used options - -|usr_06.txt| Using syntax highlighting - |06.1| Switching it on - |06.2| No or wrong colors? - |06.3| Different colors - |06.4| With colors or without colors - |06.5| Printing with colors - |06.6| Further reading - -|usr_07.txt| Editing more than one file - |07.1| Edit another file - |07.2| A list of files - |07.3| Jumping from file to file - |07.4| Backup files - |07.5| Copy text between files - |07.6| Viewing a file - |07.7| Changing the file name - -|usr_08.txt| Splitting windows - |08.1| Split a window - |08.2| Split a window on another file - |08.3| Window size - |08.4| Vertical splits - |08.5| Moving windows - |08.6| Commands for all windows - |08.7| Viewing differences with vimdiff - |08.8| Various - -|usr_09.txt| Using the GUI - |09.1| Parts of the GUI - |09.2| Using the mouse - |09.3| The clipboard - |09.4| Select mode - -|usr_10.txt| Making big changes - |10.1| Record and playback commands - |10.2| Substitution - |10.3| Command ranges - |10.4| The global command - |10.5| Visual block mode - |10.6| Reading and writing part of a file - |10.7| Formatting text - |10.8| Changing case - |10.9| Using an external program - -|usr_11.txt| Recovering from a crash - |11.1| Basic recovery - |11.2| Where is the swap file? - |11.3| Crashed or not? - |11.4| Further reading - -|usr_12.txt| Clever tricks - |12.1| Replace a word - |12.2| Change "Last, First" to "First Last" - |12.3| Sort a list - |12.4| Reverse line order - |12.5| Count words - |12.6| Find a man page - |12.7| Trim blanks - |12.8| Find where a word is used - -============================================================================== -Editing Effectively ~ - -Subjects that can be read independently. - -|usr_20.txt| Typing command-line commands quickly - |20.1| Command line editing - |20.2| Command line abbreviations - |20.3| Command line completion - |20.4| Command line history - |20.5| Command line window - -|usr_21.txt| Go away and come back - |21.1| Suspend and resume - |21.2| Executing shell commands - |21.3| Remembering information; viminfo - |21.4| Sessions - |21.5| Views - |21.6| Modelines - -|usr_22.txt| Finding the file to edit - |22.1| The file explorer - |22.2| The current directory - |22.3| Finding a file - |22.4| The buffer list - -|usr_23.txt| Editing other files - |23.1| DOS, Mac and Unix files - |23.2| Files on the internet - |23.3| Encryption - |23.4| Binary files - |23.5| Compressed files - -|usr_24.txt| Inserting quickly - |24.1| Making corrections - |24.2| Showing matches - |24.3| Completion - |24.4| Repeating an insert - |24.5| Copying from another line - |24.6| Inserting a register - |24.7| Abbreviations - |24.8| Entering special characters - |24.9| Digraphs - |24.10| Normal mode commands - -|usr_25.txt| Editing formatted text - |25.1| Breaking lines - |25.2| Aligning text - |25.3| Indents and tabs - |25.4| Dealing with long lines - |25.5| Editing tables - -|usr_26.txt| Repeating - |26.1| Repeating with Visual mode - |26.2| Add and subtract - |26.3| Making a change in many files - |26.4| Using Vim from a shell script - -|usr_27.txt| Search commands and patterns - |27.1| Ignoring case - |27.2| Wrapping around the file end - |27.3| Offsets - |27.4| Matching multiple times - |27.5| Alternatives - |27.6| Character ranges - |27.7| Character classes - |27.8| Matching a line break - |27.9| Examples - -|usr_28.txt| Folding - |28.1| What is folding? - |28.2| Manual folding - |28.3| Working with folds - |28.4| Saving and restoring folds - |28.5| Folding by indent - |28.6| Folding with markers - |28.7| Folding by syntax - |28.8| Folding by expression - |28.9| Folding unchanged lines - |28.10| Which fold method to use? - -|usr_29.txt| Moving through programs - |29.1| Using tags - |29.2| The preview window - |29.3| Moving through a program - |29.4| Finding global identifiers - |29.5| Finding local identifiers - -|usr_30.txt| Editing programs - |30.1| Compiling - |30.2| Indenting C files - |30.3| Automatic indenting - |30.4| Other indenting - |30.5| Tabs and spaces - |30.6| Formatting comments - -|usr_31.txt| Exploiting the GUI - |31.1| The file browser - |31.2| Confirmation - |31.3| Menu shortcuts - |31.4| Vim window position and size - |31.5| Various - -|usr_32.txt| The undo tree - |32.1| Undo up to a file write - |32.2| Numbering changes - |32.3| Jumping around the tree - |32.4| Time travelling - -============================================================================== -Tuning Vim ~ - -Make Vim work as you like it. - -|usr_40.txt| Make new commands - |40.1| Key mapping - |40.2| Defining command-line commands - |40.3| Autocommands - -|usr_41.txt| Write a Vim script - |41.1| Introduction - |41.2| Variables - |41.3| Expressions - |41.4| Conditionals - |41.5| Executing an expression - |41.6| Using functions - |41.7| Defining a function - |41.8| Lists and Dictionaries - |41.9| Exceptions - |41.10| Various remarks - |41.11| Writing a plugin - |41.12| Writing a filetype plugin - |41.13| Writing a compiler plugin - |41.14| Writing a plugin that loads quickly - |41.15| Writing library scripts - |41.16| Distributing Vim scripts - -|usr_42.txt| Add new menus - |42.1| Introduction - |42.2| Menu commands - |42.3| Various - |42.4| Toolbar and popup menus - -|usr_43.txt| Using filetypes - |43.1| Plugins for a filetype - |43.2| Adding a filetype - -|usr_44.txt| Your own syntax highlighted - |44.1| Basic syntax commands - |44.2| Keywords - |44.3| Matches - |44.4| Regions - |44.5| Nested items - |44.6| Following groups - |44.7| Other arguments - |44.8| Clusters - |44.9| Including another syntax file - |44.10| Synchronizing - |44.11| Installing a syntax file - |44.12| Portable syntax file layout - -|usr_45.txt| Select your language - |45.1| Language for Messages - |45.2| Language for Menus - |45.3| Using another encoding - |45.4| Editing files with a different encoding - |45.5| Entering language text - -============================================================================== -Making Vim Run ~ - -Before you can use Vim. - -|usr_90.txt| Installing Vim - |90.1| Unix - |90.2| MS-Windows - |90.3| Upgrading - |90.4| Common installation issues - |90.5| Uninstalling Vim - -============================================================================== - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/various.txt b/share/vim/vim73/doc/various.txt deleted file mode 100644 index d3b15526..00000000 --- a/share/vim/vim73/doc/various.txt +++ /dev/null @@ -1,629 +0,0 @@ -*various.txt* For Vim version 7.3. Last change: 2010 Aug 10 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Various commands *various* - -1. Various commands |various-cmds| -2. Using Vim like less or more |less| - -============================================================================== -1. Various commands *various-cmds* - - *CTRL-L* -CTRL-L Clear and redraw the screen. The redraw may happen - later, after processing typeahead. - - *:redr* *:redraw* -:redr[aw][!] Redraw the screen right now. When ! is included it is - cleared first. - Useful to update the screen halfway executing a script - or function. Also when halfway a mapping and - 'lazyredraw' is set. - - *:redraws* *:redrawstatus* -:redraws[tatus][!] Redraw the status line of the current window. When ! - is included all status lines are redrawn. - Useful to update the status line(s) when 'statusline' - includes an item that doesn't cause automatic - updating. - - *N<Del>* -<Del> When entering a number: Remove the last digit. - Note: if you like to use <BS> for this, add this - mapping to your .vimrc: > - :map CTRL-V <BS> CTRL-V <Del> -< See |:fixdel| if your <Del> key does not do what you - want. - -:as[cii] or *ga* *:as* *:ascii* -ga Print the ascii value of the character under the - cursor in decimal, hexadecimal and octal. For - example, when the cursor is on a 'R': - <R> 82, Hex 52, Octal 122 ~ - When the character is a non-standard ASCII character, - but printable according to the 'isprint' option, the - non-printable version is also given. When the - character is larger than 127, the <M-x> form is also - printed. For example: - <~A> <M-^A> 129, Hex 81, Octal 201 ~ - <p> <|~> <M-~> 254, Hex fe, Octal 376 ~ - (where <p> is a special character) - The <Nul> character in a file is stored internally as - <NL>, but it will be shown as: - <^@> 0, Hex 00, Octal 000 ~ - If the character has composing characters these are - also shown. The value of 'maxcombine' doesn't matter. - Mnemonic: Get Ascii value. {not in Vi} - - *g8* -g8 Print the hex values of the bytes used in the - character under the cursor, assuming it is in |UTF-8| - encoding. This also shows composing characters. The - value of 'maxcombine' doesn't matter. - Example of a character with two composing characters: - e0 b8 81 + e0 b8 b9 + e0 b9 89 ~ - {not in Vi} {only when compiled with the |+multi_byte| - feature} - - *8g8* -8g8 Find an illegal UTF-8 byte sequence at or after the - cursor. This works in two situations: - 1. when 'encoding' is any 8-bit encoding - 2. when 'encoding' is "utf-8" and 'fileencoding' is - any 8-bit encoding - Thus it can be used when editing a file that was - supposed to be UTF-8 but was read as if it is an 8-bit - encoding because it contains illegal bytes. - Does not wrap around the end of the file. - Note that when the cursor is on an illegal byte or the - cursor is halfway a multi-byte character the command - won't move the cursor. - {not in Vi} {only when compiled with the |+multi_byte| - feature} - - *:p* *:pr* *:print* *E749* -:[range]p[rint] [flags] - Print [range] lines (default current line). - Note: If you are looking for a way to print your text - on paper see |:hardcopy|. In the GUI you can use the - File.Print menu entry. - See |ex-flags| for [flags]. - -:[range]p[rint] {count} [flags] - Print {count} lines, starting with [range] (default - current line |cmdline-ranges|). - See |ex-flags| for [flags]. - - *:P* *:Print* -:[range]P[rint] [count] [flags] - Just as ":print". Was apparently added to Vi for - people that keep the shift key pressed too long... - See |ex-flags| for [flags]. - - *:l* *:list* -:[range]l[ist] [count] [flags] - Same as :print, but display unprintable characters - with '^' and put $ after the line. This can be - changed with the 'listchars' option. - See |ex-flags| for [flags]. - - *:nu* *:number* -:[range]nu[mber] [count] [flags] - Same as :print, but precede each line with its line - number. (See also 'highlight' and 'numberwidth' - option). - See |ex-flags| for [flags]. - - *:#* -:[range]# [count] [flags] - synonym for :number. - - *:#!* -:#!{anything} Ignored, so that you can start a Vim script with: > - #!vim -S - echo "this is a Vim script" - quit -< - *:z* *E144* -:{range}z[+-^.=]{count} Display several lines of text surrounding the line - specified with {range}, or around the current line - if there is no {range}. If there is a {count}, that's - how many lines you'll see; if there is only one window - then the 'window' option is used, otherwise the - current window size is used. - - :z can be used either alone or followed by any of - several punctuation marks. These have the following - effect: - - mark first line last line new location ~ - ---- ---------- --------- ------------ - + current line 1 scr forward 1 scr forward - - 1 scr back current line current line - ^ 2 scr back 1 scr back 1 scr back - . 1/2 scr back 1/2 scr fwd 1/2 scr fwd - = 1/2 scr back 1/2 scr fwd current line - - Specifying no mark at all is the same as "+". - If the mark is "=", a line of dashes is printed - around the current line. - -:{range}z#[+-^.=]{count} *:z#* - Like ":z", but number the lines. - {not in all versions of Vi, not with these arguments} - - *:=* -:= [flags] Print the last line number. - See |ex-flags| for [flags]. - -:{range}= [flags] Prints the last line number in {range}. For example, - this prints the current line number: > - :.= -< See |ex-flags| for [flags]. - -:norm[al][!] {commands} *:norm* *:normal* - Execute Normal mode commands {commands}. This makes - it possible to execute Normal mode commands typed on - the command-line. {commands} is executed like it is - typed. For undo all commands are undone together. - Execution stops when an error is encountered. - If the [!] is given, mappings will not be used. - {commands} should be a complete command. If - {commands} does not finish a command, the last one - will be aborted as if <Esc> or <C-C> was typed. - The display isn't updated while ":normal" is busy. - This implies that an insert command must be completed - (to start Insert mode, see |:startinsert|). A ":" - command must be completed as well. And you can't use - "Q" or "gQ" to start Ex mode. - {commands} cannot start with a space. Put a count of - 1 (one) before it, "1 " is one space. - The 'insertmode' option is ignored for {commands}. - This command cannot be followed by another command, - since any '|' is considered part of the command. - This command can be used recursively, but the depth is - limited by 'maxmapdepth'. - When this command is called from a non-remappable - mapping |:noremap|, the argument can be mapped anyway. - An alternative is to use |:execute|, which uses an - expression as argument. This allows the use of - printable characters to represent special characters. - Example: > - :exe "normal \<c-w>\<c-w>" -< {not in Vi, of course} - {not available when the |+ex_extra| feature was - disabled at compile time} - -:{range}norm[al][!] {commands} *:normal-range* - Execute Normal mode commands {commands} for each line - in the {range}. Before executing the {commands}, the - cursor is positioned in the first column of the range, - for each line. Otherwise it's the same as the - ":normal" command without a range. - {not in Vi} - {not available when |+ex_extra| feature was disabled - at compile time} - - *:sh* *:shell* *E371* -:sh[ell] This command starts a shell. When the shell exits - (after the "exit" command) you return to Vim. The - name for the shell command comes from 'shell' option. - *E360* - Note: This doesn't work when Vim on the Amiga was - started in QuickFix mode from a compiler, because the - compiler will have set stdin to a non-interactive - mode. - - *:!cmd* *:!* *E34* -:!{cmd} Execute {cmd} with the shell. See also the 'shell' - and 'shelltype' option. - Any '!' in {cmd} is replaced with the previous - external command (see also 'cpoptions'). But not when - there is a backslash before the '!', then that - backslash is removed. Example: ":!ls" followed by - ":!echo ! \! \\!" executes "echo ls ! \!". - After the command has been executed, the timestamp of - the current file is checked |timestamp|. - A '|' in {cmd} is passed to the shell, you cannot use - it to append a Vim command. See |:bar|. - A newline character ends {cmd}, what follows is - interpreted as a following ":" command. However, if - there is a backslash before the newline it is removed - and {cmd} continues. It doesn't matter how many - backslashes are before the newline, only one is - removed. - On Unix the command normally runs in a non-interactive - shell. If you want an interactive shell to be used - (to use aliases) set 'shellcmdflag' to "-ic". - For Win32 also see |:!start|. - Vim redraws the screen after the command is finished, - because it may have printed any text. This requires a - hit-enter prompt, so that you can read any messages. - To avoid this use: > - :silent !{cmd} -< The screen is not redrawn then, thus you have to use - CTRL-L or ":redraw!" if the command did display - something. - Also see |shell-window|. - - *:!!* -:!! Repeat last ":!{cmd}". - - *:ve* *:version* -:ve[rsion] Print the version number of the editor. If the - compiler used understands "__DATE__" the compilation - date is mentioned. Otherwise a fixed release-date is - shown. - The following lines contain information about which - features were enabled when Vim was compiled. When - there is a preceding '+', the feature is included, - when there is a '-' it is excluded. To change this, - you have to edit feature.h and recompile Vim. - To check for this in an expression, see |has()|. - Here is an overview of the features. - The first column shows the smallest version in which - they are included: - T tiny - S small - N normal - B big - H huge - m manually enabled or depends on other features - (none) system dependent - Thus if a feature is marked with "N", it is included - in the normal, big and huge versions of Vim. - - *+feature-list* - *+ARP* Amiga only: ARP support included -B *+arabic* |Arabic| language support -N *+autocmd* |:autocmd|, automatic commands -m *+balloon_eval* |balloon-eval| support. Included when compiling with - supported GUI (Motif, GTK, GUI) and either - Netbeans/Sun Workshop integration or |+eval| feature. -N *+browse* |:browse| command -N *+builtin_terms* some terminals builtin |builtin-terms| -B *++builtin_terms* maximal terminals builtin |builtin-terms| -N *+byte_offset* support for 'o' flag in 'statusline' option, "go" - and ":goto" commands. -N *+cindent* |'cindent'|, C indenting -N *+clientserver* Unix and Win32: Remote invocation |clientserver| - *+clipboard* |clipboard| support -N *+cmdline_compl* command line completion |cmdline-completion| -N *+cmdline_hist* command line history |cmdline-history| -N *+cmdline_info* |'showcmd'| and |'ruler'| -N *+comments* |'comments'| support -B *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc. -N *+cryptv* encryption support |encryption| -B *+cscope* |cscope| support -m *+cursorbind* |'cursorbind'| support -m *+cursorshape* |termcap-cursor-shape| support -m *+debug* Compiled for debugging. -N *+dialog_gui* Support for |:confirm| with GUI dialog. -N *+dialog_con* Support for |:confirm| with console dialog. -N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog. -N *+diff* |vimdiff| and 'diff' -N *+digraphs* |digraphs| *E196* - *+dnd* Support for DnD into the "~ register |quote_~|. -B *+emacs_tags* |emacs-tags| files -N *+eval* expression evaluation |eval.txt| -N *+ex_extra* Vim's extra Ex commands: |:center|, |:left|, - |:normal|, |:retab| and |:right| -N *+extra_search* |'hlsearch'| and |'incsearch'| options. -B *+farsi* |farsi| language -N *+file_in_path* |gf|, |CTRL-W_f| and |<cfile>| -N *+find_in_path* include file searches: |[I|, |:isearch|, - |CTRL-W_CTRL-I|, |:checkpath|, etc. -N *+folding* |folding| - *+footer* |gui-footer| - *+fork* Unix only: |fork| shell commands - *+float* Floating point support -N *+gettext* message translations |multi-lang| - *+GUI_Athena* Unix only: Athena |GUI| - *+GUI_neXtaw* Unix only: neXtaw |GUI| - *+GUI_GTK* Unix only: GTK+ |GUI| - *+GUI_Motif* Unix only: Motif |GUI| - *+GUI_Photon* QNX only: Photon |GUI| -m *+hangul_input* Hangul input support |hangul| - *+iconv* Compiled with the |iconv()| function - *+iconv/dyn* Likewise |iconv-dynamic| |/dyn| -N *+insert_expand* |insert_expand| Insert mode completion -N *+jumplist* |jumplist| -B *+keymap* |'keymap'| -B *+langmap* |'langmap'| -N *+libcall* |libcall()| -N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'| -N *+lispindent* |'lisp'| -N *+listcmds* Vim commands for the list of buffers |buffer-hidden| - and argument list |:argdelete| -N *+localmap* Support for mappings local to a buffer |:map-local| -m *+lua* |Lua| interface -m *+lua/dyn* |Lua| interface |/dyn| -N *+menu* |:menu| -N *+mksession* |:mksession| -N *+modify_fname* |filename-modifiers| -N *+mouse* Mouse handling |mouse-using| -N *+mouseshape* |'mouseshape'| -B *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse| -N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse| -B *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse| -N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| -N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse| -N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| -B *+multi_byte* 16 and 32 bit characters |multibyte| - *+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime| -N *+multi_lang* non-English language support |multi-lang| -m *+mzscheme* Mzscheme interface |mzscheme| -m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn| -m *+netbeans_intg* |netbeans| -m *+ole* Win32 GUI only: |ole-interface| - *+osfiletype* Support for the 'osfiletype' option and filetype - checking in automatic commands. |autocmd-osfiletypes| -N *+path_extra* Up/downwards search in 'path' and 'tags' -m *+perl* Perl interface |perl| -m *+perl/dyn* Perl interface |perl-dynamic| |/dyn| -N *+persistent_undo* Persistent undo |undo-persistence| - *+postscript* |:hardcopy| writes a PostScript file -N *+printer* |:hardcopy| command -H *+profile* |:profile| command -m *+python* Python 2 interface |python| -m *+python/dyn* Python 2 interface |python-dynamic| |/dyn| -m *+python3* Python 3 interface |python| -m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn| -N *+quickfix* |:make| and |quickfix| commands -N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout, - 'redrawtime' option -B *+rightleft* Right to left typing |'rightleft'| -m *+ruby* Ruby interface |ruby| -m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn| -N *+scrollbind* |'scrollbind'| -B *+signs* |:sign| -N *+smartindent* |'smartindent'| -m *+sniff* SniFF interface |sniff| -N *+startuptime* |--startuptime| argument -N *+statusline* Options 'statusline', 'rulerformat' and special - formats of 'titlestring' and 'iconstring' -m *+sun_workshop* |workshop| -N *+syntax* Syntax highlighting |syntax| - *+system()* Unix only: opposite of |+fork| -N *+tag_binary* binary searching in tags file |tag-binary-search| -N *+tag_old_static* old method for static tags |tag-old-static| -m *+tag_any_white* any white space allowed in tags file |tag-any-white| -m *+tcl* Tcl interface |tcl| -m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn| - *+terminfo* uses |terminfo| instead of termcap -N *+termresponse* support for |t_RV| and |v:termresponse| -N *+textobjects* |text-objects| selection - *+tgetent* non-Unix only: able to use external termcap -N *+title* Setting the window 'title' and 'icon' -N *+toolbar* |gui-toolbar| -N *+user_commands* User-defined commands. |user-commands| -N *+viminfo* |'viminfo'| -N *+vertsplit* Vertically split windows |:vsplit| -N *+virtualedit* |'virtualedit'| -S *+visual* Visual mode |Visual-mode| -N *+visualextra* extra Visual mode commands |blockwise-operators| -N *+vreplace* |gR| and |gr| -N *+wildignore* |'wildignore'| -N *+wildmenu* |'wildmenu'| -S *+windows* more than one window -m *+writebackup* |'writebackup'| is default on -m *+xim* X input method |xim| - *+xfontset* X fontset support |xfontset| - *+xsmp* XSMP (X session management) support - *+xsmp_interact* interactive XSMP (X session management) support -N *+xterm_clipboard* Unix only: xterm clipboard handling -m *+xterm_save* save and restore xterm screen |xterm-screens| -N *+X11* Unix only: can restore window title |X11| - - */dyn* *E370* *E448* - To some of the features "/dyn" is added when the - feature is only available when the related library can - be dynamically loaded. - -:ve[rsion] {nr} Is now ignored. This was previously used to check the - version number of a .vimrc file. It was removed, - because you can now use the ":if" command for - version-dependent behavior. {not in Vi} - - *:redi* *:redir* -:redi[r][!] > {file} Redirect messages to file {file}. The messages which - are the output of commands are written to that file, - until redirection ends. The messages are also still - shown on the screen. When [!] is included, an - existing file is overwritten. When [!] is omitted, - and {file} exists, this command fails. - Only one ":redir" can be active at a time. Calls to - ":redir" will close any active redirection before - starting redirection to the new target. - To stop the messages and commands from being echoed to - the screen, put the commands in a function and call it - with ":silent call Function()". - An alternative is to use the 'verbosefile' option, - this can be used in combination with ":redir". - {not in Vi} - -:redi[r] >> {file} Redirect messages to file {file}. Append if {file} - already exists. {not in Vi} - -:redi[r] @{a-zA-Z} -:redi[r] @{a-zA-Z}> Redirect messages to register {a-z}. Append to the - contents of the register if its name is given - uppercase {A-Z}. The ">" after the register name is - optional. {not in Vi} -:redi[r] @{a-z}>> Append messages to register {a-z}. {not in Vi} - -:redi[r] @*> -:redi[r] @+> Redirect messages to the selection or clipboard. For - backward compatibility, the ">" after the register - name can be omitted. See |quotestar| and |quoteplus|. - {not in Vi} -:redi[r] @*>> -:redi[r] @+>> Append messages to the selection or clipboard. - {not in Vi} - -:redi[r] @"> Redirect messages to the unnamed register. For - backward compatibility, the ">" after the register - name can be omitted. {not in Vi} -:redi[r] @">> Append messages to the unnamed register. {not in Vi} - -:redi[r] => {var} Redirect messages to a variable. If the variable - doesn't exist, then it is created. If the variable - exists, then it is initialized to an empty string. - The variable will remain empty until redirection ends. - Only string variables can be used. After the - redirection starts, if the variable is removed or - locked or the variable type is changed, then further - command output messages will cause errors. {not in Vi} - -:redi[r] =>> {var} Append messages to an existing variable. Only string - variables can be used. {not in Vi} - -:redi[r] END End redirecting messages. {not in Vi} - - *:sil* *:silent* -:sil[ent][!] {command} Execute {command} silently. Normal messages will not - be given or added to the message history. - When [!] is added, error messages will also be - skipped, and commands and mappings will not be aborted - when an error is detected. |v:errmsg| is still set. - When [!] is not used, an error message will cause - further messages to be displayed normally. - Redirection, started with |:redir|, will continue as - usual, although there might be small differences. - This will allow redirecting the output of a command - without seeing it on the screen. Example: > - :redir >/tmp/foobar - :silent g/Aap/p - :redir END -< To execute a Normal mode command silently, use the - |:normal| command. For example, to search for a - string without messages: > - :silent exe "normal /path\<CR>" -< ":silent!" is useful to execute a command that may - fail, but the failure is to be ignored. Example: > - :let v:errmsg = "" - :silent! /^begin - :if v:errmsg != "" - : ... pattern was not found -< ":silent" will also avoid the hit-enter prompt. When - using this for an external command, this may cause the - screen to be messed up. Use |CTRL-L| to clean it up - then. - ":silent menu ..." defines a menu that will not echo a - Command-line command. The command will still produce - messages though. Use ":silent" in the command itself - to avoid that: ":silent menu .... :silent command". - - *:uns* *:unsilent* -:uns[ilent] {command} Execute {command} not silently. Only makes a - difference when |:silent| was used to get to this - command. - Use this for giving a message even when |:silent| was - used. In this example |:silent| is used to avoid the - message about reading the file and |:unsilent| to be - able to list the first line of each file. > - :silent argdo unsilent echo expand('%') . ": " . getline(1) -< - - *:verb* *:verbose* -:[count]verb[ose] {command} - Execute {command} with 'verbose' set to [count]. If - [count] is omitted one is used. ":0verbose" can be - used to set 'verbose' to zero. - The additional use of ":silent" makes messages - generated but not displayed. - The combination of ":silent" and ":verbose" can be - used to generate messages and check them with - |v:statusmsg| and friends. For example: > - :let v:statusmsg = "" - :silent verbose runtime foobar.vim - :if v:statusmsg != "" - : " foobar.vim could not be found - :endif -< When concatenating another command, the ":verbose" - only applies to the first one: > - :4verbose set verbose | set verbose -< verbose=4 ~ - verbose=0 ~ - For logging verbose messages in a file use the - 'verbosefile' option. - - *:verbose-cmd* -When 'verbose' is non-zero, listing the value of a Vim option or a key map or -an abbreviation or a user-defined function or a command or a highlight group -or an autocommand will also display where it was last defined. If it was -defined manually then there will be no "Last set" message. When it was -defined while executing a function, user command or autocommand, the script in -which it was defined is reported. -{not available when compiled without the |+eval| feature} - - *K* -K Run a program to lookup the keyword under the - cursor. The name of the program is given with the - 'keywordprg' (kp) option (default is "man"). The - keyword is formed of letters, numbers and the - characters in 'iskeyword'. The keyword under or - right of the cursor is used. The same can be done - with the command > - :!{program} {keyword} -< There is an example of a program to use in the tools - directory of Vim. It is called 'ref' and does a - simple spelling check. - Special cases: - - If 'keywordprg' is empty, the ":help" command is - used. It's a good idea to include more characters - in 'iskeyword' then, to be able to find more help. - - When 'keywordprg' is equal to "man", a count before - "K" is inserted after the "man" command and before - the keyword. For example, using "2K" while the - cursor is on "mkdir", results in: > - !man 2 mkdir -< - When 'keywordprg' is equal to "man -s", a count - before "K" is inserted after the "-s". If there is - no count, the "-s" is removed. - {not in Vi} - - *v_K* -{Visual}K Like "K", but use the visually highlighted text for - the keyword. Only works when the highlighted text is - not more than one line. {not in Vi} - -[N]gs *gs* *:sl* *:sleep* -:[N]sl[eep] [N] [m] Do nothing for [N] seconds. When [m] is included, - sleep for [N] milliseconds. The count for "gs" always - uses seconds. The default is one second. > - :sleep "sleep for one second - :5sleep "sleep for five seconds - :sleep 100m "sleep for a hundred milliseconds - 10gs "sleep for ten seconds -< Can be interrupted with CTRL-C (CTRL-Break on MS-DOS). - "gs" stands for "goto sleep". - While sleeping the cursor is positioned in the text, - if at a visible position. {not in Vi} - - *g_CTRL-A* -g CTRL-A Only when Vim was compiled with MEM_PROFILING defined - (which is very rare): print memory usage statistics. - Only useful for debugging Vim. - -============================================================================== -3. Using Vim like less or more *less* - -If you use the less or more program to view a file, you don't get syntax -highlighting. Thus you would like to use Vim instead. You can do this by -using the shell script "$VIMRUNTIME/macros/less.sh". - -This shell script uses the Vim script "$VIMRUNTIME/macros/less.vim". It sets -up mappings to simulate the commands that less supports. Otherwise, you can -still use the Vim commands. - -This isn't perfect. For example, when viewing a short file Vim will still use -the whole screen. But it works good enough for most uses, and you get syntax -highlighting. - -The "h" key will give you a short overview of the available commands. - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/version4.txt b/share/vim/vim73/doc/version4.txt deleted file mode 100644 index c652398c..00000000 --- a/share/vim/vim73/doc/version4.txt +++ /dev/null @@ -1,355 +0,0 @@ -*version4.txt* For Vim version 7.3. Last change: 2006 Apr 24 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -This document lists the incompatible differences between Vim 3.0 and Vim 4.0. -Although 4.0 is mentioned here, this is also for version 4.1, 4.2, etc.. - -This file is important for everybody upgrading from Vim 3.0. Read it -carefully to avoid unexpected problems. - -'backup' option default changed |backup-changed| -Extension for backup file changed |backup-extension| -Structure of swap file changed |swapfile-changed| -"-w scriptout" argument changed |scriptout-changed| -Backspace and Delete keys |backspace-delete| -Escape for | changed |escape-bar| -Key codes changed |key-codes-changed| -Terminal options changed |termcap-changed| -'errorformat' option changed |errorformat-changed| -'graphic' option gone |graphic-option-gone| -'yankendofline' option gone |ye-option-gone| -'icon' and 'title' default value changed |icon-changed| -'highlight' option changed |highlight-changed| -'tildeop' and 'weirdinvert' short names changed |short-name-changed| -Use of "v", "V" and "CTRL-V" in Visual mode |use-visual-cmds| -CTRL-B in Insert mode removed |toggle-revins| - - -'backup' option default changed *backup-changed* -------------------------------- - -The default value for 'backup' used to be on. This resulted in a backup file -being made when the original file was overwritten. - -Now the default for 'backup' is off. As soon as the writing of the file has -successfully finished, the backup file is deleted. If you want to keep the -backup file, set 'backup' on in your vimrc. The reason for this change is -that many people complained that leaving a backup file behind is not -Vi-compatible. |'backup'| - - -Extension for backup file changed *backup-extension* ---------------------------------- - -The extension for the backup file used to be ".bak". Since other programs -also use this extension and some users make copies with this extension, it was -changed to the less obvious "~". Another advantage is that this takes less -space, which is useful when working on a system with short file names. For -example, on MS-DOS the backup files for "longfile.c" and "longfile.h" would -both become "longfile.bak"; now they will be "longfile.c~" and "longfile.h~". - -If you prefer to use ".bak", you can set the 'backupext' option: > - :set bex=.bak - - -Structure of swap file changed *swapfile-changed* ------------------------------- - -The contents of the swap file were extended with several parameters. Vim -stores the user name and other information about the edited file to make -recovery more easy and to be able to know where the swap file comes from. The -first part of the swap file can now be understood on a machine with a -different byte order or sizeof(int). When you try to recover a file on such a -machine, you will get an error message that this is not possible. - -Because of this change, swap files cannot be exchanged between 3.0 and 4.0. -If you have a swap file from a crashed session with 3.0, use Vim 3.0 to -recover the file---don't use 4.0. |swap-file| - - -"-w scriptout" argument changed *scriptout-changed* -------------------------------- - -"vim -w scriptout" used to append to the scriptout file. Since this was -illogical, it now creates a new file. An existing file is not overwritten -(to avoid destroying an existing file for those who rely on the appending). -[This was removed again later] |-w| - - -Backspace and Delete keys *backspace-delete* -------------------------- - -In 3.0 both the delete key and the backspace key worked as a backspace in -insert mode; they deleted the character to the left of the cursor. In 4.0 the -delete key has a new function: it deletes the character under the cursor, just -like it does on the command-line. If the cursor is after the end of the line -and 'bs' is set, two lines are joined. |<Del>| |i_<Del>| - -In 3.0 the backspace key was always defined as CTRL-H and delete as CTRL-?. -In 4.0 the code for the backspace and delete key is obtained from termcap or -termlib, and adjusted for the "stty erase" value on Unix. This helps people -who define the erase character according to the keyboard they are working on. - |<BS>| |i_<BS>| - -If you prefer backspace and delete in Insert mode to have the old behavior, -put this line in your vimrc: - - inoremap ^? ^H - -And you may also want to add these, to fix the values for <BS> and <Del>: - - set t_kb=^H - set t_kD=^? - -(Enter ^H with CTRL-V CTRL-H and ^? with CTRL-V CTRL-? or <Del>.) - -If the value for t_kb is correct, but the t_kD value is not, use the ":fixdel" -command. It will set t_kD according to the value of t_kb. This is useful if -you are using several different terminals. |:fixdel| - -When ^H is not recognized as <BS> or <Del>, it is used like a backspace. - - -Escape for | changed *escape-bar* --------------------- - -When the 'b' flag is present in 'cpoptions', the backslash cannot be used to -escape '|' in mapping and abbreviate commands, only CTRL-V can. This is -Vi-compatible. If you work in Vi-compatible mode and had used "\|" to include -a bar in a mapping, this needs to be replaced by "^V|". See |:bar|. - - -Key codes changed *key-codes-changed* ------------------ - -The internal representation of key codes has changed dramatically. In 3.0 a -one-byte code was used to represent a key. This caused problems with -different characters sets that also used these codes. In 4.0 a three-byte -code is used that cannot be confused with a character. |key-notation| - -If you have used the single-byte key codes in your vimrc for mappings, you -will have to replace them with the 4.0 codes. Instead of using the three-byte -code directly, you should use the symbolic representation for this in <>. See -the table below. The table also lists the old name, as it was used in the 3.0 -documentation. - -The key names in <> can be used in mappings directly. This makes it possible -to copy/paste examples or type them literally. The <> notation has been -introduced for this |<>|. The 'B' and '<' flags must not be present in -'cpoptions' to enable this to work |'cpoptions'|. - -old name new name old code old MS-DOS code ~ - hex dec hex dec ~ -<ESC> <Esc> -<TAB> <Tab> -<LF> <NL> <NewLine> <LineFeed> -<SPACE> <Space> -<NUL> <Nul> -<BELL> <Bell> -<BS> <BS> <BackSpace> -<INSERT> <Insert> -<DEL> <Del> <Delete> -<HOME> <Home> -<END> <End> -<PAGE_UP> <PageUp> -<PAGE_DOWN> <PageDown> - -<C_UP> <Up> 0x80 128 0xb0 176 -<C_DOWN> <Down> 0x81 129 0xb1 177 -<C_LEFT> <Left> 0x82 130 0xb2 178 -<C_RIGHT> <Right> 0x83 131 0xb3 179 -<SC_UP> <S-Up> 0x84 132 0xb4 180 -<SC_DOWN> <S-Down> 0x85 133 0xb5 181 -<SC_LEFT> <S-Left> 0x86 134 0xb6 182 -<SC_RIGHT> <S-Right> 0x87 135 0xb7 183 - -<F1> <F1> 0x88 136 0xb8 184 -<F2> <F2> 0x89 137 0xb9 185 -<F3> <F3> 0x8a 138 0xba 186 -<F4> <F4> 0x8b 139 0xbb 187 -<F5> <F5> 0x8c 140 0xbc 188 -<F6> <F6> 0x8d 141 0xbd 189 -<F7> <F7> 0x8e 142 0xbe 190 -<F8> <F8> 0x8f 143 0xbf 191 -<F9> <F9> 0x90 144 0xc0 192 -<F10> <F10> 0x91 145 0xc1 193 - -<SF1> <S-F1> 0x92 146 0xc2 194 -<SF2> <S-F2> 0x93 147 0xc3 195 -<SF3> <S-F3> 0x94 148 0xc4 196 -<SF4> <S-F4> 0x95 149 0xc5 197 -<SF5> <S-F5> 0x96 150 0xc6 198 -<SF6> <S-F6> 0x97 151 0xc7 199 -<SF7> <S-F7> 0x98 152 0xc8 200 -<SF8> <S-F8> 0x99 153 0xc9 201 -<SF9> <S-F9> 0x9a 154 0xca 202 -<SF10> <S-F10> 0x9b 155 0xcb 203 - -<HELP> <Help> 0x9c 156 0xcc 204 -<UNDO> <Undo> 0x9d 157 0xcd 205 - - (not used) 0x9e 158 0xce 206 - (not used) 0x9f 159 0xcf 207 - - -Terminal options changed *termcap-changed* ------------------------- - -The names of the terminal options have been changed to match the termcap names -of these options. All terminal options now have the name t_xx, where xx is -the termcap name. Normally these options are not used, unless you have a -termcap entry that is wrong or incomplete, or you have set the highlight -options to a different value. |terminal-options| - -Note that for some keys there is no termcap name. Use the <> type of name -instead, which is a good idea anyway. - -Note that "t_ti" has become "t_mr" (invert/reverse output) and "t_ts" has -become "t_ti" (init terminal mode). Be careful when you use "t_ti"! - -old name new name meaning ~ -t_cdl t_DL delete number of lines *t_cdl* -t_ci t_vi cursor invisible *t_ci* -t_cil t_AL insert number of lines *t_cil* -t_cm t_cm move cursor -t_cri t_RI cursor number of chars right *t_cri* -t_cv t_ve cursor visible *t_cv* -t_cvv t_vs cursor very visible *t_cvv* -t_dl t_dl delete line -t_cs t_cs scroll region -t_ed t_cl clear display *t_ed* -t_el t_ce clear line *t_el* -t_il t_al insert line *t_il* - t_da display may be retained above the screen - t_db display may be retained below the screen -t_ke t_ke put terminal out of keypad transmit mode -t_ks t_ks put terminal in keypad transmit mode -t_ms t_ms save to move cursor in highlight mode -t_se t_se normal mode (undo t_so) -t_so t_so shift out (standout) mode -t_ti t_mr reverse highlight -t_tb t_md bold mode *t_tb* -t_tp t_me highlight end *t_tp* -t_sr t_sr scroll reverse -t_te t_te out of termcap mode -t_ts t_ti into termcap mode *t_ts_old* -t_vb t_vb visual bell -t_csc t_CS cursor is relative to scroll region *t_csc* - -t_ku t_ku <Up> arrow up -t_kd t_kd <Down> arrow down -t_kr t_kr <Right> arrow right -t_kl t_kl <Left> arrow left -t_sku <S-Up> shifted arrow up *t_sku* -t_skd <S-Down> shifted arrow down *t_skd* -t_skr t_%i <S-Right> shifted arrow right *t_skr* -t_skl t_#4 <S-Left> shifted arrow left *t_skl* -t_f1 t_k1 <F1> function key 1 *t_f1* -t_f2 t_k2 <F2> function key 2 *t_f2* -t_f3 t_k3 <F3> function key 3 *t_f3* -t_f4 t_k4 <F4> function key 4 *t_f4* -t_f5 t_k5 <F5> function key 5 *t_f5* -t_f6 t_k6 <F6> function key 6 *t_f6* -t_f7 t_k7 <F7> function key 7 *t_f7* -t_f8 t_k8 <F8> function key 8 *t_f8* -t_f9 t_k9 <F9> function key 9 *t_f9* -t_f10 t_k; <F10> function key 10 *t_f10* -t_sf1 <S-F1> shifted function key 1 *t_sf1* -t_sf2 <S-F2> shifted function key 2 *t_sf2* -t_sf3 <S-F3> shifted function key 3 *t_sf3* -t_sf4 <S-F4> shifted function key 4 *t_sf4* -t_sf5 <S-F5> shifted function key 5 *t_sf5* -t_sf6 <S-F6> shifted function key 6 *t_sf6* -t_sf7 <S-F7> shifted function key 7 *t_sf7* -t_sf8 <S-F8> shifted function key 8 *t_sf8* -t_sf9 <S-F9> shifted function key 9 *t_sf9* -t_sf10 <S-F10> shifted function key 10 *t_sf10* -t_help t_%1 <Help> help key *t_help* -t_undo t_&8 <Undo> undo key *t_undo* - - -'errorformat' option changed *errorformat-changed* ----------------------------- - -'errorformat' can now contain several formats, separated by commas. The first -format that matches is used. The default values have been adjusted to catch -the most common formats. |errorformat| - -If you have a format that contains a comma, it needs to be preceded with a -backslash. Type two backslashes, because the ":set" command will eat one. - - -'graphic' option gone *graphic-option-gone* ---------------------- - -The 'graphic' option was used to make the characters between <~> and 0xa0 -display directly on the screen. Now the 'isprint' option takes care of this -with many more possibilities. The default setting is the same; you only need -to look into this if you previously set the 'graphic' option in your vimrc. - |'isprint'| - - -'yankendofline' option gone *ye-option-gone* ---------------------------- - -The 'yankendofline' option has been removed. Instead you can just use - :map Y y$ - - -'icon' and 'title' default value changed *icon-changed* ----------------------------------------- - -The 'title' option is now only set by default if the original title can be -restored. Avoids "Thanks for flying Vim" titles. If you want them anyway, -put ":set title" in your vimrc. |'title'| - -The default for 'icon' now depends on the possibility of restoring the -original value, just like 'title'. If you don't like your icon titles to be -changed, add this line to your vimrc: |'icon'| - :set noicon - - -'highlight' option changed *highlight-changed* --------------------------- - -The 'i' flag now means italic highlighting, instead of invert. The 'r' flag -is used for reverse highlighting, which is what 'i' used to be. Normally you -won't see the difference, because italic mode is not supported on most -terminals and reverse mode is used as a fallback. |'highlight'| - -When an occasion is not present in 'highlight', use the mode from the default -value for 'highlight', instead of reverse mode. - - -'tildeop' and 'weirdinvert' short names changed *short-name-changed* ------------------------------------------------ - -Renamed 'to' (abbreviation for 'tildeop') to 'top'. |'tildeop'| -Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'. |'weirdinvert'| - -This was done because Vi uses 'wi' as the short name for 'window' and 'to' as -the short name for 'timeout'. This means that if you try setting these -options, you won't get an error message, but the effect will be different. - - -Use of "v", "V" and "CTRL-V" in Visual mode *use-visual-cmds* -------------------------------------------- - -In Visual mode, "v", "V", and "CTRL-V" used to end Visual mode. Now this -happens only if the Visual mode was in the corresponding type. Otherwise the -type of Visual mode is changed. Now only ESC can be used in all circumstances -to end Visual mode without doing anything. |v_V| - - -CTRL-B in Insert mode removed *toggle-revins* ------------------------------ - -CTRL-B in Insert mode used to toggle the 'revins' option. If you don't know -this and accidentally hit CTRL-B, it is very difficult to find out how to undo -it. Since hardly anybody uses this feature, it is disabled by default. If -you want to use it, define RIGHTLEFT in feature.h before compiling. |'revins'| - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/version5.txt b/share/vim/vim73/doc/version5.txt deleted file mode 100644 index 868d1290..00000000 --- a/share/vim/vim73/doc/version5.txt +++ /dev/null @@ -1,7813 +0,0 @@ -*version5.txt* For Vim version 7.3. Last change: 2008 Dec 17 - - - VIM REFERENCE MANUAL by Bram Moolenaar - -Welcome to Vim Version 5.0! - -This document lists the differences between Vim 4.x and Vim 5.0. -Although 5.0 is mentioned here, this is also for version 5.1, 5.2, etc.. -See |vi_diff.txt| for an overview of differences between Vi and Vim 5.0. -See |version4.txt| for differences between Vim 3.0 and Vim 4.0. - -INCOMPATIBLE: |incompatible-5| - -Default value for 'compatible' changed |cp-default| -Text formatting command "Q" changed |Q-command-changed| -Command-line arguments changed |cmdline-changed| -Autocommands are kept |autocmds-kept| -Use of 'hidden' changed |hidden-changed| -Text object commands changed |text-objects-changed| -X-Windows Resources removed |x-resources| -Use of $VIM |$VIM-use| -Use of $HOME for MS-DOS and Win32 |$HOME-use| -Tags file format changed |tags-file-changed| -Options changed |options-changed| -CTRL-B in Insert mode gone |i_CTRL-B-gone| - -NEW FEATURES: |new-5| - -Syntax highlighting |new-highlighting| -Built-in script language |new-script| -Perl and Python support |new-perl-python| -Win32 GUI version |added-win32-GUI| -VMS version |added-VMS| -BeOS version |added-BeOS| -Macintosh GUI version |added-Mac| -More Vi compatible |more-compatible| -Read input from stdin |read-stdin| -Regular expression patterns |added-regexp| -Overloaded tags |tag-overloaded| -New commands |new-commands| -New options |added-options| -New command-line arguments |added-cmdline-args| -Various additions |added-various| - -IMPROVEMENTS |improvements-5| - -COMPILE TIME CHANGES |compile-changes-5| - -BUG FIXES |bug-fixes-5| - -VERSION 5.1 |version-5.1| -Changed |changed-5.1| -Added |added-5.1| -Fixed |fixed-5.1| - -VERSION 5.2 |version-5.2| -Long lines editable |long-lines| -File browser added |file-browser-5.2| -Dialogs added |dialogs-added| -Popup menu added |popup-menu-added| -Select mode added |new-Select-mode| -Session files added |new-session-files| -User defined functions and commands |new-user-defined| -New interfaces |interfaces-5.2| -New ports |ports-5.2| -Multi-byte support |new-multi-byte| -New functions |new-functions-5.2| -New options |new-options-5.2| -New Ex commands |new-ex-commands-5.2| -Changed |changed-5.2| -Added |added-5.2| -Fixed |fixed-5.2| - -VERSION 5.3 |version-5.3| -Changed |changed-5.3| -Added |added-5.3| -Fixed |fixed-5.3| - -VERSION 5.4 |version-5.4| -Runtime directory introduced |new-runtime-dir| -Filetype introduced |new-filetype-5.4| -Vim script line continuation |new-line-continuation| -Improved session files |improved-sessions| -Autocommands improved |improved-autocmds-5.4| -Encryption |new-encryption| -GTK GUI port |new-GTK-GUI| -Menu changes |menu-changes-5.4| -Viminfo improved |improved-viminfo| -Various new commands |new-commands-5.4| -Various new options |new-options-5.4| -Vim scripts |new-script-5.4| -Avoid hit-enter prompt |avoid-hit-enter| -Improved quickfix |improved-quickfix| -Regular expressions |regexp-changes-5.4| -Changed |changed-5.4| -Added |added-5.4| -Fixed |fixed-5.4| - -VERSION 5.5 |version-5.5| -Changed |changed-5.5| -Added |added-5.5| -Fixed |fixed-5.5| - -VERSION 5.6 |version-5.6| -Changed |changed-5.6| -Added |added-5.6| -Fixed |fixed-5.6| - -VERSION 5.7 |version-5.7| -Changed |changed-5.7| -Added |added-5.7| -Fixed |fixed-5.7| - -VERSION 5.8 |version-5.8| -Changed |changed-5.8| -Added |added-5.8| -Fixed |fixed-5.8| - -============================================================================== - INCOMPATIBLE *incompatible-5* - -Default value for 'compatible' changed *cp-default* --------------------------------------- - -Vim version 5.0 tries to be more Vi compatible. This helps people who use Vim -as a drop-in replacement for Vi, but causes some things to be incompatible -with version 4.x. - -In version 4.x the default value for the 'compatible' option was off. Now the -default is on. The first thing you will notice is that the "u" command undoes -itself. Other side effects will be that mappings may work differently or not -work at all. - -Since a lot of people switching from Vim 4.x to 5.0 will find this annoying, -the 'compatible' option is switched off if Vim finds a vimrc file. This is a -bit of magic to make sure that 90% of the Vim users will not be bitten by -this change. - -What does this mean? -- If you prefer to run in 'compatible' mode and don't have a vimrc file, you - don't have to do anything. -- If you prefer to run in 'nocompatible' mode and do have a vimrc file, you - don't have to do anything. -- If you prefer to run in 'compatible' mode and do have a vimrc file, you - should put this line first in your vimrc file: > - :set compatible -- If you prefer to run in 'nocompatible' mode and don't have a vimrc file, - you can do one of the following: - - Create an empty vimrc file (e.g.: "~/.vimrc" for Unix). - - Put this command in your .exrc file or $EXINIT: > - :set nocompatible -< - Start Vim with the "-N" argument. - -If you are new to Vi and Vim, using 'nocompatible' is strongly recommended, -because Vi has a lot of unexpected side effects, which are avoided by this -setting. See 'compatible'. - -If you like some things from 'compatible' and some not, you can tune the -compatibility with 'cpoptions'. - -When you invoke Vim as "ex" or "gex", Vim always starts in compatible mode. - - -Text formatting command "Q" changed *Q-command-changed* ------------------------------------ - -The "Q" command formerly formatted lines to the width the 'textwidth' option -specifies. The command for this is now "gq" (see |gq| for more info). The -reason for this change is that "Q" is the standard Vi command to enter "Ex" -mode, and Vim now does in fact have an "Ex" mode (see |Q| for more info). - -If you still want to use "Q" for formatting, use this mapping: > - :noremap Q gq -And if you also want to use the functionality of "Q": > - :noremap gQ Q - - -Command-line arguments changed *cmdline-changed* ------------------------------- - -Command-line file-arguments and option-arguments can now be mixed. You can -give options after the file names. Example: > - vim main.c -g - -This is not possible when editing a file that starts with a '-'. Use the "--" -argument then |---|: > - vim -g -- -main.c - -"-v" now means to start Ex in Vi mode, use "-R" for read-only mode. -old: "vim -v file" |-v| -new: "vim -R file" |-R| - -"-e" now means to start Vi in Ex mode, use "-q" for quickfix. -old: "vim -e errorfile" |-e| -new: "vim -q errorfile" |-q| - -"-s" in Ex mode now means to run in silent (batch) mode. |-s-ex| - -"-x" reserved for crypt, use "-f" to avoid starting a new CLI (Amiga). -old: "vim -x file" |-x| -new: "vim -f file" |-f| - -Vim allows up to ten "+cmd" and "-c cmd" arguments. Previously Vim executed -only the last one. - -"-n" now overrides any setting for 'updatecount' in a vimrc file, but not in -a gvimrc file. - - -Autocommands are kept *autocmds-kept* ---------------------- - -Before version 5.0, autocommands with the same event, file name pattern, and -command could appear only once. This was fine for simple autocommands (like -setting option values), but for more complicated autocommands, where the same -command might appear twice, this restriction caused problems. Therefore -Vim stores all autocommands and keeps them in the order that they are defined. - -The most obvious side effect of this change is that when you source a vimrc -file twice, the autocommands in it will be defined twice. To avoid this, do -one of these: - -- Remove any autocommands that might potentially defined twice before - defining them. Example: > - :au! * *.ext - :au BufEnter *.ext ... - -- Put the autocommands inside an ":if" command. Example: > - if !exists("did_ext_autocmds") - let did_ext_autocmds = 1 - autocmd BufEnter *.ext ... - endif - -- Put your autocommands in a different autocommand group so you can remove - them before defining them |:augroup|: > - augroup uncompress - au! - au BufReadPost *.gz ... - augroup END - - -Use of 'hidden' changed *hidden-changed* ------------------------ - -In version 4.x, only some commands used the 'hidden' option. Now all commands -uses it whenever a buffer disappears from a window. - -Previously you could do ":buf xxx" in a changed buffer and that buffer would -then become hidden. Now you must set the 'hidden' option for this to work. - -The new behavior is simpler: whether Vim hides buffers no longer depends on -the specific command that you use. -- with 'hidden' not set, you never get hidden buffers. Exceptions are the - ":hide" and ":close!" commands and, in rare cases, where you would otherwise - lose changes to the buffer. -- With 'hidden' set, you almost never unload a buffer. Exceptions are the - ":bunload" or ":bdel" commands. - -":buffer" now supports a "!": abandon changes in current buffer. So do -":bnext", ":brewind", etc. - - -Text object commands changed *text-objects-changed* ----------------------------- - -Text object commands have new names. This allows more text objects and makes -characters available for other Visual mode commands. Since no more single -characters were available, text objects names now require two characters. -The first one is always 'i' or 'a'. - OLD NEW ~ - a aw a word |v_aw| - A aW a WORD |v_aW| - s as a sentence |v_as| - p ap a paragraph |v_ap| - S ab a () block |v_ab| - P aB a {} block |v_aB| - -There is another set of text objects that starts with "i", for "inner". These -select the same objects, but exclude white space. - - -X-Windows Resources removed *x-resources* --------------------------- - -Vim no longer supports the following X resources: -- boldColor -- italicColor -- underlineColor -- cursorColor - -Vim now uses highlight groups to set colors. This avoids the confusion of -using a bold Font, which would imply a certain color. See |:highlight| and -|gui-resources|. - - -Use of $VIM *$VIM-use* ------------ - -Vim now uses the VIM environment variable to find all Vim system files. This -includes the global vimrc, gvimrc, and menu.vim files and all on-line help -and syntax files. See |$VIM|. Starting with version 5.4, |$VIMRUNTIME| can -also be used. -For Unix, Vim sets a default value for $VIM when doing "make install". -When $VIM is not set, its default value is the directory from 'helpfile', -excluding "/doc/help.txt". - - -Use of $HOME for MS-DOS and Win32 *$HOME-use* ---------------------------------- - -The MS-DOS and Win32 versions of Vim now first check $HOME when searching for -a vimrc or exrc file and for reading/storing the viminfo file. Previously Vim -used $VIM for these systems, but this causes trouble on a system with several -users. Now Vim uses $VIM only when $HOME is not set or the file is not found -in $HOME. See |_vimrc|. - - -Tags file format changed *tags-file-changed* ------------------------- - -Only tabs are allowed to separate fields in a tags file. This allows for -spaces in a file name and is still Vi compatible. In previous versions of -Vim, any white space was allowed to separate the fields. If you have a file -which doesn't use a single tab between fields, edit the tags file and execute -this command: > - :%s/\(\S*\)\s\+\(\S*\)\s\+\(.*\)/\1\t\2\t\3/ - - -Options changed *options-changed* ---------------- - -The default value of 'errorfile' has changed from "errors.vim" to "errors.err". -The reason is that only Vim scripts should have the ".vim" extensions. - -The ":make" command no longer uses the 'errorfile' option. This prevents the -output of the ":make" command from overwriting a manually saved error file. -":make" uses the 'makeef' option instead. This also allows for generating a -unique name, to prevent concurrently running ":make" commands from overwriting -each other's files. - -With 'insertmode' set, a few more things change: -- <Esc> in Normal mode goes to Insert mode. -- <Esc> in Insert mode doesn't leave Insert mode. -- When doing ":set im", go to Insert mode immediately. - -Vim considers a buffer to be changed when the 'fileformat' (formerly the -'textmode' option) is different from the buffer's initial format. - - -CTRL-B in Insert mode gone *i_CTRL-B-gone* --------------------------- - -When Vim was compiled with the |+rightleft| feature, you could use CTRL-B to -toggle the 'revins' option. Unfortunately, some people hit the 'B' key -accidentally when trying to type CTRL-V or CTRL-N and then didn't know how to -undo this. Since toggling the 'revins' option can easily be done with the -mapping below, this use of the CTRL-B key is disabled. You can still use the -CTRL-_ key for this |i_CTRL-_|. > - :imap <C-B> <C-O>:set revins!<CR> - -============================================================================== - NEW FEATURES *new-5* - -Syntax highlighting *new-highlighting* -------------------- - -Vim now has a very flexible way to highlighting just about any type of file. -See |syntax|. Summary: > - :syntax on - -Colors and attributes can be set for the syntax highlighting, and also for -other highlighted items with the ':' flag in the 'highlight' option. All -highlighted items are assigned a highlight group which specifies their -highlighting. See |:highlight|. The default colors have been improved. - -You can use the "Normal" group to set the default fore/background colors for a -color terminal. For the GUI, you can use this group to specify the font, too. - -The "2html.vim" script can be used to convert any file that has syntax -highlighting to HTML. The colors will be exactly the same as how you see them -in Vim. With a HTML viewer you can also print the file with colors. - - -Built-in script language *new-script* ------------------------- - -A few extra commands and an expression evaluator enable you to write simple -but powerful scripts. Commands include ":if" and ":while". Expressions can -manipulate numbers and strings. You can use the '=' register to insert -directly the result of an expression. See |expression|. - - -Perl and Python support *new-perl-python* ------------------------ - -Vim can call Perl commands with ":perldo", ":perl", etc. See |perl|. -Patches made by Sven Verdoolaege and Matt Gerassimoff. - -Vim can call Python commands with ":python" and ":pyfile". See |python|. - -Both of these are only available when enabled at compile time. - - -Win32 GUI version *added-win32-GUI* ------------------ - -The GUI has been ported to MS Windows 95 and NT. All the features of the X11 -GUI are available to Windows users now. |gui-w32| -This also fixes problems with running the Win32 console version under Windows -95, where console support has always been bad. -There is also a version that supports OLE automation interface. |if_ole.txt| -Vim can be integrated with Microsoft Developer Studio using the VisVim DLL. -It is possible to produce a DLL version of gvim with Borland C++ (Aaron). - - -VMS version *added-VMS* ------------ - -Vim can now also be used on VMS systems. Port done by Henk Elbers. -This has not been tested much, but it should work. -Sorry, no documentation! - - -BeOS version *added-BeOS* ------------- - -Vim can be used on BeOS systems (including the BeBox). (Olaf Seibert) -See |os_beos.txt|. - - -Macintosh GUI version *added-Mac* ---------------------- - -Vim can now be used on the Macintosh. (Dany St-Amant) -It has not been tested much yet, be careful! -See |os_mac.txt|. - - -More Vi compatible *more-compatible* ------------------- - -There is now a real Ex mode. Started with the "Q" command, or by calling the -executable "ex" or "gex". |Ex-mode| - -Always allow multi-level undo, also in Vi compatible mode. When the 'u' flag -in 'cpoptions' is included, CTRL-R is used for repeating the undo or redo -(like "." in Nvi). - - -Read input from stdin *read-stdin* ---------------------- - -When using the "-" command-line argument, Vim reads its text input from stdin. -This can be used for putting Vim at the end of a pipe: > - grep "^a.*" *.c | vim - -See |--|. - - -Regular expression patterns *added-regexp* ---------------------------- - -Added specifying a range for the number of matches of an atom: "\{a,b}". |/\{| -Added the "shortest match" regexp "\{-}" (Webb). -Added "\s", matches a white character. Can replace "[ \t]". |/\s| -Added "\S", matches a non-white character. Can replace "[^ \t]". |/\S| - - -Overloaded tags *tag-overloaded* ---------------- - -When using a language like C++, there can be several tags for the same -tagname. Commands have been added to be able to jump to any of these -overloaded tags: -|:tselect| List matching tags, and jump to one of them. -|:stselect| Idem, and split window. -|g_CTRL-]| Do ":tselect" with the word under the cursor. - - After ":ta {tagname}" with multiple matches: -|:tnext| Go to next matching tag. -|:tprevious| Go to previous matching tag. -|:trewind| Go to first matching tag. -|:tlast| Go to last matching tag. - -The ":tag" command now also accepts wildcards. When doing command-line -completion on tags, case-insensitive matching is also available (at the end). - - -New commands *new-commands* ------------- - -|:amenu| Define menus for all modes, inserting a CTRL-O for Insert - mode, ESC for Visual and CTRL-C for Cmdline mode. "amenu" is - used for the default menus and the Syntax menu. - -|:augroup| Set group to be used for following autocommands. Allows the - grouping of autocommands to enable deletion of a specific - group. - -|:crewind| Go to first error. -|:clast| Go to last error. - -|:doautoall| Execute autocommands for all loaded buffers. - -|:echo| Echo its argument, which is an expression. Can be used to - display messages which include variables. - -|:execute| Execute its argument, which is an expression. Can be used to - built up an Ex command with anything. - -|:hide| Works like ":close". - -|:if| Conditional execution, for built-in script language. - -|:intro| Show introductory message. This is always executed when Vim - is started without file arguments. - -|:let| Assign a value to an internal variable. - -|:omap| Map only in operator-pending mode. Makes it possible to map - text-object commands. - -|:redir| Redirect output of messages to a file. - -|:update| Write when buffer has changed. - -|:while| While-loop for built-in script language. - -Visual mode: -|v_O| "O" in Visual block mode, moves the cursor to the other corner - horizontally. -|v_D| "D" in Visual block mode deletes till end of line. - -Insert mode: -|i_CTRL-]| Triggers abbreviation, without inserting any character. - - -New options *added-options* ------------ - -'background' Used for selecting highlight color defaults. Also used in - "syntax.vim" for selecting the syntax colors. Often set - automatically, depending on the terminal used. - -'complete' Specifies how Insert mode completion works. - -'eventignore' Makes it possible to ignore autocommands temporarily. - -'fileformat' Current file format. Replaces 'textmode'. -'fileformats' Possible file formats. Replaces 'textauto'. - New is that this also supports Macintosh format: A single <CR> - separates lines. - The default for 'fileformats' for MS-DOS, Win32 and OS/2 is - "dos,unix", also when 'compatible' set. Unix type files - didn't work anyway when 'fileformats' was empty. - -'guicursor' Set the cursor shape and blinking in various modes. - Default is to adjust the cursor for Insert and Replace mode, - and when an operator is pending. Blinking is default on. - -'fkmap' Farsi key mapping. - -'hlsearch' Highlight all matches with the last used search pattern. - -'hkmapp' Phonetic Hebrew mapping. (Ilya Dogolazky) - -'iconstring' Define the name of the icon, when not empty. (Version 5.2: the - string is used literally, a newline can be used to make two - lines.) - -'lazyredraw' Don't redraw the screen while executing macros, registers or - other not typed commands. - -'makeef' Errorfile to be used for ":make". "##" is replaced with a - unique number. Avoids that two Vim sessions overwrite each - others errorfile. The Unix default is "/tmp/vim##.err"; for - Amiga "t:vim##.Err, for others "vim##.err". - -'matchtime' 1/10s of a second to show a matching paren, when 'showmatch' - is set. Like Nvi. - -'mousehide' Hide mouse pointer in GUI when typing text. - -'nrformats' Defines what bases Vim will consider for numbers when using - the CTRL-A and CTRL-X commands. Default: "hex,octal". - -'shellxquote' Add extra quotes around the whole shell command, including - redirection. - -'softtabstop' Make typing behave like tabstop is set at this value, without - changing the value of 'tabstop'. Makes it more easy to keep - 'ts' at 8, while still getting four spaces for a <Tab>. - -'titlestring' String for the window title, when not empty. (Version 5.2: - this string is used literally, a newline can be used to make - two lines.) - -'verbose' Level of verbosity. Makes it possible to show which .vimrc, - .exrc, .viminfo files etc. are used for initializing. Also - to show autocommands that are being executed. Can also be set - by using the "-V" command-line argument. - - -New command-line arguments *added-cmdline-args* --------------------------- - -|-U| Set the gvimrc file to be used. Like "-u" for the vimrc. - -|-V| Set the 'verbose' option. E.g. "vim -V10". - -|-N| Start in non-compatible mode. - -|-C| Start in compatible mode. - -|-Z| Start in restricted mode, disallow shell commands. Can also - be done by calling the executable "rvim". - -|-h| Show usage information and exit. - - -Various additions *added-various* ------------------ - -Added support for SNiFF+ connection (submitted by Toni Leherbauer). Vim can -be used as an editor for SNiFF. No documentation available... - -For producing a bug report, the bugreport.vim script has been included. -Can be used with ":so $VIMRUNTIME/bugreport.vim", which creates the file -"bugreport.txt" in the current directory. |bugs| - -Added range to ":normal" command. Now you can repeat the same command for -each line in the range. |:normal-range| - -Included support for the Farsi language (Shiran). Only when enabled at -compile time. See |farsi|. - -============================================================================== - IMPROVEMENTS *improvements-5* - -Performance: -- When 'showcmd' was set, mappings would execute much more slowly because the - output would be flushed very often. Helps a lot when executing the "life" - macros with 'showcmd' set. -- Included patches for binary searching in tags file (David O'Neill). - Can be disabled by resetting the 'tagbsearch' option. -- Don't update the ruler when repeating insert (slowed it down a lot). -- For Unix, file name expansion is now done internally instead of starting a - shell for it. -- Expand environment variables with expand_env(), instead of calling the - shell. Makes ":so $VIMRUNTIME/syntax/syntax.vim" a LOT faster. -- Reduced output for cursor positioning: Use CR-LF for moving to first few - columns in next few lines; Don't output CR twice when using termios. -- Optimized cursor positioning. Use CR, BS and NL when it's shorter than - absolute cursor positioning. -- Disable redrawing while repeating insert "1000ii<Esc>". -- Made "d$" or "D" for long lines a lot faster (delete all characters at once, - instead of one by one). -- Access option table by first letter, instead of searching from start. -- Made setting special highlighting attributes a lot faster by using - highlight_attr[], instead of searching in the 'highlight' string. -- Don't show the mode when redrawing is disabled. -- When setting an option, only redraw the screen when required. -- Improved performance of Ex commands by using a lookup table for the first - character. - -Options: -'cinoptions' Added 'g' flag, for C++ scope declarations. -'cpoptions' Added 'E' flag: Disallow yanking, deleting, etc. empty text - area. Default is to allow empty yanks. When 'E' is included, - "y$" in an empty line now is handled as an error (Vi - compatible). - Added 'j' flag: Only add two spaces for a join after a '.', - not after a '?' or '!'. - Added 'A' flag: don't give ATTENTION message. - Added 'L' flag: When not included, and 'list' is set, - 'textwidth' formatting works like 'list' is not set. - Added 'W' flag: Let ":w!" behave like Vi: don't overwrite - readonly files, or a file owned by someone else. -'highlight' Added '@' flag, for '@' characters after the last line on the - screen, and '$' at the end of the line when 'list' is set. - Added 'i' flag: Set highlighting for 'incsearch'. Default - uses "IncSearch" highlight group, which is linked to "Visual". - Disallow 'h' flag in 'highlight' (wasn't used anymore since - 3.0). -'guifont' Win32 GUI only: When set to "*" brings up a font requester. -'guipty' Default on, because so many people need it. -'path' Can contain wildcards, and "**" for searching a whole tree. -'shortmess' Added 'I' flag to avoid the intro message. -'viminfo' Added '%' flag: Store buffer list in viminfo file. - -- Increased defaults for 'maxmem' and 'maxmemtot' for Unix and Win32. Most - machines have much more RAM now that prices have dropped. -- Implemented ":set all&", set all options to their default value. |:set| - -Swap file: -- Don't create a swap file for a readonly file. Then create one on the first - change. Also create a swapfile when the amount of memory used is getting - too high. |swap-file| -- Make swap file "hidden", if possible. On Unix this is done by prepending a - dot to the swap file name. When long file names are used, the DJGPP and - Win32 versions also prepend a dot, in case a file on a mounted Unix file - system is edited. |:swapname| On MSDOS the hidden file attribute is NOT - set, because this causes problems with share.exe. -- 'updatecount' always defaults to non-zero, also for Vi compatible mode. - This means there is a swap file, which can be used for recovery. - -Tags: -- Included ctags 2.0 (Darren Hiebert). The syntax for static tags changed - from - {tag}:{fname} {fname} {command} - to - {tag} {fname} {command};" file: - Which is both faster to parse, shorter and Vi compatible. The old format is - also still accepted, unless disabled in src/feature.h (see OLD_STATIC_TAGS). - |tags-file-format| -- Completion of tags now also includes static tags for other files, at the - end. -- Included "shtags" from Stephen Riehm. -- When finding a matching tag, but the file doesn't exist, continue searching - for another match. Helps when using the same tags file (with links) for - different versions of source code. -- Give a tag with a global match in the current file a higher priority than a - global match in another file. - -Included xxd version V1.8 (Juergen Weigert). - -Autocommands: -- VimLeave autocommands are executed after writing the viminfo file, instead - of before. |VimLeave| -- Allow changing autocommands while executing them. This allows for - self-modifying autocommands. (idea from Goldberg) -- When using autocommands with two or more patterns, could not split - ":if/:endif" over two lines. Now all matching autocommands are executed in - one do_cmdline(). -- Autocommands no longer change the command repeated with ".". -- Search patterns are restored after executing autocommands. This avoids - that the 'hlsearch' highlighting is messed up by autocommands. -- When trying to execute an autocommand, also try matching the pattern with - the short file name. Helps when short file name is different from full - file name (expanded symbolic links). |autocmd-patterns| -- Made the output of ":autocmd" shorter and look better. -- Expand <sfile> in an ":autocmd" when it is defined. |<sfile>| -- Added "nested" flag to ":autocmd", allows nesting. |autocmd-nested| -- Added [group] argument to ":autocmd". Overrides the currently set group. - |autocmd-groups| -- new events: - |BufUnload| before a buffer is unloaded - |BufDelete| before a buffer is deleted from the buffer list - |FileChangedShell| when a file's modification time has changed after - executing a shell command - |User| user-defined autocommand -- When 'modified' was set by a BufRead* autocommand, it was reset again - afterwards. Now the ":set modified" is remembered. - -GUI: -- Improved GUI scrollbar handling when redrawing is slower than the scrollbar - events are generated. -- "vim -u NONE" now also stops loading the .gvimrc and other GUI inits. |-u| - Use "-U" to use another gvimrc file. |-U| -- Handle CTRL-C for external command, also for systems where "setsid()" is - supported. -- When starting the GUI, restrict the window size to the screen size. -- The default menus are read from $VIMRUNTIME/menu.vim. This allows for a - customized default menu. |menu.vim| -- Improved the default menus. Added File/Print, a Window menu, Syntax menu, - etc. -- Added priority to the ":menu" command. Now each menu can be put in a place - where you want it, independent of the order in which the menus are defined. - |menu-priority| - -Give a warning in the intro screen when running the Win32 console version on -Windows 95 because there are problems using this version under Windows 95. -|win32-problems| - -Added 'e' flag for ":substitute" command: Don't complain when not finding a -match (Campbell). |:s| - -When using search commands in a mapping, only the last one is kept in the -history. Avoids that the history is trashed by long mappings. - -Ignore characters after "ex", "view" and "gvim" when checking startup mode. -Allows the use of "gvim5" et. al. |gvim| "gview" starts the GUI in readonly -mode. |gview| - -When resizing windows, the cursor is kept in the same relative position, if -possible. (Webb) - -":all" and ":ball" no longer close and then open a window for the same buffer. -Avoids losing options, jumplist, and other info. - -"-f" command-line argument is now ignored if Vim was compiled without GUI. -|-f| - -In Visual block mode, the right mouse button picks up the nearest corner. - -Changed default mappings for DOS et al. Removed the DOS-specific mappings, -only use the Windows ones. Added Shift-Insert, Ctrl-Insert, Ctrl-Del and -Shift-Del. - -Changed the numbers in the output of ":jumps", so you can see where {count} -CTRL-O takes you. |:jumps| - -Using "~" for $HOME now works for all systems. |$HOME| - -Unix: Besides using CTRL-C, also use the INTR character from the tty settings. -Somebody has INTR set to DEL. - -Allow a <LF> in a ":help" command argument to end the help command, so another -command can follow. - -Doing "%" on a line that starts with " #if" didn't jump to matching "#else". -Don't recognize "#if", "#else" etc. for '%' when 'cpo' contains the '%' flag. -|%| - -Insert mode expansion with "CTRL-N", "CTRL-P" and "CTRL-X" improved -|ins-completion|: -- 'complete' option added. -- When 'nowrapscan' is set, and no match found, report the searched direction - in the error message. -- Repeating CTRL-X commands adds following words/lines after the match. -- When adding-expansions, accept single character matches. -- Made repeated CTRL-X CTRL-N not break undo, and "." repeats the whole - insertion. Also fixes not being able to backspace over a word that has been - inserted with CTRL-N. - -When copying characters in Insert mode from previous/next line, with CTRL-E or -CTRL-Y, 'textwidth' is no longer used. |i_CTRL-E| - -Commands that move in the arglist, like ":n" and ":rew", keep the old cursor -position of the file (this is mostly Vi compatible). - -Vim now remembers the '< and '> marks for each buffer. This fixes a problem -that a line-delete in one buffer invalidated the '< and '> marks in another -buffer. |'<| - -For MSDOS, Unix and OS/2: When $VIM not set, use the path from the executable. -When using the executable path for $VIM, remove "src/" when present. Should -make Vim find the docs and syntax files when it is run directly after -compiling. |$VIM| - -When quitting Visual mode with <Esc>, the cursor is put at start of the Visual -area (like after executing an operator). - -Win32 and Unix version: Removed 1100 character limit on external commands. - -Added possibility to include a space in a ":edit +command" argument, by -putting a backslash before it. |+cmd| - -After recovery, BufReadPost autocommands are applied. |:recover| - -Added color support for "os2ansi", OS/2 console. (Slootman) |os2ansi| - -Allow "%:p:h" when % is empty. |:_%| - -Included "<sfile>": file name from the ":source" command. |<sfile>| - -Added "<Bslash>" special character. Helps for avoiding multiple backslashes -in mappings and menus. - -In a help window, a double-click jumps to the tag under the cursor (like -CTRL-]). - -<C-Left> and <C-Right> now work like <S-Left> and <S-Right>, move a word -forward/backward (Windows compatible). |<C-Left>| - -Removed the requirement for a ":version" command in a .vimrc file. It wasn't -used for anything. You can use ":if" to handle differences between versions. -|:version| - -For MS-DOS, Win32 and OS/2: When comparing file names for autocommands, don't -make a difference between '/' and '\' for path separator. - -New termcap options: -"mb": blink. Can only be used by assigning it to one of the other highlight - options. |t_mb| -"bc": backspace character. |t_bc| -"nd": Used for moving the cursor right in the GUI, to avoid removing one line - of pixels from the last bold character. |t_nd| -"xs": highlighting not erased by overwriting, for hpterm. Combined with - 'weirdinvert'. Visual mode works on hpterm now. |t_xs| - -Unix: Set time of patch and backup file same as original file. (Hiebert). - -Amiga: In QuickFix mode no longer opens another window. Shell commands can be -used now. - -Added decmouse patches from David Binette. Can now use Dec and Netterm mouse. -But only when enabled at compile time. - -Added '#' register: Alternate file name |quote#|. Display '#' register with -":dis" command. |:display| - -Removed ':' from 'isfname' default for Unix. Check for "://" in a file name -anyway. Also check for ":\\", for MS-DOS. - -Added count to "K"eyword command, when 'keywordprg' is "man", is inserted in -the man command. "2K" results in "!man 2 <cword>". |K| - -When using "gf" on a relative path name, remove "../" from the file name, like -it's done for file names in the tags file. |gf| - -When finishing recording, don't make the recorded register the default put -register. - -When using "!!", don't put ":5,5!" on the command-line, but ":.!". And some -other enhancements to replace the line number with "." or "$" when possible. - -MSDOS et al.: Renamed $VIM/viminfo to $VIM/_viminfo. It's more consistent: -.vimrc/_vimrc and .viminfo/_viminfo - -For systems where case doesn't matter in file names (MSDOS, Amiga), ignore -case while sorting file names. For buffer names too. - -When reading from stdin doesn't work, read from stderr (helps for "foo | xargs -vim"). - -32 bit MS-DOS version: Replaced csdpmi3 by csdpmi4. - -Changed <C-Left> and <C-Right> to skip a WORD instead of a word. - -Warning for changed modified time when overwriting a file now also works on -other systems than Unix. - -Unix: Changed the defaults for configure to be the same as the defaults for -Makefile: include GUI, Perl, and Python. - -Some versions of Motif require "-lXpm". Added check for this in configure. - -Don't add "-L/usr/lib" to the link line, causes problems on a few systems. - -============================================================================== - COMPILE TIME CHANGES *compile-changes-5* - -When compiling, allow a choice for minimal, normal or maximal features in an -easy way, by changing a single line in src/feature.h. -The DOS16 version has been compiled with minimal features to avoid running -out of memory too quickly. |dos16| -The Win32, DJGPP, and OS/2 versions use maximal features, because they have -enough memory. -The Amiga version is available with normal and maximal features. - -Added "make test" to Unix version Makefile. Allows for a quick check if most -"normal" commands work properly. Also tests a few specific commands. - -Added setlocale() with codepage support for DJGPP version. - -autoconf: -- Added autoconf check for -lXdmcp. -- Included check for -lXmu, no longer needed to edit the Makefile for this. -- Switched to autoconf 2.12. -- Added configure check for <poll.h>. Seems to be needed when including - Perl on Linux? -- termlib is now checked before termcap. -- Added configure check for strncasecmp(), stricmp() and strnicmp(). Added - vim_stricmp() for when there's no library function for stricmp(). -- Use "datadir" in configure, instead of our own check for HELPDIR. - -Removed "make proto" from Makefile.manx. Could not make it work without a lot -of #ifdefs. - -Removed "proto/" from paths in proto.h. Needed for the Mac port. - -Drastically changed Makefile.mint. Now it includes the Unix Makefile. - -Added support for Dos16 in Makefile.b32 (renamed Makefile.b32 to Makefile.bor) - -All source files are now edited with a tabstop of 8 instead of 4, which is -better when debugging and using other tools. 'softtabstop' is set to 4, to -make editing easier. - -Unix: Added "link.sh" script, which removes a few unnecessary libraries from -the link command. - -Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined. -|digraphs-default| - -============================================================================== - BUG FIXES *bug-fixes-5* - -Note: Some of these fixes may only apply to test versions which were - created after version 4.6, but before 5.0. - - -When doing ":bdel", try going to the next loaded buffer. Don't rewind to the -start of the buffer list. - -mch_isdir() for Unix returned TRUE for "" on some systems. - -Win32: 'shell' set to "mksnt/sh.exe" breaks ":!" commands. Don't use -backslashes in the temp file names. - -On linux, with a FAT file system, could get spurious "file xxx changed since -editing started" messages, because the time is rounded off to two seconds -unexpectedly. - -Crash in GUI, when selecting a word (double click) and then extend until an -empty line. - -For systems where isdigit() can't handle characters > 255, get_number() caused -a crash when moving the mouse during the prompt for recovery. - -In Insert mode, "CTRL-O P" left the cursor on the last inserted character. -Now the cursor is left after the last putted character. - -When quickfix found an error type other than 'e' or 'w', it was never printed. - -A setting for 'errorfile' in a .vimrc overruled the "-q errorfile" argument. - -Some systems create a file when generating a temp file name. Filtering would -then create a backup file for this, which was never deleted. Now no backup -file is made when filtering. - -simplify_filename() could remove a ".." after a link, resulting in the wrong -file name. Made simplify_filename also work for MSDOS. Don't use it for -Amiga, since it doesn't have "../". - -otherfile() was unreliable when using links. Could think that reading/writing -was for a different file, when it was the same. - -Pasting with mouse in Replace mode didn't replace anything. - -Window height computed wrong when resizing a window with an autocommand (could -cause a crash). - -":s!foo!bar!" wasn't possible (Vi compatible). - -do_bang() freed memory twice when called recursively, because of autocommands -(test11). Thanks to Electric Fence! - -"v$d" on an empty line didn't remove the "-- VISUAL --" mode message from the -command-line, and inverted the cursor. - -":mkexrc" didn't check for failure to open the file, causing a crash. -(Felderhoff). - -Win32 mch_write() wrote past fixed buffer, causing terminal keys no longer to -be recognized. Both console and GUI version. - -Athena GUI: Crash when removing a menu item. Now Vim doesn't crash, but the -reversing of the menu item is still wrong. - -Always reset 'list' option for the help window. - -When 'scrolloff' is non-zero, a 'showmatch' could cause the shown match to be -in the wrong line and the window to be scrolled (Acevedo). - -After ":set all&", 'lines' and 'ttytype' were still non-default, because the -defaults never got set. Now the defaults for 'lines' and 'columns' are set -after detecting the window size. 'term' and 'ttytype' defaults are set when -detecting the terminal type. - -For (most) non-Unix systems, don't add file names with illegal characters when -expanding. Fixes "cannot open swapfile" error when doing ":e *.burp", when -there is no match. - -In X11 GUI, drawing part of the cursor obscured the text. Now the text is -drawn over the cursor, like when it fills the block. (Seibert) - -when started with "-c cmd -q errfile", the cursor would be left in line 1. -Now a ":cc" is done after executing "cmd". - -":ilist" never ignored case, even when 'ignorecase' set. - -"vim -r file" for a readonly file, then making a change, got ATTENTION message -in insert mode, display mixed up until <Esc> typed. Also don't give ATTENTION -message after recovering a file. - -The abbreviation ":ab #i #include" could not be removed. - -CTRL-L completion (longest common match) on command-line didn't work properly -for case-insensitive systems (MS-DOS, Windows, etc.). (suggested by Richard -Kilgore). - -For terminals that can hide the cursor ("vi" termcap entry), resizing the -window caused the cursor to disappear. - -Using an invalid mark in an Ex address didn't abort the command. - -When 'smarttab' set, would use 'shiftround' when inserting a TAB after a -space. Now it always rounds to a tabstop. - -Set '[ and '] marks for ":copy", ":move", ":append", ":insert", ":substitute" -and ":change". (Acevedo). - -"d$" in an empty line still caused an error, even when 'E' is not in -'cpoptions'. - -Help files were stored in the viminfo buffer list without a path. - -GUI: Displaying cursor was not synchronized with other displaying. Caused -several display errors. For example, when the last two lines in the file -start with spaces, "dd" on the last line copied text to the (then) last line. - -Win32: Needed to type CTRL-SHIFT-- to get CTRL-_. - -GUI: Moving the cursor forwards over bold text would remove one column of bold -pixels. - -X11 GUI: When a bold character in the last column was scrolled up or down, one -column of pixels would not be copied. - -Using <BS> to move the cursor left can sometimes erase a character. Now use -"le" termcap entry for this. - -Keyword completion with regexp didn't work. e.g., for "b.*crat". - -Fixed: With CTRL-O that jumps to another file, cursor could end up just after -the line. - -Amiga: '$' was missing from character recognized as wildcards, causing $VIM -sometimes not to be expanded. - -":change" didn't adjust marks for deleted lines. - -":help [range]" didn't work. Also for [pattern], [count] and [quotex]. - -For 'cindent'ing, typing "class::method" doesn't align like a label when the -second ':' is typed. -When inserting a CR with 'cindent' set (and a bunch of other conditions) the -cursor went to a wrong location. -'cindent' was wrong for a line that ends in '}'. -'cindent' was wrong after "else {". - -While editing the cmdline in the GUI, could not use the mouse to select text -from the command-line itself. - -When deleting lines, marks in tag stack were only adjusted for the current -window, not for other windows on the same buffer. - -Tag guessing could find a function "some_func" instead of the "func" we were -looking for. - -Tags file name relative to the current file didn't work. - -":g/pat2/s//pat2/g", causing the number of subs to be reported, used to cause -a scroll up. Now you no longer have to hit <CR>. - -X11 GUI: Selecting text could cause a crash. - -32 bit DOS version: CTRL-C in external command killed Vim. When SHELL is set -to "sh.exe", external commands didn't work. Removed using of command.com, no -longer need to set 'shellquote'. - -Fixed crash when using ":g/pat/i". - -Fixed (potential) crash for X11 GUI, when using an X selection. Was giving a -pointer on the stack to a callback function, now it's static. - -Using "#" and "*" with an operator didn't work. E.g. "c#". - -Command-line expansion didn't work properly after ":*". (Acevedo) - -Setting 'weirdinvert' caused highlighting to be wrong in the GUI. - -":e +4 #" didn't work, because the "4" was in unallocated memory (could cause -a crash). - -Cursor position was wrong for ":e #", after ":e #" failed, because of changes -to the buffer. - -When doing ":buf N", going to a buffer that was edited with ":view", the -readonly flag was reset. Now make a difference between ":e file" and ":buf -file": Only set/reset 'ro' for the first one. - -Avoid |hit-enter| prompt when not able to write viminfo on exit. - -When giving error messages in the terminal where the GUI was started, GUI -escape codes would be written to the terminal. In an xterm this could be seen -as a '$' after the message. - -Mouse would not work directly after ":gui", because full_screen isn't set, -which causes starttermcap() not to do its work. - -'incsearch' did not scroll the window in the same way as the actual search. -When 'nowrap' set, incsearch didn't show a match when it was off the side of -the screen. Now it also shows the whole match, instead of just the cursor -position (if possible). - -":unmap", ":unab" and ":unmenu" did not accept a double quote, it was seen as -the start of a comment. Now it's Vi compatible. - -Using <Up><Left><Left><Up> in the command-line, when there is no previous -cmdline in the history, inserted a NUL on the command-line. - -"i<Esc>" when on a <Tab> in column 0 left the cursor in the wrong place. - -GUI Motif: When adding a lot of menu items, the menu bar goes into two rows. -Deleting menu items, reducing the number of rows, now also works. - -With ":g/pat/s//foo/c", a match in the first line was scrolled off of the -screen, so you could not see it. -When using ":s//c", with 'nowrap' set, a match could be off the side of the -screen, so you could not see it. - -When 'helpfile' was set to a fixed, non-absolute path in feature.h, Vim would -crash. mch_Fullname can now handle file names in read-only memory. (Lottem) - -When using CTRL-A or CTRL-@ in Insert mode, there could be strange effects -when using CTRL-D next. Also, when repeating inserted text that included "0 -CTRL-D" or "^ CTRL-D" this didn't work. (Acevedo) -Using CTRL-D after using CTRL-E or CTRL-Y in Insert mode that inserted a '0' -or '^', removed the '0' or '^' and more indent. - -The command "2".p" caused the last inserted text to be executed as commands. -(Acevedo) - -Repeating the insert of "CTRL-V 048" resulted in "^@" to be inserted. - -Repeating Insert completion could fail if there are special characters in the -text. (Acevedo) - -":normal /string<CR>" caused the window to scroll. Now all ":normal" commands -are executed without scrolling messages. - -Redo of CTRL-E or CTRL-Y in Insert mode interpreted special characters as -commands. - -Line wrapping for 'tw' was done one character off for insert expansion -inserts. - -buffer_exists() function didn't work properly for buffer names with a symbolic -link in them (e.g. when using buffer_exists(#)). - -Removed the "MOTIF_COMMENT" construction from Makefile. It now works with -FreeBSD make, and probably with NeXT make too. - -Matching the 'define' and 'include' arguments now honor the settings for -'ignorecase'. (Acevedo) - -When one file shown in two windows, Visual selection mixed up cursor position -in current window and other window. - -When doing ":e file" from a help file, the 'isk' option wasn't reset properly, -because of a modeline in the help file. - -When doing ":e!", a cursor in another window on the same buffer could become -invalid, leading to "ml_get: invalid lnum" errors. - -Matching buffer name for when expanded name has a different path from not -expanded name (Brugnara). - -Normal mappings didn't work after an operator. For example, with ":map Q gq", -"QQ" didn't work. - -When ":make" resulted in zero errors, a "No Errors" error message was given -(which breaks mappings). - -When ":sourcing" a file, line length was limited to 1024 characters. CTRL-V -before <EOL> was not handled Vi compatible. (Acevedo) - -Unexpected exit for X11 GUI, caused by SAVE_YOURSELF event. (Heimann) - -CTRL-X CTRL-I only found one match per line. (Acevedo) -When using an illegal CTRL-X key in Insert mode, the CTRL-X mode message -was stuck. - -Finally managed to ignore the "Quit" menu entry of the Window manager! Now -Vim only exists when there are no changed buffers. - -Trying to start the GUI when $DISPLAY is not set resulted in a crash. -When $DISPLAY is not set and gvim starts vim, title was restored to "Thanks -for flying Vim". -When $DISPLAY not set, starting "gvim" (dropping back to vim) and then -selecting text with the mouse caused a crash. - -"J", with 'joinspaces' set, on a line ending in ". ", caused one space too -many to be added. (Acevedo) - -In insert mode, a CTRL-R {regname} which didn't insert anything left the '"' -on the screen. - -":z10" didn't work. (Clapp) - -"Help "*" didn't work. - -Renamed a lot of functions, to avoid clashes with POSIX name space. - -When adding characters to a line, making it wrap, the following lines were -sometimes not shifted down (e.g. after a tag jump). - -CTRL-E, with 'so' set and cursor on last line, now does not move cursor as -long as the last line is on the screen. - -When there are two windows, doing "^W+^W-" in the bottom window could cause -the status line to be doubled (not redrawn correctly). - -This command would hang: ":n `cat`". Now connect stdin of the external -command to /dev/null, when expanding. - -Fixed lalloc(0,) error for ":echo %:e:r". (Acevedo) - -The "+command" argument to ":split" didn't work when there was no file name. - -When selecting text in the GUI, which is the output of a command-line command -or an external command, the inversion would sometimes remain. - -GUI: "-mh 70" argument was broken. Now, when menuheight is specified, it is -not changed anymore. - -GUI: When using the scrollbar or mouse while executing an external command, -this caused garbage characters. - -Showmatch sometimes jumped to the wrong position. Was caused by a call to -findmatch() when redrawing the display (when syntax highlighting is on). - -Search pattern "\(a *\)\{3} did not work correctly, also matched "a a". -Problem with brace_count not being decremented. - -Wildcard expansion added too many non-matching file names. - -When 'iskeyword' contains characters like '~', "*" and "#" didn't work -properly. (Acevedo) - -On Linux, on a FAT file system, modification time can change by one second. -Avoid a "file has changed" warning for a one second difference. - -When using the page-switching in an xterm, Vim would position the cursor on -the last line of the window on exit. Also removed the cursor positioning for -":!" commands. - -":g/pat/p" command (partly) overwrote the command. Now the output is on a -separate line. - -With 'ic' and 'scs' set, a search for "Keyword", ignore-case matches were -highlighted too. - -"^" on a line with only white space, put cursor beyond the end of the line. - -When deleting characters before where insertion started ('bs' == 2), could not -use abbreviations. - -CTRL-E at end of file puts cursor below the file, in Visual mode, when 'so' is -non-zero. CTRL-E didn't work when 'so' is big and the line below the window -wraps. CTRL-E, when 'so' is non-zero, at end of the file, caused jumping -up-down. - -":retab" didn't work well when 'list' is set. - -Amiga: When inserting characters at the last line on the screen, causing it -to wrap, messed up the display. It appears that a '\n' on the last line -doesn't always cause a scroll up. - -In Insert mode "0<C-D><C-D>" deleted an extra character, because Vim thought -that the "0" was still there. (Acevedo) - -"z{count}l" ignored the count. Also for "zh" et. al. (Acevedo) - -"S" when 'autoindent' is off didn't delete leading white space. - -"/<Tab>" landed on the wrong character when 'incsearch' is set. - -Asking a yes/no question could cause a |hit-enter| prompt. - -When the file consists of one long line (>4100 characters), making changes -caused various errors and a crash. - -DJGPP version could not save long lines (>64000) for undo. - -"yw" on the last char in the file didn't work. Also fixed "6x" at the end of -the line. "6X" at the start of a line fails, but does not break a mapping. In -general, a movement for an operator doesn't beep or flush a mapping, but when -there is nothing to operate on it beeps (this is Vi compatible). - -"m'" and "m`" now set the '' mark at the cursor position. - -Unix: Resetting of signals for external program didn't work, because SIG_DFL -and NULL are the same! For "!!yes|dd count=1|, the yes command kept on -running. - -Partly fixed: Unix GUI: Typeahead while executing an external command was lost. -Now it's not lost while the command is producing output. - -Typing <S-Tab> in Insert mode, when it isn't mapped, inserted "<S-Tab>". Now -it works like a normal <Tab>, just like <C-Tab> and <M-Tab>. - -Redrawing ruler didn't check for old value correctly (caused UMR warnings in -Purify). - -Negative array index in finish_viminfo_history(). - -":g/^/d|mo $" deleted all the lines. The ":move" command now removes the -:global mark from the moved lines. - -Using "vG" while the last line in the window is a "@" line, didn't update -correctly. Just the "v" showed "~" lines. - -"daw" on the last char of the file, when it's a space, moved the cursor beyond -the end of the line. - -When 'hlsearch' was set or reset, only the current buffer was redrawn, while -this affects all windows. - -CTRL-^, positioning the cursor somewhere from 1/2 to 1 1/2 screen down the -file, put the cursor at the bottom of the window, instead of halfway. - -When scrolling up for ":append" command, not all windows were updated -correctly. - -When 'hlsearch' is set, and an auto-indent is highlighted, pressing <Esc> -didn't remove the highlighting, although the indent was deleted. - -When 'ru' set and 'nosc', using "$j" showed a wrong ruler. - -Under Xfree 3.2, Shift-Tab didn't work (wrong keysym is used). - -Mapping <S-Tab> didn't work. Changed the key translations to use the shortest -key code possible. This makes the termcode translations and mappings more -consistent. Now all modifiers work in all combinations, not only with <Tab>, -but also with <Space>, <CR>, etc. - -For Unix, restore three more signals. And Vim catches SIGINT now, so CTRL-C -in Ex mode doesn't make Vim exit. - -""a5Y" yanked 25 lines instead of 5. - -"vrxxx<Esc>" in an empty line could not be undone. - -A CTRL-C that breaks ":make" caused the errorfile not to be read (annoying -when you want to handle what ":make" produced so far). - -":0;/pat" didn't find "pat" in line 1. - -Search for "/test/s+1" at first char of file gave bottom-top message, or -didn't work at all with 'nowrapscan'. - -Bug in viminfo history. Could cause a crash on exit. - -":print" didn't put cursor on first non-blank in line. - -":0r !cat </dev/null" left cursor in line zero, with very strange effects. - -With 'showcmd' set and 'timeoutlen' set to a few seconds, trick to position -the cursor leftwards didn't work. - -AIX stty settings were restored to cs5 instead of cs8 (Winn). - -File name completion didn't work for "zsh" versions that put spaces between -file names, instead of NULs. - -Changed "XawChain*" to "XtChain*", should work for more systems. - -Included quite a few fixes for rightleft mode (Lottem). - -Didn't ask to |hit-enter| when GUI is started and error messages are printed. - -When trying to edit a file in a non-existent directory, ended up with editing -"No file". - -"gqap" to format a paragraph did too much redrawing. - -When 'hlsearch' set, only the current window was updated for a new search -pattern. - -Sometimes error messages on startup didn't cause a |hit-enter| prompt, -because of autocommands containing an empty line. - -Was possible to select part of the window in the border, below the command -line. - -'< and '> marks were not at the correct position after linewise Visual -selection. - -When translating a help argument to "CTRL-x", prepend or append a '_', when -applicable. - -Blockwise visual mode wasn't correct when moving vertically over a special -character (displayed as two screen characters). - -Renamed "struct option" to "struct vimoption" to avoid name clash with GNU -getopt(). - -":abclear" didn't work (but ":iabclear" and ":cabclear" did work). - -When 'nowrap' used, screen wasn't always updated correctly. - -"vim -c split file" displayed extra lines. - -After starting the GUI, searched the termcap for a "gui" term. - -When 'hls' used, search for "^$" caused a hang. -When 'hls' was set, an error in the last regexp caused trouble. - -Unix: Only output an extra <EOL> on exit when outputted something in the -alternate screen, or when there is a message that needs to be cleared. - -"/a\{" did strange things, depending on previous search. - -"c}" only redrew one line (with -u NONE). - -For mappings, CTRL-META-A was shown as <M-^A> instead of <MC-A>, while :map -only accepts <MC-A>. Now <M-C-A> is shown. - -Unix: When using full path name in a tags file, which contains a link, and -'hidden' set and jumping to a tag in the current file, would get bogus -ATTENTION message. Solved by always expanding file names, even when starting -with '/'. - -'hlsearch' highlighting of special characters (e.g., a TAB) didn't highlight -the whole thing. - -"r<CR>" didn't work correctly on the last char of a line. - -Sometimes a window resize or other signal caused an endless loop, involving -set_winsize(). - -"vim -r" didn't work, it would just hang (using tgetent() while 'term' is -empty). - -"gk" while 'nowrap' set moved two lines up. - -When windows are split, a message that causes a scroll-up messed up one of the -windows, which required a CTRL-L to be typed. - -Possible endless loop when using shell command in the GUI. - -Menus defined in the .vimrc were removed when GUI started. - -Crash when pasting with the mouse in insert mode. - -Crash with ":unmenu *" in .gvimrc for Athena. - -"5>>" shifted 5 lines 5 times, instead of 1 time. - -CTRL-C when getting a prompt in ":global" didn't interrupt. - -When 'so' is non-zero, and moving the scrollbar completely to the bottom, -there was a lot of flashing. - -GUI: Scrollbar ident must be long for DEC Alpha. - -Some functions called vim_regcomp() without setting reg_magic, which could -lead to unpredictable magicness. - -Crash when clicking around the status line, could get a selection with a -backwards range. - -When deleting more than one line characterwise, the last character wasn't -deleted. - -GUI: Status line could be overwritten when moving the scrollbar quickly (or -when 'wd' is non-zero). - -An ESC at the end of a ":normal" command caused a wait for a terminal code to -finish. Now, a terminal code is not recognized when its start comes from a -mapping or ":normal" command. - -Included patches from Robert Webb for GUI. Layout of the windows is now done -inside Vim, instead of letting the layout manager do this. Makes Vim work -with Lesstif! - -UMR warning in set_expand_context(). - -Memory leak: b_winlnum list was never freed. - -Removed TIOCLSET/TIOCLGET code from os_unix.c. Was changing some of the -terminal settings, and looked like it wasn't doing anything good. (suggested -by Juergen Weigert). - -Ruler overwrote "is a directory" message. When starting up, and 'cmdheight' -set to > 1, first message could still be in the last line. - -Removed prototype for putenv() from proto.h, it's already in osdef2.h.in. - -In replace mode, when moving the cursor and then backspacing, wrong characters -were inserted. - -Win32 GUI was checking for a CTRL-C too often, making it slow. - -Removed mappings for MS-DOS that were already covered by commands. - -When visually selecting all lines in a file, cursor at last line, then "J". -Gave ml_get errors. Was a problem with scrolling down during redrawing. - -When doing a linewise operator, and then an operator with a mouse click, it -was also linewise, instead of characterwise. - -When 'list' is set, the column of the ruler was wrong. - -Spurious error message for "/\(b\+\)*". - -When visually selected many lines, message from ":w file" disappeared when -redrawing the screen. - -":set <M-b>=^[b", then insert "^[b", waited for another character. And then -inserted "<M-b>" instead of the real <M-b> character. Was trying to insert -K_SPECIAL x NUL. - -CTRL-W ] didn't use count to set window height. - -GUI: "-font" command-line argument didn't override 'guifont' setting from -.gvimrc. (Acevedo) - -GUI: clipboard wasn't used for "*y". And some more Win32/X11 differences -fixed for the clipboard (Webb). - -Jumping from one help file to another help file, with 'compatible' set, -removed the 'help' flag from the buffer. - -File-writable bit could be reset when using ":w!" for a readonly file. - -There was a wait for CTRL-O n in Insert mode, because the search pattern was -shown. -Reduced wait, to allow reading a message, from 10 to 3 seconds. It seemed -nothing was happening. - -":recover" found same swap file twice. - -GUI: "*yy only worked the second time (when pasting to an xterm)." - -DJGPP version (dos32): The system flags were cleared. - -Dos32 version: Underscores were sometimes replaced with y-umlaut (Levin). - -Version 4.1 of ncurses can't handle tputs("", ..). Avoid calling tputs() with -an empty string. - -<S-Tab> in the command-line worked like CTRL-P when no completion started yet. -Now it does completion, last match first. - -Unix: Could get annoying "can't write viminfo" message after doing "su". Now -the viminfo file is overwritten, and the user set back to the original one. - -":set term=builtin_gui" started the GUI in a wrong way. Now it's not -allowed anymore. But "vim -T gui" does start the GUI correctly now. - -GUI: Triple click after a line only put last char in selection, when it is a -single character word. - -When the window is bigger than the screen, the scrolling up of messages was -wrong (e.g. ":vers", ":hi"). Also when the bottom part of the window was -obscured by another window. - -When using a wrong option only an error message is printed, to avoid that the -usage information makes it scroll off the screen. - -When exiting because of not being able to read from stdin, didn't preserve the -swap files properly. - -Visual selecting all chars in more than one line, then hit "x" didn't leave an -empty line. For one line it did leave an empty line. - -Message for which autocommand is executing messed up file write message (for -FileWritePost event). - -"vim -h" included "-U" even when GUI is not available, and "-l" when lisp is -not available. - -Crash for ":he <C-A>" (command-line longer than screen). - -":s/this/that/gc", type "y" two times, then undo, did reset the modified -option, even though the file is still modified. - -Empty lines in a tags file caused a ":tag" to be aborted. - -When hitting 'q' at the more prompt for ":menu", still scrolled a few lines. - -In an xterm that uses the bold trick a single row of characters could remain -after an erased bold character. Now erase one extra char after the bold char, -like for the GUI. - -":pop!" didn't work. - -When the reading a buffer was interrupted, ":w" should not be able to -overwrite the file, ":w!" is required. - -":cf%" caused a crash. - -":gui longfilename", when forking is enabled, could leave part of the -longfilename at the shell prompt. - -============================================================================== -VERSION 5.1 *version-5.1* - -Improvements made between version 5.0 and 5.1. - -This was mostly a bug-fix release, not many new features. - - -Changed *changed-5.1* -------- - -The expand() function now separates file names with <NL> instead of a space. -This avoids problems for file names with embedded spaces. To get the old -result, use substitute(expand(foo), "\n", " ", "g"). - -For Insert-expanding dictionaries allow a backslash to be used for -wildchars. Allows expanding "ze\kra", when 'isk' includes a backslash. - -New icon for the Win32 GUI. - -":tag", ":tselect" etc. only use the argument as a regexp when it starts -with '/'. Avoids that ":tag xx~" gives an error message: "No previous sub. -regexp". Also, when the :tag argument contained wildcard characters, it was -not Vi compatible. -When using '/', the argument is taken literally too, with a higher priority, -so it's found before wildcard matches. -Only when the '/' is used are matches with different case found, even though -'ignorecase' isn't set. -Changed "g^]" to only do ":tselect" when there is more than on matching tag. - -Changed some of the default colors, because they were not very readable on a -dark background. - -A character offset to a search pattern can move the cursor to the next or -previous line. Also fixes that "/pattern/e+2" got stuck on "pattern" at the -end of a line. - -Double-clicks in the status line do no longer start Visual mode. Dragging a -status line no longer stops Visual mode. - -Perl interface: Buffers() and Windows() now use more logical arguments, like -they are used in the rest of Vim (Moore). - -Init '" mark to the first character of the first line. Makes it possible to -use '" in an autocommand without getting an error message. - - -Added *added-5.1* ------ - -"shell_error" internal variable: result of last shell command. - -":echohl" command: Set highlighting for ":echo". - -'S' flag in 'highlight' and StatusLineNC highlight group: highlighting for -status line of not-current window. Default is to use bold for current -window. - -Added buffer_name() and buffer_number() functions (Aaron). -Added flags argument "g" to substitute() function (Aaron). -Added winheight() function. - -Win32: When an external command starts with "start ", no console is opened -for it (Aaron). - -Win32 console: Use termcap codes for bold/reverse based on the current -console attributes. - -Configure check for "strip". (Napier) - -CTRL-R CTRL-R x in Insert mode: Insert the contents of a register literally, -instead of as typed. - -Made a few "No match" error messages more informative by adding the pattern -that didn't match. - -"make install" now also copies the macro files. - -tools/tcltags, a shell script to generate a tags file from a TCL file. - -"--with-tlib" setting for configure. Easy way to use termlib: "./configure ---with-tlib=termlib". - -'u' flag in 'cino' for setting the indent for contained () parts. - -When Win32 OLE version can't load the registered type library, ask the user -if he wants to register Vim now. (Erhardt) -Win32 with OLE: When registered automatically, exit Vim. -Included VisVim 1.1b, with a few enhancements and the new icon (Heiko -Erhardt). - -Added patch from Vince Negri for Win32s support. Needs to be compiled with -VC 4.1! - -Perl interface: Added $curbuf. Rationalized Buffers() and Windows(). -(Moore) Added "group" argument to Msg(). - -Included Perl files in DOS source archive. Changed Makefile.bor and -Makefile.w32 to support building a Win32 version with Perl included. - -Included new Makefile.w32 from Ken Scott. Now it's able to make all Win32 -versions, including OLE, Perl and Python. - -Added CTRL-W g ] and CTRL-W g ^]: split window and do g] or g^]. - -Added "g]" to always do ":tselect" for the ident under the cursor. -Added ":tjump" and ":stjump" commands. -Improved listing of ":tselect" when tag names are a bit long. - -Included patches for the Macintosh version. Also for Python interface. -(St-Amant) - -":buf foo" now also restores cursor column, when the buffer was used before. - -Adjusted the Makefile for different final destinations for the syntax files -and scripts (for Debian Linux). - -Amiga: $VIM can be used everywhere. When $VIM is not defined, "VIM:" is -used. This fixes that "VIM:" had to be assigned for the help files, and -$VIM set for the syntax files. Now either of these work. - -Some xterms send vt100 compatible function keys F1-F4. Since it's not -possible to detect this, recognize both type of keys and translate them to -<F1> - <F4>. - -Added "VimEnter" autocommand. Executed after loading all the startup stuff. - -BeOS version now also runs on Intel CPUs (Seibert). - - -Fixed *fixed-5.1* ------ - -":ts" changed position in the tag stack when cancelled with <CR>. -":ts" changed the cursor position for CTRL-T when cancelled with <CR>. -":tn" would always jump to the second match. Was using the wrong entry in -the tag stack. -Doing "tag foo", then ":tselect", overwrote the original cursor position in -the tag stack. - -"make install" changed the vim.1 manpage in a wrong way, causing "doc/doc" -to appear for the documentation files. - -When compiled with MAX_FEAT, xterm mouse handling failed. Was caused by DEC -mouse handling interfering. - -Was leaking memory when using selection in X11. - -CTRL-D halfway a command-line left some characters behind the first line(s) -of the listing. - -When expanding directories for ":set path=", put two extra backslashes -before a space in a directory name. - -When 'lisp' set, first line of a function would be indented. Now its indent -is set to zero. And use the indent of the first previous line that is at -the same () level. Added test33. - -"so<Esc>u" in an empty file didn't work. - -DOS: "seek error in swap file write" errors, when using DOS 6.2 share.exe, -because the swap file was made hidden. It's no longer hidden. - -":global" command would sometimes not execute on a matching line. Happened -when a data block is full in ml_replace(). - -For AIX use a tgetent buffer of 2048 bytes, instead of 1024. - -Win32 gvim now only sets the console size for external commands to 25x80 -on Windows 95, not on NT. - -Win32 console: Dead key could cause a crash, because of a missing "WINAPI" -(Deshpande). - -The right mouse button started Visual mode, even when 'mouse' is empty, and -in the command-line, a left click moved the cursor when 'mouse' is empty. -In Visual mode, 'n' in 'mouse' would be used instead of 'v'. - -A blinking cursor or focus change cleared a non-Visual selection. - -CTRL-Home and CTRL-End didn't work for MS-DOS versions. - -Could include NUL in 'iskeyword', causing a crash when doing insert mode -completion. - -Use _dos_commit() to flush the swap file to disk for MSDOS 16 bit version. - -In mappings, CTRL-H was replaced by the backspace key code. This caused -problems when it was used as text, e.g. ":map _U :%s/.^H//g<CR>". - -":set t_Co=0" was not handled like a normal term. Now it's translated into -":set t_Co=", which works. - -For ":syntax keyword" the "transparent" option did work, although not -mentioned in the help. But synID() returned wrong name. - -"gqG" in a file with one-word-per-line (e.g. a dictionary) was very slow and -not interruptible. - -"gq" operator inserted screen lines in the wrong situation. Now screen -lines are inserted or deleted when this speeds up displaying. - -cindent was wrong when an "if" contained "((". - -'r' flag in 'viminfo' was not used for '%'. Could get files in the buffer -list from removable media. - -Win32 GUI with OLE: if_ole_vc.mak could not be converted into a project. -Hand-edited to fix this... - -With 'nosol' set, doing "$kdw" below an empty line positioned the cursor at -the end of the line. - -Dos32 version changed "\dir\file" into "/dir/file", to work around a DJGPP -bug. That bug appears to have been fixed, therefore this translation has -been removed. - -"/^*" didn't work (find '*' in first column). - -"<afile>" was not always set for autocommands. E.g., for ":au BufEnter * -let &tags = expand("<afile>:p:h") . "/tags". - -In an xterm, the window may be a child of the outer xterm window. Use the -parent window when getting the title and icon names. (Smith) - -When starting with "gvim -bg black -fg white", the value of 'background' is -only set after reading the .gvimrc file. This causes a ":syntax on" to use -the wrong colors. Now allow using ":gui" to open the GUI window and set the -colors. Previously ":gui" in a gvimrc crashed Vim. - -tempname() returned the same name all the time, unless the file was actually -created. Now there are at least 26 different names. - -File name used for <afile> was sometimes full path, sometimes file name -relative to current directory. - -When 'background' was set after the GUI window was opened, it could change -colors that were set by the user in the .gvimrc file. Now it only changes -colors that have not been set by the user. - -Ignore special characters after a CSI in the GUI version. These could be -interpreted as special characters in a wrong way. (St-Amant) - -Memory leak in farsi code, when using search or ":s" command. -Farsi string reversing for a mapping was only done for new mappings. Now it -also works for replacing a mapping. - -Crash in Win32 when using a file name longer than _MAX_PATH. (Aaron) - -When BufDelete autocommands were executed, some things for the buffer were -already deleted (esp. Perl stuff). - -Perl interface: Buffer specific items were deleted too soon; fixes "screen -no longer exists" messages. (Moore) - -The Perl functions didn't set the 'modified' flag. - -link.sh did not return an error on exit, which may cause Vim to start -installing, even though there is no executable to install. (Riehm) - -Vi incompatibility: In Vi "." redoes the "y" command. Added the 'y' flag to -'cpoptions'. Only for 'compatible' mode. - -":echohl" defined a new group, when the argument was not an existing group. - -"syn on" and ":syn off" could move the cursor, if there is a hidden buffer -that is shorter that the current cursor position. - -The " mark was not set when doing ":b file". - -When a "nextgroup" is used with "skipwhite" in syntax highlighting, space at -the end of the line made the nextgroup also be found in the next line. - -":he g<CTRL-D>", then ":" and backspace to the start didn't redraw. - -X11 GUI: "gvim -rv" reversed the colors twice on Sun. Now Vim checks if the -result is really reverse video (background darker than foreground). - -"cat link.sh | vim -" didn't set syntax highlighting. - -Win32: Expanding "file.sw?" matched ".file.swp". This is an error of -FindnextFile() that we need to work around. (Kilgore) - -"gqgq" gave an "Invalid lnum" error on the last line. -Formatting with "gq" didn't format the first line after a change of comment -leader. - -There was no check for out-of-memory in win_alloc(). - -"vim -h" didn't mention "-register" and "-unregister" for the OLE version. - -Could not increase 'cmdheight' when the last window is only one line. Now -other windows are also made smaller, when necessary. - -Added a few {} to avoid "suggest braces around" warnings from gcc 2.8.x. -Changed return type of main() from void to int. (Nam) - -Using '~' twice in a substitute pattern caused a crash. - -"syn on" and ":syn off" could scroll the window, if there is a hidden buffer -that is shorter that the current cursor position. - -":if 0 | if 1 | endif | endif" didn't work. Same for ":while" and "elseif". - -With two windows on modified files, with 'autowrite' set, cursor in second -window, ":qa" gave a warning for the file in the first window, but then -auto-wrote the file in the second window. (Webb) - -Win32 GUI scrollbar could only handle 32767 lines. Also makes the -intellimouse wheel use the configurable number of scrolls. (Robinson) - -When using 'patchmode', and the backup file is on another partition, the file -copying messed up the write-file message. - -GUI X11: Alt-Backspace and Alt-Delete didn't work. - -"`0" could put the cursor after the last character in the line, causing -trouble for other commands, like "i". - -When completing tags in insert mode with ^X^], some matches were skipped, -because the compare with other tags was wrong. E.g., when "mnuFileSave" was -already there, "mnuFile" would be skipped. (Negri) - -When scrolling up/down, a syntax item with "keepend" didn't work properly. -Now the flags are also stored for the syntax state at the start of each line. - -When 'ic' was changed while 'hlsearch' is on, there was no redraw to show the -effect. - -Win32 GUI: Don't display "No write since last chance" in a message box, but in -the Vim window. - -============================================================================== -VERSION 5.2 *version-5.2* - -Improvements made between version 5.1 and 5.2. - - -Long lines editable *long-lines* -------------------- - -A single long line that doesn't fit in the window doesn't show a line of @@@ -anymore. Redrawing starts at a character further on in the line, such that -the text around the cursor can be seen. This makes it possible to edit these -long lines when wrapping is on. - - -File browser added *file-browser-5.2* ------------------- - -The Win32, Athena and Motif GUI bring up a file requester if the user asks to -":browse" for the ":e", ":w", ":r", ":so", ":redirect" and -":mkexrc/vimrc/vsess" commands. ::browse e /foo/bar" opens the requester in -the /foo/bar directory, so you can have nice mapping rhs's like ":browse so -$vim/macros". If no initial dir specified for ":browse e", can be compiled to -either begin in the current directory, or that of the current buffer. (Negri -and Kahn) -Added the 'browsedir' option, with value "current", "last" or "buffer". Tells -whether a browse dialog starts in last used dir, dir of current buffer, or -current dir. ":browse w" is unaffected. -The default menus have been changed to use the ":browse" command. - - -Dialogs added *dialogs-added* -------------- - -Added the ":confirm" command. Works on ":e", ":q", ":w", ":cl". Win32, -Athena and Motif GUI uses a window-dialog. All other platforms can use -prompt in command-line. ":confirm qa" offers a choice to save all modified -files. - -confirm() function: allows user access to the confirm engine. - -Added 'v' flag to 'guioptions'. When included, a vertical button layout is -always used for the Win32 GUI dialog. Otherwise, a horizontal layout is -preferred. - -Win32 GUI: ":promptfind" and ":promptrepl" pop up a dialog to find/replace. -To be used from a menu entry. (Negri) - - -Popup menu added *popup-menu-added* ----------------- - -When the 'mousemodel' option is set to "popup", the right mouse button -displays the top level menu headed with "PopUp" as pop-up context menu. The -"PopUp" menu is not displayed in the normal menu bar. This currently only -works for Win32 and Athena GUI. - - -Select mode added *new-Select-mode* ------------------ - -A new mode has been added: "Select mode". It is like Visual mode, but typing -a printable character replaces the selection. -- CTRL-G can be used to toggle between Visual mode and Select mode. -- CTRL-O can be used to switch from Select mode to Visual mode for one command. -- Added 'selectmode' option: tells when to start Select mode instead of Visual - mode. -- Added 'mousemodel' option: Change use of mouse buttons. -- Added 'keymodel' option: tells to use shifted special keys to start a - Visual or Select mode selection. -- Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel' - and 'keymodel' for MS-Windows and xterm behavior. -- The xterm-like selection is now called modeless selection. -- Visual mode mappings and menus are used in Select mode. They automatically - switch to Visual mode first. Afterwards, reselect the area, unless it was - deleted. The "gV" command can be used in a mapping to skip the reselection. -- Added the "gh", "gH" and "g^H" commands: start Select (highlight) mode. -- Backspace in Select mode deletes the selected area. - -"mswin.vim" script. Sets behavior mostly like MS-Windows. - - -Session files added *new-session-files* -------------------- - -":mks[ession]" acts like "mkvimrc", but also writes the full filenames of the -currently loaded buffers and current directory, so that :so'ing the file -re-loads those files and cd's to that directory. Also stores and restores -windows. File names are made relative to session file. -The 'sessionoptions' option sets behavior of ":mksession". (Negri) - - -User defined functions and commands *new-user-defined* ------------------------------------ - -Added user defined functions. Defined with ":function" until ":endfunction". -Called with "Func()". Allows the use of a variable number of arguments. -Included support for local variables "l:name". Return a value with ":return". -See |:function|. -Call a function with ":call". When using a range, the function is called for -each line in the range. |:call| -"macros/justify.vim" is an example of using user defined functions. -User functions do not change the last used search pattern or the command to be -redone with ".". -'maxfuncdepth' option. Restricts the depth of function calls. Avoids trouble -(crash because of out-of-memory) when a function uses endless recursion. - -User definable Ex commands: ":command", ":delcommand" and ":comclear". -(Moore) See |user-commands|. - - -New interfaces *interfaces-5.2* --------------- - -Tcl interface. (Wilken) See |tcl|. -Uses the ":tcl", ":tcldo" and "tclfile" commands. - -Cscope support. (Kahn) (Sekera) See |cscope|. -Uses the ":cscope" and ":cstag" commands. Uses the options 'cscopeprg', -'cscopetag', 'cscopetagorder' and 'cscopeverbose'. - - -New ports *ports-5.2* ---------- - -Amiga GUI port. (Nielsen) Not tested much yet! - -RISC OS version. (Thomas Leonard) See |riscos|. -This version can run either with a GUI or in text mode, depending upon where -it is invoked. -Deleted the "os_archie" files, they were not working anyway. - - -Multi-byte support *new-multi-byte* ------------------- - -MultiByte support for Win32 GUI. (Baek) -The 'fileencoding' option decides how the text in the file is encoded. -":ascii" works for multi-byte characters. Multi-byte characters work on -Windows 95, even when using the US version. (Aaron) -Needs to be enabled in feature.h. -This has not been tested much yet! - - -New functions *new-functions-5.2* -------------- - -|browse()| puts up a file requester when available. (Negri) -|escape()| escapes characters in a string with a backslash. -|fnamemodify()| modifies a file name. -|input()| asks the user to enter a line. (Aaron) There is a separate - history for lines typed for the input() function. -|argc()| -|argv()| can be used to access the argument list. -|winbufnr()| buffer number of a window. (Aaron) -|winnr()| window number. (Aaron) -|matchstr()| Return matched string. -|setline()| Set a line to a string value. - - -New options *new-options-5.2* ------------ - -'allowrevins' Enable the CTRL-_ command in Insert and Command-line mode. -'browsedir' Tells in which directory a browse dialog starts. -'confirm' when set, :q :w and :e commands always act as if ":confirm" - is used. (Negri) -'cscopeprg' -'cscopetag' -'cscopetagorder' -'cscopeverbose' Set the |cscope| behavior. -'filetype' RISC-OS specific type of file. -'grepformat' -'grepprg' For the |:grep| command. -'keymodel' Tells to use shifted special keys to start a Visual or Select - mode selection. -'listchars' Set character to show in 'list' mode for end-of-line, tabs and - trailing spaces. (partly by Smith) Also sets character to - display if a line doesn't fit when 'nowrap' is set. -'matchpairs' Allows matching '<' with '>', and other single character - pairs. -'mousefocus' Window focus follows mouse (partly by Terhaar). Changing the - focus with a keyboard command moves the pointer to that - window. Also move the pointer when changing the window layout - (split window, change window height, etc.). -'mousemodel' Change use of mouse buttons. -'selection' When set to "inclusive" or "exclusive", the cursor can go one - character past the end of the line in Visual or Select mode. - When set to "old" the old behavior is used. When - "inclusive", the character under the cursor is included in the - operation. When using "exclusive", the new "ve" entry of - 'guicursor' is used. The default is a vertical bar. -'selectmode' Tells when to start Select mode instead of Visual mode. -'sessionoptions' Sets behavior of ":mksession". (Negri) -'showfulltag' When completing a tag in Insert mode, show the tag search - pattern (tidied up) as a choice as well (if there is one). -'swapfile' Whether to use a swap file for a buffer. -'syntax' When it is set, the syntax by that name is loaded. Allows for - setting a specific syntax from a modeline. -'ttymouse' Allows using xterm mouse codes for terminals which name - doesn't start with "xterm". -'wildignore' List of patterns for files that should not be completed at - all. -'wildmode' Can be used to set the type of expansion for 'wildchar'. - Replaces the CTRL-T command for command line completion. - Don't beep when listing all matches. -'winaltkeys' Win32 and Motif GUI. When "yes", ALT keys are handled - entirely by the window system. When "no", ALT keys are never - used by the window system. When "menu" it depends on whether - a key is a menu shortcut. -'winminheight' Minimal height for each window. Default is 1. Set to 0 if - you want zero-line windows. Scrollbar is removed for - zero-height windows. (Negri) - - - -New Ex commands *new-ex-commands-5.2* ---------------- - -|:badd| Add file name to buffer list without side effects. (Negri) -|:behave| Quickly set MS-Windows or xterm behavior. -|:browse| Use file selection dialog. -|:call| Call a function, optionally with a range. -|:cnewer| -|:colder| To access a stack of quickfix error lists. -|:comclear| Clear all user-defined commands. -|:command| Define a user command. -|:continue| Go back to ":while". -|:confirm| Ask confirmation if something unexpected happens. -|:cscope| Execute cscope command. -|:cstag| Use cscope to jump to a tag. -|:delcommand| Delete a user-defined command. -|:delfunction| Delete a user-defined function. -|:endfunction| End of user-defined function. -|:function| Define a user function. -|:grep| Works similar to ":make". (Negri) -|:mksession| Create a session file. -|:nohlsearch| Stop 'hlsearch' highlighting for a moment. -|:Print| This is Vi compatible. Does the same as ":print". -|:promptfind| Search dialog (Win32 GUI). -|:promptrepl| Search/replace dialog (Win32 GUI). -|:return| Return from a user-defined function. -|:simalt| Win32 GUI: Simulate alt-key pressed. (Negri) -|:smagic| Like ":substitute", but always use 'magic'. -|:snomagic| Like ":substitute", but always use 'nomagic'. -|:tcl| Execute TCL command. -|:tcldo| Execute TCL command for a range of lines. -|:tclfile| Execute a TCL script file. -|:tearoff| Tear-off a menu (Win32 GUI). -|:tmenu| -|:tunmenu| Win32 GUI: menu tooltips. (Negri) -|:star| :* Execute a register. - - -Changed *changed-5.2* -------- - -Renamed functions: - buffer_exists() -> bufexists() - buffer_name() -> bufname() - buffer_number() -> bufnr() - file_readable() -> filereadable() - highlight_exists() -> hlexists() - highlightID() -> hlID() - last_buffer_nr() -> bufnr("$") -The old ones are still there, for backwards compatibility. - -The CTRL-_ command in Insert and Command-line mode is only available when the -new 'allowrevins' option is set. Avoids that people who want to type SHIFT-_ -accidentally enter reverse Insert mode, and don't know how to get out. - -When a file name path in ":tselect" listing is too long, remove a part in the -middle and put "..." there. - -Win32 GUI: Made font selector appear inside Vim window, not just any odd -place. (Negri) - -":bn" skips help buffers, unless currently in a help buffer. (Negri) - -When there is a status line and only one window, don't show '^' in the status -line of the current window. - -":*" used to be used for "'<,'>", the Visual area. But in Vi it's used as an -alternative for ":@". When 'cpoptions' includes '*' this is Vi compatible. - -When 'insertmode' is set, using CTRL-O to execute a mapping will work like -'insertmode' was not set. This allows "normal" mappings to be used even when -'insertmode' is set. - -When 'mouse' was set already (e.g., in the .vimrc file), don't automatically -set 'mouse' when the GUI starts. - -Removed the 'N', 'I' and 'A' flags from the 'mouse' option. - -Renamed "toggle option" to "boolean option". Some people thought that ":set -xyz" would toggle 'xyz' on/off each time. - -The internal variable "shell_error" contains the error code from the shell, -instead of just 0 or 1. - -When inserting or replacing, typing CTRL-V CTRL-<CR> used to insert "<C-CR>". -That is not very useful. Now the CTRL key is ignored and a <CR> is inserted. -Same for all other "normal" keys with modifiers. Mapping these modified key -combinations is still possible. -In Insert mode, <C-CR> and <S-Space> can be inserted by using CTRL-K and then -the special character. - -Moved "quotes" file to doc/quotes.txt, and "todo" file to doc/todo.txt. They -are now installed like other documentation files. - -winheight() function returns -1 for a non-existing window. It used to be -zero, but that is a valid height now. - -The default for 'selection' is "inclusive", which makes a difference when -using "$" or the mouse to move the cursor in Visual mode. - -":q!" does not exit when there are changed buffers which are hidden. Use -":qa!" to exit anyway. - -Disabled the Perl/Python/Tcl interfaces by default. Not many people use them -and they make the executable a lot bigger. The internal scripting language is -now powerful enough for most tasks. - -The strings from the 'titlestring' and 'iconstring' options are used -untranslated for the Window title and icon. This allows for including a <CR>. -Previously a <CR> would be shown as "^M" (two characters). - -When a mapping is started in Visual or Select mode which was started from -Insert mode (the mode shows "(insert) Visual"), don't return to Insert mode -until the mapping has ended. Makes it possible to use a mapping in Visual -mode that also works when the Visual mode was started from Select mode. - -Menus in $VIMRUNTIME/menu.vim no longer overrule existing menus. This helps -when defining menus in the .vimrc file, or when sourcing mswin.vim. - -Unix: Use /var/tmp for .swp files, if it exists. Files there survive a -reboot (at least on Linux). - - -Added *added-5.2* ------ - ---with-motif-lib configure argument. Allows for using a static Motif library. - -Support for mapping numeric keypad +,-,*,/ keys. (Negri) -When not mapped, they produce the normal character. - -Win32 GUI: When directory dropped on Gvim, cd there and edit new buffer. -(Negri) - -Win32 GUI: Made CTRL-Break work as interrupt, so that CTRL-C can be -used for mappings. - -In the output of ":map", highlight the "*" to make clear it's not part of the -rhs. (Roemer) - -When showing the Visual area, the cursor is not switched off, so that it can -be located. The Visual area is now highlighted with a grey background in the -GUI. This makes the cursor visible when it's also reversed. - -Win32: When started with single full pathname (e.g. via double-clicked file), -cd to that file's directory. (Negri) - -Win32 GUI: Tear-off menus, with ":tearoff <menu-name>" command. (Negri) -'t' option to 'guioptions': Add tearoff menu items for Win32 GUI and Motif. -It's included by default. -Win32 GUI: tearoff menu with submenus is indicated with a ">>". (Negri) - -Added ^Kaa and ^KAA digraphs. -Added "euro" symbol to digraph.c. (Corry) - -Support for Motif menu shortcut keys, using '&' like MS-Windows (Ollis). -Other GUIs ignore '&' in a menu name. - -DJGPP: Faster screen updating (John Lange). - -Clustering of syntax groups ":syntax cluster" (Bigham). -Including syntax files: ":syntax include" (Bigham). - -Keep column when switching buffers, when 'nosol' is set (Radics). - -Number function for Perl interface. - -Support for Intellimouse in Athena GUI. (Jensen) - -":sleep" also accepts an argument in milliseconds, when "m" is used. - -Added 'p' flag in 'guioptions': Install callbacks for enter/leave window -events. Makes cursor blinking work for Terhaar, breaks it for me. - -"--help" and "--version" command-line arguments. - -Non-text in ":list" output is highlighted with NonText. - -Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as -synonym for "iB". New: "i<" and "i>", to select <thing>. All this also for -"a" objects. - -'O' flag in 'shortmess': message for reading a file overwrites any previous -message. (Negri) - -Win32 GUI: 'T' flag in 'guioptions': switch toolbar on/off. -Included a list with self-made toolbar bitmaps. (Negri) - -Added menu priority for sub-menus. Implemented for Win32 and Motif GUI. -Display menu priority with ":menu" command. -Default and Syntax menus now include priority for items. Allows inserting -menu items in between the default ones. - -When the 'number' option is on, highlight line numbers with the LineNr group. - -"Ignore" highlight group: Text highlighted with this is made blank. It is -used to hide special characters in the help text. - -Included Exuberant Ctags version 2.3, with C++ support, Java support and -recurse into directories. (Hiebert) - -When a tags file is not sorted, and this is detected (in a simplistic way), an -error message is given. - -":unlet" accepts a "!", to ignore non-existing variables, and accepts more -than one argument. (Roemer) -Completion of variable names for ":unlet". (Roemer) - -When there is an error in a function which is called by another function, show -the call stack in the error message. - -New file name modifiers: -":.": reduce file name to be relative to current dir. -":~": reduce file name to be relative to home dir. -":s?pat?sub?": substitute "pat" with "sub" once. -":gs?pat?sub?": substitute "pat" with "sub" globally. - -New configure arguments: --enable-min-features and --enable-max-features. -Easy way to switch to minimum or maximum features. - -New compile-time feature: modify_fname. For file name modifiers, e.g, -"%:p:h". Can be disabled to save some code (16 bit DOS). - -When using whole-line completion in Insert mode, and 'cindent' is set, indent -the line properly. - -MSDOS and Win32 console: 'guicursor' sets cursor thickness. (Negri) - -Included new set of Farsi fonts. (Shiran) - -Accelerator text now also works in Motif. All menus can be defined with & for -mnemonic and TAB for accelerator text. They are ignored on systems that don't -support them. -When removing or replacing a menu, compare the menu name only up to the <Tab> -before the mnemonic. - -'i' and 'I' flags after ":substitute": ignore case or not. - -"make install" complains if the runtime files are missing. - -Unix: When finding an existing swap file that can't be opened, mention the -owner of the file in the ATTENTION message. - -The 'i', 't' and 'k' options in 'complete' now also print the place where they -are looking for matches. (Acevedo) - -"gJ" command: Join lines without inserting a space. - -Setting 'keywordprg' to "man -s" is handled specifically. The "-s" is removed -when no count given, the count is added otherwise. Configure checks if "man --s 2 read" works, and sets the default for 'keywordprg' accordingly. - -If you do a ":bd" and there is only one window open, Vim tries to move to a -buffer of the same type (i.e. non-help to non-help, help to help), for -consistent behavior to :bnext/:bprev. (Negri) - -Allow "<Nop>" to be used as the rhs of a mapping. ":map xx <Nop>", maps "xx" -to nothing at all. - -In a ":menu" command, "<Tab>" can be used instead of a real tab, in the menu -path. This makes it more easy to type, no backslash needed. - -POSIX compatible character classes for regexp patterns: [:alnum:], [:alpha:], -[:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], -[:space:], [:upper:] and [:xdigit:]. (Briscoe) - -regexp character classes (for fast syntax highlight matching): - digits: \d [0-9] \D not digit (Roemer) - hex: \x [0-9a-fA-F] \X not hex - octal: \o [0-7] \O not octal - word: \w [a-zA-Z0-9_] \W not word - head: \h [a-zA-Z_] \H not head - alphabetic: \a [a-zA-Z] \A not alphabetic - lowercase: \l [a-z] \L not lowercase - uppercase: \u [A-Z] \U not uppercase - -":set" now accepts "+=", |^=" and "-=": add or remove parts of a string -option, add or subtract a number from a number option. A comma is -automagically inserted or deleted for options that are a comma separated list. - -Filetype feature, for autocommands. Uses a file type instead of a pattern to -match a file. Currently only used for RISC OS. (Leonard) - -In a pattern for an autocommand, environment variables can be used. They are -expanded when the autocommand is defined. - -"BufFilePre" and "BufFilePost" autocommand evens: Before and after applying -the ":file" command to change the name of a buffer. -"VimLeavePre" autocommand event: before writing the .viminfo file. - -For autocommands argument: <abuf> is buffer number, like <afile>. - -Made syntax highlighting a bit faster when scrolling backwards, by keeping -more syncing context. - -Win32 GUI: Made scrolling faster by avoiding a redraw when deleting or -inserting screen lines. - -GUI: Made scrolling faster by not redrawing the scrollbar when the thumb moved -less than a pixel. - -Included ":highlight" in bugreport.vim. - -Created install.exe program, for simplistic installation on DOS and -MS-Windows. - -New register: '_', the black hole. When writing to it, nothing happens. When -reading from it, it's always empty. Can be used to avoid a delete or change -command to modify the registers, or reduce memory use for big changes. - -CTRL-V xff enters character by hex number. CTRL-V o123 enters character by -octal number. (Aaron) - -Improved performance of syntax highlighting by skipping check for "keepend" -when there isn't any. - -Moved the mode message ("-- INSERT --") to the last line of the screen. When -'cmdheight' is more than one, messages will remain readable. - -When listing matching files, they are also sorted on 'suffixes', such that -they are listed in the same order as CTRL-N retrieves them. - -synIDattr() takes a third argument (optionally), which tells for which -terminal type to get the attributes for. This makes it possible to run -2html.vim outside of gvim (using color names instead of #RRGGBB). - -Memory profiling, only for debugging. Prints at exit, and with "g^A" command. -(Kahn) - -DOS: When using a file in the current drive, remove the drive name: -"A:\dir\file" -> "\dir\file". This helps when moving a session file on a -floppy from "A:\dir" to "B:\dir". - -Increased number of remembered jumps from 30 to 50 per window. - -Command to temporarily disable 'hls' highlighting until the next search: -":nohlsearch". - -"gp" and "gP" commands: like "p" and "P", but leave the cursor just after the -inserted text. Used for the CTRL-V command in MS-Windows mode. - - -Fixed *fixed-5.2* ------ - -Win32 GUI: Could draw text twice in one place, for fake-bold text. Removed -this, Windows will handle the bold text anyway. (Negri) - -patch 5.1.1: Win32s GUI: pasting caused a crash (Negri) - -patch 5.1.2: When entering another window, where characters before the cursor -have been deleted, could have a cursor beyond the end of the line. - -patch 5.1.3: Win32s GUI: Didn't wait for external command to finish. (Negri) - -patch 5.1.4: Makefile.w32 can now also be used to generate the OLE version -(Scott). - -patch 5.1.5: Crashed when using syntax highlighting: cursor on a line that -doesn't fit in the window, and splitting that line in two. - -patch 5.1.6: Visual highlighting bug: After ":set nowrap", go to end of line -(so that the window scrolls horizontally), ":set wrap". Following Visual -selection was wrong. - -patch 5.1.7: When 'tagbsearch' off, and 'ignorecase' off, still could do -binary searching. - -patch 5.1.8: Win32 GUI: dragging the scrollbar didn't update the ruler. - -patch 5.1.9: Using ":gui" in .vimrc, caused xterm cursor to disappear. - -patch 5.1.10: A CTRL-N in Insert mode could cause a crash, when a buffer -without a name exists. - -patch 5.1.11: "make test" didn't work in the shadow directory. Also adjusted -"make shadow" for the links in the ctags directory. - -patch 5.1.12: "buf 123foo" used "123" as a count, instead as the start of a -buffer name. - -patch 5.1.13: When completing file names on the command-line, reallocating the -command-line may go wrong. - -patch 5.1.14: ":[nvci]unmenu" removed menu for all modes, when full menu patch -specified. - -Graceful handling of NULLs in drag-dropped file list. Handle passing NULL to -Fullname_save(). (Negri) - -Win32: ":!start" to invoke a program without opening a console, swapping -screens, or waiting for completion in either console or gui version, e.g. you -can type ":!start winfile". ALSO fixes "can't delete swapfile after spawning -a shell" bug. (enhancement of Aaron patch) (Negri) - -Win32 GUI: Fix CTRL-X default keymapping to be more Windows-like. (Negri) - -Shorten filenames on startup. If in /foo/bar, entering "vim ../bar/bang.c" -displays "bang.c" in status bar, not "/foo/bar/bang.c" (Negri) - -Win32 GUI: No copy to Windows clipboard when it's not desired. - -Win32s: Fix pasting from clipboard - made an assumption not valid under -Win32s. (Negri) - -Win32 GUI: Speed up calls to gui_mch_draw_string() and cursor drawing -functions. (Negri) - -Win32 GUI: Middle mouse button emulation now works in GUI! (Negri) - -Could skip messages when combining commands in one line, e.g.: -":echo "hello" | write". - -Perl interpreter was disabled before executing VimLeave autocommands. Could -not use ":perl" in them. (Aaron) - -Included patch for the Intellimouse (Aaron/Robinson). - -Could not set 'ls' to one, when last window has only one line. (Mitterand) - -Fixed a memory leak when removing menus. - -After ":only" the ruler could overwrite a message. - -Dos32: removed changing of __system_flags. It appears to work better when -it's left at the default value. - -p_aleph was an int instead of along, caused trouble on systems where -sizeof(int) != sizeof(long). (Schmidt) - -Fixed enum problems for Ultrix. (Seibert) - -Small redraw problem: "dd" on last line in file cleared wrong line. - -Didn't interpret "cmd | endif" when "cmd" starts with a range. E.g. "if 0 | -.d | endif". - -Command "+|" on the last line of the file caused ml_get errors. - -Memory underrun in eval_vars(). (Aaron) - -Don't rename files in a difficult way, except on Windows 95 (was also done on -Windows NT). - -Win32 GUI: An external command that produces an error code put the error -message in a dialog box. had to close the window and close the dialog. Now -the error code is displayed in the console. (Negri) - -"comctl32.lib" was missing from the GUI libraries in Makefile.w32. (Battle) - -In Insert mode, when entering a window in Insert mode, allow the cursor to be -one char beyond the text. - -Renamed machine dependent rename() to mch_rename(). Define mch_rename() to -rename() when it works properly. - -Rename vim_chdir() to mch_chdir(), because it's machine dependent. - -When using an arglist, and editing file 5 of 4, ":q" could cause "-1 more -files to edit" error. - -In if_python.c, VimCommand() caused an assertion when a do_cmdline() failed. -Moved the Python_Release_Vim() to before the VimErrorCheck(). (Harkins) - -Give an error message for an unknown argument after "--". E.g. for "vim ---xyz". - -The FileChangedShell autocommand didn't set <afile> to the name of the changed -file. - -When doing ":e file", causing the attention message, there sometimes was no -hit-enter prompt. Caused by empty line or "endif" at end of sourced file. - -A large number of patches for the VMS version. (Hunsaker) - -When CTRL-L completion (find longest match) results in a shorter string, no -completion is done (happens with ":help"). - -Crash in Win32 GUI version, when using an Ex "@" command, because -LinePointers[] was used while not initialized. - -Win32 GUI: allow mapping of Alt-Space. - -Output from "vim -h" was sent to stderr. Sending it to stdout is better, so -one can use "vim -h | more". - -In command-line mode, ":vi[!]" should reload the file, just like ":e[!]". -In Ex mode, ":vi" stops Ex mode, but doesn't reload the file. This is Vi -compatible. - -When using a ":set ls=1" in the .gvimrc file, would get a status line for a -single window. (Robinson) - -Didn't give an error message for ":set ai,xx". (Roemer) -Didn't give an error message for ":set ai?xx", ":set ai&xx", ":set ai!xx". - -Non-Unix systems: That a file exists but is unreadable is recognized as "new -file". Now check for existence when file can't be opened (like Unix). - -Unix: osdef.sh didn't handle declarations where the function name is at the -first column of the line. - -DJGPP: Shortening of file names didn't work properly, because get_cwd() -returned a path with backslashes. (Negri) - -When using a 'comments' part where a space is required after the middle part, -always insert a space when starting a new line. Helps for C comments, below a -line with "/****". - -Replacing path of home directory with "~/" could be wrong for file names -with embedded spaces or commas. - -A few fixes for the Sniff interface. (Leherbauer) - -When asking to hit 'y' or 'n' (e.g. for ":3,1d"), using the mouse caused -trouble. Same for ":s/x/y/c" prompt. - -With 'nowrap' and 'list', a Tab halfway on the screen was displayed as blanks, -instead of the characters specified with 'listchars'. Also for other -characters that take more than one screen character. - -When setting 'guifont' to an unknown font name, the previous font was lost and -a default font would be used. (Steed) - -DOS: Filenames in the root directory didn't get shortened properly. (Negri) - -DJGPP: making a full path name out of a file name didn't work properly when -there is no _fullpath() function. (Negri) - -Win32 console: ":sh" caused a crash. (Negri) - -Win32 console: Setting 'lines' and/or 'columns' in the _vimrc failed miserably -(could hang Windows 95). (Negri) - -Win32: The change-drive function was not correct, went to the wrong drive. -(Tsindlekht) - -GUI: When editing a command line in Ex mode, Tabs were sometimes not -backspaced properly, and unprintable characters were displayed directly. -non-GUI can still be wrong, because a system function is called for this. - -":set" didn't stop after an error. For example ":set no ai" gave an error for -"no", but still set "ai". Now ":set" stops after the first error. - -When running configure for ctags, $LDFLAGS wasn't passed to it, causing -trouble for IRIX. - -"@%" and "@#" when file name not set gave an error message. Now they just -return an empty string. (Steed) - -CTRL-X and CTRL-A didn't work correctly with negative hex and octal numbers. -(Steed) - -":echo" always started with a blank. - -Updating GUI cursor shape didn't always work (e.g., when blinking is off). - -In silent Ex mode ("ex -s" or "ex <file") ":s///p" didn't print a line. Also -a few other commands that explicitly print a text line didn't work. Made this -Vi compatible. - -Win32 version of _chdrive() didn't return correct value. (Tsindlekht) - -When using 't' in 'complete' option, no longer give an error message for a -missing tags file. - -Unix: tgoto() can return NULL, which was not handled correctly in configure. - -When doing ":help" from a buffer where 'binary' is set, also edited the help -file in binary mode. Caused extra ^Ms for DOS systems. - -Cursor position in a file was reset to 1 when closing a window. - -":!ls" in Ex mode switched off echo. - -When doing a double click in window A, while currently in window B, first -click would reset double click time, had to click three times to select a -word. - -When using <F11> in mappings, ":mkexrc" produced an exrc file that can't be -used in Vi compatible mode. Added setting of 'cpo' to avoid this. Also, add -a CTRL-V in front of a '<', to avoid a normal string to be interpreted as a -special key name. - -Gave confusing error message for ":set guifont=-*-lucida-*": first "font is -not fixed width", then "Unknown font". - -Some options were still completely left out, instead of included as hidden -options. - -While running the X11 GUI, ignore SIGHUP signals. Avoids a crash after -executing an external command (in rare cases). - -In os_unixx.h, signal() was defined to sigset(), while it already was. - -Memory leak when executing autocommands (was reported as a memory leak in -syntax highlighting). - -Didn't print source of error sometimes, because pointers were the same, -although names were different. - -Avoid a number of UMR errors from Purify (third argument to open()). - -A swap file could still be created just after setting 'updatecount' to zero, -when there is an empty buffer and doing ":e file". (Kutschera) - -Test 35 failed on 64 bit machines. (Schild) - -With "p" and "P" commands, redrawing was slow. - -Awk script for html documentation didn't work correctly with AIX awk. -Replaced "[ ,.);\] ]" with "[] ,.); ]". (Briscoe) -The makehtml.awk script had a small problem, causing extra lines to be -inserted. (Briscoe) - -"gqgq" could not be repeated. Repeating for "gugu" and "gUgU" worked in a -wrong way. Also made "gqq" work to be consistent with "guu". - -C indent was wrong after "case ':':". - -":au BufReadPre *.c put": Line from put text was deleted, because the buffer -was still assumed to be empty. - -Text pasted with the Edit/Paste menu was subject to 'textwidth' and -'autoindent'. That was inconsistent with using the mouse to paste. Now "*p -is used. - -When using CTRL-W CTRL-] on a word that's not a tag, and then CTRL-] on a tag, -window was split. - -":ts" got stuck on a tags line that has two extra fields. - -In Insert mode, with 'showmode' on, <C-O><C-G> message was directly -overwritten by mode message, if preceded with search command warning message. - -When putting the result of an expression with "=<expr>p, newlines were -inserted like ^@ (NUL in the file). Now the string is split up in lines at -the newline. - -putenv() was declared with "const char *" in pty.c, but with "char *" in -osdef2.h.in. Made the last one also "const char *". - -":help {word}", where +{word} is a feature, jumped to the feature list instead -of where the command was explained. E.g., ":help browse", ":help autocmd". - -Using the "\<xx>" form in an expression only got one byte, even when using a -special character that uses several bytes (e.g., "\<F9>"). -Changed "\<BS>" to produce CTRL-H instead of the special key code for the -backspace key. "\<Del>" produces 0x7f. - -":mkvimrc" didn't write a command to set 'compatible' or 'nocompatible'. - -The shell syntax didn't contain a "syn sync maxlines" setting. In a long file -without recognizable items, syncing took so long it looked like Vim hangs. -Added a maxlines setting, and made syncing interruptible. - -The "gs" command didn't flush output before waiting. - -Memory leaks for: - ":if 0 | let a = b . c | endif" - "let a = b[c]" - ":so {file}" where {file} contains a ":while" - -GUI: allocated fonts were never released. (Leonard) - -Makefile.bor: -- Changed $(DEFINES) into a list of "-D" options, so that it can also be used - for the resource compiler. (not tested!) -- "bcc.cfg" was used for all configurations. When building for another - configuration, the settings for the previous one would be used. Moved - "bcc.cfg" to the object directory. (Geddes) -- Included targets for vimrun, install, ctags and xxd. Changed the default to - use the Borland DLL Runtime Library, makes Vim.exe a log smaller. (Aaron) - -"2*" search for the word under the cursor with "2" prepended. (Leonard) - -When deleting into a specific register, would still overwrite the non-Win32 -GUI selection. Now ""x"*P works. - -When deleting into the "" register, would write to the last used register. -Now ""x always writes to the unnamed register. - -GUI Athena: A submenu with a '.' in it didn't work. E.g., -":amenu Syntax.XY\.Z.foo lll". - -When first doing ":tag foo" and then ":tnext" and/or ":tselect" the order of -matching tags could change, because the current file is different. Now the -existing matches are kept in the same order, newly found matches are added -after them, not matter what the current file is. - -":ta" didn't find the second entry in a tags file, if the second entry was -longer than the first one. - -When using ":set si tw=7" inserting "foo {^P}" made the "}" inserted at the -wrong position. can_si was still TRUE when the cursor is not in the indent of -the line. - -Running an external command in Win32 version had the problem that Vim exits -when the X on the console is hit (and confirmed). Now use the "vimrun" -command to start the external command indirectly. (Negri) - -Win32 GUI: When running an external filter, do it in a minimized DOS box. -(Negri) - -":let" listed variables without translation into printable characters. - -Win32 console: When resizing the window, switching back to the old size -(when exiting or executing an external command) sometimes failed. (Negri) -This appears to also fix a "non fixable" problem: -Win32 console in NT 4.0: When running Vim in a cmd window with a scrollbar, -the scrollbar disappeared and was not restored when Vim exits. This does work -under NT 3.51, it appears not to be a Vim problem. - -When executing BufDelete and BufUnload autocommands for a buffer without a -name, the name of the current buffer was used for <afile>. - -When jumping to a tag it reported "tag 1 of >2", while in fact there could be -only two matches. Changed to "tag 1 of 2 or more". - -":tjump tag" did a linear search in the tags file, which can be slow. - -Configure didn't find "LibXm.so.2.0", a Xm library with a version number. - -Win32 GUI: When using a shifted key with ALT, the shift modifier would remain -set, even when it was already used by changing the used key. E.g., "<M-S-9>" -resulted in "<M-S-(>", but it should be "<M-(>". (Negri) - -A call to ga_init() was often followed by setting growsize and itemsize. -Created ga_init2() for this, which looks better. (Aaron) - -Function filereadable() could call fopen() with an empty string, which might -be illegal. - -X Windows GUI: When executing an external command that outputs text, could -write one character beyond the end of a buffer, which caused a crash. (Kohan) - -When using "*" or "#" on a string that includes '/' or '?' (when these are -included in 'isk'), they were not escaped. (Parmelan) - -When adding a ToolBar menu in the Motif GUI, the submenu_id field was not -cleared, causing random problems. - -When adding a menu, the check if this menu (or submenu) name already exists -didn't compare with the simplified version (no mnemonic or accelerator) of the -new menu. Could get two menus with the same name, e.g., "File" and "&File". - -Breaking a line because of 'textwidth' at the last line in the window caused a -redraw of the whole window instead of a scroll. Speeds up normal typing with -'textwidth' a lot for slow terminals. - -An invalid line number produced an "invalid range" error, even when it wasn't -to be executed (inside "if 0"). - -When the unnamed, first buffer is re-used, the "BufDelete" autocommand was -not called. It would stick in a buffer list menu. - -When doing "%" on the NUL after the line, a "{" or "}" in the last character -of the line was not found. - -The Insert mode menu was not used for the "s" command, the Operator-pending -menu was used instead. - -With 'compatible' set, some syntax highlighting was not correct, because of -using "[\t]" for a search pattern. Now use the regexps for syntax -highlighting like the 'cpoptions' option is empty (as was documented already). - -When using "map <M-Space> ms" or "map <Space> sss" the output of ":map" didn't -show any lhs for the mapping (if 'isprint' includes 160). Now always use -<Space> and <M-Space>, even when they are printable. - -Adjusted the Syntax menu, so that the lowest entry fits on a small screen (for -Athena, where menus don't wrap). - -When using CTRL-E or CTRL-Y in Insert mode for characters like 'o', 'x' and -digits, repeating the insert didn't work. - -The file "tools/ccfilter.README.txt" could not be unpacked when using short -file names, because of the two dots. Renamed it to -"tools/ccfilter_README.txt". - -For a dark 'background', using Blue for Directory and SpecialKey highlight -groups is not very readable. Use Cyan instead. - -In the function uc_scan_attr() in ex_docmd.c there was a goto that jumped into -a block with a local variable. That's illegal for some compilers. - -Win32 GUI: There was a row of pixels at the bottom of the window which was not -drawn. (Aaron) - -Under DOS, editing "filename/" created a swap file of "filename/.swp". Should -be "filename/_swp". - -Win32 GUI: pointer was hidden when executing an external command. - -When 'so' is 999, "J" near the end of the file didn't redisplay correctly. - -":0a" inserted after the first line, instead of before the first line. - -Unix: Wildcard expansion didn't handle single quotes and {} patterns. Now -":file 'window.c'" removes the quotes and ":e 'main*.c'" works (literal '*'). -":file {o}{n}{e}" now results in file name "one". - -Memory leak when setting a string option back to its default value. - -============================================================================== -VERSION 5.3 *version-5.3* - -Version 5.3 was a bug-fix version of 5.2. There are not many changes. -Improvements made between version 5.2 and 5.3: - -Changed *changed-5.3* -------- - -Renamed "IDE" menu to "Tools" menu. - - -Added *added-5.3* ------ - -Win32 GUI: Give a warning when Vim is activated, and one of the files changed -since editing started. (Negri) - - -Fixed *fixed-5.3* ------ - -5.2.1: Win32 GUI: space for external command was not properly allocated, could -cause a crash. (Aaron) This was the reason to bring out 5.3 quickly after -5.2. - -5.2.2: Some commands didn't complain when used without an argument, although -they need one: ":badd", ":browse", ":call", ":confirm", ":behave", -":delfunction", ":delcommand" and ":tearoff". -":endfunction" outside of a function gave wrong error message: "Command not -implemented". Should be ":endfunction not inside a function". - -5.2.3: Win32 GUI: When gvim was installed in "Program files", or another path -with a space in it, executing external commands with vimrun didn't work. - -5.2.4: Pasting with the mouse in Insert mode left the cursor on the last -pasted character, instead of behind it. - -5.2.5: In Insert mode, cursor after the end of the line, a shift-cursor-left -didn't include the last character in the selection. - -5.2.6: When deleting text from Insert mode (with "<C-O>D" or the mouse), which -includes the last character in the line, the cursor could be left on the last -character in the line, instead of just after it. - -5.2.7: Win32 GUI: scrollbar was one pixel too big. - -5.2.8: Completion of "PopUp" menu showed the derivatives "PopUpc", "PopUPi", -etc. ":menu" also showed these. - -5.2.9: When using two input() functions on a row, the prompt would not be -drawn in column 0. - -5.2.10: A loop with input() could not be broken with CTRL-C. - -5.2.11: ":call asdf" and ":call asdf(" didn't give an error message. - -5.2.12: Recursively using ":normal" crashes Vim after a while. E.g.: -":map gq :normal gq<CR>" - -5.2.13: Syntax highlighting used 'iskeyword' from wrong buffer. When using -":help", then "/\k*" in another window with 'hlsearch' set. - -5.2.14: When using ":source" from a function, global variables would not be -available unless "g:" was used. - -5.2.15: XPM files can have the extension ".pm", which is the same as for Perl -modules. Added "syntax/pmfile.vim" to handle this. - -5.2.16: On Win32 and Amiga, "echo expand("%:p:h")" removed one dirname in an -empty buffer. mch_Fullname() didn't append a slash at the end of a directory -name. - -Should include the character under the cursor in the Visual area when using -'selection' "exclusive". This wasn't done for "%", "e", "E", "t" and "f". - -""p would always put register 0, instead of the unnamed (last used) register. -Reverse the change that ""x doesn't write in the unnamed (last used) register. -It would always write in register 0, which isn't very useful. Use "-x for the -paste mappings in Visual mode. - -When there is one long line on the screen, and 'showcmd' is off, "0$" didn't -redraw the screen. - -Win32 GUI: When using 'mousehide', the pointer would flicker when the cursor -shape is changed. (Negri) - -When cancelling Visual mode, and the cursor moves to the start, the wanted -column wasn't set, "k" or "j" moved to the wrong column. - -When using ":browse" or ":confirm", was checking for a comment and separating -bar, which can break some commands. - -Included fixes for Macintosh. (Kielhorn) - -============================================================================== -VERSION 5.4 *version-5.4* - -Version 5.4 adds new features, useful changes and a lot of bug fixes. - - -Runtime directory introduced *new-runtime-dir* ----------------------------- - -The distributed runtime files are now in $VIMRUNTIME, the user files in $VIM. -You normally don't set $VIMRUNTIME but let Vim find it, by using -$VIM/vim{version}, or use $VIM when that doesn't exist. This allows for -separating the user files from the distributed files and makes it more easy to -upgrade to another version. It also makes it possible to keep two versions of -Vim around, each with their own runtime files. - -In the Unix distribution the runtime files have been moved to the "runtime" -directory. This makes it possible to copy all the runtime files at once, -without the need to know what needs to be copied. - -The archives for DOS, Windows, Amiga and OS/2 now have an extra top-level -"vim" directory. This is to make clear that user-modified files should be put -here. The directory that contains the executables doesn't have '-' or '.' -characters. This avoids strange extensions. - -The $VIM and $VIMRUNTIME variables are set when they are first used. This -allows them to be used by Perl, for example. - -The runtime files are also found in a directory called "$VIM/runtime". This -helps when running Vim after just unpacking the runtime archive. When using -an executable in the "src" directory, Vim checks if "vim54" or "runtime" can -be added after removing it. This make the runtime files be found just after -compiling. - -A default for $VIMRUNTIME can be given in the Unix Makefile. This is useful -if $VIM doesn't point to above the runtime directory but to e.g., "/etc/". - - -Filetype introduced *new-filetype-5.4* -------------------- - -Syntax files are now loaded with the new FileType autocommand. Old -"mysyntaxfile" files will no longer work. |filetypes| - -The scripts for loading syntax highlighting have been changed to use the -new Syntax autocommand event. - -This combination of Filetype and Syntax events allows tuning the syntax -highlighting a bit more, also when selected from the Syntax menu. The -FileType autocommand can also be used to set options and mappings specifically -for that type of file. - -The "$VIMRUNTIME/filetype.vim" file is not loaded automatically. The -":filetype on" command has been added for this. ":syntax on" also loads it. - -The 'filetype' option has been added. It is used to trigger the FileType -autocommand event, like the 'syntax' option does for the Syntax event. - -":set syntax=OFF" and ":set syntax=ON" can be used (in a modeline) to switch -syntax highlighting on/off for the current file. - -The Syntax menu commands have been moved to $VIMRUNTIME/menu.vim. The Syntax -menu is included both when ":filetype on" and when ":syntax manual" is used. - -Renamed the old 'filetype' option to 'osfiletype'. It was only used for -RISCOS. 'filetype' is now used for the common file type. - -Added the ":syntax manual" command. Allows manual selection of the syntax to -be used, e.g., from a modeline. - - -Vim script line continuation *new-line-continuation* ----------------------------- - -When an Ex line starts with a backslash, it is concatenated to the previous -line. This avoids the need for long lines. |line-continuation| (Roemer) -Example: > - if has("dialog_con") || - \ has("dialog_gui") - :let result = confirm("Enter your choice", - \ "&Yes\n&No\n&Maybe", - \ 2) - endif - - -Improved session files *improved-sessions* ----------------------- - -New words for 'sessionoptions': -- "help" Restore the help window. -- "blank" Restore empty windows. -- "winpos" Restore the Vim window position. Uses the new ":winpos" - command -- "buffers" Restore hidden and unloaded buffers. Without it only the - buffers in windows are restored. -- "slash" Replace backward by forward slashes in file names. -- "globals" Store global variables. -- "unix" Use unix file format (<NL> instead of <CR><NL>) - -The ":mksession" and 'sessionoptions' are now in the +mksession feature. - -The top line of the window is also restored when using a session file. - -":mksession" and ":mkvimrc" don't store 'fileformat', it should be detected -when loading a file. - -(Most of this was done by Vince Negri and Robert Webb) - - -Autocommands improved *improved-autocmds-5.4* ---------------------- - -New events: -|FileType| When the file type has been detected. -|FocusGained| When Vim got input focus. (Negri) -|FocusLost| When Vim lost input focus. (Negri) -|BufCreate| Called just after a new buffer has been created or has been - renamed. (Madsen) -|CursorHold| Triggered when no key has been typed for 'updatetime'. Can be - used to do something with the word under the cursor. (Negri) - Implemented CursorHold autocommand event for Unix. (Zellner) - Also for Amiga and MS-DOS. -|GUIEnter| Can be used to do something with the GUI window after it has - been created (e.g., a ":winpos 100 50"). -|BufHidden| When a buffer becomes hidden. Used to delete the - option-window when it becomes hidden. - -Also trigger |BufDelete| just before a buffer is going to be renamed. (Madsen) - -The "<amatch>" pattern can be used like "<afile>" for autocommands, except -that it is the matching value for the FileType and Syntax events. - -When ":let @/ = <string>" is used in an autocommand, this last search pattern -will be used after the autocommand finishes. - -Made loading autocommands a bit faster. Avoid doing strlen() on each exiting -pattern for each new pattern by remembering the length. - - -Encryption *new-encryption* ----------- - -Files can be encrypted when writing and decrypted when reading. Added the -'key' option, "-x" command line argument and ":X" command. |encryption| (based -on patch from Mohsin Ahmed) - -When reading a file, there is an automatic detection whether it has been -crypted. Vim will then prompt for the key. - -Note that the encryption method is not compatible with Vi. The encryption is -not unbreakable. This allows it to be exported from the US. - - -GTK GUI port *new-GTK-GUI* ------------- - -New GUI port for GTK+. Includes a toolbar, menu tearoffs, etc. |gui-gtk| -Added the |:helpfind| command. (Kahn and Dalecki) - - -Menu changes *menu-changes-5.4* ------------- - -Menus can now also be used in the console. It is enabled by the new -'wildmenu' option. This shows matches for command-line completion like a -menu. This works as a minimal file browser. - -The new |:emenu| command can be used to execute a menu item. - -Uses the last status line to list items, or inserts a line just above the -command line. (Negri) - -The 'wildcharx' option can be used to trigger 'wildmenu' completion from a -mapping. - -When compiled without menus, this can be detected with has("menu"). Also show -this in the ":version" output. Allow compiling GUI versions without menu -support. Only include toolbar support when there is menu support. - -Moved the "Window" menu all the way to the right (priority 70). Looks more -familiar for people working with MS-Windows, shouldn't matter for others. - -Included "Buffers" menu. Works with existing autocommands and functions. It -can be disabled by setting the "no_buffers_menu" variable. (Aaron and Madsen) - -Win32 supports separators in a menu: "-.*-". (Geddes) -Menu separators for Motif now work too. - -Made Popup menu for Motif GUI work. (Madsen) - -'M' flag in 'guioptions': Don't source the system menu. - -All the menu code has been moved from gui.c to menu.c. - - -Viminfo improved *improved-viminfo* ----------------- - -New flags for 'viminfo': -'!' Store global variables in the viminfo file if they are in uppercase - letters. (Negri) -'h' Do ":nohlsearch" when loading a viminfo file. - -Store search patterns in the viminfo file with their offset, magic, etc. Also -store the flag whether 'hlsearch' highlighting is on or off (which is not used -if the 'h' flag is in 'viminfo'). - -Give an error message when setting 'viminfo' without commas. - - -Various new commands *new-commands-5.4* --------------------- - -Operator |g?|: rot13 encoding. (Negri) - -|zH| and |zL| commands: Horizontal scrolling by half a page. -|gm| move cursor to middle of screen line. (Ideas by Campbell) - -Operations on Visual blocks: |v_b_I|, |v_b_A|, |v_b_c|, |v_b_C|, |v_b_r|, -|v_b_<| and |v_b_>|. (Kelly) - -New command: CTRL-\ CTRL-N, which does nothing in Normal mode, and goes to -Normal mode when in Insert or Command-line mode. Can be used by VisVim or -other OLE programs to make sure Vim is in Normal mode, without causing a beep. -|CTRL-\_CTRL-N| - -":cscope kill" command to use the connection filename. |:cscope| (Kahn) - -|:startinsert| command: Start Insert mode next. - -|:history| command, to show all four types of histories. (Roemer) - -|[m|, |[M|, |]m| and |]M| commands, for jumping backward/forward to start/end -of method in a (Java) class. - -":@*" executes the * register. |:@| (Acevedo) - -|go| and |:goto| commands: Jump to byte offset in the file. - -|gR| and |gr| command: Virtual Replace mode. Replace characters without -changing the layout. (Webb) - -":cd -" changes to the directory from before the previous ":cd" command. -|:cd-| (Webb) - -Tag preview commands |:ptag|. Shows the result of a ":tag" in a dedicated -window. Can be used to see the context of the tag (e.g., function arguments). -(Negri) -|:pclose| command, and CTRL-W CTRL-Z: Close preview window. (Moore) -'previewheight' option, height for the preview window. -Also |:ppop|, |:ptnext|, |:ptprevious|, |:ptNext|, |:ptrewind|, |:ptlast|. - -|:find| and |:sfind| commands: Find a file in 'path', (split window) and edit -it. - -The |:options| command opens an option window that shows the current option -values. Or use ":browse set" to open it. Options are grouped by function. -Offers short help on each option. Hit <CR> to jump to more help. Edit the -option value and hit <CR> on a "set" line to set a new value. - - -Various new options *new-options-5.4* -------------------- - -Scroll-binding: 'scrollbind' and 'scrollopt' options. Added |:syncbind| -command. Makes windows scroll the same amount (horizontally and/or -vertically). (Ralston) - -'conskey' option for MS-DOS. Use direct console I/O. This should work with -telnet (untested!). - -'statusline' option: Configurable contents of the status line. Also allows -showing the byte offset in the file. Highlighting with %1* to %9*, using the -new highlight groups User1 to User9. (Madsen) - -'rulerformat' option: Configurable contents of the ruler, like 'statusline'. -(Madsen) - -'write' option: When off, writing files is not allowed. Avoids overwriting a -file even with ":w!". The |-m| command line option resets 'write'. - -'clipboard' option: How the clipboard is used. Value "unnamed": Use unnamed -register like "*. (Cortopassi) Value "autoselect": Like what 'a' in -'guioptions' does but works in the terminal. - -'guifontset' option: Specify fonts for the +fontset feature, for the X11 GUI -versions. Allows using normal fonts when vim is compiled with this feature. -(Nam) - -'guiheadroom' option: How much room to allow above/below the GUI window. -Used for Motif, Athena and GTK. - -Implemented 'tagstack' option: When off, pushing tags onto the stack is -disabled (Vi compatible). Useful for mappings. - -'shellslash' option. Only for systems that use a backslash as a file -separator. This option will use a forward slash in file names when expanding -it. Useful when 'shell' is sh or csh. - -'pastetoggle' option: Key sequence that toggles 'paste'. Works around the -problem that mappings don't work in Insert mode when 'paste' is set. - -'display' option: When set to "lastline", the last line fills the window, -instead of being replaced with "@" lines. Only the last three characters are -replaced with "@@@", to indicate that the line has not finished yet. - -'switchbuf' option: Allows re-using existing windows on a buffer that is being -jumped to, or split the window to open a new buffer. (Roemer) - -'titleold' option. Replaces the fixed string "Thanks for flying Vim", which -is used to set the title when exiting. (Schild) - - -Vim scripts *new-script-5.4* ------------ - -The |exists()| function can also check for existence of a function. (Roemer) -An internal function is now found with a binary search, should be a bit -faster. (Roemer) - -New functions: -- |getwinposx()| and |getwinposy()|: get Vim window position. (Webb) -- |histnr()|, |histadd()|, |histget()| and |histdel()|: Make history - available. (Roemer) -- |maparg()|: Returns rhs of a mapping. Based on a patch from Vikas. -- |mapcheck()|: Check if a map name matches with an existing one. -- |visualmode()|: Return type of last Visual mode. (Webb) -- |libcall()|: Call a function in a library. Currently only for Win32. (Negri) -- |bufwinnr()|: find window that contains the specified buffer. (Roemer) -- |bufloaded()|: Whether a buffer exists and is loaded. -- |localtime()| and |getftime()|: wall clock time and last modification time - of a file (Webb) -- |glob()|: expand file name wildcards only. -- |system()|: get the raw output of an external command. (based on a patch - from Aaron). -- |strtrans()|: Translate String into printable characters. Used for - 2html.vim script. -- |append()|: easy way to append a line of text in a buffer. - -Changed functions: -- Optional argument to |strftime()| to give the time in seconds. (Webb) -- |expand()| now also returns names for files that don't exist. - -Allow numbers in the name of a user command. (Webb) - -Use "v:" for internal Vim variables: "v:errmsg", "v:shell_error", etc. The -ones from version 5.3 can be used without "v:" too, for backwards -compatibility. - -New variables: -"v:warningmsg" and "v:statusmsg" internal variables. Contain the last given -warning and status message. |v:warningmsg| |v:statusmsg| (Madsen) -"v:count1" variable: like "v:count", but defaults to one when no count is -used. |v:count1| - -When compiling without expression evaluation, "if 1" can be used around the -not supported commands to avoid it being executed. Works like in Vim 4.x. -Some of the runtime scripts gave errors when used with a Vim that was compiled -with minimal features. Now "if 1" is used around code that is not always -supported. - -When evaluating an expression with && and ||, skip the parts that will not -influence the outcome. This makes it faster and avoids error messages. (Webb) -Also optimized the skipping of expressions inside an "if 0". - - -Avoid hit-enter prompt *avoid-hit-enter* ------------------------ - -Added 'T' flag to 'shortmess': Truncate all messages that would cause the -hit-enter prompt (unless that would happen anyway). -The 'O' flag in 'shortmess' now also applies to quickfix messages, e.g., from -the ":cn" command. - -The default for 'shortmess' is now "filnxtToO", to make most messages fit on -the command line, and not cause the hit-enter prompt. - -Previous messages can be viewed with the new |:messages| command. - -Some messages are shown fully, even when 'shortmess' tells to shorten -messages, because the user is expected to want to see them in full: CTRL-G and -some quickfix commands. - - -Improved quickfix *improved-quickfix* ------------------ - -Parse change-directory lines for gmake: "make[1]: Entering directory 'name'". -Uses "%D" and "%X" in 'errorformat'. -Also parse "Making {target} in {dir}" messages from make. Helps when not -using GNU make. (Schandl) - -Use 'isfname' for "%f" in 'errorformat'. - -Parsing of multi-line messages. |errorformat-multi-line| - -Allow a range for the |:clist| command. (Roemer) - -Support for "global" file names, for error formats that output the file name -once for several errors. (Roemer) - -|:cnfile| jumps to first error in next file. - -"$*" in 'makeprg' is replaced by arguments to ":make". (Roemer) - - -Regular expressions *regexp-changes-5.4* -------------------- - -In a regexp, a '$' before "\)" is also considered to be an end-of-line. |/$| -In patterns "^" after "\|" or "\(" is a start-of-line. |/^| (Robinson) - -In a regexp, in front of "\)" and "\|" both "$" and "\$" were considered -end-of-line. Now use "$" as end-of-line and "\$" for a literal dollar. Same -for '^' after "\(" and "\|". |/\$| |/\^| - -Some search patterns can be extremely slow, even though they are not really -illegal. For example: "\([^a-z]\+\)\+Q". Allow interrupting any regexp -search with CTRL-C. - -Register "/: last search string (read-only). (Kohan) Changed to use last used -search pattern (like what 'hlsearch' uses). Can set the search pattern with -":let @/ = {expr}". - -Added character classes to search patterns, to avoid the need for removing the -'l' flag from 'cpoptions': |[:tab:]|, |[:return:]|, |[:backspace:]| and -|[:escape:]|. - -By adding a '?' after a comparative operator in an expression, the comparison -is done by ignoring case. |expr-==?| - - -Other improvements made between version 5.3 and 5.4 ---------------------------------------------------- - -Changed *changed-5.4* -------- - -Unix: Use $TMPDIR for temporary files, if it is set and exists. - -Removed "Empty buffer" message. It isn't useful and can cause a hit-enter -prompt. (Negri) - -"ex -" now reads commands from stdin and works in silent mode. This is to be -compatible with the original "ex" command that is used for scripts. - -Default range for ":tcldo" is the whole file. - -Cancelling Visual mode with ESC moved the cursor. There appears to be no -reason for this. Now leave the cursor where it is. - -The ":grep" and ":make" commands see " as part of the arguments, instead of -the start of a comment. - -In expressions the "=~" and "!~" operators no longer are affected by -'ignorecase'. - -Renamed vimrc_example to vimrc_example.vim and gvimrc_example to -gvimrc_example.vim. Makes them being recognized as vim scripts. - -"gd" no longer starts searching at the end of the previous function, but at -the first blank line above the start of the current function. Avoids that -using "gd" in the first function finds global a variable. - -Default for 'complete' changed from ".,b" to ".,w,b,u,t,i". Many more matches -will be found, at the cost of time (the search can be interrupted). - -It is no longer possible to set 'shell*' options from a modeline. Previously -only a warning message was given. This reduces security risks. - -The ordering of the index of documentation files was changed to make it more -easy to find a subject. - -On MS-DOS and win32, when $VIM was not set, $HOME was used. This caused -trouble if $HOME was set to e.g., "C:\" for some other tool, the runtime files -would not be found. Now use $HOME only for _vimrc, _gvimrc, etc., not to find -the runtime file. - -When 'tags' is "./{fname}" and there is no file name for the current buffer, -just use it. Previously it was skipped, causing "vim -t {tag}" not to find -many tags. - -When trying to select text in the 'scrolloff' area by mouse dragging, the -resulting scrolling made this difficult. Now 'scrolloff' is temporarily set -to 0 or 1 to avoid this. But still allow scrolling in the top line to extend -to above the displayed text. - -Default for 'comments' now includes "sl:/*,mb: *,ex:*/", to make javadoc -comments work. Also helps for C comments that start with "/*******". - -CTRL-X CTRL-] Insert mode tag expansion tried to expand to all tags when used -after a non-ID character, which can take a very long time. Now limit this to -200 matches. Also used for command-line tag completion. - -The OS/2 distribution has been split in two files. It was too big to fit on a -floppy. The same runtime archive as for the PC is now used. - -In the documentation, items like <a-z> have been replaced with {a-z} for -non-optional arguments. This avoids confusion with key names: <C-Z> is a -CTRL-Z, not a character between C and Z, that is {C-Z}. - - -Added *added-5.4* ------ - -Color support for the iris-ansi builtin termcap entry. (Tubman) - -Included VisVim version 1.3a. (Erhardt) - -Win32 port for SNiFF+ interface. (Leherbauer) -Documentation file for sniff interface: if_sniff.txt. (Leherbauer) - -Included the "SendToVim" and "OpenWithVim" programs in the OleVim directory. -To be used with the OLE version of gvim under MS-Windows. (Schaller) - -Included Exuberant Ctags version 3.2.4 with Eiffel support. (Hiebert) - -When a file that is being edited is deleted, give a warning (like when the -time stamp changed). - -Included newer versions of the HTML-generating Awk and Perl scripts. (Colombo) - -Linux console mouse support through "gpm". (Tsindlekht) - -Security fix: Disallow changing 'secure' and 'exrc' from a modeline. When -'secure' is set, give a warning for changing options that contain a program -name. - -Made the Perl interface work with Perl 5.005 and threads. (Verdoolaege) - -When giving an error message for an ambiguous mapping, include the offending -mapping. (Roemer) - -Command line editing: -- Command line completion of mappings. (Roemer) -- Command line completion for ":function", ":delfunction", ":let", ":call", - ":if", etc. (Roemer) -- When using CTRL-D completion for user commands that have - "-complete=tag_listfiles" also list the file names. (Madsen) -- Complete the arguments of the ":command" command. (Webb) -- CTRL-R . in command line inserts last inserted text. CTRL-F, CTRL-P, CTRL-W - and CTRL-A after CTRL-R are used to insert an object from under the cursor. - (Madsen) - -Made the text in uganda.txt about copying Vim a bit more clear. - -Updated the Vim tutor. Added the "vimtutor" command, which copies the tutor -and starts Vim on it. "make install" now also copies the tutor. - -In the output of ":clist" the current entry is highlighted, with the 'i' -highlighting (same as used for 'incsearch'). - -For the ":clist" command, you can scroll backwards with "b" (one screenful), -"u" (half a screenful) and "k" (one line). - -Multi-byte support: -- X-input method for multi-byte characters. And various fixes for multi-byte - support. (Nam) -- Hangul input method feature: |hangul|. (Nam) -- Cleaned up configuration of multi-byte support, XIM, fontset and Hangul - input. Each is now configurable separately. -- Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam) -- Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam) -- XIM support for GTK+. (Nam) -- First attempt to include support for SJIS encoding. (Nagano) -- When a double-byte character doesn't fit at the end of the line, put a "~" - there and print it on the next line. -- Optimize output of multi-byte text. (Park) -- Win32 IME: preedit style is like over-the-spot. (Nagano) -- Win32 IME: IME mode change now done with ImmSetOpenStatus. (Nagano) -- GUI Athena: file selection dialog can display multi-byte characters. - (Nagano) -- Selection reply for XA_TEXT as XA_STRING. (Nagano) - -"runtime/macros/diffwin.vim". Mappings to make a diff window. (Campbell) - -Added ".obj" to the 'suffixes' option. - -Reduced size of syntax/synload.vim by using the ":SynAu" user command. -Automated numbering of Syntax menu entries in menu.vim. -In the Syntax menu, insert separators between syntax names that start with -a different letter. (Geddes) - -Xterm: -- Clipboard support when using the mouse in an xterm. (Madsen) -- When using the xterm mouse, track dragging of the mouse. Use xterm escape - sequences when possible. It is more precise than other methods, but - requires a fairly recent xterm version. It is enabled with "xterm2" in - 'ttymouse'. (Madsen) -- Check xterm patch level, to set the value of 'ttymouse'. Has only been - added to xterm recently (patch level > 95). Uses the new 't_RV' termcap - option. Set 'ttymouse' to "xterm2" when a correct response is recognized. - Will make xterm mouse dragging work better. -- Support for shifted function keys on xterm. Changed codes for shifted - cursor keys to what the xterm actually produces. Added codes for shifted - <End> and <Home>. -- Added 't_WP' to set the window position in pixels and 't_WS' to set the - window size in characters. Xterm can now move (used for ":winpos") and - resize (use for ":set lines=" and ":set columns="). - -X11: -- When in Visual mode but not owning the selection, display the Visual area - with the VisualNOS group to show this. (Madsen) -- Support for requesting the type of clipboard support. Used for AIX and - dtterm. (Wittig) -- Support compound_text selection (even when compiled without multi-byte). - -Swap file: -- New variation for naming swap files: Replace path separators into %, place - all swap files in one directory. Used when a name in 'dir' ends in two path - separators. (Madsen) -- When a swap file is found, show whether it contains modifications or not in - the informative message. (Madsen) -- When dialogs are supported, use a dialog to ask the user what to do when a - swapfile already exists. - -"popup_setpos" in 'mousemodel' option. Allows for moving the cursor when -using the right mouse button. - -When a buffer is deleted, the selection for which buffer to display instead -now uses the most recent entry from the jump list. (Madsen) - -When using CTRL-O/CTRL-I, skip deleted buffers. - -A percentage is shown in the ruler, when there is room. - -Used autoconf 1.13 to generate configure. - -Included get_lisp_indent() from Dirk van Deun. Does better Lisp indenting -when 'p' flag in 'cpoptions' is not included. - -Made the 2html.vim script quite a bit faster. (based on ideas from Geddes) - -Unix: -- Included the name of the user that compiled Vim and the system name it was - compiled on in the version message. -- "make install" now also installs the "tools" directory. Makes them - available for everybody. -- "make check" now does the same as "make test". "make test" checks for - Visual block mode shift, insert, replace and change. -- Speed up comparing a file name with existing buffers by storing the - device/inode number with the buffer. -- Added configure arguments "--disable-gtk", "--disable-motif" and - "--disable-athena", to be able to disable a specific GUI (when it doesn't - work). -- Renamed the configure arguments for disabling the check for specific GUIs. - Should be clearer now. (Kahn) -- On a Digital Unix system ("OSF1") check for the curses library before - termlib and termcap. (Schild) -- "make uninstall_runtime" will only delete the version-specific files. Can - be used to delete the runtime files of a previous version. - -Macintosh: (St-Amant) -- Dragging the scrollbar, like it's done for the Win32 GUI. Moved common code - from gui_w32.c to gui.c -- Added dialogs and file browsing. -- Resource fork preserved, warning when it will be lost. -- Copy original file attributes to newly written file. -- Set title/notitle bug solved. -- Filename completion improved. -- Grow box limit resize to a char by char size. -- Use of rgb.txt for more colors (but give back bad color). -- Apple menu works (beside the about...). -- Internal border now vim compliant. -- Removing a menu doesn't crash anymore. -- Weak-linking of Python 1.5.1 (only on PPC). Python is supported when the - library is available. -- If an error is encountered when sourcing the users .vimrc, the alert box now - shows right away with the OK button defaulted. There's no more "Delete"-key - sign at the start of each line -- Better management of environment variables. Now $VIM is calculated only - once, not regenerated every time it is used. -- No more CPU hog when in background. -- In a sourced Vim script the Mac file format can be recognized, just like DOS - file format is. - -When both "unix" and "mac" are present in 'fileformats', prefer "mac" format -when there are more CR than NL characters. -When using "mac" fileformat, use CR instead of a NL, because NL is used for -NUL. Will preserve all characters in a file. (Madsen) - -The DOS install.exe now contains checks for an existing installation. It -avoids setting $VIM and $PATH again. -The install program for Dos/Windows can now install Vim in the popup menu, by -adding two registry keys. - -Port to EGCS/mingw32. New Makefile.ming. (Aaron) - -DOS 16 bit: Don't include cursor shape stuff. Save some bytes. - -TCL support to Makefile.w32. (Duperval) - -OS/2: Use argv[0] to find runtime files. - -When using "gf" to go to a buffer that has already been used, jump to the -line where the cursor last was. - -Colored the output of ":tselect" a bit more. Different highlighting between -tag name and file name. Highlight field name ("struct:") separately from -argument. - -Backtick expansion for non-Unix systems. Based on a patch from Aaron. -Allows the use of things like ":n `grep -l test *.c`" and -"echo expand('`ls m*`')". - -Check for the 'complete' option when it is set. (Acevedo) -'d' flag in 'complete' searches for defined names or macros. -While searching for Insert mode completions in include files and tags files, -check for typeahead, so that you can use matches early. (Webb) -The '.' flag in 'complete' now scans the current buffer completely, ignoring -'nowrapscan'. (Webb) - -Added '~' flag to 'whichwrap'. (Acevedo) - -When ending the Visual mode (e.g., with ESC) don't grab ownership of the -selection. - -In a color terminal, "fg" and "bg" can be used as color names. They stand for -the "Normal" colors. - -A few cscope cleanups. (Kahn) - -Included changed vimspell.sh from Schemenauer. - -Concatenation of strings in an expression with "." is a bit faster. (Roemer) - -The ":redir" command can now redirect to a register: ":redir @r". (Roemer) - -Made the output of ":marks" and ":jumps" look similar. When the mark is in -the current file, show the text at the mark. Also for ":tags". - -When configure finds ftello() and fseeko(), they are used in tag.c (for when -you have extremely big tags files). - -Configure check for "-FOlimit,2000" argument for the compiler. (Borsenkow) - -GUI: -- When using ":gui" in a non-GUI Vim, give a clear error message. -- "gvim -v" doesn't start the GUI (if console support is present). -- When in Ex mode, use non-Visual selection for the whole screen. -- When starting with "gvim -f" and using ":gui" in the .gvimrc file, Vim - forked anyway. Now the "-f" flag is remembered for ":gui". Added "gui -b" - to run gvim in the background anyway. - -Motif GUI: -- Check for "-lXp" library in configure (but it doesn't work yet...). -- Let configure check for Lesstif in "/usr/local/Lesstif/Motif*". Changed the - order to let a local Motif version override a system standard version. - -Win32 GUI: -- When using "-register" or "-unregister" in the non-OLE version, give an - error message. -- Use GTK toolbar icons. Make window border look better. Use sizing handles - on the lower left&right corners of the window. (Negri) -- When starting an external command with ":!start" and the command can not be - executed, give an error message. (Webb) -- Use sizing handles for the grey rectangles below the scrollbars. Can draw - toolbar in flat mode now, looks better. (Negri) -- Preparations for MS-Windows 3.1 addition. Mostly changing WIN32 to MSWIN - and USE_GUI_WIN32 to USE_GUI_MSWIN. (Negri) - -Avoid allocating the same string four times in buflist_findpat(). (Williams) - -Set title and icon text with termcap options 't_ts', 't_fs', 't_IS' and -'t_IE'. Allows doing this on any terminal that supports setting the title -and/or icon text. (Schild) - -New 'x' flag in 'comments': Automatically insert the end part when its last -character is typed. Helps to close a /* */ comment in C. (Webb) - -When expand() has a second argument which is non-zero, don't use 'suffixes' -and 'wildignore', return all matches. - -'O' flag in 'cpoptions: When not included, Vim will not overwrite a file, if -it didn't exist when editing started but it does exist when the buffer is -written to the file. The file must have been created outside of Vim, possibly -without the user knowing it. When this is detected after a shell command, -give a warning message. - -When editing a new file, CTRL-G will show [New file]. When there were errors -while reading the file, CTRL-G will show [Read errors]. - -":wall" can now use a dialog and file-browsing when needed. - -Grouped functionality into new features, mainly to reduce the size of the -minimal version: -+linebreak: 'showbreak', 'breakat' and 'linebreak' -+visualextra: "I"nsert and "A"ppend in Visual block mode, "c"hange all lines - in a block, ">" and "<": Shifting a block, "r": Replacing a - Visual area with one character. -+comments: 'comments' -+cmdline_info: 'ruler' and 'showcmd'. Replaces +showcmd. -"+title" Don't add code to set title or icon for MSDOS, this was not - possible anyway. -+cmdline_compl Disable commandline completion at compile time, except for - files, directories and help items. - -Moved features from a list of function calls into an array. Should save a bit -of space. - -While entering the body of a function, adjust indent according to "if" and -"while" commands. - -VMS: Adjusted os_vms.mms a bit according to suggestions from Arpadffy. - -The flags in the 'comments' option can now include an offset. This makes it -possible to align "/*****", "/* xxx" and "/*" comments with the same -'comments' setting. The default value for 'comments' uses this. -Added 'O' flag: Don't use this part for the "O" command. Useful for "set -com=sO:*\ -,mO:*\ \ ,exO:*/" - -FileType autocommands recognize ".bak", ".orig" and "~" extensions and remove -them to find the relevant extension. - -The tutorial for writing a Vim script file has been extended. - -Some more highlighting in help files, for items that are not typed literally. - -Can use "CTRL-W CTRL-G" like "CTRL-W g". - -"make test" for OS/2. - -Adjusted configure to automatically use the GUI for BeOS. - - -Fixed *fixed-5.4* ------ - -5.3.1: When using an autocommand for BufWritePre that changes the name of the -buffer, freed memory would be used. (Geddes) - -Mac: Compiler didn't understand start of skip_class_name(). - -Win32 GUI: -- When cancelling the font requester, don't give an error message. -- When a tearoff-menu is open and its menu is deleted, Vim could crash. - (Negri) -- There was a problem on Windows 95 with (un)maximizing the window. - (Williams) -- when 'mousehide' is set, the mouse would stay hidden when a menu is dropped - with the keyboard. (Ralston) -- The tempname() function already created the file. Caused problems when - using ":w". Now the file is deleted. -- Cursor disappeared when ending up in the top-left character on the screen - after scrolling. (Webb) -- When adding a submenu for a torn-off menu, it was not updated. -- Menu tooltip was using the toolbar tooltip. (Negri) -- Setting 'notitle' didn't remove the title. (Steed) -- Using ":!start cmd" scrolled the screen one line up, and didn't wait for - return when the command wasn't found. - -Cscope interface: Sorting of matches was wrong. Starting the interface could -fail. (Kahn) - -Motif GUI: Could not compile with Motif 1.1, because some tear-off -functionality was not in #ifdefs. - -Configure could sometimes not compile or link the test program for sizeof(int) -properly. This caused alignment problems for the undo structure allocations. -Added a safety check that SIZEOF_INT is not zero. - -Added configure check to test if strings.h can be included after string.h. -Some systems can't handle it. -Some systems need both string.h and strings.h included. Adjusted vim.h for -that. Removed including string.h from os_unixx.h, since it's already in -vim.h. (Savage) -AIX: defining _NO_PROTO in os_unix.h causes a conflict between string.h and -strings.h, but after the configure check said it was OK. Also define -_NO_PROTO for AIX in the configure check. (Winn) - -When closing a window with CTRL-W c, the value of 'hidden' was not taken into -account, the buffer was always unloaded. (Negri) - -Unix Makefile: "make install" always tried to rename an older executable and -remove it. This caused an error message when it didn't exit. Added a check -for the existence of an old executable. -The command line for "make install" could get too long, because of the many -syntax files. Now first do a "cd" to reduce the length. - -On RISCOS and MSDOS, reading a file could fail, because the short filename was -used, which can be wrong after a ":!cd". - -In the DOS versions, the wrong install.exe was included (required Windows). -Now the install.exe version is included that is the same as the Vim version. -This also supports long file names where possible. - -When recording, and stopping while in Insert mode with CTRL-O q, the CTRL-O -would also be recorded. - -32bit DOS version: "vim \file", while in a subdirectory, resulted in "new -file" for "file" in the local directory, while "\file" did exist. When -"file" in the current directory existed, this didn't happen. - -MSDOS: Mouse could not go beyond 80 columns in 132 columns mode. (Young) - -"make test" failed in the RedHat RPM, because compatible is off by default. - -In Insert mode <C-O><C-W><C-W> changes to other window, but the status bars -were not updated until another character was typed. - -MSDOS: environment options in lowercase didn't work, although they did in the -Win32 versions. (Negri) - -After ":nohlsearch", a tag command switched highlighting back on. - -When using "append" command as the last line in an autocommand, Vim would -crash. - -RISCOS: The scroll bumpers (?) were not working properly. (Leonard) - -"zl" and "zh" could move the cursor, but this didn't set the column in which -e.g., "k" would move the cursor. - -When doing ":set all&" the value of 'scroll' was not set correctly. This -caused an error message when later setting any other number option. - -When 'hlsearch' highlighting has been disabled with ":nohlsearch", -incremental searching would switch it back on too early. - -When listing tags for ":tselect", and using a non-search command, and the last -character was equal to the first (e.g., "99"), the last char would not be -shown. - -When searching for tags with ":tag" Vim would assume that all matches had been -found when there were still more (e.g. from another tags file). - -Win32: Didn't recognize "c:\" (e.g., in tags file) as absolute path when -upper/lowercase was different. - -Some xterms (Debian) send <Esc>OH for HOME and <Esc>OF for END. Added these -to the builtin-xterm. - -In ex mode, any CR was seen as the end of the line. Only a NL should be -handled that way. broke ":s/foo/some^Mtext/". - -In menu.vim, a vmenu was used to override an amenu. That didn't work, because -the system menu file doesn't overwrite existing menus. Added explicit vunmenu -to solve this. - -Configure check for terminal library could find a library that doesn't work at -runtime (Solaris: shared library not found). Added a check that a program -with tgoto() can run correctly. - -Unix: "echo -n" in the Makefile doesn't work on all systems, causing errors -compiling pathdef.c. Replaced it with "tr". - -Perl: DO_JOIN was redefined by Perl. Undefined it in the perl files. - -Various XIM and multi-byte fixes: -- Fix user cannot see his language while he is typing his language with - off-the-spot method. (Nagano) -- Fix preedit position using text/edit area (using gui.wid). (Nagano) -- remove 'fix dead key' codes. It was needed since XNFocusWindow was - "x11_window", XNFocusWindow is now gui.wid. (Nagano) -- Remove some compile warnings and fix typos. (Namsh) -- For status area, check the gtk+ version while Vim runs. I believe it is - better than compile time check. (Namsh) -- Remove one FIXME for gtk+-xim. (Namsh) -- XIM: Dead keys didn't work for Czech. (Vyskovsky) -- Multibyte: If user input only 3byte such as mb1_mb2_eng or eng_mb1_mb2 VIM - could convert it to special character. (Nam) -- Athena/Motif with XIM: fix preedit area. (Nam) -- XIM: Composed strings were sometimes ignored. Vim crashed when compose - string was longer than 256 bytes. IM's geometry control is fixed. (Nam, - Nagano) -- Win32 multi-byte: hollowed cursor width on a double byte char was wrong. - (Nagano) -- When there is no GUI, selecting XIM caused compilation problems. - Automatically disable XIM when there is no GUI in configure. -- Motif and Athena: When compiled with XIM, but the input method was not - enabled, there would still be a status line. Now the status line is gone if - the input method doesn't work. (Nam) - -Win32: tooltip was not removed when selecting a parent menu (it was when -selecting a menu entry). (Negri) - -Unix with X: Some systems crash on exit, because of the XtCloseDisplay() call. -Removed it, it should not be necessary when exiting. - -Win32: Crash on keypress when compiled with Borland C++. (Aaron) - -When checking for Motif library files, prefer the same location as the include -files (with "include" replaced with "lib") above another entry. - -Athena GUI: Changed "XtOffset()" in gui_at_fs.c to "XtOffsetOf()", like it's -used in gui_x11.c. - -Win32: When testing for a timestamp of a file on floppy, would get a dialog -box when the floppy has been removed. Now return with an error. (Negri) - -Win32 OLE: When forced to come to the foreground, a minimized window was still -minimized, now it's restored. (Zivkov) - -There was no check for a positive 'shiftwidth'. A negative value could cause -a hangup, a zero value a crash. - -Athena GUI: horizontal scrollbar wasn't updated correctly when clicking right -or left of the thumb. - -When making a Visual-block selection in one window, and trying to scroll -another, could cause errors for accessing non-existent line numbers. - -When 'matchpairs' contains "`:'", jumping from the ` to the ' didn't work -properly. - -Changed '\"' to '"' to make it compatible with old C compilers. - -The command line expansion for mappings caused a script with a TAB between lhs -and rhs of a map command to fail. Assume the TAB is to separate lhs and rhs -when there are no mappings to expand. - -When editing a file with very long lines with 'scrolloff' set, "j" would -sometimes end up in a line which wasn't displayed. - -When editing a read-only file, it was completely read into memory, even when -it would not fit. Now create a swap file for a read-only file when running -out of memory while reading the file. - -When using ":set cino={s,e-s", a line after "} else {" was not indented -properly. Also added a check for this in test3.in. - -The Hebrew mapping for the command line was remembered for the next command -line. That isn't very useful, a command is not Hebrew. (Kol) - -When completing file names with embedded spaces, like "Program\ files", this -didn't work. Also for user commands. Moved backslash_halve() down to -mch_expandpath(). - -When using "set mouse=a" in Ex mode, mouse events were handled like typed -text. Then typing "quit" screwed up the mouse behavior of the xterm. - -When repeating an insert with "." that contains a CTRL-Y, a number 5 was -inserted as "053". - -Yanking a Visual area, with the cursor past the line, didn't move the cursor -back onto the line. Same for "~", "u", "U" and "g?" - -Win32: Default for 'grepprg' could be "findstr /n" even though there is no -findstr.exe (Windows 95). Check if it exists, and fall back to "grep -n" if -it doesn't. - -Because gui_mouse_moved() inserted a leftmouse click in the input buffer, -remapping a leftmouse click caused strange effects. Now Insert another code -in the input buffer. Also insert a leftmouse release, to avoid the problem -with ":map <LeftMouse> l" that the next release is seen as the release for the -focus click. - -With 'wrap' on, when using a line that doesn't fit on the screen, if the start -of the Visual area is before the start of the screen, there was no -highlighting. Also, 'showbreak' doesn't work properly. - -DOS, Win32: A pattern "[0-9]\+" didn't work in autocommands. - -When creating a swap file for a buffer which isn't the current buffer, could -get a mixup of short file name, resulting in a long file name when a short -file name was required. makeswapname() was calling modname() instead of -buf_modname(). - -When a function caused an error, and the error message was very long because -of recursiveness, this would cause a crash. - -'suffixes' were always compared with matching case. For MS-DOS, Win32 and -OS/2 case is now ignored. - -The use of CHARBITS in regexp.c didn't work on some Linux. Don't use it. - -When generating a script file, 'cpo' was made empty. This caused backslashes -to disappear from mappings. Set it to "B" to avoid that. - -Lots of typos in the documentation. (Campbell) - -When editing an existing (hidden) buffer, jump to the last used cursor -position. (Madsen) - -On a Sun the xterm screen was not restored properly when suspending. (Madsen) - -When $VIMINIT is processed, 'nocompatible' was only set after processing it. - -Unix: Polling for a character wasn't done for GPM, Sniff and Xterm clipboard -all together. Cleaned up the code for using select() too. - -When executing external commands from the GUI, some typeahead was lost. Added -some code to regain as much typeahead as possible. - -When the window height is 5 lines or fewer, <PageDown> didn't use a one-line -overlap, while <PageUp> does. Made sure that <PageUp> uses the same overlap -as <PageDown>, so that using them both always displays the same lines. - -Removed a few unused functions and variables (found with lint). - -Dictionary completion didn't use 'infercase'. (Raul) - -Configure tests failed when the Perl library was not in LD_LIBRARY_PATH. -Don't use the Perl library for configure tests, add it to the linker line only -when linking Vim. - -When using ncurses/terminfo, could get a 't_Sf' and 't_Sb' termcap entry that -has "%d" instead of "%p1%d". The light background colors didn't work then. - -GTK GUI with ncurses: Crashed when starting up in tputs(). Don't use tputs() -when the GUI is active. - -Could use the ":let" command to set the "count", "shell_error" and "version" -variables, but that didn't work. Give an error message when trying to set -them. - -On FreeBSD 3.0, tclsh is called tclsh8.0. Adjusted configure.in to find it. - -When Vim is linked with -lncurses, but python uses -ltermcap, this causes -trouble: "OOPS". Configure now removes the -ltermcap. - -:@" and :*" didn't work properly, because the " was recognized as the start of -a comment. - -Win32s GUI: Minimizing the console where a filter command runs in caused -trouble for detecting that the filter command has finished. (Negri) - -After executing a filter command from an xterm, the mouse would be disabled. -It would work again after changing the mode. - -Mac GUI: Crashed in newenv(). (St-Amant) - -The menus and mappings in mswin.vim didn't handle text ending in a NL -correctly. (Acevedo) - -The ":k" command didn't check if it had a valid argument or extra characters. -Now give a meaningful error message. (Webb) - -On SGI, the signal function doesn't always have three arguments. Check for -struct sigcontext to find out. Might still be wrong... - -Could crash when using 'hlsearch' and search pattern is "^". - -When search patterns were saved and restored, status of no_hlsearch was not -also saved and restored (from ":nohlsearch" command). - -When using setline() to make a line shorter, the cursor position was not -adjusted. - -MS-DOS and Win95: When trying to edit a file and accidentally adding a slash -or backslash at the end, the file was deleted. Probably when trying to create -the swap file. Explicitly check for a trailing slash or backslash before -trying to read a file. - -X11 GUI: When starting the GUI failed and received a deadly signal while -setting the title, would lock up when trying to exit, because the title is -reset again. Avoid using mch_settitle() recursively. - -X11 GUI: When starting the GUI fails, and then trying it again, would crash, -because argv[] has been freed and x11_display was reset to NULL. - -Win32: When $HOME was set, would put "~user" in the swap file, which would -never compare with a file name, and never cause the attention message. Put -the full path in the swap file instead. - -Win32 console: There were funny characters at the end of the "vim -r" swap -files message (direct output of CR CR LF). - -DOS 32 bit: "vim -r" put the text at the top of the window. - -GUI: With 'mousefocus' set, got mouse codes as text with "!sleep 100" or "Q". - -Motif and Win32 GUI: When changing 'guifont' to a font of the same size the -screen wasn't redrawn. - -Unix: When using ":make", jumping to a file b.c, which is already open as a -symbolic link a.c, opened a new buffer instead of using the existing one. - -Inserting text in the current buffer while sourcing the .vimrc file would -cause a crash or hang. The memfile for the current buffer was never -allocated. Now it's allocated as soon as something is written in the buffer. - -DOS 32 bit: "lightblue" background worked for text, but not drawn parts were -black. - -DOS: Colors of console were not restored upon exiting. - -When recording, with 'cmdheight' set to 2 and typing Esc> in Insert mode -caused the "recording" message to be doubled. - -Spurious "file changed" messages could happen on Windows. Now tolerate a one -second difference, like for Linux. - -GUI: When returning from Ex mode, scrollbars were not updated. - -Win32: Copying text to the clipboard containing a <CR>, pasting it would -replace it with a <NL> and drop the next character. - -Entering a double byte character didn't work if the second byte is in [xXoO]. -(Eric Lee) - -vim_realloc was both defined and had a prototype in proto/misc2.pro. Caused -conflicts on Solaris. - -A pattern in an autocommand was treated differently on DOS et al. than on -Unix. Now it's the same, also when using backslashes. - -When using <Tab> twice for command line completion, without a match, the <Tab> -would be inserted. (Negri) - -Bug in MS-Visual C++ 6.0 when compiling ex_docmd.c with optimization. (Negri) - -Testing the result of mktemp() for failure was wrong. Could cause a crash. -(Peters) - -GUI: When checking for a ".gvimrc" file in the current directory, didn't check -for a "_gvimrc" file too. - -Motif GUI: When using the popup menu and then adding an item to the menu bar, -the menu bar would get very high. - -Mouse clicks and special keys (e.g. cursor keys) quit the more prompt and -dialogs. Now they are ignored. - -When at the more-prompt, xterm selection didn't work. Now use the 'r' flag in -'mouse' also for the more-prompt. - -When selecting a Visual area of more than 1023 lines, with 'guioptions' set to -"a", could mess up the display because of a message in free_yank(). Removed -that message, except for the Amiga. - -Moved auto-selection from ui_write() to the screen update functions. Avoids -unexpected behavior from a low-level function. Also makes the different -feedback of owning the selection possible. - -Vi incompatibility: Using "i<CR>" in an indent, with 'ai' set, used the -original indent instead of truncating it at the cursor. (Webb) - -":echo x" didn't stop at "q" for the more prompt. - -Various fixes for Macintosh. (St-Amant) - -When using 'selectmode' set to "exclusive", selecting a word and then using -CTRL-] included the character under the cursor. - -Using ":let a:name" in a function caused a crash. (Webb) - -When using ":append", an empty line didn't scroll up. - -DOS etc.: A file name starting with '!' didn't work. Added '!' to default for -'isfname'. - -BeOS: Compilation problem with prototype of skip_class_name(). (Price) - -When deleting more than one line, e.g., with "de", could still use "U" -command, which didn't work properly then. - -Amiga: Could not compile ex_docmd.c, it was getting too big. Moved some -functions to ex_cmds.c. - -The expand() function would add a trailing slash for directories. - -Didn't give an error message when trying to assign a value to an argument of a -function. (Webb) - -Moved including sys/ptem.h to after termios.h. Needed for Sinix. - -OLE interface: Don't delete the object in CVimCF::Release() when the reference -count becomes zero. (Cordell) -VisVim could still crash on exit. (Erhardt) - -"case a: case b:" (two case statements in one line) aligned with the second -case. Now it uses one 'sw' for indent. (Webb) - -Font initialisation wasn't right for Athena/Motif GUI. Moved the call to -highlight_gui_started() gui_mch_init() to gui_mch_open(). (Nam) - -In Replace mode, backspacing over a TAB before where the replace mode started -while 'sts' is different from 'ts', would delete the TAB. - -Win32 console: When executing external commands and switching between the two -console screens, Vim would copy the text between the buffers. That caused the -screen to be messed up for backtick expansion. - -":winpos -1" then ":winpos" gave wrong error message. - -Windows commander creates files called c:\tmp\$wc\abc.txt. Don't remove the -backslash before the $. Environment variables were not expanded anyway, -because of the backslash before the dollar. - -Using "-=" with ":set" could remove half a part when it contains a "\,". -E.g., ":set path+=a\\,b" and then "set path-=b" removed ",b". - -When Visually selecting lines, with 'selection' set to "inclusive", including -the last char of the line, "<<" moved an extra line. Also for other operators -that always work on lines. - -link.sh changed "-lnsl_s" to "_s" when looking for "nsl" to be removed. -Now it only remove whole words. - -When jumped to a mark or using "fz", and there is an error, the current column -was lost. E.g. when using "$fzj". - -The "g CTRL-G" command could not be interrupted, even though it can take a -long time. - -Some terminals do have <F4> and <xF4>. <xF4> was always interpreted as <F4>. -Now map <xF4> to <F4>, so that the user can override this. - -When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be -used. (Aaron) - -This autocommand looped forever: ":au FileChangedShell * nested e <afile>" -Now FileChangeShell never nests. (Roemer) - -When evaluating an ":elseif" that was not going to matter anyway, ignore -errors. (Roemer) - -GUI Lesstif: Tearoff bar was the last item, instead of the first. - -GUI Motif: Colors of tear-off widgets was wrong when 't' flag added to -'guioptions' afterwards. When 't' flag in 'guioptions' is excluded, would -still get a tearoff item in a new menu. - -An inode number can be "long long". Use ino_t instead of long. Added -configure check for ino_t. - -Binary search for tags was using a file offset "long" instead of "off_t". - -Insert mode completion of tags was not using 'ignorecase' properly. - -In Insert mode, the <xFn> keys were not properly mapped to <Fn> for the -default mappings. Also caused errors for ":mkvimrc" and ":mksession". - -When jumping to another window while in Insert mode, would get the "warning: -changing readonly file" even when not making a change. - -A '(' or '{' inside a trailing "//" comment would disturb C-indenting. -When using two labels below each other, the second one was not indented -properly. Comments could mess up C-indenting in many places. (Roemer) - -Could delete or redefine a function while it was being used. Could cause a -crash. -In a function it's logical to prepend "g:" to a system variable, but this -didn't work. (Roemer) - -Hangul input: Buffer would overflow when user inputs invalid key sequence. -(Nam) - -When BufLoad or BufEnter autocommands change the topline of the buffer in the -window, it was overruled and the cursor put halfway the window. Now only put -the cursor halfway if the autocommands didn't change the topline. - -Calling exists("&option") always returned 1. (Roemer) - -Win32: Didn't take actually available memory into account. (Williams) - -White space after an automatically inserted comment leader was not removed -when 'ai' is not set and <CR> hit just after inserting it. (Webb) - -A few menus had duplicated accelerators. (Roemer) - -Spelling errors in documentation, quite a few "the the". (Roemer) - -Missing prototypes for Macintosh. (Kielhorn) - -Win32: When using 'shellquote' or 'shellxquote', the "!start cmd" wasn't -executed in a disconnected process. - -When resizing the window, causing a line before the cursor to wrap or unwrap, -the cursor was displayed in the wrong position. - -There was quite a bit of dead code when compiling with minimal features. - -When doing a ":%s///" command that makes lines shorter, such that lines above -the final cursor position no longer wrap, the cursor position was not updated. - -get_id_list() could allocate an array one too small, when a "contains=" item -has a wildcard that matches a group name that is added just after it. E.g.: -"contains=a.*b,axb". Give an error message for it. - -When yanking a Visual area and using the middle mouse button -> crash. When -clipboard doesn't work, now make "* always use "". - -Win32: Using ":buf a\ b\file" didn't work, it was interpreted as "ab\file". - -Using ":ts ident", then hit <CR>, with 'cmdheight' set to 2: command line was -not cleared, the tselect prompt was on the last but one line. - -mksession didn't restore the cursor column properly when it was after a tab. -Could not get all windows back when using a smaller terminal screen. Didn't -restore all windows when "winsize" was not in 'sessionoptions'. (Webb) - -Command line completion for ":buffer" depended on 'ignorecase' for Unix, but -not for DOS et al.. Now don't use 'ignorecase', but let it depend on whether -file names are case sensitive or not (like when expanding file names). - -Win32 GUI: (Negri) -- Redrawing the background caused flicker when resizing the window. Removed - _OnEraseBG(). Removed CS_HREDRAW and CS_VREDRAW flags from the - sndclass.style. -- Some parts of the window were drawn in grey, instead of using the color from - the user color scheme. -- Dropping a file on gvim didn't activate the window. -- When there is no menu ('guioptions' excludes 'm'), never use the ALT key for - it. - -GUI: When resizing the window, would make the window height a bit smaller. -Now round off to the nearest char cell size. (Negri) - -In Vi the ")" and "(" commands don't stop at a single space after a dot. -Added 'J' flag in 'cpoptions' to make this behave Vi compatible. (Roemer) - -When saving a session without any buffers loaded, there would be a ":normal" -command without arguments in it. (Webb) - -Memory leaks fixed: (Madsen) -- eval.c: forgot to release func structure when func deleted -- ex_docmd.c: forgot to release string after "<sfile>" -- misc1.c: leak when completion pattern had no matches. -- os_unix.c: forgot to release regexp after file completions - -Could crash when using a buffer without a name. (Madsen) -Could crash when doing file name completion, because of backslash_halve(). -(Madsen) - -":@a" would do mappings on register a, which is not Vi compatible. (Roemer) - -":g/foo.*()/s/foobar/_&/gc" worked fine, but then "n" searched for "foobar" -and displayed "/foo.*()". (Roemer) - -OS/2: get_cmd_output() was not included. Didn't check for $VIM/.vimrc file. - -Command line completion of options didn't work after "+=" and "-=". - -Unix configure: Test for memmove()/bcopy()/memcpy() tried redefining these -functions, which could fail if they are defined already. Use mch_memmove() to -redefine. - -Unix: ":let a = expand("`xterm`&")" started an xterm asynchronously, but -":let a = expand("`xterm&`")" generated an error message, because the -redirection was put after the '&'. - -Win32 GUI: Dialog buttons could not be selected properly with cursor keys, -when the default is not the first button. (Webb) - -The "File has changed since editing started" (when regaining focus) could not -always be seen. (Webb) - -When starting with "ex filename", the file message was overwritten with -the "entering Ex mode" message. - -Output of ":tselect" listed name of file directly from the tags file. Now it -is corrected for the position of the tags file. - -When 'backspace' is 0, could backspace over autoindent. Now it is no longer -allowed (Vi compatible). - -In Replace mode, when 'noexpandtab' and 'smarttab' were set, and inserting -Tabs, backspacing didn't work correctly for Tabs inserted at the start of the -line (unless 'sts' was set too). Also, when replacing the first non-blank -after which is a space, rounding the indent was done on the first non-blank -instead of on the character under the cursor. - -When 'sw' at 4, 'ts' at 8 and 'smarttab' set: When a tab was appended after -four spaces (they are replaced with a tab) couldn't backspace over the tab. - -In Insert mode, with 'bs' set to 0, couldn't backspace to before autoindent, -even when it was removed with CTRL-D. - -When repeating an insert command where a <BS>, <Left> or other key causes an -error, would flush buffers and remain in Insert mode. No longer flush -buffers, only beep and continue with the insert command. - -Dos and Win32 console: Setting t_me didn't work to get another color. Made -this works backwards compatible. - -For Turkish (LANG = "tr") uppercase 'i' is not an 'I'. Use ASCII uppercase -translation in vim_strup() to avoid language problems. (Komur) - -Unix: Use usleep() or nanosleep() for mch_delay() when available. Hopefully -this avoids a hangup in select(0, ..) for Solaris 2.6. - -Vim would crash when using a script file with 'let &sp = "| tee"', starting -vim with "vim -u test", then doing ":set sp=". The P_WAS_SET flag wasn't set -for a string option, could cause problems with any string option. - -When using "cmd | vim -", stdin is not a terminal. This gave problems with -GPM (Linux console mouse) and when executing external commands. Now close -stdin and re-open it as a copy of stderr. - -Syntax highlighting: A "nextgroup" item was not properly stored in the state -list. This caused missing of next groups when not redrawing from start to -end, but starting halfway. - -Didn't check for valid values of 'ttymouse'. - -When executing an external command from the GUI, waiting for the child to -terminate might not work, causing a hang. (Parmelan) - -"make uninstall" didn't delete the vimrc_example.vim and gvimrc_example.vim -files and the vimtutor. - -Win32: "expand("%:p:h")" with no buffer name removed the directory name. -"fnamemodify("", ":p")" did not add a trailing slash, fname_case() removed it. - -Fixed: When 'hlsearch' was set and the 'c' flag was not in 'cpoptions': -highlighting was not correct. Now overlapping matches are handled correctly. - -Athena, Motif and GTK GUI: When started without focus, cursor was shown as if -with focus. - -Don't include 'shellpipe' when compiled without quickfix, it's not used. -Don't include 'dictionary' option when compiled without the +insert_expand -feature. -Only include the 'shelltype' option for the Amiga. - -When making a change to a line, with 'hlsearch' on, causing it to wrap, while -executing a register, the screen would not be updated correctly. This was a -generic problem in update_screenline() being called while must_redraw is -VALID. - -Using ":bdelete" in a BufUnload autocommand could cause a crash. The window -height was added to another window twice in close_window(). - -Win32 GUI: When removing a menu item, the tearoff wasn't updated. (Negri) - -Some performance bottlenecks removed. Allocating memory was not efficient. -For Win32 checking for available memory was slow, don't check it every time -now. On NT obtaining the user name takes a long time, cache the result (for -all systems). - -fnamemodify() with an argument ":~:." or ":.:~" didn't work properly. - -When editing a new file and exiting, the marks for the buffer were not saved -in the viminfo file. - -":confirm only" didn't put up a dialog. - -These text objects didn't work when 'selection' was "exclusive": va( vi( va{ -vi{ va< vi< vi[ va[. - -The dialog for writing a readonly file didn't have a valid default. (Negri) - -The line number used for error messages when sourcing a file was reset when -modelines were inspected. It was wrong when executing a function. - -The file name and line number for an error message wasn't displayed when it -was the same as for the last error, even when this was long ago. Now reset -the name/lnum after a hit-enter prompt. - -In a session file, a "%" in a file name caused trouble, because fprintf() was -used to write it to the file. - -When skipping statements, a mark in an address wasn't skipped correctly: -"ka|if 0|'ad|else|echo|endif". (Roemer) - -":wall" could overwrite a not-edited file without asking. - -GUI: When $DISPLAY was not set or starting the GUI failed in another way, the -console mode then started with wrong colors and skipped initializations. Now -do an early check if the GUI can be started. Don't source the menu.vim or -gvimrc when it will not. Also do normal terminal initializations if the GUI -might not start. - -When using a BufEnter autocommand to position the cursor and scroll the -window, the cursor was always put at the last used line and halfway the window -anyhow. - -When 'wildmode' was set to "longest,list:full", ":e *.c<Tab><Tab>" didn't list -the matches. Also avoid that listing after a "longest" lists the wrong -matches when the first expansion changed the string in front of the cursor. - -When using ":insert", ":append" or ":change" inside a while loop, was not able -to break out of it with a CTRL-C. - -Win32: ":e ." took an awful long time before an error message when used in -"C:\". Was caused by adding another backslash and then trying to get the full -name for "C:\\". - -":winpos -10 100" was working like ":winpos -10 -10", because a pointer was -not advanced past the '-' sign. - -When obtaining the value of a hidden option, would give an error message. Now -just use a zero value. - -OS/2: Was using argv[0], even though it was not a useful name. It could be -just "vim", found in the search path. - -Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) until -after a delay of 'updatetime'. Didn't check for the size-changed signal. - -'scrollbind' didn't work in Insert mode. -Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g., -when 'showcmd' was off). - -When compiled with minimal features but with GUI, switching on the mouse in an -xterm caused garbage, because the mouse codes were not recognized. Don't -enable the mouse when it can't be recognized. In the GUI it also didn't work, -the arguments to the mouse code were not interpreted. - -When 'showbreak' used, in Insert mode, when the cursor is just after the last -character in the line, which is also the in the rightmost column, the cursor -position would be like the 'showbreak' string is shown, but it wasn't. - -Autocommands could move the cursor in a new file, so that CTRL-W i didn't show -the right line. Same for when using a filemark to jump to another file. - -When redefining the argument list, the title used for other windows could be -showing the wrong info about the position in the argument list. Also update -this for a ":split" command without arguments. - -When editing file 97 of 13, ":Next" didn't work. Now it goes to the last -file in the argument list. - -Insert mode completion (for dictionaries or included files) could not be -interrupted by typing an <Esc>. Could get hit-enter prompt after line -completion, or whenever the informative message would get too long. - -When using the ":edit" command to re-edit the same file, an autocommand to -jump to the last cursor position caused the cursor to move. Now set the last -used cursor position to avoid this. - -When 'comments' has a part that starts with white space, formatting the -comment didn't work. - -At the ":tselect" prompt Normal mode mappings were used. That has been -disabled. - -When 'selection' is not "old", some commands still didn't allow the cursor -past the end-of-line in Visual mode. - -Athena: When a menu was deleted, it would appear again (but not functional) -when adding another menu. Now they don't reappear anymore (although they are -not really deleted either). - -Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri) - -"ze" didn't work when 'number' was on. (Davis) - -Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson) - -A few files were including proto.h a second time, after vim.h had already done -that, which could cause problems with the vim_realloc() macro. - -Win32 console: <M-x> or ALT-x was not recognized. Also keypad '+', '-' and -'*'. (Negri) -MS-DOS: <M-x> didn't work, produced a two-byte code. Now the alphabetic and -number keys work. (Negri) - -When finding a lot of matches for a tag completion, the check for avoiding -double matches could take a lot of time. Add a line_breakcheck() to be able -to interrupt this. (Deshpande) - -When the command line was getting longer than the screen, the more-prompt -would be given regularly, and the cursor position would be wrong. Now only -show the part of the command line that fits on the screen and force the cursor -to be positioned on the visible part. There can be text after the cursor -which isn't editable. - -At the more prompt and with the console dialog, a cursor key was interpreted -as <Esc> and OA. Now recognize special keys in get_keystroke(). Ignore mouse -and scrollbar events. - -When typing a BS after inserting a middle comment leader, typing the last char -of the end comment leader still changed it into the end comment leader. (Webb) - -When a file system is full, writing to a swap file failed. Now first try to -write one block to the file. Try next entry in 'dir' if it fails. - -When "~" is in 'whichwrap', doing "~" on last char of a line didn't update the -display. - -Unix: Expanding wildcards for ":file {\\}" didn't work, because "\}" was -translated to "}" before the shell got it. Now don't remove backslashes when -wildcards are going to be expanded. - -Unix: ":e /tmp/$uid" didn't work. When expanding environment variables in a -file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty" -still doesn't work though. - -"make test" didn't always work on DOS/Windows for test30, because it depended -on the external "echo" command. - -The link.sh script used "make" instead of $MAKE from the Makefile. Caused -problems for generating pathdef.c when "make" doesn't work properly. - -On versions that can do console and GUI: In the console a typed CSI code could -cause trouble. - -The patterns in expression evaluation didn't ignore the 'l' flag in -'cpoptions'. This broke the working of <CR> in the options window. - -When 'hls' off and 'ai' on, "O<Esc>" did remove the indent, but it was still -highlighted red for trailing space. - -Win32 GUI: Dropping an encrypted file on a running gvim didn't work right. Vim -would loop while outputting "*" characters. vgetc() was called recursively, -thus it returns NUL. Added safe_vgetc(), which reads input directly from the -user in this situation. - -While reading text from stdin, only an empty screen was shown. Now show that -Vim is reading from stdin. - -The cursor shape wasn't set properly when returning to Insert mode, after -using a CTRL-O /asdf command which fails. It would be OK after a few seconds. -Now it's OK right away. - -The 'isfname' default for DOS/Windows didn't include the '@' character. File -names that contained "dir\@file" could not be edited. - -Win32 console: <C-S-Left> could cause a crash when compiled with Borland or -egcs. (Aaron) - -Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers. Use -"#ifdef HAVE_DIRENT_H" instead. (Jones) - -When a matching tag is in the current file but has a search pattern that -doesn't match, the cursor would jump to the first line. - -Unix: Dependencies for pty.c were not included in Makefile. Dependency of -ctags/config.h was not included (only matters for parallel make). - -Removed a few Uninitialized Memory Reads (potential crashes). In do_call() -calling clear_var() when not evaluating. In win32_expandpath() and -dos_expandpath() calling backslash_halve() past the end of a file name. - -Removed memory leaks: Set_vim_var_string() never freed the value. The -next_list for a syntax keyword was never freed. - -On non-Unix systems, using a file name with wildcards without a match would -silently fail. E.g., ":e *.sh". Now give a "No match" error message. - -The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognized -as Vim scripts. Renamed them to *.vim. - -[Note: some numbered patches are not relevant when upgrading from version 5.3, -they have been removed] - -Patch 5.4m.1 -Problem: When editing a file with a long name, would get the hit-enter - prompt, even though all settings are such that the name should be - truncated to avoid that. filemess() was printing the file name - without truncating it. -Solution: Truncate the message in filemess(). Use the same code as for - msg_trunc_attr(), which is moved to the new function - msg_may_trunc(). -Files: src/message.c, src/proto/message.pro, src/fileio.c - -Patch 5.4m.3 -Problem: The Motif libraries were not found by configure for Digital Unix. -Solution: Add "/usr/shlib" to the search path. (Andy Kahn) -Files: src/configure.in, src/configure - -Patch 5.4m.5 -Problem: Win32 GUI: When using the Save-As menu entry and selecting an - existing file in the file browser, would get a dialog to confirm - overwriting twice. (Ed Krall) -Solution: Removed the dialog from the file browser. It would be nicer to - set the "forceit" flag and skip Vim's ":confirm" dialog, but it - requires quite a few changes to do that. -Files: src/gui_w32.c - -Patch 5.4m.6 -Problem: Win32 GUI: When reading text from stdin, e.g., "cat foo | gvim -", - a message box would pop up with "-stdin-" (when exiting). (Michael - Schaap) -Solution: Don't switch off termcap mode for versions that are GUI-only. - They use another terminal to read from stdin. -Files: src/main.c, src/fileio.c - -Patch 5.4m.7 -Problem: Unix: running configure with --enable-gtk-check, - --enable-motif-check, --enable-athena-check or --enable-gtktest - had the reverse effect. (Thomas Koehler) -Solution: Use $enable_gtk_check variable correctly in AC_ARG_ENABLE(). -Files: src/configure.in, src/configure - -Patch 5.4m.9 -Problem: Multi-byte: With wrapping lines, the cursor was sometimes 2 - characters to the left. Syntax highlighting was wrong when a - double-byte character was split for a wrapping line. When - 'showbreak' was on the splitting also didn't work. -Solution: Adjust getvcol() and win_line(). (Chong-Dae Park) -Files: src/charset.c, src/screen.c - -Patch 5.4m.11 -Problem: The ":call" command didn't check for illegal trailing characters. - (Stefan Roemer) -Solution: Add the check in do_call(). -Files: src/eval.c - -Patch 5.4m.13 -Problem: With the ":s" command: - 1. When performing a substitute command, the mouse would be - disabled and enabled for every substitution. - 2. The cursor position could be beyond the end of the line. - Calling line_breakcheck() could try to position the cursor, - which causes a crash in the Win32 GUI. - 3. When using ":s" in a ":g" command, the cursor was not put on - the first non-white in the line. - 4. There was a hit-enter prompt when confirming the substitution - and the replacement was a bit longer. -Solution: 1. Only disable/enable the mouse when asking for confirmation. - 2. Always put the cursor on the first character, it is going to be - moved to the first non-blank anyway. - Don't use the cursor position in gui_mch_draw_hollow_cursor(), - get the character from the screen buffer. - 3. Added global_need_beginline flag to call beginline() after ":g" - has finished all substitutions. - 4. Clear the need_wait_return flag after prompting the user. -Files: src/ex_cmds.c, src/gui_w32.c - -Patch 5.4m.14 -Problem: When doing "vim xxx", ":opt", ":only" and then ":e xxx" we end - up with two swapfiles for "xxx". That is caused by the ":bdel" - command which is executed when unloading the option-window. - Also, there was no check if closing a buffer made the new one - invalid, this could cause a crash. -Solution: When closing a buffer causes the current buffer to be deleted, - use the new buffer to replace it. Also detect that the new buffer - has become invalid as a side effect of closing the current one. - Make autocommand that calls ":bdel" in optwin.vim nested, so that - the buffer loading it triggers also executes autocommands. - Also added a test for this in test13. -Files: runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h - src/testdir/test13.in, src/testdir/test13.ok - -Patch 5.4m.15 -Problem: When using a BufEnter autocommand to reload the syntax file, - conversion to HTML caused a crash. (Sung-Hyun Nam) -Solution: When using ":syntax clear" the current stack of syntax items was - not cleared. This will cause memory to be used that has already - been freed. Added call to invalidate_current_state() in - syntax_clear(). -Files: src/syntax.c - -Patch 5.4m.17 -Problem: When omitting a ')' in an expression it would not be seen as a - failure. - When detecting an error inside (), there would be an error message - for a missing ')' too. - When using ":echo 1+|echo 2" there was no error message. (Roemer) - When using ":exe 1+" there was no error message. - When using ":return 1+" there was no error message. -Solution: Fix do_echo(), do_execute() and do_return() to give an error - message when eval1() returns FAIL. - Fix eval6() to handle trailing ')' correctly and return FAIL when - it's missing. -Files: src/eval.c - -Patch 5.4m.18 -Problem: When using input() from inside an expression entered with - "CTRL-R =" on the command line, there could be a crash. And the - resulting command line was wrong. -Solution: Added getcmdline_prompt(), which handles recursive use of - getcmdline() correctly. It also sets the command line prompt. - Removed cmdline_prompt(). Also use getcmdline_prompt() for - getting the crypt key in get_crypt_key(). -Files: src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c - -Patch 5.4m.21 -Problem: When starting up, the screen structures were first allocated at - the minimal size, then initializations were done with Rows - possibly different from screen_Rows. Caused a crash in rare - situations (GTK with XIM and fontset). -Solution: Call screenalloc() in main() only after calling ui_get_winsize(). - Also avoids a potential delay because of calling screenclear() - while "starting" is non-zero. -Files: src/main.c - -Patch 5.4m.22 -Problem: In the GUI it was possible that the screen was resized and the - screen structures re-allocated while redrawing the screen. This - could cause a crash (hard to reproduce). The call sequence goes - through update_screen() .. syntax_start() .. ui_breakcheck() .. - gui_resize_window() .. screenalloc(). -Solution: Set updating_screen while redrawing. If the window is resized - remember the new size and handle it only after redrawing is - finished. - This also fixes that resizing the screen while still redrawing - (slow syntax highlighting) would not work properly. - Also disable display_hint, it was never used. -Files: src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro - -Patch 5.4m.23 -Problem: When using expand("<cword>") when there was no word under the - cursor, would get an error message. Same for <cWORD> and <cfile>. -Solution: Don't give an error message, return an empty string. -Files: src/eval.c - -Patch 5.4m.24 -Problem: ":help \|" didn't find anything. It was translated to "/\\|". -Solution: Translate "\|" into "\\bar". First check the table for specific - translations before checking for "\x". -Files: src/ex_cmds.c - -Patch 5.4m.25 -Problem: Unix: When using command line completion on files that contain - ''', '"' or '|' the file name could not be used. - Adding this file name to the Buffers menu caused an error message. -Solution: Insert a backslash before these three characters. - Adjust Mungename() function to insert a backslash before '|'. -Files: src/ex_getln.c, runtime/menu.vim - -Patch 5.4m.26 -Problem: When using a mapping of two function keys, e.g., <F1><F1>, and - only the first char of the second key has been read, the mapping - would not be recognized. Noticed on some Unix systems with xterm. -Solution: Add 'K' flag to 'cpoptions' to wait for the whole key code, even - when halfway a mapping. -Files: src/option.h, src/term.c - -Patch 5.4m.27 -Problem: When making test33 without the lisp feature it hangs. Interrupting - the execution of the script then might cause a crash. -Solution: In inchar(), after closing a script, don't use buf[] anymore. - closescript() has freed typebuf[] and buf[] might be pointing - inside typebuf[]. - Avoid that test33 hangs when the lisp feature is missing. -Files: src/getchar.c src/testdir/test33.in - -"os2" was missing from the feature list. Useful for has("os2"). - -BeOS: -- Included patches from Richard Offer for BeOS R4.5. -- menu code didn't work right. Crashed in the Buffers menu. The window title - wasn't set. (Offer) - -Patch 5.4n.3 -Problem: C-indenting was wrong after " } else". The white space was not - skipped. Visible when 'cino' has "+10". -Solution: Skip white space before calling cin_iselse(). (Norbert Zeh) -Files: src/misc1.c - -Patch 5.4n.4 -Problem: When the 't' flag in 'cpoptions' is included, after a - ":nohlsearch" the search highlighting would not be enabled again - after a tag search. (Norbert Zeh) -Solution: When setting the new search pattern in jumpto_tag(), don't restore - no_hlsearch. -Files: src/tag.c - -Patch 5.4n.5 -Problem: When using ":normal" from a CursorHold autocommand Vim hangs. The - autocommand is executed down from vgetc(). Calling vgetc() - recursively to execute the command doesn't work then. -Solution: Forbid the use of ":normal" when vgetc_busy is set. Give an error - message when this happens. -Files: src/ex_docmd.c, runtime/doc/autocmd.txt - -Patch 5.4n.6 -Problem: "gv" could reselect a Visual that starts and/or ends past the end - of a line. (Robert Webb) -Solution: Check that the start and end of the Visual area are on a valid - character by calling adjust_cursor(). -Files: src/normal.c - -Patch 5.4n.8 -Problem: When a mark was on a non existing line (e.g., when the .viminfo - was edited), jumping to it caused ml_get errors. (Alexey - Marinichev). -Solution: Added check_cursor_lnum() in nv_gomark(). -Files: src/normal.c - -Patch 5.4n.9 -Problem: ":-2" moved the cursor to a negative line number. (Ralf Schandl) -Solution: Give an error message for a negative line number. -Files: src/ex_docmd.c - -Patch 5.4n.10 -Problem: Win32 GUI: At the hit-enter prompt, it was possible to scroll the - text. This erased the prompt and made Vim look like it is in - Normal mode, while it is actually still waiting for a <CR>. -Solution: Disallow scrolling at the hit-enter prompt for systems that use - on the fly scrolling. -Files: src/message.c - -Patch 5.4n.14 -Problem: Win32 GUI: When using ":winsize 80 46" and the height is more than - what fits on the screen, the window size was made smaller than - asked for (that's OK) and Vim crashed (that's not OK)> -Solution: Call check_winsize() from gui_set_winsize() to resize the windows. -Files: src/gui.c - -Patch 5.4n.16 -Problem: Win32 GUI: The <F10> key both selected the menu and was handled as - a key hit. -Solution: Apply 'winaltkeys' to <F10>, like it is used for Alt keys. -Files: src/gui_w32.c - -Patch 5.4n.17 -Problem: Local buffer variables were freed when the buffer is unloaded. - That's not logical, since options are not freed. (Ron Aaron) -Solution: Free local buffer variables only when deleting the buffer. -Files: src/buffer.c - -Patch 5.4n.19 -Problem: Doing ":e" (without argument) in an option-window causes trouble. - The mappings for <CR> and <Space> are not removed. When there is - another buffer loaded, the swap file for it gets mixed up. - (Steve Mueller) -Solution: Also remove the mappings at the BufUnload event, if they are still - present. - When re-editing the same file causes the current buffer to be - deleted, don't try editing it. - Also added a test for this situation. -Files: runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in, - src/testdir/test13.ok - -Patch 5.4n.24 -Problem: BeOS: configure never enabled the GUI, because $with_x was "no". - Unix prototypes caused problems, because Display and Widget are - undefined. - Freeing fonts on exit caused a crash. -Solution: Only disable the GUI when $with_x is "no" and $BEOS is not "yes". - Add dummy defines for Display and Widget in proto.h. - Don't free the fonts in gui_exit() for BeOS. -Files: src/configure.in, src/configure, src/proto.h, src/gui.c. - - -The runtime/vim48x48.xpm icon didn't have a transparent background. (Schild) - -Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined. -(Aaron) - -VMS: -- mch_setenv() had two arguments instead of three. -- The system vimrc and gvimrc files were called ".vimrc" and ".gvimrc". - Removed the dot. -- call to RealWaitForChar() had one argument too many. (Campbell) -- WaitForChar() is static, removed the prototype from proto/os_vms.pro. -- Many file accesses failed, because Unix style file names were used. - Translate file names to VMS style by using vim_fopen(). -- Filtering didn't work, because the temporary file name was generated wrong. -- There was an extra newline every 9192 characters when writing a file. Work - around it by writing line by line. (Campbell) -- os_vms.c contained "# typedef int DESC". Should be "typedef int DESC;". - Only mattered for generating prototypes. -- Added file name translation to many places. Made easy by defining macros - mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat(). -- Set default for 'tagbsearch' to off, because binary tag searching apparently - doesn't work for VMS. -- make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell) - - -Patch 5.4o.2 -Problem: Crash when using "gf" on "file.c://comment here". (Scott Graham) -Solution: Fix wrong use of pointers in get_file_name_in_path(). -Files: src/window.c - -Patch 5.4o.3 -Problem: The horizontal scrollbar was not sized correctly when 'number' is - set and 'wrap' not set. - Athena: Horizontal scrollbar wasn't updated when the cursor was - positioned with a mouse click just after dragging. -Solution: Subtract 8 from the size when 'number' set and 'wrap' not set. - Reset gui.dragged_sb when a mouse click is received. -Files: src/gui.c - -Patch 5.4o.4 -Problem: When running in an xterm and $WINDOWID is set to an illegal value, - Vim would exit with "Vim: Got X error". -Solution: When using the display which was opened for the xterm clipboard, - check if x11_window is valid by trying to obtain the window title. - Also add a check in setup_xterm_clip(), for when using X calls to - get the pointer position in an xterm. -Files: src/os_unix.c - -Patch 5.4o.5 -Problem: Motif version with Lesstif: When removing the menubar and then - using a menu shortcut key, Vim would crash. (raf) -Solution: Disable the menu mnemonics when the menu bar is removed. -Files: src/gui_motif.c - -Patch 5.4o.9 -Problem: The DOS install.exe program used the "move" program. That doesn't - work on Windows NT, where "move" is internal to cmd.exe. -Solution: Don't use an external program for moving the executables. Use C - functions to copy the file and delete the original. -Files: src/dosinst.c - -Motif and Athena obtained the status area height differently from GTK. Moved -status_area_enabled from global.h to gui_x11.c and call -xim_get_status_area_height() to get the status area height. - -Patch 5.4p.1 -Problem: When using auto-select, and the "gv" command is used, would not - always obtain ownership of the selection. Caused by the Visual - area still being the same, but ownership taken away by another - program. -Solution: Reset the clipboard Visual mode to force updating the selection. -Files: src/normal.c - -Patch 5.4p.2 -Problem: Motif and Athena with XIM: Typing 3-byte - <multibyte><multibyte><space> doesn't work correctly with Ami XIM. -Solution: Avoid using key_sym XK_VoidSymbol. (Nam) -Files: src/multbyte.c, src/gui_x11.c - -Patch 5.4p.4 -Problem: Win32 GUI: The scrollbar values were reduced for a file with more - than 32767 lines. But this info was kept global for all - scrollbars, causing a mixup between the windows. - Using the down arrow of a scrollbar in a large file didn't work. - Because of round-off errors there is no scroll at all. -Solution: Give each scrollbar its own scroll_shift field. When the down - arrow is used, scroll several lines. -Files: src/gui.h, src/gui_w32.c - -Patch 5.4p.5 -Problem: When changing buffers in a BufDelete autocommand, there could be - ml_line errors and/or a crash. (Schandl) Was caused by deleting - the current buffer. -Solution: When the buffer to be deleted unexpectedly becomes the current - buffer, don't delete it. - Also added a check for this in test13. -Files: src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok - -Patch 5.4p.7 -Problem: Win32 GUI: When using 'mousemodel' set to "popup_setpos" and - clicking the right mouse button outside of the selected area, the - selected area wasn't removed until the popup menu has gone. - (Aaron) -Solution: Set the cursor and update the display before showing the popup - menu. -Files: src/normal.c - -Patch 5.4p.8 -Problem: The generated bugreport didn't contain information about - $VIMRUNTIME and whether runtime files actually exist. -Solution: Added a few checks to the bugreport script. -Files: runtime/bugreport.vim - -Patch 5.4p.9 -Problem: The windows install.exe created a wrong entry in the popup menu. - The "%1" was "". The full directory was included, even when the - executable had been moved elsewhere. (Ott) -Solution: Double the '%' to get one from printf. Only include the path to - gvim.exe when it wasn't moved and it's not in $PATH. -Files: src/dosinst.c - -Patch 5.4p.10 -Problem: Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes used - a short file name for a directory. -Solution: Change the "%1" to "%L" in the registry entry. -Files: src/dosinst.c - -Patch 5.4p.11 -Problem: Motif, Athena and GTK: When closing the GUI window when there is a - changed buffer, there was only an error message and Vim would not - exit. -Solution: Put up a dialog, like for ":confirm qa". Uses the code that was - already used for MS-Windows. -Files: src/gui.c, src/gui_w32.c - -Patch 5.4p.12 -Problem: Win32: Trying to expand a string that is longer than 256 - characters could cause a crash. (Steed) -Solution: For the buffer in win32_expandpath() don't use a fixed size array, - allocate it. -Files: src/os_win32.c - -MSDOS: Added "-Wall" to Makefile.djg compile flags. Function prototypes for -fname_case() and mch_update_cursor() were missing. "fd" was unused in -mf_sync(). "puiLocation" was unused in myputch(). "newcmd" unused in -mch_call_shell() for DJGPP version. - -============================================================================== -VERSION 5.5 *version-5.5* - -Version 5.5 is a bug-fix version of 5.4. - - -Changed *changed-5.5* -------- - -The DJGPP version is now compiled with "-O2" instead of "-O4" to reduce the -size of the executables. - -Moved the src/STYLE file to runtime/doc/develop.txt. Added the design goals -to it. - -'backspace' is now a string option. See patch 5.4.15. - - -Added *added-5.5* ------ - -Included Exuberant Ctags version 3.3. (Darren Hiebert) - -In runtime/mswin.vim, map CTRL-Q to CTRL-V, so that CTRL-Q can be used -everywhere to do what CTRL-V used to do. - -Support for decompression of bzip2 files in vimrc_example.vim. - -When a patch is included, the patch number is entered in a table in version.c. -This allows skipping a patch without breaking a next one. - -Support for mouse scroll wheel in X11. See patch 5.5a.14. - -line2byte() can be used to get the size of the buffer. See patch 5.4.35. - -The CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert mode are used to -insert a register literally. See patch 5.4.48. - -Uninstall program for MS-Windows. To be able to remove the registry entries -for "Edit with Vim". It is registered to be run from the "Add/Remove -programs" application. See patch 5.4.x7. - - -Fixed *fixed-5.5* ------ - -When using vimrc_example.vim: An error message when the cursor is on a line -higher than the number of lines in the compressed file. Move the autocommand -for jumping to the last known cursor position to after the decompressing -autocommands. - -":mkexrc" and ":mksession" wrote the current value of 'textmode'. That may -mark a file as modified, which causes problems. This is a buffer-specific -setting, it should not affect all files. - -"vim --version" wrote two empty lines. - -Unix: The alarm signal could kill Vim. It is generated by the Perl alarm() -function. Ignore SIGALRM. - -Win32 GUI: Toolbar still had the yellow bitmap for running a Vim script. - -BeOS: "tmo" must be bigtime_t, instead of double. (Seibert) - -Patch 5.4.1 -Problem: Test11 fails when $GZIP is set to "-v". (Matthew Jackson) -Solution: Set $GZIP to an empty string. -Files: src/testdir/test11.in - -Patch 5.4.2 -Problem: Typing <Esc> at the crypt key prompt caused a crash. (Kallingal) -Solution: Check for a NULL pointer returned from get_crypt_key(). -Files: src/fileio.c - -Patch 5.4.3 -Problem: Python: Trying to use the name of an unnamed buffer caused a - crash. (Daniel Burrows) -Solution: Check for b_fname being a NULL pointer. -Files: src/if_python.c - -Patch 5.4.4 -Problem: Win32: When compiled without toolbar, but the 'T' flag is in - 'guioptions', there would be an empty space for the toolbar. -Solution: Add two #ifdefs where checking for the 'T' flag. (Vince Negri) -Files: src/gui.c - -Patch 5.4.5 -Problem: Athena GUI: Using the Buffers.Refresh menu entry caused a crash. - Looks like any ":unmenu" command may cause trouble. -Solution: Disallow ":unmenu" in the Athena version. Disable the Buffers - menu, because the Refresh item would not work. -Files: src/menu.c, runtime/menu.vim - -Patch 5.4.6 -Problem: GTK GUI: Using ":gui" in the .gvimrc file caused an error. Only - happens when the GUI forks. -Solution: Don't fork in a recursive call of gui_start(). -Files: src/gui.c - -Patch 5.4.7 -Problem: Typing 'q' at the more prompt for the ATTENTION message causes the - file loading to be interrupted. (Will Day) -Solution: Reset got_int after showing the ATTENTION message. -Files: src/memline.c - -Patch 5.4.8 -Problem: Edit some file, ":he", ":opt": options from help window are shown, - but pressing space updates from the other window. (Phillipps) - Also: When there are changes in the option-window, ":q!" gives an - error message. -Solution: Before creating the option-window, go to a non-help window. - Use ":bdel!" to delete the buffer. -Files: runtime/optwin.vim - -Patch 5.4.9 - Just updates version.h. The real patch has been moved to 5.4.x1. - This patch is just to keep the version number correct. - -Patch 5.4.10 -Problem: GTK GUI: When $DISPLAY is invalid, "gvim -f" just exits. It - should run in the terminal. -Solution: Use gtk_init_check() instead of gtk_init(). -Files: src/gui_gtk_x11.c - -Patch 5.4.11 -Problem: When using the 'S' flag in 'cpoptions', 'tabstop' is not copied to - the next buffer for some commands, e.g., ":buffer". -Solution: When the BCO_NOHELP flag is given to buf_copy_options(), still - copy the options used by do_help() when neither the "from" or "to" - buffer is a help buffer. -Files: src/option.c - -Patch 5.4.12 -Problem: When using 'smartindent', there would be no extra indent if the - current line did not have any indent already. (Hanus Adler) -Solution: There was a wrongly placed "else", that previously matched with - the "if" that set trunc_line. Removed the "else" and added a - check for trunc_line to be false. -Files: src/misc1.c - -Patch 5.4.13 -Problem: New SGI C compilers need another option for optimisation. -Solution: Add a check in configure for "-OPT:Olimit". (Chin A Young) -Files: src/configure.in, src/configure - -Patch 5.4.14 -Problem: Motif GUI: When the popup menu is present, a tiny window appears - on the desktop for some users. -Solution: Set the menu widget ID for a popup menu to 0. (Thomas Koehler) -Files: src/gui_motif.c - -Patch 5.4.15 -Problem: Since 'backspace' set to 0 has been made Vi compatible, it is no - longer possible to only allow deleting autoindent. -Solution: Make 'backspace' a list of parts, to allow each kind of - backspacing separately. -Files: src/edit.c, src/option.c, src/option.h, src/proto/option.pro, - runtime/doc/option.txt, runtime/doc/insert.txt - -Patch 5.4.16 -Problem: Multibyte: Locale zh_TW.Big5 was not checked for in configure. -Solution: Add zh_TW.Big5 to configure check. (Chih-Tsun Huang) -Files: src/configure.in, src/configure - -Patch 5.4.17 -Problem: GUI: When started from inside gvim with ":!gvim", Vim would not - start. ":!gvim -f" works fine. -Solution: After forking, wait a moment in the parent process, to give the - child a chance to set its process group. -Files: src/gui.c - -Patch 5.4.18 -Problem: Python: The clear_history() function also exists in a library. -Solution: Rename clear_history() to clear_hist(). -Files: src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro - -Patch 5.4.19 -Problem: In a terminal with 25 lines, there is a more prompt after the - ATTENTION message. When hitting 'q' here the dialog prompt - doesn't appear and file loading is interrupted. (Will Day) -Solution: Don't allow quitting the printing of a message for the dialog - prompt. Added the msg_noquit_more flag for this. -Files: src/message.c - -Patch 5.4.20 -Problem: GTK: When starting gvim, would send escape sequences to the - terminal to switch the cursor off and on. -Solution: Don't call msg_start() if the GUI is expected to start. -Files: src/main.c - -Patch 5.4.21 -Problem: Motif: Toplevel menu ordering was wrong when using tear-off items. -Solution: Don't add one to the index for a toplevel menu. -Files: src/gui_motif.c - -Patch 5.4.22 -Problem: In Insert mode, <C-Left>, <S-Left>, <C-Right> and <S-Right> didn't - update the column used for vertical movement. -Solution: Set curwin->w_set_curswant for those commands. -Files: src/edit.c - -Patch 5.4.23 -Problem: When a Visual selection is lost to another program, and then the - same text is Visually selected again, the clipboard ownership - wasn't regained. -Solution: Set clipboard.vmode to NUL to force regaining the clipboard. -Files: src/normal.c - -Patch 5.4.24 -Problem: Encryption: When using ":r file" while 'key' has already entered, - the 'key' option would be messed up. When writing the file it - would be encrypted with an unknown key and lost! (Brad Despres) -Solution: Don't free cryptkey when it is equal to the 'key' option. -Files: src/fileio.c - -Patch 5.4.25 -Problem: When 'cindent' is set, but 'autoindent' isn't, comments are not - properly indented when starting a new line. (Mitterand) -Solution: When there is a comment leader for the new line, but 'autoindent' - isn't set, do C-indenting. -Files: src/misc1.c - -Patch 5.4.26 -Problem: Multi-byte: a multi-byte character is never recognized in a file - name, causing a backslash before it to be removed on Windows. -Solution: Assume that a leading-byte character is a file name character in - vim_isfilec(). -Files: src/charset.c - -Patch 5.4.27 -Problem: Entries in the PopUp[nvic] menus were added for several modes, but - only deleted for the mode they were used for. This resulted in - the entry remaining in the PopUp menu. - When removing a PopUp[nvic] menu, the name had been truncated, - could result in greying-out the whole PopUp menu. -Solution: Remove entries for all modes from the PopUp[nvic] menus. Remove - the PopUp[nvic] menu entries first, before the name is changed. -Files: src/menu.c - -Patch 5.4.28 -Problem: When using a BufWritePre autocommand to change 'fileformat', the - new value would not be used for writing the file. -Solution: Check 'fileformat' after executing the autocommands instead of - before. -Files: src/fileio.c - -Patch 5.4.29 -Problem: Athena GUI: When removing the 'g' flag from 'guioptions', using a - menu can result in a crash. -Solution: Always grey-out menus for Athena, don't hide them. -Files: src/menu.c - -Patch 5.4.30 -Problem: BeOS: Suspending Vim with CTRL-Z didn't work (killed Vim). The - first character typed after ":sh" goes to Vim, instead of the - started shell. -Solution: Don't suspend Vim, start a new shell. Kill the async read thread - when starting a new shell. It will be restarted later. (Will Day) -Files: src/os_unix.c, src/ui.c - -Patch 5.4.31 -Problem: GUI: When 'mousefocus' is set, moving the mouse over where a - window boundary was, causes a hit-enter prompt to be finished. - (Jeff Walker) -Solution: Don't use 'mousefocus' at the hit-enter prompt. Also ignore it - for the more prompt and a few other situations. When an operator - is pending, abort it first. -Files: src/gui.c - -Patch 5.4.32 -Problem: Unix: $LDFLAGS was not passed to configure. -Solution: Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner) -Files: src/Makefile - -Patch 5.4.33 -Problem: Unix: After expanding an environment variable with the shell, the - next expansion would also use the shell, even though it is not - needed. -Solution: Reset "recursive" before returning from gen_expand_wildcards(). -Files: src/misc1.c - -Patch 5.4.34 (also see 5.4.x5) -Problem: When editing a file, and the file name is relative to a directory - above the current directory, the file name was made absolute. - (Gregory Margo) -Solution: Add an argument to shorten_fnames() which indicates if all file - names should be shortened, or only absolute names. In main() only - use shorten_fnames() to shorten absolute names. -Files: src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro - -Patch 5.4.35 -Problem: There is no function to get the current file size. -Solution: Allow using line2byte() with the number of lines in the file plus - one. This returns the offset of the line past the end of the - file, which is the file size plus one. -Files: src/eval.c, runtime/doc/eval.txt - -Patch 5.4.36 -Problem: Comparing strings while ignoring case didn't work correctly for - some machines. (Mide Steed) -Solution: vim_stricmp() and vim_strnicmp() only returned 0 or 1. Changed - them to return -1 when the first argument is smaller. -Files: src/misc2.c - -Patch 5.4.37 (also see 5.4.40 and 5.4.43) -Problem: Long strings from the viminfo file are truncated. -Solution: When writing a long string to the viminfo file, first write a line - with the length, then the string itself in a second line. -Files: src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c, - src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim - -Patch 5.4.38 -Problem: In the option-window, ":set go&" resulted in 'go' being handled - like a boolean option. - Mappings for <Space> and <CR> were overruled by the option-window. -Solution: When the value of an option isn't 0 or 1, don't handle it like a - boolean option. - Save and restore mappings for <Space> and <CR> when entering and - leaving the option-window. -Files: runtime/optwin.vim - -Patch 5.4.39 -Problem: When setting a hidden option, spaces before the equal sign were - not skipped and cause an error message. E.g., ":set csprg =cmd". -Solution: When skipping over a hidden option, check for a following "=val" - and skip it too. -Files: src/option.c - -Patch 5.4.40 (depends on 5.4.37) -Problem: Compiler error for "atol(p + 1)". (Axel Kielhorn) -Solution: Add a typecast: "atol((char *)p + 1)". -Files: src/ex_cmds.c - -Patch 5.4.41 -Problem: Some commands that were not included would give an error message, - even when after "if 0". -Solution: Don't give an error message for an unsupported command when not - executing the command. -Files: src/ex_docmd.c - -Patch 5.4.42 -Problem: ":w" would also cause a truncated message to appear in the message - history. -Solution: Don't put a kept message in the message history when it starts - with "<". -Files: src/message.c - -Patch 5.4.43 (depends on 5.4.37) -Problem: Mixing long lines with multiple lines in a register causes errors - when writing the viminfo file. (Robinson) -Solution: When reading the viminfo file to skip register contents, skip - lines that start with "<". -Files: src/ops.c - -Patch 5.4.44 -Problem: When 'whichwrap' includes '~', a "~" command that goes on to the - next line cannot be properly undone. (Zellner) -Solution: Save each line for undo in n_swapchar(). -Files: src/normal.c - -Patch 5.4.45 (also see 5.4.x8) -Problem: When expand("$ASDF") fails, there is an error message. -Solution: Remove the global expand_interactively. Pass a flag down to skip - the error message. - Also: expand("$ASDF") returns an empty string if $ASDF isn't set. - Previously it returned "$ASDF" when 'shell' is "sh". - Also: system() doesn't print an error when the command returns an - error code. -Files: many - -Patch 5.4.46 -Problem: Backspacing did not always use 'softtabstop' after hitting <CR>, - inserting a register, moving the cursor, etc. -Solution: Reset inserted_space much more often in edit(). -Files: src/edit.c - -Patch 5.4.47 -Problem: When executing BufWritePre or BufWritePost autocommands for a - hidden buffer, the cursor could be moved to a non-existing - position. (Vince Negri) -Solution: Save and restore the cursor and topline for the current window - when it is going to be used to execute autocommands for a hidden - buffer. Use an existing window for the buffer when it's not - hidden. -Files: src/fileio.c - -Patch 5.4.48 -Problem: A paste with the mouse in Insert mode was not repeated exactly the - same with ".". For example, when 'autoindent' is set and pasting - text with leading indent. (Perry) -Solution: Add the CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert - mode, which insert the contents of a register literally. -Files: src/edit.c, src/normal.c, runtime/doc/insert.txt - -Patch 5.4.49 -Problem: When pasting text with [ <MiddleMouse>, the cursor could end up - after the last character of the line. -Solution: Correct the cursor position for the change in indent. -Files: src/ops.c - -Patch 5.4.x1 (note: Replaces patch 5.4.9) -Problem: Win32 GUI: menu hints were never used, because WANT_MENU is not - defined until vim.h is included. -Solution: Move the #ifdef WANT_MENU from where MENUHINTS is defined to where - it is used. -Files: src/gui_w32.c - -Patch 5.4.x2 -Problem: BeOS: When pasting text, one character was moved to the end. -Solution: Re-enable the BeOS code in fill_input_buf(), and fix timing out - with acquire_sem_etc(). (Will Day) -Files: src/os_beos.c, src/ui.c - -Patch 5.4.x3 -Problem: Win32 GUI: When dropping a directory on a running gvim it crashes. -Solution: Avoid using a NULL file name. Also display a message to indicate - that the current directory was changed. -Files: src/gui_w32.c - -Patch 5.4.x4 -Problem: Win32 GUI: Removing an item from the popup menu doesn't work. -Solution: Don't remove the item from the menubar, but from the parent popup - menu. -Files: src/gui_w32.c - -Patch 5.4.x5 (addition to 5.4.34) -Files: src/gui_w32.c - -Patch 5.4.x6 -Problem: Win32: Expanding (dir)name starting with a dot doesn't work. - (McCormack) Only when there is a path before it. -Solution: Fix the check, done before expansion, if the file name pattern - starts with a dot. -Files: src/os_win32.c - -Patch 5.4.x7 -Problem: Win32 GUI: Removing "Edit with Vim" from registry is difficult. -Solution: Add uninstall program to remove the registry keys. It is installed - in the "Add/Remove programs" list for ease of use. - Also: don't set $VIM when the executable is with the runtime files. - Also: Add a text file with a step-by-step description of how to - uninstall Vim for DOS and Windows. -Files: src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt - -Patch 5.4.x8 (addition to 5.4.45) -Files: many - -Patch 5.4.x9 -Problem: Win32 GUI: After executing an external command, focus is not - always regained (when using focus-follows-mouse). -Solution: Add SetFocus() in mch_system(). (Mike Steed) -Files: src/os_win32.c - - -Patch 5.5a.1 -Problem: ":let @* = @:" did not work. The text was not put on the - I clipboard. (Fisher) -Solution: Own the clipboard and put the text on it. -Files: src/ops.c - -Patch 5.5a.2 -Problem: append() did not mark the buffer modified. Marks below the - new line were not adjusted. -Solution: Fix the f_append() function. -Files: src/eval.c - -Patch 5.5a.3 -Problem: Editing compressed ".gz" files doesn't work on non-Unix systems, - because there is no "mv" command. -Solution: Add the rename() function and use it instead of ":!mv". - Also: Disable the automatic jump to the last position, because it - changes the jumplist. -Files: src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim - -Patch 5.5a.4 -Problem: When using whole-line completion in insert mode while the cursor - is in the indent, get "out of memory" error. (Stekrt) -Solution: Don't allocate a negative amount of memory in ins_complete(). -Files: src/edit.c - -Patch 5.5a.5 -Problem: Win32: The 'path' option can hold only up to 256 characters, - because _MAX_PATH is 256. (Robert Webb) -Solution: Use a fixed path length of 1024. -Files: src/os_win32.h - -Patch 5.5a.6 -Problem: Compiling with gcc on Win32, using the Unix Makefile, didn't work. -Solution: Add $(SUFFIX) to all places where an executable is used. Also - pass it to ctags. (Reynolds) -Files: src/Makefile - -Patch 5.5a.7 -Problem: When using "cat | vim -" in an xterm, the xterm version reply - would end up in the file. -Solution: Read the file from stdin before switching the terminal to RAW - mode. Should also avoid problems with programs that use a - specific terminal setting. - Also: when using the GUI, print "Reading from stdin..." in the GUI - window, to give a hint why it doesn't do anything. -Files: src/main.c, src/fileio.c - -Patch 5.5a.8 -Problem: On multi-threaded Solaris, suspending doesn't work. -Solution: Call pause() when the SIGCONT signal was not received after - sending the SIGTSTP signal. (Nagano) -Files: src/os_unix.c - -Patch 5.5a.9 -Problem: 'winaltkeys' could be set to an empty argument, which is illegal. -Solution: Give an error message when doing ":set winaltkeys=". -Files: src/option.c - -Patch 5.5a.10 -Problem: Win32 console: Using ALTGR on a German keyboard to produce "}" - doesn't work, because the 8th bit is set when ALT is pressed. -Solution: Don't set the 8th bit when ALT and CTRL are used. (Leipert) -Files: src/os_win32.c - -Patch 5.5a.11 -Problem: Tcl: Configure always uses tclsh8.0. - Also: Loading a library doesn't work. -Solution: Add "--with-tclsh" configure argument to allow specifying another - name for the tcl shell. - Call Tcl_Init() in tclinit() to make loading libraries work. - (Johannes Zellner) -Files: src/configure.in, src/configure, src/if_tcl.c - -Patch 5.5a.12 -Problem: The "user_commands" feature is called "user-commands". -Solution: Replace "user-commands" with "user_commands". (Kim Sung-bom) - Keep "user-commands" for the has() function, to remain backwards - compatible with 5.4. -Files: src/eval.c, src/version.c - -Patch 5.5a.13 -Problem: OS/2: When $HOME is not defined, "C:/" is used for the viminfo - file. That is very wrong when OS/2 is on another partition. -Solution: Use $VIM for the viminfo file when it is defined, like for MSDOS. - Also: Makefile.os2 didn't depend on os_unix.h. -Files: src/os_unix.h, src/Makefile.os2 - -Patch 5.5a.14 -Problem: Athena, Motif and GTK: The Mouse scroll wheel doesn't work. -Solution: Interpret a click of the wheel as a key press of the <MouseDown> - or <MouseUp> keys. Default behavior is to scroll three lines, or - a full page when Shift is used. -Files: src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c, - src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c, - src/misc2.c, src/normal.c, src/proto/normal.pro, src/vim.h, - runtime/doc/scroll.txt - -Patch 5.5a.15 -Problem: Using CTRL-A in Insert mode doesn't work correctly when the insert - started with the <Insert> key. (Andreas Rohrschneider) -Solution: Replace <Insert> with "i" before setting up the redo buffer. -Files: src/normal.c - -Patch 5.5a.16 -Problem: VMS: GUI does not compile and run. -Solution: Various fixes. (Zoltan Arpadffy) - Moved functions from os_unix.c to ui.c, so that VMS can use them - too: open_app_context(), x11_setup_atoms() and clip_x11* functions. - Made xterm_dpy global, it's now used by ui.c and os_unix.c. - Use gethostname() always, sys_hostname doesn't exist. -Files: src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c, - src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro - -Renamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar() -to avoid symbol length limit of 31 characters. (Steve P. Wall) - -Patch 5.5b.1 -Problem: SASC complains about dead assignments and implicit type casts. -Solution: Removed the dead assignments. Added explicit type casts. -Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c, - src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c, - src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c, - src/screen.c - -Patch 5.5b.2 -Problem: When using "CTRL-O O" in Insert mode, hit <Esc> and then "o" in - another line truncates that line. (Devin Weaver) -Solution: When using a command that starts Insert mode from CTRL-O, reset - "restart_edit" first. This avoids that edit() is called with a - mix of starting a new edit command and restarting a previous one. -Files: src/normal.c - -============================================================================== -VERSION 5.6 *version-5.6* - -Version 5.6 is a bug-fix version of 5.5. - - -Changed *changed-5.6* -------- - -Small changes to OleVim files. (Christian Schaller) - -Inserted "/**/" between patch numbers in src/version.c. This allows for one -line of context, which some versions of patch need. - -Reordered the Syntax menu to avoid long submenus. Removed keyboard shortcuts -for alphabetical items to avoid a clash with fixed items. - - -Added *added-5.6* ------ - -Included Exuberant Ctags version 3.4. (Darren Hiebert) - -OpenWithVim in Python. (Christian Schaller) - -Win32 GUI: gvimext.dll, for the context menu "Edit with Vim" entry. Avoids -the reported problems with the MS Office taskbar. Now it's a Shell Extension. -(Tianmiao Hu) - -New syntax files: -abel Abel (John Cook) -aml Arc Macro Language (Nikki Knuit) -apachestyle Apache-style config file (Christian Hammers) -cf Cold Fusion (Jeff Lanzarotta) -ctrlh files with CTRL-H sequences (Bram Moolenaar) -cupl CUPL (John Cook) -cuplsim CUPL simulation (John Cook) -erlang Erlang (Kresimir Marzic) -gedcom Gedcom (Paul Johnson) -icon Icon (Wendell Turner) -ist MakeIndex style (Peter Meszaros) -jsp Java Server Pages (Rafael Garcia-Suarez) -rcslog Rcslog (Joe Karthauser) -remind Remind (Davide Alberani) -sqr Structured Query Report Writer (Paul Moore) -tads TADS (Amir Karger) -texinfo Texinfo (Sandor Kopanyi) -xpm2 X Pixmap v2 (Steve Wall) - -The 'C' flag in 'cpoptions' can be used to switch off concatenation for -sourced lines. See patch 5.5.013 below. |line-continuation| - -"excludenl" argument for the ":syntax" command. See patch 5.5.032 below. -|:syn-excludenl| - -Implemented |z+| and |z^| commands. See patch 5.5.050 below. - -Vim logo in Corel Draw format. Can be scaled to any resolution. - - -Fixed *fixed-5.6* ------ - -Using this mapping in Select mode, terminated completion: -":vnoremap <C-N> <Esc>a<C-N>" (Benji Fisher) -Ignore K_SELECT in ins_compl_prep(). - -VMS (Zoltan Arpadffy, David Elins): -- ioctl() in pty.c caused trouble, #ifndef VMS added. -- Cut & paste mismatch corrected. -- Popup menu line crash corrected. (Patch 5.5.047) -- Motif directories during open and save as corrected. -- Handle full file names with version numbers. (Patch 5.5.046) -- Directory handling (CD command etc.) -- Corrected file name conversion VMS to Unix and v.v. -- Recovery was not working. -- Terminal and signal handling was outdated compared to os_unix.c. -- Improved os_vms.txt. - -Configure used fprintf() instead of printf() to check for __DATE__ and -__TIME__. (John Card II) - -BeOS: Adjust computing the char_height and char_ascent. Round them up -separately, avoids redrawing artifacts. (Mike Steed) - -Fix a few multi-byte problems in menu_name_skip(), set_reg_ic(), searchc() and -findmatchlimit(). (Taro Muraoka) - -GTK GUI: -- With GTK 1.2.5 and later the scrollbars were not redrawn correctly. -- Adjusted the gtk_form_draw() function. -- SNiFF connection didn't work. -- 'mousefocus' was not working. (Dalecki) -- Some keys were not working with modifiers: Shift-Tab, Ctrl-Space and CTRL-@. - - -Patch 5.5.001 -Problem: Configure in the top directory did not pass on an argument with a - space correctly. For example "./configure --previs="/My home". - (Stephane Chazelas) -Solution: Use '"$@"' instead of '$*' to pass on the arguments. -Files: configure - -Patch 5.5.002 -Problem: Compilation error for using "fds[] & POLLIN". (Jeff Walker) -Solution: Use "fds[].revents & POLLIN". -Files: src/os_unix.c - -Patch 5.5.003 -Problem: The autoconf check for sizeof(int) is wrong on machines where - sizeof(size_t) != sizeof(int). -Solution: Use our own configure check. Also fixes the warning for - cross-compiling. -Files: src/configure.in, src/configure - -Patch 5.5.004 -Problem: On Unix it's not possible to interrupt ":sleep 100". -Solution: Switch terminal to cooked mode while asleep, to allow a SIGINT to - wake us up. But switch off echo, added TMODE_SLEEP. -Files: src/term.h, src/os_unix.c - -Patch 5.5.005 -Problem: When using <f-args> with a user command, an empty argument to the - command resulted in one empty string, while no string was - expected. -Solution: Catch an empty argument and pass no argument to the function. - (Paul Moore) -Files: src/ex_docmd.c - -Patch 5.5.006 -Problem: Python: When platform-dependent files are in another directory - than the platform-independent files it doesn't work. -Solution: Also check the executable directory, and add it to CFLAGS. (Tessa - Lau) -Files: src/configure.in, src/configure - -Patch 5.5.007 (extra) -Problem: Win32 OLE: Occasional crash when exiting while still being used - via OLE. -Solution: Move OleUninitialize() to before deleting the application object. - (Vince Negri) -Files: src/if_ole.cpp - -Patch 5.5.008 -Problem: 10000@@ takes a long time and cannot be interrupted. -Solution: Check for CTRL-C typed while in the loop to push the register. -Files: src/normal.c - -Patch 5.5.009 -Problem: Recent Sequent machines don't link with "-linet". (Kurtis Rader) -Solution: Remove configure check for Sequent. -Files: src/configure.in, src/configure - -Patch 5.5.010 -Problem: Ctags freed a memory block twice when exiting. When out of - memory, a misleading error message was given. -Solution: Update to ctags 3.3.2. Also fixes a few other problems. (Darren - Hiebert) -Files: src/ctags/* - -Patch 5.5.011 -Problem: After "CTRL-V s", the cursor jumps back to the start, while all - other operators leave the cursor on the last changed character. - (Xiangjiang Ma) -Solution: Position cursor on last changed character, if possible. -Files: src/ops.c - -Patch 5.5.012 -Problem: Using CTRL-] in Visual mode doesn't work when the text includes a - space (just where it's useful). (Stefan Bittner) -Solution: Don't escape special characters in a tag name with a backslash. -Files: src/normal.c - -Patch 5.5.013 -Problem: The ":append" and ":insert" commands allow using a leading - backslash in a line. The ":source" command concatenates those - lines. (Heinlein) -Solution: Add the 'C' flag in 'cpoptions' to switch off concatenation. -Files: src/ex_docmd.c, src/option.h, runtime/doc/options.txt, - runtime/filetype.vim, runtime/scripts.vim - -Patch 5.5.014 -Problem: When executing a register with ":@", the ":append" command would - get text lines with a ':' prepended. (Heinlein) -Solution: Remove the ':' characters. -Files: src/ex_docmd.c, src/ex_getln.c, src/globals.h - -Patch 5.5.015 -Problem: When using ":g/pat/p", it's hard to see where the output starts, - the ":g" command is overwritten. Vi keeps the ":g" command. -Solution: Keep the ":g" command, but allow overwriting it with the report - for the number of changes. -Files: src/ex_cmds.c - -Patch 5.5.016 (extra) -Problem: Win32: Using regedit to install Vim in the popup menu requires the - user to confirm this in a dialog. -Solution: Use "regedit /s" to avoid the dialog -Files: src/dosinst.c - -Patch 5.5.017 -Problem: If an error occurs when closing the current window, Vim could get - stuck in the error handling. -Solution: Don't set curwin to NULL when closing the current window. -Files: src/window.c - -Patch 5.5.018 -Problem: Absolute paths in shell scripts do not always work. -Solution: Use /usr/bin/env to find out the path. -Files: runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl, - runtime/tools/shtags.pl - -Patch 5.5.019 -Problem: A function call in 'statusline' stops using ":q" twice from - exiting, when the last argument hasn't been edited. -Solution: Don't decrement quitmore when executing a function. (Madsen) -Files: src/ex_docmd.c - -Patch 5.5.020 -Problem: When the output of CTRL-D completion in the commandline goes all - the way to the last column, there is an empty line. -Solution: Don't add a newline when the cursor wrapped already. (Madsen) -Files: src/ex_getln.c - -Patch 5.5.021 -Problem: When checking if a file name in the tags file is relative, - environment variables were not expanded. -Solution: Expand the file name before checking if it is relative. (Madsen) -Files: src/tag.c - -Patch 5.5.022 -Problem: When setting or resetting 'paste' the ruler wasn't updated. -Solution: Update the status lines when 'ruler' changes because of 'paste'. -Files: src/option.c - -Patch 5.5.023 -Problem: When editing a new file and autocommands change the cursor - position, the cursor was moved back to the first non-white, unless - 'startofline' was reset. -Solution: Keep the new column, just like the line number. -Files: src/ex_cmds.c - -Patch 5.5.024 (extra) -Problem: Win32 GUI: When using confirm() to put up a dialog without a - default button, the dialog would not have keyboard focus. - (Krishna) -Solution: Always set focus to the dialog window. Only set focus to a button - when a default one is specified. -Files: src/gui_w32.c - -Patch 5.5.025 -Problem: When using "keepend" in a syntax region, a contained match that - includes the end-of-line could still force that region to - continue, if there is another contained match in between. -Solution: Check the keepend_level in check_state_ends(). -Files: src/syntax.c - -Patch 5.5.026 -Problem: When starting Vim in a white-on-black xterm, with 'bg' set to - "dark", and then starting the GUI with ":gui", setting 'bg' to - "light" in the gvimrc, the highlighting isn't set. (Tsjokwing) -Solution: Set the highlighting when 'bg' is changed in the gvimrc, even - though full_screen isn't set. -Files: src/option.c - -Patch 5.5.027 -Problem: Unix: os_unix.c doesn't compile when XTERM_CLIP is used but - WANT_TITLE isn't. (Barnum) -Solution: Move a few functions that are used by the X11 title and clipboard - and put another "#if" around it. -Files: src/os_unix.c - -Patch 5.5.028 (extra) -Problem: Win32 GUI: When a file is dropped on Win32 gvim while at the ":" - prompt, the file is edited but the command line is actually still - there, the cursor goes back to command line on the next command. - (Krishna) -Solution: When dropping a file or directory on gvim while at the ":" prompt, - insert the name of the file/directory. Allows using the - file/directory name for any Ex command. -Files: src/gui_w32.c - -Patch 5.5.029 -Problem: "das" at the end of the file didn't delete the last character of - the sentence. -Solution: When there is no character after the sentence, make the operation - inclusive in current_sent(). -Files: src/search.c - -Patch 5.5.030 -Problem: Unix: in os_unix.c, "term_str" is used, which is also defined in - vim.h as a macro. (wuxin) -Solution: Renamed "term_str" to "buf" in do_xterm_trace(). -Files: src/os_unix.c - -Patch 5.5.031 (extra) -Problem: Win32 GUI: When exiting Windows, gvim will leave swap files behind - and will be killed ungracefully. (Krishna) -Solution: Catch the WM_QUERYENDSESSION and WM_ENDSESSION messages and try to - exit gracefully. Allow the user to cancel the shutdown if there - is a changed buffer. -Files: src/gui_w32.c - -Patch 5.5.032 -Problem: Patch 5.5.025 wasn't right. And C highlighting was still not - working correctly for a #define. -Solution: Added "excludenl" argument to ":syntax", to be able not to extend - a containing item when there is a match with the end-of-line. -Files: src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim - -Patch 5.5.033 -Problem: When reading from stdin, a long line in viminfo would mess up the - file message. readfile() uses IObuff for keep_msg, which could be - overwritten by anyone. -Solution: Copy the message from IObuff to msg_buf and set keep_msg to that. - Also change vim_fgets() to not use IObuff any longer. -Files: src/fileio.c - -Patch 5.5.034 -Problem: "gvim -rv" caused a crash. Using 't_Co' before it's set. -Solution: Don't try to initialize the highlighting before it has been - initialized from main(). -Files: src/syntax.c - -Patch 5.5.035 -Problem: GTK with XIM: Resizing with status area was messy, and - ":set guioptions+=b" didn't work. -Solution: Make status area a separate widget, but not a separate window. - (Chi-Deok Hwang) -Files: src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c - -Patch 5.5.036 -Problem: The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to - uncompress a file did not do detection for 'fileformat'. This is - because the filtering is done with 'binary' set. -Solution: Split the filtering into separate write, filter and read commands. -Files: runtime/vimrc_example.vim - -Patch 5.5.037 -Problem: The "U" command didn't mark the buffer as changed. (McCormack) -Solution: Set the 'modified' flag when using "U". -Files: src/undo.c - -Patch 5.5.038 -Problem: When typing a long ":" command, so that the screen scrolls up, - causes the hit-enter prompt, even though the user just typed - return to execute the command. -Solution: Reset need_wait_return if (part of) the command was typed in - getcmdline(). -Files: src/ex_getln.c - -Patch 5.5.039 -Problem: When using a custom status line, "%a" (file # of #) reports the - index of the current window for all windows. -Solution: Pass a window pointer to append_arg_number(), and pass the window - being updated from build_stl_str_hl(). (Stephen P. Wall) -Files: src/buffer.c, src/screen.c, src/proto/buffer.pro - -Patch 5.5.040 -Problem: Multi-byte: When there is some error in xim_real_init(), it can - close XIM and return. After this there can be a segv. -Solution: Test "xic" for being non-NULL, don't set "xim" to NULL. Also try - to find more matches for supported styles. (Sung-Hyun Nam) -Files: src/multbyte.c - -Patch 5.5.041 -Problem: X11 GUI: CTRL-_ requires the SHIFT key only on some machines. -Solution: Translate CTRL-- to CTRL-_. (Robert Webb) -Files: src/gui_x11.c - -Patch 5.5.042 -Problem: X11 GUI: keys with ALT were assumed to be used for the menu, even - when the menu has been disabled by removing 'm' from 'guioptions'. -Solution: Ignore keys with ALT only when gui.menu_is_active is set. (Raf) -Files: src/gui_x11.c - -Patch 5.5.043 -Problem: GTK: Handling of fontset fonts was not right when 'guifontset' - contains exactly 14 times '-'. -Solution: Avoid setting fonts when working with a fontset. (Sung-Hyun Nam) -Files: src/gui_gtk_x11.c - -Patch 5.5.044 -Problem: pltags.pl contains an absolute path "/usr/local/bin/perl". That - might not work everywhere. -Solution: Use "/usr/bin/env perl" instead. -Files: runtime/tools/pltags.pl - -Patch 5.5.045 -Problem: Using "this_session" variable does not work, requires preceding it - with "v:". Default filename for ":mksession" isn't mentioned - in the docs. (Fisher) -Solution: Support using "this_session" to be backwards compatible. -Files: src/eval.c, runtime/doc/options.txt - -Patch 5.5.046 (extra) -Problem: VMS: problems with path and filename. -Solution: Truncate file name at last ';', etc. (Zoltan Arpadffy) -Files: src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c, - src/proto/os_vms.pro - -Patch 5.5.047 -Problem: VMS: Crash when using the popup menu -Solution: Turn the #define MENU_MODE_CHARS into an array. (Arpadffy) -Files: src/structs.h, src/menu.c - -Patch 5.5.048 -Problem: HP-UX 11: Compiling doesn't work, because both string.h and - strings.h are included. (Squassabia) -Solution: The configure test for including both string.h and strings.h - must include <Xm/Xm.h> first, because it causes problems. -Files: src/configure.in, src/configure, src/config.h.in - -Patch 5.5.049 -Problem: Unix: When installing Vim, the protection bits of files might be - influenced by the umask. -Solution: Add $(FILEMOD) to Makefile. (Shetye) -Files: src/Makefile - -Patch 5.5.050 -Problem: "z+" and "z^" commands are missing. -Solution: Implemented "z+" and "z^". -Files: src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt - -Patch 5.5.051 -Problem: Several Unix systems have a problem with the optimization limits - check in configure. -Solution: Removed the configure check, let the user add it manually in - Makefile or the environment. -Files: src/configure.in, src/configure, src/Makefile - -Patch 5.5.052 -Problem: Crash when using a cursor key at the ATTENTION prompt. (Alberani) -Solution: Ignore special keys at the console dialog. Also ignore characters - > 255 for other uses of tolower() and toupper(). -Files: src/menu.c, src/message.c, src/misc2.c - -Patch 5.5.053 -Problem: Indenting is wrong after a function when 'cino' has "fs". Another - problem when 'cino' has "{s". -Solution: Put line after closing "}" of a function at the left margin. - Apply ind_open_extra in the right way after a '{'. -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - -Patch 5.5.054 -Problem: Unix: ":e #" doesn't work if the alternate file name contains a - space or backslash. (Hudacek) -Solution: When replacing "#", "%" or other items that stand for a file name, - prepend a backslash before special characters. -Files: src/ex_docmd.c - -Patch 5.5.055 -Problem: Using "<C-V>$r-" in blockwise Visual mode replaces one character - beyond the end of the line. (Zivkov) -Solution: Only replace existing characters. -Files: src/ops.c - -Patch 5.5.056 -Problem: After "z20<CR>" messages were printed at the old command line - position once. (Veselinovic) -Solution: Set msg_row and msg_col when changing cmdline_row in - win_setheight(). -Files: src/window.c - -Patch 5.5.057 -Problem: After "S<Esc>" it should be possible to restore the line with "U". - (Veselinovic) -Solution: Don't call u_clearline() in op_delete() when changing only one - line. -Files: src/ops.c - -Patch 5.5.058 -Problem: Using a long search pattern and then "n" causes the hit-enter - prompt. (Krishna) -Solution: Truncate the echoed pattern, like other messages. Moved code for - truncating from msg_attr() to msg_strtrunc(). -Files: src/message.c, src/proto/message.pro, src/search.c - -Patch 5.5.059 -Problem: GTK GUI: When $term is invalid, using "gvim" gives an error - message, even though $term isn't really used. (Robbins) -Solution: When the GUI is about to start, skip the error messages for a - wrong $term. -Files: src/term.c - -Patch 5.5.060 (extra) -Problem: Dos 32 bit: When a directory in 'backupdir' doesn't exist, ":w" - causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf) -Solution: The code to work around a LFN bug in Windows 95 doesn't handle a - non-existing target name correctly. When renaming fails, make - sure the file has its original name. Also do this for the Win32 - version, although it's unlikely that it runs into this problem. -Files: src/os_msdos.c, src/os_win32.c - -Patch 5.5.061 -Problem: When using "\:" in a modeline, the backslash is included in the - option value. (Mohsin) -Solution: Remove one backslash before the ':' in a modeline. -Files: src/buffer.c, runtime/doc/options.txt - -Patch 5.5.062 (extra) -Problem: Win32 console: Temp files are created in the root of the current - drive, which may be read-only. (Peterson) -Solution: Use the same mechanism of the GUI version: Use $TMP, $TEMP or the - current directory. Cleaned up vim_tempname() a bit. -Files: src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt - -Patch 5.5.063 -Problem: When using whole-line completion in Insert mode, 'cindent' is - applied, even after changing the indent of the line. -Solution: Don't reindent the completed line after inserting/removing indent. - (Robert Webb) -Files: src/edit.c - -Patch 5.5.064 -Problem: has("sniff") doesn't work correctly. -Solution: Return 1 when Vim was compiled with the +sniff feature. (Pruemmer) -Files: src/eval.c - -Patch 5.5.065 -Problem: When dropping a file on Vim, the 'shellslash' option is not - effective. (Krishna) -Solution: Fix the slashes in the dropped file names according to - 'shellslash'. -Files: src/ex_docmd.c, runtime/doc/options.txt - -Patch 5.5.066 -Problem: For systems with backslash in file name: Setting a file name - option to a value starting with "\\machine" removed a backslash. -Solution: Keep the double backslash for "\\machine", but do change - "\\\\machine" to "\\machine" for backwards compatibility. -Files: src/option.c, runtime/doc/options.txt - -Patch 5.5.067 -Problem: With 'hlsearch' set, the pattern "\>" doesn't highlight the first - match in a line. (Benji Fisher) -Solution: Fix highlighting an empty match. Also highlight the first - character in an empty line for "$". -Files: src/screen.c - -Patch 5.5.068 -Problem: Crash when a ":while" is used with an argument that has an error. - (Sylvain Viart) -Solution: Was using an uninitialized index in the cs_line[] array. The - crash only happened when the index was far off. Made sure the - uninitialized index isn't used. -Files: src/ex_docmd.c - -Patch 5.5.069 -Problem: Shifting lines in blockwise Visual mode didn't set the 'modified' - flag. -Solution: Do set the 'modified' flag. -Files: src/ops.c - -Patch 5.5.070 -Problem: When editing a new file, creating that file outside of Vim, then - editing it again, ":w" still warns for overwriting an existing - file. (Nam) -Solution: The BF_NEW flag in the "b_flags" field wasn't cleared properly. -Files: src/buffer.c, src/fileio.c - -Patch 5.5.071 -Problem: Using a matchgroup in a ":syn region", which is the same syntax - group as the region, didn't stop a contained item from matching in - the start pattern. -Solution: Also push an item on the stack when the syntax ID of the - matchgroup is the same as the syntax ID of the region. -Files: src/syntax.c - -Patch 5.5.072 (extra) -Problem: Dos 32 bit: When setting 'columns' to a too large value, Vim may - crash, and the DOS console too. -Solution: Check that the value of 'columns' isn't larger than the number of - columns that the BIOS reports. -Files: src/os_msdos.c, src/proto/os_msdos.pro, src/option.c - -Patch 5.5.073 (extra) -Problem: Win 32 GUI: The Find and Find/Replace dialogs didn't show the - "match case" checkbox. The Find/Replace dialog didn't handle the - "match whole word" checkbox. -Solution: Support the "match case" and "match whole word" checkboxes. -Files: src/gui_w32.c - -Patch 5.6a.001 -Problem: Using <C-End> with a count doesn't work like it does with "G". - (Benji Fisher) -Solution: Accept a count for <C-End> and <C-Home>. -Files: src/normal.c - -Patch 5.6a.002 -Problem: The script for conversion to HTML was an older version. -Solution: Add support for running 2html.vim on a color terminal. -Files: runtime/syntax/2html.vim - -Patch 5.6a.003 -Problem: Defining a function inside a function didn't give an error - message. A missing ":endfunction" doesn't give an error message. -Solution: Allow defining a function inside a function. -Files: src/eval.c, runtime/doc/eval.txt - -Patch 5.6a.004 -Problem: A missing ":endwhile" or ":endif" doesn't give an error message. - (Johannes Zellner) -Solution: Check for missing ":endwhile" and ":endif" in sourced files. - Add missing ":endif" in file selection macros. -Files: src/ex_docmd.c, runtime/macros/file_select.vim - -Patch 5.6a.005 -Problem: 'hlsearch' was not listed alphabetically. The value of 'toolbar' - was changed when 'compatible' is set. -Solution: Moved entry of 'hlsearch' in options[] table down. - Don't reset 'toolbar' option to the default value when - 'compatible' is set. -Files: src/option.c - -Patch 5.6a.006 -Problem: Using a backwards range inside ":if 0" gave an error message. -Solution: Don't complain about a range when it is not going to be used. - (Stefan Roemer) -Files: src/ex_docmd.c - -Patch 5.6a.007 -Problem: ":let" didn't show internal Vim variables. (Ron Aaron) -Solution: Do show ":v" variables for ":let" and ":let v:name". -Files: src/eval.c - -Patch 5.6a.008 -Problem: Selecting a syntax from the Syntax menu gives an error message. -Solution: Replace "else if" in SetSyn() with "elseif". (Ronald Schild) -Files: runtime/menu.vim - -Patch 5.6a.009 -Problem: When compiling with +extra_search but without +syntax, there is a - compilation error in screen.c. (Axel Kielhorn) -Solution: Adjust the #ifdef for declaring and initializing "line" in - win_line(). Also solve compilation problem when +statusline is - used without +eval. Another one when +cmdline_compl is used - without +eval. -Files: src/screen.c, src/misc2.c - -Patch 5.6a.010 -Problem: In a function, ":startinsert!" does not append to the end of the - line if a ":normal" command was used to move the cursor. (Fisher) -Solution: Reset "w_set_curswant" to avoid that w_curswant is changed again. -Files: src/ex_docmd.c - -Patch 5.6a.011 (depends on 5.6a.004) -Problem: A missing ":endif" or ":endwhile" in a function doesn't give an - error message. -Solution: Give that error message. -Files: src/ex_docmd.c - -Patch 5.6a.012 (depends on 5.6a.008) -Problem: Some Syntax menu entries caused a hit-enter prompt. -Solution: Call a function to make the command shorter. Also rename a few - functions to avoid name clashes. -Files: runtime/menu.vim - -Patch 5.6a.013 -Problem: Command line completion works different when another completion - was done earlier. (Johannes Zellner) -Solution: Reset wim_index when starting a new completion. -Files: src/ex_getln.c - -Patch 5.6a.014 -Problem: Various warning messages when compiling and running lint with - different combinations of features. -Solution: Fix the warning messages. -Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c, - src/option.c, src/screen.c, src/search.c, src/syntax.c, - src/feature.h, src/globals.h - -Patch 5.6a.015 -Problem: The vimtutor command doesn't always know the value of $VIMRUNTIME. -Solution: Let Vim expand $VIMRUNTIME, instead of the shell. -Files: src/vimtutor - -Patch 5.6a.016 (extra) -Problem: Mac: Window size is restricted when starting. Cannot drag the - window all over the desktop. -Solution: Get real screen size instead of assuming 640x400. Do not use a - fixed number for the drag limits. (Axel Kielhorn) -Files: src/gui_mac.c - -Patch 5.6a.017 -Problem: The "Paste" entry in popup menu for Visual, Insert and Cmdline - mode is in the wrong position. (Stol) -Solution: Add priority numbers for all Paste menu entries. -Files: runtime/menu.vim - -Patch 5.6a.018 -Problem: GTK GUI: submenu priority doesn't work. - Help dialog could be destroyed too soon. - When closing a dialog window (e.g. the "ATTENTION" one), Vim would - just hang. - When GTK theme is changed, Vim doesn't adjust to the new colors. - Argument for ":promptfind" isn't used. -Solution: Fixed the mentioned problems. - Made the dialogs look&feel nicer. - Moved functions to avoid the need for a forward declaration. - Fixed reentrancy of the file browser dialog. - Added drag&drop support for GNOME. - Init the text for the Find/replace dialog from the last used - search string. Set "match whole word" toggle button correctly. - Made repeat rate for drag outside of window depend on the - distance from the window. (Marcin Dalecki) - Made the drag in Visual mode actually work. - Removed recursiveness protection from gui_mch_get_rgb(), it might - cause more trouble than it solves. -Files: src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c, - src/proto/ui.pro, src/misc2.c - -Patch 5.6a.019 -Problem: When trying to recover through NFS, which uses a large block size, - Vim might think the swap file is empty, because mf_blocknr_max is - zero. (Scott McDermott) -Solution: When computing the number of blocks of the file in mf_open(), - round up instead of down. -Files: src/memfile.c - -Patch 5.6a.020 -Problem: GUI GTK: Could not set display for gvim. -Solution: Add "-display" and "--display" arguments. (Marcin Dalecki) -Files: src/gui_gtk_x11.c - -Patch 5.6a.021 -Problem: Recovering still may not work when the block size of the device - where the swap file is located is larger than 4096. -Solution: Read block 0 with the minimal block size. -Files: src/memline.c, src/memfile.c, src/vim.h - -Patch 5.6a.022 (extra) -Problem: Win32 GUI: When an error in the vimrc causes a dialog to pop up - (e.g., for an existing swap file), Vim crashes. (David Elins) -Solution: Before showing a dialog, open the main window. -Files: src/gui_w32.c - -Patch 5.6a.023 -Problem: Using expand("%:gs??/?") causes a crash. (Ron Aaron) -Solution: Check for running into the end of the string in do_string_sub(). -Files: src/eval.c - -Patch 5.6a.024 -Problem: Using an autocommand to delete a buffer when leaving it can cause - a crash when jumping to a tag. (Franz Gorkotte) -Solution: In do_tag(), store tagstacklen before jumping to another buffer. - Check tagstackidx after jumping to another buffer. - Add extra check in win_split() if tagname isn't NULL. -Files: src/tag.c, src/window.c - -Patch 5.6a.025 (extra) -Problem: Win32 GUI: The tables for toupper() and tolower() are initialized - too late. (Mike Steed) -Solution: Move the initialization to win32_init() and call it from main(). -Files: src/main.c, src/os_w32.c, src/proto/os_w32.pro - -Patch 5.6a.026 -Problem: When the SNiFF connection is open, shell commands hang. (Pruemmer) -Solution: Skip a second wait() call if waitpid() already detected that the - child has exited. -Files: src/os_unix.c - -Patch 5.6a.027 (extra) -Problem: Win32 GUI: The "Edit with Vim" popup menu entry causes problems - for the Office toolbar. -Solution: Use a shell extension dll. (Tianmiao Hu) - Added it to the install and uninstal programs, replaces the old - "Edit with Vim" menu registry entries. -Files: src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt - -Patch 5.6a.028 (extra) -Problem: Win32 GUI: Dialogs and tear-off menus can't handle multi-byte - characters. -Solution: Adjust nCopyAnsiToWideChar() to handle multi-byte characters - correctly. -Files: src/gui_w32.c - -============================================================================== -VERSION 5.7 *version-5.7* - -Version 5.7 is a bug-fix version of 5.6. - -Changed *changed-5.7* -------- - -Renamed src/INSTALL.mac to INSTALL_mac.txt to avoid it being recognized with a -wrong file type. Also renamed src/INSTALL.amiga to INSTALL_ami.txt. - - -Added *added-5.7* ------ - -New syntax files: -stp Stored Procedures (Jeff Lanzarotta) -snnsnet, snnspat, snnsres SNNS (Davide Alberani) -mel MEL (Robert Minsk) -ruby Ruby (Mirko Nasato) -tli TealInfo (Kurt W. Andrews) -ora Oracle config file (Sandor Kopanyi) -abaqus Abaqus (Carl Osterwisch) -jproperties Java Properties (Simon Baldwin) -apache Apache config (Allan Kelly) -csp CSP (Jan Bredereke) -samba Samba config (Rafael Garcia-Suarez) -kscript KDE script (Thomas Capricelli) -hb Hyper Builder (Alejandro Forero Cuervo) -fortran Fortran (rewritten) (Ajit J. Thakkar) -sml SML (Fabrizio Zeno Cornelli) -cvs CVS commit (Matt Dunford) -aspperl ASP Perl (Aaron Hope) -bc BC calculator (Vladimir Scholtz) -latte Latte (Nick Moffitt) -wml WML (Gerfried Fuchs) - -Included Exuberant ctags 3.5.1. (Darren Hiebert) - -"display" and "fold" arguments for syntax items. For future extension, they -are ignored now. - -strftime() function for the Macintosh. - -macros/explorer.vim: A file browser script (M A Aziz Ahmed) - - -Fixed *fixed-5.7* ------ - -The 16 bit MS-DOS version is now compiled with Bcc 3.1 instead of 4.0. The -executable is smaller. - -When a "make test" failed, the output file was lost. Rename it to -test99.failed to be able to see what went wrong. - -After sourcing bugreport.vim, it's not clear that bugreport.txt has been -written in the current directory. Edit bugreport.txt to avoid that. - -Adding IME support when using Makefile.w32 didn't work. (Taro Muraoka) - -Win32 console: Mouse drags were passed on even when the mouse didn't move. - -Perl interface: In Buffers(), type of argument to SvPV() was int, should be -STRLEN. (Tony Leneis) - -Problem with prototype for index() on AIX 4.3.0. Added check for _AIX43 in -os_unix.h. (Jake Hamby) - -Mappings in mswin.vim could break when some commands are mapped. Add "nore" -to most mappings to avoid re-mapping. - -modify_fname() made a copy of a file name for ":p" when it already was a full -path name, which is a bit slow. - -Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags, -to avoid depending on $PATH. Fixed "make clean". - -Many fixes to Macintosh specific parts: (mostly by Dany StAmant) -- Only one Help menu. -- No more crash when removing a menu item. -- Support as External Editor for Codewarrior (still some little glitches). -- Popup menu support. -- Fixed crash when pasting after application switch. -- Color from rgb.txt properly displayed. -- 'isprint' default includes all chars above '~'. (Axel Kielhorn) -- mac_expandpath() was leaking memory. -- Add digraphs table. (Axel Kielhorn) -- Multi-byte support: (Kenichi Asai) - Switch keyscript when going in/out of Insert mode. - Draw multi-byte character correctly. - Don't use mblen() but highest bit of char to detect multi-byte char. - Display value of multi-byte in statusline (also for other systems). -- mouse button was not initialized properly to MOUSE_LEFT when - USE_CTRLCLICKMENU not defined. -- With Japanese SJIS characters: Make "w", "b", and "e" work - properly. (Kenichi Asai) -- Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx. - -Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below) -- Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the - tests. -- Various fixes. -- Set 'undolevels' to 1000 by default. -- Made mch_settitle() equivalent to the one in os_unix.c. - -RiscOS: A few prototypes for os_riscos.c were outdated. Generate prototypes -automatically. - - -Previously released patches: - -Patch 5.6.001 -Problem: When using "set bs=0 si cin", Inserting "#<BS>" or "}<BS>" which - reduces the indent doesn't delete the "#" or "}". (Lorton) -Solution: Adjust ai_col in ins_try_si(). -Files: src/edit.c - -Patch 5.6.002 -Problem: When using the vim.vim syntax file, a comment with all uppercase - characters causes a hang. -Solution: Adjust pattern for vimCommentTitle (Charles Campbell) -Files: runtime/syntax/vim.vim - -Patch 5.6.003 -Problem: GTK GUI: Loading a user defined toolbar bitmap gives a warning - about the colormap. Probably because the window has not been - opened yet. -Solution: Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file. - (Keith Radebaugh) -Files: src/gui_gtk.c - -Patch 5.6.004 (extra) -Problem: Win32 GUI with IME: When setting 'guifont' to "*", the font - requester appears twice. -Solution: In gui_mch_init_font() don't call get_logfont() but copy - norm_logfont from fh. (Yasuhiro Matsumoto) -Files: src/gui_w32.c - -Patch 5.6.005 -Problem: When 'winminheight' is zero, CTRL-W - with a big number causes a - crash. (David Kotchan) -Solution: Check for negative window height in win_setheight(). -Files: src/window.c - -Patch 5.6.006 -Problem: GTK GUI: Bold font cannot always be used. Memory is freed too - early in gui_mch_init_font(). -Solution: Move call to g_free() to after where sdup is used. (Artem Hodyush) -Files: src/gui_gtk_x11.c - -Patch 5.6.007 (extra) -Problem: Win32 IME: Font is not changed when screen font is changed. And - IME composition window does not trace the cursor. -Solution: Initialize IME font. When cursor is moved, set IME composition - window with ImeSetCompositionWindow(). Add call to - ImmReleaseContext() in several places. (Taro Muraoka) -Files: src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro - -Patch 5.6.008 (extra) -Problem: Win32: When two files exist with the same name but different case - (through NFS or Samba), fixing the file name case could cause the - wrong one to be edited. -Solution: Prefer a perfect match above a match while ignoring case in - fname_case(). (Flemming Madsen) -Files: src/os_win32.c - -Patch 5.6.009 (extra) -Problem: Win32 GUI: Garbage in Windows Explorer help line when selecting - "Edit with Vim" popup menu entry. -Solution: Only return the help line when called with the GCS_HELPTEXT flag. - (Tianmiao Hu) -Files: GvimExt/gvimext.cpp - -Patch 5.6.010 -Problem: A file name which contains a TAB was not read correctly from the - viminfo file and the ":ls" listing was not aligned properly. -Solution: Parse the buffer list lines in the viminfo file from the end - backwards. Count a Tab for two characters to align the ":ls" list. -Files: src/buffer.c - -Patch 5.6.011 -Problem: When 'columns' is huge (using a tiny font) and 'statusline' is - used, Vim can crash. -Solution: Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin) -Files: src/screen.c - -Patch 5.6.012 -Problem: When using "zsh" for /bin/sh, toolcheck may hang until "exit" is - typed. (Kuratczyk) -Solution: Add "-c exit" when checking for the shell version. -Files: src/toolcheck - -Patch 5.6.013 -Problem: Multibyte char in tooltip is broken. -Solution: Consider multibyte char in replace_termcodes(). (Taro Muraoka) -Files: src/term.c - -Patch 5.6.014 -Problem: When cursor is at the end of line and the character under cursor - is a multibyte character, "yl" doesn't yank 1 multibyte-char. - (Takuhiro Nishioka) -Solution: Recognize a multibyte-char at end-of-line correctly in oneright(). - (Taro Muraoka) - Also: make "+quickfix" in ":version" output appear alphabetically. -Files: src/edit.c - -Patch 5.6.015 -Problem: New xterm delete key sends <Esc>[3~ by default. -Solution: Added <kDel> and <kIns> to make the set of keypad keys complete. -Files: src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c, - src/misc2.c, src/normal.c, src/os_unix.c, src/term.c - -Patch 5.6.016 -Problem: When deleting a search string from history from inside a mapping, - another entry is deleted too. (Benji Fisher) -Solution: Reset last_maptick when deleting the last entry of the search - history. Also: Increment maptick when starting a mapping from - typed characters to avoid a just added search string being - overwritten or removed from history. -Files: src/ex_getln.c, src/getchar.c - -Patch 5.6.017 -Problem: ":s/e/\^M/" should replace an "e" with a CTRL-M, not split the - line. (Calder) -Solution: Replace the backslash with a CTRL-V internally. (Stephen P. Wall) -Files: src/ex_cmds.c - -Patch 5.6.018 -Problem: ":help [:digit:]" takes a long time to jump to the wrong place. -Solution: Insert a backslash to avoid the special meaning of '[]'. -Files: src/ex_cmds.c - -Patch 5.6.019 -Problem: "snd.c", "snd.java", etc. were recognized as "mail" filetype. -Solution: Make pattern for mail filetype more strict. -Files: runtime/filetype.vim - -Patch 5.6.020 (extra) -Problem: The DJGPP version eats processor time (Walter Briscoe). -Solution: Call __dpmi_yield() in the busy-wait loop. -Files: src/os_msdos.c - -Patch 5.6.021 -Problem: When 'selection' is "exclusive", a double mouse click in Insert - mode doesn't select last char in line. (Lutz) -Solution: Allow leaving the cursor on the NUL past the line in this case. -Files: src/edit.c - -Patch 5.6.022 -Problem: ":e \~<Tab>" expands to ":e ~\$ceelen", which doesn't work. -Solution: Re-insert the backslash before the '~'. -Files: src/ex_getln.c - -Patch 5.6.023 (extra) -Problem: Various warnings for the Ming compiler. -Solution: Changes to avoid the warnings. (Bill McCarthy) -Files: src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c, - src/syntax.c, src/vim.rc - -Patch 5.6.024 (extra) -Problem: Win32 console: Entering CTRL-_ requires the shift key. (Kotchan) -Solution: Specifically catch keycode 0xBD, like the GUI. -Files: src/os_win32.c - -Patch 5.6.025 -Problem: GTK GUI: Starting the GUI could be interrupted by a SIGWINCH. - (Nils Lohner) -Solution: Repeat the read() call to get the gui_in_use value when - interrupted by a signal. -Files: src/gui.c - -Patch 5.6.026 (extra) -Problem: Win32 GUI: Toolbar bitmaps are searched for in - $VIMRUNTIME/bitmaps, while GTK looks in $VIM/bitmaps. (Keith - Radebaugh) -Solution: Use $VIM/bitmaps for both, because these are not part of the - distribution but defined by the user. -Files: src/gui_w32.c, runtime/doc/gui.txt - -Patch 5.6.027 -Problem: TCL: Crash when using a Tcl script (reported for Win32). -Solution: Call Tcl_FindExecutable() in main(). (Brent Fulgham) -Files: src/main.c - -Patch 5.6.028 -Problem: Xterm patch level 126 sends codes for mouse scroll wheel. - Fully works with xterm patch level 131. -Solution: Recognize the codes for button 4 (0x60) and button 5 (0x61). -Files: src/term.c - -Patch 5.6.029 -Problem: GTK GUI: Shortcut keys cannot be used for a dialog. (Johannes - Zellner) -Solution: Add support for shortcut keys. (Marcin Dalecki) -Files: src/gui_gtk.c - -Patch 5.6.030 -Problem: When closing a window and 'ea' is set, Vim can crash. (Yasuhiro - Matsumoto) -Solution: Set "curbuf" to a valid value in win_close(). -Files: src/window.c - -Patch 5.6.031 -Problem: Multi-byte: When a double-byte character ends in CSI, Vim waits - for another character to be typed. -Solution: Recognize the CSI as the second byte of a character and don't wait - for another one. (Yasuhiro Matsumoto) -Files: src/getchar.c - -Patch 5.6.032 -Problem: Functions with an argument that is a line number don't all accept - ".", "$", etc. (Ralf Arens) -Solution: Add get_art_lnum() and use it for setline(), line2byte() and - synID(). -Files: src/eval.c - -Patch 5.6.033 -Problem: Multi-byte: "f " sometimes skips to the second space. (Sung-Hyun - Nam) -Solution: Change logic in searchc() to skip trailing byte of a double-byte - character. - Also: Ask for second byte when searching for double-byte - character. (Park Chong-Dae) -Files: src/search.c - -Patch 5.6.034 (extra) -Problem: Compiling with Borland C++ 5.5 fails on tolower() and toupper(). -Solution: Use TO_LOWER() and TO_UPPER() instead. Also adjust the Makefile - to make using bcc 5.5 easier. -Files: src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor - -Patch 5.6.035 -Problem: Listing the"+comments" feature in the ":version" output depended - on the wrong ID. (Stephen P. Wall) -Solution: Change "CRYPTV" to "COMMENTS". -Files: src/version.c - -Patch 5.6.036 -Problem: GTK GUI: Copy/paste text doesn't work between gvim and Eterm. -Solution: Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang) -Files: src/gui_gtk_x11.c - -Patch 5.6.037 -Problem: Multi-byte: Can't use "f" command with multi-byte character in GUI. -Solution: Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam) -Files: src/gui_gtk_x11.c, src/multbyte.c - -Patch 5.6.038 -Problem: Multi-clicks in GUI are interpreted as a mouse wheel click. When - 'ttymouse' is "xterm" a mouse click is interpreted as a mouse - wheel click. -Solution: Don't recognize the mouse wheel in check_termcode() in the GUI. - Use 0x43 for a mouse drag in do_xterm_trace(), not 0x63. -Files: src/term.c, src/os_unix.c - -Patch 5.6.039 -Problem: Motif GUI under KDE: When trying to logout, Vim hangs up the - system. (Hermann Rochholz) -Solution: When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND - property of the window to let the session manager know we finished - saving ourselves. -Files: src/gui_x11.c - -Patch 5.6.040 -Problem: When using ":s" command, matching the regexp is done twice. -Solution: After copying the matched line, adjust the pointers instead of - finding the match again. (Loic Grenie) Added vim_regnewptr(). -Files: src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro - -Patch 5.6.041 -Problem: GUI: Athena, Motif and GTK don't give more than 10 dialog buttons. -Solution: Remove the limit on the number of buttons. - Also support the 'v' flag in 'guioptions'. - For GTK: Center the buttons. -Files: src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c - -Patch 5.6.042 -Problem: When doing "vim -u vimrc" and vimrc contains ":q", the cursor in - the terminal can remain off. -Solution: Call cursor_on() in mch_windexit(). -Files: src/os_unix.c - -Patch 5.6.043 (extra) -Problem: Win32 GUI: When selecting guifont with the dialog, 'guifont' - doesn't include the bold or italic attributes. -Solution: Append ":i" and/or ":b" to 'guifont' in gui_mch_init_font(). -Files: src/gui_w32.c - -Patch 5.6.044 (extra) -Problem: MS-DOS and Windows: The line that dosinst.exe appends to - autoexec.bat to set PATH is wrong when Vim is in a directory with - an embedded space. -Solution: Use double quotes for the value when there is an embedded space. -Files: src/dosinst.c - -Patch 5.6.045 (extra) (fixed version) -Problem: VMS: Various small problems. -Solution: Many small changes. (Zoltan Arpadffy) - File name modifier ":h" keeps the path separator. - File name modifier ":e" also removes version. - Compile with MAX_FEAT by default. - When checking for autocommands ignore version in file name. - Be aware of file names being case insensitive. - Added vt320 builtin termcap. - Be prepared for an empty default_vim_dir. -Files: runtime/gvimrc_example.vim, runtime/vimrc_example.vim, - runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c, - src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c, - src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c, - src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c - -Patch 5.6.046 -Problem: Systems with backslash in file name: With 'shellslash' set, "vim - */*.c" only uses a slash for the first file name. (Har'El) -Solution: Fix slashes in file name arguments after reading the vimrc file. -Files: src/option.c - -Patch 5.6.047 -Problem: $CPPFLAGS is not passed on to ctags configure. -Solution: Add it. (Walter Briscoe) -Files: src/config.mk.in, src/Makefile - -Patch 5.6.048 -Problem: CTRL-R in Command-line mode is documented to insert text as typed, - but inserts text literally. -Solution: Make CTRL-R insert text as typed, use CTRL-R CTRL-R to insert - literally. This is consistent with Insert mode. But characters - that end Command-line mode are inserted literally. -Files: runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c, - src/ops.c, src/proto/ops.pro - -Patch 5.6.049 -Problem: Documentation for [!] after ":ijump" is wrong way around. (Benji - Fisher) -Solution: Fix the documentation. Also improve the code to check for a match - after a /* */ comment. -Files: runtime/doc/tagsearch.txt, src/search.c - -Patch 5.6.050 -Problem: Replacing is wrong when replacing a single-byte char with - double-byte char or the other way around. -Solution: Shift the text after the character when it is replaced. - (Yasuhiro Matsumoto) -Files: src/normal.c, src/misc1.c - -Patch 5.6.051 -Problem: ":tprev" and ":tnext" don't give an error message when trying to - go before the first or beyond the last tag. (Robert Webb) -Solution: Added error messages. Also: Delay a second when a file-read - message is going to overwrite an error message, otherwise it won't - be seen. -Files: src/fileio.c, src/tag.c - -Patch 5.6.052 -Problem: Multi-byte: When an Ex command has a '|' or '"' as a second byte, - it terminates the command. -Solution: Skip second byte of multi-byte char when checking for '|' and '"'. - (Asai Kenichi) -Files: src/ex_docmd.c - -Patch 5.6.053 -Problem: CTRL-] doesn't work on a tag that contains a '|'. (Cesar Crusius) -Solution: Escape '|', '"' and '\' in tag names when using CTRL-] and also - for command-line completion. -Files: src/ex_getln.c, src/normal.c - -Patch 5.6.054 -Problem: When using ":e" and ":e #" the cursor is put in the first column - when 'startofline' is set. (Cordell) -Solution: Use the last known column when 'startofline' is set. - Also, use ECMD_LAST more often to simplify the code. -Files: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro - -Patch 5.6.055 -Problem: When 'statusline' only contains a text without "%" and doesn't fit - in the window, Vim crashes. (Ron Aaron) -Solution: Don't use the pointer for the first item if there is no item. -Files: src/screen.c - -Patch 5.6.056 (extra) -Problem: MS-DOS: F11 and F12 don't work when 'bioskey' is set. -Solution: Use enhanced keyboard functions. (Vince Negri) - Detect presence of enhanced keyboard and set bioskey_read and - bioskey_ready. -Files: src/os_msdos.c - -Patch 5.6.057 (extra) -Problem: Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off - menus. -Solution: Use system font instead of a fixed font. (Matsumoto, Muraoka) -Files: src/gui_w32.c - -Patch 5.6.058 -Problem: When the 'a' flag is not in 'guioptions', non-Windows systems - copy Visually selected text to the clipboard/selection on a yank - or delete command anyway. On Windows it isn't done even when the - 'a' flag is included. -Solution: Respect the 'a' flag in 'guioptions' on all systems. -Files: src/normal.c - -Patch 5.6.059 (extra) -Problem: When moving the cursor over italic text and the characters spill - over to the cell on the right, that spill-over is deleted. - Noticed in the Win32 GUI, can happen on other systems too. -Solution: Redraw italic text starting from a blank, like this is already - done for bold text. (Vince Negri) -Files: src/gui.c, src/gui.h, src/gui_w32.c - -Patch 5.6.060 -Problem: Some bold characters spill over to the cell on the left, that - spill-over can remain sometimes. -Solution: Redraw a character when the next character was bold and needs - redrawing. (Robert Webb) -Files: src/screen.c - -Patch 5.6.061 -Problem: When xterm sends 8-bit controls, recognizing the version response - doesn't work. - When using CSI instead of <Esc>[ for the termcap color codes, - using 16 colors doesn't work. (Neil Bird) -Solution: Also accept CSI in place of <Esc>[ for the version string. - Also check for CSI when handling colors 8-15 in term_color(). - Use CSI for builtin xterm termcap entries when 'term' contains - "8bit". -Files: runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c, - src/os_unix.c, src/proto/option.pro, src/proto/term.pro - -Patch 5.6.062 -Problem: The documentation says that setting 'smartindent' doesn't have an - effect when 'cindent' is set, but it does make a difference for - lines starting with "#". (Neil Bird) -Solution: Really ignore 'smartindent' when 'cindent' is set. -Files: src/misc1.c, src/ops.c - -Patch 5.6.063 -Problem: Using "I" in Visual-block mode doesn't accept a count. (Johannes - Zellner) -Solution: Pass the count on to do_insert() and edit(). (Allan Kelly) -Files: src/normal.c, src/ops.c, src/proto/ops.pro - -Patch 5.6.064 -Problem: MS-DOS and Win32 console: Mouse doesn't work correctly after - including patch 5.6.28. (Vince Negri) -Solution: Don't check for mouse scroll wheel when the mouse code contains - the number of clicks. -Files: src/term.c - -Patch 5.6.065 -Problem: After moving the cursor around in Insert mode, typing a space can - still trigger an abbreviation. (Benji Fisher) -Solution: Don't check for an abbreviation after moving around in Insert mode. -Files: src/edit.c - -Patch 5.6.066 -Problem: Still a few bold character spill-over remains after patch 60. -Solution: Clear character just in front of blanking out rest of the line. - (Robert Webb) -Files: src/screen.c - -Patch 5.6.067 -Problem: When a file name contains a NL, the viminfo file is corrupted. -Solution: Use viminfo_writestring() to convert the NL to CTRL-V n. - Also fix the Buffers menu and listing a menu name with a newline. -Files: runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c - -Patch 5.6.068 -Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. - (Bernhard Rosenkraenzer) -Solution: Also check xs_apiversion for the version number when prepending - defines for PL_*. -Files: src/Makefile - -Patch 5.6.069 -Problem: "go" doesn't always end up at the right character when - 'fileformat' is "dos". (Bruce DeVisser) -Solution: Correct computations in ml_find_line_or_offset(). -Files: src/memline. - -Patch 5.6.070 (depends on 5.6.068) -Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. - (Bernhard Rosenkraenzer) -Solution: Simpler check instead of the one from patch 68. -Files: src/Makefile - -Patch 5.6.071 -Problem: "A" in Visual block mode on a Tab positions the cursor one char to - the right. (Michael Haumann) -Solution: Correct the column computation in op_insert(). -Files: src/ops.c - -Patch 5.6.072 -Problem: When starting Vim with "vim +startinsert", it enters Insert mode - only after typing the first command. (Andrew Pimlott) -Solution: Insert a dummy command in the stuff buffer. -Files: src/main.c - -Patch 5.6.073 (extra) (depends on 5.6.034) -Problem: Win32 GUI: When compiled with Bcc 5.5 menus don't work. - In dosinst.c toupper() and tolower() give an "internal compiler - error" for Bcc 5.5. -Solution: Define WINVER to 4 to avoid compiling for Windows 2000. (Dan - Sharp) Also cleaned up compilation arguments. - Use our own implementation of toupper() in dosinst.c. Use - mytoupper() instead of tolower(). -Files: src/Makefile.bor, src/dosinst.c - -Patch 5.6.074 (extra) -Problem: Entering CSI directly doesn't always work, because it's recognized - as the start of a special key. Mostly a problem with multi-byte - in the GUI. -Solution: Use K_CSI for a typed CSI character. Use <CSI> for a normal CSI, - <xCSI> for a CSI typed in the GUI. -Files: runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c, - src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c, - src/keymap.h, src/misc2.c - -Patch 5.6.075 -Problem: When using "I" or "A" in Visual block mode while 'sts' is set may - change spaces to a Tab the inserted text is not correct. (Mike - Steed) And some other problems when using "A" to append after the - end of the line. -Solution: Check for change in spaces/tabs after inserting the text. Append - spaces to fill the gap between the end-of-line and the right edge - of the block. -Files: src/ops.c - -Patch 5.6.076 -Problem: GTK GUI: Mapping <M-Space> doesn't work. -Solution: Don't use the "Alt" modifier twice in key_press_event(). -Files: src/gui_gtk_x11.c - -Patch 5.6.077 -Problem: GUI: When interrupting an external program with CTRL-C, gvim might - crash. (Benjamin Korvemaker) -Solution: Avoid using a NULL pointer in ui_inchar_undo(). -Files: src/ui.c - -Patch 5.6.078 -Problem: Locale doesn't always work on FreeBSD. (David O'Brien) -Solution: Link with the "xpg4" library when available. -Files: src/configure.in, src/configure - -Patch 5.6.079 -Problem: Vim could crash when several Tcl interpreters are created and - destroyed. -Solution: handle the "exit" command and nested ":tcl" commands better. (Ingo - Wilken) -Files: runtime/doc/if_tcl.txt, src/if_tcl.c - -Patch 5.6.080 -Problem: When jumping to a tag, generating the tags file and jumping to the - same tag again uses the old search pattern. (Sung-Hyun Nam) -Solution: Flush cached tag matches when executing an external command. -Files: src/misc2.c, src/proto/tag.pro, src/tag.c - -Patch 5.6.081 -Problem: ":syn include" uses a level for the included file, this confuses - contained items included at the same level. -Solution: Use a unique tag for each included file. Changed sp_syn_inc_lvl - to sp_syn_inc_tag. (Scott Bigham) -Files: src/syntax.c, src/structs.h - -Patch 5.6.082 -Problem: When using cscope, Vim can crash. -Solution: Initialize tag_fname in find_tags(). (Anton Blanchard) -Files: src/tag.c - -Patch 5.6.083 (extra) -Problem: Win32: The visual beep can't be seen. (Eric Roesinger) -Solution: Flush the output before waiting with GdiFlush(). (Maurice S. Barnum) - Also: Allow specifying the delay in t_vb for the GUI. -Files: src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c, - src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc, - src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro, - src/proto/gui_mac.pro, src/proto/gui_riscos.pro, - src/proto/gui_w32.pro, src/proto/gui_x11.pro, - src/proto/gui_beos.pro - -Patch 5.6.084 (depends on 5.6.074) -Problem: GUI: Entering CSI doesn't always work for Athena and Motif. -Solution: Handle typed CSI as <xCSI> (forgot this bit in 5.6.074). -Files: src/gui_x11.c - -Patch 5.6.085 -Problem: Multi-byte: Using "r" to replace a double-byte char with a - single-byte char moved the cursor one character. (Matsumoto) - Also, using a count when replacing a single-byte char with a - double-byte char didn't work. -Solution: Don't use del_char() to delete the second byte. - Get "ptr" again after calling ins_char(). -Files: src/normal.c - -Patch 5.6.086 (extra) -Problem: Win32: When using libcall() and the returned value is not a valid - pointer, Vim crashes. -Solution: Use IsBadStringPtr() to check if the pointer is valid. -Files: src/os_win32.c - -Patch 5.6.087 -Problem: Multi-byte: Commands and messages with multi-byte characters are - displayed wrong. -Solution: Detect double-byte characters. (Yasuhiro Matsumoto) -Files: src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c - -Patch 5.6.088 -Problem: Multi-byte with Motif or Athena: The message "XIM requires - fontset" is annoying when Vim was compiled with XIM support but it - is not being used. -Solution: Remove that message. -Files: src/multbyte.c - -Patch 5.6.089 -Problem: On non-Unix systems it's possible to overwrite a read-only file - without using "!". -Solution: Check if the file permissions allow overwriting before moving the - file to become the backup file. -Files: src/fileio.c - -Patch 5.6.090 -Problem: When editing a file in "/home/dir/home/dir" this was replaced with - "~~". (Andreas Jellinghaus) -Solution: Replace the home directory only once in home_replace(). -Files: src/misc1.c - -Patch 5.6.091 -Problem: When editing many "no file" files, can't create swap file, because - .sw[a-p] have all been used. (Neil Bird) -Solution: Also use ".sv[a-z]", ".su[a-z]", etc. -Files: src/memline.c - -Patch 5.6.092 -Problem: FreeBSD: When setting $TERM to a non-valid terminal name, Vim - hangs in tputs(). -Solution: After tgetent() returns an error code, call it again with the - terminal name "dumb". This apparently creates an environment in - which tputs() doesn't fail. -Files: src/term.c - -Patch 5.6.093 (extra) -Problem: Win32 GUI: "ls | gvim -" will show a message box about reading - stdin when Vim exits. (Donohue) -Solution: Don't write a message about the file read from stdin until the GUI - has started. -Files: src/fileio.c - -Patch 5.6.094 -Problem: Problem with multi-byte string for ":echo var". -Solution: Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam) - Also make do_echo() aware of multi-byte characters. -Files: src/eval.c, src/message.c - -Patch 5.6.095 -Problem: With an Emacs TAGS file that include another a relative path - doesn't always work. -Solution: Use expand_tag_fname() on the name of the included file. - (Utz-Uwe Haus) -Files: src/tag.c - -Patch 5.6.096 -Problem: Unix: When editing many files, startup can be slow. (Paul - Ackersviller) -Solution: Halve the number of stat() calls used to add a file to the buffer - list. -Files: src/buffer.c - -Patch 5.7a.001 -Problem: GTK doesn't respond on drag&drop from ROX-Filer. -Solution: Add "text/uri-list" target. (Thomas Leonard) - Also: fix problem with checking for trash arguments. -Files: src/gui_gtk_x11.c - -Patch 5.7a.002 -Problem: Multi-byte: 'showmatch' is performed when second byte of an - inserted double-byte char is a paren or brace. -Solution: Check IsTrailByte() before calling showmatch(). (Taro Muraoka) -Files: src/misc1.c - -Patch 5.7a.003 -Problem: Multi-byte: After using CTRL-O in Insert mode with the cursor at - the end of the line on a multi-byte character the cursor moves to - the left. -Solution: Check for multi-byte character at end-of-line. (Taro Muraoka) - Also: fix cls() to detect a double-byte character. (Chong-Dae Park) -Files: src/edit.c, src/search.c - -Patch 5.7a.004 -Problem: When reporting the search pattern offset, the string could be - unterminated, which may cause a crash. -Solution: Terminate the string for the search offset. (Stephen P. Wall) -Files: src/search.c - -Patch 5.7a.005 -Problem: When ":s//~/" doesn't find a match it reports "[NULL]" for the - pattern. -Solution: Use get_search_pat() to obtain the actually used pattern. -Files: src/ex_cmds.c, src/proto/search.pro, src/search.c - -Patch 5.7a.006 (extra) -Problem: VMS: Various problems, also with the VAXC compiler. -Solution: In many places use the Unix code for VMS too. - Added time, date and compiler version to version message. - (Zoltan Arpadffy) -Files: src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h, - src/main.c, src/message.c, src/misc1.c, src/os_vms.c, - src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h, - src/proto/os_vms.pro, src/proto/version.pro, src/term.c, - src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c - -Patch 5.7a.007 -Problem: Motif and Athena GUI: CTRL-@ is interpreted as CTRL-C. -Solution: Only use "intr_char" when it has been set. -Files: src/gui_x11.c - -Patch 5.7a.008 -Problem: GTK GUI: When using CTRL-L the screen is redrawn twice, causing - trouble for bold characters. Also happens when moving with the - scrollbar. Best seen when 'writedelay' is non-zero. - When starting the GUI with ":gui" the screen is redrawn once with - the wrong colors. -Solution: Only set the geometry hints when the window size really changed. - This avoids setting it each time the scrollbar is forcefully - redrawn. - Don't redraw in expose_event() when gui.starting is still set. -Files: src/gui_gtk_x11.c - - -============================================================================== -VERSION 5.8 *version-5.8* - -Version 5.8 is a bug-fix version of 5.7. - - -Changed *changed-5.8* -------- - -Ctags is no longer included with Vim. It has grown into a project of its own. -You can find it here: http://ctags.sf.net. It is highly recommended as a Vim -companion when you are writing programs. - - -Added *added-5.8* ------ - -New syntax files: -acedb AceDB (Stewart Morris) -aflex Aflex (Mathieu Clabaut) -antlr Antlr (Mathieu Clabaut) -asm68k 68000 Assembly (Steve Wall) -automake Automake (John Williams) -ayacc Ayacc (Mathieu Clabaut) -b B (Mathieu Clabaut) -bindzone BIND zone (glory hump) -blank Blank (Rafal Sulejman) -cfg Configure files (Igor Prischepoff) -changelog ChangeLog (Gediminas Paulauskas) -cl Clever (Phil Uren) -crontab Crontab (John Hoelzel) -csc Essbase script (Raul Segura Acevedo) -cynlib Cynlib(C++) (Phil Derrick) -cynpp Cyn++ (Phil Derrick) -debchangelog Debian Changelog (Wichert Akkerman) -debcontrol Debian Control (Wichert Akkerman) -dns DNS zone file (Jehsom) -dtml Zope's DTML (Jean Jordaan) -dylan Dylan, Dylan-intr and Dylan-lid (Brent Fulgham) -ecd Embedix Component Description (John Beppu) -fgl Informix 4GL (Rafal Sulejman) -foxpro FoxPro (Powing Tse) -gsp GNU Server Pages (Nathaniel Harward) -gtkrc GTK rc (David Necas) -hercules Hercules (Avant! Corporation) (Dana Edwards) -htmlos HTML/OS by Aestiva (Jason Rust) -inittab SysV process control (David Necas) -iss Inno Setup (Dominique Stephan) -jam Jam (Ralf Lemke) -jess Jess (Paul Baleme) -lprolog LambdaProlog (Markus Mottl) -ia64 Intel Itanium (parth malwankar) -kix Kixtart (Nigel Gibbs) -mgp MaGic Point (Gerfried Fuchs) -mason Mason (HTML with Perl) (Andrew Smith) -mma Mathematica (Wolfgang Waltenberger) -nqc Not Quite C (Stefan Scherer) -omnimark Omnimark (Paul Terray) -openroad OpenROAD (Luis Moreno Serrano) -named BIND configuration (glory hump) -papp PApp (Marc Lehmann) -pfmain Postfix main config (Peter Kelemen) -pic PIC assembly (Aleksandar Veselinovic) -ppwiz PPWizard (Stefan Schwarzer) -progress Progress (Phil Uren) -psf Product Specification File (Rex Barzee) -r R (Tom Payne) -registry MS-Windows registry (Dominique Stephan) -robots Robots.txt (Dominique Stephan) -rtf Rich Text Format (Dominique Stephan) -setl SETL (Alex Poylisher) -sgmldecl SGML Declarations (Daniel A. Molina W.) -sinda Sinda input (Adrian Nagle) -sindacmp Sinda compare (Adrian Nagle) -sindaout Sinda output (Adrian Nagle) -smith SMITH (Rafal Sulejman) -snobol4 Snobol 4 (Rafal Sulejman) -strace Strace (David Necas) -tak TAK input (Adrian Nagle) -takcmp TAK compare (Adrian Nagle) -takout TAK output (Adrian Nagle) -tasm Turbo assembly (FooLman) -texmf TeX configuration (David Necas) -trasys Trasys input (Adrian Nagle) -tssgm TSS Geometry (Adrian Nagle) -tssop TSS Optics (Adrian Nagle) -tsscl TSS Command line (Adrian Nagle) -virata Virata Configuration Script (Manuel M.H. Stol) -vsejcl VSE JCL (David Ondrejko) -wdiff Wordwise diff (Gerfried Fuchs) -wsh Windows Scripting Host (Paul Moore) -xkb X Keyboard Extension (David Necas) - -Renamed php3 to php, it now also supports php4 (Lutz Eymers) - -Patch 5.7.015 -Problem: Syntax files for Vim 6.0 can't be used with 5.x. -Solution: Add the "default" argument to the ":highlight" command: Ignore the - command if highlighting was already specified. -Files: src/syntax.c - -Generate the Syntax menu with makemenu.vim, so that it doesn't have to be done -when Vim is starting up. Reduces the startup time of the GUI. - - -Fixed *fixed-5.8* ------ - -Conversion of docs to HTML didn't convert "|tag|s" to a hyperlink. - -Fixed compiling under NeXT. (Jeroen C.M. Goudswaard) - -optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C'). - -Tcl interpreter: "buffer" command didn't check for presence of an argument. -(Dave Bodenstab) - -dosinst.c: Added checks for too long file name. - -Amiga: a file name starting with a colon was considered absolute but it isn't. -Amiga: ":pwd" added a slash when in the root of a drive. - -Macintosh: Warnings for unused variables. (Bernhard Pruemmer) - -Unix: When catching a deadly signal, handle it in such a way that it's -unlikely that Vim will hang. Call _exit() instead of exit() in case of a -severe problem. - -Setting the window title from nothing to something didn't work after patch 29. - -Check for ownership of .exrc and .vimrc was done with stat(). Use lstat() as -well for extra security. - -Win32 GUI: Printing a file with 'fileformat' "unix" didn't work. Set -'fileformat' to "dos" before writing the temp file. - -Unix: Could start waiting for a character when checking for a CTRL-C typed -when an X event is received. - -Could not use Perl and Python at the same time on FreeBSD, because Perl used -"-lc" and Python used the threaded C library. - -Win32: The Mingw compiler gave a few warning messages. - -When using "ZZ" and an autocommand for writing uses an abbreviation it didn't -work. Don't stuff the ":x" command but execute it directly. (Mikael Berthe) - -VMS doesn't always have lstat(), added an #ifdef around it. - -Added a few corrections for the Macintosh. (Axel Kielhorn) - -Win32: Gvimext could not edit more than a few files at once, the length of the -argument was fixed. - - -Previously released patches for Vim 5.7: - -Patch 5.7.001 -Problem: When the current buffer is crypted, and another modified buffer - isn't, ":wall" will encrypt the other buffer. -Solution: In buf_write() use "buf" instead of "curbuf" to check for the - crypt key. -Files: src/fileio.c - -Patch 5.7.002 -Problem: When 'showmode' is set, using "CTRL-O :r file" waits three seconds - before displaying the read text. (Wichert Akkerman) -Solution: Set "keep_msg" to the file message so that the screen is redrawn - before the three seconds wait for displaying the mode message. -Files: src/fileio.c - -Patch 5.7.003 -Problem: Searching for "[[:cntrl:]]" doesn't work. -Solution: Exclude NUL from the matching characters, it terminates the list. -Files: src/regexp.c - -Patch 5.7.004 -Problem: GTK: When selecting a new font, Vim can crash. -Solution: In gui_mch_init_font() unreference the old font, not the new one. -Files: src/gui_gtk_x11.c - -Patch 5.7.005 -Problem: Multibyte: Inserting a wrapped line corrupts kterm screen. - Pasting TEXT/COMPOUND_TEXT into Vim does not work. - On Motif no XIM status line is displayed even though it is - available. -Solution: Don't use xterm trick for wrapping lines for multibyte mode. - Correct a missing "break", added TEXT/COMPOUND_TEXT selection - request. - Add XIMStatusArea fallback code. - (Katsuhito Nagano) -Files: src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c - -Patch 5.7.006 -Problem: GUI: redrawing the non-Visual selection is wrong when the window - is unobscured. (Jean-Pierre Etienne) -Solution: Redraw the selection properly and don't clear it. Added "len" - argument to clip_may_redraw_selection(). -Files: src/gui.c, src/ui.c, src/proto/ui.pro - -Patch 5.7.007 -Problem: Python: Crash when using the current buffer twice. -Solution: Increase the reference count for buffer and window objects. - (Johannes Zellner) -Files: src/if_python.c - -Patch 5.7.008 -Problem: In Ex mode, backspacing over the first TAB doesn't work properly. - (Wichert Akkerman) -Solution: Switch the cursor on before printing the newline. -Files: src/ex_getln.c - -Patch 5.7.009 (extra) -Problem: Mac: Crash when using a long file. -Solution: Don't redefine malloc() and free(), because it will break using - realloc(). -Files: src/os_mac.h - -Patch 5.7.010 -Problem: When using CTRL-A on a very long number Vim can crash. (Michael - Naumann) -Solution: Truncate the length of the new number to avoid a buffer overflow. -Files: src/ops.c - -Patch 5.7.011 (extra) -Problem: Win32 GUI on NT 5 and Win98: Displaying Hebrew is reversed. -Solution: Output each character separately, to avoid that Windows reverses - the text for some fonts. (Ron Aaron) -Files: src/gui_w32.c - -Patch 5.7.012 -Problem: When using "-complete=buffer" for ":command" the user command - fails. -Solution: In a user command don't replace the buffer name with a count for - the buffer number. -Files: src/ex_docmd.c - -Patch 5.7.013 -Problem: "gD" didn't always find a match in the first line, depending on - the column the search started at. -Solution: Reset the column to zero before starting to search. -Files: src/normal.c - -Patch 5.7.014 -Problem: Rot13 encoding was done on characters with accents, which is - wrong. (Sven Gottwald) -Solution: Only do rot13 encoding on ASCII characters. -Files: src/ops.c - -Patch 5.7.016 -Problem: When hitting 'n' for a ":s///c" command, the ignore-case flag was - not restored, some matches were skipped. (Daniel Blaustein) -Solution: Restore the reg_ic variable when 'n' was hit. -Files: src/ex_cmds.c - -Patch 5.7.017 -Problem: When using a Vim script for Vim 6.0 with <SID> before a function - name, it produces an error message even when inside an "if version - >= 600". (Charles Campbell) -Solution: Ignore errors in the function name when the function is not going - to be defined. -Files: src/eval.c - -Patch 5.7.018 -Problem: When running "rvim" or "vim -Z" it was still possible to execute a - shell command with system() and backtick-expansion. (Antonios A. - Kavarnos) -Solution: Disallow executing a shell command in get_cmd_output() and - mch_expand_wildcards(). -Files: src/misc1.c, src/os_unix.c - -Patch 5.7.019 -Problem: Multibyte: In a substitute string, a multi-byte character isn't - skipped properly, can be a problem when the second byte is a - backslash. -Solution: Skip an extra byte for a double-byte character. (Muraoka Taro) -Files: src/ex_cmds.c - -Patch 5.7.020 -Problem: Compilation doesn't work on MacOS-X. -Solution: Add a couple of #ifdefs. (Jamie Curmi) -Files: src/regexp.c, src/ctags/general.h - -Patch 5.7.021 -Problem: Vim sometimes produces a beep when started in an xterm. Only - happens when compiled without mouse support. -Solution: Requesting the xterm version results in a K_IGNORE. This wasn't - handled when mouse support is disabled. Accept K_IGNORE always. -Files: src/normal.c - -Patch 5.7.022 -Problem: %v in 'statusline' is not displayed when it's equal to %c. -Solution: Check if %V or %v is used and handle them differently. -Files: src/screen.c - -Patch 5.7.023 -Problem: Crash when a WinLeave autocommand deletes the buffer in the other - window. -Solution: Check that after executing the WinLeave autocommands there still - is a window to be closed. Also update the test that was supposed - to check for this problem. -Files: src/window.c, testdir/test13.in, testdir/test13.ok - -Patch 5.7.024 -Problem: Evaluating an expression for 'statusline' can have side effects. -Solution: Evaluate the expression in a sandbox. -Files: src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c, - src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c, - src/screen.c, src/undo.c - -Patch 5.7.025 (fixed) -Problem: Creating a temp file has a race condition. -Solution: Create a private directory to write the temp files in. -Files: src/fileio.c, src/misc1.c, src/proto/misc1.pro, - src/proto/fileio.pro, src/memline.c, src/os_unix.h - -Patch 5.7.026 (extra) -Problem: Creating a temp file has a race condition. -Solution: Create a private directory to write the temp files in. - This is the extra part of patch 5.7.025. -Files: src/os_msdos.h - -Patch 5.7.027 -Problem: Starting to edit a file can cause a crash. For example when in - Insert mode, using CTRL-O :help abbr<Tab> to scroll the screen and - then <CR>, which edits a help file. (Robert Bogomip) -Solution: Check if keep_msg is NULL before copying it. -Files: src/fileio.c - -Patch 5.7.028 -Problem: Creating a backup or swap file could fail in rare situations. -Solution: Use O_EXCL for open(). -Files: src/fileio.c, src/memfile.c - -Patch 5.7.029 -Problem: Editing a file with an extremely long name crashed Vim. -Solution: Check for length of the name when setting the window title. -Files: src/buffer.c - -Patch 5.7.030 -Problem: A ":make" or ":grep" command with a very long argument could cause - a crash. -Solution: Allocate the buffer for the shell command. -Files: src/ex_docmd.c - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/version6.txt b/share/vim/vim73/doc/version6.txt deleted file mode 100644 index 17a29e4b..00000000 --- a/share/vim/vim73/doc/version6.txt +++ /dev/null @@ -1,14530 +0,0 @@ -*version6.txt* For Vim version 7.3. Last change: 2008 Aug 06 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Welcome to Vim Version 6.0! A large number of features has been added. This -file mentions all the new items that have been added, changes to existing -features and bug fixes compared to Vim 5.x. - -See |vi_diff.txt| for an overview of differences between Vi and Vim 6.0. -See |version4.txt| for differences between Vim 3.0 and Vim 4.0. -See |version5.txt| for differences between Vim 4.0 and Vim 5.0. - -INCOMPATIBLE CHANGES |incompatible-6| - -Cursor position in Visual mode |curpos-visual| -substitute command Vi compatible |substitute-CR| -global option values introduced |new-global-values| -'fileencoding' changed |fileencoding-changed| -Digraphs changed |digraphs-changed| -Filetype detection changed |filetypedetect-changed| -Unlisted buffers introduced |new-unlisted-buffers| -CTRL-U in Command-line mode changed |CTRL-U-changed| -Ctags gone |ctags-gone| -Documentation reorganized |documentation-6| -Modeless selection and clipboard |modeless-and-clipboard| -Small incompatibilities |incomp-small-6| - -NEW FEATURES |new-6| - -Folding |new-folding| -Vertically split windows |new-vertsplit| -Diff mode |new-diff-mode| -Easy Vim: click-and-type |new-evim| -User manual |new-user-manual| -Flexible indenting |new-indent-flex| -Extended search patterns |new-searchpat| -UTF-8 support |new-utf-8| -Multi-language support |new-multi-lang| -Plugin support |new-plugins| -Filetype plugins |new-filetype-plugins| -File browser |new-file-browser| -Editing files over a network |new-network-files| -Window for command-line editing |new-cmdwin| -Debugging mode |new-debug-mode| -Cursor in virtual position |new-virtedit| -Debugger interface |new-debug-itf| -Communication between Vims |new-vim-server| -Buffer type options |new-buftype| -Printing |new-printing| -Ports |ports-6| -Quickfix extended |quickfix-6| -Operator modifiers |new-operator-mod| -Search Path |new-search-path| -Writing files improved |new-file-writing| -Argument list |new-argument-list| -Restore a View |new-View| -Color schemes |new-color-schemes| -Various new items |new-items-6| - -IMPROVEMENTS |improvements-6| - -COMPILE TIME CHANGES |compile-changes-6| - -BUG FIXES |bug-fixes-6| - -VERSION 6.1 |version-6.1| -Changed |changed-6.1| -Added |added-6.1| -Fixed |fixed-6.1| - -VERSION 6.2 |version-6.2| -Changed |changed-6.2| -Added |added-6.2| -Fixed |fixed-6.2| - -VERSION 6.3 |version-6.3| -Changed |changed-6.3| -Added |added-6.3| -Fixed |fixed-6.3| - -VERSION 6.4 |version-6.4| -Changed |changed-6.4| -Added |added-6.4| -Fixed |fixed-6.4| - -============================================================================== -INCOMPATIBLE CHANGES *incompatible-6* - -These changes are incompatible with previous releases. Check this list if you -run into a problem when upgrading from Vim 5.x to 6.0 - - -Cursor position in Visual mode *curpos-visual* ------------------------------- - -When going from one window to another window on the same buffer while in -Visual mode, the cursor position of the other window is adjusted to keep the -same Visual area. This can be used to set the start of the Visual area in one -window and the end in another. In vim 5.x the cursor position of the other -window would be used, which could be anywhere and was not very useful. - - -Substitute command Vi compatible *substitute-CR* --------------------------------- - -The substitute string (the "to" part of the substitute command) has been made -Vi compatible. Previously a CTRL-V had a special meaning and could be used to -prevent a <CR> to insert a line break. This made it impossible to insert a -CTRL-V before a line break. Now a backslash is used to prevent a <CR> to -cause a line break. Since the number of backslashes is halved, it is still -possible to insert a line break at the end of the line. This now works just -like Vi, but it's not compatible with Vim versions before 6.0. - -When a ":s" command doesn't make any substitutions, it no longer sets the '[ -and '] marks. This is not related to Vi, since it doesn't have these marks. - - -Global option values introduced *new-global-values* -------------------------------- - -There are now global values for options which are local to a buffer or window. -Previously the local options were copied from one buffer to another. When -editing another file this could cause option values from a modeline to be used -for the wrong file. Now the global values are used when entering a buffer -that has not been used before. Also, when editing another buffer in a window, -the local window options are reset to their global values. The ":set" command -sets both the local and global values, this is still compatible. But a -modeline only sets the local value, this is not backwards compatible. - -":let &opt = val" now sets the local and global values, like ":set". New -commands have been added to set the global or local value: - :let &opt = val like ":set" - :let &g:opt = val like ":setglobal" - :let &l:opt = val like ":setlocal" - - -'fileencoding' changed *fileencoding-changed* ----------------------- - -'fileencoding' was used in Vim 5.x to set the encoding used inside all of Vim. -This was a bit strange, because it was local to a buffer and worked for all -buffers. It could never be different between buffers, because it changed the -way text in all buffers was interpreted. -It is now used for the encoding of the file related to the buffer. If you -still set 'fileencoding' it is likely to be overwritten by the detected -encoding from 'fileencodings', thus it is "mostly harmless". -The old FileEncoding autocommand now does the same as the new EncodingChanged -event. - - -Digraphs changed *digraphs-changed* ----------------- - -The default digraphs now correspond to RFC1345. This is very different from -what was used in Vim 5.x. |digraphs| - - -Filetype detection changed *filetypedetect-changed* --------------------------- - -The filetype detection previously was using the "filetype" autocommand group. -This caused confusion with the FileType event name (case is ignored). The -group is now called "filetypedetect". It still works, but if the "filetype" -group is used the autocommands will not be removed by ":filetype off". - The support for 'runtimepath' has made the "myfiletypefile" and -"mysyntaxfile" mechanism obsolete. They are still used for backwards -compatibility. - -The connection between the FileType event and setting the 'syntax' option was -previously in the "syntax" autocommand group. That caused confusion with the -Syntax event name. The group is now called "syntaxset". - -The distributed syntax files no longer contain "syntax clear". That makes it -possible to include one in the other without tricks. The syntax is now -cleared when the 'syntax' option is set (by an autocommand added from -synload.vim). This makes the syntax cleared when the value of 'syntax' does -not correspond to a syntax file. Previously the existing highlighting was -kept. - - -Unlisted buffers introduced *new-unlisted-buffers* ---------------------------- - -There is now a difference between buffers which don't appear in the buffer -list and buffers which are really not in the buffer list. Commands like -":ls", ":bnext", ":blast" and the Buffers menu will skip buffers not in the -buffer list. |unlisted-buffer| -The 'buflisted' option can be used to make a buffer appear in the buffer list -or not. - -Several commands that previously added a buffer to the buffer list now create -an unlisted buffer. This means that a ":bnext" and ":ball" will not find these -files until they have actually been edited. For example, buffers used for the -alternative file by ":write file" and ":read file". - Other commands previously completely deleted a buffer and now only remove -the buffer from the buffer list. Commands relying on a buffer not to be -present might fail. For example, a ":bdelete" command in an autocommand that -relied on something following to fail (was used in the automatic tests). -|:bwipeout| can be used for the old meaning of ":bdelete". - -The BufDelete autocommand event is now triggered when a buffer is removed from -the buffer list. The BufCreate event is only triggered when a buffer is -created that is added to the buffer list, or when an existing buffer is added -to the buffer list. BufAdd is a new name for BufCreate. -The new BufNew event is for creating any buffer and BufWipeout for really -deleting a buffer. - -When doing Insert mode completion, only buffers in the buffer list are -scanned. Added the 'U' flag to 'complete' to do completion from unlisted -buffers. - -Unlisted buffers are not stored in a viminfo file. - - -CTRL-U in Command-line mode changed *CTRL-U-changed* ------------------------------------ - -Using CTRL-U when editing the command line cleared the whole line. Most -shells only delete the characters before the cursor. Made it work like that. -(Steve Wall) - -You can get the old behavior with CTRL-E CTRL-U: > - :cnoremap <C-U> <C-E><C-U> - - -Ctags gone *ctags-gone* ----------- - -Ctags is no longer part of the Vim distribution. It's now a grown-up program -by itself, it deserves to be distributed separately. -Ctags can be found here: http://ctags.sf.net/. - - -Documentation reorganized *documentation-6* -------------------------- - -The documentation has been reorganized, an item may not be where you found it -in Vim 5.x. -- The user manual was added, some items have been moved to it from the - reference manual. -- The quick reference is now in a separate file (so that it can be printed). - -The examples in the documentation were previously marked with a ">" in the -first column. This made it difficult to copy/paste them. There is now a -single ">" before the example and it ends at a "<" or a non-blank in the first -column. This also looks better without highlighting. - -'helpfile' is no longer used to find the help tags file. This allows a user -to add its own help files (e.g., for plugins). - - -Modeless selection and clipboard *modeless-and-clipboard* --------------------------------- - -The modeless selection is used to select text when Visual mode can't be used, -for example when editing the command line or at the more prompt. -In Vim 5.x the modeless selection was always used. On MS-Windows this caused -the clipboard to be overwritten, with no way to avoid that. The modeless -selection now obeys the 'a' and 'A' flags in 'guioptions' and "autoselect" and -"autoselectml" in 'clipboard'. By default there is no automatic copy on -MS-Windows. Use the |c_CTRL-Y| command to manually copy the selection. - -To get the old behavior back, do this: > - - :set clipboard^=autoselectml guioptions+=A - - -Small incompatibilities *incomp-small-6* ------------------------ - -'backupdir', 'cdpath', 'directory', 'equalprg', 'errorfile', 'formatprg', -'grepprg', 'helpfile', 'makeef', 'makeprg', 'keywordprg', 'cscopeprg', -'viminfo' and 'runtimepath' can no longer be set from a modeline, for better -security. - -Removed '_' from the 'breakat' default: It's commonly used in keywords. - -The default for 'mousehide' is on, because this works well for most people. - -The Amiga binary is now always compiled with "big" features. The "big" binary -archive no longer exists. - -The items "[RO]", "[+]", "[help]", "[Preview]" and "[filetype]" in -'statusline' no longer have a leading space. - -Non-Unix systems: When expanding wildcards for the Vim arguments, don't use -'suffixes'. It now works as if the shell had expanded the arguments. - -The 'lisp', 'smartindent' and 'cindent' options are not switched off when -'paste' is set. The auto-indenting is disabled when 'paste' is set, but -manual indenting with "=" still works. - -When formatting with "=" uses 'cindent' or 'indentexpr' indenting, and there -is no change in indent, this is not counted as a change ('modified' isn't set -and there is nothing to undo). - -Report 'modified' as changed when 'fileencoding' or 'fileformat' was set. -Thus it reflects the possibility to abandon the buffer without losing changes. - -The "Save As" menu entry now edits the saved file. Most people expect it to -work like this. - -A buffer for a directory is no longer added to the Buffers menu. - -Renamed <Return> to <Enter>, since that's what it's called on most keyboards. -Thus it's now the hit-enter prompt instead of the hit-return prompt. -Can map <Enter> just like <CR> or <Return>. - -The default for the 'viminfo' option is now '20,"50,h when 'compatible' isn't -set. Most people will want to use it, including beginners, but it required -setting the option, which isn't that easy. - -After using ":colder" the newer error lists are overwritten. This makes it -possible to use ":grep" to browse in a tree-like way. Must use ":cnewer 99" -to get the old behavior. - -The patterns in 'errorformat' would sometimes ignore case (MS-Windows) and -sometimes not (Unix). Now case is always ignored. Add "\C" to the pattern to -match case. - -The 16 bit MS-DOS version is now compiled without the +listcmds feature -(buffer list manipulation commands). They are not often needed and this -executable needs to be smaller. - -'sessionoptions' now includes "curdir" by default. This means that restoring -a session will result in the current directory being restored, instead of -going to the directory where the session file is located. - -A session deleted all buffers, deleting all marks. Now keep the buffer list, -it shouldn't hurt for some existing buffers to remain present. -When the argument list is empty ":argdel *" caused an error message. - -No longer put the search pattern from a tag jump in the history. - -Use "SpecialKey" highlighting for unprintable characters instead of "NonText". -The idea is that unprintable text or any text that's displayed differently -from the characters in the file is using "SpecialKey", and "NonText" is used -for text that doesn't really exist in the file. - -Motif now uses the system default colors for the menu and scrollbar. Used to -be grey. It's still possible to set the colors with ":highlight" commands and -resources. - -Formatting text with "gq" breaks a paragraph at a non-empty blank line. -Previously the line would be removed, which wasn't very useful. - -":normal" does no longer hang when the argument ends in half a command. -Previously Vim would wait for more characters to be typed, without updating -the screen. Now it pretends an <Esc> was typed. - -Bitmaps for the toolbar are no longer searched for in "$VIM/bitmaps" but in -the "bitmaps" directories in 'runtimepath'. - -Now use the Cmdline-mode menus for the hit-enter prompt instead of the Normal -mode menus. This generally works better and allows using the "Copy" menu to -produce CTRL-Y to copy the modeless selection. - -Moved the font selection from the Window to the Edit menu, together with the -other settings. - -The default values for 'isfname' include more characters to make "gf" work -better. - -Changed the license for the documentation to the Open Publication License. -This seemed fair, considering the inclusion of parts of the Vim book, which is -also published under the OPL. The downside is that we can't force someone who -would sell copies of the manual to contribute to Uganda. - -After "ayy don't let ""yy or :let @" = val overwrite the "a register. -Use the unnamed register instead. - -MSDOS: A pattern "*.*" previously also matched a file name without a dot. -This was inconsistent with other versions. - -In Insert mode, CTRL-O CTRL-\ CTRL-N {cmd} remains in Normal mode. Previously -it would go back to Insert mode, thus confusing the meaning of CTRL-\ CTRL-N, -which is supposed to take us to Normal mode (especially in ":amenu"). - -Allow using ":" commands after an operator. Could be used to implement a new -movement command. Thus it no longer aborts a pending operator. - -For the Amiga the "-d {device}" argument was possible. When compiled with the -diff feature, this no longer works. Use "-dev {device}" instead. |-dev| - -Made the default mappings for <S-Insert> in Insert mode insert the text -literally, avoids that special characters like BS cause side effects. - -Using ":confirm" applied to the rest of the line. Now it applies only to the -command right after it. Thus ":confirm if x | edit | endif" no longer works, -use ":if x | confirm edit | endif". This was the original intention, that it -worked differently was a bug. - -============================================================================== -NEW FEATURES *new-6* - -Folding *new-folding* -------- - -Vim can now display a buffer with text folded. This allows overviewing the -structure of a file quickly. It is also possible to yank, delete and put -folded text, for example to move a function to another position. - -There is a whole bunch of new commands and options related to folding. -See |folding|. - - -Vertically split windows *new-vertsplit* ------------------------- - -Windows can also be split vertically. This makes it possible to have windows -side by side. One nice use for this is to compare two similar files (see -|new-diff-mode|). The 'scrollbind' option can be used to synchronize -scrolling. - -A vertical split can be created with the commands: - :vsplit or CTRL-W v or CTRL-W CTRL-V |:vsplit| - :vnew |:vnew| - :vertical {cmd} |:vertical| -The last one is a modifier, which has a meaning for any command that splits a -window. For example: > - :vertical stag main -Will vertically split the window and jump to the tag "main" in the new window. - -Moving from window to window horizontally can be done with the |CTRL-W_h| and -|CTRL-W_l| commands. The |CTRL-W_k| and |CTRL-W_j| commands have been changed -to jump to the window above or below the cursor position. - -The vertical and horizontal splits can be mixed as you like. Resizing windows -is easy when using the mouse, just position the pointer on a status line or -vertical separator and drag it. In the GUI a special mouse pointer shape -indicates where you can drag a status or separator line. - -To resize vertically split windows use the |CTRL-W_<| and |CTRL-W_>| commands. -To make a window the maximum width use the CTRL-W | command |CTRL-W_bar|. - -To force a new window to use the full width or height of the Vim window, -these two modifiers are available: - :topleft {cmd} New window appears at the top with full - width or at the left with full height. - :botright {cmd} New window appears at the bottom with full - width or at the right with full height. -This can be combined with ":vertical" to force a vertical split: > - :vert bot dsplit DEBUG -This will open a window at the far right, occupying the full height of the Vim -window, with the cursor on the first definition of "DEBUG". -The help window is opened at the top, like ":topleft" was used, if the current -window is fewer than 80 characters wide. - -A few options can be used to set the preferences for vertically split windows. -They work similar to their existing horizontal equivalents: - horizontal vertical ~ - 'splitbelow' 'splitright' - 'winheight' 'winwidth' - 'winminheight' 'winminwidth' -It's possible to set 'winminwidth' to zero, so that temporarily unused windows -hardly take up space without closing them. - -The new 'eadirection' option tells where 'equalalways' applies: - :set eadirection=both both directions - :set eadirection=ver equalize window heights - :set eadirection=hor equalize windows widths -This can be used to avoid changing window sizes when you want to keep them. - -Since windows can become quite narrow with vertical splits, text lines will -often not fit. The 'sidescrolloff' has been added to keep some context left -and right of the cursor. The 'listchars' option has been extended with the -"precedes" item, to show a "<" for example, when there is text left off the -screen. (Utz-Uwe Haus) - -"-O" command line argument: Like "-o" but split windows vertically. (Scott -Urban) - -Added commands to move the current window to the very top (CTRL-W K), bottom -(CTRL-W J), left (CTRL-W H) and right (CTRL-W L). In the new position the -window uses the full width/height of the screen. - -When there is not enough room in the status line for both the file name and -the ruler, use up to half the width for the ruler. Useful for narrow windows. - - -Diff mode *new-diff-mode* ---------- - -In diff mode Vim shows the differences between two, three or four files. -Folding is used to hide the parts of the file that are equal. -Highlighting is used to show deleted and changed lines. -See |diff-mode|. - -An easy way to start in diff mode is to start Vim as "vimdiff file1 file2". -Added the vimdiff manpage. - -In a running Vim the |:diffsplit| command starts diff mode for the current -file and another file. The |:diffpatch| command starts diff mode using the -current file and a patch file. The |:diffthis| command starts diff mode for -the current window. - -Differences can be removed with the |:diffget| and |:diffput| commands. - -- The 'diff' option switches diff mode on in a window. -- The |:diffupdate| command refreshes the diffs. -- The 'diffopt' option changes how diffs are displayed. -- The 'diffexpr' option can be set how a diff is to be created. -- The 'patchexpr' option can be set how patch is applied to a file. -- Added the "diff" folding method. When opening a window for diff-mode, set - 'foldlevel' to zero and 'foldenable' on, to close the folds. -- Added the DiffAdd, DiffChange, DiffDelete and DiffText highlight groups to - specify the highlighting for differences. The defaults are ugly... -- Unix: make a vimdiff symbolic link for "make install". -- Removed the now obsolete "vimdiff.vim" script from the distribution. -- Added the "[c" and "]c" commands to move to the next/previous change in diff - mode. - - -Easy Vim: click-and-type *new-evim* ------------------------- - -eVim stands for "Easy Vim". This is a separate program, but can also be -started as "vim -y". - -This starts Vim with 'insertmode' set to allow click-and-type editing. The -$VIMRUNTIME/evim.vim script is used to add mappings and set options to be able -to do most things like Notepad. This is only for people who can't stand two -modes. - -eView does the same but in readonly mode. - -In the GUI a CTRL-C now only interrupts when busy with something, not when -waiting for a character. Allows using CTRL-C to copy text to the clipboard. - - -User manual *new-user-manual* ------------ - -The user manual has been added. It is organised around editing tasks. It -reads like a book, from start to end. It should allow beginners to start -learning Vim. It helps everybody to learn using the most useful Vim features. -It is much easier to read than the reference manual, but omits details. See -|user-manual|. - -The user manual includes parts of the Vim book by Steve Oualline |frombook|. -It is published under the OPL |manual-copyright|. - -When syntax highlighting is not enabled, the characters in the help file which -mark examples ('>' and '<') and header lines ('~') are replaced with a space. - -When closing the help window, the window layout is restored from before -opening it, if the window layout didn't change since then. -When opening the help window, put it at the top of the Vim window if the -current window is fewer than 80 characters and not full width. - - -Flexible indenting *new-indent-flex* ------------------- - -Automatic indenting is now possible for any language. It works with a Vim -script, which makes it very flexible to compute the indent. - -The ":filetype indent on" command enables using the provided indent scripts. -This is explained in the user manual: |30.3|. - -The 'indentexpr' option is evaluated to get the indent for a line. The -'indentkeys' option tells when to trigger re-indenting. Normally these -options are set from an indent script. Like Syntax files, indent scripts will -be created and maintained by many people. - - -Extended search patterns *new-searchpat* ------------------------- - -Added the possibility to match more than one line with a pattern. (partly by -Loic Grenie) -New items in a search pattern for multi-line matches: -\n match end-of-line, also in [] -\_[] match characters in range and end-of-line -\_x match character class and end-of-line -\_. match any character or end-of-line -\_^ match start-of-line, can be used anywhere in the regexp -\_$ match end-of-line, can be used anywhere in the regexp - -Various other new items in search patterns: -\c ignore case for the whole pattern -\C match case for the whole pattern -\m magic on for the following -\M magic off for the following -\v make following characters "very magic" -\V make following characters "very nomagic" - -\@! don't match atom before this. - Example: "foo\(bar\)\@!" matches "foo " but not "foobar". -\@= match atom, resulting in zero-width match - Example: "foo\(bar\)\@=" matches "foo" in "foobar". -\@<! don't match preceding atom before the current position -\@<= match preceding atom before the current position -\@> match preceding atom as a subexpression - -\& match only when branch before and after it match - -\%[] optionally match a list of atoms; "end\%[if]" matches "end", - "endi" and "endif" -\%(\) like \(\), but without creating a back-reference; there can be - any number of these, overcomes the limit of nine \( \) pairs -\%^ match start-of-file (Chase Tingley) -\%$ match end-of-file (Chase Tingley) -\%# Match with the cursor position. (Chase Tingley) -\? Just like "\=" but can't be used in a "?" command. - -\%23l match in line 23 -\%<23l match before line 23 -\%>23l match after line 23 -\%23c, \%<23c, \%>23c match in/before/after column 23 -\%23v, \%<23v, \%>23v match in/before/after virtual column 23 - - -For syntax items: -\z(...\) external reference match set (in region start pattern) -\z1 - \z9 external reference match use (in region skip or end pattern) - (Scott Bigham) - -\zs use position as start of match -\ze use position as end of match - -Removed limit of matching only up to 32767 times with *, \+, etc. - -Added support to match multi-byte characters. (partly by Muraoka Taro) -Made "\<" and "\>" work for UTF-8. (Muraoka Taro) - - -UTF-8 support *new-utf-8* -------------- - -Vim can now edit files in UTF-8 encoding. Up to 31 bit characters can be -used, but only 16 bit characters are displayed. Up to two combining -characters are supported, they overprint the preceding character. -Double-wide characters are also supported. See |UTF-8|. - -UCS-2, UCS-4 and UTF-16 encodings are supported too, they are converted to -UTF-8 internally. There is also support for editing Unicode files in a Latin1 -environment. Other encodings are converted with iconv() or an external -converter specified with 'charconvert'. - -Many new items for Multi-byte support: -- Added 'encoding' option: specifies character encoding used inside Vim. It - can be any 8-bit encoding, some double-byte encodings or Unicode. - It is initialized from the environment when a supported value is found. -- Added 'fileencoding' and 'fileencodings': specify character coding in a - file, similar to 'fileformat' and 'fileformats'. - When 'encoding' is "utf-8" and 'fileencodings' is "utf-8,latin1" this will - automatically switch to latin1 if a file does not contain valid UTF-8. -- Added 'bomb' option and detection of a BOM at the start of a file. Can be - used with "ucs-bom" in 'fileencodings' to automatically detect a Unicode - file if it starts with a BOM. Especially useful on MS-Windows (NT and - 2000), which uses ucs-2le files with a BOM (e.g., when exporting the - registry). -- Added the 'termencoding' option: Specifies the encoding used for the - terminal. Useful to put Vim in utf-8 mode while in a non-Unicode locale: > - :let &termencoding = &encoding - :set encoding=utf-8 -- When 'viminfo' contains the 'c' flag, the viminfo file is converted from the - 'encoding' it was written with to the current 'encoding'. -- Added ":scriptencoding" command: convert lines in a sourced script to - 'encoding'. Useful for menu files. -- Added 'guifontwide' to specify a font for double-wide characters. -- Added Korean support for character class detection. Also fix cls() in - search.c. (Chong-Dae Park) -- Win32: Typing multi-byte characters without IME. (Alexander Smishlajev) -- Win32 with Mingw: compile with iconv library. (Ron Aaron) -- Win32 with MSVC: dynamically load iconv.dll library. (Muraoka Taro) -- Make it possible to build a version with multi-byte and iconv support with - Borland 5.5. (Yasuhiro Matsumoto) -- Added 'delcombine' option: Delete combining character separately. (Ron - Aaron) -- The "xfontset" feature isn't required for "xim". These are now two - independent features. -- XIM: enable XIM when typing a language character (Insert mode, Search - pattern, "f" or "r" command). Disable XIM when typing a Normal mode - command. -- When the XIM is active, show "XIM" in the 'showmode' message. (Nam SungHyun) -- Support "CursorIM" for XIM. (Nam SungHyun) -- Added 'm' flag to 'formatoptions': When wrapping words, allow splitting at - each multibyte character, not only at a space. -- Made ":syntax keyword" work with multi-byte characters. -- Added support for Unicode upper/lowercase flipping and comparing. (based on - patch by Raphael Finkel) - Let "~" on multi-byte characters that have a third case ("title case") - switch between the three cases. (Raphael Finkel) - -Allow defining digraphs for multi-byte characters. -Added RFC1345 digraphs for Unicode. -Most Normal mode commands that accept a character argument, like "r", "t" and -"f" now accept a digraph. The 'D' flag in 'cpoptions' disables this to remain -Vi compatible. - -Added Language mapping and 'keymap' to be able to type multi-byte characters: -- Added the ":lmap" command and friends: Define mappings that are used when - typing characters in the language of the text. Also for "r", "t", etc. In - Insert and Command-line mode CTRL-^ switches the use of the mappings on/off. - CTRL-^ also toggles the use of an input method when no language mappings are - present. Allows switching the IM back on halfway typing. -- "<char-123>" argument to ":map", allows to specify the decimal, octal or - hexadecimal value of a character. -- Implemented the 'keymap' option: Load a keymap file. Uses ":lnoremap" to - define mappings for the keymap. The new ":loadkeymap" command is used in - the keymap file. -- Added 'k' flag in 'statusline': Value of "b:keymap_name" or 'keymap' when - it's being used. Uses "<lang>" when no keymap is loaded and ":lmap"s are - active. Show this text in the default statusline too. -- Added the 'iminsert' and 'imsearch' options: Specify use of langmap mappings - and Input Method with an option. (Muraoka Taro) - Added 'imcmdline' option: When set the input method is always enabled when - starting to edit a command line. Useful for a XIM that uses dead keys to - type accented characters. - Added 'imactivatekey' option to better control XIM. (Muraoka Taro) -- When typing a mapping that's not finished yet, display the last character - under the cursor in Insert mode and Command-line mode. Looks good for dead - characters. -- Made the 'langmap' option recognize multi-byte characters. But mapping only - works for 8-bit characters. Helps when using UTF-8. -- Use a different cursor for when ":lmap" mappings are active. Can specify - two highlight groups for an item in 'guicursor'. By default "lCursor" and - "Cursor" are equal, the user must set a color he likes. - Use the cursor color for hangul input as well. (Sung-Hyun Nam) -- Show "(lang)" for 'showmode' when language mapping is enabled. -- UTF-8: Made "r" work with a ":lmap" that includes a composing character. - Also works for "f", which now works to find a character that includes a - composing character. - -Other multi-byte character additions: -- Support double-byte single-width characters for euc-jp: Characters starting - with 0x8E. Added ScreenLines2[] to store the second byte. - - -Multi-language support *new-multi-lang* ----------------------- - -The messages used in Vim can be translated. Several translations are -available. This uses the gettext mechanism. It allows adding a translation -without recompiling Vim. |multi-lang| (partly by Marcin Dalecki) - -The translation files are in the src/po directory. The src/po/README.txt file -explains a few things about doing a translation. - -Menu translations are available as well. This uses the new |:menutranslate| -command. The translations are found in the runtime directory "lang". This -allows a user to add a translation. - -Added |:language| command to set the language (locale) for messages, time and -character type. This allows switching languages in Vim without changing the -locale outside of Vim. - -Made it possible to have vimtutor use different languages. (Eduardo Fernandez) -Spanish (Eduardo Fernandez), Italian (Antonio Colombo), Japanese (Yasuhiro -Matsumoto) and French (Adrien Beau) translations are included. -Added "vimtutor.bat": script to start Vim on a copy of the tutor file for -MS-Windows. (Dan Sharp) - -- Added v:lang variable to be able to get current language setting. - (Marcin Dalecki) Also v:lc_time and v:ctype. -- Make it possible to translate the dialogs used by the menus. Uses global - "menutrans_" variables. ":menutrans clear" deletes them. -- removed "broken locale" (Marcin Dalecki). -- Don't use color names in icons, use RGB values. The names could be - translated. -- Win32: Added global IME support (Muraoka) -- Win32: Added dynamic loading of IME support. -- ":messages" prints a message about who maintains the messages or the - translations. Useful to find out where to make a remark about a wrong - translation. -- --disable-nls argument for configure: Disable use of gettext(). (Sung-Hyun - Nam) -- Added NLS support for Win32 with the MingW compiler. (Eduardo Fernandez) -- When available, call bind_textdomain_codeset() to have gettext() translate - messages to 'encoding'. This requires GNU gettext 0.10.36 or later. -- Added gettext support for Win32. This means messages will be translated - when the locale is set and libintl.dll can be found. (Muraoka Taro) - Also made it work with MingW compiler. (Eduardo Fernandez) - Detect the language and set $LANG to get the appropriate translated messages - (if supported). Also use $LANG to select a language, v:lang is a very - different kind of name. -- Made gvimext.dll use translated messages, if possible. (Yasuhiro Matsumoto) - - -Plugin support *new-plugins* --------------- - -To make it really easy to load a Vim script when starting Vim, the "plugin" -runtime directory can be used. All "*.vim" files in it will be automatically -loaded. For Unix, the directory "~/.vim/plugin" is used by default. The -'runtimepath' option can be set to look in other directories for plugins. -|load-plugins| |add-plugin| - -The |:runtime| command has been added to load one or more files in -'runtimepath'. - -Standard plugins: -netrw.vim - Edit files over a network |new-network-files| -gzip.vim - Edit compressed files -explorer.vim - Browse directories |new-file-browser| - -Added support for local help files. |add-local-help|. -When searching for help tags, all "doc/tags" files in 'runtimepath' are used. -Added the ":helptags" command: Generate a tags file for a help directory. -The first line of each help file is automagically added to the "LOCAL -ADDITIONS" section in doc/help.txt. - -Added the <unique> argument to ":map": only add a mapping when it wasn't -defined before. - -When displaying an option value with 'verbose' set will give a message about -where the option was last set. Very useful to find out which script did set -the value. - -The new |:scriptnames| command displays a list of all scripts that have been -sourced. - -GUI: For Athena, Motif and GTK look for a toolbar bitmap in the "bitmaps" -directories in 'runtimepath'. Allows adding your own bitmaps. - - -Filetype plugins *new-filetype-plugins* ------------------ - -A new group of files has been added to do settings for specific file types. -These can be options and mappings which are specifically used for one value of -'filetype'. - -The files are located in "$VIMRUNTIME/ftplugin". The 'runtimepath' option -makes it possible to use several sets of plugins: Your own, system-wide, -included in the Vim distribution, etc. - -To be able to make this work, several features were added: -- Added the "s:" variables, local to a script. Avoids name conflicts with - global variables. They can be used in the script and in functions, - autocommands and user commands defined in the script. They are kept between - invocations of the same script. |s:var| -- Added the global value for local options. This value is used when opening - a new buffer or editing another file. The option value specified in a - modeline or filetype setting is not carried over to another buffer. - ":set" sets both the local and the global value. - ":setlocal" sets the local option value only. - ":setglobal" sets or displays the global value for a local option. - ":setlocal name<" sets a local option to its global value. -- Added the buffer-local value for some global options: 'equalprg', 'makeprg', - 'errorformat', 'grepprg', 'path', 'dictionary', 'thesaurus', 'tags', - 'include' and 'define'. This allows setting a local value for these global - options, without making it incompatible. -- Added mappings and abbreviations local to a buffer: ":map <buffer>". -- In a mapping "<Leader>" can be used to get the value of the "mapleader" - variable. This simplifies mappings that use "mapleader". "<Leader>" - defaults to "\". "<LocalLeader>" does the same with "maplocalleader". This - is to be used for mappings local to a buffer. -- Added <SID> Script ID to define functions and mappings local to a script. -- Added <script> argument to ":noremap" and ":noremenu": Only remap - script-local mappings. Avoids that mappings from other scripts get in the - way, but does allow using mappings defined in the script. -- User commands can be local to a buffer: ":command -buffer". - -The new ":setfiletype" command is used in the filetype detection autocommands, -to avoid that 'filetype' is set twice. - - -File browser *new-file-browser* ------------- - -When editing a directory, the explorer plugin will list the files in the -directory. Pressing <Enter> on a file name edits that file. Pressing <Enter> -on a directory moves the browser to that directory. - -There are several other possibilities, such as opening a file in the preview -window, renaming files and deleting files. - - -Editing files over a network *new-network-files* ----------------------------- - -Files starting with scp://, rcp://, ftp:// and http:// are recognized as -remote files. An attempt is made to access these files with the indicated -method. For http:// only reading is possible, for the others writing is also -supported. Uses the netrw.vim script as a standard "plugin". |netrw| - -Made "gf" work on a URL. It no longer assumes the file is local on the -computer (mostly didn't work anyway, because the full path was required). -Adjusted test2 for this. - -Allow using a URL in 'path'. Makes ":find index.html" work. - -GTK: Allow dropping a http:// and ftp:// URL on Vim. The netrw plugin takes -care of downloading the file. (MiKael Berthe) - - -Window for command-line editing *new-cmdwin* -------------------------------- - -The Command-line window can be used to edit a command-line with Normal and -Insert mode commands. When it is opened it contains the history. This allows -copying parts of previous command lines. |cmdwin| - -The command-line window can be opened from the command-line with the key -specified by the 'cedit' option (like Nvi). It can also be opened directly -from Normal mode with "q:", "q/" and "q?". - -The 'cmdwinheight' is used to specify the initial height of the window. - -In Insert mode CTRL-X CTRL-V can be used to complete an Ex command line, like -it's done on the command-line. This is also useful for writing Vim scripts! - -Additionally, there is "improved Ex mode". Entered when Vim is started as -"exim" or "vim -E", and with the "gQ" command. Works like repeated use of -":", with full command-line editing and completion. (Ulf Carlsson) - - -Debugging mode *new-debug-mode* --------------- - -In debugging mode sourced scripts and user functions can be executed line by -line. There are commands to step over a command or step into it. |debug-mode| - -Breakpoints can be set to run until a certain line in a script or user -function is executed. |:breakadd| - -Debugging can be started with ":debug {cmd}" to debug what happens when a -command executes. The |-D| argument can be used to debug while starting up. - - -Cursor in virtual position *new-virtedit* --------------------------- - -Added the 'virtualedit' option: Allow positioning the cursor where there is no -actual character in Insert mode, Visual mode or always. (Matthias Kramm) -This is especially useful in Visual-block mode. It allows positioning a -corner of the area where there is no text character. (Many improvements by -Chase Tingley) - - -Debugger interface *new-debug-itf* ------------------- - -This was originally made to work with Sun Visual Workshop. (Gordon Prieur) -See |debugger.txt|, |sign.txt| and |workshop.txt|. - -Added the ":sign" command to define and place signs. They can be displayed -with two ASCII characters or an icon. The line after it can be highlighted. -Useful to display breakpoints and the current PC position. - -Added the |:wsverb| command to execute debugger commands. - -Added balloon stuff: 'balloondelay' and 'ballooneval' options. - -Added "icon=" argument for ":menu". Allows defining a specific icon for a -ToolBar item. - - -Communication between Vims *new-vim-server* --------------------------- - -Added communication between two Vims. Makes it possible to send commands from -one Vim to another. Works for X-Windows and MS-Windows |clientserver|. - -Use "--remote" to have files be edited in an already running Vim. -Use "--remote-wait" to do the same and wait for the editing to finish. -Use "--remote-send" to send commands from one Vim to another. -Use "--remote-expr" to have an expression evaluated in another Vim. -Use "--serverlist" to list the currently available Vim servers. (X only) -There are also functions to communicate between the server and the client. -|remote_send()| |remote_expr()| - -(X-windows version implemented by Flemming Madsen, MS-Windows version by Paul -Moore) - -Added the command server name to the window title, so you can see which server -name belongs to which Vim. - -Removed the OleVim directory and SendToVim.exe and EditWithVim.exe from the -distribution. Can now use "gvim --remote" and "gvim --remote-send", which is -portable. - -GTK+: Support running Vim inside another window. Uses the --socketid argument -(Neil Bird) - - -Buffer type options *new-buftype* -------------------- - -The 'buftype' and 'bufhidden' options have been added. They can be set to -have different kinds of buffers. For example: -- 'buftype' = "quickfix": buffer with error list -- 'buftype' = "nofile" and 'bufhidden' = "delete": scratch buffer that will be - deleted as soon as there is no window displaying it. - -'bufhidden' can be used to overrule the 'hidden' option for one buffer. - -In combination with 'buflisted' and 'swapfile' this offers the possibility to -use various kinds of special buffers. See |special-buffers|. - - -Printing *new-printing* --------- - -Included first implementation of the ":hardcopy" command for printing -to paper. For MS-Windows any installed printer can be used. For other -systems a PostScript file is generated, which can be printed with the -'printexpr' option. -(MS-Windows part by Vince Negri, Vipin Aravind, PostScript by Vince Negri and -Mike Williams) - -Made ":hardcopy" work with multi-byte characters. (Muraoka Taro, Yasuhiro -Matsumoto) - -Added options to tune the way printing works: (Vince Negri) -- 'printoptions' defines various things. -- 'printheader' specifies the header format. Added "N" field to 'statusline' - for the page number. -- 'printfont' specifies the font name and attributes. -- 'printdevice' defines the default printer for ":hardcopy!". - - -Ports *ports-6* ------ - -Port to OS/390 Unix (Ralf Schandl) -- A lot of changes to handle EBCDIC encoding. -- Changed Ctrl('x') to Ctrl_x define. - -Included jsbmouse support. (Darren Garth) -Support for dec mouse in Unix. (Steve Wall) - -Port to 16-bit MS Windows (Windows 3.1x) (Vince Negri) - -Port to QNX. Supports the Photon GUI, mouse, etc. (Julian Kinraid) - -Allow cross-compiling the Win32 version with Make_ming.mak. (Ron Aaron) -Added Python support for compiling with Mingw. (Ron Aaron) - -Dos 32 bit: Added support the Windows clipboard. (David Kotchan) - -Win32: Dynamically load Perl and Python. Allows compiling Vim with these -interfaces and will try to find the DLLs at runtime. (Muraoka Taro) - -Compiling the Win32 GUI with Cygwin. Also compile vimrun, dosinst and -uninstall. (Gerfried) - -Mac: Make Vim compile with the free MPW compiler supplied by Apple. And -updates for CodeWarrior. (Axel Kielhorn) - -Added typecasts and ifdefs as a start to make Vim work on Win64 (George -Reilly) - - -Quickfix extended *quickfix-6* ------------------ - -Added the "error window". It contains all the errors of the current error -list. Pressing <Enter> in a line makes Vim jump to that line (in another -window). This makes it easy to navigate through the error list. -|quickfix-window|. - -- |:copen| opens the quickfix window. -- |:cclose| closes the quickfix window. -- |:cwindow| takes care that there is a quickfix window only when there are - recognized errors. (Dan Sharp) - -- Quickfix also knows "info", next to "warning" and "error" types. "%I" can be - used for the start of a multi-line informational message. (Tony Leneis) -- The "%p" argument can be used in 'errorformat' to get the column number from - a line where "^" points to the column. (Stefan Roemer) -- When using "%f" in 'errorformat' on a DOS/Windows system, also include "c:" - in the filename, even when using "%f:". - - -Operator modifiers *new-operator-mod* ------------------- - -Insert "v", "V" or CTRL-V between an operator and a motion command to force -the operator to work characterwise, linewise or blockwise. |o_v| - - -Search Path *new-search-path* ------------ - -Vim can search in a directory tree not only in downwards but also upwards. -Works for the 'path', 'cdpath' and 'tags' options. (Ralf Schandl) - -Also use "**" for 'tags' option. (Ralf Schandl) - -Added 'includeexpr', can be used to modify file name found by 'include' -option. -Also use 'includeexpr' for "gf" and "<cfile>" when the file can't be found -without modification. Useful for doing "gf" on the name after an include or -import statement. - -Added the 'cdpath' option: Locations to find a ":cd" argument. (Raf) - -Added the 'suffixesadd' option: Suffixes to be added to a file name when -searching for a file for the "gf", "[I", etc. commands. - - -Writing files improved *new-file-writing* ----------------------- - -Added the 'backupcopy' option: Select whether a file is to be copied or -renamed to make a backup file. Useful on Unix to speed up writing an ordinary -file. Useful on other systems to preserve file attributes and when editing a -file on a Unix filesystem. - -Added the 'autowriteall' option. Works like 'autowrite' but for more -commands. - -Added the 'backupskip' option: A list of file patterns to skip making a backup -file when it matches. The default for Unix includes "/tmp/*", this makes -"crontab -e" work. - -Added support for Access Control Lists (ACL) for FreeBSD and Win32. The ACL -is copied from the original file to the new file (or the backup if it's -copied). -ACL is also supported for AIX, Solaris and generic POSIX. (Tomas Ogren) -And on SGI. - - -Argument list *new-argument-list* -------------- - -The support for the argument list has been extended. It can now be -manipulated to contain the files you want it to contain. - -The argument list can now be local to a window. It is created with the -|:arglocal| command. The |:argglobal| command can be used to go back to the -global argument list. - -The |:argdo| command executes a command on all files in the argument list. - -File names can be added to the argument list with |:argadd|. File names can -be removed with |:argdelete|. - -"##" can be used like "#", it is replaced by all the names in the argument -list concatenated. Useful for ":grep foo ##". - -The |:argedit| adds a file to the argument list and edits it. Like ":argadd" -and then ":edit". - - -Restore a View *new-View* --------------- - -The ":mkview" command writes a Vim script with the settings and mappings for -one window. When the created file is sourced, the view of the window is -restored. It's like ":mksession" for one window. -The View also contains the local argument list and manually created, opened -and closed folds. - -Added the ":loadview" command and the 'viewdir' option: Allows for saving and -restoring views of a file with simple commands. ":mkview 1" saves view 1 for -the current file, ":loadview 1" loads it again. Also allows quickly switching -between two views on one file. And saving and restoring manual folds and the -folding state. - -Added 'viewoptions' to specify how ":mkview" works. - -":mksession" now also works fine with vertical splits. It has been further -improved and restores the view of each window. It also works properly with -preview and quickfix windows. - -'sessionoptions' is used for ":mkview" as well. -Added "curdir" and "sesdir" to 'sessionoptions'. Allows selection of what -the current directory will be restored to. - -The session file now also contains the argument list(s). - - -Color schemes *new-color-schemes* -------------- - -Support for loading a color scheme. Added the ":colorscheme" command. -Automatically add menu entries for available schemes. -Should now properly reset the colors when 'background' or 't_Co' is changed. -":highlight clear" sets the default colors again. -":syntax reset" sets the syntax highlight colors back to the defaults. -For ":set bg&" guess the value. This allows a color scheme to switch back to -the default colors. -When syntax highlighting is switched on and a color scheme was defined, reload -the color scheme to define the colors. - - -Various new items *new-items-6* ------------------ - -Normal mode commands: ~ - -"gi" Jump to the ^ mark and start Insert mode. Also works when the - mark is just after the line. |gi| - -"g'm" and "g`m" - Jump to a mark without changing the jumplist. Now you can use - g`" to jump to the last known position in a file without side - effects. Also useful in mappings. - -[', [`, ]' and ]` - move the cursor to the next/previous lowercase mark. - -g_ Go to last non-blank in line. (Steve Wall) - - -Options: ~ - -'autoread' When detected that a file changed outside of Vim, - automatically read a buffer again when it's not changed. - It has a global and a local value. Use ":setlocal autoread<" - to go back to using the global value for 'autoread'. - -'debug' When set to "msg" it will print error messages that would - otherwise be omitted. Useful for debugging 'indentexpr' and - 'foldexpr'. - -'lispwords' List of words used for lisp indenting. It was previously hard - coded. Added a number of Lisp names to the default. - -'fold...' Many new options for folding. - -'modifiable' When off, it is impossible to make changes to a buffer. - The %m and %M items in 'statusline' show a '-'. - -'previewwindow' Set in the preview window. Used in a session file to mark a - window as the preview window. - -'printfont' -'printexpr' -'printheader' -'printdevice' -'printoptions' for ":hardcopy". - -'buflisted' Makes a buffer appear in the buffer list or not. - -Use "vim{version}:" for modelines, only to be executed when the version is ->= {version}. Also "vim>{version}", "vim<{version}" and "vim={version}". - - -Ex commands: ~ - -:sav[eas][!] {file} - Works like ":w file" and ":e #", but without loading the file - again and avoiding other side effects. |:saveas| - -:silent[!] {cmd} - Execute a command silently. Also don't use a delay that would - come after the message. And don't do 'showmatch'. - RISCOS: Removed that "!~cmd" didn't output anything, and - didn't wait for <Enter> afterwards. Can use ":silent !cmd" - now. -:menu <silent> Add a menu that won't echo Ex commands. -:map <silent> Add a mapping that won't echo Ex commands. - -:checktime Check for changed buffers. - -:verbose {cmd} Set 'verbose' for one command. - -:echomsg {expr} -:echoerr {expr} Like ":echo" but store the message in the history. (Mark - Waggoner) - -:grepadd Works just like ":grep" but adds to the current error list - instead of defining a new list. |:grepadd| - -:finish Finish sourcing a file. Can be used to skip the rest of a Vim - script. |:finish| - -:leftabove -:aboveleft Split left/above current window. - -:rightbelow -:belowright Split right/below current window. - -:first, :bfirst, :ptfirst, etc. - Alias for ":rewind". It's more logical compared to ":last". - -:enew Edit a new, unnamed buffer. This is needed, because ":edit" - re-edits the same file. (Wall) - -:quitall Same as ":qall". - -:match Define match highlighting local to a window. Allows - highlighting an item in the current window without interfering - with syntax highlighting. - -:menu enable -:menu disable Commands to enable/disable menu entries without removing them. - (Monish Shah) - -:windo Execute a command in all windows. -:bufdo Execute a command in all buffers. - -:wincmd Window (CTRL-W) command. Useful when a Normal mode command - can't be used (e.g., for a CursorHold autocommand). See - |CursorHold-example| for a nice application with it. - -:lcd and :lchdir - Set local directory for a window. (Benjie Chen) - -:hide {command} - Execute {command} with 'hidden' set. - -:emenu in Visual mode to execute a ":vmenu" entry. - -:popup Pop up a popup menu. - -:redraw Redraw the screen even when busy with a script or function. - -:hardcopy Print to paper. - -:compiler Load a Vim script to do settings for a specific compiler. - -:z# List numbered lines. (Bohdan Vlasyuk) - - -New marks: ~ - -'( and ') Begin or end of current sentence. Useful in Ex commands. -'{ and '} Begin or end of current paragraph. Useful in Ex commands. -'. Position of the last change in the current buffer. -'^ Position where Insert mode was stopped. - -Store the ^ and . marks in the viminfo file. Makes it possible to jump to the -last insert position or changed text. - - -New functions: ~ -argidx() Current index in argument list. -buflisted() Checks if the buffer exists and has 'buflisted' set. -cindent() Get indent according to 'cindent'. -eventhandler() Returns 1 when inside an event handler and interactive - commands can't be used. -executable() Checks if a program or batch script can be executed. -filewritable() Checks if a file can be written. (Ron Aaron) -foldclosed() Find out if there is a closed fold. (Johannes Zellner). -foldcloseend() Find the end of a closed fold. -foldlevel() Find out the foldlevel. (Johannes Zellner) -foreground() Move the GUI window to the foreground. -getchar() Get one character from the user. Can be used to define a - mapping that takes an argument. -getcharmod() Get last used key modifier. -getbufvar() gets the value of an option or local variable in a buffer (Ron - Aaron) -getfsize() Return the size of a file. -getwinvar() gets the value of an option or local variable in a window (Ron - Aaron) -globpath() Find matching files in a list of directories. -hasmapto() Detect if a mapping to a string is already present. -iconv() Convert a string from one encoding to another. -indent() gets the indent of a line (Ron Aaron) -inputdialog() Like input() but use a GUI dialog when possible. Currently - only works for Win32, Motif, Athena and GTK. - Use inputdialog() for the Edit/Settings/Text Width menu. Also - for the Help/Find.. and Toolbar FindHelp items. - (Win32 support by Thore B. Karlsen) - (Win16 support by Vince Negri) -inputsecret() Ask the user to type a string without showing the typed keys. - (Charles Campbell) -libcall() for Unix (Neil Bird, Johannes Zellner, Stephen Wall) -libcallnr() for Win32 and Unix -lispindent() Get indent according to 'lisp'. -mode() Return a string that indicates the current mode. -nextnonblank() Skip blank lines forwards. -prevnonblank() Skip blank lines backwards. Useful to for indent scripts. -resolve() MS-Windows: resolve a shortcut to the file it points to. - Unix: resolve a symbolic link. -search() Search for a pattern. -searchpair() Search for matching pair. Can be used in indent files to find - the "if" matching an endif. -setbufvar() sets an option or variable local to a buffer (Ron Aaron) -setwinvar() sets an option or variable local to a window (Ron Aaron) -stridx() Search for first occurrence of one string in another. -strridx() Search for last occurrence of one string in another. -tolower() Convert string to all-lowercase. -toupper() Convert string to all-uppercase. -type() Check the type of an expression. -wincol() window column of the cursor -winwidth() Width of a window. (Johannes Zellner) -winline() window line of the cursor - - -Added expansion of curly braces in variable and function names. This can be -used for variable names that include the value of an option. Or a primitive -form of arrays. (Vince Negri) - - -New autocommand events: ~ -BufWinEnter Triggered when a buffer is displayed in a window, after using - the modelines. Can be used to load a view. -BufWinLeave Triggered when a buffer is no longer in a window. Also - triggered when exiting Vim. Can be used to save views. -FileChangedRO Triggered before making the first change to a read-only file. - Can be used to check-out the file. (Scott Graham) -TermResponse Triggered when the terminal replies to the version-request. - The v:termresponse internal variable holds the result. Can be - used to react to the version of the terminal. (Ronald Schild) -FileReadCmd Triggered before reading a file. -BufReadCmd Triggered before reading a file into a buffer. -FileWriteCmd Triggered before writing a file. -BufWriteCmd Triggered before writing a buffer into a file. -FileAppendCmd Triggered before appending to a file. -FuncUndefined Triggered when a user function is not defined. (Ron Aaron) - -The autocommands for the *Cmd events read or write the file instead of normal -file read/write. Use this in netrw.vim to be able to edit files on a remote -system. (Charles Campbell) - - -New Syntax files: ~ - -bdf BDF font definition (Nikolai Weibull) -catalog SGML catalog (Johannes Zellner) -debchangelog Debian Changelog (Wichert Akkerman) -debcontrol Debian Control (Wichert Akkerman) -dot dot (Markus Mottl) -dsl DSSSL syntax (Johannes Zellner) -eterm Eterm configuration (Nikolai Weibull) -indent Indent profile (Nikolai Weibull) -lftp LFTP (Nikolai Weibull) -lynx Lynx config (Doug Kearns) -mush mush sourcecode (Bek Oberin) -natural Natural (Marko Leipert) -pilrc Pal resource compiler (Brian Schau) -plm PL/M (Philippe Coulonges) -povini Povray configuration (David Necas) -ratpoison Ratpoison config/command (Doug Kearns) -readline readline config (Nikolai Weibull) -screen Screen RC (Nikolai Weibull) -specman Specman (Or Freund) -sqlforms SQL*Forms (Austin Ziegler) -terminfo terminfo (Nikolai Weibull) -tidy Tidy configuration (Doug Kearns) -wget Wget configuration (Doug Kearns) - - -Updated many syntax files to work both with Vim 5.7 and 6.0. - -Interface to Ruby. (Shugo Maeda) -Support dynamic loading of the Ruby interface on MS-Windows. (Muraoka Taro) -Support this for Mingw too. (Benoit Cerrina) - -Win32: Added possibility to load TCL dynamically. (Muraoka Taro) -Also for Borland 5.5. (Dan Sharp) - -Win32: When editing a file that is a shortcut (*.lnk file), edit the file it -links to. Unless 'binary' is set, then edit the shortcut file itself. -(Yasuhiro Matsumoto) - -The ":command" command now accepts a "-bar" argument. This allows the user -command to be followed by "| command". - -The preview window is now also used by these commands: -- |:pedit| edits the specified file in the preview window -- |:psearch| searches for a word in included files, like |:ijump|, and - displays the found text in the preview window. -Added the CTRL-W P command: go to preview window. - -MS-DOS and MS-Windows also read the system-wide vimrc file $VIM/vimrc. Mostly -for NT systems with multiple users. - -A double-click of the mouse on a character that has a "%" match selects from -that character to the match. Similar to "v%". - -"-S session.vim" argument: Source a script file when starting up. Convenient -way to start Vim with a session file. - -Added "--cmd {command}" Vim argument to execute a command before a vimrc file -is loaded. (Vince Negri) - -Added the "-M" Vim argument: reset 'modifiable' and 'write', thus disallow -making changes and writing files. - -Added runtime/delmenu.vim. Source this to remove all menus and prepare for -loading new menus. Useful when changing 'langmenu'. - -Perl script to filter Perl error messages to quickfix usable format. (Joerg -Ziefle) - -Added runtime/macros/less.vim: Vim script to simulate less, but with syntax -highlighting. - -MS-Windows install program: (Jon Merz) -- The Win32 program can now create shortcuts on the desktop and install Vim in - the Start menu. -- Possibly remove old "Edit with Vim" entries. -- The Vim executable is never moved or $PATH changed. A small batch file is - created in a directory in $PATH. Fewer choices to be made. -- Detect already installed Vim versions and offer to uninstall them first. - -Improved the MS-Windows uninstal program. It now also deletes the entries in -the Start menu, icons from the desktop and the created batch files. (Jon Merz) -Also made it possible to delete only some of these. Also unregister gvim for -OLE. - -Generate a self-installing Vim package for MS-Windows. This uses NSIS. (Jon -Merz et al.) - -Added ":filetype detect". Try detecting the filetype again. Helps when -writing a new shell script, after adding "#!/bin/csh". - -Added ":augroup! name" to delete an autocommand group. Needed for the -client-server "--remote-wait". - -Add the Vim version number to the viminfo file, useful for debugging. - -============================================================================== -IMPROVEMENTS *improvements-6* - -Added the 'n' flag in 'cpoptions': When omitted text of wrapped lines is not -put between line numbers from 'number' option. Makes it a lot easier to read -wrapped lines. - -When there is a format error in a tags file, the byte position is reported so -that the error can be located. - -"gf" works in Visual mode: Use the selected text as the file name. (Chase -Tingley) - -Allow ambiguous mappings. Thus "aa" and "aaa" can both be mapped, the longest -matching one is used. Especially useful for ":lmap" and 'keymap'. - -Encryption: Ask the key to be typed twice when crypting the first time. -Otherwise a typo might cause the text to be lost forever. (Chase Tingley) - -The window title now has "VIM" on the end. The file name comes first, useful -in the taskbar. A "+" is added when the file is modified. "=" is added for -a read-only file. "-" is added for a file with 'modifiable' off. - -In Visual mode, mention the size of the selected area in the 'showcmd' -position. - -Added the "b:changedtick" variable. Incremented at each change, also for -undo. Can be used to take action only if the buffer has been changed. - -In the replacement string of a ":s" command "\=" can be used to replace with -the result of an expression. From this expression the submatch() function can -be used to access submatches. - -When doing ":qall" and there is a change in a buffer that is being edited in -another window, jump to that window, instead of editing that buffer in the -current window. - -Added the "++enc=" and "++ff=" arguments to file read/write commands to force -using the given 'encoding' or 'fileformat'. And added the "v:cmdarg" -variable, to be used for FileReadCmd autocommands that read/write the file -themselves. - -When reading stdin, first read the text in binary mode and then re-read it -with automatic selection of 'fileformat' and 'fileencoding'. This avoids -problems with not being able to rewind the file (e.g., when a line near the -end of the file ends in LF instead of CR-LF). -When reading text from stdin and the buffer is empty, don't mark it changed. -Allows exiting without trouble. - -Added an ID to many error messages. This will make it easier to find help for -a message. - -Insert mode: -- "CTRL-G j" and "CTRL-G k" can be used to insert in another line in the same - column. Useful for editing a table. -- Added Thesaurus completion with CTRL-X CTRL-T. (Vince Negri) -- Added the 'thesaurus' option, to use instead of 'dictionary' for thesaurus - completion. Added the 's' flag in 'complete'. -- Made CTRL-X CTRL-L in Insert mode use the 'complete' option. It now also - scans other loaded buffers for matching lines. -- CTRL-R now also works in Insert mode while doing completion with CTRL-X or - CTRL-N. (Neil Bird) -- When doing Insert mode completion, when completion is finished check for a - match with words from 'cinkeys' or 'indentkeys'. - -Performance: -- Made display updating more efficient. Insert/delete lines may be used for - all changes, also for undo/redo. -- The display is not redrawn when there is typeahead in Insert mode. Speeds - up CTRL-R a lot. -- Improved speed of screen output for 32 bit DOS version. (Vince Negri) -- When dragging with the mouse, there is a lookahead to skip mouse codes when - there is another one next. Makes dragging with the mouse a lot faster. -- Also a memory usage improvement: When calling u_save with a single line, - don't save it if the line was recently saved for the same undo already. -- When using a script that appends one character at a time, the amount of - allocated memory was growing steadily. Also when 'undolevels' is -1. - Caused by the line saved for "U" never to be freed. Now free an undo block - when it becomes empty. -- GUI and Dos32: Use a vertical scroll region, to make scrolling in a - vertically split window faster. No need to redraw the whole window. -- When scrolling isn't possible with terminal codes (e.g., for a vertically - split window) redraw from ScreenLines[]. That should be faster than going - through the lines with win_line(), especially when using syntax - highlighting. -- The Syntax menu is now pre-generated by a separate script. Makes loading - the menu 70% faster. This can halve the startup time of gvim. -- When doing ":help tag", don't open help.txt first, jump directly to the help - tag. It's faster and avoids an extra message. -- Win32: When a file name doesn't end in ".lnk" don't try resolving a - shortcut, it takes quite a bit of time. -- Don't update the mouse pointer shape while there are typeahead characters. -- Change META[] from a string into an array, avoids using strchr() on it. -- Don't clear the command line when adding characters, avoids that screen_fill - is called but doesn't do anything. - -Robustness: -- Unix: Check for running out of stack space when executing a regexp. Avoids - a nasty crash. Only works when the system supports running the signal - function on another stack. -- Disallow ":source <dirname>". On unix it's possible to read a directory, - does not make sense to use it as Vim commands. - -Security: -- When reading from or writing to a temporary file, check that it isn't a - symbolic link. Gives some protection against symlink attacks. -- When creating a backup file copy or a swap file, check for it already - existing to avoid a symlink attack. (Colin Phipps) -- Evaluating options which are an expression is done in a |sandbox|. If the - option was set by a modeline, it cannot cause damage. -- Use a secure way to generate temp file names: Create a private directory for - temp files. Used for Unix, MS-DOS and OS/2. -- 'makeef' can be empty, which means that an internally generated file name is - used. The old default was "/tmp/file", which is a security risk. - Writing 'makeef' in the current directory fails in a read-only directory and - causes trouble when using ":grep" on all files. Made the default empty for - all systems, so that a temp file is used. -- The command from a tags file is executed in the sandbox for better security. -- The Ruby, Tcl and Python interfaces cannot be used from the sandbox. They - might do dangerous things. Perl is still possible, but limited to the Safe - environment. (Donnie Smith) - -Syntax highlighting: -- Optimized the speed by caching the state stack all over the file, not just - the part being displayed. Required for folding. -- Added ":syntax sync fromstart": Always parse from the start of the file. -- Added the "display" argument for syntax items: use the item only when - displaying the result. Can make parsing faster for text that isn't going to - be displayed. -- When using CTRL-L, the cached states are deleted, to force parsing the text - again. -- Use elfhash algorithm for table of keywords. This should give a better - distribution and speedup keyword lookup. (Campbell) -- Also allow the "lc" leading context for skip and end patterns. (Scott - Bigham) -- Syntax items can have the "extend" argument to undo the effect of a - "keepend" argument of an item it is contained in. Makes it possible to have - some contained items extend a region while others don't. -- ":syntax clear" now deletes the b:current_syntax variable. That's logical, - since no syntax is defined after this command. -- Added ":syntax enable": switch on syntax highlighting without changing the - colors. This allows specifying the colors in the .vimrc file without the - need for a mysyntaxfile. -- Added ":syntax reset": reset the colors to their defaults. -- Added the "contains=TOP" and "contains=CONTAINED" arguments. Makes it - possible to define a transparent item that doesn't contain itself. -- Added a "containedin" argument to syntax items. Allows adding a contained - item to an existing item (e.g., to highlight a name in a comment). - -Modeless selection: -- When in the command-line window, use modeless selection in the other - windows. Makes it possible to copy visible text to the command-line window. -- Support modeless selection on the cmdline in a terminal. Previously it was - only possible for the GUI. -- Make double-right-click in modeless selection select a whole word. Single - right click doesn't use the word selection started by a double-left-click. - Makes it work like in Visual mode. -- The modeless selection no longer has an implied automatic copy to the - clipboard. It now obeys the 'a' and 'A' flags in 'guioptions' or - "autoselect" and "autoselectml" in 'clipboard'. -- Added the CTRL-Y command in Cmdline-mode to copy the modeless selection to - the clipboard. Also works at the hit-enter prompt and the more prompt. - Removed the mappings in runtime/mswin.vim for CTRL-Y and CTRL-Z in - cmdline-mode to be able to use CTRL-Y in the new way. - -Reduced the amount of stack space used by regmatch() to allow it to handle -complicated patterns on a longer text. - -'isfname' now includes '%' and '#'. Makes "vim dir\#file" work for MS-DOS. - -Added keypad special keys <kEnter>, <k0> - <k9>. When not mapped they behave -like the ASCII equivalent. (Ivan Wellesz and Vince Negri) -Recognize a few more xterm keys: <C-Right>, <C-Left>, <C-End>, <C-Home> - -Also trigger the BufUnload event when Vim is going to exit. Perhaps a script -needs to do some cleaning up. - -Expand expression in backticks: `={expr}`. Can be used where backtick -expansion is done. (Vince Negri) - -GUI: -- Added 'L' and 'R' flags in 'guioptions': Add a left or right scrollbar only - when there is a vertically split window. -- X11: When a color can't be allocated, use the nearest match from the - colormap. This avoids that black is used for many things. (Monish Shah) - Also do this for the menu and scrollbar, to avoid that they become black. -- Win32 and X11: Added 'mouseshape' option: Adjust the mouse pointer shape to - the current mode. (Vince Negri) -- Added the 'linespace' option: Insert a pixel line between lines. (Nam) -- Allow modeless selection (without moving the cursor) by keeping CTRL and - SHIFT pressed. (Ivan Wellesz) -- Motif: added toolbar. (Gordon Prieur) Also added tooltips. -- Athena: added toolbar and tooltips. (David Harrison -- based on Gordon - Prieur's work) -- Made the 'toolbar' option work for Athena and Motif. Can now switch between - text and icons on the fly. (David Harrison) -- Support menu separator lines for Athena. (David Harrison) -- Athena: Adjust the arrow pixmap used in a pullright menu to the size of the - font. (David Harrison) -- Win32: Added "c" flag to 'guifont' to be able to specify the charset. (Artem - Khodush) -- When no --enable-xim argument is given, automatically enable it when a X GUI - is used. Required for dead key support (and multi-byte input). -- After a file selection dialog, check that the edited files were not changed - or deleted. The Win32 dialog allows deleting and renaming files. -- Motif and Athena: Added support for "editres". (Marcin Dalecki) -- Motif and Athena: Added "menuFont" to be able to specify a font or fontset - for the menus. Can also be set with the "Menu" highlight group. Useful - when the locale is different from 'encoding'. (David Harrison) - When FONTSET_ALWAYS is defined, always use a fontset for the menus. Should - avoid trouble with changing from a font to a fontset. (David Harrison) -- Highlighting and font for the tooltips can be specified with the "Tooltip" - highlight group. (David Harrison) -- The Cmdline-mode menus can be used at the more-prompt. This mostly works - fine, because they start with a CTRL-C. The "Copy" menu works to copy the - modeless selection. Allows copying the output of ":set all" or ":intro" - without auto-selection. -- When starting the GUI when there is no terminal connected to stdout and - stderr, display error messages in a dialog. Previously they wouldn't be - displayed at all. -- Allow setting 'browsedir' to the name of a directory, to be used for the - file dialog. (Dan Sharp) -- b:browsefilter and g:browsefilter can be set to the filters used for the - file dialog. Supported for Win32 and Motif GUI. (Dan Sharp) - -X11: -- Support for the clipboard selection as register "+. When exiting or - suspending copy the selection to cut buffer 0. Should allow copy/paste with - more applications in a X11-standard way. (Neil Bird) -- Use the X clipboard in any terminal, not just in an xterm. - Added "exclude:" in 'clipboard': Specify a pattern to match against terminal - names for which no connection should be made to the X server. The default - currently work for FreeBSD and Linux consoles. -- Added a few messages for when 'verbose' is non-zero to show what happens - when trying to connect to the X server. Should help when trying to find out - why startup is slow. - -GTK GUI: (partly by Marcin Dalecki) -- With some fonts the characters can be taller than ascent + descent. E.g., - "-misc-fixed-*-*-*-*-18-*-*-*-*-*-iso10646-1". Add one to the character - cell height. -- Implement "no" value for 'winaltkeys': don't use Alt-Key as a menu shortcut, - when 'wak' changed after creating the menus. -- Setting 'wak' after the GUI started works. -- recycle text GC's to reduce communication. -- Adjust icon size to window manager. -- Cleanup in font handling. -- Replace XQueryColor with GDK calls. -- Gnome support. Detects Gnome in configure and uses different widgets. - Otherwise it's much like GTK. (Andy Kahn) - It is disabled by default, because it causes a few problems. -- Removed the special code to fork first and then start the GUI. Now use - _exit() instead of exit(), this works fine without special tricks. -- Dialogs sometimes appeared a bit far away. Position the dialogs inside - the gvim window. (Brent Verner) -- When dropping a file on Vim, remove extra slashes from the start of the - path. Also shorten the file name if possible. - -Motif: (Marcin Dalecki) -- Made the dialog layout better. -- Added find and find/replace dialogs. -- For the menus, change "iso-8859" to "iso_8859", Linux appears to need this. -- Added icon to dialogs, like for GTK. -- Use XPM bitmaps for the icon when possible. Use the Solaris XpmP.h include - file when it's available. -- Change the shadow of the toolbar items to get a visual feedback of it being - pressed on non-LessTif. -- Use gadgets instead of windows for some items for speed. - -Command line completion: -- Complete environment variable names. (Mike Steed) -- For ":command", added a few completion methods: "mapping", "function", - "expression" and "environment". -- When a function doesn't take arguments, let completion add () instead of (. - -For MS-DOS, MS-Windows and OS/2: Expand %VAR% environment variables like $VAR. -(Walter Briscoe) - -Redirect messages to the clipboard ":redir @*" and to the unnamed register -":redir @"". (Wall) - -":let @/ = ''" clears the search pattern, instead of setting it to an empty -string. - -Expression evaluation: -- "? :" can be used like in C. -- col("$") returns the length of the cursor line plus one. (Stephen P. Wall) -- Optional extra argument for match(), matchend() and matchstr(): Offset to - start looking for a match. -- Made third argument to strpart() optional. (Paul Moore, Zdenek Sekera) -- exists() can also be used to check for Ex commands and defined autocommands. -- Added extra argument to input(): Default text. -- Also set "v:errmsg" when using ":silent! cmd". -- Added the v:prevcount variable: v:count for the previous command. -- Added "v:progname", name with which Vim was started. (Vince Negri) -- In the verbose message about returning from a function, also show the return - value. - -Cscope: -- Added the cscope_connection() function. (Andy Kahn) -- ":cscope kill -1" kills all cscope connections. (Andy Kahn) -- Added the 'cscopepathcomp' option. (Scott Hauck) -- Added ":scscope" command, split window and execute Cscope command. (Jason - Duell) - -VMS: -- Command line arguments are always uppercase. Interpret a "-X" argument as - "-x" and "-/X" as "-X". -- Set 'makeprg' and 'grepprg' to meaningful defaults. (Zoltan Arpadffy) -- Use the X-clipboard feature and the X command server. (Zoltan Arpadffy) - -Macintosh: (Dany St-Amant) -- Allow a tags file to have CR, CR-LF or LF line separator. (Axel Kielhorn) -- Carbonized (while keeping non Carbon code) - (Some work "stolen" from Ammon Skidmore) -- Improved the menu item index handling (should be faster) -- Runtime commands now handle / in file name (MacOS 9 version) -- Added ":winpos" support. -- Support using "~" in file names for home directory. - -Options: -- When using set += or ^= , check for items used twice. Duplicates are - removed. (Vince Negri) -- When setting an option that is a list of flags, remove duplicate flags. -- If possible, use getrlimit() to set 'maxmemtot' and 'maxmem'. (Pina) -- Added "alpha" to 'nrformats': increment or decrement an alphabetic character - with CTRL-A and CTRL-X. -- ":set opt&vi" sets an option to its Vi default, ":set opt&vim" to its Vim - default. Useful to set 'cpo' to its Vim default without knowing what flags - that includes. -- 'scrolloff' now also applies to a long, wrapped line that doesn't fit in the - window. -- Added more option settings to the default menus. -- Updated the option window with new options. Made it a bit easier to read. - -Internal changes: -- Split line pointers in text part and attributes part. Allows for future - change to make attribute more than one byte. -- Provide a qsort() function for systems that don't have it. -- Changed the big switch for Normal mode commands into a table. This cleans - up the code considerably and avoids trouble for some optimizing compilers. -- Assigned a negative value to special keys, to avoid them being mixed up with - Unicode characters. -- Global variables expand_context and expand_pattern were not supposed to be - global. Pass them to ExpandOne() and all functions called by it. -- No longer use the global reg_ic flag. It caused trouble and in a few places - it was not set. -- Removed the use of the stuff buffer for "*", "K", CTRL-], etc. Avoids - problem with autocommands. -- Moved some code from ex_docmd.c to ex_cmds2.c. The file was getting too - big. Also moved some code from screen.c to move.c. -- Don't include the CRC table for encryption, generate it. Saves quite a bit - of space in the source code. (Matthias Kramm) -- Renamed multibyte.c to mbyte.c to avoid a problem with 8.3 filesystems. -- Removed the GTK implementation of ":findhelp", it now uses the - ToolBar.FindHelp menu entry. -- Renamed mch_windexit() to mch_exit(), mch_init() to mch_early_init() and - mch_shellinit() to mch_init(). - -Highlighting: -- In a ":highlight" listing, show "xxx" with the highlight color. -- Added support for xterm with 88 or 256 colors. The right color numbers will - be used for the name used in a ":highlight" command. (Steve Wall) -- Added "default" argument for ":highlight". When included, the command is - ignored if highlighting for the group was already defined. - All syntax files now use ":hi default ..." to allow the user to specify - colors in his vimrc file. Also, the "if did_xxx_syntax_inits" is not needed - anymore. This greatly simplifies using non-default colors for a specific - language. -- Adjusted colortest.vim: Included colors on normal background and reduced the - size by using a while loop. (Rafael Garcia-Suarez) -- Added the "DarkYellow" color name. Just to make the list of standard colors - consistent, it's not really a nice color to use. - -When an xterm is in 8-bit mode this is detected by the code returned for -|t_RV|. All key codes are automatically converted to their 8-bit versions. - -The OPT_TCAP_QUERY in xterm patch level 141 and later is used to obtain the -actual key codes used and the number of colors for t_Co. Only when |t_RV| is -also used. - -":browse set" now also works in the console mode. ":browse edit" will give an -error message. - -":bdelete" and ":bunload" only report the number of deleted/unloaded buffers -when more than 'report'. The message was annoying when deleting a buffer in a -script. - -Jump list: -- The number of marks kept in the jumplist has been increased from 50 to 100. -- The jumplist is now stored in the viminfo file. CTRL-O can be used to jump - to positions from a previous edit session. -- When doing ":split" copy the jumplist to the new window. - -Also set the '[ and '] marks for the "~" and "r" commands. These marks are -now always set when making a change with a Normal mode command. - -Python interface: Allow setting the width of a vertically split window. (John -Cook) - -Added "=word" and "=~word" to 'cinkeys' (also used in 'indentkeys'). - -Added "j1" argument in 'cinoptions': indent {} inside () for Java. (Johannes -Zellner) -Added the "l" flag in 'cinoptions'. (Anduin Withers) -Added 'C', 'U', 'w' and 'm' flags to 'cinoptions'. (Servatius Brandt) - -When doing ":wall" or ":wqall" and a modified buffer doesn't have a name, -mention its buffer number in the error message. - -":function Name" lists the function with line numbers. Makes it easier to -find out where an error happened. - -In non-blockwise Visual mode, "r" replaces all selected characters with the -typed one, like in blockwise Visual mode. - -When editing the last file in the argument list in any way, allow exiting. -Previously this was only possible when getting to that file with ":next" or -":last". - -Added the '1' flag to 'formatoptions'. (Vit Stradal) -Added 'n' flag in 'formatoptions': format a numbered list. - -Swap file: -- When a swap file already exists, and the user selects "Delete" at the - ATTENTION prompt, use the same ".swp" swapfile, to avoid creating a ".swo" - file which won't always be found. -- When giving the ATTENTION message and the date of the file is newer than the - date of swap file, give a warning about this. -- Made the info for an existing swap file a bit shorter, so that it still fits - on a 24 line screen. -- It was possible to make a symlink with the name of a swap file, linking to a - file that doesn't exist. Vim would then silently use another file (if open - with O_EXCL refuses a symlink). Now check for a symlink to exist. Also do - another check for an existing swap file just before creating it to catch a - symlink attack. - -The g CTRL-G command also works in Visual mode and counts the number of words. -(Chase Tingley) - -Give an error message when using 'shell' and it's empty. - -Added the possibility to include "%s" in 'shellpipe'. - -Added "uhex" value for 'display': show non-printable characters as <xx>. -Show unprintable characters with NonText highlighting, also in the command -line. - -When asked to display the value of a hidden option, tell it's not supported. - -Win32: -- When dropping a shortcut on gvim (.lnk file) edit the target, not the - shortcut itself. (Yasuhiro Matsumoto) -- Added C versions of the OpenWithVim and SendToVim programs. (Walter Briscoe) -- When 'shell' is "cmd" or "cmd.exe", set 'shellredir' to redirect stderr too. - Also check for the Unix shell names. -- When $HOMEDRIVE and $HOMEPATH are defined, use them to define $HOME. (Craig - Barkhouse) - -Win32 console version: -- Includes the user and system name in the ":version" message, when available. - It generates a pathdef.c file for this. (Jon Miner) -- Set the window icon to Vim's icon (only for Windows 2000). While executing - a shell command, modify the window title to show this. When exiting, - restore the cursor position too. (Craig Barkhouse) -- The Win32 console version can be compiled with OLE support. It can only - function as a client, not as an OLE server. - -Errorformat: -- Let "%p" in 'errorformat' (column of error indicated by a row of characters) - also accept a line of dots. -- Added "%v" item in 'errorformat': Virtual column number. (Dan Sharp) -- Added a default 'errorformat' value for VMS. (Jim Bush) - -The "p" command can now be used in Visual mode. It overwrites the selected -text with the contents of a register. - -Highlight the <> items in the intro message to make clear they are special. - -When using the "c" flag for ":substitute", allow typing "l" for replacing this -item and then stop: "last". - -When printing a verbose message about sourcing another file, print the line -number. - -When resizing the Vim window, don't use 'equalalways'. Avoids that making the -Vim window smaller makes split windows bigger. And it's what the docs say. - -When typing CTRL-D in Insert mode, just after an autoindent, then hitting CR -kept the remaining white space. Now made it work like BS: delete the -autoindent to avoid a blank non-empty line results. - -Added a GetHwnd() call to the OLE interface. (Vince Negri) - -Made ":normal" work in an event handler. Useful when dropping a file on Vim -and for CursorHold autocommands. - -For the MS-Windows version, don't change to the directory of the file when a -slash is used instead of a backslash. Explorer should always use a backslash, -the user can use a slash when typing the command. - -Timestamps: -- When a buffer was changed outside of Vim and regaining focus, give a dialog - to allow the user to reload the file. Now also for other GUIs than - MS-Windows. And also used in the console, when compiled with dialog - support. -- Inspect the file contents to find out if it really changed, ignore - situations where only the time stamp changed (e.g., checking the file out - from CVS). -- When checking the timestamp, first check if the file size changed, to avoid - a file compare then. Makes it quicker for large (log) files that are - appended to. -- Don't give a warning for a changed or deleted file when 'buftype' is set. -- No longer warn for a changed directory. This avoids that the file explorer - produces warnings. -- Checking timestamps is only done for buffers that are not hidden. These - will be checked when they become unhidden. -- When checking for a file being changed outside of Vim, also check if the - file permissions changed. When the file contents didn't change but the - permissions did, give a warning. -- Avoid checking too often, otherwise the dialog keeps popping up for a log - file that steadily grows. - -Mapping <M-A> when 'encoding' is "latin1" and then setting 'encoding' to -"utf-8" causes the first byte of a multi-byte to be mapped. Can cause very -hard to find problems. Disallow mapping part of a multi-byte character. - -For ":python" and ":tcl" accept an in-line script. (Johannes Zellner) -Also for ":ruby" and ":perl". (Benoit Cerrina) - -Made ":syn include" use 'runtimepath' when the file name is not a full path. - -When 'switchbuf' contains "split" and the current window is empty, don't split -the window. - -Unix: Catch SIGPWR to preserve files when the power is about to go down. - -Sniff interface: (Anton Leherbauer) -- fixed windows code, esp. the event handling stuff -- adaptations for sniff 4.x ($SNIFF_DIR4) -- support for adding sniff requests at runtime - -Support the notation <A-x> as an alias for <M-x>. This logical, since the Alt -key is used. - -":find" accepts a count, which means that the count'th match in 'path' is -used. - -":ls" and ":buffers" output shows modified/readonly/modifiable flag. When a -buffer is active show "a" instead of nothing. When a buffer isn't loaded -show nothing instead of "-". - -Unix install: -- When installing the tools, set absolute paths in tools scripts efm_perl.pl - and mve.awk. Avoids that the user has to edit these files. -- Install Icons for KDE when the directories exist and the icons do not exist - yet. - -Added has("win95"), to be able to distinguish between MS-Windows 95/98/ME and -NT/2000/XP in a Vim script. - -When a ":cd" command was typed, echo the new current directory. (Dan Sharp) - -When using ":winpos" before the GUI window has been opened, remember the -values until it is opened. - -In the ":version" output, add "/dyn" for features that are dynamically loaded. -This indicates the feature may not always work. - -On Windows NT it is possible that a directory is read-only, but a file can be -deleted. When making a backup by renaming the file and 'backupdir' doesn't -use the current directory, this causes the original file to be deleted, -without the possibility to create a new file. Give an extra error message -then to warn to user about this. - -Made CTRL-R CTRL-O at the command line work like CTRL-R CTRL-R, so that it's -consistent with Insert mode. - -============================================================================== -COMPILE TIME CHANGES *compile-changes-6* - -All generated files have been moved out of the "src" directory. This makes it -easy to see which files are not edited by hand. The files generated by -configure are now in the "src/auto" directory. For Unix, compiled object -files go in the objects directory. - -The source archive was over the 1.4M floppy limit. The archives are now split -up into two runtime and two source archives. Also provide a bzip2 compressed -archive that contains all the sources and runtime files. - -Added "reconfig" as a target for make. Useful when changing some of the -arguments that require flushing the cache, such as switching from GTK to -Motif. Adjusted the meaning of GUI_INC_LOC and GUI_LIB_LOC to be consistent -over different GUIs. - -Added src/README.txt to give an overview of the main parts of the source code. - -The Unix Makefile now fully supports using $(DESTDIR) to install to a specific -location. Replaces the manual setting of *ENDLOC variables. - -Added the possibility for a maintainer of a binary version to include his -e-mail address with the --with-compiledby configure argument. - -Included features are now grouped in "tiny", "small", "normal", "big" and -"huge". This replaces "min-features" and "max-features". Using "tiny" -disables multiple windows for a really small Vim. - -For the tiny version or when FEAT_WINDOWS is not defined: Firstwin and lastwin -are equal to curwin and don't use w_next and w_prev. - -Added the +listcmds feature. Can be used to compile without the Vim commands -that manipulate the buffer list and argument list (the buffer list itself is -still there, can't do without it). - -Added the +vreplace feature. It is disabled in the "small" version to avoid -that the 16 bit DOS version runs out of memory. - -Removed GTK+ support for versions older than 1.1.16. - -The configure checks for using PTYs have been improved. Code taken from a -recent version of screen. - -Added configure options to install Vim, Ex and View under another name (e.g., -vim6, ex6 and view6). - -Added "--with-global-runtime" configure argument. Allows specifying the -global directory used in the 'runtimepath' default. - -Made enabling the SNiFF+ interface possible with a configure argument. - -Configure now always checks /usr/local/lib for libraries and -/usr/local/include for include files. Helps finding the stuff for iconv() and -gettext(). - -Moved the command line history stuff into the +cmdline_hist feature, to -exclude the command line history from the tiny version. - -MS-Windows: Moved common functions from Win16 and Win32 to os_mswin.c. Avoids -having to change two files for one problem. (Vince Negri) - -Moved common code from gui_w16.c and gui_w32.c to gui_w48.c (Vince Negri) - -The jumplist is now a separate feature. It is disabled for the "small" -version (16 bit MS-DOS). - -Renamed all types ending in _t to end in _T. Avoids potential problems with -system types. - -Added a configure check for X11 header files that implicitly define the return -type to int. (Steve Wall) - -"make doslang" in the top directory makes an archive with the menu and .mo -files for Windows. This uses the files generated on Unix, these should work -on MS-Windows as well. - -Merged a large part of os_vms.c with os_unix.c. The code was duplicated in -the past which made maintenance more work. (Zoltan Arpadffy) - -Updated the Borland C version 5 Makefile: (Dan Sharp) -- Fixed the Perl build -- Added python and tcl builds -- Added dynamic perl and dynamic python builds -- Added uninstal.exe build -- Use "yes" and "no" for the options, like in Make_mvc.mak. - -Win32: Merged Make_gvc.mak and Make_ovc.mak into one file: Make_ivc.mak. It's -much smaller, many unnecessary text has been removed. (Walter Briscoe) -Added Make_dvc.mak to be able to debug exe generated with Make_mvc.mak in -MS-Devstudio. (Walter Briscoe) - -MS-Windows: The big gvim.exe, which includes OLE, now also includes -dynamically loaded Tcl, Perl and Python. This uses ActivePerl 5.6.1, -ActivePython 2.1.1 and ActiveTCL 8.3.3 - -Added AC_EXEEXT to configure.in, to check if the executable needs ".exe" for -Cygwin or MingW. Renamed SUFFIX to EXEEXT in Makefile. - -Win32: Load comdlg32.dll delayed for faster startup. Only when using VC 6. -(Vipin Aravind) - -Win32: When compiling with Borland, allow using IME. (Yasuhiro Matsumoto) - -Win32: Added Makefile for Borland 5 to compile gvimext.dll. (Yasuhiro -Matsumoto) - -============================================================================== -BUG FIXES *bug-fixes-6* - -When checking the command name for "gvim", "ex", etc. ignore case. Required -for systems where case is ignored in command names. - -Search pattern "[a-c-e]" also matched a 'd' and didn't match a '-'. - -When double-clicking in another window, wasn't recognized as double click, -because topline is different. Added set_mouse_topline(). - -The BROKEN_LOCALE check was broken. (Marcin Dalecki) - -When "t_Co" is set, the default colors remain the same, thus wrong. Reset the -colors after changing "t_Co". (Steve Wall) - -When exiting with ":wqall" the messages about writing files could overwrite -each other and be lost forever. - -When starting Vim with an extremely long file name (around 1024 characters) it -would crash. Added a few checks to avoid buffer overflows. - -CTRL-E could get stuck in a file with very long lines. - -":au syntax<Tab>" expanded event names while it should expand groups starting -with "syntax". - -When expanding a file name caused an error (e.g., for <amatch>) it was -produced even when inside an "if 0". - -'cindent' formatted C comments differently from what the 'comments' option -specified. (Steve Wall) - -Default for 'grepprg' didn't include the file name when only grepping in one -file. Now /dev/null has been added for Unix. - -Opening the option window twice caused trouble. Now the cursor goes to the -existing option window. - -":sview" and ":view" didn't set 'readonly' for an existing buffer. Now do set -'readonly', unless the buffer is also edited in another window. - -GTK GUI: When 'guioptions' excluded 'g', the more prompt caused the toolbar -and menubar to disappear and resize the window (which clears the text). -Now always grey-out the toplevel menus to avoid that the menubar changes size -or disappears. - -When re-using the current buffer for a new buffer, buffer-local variables were -not deleted. - -GUI: when 'scrolloff' is 0 dragging the mouse above the window didn't cause a -down scroll. Now pass on a mouse event with mouse_row set to -1. - -Win32: Console version didn't work on telnet, because of switching between two -console screens. Now use one console screen and save/restore the contents -when needed. (Craig Barkhouse) - -When reading a file the magic number for encryption was included in the file -length. (Antonio Colombo) - -The quickfix window contained leading whitespace and NULs for multi-line -messages. (David Harrison) - -When using cscope, redundant tags were removed. This caused a numbering -problem, because they were all listed. Don't remove redundant cscope tags. -(David Bustos). - -Cscope: Test for which matches are in the current buffer sometimes failed, -causing a jump to another match than selected. (David Bustos) - -Win32: Buffer overflow when adding a charset name in a font. - -'titlestring' and 'iconstring' were evaluating an expression in the current -context, which could be a user function, which is a problem for local -variables vs global variables. - -Win32 GUI: Mapping <M-F> didn't work. Now handle SHIFT and CTRL in -_OnSysChar(). - -Win32 GUI: (on no file), :vs<CR>:q<CR> left a trail of pixels down the middle. -Could also happen for the ruler. screen_puts() didn't clear the right char in -ScreenLines[] for the bold trick. - -Win32: ":%!sort|uniq" didn't work, because the input file name touches the -"|". Insert a space before the "|". - -OS/2: Expanding wildcards included non-existing files. Caused ":runtime" to -fail, which caused syntax highlighting to fail. - -Pasting a register containing CTRL-R on the command line could cause an -endless loop that can't be interrupted. Now it can be stopped with CTRL-C. - -When 'verbose' is set, a message for file read/write could overwrite the -previous message. -When 'verbose' is set, the header from ":select" was put after the last -message. Now start a new line. - -The hit-enter prompt reacted to the response of the t_RV string, causing -messages at startup to disappear. - -When t_Co was set to 1, colors were still used. Now only use color when t_Co -> 1. - -Listing functions with ":function" didn't quit when 'q' or ':' was typed at -the more prompt. - -Use mkstemp() instead of mktemp() when it's available, avoids a warning for -linking on FreeBSD. - -When doing Insert mode completion it's possible that b_sfname is NULL. Don't -give it to printf() for the "Scanning" message. - -":set runtimepath-=$VIMRUNTIME" didn't work, because expansion of wildcards -was done after trying to remove the string. Now for ":set opt+=val" and ":set -opt-=val" the expansion of wildcards is done before adding or removing "val". - -Using CTRL-V with the "r" command with a blockwise Visual selection inserted a -CTRL-V instead of getting a special character. - -Unix: Changed the order of libraries: Put -lXdmcp after -lX11 and -lSM -lICE -after -lXdmcp. Should fix link problem on HP-UX 10.20. - -Don't remove the last "-lm" from the link line. Vim may link but fail later -when the GUI starts. - -When the shell returns with an error when trying to expand wildcards, do -include the pattern when the "EW_NOTFOUND" flag was set. -When expanding wildcards with the shell fails, give a clear error message -instead of just "1 returned". - -Selecting a Visual block, with the start partly on a Tab, deleting it leaves -the cursor too far to the left. Causes "s" to work in the wrong position. - -Pound sign in normal.c caused trouble on some compilers. Use 0xA3 instead. - -Warning for changing a read-only file wasn't given when 'insertmode' was set. - -Win32: When 'shellxquote' is set to a double quote (e.g., using csh), ":!start -notepad file" doesn't work. Remove the double quotes added by 'shellxquote' -when using ":!start". (Pavol Juhas) - -The "<f-args>" argument of ":command" didn't accept Tabs for white space. -Also, don't add an empty argument when there are trailing blanks. - -":e test\\je" edited "test\je", but ":next test\\je" edited "testje". -Backslashes were removed one time too many for ":next". - -VMS: "gf" didn't work properly. Use vms_fixfilename() to translate the file -name. (Zoltan Arpadffy) - -After ":hi Normal ctermbg=black ctermfg=white" and suspending Vim not all -characters are redrawn with the right background. - -When doing "make test" without +eval or +windows feature, many tests failed. -Now have test1 generate a script to copy the correct output, so that a test -that doesn't work is skipped. - -On FreeBSD the Perl interface added "-lc" to the link command and Python added -"-pthread". These two don't work together, because the libc_r library should -be used. Removed "-lc" from Perl, it should not be needed. -Also: Add "-pthread" to $LIBS, so that the checks for functions is done with -libc_r. Sigaltstack() appears to be missing from libc_r. - -The Syntax sub-menus were getting too long, reorganized them and added another -level for some languages. - -Visual block "r"eplace didn't work well when a Tab is partly included. -(Matthias Kramm) - -When yanking a Visual block, where some lines end halfway the block, putting -the text somewhere else doesn't insert a block. Padd with spaces for missing -characters. Added "y_width" to struct yankreg. (Matthias Kramm) - -If a substitute string has a multibyte character after a backslash only the -first byte of it was skipped. (Muraoka Taro) - -Win32: Numeric keypad keys were missing from the builtin termcap entry. - -When a file was read-only ":wa!" didn't force it to be written. (Vince Negri) - -Amiga: A file name starting with a colon was considered absolute but it isn't. -Amiga: ":pwd" added a slash when in the root of a drive. - -Don't let 'ttymouse' default to "dec" when compiled with dec mouse support. -It breaks the gpm mouse (Linux console). - -The prototypes for the Perl interface didn't work for threaded Perl. Added a -sed command to remove the prototypes from proto/if_perl.pro and added them -manually to if_perl.xs. - -When ":w!" resets the 'readonly' option the title and status lines were not -updated. - -":args" showed the current file when the argument list was empty. Made this -work like Vi: display nothing. - -"99:<C-U>echo v:count" echoed "99" in Normal mode, but 0 in Visual mode. -Don't set v:count when executing a stuffed command. - -Amiga: Got a requester for "home:" because it's in the default runtime path. -Don't bring up a requester when searching for a file in 'path', sourcing the -.vimrc file or using ":runtime". - -Win16 and Win32: Considered a file "\path\file" absolute. Can cause the same -file to appear as two different buffers. - -Win32: Renaming a file to an empty string crashed Vim. Happened when using -explorer.vim and hitting ESC at the rename prompt. - -Win32: strftime() crashed when called with a "-1" value for the time. - -Win32 with Borland compiler: mch_FullName() didn't work, caused tag file not -to be found. - -Cscope sometimes jumped to the wrong tag. (David Bustos) - -OS/2: Could not find the tags file. mch_expand_wildcards() added another -slash to a directory name. - -When using ">>" the `] mark was not in the last column. - -When Vim was compiled without menu support, filetype.vim was still trying to -source the menu.vim script. (Rafael Garcia-Suarez) - -":ptag" added an item to the tag stack. - -Win32 IME: "gr" didn't use IME mode. - -In the "vim --help" message the term "options" was used for arguments. That's -confusing, call them "arguments". - -When there are two windows, and a BufUnload autocommand for closing window #1 -closed window #2, Vim would crash. - -When there is a preview window and only one other window, ":q" wouldn't exit. - -In Insert mode, when cancelling a digraph with ESC, the '?' wasn't removed. - -On Unix glob(".*") returned "." and "..", on Windows it didn't. On Windows -glob("*") also returned files starting with a dot. Made this work like Unix -on all systems. - -Win32: Removed old code to open a console. Vimrun is now used and works fine. - -Compute the room needed by the intro message accurately, so that it also fits -on a 25 line console. (Craig Barkhouse) - -":ptnext" was broken. Now remember the last tag used in the preview window -separately from the tagstack. - -Didn't check for "-display" being the last argument. (Wichert Akkerman) - -GTK GUI: When starting "gvim" under some conditions there would be an X error. -Don't replace the error handler when creating the xterm clipboard. (Wichert -Akkerman) - -Adding a space after a help tag caused the tag not to be found. E.g., ":he -autoindent ". - -Was trying to expand a URL into a full path name. On Windows this resulted in -the current directory to be prepended to the URL. Added vim_isAbsName() and -vim_FullName() to avoid that various machine specific functions do it -differently. - -":n *.c" ":cd .." ":n" didn't use the original directory of the file. Vi only -does it for the current file (looks like a bug). Now remember the buffer used -for the entry in the argument list and use it's name (adjusted when doing -":cd"), unless it's deleted. - -When inserting a special key as its name ("<F8>" as four characters) after -moving around in Insert mode, undo didn't work properly. - -Motif GUI: When using the right mouse button, for some people gvim froze for -a couple of seconds (Motif 1.2?). This doesn't happen when there is no Popup -menu. Solved by only creating a popup menu when 'mousemodel' is "popup" or -"popup_setpos". (David Harrison) - -Motif: When adding many menu items, the "Help" menu disappeared but the -menubar didn't wrap. Now manually set the menubar height. - -When using <BS> in Insert mode to remove a line break, or using "J" to join -lines, the cursor could end up halfway a multi-byte character. (Muraoka Taro) - -Removed defining SVR4 in configure. It causes problems for some X header -files and doesn't appear to be used anywhere. - -When 'wildignore' is used, 'ignorecase' for a tag match was not working. - -When 'wildignore' contains "*~" it was impossible to edit a file ending in a -"~". Now don't recognize a file ending in "~" as containing wildcards. - -Disabled the mouse code for OS/2. It was not really used. - -":mksession" always used the full path name for a buffer, also when the short -name could be used. -":mkvimrc" and ":mksession" didn't save 'wildchar' and 'pastetoggle' in such a -way that they would be restored. Now use the key name if possible, this is -portable. - -After recovering a file and abandoning it, an ":edit" command didn't give the -ATTENTION prompt again. Would be useful to be able to delete the file in an -easy way. Reset the BF_RECOVERED flag when unloading the buffer. - -histdel() could match or ignore case, depending on what happened before it. -Now always match case. - -When a window size was specified when splitting a window, it would still get -the size from 'winheight' or 'winwidth' if it's larger. - -When using "append" or "insert" inside a function definition, a line starting -with "function" or "endfunction" caused confusion. Now recognize the commands -and skip lines until a ".". - -At the end of any function or sourced file need_wait_return could be reset, -causing messages to disappear when redrawing. - -When in a while loop the line number for error messages stayed fixed. Now the -line number is remembered in the while loop. - -"cd c:/" didn't work on MS-DOS. mch_isdir() removed a trailing slash. - -MS-Windows: getftime() didn't work when a directory had a trailing slash or -backslash. Didn't show the time in the explorer because of this. - -When doing wildcard completion, a directory "a/" sorted after "a-b". Now -recognize path separators when sorting files. - -Non-Unix systems: When editing "c:/dir/../file" and "c:/file" they were -created as different buffers, although it's the same file. Expand to a full -file name also when an absolute name contains "..". - -"g&" didn't repeat the last substitute properly. - -When 'clipboard' was set to "unnamed", a "Y" command would not write to "0. -Now make a copy of register 0 to the clipboard register. - -When the search pattern matches in many ways, it could not always be -interrupted with a CTRL-C. And CTRL-C would have to be hit once for every -line when 'hlsearch' is on. -When 'incsearch' is on and interrupting the search for a match, don't abandon -the command line. - -When turning a directory name into a full path, e.g., with fnamemodify(), -sometimes a slash was added. Make this consistent: Don't add a slash. - -When a file name contains a "!", using it in a shell command will cause -trouble: ":!cat %". Escape the "!" to avoid that. Escape it another time -when 'shell' contains "sh". - -Completing a file name that has a tail that starts with a "~" didn't work: -":e view/~<Tab>". - -Using a ":command" argument that contains < and > but not for a special -argument was not skipped properly. - -The DOS install program: On Win2000 the check for a vim.exe or gvim.exe in -$PATH didn't work, it always found it in the current directory. -Rename the vim.exe in the current dir to avoid this. (Walter Briscoe) - -In the MS-DOS/Windows install program, use %VIM% instead of an absolute path, -so that moving Vim requires only one change in the batch file. - -Mac: mch_FullName() changed the "fname" argument and didn't always initialize -the buffer. - -MS-DOS: mch_FullName() didn't fix forward/backward slashes in an absolute file -name. - -"echo expand("%:p:h")" with an empty file name removed one directory name on -MS-DOS. For Unix, when the file name is a directory, the directory name was -removed. Now make it consistent: "%:p" adds a path separator for all systems, -but no path separator is added in other situations. - -Unix: When checking for a CTRL-C (could happen any time) and there is an X -event (e.g., clipboard updated) and there is typeahead, Vim would hang until a -character was typed. - -MS-DOS, MS-Windows and Amiga: expanding "$ENV/foo" when $ENV ends in a colon, -had the slash removed. - -":he \^=" gave an error for using \_. ":he ^=" didn't find tag :set^=. Even -"he :set^=" didn't find it. - -A tags file name "D:/tags" was used as file "tags" in "D:". That doesn't work -when the current path for D: isn't the root of the drive. - -Removed calls to XtInitializeWidgetClass(), they shouldn't be necessary. - -When using a dtterm or various other color terminals, and the Normal group has -been set to use a different background color, the background wouldn't always -be displayed with that color. Added check for "ut" termcap entry: If it's -missing, clearing the screen won't give us the current background color. Need -to draw each character instead. Vim now also works when the "cl" (clear -screen) termcap entry is missing. - -When repeating a "/" search command with a line offset, the "n" did use the -offset but didn't make the motion linewise. Made "d/pat/+2" and "dn" do the -same. - -Win32: Trying to use ":tearoff" for a menu that doesn't exist caused a crash. - -OpenPTY() didn't work on Sequent. Add a configure check for getpseudotty(). - -C-indenting: Indented a line starting with ")" with the matching "(", but not -a line starting with "x)" looks strange. Also compute the indent for aligning -with items inside the () and use the lowest indent. - -MS-DOS and Windows: ":n *.vim" also matched files ending in "~". -Moved mch_expandpath() from os_win16.c and os_msdos.c to misc1.c, they are -equal. - -Macintosh: (Dany St-Amant) -- In Vi-compatible mode didn't read files with CR line separators. -- Fixed a bug in the handling of Activate/Deactivate Event -- Fixed a bug in gui_mch_dialog (using wrong pointer) - -Multibyte GDK XIM: While composing a multibyte-word, if user presses a -mouse button, then the word is removed. It should remain and composing end. -(Sung-Hyun Nam) - -MS-DOS, MS-Windows and OS/2: When reading from stdin, automatic CR-LF -conversion by the C library got in the way of detecting a "dos" 'fileformat'. - -When 'smartcase' is set, patterns with "\S" would also make 'ignorecase' -reset. - -When clicking the mouse in a column larger than 222, it moved to the first -column. Can't encode a larger number in a character. Now limit the number to -222, don't jump back to the first column. - -GUI: In some versions CSI would cause trouble, either when typed directly or -when part of a multi-byte sequence. - -When using multibyte characters in a ":normal" command, a trailing byte that -is CSI or K_SPECIAL caused problems. - -Wildmenu didn't handle multi-byte characters. - -":sleep 10" could not be interrupted on Windows, while "gs" could. Made them -both work the same. - -Unix: When waiting for a character is interrupted by an X-windows event (e.g., -to obtain the contents of the selection), the wait time would not be honored. -A message could be overwritten quickly. Now compute the remaining waiting -time. - -Windows: Completing "\\share\c$\S" inserted a backslash before the $ and then -the name is invalid. Don't insert the backslash. - -When doing an auto-write before ":make", IObuff was overwritten and the wrong -text displayed later. - -On the Mac the directories "c:/tmp" and "c:/temp" were used in the defaults -for 'backupdir' and 'directory', they don't exist. - -The check for a new file not to be on an MS-DOS filesystem created the file -temporarily, which can be slow. Don't do this if there is another check for -the swap file being on an MS-DOS filesystem. - -Don't give the "Changing a readonly file" warning when reading from stdin. - -When using the "Save As" menu entry and not entering a file name, would get an -error message for the trailing ":edit #". Now only do that when the -alternate file name was changed. - -When Vim owns the X11 selection and is being suspended, an application that -tries to use the selection hangs. When Vim continues it could no longer -obtain the selection. Now give up the selection when suspending. - -option.h and globals.h were included in some files, while they were already -included in vim.h. Moved the definition of EXTERN to vim.h to avoid doing it -twice. - -When repeating an operator that used a search pattern and the search pattern -contained characters that have a special meaning on the cmdline (e.g., CTRL-U) -it didn't work. - -Fixed various problems with using K_SPECIAL (0x80) and CSI (0x9b) as a byte in -a (multibyte) character. For example, the "r" command could not be repeated. - -The DOS/Windows install program didn't always work from a directory with a -long filename, because $VIM and the executable name would not have the same -path. - -Multi-byte: -- Using an any-but character range [^x] in a regexp didn't work for UTF-8. - (Muraoka Taro) -- When backspacing over inserted characters in Replace mode multi-byte - characters were not handled correctly. (Muraoka Taro) -- Search commands "#" and "*" didn't work with multibyte characters. (Muraoka - Taro) -- Word completion in Insert mode didn't work with multibyte characters. - (Muraoka Taro) -- Athena/Motif GUI: when 'linespace' is non-zero the cursor would be drawn too - wide (number of bytes instead of cell width). -- When changing 'encoding' to "euc-jp" and inserting a character Vim would - crash. -- For euc-jp characters positioning the cursor would sometimes be wrong. - Also, with two characters with 0x8e leading byte only the first one would be - displayed. -- When using DYNAMIC_ICONV on Win32 conversion might fail because of using the - wrong error number. (Muraoka Taro) -- Using Alt-x in the GUI while 'encoding' was set to "utf-8" didn't produce - the right character. -- When using Visual block selection and only the left halve of a double-wide - character is selected, the highlighting continued to the end of the line. -- Visual-block delete didn't work properly when deleting the right halve of a - double-wide character. -- Overstrike mode for the cmdline replaced only the first byte of a multibyte - character. -- The cursor in Replace mode (also in the cmdline) was to small on a - double-wide character. -- When a multibyte character contained a 0x80 byte, it didn't work (was using - a CSI byte instead). (Muraoka Taro) -- Wordwise selection with the mouse didn't work. -- Yanking a modeless selection of multi-byte characters didn't work. -- When 'selection' is "exclusive", selecting a word that ends in a multi-byte - character used wrong highlighting for the following character. - -Win32 with Make_mvc.mak: Didn't compile for debugging. (Craig Barkhouse) - -Win32 GUI: When "vimrun.exe" is used to execute an external command, don't -give a message box with the return value, it was already printed by vimrun. -Also avoid printing the return value of the shell when ":silent!" is used. - -Win32: selecting a lot of text and using the "find/replace" dialog caused a -crash. - -X11 GUI: When typing a character with the 8th bit set and the Meta/Alt -modifier, the modifier was removed without changing the character. - -Truncating a message to make it fit on the command line, using "..." for the -middle, didn't always compute the space correctly. - -Could not imap <C-@>. Now it works like <Nul>. - -VMS: -- Fixed a few things for VAXC. os_vms_fix.com had some strange CTRL-M - characters. (Zoltan Arpadffy and John W. Hamill) -- Added VMS-specific defaults for the 'isfname' and 'isprint' options. - (Zoltan Arpadffy) -- Removed os_vms_osdef.h, it's no longer used. - -The gzip plugin used a ":normal" command, this doesn't work when dropping a -compressed file on Vim. - -In very rare situations a binary search for a tag would fail, because an -uninitialized value happens to be half the size of the tag file. (Narendran) - -When using BufEnter and BufLeave autocommands to enable/disable a menu, it -wasn't updated right away. - -When doing a replace with the "c"onfirm flag, the cursor was positioned after -the ruler, instead of after the question. With a long replacement string the -screen could scroll up and cause a "more" prompt. Now the message is -truncated to make it fit. - -Motif: The autoconf check for the Xp library didn't work. - -When 'verbose' is set to list lines of a sourced file, defining a function -would reset the counter used for the "more" prompt. - -In the Win32 find/replace dialog, a '/' character caused problems. Escape it -with a backslash. - -Starting a shell with ":sh" was different from starting a shell for CTRL-Z -when suspending doesn't work. They now work the same way. - -Jumping to a file mark while in a changed buffer gave a "mark not set" error. - -":execute histget("cmd")" causes an endless loop and crashed Vim. Now catch -all commands that cause too much recursiveness. - -Removed "Failed to open input method" error message, too many people got this -when they didn't want to use a XIM. - -GUI: When compiled without the +windows feature, the scrollbar would start -below line one. - -Removed the trick with redefining character class functions from regexp.c. - -Win32 GUI: Find dialog gives focus back to main window, when typing a -character mouse pointer is blanked, it didn't reappear when moving it in the -dialog window. (Vince Negri) - -When recording and typing a CTRL-C, no character was recorded. When in Insert -mode or cancelling half a command, playing back the recorded sequence wouldn't -work. Now record the CTRL-C. - -When the GUI was started, mouse codes for DEC and netterm were still checked -for. - -GUI: When scrolling and 'writedelay' is non-zero, the character under the -cursor was displayed in the wrong position (one line above/below with -CTRL-E/CTRL-Y). - -A ":normal" command would reset the 'scrollbind' info. Causes problems when -using a ":normal" command in an autocommand for opening a file. - -Windows GUI: a point size with a dot, like "7.5", wasn't recognized. (Muraoka -Taro) - -When 'scrollbind' wasn't set would still remember the current position, -wasting time. - -GTK: Crash when 'shell' doesn't exist and doing":!ls". Use _exit() instead of -exit() when the child couldn't execute the shell. - -Multi-byte: -- GUI with double-byte encoding: a mouse click in left halve of double-wide - character put the cursor in previous char. -- Using double-byte encoding and 'selection' is "exclusive": "vey" and "^Vey" - included the character after the word. -- When using a double-byte encoding and there is a lead byte at the end of the - line, the preceding line would be displayed. "ga" also showed wrong info. -- "gf" didn't include multi-byte characters before the cursor properly. - (Muraoka Taro) - -GUI: The cursor was sometimes not removed when scrolling. Changed the policy -from redrawing the cursor after each call to gui_write() to only update it at -the end of update_screen() or when setting the cursor position. Also only -update the scrollbars at the end of update_screen(), that's the only place -where the window text may have been scrolled. - -Formatting "/*<Tab>long text", produced "* <Tab>" in the next line. Now -remove the space before the Tab. -Formatting "/*<Tab> long text", produced "* <Tab> long text" in the next -line. Now keep the space after the Tab. - -In some places non-ASCII alphabetical characters were accepted, which could -cause problems. For example, ":X" (X being such a character). - -When a pattern matches the end of the line, the last character in the line was -highlighted for 'hlsearch'. That looks wrong for "/\%3c". Now highlight the -character just after the line. - -Motif: If a dialog was closed by clicking on the "X" of the window frame Vim -would no longer respond. - -When using CTRL-X or CTRL-A on a number with many leading zeros, Vim would -crash. (Matsumoto) - -When 'insertmode' is set, the mapping in mswin.vim for CTRL-V didn't work in -Select mode. Insert mode wasn't restarted after overwriting the text. -Now allow nesting Insert mode with insert and change commands. CTRL-O -cwfoo<Esc> now also works. - -Clicking with the right mouse button in another window started Visual mode, -but used the start position of the current window. Caused ml_get errors when -the line number was invalid. Now stay in the same window. - -When 'selection' is "exclusive", "gv" sometimes selected one character fewer. - -When 'comments' contains more than one start/middle/end triplet, the optional -flags could be mixed up. Also didn't align the end with the middle part. - -Double-right-click in Visual mode didn't update the shown mode. - -When the Normal group has a font name, it was never used when starting up. -Now use it when 'guifont' and 'guifontset' are empty. -Setting a font name to a highlight group before the GUI was started didn't -work. - -"make test" didn't use the name of the generated Vim executable. - -'cindent' problems: -- Aligned with an "else" inside a do-while loop for a line below that loop. - (Meikel Brandmeyer) -- A line before a function would be indented even when terminated with a - semicolon. (Meikel Brandmeyer) -- 'cindent' gave too much indent to a line after a "};" that ends an array - init. -- Support declaration lines ending in "," and "\". (Meikel Brandmeyer) -- A case statement inside a do-while loop was used for indenting a line after - the do-while loop. (Meikel Brandmeyer) -- When skipping a string in a line with one double quote it could continue in - the previous line. (Meikel Brandmeyer) - -When 'list' is set, 'hlsearch' didn't highlight a match at the end of the -line. Now highlight the '$'. - -The Paste menu item in the menu bar, the popup menu and the toolbar were all -different. Now made them all equal to how it was done in mswin.vim. - -st_dev can be smaller than "unsigned". The compiler may give an overflow -warning. Added a configure check for dev_t. - -Athena: closing a confirm() dialog killed Vim. - -Various typos in the documentation. (Matt Dunford) - -Python interface: The definition of _DEBUG could cause trouble, undefine it. -The error message for not being able to load the shared library wasn't -translated. (Muraoka Taro) - -Mac: (Dany St-Amant and Axel Kielhorn) -- Several fixes. -- Vim was eating 80% of the CPU time. -- The project os_mac.pbxproj didn't work, Moved it to a subdirectory. -- Made the menu priority work for the menubar. -- Fixed a problem with dragging the scrollbar. -- Cleaned up the various #ifdefs. - -Unix: When catching a deadly signal and we keep getting one use _exit() to -exit in a quick and dirty way. - -Athena menu ordering didn't work correctly. (David Harrison) - -A ":make" or ":grep" command with a long argument could cause a crash. - -Doing ":new file" and using "Quit" for the ATTENTION dialog still opened a new -window. - -GTK: When starting the GUI and there is an error in the .vimrc file, don't -present the wait-return prompt, since the message was given in the terminal. - -When there was an error in a .vimrc file the terminal where gvim was started -could be cleared. Set msg_row in main.c before writing any messages. - -GTK and X11 GUI: When trying to read characters from the user (e.g. with -input()) before the Vim window was opened caused Vim to hang when it was -started from the desktop. - -OS/390 uses 31 bit pointers. That broke some computations with MAX_COL. -Reduce MAX_COL by one bit for OS/390. (Ralf Schandl) - -When defining a function and it already exists, Vim didn't say it existed -until after typing it. Now do this right away when typing it. - -The message remembered for displaying later (keep_msg) was sometimes pointing -into a generic buffer, which might be changed by the time the message is -displayed. Now make a copy of the message. - -When using multi-byte characters in a menu and a trailing byte is a backslash, -the menu would not be created correctly. (Muraoka Taro) -Using a multibyte character in the substitute string where a trail byte is a -backslash didn't work. (Muraoka Taro) - -When setting "t_Co" in a vimrc file, then setting it automatically from an -xterm termresponse and then setting it again manually caused a crash. - -When getting the value of a string option that is not supported, the number -zero was returned. This breaks a check like "&enc == "asdf". Now an empty -string is returned for string options. - -Crashed when starting the GTK GUI while using 'notitle' in the vimrc, setting -'title' in the gvimrc and starting the GUI with ":gui". Closed the connection -to the X server accidentally. - -Had to hit return after selecting an entry for ":ts". - -The message from ":cn" message was sometimes cleared. Now display it after -redrawing if it doesn't cause a scroll (truncated when necessary). - -hangulin.c didn't compile when the GUI was disabled. Disable it when it won't -work. - -When setting a termcap option like "t_CO", the value could be displayed as -being for a normal key with a modifier, like "<M-=>". - -When expanding the argument list, entries which are a directory name did not -get included. This stopped "vim c:/" from opening the file explorer. - -":syn match sd "^" nextgroup=asdf" skipped the first column and matched the -nextgroup in the second column. - -GUI: When 'lazyredraw' is set, 'showmatch' didn't work. Required flushing -the output. - -Don't define the <NetMouse> termcode in an xterm, reduces the problem when -someone types <Esc> } in Insert mode. - -Made slash_adjust() work correctly for multi-byte characters. (Yasuhiro -Matsumoto) -Using a filename in Big5 encoding for autocommands didn't work (backslash in -trailbyte). (Yasuhiro Matsumoto) - -DOS and Windows: Expanding *.vim also matched file.vimfoo. Expand path like -Unix to avoid problems with Windows dir functions. Merged the DOS and Win32 -functions. - -Win32: Gvimext could not edit more than a few files at once, the length of the -argument was fixed. - -"ls -1 * | xargs vim" worked, but the input was in cooked mode. Now switch to -raw mode when needed. Use dup() to copy the stderr file descriptor to stdin -to make shell commands work. No longer requires an external program to do -this. - -When using ":filetype off", ftplugin and indent usage would be switched off at -the same time. Don't do this, setting 'filetype' manually can still use them. - -GUI: When writing a double-byte character, it could be split up in two calls -to gui_write(), which doesn't work. Now flush before the output buffer -becomes full. - -When 'laststatus' is set and 'cmdheight' is two or bigger, the intro message -would be written over the status line. -The ":intro" command didn't work when there wasn't enough room. - -Configuring for Ruby failed with a recent version of Ruby. (Akinori Musha) - -Athena: When deleting the directory in which Vim was started, using the file -browser made Vim exit. Removed the use of XtAppError(). - -When using autoconf 2.50, UNIX was not defined. Moved the comment for "#undef -UNIX" to a separate line. - -Win32: Disabled _OnWindowPosChanging() to make maximize work better. - -Win32: Compiling with VC 4.0 didn't work. (Walter Briscoe) - -Athena: -- Finally fixed the problems with deleting a menu. (David Harrison) -- Athena: When closing the confirm() dialog, worked like OK was pressed, - instead of Cancel. - -The file explorer didn't work in compatible mode, because of line -continuation. - -Didn't give an error message for ":digraph a". - -When using Ex mode in the GUI and typing a special key, <BS> didn't delete it -correctly. Now display '?' for a special key. - -When an operator is pending, clicking in another window made it apply to that -window, even though the line numbers could be beyond the end of the buffer. - -When a function call doesn't have a terminating ")" Vim could crash. - -Perl interface: could crash on exit with perl 5.6.1. (Anduin Withers) - -Using %P in 'errorformat' wasn't handled correctly. (Tomas Zellerin) - -Using a syntax cluster that includes itself made Vim crash. - -GUI: With 'ls' set to 2, dragging the status line all the way up, then making -the Vim window smaller: Could not the drag status line anymore. - -"vim -c startinsert! file" placed cursor on last char of a line, instead of -after it. A ":set" command in the buffer menu set w_set_curswant. Now don't -do this when w_curswant is MAXCOL. - -Win32: When the gvim window was maximized and selecting another font, the -window would no longer fill the screen. - -The line with 'pastetoggle' in ":options" didn't show the right value when it -is a special key. Hitting <CR> didn't work either. - -Formatting text, resulting in a % landing in the first line, repeated the % in -the following lines, like it's the start of a comment. - -GTK: When adding a toolbar item while gvim is already running, it wasn't -possible to use the tooltip. Now it works by adding the tooltip first. - -The output of "g CTRL-G" mentioned "Char" but it's actually bytes. - -Searching for the end of a oneline region didn't work correctly when there is -an offset for the highlighting. - -Syntax highlighting: When synchronizing on C-comments, //*/ was seen as the -start of a comment. - -Win32: Without scrollbars present, the MS mouse scroll wheel didn't work. -Also handle the scrollbars when they are not visible. - -Motif: When there is no right scrollbar, the bottom scrollbar would still -leave room for it. (Marcin Dalecki) - -When changing 'guicursor' and the value is invalid, some of the effects would -still take place. Now first check for errors and only make the new value -effective when it's OK. - -Using "A" In Visual block mode, appending to lines that don't extend into the -block, padding was wrong. - -When pasting a block of text, a character that occupies more than one screen -column could be deleted and spaces inserted instead. Now only do that with a -tab. - -Fixed conversion of documentation to HTML using Perl. (Dan Sharp) - -Give an error message when a menu name starts with a dot. - -Avoid a hang when executing a shell from the GUI on HP-UX by pushing "ptem" -even when sys/ptem.h isn't present. - -When creating the temp directory, make sure umask is 077, otherwise the -directory is not accessible when it was set to 0177. - -Unix: When resizing the window and a redraw is a bit slow, could get a window -resize event while redrawing, resulting in a messed up window. Any input -(e.g., a mouse click) would redraw. - -The "%B" item in the status line became zero in Insert mode (that's normal) -for another than the current window. - -The menu entries to convert to xxd and back didn't work in Insert mode. - -When ":vglobal" didn't find a line where the pattern doesn't match, the error -message would be the wrong way around. - -When ignoring a multi-line error message with "%-A", the continuation lines -would be used anyway. (Servatius Brandt) - -"grx" on a double-wide character inserted "x", instead of replacing the -character with "x ". "gR" on <xx> ('display' set the "uhex") didn't replace -at all. When doing "gRxx" on a control character the first "x" would be -inserted, breaking the alignment. - -Added "0)" to 'cinkeys', so that when typing a ) it is put in the same place -as where "==" would put it. - -Win32: When maximized, adding/removing toolbar didn't resize the text area. - -When using <C-RightMouse> a count was discarded. - -When typing CTRL-V and <RightMouse> in the command line, would insert -<LeftMouse>. - -Using "vis" or "vas" when 'selection' is exclusive didn't include the last -character. - -When adding to an option like 'grepprg', leading space would be lost. Don't -expand environment variables when there is no comma separating the items. - -GUI: When using a bold-italic font, would still use the bold trick and -underlining. - -Motif: The default button didn't work in dialogs, the first one was always -used. Had to give input focus to the default button. - -When using CTRL-T to jump within the same file, the '' mark wasn't set. - -Undo wasn't Vi compatible when using the 'c' flag for ":s". Now it undoes the -whole ":s" command instead of each confirmed replacement. - -The Buffers menu, when torn-off, disappeared when being refreshed. Add a -dummy item to avoid this. - -Removed calling msg_start() in main(), it should not be needed. - -vim_strpbrk() did not support multibyte characters. (Muraoka Taro) - -The Amiga version didn't compile, the code was too big for relative jumps. -Moved a few files from ex_docmd.c to ex_cmds2.c - -When evaluating the "= register resulted in the "= register being changed, Vim -would crash. - -When doing ":view file" and it fails, the current buffer was made read-only. - -Motif: For some people the separators in the toolbar disappeared when resizing -the Vim window. (Marcin Dalecki) - -Win32 GUI: when setting 'lines' to a huge number, would not compute the -available space correctly. Was counting the menu height twice. - -Conversion of the docs to HTML didn't handle the line with the +quickfix tag -correctly. (Antonio Colombo) - -Win32: fname_case() didn't handle multi-byte characters correctly. (Yasuhiro -Matsumoto) - -The Cygwin version had trouble with fchdir(). Don't use that function for -Cygwin. - -The generic check in scripts.vim for "conf" syntax was done before some checks -in filetype.vim, resulting in "conf" syntax too often. - -Dos32: Typing lagged behind. Would wait for one biostick when checking if a -character is available. - -GTK: When setting 'columns' while starting up "gvim", would set the width of -the terminal it was started in. - -When using ESC in Insert mode, an autoindent that wraps to the next line -caused the cursor to move to the end of the line temporarily. When the -character before the cursor was a double-wide multi-byte character the cursor -would be on the right halve, which causes problems with some terminals. - -Didn't handle multi-byte characters correctly when expanding a file name. -(Yasuhiro Matsumoto) - -Win32 GUI: Errors generated before the GUI is decided to start were not -reported. - -globpath() didn't reserve enough room for concatenated results. (Anduin -Withers) - -When expanding an option that is very long already, don't do the expansion, it -would be truncated to MAXPATHL. (Anduin Withers) - -When 'selection' is "exclusive", using "Fx" in Visual mode only moved until -just after the character. - -When using IME on the console to enter a file name, the screen may scroll up. -Redraw the screen then. (Yasuhiro Matsumoto) - -Motif: In the find/replace dialog the "Replace" button didn't work first time, -second time it replaced all matches. Removed the use of ":s///c". -GTK: Similar problems with the find/replace dialog, moved the code to a common -function. - -X11: Use shared GC's for text. (Marcin Dalecki) - -"]i" found the match under the cursor, instead of the first one below it. -Same for "]I", "] CTRL-I", "]d", "]D" and "] CTRL-D". - -Win16: When maximized and the font is changed, don't change the window size. -(Vince Negri) - -When 'lbr' is set, deleting a block of text could leave the cursor in the -wrong position. - -Win32: When opening a file with the "Edit with Vim" popup menu entry, -wildcards would cause trouble. Added the "--literal" argument to avoid -expanding file names. - -When using "gv", it didn't restore that "$" was used in Visual block mode. - -Win32 GUI: While waiting for a shell command to finish, the window wasn't -redrawn at all. (Yasuhiro Matsumoto) - -Syntax highlighting: A match that continues on a next line because of a -contained region didn't end when that region ended. - -The ":s" command didn't allow flags like 'e' and 'i' right after it. - -When using ":s" to split a line, marks were moved to the next line. Vi keeps -them in the first line. - -When using ":n" ":rew", the previous context mark was at the top of the file, -while Vi puts it in the same place as the cursor. Made it Vi compatible. - -Fixed Vi incompatibility: Text was not put in register 1 when using "c" and -"d" with a motion character, when deleting within one line with one of the -commands: % ( ) `<character> / ? N n { } - -Win32 GUI: The tooltip for tear-off items remained when the tear-off item was -no longer selected. - -GUI: When typing ":" at the more prompt, would return to Normal mode and not -redraw the screen. - -When starting Vim with an argument "-c g/at/p" the printed lines would -overwrite each other. - -BeOS: Didn't compile. Configure didn't add the os_beos files, the QNX check -removed them. Various changes to os_beos.cc. (Joshua Haberman) -Removed the check for the hardware platform, the BeBox has not been produced -for a long time now. - -Win32 GUI: don't use a message box when the shell returns an error code, -display the message in the Vim window. - -Make_mvc.mak always included "/debug" for linking. "GUI=no" argument didn't -work. Use "DEBUG=yes" instead of "DEBUG=1" to make it consistent. (Dan Sharp) - -When a line in the tags file ended in ;" (no TAB following) the command would -not be recognized as a search command. - -X11: The inputMethod resource never worked. Don't use the "none" input method -for SGI, it apparently makes the first character in Input method dropped. - -Fixed incorrect tests in os_mac.h. (Axel Kielhorn) - -Win32 console: When the console where Vim runs in is closed, Vim could hang in -trying to restore the window icon. (Yasuhiro Matsumoto) - -When using ":3call func()" or ":3,3call func() the line number was ignored. - -When 'showbreak' and 'linebreak' were both set, Visual highlighting sometimes -continued until the end of the line. - -GTK GUI: Tearoff items were added even when 'guioptions' didn't contain 't' -when starting up. - -MS-Windows: When the current directory includes a "~", searching files with -"gf" or ":find" didn't work. A "$" in the directory had the same problem. -Added mch_has_exp_wildcard() functions. - -When reducing the Vim window height while starting up, would get an -out-of-memory error message. - -When editing a very long search pattern, 'incsearch' caused the redraw of the -command line to fail. - -Motif GUI: On some systems the "Help" menu would not be on the far right, as -it should be. On some other systems (esp. IRIX) the command line would not -completely show. Solution is to only resize the menubar for Lesstif. - -Using "%" in a line that contains "\\" twice didn't take care of the quotes -properly. Now make a difference between \" and \\". - -For non-Unix systems a dummy file is created when finding a swap name to -detect a 8.3 filesystem. When there is an existing swap file, would get a -warning for the file being created outside of Vim. Also, when closing the Vim -window the file would remain. - -Motif: The menu height was always computed, using a "-menuheight" argument -was setting the room for the command line. Now make clear the argument is not -supported. - -For some (EBCDIC) systems, POUND was equal to '#'. Added an #if for that to -avoid a duplicate case in a switch. - -The GUI may have problems when forking. Always call _exit() instead of exit() -in the parent, the child will call exit(). - -Win32 GUI: Accented characters were often wrong in dialogs and tearoff menus. -Now use CP_ACP instead of CP_OEMCP. (Vince Negri) - -When displaying text with syntax highlighting causes an error (e.g., running -out of stack) the syntax highlighting is disabled to avoid further messages. - -When a command in a .vimrc or .gvimrc causes an ATTENTION prompt, and Vim was -started from the desktop (no place to display messages) it would hang. Now -open the GUI window early to be able to display the messages and pop up the -dialog. - -"r<CR>" on a multi-byte character deleted only the first byte of the -character. "3r<CR>" deleted three bytes instead of three characters. - -When interrupting reading a file, Vi considers the buffer modified. Added the -'i' flag in 'cpoptions' flag for this (we don't want it modified to be able to -do ":q"). - -When using an item in 'guicursor' that starts with a colon, Vim would get -stuck or crash. - -When putting a file mark in a help file and later jumping back to it, the -options would not be set. Extended the modeline in all help files to make -this work better. - -When a modeline contained "::" the local option values would be printed. Now -ignore it. - -Some help files did not use a 8.3 names, which causes problems when using -MS-DOS unzip. Renamed "multibyte.txt" to "mbyte.txt", "rightleft.txt" to -"rileft.txt", "tagsearch.txt" to "tagsrch.txt", "os_riscos.txt" to -"os_risc.txt". - -When Visual mode is blockwise, using "iw" or "aw" made it characterwise. That -doesn't seem right, only do this when in linewise mode. But then do it -always, not only when start and end of Visual mode are equal. - -When using "viw" on a single-letter word and 'selection' is exclusive, would -not include the word. - -When formatting text from Insert mode, using CTRL-O, could mess up undo -information. - -While writing a file (also for the backup file) there was no check for an -interrupt (hitting CTRL-C). Vim could hang when writing a large file over a -slow network, and moving the mouse didn't make it appear (when 'mousehide' is -set) and the screen wasn't updated in the GUI. Also allow interrupting when -syncing the swap file, it can take a long time. - -When using ":mksession" while there is help window, it would later be restored -to the right file but not marked as a help buffer. ":help" would then open -another window. Now use the value "help" for 'buftype' to mark a help buffer. - -The session file contained absolute path names in option values, that doesn't -work when the home directory depends on the situation. Replace the home -directory with ~/ when possible. - -When using 'showbreak' a TAB just after the shown break would not be counted -correctly, the cursor would be positioned wrong. - -With 'showbreak' set to "--->" or "------->" and 'sts' set to 4, inserting -tabs did not work right. Could cause a crash. Backspacing was also wrong, -could get stuck at a line break. - -Win32: crashed when tearing off a menu with over 300 items. - -GUI: A menu or toolbar item would appear when only a tooltip was defined for -it. - -When 'scrolloff' is non-zero and "$" is in 'cpoptions', using "s" while the -last line of the file is the first line on screen, the text wasn't displayed. - -When running "autoconf", delete the configure cache to force starting cleanly -when configure is run again. - -When changing the Normal colors for cterm, the value of 'background' was -changed even when the GUI was used. - -The warning for a missing vimrun.exe was always given on startup, but some -people just editing a file don't need to be bothered by it. Only show it when -vimrun would be used. - -When using "%" in a multibyte text it could get confused by trailbytes that -match. (Muraoka Taro) - -Termcap entry for RiscOS was wrong, using 7 and 8 in octal codes. - -Athena: The title of a dialog window and the file selector window were not -set. (David Harrison) - -The "htmlLink" highlight group specified colors, which gives problems when -using a color scheme. Added the "Underlined" highlight group for this. - -After using ":insert" or ":change" the '[ mark would be one line too low. - -When looking for the file name after a match with 'include' one character was -skipped. Same for 'define'. - -Win32 and DJGPP: When editing a file with a short name in a directory, and -editing the same file but using the long name, would end up with two buffers -on the same file. - -"gf" on a filename that starts with "../" only worked when the file being -edited is in the current directory. An include file search didn't work -properly for files starting with "../" or ".". Now search both relative to -the file and to the current directory. - -When 'printheader', 'titlestring', 'iconstring', 'rulerformat' or 'statusline' -contained "%{" but no following "}" memory was corrupted and a crash could -happen. - -":0append" and then inserting two lines did not redraw the blank lines that -were scrolled back down. - -When using insert mode completion in a narrow window, the message caused a -scroll up. Now shorten the message if it doesn't fit and avoid writing the -ruler over the message. - -XIM still didn't work correctly on some systems, especially SGI/IRIX. Added -the 'imdisable' option, which is set by default for that system. - -Patch 6.0aw.008 -Problem: When the first character of a file name is over 127, the Buffers - menu entry would get a negative priority and cause problems. -Solution: Reduce the multiplier for the first character when computing - the hash value for a Buffers menu entry. -Files: runtime/menu.vim - -Patch 6.0aw.010 -Problem: Win32: ":browse edit dir/dir" didn't work. (Vikas) -Solution: Change slashes to backslashes in the directory passed to the file - browser. -Files: src/gui_w48.c - -Athena file browser: On some systems wcstombs() can't be used to get the -length of a multi-byte string. Use the maximum length then. (Yasuhiro -Matsumoto) - -Patch 6.0ax.001 -Problem: When 'patchmode' is set, appending to a file gives an empty - original file. (Ed Ralston) -Solution: Also make a backup copy when appending and 'patchmode' is set. -Files: src/fileio.c - -Patch 6.0ax.002 -Problem: When 'patchmode' is set, appending to a compressed file gives an - uncompressed original file. (Ed Ralston) -Solution: Create the original file before decompressing. -Files: runtime/plugin/gzip.vim - -Patch 6.0ax.005 -Problem: Athena file selector keeps the title of the first invocation. -Solution: Set the title each time the file selector is opened. (David - Harrison) -Files: src/gui_at_fs.c - -Patch 6.0ax.007 -Problem: When using GPM (mouse driver in a Linux console) a double click is - interpreted as a scroll wheel click. -Solution: Check if GPM is being used when deciding if a mouse event is for - the scroll wheel. -Files: src/term.c - -Patch 6.0ax.010 -Problem: The Edit.Save menu and the Save toolbar button didn't work when - the buffer has no file name. -Solution: Use a file browser to ask for a file name. Also fix the toolbar - Find item in Visual mode. -Files: runtime/menu.vim - -Patch 6.0ax.012 -Problem: When 'cpoptions' contains "$", breaking a line for 'textwidth' - doesn't redraw properly. (Stefan Schulze) -Solution: Remove the dollar before breaking the line. -Files: src/edit.c - -Patch 6.0ax.014 -Problem: Win32: On Windows 98 ":make -f file" doesn't work when 'shell' is - "command.com" and 'makeprg' is "nmake". The environment isn't - passed on to "nmake". -Solution: Also use vimrun.exe when redirecting the output of a command. -Files: src/os_win32.c - -Patch 6.0ax.016 -Problem: The version number was reported wrong in the intro screen. -Solution: Check for a version number with two additional letters. -Files: src/version.c - -Patch 6.0ax.019 -Problem: When scrolling a window with folds upwards, switching to another - vertically split window and back may not update the scrollbar. -Solution: Limit w_botline to the number of lines in the buffer plus one. -Files: src/move.c - - -============================================================================== -VERSION 6.1 *version-6.1* - -This section is about improvements made between version 6.0 and 6.1. - -This is a bug-fix release, there are not really any new features. - - -Changed *changed-6.1* -------- - -'iminsert' and 'imsearch' are no longer set as a side effect of defining a -language-mapping using ":lmap". - - -Added *added-6.1* ------ - -Syntax files: -ampl AMPL (David Krief) -ant Ant (Johannes Zellner) -baan Baan (Her van de Vliert) -cs C# (Johannes Zellner) -lifelines Lifelines (Patrick Texier) -lscript LotusScript (Taryn East) -moo MOO (Timo Frenay) -nsis NSIS (Alex Jakushev) -ppd Postscript Printer Description (Bjoern Jacke) -rpl RPL/2 (Joel Bertrand) -scilab Scilab (Benoit Hamelin) -splint Splint (Ralf Wildenhues) -sqlj SQLJ (Andreas Fischbach) -wvdial WvDial (Prahlad Vaidyanathan) -xf86conf XFree86 config (Nikolai Weibull) -xmodmap Xmodmap (Nikolai Weibull) -xslt Xslt (Johannes Zellner) -monk Monk (Mike Litherland) -xsd Xsd (Johannes Zellner) -cdl CDL (Raul Segura Acevedo) -sendpr Send-pr (Hendrik Scholz) - -Added indent file for Scheme. (Dorai Sitaram) -Added indent file for Prolog. (Kontra Gergely) -Added indent file for Povray (David Necas) -Added indent file for IDL (Aleksandar Jelenak) -Added C# indent and ftplugin scripts. - -Added Ukrainian menu translations. (Bohdan Vlasyuk) -Added ASCII version of the Czech menus. (Jiri Brezina) - -Added Simplified Chinese translation of the tutor. (Mendel L Chan) - -Added Russian keymap for yawerty keyboard. - -Added an explanation of using the vimrc file in the tutor. -Changed tutor.vim to get the right encoding for the Taiwainese tutor. - -Added Russian tutor. (Andrey Kiselev) -Added Polish tutor. (Mikolaj Machowski) - -Added darkblue color scheme. (Bohdan Vlasyuk) - -When packing the dos language archive automatically generate the .mo files -that are required. - -Improved NSIS script to support NSIS 180. Added icons for the -enabled/disabled status. (Mirek Pruchnik) - -cp1250 version of the Slovak message translations. - -Compiler plugins for IRIX compilers. (David Harrison) - - -Fixed *fixed-6.1* ------ - -The license text was updated to make the meaning clearer and make it -compatible with the GNU GPL. Otherwise distributors have a problem when -linking Vim with a GPL'ed library. - -When installing the "less.sh" script it was not made executable. (Chuck Berg) - -Win32: The "9" key on the numpad wasn't working. (Julian Kinraid) - -The NSIS install script didn't work with NSIS 1.80 or later. Also add -Vim-specific icons. (Pruchnik) - -The script for conversion to HTML contained an "if" in the wrong place. -(Michael Geddes) - -Allow using ":ascii" in the sandbox, it's harmless. - -Removed creat() from osdef2.h.in, it wasn't used and may cause a problem when -it's redefined to creat64(). - -The text files in the VisVim directory were in "dos" format. This caused -problems when applying a patch. Now keep them in "unix" format and convert -them to "dos" format only for the PC archives. - -Add ruby files to the dos source archive, they can be used by Make_mvc.mak. -(Mirek Pruchnik) - -"cp -f" doesn't work on all systems. Change "cp -f" in the Makefile to "rm --f" and "cp". - -Didn't compile on a Compaq Tandem Himalaya OSS. (Michael A. Benzinger) - -The GTK file selection dialog didn't include the "Create Dir", "Delete File" -and "Rename File" buttons. - -When doing ":browse source" the dialog has the title "Run Macro". Better -would be "Source Vim script". (Yegappan Lakshmanan) - -Win32: Don't use the printer font as default for the font dialog. - -"make doslang" didn't work when configure didn't run (yet). Set $MAKEMO to -"yes". (Mirek Pruchnik) - -The ToolBar TagJump item used "g]", which prompts for a selection even when -there is only one matching tag. Use "g<C-]>" instead. - -The ming makefile for message translations didn't have the right list of -files. - -The MS-Windows 3.1 version complains about LIBINTL.DLL not found. Compile -this version without message translations. - -The Borland 5 makefile contained a check for Ruby which is no longer needed. -The URLs for the TCL library was outdated. (Dan Sharp) - -The eviso.ps file was missing from the DOS runtime archive, it's needed for -printing PostScript in the 32bit DOS version. - -In menu files ":scriptencoding" was used in a wrong way after patch 6.1a.032 -Now use ":scriptencoding" in the file where the translations are given. Do -the same for all menus in latin1 encoding. - -Included a lot of fixes for the Macintosh, mostly to make it work with Carbon. -(Dany StAmant, Axel Kielhorn, Benji Fisher) - -Improved the vimtutor shell script to use $TMPDIR when it exists, and delete -the copied file when exiting in an abnormal way. (Max Ischenko) - -When "iconv.dll" can't be found, try using "libiconv.dll". - -When encryption is used, filtering with a shell command wasn't possible. - -DJGPP: ":cd c:" always failed, can't get permissions for "c:". -Win32: ":cd c:/" failed if the previous current directory on c: had become -invalid. - -DJGPP: Shift-Del and Del both produce \316\123. Default mapping for Del is -wrong. Disabled it. - -Dependencies on header files in MingW makefile was wrong. - -Win32: Don't use ACL stuff for MSVC 4.2, it's not supported. (Walter Briscoe) - -Win32 with Borland: bcc.cfg was caching the value for $(BOR), but providing a -different argument to make didn't regenerate it. - -Win32 with MSVC: Make_ivc.mak generates a new if_ole.h in a different -directory, the if_ole.h in the src directory may be used instead. Delete the -distributed file. - -When a window is vertically split and then ":ball" is used, the window layout -is messed up, can cause a crash. (Muraoka Taro) - -When 'insertmode' is set, using File/New menu and then double clicking, "i" is -soon inserted. (Merlin Hansen) - -When Select mode is active and using the Buffers menu to switch to another -buffer, an old selection comes back. Reset VIsual_reselect for a ":buffer" -command. - -When Select mode is active and 'insertmode' is set, using the Buffers menu to -switch to another buffer, did not return to Insert mode. Make sure -"restart_edit" is set. - -When double clicking on the first character of a word while 'selection' is -"exclusive" didn't select that word. - - -Patch 6.0.001 -Problem: Loading the sh.vim syntax file causes error messages . (Corinna - Vinschen) -Solution: Add an "if". (Charles Campbell) -Files: runtime/syntax/sh.vim - -Patch 6.0.002 -Problem: Using a '@' item in 'viminfo' doesn't work. (Marko Leipert) -Solution: Add '@' to the list of accepted items. -Files: src/option.c - -Patch 6.0.003 -Problem: The configure check for ACLs on AIX doesn't work. -Solution: Fix the test program so that it compiles. (Tomas Ogren) -Files: src/configure.in, src/auto/configure - -Patch 6.0.004 -Problem: The find/replace dialog doesn't reuse a previous argument - properly. -Solution: After removing a "\V" terminate the string. (Zwane Mwaikambo) -Files: src/gui.c - -Patch 6.0.005 -Problem: In Insert mode, "CTRL-O :ls" has a delay before redrawing. -Solution: Don't delay just after wait_return() was called. Added the - did_wait_return flag. -Files: src/globals.h, src/message.c, src/normal.c, src/screen.c - -Patch 6.0.006 -Problem: With a vertical split, 'number' set and 'scrolloff' non-zero, - making the window width very small causes a crash. (Niklas - Lindstrom) -Solution: Check for a zero width. -Files: src/move.c - -Patch 6.0.007 -Problem: When setting 'filetype' while there is no FileType autocommand, a - following ":setfiletype" would set 'filetype' again. (Kobus - Retief) -Solution: Set did_filetype always when 'filetype' has been set. -Files: src/option.c - -Patch 6.0.008 -Problem: 'imdisable' is missing from the options window. (Michael Naumann) -Solution: Add an entry for it. -Files: runtime/optwin.vim - -Patch 6.0.009 -Problem: Nextstep doesn't have S_ISBLK. (John Beppu) -Solution: Define S_ISBLK using S_IFBLK. -Files: src/os_unix.h - -Patch 6.0.010 -Problem: Using "gf" on a file name starting with "./" or "../" in a buffer - without a name causes a crash. (Roy Lewis) -Solution: Check for a NULL file name. -Files: src/misc2.c - -Patch 6.0.011 -Problem: Python: After replacing or deleting lines get an ml_get error. - (Leo Lipelis) -Solution: Adjust the cursor position for deleted or added lines. -Files: src/if_python.c - -Patch 6.0.012 -Problem: Polish translations contain printf format errors, this can result - in a crash when using one of them. -Solution: Fix for translated messages. (Michal Politowski) -Files: src/po/pl.po - -Patch 6.0.013 -Problem: Using ":silent! cmd" still gives some error messages, like for an - invalid range. (Salman Halim) -Solution: Reset emsg_silent after calling emsg() in do_one_cmd(). -Files: src/ex_docmd.c - -Patch 6.0.014 -Problem: When 'modifiable' is off and 'virtualedit' is "all", "rx" on a TAB - still changes the buffer. (Muraoka Taro) -Solution: Check if saving the line for undo fails. -Files: src/normal.c - -Patch 6.0.015 -Problem: When 'cpoptions' includes "S" and "filetype plugin on" has been - used, can get an error for deleting the b:did_ftplugin variable. - (Ralph Henderson) -Solution: Only delete the variable when it exists. -Files: runtime/ftplugin.vim - -Patch 6.0.016 -Problem: bufnr(), bufname() and bufwinnr() don't find unlisted buffers when - the argument is a string. (Hari Krishna Dara) - Also for setbufvar() and getbufvar(). -Solution: Also find unlisted buffers. -Files: src/eval.c - -Patch 6.0.017 -Problem: When 'ttybuiltin' is set and a builtin termcap entry defines t_Co - and the external one doesn't, it gets reset to empty. (David - Harrison) -Solution: Only set t_Co when it wasn't set yet. -Files: src/term.c - -Patch 6.0.018 -Problem: Initializing 'encoding' may cause a crash when setlocale() is not - used. (Dany St-Amant) -Solution: Check for a NULL pointer. -Files: src/mbyte.c - -Patch 6.0.019 -Problem: Converting a string with multi-byte characters to a printable - string, e.g., with strtrans(), may cause a crash. (Tomas Zellerin) -Solution: Correctly compute the length of the result in transstr(). -Files: src/charset.c - -Patch 6.0.020 -Problem: When obtaining the value of a global variable internally, could - get the function-local value instead. Applies to using <Leader> - and <LocalLeader> and resetting highlighting in a function. -Solution: Prepend "g:" to the variable name. (Aric Blumer) -Files: src/syntax.c, src/term.c - -Patch 6.0.021 -Problem: The 'cscopepathcomp' option didn't work. -Solution: Change USE_CSCOPE to FEAT_CSCOPE. (Mark Feng) -Files: src/option.c - -Patch 6.0.022 -Problem: When using the 'langmap' option, the second character of a command - starting with "g" isn't adjusted. -Solution: Apply 'langmap' to the second character. (Alex Kapranoff) -Files: src/normal.c - -Patch 6.0.023 -Problem: Loading the lhaskell syntax doesn't work. (Thore B. Karlsen) -Solution: Use ":runtime" instead of "source" to load haskell.vim. -Files: runtime/syntax/lhaskell.vim - -Patch 6.0.024 -Problem: Using "CTRL-V u 9900" in Insert mode may cause a crash. (Noah - Levitt) -Solution: Don't insert a NUL byte in the text, use a newline. -Files: src/misc1.c - -Patch 6.0.025 -Problem: The pattern "\vx(.|$)" doesn't match "x" at the end of a line. - (Preben Peppe Guldberg) -Solution: Always see a "$" as end-of-line after "\v". Do the same for "^". -Files: src/regexp.c - -Patch 6.0.026 -Problem: GTK: When using arrow keys to navigate through the menus, the - separators are selected. -Solution: Set the separators "insensitive". (Pavel Kankovsky) -Files: src/gui_gtk.c, src/gui_gtk_x11.c - -Patch 6.0.027 -Problem: VMS: Printing doesn't work, the file is deleted too quickly. - No longer need the VMS specific printing menu. - gethostname() is not available with VAXC. - The makefile was lacking selection of the tiny-huge feature set. -Solution: Adjust the 'printexpr' option default. Fix the other problems and - update the documentation. (Zoltan Arpadffy) -Files: runtime/doc/os_vms.txt, runtime/menu.vim, src/INSTALLvms.txt, - src/Make_vms.mms, src/option.c, src/os_unix.c, src/os_vms_conf.h - -Patch 6.0.028 -Problem: Can't compile without +virtualedit and with +visualextra. (Geza - Lakner) -Solution: Add an #ifdef for +virtualedit. -Files: src/ops.c - -Patch 6.0.029 -Problem: When making a change in line 1, then in line 2 and then deleting - line 1, undo info could be wrong. Only when the changes are undone - at once. (Gerhard Hochholzer) -Solution: When not saving a line for undo because it was already done - before, remember for which entry the last line must be computed. - Added ue_getbot_entry pointer for this. When the number of lines - changes, adjust the position of newer undo entries. -Files: src/structs.h, src/undo.c - -Patch 6.0.030 -Problem: Using ":source! file" doesn't work inside a loop or after - ":argdo". (Pavol Juhas) -Solution: Execute the commands in the file right away, do not let the main - loop do it. -Files: src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c, src/globals.h, - src/proto/ex_docmd.pro, src/proto/getchar.pro - -Patch 6.0.031 -Problem: Nextstep doesn't have setenv() or putenv(). (John Beppu) -Solution: Move putenv() from pty.c to misc2.c -Files: src/misc2.c, src/pty.c - -Patch 6.0.032 -Problem: When changing a setting that affects all folds, they are not - displayed immediately. -Solution: Set the redraw flag in foldUpdateAll(). -Files: src/fold.c - -Patch 6.0.033 -Problem: Using 'wildmenu' on MS-Windows, file names that include a space - are only displayed starting with that space. (Xie Yuheng) -Solution: Don't recognize a backslash before a space as a path separator. -Files: src/screen.c - -Patch 6.0.034 -Problem: Calling searchpair() with three arguments could result in a crash - or strange error message. (Kalle Bjorklid) -Solution: Don't use the fifth argument when there is no fourth argument. -Files: src/eval.c - -Patch 6.0.035 -Problem: The menu item Edit/Global_Settings/Toggle_Toolbar doesn't work - when 'ignorecase' is set. (Allen Castaban) -Solution: Always match case when checking if a flag is already present in - 'guioptions'. -Files: runtime/menu.vim - -Patch 6.0.036 -Problem: OS/2, MS-DOS and MS-Windows: Using a path that starts with a - slash in 'tags' doesn't work as expected. (Mathias Koehrer) -Solution: Only use the drive, not the whole path to the current directory. - Also make it work for "c:dir/file". -Files: src/misc2.c - -Patch 6.0.037 -Problem: When the user has set "did_install_syntax_menu" to avoid the - default Syntax menu it still appears. (Virgilio) -Solution: Don't add the three default items when "did_install_syntax_menu" - is set. -Files: runtime/menu.vim - -Patch 6.0.038 -Problem: When 'selection' is "exclusive", deleting a block of text at the - end of a line can leave the cursor beyond the end of the line. -Solution: Correct the cursor position. -Files: src/ops.c - -Patch 6.0.039 -Problem: "gP" leaves the cursor in the wrong position when 'virtualedit' is - used. Using "c" in blockwise Visual mode leaves the cursor in a - strange position. -Solution: For "gP" reset the "coladd" field for the '] mark. For "c" leave - the cursor on the last inserted character. -Files: src/ops.c - -Patch 6.0.040 -Problem: When 'fileencoding' is invalid and writing fails because of - this, the original file is gone. (Eric Carlier) -Solution: Restore the original file from the backup. -Files: src/fileio.c - -Patch 6.0.041 -Problem: Using ":language messages en" when LC_MESSAGES is undefined - results in setting LC_CTYPE. (Eric Carlier) -Solution: Set $LC_MESSAGES instead. -Files: src/ex_cmds2.c - -Patch 6.0.042 -Problem: ":mksession" can't handle file names with a space. -Solution: Escape special characters in file names with a backslash. -Files: src/ex_docmd.c - -Patch 6.0.043 -Problem: Patch 6.0.041 was wrong. -Solution: Use mch_getenv() instead of vim_getenv(). -Files: src/ex_cmds2.c - -Patch 6.0.044 -Problem: Using a "containedin" list for a syntax item doesn't work for an - item that doesn't have a "contains" argument. Also, "containedin" - doesn't ignore a transparent item. (Timo Frenay) -Solution: When there is a "containedin" argument somewhere, always check for - contained items. Don't check for the transparent item but the - item it's contained in. -Files: src/structs.h, src/syntax.c - -Patch 6.0.045 -Problem: After creating a fold with a Visual selection, another window - with the same buffer still has inverted text. (Sami Salonen) -Solution: Redraw the inverted text. -Files: src/normal.c - -Patch 6.0.046 -Problem: When getrlimit() returns an 8 byte number the check for running - out of stack may fail. (Anthony Meijer) -Solution: Skip the stack check if the limit doesn't fit in a long. -Files: src/auto/configure, src/config.h.in, src/configure.in, - src/os_unix.c - -Patch 6.0.047 -Problem: Using a regexp with "\(\)" inside a "\%[]" item causes a crash. - (Samuel Lacas) -Solution: Don't allow nested atoms inside "\%[]". -Files: src/regexp.c - -Patch 6.0.048 -Problem: Win32: In the console the mouse doesn't always work correctly. - Sometimes after getting focus a mouse movement is interpreted like - a button click. -Solution: Use a different function to obtain the number of mouse buttons. - Avoid recognizing a button press from undefined bits. (Vince Negri) -Files: src/os_win32.c - -Patch 6.0.049 -Problem: When using evim the intro screen is misleading. (Adrian Nagle) -Solution: Mention whether 'insertmode' is set and the menus to be used. -Files: runtime/menu.vim, src/version.c - -Patch 6.0.050 -Problem: UTF-8: "viw" doesn't include non-ASCII characters before the - cursor. (Bertilo Wennergren) -Solution: Use dec_cursor() instead of decrementing the column number. -Files: src/search.c - -Patch 6.0.051 -Problem: UTF-8: Using CTRL-R on the command line doesn't insert composing - characters. (Ron Aaron) -Solution: Also include the composing characters and fix redrawing them. -Files: src/ex_getln.c, src/ops.c - -Patch 6.0.052 -Problem: The check for rlim_t in patch 6.0.046 does not work on some - systems. (Zdenek Sekera) -Solution: Also look in sys/resource.h for rlim_t. -Files: src/auto/configure, src/configure.in - -Patch 6.0.053 (extra) -Problem: Various problems with QNX. -Solution: Minor fix for configure. Switch on terminal clipboard support in - main.c. Fix "pterm" mouse support. os_qnx.c didn't build without - photon. (Julian Kinraid) -Files: src/auto/configure, src/configure.in, src/gui_photon.c, - src/main.c, src/misc2.c, src/option.h, src/os_qnx.c, src/os_qnx.h, - src/syntax.c - -Patch 6.0.054 -Problem: When using mswin.vim, CTRL-V pastes a block of text like it is - normal text. Using CTRL-V in blockwise Visual mode leaves "x" - characters behind. -Solution: Make CTRL-V work as it should. Do the same for the Paste menu - entries. -Files: runtime/menu.vim, runtime/mswin.vim - -Patch 6.0.055 -Problem: GTK: The selection isn't copied the first time. -Solution: Own the selection at the right moment. -Files: src/gui_gtk_x11.c - -Patch 6.0.056 -Problem: Using "CTRL-O cw" in Insert mode results in a nested Insert mode. - <Esc> doesn't leave Insert mode then. -Solution: Only use nested Insert mode when 'insertmode' is set or when a - mapping is used. -Files: src/normal.c - -Patch 6.0.057 -Problem: Using ":wincmd g}" in a function doesn't work. (Gary Holloway) -Solution: Execute the command directly, instead of putting it in the - typeahead buffer. -Files: src/normal.c, src/proto/normal.pro, src/window.c - -Patch 6.0.058 -Problem: When a Cursorhold autocommand moved the cursor, the ruler wasn't - updated. (Bohdan Vlasyuk) -Solution: Update the ruler after executing the autocommands. -Files: src/gui.c - -Patch 6.0.059 -Problem: Highlighting for 'hlsearch' isn't visible in lines that are - highlighted for diff highlighting. (Gary Holloway) -Solution: Let 'hlsearch' highlighting overrule diff highlighting. -Files: src/screen.c - -Patch 6.0.060 -Problem: Motif: When the tooltip is to be popped up, Vim crashes. - (Gary Holloway) -Solution: Check for a NULL return value from gui_motif_fontset2fontlist(). -Files: src/gui_beval.c - -Patch 6.0.061 -Problem: The toolbar buttons to load and save a session do not correctly - use v:this_session. -Solution: Check for v:this_session to be empty instead of existing. -Files: runtime/menu.vim - -Patch 6.0.062 -Problem: Crash when 'verbose' is > 3 and using ":shell". (Yegappan - Lakshmanan) -Solution: Avoid giving a NULL pointer to printf(). Also output a newline - and switch the cursor on. -Files: src/misc2.c - -Patch 6.0.063 -Problem: When 'cpoptions' includes "$", using "cw" to type a ')' on top of - the "$" doesn't update syntax highlighting after it. -Solution: Stop displaying the "$" when typing a ')' in its position. -Files: src/search.c - -Patch 6.0.064 (extra) -Problem: The NSIS install script doesn't work with newer versions of NSIS. - The diff feature doesn't work when there isn't a good diff.exe on - the system. -Solution: Replace the GetParentDir instruction by a user function. - Fix a few cosmetic problems. Use defined constants for the - version number, so that it's defined in one place only. - Only accept the install directory when it ends in "vim". - (Eduardo Fernandez) - Add a diff.exe and use it from the default _vimrc. -Files: nsis/gvim.nsi, nsis/README.txt, src/dosinst.c - -Patch 6.0.065 -Problem: When using ":normal" in 'indentexpr' it may use redo characters - before its argument. (Neil Bird) -Solution: Save and restore the stuff buffer in ex_normal(). -Files: src/ex_docmd.c, src/getchar.c, src/globals.h, src/structs.h - -Patch 6.0.066 -Problem: Sometimes undo for one command is split into two undo actions. - (Halim Salman) -Solution: Don't set the undo-synced flag when reusing a line that was - already saved for undo. -Files: src/undo.c - -Patch 6.0.067 -Problem: if_xcmdsrv.c doesn't compile on systems where fd_set isn't defined - in the usual header file (e.g., AIX). (Mark Waggoner) -Solution: Include sys/select.h in if_xcmdsrv.c for systems that have it. -Files: src/if_xcmdsrv.c - -Patch 6.0.068 -Problem: When formatting a Visually selected area with "gq" and the number - of lines increases the last line may not be redrawn correctly. - (Yegappan Lakshmanan) -Solution: Correct the area to be redrawn for inserted/deleted lines. -Files: src/ops.c - -Patch 6.0.069 -Problem: Using "K" on a word that includes a "!" causes a "No previous - command" error, because the "!" is expanded. (Craig Jeffries) -Solution: Put a backslash before the "!". -Files: src/normal.c - -Patch 6.0.070 -Problem: Win32: The error message for a failed dynamic linking of a Perl, - Ruby, Tcl and Python library is unclear about what went wrong. -Solution: Give the name of the library or function that could not be loaded. - Also for the iconv and gettext libraries when 'verbose' is set. -Files: src/eval.c, src/if_perl.xs, src/if_python.c, src/if_ruby.c, - src/if_tcl.c, src/mbyte.c, src/os_win32.c, src/proto/if_perl.pro, - src/proto/if_python.pro, src/proto/if_ruby.pro, - src/proto/if_tcl.pro, src/proto/mbyte.pro - -Patch 6.0.071 -Problem: The "iris-ansi" builtin termcap isn't very good. -Solution: Fix the wrong entries. (David Harrison) -Files: src/term.c - -Patch 6.0.072 -Problem: When 'lazyredraw' is set, a mapping that stops Visual mode, moves - the cursor and starts Visual mode again causes a redraw problem. - (Brian Silverman) -Solution: Redraw both the old and the new Visual area when necessary. -Files: src/normal.c, src/screen.c - -Patch 6.0.073 (extra) -Problem: DJGPP: When using CTRL-Z to start a shell, the prompt is halfway - the text. (Volker Kiefel) -Solution: Position the system cursor before starting the shell. -Files: src/os_msdos.c - -Patch 6.0.074 -Problem: When using "&" in a substitute string a multi-byte character with - a trailbyte 0x5c is not handled correctly. -Solution: Recognize multi-byte characters inside the "&" part. (Muraoka Taro) -Files: src/regexp.c - -Patch 6.0.075 -Problem: When closing a horizontally split window while 'eadirection' is - "hor" another horizontally split window is still resized. (Aron - Griffis) -Solution: Only resize windows in the same top frame as the window that is - split or closed. -Files: src/main.c, src/proto/window.pro, src/window.c - -Patch 6.0.076 -Problem: Warning for wrong pointer type when compiling. -Solution: Use char instead of char_u pointer. -Files: src/version.c - -Patch 6.0.077 -Problem: Patch 6.0.075 was incomplete. -Solution: Fix another call to win_equal(). -Files: src/option.c - -Patch 6.0.078 -Problem: Using "daw" at the end of a line on a single-character word didn't - include the white space before it. At the end of the file it - didn't work at all. (Gavin Sinclair) -Solution: Include the white space before the word. -Files: src/search.c - -Patch 6.0.079 -Problem: When "W" is in 'cpoptions' and 'backupcopy' is "no" or "auto", can - still overwrite a read-only file, because it's renamed. (Gary - Holloway) -Solution: Add a check for a read-only file before renaming the file to - become the backup. -Files: src/fileio.c - -Patch 6.0.080 -Problem: When using a session file that has the same file in two windows, - the fileinfo() call in do_ecmd() causes a scroll and a hit-enter - prompt. (Robert Webb) -Solution: Don't scroll this message when 'shortmess' contains 'O'. -Files: src/ex_cmds.c - -Patch 6.0.081 -Problem: After using ":saveas" the new buffer name is added to the Buffers - menu with a wrong number. (Chauk-Mean Proum) -Solution: Trigger BufFilePre and BufFilePost events for the renamed buffer - and BufAdd for the old name (which is with a new buffer). -Files: src/ex_cmds.c - -Patch 6.0.082 -Problem: When swapping screens in an xterm and there is an (error) message - from the vimrc script, the shell prompt is after the message. -Solution: Output a newline when there was output on the alternate screen. - Also when starting the GUI. -Files: src/main.c - -Patch 6.0.083 -Problem: GTK: When compiled without menu support the buttons in a dialog - don't have any text. (Erik Edelmann) -Solution: Add the text also when GTK_USE_ACCEL isn't defined. And define - GTK_USE_ACCEL also when not using menus. -Files: src/gui_gtk.c - -Patch 6.0.084 -Problem: UTF-8: a "r" command with an argument that is a keymap for a - character with a composing character can't be repeated with ".". - (Raphael Finkel) -Solution: Add the composing characters to the redo buffer. -Files: src/normal.c - -Patch 6.0.085 -Problem: When 'mousefocus' is set, using "s" to go to Insert mode and then - moving the mouse pointer to another window stops Insert mode, - while this doesn't happen with "a" or "i". (Robert Webb) -Solution: Reset finish_op before calling edit(). -Files: src/normal.c - -Patch 6.0.086 -Problem: When using "gu" the message says "~ed". -Solution: Make the message say "changed". -Files: src/ops.c - -Patch 6.0.087 (lang) -Problem: Message translations are incorrect, which may cause a crash. - (Peter Figura) - The Turkish translations needed more work and the maintainer - didn't have time. -Solution: Fix order of printf arguments. Remove %2$d constructs. - Add "-v" to msgfmt to get a warning for wrong translations. - Don't install the Turkish translations for now. - Update a few more translations. -Files: src/po/Makefile, src/po/af.po, src/po/cs.po, src/po/cs.cp1250.po, - src/po/de.po, src/po/es.po, src/po/fr.po, src/po/it.po, - src/po/ja.po, src/po/ja.sjis.po, src/po/ko.po, src/po/pl.po, - src/po/sk.po, src/po/uk.po, src/po/zh_CN.UTF-8.po, - src/po/zh_CN.cp936.po, src/po/zh_CN.po, src/po/zh_TW.po - -Patch 6.0.088 -Problem: "." doesn't work after using "rx" in Visual mode. (Charles - Campbell) -Solution: Also store the replacement character in the redo buffer. -Files: src/normal.c - -Patch 6.0.089 -Problem: In a C file, using "==" to align a line starting with "* " after - a line with "* -" indents one space too few. (Piet Delport) -Solution: Align with the previous line if the comment-start-string matches - there. -Files: src/misc1.c - -Patch 6.0.090 -Problem: When a wrapping line does not fit in a window and 'scrolloff' is - bigger than half the window height, moving the cursor left or - right causes the screen to flash badly. (Lubomir Host) -Solution: When there is not enough room to show 'scrolloff' screen lines and - near the end of the line, show the end of the line. -Files: src/move.c - -Patch 6.0.091 -Problem: Using CTRL-O in Insert mode, while 'virtualedit' is "all" and the - cursor is after the end-of-line, moves the cursor left. (Yegappan - Lakshmanan) -Solution: Keep the cursor in the same position. -Files: src/edit.c - -Patch 6.0.092 -Problem: The explorer plugin doesn't ignore case of 'suffixes' on - MS-Windows. (Mike Williams) -Solution: Match or ignore case as appropriate for the OS. -Files: runtime/plugin/explorer.vim - -Patch 6.0.093 -Problem: When the Tcl library couldn't be loaded dynamically, get an error - message when closing a buffer or window. (Muraoka Taro) -Solution: Only free structures if already using the Tcl interpreter. -Files: src/if_tcl.c - -Patch 6.0.094 -Problem: Athena: When clicking in the horizontal scrollbar Vim crashes. - (Paul Ackersviller) -Solution: Use the thumb size instead of the window pointer of the scrollbar - (which is NULL). (David Harrison) - Also avoid that scrolling goes the wrong way in a narrow window. -Files: src/gui_athena.c - -Patch 6.0.095 -Problem: Perl: Deleting lines may leave the cursor beyond the end of the - file. -Solution: Check the cursor position after deleting a line. (Serguei) -Files: src/if_perl.xs - -Patch 6.0.096 -Problem: When ":saveas fname" fails because the file already exists, the - file name is changed anyway and a following ":w" will overwrite - the file. (Eric Carlier) -Solution: Don't change the file name if the file already exists. -Files: src/ex_cmds.c - -Patch 6.0.097 -Problem: Re-indenting in Insert mode with CTRL-F may cause a crash with a - multi-byte encoding. -Solution: Avoid using a character before the start of a line. (Sergey - Vlasov) -Files: src/edit.c - -Patch 6.0.098 -Problem: GTK: When using Gnome the "Search" and "Search and Replace" dialog - boxes are not translated. -Solution: Define ENABLE_NLS before including gnome.h. (Eduardo Fernandez) -Files: src/gui_gtk.c, src/gui_gtk_x11.c - -Patch 6.0.099 -Problem: Cygwin: When running Vi compatible MS-DOS line endings cause - trouble. -Solution: Make the default for 'fileformats' "unix,dos" in Vi compatible - mode. (Michael Schaap) -Files: src/option.h - -Patch 6.0.100 -Problem: ":badd +0 test%file" causes a crash. -Solution: Take into account that the "+0" is NUL terminated when allocating - room for replacing the "%". -Files: src/ex_docmd.c - -Patch 6.0.101 -Problem: ":mksession" doesn't restore editing a file that has a '#' or '%' - in its name. (Wolfgang Blankenburg) -Solution: Put a backslash before the '#' and '%'. -Files: src/ex_docmd.c - -Patch 6.0.102 -Problem: When changing folds the cursor may appear halfway a closed fold. - (Nam SungHyun) -Solution: Set w_cline_folded correctly. (Yasuhiro Matsumoto) -Files: src/move.c - -Patch 6.0.103 -Problem: When using 'scrollbind' a large value of 'scrolloff' will make the - scroll binding stop near the end of the file. (Coen Engelbarts) -Solution: Don't use 'scrolloff' when limiting the topline for scroll - binding. (Dany StAmant) -Files: src/normal.c - -Patch 6.0.104 -Problem: Multi-byte: When '$' is in 'cpoptions', typing a double-wide - character that overwrites the left halve of an old double-wide - character causes a redraw problem and the cursor stops blinking. -Solution: Clear the right half of the old character. (Yasuhiro Matsumoto) -Files: src/edit.c, src/screen.c - -Patch 6.0.105 -Problem: Multi-byte: In a window of one column wide, with syntax - highlighting enabled a crash might happen. -Solution: Skip getting the syntax attribute when the character doesn't fit - anyway. (Yasuhiro Matsumoto) -Files: src/screen.c - -Patch 6.0.106 (extra) -Problem: Win32: When the printer font is wrong, there is no error message. -Solution: Give an appropriate error message. (Yasuhiro Matsumoto) -Files: src/os_mswin.c - -Patch 6.0.107 (extra) -Problem: VisVim: When editing another file, a modified file may be written - unexpectedly and without warning. -Solution: Split the window if a file was modified. -Files: VisVim/Commands.cpp - -Patch 6.0.108 -Problem: When using folding could try displaying line zero, resulting in an - error for a NULL pointer. -Solution: Stop decrementing w_topline when the first line of a window is in - a closed fold. -Files: src/window.c - -Patch 6.0.109 -Problem: XIM: When the input method is enabled, repeating an insertion with - "." disables it. (Marcel Svitalsky) -Solution: Don't store the input method status when a command comes from the - stuff buffer. -Files: src/ui.c - -Patch 6.0.110 -Problem: Using undo after executing "OxjAxkdd" from a register in - an empty buffer gives an error message. (Gerhard Hochholzer) -Solution: Don't adjust the bottom line number of an undo block when it's - zero. Add a test for this problem. -Files: src/undo.c, src/testdir/test20.in, src/testdir/test20.ok - -Patch 6.0.111 -Problem: The virtcol() function doesn't take care of 'virtualedit'. -Solution: Add the column offset when needed. (Yegappan Lakshmanan) -Files: src/eval.c - -Patch 6.0.112 -Problem: The explorer plugin doesn't sort directories with a space or - special character after a directory with a shorter name. -Solution: Ignore the trailing slash when comparing directory names. (Mike - Williams) -Files: runtime/plugin/explorer.vim - -Patch 6.0.113 -Problem: ":edit ~/fname" doesn't work if $HOME includes a space. Also, - expanding wildcards with the shell may fail. (John Daniel) -Solution: Escape spaces with a backslash when needed. -Files: src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/os_unix.c - -Patch 6.0.114 -Problem: Using ":p" with fnamemodify() didn't expand "~/" or "~user/" to a - full path. For Win32 the current directory was prepended. - (Michael Geddes) -Solution: Expand the home directory. -Files: src/eval.c - -Patch 6.0.115 (extra) -Problem: Win32: When using a dialog with a textfield it cannot scroll the - text. -Solution: Add ES_AUTOHSCROLL to the textfield style. (Pedro Gomes) -Files: src/gui_w32.c - -Patch 6.0.116 (extra) -Problem: MS-Windows NT/2000/XP: filewritable() doesn't work correctly for - filesystems that use ACLs. -Solution: Use ACL functions to check if a file is writable. (Mike Williams) -Files: src/eval.c, src/macros.h, src/os_win32.c, src/proto/os_win32.pro - -Patch 6.0.117 (extra) -Problem: Win32: when disabling the menu, "set lines=999" doesn't use all - the available screen space. -Solution: Don't subtract the fixed caption height but the real menu height - from the available screen space. Also: Avoid recursion in - gui_mswin_get_menu_height(). -Files: src/gui_w32.c, src/gui_w48.c - -Patch 6.0.118 -Problem: When $TMPDIR is a relative path, the temp directory is missing a - trailing slash and isn't deleted when Vim exits. (Peter Holm) -Solution: Add the slash after expanding the directory to an absolute path. -Files: src/fileio.c - -Patch 6.0.119 (depends on patch 6.0.116) -Problem: VMS: filewritable() doesn't work properly. -Solution: Use the same method as for Unix. (Zoltan Arpadffy) -Files: src/eval.c - -Patch 6.0.120 -Problem: The conversion to html isn't compatible with XHTML. -Solution: Quote the values. (Jess Thrysoee) -Files: runtime/syntax/2html.vim - -Patch 6.0.121 (extra) (depends on patch 6.0.116) -Problem: Win32: After patch 6.0.116 Vim doesn't compile with mingw32. -Solution: Add an #ifdef HAVE_ACL. -Files: src/os_win32.c - -Patch 6.0.122 (extra) -Problem: Win16: Same resize problems as patch 6.0.117 fixed for Win32. And - dialog textfield problem from patch 6.0.115. -Solution: Set old_menu_height only when used. Add ES_AUTOHSCROLL flag. - (Vince Negri) -Files: src/gui_w16.c - -Patch 6.0.123 (depends on patch 6.0.119) -Problem: Win16: Compilation problems. -Solution: Move "&&" to other lines. (Vince Negri) -Files: src/eval.c - -Patch 6.0.124 -Problem: When using a ":substitute" command that starts with "\=" - (evaluated as an expression), "~" was still replaced with the - previous substitute string. -Solution: Skip the replacement when the substitute string starts with "\=". - Also adjust the documentation about doubling backslashes. -Files: src/ex_cmds.c, runtime/doc/change.txt - -Patch 6.0.125 (extra) -Problem: Win32: When using the multi_byte_ime feature pressing the shift - key would be handled as if a character was entered, thus mappings - with a shifted key didn't work. (Charles Campbell) -Solution: Ignore pressing the shift, control and alt keys. -Files: src/os_win32.c - -Patch 6.0.126 -Problem: The python library was always statically linked. -Solution: Link the python library dynamically. (Matthias Klose) -Files: src/auto/configure, src/configure.in - -Patch 6.0.127 -Problem: When using a terminal that swaps screens and the Normal background - color has a different background, using an external command may - cause the color of the wrong screen to be changed. (Mark Waggoner) -Solution: Don't call screen_stop_highlight() in stoptermcap(). -Files: src/term.c - -Patch 6.0.128 -Problem: When moving a vertically split window to the far left or right, - the scrollbars are not adjusted. (Scott E Lee) When 'mousefocus' - is set the mouse pointer wasn't adjusted. -Solution: Adjust the scrollbars and the mouse pointer. -Files: src/window.c - -Patch 6.0.129 -Problem: When using a very long file name, ":ls" (repeated a few times) - causes a crash. Test with "vim `perl -e 'print "A"x1000'`". - (Tejeda) -Solution: Terminate a string before getting its length in buflist_list(). -Files: src/buffer.c - -Patch 6.0.130 -Problem: When using ":cprev" while the error window is open, and the new - line at the top wraps, the window isn't correctly drawn. - (Yegappan Lakshmanan) -Solution: When redrawing the topline don't scroll twice. -Files: src/screen.c - -Patch 6.0.131 -Problem: When using bufname() and there are two matches for listed buffers - and one match for an unlisted buffer, the unlisted buffer is used. - (Aric Blumer) -Solution: When there is a match with a listed buffer, don't check for - unlisted buffers. -Files: src/buffer.c - -Patch 6.0.132 -Problem: When setting 'iminsert' in the vimrc and using an xterm with two - screens the ruler is drawn in the wrong screen. (Igor Goldenberg) -Solution: Only draw the ruler when using the right screen. -Files: src/option.c - -Patch 6.0.133 -Problem: When opening another buffer while 'keymap' is set and 'iminsert' - is zero, 'iminsert' is set to one unexpectedly. (Igor Goldenberg) -Solution: Don't set 'iminsert' as a side effect of defining a ":lmap" - mapping. Only do that when 'keymap' is set. -Files: src/getchar.c, src/option.c - -Patch 6.0.134 -Problem: When completing ":set tags=" a path with an embedded space causes - the completion to stop. (Sektor van Skijlen) -Solution: Escape spaces with backslashes, like for ":set path=". Also take - backslashes into account when searching for the start of the path - to complete (e.g., for 'backupdir' and 'cscopeprg'). -Files: src/ex_docmd.c, src/ex_getln.c, src/option.c, src/structs.h - -Patch 6.0.135 -Problem: Menus that are not supposed to do anything used "<Nul>", which - still produced an error beep. - When CTRL-O is mapped for Insert mode, ":amenu" commands didn't - work in Insert mode. - Menu language falls back to English when $LANG ends in "@euro". -Solution: Use "<Nop>" for a menu item that doesn't do anything, just like - mappings. - Use ":anoremenu" instead of ":amenu". - Ignore "@euro" in the locale name. -Files: runtime/makemenu.vim, runtime/menu.vim, src/menu.c - -Patch 6.0.136 -Problem: When completing in Insert mode, a mapping could be unexpectedly - applied. -Solution: Don't use mappings when checking for a typed character. -Files: src/edit.c - -Patch 6.0.137 -Problem: GUI: When using the find or find/replace dialog from Insert mode, - the input mode is stopped. -Solution: Don't use the input method status when the main window doesn't - have focus. -Files: src/ui.c - -Patch 6.0.138 -Problem: GUI: When using the find or find/replace dialog from Insert mode, - the text is inserted when CTRL-O is mapped. (Andre Pang) - When opening the dialog again, a whole word search isn't - recognized. - When doing "replace all" a whole word search was never done. -Solution: Don't put a search or replace command in the input buffer, - execute it directly. - Recognize "\<" and "\>" after removing "\V". - Add "\<" and "\>" also for "replace all". -Files: src/gui.c - -Patch 6.0.139 -Problem: When stopping 'wildmenu' completion, the statusline of the - bottom-left vertically split window isn't redrawn. (Yegappan - Lakshmanan) -Solution: Redraw all the bottom statuslines. -Files: src/ex_getln.c, src/proto/screen.pro, src/screen.c - -Patch 6.0.140 -Problem: Memory allocated for local mappings and abbreviations is leaked - when the buffer is wiped out. -Solution: Clear the local mappings when deleting a buffer. -Files: src/buffer.c, src/getchar.c, src/proto/getchar.pro, src/vim.h - -Patch 6.0.141 -Problem: When using ":enew" in an empty buffer, some buffer-local things - are not cleared. b:keymap_name is not set. -Solution: Clear user commands and mappings local to the buffer when re-using - the current buffer. Reload the keymap. -Files: src/buffer.c - -Patch 6.0.142 -Problem: When Python is linked statically, loading dynamic extensions might - fail. -Solution: Add an extra linking flag when needed. (Andrew Rodionoff) -Files: src/configure.in, src/auto/configure - -Patch 6.0.143 -Problem: When a syntax item includes a line break in a pattern, the syntax - may not be updated properly when making a change. -Solution: Add the "linebreaks" argument to ":syn sync". -Files: runtime/doc/syntax.txt, src/screen.c, src/structs.h, src/syntax.c - -Patch 6.0.144 -Problem: After patch 6.0.088 redoing "veU" doesn't work. -Solution: Don't add the "U" to the redo buffer, it will be used as an undo - command. -Files: src/normal.c - -Patch 6.0.145 -Problem: When Vim can't read any input it might get stuck. When - redirecting stdin and stderr Vim would not read commands from a - file. (Servatius Brandt) -Solution: When repeatedly trying to read a character when it's not possible, - exit Vim. When stdin and stderr are not a tty, still try reading - from them, but don't do a blocking wait. -Files: src/ui.c - -Patch 6.0.146 -Problem: When 'statusline' contains "%{'-'}" this results in a zero. - (Milan Vancura) -Solution: Don't handle numbers with a minus as a number, they were not - displayed anyway. -Files: src/buffer.c - -Patch 6.0.147 -Problem: It's not easy to mark a Vim version as being modified. The new - license requires this. -Solution: Add the --modified-by argument to configure and the MODIFIED_BY - define. It's used in the intro screen and the ":version" output. -Files: src/auto/configure, src/configure.in, src/config.h.in, - src/feature.h, src/version.c - -Patch 6.0.148 -Problem: After "p" in an empty line, `[ goes to the second character. - (Kontra Gergely) -Solution: Don't increment the column number in an empty line. -Files: src/ops.c - -Patch 6.0.149 -Problem: The pattern "\(.\{-}\)*" causes a hang. When using a search - pattern that causes a stack overflow to be detected Vim could - still hang. -Solution: Correctly report "operand could be empty" when using "\{-}". - Check for "out_of_stack" inside loops to avoid a hang. -Files: src/regexp.c - -Patch 6.0.150 -Problem: When using a multi-byte encoding, patch 6.0.148 causes "p" to work - like "P". (Sung-Hyun Nam) -Solution: Compute the byte length of a multi-byte character. -Files: src/ops.c - -Patch 6.0.151 -Problem: Redrawing the status line and ruler can be wrong when it contains - multi-byte characters. -Solution: Use character width and byte length correctly. (Yasuhiro Matsumoto) -Files: src/screen.c - -Patch 6.0.152 -Problem: strtrans() could hang on an illegal UTF-8 byte sequence. -Solution: Skip over illegal bytes. (Yasuhiro Matsumoto) -Files: src/charset.c - -Patch 6.0.153 -Problem: When using (illegal) double-byte characters and Vim syntax - highlighting Vim can crash. (Yasuhiro Matsumoto) -Solution: Increase a pointer over a character instead of a byte. -Files: src/regexp.c - -Patch 6.0.154 -Problem: MS-DOS and MS-Windows: The menu entries for xxd don't work when - there is no xxd in the path. - When converting back from Hex the filetype may remain "xxd" if it - is not detected. -Solution: When xxd is not in the path use the one in the runtime directory, - where the install program has put it. - Clear the 'filetype' option before detecting the new value. -Files: runtime/menu.vim - -Patch 6.0.155 -Problem: Mac: compilation problems in ui.c after patch 6.0.145. (Axel - Kielhorn) -Solution: Don't call mch_inchar() when NO_CONSOLE is defined. -Files: src/ui.c - -Patch 6.0.156 -Problem: Starting Vim with the -b argument and two files, ":next" doesn't - set 'binary' in the second file, like Vim 5.7. (Norman Diamond) -Solution: Set the global value for 'binary'. -Files: src/option.c - -Patch 6.0.157 -Problem: When defining a user command with "-complete=dir" files will also - be expanded. Also, "-complete=mapping" doesn't appear to work. - (Michael Naumann) -Solution: Use the expansion flags defined with the user command. - Handle expanding mappings specifically. -Files: src/ex_docmd.c - -Patch 6.0.158 -Problem: When getting the warning for a file being changed outside of Vim - and reloading the file, the 'readonly' option is reset, even when - the permissions didn't change. (Marcel Svitalsky) -Solution: Keep 'readonly' set when reloading a file and the permissions - didn't change. -Files: src/fileio.c - -Patch 6.0.159 -Problem: Wildcard expansion for ":emenu" also shows separators. -Solution: Skip menu separators for ":emenu", ":popup" and ":tearoff". - Also, don't handle ":tmenu" as if it was ":tearoff". And leave - out the alternatives with "&" included. -Files: src/menu.c - -Patch 6.0.160 -Problem: When compiling with GCC 3.0.2 and using the "-O2" argument, the - optimizer causes a problem that makes Vim crash. -Solution: Add a configure check to avoid "-O2" for this version of gcc. -Files: src/configure.in, src/auto/configure - -Patch 6.0.161 (extra) -Problem: Win32: Bitmaps don't work with signs. -Solution: Make it possible to use bitmaps with signs. (Muraoka Taro) -Files: src/ex_cmds.c, src/feature.h, src/gui_w32.c, src/gui_x11.c, - src/proto/gui_w32.pro, src/proto/gui_x11.pro - -Patch 6.0.162 -Problem: Client-server: An error message for a wrong expression appears in - the server instead of the client. -Solution: Pass the error message from the server to the client. Also - adjust the example code. (Flemming Madsen) -Files: src/globals.h, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c, - src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro, - runtime/doc/eval.txt, runtime/tools/xcmdsrv_client.c - -Patch 6.0.163 -Problem: When using a GUI dialog, a file name is sometimes used like it was - a directory. -Solution: Separate path and file name properly. - For GTK, Motif and Athena concatenate directory and file name for - the default selection. -Files: src/diff.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, - src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c, src/message.c - -Patch 6.0.164 -Problem: After patch 6.0.135 the menu entries for pasting don't work in - Insert and Visual mode. (Muraoka Taro) -Solution: Add <script> to allow script-local mappings. -Files: runtime/menu.vim - -Patch 6.0.165 -Problem: Using --remote and executing locally gives unavoidable error - messages. -Solution: Add --remote-silent and --remote-wait-silent to silently execute - locally. - For Win32 there was no error message when a server didn't exist. -Files: src/eval.c, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c, - src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro - -Patch 6.0.166 -Problem: GUI: There is no way to avoid dialogs to pop up. -Solution: Add the 'c' flag to 'guioptions': Use console dialogs. (Yegappan - Lakshmanan) -Files: runtime/doc/options.txt, src/option.h, src/message.c - -Patch 6.0.167 -Problem: When 'fileencodings' is "latin2" some characters in the help files - are displayed wrong. -Solution: Force the 'fileencoding' for the help files to be "latin1". -Files: src/fileio.c - -Patch 6.0.168 -Problem: ":%s/\n/#/" doesn't replace at an empty line. (Bruce DeVisser) -Solution: Don't skip matches after joining two lines. -Files: src/ex_cmds.c - -Patch 6.0.169 -Problem: When run as evim and the GUI can't be started we get stuck in a - terminal without menus in Insert mode. -Solution: Exit when using "evim" and "gvim -y" when the GUI can't be - started. -Files: src/main.c - -Patch 6.0.170 -Problem: When printing double-width characters the size of tabs after them - is wrong. (Muraoka Taro) -Solution: Correctly compute the column after a double-width character. -Files: src/ex_cmds2.c - -Patch 6.0.171 -Problem: With 'keymodel' including "startsel", in Insert mode after the end - of a line, shift-Left does not move the cursor. (Steve Hall) -Solution: CTRL-O doesn't move the cursor left, need to do that explicitly. -Files: src/edit.c - -Patch 6.0.172 -Problem: CTRL-Q doesn't replace CTRL-V after CTRL-X in Insert mode while it - does in most other situations. -Solution: Make CTRL-X CTRL-Q work like CTRL-X CTRL-V in Insert mode. -Files: src/edit.c - -Patch 6.0.173 -Problem: When using "P" to insert a line break the cursor remains past the - end of the line. -Solution: Check for the cursor being beyond the end of the line. -Files: src/ops.c - -Patch 6.0.174 -Problem: After using "gd" or "gD" the search direction for "n" may still be - backwards. (Servatius Brandt) -Solution: Reset the search direction to forward. -Files: src/normal.c, src/search.c, src/proto/search.pro - -Patch 6.0.175 -Problem: ":help /\z(\)" doesn't work. (Thomas Koehler) -Solution: Double the backslashes. -Files: src/ex_cmds.c - -Patch 6.0.176 -Problem: When killed by a signal autocommands are still triggered as if - nothing happened. -Solution: Add the v:dying variable to allow autocommands to work differently - when a deadly signal has been trapped. -Files: src/eval.c, src/os_unix.c, src/vim.h - -Patch 6.0.177 -Problem: When 'commentstring' is empty and 'foldmethod' is "marker", "zf" - doesn't work. (Thomas S. Urban) -Solution: Add the marker even when 'commentstring' is empty. -Files: src/fold.c, src/normal.c - -Patch 6.0.178 -Problem: Uninitialized memory read from xp_backslash field. -Solution: Initialize xp_backslash field properly. -Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/misc1.c, src/tag.c - -Patch 6.0.179 -Problem: Win32: When displaying UTF-8 characters may read uninitialized - memory. -Solution: Add utfc_ptr2len_check_len() to avoid reading past the end of a - string. -Files: src/mbyte.c, src/proto/mbyte.pro, src/gui_w32.c - -Patch 6.0.180 -Problem: Expanding environment variables in a string that ends in a - backslash could go past the end of the string. -Solution: Detect the trailing backslash. -Files: src/misc1.c - -Patch 6.0.181 -Problem: When using ":cd dir" memory was leaked. -Solution: Free the allocated memory. Also avoid an uninitialized memory - read. -Files: src/misc2.c - -Patch 6.0.182 -Problem: When using a regexp on multi-byte characters, could try to read a - character before the start of the line. -Solution: Don't decrement a pointer to before the start of the line. -Files: src/regexp.c - -Patch 6.0.183 -Problem: Leaking memory when ":func!" redefines a function. -Solution: Free the function name when it's not used. -Files: src/eval.c - -Patch 6.0.184 -Problem: Leaking memory when expanding option values. -Solution: Don't always copy the expanded option into allocated memory. -Files: src/option.c - -Patch 6.0.185 -Problem: Crash in Vim when pasting a selection in another application, on a - 64 bit machine. -Solution: Fix the format for an Atom to 32 bits. (Peter Derr) -Files: src/ui.c - -Patch 6.0.186 -Problem: X11: Three warnings when compiling the client-server code. -Solution: Add a typecast to unsigned char. -Files: src/if_xcmdsrv.c - -Patch 6.0.187 -Problem: "I" in Visual mode and then "u" reports too many changes. (Andrew - Stryker) - "I" in Visual linewise mode adjusts the indent for no apparent - reason. -Solution: Only save those lines for undo that are changed. - Don't change the indent after inserting in Visual linewise mode. -Files: src/ops.c - -Patch 6.0.188 -Problem: Win32: After patch 6.0.161 signs defined in the vimrc file don't - work. -Solution: Initialize the sign icons after initializing the GUI. (Vince - Negri) -Files: src/gui.c, src/gui_x11.c - -Patch 6.0.189 -Problem: The size of the Visual area isn't always displayed when scrolling - ('ruler' off, 'showcmd' on). Also not when using a search - command. (Sylvain Hitier) -Solution: Redisplay the size of the selection after showing the mode. -Files: src/screen.c - -Patch 6.0.190 -Problem: GUI: when 'mouse' is empty a click with the middle button still - moves the cursor. -Solution: Paste at the cursor position instead of the mouse position. -Files: src/normal.c - -Patch 6.0.191 -Problem: When no servers are available serverlist() gives an error instead - of returning an empty string. (Hari Krishna) -Solution: Don't give an error message. -Files: src/eval.c - -Patch 6.0.192 -Problem: When 'virtualedit' is set, "ylj" goes to the wrong column. (Andrew - Nikitin) -Solution: Reset the flag that w_virtcol is valid when moving the cursor back - to the start of the operated area. -Files: src/normal.c - -Patch 6.0.193 -Problem: When 'virtualedit' is set, col(".") after the end of the line - should return one extra. -Solution: Add one to the column. -Files: src/eval.c - -Patch 6.0.194 -Problem: "--remote-silent" tries to send a reply to the client, like it was - "--remote-wait". -Solution: Properly check for the argument. -Files: src/main.c - -Patch 6.0.195 -Problem: When 'virtualedit' is set and a search starts in virtual space - ":call search('x')" goes to the wrong position. (Eric Long) -Solution: Reset coladd when finding a match. -Files: src/search.c - -Patch 6.0.196 -Problem: When 'virtualedit' is set, 'selection' is "exclusive" and visually - selecting part of a tab at the start of a line, "x" joins it with - the previous line. Also, when the selection spans more than one - line the whole tab is deleted. -Solution: Take coladd into account when adjusting for 'selection' being - "exclusive". Also expand a tab into spaces when deleting more - than one line. -Files: src/normal.c, src/ops.c - -Patch 6.0.197 -Problem: When 'virtualedit' is set and 'selection' is "exclusive", "v$x" - doesn't delete the last character in the line. (Eric Long) -Solution: Don't reset the inclusive flag. (Helmut Stiegler) -Files: src/normal.c - -Patch 6.0.198 -Problem: When 'virtualedit' is set and 'showbreak' is not empty, moving the - cursor over the line break doesn't work properly. (Eric Long) -Solution: Make getviscol() and getviscol2() use getvvcol() to obtain the - virtual cursor position. Adjust coladvance() and oneleft() to - skip over the 'showbreak' characters. -Files: src/edit.c, src/misc2.c - -Patch 6.0.199 -Problem: Multi-byte: could use iconv() after calling iconv_end(). - (Yasuhiro Matsumoto) -Solution: Stop converting input and output stream after calling iconv_end(). -Files: src/mbyte.c - -Patch 6.0.200 -Problem: A script that starts with "#!perl" isn't recognized as a Perl - filetype. -Solution: Ignore a missing path in a script header. Also, speed up - recognizing scripts by simplifying the patterns used. -Files: runtime/scripts.vim - -Patch 6.0.201 -Problem: When scrollbinding and doing a long jump, switching windows jumps - to another position in the file. Scrolling a few lines at a time - is OK. (Johannes Zellner) -Solution: When setting w_topline reset the flag that indicates w_botline is - valid. -Files: src/diff.c - -Patch 6.0.202 -Problem: The "icon=" argument for the menu command to define a toolbar icon - with a file didn't work for GTK. (Christian J. Robinson) - For Motif and Athena a full path was required. -Solution: Search the icon file using the specified path. Expand environment - variables in the file name. -Files: src/gui_gtk.c, src/gui_x11.c - -Patch 6.0.203 -Problem: Can change 'fileformat' even though 'modifiable' is off. - (Servatius Brandt) -Solution: Correct check for kind of set command. -Files: src/option.c - -Patch 6.0.204 -Problem: ":unlet" doesn't work for variables with curly braces. (Thomas - Scott Urban) -Solution: Handle variable names with curly braces properly. (Vince Negri) -Files: src/eval.c - -Patch 6.0.205 (extra) -Problem: "gvim -f" still forks when using the batch script to start Vim. -Solution: Add an argument to "start" to use a foreground session (Michael - Geddes) -Files: src/dosinst.c - -Patch 6.0.206 -Problem: Unix: if expanding a wildcard in a file name results in a - wildcard character and there are more parts in the path with a - wildcard, it is expanded again. - Windows: ":edit \[abc]" could never edit the file "[abc]". -Solution: Don't expand wildcards in already expanded parts. - Don't remove backslashes used to escape the special meaning of a - wildcard; can edit "[abc]" if '[' is removed from 'isfname'. -Files: src/misc1.c, src/os_unix.c - -Patch 6.0.207 (extra) -Problem: Win32: The shortcuts and start menu entries let Vim startup in the - desktop directory, which is not very useful. -Solution: Let shortcuts start Vim in $HOME or $HOMEDIR$HOMEPATH. -Files: src/dosinst.c - -Patch 6.0.208 -Problem: GUI: When using a keymap and the cursor is not blinking, CTRL-^ in - Insert mode doesn't directly change the cursor color. (Alex - Solow) -Solution: Force a redraw of the cursor after CTRL-^. -Files: src/edit.c - -Patch 6.0.209 -Problem: GUI GTK: After selecting a 'guifont' with the font dialog there - are redraw problems for multi-byte characters. -Solution: Separate the font dialog from setting the new font name to avoid - that "*" is used to find wide and bold fonts. - When redrawing extra characters for the bold trick, take care of - UTF-8 characters. -Files: src/gui.c, src/gui_gtk_x11.c, src/option.c, src/proto/gui.pro, - src/proto/gui_gtk_x11.pro - -Patch 6.0.210 -Problem: After patch 6.0.167 it's no longer possible to edit a help file in - another encoding than latin1. -Solution: Let the "++enc=" argument overrule the encoding. -Files: src/fileio.c - -Patch 6.0.211 -Problem: When reading a file fails, the buffer is empty, but it might still - be possible to write it with ":w" later. The original file is - lost then. (Steve Amerige) -Solution: Set the 'readonly' option for the buffer. -Files: src/fileio.c - -Patch 6.0.212 -Problem: GUI GTK: confirm("foo", "") causes a crash. -Solution: Don't make a non-existing button the default. Add a default "OK" - button if none is specified. -Files: src/eval.c, src/gui_gtk.c - -Patch 6.0.213 -Problem: When a file name contains unprintable characters, CTRL-G and other - commands don't work well. -Solution: Turn unprintable into printable characters. (Yasuhiro Matsumoto) -Files: src/buffer.c, src/charset.c - -Patch 6.0.214 -Problem: When there is a buffer without a name, empty entries appear in the - jumplist saved in the viminfo file. -Solution: Don't write jumplist entries without a file name. -Files: src/mark.c - -Patch 6.0.215 -Problem: After using "/" from Visual mode the Paste menu and Toolbar - entries don't work. Pasting with the middle mouse doesn't work - and modeless selection doesn't work. -Solution: Use the command line mode menus and use the mouse like in the - command line. -Files: src/gui.c, src/menu.c, src/ui.c - -Patch 6.0.216 -Problem: After reloading a file, displayed in another window than the - current one, which was changed outside of Vim the part of the file - around the cursor set by autocommands may be displayed, but - jumping back to the original cursor position when entering the - window again. -Solution: Restore the topline of the window. -Files: src/fileio.c - -Patch 6.0.217 -Problem: When getting help from a help file that was used before, an empty - unlisted buffer remains in the buffer list. (Eric Long) -Solution: Wipe out the buffer used to do the tag jump from. -Files: src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro - -Patch 6.0.218 -Problem: With explorer plugin: "vim -o filename dirname" doesn't load the - explorer window until entering the window. -Solution: Call s:EditDir() for each window after starting up. -Files: runtime/plugin/explorer.vim - -Patch 6.0.219 -Problem: ":setlocal" and ":setglobal", without arguments, display terminal - options. (Zdenek Sekera) -Solution: Skip terminal options for these two commands. -Files: src/option.c - -Patch 6.0.220 -Problem: After patch 6.0.218 get a beep on startup. (Muraoka Taro) -Solution: Don't try going to another window when there isn't one. -Files: runtime/plugin/explorer.vim - -Patch 6.0.221 -Problem: When using ":bdel" and all other buffers are unloaded the lowest - numbered buffer is jumped to instead of the most recent one. (Dave - Cecil) -Solution: Prefer an unloaded buffer from the jumplist. -Files: src/buffer.c - -Patch 6.0.222 -Problem: When 'virtualedit' is set and using autoindent, pressing Esc after - starting a new line leaves behind part of the autoindent. (Helmut - Stiegler) -Solution: After deleting the last char in the line adjust the cursor - position in del_bytes(). -Files: src/misc1.c, src/ops.c - -Patch 6.0.223 -Problem: When splitting a window that contains the explorer, hitting CR on - a file name gives error messages. -Solution: Set the window variables after splitting the window. -Files: runtime/plugin/explorer.vim - -Patch 6.0.224 -Problem: When 'sidescroll' and 'sidescrolloff' are set in a narrow window - the text may jump left-right and the cursor is displayed in the - wrong position. (Aric Blumer) -Solution: When there is not enough room, compute the left column for the - window to put the cursor in the middle. -Files: src/move.c - -Patch 6.0.225 -Problem: In Visual mode "gk" gets stuck in a closed fold. (Srinath - Avadhanula) -Solution: Behave differently in a closed fold. -Files: src/normal.c - -Patch 6.0.226 -Problem: When doing ":recover file" get the ATTENTION prompt. - After recovering the same file five times get a read error or a - crash. (Alex Davis) -Solution: Set the recoverymode flag before setting the file name. - Correct the amount of used memory for the size of block zero. -Files: src/ex_docmd.c - -Patch 6.0.227 (extra) -Problem: The RISC OS port has several problems. -Solution: Update the makefile and fix some of the problems. (Andy Wingate) -Files: src/Make_ro.mak, src/os_riscos.c, src/os_riscos.h, - src/proto/os_riscos.pro, src/search.c - -Patch 6.0.228 -Problem: After putting text in Visual mode the '] mark is not at the end of - the put text. - Undo doesn't work properly when putting a word into a Visual - selection that spans more than one line. -Solution: Correct the '] mark for the deleting the Visually selected text. - #ifdef code that depends on FEAT_VISUAL properly. - Also fix that "d" crossing line boundary puts '[ just before - deleted text. - Fix undo by saving all deleted lines at once. -Files: src/ex_docmd.c, src/globals.h, src/normal.c, src/ops.c, - src/structs.h, src/vim.h - -Patch 6.0.229 -Problem: Multi-byte: With 'm' in 'formatoptions', formatting doesn't break - at a multi-byte char followed by an ASCII char, and the other way - around. (Muraoka Taro) - When joining lines a space is inserted between multi-byte - characters, which is not always wanted. -Solution: Check for multi-byte character before and after the breakpoint. - Don't insert a space before or after a multi-byte character when - joining lines and the 'M' flag is in 'formatoptions'. Don't - insert a space between multi-byte characters when the 'B' flag is - in 'formatoptions'. -Files: src/edit.c, src/ops.c, src/option.h - -Patch 6.0.230 -Problem: The ":" used as a motion after an operator is exclusive, but - sometimes it should be inclusive. -Solution: Make the "v" in between an operator and motion toggle - inclusive/exclusive. (Servatius Brandt) -Files: runtime/doc/motion.txt, src/normal.c - -Patch 6.0.231 -Problem: "gd" and "gD" don't work when the variable matches in a comment - just above the match to be found. (Servatius Brandt) -Solution: Continue searching in the first column below the comment. -Files: src/normal.c - -Patch 6.0.232 -Problem: "vim --version" prints on stderr while "vim --help" prints on - stdout. -Solution: Make "vim --version" use stdout. -Files: runtime/doc/starting.txt, src/globals.h, src/main.c, src/message.c - -Patch 6.0.233 -Problem: "\1\{,8}" in a regexp is not allowed, but it should work, because - there is an upper limit. (Jim Battle) -Solution: Allow using "\{min,max}" after an atom that can be empty if there - is an upper limit. -Files: src/regexp.c - -Patch 6.0.234 -Problem: It's not easy to set the cursor position without modifying marks. -Solution: Add the cursor() function. (Yegappan Lakshmanan) -Files: runtime/doc/eval.txt, src/eval.c - -Patch 6.0.235 -Problem: When writing a file and renaming the original file to make the - backup, permissions could change when setting the owner. -Solution: Only set the owner when it's needed and set the permissions again - afterwards. - When 'backupcopy' is "auto" check that the owner and permissions - of a newly created file can be set properly. -Files: src/fileio.c - -Patch 6.0.236 -Problem: ":edit" without argument should move cursor to line 1 in Vi - compatible mode. -Solution: Add 'g' flag to 'cpoptions'. -Files: runtime/doc/options.txt, src/ex_docmd.c, src/option.h - -Patch 6.0.237 -Problem: In a C file, using the filetype plugin, re-indenting a comment - with two spaces after the middle "*" doesn't align properly. -Solution: Don't use a middle entry from a start/middle/end to line up with - the start of the comment when the start part doesn't match with - the actual comment start. -Files: src/misc1.c - -Patch 6.0.238 -Problem: Using a ":substitute" command with a substitute() call in the - substitution expression causes errors. (Srinath Avadhanula) -Solution: Save and restore pointers when doing substitution recursively. -Files: src/regexp.c - -Patch 6.0.239 -Problem: Using "A" to append after a Visually selected block which is after - the end of the line, spaces are inserted in the wrong line and - other unexpected effects. (Michael Naumann) -Solution: Don't advance the cursor to the next line. -Files: src/ops.c - -Patch 6.0.240 -Problem: Win32: building with Python 2.2 doesn't work. -Solution: Add support for Python 2.2 with dynamic linking. (Paul Moore) -Files: src/if_python.c - -Patch 6.0.241 -Problem: Win32: Expanding the old value of an option that is a path that - starts with a backslash, an extra backslash is inserted. -Solution: Only insert backslashes where needed. - Also handle multi-byte characters properly when removing - backslashes. -Files: src/option.c - -Patch 6.0.242 -Problem: GUI: On a system with an Exceed X server sometimes get a "Bad - Window" error. (Tommi Maekitalo) -Solution: When forking, use a pipe to wait in the parent for the child to - have done the setsid() call. -Files: src/gui.c - -Patch 6.0.243 -Problem: Unix: "vim --version" outputs a NL before the last line instead of - after it. (Charles Campbell) -Solution: Send the NL to the same output stream as the text. -Files: src/message.c, src/os_unix.c, src/proto/message.pro - -Patch 6.0.244 -Problem: Multi-byte: Problems with (illegal) UTF-8 characters in menu and - file name (e.g., icon text, status line). -Solution: Correctly handle unprintable characters. Catch illegal UTF-8 - characters and replace them with <xx>. Truncating the status line - wasn't done correctly at a multi-byte character. (Yasuhiro - Matsumoto) - Added correct_cmdspos() and transchar_byte(). -Files: src/buffer.c, src/charset.c, src/ex_getln.c, src/gui.c, - src/message.c, src/screen.c, src/vim.h - -Patch 6.0.245 -Problem: After using a color scheme, setting the 'background' option might - not work. (Peter Horst) -Solution: Disable the color scheme if it switches 'background' back to the - wrong value. -Files: src/option.c - -Patch 6.0.246 -Problem: ":echomsg" didn't use the highlighting set by ":echohl". (Gary - Holloway) -Solution: Use the specified attributes for the message. (Yegappan - Lakshmanan) -Files: src/eval.c - -Patch 6.0.247 -Problem: GTK GUI: Can't use gvim in a kpart widget. -Solution: Add the "--echo-wid" argument to let Vim echo the window ID on - stdout. (Philippe Fremy) -Files: runtime/doc/starting.txt, src/globals.h, src/gui_gtk_x11.c, - src/main.c - -Patch 6.0.248 -Problem: When using compressed help files and 'encoding' isn't "latin1", - Vim converts the help file before decompressing. (David Reviejo) -Solution: Don't convert a help file when 'binary' is set. -Files: src/fileio.c - -Patch 6.0.249 -Problem: "vim -t edit -c 'sta ex_help'" doesn't move cursor to edit(). -Solution: Don't set the cursor on the first line for "-c" arguments when - there also is a "-t" argument. -Files: src/main.c - -Patch 6.0.250 (extra) -Problem: Macintosh: Various problems when compiling. -Solution: Various fixes, mostly #ifdefs. (Dany St. Amant) -Files: src/gui_mac.c, src/main.c, src/misc2.c, src/os_mac.h, - src/os_mac.pbproj/project.pbxproj, src/os_unix.c - -Patch 6.0.251 (extra) -Problem: Macintosh: menu shortcuts are not very clear. -Solution: Show the shortcut with the Mac clover symbol. (raindog) -Files: src/gui_mac.c - -Patch 6.0.252 -Problem: When a user function was defined with "abort", an error that is - not inside if/endif or while/endwhile doesn't abort the function. - (Servatius Brandt) -Solution: Don't reset did_emsg when the function is to be aborted. -Files: src/ex_docmd.c - -Patch 6.0.253 -Problem: When 'insertmode' is set, after "<C-O>:edit file" the next <C-O> - doesn't work. (Benji Fisher) <C-L> has the same problem. -Solution: Reset need_start_insertmode once in edit(). -Files: src/edit.c - -Patch 6.0.254 (extra) -Problem: Borland C++ 5.5: Checking for stack overflow doesn't work - correctly. Matters when using a complicated regexp. -Solution: Remove -N- from Make_bc5.mak. (Yasuhiro Matsumoto) -Files: src/Make_bc5.mak - -Patch 6.0.255 (extra) (depends on patch 6.0.116 and 6.0.121) -Problem: Win32: ACL support doesn't work well on Samba drives. -Solution: Add a check for working ACL support. (Mike Williams) -Files: src/os_win32.c - -Patch 6.0.256 (extra) -Problem: Win32: ":highlight Comment guifg=asdf" does not give an error - message. (Randall W. Morris) Also for other systems. -Solution: Add gui_get_color() to give one error message for all systems. -Files: src/gui.c, src/gui_amiga.c, src/gui_athena.c, src/gui_motif.c, - src/gui_riscos.c, src/gui_x11.c, src/gui_gtk_x11.c, - src/proto/gui.pro, src/syntax.c - -Patch 6.0.257 -Problem: Win32: When 'mousefocus' is set and there is a BufRead - autocommand, after the dialog for permissions changed outside of - Vim: 'mousefocus' stops working. (Robert Webb) -Solution: Reset need_mouse_correct after checking timestamps. -Files: src/fileio.c - -Patch 6.0.258 -Problem: When 'scrolloff' is 999 and there are folds, the text can jump up - and down when moving the cursor down near the end of the file. - (Lubomir Host) -Solution: When putting the cursor halfway the window start counting lines at - the end of a fold. -Files: src/move.c - -Patch 6.0.259 -Problem: MS-DOS: after editing the command line the cursor shape may remain - like in Insert mode. (Volker Kiefel) -Solution: Reset the cursor shape after editing the command line. -Files: src/ex_getln.c - -Patch 6.0.260 -Problem: GUI: May crash while starting up when giving an error message for - missing color. (Servatius Brandt) -Solution: Don't call gui_write() when still starting up. Don't give error - message for empty color name. Don't use 't_vb' while the GUI is - still starting up. -Files: src/fileio.c, src/gui.c, src/misc1.c, src/ui.c - -Patch 6.0.261 -Problem: nr2char() and char2nr() don't work with multi-byte characters. -Solution: Use 'encoding' for these functions. (Yasuhiro Matsumoto) -Files: runtime/doc/eval.txt, src/eval.c - -Patch 6.0.262 (extra) -Problem: Win32: IME doesn't work properly. OnImeComposition() isn't used - at all. -Solution: Adjust various things for IME. -Files: src/globals.h, src/gui_w32.c, src/mbyte.c, src/proto/ui.pro, - src/structs.h, src/ui.c - -Patch 6.0.263 -Problem: GTK: When a dialog is closed by the window manager, Vim hangs. - (Christian J. Robinson) -Solution: Use GTK_WIDGET_DRAWABLE() instead of GTK_WIDGET_VISIBLE(). -Files: src/gui_gtk.c, src/gui_gtk_x11.c - -Patch 6.0.264 -Problem: The amount of virtual memory is used to initialize 'maxmemtot', - which may be much more than the amount of physical memory, - resulting in a lot of swapping. -Solution: Get the amount of physical memory with sysctl(), sysconf() or - sysinfo() when possible. -Files: src/auto/configure, src/configure.in, src/config.h.in, - src/os_unix.c, src/os_unix.h - -Patch 6.0.265 -Problem: Win32: Using backspace while 'fkmap' is set causes a crash. - (Jamshid Oasjmoha) -Solution: Don't try mapping special keys. -Files: src/farsi.c - -Patch 6.0.266 -Problem: The rename() function deletes the file if the old and the new name - are the same. (Volker Kiefel) -Solution: Don't do anything if the names are equal. -Files: src/fileio.c - -Patch 6.0.267 -Problem: UTF-8: Although 'isprint' says a character is printable, - utf_char2cells() still considers it unprintable. -Solution: Use vim_isprintc() for characters upto 0x100. (Yasuhiro Matsumoto) -Files: src/mbyte.c - -Patch 6.0.268 (extra) (depends on patch 6.0.255) -Problem: Win32: ACL check crashes when using forward slash in file name. -Solution: Improve the check for the path in the file name. -Files: src/os_win32.c - -Patch 6.0.269 -Problem: Unprintable characters in a file name may cause problems when - using the 'statusline' option or when 'buftype' is "nofile". -Solution: call trans_characters() for the resulting statusline. (Yasuhiro - Matsumoto) -Files: src/buffer.c, src/screen.c, src/charset.c - -Patch 6.0.270 (depends on patch 6.0.267) -Problem: A tab causes UTF-8 text to be displayed in the wrong position. - (Ron Aaron) -Solution: Correct utf_char2cells() again. -Files: src/mbyte.c - -Patch 6.1a.001 (extra) -Problem: 32bit DOS: copying text to the clipboard may cause a crash. - (Jonathan D Johnston) -Solution: Don't copy one byte too much in SetClipboardData(). -Files: src/os_msdos.c - -Patch 6.1a.002 -Problem: GTK: On some configurations, when closing a dialog from the window - manager, Vim hangs. -Solution: Catch the "destroy" signal. (Aric Blumer) -Files: src/gui_gtk.c - -Patch 6.1a.003 -Problem: Multi-byte: With UTF-8 double-wide char and 'virtualedit' set: - yanking in Visual mode doesn't include the last byte. (Eric Long) -Solution: Don't add a space for a double-wide character. -Files: src/ops.c - -Patch 6.1a.004 (extra) -Problem: MINGW: undefined type. (Ron Aaron) -Solution: Make GetCompositionString_inUCS2() static. -Files: src/gui_w32.c, src/gui_w48.c, src/proto/gui_w32.pro - -Patch 6.1a.005 (extra) -Problem: Win32: ":hardcopy" doesn't work after ":hardcopy!". (Jonathan - Johnston) -Solution: Don't keep the driver context when using ":hardcopy!". (Vince - Negri) -Files: src/os_mswin.c - -Patch 6.1a.006 -Problem: multi-byte: after setting 'encoding' the window title might be - wrong. -Solution: Force resetting the title. (Yasuhiro Matsumoto) -Files: src/option.c - -Patch 6.1a.007 -Problem: Filetype detection for "*.inc" doesn't work. -Solution: Use a ":let" command. (David Schweikert) -Files: runtime/filetype.vim - -Patch 6.1a.008 (extra) -Problem: Win32: ACL detection for network shares doesn't work. -Solution: Include the trailing (back)slash in the root path. (Mike Williams) -Files: src/os_win32.c - -Patch 6.1a.009 -Problem: When using "\@<=" or "\@<!" in a pattern, a "\1" may refer to a () - part that follows, but it generates an error message. -Solution: Allow a forward reference when there is a following "\@<=" or - "\@<!". -Files: runtime/doc/pattern.txt, src/regexp.c - -Patch 6.1a.010 -Problem: When using ":help" and opening a new window, the alternate file - isn't set. -Solution: Set the alternate file to the previously edited file. -Files: src/ex_cmds.c - -Patch 6.1a.011 -Problem: GTK: ":set co=77", change width with the mouse, ":set co=77" - doesn't resize the window. (Darren Hiebert) -Solution: Set the form size after handling a resize event. -Files: src/gui_gtk_x11.c - -Patch 6.1a.012 -Problem: GTK: The file browser always returns a full path. (Lohner) -Solution: Shorten the file name if possible. -Files: src/gui_gtk.c - -Patch 6.1a.013 -Problem: When using "=~word" in 'cinkeys' or 'indentkeys', the case of the - last character of the word isn't ignored. (Raul Segura Acevedo) -Solution: Ignore case when checking the last typed character. -Files: src/edit.c - -Patch 6.1a.014 -Problem: After patch 6.1a.006 can't compile without the title feature. -Solution: Add an #ifdef. -Files: src/option.c - -Patch 6.1a.015 -Problem: MS-Windows: When expanding a file name that contains a '[' or '{' - an extra backslash is inserted. (Raul Segura Acevedo) -Solution: Avoid adding the backslash. -Files: src/ex_getln.c - -Patch 6.1a.016 -Problem: Completion after ":language" doesn't include "time". (Raul Segura - Acevedo) -Solution: Add the alternative to the completions. -Files: src/ex_cmds2.c - -Patch 6.1a.017 -Problem: Clicking the mouse in the top row of a window where the first line - doesn't fit moves the cursor to the wrong column. -Solution: Add the skipcol also for the top row of a window. -Files: src/ui.c - -Patch 6.1a.018 -Problem: When 'scrolloff' is one and the window height is one, "gj" can put - the cursor above the window. (Raul Segura Acevedo) -Solution: Don't let skipcol become bigger than the cursor column. -Files: src/move.c - -Patch 6.1a.019 -Problem: When using a composing character on top of an ASCII character, the - "l" command clears the composing character. Only when 'ruler' and - 'showcmd' are off. (Raphael Finkel) -Solution: Don't move the cursor by displaying characters when there are - composing characters. -Files: src/screen.c - -Patch 6.1a.020 -Problem: GTK: after patch 6.1a.011 resizing with the mouse doesn't always - work well for small sizes. (Adrien Beau) -Solution: Use another way to avoid the problem with ":set co=77". -Files: src/gui_gtk_x11.c - -Patch 6.1a.021 -Problem: Several Syntax menu entries are wrong or confusing. -Solution: Rephrase and correct the menu entries. (Adrien Beau) -Files: runtime/makemenu.vim, runtime/menu.vim - -Patch 6.1a.022 -Problem: A tags file might be used twice on case insensitive systems. - (Rick Swanton) -Solution: Don't use the same file name twice in the default for the 'tags' - option. Ignore case when comparing names of already visited - files. -Files: src/misc2.c, src/option.c - -Patch 6.1a.023 -Problem: When starting the GUI get "C" characters echoed in the terminal. -Solution: Don't try sending a clear-screen command while the GUI is starting - up. -Files: src/screen.c - -Patch 6.1a.024 -Problem: In other editors CTRL-F is often used for a find dialog. -Solution: In evim use CTRL-F for the find dialog. -Files: runtime/evim.vim - -Patch 6.1a.025 -Problem: The choices for the fileformat dialog can't be translated. -Solution: Add g:menutrans_fileformat_choices. (Adrien Beau) -Files: runtime/menu.vim - -Patch 6.1a.026 -Problem: Indenting Java files is wrong with "throws", "extends" and - "implements" clauses. -Solution: Update the Java indent script. -Files: runtime/indent/java.vim - -Patch 6.1a.027 -Problem: A few Syntax menu entries missing or incorrect. -Solution: Add and correct the menu entries. (Adrien Beau) - Shorten a few menus to avoid they become too long. -Files: runtime/makemenu.vim, runtime/menu.vim - -Patch 6.1a.028 -Problem: XIM: problems with feedback and some input methods. -Solution: Use iconv for calculating the cells. Remove the queue for - key_press_event only when text was changed. (Yasuhiro Matsumoto) -Files: src/globals.h, src/mbyte.c, src/screen.c - -Patch 6.1a.029 -Problem: After patch 6.1a.028 can't compile GTK version with XIM but - without multi-byte chars. -Solution: Add an #ifdef. (Aschwin Marsman) -Files: src/mbyte.c - -Patch 6.1a.030 -Problem: With double-byte encodings toupper() and tolower() may have wrong - results. -Solution: Skip double-byte characters. (Eric Long) -Files: src/eval.c - -Patch 6.1a.031 -Problem: Accessing the 'balloondelay' variable may cause a crash. -Solution: Make the variable for 'balloondelay' a long. (Olaf Seibert) -Files: src/option.h - -Patch 6.1a.032 (extra) -Problem: Some menu files used a wrong encoding name for "scriptencoding". -Solution: Move the translations to a separate file, which is sourced after - setting "scriptencoding". - Also add Czech menu translations in ASCII and update the other - encodings. -Files: runtime/lang/menu_cs_cz.iso_8859-1.vim, - runtime/lang/menu_cs_cz.iso_8859-2.vim, - runtime/lang/menu_czech_czech_republic.1250.vim, - runtime/lang/menu_czech_czech_republic.1252.vim, - runtime/lang/menu_czech_czech_republic.ascii.vim, - runtime/lang/menu_de_de.iso_8859-1.vim, - runtime/lang/menu_de_de.latin1.vim, - runtime/lang/menu_fr_fr.iso_8859-1.vim, - runtime/lang/menu_fr_fr.latin1.vim, - runtime/lang/menu_french_france.1252.vim, - runtime/lang/menu_german_germany.1252.vim, - runtime/lang/menu_ja_jp.euc-jp.vim, - runtime/lang/menu_ja_jp.utf-8.vim, - runtime/lang/menu_japanese_japan.932.vim - -Patch 6.1a.033 -Problem: XIM: doesn't reset input context. -Solution: call xim_reset() with im_set_active(FALSE). (Takuhiro Nishioka) -Files: src/mbyte.c - -Patch 6.1a.034 (extra) -Problem: Win32: The ACL checks for a readonly file still don't work well. -Solution: Remove the ACL checks, go back to how it worked in Vim 6.0. -Files: src/os_win32.c - -Patch 6.1a.035 -Problem: multi-byte: When using ":sh" in the GUI, typed and displayed - multi-byte characters are not handled correctly. -Solution: Deal with multi-byte characters to and from the shell. (Yasuhiro - Matsumoto) Also handle UTF-8 composing characters. -Files: src/os_unix.c - -Patch 6.1a.036 -Problem: GTK: the save-yourself event was not handled. -Solution: Catch the save-yourself event and preserve swap files. (Neil Bird) -Files: src/gui_gtk_x11.c - -Patch 6.1a.037 -Problem: The MS-Windows key mapping doesn't include CTRL-S for saving. - (Vlad Sandrini) -Solution: Map CTRL-S to ":update". -Files: runtime/mswin.vim - -Patch 6.1a.038 -Problem: Solaris: Including both sys/sysctl.h and sys/sysinfo.h doesn't - work. (Antonio Colombo) -Solution: Don't include sys/sysinfo.h when not calling sysinfo(). -Files: src/os_unix.c - -Patch 6.1a.039 -Problem: Not all visual basic files are recognized. -Solution: Add checks to catch *.ctl files. (Raul Segura Acevedo) -Files: runtime/filetype.vim - -Patch 6.1a.040 -Problem: A *.pl file is recognized as Perl, but it could be a prolog file. -Solution: Check the first non-empty line. (Kontra Gergely) -Files: runtime/filetype.vim - -Patch 6.1a.041 -Problem: When pressing the left mouse button in the command line and them - moving the mouse upwards, nearly all the text is selected. -Solution: Don't try extending a modeless selection when there isn't one. -Files: src/ui.c - -Patch 6.1a.042 -Problem: When merging files, ":diffput" and ":diffget" are used a lot, but - they require a lot of typing. -Solution: Add "dp" for ":diffput" and "do" for ":diffget". -Files: runtime/doc/diff.txt, src/diff.c, src/normal.c, src/proto/diff.pro - - -Patch 6.1b.001 (extra) -Problem: Checking for wildcards in a path does not handle multi-byte - characters with a trail byte which is a wildcard. -Solution: Handle multi-byte characters correctly. (Muraoka Taro) -Files: src/os_amiga.c, src/os_mac.c, src/os_msdos.c, src/os_mswin.c, - src/os_unix.c - -Patch 6.1b.002 -Problem: A regexp that ends in "\{" is not flagged as an error. May cause - a stack overflow when 'incsearch' is set. (Gerhard Hochholzer) -Solution: Handle a missing "}" as an error. -Files: src/regexp.c - -Patch 6.1b.003 (extra) -Problem: The RISC OS GUI doesn't compile. -Solution: Include changes since Vim 5.7. (Andy Wingate) -Files: src/Make_ro.mak, src/gui_riscos.c, src/os_riscos.c, - src/os_riscos.h, src/proto/gui_riscos.pro - -Patch 6.1b.004 -Problem: col("'>") returns a negative number for linewise selection. (Neil - Bird) -Solution: Don't add one to MAXCOL. -Files: src/eval.c - -Patch 6.1b.005 -Problem: Using a search pattern that causes an out-of-stack error while - 'hlsearch' is set keeps giving the hit-Enter prompt. - A search pattern that takes a long time delays typing when - 'incsearch' is set. -Solution: Stop 'hlsearch' highlighting when the regexp causes an error. - Stop searching for 'incsearch' when a character is typed. -Files: src/globals.h, src/message.c, src/screen.c, src/search.c, - src/vim.h - -Patch 6.1b.006 -Problem: When entering a composing character on the command line with - CTRL-V, the text isn't redrawn correctly. -Solution: Redraw the text under and after the cursor. -Files: src/ex_getln.c - -Patch 6.1b.007 -Problem: When the cursor is in the white space between two sentences, "dis" - deletes the first character of the following sentence, "das" - deletes a space after the sentence. -Solution: Backup the cursor one character in these situations. -Files: src/search.c - -Patch 6.1b.008 -Problem: *.xsl files are not recognized as xslt but xml. - Monk files are not recognized. -Solution: Delete the duplicate line for *.xsl. (Johannes Zellner) - Recognize monk files. -Files: runtime/filetype.vim - -Patch 6.1b.009 -Problem: Can't always compile small features and then adding eval feature, - "sandbox" is undefined. (Axel Kielhorn) -Solution: Always define "sandbox" when the eval feature is used. -Files: src/globals.h - -Patch 6.1b.010 (extra) -Problem: When compiling gvimext.cpp with MSVC 4.2 get a number of warnings. -Solution: Change "true" to "TRUE". (Walter Briscoe) -Files: GvimExt/gvimext.cpp - -Patch 6.1b.011 -Problem: When using a very long string for confirm(), can't quit the - displaying at the more prompt. (Hari Krishna Dara) -Solution: Jump to the end of the message to show the choices. -Files: src/message.c - -Patch 6.1b.012 -Problem: Multi-byte: When 'showbreak' is set and a double-wide character - doesn't fit at the right window edge the cursor gets stuck there. - Using cursor-left gets stuck when 'virtualedit' is set. (Eric - Long) -Solution: Fix the way the extra ">" character is counted when 'showbreak' is - set. Don't correct cursor for virtual editing on a double-wide - character. -Files: src/charset.c, src/edit.c - -Patch 6.1b.013 -Problem: A user command that partly matches with a buffer-local user - command and matches full with a global user command unnecessarily - gives an 'ambiguous command' error. -Solution: Find the full global match even after a partly local match. -Files: src/ex_docmd.c - -Patch 6.1b.014 -Problem: EBCDIC: switching mouse events off causes garbage on screen. - Positioning the cursor in the GUI causes garbage. -Solution: Insert an ESC in the terminal code. (Ralf Schandl) - Use "\b" instead of "\010" for KS_LE. -Files: src/os_unix.c, src/term.c - -Patch 6.1b.015 -Problem: Vimtutor has a typo. Get a warning for "tempfile" if it - doesn't exist. -Solution: Move a quote to the end of a line. (Max Ischenko) - Use "mktemp" first, more systems have it. -Files: src/vimtutor - -Patch 6.1b.016 -Problem: GTK: loading a fontset that works partly, Vim might hang or crash. -Solution: Avoid that char_width becomes zero. (Yasuhiro Matsumoto) -Files: src/gui_gtk_x11.c - -Patch 6.1b.017 -Problem: GUI: When using ":shell" and there is a beep, nothing happens. -Solution: Call vim_beep() to produce the beep from the shell. (Yasuhiro - Matsumoto) -Files: src/message.c - -Patch 6.1b.018 (depends on 6.1b.006) -Problem: When entering the encryption key, special keys may still reveal - the typed characters. -Solution: Make sure stars are used or nothing is shown in all cases. -Files: src/digraph.c, src/getchar.c, src/ex_getln.c - -Patch 6.1b.019 (depends on 6.1b.005) -Problem: A search pattern that takes a long time slows down typing when - 'incsearch' is set. -Solution: Pass SEARCH_PEEK to dosearch(). -Files: src/ex_getln.c - -Patch 6.1b.020 -Problem: When using the matchit plugin, "%" finds a match on the "end" of a - ":syntax region" command in Vim scripts. -Solution: Skip over ":syntax region" commands by setting b:match_skip. -Files: runtime/ftplugin/vim.vim - -Patch 6.1b.021 -Problem: when 'mousefocus' is set, CTRL-W CTRL-] sometimes doesn't warp the - pointer to the new window. (Robert Webb) -Solution: Don't reset need_mouse_correct when checking the timestamp of a - file. -Files: src/fileio.c - -Patch 6.1b.022 -Problem: With lots of folds "j" does not obey 'scrolloff' properly. - (Srinath Avadhanula) -Solution: Go to end of the fold before counting context lines. -Files: src/move.c - -Patch 6.1b.023 -Problem: On MS-Windows system() may cause checking timestamps, because Vim - loses and gains input focus, while this doesn't happen on Unix. -Solution: Don't check timestamps while system() is busy. -Files: src/ex_cmds2.c, src/fileio.c, src/globals.h, src/misc1.c - -Patch 6.1b.024 (extra) -Problem: Gettext 0.11 complains that "sjis" is not a standard name. -Solution: Use "cp932" instead. -Files: src/po/sjiscorr.c - -Patch 6.1b.025 (extra) -Problem: Win32: When closing gvim while it is minimized and has a changed - file, the file-changed dialog pops up in a corner of the screen. -Solution: Put the dialog in the middle of the screen. -Files: src/gui_w48.c - -Patch 6.1b.026 -Problem: When 'diffopt' contains 'iwhite' but not 'icase': differences in - case are not highlighted properly. (Gerhard Hochholzer) -Solution: Don't ignore case when ignoring white space differences. -Files: src/diff.c - -Patch 6.1b.027 -Problem: "vim --remote +" may cause a crash. -Solution: Check for missing file name argument. (Martin Kahlert) -Files: src/main.c - -Patch 6.1b.028 (extra) -Problem: Win16: Can't compile after patch 6.1b.025. -Solution: Add code specifically for Win16. (Vince Negri) -Files: src/gui_w48.c - -Patch 6.1b.029 -Problem: Win32: When a directory on an NTFS partition is read/execute (no - delete,modify,write) and the file has modify rights, trying to - write the file deletes it. Making the file read/write/execute - (not delete) solves it. (Mark Canup) -Solution: Use the Unix code to check for a writable directory. If not, then - make a backup copy and overwrite the file. -Files: src/fileio.c - -Patch 6.1b.030 (extra) -Problem: Mac: small mistake in the build script and prototypes. -Solution: Fix the build script and add the prototypes. (Axel Kielhorn) -Files: src/os_mac.build, src/gui_mac.c - -Patch 6.1b.031 (extra) -Problem: Win32 GUI: ":set guifont=*" doesn't set 'guifont' to the resulting - font name. (Vlad Sandrini) -Solution: Put the code back in gui_mch_init_font() to form the font name out - of the logfont. -Files: src/gui_w48.c - -Patch 6.1b.032 -Problem: Athena: Setting a color scheme before the GUI has started causes a - crash. (Todd Blumer) -Solution: Don't try using color names that haven't been set yet. -Files: src/gui_athena.c - -Patch 6.1b.033 -Problem: When using a count after a ":s" command may get ml_get errors. - (Dietmar Lang) -Solution: Check that the resulting range does not go past the end of the - buffer. -Files: src/ex_cmds.c - -Patch 6.1b.034 -Problem: After sourcing mswin.vim, when using <C-S-Right> after - auto-indenting and then <Del>, get warning for allocating - ridiculous amount of memory. (Dave Delgreco) -Solution: Adjust the start of the Visual area when deleting the auto-indent. -Files: src/edit.c - -Patch 6.1b.035 -Problem: When using evim, dropping a file on Vim and then double clicking - on a word, it is changed to "i". (Merlin Hansen) -Solution: Reset need_start_insertmode after editing the file. -Files: src/ex_docmd.c - - -============================================================================== -VERSION 6.2 *version-6.2* - -This section is about improvements made between version 6.1 and 6.2. - -This is mainly a bug-fix release. There are also a few new features. - -Main new features: -- Support for GTK 2. (Daniel Elstner) -- Support for editing Arabic text. (Nadim Shaikli & Isam Bayazidi) -- ":try" command and exception handling. (Servatius Brandt) -- Support for the neXtaw GUI toolkit (mostly like Athena). (Alexey Froloff) -- Cscope support for Win32. (Khorev Sergey) -- Support for PostScript printing in various 8-bit encodings. (Mike Williams) - - -Changed *changed-6.2* -------- - -Removed the scheme indent file, the internal Lisp indenting works well now. - -Moved the GvimEXt, OleVim and VisVim directories into the "src" directory. -This is more consistent with how xxd is handled. - -The VisVim.dll file is installed in the top directory, next to gvimext.dll, -instead of in a subdirectory "VisVim". Fixes that NSIS was uninstalling it -from the wrong directory. - -Removed the art indent file, it didn't do anything. - -submatch() returned line breaks with CR instead of LF. - -Changed the Win32 Makefiles to become more uniform and compile gvimext.dll. -(Dan Sharp) - -'cindent': Align a "//" comment with a "//" comment in a previous line. -(Helmut Stiegler) - -Previously only for xterm-like terminals parent widgets were followed to find -the title and icon label. Now do this for all terminal emulators. - -Made it possible to recognize backslashes for "%" matching. The 'M' flag in -'cpoptions' disables it. (Haakon Riiser) - -Removed the Make_tcc.mak makefile for Turbo C. It didn't work and we probably -can't make it work (the compiler runs out of memory). - -Even though the documentation refers to keywords, "[ CTRL-D" was using -'isident' to find matches. Changed it to use 'iskeyword'. Also applies to -other commands that search for defined words in included files such as -":dsearch", "[D" and "[d". - -Made 'keywordprg' global-local. (Christian Robinson) - -Enabled the Netbeans interface by default. Reversed the configure argument -from "--enable-netbeans" to "--disable-netbeans". - - -Added *added-6.2* ------ - -New options: - 'arabic' - 'arabicshape' - 'ambiwidth' - 'autochdir' - 'casemap' - 'copyindent' - 'cscopequickfix' - 'preserveindent' - 'printencoding' - 'rightleftcmd' - 'termbidi' - 'toolbariconsize' - 'winfixheight' - -New keymaps: - Serbian (Aleksandar Veselinovic) - Chinese Pinyin (Fredrik Roubert) - Esperanto (Antoine J. Mechelynck) - -New syntax files: - Valgrind (Roger Luethi) - Smarty template (Manfred Stienstra) - MySQL (Kenneth Pronovici) - RockLinux package description (Piotr Esden-Tempski) - MMIX (Dirk Huesken) - gkrellmrc (David Necas) - Tilde (Tobias Rundtrom) - Logtalk (Paulo Moura) - PLP (Juerd Waalboer) - fvwm2m4 (David Necas) - IPfilter (Hendrik Scholz) - fstab (Radu Dineiu) - Quake (Nikolai Weibull) - Occam (Mario Schweigler) - lpc (Shizhu Pan) - Exim conf (David Necas) - EDIF (Artem Zankovich) - .cvsrc (Nikolai Weibull) - .fetchmailrc (Nikolai Weibull) - GNU gpg (Nikolai Weibull) - Grub (Nikolai Weibull) - Modconf (Nikolai Weibull) - RCS (Dmitry Vasiliev) - Art (Dorai Sitaram) - Renderman Interface Bytestream (Andrew J Bromage) - Mailcap (Doug Kearns) - Subversion commit file (Dmitry Vasiliev) - Microsoft IDL (Vadim Zeitlin) - WildPackets EtherPeek Decoder (Christopher Shinn) - Spyce (Rimon Barr) - Resolv.conf (Radu Dineiu) - A65 (Clemens Kirchgatterer) - sshconfig and sshdconfig (David Necas) - Cheetah and HTMLCheetah (Max Ischenko) - Packet filter (Camiel Dobbelaar) - -New indent files: - Eiffel (David Clarke) - Tilde (Tobias Rundtrom) - Occam (Mario Schweigler) - Art (Dorai Sitaram) - PHP (Miles Lott) - Dylan (Brent Fulgham) - -New tutor translations: - Slovak (Lubos Celko) - Greek (Christos Kontas) - German (Joachim Hofmann) - Norwegian (Øyvind Holm) - -New filetype plugins: - Occam (Mario Schweigler) - Art (Dorai Sitaram) - ant.vim, aspvbs.vim, config.vim, csc.vim, csh.vim, dtd.vim, html.vim, - jsp.vim, pascal.vim, php.vim, sgml.vim, sh.vim, svg.vim, tcsh.vim, - xhtml.vim, xml.vim, xsd.vim. (Dan Sharp) - -New compiler plugins: - Checkstyle (Doug Kearns) - g77 (Ralf Wildenhues) - fortran (Johann-Guenter Simon) - Xmllint (Doug Kearns) - Ruby (Tim Hammerquist) - Modelsim vcom (Paul Baleme) - -New menu translations: - Brazilian (José de Paula) - British (Mike Williams) - Korean in UTF-8. (Nam SungHyun) - Norwegian (Øyvind Holm) - Serbian (Aleksandar Jelenak) - -New message translation for Norwegian. (Øyvind Holm) - -New color scheme: - desert (Hans Fugal) - -Arabic specific features. 'arabicshape', 'termbidi', 'arabic' and -'rightleftcmd' options. (Nadim Shaikli & Isam Bayazidi) - -Support for neXtaw GUI toolkit, mostly like Athena. (Alexey Froloff) - -Win32: cscope support. (Khorev Sergey) - -VMS: various improvements to documentation and makefiles. (Zoltan Arpadffy) - -Added "x" key to the explorer plugin: execute the default action. (Yasuhiro -Matsumoto) - -Compile gvimext.dll with MingW. (Rene de Zwart) - -Add the "tohtml.vim" plugin. It defines the ":TOhtml" user command, an easy -way to convert text to HTML. - -Added ":try" / ":catch" / ":finally" / ":endtry" commands. Add E999 numbers -to all error messages, so that they can be caught by the number. -(Servatius Brandt) -Moved part of ex_docmd.c to the new ex_eval.c source file. - -Include support for GTK+ 2.2.x (Daniel Elstner) -Adds the "~" register: drag & drop text. -Adds the 'toolbariconsize' option. -Add -Dalloca when running lint to work around a problem with alloca() -prototype. - -When selecting an item in the error window to jump to, take some effort to -find an ordinary window to show the file in (not a preview window). - -Support for PostScript printing of various 8-bit encodings. (Mike Williams) - -inputdialog() accepts a third argument that is used when the dialog is -cancelled. Makes it possible to see a difference between cancelling and -entering nothing. - -Included Aap recipes. Can be used to update Vim to the latest version, -building and installing. - -"/" option in 'cinoptions': extra indent for comment lines. (Helmut Stiegler) - -Vim variable "v:register" and functions setreg(), getreg() and getregtype(). -(Michael Geddes) - -"v" flag in 'cpoptions': Leave text on screen with backspace in Insert mode. -(Phillip Vandry) - -Dosinst.exe also finds gvimext.dll in the "GvimExt" directory. Useful when -running install in the "src" directory for testing. - -Support tag files that were sorted with case ignored. (Flemming Madsen) - -When completing a wildcard in a leading path element, as in "../*/Makefile", -only the last part ("Makefile") was listed. Support custom defined -command line completion. (Flemming Madsen) - -Also recognize "rxvt" as an xterm-like terminal. (Tomas Styblo) - -Proper X11 session management. Fixes that the WM_SAVE_YOURSELF event was not -used by popular desktops. (Neil Bird) -Not used for Gnome 2, it has its own handling. - -Support BOR, DEBUG and SPAWNO arguments for the Borland 3 Makefile. (Walter -Briscoe) - -Support page breaks for printing. Adds the "formfeed" field in -'printoptions'. (Mike Williams) - -Mac OSX: multi-language support: iconv and gettext. (Muraoka Taro, Axel -Kielhorn) - -"\Z" flag in patterns: ignore differences in combining characters. (Ron Aaron) - -Added 'preserveindent' and 'copyindent' options. They use existing white -space characters instead of using Tabs as much as possible. (Chris Leishman) - -Updated Unicode tables to Unicode 4.0. (Raphael Finkel) - -Support for the mouse wheel in rxvt. (AIDA Shinra) - -Win32: Added ":8" file modifier to get short filename. Test50 tests the ":8" -expansion on Win32 systems. (Michael Geddes) - -'cscopequickfix' option: Open quickfix window for Cscope commands. Also -cleanup the code for giving messages. (Khorev Sergey) - -GUI: Support more than 222 columns for mouse positions. - -":stopinsert" command: Don't return to Insert mode. - -"interrupt" command for debug mode. Useful for simulating CTRL-C. (Servatius -Brandt) - - -Fixed *fixed-6.2* ------ - -Removed a few unused #defines from config.h.in, os_os2_cfg.h and os_vms_conf.h. - -The Vim icons in PNG format didn't have a transparent background. (Greg -Roelofs) - -Fixed a large number of spelling mistakes in the docs. (Adri Verhoef) - -The #defines for prototype generation were causing trouble. Changed them to -typedefs. - -A new version of libintl.h uses __asm__, which confuses cproto. Define a -dummy __asm__ macro. - -When 'virtualedit' is set can't move to halfway an unprintable character. -Cripples CTRL-V selection. (Taro Muraoka) -Allow moving to halfway an unprintable character. Don't let getvvcol() change -the pos->coladd argument. - -When a tab wraps to the next line, 'listchars' is set and 'foldcolumn' is -non-zero, only one character of the foldcolumn is highlighted. (Muraoka Taro) - -When using ":catch" without an argument Vim crashes. (Yasuhiro Matsumoto) -When no argument given use the ".*" pattern. - -Win32: When gvim.exe is started from a shortcut with the window style property -set to maximize Vim doesn't start with a maximized window. (Yasuhiro -Matsumoto) Open the window with the default size and don't call ShowWindow() -again when it's already visible. (Helmut Stiegler) - -gui_gtk.c used MAX, but it's undefined to avoid a conflict with system header -files. - -Win32: When closing a window from a mapping some pixels remain on the -statusline. (Yasuhiro Matsumoto) - -A column number in an errorformat that goes beyond the end of the line may -cause a crash. - -":throw 'test'" crashes Vim. (Yasuhiro Matsumoto) - -The file selector's scrollbar colors are not set after doing a ":hi Scrollbar -guifg=color". And the file selector's colors are not changed by the -colorscheme command. (David Harrison) - -Motif: When compiling with FEAT_FOOTER defined, the text area gets a few -pixels extra space on the right. Remove the special case in -gui_get_base_width(). (David Harrison) - -Using CTRL-R CTRL-P in Insert mode puts the '] mark in the wrong position. -(Helmut Stiegler) - -When 'formatoptions' includes "awct" a non-comment wasn't auto-formatted. - -Using a "--cmd" argument more than 10 times caused a crash. - -DEC style mouse support didn't work if the page field is not empty. -(Uribarri) - -"vim -l one two" did only set 'lisp' in the first file. Vi does it for every -file. - -":set tw<" didn't work. Was checking for '^' instead of '<'. - -In ":hardcopy > %.ps" the "%" was not expanded to the current filename. - -Made ":redraw" also update the Visual area. - -When a not implemented command, such as ":perl", has wrong arguments the less -important error was reported, giving the user the idea the command could work. - -On non-Unix systems autocommands for writing did not attempt a match with the -short file name, causing a pattern like "a/b" to fail. - -VMS: e_screenmode was not defined and a few other fixes for VMS. (Zoltan -Arpadffy) - -redraw_msg() depended on FEAT_ARABIC instead of FEAT_RIGHTLEFT. (Walter -Briscoe) - -Various changes for the PC Makefiles. (Walter Briscoe) - -Use _truename() instead of our own code to expand a file name into a full -path. (Walter Briscoe) - -Error in filetype check for /etc/modutils. (Lubomir Host) - -Cscope interface: allocated a buffer too small. - -Win16: remove a trailing backslash from a path when obtaining the permission -flags. (Vince Negri) - -When searching for tags with case ignored Vim could hang. - -When searching directories with a stopdir could get a crash. Did not -re-allocate enough memory. (Vince Negri) - -A user command may cause a crash. Don't use the command index when it's -negative. (Vince Negri) - -putenv() didn't work for MingW and Cygwin. (Dan Sharp) - -Many functions were common between os_msdos.c and os_win16.c. Use os_msdos.c -for compiling the Win16 version and remove the functions from os_win16.c. -(Vince Negri) - -For terminals that behave like an xterm but didn't have a name that is -recognized, the window title would not always be set. - -When syntax highlighting is off ":hardcopy" could still attempt printing -colors. - -Crash when using ":catch" without an argument. (Servatius Brandt) - -Win32: ":n #" doubled the backslashes. - -Fixed Arabic shaping for the command line. (Nadim Shaikli) - -Avoid splitting up a string displayed on the command line into individual -characters, it breaks Arabic shaping. - -Updated Cygwin and MingW makefiles to use more dependencies. (Dan Sharp) - -2html.vim didn't work with 'nomagic' set. - -When a local argument list is used and doing ":only" Vim could crash later. -(Muraoka Taro) - -When using "%P" in 'statusline' and the fillchar is "-", a percentage of 3% -could result in "-3%". Also avoid changing a space inside a filename to the -fill character. - -MSwin: Handling of backslashes and double quotes for command line arguments -was not like what other applications do. (Walter Briscoe) - -Test32 sometimes didn't work, because test11.out was written as TEST11.OUT. - -Avoid pointer conversions warnings for Borland C 5.5 in dosinst.c and -uninstal.c. - -More improvements for Make_bc3.mak file. (Walter Briscoe) - -When ":syn sync linebreaks=1" is used, editing the first line caused a redraw -of the whole screen. - -Making translated messages didn't work, if_perl.xs wasn't found. (Vlad -Sandrini) - -Motif and Athena: moving Vim to the foreground didn't uniconify it. Use -XMapRaised() instead of XRaiseWindow(). (Srikanth Sankaran) - -When using ":ptag" in a window where 'scrollbind' is set the preview window -would also have 'scrollbind' set. Also reset 'foldcolumn' and 'diff'. - -Various commands that split a window took over 'scrollbind', which is hardly -ever desired. Esp. for "q:" and ":copen". Mostly reset 'scrollbind' when -splitting a window. - -When 'shellslash' is set in the vimrc file the first entry of ":scriptnames" -would still have backslashes. Entries in the quickfix list could also have -wrong (back)slashes. - -Win32: printer dialog texts were not translated. (Yasuhiro Matsumoto) - -When using a multi-byte character with a K_SPECIAL byte or a special key code -with "--remote-send" the received byte sequence was mangled. Put it in the -typeahead buffer instead of the input buffer. - -Win32: The cursor position was incorrect after changing cursor shape. -(Yasuhiro Matsumoto). - -Win32: When 'encoding' is not the current codepage the title could not be set -to non-ascii characters. - -"vim -d scp://machine/file1 scp://machine/file2" did not work, there was only -one window. Fixed the netrw plugin not to wipe out the buffer if it is -displayed in other windows. - -"/$" caused "e" in last column of screen to disappear, a highlighted blank was -displayed instead. - -":s/ *\ze\n//e" removed the line break and introduced arbitrary text. Was -using the line count including what matched after the "\ze". - -Using the "c" flag with ":s" changed the behavior when a line break is -replaced and "\@<=" is used. Without "c" a following match was not found. - -":%s/\vA@<=\nB@=//gce" got stuck on "A\nB" when entering "n". - -VMS: add HAVE_STRFTIME in the config file. (Zoltan Arpadffy) - -When a delete prompts if a delete should continue when yanking is not -possible, restore msg_silent afterwards. - -":sign" did not complain about a missing argument. - -When adding or deleting a sign 'hlsearch' highlighting could disappear. -Use the generic functions for updating signs. - -On MS-Windows NT, 2K and XP don't use command.com but cmd.exe for testing. -Makes the tests work on more systems. - -In the DOS tests don't create "/tmp" to avoid an error. - -Mac classic: Problems with reading files with CR vs CR/LF. Rely on the -library version of fgets() to work correctly for Metrowerks 2.2. (Axel -Kielhorn) - -When typing a password a "*" was shown for each byte instead of for each -character. Added multi-byte handling to displaying the stars. (Yasuhiro -Matsumoto) - -When using Perl 5.6 accessing $curbuf doesn't work. Add an #ifdef to use -different code for 5.6 and 5.8. (Dan Sharp) - -MingW and Cygwin: Don't strip the debug executable. (Dan Sharp) - -An assignment to a variable with curlies that includes "==" doesn't work. -Skip over the curlies before searching for an "=". (Vince Negri) - -When cancelling the selection of alternate matching tags the tag stack index -could be advanced too far, resulting in an error message when using CTRL-T. - - -Patch 6.1.001 -Problem: When formatting UTF-8 text it might be wrapped at a space that is - followed by a composing character. (Raphael Finkel) - Also correct a display error for removing a composing char on top - of a space. -Solution: Check for a composing character on a space. -Files: src/edit.c, src/misc1.c, src/screen.c - -Patch 6.1.002 (extra) -Problem: Win32: after a ":popup" command the mouse pointer stays hidden. -Solution: Unhide the mouse pointer before showing the menu. -Files: src/gui_w48.c - -Patch 6.1.003 -Problem: When 'laststatus' is zero and there is a vertical split, the - vertical separator is drawn in the command line. (Srikant - Sankaran) -Solution: Don't draw the vertical separator where there is no statusline. -Files: src/screen.c - -Patch 6.1.004 -Problem: Unicode 3.2 changes width and composing of a few characters. - (Markus Kuhn) -Solution: Adjust the Unicode functions for the character width and composing - characters. -Files: src/mbyte.c - -Patch 6.1.005 -Problem: When using more than 50 items in 'statusline' Vim might crash. - (Steve Hall) -Solution: Increment itemcnt in check_stl_option(). (Flemming Madsen) -Files: src/option.c - -Patch 6.1.006 -Problem: When using "P" in Visual mode to put linewise selected text, the - wrong text is deleted. (Jakub Turski) -Solution: Put the text before the Visual area and correct the text to be - deleted for the inserted lines. - Also fix that "p" of linewise text in Visual block mode doesn't - work correctly. -Files: src/normal.c, src/ops.c - -Patch 6.1.007 -Problem: Using ":filetype plugin off" when filetype plugins were never - enabled causes an error message. (Yiu Wing) -Solution: Use ":silent!" to avoid the error message. -Files: runtime/ftplugof.vim - -Patch 6.1.008 -Problem: The "%" command doesn't ignore \" inside a string, it's seen as - the end of the string. (Ken Clark) -Solution: Skip a double quote preceded by an odd number of backslashes. -Files: src/search.c - -Patch 6.1.009 -Problem: Vim crashes when using a huge number for the maxwid value in a - statusline. (Robert M. Nowotniak) -Solution: Check for an overflow that makes maxwid negative. -Files: src/buffer.c - -Patch 6.1.010 -Problem: Searching backwards for a question mark with "?\?" doesn't work. - (Alan Isaac) Same problem in ":s?\??" and ":g?\??". -Solution: Change the "\?" in a pattern to "?" when using "?" as delimiter. -Files: src/ex_cmds.c, src/ex_docmd.c, src/proto/regexp.pro, src/regexp.c, - src/search.c, src/syntax.c, src/tag.c - -Patch 6.1.011 -Problem: XIM: doesn't work correctly when 'number' is set. Also, a focus - problem when selecting candidates. -Solution: Fix the XIM problems. (Yasuhiro Matsumoto) -Files: src/mbyte.c, src/screen.c - -Patch 6.1.012 -Problem: A system() call might fail if fread() does CR-LF to LF - translation. -Solution: Open the output file in binary mode. (Pavol Huhas) -Files: src/misc1.c - -Patch 6.1.013 -Problem: Win32: The default for 'printexpr' doesn't work when there are - special characters in 'printdevice'. -Solution: Add double quotes around the device name. (Mike Williams) -Files: runtime/doc/option.txt, src/option.c - -Patch 6.1.014 -Problem: An operator like "r" used in Visual block mode doesn't use - 'virtualedit' when it's set to "block". -Solution: Check for 'virtualedit' being active in Visual block mode when the - operator was started. -Files: src/ex_docmd.c, src/globals.h, src/misc2.c, src/normal.c, - src/ops.c, src/undo.c - -Patch 6.1.015 -Problem: After patch 6.1.014 can't compile with tiny features. (Christian - J. Robinson) -Solution: Add the missing define of virtual_op. -Files: src/vim.h - -Patch 6.1.016 (extra) -Problem: Win32: Outputting Hebrew or Arabic text might have a problem with - reversing. -Solution: Replace the RevOut() function with ETO_IGNORELANGUAGE. (Ron Aaron) -Files: src/gui_w32.c - -Patch 6.1.017 -Problem: Cygwin: After patch 6.1.012 Still doesn't do binary file I/O. - (Pavol Juhas) -Solution: Define BINARY_FILE_IO for Cygwin. -Files: src/os_unix.h - -Patch 6.1.018 -Problem: Error message when using cterm highlighting. (Leonardo Di Lella) -Solution: Remove a backslash before a question mark. -Files: runtime/syntax/cterm.vim - -Patch 6.1.019 (extra) -Problem: Win32: File name is messed up when editing just a drive name. - (Walter Briscoe) -Solution: Append a NUL after the drive name. (Vince Negri) -Files: src/os_win32.c - -Patch 6.1.020 -Problem: col("'>") returns a huge number after using Visual line mode. -Solution: Return the length of the line instead. -Files: src/eval.c - -Patch 6.1.021 (depends on patch 6.1.009) -Problem: Vim crashes when using a huge number for the minwid value in a - statusline. (Robert M. Nowotniak) -Solution: Check for an overflow that makes minwid negative. -Files: src/buffer.c - -Patch 6.1.022 -Problem: Grabbing the status line above the command-line window works like - the bottom status line was grabbed. (Jim Battle) -Solution: Make it possible to grab the status line above the command-line - window, so that it can be resized. -Files: src/ui.c - -Patch 6.1.023 (extra) -Problem: VMS: running tests doesn't work properly. -Solution: Adjust the makefile. (Zoltan Arpadffy) -Files: src/testdir/Make_vms.mms - -Patch 6.1.024 -Problem: When header files use a new syntax for declaring functions, Vim - can't figure out missing prototypes properly. -Solution: Accept braces around a function name. (M. Warner Losh) -Files: src/osdef.sh - -Patch 6.1.025 -Problem: Five messages for "vim --help" don't start with a capital. (Vlad - Sandrini) -Solution: Make the messages consistent. -Files: src/main.c - -Patch 6.1.026 -Problem: *.patch files are not recognized as diff files. In a script a - "VAR=val" argument after "env" isn't ignored. PHP scripts are not - recognized. -Solution: Add *.patch for diff filetypes. Ignore "VAR=val". Recognize PHP - scripts. (Roman Neuhauser) -Files: runtime/filetype.vim, runtime/scripts.vim - -Patch 6.1.027 -Problem: When 'foldcolumn' is non-zero, a special character that wraps to - the next line disturbs the foldcolumn highlighting. (Yasuhiro - Matsumoto) -Solution: Only use the special highlighting when drawing text characters. -Files: src/screen.c - -Patch 6.1.028 -Problem: Client-server: When a --remote-expr fails, Vim still exits with - status zero. -Solution: Exit Vim with a non-zero status to indicate the --remote-expr - failed. (Thomas Scott Urban) -Files: src/main.c - -Patch 6.1.029 -Problem: When 'encoding' is an 8-bit encoding other than "latin1", editing - a utf-8 or other Unicode file uses the wrong conversion. (Jan - Fedak) -Solution: Don't use Unicode to latin1 conversion for 8-bit encodings other - than "latin1". -Files: src/fileio.c - -Patch 6.1.030 -Problem: When CTRL-N is mapped in Insert mode, it is also mapped after - CTRL-X CTRL-N, while it is not mapped after CTRL-X CTRL-F. - (Kontra Gergely) -Solution: Don't map CTRL-N after CTRL-X CTRL-N. Same for CTRL-P. -Files: src/getchar.c - -Patch 6.1.031 -Problem: Cygwin: Xxd could read a file in text mode instead of binary mode. -Solution: Use "rb" or "rt" when needed. (Pavol Juhas) -Files: src/xxd/xxd.c - -Patch 6.1.032 -Problem: Can't specify a quickfix file without jumping to the first error. -Solution: Add the ":cgetfile" command. (Yegappan Lakshmanan) -Files: runtime/doc/index.txt, runtime/doc/quickfix.txt, src/ex_cmds.h, - src/quickfix.c - -Patch 6.1.033 -Problem: GUI: When the selection is lost and the Visual highlighting is - changed to underlining, the cursor is left in a different - position. (Christian Michon) -Solution: Update the cursor position after redrawing the selection. -Files: src/ui.c - -Patch 6.1.034 -Problem: A CVS diff file isn't recognized as diff filetype. -Solution: Skip lines starting with "? " before checking for an "Index:" line. -Files: runtime/scripts.vim - -Patch 6.1.035 (extra, depends on 6.1.016) -Problem: Win32: Outputting Hebrew or Arabic text might have a problem with - reversing on MS-Windows 95/98/ME. -Solution: Restore the RevOut() function and use it in specific situations - only. (Ron Aaron) -Files: src/gui_w32.c - -Patch 6.1.036 -Problem: This command may cause a crash: ":v/./,//-j". (Ralf Arens) -Solution: Compute the right length of the regexp when it's empty. -Files: src/search.c - -Patch 6.1.037 -Problem: When 'lazyredraw' is set, pressing "q" at the hit-enter prompt - causes an incomplete redraw and the cursor isn't positioned. - (Lubomir Host) -Solution: Overrule 'lazyredraw' when do_redraw is set. -Files: src/main.c, src/screen.c - -Patch 6.1.038 -Problem: Multi-byte: When a ":s" command contains a multi-byte character - where the trail byte is '~' the text is messed up. -Solution: Properly skip multi-byte characters in regtilde() (Muraoka Taro) -Files: src/regexp.c - -Patch 6.1.039 -Problem: When folds are defined and the file is changed outside of Vim, - reloading the file doesn't update the folds. (Anders - Schack-Nielsen) -Solution: Recompute the folds after reloading the file. -Files: src/fileio.c - -Patch 6.1.040 -Problem: When changing directory for expanding a file name fails there is - no error message. -Solution: Give an error message for this situation. Don't change directory - if we can't return to the original directory. -Files: src/diff.c, src/ex_docmd.c, src/globals.h, src/misc1.c, - src/os_unix.c - -Patch 6.1.041 -Problem: ":mkvimrc" doesn't handle a mapping that has a leading space in - the rhs. (Davyd Ondrejko) -Solution: Insert a CTRL-V before the leading space. Also display leading - and trailing white space in <> form. -Files: src/getchar.c, src/message.c - -Patch 6.1.042 -Problem: "vim -r" doesn't show all matches when 'wildignore' removes swap - files. (Steve Talley) -Solution: Keep all matching swap file names. -Files: src/memline.c - -Patch 6.1.043 -Problem: After patch 6.1.040 a few warnings are produced. -Solution: Add a type cast to "char *" for mch_chdir(). (Axel Kielhorn) -Files: src/diff.c, src/ex_docmd.c.c, src/misc1.c, src/os_unix.c - -Patch 6.1.044 (extra) -Problem: GUI: When using the find/replace dialog with text that contains a - slash, an invalid substitute command is generated. - On Win32 a find doesn't work when 'insertmode' is set. -Solution: Escape slashes with a backslash. - Make the Win32, Motif and GTK gui use common code for the - find/replace dialog. - Add the "match case" option for Motif and GTK. -Files: src/feature.h, src/proto/gui.pro, src/gui.c, src/gui.h, - src/gui_motif.c, src/gui_gtk.c, src/gui_w48.c - -Patch 6.1.045 -Problem: In Visual mode, with lots of folds and 'scrolloff' set to 999, - moving the cursor down near the end of the file causes the text to - jump up and down. (Lubomir Host) -Solution: Take into account that the cursor may be on the last line of a - closed fold. -Files: src/move.c - -Patch 6.1.046 -Problem: X11 GUI: ":set lsp=2 gcr=n-v-i:hor1-blinkon0" draws a black - rectangle. ":set lsp=2 gcr=n-v-i:hor10-blinkon0" makes the cursor - disappear. (Nam SungHyun) -Solution: Correctly compute the height of the horizontal cursor. -Files: src/gui_gtk_x11.c, src/gui_x11.c - -Patch 6.1.047 -Problem: When skipping commands after an error was encountered, expressions - for ":if", ";elseif" and ":while" are still evaluated. -Solution: Skip the expression after an error. (Servatius Brandt) -Files: src/ex_docmd.c - -Patch 6.1.048 -Problem: Unicode 3.2 changes were missing a few Hangul Jamo characters. -Solution: Recognize more characters as composing characters. (Jungshik Shin) -Files: src/mbyte.c - -Patch 6.1.049 (extra) -Problem: On a 32 bit display a valid color may cause an error message, - because its pixel value is negative. (Chris Paulson-Ellis) -Solution: Check for -11111 instead of the color being negative. - Don't add one to the pixel value, -1 may be used for white. -Files: src/globals.h, src/gui.c, src/gui.h, src/gui_amiga.c, - src/gui_athena.c, src/gui_beos.cc, src/gui_gtk_x11.c, - src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, - src/gui_riscos.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c, - src/gui_x11.c, src/mbyte.c, src/syntax.c - -Patch 6.1.050 (depends on 6.1.049) -Problem: After patch 6.1.049 the non-GUI version doesn't compile. -Solution: Add an #ifdef FEAT_GUI. (Robert Stanton) -Files: src/syntax.c - -Patch 6.1.051 (depends on 6.1.044) -Problem: Doesn't compile with GUI and small features. -Solution: Adjust the #if for ga_append(). -Files: src/misc2.c - -Patch 6.1.052 -Problem: Unix: The executable() function doesn't work when the "which" - command isn't available. -Solution: Go through $PATH manually. Also makes it work for VMS. -Files: src/os_unix.c - -Patch 6.1.053 -Problem: When 'sessionoptions' contains "globals", or "localoptions" and an - option value contains a line break, the resulting script is wrong. -Solution: Use "\n" and "\r" for a line break. (Srinath Avadhanula) -Files: src/eval.c - -Patch 6.1.054 -Problem: GUI: A mouse click is not recognized at the more prompt, even when - 'mouse' includes 'r'. -Solution: Recognize a mouse click at the more prompt. - Also accept a mouse click in the last line in the GUI. - Add "ml" entry in 'mouseshape'. -Files: src/gui.c, src/message.c, src/misc1.c, src/misc2.c, src/option.c, - src/structs.h - -Patch 6.1.055 -Problem: When editing a compressed file, Vim will inspect the contents to - guess the filetype. -Solution: Don't source scripts.vim for .Z, .gz, .bz2, .zip and .tgz files. -Files: runtime/filetype.vim, runtime/plugin/gzip.vim - -Patch 6.1.056 -Problem: Loading the Syntax menu can take quite a bit of time. -Solution: Add the "skip_syntax_sel_menu" variable. When it's defined the - available syntax files are not in the Syntax menu. -Files: runtime/doc/gui.txt, runtime/menu.vim - -Patch 6.1.057 -Problem: An ESC inside a mapping doesn't work as documented when - 'insertmode' is set, it does go from Visual or Normal mode to - Insert mode. (Benji Fisher) -Solution: Make it work as documented. -Files: src/normal.c - -Patch 6.1.058 -Problem: When there is a closed fold just above the first line in the - window, using CTRL-X CTRL-Y in Insert mode will show only one line - of the fold. (Alexey Marinichev) -Solution: Correct the topline by putting it at the start of the fold. -Files: src/move.c - -Patch 6.1.059 -Problem: ":redir > ~/file" doesn't work. (Stephen Rasku) -Solution: Expand environment variables in the ":redir >" argument. -Files: src/ex_docmd.c - -Patch 6.1.060 -Problem: When 'virtualedit' is set and 'selection' is "exclusive", deleting - a character just before a tab changes the tab into spaces. Undo - doesn't restore the tab. (Helmut Stiegler) -Solution: Don't replace the tab by spaces when it's not needed. Correctly - save the line before it's changed. -Files: src/ops.c - -Patch 6.1.061 -Problem: When 'virtualedit' is set and 'selection' is "exclusive", a Visual - selection that ends just after a tab doesn't include that tab in - the highlighting. (Helmut Stiegler) -Solution: Use a different way to exclude the character under the cursor. -Files: src/screen.c - -Patch 6.1.062 -Problem: The "man" filetype plugin doesn't work properly on Solaris 5. -Solution: Use a different way to detect that "man -s" should be used. (Hugh - Sasse) -Files: runtime/ftplugin/man.vim - -Patch 6.1.063 -Problem: Java indenting doesn't work properly. -Solution: Ignore comments when checking if the indent doesn't increase after - a "}". -Files: runtime/indent/java.vim - -Patch 6.1.064 -Problem: The URLs that the netrw plugin recognized for ftp and rcp did not - conform to the standard method://[user@]host[:port]/path. -Solution: Use ftp://[user@]host[[:#]port]/path, which supports both the new - and the previous style. Also added a bit of dav/cadaver support. - (Charles Campbell) -Files: runtime/plugin/netrw.vim - -Patch 6.1.065 -Problem: VMS: The colorscheme, keymap and compiler menus are not filled in. -Solution: Ignore case when looking for ".vim" files. (Coen Engelbarts) -Files: runtime/menu.vim - -Patch 6.1.066 (extra) -Problem: When calling system() in a plugin reading stdin hangs. -Solution: Don't set the terminal to RAW mode when it wasn't in RAW mode - before the system() call. -Files: src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_unix.c, - src/os_win16.c, src/os_win32.c - -Patch 6.1.067 -Problem: ":set viminfo+=f0" is not working. (Benji Fisher) -Solution: Check the "f" flag instead of "'" in 'viminfo'. -Files: src/mark.c - -Patch 6.1.068 -Problem: When a file is reloaded after it was changed outside of Vim, diff - mode isn't updated. (Michael Naumann) -Solution: Invalidate the diff info so that it's updated when needed. -Files: src/fileio.c - -Patch 6.1.069 -Problem: When 'showmatch' is set and "$" is in 'cpoptions', using - "C}<Esc>" may forget to remove the "$". (Preben Guldberg) -Solution: Restore dollar_vcol after displaying the matching cursor position. -Files: src/search.c - -Patch 6.1.070 (depends on 6.1.060) -Problem: Compiler warning for signed/unsigned mismatch. (Mike Williams) -Solution: Add a typecast to int. -Files: src/ops.c - -Patch 6.1.071 -Problem: When 'selection' is exclusive, g CTRL-G in Visual mode counts one - character too much. (David Necas) -Solution: Subtract one from the end position. -Files: src/ops.c - -Patch 6.1.072 -Problem: When a file name in a tags file starts with http:// or something - else for which there is a BufReadCmd autocommand, the file isn't - opened anyway. -Solution: Check if there is a matching BufReadCmd autocommand and try to - open the file. -Files: src/fileio.c, src/proto/fileio.pro, src/tag.c - -Patch 6.1.073 (extra) -Problem: BC5: Can't easily specify a tiny, small, normal, big or huge - version. -Solution: Allow selecting the version with the FEATURES variable. (Ajit - Thakkar) -Files: src/Make_bc5.mak - -Patch 6.1.074 -Problem: When 'cdpath' includes "../..", changing to a directory in which - we currently already are doesn't work. ff_check_visited() adds - the directory both when using it as the root for searching and for - the actual matches. (Stephen Rasku) -Solution: Use a separate list for the already searched directories. -Files: src/misc2.c - -Patch 6.1.075 (depends on 6.1.072) -Problem: Can't compile fileio.c on MS-Windows. -Solution: Add a declaration for the "p" pointer. (Madoka Machitani) -Files: src/fileio.c - -Patch 6.1.076 (extra) -Problem: Macintosh: explorer plugin doesn't work on Mac Classic. - IME doesn't work. Dialog boxes don't work on Mac OS X -Solution: Fix explorer plugin and key modifiers. (Axel Kielhorn) - Fix IME support. (Muraoka Taro) - Disable dialog boxes. (Benji Fisher) -Files: src/edit.c, src/feature.h, src/gui_mac.c, src/os_mac.c - -Patch 6.1.077 -Problem: On a Debian system with ACL linking fails. (Lubomir Host) -Solution: When the "acl" library is used, check if the "attr" library is - present and use it. -Files: src/auto/configure, src/configure.in, src/link.sh - -Patch 6.1.078 -Problem: When using 'foldmethod' "marker" and the end marker appears before - the start marker in the file, no fold is found. (Nazri Ramliy) -Solution: Don't let the fold depth go negative. -Files: src/fold.c - -Patch 6.1.079 -Problem: When using "s" in Visual block mode with 'virtualedit' set, when - the selected block is after the end of some lines the wrong text - is inserted and some lines are skipped. (Servatius Brandt) -Solution: Insert the right text and extend short lines. -Files: src/ops.c - -Patch 6.1.080 -Problem: When using gcc with /usr/local already in the search path, adding - it again causes problems. -Solution: Adjust configure.in to avoid adding /usr/local/include and - /usr/local/lib when using GCC and they are already used. (Johannes - Zellner) -Files: src/auto/configure, src/configure.in - -Patch 6.1.081 -Problem: ":help CTRL-\_CTRL-N" doesn't work. (Christian J. Robinson) -Solution: Double the backslash to avoid the special meaning of "\_". -Files: src/ex_cmds.c - -Patch 6.1.082 -Problem: On MS-Windows the vimrc_example.vim script is sourced and then - mswin.vim. This enables using select mode, but since "p" is - mapped it doesn't replace the selection. -Solution: Remove the mapping of "p" from vimrc_example.vim, it's obsolete. - (Vlad Sandrini) -Files: runtime/vimrc_example.vim - -Patch 6.1.083 -Problem: When $LANG is "sk" or "sk_sk", the Slovak menu file isn't found. - (Martin Lacko) -Solution: Guess the right menu file based on the system. -Files: runtime/lang/menu_sk_sk.vim - -Patch 6.1.084 (depends on 6.1.080) -Problem: "include" and "lib" are mixed up when checking the directories gcc - already searches. -Solution: Swap the variable names. (SunHo Kim) -Files: src/auto/configure, src/configure.in - -Patch 6.1.085 -Problem: When using CTRL-O CTRL-\ CTRL-N from Insert mode, the displayed - mode "(insert)" isn't removed. (Benji Fisher) -Solution: Clear the command line. -Files: src/normal.c - -Patch 6.1.086 (depends on 6.1.049) -Problem: The guifg color for CursorIM doesn't take effect. -Solution: Use the foreground color when it's defined. (Muraoka Taro) -Files: src/gui.c - -Patch 6.1.087 -Problem: A thesaurus with Japanese characters has problems with characters - in different word classes. -Solution: Only separate words with single-byte non-word characters. - (Muraoka Taro) -Files: src/edit.c - -Patch 6.1.088 (extra) -Problem: Win32: no debugging info is generated. Tags file excludes .cpp - files. -Solution: Add "/map" to compiler flags. Add "*.cpp" to ctags command. - (Muraoka Taro) -Files: src/Make_mvc.mak - -Patch 6.1.089 -Problem: On BSDI systems there is no ss_sp field in stack_t. (Robert Jan) -Solution: Use ss_base instead. -Files: src/auto/configure, src/configure.in, src/config.h.in, - src/os_unix.c - -Patch 6.1.090 -Problem: CTRL-F gets stuck when 'scrolloff' is non-zero and there is a mix - of long wrapping lines and a non-wrapping line. -Solution: Check that CTRL-F scrolls at least one line. -Files: src/move.c - -Patch 6.1.091 -Problem: GTK: Can't change preeditstate without setting 'imactivatekey'. -Solution: Add some code to change preeditstate for OnTheSpot. (Yasuhiro - Matsumoto) -Files: src/mbyte.c - -Patch 6.1.092 -Problem: ":mapclear <buffer>" doesn't work. (Srikanth Adayapalam) -Solution: Allow an argument for ":mapclear". -Files: src/ex_cmds.h - -Patch 6.1.093 (extra) -Problem: Mac and MS-Windows GUI: when scrolling while ":s" is working the - results can be messed up, because the cursor is moved. -Solution: Disallow direct scrolling when not waiting for a character. -Files: src/gui_mac.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c - -Patch 6.1.094 -Problem: Cygwin: Passing a file name that has backslashes isn't handled - very well. -Solution: Convert file name arguments to Posix. (Chris Metcalf) -Files: src/main.c - -Patch 6.1.095 -Problem: When using signs can free an item on the stack. - Overruling sign colors doesn't work. (Srikanth Sankaran) -Solution: Don't free the item on the stack. Use NULL instead of "none" for - the value of the color. -Files: src/gui_x11.c - -Patch 6.1.096 -Problem: When erasing the right halve of a double-byte character, it may - cause further characters to be erased. (Yasuhiro Matsumoto) -Solution: Make sure only one character is erased. -Files: src/screen.c - -Patch 6.1.097 (depends on 6.1.090) -Problem: When 'scrolloff' is set to a huge value, CTRL-F at the end of the - file scrolls one line. (Lubomir Host) -Solution: Don't scroll when CTRL-F detects the end-of-file. -Files: src/move.c - -Patch 6.1.098 -Problem: MS-Windows: When the xxd program is under "c:\program files" the - "Convert to Hex" menu doesn't work. (Brian Mathis) -Solution: Put the path to xxd in double quotes. -Files: runtime/menu.vim - -Patch 6.1.099 -Problem: Memory corrupted when closing a fold with more than 99999 lines. -Solution: Allocate more space for the fold text. (Walter Briscoe) -Files: src/eval.c - -Patch 6.1.100 (extra, depends on 6.1.088) -Problem: Win32: VC5 and earlier don't support the /mapinfo option. -Solution: Add "/mapinfo" only when "MAP=lines" is specified. (Muraoka Taro) -Files: src/Make_mvc.mak - -Patch 6.1.101 -Problem: After using ":options" the tabstop of a new window is 15. Entry - in ":options" window for 'autowriteall' is wrong. (Antoine J - Mechelynck) Can't insert a space in an option value. -Solution: Use ":setlocal" instead of ":set". Change "aw" to "awa". - Don't map space in Insert mode. -Files: runtime/optwin.vim - -Patch 6.1.102 -Problem: Unprintable and multi-byte characters in a statusline item are not - truncated correctly. (Yasuhiro Matsumoto) -Solution: Count the width of characters instead of the number of bytes. -Files: src/buffer.c - -Patch 6.1.103 -Problem: A function returning from a while loop, with 'verbose' set to 12 - or higher, doesn't mention the return value. A function with the - 'abort' attribute may return -1 while the verbose message says - something else. -Solution: Move the verbose message about returning from a function to - call_func(). (Servatius Brandt) -Files: src/eval.c - -Patch 6.1.104 -Problem: GCC 3.1 appears to have an optimizer problem that makes test 3 - crash. -Solution: For GCC 3.1 add -fno-strength-reduce to avoid the optimizer bug. - Filter out extra info from "gcc --version". -Files: src/auto/configure, src/configure.in - -Patch 6.1.105 -Problem: Win32: The default for 'shellpipe' doesn't redirect stderr. (Dion - Nicolaas) -Solution: Redirect stderr, depending on the shell (like for 'shellredir'). -Files: src/option.c - -Patch 6.1.106 -Problem: The maze program crashes. -Solution: Change "11" to "27" and it works. (Greg Roelofs) -Files: runtime/macros/maze/mazeansi.c - -Patch 6.1.107 -Problem: When 'list' is set the current line in the error window may be - displayed wrong. (Muraoka Taro) -Solution: Don't continue the line after the $ has been displayed and the - rightmost column is reached. -Files: src/screen.c - -Patch 6.1.108 -Problem: When interrupting a filter command such as "!!sleep 20" the file - becomes read-only. (Mark Brader) -Solution: Only set the read-only flag when opening a buffer is interrupted. - When the shell command was interrupted, read the output that was - produced so far. -Files: src/ex_cmds.c, src/fileio.c - -Patch 6.1.109 -Problem: When 'eadirection' is "hor", using CTRL-W = doesn't equalize the - window heights. (Roman Neuhauser) -Solution: Ignore 'eadirection' for CTRL-W = -Files: src/window.c - -Patch 6.1.110 -Problem: When using ":badd file" when "file" is already present but not - listed, it stays unlisted. (David Frey) -Solution: Set 'buflisted'. -Files: src/buffer.c - -Patch 6.1.111 -Problem: It's not possible to detect using the Unix sources on Win32 or Mac. -Solution: Add has("macunix") and has("win32unix"). -Files: runtime/doc/eval.txt, src/eval.c - -Patch 6.1.112 -Problem: When using ":argdo", ":bufdo" or ":windo", CTRL-O doesn't go to - the cursor position from before this command but every position - where the argument was executed. -Solution: Only remember the cursor position from before the ":argdo", - ":bufdo" and ":windo". -Files: src/ex_cmds2.c, src/mark.c - -Patch 6.1.113 -Problem: ":bufdo bwipe" only wipes out half the buffers. (Roman Neuhauser) -Solution: Decide what buffer to go to next before executing the command. -Files: src/ex_cmds2.c - -Patch 6.1.114 -Problem: ":python import vim", ":python vim.current.buffer[0:0] = []" gives - a lalloc(0) error. (Chris Southern) -Solution: Don't allocate an array when it's size is zero. -Files: src/if_python.c - -Patch 6.1.115 -Problem: "das" on the white space at the end of a paragraph does not delete - the "." the sentence ends with. -Solution: Don't exclude the last character when it is not white space. -Files: src/search.c - -Patch 6.1.116 -Problem: When 'endofline' is changed while 'binary' is set a file should be - considered modified. (Olaf Buddenhagen) -Solution: Remember the 'eol' value when editing started and consider the - file changed when the current value is different and 'binary' is - set. Also fix that the window title isn't updated when 'ff' or - 'bin' changes. -Files: src/option.c, src/structs.h - -Patch 6.1.117 -Problem: Small problem with editing a file over ftp: and with Cygwin. -Solution: Remove a dot from a ":normal" command. Use "cygdrive" where - appropriate. (Charles Campbell) -Files: runtime/plugin/netrw.vim - -Patch 6.1.118 -Problem: When a file in diff mode is reloaded because it changed outside - of Vim, other windows in diff mode are not always updated. - (Michael Naumann) -Solution: After reloading a file in diff mode mark all windows in diff mode - for redraw. -Files: src/diff.c - -Patch 6.1.119 (extra) -Problem: With the Sniff interface, using Sniff 4.0.X on HP-UX, there may be - a crash when connecting to Sniff. -Solution: Initialize sniff_rq_sep such that its value can be changed. - (Martin Egloff) -Files: src/if_sniff.c - -Patch 6.1.120 (depends on 6.1.097) -Problem: When 'scrolloff' is non-zero and there are folds, CTRL-F at the - end of the file scrolls part of a closed fold. (Lubomir Host) -Solution: Adjust the first line to the start of a fold. -Files: src/move.c - -Patch 6.1.121 (depends on 6.1.098) -Problem: When starting Select mode from Insert mode, then using the Paste - menu entry, the cursor is left before the last pasted character. - (Mario Schweigler) -Solution: Set the cursor for Insert mode one character to the right. -Files: runtime/menu.vim - -Patch 6.1.122 -Problem: ":file name" creates a new buffer to hold the old buffer name, - which becomes the alternate file. This buffer is unexpectedly - listed. -Solution: Create the buffer for the alternate name unlisted. -Files: src/ex_cmds.c - -Patch 6.1.123 -Problem: A ":match" command with more than one argument doesn't report an - error. -Solution: Check for extra characters. (Servatius Brandt) -Files: src/ex_docmd.c - -Patch 6.1.124 -Problem: When trying to exit and there is a hidden buffer that had 'eol' - off and 'bin' set exiting isn't possible. (John McGowan) -Solution: Set b_start_eol when clearing the buffer. -Files: src/buffer.c - -Patch 6.1.125 -Problem: Explorer plugin asks for saving a modified buffer even when it's - open in another window as well. -Solution: Count the number of windows using the buffer. -Files: runtime/plugin/explorer.vim - -Patch 6.1.126 -Problem: Adding the choices in the syntax menu is consuming much of the - startup time of the GUI while it's not often used. -Solution: Only add the choices when the user wants to use them. -Files: Makefile, runtime/makemenu.vim, runtime/menu.vim, - runtime/synmenu.vim, src/Makefile - -Patch 6.1.127 -Problem: When using "--remote file" and the server has 'insertmode' set, - commands are inserted instead of being executed. (Niklas Volbers) -Solution: Go to Normal mode again after the ":drop" command. -Files: src/main.c - -Patch 6.1.128 -Problem: The expression "input('very long prompt')" puts the cursor in the - wrong line (column is OK). -Solution: Add the wrapped lines to the indent. (Yasuhiro Matsumoto) -Files: src/ex_getln.c - -Patch 6.1.129 -Problem: On Solaris editing "file/" and then "file" results in using the - same buffer. (Jim Battle) -Solution: Before using stat(), check that there is no illegal trailing - slash. -Files: src/auto/configure, src/config.h.in, src/configure.in, - src/macros.h src/misc2.c, src/proto/misc2.pro - -Patch 6.1.130 -Problem: The documentation for some of the 'errorformat' items is unclear. -Solution: Add more examples and explain hard to understand items. (Stefan - Roemer) -Files: runtime/doc/quickfix.txt - -Patch 6.1.131 -Problem: X11 GUI: when expanding a CSI byte in the input stream to K_CSI, - the CSI byte itself isn't copied. -Solution: Copy the CSI byte. -Files: src/gui_x11.c - -Patch 6.1.132 -Problem: Executing a register in Ex mode may cause commands to be skipped. - (John McGowan) -Solution: In Ex mode use an extra check if the register contents was - consumed, to avoid input goes into the typeahead buffer. -Files: src/ex_docmd.c - -Patch 6.1.133 -Problem: When drawing double-wide characters in the statusline, may clear - half of a character. (Yasuhiro Matsumoto) -Solution: Force redraw of the next character by setting the attributes - instead of putting a NUL in ScreenLines[]. Do put a NUL in - ScreenLines[] when overwriting half of a double-wide character. -Files: src/screen.c - -Patch 6.1.134 -Problem: An error for a trailing argument of ":match" should not be given - after ":if 0". (Servatius Brandt) -Solution: Only do the check when executing commands. -Files: src/ex_docmd.c - -Patch 6.1.135 -Problem: Passing a command to the shell that includes a newline always has - a backslash before the newline. -Solution: Remove one backslash before the newline. (Servatius Brandt) -Files: src/ex_docmd.c - -Patch 6.1.136 -Problem: When $TERM is "linux" the default for 'background' is "dark", even - though the GUI uses a light background. (Hugh Allen) -Solution: Don't mark the option as set when defaulting to "dark" for the - linux console. Also reset 'background' to "light" when the GUI - has a light background. -Files: src/option.c - -Patch 6.1.137 -Problem: Converting to HTML has a clumsy way of dealing with tabs which may - change the highlighting. -Solution: Replace tabs with spaces after converting a line to HTML. (Preben - Guldberg) -Files: runtime/syntax/2html.vim - -Patch 6.1.138 (depends on 6.1.126) -Problem: Adding extra items to the Syntax menu can't be done when the "Show - individual choices" menu is used. -Solution: Use ":runtime!" instead of ":source", so that all synmenu.vim - files in the runtime path are loaded. (Servatius Brandt) - Also fix that a translated menu can't be removed. -Files: runtime/menu.vim - -Patch 6.1.139 -Problem: Cygwin: PATH_MAX is not defined. -Solution: Include limits.h. (Dan Sharp) -Files: src/main.c - -Patch 6.1.140 -Problem: Cygwin: ":args `ls *.c`" does not work if the shell command - produces CR NL line separators. -Solution: Remove the CR characters ourselves. (Pavol Juhas) -Files: src/os_unix.c - -Patch 6.1.141 -Problem: ":wincmd gx" may cause problems when mixed with other commands. - ":wincmd c" doesn't close the window immediately. (Benji Fisher) -Solution: Pass the extra command character directly instead of using the - stuff buffer and call ex_close() directly. -Files: src/ex_docmd.c, src/normal.c, src/proto/normal.pro, - src/proto/window.pro, src/window.c - -Patch 6.1.142 -Problem: Defining paragraphs without a separating blank line isn't - possible. Paragraphs can't be formatted automatically. -Solution: Allow defining paragraphs with lines that end in white space. - Added the 'w' and 'a' flags in 'formatoptions'. -Files: runtime/doc/change.txt, src/edit.c, src/misc1.c, src/normal.c, - src/option.h, src/ops.c, src/proto/edit.pro, src/proto/ops.pro, - src/vim.h - -Patch 6.1.143 (depends on 6.1.142) -Problem: Auto formatting near the end of the file moves the cursor to a - wrong position. In Insert mode some lines are made one char too - narrow. When deleting a line undo might not always work properly. -Solution: Don't always move to the end of the line in the last line. Don't - position the cursor past the end of the line in Insert mode. - After deleting a line save the cursor line for undo. -Files: src/edit.c, src/ops.c, src/normal.c - -Patch 6.1.144 -Problem: Obtaining the size of a line in screen characters can be wrong. - A pointer may wrap around zero. -Solution: In win_linetabsize() check for a MAXCOL length argument. (Jim - Dunleavy) -Files: src/charset.c - -Patch 6.1.145 -Problem: GTK: Drag&drop with more than 3 files may cause a crash. (Mickael - Marchand) -Solution: Rewrite the code that parses the received list of files to be more - robust. -Files: src/charset.c, src/gui_gtk_x11.c - -Patch 6.1.146 -Problem: MS-Windows: When $HOME is constructed from $HOMEDRIVE and - $HOMEPATH, it is not used for storing the _viminfo file. (Normal - Diamond) -Solution: Set $HOME with the value obtained from $HOMEDRIVE and $HOMEPATH. -Files: src/misc1.c - -Patch 6.1.147 (extra) -Problem: MS-Windows: When a dialog has no default button, pressing Enter - ends it anyway and all buttons are selected. -Solution: Don't end a dialog when there is no default button. Don't select - all button when there is no default. (Vince Negri) -Files: src/gui_w32.c - -Patch 6.1.148 (extra) -Problem: MS-Windows: ACL is not properly supported. -Solution: Add an access() replacement that also works for ACL. (Mike - Williams) -Files: runtime/doc/editing.txt, src/os_win32.c - -Patch 6.1.149 (extra) -Problem: MS-Windows: Can't use diff mode from the file explorer. -Solution: Add a "diff with Vim" context menu entry. (Dan Sharp) -Files: GvimExt/gvimext.cpp, GvimExt/gvimext.h - -Patch 6.1.150 -Problem: OS/2, MS-Windows and MS-DOS: When 'shellslash' is set getcwd() - still uses backslash. (Yegappan Lakshmanan) -Solution: Adjust slashes in getcwd(). -Files: src/eval.c - -Patch 6.1.151 (extra) -Problem: Win32: The NTFS substream isn't copied. -Solution: Copy the substream when making a backup copy. (Muraoka Taro) -Files: src/fileio.c, src/os_win32.c, src/proto/os_win32.pro - -Patch 6.1.152 -Problem: When $LANG is iso8859-1 translated menus are not used. -Solution: Change iso8859 to iso_8859. -Files: runtime/menu.vim - -Patch 6.1.153 -Problem: Searching in included files may search recursively when the path - starts with "../". (Sven Berkvens-Matthijsse) -Solution: Compare full file names, use inode/device when possible. -Files: src/search.c - -Patch 6.1.154 (extra) -Problem: DJGPP: "vim -h" leaves the cursor in a wrong position. -Solution: Don't position the cursor using uninitialized variables. (Jim - Dunleavy) -Files: src/os_msdos.c - -Patch 6.1.155 -Problem: Win32: Cursor may sometimes disappear in Insert mode. -Solution: Change "hor10" in 'guicursor' to "hor15". (Walter Briscoe) -Files: src/option.c - -Patch 6.1.156 -Problem: Conversion between DBCS and UCS-2 isn't implemented cleanly. -Solution: Clean up a few things. -Files: src/mbyte.c, src/structs.h - -Patch 6.1.157 -Problem: 'hlsearch' highlights only the second comma in ",,,,," with - "/,\@<=[^,]*". (Preben Guldberg) -Solution: Also check for an empty match to start just after a previous - match. -Files: src/screen.c - -Patch 6.1.158 -Problem: "zs" and "ze" don't work correctly with ":set nowrap siso=1". - (Preben Guldberg) -Solution: Take 'siso' into account when computing the horizontal scroll - position for "zs" and "ze". -Files: src/normal.c - -Patch 6.1.159 -Problem: When expanding an abbreviation that includes a multi-byte - character too many characters are deleted. (Andrey Urazov) -Solution: Delete the abbreviation counting characters instead of bytes. -Files: src/getchar.c - -Patch 6.1.160 -Problem: ":$read file.gz" doesn't work. (Preben Guldberg) -Solution: Don't use the '[ mark after it has become invalid. -Files: runtime/plugin/gzip.vim - -Patch 6.1.161 (depends on 6.1.158) -Problem: Warning for signed/unsigned compare. Can set 'siso' to a negative - value. (Mike Williams) -Solution: Add a typecast. Add a check for 'siso' being negative. -Files: src/normal.c, src/option.c - -Patch 6.1.162 -Problem: Python interface: Didn't initialize threads properly. -Solution: Call PyEval_InitThreads() when starting up. -Files: src/if_python.c - -Patch 6.1.163 -Problem: Win32: Can't compile with Python after 6.1.162. -Solution: Dynamically load PyEval_InitThreads(). (Dan Sharp) -Files: src/if_python.c - -Patch 6.1.164 -Problem: If 'modifiable' is off, converting to xxd fails and 'filetype' is - changed to "xxd" anyway. -Solution: Don't change 'filetype' when conversion failed. -Files: runtime/menu.vim - -Patch 6.1.165 -Problem: Making changes in several lines and then a change in one of these - lines that splits it in two or more lines, undo information was - corrupted. May cause a crash. (Dave Fishburn) -Solution: When skipping to save a line for undo because it was already - saved, move it to become the last saved line, so that when the - command changes the line count other saved lines are not involved. -Files: src/undo.c - -Patch 6.1.166 -Problem: When 'autoindent' is set and mswin.vim has been sourced, pasting - with CTRL-V just after auto-indenting removes the indent. (Shlomi - Fish) -Solution: First insert an "x" and delete it again, so that the auto-indent - remains. -Files: runtime/mswin.vim - -Patch 6.1.167 -Problem: When giving a negative argument to ":retab" strange things start - happening. (Hans Ginzel) -Solution: Check for a negative value. -Files: src/ex_cmds.c - -Patch 6.1.168 -Problem: Pressing CTRL-C at the hit-enter prompt doesn't end the prompt. -Solution: Make CTRL-C stop the hit-enter prompt. -Files: src/message.c - -Patch 6.1.169 -Problem: bufexists() finds a buffer by using the name of a symbolic link to - it, but bufnr() doesn't. (Yegappan Lakshmanan) -Solution: When bufnr() can't find a buffer, try using the same method as - bufexists(). -Files: src/eval.c - -Patch 6.1.170 -Problem: Using ":mksession" uses the default session file name, but "vim - -S" doesn't. (Hans Ginzel) -Solution: Use the default session file name if "-S" is the last command - line argument or another option follows. -Files: runtime/doc/starting.txt, src/main.c - -Patch 6.1.171 -Problem: When opening a line just above a closed fold with "O" and the - comment leader is automatically inserted, the cursor is displayed - in the first column. (Sung-Hyun Nam) -Solution: Update the flag that indicates the cursor is in a closed fold. -Files: src/misc1.c - -Patch 6.1.172 -Problem: Command line completion of ":tag /pat" does not show the same - results as the tags the command actually finds. (Gilles Roy) -Solution: Don't modify the pattern to make it a regexp. -Files: src/ex_getln.c, src/tag.c - -Patch 6.1.173 -Problem: When using remote control to edit a position in a file and this - file is the current buffer and it's modified, the window is split - and the ":drop" command fails. -Solution: Don't split the window, keep editing the same buffer. - Use the ":drop" command in VisVim to avoid the problem there. -Files: src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds2.pro, - VisVim/Commands.cpp - -Patch 6.1.174 -Problem: It is difficult to know in a script whether an option not only - exists but really works. -Solution: Add "exists('+option')". -Files: runtime/doc/eval.txt, src/eval.c - -Patch 6.1.175 -Problem: When reading commands from a pipe and a CTRL-C is pressed, Vim - will hang. (Piet Delport) -Solution: Don't keep reading characters to clear typeahead when an interrupt - was detected, stop when a single CTRL-C is read. -Files: src/getchar.c, src/ui.c - -Patch 6.1.176 -Problem: When the stack limit is very big a false out-of-stack error may - be detected. -Solution: Add a check for overflow of the stack limit computation. (Jim - Dunleavy) -Files: src/os_unix.c - -Patch 6.1.177 (depends on 6.1.141) -Problem: ":wincmd" does not allow a following command. (Gary Johnson) -Solution: Check for a following " | cmd". Also give an error for trailing - characters. -Files: src/ex_docmd.c - -Patch 6.1.178 -Problem: When 'expandtab' is set "r<C-V><Tab>" still expands the Tab. - (Bruce deVisser) -Solution: Replace with a literal Tab. -Files: src/normal.c - -Patch 6.1.179 (depends on 6.1.091) -Problem: When using X11R5 XIMPreserveState is undefined. (Albert Chin) -Solution: Include the missing definitions. -Files: src/mbyte.c - -Patch 6.1.180 -Problem: Use of the GUI code for forking is inconsistent. -Solution: Define MAY_FORK and use it for later #ifdefs. (Ben Fowlwer) -Files: src/gui.c - -Patch 6.1.181 -Problem: If the terminal doesn't wrap from the last char in a line to the - next line, the last column is blanked out. (Peter Karp) -Solution: Don't output a space to mark the wrap, but the same character - again. -Files: src/screen.c - -Patch 6.1.182 (depends on 6.1.142) -Problem: It is not possible to auto-format comments only. (Moshe Kaminsky) -Solution: When the 'a' and 'c' flags are in 'formatoptions' only auto-format - comments. -Files: runtime/doc/change.txt, src/edit.c - -Patch 6.1.183 -Problem: When 'fencs' is empty and 'enc' is utf-8, reading a file with - illegal bytes gives "CONVERSION ERROR" even though no conversion - is done. 'readonly' is set, even though writing the file results - in an unmodified file. -Solution: For this specific error use "ILLEGAL BYTE" and don't set - 'readonly'. -Files: src/fileio.c - -Patch 6.1.184 (extra) -Problem: The extra mouse buttons found on some mice don't work. -Solution: Support two extra buttons for MS-Windows. (Michael Geddes) -Files: runtime/doc/term.txt, src/edit.c, src/ex_getln.c, src/gui.c, - src/gui_w32.c, src/gui_w48.c, src/keymap.h, src/message.c, - src/misc1.c, src/misc2.c, src/normal.c, src/vim.h - -Patch 6.1.185 (depends on 6.1.182) -Problem: Can't compile without +comments feature. -Solution: Add #ifdef FEAT_COMMENTS. (Christian J. Robinson) -Files: src/edit.c - -Patch 6.1.186 (depends on 6.1.177) -Problem: ":wincmd" does not allow a following comment. (Aric Blumer) -Solution: Check for a following double quote. -Files: src/ex_docmd.c - -Patch 6.1.187 -Problem: Using ":doarg" with 'hidden' set and the current file is the only - argument and was modified gives an error message. (Preben - Guldberg) -Solution: Don't try re-editing the same file. -Files: src/ex_cmds2.c - -Patch 6.1.188 (depends on 6.1.173) -Problem: Unused variable in the small version. -Solution: Move the declaration for "p" inside #ifdef FEAT_LISTCMDS. -Files: src/ex_cmds2.c - -Patch 6.1.189 -Problem: inputdialog() doesn't work when 'c' is in 'guioptions'. (Aric - Blumer) -Solution: Fall back to the input() function in this situation. -Files: src/eval.c - -Patch 6.1.190 (extra) -Problem: VMS: doesn't build with GTK GUI. Various other problems. -Solution: Fix building for GTK. Improved Perl, Python and TCL support. - Improved VMS documentation. (Zoltan Arpadffy) - Added Vimtutor for VMS (T. R. Wyant) -Files: runtime/doc/os_vms.txt, src/INSTALLvms.txt, src/gui_gtk_f.h, - src/if_tcl.c, src/main.c, src/gui_gtk_vms.h, src/Make_vms.mms, - src/os_vms.opt, src/proto/if_tcl.pro, vimtutor.com, - src/testdir/Make_vms.mms - -Patch 6.1.191 -Problem: When using "vim -s script" and redirecting the output, the delay - for the "Output is not to a terminal" warning slows Vim down too - much. -Solution: Don't delay when reading commands from a script. -Files: src/main.c - -Patch 6.1.192 -Problem: ":diffsplit" doesn't add "hor" to 'scrollopt'. (Gary Johnson) -Solution: Add "hor" to 'scrollopt' each time ":diffsplit" is used. -Files: src/diff.c, src/main.c - -Patch 6.1.193 -Problem: Crash in in_id_list() for an item with a "containedin" list. (Dave - Fishburn) -Solution: Check for a negative syntax id, used for keywords. -Files: src/syntax.c - -Patch 6.1.194 -Problem: When "t_ti" is set but it doesn't cause swapping terminal pages, - "ZZ" may cause the shell prompt to appear on top of the file-write - message. -Solution: Scroll the text up in the Vim page before swapping to the terminal - page. (Michael Schroeder) -Files: src/os_unix.c - -Patch 6.1.195 -Problem: The quickfix and preview windows always keep their height, while - other windows can't fix their height. -Solution: Add the 'winfixheight' option, so that a fixed height can be - specified for any window. Also fix that the wildmenu may resize a - one-line window to a two-line window if 'ls' is zero. -Files: runtime/doc/options.txt, runtime/optwin.vim, src/ex_cmds.c, - src/ex_getln.c, src/globals.h, src/option.c, src/quickfix.c, - src/screen.c, src/structs.h, src/window.c - -Patch 6.1.196 (depends on 6.1.084) -Problem: On Mac OS X 10.2 generating osdef.h fails. -Solution: Add -no-cpp-precomp to avoid using precompiled header files, which - disables printing the search path. (Ben Fowler) -Files: src/auto/configure, src/configure.in - -Patch 6.1.197 -Problem: ":help <C-V><C-\><C-V><C-N>" (resulting in <1c><0e>) gives an - error message. (Servatius Brandt) -Solution: Double the backslash in "CTRL-\". -Files: src/ex_cmds.c - -Patch 6.1.198 (extra) (depends on 6.1.076) -Problem: Mac OS X: Dialogues don't work. -Solution: Fix a crashing problem for some GUI dialogues. Fix a problem when - saving to a new file from the GUI. (Peter Cucka) -Files: src/feature.h, src/gui_mac.c - -Patch 6.1.199 -Problem: 'guifontwide' doesn't work on Win32. -Solution: Output each wide character separately. (Michael Geddes) -Files: src/gui.c - -Patch 6.1.200 -Problem: ":syn sync fromstart" is not skipped after ":if 0". This can make - syntax highlighting very slow. -Solution: Check "eap->skip" appropriately. (Rob West) -Files: src/syntax.c - -Patch 6.1.201 (depends on 6.1.192) -Problem: Warning for illegal pointer combination. (Zoltan Arpadffy) -Solution: Add a typecast. -Files: src/diff.c - -Patch 6.1.202 (extra)(depends on 6.1.148) -Problem: Win32: filewritable() doesn't work properly on directories. -Solution: fix filewritable(). (Mike Williams) -Files: src/os_win32.c - -Patch 6.1.203 -Problem: ":%s/~//" causes a crash after ":%s/x//". (Gary Holloway) -Solution: Avoid reading past the end of a line when "~" is empty. -Files: src/regexp.c - -Patch 6.1.204 (depends on 6.1.129) -Problem: Warning for an illegal pointer on Solaris. -Solution: Add a typecast. (Derek Wyatt) -Files: src/misc2.c - -Patch 6.1.205 -Problem: The gzip plugin changes the alternate file when editing a - compressed file. (Oliver Fuchs) -Solution: Temporarily remove the 'a' and 'A' flags from 'cpo'. -Files: runtime/plugin/gzip.vim - -Patch 6.1.206 -Problem: The script generated with ":mksession" doesn't work properly when - some commands are mapped. -Solution: Use ":normal!" instead of ":normal". And use ":wincmd" where - possible. (Muraoka Taro) -Files: src/ex_docmd.c, src/fold.c - -Patch 6.1.207 -Problem: Indenting a Java file hangs below a line with a comment after a - command. -Solution: Break out of a loop. (Andre Pang) - Also line up } with matching {. -Files: runtime/indent/java.vim - -Patch 6.1.208 -Problem: Can't use the buffer number from the Python interface. -Solution: Add buffer.number. (Michal Vitecek) -Files: src/if_python.c - -Patch 6.1.209 -Problem: Printing doesn't work on Mac OS classic. -Solution: Use a ":" for path separator when opening the resource file. (Axel - Kielhorn) -Files: src/ex_cmds2.c - -Patch 6.1.210 -Problem: When there is an iconv() conversion error when reading a file - there can be an error the next time iconv() is used. -Solution: Reset the state of the iconv() descriptor. (Yasuhiro Matsumoto) -Files: src/fileio.c - -Patch 6.1.211 -Problem: The message "use ! to override" is confusing. -Solution: Make it "add ! to override". -Files: src/buffer.c, src/eval.c, src/ex_docmd.c, src/fileio.c, - src/globals.h - -Patch 6.1.212 -Problem: When Vim was started with "-R" ":new" creates a buffer - 'noreadonly' while ":enew" has 'readonly' set. (Preben Guldberg) -Solution: Don't set 'readonly in a new empty buffer for ":enew". -Files: src/ex_docmd.c - -Patch 6.1.213 -Problem: Using CTRL-W H may cause a big gap to appear below the last - window. (Aric Blumer) -Solution: Don't set the window height when there is a vertical split. - (Yasuhiro Matsumoto) -Files: src/window.c - -Patch 6.1.214 -Problem: When installing Vim and the runtime files were checked out from - CVS the CVS directories will also be installed. -Solution: Avoid installing the CVS dirs and their contents. -Files: src/Makefile - -Patch 6.1.215 -Problem: Win32: ":pwd" uses backslashes even when 'shellslash' is set. - (Xiangjiang Ma) -Solution: Adjust backslashes before printing the message. -Files: src/ex_docmd.c - -Patch 6.1.216 -Problem: When dynamically loading the iconv library, the error codes may be - confused. -Solution: Use specific error codes for iconv and redefine them for dynamic - loading. (Yasuhiro Matsumoto) -Files: src/fileio.c, src/mbyte.c, src/vim.h - -Patch 6.1.217 -Problem: When sourcing the same Vim script using a different name (symbolic - link or MS-Windows 8.3 name) it is listed twice with - ":scriptnames". (Tony Mechelynck) -Solution: Turn the script name into a full path before using it. On Unix - compare inode/device numbers. -Files: src/ex_cmds2.c - -Patch 6.1.218 -Problem: No error message for using the function argument "5+". (Servatius - Brandt) -Solution: Give an error message if a function or variable is expected but is - not found. -Files: src/eval.c - -Patch 6.1.219 -Problem: When using ":amenu :b 1<CR>" with a Visual selection and - 'insertmode' is set, Vim does not return to Insert mode. (Mickael - Marchand) -Solution: Add the command CTRL-\ CTRL-G that goes to Insert mode if - 'insertmode' is set and to Normal mode otherwise. Append this to - menus defined with ":amenu". -Files: src/edit.c, src/ex_getln.c, src/normal.c - -Patch 6.1.220 -Problem: When using a BufReadPost autocommand that changes the line count, - e.g., "$-1join", reloading a file that was changed outside Vim - does not work properly. (Alan G Isaac) -Solution: Make the buffer empty before reading the new version of the file. - Save the lines in a dummy buffer, so that they can be put back - when reading the file fails. -Files: src/buffer.c, src/ex_cmds.c, src/fileio.c, src/globals.h, - src/proto/buffer.pro - -Patch 6.1.221 -Problem: Changing case may not work properly, depending on the current - locale. -Solution: Add the 'casemap' option to let the user chose how changing case - is to be done. - Also fix lowering case when an UTF-8 character doesn't keep the - same byte length. -Files: runtime/doc/options.txt, src/ascii.h, src/auto/configure, - src/buffer.c, src/charset.c, src/config.h.in, src/configure.in, - src/diff.c, src/edit.c, src/eval.c, src/ex_cmds2.c, - src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/gui_amiga.c - src/gui_mac.c, src/gui_photon.c, src/gui_w48.c, src/gui_beos.cc, - src/macros.h, src/main.c, src/mbyte.c, src/menu.c, src/message.c, - src/misc1.c, src/misc2.c, src/option.c, src/os_msdos.c, - src/os_mswin.c, src/proto/charset.pro, src/regexp.c, src/option.h, - src/syntax.c - -Patch 6.1.222 (depends on 6.1.219) -Problem: Patch 6.1.219 was incomplete. -Solution: Add the changes for ":amenu". -Files: src/menu.c - -Patch 6.1.223 (extra) -Problem: Win32: When IME is activated 'iminsert' is set, but it might never - be reset when IME is disabled. (Muraoka Taro) - All systems: 'iminsert' is set to 2 when leaving Insert mode, even - when langmap is being used. (Peter Valach) -Solution: Don't set "b_p_iminsert" in _OnImeNotify(). (Muraoka Taro) - Don't store the status of the input method in 'iminsert' when - 'iminsert' is one. Also for editing the command line and for - arguments to Normal mode commands. -Files: src/edit.c, src/ex_getln.c, src/gui_w32.c, src/normal.c - -Patch 6.1.224 -Problem: "expand('$VAR')" returns an empty string when the expanded $VAR - is not an existing file. (Aric Blumer) -Solution: Included non-existing files, as documented. -Files: src/eval.c - -Patch 6.1.225 -Problem: Using <C-O><C-^> in Insert mode has a delay when starting "vim -u - NONE" and ":set nocp hidden". (Emmanuel) do_ecmd() uses - fileinfo(), the redraw is done after a delay to give the user time - to read the message. -Solution: Put the message from fileio() in "keep_msg", so that the redraw is - done before the delay (still needed to avoid the mode message - overwrites the fileinfo() message). -Files: src/buffer.c - -Patch 6.1.226 -Problem: Using ":debug" with a ":normal" command may cause a hang. (Colin - Keith) -Solution: Save the typeahead buffer when obtaining a debug command. -Files: src/ex_cmds2.c, src/getchar.c, src/proto/getchar.pro - -Patch 6.1.227 -Problem: It is possible to use a variable name "asdf:asdf" and ":let j:asdf - = 5" does not give an error message. (Mikolaj Machowski) -Solution: Check for a ":" inside the variable name. -Files: src/eval.c - -Patch 6.1.228 (extra) -Problem: Win32: The special output function for Hangul is used too often, - causing special handling for other situations to be skipped. - bInComposition is always FALSE, causing ImeGetTempComposition() - always to return NULL. -Solution: Remove HanExtTextOut(). Delete the dead code around - bInComposition and ImeGetTempComposition(). -Files: src/gui_w16.c, src/gui_w32.c, src/gui_w48.c - -Patch 6.1.229 -Problem: Win32: Conversion to/from often used codepages requires the iconv - library, which is not always available. -Solution: Use standard MS-Windows functions for the conversion when - possible. (mostly by Glenn Maynard) - Also fixes missing declaration for patch 6.1.220. -Files: src/fileio.c - -Patch 6.1.230 (extra) -Problem: Win16: building doesn't work. -Solution: Exclude the XBUTTON handling. (Vince Negri) -Files: src/gui_w48.c - -Patch 6.1.231 -Problem: Double clicking with the mouse to select a word does not work for - multi-byte characters. -Solution: Use vim_iswordc() instead of vim_isIDc(). This means 'iskeyword' - is used instead of 'isident'. Also fix that mixing ASCII with - multi-byte word characters doesn't work, the mouse class for - punctuation and word characters was mixed up. -Files: src/normal.c - -Patch 6.1.232 (depends on 6.1.226) -Problem: Using ex_normal_busy while it might not be available. (Axel - Kielhorn) -Solution: Only use ex_normal_busy when FEAT_EX_EXTRA is defined. -Files: src/ex_cmds2.c - -Patch 6.1.233 -Problem: ":help expr-||" does not work. -Solution: Don't use the '|' as a command separator -Files: src/ex_cmds.c - -Patch 6.1.234 (depends on 6.1.217) -Problem: Get a warning for using a negative value for st_dev. -Solution: Don't assign a negative value to st_dev. -Files: src/ex_cmds2.c - -Patch 6.1.235 (depends on 6.1.223) -Problem: 'iminsert' is changed from 1 to 2 when leaving Insert mode. (Peter - Valach) -Solution: Check "State" before resetting it to NORMAL. -Files: src/edit.c - -Patch 6.1.236 -Problem: Memory leaks when appending lines for ":diffget" or ":diffput" and - when reloading a changed buffer. -Solution: Free a line after calling ml_append(). -Files: src/diff.c, src/fileio.c - -Patch 6.1.237 -Problem: Putting in Visual block mode does not work correctly when "$" was - used or when the first line is short. (Christian Michon) -Solution: First delete the selected text and then put the new text. Save - and restore registers as necessary. -Files: src/globals.h, src/normal.c, src/ops.c, src/proto/ops.pro, - src/vim.h - -Patch 6.1.238 (extra) -Problem: Win32: The "icon=" argument for the ":menu" command does not - search for the bitmap file. -Solution: Expand environment variables and search for the bitmap file. - (Vince Negri) - Make it consistent, use the same mechanism for X11 and GTK. -Files: src/gui.c src/gui_gtk.c, src/gui_w32.c, src/gui_x11.c, - src/proto/gui.pro - -Patch 6.1.239 -Problem: Giving an error for missing :endif or :endwhile when being - interrupted. -Solution: Don't give these messages when interrupted. -Files: src/ex_docmd.c, src/os_unix.c - -Patch 6.1.240 (extra) -Problem: Win32 with BCC 5: CPU may be defined in the environment, which - causes a wrong argument for the compiler. (Walter Briscoe) -Solution: Use CPUNR instead of CPU. -Files: src/Make_bc5.mak - -Patch 6.1.241 -Problem: Something goes wrong when drawing or undrawing the cursor. -Solution: Remember when the cursor invalid in a better way. -Files: src/gui.c - -Patch 6.1.242 -Problem: When pasting a large number of lines on the command line it is not - possible to interrupt. (Jean Jordaan) -Solution: Check for an interrupt after each pasted line. -Files: src/ops.c - -Patch 6.1.243 (extra) -Problem: Win32: When the OLE version is started and wasn't registered, a - message pops up to suggest registering, even when this isn't - possible (when the registry is not writable). -Solution: Check if registering is possible before asking whether it should - be done. (Walter Briscoe) - Also avoid restarting Vim after registering. -Files: src/if_ole.cpp - -Patch 6.1.244 -Problem: Patch 6.1.237 was missing the diff for vim.h. (Igor Goldenberg) -Solution: Include it here. -Files: src/vim.h - -Patch 6.1.245 -Problem: Comparing with ignored case does not work properly for Unicode - with a locale where case folding an ASCII character results in a - multi-byte character. (Glenn Maynard) -Solution: Handle ignore-case compare for Unicode differently. -Files: src/mbyte.c - -Patch 6.1.246 -Problem: ":blast" goes to the first buffer if the last one is unlisted. - (Andrew Stryker) -Solution: From the last buffer search backwards for the first listed buffer - instead of forwards. -Files: src/ex_docmd.c - -Patch 6.1.247 -Problem: ACL support doesn't always work properly. -Solution: Add a configure argument to disable ACL "--disable-acl". (Thierry - Vignaud) -Files: src/auto/configure, src/configure.in - -Patch 6.1.248 -Problem: Typing 'q' at the more-prompt for ":let" does not quit the - listing. (Hari Krishna Dara) -Solution: Quit the listing when got_int is set. -Files: src/eval.c - -Patch 6.1.249 -Problem: Can't expand a path on the command line if it includes a "|" as a - trail byte of a multi-byte character. -Solution: Check for multi-byte characters. (Yasuhiro Matsumoto) -Files: src/ex_docmd.c - -Patch 6.1.250 -Problem: When changing the value of 'lines' inside the expression set with - 'diffexpr' Vim might crash. (Dave Fishburn) -Solution: Don't allow changing the screen size while updating the screen. -Files: src/globals.h, src/option.c, src/screen.c - -Patch 6.1.251 -Problem: Can't use completion for ":lcd" and ":lchdir" like ":cd". -Solution: Expand directory names for these commands. (Servatius Brandt) -Files: src/ex_docmd.c - -Patch 6.1.252 -Problem: "vi}" does not include a line break when the "}" is at the start - of a following line. (Kamil Burzynski) -Solution: Include the line break. -Files: src/search.c - -Patch 6.1.253 (extra) -Problem: Win32 with Cygwin: Changes the path of arguments in a wrong way. - (Xiangjiang Ma) -Solution: Don't use cygwin_conv_to_posix_path() for the Win32 version. - Update the Cygwin makefile to support more features. (Dan Sharp) -Files: src/Make_cyg.mak, src/if_ole.cpp, src/main.c - -Patch 6.1.254 -Problem: exists("foo{bar}") does not work. ':unlet v{"a"}r' does not work. - ":let v{a}r1 v{a}r2" does not work. ":func F{(1)}" does not work. - ":delfunc F{" does not give an error message. ':delfunc F{"F"}' - does not work. -Solution: Support magic braces for the exists() argument. (Vince Negri) - Check for trailing comments explicitly for ":unlet". Add support - for magic braces in further arguments of ":let". Look for a - parenthesis only after the function name. (Servatius Brandt) - Also expand magic braces for "exists('*expr')". Give an error - message for an invalid ":delfunc" argument. Allow quotes in the - ":delfunc" argument. -Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c - -Patch 6.1.255 (depends on 6.1.254) -Problem: Crash when loading menu.vim a second time. (Christian Robinson) - ":unlet garbage foo" tries unletting "foo" after an error message. - (Servatius Brandt) - Very long function arguments cause very long messages when - 'verbose' is 14 or higher. -Solution: Avoid reading from uninitialized memory. - Break out of a loop after an invalid argument for ":unlet". - Truncate long function arguments to 80 characters. -Files: src/eval.c - -Patch 6.1.256 (depends on 6.1.255) -Problem: Defining a function after ":if 0" could still cause an error - message for an existing function. - Leaking memory when there are trailing characters for ":delfunc". -Solution: Check the "skip" flag. Free the memory. (Servatius Brandt) -Files: src/eval.c - -Patch 6.1.257 -Problem: ":cwindow" always sets the previous window to the last but one - window. (Benji Fisher) -Solution: Set the previous window properly. -Files: src/globals.c, src/quickfix.c, src/window.c - -Patch 6.1.258 -Problem: Buffers menu doesn't work properly for multibyte buffer names. -Solution: Use a pattern to get the left and right part of the name. - (Yasuhiro Matsumoto) -Files: runtime/menu.vim - -Patch 6.1.259 (extra) -Problem: Mac: with 'patchmode' is used filenames are truncated. -Solution: Increase the BASENAMELEN for Mac OS X. (Ed Ralston) -Files: src/os_mac.h - -Patch 6.1.260 (depends on 6.1.104) -Problem: GCC 3.2 still seems to have an optimizer problem. (Zvi Har'El) -Solution: Use the same configure check as used for GCC 3.1. -Files: src/auto/configure, src/configure.in - -Patch 6.1.261 -Problem: When deleting a line in a buffer which is not the current buffer, - using the Perl interface Delete(), the cursor in the current - window may move. (Chris Houser) -Solution: Don't adjust the cursor position when changing another buffer. -Files: src/if_perl.xs - -Patch 6.1.262 -Problem: When jumping over folds with "z[", "zj" and "zk" the previous - position is not remembered. (Hari Krishna Dara) -Solution: Set the previous context mark before jumping. -Files: src/fold.c - -Patch 6.1.263 -Problem: When typing a multi-byte character that triggers an abbreviation - it is not inserted properly. -Solution: Handle adding the typed multi-byte character. (Yasuhiro Matsumoto) -Files: src/getchar.c - -Patch 6.1.264 (depends on patch 6.1.254) -Problem: exists() does not work for built-in functions. (Steve Wall) -Solution: Don't check for the function name to start with a capital. -Files: src/eval.c - -Patch 6.1.265 -Problem: libcall() can be used in 'foldexpr' to call any system function. - rename(), delete() and remote_send() can also be used in - 'foldexpr'. These are security problems. (Georgi Guninski) -Solution: Don't allow using libcall(), rename(), delete(), remote_send() and - similar functions in the sandbox. -Files: src/eval.c - -Patch 6.1.266 (depends on 6.1.265) -Problem: Win32: compile error in eval.c. (Bill McCarthy) -Solution: Move a variable declaration. -Files: src/eval.c - -Patch 6.1.267 -Problem: Using "p" to paste into a Visual selected area may cause a crash. -Solution: Allocate enough memory for saving the register contents. (Muraoka - Taro) -Files: src/ops.c - -Patch 6.1.268 -Problem: When triggering an abbreviation with a multi-byte character, this - character is not correctly inserted after expanding the - abbreviation. (Taro Muraoka) -Solution: Add ABBR_OFF to all characters above 0xff. -Files: src/edit.c, src/ex_getln.c, src/getchar.c - -Patch 6.1.269 -Problem: After using input() text written with ":redir" gets extra indent. - (David Fishburn) -Solution: Restore msg_col after using input(). -Files: src/ex_getln.c - -Patch 6.1.270 (depends on 6.1.260) -Problem: GCC 3.2.1 still seems to have an optimizer problem. -Solution: Use the same configure check as used for GCC 3.1. -Files: src/auto/configure, src/configure.in - -Patch 6.1.271 -Problem: When compiling without the +syntax feature there are errors. -Solution: Don't use some code for syntax highlighting. (Roger Cornelius) - Make test 45 work without syntax highlighting. - Also fix an error in a pattern matching: "\%(" was not supported. -Files: src/ex_cmds2.c, src/regexp.c, src/testdir/test45.in - -Patch 6.1.272 -Problem: After using ":set define<" a crash may happen. (Christian Robinson) -Solution: Make a copy of the option value in allocated memory. -Files: src/option.c - -Patch 6.1.273 -Problem: When the cursor doesn't blink, redrawing an exposed area may hide - the cursor. -Solution: Always draw the cursor, also when it didn't move. (Muraoka Taro) -Files: src/gui.c - -Patch 6.1.274 (depends on 6.1.210) -Problem: Resetting the iconv() state after each error is wrong for an - incomplete sequence. -Solution: Don't reset the iconv() state. -Files: src/fileio.c - -Patch 6.1.275 -Problem: When using "v" in a startup script, get warning message that - terminal cannot highlight. (Charles Campbell) -Solution: Only give the message after the terminal has been initialized. -Files: src/normal.c - -Patch 6.1.276 -Problem: "gvim --remote file" doesn't prompt for an encryption key. -Solution: The further characters the client sends to the server are used. - Added inputsave() and inputrestore() to allow prompting the - user directly and not using typeahead. - Also fix possible memory leak for ":normal". -Files: src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c, - src/main.c, src/proto/getchar.pro, src/proto/ui.pro, - src/runtime/doc/eval.txt, src/structs.h, src/ui.c, src/vim.h - -Patch 6.1.277 (depends on 6.1.276) -Problem: Compilation error when building with small features. -Solution: Define trash_input_buf() when needed. (Kelvin Lee) -Files: src/ui.c - -Patch 6.1.278 -Problem: When using signs the line number of a closed fold doesn't line up - with the other line numbers. (Kamil Burzynski) -Solution: Insert two spaces for the sign column. -Files: src/screen.c - -Patch 6.1.279 -Problem: The prototype for smsg() and smsg_attr() do not match the function - definition. This may cause trouble for some compilers. (Nix) -Solution: Use va_list for systems that have stdarg.h. Use "int" instead of - "void" for the return type. -Files: src/auto/configure, src/config.h.in, src/configure.in, - src/proto.h, src/message.c - -Patch 6.1.280 -Problem: It's possible to use an argument "firstline" or "lastline" for a - function but using "a:firstline" or "a:lastline" in the function - won't work. (Benji Fisher) -Solution: Give an error message for these arguments. - Also avoid that the following function body causes a whole row of - errors, skip over it after an error in the first line. -Files: src/eval.c - -Patch 6.1.281 -Problem: In Insert mode CTRL-X CTRL-G leaves the cursor after the ruler. -Solution: Set the cursor position before waiting for the argument of CTRL-G. - (Yasuhiro Matsumoto) -Files: src/edit.c - -Patch 6.1.282 -Problem: Elvis uses "se" in a modeline, Vim doesn't recognize this. -Solution: Also accept "se " where "set " is accepted in a modeline. - (Yasuhiro Matsumoto) -Files: src/buffer.c - -Patch 6.1.283 -Problem: For ":sign" the icon file name cannot contain a space. -Solution: Handle backslashes in the file name. (Yasuhiro Matsumoto) -Files: src/ex_cmds.c - -Patch 6.1.284 -Problem: On Solaris there is a warning for "struct utimbuf". -Solution: Move including "utime.h" to outside the function. (Derek Wyatt) -Files: src/fileio.c - -Patch 6.1.285 -Problem: Can't wipe out a buffer with 'bufhide' option. -Solution: Add "wipe" value to 'bufhide'. (Yegappan Lakshmanan) -Files: runtime/doc/options.txt, src/buffer.c, src/option.c, - src/quickfix.c - -Patch 6.1.286 -Problem: 'showbreak' cannot contain multi-byte characters. -Solution: Allow using all printable characters for 'showbreak'. -Files: src/charset.c, src/move.c, src/option.c - -Patch 6.1.287 (depends on 6.1.285) -Problem: Effect of "delete" and "wipe" in 'bufhide' were mixed up. -Solution: Wipe out when wiping out is asked for. -Files: src/buffer.c - -Patch 6.1.288 -Problem: ":silent function F" hangs. (Hari Krishna Dara) -Solution: Don't use msg_col, it is not incremented when using ":silent". - Also made the function output look a bit better. Don't translate - "function". -Files: src/eval.c - -Patch 6.1.289 (depends on 6.1.278) -Problem: Compiler warning for pointer. (Axel Kielhorn) -Solution: Add a typecast for " ". -Files: src/screen.c - -Patch 6.1.290 (extra) -Problem: Truncating long text for message box may break multi-byte - character. -Solution: Adjust to start of multi-byte character. (Yasuhiro Matsumoto) -Files: src/os_mswin.c - -Patch 6.1.291 (extra) -Problem: Win32: CTRL-@ doesn't work. Don't even get a message for it. -Solution: Recognize the keycode for CTRL-@. (Yasuhiro Matsumoto) -Files: src/gui_w48.c - -Patch 6.1.292 (extra, depends on 6.1.253) -Problem: Win32: Can't compile with new MingW compiler. - Borland 5 makefile doesn't generate pathdef.c. -Solution: Remove -wwide-multiply argument. (Rene de Zwart) - Various fixes for other problems in Win32 makefiles. (Dan Sharp) -Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak, - src/Make_mvc.mak - -Patch 6.1.293 -Problem: byte2line() returns a wrong result for some values. -Solution: Change ">=" to ">" in ml_find_line_or_offset(). (Bradford C Smith) - Add one to the line number when at the end of a block. -Files: src/memline.c - -Patch 6.1.294 -Problem: Can't include a multi-byte character in a string by its hex value. - (Benji Fisher) -Solution: Add "\u....": a character specified with up to four hex numbers - and stored according to the value of 'encoding'. -Files: src/eval.c - -Patch 6.1.295 (extra) -Problem: Processing the cs.po file generates an error. (Rahul Agrawal) -Solution: Fix the printf format characters in the translation. -Files: src/po/cs.po - -Patch 6.1.296 -Problem: Win32: When cancelling the font dialog 'guifont' remains set to - "*". -Solution: Restore the old value of 'guifont' (Yasuhiro Matsumoto) -Files: src/option.c - -Patch 6.1.297 -Problem: "make test" fails in test6 in an UTF-8 environment. (Benji Fisher) -Solution: Before executing the BufReadPost autocommands save the current - fileencoding, so that the file isn't marked changed. -Files: src/fileio.c - -Patch 6.1.298 -Problem: When using signs and the first line of a closed fold has a sign - it can be redrawn as if the fold was open. (Kamil Burzynski) -Solution: Don't redraw a sign inside a closed fold. -Files: src/screen.c - -Patch 6.1.299 -Problem: ":edit +set\ ro file" doesn't work. -Solution: Halve the number of backslashes in the "+cmd" argument. -Files: src/ex_docmd.c - -Patch 6.1.300 (extra) -Problem: Handling of ETO_IGNORELANGUAGE is confusing. -Solution: Clean up the handling of ETO_IGNORELANGUAGE. (Glenn Maynard) -Files: src/gui_w32.c - -Patch 6.1.301 (extra) -Problem: French translation of file-save dialog doesn't show file name. -Solution: Insert a star in the printf string. (Francois Terrot) -Files: src/po/fr.po - -Patch 6.1.302 -Problem: Counting lines of the Visual area is incorrect for closed folds. - (Mikolaj Machowski) -Solution: Correct the start and end for the closed fold. -Files: src/normal.c - -Patch 6.1.303 (extra) -Problem: The Top/Bottom/All text does not always fit in the ruler when - translated to Japanese. Problem with a character being wider when - in a bold font. -Solution: Use ETO_PDY to specify the width of each character. (Yasuhiro - Matsumoto) -Files: src/gui_w32.c - -Patch 6.1.304 (extra, depends on 6.1.292) -Problem: Win32: Postscript is always enabled in the MingW Makefile. - Pathdef.c isn't generated properly with Make_bc5.mak. (Yasuhiro - Matsumoto) -Solution: Change an ifdef to an ifeq. (Madoka Machitani) - Use the Borland make redirection to generate pathdef.c. (Maurice - Barnum) -Files: src/Make_bc5.mak, src/Make_ming.mak - -Patch 6.1.305 -Problem: When 'verbose' is 14 or higher, a function call may cause reading - uninitialized data. (Walter Briscoe) -Solution: Check for end-of-string in trunc_string(). -Files: src/message.c - -Patch 6.1.306 -Problem: The AIX VisualAge cc compiler doesn't define __STDC__. -Solution: Use __EXTENDED__ like __STDC__. (Jess Thrysoee) -Files: src/os_unix.h - -Patch 6.1.307 -Problem: When a double-byte character has an illegal tail byte the display - is messed up. (Yasuhiro Matsumoto) -Solution: Draw "XX" instead of the wrong character. -Files: src/screen.c - -Patch 6.1.308 -Problem: Can't reset the Visual mode returned by visualmode(). -Solution: Use an optional argument to visualmode(). (Charles Campbell) -Files: runtime/doc/eval.txt, src/eval.c, src/normal.c, - src/structs.h - -Patch 6.1.309 -Problem: The tutor doesn't select German if the locale name is - "German_Germany.1252". (Joachim Hofmann) -Solution: Check for "German" in the locale name. Also check for - ".ge". And include the German and Greek tutors. -Files: runtime/tutor/tutor.de, runtime/tutor/tutor.vim, - runtime/tutor/tutor.gr, runtime/tutor/tutor.gr.cp737 - -Patch 6.1.310 (depends on 6.1.307) -Problem: All double-byte characters are displayed as "XX". -Solution: Use ">= 32" instead of "< 32". (Yasuhiro Matsumoto) -Files: src/screen.c - -Patch 6.1.311 (extra) -Problem: VMS: path in window title doesn't include necessary separator. - file version doesn't always work properly with Unix. - Crashes because of memory overwrite in GUI. - Didn't always handle files with lowercase and correct path. -Solution: Fix the problems. Remove unnecessary file name translations. - (Zoltan Arpadffy) -Files: src/buffer.c, src/ex_cmds2.c, src/fileio.c, src/memline.c, - src/misc1.c, src/misc2.c, src/os_unix.c, src/os_vms.c, src/tag.c - -Patch 6.1.312 -Problem: When using ":silent" debugging is also done silently. -Solution: Disable silence while at the debug prompt. -Files: src/ex_cmds2.c - -Patch 6.1.313 -Problem: When a ":drop fname" command is used and "fname" is open in - another window, it is also opened in the current window. -Solution: Change to the window with "fname" instead. - Don't redefine the argument list when dropping only one file. -Files: runtime/doc/windows.txt, src/ex_cmds2.c, src/ex_cmds.c, - src/ex_docmd.c, src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro - -Patch 6.1.314 (depends on 6.1.126) -Problem: Missing backslash in "Generic Config file" syntax menu. -Solution: Insert the backslash. (Zak Beck) -Files: runtime/makemenu.vim, runtime/synmenu.vim - -Patch 6.1.315 (extra) -Problem: A very long hostname may lead to an unterminated string. Failing - to obtain a hostname may result in garbage. (Walter Briscoe) -Solution: Add a NUL at the end of the hostname buffer. -Files: src/os_mac.c, src/os_msdos.c, src/os_unix.c, src/os_win16.c, - src/os_win32.c - -Patch 6.1.316 -Problem: When exiting with "wq" and there is a hidden buffer, after the - "file changed" dialog there is a warning for a changed buffer. - (Ajit Thakkar) -Solution: Do update the buffer timestamps when exiting. -Files: src/fileio.c - -Patch 6.1.317 -Problem: Closing a window may cause some of the remaining windows to be - positioned wrong if there is a mix of horizontal and vertical - splits. (Stefan Ingi Valdimarsson) -Solution: Update the frame sizes before updating the window positions. -Files: src/window.c - -Patch 6.1.318 -Problem: auto/pathdef.c can include wrong quotes when a compiler flag - includes quotes. -Solution: Put a backslash before the quotes in compiler flags. (Shinra Aida) -Files: src/Makefile - -Patch 6.1.319 (depends on 6.1.276) -Problem: Using "--remote +cmd file" does not execute "cmd". -Solution: Call inputrestore() in the same command line as inputsave(), - otherwise it will never get executed. -Files: src/main.c - -Patch 6.1.320 (depends on 6.1.313) -Problem: When a ":drop one\ file" command is used the file "one\ file" is - opened, the backslash is not removed. (Taro Muraoka) -Solution: Handle backslashes correctly. Always set the argument list to - keep it simple. -Files: runtime/doc/windows.txt, src/ex_cmds.c - -Patch 6.1.321 -Problem: When 'mouse' includes 'n' but not 'v', don't allow starting Visual - mode with the mouse. -Solution: Don't use MOUSE_MAY_VIS when there is no 'v' in 'mouse'. (Flemming - Madsen) -Files: src/normal.c - -Patch 6.1.322 (extra, depends on 6.1.315) -Problem: Win32: The host name is always "PC " plus the real host name. -Solution: Don't insert "PC " before the host name. -Files: src/os_win32.c - -Patch 6.1.323 -Problem: ":registers" doesn't stop listing for a "q" at the more prompt. - (Hari Krishna Dara) -Solution: Check for interrupt and got_int. -Files: src/ops.c, src/proto/ops.pro - -Patch 6.1.324 -Problem: Crash when dragging a vertical separator when <LeftMouse> is - remapped to jump to another window. -Solution: Pass the window pointer to the function doing the dragging instead - of always using the current window. (Daniel Elstner) - Also fix that starting a drag changes window focus. -Files: src/normal.c, src/proto/window.pro, src/ui.c, src/vim.h, - src/window.c - -Patch 6.1.325 -Problem: Shift-Tab is not automatically recognized in an xterm. -Solution: Add <Esc>[Z as the termcap code. (Andrew Pimlott) -Files: src/term.c - -Patch 6.1.326 -Problem: Using a search pattern may read from uninitialized data (Yasuhiro - Matsumoto) -Solution: Initialize pointers to NULL. -Files: src/regexp.c - -Patch 6.1.327 -Problem: When opening the "mbyte.txt" help file the utf-8 characters are - unreadable, because the fileencoding is forced to be latin1. -Solution: Check for utf-8 encoding first in help files. (Daniel Elstner) -Files: runtime/doc/mbyte.txt, src/fileio.c - -Patch 6.1.328 -Problem: Prototype for enc_canon_search() is missing. -Solution: Add the prototype. (Walter Briscoe) -Files: src/mbyte.c - -Patch 6.1.329 -Problem: When editing a file "a b c" replacing "%" in ":Cmd %" or ":next %" - does not work properly. (Hari Krishna Dara) -Solution: Always escape spaces when expanding "%". Don't split argument for - <f-args> in a user command when only one argument is used. -Files: src/ex_docmd.c - -Patch 6.1.330 -Problem: GTK, Motif and Athena: Keypad keys produce the same code as - non-keypad keys, making it impossible to map them separately. -Solution: Use different termcap codes for the keypad keys. (Neil Bird) -Files: src/gui_gtk_x11.c, src/gui_x11.c - -Patch 6.1.331 -Problem: When translating the help files, "LOCAL ADDITIONS" no longer marks - the spot where help files from plugins are to be listed. -Solution: Add a "local-additions" tag and use that to find the right spot. -Files: runtime/doc/help.txt, src/ex_cmds.c - -Patch 6.1.332 (extra) -Problem: Win32: Loading Perl dynamically doesn't work with Perl 5.8. - Perl 5.8 also does not work with Cygwin and Ming. -Solution: Adjust the function calls. (Taro Muraoka) - Adjust the cyg and ming makefiles. (Dan Sharp) -Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, - src/if_perl.xs - -Patch 6.1.333 (extra) -Problem: Win32: Can't handle Unicode text on the clipboard. - Can't pass NUL byte, it becomes a line break. (Bruce DeVisser) -Solution: Support Unicode for the clipboard (Ron Aaron and Glenn Maynard) - Also support copy/paste of NUL bytes. -Files: src/os_mswin.c, src/os_win16.c src/os_win32.c - -Patch 6.1.334 (extra, depends on 6.1.303) -Problem: Problem with drawing Hebrew characters. -Solution: Only use ETO_PDY for Windows NT and the like. (Yasuhiro Matsumoto) -Files: src/gui_w32.c - -Patch 6.1.335 (extra) -Problem: Failure of obtaining the cursor position and window size is - ignored. -Solution: Remove a semicolon after an "if". (Walter Briscoe) -Files: src/gui_w32.c - -Patch 6.1.336 (extra) -Problem: Warning for use of function prototypes of smsg(). -Solution: Define HAVE_STDARG_H. (Walter Briscoe) -Files: src/os_win32.h - -Patch 6.1.337 -Problem: When using "finish" in debug mode in function B() for ":call - A(B())" does not stop after B() is finished. -Solution: Increase debug_level while evaluating a function. -Files: src/ex_docmd.c - -Patch 6.1.338 -Problem: When using a menu that checks out the current file from Insert - mode, there is no warning for the changed file until exiting - Insert mode. (Srikanth Sankaran) -Solution: Add a check for need_check_timestamps in the Insert mode loop. -Files: src/edit.c - -Patch 6.1.339 -Problem: Completion doesn't allow "g:" in ":let g:did_<Tab>". (Benji - Fisher) -Solution: Return "g:var" for global variables when that is what is being - expanded. (Flemming Madsen) -Files: src/eval.c - -Patch 6.1.340 (extra, depends on 6.1.332) -Problem: Win32: Can't compile the Perl interface with nmake. -Solution: Don't compare the version number as a string but as a number. - (Juergen Kraemer) -Files: src/Make_mvc.mak - -Patch 6.1.341 -Problem: In Insert mode with 'rightleft' set the cursor is drawn halfway a - double-wide character. For CTRL-R and CTRL-K in Insert mode the " - or ? is not displayed. -Solution: Draw the cursor in the next character cell. Display the " or ? - over the right half of the double-wide character. (Yasuhiro - Matsumoto) Also fix that cancelling a digraph doesn't redraw - a double-byte character correctly. -Files: src/edit.c, src/gui.c, src/mbyte.c - -Patch 6.1.342 (depends on 6.1.341) -Problem: With 'rightleft' set typing "c" on a double-wide character causes - the cursor to be displayed one cell to the left. -Solution: Draw the cursor in the next character cell. (Yasuhiro Matsumoto) -Files: src/gui.c - -Patch 6.1.343 (depends on 6.1.342) -Problem: Cannot compile with the +multi_byte feature but without +rightleft. - Cannot compile without the GUI. -Solution: Fix the #ifdefs. (partly by Nam SungHyun) -Files: src/gui.c, src/mbyte.c, src/ui.c - -Patch 6.1.344 -Problem: When using ":silent filetype" the output is still put in the - message history. (Hari Krishna Dara) -Solution: Don't add messages in the history when ":silent" is used. -Files: src/message.c - -Patch 6.1.345 (extra) -Problem: Win32: 'imdisable' doesn't work. -Solution: Make 'imdisable' work. (Yasuhiro Matsumoto) -Files: src/gui_w32.c - -Patch 6.1.346 -Problem: The scroll wheel can only scroll the current window. -Solution: Make the scroll wheel scroll the window that the mouse points to. - (Daniel Elstner) -Files: src/edit.c, src/gui.c, src/normal.c, src/term.c - -Patch 6.1.347 -Problem: When using cscope to list matching tags, the listed number is - sometimes not equal to what cscope uses. (Vihren Milev) -Solution: For cscope tags use only one table, don't give tags in the current - file a higher priority. -Files: src/tag.c - -Patch 6.1.348 -Problem: Wildmode with wildmenu: ":set wildmode=list,full", ":colorscheme - <tab>" results in "zellner" instead of the first entry. (Anand - Hariharan) -Solution: Don't call ExpandOne() from globpath(). (Flemming Madsen) -Files: src/ex_getln.c - -Patch 6.1.349 -Problem: "vim --serverlist" when no server was ever started gives an error - message without "\n". - "vim --serverlist" doesn't exit when the X server can't be - contacted, it starts Vim unexpectedly. (Ricardo Signes) -Solution: Don't give an error when no Vim server was ever started. - Treat failing of opening the display equal to errors inside the - remote*() functions. (Flemming Madsen) -Files: src/if_xcmdsrv.c, src/main.c - -Patch 6.1.350 -Problem: When entering a buffer with ":bnext" for the first time, using an - autocommand to restore the last used cursor position doesn't work. - (Paolo Giarusso) -Solution: Don't use the last known cursor position of the current Vim - invocation if an autocommand changed the position. -Files: src/buffer.c - -Patch 6.1.351 (depends on 6.1.349) -Problem: Crash when starting Vim the first time in an X server. (John - McGowan) -Solution: Don't call xFree() with a fixed string. -Files: src/if_xcmdsrv.c - -Patch 6.1.352 (extra, depends on 6.1.345) -Problem: Win32: Crash when setting "imdisable" in _vimrc. -Solution: Don't call IME functions when imm32.dll was not loaded (yet). - Also add typecasts to avoid Compiler warnings for - ImmAssociateContext() argument. -Files: src/gui_w32.c - -Patch 6.1.353 (extra, depends on 6.1.334) -Problem: Problem with drawing Arabic characters. -Solution: Don't use ETO_PDY, do use padding. -Files: src/gui_w32.c - -Patch 6.1.354 (extra, depends on 6.1.333) -Problem: MS-Windows 98: Notepad can't paste text copied from Vim when - 'encoding' is "utf-8". -Solution: Also make CF_TEXT available on the clipboard. (Ron Aaron) -Files: src/os_mswin.c - -Patch 6.1.355 -Problem: In a regexp '\n' will never match anything in a string. -Solution: Make '\n' match a newline character. -Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds2.c, - src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/misc1.c, - src/option.c, src/os_mac.c, src/os_unix.c, src/quickfix.c, - src/regexp.c, src/search.c, src/syntax.c, src/tag.c, src/vim.h - -Patch 6.1.356 (extra, depends on, well, eh, several others) -Problem: Compiler warnings for using convert_setup() and a few other - things. -Solution: Add typecasts. -Files: src/mbyte.c, src/os_mswin.c, src/proto/os_win32.pro, src/os_win32.c - -Patch 6.1.357 -Problem: CR in the quickfix window jumps to the error under the cursor, but - this doesn't work in Insert mode. (Srikanth Sankaran) -Solution: Handle CR in Insert mode in the quickfix window. -Files: src/edit.c - -Patch 6.1.358 -Problem: The tutor doesn't select another locale version properly. -Solution: Insert the "let" command. (Yasuhiro Matsumoto) -Files: runtime/tutor/tutor.vim - -Patch 6.1.359 (extra) -Problem: Mac Carbon: Vim doesn't get focus when started from the command - line. Crash when using horizontal scroll bar. -Solution: Set Vim as the frontprocess. Fix scrolling. (Peter Cucka) -Files: src/gui_mac.c - -Patch 6.1.360 (depends on 6.1.341) -Problem: In Insert mode CTRL-K ESC messes up a multi-byte character. - (Anders Helmersson) -Solution: Save all bytes of a character when displaying a character - temporarily. -Files: src/edit.c, src/proto/screen.pro, src/screen.c - -Patch 6.1.361 -Problem: Cannot jump to a file mark with ":'M". -Solution: Allow jumping to another file for a mark in an Ex address when it - is the only thing in the command line. -Files: src/ex_docmd.c - -Patch 6.1.362 -Problem: tgetent() may return zero for success. tgetflag() may return -1 - for an error. -Solution: Check tgetflag() for returning a positive value. Add an autoconf - check for the value that tgetent() returns. -Files: src/auto/configure, src/config.h.in, src/configure.in, src/term.c - -Patch 6.1.363 -Problem: byte2line() can return one more than the number of lines. -Solution: Return -1 if the offset is one byte past the end. -Files: src/memline.c - -Patch 6.1.364 -Problem: That the FileChangedShell autocommand event never nests makes it - difficult to reload a file in a normal way. -Solution: Allow nesting for the FileChangedShell event but do not allow - triggering itself again. - Also avoid autocommands for the cmdline window in rare cases. -Files: src/ex_getln.c, src/fileio.c, src/window.c - -Patch 6.1.365 (depends on 6.1.217) -Problem: Setting a breakpoint in a sourced file with a relative path name - doesn't work. (Servatius Brandt) -Solution: Expand the file name to a full path. -Files: src/ex_cmds2.c - -Patch 6.1.366 -Problem: Can't use Vim with Netbeans. -Solution: Add the Netbeans interface. Includes support for sign icons and - "-fg" and "-bg" arguments for GTK. Add the 'autochdir' - option. (Gordon Prieur, George Hernandez, Dave Weatherford) - Make it possible to display both a sign with a text and one with - line highlighting in the same line. - Add support for Agide, interface version 2.1. - Also fix that when 'iskeyword' includes '?' the "*" command - doesn't work properly on a word that includes "?" (Bill McCarthy): - Don't escape "?" to "\?" when searching forward. -Files: runtime/doc/Makefile, runtime/doc/netbeans.txt, - runtime/doc/options.txt, runtime/doc/various.txt, - src/Makefile, src/auto/configure, src/buffer.c, src/config.h.in, - src/config.mk.in, src/configure.in, src/edit.c, src/ex_cmds.c, - src/ex_docmd.c, src/feature.h, src/fileio.c, src/globals.h, - src/gui.c, src/gui_beval.c, src/gui_gtk_x11.c, src/gui_x11.c, - src/main.c, src/memline.c, src/misc1.c, src/misc2.c, src/move.c, - src/nbdebug.c, src/nbdebug.h, src/netbeans.c, src/normal.c, - src/ops.c, src/option.c, src/option.h, src/proto/buffer.pro, - src/proto/gui_beval.pro, src/proto/gui_gtk_x11.pro, - src/proto/gui_x11.pro, src/proto/misc2.pro, - src/proto/netbeans.pro, src/proto/normal.pro, src/proto/ui.pro, - src/proto.h, src/screen.c, src/structs.h, src/ui.c, src/undo.c, - src/vim.h, src/window.c, src/workshop.c - -Patch 6.1.367 (depends on 6.1.365) -Problem: Setting a breakpoint in a function doesn't work. For a sourced - file it doesn't work when symbolic links are involved. (Servatius - Brandt) -Solution: Expand the file name in the same way as do_source() does. Don't - prepend the path to a function name. -Files: src/ex_cmds2.c - -Patch 6.1.368 -Problem: Completion for ":map" does not include <silent> and <script>. - ":mkexrc" do not save the <silent> attribute of mappings. -Solution: Add "<silent>" to the generated map commands when appropriate. - (David Elstner) - Add <silent> and <script> to command line completion. -Files: src/getchar.c - -Patch 6.1.369 (extra) -Problem: VMS: Vim hangs when attempting to edit a read-only file in the - terminal. Problem with VMS filenames for quickfix. -Solution: Rewrite low level input. Remove version number from file name in - a couple more places. Fix crash after patch 6.1.362. Correct - return code for system(). (Zoltan Arpadffy, Tomas Stehlik) -Files: src/misc1.c, src/os_unix.c, src/os_vms.c, src/proto/os_vms.pro, - src/os_vms_conf.h, src/quickfix.c, src/ui.c - -Patch 6.1.370 -Problem: #ifdef nesting is unclear. -Solution: Insert spaces to indicate the nesting. -Files: src/os_unix.c - -Patch 6.1.371 -Problem: "%V" in 'statusline' doesn't show "0-1" in an empty line. -Solution: Add one to the column when comparing with virtual column (Andrew - Pimlott) -Files: src/buffer.c - -Patch 6.1.372 -Problem: With 16 bit ints there are compiler warnings. (Walter Briscoe) -Solution: Change int into long. -Files: src/structs.h, src/syntax.c - -Patch 6.1.373 -Problem: The default page header for printing is not translated. -Solution: Add _() around the two places where "Page" is used. (Mike - Williams) Translate the default value of the 'titleold' and - 'printheader' options. -Files: src/ex_cmds2.c, src/option.c - -Patch 6.1.374 (extra) -Problem: MS-Windows: Cannot build GvimExt with MingW or Cygwin. -Solution: Add makefile and modified resource files. (Rene de Zwart) - Also support Cygwin. (Alejandro Lopez_Valencia) -Files: GvimExt/Make_cyg.mak, GvimExt/Make_ming.mak, GvimExt/Makefile, - GvimExt/gvimext_ming.def, GvimExt/gvimext_ming.rc - -Patch 6.1.375 -Problem: MS-Windows: ':!dir "%"' does not work for a file name with spaces. - (Xiangjiang Ma) -Solution: Don't insert backslashes for spaces in a shell command. -Files: src/ex_docmd.c - -Patch 6.1.376 -Problem: "vim --version" and "vim --help" have a non-zero exit code. - That is unusual. (Petesea) -Solution: Use a zero exit code. -Files: src/main.c - -Patch 6.1.377 -Problem: Can't add words to 'lispwords' option. -Solution: Add P_COMMA and P_NODUP flags. (Haakon Riiser) -Files: src/option.c - -Patch 6.1.378 -Problem: When two buffer-local user commands are ambiguous, a full match - with a global user command isn't found. (Hari Krishna Dara) -Solution: Detect this situation and accept the global command. -Files: src/ex_docmd.c - -Patch 6.1.379 -Problem: Linux with kernel 2.2 can't use the alternate stack in combination - with threading, causes an infinite loop. -Solution: Don't use the alternate stack in this situation. -Files: src/os_unix.c - -Patch 6.1.380 -Problem: When 'winminheight' is zero and the quickfix window is zero lines, - entering the window doesn't make it higher. (Christian J. - Robinson) -Solution: Make sure the current window is at least one line high. -Files: src/window.c - -Patch 6.1.381 -Problem: When a BufWriteCmd is used and it leaves the buffer modified, the - window may still be closed. (Hari Krishna Dara) -Solution: Return FAIL from buf_write() when the buffer is still modified - after a BufWriteCmd autocommand was used. -Files: src/fileio.c - -Patch 6.1.382 (extra) -Problem: Win32 GUI: When using two monitors, the code that checks/fixes the - window size and position (e.g. when a font changes) doesn't work - properly. (George Reilly) -Solution: Handle a double monitor situation. (Helmut Stiegler) -Files: src/gui_w32.c - -Patch 6.1.383 -Problem: The filling of the status line doesn't work properly for - multi-byte characters. (Nam SungHyun) - There is no check for going past the end of the buffer. -Solution: Properly distinguish characters and bytes. Properly check for - running out of buffer space. -Files: src/buffer.c, src/ex_cmds2.c, src/proto/buffer.pro, src/screen.c - -Patch 6.1.384 -Problem: It is not possible to find if a certain patch has been included. - (Lubomir Host) -Solution: Support using has() to check if a patch was included. -Files: runtime/doc/eval.txt, src/eval.c, src/proto/version.pro, - src/version.c - -Patch 6.1.385 (depends on 6.1.383) -Problem: Can't compile without the multi-byte feature. -Solution: Move an #ifdef. (Christian J. Robinson) -Files: src/buffer.c - -Patch 6.1.386 -Problem: Get duplicate tags when running ":helptags". -Solution: Do the other halve of moving a section to another help file. -Files: runtime/tagsrch.txt - -Patch 6.1.387 (depends on 6.1.373) -Problem: Compiler warning for pointer cast. -Solution: Add (char_u *). -Files: src/option.c - -Patch 6.1.388 (depends on 6.1.384) -Problem: Compiler warning for pointer cast. -Solution: Add (char *). Only include has_patch() when used. -Files: src/eval.c, src/version.c - -Patch 6.1.389 (depends on 6.1.366) -Problem: Balloon evaluation doesn't work for GTK. - has("balloon_eval") doesn't work. -Solution: Add balloon evaluation for GTK. Also improve displaying of signs. - (Daniel Elstner) - Also make ":gui" start the netbeans connection and avoid using - netbeans functions when the connection is not open. -Files: src/Makefile, src/feature.h, src/gui.c, src/gui.h, - src/gui_beval.c, src/gui_beval.h, src/gui_gtk.c, - src/gui_gtk_x11.c, src/eval.c, src/memline.c, src/menu.c, - src/netbeans.c, src/proto/gui_beval.pro, src/proto/gui_gtk.pro, - src/structs.h, src/syntax.c, src/ui.c, src/workshop.c - -Patch 6.1.390 (depends on 6.1.389) -Problem: It's not possible to tell Vim to save and exit through the - Netbeans interface. Would still try to send balloon eval text - after the connection is closed. - Can't use Unicode characters for sign text. -Solution: Add functions "saveAndExit" and "getModified". Check for a - working connection before sending a balloonText event. - various other cleanups. - Support any character for sign text. (Daniel Elstner) -Files: runtime/doc/netbeans.txt, runtime/doc/sign.txt, src/ex_cmds.c, - src/netbeans.c, src/screen.c - -Patch 6.1.391 -Problem: ml_get() error when using virtualedit. (Charles Campbell) -Solution: Get a line from a specific window, not the current one. -Files: src/charset.c - -Patch 6.1.392 (depends on 6.1.383) -Problem: Highlighting in the 'statusline' is in the wrong position when an - item is truncated. (Zak Beck) -Solution: Correct the start of 'statusline' items properly for a truncated - item. -Files: src/buffer.c - -Patch 6.1.393 -Problem: When compiled with Python and threads, detaching the terminal may - cause Vim to loop forever. -Solution: Add -pthread to $CFLAGS when using Python and gcc. (Daniel - Elstner) -Files: src/auto/configure,, src/configure.in - -Patch 6.1.394 (depends on 6.1.390) -Problem: The netbeans interface doesn't recognize multibyte glyph names. -Solution: Check the number of cells rather than bytes to decide - whether a glyph name is not a filename. (Daniel Elstner) -Files: src/netbeans.c - -Patch 6.1.395 (extra, depends on 6.1.369) -Problem: VMS: OLD_VMS is never defined. Missing function prototype. -Solution: Define OLD_VMS in Make_vms.mms. Add vms_sys_status() to - os_vms.pro. (Zoltan Arpadffy) -Files: src/Make_vms.mms, src/proto/os_vms.pro - -Patch 6.1.396 (depends on 6.1.330) -Problem: Compiler warnings for using enum. -Solution: Add typecast to char_u. -Files: src/gui_gtk_x11.c, src/gui_x11.c - -Patch 6.1.397 (extra) -Problem: The install program may use a wrong path for the diff command if - there is a space in the install directory path. -Solution: Use double quotes around the path if necessary. (Alejandro - Lopez-Valencia) Also use double quotes around the file name - arguments. -Files: src/dosinst.c - -Patch 6.1.398 -Problem: Saving the typeahead for debug mode causes trouble for a test - script. (Servatius Brandt) -Solution: Add the ":debuggreedy" command to avoid saving the typeahead. -Files: runtime/doc/repeat.txt, src/ex_cmds.h, src/ex_cmds2.c, - src/ex_docmd.c, src/proto/ex_cmds2.pro - -Patch 6.1.399 -Problem: Warning for unused variable. -Solution: Remove the variable two_or_more. -Files: src/ex_cmds.c - -Patch 6.1.400 (depends on 6.1.381) -Problem: When a BufWriteCmd wipes out the buffer it may still be accessed. -Solution: Don't try accessing a buffer that has been wiped out. -Files: src/fileio.c - -Patch 6.1.401 (extra) -Problem: Building the Win16 version with Borland 5.01 doesn't work. - "make test" doesn't work with Make_dos.mak. (Walter Briscoe) -Solution: Various fixes to the w16 makefile. (Walter Briscoe) - Don't use deltree. Use "mkdir \tmp" instead of "mkdir /tmp". -Files: src/Make_w16.mak, src/testdir/Make_dos.mak - -Patch 6.1.402 -Problem: When evaluating a function name with curly braces, an error - is not handled consistently. -Solution: Accept the result of an curly braces expression when an - error was encountered. Skip evaluating an expression in curly - braces when skipping. (Servatius Brandt) -Files: src/eval.c - -Patch 6.1.403 (extra) -Problem: MS-Windows 16 bit: compiler warnings. -Solution: Add typecasts. (Walter Briscoe) -Files: src/ex_cmds2.c, src/gui_w48.c, src/os_mswin.c, src/os_win16.c, - src/syntax.c - -Patch 6.1.404 (extra) -Problem: Various small problems. -Solution: Fix comments. Various small additions, changes in indent, removal - of unused items and fixes. -Files: Makefile, README.txt, runtime/menu.vim, runtime/vimrc_example.vim, - src/INSTALL, src/INSTALLole.txt, src/Make_bc5.mak, - src/Make_cyg.mak, src/Make_ming.mak, src/Makefile, - src/config.h.in, src/edit.c, src/eval.c, src/ex_cmds2.c, - src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/getchar.c, - src/gui.c, src/gui_gtk.c, src/gui_photon.c, src/if_cscope.c, - src/if_python.c, src/keymap.h, src/mark.c, src/mbyte.c, - src/message.c, src/misc1.c, src/misc2.c, src/normal.c, - src/option.c, src/os_os2_cfg.h, src/os_win32.c, - src/proto/getchar.pro, src/proto/message.pro, - src/proto/regexp.pro, src/screen.c, src/structs.h, src/syntax.c, - src/term.c, src/testdir/test15.in, src/testdir/test15.ok, - src/vim.rc, src/xxd/Make_cyg.mak, src/xxd/Makefile - -Patch 6.1.405 -Problem: A few files are missing from the toplevel Makefile. -Solution: Add the missing files. -Files: Makefile - -Patch 6.1.406 (depends on 6.1.392) -Problem: When a statusline item doesn't fit arbitrary text appears. - (Christian J. Robinson) -Solution: When there is just enough room but not for the "<" truncate the - statusline item like there is no room. -Files: src/buffer.c - -Patch 6.1.407 -Problem: ":set scrollbind | help" scrollbinds the help window. (Andrew - Pimlott) -Solution: Reset 'scrollbind' when opening a help window. -Files: src/ex_cmds.c - -Patch 6.1.408 -Problem: When 'rightleft' is set unprintable character 0x0c is displayed as - ">c0<". -Solution: Reverse the text of the hex character. -Files: src/screen.c - -Patch 6.1.409 -Problem: Generating tags for the help doesn't work for some locales. -Solution: Set LANG=C LC_ALL=C in the environment for "sort". (Daniel - Elstner) -Files: runtime/doc/Makefile - -Patch 6.1.410 (depends on 6.1.390) -Problem: Linking error when compiling with Netbeans but without sign icons. - (Malte Neumann) -Solution: Don't define buf_signcount() when sign icons are unavailable. -Files: src/buffer.c - -Patch 6.1.411 -Problem: When 'virtualedit' is set, highlighting a Visual block beyond the - end of a line may be wrong. -Solution: Correct the virtual column when the end of the line is before the - displayed part of the line. (Muraoka Taro) -Files: src/screen.c - -Patch 6.1.412 -Problem: When swapping terminal screens and using ":gui" to start the GUI, - the shell prompt may be after a hit-enter prompt. -Solution: Output a newline in the terminal when starting the GUI and there - was a hit-enter prompt.. -Files: src/gui.c - -Patch 6.1.413 -Problem: When 'clipboard' contains "unnamed", "p" in Visual mode doesn't - work correctly. -Solution: Save the register before overwriting it and put the resulting text - on the clipboard afterwards. (Muraoka Taro) -Files: src/normal.c, src/ops.c - -Patch 6.1.414 (extra, depends on 6.1.369) -Problem: VMS: Vim busy waits when waiting for input. -Solution: Delay for a short while before getting another character. (Zoltan - Arpadffy) -Files: src/os_vms.c - -Patch 6.1.415 -Problem: When there is a vertical split and a quickfix window, reducing the - size of the Vim window may result in a wrong window layout and a - crash. -Solution: When reducing the window size and there is not enough space for - 'winfixheight' set the frame height to the larger height, so that - there is a retry while ignoring 'winfixheight'. (Yasuhiro - Matsumoto) -Files: src/window.c - -Patch 6.1.416 (depends on 6.1.366) -Problem: When using the Netbeans interface, a line with a sign cannot be - changed. -Solution: Respect the GUARDEDOFFSET for sign IDs when checking for a guarded - area. -Files: src/netbeans.c - -Patch 6.1.417 -Problem: Unprintable multi-byte characters are not handled correctly. - Multi-byte characters above 0xffff are displayed as another - character. -Solution: Handle unprintable multi-byte characters. Display multi-byte - characters above 0xffff with a marker. Recognize UTF-16 words and - BOM words as unprintable. (Daniel Elstner) -Files: src/charset.c, src/mbyte.c, src/screen.c - -Patch 6.1.418 -Problem: The result of strftime() is in the current locals. Need to - convert it to 'encoding'. -Solution: Obtain the current locale and convert the argument for strftime() - to it and the result back to 'encoding'. (Daniel Elstner) -Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/mbyte.c, - src/proto/mbyte.pro, src/option.c, src/os_mswin.c - -Patch 6.1.419 -Problem: Vim doesn't compile on AIX 5.1. -Solution: Don't define _NO_PROTO on this system. (Uribarri) -Files: src/auto/configure, src/configure.in - -Patch 6.1.420 (extra) -Problem: convert_input() has an unnecessary STRLEN(). - Conversion from UCS-2 to a codepage uses word count instead of - byte count. -Solution: Remove the STRLEN() call. (Daniel Elstner) - Always use byte count for string_convert(). -Files: src/gui_w32.c, src/mbyte.c - -Patch 6.1.421 (extra, depends on 6.1.354) -Problem: MS-Windows 9x: When putting text on the clipboard it can be in - the wrong encoding. -Solution: Convert text to the active codepage for CF_TEXT. (Glenn Maynard) -Files: src/os_mswin.c - -Patch 6.1.422 -Problem: Error in .vimrc doesn't cause hit-enter prompt when swapping - screens. (Neil Bird) -Solution: Set msg_didany also when sending a message to the terminal - directly. -Files: src/message.c - -Patch 6.1.423 -Problem: Can't find arbitrary text in help files. -Solution: Added the ":helpgrep" command. -Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c, - src/proto/quickfix.pro, src/quickfix.c - -Patch 6.1.424 (extra) -Problem: Win32: Gvim compiled with VC++ 7.0 run on Windows 95 does not show - menu items. -Solution: Define $WINVER to avoid an extra item is added to MENUITEMINFO. - (Muraoka Taro) -Files: src/Make_mvc.mak - -Patch 6.1.425 -Problem: ":helptags $VIMRUNTIME/doc" does not add the "help-tags" tag. -Solution: Do add the "help-tags" tag for that specific directory. -Files: src/ex_cmds.c - -Patch 6.1.426 -Problem: "--remote-wait +cmd file" waits forever. (Valery Kondakoff) -Solution: Don't wait for the "+cmd" argument to have been edited. -Files: src/main.c - -Patch 6.1.427 -Problem: Several error messages for regexp patterns are not translated. -Solution: Use _() properly. (Muraoka Taro) -Files: src/regexp.c - -Patch 6.1.428 -Problem: FreeBSD: wait() may hang when compiled with Python support and - doing a system() call in a startup script. -Solution: Use waitpid() instead of wait() and poll every 10 msec, just like - what is done in the GUI. -Files: src/os_unix.c - -Patch 6.1.429 (depends on 6.1.390) -Problem: Crash when using showmarks.vim plugin. (Charles Campbell) -Solution: Check for sign_get_text() returning a NULL pointer. -Files: src/screen.c - -Patch 6.1.430 -Problem: In Lisp code backslashed parens should be ignored for "%". (Dorai) -Solution: Skip over backslashed parens. -Files: src/search.c - -Patch 6.1.431 -Problem: Debug commands end up in redirected text. -Solution: Disable redirection while handling debug commands. -Files: src/ex_cmds2.c - -Patch 6.1.432 (depends on 6.1.375) -Problem: MS-Windows: ":make %:p" inserts extra backslashes. (David Rennalls) -Solution: Don't add backslashes, handle it like ":!cmd". -Files: src/ex_docmd.c - -Patch 6.1.433 -Problem: ":popup" only works for Win32. -Solution: Add ":popup" support for GTK. (Daniel Elstner) -Files: runtime/doc/gui.txt, src/ex_docmd.c, src/gui_gtk.c, src/menu.c, - src/proto/gui_gtk.pro - -Patch 6.1.434 (extra) -Problem: Win32: When there are more than 32767 lines, the scrollbar has a - roundoff error. -Solution: Make a click on an arrow move one line. Also move the code to - gui_w48.c, there is hardly any difference between the 16 bit and - 32 bit versions. (Walter Briscoe) -Files: src/gui_w16.c, src/gui_w32.c, src/gui_w48.c - -Patch 6.1.435 -Problem: ":winsize x" resizes the Vim window to the minimal size. (Andrew - Pimlott) -Solution: Give an error message for wrong arguments of ":winsize" and - ":winpos". -Files: src/ex_docmd.c - -Patch 6.1.436 -Problem: When a long UTF-8 file contains an illegal byte it's hard to find - out where it is. (Ron Aaron) -Solution: Add the line number to the error message. -Files: src/fileio.c - -Patch 6.1.437 (extra, depends on 6.1.421) -Problem: Using multi-byte functions when they are not available. -Solution: Put the clipboard conversion inside an #ifdef. (Vince Negri) - Also fix a pointer type mistake. (Walter Briscoe) -Files: src/os_mswin.c - -Patch 6.1.438 -Problem: When Perl has thread support Vim cannot use the Perl interface. -Solution: Add a configure check and disable Perl when it will not work. - (Aron Griffis) -Files: src/auto/configure, src/configure.in - -Patch 6.1.439 -Problem: Netbeans: A "create" function doesn't actually create a buffer, - following functions may fail. -Solution: Create a Vim buffer without a name when "create" is called. - (Gordon Prieur) -Files: runtime/doc/netbeans.txt, src/netbeans.c - -Patch 6.1.440 -Problem: The "@*" command doesn't obtain the actual contents of the - clipboard. (Hari Krishna Dara) -Solution: Obtain the clipboard text before executing the command. -Files: src/ops.c - -Patch 6.1.441 -Problem: "zj" and "zk" cannot be used as a motion command after an - operator. (Ralf Hetzel) -Solution: Accept these commands as motion commands. -Files: src/normal.c - -Patch 6.1.442 -Problem: Unicode 3.2 defines more space and punctuation characters. -Solution: Add the new characters to the Unicode tables. (Raphael Finkel) -Files: src/mbyte.c - -Patch 6.1.443 (extra) -Problem: Win32: The gvimext.dll build with Borland 5.5 requires another - DLL. -Solution: Build a statically linked version by default. (Dan Sharp) -Files: GvimExt/Make_bc5.mak - -Patch 6.1.444 (extra) -Problem: Win32: Enabling a build with gettext support is not consistent. -Solution: Use "GETTEXT" for Borland and msvc makefiles. (Dan Sharp) -Files: src/Make_bc5.mak, src/Make_mvc.mak - -Patch 6.1.445 (extra) -Problem: DJGPP: get warning for argument of putenv() -Solution: Define HAVE_PUTENV to use DJGPP's putenv(). (Walter Briscoe) -Files: src/os_msdos.h - -Patch 6.1.446 (extra) -Problem: Win32: The MingW makefile uses a different style of arguments than - other makefiles. - Dynamic IME is not supported for Cygwin. -Solution: Use "no" and "yes" style arguments. Remove the use of the - dyn-ming.h include file. (Dan Sharp) - Do not include the ime.h file and adjust the makefile. (Alejandro - Lopez-Valencia) -Files: src/Make_cyg.mak, src/Make_ming.mak, src/gui_w32.c, - src/if_perl.xs, src/if_python.c, src/if_ruby.c, src/os_win32.c - -Patch 6.1.447 -Problem: "make install" uses "make" directly for generating help tags. -Solution: Use $(MAKE) instead of "make". (Tim Mooney) -Files: src/Makefile - -Patch 6.1.448 -Problem: 'titlestring' has a default maximum width of 50 chars per item. -Solution: Remove the default maximum (also for 'statusline'). -Files: src/buffer.c - -Patch 6.1.449 -Problem: When "1" and "a" are in 'formatoptions', auto-formatting always - moves a newly added character to the next line. (Servatius Brandt) -Solution: Don't move a single character to the next line when it was just - typed. -Files: src/edit.c - -Patch 6.1.450 -Problem: Termcap entry "kB" for back-tab is not recognized. -Solution: Use back-tab as the shift-tab code. -Files: src/keymap.h, src/misc2.c, src/term.c - -Patch 6.1.451 -Problem: GUI: When text in the find dialog contains a slash, a backslash is - inserted the next time it is opened. (Mezz) -Solution: Remove escaped backslashes and question marks. (Daniel Elstner) -Files: src/gui.c - -Patch 6.1.452 (extra, after 6.1.446) -Problem: Win32: IME support doesn't work for MSVC. -Solution: Use _MSC_VER instead of __MSVC. (Alejandro Lopez-Valencia) -Files: src/gui_w32.c - -Patch 6.1.453 (after 6.1.429) -Problem: When compiled without sign icons but with sign support, adding a - sign may cause a crash. -Solution: Check for the text sign to exist before using it. (Kamil - Burzynski) -Files: src/screen.c - -Patch 6.1.454 (extra) -Problem: Win32: pasting Russian text in Vim with 'enc' set to cp1251 - results in utf-8 bytes. (Perelyubskiy) - Conversion from DBCS to UCS2 does not work when 'encoding' is not - the active codepage. -Solution: Introduce enc_codepage and use it for conversion to 'encoding' - (Glenn Maynard) - Use MultiByteToWideChar() and WideCharToMultiByte() instead of - iconv(). Should do most needed conversions without iconv.dll. -Files: src/globals.h, src/gui_w32.c, src/mbyte.c, src/os_mswin.c, - src/proto/mbyte.pro, src/proto/os_mswin.pro, src/structs.h - -Patch 6.1.455 -Problem: Some Unicode characters can be one or two character cells wide. -Solution: Add the 'ambiwidth' option to tell Vim how to display these - characters. (Jungshik Shin) - Also reset the script ID when setting an option to its default - value, so that ":verbose set" won't give wrong info. -Files: runtime/doc/options.txt, src/mbyte.c, src/option.c, src/option.h - -Patch 6.1.456 (extra, after 6.1.454) -Problem: Win32: IME doesn't work. -Solution: ImmGetCompositionStringW() returns the size in bytes, not words. - (Yasuhiro Matsumoto) Also fix typecast problem. -Files: src/gui_w32.c, src/os_mswin.c - -Patch 6.1.457 -Problem: An empty register in viminfo causes conversion to fail. -Solution: Don't convert an empty string. (Yasuhiro Matsumoto) -Files: src/ex_cmds.c, src/mbyte.c - -Patch 6.1.458 -Problem: Compiler warning for pointer. -Solution: Add a typecast. -Files: src/ex_cmds.c - -Patch 6.1.459 (extra) -Problem: Win32: libcall() may return an invalid pointer and cause Vim to - crash. -Solution: Add a strict check for the returned pointer. (Bruce Mellows) -Files: src/os_mswin.c - -Patch 6.1.460 -Problem: GTK: after scrolling the text one line with a key, clicking the - arrow of the scrollbar does not always work. (Nam SungHyun) -Solution: Always update the scrollbar thumb when the value changed, even - when it would not move, like for RISCOS. (Daniel Elstner) -Files: src/gui.c, src/gui.h - -Patch 6.1.461 -Problem: When a keymap is active, typing a character in Select mode does - not use it. (Benji Fisher) -Solution: Apply Insert mode mapping to the character typed in Select mode. -Files: src/normal.c - -Patch 6.1.462 -Problem: When autocommands wipe out a buffer, a crash may happen. (Hari - Krishna Dara) -Solution: Don't decrement the window count of a buffer before calling the - autocommands for it. When re-using the current buffer, watch out - for autocommands changing the current buffer. -Files: src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro - -Patch 6.1.463 -Problem: When writing a compressed file, the file name that gzip stores in - the file is the weird temporary file name. (David Rennalls) -Solution: Use the real file name when possible. -Files: runtime/plugin/gzip.vim - -Patch 6.1.464 -Problem: Crash when using C++ syntax highlighting. (Gerhard Hochholzer) -Solution: Check for a negative index. -Files: src/syntax.c - -Patch 6.1.465 (after 6.1.454) -Problem: Compile error when using cygwin. -Solution: Change #ifdef WIN32 to #ifdef WIN3264. (Alejandro Lopez-Valencia) - Undefine WIN32 after including windows.h -Files: src/mbyte.c - -Patch 6.1.466 -Problem: The "-f" argument is a bit obscure. -Solution: Add the "--nofork" argument. Improve the help text a bit. -Files: runtime/doc/starting.txt, src/main.c - -Patch 6.1.467 -Problem: Setting the window title doesn't work for Chinese. -Solution: Use an X11 function to convert text to a text property. (Kentaro - Nakazawa) -Files: src/os_unix.c - -Patch 6.1.468 -Problem: ":mksession" also stores folds for buffers which will not be - restored. -Solution: Only store folds for a buffer with 'buftype' empty and help files. -Files: src/ex_docmd.c - -Patch 6.1.469 -Problem: 'listchars' cannot contain multi-byte characters. -Solution: Handle multi-byte UTF-8 list characters. (Matthew Samsonoff) -Files: src/message.c, src/option.c, src/screen.c - -Patch 6.1.470 (lang) -Problem: Polish messages don't show up correctly on MS-Windows. -Solution: Convert messages to cp1250. (Mikolaj Machowski) - Also add English message translations, because it got in the way - of the patch. -Files: Makefile, src/po/Makefile, src/po/en_gb.po, src/po/pl.po - -Patch 6.1.471 -Problem: ":jumps" output continues after pressing "q" at the more-prompt. - (Hari Krishna Dara) -Solution: Check for "got_int" being set. -Files: src/mark.c - -Patch 6.1.472 -Problem: When there is an authentication error when connecting to the X - server Vim exits. -Solution: Use XSetIOErrorHandler() to catch the error and longjmp() to avoid - the exit. Also do this in the main loop, so that when the X - server exits a Vim running in a console isn't killed. -Files: src/globals.h, src/main.c, src/os_unix.c - -Patch 6.1.473 -Problem: Referring to $curwin or $curbuf in Perl 5.6 causes a crash. -Solution: Add "pTHX_" to cur_val(). (Yasuhiro Matsumoto) -Files: src/if_perl.xs - -Patch 6.1.474 -Problem: When opening the command-line window in Ex mode it's impossible to - go back. (Pavol Juhas) -Solution: Reset "exmode_active" and restore it when the command-line window - is closed. -Files: src/ex_getln.c - - -Patch 6.2f.001 -Problem: The configure check for Ruby didn't work properly for Ruby 1.8.0. -Solution: Change the way the Ruby check is done. (Aron Griffis) -Files: src/auto/configure, src/configure.in - -Patch 6.2f.002 -Problem: The output of ":ls" doesn't show whether a buffer had read errors. -Solution: Add the "x" flag in the ":ls" output. -Files: runtime/doc/windows.txt, src/buffer.c - -Patch 6.2f.003 -Problem: Test49 doesn't properly test the behavior of ":catch" without an - argument. -Solution: Update test49. (Servatius Brandt) -Files: src/testdir/test49.ok, src/testdir/test49.vim - -Patch 6.2f.004 -Problem: "vim --version" always uses CR/LF in the output. -Solution: Omit the CR. -Files: src/message.c, src/os_unix.c - -Patch 6.2f.005 -Problem: Two error messages without a colon after the number. -Solution: Add the colon. (Taro Muraoka) -Files: src/if_cscope.c - -Patch 6.2f.006 -Problem: When saving a file takes a while and Vim regains focus this can - result in a "file changed outside of Vim" warning and ml_get() - errors. (Mike Williams) -Solution: Add the "b_saving" flag to avoid checking the timestamp while the - buffer is being saved. (Michael Schaap) -Files: src/fileio.c, src/structs.h - -Patch 6.2f.007 -Problem: Irix compiler complains about multiple defined symbols. - vsnprintf() is not available. (Charles Campbell) -Solution: Insert EXTERN for variables in globals.h. Change the configure - check for vsnprintf() from compiling to linking. -Files: src/auto/configure, src/configure.in, src/globals.h - -Patch 6.2f.008 -Problem: The Aap recipe doesn't work with Aap 0.149. -Solution: Change targetarg to TARGETARG. Update the mysign file. -Files: src/main.aap, src/mysign - -Patch 6.2f.009 (extra) -Problem: Small problem when building with Borland 5.01. -Solution: Use mkdir() instead of _mkdir(). (Walter Briscoe) -Files: src/dosinst.h - -Patch 6.2f.010 -Problem: Warning for missing prototypes. -Solution: Add missing prototypes. (Walter Briscoe) -Files: src/if_cscope.c - -Patch 6.2f.011 -Problem: The configure script doesn't work with autoconf 2.5x. -Solution: Add square brackets around a header check. (Aron Griffis) - Note: touch src/auto/configure after applying this patch. -Files: src/configure.in - -Patch 6.2f.012 -Problem: ":echoerr" doesn't work correctly inside try/endtry. -Solution: Don't reset did_emsg inside a try/endtry. (Servatius Brandt) -Files: src/eval.c - -Patch 6.2f.013 (extra) -Problem: Macintosh: Compiler warning for a trigraph. -Solution: Insert a backslash before each question mark. (Peter Cucka) -Files: src/os_mac.h - -Patch 6.2f.014 (extra) -Problem: Macintosh: ex_eval is not included in the project file. -Solution: Add ex_eval. (Dany St-Amant) -Files: src/os_mac.pbproj/project.pbxproj - -Patch 6.2f.015 (extra) -Problem: Win32: When changing header files not all source files involved - are recompiled. -Solution: Improve the dependency rules. (Dan Sharp) -Files: src/Make_cyg.mak, src/Make_ming.mak - -Patch 6.2f.016 -Problem: "vim --version > ff" on non-Unix systems results in a file with a - missing line break at the end. (Bill McCArthy) -Solution: Add a line break. -Files: src/main.c - -Patch 6.2f.017 -Problem: Unix: starting Vim in the background and then bringing it to the - foreground may cause the terminal settings to be wrong. -Solution: Check for tcsetattr() to return an error, retry when it does. - (Paul Tapper) -Files: src/os_unix.c - -Patch 6.2f.018 -Problem: Mac OS X 10.2: OK is defined to zero in cursus.h while Vim uses - one. Redefining it causes a warning message. -Solution: Undefine OK before defining it to one. (Taro Muraoka) -Files: src/vim.h - -Patch 6.2f.019 -Problem: Mac OS X 10.2: COLOR_BLACK and COLOR_WHITE are defined in - curses.h. -Solution: Rename them to PRCOLOR_BLACK and PRCOLOR_WHITE. -Files: src/ex_cmds2.c - -Patch 6.2f.020 -Problem: Win32: test50 produces beeps and fails with some versions of diff. -Solution: Remove empty lines and convert the output to dos fileformat. -Files: src/testdir/test50.in - -Patch 6.2f.021 -Problem: Running configure with "--enable-netbeans" disables Netbeans. - (Gordon Prieur) -Solution: Fix the tests in configure.in where the default is to enable a - feature. Fix that "--enable-acl" reported "yes" confusingly. -Files: src/auto/configure, src/configure.in, src/mysign - -Patch 6.2f.022 -Problem: A bogus value for 'foldmarker' is not rejected, possibly causing a - hang. (Derek Wyatt) -Solution: Check for a non-empty string before and after the comma. -Files: src/option.c - -Patch 6.2f.023 -Problem: When the help files are not in $VIMRUNTIME but 'helpfile' is - correct Vim still can't find the help files. -Solution: Also look for a tags file in the directory of 'helpfile'. -Files: src/tag.c - -Patch 6.2f.024 -Problem: When 'delcombine' is set and a character has more than two - composing characters "x" deletes them all. -Solution: Always delete only the last composing character. -Files: src/misc1.c - -Patch 6.2f.025 -Problem: When reading a file from stdin that has DOS line endings but a - missing end-of-line for the last line 'fileformat' becomes "unix". - (Bill McCarthy) -Solution: Don't add the missing line break when re-reading the text from the - buffer. -Files: src/fileio.c - -Patch 6.2f.026 -Problem: When typing new text at the command line, old composing characters - may be displayed. -Solution: Don't read composing characters from after the end of the - text to be displayed. -Files: src/ex_getln.c, src/mbyte.c, src/message.c, src/proto/mbyte.pro, - src/screen.c - -Patch 6.2f.027 -Problem: Compiler warnings for unsigned char pointers. (Tony Leneis) -Solution: Add typecasts to char pointer. -Files: src/quickfix.c - -Patch 6.2f.028 -Problem: GTK: When 'imactivatekey' is empty and XIM is inactive it can't be - made active again. Cursor isn't updated immediately when changing - XIM activation. Japanese XIM may hang when using 'imactivatekey'. - Can't activate XIM after typing fFtT command or ":sh". -Solution: Properly set the flag that indicates the IM is active. Update the - cursor right away. Do not send a key-release event. Handle - Normal mode and running an external command differently. - (Yasuhiro Matsumoto) -Files: src/mbyte.c - -Patch 6.2f.029 -Problem: Mixing use of int and enum. -Solution: Adjust argument type of cs_usage_msg(). Fix wrong typedef. -Files: src/if_cscope.c, src/if_cscope.h - -Patch 6.2f.030 (after 6.2f.028) -Problem: Cursor moves up when using XIM. -Solution: Reset im_preedit_cursor. (Yasuhiro Matsumoto) -Files: src/mbyte.c - -Patch 6.2f.031 -Problem: Crash when listing a function argument in the debugger. (Ron Aaron) -Solution: Init the name field of an argument to NULL. -Files: src/eval.c - -Patch 6.2f.032 -Problem: When a write fails for a ":silent!" while inside try/endtry the - BufWritePost autocommands are not triggered. -Solution: Check the emsg_silent flag in should_abort(). (Servatius Brandt) -Files: src/ex_eval.c, src/testdir/test49.ok, src/testdir/test49.vim - -Patch 6.2f.033 -Problem: Cscope: re-entrance problem for ":cscope" command. Checking for - duplicate database didn't work well for Win95. Didn't check for - duplicate databases after an empty entry. -Solution: Don't set postponed_split too early. Remember first empty - database entry. (Sergey Khorev) -Files: src/if_cscope.c - -Patch 6.2f.034 -Problem: The netbeans interface cannot be used on systems without - vsnprintf(). (Tony Leneis) -Solution: Use EMSG(), EMSGN() and EMSG2() instead. -Files: src/auto/configure, src/configure.in, src/netbeans.c - -Patch 6.2f.035 -Problem: The configure check for the netbeans interface doesn't work if the - socket and nsl libraries are required. -Solution: Check for the socket and nsl libraries before the netbeans check. -Files: src/auto/configure, src/configure.in - -Patch 6.2f.036 -Problem: Moving leftwards over text with an illegal UTF-8 byte moves one - byte instead of one character. -Solution: Ignore an illegal byte after the cursor position. -Files: src/mbyte.c - -Patch 6.2f.037 -Problem: When receiving a Netbeans command at the hit-enter or more prompt - the screen is redrawn but Vim is still waiting at the prompt. -Solution: Quit the prompt like a CTRL-C was typed. -Files: src/netbeans.c - -Patch 6.2f.038 -Problem: The dependency to run autoconf causes a patch for configure.in - to run autoconf, even though the configure script was updated as - well. -Solution: Only run autoconf with "make autoconf". -Files: src/Makefile - -Patch 6.2f.039 -Problem: CTRL-W K makes the new top window very high. -Solution: When 'equalalways' is set equalize the window heights. -Files: src/window.c - - -============================================================================== -VERSION 6.3 *version-6.3* - -This section is about improvements made between version 6.2 and 6.3. - -This is mainly a bug-fix release. There are also a few new features. -The major number of new items is in the runtime files and translations. - - -Changed *changed-6.3* -------- - -The intro message also displays a note about sponsoring Vim, mixed randomly -with the message about helping children in Uganda. - -Included the translated menus, keymaps and tutors with the normal runtime -files. The separate "lang" archive now only contains translated messages. - -Made the translated menu file names a bit more consistent. Use "latin1" for -"iso_8859-1" and "iso_8859-15". - -Removed the "file_select.vim" script from the distribution. It's not more -useful than other scripts that can be downloaded from www.vim.org. - -The "runtime/doc/tags" file is now always in unix fileformat. On MS-Windows -it used to be dos fileformat, but ":helptags" generates a unix format file. - - -Added *added-6.3* ------ - -New commands: - :cNfile go to last error in previous file - :cpfile idem - :changes print the change list - :keepmarks following command keeps marks where they are - :keepjumps following command keeps jumplist and marks - :lockmarks following command keeps marks where they are - :redrawstatus force a redraw of the status line(s) - -New options: - 'antialias' Mac OS X: use smooth, antialiased fonts - 'helplang' preferred help languages - -Syntax files: - Arch inventory (Nikolai Weibull) - Calendar (Nikolai Weibull) - Ch (Wayne Cheng) - Controllable Regex Mutilator (Nikolai Weibull) - D (Jason Mills) - Desktop (Mikolaj Machowski) - Dircolors (Nikolai Weibull) - Elinks configuration (Nikolai Weibull) - FASM (Ron Aaron) - GrADS scripts (Stefan Fronzek) - Icewm menu (James Mahler) - LDIF (Zak Johnson) - Locale input, fdcc. (Dwayne Bailey) - Pinfo config (Nikolai Weibull) - Pyrex (Marco Barisione) - Relax NG Compact (Nikolai Weibull) - Slice (Morel Bodin) - VAX Macro Assembly (Tom Uijldert) - grads (Stefan Fronzek) - libao (Nikolai Weibull) - mplayer (Nikolai Weibull) - rst (Nikolai Weibull) - tcsh (Gautam Iyer) - yaml (Nikolai Weibull) - -Compiler plugins: - ATT dot (Marcos Macedo) - Apple Project Builder (Alexander von Below) - Intel (David Harrison) - bdf (Nikolai Weibull) - icc (Peter Puck) - javac (Doug Kearns) - neato (Marcos Macedo) - onsgmls (Robert B. Rowsome) - perl (Christian J. Robinson) - rst (Nikolai Weibull) - se (SmartEiffel) (Doug Kearns) - tcl (Doug Kearns) - xmlwf (Robert B. Rowsome) - -Filetype plugins: - Aap (Bram Moolenaar) - Ch (Wayne Cheng) - Css (Nikolai Weibull) - Pyrex (Marco Barisione) - Rst (Nikolai Weibull) - -Indent scripts: - Aap (Bram Moolenaar) - Ch (Wayne Cheng) - DocBook (Nikolai Weibull) - MetaPost (Eugene Minkovskii) - Objective-C (Kazunobu Kuriyama) - Pyrex (Marco Barisione) - Rst (Nikolai Weibull) - Tcsh (Gautam Iyer) - XFree86 configuration file (Nikolai Weibull) - Zsh (Nikolai Weibull) - -Keymaps: - Greek for cp1253 (Panagiotis Louridas) - Hungarian (Magyar) (Laszlo Zavaleta) - Persian-Iranian (Behnam Esfahbod) - -Message translations: - Catalan (Ernest Adrogue) - Russian (Vassily Ragosin) - Swedish (Johan Svedberg) - -Menu translations: - Catalan (Ernest Adrogue) - Russian (Tim Alexeevsky) - Swedish (Johan Svedberg) - -Tutor translations: - Catalan (Ernest Adrogue) - Russian in cp1251 (Alexey Froloff) - Slovak in cp1250 and iso8859-2 (Lubos Celko) - Swedish (Johan Svedberg) - Korean (Kee-Won Seo) - UTF-8 version of the Japanese tutor (Yasuhiro Matsumoto) Use this as - the original, create the other Japanese tutor by conversion. - -Included "russian.txt" help file. (Vassily Ragosin) - -Include Encapsulated PostScript and PDF versions of the Vim logo in the extra -archive. - -The help highlighting finds the highlight groups and shows them in the color -that is actually being used. (idea from Yakov Lerner) - -The big Win32 version is now compiled with Ruby interface, version 1.8. For -Python version 2.3 is used. For Perl version 5.8 is used. - -The "ftdetect" directory is mentioned in the documentation. The DOS install -program creates it. - - -Fixed *fixed-6.3* ------ - -Test 42 failed on MS-Windows. Set and reset 'fileformat' and 'binary' options -here and there. (Walter Briscoe) - -The explorer plugin didn't work for double-byte 'encoding's. - -Use "copy /y" in Make_bc5.mak to avoid a prompt for overwriting. - -Patch 6.2.001 -Problem: The ":stopinsert" command doesn't have a help tag. -Solution: Add the tag. (Antoine J. Mechelynck) -Files: runtime/doc/insert.txt, runtime/doc/tags - -Patch 6.2.002 -Problem: When compiled with the +multi_byte feature but without +eval, - displaying UTF-8 characters may cause a crash. (Karsten Hopp) -Solution: Also set the default for 'ambiwidth' when compiled without the - +eval feature. -Files: src/option.c - -Patch 6.2.003 -Problem: GTK 2: double-wide characters below 256 are not displayed - correctly. -Solution: Check the cell width for characters above 127. (Yasuhiro - Matsumoto) -Files: src/gui_gtk_x11.c - -Patch 6.2.004 -Problem: With a line-Visual selection at the end of the file a "p" command - puts the text one line upwards. -Solution: Detect that the last line was deleted and put forward. (Taro - Muraoka) -Files: src/normal.c - -Patch 6.2.005 -Problem: GTK: the "Find" and "Find and Replace" tools don't work. (Aschwin - Marsman) -Solution: Show the dialog after creating it. (David Necas) -Files: src/gui_gtk.c - -Patch 6.2.006 -Problem: The Netbeans code contains an obsolete function that uses "vim61" - and sets the fall-back value for $VIMRUNTIME. -Solution: Delete the obsolete function. -Files: src/main.c, src/netbeans.c, src/proto/netbeans.pro - -Patch 6.2.007 -Problem: Listing tags for Cscope doesn't always work. -Solution: Avoid using smgs_attr(). (Sergey Khorev) -Files: src/if_cscope.c - -Patch 6.2.008 -Problem: XIM with GTK 2: After backspacing preedit characters are wrong. -Solution: Reset the cursor position. (Yasuhiro Matsumoto) -Files: src/mbyte.c - -Patch 6.2.009 -Problem: Win32: The self-installing executable "Full" selection only - selects some of the items to install. (Salman Mohsin) -Solution: Change commas to spaces in between section numbers. -Files: nsis/gvim.nsi - -Patch 6.2.010 -Problem: When 'virtualedit' is effective and a line starts with a - multi-byte character, moving the cursor right doesn't work. -Solution: Obtain the right character to compute the column offset. (Taro - Muraoka) -Files: src/charset.c - -Patch 6.2.011 -Problem: Alpha OSF1: stat() is a macro and doesn't allow an #ifdef halfway. - (Moshe Kaminsky) -Solution: Move the #ifdef outside of stat(). -Files: src/os_unix.c - -Patch 6.2.012 -Problem: May hang when polling for a character. -Solution: Break the wait loop when not waiting for a character. -Files: src/os_unix.c - -Patch 6.2.013 (extra) -Problem: Win32: The registry key for uninstalling GvimExt still uses "6.1". -Solution: Change the version number to "6.2". (Ajit Thakkar) -Files: src/GvimExt/GvimExt.reg - -Patch 6.2.014 (after 6.2.012) -Problem: XSMP doesn't work when using poll(). -Solution: Use xsmp_idx instead of gpm_idx. (Neil Bird) -Files: src/os_unix.c - -Patch 6.2.015 -Problem: The +xsmp feature is never enabled. -Solution: Move the #define for USE_XSMP to below where WANT_X11 is defined. - (Alexey Froloff) -Files: src/feature.h - -Patch 6.2.016 -Problem: Using ":scscope find" with 'cscopequickfix' does not always split - the window. (Gary Johnson) - Win32: ":cscope add" could make the script that contains it - read-only until the corresponding ":cscope kill". - Errors during ":cscope add" may not be handled properly. -Solution: When using the quickfix window may need to split the window. - Avoid file handle inheritance for the script. - Check for a failed connection and/or process. (Sergey Khorev) -Files: src/ex_cmds2.c, src/if_cscope.c - -Patch 6.2.017 -Problem: Test11 sometimes prompts the user, because a file would have been - changed outside of Vim. (Antonio Colombo) -Solution: Add a FileChangedShell autocommand to avoid the prompt. -Files: src/testdir/test11.in - -Patch 6.2.018 -Problem: When using the XSMP protocol and reading from stdin Vim may wait - for a key to be pressed. -Solution: Avoid that RealWaitForChar() is used recursively. -Files: src/os_unix.c - -Patch 6.2.019 (lang) -Problem: Loading the Portuguese menu causes an error message. -Solution: Join two lines. (Jose Pedro Oliveira, José de Paula) -Files: runtime/lang/menu_pt_br.vim - -Patch 6.2.020 -Problem: The "Syntax/Set syntax only" menu item causes an error message. - (Oyvind Holm) -Solution: Set the script-local variable in a function. (Benji Fisher) -Files: runtime/synmenu.vim - -Patch 6.2.021 -Problem: The user manual section on exceptions contains small mistakes. -Solution: Give a good example of an error that could be missed and other - improvements. (Servatius Brandt) -Files: runtime/doc/usr_41.txt - -Patch 6.2.022 (extra) -Problem: Win32: After deleting a menu item it still appears in a tear-off - window. -Solution: Set the mode to zero for the deleted item. (Yasuhiro Matsumoto) -Files: src/gui_w32.c - -Patch 6.2.023 (extra) -Problem: Win32: Make_ivc.mak does not clean everything. -Solution: Delete more files in the clean rule. (Walter Briscoe) -Files: src/Make_ivc.mak - -Patch 6.2.024 (extra) -Problem: Win32: Compiler warnings for typecasts. -Solution: Use DWORD instead of WORD. (Walter Briscoe) -Files: src/gui_w32.c - -Patch 6.2.025 -Problem: Missing prototype for sigaltstack(). -Solution: Add the prototype when it is not found in a header file. -Files: src/os_unix.c - -Patch 6.2.026 -Problem: Warning for utimes() argument. -Solution: Add a typecast. -Files: src/fileio.c - -Patch 6.2.027 -Problem: Warning for uninitialized variable. -Solution: Set mb_l to one when not using multi-byte characters. -Files: src/message.c - -Patch 6.2.028 -Problem: Cscope connection may kill Vim process and others. -Solution: Check for pid being larger than one. (Khorev Sergey) -Files: src/if_cscope.c - -Patch 6.2.029 -Problem: When using the remote server functionality Vim may leak memory. - (Srikanth Sankaran) -Solution: Free the result of XListProperties(). -Files: src/if_xcmdsrv.c - -Patch 6.2.030 -Problem: Mac: Warning for not being able to use precompiled header files. -Solution: Don't redefine select. Use -no-cpp-precomp for compiling, so that - function prototypes are still found. -Files: src/os_unix.c, src/osdef.sh - -Patch 6.2.031 -Problem: The langmenu entry in the options window doesn't work. (Rodolfo - Lima) - With GTK 1 the ":options" command causes an error message. - (Michael Naumann) -Solution: Change "lmenu" to "langmenu". Only display the 'tbis' option for - GTK 2. -Files: runtime/optwin.vim - -Patch 6.2.032 -Problem: The lpc filetype is never recognized. (Shizhu Pan) -Solution: Check for g:lpc_syntax_for_c instead of the local variable - lpc_syntax_for_c. (Benji Fisher) -Files: runtime/filetype.vim - -Patch 6.2.033 (extra) -Problem: Mac: Various compiler warnings. -Solution: Don't include Classic-only headers in Unix version. - Remove references to several unused variables. (Ben Fowler) - Fix double definition of DEFAULT_TERM. - Use int instead of unsigned short for pixel values, so that the - negative error values are recognized. -Files: src/gui_mac.c, src/term.c - -Patch 6.2.034 -Problem: Mac: Compiler warning for redefining DEFAULT_TERM. -Solution: Fix double definition of DEFAULT_TERM. -Files: src/term.c - -Patch 6.2.035 -Problem: Mac: Compiler warnings in Python interface. -Solution: Make a difference between pure Mac and Unix-Mac. (Peter Cucka) -Files: src/if_python.c - -Patch 6.2.036 (extra) -Problem: Mac Unix version: If foo is a directory, then ":e f<Tab>" should - expand to ":e foo/" instead of ":e foo" . (Vadim Zeitlin) -Solution: Define DONT_ADD_PATHSEP_TO_DIR only for pure Mac. (Benji Fisher) -Files: src/os_mac.h - -Patch 6.2.037 -Problem: Win32: converting an encoding name to a codepage could result in - an arbitrary number. -Solution: make encname2codepage() return zero if the encoding name doesn't - contain a codepage number. -Files: src/mbyte.c - -Patch 6.2.038 (extra) -Problem: Warning messages when using the MingW compiler. (Bill McCarthy) - Can't compile console version without +mouse feature. -Solution: Initialize variables, add parenthesis. - Add an #ifdef around g_nMouseClick. (Ajit Thakkar) -Files: src/eval.c, src/os_win32.c, src/gui_w32.c, src/dosinst.c - -Patch 6.2.039 (extra) -Problem: More warning messages when using the MingW compiler. -Solution: Initialize variables. (Bill McCarthy) -Files: src/os_mswin.c - -Patch 6.2.040 -Problem: FreeBSD: Crash while starting up when compiled with +xsmp feature. -Solution: Pass a non-NULL argument to IceAddConnectionWatch(). -Files: src/os_unix.c - -Patch 6.2.041 (extra, after 6.2.033) -Problem: Mac: Compiler warnings for conversion types, missing prototype, - missing return type. -Solution: Change sscanf "%hd" to "%d", the argument is an int now. Add - gui_mch_init_check() prototype. Add "int" to termlib functions. -Files: src/gui_mac.c, src/proto/gui_mac.pro, src/termlib.c. - -Patch 6.2.042 (extra) -Problem: Cygwin: gcc 3.2 has an optimizer problem, sometimes causing a - crash. -Solution: Add -fno-strength-reduce to the compiler arguments. (Dan Sharp) -Files: src/Make_cyg.mak - -Patch 6.2.043 -Problem: Compiling with both netbeans and workshop doesn't work. -Solution: Move the shellRectangle() function to gui_x11.c. (Gordon Prieur) -Files: src/gui_x11.c, src/integration.c, src/netbeans.c, - src/proto/netbeans.pro - -Patch 6.2.044 -Problem: ":au filetypedetect" gives an error for a non-existing event name, - but it's actually a non-existing group name. (Antoine Mechelynck) -Solution: Make the error message clearer. -Files: src/fileio.c - -Patch 6.2.045 -Problem: Obtaining the '( mark changes the '' mark. (Gary Holloway) -Solution: Don't set the '' mark when searching for the start/end of the - current sentence/paragraph. -Files: src/mark.c - -Patch 6.2.046 -Problem: When evaluating an argument of a function throws an exception the - function is still called. (Hari Krishna Dara) -Solution: Don't call the function when an exception was thrown. -Files: src/eval.c - -Patch 6.2.047 (extra) -Problem: Compiler warnings when using MingW. (Bill McCarthy) -Solution: Give the s_dwLastClickTime variable a type. Initialize dwEndTime. -Files: src/os_win32.c - -Patch 6.2.048 -Problem: The Python interface doesn't compile with Python 2.3 when - dynamically loaded. -Solution: Use dll_PyObject_Malloc and dll_PyObject_Free. (Paul Moore) -Files: src/if_python.c - -Patch 6.2.049 -Problem: Using a "-range=" argument with ":command" doesn't work and - doesn't generate an error message. -Solution: Generate an error message. -Files: src/ex_docmd.c - -Patch 6.2.050 -Problem: Test 32 didn't work on MS-Windows. -Solution: Write the temp file in Unix fileformat. (Walter Briscoe) -Files: src/testdir/test32.in - -Patch 6.2.051 -Problem: When using "\=submatch(0)" in a ":s" command, line breaks become - NUL characters. -Solution: Change NL to CR characters, so that they become line breaks. -Files: src/regexp.c - -Patch 6.2.052 -Problem: A few messages are not translated. -Solution: Add _() to the messages. (Muraoka Taro) -Files: src/ex_cmds.c - -Patch 6.2.053 -Problem: Prototype for bzero() doesn't match most systems. -Solution: Use "void *" instead of "char *" and "size_t" instead of "int". -Files: src/osdef1.h.in - -Patch 6.2.054 -Problem: A double-byte character with a second byte that is a backslash - causes problems inside a string. -Solution: Skip over multi-byte characters in a string properly. (Yasuhiro - Matsumoto) -Files: src/eval.c - -Patch 6.2.055 -Problem: Using col('.') from CTRL-O in Insert mode does not return the - correct value for multi-byte characters. -Solution: Correct the cursor position when it is necessary, move to the - first byte of a multi-byte character. (Yasuhiro Matsumoto) -Files: src/edit.c - -Patch 6.2.056 (extra) -Problem: Building with Sniff++ doesn't work. -Solution: Use the multi-threaded libc when needed. (Holger Ditting) -Files: src/Make_mvc.mak - -Patch 6.2.057 (extra) -Problem: Mac: With -DMACOS_X putenv() is defined twice, it is in a system - library. Get a warning for redefining OK. Unused variables in - os_mac.c -Solution: Define HAVE_PUTENV. Undefine OK after including curses.h. - Remove declarations for unused variables. -Files: src/os_mac.c, src/os_mac.h, src/vim.h - -Patch 6.2.058 -Problem: When 'autochdir' is set ":bnext" to a buffer without a name causes - a crash. -Solution: Don't call vim_chdirfile() when the file name is NULL. (Taro - Muraoka) -Files: src/buffer.c - -Patch 6.2.059 -Problem: When 'scrolloff' is a large number and listing completion results - on the command line, then executing a command that jumps close to - where the cursor was before, part of the screen is not updated. - (Yakov Lerner) -Solution: Don't skip redrawing part of the window when it was scrolled. -Files: src/screen.c - -Patch 6.2.060 (extra) -Problem: Win32: When 'encoding' is set to "iso-8859-7" copy/paste to/from - the clipboard gives a lalloc(0) error. (Kriton Kyrimis) -Solution: When the string length is zero allocate one byte. Also fix that - when the length of the Unicode text is zero (conversion from - 'encoding' to UCS-2 was not possible) the normal text is used. -Files: src/os_mswin.c - -Patch 6.2.061 -Problem: GUI: Using the left mouse button with the shift key should work - like "*" but it scrolls instead. (Martin Beller) -Solution: Don't recognize an rxvt scroll wheel event when using the GUI. -Files: src/term.c - -Patch 6.2.062 -Problem: When one buffer uses a syntax with "containedin" and another - buffer does not, redrawing depends on what the current buffer is. - (Brett Pershing Stahlman) -Solution: Use "syn_buf" instead of "curbuf" to get the b_syn_containedin - flag. -Files: src/syntax.c - -Patch 6.2.063 -Problem: When using custom completion end up with no matches. -Solution: Make cmd_numfiles and cmd_files local to completion to avoid that - they are overwritten when ExpandOne() is called recursively by - f_glob(). -Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/ex_getln.pro, - src/misc1.c, src/structs.h, src/tag.c - -Patch 6.2.064 -Problem: resolve() only handles one symbolic link, need to repeat it to - resolve all of them. Then need to simplify the file name. -Solution: Make resolve() resolve all symbolic links and simplify the result. - Add simplify() to just simplify a file name. Fix that test49 - doesn't work if /tmp is a symbolic link. (Servatius Brandt) -Files: runtime/doc/eval.txt, src/eval.c, src/tag.c, - src/testdir/test49.vim - -Patch 6.2.065 -Problem: ":windo 123" only updates other windows when entering them. - (Walter Briscoe) -Solution: Update the topline before going to the next window. -Files: src/ex_cmds2.c - -Patch 6.2.066 (extra) -Problem: Ruby interface doesn't work with Ruby 1.8.0. -Solution: Change "defout" to "stdout". (Aron Griffis) - Change dynamic loading. (Taro Muraoka) -Files: src/if_ruby.c, src/Make_mvc.mak - -Patch 6.2.067 -Problem: When searching for a string that starts with a composing character - the command line isn't drawn properly. -Solution: Don't count the space to draw the composing character on and - adjust the cursor column after drawing the string. -Files: src/message.c - -Patch 6.2.068 -Problem: Events for the netbeans interface that include a file name with - special characters don't work properly. -Solution: Use nb_quote() on the file name. (Sergey Khorev) -Files: src/netbeans.c - -Patch 6.2.069 (after 6.2.064) -Problem: Unused variables "limit" and "new_st" and unused label "fail" in - some situation. (Bill McCarthy) -Solution: Put the declarations inside an #ifdef. (Servatius Brandt) -Files: src/eval.c, src/tag.c - -Patch 6.2.070 (after 6.2.069) -Problem: Still unused variable "new_st". (Bill McCarthy) -Solution: Move the declaration to the right block this time. -Files: src/tag.c - -Patch 6.2.071 -Problem: 'statusline' can only contain 50 % items. (Antony Scriven) -Solution: Allow 80 items and mention it in the docs. -Files: runtime/doc/option.txt, src/vim.h - -Patch 6.2.072 -Problem: When using expression folding, foldexpr() mostly returns -1 for - the previous line, which makes it difficult to write a fold - expression. -Solution: Make the level of the previous line available while still looking - for the end of a fold. -Files: src/fold.c - -Patch 6.2.073 -Problem: When adding detection of a specific filetype for a plugin you need - to edit "filetype.vim". -Solution: Source files from the "ftdetect" directory, so that a filetype - detection plugin only needs to be dropped in a directory. -Files: runtime/doc/filetype.txt, runtime/doc/usr_05.txt, - runtime/doc/usr_41.txt, runtime/filetype.vim - -Patch 6.2.074 -Problem: Warnings when compiling the Python interface. (Ajit Thakkar) -Solution: Use ANSI function declarations. -Files: src/if_python.c - -Patch 6.2.075 -Problem: When the temp file for writing viminfo can't be used "NULL" - appears in the error message. (Ben Lavender) -Solution: Print the original file name when there is no temp file name. -Files: src/ex_cmds.c - -Patch 6.2.076 -Problem: The tags listed for cscope are in the wrong order. (Johannes - Stezenbach) -Solution: Remove the reordering of tags for the current file. (Sergey - Khorev) -Files: src/if_cscope.c - -Patch 6.2.077 -Problem: When a user function specifies custom completion, the function - gets a zero argument instead of an empty string when there is no - word before the cursor. (Preben Guldberg) -Solution: Don't convert an empty string to a zero. -Files: src/eval.c - -Patch 6.2.078 -Problem: "make test" doesn't work if Vim wasn't compiled yet. (Ed Avis) -Solution: Build Vim before running the tests. -Files: src/Makefile - -Patch 6.2.079 -Problem: ":w ++enc=utf-8 !cmd" doesn't work. -Solution: Check for the "++" argument before the "!". -Files: src/ex_docmd.c - -Patch 6.2.080 -Problem: When 't_ti' is not empty but doesn't swap screens, using "ZZ" in - an unmodified file doesn't clear the last line. -Solution: Call msg_clr_eos() when needed. (Michael Schroeder) -Files: src/os_unix.c - -Patch 6.2.081 -Problem: Problem when using a long multibyte string for the statusline. -Solution: Use the right pointer to get the cell size. (Taro Muraoka) -Files: src/buffer.c - -Patch 6.2.082 -Problem: Can't compile with Perl 5.8.1. -Solution: Rename "e_number" to "e_number_exp". (Sascha Blank) -Files: src/digraph.c, src/globals.h - -Patch 6.2.083 -Problem: When a compiler uses ^^^^ to mark a word the information is not - visible in the quickfix window. (Srikanth Sankaran) -Solution: Don't remove the indent for a line that is not recognized as an - error message. -Files: src/quickfix.c - -Patch 6.2.084 -Problem: "g_" in Visual mode always goes to the character after the line. - (Jean-Rene David) -Solution: Ignore the NUL at the end of the line. -Files: src/normal.c - -Patch 6.2.085 -Problem: ":verbose set ts" doesn't say an option was set with a "-c" or - "--cmd" argument. -Solution: Remember the option was set from a Vim argument. -Files: src/main.c, src/ex_cmds2.c, src/vim.h - -Patch 6.2.086 -Problem: "{" and "}" stop inside a closed fold. -Solution: Only stop once inside a closed fold. (Stephen Riehm) -Files: src/search.c - -Patch 6.2.087 -Problem: CTRL-^ doesn't use the 'confirm' option. Same problem with - ":bnext". (Yakov Lerner) -Solution: Put up a dialog for a changed file when 'confirm' is set in more - situations. -Files: src/buffer.c, src/ex_cmds.c - -Patch 6.2.088 -Problem: When 'sidescrolloff' is set 'showmatch' doesn't work correctly if - the match is less than 'sidescrolloff' off from the side of the - window. (Roland Stahn) -Solution: Set 'sidescrolloff' to zero while displaying the match. -Files: src/search.c - -Patch 6.2.089 -Problem: ":set isk+=" adds a comma. (Mark Waggoner) -Solution: Don't add a comma when the added value is empty. -Files: src/option.c - -Patch 6.2.090 (extra) -Problem: Win32: MingW compiler complains about #pragmas. (Bill McCarthy) -Solution: Put an #ifdef around the #pragmas. -Files: src/os_win32.c - -Patch 6.2.091 -Problem: When an autocommand is triggered when a file is dropped on Vim and - it produces output, messages from a following command may be - scrolled unexpectedly. (David Rennalls) -Solution: Save and restore msg_scroll in handle_drop(). -Files: src/ex_docmd.c - -Patch 6.2.092 -Problem: Invalid items appear in the help file tags. (Antonio Colombo) -Solution: Only accept tags with white space before the first "*". -Files: runtime/doc/doctags.c, src/ex_cmds.c - -Patch 6.2.093 -Problem: ":nnoremenu" also defines menu for Visual mode. (Klaus Bosau) -Solution: Check the second command character for an "o", not the third. -Files: src/menu.c - -Patch 6.2.094 -Problem: Can't compile with GTK and tiny features. -Solution: Include handle_drop() and vim_chdirfile() when FEAT_DND is defined. - Do not try to split the window. -Files: src/ex_docmd.c, src/misc2.c - -Patch 6.2.095 -Problem: The message "Cannot go to buffer x" is confusing for ":buf 6". - (Frans Englich) -Solution: Make it "Buffer x does not exist". -Files: src/buffer.c - -Patch 6.2.096 -Problem: Win32: ":let @* = ''" put a newline on the clipboard. (Klaus - Bosau) -Solution: Put zero bytes on the clipboard for an empty string. -Files: src/ops.c - -Patch 6.2.097 -Problem: Setting or resetting 'insertmode' in a BufEnter autocommand - doesn't always have immediate effect. (Nagger) -Solution: When 'insertmode' is set, set need_start_insertmode, when it's - reset set stop_insert_mode. -Files: src/option.c - -Patch 6.2.098 (after 6.2.097) -Problem: Can't build Vim with tiny features. (Christian J. Robinson) -Solution: Declare stop_insert_mode always. -Files: src/edit.c, src/globals.h - -Patch 6.2.099 (extra) -Problem: Test 49 fails. (Mikolaj Machowski) -Solution: The Polish translation must not change "E116" to "R116". -Files: src/po/pl.po - -Patch 6.2.100 -Problem: "make proto" fails when compiled with the Perl interface. -Solution: Remove "-fno.*" from PERL_CFLAGS, cproto sees it as its option. -Files: src/auto/configure, src/configure.in - -Patch 6.2.101 -Problem: When using syntax folding, opening a file slows down a lot when - it's size increases by only 20%. (Gary Johnson) -Solution: The array with cached syntax states is leaking entries. After - cleaning up the list obtain the current entry again. -Files: src/syntax.c - -Patch 6.2.102 -Problem: The macros equal() and CR conflict with a Carbon header file. -Solution: Rename equal() to equalpos(). Rename CR to CAR. - Do this in the non-extra files only. -Files: src/ascii.h, src/buffer.c, src/charset.c, src/edit.c, src/eval.c, - src/ex_cmds.c, src/ex_cmds2.c, src/ex_getln.c, src/fileio.c, - src/getchar.c, src/gui.c, src/gui_athena.c, src/gui_gtk_x11.c, - src/gui_motif.c, src/macros.h, src/mark.c, src/message.c, - src/misc1.c, src/misc2.c, src/normal.c, src/ops.c, src/os_unix.c, - src/regexp.c, src/search.c, src/ui.c, src/workshop.c - -Patch 6.2.103 (extra) -Problem: The macros equal() and CR conflict with a Carbon header file. -Solution: Rename equal() to equalpos(). Rename CR to CAR. - Do this in the extra files only. -Files: src/gui_photon.c, src/gui_w48.c - -Patch 6.2.104 -Problem: Unmatched braces in the table with options. -Solution: Move the "}," outside of the #ifdef. (Yakov Lerner) -Files: src/option.c - -Patch 6.2.105 -Problem: When the cursor is past the end of the line when calling - get_c_indent() a crash might occur. -Solution: Don't look past the end of the line. (NJ Verenini) -Files: src/misc1.c - -Patch 6.2.106 -Problem: Tag searching gets stuck on a very long line in the tags file. -Solution: When skipping back to search the first matching tag remember the - offset where searching started looking for a line break. -Files: src/tag.c - -Patch 6.2.107 (extra) -Problem: The NetBeans interface cannot be used on Win32. -Solution: Add support for the NetBeans for Win32. Add support for reading - XPM files on Win32. Also fixes that a sign icon with a space in - the file name did not work through the NetBeans interface. - (Sergey Khorev) - Also: avoid repeating error messages when the connection is lost. -Files: Makefile, runtime/doc/netbeans.txt, src/Make_bc5.mak, - src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, - src/bigvim.bat, src/feature.h, src/gui_beval.c, src/gui_beval.h, - src/gui_w32.c, src/gui_w48.c, src/menu.c, src/nbdebug.c, - src/nbdebug.h, src/netbeans.c, src/os_mswin.c, src/os_win32.h, - src/proto/gui_beval.pro, src/proto/gui_w32.pro, - src/proto/netbeans.pro, src/proto.h, src/version.c, src/vim.h, - src/xpm_w32.c, src/xpm_w32.h - -Patch 6.2.108 -Problem: Crash when giving a message about ignoring case in a tag. (Manfred - Kuehn) -Solution: Use a longer buffer for the message. -Files: src/tag.c - -Patch 6.2.109 -Problem: Compiler warnings with various Amiga compilers. -Solution: Add typecast, prototypes, et al. that are also useful for other - systems. (Flavio Stanchina) -Files: src/eval.c, src/ops.c - -Patch 6.2.110 -Problem: When $LANG includes the encoding, a menu without an encoding name - is not found. -Solution: Also look for a menu file without any encoding. -Files: runtime/menu.vim - -Patch 6.2.111 -Problem: Encoding "cp1251" is not recognized. -Solution: Add "cp1251" to the table of encodings. (Alexey Froloff) -Files: src/mbyte.c - -Patch 6.2.112 -Problem: After applying patches test32 fails. (Antonio Colombo) -Solution: Have "make clean" in the testdir delete *.rej and *.orig files. - Use this when doing "make clean" in the src directory. -Files: src/Makefile, src/testdir/Makefile - -Patch 6.2.113 -Problem: Using ":startinsert" after "$" works like "a" instead of "i". - (Ajit Thakkar) -Solution: Reset "w_curswant" for ":startinsert" and reset o_eol in edit(). -Files: src/edit.c, src/ex_docmd.c - -Patch 6.2.114 -Problem: When stdout is piped through "tee", the size of the screen may not - be correct. -Solution: Use stdin instead of stdout for ioctl() when stdin is a tty and - stdout isn't. -Files: src/os_unix.c - -Patch 6.2.115 (extra) -Problem: Compiler warnings with various Amiga compilers. -Solution: Add typecast, prototypes, et al. Those changes that are - Amiga-specific. (Flavio Stanchina) -Files: src/fileio.c, src/memfile.c, src/os_amiga.c, src/os_amiga.h, - src/vim.h - -Patch 6.2.116 (extra) -Problem: German keyboard with Numlock set different from system startup - causes problems. -Solution: Ignore keys with code 0xff. (Helmut Stiegler) -Files: src/gui_w48.c - -Patch 6.2.117 -Problem: Breakpoints in loops of sourced files and functions are not - detected. (Hari Krishna Dara) -Solution: Check for breakpoints when using lines that were previously read. - (Servatius Brandt) -Files: src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/proto/eval.pro, - src/proto/ex_cmds2.pro - -Patch 6.2.118 (extra) -Problem: Mac: Compiling is done in a non-standard way. -Solution: Use the Unix method for Mac OS X, with autoconf. Add "CARBONGUI" - to Makefile and configure. (Eric Kow) - Move a few prototypes from os_mac.pro to gui_mac.pro. -Files: src/Makefile, src/auto/configure, src/configure.in, - src/config.mk.in, src/gui_mac.c, src/os_mac.h, src/os_macosx.c, - src/proto/gui_mac.pro, src/proto/os_mac.pro, - src/infplist.xml, src/vim.h - -Patch 6.2.119 (after 6.2.107) -Problem: When packing the MS-Windows archives a few files are missing. - (Guopeng Wen) -Solution: Add gui_beval.* to the list of generic source files. -Files: Makefile - -Patch 6.2.120 -Problem: Win32 GUI: The console dialogs are not supported on MS-Windows, - disabling the 'c' flag of 'guioptions'. (Servatius Brandt) -Solution: Define FEAT_CON_DIALOG also for GUI-only builds. -Files: src/feature.h - -Patch 6.2.121 (after 6.2.118) -Problem: Not all make programs support "+=". (Charles Campbell) -Solution: Use a normal assignment. -Files: src/Makefile - -Patch 6.2.122 (after 6.2.119) -Problem: Not all shells can expand [^~]. File missing. (Guopeng Wen) -Solution: Use a simpler pattern. Add the Aap recipe for the maze program - and a clean version of the source code. -Files: Makefile, runtime/macros/maze/Makefile, - runtime/macros/maze/README.txt, runtime/macros/maze/main.aap, - runtime/macros/maze/mazeclean.c - -Patch 6.2.123 (after 6.2.118) -Problem: Running configure fails. (Tony Leneis) -Solution: Change "==" to "=" for a test. -Files: src/auto/configure, src/configure.in - -Patch 6.2.124 (after 6.2.121)(extra) -Problem: Mac: Recursive use of M4FLAGS causes problems. When running Vim - directly it can't find the runtime files. (Emily Jackson) - Using GNU constructs causes warnings with other make programs. - (Ronald Schild) -Solution: Use another name for the M4FLAGS variable. - Don't remove "Vim.app" from the path. - Update the explanation for compiling on the Mac. (Eric Kow) - Don't use $(shell ) and $(addprefix ). -Files: src/INSTALLmac.txt, src/Makefile, src/misc1.c - -Patch 6.2.125 (after 6.2.107) -Problem: The "winsock2.h" file isn't always available. -Solution: Don't include this header file. -Files: src/netbeans.c - -Patch 6.2.126 -Problem: Typing CTRL-C at a confirm() prompt doesn't throw an exception. -Solution: Reset "mapped_ctrl_c" in get_keystroke(), so that "got_int" is set - in _OnChar(). -Files: src/misc1.c - -Patch 6.2.127 (extra) -Problem: Win32 console: Typing CTRL-C doesn't throw an exception. -Solution: Set got_int immediately when CTRL-C is typed, don't wait for - mch_breakcheck() being called. -Files: src/os_win32.c - -Patch 6.2.128 (after 6.2.118) -Problem: src/auto/configure is not consistent with src/configure.in. -Solution: Use the newly generated configure script. -Files: src/auto/configure - -Patch 6.2.129 -Problem: When 'number' is set 'wrapmargin' does not work Vi-compatible. - (Yasuhiro Matsumoto) -Solution: Reduce the textwidth when 'number' is set. Also for 'foldcolumn' - and similar things. -Files: src/edit.c - -Patch 6.2.130 (extra) -Problem: Win32 console: When 'restorescreen' is not set exiting Vim causes - the screen to be cleared. (Michael A. Mangino) -Solution: Don't clear the screen when exiting and 'restorescreen' isn't set. -Files: src/os_win32.c - -Patch 6.2.131 (extra) -Problem: Win32: Font handles are leaked. -Solution: Free italic, bold and bold-italic handles before overwriting them. - (Michael Wookey) -Files: src/gui_w48.c - -Patch 6.2.132 (extra) -Problem: Win32: console version doesn't work on latest Windows Server 2003. -Solution: Copy 12000 instead of 15000 cells at a time to avoid running out - of memory. -Files: src/os_win32.c - -Patch 6.2.133 -Problem: When starting the GUI a bogus error message about 'imactivatekey' - may be given. -Solution: Only check the value of 'imactivatekey' when the GUI is running. -Files: src/gui.c, src/option.c - -Patch 6.2.134 (extra) -Problem: Win32: When scrolling parts of the window are redrawn when this - isn't necessary. -Solution: Only invalidate parts of the window when they are obscured by - other windows. (Michael Wookey) -Files: src/gui_w48.c - -Patch 6.2.135 -Problem: An item <> in the ":command" argument is interpreted as <args>. -Solution: Avoid that <> is recognized as <args>. -Files: src/ex_docmd.c - -Patch 6.2.136 -Problem: ":e ++enc=latin1 newfile" doesn't set 'fenc' when the file doesn't - exist. (Miroslaw Dobrzanski-Neumann) -Solution: Set 'fileencoding' to the specified encoding when editing a file - that does not exist. -Files: src/fileio.c - -Patch 6.2.137 -Problem: "d:cmd<CR>" cannot be repeated with ".". Breaks repeating "d%" - when using the matchit plugin. -Solution: Store the command to be repeated. This is restricted to - single-line commands. -Files: src/ex_docmd.c, src/globals.h, src/normal.c, src/vim.h - -Patch 6.2.138 (extra) -Problem: Compilation problem on VMS with dynamic buffer on the stack. -Solution: Read one byte less than the size of the buffer, so that we can - check for the string length without an extra buffer. -Files: src/os_vms.c - -Patch 6.2.139 -Problem: Code is repeated in the two Perl files. -Solution: Move common code from if_perl.xs and if_perlsfio.c to vim.h. - Also fix a problem with generating prototypes. -Files: src/if_perl.xs, src/if_perlsfio.c, src/vim.h - -Patch 6.2.140 (after 6.2.121) -Problem: Mac: Compiling with Python and Perl doesn't work. -Solution: Adjust the configure check for Python to use "-framework Python" - for Python 2.3 on Mac OS/X. - Move "-ldl" after "DynaLoader.a" in the link command. - Change "perllibs" to "PERL_LIBS". -Files: src/auto/configure, src/configure.in, src/config.mk.in - -Patch 6.2.141 (extra) -Problem: Mac: The b_FSSpec field is sometimes unused. -Solution: Change the #ifdef to FEAT_CW_EDITOR and defined it in feature.h -Files: src/fileio.c, src/gui_mac.c, src/structs.h, src/feature.h - -Patch 6.2.142 (after 6.2.124) -Problem: Mac: building without GUI through configure doesn't work. - When the system is slow, unpacking the resource file takes too - long. -Solution: Don't always define FEAT_GUI_MAC when MACOS is defined, define it - in the Makefile. - Add a configure option to skip Darwin detection. - Use a Python script to unpack the resources to avoid a race - condition. (Taro Muraoka) -Files: Makefile, src/Makefile, src/auto/configure, src/configure.in, - src/dehqx.py, src/vim.h - -Patch 6.2.143 -Problem: Using "K" on Visually selected text doesn't work if it ends in - a multi-byte character. -Solution: Include all the bytes of the last character. (Taro Muraoka) -Files: src/normal.c - -Patch 6.2.144 -Problem: When "g:html_use_css" is set the HTML header generated by the - 2html script is wrong. -Solution: Add the header after adding HREF for links. - Also use ":normal!" instead of ":normal" to avoid mappings - getting in the way. -Files: runtime/syntax/2html.vim - -Patch 6.2.145 (after 6.2.139) -Problem: Undefining "bool" doesn't work for older systems. (Wojtek Pilorz) -Solution: Only undefine "bool" on Mac OS. -Files: src/vim.h - -Patch 6.2.146 -Problem: On some systems the prototype for iconv() is wrong, causing a - warning message. -Solution: Use a cast (void *) to avoid the warning. (Charles Campbell) -Files: src/fileio.c, src/mbyte.c - -Patch 6.2.147 -Problem: ":s/pat/\=col('.')" always replaces with "1". -Solution: Set the cursor to the start of the match before substituting. - (Helmut Stiegler) -Files: src/ex_cmds.c - -Patch 6.2.148 -Problem: Can't break an Insert into several undoable parts. -Solution: Add the CTRL-G u command. -Files: runtime/doc/insert.txt, src/edit.c - -Patch 6.2.149 -Problem: When the cursor is on a line past 21,474,748 the indicated - percentage of the position is invalid. With that many lines - "100%" causes a negative cursor line number, resulting in a crash. - (Daniel Goujot) -Solution: Divide by 100 instead of multiplying. Avoid overflow when - computing the line number for "100%". -Files: src/buffer.c, src/ex_cmds2.c, src/normal.c - -Patch 6.2.150 -Problem: When doing "vim - < file" lines are broken at NUL chars. - (Daniel Goujot) -Solution: Change NL characters back to NUL when reading from the temp - buffer. -Files: src/fileio.c - -Patch 6.2.151 -Problem: When doing "vim --remote +startinsert file" some commands are - inserted as text. (Klaus Bosau) -Solution: Put all the init commands in one Ex line, not using a <CR>, so - that Insert mode isn't started too early. -Files: src/main.c - -Patch 6.2.152 -Problem: The cursor() function doesn't reset the column offset for - 'virtualedit'. -Solution: Reset the offset to zero. (Helmut Stiegler) -Files: src/eval.c - -Patch 6.2.153 -Problem: Win32: ":lang german" doesn't use German messages. -Solution: Add a table to translate the Win32 language names to two-letter - language codes. -Files: src/ex_cmds2.c - -Patch 6.2.154 -Problem: Python bails out when giving a warning message. (Eugene - Minkovskii) -Solution: Set sys.argv[] to an empty string. -Files: src/if_python.c - -Patch 6.2.155 -Problem: Win32: Using ":tjump www" in a help file gives two results. - (Dave Roberts) -Solution: Ignore differences between slashes and backslashes when checking - for identical tag matches. -Files: src/tag.c - -Patch 6.2.156 (after 6.2.125) -Problem: Win32: Netbeans fails to build, EINTR is not defined. -Solution: Redefine EINTR to WSAEINTR. (Mike Williams) -Files: src/netbeans.c - -Patch 6.2.157 -Problem: Using "%p" in 'errorformat' gives a column number that is too - high. -Solution: Set the flag to use the number as a virtual column. (Lefteris - Koutsoloukas) -Files: src/quickfix.c - -Patch 6.2.158 -Problem: The sed command on Solaris and HPUX doesn't work for a line that - doesn't end in a newline. -Solution: Add a newline when feeding text to sed. (Mark Waggoner) -Files: src/configure.in, src/auto/configure - -Patch 6.2.159 -Problem: When using expression folding and 'foldopen' is "undo" an undo - command doesn't always open the fold. -Solution: Save and restore the KeyTyped variable when evaluating 'foldexpr'. - (Taro Muraoka) -Files: src/fold.c - -Patch 6.2.160 -Problem: When 'virtualedit' is "all" and 'selection is "exclusive", - selecting a double-width character below a single-width character - may cause a crash. -Solution: Avoid overflow on unsigned integer decrement. (Taro Muraoka) -Files: src/normal.c - -Patch 6.2.161 (extra) -Problem: VMS: Missing header file. Reading input busy loops. -Solution: Include termdef.h. Avoid the use of a wait function in - vms_read(). (Frank Ries) -Files: src/os_unix.h, src/os_vms.c - -Patch 6.2.162 -Problem: ":redraw" doesn't always display the text that includes the cursor - position, e.g. after ":call cursor(1, 0)". (Eugene Minkovskii) -Solution: Call update_topline() before redrawing. -Files: src/ex_docmd.c - -Patch 6.2.163 -Problem: "make install" may also copy AAPDIR directories. -Solution: Delete AAPDIR directories, just like CVS directories. -Files: src/Makefile - -Patch 6.2.164 (after 6.2.144) -Problem: When "g:html_use_css" is set the HTML header generated by the - 2html script is still wrong. -Solution: Search for a string instead of jumping to a fixed line number. - Go to the start of the line before inserting the header. - (Jess Thrysoee) -Files: runtime/syntax/2html.vim - -Patch 6.2.165 -Problem: The configure checks hang when using autoconf 2.57. -Solution: Invoke AC_PROGRAM_EGREP to set $EGREP. (Aron Griffis) -Files: src/auto/configure, src/configure.in - -Patch 6.2.166 -Problem: When $GZIP contains "-N" editing compressed files doesn't work - properly. -Solution: Add "-n" to "gzip -d" to avoid restoring the file name. (Oyvind - Holm) -Files: runtime/plugin/gzip.vim - -Patch 6.2.167 -Problem: The Python interface leaks memory when assigning lines to a - buffer. (Sergey Khorev) -Solution: Do not copy the line when calling ml_replace(). -Files: src/if_python.c - -Patch 6.2.168 -Problem: Python interface: There is no way to get the indices from a range - object. -Solution: Add the "start" and "end" attributes. (Maurice S. Barnum) -Files: src/if_python.c, runtime/doc/if_pyth.txt - -Patch 6.2.169 -Problem: The prototype for _Xmblen() appears in a recent XFree86 header - file, causing a warning for our prototype. (Hisashi T Fujinaka) -Solution: Move the prototype to an osdef file, so that it's filtered out. -Files: src/mbyte.c, src/osdef2.h.in - -Patch 6.2.170 -Problem: When using Sun WorkShop the current directory isn't changed to - where the file is. -Solution: Set the 'autochdir' option when using WorkShop. And avoid using - the basename when 'autochdir' is not set. -Files: src/gui_x11.c, src/ex_cmds.c - -Patch 6.2.171 (after 6.2.163) -Problem: The "-or" argument of "find" doesn't work for SysV systems. -Solution: Use "-o" instead. (Gordon Prieur) -Files: src/Makefile - -Patch 6.2.172 (after 6.2.169) -Problem: The prototype for _Xmblen() still causes trouble. -Solution: Include the X11 header file that defines the prototype. -Files: src/osdef2.h.in, src/osdef.sh - -Patch 6.2.173 (extra) -Problem: Win32: Ruby interface doesn't work with Ruby 1.8.0 for other - compilers than MSVC. -Solution: Fix the BC5, Cygwin and Mingw makefiles. (Dan Sharp) -Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak - -Patch 6.2.174 -Problem: After the ":intro" message only a mouse click in the last line - gets past the hit-return prompt. -Solution: Accept a click at or below the hit-return prompt. -Files: src/gui.c, src/message.c - -Patch 6.2.175 -Problem: Changing 'backupext' in a *WritePre autocommand doesn't work. - (William Natter) -Solution: Move the use of p_bex to after executing the *WritePre - autocommands. Also avoids reading allocated memory after freeing. -Files: src/fileio.c - -Patch 6.2.176 -Problem: Accented characters in translated help files are not handled - correctly. (Fabien Vayssiere) -Solution: Include "192-255" in 'iskeyword' for the help window. -Files: src/ex_cmds.c - -Patch 6.2.177 (extra) -Problem: VisVim: Opening a file with a space in the name doesn't work. (Rob - Retter) Arbitrary commands are being executed. (Neil Bird) -Solution: Put a backslash in front of every space in the file name. - (Gerard Blais) Terminate the CTRL-\ CTRL-N command with a NUL. -Files: src/VisVim/Commands.cpp, src/VisVim/VisVim.rc - -Patch 6.2.178 -Problem: People who don't know how to exit Vim try pressing CTRL-C. -Solution: Give a message how to exit Vim when CTRL-C is pressed and it - doesn't cancel anything. -Files: src/normal.c - -Patch 6.2.179 (extra) -Problem: The en_gb messages file isn't found on case sensitive systems. -Solution: Rename en_gb to en_GB. (Mike Williams) -Files: src/po/en_gb.po, src/po/en_GB.po, src/po/Make_ming.mak, - src/po/Make_mvc.mak, src/po/Makefile, src/po/README_mvc.txt - -Patch 6.2.180 -Problem: Compiling with GTK2 on Win32 doesn't work. -Solution: Include gdkwin32.h instead of gdkx.h. (Srinath Avadhanula) -Files: src/gui_gtk.c, src/gui_gtk_f.c, src/gui_gtk_x11.c, src/mbyte.c - -Patch 6.2.181 (after 6.2.171) -Problem: The "-o" argument of "find" has lower priority than the implied - "and" with "-print". -Solution: Add parenthesis around the "-o" expression. (Gordon Prieur) -Files: src/Makefile - -Patch 6.2.182 (after 6.2.094) -Problem: Compilation with tiny features fails because of missing - get_past_head() function. -Solution: Adjust the #ifdef for get_past_head(). -Files: src/misc1.c - -Patch 6.2.183 (after 6.2.178) -Problem: Warning for char/unsigned char mixup. -Solution: Use MSG() instead of msg(). (Tony Leneis) -Files: src/normal.c - -Patch 6.2.184 -Problem: With 'formatoptions' set to "1aw" inserting text may cause the - paragraph to be ended. (Alan Schmitt) -Solution: Temporarily add an extra space to make the paragraph continue - after moving the word after the cursor to the next line. - Also format when pressing Esc. -Files: src/edit.c, src/normal.c, src/proto/edit.pro - -Patch 6.2.185 -Problem: Restoring a session with zero-height windows does not work - properly. (Charles Campbell) -Solution: Accept a zero argument to ":resize" as intended. Add a window - number argument to ":resize" to be able to set the size of other - windows, because the current window cannot be zero-height. - Fix the explorer plugin to avoid changing the window sizes. Add - the winrestcmd() function for this. -Files: runtime/doc/eval.txt, runtime/plugin/explorer.vim, src/eval.c, - src/ex_cmds.h, src/ex_docmd.c, src/proto/window.pro, src/window.c - -Patch 6.2.186 (after 6.2.185) -Problem: Documentation file eval.txt contains examples without indent. -Solution: Insert the indent. Also fix other mistakes. -Files: runtime/doc/eval.txt - -Patch 6.2.187 -Problem: Using Insure++ reveals a number of bugs. (Dominique Pelle) -Solution: Initialize variables where needed. Free allocated memory to avoid - leaks. Fix comparing tags to avoid reading past allocated memory. -Files: src/buffer.c, src/diff.c, src/fileio.c, src/mark.c, src/misc1.c, - src/misc2.c, src/ops.c, src/option.c, src/tag.c, src/ui.c - -Patch 6.2.188 (extra) -Problem: MS-Windows: Multi-byte characters in a filename cause trouble for - the window title. -Solution: Return when the wide function for setting the title did its work. -Files: src/gui_w48.c - -Patch 6.2.189 -Problem: When setting 'viminfo' after editing a new buffer its marks are - not stored. (Keith Roberts) -Solution: Set the "b_marks_read" flag when skipping to read marks from the - viminfo file. -Files: src/fileio.c - -Patch 6.2.190 -Problem: When editing a compressed files, marks are lost. -Solution: Add the ":lockmarks" modifier and use it in the gzip plugin. - Make exists() also check for command modifiers, so that the - existence of ":lockmarks" can be checked for. - Also add ":keepmarks" to avoid that marks are deleted when - filtering text. - When deleting lines put marks 'A - 'Z and '0 - '9 at the first - deleted line instead of clearing the mark. They were kept in the - viminfo file anyway. - Avoid that the gzip plugin puts deleted text in registers. -Files: runtime/doc/motion.txt, runtime/plugin/gzip.vim, src/ex_cmds.c, - src/ex_docmd.c, src/mark.c, src/structs.h - -Patch 6.2.191 -Problem: The intro message is outdated. Information about sponsoring and - registering is missing. -Solution: Show info about sponsoring and registering Vim in the intro - message now and then. Add help file about sponsoring. -Files: runtime/doc/help.txt, runtime/doc/sponsor.txt, runtime/doc/tags, - runtime/menu.vim, src/version.c - -Patch 6.2.192 -Problem: Using CTRL-T and CTRL-D with "gR" messes up the text. (Jonathan - Hankins) -Solution: Avoid calling change_indent() recursively. -Files: src/edit.c - -Patch 6.2.193 -Problem: When recalling a search pattern from the history from a ":s,a/c," - command the '/' ends the search string. (JC van Winkel) -Solution: Store the separator character with the history entries. Escape - characters when needed, replace the old separator with the new one. - Also fixes that recalling a "/" search for a "?" command messes up - trailing flags. -Files: src/eval.c, src/ex_getln.c, src/normal.c, src/proto/ex_getln.pro, - src/search.c, src/tag.c - -Patch 6.2.194 (after 6.2.068) -Problem: For NetBeans, instead of writing the file and sending an event - about it, tell NetBeans to write the file. -Solution: Add the "save" command, "netbeansBuffer" command and - "buttonRelease" event to the netbeans protocol. Updated the - interface to version 2.2. (Gordon Prieur) - Also: open a fold when the cursor has been positioned. - Also: fix memory leak, free result of nb_quote(). -Files: runtime/doc/netbeans.txt, src/fileio.c, src/netbeans.c, - src/normal.c, src/proto/netbeans.pro, src/structs.h - -Patch 6.2.195 (after 6.2.190) -Problem: Compiling fails for missing CPO_REMMARK symbol. -Solution: Add the patch I forgot to include... -Files: src/option.h - -Patch 6.2.196 (after 6.2.191) -Problem: Rebuilding the documentation doesn't use the sponsor.txt file. -Solution: Add sponsor.txt to the Makefile. (Christian J. Robinson) -Files: runtime/doc/Makefile - -Patch 6.2.197 -Problem: It is not possible to force a redraw of status lines. (Gary - Johnson) -Solution: Add the ":redrawstatus" command. -Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c, - src/screen.c - -Patch 6.2.198 -Problem: A few messages are not translated. (Ernest Adrogue) -Solution: Mark the messages to be translated. -Files: src/ex_cmds.c - -Patch 6.2.199 (after 6.2.194) -Problem: Vim doesn't work perfectly well with NetBeans. -Solution: When NetBeans saves the file, reset the timestamp to avoid "file - changed" warnings. Close a buffer in a proper way. Don't try - giving a debug message with an invalid pointer. Send a - newDotAndMark message when needed. Report a change by the "r" - command to NetBeans. (Gordon Prieur) -Files: src/netbeans.c, src/normal.c - -Patch 6.2.200 -Problem: When recovering a file, 'fileformat' is always the default, thus - writing the file may result in differences. (Penelope Fudd) -Solution: Before recovering the file try reading the original file to obtain - the values of 'fileformat', 'fileencoding', etc. -Files: src/memline.c - -Patch 6.2.201 -Problem: When 'autowriteall' is set ":qall" still refuses to exit if there - is a modified buffer. (Antoine Mechelynck) -Solution: Attempt writing modified buffers as intended. -Files: src/ex_cmds2.c - -Patch 6.2.202 -Problem: Filetype names of CHILL and ch script are confusing. -Solution: Rename "ch" to "chill" and "chscript" to "ch". -Files: runtime/filetype.vim, runtime/makemenu.vim, runtime/synmenu.vim - runtime/syntax/ch.vim, runtime/syntax/chill.vim - -Patch 6.2.203 -Problem: With characterwise text that has more than one line, "3P" works - wrong. "3p" has the same problem. There also is a display - problem. (Daniel Goujot) -Solution: Perform characterwise puts with a count in the right position. -Files: src/ops.c - -Patch 6.2.204 (after 6.2.086) -Problem: "]]" in a file with closed folds moves to the end of the file. - (Nam SungHyun) -Solution: Find one position in each closed fold, then move to after the fold. -Files: src/search.c - -Patch 6.2.205 (extra) -Problem: MS-Windows: When the taskbar is at the left or top of the screen, - the Vim window placement is wrong. -Solution: Compute the size and position of the window correctly. (Taro - Muraoka) -Files: src/gui_w32.c, src/gui_w48.c - -Patch 6.2.206 -Problem: Multi-byte characters cannot be used as hotkeys in a console - dialog. (Mattias Erkisson) -Solution: Handle multi-byte characters properly. Also put () or [] around - default hotkeys. -Files: src/message.c, src/macros.h - -Patch 6.2.207 -Problem: When 'encoding' is a multi-byte encoding, expanding an - abbreviation that starts where insertion started results in - characters before the insertion to be deleted. (Xiangjiang Ma) -Solution: Stop searching leftwards for the start of the word at the position - where insertion started. -Files: src/getchar.c - -Patch 6.2.208 -Problem: When using fold markers, three lines in a row have the start - marker and deleting the first one with "dd", a nested fold is not - deleted. (Kamil Burzynski) - Using marker folding, a level 1 fold doesn't stop when it is - followed by "{{{2", starting a level 2 fold. -Solution: Don't stop updating folds at the end of a change when the nesting - level of folds is larger than the fold level. - Correctly compute the number of folds that start at "{{{2". - Also avoid a crash for a NULL pointer. -Files: src/fold.c - -Patch 6.2.209 -Problem: A bogus fold is created when using "P" while the cursor is in the - middle of a closed fold. (Kamil Burzynski) -Solution: Correct the line number where marks are modified for closed folds. -Files: src/ops.c - -Patch 6.2.210 (extra) -Problem: Mac OSX: antialiased fonts are not supported. -Solution: Add the 'antialias' option to switch on antialiasing on Mac OSX - 10.2 and later. (Peter Cucka) -Files: runtime/doc/options.txt, src/gui_mac.c, src/option.h, src/option.c - -Patch 6.2.211 (extra) -Problem: Code for handling file dropped on Vim is duplicated. -Solution: Move the common code to gui_handle_drop(). - Add code to drop the files in the window under the cursor. - Support drag&drop on the Macintosh. (Taro Muraoka) - When dropping a directory name edit that directory (using the - explorer plugin) - Fix that changing directory with Shift pressed didn't work for - relative path names. -Files: src/fileio.c, src/gui.c, src/gui_gtk_x11.c, src/gui_mac.c, - src/gui_w48.c, src/proto/fileio.pro, src/proto/gui.pro - -Patch 6.2.212 (after 6.2.199) -Problem: NetBeans: Replacing with a count is not handled correctly. -Solution: Move reporting the change outside of the loop for the count. - (Gordon Prieur) -Files: src/normal.c - -Patch 6.2.213 (after 6.2.208) -Problem: Using marker folding, "{{{1" doesn't start a new fold when already - at fold level 1. (Servatius Brandt) -Solution: Correctly compute the number of folds that start at "{{{1". -Files: src/fold.c - -Patch 6.2.214 (after 6.2.211) (extra) -Problem: Warning for an unused variable. -Solution: Delete the declaration. (Bill McCarthy) -Files: src/gui_w48.c - -Patch 6.2.215 -Problem: NetBeans: problems saving an unmodified file. -Solution: Add isNetbeansModified() function. Disable netbeans_unmodified(). - (Gordon Prieur) -Files: src/fileio.c, src/netbeans.c, src/proto/netbeans.pro, - runtime/doc/netbeans.txt, runtime/doc/tags - -Patch 6.2.216 (after 6.2.206) -Problem: Multi-byte characters still cannot be used as hotkeys in a console - dialog. (Mattias Erkisson) -Solution: Make get_keystroke() handle multi-byte characters. -Files: src/misc1.c - -Patch 6.2.217 -Problem: GTK: setting the title doesn't always work correctly. -Solution: Invoke gui_mch_settitle(). (Tomas Stehlik) -Files: src/os_unix.c - -Patch 6.2.218 -Problem: Warning for function without prototype. -Solution: Add argument types to the msgCB field of the BalloonEval struct. -Files: src/gui_beval.h - -Patch 6.2.219 -Problem: Syntax highlighting hangs on an empty match of an item with a - nextgroup. (Charles Campbell) -Solution: Remember that the item has already matched and don't match it - again at the same position. -Files: src/syntax.c - -Patch 6.2.220 -Problem: When a Vim server runs in a console a remote command isn't handled - before a key is typed. (Joshua Neuheisel) -Solution: Don't try reading more input when a client-server command has been - received. -Files: src/os_unix.c - -Patch 6.2.221 -Problem: No file name completion for ":cscope add". -Solution: Add the XFILE flag to ":cscope". (Gary Johnson) -Files: src/ex_cmds.h - -Patch 6.2.222 -Problem: Using "--remote" several times on a row only opens some of the - files. (Dany St-Amant) -Solution: Don't delete all typeahead when the server receives a command from - a client, only delete typed characters. -Files: src/main.c - -Patch 6.2.223 -Problem: Cscope: Avoid a hang when cscope waits for a response while Vim - waits for a prompt. - Error messages from Cscope mess up the display. -Solution: Detect the hit-enter message and respond by sending a return - character to cscope. (Gary Johnson) - Use EMSG() and strerror() when possible. Replace perror() with - PERROR() everywhere, add emsg3(). -Files: src/diff.c, src/if_cscope.c, src/integration.c, src/message.c, - src/proto/message.pro, src/misc2.c, src/netbeans.c, src/vim.h - -Patch 6.2.224 -Problem: Mac: Can't compile with small features. (Axel Kielhorn) -Solution: Also include vim_chdirfile() when compiling for the Mac. -Files: src/misc2.c - -Patch 6.2.225 -Problem: NetBeans: Reported modified state isn't exactly right. -Solution: Report a file being modified in the NetBeans way. -Files: src/netbeans.c - -Patch 6.2.226 (after 6.2.107) (extra) -Problem: The "ws2-32.lib" file isn't always available. -Solution: Use "WSock32.lib" instead. (Taro Muraoka, Dan Sharp) -Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak - -Patch 6.2.227 (extra) -Problem: The "PC" symbol is defined but not used anywhere. -Solution: Remove "-DPC" from the makefiles. -Files: src/Make_bc3.mak, src/Make_bc5.mak, src/Make_cyg.mak, - src/Make_ming.mak - -Patch 6.2.228 -Problem: Receiving CTRL-\ CTRL-N after typing "f" or "m" doesn't switch Vim - back to Normal mode. Same for CTRL-\ CTRL-G. -Solution: Check if the character typed after a command is CTRL-\ and obtain - another character to check for CTRL-N or CTRL-G, waiting up to - 'ttimeoutlen' msec. -Files: src/normal.c - -Patch 6.2.229 -Problem: ":function" with a name that uses magic curlies does not work - inside a function. (Servatius Brandt) -Solution: Skip over the function name properly. -Files: src/eval.c - -Patch 6.2.230 (extra) -Problem: Win32: a complex pattern may cause a crash. -Solution: Use __try and __except to catch the exception and handle it - gracefully, when possible. Add myresetstkoflw() to reset the - stack overflow. (Benjamin Peterson) -Files: src/Make_bc5.mak, src/os_mswin.c src/os_win32.c, src/os_win32.h, - src/proto/os_win32.pro, src/regexp.c - -Patch 6.2.231 (after 6.2.046) -Problem: Various problems when an error exception is raised from within a - builtin function. When it is invoked while evaluating arguments - to a function following arguments are still evaluated. When - invoked with a line range it will be called for remaining lines. -Solution: Update "force_abort" also after calling a builtin function, so - that aborting() always returns the correct value. (Servatius - Brandt) -Files: src/eval.c, src/ex_eval.c, src/proto/ex_eval.pro, - src/testdir/test49.ok, src/testdir/test49.vim - -Patch 6.2.232 -Problem: ":python vim.command('python print 2*2')" crashes Vim. (Eugene - Minkovskii) -Solution: Disallow executing a Python command recursively and give an error - message. -Files: src/if_python.c - -Patch 6.2.233 -Problem: On Mac OSX adding -pthread for Python only generates a warning. - The test for Perl threads rejects Perl while it's OK. - Tcl doesn't work at all. - The test for Ruby fails if ruby exists but there are no header - files. The Ruby library isn't detected properly -Solution: Avoid adding -pthread on Mac OSX. Accept Perl threads when it's - not the 5.5 threads. - Use the Tcl framework for header files. For Ruby rename cWindow - to cVimWindow to avoid a name clash. (Ken Scott) - Only enable Ruby when the header files can be found. Use "-lruby" - instead of "libruby.a" when it can't be found. -Files: src/auto/configure, src/configure.in, src/if_ruby.c - -Patch 6.2.234 -Problem: GTK 2 GUI: ":sp" and the ":q" leaves the cursor on the command - line. -Solution: Flush output before removing scrollbars. Also do this in other - places where gui_mch_*() functions are invoked. -Files: src/ex_cmds.c, src/option.c, src/window.c - -Patch 6.2.235 (extra) -Problem: Win32: Cursor isn't removed with a 25x80 window and doing: - "1830ia<Esc>400a-<Esc>0w0". (Yasuhiro Matsumoto) -Solution: Remove the call to gui_undraw_cursor() from gui_mch_insert_lines(). -Files: src/gui_w48.c - -Patch 6.2.236 -Problem: Using gvim with Agide gives "connection lost" error messages. -Solution: Only give the "connection lost" message when the buffer was once - owned by NetBeans. -Files: src/netbeans.c, src/structs.h - -Patch 6.2.237 -Problem: GTK 2: Thai text is drawn wrong. It changes when moving the - cursor over it. -Solution: Disable the shaping engine, it moves combining characters to a - wrong position and combines characters, while drawing the cursor - doesn't combine characters. -Files: src/gui_gtk_x11.c - -Patch 6.2.238 (after 6.2.231) -Problem: ":function" does not work inside a while loop. (Servatius Brandt) -Solution: Add get_while_line() and pass it to do_one_cmd() when in a while - loop, so that all lines are stored and can be used again when - repeating the loop. - Adjust test 49 so that it checks for the fixed problems. - (Servatius Brandt) -Files: src/digraph.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, - src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro, - src/testdir/test49.in, src/testdir/test49.ok, - src/testdir/test49.vim - -Patch 6.2.239 -Problem: GTK 2: With closed folds the arrow buttons of a vertical scrollbar - often doesn't scroll. (Moshe Kaminsky) -Solution: Hackish solution: Detect that the button was pressed from the - mouse pointer position. -Files: src/gui_gtk.c, src/gui.c - -Patch 6.2.240 -Problem: GTK 2: Searching for bitmaps for the toolbar doesn't work as with - other systems. Need to explicitly use "icon=name". (Ned Konz, - Christian J. Robinson) -Solution: Search for icons like done for Motif. -Files: src/gui_gtk.c - -Patch 6.2.241 -Problem: GTK 2: Search and Search/Replace dialogs are synced, that makes no - sense. Buttons are sometimes greyed-out. (Jeremy Messenger) -Solution: Remove the code to sync the two dialogs. Adjust the code to react - to an empty search string to also work for GTK2. (David Necas) -Files: src/gui_gtk.c - -Patch 6.2.242 -Problem: Gnome: "vim --help" only shows the Gnome arguments, not the Vim - arguments. -Solution: Don't let the Gnome code remove the "--help" argument and don't - exit at the end of usage(). -Files: src/gui_gtk_x11.c, src/main.c - -Patch 6.2.243 (extra) -Problem: Mac: Dropping a file on a Vim icon causes a hit-enter prompt. -Solution: Move the dropped files to the global argument list, instead of the - usual drop handling. (Eckehard Berns) -Files: src/main.c, src/gui_mac.c - -Patch 6.2.244 -Problem: ':echo "\xf7"' displays the illegal byte as if it was a character - and leaves "cho" after it. -Solution: When checking the length of a UTF-8 byte sequence and it's shorter - than the number of bytes available, assume it's an illegal byte. -Files: src/mbyte.c - -Patch 6.2.245 -Problem: Completion doesn't work for ":keepmarks" and ":lockmarks". -Solution: Add the command modifiers to the table of commands. (Madoka - Machitani) -Files: src/ex_cmds.h, src/ex_docmd.c - -Patch 6.2.246 -Problem: Mac: Starting Vim from Finder doesn't show error messages. -Solution: Recognize that output is being displayed by stderr being - "/dev/console". (Eckehard Berns) -Files: src/main.c, src/message.c - -Patch 6.2.247 (after 6.2.193) -Problem: When using a search pattern from the viminfo file the last - character is replaced with a '/'. -Solution: Store the separator character in the right place. (Kelvin Lee) -Files: src/ex_getln.c - -Patch 6.2.248 -Problem: GTK: When XIM is enabled normal "2" and keypad "2" cannot be - distinguished. -Solution: Detect that XIM changes the keypad key to the expected ASCII - character and fall back to the non-XIM code. (Neil Bird) -Files: src/gui_gtk_x11.c, src/mbyte.c, src/proto/mbyte.pro - -Patch 6.2.249 -Problem: ":cnext" moves to the error in the next file, but there is no - method to go back. -Solution: Add ":cpfile" and ":cNfile". -Files: src/ex_cmds.h, src/quickfix.c, src/vim.h, runtime/doc/quickfix.txt - -Patch 6.2.250 -Problem: Memory leaks when using signs. (Xavier de Gaye) -Solution: Delete the list of signs when unloading a buffer. -Files: src/buffer.c - -Patch 6.2.251 -Problem: GTK: The 'v' flag in 'guioptions' doesn't work. (Steve Hall) - Order of buttons is reversed for GTK 2.2.4. Don't always get - focus back after handling a dialog. -Solution: Make buttons appear vertically when desired. Reverse the order in - which buttons are added to a dialog. Move mouse pointer around - when the dialog is done and we don't have focus. -Files: src/gui_gtk.c - -Patch 6.2.252 (extra, after 6.2.243) -Problem: Mac: Dropping a file on a Vim icon causes a hit-enter prompt for - Mac OS classic. -Solution: Remove the #ifdef from the code that fixes it for Mac OSX. -Files: src/gui_mac.c - -Patch 6.2.253 -Problem: When 'tagstack' is not set a ":tag id" command does not work after - a ":tjump" command. -Solution: Set "new_tag" when 'tagstack' isn't set. (G. Narendran) -Files: src/tag.c - -Patch 6.2.254 -Problem: May run out of space for error messages. -Solution: Keep room for two more bytes. -Files: src/quickfix.c - -Patch 6.2.255 -Problem: GTK: A new item in the popup menu is put just after instead of - just before the right item. (Gabriel Zachmann) -Solution: Don't increment the menu item index. -Files: src/gui_gtk.c - -Patch 6.2.256 -Problem: Mac: "macroman" encoding isn't recognized, need to use - "8bit-macroman. -Solution: Recognize "macroman" with an alias "mac". (Eckehard Berns) -Files: src/mbyte.c - -Patch 6.2.257 (after 6.2.250) -Problem: Signs are deleted for ":bdel", but they could still be useful. -Solution: Delete signs only for ":bwipe". -Files: src/buffer.c - -Patch 6.2.258 -Problem: GUI: can't disable (grey-out) a popup menu item. (Ajit Thakkar) -Solution: Loop over the popup menus for all modes. -Files: src/menu.c - -Patch 6.2.259 -Problem: If there are messages when exiting, on the console there is a - hit-enter prompt while the message can be read; in the GUI the - message may not be visible. -Solution: Use the hit-enter prompt when there is an error message from - writing the viminfo file or autocommands, or when there is any - output in the GUI and 'verbose' is set. Don't use a hit-enter - prompt for the non-GUI version unless there is an error message. -Files: src/main.c - -Patch 6.2.260 -Problem: GTK 2: Can't quit a dialog with <Esc>. - GTK 1 and 2: <Enter> always gives a result, even when the default - button has been disabled. -Solution: Handle these keys explicitly. When no default button is specified - use the first one (works mostly like it was before). -Files: src/gui_gtk.c - -Patch 6.2.261 -Problem: When 'autoindent' and 'cindent' are set and a line is recognized - as a comment, starting a new line won't do 'cindent' formatting. -Solution: Also use 'cindent' formatting for lines that are used as a - comment. (Servatius Brandt) -Files: src/misc1.c - -Patch 6.2.262 -Problem: 1 CTRL-W w beeps, even though going to the first window is - possible. (Charles Campbell) -Solution: Don't beep. -Files: src/window.c - -Patch 6.2.263 -Problem: Lint warnings: Duplicate function prototypes, duplicate macros, - use of a zero character instead of a zero pointer, unused - variable. Clearing allocated memory in a complicated way. -Solution: Remove the function prototypes from farsi.h. Remove the - duplicated lines in keymap.h. Change getvcol() argument from NUL - to NULL. Remove the "col" variable in regmatch(). Use - lalloc_clear() instead of lalloc(). (Walter Briscoe) -Files: src/farsi.h, src/keymap.h, src/ops.c, src/regexp.c, src/search.c - -Patch 6.2.264 (after 6.2.247) -Problem: Writing past allocated memory when using a command line from the - viminfo file. -Solution: Store the NUL in the right place. -Files: src/ex_getln.c - -Patch 6.2.265 -Problem: Although ":set" is not allowed in the sandbox, ":let &opt = val" - works. -Solution: Do allow changing options in the sandbox, but not the ones that - can't be changed from a modeline. -Files: src/ex_cmds.h, src/options.c - -Patch 6.2.266 -Problem: When redirecting output and using ":silent", line breaks are - missing from output of ":map" and ":tselect". Alignment of - columns is wrong. -Solution: Insert a line break where "msg_didout" was tested. Update msg_col - when redirecting and using ":silent". -Files: src/getchar.c, src/message.c - -Patch 6.2.267 (extra) -Problem: Win32: "&&" in a tearoff menu is not shown. (Luc Hermitte) -Solution: Use the "name" item from the menu instead of the "dname" item. -Files: src/gui_w32.c, src/menu.c - -Patch 6.2.268 -Problem: GUI: When changing 'guioptions' part of the window may be off - screen. (Randall Morris) -Solution: Adjust the size of the window when changing 'guioptions', but only - when adding something. -Files: src/gui.c - -Patch 6.2.269 -Problem: Diff mode does not highlight a change in a combining character. - (Raphael Finkel) -Solution: Make diff_find_change() multi-byte aware: find the start byte of - a character that contains a change. -Files: src/diff.c - -Patch 6.2.270 -Problem: Completion in Insert mode, then repeating with ".", doesn't handle - composing characters in the completed text. (Raphael Finkel) -Solution: Don't skip over composing chars when adding completed text to the - redo buffer. -Files: src/getchar.c - -Patch 6.2.271 -Problem: NetBeans: Can't do "tail -f" on the log. Passing socket info with - an argument or environment variable is not secure. -Solution: Wait after initializing the log. Allow passing the socket info - through a file. (Gordon Prieur) -Files: runtime/doc/netbeans.txt, src/main.c, src/netbeans.c - -Patch 6.2.272 -Problem: When the "po" directory exists, but "po/Makefile" doesn't, - building fails. Make loops when the "po" directory has been - deleted after running configure. -Solution: Check for the "po/Makefile" instead of just the "po" directory. - Check this again before trying to run make with that Makefile. -Files: src/auto/configure, src/configure.in, src/Makefile - -Patch 6.2.273 -Problem: Changing the sort order in an explorer window for an empty - directory produces error messages. (Doug Kearns) -Solution: When an invalid range is used for a function that is not going to - be executed, skip over the arguments anyway. -Files: src/eval.c - -Patch 6.2.274 -Problem: ":print" skips empty lines when 'list' is set and there is no - "eol" in 'listchars'. (Yakov Lerner) -Solution: Skip outputting a space for an empty line only when 'list' is set - and the end-of-line character is not empty. -Files: src/message.c - -Patch 6.2.275 (extra, after 6.2.267) -Problem: Warning for uninitialized variable when using gcc. -Solution: Initialize "acLen" to zero. (Bill McCarthy) -Files: src/gui_w32.c - -Patch 6.2.276 -Problem: ":echo X()" does not put a line break between the message that X() - displays and the text that X() returns. (Yakov Lerner) -Solution: Invoke msg_start() after evaluating the argument. -Files: src/eval.c - -Patch 6.2.277 -Problem: Vim crashes when a ":runtime ftplugin/ada.vim" causes a recursive - loop. (Robert Nowotniak) -Solution: Restore "msg_list" before returning from do_cmdline(). -Files: src/ex_docmd.c - -Patch 6.2.278 -Problem: Using "much" instead of "many". -Solution: Correct the error message. -Files: src/eval.c - -Patch 6.2.279 -Problem: There is no default choice for a confirm() dialog, now that it is - possible not to have a default choice. -Solution: Make the first choice the default choice. -Files: runtime/doc/eval.txt, src/eval.c - -Patch 6.2.280 -Problem: "do" and ":diffget" don't work in the first line and the last line - of a buffer. (Aron Griffis) -Solution: Find a difference above the first line and below the last line. - Also fix a few display updating bugs. -Files: src/diff.c, src/fold.c, src/move.c - -Patch 6.2.281 -Problem: PostScript printing doesn't work on Mac OS X 10.3.2. -Solution: Adjust the header file. (Mike Williams) -Files: runtime/print/prolog.ps - -Patch 6.2.282 -Problem: When using CTRL-O to go back to a help file, it becomes listed. - (Andrew Nesbit) - Using ":tag" or ":tjump" in a help file doesn't keep the help file - settings (e.g. for 'iskeyword'). -Solution: Don't mark a buffer as listed when its help flag is set. Put all - the option settings for a help buffer together in do_ecmd(). -Files: src/ex_cmds.c - -Patch 6.2.283 -Problem: The "local additions" in help.txt are used without conversion, - causing latin1 characters showing up wrong when 'enc' is utf-8. - (Antoine J. Mechelynck) -Solution: Convert the text to 'encoding'. -Files: src/ex_cmds.c - -Patch 6.2.284 -Problem: Listing a function puts "endfunction" in the message history. - Typing "q" at the more prompt isn't handled correctly when listing - variables and functions. (Hara Krishna Dara) -Solution: Don't use msg() for "endfunction". Check "got_int" regularly. -Files: src/eval.c - -Patch 6.2.285 -Problem: GUI: In a single wrapped line that fills the window, "gj" in the - last screen line leaves the cursor behind. (Ivan Tarasov) -Solution: Undraw the cursor before scrolling the text up. -Files: src/gui.c - -Patch 6.2.286 -Problem: When trying to rename a file and it doesn't exist, the destination - file is deleted anyway. (Luc Deux) -Solution: Don't delete the destination when the source doesn't exist. (Taro - Muraoka) -Files: src/fileio.c - -Patch 6.2.287 (after 6.2.264) -Problem: Duplicate lines are added to the viminfo file. -Solution: Compare with existing entries without an offset. Also fixes - reading very long history lines from viminfo. -Files: src/ex_getln.c - -Patch 6.2.288 (extra) -Problem: Mac: An external program can't be interrupted. -Solution: Don't use the 'c' key for backspace. (Eckehard Berns) -Files: src/gui_mac.c - -Patch 6.2.289 -Problem: Compiling the Tcl interface with thread support causes ":make" to - fail. (Juergen Salk) -Solution: Use $TCL_DEFS from the Tcl config script to obtain the required - compile flags for using the thread library. -Files: src/auto/configure, src/configure.in - -Patch 6.2.290 (extra) -Problem: Mac: The mousewheel doesn't work. -Solution: Add mousewheel support. Also fix updating the thumb after a drag - and then using another way to scroll. (Eckehard Berns) -Files: src/gui_mac.c - -Patch 6.2.291 (extra) -Problem: Mac: the plus button and close button don't do anything. -Solution: Make the plus button maximize the window and the close button - close Vim. (Eckehard Berns) -Files: src/gui.c, src/gui_mac.c - -Patch 6.2.292 -Problem: Motif: When removing GUI arguments from argv[] a "ps -ef" shows - the last argument repeated. -Solution: Set argv[argc] to NULL. (Michael Jarvis) -Files: src/gui_x11.c - -Patch 6.2.293 (after 6.2.255) -Problem: GTK: A new item in a menu is put before the tearoff item. -Solution: Do increment the menu item index for non-popup menu items. -Files: src/gui_gtk.c - -Patch 6.2.294 (extra) -Problem: Mac: Cannot use modifiers with Space, Tab, Enter and Escape. -Solution: Handle all modifiers for these keys. (Eckehard Berns) -Files: src/gui_mac.c - -Patch 6.2.295 -Problem: When in debug mode, receiving a message from a remote client - causes a crash. Evaluating an expression causes Vim to wait for - "cont" to be typed, without a prompt. (Hari Krishna Dara) -Solution: Disable debugging when evaluating an expression for a client. - (Michael Geddes) Don't try reading into the typeahead buffer when - it may have been filled in another way. -Files: src/ex_getln.c, src/getchar.c, src/if_xcmdsrv.c, src/main.c, - src/misc1.c, src/proto/getchar.pro, src/proto/main.pro, - src/proto/os_unix.pro, src/proto/ui.pro, src/structs.h, - src/os_unix.c, src/ui.c - -Patch 6.2.296 (extra) -Problem: Same as 6.2.295. -Solution: Extra files for patch 6.2.295. -Files: src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_win32.c, - src/proto/os_amiga.pro, src/proto/os_msdos.pro, - src/proto/os_riscos.pro, src/proto/os_win32.pro - -Patch 6.2.297 (after 6.2.232) -Problem: Cannot invoke Python commands recursively. -Solution: With Python 2.3 and later use the available mechanisms to invoke - Python recursively. (Matthew Mueller) -Files: src/if_python.c - -Patch 6.2.298 -Problem: A change always sets the '. mark and an insert always sets the '^ - mark, even when this is not wanted. - Cannot go back to the position of older changes without undoing - those changes. -Solution: Add the ":keepjumps" command modifier. - Add the "g," and "g;" commands. -Files: runtime/doc/motion.txt, src/ex_cmds.h, src/ex_docmd.c, src/edit.c, - src/mark.c, src/misc1.c, src/normal.c, src/proto/mark.pro, - src/structs.h, src/undo.c - -Patch 6.2.299 -Problem: Can only use one language for help files. -Solution: Add the 'helplang' option to select the preferred language(s). - Make ":helptags" generate tags files for all languages. -Files: runtime/doc/options.txt, runtime/doc/various.txt, src/Makefile, - src/ex_cmds.c, src/ex_cmds2.c, src/ex_cmds.h, src/ex_getln.c, - src/normal.c, src/option.c, src/option.h, src/proto/ex_cmds.pro, - src/proto/ex_cmds2.pro, src/proto/option.pro, src/structs.h, - src/tag.c, src/vim.h - -Patch 6.2.300 (after 6.2.297) -Problem: Cannot build Python interface with Python 2.2 or earlier. -Solution: Add a semicolon. -Files: src/if_python.c - -Patch 6.2.301 -Problem: The "select all" item from the popup menu doesn't work for Select - mode. -Solution: Use the same commands as for the "Edit.select all" menu. - (Benji Fisher) -Files: runtime/menu.vim - -Patch 6.2.302 -Problem: Using "CTRL-O ." in Insert mode doesn't work properly. (Benji - Fisher) -Solution: Restore "restart_edit" after an insert command that was not typed. - Avoid waiting with displaying the mode when there is no text to be - overwritten. - Fix that "CTRL-O ." sometimes doesn't put the cursor back after - the end-of-line. Only reset the flag that CTRL-O was used past - the end of the line when restarting editing. Update "o_lnum" - number when inserting text and "o_eol" is set. -Files: src/edit.c, src/normal.c - -Patch 6.2.303 -Problem: Cannot use Unicode digraphs while 'encoding' is not Unicode. -Solution: Convert the character from Unicode to 'encoding' when needed. - Use the Unicode digraphs for the Macintosh. (Eckehard Berns) -Files: src/digraph.c - -Patch 6.2.304 (extra, after 6.2.256) -Problem: Mac: No proper support for 'encoding'. Conversion without iconv() - is not possible. -Solution: Convert input from 'termencoding' to 'encoding'. Add - mac_string_convert(). Convert text for the clipboard when needed. - (Eckehard Berns) -Files: src/gui_mac.c, src/mbyte.c, src/structs.h, src/vim.h - -Patch 6.2.305 (after 6.2.300) -Problem: Win32: Cannot build Python interface with Python 2.3. (Ajit - Thakkar) -Solution: Add two functions to the dynamic loading feature. -Files: src/if_python.c - -Patch 6.2.306 (extra) -Problem: Win32: Building console version with BCC 5.5 gives a warning for - get_cmd_args() prototype missing. (Ajit Thakkar) -Solution: Don't build os_w32exe.c for the console version. -Files: src/Make_bc5.mak - -Patch 6.2.307 (after 6.2.299) -Problem: Installing help files fails. -Solution: Expand wildcards for translated help files separately. -Files: src/Makefile - -Patch 6.2.308 -Problem: Not all systems have "whoami", resulting in an empty user name. -Solution: Use "logname" when possible, "whoami" otherwise. (David Boyce) -Files: src/Makefile - -Patch 6.2.309 -Problem: "3grx" waits for two ESC to be typed. (Jens Paulus) -Solution: Append the ESC to the stuff buffer when redoing the "gr" insert. -Files: src/edit.c - -Patch 6.2.310 -Problem: When setting 'undolevels' to -1, making a change and setting - 'undolevels' to a positive value an "undo list corrupt" error - occurs. (Madoka Machitani) -Solution: Sync undo before changing 'undolevels'. -Files: src/option.c - -Patch 6.2.311 (after 6.2.298) -Problem: When making several changes in one line the changelist grows - quickly. There is no error message for reaching the end of the - changelist. Reading changelist marks from viminfo doesn't work - properly. -Solution: Only make a new entry in the changelist when making a change in - another line or 'textwidth' columns away. Add E662, E663 and E664 - error messages. Put a changelist mark from viminfo one position - before the end. -Files: runtime/doc/motion.txt, src/mark.c, src/misc1.c, src/normal.c - -Patch 6.2.312 (after 6.2.299) -Problem: "make install" clears the screen when installing the docs. -Solution: Execute ":helptags" in silent mode. -Files: runtime/doc/Makefile - -Patch 6.2.313 -Problem: When opening folds in a diff window, other diff windows no longer - show the same text. -Solution: Sync the folds in diff windows. -Files: src/diff.c, src/fold.c, src/move.c, src/proto/diff.pro, - src/proto/move.pro - -Patch 6.2.314 -Problem: When 'virtualedit' is set "rx" may cause a crash with a blockwise - selection and using "$". (Moritz Orbach) -Solution: Don't try replacing chars in a line that has no characters in the - block. -Files: src/ops.c - -Patch 6.2.315 -Problem: Using CTRL-C in a Visual mode mapping while 'insertmode' is set - stops Vim from returning to Insert mode. -Solution: Don't reset "restart_edit" when a CTRL-C is found and 'insertmode' - is set. -Files: src/normal.c - -Patch 6.2.316 (after 6.2.312) -Problem: "make install" tries connecting to the X server when installing - the docs. (Stephen Thomas) -Solution: Add the "-X" argument. -Files: runtime/doc/Makefile - -Patch 6.2.317 (after 6.2.313) -Problem: When using "zi" in a diff window, other diff windows are not - adjusted. (Richard Curnow) -Solution: Distribute a change in 'foldenable' to other diff windows. -Files: src/normal.c - -Patch 6.2.318 -Problem: When compiling with _THREAD_SAFE external commands don't echo - typed characters. -Solution: Don't set the terminal mode to TMODE_SLEEP when it's already at - TMODE_COOK. -Files: src/os_unix.c - -Patch 6.2.319 (extra) -Problem: Building gvimext.dll with Mingw doesn't work properly. -Solution: Use gcc instead of dllwrap. Use long option names. (Alejandro - Lopez-Valencia) -Files: src/GvimExt/Make_ming.mak - -Patch 6.2.320 -Problem: Win32: Adding and removing the menubar resizes the Vim window. - (Jonathon Merz) -Solution: Don't let a resize event change 'lines' unexpectedly. -Files: src/gui.c - -Patch 6.2.321 -Problem: When using modeless selection, wrapping lines are not recognized, - a line break is always inserted. -Solution: Add LineWraps[] to remember whether a line wrapped or not. -Files: src/globals.h, src/screen.c, src/ui.c - -Patch 6.2.322 -Problem: With 'showcmd' set, after typing "dd" the next "d" may not be - displayed. (Jens Paulus) -Solution: Redraw the command line after updating the screen, scrolling may - have set "clear_cmdline". -Files: src/screen.c - -Patch 6.2.323 -Problem: Win32: expanding "~/file" in an autocommand pattern results in - backslashes, while this pattern should only have forward slashes. -Solution: Make expanding environment variables respect 'shellslash' and set - p_ssl when expanding the autocommand pattern. -Files: src/fileio.c, src/misc1.c, src/proto/fileio.pro - -Patch 6.2.324 (extra) -Problem: Win32: when "vimrun.exe" has a path with white space, such as - "Program Files", executing external commands may fail. -Solution: Put double quotes around the path to "vimrun". -Files: src/os_win32.c - -Patch 6.2.325 -Problem: When $HOME includes a space, doing ":set tags=~/tags" doesn't - work, the space is used to separate file names. (Brett Stahlman) -Solution: Escape the space with a backslash. -Files: src/option.c - -Patch 6.2.326 -Problem: ":windo set syntax=foo" doesn't work. (Tim Chase) -Solution: Don't change 'eventignore' for ":windo". -Files: src/ex_cmds2.c - -Patch 6.2.327 -Problem: When formatting text all marks in the formatted lines are lost. - A word is not joined to a previous line when this would be - possible. (Mikolaj Machowski) -Solution: Try to keep marks in the same position as much as possible. - Also keep mark positions when joining lines. - Start auto-formatting in the previous line when appropriate. - Add the "gw" operator: Like "gq" but keep the cursor where it is. -Files: runtime/doc/change.txt, src/edit.c, src/globals.h, src/mark.c, - src/misc1.c, src/normal.c, src/ops.c, src/proto/edit.pro, - src/proto/mark.pro, src/proto/ops.pro, src/structs.h, src/vim.h - -Patch 6.2.328 -Problem: XIM with GTK: It is hard to understand what XIM is doing. -Solution: Add xim_log() to log XIM events and help with debugging. -Files: src/mbyte.c - -Patch 6.2.329 -Problem: ":=" does not work Vi compatible. (Antony Scriven) -Solution: Print the last line number instead of the current line. Don't - print "line". -Files: src/ex_cmds.h, src/ex_docmd.c - -Patch 6.2.330 (extra, after 6.2.267) -Problem: Win32: Crash when tearing off a menu. -Solution: Terminate a string with a NUL. (Yasuhiro Matsumoto) -Files: src/gui_w32.c - -Patch 6.2.331 (after 6.2.327) -Problem: "gwap" leaves cursor in the wrong line. -Solution: Remember the cursor position before finding the ends of the - paragraph. -Files: src/normal.c, src/ops.c, src/structs.h - -Patch 6.2.332 (extra) -Problem: Amiga: Compile error for string array. Compiling the Amiga GUI - doesn't work. -Solution: Use a char pointer instead. Move including "gui_amiga.h" to after - including "vim.h". Add a semicolon. (Ali Akcaagac) -Files: src/gui_amiga.c, src/os_amiga.c - -Patch 6.2.333 (extra) -Problem: Win32: printing doesn't work with specified font charset. -Solution: Use the specified font charset. (Mike Williams) -Files: src/os_mswin.c - -Patch 6.2.334 (extra, after 6.2.296) -Problem: Win32: evaluating client expression in debug mode requires typing - "cont". -Solution: Use eval_client_expr_to_string(). -Files: src/os_mswin.c - -Patch 6.2.335 -Problem: The ":sign" command cannot be followed by another command. -Solution: Add TRLBAR to the command flags. -Files: src/ex_cmds.h - -Patch 6.2.336 (after 6.2.327) -Problem: Mixup of items in an expression. -Solution: Move "== NUL" to the right spot. -Files: src/edit.c - -Patch 6.2.337 (extra, after 6.2.319) -Problem: Building gvimext.dll with Mingw doesn't work properly. -Solution: Fix white space and other details. (Alejandro Lopez-Valencia) -Files: src/GvimExt/Make_ming.mak - -Patch 6.2.338 (after 6.2.331) -Problem: When undoing "gwap" the cursor is always put at the start of the - paragraph. When undoing auto-formatting the cursor may be above - the change. -Solution: Try to move the cursor back to where it was or to the first line - that actually changed. -Files: src/normal.c, src/ops.c, src/undo.c - -Patch 6.2.339 -Problem: Crash when using many different highlight groups and a User - highlight group. (Juergen Kraemer) -Solution: Do not use the sg_name_u pointer when it is NULL. Also simplify - use of the highlight group table. -Files: src/syntax.c - -Patch 6.2.340 -Problem: ":reg" doesn't show the actual contents of the clipboard if it was - filled outside of Vim. (Stuart MacDonald) -Solution: Obtain the clipboard contents before displaying it. -Files: src/ops.c - -Patch 6.2.341 (extra) -Problem: Win32: When the path to diff.exe contains a space and using the - vimrc generated by the install program, diff mode does not work. -Solution: Put the first double quote just before the space instead of before - the path. -Files: src/dosinst.c - -Patch 6.2.342 (extra) -Problem: Win32: macros are not always used as expected. -Solution: Define WINVER to 0x0400 instead of 0x400. (Alejandro - Lopez-Valencia) -Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_mvc.mak - -Patch 6.2.343 -Problem: Title doesn't work with some window managers. X11: Setting the - text property for the window title is hard coded. -Solution: Use STRING format when possible. Use the UTF-8 function when - it's available and 'encoding' is utf-8. Use - XStringListToTextProperty(). Do the same for the icon name. - (David Harrison) -Files: src/os_unix.c - -Patch 6.2.344 (extra, after 6.2.337) -Problem: Cannot build gvimext.dll with MingW on Linux. -Solution: Add support for cross compiling. (Ronald Hoellwarth) -Files: src/GvimExt/Make_ming.mak - -Patch 6.2.345 (extra) -Problem: Win32: Copy/paste between two Vims fails if 'encoding' is not set - properly or there are illegal bytes. -Solution: Use a raw byte format. Always set it when copying. When pasting - use the raw format if 'encoding' is the same. -Files: src/os_mswin.c, src/os_win16.c, src/os_win32.c, src/vim.h - -Patch 6.2.346 -Problem: Win32 console: After using "chcp" Vim does not detect the - different codepage. -Solution: Use GetConsoleCP() and when it is different from GetACP() set - 'termencoding'. -Files: src/option.c - -Patch 6.2.347 (extra) -Problem: Win32: XP theme support is missing. -Solution: Add a manifest and refer to it from the resource file. (Michael - Wookey) -Files: Makefile, src/gvim.exe.mnf, src/vim.rc - -Patch 6.2.348 -Problem: Win32: "vim c:\dir\(test)" doesn't work, because the 'isfname' - default value doesn't contain parenthesis. -Solution: Temporarily add '(' and ')' to 'isfname' when expanding file name - arguments. -Files: src/main.c - -Patch 6.2.349 -Problem: Finding a match using 'matchpairs' may cause a crash. - 'matchpairs' is not used for 'showmatch'. -Solution: Don't look past the NUL in 'matchpairs'. Use 'matchpairs' for - 'showmatch'. (Dave Olszewkski) -Files: src/misc1.c, src/normal.c, src/proto/search.pro, src/search.c - -Patch 6.2.350 -Problem: Not enough info about startup timing. -Solution: Add a few more TIME_MSG() calls. -Files: src/main.c - -Patch 6.2.351 -Problem: Win32: $HOME may be set to %USERPROFILE%. -Solution: Expand %VAR% at the start of $HOME. -Files: src/misc1.c - -Patch 6.2.352 (after 6.2.335) -Problem: ":sign texthl=||" does not work. -Solution: Remove the check for a following command. Give an error for extra - arguments after "buff=1". -Files: src/ex_cmds.c, src/ex_cmds.h - -Patch 6.2.353 (extra) -Problem: Win32: Supported server name length is limited. (Paul Bossi) -Solution: Use MAX_PATH instead of 25. -Files: src/os_mswin.c - -Patch 6.2.354 (extra) -Problem: Win32: When the mouse pointer is on a tear-off menu it is hidden - when typing but is not redisplayed when moved. (Markx Hackmann) -Solution: Handle the pointer move event for the tear-off menu window. -Files: src/gui_w32.c - -Patch 6.2.355 (after 6.2.303) -Problem: When 'encoding' is a double-byte encoding different from the - current locale, the width of characters is not correct. - Possible failure and memory leak when using iconv, Unicode - digraphs and 'encoding' is not "utf-8". -Solution: Use iconv() to discover the actual width of characters. - Add the "vc_fail" field to vimconv_T. - When converting a digraph, init the conversion type to NONE and - cleanup afterwards. -Files: src/digraph.c, src/mbyte.c, src/structs.h - -Patch 6.2.356 -Problem: When using a double-byte 'encoding' and 'selection' is - "exclusive", "vy" only yanks the first byte of a double-byte - character. (Xiangjiang Ma) -Solution: Correct the column in unadjust_for_sel() to position on the first - byte, always include the trailing byte of the selected text. -Files: src/normal.c - -Patch 6.2.357 (after 6.2.321) -Problem: Memory leak when resizing the Vim window. -Solution: Free the LineWraps array. -Files: src/screen.c - -Patch 6.2.358 (after 6.2.299) -Problem: Memory leak when using ":help" and the language doesn't match. -Solution: Free the array with matching tags. -Files: src/ex_cmds.c - -Patch 6.2.359 (after 6.2.352) -Problem: Compiler warning for long to int type cast. -Solution: Add explicit type cast. -Files: src/ex_cmds.c - -Patch 6.2.360 -Problem: "100|" in an empty line results in a ruler "1,0-100". (Pavol - Juhas) -Solution: Recompute w_virtcol if the target column was not reached. -Files: src/misc2.c - -Patch 6.2.361 (extra) -Problem: Win32: Run gvim, ":set go-=m", use Alt-Tab, keep Alt pressed while - pressing Esc, then release Alt: Cursor disappears and typing a key - causes a beep. (Hari Krishna Dara) -Solution: Don't ignore the WM_SYSKEYUP event when the menu is disabled. -Files: src/gui_w32.c - -Patch 6.2.362 (extra, after 6.2.347) -Problem: Win32: The manifest causes Gvim not to work. (Dave Roberts) -Solution: Change "x86" to "X86". (Serge Pirotte) -Files: src/gvim.exe.mnf - -Patch 6.2.363 -Problem: In an empty file with 'showmode' off, "i" doesn't change the ruler - from "0-1" to "1". Typing "x<BS>" does show "1", but then <Esc> - doesn't make it "0-1" again. Same problem for ruler in - statusline. (Andrew Pimlott) -Solution: Remember the "empty line" flag with Insert mode and'ed to it. -Files: src/screen.c - -Patch 6.2.364 -Problem: HTML version of the documentation doesn't mention the encoding, - which is a problem for mbyte.txt. -Solution: Adjust the awk script. (Ilya Sher) -Files: runtime/doc/makehtml.awk - -Patch 6.2.365 -Problem: The configure checks for Perl and Python may add compile and link - arguments that break building Vim. -Solution: Do a sanity check: try building with the arguments. -Files: src/auto/configure, src/configure.in - -Patch 6.2.366 -Problem: When the GUI can't start because no valid font is found, there is - no error message. (Ugen) -Solution: Add an error message. -Files: src/gui.c - -Patch 6.2.367 -Problem: Building the help tags file while installing may fail if there is - another Vim in $PATH. -Solution: Specify the just installed Vim executable. (Gordon Prieur) -Files: src/Makefile - -Patch 6.2.368 -Problem: When 'autochdir' is set, closing a window doesn't change to the - directory of the new current window. (Salman Halim) -Solution: Handle 'autochdir' always when a window becomes the current one. -Files: src/window.c - -Patch 6.2.369 -Problem: Various memory leaks: when using globpath(), when searching for - help tags files, when defining a function inside a function, when - giving an error message through an exception, for the final "." - line in ":append", in expression "cond ? a : b" that fails and for - missing ")" in an expression. Using NULL pointer when adding - first user command and for pointer computations with regexp. - (tests by Dominique Pelle) -Solution: Fix the leaks by freeing the allocated memory. Don't use the - array of user commands when there are no entries. Use a macro - instead of a function call for saving and restoring regexp states. -Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, - src/misc2.c, src/regexp.c, src/screen.c, src/tag.c - -Patch 6.2.370 (extra, after6.2.341) -Problem: Win32: When the path to diff.exe contains a space and using the - vimrc generated by the install program, diff mode may not work. - (Alejandro Lopez-Valencia) -Solution: Do not use double quotes for arguments that do not have a space. -Files: src/dosinst.c - -Patch 6.2.371 -Problem: When 'virtualedit' is set and there is a Tab before the next "x", - "dtx" does not delete the whole Tab. (Ken Hashishi) -Solution: Move the cursor to the last position of the Tab. Also for - "df<Tab>". -Files: src/normal.c - -Patch 6.2.372 -Problem: When using balloon evaluation, no value is displayed for members - of structures and items of an array. -Solution: Include "->", "." and "[*]" in the expression. -Files: src/gui_beval.c, src/normal.c, src/vim.h - -Patch 6.2.373 -Problem: When 'winminheight' is zero and a window is reduced to zero - height, the ruler always says "Top" instead of the cursor - position. (Antoine J. Mechelynck) -Solution: Don't recompute w_topline for a zero-height window. -Files: src/window.c - -Patch 6.2.374 -Problem: ":echo "hello" | silent normal n" removes the "hello" message. - (Servatius Brandt) -Solution: Don't echo the search string when ":silent" was used. Also don't - show the mode. In general: don't clear to the end of the screen. -Files: src/gui.c, src/message.c, src/os_unix.c, src/proto/message.pro, - src/screen.c, src/search.c, src/window.c - -Patch 6.2.375 -Problem: When changing 'guioptions' the hit-enter prompt may be below the - end of the Vim window. -Solution: Call screen_alloc() before showing the prompt. -Files: src/message.c - -Patch 6.2.376 -Problem: Win32: Ruby interface cannot be dynamically linked with Ruby 1.6. -Solution: Add #ifdefs around use of rb_w32_snprintf(). (Benoît Cerrina) -Files: src/if_ruby.c - -Patch 6.2.377 (after 6.2.372) -Problem: Compiler warnings for signed/unsigned compare. (Michael Wookey) -Solution: Add type cast. -Files: src/normal.c - -Patch 6.2.378 (extra, after 6.2.118) -Problem: Mac: cannot build with Project Builder. -Solution: Add remove_tail_with_ext() to locate and remove the "build" - directory from the runtime path. Include os_unix.c when needed. - (Dany St Amant) -Files: src/misc1.c, src/os_macosx.c, src/vim.h - -Patch 6.2.379 -Problem: Using ":mkvimrc" in the ":options" window sets 'bufhidden' to - "delete". (Michael Naumann) -Solution: Do not add buffer-specific option values to a global vimrc file. -Files: src/option.c - -Patch 6.2.380 (extra) -Problem: DOS: "make test" fails when running it again. Can't "make test" - with Borland C. -Solution: Make sure ".out" files are deleted when they get in the way. Add - a "test" target to the Borland C Makefile. -Files: src/Make_bc5.mak, src/testdir/Make_dos.mak - -Patch 6.2.381 -Problem: Setting 'fileencoding' to a comma separated list (confusing it - with 'fileencodings') does not result in an error message. - Setting 'fileencoding' in an empty file marks it as modified. - There is no "+" in the title after setting 'fileencoding'. -Solution: Check for a comma in 'fileencoding'. Only consider a non-empty - file modified by changing 'fileencoding'. Update the title after - changing 'fileencoding'. -Files: src/option.c - -Patch 6.2.382 -Problem: Running "make test" puts marks from test files in viminfo. -Solution: Specify a different viminfo file to use. -Files: src/testdir/test15.in, src/testdir/test49.in - -Patch 6.2.383 -Problem: ":hi foo term='bla" crashes Vim. (Antony Scriven) -Solution: Check that the closing ' is there. -Files: src/syntax.c - -Patch 6.2.384 -Problem: ":menu a.&b" ":unmenu a.b" only works if "&b" isn't translated. -Solution: Also compare the names without '&' characters. -Files: src/menu.c - -Patch 6.2.385 (extra) -Problem: Win32: forward_slash() and trash_input_buf() are undefined when - compiling with small features. (Ajit Thakkar) -Solution: Change the #ifdefs for forward_slash(). Don't call - trash_input_buf() if the input buffer isn't used. -Files: src/fileio.c, src/os_win32.c - -Patch 6.2.386 -Problem: Wasting time trying to read marks from the viminfo file for a - buffer without a name. -Solution: Skip reading marks when the buffer has no name. -Files: src/fileio.c - -Patch 6.2.387 -Problem: There is no highlighting of translated items in help files. -Solution: Search for a "help_ab.vim" syntax file when the help file is - called "*.abx". Also improve the help highlighting a bit. -Files: runtime/syntax/help.vim - -Patch 6.2.388 -Problem: GTK: When displaying some double-width characters they are drawn - as single-width, because of conversion to UTF-8. -Solution: Check the width that GTK uses and add a space if it's one instead - of two. -Files: src/gui_gtk_x11.c - -Patch 6.2.389 -Problem: When working over a slow connection, it's very annoying that the - last line is partly drawn and then cleared for every change. -Solution: Don't redraw the bottom line if no rows were inserted or deleted. - Don't draw the line if we know "@" lines will be used. -Files: src/screen.c - -Patch 6.2.390 -Problem: Using "r*" in Visual mode on multi-byte characters only replaces - every other character. (Tyson Roberts) -Solution: Correct the cursor position after replacing each character. -Files: src/ops.c - -Patch 6.2.391 (extra) -Problem: The ":highlight" command is not tested. -Solution: Add a test script for ":highlight". -Files: src/testdir/Makefile, src/testdir/Make_amiga.mak, - src/testdir/Make_dos.mak, src/testdir/Make_os2.mak, - src/testdir/Make_vms.mms, src/testdir/test51.in, - src/testdir/test51.ok - -Patch 6.2.392 (after 6.2.384) -Problem: Unused variable. -Solution: Remove "dlen". -Files: src/menu.c - -Patch 6.2.393 -Problem: When using very long lines the viminfo file can become very big. -Solution: Add the "s" flag to 'viminfo': skip registers with more than the - specified Kbyte of text. -Files: runtime/doc/options.txt, src/ops.c, src/option.c - -Patch 6.2.394 (after 6.2.391) -Problem: Test 51 fails on a terminal with 8 colors. (Tony Leneis) -Solution: Use "DarkBlue" instead of "Blue" to avoid the "bold" attribute. -Files: src/testdir/test51.in - -Patch 6.2.395 -Problem: When using ":tag" or ":pop" the previous matching tag is used. - But since the current file is different, the ordering of the tags - may change. -Solution: Remember what the current buffer was for when re-using cur_match. -Files: src/edit.c, src/ex_cmds.c, src/proto/tag.pro, src/structs.h, - src/tag.c - -Patch 6.2.396 -Problem: When CTRL-T jumps to another file and an autocommand moves the - cursor to the '" mark, don't end up on the right line. (Michal - Malecki) -Solution: Set the line number after loading the file. -Files: src/tag.c - -Patch 6.2.397 -Problem: When using a double-byte 'encoding' mapping <M-x> doesn't work. - (Yasuhiro Matsumoto) -Solution: Do not set the 8th bit of the character but use a modifier. -Files: src/gui_gtk_x11.c, src/gui_x11.c, src/misc2.c - -Patch 6.2.398 (extra) -Problem: Win32 console: no extra key modifiers are supported. -Solution: Encode the modifiers into the input stream. Also fix that special - keys are converted and stop working when 'tenc' is set. Also fix - that when 'tenc' is initialized the input and output conversion is - not setup properly until 'enc' or 'tenc' is set. -Files: src/getchar.c, src/option.c, src/os_win32.c - -Patch 6.2.399 -Problem: A ":set" command that fails still writes a message when it is - inside a try/catch block. -Solution: Include all the text of the message in the error message. -Files: src/charset.c, src/option.c - -Patch 6.2.400 -Problem: Can't compile if_xcmdsrv.c on HP-UX 11.0. -Solution: Include header file poll.h. (Malte Neumann) -Files: src/if_xcmdsrv.c - -Patch 6.2.401 -Problem: When opening a buffer that was previously opened, Vim does not - restore the cursor position if the first line starts with white - space. (Gregory Margo) -Solution: Don't skip restoring the cursor position if it is past the blanks - in the first line. -Files: src/buffer.c - -Patch 6.2.402 -Problem: Mac: "make install" doesn't generate help tags. (Benji Fisher) -Solution: Generate help tags before copying the runtime files. -Files: src/Makefile - -Patch 6.2.403 -Problem: ":@y" checks stdin if there are more commands to execute. This - fails if stdin is not connected, e.g., when starting the GUI from - KDE. (Ned Konz) -Solution: Only check for a next command if there still is typeahead. -Files: src/ex_docmd.c - -Patch 6.2.404 -Problem: Our own function to determine width of Unicode characters may get - outdated. (Markus Kuhn) -Solution: Use wcwidth() when it is available. Also use iswprint(). -Files: src/auto/configure, src/configure.in, src/config.h.in, src/mbyte.c - -Patch 6.2.405 -Problem: Cannot map zero without breaking the count before a command. - (Benji Fisher) -Solution: Disable mapping zero when entering a count. -Files: src/getchar.c, src/globals.h, src/normal.c - -Patch 6.2.406 -Problem: ":help \zs", ":help \@=" and similar don't find useful help. -Solution: Prepend "/\" to the arguments to find the desired help tag. -Files: src/ex_cmds.c - -Patch 6.2.407 (after 6.2.299) -Problem: ":help \@<=" doesn't find help. -Solution: Avoid that ":help \@<=" searches for the "<=" language. -Files: src/tag.c - -Patch 6.2.408 -Problem: ":compiler" is not consistent: Sets local options and a global - variable. (Douglas Potts) There is no error message when a - compiler is not supported. -Solution: Use ":compiler!" to set a compiler globally, otherwise it's local - to the buffer and "b:current_compiler" is used. Give an error - when no compiler script could be found. - Note: updated compiler plugins can be found at - ftp://ftp.vim.org/pub/vim/runtime/compiler/ -Files: runtime/compiler/msvc.vim, runtime/doc/quickfix.txt, src/eval.c, - src/ex_cmds2.c - -Patch 6.2.409 -Problem: The cursor ends up in the last column instead of after the line - when doing "i//<Esc>o" with 'indentexpr' set to "cindent(v:lnum)". - (Toby Allsopp) -Solution: Adjust the cursor as if in Insert mode. -Files: src/misc1.c - -Patch 6.2.410 (after 6.2.389) -Problem: In diff mode, when there are more filler lines than fit in the - window, they are not drawn. -Solution: Check for filler lines when skipping to draw a line that doesn't - fit. -Files: src/screen.c - -Patch 6.2.411 -Problem: A "\n" inside a string is not seen as a line break by the regular - expression matching. (Hari Krishna Dara) -Solution: Add the vim_regexec_nl() function for strings where "\n" is to be - matched with a line break. -Files: src/eval.c, src/ex_eval.c, src/proto/regexp.c, src/regexp.c - -Patch 6.2.412 -Problem: Ruby: "ruby << EOF" inside a function doesn't always work. Also - for ":python", ":tcl" and ":perl". -Solution: Check for "<< marker" and skip until "marker" before checking for - "endfunction". -Files: src/eval.c - -Patch 6.2.413 (after 6.2.411) -Problem: Missing prototype for vim_regexec_nl(). (Marcel Svitalsky) -Solution: Now really include the prototype. -Files: src/proto/regexp.pro - -Patch 6.2.414 -Problem: The function used for custom completion of user commands cannot - have <SID> to make it local. (Hari Krishna Dara) -Solution: Pass the SID of the script where the user command was defined on - to the completion. Also clean up #ifdefs. -Files: src/ex_docmd.c, src/eval.c, src/ex_getln.c, src/structs.h - -Patch 6.2.415 -Problem: Vim may crash after a sequence of events that change the window - size. The window layout assumes a larger window than is actually - available. (Servatius Brandt) -Solution: Invoke win_new_shellsize() from screenalloc() instead of from - set_shellsize(). -Files: src/screen.c, src/term.c - -Patch 6.2.416 -Problem: Compiler warning for incompatible pointer. -Solution: Remove the "&" in the call to poll(). (Xavier de Gaye) -Files: src/os_unix.c - -Patch 6.2.417 (after 6.2.393) -Problem: Many people forget that the '"' item in 'viminfo' needs to be - preceded with a backslash, -Solution: Add '<' as an alias for the '"' item. -Files: runtime/doc/options.txt, src/ops.c, src/option.c - -Patch 6.2.418 -Problem: Using ":nnoremap <F12> :echo "cheese" and ":cabbr cheese xxx": - when pressing <F12> still uses the abbreviation. (Hari Krishna) -Solution: Also apply "noremap" to abbreviations. -Files: src/getchar.c - -Patch 6.2.419 (extra) -Problem: Win32: Cannot open the Vim window inside another application. -Solution: Add the "-P" argument to specify the window title of the - application to run inside. (Zibo Zhao) -Files: runtime/doc/starting.txt, src/main.c, src/gui_w32.c, - src/gui_w48.c, src/if_ole.cpp, src/os_mswin.c, - src/proto/gui_w32.pro - -Patch 6.2.420 -Problem: Cannot specify a file to be edited in binary mode without setting - the global value of the 'binary' option. -Solution: Support ":edit ++bin file". -Files: runtime/doc/editing.txt, src/buffer.c, src/eval.c, src/ex_cmds.h, - src/ex_docmd.c, src/fileio.c, src/misc2.c - -Patch 6.2.421 -Problem: Cannot set the '[ and '] mark, which may be necessary when an - autocommand simulates reading a file. -Solution: Allow using "m[" and "m]". -Files: runtime/doc/motion.txt, src/mark.c - -Patch 6.2.422 -Problem: In CTRL-X completion messages the "/" makes them less readable. -Solution: Remove the slashes. (Antony Scriven) -Files: src/edit.c - -Patch 6.2.423 -Problem: ":vertical wincmd ]" does not split vertically. -Solution: Add "postponed_split_flags". -Files: src/ex_docmd.c, src/globals.h, src/if_cscope.c, src/tag.c - -Patch 6.2.424 -Problem: A BufEnter autocommand that sets an option stops 'mousefocus' from - working in Insert mode (Normal mode is OK). (Gregory Seidman) -Solution: In the Insert mode loop invoke gui_mouse_correct() when needed. -Files: src/edit.c - -Patch 6.2.425 -Problem: Vertical split and command line window: can only drag status line - above the cmdline window on the righthand side, not lefthand side. -Solution: Check the status line row instead of the window pointer. -Files: src/ui.c - -Patch 6.2.426 -Problem: A syntax region end match with a matchgroup that includes a line - break only highlights the last line with matchgroup. (Gary - Holloway) -Solution: Also use the line number of the position where the region - highlighting ends. -Files: src/syntax.c - -Patch 6.2.427 (extra) -Problem: When pasting a lot of text in a multi-byte encoding, conversion - from 'termencoding' to 'encoding' may fail for some characters. - (Kuang-che Wu) -Solution: When there is an incomplete byte sequence at the end of the read - text keep it for the next time. -Files: src/mbyte.c, src/os_amiga.c, src/os_mswin.c, src/proto/mbyte.pro, - src/proto/os_mswin.pro, src/ui.c - -Patch 6.2.428 -Problem: The X11 clipboard supports the Vim selection for char/line/block - mode, but since the encoding is not included can't copy/paste - between two Vims with a different 'encoding'. -Solution: Add a new selection format that includes the 'encoding'. Perform - conversion when necessary. -Files: src/gui_gtk_x11.c, src/ui.c, src/vim.h - -Patch 6.2.429 -Problem: Unix: glob() doesn't work for a directory with a single quote in - the name. (Nazri Ramliy) -Solution: When using the shell to expand, only put double quotes around - spaces and single quotes, not the whole thing. -Files: src/os_unix.c - -Patch 6.2.430 -Problem: BOM at start of a vim script file is not recognized and causes an - error message. -Solution: Detect the BOM and skip over it. Also fix that after using - ":scriptencoding" the iconv() file descriptor was not closed - (memory leak). -Files: src/ex_cmds2.c - -Patch 6.2.431 -Problem: When using the horizontal scrollbar, the scrolling is limited to - the length of the cursor line. -Solution: Make the scroll limit depend on the longest visible line. The - cursor is moved when necessary. Including the 'h' flag in - 'guioptions' disables this. -Files: runtime/doc/gui.txt, runtime/doc/options.txt, src/gui.c, - src/misc2.c, src/option.h - -Patch 6.2.432 (after 6.2.430 and 6.2.431) -Problem: Lint warnings. -Solution: Add type casts. -Files: src/ex_cmds2.c, src/gui.c - -Patch 6.2.433 -Problem: Translating "VISUAL" and "BLOCK" separately doesn't give a good - result. (Alejandro Lopez Valencia) -Solution: Use a string for each combination. -Files: src/screen.c - -Patch 6.2.434 (after 6.2.431) -Problem: Compiler warning. (Salman Halim) -Solution: Add type casts. -Files: src/gui.c - -Patch 6.2.435 -Problem: When there are vertically split windows the minimal Vim window - height is computed wrong. -Solution: Use frame_minheight() to correctly compute the minimal height. -Files: src/window.c - -Patch 6.2.436 -Problem: Running the tests changes the user's viminfo file. -Solution: In test 49 tell the extra Vim to use the test viminfo file. -Files: src/testdir/test49.vim - -Patch 6.2.437 -Problem: ":mksession" always puts "set nocompatible" in the session file. - This changes option settings. (Ron Aaron) -Solution: Add an "if" to only change 'compatible' when needed. -Files: src/ex_docmd.c - -Patch 6.2.438 -Problem: When the 'v' flag is present in 'cpoptions', backspacing and then - typing text again: one character too much is overtyped before - inserting is done again. -Solution: Set "dollar_vcol" to the right column. -Files: src/edit.c - -Patch 6.2.439 -Problem: GTK 2: Changing 'lines' may cause a mismatch between the window - layout and the size of the window. -Solution: Disable the hack with force_shell_resize_idle(). -Files: src/gui_gtk_x11.c - -Patch 6.2.440 -Problem: When 'lazyredraw' is set the window title is still updated. - The size of the Visual area and the ruler are displayed too often. -Solution: Postpone redrawing the window title. Only show the Visual area - size when waiting for a character. Don't draw the ruler - unnecessary. -Files: src/buffer.c, src/normal.c, src/screen.c - -Patch 6.2.441 -Problem: ":unabbreviate foo " doesn't work, because of the trailing space, - while an abbreviation with a trailing space is not possible. (Paul - Jolly) -Solution: Accept a match with the lhs of an abbreviation without the - trailing space. -Files: src/getchar.c - -Patch 6.2.442 -Problem: Cannot manipulate the command line from a function. -Solution: Add getcmdline(), getcmdpos() and setcmdpos() functions and the - CTRL-\ e command. -Files: runtime/doc/cmdline.txt, runtime/doc/eval.txt, src/eval.c - src/ex_getln.c, src/ops.c, src/proto/ex_getln.pro, - src/proto/ops.pro - -Patch 6.2.443 -Problem: With ":silent! echoerr something" you don't get the position of - the error. emsg() only writes the message itself and returns. -Solution: Also redirect the position of the error. -Files: src/message.c - -Patch 6.2.444 -Problem: When adding the 'c' flag to a ":substitute" command it may replace - more times than without the 'c' flag. Happens for a match that - starts with "\ze" (Marcel Svitalsk) and when using "\@<=" (Klaus - Bosau). -Solution: Correct "prev_matchcol" when replacing the line. Don't replace - the line when the pattern uses look-behind matching. -Files: src/ex_cmds.c, src/proto/regexp.pro, src/regexp.c - -Patch 6.2.445 -Problem: Copying vimtutor to /tmp/something is not secure, a symlink may - cause trouble. -Solution: Create a directory and create the file in it. Use "umask" to - create the directory with mode 700. (Stefan Nordhausen) -Files: src/vimtutor - -Patch 6.2.446 (after 6.2.404) -Problem: Using library functions wcwidth() and iswprint() results in - display problems for Hebrew characters. (Ron Aaron) -Solution: Disable the code to use the library functions, use our own. -Files: src/mbyte.c - -Patch 6.2.447 (after 6.2.440) -Problem: Now that the title is only updated when redrawing, it is no longer - possible to show it while executing a function. (Madoka Machitani) -Solution: Make ":redraw" also update the title. -Files: src/ex_docmd.c - -Patch 6.2.448 (after 6.2.427) -Problem: Mac: conversion done when 'termencoding' differs from 'encoding' - fails when pasting a longer text. -Solution: Check for an incomplete sequence at the end of the chunk to be - converted. (Eckehard Berns) -Files: src/mbyte.c - -Patch 6.2.449 (after 6.2.431) -Problem: Get error messages when switching files. -Solution: Check for a valid line number when calculating the width of the - horizontal scrollbar. (Helmut Stiegler) -Files: src/gui.c - -Patch 6.2.450 -Problem: " #include" and " #define" are not recognized with the default - option values for 'include' and 'defined'. (RG Kiran) -Solution: Adjust the default values to allow white space before the #. -Files: runtime/doc/options.txt, src/option.c - -Patch 6.2.451 -Problem: GTK: when using XIM there are various problems, including setting - 'modified' and breaking undo at the wrong moment. -Solution: Add "xim_changed_while_preediting", "preedit_end_col" and - im_is_preediting(). (Yasuhiro Matsumoto) -Files: src/ex_getln.c, src/globals.h, src/gui_gtk.c, src/gui_gtk_x11.c, - src/mbyte.c, src/misc1.c, src/proto/mbyte.pro, src/screen.c, - src/undo.c - -Patch 6.2.452 -Problem: In diff mode, when DiffAdd and DiffText highlight settings are - equal, an added line is highlighted with DiffChange. (Tom Schumm) -Solution: Remember the diff highlight type instead of the attributes. -Files: src/screen.c - -Patch 6.2.453 -Problem: ":s/foo\|\nbar/x/g" does not replace two times in "foo\nbar". - (Pavel Papushev) -Solution: When the pattern can match a line break also try matching at the - NUL at the end of a line. -Files: src/ex_cmds.c, src/regexp.c - -Patch 6.2.454 -Problem: ":let b:changedtick" doesn't work. (Alan Schmitt) ":let - b:changedtick = 99" does not give an error message. -Solution: Add code to recognize ":let b:changedtick". -Files: src/eval.c - -Patch 6.2.455 (after 6.2.297) -Problem: In Python commands the current locale changes how certain Python - functions work. (Eugene M. Minkovskii) -Solution: Set the LC_NUMERIC locale to "C" while executing a Python command. -Files: src/if_python.c - -Patch 6.2.456 (extra) -Problem: Win32: Editing a file by its Unicode name (dropping it on Vim or - using the file selection dialog) doesn't work. (Yakov Lerner, Alex - Jakushev) -Solution: Use wide character functions when file names are involved and - convert from/to 'encoding' where needed. -Files: src/gui_w48.c, src/macros.h, src/memfile.c, src/memline.c, - src/os_mswin.c, src/os_win32.c - -Patch 6.2.457 (after 6.2.244) -Problem: When 'encoding' is "utf-8" and writing text with chars above 0x80 - in latin1, conversion is wrong every 8200 bytes. (Oyvind Holm) -Solution: Correct the utf_ptr2len_check_len() function and fix the problem - of displaying 0xf7 in utfc_ptr2len_check_len(). -Files: src/mbyte.c - -Patch 6.2.458 -Problem: When 'virtualedit' is set "$" doesn't move to the end of an - unprintable character, causing "y$" not to include that character. - (Fred Ma) -Solution: Set "coladd" to move the cursor to the end of the character. -Files: src/misc2.c - -Patch 6.2.459 (after 6.2.454) -Problem: Variable "b" cannot be written. (Salman Halim) -Solution: Compare strings properly. -Files: src/eval.c - -Patch 6.2.460 (extra, after 6.2.456) -Problem: Compiler warnings for missing prototypes. -Solution: Include the missing prototypes. -Files: src/proto/os_win32.pro - -Patch 6.2.461 -Problem: After using a search command "x" starts putting single characters - in the numbered registers. -Solution: Reset "use_reg_one" at the right moment. -Files: src/normal.c - -Patch 6.2.462 -Problem: Finding a matching parenthesis does not correctly handle a - backslash in a trailing byte. -Solution: Handle multi-byte characters correctly. (Taro Muraoka) -Files: src/search.c - -Patch 6.2.463 (extra) -Problem: Win32: An NTFS file system may contain files with extra info - streams. The current method to copy them creates one and then - deletes it again. (Peter Toennies) Also, only three streams with - hard coded names are copied. -Solution: Use BackupRead() to check which info streams the original file - contains and only copy these streams. -Files: src/os_win32.c - -Patch 6.2.464 (extra, after 6.2.427) -Problem: Amiga: Compilation error with gcc. (Ali Akcaagac) -Solution: Move the #ifdef outside of Read(). -Files: src/os_amiga.c - -Patch 6.2.465 -Problem: When resizing the GUI window the window manager sometimes moves it - left of or above the screen. (Michael McCarty) -Solution: Check the window position after resizing it and move it onto the - screen when it isn't. -Files: src/gui.c - -Patch 6.2.466 (extra, after 6.2.456) -Problem: Win32: Compiling with Borland C fails, and an un/signed warning. -Solution: Redefine wcsicmp() to wcscmpi() and add type casts. (Yasuhiro - Matsumoto) -Files: src/os_win32.c - -Patch 6.2.467 (extra, after 6.2.463) -Problem: Win32: can't compile without multi-byte feature. (Ajit Thakkar) -Solution: Add #ifdefs around the info stream code. -Files: src/os_win32.c - -Patch 6.2.468 -Problem: Compiler warnings for shadowed variables. (Matthias Mohr) -Solution: Delete superfluous variables and rename others. -Files: src/eval.c, src/ex_docmd.c, src/ex_eval.c, src/if_cscope.c, - src/fold.c, src/option.c, src/os_unix.c, src/quickfix.c, - src/regexp.c - -Patch 6.2.469 (extra, after 6.2.456) -Problem: Win32: Can't create swap file when 'encoding' differs from the - active code page. (Kriton Kyrimis) -Solution: In enc_to_ucs2() terminate the converted string with a NUL -Files: src/os_mswin.c - -Patch 6.2.470 -Problem: The name returned by tempname() may be equal to the file used for - shell output when ignoring case. -Solution: Skip 'O' and 'I' in tempname(). -Files: src/eval.c - -Patch 6.2.471 -Problem: "-L/usr/lib" is used in the link command, even though it's - supposed to be filtered out. "-lw" and "-ldl" are not - automatically added when needed for "-lXmu". (Antonio Colombo) -Solution: Check for a space after the argument instead of before. Also - remove "-R/usr/lib" if it's there. Check for "-lw" and "-ldl" - before trying "-lXmu". -Files: src/auto/configure, src/configure.in, src/link.sh - -Patch 6.2.472 -Problem: When using a FileChangedShell autocommand that changes the current - buffer, a buffer exists that can't be wiped out. - Also, Vim sometimes crashes when executing an external command - that changes the buffer and a FileChangedShell autocommand is - used. (Hari Krishna Dara) - Users are confused by the warning for a file being changed outside - of Vim. -Solution: Avoid that the window counter for a buffer is incremented twice. - Avoid that buf_check_timestamp() is used recursively. - Add a hint to look in the help for more info. -Files: src/ex_cmds.c, src/fileio.c - -Patch 6.2.473 -Problem: Using CTRL-] in a help buffer without a name causes a crash. -Solution: Check for name to be present before using it. (Taro Muraoka) -Files: src/tag.c - -Patch 6.2.474 (extra, after 6.2.456) -Problem: When Vim is starting up conversion is done unnecessarily. Failure - to find the runtime files on Windows 98. (Randall W. Morris) -Solution: Init enc_codepage negative, only use it when not negative. - Don't use GetFileAttributesW() on Windows 98 or earlier. -Files: src/globals.h, src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, - src/os_win32.c - -Patch 6.2.475 -Problem: Commands after "perl <<EOF" are parsed as Vim commands when they - are not executed. -Solution: Properly skip over the perl commands. -Files: src/ex_docmd.c, src/ex_getln.c, src/if_perl.xs, src/if_python.c, - src/if_ruby.c, src/if_tcl.c, src/misc2.c - -Patch 6.2.476 -Problem: When reloading a hidden buffer changed outside of Vim and the - current buffer is read-only, the reloaded buffer becomes - read-only. (Hari Krishna Dara) -Solution: Save the 'readonly' flag of the reloaded buffer instead of the - current buffer. -Files: src/fileio.c - -Patch 6.2.477 -Problem: Using remote_send(v:servername, "\<C-V>") causes Vim to hang. - (Yakov Lerner) -Solution: When the resulting string is empty don't set received_from_client. -Files: src/main.c - -Patch 6.2.478 -Problem: Win32: "--remote file" fails changing directory if the current - directory name starts with a single quote. (Iestyn Walters) -Solution: Add a backslash where it will be removed later. -Files: src/main.c, src/misc2.c, src/proto/misc2.pro - -Patch 6.2.479 -Problem: The error message for errors during recovery goes unnoticed. -Solution: Avoid that the hit-enter prompt overwrites the message. Add a few - lines to make the error stand out. -Files: src/main.c, src/message.c, src/memline.c - -Patch 6.2.480 -Problem: NetBeans: Using negative index in array. backslash at end of - message may cause Vim to crash. (Xavier de Gaye) -Solution: Initialize buf_list_used to zero. Check for trailing backslash. -Files: src/netbeans.c - -Patch 6.2.481 -Problem: When writing a file it is not possible to specify that hard and/or - symlinks are to be broken instead of preserved. -Solution: Add the "breaksymlink" and "breakhardlink" values to 'backupcopy'. - (Simon Ekstrand) -Files: runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h - -Patch 6.2.482 -Problem: Repeating insert of CTRL-K 1 S doesn't work. The superscript 1 is - considered to be a digit. (Juergen Kraemer) -Solution: In vim_isdigit() only accept '0' to '9'. Use VIM_ISDIGIT() for - speed where possible. Also add vim_isxdigit(). -Files: src/buffer.c, src/charset.c, src/diff.c, src/digraph.c, - src/edit.c, src/eval.c,, src/ex_cmds.c, src/ex_cmds2.c, - src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, - src/if_xcmdsrv.c, src/farsi.c, src/fileio.c, src/fold.c, - src/getchar.c, src/gui.c, src/if_cscope.c, src/macros.h, - src/main.c, src/mark.c, src/mbyte.c, src/menu.c, src/misc1.c, - src/misc2.c, src/normal.c, src/ops.c, src/option.c, - src/proto/charset.pro, src/regexp.c, src/screen.c, src/search.c, - src/syntax.c, src/tag.c, src/term.c, src/termlib.c - -Patch 6.2.483 (extra, after 6.2.482) -Problem: See 6.2.482. -Solution: Extra part of patch 6.2.482. -Files: src/gui_photon.c, src/gui_w48.c, src/os_msdos.c, src/os_mswin.c - -Patch 6.2.484 -Problem: MS-Windows: With the included diff.exe, differences after a CTRL-Z - are not recognized. (Peter Keresztes) -Solution: Write the files with unix fileformat and invoke diff with --binary - if possible. -Files: src/diff.c - -Patch 6.2.485 -Problem: A BufWriteCmd autocommand cannot know if "!" was used or not. - (Hari Krishna Dara) -Solution: Add the v:cmdbang variable. -Files: runtime/doc/eval.txt, src/eval.c, src/proto/eval.pro, - src/fileio.c, src/vim.h - -Patch 6.2.486 (6.2.482) -Problem: Diff for eval.c is missing. -Solution: Addition to patch 6.2.482. -Files: src/eval.c - -Patch 6.2.487 (extra, after 6.2.456) -Problem: Compiler warnings for wrong prototype. (Alejandro Lopez Valencia) -Solution: Delete the prototype for Handle_WM_Notify(). -Files: src/proto/gui_w32.pro - -Patch 6.2.488 -Problem: Missing ")" in *.ch filetype detection. -Solution: Add the ")". (Ciaran McCreesh) -Files: runtime/filetype.vim - -Patch 6.2.489 -Problem: When accidentally opening a session in Vim which has already been - opened in another Vim there is a long row of ATTENTION prompts. - Need to quit each of them to get out. (Robert Webb) -Solution: Add the "Abort" alternative to the dialog. -Files: src/memline.c - -Patch 6.2.490 -Problem: With 'paragraph' it is not possible to use a single dot as a - paragraph boundary. (Dorai Sitaram) -Solution: Allow using " " (two spaces) in 'paragraph' to match ".$" or - ". $" -Files: src/search.c - -Patch 6.2.491 -Problem: Decrementing a position doesn't take care of multi-byte chars. -Solution: Adjust the column for multi-byte characters. Remove mb_dec(). - (Yasuhiro Matsumoto) -Files: src/mbyte.c, src/misc2.c, src/proto/mbyte.pro - -Patch 6.2.492 -Problem: When using ":redraw" while there is a message, the next ":echo" - still causes text to scroll. (Yasuhiro Matsumoto) -Solution: Reset msg_didout and msg_col, so that after ":redraw" the next - message overwrites an existing one. -Files: src/ex_docmd.c - -Patch 6.2.493 -Problem: "@x" doesn't work when 'insertmode' is set. (Benji Fisher) -Solution: Put "restart_edit" in the typeahead buffer, so that it's used - after executing the register contents. -Files: src/ops.c - -Patch 6.2.494 -Problem: Using diff mode with two windows, when moving horizontally in - inserted lines, a fold in the other window may open. -Solution: Compute the line number in the other window correctly. -Files: src/diff.c - -Patch 6.2.495 (extra, after 6.2.456) -Problem: Win32: The file dialog doesn't work on Windows 95. -Solution: Put the wide code of gui_mch_browse() in gui_mch_browseW() and use - it only on Windows NT/2000/XP. -Files: src/gui_w32.c, src/gui_w48.c - -Patch 6.2.496 -Problem: FreeBSD 4.x: When compiled with the pthread library (Python) a - complicated pattern may cause Vim to crash. Catching the signal - doesn't work. -Solution: When compiled with threads, instead of using the normal stacksize - limit, use the size of the initial stack. -Files: src/auto/configure, src/config.h.in, src/configure.in, - src/os_unix.c - -Patch 6.2.497 (extra) -Problem: Russian messages are only available in one encoding. -Solution: Convert the messages to MS-Windows codepages. (Vassily Ragosin) -Files: src/po/Makefile - -Patch 6.2.498 -Problem: Non-latin1 help files are not properly supported. -Solution: Support utf-8 help files and convert them to 'encoding' when - needed. -Files: src/fileio.c - -Patch 6.2.499 -Problem: When writing a file and halting the system, the file might be lost - when using a journaling file system. -Solution: Use fsync() to flush the file data to disk after writing a file. - (Radim Kolar) -Files: src/fileio.c - -Patch 6.2.500 (extra) -Problem: The DOS/MS-Windows the installer doesn't use the --binary flag for - diff. -Solution: Add --binary to the diff argument in MyDiff(). (Alejandro Lopez- - Valencia) -Files: src/dosinst.c - -Patch 6.2.501 -Problem: Vim does not compile with MorphOS. -Solution: Add a Makefile and a few changes to make Vim work with MorphOS. - (Ali Akcaagac) -Files: runtime/doc/os_amiga.txt, src/INSTALLami.txt, - src/Make_morphos.mak, src/memfile.c, src/term.c - -Patch 6.2.502 -Problem: Building fails for generating message files. -Solution: Add dummy message files. -Files: src/po/ca.po, src/po/ru.po, src/po/sv.po - -Patch 6.2.503 -Problem: Mac: Can't compile MacRoman conversions without the GUI. -Solution: Also link with the Carbon framework for the terminal version, for - the MacRoman conversion functions. (Eckehard Berns) - Remove -ltermcap from the GUI link command, it is not needed. -Files: src/auto/configure, src/Makefile, src/configure.in - -Patch 6.2.504 -Problem: Various problems with 'cindent', among which that a - list of variable declarations is not indented properly. -Solution: Fix the wrong indenting. Improve indenting of C++ methods. - Add the 'i', 'b' and 'W' options to 'cinoptions'. (mostly by - Helmut Stiegler) - Improve indenting of preprocessor-continuation lines. -Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, - src/testdir/test3.ok - -Patch 6.2.505 -Problem: Help for -P argument is missing. (Ronald Hoellwarth) -Solution: Add the patch that was missing in 6.2.419. -Files: runtime/doc/starting.txt - -Patch 6.2.506 (extra) -Problem: Win32: When 'encoding' is a codepage then reading a utf-8 file - only works when iconv is available. Writing a file in another - codepage uses the wrong kind of conversion. -Solution: Use internal conversion functions. Enable reading and writing - files with 'fileencoding' different from 'encoding' for all valid - codepages and utf-8 without the need for iconv. -Files: src/fileio.c, src/testdir/Make_dos.mak, src/testdir/test52.in, - src/testdir/test52.ok - -Patch 6.2.507 -Problem: The ownership of the file with the password for the NetBeans - connection is not checked. "-nb={file}" doesn't work for GTK. -Solution: Only accept the file when owned by the user and not accessible by - others. Detect "-nb=" for GTK. -Files: src/netbeans.c, src/gui_gtk_x11.c - -Patch 6.2.508 -Problem: Win32: "v:lang" does not show the current language for messages if - it differs from the other locale settings. -Solution: Use the value of the $LC_MESSAGES environment variable. -Files: src/ex_cmds2.c - -Patch 6.2.509 (after 6.2.508) -Problem: Crash when $LANG is not set. -Solution: Add check for NULL pointer. (Ron Aaron) -Files: src/ex_cmds2.c - -Patch 6.2.510 (after 6.2.507) -Problem: Warning for pointer conversion. -Solution: Add a type cast. -Files: src/gui_gtk_x11.c - -Patch 6.2.511 -Problem: Tags in Russian help files are in utf-8 encoding, which may be - different from 'encoding'. -Solution: Use the "TAG_FILE_ENCODING" field in the tags file to specify the - encoding of the tags. Convert help tags from 'encoding' to the - tag file encoding when searching for matches, do the reverse when - listing help tags. -Files: runtime/doc/tagsrch.txt, src/ex_cmds.c, src/tag.c - -Patch 6.2.512 -Problem: Translating "\"\n" is useless. (Gerfried Fuchs) -Solution: Remove the _() around it. -Files: src/main.c, src/memline.c - -Patch 6.2.513 (after 6.2.507) -Problem: NetBeans: the check for owning the connection info file can be - simplified. (Nikolay Molchanov) -Solution: Only check if the access mode is right. -Files: src/netbeans.c - -Patch 6.2.514 -Problem: When a highlight/syntax group name contains invalid characters - there is no warning. -Solution: Add an error for unprintable characters and a warning for other - invalid characters. -Files: src/syntax.c - -Patch 6.2.515 -Problem: When using the options window 'swapfile' is reset. -Solution: Use ":setlocal" instead of ":set". -Files: runtime/optwin.vim - -Patch 6.2.516 -Problem: The sign column cannot be seen, looks like there are two spaces - before the text. (Rob Retter) -Solution: Add the SignColumn highlight group. -Files: runtime/doc/options.txt, runtime/doc/sign.txt, src/option.c, - src/screen.c, src/syntax.c, src/vim.h - -Patch 6.2.517 -Problem: Using "r*" in Visual mode on multi-byte characters replaces - too many characters. In Visual Block mode replacing with a - multi-byte character doesn't work. -Solution: Adjust the operator end for the difference in byte length of the - original and the replaced character. Insert all bytes of a - multi-byte character, take care of double-wide characters. -Files: src/ops.c - -Patch 6.2.518 -Problem: Last line of a window is not updated after using "J" and then "D". - (Adri Verhoef) -Solution: When no line is found below a change that doesn't need updating, - update all lines below the change. -Files: src/screen.c - -Patch 6.2.519 -Problem: Mac: cannot read/write files in MacRoman format. -Solution: Do internal conversion from/to MacRoman to/from utf-8 and latin1. - (Eckehard Berns) -Files: src/fileio.c - -Patch 6.2.520 (extra) -Problem: The NSIS installer is outdated. -Solution: Make it work with NSIS 2.0. Also include console executables for - Win 95/98/ME and Win NT/2000/XP. Use LZWA compression. Use - "/oname" to avoid having to rename files before running NSIS. -Files: Makefile, nsis/gvim.nsi - -Patch 6.2.521 -Problem: When using silent Ex mode the "changing a readonly file" warning - is omitted but the one second wait isn't. (Yakov Lerner) -Solution: Skip the delay when "silent_mode" is set. -Files: src/misc1.c - -Patch 6.2.522 -Problem: GUI: when changing 'cmdheight' in the gvimrc file the window - layout is messed up. (Keith Dart) -Solution: Skip updating the window layout when changing 'cmdheight' while - still starting up. -Files: src/option.c - -Patch 6.2.523 -Problem: When loading a session and aborting when a swap file already - exists, the user is left with useless windows. (Robert Webb) -Solution: Load one file before creating the windows. -Files: src/ex_docmd.c - -Patch 6.2.524 (extra, after 6.2.520) -Problem: Win32: (un)installing gvimext.dll may fail if it was used. - The desktop and start menu links are created for the current user - instead of all users. - Using the home directory as working directory for the links is a - bad idea for multi-user systems. - Cannot use Vim from the "Open With..." menu. -Solution: Force a reboot if necessary. (Alejandro Lopez-Valencia) Also use - macros for the directory of the source and runtime files. Use - "CSIDL_COMMON_*" instead of "CSIDL_*" when possible. - Do not specify a working directory in the links. - Add Vim to the "Open With..." menu. (Giuseppe Bilotta) -Files: nsis/gvim.nsi, src/dosinst.c, src/dosinst.h, src/uninstal.c - -Patch 6.2.525 -Problem: When the history contains a very long line ":history" causes a - crash. (Volker Kiefel) -Solution: Shorten the history entry to fit it in one line. -Files: src/ex_getln.c - -Patch 6.2.526 -Problem: When s:lang is "ja" the Japanese menus are not used. -Solution: Add 'encoding' to the language when there is no charset. -Files: runtime/menu.vim - -Patch 6.2.527 -Problem: The 2html script uses ":wincmd p", which breaks when using some - autocommands. -Solution: Remember the window numbers and jump to them with ":wincmd w". - Also add XHTML support. (Panagiotis Issaris) -Files: runtime/syntax/2html.vim - -Patch 6.2.528 -Problem: NetBeans: Changes of the "~" command are not reported. -Solution: Call netbeans_inserted() after performing "~". (Gordon Prieur) - Also change NetBeans debugging to append to the log file. - Also fix that "~" in Visual block mode changes too much if there - are multi-byte characters. -Files: src/nbdebug.c, src/normal.c, src/ops.c - -Patch 6.2.529 (extra) -Problem: VisVim only works for Admin. Doing it for one user doesn't work. - (Alexandre Gouraud) -Solution: When registering the module fails, simply continue. -Files: src/VisVim/VisVim.cpp - -Patch 6.2.530 -Problem: Warning for missing prototype on the Amiga. -Solution: Include time.h -Files: src/version.c - -Patch 6.2.531 -Problem: In silent ex mode no messages are given, which makes debugging - very difficult. -Solution: Do output messages when 'verbose' is set. -Files: src/message.c, src/ui.c - -Patch 6.2.532 (extra) -Problem: Compiling for Win32s with VC 4.1 doesn't work. -Solution: Don't use CP_UTF8 if it's not defined. Don't use CSIDL_COMMON* - when not defined. -Files: src/dosinst.h, src/fileio.c - -Win32 console: After patch 6.2.398 Ex mode did not work. (Yasuhiro Matsumoto) - -Patch 6.3a.001 -Problem: Win32: if testing for the "--binary" option fails, diff isn't used - at all. -Solution: Handle the "ok" flag properly. (Yasuhiro Matsumoto) -Files: src/diff.c - -Patch 6.3a.002 -Problem: NetBeans: An insert command from NetBeans beyond the end of a - buffer crashes Vim. (Xavier de Gaye) -Solution: Use a local pos_T structure for the position. -Files: src/netbeans.c - -Patch 6.3a.003 -Problem: E315 error with auto-formatting comments. (Henry Van Roessel) -Solution: Pass the line number to same_leader(). -Files: src/ops.c - -Patch 6.3a.004 -Problem: Test32 fails on Windows XP for the DJGPP version. Renaming - test11.out fails. -Solution: Don't try renaming, create new files to use for the test. -Files: src/testdir/test32.in, src/testdir/test32.ok - -Patch 6.3a.005 -Problem: ":checkpath!" does not use 'includeexpr'. -Solution: Use a file name that was found directly. When a file was not - found and the located name is empty, use the rest of the line. -Files: src/search.c - -Patch 6.3a.006 -Problem: "yip" moves the cursor to the first yanked line, but not to the - first column. Looks like not all text was yanked. (Jens Paulus) -Solution: Move the cursor to the first column. -Files: src/search.c - -Patch 6.3a.007 -Problem: 'cindent' recognizes "enum" but not "typedef enum". -Solution: Skip over "typedef" before checking for "enum". (Helmut Stiegler) - Also avoid that searching for this item goes too far back. -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - -Patch 6.3a.008 (extra) -Problem: Windows 98: Some of the wide functions are not implemented, - resulting in file I/O to fail. This depends on what Unicode - support is installed. -Solution: Handle the failure and fall back to non-wide functions. -Files: src/os_win32.c - -Patch 6.3a.009 -Problem: Win32: Completion of filenames does not work properly when - 'encoding' differs from the active code page. -Solution: Use wide functions for expanding wildcards when appropriate. -Files: src/misc1.c - -Patch 6.3a.010 (extra) -Problem: Win32: Characters in the window title that do not appear in the - active codepage are replaced by a question mark. -Solution: Use DefWindowProcW() instead of DefWindowProc() when possible. -Files: src/glbl_ime.cpp, src/globals.h, src/proto/gui_w16.pro, - src/proto/gui_w32.pro, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c - -Patch 6.3a.011 -Problem: Using the explorer plugin changes a local directory to the global - directory. -Solution: Don't use ":chdir" to restore the current directory. Make - "expand('%:p')" remove "/../" and "/./" items from the path. -Files: runtime/plugin/explorer.vim, src/eval.c, src/os_unix.c - -Patch 6.3a.012 (extra) -Problem: On Windows 98 the installer doesn't work, don't even get the "I - agree" button. The check for the path ending in "vim" makes the - browse dialog hard to use. The default path when no previous Vim - is installed is "c:\vim" instead of "c:\Program Files\Vim". -Solution: Remove the background gradient command. Change the - .onVerifyInstDir function to a leave function for the directory - page. Don't let the install program default to c:\vim when no - path could be found. -Files: nsis/gvim.nsi, src/dosinst.c - -Patch 6.3a.013 (extra) -Problem: Win32: Characters in the menu that are not in the active codepage - are garbled. -Solution: Convert menu strings from 'encoding' to the active codepage. -Files: src/gui_w32.c, src/gui_w48.c - -Patch 6.3a.014 -Problem: Using multi-byte text and highlighting in a statusline causes gaps - to appear. (Helmut Stiegler) -Solution: Advance the column by text width instead of number of bytes. Add - the vim_strnsize() function. -Files: src/charset.c, src/proto/charset.pro, src/screen.c - -Patch 6.3a.015 -Problem: Using the "select all" menu item when 'insertmode' is set and - clicking the mouse button doesn't return to Insert mode. The - Buffers/Delete menu doesn't offer a choice to abandon a changed - buffer. (Jens Paulus) -Solution: Don't use CTRL-\ CTRL-N. Add ":confirm" for the Buffers menu - items. -Files: runtime/menu.vim - -Patch 6.3a.016 -Problem: After cancelling the ":confirm" dialog the error message and - hit-enter prompt may not be displayed properly. -Solution: Flush output after showing the dialog. -Files: src/message.c - -Patch 6.3a.017 -Problem: servername() doesn't work when Vim was started with the "-X" - argument or when the "exclude" in 'clipboard' matches the terminal - name. (Robert Nowotniak) -Solution: Force connecting to the X server when using client-server - commands. -Files: src/eval.c, src/globals.h, src/os_unix.c - -Patch 6.3a.018 (after 6.3a.017) -Problem: Compiler warning for return value of make_connection(). -Solution: Use void return type. -Files: src/eval.c - -Patch 6.3a.019 (extra) -Problem: Win32: typing non-latin1 characters doesn't work. -Solution: Invoke _OnChar() directly to avoid that the argument is truncated - to a byte. Convert the UTF-16 character to bytes according to - 'encoding' and ignore 'termencoding'. Same for _OnSysChar(). -Files: src/gui_w32.c, src/gui_w48.c - -Patch 6.3a.020 (extra) -Problem: Missing support for AROS (AmigaOS reimplementation). Amiga GUI - doesn't work. -Solution: Add AROS support. (Adam Chodorowski) - Fix Amiga GUI problems. (Georg Steger, Ali Akcaagac) -Files: Makefile, src/Make_aros.mak, src/gui_amiga.c, src/gui_amiga.h, - src/memfile.c, src/os_amiga.c, src/term.c - -Patch 6.3a.021 (after 6.3a.017) -Problem: Can't compile with X11 but without GUI. -Solution: Put use of "gui.in_use" inside an #ifdef. -Files: src/eval.c - -Patch 6.3a.022 -Problem: When typing Tabs when 'softtabstop' is used and 'list' is set a - tab is counted for two spaces. -Solution: Use the "L" flag in 'cpoptions' to tell whether a tab is counted - as two spaces or as 'tabstop'. (Antony Scriven) -Files: runtime/doc/options.txt, src/edit.c - -Patch 6.3a.023 -Problem: Completion on the command line doesn't handle backslashes - properly. Only the tail of matches is shown, even when not - completing filenames. -Solution: When turning the string into a pattern double backslashes. Don't - omit the path when not expanding files or directories. -Files: src/ex_getln.c - -Patch 6.3a.024 -Problem: The "save all" toolbar item fails for buffers that don't have a - name. When using ":wa" or closing the Vim window and there are - nameless buffers, browsing for a name may cause the name being - given to the wrong buffer or not stored properly. ":browse" only - worked for one file. -Solution: Use ":confirm browse" for "save all". - Pass buffer argument to setfname(). Restore "browse" flag and - "forceit" after doing the work for one file. -Files: runtime/menu.vim, src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, - src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/memline.c, - src/message.c, src/window.c, src/proto/buffer.pro, - src/proto/ex_cmds2.pro, src/proto/memline.pro - -Patch 6.3a.025 -Problem: Setting 'virtualedit' moves the cursor. (Benji Fisher) -Solution: Update the virtual column before using it. -Files: src/option.c - -Patch 6.3a.026 (extra, after 6.3a.008) -Problem: Editing files on Windows 98 doesn't work when 'encoding' is - "utf-8" (Antoine Mechelynck) - Warning for missing function prototype. -Solution: For all wide functions check if it failed because it is not - implemented. Use ANSI function declaration for char_to_string(). -Files: src/gui_w48.c, src/os_mswin.c, src/os_win32.c - -Patch 6.3a.027 (extra, after 6.3a.026) -Problem: Compiler warning for function argument. -Solution: Declare both char and WCHAR arrays. -Files: src/gui_w48.c - -Patch 6.3a.028 -Problem: ":normal ." doesn't work inside a function, because redo is saved - and restored. (Benji Fisher) -Solution: Make a copy of the redo buffer when executing a function. -Files: src/getchar.c - -Patch 6.3b.001 (extra) -Problem: Bcc 5: The generated auto/pathdef can't be compiled. -Solution: Fix the way quotes and backslashes are escaped. -Files: src/Make_bc5.mak - -Patch 6.3b.002 -Problem: Win32: conversion during file write fails when a double-byte - character is split over two writes. -Solution: Fix the conversion retry without a trailing byte. (Taro Muraoka) -Files: src/fileio.c - -Patch 6.3b.003 (extra) -Problem: Win32: When compiling with Borland C 5.5 and 'encoding' is "utf-8" - then Vim can't open files under MS-Windows 98. (Antoine J. - Mechelynck) -Solution: Don't use _wstat(), _wopen() and _wfopen() in this situation. -Files: src/os_mswin.c, src/os_win32.c - -Patch 6.3b.004 -Problem: ":helpgrep" includes a trailing CR in the text line. -Solution: Remove the CR. -Files: src/quickfix.c - -Patch 6.3b.005 -Problem: ":echo &g:ai" results in the local option value. (Salman Halim) -Solution: Pass the flags from find_option_end() to get_option_value(). -Files: src/eval.c - -Patch 6.3b.006 -Problem: When using "mswin.vim", CTRL-V in Insert mode leaves cursor before - last pasted character. (Mathew Davis) -Solution: Use the same Paste() function as in menu.vim. -Files: runtime/mswin.vim - -Patch 6.3b.007 -Problem: Session file doesn't restore view on windows properly. (Robert - Webb) -Solution: Restore window sizes both before and after restoring the view, so - that the view, cursor position and size are restored properly. -Files: src/ex_docmd.c - -Patch 6.3b.008 -Problem: Using ":finally" in a user command doesn't always work. (Hari - Krishna Dara) -Solution: Don't assume that using getexline() means the command was typed. -Files: src/ex_docmd.c - -Patch 6.3b.009 (extra) -Problem: Win32: When the -P argument is not found in a window title, there - is no error message. -Solution: When the window can't be found give an error message and exit. - Also use try/except to catch failing to open the MDI window. - (Michael Wookey) -Files: src/gui_w32.c - -Patch 6.3b.010 -Problem: Win32: Using the "-D" argument and expanding arguments may cause a - hang, because the terminal isn't initialized yet. (Vince Negri) -Solution: Don't go into debug mode before the terminal is initialized. -Files: src/main.c - -Patch 6.3b.011 -Problem: Using CTRL-\ e while obtaining an expression aborts the command - line. (Hari Krishna Dara) -Solution: Insert the CTRL-\ e as typed. -Files: src/ex_getln.c - -Patch 6.3b.012 (after 6.3b.010) -Problem: Can't compile with tiny features. (Norbert Tretkowski) -Solution: Add #ifdefs. -Files: src/main.c - -Patch 6.3b.013 -Problem: Loading a session file results in editing the wrong file in the - first window when this is not the file at the current position in - the argument list. (Robert Webb) -Solution: Check w_arg_idx_invalid to decide whether to edit a file. -Files: src/ex_docmd.c - -Patch 6.3b.014 -Problem: ":runtime! foo*.vim" may using freed memory when a sourced script - changes the value of 'runtimepath'. -Solution: Make a copy of 'runtimepath' when looping over the matches. -Files: src/ex_cmds2.c - -Patch 6.3b.015 -Problem: Get lalloc(0) error when using "p" in Visual mode while - 'clipboard' contains "autoselect,unnamed". (Mark Wagonner) -Solution: Avoid allocating zero bytes. Obtain the clipboard when necessary. -Files: src/ops.c - -Patch 6.3b.016 -Problem: When 'virtualedit' is used "x" doesn't delete the last character - of a line that has as many characters as 'columns'. (Yakov Lerner) -Solution: When the cursor isn't moved let oneright() return FAIL. -Files: src/edit.c - -Patch 6.3b.017 -Problem: Win32: "vim --remote-wait" doesn't exit when the server finished - editing the file. (David Fishburn) -Solution: In the rrhelper plugin change backslashes to forward slashes and - escape special characters. -Files: runtime/plugin/rrhelper.vim - -Patch 6.3b.018 -Problem: The list of help files in the "local additions" table doesn't - recognize utf-8 encoding. (Yasuhiro Matsumoto) -Solution: Recognize utf-8 characters. -Files: src/ex_cmds.c - -Patch 6.3b.019 -Problem: When $VIMRUNTIME is not a full path name the "local additions" - table lists all the help files. -Solution: Use fullpathcmp() instead of fnamecmp() to compare the directory - names. -Files: src/ex_cmds.c - -Patch 6.3b.020 -Problem: When using CTRL-^ when entering a search string, the item in the - statusline that indicates the keymap is not updated. (Ilya - Dogolazky) -Solution: Mark the statuslines for updating. -Files: src/ex_getln.c - -Patch 6.3b.021 -Problem: The swapfile is not readable for others, the ATTENTION prompt does - not show all info when someone else is editing the same file. - (Marcel Svitalsky) -Solution: Use the protection of original file for the swapfile and set it - after creating the swapfile. -Files: src/fileio.c - -Patch 6.3b.022 -Problem: Using "4v" to select four times the old Visual area may put the - cursor beyond the end of the line. (Jens Paulus) -Solution: Correct the cursor column. -Files: src/normal.c - -Patch 6.3b.023 -Problem: When "3dip" starts in an empty line, white lines after the - non-white lines are not deleted. (Jens Paulus) -Solution: Include the white lines. -Files: src/search.c - -Patch 6.3b.024 -Problem: "2daw" does not delete leading white space like "daw" does. (Jens - Paulus) -Solution: Include the white space when a count is used. -Files: src/search.c - -Patch 6.3b.025 -Problem: Percentage in ruler isn't updated when a line is deleted. (Jens - Paulus) -Solution: Check for a change in line count when deciding to update the ruler. -Files: src/screen.c, src/structs.h - -Patch 6.3b.026 -Problem: When selecting "abort" at the ATTENTION prompt for a file that is - already being edited Vim crashes. -Solution: Don't abort creating a new buffer when we really need it. -Files: src/buffer.c, src/vim.h - -Patch 6.3b.027 -Problem: Win32: When enabling the menu in a maximized window, Vim uses more - lines than what is room for. (Shizhu Pan) -Solution: When deciding to call shell_resized(), also compare the text area - size with Rows and Columns, not just with screen_Rows and - screen_Columns. -Files: src/gui.c - -Patch 6.3b.028 -Problem: When in diff mode, setting 'rightleft' causes a crash. (Eddine) -Solution: Check for last column differently when 'rightleft' is set. -Files: src/screen.c - -Patch 6.3b.029 -Problem: Win32: warning for uninitialized variable. -Solution: Initialize to zero. -Files: src/misc1.c - -Patch 6.3b.030 -Problem: After Visually selecting four characters, changing it to other - text, Visually selecting and yanking two characters: "." changes - four characters, another "." changes two characters. (Robert Webb) -Solution: Don't store the size of the Visual area when redo is active. -Files: src/normal.c - -============================================================================== -VERSION 6.4 *version-6.4* - -This section is about improvements made between version 6.3 and 6.4. - -This is a bug-fix release. There are also a few new features. The major -number of new items is in the runtime files and translations. - -The big MS-Windows version now uses: - Ruby version 1.8.3 - Perl version 5.8.7 - Python version 2.4.2 - - -Changed *changed-6.4* -------- - -Removed runtime/tools/tcltags, Exuberant ctags does it better. - - -Added *added-6.4* ------ - -Alsaconf syntax file (Nikolai Weibull) -Eruby syntax, indent, compiler and ftplugin file (Doug Kearns) -Esterel syntax file (Maurizio Tranchero) -Mathematica indent file (Steve Layland) -Netrc syntax file (Nikolai Weibull) -PHP compiler file (Doug Kearns) -Pascal indent file (Neil Carter) -Prescribe syntax file (Klaus Muth) -Rubyunit compiler file (Doug Kearns) -SMTPrc syntax file (Kornel Kielczewski) -Sudoers syntax file (Nikolai Weibull) -TPP syntax file (Gerfried Fuchs) -VHDL ftplugin file (R. Shankar) -Verilog-AMS syntax file (S. Myles Prather) - -Bulgarian keymap (Alberto Mardegan) -Canadian keymap (Eric Joanis) - -Hungarian menu translations in UTF-8 (Kantra Gergely) -Ukrainian menu translations (Bohdan Vlasyuk) - -Irish message translations (Kevin Patrick Scannell) - -Configure also checks for tclsh8.4. - - -Fixed *fixed-6.4* ------ - -"dFxd;" deleted the character under the cursor, "d;" didn't remember the -exclusiveness of the motion. - -When using "set laststatus=2 cmdheight=2" in the .gvimrc you may only get one -line for the cmdline. (Christian Robinson) Invoke command_height() after the -GUI has started up. - -Gcc would warn "dereferencing type-punned pointer will break strict -aliasing -rules". Avoid using typecasts for variable pointers. - -Gcc 3.x interprets the -MM argument differently. Change "-I /path" to -"-isystem /path" for "make depend". - - -Patch 6.3.001 -Problem: ":browse split" gives the file selection dialog twice. (Gordon - Bazeley) Same problem for ":browse diffpatch". -Solution: Reset cmdmod.browse before calling do_ecmd(). -Files: src/diff.c, src/ex_docmd.c - -Patch 6.3.002 -Problem: When using translated help files with non-ASCII latin1 characters - in the first line the utf-8 detection is wrong. -Solution: Properly detect utf-8 characters. When a mix of encodings is - detected continue with the next language and avoid a "no matches" - error because of "got_int" being set. Add the directory name to - the error message for a duplicate tag. -Files: src/ex_cmds.c - -Patch 6.3.003 -Problem: Crash when using a console dialog and the first choice does not - have a default button. (Darin Ohashi) -Solution: Allocate two more characters for the [] around the character for - the default choice. -Files: src/message.c - -Patch 6.3.004 -Problem: When searching for a long string (140 chars in a 80 column - terminal) get three hit-enter prompts. (Robert Webb) -Solution: Avoid the hit-enter prompt when giving the message for wrapping - around the end of the buffer. Don't give that message again when - the string was not found. -Files: src/message.c, src/search.c - -Patch 6.3.005 -Problem: Crash when searching for a pattern with a character offset and - starting in a closed fold. (Frank Butler) -Solution: Check for the column to be past the end of the line. Also fix - that a pattern with a character offset relative to the end isn't - read back from the viminfo properly. -Files: src/search.c - -Patch 6.3.006 -Problem: ":breakadd file *foo" prepends the current directory to the file - pattern. (Hari Krishna Dara) -Solution: Keep the pattern as-is. -Files: src/ex_cmds2.c - -Patch 6.3.007 -Problem: When there is a buffer with 'buftype' set to "nofile" and using a - ":cd" command, the swap file is not deleted when exiting. -Solution: Use the full path of the swap file also for "nofile" buffers. -Files: src/fileio.c - -Patch 6.3.008 -Problem: Compiling fails under OS/2. -Solution: Include "e_screenmode" also for OS/2. (David Sanders) -Files: src/globals.h - -Patch 6.3.009 (after 6.3.006) -Problem: ":breakadd file /path/foo.vim" does not match when a symbolic link - is involved. (Servatius Brandt) -Solution: Do expand the pattern when it does not start with "*". -Files: runtime/doc/repeat.txt, src/ex_cmds2.c - -Patch 6.3.010 -Problem: When writing to a named pipe there is an error for fsync() - failing. -Solution: Ignore the fsync() error for devices. -Files: src/fileio.c - -Patch 6.3.011 -Problem: Crash when the completion function of a user-command uses a - "normal :cmd" command. (Hari Krishna Dara) -Solution: Save the command line when invoking the completion function. -Files: src/ex_getln.c - -Patch 6.3.012 -Problem: Internal lalloc(0) error when using a complicated multi-line - pattern in a substitute command. (Luc Hermitte) -Solution: Avoid going past the end of a line. -Files: src/ex_cmds.c - -Patch 6.3.013 -Problem: Crash when editing a command line and typing CTRL-R = to evaluate - a function that uses "normal :cmd". (Hari Krishna Dara) -Solution: Save and restore the command line when evaluating an expression - for CTRL-R =. -Files: src/ex_getln.c, src/ops.c, src/proto/ex_getln.pro, - src/proto/ops.pro - -Patch 6.3.014 -Problem: When using Chinese or Taiwanese the default for 'helplang' is - wrong. (Simon Liang) -Solution: Use the part of the locale name after "zh_". -Files: src/option.c - -Patch 6.3.015 -Problem: The string that winrestcmd() returns may end in garbage. -Solution: NUL-terminate the string. (Walter Briscoe) -Files: src/eval.c - -Patch 6.3.016 -Problem: The default value for 'define' has "\s" before '#'. -Solution: Add a star after "\s". (Herculano de Lima Einloft Neto) -Files: src/option.c - -Patch 6.3.017 -Problem: "8zz" may leave the cursor beyond the end of the line. (Niko - Maatjes) -Solution: Correct the cursor column after moving to another line. -Files: src/normal.c - -Patch 6.3.018 -Problem: ":0argadd zero" added the argument after the first one, instead of - before it. (Adri Verhoef) -Solution: Accept a zero range for ":argadd". -Files: src/ex_cmds.h - -Patch 6.3.019 -Problem: Crash in startup for debug version. (David Rennals) -Solution: Move the call to nbdebug_wait() to after allocating NameBuff. -Files: src/main.c - -Patch 6.3.020 -Problem: When 'encoding' is "utf-8" and 'delcombine' is set, "dw" does not - delete a word but only a combining character of the first - character, if there is one. (Raphael Finkel) -Solution: Correctly check that one character is being deleted. -Files: src/misc1.c - -Patch 6.3.021 -Problem: When the last character of a file name is a multi-byte character - and the last byte is a path separator, the file cannot be edited. -Solution: Check for the last byte to be part of a multi-byte character. - (Taro Muraoka) -Files: src/fileio.c - -Patch 6.3.022 (extra) -Problem: Win32: When the last character of a file name is a multi-byte - character and the last byte is a path separator, the file cannot - be written. A trail byte that is a space makes that a file cannot - be opened from the command line. -Solution: Recognize double-byte characters when parsing the command line. - In mch_stat() check for the last byte to be part of a multi-byte - character. (Taro Muraoka) -Files: src/gui_w48.c, src/os_mswin.c - -Patch 6.3.023 -Problem: When the "to" part of a mapping starts with its "from" part, - abbreviations for the same characters is not possible. For - example, when <Space> is mapped to something that starts with a - space, typing <Space> does not expand abbreviations. -Solution: Only disable expanding abbreviations when a mapping is not - remapped, don't disable it when the RHS of a mapping starts with - the LHS. -Files: src/getchar.c, src/vim.h - -Patch 6.3.024 -Problem: In a few places a string in allocated memory is not terminated - with a NUL. -Solution: Add ga_append(NUL) in script_get(), gui_do_findrepl() and - serverGetVimNames(). -Files: src/ex_getln.c, src/gui.c, src/if_xcmdsrv.c, src/os_mswin.c - -Patch 6.3.025 (extra) -Problem: Missing NUL for list of server names. -Solution: Add ga_append(NUL) in serverGetVimNames(). -Files: src/os_mswin.c - -Patch 6.3.026 -Problem: When ~/.vim/after/syntax/syncolor.vim contains a command that - reloads the colors an endless loop and/or a crash may occur. -Solution: Only free the old value of an option when it was originally - allocated. Limit recursiveness of init_highlight() to 5 levels. -Files: src/option.c, src/syntax.c - -Patch 6.3.027 -Problem: VMS: Writing a file may insert extra CR characters. Not all - terminals are recognized correctly. Vt320 doesn't support colors. - Environment variables are not expanded correctly. -Solution: Use another method to write files. Add vt320 termcap codes for - colors. (Zoltan Arpadffy) -Files: src/fileio.c, src/misc1.c, src/os_unix.c, src/structs.h, - src/term.c - -Patch 6.3.028 -Problem: When appending to a file the BOM marker may be written. (Alex - Jakushev) -Solution: Do not write the BOM marker when appending. -Files: src/fileio.c - -Patch 6.3.029 -Problem: Crash when inserting a line break. (Walter Briscoe) -Solution: In the syntax highlighting code, don't use an old state after a - change was made, current_col may be past the end of the line. -Files: src/syntax.c - -Patch 6.3.030 -Problem: GTK 2: Crash when sourcing a script that deletes the menus, sets - 'encoding' to "utf-8" and loads the menus again. GTK error - message when tooltip text is in a wrong encoding. -Solution: Don't copy characters from the old screen to the new screen when - switching 'encoding' to utf-8, they may be invalid. Only set the - tooltip when it is valid utf-8. -Files: src/gui_gtk.c, src/mbyte.c, src/proto/mbyte.pro, src/screen.c - -Patch 6.3.031 -Problem: When entering a mapping and pressing Tab halfway the command line - isn't redrawn properly. (Adri Verhoef) -Solution: Reposition the cursor after drawing over the "..." of the - completion attempt. -Files: src/ex_getln.c - -Patch 6.3.032 -Problem: Using Python 2.3 with threads doesn't work properly. -Solution: Release the lock after initialization. -Files: src/if_python.c - -Patch 6.3.033 -Problem: When a mapping ends in a Normal mode command of more than one - character Vim doesn't return to Insert mode. -Solution: Check that the mapping has ended after obtaining all characters of - the Normal mode command. -Files: src/normal.c - -Patch 6.3.034 -Problem: VMS: crash when using ":help". -Solution: Avoid using "tags-??", some Open VMS systems can't handle the "?" - wildcard. (Zoltan Arpadffy) -Files: src/tag.c - -Patch 6.3.035 (extra) -Problem: RISC OS: Compile errors. -Solution: Change e_screnmode to e_screenmode. Change the way - __riscosify_control is set. Improve the makefile. (Andy Wingate) -Files: src/os_riscos.c, src/search.c, src/Make_ro.mak - -Patch 6.3.036 -Problem: ml_get errors when the whole file is a fold, switching - 'foldmethod' and doing "zj". (Christian J. Robinson) Was not - deleting the fold but creating a fold with zero lines. -Solution: Delete the fold properly. -Files: src/fold.c - -Patch 6.3.037 (after 6.3.032) -Problem: Warning for unused variable. -Solution: Change the #ifdefs for the saved thread stuff. -Files: src/if_python.c - -Patch 6.3.038 (extra) -Problem: Win32: When the "file changed" dialog pops up after a click that - gives gvim focus and not moving the mouse after that, the effect - of the click may occur when moving the mouse later. (Ken Clark) - Happened because the release event was missed. -Solution: Clear the s_button_pending variable when any input is received. -Files: src/gui_w48.c - -Patch 6.3.039 -Problem: When 'number' is set and inserting lines just above the first - displayed line (in another window on the same buffer), the line - numbers are not updated. (Hitier Sylvain) -Solution: When 'number' is set and lines are inserted/deleted redraw all - lines below the change. -Files: src/screen.c - -Patch 6.3.040 -Problem: Error handling does not always work properly and may cause a - buffer to be marked as if it's viewed in a window while it isn't. - Also when selecting "Abort" at the attention prompt. -Solution: Add enter_cleanup() and leave_cleanup() functions to move - saving/restoring things for error handling to one place. - Clear a buffer read error when it's unloaded. -Files: src/buffer.c, src/ex_docmd.c, src/ex_eval.c, - src/proto/ex_eval.pro, src/structs.h, src/vim.h - -Patch 6.3.041 (extra) -Problem: Win32: When the path to a file has Russian characters, ":cd %:p:h" - doesn't work. (Valery Kondakoff) -Solution: Use a wide function to change directory. -Files: src/os_mswin.c - -Patch 6.3.042 -Problem: When there is a closed fold at the top of the window, CTRL-X - CTRL-E in Insert mode reduces the size of the fold instead of - scrolling the text up. (Gautam) -Solution: Scroll over the closed fold. -Files: src/move.c - -Patch 6.3.043 -Problem: 'hlsearch' highlighting sometimes disappears when inserting text - in PHP code with syntax highlighting. (Marcel Svitalsky) -Solution: Don't use pointers to remember where a match was found, use an - index. The pointers may become invalid when searching in other - lines. -Files: src/screen.c - -Patch 6.3.044 (extra) -Problem: Mac: When 'linespace' is non-zero the Insert mode cursor leaves - pixels behind. (Richard Sandilands) -Solution: Erase the character cell before drawing the text when needed. -Files: src/gui_mac.c - - -Patch 6.3.045 -Problem: Unusual characters in an option value may cause unexpected - behavior, especially for a modeline. (Ciaran McCreesh) -Solution: Don't allow setting termcap options or 'printdevice' in a - modeline. Don't list options for "termcap" and "all" in a - modeline. Don't allow unusual characters in 'filetype', 'syntax', - 'backupext', 'keymap', 'patchmode' and 'langmenu'. -Files: src/option.c, runtime/doc/options.txt - -Patch 6.3.046 -Problem: ":registers" doesn't show multi-byte characters properly. - (Valery Kondakoff) -Solution: Get the length of each character before displaying it. -Files: src/ops.c - -Patch 6.3.047 (extra) -Problem: Win32 with Borland C 5.5 on Windows XP: A new file is created with - read-only attributes. (Tony Mechelynck) -Solution: Don't use the _wopen() function for Borland. -Files: src/os_win32.c - -Patch 6.3.048 (extra) -Problem: Build problems with VMS on IA64. -Solution: Add dependencies to the build file. (Zoltan Arpadffy) -Files: src/Make_vms.mms - -Patch 6.3.049 (after 6.3.045) -Problem: Compiler warning for "char" vs "char_u" mixup. (Zoltan Arpadffy) -Solution: Add a typecast. -Files: src/option.c - -Patch 6.3.050 -Problem: When SIGHUP is received while busy exiting, non-reentrant - functions such as free() may cause a crash. -Solution: Ignore SIGHUP when exiting because of an error. (Scott Anderson) -Files: src/misc1.c, src/main.c - -Patch 6.3.051 -Problem: When 'wildmenu' is set and completed file names contain multi-byte - characters Vim may crash. -Solution: Reserve room for multi-byte characters. (Yasuhiro Matsumoto) -Files: src/screen.c - -Patch 6.3.052 (extra) -Problem: Windows 98: typed keys that are not ASCII may not work properly. - For example with a Russian input method. (Jiri Jezdinsky) -Solution: Assume that the characters arrive in the current codepage instead - of UCS-2. Perform conversion based on that. -Files: src/gui_w48.c - -Patch 6.3.053 -Problem: Win32: ":loadview" cannot find a file with non-ASCII characters. - (Valerie Kondakoff) -Solution: Use mch_open() instead of open() to open the file. -Files: src/ex_cmds2.c - -Patch 6.3.054 -Problem: When 'insertmode' is set <C-L>4ixxx<C-L> hangs Vim. (Jens Paulus) - Vim is actually still working but redraw is disabled. -Solution: When stopping Insert mode with CTRL-L don't put an Esc in the redo - buffer but a CTRL-L. -Files: src/edit.c - -Patch 6.3.055 (after 6.3.013) -Problem: Can't use getcmdline(), getcmdpos() or setcmdpos() with <C-R>= - when editing a command line. Using <C-\>e may crash Vim. (Peter - Winters) -Solution: When moving ccline out of the way for recursive use, make it - available to the functions that need it. Also save and restore - ccline when calling get_expr_line(). Make ccline.cmdbuf NULL at - the end of getcmdline(). -Files: src/ex_getln.c - -Patch 6.3.056 -Problem: The last characters of a multi-byte file name may not be displayed - in the window title. -Solution: Avoid to remove a multi-byte character where the last byte looks - like a path separator character. (Yasuhiro Matsumoto) -Files: src/buffer.c, src/ex_getln.c - -Patch 6.3.057 -Problem: When filtering lines folds are not updated. (Carl Osterwisch) -Solution: Update folds for filtered lines. -Files: src/ex_cmds.c - -Patch 6.3.058 -Problem: When 'foldcolumn' is equal to the window width and 'wrap' is on - Vim may crash. Disabling the vertical split feature breaks - compiling. (Peter Winters) -Solution: Check for zero room for wrapped text. Make compiling without - vertical splits possible. -Files: src/move.c, src/quickfix.c, src/screen.c, src/netbeans.c - -Patch 6.3.059 -Problem: Crash when expanding an ":edit" command containing several spaces - with the shell. (Brian Hirt) -Solution: Allocate enough space for the quotes. -Files: src/os_unix.c - -Patch 6.3.060 -Problem: Using CTRL-R CTRL-O in Insert mode with an invalid register name - still causes something to be inserted. -Solution: Check the register name for being valid. -Files: src/edit.c - -Patch 6.3.061 -Problem: When editing a utf-8 file in an utf-8 xterm and there is a - multi-byte character in the last column, displaying is messed up. - (Joël Rio) -Solution: Check for a multi-byte character, not a multi-column character. -Files: src/screen.c - -Patch 6.3.062 -Problem: ":normal! gQ" hangs. -Solution: Quit getcmdline() and do_exmode() when out of typeahead. -Files: src/ex_getln.c, src/ex_docmd.c - -Patch 6.3.063 -Problem: When a CursorHold autocommand changes to another window - (temporarily) 'mousefocus' stops working. -Solution: Call gui_mouse_correct() after triggering CursorHold. -Files: src/gui.c - -Patch 6.3.064 -Problem: line2byte(line("$") + 1) sometimes returns the wrong number. - (Charles Campbell) -Solution: Flush the cached line before counting the bytes. -Files: src/memline.c - -Patch 6.3.065 -Problem: The euro digraph doesn't always work. -Solution: Add an "e=" digraph for Unicode euro character and adjust the - help files. -Files: src/digraph.c, runtime/doc/digraph.txt - -Patch 6.3.066 -Problem: Backup file may get wrong permissions. -Solution: Use permissions of original file for backup file in more places. -Files: src/fileio.c - -Patch 6.3.067 (after 6.3.066) -Problem: Newly created file gets execute permission. -Solution: Check for "perm" to be negative before using it. -Files: src/fileio.c - -Patch 6.3.068 -Problem: When editing a compressed file xxx.gz which is a symbolic link to - the actual file a ":write" renames the link. -Solution: Resolve the link, so that the actual file is renamed and - compressed. -Files: runtime/plugin/gzip.vim - -Patch 6.3.069 -Problem: When converting text with illegal characters Vim may crash. -Solution: Avoid that too much is subtracted from the length. (Da Woon Jung) -Files: src/mbyte.c - -Patch 6.3.070 -Problem: After ":set number linebreak wrap" and a vertical split, moving - the vertical separator far left will crash Vim. (Georg Dahn) -Solution: Avoid dividing by zero. -Files: src/charset.c - -Patch 6.3.071 -Problem: The message for CTRL-X mode is still displayed after an error for - 'thesaurus' or 'dictionary' being empty. -Solution: Clear "edit_submode". -Files: src/edit.c - -Patch 6.3.072 -Problem: Crash in giving substitute message when language is Chinese and - encoding is utf-8. (Yongwei) -Solution: Make the msg_buf size larger when using multi-byte. -Files: src/vim.h - -Patch 6.3.073 -Problem: Win32 GUI: When the Vim window is partly above or below the - screen, scrolling causes display errors when the taskbar is not on - that side. -Solution: Use the SW_INVALIDATE flag when the Vim window is partly below or - above the screen. -Files: src/gui_w48.c - -Patch 6.3.074 -Problem: When mswin.vim is used and 'insertmode' is set, typing text in - Select mode and then using CTRL-V results in <SNR>99_Pastegi. - (Georg Dahn) -Solution: When restart_edit is set use "d" instead of "c" to remove the - selected text to avoid calling edit() twice. -Files: src/normal.c - -Patch 6.3.075 -Problem: After unloading another buffer, syntax highlighting in the current - buffer may be wrong when it uses "containedin". (Eric Arnold) -Solution: Use "buf" instead of "curbuf" in syntax_clear(). -Files: src/syntax.c - -Patch 6.3.076 -Problem: Crash when using cscope and there is a parse error (e.g., line too - long). (Alexey I. Froloff) -Solution: Pass the actual number of matches to cs_manage_matches() and - correctly handle the error situation. -Files: src/if_cscope.c - -Patch 6.3.077 (extra) -Problem: VMS: First character input after ESC was not recognized. -Solution: Added TRM$M_TM_TIMED in vms_read(). (Zoltan Arpadffy) -Files: src/os_vms.c - -Patch 6.3.078 (extra, after 6.3.077) -Problem: VMS: Performance issue after patch 6.3.077 -Solution: Add a timeout in the itemlist. (Zoltan Arpadffy) -Files: src/os_vms.c - -Patch 6.3.079 -Problem: Crash when executing a command in the command line window while - syntax highlighting is enabled. (Pero Brbora) -Solution: Don't use a pointer to a buffer that has been deleted. -Files: src/syntax.c - -Patch 6.3.080 (extra) -Problem: Win32: With 'encoding' set to utf-8 while the current codepage is - Chinese editing a file with some specific characters in the name - fails. -Solution: Use _wfullpath() instead of _fullpath() when necessary. -Files: src/os_mswin.c - -Patch 6.3.081 -Problem: Unix: glob() may execute a shell command when it's not wanted. - (Georgi Guninski) -Solution: Verify the sandbox flag is not set. -Files: src/os_unix.c - -Patch 6.3.082 (after 6.3.081) -Problem: Unix: expand() may execute a shell command when it's not wanted. - (Georgi Guninski) -Solution: A more generic solution than 6.3.081. -Files: src/os_unix.c - -Patch 6.3.083 -Problem: VMS: The vt320 termcap entry is incomplete. -Solution: Add missing function keys. (Zoltan Arpadffy) -Files: src/term.c - -Patch 6.3.084 (extra) -Problem: Cygwin: compiling with DEBUG doesn't work. Perl path was ignored. - Failure when $(OUTDIR) already exists. "po" makefile is missing. -Solution: Use changes tested in Vim 7. (Tony Mechelynck) -Files: src/Make_cyg.mak, src/po/Make_cyg.mak - -Patch 6.3.085 -Problem: Crash in syntax highlighting code. (Marc Espie) -Solution: Prevent current_col going past the end of the line. -Files: src/syntax.c - -Patch 6.3.086 (extra) -Problem: Can't produce message translation file with msgfmt that checks - printf strings. -Solution: Fix the Russian translation. -Files: src/po/ru.po, src/po/ru.cp1251.po - -Patch 6.3.087 -Problem: MS-DOS: Crash. (Jason Hood) -Solution: Don't call fname_case() with a NULL pointer. -Files: src/ex_cmds.c - -Patch 6.3.088 -Problem: Editing ".in" causes error E218. (Stefan Karlsson) -Solution: Require some characters before ".in". Same for ".orig" and others. -Files: runtime/filetype.vim - -Patch 6.3.089 -Problem: A session file doesn't work when created while the current - directory contains a space or the directory of the session files - contains a space. (Paolo Giarrusso) -Solution: Escape spaces with a backslash. -Files: src/ex_docmd.c - -Patch 6.3.090 -Problem: A very big value for 'columns' or 'lines' may cause a crash. -Solution: Limit the values to 10000 and 1000. -Files: src/option.c - -Patch 6.4a.001 -Problem: The Unix Makefile contained too many dependencies and a few - uncommented lines. -Solution: Run "make depend" with manual changes to avoid a gcc - incompatibility. Comment a few lines. -Files: src/Makefile - -Patch 6.4b.001 -Problem: Vim reports "Vim 6.4a" in the ":version" output. -Solution: Change "a" to "b". (Tony Mechelynck) -Files: src/version.h - -Patch 6.4b.002 -Problem: In Insert mode, pasting a multi-byte character after the end of - the line leaves the cursor just before that character. -Solution: Make sure "gP" leaves the cursor in the right place when - 'virtualedit' is set. -Files: src/ops.c - -Patch 6.4b.003 (after 6.4b.002) -Problem: The problem still exists when 'encoding' is set to "cp936". -Solution: Fix the problem in getvvcol(), compute the coladd field correctly. -Files: src/charset.c, src/ops.c - -Patch 6.4b.004 -Problem: Selecting a {} block with "viB" includes the '}' when there is an - empty line before it. -Solution: Don't advance the cursor to include a line break when it's already - at the line break. -Files: src/search.c - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/version7.txt b/share/vim/vim73/doc/version7.txt deleted file mode 100644 index 1d559f7c..00000000 --- a/share/vim/vim73/doc/version7.txt +++ /dev/null @@ -1,10154 +0,0 @@ -*version7.txt* For Vim version 7.3. Last change: 2010 Aug 15 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - *vim7* *version-7.0* *version7.0* -Welcome to Vim 7! A large number of features has been added. This file -mentions all the new items, changes to existing features and bug fixes -since Vim 6.x. Use this command to see the version you are using: > - :version - -See |vi_diff.txt| for an overview of differences between Vi and Vim 7.0. -See |version4.txt| for differences between Vim 3.x and Vim 4.x. -See |version5.txt| for differences between Vim 4.x and Vim 5.x. -See |version6.txt| for differences between Vim 5.x and Vim 6.x. - -INCOMPATIBLE CHANGES |incompatible-7| - -NEW FEATURES |new-7| - -Vim script enhancements |new-vim-script| -Spell checking |new-spell| -Omni completion |new-omni-completion| -MzScheme interface |new-MzScheme| -Printing multi-byte text |new-print-multi-byte| -Tab pages |new-tab-pages| -Undo branches |new-undo-branches| -Extended Unicode support |new-more-unicode| -More highlighting |new-more-highlighting| -Translated manual pages |new-manpage-trans| -Internal grep |new-vimgrep| -Scroll back in messages |new-scroll-back| -Cursor past end of the line |new-onemore| -POSIX compatibility |new-posix| -Debugger support |new-debug-support| -Remote file explorer |new-netrw-explore| -Define an operator |new-define-operator| -Mapping to an expression |new-map-expression| -Visual and Select mode mappings |new-map-select| -Location list |new-location-list| -Various new items |new-items-7| - -IMPROVEMENTS |improvements-7| - -COMPILE TIME CHANGES |compile-changes-7| - -BUG FIXES |bug-fixes-7| - -VERSION 7.1 |version-7.1| -Changed |changed-7.1| -Added |added-7.1| -Fixed |fixed-7.1| - -VERSION 7.2 |version-7.2| -Changed |changed-7.2| -Added |added-7.2| -Fixed |fixed-7.2| - -VERSION 7.3 |version-7.3| - -Persistent undo |new-persistent-undo| -More encryption |new-more-encryption| -Conceal text |new-conceal| -Lua interface |new-lua| -Python3 interface |new-python3| - -Changed |changed-7.3| -Added |added-7.3| -Fixed |fixed-7.3| - -============================================================================== -INCOMPATIBLE CHANGES *incompatible-7* - -These changes are incompatible with previous releases. Check this list if you -run into a problem when upgrading from Vim 6.x to 7.0. - -A ":write file" command no longer resets the 'modified' flag of the buffer, -unless the '+' flag is in 'cpoptions' |cpo-+|. This was illogical, since the -buffer is still modified compared to the original file. And when undoing -all changes the file would actually be marked modified. It does mean that -":quit" fails now. - -":helpgrep" now uses a help window to display a match. - -In an argument list double quotes could be used to include spaces in a file -name. This caused a difference between ":edit" and ":next" for escaping -double quotes and it is incompatible with some versions of Vi. - Command Vim 6.x file name Vim 7.x file name ~ - :edit foo\"888 foo"888 foo"888 - :next foo\"888 foo888 foo"888 - :next a\"b c\"d ab cd a"b and c"d - -In a |literal-string| a single quote can be doubled to get one. -":echo 'a''b'" would result in "a b", but now that two quotes stand for one it -results in "a'b". - -When overwriting a file with ":w! fname" there was no warning for when "fname" -was being edited by another Vim. Vim now gives an error message |E768|. - -The support for Mac OS 9 has been removed. - -Files ending in .tex now have 'filetype' set to "context", "plaintex", or -"tex". |ft-tex-plugin| - - -Minor incompatibilities: - -For filetype detection: For many types, use */.dir/filename instead of -~/.dir/filename, so that it also works for other user's files. - -For quite a few filetypes the indent settings have been moved from the -filetype plugin to the indent plugin. If you used: > - :filetype plugin on -Then some indent settings may be missing. You need to use: > - :filetype plugin indent on - -":0verbose" now sets 'verbose' to zero instead of one. - -Removed the old and incomplete "VimBuddy" code. - -Buffers without a name report "No Name" instead of "No File". It was -confusing for buffers with a name and 'buftype' set to "nofile". - -When ":file xxx" is used in a buffer without a name, the alternate file name -isn't set. This avoids creating buffers without a name, they are not useful. - -The "2html.vim" script now converts closed folds to HTML. This means the HTML -looks like it's displayed, with the same folds open and closed. Use "zR", or -"let html_ignore_folding=1", if no folds should appear in the HTML. (partly by -Carl Osterwisch) -Diff mode is now also converted to HTML as it is displayed. - -Win32: The effect of the <F10> key depended on 'winaltkeys'. Now it depends -on whether <F10> has been mapped or not. This allows mapping <F10> without -changing 'winaltkeys'. - -When 'octal' is in 'nrformats' and using CTRL-A on "08" it became "018", which -is illogical. Now it becomes "9". The leading zero(s) is(are) removed to -avoid the number becoming octal after incrementing "009" to "010". - -When 'encoding' is set to a Unicode encoding, the value for 'fileencodings' -now includes "default" before "latin1". This means that for files with 8-bit -encodings the default is to use the encoding specified by the environment, if -possible. Previously latin1 would always be used, which is wrong in a -non-latin1 environment, such as Russian. - -Previously Vim would exit when there are two windows, both of them displaying -a help file, and using ":quit". Now only the window is closed. - -"-w {scriptout}" only works when {scriptout} doesn't start with a digit. -Otherwise it's used to set the 'window' option. - -Previously <Home> and <xHome> could be mapped separately. This had the -disadvantage that all mappings (with modifiers) had to be duplicated, since -you can't be sure what the keyboard generates. Now all <xHome> are internally -translated to <Home>, both for the keys and for mappings. Also for <xEnd>, -<xF1>, etc. - -":put" now leaves the cursor on the last inserted line. - -When a .gvimrc file exists then 'compatible' is off, just like when a ".vimrc" -file exists. - -When making a string upper-case with "vlllU" or similar then the German sharp -s is replaced with "SS". This does not happen with "~" to avoid backwards -compatibility problems and because "SS" can't be changed back to a sharp s. - -"gd" previously found the very first occurrence of a variable in a function, -that could be the function argument without type. Now it finds the position -where the type is given. - -The line continuation in functions was not taken into account, line numbers in -errors were logical lines, not lines in the sourced file. That made it -difficult to locate errors. Now the line number in the sourced file is -reported, relative to the function start. This also means that line numbers -for ":breakadd func" are different. - -When defining a user command with |:command| the special items could be -abbreviated. This caused unexpected behavior, such as <li> being recognized -as <line1>. The items can no longer be abbreviated. - -When executing a FileChangedRO autocommand it is no longer allowed to switch -to another buffer or edit another file. This is to prevent crashes (the event -is triggered deep down in the code where changing buffers is not anticipated). -It is still possible to reload the buffer. - -At the |more-prompt| and the |hit-enter-prompt|, when the 'more' option is -set, the 'k', 'u', 'g' and 'b' keys are now used to scroll back to previous -messages. Thus they are no longer used as typeahead. - -============================================================================== -NEW FEATURES *new-7* - -Vim script enhancements *new-vim-script* ------------------------ - -In Vim scripts the following types have been added: - - |List| ordered list of items - |Dictionary| associative array of items - |Funcref| reference to a function - -Many functions and commands have been added to support the new types. - -The |string()| function can be used to get a string representation of a -variable. Works for Numbers, Strings and composites of them. Then |eval()| -can be used to turn the string back into the variable value. - -The |:let| command can now use "+=", "-=" and ".=": > - :let var += expr " works like :let var = var + expr - :let var -= expr " works like :let var = var - expr - :let var .= string " works like :let var = var . string - -With the |:profile| command you can find out where your function or script -is wasting time. - -In the Python interface vim.eval() also handles Dictionaries and Lists. -|python-eval| (G. Sumner Hayes) - -The |getscript| plugin was added as a convenient way to update scripts from -www.vim.org automatically. (Charles Campbell) - -The |vimball| plugin was added as a convenient way to distribute a set of -files for a plugin (plugin file, autoload script, documentation). (Charles -Campbell) - - -Spell checking *new-spell* --------------- - -Spell checking has been integrated in Vim. There were a few implementations -with scripts, but they were slow and/or required an external program. - -The 'spell' option is used to switch spell checking on or off -The 'spelllang' option is used to specify the accepted language(s) -The 'spellfile' option specifies where new words are added -The 'spellsuggest' option specifies the methods used for making suggestions - -The |]s| and |[s| commands can be used to move to the next or previous error -The |zg| and |zw| commands can be used to add good and wrong words -The |z=| command can be used to list suggestions and correct the word -The |:mkspell| command is used to generate a Vim spell file from word lists - -The "undercurl" highlighting attribute was added to nicely point out spelling -mistakes in the GUI (based on patch from Marcin Dalecki). -The "guisp" color can be used to give it a color different from foreground and -background. -The number of possible different highlight attributes was raised from about -220 to over 30000. This allows for the attributes of spelling to be combined -with syntax highlighting attributes. This is also used for syntax -highlighting and marking the Visual area. - -Much more info here: |spell|. - - -Omni completion *new-omni-completion* ---------------- - -This could also be called "intellisense", but that is a trademark. It is a -smart kind of completion. The text in front of the cursor is inspected to -figure out what could be following. This may suggest struct and class -members, system functions, etc. - -Use CTRL-X CTRL-O in Insert mode to start the completion. |i_CTRL-X_CTRL-O| - -The 'omnifunc' option is set by filetype plugins to define the function that -figures out the completion. - -Currently supported languages: - C |ft-c-omni| - (X)HTML with CSS |ft-html-omni| - JavaScript |ft-javascript-omni| - PHP |ft-php-omni| - Python - Ruby |ft-ruby-omni| - SQL |ft-sql-omni| - XML |ft-xml-omni| - any language with syntax highlighting |ft-syntax-omni| - -You can add your own omni completion scripts. - -When the 'completeopt' option contains "menu" then matches for Insert mode -completion are displayed in a (rather primitive) popup menu. - - -MzScheme interface *new-MzScheme* ------------------- - -The MzScheme interpreter is supported. |MzScheme| - -The |:mzscheme| command can be used to execute MzScheme commands -The |:mzfile| command can be used to execute an MzScheme script file - -This depends on Vim being compiled with the |+mzscheme| feature. - - -Printing multi-byte text *new-print-multi-byte* ------------------------- - -The |:hardcopy| command now supports printing multi-byte characters when using -PostScript. - -The 'printmbcharset' and 'printmbfont' options are used for this. -Also see |postscript-cjk-printing|. (Mike Williams) - - -Tab pages *new-tab-pages* ---------- - -A tab page is a page with one or more windows with a label (aka tab) at the top. -By clicking on the label you can quickly switch between the tab pages. And -with the keyboard, using the |gt| (Goto Tab) command. This is a convenient -way to work with many windows. - -To start Vim with each file argument in a separate tab page use the |-p| -argument. The maximum number of pages can be set with 'tabpagemax'. - -The line with tab labels is either made with plain text and highlighting or -with a GUI mechanism. The GUI labels look better but are only available on a -few systems. The line can be customized with 'tabline', 'guitablabel' and -'guitabtooltip'. Whether it is displayed is set with 'showtabline'. Whether -to use the GUI labels is set with the "e" flag in 'guioptions'. - -The |:tab| command modifier can be used to have most commands that open a new -window open a new tab page instead. - -The |--remote-tab| argument can be used to edit a file in a new tab page in an -already running Vim server. - -Variables starting with "t:" are local to a tab page. - -More info here: |tabpage| -Most of the GUI stuff was implemented by Yegappan Lakshmanan. - - -Undo branches *new-undo-branches* -------------- - -Previously there was only one line of undo-redo. If, after undoing a number -of changes, a new change was made all the undone changes were lost. This -could lead to accidentally losing work. - -Vim now makes an undo branch in this situation. Thus you can go back to the -text after any change, even if they were undone. So long as you do not run -into 'undolevels', when undo information is freed up to limit the memory used. - -To be able to navigate the undo branches each change is numbered sequentially. -The commands |g-| and |:earlier| go back in time, to older changes. The -commands |g+| and |:later| go forward in time, to newer changes. - -The changes are also timestamped. Use ":earlier 10m" to go to the text as it -was about ten minutes earlier. - -The |:undolist| command can be used to get an idea of which undo branches -exist. The |:undo| command now takes an argument to directly jump to a -specific position in this list. The |changenr()| function can be used to -obtain the change number. - -There is no graphical display of the tree with changes, navigation can be -quite confusing. - - -Extended Unicode support *new-more-unicode* ------------------------- - -Previously only two combining characters were displayed. The limit is now -raised to 6. This can be set with the 'maxcombine' option. The default is -still 2. - -|ga| now shows all combining characters, not just the first two. - -Previously only 16 bit Unicode characters were supported for displaying. Now -the full 32 bit character set can be used. Unless manually disabled at -compile time to save a bit of memory. - -For pattern matching it is now possible to search for individual composing -characters. |patterns-composing| - -The |8g8| command searches for an illegal UTF-8 byte sequence. - - -More highlighting *new-more-highlighting* ------------------ - -Highlighting matching parens: - -When moving the cursor through the text and it is on a paren, then the -matching paren can be highlighted. This uses the new |CursorMoved| -autocommand event. - -This means some commands are executed every time you move the cursor. If this -slows you down too much switch it off with: > - :NoMatchParen - -See |matchparen| for more information. - -The plugin uses the |:match| command. It now supports three match patterns. -The plugin uses the third one. The first one is for the user and the second -one can be used by another plugin. - -Highlighting the cursor line and column: - -The 'cursorline' and 'cursorcolumn' options have been added. These highlight -the screen line and screen column of the cursor. This makes the cursor -position easier to spot. 'cursorcolumn' is also useful to align text. This -may make screen updating quite slow. The CursorColumn and CursorLine -highlight groups allow changing the colors used. |hl-CursorColumn| -|hl-CursorLine| - -The number of possible different highlight attributes was raised from about -220 to over 30000. This allows for the attributes of spelling to be combined -with syntax highlighting attributes. This is also used for syntax -highlighting, marking the Visual area, CursorColumn, etc. - - -Translated manual pages *new-manpage-trans* ------------------------ - -The manual page of Vim and associated programs is now also available in -several other languages. - -French - translated by David Blanchet -Italian - translated by Antonio Colombo -Russian - translated by Vassily Ragosin -Polish - translated by Mikolaj Machowski - -The Unix Makefile installs the Italian manual pages in .../man/it/man1/, -.../man/it.ISO8859-1/man1/ and .../man/it.UTF-8/man1/. There appears to be no -standard for what encoding goes in the "it" directory, the 8-bit encoded file -is used there as a best guess. -Other languages are installed in similar places. -The translated pages are not automatically installed when Vim was configured -with "--disable-nls", but "make install-languages install-tool-languages" will -do it anyway. - - -Internal grep *new-vimgrep* -------------- - -The ":vimgrep" command can be used to search for a pattern in a list of files. -This is like the ":grep" command, but no external program is used. Besides -better portability, handling of different file encodings and using multi-line -patterns, this also allows grepping in compressed and remote files. -|:vimgrep|. - -If you want to use the search results in a script you can use the -|getqflist()| function. - -To grep files in various directories the "**" pattern can be used. It expands -into an arbitrary depth of directories. "**" can be used in all places where -file names are expanded, thus also with |:next| and |:args|. - - -Scroll back in messages *new-scroll-back* ------------------------ - -When displaying messages, at the |more-prompt| and the |hit-enter-prompt|, The -'k', 'u', 'g' and 'b' keys can be used to scroll back to previous messages. -This is especially useful for commands such as ":syntax", ":autocommand" and -":highlight". This is implemented in a generic way thus it works for all -commands and highlighting is kept. Only works when the 'more' option is set. -Previously it only partly worked for ":clist". - -The |g<| command can be used to see the last page of messages after you have -hit <Enter> at the |hit-enter-prompt|. Then you can scroll further back. - - -Cursor past end of the line *new-onemore* ---------------------------- - -When the 'virtualedit' option contains "onemore" the cursor can move just past -the end of the line. As if it's on top of the line break. - -This makes some commands more consistent. Previously the cursor was always -past the end of the line if the line was empty. But it is far from Vi -compatible. It may also break some plugins or Vim scripts. Use with care! - -The patch was provided by Mattias Flodin. - - -POSIX compatibility *new-posix* -------------------- - -The POSIX test suite was used to verify POSIX compatibility. A number of -problems have been fixed to make Vim more POSIX compatible. Some of them -conflict with traditional Vi or expected behavior. The $VIM_POSIX environment -variable can be set to get POSIX compatibility. See |posix|. - -Items that were fixed for both Vi and POSIX compatibility: -- repeating "R" with a count only overwrites text once; added the 'X' flag to - 'cpoptions' |cpo-X| -- a vertical movement command that moves to a non-existing line fails; added - the '-' flag to 'cpoptions' |cpo--| -- when preserving a file and doing ":q!" the file can be recovered; added the - '&' flag to 'cpoptions' |cpo-&| -- The 'window' option is partly implemented. It specifies how much CTRL-F and - CTRL-B scroll when there is one window. The "-w {number}" argument is now - accepted. "-w {scriptout}" only works when {scriptout} doesn't start with a - digit. -- Allow "-c{command}" argument, no space between "-c" and {command}. -- When writing a file with ":w!" don't reset 'readonly' when 'Z' is present in - 'cpoptions'. -- Allow 'l' and '#' flags for ":list", ":print" and ":number". -- Added the '.' flag to 'cpoptions': ":cd" fails when the buffer is modified. -- In Ex mode with an empty buffer ":read file" doesn't keep an empty line - above or below the new lines. -- Remove a backslash before a NL for the ":global" command. -- When ":append", ":insert" or ":change" is used with ":global", get the - inserted lines from the command. Can use backslash-NL to separate lines. -- Can use ":global /pat/ visual" to execute Normal mode commands at each - matched line. Use "Q" to continue and go to the next line. -- The |:open| command has been partially implemented. It stops Ex mode, but - redraws the whole screen, not just one line as open mode is supposed to do. -- Support using a pipe to read the output from and write input to an external - command. Added the 'shelltemp' option and has("filterpipe"). -- In ex silent mode the ":set" command output is displayed. -- The ":@@" and ":**" give an error message when no register was used before. -- The search pattern "[]-`]" matches ']', '^', '_' and '`'. -- Autoindent for ":insert" is using the line below the insert. -- Autoindent for ":change" is using the first changed line. -- Editing Ex command lines is not done in cooked mode, because CTRL-D and - CTRL-T cannot be handled then. -- In Ex mode, "1,3" prints three lines. "%" prints all lines. -- In Ex mode "undo" would undo all changes since Ex mode was started. -- Implemented the 'prompt' option. - - -Debugger support *new-debug-support* ----------------- - -The 'balloonexpr' option has been added. This is a generic way to implement -balloon functionality. You can use it to show info for the word under the -mouse pointer. - - -Remote file explorer *new-netrw-explore* --------------------- - -The netrw plugin now also supports viewing a directory, when "scp://" is used. -Deleting and renaming files is possible. - -To avoid duplicating a lot of code, the previous file explorer plugin has been -integrated in the netrw plugin. This means browsing local and remote files -works the same way. - -":browse edit" and ":browse split" use the netrw plugin when it's available -and a GUI dialog is not possible. - -The netrw plugin is maintained by Charles Campbell. - - -Define an operator *new-define-operator* ------------------- - -Previously it was not possible to define your own operator; a command that is -followed by a {motion}. Vim 7 introduces the 'operatorfunc' option and the -|g@| operator. This makes it possible to define a mapping that works like an -operator. The actual work is then done by a function, which is invoked -through the |g@| operator. - -See |:map-operator| for the explanation and an example. - - -Mapping to an expression *new-map-expression* ------------------------- - -The {rhs} argument of a mapping can be an expression. That means the -resulting characters can depend on the context. Example: > - :inoremap <expr> . InsertDot() -Here the dot will be mapped to whatever InsertDot() returns. - -This also works for abbreviations. See |:map-<expr>| for the details. - - -Visual and Select mode mappings *new-map-select* -------------------------------- - -Previously Visual mode mappings applied both to Visual and Select mode. With -a trick to have the mappings work in Select mode like they would in Visual -mode. - -Commands have been added to define mappings for Visual and Select mode -separately: |:xmap| and |:smap|. With the associated "noremap" and "unmap" -commands. - -The same is done for menus: |:xmenu|, |:smenu|, etc. - - -Location list *new-location-list* -------------- - -The support for a per-window quickfix list (location list) is added. The -location list can be displayed in a location window (similar to the quickfix -window). You can open more than one location list window. A set of commands -similar to the quickfix commands are added to browse the location list. -(Yegappan Lakshmanan) - - -Various new items *new-items-7* ------------------ - -Normal mode commands: ~ - -a", a' and a` New text objects to select quoted strings. |a'| -i", i' and i` (Taro Muraoka) - -CTRL-W <Enter> In the quickfix window: opens a new window to show the - location of the error under the cursor. - -|at| and |it| text objects select a block of text between HTML or XML tags. - -<A-LeftMouse> ('mousemodel' "popup" or "popup-setpos") -<A-RightMouse> ('mousemodel' "extend") - Make a blockwise selection. |<A-LeftMouse>| - -gF Start editing the filename under the cursor and jump - to the line number following the file name. - (Yegappan Lakshmanan) - -CTRL-W F Start editing the filename under the cursor in a new - window and jump to the line number following the file - name. (Yegappan Lakshmanan) - -Insert mode commands: ~ - -CTRL-\ CTRL-O Execute a Normal mode command. Like CTRL-O but - without moving the cursor. |i_CTRL-\_CTRL-O| - -Options: ~ - -'balloonexpr' expression for text to show in evaluation balloon -'completefunc' The name of the function used for user-specified - Insert mode completion. CTRL-X CTRL-U can be used in - Insert mode to do any kind of completion. (Taro - Muraoka) -'completeopt' Enable popup menu and other settings for Insert mode - completion. -'cursorcolumn' highlight column of the cursor -'cursorline' highlight line of the cursor -'formatexpr' expression for formatting text with |gq| and when text - goes over 'textwidth' in Insert mode. -'formatlistpat' pattern to recognize a numbered list for formatting. - (idea by Hugo Haas) -'fsync' Whether fsync() is called after writing a file. - (Ciaran McCreesh) -'guitablabel' expression for text to display in GUI tab page label -'guitabtooltip' expression for text to display in GUI tab page tooltip -'macatsui' Mac: use ATSUI text display functions -'maxcombine' maximum number of combining characters displayed -'maxmempattern' maximum amount of memory to use for pattern matching -'mkspellmem' parameters for |:mkspell| memory use -'mzquantum' Time in msec to schedule MzScheme threads. -'numberwidth' Minimal width of the space used for the 'number' and - 'relativenumber' option. (Emmanuel Renieris) -'omnifunc' The name of the function used for omni completion. -'operatorfunc' function to be called for |g@| operator -'printmbcharset' CJK character set to be used for :hardcopy -'printmbfont' font names to be used for CJK output of :hardcopy -'pumheight' maximum number of items to show in the popup menu -'quoteescape' Characters used to escape quotes inside a string. - Used for the a", a' and a` text objects. |a'| -'shelltemp' whether to use a temp file or pipes for shell commands -'showtabline' whether to show the tab pages line -'spell' switch spell checking on/off -'spellcapcheck' pattern to locate the end of a sentence -'spellfile' file where good and wrong words are added -'spelllang' languages to check spelling for -'spellsuggest' methods for spell suggestions -'synmaxcol' maximum column to look for syntax items; avoids very - slow redrawing when there are very long lines -'tabline' expression for text to display in the tab pages line -'tabpagemax' maximum number of tab pages to open for |-p| -'verbosefile' Log messages in a file. -'wildoptions' "tagfile" value enables listing the file name of - matching tags for CTRL-D command line completion. - (based on an idea from Yegappan Lakshmanan) -'winfixwidth' window with fixed width, similar to 'winfixheight' - - -Ex commands: ~ - -Win32: The ":winpos" command now also works in the console. (Vipin Aravind) - -|:startreplace| Start Replace mode. (Charles Campbell) -|:startgreplace| Start Virtual Replace mode. - -|:0file| Removes the name of the buffer. (Charles Campbell) - -|:diffoff| Switch off diff mode in the current window or in all - windows. - -|:delmarks| Delete marks. - -|:exusage| Help for Ex commands (Nvi command). -|:viusage| Help for Vi commands (Nvi command). - -|:sort| Sort lines in the buffer without depending on an - external command. (partly by Bryce Wagner) - -|:vimgrep| Internal grep command, search for a pattern in files. -|:vimgrepadd| Like |:vimgrep| but don't make a new list. - -|:caddfile| Add error messages to an existing quickfix list - (Yegappan Lakshmanan). -|:cbuffer| Read error lines from a buffer. (partly by Yegappan - Lakshmanan) -|:cgetbuffer| Create a quickfix list from a buffer but don't jump to - the first error. -|:caddbuffer| Add errors from the current buffer to the quickfix - list. -|:cexpr| Read error messages from a Vim expression (Yegappan - Lakshmanan). -|:caddexpr| Add error messages from a Vim expression to an - existing quickfix list. (Yegappan Lakshmanan). -|:cgetexpr| Create a quickfix list from a Vim expression, but - don't jump to the first error. (Yegappan Lakshmanan). - -|:lfile| Like |:cfile| but use the location list. -|:lgetfile| Like |:cgetfile| but use the location list. -|:laddfile| Like |:caddfile| but use the location list. -|:lbuffer| Like |:cbuffer| but use the location list. -|:lgetbuffer| Like |:cgetbuffer| but use the location list. -|:laddbuffer| Like |:caddbuffer| but use the location list. -|:lexpr| Like |:cexpr| but use the location list. -|:lgetexpr| Like |:cgetexpr| but use the location list. -|:laddexpr| Like |:caddexpr| but use the location list. -|:ll| Like |:cc| but use the location list. -|:llist| Like |:clist| but use the location list. -|:lnext| Like |:cnext| but use the location list. -|:lprevious| Like |:cprevious| but use the location list. -|:lNext| Like |:cNext| but use the location list. -|:lfirst| Like |:cfirst| but use the location list. -|:lrewind| Like |:crewind| but use the location list. -|:llast| Like |:clast| but use the location list. -|:lnfile| Like |:cnfile| but use the location list. -|:lpfile| Like |:cpfile| but use the location list. -|:lNfile| Like |:cNfile| but use the location list. -|:lolder| Like |:colder| but use the location list. -|:lnewer| Like |:cnewer| but use the location list. -|:lwindow| Like |:cwindow| but use the location list. -|:lopen| Like |:copen| but use the location list. -|:lclose| Like |:cclose| but use the location list. -|:lmake| Like |:make| but use the location list. -|:lgrep| Like |:grep| but use the location list. -|:lgrepadd| Like |:grepadd| but use the location list. -|:lvimgrep| Like |:vimgrep| but use the location list. -|:lvimgrepadd| Like |:vimgrepadd| but use the location list. -|:lhelpgrep| Like |:helpgrep| but use the location list. -|:lcscope| Like |:cscope| but use the location list. -|:ltag| Jump to a tag and add matching tags to a location list. - -|:undojoin| Join a change with the previous undo block. -|:undolist| List the leafs of the undo tree. - -|:earlier| Go back in time for changes in the text. -|:later| Go forward in time for changes in the text. - -|:for| Loop over a |List|. -|:endfor| - -|:lockvar| Lock a variable, prevents it from being changed. -|:unlockvar| Unlock a locked variable. - -|:mkspell| Create a Vim spell file. -|:spellgood| Add a word to the list of good words. -|:spellwrong| Add a word to the list of bad words -|:spelldump| Dump list of good words. -|:spellinfo| Show information about the spell files used. -|:spellrepall| Repeat a spelling correction for the whole buffer. -|:spellundo| Remove a word from list of good and bad words. - -|:mzscheme| Execute MzScheme commands. -|:mzfile| Execute an MzScheme script file. - -|:nbkey| Pass a key to NetBeans for processing. - -|:profile| Commands for Vim script profiling. -|:profdel| Stop profiling for specified items. - -|:smap| Select mode mapping. -|:smapclear| -|:snoremap| -|:sunmap| - -|:xmap| Visual mode mapping, not used for Select mode. -|:xmapclear| -|:xnoremap| -|:xunmap| - -|:smenu| Select mode menu. -|:snoremenu| -|:sunmenu| - -|:xmenu| Visual mode menu, not used for Select mode. -|:xnoremenu| -|:xunmenu| - -|:tabclose| Close the current tab page. -|:tabdo| Perform a command in every tab page. -|:tabedit| Edit a file in a new tab page. -|:tabnew| Open a new tab page. -|:tabfind| Search for a file and open it in a new tab page. -|:tabnext| Go to the next tab page. -|:tabprevious| Go to the previous tab page. -|:tabNext| Go to the previous tab page. -|:tabfirst| Go to the first tab page. -|:tabrewind| Go to the first tab page. -|:tablast| Go to the last tab page. -|:tabmove| Move the current tab page elsewhere. -|:tabonly| Close all other tab pages. -|:tabs| List the tab pages and the windows they contain. - -Ex command modifiers: ~ - -|:keepalt| Do not change the alternate file. - -|:noautocmd| Do not trigger autocommand events. - -|:sandbox| Execute a command in the sandbox. - -|:tab| When opening a new window create a new tab page. - - -Ex command arguments: ~ - -|++bad| Specify what happens with characters that can't be - converted and illegal bytes. (code example by Yasuhiro - Matsumoto) - Also, when a conversion error occurs or illegal bytes - are found include the line number in the error - message. - - -New and extended functions: ~ - -|add()| append an item to a List -|append()| append List of lines to the buffer -|argv()| without an argument return the whole argument list -|browsedir()| dialog to select a directory -|bufnr()| takes an extra argument: create buffer -|byteidx()| index of a character (Ilya Sher) -|call()| call a function with List as arguments -|changenr()| number of current change -|complete()| set matches for Insert mode completion -|complete_add()| add match for 'completefunc' -|complete_check()| check for key pressed, for 'completefunc' -|copy()| make a shallow copy of a List or Dictionary -|count()| count nr of times a value is in a List or Dictionary -|cursor()| also accepts an offset for 'virtualedit', and - the first argument can be a list: [lnum, col, off] -|deepcopy()| make a full copy of a List or Dictionary -|diff_filler()| returns number of filler lines above line {lnum}. -|diff_hlID()| returns the highlight ID for diff mode -|empty()| check if List or Dictionary is empty -|eval()| evaluate {string} and return the result -|extend()| append one List to another or add items from one - Dictionary to another -|feedkeys()| put characters in the typeahead buffer -|filter()| remove selected items from a List or Dictionary -|finddir()| find a directory in 'path' -|findfile()| find a file in 'path' (Johannes Zellner) -|foldtextresult()| the text displayed for a closed fold at line "lnum" -|function()| make a Funcref out of a function name -|garbagecollect()| cleanup unused |Lists| and |Dictionaries| with circular - references -|get()| get an item from a List or Dictionary -|getbufline()| get a list of lines from a specified buffer - (Yegappan Lakshmanan) -|getcmdtype()| return the current command-line type - (Yegappan Lakshmanan) -|getfontname()| get actual font name being used -|getfperm()| get file permission string (Nikolai Weibull) -|getftype()| get type of file (Nikolai Weibull) -|getline()| with second argument: get List with buffer lines -|getloclist()| list of location list items (Yegappan Lakshmanan) -|getpos()| return a list with the position of cursor, mark, etc. -|getqflist()| list of quickfix errors (Yegappan Lakshmanan) -|getreg()| get contents of a register -|gettabwinvar()| get variable from window in specified tab page. -|has_key()| check whether a key appears in a Dictionary -|haslocaldir()| check if current window used |:lcd| -|hasmapto()| check for a mapping to a string -|index()| index of item in List -|inputlist()| prompt the user to make a selection from a list -|insert()| insert an item somewhere in a List -|islocked()| check if a variable is locked -|items()| get List of Dictionary key-value pairs -|join()| join List items into a String -|keys()| get List of Dictionary keys -|len()| number of items in a List or Dictionary -|map()| change each List or Dictionary item -|maparg()| extra argument: use abbreviation -|mapcheck()| extra argument: use abbreviation -|match()| extra argument: count -|matcharg()| return arguments of |:match| command -|matchend()| extra argument: count -|matchlist()| list with match and submatches of a pattern in a string -|matchstr()| extra argument: count -|max()| maximum value in a List or Dictionary -|min()| minimum value in a List or Dictionary -|mkdir()| create a directory -|pathshorten()| reduce directory names to a single character -|printf()| format text -|pumvisible()| check whether the popup menu is displayed -|range()| generate a List with numbers -|readfile()| read a file into a list of lines -|reltime()| get time value, possibly relative -|reltimestr()| turn a time value into a string -|remove()| remove one or more items from a List or Dictionary -|repeat()| repeat "expr" "count" times (Christophe Poucet) -|reverse()| reverse the order of a List -|search()| extra argument: -|searchdecl()| search for declaration of variable -|searchpair()| extra argument: line to stop searching -|searchpairpos()| return a List with the position of the match -|searchpos()| return a List with the position of the match -|setloclist()| modify a location list (Yegappan Lakshmanan) -|setpos()| set cursor or mark to a position -|setqflist()| modify a quickfix list (Yegappan Lakshmanan) -|settabwinvar()| set variable in window of specified tab page -|sort()| sort a List -|soundfold()| get the sound-a-like equivalent of a word -|spellbadword()| get a badly spelled word -|spellsuggest()| get suggestions for correct spelling -|split()| split a String into a List -|str2nr()| convert a string to a number, base 8, 10 or 16 -|stridx()| extra argument: start position -|strridx()| extra argument: start position -|string()| string representation of a List or Dictionary -|system()| extra argument: filters {input} through a shell command -|tabpagebuflist()| List of buffers in a tab page -|tabpagenr()| number of current or last tab page -|tabpagewinnr()| window number in a tab page -|tagfiles()| List with tags file names -|taglist()| get list of matching tags (Yegappan Lakshmanan) -|tr()| translate characters (Ron Aaron) -|values()| get List of Dictionary values -|winnr()| takes an argument: what window to use -|winrestview()| restore the view of the current window -|winsaveview()| save the view of the current window -|writefile()| write a list of lines into a file - -User defined functions can now be loaded automatically from the "autoload" -directory in 'runtimepath'. See |autoload-functions|. - - -New Vim variables: ~ - -|v:insertmode| used for |InsertEnter| and |InsertChange| autocommands -|v:val| item value in a |map()| or |filter()| function -|v:key| item key in a |map()| or |filter()| function -|v:profiling| non-zero after a ":profile start" command -|v:fcs_reason| the reason why |FileChangedShell| was triggered -|v:fcs_choice| what should happen after |FileChangedShell| -|v:beval_bufnr| buffer number for 'balloonexpr' -|v:beval_winnr| window number for 'balloonexpr' -|v:beval_lnum| line number for 'balloonexpr' -|v:beval_col| column number for 'balloonexpr' -|v:beval_text| text under the mouse pointer for 'balloonexpr' -|v:scrollstart| what caused the screen to be scrolled up -|v:swapname| name of the swap file for the |SwapExists| event -|v:swapchoice| what to do for an existing swap file -|v:swapcommand| command to be executed after handling |SwapExists| -|v:char| argument for evaluating 'formatexpr' - - -New autocommand events: ~ - -|ColorScheme| after loading a color scheme - -|CursorHoldI| the user doesn't press a key for a while in Insert mode -|CursorMoved| the cursor was moved in Normal mode -|CursorMovedI| the cursor was moved in Insert mode - -|FileChangedShellPost| after handling a file changed outside of Vim - -|InsertEnter| starting Insert or Replace mode -|InsertChange| going from Insert to Replace mode or back -|InsertLeave| leaving Insert or Replace mode - -|MenuPopup| just before showing popup menu - -|QuickFixCmdPre| before :make, :grep et al. (Ciaran McCreesh) -|QuickFixCmdPost| after :make, :grep et al. (Ciaran McCreesh) - -|SessionLoadPost| after loading a session file. (Yegappan Lakshmanan) - -|ShellCmdPost| after executing a shell command -|ShellFilterPost| after filtering with a shell command - -|SourcePre| before sourcing a Vim script - -|SpellFileMissing| when a spell file can't be found - -|SwapExists| found existing swap file when editing a file - -|TabEnter| just after entering a tab page -|TabLeave| just before leaving a tab page - -|VimResized| after the Vim window size changed (Yakov Lerner) - - -New highlight groups: ~ - -Pmenu Popup menu: normal item |hl-Pmenu| -PmenuSel Popup menu: selected item |hl-PmenuSel| -PmenuThumb Popup menu: scrollbar |hl-PmenuThumb| -PmenuSbar Popup menu: Thumb of the scrollbar |hl-PmenuSbar| - -TabLine tab pages line, inactive label |hl-TabLine| -TabLineSel tab pages line, selected label |hl-TabLineSel| -TabLineFill tab pages line, filler |hl-TabLineFill| - -SpellBad badly spelled word |hl-SpellBad| -SpellCap word with wrong caps |hl-SpellCap| -SpellRare rare word |hl-SpellRare| -SpellLocal word only exists in other region |hl-SpellLocal| - -CursorColumn 'cursorcolumn' |hl-CursorColumn| -CursorLine 'cursorline' |hl-CursorLine| - -MatchParen matching parens |pi_paren.txt| |hl-MatchParen| - - -New items in search patterns: ~ -|/\%d| \%d123 search for character with decimal number -|/\]| [\d123] idem, in a collection -|/\%o| \%o103 search for character with octal number -|/\]| [\o1o3] idem, in a collection -|/\%x| \%x1a search for character with 2 pos. hex number -|/\]| [\x1a] idem, in a collection -|/\%u| \%u12ab search for character with 4 pos. hex number -|/\]| [\u12ab] idem, in a collection -|/\%U| \%U1234abcd search for character with 8 pos. hex number -|/\]| [\U1234abcd] idem, in a collection - (The above partly by Ciaran McCreesh) - -|/[[=| [[=a=]] an equivalence class (only for latin1 characters) -|/[[.| [[.a.]] a collation element (only works with single char) - -|/\%'m| \%'m match at mark m -|/\%<'m| \%<'m match before mark m -|/\%>'m| \%>'m match after mark m -|/\%V| \%V match in Visual area - -Nesting |/multi| items no longer is an error when an empty match is possible. - -It is now possible to use \{0}, it matches the preceding atom zero times. Not -useful, just for compatibility. - - -New Syntax/Indent/FTplugin files: ~ - -Moved all the indent settings from the filetype plugin to the indent file. -Implemented b:undo_indent to undo indent settings when setting 'filetype' to a -different value. - -a2ps syntax and ftplugin file. (Nikolai Weibull) -ABAB/4 syntax file. (Marius van Wyk) -alsaconf ftplugin file. (Nikolai Weibull) -AppendMatchGroup ftplugin file. (Dave Silvia) -arch ftplugin file. (Nikolai Weibull) -asterisk and asteriskvm syntax file. (Tilghman Lesher) -BDF ftplugin file. (Nikolai Weibull) -BibTeX indent file. (Dorai Sitaram) -BibTeX Bibliography Style syntax file. (Tim Pope) -BTM ftplugin file. (Bram Moolenaar) -calendar ftplugin file. (Nikolai Weibull) -Changelog indent file. (Nikolai Weibull) -ChordPro syntax file. (Niels Bo Andersen) -Cmake indent and syntax file. (Andy Cedilnik) -conf ftplugin file. (Nikolai Weibull) -context syntax and ftplugin file. (Nikolai Weibull) -CRM114 ftplugin file. (Nikolai Weibull) -cvs RC ftplugin file. (Nikolai Weibull) -D indent file. (Jason Mills) -Debian Sources.list syntax file. (Matthijs Mohlmann) -dictconf and dictdconf syntax, indent and ftplugin files. (Nikolai Weibull) -diff ftplugin file. (Bram Moolenaar) -dircolors ftplugin file. (Nikolai Weibull) -django and htmldjango syntax file. (Dave Hodder) -doxygen syntax file. (Michael Geddes) -elinks ftplugin file. (Nikolai Weibull) -eterm ftplugin file. (Nikolai Weibull) -eviews syntax file. (Vaidotas Zemlys) -fetchmail RC ftplugin file. (Nikolai Weibull) -FlexWiki syntax and ftplugin file. (George Reilly) -Generic indent file. (Dave Silvia) -gpg ftplugin file. (Nikolai Weibull) -gretl syntax file. (Vaidotas Zemlys) -groovy syntax file. (Alessio Pace) -group syntax and ftplugin file. (Nikolai Weibull) -grub ftplugin file. (Nikolai Weibull) -Haskell ftplugin file. (Nikolai Weibull) -help ftplugin file. (Nikolai Weibull) -indent ftplugin file. (Nikolai Weibull) -Javascript ftplugin file. (Bram Moolenaar) -Kconfig ftplugin and syntax file. (Nikolai Weibull) -ld syntax, indent and ftplugin file. (Nikolai Weibull) -lftp ftplugin file. (Nikolai Weibull) -libao config ftplugin file. (Nikolai Weibull) -limits syntax and ftplugin file. (Nikolai Weibull) -Lisp indent file. (Sergey Khorev) -loginaccess and logindefs syntax and ftplugin file. (Nikolai Weibull) -m4 ftplugin file. (Nikolai Weibull) -mailaliases syntax file. (Nikolai Weibull) -mailcap ftplugin file. (Nikolai Weibull) -manconf syntax and ftplugin file. (Nikolai Weibull) -matlab ftplugin file. (Jake Wasserman) -Maxima syntax file. (Robert Dodier) -MGL syntax file. (Gero Kuhlmann) -modconf ftplugin file. (Nikolai Weibull) -mplayer config ftplugin file. (Nikolai Weibull) -Mrxvtrc syntax and ftplugin file. (Gautam Iyer) -MuPAD source syntax, indent and ftplugin. (Dave Silvia) -mutt RC ftplugin file. (Nikolai Weibull) -nanorc syntax and ftplugin file. (Nikolai Weibull) -netrc ftplugin file. (Nikolai Weibull) -pamconf syntax and ftplugin file. (Nikolai Weibull) -Pascal indent file. (Neil Carter) -passwd syntax and ftplugin file. (Nikolai Weibull) -PHP compiler plugin. (Doug Kearns) -pinfo ftplugin file. (Nikolai Weibull) -plaintex syntax and ftplugin files. (Nikolai Weibull, Benji Fisher) -procmail ftplugin file. (Nikolai Weibull) -prolog ftplugin file. (Nikolai Weibull) -protocols syntax and ftplugin file. (Nikolai Weibull) -quake ftplugin file. (Nikolai Weibull) -racc syntax and ftplugin file. (Nikolai Weibull) -readline ftplugin file. (Nikolai Weibull) -rhelp syntax file. (Johannes Ranke) -rnoweb syntax file. (Johannes Ranke) -Relax NG compact ftplugin file. (Nikolai Weibull) -Scheme indent file. (Sergey Khorev) -screen ftplugin file. (Nikolai Weibull) -sensors syntax and ftplugin file. (Nikolai Weibull) -services syntax and ftplugin file. (Nikolai Weibull) -setserial syntax and ftplugin file. (Nikolai Weibull) -sieve syntax and ftplugin file. (Nikolai Weibull) -SiSU syntax file (Ralph Amissah) -Sive syntax file. (Nikolai Weibull) -slp config, reg and spi syntax and ftplugin files. (Nikolai Weibull) -SML indent file. (Saikat Guha) -SQL anywhere syntax and indent file. (David Fishburn) -SQL indent file. -SQL-Informix syntax file. (Dean L Hill) -SQL: Handling of various variants. (David Fishburn) -sshconfig ftplugin file. (Nikolai Weibull) -Stata and SMCL syntax files. (Jeff Pitblado) -sudoers ftplugin file. (Nikolai Weibull) -sysctl syntax and ftplugin file. (Nikolai Weibull) -terminfo ftplugin file. (Nikolai Weibull) -trustees syntax file. (Nima Talebi) -Vera syntax file. (David Eggum) -udev config, permissions and rules syntax and ftplugin files. (Nikolai Weibull) -updatedb syntax and ftplugin file. (Nikolai Weibull) -VHDL indent file (Gerald Lai) -WSML syntax file. (Thomas Haselwanter) -Xdefaults ftplugin file. (Nikolai Weibull) -XFree86 config ftplugin file. (Nikolai Weibull) -xinetd syntax, indent and ftplugin file. (Nikolai Weibull) -xmodmap ftplugin file. (Nikolai Weibull) -Xquery syntax file. (Jean-Marc Vanel) -xsd (XML schema) indent file. -YAML ftplugin file. (Nikolai Weibull) -Zsh ftplugin file. (Nikolai Weibull) - - -New Keymaps: ~ - -Sinhala (Sri Lanka) (Harshula Jayasuriya) -Tamil in TSCII encoding (Yegappan Lakshmanan) -Greek in cp737 (Panagiotis Louridas) -Polish-slash (HS6_06) -Ukrainian-jcuken (Anatoli Sakhnik) -Kana (Edward L. Fox) - - -New message translations: ~ - -The Ukrainian messages are now also available in cp1251. -Vietnamese message translations and menu. (Phan Vinh Thinh) - - -Others: ~ - -The |:read| command has the |++edit| argument. This means it will use the -detected 'fileformat', 'fileencoding' and other options for the buffer. This -also fixes the problem that editing a compressed file didn't set these -options. - -The Netbeans interface was updated for Sun Studio 10. The protocol number -goes from 2.2 to 2.3. (Gordon Prieur) - -Mac: When starting up Vim will load the $VIMRUNTIME/macmap.vim script to -define default command-key mappings. (mostly by Benji Fisher) - -Mac: Add the selection type to the clipboard, so that Block, line and -character selections can be used between two Vims. (Eckehard Berns) -Also fixes the problem that setting 'clipboard' to "unnamed" breaks using -"yyp". - -Mac: GUI font selector. (Peter Cucka) - -Mac: support for multi-byte characters. (Da Woon Jung) -This doesn't always work properly. If you see text drawing problems try -switching the 'macatsui' option off. - -Mac: Support the xterm mouse in the non-GUI version. - -Mac: better integration with Xcode. Post a fake mouse-up event after the odoc -event and the drag receive handler to work around a stall after Vim loads a -file. Fixed an off-by-one line number error. (Da Woon Jung) - -Mac: When started from Finder change directory to the file being edited or the -user home directory. - -Added the t_SI and t_EI escape sequences for starting and ending Insert mode. -To be used to set the cursor shape to a bar or a block. No default values, -they are not supported by termcap/terminfo. - -GUI font selector for Motif. (Marcin Dalecki) - -Nicer toolbar buttons for Motif. (Marcin Dalecki) - -Mnemonics for the Motif find/replace dialog. (Marcin Dalecki) - -Included a few improvements for Motif from Marcin Dalecki. Draw label -contents ourselves to make them handle fonts in a way configurable by Vim and -a bit less dependent on the X11 font management. - -Autocommands can be defined local to a buffer. This means they will also work -when the buffer does not have a name or no specific name. See -|autocmd-buflocal|. (Yakov Lerner) - -For xterm most combinations of modifiers with function keys are recognized. -|xterm-modifier-keys| - -When 'verbose' is set the output of ":highlight" will show where a highlight -item was last set. -When 'verbose' is set the output of the ":map", ":abbreviate", ":command", -":function" and ":autocmd" commands will show where it was last defined. -(Yegappan Lakshmanan) - -":function /pattern" lists functions matching the pattern. - -"1gd" can be used like "gd" but ignores matches in a {} block that ends before -the cursor position. Likewise for "1gD" and "gD". - -'scrolljump' can be set to a negative number to scroll a percentage of the -window height. - -The |v:scrollstart| variable has been added to help find the location in -your script that causes the hit-enter prompt. - -To make it possible to handle the situation that a file is being edited that -is already being edited by another Vim instance, the |SwapExists| event has -been added. The |v:swapname|, |v:swapchoice| and |v:swapcommand| variables -can be used, for example to use the |client-server| functionality to bring the -other Vim to the foreground. -When starting Vim with a "-t tag" argument, there is an existing swapfile and -the user selects "quit" or "abort" then exit Vim. - -Undo now also restores the '< and '> marks. "gv" selects the same area as -before the change and undo. - -When editing a search pattern for a "/" or "?" command and 'incsearch' is set -CTRL-L can be used to add a character from the current match. CTRL-R CTRL-W -will add a word, but exclude the part of the word that was already typed. - -Ruby interface: add line number methods. (Ryan Paul) - -The $MYVIMRC environment variable is set to the first found vimrc file. -The $MYGVIMRC environment variable is set to the first found gvimrc file. - -============================================================================== -IMPROVEMENTS *improvements-7* - -":helpgrep" accepts a language specifier after the pattern: "pat@it". - -Moved the help for printing to a separate help file. It's quite a lot now. - -When doing completion for ":!cmd", ":r !cmd" or ":w !cmd" executable files are -found in $PATH instead of looking for ordinary files in the current directory. - -When ":silent" is used and a backwards range is given for an Ex command the -range is swapped automatically instead of asking if that is OK. - -The pattern matching code was changed from a recursive function to an -iterative mechanism. This avoids out-of-stack errors. State is stored in -allocated memory, running out of memory can always be detected. Allows -matching more complex things, but Vim may seem to hang while doing that. - -Previously some options were always evaluated in the |sandbox|. Now that only -happens when the option was set from a modeline or in secure mode. Applies to -'balloonexpr', 'foldexpr', 'foldtext' and 'includeexpr'. (Sumner Hayes) - -Some commands and expressions could have nasty side effects, such as using -CTRL-R = while editing a search pattern and the expression invokes a function -that jumps to another window. The |textlock| has been added to prevent this -from happening. - -":breakadd here" and ":breakdel here" can be used to set or delete a -breakpoint at the cursor. - -It is now possible to define a function with: > - :exe "func Test()\n ...\n endfunc" - -The tutor was updated to make it simpler to use and text was added to explain -a few more important commands. Used ideas from Gabriel Zachmann. - -Unix: When libcall() fails obtain an error message with dlerror() and display -it. (Johannes Zellner) - -Mac and Cygwin: When editing an existing file make the file name the same case -of the edited file. Thus when typing ":e os_UNIX.c" the file name becomes -"os_unix.c". - -Added "nbsp" in 'listchars'. (David Blanchet) - -Added the "acwrite" value for the 'buftype' option. This is for a buffer that -does not have a name that refers to a file and is written with BufWriteCmd -autocommands. - -For lisp indenting and matching parenthesis: (Sergey Khorev) -- square brackets are recognized properly -- #\(, #\), #\[ and #\] are recognized as character literals -- Lisp line comments (delimited by semicolon) are recognized - -Added the "count" argument to match(), matchend() and matchstr(). (Ilya Sher) - -winnr() takes an optional "$" or "#" argument. (Nikolai Weibull, Yegappan -Lakshmanan) - -Added 's' flag to search(): set ' mark if cursor moved. (Yegappan Lakshmanan) -Added 'n' flag to search(): don't move the cursor. (Nikolai Weibull) -Added 'c' flag to search(): accept match at the cursor. -Added 'e' flag to search(): move to end of the match. (Benji Fisher) -Added 'p' flag to search(): return number of sub-pattern. (Benji Fisher) -These also apply to searchpos(), searchpair() and searchpairpos(). - -The search() and searchpair() functions have an extra argument to specify -where to stop searching. Speeds up searches that should not continue too far. - -When uncompressing fails in the gzip plugin, give an error message but don't -delete the raw text. Helps if the file has a .gz extension but is not -actually compressed. (Andrew Pimlott) - -When C, C++ or IDL syntax is used, may additionally load doxygen syntax. -(Michael Geddes) - -Support setting 'filetype' and 'syntax' to "aaa.bbb" for "aaa" plus "bbb" -filetype or syntax. - -The ":registers" command now displays multi-byte characters properly. - -VMS: In the usage message mention that a slash can be used to make a flag -upper case. Add color support to the builtin vt320 terminal codes. -(Zoltan Arpadffy) - -For the '%' item in 'viminfo', allow a number to set a maximum for the number -of buffers. - -For recognizing the file type: When a file looks like a shell script, check -for an "exec" command that starts the tcl interpreter. (suggested by Alexios -Zavras) - -Support conversion between utf-8 and latin9 (iso-8859-15) internally, so that -digraphs still work when iconv is not available. - -When a session file is loaded while editing an unnamed, empty buffer that -buffer is wiped out. Avoids that there is an unused buffer in the buffer -list. - -Win32: When libintl.dll supports bind_textdomain_codeset(), use it. -(NAKADAIRA Yukihiro) - -Win32: Vim was not aware of hard links on NTFS file systems. These are -detected now for when 'backupcopy' is "auto". Also fixed a bogus "file has -been changed since reading it" error for links. - -When foldtext() finds no text after removing the comment leader, use the -second line of the fold. Helps for C-style /* */ comments where the first -line is just "/*". - -When editing the same file from two systems (e.g., Unix and MS-Windows) there -mostly was no warning for an existing swap file, because the name of the -edited file differs (e.g., y:\dir\file vs /home/me/dir/file). Added a flag to -the swap file to indicate it is in the same directory as the edited file. The -used path then doesn't matter and the check for editing the same file is much -more reliable. - -Unix: When editing a file through a symlink the swap file would use the name -of the symlink. Now use the name of the actual file, so that editing the same -file twice is detected. (suggestions by Stefano Zacchiroli and James Vega) - -Client-server communication now supports 'encoding'. When setting 'encoding' -in a Vim server to "utf-8", and using "vim --remote fname" in a console, -"fname" is converted from the console encoding to utf-8. Also allows Vims -with different 'encoding' settings to exchange messages. - -Internal: Changed ga_room into ga_maxlen, so that it doesn't need to be -incremented/decremented each time. - -When a register is empty it is not stored in the viminfo file. - -Removed the tcltags script, it's obsolete. - -":redir @*>>" and ":redir @+>>" append to the clipboard. Better check for -invalid characters after the register name. |:redir| - -":redir => variable" and ":redir =>> variable" write or append to a variable. -(Yegappan Lakshmanan) |:redir| - -":redir @{a-z}>>" appends to register a to z. (Yegappan Lakshmanan) - -The 'verbosefile' option can be used to log messages in a file. Verbose -messages are not displayed then. The "-V{filename}" argument can be used to -log startup messages. - -":let g:" lists global variables. -":let b:" lists buffer-local variables. -":let w:" lists window-local variables. -":let v:" lists Vim variables. - -The stridx() and strridx() functions take a third argument, where to start -searching. (Yegappan Lakshmanan) - -The getreg() function takes an extra argument to be able to get the expression -for the '=' register instead of the result of evaluating it. - -The setline() function can take a List argument to set multiple lines. When -the line number is just below the last line the line is appended. - -g CTRL-G also shows the number of characters if it differs from the number of -bytes. - -Completion for ":debug" and entering an expression for the '=' register. Skip -":" between range and command name. (Peter winters) - -CTRL-Q in Insert mode now works like CTRL-V by default. Previously it was -ignored. - -When "beep" is included in 'debug' a function or script that causes a beep -will result in a message with the source of the error. - -When completing buffer names, match with "\(^\|[\/]\)" instead of "^", so that -":buf stor<Tab>" finds both "include/storage.h" and "storage/main.c". - -To count items (pattern matches) without changing the buffer the 'n' flag has -been added to |:substitute|. See |count-items|. - -In a |:substitute| command the \u, \U, \l and \L items now also work for -multi-byte characters. - -The "screen.linux" $TERM name is recognized to set the default for -'background' to "dark". (Ciaran McCreesh) Also for "cygwin" and "putty". - -The |FileChangedShell| autocommand event can now use the |v:fcs_reason| -variable that specifies what triggered the event. |v:fcs_choice| can be used -to reload the buffer or ask the user what to do. - -Not all modifiers were recognized for xterm function keys. Added the -possibility in term codes to end in ";*X" or "O*X", where X is any character -and the * stands for the modifier code. -Added the <xUp>, <xDown>, <xLeft> and <xRight> keys, to be able to recognize -the two forms that xterm can send their codes in and still handle all possible -modifiers. - -getwinvar() now also works to obtain a buffer-local option from the specified -window. - -Added the "%s" item to 'errorformat'. (Yegappan Lakshmanan) -Added the "%>" item to 'errorformat'. - -For 'errorformat' it was not possible to have a file name that contains the -character that follows after "%f". For example, in "%f:%l:%m" the file name -could not contain ":". Now include the first ":" where the rest of the -pattern matches. In the example a ":" not followed by a line number is -included in the file name. (suggested by Emanuele Giaquinta) - -GTK GUI: use the GTK file dialog when it's available. Mix from patches by -Grahame Bowland and Evan Webb. - -Added ":scriptnames" to bugreport.vim, so that we can see what plugins were -used. - -Win32: If the user changes the setting for the number of lines a scroll wheel -click scrolls it is now used immediately. Previously Vim would need to be -restarted. - -When using @= in an expression the value is expression @= contains. ":let @= -= value" can be used to set the register contents. - -A ! can be added to ":popup" to have the popup menu appear at the mouse -pointer position instead of the text cursor. - -The table with encodings has been expanded with many MS-Windows codepages, -such as cp1250 and cp737, so that these can also be used on Unix without -prepending "8bit-". -When an encoding name starts with "microsoft-cp" ignore the "microsoft-" part. - -Added the "customlist" completion argument to a user-defined command. The -user-defined completion function should return the completion candidates as a -Vim List and the returned results are not filtered by Vim. (Yegappan -Lakshmanan) - -Win32: Balloons can have multiple lines if common controls supports it. -(Sergey Khorev) - -For command-line completion the matches for various types of arguments are now -sorted: user commands, variables, syntax names, etc. - -When no locale is set, thus using the "C" locale, Vim will work with latin1 -characters, using its own isupper()/toupper()/etc. functions. - -When using an rxvt terminal emulator guess the value of 'background' using the -COLORFGBG environment variable. (Ciaran McCreesh) - -Also support t_SI and t_EI on Unix with normal features. (Ciaran McCreesh) - -When 'foldcolumn' is one then put as much info in it as possible. This allows -closing a fold with the mouse by clicking on the '-'. - -input() takes an optional completion argument to specify the type of -completion supported for the input. (Yegappan Lakshmanan) - -"dp" works with more than two buffers in diff mode if there is only one where -'modifiable' is set. - -The 'diffopt' option has three new values: "horizontal", "vertical" and -"foldcolumn". - -When the 'include' option contains \zs the file name found is what is being -matched from \zs to the end or \ze. Useful to pass more to 'includeexpr'. - -Loading plugins on startup now supports subdirectories in the plugin -directory. |load-plugins| - -In the foldcolumn always show the '+' for a closed fold, so that it can be -opened easily. It may overwrite another character, esp. if 'foldcolumn' is 1. - -It is now possible to get the W10 message again by setting 'readonly'. Useful -in the FileChangedRO autocommand when checking out the file fails. - -Unix: When open() returns EFBIG give an appropriate message. - -":mksession" sets the SessionLoad variable to notify plugins. A modeline is -added to the session file to set 'filetype' to "vim". - -In the ATTENTION prompt put the "Delete it" choice before "Quit" to make it -more logical. (Robert Webb) - -When appending to a file while the buffer has no name the name of the appended -file would be used for the current buffer. But the buffer contents is -actually different from the file content. Don't set the file name, unless the -'P' flag is present in 'cpoptions'. - -When starting to edit a new file and the directory for the file doesn't exist -then Vim will report "[New DIRECTORY]" instead of "[New File] to give the user -a hint that something might be wrong. - -Win32: Preserve the hidden attribute of the viminfo file. - -In Insert mode CTRL-A didn't keep the last inserted text when using CTRL-O and -then a cursor key. Now keep the previously inserted text if nothing is -inserted after the CTRL-O. Allows using CTRL-O commands to move the cursor -without losing the last inserted text. - -The exists() function now supports checking for autocmd group definition -and for supported autocommand events. (Yegappan Lakshmanan) - -Allow using ":global" in the sandbox, it doesn't do anything harmful by -itself. - -":saveas asdf.c" will set 'filetype' to c when it's empty. Also for ":w -asdf.c" when it sets the filename for the buffer. - -Insert mode completion for whole lines now also searches unloaded buffers. - -The colortest.vim script can now be invoked directly with ":source" or -":runtime syntax/colortest.vim". - -The 'statusline' option can be local to the window, so that each window can -have a different value. (partly by Yegappan Lakshmanan) - -The 'statusline' option and other options that support the same format can now -use these new features: -- When it starts with "%!" the value is first evaluated as an expression - before parsing the value. -- "%#HLname#" can be used to start highlighting with HLname. - -When 'statusline' is set to something that causes an error message then it is -made empty to avoid an endless redraw loop. Also for other options, such at -'tabline' and 'titlestring'. ":verbose set statusline" will mention that it -was set in an error handler. - -When there are several matching tags, the ":tag <name>" and CTRL-] commands -jump to the [count] matching tag. (Yegappan Lakshmanan) - -Win32: In the batch files generated by the install program, use $VIMRUNTIME or -$VIM if it's set. Example provided by Mathias Michaelis. -Also create a vimtutor.bat batch file. - -The 'balloonexpr' option is now |global-local|. - -The system() function now runs in cooked mode, thus can be interrupted by -CTRL-C. - -============================================================================== -COMPILE TIME CHANGES *compile-changes-7* - -Dropped the support for the BeOS and Amiga GUI. They were not maintained and -probably didn't work. If you want to work on this: get the Vim 6.x version -and merge it back in. - -When running the tests and one of them fails to produce "test.out" the -following tests are still executed. This helps when running out of memory. - -When compiling with EXITFREE defined and the ccmalloc library it is possible -to detect memory leaks. Some memory will always reported as leaked, such as -allocated by X11 library functions and the memory allocated in alloc_cmdbuff() -to store the ":quit" command. - -Moved the code for printing to src/hardcopy.c. - -Moved some code from main() to separate functions to make it easier to see -what is being done. Using a structure to avoid a lot of arguments to the -functions. - -Moved unix_expandpath() to misc1.c, so that it can also be used by os_mac.c -without copying the code. - ---- Mac --- - -"make" now creates the Vim.app directory and "make install" copies it to its -final destination. (Raf) - -Put the runtime directory not directly in Vim.app but in -Vim.app/Contents/Resources/vim, so that it's according to Mac specs. - -Made it possible to compile with Motif, Athena or GTK without tricks and still -being able to use the MacRoman conversion. Added the os_mac_conv.c file. - -When running "make install" the runtime files are installed as for Unix. -Avoids that too many files are copied. When running "make" a link to the -runtime files is created to avoid a recursive copy that takes much time. - -Configure will attempt to build Vim for both Intel and PowerPC. The ---with-mac-arch configure argument can change it. - ---- Win32 --- - -The Make_mvc.mak file was adjusted to work with the latest MS compilers, -including the free version of Visual Studio 2005. (George Reilly) - -INSTALLpc.txt was updated for the recent changes. (George Reilly) - -The distributed executable is now produced with the free Visual C++ Toolkit -2003 and other free SDK chunks. msvcsetup.bat was added to support this. - -Also generate the .pdb file that can be used to generate a useful crash report -on MS-Windows. (George Reilly) - -============================================================================== -BUG FIXES *bug-fixes-7* - -When using PostScript printing on MS-DOS the default 'printexpr' used "lpr" -instead of "copy". When 'printdevice' was empty the copy command did not -work. Use "LPT1" then. - -The GTK font dialog uses a font size zero when the font name doesn't include a -size. Use a default size of 10. - -This example in the documentation didn't work: - :e `=foo . ".c" ` -Skip over the expression in `=expr` when looking for comments, |, % and #. - -When ":helpgrep" doesn't find anything there is no error message. - -"L" and "H" did not take closed folds into account. - -Win32: The "-P title" argument stopped at the first title that matched, even -when it doesn't support MDI. - -Mac GUI: CTRL-^ and CTRL-@ did not work. - -"2daw" on "word." at the end of a line didn't include the preceding white -space. - -Win32: Using FindExecutable() doesn't work to find a program. Use -SearchPath() instead. For executable() use $PATHEXT when the program searched -for doesn't have an extension. - -When 'virtualedit' is set, moving the cursor up after appending a character -may move it to a different column. Was caused by auto-formatting moving the -cursor and not putting it back where it was. - -When indent was added automatically and then moving the cursor, the indent was -not deleted (like when pressing ESC). The "I" flag in 'cpoptions' can be used -to make it work the old way. - -When opening a command-line window, 'textwidth' gets set to 78 by the Vim -filetype plugin. Reset 'textwidth' to 0 to avoid lines are broken. - -After using cursor(line, col) moving up/down doesn't keep the same column. - -Win32: Borland C before 5.5 requires using ".u." for LowPart and HighPart -fields. (Walter Briscoe) - -On Sinix SYS_NMLN isn't always defined. Define it ourselves. (Cristiano De -Michele) - -Printing with PostScript may keep the printer waiting for more. Append a -CTRL-D to the printer output. (Mike Williams) - -When converting a string with a hex or octal number the leading '-' was -ignored. ":echo '-05' + 0" resulted in 5 instead of -5. - -Using "@:" to repeat a command line didn't work when it contains control -characters. Also remove "'<,'>" when in Visual mode to avoid that it appears -twice. - -When using file completion for a user command, it would not expand environment -variables like for a regular command with a file argument. - -'cindent': When the argument of a #define looks like a C++ class the next line -is indented too much. - -When 'comments' includes multi-byte characters inserting the middle part and -alignment may go wrong. 'cindent' also suffers from this for right-aligned -items. - -Win32: when 'encoding' is set to "utf-8" getenv() still returns strings in the -active codepage. Convert to utf-8. Also for $HOME. - -The default for 'helplang' was "zh" for both "zh_cn" and "zh_tw". Now use -"cn" or "tw" as intended. - -When 'bin' is set and 'eol' is not set then line2byte() added the line break -after the last line while it's not there. - -Using foldlevel() in a WinEnter autocommand may not work. Noticed when -resizing the GUI shell upon startup. - -Python: Using buffer.append(f.readlines()) didn't work. Allow appending a -string with a trailing newline. The newline is ignored. - -When using the ":saveas f2" command for buffer "f1", the Buffers menu would -contain "f2" twice, one of them leading to "f1". Also trigger the BufFilePre -and BufFilePost events for the alternate buffer that gets the old name. - -strridx() did not work well when the needle is empty. (Ciaran McCreesh) - -GTK: Avoid a potential hang in gui_mch_wait_for_chars() when input arrives -just before it is invoked - -VMS: Occasionally CR characters were inserted in the file. Expansion of -environment variables was not correct. (Zoltan Arpadffy) - -UTF-8: When 'delcombine' is set "dw" only deleted the last combining character -from the first character of the word. - -When using ":sball" in an autocommand only the filetype in one buffer was -detected. Reset did_filetype in enter_buffer(). - -When using ":argdo" and the window already was at the first argument index, -but not actually editing it, the current buffer would be used instead. - -When ":next dir/*" includes many matches, adding the names to the argument -list may take an awful lot of time and can't be interrupted. Allow -interrupting this. - -When editing a file that was already loaded in a buffer, modelines were not -used. Now window-local options in the modeline are set. Buffer-local options -and global options remain unmodified. - -Win32: When 'encoding' is set to "utf-8" in the vimrc file, files from the -command line with non-ASCII characters are not used correctly. Recode the -file names when 'encoding' is set, using the Unicode command line. - -Win32 console: When the default for 'encoding' ends up to be "latin1", the -default value of 'isprint' was wrong. - -When an error message is given while waiting for a character (e.g., when an -xterm reports the number of colors), the hit-enter prompt overwrote the last -line. Don't reset msg_didout in normal_cmd() for K_IGNORE. - -Mac GUI: Shift-Tab didn't work. - -When defining tooltip text, don't translate terminal codes, since it's not -going to be used like a command. - -GTK 2: Check the tooltip text for valid utf-8 characters to avoid getting a -GTK error. Invalid characters may appear when 'encoding' is changed. - -GTK 2: Add a safety check for invalid utf-8 sequences, they can crash pango. - -Win32: When 'encoding' is changed while starting up, use the Unicode command -line to convert the file arguments to 'encoding'. Both for the GUI and the -console version. - -Win32 GUI: latin9 text (iso-8859-15) was not displayed correctly, because -there is no codepage for latin9. Do our own conversion from latin9 to UCS2. - -When two versions of GTK+ 2 are installed it was possible to use the header -files from one and the library from the other. Use GTK_LIBDIR to put the -directory for the library early in the link flags. - -With the GUI find/replace dialog a replace only worked if the pattern was -literal text. Now it works for any pattern. - -When 'equalalways' is set and 'eadirection' is "hor", ":quit" would still -cause equalizing window heights in the vertical direction. - -When ":emenu" is used in a startup script the command was put in the typeahead -buffer, causing a prompt for the crypt key to be messed up. - -Mac OS/X: The default for 'isprint' included characters 128-160, causes -problems for Terminal.app. - -When a syntax item with "containedin" is used, it may match in the start or -end of a region with a matchgroup, while this doesn't happen for a "contains" -argument. - -When a transparent syntax items matches in another item where the highlighting -has already stopped (because of a he= argument), the highlighting would come -back. - -When cscope is used to set the quickfix error list, it didn't get set if there -was only one match. (Sergey Khorev) - -When 'confirm' is set and using ":bdel" in a modified buffer, then selecting -"cancel", would still give an error message. - -The PopUp menu items that started Visual mode didn't work when not in Normal -mode. Switching between selecting a word and a line was not possible. - -Win32: The keypad decimal point always resulted in a '.', while on some -keyboards it's a ','. Use MapVirtualKey(VK_DECIMAL, 2). - -Removed unused function DisplayCompStringOpaque() from gui_w32.c - -In Visual mode there is not always an indication whether the line break is -selected or not. Highlight the character after the line when the line break -is included, e.g., after "v$o". - -GTK: The <F10> key can't be mapped, it selects the menu. Disable that with a -GTK setting and do select the menu when <F10> isn't mapped. (David Necas) - -After "Y" '[ and '] were not at start/end of the yanked text. - -When a telnet connection is dropped Vim preserves files and exits. While -doing that a SIGHUP may arrive and disturb us, thus ignore it. (Scott -Anderson) Also postpone SIGHUP, SIGQUIT and SIGTERM until it's safe to -handle. Added handle_signal(). - -When completing a file name on the command line backslashes are required for -white space. Was only done for a space, not for a Tab. - -When configure could not find a terminal library, compiling continued for a -long time before reporting the problem. Added a configure check for tgetent() -being found in a library. - -When the cursor is on the first char of the last line a ":g/pat/s///" command -may cause the cursor to be displayed below the text. - -Win32: Editing a file with non-ASCII characters doesn't work when 'encoding' -is "utf-8". use _wfullpath() instead of _fullpath(). (Yu-sung Moon) - -When recovering the 'fileformat' and 'fileencoding' were taken from the -original file instead of from the swapfile. When the file didn't exist, was -empty or the option was changed (e.g., with ":e ++fenc=cp123 file") it could -be wrong. Now store 'fileformat' and 'fileencoding' in the swapfile and use -the values when recovering. - -":bufdo g/something/p" overwrites each last printed text line with the file -message for the next buffer. Temporarily clear 'shortmess' to avoid that. - -Win32: Cannot edit a file starting with # with --remote. Do escape % and # -when building the ":drop" command. - -A comment or | just after an expression-backtick argument was not recognized. -E.g. in :e `="foo"`"comment. - -"(" does not stop at an empty sentence (single dot and white space) while ")" -does. Also breaks "das" on that dot. - -When doing "yy" with the cursor on a TAB the ruler could be wrong and "k" -moved the cursor to another column. - -When 'commentstring' is '"%s' and there is a double quote in the line a double -quote before the fold marker isn't removed in the text displayed for a closed -fold. - -In Visual mode, when 'bin' and 'eol' set, g CTRL-G counted the last line -break, resulting in "selected 202 of 201 bytes". - -Motif: fonts were not used for dialog components. (Marcin Dalecki) - -Motif: After using a toolbar button the keyboard focus would be on the toolbar -(Lesstif problem). (Marcin Dalecki) - -When using "y<C-V>`x" where mark x is in the first column, the last line was -not included. - -Not all test scripts work properly on MS-Windows when checked out from CVS. -Use a Vim command to fix all fileformats to dos before executing the tests. - -When using ":new" and the file fits in the window, lines could still be above -the window. Now remove empty lines instead of keeping the relative position. - -Cmdline completion didn't work after ":let var1 var<Tab>". - -When using ":startinsert" or ":startreplace" when already in Insert mode -(possible when using CTRL-R =), pressing Esc would directly restart Insert -mode. (Peter Winters) - -"2daw" didn't work at end of file if the last word is a single character. - -Completion for ":next a'<Tab>" put a backslash before single quote, but it was -not removed when editing a file. Now halve backslashes in save_patterns(). -Also fix expanding a file name with the shell that contains "\'". - -When doing "1,6d|put" only "fewer lines" was reported. Now a following "more -lines" overwrites the message. - -Configure could not handle "-Dfoo=long\ long" in the TCL config output. - -When searching backwards, using a pattern that matches a newline and uses \zs -after that, didn't find a match. Could also get a hang or end up in the right -column in the wrong line. - -When $LANG is "sl" for slovenian, the slovak menu was used, since "slovak" -starts with "sl". - -When 'paste' is set in the GUI the Paste toolbar button doesn't work. Clear -'paste' when starting the GUI. - -A message about a wrong viminfo line included the trailing NL. - -When 'paste' is set in the GUI the toolbar button doesn't work in Insert mode. -Use ":exe" in menu.vim to avoid duplicating the commands, instead of using a -mapping. - -Treat "mlterm" as an xterm-like terminal. (Seiichi Sato) - -":z.4" and ":z=4" didn't work Vi compatible. - -When sourcing a file, editing it and sourcing it again, it could appear twice -in ":scriptnames" and get a new <SID>, because the inode has changed. - -When $SHELL is set but empty the 'shell' option would be empty. Don't use an -empty $SHELL value. - -A command "w! file" in .vimrc or $EXINIT didn't work. Now it writes an empty -file. - -When a CTRL-F command at the end of the file failed, the cursor was still -moved to the start of the line. Now it remains where it is. - -When using ":s" or "&" to repeat the last substitute and "$" was used to put -the cursor in the last column, put the cursor in the last column again. This -is Vi compatible. - -Vim is not fully POSIX compliant but sticks with traditional Vi behavior. -Added a few flags in 'cpoptions' to behave the POSIX way when wanted. The -$VIM_POSIX environment variable is checked to set the default. - -Appending to a register didn't insert a line break like Vi. Added the '>' -flag to 'cpoptions' for this. - -Using "I" in a line with only blanks appended to the line. This is not Vi -compatible. Added the 'H' flag in 'coptions' for this. - -When joining multiple lines the cursor would be at the last joint, but Vi -leaves it at the position where "J" would put it. Added the 'q' flag in -'cpoptions' for this. - -Autoindent didn't work for ":insert" and ":append". - -Using ":append" in an empty buffer kept the dummy line. Now it's deleted to -be Vi compatible. - -When reading commands from a file and stdout goes to a terminal, would still -request the xterm version. Vim can't read it, thus the output went to the -shell and caused trouble there. - -When redirecting to a register with an invalid name the redirection would -still be done (after an error message). Now reset "redir_reg". (Yegappan -Lakshmanan) - -It was not possible to use a NL after a backslash in Ex mode. This is -sometimes used to feed multiple lines to a shell command. - -When 'cmdheight' is set to 2 in .vimrc and the GUI uses the number of lines -from the terminal we actually get 3 lines for the cmdline in gvim. - -When setting $HOME allocated memory would leak. - -Win32: bold characters may sometimes write in another character cell. Use -unicodepdy[] as for UTF-8. (Taro Muraoka) - -":w fname" didn't work for files with 'buftype' set to "nofile". - -The method used to locate user commands for completion differed from when they -are executed. Ambiguous command names were not completed properly. - -Incremental search may cause a crash when there is a custom statusline that -indirectly invokes ":normal". - -Diff mode failed when $DIFF_OPTIONS was set in the environment. Unset it -before invoking "diff". - -Completion didn't work after ":argdo", ":windo" and ":bufdo". Also for ":set -&l:opt" and ":set &g:opt". (Peter Winters) - -When setting 'ttymouse' to "dec" in an xterm that supports the DEC mouse -locator it doesn't work. Now switch off the mouse before selecting another -mouse model. - -When the CursorHold event is triggered and the commands peek for typed -characters the typeahead buffer may be messed up, e.g., when a mouse-up event -is received. Avoid invoking the autocommands from the function waiting for a -character, let it put K_CURSORHOLD in the input buffer. - -Removed the "COUNT" flag from ":argadd", to avoid ":argadd 1*" to be used like -":1argadd *". Same for ":argdelete" and ":argedit". - -Avoid that $LANG is used for the menus when LC_MESSAGES is "en_US". - -Added backslashes before dashes in the vim.1 manual page to make the appear as -real dashes. (Pierr Habouzit) - -Where "gq" left the cursor depended on the value of 'formatprg'. Now "gq" -always leaves the cursor at the last line of the formatted text. - -When editing a compressed file, such as "changelog.Debian.gz" file, filetype -detection may try to check the contents of the file while it's still -compressed. Skip setting 'filetype' for compressed files until they have been -decompressed. Required for patterns that end in a "*". - -Starting with an argument "+cmd" or "-S script" causes the cursor the be moved -to the first line. That breaks a BufReadPost autocommand that uses g`". -Don't move the cursor if it's somewhere past the first line. - -"gg=G" while 'modifiable' is off was uninterruptible. - -When 'encoding' is "sjis" inserting CTRL-V u d800 a few times causes a crash. -Don't insert a DBCS character with a NUL second byte. - -In Insert mode CTRL-O <Home> didn't move the cursor. Made "ins_at_eol" global -and reset it in nv_home(). - -Wildcard expansion failed: ":w /tmp/$$.`echo test`". Don't put quotes around -spaces inside backticks. - -After this sequence of commands: Y V p gv: the wrong line is selected. Now -let "gv" select the text that was put, since the original text is deleted. -This should be the most useful thing to do. - -":sleep 100u" sleeps for 100 seconds, not 100 usec as one might expect. Give -an error message when the argument isn't recognized. - -In gui_mch_draw_string() in gui_w32.c "unibuflen" wasn't static, resulting in -reallocating the buffer every time. (Alexei Alexandrov) - -When using a Python "atexit" function it was not invoked when Vim exits. Now -call Py_Finalize() for that. (Ugo Di Girolamo) -This breaks the thread stuff though, fixed by Ugo. - -GTK GUI: using a .vimrc with "set cmdheight=2 lines=43" and ":split" right -after startup, the window layout is messed up. (Michael Schaap) Added -win_new_shellsize() call in gui_init() to fix the topframe size. - -Trick to get ...MOUSE_NM not used when there are vertical splits. Now pass -column -1 for the left most window and add MOUSE_COLOFF for others. Limits -mouse column to 10000. - -searchpair() may hang when the end pattern has "\zs" at the end. Check that -we find the same position again and advance one character. - -When in diff mode and making a change that causes the "changed" highlighting -to disappear or reappear, it was still highlighted in another window. - -When a ":next" command fails because the user selects "Abort" at the ATTENTION -prompt the argument index was advanced anyway. - -When "~" is in 'iskeyword' the "gd" doesn't work, it's used for the previous -substitute pattern. Put "\V" in the pattern to avoid that. - -Use of sprintf() sometimes didn't check properly for buffer overflow. Also -when using smsg(). Included code for snprintf() to avoid having to do size -checks where invoking them - -":help \=<Tab>" didn't find "sub-replace-\=". Wild menu for help tags didn't -show backslashes. ":he :s\=" didn't work. - -When reading an errorfile "~/" in a file name was not expanded. - -GTK GUI: When adding a scrollbar (e.g. when using ":vsplit") in a script or -removing it the window size may change. GTK sends us resize events when we -change the window size ourselves, but they may come at an unexpected moment. -Peek for a character to get any window resize events and fix 'columns' and -'lines' to undo this. - -When using the GTK plug mechanism, resizing and focus was not working -properly. (Neil Bird) - -After deleting files from the argument list a session file generated with -":mksession" may contain invalid ":next" commands. - -When 'shortmess' is empty and 'keymap' set to accents, in Insert mode CTRL-N -may cause the hit-enter prompt. Typing 'a then didn't result in the accented -character. Put the character typed at the prompt back in the typeahead buffer -so that mapping is done in the right mode. - -setbufvar() and setwinvar() did not give error messages. - -It was possible to set a variable with an illegal name, e.g. with setbufvar(). -It was possible to define a function with illegal name, e.t. ":func F{-1}()" - -CTRL-W F and "gf" didn't use the same method to get the file name. - -When reporting a conversion error the line number of the last error could be -given. Now report the first encountered error. - -When using ":e ++enc=name file" and iconv() was used for conversion an error -caused a fall-back to no conversion. Now replace a character with '?' and -continue. - -When opening a new buffer the local value of 'bomb' was not initialized from -the global value. - -Win32: When using the "Edit with Vim" entry the file name was limited to about -200 characters. - -When using command line completion for ":e *foo" and the file "+foo" exists -the resulting command ":e +foo" doesn't work. Now insert a backslash: ":e -\+foo". - -When the translation of "-- More --" was not 10 characters long the following -message would be in the wrong position. - -At the more-prompt the last character in the last line wasn't drawn. - -When deleting non-existing text while 'virtualedit' is set the '[ and '] marks -were not set. - -Win32: Could not use "**/" in 'path', it had to be "**\". - -The search pattern "\n" did not match at the end of the last line. - -Searching for a pattern backwards, starting on the NUL at the end of the line -and 'encoding' is "utf-8" would match the pattern just before it incorrectly. -Affected searchpair('/\*', '', '\*/'). - -For the Find/Replace dialog it was possible that not finding the text resulted -in an error message while redrawing, which cleared the syntax highlighting -while it was being used, resulting in a crash. Now don't clear syntax -highlighting, disable it with b_syn_error. - -Win32: Combining UTF-8 characters were drawn on the previous character. -Could be noticed with a Thai font. - -Output of ":function" could leave some of the typed text behind. (Yegappan -Lakshmanan) - -When the command line history has only a few lines the command line window -would be opened with these lines above the first window line. - -When using a command line window for search strings ":qa" would result in -searching for "qa" instead of quitting all windows. - -GUI: When scrolling with the scrollbar and there is a line that doesn't fit -redrawing may fail. Make sure w_skipcol is valid before redrawing. - -Limit the values of 'columns' and 'lines' to avoid an overflow in Rows * -Columns. Fixed bad effects when running out of memory (command line would be -reversed, ":qa!" resulted in ":!aq"). - -Motif: "gvim -iconic" opened the window anyway. (David Harrison) - -There is a tiny chance that a symlink gets created between checking for an -existing file and creating a file. Use the O_NOFOLLOW for open() if it's -available. - -In an empty line "ix<CTRL-O>0" moved the cursor to after the line instead of -sticking to the first column. - -When using ":wq" and a BufWriteCmd autocmd uses inputsecret() the text was -echoed anyway. Set terminal to raw mode in getcmdline(). - -Unix: ":w a;b~c" caused an error in expanding wildcards. - -When appending to a file with ":w >>fname" in a buffer without a name, causing -the buffer to use "fname", the modified flag was reset. - -When appending to the current file the "not edited" flag would be reset. -":w" would overwrite the file accidentally. - -Unix: When filtering text with an external command Vim would still read input, -causing text typed for the command (e.g., a password) to be eaten and echoed. -Don't read input when the terminal is in cooked mode. - -The Cygwin version of xxd used CR/LF line separators. (Corinna Vinschen) - -Unix: When filtering text through a shell command some resulting text may be -dropped. Now after detecting that the child has exited try reading some more -of its output. - -When inside input(), using "CTRL-R =" and the expression throws an exception -the command line was not abandoned but it wasn't used either. Now abandon -typing the command line. - -'delcombine' was also used in Visual and Select mode and for commands like -"cl". That was illogical and has been disabled. - -When recording while a CursorHold autocommand was defined special keys would -appear in the register. Now the CursorHold event is not triggered while -recording. - -Unix: the src/configure script used ${srcdir-.}, not all shells understand -that. Use ${srcdir:-.} instead. - -When editing file "a" which is a symlink to file "b" that doesn't exist, -writing file "a" to create "b" and then ":split b" resulted in two buffers on -the same file with two different swapfile names. Now set the inode in the -buffer when creating a new file. - -When 'esckeys' is not set don't send the xterm code to request the version -string, because it may cause trouble in Insert mode. - -When evaluating an expression for CTRL-R = on the command line it was possible -to call a function that opens a new window, resulting in errors for -incremental search, and many other nasty things were possible. Now use the -|textlock| to disallow changing the buffer or jumping to another window -to protect from unexpected behavior. Same for CTRL-\ e. - -"d(" deleted the character under the cursor, while the documentation specified -an exclusive motion. Vi also doesn't delete the character under the cursor. - -Shift-Insert in Insert mode could put the cursor before the last character -when it just fits in the window. In coladvance() don't stop at the window -edge when filling with spaces and when in Insert mode. In mswin.vim avoid -getting a beep from the "l" command. - -Win32 GUI: When Alt-F4 is used to close the window and Cancel is selected in -the dialog then Vim would insert <M-F4> in the text. Now it's ignored. - -When ":silent! {cmd}" caused the swap file dialog, which isn't displayed, -there would still be a hit-enter prompt. - -Requesting the termresponse (|t_RV|) early may cause problems with "-c" -arguments that invoke an external command or even "-c quit". Postpone it -until after executing "-c" arguments. - -When typing in Insert mode so that a new line is started, using CTRL-G u to -break undo and start a new change, then joining the lines with <BS> caused -undo info to be missing. Now reset the insertion start point. - -Syntax HL: When a region start match has a matchgroup and an offset that -happens to be after the end of the line then it continued in the next line and -stopped at the region end match, making the region continue after that. -Now check for the column being past the end of the line in syn_add_end_off(). - -When changing a file, setting 'swapfile' off and then on again, making another -change and killing Vim, then some blocks may be missing from the swapfile. -When 'swapfile' is switched back on mark all blocks in the swapfile as dirty. -Added mf_set_dirty(). - -Expanding wildcards in a command like ":e aap;<>!" didn't work. Put -backslashes before characters that are special to the shell. (Adri Verhoef) - -A CursorHold autocommand would cause a message to be cleared. Don't show the -special key for the event for 'showcmd'. - -When expanding a file name for a shell command, as in "!cmd foo<Tab>" or ":r -!cmd foo<Tab>" also escape characters that are special for the shell: -"!;&()<>". - -When the name of the buffer was set by a ":r fname" command |cpo-f| no -autocommands were triggered to notify about the change in the buffer list. - -In the quickfix buffer 'bufhidden' was set to "delete", which caused closing -the quickfix window to leave an unlisted "No Name" buffer behind every time. - -Win32: when using two screens of different size, setting 'lines' to a large -value didn't fill the whole screen. (SungHyun Nam) - -Win32 installer: The generated _vimrc contained an absolute path to diff.exe. -After upgrading it becomes invalid. Now use $VIMRUNTIME instead. - -The command line was cleared to often when 'showmode' was set and ":silent -normal vy" was used. Don't clear the command line unless the mode was -actually displayed. Added the "mode_displayed" variable. - -The "load session" toolbar item could not handle a space or other special -characters in v:this_session. - -":set sta ts=8 sw=4 sts=2" deleted 4 spaces halfway a line instead of 2. - -In a multi-byte file the foldmarker could be recognized in the trail byte. -(Taro Muraoka) - -Pasting with CTRL-V and menu didn't work properly when some commands are -mapped. Use ":normal!" instead of ":normal". (Tony Apuzzo) - -Crashed when expanding a file name argument in backticks. - -In some situations the menu and scrollbar didn't work, when the value contains -a CSI byte. (Yukihiro Nakadaira) - -GTK GUI: When drawing the balloon focus changes and we might get a key release -event that removed the balloon again. Ignore the key release event. - -'titleold' was included in ":mkexrc" and ":mksession" files. - -":set background&" didn't use the same logic as was used when starting up. - -When "umask" is set such that nothing is writable then the viminfo file would -be written without write permission. (Julian Bridle) - -Motif: In diff mode dragging one scrollbar didn't update the scrollbar of the -other diff'ed window. - -When editing in an xterm with a different number of colors than expected the -screen would be cleared and redrawn, causing the message about the edited file -to be cleared. Now set "keep_msg" to redraw the last message. - -For a color terminal: When the Normal HL uses bold, possibly to make the color -lighter, and another HL group specifies a color it might become light as well. -Now reset bold if a HL group doesn't specify bold itself. - -When using 256 color xterm the color 255 would show up as color 0. Use a -short instead of a char to store the color number. - -ml_get errors when searching for "\n\zs" in an empty file. - -When selecting a block and using "$" to select until the end of every line and -not highlighting the character under the cursor the first character of the -block could be unhighlighted. - -When counting words for the Visual block area and using "$" to select until -the end of every line only up to the length of the last line was counted. - -"dip" in trailing empty lines left one empty line behind. - -The script ID was only remembered globally for each option. When a buffer- or -window-local option was set the same "last set" location was changed for all -buffers and windows. Now remember the script ID for each local option -separately. - -GUI: The "Replace All" button didn't handle backslashes in the replacement in -the same way as "Replace". Escape backslashes so that they are taken -literally. - -When using Select mode from Insert mode and typing a key, causing lines to be -deleted and a message displayed, delayed the effect of inserting the key. -Now overwrite the message without delay. - -When 'whichwrap' includes "l" then "dl" and "yl" on a single letter line -worked differently. Now recognize all operators when using "l" at the end of -a line. - -GTK GUI: when the font selector returned a font name with a comma in it then -it would be handled like two font names. Now put a backslash before the -comma. - -MS-DOS, Win32: When 'encoding' defaults to "latin1" then the value for -'iskeyword' was still for CPxxx. And when 'nocompatible' was set 'isprint' -would also be the wrong value. - -When a command was defined not to take arguments and no '|' no warning message -would be given for using a '|'. Also with ":loadkeymap". - -Motif: When using a fontset and 'encoding' is "utf-8" and sizeof(wchar_t) != -sizeof(XChar2b) then display was wrong. (Yukihiro Nakadaira) - -":all" always set the current window to the first window, even when it -contains a buffer that is not in the argument list (can't be closed because it -is modified). Now go to the window that has the first item of the argument -list. - -GUI: To avoid left-over pixels from bold text all characters after a character -with special attributes were redrawn. Now only do this for characters that -actually are bold. Speeds up displaying considerably. - -When only highlighting changes and the text is scrolled at the same time -everything is redraw instead of using a scroll and updating the changed text. -E.g., when using ":match" to highlight a paren that the cursor landed on. -Added SOME_VALID: Redraw the whole window but also try to scroll to minimize -redrawing. - -Win32: When using Korean IME making it active didn't work properly. (Moon, -Yu-sung, 2005 March 21) - -Ruby interface: when inserting/deleting lines display wasn't updated. (Ryan -Paul) - ---- fixes since Vim 7.0b --- - -Getting the GCC version in configure didn't work with Solaris sed. First -strip any "darwin." and then get the version number. - -The "autoload" directory was missing from the self-installing executable for -MS-Windows. - -The MS-Windows install program would find "vimtutor.bat" in the install -directory. After changing to "c:" also change to "\" to avoid looking in the -install directory. - -To make the 16 bit DOS version compile exclude not used highlight -initializations and build a tiny instead of small version. - -finddir() and findfile() accept a negative count and return a List then. - -The Python indent file contained a few debugging statements, removed. - -Expanding {} for a function name, resulting in a name starting with "s:" was -not handled correctly. - -Spelling: renamed COMPOUNDMAX to COMPOUNDWORDMAX. Added several items to be -able to handle the new Hungarian dictionary. - -Mac: Default to building for the current platform only, that is much faster -than building a universal binary. Also, using Perl/Python/etc. only works for -the current platform. - -The time on undo messages disappeared for someone. Using %T for strftime() -apparently doesn't work everywhere. Use %H:%M:%S instead. - -Typing BS at the "z=" prompt removed the prompt. - ---- fixes and changes since Vim 7.0c --- - -When jumping to another tab page the Vim window size was always set, even when -nothing in the layout changed. - -Win32 GUI tab pages line wasn't always enabled. Do a proper check for the -compiler version. - -Win32: When switching between tab pages the Vim window was moved when part of -it was outside of the screen. Now only do that in the direction of a size -change. - -Win32: added menu to GUI tab pages line. (Yegappan Lakshmanan) - -Mac: Added document icons. (Benji Fisher) - -Insert mode completion: Using Enter to accept the current match causes -confusion. Use CTRL-Y instead. Also, use CTRL-E to go back to the typed -text. - -GUI: When there are left and right scrollbars, ":tabedit" kept them instead of -using the one that isn't needed. - -Using "gP" to replace al the text could leave the cursor below the last line, -causing ml_get errors. - -When 'cursorline' is set don't use the highlighting when Visual mode is -active, otherwise it's difficult to see the selected area. - -The matchparen plugin restricts the search to 100 lines, to avoid a long delay -when there are closed folds. - -Sometimes using CTRL-X s to list spelling suggestions used text from another -line. - -Win32: Set the default for 'isprint' back to the wrong default "@,~-255", -because many people use Windows-1252 while 'encoding' is "latin1". - -GTK: Added a workaround for gvim crashing when used over an untrusted ssh -link, caused by GTK doing something nasty. (Ed Catmur) - -Win32: The font used for the tab page labels is too big. Use the system menu -font. (George Reilly) - -Win32: Adjusting the window position and size to keep it on the screen didn't -work properly when the taskbar is on the left or top of the screen. - -The installman.sh and installml.sh scripts use ${10}, that didn't work with -old shells. And use "test -f" instead of "test -e". - -Win32: When 'encoding' was set in the vimrc then a directory argument for diff -mode didn't work. - -GUI: at the inputlist() prompt the cursorshape was adjusted as if the windows -were still at their old position. - -The parenmatch plugin didn't remember the highlighting per window. - -Using ":bd" for a buffer that's the current window in another tab page caused -a crash. - -For a new tab page the 'scroll' option wasn't set to a good default. - -Using an end offset for a search "/pat/e" didn't work properly for multi-byte -text. (Yukihiro Nakadaira) - -":s/\n/,/" doubled the text when used on the last line. - -When "search" is in 'foldopen' "[s" and "]s" now open folds. - -When using a numbered function "dict" can be omitted, but "self" didn't work -then. Always add FC_DICT to the function flags when it's part of a -dictionary. - -When "--remote-tab" executes locally it left an empty tab page. - -"gvim -u NONE", ":set cursorcolumn", "C" in the second line didn't update -text. Do update further lines even though the "$" is displayed. - -VMS: Support GTK better, also enable +clientserver. (Zoltan Arpadffy) - -When highlighting of statusline or tabline is changed there was no redraw to -show the effect. - -Mac: Added "CFBundleIdentifier" to infplist.xml. - -Added tabpage-local variables t:var. - -Win32: Added double-click in tab pages line creates new tab. (Yegappan -Lakshmanan) - -Motif: Added GUI tab pages line. (Yegappan Lakshmanan) - -Fixed crash when 'lines' was set to 1000 in a modeline. - -When init_spellfile() finds a writable directory in 'runtimepath' but it -doesn't contain a "spell" directory, create one. - -Win32: executable() also finds "xxd" in the directory where Vim was started, -but "!xxd" doesn't work. Append the Vim starting directory to $PATH. - -The tab page labels are shortened, directory names are reduced to a single -letter by default. Added the pathshorten() function to allow a user to do the -same. - -":saveas" now resets 'readonly' if the file was successfully written. - -Set $MYVIMRC file to the first found .vimrc file. -Set $MYGVIMRC file to the first found .gvimrc file. -Added menu item "Startup Settings" that edits the $MYVIMRC file - -Added matcharg(). - -Error message E745 appeared twice. Renamed one to E786. - -Fixed crash when using "au BufRead * Sexplore" and doing ":help". Was wiping -out a buffer that's still in a window. - -":hardcopy" resulted in an error message when 'encoding' is "utf-8" and -'printencoding' is empty. Now it assumes latin1. (Mike Williams) - -The check for the toolbar feature for Motif, depending on certain included -files, wasn't detailed enough, causing building to fail in gui_xmebw.c. - -Using CTRL-E in Insert mode completion after CTRL-P inserted the first match -instead of the original text. - -When displaying a UTF-8 character with a zero lower byte Vim might think the -previous character is double-wide. - -The "nbsp" item of 'listchars' didn't work when 'encoding' was utf-8. - -Motif: when Xm/xpm.h is missing gui_xmebw.c would not compile. -HAVE_XM_UNHIGHLIGHTT_H was missing a T. - -Mac: Moved the .icns files into src/os_mac_rsrc, so that they can all be -copied at once. Adjusted the Info.plist file for three icons. - -When Visual mode is active while switching to another tabpage could get ml_get -errors. - -When 'list' is set, 'nowrap' the $ in the first column caused 'cursorcolumn' -to move to the right. - -When a line wraps, 'cursorcolumn' was never displayed past the end of the -line. - -'autochdir' was only available when compiled with NetBeans and GUI. Now it's -a separate feature, also available in the "big" version. - -Added CTRL-W gf: open file under cursor in new tab page. - -When using the menu in the tab pages line, "New Tab" opens the new tab before -where the click was. Beyond the labels the new tab appears at the end instead -of after the current tab page. - -Inside a mapping with an expression getchar() could not be used. - -When vgetc is used recursively vgetc_busy protects it from being used -recursively. But after a ":normal" command the protection was reset. - -":s/a/b/n" didn't work when 'modifiable' was off. - -When $VIMRUNTIME includes a multi-byte character then rgb.txt could not be -found. (Yukihiro Nakadaira) - -":mkspell" didn't work correctly for non-ASCII affix flags when conversion is -needed on the spell file. - -glob('/dir/\$ABC/*') didn't work. - -When using several tab pages and changing 'cmdheight' the display could become -messed up. Now store the value of 'cmdheight' separately for each tab page. - -The user of the Enter key while the popup menu is visible was still confusing. -Now use Enter to select the match after using a cursor key. - -Added "usetab" to 'switchbuf'. - - ---- fixes and changes since Vim 7.0d --- - -Added CTRL-W T: move a window to a new tab page. - -Using CTRL-X s in Insert mode to complete spelling suggestions and using BS -deleted characters before the bad word. - -A few small fixes for the VMS makefile. (Zoltan Arpadffy) - -With a window of 91 lines 45 cols, ":vsp" scrolled the window. Copy w_wrow -when splitting a window and skip setting the height when it's already at the -right value. - -Using <silent> in a mapping with a shell command and the GUI caused redraw -to use wrong attributes. - -Win32: Using MSVC 4.1 for install.exe resulted in the start menu items to be -created in the administrator directory instead of "All Users". Define the -CSIDL_ items if they are missing. - -Motif: The GUI tabline did not use the space above the right scrollbar. Work -around a bug in the Motif library. (Yegappan Lakshmanan) - -The extra files for XML Omni completion are now also installed. -|xml-omni-datafile| - -GTK GUI: when 'm' is missing from 'guioptions' during startup and pressing -<F10> GTK produced error messages. Now do create the menu but disable it just -after the first gui_mch_update(). - -":mkspell" doesn't work well with the Hungarian dictionary from the Hunspell -project. Back to the Myspell dictionary. - -In help files hide the | used around tags. - -Renamed pycomplete to pythoncomplete. - -Added "tabpages" to 'sessionoptions'. - -When 'guitablabel' is set the effect wasn't visible right away. - -Fixed a few 'cindent' errors. - -When completing menu names, e.g., after ":emenu", don't sort the entries but -keep them in the original order. - -Fixed a crash when editing a directory in diff mode. Don't trigger -autocommands when executing the diff command. - -Getting a keystroke could get stuck if 'encoding' is a multi-byte encoding and -typing a special key. - -When 'foldignore' is set the folds were not updated right away. - -When a list is indexed with [a : b] and b was greater than the length an error -message was given. Now silently truncate the result. - -When using BS during Insert mode completion go back to the original text, so -that CTRL-N selects the first matching entry. - -Added the 'M' flag to 'cinoptions'. - -Win32: Make the "gvim --help" window appear in the middle of the screen -instead of at an arbitrary position. (Randall W. Morris) - -Added gettabwinvar() and settabwinvar(). - -Command line completion: pressing <Tab> after ":e /usr/*" expands the whole -tree, because it becomes ":e /usr/**". Don't add a star if there already is -one. - -Added grey10 to grey90 to all GUIs, so that they can all be used for -initializing highlighting. Use grey40 for CursorColumn and CursorLine when -'background' is "dark". - -When reading a file and using iconv for conversion, an incomplete byte -sequence at the end caused problems. (Yukihiro Nakadaira) - - ---- fixes and changes since Vim 7.0e --- - -Default color for MatchParen when 'background' is "dark" is now DarkCyan. - -":syn off" had to be used twice in a file that sets 'syntax' in a modeline. -(Michael Geddes) - -When using ":vsp" or ":sp" the available space wasn't used equally between -windows. (Servatius Brandt) - -Expanding <cWORD> on a trailing blank resulted in the first word in the line -if 'encoding' is a multi-byte encoding. - -Spell checking: spellbadword() didn't see a missing capital in the first word -of a line. Popup menu now only suggest the capitalized word when appropriate. - -When using whole line completion CTRL-L moves through the matches but it -didn't work when at the original text. - -When completion finds the longest match, don't go to the first match but stick -at the original text, so that CTRL-N selects the first one. - -Recognize "zsh-beta" like "zsh" for setting the 'shellpipe' default. (James -Vega) - -When using ":map <expr>" and the expression results in something with a -special byte (NUL or CSI) then it didn't work properly. Now escape special -bytes. - -The default Visual highlighting for a color xterm with 8 colors was a magenta -background, which made magenta text disappear. Now use reverse in this -specific situation. - -After completing the longest match "." didn't insert the same text. Repeating -also didn't work correctly for multi-byte text. - -When using Insert mode completion and BS the whole word that was completed -would result in all possible matches. Now stop completion. Also fixes that -for spell completion the previous word was deleted. - -GTK: When 'encoding' is "latin1" and using non-ASCII characters in a file name -the tab page label was wrong and an error message would be given. - -The taglist() function could hang on a tags line with a non-ASCII character. - -Win32: When 'encoding' differs from the system encoding tab page labels with -non-ASCII characters looked wrong. (Yegappan Lakshmanan) - -Motif: building failed when Xm/Notebook.h doesn't exist. Added a configure -check, disable GUI tabline when it's missing. - -Mac: When compiled without multi-byte feature the clipboard didn't work. - -It was possible to switch to another tab page when the cmdline window is open. - -Completion could hang when 'lines' is 6 and a preview window was opened. - -Added CTRL-W gF: open file under cursor in new tab page and jump to the line -number following the file name. -Added 'guitabtooltip'. Implemented for Win32 (Yegappan Lakshmanan). - -Added "throw" to 'debug' option: throw an exception for error messages even -whey they would otherwise be ignored. - -When 'keymap' is set and a line contains an invalid entry could get a "No -mapping found" warning instead of a proper error message. - -Motif: default to using XpmAttributes instead of XpmAttributes_21. - -A few more changes for 64 bit MS-Windows. (George Reilly) - -Got ml_get errors when doing "o" and selecting in other window where there are -less lines shorter than the cursor position in the other window. ins_mouse() -was using position in wrong window. - -Win32 GUI: Crash when giving a lot of messages during startup. Allocate twice -as much memory for the dialog template. - -Fixed a few leaks and wrong pointer use reported by coverity. - -When showing menus the mode character was sometimes wrong. - -Added feedkeys(). (Yakov Lerner) - -Made matchlist() always return all submatches. - -Moved triggering QuickFixCmdPost to before jumping to the first location. - -Mac: Added the 'macatsui' option as a temporary work around for text drawing -problems. - -Line completion on "/**" gave error messages when scanning an unloaded buffer. - ---- fixes and changes since Vim 7.0f --- - -Win32: The height of the tab page labels is now adjusted to the font height. -(Yegappan Lakshmanan) - -Win32: selecting the tab label was off by one. (Yegappan Lakshmanan) - -Added tooltips for Motif and GTK tab page labels. (Yegappan Lakshmanan) - -When 'encoding' is "utf-8" then ":help spell" would report an illegal byte and -the file was not converted from latin1 to utf-8. Now retry with latin1 if -reading the file as utf-8 results in illegal bytes. - -Escape the argument of feedkeys() before putting it in the typeahead buffer. -(Yukihiro Nakadaira) - -Added the v:char variable for evaluating 'formatexpr'. (Yukihiro Nakadaira) - -With 8 colors Search highlighting combined with Statement highlighted text -made the text disappear. - -VMS: avoid warnings for redefining MAX and MIN. (Zoltan Arpadffy) - -When 'virtualedit' includes "onemore", stopping Visual selection would still -move the cursor left. - -Prevent that using CTRL-R = in Insert mode can start Visual mode. - -Fixed a crash that occurred when in Insert mode with completion active and a -mapping caused edit() to be called recursively. - -When using CTRL-O in Insert mode just after the last character while -'virtualedit' is "all", then typing CR moved the last character to the next -line. Call coladvance() before starting the new line. - -When using |:shell| ignore clicks on the tab page labels. Also when using the -command line window. - -When 'eventignore' is "all" then adding more to ignoring some events, e.g., -for ":vimgrep", would actually trigger more events. - -Win32: When a running Vim uses server name GVIM1 then "gvim --remote fname" -didn't find it. When looking for a server name that doesn't end in a digit -and it is not found then use another server with that name and a number (just -like on Unix). - -When using "double" in 'spellsuggest' when the language doesn't support sound -folding resulted in too many suggestions. - -Win32: Dropping a shortcut on the Vim icon didn't edit the referred file like -editing it in another way would. Use fname_expand() in buf_set_name() instead -of simply make the file name a full path. - -Using feedkeys() could cause Vim to hang. - -When closing another tab page from the tabline menu in Insert mode the tabline -was not updated right away. - -The syntax menu didn't work in compatible mode. - -After using ":tag id" twice with the same "id", ":ts" and then ":pop" a ":ts" -reported no matching tag. Clear the cached tag name. - -In Insert mode the matchparen plugin highlighted the wrong paren when there is -a string just next to a paren. - -GTK: After opening a new tab page the text was sometimes not drawn correctly. -Flush output and catch up with events when updating the tab page labels. - -In the GUI, using CTRL-W q to close the last window of a tab page could cause -a crash. - -GTK: The tab pages line menu was not converted from 'encoding' to utf-8. - -Typing a multi-byte character or a special key at the hit-enter prompt did not -work. - -When 'virtualedit' contains "onemore" CTRL-O in Insert mode still moved the -cursor left when it was after the end of the line, even though it's allowed to -be there. - -Added test for using tab pages. - -towupper() and towlower() were not used, because of checking for -__STDC__ISO_10646__ instead of __STDC_ISO_10646__. (sertacyildiz) - -For ":map <expr>" forbid changing the text, jumping to another buffer and -using ":normal" to avoid nasty side effects. - ---- fixes and changes since Vim 7.0g --- - -Compilation error on HP-UX, use of "dlerr" must be inside a #ifdef. -(Gary Johnson) - -Report +reltime feature in ":version" output. - -The tar and zip plugins detect failure to get the contents of the archive and -edit the file as-is. - -When the result of 'guitablabel' is empty fall back to the default label. - -Fixed crash when using ":insert" in a while loop and missing "endwhile". - -"gt" and other commands could move to another window when |textlock| active -and when the command line window was open. - -Spell checking a file with syntax highlighting and a bad word at the end of -the line is ignored could make "]s" hang. - -Mac: inputdialog() didn't work when compiled with big features. - -Interrupting ":vimgrep" while it is busy loading a file left a modified and -hidden buffer behind. Use enter_cleanup() and leave_cleanup() around -wipe_buffer(). - -When making 'keymap' empty the b:keymap_name variable wasn't deleted. - -Using CTRL-N that searches a long time, pressing space to interrupt the -searching and accept the first match, the popup menu was still displayed -briefly. - -When setting the Vim window height with -geometry the 'window' option could be -at a value that makes CTRL-F behave differently. - -When opening a quickfix window in two tabs they used different buffers, -causing redrawing problems later. Now use the same buffer for all quickfix -windows. (Yegappan Lakshmanan) - -When 'mousefocus' is set moving the mouse to the text tab pages line would -move focus to the first window. Also, the mouse pointer would jump to the -active window. - -In a session file, when an empty buffer is wiped out, do this silently. - -When one window has the cursor on the last line and another window is resized -to make that window smaller, the cursor line could go below the displayed -lines. In win_new_height() subtract one from the available space. -Also avoid that using "~" lines makes the window scroll down. - -Mac: When sourcing the "macmap.vim" script and then finding a .vimrc file the -'cpo' option isn't set properly, because it was already set and restored. -Added the <special> argument to ":map", so that 'cpo' doesn't need to be -changed to be able to use <> notation. Also do this for ":menu" for -consistency. - -When using "/encoding=abc" in a spell word list, only "bc" was used. - -When 'encoding' and 'printencoding' were both "utf-8" then ":hardcopy" didn't -work. (Mike Williams) - -Mac: When building with "--disable-gui" the install directory would still be -"/Applications" and Vim.app would be installed. Now install in /usr/local as -usual for a console application. - -GUI: when doing completion and there is one match and still searching for -another, the cursor was displayed at the end of the line instead of after the -match. Now show the cursor after the match while still searching for matches. - -GUI: The mouse shape changed on the statusline even when 'mouse' was empty and -they can't be dragged. - -GTK2: Selecting a button in the confirm() dialog with Tab or cursor keys and -hitting Enter didn't select that button. Removed GTK 1 specific code. (Neil -Bird) - -When evaluating 'balloonexpr' takes a long time it could be called -recursively, which could cause a crash. - -exists() could not be used to detect whether ":2match" is supported. Added a -check for it specifically. - -GTK1: Tab page labels didn't work. (Yegappan Lakshmanan) - -Insert mode completion: When finding matches use 'ignorecase', but when adding -matches to the list don't use it, so that all words with different case are -added, "word", "Word" and "WORD". - -When 'cursorline' and 'hlsearch' are set and the search pattern is "x\n" -the rest of the line was highlighted as a match. - -Cursor moved while evaluating 'balloonexpr' that invokes ":isearch" and -redirects the output. Don't move the cursor to the command line if msg_silent -is set. - -exists() ignored text after a function name and option name, which could -result in false positives. - -exists() ignored characters after the recognized word, which can be wrong when -using a name with non-keyword characters. Specifically, these calls no longer -allow characters after the name: exists('*funcname') exists('*funcname(...') -exists('&option') exists(':cmd') exists('g:name') exists('g:name[n]') -exists('g:name.n') - -Trigger the TabEnter autocommand only after entering the current window of the -tab page, otherwise the commands are executed with an invalid current window. - -Win32: When using two monitors and Vim is on the second monitor, changing the -width of the Vim window could make it jump to the first monitor. - -When scrolling back at the more prompt and the quitting a line of text would -be left behind when 'cmdheight' is 2 or more. - -Fixed a few things for Insert mode completion, especially when typing BS, -CTRL-N or a printable character while still searching for matches. - - -============================================================================== -VERSION 7.1 *version-7.1* *version7.1* - -This section is about improvements made between version 7.0 and 7.1. - -This is a bug-fix release, there are no fancy new features. - - -Changed *changed-7.1* -------- - -Added setting 'mouse' in vimrc_example.vim. - -When building with MZscheme also look for include files in the "plt" -subdirectory. That's where they are for FreeBSD. - -The Ruby interface module is now called "Vim" instead of "VIM". But "VIM" is -an alias, so it's backwards compatible. (Tim Pope) - - -Added *added-7.1* ------ - -New syntax files: - /var/log/messages (Yakov Lerner) - Autohotkey (Nikolai Weibull) - AutoIt v3 (Jared Breland) - Bazaar commit file "bzr". (Dmitry Vasiliev) - Cdrdao TOC (Nikolai Weibull) - Cmusrc (Nikolai Weibull) - Conary recipe (rPath Inc) - Framescript (Nikolai Weibull) - FreeBasic (Mark Manning) - Hamster (David Fishburn) - IBasic (Mark Manning) - Initng (Elan Ruusamae) - Ldapconf (Nikolai Weibull) - Litestep (Nikolai Weibull) - Privoxy actions file (Doug Kearns) - Streaming Descriptors "sd" (Puria Nafisi Azizi) - -New tutor files: - Czech (Lubos Turek) - Hungarian (Arpad Horvath) - Turkish (Serkan kkk) - utf-8 version of Greek tutor. - utf-8 version of Russian tutor. - utf-8 version of Slowak tutor. - -New filetype plugins: - Bst (Tim Pope) - Cobol (Tim Pope) - Fvwm (Gautam Iyer) - Hamster (David Fishburn) - Django HTML template (Dave Hodder) - -New indent files: - Bst (Tim Pope) - Cobol (Tim Pope) - Hamster (David Fishburn) - Django HTML template (Dave Hodder) - Javascript - JSP (David Fishburn) - -New keymap files: - Bulgarian (Boyko Bantchev) - Mongolian (Natsagdorj Shagdar) - Thaana (Ibrahim Fayaz) - Vietnamese (Samuel Thibault) - -Other new runtime files: - Ada support files. (Neil Bird, Martin Krischik) - Slovenian menu translations (Mojca Miklavec) - Mono C# compiler plugin (Jarek Sobiecki) - - -Fixed *fixed-7.1* ------ - -Could not build the Win32s version. Added a few structure definitions in -src/gui_w32.c - - -Patch 7.0.001 -Problem: ":set spellsuggest+=10" does not work. (Suresh Govindachar) -Solution: Add P_COMMA to the 'spellsuggest' flags. -Files: src/option.c - -Patch 7.0.002 -Problem: C omni completion has a problem with tags files with a path - containing "#" or "%". -Solution: Escape these characters. (Sebastian Baberowski) -Files: runtime/autoload/ccomplete.vim - -Patch 7.0.003 -Problem: GUI: clicking in the lower part of a label in the tab pages line - while 'mousefocus' is set may warp the mouse pointer. (Robert - Webb) -Solution: Check for a negative mouse position. -Files: src/gui.c - -Patch 7.0.004 -Problem: Compiler warning for debug_saved used before set. (Todd Blumer) -Solution: Remove the "else" for calling save_dbg_stuff(). -Files: src/ex_docmd.c - -Patch 7.0.005 (extra) -Problem: Win32: The installer doesn't remove the "autoload" and "spell" - directories. (David Fishburn) -Solution: Add the directories to the list to be removed. -Files: nsis/gvim.nsi - -Patch 7.0.006 -Problem: Mac: "make shadow" doesn't make a link for infplist.xml. (Axel - Kielhorn) -Solution: Make the link. -Files: src/Makefile - -Patch 7.0.007 -Problem: AIX: compiling fails for message.c. (Ruediger Hornig) -Solution: Move the #if outside of memchr(). -Files: src/message.c - -Patch 7.0.008 -Problem: Can't call a function that uses both <SID> and {expr}. (Thomas) -Solution: Check both the expanded and unexpanded name for <SID>. -Files: src/eval.c - -Patch 7.0.009 -Problem: ml_get errors with both 'sidescroll' and 'spell' set. -Solution: Use ml_get_buf() instead of ml_get(), get the line from the right - buffer, not the current one. -Files: src/spell.c - -Patch 7.0.010 -Problem: The spellfile plugin required typing login name and password. -Solution: Use "anonymous" and "vim7user" by default. No need to setup a - .netrc file. -Files: runtime/autoload/spellfile.vim - -Patch 7.0.011 -Problem: Can't compile without the folding and with the eval feature. -Solution: Add an #ifdef. (Vallimar) -Files: src/option.c - -Patch 7.0.012 -Problem: Using the matchparen plugin, moving the cursor in Insert mode to a - shorter line that ends in a brace, changes the preferred column -Solution: Use winsaveview()/winrestview() instead of getpos()/setpos(). -Files: runtime/plugin/matchparen.vim - -Patch 7.0.013 -Problem: Insert mode completion: using CTRL-L to add an extra character - also deselects the current match, making it impossible to use - CTRL-L a second time. -Solution: Keep the current match. Also make CTRL-L work at the original - text, using the first displayed match. -Files: src/edit.c - -Patch 7.0.014 -Problem: Compiling gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe) -Solution: Disable some code for Motif 1.2 and older. -Files: src/gui_xmebw.c - -Patch 7.0.015 -Problem: Athena: compilation problems with modern compiler. -Solution: Avoid type casts for lvalue. (Alexey Froloff) -Files: src/gui_at_fs.c - -Patch 7.0.016 -Problem: Printing doesn't work for "dec-mcs" encoding. -Solution: Add "dec-mcs", "mac-roman" and "hp-roman8" to the list of - recognized 8-bit encodings. (Mike Williams) -Files: src/mbyte.c - -Patch 7.0.017 (after 7.0.014) -Problem: Linking gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe) -Solution: Adjust defines for Motif 1.2 and older. -Files: src/gui_xmebw.c - -Patch 7.0.018 -Problem: VMS: plugins are not loaded on startup. -Solution: Remove "**" from the path. (Zoltan Arpadffy) -Files: src/main.c - -Patch 7.0.019 -Problem: Repeating "VjA789" may cause a crash. (James Vega) -Solution: Check the cursor column after moving it to another line. -Files: src/ops.c - -Patch 7.0.020 -Problem: Crash when using 'mousefocus'. (William Fulton) -Solution: Make buffer for mouse coordinates 2 bytes longer. (Juergen Weigert) -Files: src/gui.c - -Patch 7.0.021 -Problem: Crash when using "\\[" and "\\]" in 'errorformat'. (Marc Weber) -Solution: Check for valid submatches after matching the pattern. -Files: src/quickfix.c - -Patch 7.0.022 -Problem: Using buffer.append() in Ruby may append the line to the wrong - buffer. (Alex Norman) -Solution: Properly switch to the buffer to do the appending. Also for - buffer.delete() and setting a buffer line. -Files: src/if_ruby.c - -Patch 7.0.023 -Problem: Crash when doing spell completion in an empty line and pressing - CTRL-E. -Solution: Check for a zero pointer. (James Vega) - Also handle a situation without a matching pattern better, report - "No matches" instead of remaining in undefined CTRL-X mode. And - get out of CTRL-X mode when typing a letter. -Files: src/edit.c - -Patch 7.0.024 -Problem: It is possible to set arbitrary "v:" variables. -Solution: Disallow setting "v:" variables that are not predefined. -Files: src/eval.c - -Patch 7.0.025 -Problem: Crash when removing an element of a:000. (Nikolai Weibull) -Solution: Mark the a:000 list with VAR_FIXED. -Files: src/eval.c - -Patch 7.0.026 -Problem: Using libcall() may show an old error. -Solution: Invoke dlerror() to clear a previous error. (Yukihiro Nakadaira) -Files: src/os_unix.c - -Patch 7.0.027 (extra) -Problem: Win32: When compiled with SNIFF gvim may hang on exit. -Solution: Translate and dispatch the WM_USER message. (Mathias Michaelis) -Files: src/gui_w48.c - -Patch 7.0.028 (extra) -Problem: OS/2: Vim doesn't compile with gcc 3.2.1. -Solution: Add argument to after_pathsep(), don't define vim_handle_signal(), - define HAVE_STDARG_H. (David Sanders) -Files: src/os_unix.c, src/vim.h, src/os_os2_cfg.h - -Patch 7.0.029 -Problem: getchar() may not position the cursor after a space. -Solution: Position the cursor explicitly. -Files: src/eval.c - -Patch 7.0.030 -Problem: The ":compiler" command can't be used in a FileChangedRO event. - (Hari Krishna Dara) -Solution: Add the CMDWIN flag to the ":compiler" command. -Files: src/ex_cmds.h - -Patch 7.0.031 -Problem: When deleting a buffer the buffer-local mappings for Select mode - remain. -Solution: Add the Select mode bit to MAP_ALL_MODES. (Edwin Steiner) -Files: src/vim.h - -Patch 7.0.032 (extra, after 7.0.027) -Problem: Missing semicolon. -Solution: Add the semicolon. -Files: src/gui_w48.c - -Patch 7.0.033 -Problem: When pasting text, with the menu or CTRL-V, autoindent is removed. -Solution: Use "x<BS>" to avoid indent to be removed. (Benji Fisher) -Files: runtime/autoload/paste.vim - -Patch 7.0.034 -Problem: After doing completion and typing more characters or using BS - repeating with "." didn't work properly. (Martin Stubenschrott) -Solution: Don't put BS and other characters in the redo buffer right away, - do this when finishing completion. -Files: src/edit.c - -Patch 7.0.035 -Problem: Insert mode completion works when typed but not when replayed from - a register. (Hari Krishna Dara) - Also: Mappings for Insert mode completion don't always work. -Solution: When finding a non-completion key in the input don't interrupt - completion when it wasn't typed. - Do use mappings when checking for typeahead while still finding - completions. Avoids that completion is interrupted too soon. - Use "compl_pending" in a different way. -Files: src/edit.c - -Patch 7.0.036 -Problem: Can't compile with small features and syntax highlighting or the - diff feature. -Solution: Define LINE_ATTR whenever syntax highlighting or the diff feature - is enabled. -Files: src/screen.c - -Patch 7.0.037 -Problem: Crash when resizing the GUI window vertically when there is a line - that doesn't fit. -Solution: Don't redraw while the screen data is invalid. -Files: src/screen.c - -Patch 7.0.038 -Problem: When calling complete() from an Insert mode expression mapping - text could be inserted in an improper way. -Solution: Make undo_allowed() global and use it in complete(). -Files: src/undo.c, src/proto/undo.pro, src/eval.c - -Patch 7.0.039 -Problem: Calling inputdialog() with a third argument in the console doesn't - work. -Solution: Make a separate function for input() and inputdialog(). (Yegappan - Lakshmanan) -Files: src/eval.c - -Patch 7.0.040 -Problem: When 'cmdheight' is larger than 1 using inputlist() or selecting - a spell suggestion with the mouse gets the wrong entry. -Solution: Start listing the first alternative on the last line of the screen. -Files: src/eval.c, src/spell.c - -Patch 7.0.041 -Problem: cursor([1, 1]) doesn't work. (Peter Hodge) -Solution: Allow leaving out the third item of the list and use zero for the - virtual column offset. -Files: src/eval.c - -Patch 7.0.042 -Problem: When pasting a block of text in Insert mode Vim hangs or crashes. - (Noam Halevy) -Solution: Avoid that the cursor is positioned past the NUL of a line. -Files: src/ops.c - -Patch 7.0.043 -Problem: Using "%!" at the start of 'statusline' doesn't work. -Solution: Recognize the special item when the option is being set. -Files: src/option.c - -Patch 7.0.044 -Problem: Perl: setting a buffer line in another buffer may result in - changing the current buffer. -Solution: Properly change to the buffer to be changed. -Files: src/if_perl.xs - -Patch 7.0.045 (extra) -Problem: Win32: Warnings when compiling OLE version with MSVC 2005. -Solution: Move including vim.h to before windows.h. (Ilya Bobir) -Files: src/if_ole.cpp - -Patch 7.0.046 -Problem: The matchparen plugin ignores parens in strings, but not in single - quotes, often marked with "character". -Solution: Also ignore parens in syntax items matching "character". -Files: runtime/plugin/matchparen.vim - -Patch 7.0.047 -Problem: When running configure the exit status is wrong. -Solution: Handle the exit status properly. (Matthew Woehlke) -Files: configure, src/configure - -Patch 7.0.048 -Problem: Writing a compressed file fails when there are parens in the name. - (Wang Jian) -Solution: Put quotes around the temp file name. -Files: runtime/autoload/gzip.vim - -Patch 7.0.049 -Problem: Some TCL scripts are not recognized. (Steven Atkinson) -Solution: Check for "exec wish" in the file. -Files: runtime/scripts.vim - -Patch 7.0.050 -Problem: After using the netbeans interface close command a stale pointer - may be used. -Solution: Clear the pointer to the closed buffer. (Xaview de Gaye) -Files: src/netbeans.c - -Patch 7.0.051 (after 7.0.44) -Problem: The Perl interface doesn't compile or doesn't work properly. -Solution: Remove the spaces before #ifdef and avoid an empty line above it. -Files: src/if_perl.xs - -Patch 7.0.052 -Problem: The user may not be aware that the Vim server allows others more - functionality than desired. -Solution: When running Vim as root don't become a Vim server without an - explicit --servername argument. -Files: src/main.c - -Patch 7.0.053 -Problem: Shortening a directory name may fail when there are multi-byte - characters. -Solution: Copy the correct bytes. (Titov Anatoly) -Files: src/misc1.c - -Patch 7.0.054 -Problem: Mac: Using a menu name that only has a mnemonic or accelerator - causes a crash. (Elliot Shank) -Solution: Check for an empty menu name. Also delete empty submenus that - were created before detecting the error. -Files: src/menu.c - -Patch 7.0.055 -Problem: ":startinsert" in a CmdwinEnter autocommand doesn't take immediate - effect. (Bradley White) -Solution: Put a NOP key in the typeahead buffer. Also avoid that using - CTRL-C to go back to the command line moves the cursor left. -Files: src/edit.c, src/ex_getln.c - -Patch 7.0.056 -Problem: "#!something" gives an error message. -Solution: Ignore this line, so that it can be used in an executable Vim - script. -Files: src/ex_docmd.c - -Patch 7.0.057 (extra, after 7.0.45) -Problem: Win32: Compilation problem with Borland C 5.5. -Solution: Include vim.h as before. (Mark S. Williams) -Files: src/if_ole.cpp - -Patch 7.0.058 -Problem: The gbk and gb18030 encodings are not recognized. -Solution: Add aliases to cp936. (Edward L. Fox) -Files: src/mbyte.c - -Patch 7.0.059 -Problem: The Perl interface doesn't compile with ActiveState Perl 5.8.8. -Solution: Remove the __attribute__() items. (Liu Yubao) -Files: src/if_perl.xs - -Patch 7.0.060 (after 7.0.51) -Problem: Code for temporarily switching to another buffer is duplicated in - quite a few places. -Solution: Use aucmd_prepbuf() and aucmd_restbuf() also when FEAT_AUTOCMD is - not defined. -Files: src/buffer.c, src/eval.c, src/fileio.c, src/if_ruby.c, - src/if_perl.xs, src/quickfix.c, src/structs.h - -Patch 7.0.061 -Problem: Insert mode completion for Vim commands may crash if there is - nothing to complete. -Solution: Instead of freeing the pattern make it empty, so that a "not - found" error is given. (Yukihiro Nakadaira) -Files: src/edit.c - -Patch 7.0.062 -Problem: Mac: Crash when using the popup menu for spell correction. The - popup menu appears twice when letting go of the right mouse button - early. -Solution: Don't show the popup menu on the release of the right mouse - button. Also check that a menu pointer is actually valid. -Files: src/proto/menu.pro, src/menu.c, src/normal.c, src/term.c - -Patch 7.0.063 -Problem: Tiny chance for a memory leak. (coverity) -Solution: Free pointer when next memory allocation fails. -Files: src/eval.c - -Patch 7.0.064 -Problem: Using uninitialized variable. (Tony Mechelynck) -Solution: When not used set "temp" to zero. Also avoid a warning for - "files" in ins_compl_dictionaries(). -Files: src/edit.c - -Patch 7.0.065 (extra) -Problem: Mac: left-right movement of the scrollwheel causes up-down - scrolling. -Solution: Ignore mouse wheel events that are not up-down. (Nicolas Weber) -Files: src/gui_mac.c - -Patch 7.0.066 -Problem: After the popup menu for Insert mode completion overlaps the tab - pages line it is not completely removed. -Solution: Redraw the tab pages line after removing the popup menu. (Ori - Avtalion) -Files: src/popupmnu.c - -Patch 7.0.067 -Problem: Undo doesn't always work properly when using "scim" input method. - Undo is split up when using preediting. -Solution: Reset xim_has_preediting also when preedit_start_col is not - MAXCOL. Don't split undo when <Left> is used while preediting. - (Yukihiro Nakadaira) -Files: src/edit.c, src/mbyte.c - -Patch 7.0.068 -Problem: When 'ignorecase' is set and using Insert mode completion, - typing characters to change the list of matches, case is not - ignored. (Hugo Ahlenius) -Solution: Store the 'ignorecase' flag with the matches where needed. -Files: src/edit.c, src/search.c, src/spell.c - -Patch 7.0.069 -Problem: Setting 'guitablabel' to %!expand(\%) causes Vim to free an - invalid pointer. (Kim Schulz) -Solution: Don't try freeing a constant string pointer. -Files: src/buffer.c - -Patch 7.0.070 -Problem: Compiler warnings for shadowed variables and uninitialized - variables. -Solution: Rename variables such as "index", "msg" and "dup". Initialize - variables. -Files: src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, - src/ex_docmd.c, src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_x11.c, - src/hardcopy.c, src/if_cscope.c, src/main.c, src/mbyte.c, - src/memline.c, src/netbeans.c, src/normal.c, src/option.c, - src/os_unix.c, src/quickfix.c, src/regexp.c, src/screen.c, - src/search.c, src/spell.c, src/ui.c, src/undo.c, src/window.c, - src/version.c - -Patch 7.0.071 -Problem: Using an empty search pattern may cause a crash. -Solution: Avoid using a NULL pointer. -Files: src/search.c - -Patch 7.0.072 -Problem: When starting the GUI fails there is no way to adjust settings or - do something else. -Solution: Add the GUIFailed autocommand event. -Files: src/fileio.c, src/gui.c, src/vim.h - -Patch 7.0.073 -Problem: Insert mode completion: Typing <CR> sometimes selects the original - text instead of keeping what was typed. (Justin Constantino) -Solution: Don't let <CR> select the original text if there is no popup menu. -Files: src/edit.c - -Patch 7.0.074 (extra) -Problem: Win32: tooltips were not converted from 'encoding' to Unicode. -Solution: Set the tooltip to use Unicode and do the conversion. Also - cleanup the code for the tab pages tooltips. (Yukihiro Nakadaira) -Files: src/gui_w32.c, src/gui_w48.c - -Patch 7.0.075 -Problem: winsaveview() did not store the actual value of the desired cursor - column. This could move the cursor in the matchparen plugin. -Solution: Call update_curswant() before using the value w_curswant. -Files: src/eval.c - -Patch 7.0.076 (after 7.0.010) -Problem: Automatic downloading of spell files only works for ftp. -Solution: Don't add login and password for non-ftp URLs. (Alexander Patrakov) -Files: runtime/autoload/spellfile.vim - -Patch 7.0.077 -Problem: ":unlet v:this_session" causes a crash. (Marius Roets) -Solution: When trying to unlet a fixed variable give an error message. -Files: src/eval.c - -Patch 7.0.078 -Problem: There are two error messages E46. -Solution: Change the number for the sandbox message to E794. -Files: src/globals.h - -Patch 7.0.079 -Problem: Russian tutor doesn't work when 'encoding' is "utf-8". -Solution: Use tutor.ru.utf-8 as the master, and generate the other encodings - from it. Select the right tutor depending on 'encoding'. (Alexey - Froloff) -Files: runtime/tutor/Makefile, runtime/tutor/tutor.vim, - runtime/tutor/tutor.ru.utf-8 - -Patch 7.0.080 -Problem: Generating auto/pathdef.c fails for CFLAGS with a backslash. -Solution: Double backslashes in the string. (Alexey Froloff) -Files: src/Makefile - -Patch 7.0.081 -Problem: Command line completion doesn't work for a shell command with an - absolute path. -Solution: Don't use $PATH when there is an absolute path. -Files: src/ex_getln.c - -Patch 7.0.082 -Problem: Calling a function that waits for input may cause List and - Dictionary arguments to be freed by the garbage collector. -Solution: Keep a list of all arguments to internal functions. -Files: src/eval.c - -Patch 7.0.083 -Problem: Clicking with the mouse on an item for inputlist() doesn't work - when 'compatible' is set and/or when 'cmdheight' is more than one. - (Christian J. Robinson) -Solution: Also decrement "lines_left" when 'more' isn't set. Set - "cmdline_row" to zero to get all mouse events. -Files: src/message.c, src/misc1.c - -Patch 7.0.084 -Problem: The garbage collector may do its work while some Lists or - Dictionaries are used internally, e.g., by ":echo" that runs into - the more-prompt or ":echo [garbagecollect()]". -Solution: Only do garbage collection when waiting for a character at the - toplevel. Let garbagecollect() set a flag that is handled at the - toplevel before waiting for a character. -Files: src/eval.c, src/getchar.c, src/globals.h, src/main.c - -Patch 7.0.085 -Problem: When doing "make test" the viminfo file is modified. -Solution: Use another viminfo file after setting 'compatible. -Files: src/testdir/test56.in - -Patch 7.0.086 -Problem: getqflist() returns entries for pattern and text with the number - zero. Passing these to setqflist() results in the string "0". -Solution: Use an empty string instead of the number zero. -Files: src/quickfix.c - -Patch 7.0.087 -Problem: After ":file fname" and ":saveas fname" the 'autochdir' option - does not take effect. (Yakov Lerner) - Commands for handling 'autochdir' are repeated many times. -Solution: Add the DO_AUTOCHDIR macro and do_autochdir(). Use it for - ":file fname" and ":saveas fname". -Files: src/proto/buffer.pro, src/buffer.c, src/ex_cmds.c, src/macros.h, - src/netbeans.c, src/option.c, src/window.c - -Patch 7.0.088 -Problem: When compiled with Perl the generated prototypes have "extern" - unnecessarily added. -Solution: Remove the "-pipe" argument from PERL_CFLAGS. -Files: src/auto/configure, src/configure.in - -Patch 7.0.089 -Problem: "ga" does not work properly for a non-Unicode multi-byte encoding. -Solution: Only check for composing chars for utf-8. (Taro Muraoka) -Files: src/ex_cmds.c - -Patch 7.0.090 -Problem: Cancelling the conform() dialog on the console with Esc requires - typing it twice. (Benji Fisher) -Solution: When the start of an escape sequence is found use 'timeoutlen' or - 'ttimeoutlen'. -Files: src/misc1.c - -Patch 7.0.091 -Problem: Using winrestview() while 'showcmd' is set causes the cursor to be - displayed in the wrong position. (Yakov Lerner) -Solution: Set the window topline properly. -Files: src/eval.c - -Patch 7.0.092 (after 7.0.082 and 7.0.084) -Problem: The list of internal function arguments is obsolete now that - garbage collection is only done at the toplevel. -Solution: Remove the list of all arguments to internal functions. -Files: src/eval.c - -Patch 7.0.093 -Problem: The matchparen plugin can't handle a 'matchpairs' value where a - colon is matched. -Solution: Change the split() that is used to change 'matchpairs' into a - List. -Files: runtime/plugin/matchparen.vim - -Patch 7.0.094 -Problem: When a hidden buffer is made the current buffer and another file - edited later, the file message will still be given. Using - ":silent" also doesn't prevent the file message. (Marvin Renich) -Solution: Reset the need_fileinfo flag when reading a file. Don't set - need_fileinfo when msg_silent is set. -Files: src/buffer.c, src/fileio.c - -Patch 7.0.095 -Problem: The Greek tutor is not available in utf-8. "el" is used for the - language, only "gr" for the country is recognized. -Solution: Add the utf-8 Greek tutor. Use it for conversion to iso-8859-7 - and cp737. (Lefteris Dimitroulakis) -Files: runtime/tutor/Makefile, runtime/tutor/tutor.gr.utf-8, - runtime/tutor/tutor.vim - -Patch 7.0.096 -Problem: taglist() returns the filename relative to the tags file, while - the directory of the tags file is unknown. (Hari Krishna Dara) -Solution: Expand the file name. (Yegappan Lakshmanan) -Files: src/tag.c - -Patch 7.0.097 -Problem: ":tabclose N" that closes another tab page does not remove the tab - pages line. Same problem when using the mouse. -Solution: Adjust the tab pages line when needed in tabpage_close_other(). -Files: src/ex_docmd.c - -Patch 7.0.098 -Problem: Redirecting command output in a cmdline completion function - doesn't work. (Hari Krishna Dara) -Solution: Enable redirection when redirection is started. -Files: src/ex_docmd.c, src/ex_getln.c - -Patch 7.0.099 -Problem: GUI: When the popup menu is visible using the scrollbar messes up - the display. -Solution: Disallow scrolling the current window. Redraw the popup menu - after scrolling another window. -Files: src/gui.c - -Patch 7.0.100 -Problem: "zug" may report the wrong filename. (Lawrence Kesteloot) -Solution: Call home_replace() to fill NameBuff[]. -Files: src/spell.c - -Patch 7.0.101 -Problem: When the "~/.vim/spell" directory does not exist "zg" may create - a wrong directory. "zw" doesn't work. -Solution: Use the directory of the file name instead of NameBuff. For "zw" - not only remove a good word but also add the word with "!". -Files: src/spell.c - -Patch 7.0.102 -Problem: Redrawing cmdline is not correct when using SCIM. -Solution: Don't call im_get_status(). (Yukihiro Nakadaira) -Files: src/ex_getln.c - -Patch 7.0.103 (after 7.0.101) -Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) -Solution: Init variable. -Files: src/spell.c - -Patch 7.0.104 -Problem: The CursorHoldI event only triggers once in Insert mode. It also - triggers after CTRL-V and other two-key commands. -Solution: Set "did_cursorhold" before getting a second key. Reset - "did_cursorhold" after handling a command. -Files: src/edit.c, src/fileio.c - -Patch 7.0.105 -Problem: When using incremental search the statusline ruler isn't updated. - (Christoph Koegl) -Solution: Update the statusline when it contains the ruler. -Files: src/ex_getln.c - -Patch 7.0.106 -Problem: The spell popup menu uses ":amenu", triggering mappings. Other - PopupMenu autocommands are removed. (John Little) -Solution: Use ":anoremenu" and use an autocmd group. -Files: runtime/menu.vim - -Patch 7.0.107 -Problem: Incremental search doesn't redraw the text tabline. (Ilya Bobir) - Also happens in other situations with one window in a tab page. -Solution: Redraw the tabline after clearing the screen. -Files: src/screen.c - -Patch 7.0.108 (extra) -Problem: Amiga: Compilation problem. -Solution: Have mch_mkdir() return a failure flag. (Willy Catteau) -Files: src/os_amiga.c, src/proto/os_amiga.pro - -Patch 7.0.109 -Problem: Lisp indenting is confused by escaped quotes in strings. (Dorai - Sitaram) -Solution: Check for backslash inside strings. (Sergey Khorev) -Files: src/misc1.c - -Patch 7.0.110 -Problem: Amiga: Compilation problems when not using libnix. -Solution: Change a few #ifdefs. (Willy Catteau) -Files: src/memfile.c - -Patch 7.0.111 -Problem: The gzip plugin can't handle filenames with single quotes. -Solution: Add and use the shellescape() function. (partly by Alexey Froloff) -Files: runtime/autoload/gzip.vim, runtime/doc/eval.txt, src/eval.c, - src/mbyte.c, src/misc2.c, src/proto/misc2.pro - -Patch 7.0.112 -Problem: Python interface does not work with Python 2.5. -Solution: Change PyMem_DEL() to Py_DECREF(). (Sumner Hayes) -Files: src/if_python.c - -Patch 7.0.113 -Problem: Using CTRL-L in Insert completion when there is no current match - may cause a crash. (Yukihiro Nakadaira) -Solution: Check for compl_leader to be NULL -Files: src/edit.c - -Patch 7.0.114 -Problem: When aborting an insert with CTRL-C an extra undo point is - created in the GUI. (Yukihiro Nakadaira) -Solution: Call gotchars() only when advancing. -Files: src/getchar.c - -Patch 7.0.115 -Problem: When 'ignorecase' is set, Insert mode completion only adds "foo" - and not "Foo" when both are found. - A found match isn't displayed right away when 'completeopt' does - not have "menu" or "menuone". -Solution: Do not ignore case when checking if a completion match already - exists. call ins_compl_check_keys() also when not using a popup - menu. (Yukihiro Nakadaira) -Files: src/edit.c - -Patch 7.0.116 -Problem: 64 bit Windows version reports "32 bit" in the ":version" output. - (M. Veerman) -Solution: Change the text for Win64. -Files: src/version.c - -Patch 7.0.117 -Problem: Using "extend" on a syntax item inside a region with "keepend", an - intermediate item may be truncated. - When applying the "keepend" and there is an offset to the end - pattern the highlighting of a contained item isn't adjusted. -Solution: Use the seen_keepend flag to remember when to apply the "keepend" - flag. Adjust the keepend highlighting properly. (Ilya Bobir) -Files: src/syntax.c - -Patch 7.0.118 -Problem: printf() does not do zero padding for strings. -Solution: Do allow zero padding for strings. -Files: src/message.c - -Patch 7.0.119 -Problem: When going back from Insert to Normal mode the CursorHold event - doesn't trigger. (Yakov Lerner) -Solution: Reset "did_cursorhold" when leaving Insert mode. -Files: src/edit.c - -Patch 7.0.120 -Problem: Crash when using CTRL-R = at the command line and entering - "getreg('=')". (James Vega) -Solution: Avoid recursiveness of evaluating the = register. -Files: src/ops.c - -Patch 7.0.121 -Problem: GUI: Dragging the last status line doesn't work when there is a - text tabline. (Markus Wolf) -Solution: Take the text tabline into account when deciding to start modeless - selection. -Files: src/gui.c - -Patch 7.0.122 -Problem: GUI: When clearing after a bold, double-wide character half a - character may be drawn. -Solution: Check for double-wide character and redraw it. (Yukihiro Nakadaira) -Files: src/screen.c - -Patch 7.0.123 -Problem: On SCO Openserver configure selects the wrong terminal library. -Solution: Put terminfo before the other libraries. (Roger Cornelius) - Also fix a small problem compiling on Mac without Darwin. -Files: src/configure.in, src/auto/configure - -Patch 7.0.124 -Problem: getwinvar() obtains a dictionary with window-local variables, but - it's always for the current window. -Solution: Get the variables of the specified window. (Geoff Reedy) -Files: src/eval.c - -Patch 7.0.125 -Problem: When "autoselect" is in the 'clipboard' option then the '< and '> - marks are set while Visual mode is still active. -Solution: Don't set the '< and '> marks when yanking the selected area for - the clipboard. -Files: src/normal.c - -Patch 7.0.126 -Problem: When 'formatexpr' uses setline() and later internal formatting is - used undo information is not correct. (Jiri Cerny, Benji Fisher) -Solution: Set ins_need_undo after using 'formatexpr'. -Files: src/edit.c - -Patch 7.0.127 -Problem: Crash when swap files has invalid timestamp. -Solution: Check return value of ctime() for being NULL. -Files: src/memline.c - -Patch 7.0.128 -Problem: GUI: when closing gvim is cancelled because there is a changed - buffer the screen isn't updated to show the changed buffer in the - current window. (Krzysztof Kacprzak) -Solution: Redraw when closing gvim is cancelled. -Files: src/gui.c - -Patch 7.0.129 -Problem: GTK GUI: the GTK file dialog can't handle a relative path. -Solution: Make the initial directory a full path before passing it to GTK. - (James Vega) Also postpone adding the default file name until - after setting the directory. -Files: src/gui_gtk.c - -Patch 7.0.130 (extra) -Problem: Win32: Trying to edit or write devices may cause Vim to get stuck. -Solution: Add the 'opendevice' option, default off. Disallow - reading/writing from/to devices when it's off. - Also detect more devices by the full name starting with "\\.\". -Files: runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h, - src/os_win32.c - -Patch 7.0.131 -Problem: Win32: "vim -r" does not list all the swap files. -Solution: Also check for swap files starting with a dot. -Files: src/memline.c - -Patch 7.0.132 (after 7.0.130) -Problem: Win32: Crash when Vim reads from stdin. -Solution: Only use mch_nodetype() when there is a file name. -Files: src/fileio.c - -Patch 7.0.133 -Problem: When searching included files messages are added to the history. -Solution: Set msg_hist_off for messages about scanning included files. - Set msg_silent to avoid message about wrapping around. -Files: src/edit.c, src/globals.h, src/message.c, src/search.c - -Patch 7.0.134 -Problem: Crash when comparing a recursively looped List or Dictionary. -Solution: Limit recursiveness for comparing to 1000. -Files: src/eval.c - -Patch 7.0.135 -Problem: Crash when garbage collecting list or dict with loop. -Solution: Don't use DEL_REFCOUNT but don't recurse into Lists and - Dictionaries when freeing them in the garbage collector. - Also add allocated Dictionaries to the list of Dictionaries to - avoid leaking memory. -Files: src/eval.c, src/proto/eval.pro, src/tag.c - -Patch 7.0.136 -Problem: Using "O" while matching parens are highlighted may not remove the - highlighting. (Ilya Bobir) -Solution: Also trigger CursorMoved when a line is inserted under the cursor. -Files: src/misc1.c - -Patch 7.0.137 -Problem: Configure check for big features is wrong. -Solution: Change "==" to "=". (Martti Kuparinen) -Files: src/auto/configure, src/configure.in - -Patch 7.0.138 (extra) -Problem: Mac: modifiers don't work with function keys. -Solution: Use GetEventParameter() to obtain modifiers. (Nicolas Weber) -Files: src/gui_mac.c - -Patch 7.0.139 -Problem: Using CTRL-PageUp or CTRL-PageDown in Insert mode to go to another - tab page does not prepare for undo properly. (Stefano Zacchiroli) -Solution: Call start_arrow() before switching tab page. -Files: src/edit.c - -Patch 7.0.140 (after 7.0.134) -Problem: Comparing recursively looped List or Dictionary doesn't work well. -Solution: Detect comparing a List or Dictionary with itself. -Files: src/eval.c - -Patch 7.0.141 -Problem: When pasting a while line on the command line an extra CR is added - literally. -Solution: Don't add the trailing CR when pasting with the mouse. -Files: src/ex_getln.c, src/proto/ops.pro, src/ops.c - -Patch 7.0.142 -Problem: Using the middle mouse button in Select mode to paste text results - in an extra "y". (Kriton Kyrimis) -Solution: Let the middle mouse button replace the selected text with the - contents of the clipboard. -Files: src/normal.c - -Patch 7.0.143 -Problem: Setting 'scroll' to its default value was not handled correctly. -Solution: Compare the right field to PV_SCROLL. -Files: src/option.c - -Patch 7.0.144 -Problem: May compare two unrelated pointers when matching a pattern against - a string. (Dominique Pelle) -Solution: Avoid calling reg_getline() when REG_MULTI is false. -Files: src/regexp.c - -Patch 7.0.145 (after 7.0.142) -Problem: Compiler warning. -Solution: Add type cast. -Files: src/normal.c - -Patch 7.0.146 -Problem: When 'switchbuf' is set to "usetab" and the current tab has only a - quickfix window, jumping to an error always opens a new window. - Also, when the buffer is open in another tab page it's not found. -Solution: Check for the "split" value of 'switchbuf' properly. Search in - other tab pages for the desired buffer. (Yegappan Lakshmanan) -Files: src/buffer.c, src/quickfix.c - -Patch 7.0.147 -Problem: When creating a session file and there are several tab pages and - some windows have a local directory a short file name may be used - when it's not valid. (Marius Roets) - A session with multiple tab pages may result in "No Name" buffers. - (Bill McCarthy) -Solution: Don't enter tab pages when going through the list, only use a - pointer to the first window in each tab page. - Use "tabedit" instead of "tabnew | edit" when possible. -Files: src/ex_docmd.c - -Patch 7.0.148 -Problem: When doing "call a.xyz()" and "xyz" does not exist in dictionary - "a" there is no error message. (Yegappan Lakshmanan) -Solution: Add the error message. -Files: src/eval.c - -Patch 7.0.149 -Problem: When resizing a window that shows "~" lines the text sometimes - jumps down. -Solution: Remove code that uses "~" lines in some situations. Fix the - computation of the screen line of the cursor. Also set w_skipcol - to handle very long lines. -Files: src/misc1.c, src/window.c - -Patch 7.0.150 -Problem: When resizing the Vim window scrollbinding doesn't work. (Yakov - Lerner) -Solution: Do scrollbinding in set_shellsize(). -Files: src/term.c - -Patch 7.0.151 -Problem: Buttons in file dialog are not according to Gnome guidelines. -Solution: Swap Cancel and Open buttons. (Stefano Zacchiroli) -Files: src/gui_gtk.c - -Patch 7.0.152 -Problem: Crash when using lesstif 2. -Solution: Fill in the extension field. (Ben Hutchings) -Files: src/gui_xmebw.c - -Patch 7.0.153 -Problem: When using cscope and opening the temp file fails Vim crashes. - (Kaya Bekiroglu) -Solution: Check for NULL pointer returned from mch_open(). -Files: src/if_cscope.c - -Patch 7.0.154 -Problem: When 'foldnextmax' is negative Vim can hang. (James Vega) -Solution: Avoid the fold level becoming negative. -Files: src/fold.c, src/syntax.c - -Patch 7.0.155 -Problem: When getchar() returns a mouse button click there is no way to get - the mouse coordinates. -Solution: Add v:mouse_win, v:mouse_lnum and v:mouse_col. -Files: runtime/doc/eval.txt, src/eval.c, src/vim.h - -Patch 7.0.156 (extra) -Problem: Vim doesn't compile for Amiga OS 4. -Solution: Various changes for Amiga OS4. (Peter Bengtsson) -Files: src/feature.h, src/mbyte.c, src/memfile.c, src/memline.c, - src/os_amiga.c, src/os_amiga.h, src/pty.c - -Patch 7.0.157 -Problem: When a function is used recursively the profiling information is - invalid. (Mikolaj Machowski) -Solution: Put the start time on the stack instead of in the function. -Files: src/eval.c - -Patch 7.0.158 -Problem: In a C file with ":set foldmethod=syntax", typing {<CR> on the - last line results in the cursor being in a closed fold. (Gautam - Iyer) -Solution: Open fold after inserting a new line. -Files: src/edit.c - -Patch 7.0.159 -Problem: When there is an I/O error in the swap file the cause of the error - cannot be seen. -Solution: Use PERROR() instead of EMSG() where possible. -Files: src/memfile.c - -Patch 7.0.160 -Problem: ":@a" echoes the command, Vi doesn't do that. -Solution: Set the silent flag in the typeahead buffer to avoid echoing the - command. -Files: src/ex_docmd.c, src/normal.c, src/ops.c, src/proto/ops.pro - -Patch 7.0.161 -Problem: Win32: Tab pages line popup menu isn't using the right encoding. - (Yongwei Wu) -Solution: Convert the text when necessary. Also fixes the Find/Replace - dialog title. (Yegappan Lakshmanan) -Files: src/gui_w48.c - -Patch 7.0.162 -Problem: "vim -o a b" when file "a" triggers the ATTENTION dialog, - selecting "Quit" exits Vim instead of editing "b" only. - When file "b" triggers the ATTENTION dialog selecting "Quit" or - "Abort" results in editing file "a" in that window. -Solution: When selecting "Abort" exit Vim. When selecting "Quit" close the - window. Also avoid hit-enter prompt when selecting Abort. -Files: src/buffer.c, src/main.c - -Patch 7.0.163 -Problem: Can't retrieve the position of a sign after it was set. -Solution: Add the netbeans interface getAnno command. (Xavier de Gaye) -Files: runtime/doc/netbeans.txt, src/netbeans.c - -Patch 7.0.164 -Problem: ":redir @+" doesn't work. -Solution: Accept "@+" just like "@*". (Yegappan Lakshmanan) -Files: src/ex_docmd.c - -Patch 7.0.165 -Problem: Using CTRL-L at the search prompt adds a "/" and other characters - without escaping, causing the pattern not to match. -Solution: Escape special characters with a backslash. -Files: src/ex_getln.c - -Patch 7.0.166 -Problem: Crash in cscope code when connection could not be opened. - (Kaya Bekiroglu) -Solution: Check for the file descriptor to be NULL. -Files: src/if_cscope.c - -Patch 7.0.167 -Problem: ":function" redefining a dict function doesn't work properly. - (Richard Emberson) -Solution: Allow a function name to be a number when it's a function - reference. -Files: src/eval.c - -Patch 7.0.168 -Problem: Using uninitialized memory and memory leak. (Dominique Pelle) -Solution: Use alloc_clear() instead of alloc() for w_lines. Free - b_ml.ml_stack after recovery. -Files: src/memline.c, src/window.c - -Patch 7.0.169 -Problem: With a Visual block selection, with the cursor in the left upper - corner, pressing "I" doesn't remove the highlighting. (Guopeng - Wen) -Solution: When checking if redrawing is needed also check if Visual - selection is still active. -Files: src/screen.c - -Patch 7.0.170 (extra) -Problem: Win32: Using "gvim --remote-tab foo" when gvim is minimized while - it previously was maximized, un-maximizing doesn't work properly. - And the labels are not displayed properly when 'encoding' is - utf-8. -Solution: When minimized check for SW_SHOWMINIMIZED. When updating the tab - pages line use TCM_SETITEMW instead of TCM_INSERTITEMW. (Liu - Yubao) -Files: src/gui_w48.c - -Patch 7.0.171 (extra) -Problem: VMS: A file name with multiple paths is written in the wrong file. -Solution: Get the actually used file name. (Zoltan Arpadffy) - Also add info to the :version command about compilation. -Files: src/Make_vms.mms, src/buffer.c, src/os_unix.c, src/version.c - -Patch 7.0.172 -Problem: Crash when recovering and quitting at the "press-enter" prompt. -Solution: Check for "msg_list" to be NULL. (Liu Yubao) -Files: src/ex_eval.c - -Patch 7.0.173 -Problem: ":call f().TT()" doesn't work. (Richard Emberson) -Solution: When a function returns a Dictionary or another composite continue - evaluating what follows. -Files: src/eval.c - -Patch 7.0.174 -Problem: ":mksession" doesn't restore window layout correctly in tab pages - other than the current one. (Zhibin He) -Solution: Use the correct topframe for producing the window layout commands. -Files: src/ex_docmd.c - -Patch 7.0.175 -Problem: The result of tr() is missing the terminating NUL. (Ingo Karkat) -Solution: Add the NUL. -Files: src/eval.c - -Patch 7.0.176 -Problem: ":emenu" isn't executed directly, causing the encryption key - prompt to fail. (Life Jazzer) -Solution: Fix wrong #ifdef. -Files: src/menu.c - -Patch 7.0.177 -Problem: When the press-enter prompt gets a character from a non-remappable - mapping, it's put back in the typeahead buffer as remappable, - which may cause an endless loop. -Solution: Restore the non-remappable flag and the silent flag when putting a - char back in the typeahead buffer. -Files: src/getchar.c, src/message.c, src/normal.c - -Patch 7.0.178 -Problem: When 'enc' is "utf-8" and 'ignorecase' is set the result of ":echo - ("\xe4" == "\xe4")" varies. -Solution: In mb_strnicmp() avoid looking past NUL bytes. -Files: src/mbyte.c - -Patch 7.0.179 -Problem: Using ":recover" or "vim -r" without a swapfile crashes Vim. -Solution: Check for "buf" to be unequal NULL. (Yukihiro Nakadaira) -Files: src/memline.c - -Patch 7.0.180 (extra, after 7.0.171) -Problem: VMS: build failed. Problem with swapfiles. -Solution: Add "compiled_arch". Always expand path and pass it to - buf_modname(). (Zoltan Arpadffy) -Files: src/globals.h, src/memline.c, src/os_unix.c, runtime/menu.vim - -Patch 7.0.181 -Problem: When reloading a file that starts with an empty line, the reloaded - buffer has an extra empty line at the end. (Motty Lentzitzky) -Solution: Delete all lines, don't use bufempty(). -Files: src/fileio.c - -Patch 7.0.182 -Problem: When using a mix of undo and "g-" it may no longer be possible to - go to every point in the undo tree. (Andy Wokula) -Solution: Correctly update pointers in the undo tree. -Files: src/undo.c - -Patch 7.0.183 -Problem: Crash in ":let" when redirecting to a variable that's being - displayed. (Thomas Link) -Solution: When redirecting to a variable only do the assignment when - stopping redirection to avoid that setting the variable causes a - freed string to be accessed. -Files: src/eval.c - -Patch 7.0.184 -Problem: When the cscope program is called "mlcscope" the Cscope interface - doesn't work. -Solution: Accept "\S*cscope:" instead of "cscope:". (Frodak D. Baksik) -Files: src/if_cscope.c - -Patch 7.0.185 -Problem: Multi-byte characters in a message are displayed with attributes - from what comes before it. -Solution: Don't use the attributes for a multi-byte character. Do use - attributes for special characters. (Yukihiro Nakadaira) -Files: src/message.c - -Patch 7.0.186 -Problem: Get an ml_get error when 'encoding' is "utf-8" and searching for - "/\_s*/e" in an empty buffer. (Andrew Maykov) -Solution: Don't try getting the line just below the last line. -Files: src/search.c - -Patch 7.0.187 -Problem: Can't source a remote script properly. -Solution: Add the SourceCmd event. (Charles Campbell) -Files: runtime/doc/autocmd.txt, src/ex_cmds2.c, src/fileio.c, src/vim.h - -Patch 7.0.188 (after 7.0.186) -Problem: Warning for wrong pointer type. -Solution: Add a type cast. -Files: src/search.c - -Patch 7.0.189 -Problem: Translated message about finding matches is truncated. (Yukihiro - Nakadaira) -Solution: Enlarge the buffer. Also use vim_snprintf(). -Files: src/edit.c - -Patch 7.0.190 -Problem: "syntax spell default" results in an error message. -Solution: Change 4 to 7 for STRNICMP(). (Raul Nunez de Arenas Coronado) -Files: src/syntax.c - -Patch 7.0.191 -Problem: The items used by getqflist() and setqflist() don't match. -Solution: Support the "bufnum" item for setqflist(). (Yegappan Lakshmanan) -Files: runtime/doc/eval.txt, src/quickfix.c - -Patch 7.0.192 -Problem: When 'swapfile' is switched off in an empty file it is possible - that not all blocks are loaded into memory, causing ml_get errors - later. -Solution: Rename "dont_release" to "mf_dont_release" and also use it to - avoid using the cached line and locked block. -Files: src/globals.h, src/memfile.c, src/memline.c - -Patch 7.0.193 -Problem: Using --remote or --remote-tab with an argument that matches - 'wildignore' causes a crash. -Solution: Check the argument count before using ARGLIST[0]. -Files: src/ex_cmds.c - -Patch 7.0.194 -Problem: Once an ml_get error is given redrawing part of the screen may - cause it again, resulting in an endless loop. -Solution: Don't give the error message for a recursive call. -Files: src/memline.c - -Patch 7.0.195 -Problem: When a buffer is modified and 'autowriteall' is set, ":quit" - results in an endless loop when there is a conversion error while - writing. (Nikolai Weibull) -Solution: Make autowrite() return FAIL if the buffer is still changed after - writing it. - /* put the cursor on the last char, for 'tw' formatting */ -Files: src/ex_cmds2.c - -Patch 7.0.196 -Problem: When using ":vert ball" the computation of the mouse pointer - position may be off by one column. (Stefan Karlsson) -Solution: Recompute the frame width when moving the vertical separator from - one window to another. -Files: src/window.c - -Patch 7.0.197 (extra) -Problem: Win32: Compiling with EXITFREE doesn't work. -Solution: Adjust a few #ifdefs. (Alexei Alexandrof) -Files: src/misc2.c, src/os_mswin.c - -Patch 7.0.198 (extra) -Problem: Win32: Compiler warnings. No need to generate gvim.exe.mnf. -Solution: Add type casts. Use "*" for processorArchitecture. (George Reilly) -Files: src/Make_mvc.mak, src/eval.c, src/gvim.exe.mnf, src/misc2.c - -Patch 7.0.199 -Problem: When using multi-byte characters the combination of completion and - formatting may result in a wrong cursor position. -Solution: Don't decrement the cursor column, use dec_cursor(). (Yukihiro - Nakadaira) Also check for the column to be zero. -Files: src/edit.c - -Patch 7.0.200 -Problem: Memory leaks when out of memory. -Solution: Free the memory. -Files: src/edit.c, src/diff.c - -Patch 7.0.201 -Problem: Message for ":diffput" about buffer not being in diff mode may be - wrong. -Solution: Check for buffer in diff mode but not modifiable. -Files: src/diff.c - -Patch 7.0.202 -Problem: Problems on Tandem systems while compiling and at runtime. -Solution: Recognize root uid is 65535. Check select() return value for it - not being supported. Avoid wrong function prototypes. Mention - use of -lfloss. (Matthew Woehlke) -Files: src/Makefile, src/ex_cmds.c, src/fileio.c, src/main.c, - src/osdef1.h.in, src/osdef2.h.in, src/os_unix.c, src/pty.c, - src/vim.h - -Patch 7.0.203 -Problem: 0x80 characters in a register are not handled correctly for the - "@" command. -Solution: Escape CSI and 0x80 characters. (Yukihiro Nakadaira) -Files: src/ops.c - -Patch 7.0.204 -Problem: Cscope: Parsing matches for listing isn't done properly. -Solution: Check for line number being found. (Yu Zhao) -Files: src/if_cscope.c - -Patch 7.0.205 (after 7.0.203) -Problem: Can't compile. -Solution: Always include the vim_strsave_escape_csi function. -Files: src/getchar.c - -Patch 7.0.206 (after 7.0.058) -Problem: Some characters of the "gb18030" encoding are not handled - properly. -Solution: Do not use "cp936" as an alias for "gb18030" encoding. Instead - initialize 'encoding' to "cp936". -Files: src/mbyte.c, src/option.c - -Patch 7.0.207 -Problem: After patch 2.0.203 CSI and K_SPECIAL characters are escaped when - recorded and then again when the register is executed. -Solution: Remove escaping before putting the recorded characters in a - register. (Yukihiro Nakadaira) -Files: src/getchar.c, src/ops.c, src/proto/getchar.pro - -Patch 7.0.208 (after 7.0.171 and 7.0.180) -Problem: VMS: changes to path handling cause more trouble than they solve. -Solution: Revert changes. -Files: src/buffer.c, src/memline.c, src/os_unix.c - -Patch 7.0.209 -Problem: When replacing a line through Python the cursor may end up beyond - the end of the line. -Solution: Check the cursor column after replacing the line. -Files: src/if_python.c - -Patch 7.0.210 -Problem: ":cbuffer" and ":lbuffer" always fail when the buffer is modified. - (Gary Johnson) -Solution: Support adding a !. (Yegappan Lakshmanan) -Files: runtime/doc/quickfix.txt, src/ex_cmds.h - -Patch 7.0.211 -Problem: With ":set cindent noai bs=0" using CTRL-U in Insert mode will - delete auto-indent. After ":set ai" it doesn't. -Solution: Also check 'cindent' being set. (Ryan Lortie) -Files: src/edit.c - -Patch 7.0.212 -Problem: The GUI can't be terminated with SIGTERM. (Mark Logan) -Solution: Use the signal protection in the GUI as in the console, allow - signals when waiting for 100 msec or longer. -Files: src/ui.c - -Patch 7.0.213 -Problem: When 'spellfile' has two regions that use the same sound folding - using "z=" will cause memory to be freed twice. (Mark Woodward) -Solution: Clear the hashtable properly so that the items are only freed once. -Files: src/spell.c - -Patch 7.0.214 -Problem: When using <f-args> in a user command it's not possible to have an - argument end in '\ '. -Solution: Change the handling of backslashes. (Yakov Lerner) -Files: runtime/doc/map.txt, src/ex_docmd.c - -Patch 7.0.215 (extra) -Problem: Mac: Scrollbar size isn't set. Context menu has disabled useless - Help entry. Call to MoreMasterPointers() is ignored. -Solution: Call SetControlViewSize() in gui_mch_set_scrollbar_thumb(). Use - kCMHelpItemRemoveHelp for ContextualMenuSelect(). Remove call to - MoreMasterPointers(). (Nicolas Weber) -Files: src/gui_mac.c - -Patch 7.0.216 -Problem: ":tab wincmd ]" does not open a tab page. (Tony Mechelynck) -Solution: Copy the cmdmod.tab value to postponed_split_tab and use it. -Files: src/globals.h, src/ex_docmd.c, src/if_cscope.c, src/window.c - -Patch 7.0.217 -Problem: This hangs when pressing "n": ":%s/\n/,\r/gc". (Ori Avtalion) -Solution: Set "skip_match" to advance to the next line. -Files: src/ex_cmds.c - -Patch 7.0.218 -Problem: "%B" in 'statusline' always shows zero in Insert mode. (DervishD) -Solution: Remove the exception for Insert mode, check the column for being - valid instead. -Files: src/buffer.c - -Patch 7.0.219 -Problem: When using the 'editexisting.vim' script and a file is being - edited in another tab page the window is split. The "+123" - argument is not used. -Solution: Make the tab page with the file the current tab page. Set - v:swapcommand when starting up to the first "+123" or "-c" command - line argument. -Files: runtime/macros/editexisting.vim, src/main.c - -Patch 7.0.220 -Problem: Crash when using winnr('#') in a new tab page. (Andy Wokula) -Solution: Check for not finding the window. -Files: src/eval.c - -Patch 7.0.221 -Problem: finddir() uses 'path' by default, where "." means relative to the - current file. But it works relative to the current directory. - (Tye Zdrojewski) -Solution: Add the current buffer name to find_file_in_path_option() for the - relative file name. -Files: runtime/doc/eval.txt, src/eval.c - -Patch 7.0.222 -Problem: Perl indenting using 'cindent' works almost right. -Solution: Recognize '#' to start a comment. (Alex Manoussakis) Added '#' - flag in 'cinoptions'. -Files: runtime/doc/indent.txt, src/misc1.c - -Patch 7.0.223 -Problem: Unprintable characters in completion text mess up the popup menu. - (Gombault Damien) -Solution: Use strtrans() to make the text printable. -Files: src/charset.c, src/popupmnu.c - -Patch 7.0.224 -Problem: When expanding "##" spaces are escaped twice. (Pavol Juhas) -Solution: Don't escape the spaces that separate arguments. -Files: src/eval.c, src/ex_docmd.c, src/proto/ex_docmd.pro - -Patch 7.0.225 -Problem: When using setline() in an InsertEnter autocommand and doing "A" - the cursor ends up on the last byte in the line. (Yukihiro - Nakadaira) -Solution: Only adjust the column when using setline() for the cursor line. - Move it back to the head byte if necessary. -Files: src/eval.c, src/misc2.c - -Patch 7.0.226 -Problem: Display flickering when updating signs through the netbeans - interface. (Xavier de Gaye) -Solution: Remove the redraw_later(CLEAR) call. -Files: src/netbeans.c - -Patch 7.0.227 -Problem: Crash when closing a window in the GUI. (Charles Campbell) -Solution: Don't call out_flush() from win_free(). -Files: src/window.c - -Patch 7.0.228 -Problem: Cygwin: problem with symlink to DOS style path. -Solution: Invoke cygwin_conv_to_posix_path(). (Luca Masini) -Files: src/os_unix.c - -Patch 7.0.229 -Problem: When 'pastetoggle' starts with Esc then pressing Esc in Insert - mode will not time out. (Jeffery Small) -Solution: Use KL_PART_KEY instead of KL_PART_MAP, so that 'ttimeout' applies - to the 'pastetoggle' key. -Files: src/getchar.c - -Patch 7.0.230 -Problem: After using ":lcd" a script doesn't know how to restore the - current directory. -Solution: Add the haslocaldir() function. (Bob Hiestand) -Files: runtime/doc/usr_41.txt, runtime/doc/eval.txt, src/eval.c - -Patch 7.0.231 -Problem: When recovering from a swap file the page size is likely to be - different from the minimum. The block used for the first page - then has a buffer of the wrong size, causing a crash when it's - reused later. (Zephaniah Hull) -Solution: Reallocate the buffer when the page size changes. Also check that - the page size is at least the minimum value. -Files: src/memline.c - -Patch 7.0.232 (extra) -Problem: Mac: doesn't support GUI tab page labels. -Solution: Add GUI tab page labels. (Nicolas Weber) -Files: src/feature.h, src/gui.c, src/gui.h, src/gui_mac.c, - src/proto/gui_mac.pro - -Patch 7.0.233 (extra) -Problem: Mac: code formatted badly. -Solution: Fix code formatting -Files: src/gui_mac.c - -Patch 7.0.234 -Problem: It's possible to use feedkeys() from a modeline. That is a - security issue, can be used for a trojan horse. -Solution: Disallow using feedkeys() in the sandbox. -Files: src/eval.c - -Patch 7.0.235 -Problem: It is possible to use writefile() in the sandbox. -Solution: Add a few more checks for the sandbox. -Files: src/eval.c - -Patch 7.0.236 -Problem: Linux 2.4 uses sysinfo() with a mem_unit field, which is not - backwards compatible. -Solution: Add an autoconf check for sysinfo.mem_unit. Let mch_total_mem() - return Kbyte to avoid overflow. -Files: src/auto/configure, src/configure.in, src/config.h.in, - src/option.c, src/os_unix.c - -Patch 7.0.237 -Problem: For root it is recommended to not use 'modeline', but in - not-compatible mode the default is on. -Solution: Let 'modeline' default to off for root. -Files: runtime/doc/options.txt, src/option.c - -Patch 7.0.238 -Problem: Crash when ":match" pattern runs into 'maxmempattern'. (Yakov - Lerner) -Solution: Don't free the regexp program of match_hl. -Files: src/screen.c - -Patch 7.0.239 -Problem: When using local directories and tab pages ":mksession" uses a - short file name when it shouldn't. Window-local options from a - modeline may be applied to the wrong window. (Teemu Likonen) -Solution: Add the did_lcd flag, use the full path when it's set. Don't use - window-local options from the modeline when using the current - window for another buffer in ":doautoall". -Files: src/fileio.c, src/ex_docmd.c - -Patch 7.0.240 -Problem: Crash when splitting a window in the GUI. (opposite of 7.0.227) -Solution: Don't call out_flush() from win_alloc(). Also avoid this for - win_delete(). Also block autocommands while the window structure - is invalid. -Files: src/window.c - -Patch 7.0.241 -Problem: ":windo throw 'foo'" loops forever. (Andy Wokula) -Solution: Detect that win_goto() doesn't work. -Files: src/ex_cmds2.c - -Patch 7.0.242 (extra) -Problem: Win32: Using "-register" in a Vim that does not support OLE causes - a crash. -Solution: Don't use EMSG() but mch_errmsg(). Check p_go for being NULL. - (partly by Michael Wookey) -Files: src/gui_w32.c - -Patch 7.0.243 (extra) -Problem: Win32: When GvimExt is built with MSVC 2005 or later, the "Edit - with vim" context menu doesn't appear in the Windows Explorer. -Solution: Embed the linker manifest file into the resources of GvimExt.dll. - (Mathias Michaelis) -Files: src/GvimExt/Makefile - - -Fixes after Vim 7.1a BETA: - -The extra archive had CVS directories included below "farsi" and -"runtime/icons". CVS was missing the farsi icon files. - -Fix compiling with Gnome 2.18, undefine bind_textdomain_codeset. (Daniel -Drake) - -Mac: "make install" didn't copy rgb.txt. - -When editing a compressed file while there are folds caused "ml_get" errors -and some lines could be missing. When decompressing failed option values were -not restored. - - -Patch 7.1a.001 -Problem: Crash when downloading a spell file. (Szabolcs Horvat) -Solution: Avoid that did_set_spelllang() is used recursively when a new - window is opened for the download. - Also avoid wiping out the wrong buffer. -Files: runtime/autoload/spellfile.vim, src/buffer.c, src/ex_cmds.c, - src/spell.c - -Patch 7.1a.002 (extra) -Problem: Compilation error with MingW. -Solution: Check for LPTOOLTIPTEXT to be defined. -Files: src/gui_w32.c - - -Fixes after Vim 7.1b BETA: - -Made the Mzscheme interface build both with old and new versions of Mzscheme, -using an #ifdef. (Sergey Khorev) -Mzscheme interface didn't link, missing function. Changed order of libraries -in the configure script. - -Ruby interface didn't compile on Mac. Changed #ifdef. (Kevin Ballard) - -Patch 7.1b.001 (extra) -Problem: Random text in a source file. No idea how it got there. -Solution: Delete the text. -Files: src/gui_w32.c - -Patch 7.1b.002 -Problem: When 'maxmem' is large there can be an overflow in computations. - (Thomas Wiegner) -Solution: Use the same mechanism as in mch_total_mem(): first reduce the - multiplier as much as possible. -Files: src/memfile.c - -============================================================================== -VERSION 7.2 *version-7.2* *version7.2* - -This section is about improvements made between version 7.1 and 7.2. - -This is mostly a bug-fix release. The main new feature is floating point -support. |Float| - - -Changed *changed-7.2* -------- - -Changed the command line buffer name from "command-line" to "[Command Line]". - -Removed optional ! for ":caddexpr", ":cgetexpr", ":cgetfile", ":laddexpr", -":lgetexpr" and ":lgetfile". They are not needed. (Yegappan Lakshmanan) - -An offset for syntax matches worked on bytes instead of characters. That is -inconsistent and can easily be done wrong. Use character offsets now. -(Yukihiro Nakadaira) - -The FileChangedShellPost event was also given when a file didn't change. -(John Little) - -When the current line is long (doesn't fit) the popup menu can't be seen. -Display it below the screen line instead of below the text line. -(Francois Ingelrest) - -Switched to autoconf version 2.62. - -Moved including fcntl.h to vim.h and removed it from all .c files. - -Introduce macro STRMOVE(d, s), like STRCPY() for overlapping strings. -Use it instead of mch_memmove(p, p + x, STRLEN(p + x) + 1). - -Removed the bulgarian.vim keymap file, two more standard ones replace it. -(Boyko Bantchev) - -Increased the maximum number of tag matches for command line completion from -200 to 300. - -Renamed help file sql.txt to ft_sql.txt and ada.txt to ft_ada.txt. - - -Added *added-7.2* ------ - -New syntax files: - CUDA (Timothy B. Terriberry) - Cdrdao config (Nikolai Weibull) - Coco/R (Ashish Shukla) - Denyhosts config (Nikolai Weibull) - Dtrace script (Nicolas Weber) - Git output, commit, config, rebase, send-email (Tim Pope) - HASTE and HastePreProc (M. Tranchero) - Haml (Tim Pope) - Host conf (Nikolai Weibull) - Linden script (Timo Frenay) - MS messages (Kevin Locke) - PDF (Tim Pope) - ProMeLa (Maurizio Tranchero) - Reva Foth (Ron Aaron) - Sass (Tim Pope) - Symbian meta-makefile, MMP (Ron Aaron) - VOS CM macro (Andrew McGill) - XBL (Doug Kearns) - -New tutor files: - Made UTF-8 versions of all the tutor files. - Greek renamed from ".gr" to ".el" (Greek vs Greece). - Esperanto (Dominique Pelle) - Croatian (Paul B. Mahol) - -New filetype plugins: - Cdrdao config (Nikolai Weibull) - Debian control files (Debian Vim maintainers) - Denyhosts (Nikolai Weibull) - Dos .ini file (Nikolai Weibull) - Dtrace script (Nicolas Weber) - FnameScript (Nikolai Weibull) - Git, Git config, Git commit, Git rebase, Git send-email (Tim Pope) - Haml (Tim Pope) - Host conf (Nikolai Weibull) - Host access (Nikolai Weibull) - Logtalk (Paulo Moura) - MS messages (Kevin Locke) - NSIS script (Nikolai Weibull) - PDF (Tim Pope) - Reva Forth (Ron Aaron) - Sass (Tim Pope) - -New indent files: - DTD (Nikolai Weibull) - Dtrace script (Nicolas Weber) - Erlang (Csaba Hoch) - FrameScript (Nikolai Weibull) - Git config (Tim Pope) - Haml (Tim Pope) - Logtalk (Paulo Moura) - Sass (Tim Pope) - Tiny Fugue (Christian J. Robinson) - -New compiler plugins: - RSpec (Tim Pope) - -New keymap files: - Croatian (Paul B. Mahol) - Russian Dvorak (Serhiy Boiko) - Ukrainian Dvorak (Serhiy Boiko) - Removed plain Bulgarian, "bds" and phonetic are sufficient. - -Other new runtime files: - Esperanto menu and message translations. (Dominique Pelle) - Finnish menu and message translations. (Flammie Pirinen) - Brazilian Portuguese message translations. (Eduardo Dobay) - -Added floating point support. |Float| - -Added argument to mode() to return a bit more detail about the current mode. -(Ben Schmidt) - -Added support for BSD console mouse: |sysmouse|. (Paul B. Mahol) - -Added the "newtab" value for the 'switchbuf' option. (partly by Yegappan -Lakshmanan) - -Improved error messages for the netbeans interface. (Philippe Fremy) - -Added support for using xterm mouse codes for screen. (Micah Cowan) - -Added support for cross compiling: -Adjusted configure.in and added INSTALLcross.txt. (Marc Haisenko) Fixed -mistakes in configure.in after that. -Don't use /usr/local/include and /usr/local/lib in configure. (Philip -Prindeville) -For cross compiling the Cygwin version on Unix, change VIM.TLB to vim.tlb in -src/vim.rc. (Tsuneo Nakagawa) - -Added v:searchforward variable: What direction we're searching in. (Yakov -Lerner) - - -Fixed *fixed-7.2* ------ - -Patch 7.1.001 -Problem: Still can't build with Gnome libraries. -Solution: Fix typo in bind_textdomain_codeset. (Mike Kelly) -Files: src/gui_gtk.c, src/gui_gtk_x11.c - -Patch 7.1.002 -Problem: Oracle Pro*C/C++ files are not detected. -Solution: Add the missing star. (Micah J. Cowan) -Files: runtime/filetype.vim - -Patch 7.1.003 (extra) -Problem: The "Tear off this menu" message appears in the message history - when using a menu. (Yongwei Wu) -Solution: Disable message history when displaying the menu tip. -Files: src/gui_w32.c - -Patch 7.1.004 -Problem: Crash when doing ":next directory". (Raphael Finkel) -Solution: Do not use "buf", it may be invalid after autocommands. -Files: src/ex_cmds.c - -Patch 7.1.005 -Problem: "cit" used on <foo></foo> deletes <foo>. Should not delete - anything and start insertion, like "ci'" does on "". (Michal - Bozon) -Solution: Handle an empty object specifically. Made it work consistent for - various text objects. -Files: src/search.c - -Patch 7.1.006 -Problem: Resetting 'modified' in a StdinReadPost autocommand doesn't work. -Solution: Set 'modified' before the autocommands instead of after it. -Files: src/buffer.c - -Patch 7.1.007 (extra) -Problem: Mac: Context menu doesn't work on Intel Macs. - Scrollbars are not dimmed when Vim is not the active application. -Solution: Remove the test whether context menus are supported. They are - always there in OS/X. Handle the dimming. (Nicolas Weber) -Files: src/gui_mac.c, src/gui.h - -Patch 7.1.008 -Problem: getfsize() returns a negative number for very big files. -Solution: Check for overflow and return -2. -Files: runtime/doc/eval.txt, src/eval.c - -Patch 7.1.009 -Problem: In diff mode, displaying the difference between a tab and spaces - is not highlighted correctly. -Solution: Only change highlighting at the end of displaying a tab. -Files: src/screen.c - -Patch 7.1.010 -Problem: The Gnome session file doesn't restore tab pages. -Solution: Add SSOP_TABPAGES to the session flags. (Matias D'Ambrosio) -Files: src/gui_gtk_x11.c - -Patch 7.1.011 -Problem: Possible buffer overflow when $VIMRUNTIME is very long. (Victor - Stinner) -Solution: Use vim_snprintf(). -Files: src/main.c - -Patch 7.1.012 -Problem: ":let &shiftwidth = 'asdf'" doesn't produce an error message. -Solution: Check for a string argument. (Chris Lubinski) -Files: src/option.c - -Patch 7.1.013 -Problem: ":syn include" only loads the first file, while it is documented - as doing the equivalent of ":runtime!". -Solution: Change the argument to source_runtime(). (James Vega) -Files: src/syntax.c - -Patch 7.1.014 -Problem: Crash when doing C indenting. (Chris Monson) -Solution: Obtain the current line again after invoking cin_islabel(). -Files: src/edit.c - -Patch 7.1.015 -Problem: MzScheme interface: current-library-collection-paths produces no - list. Interface doesn't build on a Mac. -Solution: Use a list instead of a pair. (Bernhard Fisseni) Use "-framework" - argument for MZSCHEME_LIBS in configure. -Files: src/configure.in, src/if_mzsch.c, src/auto/configure - -Patch 7.1.016 (after patch 7.1.012) -Problem: Error message about setting 'diff' to a string. -Solution: Don't pass an empty string to set_option_value() when setting - 'diff'. -Files: src/quickfix.c, src/popupmnu.c - -Patch 7.1.017 -Problem: ":confirm w" does give a prompt when 'readonly' is set, but not - when the file permissions are read-only. (Michael Schaap) -Solution: Provide a dialog in both situations. (Chris Lubinski) -Files: src/ex_cmds.c, src/fileio.c, src/proto/fileio.pro - -Patch 7.1.018 -Problem: When 'virtualedit' is set a "p" of a block just past the end of - the line inserts before the cursor. (Engelke) -Solution: Check for the cursor being just after the line (Chris Lubinski) -Files: src/ops.c - -Patch 7.1.019 -Problem: ":py" asks for an argument, ":py asd" then gives the error that - ":py" isn't implemented. Should already happen for ":py". -Solution: Compare with ex_script_ni. (Chris Lubinski) -Files: src/ex_docmd.c - -Patch 7.1.020 -Problem: Reading from uninitialized memory when using a dialog. (Dominique - Pelle) -Solution: In msg_show_console_dialog() append a NUL after every appended - character. -Files: src/message.c - -Patch 7.1.021 (after 7.1.015) -Problem: Mzscheme interface doesn't compile on Win32. -Solution: Fix the problem that 7.1.015 fixed in a better way. (Sergey Khorev) -Files: src/if_mzsch.c - -Patch 7.1.022 -Problem: When setting 'keymap' twice the b:keymap_name variable isn't set. - (Milan Berta) -Solution: Don't unlet b:keymap_name for ":loadkeymap". (Martin Toft) -Files: src/digraph.c - -Patch 7.1.023 -Problem: "dw" in a line with one character deletes the line. Vi and nvi - don't do this. (Kjell Arne Rekaa) -Solution: Check for one-character words especially. -Files: src/search.c - -Patch 7.1.024 -Problem: Using a pointer that has become invalid. (Chris Monson) -Solution: Obtain the line pointer again after we looked at another line. -Files: src/search.c - -Patch 7.1.025 -Problem: search() and searchpos() don't use match under cursor at start of - line when using 'bc' flags. (Viktor Kojouharov) -Solution: Don't go to the previous line when the 'c' flag is present. - Also fix that "j" doesn't move the cursor to the right column. -Files: src/eval.c, src/search.c - -Patch 7.1.026 -Problem: "[p" doesn't work in Visual mode. (David Brown) -Solution: Use checkclearop() instead of checkclearopq(). -Files: src/normal.c - -Patch 7.1.027 -Problem: On Sun systems opening /dev/fd/N doesn't work, and they are used - by process substitutions. -Solution: Allow opening specific character special files for Sun systems. - (Gary Johnson) -Files: src/fileio.c, src/os_unix.h - -Patch 7.1.028 -Problem: Can't use last search pattern for ":sort". (Brian McKee) -Solution: When the pattern is empty use the last search pattern. (Martin - Toft) -Files: runtime/doc/change.txt, src/ex_cmds.c - -Patch 7.1.029 (after 7.1.019) -Problem: Can't compile when all interfaces are used. (Taylor Venable) -Solution: Only check for ex_script_ni when it's defined. -Files: src/ex_docmd.c - -Patch 7.1.030 -Problem: The "vimtutor" shell script checks for "vim6" but not for "vim7". - (Christian Robinson) -Solution: Check for more versions, but prefer using "vim". -Files: src/vimtutor - -Patch 7.1.031 -Problem: virtcol([123, '$']) doesn't work. (Michael Schaap) -Solution: When '$' is used for the column number get the last column. -Files: runtime/doc/eval.txt, src/eval.c - -Patch 7.1.032 -Problem: Potential crash when editing a command line. (Chris Monson) -Solution: Check the position to avoid access before the start of an array. -Files: src/ex_getln.c - -Patch 7.1.033 -Problem: A buffer is marked modified when it was first deleted and then - added again using a ":next" command. (John Mullin) -Solution: When checking if a buffer is modified use the BF_NEVERLOADED flag. -Files: src/option.c - -Patch 7.1.034 -Problem: Win64: A few compiler warnings. Problems with optimizer. -Solution: Use int instead of size_t. Disable the optimizer in one function. - (George V. Reilly) -Files: src/eval.c, src/spell.c - -Patch 7.1.035 -Problem: After ":s/./&/#" all listed lines have a line number. (Yakov - Lerner) -Solution: Reset the line number flag when not using the "&" flag. -Files: src/ex_cmds.c - -Patch 7.1.036 -Problem: Completing ":echohl" argument should include "None". (Ori - Avtalion) ":match" should have "none" too. -Solution: Add flags to use expand_highlight(). Also fix that when disabling - FEAT_CMDL_COMPL compilation fails. (Chris Lubinski) -Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/syntax.pro - src/syntax.c - -Patch 7.1.037 -Problem: strcpy() used for overlapping strings. (Chris Monson) -Solution: Use mch_memmove() instead. -Files: src/option.c - -Patch 7.1.038 -Problem: When 'expandtab' is set then a Tab copied for 'copyindent' is - expanded to spaces, even when 'preserveindent' is set. (Alexei - Alexandrov) -Solution: Remove the check for 'expandtab'. Also fix that ">>" doesn't obey - 'preserveindent'. (Chris Lubinski) -Files: src/misc1.c - -Patch 7.1.039 -Problem: A tag in a help file that starts with "help-tags" and contains a - percent sign may make Vim crash. (Ulf Harnhammar) -Solution: Use puts() instead of fprintf(). -Files: src/ex_cmds.c - -Patch 7.1.040 -Problem: ":match" only supports three matches. -Solution: Add functions clearmatches(), getmatches(), matchadd(), - matchdelete() and setmatches(). Changed the data structures for - this. A small bug in syntax.c is fixed, so newly created - highlight groups can have their name resolved correctly from their - ID. (Martin Toft) -Files: runtime/doc/eval.txt, runtime/doc/pattern.txt, - runtime/doc/usr_41.txt, src/eval.c, src/ex_docmd.c, - src/proto/window.pro, src/screen.c, src/structs.h, src/syntax.c, - src/testdir/Makefile, src/testdir/test63.in, - src/testdir/test63.ok, src/window.c - -Patch 7.1.041 (extra, after 7.1.040) -Problem: Some changes for patch 7.1.040 are in extra files. -Solution: Update the extra files. -Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, - src/testdir/Make_os2.mak, src/testdir/Make_vms.mms - -Patch 7.1.042 (after 7.1.040) -Problem: Internal error when using matchadd(). (David Larson) -Solution: Check the third argument to be present before using the fourth - argument. (Martin Toft) -Files: src/eval.c - -Patch 7.1.043 -Problem: In Ex mode using CTRL-D twice may cause a crash. Cursor isn't - positioned properly after CTRL-D. -Solution: Set prev_char properly. Position the cursor correctly. (Antony - Scriven) -Files: src/ex_getln.c - -Patch 7.1.044 -Problem: In Insert mode 0 CTRL-T deletes all indent, it should add indent. - (Gautam Iyer) -Solution: Check for CTRL-D typed. -Files: src/edit.c - -Patch 7.1.045 -Problem: Unnecessary screen redrawing. (Jjgod Jiang) -Solution: Reset "must_redraw" after clearing the screen. -Files: src/screen.c - -Patch 7.1.046 -Problem: ":s" command removes combining characters. (Ron Aaron) -Solution: Copy composing characters individually. (Chris Lubinski) -Files: src/regexp.c - -Patch 7.1.047 -Problem: vim_regcomp() called with invalid argument. (Xiaozhou Liu) -Solution: Change TRUE to RE_MAGIC + RE_STRING. -Files: src/ex_eval.c - -Patch 7.1.048 -Problem: The matchparen plugin doesn't update the match when scrolling with - the mouse wheel. (Ilya Bobir) -Solution: Set the match highlighting for text that can be scrolled into the - viewable area without moving the cursor. (Chris Lubinski) -Files: runtime/plugin/matchparen.vim - -Patch 7.1.049 -Problem: Cannot compile GTK2 version with Hangul input feature. -Solution: Don't define FEAT_XFONTSET when using GTK2. -Files: src/feature.h - -Patch 7.1.050 -Problem: Possible crash when using C++ indenting. (Chris Monson) -Solution: Keep the line pointer to the line to compare with. Avoid going - past the end of line. -Files: src/misc1.c - -Patch 7.1.051 -Problem: Accessing uninitialized memory when finding spell suggestions. -Solution: Don't try swapping characters at the end of a word. -Files: src/spell.c - -Patch 7.1.052 -Problem: When creating a new match not all fields are initialized, which - may lead to unpredictable results. -Solution: Initialise rmm_ic and rmm_maxcol. -Files: src/window.c - -Patch 7.1.053 -Problem: Accessing uninitialized memory when giving a message. -Solution: Check going the length before checking for a NUL byte. -Files: src/message.c - -Patch 7.1.054 -Problem: Accessing uninitialized memory when displaying the fold column. -Solution: Add a NUL to the extra array. (Dominique Pelle). Also do this in - a couple of other situations. -Files: src/screen.c - -Patch 7.1.055 -Problem: Using strcpy() with arguments that overlap. -Solution: Use mch_memmove() instead. -Files: src/buffer.c, src/charset.c, src/eval.c, src/ex_getln.c, - src/misc1.c, src/regexp.c, src/termlib.c - -Patch 7.1.056 -Problem: More prompt does not behave correctly after scrolling back. - (Randall W. Morris) -Solution: Avoid lines_left becomes negative. (Chris Lubinski) Don't check - mp_last when deciding to show the more prompt. (Martin Toft) -Files: src/message.c - -Patch 7.1.057 -Problem: Problem with CursorHoldI when using "r" in Visual mode (Max - Dyckhoff) -Solution: Ignore CursorHold(I) when getting a second character for a Normal - mode command. Also abort the "r" command in Visual when a special - key is typed. -Files: src/normal.c - -Patch 7.1.058 -Problem: When 'rightleft' is set the completion menu is positioned wrong. - (Baha-Eddine MOKADEM) -Solution: Fix the completion menu. (Martin Toft) -Files: src/popupmnu.c, src/proto/search.pro, src/search.c - -Patch 7.1.059 -Problem: When in Ex mode and doing "g/^/vi" and then pressing CTRL-C Vim - hangs and beeps. (Antony Scriven) -Solution: Clear "got_int" in the main loop to avoid the hang. When typing - CTRL-C twice in a row abort the ":g" command. This is Vi - compatible. -Files: src/main.c - -Patch 7.1.060 -Problem: Splitting quickfix window messes up window layout. (Marius - Gedminas) -Solution: Compute the window size in a smarter way. (Martin Toft) -Files: src/window.c - -Patch 7.1.061 -Problem: Win32: When 'encoding' is "latin1" 'ignorecase' doesn't work for - characters with umlaut. (Joachim Hofmann) -Solution: Do not use islower()/isupper()/tolower()/toupper() but our own - functions. (Chris Lubinski) -Files: src/mbyte.c, src/regexp.c, src/vim.h - -Patch 7.1.062 (after 7.1.038) -Problem: Indents of C comments can be wrong. (John Mullin) -Solution: Adjust ind_len. (Chris Lubinski) -Files: src/misc1.c - -Patch 7.1.063 (after 7.1.040) -Problem: Warning for uninitialized variable. -Solution: Initialise it to NULL. -Files: src/ex_docmd.c - -Patch 7.1.064 -Problem: On Interix some files appear not to exist. -Solution: Remove the top bit from st_mode. (Ligesh) -Files: src/os_unix.c - -Patch 7.1.065 (extra) -Problem: Win32: Compilation problem for newer version of w32api. -Solution: Only define __IID_DEFINED__ when needed. (Chris Sutcliffe) -Files: src/Make_ming.mak, src/iid_ole.c - -Patch 7.1.066 -Problem: When 'bomb' is set or reset the file should be considered - modified. (Tony Mechelynck) -Solution: Handle like 'endofline'. (Martin Toft) -Files: src/buffer.c, src/fileio.c, src/option.c, src/structs.h - -Patch 7.1.067 -Problem: 'thesaurus' doesn't work when 'infercase' is set. (Mohsin) -Solution: Don't copy the characters being completed but check the case and - apply it to the suggested word. Also fix that the first word in - the thesaurus line is not used. (Martin Toft) -Files: src/edit.c - -Patch 7.1.068 -Problem: When 'equalalways' is set and splitting a window, it's possible - that another small window gets bigger. -Solution: Only equalize window sizes when after a split the windows are - smaller than another window. (Martin Toft) -Files: runtime/doc/options.txt, runtime/doc/windows.txt, src/window.c - -Patch 7.1.069 -Problem: GTK GUI: When using confirm() without a default button there still - is a default choice. -Solution: Ignore Enter and Space when there is no default button. (Chris - Lubinski) -Files: src/gui_gtk.c - -Patch 7.1.070 (extra) -Problem: Win32 GUI: When using confirm() without a default button there - still is a default choice. -Solution: Set focus on something else than a button. (Chris Lubinski) -Files: src/gui_w32.c - -Patch 7.1.071 (after 7.1.040) -Problem: Regexp patterns are not tested. -Solution: Add a basic test, to be expanded later. - Also add (commented-out) support for valgrind. -Files: src/testdir/Makefile, src/testdir/test64.in, src/testdir/test64.ok - -Patch 7.1.072 (extra, after 7.1.041 and 7.1.071) -Problem: Some changes for patch 7.1.071 are in extra files. -Solution: Update the extra files. Also fix a few warnings from the DOS test - makefile. -Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, - src/testdir/Make_os2.mak, src/testdir/Make_vms.mms - -Patch 7.1.073 (after 7.1.062) -Problem: Wrong cursor position and crash when 'preserveindent' is set. - (Charles Campbell) -Solution: Handle the situation that we start without indent. (Chris - Lubinski) -Files: src/misc1.c - -Patch 7.1.074 -Problem: Crash when calling string() on a recursively nested List. -Solution: Check result value for being NULL. (Yukihiro Nakadaira) -Files: src/eval.c - -Patch 7.1.075 -Problem: ":let v:statusmsg" reads memory already freed. -Solution: Don't set v:statusmsg when listing it. -Files: src/eval.c - -Patch 7.1.076 -Problem: Another strcpy() with overlapping arguments. -Solution: Use mch_memmove(). (Dominique Pelle) And another one. -Files: src/ex_docmd.c, src/normal.c - -Patch 7.1.077 -Problem: Using "can_spell" without initializing it. (Dominique Pelle) -Solution: Set a default for get_syntax_attr(). -Files: src/syntax.c - -Patch 7.1.078 -Problem: Dropping a file name on gvim that contains a CSI byte doesn't work - when editing the command line. -Solution: Escape the CSI byte when inserting in the input buffer. (Yukihiro - Nakadaira) -Files: src/gui.c, src/ui.c - -Patch 7.1.079 -Problem: When the locale is "C" and 'encoding' is "latin1" then the "@" - character in 'isfname', 'isprint', etc. doesn't pick up accented - characters. -Solution: Instead of isalpha() use MB_ISLOWER() and MB_ISUPPER(). -Files: src/charset.c, src/macros.h - -Patch 7.1.080 (extra) -Problem: Compiler warnings for using "const char *" for "char *". -Solution: Add type casts. (Chris Sutcliffe) -Files: src/GvimExt/gvimext.cpp - -Patch 7.1.081 -Problem: Command line completion for a shell command: "cat </tmp/file<Tab>" - doesn't work. -Solution: Start the file name at any character that can't be in a file name. - (Martin Toft) -Files: src/ex_docmd.c - -Patch 7.1.082 -Problem: After a ":split" the matchparen highlighting isn't there. -Solution: Install a WinEnter autocommand. Also fixes that after - ":NoMatchParen" only the current window is updated. (Martin Toft) -Files: runtime/doc/pi_paren.txt, runtime/plugin/matchparen.vim - -Patch 7.1.083 (after 7.1.081) -Problem: Command line completion doesn't work with wildcards. -Solution: Add vim_isfilec_or_wc() and use it. (Martin Toft) -Files: src/charset.c, src/proto/charset.pro, src/ex_docmd.c - -Patch 7.1.084 -Problem: Using the "-nb" argument twice causes netbeans not to get - fileOpened events. -Solution: Change "&" to "&&". (Xavier de Gaye) -Files: src/ex_cmds.c - -Patch 7.1.085 -Problem: ":e fold.c" then ":sp fold.c" results in folds of original window - to disappear. (Akita Noek) -Solution: Invoke foldUpdateAll() for all windows of the changed buffer. - (Martin Toft) -Files: src/ex_cmds.c - -Patch 7.1.086 -Problem: Crash when using specific Python syntax highlighting. (Quirk) -Solution: Check for a negative index, coming from a keyword match at the - start of a line from a saved state. -Files: src/syntax.c - -Patch 7.1.087 -Problem: Reading past ":cscope find" command. Writing past end of a buffer. -Solution: Check length of the argument before using the pattern. Use - vim_strncpy(). (Dominique Pelle) -Files: if_cscope.c - -Patch 7.1.088 (extra) -Problem: The coordinates used by ":winpos" differ from what getwinposx() - and getwinposy() return. -Solution: Use MoveWindowStructure() instead of MoveWindow(). (Michael Henry) -Files: src/gui_mac.c - -Patch 7.1.089 -Problem: ":let loaded_getscriptPlugin" doesn't clear to eol, result is - "#1in". -Solution: Clear to the end of the screen after displaying the first variable - value. -Files: src/eval.c - -Patch 7.1.090 -Problem: Compiler warning on Mac OS X 10.5. -Solution: Don't redeclare sigaltstack(). (Hisashi T Fujinaka) -Files: src/os_unix.c - -Patch 7.1.091 (extra) -Problem: Win32: Can't embed Vim inside another application. -Solution: Add the --windowid argument. (Nageshwar) -Files: runtime/doc/gui_w32.txt, runtime/doc/starting.txt, - runtime/doc/vi_diff.txt, src/globals.h, src/gui_w32.c, src/main.c - -Patch 7.1.092 (extra, after 7.1.088) -Problem: Wrong arguments for MoveWindowStructure(). -Solution: Remove "TRUE". (Michael Henry) -Files: src/gui_mac.c - -Patch 7.1.093 -Problem: Reading past end of a screen line when determining cell width. - (Dominique Pelle) -Solution: Add an argument to mb_off2cells() for the maximum offset. -Files: src/globals.h, src/gui.c, src/mbyte.c, src/proto/mbyte.pro, - src/screen.c - -Patch 7.1.094 -Problem: When checking if syntax highlighting is present, looking in the - current buffer instead of the specified one. -Solution: Use "buf" instead of "curbuf". -Files: src/syntax.c - -Patch 7.1.095 -Problem: The FocusLost and FocusGained autocommands are triggered - asynchronously in the GUI. This may cause arbitrary problems. -Solution: Put the focus event in the input buffer and handle it when ready - for it. -Files: src/eval.c, src/getchar.c, src/gui.c, src/gui_gtk_x11.c, - src/keymap.h - -Patch 7.1.096 -Problem: Reading past end of a string when resizing Vim. (Dominique Pelle) -Solution: Check the string pointer before getting the char it points to. -Files: src/message.c - -Patch 7.1.097 -Problem: ":setlocal stl=%!1+1" does not work. -Solution: Adjust check for pointer. (Politz) -Files: src/option.c - -Patch 7.1.098 -Problem: ":call s:var()" doesn't work if "s:var" is a Funcref. (Andy Wokula) -Solution: Before converting "s:" into a script ID, check if it is a Funcref. -Files: src/eval.c - -Patch 7.1.099 -Problem: When the 'keymap' and 'paste' options have a non-default value, - ":mkexrc" and ":mksession" do not correctly set the options. -Solution: Set the options with side effects before other options. -Files: src/option.c - -Patch 7.1.100 -Problem: Win32: Executing cscope doesn't always work properly. -Solution: Use another way to invoke cscope. (Mike Williams) -Files: src/if_cscope.c, src/if_cscope.h, src/main.c, - src/proto/if_cscope.pro - -Patch 7.1.101 -Problem: Ruby: The Buffer.line= method does not work. -Solution: Add the "self" argument to set_current_line(). (Jonathan Hankins) -Files: src/if_ruby.c - -Patch 7.1.102 -Problem: Perl interface doesn't compile with new version of Perl. -Solution: Add two variables to the dynamic library loading. (Suresh - Govindachar) -Files: src/if_perl.xs - -Patch 7.1.103 -Problem: Using "dw" with the cursor past the end of the last line (using - CTRL-\ CTRL-O from Insert mode) deletes a character. (Tim Chase) -Solution: Don't move the cursor back when the movement failed. -Files: src/normal.c - -Patch 7.1.104 (after 7.1.095) -Problem: When 'lazyredraw' is set a focus event causes redraw to be - postponed until a key is pressed. -Solution: Instead of not returning from vgetc() when a focus event is - encountered return K_IGNORE. Add plain_vgetc() for when the - caller doesn't want to get K_IGNORE. -Files: src/digraph.c, src/edit.c, src/ex_cmds.c, src/ex_getln.c, - src/getchar.c, src/normal.c, src/proto/getchar.pro, src/window.c - -Patch 7.1.105 -Problem: Internal error when using "0 ? {'a': 1} : {}". (A.Politz) -Solution: When parsing a dictionary value without using the value, don't try - obtaining the key name. -Files: src/eval.c - -Patch 7.1.106 -Problem: ":messages" doesn't quit listing on ":". -Solution: Break the loop when "got_int" is set. -Files: src/message.c - -Patch 7.1.107 -Problem: When doing a block selection and using "s" to change the text, - while triggering auto-indenting, causes the wrong text to be - repeated in other lines. (Adri Verhoef) -Solution: Compute the change of indent and compensate for that. -Files: src/ops.c - -Patch 7.1.108 (after 7.1.100) -Problem: Win32: Compilation problems in Cscope code. (Jeff Lanzarotta) -Solution: Use (long) instead of (intptr_t) when it's not defined. -Files: src/if_cscope.c - -Patch 7.1.109 -Problem: GTK: when there are many tab pages, clicking on the arrow left of - the labels moves to the next tab page on the right. (Simeon Bird) -Solution: Check the X coordinate of the click and pass -1 as value for the - left arrow. -Files: src/gui_gtk_x11.c, src/term.c - -Patch 7.1.110 (after 7.1.102) -Problem: Win32: Still compilation problems with Perl. -Solution: Change the #ifdefs. (Suresh Govindachar) -Files: src/if_perl.xs - -Patch 7.1.111 -Problem: When using ":vimgrep" with the "j" flag folds from another buffer - may be displayed. (A.Politz) -Solution: When not jumping to another buffer update the folds. -Files: src/quickfix.c - -Patch 7.1.112 -Problem: Using input() with a wrong argument may crash Vim. (A.Politz) -Solution: Init the input() return value to NULL. -Files: src/eval.c - -Patch 7.1.113 -Problem: Using map() to go over an empty list causes memory to be freed - twice. (A.Politz) -Solution: Don't clear the typeval in restore_vimvar(). -Files: src/eval.c - -Patch 7.1.114 -Problem: Memory leak in getmatches(). -Solution: Don't increment the refcount twice. -Files: src/eval.c - -Patch 7.1.115 (after 7.1.105) -Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) -Solution: Init variable to NULL. -Files: src/eval.c - -Patch 7.1.116 -Problem: Cannot display Unicode characters above 0x10000. -Solution: Remove the replacement with a question mark when UNICODE16 is not - defined. (partly by Nicolas Weber) -Files: src/screen.c - -Patch 7.1.117 -Problem: Can't check whether Vim was compiled with Gnome. (Tony Mechelynck) -Solution: Add gui_gnome to the has() list. -Files: src/eval.c - -Patch 7.1.118 (after 7.1.107) -Problem: Compiler warning for Visual C compiler. -Solution: Add typecast. (Mike Williams) -Files: src/ops.c - -Patch 7.1.119 -Problem: Crash when 'cmdheight' set to very large value. (A.Politz) -Solution: Limit 'cmdheight' to 'lines' minus one. Store right value of - 'cmdheight' when running out of room. -Files: src/option.c, src/window.c - -Patch 7.1.120 -Problem: Can't properly check memory leaks while running tests. -Solution: Add an argument to garbagecollect(). Delete functions and - variables in the test scripts. -Files: runtime/doc/eval.txt src/eval.c, src/globals.h, src/main.c, - src/testdir/Makefile, src/testdir/test14.in, - src/testdir/test26.in, src/testdir/test34.in, - src/testdir/test45.in, src/testdir/test47.in, - src/testdir/test49.in, src/testdir/test55.in, - src/testdir/test56.in, src/testdir/test58.in, - src/testdir/test59.in, src/testdir/test60.in, - src/testdir/test60.vim, src/testdir/test62.in, - src/testdir/test63.in, src/testdir/test64.in, - -Patch 7.1.121 -Problem: Using ":cd %:h" when editing a file in the current directory - results in an error message for using an empty string. -Solution: When "%:h" results in an empty string use ".". -Files: src/eval.c - -Patch 7.1.122 -Problem: Mac: building Vim.app fails. Using wrong architecture. -Solution: Use line continuation for the gui_bundle dependency. Detect the - system architecture with "uname -a". -Files: src/main.aap - -Patch 7.1.123 -Problem: Win32: ":edit foo ~ foo" expands "~". -Solution: Change the call to expand_env(). -Files: src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/option.c - -Patch 7.1.124 (extra) -Problem: Mac: When dropping a file on Vim.app that is already in the buffer - list (from .viminfo) results in editing an empty, unnamed buffer. - (Axel Kielhorn) Also: warning for unused variable. -Solution: Move to the buffer of the first argument. Delete unused variable. -Files: src/gui_mac.c - -Patch 7.1.125 -Problem: The TermResponse autocommand event is not always triggered. (Aron - Griffis) -Solution: When unblocking autocommands check if v:termresponse changed and - trigger the event then. -Files: src/buffer.c, src/diff.c, src/ex_getln.c, src/fileio.c, - src/globals.h, src/misc2.c, src/proto/fileio.pro, src/window.c - -Patch 7.1.126 (extra) -Problem: ":vimgrep */*" fails when a BufRead autocommand changes directory. - (Bernhard Kuhn) -Solution: Change back to the original directory after loading a file. - Also: use shorten_fname1() to avoid duplicating code. -Files: src/buffer.c, src/ex_docmd.c, src/fileio.c, src/gui_gtk.c, - src/gui_w48.c, src/proto/ex_docmd.pro, src/proto/fileio.pro, - src/quickfix.c - -Patch 7.1.127 -Problem: Memory leak when doing cmdline completion. (Dominique Pelle) -Solution: Free "orig" argument of ExpandOne() when it's not used. -Files: src/ex_getln.c - -Patch 7.1.128 (extra) -Problem: Build problems with new version of Cygwin. -Solution: Remove -D__IID_DEFINED__, like with MingW. (Guopeng Wen) -Files: src/Make_cyg.mak - -Patch 7.1.129 (extra) -Problem: Win32: Can't get the user name when it is longer than 15 - characters. -Solution: Use UNLEN instead of MAX_COMPUTERNAME_LENGTH. (Alexei Alexandrov) -Files: src/os_win32.c - -Patch 7.1.130 -Problem: Crash with specific order of undo and redo. (A.Politz) -Solution: Clear and adjust pointers properly. Add u_check() for debugging. -Files: src/undo.c, src/structs.h - -Patch 7.1.131 -Problem: ":mksession" always adds ":setlocal autoread". (Christian J. - Robinson) -Solution: Skip boolean global/local option using global value. -Files: src/option.c - -Patch 7.1.132 -Problem: getpos("'>") may return a negative column number for a Linewise - selection. (A.Politz) -Solution: Don't add one to MAXCOL. -Files: src/eval.c - -Patch 7.1.133 (after 7.1.126) -Problem: shorten_fname1() linked when it's not needed. -Solution: Add #ifdef. -Files: src/fileio.c - -Patch 7.1.134 (extra) -Problem: Win32: Can't build with VC8 -Solution: Detect the MSVC version instead of using NMAKE_VER. - (Mike Williams) -Files: src/Make_mvc.mak - -Patch 7.1.135 -Problem: Win32: When editing a file c:\tmp\foo and c:\tmp\\foo we have two - buffers for the same file. (Suresh Govindachar) -Solution: Invoke FullName_save() when a path contains "//" or "\\". -Files: src/buffer.c - -Patch 7.1.136 -Problem: Memory leak when using Ruby syntax highlighting. (Dominique Pelle) -Solution: Free the contained-in list. -Files: src/syntax.c - -Patch 7.1.137 -Problem: Build failure when using EXITFREE. (Dominique Pelle) -Solution: Add an #ifdef around using clip_exclude_prog. -Files: src/misc2.c - -Patch 7.1.138 -Problem: The Perl Msg() function doesn't stop when "q" is typed at the more - prompt. (Hari Krishna Dara) -Solution: Check got_int. -Files: src/if_perl.xs - -Patch 7.1.139 -Problem: When using marker folding and ending Insert mode with CTRL-C the - current fold is truncated. (Fred Kater) -Solution: Ignore got_int while updating folds. -Files: src/fold.c - -Patch 7.1.140 -Problem: v:count is set only after typing a non-digit, that makes it - difficult to make a nice mapping. -Solution: Set v:count while still typing the count. -Files: src/normal.c - -Patch 7.1.141 -Problem: GTK: -geom argument doesn't support a negative offset. -Solution: Compute position from the right/lower corner. -Files: src/gui_gtk_x11.c - -Patch 7.1.142 -Problem: ":redir @A>" doesn't work. -Solution: Ignore the extra ">" also when appending. (James Vega) -Files: src/ex_docmd.c - -Patch 7.1.143 -Problem: Uninitialized memory read when diffing three files. (Dominique - Pelle) -Solution: Remove "+ !notset" so that we don't use fields that were not - computed. -Files: src/diff.c - -Patch 7.1.144 -Problem: After ":diffup" cursor can be in the wrong position. -Solution: Force recomputing the cursor position. -Files: src/diff.c - -Patch 7.1.145 -Problem: Insert mode completion: When using the popup menu, after - completing a word and typing a non-word character Vim is still - completing the same word, following CTRL-N doesn't work. - Insert mode Completion: When using CTRL-X O and there is only - "struct." before the cursor, typing one char to reduce the - matches, then BS completion stops. -Solution: When typing a character that is not part of the item being - completed, stop complete mode. For whole line completion also - accept a space. For file name completion stop at a path - separator. - For omni completion stay in completion mode even if completing - with empty string. -Files: src/edit.c - -Patch 7.1.146 (extra) -Problem: VMS: Files with a very rare record organization (VFC) cannot be - properly written by Vim. - On older VAX systems mms runs into a syntax error. -Solution: Check for this special situation. Do not wrap a comment, make it - one long line. (Zoltan Arpadffy) -Files: src/fileio.c, src/Make_vms.mms - -Patch 7.1.147 (after 7.1.127) -Problem: Freeing memory already freed when completing user name. (Meino - Cramer) -Solution: Use a flag to remember if "orig" needs to be freed. -Files: src/ex_getln.c - -Patch 7.1.148 -Problem: Some types are not found by configure. -Solution: Test for the sys/types.h header file. (Sean Boudreau) -Files: src/configure.in, src/auto/configure - -Patch 7.1.149 -Problem: GTK GUI: When the completion popup menu is used scrolling another - window by the scrollbar is OK, but using the scroll wheel it - behaves line <Enter>. -Solution: Ignore K_MOUSEDOWN and K_MOUSEUP. Fix redrawing the popup menu. -Files: src/edit.c, src/gui.c - -Patch 7.1.150 -Problem: When 'clipboard' has "unnamed" using "p" in Visual mode doesn't - work correctly. (Jianrong Yu) -Solution: When 'clipboard' has "unnamed" also obtain the selection when - getting the default register. -Files: src/ops.c - -Patch 7.1.151 -Problem: Using whole line completion with 'ignorecase' and 'infercase' set - and the line is empty get an lalloc(0) error. -Solution: Don't try changing case for an empty match. (Matthew Wozniski) -Files: src/edit.c - -Patch 7.1.152 -Problem: Display problem when 'hls' and 'cursorcolumn' are set and - searching for "$". (John Mullin) Also when scrolling - horizontally when 'wrap' is off. -Solution: Keep track of the column where highlighting was set. Check the - column offset when skipping characters. -Files: src/screen.c - -Patch 7.1.153 -Problem: Compiler warnings on SGI. Undefined XpmAllocColor (Charles - Campbell) -Solution: Add type casts. Init st_dev and st_ino separately. Don't use - type casts for vim_snprintf() when HAVE_STDARG_H is defined. - Define XpmAllocColor when needed. -Files: src/eval.c, src/ex_cmds.c, src/fileio.c, src/misc2.c, - src/gui_xmebw.c - -Patch 7.1.154 -Problem: Compiler warning for signed/unsigned compare. -Solution: Add type cast. -Files: src/screen.c - -Patch 7.1.155 -Problem: Crash when 'undolevels' is 0 and repeating "udd". (James Vega) -Solution: When there is only one branch use u_freeheader() to delete it. -Files: src/undo.c - -Patch 7.1.156 -Problem: Overlapping arguments for strcpy() when expanding command line - variables. -Solution: Use mch_memmove() instead of STRCPY(). Also fix a few typos. - (Dominique Pelle) -Files: src/ex_docmd.c - -Patch 7.1.157 -Problem: In Ex mode, :" gives an error at end-of-file. (Michael Hordijk) -Solution: Only give an error for an empty line, not for a comment. -Files: src/ex_docmd.c - -Patch 7.1.158 (extra) -Problem: Win32 console: When 'encoding' is "utf-8" and typing Alt-y the - result is wrong. Win32 GUI: Alt-y results in "u" when 'encoding' - is "cp1250" (Lukas Cerman) -Solution: For utf-8 don't set the 7th bit in a byte, convert to the correct - byte sequence. For cp1250, when conversion to 'encoding' results - in the 7th bit not set, set the 7th bit after conversion. -Files: src/os_win32.c, src/gui_w48.c - -Patch 7.1.159 -Problem: strcpy() has overlapping arguments. -Solution: Use mch_memmove() instead. (Dominique Pelle) -Files: src/ex_cmds.c - -Patch 7.1.160 -Problem: When a focus autocommand is defined, getting or losing focus - causes the hit-enter prompt to be redrawn. (Bjorn Winckler) -Solution: Overwrite the last line. -Files: src/message.c - -Patch 7.1.161 -Problem: Compilation errors with tiny features and EXITFREE. -Solution: Add #ifdefs. (Dominique Pelle) -Files: src/edit.c, src/misc2.c - -Patch 7.1.162 -Problem: Crash when using a modifier before "while" or "for". (A.Politz) -Solution: Skip modifiers when checking for a loop command. -Files: src/proto/ex_docmd.pro, src/ex_docmd.c, src/ex_eval.c - -Patch 7.1.163 -Problem: Warning for the unknown option 'bufsecret'. -Solution: Remove the lines .vim that use this option. (Andy Wokula) -Files: runtime/menu.vim - -Patch 7.1.164 -Problem: Reading past end of regexp pattern. (Dominique Pelle) -Solution: Use utf_ptr2len(). -Files: src/regexp.c - -Patch 7.1.165 -Problem: Crash related to getting X window ID. (Dominique Pelle) -Solution: Don't trust the window ID that we got in the past, check it every - time. -Files: src/os_unix.c - -Patch 7.1.166 -Problem: Memory leak for using "gp" in Visual mode. -Solution: Free memory in put_register(). (Dominique Pelle) -Files: src/ops.c - -Patch 7.1.167 -Problem: Xxd crashes when using "xxd -b -c 110". (Debian bug 452789) -Solution: Allocate more memory. Fix check for maximum number of columns. -Files: src/xxd/xxd.c - -Patch 7.1.168 (extra) -Problem: Win32 GUI: Since patch 7.1.095, when the Vim window does not have - focus, clicking in it doesn't position the cursor. (Juergen - Kraemer) -Solution: Don't reset s_button_pending just after receiving focus. -Files: src/gui_w48.c - -Patch 7.1.169 -Problem: Using uninitialized variable when system() fails. (Dominique - Pelle) -Solution: Let system() return an empty string when it fails. -Files: src/eval.c - -Patch 7.1.170 -Problem: Valgrind warning for overlapping arguments for strcpy(). -Solution: Use mch_memmove() instead. (Dominique Pelle) -Files: src/getchar.c - -Patch 7.1.171 -Problem: Reading one byte before allocated memory. -Solution: Check index not to become negative. (Dominique Pelle) -Files: src/ex_getln.c - -Patch 7.1.172 -Problem: When 'buftype' is "acwrite" Vim still checks if the file or - directory exists before overwriting. -Solution: Don't check for overwriting when the buffer name is not a file - name. -Files: src/ex_cmds.c - -Patch 7.1.173 -Problem: Accessing freed memory. (Dominique Pelle) -Solution: Don't call reg_getline() to check if a line is the first in the - file. -Files: src/regexp.c - -Patch 7.1.174 -Problem: Writing NUL past end of a buffer. -Solution: Copy one byte less when using strncat(). (Dominique Pelle) -Files: src/ex_cmds.c, src/ex_docmd.c, - -Patch 7.1.175 -Problem: <BS> doesn't work with some combination of 'sts', 'linebreak' and - 'backspace'. (Francois Ingelrest) -Solution: When adding white space results in not moving back delete one - character. -Files: src/edit.c - -Patch 7.1.176 -Problem: Building with Aap fails when the "compiledby" argument contains - '<' or '>' characters. (Alex Yeh) -Solution: Change how quoting is done in the Aap recipe. -Files: src/main.aap - -Patch 7.1.177 -Problem: Freeing memory twice when in debug mode while reading a script. -Solution: Ignore script input while in debug mode. -Files: src/ex_cmds2.c, src/getchar.c, src/globals.h - -Patch 7.1.178 -Problem: "%" doesn't work on "/* comment *//* comment */". -Solution: Don't handle the "//" in "*//*" as a C++ comment. (Markus - Heidelberg) -Files: src/search.c - -Patch 7.1.179 -Problem: Need to check for TCL 8.5. -Solution: Adjust configure script. (Alexey Froloff) -Files: src/configure.in, src/auto/configure - -Patch 7.1.180 -Problem: Regexp patterns not tested sufficiently. -Solution: Add more checks to the regexp test. -Files: src/testdir/test64.in, src/testdir/test64.ok - -Patch 7.1.181 -Problem: Accessing uninitialized memory in Farsi mode. (Dominique Pelle) -Solution: Only invoke lrF_sub() when there is something to do. -Files: src/ex_cmds.c - -Patch 7.1.182 -Problem: When using tab pages and an argument list the session file may - contain wrong "next" commands. (Alexander Bluem) -Solution: Use "argu" commands and only when needed. -Files: src/ex_docmd.c - -Patch 7.1.183 -Problem: "Internal error" for ":echo matchstr('a', 'a\%[\&]')" (Mitanu - Paul) -Solution: Inside "\%[]" detect \&, \| and \) as an error. -Files: src/regexp.c - -Patch 7.1.184 -Problem: Crash when deleting backwards over a line break in Insert mode. -Solution: Don't advance the cursor when it's already on the NUL after a - line. (Matthew Wozniski) -Files: src/normal.c - -Patch 7.1.185 -Problem: Using "gR" with a multi-byte encoding and typing a CR pushes - characters onto the replace stack incorrectly, resulting in BS - putting back the wrong characters. (Paul B. Mahol) -Solution: Push multi-byte characters onto the replace stack in reverse byte - order. Add replace_push_mb(). -Files: src/edit.c, src/misc1.c, src/proto/edit.pro - -Patch 7.1.186 -Problem: "expand('<afile>')" returns a bogus value after changing - directory. (Dave Fishburn) -Solution: Copy "autocmd_fname" to allocated memory and expand to full - filename. Shorten the path when expanding <afile>. -Files: src/ex_docmd.c, src/fileio.c - -Patch 7.1.187 -Problem: Win32 GUI: Custom completion using system() no longer works - after patch 7.1.104. (Erik Falor) -Solution: Loop when safe_vgetc() returns K_IGNORE. -Files: src/ex_getln.c - -Patch 7.1.188 -Problem: When 'showmode' is off the message for changing a readonly file is - given in the second column instead of the first. (Payl B. Mahol) -Solution: Put the W10 message in the first column. -Files: src/edit.c - -Patch 7.1.189 (after 7.1.104) -Problem: Patch 7.1.104 was incomplete. -Solution: Also call plain_vgetc() in ask_yesno(). -Files: src/misc1.c - -Patch 7.1.190 -Problem: Cursor after end-of-line: "iA sentence.<Esc>)" -Solution: Move cursor back and make motion inclusive. -Files: src/normal.c - -Patch 7.1.191 -Problem: Win32 GUI: after patch 7.1.168 there is still a problem when - clicking in a scrollbar. (Juergen Jottkaerr) -Solution: Don't check the input buffer when dragging the scrollbar. -Files: src/gui.c - -Patch 7.1.192 -Problem: With Visual block selection, "s" and typing something, CTRL-C - doesn't stop Vim from repeating the replacement in other lines, - like happens for "I". -Solution: Check for "got_int" to be set. -Files: src/ops.c - -Patch 7.1.193 -Problem: Some Vim 5.x digraphs are missing in Vim 7, even though the - character pairs are not used. (Philippe de Muyter) -Solution: Add those Vim 5.x digraphs that don't conflict with others. -Files: src/digraph.c - -Patch 7.1.194 -Problem: ":echo glob('~/{}')" results in /home/user//. -Solution: Don't add a slash if there already is one. -Files: src/os_unix.c - -Patch 7.1.195 -Problem: '0 mark doesn't work for "~/foo ~ foo". -Solution: Don't expand the whole file name, only "~/". -Files: src/mark.c - -Patch 7.1.196 (extra) -Problem: Win32 GUI: "\n" in a tooltip doesn't cause a line break. (Erik - Falor) -Solution: Use the TTM_SETMAXTIPWIDTH message. -Files: src/gui_w32.c - -Patch 7.1.197 -Problem: Mac: "make install" doesn't work when prefix defined. -Solution: Pass different arguments to "make installruntime". (Jjgod Jiang) -Files: src/Makefile - -Patch 7.1.198 -Problem: Hang when using ":s/\n//gn". (Burak Gorkemli) -Solution: Set "skip_match". -Files: src/ex_cmds.c - -Patch 7.1.199 -Problem: Can't do command line completion for a specific file name - extension. -Solution: When the pattern ends in "$" don't add a star for completion and - remove the "$" before matching with file names. -Files: runtime/doc/cmdline.txt, src/ex_getln.c - -Patch 7.1.200 (after 7.1.177 and 7.1.182) -Problem: Compiler warnings for uninitialized variables. -Solution: Init variables. -Files: src/ex_cmds2.c, src/ex_docmd.c - -Patch 7.1.201 -Problem: When reading stdin 'fenc' and 'ff are not set. -Solution: Set the options after reading stdin. (Ben Schmidt) -Files: src/fileio.c - -Patch 7.1.202 -Problem: Incomplete utf-8 byte sequence is not checked for validity. -Solution: Check the bytes that are present for being valid. (Ben Schmidt) -Files: src/mbyte.c - -Patch 7.1.203 -Problem: When 'virtualedit' is "onemore" then "99|" works but ":normal 99|" - doesn't. (Andy Wokula) -Solution: Check for "onemore" flag in check_cursor_col(). -Files: src/misc2.c - -Patch 7.1.204 (extra) -Problem: Win32: Using the example at 'balloonexpr' the balloon disappears - after four seconds and then comes back again. Also moves the - mouse pointer a little bit. (Yongwei Wu) -Solution: Set the autopop time to 30 seconds (the max value). (Sergey - Khorev) Move the mouse two pixels forward and one back to end up - in the same position (really!). -Files: src/gui_w32.c - -Patch 7.1.205 -Problem: Can't get the operator in an ":omap". -Solution: Add the "v:operator" variable. (Ben Schmidt) -Files: runtime/doc/eval.txt, src/eval.c, src/normal.c, src/vim.h - -Patch 7.1.206 -Problem: Compiler warnings when using MODIFIED_BY. -Solution: Add type casts. (Ben Schmidt) -Files: src/version.c - -Patch 7.1.207 -Problem: Netbeans: "remove" cannot delete one line. -Solution: Remove partial lines and whole lines properly. Avoid a memory - leak. (Xavier de Gaye) -Files: src/netbeans.c - -Patch 7.1.208 -Problem: On Alpha get an unaligned access error. -Solution: Store the dictitem pointer before using it. (Matthew Luckie) -Files: src/eval.c - -Patch 7.1.209 -Problem: GTK: When using the netrw plugin and doing ":gui" Vim hangs. -Solution: Stop getting a selection after three seconds. This is a hack. -Files: src/gui_gtk_x11.c - -Patch 7.1.210 -Problem: Listing mapping for 0xdb fails when 'encoding' is utf-8. (Tony - Mechelynck) -Solution: Recognize K_SPECIAL KS_EXTRA KE_CSI as a CSI byte. -Files: src/mbyte.c - -Patch 7.1.211 -Problem: The matchparen plugin may take an unexpected amount of time, so - that it looks like Vim hangs. -Solution: Add a timeout to searchpair(), searchpairpos(), search() and - searchpos(). Use half a second timeout in the plugin. -Files: runtime/doc/eval.txt, runtime/plugin/matchparen.vim, src/edit.c, - src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/normal.c, - src/proto/eval.pro, src/proto/ex_cmds2.pro, src/proto/search.pro, - src/search.c - -Patch 7.1.212 -Problem: Accessing a byte before a line. -Solution: Check that the column is 1 or more. (Dominique Pelle) -Files: src/edit.c - -Patch 7.1.213 -Problem: A ":tabedit" command that results in the "swap file exists" dialog - and selecting "abort" doesn't close the new tab. (Al Budden) -Solution: Pass "old_curwin" to do_exedit(). -Files: src/ex_docmd.c - -Patch 7.1.214 -Problem: ":1s/g\n\zs1//" deletes characters from the first line. (A Politz) -Solution: Start replacing in the line where the match starts. -Files: src/ex_cmds.c - -Patch 7.1.215 -Problem: It is difficult to figure out what syntax items are nested at a - certain position. -Solution: Add the synstack() function. -Files: runtime/doc/eval.txt, src/eval.c, src/proto/syntax.pro, - src/syntax.c - -Patch 7.1.216 -Problem: Variants of --remote-tab are not mentioned for "vim --help". -Solution: Display optional -wait and -silent. -Files: src/main.c - -Patch 7.1.217 -Problem: The "help-tags" tag may be missing from runtime/doc/tags when it - was generated during "make install". -Solution: Add the "++t" argument to ":helptags" to force adding the tag. -Files: runtime/doc/Makefile, runtime/doc/various.txt, src/ex_cmds.c, - src/ex_cmds.h - -Patch 7.1.218 -Problem: A syntax region without a "keepend", containing a region with - "extend" could be truncated at the end of the containing region. -Solution: Do not call syn_update_ends() when there are no keepend items. -Files: src/syntax.c - -Patch 7.1.219 (after 7.1.215) -Problem: synstack() returns situation after the current character, can't - see the state for a one-character region. -Solution: Don't update ending states in the requested column. -Files: runtime/doc/eval.txt, src/eval.c, src/hardcopy.c, - src/proto/syntax.pro, src/screen.c, src/spell.c, src/syntax.c - -Patch 7.1.220 -Problem: When a ")" or word movement command moves the cursor back from the - end of the line it may end up on the trail byte of a multi-byte - character. It's also moved back when it isn't needed. -Solution: Add the adjust_cursor() function. -Files: src/normal.c - -Patch 7.1.221 -Problem: When inserting a "(", triggering the matchparen plugin, the - following highlighting may be messed up. -Solution: Before triggering the CursorMovedI autocommands update the display - to update the stored syntax stacks for the change. -Files: src/edit.c - -Patch 7.1.222 (after 7.1.217) -Problem: Wildcards in argument of ":helptags" are not expanded. (Marcel - Svitalsky) -Solution: Expand wildcards in the directory name. -Files: src/ex_cmds.c - -Patch 7.1.223 -Problem: glob() doesn't work properly when 'shell' is "sh" or "bash" and - the expanded name contains spaces, '~', single quotes and other - special characters. (Adri Verhoef, Charles Campbell) -Solution: For Posix shells define a vimglob() function to list the matches - instead of using "echo" directly. -Files: src/os_unix.c - -Patch 7.1.224 -Problem: When using "vim -F -o file1 file2" only one window is - right-to-left. Same for "-H". (Ben Schmidt) -Solution: use set_option_value() to set 'rightleft'. -Files: src/main.c - -Patch 7.1.225 -Problem: Using uninitialized value when XGetWMNormalHints() fails. -Solution: Check the return value. (Dominique Pelle) -Files: src/os_unix.c - -Patch 7.1.226 -Problem: Command line completion doesn't work when a file name contains a - '&' character. -Solution: Accept all characters in a file name, except ones that end a - command or white space. -Files: src/ex_docmd.c - -Patch 7.1.227 -Problem: Hang in syntax HL when moving over a ")". (Dominique Pelle) -Solution: Avoid storing a syntax state in the wrong position in the list of - remembered states. -Files: src/syntax.c - -Patch 7.1.228 -Problem: When 'foldmethod' is "indent" and a fold is created with ">>" it - can't be closed with "zc". (Daniel Shahaf) -Solution: Reset the "small" flag of a fold when adding a line to it. -Files: src/fold.c - -Patch 7.1.229 -Problem: A fold is closed when it shouldn't when 'foldmethod' is "indent" - and backspacing a non-white character so that the indent increases. -Solution: Keep the fold open after backspacing a character. -Files: src/edit.c - -Patch 7.1.230 -Problem: Memory leak when executing SourceCmd autocommands. -Solution: Free the memory. (Dominique Pelle) -Files: src/ex_cmds2.c - -Patch 7.1.231 -Problem: When shifting lines the change is acted upon multiple times. -Solution: Don't have shift_line() call changed_bytes. -Files: src/edit.c, src/ops.c, src/proto/edit.pro, src/proto/ops.pro - -Patch 7.1.232 (after 7.1.207 and 7.1.211) -Problem: Compiler warnings with MSVC. -Solution: Add type casts. (Mike Williams) -Files: src/ex_cmds2.c, src/netbeans.c - -Patch 7.1.233 -Problem: Crash when doing Insert mode completion for a user defined - command. (Yegappan Lakshmanan) -Solution: Don't use the non-existing command line. -Files: src/ex_getln.c - -Patch 7.1.234 -Problem: When diff'ing three files the third one isn't displayed correctly. - (Gary Johnson) -Solution: Compute the size of diff blocks correctly when merging blocks. - Compute filler lines correctly when scrolling. -Files: src/diff.c - -Patch 7.1.235 -Problem: Pattern matching is slow when using a lot of simple patterns. -Solution: Avoid allocating memory by not freeing it when it's not so much. - (Alexei Alexandrov) -Files: src/regexp.c - -Patch 7.1.236 -Problem: When using 'incsearch' and 'hlsearch' a complicated pattern may - make Vim hang until CTRL-C is pressed. -Solution: Add the 'redrawtime' option. -Files: runtime/doc/options.txt, src/ex_cmds.c, src/ex_docmd.c, - src/ex_getln.c, src/gui.c, src/misc1.c, src/normal.c, - src/option.c, src/quickfix.c, src/regexp.c, src/proto/regexp.pro, - src/proto/search.pro, src/search.c, src/screen.c, - src/option.h, src/spell.c, src/structs.h, src/syntax.c, src/tag.c, - src/vim.h - -Patch 7.1.237 -Problem: Compiler warning on an Alpha processor in Motif code. -Solution: Change a typecast. (Adri Verhoef) -Files: src/gui_motif.c - -Patch 7.1.238 -Problem: Using the 'c' flag with searchpair() may cause it to fail. Using - the 'r' flag doesn't work when 'wrapscan' is set. (A.Politz) -Solution: Only use the 'c' flag for the first search, not for repeating. - When using 'r' imply 'W'. (Antony Scriven) -Files: src/eval.c - -Patch 7.1.239 (after 7.1.233) -Problem: Compiler warning for sprintf() argument. -Solution: Add a typecast. (Nico Weber) -Files: src/ex_getln.c - -Patch 7.1.240 -Problem: When "gUe" turns a German sharp s into SS the operation stops - before the end of the word. Latin2 has the same sharp s but it's - not changed to SS there. -Solution: Make sure all the characters are operated upon. Detect the sharp - s in latin2. Also fixes that changing case of a multi-byte - character that changes the byte count doesn't always work. -Files: src/ops.c - -Patch 7.1.241 -Problem: Focus change events not always ignored. (Erik Falor) -Solution: Ignore K_IGNORE in Insert mode in a few more places. -Files: src/edit.c - -Patch 7.1.242 (after 7.1.005) -Problem: "cib" doesn't work properly on "(x)". (Tim Pope) -Solution: Use ltoreq() instead of lt(). Also fix "ciT" on "<a>x</a>". -Files: src/search.c - -Patch 7.1.243 (after 7.1.240) -Problem: "U" doesn't work on all text in Visual mode. (Adri Verhoef) -Solution: Loop over all the lines to be changed. Add tests for this. -Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok - -Patch 7.1.244 -Problem: GUI may have part of the command line cut off. -Solution: Don't round the number of lines up, always round down. - (Tony Houghton, Scott Dillard) -Files: src/gui.c - -Patch 7.1.245 -Problem: Pressing CTRL-\ three times causes Vim to quit. (Ranganath Rao). - Also for f CTRL-\ CTRL-\. -Solution: When going to cooked mode in mch_delay() set a flag to ignore - SIGQUIT. -Files: src/os_unix.c - -Patch 7.1.246 -Problem: Configure hangs when the man pager is something strange. (lorien) -Solution: Set MANPAGER and PAGER to "cat". (Micah Cowan) -Files: src/auto/configure, src/configure.in - -Patch 7.1.247 -Problem: When using Netbeans backspacing in Insert mode skips a character - now and then. (Ankit Jain) -Solution: Avoid calling netbeans_removed(), it frees the line pointer. - (partly by Dominique Pelle). -Files: src/misc1.c - -Patch 7.1.248 -Problem: Can't set the '" mark. Can't know if setpos() was successful. -Solution: Allow setting the '" mark with setpos(). Have setpos() return a - value indicating success/failure. -Files: runtime/doc/eval.txt, src/eval.c, src/mark.c - -Patch 7.1.249 -Problem: After "U" the cursor can be past end of line. (Adri Verhoef) -Solution: Adjust the cursor position in u_undoline(). -Files: src/undo.c - -Patch 7.1.250 -Problem: ":setglobal fenc=anything" gives an error message in a buffer - where 'modifiable' is off. (Ben Schmidt) -Solution: Don't give an error if 'modifiable' doesn't matter. -Files: src/option.c - -Patch 7.1.251 -Problem: Using freed memory when spell checking enabled. -Solution: Obtain the current line again after calling spell_move_to(). - (Dominique Pelle) -Files: src/screen.c - -Patch 7.1.252 (after 7.1.243) -Problem: Test 39 fails when the environment has a utf-8 locale. (Dominique - Pelle) -Solution: Force 'encoding' to be latin1. -Files: src/testdir/test39.in - -Patch 7.1.253 -Problem: ":sort" doesn't work in a one line file. (Patrick Texier) -Solution: Don't sort if there is only one line. (Dominique Pelle) -Files: src/ex_cmds.c - -Patch 7.1.254 -Problem: Tests 49 and 55 fail when the locale is French. -Solution: Using C messages for test 49. Filter the error message in test 55 - such that it works when the number is halfway the message. -Files: src/testdir/test49.in, src/testdir/test55.in - -Patch 7.1.255 -Problem: Vim doesn't support utf-32. (Yongwei Wu) -Solution: Add aliases for utf-32, it's the same as ucs-4. -Files: src/mbyte.c - -Patch 7.1.256 -Problem: findfile() also returns directories. -Solution: Cleanup the code for finding files and directories in a list of - directories. Remove the ugly global ff_search_ctx. -Files: src/eval.c, src/misc2.c, src/vim.h, src/tag.c - -Patch 7.1.257 -Problem: Configure can't always find the Tcl header files. -Solution: Also look in /usr/local/include/tcl$tclver and - /usr/include/tcl$tclver (James Vega) -Files: src/auto/configure, src/configure.in - -Patch 7.1.258 -Problem: Crash when doing "d/\n/e" and 'virtualedit' is "all". (Andy Wokula) -Solution: Avoid that the column becomes negative. Also fixes other problems - with the end of a pattern match is in column zero. (A.Politz) -Files: src/search.c - -Patch 7.1.259 -Problem: Cursor is in the wrong position when 'rightleft' is set, - 'encoding' is "utf-8" and on an illegal byte. (Dominique Pelle) -Solution: Only put the cursor in the first column when actually on a - double-wide character. (Yukihiro Nakadaira) -Files: src/screen.c - -Patch 7.1.260 -Problem: Cursor positioning problem after ^@ wrapping halfway when - 'encoding' is utf-8. -Solution: Only count a position for printable characters. (partly by - Yukihiro Nakadaira) -Files: src/charset.c - -Patch 7.1.261 -Problem: When a 2 byte BOM is detected Vim uses UCS-2, which doesn't work - for UTF-16 text. (Tony Mechelynck) -Solution: Default to UTF-16. -Files: src/fileio.c, src/testdir/test42.ok - -Patch 7.1.262 -Problem: Can't get the process ID of Vim. -Solution: Implement getpid(). -Files: src/eval.c, runtime/doc/eval.txt - -Patch 7.1.263 -Problem: The filetype can consist of two dot separated names. This works - for syntax and ftplugin, but not for indent. (Brett Stahlman) -Solution: Use split() and loop over each dot separated name. -Files: runtime/indent.vim - -Patch 7.1.264 -Problem: Crash when indenting lines. (Dominique Pelle) -Solution: Set the cursor column when changing the cursor line. -Files: src/ops.c, src/misc1.c - -Patch 7.1.265 -Problem: When 'isfname' contains a space, cmdline completion can hang. - (James Vega) -Solution: Reset the "len" variable. -Files: src/ex_docmd.c - -Patch 7.1.266 -Problem: When the version string returned by the terminal contains - unexpected characters, it is used as typed input. (James Vega) -Solution: Assume the escape sequence ends in a letter. -Files: src/term.c - -Patch 7.1.267 -Problem: When changing folds cursor may be positioned in the wrong place. -Solution: Call changed_window_setting_win() instead of - changed_window_setting(). -Files: src/fold.c - -Patch 7.1.268 -Problem: Always shows "+" at end of screen line with: ":set - listchars=eol:$,extends:+ nowrap list cursorline" (Gary Johnson) -Solution: Check for lcs_eol_one instead of lcs_eol. -Files: src/screen.c - -Patch 7.1.269 -Problem: The matchparen plugin has an arbitrary limit for the number of - lines to look for a match. -Solution: Rely on the searchpair() timeout. -Files: runtime/plugin/matchparen.vim - -Patch 7.1.270 -Problem: ":?foo?" matches in current line since patch 7.1.025. (A.Politz) -Solution: Remove the SEARCH_START flag. -Files: src/ex_docmd.c, src/search.c - -Patch 7.1.271 -Problem: In a Vim build without autocommands, checking a file that was - changed externally causes the current buffer to be changed - unexpectedly. (Karsten Hopp) -Solution: Store "curbuf" instead of "buf". -Files: src/fileio.c - -Patch 7.1.272 -Problem: The special buffer name [Location List] is not used for a buffer - displayed in another tab page. -Solution: Use FOR_ALL_TAB_WINDOWS instead of FOR_ALL_WINDOWS. (Hiroaki - Nishihara) -Files: src/buffer.c - -Patch 7.1.273 -Problem: When profiling on Linux Vim exits early. (Liu Yubao) -Solution: When profiling don't exit on SIGPROF. -Files: src/Makefile, src/os_unix.c - -Patch 7.1.274 (after 7.1.272) -Problem: Compiler warning for optimized build. -Solution: Init win to NULL. -Files: src/buffer.c - -Patch 7.1.275 (extra) -Problem: Mac: ATSUI and 'antialias' don't work properly together. -Solution: Fix this and the input method. (Jjgod Jiang) -Files: src/vim.h, src/gui_mac.c - -Patch 7.1.276 -Problem: "gw" uses 'formatexpr', even though the docs say it doesn't. -Solution: Don't use 'formatexpr' for "gw". -Files: src/vim.h, src/edit.c, src/ops.c, src/proto/ops.pro - -Patch 7.1.277 -Problem: Default for 'paragraphs' misses some items (Colin Watson) -Solution: Add TP, HP, Pp, Lp and It to 'paragraphs'. (James Vega) -Files: runtime/doc/options.txt, src/option.c - -Patch 7.1.278 (extra, after 7.1.275) -Problem: Build failure when USE_CARBONKEYHANDLER is not defined. -Solution: Remove #ifdef. -Files: src/gui_mac.c - -Patch 7.1.279 -Problem: When using cscope temporary files are left behind. -Solution: Send the quit command to cscope and give it two seconds to exit - nicely before killing it. (partly by Dominique Pelle) -Files: src/if_cscope.c - -Patch 7.1.280 (after 7.1.275) -Problem: Mac: build problems when not using multibyte feature. (Nicholas - Stallard) -Solution: Don't define USE_IM_CONTROL when not using multibyte. -Files: src/vim.h - -Patch 7.1.281 (after 7.1.279) -Problem: sa.sa_mask is not initialized. Cscope may not exit. -Solution: Use sigemptyset(). Use SIGKILL instead of SIGTERM. (Dominique - Pelle) -Files: src/if_cscope.c - -Patch 7.1.282 (extra) -Problem: Win64: Edit with Vim context menu isn't installed correctly. - Compiler warnings and a few other things. -Solution: Add [ and ] to entry of class name. Use UINT_PTR instead of UINT. - And a fixes for the other things. (George V. Reilly) -Files: src/GvimExt/Makefile, src/dosinst.c, src/if_ole.cpp, src/if_ole.h, - src/if_ole.idl, src/INSTALLpc.txt, src/Make_mvc.mak, - src/os_win32.c, - -Patch 7.1.283 -Problem: Non-extra part for 7.1.282. -Solution: Various changes. -Files: src/ex_docmd.c, src/globals.h, src/if_cscope.c, src/main.c, - src/mark.c, src/netbeans.c, src/popupmnu.c, src/vim.h, - src/window.c - -Patch 7.1.284 -Problem: Compiler warnings for functions without prototype. -Solution: Add the function prototypes. (Patrick Texier) -Files: src/eval.c, src/quickfix.c - -Patch 7.1.285 (extra) -Problem: Mac: dialog hotkeys don't work. -Solution: Add hotkey support. (Dan Sandler) -Files: src/gui_mac.c - -Patch 7.1.286 (after 7.1.103) -Problem: "w" at the end of the buffer moves the cursor past the end of the - line. (Markus Heidelberg) -Solution: Move the cursor back from the NUL when it was moved forward. -Files: src/normal.c - -Patch 7.1.287 -Problem: Crash when reversing a list after using it. (Andy Wokula) -Solution: Update the pointer to the last used element. (Dominique Pelle) -Files: src/eval.c - -Patch 7.1.288 (after 7.1.281) -Problem: Cscope still leaves behind temp files when using gvim. -Solution: When getting the ECHILD error loop for a while until cscope exits. - (Dominique Pelle) -Files: if_cscope.c - -Patch 7.1.289 -Problem: When EXITFREE is defined and 'acd' is set freed memory is used. - (Dominique Pelle) -Solution: Reset p_acd before freeing all buffers. -Files: src/misc2.c - -Patch 7.1.290 -Problem: Reading bytes that were not written when spell checking and a line - has a very large indent. -Solution: Don't copy the start of the next line when it only contains - spaces. (Dominique Pelle) -Files: src/spell.c - -Patch 7.1.291 (after 7.1.288) -Problem: Compiler warning. -Solution: Change 50 to 50L. -Files: src/if_cscope.c - -Patch 7.1.292 -Problem: When using a pattern with "\@<=" the submatches can be wrong. - (Brett Stahlman) -Solution: Save the submatches when attempting a look-behind match. -Files: src/regexp.c - -Patch 7.1.293 -Problem: Spell checking considers super- and subscript characters as word - characters. -Solution: Recognize the Unicode super and subscript characters. -Files: src/spell.c - -Patch 7.1.294 -Problem: Leaking memory when executing a shell command. -Solution: Free memory when not able to save for undo. (Dominique Pelle) -Files: src/ex_cmds.c - -Patch 7.1.295 -Problem: Vimtutor only works with vim, not gvim. -Solution: Add the -g flag to vimtutor. (Dominique Pelle) Add gvimtutor. -Files: src/Makefile, src/gvimtutor, src/vimtutor, runtime/doc/vimtutor.1 - -Patch 7.1.296 -Problem: SELinux is not supported. -Solution: Detect the selinux library and use mch_copy_sec(). (James Vega) -Files: src/auto/configure, src/config.h.in, src/configure.in, - src/fileio.c, src/memfile.c, src/os_unix.c, src/proto/os_unix.pro - -Patch 7.1.297 -Problem: When using the search/replace dialog the parenmatch highlighting - can be wrong. (Tim Duncan) -Solution: In the GUI redraw function invoke the CursorMoved autocmd. -Files: src/gui.c - -Patch 7.1.298 (after 7.1.295) -Problem: src/gvimtutor is not distributed. -Solution: Add it to the list of distributed files. -Files: Filelist - -Patch 7.1.299 -Problem: Filetype detection doesn't work properly for file names ending in - a part that is ignored and contain a space or other special - characters. -Solution: Escape the special characters using the new fnameescape function. -Files: runtime/doc/eval.txt, runtime/filetype.vim, src/eval.c, - src/ex_getln.c, src/proto/ex_getln.pro, src/vim.h - -Patch 7.1.300 -Problem: Value of asmsyntax argument isn't checked for valid characters. -Solution: Only accepts letters and digits. -Files: runtime/filetype.vim - -Patch 7.1.301 -Problem: When the "File/Save" menu is used in Insert mode, a tab page label - is not updated to remove the "+". -Solution: Call draw_tabline() from showruler(). (Bjorn Winckler) -Files: src/screen.c - -Patch 7.1.302 (after 7.1.299) -Problem: Compilation error on MS-Windows. -Solution: Don't use xp_shell when it's not defined. -Files: src/ex_getln.c - -Patch 7.1.303 (after 7.1.302) -Problem: Compilation error on MS-Windows, again. -Solution: Declare p. -Files: src/ex_getln.c - -Patch 7.1.304 -Problem: Shortpath_for_invalid_fname() does not work correctly and is - unnecessary complex. -Solution: Clean up shortpath_for_invalid_fname(). (mostly by Yegappan - Lakshmanan) -Files: src/eval.c - -Patch 7.1.305 -Problem: Editing a compressed file with special characters in the name - doesn't work properly. -Solution: Escape special characters. -Files: runtime/autoload/gzip.vim - -Patch 7.1.306 -Problem: Some Unicode characters are handled like word characters while - they are symbols. -Solution: Adjust the table for Unicode classification. -Files: src/mbyte.c - -Patch 7.1.307 -Problem: Many warnings when compiling with Python 2.5. -Solution: Use ssize_t instead of int for some types. (James Vega) -Files: src/if_python.c - -Patch 7.1.308 -Problem: When in readonly mode ":options" produces an error. -Solution: Reset 'readonly'. (Gary Johnson) -Files: runtime/optwin.vim - -Patch 7.1.309 -Problem: Installing and testing with a shadow directory doesn't work. - (James Vega) -Solution: Add "po" to the list of directories to link. Also link the Vim - scripts in testdir. And a few more small fixes. -Files: src/Makefile - -Patch 7.1.310 -Problem: Incomplete utf-8 byte sequence at end of the file is not detected. - Accessing memory that wasn't written. -Solution: Check the last bytes in the buffer for being a valid utf-8 - character. (mostly by Ben Schmidt) - Also fix that the reported line number of the error was wrong. -Files: src/fileio.c - -Patch 7.1.311 -Problem: Compiler warning for missing sentinel in X code. -Solution: Change 0 to NULL. (Markus Heidelberg) -Files: src/mbyte.c - -Patch 7.1.312 -Problem: The .po files have mistakes in error numbers. -Solution: Search for these mistakes in the check script. (Dominique Pelle) -Files: src/po/check.vim - -Patch 7.1.313 -Problem: When the netbeans interface setModified call is used the status - lines and window title are not updated. -Solution: Redraw the status lines and title. (Philippe Fremy) -Files: src/netbeans.c - -Patch 7.1.314 -Problem: The value of 'pastetoggle' is written to the session file without - any escaping. (Randall Hansen) -Solution: Use put_escstr(). (Ben Schmidt) -Files: src/option.c - -Patch 7.1.315 -Problem: Crash with specific search pattern using look-behind match. - (Andreas Politz) -Solution: Also save the value of "need_clear_subexpr". -Files: src/regexp.c - -Patch 7.1.316 -Problem: When 'cscopetag' is set ":tag" gives an error message instead of - going to the next tag in the tag stack. -Solution: Don't call do_cstag() when there is no argument. (Mark Goldman) -Files: src/ex_docmd.c - -Patch 7.1.317 -Problem: Compiler warnings in Motif calls. -Solution: Change zero to NULL. (Dominique Pelle) -Files: src/gui_motif.c - -Patch 7.1.318 -Problem: Memory leak when closing xsmp connection. Crash on exit when - using Lesstif. -Solution: Don't close the X display to work around a Lesstif bug. Free - clientid. Also fix a leak for Motif and Athena. (Dominique Pelle) -Files: src/gui_x11.c, src/os_unix.c - -Patch 7.1.319 -Problem: When a register has an illegal utf-8 sequence, pasting it on the - command line causes an illegal memory access. -Solution: Use mb_cptr2char_adv(). (Dominique Pelle) -Files: src/ex_getln.c - -Patch 7.1.320 (extra) -Problem: Win64: Warnings while compiling Python interface. -Solution: Use PyInt in more places. Also update version message for the - console. (George Reilly) -Files: src/if_python.c, src/version.c - -Patch 7.1.321 (extra) -Problem: Win32 / Win64: Install file is outdated. -Solution: Update the text for recent compiler. (George Reilly) -Files: src/INSTALLpc.txt - -Patch 7.1.322 -Problem: Can't get start of Visual area in an <expr> mapping. -Solution: Add the 'v' argument to getpos(). -Files: runtime/doc/eval.txt, src/eval.c - -Patch 7.1.323 -Problem: Test 19 fails with some termcaps. (Dominique Pelle) -Solution: Set the t_kb and t_kD termcap values. -Files: src/testdir/test19.in, src/testdir/test38.in - -Patch 7.1.324 -Problem: File name path length on Unix is limited to 1024. -Solution: Use PATH_MAX when it's more than 1000. -Files: src/os_unix.h - -Patch 7.1.325 -Problem: When editing a command line that's longer than available space in - the window, the characters at the end are in reverse order. -Solution: Increment the insert position even when the command line doesn't - fit. (Ingo Karkat) -Files: src/ex_getln.c - -Patch 7.1.326 -Problem: ":s!from!to!" works, but ":smagic!from!to!" doesn't. It sees the - "!" as a flag to the command. Same for ":snomagic". (Johan Spetz) -Solution: When checking for a forced command also ignore ":smagic" and - ":snomagic". (Ian Kelling) -Files: src/ex_docmd.c - -Patch 7.1.327 -Problem: The GUI tutor is installed when there is no GUI version. -Solution: Only install gvimtutor when building a GUI version. -Files: src/Makefile - -Patch 7.1.328 -Problem: Crash when using Cygwin and non-posix path name in tags file. -Solution: Use separate buffer for posix path. (Ben Schmidt) -Files: src/os_unix.c - -Patch 7.1.329 -Problem: When the popup menu is removed a column of cells, the right halve - of double-wide characters, may not be redrawn. -Solution: Check if the right halve of a character needs to be redrawn. - (Yukihiro Nakadaira) -Files: src/screen.c - -Patch 7.1.330 -Problem: Reading uninitialized memory when using Del in replace mode. -Solution: Use utfc_ptr2len_len() instead of mb_ptr2len(). (Dominique Pelle) -Files: src/misc1.c - - -Warning for missing sentinel in gui_xmldlg.c. (Dominique Pelle) - -A search offset from the end of a match didn't work properly for multi-byte -characters. (Yukihiro Nakadaira) - -When displaying the value of 'key' don't show "*****" when the value is empty. -(Ben Schmidt) - -Internal error when compiled with EXITFREE and using the nerd_tree plugin. -Set last_msg_hist to NULL when history becomes empty. Call -free_all_functions() after garbage collection. (Dominique Pelle) - -GTK with XIM: <S-Space> does not work. (Yukihiro Nakadaira) - -Some shells do not support "echo -n", which breaks glob(). Use "echo" instead -of "echo -n $1; echo". (Gary Johnson) - -"echo 22,44" printed "22" on top of the command, the error messages caused -the rest not to be cleared. Added the need_clr_eos flag. - -Netbeans events are handled while updating the screen, causing a crash. -Change the moment when events are handled. Rename nb_parse_messages() to -netbeans_parse_messages(). (Xavier de Gaye) - -Test 11 was broken after patch 7.1.186 on Win32 console. (Daniel Shahaf) -Use shellescape() on the file name. - -IM was turned off in im_preedit_end_cb() for no good reason. (Takuhiro -Nishioka) - -A corrupted spell file could cause Vim to use lots of memory. Better -detection for running into the end of the file. (idea from James Vega) - -Mac: Included a patch to make it build with GTK. Moved language init to -mac_lang_init() function. (Ben Schmidt) - -Problem with 'wildmenu' after ":lcd", up/down arrows don't work. (Erik Falor) - -Fix configure.in to avoid "implicitly declared" warnings when running -configure. - -Fixed a memory leak when redefining a keymap. (Dominique Pelle) - -Setting 'pastetoggle' to "jj" didn't work. - -'ic' and 'smartcase' don't work properly when using \%V in a search pattern. -(Kana Natsuno) - -Patch 7.2a.001 -Problem: On some systems X11/Xlib.h exists (from X11-dev package) but - X11/Intrinsic.h does not (in Xt-dev package). This breaks the - build. Also, on Solaris 9 sys/ptem.h isn't found. -Solution: Have configure only accept X11 when X11/Intrinsic.h exists. - Check for sys/ptem.h while including sys/stream.h. (Vladimir - Marek) -Files: src/auto/configure, src/configure.in - -Patch 7.2a.002 -Problem: getbufvar(N, "") gets the dictionary of the current buffer instead - of buffer N. -Solution: Set curbuf before calling find_var_in_ht(). (Kana Natsuno) -Files: src/eval.c - -Patch 7.2a.003 -Problem: Leaking memory when using ":file name" and using access control - lists. -Solution: Invoke mch_free_acl() in vim_rename(). (Dominique Pelle) -Files: src/fileio.c - -Patch 7.2a.004 -Problem: Some systems can't get spell files by ftp. -Solution: Use http when it looks like it's possible. (James Vega) -Files: runtime/autoload/spellfile.vim - -Patch 7.2a.005 -Problem: A few error messages use confusing names. Misspelling. -Solution: Change "dissallows" to "disallows". (Dominique Pelle) Change - "number" to "Number". -Files: src/eval.c, src/fileio.c - -Patch 7.2a.006 -Problem: Reading past NUL in a string. -Solution: Check for invalid utf-8 byte sequence. (Dominique Pelle) -Files: src/charset.c - -Patch 7.2a.007 -Problem: ":let v = 1.2.3" was OK in Vim 7.1, now it gives an error. -Solution: Don't look for a floating point number after the "." operator. -Files: src/eval.c - -Patch 7.2a.008 -Problem: printf("%g", 1) doesn't work. -Solution: Convert Number to Float when needed. -Files: src/message.c - -Patch 7.2a.009 -Problem: cygwin_conv_to_posix_path() does not specify buffer size. -Solution: Use new Cygwin function: cygwin_conv_path(). (Corinna Vinschen) -Files: src/main.c, src/os_unix.c - -Patch 7.2a.010 -Problem: When a file name has an illegal byte sequence Vim may read - uninitialised memory. -Solution: Don't use UTF_COMPOSINGLIKE() on an illegal byte. In - msg_outtrans_len_attr() use char2cells() instead of ptr2cells(). - In utf_ptr2char() don't check second byte when first byte is - illegal. (Dominique Pelle) -Files: src/mbyte.c, src/message.c - -Patch 7.2a.011 -Problem: The Edit/Startup Settings menu doesn't work. -Solution: Expand environment variables. (Ben Schmidt) -Files: runtime/menu.vim - -Patch 7.2a.012 -Problem: Compiler warnings for casting int to pointer. -Solution: Add cast to long in between. (Martin Toft) -Files: src/gui_gtk_x11.c - -Patch 7.2a.013 -Problem: shellescape() does not escape "%" and "#" characters. -Solution: Add find_cmdline_var() and use it when the second argument to - shellescape() is non-zero. -Files: runtime/doc/eval.txt, src/eval.c, src/ex_docmd.c, - src/proto/ex_docmd.pro, src/proto/misc2.pro, src/misc2.c - -Patch 7.2a.014 -Problem: Problem with % in message. -Solution: Put % in single quotes. -Files: src/eval.c - -Patch 7.2a.015 (after 7.2a.010) -Problem: Misaligned messages. -Solution: Compute length of unprintable chars correctly. -Files: src/message.c - -Patch 7.2a.016 -Problem: Using CTRL-W v in the quickfix window results in two quickfix - windows, which is not allowed. ":tab split" should be allowed to - open a new quickfix window in another tab. -Solution: For CTRL-W v instead of splitting the window open a new one. - When using ":tab" do allow splitting the quickfix window (was - already included in patch 7.2a.013). -Files: src/window.c - -Patch 7.2a.017 -Problem: ":doautoall" executes autocommands for all buffers instead of just - for loaded buffers. -Solution: Change "curbuf" to "buf". -Files: src/fileio.c - -Patch 7.2a.018 -Problem: Compiler warnings when compiling with Gnome. (Tony Mechelynck) -Solution: Add type casts. -Files: src/gui_gtk_x11.c - -Patch 7.2a.019 -Problem: ":let &g:tw = 44" sets the local option value. (Cyril Slobin) -Solution: Use get_varp_scope() instead of get_varp(). (Ian Kelling) -Files: src/option.c - -There is no way to avoid adding /usr/local/{include|lib} to the build -commands. Add the --with-local-dir argument to configure. (Michael -Haubenwallner) - -When using CTRL-D after ":help", the number of matches could be thousands. -Restrict to TAG_MANY to avoid this taking too long. (Ian Kelling) - -The popup menu could be placed at a weird location. Caused by w_wcol computed -by curs_columns(). (Dominique Pelle) - -Overlapping STRCPY() arguments when using %r item in 'errorformat'. Use -STRMOVE() instead. (Ralf Wildenhues) - -Mac: On Leopard gvim, when using the mouse wheel nothing would happen until -another event occurs, such as moving the mouse. Then the recorded scrolling -would take place all at once. (Eckehard Berns) - -Solution for cursor color not reflecting IM status for GTK 2. Add -preedit_is_active flag. (SungHyun Nam) - -filereadable() can hang on a FIFO on Linux. Use open() instead of fopen(), -with O_NONBLOCK. (suggested by Lars Kotthoff) - -Included patch to support Perl 5.10. (Yasuhiro Matsumoto) - -When files are dropped on gvim while the screen is being updated, ignore the -drop command to avoid freeing memory that is being used. - -In a terminal, when drawing the popup menu over double-wide characters, half -characters may not be cleared properly. (Yukihiro Nakadaira) - -The #ifdef for including "vimio.h" was inconsistent. In a few files it -depended on MSWIN, which isn't defined until later. - -Patch 7.2b.001 -Problem: Compilation problem: mb_fix_col() missing with multi-byte feature - but without GUI or clipboard. -Solution: Remove #ifdef. -Files: src/mbyte.c - -Patch 7.2b.002 -Problem: Compiler warnings for signed/unsigned mismatch. -Solution: Add type casts. -Files: src/screen.c - -Patch 7.2b.003 -Problem: Still a compilation problem, check_col() and check_row() missing. -Solution: Add FEAT_MBYTE to the #if. -Files: src/ui.c - -Patch 7.2b.004 -Problem: Trying to free memory for a static string when using ":helpgrep". - (George Reilly) -Solution: Set 'cpo' to empty_option instead of an empty string. Also for - searchpair() and substitute(). -Files: src/quickfix.c, src/eval.c - -Patch 7.2b.005 -Problem: The special character "!" isn't handled properly in shellescape(). - (Jan Minar) -Solution: Escape "!" when using a "csh" like shell and with - shellescape(s, 1). Twice for both. Also escape <NL>. -Files: src/misc2.c - -Patch 7.2b.006 -Problem: Reading past end of string when reading info from tags line. -Solution: Break the loop when encountering a NUL. (Dominique Pelle) -Files: src/tag.c - -Patch 7.2b.007 -Problem: Part of a message cannot be translated. -Solution: Put _() around the message. -Files: src/search.c - -Patch 7.2b.008 -Problem: A few filetypes are not detected or not detected properly. -Solution: Add filetype detection patterns. (Nikolai Weibull) -Files: runtime/filetype.vim - -Patch 7.2b.009 -Problem: Reading past end of screen line. (Epicurus) -Solution: Avoid going past the value of Columns. -Files: src/screen.c - -Patch 7.2b.010 -Problem: ":mksession" doesn't work for ":map , foo", ":sunmap ,". (Ethan - Mallove) -Solution: Check for "nxo", "nso" and other strange mapping combinations. -Files: src/getchar.c - -Patch 7.2b.011 -Problem: Configure for TCL ends up with include file in compiler command. - (Richard Hogg) -Solution: Delete items from $TCL_DEFS that do not start with a dash. -Files: src/auto/configure, src/configure.in - -Patch 7.2b.012 -Problem: Build failure with +multi_byte but without +diff. -Solution: Add #ifdef. (Patrick Texier) -Files: src/main.c - -Patch 7.2b.013 -Problem: Build fails with tiny features and Perl. (Dominique Pelle) -Solution: Define missing functions. Also when compiling Python. -Files: src/if_perl.xs, src/if_python.c - -Patch 7.2b.014 -Problem: Configure uses an unsafe temp file to store commands. -Solution: Create the temp file in local directory. -Files: src/auto/configure, src/configure.in - -Patch 7.2b.015 -Problem: Build fails on Mac when using Aap. -Solution: Fix typo in configure script. -Files: src/auto/configure, src/configure.in - -Patch 7.2b.016 -Problem: Build fails with normal features but without +autocmd. -Solution: Fix #ifdefs. (Ian Kelling) -Files: src/eval.c, src/ex_cmds.c, src/quickfix.c, src/option.c, - src/ex_docmd.c - -Patch 7.2b.017 -Problem: "vim -O foo foo" results in only one window. (Zdenek Sekera) -Solution: Handle result of ATTENTION prompt properly. (Ian Kelling) -Files: src/main.c - -Patch 7.2b.018 -Problem: When doing command line completion on a file name for a csh-like - shell argument a '!' character isn't escaped properly. -Solution: Add another backslash. -Files: src/ex_getln.c, src/misc2.c, src/proto/misc2.pro, src/screen.c - -Patch 7.2b.019 (extra) -Problem: Win32: Various compiler warnings. -Solution: Use __w64 attribute. Comment-out unused parameters. Adjust a few - #ifdefs. (George Reilly) -Files: src/gui_w48.c, src/GvimExt/gvimext.cpp, src/Make_mvc.mak, - src/os_mswin.c, src/os_win32.c, src/vim.h - -Patch 7.2b.020 -Problem: ":sort n" doesn't handle negative numbers. (James Vega) -Solution: Include '-' in the number. -Files: src/charset.c, src/ex_cmds.c - -Patch 7.2b.021 -Problem: Reloading doesn't read the BOM correctly. (Steve Gardner) -Solution: Accept utf-8 BOM when specified file encoding is utf-8. -Files: src/fileio.c - -Patch 7.2b.022 -Problem: When using ":normal" while updating the status line the count of - an operator is lost. (Dominique Pelle) -Solution: Save and restore "opcount". -Files: src/ex_docmd.c, src/globals.h, src/normal.c - -Patch 7.2b.023 -Problem: Crash when using the result of synstack(0,0). (Matt Wozniski) -Solution: Check for v_list to be NULL in a few more places. -Files: src/eval.c - -Patch 7.2b.024 -Problem: Using ":gui" while the netrw plugin is active causes a delay in - updating the display. -Solution: Don't check for terminal codes when starting the GUI. -Files: src/term.c - -Patch 7.2b.025 -Problem: When the CursorHold event triggers a pending count is lost. - (Juergen Kraemer) -Solution: Save the counts and restore them. -Files: src/normal.c, src/structs.h - -Patch 7.2b.026 -Problem: The GTK 2 file chooser causes the ~/.recently-used.xbel file to be - written over and over again. This may cause a significant - slowdown. (Guido Berhoerster) -Solution: Don't use the GTK 2 file chooser. -Files: src/gui_gtk.c - -Patch 7.2b.027 -Problem: Memory leak for Python, Perl, etc. script command with end marker. -Solution: Free the memory of the end marker. (Andy Kittner) -Files: src/ex_getln.c - -Patch 7.2b.028 -Problem: Reading uninitialized memory when doing ":gui -f". (Dominique - Pelle) -Solution: Don't position the cursor when the screen size is invalid. -Files: src/gui.c - -Patch 7.2b.029 -Problem: ":help a" doesn't jump to "a" tag in docs. (Tony Mechelynck) -Solution: Get all tags and throw away more than TAG_MANY after sorting. - When there is no argument find matches for "help" to avoid a long - delay. -Files: src/ex_cmds.c, src/ex_getln.c - -Patch 7.2b.030 -Problem: When changing the value of t_Co from 8 to 16 the Visual - highlighting keeps both reverse and a background color. -Solution: Remove the attribute when setting the default highlight color. - (Markus Heidelberg) -Files: src/syntax.c - -Error when cancelling completion menu and auto-formatting. (fixed by Ian -Kelling) - -Patch 7.2c.001 -Problem: ":let x=[''] | let x += x" causes hang. (Matt Wozniski) -Solution: Only insert elements up to the original length of the List. -Files: runtime/doc/eval.txt, src/eval.c - -Patch 7.2c.002 -Problem: fnameescape() doesn't handle a leading '+' or '>'. (Jan Minar) -Solution: Escape a leading '+' and '>'. And a single '-'. -Files: runtime/doc/eval.txt, src/ex_getln.c - -Patch 7.2c.003 -Problem: Searching for "foo\%[bar]\+" gives a "Corrupted regexp program" - error. (Joachim Hofmann) -Solution: Mark the \%[] item as not being simple. -Files: src/regexp.c - -On Vista access to system directories is virtualized. (Michael Mutschler) -Adjusted the manifest file to avoid this. (George Reilly) - -Memory leak when using CTRL-C to cancel listing the jump list. (Dominique -Pelle) - -Mac: Could not build with Perl interface. - -============================================================================== -VERSION 7.3 *version-7.3* *version7.3* - -This section is about improvements made between version 7.2 and 7.3. - -This release has hundreds of bug fixes and there are a few new features. The -most notable new features are: - - -Persistent undo *new-persistent-undo* ---------------- - -Store undo information in a file. Can undo to before when the file was read, -also for unloaded buffers. See |undo-persistence| (partly by Jordan Lewis) - -Added the ":earlier 1f" and ":later 1f" commands. -Added file save counter to undo information. -Added the |undotree()| and |undofile()| functions. - -Also added the 'undoreload' option. This makes it possible to save the -current text when reloading the buffer, so that the reload can be undone. - - -More encryption *new-more-encryption* ---------------- - -Support for Blowfish encryption. Added the 'cryptmethod' option. -Mostly by Moshin Ahmed. - -Also encrypt the text in the swap file and the undo file. - - -Conceal text *new-conceal* ------------- - -Added the |+conceal| feature. (Vince Negri) -This allows hiding stretches of text, based on syntax highlighting. -It also allows replacing a stretch of text by a character |:syn-cchar|. -The 'conceallevel' option specifies what happens with text matching a syntax -item that has the conceal attribute. -The 'concealcursor' option specifies what happens in the cursor line. - -The help files conceal characters used to mark tags and examples. - -Added the |synconcealed()| function and use it for :TOhtml. (Benjamin Fritz) - -Added the 'cursorbind' option, keeps the cursor in two windows with the same -text in sync. - - -Lua interface *new-lua* -------------- - -Added the |Lua| interface. (Luis Carvalho) - - -Python3 interface *new-python3* ------------------ - -Added the Python3 interface. It exists next to Python 2.x, both can be used -at the same time. See |python3| (Roland Puntaier) - - -Changed *changed-7.3* -------- - -The MS-Windows installer no longer requires the user to type anything in the -console windows. The installer now also works on 64 bit systems, including -the "Edit with Vim" context menu. -The gvim executable is 32 bits, the installed gvimext.dll is either a 32 or 64 -bit version. (mostly by George Reilly) -Made the DOS installer work with more compilers. -The MS-Windows big gvim is now built with Python 2.7 and 3.1.2, Perl 5.12 and -Ruby 1.9.1. You need the matching .dll files to use them. - -The extra and language files are no longer distributed separately. -The source files for all systems are included in one distribution. - -After using ":recover" or recovering a file in another way, ":x" and "ZZ" -didn't save what you see. This could result in work being lost. Now the text -after recovery is compared to the original file contents. When they differ -the buffer is marked as modified. - -When Vim is exiting because of a deadly signal, when v:dying is 2 or more, -VimLeavePre, VimLeave, BufWinLeave and BufUnload autocommands are not -executed. - -Removed support for GTK 1. It was no longer maintained and required a lot of -#ifdefs in the source code. GTK 2 should be available for every system. -(James Vega) - -It is no longer allowed to set the 'encoding' option from a modeline. It -would corrupt the text. (Patrick Texier) - -Renamed runtime/spell/fixdup to runtime/spell/fixdup.vim. - -Removed obsolete Mac code. - -Updated spell files for Ubuntu locale names. - -Switched from autoconf 2.63 to 2.65. - -Removed Mupad indent and ftplugin files, they are not useful. - -The maximum number of messages remembered in the history is now 200 (was 100). - - -Added *added-7.3* ------ - -Added the 'relativenumber' option. (Markus Heidelberg) - -Added the 'colorcolumn' option: highlight one or more columns in a window. -E.g. to highlight the column after 'textwidth'. (partly by Gregor Uhlenheuer) - -Added support for NetBeans in a terminal. Added |:nbstart| and |:nbclose|. -(Xavier de Gaye) - -More floating point functions: |acos()|, |asin()|, |atan2()|, |cosh()|, -|exp()|, |fmod()|, |log()|, |sinh()|, |tan()|, |tanh()|. (Bill McCarthy) - -Added the |gettabvar()| and |settabvar()| functions. (Yegappan Lakshmanan) - -Added the |strchars()|, |strwidth()| and |strdisplaywidth()| functions. - -Support GDK_SUPER_MASK for GTK on Mac. (Stephan Schulz) - -Made CTRL and ALT modifier work for mouse wheel. (Benjamin Haskell) - -Added support for horizontal scroll wheel. (Bjorn Winckler) - -When the buffer is in diff mode, have :TOhtml create HTML to show the diff -side-by-side. (Christian Brabandt) - -Various improvements to ":TOhtml" and the 2html.vim script. (Benjamin Fritz) - -Add the 'L' item to 'cinoptions'. (Manuel Konig) - -Improve Javascript indenting. Add "J" flag to 'cinoptions'. (Hari Kumar G) - -Mac: Support disabling antialias. (LC Mi) - -Mac: Add clipboard support in the Mac console. (Bjorn Winckler) - -Make it possible to drag a tab page label to another position. (Paul B. Mahol) - -Better implementation of creating the Color Scheme menu. (Juergen Kraemer) - -In Visual mode with 'showcmd' display the number of bytes and characters. - -Allow synIDattr() getting GUI attributes when built without GUI. (Matt -Wozniski) - -Support completion for ":find". Added test 73. (Nazri Ramliy) - -Command line completion for :ownsyntax and :setfiletype. (Dominique Pelle) - -Command line completion for :lmap and :lunmap. - -Support syntax and filetype completion for user commands. (Christian Brabandt) - -Add completion for ":ownsyntax" and improve completion for ":filetype". - -Avoid use of the GTK main_loop() so that the GtkFileChooser can be used. -(James Vega) - -When 'formatexpr' evaluates to non-zero fall back to internal formatting, also -for "gq". (James Vega) - -Support :browse for commands that use an error file argument. (Lech Lorens) - -Support wide file names in gvimext. (Szabolcs Horvat) - -Improve test for joining lines. (Milan Vancura) -Make joining a range of lines much faster. (Milan Vancura) - -Add patch to improve support of z/OS (OS/390). (Ralf Schandl) - -Added the helphelp.txt file. Moved text from various.txt to it. - -Added "q" item for 'statusline'. Added |w:quickfix_title|. (Lech Lorens) - -Various improvements for VMS. (Zoltan Arpadffy) - - -New syntax files: ~ -Haskell Cabal build file (Vincent Berthoux) -ChaiScript (Jason Turner) -Cucumber (Tim Pope) -Datascript (Dominique Pelle) -Fantom (Kamil Toman) -Liquid (Tim Pope) -Markdown (Tim Pope) -wavefront's obj file (Vincent Berthoux) -Perl 6 (Andy Lester) -SDC - Synopsys Design Constraints (Maurizio Tranchero) -SVG - Scalable Vector Graphics (Vincent Berthoux) -task data (John Florian) -task 42 edit (John Florian) - -New filetype plugins: ~ -Cucumber (Tim Pope) -Liquid (Tim Pope) -Logcheck (Debian) -Markdown (Tim Pope) -Perl 6 (Andy Lester) -Quickfix window (Lech Lorens) -Tcl (Robert L Hicks) - -New indent plugins: ~ -CUDA (Bram Moolenaar) -ChaiScript (Jason Turner) -Cucumber (Tim Pope) -LifeLines (Patrick Texier) -Liquid (Tim Pope) -Mail (Bram Moolenaar) -Perl 6 (Andy Lester) - -Other new runtime files: ~ -Breton spell file (Dominique Pelle) -Dvorak keymap (Ashish Shukla) -Korean translations. (SungHyun Nam) -Python 3 completion (Aaron Griffin) -Serbian menu translations (Aleksandar Jelenak) -Tetum spell files -Tutor Bairish (Sepp Hell) -Tutor in Esperanto. (Dominique Pellé) -Tutor in Portuguese. -Norwegian Tutor now also available as tutor.nb - -Removed the Mupad runtime files, they were not maintained. - - -Fixed *fixed-7.3* ------ - -Patch 7.2.001 -Problem: Mac: pseudo-ttys don't work properly on Leopard, resulting in the - shell not to have a prompt, CTRL-C not working, etc. -Solution: Don't use SVR4 compatible ptys, even though they are detected. - (Ben Schmidt) -Files: src/pty.c - -Patch 7.2.002 -Problem: Leaking memory when displaying menus. -Solution: Free allocated memory. (Dominique Pelle) -Files: src/menu.c - -Patch 7.2.003 -Problem: Typo in translated message. Message not translated. -Solution: Correct spelling. Add _(). (Dominique Pelle) -Files: src/spell.c, src/version.c - -Patch 7.2.004 -Problem: Cscope help message is not translated. -Solution: Put it in _(). (Dominique Pelle) -Files: src/if_cscope.c, src/if_cscope.h - -Patch 7.2.005 -Problem: A few problems when profiling. Using flag pointer instead of flag - value. Allocating zero bytes. Not freeing used memory. -Solution: Remove wrong '&' characters. Skip dumping when there is nothing - to dump. Free used memory. (Dominique Pelle) -Files: src/eval.c - -Patch 7.2.006 -Problem: HTML files are not recognized by contents. -Solution: Add a rule to the scripts file. (Nico Weber) -Files: runtime/scripts.vim - -Patch 7.2.007 (extra) -Problem: Minor issues for VMS. -Solution: Minor fixes for VMS. Add float support. (Zoltan Arpadffy) -Files: runtime/doc/os_vms.txt, src/os_vms_conf.h, src/Make_vms.mms, - src/testdir/Make_vms.mms, src/testdir/test30.in, - src/testdir/test54.in - -Patch 7.2.008 -Problem: With a BufHidden autocommand that invokes ":bunload" the window - count for a buffer can be wrong. (Bob Hiestand) -Solution: Don't call enter_buffer() when already in that buffer. -Files: src/buffer.c - -Patch 7.2.009 -Problem: Can't compile with Perl 5.10 on MS-Windows. (Cesar Romani) -Solution: Add the Perl_sv_free2 function for dynamic loading. (Dan Sharp) -Files: src/if_perl.xs - -Patch 7.2.010 -Problem: When using "K" in Visual mode not all characters are properly - escaped. (Ben Schmidt) -Solution: Use a function with the functionality of shellescape(). (Jan - Minar) -Files: src/mbyte.c, src/misc2.c, src/normal.c - -Patch 7.2.011 -Problem: Get an error when inserting a float value from the expression - register. -Solution: Convert the Float to a String automatically in the same place - where a List would be converted to a String. -Files: src/eval.c - -Patch 7.2.012 -Problem: Compiler warnings when building with startup timing. -Solution: Add type casts. -Files: src/ex_cmds2.c - -Patch 7.2.013 -Problem: While waiting for the X selection Vim consumes a lot of CPU time - and hangs until a response is received. -Solution: Sleep a bit when the selection event hasn't been received yet. - Time out after a couple of seconds to avoid a hang when the - selection owner isn't responding. -Files: src/ui.c - -Patch 7.2.014 -Problem: synstack() doesn't work in an empty line. -Solution: Accept column zero as a valid position. -Files: src/eval.c - -Patch 7.2.015 -Problem: "make all test install" doesn't stop when the test fails. (Daniel - Shahaf) -Solution: When test.log contains failures exit with non-zero status. -Files: src/testdir/Makefile - -Patch 7.2.016 -Problem: The pattern being completed may be in freed memory when the - command line is being reallocated. (Dominique Pelle) -Solution: Keep a pointer to the expand_T in the command line structure. - Don't use <S-Tab> as CTRL-P when there are no results. Clear the - completion when using a command line from the history. -Files: src/ex_getln.c - -Patch 7.2.017 -Problem: strlen() used on text that may not end in a NUL. (Dominique Pelle) - Pasting a very big selection doesn't work. -Solution: Use the length passed to the XtSelectionCallbackProc() function. - After getting the SelectionNotify event continue dispatching - events until the callback is actually called. Also dispatch the - PropertyNotify event. -Files: src/ui.c - -Patch 7.2.018 -Problem: Memory leak when substitute is aborted. -Solution: Free the buffer allocated for the new text. (Dominique Pelle) -Files: src/ex_cmds.c - -Patch 7.2.019 -Problem: Completion of ":noautocmd" doesn't work and exists(":noautocmd") - returns zero. (Ben Fritz) -Solution: Add "noautocmd" to the list of modifiers and commands. -Files: src/ex_cmds.h, src/ex_docmd.c - -Patch 7.2.020 -Problem: Starting the GUI when the executable starts with 'k', but the KDE - version no longer exists. -Solution: Don't have "kvim" start the GUI. -Files: src/main.c - -Patch 7.2.021 -Problem: When executing autocommands getting the full file name may be - slow. (David Kotchan) -Solution: Postpone calling FullName_save() until autocmd_fname is used. -Files: src/ex_docmd.c, src/fileio.c, src/globals.h - -Patch 7.2.022 (extra) -Problem: Testing is not possible when compiling with MingW. -Solution: Add a MingW specific test Makefile. (Bill McCarthy) -Files: Filelist, src/testdir/Make_ming.mak - -Patch 7.2.023 -Problem: 'cursorcolumn' is in the wrong place in a closed fold when the - display is shifted left. (Gary Johnson) -Solution: Subtract w_skipcol or w_leftcol when needed. -Files: src/screen.c - -Patch 7.2.024 -Problem: It's possible to set 'history' to a negative value and that causes - an out-of-memory error. -Solution: Check that 'history' has a positive value. (Doug Kearns) -Files: src/option.c - -Patch 7.2.025 -Problem: When a CursorHold event invokes system() it is retriggered over - and over again. -Solution: Don't reset did_cursorhold when getting K_IGNORE. -Files: src/normal.c - -Patch 7.2.026 (after 7.2.010) -Problem: "K" doesn't use the length of the identifier but uses the rest of - the line. -Solution: Copy the desired number of characters first. -Files: src/normal.c - -Patch 7.2.027 -Problem: Can use cscope commands in the sandbox. -Solution: Disallow them, they might not be safe. -Files: src/ex_cmds.h - -Patch 7.2.028 -Problem: Confusing error message for missing (). -Solution: Change "braces" to "parentheses". (Gary Johnson) -Files: src/eval.c - -Patch 7.2.029 -Problem: No completion for ":doautoall". -Solution: Complete ":doautoall" like ":doautocmd". (Doug Kearns) -Files: src/ex_docmd.c - -Patch 7.2.030 (after 7.2.027) -Problem: Can't compile. -Solution: Remove prematurely added ex_oldfiles. -Files: src/ex_cmds.h - -Patch 7.2.031 -Problem: Information in the viminfo file about previously edited files is - not available to the user. There is no way to get a complete list - of files edited in previous Vim sessions. -Solution: Add v:oldfiles and fill it with the list of old file names when - first reading the viminfo file. Add the ":oldfiles" command, - ":browse oldfiles" and the "#<123" special file name. Increase - the default value for 'viminfo' from '20 to '100. -Files: runtime/doc/cmdline.txt, runtime/doc/eval.txt, - runtime/doc/starting.txt, runtime/doc/usr_21.txt, src/eval.c, - src/ex_cmds.c, src/ex_cmds.h, src/ex_docmd.c, src/feature.h, - src/fileio.c, src/main.c, src/mark.c, src/misc1.c, - src/proto/eval.pro, src/proto/ex_cmds.pro, src/proto/mark.pro, - src/option.c, src/structs.h, src/vim.h - -Patch 7.2.032 (after 7.2.031) -Problem: Can't build with EXITFREE defined. (Dominique Pelle) -Solution: Change vv_string to vv_str. -Files: src/eval.c - -Patch 7.2.033 -Problem: When detecting a little endian BOM "ucs-2le" is used, but the text - might be "utf-16le". -Solution: Default to "utf-16le", it also works for "ucs-2le". (Jia Yanwei) -Files: src/fileio.c, src/testdir/test42.ok - -Patch 7.2.034 -Problem: Memory leak in spell info when deleting buffer. -Solution: Free the memory. (Dominique Pelle) -Files: src/buffer.c - -Patch 7.2.035 -Problem: Mismatches between alloc/malloc, free/vim_free, - realloc/vim_realloc. -Solution: Use the right function. (Dominique Pelle) -Files: src/gui_x11.c, src/mbyte.c, src/misc2.c, src/os_unix.c - -Patch 7.2.036 (extra) -Problem: Mismatches between alloc/malloc, free/vim_free, - realloc/vim_realloc. -Solution: Use the right function. (Dominique Pelle) -Files: src/gui_riscos.c, src/gui_w48.c, src/mbyte.c, src/os_vms.c, - src/os_w32exe.c, src/os_win16.c - -Patch 7.2.037 -Problem: Double free with GTK 1 and compiled with EXITFREE. -Solution: Don't close display. (Dominique Pelle) -Files: src/os_unix.c - -Patch 7.2.038 -Problem: Overlapping arguments to memcpy(). -Solution: Use mch_memmove(). (Dominique Pelle) -Files: src/if_xcmdsrv.c - -Patch 7.2.039 -Problem: Accessing freed memory on exit when EXITFREE is defined. -Solution: Call hash_init() on the v: hash table. -Files: src/eval.c - -Patch 7.2.040 -Problem: When using ":e ++ff=dos fname" and the file contains a NL without - a CR before it and 'ffs' contains "unix" then the fileformat - becomes unix. -Solution: Ignore 'ffs' when using the ++ff argument. (Ben Schmidt) - Also remove unreachable code. -Files: src/fileio.c - -Patch 7.2.041 -Problem: In diff mode, when using two tabs, each with two diffed buffers, - editing a buffer of the other tab messes up the diff. (Matt - Mzyzik) -Solution: Only copy options from a window where the buffer was edited that - doesn't have 'diff' set or is for the current tab page. - Also fix that window options for a buffer are stored with the - wrong window. -Files: src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, - src/ex_getln.c, src/if_sniff.c, src/main.c, src/netbeans.c, - src/normal.c, src/popupmnu.c, src/proto/buffer.pro, - src/proto/ex_cmds.pro src/quickfix.c, src/window.c - -Patch 7.2.042 -Problem: When using winrestview() in a BufWinEnter autocommand the window - is scrolled anyway. (Matt Zyzik) -Solution: Don't recompute topline when above 'scrolloff' from the bottom. - Don't always put the cursor halfway when entering a buffer. Add - "w_topline_was_set". -Files: src/buffer.c, src/move.c, src/structs.h - -Patch 7.2.043 -Problem: VMS: Too many characters are escaped in filename and shell - commands. -Solution: Escape fewer characters. (Zoltan Arpadffy) -Files: src/vim.h - -Patch 7.2.044 -Problem: Crash because of STRCPY() being over protective of the destination - size. (Dominique Pelle) -Solution: Add -D_FORTIFY_SOURCE=1 to CFLAGS. Use an intermediate variable - for the pointer to avoid a warning. -Files: src/auto/configure, src/configure.in, src/eval.c - -Patch 7.2.045 -Problem: The Python interface has an empty entry in sys.path. -Solution: Filter out the empty entry. (idea from James Vega) -Files: src/if_python.c - -Patch 7.2.046 -Problem: Wrong check for filling buffer with encoding. (Danek Duvall) -Solution: Remove pointers. (Dominique Pelle) -Files: src/mbyte.c - -Patch 7.2.047 -Problem: Starting Vim with the -nb argument while it's not supported causes - the other side to hang. -Solution: When -nb is used while it's not supported exit Vim. (Xavier de - Gaye) -Files: src/main.c, src/vim.h - -Patch 7.2.048 -Problem: v:prevcount is changed too often. Counts are not multiplied when - setting v:count. -Solution: Set v:prevcount properly. Multiply counts. (idea by Ben Schmidt) -Files: src/eval.c, src/normal.c, src/proto/eval.pro - -Patch 7.2.049 (extra) -Problem: Win32: the clipboard doesn't support UTF-16. -Solution: Change UCS-2 support to UTF-16 support. (Jia Yanwei) -Files: src/gui_w32.c, src/gui_w48.c, src/mbyte.c, src/misc1.c, - src/os_mswin.c, src/os_win32.c, src/proto/os_mswin.pro - -Patch 7.2.050 -Problem: Warnings for not checking return value of fwrite(). (Chip Campbell) -Solution: Use the return value. -Files: src/spell.c - -Patch 7.2.051 -Problem: Can't avoid 'wildignore' and 'suffixes' for glob() and globpath(). -Solution: Add an extra argument to these functions. (Ingo Karkat) -Files: src/eval.c, src/ex_getln.c, src/proto/ex_getln.pro, - runtime/doc/eval.txt, runtime/doc/options.txt - -Patch 7.2.052 -Problem: synIDattr() doesn't support "sp" for special color. -Solution: Recognize "sp" and "sp#". (Matt Wozniski) -Files: runtime/doc/eval.txt, src/eval.c - -Patch 7.2.053 -Problem: Crash when using WorkShop command ":ws foo". (Dominique Pelle) -Solution: Avoid using a NULL pointer. -Files: src/workshop.c - -Patch 7.2.054 -Problem: Compilation warnings for format in getchar.c. -Solution: Use fputs() instead of fprintf(). (Dominique Pelle) -Files: src/getchar.c - -Patch 7.2.055 -Problem: Various compiler warnings with strict checking. -Solution: Avoid the warnings by using return values and renaming. -Files: src/diff.c, src/eval.c, src/ex_cmds.c, src/ex_docmd.c, - src/fileio.c, src/fold.c, src/globals.h, src/gui.c, - src/gui_at_sb.c, src/gui_gtk_x11.c, src/gui_xmdlg.c, - src/gui_xmebw.c, src/main.c, src/mbyte.c, src/message.c, - src/netbeans.c, src/option.c, src/os_unix.c, src/spell.c, - src/ui.c, src/window.c - -Patch 7.2.056 (after 7.2.050) -Problem: Tests 58 and 59 fail. -Solution: Don't invoke fwrite() with a zero length. (Dominique Pelle) -Files: src/spell.c - -Patch 7.2.057 (after 7.2.056) -Problem: Combination of int and size_t may not work. -Solution: Use size_t for variable. -Files: src/spell.c - -Patch 7.2.058 -Problem: Can't add a patch name to the ":version" output. -Solution: Add the extra_patches array. -Files: src/version.c - -Patch 7.2.059 -Problem: Diff display is not always updated. -Solution: Update the display more often. -Files: src/diff.c - -Patch 7.2.060 -Problem: When a spell files has many compound rules it may take a very long - time making the list of suggestions. Displaying also can be slow - when there are misspelled words. - Can't parse some Hunspell .aff files. -Solution: Check if a compounding can possibly work before trying a - combination, if the compound rules don't contain wildcards. - Implement using CHECKCOMPOUNDPATTERN. - Ignore COMPOUNDRULES. Ignore a comment after most items. - Accept ONLYINCOMPOUND as an alias for NEEDCOMPOUND. - Accept FORBIDDENWORD as an alias for BAD. -Files: runtime/doc/spell.txt, src/spell.c - -Patch 7.2.061 -Problem: Can't create a funcref for an autoload function without loading - the script first. (Marc Weber) -Solution: Accept autoload functions that don't exist yet in function(). -Files: src/eval.c - -Patch 7.2.062 -Problem: "[Scratch]" is not translated. -Solution: Mark the string for translation. (Dominique Pelle) -Files: src/buffer.c - -Patch 7.2.063 -Problem: Warning for NULL argument of Perl_sys_init3(). -Solution: Use Perl_sys_init() instead. (partly by Dominique Pelle) -Files: src/if_perl.xs - -Patch 7.2.064 -Problem: Screen update bug when repeating "~" on a Visual block and the - last line doesn't change. -Solution: Keep track of changes for all lines. (Moritz Orbach) -Files: src/ops.c - -Patch 7.2.065 -Problem: GTK GUI: the cursor disappears when doing ":vsp" and the Vim - window is maximized. (Dominique Pelle, Denis Smolyar) -Solution: Don't change "Columns" back to an old value at a wrong moment. - Do change "Rows" when it should not be a problem. -Files: src/gui.c - -Patch 7.2.066 -Problem: It's not easy to see whether 'encoding' is a multi-byte encoding. -Solution: Add has('multi_byte_encoding'). -Files: runtime/doc/eval.txt, src/eval.c - -Patch 7.2.067 -Problem: Session file can't load extra file when the path contains special - characters. -Solution: Escape the file name. (Lech Lorens) -Files: src/ex_docmd.c - -Patch 7.2.068 -Problem: Emacs tags file lines can be too long, resulting in an error - message. (James Vega) -Solution: Ignore lines with errors if they are too long. -Files: src/tag.c - -Patch 7.2.069 (after 7.2.060) -Problem: Compiler warning for storing size_t in int. -Solution: Add type cast. -Files: src/spell.c - -Patch 7.2.070 -Problem: Crash when a function returns a:000. (Matt Wozniski) -Solution: Don't put the function struct on the stack, allocate it. Free it - only when nothing in it is used. -Files: src/eval.c - -Patch 7.2.071 (extra) -Problem: Win32: Handling netbeans events while Vim is busy updating the - screen may cause a crash. -Solution: Like with GTK, only handle netbeans messages in the main loop. - (Xavier de Gaye) -Files: src/gui_w48.c, src/netbeans.c - -Patch 7.2.072 (extra) -Problem: Compiler warning in Sniff code. -Solution: Use return value of pipe(). (Dominique Pelle) -Files: src/if_sniff.c - -Patch 7.2.073 -Problem: ":set <xHome>" has the same output as ":set <Home>". (Matt - Wozniski) -Solution: Don't translate "x" keys to its alternative for ":set". -Files: src/gui_mac.c, src/misc2.c, src/option.c, src/proto/misc2.pro - -Patch 7.2.074 (extra, after 7.2.073) -Problem: ":set <xHome>" has the same output as ":set <Home>". (Matt - Wozniski) -Solution: Don't translate "x" keys to its alternative for ":set". -Files: src/gui_mac.c - -Patch 7.2.075 (after 7.2.058) -Problem: Explanation about making a diff for extra_patches is unclear. -Solution: Adjust comment. -Files: src/version.c - -Patch 7.2.076 -Problem: rename(from, to) deletes the file if "from" and "to" are not equal - but still refer to the same file. E.g., on a FAT32 filesystem - under Unix. -Solution: Go through another file name. -Files: src/fileio.c - -Patch 7.2.077 (after 7.2.076) -Problem: rename(from, to) doesn't work if "from" and "to" differ only in - case on a system that ignores case in file names. -Solution: Go through another file name. -Files: src/fileio.c - -Patch 7.2.078 -Problem: When deleting a fold that is specified with markers the cursor - position may be wrong. Folds may not be displayed properly after - a delete. Wrong fold may be deleted. -Solution: Fix the problems. (mostly by Lech Lorens) -Files: src/fold.c - -Patch 7.2.079 -Problem: "killed" netbeans events are not handled correctly. -Solution: A "killed" netbeans event is sent when the buffer is deleted or - wiped out (in this case, the netbeans annotations in this buffer - have been removed). A user can still remove a sign with the - command ":sign unplace" and this does not trigger a "killed" - event. (Xavier de Gaye) -Files: runtime/doc/netbeans.txt, src/buffer.c, src/globals.h, - src/netbeans.c, src/proto/netbeans.pro - -Patch 7.2.080 -Problem: When typing a composing character just after starting completion - may access memory before its allocation point. (Dominique Pelle) -Solution: Don't delete before the completion start column. Add extra checks - for the offset not being negative. -Files: src/edit.c - -Patch 7.2.081 -Problem: Compiler warning for floating point overflow on VAX. -Solution: For VAX use a smaller number. (Zoltan Arpadffy) -Files: src/message.c - -Patch 7.2.082 -Problem: When 'ff' is "mac" then "ga" on a ^J shows 0x0d instead of 0x0a. - (Andy Wokula) -Solution: Use NL for this situation. (Lech Lorens) -Files: src/ex_cmds.c - -Patch 7.2.083 -Problem: ":tag" does not return to the right tag entry from the tag stack. -Solution: Don't change the current match when there is no argument. - (Erik Falor) -Files: src/tag.c - -Patch 7.2.084 -Problem: Recursive structures are not handled properly in Python - vim.eval(). -Solution: Keep track of references in a better way. (Yukihiro Nakadaira) -Files: src/if_python.c - -Patch 7.2.085 -Problem: ":set <M-b>=<Esc>b" does not work when 'encoding' is utf-8. -Solution: Put the <M-b> character in the input buffer as valid utf-8. - (partly by Matt Wozniski) -Files: src/term.c - -Patch 7.2.086 -Problem: Using ":diffget 1" in buffer 1 corrupts the text. -Solution: Don't do anything when source and destination of ":diffget" or - ":diffput" is the same buffer. (Dominique Pelle) -Files: src/diff.c - -Patch 7.2.087 -Problem: Adding URL to 'path' doesn't work to edit a file. -Solution: Skip simplify_filename() for URLs. (Matt Wozniski) -Files: src/misc2.c - -Patch 7.2.088 (extra) -Problem: OpenClipboard() may fail when another application is using the - clipboard. -Solution: Retry OpenClipboard() a few times. (Jianrong Yu) -Files: src/os_mswin.c - -Patch 7.2.089 (extra) -Problem: Win32: crash when using Ultramon buttons. -Solution: Don't use a WM_OLE message of zero size. (Ray Megal) -Files: src/if_ole.cpp, src/gui_w48.c - -Patch 7.2.090 -Problem: User command containing 0x80 in multi-byte character does not work - properly. (Yasuhiro Matsumoto) -Solution: Undo replacement of K_SPECIAL and CSI characters when executing - the command. -Files: src/ex_docmd.c - -Patch 7.2.091 -Problem: ":cs help" output is not aligned for some languages. -Solution: Compute character size instead of byte size. (Dominique Pelle) -Files: src/if_cscope.c - -Patch 7.2.092 -Problem: Some error messages are not translated. -Solution: Add _() around the messages. (Dominique Pelle) -Files: src/eval.c - -Patch 7.2.093 (extra) -Problem: Win32: inputdialog() and find/replace dialogs can't handle - multi-byte text. -Solution: Use the wide version of dialog functions when available. (Yanwei - Jia) -Files: src/gui_w32.c, src/gui_w48.c - -Patch 7.2.094 -Problem: Compiler warning for signed/unsigned compare. -Solution: Add type cast. Also fix a few typos. -Files: src/edit.c - -Patch 7.2.095 -Problem: With Visual selection, "r" and then CTRL-C Visual mode is stopped - but the highlighting is not removed. -Solution: Call reset_VIsual(). -Files: src/normal.c - -Patch 7.2.096 -Problem: After ":number" the "Press Enter" message may be on the wrong - screen, if switching screens for shell commands. -Solution: Reset info_message. (James Vega) -Files: src/ex_cmds.c - -Patch 7.2.097 -Problem: "!xterm&" doesn't work when 'shell' is "bash". -Solution: Ignore SIGHUP after calling setsid(). (Simon Schubert) -Files: src/os_unix.c - -Patch 7.2.098 -Problem: Warning for signed/unsigned pointer. -Solution: Add type cast. -Files: src/eval.c - -Patch 7.2.099 -Problem: Changing GUI options causes an unnecessary redraw when the GUI - isn't active. -Solution: Avoid the redraw. (Lech Lorens) -Files: src/option.c - -Patch 7.2.100 -Problem: When using ":source" on a FIFO or something else that can't rewind - the first three bytes are skipped. -Solution: Instead of rewinding read the first line and detect a BOM in that. - (mostly by James Vega) -Files: src/ex_cmds2.c - -Patch 7.2.101 (extra) -Problem: MSVC version not recognized. -Solution: Add the version number to the list. (Zhong Zhang) -Files: src/Make_mvc.mak - -Patch 7.2.102 (after 7.2.100) -Problem: When 'encoding' is "utf-8" a BOM at the start of a Vim script is - not removed. (Tony Mechelynck) -Solution: When no conversion is taking place make a copy of the line without - the BOM. -Files: src/ex_cmds2.c - -Patch 7.2.103 -Problem: When 'bomb' is changed the window title is updated to show/hide a - "+", but the tab page label isn't. (Patrick Texier) -Solution: Set "redraw_tabline" in most places where "need_maketitle" is set. - (partly by Lech Lorens) -Files: src/option.c - -Patch 7.2.104 -Problem: When using ":saveas bar.c" the tab label isn't updated right away. -Solution: Set redraw_tabline. (Francois Ingelrest) -Files: src/ex_cmds.c - -Patch 7.2.105 -Problem: Modeline setting for 'foldmethod' overrules diff options. (Ingo - Karkat) -Solution: Don't set 'foldmethod' and 'wrap' from a modeline when 'diff' is - on. -Files: src/option.c - -Patch 7.2.106 -Problem: Endless loop when using "]s" in HTML when there are no - misspellings. (Ingo Karkat) -Solution: Break the search loop. Also fix pointer alignment for systems - with pointers larger than int. -Files: src/spell.c - -Patch 7.2.107 -Problem: When using a GUI dialog and ":echo" commands the messages are - deleted after the dialog. (Vincent Birebent) -Solution: Don't call msg_end_prompt() since there was no prompt. -Files: src/message.c - -Patch 7.2.108 (after 7.2.105) -Problem: Can't build without the diff feature. -Solution: Add #ifdef. -Files: src/option.c - -Patch 7.2.109 -Problem: 'langmap' does not work for multi-byte characters. -Solution: Add a list of mapped multi-byte characters. (based on work by - Konstantin Korikov, Agathoklis Hatzimanikas) -Files: runtime/doc/options.txt, src/edit.c, src/getchar.c, src/macros.h, - src/normal.c, src/option.c, src/proto/option.pro, src/window.c - -Patch 7.2.110 -Problem: Compiler warning for unused variable. -Solution: Init the variable. -Files: src/ex_docmd.c - -Patch 7.2.111 -Problem: When using Visual block mode with 'cursorcolumn' it's unclear what - is selected. -Solution: Don't use 'cursorcolumn' highlighting inside the Visual selection. - (idea by Dominique Pelle) -Files: src/screen.c - -Patch 7.2.112 -Problem: Cursor invisible in Visual mode when 'number' is set and cursor in - first column. (Matti Niemenmaa, Renato Alves) -Solution: Check that vcol_prev is smaller than vcol. -Files: src/screen.c - -Patch 7.2.113 -Problem: Crash for substitute() call using submatch(1) while there is no - such submatch. (Yukihiro Nakadaira) -Solution: Also check the start of the submatch is set, it can be NULL when - an attempted match didn't work out. -Files: src/regexp.c - -Patch 7.2.114 -Problem: Using wrong printf format. -Solution: Use "%ld" instead of "%d". (Dominique Pelle) -Files: src/netbeans.c - -Patch 7.2.115 -Problem: Some debugging code is never used. -Solution: Remove nbtrace() and nbprt(). (Dominique Pelle) -Files: src/nbdebug.c, src/nbdebug.h - -Patch 7.2.116 -Problem: Not all memory is freed when EXITFREE is defined. -Solution: Free allocated memory on exit. (Dominique Pelle) -Files: src/ex_docmd.c, src/gui_gtk_x11.c, src/misc2.c, src/search.c, - src/tag.c - -Patch 7.2.117 -Problem: Location list incorrectly labelled "Quickfix List". -Solution: Break out of both loops for finding window for location list - buffer. (Lech Lorens) -Files: src/buffer.c, src/quickfix.c, src/screen.c - -Patch 7.2.118 -Problem: <PageUp> at the more prompt only does half a page. -Solution: Make <PageUp> go up a whole page. Also make 'f' go a page - forward, but not quit the more prompt. (Markus Heidelberg) -Files: src/message.c - -Patch 7.2.119 -Problem: Status line is redrawn too often. -Solution: Check ScreeenLinesUC[] properly. (Yukihiro Nakadaira) -Files: src/screen.c - -Patch 7.2.120 -Problem: When opening the quickfix window or splitting the window and - setting the location list, the location list is copied and then - deleted, which is inefficient. -Solution: Don't copy the location list when not needed. (Lech Lorens) -Files: src/quickfix.c, src/vim.h, src/window.c - -Patch 7.2.121 -Problem: In gvim "!grep a *.c" spews out a lot of text that can't be - stopped with CTRL-C. -Solution: When looping to read and show text, do check for typed characters - every two seconds. -Files: src/os_unix.c - -Patch 7.2.122 -Problem: Invalid memory access when the VimResized autocommand changes - 'columns' and/or 'lines'. -Solution: After VimResized check for changed values. (Dominique Pelle) -Files: src/screen.c - -Patch 7.2.123 -Problem: Typing 'q' at more prompt for ":map" output still displays another - line, causing another more prompt. (Markus Heidelberg) -Solution: Quit listing maps when 'q' typed. -Files: src/getchar.c - -Patch 7.2.124 -Problem: Typing 'q' at more prompt for ":tselect" output still displays - more lines, causing another more prompt. (Markus Heidelberg) -Solution: Quit listing tags when 'q' typed. -Files: src/tag.c - -Patch 7.2.125 -Problem: Leaking memory when reading XPM bitmap for a sign. -Solution: Don't allocate the memory twice. (Dominique Pelle) -Files: src/gui_x11.c - -Patch 7.2.126 -Problem: When EXITFREE is defined signs are not freed. -Solution: Free all signs on exit. Also free keymaps. (Dominique Pelle) -Files: src/misc2.c, src/ex_cmds.c, src/proto/ex_cmds.pro - -Patch 7.2.127 -Problem: When listing mappings and a wrapping line causes the more prompt, - after typing 'q' there can be another more prompt. (Markus - Heidelberg) -Solution: Set "lines_left" to allow more lines to be displayed. -Files: src/message.c - -Patch 7.2.128 (after 7.2.055) -Problem: Using ":lcd" makes session files not work. -Solution: Compare return value of mch_chdir() properly. (Andreas Bernauer) -Files: src/ex_docmd.c - -Patch 7.2.129 -Problem: When opening a command window from input() it uses the search - history. -Solution: Use get_cmdline_type(). (James Vega) -Files: src/ex_getln.c - -Patch 7.2.130 -Problem: Vim may haing until CTRL-C is typed when using CTRL-Z. -Solution: Avoid using pause(). Also use "volatile" for variables used in - signal functions. (Dominique Pelle) -Files: src/auto/configure, src/configure.in, src/config.h.in, - src/globals.h, src/os_unix.c - -Patch 7.2.131 -Problem: When 'keymap' is cleared may still use the cursor highlighting for - when it's enabled. -Solution: Reset 'iminsert' and 'imsearch'. (partly by Dominique Pelle) - Also avoid ":setlocal" for these options have a global effect. -Files: src/option.c - -Patch 7.2.132 -Problem: When changing directory during a SwapExists autocmd freed memory - may be accessed. (Dominique Pelle) -Solution: Add the allbuf_lock flag. -Files: src/ex_getln.c, src/globals.h, src/fileio.c, - src/proto/ex_getln.pro - -Patch 7.2.133 -Problem: ":diffoff!" changes settings in windows not in diff mode. -Solution: Only change settings in other windows when 'diff' is set, always - do it for the current window. (Lech Lorens) -Files: src/diff.c - -Patch 7.2.134 -Problem: Warning for discarding "const" from pointer. -Solution: Don't pass const pointer to mch_memmove(). -Files: src/fileio.c - -Patch 7.2.135 -Problem: Memory leak when redefining user command with complete argument. -Solution: Free the old complete argument. (Dominique Pelle) -Files: src/ex_docmd.c - -Patch 7.2.136 (after 7.2.132) -Problem: ":cd" is still possible in a SwapExists autocmd. -Solution: Check the allbuf_lock flag in ex_cd(). -Files: src/ex_docmd.c - -Patch 7.2.137 -Problem: When 'virtualedit' is set, a left shift of a blockwise selection - that starts and ends inside a tab shifts too much. (Helmut - Stiegler) -Solution: Redo the block left shift code. (Lech Lorens) -Files: src/ops.c, src/testdir/Makefile, src/testdir/test66.in, - src/testdir/test66.ok - -Patch 7.2.138 (extra part of 7.2.137) -Problem: See 7.2.137. -Solution: See 7.2.137. -Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, - src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, - src/testdir/Make_vms.mms - -Patch 7.2.139 -Problem: Crash when 'virtualedit' is "all". (James Vega) -Solution: Avoid overflow when column is MAXCOL. (Dominique Pelle) -Files: src/misc2.c - -Patch 7.2.140 -Problem: Diff highlighting isn't displayed before the Visual area if it - starts at the cursor position. (Markus Heidelberg) -Solution: Also check fromcol_prev. -Files: src/screen.c - -Patch 7.2.141 -Problem: When redrawing a character for bold spill this causes the next - character to be redrawn as well. -Solution: Only redraw one extra character. (Yukihiro Nakadaira) -Files: src/screen.c - -Patch 7.2.142 -Problem: Motif and Athena balloons don't use tooltip colors. -Solution: Set the colors. (Matt Wozniski) -Files: src/gui_beval.c - -Patch 7.2.143 -Problem: No command line completion for ":cscope" command. -Solution: Add the completion for ":cscope". (Dominique Pelle) -Files: src/ex_docmd.c, src/ex_getln.c, src/if_cscope.c, - src/proto/if_cscope.pro, src/vim.h - -Patch 7.2.144 -Problem: When 't_Co' is set to the value it already had the color scheme is - reloaded anyway. -Solution: Only load the colorscheme when the t_Co value changes. (Dominique - Pelle) -Files: src/option.c - -Patch 7.2.145 -Problem: White space in ":cscope find" is not ignored. -Solution: Ignore the white space, but not when the leading white space is - useful for the argument. -Files: runtime/doc/if_scop.txt, src/if_cscope.c - -Patch 7.2.146 -Problem: v:warningmsg isn't used for all warnings. -Solution: Set v:warningmsg for relevant warnings. (Ingo Karkat) -Files: src/fileio.c, src/misc1.c, src/option.c - -Patch 7.2.147 -Problem: When compiled as small version and 'number' is on the cursor is - displayed in the wrong position after a tab. (James Vega) -Solution: Don't increment vcol when still displaying the line number. -Files: src/screen.c - -Patch 7.2.148 -Problem: When searching for "$" while 'hlsearch' is set, highlighting the - character after the line does not work in the cursor column. - Also highlighting for Visual mode after the line end when this - isn't needed. (Markus Heidelberg) -Solution: Only compare the cursor column in the cursor line. Only highlight - for Visual selection after the last character when it's needed to - see where the Visual selection ends. -Files: src/screen.c - -Patch 7.2.149 -Problem: Using return value of function that doesn't return a value results - in reading uninitialized memory. -Solution: Set the default to return zero. Make cursor() return -1 on - failure. Let complete() return an empty string in case of an - error. (partly by Dominique Pelle) -Files: runtime/doc/eval.txt, src/eval.c - -Patch 7.2.150 (extra) -Problem: Can't use tab pages from VisVim. -Solution: Add tab page support to VisVim. (Adam Slater) -Files: src/VisVim/Commands.cpp, src/VisVim/Resource.h, - src/VisVim/VisVim.rc - -Patch 7.2.151 -Problem: ":hist a" doesn't work like ":hist all" as the docs suggest. -Solution: Make ":hist a" and ":hist al" work. (Dominique Pelle) -Files: src/ex_getln.c - -Patch 7.2.152 -Problem: When using "silent echo x" inside ":redir" a next echo may start - halfway the line. (Tony Mechelynck, Dennis Benzinger) -Solution: Reset msg_col after redirecting silently. -Files: src/ex_docmd.c, src/message.c, src/proto/message.pro - -Patch 7.2.153 -Problem: Memory leak for ":recover empty_dir/". -Solution: Free files[] when it becomes empty. (Dominique Pelle) -Files: src/memline.c - -Patch 7.2.154 (after 7.2.132) -Problem: ":cd" is still possible in a SwapExists autocmd. -Solution: Set allbuf_lock in do_swapexists(). -Files: src/memline.c - -Patch 7.2.155 -Problem: Memory leak in ":function /pat". -Solution: Free the memory. (Dominique Pelle) -Files: src/eval.c - -Patch 7.2.156 (after 7.2.143) -Problem: No completion for :scscope and :lcscope commands. -Solution: Implement the completion. (Dominique Pelle) -Files: src/if_cscope.c, src/ex_docmd.c, src/proto/if_cscope.pro - -Patch 7.2.157 -Problem: Illegal memory access when searching in path. -Solution: Avoid looking at a byte after end of a string. (Dominique Pelle) -Files: src/search.c - -Patch 7.2.158 -Problem: Warnings from VisualC compiler. -Solution: Add type casts. (George Reilly) -Files: src/ops.c - -Patch 7.2.159 -Problem: When $x_includes ends up being "NONE" configure fails. -Solution: Check for $x_includes not to be "NONE" (Rainer) -Files: src/auto/configure, src/configure.in - -Patch 7.2.160 -Problem: Search pattern not freed on exit when 'rightleft' set. -Solution: Free mr_pattern_alloced. -Files: src/search.c - -Patch 7.2.161 -Problem: Folds messed up in other tab page. (Vlad Irnov) -Solution: Instead of going over all windows in current tab page go over all - windows in all tab pages. Also free memory for location lists in - other tab pages when exiting. (Lech Lorens) -Files: src/fileio.c, src/mark.c, src/misc1.c, src/misc2.c - -Patch 7.2.162 -Problem: The quickfix window may get wrong filetype. -Solution: Do not detect the filetype for the quickfix window. (Lech Lorens) -Files: src/quickfix.c - -Patch 7.2.163 -Problem: The command line window may get folding. -Solution: Default to no/manual folding. (Lech Lorens) -Files: src/ex_getln.c - -Patch 7.2.164 -Problem: When 'showbreak' is set the size of the Visual block may be - reported wrong. (Eduardo Daudt Flach) -Solution: Temporarily make 'sbr' empty. -Files: src/normal.c, src/ops.c - -Patch 7.2.165 -Problem: The argument for the FuncUndefined autocmd event is expanded like - a file name. -Solution: Don't try expanding it. (Wang Xu) -Files: src/fileio.c - -Patch 7.2.166 -Problem: No completion for ":sign" command. -Solution: Add ":sign" completion. (Dominique Pelle) -Files: src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, src/vim.h, - src/proto/ex_cmds.pro - -Patch 7.2.167 -Problem: Splint doesn't work well for checking the code. -Solution: Add splint arguments in the Makefile. Exclude some code from - splint that it can't handle. Tune splint arguments to give - reasonable errors. Add a filter for removing false warnings from - splint output. Many small changes to avoid warnings. More to - follow... -Files: Filelist, src/Makefile, src/buffer.c, src/charset.c, - src/cleanlint.vim, src/digraph.c, src/edit.c, src/ex_cmds.c, - src/globals.h, src/ops.c, src/os_unix.c, src/os_unix.h, - src/proto/buffer.pro, src/proto/edit.pro, src/screen.c, - src/structs.h - -Patch 7.2.168 -Problem: When no ctags program can be found, "make tags" attempts to - execute the first C file. -Solution: Default to "ctags" when no ctags program can be found. -Files: src/configure.in, src/auto/configure - -Patch 7.2.169 -Problem: Splint complains about a lot of things. -Solution: Add type casts, #ifdefs and other changes to avoid warnings. - Change colnr_T from unsigned to int. Avoids mistakes with - subtracting columns. -Files: src/cleanlint.vim, src/diff.c, src/edit.c, src/ex_cmds.c, - src/ex_cmds2.c, src/ex_docmd.c, src/proto/ex_cmds.pro, - src/proto/spell.pro, src/quickfix.c, src/spell.c, src/structs.h, - src/term.h, src/vim.h - -Patch 7.2.170 -Problem: Using b_dev while it was not set. (Dominique Pelle) -Solution: Add the b_dev_valid flag. -Files: src/buffer.c, src/fileio.c, src/structs.h - -Patch 7.2.171 (after 7.2.169) -Problem: Compiler warnings. (Tony Mechelynck) -Solution: Add function prototype. (Patrick Texier) Init variable. -Files: src/ex_cmds.c - -Patch 7.2.172 (extra) -Problem: Compiler warning. -Solution: Adjust function prototype. (Patrick Texier) -Files: src/os_mswin.c - -Patch 7.2.173 -Problem: Without lint there is no check for unused function arguments. -Solution: Use gcc -Wunused-parameter instead of lint. For a few files add - attributes to arguments that are known not to be used. -Files: src/auto/configure, src/buffer.c, src/charset.c, src/diff.c, - src/configure.in, src/config.h.in, src/edit.c, src/ex_cmds.c, - src/ex_cmds2.c, src/version.c, src/vim.h - -Patch 7.2.174 -Problem: Too many warnings from gcc -Wextra. -Solution: Change initializer. Add UNUSED. Add type casts. -Files: src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_docmd.c, - src/ex_getln.c, src/fileio.c, getchar.c, globals.h, main.c, - memline.c, message.c, src/misc1.c, src/move.c, src/normal.c, - src/option.c, src/os_unix.c, src/os_unix.h, src/regexp.c, - src/search.c, src/tag.c - -Patch 7.2.175 -Problem: Compiler warning in OpenBSD. -Solution: Add type cast for NULL. (Dasn) -Files: src/if_cscope.c - -Patch 7.2.176 -Problem: Exceptions for splint are not useful. -Solution: Remove the S_SPLINT_S ifdefs. -Files: src/edit.c, src/ex_cmds.c, src/ex_docmd.c, src/os_unix.c, - src/os_unix.h, src/os_unixx.h, src/structs.h, src/term.h - -Patch 7.2.177 -Problem: Compiler warnings when using -Wextra -Solution: Add UNUSED and type casts. -Files: src/eval.c, src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, - src/fileio.c, src/hardcopy.c, src/if_cscope.c, src/if_xcmdsrv.c, - src/farsi.c, src/mark.c, src/menu.c - -Patch 7.2.178 -Problem: Using negative value for device number might not work. -Solution: Use a separate flag for whether ffv_dev was set. -Files: src/misc2.c - -Patch 7.2.179 -Problem: Using negative value for device number might not work. -Solution: Use a separate flag for whether sn_dev was set. -Files: src/ex_cmds2.c - -Patch 7.2.180 -Problem: Some more compiler warnings when using gcc -Wextra. -Solution: Add UNUSED and type casts. -Files: src/buffer.c, src/ex_cmds.c, src/macros.h, src/main.c, - src/menu.c, src/message.c, src/misc1.c, src/mbyte.c, - src/normal.c, src/option.c, src/os_unix.c, src/quickfix.c, - src/screen.c, src/search.c, src/spell.c, src/syntax.c, src/tag.c, - src/term.c, src/ui.c - -Patch 7.2.181 -Problem: Some more compiler warnings when using gcc -Wextra. -Solution: Add UNUSED and type casts. -Files: src/if_mzsch.c, src/gui.c, src/gui_gtk.c, src/gui_gtk_x11.c, - src/gui_gtk_f.c, src/gui_beval.c, src/netbeans.c - -Patch 7.2.182 (after 7.2.181) -Problem: Compilation problems after previous patch for Motif. Gvim with - GTK crashes on startup. -Solution: Add comma. Init form structure to zeroes. -Files: src/netbeans.c, src/gui_gtk_f.c - -Patch 7.2.183 -Problem: Configure problem for sys/sysctl.h on OpenBSD. (Dasn) -Solution: Add separate check for this header file. Also switch to newer - version of autoconf. -Files: src/auto/configure, src/configure.in - -Patch 7.2.184 -Problem: Some more compiler warnings when using gcc -Wextra. -Solution: Add UNUSED and type casts. Autoconf check for wchar_t. -Files: src/auto/configure, src/config.h.in, src/configure.in, - src/gui_athena.c, src/gui_x11.c, src/gui.c, src/gui_beval.c, - src/gui_at_sb.c, src/gui_at_fs.c, src/gui_motif.c, - src/gui_xmdlg.c, src/gui_xmebw.c, src/if_python.c, src/window.c, - src/workshop.c - -Patch 7.2.185 -Problem: Some more compiler warnings when using gcc -Wextra. -Solution: Add UNUSED and type casts. -Files: src/Makefile, src/if_tlc.c, src/if_ruby.c - -Patch 7.2.186 -Problem: Some more compiler warnings when using gcc -Wextra. -Solution: Now with the intended if_tcl.c changes. -Files: src/if_tcl.c - -Patch 7.2.187 (after 7.2.186) -Problem: Doesn't build with older versions of TCL. (Yongwei Wu) -Solution: Add #ifdefs. (Dominique Pelle) -Files: src/if_tcl.c - -Patch 7.2.188 -Problem: Crash with specific use of function calls. (Meikel Brandmeyer) -Solution: Make sure the items referenced by a function call are not freed - twice. (based on patch from Nico Weber) -Files: src/eval.c - -Patch 7.2.189 -Problem: Possible hang for deleting auto-indent. (Dominique Pelle) -Solution: Make sure the position is not beyond the end of the line. -Files: src/edit.c - -Patch 7.2.190 -Problem: The register executed by @@ isn't restored. -Solution: Mark the executable register in the viminfo file. -Files: src/ops.c - -Patch 7.2.191 -Problem: Mzscheme interface doesn't work on Ubuntu. -Solution: Change autoconf rules. Define missing macro. Some changes to - avoid gcc warnings. Remove per-buffer namespace. (Sergey Khorev) -Files: runtime/doc/if_mzsch.txt, src/Makefile, src/Make_ming.mak, - src/Make_mvc.mak, src/auto/configure, src/configure.in, - src/config.mk.in, src/eval.c, src/if_mzsch.c, src/if_mzsch.h, - src/main.c, src/proto/if_mzsch.pro - -Patch 7.2.192 (after 7.2.188) -Problem: Still a crash in the garbage collector for a very rare situation. -Solution: Make sure current_copyID is always incremented correctly. (Kent - Sibilev) -Files: src/eval.c - -Patch 7.2.193 -Problem: Warning for uninitialized values. -Solution: Initialize all the struct items. -Files: src/eval.c - -Patch 7.2.194 (extra) -Problem: MSVC: rem commands are echoed. -Solution: Add commands to switch off echo. (Wang Xu) -Files: src/msvc2008.bat - -Patch 7.2.195 -Problem: Leaking memory for the command Vim was started with. -Solution: Remember the pointer and free it. -Files: src/gui_gtk_x11.c - -Patch 7.2.196 (after 7.2.167) -Problem: Turns out splint doesn't work well enough to be usable. -Solution: Remove splint support. -Files: Filelist, src/cleanlint.vim - -Patch 7.2.197 -Problem: Warning for uninitialized values. -Solution: Initialize all the struct items of typebuf. -Files: src/globals.h - -Patch 7.2.198 -Problem: Size of buffer used for tgetent() may be too small. -Solution: Use the largest known size everywhere. -Files: src/vim.h - -Patch 7.2.199 -Problem: Strange character in comment. -Solution: Change to "message". (Yongwei Wu) -Files: src/term.c - -Patch 7.2.200 -Problem: Reading past end of string when navigating the menu bar or - resizing the window. -Solution: Add and use mb_ptr2len_len(). (partly by Dominique Pelle) - Also add mb_ptr2cells_len() to prevent more trouble. -Files: src/gui_gtk_x11.c, src/os_unix.c, src/globals.h, src/mbyte.c, - src/proto/mbyte.pro - -Patch 7.2.201 -Problem: Cannot copy/paste HTML to/from Firefox via the clipboard. -Solution: Implement this for GTK. Add the "html" value to 'clipboard'. -Files: runtime/doc/options.txt, src/globals.h, src/gui_gtk_x11.c, - src/mbyte.c, src/proto/mbyte.pro, src/option.c - -Patch 7.2.202 -Problem: BufWipeout autocommand that edits another buffer causes problems. -Solution: Check for the situation, give an error and quit the operation. -Files: src/fileio.c - -Patch 7.2.203 -Problem: When reloading a buffer or doing anything else with a buffer that - is not displayed in a visible window, autocommands may be applied - to the current window, folds messed up, etc. -Solution: Instead of using the current window for the hidden buffer use a - special window, splitting the current one temporarily. -Files: src/fileio.c, src/globals.h, src/gui.c, src/if_perl.xs, - src/progo/gui.pro, src/proto/window.pro, src/screen.c, - src/structs.h, src/window.c - -Patch 7.2.204 (extra) -Problem: Win32: Can't build with Visual Studio 2010 beta 1. -Solution: Fix the makefile. (George Reilly) -Files: src/Make_mvc.mak - -Patch 7.2.205 (extra) -Problem: Win32: No support for High DPI awareness. -Solution: Fix the manifest file. (George Reilly) -Files: src/Make_mvc.mak, src/gvim.exe.mnf - -Patch 7.2.206 -Problem: Win32: Can't build netbeans interface with Visual Studio 2010. -Solution: Undefine ECONNREFUSED. (George Reilly) -Files: src/netbeans.c - -Patch 7.2.207 -Problem: Using freed memory with ":redrawstatus" when it works recursively. -Solution: Prevent recursively updating the status line. (partly by Dominique - Pelle) -Files: src/screen.c - -Patch 7.2.208 -Problem: "set novice" gives an error message, it should be ignored. -Solution: Don't see "no" in "novice" as unsetting an option. (Patrick - Texier) -Files: src/option.c - -Patch 7.2.209 -Problem: For xxd setmode() is undefined on Cygwin. -Solution: Include io.h. (Dominique Pelle) -Files: src/xxd/xxd.c - -Patch 7.2.210 -Problem: When a file that is being edited has its timestamp updated outside - of Vim and ":checktime" is used still get a warning when writing - the file. (Matt Mueller) -Solution: Store the timestamp in b_mtime_read when the timestamp is the only - thing that changed. -Files: src/fileio.c - -Patch 7.2.211 -Problem: Memory leak when expanding a series of file names. -Solution: Use ga_clear_strings() instead of ga_clear(). -Files: src/misc1.c - -Patch 7.2.212 (extra) -Problem: Warnings for redefining SIG macros. -Solution: Don't define them if already defined. (Bjorn Winckler) -Files: src/os_mac.h - -Patch 7.2.213 -Problem: Warning for using vsprintf(). -Solution: Use vim_vsnprintf(). -Files: src/netbeans.c - -Patch 7.2.214 -Problem: Crash with complete function for user command. (Andy Wokula) -Solution: Avoid using a NULL pointer (Dominique Pelle) -Files: src/ex_getln.c - -Patch 7.2.215 -Problem: ml_get error when using ":vimgrep". -Solution: Load the memfile for the hidden buffer before putting it in a - window. Correct the order of splitting the window and filling - the window and buffer with data. -Files: src/fileio.c, src/proto/window.pro, src/quickfix.c, src/window.c - -Patch 7.2.216 -Problem: Two error messages have the same number E812. -Solution: Give one message a different number. -Files: runtime/doc/autocmd.txt, runtime/doc/if_mzsch.txt, src/if_mzsch.c - -Patch 7.2.217 -Problem: Running tests with valgrind doesn't work as advertised. -Solution: Fix the line in the Makefile. -Files: src/testdir/Makefile - -Patch 7.2.218 -Problem: Cannot build GTK with hangul_input feature. (Dominique Pelle) -Solution: Adjust #ifdef. (SungHyun Nam) -Files: src/gui.c - -Patch 7.2.219 (extra) -Problem: Photon GUI is outdated. -Solution: Updates for QNX 6.4.0. (Sean Boudreau) -Files: src/gui_photon.c - -Patch 7.2.220 (after 7.2.215) -Problem: a BufEnter autocommand that changes directory causes problems. - (Ajit Thakkar) -Solution: Disable autocommands when opening a hidden buffer in a window. -Files: src/fileio.c - -Patch 7.2.221 -Problem: X cut_buffer0 text is used as-is, it may be in the wrong encoding. -Solution: Convert between 'enc' and latin1. (James Vega) -Files: src/gui_gtk_x11.c, src/message.c, src/ops.c, src/proto/ui.pro, - src/ui.c - -Patch 7.2.222 -Problem: ":mksession" doesn't work properly with 'acd' set. -Solution: Make it work. (Yakov Lerner) -Files: src/ex_docmd.c - -Patch 7.2.223 -Problem: When a script is run with ":silent" it is not able to give warning - messages. -Solution: Add the ":unsilent" command. -Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c - -Patch 7.2.224 -Problem: Crash when using 'completefunc'. (Ingo Karkat) -Solution: Disallow entering edit() recursively when doing completion. -Files: src/edit.c - -Patch 7.2.225 -Problem: When using ":normal" a saved character may be executed. -Solution: Also store old_char when saving typeahead. -Files: src/getchar.c, src/structs.h - -Patch 7.2.226 -Problem: ml_get error after deleting the last line. (Xavier de Gaye) -Solution: When adjusting marks a callback may be invoked. Adjust the cursor - position before invoking deleted_lines_mark(). -Files: src/ex_cmds.c, src/ex_docmd.c, src/if_mzsch.c, src/if_python.c, - src/if_perl.xs, src/misc1.c - -Patch 7.2.227 -Problem: When using ":cd" in a script there is no way to track this. -Solution: Display the directory when 'verbose' is 5 or higher. -Files: src/ex_docmd.c - -Patch 7.2.228 -Problem: Cscope is limited to 8 connections. -Solution: Allocated the connection array to handle any number of - connections. (Dominique Pelle) -Files: runtime/doc/if_cscop.txt, src/if_cscope.h, src/if_cscope.c - -Patch 7.2.229 -Problem: Warning for shadowed variable. -Solution: Rename "wait" to "wait_time". -Files: src/os_unix.c - -Patch 7.2.230 -Problem: A few old lint-style ARGUSED comments. -Solution: Change to the new UNUSED style. -Files: src/getchar.c - -Patch 7.2.231 -Problem: Warning for unreacheable code. -Solution: Add #ifdef. -Files: src/if_perl.xs - -Patch 7.2.232 -Problem: Cannot debug problems with being in a wrong directory. -Solution: When 'verbose' is 5 or higher report directory changes. -Files: src/os_unix.c, src/os_unix.h, src/proto/os_unix.pro - -Patch 7.2.233 (extra part of 7.2.232) -Problem: Cannot debug problems with being in a wrong directory. -Solution: When 'verbose' is 5 or higher report directory changes. -Files: src/os_msdos.c, src/os_mswin.c, src/os_riscos.c, src/os_mac.h - -Patch 7.2.234 -Problem: It is not possible to ignore file names without a suffix. -Solution: Use an empty entry in 'suffixes' for file names without a dot. -Files: runtime/doc/cmdline.txt, src/misc1.c - -Patch 7.2.235 -Problem: Using CTRL-O z= in Insert mode has a delay before redrawing. -Solution: Reset msg_didout and msg_scroll. -Files: src/misc1.c, src/spell.c - -Patch 7.2.236 -Problem: Mac: Compiling with Ruby doesn't always work. -Solution: In configure filter out the --arch argument (Bjorn Winckler) -Files: src/configure.in, src/auto/configure - -Patch 7.2.237 -Problem: Crash on exit when window icon not set. -Solution: Copy terminal name when using it for the icon name. -Files: src/os_unix.c - -Patch 7.2.238 -Problem: Leaking memory when setting term to "builtin_dumb". -Solution: Free memory when resetting term option t_Co. -Files: src/option.c, src/proto/option.pro, src/term.c - -Patch 7.2.239 -Problem: Using :diffpatch twice or when patching fails causes memory - corruption and/or a crash. (Bryan Venteicher) -Solution: Detect missing output file. Avoid using non-existing buffer. -Files: src/diff.c - -Patch 7.2.240 -Problem: Crash when using find/replace dialog repeatedly. (Michiel - Hartsuiker) -Solution: Avoid doing the operation while busy or recursively. Also refuse - replace when text is locked. -Files: src/gui.c - -Patch 7.2.241 -Problem: When using a combination of ":bufdo" and "doautoall" we may end up - in the wrong directory. (Ajit Thakkar) - Crash when triggering an autocommand in ":vimgrep". (Yukihiro - Nakadaira) -Solution: Clear w_localdir and globaldir when using the aucmd_win. - Use a separate flag to decide aucmd_win needs to be restored. -Files: src/fileio.c, src/globals.h, src/structs.h - -Patch 7.2.242 -Problem: Setting 'lazyredraw' causes the cursor column to be recomputed. - (Tom Link) -Solution: Only recompute the cursor column for a boolean option if changes - the cursor position. -Files: src/option.c - -Patch 7.2.243 -Problem: Memory leak when using :vimgrep and resizing. (Dominique Pelle) -Solution: Free memory for aucmd_win when resizing and don't allocate it - twice. -Files: src/screen.c - -Patch 7.2.244 -Problem: When 'enc' is utf-8 and 'fenc' is latin1, writing a non-latin1 - character gives a conversion error without any hint what is wrong. -Solution: When known add the line number to the error message. -Files: src/fileio.c - -Patch 7.2.245 -Problem: When 'enc' is "utf-16" and 'fenc' is "utf-8" writing a file does - conversion while none should be done. (Yukihiro Nakadaira) When - 'fenc' is empty the file is written as utf-8 instead of utf-16. -Solution: Do proper comparison of encodings, taking into account that all - Unicode values for 'enc' use utf-8 internally. -Files: src/fileio.c - -Patch 7.2.246 -Problem: Cscope home page link is wrong. -Solution: Update the URL. (Sergey Khorev) -Files: runtime/doc/if_cscop.txt - -Patch 7.2.247 -Problem: Mzscheme interface minor problem. -Solution: Better error message when build fails. (Sergey Khorev) -Files: src/if_mzsch.c - -Patch 7.2.248 (extra) -Problem: Mzscheme interface building minor problems. -Solution: Update Win32 makefiles. (Sergey Khorev) -Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak - -Patch 7.2.249 -Problem: The script to check .po files can't handle '%' in plural forms. -Solution: Remove "Plural-Forms:" from the checked string. -Files: src/po/check.vim - -Patch 7.2.250 (extra) -Problem: Possible buffer overflow. -Solution: Compute the remaining space. (Dominique Pelle) -Files: src/GvimExt/gvimext.cpp - -Patch 7.2.251 (after 7.2.044) -Problem: Compiler adds invalid memory bounds check. -Solution: Remove _FORTIFY_SOURCE=2 from CFLAGS. (Dominique Pelle) -Files: src/auto/configure, src/configure.in - -Patch 7.2.252 -Problem: When using a multi-byte 'enc' the 'iskeyword' option cannot - contain characters above 128. -Solution: Use mb_ptr2char_adv(). -Files: src/charset.c - -Patch 7.2.253 -Problem: Netbeans interface: getLength always uses current buffer. -Solution: Use ml_get_buf() instead of ml_get(). (Xavier de Gaye) -Files: src/netbeans.c - -Patch 7.2.254 -Problem: Compiler warning for assigning size_t to int. -Solution: Use size_t for the variable. (George Reilly) -Files: src/fileio.c - -Patch 7.2.255 (after 7.2.242) -Problem: Setting 'rightleft', 'linebreak' and 'wrap' may cause cursor to be - in wrong place. -Solution: Recompute the cursor column for these options. -Files: src/option.c - -Patch 7.2.256 -Problem: When 'guifont' was not set GTK font dialog doesn't have a default. - (Andreas Metzler) -Solution: Set default to DEFAULT_FONT. (James Vega) -Files: src/gui_gtk_x11.c - -Patch 7.2.257 -Problem: With GTK 2.17 lots of assertion error messages. -Solution: Remove check for static gravity. (Sebastian Droege) -Files: src/gui_gtk_f.c - -Patch 7.2.258 -Problem: v:beval_col and b:beval_text are wrong in UTF-8 text. (Tony - Mechelynck) -Solution: Use byte number instead of character number for the column. -Files: src/ui.c - -Patch 7.2.259 -Problem: exists() doesn't work properly for an empty aucmd group. -Solution: Change how au_exists() handles a missing pattern. Also add a - test for this. (Bob Hiestand) -Files: src/fileio.c, src/testdir/Makefile, src/testdir/test67.in, - src/testdir/test67.ok - -Patch 7.2.260 (extra part of 7.2.259) -Problem: exists() doesn't work properly for empty aucmd group. -Solution: Change how au_exists() handles a missing pattern. Also add a - test for this. (Bob Hiestand) -Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, - src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, - src/testdir/Make_vms.mms - -Patch 7.2.261 -Problem: When deleting lines with a specific folding configuration E38 may - appear. (Shahaf) -Solution: When adjusting nested folds for deleted lines take into account - that they don't start at the top of the enclosing fold. -Files: src/fold.c - -Patch 7.2.262 -Problem: When using custom completion for a user command the pattern string - goes beyond the cursor position. (Hari Krishna Dara) -Solution: Truncate the string at the cursor position. -Files: src/ex_getln.c, src/structs.h - -Patch 7.2.263 -Problem: GTK2: when using the -geom argument with an offset from the right - edge and the size is smaller than the default, the Vim window is - not positioned properly. -Solution: Use another function to set the size. (Vitaly Minko) -Files: src/gui_gtk_x11.c - -Patch 7.2.264 -Problem: GTK2: When the Vim window is maximized setting 'columns' or - 'lines' doesn't work. -Solution: Unmaximize the window before setting the size. (Vitaly Minko) -Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro - -Patch 7.2.265 -Problem: When using ":silent broken" inside try/catch silency may persist. - (dr-dr xp) -Solution: Set msg_silent when there is an error and it's bigger than the - saved value. -Files: src/ex_docmd.c - -Patch 7.2.266 -Problem: When an expression abbreviation is triggered, the typed character - is unknown. -Solution: Make the typed character available in v:char. -Files: runtime/doc/map.txt, src/eval.c, src/getchar.c, src/ops.c, - src/proto/eval.pro - -Patch 7.2.267 -Problem: Crash for narrow window and double-width character. -Solution: Check for zero width. (Taro Muraoka) -Files: src/charset.c - -Patch 7.2.268 -Problem: Crash when using Python to set cursor beyond end of line. - (winterTTr) -Solution: Check the column to be valid. -Files: src/if_python.c - -Patch 7.2.269 -Problem: Many people struggle to find out why Vim startup is slow. -Solution: Add the --startuptime command line flag. -Files: runtime/doc/starting.txt, src/globals.h, src/feature.h, - src/main.c, src/macros.h - -Patch 7.2.270 -Problem: Using ":@c" when the c register contains a CR causes the rest to - be executed later. (Dexter Douglas) -Solution: Don't check for typeahead to start with ':', keep executing - commands until all added typeahead has been used. -Files: src/ex_docmd.c - -Patch 7.2.271 -Problem: Using freed memory in Motif GUI version when making a choice. -Solution: Free memory only after using it. (Dominique Pelle) -Files: src/gui_xmdlg.c - -Patch 7.2.272 -Problem: "_.svz" is not recognized as a swap file. (David M. Besonen) -Solution: Accept .s[uvw][a-z] as a swap file name extension. -Files: src/memline.c - -Patch 7.2.273 -Problem: Crash with redir to unknown array. (Christian Brabandt) -Solution: Don't assign the redir result when there was an error. -Files: src/eval.c - -Patch 7.2.274 -Problem: Syntax folding doesn't work properly when adding a comment. -Solution: Fix it and add a test. (Lech Lorens) -Files: src/fold.c, src/testdir/test45.in, src/testdir/test45.ok - -Patch 7.2.275 -Problem: Warning for unused argument and comparing signed and unsigned. -Solution: Add type cast. -Files: src/memline.c - -Patch 7.2.276 -Problem: Crash when setting 'isprint' to a small bullet. (Raul Coronado) -Solution: Check for the character to be < 256. Also make it possible to - specify a range of multi-byte characters. (Lech Lorens) -Files: src/charset.c - -Patch 7.2.277 -Problem: CTRL-Y in a diff'ed window may move the cursor outside of the - window. (Lech Lorens) -Solution: Limit the number of filler lines to the height of the window. - Don't reset filler lines to zero for an empty buffer. -Files: src/move.c - -Patch 7.2.278 -Problem: Using magic number in the folding code. -Solution: Use the defined MAX_LEVEL. -Files: src/fold.c - -Patch 7.2.279 -Problem: Invalid memory read with visual mode "r". (Dominique Pelle) -Solution: Make sure the cursor position is valid. Don't check the cursor - position but the position being used. And make sure we get the - right line. -Files: src/misc2.c, src/ops.c - -Patch 7.2.280 -Problem: A redraw in a custom statusline with %! may cause a crash. - (Yukihiro Nakadaira) -Solution: Make a copy of 'statusline'. Also fix typo in function name - redraw_custum_statusline. (partly by Dominique Pelle) -Files: src/screen.c - -Patch 7.2.281 -Problem: 'cursorcolumn' highlighting is wrong in diff mode. -Solution: Adjust the column computation. (Lech Lorens) -Files: src/screen.c - -Patch 7.2.282 -Problem: A fold can't be closed. -Solution: Initialize fd_small to MAYBE. (Lech Lorens) -Files: src/fold.c - -Patch 7.2.283 -Problem: Changing font while the window is maximized doesn't keep the - window maximized. -Solution: Recompute number of lines and columns after changing font. (James - Vega) -Files: src/gui_gtk_x11.c - -Patch 7.2.284 -Problem: When editing the same buffer in two windows, one with folding, - display may be wrong after changes. -Solution: Call set_topline() to take care of side effects. (Lech Lorens) -Files: src/misc1.c - -Patch 7.2.285 (after 7.2.169) -Problem: CTRL-U in Insert mode also deletes indent. (Andrey Voropaev) -Solution: Fix mistake made in patch 7.2.169. -Files: src/edit.c - -Patch 7.2.286 (after 7.2.269) -Problem: The "--startuptime=<file>" argument is not consistent with other - arguments. -Solution: Use "--startuptime <file>". Added the +startuptime feature. -Files: runtime/doc/eval.txt, runtime/doc/starting.txt, - runtime/doc/various.txt, src/eval.c, src/main.c, src/version.c - -Patch 7.2.287 -Problem: Warning from gcc 3.4 about uninitialized variable. -Solution: Move assignment outside of #ifdef. -Files: src/if_perl.xs - -Patch 7.2.288 -Problem: Python 2.6 pyconfig.h redefines macros. -Solution: Undefine the macros before including pyconfig.h. -Files: src/if_python.c - -Patch 7.2.289 -Problem: Checking wrong struct member. -Solution: Change tb_buf to tb_noremap. (Dominique Pelle) -Files: src/getchar.c - -Patch 7.2.290 -Problem: Not freeing memory from ":lmap", ":xmap" and ":menutranslate". -Solution: Free the memory when exiting. (Dominique Pelle) -Files: src/misc2.c - -Patch 7.2.291 -Problem: Reading uninitialised memory in arabic mode. -Solution: Use utfc_ptr2char_len() rather than utfc_ptr2char(). (Dominique - Pelle) -Files: src/screen.c - -Patch 7.2.292 -Problem: Block right-shift doesn't work properly with multi-byte encoding - and 'list' set. -Solution: Add the missing "else". (Lech Lorens) -Files: src/ops.c - -Patch 7.2.293 -Problem: When setting 'comments' option it may be used in a wrong way. -Solution: Don't increment after skipping over digets. (Yukihiro Nakadaira) -Files: src/misc1.c - -Patch 7.2.294 -Problem: When using TEMPDIRS dir name could get too long. -Solution: Overwrite tail instead of appending each time. Use mkdtemp() when - available. (James Vega) -Files: src/auto/configure, src/config.h.in, src/configure.in, src/fileio.c - -Patch 7.2.295 -Problem: When using map() on a List the index is not known. -Solution: Set v:key to the index. (Hari Krishna Dara) -Files: runtime/doc/eval.txt, src/eval.c - -Patch 7.2.296 -Problem: Help message about startuptime is wrong. (Dominique Pelle) -Solution: Remove the equal sign. -Files: src/main.c - -Patch 7.2.297 -Problem: Reading freed memory when writing ":reg" output to a register. - (Dominique Pelle) -Solution: Skip the register being written to. -Files: src/ops.c - -Patch 7.2.298 -Problem: ":vimgrep" crashes when there is an autocommand that sets a - window-local variable. -Solution: Initialize the w: hashtab for re-use. (Yukihiro Nakadaira) -Files: src/fileio.c - -Patch 7.2.299 -Problem: Crash when comment middle is longer than start. -Solution: Fix size computation. (Lech Lorens) -Files: src/misc1.c - -Patch 7.2.300 -Problem: Vim doesn't close file descriptors when forking and executing - another command, e.g., ":shell". -Solution: Use FD_CLOEXEC when available. (James Vega) -Files: auto/configure, src/config.h.in, src/configure.in, - src/ex_cmdds2.c, src/fileio.c, src/memfile.c, src/memline.c - -Patch 7.2.301 -Problem: Formatting is wrong when 'tw' is set to a small value. -Solution: Fix it and add tests. Also fix behavior of "1" in 'fo'. (Yukihiro - Nakadaira) -Files: src/edit.c, src/testdir/Makefile, src/testdir/test68.in, - src/testdir/test68.ok, src/testdir/test69.in, - src/testdir/test69,ok - -Patch 7.2.302 (extra part of 7.2.301) -Problem: Formatting wrong with small 'tw' value. -Solution: Add build rules for tests. -Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, - src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, - src/testdir/Make_vms.mms - -Patch 7.2.303 (after 7.2.294) -Problem: Can't build on MS-Windows. -Solution: Add #ifdef around vim_settempdir(). (James Vega) -Files: src/fileio.c - -Patch 7.2.304 -Problem: Compiler warning for bad pointer cast. -Solution: Use another variable for int pointer. -Files: src/ops.c - -Patch 7.2.305 -Problem: Recursively redrawing causes a memory leak. (Dominique Pelle) -Solution: Disallow recursive screen updating. -Files: src/screen.c - -Patch 7.2.306 -Problem: shellescape("10%%", 1) only escapes first %. (Christian Brabandt) -Solution: Don't copy the character after the escaped one. -Files: src/misc2.c - -Patch 7.2.307 -Problem: Crash with a very long syntax match statement. (Guy Gur Ari) -Solution: When the offset does not fit in the two bytes available give an - error instead of continuing with invalid pointers. -Files: src/regexp.c - -Patch 7.2.308 -Problem: When using a regexp in the "\=" expression of a substitute - command, submatch() returns empty strings for further lines. - (Clockwork Jam) -Solution: Save and restore the line number and line count when calling - reg_getline(). -Files: src/regexp.c - -Patch 7.2.309 (after 7.2.308) -Problem: Warning for missing function prototype. (Patrick Texier) -Solution: Add the prototype. -Files: src/regexp.c - -Patch 7.2.310 -Problem: When a filetype plugin in ~/.vim/ftdetect uses ":setfiletype" and - the file starts with a "# comment" it gets "conf" filetype. -Solution: Check for "conf" filetype after using ftdetect plugins. -Files: runtime/filetype.vim - -Patch 7.2.311 -Problem: Can't compile with FreeMiNT. -Solution: Change #ifdef for limits.h. (Alan Hourihane) -Files: src/fileio.c - -Patch 7.2.312 -Problem: iconv() returns an invalid character sequence when conversion - fails. It should return an empty string. (Yongwei Wu) -Solution: Be more strict about invalid characters in the input. -Files: src/mbyte.c - -Patch 7.2.313 -Problem: Command line completion doesn't work after "%:h" and similar. -Solution: Expand these items before doing the completion. -Files: src/ex_getln.c, src/misc1.c, src/proto/misc1.pro - -Patch 7.2.314 -Problem: Missing function in small build. -Solution: Always include concat_str. -Files: src/misc1.c - -Patch 7.2.315 -Problem: Python libs can't be found on 64 bit system. -Solution: Add lib64 to the list of directories. (Michael Henry) -Files: src/auto/configure, src/configure.in - -Patch 7.2.316 -Problem: May get multiple _FORTIFY_SOURCE arguments. (Tony Mechelynck) -Solution: First remove all these arguments and then add the one we want. - (Dominique Pelle) -Files: src/auto/configure, src/configure.in - -Patch 7.2.317 -Problem: Memory leak when adding a highlight group with unprintable - characters, resulting in E669. -Solution: Free the memory. And fix a few typos. (Dominique Pelle) -Files: src/syntax.c - -Patch 7.2.318 -Problem: Wrong locale value breaks floating point numbers for gvim. -Solution: Set the locale again after doing GUI inits. (Dominique Pelle) -Files: src/main.c - -Patch 7.2.319 -Problem: Motif: accessing freed memory when cancelling font dialog. -Solution: Destroy the widget only after accessing it. (Dominique Pelle) -Files: src/gui_xmdlg.c - -Patch 7.2.320 -Problem: Unused function in Mzscheme interface. -Solution: Remove the function and what depends on it. (Dominique Pelle) -Files: src/if_mzsch.c, src/proto/if_mzsch.pro - -Patch 7.2.321 -Problem: histadd() and searching with "*" fails to add entry to history - when it is empty. -Solution: Initialize the history. (Lech Lorens) -Files: src/eval.c, src/normal.c - -Patch 7.2.322 -Problem: Wrong indenting in virtual replace mode with CTRL-Y below a short - line. -Solution: Check for character to be NUL. (suggested by Lech Lorens) -Files: src/edit.c - -Patch 7.2.323 (extra) -Problem: Balloon evaluation crashes on Win64. -Solution: Change pointer types. (Sergey Khorev) -Files: src/gui_w32.c - -Patch 7.2.324 -Problem: A negative column argument in setpos() may cause a crash. -Solution: Check for invalid column number. (James Vega) -Files: src/eval.c, src/misc2.c - -Patch 7.2.325 -Problem: A stray "w" in the startup vimrc file causes the edited file to be - replaced with an empty file. (Stone Kang). -Solution: Do not write a buffer when it has never been loaded. -Files: src/fileio.c - -Patch 7.2.326 -Problem: Win32: $HOME doesn't work when %HOMEPATH% is not defined. -Solution: Use "\" for %HOMEPATH% when it is not defined. -Files: src/misc1.c - -Patch 7.2.327 -Problem: Unused functions in Workshop. -Solution: Add "#if 0" and minor cleanup. (Dominique Pelle) -Files: src/workshop.c, src/integration.c, src/integration.h - -Patch 7.2.328 -Problem: has("win64") does not return 1 on 64 bit MS-Windows version. -Solution: Also check for _WIN64 besides WIN64. -Files: src/eval.c - -Patch 7.2.329 -Problem: "g_" doesn't position cursor correctly when in Visual mode and - 'selection' is "exclusive". (Ben Fritz) -Solution: Call adjust_for_sel(). -Files: src/normal.c - -Patch 7.2.330 -Problem: Tables for Unicode case operators are outdated. -Solution: Add a Vim script for generating the tables. Include tables for - Unicode 5.2. -Files: runtime/tools/README.txt, runtime/tools/unicode.vim, src/mbyte.c - -Patch 7.2.331 -Problem: Can't interrupt "echo list" for a very long list. -Solution: Call line_breakcheck() in list_join(). -Files: src/eval.c - -Patch 7.2.332 -Problem: Crash when spell correcting triggers an autocommand that reloads - the buffer. -Solution: Make a copy of the line to be modified. (Dominique Pelle) -Files: src/spell.c - -Patch 7.2.333 -Problem: Warnings from static code analysis. -Solution: Small changes to various lines. (Dominique Pelle) -Files: src/buffer.c, src/edit.c, src/ex_getln.c, src/fileio.c, - src/if_cscope.c, src/netbeans.c, src/ops.c, src/quickfix.c, - src/syntax.c, src/ui.c - -Patch 7.2.334 -Problem: Postponing keys in Netbeans interface does not work properly. -Solution: Store the key string instead of the number. Avoid an infinite - loop. (Mostly by Xavier de Gaye) -Files: src/netbeans.c, src/proto/netbeans.pro - -Patch 7.2.335 -Problem: The CTRL-] command escapes too many characters. -Solution: Use a different list of characters to be escaped. (Sergey Khorev) -Files: src/normal.c - -Patch 7.2.336 -Problem: MzScheme interface can't evaluate an expression. -Solution: Add mzeval(). (Sergey Khorev) -Files: runtime/doc/eval.txt, runtime/doc/if_mzsch.txt, - runtime/doc/usr_41.txt, src/eval.c, src/if_mzsch.c, - src/proto/eval.pro, src/proto/if_mzsch.pro, - src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, - src/testdir/Makefile, src/testdir/main.aap, src/testdir/test1.in, - src/testdir/test70.in, src/testdir/test70.ok - -Patch 7.2.337 -Problem: The :compiler command doesn't function properly when invoked in a - function. -Solution: Add "g:" before "current_compiler". (Yukihiro Nakadaira) -Files: src/ex_cmds2.c - -Patch 7.2.338 (after 7.2.300) -Problem: Part of FD_CLOEXEC change is missing. -Solution: Include source file skipped because of typo. -Files: src/ex_cmds2.c - -Patch 7.2.339 (after 7.2.269) -Problem: Part of --startuptime patch is missing. -Solution: Add check for time_fd. -Files: src/ex_cmds2.c - -Patch 7.2.340 -Problem: Gcc warning for condition that can never be true. (James Vega) -Solution: Use start_lvl instead flp->lvl. -Files: src/fold.c - -Patch 7.2.341 -Problem: Popup menu wraps to next line when double-wide character doesn't - fit. (Jiang Ma) -Solution: Display a ">" instead. (Dominique Pelle) -Files: src/screen.c - -Patch 7.2.342 -Problem: Popup menu displayed wrong in 'rightleft' mode when there are - multi-byte characters. -Solution: Adjust the column computations. (Dominique Pelle) -Files: src/popupmnu.c - -Patch 7.2.343 (after 7.2.338) -Problem: Can't compile on Win32. -Solution: Insert the missing '|'. -Files: src/ex_cmds2.c - -Patch 7.2.344 (after 7.2.343) -Problem: Can't compile on some systems -Solution: Move the #ifdef outside of the mch_open macro. (Patrick Texier) -Files: src/ex_cmds2.c - -Patch 7.2.345 -Problem: Tab line is not updated when the value of 'bt' is changed. -Solution: Call redraw_titles(). (Lech Lorens) -Files: src/option.c - -Patch 7.2.346 -Problem: Repeating a command with @: causes a mapping to be applied twice. -Solution: Do not remap characters inserted in the typeahead buffer. (Kana - Natsuno) -Files: src/ops.c - -Patch 7.2.347 -Problem: Crash when executing <expr> mapping redefines that same mapping. -Solution: Save the values used before evaluating the expression. -Files: src/getchar.c - -Patch 7.2.348 (after 7.2.330) -Problem: Unicode double-width characters are not up-to date. -Solution: Produce the double-width table like the others. -Files: runtime/tools/unicode.vim, src/mbyte.c - -Patch 7.2.349 -Problem: CTRL-W gf doesn't put the new tab in the same place as "tab split" - and "gf". (Tony Mechelynck) -Solution: Store the tab number in cmdmod.tab. -Files: src/window.c - -Patch 7.2.350 -Problem: Win32: When changing font the window may jump from the secondary - to the primary screen. (Michael Wookey) -Solution: When the screen position was negative don't correct it to zero. -Files: src/gui.c - -Patch 7.2.351 (after 7.2.347) -Problem: Can't build with some compilers. -Solution: Move the #ifdef outside of a macro. Cleanup the code. -Files: src/getchar.c - -Patch 7.2.352 (extra) -Problem: Win64: Vim doesn't work when cross-compiled with MingW libraries. -Solution: Always return TRUE for the WM_NCCREATE message. (Andy Kittner) -Files: src/gui_w48.c - -Patch 7.2.353 -Problem: No command line completion for ":profile". -Solution: Complete the subcommand and file name. -Files: src/ex_docmd.c, src/ex_cmds2.c, src/ex_getln.c, - src/proto/ex_cmds2.pro, src/vim.h - -Patch 7.2.354 -Problem: Japanese single-width double-byte characters not handled correctly. -Solution: Put 0x8e in ScreenLines[] and the second byte in ScreenLines2[]. - (partly by Kikuchan) -Files: src/screen.c - -Patch 7.2.355 -Problem: Computing the cursor column in validate_cursor_col() is wrong when - line numbers are used and 'n' is not in 'cpoptions', causing the - popup menu to be positioned wrong. -Solution: Correctly use the offset. (partly by Dominique Pelle) -Files: src/move.c - -Patch 7.2.356 -Problem: When 'foldmethod' is changed not all folds are closed as expected. -Solution: In foldUpdate() correct the start position and reset fd_flags when - w_foldinvalid is set. (Lech Lorens) -Files: src/fold.c - -Patch 7.2.357 -Problem: When changing 'fileformat' from/to "mac" and there is a CR in the - text the display is wrong. -Solution: Redraw the text when 'fileformat' is changed. (Ben Schmidt) -Files: src/option.c - -Patch 7.2.358 -Problem: Compiler warnings on VMS. (Zoltan Arpadffy) -Solution: Pass array itself instead its address. Return a value. -Files: src/gui_gtk_x11.c, src/os_unix.c - -Patch 7.2.359 -Problem: Crash when using the Netbeans join command. -Solution: Make sure the ml_flush_line() function is not used recursively. - (Xavier de Gaye) -Files: src/memline.c - -Patch 7.2.360 -Problem: Ruby on MS-Windows: can't use sockets. -Solution: Call NtInitialize() during initialization. (Ariya Mizutani) -Files: src/if_ruby.c - -Patch 7.2.361 -Problem: Ruby 1.9 is not supported. -Solution: Add Ruby 1.9 support. (Masaki Suketa) -Files: src/Makefile, src/auto/configure, src/configure.in, src/if_ruby.c - -Patch 7.2.362 (extra, after 7.2.352) -Problem: Win64: Vim doesn't work when cross-compiled with MingW libraries. -Solution: Instead of handling WM_NCCREATE, create wide text area window - class if the parent window iw side. (Sergey Khorev) -Files: src/gui_w32.c, src/gui_w48.c - -Patch 7.2.363 -Problem: Can't dynamically load Perl 5.10. -Solution: Add the function Perl_croak_xs_usage. (Sergey Khorev) -Files: src/if_perl.xs - -Patch 7.2.364 (extra) -Problem: Can't build gvimext.dll on Win 7 x64 using MinGW (John Marriott) -Solution: Check if _MSC_VER is defined. (Andy Kittner) -Files: src/GvimExt/gvimext.h - -Patch 7.2.365 (extra) -Problem: MS-Windows with MingW: "File->Save As" does not work. (John - Marriott) -Solution: Correctly fill in structure size. (Andy Kittner) -Files: src/gui_w48.c - -Patch 7.2.366 -Problem: CTRL-B doesn't go back to the first line of the buffer. -Solution: Avoid an overflow when adding MAXCOL. -Files: src/move.c - -Patch 7.2.367 -Problem: "xxd -r -p" doesn't work as documented. -Solution: Skip white space. (James Vega) -Files: src/xxd/xxd.c - -Patch 7.2.368 (after 7.2.361) -Problem: Ruby interface: Appending line doesn't work. (Michael Henry) -Solution: Reverse check for NULL line. (James Vega) -Files: src/if_ruby.c - -Patch 7.2.369 -Problem: Error message is not easy to understand. -Solution: Add quotes. (SungHyun Nam) -Files: src/ex_cmds2.c - -Patch 7.2.370 (after 7.2.356) -Problem: A redraw may cause folds to be closed. -Solution: Revert part of the previous patch. Add a test. (Lech Lorens) -Files: src/diff.c, src/fold.c, src/option.c, src/testdir/test45.in, - src/testdir/test45.ok - -Patch 7.2.371 -Problem: Build problems on Tandem NonStop. -Solution: A few changes to #ifdefs (Joachim Schmitz) -Files: src/auto/configure, src/configure.in, src/config.h.in, src/vim.h, - src/if_cscope.c, src/osdef1.h.in, src/tag.c - -Patch 7.2.372 (extra) -Problem: Cross-compiling GvimExt and xxd doesn't work. -Solution: Change the build files. (Markus Heidelberg) -Files: src/INSTALLpc.txt, src/GvimExt/Make_ming.mak, src/Make_cyg.mak, - src/Make_ming.mak, src/xxd/Make_cyg.mak - -Patch 7.2.373 -Problem: Gcc 4.5 adds more error messages. (Chris Indy) -Solution: Update default 'errorformat'. -Files: src/option.h - -Patch 7.2.374 -Problem: Ruby eval() doesn't understand Vim types. -Solution: Add the vim_to_ruby() function. (George Gensure) -Files: src/eval.c, src/if_ruby.c - -Patch 7.2.375 -Problem: ml_get errors when using ":bprevious" in a BufEnter autocmd. - (Dominique Pelle) -Solution: Clear w_valid when entering another buffer. -Files: src/buffer.c - -Patch 7.2.376 -Problem: ml_get error when using SiSU syntax. (Nathan Thomas) -Solution: If the match ends below the last line move it to the end of the - last line. -Files: src/syntax.c - -Patch 7.2.377 (extra, after 7.2.372) -Problem: Misplaced assignment. Duplicate build line for gvimext.dll. -Solution: Move setting CROSS_COMPILE to before ifneq. Remove the wrong - build line. (Markus Heidelberg) -Files: src/Make_ming.mak - -Patch 7.2.378 -Problem: C function declaration indented too much. (Rui) -Solution: Don't see a line containing { or } as a type. (Matt Wozniski) -Files: src/misc1.c - -Patch 7.2.379 -Problem: 'eventignore' is set to an invalid value inside ":doau". (Antony - Scriven) -Solution: Don't include the leading comma when the option was empty. -Files: src/fileio.c - -Patch 7.2.380 (after 7.2.363) -Problem: Perl interface builds with 5.10.1 but not with 5.10.0. -Solution: Change the #ifdefs. (Sergey Khorev) -Files: src/if_perl.xs - -Patch 7.2.381 -Problem: No completion for :behave. -Solution: Add :behave completion. Minor related fixes. (Dominique Pelle) -Files: src/ex_docmd.c, src/ex_getln.c, src/proto/ex_docmd.pro, src/vim.h - -Patch 7.2.382 -Problem: Accessing freed memory when closing the cmdline window when - 'bufhide' is set to "wipe". -Solution: Check if the buffer still exists before invoking close_buffer() - (Dominique Pelle) -Files: src/ex_getln.c - -Patch 7.2.383 -Problem: Vim doesn't build cleanly with MSVC 2010. -Solution: Change a few types. (George Reilly) -Files: src/ex_cmds2.c, src/if_python.c, src/syntax.c - -Patch 7.2.384 (extra) -Problem: Vim doesn't build properly with MSVC 2010. -Solution: Add the nmake version to the build file. (George Reilly) -Files: src/Make_mvc.mak, src/testdir/Make_dos.mak - -Patch 7.2.385 -Problem: When in the command line window dragging status line only works - for last-but-one window. (Jean Johner) -Solution: Remove the code that disallows this. -Files: src/ui.c - -Patch 7.2.386 -Problem: Focus hack for KDE 3.1 causes problems for other window managers. -Solution: Remove the hack. (forwarded by Joel Bradshaw) -Files: src/gui_gtk.c - -Patch 7.2.387 -Problem: Ruby with MingW still doesn't build all versions. -Solution: More #ifdefs for the Ruby code. (Sergey Khorev) -Files: src/if_ruby.c - -Patch 7.2.388 (extra part of 7.2.387) -Problem: Ruby with MingW still doesn't build all versions. -Solution: Different approach to build file. (Sergey Khorev) -Files: src/Make_ming.mak - -Patch 7.2.389 -Problem: synIDattr() cannot return the font. -Solution: Support the "font" argument. (Christian Brabandt) -Files: runtime/doc/eval.txt, src/eval.c, src/syntax.c - -Patch 7.2.390 -Problem: In some situations the popup menu can be displayed wrong. -Solution: Remove the popup menu if the cursor moved. (Lech Lorens) -Files: src/edit.c - -Patch 7.2.391 -Problem: Internal alloc(0) error when doing "CTRL-V $ c". (Martti Kuparinen) -Solution: Fix computations in getvcol(). (partly by Lech Lorens) -Files: src/charset.c, src/memline.c - -Patch 7.2.392 -Problem: Netbeans hangs reading from a socket at the maximum block size. -Solution: Use select() or poll(). (Xavier de Gaye) -Files: src/vim.h, src/os_unixx.h, src/if_xcmdsrv.c, src/netbeans.c - -Patch 7.2.393 -Problem: Mac: Can't build with different Xcode developer tools directory. -Solution: make "Developer" directory name configurable. (Rainer Muller) -Files: src/configure.in, src/auto/configure - -Patch 7.2.394 -Problem: .lzma and .xz files are not supported. -Solution: Recognize .lzma and .xz files so that they can be edited. -Files: runtime/plugin/gzip.vim - -Patch 7.2.395 -Problem: In help CTRL=] on g?g? escapes the ?, causing it to fail. (Tony - Mechelynck) -Solution: Don't escape ? for a help command. (Sergey Khorev) -Files: src/normal.c - -Patch 7.2.396 -Problem: Get E38 errors. (Dasn) -Solution: Set cursor to line 1 instead of 0. (Dominique Pelle) -Files: src/popupmnu.c - -Patch 7.2.397 -Problem: Redundant check for w_lines_valid. -Solution: Remove the if. (Lech Lorens) -Files: src/fold.c - -Patch 7.2.398 -Problem: When moving windows the cursor ends up in the wrong line. -Solution: Set the window width and height properly. (Lech Lorens) -Files: src/window.c - -Patch 7.2.399 (extra, after 7.2.388) -Problem: Cannot compile on MingW. -Solution: Move ifneq to separate line. (Vlad Sandrini, Dominique Pelle) -Files: src/Make_ming.mak - -Patch 7.2.400 (after 7.2.387) -Problem: Dynamic Ruby is not initialised properly for version 1.9.1. - Ruby cannot create strings from NULL. -Solution: Cleanup #ifdefs. Handle NULL like an empty string. Add - ruby_init_stack. (Sergey Khorev) -Files: src/if_ruby.c - -Patch 7.2.401 -Problem: ":e dir<Tab>" with 'wildmode' set to "list" doesn't highlight - directory names with a space. (Alexandre Provencio) -Solution: Remove the backslash before checking if the name is a directory. - (Dominique Pelle) -Files: src/ex_getln.c - -Patch 7.2.402 -Problem: This gives a #705 error: let X = function('haslocaldir') - let X = function('getcwd') -Solution: Don't give E705 when the name is found in the hashtab. (Sergey - Khorev) -Files: src/eval.c - -Patch 7.2.403 (after 7.2.400) -Problem: Compiler warning for pointer type. (Tony Mechelynck) -Solution: Move type cast to the right place. -Files: src/if_ruby.c - -Patch 7.2.404 -Problem: Pointers for composing characters are not properly initialized. -Solution: Compute the size of the pointer, not what it points to. (Yukihiro - Nakadaira) -Files: src/screen.c - -Patch 7.2.405 -Problem: When built with small features the matching text is not - highlighted for ":s/pat/repl/c". -Solution: Remove the #ifdef for IncSearch. (James Vega) -Files: src/syntax.c - -Patch 7.2.406 -Problem: Patch 7.2.119 introduces uninit mem read. (Dominique Pelle) -Solution: Only used ScreeenLinesC when ScreeenLinesUC is not zero. (Yukihiro - Nakadaira) Also clear ScreeenLinesC when allocating. -Files: src/screen.c - -Patch 7.2.407 -Problem: When using an expression in ":s" backslashes in the result are - dropped. (Sergey Goldgaber, Christian Brabandt) -Solution: Double backslashes. -Files: src/regexp.c - -Patch 7.2.408 -Problem: With ":g/the/s/foo/bar/" the '[ and '] marks can be set to a line - that was not changed. -Solution: Only set '[ and '] marks when a substitution was done. -Files: src/ex_cmds.c - -Patch 7.2.409 -Problem: Summary of number of substitutes is incorrect for ":folddo". (Jean - Johner) -Solution: Reset sub_nsubs and sub_nlines in global_exe(). -Files: src/ex_cmds.c - -Patch 7.2.410 -Problem: Highlighting directories for completion doesn't work properly. -Solution: Don't halve backslashes when not needed, expanded "~/". - (Dominique Pelle) -Files: src/ex_getln.c - -Patch 7.2.411 -Problem: When parsing 'cino' a comma isn't skipped properly. -Solution: Skip the comma. (Lech Lorens) -Files: src/misc1.c - -Patch 7.2.412 -Problem: [ or ] followed by mouse click doesn't work. -Solution: Reverse check for key being a mouse event. (Dominique Pelle) -Files: src/normal.c - -Patch 7.2.413 -Problem: Large file support is incorrect. -Solution: Add AC_SYS_LARGEFILE to configure. (James Vega) -Files: src/configure.in, src/config.h.in, src/auto/configure - -Patch 7.2.414 -Problem: CTRK-K <space> <space> does not produce 0xa0 as expected. (Tony - Mechelynck) -Solution: Remove the Unicode range 0xe000 - 0xefff from digraphs, these are - not valid characters. -Files: src/digraph.c - -Patch 7.2.415 -Problem: Win32: Can't open a remote file when starting Vim. -Solution: Don't invoke cygwin_conv_path() for URLs. (Tomoya Adachi) -Files: src/main.c - -Patch 7.2.416 -Problem: Logtalk.dict is not installed. -Solution: Add it to the install target. (Markus Heidelberg) -Files: src/Makefile - -Patch 7.2.417 -Problem: When 'shell' has an argument with a slash then 'shellpipe' is not - set properly. (Britton Kerin) -Solution: Assume there are no spaces in the path, arguments follow. -Files: src/option.c - -Patch 7.2.418 -Problem: Vim tries to set the background or foreground color in a terminal - to -1. (Graywh) Happens with ":hi Normal ctermbg=NONE". -Solution: When resetting the foreground or background color don't set the - color, let the clear screen code do that. -Files: src/syntax.c - -Patch 7.2.419 -Problem: Memory leak in Motif when clicking on "Search Vim Help". -Solution: Free string returned by XmTextGetString(). (Dominique Pelle) -Files: src/gui_motif.c - -Patch 7.2.420 -Problem: ":argedit" does not accept "++enc=utf8" as documented. (Dominique - Pelle) -Solution: Add the ARGOPT flag to ":argedit". -Files: src/ex_cmds.h - -Patch 7.2.421 -Problem: Folds are sometimes not updated properly and there is no way to - force an update. -Solution: Make "zx" and "zX" recompute folds (suggested by Christian - Brabandt) -Files: src/normal.c - -Patch 7.2.422 -Problem: May get E763 when using spell dictionaries. -Solution: Avoid utf-8 case folded character to be truncated to 8 bits and - differ from latin1. (Dominique Pelle) -Files: src/spell.c - -Patch 7.2.423 -Problem: Crash when assigning s: to variable. (Yukihiro Nakadaira) -Solution: Make ga_scripts contain pointer to scriptvar_T instead of - scriptvar_T itself. (Dominique Pelle) -Files: src/eval.c - -Patch 7.2.424 -Problem: ":colorscheme" without an argument doesn't do anything. -Solution: Make it echo the current color scheme name. (partly by Christian - Brabandt) -Files: runtime/doc/syntax.txt, src/ex_cmds.h, src/ex_docmd.c - -Patch 7.2.425 -Problem: Some compilers complain about fourth EX() argument. -Solution: Add cast to long_u. -Files: src/ex_cmds.h - -Patch 7.2.426 -Problem: Commas in 'langmap' are not always handled correctly. -Solution: Require commas to be backslash escaped. (James Vega) -Files: src/option.c - -Patch 7.2.427 -Problem: The swapfile is created using the destination of a symlink, but - recovery doesn't follow symlinks. -Solution: When recovering, resolve symlinks. (James Vega) -Files: src/memline.c - -Patch 7.2.428 -Problem: Using setqflist([]) to clear the error list doesn't work properly. -Solution: Set qf_nonevalid to TRUE when appropriate. (Christian Brabandt) -Files: src/quickfix.c - -Patch 7.2.429 -Problem: A file that exists but access is denied may result in a "new file" - message. E.g. when its directory is unreadable. -Solution: Specifically check for ENOENT to decide a file doesn't exist. - (partly by James Vega) -Files: src/fileio.c - -Patch 7.2.430 -Problem: The ++bad argument is handled wrong, resulting in an invalid - memory access. -Solution: Use the bad_char field only for the replacement character, add - bad_char_idx to store the position. (Dominique Pelle) -Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c - -Patch 7.2.431 -Problem: ":amenu" moves the cursor when in Insert mode. -Solution: Use CTRL-\ CTRL-O instead of CTRL-O. (Christian Brabandt) -Files: src/menu.c - -Patch 7.2.432 -Problem: When menus are translated they can only be found by the translated - name. That makes ":emenu" difficult to use. -Solution: Store the untranslated name and use it for completion and :emenu. - (Liang Peng (Bezetek James), Edward L. Fox) -Files: src/menu.c, src/structs.h - -Patch 7.2.433 -Problem: Can't use cscope with QuickFixCmdPre and QuickFixCmdPost. -Solution: Add cscope support for these autocmd events. (Bryan Venteicher) -Files: runtime/doc/autocmd.txt, src/if_cscope.c - -Patch 7.2.434 (after 7.2.432) -Problem: Compilation fails without the multi-lang feature. -Solution: Add #ifdefs. (John Marriott) -Files: src/menu.c - -Patch 7.2.435 (after 7.2.430) -Problem: Crash when using bad_char_idx uninitialized. (Patrick Texier) -Solution: Don't use bad_char_idx, reproduce the ++bad argument from bad_char. -Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c - -Patch 7.2.436 -Problem: Reproducible crash in syntax HL. (George Reilly, Dominique Pelle) -Solution: Make sst_stacksize an int instead of short. (Dominique Pelle) -Files: src/structs.h - -Patch 7.2.437 (after 7.2.407) -Problem: When "\\\n" appears in the expression result the \n doesn't result - in a line break. (Andy Wokula) -Solution: Also replace a \n after a backslash into \r. -Files: src/regexp.c - -Patch 7.2.438 (after 7.2.427) -Problem: "vim -r" crashes. -Solution: Don't use NULL pointer argument. -Files: src/memline.c - -Patch 7.2.439 -Problem: Invalid memory access when doing thesaurus completion and - 'infercase' is set. -Solution: Use the minimal length of completed word and replacement. - (Dominique Pelle) -Files: src/edit.c - -Patch 7.2.440 -Problem: Calling a function through a funcref, where the function deletes - the funcref, leads to an invalid memory access. -Solution: Make a copy of the function name. (Lech Lorens) -Files: src/eval.c, src/testdir/test34.in, src/testdir/test34.ok - -Patch 7.2.441 -Problem: When using ":earlier" undo information may be wrong. -Solution: When changing alternate branches also adjust b_u_oldhead. -Files: src/undo.c - -Patch 7.2.442 (after 7.2.201) -Problem: Copy/paste with OpenOffice doesn't work. -Solution: Do not offer the HTML target when it is not supported. (James - Vega) -Files: src/gui_gtk_x11.c, src/option.c, src/proto/gui_gtk_x11.pro - -Patch 7.2.443 -Problem: Using taglist() on a tag file with duplicate fields generates an - internal error. (Peter Odding) -Solution: Check for duplicate field names. -Files: src/eval.c, src/proto/eval.pro, src/tag.c - -Patch 7.2.444 (after 7.2.442) -Problem: Can't build with GTK 1, gtk_selection_clear_targets() is not - available. (Patrick Texier) -Solution: Don't change the targets for GTK 1, set them once. -Files: src/gui_gtk_x11.c, src/option.c - -Patch 7.2.445 -Problem: Crash when using undo/redo and a FileChangedRO autocmd event that - reloads the buffer. (Dominique Pelle) -Solution: Do not allow autocommands while performing and undo or redo. -Files: src/misc1.c, src/undo.c - -Patch 7.2.446 -Problem: Crash in GUI when closing the last window in a tabpage. (ryo7000) -Solution: Remove the tabpage from the list before freeing the window. -Files: src/window.c - -When writing a file, switching tab pages and selecting a word the file write -message would be displayed again. This happened in Insert mode and with -'cmdheight' set to 2. - -When using ":lang" to set a locale that uses a comma for decimal separator and -using GTK floating point numbers stop working. Use gtk_disable_setlocale(). -(James Vega) - -"g8" didn't produce the right value on a NUL. (Dominique Pelle) - -Use BASEMODLIBS instead of MODLIBS for Python configuration to pick up the -right compiler flags. (Michael Bienia) - -Window title was not updated after dropping a file on Vim. (Hari G) - -synstack() did not return anything when just past the end of the line. Useful -when using the cursor position in Insert mode. - -When entering a digraph or special character after a line that fits the window -the '?' or '^' on the next line is not redrawn. (Ian Kelling) - -Composing characters in |:s| substitute text were dropped. - -|exists()| was causing an autoload script to be loaded. - -Filter out -pthread for cproto. - -Make CTRL-L in command line mode respect 'ignorecase' and 'smartcase'. (Martin -Toft) - -Spell menu moved the cursor, causing Copy not to work. Spell replacement -didn't work in 'compatible' mode. - -Various small fixes from Dominique Pelle. - -Fix that :mksession may generate "2argu" even though there is no such -argument. (Peter Odding) - -Fixes for time in clipboard request. Also fix ownership. (David Fries) - -Fixed completion of file names with '%' and '*'. - -Fixed MSVC makefile use of /Wp64 flag. - -Correct use of long instead of off_t for file size. (James Vega) - -Add a few #ifdefs to exclude functions that are not used. (Dominique Pelle) - -Remove old and unused method to allocate memory for undo. - -Fix definition of UINT_PTR for 64 bit systems. - -Some versions of Ruby redefine rb_str_new2 to rb_str_new_cstr. - -Window title not updated after file dropped. - -Fixed crash for ":find" completion, might also happen in other path expansion -usage. - -When 'searchhl' causes a hang make CTRL-C disable 'searchhl'. - -When resetting both 'title' and 'icon' the title would be set after a shell -command. - -Reset 'title' and 'icon' in test47 to avoid the xterm title getting messed up. - -Fix for compiler warning about function prototype in pty.c. - -Added 'window' to the options window. - -Fixed: errors for allocating zero bytes when profiling an empty function. - -Remove -arch flag from build flags for Perl. (Bjorn Wickler) - -Fix 'autochdir' not showing up in :options window. (Dominique Pelle) - -Fix: test 69 didn't work on MS-Windows. Test 72 beeped too often. - -Avoid illegal memory access in spell suggestion. (Dominique Pelle) -Fix: crash in spell checking with a 0x300 character. - -Avoid that running tests changes viminfo. - -Fix: changing case of a character removed combining characters. -Fixed: CTRL-R in Insert mode doesn't insert composing characters. - -Added the WOW64 flag to OLE registration, for 64 bit Windows systems. - -Various fixes for coverity warnings. - -Fix compile warnings, esp. for 64-bit systems. (Mike Williams) - -Fix: :redir to a dictionary that is changed before ":redir END" causes a -memory access error. - -Fix: terminal title not properly restored when there are multi-byte -characters. (partly by James Vega) - -Set 'wrapscan' when checking the .po files. (Mike Williams) - -Win32: Put quotes around the gvim.exe path for the "Open with" menu entry. - -On MS-Windows sometimes files with number 4913 or higher are left behind. - -'suffixesadd' was used for finding tags file. - -Removed unused code. - -Improved positioning of combining characters in GTK. - -Made test 11 pass when there is no gzip program. (John Beckett) - -Changed readfile() to ignore byte order marks, unless in binary mode. - -On MS-Windows completion of shell commands didn't work. - -An unprintable multi-byte character at the start of the screen line caused the -following text to be drawn at the wrong position. - -Got ml_get errors when using undo with 'virtualedit'. - -Call gui_mch_update() before triggering GuiEnter autocmd. (Ron Aaron) - -Unix "make install" installed a few Amiga .info files. - -Disallow setting 'ambiwidth' to "double" when 'listchars' or 'fillchars' -contains a character that would become double width. - -Set 'wrapscan' when checking the .po files. (Mike Williams) - -Fixed: using expression in command line may cause a crash. - -Avoid warnings from the clang compiler. (Dominique Pelle) - -Fix: Include wchar.h in charset.c for towupper(). - -Fixed: Using ":read file" in an empty buffer when 'compatible' is set caused -an error. Was caused by patch 7.2.132. - -Make the references to features in the help more consistent. (Sylvain Hitier) - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/vi_diff.txt b/share/vim/vim73/doc/vi_diff.txt deleted file mode 100644 index 5d6706b5..00000000 --- a/share/vim/vim73/doc/vi_diff.txt +++ /dev/null @@ -1,1009 +0,0 @@ -*vi_diff.txt* For Vim version 7.3. Last change: 2010 Jul 20 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Differences between Vim and Vi *vi-differences* - -Throughout the help files differences between Vim and Vi/Ex are given in -curly braces, like "{not in Vi}". This file only lists what has not been -mentioned in other files and gives an overview. - -Vim is mostly POSIX 1003.2-1 compliant. The only command known to be missing -is ":open". There are probably a lot of small differences (either because Vim -is missing something or because Posix is beside the mark). - -1. Simulated command |simulated-command| -2. Missing options |missing-options| -3. Limits |limits| -4. The most interesting additions |vim-additions| -5. Other vim features |other-features| -6. Command-line arguments |cmdline-arguments| -7. POSIX compliance |posix-compliance| - -============================================================================== -1. Simulated command *simulated-command* - -This command is in Vi, but Vim only simulates it: - - *:o* *:op* *:open* -:[range]o[pen] Works like |:visual|: end Ex mode. - {Vi: start editing in open mode} - -:[range]o[pen] /pattern/ As above, additionally move the cursor to the - column where "pattern" matches in the cursor - line. - -Vim does not support open mode, since it's not really useful. For those -situations where ":open" would start open mode Vim will leave Ex mode, which -allows executing the same commands, but updates the whole screen instead of -only one line. - -============================================================================== -2. Missing options *missing-options* - -These options are in the Unix Vi, but not in Vim. If you try to set one of -them you won't get an error message, but the value is not used and cannot be -printed. - -autoprint (ap) boolean (default on) *'autoprint'* *'ap'* -beautify (bf) boolean (default off) *'beautify'* *'bf'* -flash (fl) boolean (default ??) *'flash'* *'fl'* -graphic (gr) boolean (default off) *'graphic'* *'gr'* -hardtabs (ht) number (default 8) *'hardtabs'* *'ht'* - number of spaces that a <Tab> moves on the display -mesg boolean (default on) *'mesg'* -novice boolean (default off) *'novice'* -open boolean (default on) *'open'* -optimize (op) boolean (default off) *'optimize'* *'op'* -redraw boolean (default off) *'redraw'* -slowopen (slow) boolean (default off) *'slowopen'* *'slow'* -sourceany boolean (default off) *'sourceany'* -w300 number (default 23) *'w300'* -w1200 number (default 23) *'w1200'* -w9600 number (default 23) *'w9600'* - -============================================================================== -3. Limits *limits* - -Vim has only a few limits for the files that can be edited {Vi: can not handle -<Nul> characters and characters above 128, has limited line length, many other -limits}. - *E340* -Maximum line length On machines with 16-bit ints (Amiga and MS-DOS real - mode): 32767, otherwise 2147483647 characters. - Longer lines are split. -Maximum number of lines 2147483647 lines. -Maximum file size 2147483647 bytes (2 Gbyte) when a long integer is - 32 bits. Much more for 64 bit longs. Also limited - by available disk space for the |swap-file|. - *E75* -Length of a file path Unix and Win32: 1024 characters, otherwise 256 - characters (or as much as the system supports). -Length of an expanded string option - Unix and Win32: 1024 characters, otherwise 256 - characters -Maximum display width Unix and Win32: 1024 characters, otherwise 255 - characters -Maximum lhs of a mapping 50 characters. -Number of different highlighting types: over 30000 -Range of a Number variable: -2147483648 to 2147483647 (more on 64 bit - systems) - -Information for undo and text in registers is kept in memory, thus when making -(big) changes the amount of (virtual) memory available limits the number of -undo levels and the text that can be kept in registers. Other things are also -kept in memory: Command-line history, error messages for Quickfix mode, etc. - -Memory usage limits -------------------- - -The option 'maxmem' ('mm') is used to set the maximum memory used for one -buffer (in kilobytes). 'maxmemtot' is used to set the maximum memory used for -all buffers (in kilobytes). The defaults depend on the system used. For the -Amiga and MS-DOS, 'maxmemtot' is set depending on the amount of memory -available. -These are not hard limits, but tell Vim when to move text into a swap file. -If you don't like Vim to swap to a file, set 'maxmem' and 'maxmemtot' to a -very large value. The swap file will then only be used for recovery. If you -don't want a swap file at all, set 'updatecount' to 0, or use the "-n" -argument when starting Vim. - -============================================================================== -4. The most interesting additions *vim-additions* - -Vi compatibility. |'compatible'| - Although Vim is 99% Vi compatible, some things in Vi can be - considered to be a bug, or at least need improvement. But still, Vim - starts in a mode which behaves like the "real" Vi as much as possible. - To make Vim behave a little bit better, try resetting the 'compatible' - option: - :set nocompatible - Or start Vim with the "-N" argument: - vim -N - Vim starts with 'nocompatible' automatically if you have a .vimrc - file. See |startup|. - The 'cpoptions' option can be used to set Vi compatibility on/off for - a number of specific items. - -Support for different systems. - Vim can be used on: - - All Unix systems (it works on all systems it was tested on, although - the GUI and Perl interface may not work everywhere). - - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...). - - MS-DOS in real-mode (no additional drivers required). - - In protected mode on Windows 3.1 and MS-DOS (DPMI driver required). - - Windows 95 and Windows NT, with support for long file names. - - OS/2 (needs emx.dll) - - Atari MiNT - - VMS - - BeOS - - Macintosh - - Risc OS - - IBM OS/390 - Note that on some systems features need to be disabled to reduce - resource usage, esp. on MS-DOS. For some outdated systems you need to - use an older Vim version. - -Multi level undo. |undo| - 'u' goes backward in time, 'CTRL-R' goes forward again. Set option - 'undolevels' to the number of changes to be remembered (default 1000). - Set 'undolevels' to 0 for a vi-compatible one level undo. Set it to - -1 for no undo at all. - When all changes in a buffer have been undone, the buffer is not - considered changed anymore. You can exit it with :q, without <!>. - When undoing a few changes and then making a new change Vim will - create a branch in the undo tree. This means you can go back to any - state of the text, there is no risk of a change causing text to be - lost forever. |undo-tree| - -Graphical User Interface (GUI). |gui| - Included support for GUI: menu's, mouse, scrollbars, etc. You can - define your own menus. Better support for CTRL/SHIFT/ALT keys in - combination with special keys and mouse. Supported for various - platforms, such as X11 (with Motif and Athena interfaces), GTK, Win32 - (Windows 95 and later), BeOS, Amiga and Macintosh. - -Multiple windows and buffers. |windows.txt| - Vim can split the screen into several windows, each editing a - different buffer or the same buffer at a different location. Buffers - can still be loaded (and changed) but not displayed in a window. This - is called a hidden buffer. Many commands and options have been added - for this facility. - Vim can also use multiple tab pages, each with one or more windows. A - line with tab labels can be used to quickly switch between these pages. - |tab-page| - -Syntax highlighting. |:syntax| - Vim can highlight keywords, patterns and other things. This is - defined by a number of |:syntax| commands, and can be made to - highlight most languages and file types. A number of files are - included for highlighting the most common languages, like C, C++, - Java, Pascal, Makefiles, shell scripts, etc. The colors used for - highlighting can be defined for ordinary terminals, color terminals - and the GUI with the |:highlight| command. A convenient way to do - this is using a |:colorscheme| command. - The highlighted text can be exported as HTML. |convert-to-HTML| - Other items that can be highlighted are matches with the search string - |'hlsearch'|, matching parens |matchparen| and the cursor line and - column |'cursorline'| |'cursorcolumn'|. - -Spell checking. |spell| - When the 'spell' option is set Vim will highlight spelling mistakes. - About 40 languages are currently supported, selected with the - 'spelllang' option. In source code only comments and strings are - checked for spelling. - -Folding. |folding| - A range of lines can be shown as one "folded" line. This allows - overviewing a file and moving blocks of text around quickly. - Folds can be created manually, from the syntax of the file, by indent, - etc. - -Diff mode. |diff| - Vim can show two versions of a file with the differences highlighted. - Parts of the text that are equal are folded away. Commands can be - used to move text from one version to the other. - -Plugins. |add-plugin| - The functionality can be extended by dropping a plugin file in the - right directory. That's an easy way to start using Vim scripts - written by others. Plugins can be for all kind of files, or - specifically for a filetype. - -Repeat a series of commands. |q| - "q{c}" starts recording typed characters into named register {c}. - A subsequent "q" stops recording. The register can then be executed - with the "@{c}" command. This is very useful to repeat a complex - action. - -Flexible insert mode. |ins-special-special| - The arrow keys can be used in insert mode to move around in the file. - This breaks the insert in two parts as far as undo and redo is - concerned. - - CTRL-O can be used to execute a single Normal mode command. This is - almost the same as hitting <Esc>, typing the command and doing |a|. - -Visual mode. |Visual-mode| - Visual mode can be used to first highlight a piece of text and then - give a command to do something with it. This is an (easy to use) - alternative to first giving the operator and then moving to the end of - the text to be operated upon. - |v| and |V| are used to start Visual mode. |v| works on characters - and |V| on lines. Move the cursor to extend the Visual area. It is - shown highlighted on the screen. By typing "o" the other end of the - Visual area can be moved. The Visual area can be affected by an - operator: - d delete - c change - y yank - > or < insert or delete indent - ! filter through external program - = filter through indent - : start |:| command for the Visual lines. - gq format text to 'textwidth' columns - J join lines - ~ swap case - u make lowercase - U make uppercase - -Block operators. |visual-block| - With Visual mode a rectangular block of text can be selected. Start - Visual mode with CTRL-V. The block can be deleted ("d"), yanked ("y") - or its case can be changed ("~", "u" and "U"). A deleted or yanked - block can be put into the text with the "p" and "P" commands. - -Help system. |:help| - Help is displayed in a window. The usual commands can be used to - move around, search for a string, etc. Tags can be used to jump - around in the help files, just like hypertext links. The |:help| - command takes an argument to quickly jump to the info on a subject. - <F1> is the quick access to the help system. The name of the help - index file can be set with the 'helpfile' option. - -Command-line editing and history. |cmdline-editing| - You can insert or delete at any place in the command-line using the - cursor keys. The right/left cursor keys can be used to move - forward/backward one character. The shifted right/left cursor keys - can be used to move forward/backward one word. CTRL-B/CTRL-E can be - used to go to the begin/end of the command-line. - |cmdline-history| - The command-lines are remembered. The up/down cursor keys can be used - to recall previous command-lines. The 'history' option can be set to - the number of lines that will be remembered. There is a separate - history for commands and for search patterns. - -Command-line completion. |cmdline-completion| - While entering a command-line (on the bottom line of the screen) - <Tab> can be typed to complete - what example ~ - - command :e<Tab> - - tag :ta scr<Tab> - - option :set sc<Tab> - - option value :set hf=<Tab> - - file name :e ve<Tab> - - etc. - - If there are multiple matches, CTRL-N (next) and CTRL-P (previous) - will walk through the matches. <Tab> works like CTRL-N, but wraps - around to the first match. - - The 'wildchar' option can be set to the character for command-line - completion, <Tab> is the default. CTRL-D can be typed after an - (incomplete) wildcard; all matches will be listed. CTRL-A will insert - all matches. CTRL-L will insert the longest common part of the - matches. - -Insert-mode completion. |ins-completion| - In Insert mode the CTRL-N and CTRL-P keys can be used to complete a - word that appears elsewhere. |i_CTRL-N| - With CTRL-X another mode is entered, through which completion can be - done for: - |i_CTRL-X_CTRL-F| file names - |i_CTRL-X_CTRL-K| words from 'dictionary' files - |i_CTRL-X_CTRL-T| words from 'thesaurus' files - |i_CTRL-X_CTRL-I| words from included files - |i_CTRL-X_CTRL-L| whole lines - |i_CTRL-X_CTRL-]| words from the tags file - |i_CTRL-X_CTRL-D| definitions or macros - |i_CTRL-X_CTRL-O| Omni completion: clever completion - specifically for a file type - etc. - -Long line support. |'wrap'| |'linebreak'| - If the 'wrap' option is off, long lines will not wrap and only part - of them will be shown. When the cursor is moved to a part that is not - shown, the screen will scroll horizontally. The minimum number of - columns to scroll can be set with the 'sidescroll' option. The |zh| - and |zl| commands can be used to scroll sideways. - Alternatively, long lines are broken in between words when the - 'linebreak' option is set. This allows editing a single-line - paragraph conveniently (e.g. when the text is later read into a DTP - program). Move the cursor up/down with the |gk| and |gj| commands. - -Text formatting. |formatting| - The 'textwidth' option can be used to automatically limit the line - length. This supplements the 'wrapmargin' option of Vi, which was not - very useful. The |gq| operator can be used to format a piece of text - (for example, |gqap| formats the current paragraph). Commands for - text alignment: |:center|, |:left| and |:right|. - -Extended search patterns. |pattern| - There are many extra items to match various text items. Examples: - A "\n" can be used in a search pattern to match a line break. - "x\{2,4}" matches "x" 2 to 4 times. - "\s" matches a white space character. - -Directory, remote and archive browsing. |netrw| - Vim can browse the file system. Simply edit a directory. Move around - in the list with the usual commands and press <Enter> to go to the - directory or file under the cursor. - This also works for remote files over ftp, http, ssh, etc. - Zip and tar archives can also be browsed. |tar| |zip| - -Edit-compile-edit speedup. |quickfix| - The |:make| command can be used to run the compilation and jump to the - first error. A file with compiler error messages is interpreted. Vim - jumps to the first error. - - Each line in the error file is scanned for the name of a file, line - number and error message. The 'errorformat' option can be set to a - list of scanf-like strings to handle output from many compilers. - - The |:cn| command can be used to jump to the next error. - |:cl| lists all the error messages. Other commands are available. - The 'makeef' option has the name of the file with error messages. - The 'makeprg' option contains the name of the program to be executed - with the |:make| command. - The 'shellpipe' option contains the string to be used to put the - output of the compiler into the errorfile. - -Finding matches in files. |:vimgrep| - Vim can search for a pattern in multiple files. This uses the - advanced Vim regexp pattern, works on all systems and also works to - search in compressed files. - -Improved indenting for programs. |'cindent'| - When the 'cindent' option is on the indent of each line is - automatically adjusted. C syntax is mostly recognized. The indent - for various styles can be set with 'cinoptions'. The keys to trigger - indenting can be set with 'cinkeys'. - - Comments can be automatically formatted. The 'comments' option can be - set to the characters that start and end a comment. This works best - for C code, but also works for e-mail (">" at start of the line) and - other types of text. The |=| operator can be used to re-indent - lines. - - For many other languages an indent plugin is present to support - automatic indenting. |30.3| - -Searching for words in included files. |include-search| - The |[i| command can be used to search for a match of the word under - the cursor in the current and included files. The 'include' option - can be set to a pattern that describes a command to include a file - (the default is for C programs). - The |[I| command lists all matches, the |[_CTRL-I| command jumps to - a match. - The |[d|, |[D| and |[_CTRL-D| commands do the same, but only for - lines where the pattern given with the 'define' option matches. - -Automatic commands. |autocommand| - Commands can be automatically executed when reading a file, writing a - file, jumping to another buffer, etc., depending on the file name. - This is useful to set options and mappings for C programs, - documentation, plain text, e-mail, etc. This also makes it possible - to edit compressed files. - -Scripts and Expressions. |expression| - Commands have been added to form up a powerful script language. - |:if| Conditional execution, which can be used for example - to set options depending on the value of $TERM. - |:while| Repeat a number of commands. - |:for| Loop over a list. - |:echo| Print the result of an expression. - |:let| Assign a value to an internal variable, option, etc. - Variable types are Number, String, List and Dictionary. - |:execute| Execute a command formed by an expression. - |:try| Catch exceptions. - etc., etc. See |eval|. - Debugging and profiling are supported. |debug-scripts| |profile| - If this is not enough, an interface is provided to |Python|, |Ruby|, - |Tcl|, |Lua|, |Perl| and |MzScheme|. - -Viminfo. |viminfo-file| - The command-line history, marks and registers can be stored in a file - that is read on startup. This can be used to repeat a search command - or command-line command after exiting and restarting Vim. It is also - possible to jump right back to where the last edit stopped with |'0|. - The 'viminfo' option can be set to select which items to store in the - .viminfo file. This is off by default. - -Printing. |printing| - The |:hardcopy| command sends text to the printer. This can include - syntax highlighting. - -Mouse support. |mouse-using| - The mouse is supported in the GUI version, in an xterm for Unix, for - BSDs with sysmouse, for Linux with gpm, for MS-DOS, and Win32. It - can be used to position the cursor, select the visual area, paste a - register, etc. - -Usage of key names. |<>| |key-notation| - Special keys now all have a name like <Up>, <End>, etc. - This name can be used in mappings, to make it easy to edit them. - -Editing binary files. |edit-binary| - Vim can edit binary files. You can change a few characters in an - executable file, without corrupting it. Vim doesn't remove NUL - characters (they are represented as <NL> internally). - |-b| command-line argument to start editing a binary file - |'binary'| Option set by |-b|. Prevents adding an <EOL> for the - last line in the file. - -Multi-language support. |multi-lang| - Files in double-byte or multi-byte encodings can be edited. There is - UTF-8 support to be able to edit various languages at the same time, - without switching fonts. |UTF-8| - Messages and menus are available in different languages. - -Move cursor beyond lines. - When the 'virtualedit' option is set the cursor can move all over the - screen, also where there is no text. This is useful to edit tables - and figures easily. - -============================================================================== -5. Other vim features *other-features* - -A random collection of nice extra features. - - -When Vim is started with "-s scriptfile", the characters read from -"scriptfile" are treated as if you typed them. If end of file is reached -before the editor exits, further characters are read from the console. - -The "-w" option can be used to record all typed characters in a script file. -This file can then be used to redo the editing, possibly on another file or -after changing some commands in the script file. - -The "-o" option opens a window for each argument. "-o4" opens four windows. - -Vi requires several termcap entries to be able to work full-screen. Vim only -requires the "cm" entry (cursor motion). - - -In command mode: - -When the 'showcmd' option is set, the command characters are shown in the last -line of the screen. They are removed when the command is finished. - -If the 'ruler' option is set, the current cursor position is shown in the -last line of the screen. - -"U" still works after having moved off the last changed line and after "u". - -Characters with the 8th bit set are displayed. The characters between '~' and -0xa0 are displayed as "~?", "~@", "~A", etc., unless they are included in the -'isprint' option. - -"][" goes to the next ending of a C function ('}' in column 1). -"[]" goes to the previous ending of a C function ('}' in column 1). - -"]f", "[f" and "gf" start editing the file whose name is under the cursor. -CTRL-W f splits the window and starts editing the file whose name is under -the cursor. - -"*" searches forward for the identifier under the cursor, "#" backward. -"K" runs the program defined by the 'keywordprg' option, with the identifier -under the cursor as argument. - -"%" can be preceded with a count. The cursor jumps to the line that -percentage down in the file. The normal "%" function to jump to the matching -brace skips braces inside quotes. - -With the CTRL-] command, the cursor may be in the middle of the identifier. - -The used tags are remembered. Commands that can be used with the tag stack -are CTRL-T, ":pop" and ":tag". ":tags" lists the tag stack. - -The 'tags' option can be set to a list of tag file names. Thus multiple -tag files can be used. For file names that start with "./", the "./" is -replaced with the path of the current file. This makes it possible to use a -tags file in the same directory as the file being edited. - -Previously used file names are remembered in the alternate file name list. -CTRL-^ accepts a count, which is an index in this list. -":files" command shows the list of alternate file names. -"#<N>" is replaced with the <N>th alternate file name in the list. -"#<" is replaced with the current file name without extension. - -Search patterns have more features. The <NL> character is seen as part of the -search pattern and the substitute string of ":s". Vi sees it as the end of -the command. - -Searches can put the cursor on the end of a match and may include a character -offset. - -Count added to "~", ":next", ":Next", "n" and "N". - -The command ":next!" with 'autowrite' set does not write the file. In vi the -file was written, but this is considered to be a bug, because one does not -expect it and the file is not written with ":rewind!". - -In Vi when entering a <CR> in replace mode deletes a character only when 'ai' -is set (but does not show it until you hit <Esc>). Vim always deletes a -character (and shows it immediately). - -Added :wnext command. Same as ":write" followed by ":next". - -The ":w!" command always writes, also when the file is write protected. In Vi -you would have to do ":!chmod +w %" and ":set noro". - -When 'tildeop' has been set, "~" is an operator (must be followed by a -movement command). - -With the "J" (join) command you can reset the 'joinspaces' option to have only -one space after a period (Vi inserts two spaces). - -"cw" can be used to change white space formed by several characters (Vi is -confusing: "cw" only changes one space, while "dw" deletes all white space). - -"o" and "O" accept a count for repeating the insert (Vi clears a part of -display). - -Flags after Ex commands not supported (no plans to include it). - -On non-UNIX systems ":cd" command shows current directory instead of going to -the home directory (there isn't one). ":pwd" prints the current directory on -all systems. - -After a ":cd" command the file names (in the argument list, opened files) -still point to the same files. In Vi ":cd" is not allowed in a changed file; -otherwise the meaning of file names change. - -":source!" command reads Vi commands from a file. - -":mkexrc" command writes current modified options and mappings to a ".exrc" -file. ":mkvimrc" writes to a ".vimrc" file. - -No check for "tail recursion" with mappings. This allows things like -":map! foo ^]foo". - -When a mapping starts with number, vi loses the count typed before it (e.g. -when using the mapping ":map g 4G" the command "7g" goes to line 4). This is -considered a vi bug. Vim concatenates the counts (in the example it becomes -"74G"), as most people would expect. - -The :put! command inserts the contents of a register above the current line. - -The "p" and "P" commands of vi cannot be repeated with "." when the putted -text is less than a line. In Vim they can always be repeated. - -":noremap" command can be used to enter a mapping that will not be remapped. -This is useful to exchange the meaning of two keys. ":cmap", ":cunmap" and -":cnoremap" can be used for mapping in command-line editing only. ":imap", -":iunmap" and ":inoremap" can be used for mapping in insert mode only. -Similar commands exist for abbreviations: ":noreabbrev", ":iabbrev" -":cabbrev", ":iunabbrev", ":cunabbrev", ":inoreabbrev", ":cnoreabbrev". - -In Vi the command ":map foo bar" would remove a previous mapping -":map bug foo". This is considered a bug, so it is not included in Vim. -":unmap! foo" does remove ":map! bug foo", because unmapping would be very -difficult otherwise (this is vi compatible). - -The ':' register contains the last command-line. -The '%' register contains the current file name. -The '.' register contains the last inserted text. - -":dis" command shows the contents of the yank registers. - -CTRL-O/CTRL-I can be used to jump to older/newer positions. These are the -same positions as used with the '' command, but may be in another file. The -":jumps" command lists the older positions. - -If the 'shiftround' option is set, an indent is rounded to a multiple of -'shiftwidth' with ">" and "<" commands. - -The 'scrolljump' option can be set to the minimum number of lines to scroll -when the cursor gets off the screen. Use this when scrolling is slow. - -The 'scrolloff' option can be set to the minimum number of lines to keep -above and below the cursor. This gives some context to where you are -editing. When set to a large number the cursor line is always in the middle -of the window. - -Uppercase marks can be used to jump between files. The ":marks" command lists -all currently set marks. The commands "']" and "`]" jump to the end of the -previous operator or end of the text inserted with the put command. "'[" and -"`[" do jump to the start. - -The 'shelltype' option can be set to reflect the type of shell used on the -Amiga. - -The 'highlight' option can be set for the highlight mode to be used for -several commands. - -The CTRL-A (add) and CTRL-X (subtract) commands are new. The count to the -command (default 1) is added to/subtracted from the number at or after the -cursor. That number may be decimal, octal (starts with a '0') or hexadecimal -(starts with '0x'). Very useful in macros. - -With the :set command the prefix "inv" can be used to invert boolean options. - -In both Vi and Vim you can create a line break with the ":substitute" command -by using a CTRL-M. For Vi this means you cannot insert a real CTRL-M in the -text. With Vim you can put a real CTRL-M in the text by preceding it with a -CTRL-V. - - -In Insert mode: - -If the 'revins' option is set, insert happens backwards. This is for typing -Hebrew. When inserting normal characters the cursor will not be shifted and -the text moves rightwards. Backspace, CTRL-W and CTRL-U will also work in -the opposite direction. CTRL-B toggles the 'revins' option. In replace mode -'revins' has no effect. Only when enabled at compile time. - -The backspace key can be used just like CTRL-D to remove auto-indents. - -You can backspace, CTRL-U and CTRL-W over line breaks if the 'backspace' (bs) -option includes "eol". You can backspace over the start of insert if the -'backspace' option includes "start". - -When the 'paste' option is set, a few option are reset and mapping in insert -mode and abbreviation are disabled. This allows for pasting text in windowing -systems without unexpected results. When the 'paste' option is reset, the old -option values are restored. - -CTRL-T/CTRL-D always insert/delete an indent in the current line, no matter -what column the cursor is in. - -CTRL-@ (insert previously inserted text) works always (Vi: only when typed as -first character). - -CTRL-A works like CTRL-@ but does not leave insert mode. - -CTRL-R {0-9a-z..} can be used to insert the contents of a register. - -When the 'smartindent' option is set, C programs will be better auto-indented. -With 'cindent' even more. - -CTRL-Y and CTRL-E can be used to copy a character from above/below the -current cursor position. - -After CTRL-V you can enter a three digit decimal number. This byte value is -inserted in the text as a single character. Useful for international -characters that are not on your keyboard. - -When the 'expandtab' (et) option is set, a <Tab> is expanded to the -appropriate number of spaces. - -The window always reflects the contents of the buffer (Vi does not do this -when changing text and in some other cases). - -If Vim is compiled with DIGRAPHS defined, digraphs are supported. A set of -normal digraphs is included. They are shown with the ":digraph" command. -More can be added with ":digraph {char1}{char2} {number}". A digraph is -entered with "CTRL-K {char1} {char2}" or "{char1} BS {char2}" (only when -'digraph' option is set). - -When repeating an insert, e.g. "10atest <Esc>" vi would only handle wrapmargin -for the first insert. Vim does it for all. - -A count to the "i" or "a" command is used for all the text. Vi uses the count -only for one line. "3iabc<NL>def<Esc>" would insert "abcabcabc<NL>def" in Vi -but "abc<NL>defabc<NL>defabc<NL>def" in Vim. - - -In Command-line mode: - -<Esc> terminates the command-line without executing it. In vi the command -line would be executed, which is not what most people expect (hitting <Esc> -should always get you back to command mode). To avoid problems with some -obscure macros, an <Esc> in a macro will execute the command. If you want a -typed <Esc> to execute the command like vi does you can fix this with - ":cmap ^V<Esc> ^V<CR>" - -General: - -The 'ttimeout' option is like 'timeout', but only works for cursor and -function keys, not for ordinary mapped characters. The 'timeoutlen' option -gives the number of milliseconds that is waited for. If the 'esckeys' option -is not set, cursor and function keys that start with <Esc> are not recognized -in insert mode. - -There is an option for each terminal string. Can be used when termcap is not -supported or to change individual strings. - -The 'fileformat' option can be set to select the <EOL>: "dos" <CR><NL>, "unix" -<NL> or "mac" <CR>. -When the 'fileformats' option is not empty, Vim tries to detect the type of -<EOL> automatically. The 'fileformat' option is set accordingly. - -On systems that have no job control (older Unix systems and non-Unix systems) -the CTRL-Z, ":stop" or ":suspend" command starts a new shell. - -If Vim is started on the Amiga without an interactive window for output, a -window is opened (and :sh still works). You can give a device to use for -editing with the |-d| argument, e.g. "-d con:20/20/600/150". - -The 'columns' and 'lines' options are used to set or get the width and height -of the display. - -Option settings are read from the first and last few lines of the file. -Option 'modelines' determines how many lines are tried (default is 5). Note -that this is different from the Vi versions that can execute any Ex command -in a modeline (a major security problem). |trojan-horse| - -If the 'insertmode' option is set (e.g. in .exrc), Vim starts in insert mode. -And it comes back there, when pressing <Esc>. - -Undo information is kept in memory. Available memory limits the number and -size of change that can be undone. This may be a problem with MS-DOS, is -hardly a problem on the Amiga and almost never with Unix and Win32. - -If the 'backup' or 'writebackup' option is set: Before a file is overwritten, -a backup file (.bak) is made. If the "backup" option is set it is left -behind. - -Vim creates a file ending in ".swp" to store parts of the file that have been -changed or that do not fit in memory. This file can be used to recover from -an aborted editing session with "vim -r file". Using the swap file can be -switched off by setting the 'updatecount' option to 0 or starting Vim with -the "-n" option. Use the 'directory' option for placing the .swp file -somewhere else. - -Vim is able to work correctly on filesystems with 8.3 file names, also when -using messydos or crossdos filesystems on the Amiga, or any 8.3 mounted -filesystem under Unix. See |'shortname'|. - -Error messages are shown at least one second (Vi overwrites error messages). - -If Vim gives the |hit-enter| prompt, you can hit any key. Characters other -than <CR>, <NL> and <Space> are interpreted as the (start of) a command. (Vi -only accepts a command starting with ':'). - -The contents of the numbered and unnamed registers is remembered when -changing files. - -The "No lines in buffer" message is a normal message instead of an error -message, since that may cause a mapping to be aborted. - -The AUX: device of the Amiga is supported. - -============================================================================== -6. Command-line arguments *cmdline-arguments* - -Different versions of Vi have different command-line arguments. This can be -confusing. To help you, this section gives an overview of the differences. - -Five variants of Vi will be considered here: - Elvis Elvis version 2.1b - Nvi Nvi version 1.79 - Posix Posix 1003.2 - Vi Vi version 3.7 (for Sun 4.1.x) - Vile Vile version 7.4 (incomplete) - Vim Vim version 5.2 - -Only Vim is able to accept options in between and after the file names. - -+{command} Elvis, Nvi, Posix, Vi, Vim: Same as "-c {command}". - -- Nvi, Posix, Vi: Run Ex in batch mode. - Vim: Read file from stdin (use -s for batch mode). - --- Vim: End of options, only file names are following. - ---cmd {command} Vim: execute {command} before sourcing vimrc files. - ---echo-wid Vim: GTK+ echoes the Window ID on stdout - ---help Vim: show help message and exit. - ---literal Vim: take file names literally, don't expand wildcards. - ---nofork Vim: same as |-f| - ---noplugin[s] Vim: Skip loading plugins. - ---remote Vim: edit the files in another Vim server - ---remote-expr {expr} Vim: evaluate {expr} in another Vim server - ---remote-send {keys} Vim: send {keys} to a Vim server and exit - ---remote-silent {file} Vim: edit the files in another Vim server if possible - ---remote-wait Vim: edit the files in another Vim server and wait for it - ---remote-wait-silent Vim: like --remote-wait, no complaints if not possible - ---role {role} Vim: GTK+ 2: set role of main window - ---serverlist Vim: Output a list of Vim servers and exit - ---servername {name} Vim: Specify Vim server name - ---socketid {id} Vim: GTK window socket to run Vim in - ---windowid {id} Vim: Win32 window ID to run Vim in - ---version Vim: show version message and exit. - --? Vile: print usage summary and exit. - --a Elvis: Load all specified file names into a window (use -o for - Vim). - --A Vim: Start in Arabic mode (when compiled with Arabic). - --b {blksize} Elvis: Use {blksize} blocksize for the session file. --b Vim: set 'binary' mode. - --C Vim: Compatible mode. - --c {command} Elvis, Nvi, Posix, Vim: run {command} as an Ex command after - loading the edit buffer. - Vim: allow up to 10 "-c" arguments - --d {device} Vim: Use {device} for I/O (Amiga only). {only when compiled - without the |+diff| feature} --d Vim: start with 'diff' set. |vimdiff| - --dev {device} Vim: Use {device} for I/O (Amiga only). - --D Vim: debug mode. - --e Elvis, Nvi, Vim: Start in Ex mode, as if the executable is - called "ex". - --E Vim: Start in improved Ex mode |gQ|, like "exim". - --f Vim: Run GUI in foreground (Amiga: don't open new window). --f {session} Elvis: Use {session} as the session file. - --F Vim: Start in Farsi mode (when compiled with Farsi). - Nvi: Fast start, don't read the entire file when editing - starts. - --G {gui} Elvis: Use the {gui} as user interface. - --g Vim: Start GUI. --g N Vile: start editing at line N - --h Vim: Give help message. - Vile: edit the help file - --H Vim: start Hebrew mode (when compiled with it). - --i Elvis: Start each window in Insert mode. --i {viminfo} Vim: Use {viminfo} for viminfo file. - --L Vim: Same as "-r" (also in some versions of Vi). - --l Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options. - --m Vim: Modifications not allowed to be written, resets 'write' - option. - --M Vim: Modifications not allowed, resets 'modifiable' and the - 'write' option. - --N Vim: No-compatible mode. - --n Vim: No swap file used. - --nb[args] Vim: open a NetBeans interface connection - --O[N] Vim: Like -o, but use vertically split windows. - --o[N] Vim: Open [N] windows, or one for each file. - --p[N] Vim: Open [N] tab pages, or one for each file. - --P {parent-title} Win32 Vim: open Vim inside a parent application window - --q {name} Vim: Use {name} for quickfix error file. --q{name} Vim: Idem. - --R Elvis, Nvi, Posix, Vile, Vim: Set the 'readonly' option. - --r Elvis, Nvi, Posix, Vi, Vim: Recovery mode. - --S Nvi: Set 'secure' option. --S {script} Vim: source script after starting up. - --s Nvi, Posix, Vim: Same as "-" (silent mode), when in Ex mode. - Elvis: Sets the 'safer' option. --s {scriptin} Vim: Read from script file {scriptin}; only when not in Ex - mode. --s {pattern} Vile: search for {pattern} - --t {tag} Elvis, Nvi, Posix, Vi, Vim: Edit the file containing {tag}. --t{tag} Vim: Idem. - --T {term} Vim: Set terminal name to {term}. - --u {vimrc} Vim: Read initializations from {vimrc} file. - --U {gvimrc} Vim: Read GUI initializations from {gvimrc} file. - --v Nvi, Posix, Vi, Vim: Begin in Normal mode (visual mode, in Vi - terms). - Vile: View mode, no changes possible. - --V Elvis, Vim: Verbose mode. --V{nr} Vim: Verbose mode with specified level. - --w {size} Elvis, Posix, Nvi, Vi, Vim: Set value of 'window' to {size}. --w{size} Nvi, Vi: Same as "-w {size}". --w {name} Vim: Write to script file {name} (must start with non-digit). - --W {name} Vim: Append to script file {name}. - --x Vi, Vim: Ask for encryption key. See |encryption|. - --X Vim: Don't connect to the X server. - --y Vim: Start in easy mode, like |evim|. - --Z Vim: restricted mode - -@{cmdfile} Vile: use {cmdfile} as startup file. - -============================================================================== -7. POSIX compliance *posix* *posix-compliance* - -In 2005 the POSIX test suite was run to check the compatibility of Vim. Most -of the test was executed properly. There are the few things where Vim -is not POSIX compliant, even when run in Vi compatibility mode. - -Set the $VIM_POSIX environment variable to have 'cpoptions' include the POSIX -flags when Vim starts up. This makes Vim run as POSIX as it can. That's -a bit different from being Vi compatible. - -This is where Vim does not behave as POSIX specifies and why: - - *posix-screen-size* - The $COLUMNS and $LINES environment variables are ignored by Vim if - the size can be obtained from the terminal in a more reliable way. - Add the '|' flag to 'cpoptions' to have $COLUMNS and $LINES overrule - sizes obtained in another way. - - The "{" and "}" commands don't stop at a "{" in the original Vi, but - POSIX specifies it does. Add the '{' flag to 'cpoptions' if you want - it the POSIX way. - - The "D", "o" and "O" commands accept a count. Also when repeated. - Add the '#' flag to 'cpoptions' if you want to ignore the count. - - The ":cd" command fails if the current buffer is modified when the '.' - flag is present in 'cpoptions'. - - There is no ATTENTION message, the "A" flag is added to 'shortmess'. - -These are remarks about running the POSIX test suite: -- vi test 33 sometimes fails for unknown reasons -- vi test 250 fails; behavior will be changed in a new revision - http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html -- vi test 310 fails; exit code non-zero when any error occurred? -- ex test 24 fails because test is wrong. Changed between SUSv2 and SUSv3. -- ex tests 47, 48, 49, 72, 73 fail because .exrc file isn't read in silent - mode and $EXINIT isn't used. -- ex tests 76, 78 fail because echo is used instead of printf. (fixed) - Also: problem with \s not changed to space. -- ex test 355 fails because 'window' isn't used for "30z". -- ex test 368 fails because shell command isn't echoed in silent mode. -- ex test 394 fails because "=" command output isn't visible in silent mode. -- ex test 411 fails because test file is wrong, contains stray ':'. -- ex test 475 and 476 fail because reprint output isn't visible in silent mode. -- ex test 480 and 481 fail because the tags file has spaces instead of a tab. -- ex test 502 fails because .exrc isn't read in silent mode. -- ex test 509 fails because .exrc isn't read in silent mode. and exit code is - 1 instead of 2. -- ex test 534 fails because .exrc isn't read in silent mode. - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/vim-fr.1 b/share/vim/vim73/doc/vim-fr.1 deleted file mode 100644 index 5a5a871b..00000000 --- a/share/vim/vim73/doc/vim-fr.1 +++ /dev/null @@ -1,588 +0,0 @@ -.\" Traduction Lundi 7 août 2000 par Richard Hitier -.\" (richard.hitier@dial.oleane.com) -.\" Mise à jour de la traduction par David Blanchet -.\" (david.blanchet@free.fr) 2006-06-10 -.\" Mise à jour de la traduction par Dominique Pellé -.\" (dominique.pelle@gmail.com) 2008-11-29 -.\" -.TH VIM 1 "22 Février 2002" -.SH NOM -vim \- Vi IMproved, éditeur de texte pour programmeurs -.SH SYNOPSIS -.br -.B vim -[options] [fichier ...] -.br -.B vim -[options] \- -.br -.B vim -[options] \-t marqueur -.br -.B vim -[options] \-q [fichiererreurs] -.PP -.br -.B ex -.br -.B view -.br -.B gvim -.B gview -.B evim -.B eview -.br -.B rvim -.B rview -.B rgvim -.B rgview -.SH DESCRIPTION -.B Vim -est un éditeur de texte proposant une compatibilité ascendante -avec Vi. Il permet d'éditer n'importe quel type de texte brut. -Il est particulièrement adapté pour l'édition des programmes. -.PP -Il comporte de nombreuses améliorations par rapport à Vi : annulation sur -plusieurs niveaux, fenêtres et tampons multiples, coloration syntaxique, -édition en ligne de commande, complètement des noms de fichiers, aide en -ligne, sélection visuelle, etc. -Voir ":help vi_diff.txt" pour un résumé des différences entre -.B Vim -et Vi. -.PP -Pendant l'exécution de -.B Vim -\, une aide abondante est accessible au travers du système d'aide -en ligne, grâce à la commande ":help". -Voir la section AIDE EN LIGNE plus bas. -.PP -Le plus souvent -.B Vim -est démarré pour éditer un unique fichier avec la commande -.PP - vim fichier -.PP -Plus généralement, -.B Vim -est lancé avec : -.PP - vim [options] [listefichiers] -.PP -Si la listefichiers est omise, l'éditeur démarre avec un tampon vide. -Autrement, l'une des quatre méthodes suivantes vous permettra de choisir -un ou plusieurs fichiers à éditer. -.TP 12 -fichier ... -Une liste de noms de fichiers. -Le premier sera le fichier courant et sera lu dans le tampon. -Le curseur sera placé sur la première ligne du tampon. -Vous pouvez passer aux autres fichiers avec la commande ":next". -Pour éditer un fichier débutant par un tiret, faites précéder la -liste de fichiers par "\-\-". -.TP -\- -Le fichier à éditer est lu sur l'entrée standard (stdin). Les commandes sont -lues depuis stderr, qui devrait être un terminal. -.TP -\-t {marqueur} -Le fichier à éditer et la position initiale du curseur dépendent -d'un "marqueur", qui est une sorte d'étiquette. -{marqueur} est recherché dans le fichier des marqueurs, le fichier correspondant -devient le fichier courant et la commande associée est exécutée. -Principalement utile pour les programmes en C ; dans ce cas, {marqueur} -peut être le nom d'une fonction. -Au final, le fichier contenant cette fonction devient le fichier -courant et le curseur est placé au début de la fonction. -Voir ":help tag\-commands". -.TP -\-q [fichiererreurs] -Démarre en mode Mise-au-point (QuickFix). -Le fichier [fichiererreurs] est lu et la première erreur est affichée. -Si [fichiererreurs] est omis, le nom du fichier est lu dans -l'option 'errorfile' ("AztecC.Err" par défaut sur Amiga, "errors.err" sur les -autres systèmes). -La commande ":cn" permet de sauter aux erreurs suivantes. -Voir ":help quickfix". -.PP -.B Vim -se comporte différemment selon le nom de la commande (l'exécutable peut -cependant être le même fichier). -.TP 10 -vim -La façon "normale", le comportement par défaut. -.TP -ex -Démarre en mode Ex. -La commande ":vi" permet de passer en mode Normal. -Ce mode est également accessible avec l'argument "\-e". -.TP -view -Démarre en mode Lecture-Seule. Vous êtes protégé de l'écriture accidentelle -des fichiers. Ce mode est également accessible avec l'argument "\-R". -.TP -gvim gview -La version graphique. -Ouvre une nouvelle fenêtre. -Également accessible avec l'argument "\-g". -.TP -evim eview -La version graphique en mode Débutant (easy). -Ouvre une nouvelle fenêtre. -Également accessible avec l'argument "\-y". -.TP -rvim rview rgvim rgview -Comme ci-dessus, mais avec des restrictions. Il vous sera impossible de -lancer des commandes du shell, ou de suspendre -.B Vim. -Également accessible avec l'argument "\-Z". -.SH OPTIONS -Les options peuvent être spécifiées dans n'importe quel ordre, -avant ou après les noms de fichiers. Les options sans arguments -peuvent être combinées après un unique tiret. -.TP 12 -+[num] -Place le curseur sur la ligne "num" dans le premier fichier. -Si "num" est omis, le curseur sera placé sur la dernière ligne. -.TP -+/{motif} -Place le curseur sur la première occurrence de {motif} dans le premier fichier. -Voir ":help search\-pattern" pour connaître les motifs de recherches -disponibles. -.TP -+{commande} -.TP -\-c {commande} -Exécute {commande} après la lecture du premier fichier. -{commande} est interprétée comme une commande Ex. -Si la {commande} contient des espaces, elle doit être entourée -de doubles-apostrophes (cela dépend du shell utilisé). -Exemple: Vim "+set si" main.c -.br -Note : vous pouvez utiliser jusqu'à 10 commandes "+" ou "\-c". -.TP -\-S {fichier} -Source {fichier} après la lecture du premier fichier. -C'est équivalent à \-c "source {fichier}". -{fichier} ne peut pas débuter par un '\-'. -Si {fichier} est omis, "Session.vim" est utilisé (cela ne fonctionne que si -\-S est le dernier argument). -.TP -\-\-cmd {commande} -Comme "\-c", mais la commande est exécutée juste avant de traiter les fichiers -vimrc. -Vous pouvez utiliser jusqu'à 10 de ces commandes, indépendamment des -commandes "\-c". -.TP -\-A -Si -.B Vim -a été compilé avec le support de la fonctionnalité ARABIC pour l'édition de -fichiers de droite à gauche et les claviers arabes, cette option lance -.B Vim -en mode Arabe, c.-à-d. que l'option 'arabic' est activée. -Sinon, un message d'erreur est émis et -.B Vim -quitte. -.TP -\-b -Mode Binaire. -Active plusieurs options pour permettre l'édition -d'un fichier binaire ou exécutable. -.TP -\-C -Compatible. Active l'option 'compatible'. -.B Vim -se comportera alors quasiment comme Vi, même s'il existe un fichier .vimrc. -.TP -\-d -Démarre en mode Diff. -Deux, trois ou quatre noms de fichiers doivent être spécifiés. -.B Vim -ouvrira alors tous les fichiers et affichera leurs différences. -Fonctionne comme vimdiff(1). -.TP -\-d {périph} -Ouvre {périph} pour l'utiliser comme terminal. -Uniquement sur Amiga. -Exemple: -"\-d con:20/30/600/150". -.TP -\-D -Debogage. Passe en mode Débogage lors de l'exécution de la première commande -d'un script. -.TP -\-e -Démarre -.B Vim -en mode Ex, comme si l'exécutable s'appelait "ex". -.TP -\-E -Démarre -.B Vim -en mode Ex amélioré, comme si l'exécutable "exim" avait été invoqué. -.TP -\-f -Premier-plan (Foreground). Pour la version graphique, -.B Vim -ne forke pas et ne se détache pas du shell dans lequel il a été invoqué. -Sur Amiga, -.B Vim -n'est pas relancé pour ouvrir une nouvelle fenêtre. -Cette option est utile quand -.B Vim -est exécuté par un programme qui attend la fin de la session d'édition -(par exemple mail). -Sur Amiga, les commandes ":sh" et ":!" ne fonctionneront pas. -.TP -\-\-nofork -Premier-plan (Foreground). Pour la version graphique, -.B Vim -ne forkera pas et ne se détachera pas du shell dans lequel il a été lancé. -.TP -\-F -Si -.B Vim -a été compilé avec le support de la fonctionnalité FKMAP pour l'édition de -fichiers de droite à gauche et les claviers farsi, cette option lance -.B Vim -en mode Farsi, c.-à-d. avec les options 'fkmap' et 'rightleft' activées. -Sinon, un message d'erreur est émis et -.B Vim -quitte. -.TP -\-g -Si -.B Vim -a été compilé avec le support de l'IHM graphique, cette option active -l'IHM graphique. Si le support n'a pas été compilé, un message d'erreur -est émis et -.B Vim -quitte. -.TP -\-h -Donne une aide succincte sur les arguments et les options de la ligne de -commande. Après cela, -.B Vim -quitte. -.TP -\-H -Si -.B Vim -a été compilé avec le support de la fonctionnalité RIGHTLEFT pour l'édition de -fichiers de droite à gauche et les claviers hébreu, cette option lance -.B Vim -en mode Hébreu, c.-à-d. avec les options 'hkmap' et 'rightleft' activées. -Sinon, un message d'erreur est émis et -.B Vim -quitte. -.TP -\-i {viminfo} -Lorsque l'utilisation d'un fichier viminfo est activée, cette option indique -le nom de fichier à utiliser à la place de "~/.viminfo" par défaut. -Il est possible d'empêcher l'utilisation d'un fichier ".viminfo", en -spécifiant le nom de fichier "NONE". -.TP -\-L -Comme \-r. -.TP -\-l -Mode Lisp. -Active les options 'lisp' et 'showmatch'. -.TP -\-m -Empêche la modification des fichiers. -Désactive l'option 'write'. -Vous pouvez toujours modifier le tampon, mais il vous sera impossible -d'écrire le fichier. -.TP -\-M -N'autorise aucune modification. les options 'modifiable' et 'write' sont -désactivées, de sorte que les changements ne sont pas autorisés et que les -fichiers ne peuvent pas être écrits. Note : ces options peuvent être activées -pour autoriser les modifications. -.TP -\-N -Mode Non-compatible. Désactive l'option 'compatible'. -Cela améliorera le comportement de -.B Vim -\, mais il sera moins conforme à celui de Vi, même s'il n'existe aucun -fichier ".vimrc". -.TP -\-n -N'utilise pas de fichier d'échange (swapfile). -Le recouvrement après un plantage sera impossible. -Utile pour éditer un fichier sur un support très lent (disquette par ex.). -Également activable avec ":set uc=0". -Il est possible de l'annuler avec ":set uc=200". -.TP -\-nb -Devient un serveur d'édition pour NetBeans. Consulter la documentation à ce -sujet pour davantage de détails. -.TP -\-o[N] -Ouvre N fenêtres les unes au-dessus des autres. -Quand N est omis, ouvre une fenêtre pour chaque fichier. -.TP -\-O[N] -Ouvre N fenêtres côte à côte. -Quand N est omis, ouvre une fenêtre pour chaque fichier fichier. -.TP -\-p[N] -Ouvre N onglets. -Quand N est omis, ouvre un onglet pour chaque fichier fichier. -.TP -\-R -Mode Lecture-Seule. -Active l'option 'readonly'. -Vous pouvez toujours éditer le tampon, mais il vous sera impossible de -d'écraser accidentellement un fichier. -Si vous voulez écraser un fichier, ajoutez un point d'exclamation à la commande -Ex, comme dans ":w!". -L'option \-R impose l'option \-n (voir ci-dessus). -L'option 'readonly' peut être désactivée avec ":set noro". -Voir ":help 'readonly'". -.TP -\-r -Donne la liste des fichiers d'échange, avec des informations pour les utiliser -à des fins de recouvrement. -.TP -\-r {file} -Mode Recouvrement. -Utilise le fichier d'échange pour récouvrer d'une session d'édition plantée. -Le fichier d'échange est un fichier avec le même nom que le fichier texte, -suivi du suffixe ".swp". -Voir ":help recovery". -.TP -\-s -Mode Silencieux. Disponible uniquement quand -.B Vim -est lancé en tant que "ex" ou quand l'option "\-e" a été spécifiée avant -l'option "\-s". -.TP -\-s {scriptEntrée} -Lit le fichier de script {scriptEntrée}. -Les caractères du fichier sont interprétés comme si vous les tapiez. -La commande ":source! {scriptEntrée}" donne le même résultat. -Si la fin du fichier est atteinte avant que l'éditeur quitte, les caractères -suivants sont lus depuis le clavier. -.TP -\-T {terminal} -Indique à -.B Vim -le nom du terminal utilisé. -Cela n'est requis que lorsque la détection automatique échoue. -Le {terminal} devrait être connu de -.B Vim -(intégré) ou défini dans le fichier termcap ou terminfo. -.TP -\-u {vimrc} -Utilise les commandes du fichier {vimrc} pour les initialisations. -Toutes les autres initialisations sont omises. -À utiliser pour éditer un type de fichiers particulier. -Cela permet aussi d'omettre toute initialisation en spécifiant le nom de -fichier "NONE". -Voir ":help initialization" dans Vim pour davantage de détails. -.TP -\-U {gvimrc} -Utilise les commandes du fichier {gvimrc} pour l'initialisation de l'IHM -graphique. -Toutes les autres initialisations graphiques sont omises. -Cela permet aussi d'omettre toute initialisation graphique en spécifiant le nom -de fichier "NONE". -Voir ":help gui\-init" dans Vim pour davantage de détails. -.TP -\-V[N] -Mode Verbeux. -Donne des messages à propos des fichiers sourcés, ainsi que sur la lecture -et les écritures dans le fichier viminfo. le nombre optionnel N précise la -valeur de l'option 'verbose' (10 par défaut). -.TP -\-v -Démarre -.B Vim -en mode Vi, comme si l'exécutable s'appelait "vi". Cela n'a d'effet que si -l'exécutable invoqué est "ex". -.TP -\-w {scriptSortie} -Tous les caractères que vous tapez sont enregistrés dans le fichier -{scriptSortie}, jusqu'à ce que vous quittiez -.B Vim. -C'est utile quand vous voulez créer un fichier de script à utiliser avec -"vim \-s" ou ":source!". -Si le fichier {scriptSortie} existe, les caractères sont ajoutés à la fin. -.TP -\-W {scriptSortie} -Comme \-w, mais un fichier existant sera écrasé. -.TP -\-x -Chiffre les fichiers lors de l'écriture. Une clé de chiffrement sera demandée. -.TP -\-X -Ne se connecte pas au serveur X. Accélère le temps de démarrage dans un -terminal, mais le titre de la fenêtre et le presse-papier seront inaccessibles. -.TP -\-y -Démarre -.B Vim -en mode Débutant (easy), comme si l'exécutable s'appelait "evim" ou "eview". -Donne à -.B Vim -un comportement plus proche des éditeurs « cliquez-tapez ». -.TP -\-Z -Mode restreint. Fonctionne comme si l'exécutable commençait par la lettre 'r'. -.TP -\-\- -Délimite la fin des options. -Les arguments qui suivent seront considérés comme des noms de fichiers. -Cela permet d'éditer des fichier débutant par un '\-'. -.TP -\-\-echo\-wid -IHM graphique GTK uniquement : retourne la Window ID sur stdout. -.TP -\-\-help -Donne un message d'aide et quitte, comme "\-h". -.TP -\-\-literal -Prend les arguments de noms de fichiers littéralement, sans étendre les -jokers. N'a aucun effet sur Unix, où le shell étend les jokers. -.TP -\-\-noplugin -Ne charge pas les greffons. Implicite avec \-u NONE. -.TP -\-\-remote -Se connecte à un serveur Vim et lui fait éditer les fichiers spécifiés dans -le reste des arguments. Si aucun serveur n'est trouvé, un avertissement est -émis et les fichiers sont édités dans le Vim courant. -.TP -\-\-remote\-expr {expr} -Se connecte à un serveur Vim, y évalue {expr} et affiche le résultat sur la -sortie standard (stdout). -.TP -\-\-remote\-send {touches} -Se connecte à un serveur Vim et y envoie {touches}. -.TP -\-\-remote\-silent -Comme \-\-remote, mais sans émettre d'avertissement si aucun serveur n'est -trouvé. -.TP -\-\-remote\-wait -Comme \-\-remote, mais Vim ne quitte pas tant que le fichier est en cours -d'édition. -.TP -\-\-remote\-wait\-silent -Comme \-\-remote\-wait, mais sans émettre d'avertissement si aucun serveur n'est -trouvé. -.TP -\-\-serverlist -Donne la liste des noms de tous les serveurs Vim disponibles. -.TP -\-\-servername {nom} -Utilise {nom} pour le nom de serveur. Ce nom est donné au Vim courant, à moins -qu'il ne soit utilisé avec un argument \-\-remote. Dans ce cas, il s'agit du nom -du serveur auquel se connecter. -.TP -\-\-socketid {id} -IHM graphique GTK+ uniquement : utilise le mécanisme GtkPlug pour faire -fonctionner gvim dans une autre fenêtre. -.TP -\-\-version -Affiche les informations sur la version puis quitte. -.SH AIDE EN LIGNE -Taper ":help" dans -.B Vim -pour commencer. -Taper ":help sujet" pour obtenir de l'aide sur un sujet précis. -Par exemple : ":help ZZ" pour consulter l'aide sur la commande "ZZ". -Utiliser <Tab> et CTRL\-D pour compléter les sujets (":help -cmdline\-completion"). -Des marqueurs sont inclus dans l'aide et vous permettent de sauter d'un endroit -à un autre (comme des liens hypertextes, voir ":help"). -L'ensemble des fichiers de la documentation peut être consulté de cette -façon, par exemple ":help syntax.txt". -.SH FICHIERS -.TP 15 -/usr/local/lib/vim/doc/*.txt -Les fichiers de la documentation de -.B Vim. -Utiliser ":help doc\-file\-list" pour obtenir la liste complète. -.TP -/usr/local/lib/vim/doc/tags -Le fichier des marqueurs utilisé pour trouver les informations dans les -fichiers de la documentation. -.TP -/usr/local/lib/vim/syntax/syntax.vim -Initialisation de la syntaxe pour l'ensemble du système. -.TP -/usr/local/lib/vim/syntax/*.vim -Fichiers de syntaxe pour différents langages. -.TP -/usr/local/lib/vim/vimrc -Initialisation de -.B Vim -pour l'ensemble du système. -.TP -~/.vimrc -Initialisation de -.B Vim -de votre compte utilisateur. -.TP -/usr/local/lib/vim/gvimrc -Initialisation de gvim pour l'ensemble du système. -.TP -~/.gvimrc -Initialisation de gvim pour votre compte utilisateur. -.TP -/usr/local/lib/vim/optwin.vim -Script utilisé pour la commande ":options", une manière pratique de consulter -et de modifier les options. -.TP -/usr/local/lib/vim/menu.vim -Initialisation des menus de gvim pour l'ensemble du système. -.TP -/usr/local/lib/vim/bugreport.vim -Script pour générer un rapport de bogue. Voir ":help bugs". -.TP -/usr/local/lib/vim/filetype.vim -Script pour détecter le type d'un fichier d'après son nom. -Voir ":help 'filetype'". -.TP -/usr/local/lib/vim/scripts.vim -Script pour détecter le type d'un fichier d'après son contenu. -Voir ":help 'filetype'". -.TP -/usr/local/lib/vim/print/*.ps -Fichiers utilisés pour l'impression PostScript. -.PP -Pour disposer d'informations récentes, consulter le site Internet de VIM : -.br -<URL:http://www.vim.org/> -.SH VOIR AUSSI -vimtutor(1) -.SH AUTEUR -La majeure partie de -.B Vim -a été écrite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs. -Voir ":help credits" dans -.B Vim. -.br -.B Vim -est basé sur Stevie, réalisé par Tim Thompson, -Tony Andrews et G.R. (Fred) Walter. -Toutefois, pratiquement rien du code original ne subsiste. -.SH BOGUES -Probablement. -Voir ":help todo" pour consulter la liste des problèmes connus. -.PP -NOTE : Remarquez que bon nombre de points, qui pourraient être considérés comme -des bugs par certains, sont en fait dus à une reproduction trop fidèle -du comportement de Vi. Et si vous pensez que d'autres points sont des -bugs "parce que Vi le fait différemment", vous devriez jeter un oeil -attentif au fichier vi_diff.txt (ou taper ":help vi_diff.txt" dans Vim). -Regardez aussi les options 'compatible' et 'coptions'. -.SH TRADUCTION -Cette page de manuel a été traduite par Richard Hitier. -<richard.hitier@dial.oleane.com> 2000-08-07. -.br -Cette page de manuel a été mise à jour par David Blanchet. -<david.blanchet@free.fr> 2006-04-10. diff --git a/share/vim/vim73/doc/vim-fr.UTF-8.1 b/share/vim/vim73/doc/vim-fr.UTF-8.1 deleted file mode 100644 index 9a8bea66..00000000 --- a/share/vim/vim73/doc/vim-fr.UTF-8.1 +++ /dev/null @@ -1,588 +0,0 @@ -.\" Traduction Lundi 7 août 2000 par Richard Hitier -.\" (richard.hitier@dial.oleane.com) -.\" Mise à jour de la traduction par David Blanchet -.\" (david.blanchet@free.fr) 2006-06-10 -.\" Mise à jour de la traduction par Dominique Pellé -.\" (dominique.pelle@gmail.com) 2008-11-29 -.\" -.TH VIM 1 "22 Février 2002" -.SH NOM -vim \- Vi IMproved, éditeur de texte pour programmeurs -.SH SYNOPSIS -.br -.B vim -[options] [fichier ...] -.br -.B vim -[options] \- -.br -.B vim -[options] \-t marqueur -.br -.B vim -[options] \-q [fichiererreurs] -.PP -.br -.B ex -.br -.B view -.br -.B gvim -.B gview -.B evim -.B eview -.br -.B rvim -.B rview -.B rgvim -.B rgview -.SH DESCRIPTION -.B Vim -est un éditeur de texte proposant une compatibilité ascendante -avec Vi. Il permet d'éditer n'importe quel type de texte brut. -Il est particulièrement adapté pour l'édition des programmes. -.PP -Il comporte de nombreuses améliorations par rapport à Vi : annulation sur -plusieurs niveaux, fenêtres et tampons multiples, coloration syntaxique, -édition en ligne de commande, complètement des noms de fichiers, aide en -ligne, sélection visuelle, etc. -Voir ":help vi_diff.txt" pour un résumé des différences entre -.B Vim -et Vi. -.PP -Pendant l'exécution de -.B Vim -\, une aide abondante est accessible au travers du système d'aide -en ligne, grâce à la commande ":help". -Voir la section AIDE EN LIGNE plus bas. -.PP -Le plus souvent -.B Vim -est démarré pour éditer un unique fichier avec la commande -.PP - vim fichier -.PP -Plus généralement, -.B Vim -est lancé avec : -.PP - vim [options] [listefichiers] -.PP -Si la listefichiers est omise, l'éditeur démarre avec un tampon vide. -Autrement, l'une des quatre méthodes suivantes vous permettra de choisir -un ou plusieurs fichiers à éditer. -.TP 12 -fichier ... -Une liste de noms de fichiers. -Le premier sera le fichier courant et sera lu dans le tampon. -Le curseur sera placé sur la première ligne du tampon. -Vous pouvez passer aux autres fichiers avec la commande ":next". -Pour éditer un fichier débutant par un tiret, faites précéder la -liste de fichiers par "\-\-". -.TP -\- -Le fichier à éditer est lu sur l'entrée standard (stdin). Les commandes sont -lues depuis stderr, qui devrait être un terminal. -.TP -\-t {marqueur} -Le fichier à éditer et la position initiale du curseur dépendent -d'un "marqueur", qui est une sorte d'étiquette. -{marqueur} est recherché dans le fichier des marqueurs, le fichier correspondant -devient le fichier courant et la commande associée est exécutée. -Principalement utile pour les programmes en C ; dans ce cas, {marqueur} -peut être le nom d'une fonction. -Au final, le fichier contenant cette fonction devient le fichier -courant et le curseur est placé au début de la fonction. -Voir ":help tag\-commands". -.TP -\-q [fichiererreurs] -Démarre en mode Mise-au-point (QuickFix). -Le fichier [fichiererreurs] est lu et la première erreur est affichée. -Si [fichiererreurs] est omis, le nom du fichier est lu dans -l'option 'errorfile' ("AztecC.Err" par défaut sur Amiga, "errors.err" sur les -autres systèmes). -La commande ":cn" permet de sauter aux erreurs suivantes. -Voir ":help quickfix". -.PP -.B Vim -se comporte différemment selon le nom de la commande (l'exécutable peut -cependant être le même fichier). -.TP 10 -vim -La façon "normale", le comportement par défaut. -.TP -ex -Démarre en mode Ex. -La commande ":vi" permet de passer en mode Normal. -Ce mode est également accessible avec l'argument "\-e". -.TP -view -Démarre en mode Lecture-Seule. Vous êtes protégé de l'écriture accidentelle -des fichiers. Ce mode est également accessible avec l'argument "\-R". -.TP -gvim gview -La version graphique. -Ouvre une nouvelle fenêtre. -Également accessible avec l'argument "\-g". -.TP -evim eview -La version graphique en mode Débutant (easy). -Ouvre une nouvelle fenêtre. -Également accessible avec l'argument "\-y". -.TP -rvim rview rgvim rgview -Comme ci-dessus, mais avec des restrictions. Il vous sera impossible de -lancer des commandes du shell, ou de suspendre -.B Vim. -Également accessible avec l'argument "\-Z". -.SH OPTIONS -Les options peuvent être spécifiées dans n'importe quel ordre, -avant ou après les noms de fichiers. Les options sans arguments -peuvent être combinées après un unique tiret. -.TP 12 -+[num] -Place le curseur sur la ligne "num" dans le premier fichier. -Si "num" est omis, le curseur sera placé sur la dernière ligne. -.TP -+/{motif} -Place le curseur sur la première occurrence de {motif} dans le premier fichier. -Voir ":help search\-pattern" pour connaître les motifs de recherches -disponibles. -.TP -+{commande} -.TP -\-c {commande} -Exécute {commande} après la lecture du premier fichier. -{commande} est interprétée comme une commande Ex. -Si la {commande} contient des espaces, elle doit être entourée -de doubles-apostrophes (cela dépend du shell utilisé). -Exemple: Vim "+set si" main.c -.br -Note : vous pouvez utiliser jusqu'à 10 commandes "+" ou "\-c". -.TP -\-S {fichier} -Source {fichier} après la lecture du premier fichier. -C'est équivalent à \-c "source {fichier}". -{fichier} ne peut pas débuter par un '\-'. -Si {fichier} est omis, "Session.vim" est utilisé (cela ne fonctionne que si -\-S est le dernier argument). -.TP -\-\-cmd {commande} -Comme "\-c", mais la commande est exécutée juste avant de traiter les fichiers -vimrc. -Vous pouvez utiliser jusqu'à 10 de ces commandes, indépendamment des -commandes "\-c". -.TP -\-A -Si -.B Vim -a été compilé avec le support de la fonctionnalité ARABIC pour l'édition de -fichiers de droite à gauche et les claviers arabes, cette option lance -.B Vim -en mode Arabe, c.-à-d. que l'option 'arabic' est activée. -Sinon, un message d'erreur est émis et -.B Vim -quitte. -.TP -\-b -Mode Binaire. -Active plusieurs options pour permettre l'édition -d'un fichier binaire ou exécutable. -.TP -\-C -Compatible. Active l'option 'compatible'. -.B Vim -se comportera alors quasiment comme Vi, même s'il existe un fichier .vimrc. -.TP -\-d -Démarre en mode Diff. -Deux, trois ou quatre noms de fichiers doivent être spécifiés. -.B Vim -ouvrira alors tous les fichiers et affichera leurs différences. -Fonctionne comme vimdiff(1). -.TP -\-d {périph} -Ouvre {périph} pour l'utiliser comme terminal. -Uniquement sur Amiga. -Exemple: -"\-d con:20/30/600/150". -.TP -\-D -Debogage. Passe en mode Débogage lors de l'exécution de la première commande -d'un script. -.TP -\-e -Démarre -.B Vim -en mode Ex, comme si l'exécutable s'appelait "ex". -.TP -\-E -Démarre -.B Vim -en mode Ex amélioré, comme si l'exécutable "exim" avait été invoqué. -.TP -\-f -Premier-plan (Foreground). Pour la version graphique, -.B Vim -ne forke pas et ne se détache pas du shell dans lequel il a été invoqué. -Sur Amiga, -.B Vim -n'est pas relancé pour ouvrir une nouvelle fenêtre. -Cette option est utile quand -.B Vim -est exécuté par un programme qui attend la fin de la session d'édition -(par exemple mail). -Sur Amiga, les commandes ":sh" et ":!" ne fonctionneront pas. -.TP -\-\-nofork -Premier-plan (Foreground). Pour la version graphique, -.B Vim -ne forkera pas et ne se détachera pas du shell dans lequel il a été lancé. -.TP -\-F -Si -.B Vim -a été compilé avec le support de la fonctionnalité FKMAP pour l'édition de -fichiers de droite à gauche et les claviers farsi, cette option lance -.B Vim -en mode Farsi, c.-à-d. avec les options 'fkmap' et 'rightleft' activées. -Sinon, un message d'erreur est émis et -.B Vim -quitte. -.TP -\-g -Si -.B Vim -a été compilé avec le support de l'IHM graphique, cette option active -l'IHM graphique. Si le support n'a pas été compilé, un message d'erreur -est émis et -.B Vim -quitte. -.TP -\-h -Donne une aide succincte sur les arguments et les options de la ligne de -commande. Après cela, -.B Vim -quitte. -.TP -\-H -Si -.B Vim -a été compilé avec le support de la fonctionnalité RIGHTLEFT pour l'édition de -fichiers de droite à gauche et les claviers hébreu, cette option lance -.B Vim -en mode Hébreu, c.-à-d. avec les options 'hkmap' et 'rightleft' activées. -Sinon, un message d'erreur est émis et -.B Vim -quitte. -.TP -\-i {viminfo} -Lorsque l'utilisation d'un fichier viminfo est activée, cette option indique -le nom de fichier à utiliser à la place de "~/.viminfo" par défaut. -Il est possible d'empêcher l'utilisation d'un fichier ".viminfo", en -spécifiant le nom de fichier "NONE". -.TP -\-L -Comme \-r. -.TP -\-l -Mode Lisp. -Active les options 'lisp' et 'showmatch'. -.TP -\-m -Empêche la modification des fichiers. -Désactive l'option 'write'. -Vous pouvez toujours modifier le tampon, mais il vous sera impossible -d'écrire le fichier. -.TP -\-M -N'autorise aucune modification. les options 'modifiable' et 'write' sont -désactivées, de sorte que les changements ne sont pas autorisés et que les -fichiers ne peuvent pas être écrits. Note : ces options peuvent être activées -pour autoriser les modifications. -.TP -\-N -Mode Non-compatible. Désactive l'option 'compatible'. -Cela améliorera le comportement de -.B Vim -\, mais il sera moins conforme à celui de Vi, même s'il n'existe aucun -fichier ".vimrc". -.TP -\-n -N'utilise pas de fichier d'échange (swapfile). -Le recouvrement après un plantage sera impossible. -Utile pour éditer un fichier sur un support très lent (disquette par ex.). -Également activable avec ":set uc=0". -Il est possible de l'annuler avec ":set uc=200". -.TP -\-nb -Devient un serveur d'édition pour NetBeans. Consulter la documentation à ce -sujet pour davantage de détails. -.TP -\-o[N] -Ouvre N fenêtres les unes au-dessus des autres. -Quand N est omis, ouvre une fenêtre pour chaque fichier. -.TP -\-O[N] -Ouvre N fenêtres côte à côte. -Quand N est omis, ouvre une fenêtre pour chaque fichier fichier. -.TP -\-p[N] -Ouvre N onglets. -Quand N est omis, ouvre un onglet pour chaque fichier fichier. -.TP -\-R -Mode Lecture-Seule. -Active l'option 'readonly'. -Vous pouvez toujours éditer le tampon, mais il vous sera impossible de -d'écraser accidentellement un fichier. -Si vous voulez écraser un fichier, ajoutez un point d'exclamation à la commande -Ex, comme dans ":w!". -L'option \-R impose l'option \-n (voir ci-dessus). -L'option 'readonly' peut être désactivée avec ":set noro". -Voir ":help 'readonly'". -.TP -\-r -Donne la liste des fichiers d'échange, avec des informations pour les utiliser -à des fins de recouvrement. -.TP -\-r {file} -Mode Recouvrement. -Utilise le fichier d'échange pour récouvrer d'une session d'édition plantée. -Le fichier d'échange est un fichier avec le même nom que le fichier texte, -suivi du suffixe ".swp". -Voir ":help recovery". -.TP -\-s -Mode Silencieux. Disponible uniquement quand -.B Vim -est lancé en tant que "ex" ou quand l'option "\-e" a été spécifiée avant -l'option "\-s". -.TP -\-s {scriptEntrée} -Lit le fichier de script {scriptEntrée}. -Les caractères du fichier sont interprétés comme si vous les tapiez. -La commande ":source! {scriptEntrée}" donne le même résultat. -Si la fin du fichier est atteinte avant que l'éditeur quitte, les caractères -suivants sont lus depuis le clavier. -.TP -\-T {terminal} -Indique à -.B Vim -le nom du terminal utilisé. -Cela n'est requis que lorsque la détection automatique échoue. -Le {terminal} devrait être connu de -.B Vim -(intégré) ou défini dans le fichier termcap ou terminfo. -.TP -\-u {vimrc} -Utilise les commandes du fichier {vimrc} pour les initialisations. -Toutes les autres initialisations sont omises. -À utiliser pour éditer un type de fichiers particulier. -Cela permet aussi d'omettre toute initialisation en spécifiant le nom de -fichier "NONE". -Voir ":help initialization" dans Vim pour davantage de détails. -.TP -\-U {gvimrc} -Utilise les commandes du fichier {gvimrc} pour l'initialisation de l'IHM -graphique. -Toutes les autres initialisations graphiques sont omises. -Cela permet aussi d'omettre toute initialisation graphique en spécifiant le nom -de fichier "NONE". -Voir ":help gui\-init" dans Vim pour davantage de détails. -.TP -\-V[N] -Mode Verbeux. -Donne des messages à propos des fichiers sourcés, ainsi que sur la lecture -et les écritures dans le fichier viminfo. le nombre optionnel N précise la -valeur de l'option 'verbose' (10 par défaut). -.TP -\-v -Démarre -.B Vim -en mode Vi, comme si l'exécutable s'appelait "vi". Cela n'a d'effet que si -l'exécutable invoqué est "ex". -.TP -\-w {scriptSortie} -Tous les caractères que vous tapez sont enregistrés dans le fichier -{scriptSortie}, jusqu'à ce que vous quittiez -.B Vim. -C'est utile quand vous voulez créer un fichier de script à utiliser avec -"vim \-s" ou ":source!". -Si le fichier {scriptSortie} existe, les caractères sont ajoutés à la fin. -.TP -\-W {scriptSortie} -Comme \-w, mais un fichier existant sera écrasé. -.TP -\-x -Chiffre les fichiers lors de l'écriture. Une clé de chiffrement sera demandée. -.TP -\-X -Ne se connecte pas au serveur X. Accélère le temps de démarrage dans un -terminal, mais le titre de la fenêtre et le presse-papier seront inaccessibles. -.TP -\-y -Démarre -.B Vim -en mode Débutant (easy), comme si l'exécutable s'appelait "evim" ou "eview". -Donne à -.B Vim -un comportement plus proche des éditeurs « cliquez-tapez ». -.TP -\-Z -Mode restreint. Fonctionne comme si l'exécutable commençait par la lettre 'r'. -.TP -\-\- -Délimite la fin des options. -Les arguments qui suivent seront considérés comme des noms de fichiers. -Cela permet d'éditer des fichier débutant par un '\-'. -.TP -\-\-echo\-wid -IHM graphique GTK uniquement : retourne la Window ID sur stdout. -.TP -\-\-help -Donne un message d'aide et quitte, comme "\-h". -.TP -\-\-literal -Prend les arguments de noms de fichiers littéralement, sans étendre les -jokers. N'a aucun effet sur Unix, où le shell étend les jokers. -.TP -\-\-noplugin -Ne charge pas les greffons. Implicite avec \-u NONE. -.TP -\-\-remote -Se connecte à un serveur Vim et lui fait éditer les fichiers spécifiés dans -le reste des arguments. Si aucun serveur n'est trouvé, un avertissement est -émis et les fichiers sont édités dans le Vim courant. -.TP -\-\-remote\-expr {expr} -Se connecte à un serveur Vim, y évalue {expr} et affiche le résultat sur la -sortie standard (stdout). -.TP -\-\-remote\-send {touches} -Se connecte à un serveur Vim et y envoie {touches}. -.TP -\-\-remote\-silent -Comme \-\-remote, mais sans émettre d'avertissement si aucun serveur n'est -trouvé. -.TP -\-\-remote\-wait -Comme \-\-remote, mais Vim ne quitte pas tant que le fichier est en cours -d'édition. -.TP -\-\-remote\-wait\-silent -Comme \-\-remote\-wait, mais sans émettre d'avertissement si aucun serveur n'est -trouvé. -.TP -\-\-serverlist -Donne la liste des noms de tous les serveurs Vim disponibles. -.TP -\-\-servername {nom} -Utilise {nom} pour le nom de serveur. Ce nom est donné au Vim courant, à moins -qu'il ne soit utilisé avec un argument \-\-remote. Dans ce cas, il s'agit du nom -du serveur auquel se connecter. -.TP -\-\-socketid {id} -IHM graphique GTK+ uniquement : utilise le mécanisme GtkPlug pour faire -fonctionner gvim dans une autre fenêtre. -.TP -\-\-version -Affiche les informations sur la version puis quitte. -.SH AIDE EN LIGNE -Taper ":help" dans -.B Vim -pour commencer. -Taper ":help sujet" pour obtenir de l'aide sur un sujet précis. -Par exemple : ":help ZZ" pour consulter l'aide sur la commande "ZZ". -Utiliser <Tab> et CTRL\-D pour compléter les sujets (":help -cmdline\-completion"). -Des marqueurs sont inclus dans l'aide et vous permettent de sauter d'un endroit -à un autre (comme des liens hypertextes, voir ":help"). -L'ensemble des fichiers de la documentation peut être consulté de cette -façon, par exemple ":help syntax.txt". -.SH FICHIERS -.TP 15 -/usr/local/lib/vim/doc/*.txt -Les fichiers de la documentation de -.B Vim. -Utiliser ":help doc\-file\-list" pour obtenir la liste complète. -.TP -/usr/local/lib/vim/doc/tags -Le fichier des marqueurs utilisé pour trouver les informations dans les -fichiers de la documentation. -.TP -/usr/local/lib/vim/syntax/syntax.vim -Initialisation de la syntaxe pour l'ensemble du système. -.TP -/usr/local/lib/vim/syntax/*.vim -Fichiers de syntaxe pour différents langages. -.TP -/usr/local/lib/vim/vimrc -Initialisation de -.B Vim -pour l'ensemble du système. -.TP -~/.vimrc -Initialisation de -.B Vim -de votre compte utilisateur. -.TP -/usr/local/lib/vim/gvimrc -Initialisation de gvim pour l'ensemble du système. -.TP -~/.gvimrc -Initialisation de gvim pour votre compte utilisateur. -.TP -/usr/local/lib/vim/optwin.vim -Script utilisé pour la commande ":options", une manière pratique de consulter -et de modifier les options. -.TP -/usr/local/lib/vim/menu.vim -Initialisation des menus de gvim pour l'ensemble du système. -.TP -/usr/local/lib/vim/bugreport.vim -Script pour générer un rapport de bogue. Voir ":help bugs". -.TP -/usr/local/lib/vim/filetype.vim -Script pour détecter le type d'un fichier d'après son nom. -Voir ":help 'filetype'". -.TP -/usr/local/lib/vim/scripts.vim -Script pour détecter le type d'un fichier d'après son contenu. -Voir ":help 'filetype'". -.TP -/usr/local/lib/vim/print/*.ps -Fichiers utilisés pour l'impression PostScript. -.PP -Pour disposer d'informations récentes, consulter le site Internet de VIM : -.br -<URL:http://www.vim.org/> -.SH VOIR AUSSI -vimtutor(1) -.SH AUTEUR -La majeure partie de -.B Vim -a été écrite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs. -Voir ":help credits" dans -.B Vim. -.br -.B Vim -est basé sur Stevie, réalisé par Tim Thompson, -Tony Andrews et G.R. (Fred) Walter. -Toutefois, pratiquement rien du code original ne subsiste. -.SH BOGUES -Probablement. -Voir ":help todo" pour consulter la liste des problèmes connus. -.PP -NOTE : Remarquez que bon nombre de points, qui pourraient être considérés comme -des bugs par certains, sont en fait dus à une reproduction trop fidèle -du comportement de Vi. Et si vous pensez que d'autres points sont des -bugs "parce que Vi le fait différemment", vous devriez jeter un oeil -attentif au fichier vi_diff.txt (ou taper ":help vi_diff.txt" dans Vim). -Regardez aussi les options 'compatible' et 'coptions'. -.SH TRADUCTION -Cette page de manuel a été traduite par Richard Hitier. -<richard.hitier@dial.oleane.com> 2000-08-07. -.br -Cette page de manuel a été mise à jour par David Blanchet. -<david.blanchet@free.fr> 2006-04-10. diff --git a/share/vim/vim73/doc/vim2html.pl b/share/vim/vim73/doc/vim2html.pl deleted file mode 100644 index d51f6070..00000000 --- a/share/vim/vim73/doc/vim2html.pl +++ /dev/null @@ -1,228 +0,0 @@ -#!/usr/bin/env perl - -# converts vim documentation to simple html -# Sirtaj Singh Kang (taj@kde.org) - -# Sun Feb 24 14:49:17 CET 2002 - -use strict; -use vars qw/%url $date/; - -%url = (); -$date = `date`; -chop $date; - -sub maplink -{ - my $tag = shift; - if( exists $url{ $tag } ){ - return $url{ $tag }; - } else { - #warn "Unknown hyperlink target: $tag\n"; - $tag =~ s/\.txt//; - $tag =~ s/</</g; - $tag =~ s/>/>/g; - return "<code class=\"badlink\">$tag</code>"; - } -} - -sub readTagFile -{ - my($tagfile) = @_; - my( $tag, $file, $name ); - - open(TAGS,"$tagfile") || die "can't read tags\n"; - - while( <TAGS> ) { - next unless /^(\S+)\s+(\S+)\s+/; - - $tag = $1; - my $label = $tag; - ($file= $2) =~ s/.txt$/.html/g; - $label =~ s/\.txt//; - - $url{ $tag } = "<a href=\"$file#".escurl($tag)."\">".esctext($label)."</a>"; - } - close( TAGS ); -} - -sub esctext -{ - my $text = shift; - $text =~ s/&/&/g; - $text =~ s/</</g; - $text =~ s/>/>/g; - return $text; -} - -sub escurl -{ - my $url = shift; - $url =~ s/"/%22/g; - $url =~ s/~/%7E/g; - $url =~ s/</%3C/g; - $url =~ s/>/%3E/g; - $url =~ s/=/%20/g; - $url =~ s/#/%23/g; - $url =~ s/\//%2F/g; - - return $url; -} - -sub vim2html -{ - my( $infile ) = @_; - my( $outfile ); - - open(IN, "$infile" ) || die "Couldn't read from $infile: $!.\n"; - - ($outfile = $infile) =~ s:.*/::g; - $outfile =~ s/\.txt$//g; - - open( OUT, ">$outfile.html" ) - || die "Couldn't write to $outfile.html: $!.\n"; - my $head = uc( $outfile ); - - print OUT<<EOF; -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> -<title>VIM: $outfile - - - -

$head

-
-EOF
-
-	my $inexample = 0;
-	while(  ) {
-		chop;
-		if ( /^\s*[-=]+\s*$/ ) {
-			print OUT "

";
-			next;
-		}
-
-		# examples
-		elsif( /^>$/ || /\s>$/ ) {
-			$inexample = 1;
-			chop;
-		}
-		elsif ( $inexample && /^([<\S])/ ) {
-			$inexample = 0;
-			$_ = $' if $1 eq "<";
-		}
-
-		s/\s+$//g;
-
-		# Various vim highlights. note that < and > have already been escaped
-		# so that HTML doesn't get screwed up.
-
-		my @out = ();
-		#		print "Text: $_\n";
-		LOOP:
-		foreach my $token ( split /((?:\|[^\|]+\|)|(?:\*[^\*]+\*))/ ) {
-			if ( $token =~ /^\|([^\|]+)\|/ ) {
-				# link
-				push( @out, "|".maplink( $1 )."|" );
-				next LOOP;
-			}
-			elsif ( $token =~ /^\*([^\*]+)\*/ ) {
-				# target
-				push( @out,
-					"\*".esctext($1)."<\/a>\*<\/b>");
-				next LOOP;
-			}
-
-			$_ = esctext($token);
-			s/CTRL-(\w+)/CTRL-$1<\/code>/g;
-			# parameter <...>
-			s/<(.*?)>/<$1><\/code>/g;
-
-			# parameter {...}
-			s/\{([^}]*)\}/{$1}<\/code>/g;
-
-			# parameter [...]
-			s/\[(range|line|count|offset|cmd|[-+]?num)\]/\[$1\]<\/code>/g;
-			# note
-			s/(Note:?)/$1<\/code>/gi;
-
-			# local heading
-			s/^(.*)\~$/$1<\/code>/g;
-			push( @out, $_ );
-		}
-
-		$_ = join( "", @out );
-
-		if( $inexample == 2 ) {
-			print OUT "$_\n";
-		} else {
-			print OUT $_,"\n";
-		}
-
-		$inexample = 2 if $inexample == 1;
-	}
-	print OUT<
-

Generated by vim2html on $date

- - -EOF - -} - -sub usage -{ -die< -EOF -} - - -sub writeCSS -{ - open( CSS, ">vim-stylesheet.css" ) || die "Couldn't write stylesheet: $!\n"; - print CSS< 2005-03-12. diff --git a/share/vim/vim73/doc/vimdiff-fr.UTF-8.1 b/share/vim/vim73/doc/vimdiff-fr.UTF-8.1 deleted file mode 100644 index d143588c..00000000 --- a/share/vim/vim73/doc/vimdiff-fr.UTF-8.1 +++ /dev/null @@ -1,53 +0,0 @@ -.TH VIMDIFF 1 "30 mars 2001" -.SH NOM -vimdiff \- ouvre deux, trois ou quatre versions d'un fichier dans Vim et -affiche leurs différences -.SH SYNOPSIS -.br -.B vimdiff -[options] fichier1 fichier2 [fichier3 [fichier4]] -.PP -.B gvimdiff -.SH DESCRIPTION -.B Vimdiff -démarre -.B Vim -avec deux (ou trois ou quatre) fichiers. -Chaque fichier est ouvert dans sa propre fenêtre. -Les différences entres ces fichiers sont mises en surbrillance. -C'est un outil très pratique pour visualiser et reporter les -changements entre deux versions d'un même fichier. -.PP -Consulter vim(1) pour des informations sur l'éditeur Vim lui-même. -.PP -Si -.B gvimdiff -est invoqué, l'IHM graphique est démarrée quand elle est disponible. -.PP -L'option 'diff' est activée dans chacune des fenêtres, ce qui provoque la mise -en surbrillance des différences. -.br -Les options 'wrap' et 'scrollbind' sont activées pour donner un aspect -agréable au texte. -.br -L'option 'foldmethod' est fixée à "diff", ce qui replie les lignes consécutives -identiques. 'foldcolumn' est fixé à 2 pour trouver les replis rapidement et -les ouvrir ou les fermer facilement. -.SH ARGUMENTS -La fenêtre de Vim est partagée verticalement afin d'afficher les lignes -correspondantes les unes en face des autres, comme si l'argument "\-O" était -spécifié. Utilisez l'argument "\-o" pour obtenir un partage horizontal à la -place. -.PP -Pour connaître les autres arguments disponibles, consultez vim(1). -.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 ":help credits" dans -.B Vim. -.SH TRADUCTION -Cette page de manuel a été traduite par David Blanchet - 2005-03-12. diff --git a/share/vim/vim73/doc/vimtutor-fr.1 b/share/vim/vim73/doc/vimtutor-fr.1 deleted file mode 100644 index 83671901..00000000 --- a/share/vim/vim73/doc/vimtutor-fr.1 +++ /dev/null @@ -1,59 +0,0 @@ -.TH VIMTUTOR 1 "2 avril 2001" -.SH NAME -vimtutor \- tutoriel Vim -.SH SYNOPSIS -.br -.B vimtutor [-g] [langue] -.SH DESCRIPTION -.B Vimtutor -lance le tutoriel -.B Vim -\. -Il copie d'abord le fichier du tutoriel, afin que vous puissiez le modifier -sans altérer le fichier original. -.PP -.B Vimtutor -est utile pour les personnes souhaitant apprendre leurs premières commandes -.B Vim -\. -.PP -L'argument optionnel -g lance vimtutor avec gvim plutôt qu'avec vim, si l'IHM -graphique de vim est disponible, ou le lance avec vim si gvim n'est pas -disponible. -.PP -L'argument optionnel [langue] est le nom d'une langue, spécifiée par son -symbole à deux lettres, tels que "it" ou "es". Si l'argument [langue] est omis, -la langue de la région linguistique actuelle sera retenue. Si le tutoriel est -disponible dans cette langue, il est proposé. Sinon, c'est la version anglaise -qui est proposée. -.PP -.B Vim -est toujours lancé en mode Compatible Vi. -.SH FICHIERS -.TP 15 -/usr/local/lib/vim/tutor/tutor[.langue] -Les fichiers textes de -.B Vimtutor -\. -.TP 15 -/usr/local/lib/vim/tutor/tutor.vim -Le script Vim utilisé pour copier les fichiers texte de -.B Vimtutor -\. -.SH AUTEUR -.B Vimtutor -a été écrit à l'origine pour Vi par Michael C. Pierce et Robert K. Ware, de la -Colorado School of Mines, en reprenant des idées émises par Charles Smith, de -la Colorado State University. -E-mail : bware@mines.colorado.edu. -.br -Il a été modifié pour -.B Vim -par Bram Moolenaar. -Pour connaître le nom des traducteurs, consultez les fichiers textes du -tutoriel. -.SH VOIR AUSSI -vim(1) -.SH TRADUCTION -Cette page de manuel a été traduite par David Blanchet - 2004-12-27. diff --git a/share/vim/vim73/doc/vimtutor-fr.UTF-8.1 b/share/vim/vim73/doc/vimtutor-fr.UTF-8.1 deleted file mode 100644 index 9bf474d8..00000000 --- a/share/vim/vim73/doc/vimtutor-fr.UTF-8.1 +++ /dev/null @@ -1,59 +0,0 @@ -.TH VIMTUTOR 1 "2 avril 2001" -.SH NAME -vimtutor \- tutoriel Vim -.SH SYNOPSIS -.br -.B vimtutor [-g] [langue] -.SH DESCRIPTION -.B Vimtutor -lance le tutoriel -.B Vim -\. -Il copie d'abord le fichier du tutoriel, afin que vous puissiez le modifier -sans altérer le fichier original. -.PP -.B Vimtutor -est utile pour les personnes souhaitant apprendre leurs premières commandes -.B Vim -\. -.PP -L'argument optionnel -g lance vimtutor avec gvim plutôt qu'avec vim, si l'IHM -graphique de vim est disponible, ou le lance avec vim si gvim n'est pas -disponible. -.PP -L'argument optionnel [langue] est le nom d'une langue, spécifiée par son -symbole à deux lettres, tels que "it" ou "es". Si l'argument [langue] est omis, -la langue de la région linguistique actuelle sera retenue. Si le tutoriel est -disponible dans cette langue, il est proposé. Sinon, c'est la version anglaise -qui est proposée. -.PP -.B Vim -est toujours lancé en mode Compatible Vi. -.SH FICHIERS -.TP 15 -/usr/local/lib/vim/tutor/tutor[.langue] -Les fichiers textes de -.B Vimtutor -\. -.TP 15 -/usr/local/lib/vim/tutor/tutor.vim -Le script Vim utilisé pour copier les fichiers texte de -.B Vimtutor -\. -.SH AUTEUR -.B Vimtutor -a été écrit à l'origine pour Vi par Michael C. Pierce et Robert K. Ware, de la -Colorado School of Mines, en reprenant des idées émises par Charles Smith, de -la Colorado State University. -E-mail : bware@mines.colorado.edu. -.br -Il a été modifié pour -.B Vim -par Bram Moolenaar. -Pour connaître le nom des traducteurs, consultez les fichiers textes du -tutoriel. -.SH VOIR AUSSI -vim(1) -.SH TRADUCTION -Cette page de manuel a été traduite par David Blanchet - 2004-12-27. diff --git a/share/vim/vim73/doc/visual.txt b/share/vim/vim73/doc/visual.txt deleted file mode 100644 index 8c50a290..00000000 --- a/share/vim/vim73/doc/visual.txt +++ /dev/null @@ -1,509 +0,0 @@ -*visual.txt* For Vim version 7.3. Last change: 2010 Feb 17 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Visual mode *Visual* *Visual-mode* *visual-mode* - -Visual mode is a flexible and easy way to select a piece of text for an -operator. It is the only way to select a block of text. - -This is introduced in section |04.4| of the user manual. - -1. Using Visual mode |visual-use| -2. Starting and stopping Visual mode |visual-start| -3. Changing the Visual area |visual-change| -4. Operating on the Visual area |visual-operators| -5. Blockwise operators |blockwise-operators| -6. Repeating |visual-repeat| -7. Examples |visual-examples| -8. Select mode |Select-mode| - -{Vi has no Visual mode, the name "visual" is used for Normal mode, to -distinguish it from Ex mode} -{not available when the |+visual| feature was disabled when compiling} - -============================================================================== -1. Using Visual mode *visual-use* - -Using Visual mode consists of three parts: -1. Mark the start of the text with "v", "V" or CTRL-V. - The character under the cursor will be used as the start. -2. Move to the end of the text. - The text from the start of the Visual mode up to and including the - character under the cursor is highlighted. -3. Type an operator command. - The highlighted characters will be operated upon. - -The 'highlight' option can be used to set the display mode to use for -highlighting in Visual mode. -The 'virtualedit' option can be used to allow positioning the cursor to -positions where there is no actual character. - -The highlighted text normally includes the character under the cursor. -However, when the 'selection' option is set to "exclusive" and the cursor is -after the Visual area, the character under the cursor is not included. - -With "v" the text before the start position and after the end position will -not be highlighted. However, all uppercase and non-alpha operators, except -"~" and "U", will work on whole lines anyway. See the list of operators -below. - - *visual-block* -With CTRL-V (blockwise Visual mode) the highlighted text will be a rectangle -between start position and the cursor. However, some operators work on whole -lines anyway (see the list below). The change and substitute operators will -delete the highlighted text and then start insertion at the top left -position. - -============================================================================== -2. Starting and stopping Visual mode *visual-start* - - *v* *characterwise-visual* -v start Visual mode per character. - - *V* *linewise-visual* -V start Visual mode linewise. - - *CTRL-V* *blockwise-visual* -CTRL-V start Visual mode blockwise. Note: Under Windows - CTRL-V could be mapped to paste text, it doesn't work - to start Visual mode then, see |CTRL-V-alternative|. - -If you use , click the left mouse button or use any command that -does a jump to another buffer while in Visual mode, the highlighting stops -and no text is affected. Also when you hit "v" in characterwise Visual mode, -"CTRL-V" in blockwise Visual mode or "V" in linewise Visual mode. If you hit -CTRL-Z the highlighting stops and the editor is suspended or a new shell is -started |CTRL-Z|. - - new mode after typing: *v_v* *v_CTRL-V* *v_V* -old mode "v" "CTRL-V" "V" ~ - -Normal Visual blockwise Visual linewise Visual -Visual Normal blockwise Visual linewise Visual -blockwise Visual Visual Normal linewise Visual -linewise Visual Visual blockwise Visual Normal - - *gv* *v_gv* *reselect-Visual* -gv Start Visual mode with the same area as the previous - area and the same mode. - In Visual mode the current and the previous Visual - area are exchanged. - After using "p" or "P" in Visual mode the text that - was put will be selected. - - ** - Set the current cursor position. If Visual mode is - active it is stopped. Only when 'mouse' option is - contains 'n' or 'a'. If the position is within 'so' - lines from the last line on the screen the text is - scrolled up. If the position is within 'so' lines from - the first line on the screen the text is scrolled - down. - - ** - Start Visual mode if it is not active. The text from - the cursor position to the position of the click is - highlighted. If Visual mode was already active move - the start or end of the highlighted text, which ever - is closest, to the position of the click. Only when - 'mouse' option contains 'n' or 'a'. - - Note: when 'mousemodel' is set to "popup", - has to be used instead of . - - ** - This works like a , if it is not at - the same position as . In an older version - of xterm you won't see the selected area until the - button is released, unless there is access to the - display where the xterm is running (via the DISPLAY - environment variable or the -display argument). Only - when 'mouse' option contains 'n' or 'a'. - -If Visual mode is not active and the "v", "V" or CTRL-V is preceded with a -count, the size of the previously highlighted area is used for a start. You -can then move the end of the highlighted area and give an operator. The type -of the old area is used (character, line or blockwise). -- Linewise Visual mode: The number of lines is multiplied with the count. -- Blockwise Visual mode: The number of lines and columns is multiplied with - the count. -- Normal Visual mode within one line: The number of characters is multiplied - with the count. -- Normal Visual mode with several lines: The number of lines is multiplied - with the count, in the last line the same number of characters is used as - in the last line in the previously highlighted area. -The start of the text is the Cursor position. If the "$" command was used as -one of the last commands to extend the highlighted text, the area will be -extended to the rightmost column of the longest line. - -If you want to highlight exactly the same area as the last time, you can use -"gv" |gv| |v_gv|. - - *v_* - In Visual mode: Stop Visual mode. - - *v_CTRL-C* -CTRL-C In Visual mode: Stop Visual mode. When insert mode is - pending (the mode message shows - "-- (insert) VISUAL --"), it is also stopped. - -============================================================================== -3. Changing the Visual area *visual-change* - - *v_o* -o Go to Other end of highlighted text: The current - cursor position becomes the start of the highlighted - text and the cursor is moved to the other end of the - highlighted text. The highlighted area remains the - same. - - *v_O* -O Go to Other end of highlighted text. This is like - "o", but in Visual block mode the cursor moves to the - other corner in the same line. When the corner is at - a character that occupies more than one position on - the screen (e.g., a ), the highlighted text may - change. - - *v_$* -When the "$" command is used with blockwise Visual mode, the right end of the -highlighted text will be determined by the longest highlighted line. This -stops when a motion command is used that does not move straight up or down. - -For moving the end of the block many commands can be used, but you cannot -use Ex commands, commands that make changes or abandon the file. Commands -(starting with) ".", "&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I -and CTRL-O cause a beep and Visual mode continues. - -When switching to another window on the same buffer, the cursor position in -that window is adjusted, so that the same Visual area is still selected. This -is especially useful to view the start of the Visual area in one window, and -the end in another. You can then use (or when -'mousemodel' is "popup") to drag either end of the Visual area. - -============================================================================== -4. Operating on the Visual area *visual-operators* - -The operators that can be used are: - ~ switch case |v_~| - d delete |v_d| - c change (4) |v_c| - y yank |v_y| - > shift right (4) |v_>| - < shift left (4) |v_<| - ! filter through external command (1) |v_!| - = filter through 'equalprg' option command (1) |v_=| - gq format lines to 'textwidth' length (1) |v_gq| - -The objects that can be used are: - aw a word (with white space) |v_aw| - iw inner word |v_iw| - aW a WORD (with white space) |v_aW| - iW inner WORD |v_iW| - as a sentence (with white space) |v_as| - is inner sentence |v_is| - ap a paragraph (with white space) |v_ap| - ip inner paragraph |v_ip| - ab a () block (with parenthesis) |v_ab| - ib inner () block |v_ib| - aB a {} block (with braces) |v_aB| - iB inner {} block |v_iB| - at a block (with tags) |v_at| - it inner block |v_it| - a< a <> block (with <>) |v_a<| - i< inner <> block |v_i<| - a[ a [] block (with []) |v_a[| - i[ inner [] block |v_i[| - a" a double quoted string (with quotes) |v_aquote| - i" inner double quoted string |v_iquote| - a' a single quoted string (with quotes) |v_a'| - i' inner simple quoted string |v_i'| - a` a string in backticks (with backticks) |v_a`| - i` inner string in backticks |v_i`| - -Additionally the following commands can be used: - : start Ex command for highlighted lines (1) |v_:| - r change (4) |v_r| - s change |v_s| - C change (2)(4) |v_C| - S change (2) |v_S| - R change (2) |v_R| - x delete |v_x| - D delete (3) |v_D| - X delete (2) |v_X| - Y yank (2) |v_Y| - p put |v_p| - J join (1) |v_J| - U make uppercase |v_U| - u make lowercase |v_u| - ^] find tag |v_CTRL-]| - I block insert |v_b_I| - A block append |v_b_A| - -(1): Always whole lines, see |:visual_example|. -(2): Whole lines when not using CTRL-V. -(3): Whole lines when not using CTRL-V, delete until the end of the line when - using CTRL-V. -(4): When using CTRL-V operates on the block only. - -Note that the ":vmap" command can be used to specifically map keys in Visual -mode. For example, if you would like the "/" command not to extend the Visual -area, but instead take the highlighted text and search for that: > - :vmap / y/" -(In the <> notation |<>|, when typing it you should type it literally; you -need to remove the 'B' and '<' flags from 'cpoptions'.) - -If you want to give a register name using the """ command, do this just before -typing the operator character: "v{move-around}"xd". - -If you want to give a count to the command, do this just before typing the -operator character: "v{move-around}3>" (move lines 3 indents to the right). - - *{move-around}* -The {move-around} is any sequence of movement commands. Note the difference -with {motion}, which is only ONE movement command. - -Another way to operate on the Visual area is using the |/\%V| item in a -pattern. For example, to replace all '(' in the Visual area with '#': > - - :%s/\%V(/X/g - -============================================================================== -5. Blockwise operators *blockwise-operators* - -{not available when compiled without the |+visualextra| feature} - -Reminder: Use 'virtualedit' to be able to select blocks that start or end -after the end of a line or halfway a tab. - -Visual-block Insert *v_b_I* -With a blockwise selection, I{string} will insert {string} at the start -of block on every line of the block, provided that the line extends into the -block. Thus lines that are short will remain unmodified. TABs are split to -retain visual columns. -See |v_b_I_example|. - -Visual-block Append *v_b_A* -With a blockwise selection, A{string} will append {string} to the end of -block on every line of the block. There is some differing behavior where the -block RHS is not straight, due to different line lengths: - -1. Block was created with $ - In this case the string is appended to the end of each line. -2. Block was created with {move-around} - In this case the string is appended to the end of the block on each line, - and whitespace is inserted to pad to the end-of-block column. -See |v_b_A_example|. -Note: "I" and "A" behave differently for lines that don't extend into the -selected block. This was done intentionally, so that you can do it the way -you want. - -Visual-block change *v_b_c* -All selected text in the block will be replaced by the same text string. When -using "c" the selected text is deleted and Insert mode started. You can then -enter text (without a line break). When you hit , the same string is -inserted in all previously selected lines. - -Visual-block Change *v_b_C* -Like using "c", but the selection is extended until the end of the line for -all lines. - - *v_b_<* -Visual-block Shift *v_b_>* -The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The -LHS of the block determines the point from which to apply a right shift, and -padding includes TABs optimally according to 'ts' and 'et'. The LHS of the -block determines the point upto which to shift left. -See |v_b_>_example|. -See |v_b_<_example|. - -Visual-block Replace *v_b_r* -Every screen char in the highlighted region is replaced with the same char, ie -TABs are split and the virtual whitespace is replaced, maintaining screen -layout. -See |v_b_r_example|. - - -============================================================================== -6. Repeating *visual-repeat* - -When repeating a Visual mode operator, the operator will be applied to the -same amount of text as the last time: -- Linewise Visual mode: The same number of lines. -- Blockwise Visual mode: The same number of lines and columns. -- Normal Visual mode within one line: The same number of characters. -- Normal Visual mode with several lines: The same number of lines, in the - last line the same number of characters as in the last line the last time. -The start of the text is the Cursor position. If the "$" command was used as -one of the last commands to extend the highlighted text, the repeating will -be applied up to the rightmost column of the longest line. - - -============================================================================== -7. Examples *visual-examples* - - *:visual_example* -Currently the ":" command works on whole lines only. When you select part of -a line, doing something like ":!date" will replace the whole line. If you -want only part of the line to be replaced you will have to make a mapping for -it. In a future release ":" may work on partial lines. - -Here is an example, to replace the selected text with the output of "date": > - :vmap _a `>a`!!datekJJ - -(In the <> notation |<>|, when typing it you should type it literally; you -need to remove the 'B' and '<' flags from 'cpoptions') - -What this does is: - stop Visual mode -`> go to the end of the Visual area -a break the line after the Visual area -`< jump to the start of the Visual area -i break the line before the Visual area -!!date filter the Visual text through date -kJJ Join the lines back together - - *visual-search* -Here is an idea for a mapping that makes it possible to do a search for the -selected text: > - :vmap X y/" - -(In the <> notation |<>|, when typing it you should type it literally; you -need to remove the 'B' and '<' flags from 'cpoptions') - -Note that special characters (like '.' and '*') will cause problems. - -Visual-block Examples *blockwise-examples* -With the following text, I will indicate the commands to produce the block and -the results below. In all cases, the cursor begins on the 'a' in the first -line of the test text. -The following modeline settings are assumed ":ts=8:sw=4:". - -It will be helpful to -:set hls -/ -where is a real TAB. This helps visualise the operations. - -The test text is: - -abcdefghijklmnopqrstuvwxyz -abc defghijklmnopqrstuvwxyz -abcdef ghi jklmnopqrstuvwxyz -abcdefghijklmnopqrstuvwxyz - -1. fo3jISTRING *v_b_I_example* - -abcdefghijklmnSTRINGopqrstuvwxyz -abc STRING defghijklmnopqrstuvwxyz -abcdef ghi STRING jklmnopqrstuvwxyz -abcdefghijklmnSTRINGopqrstuvwxyz - -2. fo3j$ASTRING *v_b_A_example* - -abcdefghijklmnopqrstuvwxyzSTRING -abc defghijklmnopqrstuvwxyzSTRING -abcdef ghi jklmnopqrstuvwxyzSTRING -abcdefghijklmnopqrstuvwxyzSTRING - -3. fo3j3l<.. *v_b_<_example* - -abcdefghijklmnopqrstuvwxyz -abc defghijklmnopqrstuvwxyz -abcdef ghi jklmnopqrstuvwxyz -abcdefghijklmnopqrstuvwxyz - -4. fo3j>.. *v_b_>_example* - -abcdefghijklmn opqrstuvwxyz -abc defghijklmnopqrstuvwxyz -abcdef ghi jklmnopqrstuvwxyz -abcdefghijklmn opqrstuvwxyz - -5. fo5l3jrX *v_b_r_example* - -abcdefghijklmnXXXXXXuvwxyz -abc XXXXXXhijklmnopqrstuvwxyz -abcdef ghi XXXXXX jklmnopqrstuvwxyz -abcdefghijklmnXXXXXXuvwxyz - -============================================================================== -8. Select mode *Select* *Select-mode* - -Select mode looks like Visual mode, but the commands accepted are quite -different. This resembles the selection mode in Microsoft Windows. -When the 'showmode' option is set, "-- SELECT --" is shown in the last line. - -Entering Select mode: -- Using the mouse to select an area, and 'selectmode' contains "mouse". - 'mouse' must also contain a flag for the current mode. -- Using a non-printable movement command, with the Shift key pressed, and - 'selectmode' contains "key". For example: and . 'keymodel' - must also contain "startsel". -- Using "v", "V" or CTRL-V command, and 'selectmode' contains "cmd". -- Using "gh", "gH" or "g_CTRL-H" command in Normal mode. -- From Visual mode, press CTRL-G. *v_CTRL-G* - -Commands in Select mode: -- Printable characters, and cause the selection to be deleted, and - Vim enters Insert mode. The typed character is inserted. -- Non-printable movement commands, with the Shift key pressed, extend the - selection. 'keymodel' must include "startsel". -- Non-printable movement commands, with the Shift key NOT pressed, stop Select - mode. 'keymodel' must include "stopsel". -- ESC stops Select mode. -- CTRL-O switches to Visual mode for the duration of one command. *v_CTRL-O* -- CTRL-G switches to Visual mode. - -Otherwise, typed characters are handled as in Visual mode. - -When using an operator in Select mode, and the selection is linewise, the -selected lines are operated upon, but like in characterwise selection. For -example, when a whole line is deleted, it can later be pasted halfway a line. - - -Mappings and menus in Select mode. *Select-mode-mapping* - -When mappings and menus are defined with the |:vmap| or |:vmenu| command they -work both in Visual mode and in Select mode. When these are used in Select -mode Vim automatically switches to Visual mode, so that the same behavior as -in Visual mode is effective. If you don't want this use |:xmap| or |:smap|. - -Users will expect printable characters to replace the selected area. -Therefore avoid mapping printable characters in Select mode. Or use -|:sunmap| after |:map| and |:vmap| to remove it for Select mode. - -After the mapping or menu finishes, the selection is enabled again and Select -mode entered, unless the selected area was deleted, another buffer became -the current one or the window layout was changed. - -When a character was typed that causes the selection to be deleted and Insert -mode started, Insert mode mappings are applied to this character. This may -cause some confusion, because it means Insert mode mappings apply to a -character typed in Select mode. Language mappings apply as well. - - *gV* *v_gV* -gV Avoid the automatic reselection of the Visual area - after a Select mode mapping or menu has finished. - Put this just before the end of the mapping or menu. - At least it should be after any operations on the - selection. - - *gh* -gh Start Select mode, characterwise. This is like "v", - but starts Select mode instead of Visual mode. - Mnemonic: "get highlighted". - - *gH* -gH Start Select mode, linewise. This is like "V", - but starts Select mode instead of Visual mode. - Mnemonic: "get Highlighted". - - *g_CTRL-H* -g CTRL-H Start Select mode, blockwise. This is like CTRL-V, - but starts Select mode instead of Visual mode. - Mnemonic: "get Highlighted". - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/windows.txt b/share/vim/vim73/doc/windows.txt deleted file mode 100644 index ccb98011..00000000 --- a/share/vim/vim73/doc/windows.txt +++ /dev/null @@ -1,1194 +0,0 @@ -*windows.txt* For Vim version 7.3. Last change: 2010 Aug 15 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Editing with multiple windows and buffers. *windows* *buffers* - -The commands which have been added to use multiple windows and buffers are -explained here. Additionally, there are explanations for commands that work -differently when used in combination with more than one window. - -The basics are explained in chapter 7 and 8 of the user manual |usr_07.txt| -|usr_08.txt|. - -1. Introduction |windows-intro| -2. Starting Vim |windows-starting| -3. Opening and closing a window |opening-window| -4. Moving cursor to other windows |window-move-cursor| -5. Moving windows around |window-moving| -6. Window resizing |window-resize| -7. Argument and buffer list commands |buffer-list| -8. Do a command in all buffers or windows |list-repeat| -9. Tag or file name under the cursor |window-tag| -10. The preview window |preview-window| -11. Using hidden buffers |buffer-hidden| -12. Special kinds of buffers |special-buffers| - -{Vi does not have any of these commands} -{not able to use multiple windows when the |+windows| feature was disabled at -compile time} -{not able to use vertically split windows when the |+vertsplit| feature was -disabled at compile time} - -============================================================================== -1. Introduction *windows-intro* *window* - -Summary: - A buffer is the in-memory text of a file. - A window is a viewport on a buffer. - A tab page is a collection of windows. - -A window is a viewport onto a buffer. You can use multiple windows on one -buffer, or several windows on different buffers. - -A buffer is a file loaded into memory for editing. The original file remains -unchanged until you write the buffer to the file. - -A buffer can be in one of three states: - - *active-buffer* -active: The buffer is displayed in a window. If there is a file for this - buffer, it has been read into the buffer. The buffer may have been - modified since then and thus be different from the file. - *hidden-buffer* -hidden: The buffer is not displayed. If there is a file for this buffer, it - has been read into the buffer. Otherwise it's the same as an active - buffer, you just can't see it. - *inactive-buffer* -inactive: The buffer is not displayed and does not contain anything. Options - for the buffer are remembered if the file was once loaded. It can - contain marks from the |viminfo| file. But the buffer doesn't - contain text. - -In a table: - -state displayed loaded ":buffers" ~ - in window shows ~ -active yes yes 'a' -hidden no yes 'h' -inactive no no ' ' - -Note: All CTRL-W commands can also be executed with |:wincmd|, for those -places where a Normal mode command can't be used or is inconvenient. - -The main Vim window can hold several split windows. There are also tab pages -|tab-page|, each of which can hold multiple windows. - -============================================================================== -2. Starting Vim *windows-starting* - -By default, Vim starts with one window, just like Vi. - -The "-o" and "-O" arguments to Vim can be used to open a window for each file -in the argument list. The "-o" argument will split the windows horizontally; -the "-O" argument will split the windows vertically. If both "-o" and "-O" -are given, the last one encountered will be used to determine the split -orientation. For example, this will open three windows, split horizontally: > - vim -o file1 file2 file3 - -"-oN", where N is a decimal number, opens N windows split horizontally. If -there are more file names than windows, only N windows are opened and some -files do not get a window. If there are more windows than file names, the -last few windows will be editing empty buffers. Similarly, "-ON" opens N -windows split vertically, with the same restrictions. - -If there are many file names, the windows will become very small. You might -want to set the 'winheight' and/or 'winwidth' options to create a workable -situation. - -Buf/Win Enter/Leave |autocommand|s are not executed when opening the new -windows and reading the files, that's only done when they are really entered. - - *status-line* -A status line will be used to separate windows. The 'laststatus' option tells -when the last window also has a status line: - 'laststatus' = 0 never a status line - 'laststatus' = 1 status line if there is more than one window - 'laststatus' = 2 always a status line - -You can change the contents of the status line with the 'statusline' option. -This option can be local to the window, so that you can have a different -status line in each window. - -Normally, inversion is used to display the status line. This can be changed -with the 's' character in the 'highlight' option. For example, "sb" sets it to -bold characters. If no highlighting is used for the status line ("sn"), the -'^' character is used for the current window, and '=' for other windows. If -the mouse is supported and enabled with the 'mouse' option, a status line can -be dragged to resize windows. - -Note: If you expect your status line to be in reverse video and it isn't, -check if the 'highlight' option contains "si". In version 3.0, this meant to -invert the status line. Now it should be "sr", reverse the status line, as -"si" now stands for italic! If italic is not available on your terminal, the -status line is inverted anyway; you will only see this problem on terminals -that have termcap codes for italics. - -============================================================================== -3. Opening and closing a window *opening-window* *E36* - -CTRL-W s *CTRL-W_s* -CTRL-W S *CTRL-W_S* -CTRL-W CTRL-S *CTRL-W_CTRL-S* -:[N]sp[lit] [++opt] [+cmd] *:sp* *:split* - Split current window in two. The result is two viewports on - the same file. Make new window N high (default is to use half - the height of the current window). Reduces the current window - height to create room (and others, if the 'equalalways' option - is set, 'eadirection' isn't "hor", and one of them is higher - than the current or the new window). - Note: CTRL-S does not work on all terminals and might block - further input, use CTRL-Q to get going again. - Also see |++opt| and |+cmd|. - -CTRL-W CTRL-V *CTRL-W_CTRL-V* -CTRL-W v *CTRL-W_v* -:[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit* - Like |:split|, but split vertically. The windows will be - spread out horizontally if - 1. a width was not specified, - 2. 'equalalways' is set, - 3. 'eadirection' isn't "ver", and - 4. one of the other windows is wider than the current or new - window. - Note: In other places CTRL-Q does the same as CTRL-V, but here - it doesn't! - -CTRL-W n *CTRL-W_n* -CTRL-W CTRL_N *CTRL-W_CTRL-N* -:[N]new [++opt] [+cmd] *:new* - Create a new window and start editing an empty file in it. - Make new window N high (default is to use half the existing - height). Reduces the current window height to create room (and - others, if the 'equalalways' option is set and 'eadirection' - isn't "hor"). - Also see |++opt| and |+cmd|. - If 'fileformats' is not empty, the first format given will be - used for the new buffer. If 'fileformats' is empty, the - 'fileformat' of the current buffer is used. This can be - overridden with the |++opt| argument. - Autocommands are executed in this order: - 1. WinLeave for the current window - 2. WinEnter for the new window - 3. BufLeave for the current buffer - 4. BufEnter for the new buffer - This behaves like a ":split" first, and then a ":e" command. - -:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew* - Like |:new|, but split vertically. If 'equalalways' is set - and 'eadirection' isn't "ver" the windows will be spread out - horizontally, unless a width was specified. - -:[N]new [++opt] [+cmd] {file} -:[N]sp[lit] [++opt] [+cmd] {file} *:split_f* - Create a new window and start editing file {file} in it. - If [+cmd] is given, execute the command when the file has been - loaded |+cmd|. - Also see |++opt|. - Make new window N high (default is to use half the existing - height). Reduces the current window height to create room - (and others, if the 'equalalways' option is set). - -:[N]sv[iew] [++opt] [+cmd] {file} *:sv* *:sview* *splitview* - Same as ":split", but set 'readonly' option for this buffer. - -:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfind* *splitfind* - Same as ":split", but search for {file} in 'path' like in - |:find|. Doesn't split if {file} is not found. - -CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^* -CTRL-W ^ Does ":split #", split window in two and edit alternate file. - When a count is given, it becomes ":split #N", split window - and edit buffer N. - -Note that the 'splitbelow' and 'splitright' options influence where a new -window will appear. - - *:vert* *:vertical* -:vert[ical] {cmd} - Execute {cmd}. If it contains a command that splits a window, - it will be split vertically. - Doesn't work for |:execute| and |:normal|. - -:lefta[bove] {cmd} *:lefta* *:leftabove* -:abo[veleft] {cmd} *:abo* *:aboveleft* - Execute {cmd}. If it contains a command that splits a window, - it will be opened left (vertical split) or above (horizontal - split) the current window. Overrules 'splitbelow' and - 'splitright'. - Doesn't work for |:execute| and |:normal|. - -:rightb[elow] {cmd} *:rightb* *:rightbelow* -:bel[owright] {cmd} *:bel* *:belowright* - Execute {cmd}. If it contains a command that splits a window, - it will be opened right (vertical split) or below (horizontal - split) the current window. Overrules 'splitbelow' and - 'splitright'. - Doesn't work for |:execute| and |:normal|. - - *:topleft* *E442* -:to[pleft] {cmd} - Execute {cmd}. If it contains a command that splits a window, - it will appear at the top and occupy the full width of the Vim - window. When the split is vertical the window appears at the - far left and occupies the full height of the Vim window. - Doesn't work for |:execute| and |:normal|. - - *:botright* -:bo[tright] {cmd} - Execute {cmd}. If it contains a command that splits a window, - it will appear at the bottom and occupy the full width of the - Vim window. When the split is vertical the window appears at - the far right and occupies the full height of the Vim window. - Doesn't work for |:execute| and |:normal|. - -These command modifiers can be combined to make a vertically split window -occupy the full height. Example: > - :vertical topleft edit tags -Opens a vertically split, full-height window on the "tags" file at the far -left of the Vim window. - - -Closing a window ----------------- - -CTRL-W q *CTRL-W_q* -CTRL-W CTRL-Q *CTRL-W_CTRL-Q* -:q[uit] Quit current window. When quitting the last window (not - counting a help window), exit Vim. - When 'hidden' is set, and there is only one window for the - current buffer, it becomes hidden. - When 'hidden' is not set, and there is only one window for the - current buffer, and the buffer was changed, the command fails. - (Note: CTRL-Q does not work on all terminals) - -:q[uit]! Quit current window. If this was the last window for a buffer, - any changes to that buffer are lost. When quitting the last - window (not counting help windows), exit Vim. The contents of - the buffer are lost, even when 'hidden' is set. - -CTRL-W c *CTRL-W_c* *:clo* *:close* -:clo[se][!] Close current window. When the 'hidden' option is set, or - when the buffer was changed and the [!] is used, the buffer - becomes hidden (unless there is another window editing it). - When there is only one window in the current tab page and - there is another tab page, this closes the current tab page. - |tab-page|. - This command fails when: *E444* - - There is only one window on the screen. - - When 'hidden' is not set, [!] is not used, the buffer has - changes, and there is no other window on this buffer. - Changes to the buffer are not written and won't get lost, so - this is a "safe" command. - -CTRL-W CTRL-C *CTRL-W_CTRL-C* - You might have expected that CTRL-W CTRL-C closes the current - window, but that does not work, because the CTRL-C cancels the - command. - - *:hide* -:hid[e] Quit current window, unless it is the last window on the - screen. The buffer becomes hidden (unless there is another - window editing it or 'bufhidden' is "unload" or "delete"). - If the window is the last one in the current tab page the tab - page is closed. |tab-page| - The value of 'hidden' is irrelevant for this command. - Changes to the buffer are not written and won't get lost, so - this is a "safe" command. - -:hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of - 'hidden' is restored after {cmd} has been executed. - Example: > - :hide edit Makefile -< This will edit "Makefile", and hide the current buffer if it - has any changes. - -CTRL-W o *CTRL-W_o* *E445* -CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* -:on[ly][!] Make the current window the only one on the screen. All other - windows are closed. - When the 'hidden' option is set, all buffers in closed windows - become hidden. - When 'hidden' is not set, and the 'autowrite' option is set, - modified buffers are written. Otherwise, windows that have - buffers that are modified are not removed, unless the [!] is - given, then they become hidden. But modified buffers are - never abandoned, so changes cannot get lost. - -============================================================================== -4. Moving cursor to other windows *window-move-cursor* - -CTRL-W *CTRL-W_* -CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j* -CTRL-W j Move cursor to Nth window below current one. Uses the cursor - position to select between alternatives. - -CTRL-W *CTRL-W_* -CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k* -CTRL-W k Move cursor to Nth window above current one. Uses the cursor - position to select between alternatives. - -CTRL-W *CTRL-W_* -CTRL-W CTRL-H *CTRL-W_CTRL-H* -CTRL-W *CTRL-W_* *CTRL-W_h* -CTRL-W h Move cursor to Nth window left of current one. Uses the - cursor position to select between alternatives. - -CTRL-W *CTRL-W_* -CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l* -CTRL-W l Move cursor to Nth window right of current one. Uses the - cursor position to select between alternatives. - -CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W* -CTRL-W CTRL-W Without count: move cursor to window below/right of the - current one. If there is no window below or right, go to - top-left window. - With count: go to Nth window (windows are numbered from - top-left to bottom-right). To obtain the window number see - |bufwinnr()| and |winnr()|. When N is larger than the number - of windows go to the last window. - - *CTRL-W_W* -CTRL-W W Without count: move cursor to window above/left of current - one. If there is no window above or left, go to bottom-right - window. With count: go to Nth window, like with CTRL-W w. - -CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T* -CTRL-W CTRL-T Move cursor to top-left window. - -CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B* -CTRL-W CTRL-B Move cursor to bottom-right window. - -CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P* -CTRL-W CTRL-P Go to previous (last accessed) window. - - *CTRL-W_P* *E441* -CTRL-W P Go to preview window. When there is no preview window this is - an error. - {not available when compiled without the |+quickfix| feature} - -If Visual mode is active and the new window is not for the same buffer, the -Visual mode is ended. If the window is on the same buffer, the cursor -position is set to keep the same Visual area selected. - - *:winc* *:wincmd* -These commands can also be executed with ":wincmd": - -:[count]winc[md] {arg} - Like executing CTRL-W [count] {arg}. Example: > - :wincmd j -< Moves to the window below the current one. - This command is useful when a Normal mode cannot be used (for - the |CursorHold| autocommand event). Or when a Normal mode - command is inconvenient. - The count can also be a window number. Example: > - :exe nr . "wincmd w" -< This goes to window "nr". - -============================================================================== -5. Moving windows around *window-moving* - -CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443* -CTRL-W CTRL-R Rotate windows downwards/rightwards. The first window becomes - the second one, the second one becomes the third one, etc. - The last window becomes the first window. The cursor remains - in the same window. - This only works within the row or column of windows that the - current window is in. - - *CTRL-W_R* -CTRL-W R Rotate windows upwards/leftwards. The second window becomes - the first one, the third one becomes the second one, etc. The - first window becomes the last window. The cursor remains in - the same window. - This only works within the row or column of windows that the - current window is in. - -CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X* -CTRL-W CTRL-X Without count: Exchange current window with next one. If there - is no next window, exchange with previous window. - With count: Exchange current window with Nth window (first - window is 1). The cursor is put in the other window. - When vertical and horizontal window splits are mixed, the - exchange is only done in the row or column of windows that the - current window is in. - -The following commands can be used to change the window layout. For example, -when there are two vertically split windows, CTRL-W K will change that in -horizontally split windows. CTRL-W H does it the other way around. - - *CTRL-W_K* -CTRL-W K Move the current window to be at the very top, using the full - width of the screen. This works like closing the current - window and then creating another one with ":topleft split", - except that the current window contents is used for the new - window. - - *CTRL-W_J* -CTRL-W J Move the current window to be at the very bottom, using the - full width of the screen. This works like closing the current - window and then creating another one with ":botright split", - except that the current window contents is used for the new - window. - - *CTRL-W_H* -CTRL-W H Move the current window to be at the far left, using the - full height of the screen. This works like closing the - current window and then creating another one with - ":vert topleft split", except that the current window contents - is used for the new window. - {not available when compiled without the |+vertsplit| feature} - - *CTRL-W_L* -CTRL-W L Move the current window to be at the far right, using the full - height of the screen. This works like closing the - current window and then creating another one with - ":vert botright split", except that the current window - contents is used for the new window. - {not available when compiled without the |+vertsplit| feature} - - *CTRL-W_T* -CTRL-W T Move the current window to a new tab page. This fails if - there is only one window in the current tab page. - When a count is specified the new tab page will be opened - before the tab page with this index. Otherwise it comes after - the current tab page. - -============================================================================== -6. Window resizing *window-resize* - - *CTRL-W_=* -CTRL-W = Make all windows (almost) equally high and wide, but use - 'winheight' and 'winwidth' for the current window. - Windows with 'winfixheight' set keep their height and windows - with 'winfixwidth' set keep their width. - -:res[ize] -N *:res* *:resize* *CTRL-W_-* -CTRL-W - Decrease current window height by N (default 1). - If used after |:vertical|: decrease width by N. - -:res[ize] +N *CTRL-W_+* -CTRL-W + Increase current window height by N (default 1). - If used after |:vertical|: increase width by N. - -:res[ize] [N] -CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__* -CTRL-W _ Set current window height to N (default: highest possible). - -z{nr} Set current window height to {nr}. - - *CTRL-W_<* -CTRL-W < Decrease current window width by N (default 1). - - *CTRL-W_>* -CTRL-W > Increase current window width by N (default 1). - -:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar* -CTRL-W | Set current window width to N (default: widest possible). - -You can also resize a window by dragging a status line up or down with the -mouse. Or by dragging a vertical separator line left or right. This only -works if the version of Vim that is being used supports the mouse and the -'mouse' option has been set to enable it. - -The option 'winheight' ('wh') is used to set the minimal window height of the -current window. This option is used each time another window becomes the -current window. If the option is '0', it is disabled. Set 'winheight' to a -very large value, e.g., '9999', to make the current window always fill all -available space. Set it to a reasonable value, e.g., '10', to make editing in -the current window comfortable. - -The equivalent 'winwidth' ('wiw') option is used to set the minimal width of -the current window. - -When the option 'equalalways' ('ea') is set, all the windows are automatically -made the same size after splitting or closing a window. If you don't set this -option, splitting a window will reduce the size of the current window and -leave the other windows the same. When closing a window, the extra lines are -given to the window above it. - -The 'eadirection' option limits the direction in which the 'equalalways' -option is applied. The default "both" resizes in both directions. When the -value is "ver" only the heights of windows are equalized. Use this when you -have manually resized a vertically split window and want to keep this width. -Likewise, "hor" causes only the widths of windows to be equalized. - -The option 'cmdheight' ('ch') is used to set the height of the command-line. -If you are annoyed by the |hit-enter| prompt for long messages, set this -option to 2 or 3. - -If there is only one window, resizing that window will also change the command -line height. If there are several windows, resizing the current window will -also change the height of the window below it (and sometimes the window above -it). - -The minimal height and width of a window is set with 'winminheight' and -'winminwidth'. These are hard values, a window will never become smaller. - -============================================================================== -7. Argument and buffer list commands *buffer-list* - - args list buffer list meaning ~ -1. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N -2. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf -3. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf -4. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf -5. :rewind / :first 15. :brewind / :bfirst to first arg/buf -6. :last 16. :blast to last arg/buf -7. :all 17. :ball edit all args/buffers - 18. :unhide edit all loaded buffers - 19. :[N]bmod [N] to Nth modified buf - - split & args list split & buffer list meaning ~ -21. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N -22. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf -23. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf -24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf -25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf -26. :slast 36. :sblast split + to last arg/buf -27. :sall 37. :sball edit all args/buffers - 38. :sunhide edit all loaded buffers - 39. :[N]sbmod [N] split + to Nth modified buf - -40. :args list of arguments -41. :buffers list of buffers - -The meaning of [N] depends on the command: - [N] is number of buffers to go forward/backward on ?2, ?3, and ?4 - [N] is an argument number, defaulting to current argument, for 1 and 21 - [N] is a buffer number, defaulting to current buffer, for 11 and 31 - [N] is a count for 19 and 39 - -Note: ":next" is an exception, because it must accept a list of file names -for compatibility with Vi. - - -The argument list and multiple windows --------------------------------------- - -The current position in the argument list can be different for each window. -Remember that when doing ":e file", the position in the argument list stays -the same, but you are not editing the file at that position. To indicate -this, the file message (and the title, if you have one) shows -"(file (N) of M)", where "(N)" is the current position in the file list, and -"M" the number of files in the file list. - -All the entries in the argument list are added to the buffer list. Thus, you -can also get to them with the buffer list commands, like ":bnext". - -:[N]al[l][!] [N] *:al* *:all* *:sal* *:sall* -:[N]sal[l][!] [N] - Rearrange the screen to open one window for each argument. - All other windows are closed. When a count is given, this is - the maximum number of windows to open. - With the |:tab| modifier open a tab page for each argument. - When there are more arguments than 'tabpagemax' further ones - become split windows in the last tab page. - When the 'hidden' option is set, all buffers in closed windows - become hidden. - When 'hidden' is not set, and the 'autowrite' option is set, - modified buffers are written. Otherwise, windows that have - buffers that are modified are not removed, unless the [!] is - given, then they become hidden. But modified buffers are - never abandoned, so changes cannot get lost. - [N] is the maximum number of windows to open. 'winheight' - also limits the number of windows opened ('winwidth' if - |:vertical| was prepended). - Buf/Win Enter/Leave autocommands are not executed for the new - windows here, that's only done when they are really entered. - -:[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument* - Short for ":split | argument [N]": split window and go to Nth - argument. But when there is no such argument, the window is - not split. Also see |++opt| and |+cmd|. - -:[N]sn[ext][!] [++opt] [+cmd] [file ..] *:sn* *:snext* - Short for ":split | [N]next": split window and go to Nth next - argument. But when there is no next file, the window is not - split. Also see |++opt| and |+cmd|. - -:[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious* -:[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext* - Short for ":split | [N]Next": split window and go to Nth - previous argument. But when there is no previous file, the - window is not split. Also see |++opt| and |+cmd|. - - *:sre* *:srewind* -:sre[wind][!] [++opt] [+cmd] - Short for ":split | rewind": split window and go to first - argument. But when there is no argument list, the window is - not split. Also see |++opt| and |+cmd|. - - *:sfir* *:sfirst* -:sfir[st] [++opt] [+cmd] - Same as ":srewind". - - *:sla* *:slast* -:sla[st][!] [++opt] [+cmd] - Short for ":split | last": split window and go to last - argument. But when there is no argument list, the window is - not split. Also see |++opt| and |+cmd|. - - *:dr* *:drop* -:dr[op] [++opt] [+cmd] {file} .. - Edit the first {file} in a window. - - If the file is already open in a window change to that - window. - - If the file is not open in a window edit the file in the - current window. If the current buffer can't be |abandon|ed, - the window is split first. - The |argument-list| is set, like with the |:next| command. - The purpose of this command is that it can be used from a - program that wants Vim to edit another file, e.g., a debugger. - When using the |:tab| modifier each argument is opened in a - tab page. The last window is used if it's empty. - Also see |++opt| and |+cmd|. - {only available when compiled with a GUI} - -============================================================================== -8. Do a command in all buffers or windows *list-repeat* - - *:windo* -:windo {cmd} Execute {cmd} in each window. - It works like doing this: > - CTRL-W t - :{cmd} - CTRL-W w - :{cmd} - etc. -< This only operates in the current tab page. - When an error is detected on one window, further - windows will not be visited. - The last window (or where an error occurred) becomes - the current window. - {cmd} can contain '|' to concatenate several commands. - {cmd} must not open or close windows or reorder them. - {not in Vi} {not available when compiled without the - |+listcmds| feature} - Also see |:tabdo|, |:argdo| and |:bufdo|. - - *:bufdo* -:bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list. - It works like doing this: > - :bfirst - :{cmd} - :bnext - :{cmd} - etc. -< When the current file can't be |abandon|ed and the [!] - is not present, the command fails. - When an error is detected on one buffer, further - buffers will not be visited. - Unlisted buffers are skipped. - The last buffer (or where an error occurred) becomes - the current buffer. - {cmd} can contain '|' to concatenate several commands. - {cmd} must not delete buffers or add buffers to the - buffer list. - Note: While this command is executing, the Syntax - autocommand event is disabled by adding it to - 'eventignore'. This considerably speeds up editing - each buffer. - {not in Vi} {not available when compiled without the - |+listcmds| feature} - Also see |:tabdo|, |:argdo| and |:windo|. - -Examples: > - - :windo set nolist nofoldcolumn | normal zn - -This resets the 'list' option and disables folding in all windows. > - - :bufdo set fileencoding= | update - -This resets the 'fileencoding' in each buffer and writes it if this changed -the buffer. The result is that all buffers will use the 'encoding' encoding -(if conversion works properly). - -============================================================================== -9. Tag or file name under the cursor *window-tag* - - *:sta* *:stag* -:sta[g][!] [tagname] - Does ":tag[!] [tagname]" and splits the window for the found - tag. See also |:tag|. - -CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* -CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a - tag and jump to it in the new upper window. Make new window N - high. - - *CTRL-W_g]* -CTRL-W g ] Split current window in two. Use identifier under cursor as a - tag and perform ":tselect" on it in the new upper window. - Make new window N high. - - *CTRL-W_g_CTRL-]* -CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a - tag and perform ":tjump" on it in the new upper window. Make - new window N high. - -CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* -CTRL-W CTRL-F Split current window in two. Edit file name under cursor. - Like ":split gf", but window isn't split if the file does not - exist. - Uses the 'path' variable as a list of directory names where to - look for the file. Also the path for current file is - used to search for the file name. - If the name is a hypertext link that looks like - "type://machine/path", only "/path" is used. - If a count is given, the count'th matching file is edited. - {not available when the |+file_in_path| feature was disabled - at compile time} - -CTRL-W F *CTRL-W_F* - Split current window in two. Edit file name under cursor and - jump to the line number following the file name. See |gF| for - details on how the line number is obtained. - {not available when the |+file_in_path| feature was disabled - at compile time} - -CTRL-W gf *CTRL-W_gf* - Open a new tab page and edit the file name under the cursor. - Like "tab split" and "gf", but the new tab page isn't created - if the file does not exist. - {not available when the |+file_in_path| feature was disabled - at compile time} - -CTRL-W gF *CTRL-W_gF* - Open a new tab page and edit the file name under the cursor - and jump to the line number following the file name. Like - "tab split" and "gF", but the new tab page isn't created if - the file does not exist. - {not available when the |+file_in_path| feature was disabled - at compile time} - -Also see |CTRL-W_CTRL-I|: open window for an included file that includes -the keyword under the cursor. - -============================================================================== -10. The preview window *preview-window* - -The preview window is a special window to show (preview) another file. It is -normally a small window used to show an include file or definition of a -function. -{not available when compiled without the |+quickfix| feature} - -There can be only one preview window (per tab page). It is created with one -of the commands below. The 'previewheight' option can be set to specify the -height of the preview window when it's opened. The 'previewwindow' option is -set in the preview window to be able to recognize it. The 'winfixheight' -option is set to have it keep the same height when opening/closing other -windows. - - *:pta* *:ptag* -:pta[g][!] [tagname] - Does ":tag[!] [tagname]" and shows the found tag in a - "Preview" window without changing the current buffer or cursor - position. If a "Preview" window already exists, it is re-used - (like a help window is). If a new one is opened, - 'previewheight' is used for the height of the window. See - also |:tag|. - See below for an example. |CursorHold-example| - Small difference from |:tag|: When [tagname] is equal to the - already displayed tag, the position in the matching tag list - is not reset. This makes the CursorHold example work after a - |:ptnext|. - -CTRL-W z *CTRL-W_z* -CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose* -:pc[lose][!] Close any "Preview" window currently open. When the 'hidden' - option is set, or when the buffer was changed and the [!] is - used, the buffer becomes hidden (unless there is another - window editing it). The command fails if any "Preview" buffer - cannot be closed. See also |:close|. - - *:pp* *:ppop* -:[count]pp[op][!] - Does ":[count]pop[!]" in the preview window. See |:pop| and - |:ptag|. {not in Vi} - -CTRL-W } *CTRL-W_}* - Use identifier under cursor as a tag and perform a :ptag on - it. Make the new Preview window (if required) N high. If N is - not given, 'previewheight' is used. - -CTRL-W g } *CTRL-W_g}* - Use identifier under cursor as a tag and perform a :ptjump on - it. Make the new Preview window (if required) N high. If N is - not given, 'previewheight' is used. - - *:ped* *:pedit* -:ped[it][!] [++opt] [+cmd] {file} - Edit {file} in the preview window. The preview window is - opened like with |:ptag|. The current window and cursor - position isn't changed. Useful example: > - :pedit +/fputc /usr/include/stdio.h -< - *:ps* *:psearch* -:[range]ps[earch][!] [count] [/]pattern[/] - Works like |:ijump| but shows the found match in the preview - window. The preview window is opened like with |:ptag|. The - current window and cursor position isn't changed. Useful - example: > - :psearch popen -< Like with the |:ptag| command, you can use this to - automatically show information about the word under the - cursor. This is less clever than using |:ptag|, but you don't - need a tags file and it will also find matches in system - include files. Example: > - :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("") -< Warning: This can be slow. - -Example *CursorHold-example* > - - :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("") - -This will cause a ":ptag" to be executed for the keyword under the cursor, -when the cursor hasn't moved for the time set with 'updatetime'. The "nested" -makes other autocommands be executed, so that syntax highlighting works in the -preview window. The "silent!" avoids an error message when the tag could not -be found. Also see |CursorHold|. To disable this again: > - - :au! CursorHold - -A nice addition is to highlight the found tag, avoid the ":ptag" when there -is no word under the cursor, and a few other things: > - - :au! CursorHold *.[ch] nested call PreviewWord() - :func PreviewWord() - : if &previewwindow " don't do this in the preview window - : return - : endif - : let w = expand("") " get the word under cursor - : if w =~ '\a' " if the word contains a letter - : - : " Delete any existing highlight before showing another tag - : silent! wincmd P " jump to preview window - : if &previewwindow " if we really get there... - : match none " delete existing highlight - : wincmd p " back to old window - : endif - : - : " Try displaying a matching tag for the word under the cursor - : try - : exe "ptag " . w - : catch - : return - : endtry - : - : silent! wincmd P " jump to preview window - : if &previewwindow " if we really get there... - : if has("folding") - : silent! .foldopen " don't want a closed fold - : endif - : call search("$", "b") " to end of previous line - : let w = substitute(w, '\\', '\\\\', "") - : call search('\<\V' . w . '\>') " position cursor on match - : " Add a match highlight to the word at this position - : hi previewWord term=bold ctermbg=green guibg=green - : exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"' - : wincmd p " back to old window - : endif - : endif - :endfun - -============================================================================== -11. Using hidden buffers *buffer-hidden* - -A hidden buffer is not displayed in a window, but is still loaded into memory. -This makes it possible to jump from file to file, without the need to read or -write the file every time you get another buffer in a window. -{not available when compiled without the |+listcmds| feature} - - *:buffer-!* -If the option 'hidden' ('hid') is set, abandoned buffers are kept for all -commands that start editing another file: ":edit", ":next", ":tag", etc. The -commands that move through the buffer list sometimes make the current buffer -hidden although the 'hidden' option is not set. This happens when a buffer is -modified, but is forced (with '!') to be removed from a window, and -'autowrite' is off or the buffer can't be written. - -You can make a hidden buffer not hidden by starting to edit it with any -command. Or by deleting it with the ":bdelete" command. - -The 'hidden' is global, it is used for all buffers. The 'bufhidden' option -can be used to make an exception for a specific buffer. It can take these -values: - Use the value of 'hidden'. - hide Hide this buffer, also when 'hidden' is not set. - unload Don't hide but unload this buffer, also when 'hidden' - is set. - delete Delete the buffer. - - *hidden-quit* -When you try to quit Vim while there is a hidden, modified buffer, you will -get an error message and Vim will make that buffer the current buffer. You -can then decide to write this buffer (":wq") or quit without writing (":q!"). -Be careful: there may be more hidden, modified buffers! - -A buffer can also be unlisted. This means it exists, but it is not in the -list of buffers. |unlisted-buffer| - - -:files[!] *:files* -:buffers[!] *:buffers* *:ls* -:ls[!] Show all buffers. Example: - - 1 #h "/test/text" line 1 ~ - 2u "asdf" line 0 ~ - 3 %a+ "version.c" line 1 ~ - - When the [!] is included the list will show unlisted buffers - (the term "unlisted" is a bit confusing then...). - - Each buffer has a unique number. That number will not change, - so you can always go to a specific buffer with ":buffer N" or - "N CTRL-^", where N is the buffer number. - - Indicators (chars in the same column are mutually exclusive): - u an unlisted buffer (only displayed when [!] is used) - |unlisted-buffer| - % the buffer in the current window - # the alternate buffer for ":e #" and CTRL-^ - a an active buffer: it is loaded and visible - h a hidden buffer: It is loaded, but currently not - displayed in a window |hidden-buffer| - - a buffer with 'modifiable' off - = a readonly buffer - + a modified buffer - x a buffer with read errors - - *:bad* *:badd* -:bad[d] [+lnum] {fname} - Add file name {fname} to the buffer list, without loading it. - If "lnum" is specified, the cursor will be positioned at that - line when the buffer is first entered. Note that other - commands after the + will be ignored. - -:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516* -:bd[elete][!] [N] - Unload buffer [N] (default: current buffer) and delete it from - the buffer list. If the buffer was changed, this fails, - unless when [!] is specified, in which case changes are lost. - The file remains unaffected. Any windows for this buffer are - closed. If buffer [N] is the current buffer, another buffer - will be displayed instead. This is the most recent entry in - the jump list that points into a loaded buffer. - Actually, the buffer isn't completely deleted, it is removed - from the buffer list |unlisted-buffer| and option values, - variables and mappings/abbreviations for the buffer are - cleared. - -:bdelete[!] {bufname} *E93* *E94* - Like ":bdelete[!] [N]", but buffer given by name. Note that a - buffer whose name is a number cannot be referenced by that - name; use the buffer number instead. Insert a backslash - before a space in a buffer name. - -:bdelete[!] N1 N2 ... - Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be - buffer numbers or buffer names (but not buffer names that are - a number). Insert a backslash before a space in a buffer - name. - -:N,Mbdelete[!] Do ":bdelete[!]" for all buffers in the range N to M - |inclusive|. - -:[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517* -:bw[ipeout][!] {bufname} -:N,Mbw[ipeout][!] -:bw[ipeout][!] N1 N2 ... - Like |:bdelete|, but really delete the buffer. Everything - related to the buffer is lost. All marks in this buffer - become invalid, option settings are lost, etc. Don't use this - unless you know what you are doing. - -:[N]bun[load][!] *:bun* *:bunload* *E515* -:bun[load][!] [N] - Unload buffer [N] (default: current buffer). The memory - allocated for this buffer will be freed. The buffer remains - in the buffer list. - If the buffer was changed, this fails, unless when [!] is - specified, in which case the changes are lost. - Any windows for this buffer are closed. If buffer [N] is the - current buffer, another buffer will be displayed instead. - This is the most recent entry in the jump list that points - into a loaded buffer. - -:bunload[!] {bufname} - Like ":bunload[!] [N]", but buffer given by name. Note that a - buffer whose name is a number cannot be referenced by that - name; use the buffer number instead. Insert a backslash - before a space in a buffer name. - -:N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M - |inclusive|. - -:bunload[!] N1 N2 ... - Do ":bunload[!]" for buffer N1, N2, etc. The arguments can be - buffer numbers or buffer names (but not buffer names that are - a number). Insert a backslash before a space in a buffer - name. - -:[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86* - Edit buffer [N] from the buffer list. If [N] is not given, - the current buffer remains being edited. See |:buffer-!| for - [!]. This will also edit a buffer that is not in the buffer - list, without setting the 'buflisted' flag. - -:[N]b[uffer][!] {bufname} - Edit buffer for {bufname} from the buffer list. See - |:buffer-!| for [!]. This will also edit a buffer that is not - in the buffer list, without setting the 'buflisted' flag. - -:[N]sb[uffer] [N] *:sb* *:sbuffer* - Split window and edit buffer [N] from the buffer list. If [N] - is not given, the current buffer is edited. Respects the - "useopen" setting of 'switchbuf' when splitting. This will - also edit a buffer that is not in the buffer list, without - setting the 'buflisted' flag. - -:[N]sb[uffer] {bufname} - Split window and edit buffer for {bufname} from the buffer - list. This will also edit a buffer that is not in the buffer - list, without setting the 'buflisted' flag. - Note: If what you want to do is split the buffer, make a copy - under another name, you can do it this way: > - :w foobar | sp # - -:[N]bn[ext][!] [N] *:bn* *:bnext* *E87* - Go to [N]th next buffer in buffer list. [N] defaults to one. - Wraps around the end of the buffer list. - See |:buffer-!| for [!]. - If you are in a help buffer, this takes you to the next help - buffer (if there is one). Similarly, if you are in a normal - (non-help) buffer, this takes you to the next normal buffer. - This is so that if you have invoked help, it doesn't get in - the way when you're browsing code/text buffers. The next three - commands also work like this. - - *:sbn* *:sbnext* -:[N]sbn[ext] [N] - Split window and go to [N]th next buffer in buffer list. - Wraps around the end of the buffer list. Uses 'switchbuf' - -:[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* -:[N]bp[revious][!] [N] - Go to [N]th previous buffer in buffer list. [N] defaults to - one. Wraps around the start of the buffer list. - See |:buffer-!| for [!] and 'switchbuf'. - -:[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* -:[N]sbp[revious] [N] - Split window and go to [N]th previous buffer in buffer list. - Wraps around the start of the buffer list. - Uses 'switchbuf'. - - *:br* *:brewind* -:br[ewind][!] Go to first buffer in buffer list. If the buffer list is - empty, go to the first unlisted buffer. - See |:buffer-!| for [!]. - - *:bf* *:bfirst* -:bf[irst] Same as ":brewind". - - *:sbr* *:sbrewind* -:sbr[ewind] Split window and go to first buffer in buffer list. If the - buffer list is empty, go to the first unlisted buffer. - Respects the 'switchbuf' option. - - *:sbf* *:sbfirst* -:sbf[irst] Same as ":sbrewind". - - *:bl* *:blast* -:bl[ast][!] Go to last buffer in buffer list. If the buffer list is - empty, go to the last unlisted buffer. - See |:buffer-!| for [!]. - - *:sbl* *:sblast* -:sbl[ast] Split window and go to last buffer in buffer list. If the - buffer list is empty, go to the last unlisted buffer. - Respects 'switchbuf' option. - -:[N]bm[odified][!] [N] *:bm* *:bmodified* *E84* - Go to [N]th next modified buffer. Note: this command also - finds unlisted buffers. If there is no modified buffer the - command fails. - -:[N]sbm[odified] [N] *:sbm* *:sbmodified* - Split window and go to [N]th next modified buffer. - Respects 'switchbuf' option. - Note: this command also finds buffers not in the buffer list. - -:[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide* -:[N]sun[hide] [N] - Rearrange the screen to open one window for each loaded buffer - in the buffer list. When a count is given, this is the - maximum number of windows to open. - -:[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball* -:[N]sba[ll] [N] Rearrange the screen to open one window for each buffer in - the buffer list. When a count is given, this is the maximum - number of windows to open. 'winheight' also limits the number - of windows opened ('winwidth' if |:vertical| was prepended). - Buf/Win Enter/Leave autocommands are not executed for the new - windows here, that's only done when they are really entered. - When the |:tab| modifier is used new windows are opened in a - new tab, up to 'tabpagemax'. - -Note: All the commands above that start editing another buffer, keep the -'readonly' flag as it was. This differs from the ":edit" command, which sets -the 'readonly' flag each time the file is read. - -============================================================================== -12. Special kinds of buffers *special-buffers* - -Instead of containing the text of a file, buffers can also be used for other -purposes. A few options can be set to change the behavior of a buffer: - 'bufhidden' what happens when the buffer is no longer displayed - in a window. - 'buftype' what kind of a buffer this is - 'swapfile' whether the buffer will have a swap file - 'buflisted' buffer shows up in the buffer list - -A few useful kinds of a buffer: - -quickfix Used to contain the error list or the location list. See - |:cwindow| and |:lwindow|. This command sets the 'buftype' - option to "quickfix". You are not supposed to change this! - 'swapfile' is off. - -help Contains a help file. Will only be created with the |:help| - command. The flag that indicates a help buffer is internal - and can't be changed. The 'buflisted' option will be reset - for a help buffer. - -directory Displays directory contents. Can be used by a file explorer - plugin. The buffer is created with these settings: > - :setlocal buftype=nowrite - :setlocal bufhidden=delete - :setlocal noswapfile -< The buffer name is the name of the directory and is adjusted - when using the |:cd| command. - -scratch Contains text that can be discarded at any time. It is kept - when closing the window, it must be deleted explicitly. - Settings: > - :setlocal buftype=nofile - :setlocal bufhidden=hide - :setlocal noswapfile -< The buffer name can be used to identify the buffer, if you - give it a meaningful name. - - *unlisted-buffer* -unlisted The buffer is not in the buffer list. It is not used for - normal editing, but to show a help file, remember a file name - or marks. The ":bdelete" command will also set this option, - thus it doesn't completely delete the buffer. Settings: > - :setlocal nobuflisted -< - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/workshop.txt b/share/vim/vim73/doc/workshop.txt deleted file mode 100644 index 7fde55bc..00000000 --- a/share/vim/vim73/doc/workshop.txt +++ /dev/null @@ -1,98 +0,0 @@ -*workshop.txt* For Vim version 7.3. Last change: 2010 Jul 20 - - - VIM REFERENCE MANUAL by Gordon Prieur - - -Sun Visual WorkShop Features *workshop* *workshop-support* - -1. Introduction |workshop-intro| -2. Commands |workshop-commands| -3. Compiling vim/gvim for WorkShop |workshop-compiling| -4. Configuring gvim for a WorkShop release tree |workshop-configure| -5. Obtaining the latest version of the XPM library |workshop-xpm| - -{Vi does not have any of these features} -{only available when compiled with the |+sun_workshop| feature} - -============================================================================== -1. Introduction *workshop-intro* - -Sun Visual WorkShop has an "Editor of Choice" feature designed to let users -debug using their favorite editors. For the 6.0 release we have added support -for gvim. A workshop debug session will have a debugging window and an editor -window (possibly others as well). The user can do many debugging operations -from the editor window, minimizing the need to switch from window to window. - -The version of vim shipped with Sun Visual WorkShop 6 (also called Forte -Developer 6) is vim 5.3. The features in this release are much more reliable -than the vim/gvim shipped with Visual WorkShop. VWS users wishing to use vim -as their editor should compile these sources and install them in their -workshop release tree. - -============================================================================== -2. Commands *workshop-commands* - - *:ws* *:wsverb* -:ws[verb] verb Pass the verb to the verb executor - -Pass the verb to a workshop function which gathers some arguments and -sends the verb and data to workshop over an IPC connection. - -============================================================================== -3. Compiling vim/gvim for WorkShop *workshop-compiling* - -Compiling vim with FEAT_SUN_WORKSHOP turns on all compile time flags necessary -for building a vim to work with Visual WorkShop. The features required for VWS -have been built and tested using the Sun compilers from the VWS release. They -have not been built or tested using Gnu compilers. This does not mean the -features won't build and run if compiled with gcc, just that nothing is -guaranteed with gcc! - -============================================================================== -4. Configuring gvim for a WorkShop release tree *workshop-configure* - -There are several assumptions which must be met in order to compile a gvim for -use with Sun Visual WorkShop 6. - - o You should use the compiler in VWS rather than gcc. We have neither - built nor tested with gcc and cannot guarantee it will build properly. - - o You must supply your own XPM library. See |workshop-xpm| below for - details on obtaining the latest version of XPM. - - o Edit the Makefile in the src directory and uncomment the lines for Sun - Visual WorkShop. You can easily find these by searching for the string - FEAT_SUN_WORKSHOP - - o We also suggest you use Motif for your gui. This will provide gvim with - the same look-and-feel as the rest of Sun Visual WorkShop. - -The following configuration line can be used to configure vim to build for use -with Sun Visual WorkShop: - - $ CC=cc configure --enable-workshop --enable-gui=motif \ - -prefix=/contrib/contrib6/ - -The VWS-install-dir should be the base directory where your Sun Visual WorkShop -was installed. By default this is /opt/SUNWspro. It will normally require -root permissions to install the vim release. You will also need to change the -symlink /bin/gvim to point to the vim in your newly installed -directory. The should be a unique version string. I use "vim" -concatenated with the equivalent of version.h's VIM_VERSION_SHORT. - -============================================================================== -5. Obtaining the latest version of the XPM library *workshop-xpm* - -The XPM library is required to show images within Vim with Motif or Athena. -Without it the toolbar and signs will be disabled. - -The XPM library is provided by Arnaud Le Hors of the French National Institute -for Research in Computer Science and Control. It can be downloaded from -http://cgit.freedesktop.org/xorg/lib/libXpm. The current release, as of this -writing, is xpm-3.4k-solaris.tgz, which is a gzip'ed tar file. If you create -the directory /usr/local/xpm and untar the file there you can use the -uncommented lines in the Makefile without changing them. If you use another -xpm directory you will need to change the XPM_DIR in src/Makefile. - - vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim73/doc/xxd-fr.1 b/share/vim/vim73/doc/xxd-fr.1 deleted file mode 100644 index 0b25da43..00000000 --- a/share/vim/vim73/doc/xxd-fr.1 +++ /dev/null @@ -1,395 +0,0 @@ -.TH XXD 1 "août 1996" "Page de manuel pour xxd" -.\" -.\" 21st May 1996 -.\" Man page author: -.\" Tony Nugent -.\" Changes by Bram Moolenaar -.\" French translation by David Blanchet 2005-03 -.SH NOM -.I xxd -\- convertit en représentation hexadécimale et inversement. -.SH SYNOPSIS -.B xxd -\-h[elp] -.br -.B xxd -[options] [fichier_entree [fichier_sortie]] -.br -.B xxd -\-r[evert] [options] [fichier_entree [fichier_sortie]] -.SH DESCRIPTION -.I xxd -crée un fichier contenant la représentation hexadécimale d'un fichier -binaire ou de l'entrée standard. -Il peut également convertir un fichier de codes hexadécimaux en un fichier -binaire. -Comme -.BR uuencode (1) -et -.BR uudecode (1) -il permet la transmission de données binaires dans une représentation ASCII -compatible avec le courrier électronique, mais a l'avantage de décoder la -sortie standard. -De plus, il peut être utilisé pour appliquer des rustines à des fichiers -binaires. -.SH OPTIONS -Si aucun -.I fichier_entree -n'est spécifié, l'entrée standard est utilisée. -Si -.I fichier_entree -correspond au caractère -.RB '\-' -\, l'entrée standard est employée comme source des données en entrée. -Si aucun -.I fichier_sortie -n'est spécifié (ou qu'un caractère -.RB '\-' -est donné à sa place), le résultat est envoyé sur la sortie standard. -.PP -NOTE : un analyseur paresseux est utilisé. Il ne vérifie pas au-delà de la -première lettre de l'option, à moins que cette dernière ne requiert un -paramètre. -L'espace entre l'option et son paramètre est optionnel. -Les paramètres des options peuvent être spécifiés en notation décimale, -hexadécimale ou octale. -Ainsi -.BR \-c8 , -.BR "\-c 8" , -.B \-c 010 -et -.B \-cols 8 -sont tous équivalents. -.TP -.IR \-a " | " \-autoskip -active la fonctionnalité "autoskip" : le caractère '*' remplace les lignes -d'octets nuls. Désactivée par défaut. -.TP -.IR \-b " | " \-bits -Convertit en binaires plutôt qu'en hexadécimal. -Cette option écrit les octets comme une séquence de "1" et de "0" au lieu -d'une conversion en hexadécimal traditionnel. Chaque ligne est précédée par un -numéro de ligne en hexadécimal et suivie de la représentation ASCII (ou -EBCDIC) correspondante. Les options \-r, \-p, \-i ne fonctionnent pas dans ce -mode. -.TP -.IR "\-c cols " | " \-cols cols" -place -.RI < cols > -octets par ligne. 16 par défaut (\-i : 12, \-ps : 30, \-b : 6). Maximum 256. -.TP -.IR \-E " | " \-EBCDIC -Passe le codage des caractères de la colonne de droite de ASCII à EBCDIC. -Cela ne change pas la représentation hexadécimale. Cette option est sans effet -quand elle est utilisée avec \-r, \-p or \-i. -.TP -.IR "\-g octets " | " \-groupsize octets" -Regroupe les octets (deux chiffres hexadécimaux ou huit chiffres binaires) -par groupe de -.RI < octets > -\, séparés par des espaces blancs. Spécifiez -.I \-g 0 -pour supprimer le regroupement. -.RI < octets > -vaut 2 par défaut dans le mode normal et \fI1\fP en -représentation binaire. Le regroupement ne s'applique pas aux styles -Postscript et Include. -.TP -.IR \-h " | " \-help -Affiche un résumé des commandes disponibles et quitte. Aucune conversion n'est -effectuée. -.TP -.IR \-i " | " \-include -produit une sortie dans le style #include (fichier C à inclure). La définition -complète d'un tableau statique est écrite et est nommée d'après le fichier -d'origine, à moins que xxd lise depuis l'entrée standard. -.TP -.IR "\-l long " | " \-len long" -Arrête après l'écriture de -.RI < long > -octets. -.TP -.IR \-p " | " \-ps " | " \-postscript " | " \-plain -Produit une conversion continue dans le style Postscript (postscript continuous -hexdumd style). -Également connu sous le nom de « conversion brute » (plain hexdump style). -.TP -.IR \-r " | " \-revert -Opération inverse : convertit un fichier hexadécimal en un fichier binaire (ou -applique une rustine à un fichier binaire). -Si l'écriture n'a pas lieu sur la sortie standard, xxd écrit dans le fichier -qu'il produit sans le tronquer. Utilisez la combinaison -.I \-r \-p -pour lire de l'hexadécimal brut sans information sur le numéro des lignes et -sans format de colonnes particulier. Des espaces blancs et coupures de lignes -supplémentaires sont autorisés à n'importe quel endroit. -.TP -.I \-seek décalage -Utilisé après l'option -.IR \-r : -inverse la conversion en ajoutant -.RI < décalage > -aux positions dans le fichier données dans le code hexadécimal. -.TP -.I \-s [+][\-]décalage -Débute au -.RI < décalage > -absolu ou relatif dans fichier_entree. -\fI+ \fRindique que le décalage est relatif à la position courante dans -l'entrée standard (sans effet si la lecture n'a pas lieu sur l'entrée -standard). \fI\- \fRindique un décalage en caractères depuis la fin de -l'entrée (utilisé avec \fI+\fR, désigne la position avant la position -actuelle de l'entrée standard). -Sans l'option \-s, xxd démarre à la position courante du fichier. -.TP -.I \-u -Utilise des chiffres hexadécimaux majuscules. La casse par défaut est -minuscule. -.TP -.IR \-v " | " \-version -Affiche la version de xxd. -.SH MISE EN GARDE -.I xxd \-r -effectue des opérations internes un peu obscures lors de l'évaluation -des informations sur les numéros de lignes. Si le fichier de sortie est -adressable, alors les numéros de lignes au début de chaque ligne d'hexadécimal -peuvent être désordonnées, des lignes peuvent manquer ou se chevaucher. Dans -ces cas, xxd utilisera lseek(2) pour déterminer la prochaine position. Si le -fichier n'est pas adressable, seuls les vides sont autorisés, et ils seront -comblés par des octets nuls. -.PP -.I xxd \-r -ne génère aucune erreur lors de l'analyse. Le problème sont passés -silencieusement. -.PP -Lors de l'édition de la représentation hexadécimale, veuillez noter que -.I xxd \-r -ignore tout ce qui se trouve sur la ligne après avoir lu suffisamment de -données hexadécimales (voir l'option \-c). Cela signifie également que les -modifications dans la colonne ASCII (ou EBCDIC) sont toujours ignorées. La -conversion inverse de données hexadécimales brutes (postscript) avec xxd \-r -\-p ne dépend pas d'un nombre correct de colonnes. Dans ce cas, tout ce qui -ressemble à une paire de chiffres hexadécimaux est interprété. -.PP -Remarquez la différence entre -.br -\fI% xxd \-i fichier\fR -.br -et -.br -\fI% xxd \-i < fichier\fR -.PP -.I xxd \-s \+seek -peut différer de -.IR "xxd \-s seek" , -car lseek(2) est utilisé pour « revenir en arrière ». Le '+' fait une -différence quand la source des données est l'entrée standard et si la position -dans le fichier de l'entrée standard n'est pas au début du fichier lorsque xxd -est démarré et qu'il reçoit ses données. -L'exemple suivant peut vous aider à comprendre (ou bien vous perdre davantage -encore !)... -.PP -Remettre l'entrée standard au départ avant de lire ; nécessaire car 'cat' a -déjà lu jusqu'à la fin de l'entrée standard. -.br -\fI% sh \-c 'cat > donnees_binaires; xxd \-s 0 > donnees_hexa' < fichier\fR -.PP -Convertir à partir de la position 0x480 (= 1024 + 128) du fichier. -Le symbole '+' signifie "relativement à la position actuelle', ainsi 128 est -ajouté aux 1024 octets comptabilisés pour dd. -.br -\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +128 > -donnees_hexa' < fichier\fR -.PP -Convertir de fichier depuis la position 0x100 (= 1024 \- 768) du fichier. -.br -\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +\-768 > -donnees_hexa' < fichier\fR -.PP -Toutefois, cette situation est peu fréquente et l'utilisation de '+' est -rarement requise. L'auteur préfère surveiller les effets de xxd avec strace(1) -ou truss(1) quand \-s est employé. -.SH EXEMPLES -Afficher la totalité du -.B fichier -sauf les trois premières lignes (0x30 octets en hexadécimal). -.br -\fI% xxd \-s 0x30 fichier\fR -.PP -afficher les trois dernières lignes (0x30 octets en hexadécimal) du -.B fichier -\. -.br -\fI% xxd \-s \-0x30 fichier\fR -.PP -.br -Afficher 120 octets convertis en continu, avec 20 octets par ligne. -.br -\fI% xxd \-l 120 \-ps \-c 20 xxd\-fr.1\fR -.br -2e54482058584420312022616ffb742031393936 -.br -22202250616765206465206d616e75656c20706f -.br -757220787864220a2e5c220a2e5c222032317374 -.br -204d617920313939360a2e5c22204d616e207061 -.br -676520617574686f723a0a2e5c2220202020546f -.br -6e79204e7567656e74203c746f6e79407363746e -.br -204e7567656e74203c746f6e79407363746e7567 -.br -2e54482058584420312022417567757374203139 -.PP -Convertir les 120 premiers octets de cette page de manuel avec 12 octets par -ligne. -.br -\fI% xxd \-l 120 \-c 12 xxd\-fr.1\fR -.br -0000000: 2e54 4820 5858 4420 3120 2261 .TH XXD 1 "a -.br -000000c: 6ffb 7420 3139 3936 2220 2250 o.t 1996" "P -.br -0000018: 6167 6520 6465 206d 616e 7565 age de manue -.br -0000024: 6c20 706f 7572 2078 7864 220a l pour xxd". -.br -0000030: 2e5c 220a 2e5c 2220 3231 7374 .\"..\" 21st -.br -000003c: 204d 6179 2031 3939 360a 2e5c May 1996..\ -.br -0000048: 2220 4d61 6e20 7061 6765 2061 " Man page a -.br -0000054: 7574 686f 723a 0a2e 5c22 2020 uthor:..\" -.br -0000060: 2020 546f 6e79 204e 7567 656e Tony Nugen -.br -000006c: 7420 3c74 6f6e 7940 7363 746e t fichier_sortie\fR -.PP -Patcher la date dans le fichier xxd.1 -.br -\fI% echo '0000037: 3574 68' | xxd \-r \- xxd\-fr.1\fR -.br -\fI% xxd \-s 0x38 \-l 13 \-c 13 xxd\-fr.1\fR -.br -0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 -.PP -Créer un fichier de 65537 octets tous nuls (0x00), -sauf le dernier qui vaut 'A' (0x41 en hexadécimal). -.br -\fI% echo '010000: 41' | xxd \-r \> fichier\fR -.PP -.br -Convertir le fichier de l'exemple précédent avec la fonctionnalité "autoskip". -.br -\fI% xxd \-a \-c 12 fichier\fR -.br -0000000: 0000 0000 0000 0000 0000 0000 ............ -.br -* -.br -000fffc: 0000 0000 40 ....A -.PP -Créer un fichier d'un octet, contenant seulement le caractère 'A'. -Les nombres après '\-r \-s' s'ajoutent au numéros de lignes trouvées dans le -fichier ; les octets initiaux sont supprimés. -.br -\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> fichier\fR -.PP -Utiliser xxd comme filtre dans un éditeur tel que -.B vim(1) -pour convertir une zone comprise entre les marques 'a' et 'z'. -.br -\fI:'a,'z!xxd\fR -.PP -Utiliser xxd comme filtre dans un éditeur tel que -.B vim(1) -pour récupérer une conversion binaire comprise entre les marques 'a' et 'z'. -.br -\fI:'a,'z!xxd \-r\fR -.PP -Utiliser xxd comme filtre dans un éditeur tel que -.B vim(1) -pour récupérer une ligne convertie. Placez le curseur sur la ligne et tapez : -.br -\fI!!xxd \-r\fR -.PP -Lire des caractères depuis une connexion série : -.br -\fI% xxd \-c1 < /dev/term/b &\fR -.br -\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR -.br -\fI% echo \-n foo > /dev/term/b\fR -.SH VALEURS DE RETOUR -Les erreurs suivantes sont rapportées : -.TP -0 -aucune erreur ne s'est produit. -.TP -\-1 -opération non supportée ( -.I xxd \-r \-i -reste impossible). -.TP -1 -erreur lors de l'analyse des options. -.TP -2 -problème avec le fichier d'entrée. -.TP -3 -problème avec le fichier de sortie. -.TP -4, 5 -la position spécifiée n'est pas atteignable. -.SH VOIR AUSSI -uuencode(1), uudecode(1), patch(1) -.SH AVERTISSEMENTS -L'étrangeté de cet outil reflète celle du cerveau de ses créateurs. -Utilisez cet outil à vos risques et périls. Dupliquez vos fichiers. -Surveillez l'outil. Devenez un gourou. -.SH VERSION -Cette page de manuel documente la version 1.7 de xxd. -.SH AUTEUR -(c) 1990-1997 par Juergen Weigert -.br - -.LP -"Distribute freely and credit me, -.br -make money and share with me, -.br -lose money and don't ask me." -.PP -Distribution libre en citant l'auteur, -.br -gagnez de l'argent, pensez à moi, -.br -perdez de l'argent, oubliez-moi. -.PP -Page de manuel débutée par Tony Nugent -.br - -.br -Modifications mineures par Bram Moolenaar. -Édité par Juergen Weigert. -.SH TRADUCTION -Cette page de manuel a été traduite par David Blanchet - 2004-12-24. diff --git a/share/vim/vim73/doc/xxd-fr.UTF-8.1 b/share/vim/vim73/doc/xxd-fr.UTF-8.1 deleted file mode 100644 index 9fc47d3a..00000000 --- a/share/vim/vim73/doc/xxd-fr.UTF-8.1 +++ /dev/null @@ -1,395 +0,0 @@ -.TH XXD 1 "août 1996" "Page de manuel pour xxd" -.\" -.\" 21st May 1996 -.\" Man page author: -.\" Tony Nugent -.\" Changes by Bram Moolenaar -.\" French translation by David Blanchet 2005-03 -.SH NOM -.I xxd -\- convertit en représentation hexadécimale et inversement. -.SH SYNOPSIS -.B xxd -\-h[elp] -.br -.B xxd -[options] [fichier_entree [fichier_sortie]] -.br -.B xxd -\-r[evert] [options] [fichier_entree [fichier_sortie]] -.SH DESCRIPTION -.I xxd -crée un fichier contenant la représentation hexadécimale d'un fichier -binaire ou de l'entrée standard. -Il peut également convertir un fichier de codes hexadécimaux en un fichier -binaire. -Comme -.BR uuencode (1) -et -.BR uudecode (1) -il permet la transmission de données binaires dans une représentation ASCII -compatible avec le courrier électronique, mais a l'avantage de décoder la -sortie standard. -De plus, il peut être utilisé pour appliquer des rustines à des fichiers -binaires. -.SH OPTIONS -Si aucun -.I fichier_entree -n'est spécifié, l'entrée standard est utilisée. -Si -.I fichier_entree -correspond au caractère -.RB '\-' -\, l'entrée standard est employée comme source des données en entrée. -Si aucun -.I fichier_sortie -n'est spécifié (ou qu'un caractère -.RB '\-' -est donné à sa place), le résultat est envoyé sur la sortie standard. -.PP -NOTE : un analyseur paresseux est utilisé. Il ne vérifie pas au-delà de la -première lettre de l'option, à moins que cette dernière ne requiert un -paramètre. -L'espace entre l'option et son paramètre est optionnel. -Les paramètres des options peuvent être spécifiés en notation décimale, -hexadécimale ou octale. -Ainsi -.BR \-c8 , -.BR "\-c 8" , -.B \-c 010 -et -.B \-cols 8 -sont tous équivalents. -.TP -.IR \-a " | " \-autoskip -active la fonctionnalité "autoskip" : le caractère '*' remplace les lignes -d'octets nuls. Désactivée par défaut. -.TP -.IR \-b " | " \-bits -Convertit en binaires plutôt qu'en hexadécimal. -Cette option écrit les octets comme une séquence de "1" et de "0" au lieu -d'une conversion en hexadécimal traditionnel. Chaque ligne est précédée par un -numéro de ligne en hexadécimal et suivie de la représentation ASCII (ou -EBCDIC) correspondante. Les options \-r, \-p, \-i ne fonctionnent pas dans ce -mode. -.TP -.IR "\-c cols " | " \-cols cols" -place -.RI < cols > -octets par ligne. 16 par défaut (\-i : 12, \-ps : 30, \-b : 6). Maximum 256. -.TP -.IR \-E " | " \-EBCDIC -Passe le codage des caractères de la colonne de droite de ASCII à EBCDIC. -Cela ne change pas la représentation hexadécimale. Cette option est sans effet -quand elle est utilisée avec \-r, \-p or \-i. -.TP -.IR "\-g octets " | " \-groupsize octets" -Regroupe les octets (deux chiffres hexadécimaux ou huit chiffres binaires) -par groupe de -.RI < octets > -\, séparés par des espaces blancs. Spécifiez -.I \-g 0 -pour supprimer le regroupement. -.RI < octets > -vaut 2 par défaut dans le mode normal et \fI1\fP en -représentation binaire. Le regroupement ne s'applique pas aux styles -Postscript et Include. -.TP -.IR \-h " | " \-help -Affiche un résumé des commandes disponibles et quitte. Aucune conversion n'est -effectuée. -.TP -.IR \-i " | " \-include -produit une sortie dans le style #include (fichier C à inclure). La définition -complète d'un tableau statique est écrite et est nommée d'après le fichier -d'origine, à moins que xxd lise depuis l'entrée standard. -.TP -.IR "\-l long " | " \-len long" -Arrête après l'écriture de -.RI < long > -octets. -.TP -.IR \-p " | " \-ps " | " \-postscript " | " \-plain -Produit une conversion continue dans le style Postscript (postscript continuous -hexdumd style). -Également connu sous le nom de « conversion brute » (plain hexdump style). -.TP -.IR \-r " | " \-revert -Opération inverse : convertit un fichier hexadécimal en un fichier binaire (ou -applique une rustine à un fichier binaire). -Si l'écriture n'a pas lieu sur la sortie standard, xxd écrit dans le fichier -qu'il produit sans le tronquer. Utilisez la combinaison -.I \-r \-p -pour lire de l'hexadécimal brut sans information sur le numéro des lignes et -sans format de colonnes particulier. Des espaces blancs et coupures de lignes -supplémentaires sont autorisés à n'importe quel endroit. -.TP -.I \-seek décalage -Utilisé après l'option -.IR \-r : -inverse la conversion en ajoutant -.RI < décalage > -aux positions dans le fichier données dans le code hexadécimal. -.TP -.I \-s [+][\-]décalage -Débute au -.RI < décalage > -absolu ou relatif dans fichier_entree. -\fI+ \fRindique que le décalage est relatif à la position courante dans -l'entrée standard (sans effet si la lecture n'a pas lieu sur l'entrée -standard). \fI\- \fRindique un décalage en caractères depuis la fin de -l'entrée (utilisé avec \fI+\fR, désigne la position avant la position -actuelle de l'entrée standard). -Sans l'option \-s, xxd démarre à la position courante du fichier. -.TP -.I \-u -Utilise des chiffres hexadécimaux majuscules. La casse par défaut est -minuscule. -.TP -.IR \-v " | " \-version -Affiche la version de xxd. -.SH MISE EN GARDE -.I xxd \-r -effectue des opérations internes un peu obscures lors de l'évaluation -des informations sur les numéros de lignes. Si le fichier de sortie est -adressable, alors les numéros de lignes au début de chaque ligne d'hexadécimal -peuvent être désordonnées, des lignes peuvent manquer ou se chevaucher. Dans -ces cas, xxd utilisera lseek(2) pour déterminer la prochaine position. Si le -fichier n'est pas adressable, seuls les vides sont autorisés, et ils seront -comblés par des octets nuls. -.PP -.I xxd \-r -ne génère aucune erreur lors de l'analyse. Le problème sont passés -silencieusement. -.PP -Lors de l'édition de la représentation hexadécimale, veuillez noter que -.I xxd \-r -ignore tout ce qui se trouve sur la ligne après avoir lu suffisamment de -données hexadécimales (voir l'option \-c). Cela signifie également que les -modifications dans la colonne ASCII (ou EBCDIC) sont toujours ignorées. La -conversion inverse de données hexadécimales brutes (postscript) avec xxd \-r -\-p ne dépend pas d'un nombre correct de colonnes. Dans ce cas, tout ce qui -ressemble à une paire de chiffres hexadécimaux est interprété. -.PP -Remarquez la différence entre -.br -\fI% xxd \-i fichier\fR -.br -et -.br -\fI% xxd \-i < fichier\fR -.PP -.I xxd \-s \+seek -peut différer de -.IR "xxd \-s seek" , -car lseek(2) est utilisé pour « revenir en arrière ». Le '+' fait une -différence quand la source des données est l'entrée standard et si la position -dans le fichier de l'entrée standard n'est pas au début du fichier lorsque xxd -est démarré et qu'il reçoit ses données. -L'exemple suivant peut vous aider à comprendre (ou bien vous perdre davantage -encore !)... -.PP -Remettre l'entrée standard au départ avant de lire ; nécessaire car 'cat' a -déjà lu jusqu'à la fin de l'entrée standard. -.br -\fI% sh \-c 'cat > donnees_binaires; xxd \-s 0 > donnees_hexa' < fichier\fR -.PP -Convertir à partir de la position 0x480 (= 1024 + 128) du fichier. -Le symbole '+' signifie "relativement à la position actuelle', ainsi 128 est -ajouté aux 1024 octets comptabilisés pour dd. -.br -\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +128 > -donnees_hexa' < fichier\fR -.PP -Convertir de fichier depuis la position 0x100 (= 1024 \- 768) du fichier. -.br -\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +\-768 > -donnees_hexa' < fichier\fR -.PP -Toutefois, cette situation est peu fréquente et l'utilisation de '+' est -rarement requise. L'auteur préfère surveiller les effets de xxd avec strace(1) -ou truss(1) quand \-s est employé. -.SH EXEMPLES -Afficher la totalité du -.B fichier -sauf les trois premières lignes (0x30 octets en hexadécimal). -.br -\fI% xxd \-s 0x30 fichier\fR -.PP -afficher les trois dernières lignes (0x30 octets en hexadécimal) du -.B fichier -\. -.br -\fI% xxd \-s \-0x30 fichier\fR -.PP -.br -Afficher 120 octets convertis en continu, avec 20 octets par ligne. -.br -\fI% xxd \-l 120 \-ps \-c 20 xxd\-fr.1\fR -.br -2e54482058584420312022616ffb742031393936 -.br -22202250616765206465206d616e75656c20706f -.br -757220787864220a2e5c220a2e5c222032317374 -.br -204d617920313939360a2e5c22204d616e207061 -.br -676520617574686f723a0a2e5c2220202020546f -.br -6e79204e7567656e74203c746f6e79407363746e -.br -204e7567656e74203c746f6e79407363746e7567 -.br -2e54482058584420312022417567757374203139 -.PP -Convertir les 120 premiers octets de cette page de manuel avec 12 octets par -ligne. -.br -\fI% xxd \-l 120 \-c 12 xxd\-fr.1\fR -.br -0000000: 2e54 4820 5858 4420 3120 2261 .TH XXD 1 "a -.br -000000c: 6ffb 7420 3139 3936 2220 2250 o.t 1996" "P -.br -0000018: 6167 6520 6465 206d 616e 7565 age de manue -.br -0000024: 6c20 706f 7572 2078 7864 220a l pour xxd". -.br -0000030: 2e5c 220a 2e5c 2220 3231 7374 .\"..\" 21st -.br -000003c: 204d 6179 2031 3939 360a 2e5c May 1996..\ -.br -0000048: 2220 4d61 6e20 7061 6765 2061 " Man page a -.br -0000054: 7574 686f 723a 0a2e 5c22 2020 uthor:..\" -.br -0000060: 2020 546f 6e79 204e 7567 656e Tony Nugen -.br -000006c: 7420 3c74 6f6e 7940 7363 746e t fichier_sortie\fR -.PP -Patcher la date dans le fichier xxd.1 -.br -\fI% echo '0000037: 3574 68' | xxd \-r \- xxd\-fr.1\fR -.br -\fI% xxd \-s 0x38 \-l 13 \-c 13 xxd\-fr.1\fR -.br -0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 -.PP -Créer un fichier de 65537 octets tous nuls (0x00), -sauf le dernier qui vaut 'A' (0x41 en hexadécimal). -.br -\fI% echo '010000: 41' | xxd \-r \> fichier\fR -.PP -.br -Convertir le fichier de l'exemple précédent avec la fonctionnalité "autoskip". -.br -\fI% xxd \-a \-c 12 fichier\fR -.br -0000000: 0000 0000 0000 0000 0000 0000 ............ -.br -* -.br -000fffc: 0000 0000 40 ....A -.PP -Créer un fichier d'un octet, contenant seulement le caractère 'A'. -Les nombres après '\-r \-s' s'ajoutent au numéros de lignes trouvées dans le -fichier ; les octets initiaux sont supprimés. -.br -\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> fichier\fR -.PP -Utiliser xxd comme filtre dans un éditeur tel que -.B vim(1) -pour convertir une zone comprise entre les marques 'a' et 'z'. -.br -\fI:'a,'z!xxd\fR -.PP -Utiliser xxd comme filtre dans un éditeur tel que -.B vim(1) -pour récupérer une conversion binaire comprise entre les marques 'a' et 'z'. -.br -\fI:'a,'z!xxd \-r\fR -.PP -Utiliser xxd comme filtre dans un éditeur tel que -.B vim(1) -pour récupérer une ligne convertie. Placez le curseur sur la ligne et tapez : -.br -\fI!!xxd \-r\fR -.PP -Lire des caractères depuis une connexion série : -.br -\fI% xxd \-c1 < /dev/term/b &\fR -.br -\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR -.br -\fI% echo \-n foo > /dev/term/b\fR -.SH VALEURS DE RETOUR -Les erreurs suivantes sont rapportées : -.TP -0 -aucune erreur ne s'est produit. -.TP -\-1 -opération non supportée ( -.I xxd \-r \-i -reste impossible). -.TP -1 -erreur lors de l'analyse des options. -.TP -2 -problème avec le fichier d'entrée. -.TP -3 -problème avec le fichier de sortie. -.TP -4, 5 -la position spécifiée n'est pas atteignable. -.SH VOIR AUSSI -uuencode(1), uudecode(1), patch(1) -.SH AVERTISSEMENTS -L'étrangeté de cet outil reflète celle du cerveau de ses créateurs. -Utilisez cet outil à vos risques et périls. Dupliquez vos fichiers. -Surveillez l'outil. Devenez un gourou. -.SH VERSION -Cette page de manuel documente la version 1.7 de xxd. -.SH AUTEUR -(c) 1990-1997 par Juergen Weigert -.br - -.LP -"Distribute freely and credit me, -.br -make money and share with me, -.br -lose money and don't ask me." -.PP -Distribution libre en citant l'auteur, -.br -gagnez de l'argent, pensez à moi, -.br -perdez de l'argent, oubliez-moi. -.PP -Page de manuel débutée par Tony Nugent -.br - -.br -Modifications mineures par Bram Moolenaar. -Édité par Juergen Weigert. -.SH TRADUCTION -Cette page de manuel a été traduite par David Blanchet - 2004-12-24. diff --git a/share/vim/vim73/filetype.vim b/share/vim/vim73/filetype.vim deleted file mode 100644 index afc0740b..00000000 --- a/share/vim/vim73/filetype.vim +++ /dev/null @@ -1,2514 +0,0 @@ -" Vim support file to detect file types -" -" Maintainer: Bram Moolenaar -" Last Change: 2010 Jul 30 - -" Listen very carefully, I will say this only once -if exists("did_load_filetypes") - finish -endif -let did_load_filetypes = 1 - -" Line continuation is used here, remove 'C' from 'cpoptions' -let s:cpo_save = &cpo -set cpo&vim - -augroup filetypedetect - -" Ignored extensions -if exists("*fnameescape") -au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.dpkg-dist,?\+.dpkg-old,?\+.rpmsave,?\+.rpmnew - \ exe "doau filetypedetect BufRead " . fnameescape(expand(":r")) -au BufNewFile,BufRead *~ - \ let s:name = expand("") | - \ let s:short = substitute(s:name, '\~$', '', '') | - \ if s:name != s:short && s:short != "" | - \ exe "doau filetypedetect BufRead " . fnameescape(s:short) | - \ endif | - \ unlet! s:name s:short -au BufNewFile,BufRead ?\+.in - \ if expand(":t") != "configure.in" | - \ exe "doau filetypedetect BufRead " . fnameescape(expand(":r")) | - \ endif -elseif &verbose > 0 - echomsg "Warning: some filetypes will not be recognized because this version of Vim does not have fnameescape()" -endif - -" Pattern used to match file names which should not be inspected. -" Currently finds compressed files. -if !exists("g:ft_ignore_pat") - let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$' -endif - -" Function used for patterns that end in a star: don't set the filetype if the -" file name matches ft_ignore_pat. -func! s:StarSetf(ft) - if expand("") !~ g:ft_ignore_pat - exe 'setf ' . a:ft - endif -endfunc - -" Abaqus or Trasys -au BufNewFile,BufRead *.inp call s:Check_inp() - -func! s:Check_inp() - if getline(1) =~ '^\*' - setf abaqus - else - let n = 1 - if line("$") > 500 - let nmax = 500 - else - let nmax = line("$") - endif - while n <= nmax - if getline(n) =~? "^header surface data" - setf trasys - break - endif - let n = n + 1 - endwhile - endif -endfunc - -" A-A-P recipe -au BufNewFile,BufRead *.aap setf aap - -" A2ps printing utility -au BufNewFile,BufRead etc/a2ps.cfg,etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps - -" ABAB/4 -au BufNewFile,BufRead *.abap setf abap - -" ABC music notation -au BufNewFile,BufRead *.abc setf abc - -" ABEL -au BufNewFile,BufRead *.abl setf abel - -" AceDB -au BufNewFile,BufRead *.wrm setf acedb - -" Ada (83, 9X, 95) -au BufNewFile,BufRead *.adb,*.ads,*.ada setf ada -if has("vms") - au BufNewFile,BufRead *.gpr,*.ada_m,*.adc setf ada -else - au BufNewFile,BufRead *.gpr setf ada -endif - -" AHDL -au BufNewFile,BufRead *.tdf setf ahdl - -" AMPL -au BufNewFile,BufRead *.run setf ampl - -" Ant -au BufNewFile,BufRead build.xml setf ant - -" Apache style config file -au BufNewFile,BufRead proftpd.conf* call s:StarSetf('apachestyle') - -" Apache config file -au BufNewFile,BufRead .htaccess,/etc/httpd/*.conf setf apache -au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf*,/etc/httpd/conf.d/*.conf* call s:StarSetf('apache') - -" XA65 MOS6510 cross assembler -au BufNewFile,BufRead *.a65 setf a65 - -" Applescript -au BufNewFile,BufRead *.scpt setf applescript - -" Applix ELF -au BufNewFile,BufRead *.am - \ if expand("") !~? 'Makefile.am\>' | setf elf | endif - -" ALSA configuration -au BufNewFile,BufRead ~/.asoundrc,/usr/share/alsa/alsa.conf,/etc/asound.conf setf alsaconf - -" Arc Macro Language -au BufNewFile,BufRead *.aml setf aml - -" Arch Inventory file -au BufNewFile,BufRead .arch-inventory,=tagging-method setf arch - -" ART*Enterprise (formerly ART-IM) -au BufNewFile,BufRead *.art setf art - -" ASN.1 -au BufNewFile,BufRead *.asn,*.asn1 setf asn - -" Active Server Pages (with Visual Basic Script) -au BufNewFile,BufRead *.asa - \ if exists("g:filetype_asa") | - \ exe "setf " . g:filetype_asa | - \ else | - \ setf aspvbs | - \ endif - -" Active Server Pages (with Perl or Visual Basic Script) -au BufNewFile,BufRead *.asp - \ if exists("g:filetype_asp") | - \ exe "setf " . g:filetype_asp | - \ elseif getline(1) . getline(2) . getline(3) =~? "perlscript" | - \ setf aspperl | - \ else | - \ setf aspvbs | - \ endif - -" Grub (must be before catch *.lst) -au BufNewFile,BufRead /boot/grub/menu.lst,/boot/grub/grub.conf,/etc/grub.conf setf grub - -" Assembly (all kinds) -" *.lst is not pure assembly, it has two extra columns (address, byte codes) -au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call s:FTasm() - -" This function checks for the kind of assembly that is wanted by the user, or -" can be detected from the first five lines of the file. -func! s:FTasm() - " make sure b:asmsyntax exists - if !exists("b:asmsyntax") - let b:asmsyntax = "" - endif - - if b:asmsyntax == "" - call s:FTasmsyntax() - endif - - " if b:asmsyntax still isn't set, default to asmsyntax or GNU - if b:asmsyntax == "" - if exists("g:asmsyntax") - let b:asmsyntax = g:asmsyntax - else - let b:asmsyntax = "asm" - endif - endif - - exe "setf " . fnameescape(b:asmsyntax) -endfunc - -func! s:FTasmsyntax() - " see if file contains any asmsyntax=foo overrides. If so, change - " b:asmsyntax appropriately - let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4). - \" ".getline(5)." " - let match = matchstr(head, '\sasmsyntax=\zs[a-zA-Z0-9]\+\ze\s') - if match != '' - let b:asmsyntax = match - elseif ((head =~? '\.title') || (head =~? '\.ident') || (head =~? '\.macro') || (head =~? '\.subtitle') || (head =~? '\.library')) - let b:asmsyntax = "vmasm" - endif -endfunc - -" Macro (VAX) -au BufNewFile,BufRead *.mar setf vmasm - -" Atlas -au BufNewFile,BufRead *.atl,*.as setf atlas - -" Autoit v3 -au BufNewFile,BufRead *.au3 setf autoit - -" Autohotkey -au BufNewFile,BufRead *.ahk setf autohotkey - -" Automake -au BufNewFile,BufRead [mM]akefile.am,GNUmakefile.am setf automake - -" Autotest .at files are actually m4 -au BufNewFile,BufRead *.at setf m4 - -" Avenue -au BufNewFile,BufRead *.ave setf ave - -" Awk -au BufNewFile,BufRead *.awk setf awk - -" B -au BufNewFile,BufRead *.mch,*.ref,*.imp setf b - -" BASIC or Visual Basic -au BufNewFile,BufRead *.bas call s:FTVB("basic") - -" Check if one of the first five lines contains "VB_Name". In that case it is -" probably a Visual Basic file. Otherwise it's assumed to be "alt" filetype. -func! s:FTVB(alt) - if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)' - setf vb - else - exe "setf " . a:alt - endif -endfunc - -" Visual Basic Script (close to Visual Basic) -au BufNewFile,BufRead *.vbs,*.dsm,*.ctl setf vb - -" IBasic file (similar to QBasic) -au BufNewFile,BufRead *.iba,*.ibi setf ibasic - -" FreeBasic file (similar to QBasic) -au BufNewFile,BufRead *.fb,*.bi setf freebasic - -" Batch file for MSDOS. -au BufNewFile,BufRead *.bat,*.sys setf dosbatch -" *.cmd is close to a Batch file, but on OS/2 Rexx files also use *.cmd. -au BufNewFile,BufRead *.cmd - \ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif - -" Batch file for 4DOS -au BufNewFile,BufRead *.btm call s:FTbtm() -func! s:FTbtm() - if exists("g:dosbatch_syntax_for_btm") && g:dosbatch_syntax_for_btm - setf dosbatch - else - setf btm - endif -endfunc - -" BC calculator -au BufNewFile,BufRead *.bc setf bc - -" BDF font -au BufNewFile,BufRead *.bdf setf bdf - -" BibTeX bibliography database file -au BufNewFile,BufRead *.bib setf bib - -" BibTeX Bibliography Style -au BufNewFile,BufRead *.bst setf bst - -" BIND configuration -au BufNewFile,BufRead named.conf,rndc.conf setf named - -" BIND zone -au BufNewFile,BufRead named.root setf bindzone -au BufNewFile,BufRead *.db call s:BindzoneCheck('') - -func! s:BindzoneCheck(default) - if getline(1).getline(2).getline(3).getline(4) =~ '^; <<>> DiG [0-9.]\+ <<>>\|BIND.*named\|$ORIGIN\|$TTL\|IN\s\+SOA' - setf bindzone - elseif a:default != '' - exe 'setf ' . a:default - endif -endfunc - -" Blank -au BufNewFile,BufRead *.bl setf blank - -" Blkid cache file -au BufNewFile,BufRead /etc/blkid.tab,/etc/blkid.tab.old setf xml - -" C or lpc -au BufNewFile,BufRead *.c call s:FTlpc() - -func! s:FTlpc() - if exists("g:lpc_syntax_for_c") - let lnum = 1 - while lnum <= 12 - if getline(lnum) =~# '^\(//\|inherit\|private\|protected\|nosave\|string\|object\|mapping\|mixed\)' - setf lpc - return - endif - let lnum = lnum + 1 - endwhile - endif - setf c -endfunc - -" Calendar -au BufNewFile,BufRead calendar setf calendar -au BufNewFile,BufRead */.calendar/*, - \*/share/calendar/*/calendar.*,*/share/calendar/calendar.* - \ call s:StarSetf('calendar') - -" C# -au BufNewFile,BufRead *.cs setf cs - -" Cabal -au BufNewFile,BufRead *.cabal setf cabal - -" Cdrdao TOC -au BufNewFile,BufRead *.toc setf cdrtoc - -" Cdrdao config -au BufNewFile,BufRead etc/cdrdao.conf,etc/defaults/cdrdao,etc/default/cdrdao,~/.cdrdao setf cdrdaoconf - -" Cfengine -au BufNewFile,BufRead cfengine.conf setf cfengine - -" ChaiScript -au BufRead,BufNewFile *.chai setf chaiscript - -" Comshare Dimension Definition Language -au BufNewFile,BufRead *.cdl setf cdl - -" Conary Recipe -au BufNewFile,BufRead *.recipe setf conaryrecipe - -" Controllable Regex Mutilator -au BufNewFile,BufRead *.crm setf crm - -" Cyn++ -au BufNewFile,BufRead *.cyn setf cynpp - -" Cynlib -" .cc and .cpp files can be C++ or Cynlib. -au BufNewFile,BufRead *.cc - \ if exists("cynlib_syntax_for_cc")|setf cynlib|else|setf cpp|endif -au BufNewFile,BufRead *.cpp - \ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif - -" C++ -au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl setf cpp -if has("fname_case") - au BufNewFile,BufRead *.C,*.H setf cpp -endif - -" .h files can be C, Ch C++, ObjC or ObjC++. -" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is -" detected automatically. -au BufNewFile,BufRead *.h call s:FTheader() - -func! s:FTheader() - if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1 - setf objc - elseif exists("g:c_syntax_for_h") - setf c - elseif exists("g:ch_syntax_for_h") - setf ch - else - setf cpp - endif -endfunc - -" Ch (CHscript) -au BufNewFile,BufRead *.chf setf ch - -" TLH files are C++ headers generated by Visual C++'s #import from typelibs -au BufNewFile,BufRead *.tlh setf cpp - -" Cascading Style Sheets -au BufNewFile,BufRead *.css setf css - -" Century Term Command Scripts (*.cmd too) -au BufNewFile,BufRead *.con setf cterm - -" Changelog -au BufNewFile,BufRead changelog.Debian,changelog.dch,NEWS.Debian,NEWS.dch - \ setf debchangelog - -au BufNewFile,BufRead [cC]hange[lL]og - \ if getline(1) =~ '; urgency=' - \| setf debchangelog - \| else - \| setf changelog - \| endif - -au BufNewFile,BufRead NEWS - \ if getline(1) =~ '; urgency=' - \| setf debchangelog - \| endif - -" CHILL -au BufNewFile,BufRead *..ch setf chill - -" Changes for WEB and CWEB or CHILL -au BufNewFile,BufRead *.ch call s:FTchange() - -" This function checks if one of the first ten lines start with a '@'. In -" that case it is probably a change file. -" If the first line starts with # or ! it's probably a ch file. -" If a line has "main", "include", "//" ir "/*" it's probably ch. -" Otherwise CHILL is assumed. -func! s:FTchange() - let lnum = 1 - while lnum <= 10 - if getline(lnum)[0] == '@' - setf change - return - endif - if lnum == 1 && (getline(1)[0] == '#' || getline(1)[0] == '!') - setf ch - return - endif - if getline(lnum) =~ "MODULE" - setf chill - return - endif - if getline(lnum) =~ 'main\s*(\|#\s*include\|//' - setf ch - return - endif - let lnum = lnum + 1 - endwhile - setf chill -endfunc - -" ChordPro -au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro setf chordpro - -" Clean -au BufNewFile,BufRead *.dcl,*.icl setf clean - -" Clever -au BufNewFile,BufRead *.eni setf cl - -" Clever or dtd -au BufNewFile,BufRead *.ent call s:FTent() - -func! s:FTent() - " This function checks for valid cl syntax in the first five lines. - " Look for either an opening comment, '#', or a block start, '{". - " If not found, assume SGML. - let lnum = 1 - while lnum < 6 - let line = getline(lnum) - if line =~ '^\s*[#{]' - setf cl - return - elseif line !~ '^\s*$' - " Not a blank line, not a comment, and not a block start, - " so doesn't look like valid cl code. - break - endif - let lnum = lnum + 1 - endw - setf dtd -endfunc - -" Clipper (or FoxPro; could also be eviews) -au BufNewFile,BufRead *.prg - \ if exists("g:filetype_prg") | - \ exe "setf " . g:filetype_prg | - \ else | - \ setf clipper | - \ endif - -" Cmake -au BufNewFile,BufRead CMakeLists.txt,*.cmake,*.cmake.in setf cmake - -" Cmusrc -au BufNewFile,BufRead ~/.cmus/{autosave,rc,command-history,*.theme} setf cmusrc -au BufNewFile,BufRead */cmus/{rc,*.theme} setf cmusrc - -" Cobol -au BufNewFile,BufRead *.cbl,*.cob,*.lib setf cobol -" cobol or zope form controller python script? (heuristic) -au BufNewFile,BufRead *.cpy - \ if getline(1) =~ '^##' | - \ setf python | - \ else | - \ setf cobol | - \ endif - -" Coco/R -au BufNewFile,BufRead *.atg setf coco - -" Cold Fusion -au BufNewFile,BufRead *.cfm,*.cfi,*.cfc setf cf - -" Configure scripts -au BufNewFile,BufRead configure.in,configure.ac setf config - -" CUDA Cumpute Unified Device Architecture -au BufNewFile,BufRead *.cu setf cuda - -" WildPackets EtherPeek Decoder -au BufNewFile,BufRead *.dcd setf dcd - -" Enlightenment configuration files -au BufNewFile,BufRead *enlightenment/*.cfg setf c - -" Eterm -au BufNewFile,BufRead *Eterm/*.cfg setf eterm - -" Lynx config files -au BufNewFile,BufRead lynx.cfg setf lynx - -" Quake -au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg setf quake -au BufNewFile,BufRead *quake[1-3]/*.cfg setf quake - -" Quake C -au BufNewFile,BufRead *.qc setf c - -" Configure files -au BufNewFile,BufRead *.cfg setf cfg - -" Cucumber -au BufNewFile,BufRead *.feature setf cucumber - -" Communicating Sequential Processes -au BufNewFile,BufRead *.csp,*.fdr setf csp - -" CUPL logic description and simulation -au BufNewFile,BufRead *.pld setf cupl -au BufNewFile,BufRead *.si setf cuplsim - -" Debian Control -au BufNewFile,BufRead */debian/control setf debcontrol -au BufNewFile,BufRead control - \ if getline(1) =~ '^Source:' - \| setf debcontrol - \| endif - -" Debian Sources.list -au BufNewFile,BufRead /etc/apt/sources.list setf debsources - -" Deny hosts -au BufNewFile,BufRead denyhosts.conf setf denyhosts - -" ROCKLinux package description -au BufNewFile,BufRead *.desc setf desc - -" the D language or dtrace -au BufNewFile,BufRead *.d call s:DtraceCheck() - -func! s:DtraceCheck() - let lines = getline(1, min([line("$"), 100])) - if match(lines, '^#!\S\+dtrace\|#pragma\s\+D\s\+option\|:\S\{-}:\S\{-}:') > -1 - setf dtrace - else - setf d - endif -endfunc - -" Desktop files -au BufNewFile,BufRead *.desktop,.directory setf desktop - -" Dict config -au BufNewFile,BufRead dict.conf,.dictrc setf dictconf - -" Dictd config -au BufNewFile,BufRead dictd.conf setf dictdconf - -" Diff files -au BufNewFile,BufRead *.diff,*.rej,*.patch setf diff - -" Dircolors -au BufNewFile,BufRead .dir_colors,/etc/DIR_COLORS setf dircolors - -" Diva (with Skill) or InstallShield -au BufNewFile,BufRead *.rul - \ if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield' | - \ setf ishd | - \ else | - \ setf diva | - \ endif - -" DCL (Digital Command Language - vms) or DNS zone file -au BufNewFile,BufRead *.com call s:BindzoneCheck('dcl') - -" DOT -au BufNewFile,BufRead *.dot setf dot - -" Dylan - lid files -au BufNewFile,BufRead *.lid setf dylanlid - -" Dylan - intr files (melange) -au BufNewFile,BufRead *.intr setf dylanintr - -" Dylan -au BufNewFile,BufRead *.dylan setf dylan - -" Microsoft Module Definition -au BufNewFile,BufRead *.def setf def - -" Dracula -au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe setf dracula - -" Datascript -au BufNewFile,BufRead *.ds setf datascript - -" dsl -au BufNewFile,BufRead *.dsl setf dsl - -" DTD (Document Type Definition for XML) -au BufNewFile,BufRead *.dtd setf dtd - -" EDIF (*.edf,*.edif,*.edn,*.edo) -au BufNewFile,BufRead *.ed\(f\|if\|n\|o\) setf edif - -" Embedix Component Description -au BufNewFile,BufRead *.ecd setf ecd - -" Eiffel or Specman -au BufNewFile,BufRead *.e,*.E call s:FTe() - -" Elinks configuration -au BufNewFile,BufRead */etc/elinks.conf,*/.elinks/elinks.conf setf elinks - -func! s:FTe() - let n = 1 - while n < 100 && n < line("$") - if getline(n) =~ "^\\s*\\(<'\\|'>\\)\\s*$" - setf specman - return - endif - let n = n + 1 - endwhile - setf eiffel -endfunc - -" ERicsson LANGuage; Yaws is erlang too -au BufNewFile,BufRead *.erl,*.hrl,*.yaws setf erlang - -" Elm Filter Rules file -au BufNewFile,BufRead filter-rules setf elmfilt - -" ESMTP rc file -au BufNewFile,BufRead *esmtprc setf esmtprc - -" ESQL-C -au BufNewFile,BufRead *.ec,*.EC setf esqlc - -" Esterel -au BufNewFile,BufRead *.strl setf esterel - -" Essbase script -au BufNewFile,BufRead *.csc setf csc - -" Exim -au BufNewFile,BufRead exim.conf setf exim - -" Expect -au BufNewFile,BufRead *.exp setf expect - -" Exports -au BufNewFile,BufRead exports setf exports - -" Fantom -au BufNewFile,BufRead *.fan,*.fwt setf fan - -" Factor -au BufNewFile,BufRead *.factor setf factor - -" Fetchmail RC file -au BufNewFile,BufRead .fetchmailrc setf fetchmail - -" FlexWiki - disabled, because it has side effects when a .wiki file -" is not actually FlexWiki -"au BufNewFile,BufRead *.wiki setf flexwiki - -" Focus Executable -au BufNewFile,BufRead *.fex,*.focexec setf focexec - -" Focus Master file (but not for auto.master) -au BufNewFile,BufRead auto.master setf conf -au BufNewFile,BufRead *.mas,*.master setf master - -" Forth -au BufNewFile,BufRead *.fs,*.ft setf forth - -" Reva Forth -au BufNewFile,BufRead *.frt setf reva - -" Fortran -if has("fname_case") - au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95,*.F03,*.F08 setf fortran -endif -au BufNewFile,BufRead *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95,*.f03,*.f08 setf fortran - -" Framescript -au BufNewFile,BufRead *.fsl setf framescript - -" FStab -au BufNewFile,BufRead fstab,mtab setf fstab - -" GDB command files -au BufNewFile,BufRead .gdbinit setf gdb - -" GDMO -au BufNewFile,BufRead *.mo,*.gdmo setf gdmo - -" Gedcom -au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom - -" Git -autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG setf gitcommit -autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules setf gitconfig -autocmd BufNewFile,BufRead git-rebase-todo setf gitrebase -autocmd BufNewFile,BufRead .msg.[0-9]* - \ if getline(1) =~ '^From.*# This line is ignored.$' | - \ setf gitsendemail | - \ endif -autocmd BufNewFile,BufRead *.git/** - \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' | - \ setf git | - \ endif - -" Gkrellmrc -au BufNewFile,BufRead gkrellmrc,gkrellmrc_? setf gkrellmrc - -" GP scripts (2.0 and onward) -au BufNewFile,BufRead *.gp,.gprc setf gp - -" GPG -au BufNewFile,BufRead */.gnupg/options setf gpg -au BufNewFile,BufRead */.gnupg/gpg.conf setf gpg -au BufNewFile,BufRead /usr/**/gnupg/options.skel setf gpg - -" Gnuplot scripts -au BufNewFile,BufRead *.gpi setf gnuplot - -" GrADS scripts -au BufNewFile,BufRead *.gs setf grads - -" Gretl -au BufNewFile,BufRead *.gretl setf gretl - -" Groovy -au BufNewFile,BufRead *.groovy setf groovy - -" GNU Server Pages -au BufNewFile,BufRead *.gsp setf gsp - -" Group file -au BufNewFile,BufRead /etc/group,/etc/group-,/etc/group.edit,/etc/gshadow,/etc/gshadow-,/etc/gshadow.edit,/var/backups/group.bak,/var/backups/gshadow.bak setf group - -" GTK RC -au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc - -" Haml -au BufNewFile,BufRead *.haml setf haml - -" Hamster Classic | Playground files -au BufNewFile,BufRead *.hsc,*.hsm setf hamster - -" Haskell -au BufNewFile,BufRead *.hs,*.hs-boot setf haskell -au BufNewFile,BufRead *.lhs setf lhaskell -au BufNewFile,BufRead *.chs setf chaskell - -" Haste -au BufNewFile,BufRead *.ht setf haste -au BufNewFile,BufRead *.htpp setf hastepreproc - -" Hercules -au BufNewFile,BufRead *.vc,*.ev,*.rs,*.sum,*.errsum setf hercules - -" HEX (Intel) -au BufNewFile,BufRead *.hex,*.h32 setf hex - -" Tilde (must be before HTML) -au BufNewFile,BufRead *.t.html setf tilde - -" HTML (.shtml and .stm for server side) -au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call s:FThtml() - -" Distinguish between HTML, XHTML and Django -func! s:FThtml() - let n = 1 - while n < 10 && n < line("$") - if getline(n) =~ '\' - setf htmldjango - return - endif - let n = n + 1 - endwhile - setf html -endfunc - -" HTML with Ruby - eRuby -au BufNewFile,BufRead *.erb,*.rhtml setf eruby - -" HTML with M4 -au BufNewFile,BufRead *.html.m4 setf htmlm4 - -" HTML Cheetah template -au BufNewFile,BufRead *.tmpl setf htmlcheetah - -" Host config -au BufNewFile,BufRead /etc/host.conf setf hostconf - -" Hosts access -au BufNewFile,BufRead /etc/hosts.allow,/etc/hosts.deny setf hostsaccess - -" Hyper Builder -au BufNewFile,BufRead *.hb setf hb - -" Icon -au BufNewFile,BufRead *.icn setf icon - -" IDL (Interface Description Language) -au BufNewFile,BufRead *.idl call s:FTidl() - -" Distinguish between standard IDL and MS-IDL -func! s:FTidl() - let n = 1 - while n < 50 && n < line("$") - if getline(n) =~ '^\s*import\s\+"\(unknwn\|objidl\)\.idl"' - setf msidl - return - endif - let n = n + 1 - endwhile - setf idl -endfunc - -" Microsoft IDL (Interface Description Language) Also *.idl -" MOF = WMI (Windows Management Instrumentation) Managed Object Format -au BufNewFile,BufRead *.odl,*.mof setf msidl - -" Icewm menu -au BufNewFile,BufRead */.icewm/menu setf icemenu - -" Indent profile (must come before IDL *.pro!) -au BufNewFile,BufRead .indent.pro setf indent -au BufNewFile,BufRead indent.pro call s:ProtoCheck('indent') - -" IDL (Interactive Data Language) -au BufNewFile,BufRead *.pro call s:ProtoCheck('idlang') - -" Distinguish between "default" and Cproto prototype file. */ -func! s:ProtoCheck(default) - " Cproto files have a comment in the first line and a function prototype in - " the second line, it always ends in ";". Indent files may also have - " comments, thus we can't match comments to see the difference. - if getline(2) =~ ';$' - setf cpp - else - exe 'setf ' . a:default - endif -endfunc - - -" Indent RC -au BufNewFile,BufRead indentrc setf indent - -" Inform -au BufNewFile,BufRead *.inf,*.INF setf inform - -" Initng -au BufNewFile,BufRead /etc/initng/**/*.i,*.ii setf initng - -" Ipfilter -au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules setf ipfilter - -" Informix 4GL (source - canonical, include file, I4GL+M4 preproc.) -au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl setf fgl - -" .INI file for MSDOS -au BufNewFile,BufRead *.ini setf dosini - -" SysV Inittab -au BufNewFile,BufRead inittab setf inittab - -" Inno Setup -au BufNewFile,BufRead *.iss setf iss - -" JAL -au BufNewFile,BufRead *.jal,*.JAL setf jal - -" Jam -au BufNewFile,BufRead *.jpl,*.jpr setf jam - -" Java -au BufNewFile,BufRead *.java,*.jav setf java - -" JavaCC -au BufNewFile,BufRead *.jj,*.jjt setf javacc - -" JavaScript, ECMAScript -au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx setf javascript - -" Java Server Pages -au BufNewFile,BufRead *.jsp setf jsp - -" Java Properties resource file (note: doesn't catch font.properties.pl) -au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_?? setf jproperties -au BufNewFile,BufRead *.properties_??_??_* call s:StarSetf('jproperties') - -" Jess -au BufNewFile,BufRead *.clp setf jess - -" Jgraph -au BufNewFile,BufRead *.jgr setf jgraph - -" Kixtart -au BufNewFile,BufRead *.kix setf kix - -" Kimwitu[++] -au BufNewFile,BufRead *.k setf kwt - -" KDE script -au BufNewFile,BufRead *.ks setf kscript - -" Kconfig -au BufNewFile,BufRead Kconfig,Kconfig.debug setf kconfig - -" Lace (ISE) -au BufNewFile,BufRead *.ace,*.ACE setf lace - -" Latte -au BufNewFile,BufRead *.latte,*.lte setf latte - -" Limits -au BufNewFile,BufRead /etc/limits setf limits - -" LambdaProlog (*.mod too, see Modsim) -au BufNewFile,BufRead *.sig setf lprolog - -" LDAP LDIF -au BufNewFile,BufRead *.ldif setf ldif - -" Ld loader -au BufNewFile,BufRead *.ld setf ld - -" Lex -au BufNewFile,BufRead *.lex,*.l setf lex - -" Libao -au BufNewFile,BufRead /etc/libao.conf,*/.libao setf libao - -" Libsensors -au BufNewFile,BufRead /etc/sensors.conf setf sensors - -" LFTP -au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc setf lftp - -" Lifelines (or Lex for C++!) -au BufNewFile,BufRead *.ll setf lifelines - -" Lilo: Linux loader -au BufNewFile,BufRead lilo.conf* call s:StarSetf('lilo') - -" Lisp (*.el = ELisp, *.cl = Common Lisp, *.jl = librep Lisp) -if has("fname_case") - au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,*.L,.emacs,.sawfishrc setf lisp -else - au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,.emacs,.sawfishrc setf lisp -endif - -" SBCL implementation of Common Lisp -au BufNewFile,BufRead sbclrc,.sbclrc setf lisp - -" Liquid -au BufNewFile,BufRead *.liquid setf liquid - -" Lite -au BufNewFile,BufRead *.lite,*.lt setf lite - -" LiteStep RC files -au BufNewFile,BufRead */LiteStep/*/*.rc setf litestep - -" Login access -au BufNewFile,BufRead /etc/login.access setf loginaccess - -" Login defs -au BufNewFile,BufRead /etc/login.defs setf logindefs - -" Logtalk -au BufNewFile,BufRead *.lgt setf logtalk - -" LOTOS -au BufNewFile,BufRead *.lot,*.lotos setf lotos - -" Lout (also: *.lt) -au BufNewFile,BufRead *.lou,*.lout setf lout - -" Lua -au BufNewFile,BufRead *.lua setf lua - -" Linden Scripting Language (Second Life) -au BufNewFile,BufRead *.lsl setf lsl - -" Lynx style file (or LotusScript!) -au BufNewFile,BufRead *.lss setf lss - -" M4 -au BufNewFile,BufRead *.m4 - \ if expand("") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif - -" MaGic Point -au BufNewFile,BufRead *.mgp setf mgp - -" Mail (for Elm, trn, mutt, muttng, rn, slrn) -au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail - -" Mail aliases -au BufNewFile,BufRead /etc/mail/aliases,/etc/aliases setf mailaliases - -" Mailcap configuration file -au BufNewFile,BufRead .mailcap,mailcap setf mailcap - -" Makefile -au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make - -" MakeIndex -au BufNewFile,BufRead *.ist,*.mst setf ist - -" Manpage -au BufNewFile,BufRead *.man setf man - -" Man config -au BufNewFile,BufRead /etc/man.conf,man.config setf manconf - -" Maple V -au BufNewFile,BufRead *.mv,*.mpl,*.mws setf maple - -" Map (UMN mapserver config file) -au BufNewFile,BufRead *.map setf map - -" Markdown -au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,README.md setf markdown - -" Mason -au BufNewFile,BufRead *.mason,*.mhtml setf mason - -" Matlab or Objective C -au BufNewFile,BufRead *.m call s:FTm() - -func! s:FTm() - let n = 1 - while n < 10 - let line = getline(n) - if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\|//\)' - setf objc - return - endif - if line =~ '^\s*%' - setf matlab - return - endif - if line =~ '^\s*(\*' - setf mma - return - endif - let n = n + 1 - endwhile - if exists("g:filetype_m") - exe "setf " . g:filetype_m - else - setf matlab - endif -endfunc - -" Mathematica notebook -au BufNewFile,BufRead *.nb setf mma - -" Maya Extension Language -au BufNewFile,BufRead *.mel setf mel - -" Mercurial config (looks like generic config file) -au BufNewFile,BufRead *.hgrc,*hgrc setf cfg - -" Messages -au BufNewFile,BufRead /var/log/messages,/var/log/messages.*[0-9] setf messages - -" Metafont -au BufNewFile,BufRead *.mf setf mf - -" MetaPost -au BufNewFile,BufRead *.mp setf mp - -" MGL -au BufNewFile,BufRead *.mgl setf mgl - -" MMIX or VMS makefile -au BufNewFile,BufRead *.mms call s:FTmms() - -" Symbian meta-makefile definition (MMP) -au BufNewFile,BufRead *.mmp setf mmp - -func! s:FTmms() - let n = 1 - while n < 10 - let line = getline(n) - if line =~ '^\s*\(%\|//\)' || line =~ '^\*' - setf mmix - return - endif - if line =~ '^\s*#' - setf make - return - endif - let n = n + 1 - endwhile - setf mmix -endfunc - - -" Modsim III (or LambdaProlog) -au BufNewFile,BufRead *.mod - \ if getline(1) =~ '\' | - \ setf lprolog | - \ else | - \ setf modsim3 | - \ endif - -" Modula 2 -au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2 - -" Modula 3 (.m3, .i3, .mg, .ig) -au BufNewFile,BufRead *.[mi][3g] setf modula3 - -" Monk -au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc setf monk - -" MOO -au BufNewFile,BufRead *.moo setf moo - -" Modconf -au BufNewFile,BufRead /etc/modules.conf,/etc/conf.modules setf modconf -au BufNewFile,BufRead /etc/modutils/* - \ if executable(expand("")) != 1 - \| call s:StarSetf('modconf') - \|endif - -" Mplayer config -au BufNewFile,BufRead mplayer.conf,*/.mplayer/config setf mplayerconf - -" Moterola S record -au BufNewFile,BufRead *.s19,*.s28,*.s37 setf srec - -" Mrxvtrc -au BufNewFile,BufRead mrxvtrc,.mrxvtrc setf mrxvtrc - -" Msql -au BufNewFile,BufRead *.msql setf msql - -" Mysql -au BufNewFile,BufRead *.mysql setf mysql - -" M$ Resource files -au BufNewFile,BufRead *.rc setf rc - -" MuPAD source -au BufRead,BufNewFile *.mu setf mupad - -" Mush -au BufNewFile,BufRead *.mush setf mush - -" Mutt setup file (also for Muttng) -au BufNewFile,BufRead Mutt{ng,}rc setf muttrc - -" Nano -au BufNewFile,BufRead /etc/nanorc,.nanorc setf nanorc - -" Nastran input/DMAP -"au BufNewFile,BufRead *.dat setf nastran - -" Natural -au BufNewFile,BufRead *.NS[ACGLMNPS] setf natural - -" Netrc -au BufNewFile,BufRead .netrc setf netrc - -" Novell netware batch files -au BufNewFile,BufRead *.ncf setf ncf - -" Nroff/Troff (*.ms and *.t are checked below) -au BufNewFile,BufRead *.me - \ if expand("") != "read.me" && expand("") != "click.me" | - \ setf nroff | - \ endif -au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom setf nroff -au BufNewFile,BufRead *.[1-9] call s:FTnroff() - -" This function checks if one of the first five lines start with a dot. In -" that case it is probably an nroff file: 'filetype' is set and 1 is returned. -func! s:FTnroff() - if getline(1)[0] . getline(2)[0] . getline(3)[0] . getline(4)[0] . getline(5)[0] =~ '\.' - setf nroff - return 1 - endif - return 0 -endfunc - -" Nroff or Objective C++ -au BufNewFile,BufRead *.mm call s:FTmm() - -func! s:FTmm() - let n = 1 - while n < 10 - let line = getline(n) - if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)' - setf objcpp - return - endif - let n = n + 1 - endwhile - setf nroff -endfunc - -" Not Quite C -au BufNewFile,BufRead *.nqc setf nqc - -" NSIS -au BufNewFile,BufRead *.nsi setf nsis - -" OCAML -au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly setf ocaml - -" Occam -au BufNewFile,BufRead *.occ setf occam - -" Omnimark -au BufNewFile,BufRead *.xom,*.xin setf omnimark - -" OpenROAD -au BufNewFile,BufRead *.or setf openroad - -" OPL -au BufNewFile,BufRead *.[Oo][Pp][Ll] setf opl - -" Oracle config file -au BufNewFile,BufRead *.ora setf ora - -" Packet filter conf -au BufNewFile,BufRead pf.conf setf pf - -" Pam conf -au BufNewFile,BufRead /etc/pam.conf setf pamconf - -" PApp -au BufNewFile,BufRead *.papp,*.pxml,*.pxsl setf papp - -" Password file -au BufNewFile,BufRead /etc/passwd,/etc/passwd-,/etc/passwd.edit,/etc/shadow,/etc/shadow-,/var/backups/passwd.bak,/var/backups/shadow.bak setf passwd - -" Pascal (also *.p) -au BufNewFile,BufRead *.pas setf pascal - -" Delphi project file -au BufNewFile,BufRead *.dpr setf pascal - -" PDF -au BufNewFile,BufRead *.pdf setf pdf - -" Perl -if has("fname_case") - au BufNewFile,BufRead *.pl,*.PL call s:FTpl() -else - au BufNewFile,BufRead *.pl call s:FTpl() -endif -au BufNewFile,BufRead *.plx,*.al setf perl -au BufNewFile,BufRead *.p6,*.pm6 setf perl6 - -func! s:FTpl() - if exists("g:filetype_pl") - exe "setf " . g:filetype_pl - else - " recognize Prolog by specific text in the first non-empty line - " require a blank after the '%' because Perl uses "%list" and "%translate" - let l = getline(nextnonblank(1)) - if l =~ '\' || l =~ '^\s*\(%\+\(\s\|$\)\|/\*\)' || l =~ ':-' - setf prolog - else - setf perl - endif - endif -endfunc - -" Perl, XPM or XPM2 -au BufNewFile,BufRead *.pm - \ if getline(1) =~ "XPM2" | - \ setf xpm2 | - \ elseif getline(1) =~ "XPM" | - \ setf xpm | - \ else | - \ setf perl | - \ endif - -" Perl POD -au BufNewFile,BufRead *.pod setf pod - -" Php, php3, php4, etc. -" Also Phtml (was used for PHP 2 in the past) -" Also .ctp for Cake template file -au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp setf php - -" Pike -au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod setf pike - -" Pinfo config -au BufNewFile,BufRead */etc/pinforc,*/.pinforc setf pinfo - -" Palm Resource compiler -au BufNewFile,BufRead *.rcp setf pilrc - -" Pine config -au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex setf pine - -" PL/M (also: *.inp) -au BufNewFile,BufRead *.plm,*.p36,*.pac setf plm - -" PL/SQL -au BufNewFile,BufRead *.pls,*.plsql setf plsql - -" PLP -au BufNewFile,BufRead *.plp setf plp - -" PO and PO template (GNU gettext) -au BufNewFile,BufRead *.po,*.pot setf po - -" Postfix main config -au BufNewFile,BufRead main.cf setf pfmain - -" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator) -au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai setf postscr - -" PostScript Printer Description -au BufNewFile,BufRead *.ppd setf ppd - -" Povray -au BufNewFile,BufRead *.pov setf pov - -" Povray configuration -au BufNewFile,BufRead .povrayrc setf povini - -" Povray, PHP or assembly -au BufNewFile,BufRead *.inc call s:FTinc() - -func! s:FTinc() - if exists("g:filetype_inc") - exe "setf " . g:filetype_inc - else - let lines = getline(1).getline(2).getline(3) - if lines =~? "perlscript" - setf aspperl - elseif lines =~ "<%" - setf aspvbs - elseif lines =~ "' - \ || line =~ '^\s*{' || line =~ '^\s*(\*' - setf pascal - return - elseif line !~ '^\s*$' || line =~ '^/\*' - " Not an empty line: Doesn't look like valid Pascal code. - " Or it looks like a Progress /* comment - break - endif - let lnum = lnum + 1 - endw - setf progress -endfunc - - -" Software Distributor Product Specification File (POSIX 1387.2-1995) -au BufNewFile,BufRead *.psf setf psf -au BufNewFile,BufRead INDEX,INFO - \ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' | - \ setf psf | - \ endif - -" Prolog -au BufNewFile,BufRead *.pdb setf prolog - -" Promela -au BufNewFile,BufRead *.pml setf promela - -" Protocols -au BufNewFile,BufRead /etc/protocols setf protocols - -" Pyrex -au BufNewFile,BufRead *.pyx,*.pxd setf pyrex - -" Python -au BufNewFile,BufRead *.py,*.pyw setf python - -" Quixote (Python-based web framework) -au BufNewFile,BufRead *.ptl setf python - -" Radiance -au BufNewFile,BufRead *.rad,*.mat setf radiance - -" Ratpoison config/command files -au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc setf ratpoison - -" RCS file -au BufNewFile,BufRead *\,v setf rcs - -" Readline -au BufNewFile,BufRead .inputrc,inputrc setf readline - -" Registry for MS-Windows -au BufNewFile,BufRead *.reg - \ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif - -" Renderman Interface Bytestream -au BufNewFile,BufRead *.rib setf rib - -" Rexx -au BufNewFile,BufRead *.rexx,*.rex,*.jrexx,*.rxj,*.orx setf rexx - -" R (Splus) -if has("fname_case") - au BufNewFile,BufRead *.s,*.S setf r -else - au BufNewFile,BufRead *.s setf r -endif - -" R Help file -if has("fname_case") - au BufNewFile,BufRead *.rd,*.Rd setf rhelp -else - au BufNewFile,BufRead *.rd setf rhelp -endif - -" R noweb file -if has("fname_case") - au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw setf rnoweb -else - au BufNewFile,BufRead *.rnw,*.snw setf rnoweb -endif - -" Rexx, Rebol or R -au BufNewFile,BufRead *.r,*.R call s:FTr() - -func! s:FTr() - let max = line("$") > 50 ? 50 : line("$") - - for n in range(1, max) - " Rebol is easy to recognize, check for that first - if getline(n) =~? '\' - setf rebol - return - endif - endfor - - for n in range(1, max) - " R has # comments - if getline(n) =~ '^\s*#' - setf r - return - endif - " Rexx has /* comments */ - if getline(n) =~ '^\s*/\*' - setf rexx - return - endif - endfor - - " Nothing recognized, assume Rexx - setf rexx -endfunc - -" Remind -au BufNewFile,BufRead .reminders* call s:StarSetf('remind') -au BufNewFile,BufRead *.remind,*.rem setf remind - -" Resolv.conf -au BufNewFile,BufRead resolv.conf setf resolv - -" Relax NG Compact -au BufNewFile,BufRead *.rnc setf rnc - -" RPL/2 -au BufNewFile,BufRead *.rpl setf rpl - -" Robots.txt -au BufNewFile,BufRead robots.txt setf robots - -" Rpcgen -au BufNewFile,BufRead *.x setf rpcgen - -" reStructuredText Documentation Format -au BufNewFile,BufRead *.rst setf rst - -" RTF -au BufNewFile,BufRead *.rtf setf rtf - -" Interactive Ruby shell -au BufNewFile,BufRead .irbrc,irbrc setf ruby - -" Ruby -au BufNewFile,BufRead *.rb,*.rbw,*.gem,*.gemspec setf ruby - -" Ruby on Rails -au BufNewFile,BufRead *.builder,*.rxml,*.rjs setf ruby - -" Rantfile and Rakefile is like Ruby -au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake setf ruby - -" S-lang (or shader language, or SmallLisp) -au BufNewFile,BufRead *.sl setf slang - -" Samba config -au BufNewFile,BufRead smb.conf setf samba - -" SAS script -au BufNewFile,BufRead *.sas setf sas - -" Sass -au BufNewFile,BufRead *.sass setf sass - -" Sather -au BufNewFile,BufRead *.sa setf sather - -" Scilab -au BufNewFile,BufRead *.sci,*.sce setf scilab - -" SCSS -au BufNewFile,BufRead *.scss setf scss - -" SD: Streaming Descriptors -au BufNewFile,BufRead *.sd setf sd - -" SDL -au BufNewFile,BufRead *.sdl,*.pr setf sdl - -" sed -au BufNewFile,BufRead *.sed setf sed - -" Sieve (RFC 3028) -au BufNewFile,BufRead *.siv setf sieve - -" Sendmail -au BufNewFile,BufRead sendmail.cf setf sm - -" Sendmail .mc files are actually m4. Could also be MS Message text file. -au BufNewFile,BufRead *.mc call s:McSetf() - -func! s:McSetf() - " Rely on the file to start with a comment. - " MS message text files use ';', Sendmail files use '#' or 'dnl' - for lnum in range(1, min([line("$"), 20])) - let line = getline(lnum) - if line =~ '^\s*\(#\|dnl\)' - setf m4 " Sendmail .mc file - return - elseif line =~ '^\s*;' - setf msmessages " MS Message text file - return - endif - endfor - setf m4 " Default: Sendmail .mc file -endfunc - -" Services -au BufNewFile,BufRead /etc/services setf services - -" Service Location config -au BufNewFile,BufRead /etc/slp.conf setf slpconf - -" Service Location registration -au BufNewFile,BufRead /etc/slp.reg setf slpreg - -" Service Location SPI -au BufNewFile,BufRead /etc/slp.spi setf slpspi - -" Setserial config -au BufNewFile,BufRead /etc/serial.conf setf setserial - -" SGML -au BufNewFile,BufRead *.sgm,*.sgml - \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' | - \ setf sgmllnx | - \ elseif getline(1) =~ '") =~ g:ft_ignore_pat - return - endif - if a:name =~ '\' - " Some .sh scripts contain #!/bin/csh. - call SetFileTypeShell("csh") - return - elseif a:name =~ '\' - " Some .sh scripts contain #!/bin/tcsh. - call SetFileTypeShell("tcsh") - return - elseif a:name =~ '\' - let b:is_kornshell = 1 - if exists("b:is_bash") - unlet b:is_bash - endif - if exists("b:is_sh") - unlet b:is_sh - endif - elseif exists("g:bash_is_sh") || a:name =~ '\' || a:name =~ '\' - let b:is_bash = 1 - if exists("b:is_kornshell") - unlet b:is_kornshell - endif - if exists("b:is_sh") - unlet b:is_sh - endif - elseif a:name =~ '\' - let b:is_sh = 1 - if exists("b:is_kornshell") - unlet b:is_kornshell - endif - if exists("b:is_bash") - unlet b:is_bash - endif - endif - call SetFileTypeShell("sh") -endfunc - -" For shell-like file types, check for an "exec" command hidden in a comment, -" as used for Tcl. -" Also called from scripts.vim, thus can't be local to this script. -func! SetFileTypeShell(name) - if expand("") =~ g:ft_ignore_pat - return - endif - let l = 2 - while l < 20 && l < line("$") && getline(l) =~ '^\s*\(#\|$\)' - " Skip empty and comment lines. - let l = l + 1 - endwhile - if l < line("$") && getline(l) =~ '\s*exec\s' && getline(l - 1) =~ '^\s*#.*\\$' - " Found an "exec" line after a comment with continuation - let n = substitute(getline(l),'\s*exec\s\+\([^ ]*/\)\=', '', '') - if n =~ '\' | - \ setf xml | - \ else | - \ setf smil | - \ endif - -" SMIL or SNMP MIB file -au BufNewFile,BufRead *.smi - \ if getline(1) =~ '\' | - \ setf smil | - \ else | - \ setf mib | - \ endif - -" SMITH -au BufNewFile,BufRead *.smt,*.smith setf smith - -" Snobol4 and spitbol -au BufNewFile,BufRead *.sno,*.spt setf snobol4 - -" SNMP MIB files -au BufNewFile,BufRead *.mib,*.my setf mib - -" Snort Configuration -au BufNewFile,BufRead *.hog,snort.conf,vision.conf setf hog -au BufNewFile,BufRead *.rules call s:FTRules() - -let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*' -func! s:FTRules() - let path = expand(':p') - if path =~ '^/etc/udev/\%(rules\.d/\)\=.*\.rules$' - setf udevrules - return - endif - if path =~ '^/etc/ufw/' - setf conf " Better than hog - return - endif - try - let config_lines = readfile('/etc/udev/udev.conf') - catch /^Vim\%((\a\+)\)\=:E484/ - setf hog - return - endtry - let dir = expand(':p:h') - for line in config_lines - if line =~ s:ft_rules_udev_rules_pattern - let udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "") - if dir == udev_rules - setf udevrules - endif - break - endif - endfor - setf hog -endfunc - - -" Spec (Linux RPM) -au BufNewFile,BufRead *.spec setf spec - -" Speedup (AspenTech plant simulator) -au BufNewFile,BufRead *.speedup,*.spdata,*.spd setf spup - -" Slice -au BufNewFile,BufRead *.ice setf slice - -" Spice -au BufNewFile,BufRead *.sp,*.spice setf spice - -" Spyce -au BufNewFile,BufRead *.spy,*.spi setf spyce - -" Squid -au BufNewFile,BufRead squid.conf setf squid - -" SQL for Oracle Designer -au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks setf sql - -" SQL -au BufNewFile,BufRead *.sql call s:SQL() - -func! s:SQL() - if exists("g:filetype_sql") - exe "setf " . g:filetype_sql - else - setf sql - endif -endfunc - -" SQLJ -au BufNewFile,BufRead *.sqlj setf sqlj - -" SQR -au BufNewFile,BufRead *.sqr,*.sqi setf sqr - -" OpenSSH configuration -au BufNewFile,BufRead ssh_config,*/.ssh/config setf sshconfig - -" OpenSSH server configuration -au BufNewFile,BufRead sshd_config setf sshdconfig - -" Stata -au BufNewFile,BufRead *.ado,*.class,*.do,*.imata,*.mata setf stata - -" SMCL -au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl setf smcl - -" Stored Procedures -au BufNewFile,BufRead *.stp setf stp - -" Standard ML -au BufNewFile,BufRead *.sml setf sml - -" Sratus VOS command macro -au BufNewFile,BufRead *.cm setf voscm - -" Sysctl -au BufNewFile,BufRead /etc/sysctl.conf setf sysctl - -" Synopsys Design Constraints -au BufNewFile,BufRead *.sdc setf sdc - -" Sudoers -au BufNewFile,BufRead /etc/sudoers,sudoers.tmp setf sudoers - -" SVG (Scalable Vector Graphics) -au BufNewFile,BufRead *.svg setf svg - -" If the file has an extension of 't' and is in a directory 't' then it is -" almost certainly a Perl test file. -" If the first line starts with '#' and contains 'perl' it's probably a Perl -" file. -" (Slow test) If a file contains a 'use' statement then it is almost certainly -" a Perl file. -func! s:FTperl() - if expand("%:e") == 't' && expand("%:p:h:t") == 't' - setf perl - return 1 - endif - if getline(1)[0] == '#' && getline(1) =~ 'perl' - setf perl - return 1 - endif - if search('^use\s\s*\k', 'nc', 30) - setf perl - return 1 - endif - return 0 -endfunc - -" Tads (or Nroff or Perl test file) -au BufNewFile,BufRead *.t - \ if !s:FTnroff() && !s:FTperl() | setf tads | endif - -" Tags -au BufNewFile,BufRead tags setf tags - -" TAK -au BufNewFile,BufRead *.tak setf tak - -" Task -au BufRead,BufNewFile {pending,completed,undo}.data setf taskdata -au BufRead,BufNewFile *.task setf taskedit - -" Tcl (JACL too) -au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl setf tcl - -" TealInfo -au BufNewFile,BufRead *.tli setf tli - -" Telix Salt -au BufNewFile,BufRead *.slt setf tsalt - -" Terminfo -au BufNewFile,BufRead *.ti setf terminfo - -" TeX -au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex -au BufNewFile,BufRead *.tex call s:FTtex() - -" Choose context, plaintex, or tex (LaTeX) based on these rules: -" 1. Check the first line of the file for "%&". -" 2. Check the first 1000 non-comment lines for LaTeX or ConTeXt keywords. -" 3. Default to "latex" or to g:tex_flavor, can be set in user's vimrc. -func! s:FTtex() - let firstline = getline(1) - if firstline =~ '^%&\s*\a\+' - let format = tolower(matchstr(firstline, '\a\+')) - let format = substitute(format, 'pdf', '', '') - if format == 'tex' - let format = 'plain' - endif - else - " Default value, may be changed later: - let format = exists("g:tex_flavor") ? g:tex_flavor : 'plain' - " Save position, go to the top of the file, find first non-comment line. - let save_cursor = getpos('.') - call cursor(1,1) - let firstNC = search('^\s*[^[:space:]%]', 'c', 1000) - if firstNC " Check the next thousand lines for a LaTeX or ConTeXt keyword. - let lpat = 'documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>' - let cpat = 'start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\>' - let kwline = search('^\s*\\\%(' . lpat . '\)\|^\s*\\\(' . cpat . '\)', - \ 'cnp', firstNC + 1000) - if kwline == 1 " lpat matched - let format = 'latex' - elseif kwline == 2 " cpat matched - let format = 'context' - endif " If neither matched, keep default set above. - " let lline = search('^\s*\\\%(' . lpat . '\)', 'cn', firstNC + 1000) - " let cline = search('^\s*\\\%(' . cpat . '\)', 'cn', firstNC + 1000) - " if cline > 0 - " let format = 'context' - " endif - " if lline > 0 && (cline == 0 || cline > lline) - " let format = 'tex' - " endif - endif " firstNC - call setpos('.', save_cursor) - endif " firstline =~ '^%&\s*\a\+' - - " Translation from formats to file types. TODO: add AMSTeX, RevTex, others? - if format == 'plain' - setf plaintex - elseif format == 'context' - setf context - else " probably LaTeX - setf tex - endif - return -endfunc - -" ConTeXt -au BufNewFile,BufRead tex/context/*/*.tex,*.mkii,*.mkiv setf context - -" Texinfo -au BufNewFile,BufRead *.texinfo,*.texi,*.txi setf texinfo - -" TeX configuration -au BufNewFile,BufRead texmf.cnf setf texmf - -" Tidy config -au BufNewFile,BufRead .tidyrc,tidyrc setf tidy - -" TF mud client -au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf - -" TPP - Text Presentation Program -au BufNewFile,BufReadPost *.tpp setf tpp - -" Trustees -au BufNewFile,BufRead trustees.conf setf trustees - -" TSS - Geometry -au BufNewFile,BufReadPost *.tssgm setf tssgm - -" TSS - Optics -au BufNewFile,BufReadPost *.tssop setf tssop - -" TSS - Command Line (temporary) -au BufNewFile,BufReadPost *.tsscl setf tsscl - -" Motif UIT/UIL files -au BufNewFile,BufRead *.uit,*.uil setf uil - -" Udev conf -au BufNewFile,BufRead /etc/udev/udev.conf setf udevconf - -" Udev permissions -au BufNewFile,BufRead /etc/udev/permissions.d/*.permissions setf udevperm -" -" Udev symlinks config -au BufNewFile,BufRead /etc/udev/cdsymlinks.conf setf sh - -" UnrealScript -au BufNewFile,BufRead *.uc setf uc - -" Updatedb -au BufNewFile,BufRead /etc/updatedb.conf setf updatedb - -" Vera -au BufNewFile,BufRead *.vr,*.vri,*.vrh setf vera - -" Verilog HDL -au BufNewFile,BufRead *.v setf verilog - -" Verilog-AMS HDL -au BufNewFile,BufRead *.va,*.vams setf verilogams - -" VHDL -au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst setf vhdl -au BufNewFile,BufRead *.vhdl_[0-9]* call s:StarSetf('vhdl') - -" Vim script -au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc setf vim - -" Viminfo file -au BufNewFile,BufRead .viminfo,_viminfo setf viminfo - -" Virata Config Script File or Drupal module -au BufRead,BufNewFile *.hw,*.module,*.pkg - \ if getline(1) =~ '' | - \ let b:xf86c_xfree86_version = 3 | - \ endif | - \ setf xf86conf - -" Xorg config -au BufNewFile,BufRead xorg.conf,xorg.conf-4 let b:xf86c_xfree86_version = 4 | setf xf86conf - -" Xinetd conf -au BufNewFile,BufRead /etc/xinetd.conf setf xinetd - -" XS Perl extension interface language -au BufNewFile,BufRead *.xs setf xs - -" X resources file -au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults - -" Xmath -au BufNewFile,BufRead *.msc,*.msf setf xmath -au BufNewFile,BufRead *.ms - \ if !s:FTnroff() | setf xmath | endif - -" XML specific variants: docbk and xbl -au BufNewFile,BufRead *.xml call s:FTxml() - -func! s:FTxml() - let n = 1 - while n < 100 && n < line("$") - let line = getline(n) - if line =~ '\)' && getline(n) !~ '^\s*#\s*include' - setf racc - return - endif - let n = n + 1 - endwhile - setf yacc -endfunc - - -" Yaml -au BufNewFile,BufRead *.yaml,*.yml setf yaml - -" Zope -" dtml (zope dynamic template markup language), pt (zope page template), -" cpt (zope form controller page template) -au BufNewFile,BufRead *.dtml,*.pt,*.cpt call s:FThtml() -" zsql (zope sql method) -au BufNewFile,BufRead *.zsql call s:SQL() - -" Z80 assembler asz80 -au BufNewFile,BufRead *.z8a setf z8a - -augroup END - - -" Source the user-specified filetype file, for backwards compatibility with -" Vim 5.x. -if exists("myfiletypefile") && filereadable(expand(myfiletypefile)) - execute "source " . myfiletypefile -endif - - -" Check for "*" after loading myfiletypefile, so that scripts.vim is only used -" when there are no matching file name extensions. -" Don't do this for compressed files. -augroup filetypedetect -au BufNewFile,BufRead * - \ if !did_filetype() && expand("") !~ g:ft_ignore_pat - \ | runtime! scripts.vim | endif -au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif - - -" Extra checks for when no filetype has been detected now. Mostly used for -" patterns that end in "*". E.g., "zsh*" matches "zsh.vim", but that's a Vim -" script file. -" Most of these should call s:StarSetf() to avoid names ending in .gz and the -" like are used. - -" More Apache files. -au BufNewFile,BufRead /etc/apache2/conf.*/*,/etc/apache2/sites-*/*,/etc/apache2/mods-*/* call s:StarSetf('apache') - -" Asterisk config file -au BufNewFile,BufRead *asterisk/*.conf* call s:StarSetf('asterisk') -au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm') - -" Bazaar version control -au BufNewFile,BufRead bzr_log.* setf bzr - -" BIND zone -au BufNewFile,BufRead */named/db.*,*/bind/db.* call s:StarSetf('bindzone') - -" Changelog -au BufNewFile,BufRead [cC]hange[lL]og* - \ if getline(1) =~ '; urgency=' - \| call s:StarSetf('debchangelog') - \|else - \| call s:StarSetf('changelog') - \|endif - -" Crontab -au BufNewFile,BufRead crontab,crontab.*,/etc/cron.d/* call s:StarSetf('crontab') - -" Debian Sources.list -au BufNewFile,BufRead /etc/apt/sources.list.d/* call s:StarSetf('debsources') - -" Dracula -au BufNewFile,BufRead drac.* call s:StarSetf('dracula') - -" Fvwm -au BufNewFile,BufRead */.fvwm/* call s:StarSetf('fvwm') -au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook - \ let b:fvwm_version = 1 | call s:StarSetf('fvwm') -au BufNewFile,BufRead *fvwm2rc* - \ if expand(":e") == "m4" - \| call s:StarSetf('fvwm2m4') - \|else - \| let b:fvwm_version = 2 | call s:StarSetf('fvwm') - \|endif - -" Gedcom -au BufNewFile,BufRead /tmp/lltmp* call s:StarSetf('gedcom') - -" GTK RC -au BufNewFile,BufRead .gtkrc*,gtkrc* call s:StarSetf('gtkrc') - -" Jam -au BufNewFile,BufRead Prl*.*,JAM*.* call s:StarSetf('jam') - -" Jargon -au! BufNewFile,BufRead *jarg* - \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE' - \| call s:StarSetf('jargon') - \|endif - -" Kconfig -au BufNewFile,BufRead Kconfig.* call s:StarSetf('kconfig') - -" Logcheck -au BufNewFile,BufRead /etc/logcheck/*.d*/* call s:StarSetf('logcheck') - -" Makefile -au BufNewFile,BufRead [mM]akefile* call s:StarSetf('make') - -" Ruby Makefile -au BufNewFile,BufRead [rR]akefile* call s:StarSetf('ruby') - -" Mail (also matches muttrc.vim, so this is below the other checks) -au BufNewFile,BufRead mutt[[:alnum:]._-]\{6\} setf mail - -" Modconf -au BufNewFile,BufRead /etc/modprobe.* call s:StarSetf('modconf') - -" Mutt setup file -au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc* call s:StarSetf('muttrc') -au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc* call s:StarSetf('muttrc') - -" Nroff macros -au BufNewFile,BufRead tmac.* call s:StarSetf('nroff') - -" Pam conf -au BufNewFile,BufRead /etc/pam.d/* call s:StarSetf('pamconf') - -" Printcap and Termcap -au BufNewFile,BufRead *printcap* - \ if !did_filetype() - \| let b:ptcap_type = "print" | call s:StarSetf('ptcap') - \|endif -au BufNewFile,BufRead *termcap* - \ if !did_filetype() - \| let b:ptcap_type = "term" | call s:StarSetf('ptcap') - \|endif - -" Vim script -au BufNewFile,BufRead *vimrc* call s:StarSetf('vim') - -" Subversion commit file -au BufNewFile,BufRead svn-commit*.tmp setf svn - -" X resources file -au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults') - -" XFree86 config -au BufNewFile,BufRead XF86Config-4* - \ let b:xf86c_xfree86_version = 4 | call s:StarSetf('xf86conf') -au BufNewFile,BufRead XF86Config* - \ if getline(1) =~ '\' - \| let b:xf86c_xfree86_version = 3 - \|endif - \|call s:StarSetf('xf86conf') - -" X11 xmodmap -au BufNewFile,BufRead *xmodmap* call s:StarSetf('xmodmap') - -" Xinetd conf -au BufNewFile,BufRead /etc/xinetd.d/* call s:StarSetf('xinetd') - -" Z-Shell script -au BufNewFile,BufRead zsh*,zlog* call s:StarSetf('zsh') - - - -" Use the filetype detect plugins. They may overrule any of the previously -" detected filetypes. -runtime! ftdetect/*.vim - - -" Generic configuration file (check this last, it's just guessing!) -au BufNewFile,BufRead,StdinReadPost * - \ if !did_filetype() && expand("") !~ g:ft_ignore_pat - \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#' - \ || getline(4) =~ '^#' || getline(5) =~ '^#') | - \ setf conf | - \ endif - -augroup END - - -" If the GUI is already running, may still need to install the Syntax menu. -" Don't do it when the 'M' flag is included in 'guioptions'. -if has("menu") && has("gui_running") - \ && !exists("did_install_syntax_menu") && &guioptions !~# "M" - source :p:h/menu.vim -endif - -" Function called for testing all functions defined here. These are -" script-local, thus need to be executed here. -" Returns a string with error messages (hopefully empty). -func! TestFiletypeFuncs(testlist) - let output = '' - for f in a:testlist - try - exe f - catch - let output = output . "\n" . f . ": " . v:exception - endtry - endfor - return output -endfunc - -" Restore 'cpoptions' -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/share/vim/vim73/ftplugin/aap.vim b/share/vim/vim73/ftplugin/aap.vim deleted file mode 100644 index 90d404fa..00000000 --- a/share/vim/vim73/ftplugin/aap.vim +++ /dev/null @@ -1,25 +0,0 @@ -" Vim filetype plugin file -" Language: Aap recipe -" Maintainer: Bram Moolenaar -" Last Change: 2003 Nov 04 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 - -" Reset 'formatoptions', 'comments' and 'expandtab' to undo this plugin. -let b:undo_ftplugin = "setl fo< com< et<" - -" Set 'formatoptions' to break comment lines but not other lines, -" and insert the comment leader when hitting or using "o". -setlocal fo-=t fo+=croql - -" Set 'comments' to format dashed lists in comments. -setlocal comments=s:#\ -,m:#\ \,e:#,n:#,fb:- - -" Expand tabs to spaces to avoid trouble. -setlocal expandtab diff --git a/share/vim/vim73/ftplugin/abaqus.vim b/share/vim/vim73/ftplugin/abaqus.vim deleted file mode 100644 index 873b9bfa..00000000 --- a/share/vim/vim73/ftplugin/abaqus.vim +++ /dev/null @@ -1,89 +0,0 @@ -" Vim filetype plugin file -" Language: Abaqus finite element input file (www.abaqus.com) -" Maintainer: Carl Osterwisch -" Last Change: 2008 Oct 5 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") | finish | endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 - -" Save the compatibility options and temporarily switch to vim defaults -let s:cpo_save = &cpoptions -set cpoptions&vim - -" Set the format of the include file specification for Abaqus -" Used in :check gf ^wf [i and other commands -setlocal include=\\<\\cINPUT\\s*= - -" Remove characters up to the first = when evaluating filenames -setlocal includeexpr=substitute(v:fname,'.\\{-}=','','') - -" Remove comma from valid filename characters since it is used to -" separate keyword parameters -setlocal isfname-=, - -" Define format of comment lines (see 'formatoptions' for uses) -setlocal comments=:** -setlocal commentstring=**%s - -" Definitions start with a * and assign a NAME, NSET, or ELSET -" Used in [d ^wd and other commands -setlocal define=^\\*\\a.*\\c\\(NAME\\\|NSET\\\|ELSET\\)\\s*= - -" Abaqus keywords and identifiers may include a - character -setlocal iskeyword+=- - -let b:undo_ftplugin = "setlocal include< includeexpr< isfname<" - \ . " comments< commentstring< define< iskeyword<" - -if has("folding") - " Fold all lines that do not begin with * - setlocal foldexpr=getline(v:lnum)[0]!=\"\*\" - setlocal foldmethod=expr - let b:undo_ftplugin .= " foldexpr< foldmethod<" -endif - -" Set the file browse filter (currently only supported under Win32 gui) -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "Abaqus Input Files (*.inp *.inc)\t*.inp;*.inc\n" . - \ "Abaqus Results (*.dat)\t*.dat\n" . - \ "Abaqus Messages (*.pre *.msg *.sta)\t*.pre;*.msg;*.sta\n" . - \ "All Files (*.*)\t*.*\n" - let b:undo_ftplugin .= "|unlet b:browsefilter" -endif - -" Define patterns for the matchit plugin -if exists("loaded_matchit") && !exists("b:match_words") - let b:match_ignorecase = 1 - let b:match_words = - \ '\*part:\*end\s*part,' . - \ '\*assembly:\*end\s*assembly,' . - \ '\*instance:\*end\s*instance,' . - \ '\*step:\*end\s*step' - let b:undo_ftplugin .= "|unlet b:match_ignorecase b:match_words" -endif - -" Define keys used to move [count] keywords backward or forward. -noremap [[ ?^\*\a:nohlsearch -noremap ]] /^\*\a:nohlsearch - -" Define key to toggle commenting of the current line or range -noremap - \ :call Abaqus_ToggleComment()j -function! Abaqus_ToggleComment() range - if strpart(getline(a:firstline), 0, 2) == "**" - " Un-comment all lines in range - silent execute a:firstline . ',' . a:lastline . 's/^\*\*//' - else - " Comment all lines in range - silent execute a:firstline . ',' . a:lastline . 's/^/**/' - endif -endfunction - -let b:undo_ftplugin .= "|unmap [[|unmap ]]" - \ . "|unmap " - -" Restore saved compatibility options -let &cpoptions = s:cpo_save diff --git a/share/vim/vim73/ftplugin/ada.vim b/share/vim/vim73/ftplugin/ada.vim deleted file mode 100644 index 091181fd..00000000 --- a/share/vim/vim73/ftplugin/ada.vim +++ /dev/null @@ -1,210 +0,0 @@ -"------------------------------------------------------------------------------ -" Description: Perform Ada specific completion & tagging. -" Language: Ada (2005) -" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $ -" Maintainer: Martin Krischik -" Taylor Venable -" Neil Bird -" $Author: krischik $ -" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ -" Version: 4.6 -" $Revision: 887 $ -" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $ -" History: 24.05.2006 MK Unified Headers -" 26.05.2006 MK ' should not be in iskeyword. -" 16.07.2006 MK Ada-Mode as vim-ball -" 02.10.2006 MK Better folding. -" 15.10.2006 MK Bram's suggestion for runtime integration -" 05.11.2006 MK Bram suggested not to use include protection for -" autoload -" 05.11.2006 MK Bram suggested to save on spaces -" 08.07.2007 TV fix default compiler problems. -" Help Page: ft-ada-plugin -"------------------------------------------------------------------------------ -" Provides mapping overrides for tag jumping that figure out the current -" Ada object and tag jump to that, not the 'simple' vim word. -" Similarly allows matching of full-length ada entities from tags. -"------------------------------------------------------------------------------ - -" Only do this when not done yet for this buffer -if exists ("b:did_ftplugin") || version < 700 - finish -endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 45 - -" -" Temporarily set cpoptions to ensure the script loads OK -" -let s:cpoptions = &cpoptions -set cpoptions-=C - -" Section: Comments {{{1 -" -setlocal comments=O:--,:--\ \ -setlocal commentstring=--\ \ %s -setlocal complete=.,w,b,u,t,i - -" Section: case {{{1 -" -setlocal nosmartcase -setlocal ignorecase - -" Section: formatoptions {{{1 -" -setlocal formatoptions+=ron - -" Section: Tagging {{{1 -" -if exists ("g:ada_extended_tagging") - " Make local tag mappings for this buffer (if not already set) - if g:ada_extended_tagging == 'jump' - if mapcheck('','n') == '' - nnoremap :call ada#Jump_Tag ('', 'tjump') - endif - if mapcheck('g','n') == '' - nnoremap g :call ada#Jump_Tag ('','stjump') - endif - elseif g:ada_extended_tagging == 'list' - if mapcheck('','n') == '' - nnoremap :call ada#List_Tag () - endif - if mapcheck('g','n') == '' - nnoremap g :call ada#List_Tag () - endif - endif -endif - -" Section: Completion {{{1 -" -setlocal completefunc=ada#User_Complete -setlocal omnifunc=adacomplete#Complete - -if exists ("g:ada_extended_completion") - if mapcheck ('','i') == '' - inoremap =ada#Completion("\C-N>") - endif - if mapcheck ('','i') == '' - inoremap =ada#Completion("\C-P>") - endif - if mapcheck ('','i') == '' - inoremap =ada#Completion("\C-X>\C-]>") - endif - if mapcheck ('','i') == '' - inoremap =ada#Insert_Backspace () - endif -endif - -" Section: Matchit {{{1 -" -" Only do this when not done yet for this buffer & matchit is used -" -if !exists ("b:match_words") && - \ exists ("loaded_matchit") - " - " The following lines enable the macros/matchit.vim plugin for - " Ada-specific extended matching with the % key. - " - let s:notend = '\%(\:\:\:\\s\+\,' . - \ s:notend . '\:\:\\s\+\,' . - \ '\%(\.*\|\.*\|'.s:notend.'\)\:\\s\+\,' . - \ '\%(\\|\\):\:\\s*\%($\|[;A-Z]\),' . - \ s:notend . '\:\\s\+\' -endif - - -" Section: Compiler {{{1 -" -if ! exists("g:ada_default_compiler") - if has("vms") - let g:ada_default_compiler = 'decada' - else - let g:ada_default_compiler = 'gnat' - endif -endif - -if ! exists("current_compiler") || - \ current_compiler != g:ada_default_compiler - execute "compiler " . g:ada_default_compiler -endif - -" Section: Folding {{{1 -" -if exists("g:ada_folding") - if g:ada_folding[0] == 'i' - setlocal foldmethod=indent - setlocal foldignore=-- - setlocal foldnestmax=5 - elseif g:ada_folding[0] == 'g' - setlocal foldmethod=expr - setlocal foldexpr=ada#Pretty_Print_Folding(v:lnum) - elseif g:ada_folding[0] == 's' - setlocal foldmethod=syntax - endif - setlocal tabstop=8 - setlocal softtabstop=3 - setlocal shiftwidth=3 -endif - -" Section: Abbrev {{{1 -" -if exists("g:ada_abbrev") - iabbrev ret return - iabbrev proc procedure - iabbrev pack package - iabbrev func function -endif - -" Section: Commands, Mapping, Menus {{{1 -" -call ada#Map_Popup ( - \ 'Tag.List', - \ 'l', - \ 'call ada#List_Tag ()') -call ada#Map_Popup ( - \'Tag.Jump', - \'j', - \'call ada#Jump_Tag ()') -call ada#Map_Menu ( - \'Tag.Create File', - \':AdaTagFile', - \'call ada#Create_Tags (''file'')') -call ada#Map_Menu ( - \'Tag.Create Dir', - \':AdaTagDir', - \'call ada#Create_Tags (''dir'')') - -call ada#Map_Menu ( - \'Highlight.Toggle Space Errors', - \ ':AdaSpaces', - \'call ada#Switch_Syntax_Option (''space_errors'')') -call ada#Map_Menu ( - \'Highlight.Toggle Lines Errors', - \ ':AdaLines', - \'call ada#Switch_Syntax_Option (''line_errors'')') -call ada#Map_Menu ( - \'Highlight.Toggle Rainbow Color', - \ ':AdaRainbow', - \'call ada#Switch_Syntax_Option (''rainbow_color'')') -call ada#Map_Menu ( - \'Highlight.Toggle Standard Types', - \ ':AdaTypes', - \'call ada#Switch_Syntax_Option (''standard_types'')') - -" 1}}} -" Reset cpoptions -let &cpoptions = s:cpoptions -unlet s:cpoptions - -finish " 1}}} - -"------------------------------------------------------------------------------ -" Copyright (C) 2006 Martin Krischik -" -" Vim is Charityware - see ":help license" or uganda.txt for licence details. -"------------------------------------------------------------------------------ -" vim: textwidth=78 nowrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab -" vim: foldmethod=marker diff --git a/share/vim/vim73/ftplugin/ant.vim b/share/vim/vim73/ftplugin/ant.vim deleted file mode 100644 index 648fca1b..00000000 --- a/share/vim/vim73/ftplugin/ant.vim +++ /dev/null @@ -1,43 +0,0 @@ -" Vim filetype plugin file -" Language: ant -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -" Define some defaults in case the included ftplugins don't set them. -let s:undo_ftplugin = "" -let s:browsefilter = "XML Files (*.xml)\t*.xml\n" . - \ "All Files (*.*)\t*.*\n" - -runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim -let b:did_ftplugin = 1 - -" Override our defaults if these were set by an included ftplugin. -if exists("b:undo_ftplugin") - let s:undo_ftplugin = b:undo_ftplugin -endif -if exists("b:browsefilter") - let s:browsefilter = b:browsefilter -endif - -" Change the :browse e filter to primarily show Ant-related files. -if has("gui_win32") - let b:browsefilter = "Build Files (build.xml)\tbuild.xml\n" . - \ "Java Files (*.java)\t*.java\n" . - \ "Properties Files (*.prop*)\t*.prop*\n" . - \ "Manifest Files (*.mf)\t*.mf\n" . - \ s:browsefilter -endif - -" Undo the stuff we changed. -let b:undo_ftplugin = "unlet! b:browsefilter | " . s:undo_ftplugin - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/art.vim b/share/vim/vim73/ftplugin/art.vim deleted file mode 100644 index cb95e6bf..00000000 --- a/share/vim/vim73/ftplugin/art.vim +++ /dev/null @@ -1,16 +0,0 @@ -" Vim filetype plugin -" Language: ART-IM and ART*Enterprise -" Maintainer: Dorai Sitaram -" URL: http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html -" Last Change: Apr 2, 2003 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -run ftplugin/lisp.vim - -setl lw-=if -setl lw+=def-art-fun,deffacts,defglobal,defrule,defschema, - \for,schema,while diff --git a/share/vim/vim73/ftplugin/aspvbs.vim b/share/vim/vim73/ftplugin/aspvbs.vim deleted file mode 100644 index 2b841efc..00000000 --- a/share/vim/vim73/ftplugin/aspvbs.vim +++ /dev/null @@ -1,59 +0,0 @@ -" Vim filetype plugin file -" Language: aspvbs -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -" Define some defaults in case the included ftplugins don't set them. -let s:undo_ftplugin = "" -let s:browsefilter = "HTML Files (*.html, *.htm)\t*.htm*\n" . - \ "All Files (*.*)\t*.*\n" -let s:match_words = "" - -runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim -let b:did_ftplugin = 1 - -" Override our defaults if these were set by an included ftplugin. -if exists("b:undo_ftplugin") - let s:undo_ftplugin = b:undo_ftplugin -endif -if exists("b:browsefilter") - let s:browsefilter = b:browsefilter -endif -if exists("b:match_words") - let s:match_words = b:match_words -endif - -" ASP: Active Server Pages (with Visual Basic Script) -" thanks to Gontran BAERTS -if exists("loaded_matchit") - let s:notend = '\%(\\%(.\{-}then\s\+\w\)\@!:\:^\s*\:\,' . - \ s:notend . '\:\:\:\,' . - \ '^\s*\:\,' . - \ '^\s*\:\,' . - \ '\:\,' . - \ '^\s*\:\,' . - \ '^\s*\:\,' . - \ '\:\,' . - \ s:match_words -endif - -" Change the :browse e filter to primarily show ASP-related files. -if has("gui_win32") - let b:browsefilter="ASP Files (*.asp)\t*.asp\n" . s:browsefilter -endif - -let b:undo_ftplugin = "unlet! b:match_words b:match_ignorecase b:browsefilter | " . s:undo_ftplugin - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/c.vim b/share/vim/vim73/ftplugin/c.vim deleted file mode 100644 index 162205bc..00000000 --- a/share/vim/vim73/ftplugin/c.vim +++ /dev/null @@ -1,64 +0,0 @@ -" Vim filetype plugin file -" Language: C -" Maintainer: Bram Moolenaar -" Last Change: 2007 Sep 25 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 - -" Using line continuation here. -let s:cpo_save = &cpo -set cpo-=C - -let b:undo_ftplugin = "setl fo< com< ofu< | if has('vms') | setl isk< | endif" - -" Set 'formatoptions' to break comment lines but not other lines, -" and insert the comment leader when hitting or using "o". -setlocal fo-=t fo+=croql - -" Set completion with CTRL-X CTRL-O to autoloaded function. -if exists('&ofu') - setlocal ofu=ccomplete#Complete -endif - -" Set 'comments' to format dashed lists in comments. -setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// - -" In VMS C keywords contain '$' characters. -if has("vms") - setlocal iskeyword+=$ -endif - -" When the matchit plugin is loaded, this makes the % command skip parens and -" braces in comments. -let b:match_words = &matchpairs -let b:match_skip = 's:comment\|string\|character' - -" Win32 can filter files in the browse dialog -if has("gui_win32") && !exists("b:browsefilter") - if &ft == "cpp" - let b:browsefilter = "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" . - \ "C Header Files (*.h)\t*.h\n" . - \ "C Source Files (*.c)\t*.c\n" . - \ "All Files (*.*)\t*.*\n" - elseif &ft == "ch" - let b:browsefilter = "Ch Source Files (*.ch *.chf)\t*.ch;*.chf\n" . - \ "C Header Files (*.h)\t*.h\n" . - \ "C Source Files (*.c)\t*.c\n" . - \ "All Files (*.*)\t*.*\n" - else - let b:browsefilter = "C Source Files (*.c)\t*.c\n" . - \ "C Header Files (*.h)\t*.h\n" . - \ "Ch Source Files (*.ch *.chf)\t*.ch;*.chf\n" . - \ "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" . - \ "All Files (*.*)\t*.*\n" - endif -endif - -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/share/vim/vim73/ftplugin/changelog.vim b/share/vim/vim73/ftplugin/changelog.vim deleted file mode 100644 index 30cd7b5d..00000000 --- a/share/vim/vim73/ftplugin/changelog.vim +++ /dev/null @@ -1,301 +0,0 @@ -" Vim filetype plugin file -" Language: generic Changelog file -" Maintainer: Nikolai Weibull -" Latest Revision: 2009-05-25 -" Variables: -" g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) - -" description: the timeformat used in ChangeLog entries. -" default: "%Y-%m-%d". -" g:changelog_dateformat - -" description: the format sent to strftime() to generate a date string. -" default: "%Y-%m-%d". -" g:changelog_username - -" description: the username to use in ChangeLog entries -" default: try to deduce it from environment variables and system files. -" Local Mappings: -" o - -" adds a new changelog entry for the current user for the current date. -" Global Mappings: -" o - -" switches to the ChangeLog buffer opened for the current directory, or -" opens it in a new buffer if it exists in the current directory. Then -" it does the same as the local o described above. -" Notes: -" run 'runtime ftplugin/changelog.vim' to enable the global mapping for -" changelog files. -" TODO: -" should we perhaps open the ChangeLog file even if it doesn't exist already? -" Problem is that you might end up with ChangeLog files all over the place. - -" If 'filetype' isn't "changelog", we must have been to add ChangeLog opener -if &filetype == 'changelog' - if exists('b:did_ftplugin') - finish - endif - let b:did_ftplugin = 1 - - let s:cpo_save = &cpo - set cpo&vim - - " Set up the format used for dates. - if !exists('g:changelog_dateformat') - if exists('g:changelog_timeformat') - let g:changelog_dateformat = g:changelog_timeformat - else - let g:changelog_dateformat = "%Y-%m-%d" - endif - endif - - function! s:username() - if exists('g:changelog_username') - return g:changelog_username - elseif $EMAIL != "" - return $EMAIL - elseif $EMAIL_ADDRESS != "" - return $EMAIL_ADDRESS - endif - - let login = s:login() - return printf('%s <%s@%s>', s:name(login), login, s:hostname()) - endfunction - - function! s:login() - return s:trimmed_system_with_default('whoami', 'unknown') - endfunction - - function! s:trimmed_system_with_default(command, default) - return s:first_line(s:system_with_default(a:command, a:default)) - endfunction - - function! s:system_with_default(command, default) - let output = system(a:command) - if v:shell_error - return default - endif - return output - endfunction - - function! s:first_line(string) - return substitute(a:string, '\n.*$', "", "") - endfunction - - function! s:name(login) - for name in [s:gecos_name(a:login), $NAME, s:capitalize(a:login)] - if name != "" - return name - endif - endfor - endfunction - - function! s:gecos_name(login) - for line in s:try_reading_file('/etc/passwd') - if line =~ '^' . a:login . ':' - return substitute(s:passwd_field(line, 5), '&', s:capitalize(a:login), "") - endif - endfor - return "" - endfunction - - function! s:try_reading_file(path) - try - return readfile(a:path) - endtry - return [] - endfunction - - function! s:passwd_field(line, field) - let fields = split(a:line, ':', 1) - if len(fields) < field - return "" - endif - return fields[field - 1] - endfunction - - function! s:capitalize(word) - return toupper(a:word[0]) . strpart(a:word, 1) - endfunction - - function! s:hostname() - return s:trimmed_system_with_default('hostname', 'localhost') - endfunction - - " Format used for new date entries. - if !exists('g:changelog_new_date_format') - let g:changelog_new_date_format = "%d %u\n\n\t* %c\n\n" - endif - - " Format used for new entries to current date entry. - if !exists('g:changelog_new_entry_format') - let g:changelog_new_entry_format = "\t* %c" - endif - - " Regular expression used to find a given date entry. - if !exists('g:changelog_date_entry_search') - let g:changelog_date_entry_search = '^\s*%d\_s*%u' - endif - - " Regular expression used to find the end of a date entry - if !exists('g:changelog_date_end_entry_search') - let g:changelog_date_end_entry_search = '^\s*$' - endif - - - " Substitutes specific items in new date-entry formats and search strings. - " Can be done with substitute of course, but unclean, and need \@! then. - function! s:substitute_items(str, date, user) - let str = a:str - let middles = {'%': '%', 'd': a:date, 'u': a:user, 'c': '{cursor}'} - let i = stridx(str, '%') - while i != -1 - let inc = 0 - if has_key(middles, str[i + 1]) - let mid = middles[str[i + 1]] - let str = strpart(str, 0, i) . mid . strpart(str, i + 2) - let inc = strlen(mid) - endif - let i = stridx(str, '%', i + 1 + inc) - endwhile - return str - endfunction - - " Position the cursor once we've done all the funky substitution. - function! s:position_cursor() - if search('{cursor}') > 0 - let lnum = line('.') - let line = getline(lnum) - let cursor = stridx(line, '{cursor}') - call setline(lnum, substitute(line, '{cursor}', '', '')) - endif - startinsert! - endfunction - - " Internal function to create a new entry in the ChangeLog. - function! s:new_changelog_entry() - " Deal with 'paste' option. - let save_paste = &paste - let &paste = 1 - call cursor(1, 1) - " Look for an entry for today by our user. - let date = strftime(g:changelog_dateformat) - let search = s:substitute_items(g:changelog_date_entry_search, date, - \ g:changelog_username) - if search(search) > 0 - " Ok, now we look for the end of the date entry, and add an entry. - call cursor(nextnonblank(line('.') + 1), 1) - if search(g:changelog_date_end_entry_search, 'W') > 0 - let p = (line('.') == line('$')) ? line('.') : line('.') - 1 - else - let p = line('.') - endif - let ls = split(s:substitute_items(g:changelog_new_entry_format, '', ''), - \ '\n') - call append(p, ls) - call cursor(p + 1, 1) - else - " Flag for removing empty lines at end of new ChangeLogs. - let remove_empty = line('$') == 1 - - " No entry today, so create a date-user header and insert an entry. - let todays_entry = s:substitute_items(g:changelog_new_date_format, - \ date, g:changelog_username) - " Make sure we have a cursor positioning. - if stridx(todays_entry, '{cursor}') == -1 - let todays_entry = todays_entry . '{cursor}' - endif - - " Now do the work. - call append(0, split(todays_entry, '\n')) - - " Remove empty lines at end of file. - if remove_empty - $-/^\s*$/-1,$delete - endif - - " Reposition cursor once we're done. - call cursor(1, 1) - endif - - call s:position_cursor() - - " And reset 'paste' option - let &paste = save_paste - endfunction - - if exists(":NewChangelogEntry") != 2 - noremap o :call new_changelog_entry() - command! -nargs=0 NewChangelogEntry call s:new_changelog_entry() - endif - - let b:undo_ftplugin = "setl com< fo< et< ai<" - - setlocal comments= - setlocal formatoptions+=t - setlocal noexpandtab - setlocal autoindent - - if &textwidth == 0 - setlocal textwidth=78 - let b:undo_ftplugin .= " tw<" - endif - - let &cpo = s:cpo_save - unlet s:cpo_save -else - let s:cpo_save = &cpo - set cpo&vim - - " Add the Changelog opening mapping - nnoremap o :call open_changelog() - - function! s:open_changelog() - let path = expand('%:p:h') - if exists('b:changelog_path') - let changelog = b:changelog_path - else - if exists('b:changelog_name') - let name = b:changelog_name - else - let name = 'ChangeLog' - endif - while isdirectory(path) - let changelog = path . '/' . name - if filereadable(changelog) - break - endif - let parent = substitute(path, '/\+[^/]*$', "", "") - if path == parent - break - endif - let path = parent - endwhile - endif - if !filereadable(changelog) - return - endif - - if exists('b:changelog_entry_prefix') - let prefix = call(b:changelog_entry_prefix, []) - else - let prefix = substitute(strpart(expand('%:p'), strlen(path)), '^/\+', "", "") . ':' - endif - if !empty(prefix) - let prefix = ' ' . prefix - endif - - let buf = bufnr(changelog) - if buf != -1 - if bufwinnr(buf) != -1 - execute bufwinnr(buf) . 'wincmd w' - else - execute 'sbuffer' buf - endif - else - execute 'split' fnameescape(changelog) - endif - - call s:new_changelog_entry(prefix) - endfunction - - let &cpo = s:cpo_save - unlet s:cpo_save -endif diff --git a/share/vim/vim73/ftplugin/config.vim b/share/vim/vim73/ftplugin/config.vim deleted file mode 100644 index df607b1b..00000000 --- a/share/vim/vim73/ftplugin/config.vim +++ /dev/null @@ -1,41 +0,0 @@ -" Vim filetype plugin file -" Language: config -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -" Define some defaults in case the included ftplugins don't set them. -let s:undo_ftplugin = "" -let s:browsefilter = "Bourne Shell Files (*.sh)\t*.sh\n" . - \ "All Files (*.*)\t*.*\n" -let s:match_words = "" - -runtime! ftplugin/sh.vim ftplugin/sh_*.vim ftplugin/sh/*.vim -let b:did_ftplugin = 1 - -" Override our defaults if these were set by an included ftplugin. -if exists("b:undo_ftplugin") - let s:undo_ftplugin = b:undo_ftplugin -endif -if exists("b:browsefilter") - let s:browsefilter = b:browsefilter -endif - -" Change the :browse e filter to primarily show configure-related files. -if has("gui_win32") - let b:browsefilter="Configure Scripts (configure.*, config.*)\tconfigure*;config.*\n" . - \ s:browsefilter -endif - -" Undo the stuff we changed. -let b:undo_ftplugin = "unlet! b:browsefilter | " . b:undo_ftplugin - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/cs.vim b/share/vim/vim73/ftplugin/cs.vim deleted file mode 100644 index 0ff3c9d5..00000000 --- a/share/vim/vim73/ftplugin/cs.vim +++ /dev/null @@ -1,24 +0,0 @@ -" Vim filetype plugin file -" Language: C# -" Maintainer: Johannes Zellner -" Last Change: Tue, 09 Mar 2004 14:09:33 CET - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 - -" Set 'formatoptions' to break comment lines but not other lines, -" and insert the comment leader when hitting or using "o". -setlocal fo-=t fo+=croql - -" Set 'comments' to format dashed lists in comments. -setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,:// - -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "C# Source Files (*.cs)\t*.cs\n" . - \ "All Files (*.*)\t*.*\n" -endif diff --git a/share/vim/vim73/ftplugin/csc.vim b/share/vim/vim73/ftplugin/csc.vim deleted file mode 100644 index ac020881..00000000 --- a/share/vim/vim73/ftplugin/csc.vim +++ /dev/null @@ -1,26 +0,0 @@ -" Vim filetype plugin file -" Language: csc -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -if exists("loaded_matchit") - let b:match_words= - \ '\:\,' . - \ '\:\:\,' . - \ '\\|\:\' -endif - -" Undo the stuff we changed. -let b:undo_ftplugin = "unlet! b:match_words" - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/csh.vim b/share/vim/vim73/ftplugin/csh.vim deleted file mode 100644 index 3f89c72c..00000000 --- a/share/vim/vim73/ftplugin/csh.vim +++ /dev/null @@ -1,47 +0,0 @@ -" Vim filetype plugin file -" Language: csh -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -setlocal commentstring=#%s -setlocal formatoptions-=t -setlocal formatoptions+=crql - -" Csh: thanks to Johannes Zellner -" - Both foreach and end must appear alone on separate lines. -" - The words else and endif must appear at the beginning of input lines; -" the if must appear alone on its input line or after an else. -" - Each case label and the default label must appear at the start of a -" line. -" - while and end must appear alone on their input lines. -if exists("loaded_matchit") - let b:match_words = - \ '^\s*\.*(.*).*\:'. - \ '^\s*\\s\+\.*(.*).*\:^\s*\:'. - \ '^\s*\,'. - \ '\%(^\s*\\s\+\S\+\|^s*\\).*(.*):'. - \ '\:\:^\s*\,'. - \ '^\s*\.*(.*):^\s*\\s\+:^\s*\:^\s*\' -endif - -" Change the :browse e filter to primarily show csh-related files. -if has("gui_win32") - let b:browsefilter="csh Scripts (*.csh)\t*.csh\n" . - \ "All Files (*.*)\t*.*\n" -endif - -" Undo the stuff we changed. -let b:undo_ftplugin = "setlocal commentstring< formatoptions<" . - \ " | unlet! b:match_words b:browsefilter" - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/cucumber.vim b/share/vim/vim73/ftplugin/cucumber.vim deleted file mode 100644 index a29d46a0..00000000 --- a/share/vim/vim73/ftplugin/cucumber.vim +++ /dev/null @@ -1,132 +0,0 @@ -" Vim filetype plugin -" Language: Cucumber -" Maintainer: Tim Pope -" Last Change: 2010 Aug 09 - -" Only do this when not done yet for this buffer -if (exists("b:did_ftplugin")) - finish -endif -let b:did_ftplugin = 1 - -setlocal formatoptions-=t formatoptions+=croql -setlocal comments=:# commentstring=#\ %s -setlocal omnifunc=CucumberComplete - -let b:undo_ftplugin = "setl fo< com< cms< ofu<" - -let b:cucumber_root = expand('%:p:h:s?.*[\/]\%(features\|stories\)\zs[\/].*??') - -if !exists("g:no_plugin_maps") && !exists("g:no_cucumber_maps") - nmap :exe jump('edit',v:count) - nmap ] :exe jump('split',v:count) - nmap :exe jump('split',v:count) - nmap } :exe jump('pedit',v:count) - let b:undo_ftplugin .= "| sil! iunmap! | sil! iunmap! ]| sil! iunmap! | sil! iunmap! }" -endif - -function! s:jump(command,count) - let steps = s:steps('.') - if len(steps) == 0 || len(steps) < a:count - return 'echoerr "No matching step found"' - elseif len(steps) > 1 && !a:count - return 'echoerr "Multiple matching steps found"' - else - let c = a:count ? a:count-1 : 0 - return a:command.' +'.steps[c][1].' '.escape(steps[c][0],' %#') - endif -endfunction - -function! s:allsteps() - let step_pattern = '\C^\s*\K\k*\>\s*\zs\S.\{-\}\ze\s*\%(do\|{\)\s*\%(|[^|]*|\s*\)\=\%($\|#\)' - let steps = [] - for file in split(glob(b:cucumber_root.'/**/*.rb'),"\n") - let lines = readfile(file) - let num = 0 - for line in lines - let num += 1 - if line =~ step_pattern - let type = matchstr(line,'\w\+') - let steps += [[file,num,type,matchstr(line,step_pattern)]] - endif - endfor - endfor - return steps -endfunction - -function! s:steps(lnum) - let c = indent(a:lnum) + 1 - while synIDattr(synID(a:lnum,c,1),'name') !~# '^$\|Region$' - let c = c + 1 - endwhile - let step = matchstr(getline(a:lnum)[c-1 : -1],'^\s*\zs.\{-\}\ze\s*$') - return filter(s:allsteps(),'s:stepmatch(v:val[3],step)') -endfunction - -function! s:stepmatch(receiver,target) - if a:receiver =~ '^[''"].*[''"]$' - let pattern = '^'.escape(substitute(a:receiver[1:-2],'$\w\+','(.*)','g'),'/').'$' - elseif a:receiver =~ '^/.*/$' - let pattern = a:receiver[1:-2] - elseif a:receiver =~ '^%r..*.$' - let pattern = escape(a:receiver[3:-2],'/') - else - return 0 - endif - try - let vimpattern = substitute(substitute(pattern,'\\\@ -" Former Maintainers: Michael Piefel -" Stefano Zacchiroli -" Last Change: 2010-07-11 -" License: GNU GPL, version 2.0 or later -" URL: http://hg.debian.org/hg/pkg-vim/vim/file/unstable/runtime/ftplugin/debchangelog.vim - -" Bug completion requires apt-listbugs installed for Debian packages or -" python-launchpadlib installed for Ubuntu packages - -if exists("b:did_ftplugin") - finish -endif -let b:did_ftplugin=1 - -" {{{1 Local settings (do on every load) -if exists("g:debchangelog_fold_enable") - setlocal foldmethod=expr - setlocal foldexpr=DebGetChangelogFold(v:lnum) - setlocal foldtext=DebChangelogFoldText() -endif - -" Debian changelogs are not supposed to have any other text width, -" so the user cannot override this setting -setlocal tw=78 -setlocal comments=f:* - -" Clean unloading -let b:undo_ftplugin = "setlocal tw< comments< foldmethod< foldexpr< foldtext<" -" }}}1 - -if exists("g:did_changelog_ftplugin") - finish -endif - -" Don't load another plugin (this is global) -let g:did_changelog_ftplugin = 1 - -" {{{1 GUI menu - -" Helper functions returning various data. -" Returns full name, either from $DEBFULLNAME or debianfullname. -" TODO Is there a way to determine name from anywhere else? -function FullName() - if exists("$DEBFULLNAME") - return $DEBFULLNAME - elseif exists("g:debianfullname") - return g:debianfullname - else - return "Your Name" - endif -endfunction - -" Returns email address, from $DEBEMAIL, $EMAIL or debianemail. -function Email() - if exists("$DEBEMAIL") - return $DEBEMAIL - elseif exists("$EMAIL") - return $EMAIL - elseif exists("g:debianemail") - return g:debianemail - else - return "your@email.address" - endif -endfunction - -" Returns date in RFC822 format. -function Date() - let savelang = v:lc_time - execute "language time C" - let dateandtime = strftime("%a, %d %b %Y %X %z") - execute "language time " . savelang - return dateandtime -endfunction - -function WarnIfNotUnfinalised() - if match(getline("."), " -- [[:alpha:]][[:alnum:].]")!=-1 - echohl WarningMsg - echo "The entry has not been unfinalised before editing." - echohl None - return 1 - endif - return 0 -endfunction - -function Finalised() - let savelinenum = line(".") - normal 1G - call search("^ -- ") - if match(getline("."), " -- [[:alpha:]][[:alnum:].]")!=-1 - let returnvalue = 1 - else - let returnvalue = 0 - endif - execute savelinenum - return returnvalue -endfunction - -" These functions implement the menus -function NewVersion() - " The new entry is unfinalised and shall be changed - amenu disable Changelog.New\ Version - amenu enable Changelog.Add\ Entry - amenu enable Changelog.Close\ Bug - amenu enable Changelog.Set\ Distribution - amenu enable Changelog.Set\ Urgency - amenu disable Changelog.Unfinalise - amenu enable Changelog.Finalise - call append(0, substitute(getline(1), '-\([[:digit:]]\+\))', '-$$\1)', '')) - call append(1, "") - call append(2, "") - call append(3, " -- ") - call append(4, "") - call Urgency("low") - normal 1G0 - call search(")") - normal h - normal  - call setline(1, substitute(getline(1), '-\$\$', '-', '')) - if exists("g:debchangelog_fold_enable") - foldopen - endif - call AddEntry() -endfunction - -function AddEntry() - normal 1G - call search("^ -- ") - normal kk - call append(".", " * ") - normal jjj - let warn=WarnIfNotUnfinalised() - normal kk - if warn - echohl MoreMsg - call input("Hit ENTER") - echohl None - endif - startinsert! -endfunction - -function CloseBug() - normal 1G - call search("^ -- ") - let warn=WarnIfNotUnfinalised() - normal kk - call append(".", " * (closes: #" . input("Bug number to close: ") . ")") - normal j^ll - startinsert -endfunction - -function Distribution(dist) - call setline(1, substitute(getline(1), ") [[:lower:] ]*;", ") " . a:dist . ";", "")) -endfunction - -function Urgency(urg) - call setline(1, substitute(getline(1), "urgency=.*$", "urgency=" . a:urg, "")) -endfunction - -function UnfinaliseMenu() - " This means the entry shall be changed - amenu disable Changelog.New\ Version - amenu enable Changelog.Add\ Entry - amenu enable Changelog.Close\ Bug - amenu enable Changelog.Set\ Distribution - amenu enable Changelog.Set\ Urgency - amenu disable Changelog.Unfinalise - amenu enable Changelog.Finalise -endfunction - -function Unfinalise() - call UnfinaliseMenu() - normal 1G - call search("^ -- ") - call setline(".", " -- ") -endfunction - -function FinaliseMenu() - " This means the entry should not be changed anymore - amenu enable Changelog.New\ Version - amenu disable Changelog.Add\ Entry - amenu disable Changelog.Close\ Bug - amenu disable Changelog.Set\ Distribution - amenu disable Changelog.Set\ Urgency - amenu enable Changelog.Unfinalise - amenu disable Changelog.Finalise -endfunction - -function Finalise() - call FinaliseMenu() - normal 1G - call search("^ -- ") - call setline(".", " -- " . FullName() . " <" . Email() . "> " . Date()) -endfunction - - -function MakeMenu() - amenu &Changelog.&New\ Version :call NewVersion() - amenu Changelog.&Add\ Entry :call AddEntry() - amenu Changelog.&Close\ Bug :call CloseBug() - menu Changelog.-sep- - - amenu Changelog.Set\ &Distribution.&unstable :call Distribution("unstable") - amenu Changelog.Set\ Distribution.&frozen :call Distribution("frozen") - amenu Changelog.Set\ Distribution.&stable :call Distribution("stable") - menu Changelog.Set\ Distribution.-sep- - amenu Changelog.Set\ Distribution.frozen\ unstable :call Distribution("frozen unstable") - amenu Changelog.Set\ Distribution.stable\ unstable :call Distribution("stable unstable") - amenu Changelog.Set\ Distribution.stable\ frozen :call Distribution("stable frozen") - amenu Changelog.Set\ Distribution.stable\ frozen\ unstable :call Distribution("stable frozen unstable") - - amenu Changelog.Set\ &Urgency.&low :call Urgency("low") - amenu Changelog.Set\ Urgency.&medium :call Urgency("medium") - amenu Changelog.Set\ Urgency.&high :call Urgency("high") - - menu Changelog.-sep- - amenu Changelog.U&nfinalise :call Unfinalise() - amenu Changelog.&Finalise :call Finalise() - - if Finalised() - call FinaliseMenu() - else - call UnfinaliseMenu() - endif -endfunction - -augroup changelogMenu -au BufEnter * if &filetype == "debchangelog" | call MakeMenu() | endif -au BufLeave * if &filetype == "debchangelog" | silent! aunmenu Changelog | endif -augroup END - -" }}} -" {{{1 folding - -" look for an author name in the [zonestart zoneend] lines searching backward -function! s:getAuthor(zonestart, zoneend) - let linepos = a:zoneend - while linepos >= a:zonestart - let line = getline(linepos) - if line =~ '^ --' - return substitute(line, '^ --\s*\([^<]\+\)\s*.*', '\1', '') - endif - let linepos -= 1 - endwhile - return '[unknown]' -endfunction - -" Look for a package source name searching backward from the givenline and -" returns it. Return the empty string if the package name can't be found -function! DebGetPkgSrcName(lineno) - let lineidx = a:lineno - let pkgname = '' - while lineidx > 0 - let curline = getline(lineidx) - if curline =~ '^\S' - let pkgname = matchlist(curline, '^\(\S\+\).*$')[1] - break - endif - let lineidx = lineidx - 1 - endwhile - return pkgname -endfunction - -function! DebChangelogFoldText() - if v:folddashes == '-' " changelog entry fold - return foldtext() . ' -- ' . s:getAuthor(v:foldstart, v:foldend) . ' ' - endif - return foldtext() -endfunction - -function! DebGetChangelogFold(lnum) - let line = getline(a:lnum) - if line =~ '^\w\+' - return '>1' " beginning of a changelog entry - endif - if line =~ '^\s\+\[.*\]' - return '>2' " beginning of an author-specific chunk - endif - if line =~ '^ --' - return '1' - endif - return '=' -endfunction - -if exists("g:debchangelog_fold_enable") - silent! foldopen! " unfold the entry the cursor is on (usually the first one) -endif - -" }}} - -" {{{1 omnicompletion for Closes: # - -if !exists('g:debchangelog_listbugs_severities') - let g:debchangelog_listbugs_severities = 'critical,grave,serious,important,normal,minor,wishlist' -endif - -fun! DebCompleteBugs(findstart, base) - if a:findstart - let line = getline('.') - - " try to detect whether this is closes: or lp: - let g:debchangelog_complete_mode = 'debbugs' - let try_colidx = col('.') - 1 - let colidx = -1 " default to no-completion-possible - - while try_colidx > 0 && line[try_colidx - 1] =~ '\s\|\d\|#\|,\|:' - let try_colidx = try_colidx - 1 - if line[try_colidx] == '#' && colidx == -1 - " found hash, where we complete from: - let colidx = try_colidx - elseif line[try_colidx] == ':' - if try_colidx > 1 && strpart(line, try_colidx - 2, 3) =~ '\clp:' - let g:debchangelog_complete_mode = 'lp' - endif - break - endif - endwhile - return colidx - else " return matches: - let bug_lines = [] - if g:debchangelog_complete_mode == 'lp' - if ! has('python') - echoerr 'vim must be built with Python support to use LP bug completion' - return - endif - let pkgsrc = DebGetPkgSrcName(line('.')) - python << EOF -import vim -try: - from launchpadlib.launchpad import Launchpad - from lazr.restfulclient.errors import HTTPError - # login anonymously - lp = Launchpad.login_anonymously('debchangelog.vim', 'production') - ubuntu = lp.distributions['ubuntu'] - try: - sp = ubuntu.getSourcePackage(name=vim.eval('pkgsrc')) - status = ('New', 'Incomplete', 'Confirmed', 'Triaged', - 'In Progress', 'Fix Committed') - tasklist = sp.searchTasks(status=status, order_by='id') - liststr = '[' - for task in tasklist: - bug = task.bug - liststr += "'#%d - %s'," % (bug.id, bug.title.replace('\'', '\'\'')) - liststr += ']' - vim.command('silent let bug_lines = %s' % liststr.encode('utf-8')) - except HTTPError: - pass -except ImportError: - vim.command('echoerr \'python-launchpadlib >= 1.5.4 needs to be installed to use Launchpad bug completion\'') -EOF - else - if ! filereadable('/usr/sbin/apt-listbugs') - echoerr 'apt-listbugs not found, you should install it to use Closes bug completion' - return - endif - let pkgsrc = DebGetPkgSrcName(line('.')) - let listbugs_output = system('/usr/sbin/apt-listbugs -s ' . g:debchangelog_listbugs_severities . ' list ' . pkgsrc . ' | grep "^ #" 2> /dev/null') - let bug_lines = split(listbugs_output, '\n') - endif - let completions = [] - for line in bug_lines - let parts = matchlist(line, '^\s*\(#\S\+\)\s*-\s*\(.*\)$') - " filter only those which match a:base: - if parts[1] !~ "^" . a:base - continue - endif - let completion = {} - let completion['word'] = parts[1] - let completion['menu'] = parts[2] - let completion['info'] = parts[0] - let completions += [completion] - endfor - return completions - endif -endfun - -setlocal omnifunc=DebCompleteBugs - -" }}} - -" vim: set foldmethod=marker: diff --git a/share/vim/vim73/ftplugin/dosbatch.vim b/share/vim/vim73/ftplugin/dosbatch.vim deleted file mode 100644 index 6e581e7e..00000000 --- a/share/vim/vim73/ftplugin/dosbatch.vim +++ /dev/null @@ -1,21 +0,0 @@ -" Vim filetype plugin file -" Language: MS-DOS .bat files -" Maintainer: Mike Williams -" Last Change: 27th May 2009 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 - -" BAT comment formatting -setlocal comments=b:rem,b:@rem,b:REM,b:@REM,::: -setlocal formatoptions-=t formatoptions+=rol - -" Define patterns for the browse file filter -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "DOS Batch Files (*.bat, *.cmd)\t*.bat;*.cmd\nAll Files (*.*)\t*.*\n" -endif diff --git a/share/vim/vim73/ftplugin/dtd.vim b/share/vim/vim73/ftplugin/dtd.vim deleted file mode 100644 index eed5ca6a..00000000 --- a/share/vim/vim73/ftplugin/dtd.vim +++ /dev/null @@ -1,39 +0,0 @@ -" Vim filetype plugin file -" Language: dtd -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -setlocal commentstring= -setlocal comments=s: - -setlocal formatoptions-=t -if !exists("g:ft_dtd_autocomment") || (g:ft_dtd_autocomment == 1) - setlocal formatoptions+=croql -endif - -if exists("loaded_matchit") - let b:match_words = ',' -endif - -" Change the :browse e filter to primarily show Java-related files. -if has("gui_win32") - let b:browsefilter="DTD Files (*.dtd)\t*.dtd\n" . - \ "XML Files (*.xml)\t*.xml\n" . - \ "All Files (*.*)\t*.*\n" -endif - -" Undo the stuff we changed. -let b:undo_ftplugin = "setlocal commentstring< comments< formatoptions<" . - \ " | unlet! b:matchwords b:browsefilter" - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/eruby.vim b/share/vim/vim73/ftplugin/eruby.vim deleted file mode 100644 index 7c19a09a..00000000 --- a/share/vim/vim73/ftplugin/eruby.vim +++ /dev/null @@ -1,104 +0,0 @@ -" Vim filetype plugin -" Language: eRuby -" Maintainer: Tim Pope -" Last Change: 2010 Apr 15 -" URL: http://vim-ruby.rubyforge.org -" Anon CVS: See above site -" Release Coordinator: Doug Kearns - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -let s:save_cpo = &cpo -set cpo-=C - -" Define some defaults in case the included ftplugins don't set them. -let s:undo_ftplugin = "" -let s:browsefilter = "All Files (*.*)\t*.*\n" -let s:match_words = "" - -if !exists("g:eruby_default_subtype") - let g:eruby_default_subtype = "html" -endif - -if !exists("b:eruby_subtype") - let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") - let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+') - if b:eruby_subtype == '' - let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+') - endif - if b:eruby_subtype == '' - let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+$') - endif - if b:eruby_subtype == 'rhtml' - let b:eruby_subtype = 'html' - elseif b:eruby_subtype == 'rb' - let b:eruby_subtype = 'ruby' - elseif b:eruby_subtype == 'yml' - let b:eruby_subtype = 'yaml' - elseif b:eruby_subtype == 'js' - let b:eruby_subtype = 'javascript' - elseif b:eruby_subtype == 'txt' - " Conventional; not a real file type - let b:eruby_subtype = 'text' - elseif b:eruby_subtype == '' - let b:eruby_subtype = g:eruby_default_subtype - endif -endif - -if exists("b:eruby_subtype") && b:eruby_subtype != '' - exe "runtime! ftplugin/".b:eruby_subtype.".vim ftplugin/".b:eruby_subtype."_*.vim ftplugin/".b:eruby_subtype."/*.vim" -else - runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim -endif -unlet! b:did_ftplugin - -" Override our defaults if these were set by an included ftplugin. -if exists("b:undo_ftplugin") - let s:undo_ftplugin = b:undo_ftplugin - unlet b:undo_ftplugin -endif -if exists("b:browsefilter") - let s:browsefilter = b:browsefilter - unlet b:browsefilter -endif -if exists("b:match_words") - let s:match_words = b:match_words - unlet b:match_words -endif - -runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim -let b:did_ftplugin = 1 - -" Combine the new set of values with those previously included. -if exists("b:undo_ftplugin") - let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin -endif -if exists ("b:browsefilter") - let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter -endif -if exists("b:match_words") - let s:match_words = b:match_words . ',' . s:match_words -endif - -" Change the browse dialog on Win32 to show mainly eRuby-related files -if has("gui_win32") - let b:browsefilter="eRuby Files (*.erb, *.rhtml)\t*.erb;*.rhtml\n" . s:browsefilter -endif - -" Load the combined list of match_words for matchit.vim -if exists("loaded_matchit") - let b:match_words = s:match_words -endif - -" TODO: comments= -setlocal commentstring=<%#%s%> - -let b:undo_ftplugin = "setl cms< " - \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin - -let &cpo = s:save_cpo - -" vim: nowrap sw=2 sts=2 ts=8: diff --git a/share/vim/vim73/ftplugin/fortran.vim b/share/vim/vim73/ftplugin/fortran.vim deleted file mode 100644 index 741465da..00000000 --- a/share/vim/vim73/ftplugin/fortran.vim +++ /dev/null @@ -1,118 +0,0 @@ -" Vim settings file -" Language: Fortran90 (and Fortran95, Fortran77, F and elf90) -" Version: 0.46 -" Last Change: 2010 July 24 -" Maintainer: Ajit J. Thakkar ; -" Usage: Do :help fortran-plugin from Vim -" Credits: -" Useful suggestions were made by Stefano Zacchiroli and Hendrik Merx. - -" Only do these settings when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -" Don't do other file type settings for this buffer -let b:did_ftplugin = 1 - -" Determine whether this is a fixed or free format source file -" if this hasn't been done yet -if !exists("b:fortran_fixed_source") - if exists("fortran_free_source") - " User guarantees free source form - let b:fortran_fixed_source = 0 - elseif exists("fortran_fixed_source") - " User guarantees fixed source form - let b:fortran_fixed_source = 1 - else - " f90 and f95 allow both fixed and free source form - " assume fixed source form unless signs of free source form - " are detected in the first five columns of the first s:lmax lines - " Detection becomes more accurate and time-consuming if more lines - " are checked. Increase the limit below if you keep lots of comments at - " the very top of each file and you have a fast computer - let s:lmax = 500 - if ( s:lmax > line("$") ) - let s:lmax = line("$") - endif - let b:fortran_fixed_source = 1 - let s:ln=1 - while s:ln <= s:lmax - let s:test = strpart(getline(s:ln),0,5) - if s:test !~ '^[Cc*]' && s:test !~ '^ *[!#]' && s:test =~ '[^ 0-9\t]' && s:test !~ '^[ 0-9]*\t' - let b:fortran_fixed_source = 0 - break - endif - let s:ln = s:ln + 1 - endwhile - unlet! s:lmax s:ln s:test - endif -endif - -" Set comments and textwidth according to source type -if (b:fortran_fixed_source == 1) - setlocal comments=:!,:*,:C - " Fixed format requires a textwidth of 72 for code - setlocal tw=72 - " If you need to add "&" on continued lines so that the code is - " compatible with both free and fixed format, then you should do so - " in column 73 and uncomment the next line - " setlocal tw=73 -else - setlocal comments=:! - " Free format allows a textwidth of 132 for code but 80 is more usual - setlocal tw=80 -endif - -" Set commentstring for foldmethod=marker -setlocal cms=!%s - -" Tabs are not a good idea in Fortran so the default is to expand tabs -if !exists("fortran_have_tabs") - setlocal expandtab -endif - -" Set 'formatoptions' to break comment and text lines but allow long lines -setlocal fo+=tcql - -setlocal include=^\\c#\\=\\s*include\\s\\+ -setlocal suffixesadd+=.f95,.f90,.for,.f,.F,.f77,.ftn,.fpp - -let s:cposet=&cpoptions -set cpoptions-=C - -" Define patterns for the matchit plugin -if !exists("b:match_words") - let s:notend = '\%(\:' . s:notselect. '\:\,' . - \ s:notelse . '\:' . - \ '\:\,'. - \ 'do\s\+\(\d\+\):\%(^\s*\)\@<=\1\s,'. - \ s:notend . '\:\,'. - \ s:notelse . '\:\:\,'. - \ s:notend . '\,'. - \ s:notend . '\:\,'. - \ s:notend . '\:\,'. - \ s:notend . '\:\,'. - \ s:notend . '\' . s:notprocedure . ':\,'. - \ s:notend . '\:\' -endif - -" File filters for :browse e -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "Fortran Files (*.f;*.F;*.for;*.f77;*.f90;*.f95;*.fpp;*.ftn)\t*.f;*.F;*.for;*.f77;*.f90;*.f95;*.fpp;*.ftn\n" . - \ "All Files (*.*)\t*.*\n" -endif - -let b:undo_ftplugin = "setl fo< com< tw< cms< et< inc<" - \ . "| unlet! b:match_ignorecase b:match_words b:browsefilter" - -let &cpoptions=s:cposet -unlet s:cposet - -" vim:sw=2 diff --git a/share/vim/vim73/ftplugin/git.vim b/share/vim/vim73/ftplugin/git.vim deleted file mode 100644 index e043c758..00000000 --- a/share/vim/vim73/ftplugin/git.vim +++ /dev/null @@ -1,37 +0,0 @@ -" Vim filetype plugin -" Language: generic git output -" Maintainer: Tim Pope -" Last Change: 2010 May 21 - -" Only do this when not done yet for this buffer -if (exists("b:did_ftplugin")) - finish -endif -let b:did_ftplugin = 1 - -if !exists('b:git_dir') - if expand('%:p') =~# '\.git\>' - let b:git_dir = matchstr(expand('%:p'),'.*\.git\>') - elseif $GIT_DIR != '' - let b:git_dir = $GIT_DIR - endif - if (has('win32') || has('win64')) && exists('b:git_dir') - let b:git_dir = substitute(b:git_dir,'\\','/','g') - endif -endif - -if exists('*shellescape') && exists('b:git_dir') && b:git_dir != '' - if b:git_dir =~# '/\.git$' " Not a bare repository - let &l:path = escape(fnamemodify(b:git_dir,':h'),'\, ').','.&l:path - endif - let &l:path = escape(b:git_dir,'\, ').','.&l:path - let &l:keywordprg = 'git --git-dir='.shellescape(b:git_dir).' show' -else - setlocal keywordprg=git\ show -endif -if has('gui_running') - let &l:keywordprg = substitute(&l:keywordprg,'^git\>','git --no-pager','') -endif - -setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','') -let b:undo_ftplugin = "setl keywordprg< path< includeexpr<" diff --git a/share/vim/vim73/ftplugin/gitcommit.vim b/share/vim/vim73/ftplugin/gitcommit.vim deleted file mode 100644 index 94d635c5..00000000 --- a/share/vim/vim73/ftplugin/gitcommit.vim +++ /dev/null @@ -1,68 +0,0 @@ -" Vim filetype plugin -" Language: git commit file -" Maintainer: Tim Pope -" Last Change: 2010 May 21 - -" Only do this when not done yet for this buffer -if (exists("b:did_ftplugin")) - finish -endif - -runtime! ftplugin/git.vim -let b:did_ftplugin = 1 - -if &textwidth == 0 - " make sure that log messages play nice with git-log on standard terminals - setlocal textwidth=72 - if !exists("b:undo_ftplugin") - let b:undo_ftplugin = "" - endif - let b:undo_ftplugin = b:undo_ftplugin . "|setl tw<" -endif - -if exists("g:no_gitcommit_commands") || v:version < 700 - finish -endif - -if !exists("b:git_dir") - let b:git_dir = expand("%:p:h") -endif - -" Automatically diffing can be done with: -" autocmd FileType gitcommit DiffGitCached | wincmd p -command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(0,b:git_dir,) - -function! s:diffcomplete(A,L,P) - let args = "" - if a:P <= match(a:L." -- "," -- ")+3 - let args = args . "-p\n--stat\n--shortstat\n--summary\n--patch-with-stat\n--no-renames\n-B\n-M\n-C\n" - end - if exists("b:git_dir") && a:A !~ '^-' - let tree = fnamemodify(b:git_dir,':h') - if strpart(getcwd(),0,strlen(tree)) == tree - let args = args."\n".system("git diff --cached --name-only") - endif - endif - return args -endfunction - -function! s:gitdiffcached(bang,gitdir,...) - let tree = fnamemodify(a:gitdir,':h') - let name = tempname() - let git = "git" - if strpart(getcwd(),0,strlen(tree)) != tree - let git .= " --git-dir=".(exists("*shellescape") ? shellescape(a:gitdir) : '"'.a:gitdir.'"') - endif - if a:0 - let extra = join(map(copy(a:000),exists("*shellescape") ? 'shellescape(v:val)' : "'\"'.v:val.'\"'")) - else - let extra = "-p --stat=".&columns - endif - call system(git." diff --cached --no-color ".extra." > ".(exists("*shellescape") ? shellescape(name) : name)) - exe "pedit ".(exists("*fnameescape") ? fnameescape(name) : name) - wincmd P - let b:git_dir = a:gitdir - command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(0,b:git_dir,) - nnoremap q :q - setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git -endfunction diff --git a/share/vim/vim73/ftplugin/haml.vim b/share/vim/vim73/ftplugin/haml.vim deleted file mode 100644 index b2c1eca3..00000000 --- a/share/vim/vim73/ftplugin/haml.vim +++ /dev/null @@ -1,67 +0,0 @@ -" Vim filetype plugin -" Language: Haml -" Maintainer: Tim Pope -" Last Change: 2010 May 21 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -let s:save_cpo = &cpo -set cpo-=C - -" Define some defaults in case the included ftplugins don't set them. -let s:undo_ftplugin = "" -let s:browsefilter = "All Files (*.*)\t*.*\n" -let s:match_words = "" - -runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim -unlet! b:did_ftplugin - -" Override our defaults if these were set by an included ftplugin. -if exists("b:undo_ftplugin") - let s:undo_ftplugin = b:undo_ftplugin - unlet b:undo_ftplugin -endif -if exists("b:browsefilter") - let s:browsefilter = b:browsefilter - unlet b:browsefilter -endif -if exists("b:match_words") - let s:match_words = b:match_words - unlet b:match_words -endif - -runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim -let b:did_ftplugin = 1 - -" Combine the new set of values with those previously included. -if exists("b:undo_ftplugin") - let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin -endif -if exists ("b:browsefilter") - let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter -endif -if exists("b:match_words") - let s:match_words = b:match_words . ',' . s:match_words -endif - -" Change the browse dialog on Win32 to show mainly Haml-related files -if has("gui_win32") - let b:browsefilter="Haml Files (*.haml)\t*.haml\nSass Files (*.sass)\t*.sass\n" . s:browsefilter -endif - -" Load the combined list of match_words for matchit.vim -if exists("loaded_matchit") - let b:match_words = s:match_words -endif - -setlocal comments= commentstring=-#\ %s - -let b:undo_ftplugin = "setl cms< com< " - \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin - -let &cpo = s:save_cpo - -" vim:set sw=2: diff --git a/share/vim/vim73/ftplugin/hamster.vim b/share/vim/vim73/ftplugin/hamster.vim deleted file mode 100644 index ddb40f92..00000000 --- a/share/vim/vim73/ftplugin/hamster.vim +++ /dev/null @@ -1,61 +0,0 @@ -" Vim filetype plugin -" Language: Hamster Script -" Version: 2.0.6.0 -" Maintainer: David Fishburn -" Last Change: Wed Nov 08 2006 12:03:09 PM - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 - -let cpo_save = &cpo -set cpo-=C - -let b:undo_ftplugin = "setl fo< com< tw< commentstring<" - \ . "| unlet! b:match_ignorecase b:match_words b:match_skip" - -" Set 'formatoptions' to break comment lines but not other lines, -" and insert the comment leader when hitting or using "o". -setlocal fo-=t fo+=croql - -" Use the # sign for comments -setlocal comments=:# - -" Format comments to be up to 78 characters long -if &tw == 0 - setlocal tw=78 -endif - -" Comments start with a double quote -setlocal commentstring=#%s - -" Move around functions. -noremap [[ :call search('^\s*sub\>', "bW") -noremap ]] :call search('^\s*sub\>', "W") -noremap [] :call search('^\s*endsub\>', "bW") -noremap ][ :call search('^\s*endsub\>', "W") - -" Move around comments -noremap ]# :call search('^\s*#\@!', "W") -noremap [# :call search('^\s*#\@!', "bW") - -" Let the matchit plugin know what items can be matched. -if exists("loaded_matchit") - let b:match_ignorecase = 0 - let b:match_words = - \ '\:\:\,' . - \ '\:\:\:\,' . - \ '\:\:\' - - " Ignore ":syntax region" commands, the 'end' argument clobbers if-endif - " let b:match_skip = 'getline(".") =~ "^\\s*sy\\%[ntax]\\s\\+region" || - " \ synIDattr(synID(line("."),col("."),1),"name") =~? "comment\\|string"' -endif - -setlocal ignorecase -let &cpo = cpo_save -setlocal cpo+=M " makes \%( match \) diff --git a/share/vim/vim73/ftplugin/help.vim b/share/vim/vim73/ftplugin/help.vim deleted file mode 100644 index fdac4106..00000000 --- a/share/vim/vim73/ftplugin/help.vim +++ /dev/null @@ -1,19 +0,0 @@ -" Vim filetype plugin file -" Language: Vim help file -" Maintainer: Nikolai Weibull -" Latest Revision: 2008-07-09 - -if exists("b:did_ftplugin") - finish -endif -let b:did_ftplugin = 1 - -let s:cpo_save = &cpo -set cpo&vim - -let b:undo_ftplugin = "setl fo< tw< cole< cocu<" - -setlocal formatoptions+=tcroql textwidth=78 cole=2 cocu=nc - -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/share/vim/vim73/ftplugin/html.vim b/share/vim/vim73/ftplugin/html.vim deleted file mode 100644 index 5f1384b3..00000000 --- a/share/vim/vim73/ftplugin/html.vim +++ /dev/null @@ -1,90 +0,0 @@ -" Vim filetype plugin file -" Language: html -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -setlocal matchpairs+=<:> -setlocal commentstring= -setlocal comments=s: - -if exists("g:ft_html_autocomment") && (g:ft_html_autocomment == 1) - setlocal formatoptions-=t formatoptions+=croql -endif - - -if exists('&omnifunc') - " Distinguish between HTML versions - " To use with other HTML versions add another - " elseif condition to match proper DOCTYPE - setlocal omnifunc=htmlcomplete#CompleteTags - - if &filetype == 'xhtml' - let b:html_omni_flavor = 'xhtml10s' - else - let b:html_omni_flavor = 'html401t' - endif - let i = 1 - let line = "" - while i < 10 && i < line("$") - let line = getline(i) - if line =~ '' - let b:html_omni_flavor = 'html40' - endif - if line =~ '\' - let b:html_omni_flavor .= 't' - elseif line =~ '\' - let b:html_omni_flavor .= 'f' - else - let b:html_omni_flavor .= 's' - endif - endif - endif -endif - -" HTML: thanks to Johannes Zellner and Benji Fisher. -if exists("loaded_matchit") - let b:match_ignorecase = 1 - let b:match_words = '<:>,' . - \ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' . - \ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' . - \ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>' -endif - -" Change the :browse e filter to primarily show HTML-related files. -if has("gui_win32") - let b:browsefilter="HTML Files (*.html,*.htm)\t*.htm;*.html\n" . - \ "JavaScript Files (*.js)\t*.js\n" . - \ "Cascading StyleSheets (*.css)\t*.css\n" . - \ "All Files (*.*)\t*.*\n" -endif - -" Undo the stuff we changed. -let b:undo_ftplugin = "setlocal commentstring< matchpairs< omnifunc< comments< formatoptions<" . - \ " | unlet! b:match_ignorecase b:match_skip b:match_words b:browsefilter" - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/initex.vim b/share/vim/vim73/ftplugin/initex.vim deleted file mode 100644 index 4f35d04c..00000000 --- a/share/vim/vim73/ftplugin/initex.vim +++ /dev/null @@ -1,38 +0,0 @@ -" filetype plugin for TeX and variants -" Language: TeX (ft=initex) -" Maintainer: Benji Fisher, Ph.D. -" Version: 1.0 -" Last Change: Wed 19 Apr 2006 - -" Only do this when not done yet for this buffer. -if exists("b:did_ftplugin") - finish -endif - -" Don't load another plugin for this buffer. -let b:did_ftplugin = 1 - -" Avoid problems if running in 'compatible' mode. -let s:save_cpo = &cpo -set cpo&vim - -let b:undo_ftplugin = "setl com< cms< define< include< sua<" - -" Set 'comments' to format dashed lists in comments -setlocal com=sO:%\ -,mO:%\ \ ,eO:%%,:% - -" Set 'commentstring' to recognize the % comment character: -" (Thanks to Ajit Thakkar.) -setlocal cms=%%s - -" Allow "[d" to be used to find a macro definition: -let &l:define='\\\([egx]\|char\|mathchar\|count\|dimen\|muskip\|skip\|toks\)\=' - \ . 'def\|\\font\|\\\(future\)\=let' - -" Tell Vim to recognize \input bar : -let &l:include = '\\input' -setlocal suffixesadd=.tex - -let &cpo = s:save_cpo - -" vim:sts=2:sw=2: diff --git a/share/vim/vim73/ftplugin/ishd.vim b/share/vim/vim73/ftplugin/ishd.vim deleted file mode 100644 index dedb3288..00000000 --- a/share/vim/vim73/ftplugin/ishd.vim +++ /dev/null @@ -1,28 +0,0 @@ -" Vim filetype plugin file -" Language: InstallShield (ft=ishd) -" Maintainer: Johannes Zellner -" Last Change: Sat, 24 May 2003 11:55:36 CEST - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -setlocal foldmethod=syntax - -set cpo-=C - -" matchit support -if exists("loaded_matchit") - let b:match_ignorecase=0 - let b:match_words= - \ '\%(^\s*\)\@<=\\s\+[^()]\+\s*(:\%(^\s*\)\@<=\\s*$:\%(^\s*\)\@<=\:\%(^\s*\)\@<=\\s*;\s*$,' . - \ '\%(^\s*\)\@<=\\s*$:\%(^\s*\)\@<=\\s\+.\{-}\s*;\s*$,' . - \ '\%(^\s*\)\@<=\\s*(.\{-}):\%(^\s*\)\@<=\<\%(case\|default\)\>:\%(^\s*\)\@<=\\s*;\s*$,' . - \ '\%(^\s*\)\@<=\\s*(.\{-}):\%(^\s*\)\@<=\\s*;\s*$,' . - \ '\%(^\s*\)\@<=\.\{-}\<\%(to\|downto\)\>:\%(^\s*\)\@<=\\s*;\s*$,' . - \ '\%(^\s*\)\@<=\\s*(.\{-})\s*then:\%(^\s*\)\@<=\\s*([^)]*)\s*then:\%(^\s*\)\@<=\:\%(^\s*\)\@<=\\s*;\s*$' -endif - -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "InstallShield Files (*.rul)\t*.rul\n" . - \ "All Files (*.*)\t*.*\n" -endif diff --git a/share/vim/vim73/ftplugin/java.vim b/share/vim/vim73/ftplugin/java.vim deleted file mode 100644 index 6c7b3671..00000000 --- a/share/vim/vim73/ftplugin/java.vim +++ /dev/null @@ -1,50 +0,0 @@ -" Vim filetype plugin file -" Language: Java -" Maintainer: Dan Sharp -" Last Change: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -" For filename completion, prefer the .java extension over the .class -" extension. -set suffixes+=.class - -" Enable gf on import statements. Convert . in the package -" name to / and append .java to the name, then search the path. -setlocal includeexpr=substitute(v:fname,'\\.','/','g') -setlocal suffixesadd=.java -if exists("g:ftplugin_java_source_path") - let &l:path=g:ftplugin_java_source_path . ',' . &l:path -endif - -" Set 'formatoptions' to break comment lines but not other lines, -" and insert the comment leader when hitting or using "o". -setlocal formatoptions-=t formatoptions+=croql - -" Set 'comments' to format dashed lists in comments. Behaves just like C. -setlocal comments& comments^=sO:*\ -,mO:*\ \ ,exO:*/ - -setlocal commentstring=//%s - -" Change the :browse e filter to primarily show Java-related files. -if has("gui_win32") - let b:browsefilter="Java Files (*.java)\t*.java\n" . - \ "Properties Files (*.prop*)\t*.prop*\n" . - \ "Manifest Files (*.mf)\t*.mf\n" . - \ "All Files (*.*)\t*.*\n" -endif - -" Undo the stuff we changed. -let b:undo_ftplugin = "setlocal suffixes< suffixesadd<" . - \ " formatoptions< comments< commentstring< path< includeexpr<" . - \ " | unlet! b:browsefilter" - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/jsp.vim b/share/vim/vim73/ftplugin/jsp.vim deleted file mode 100644 index 9c0eb968..00000000 --- a/share/vim/vim73/ftplugin/jsp.vim +++ /dev/null @@ -1,66 +0,0 @@ -" Vim filetype plugin file -" Language: jsp -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -" Define some defaults in case the included ftplugins don't set them. -let s:undo_ftplugin = "" -let s:browsefilter = "Java Files (*.java)\t*.java\n" . - \ "HTML Files (*.html, *.htm)\t*.html;*.htm\n" . - \ "All Files (*.*)\t*.*\n" -let s:match_words = "" - -runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim -unlet b:did_ftplugin - -" Override our defaults if these were set by an included ftplugin. -if exists("b:undo_ftplugin") - let s:undo_ftplugin = b:undo_ftplugin - unlet b:undo_ftplugin -endif -if exists("b:browsefilter") - let s:browsefilter = b:browsefilter - unlet b:browsefilter -endif -if exists("b:match_words") - let s:match_words = b:match_words - unlet b:match_words -endif - -runtime! ftplugin/java.vim ftplugin/java_*.vim ftplugin/java/*.vim -let b:did_ftplugin = 1 - -" Combine the new set of values with those previously included. -if exists("b:undo_ftplugin") - let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin -endif -if exists ("b:browsefilter") - let s:browsefilter = b:browsefilter . s:browsefilter -endif -if exists("b:match_words") - let s:match_words = b:match_words . ',' . s:match_words -endif - -" Load the combined list of match_words for matchit.vim -if exists("loaded_matchit") - let b:match_words = s:match_words -endif - -" Change the :browse e filter to primarily show JSP-related files. -if has("gui_win32") - let b:browsefilter="JSP Files (*.jsp)\t*.jsp\n" . s:browsefilter -endif - -" Undo the stuff we changed. -let b:undo_ftplugin = "unlet! b:browsefilter b:match_words | " . s:undo_ftplugin - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/kwt.vim b/share/vim/vim73/ftplugin/kwt.vim deleted file mode 100644 index 7be64229..00000000 --- a/share/vim/vim73/ftplugin/kwt.vim +++ /dev/null @@ -1,20 +0,0 @@ -" Vim filetype plugin file -" Language: Kimwitu++ -" Maintainer: Michael Piefel -" Last Change: 16 August 2001 - -" Behaves almost like C++ -runtime! ftplugin/cpp.vim ftplugin/cpp_*.vim ftplugin/cpp/*.vim - -set cpo-=C - -" Limit the browser to related files -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "Kimwitu/Kimwitu++ Files (*.k)\t*.k\n" . - \ "Lex/Flex Files (*.l)\t*.l\n" . - \ "Yacc/Bison Files (*.y)\t*.y\n" . - \ "All Files (*.*)\t*.*\n" -endif - -" Set the errorformat for the Kimwitu++ compiler -set efm+=kc%.%#:\ error\ at\ %f:%l:\ %m diff --git a/share/vim/vim73/ftplugin/lisp.vim b/share/vim/vim73/ftplugin/lisp.vim deleted file mode 100644 index b4772140..00000000 --- a/share/vim/vim73/ftplugin/lisp.vim +++ /dev/null @@ -1,26 +0,0 @@ -" Vim filetype plugin -" Language: Lisp -" Maintainer: Sergey Khorev -" URL: http://iamphet.nm.ru/vim -" Original author: Dorai Sitaram -" Original URL: http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html -" Last Change: Nov 8, 2004 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 - -setl comments=:; -setl define=^\\s*(def\\k* -setl formatoptions-=t -setl iskeyword+=+,-,*,/,%,<,=,>,:,$,?,!,@-@,94 -setl lisp - -" make comments behaviour like in c.vim -" e.g. insertion of ;;; and ;; on normal "O" or "o" when staying in comment -setl comments^=:;;;,:;;,sr:#\|,mb:\|,ex:\|# -setl formatoptions+=croql diff --git a/share/vim/vim73/ftplugin/logcheck.vim b/share/vim/vim73/ftplugin/logcheck.vim deleted file mode 100644 index 765f6b47..00000000 --- a/share/vim/vim73/ftplugin/logcheck.vim +++ /dev/null @@ -1,17 +0,0 @@ -" Vim filetype plugin file -" Language: Logcheck -" Maintainer: Debian Vim Maintainers -" Last Change: 2010 Jul 29 -" License: GNU GPL, version 2.0 -" URL: http://hg.debian.org/hg/pkg-vim/vim/file/unstable/runtime/ftplugin/logcheck.vim - -if exists("b:did_ftplugin") - finish -endif -let b:did_ftplugin = 1 - -let b:undo_ftplugin = "setl fo<" - -" Do not hard-wrap non-comment lines since each line is a self-contained -" regular expression -setlocal formatoptions-=t diff --git a/share/vim/vim73/ftplugin/lua.vim b/share/vim/vim73/ftplugin/lua.vim deleted file mode 100644 index 297833f4..00000000 --- a/share/vim/vim73/ftplugin/lua.vim +++ /dev/null @@ -1,36 +0,0 @@ -" Vim filetype plugin file. -" Language: Lua 4.0+ -" Maintainer: Max Ischenko -" Last Change: 2008 Mar 25 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 - -" Set 'formatoptions' to break comment lines but not other lines, and insert -" the comment leader when hitting or using "o". -setlocal fo-=t fo+=croql - -setlocal com=:-- -setlocal cms=--%s -setlocal suffixesadd=.lua - - -" The following lines enable the macros/matchit.vim plugin for -" extended matching with the % key. - -set cpo-=C -if exists("loaded_matchit") - - let b:match_ignorecase = 0 - let b:match_words = - \ '\<\%(do\|function\|if\)\>:' . - \ '\<\%(return\|else\|elseif\)\>:' . - \ '\,' . - \ '\:\' - -endif " exists("loaded_matchit") diff --git a/share/vim/vim73/ftplugin/mail.vim b/share/vim/vim73/ftplugin/mail.vim deleted file mode 100644 index 4a4c8519..00000000 --- a/share/vim/vim73/ftplugin/mail.vim +++ /dev/null @@ -1,35 +0,0 @@ -" Vim filetype plugin file -" Language: Mail -" Maintainer: Bram Moolenaar -" Last Change: 2009 Jun 03 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif -let b:did_ftplugin = 1 - -let b:undo_ftplugin = "setl modeline< tw< fo<" - -" Don't use modelines in e-mail messages, avoid trojan horses and nasty -" "jokes" (e.g., setting 'textwidth' to 5). -setlocal nomodeline - -" many people recommend keeping e-mail messages 72 chars wide -if &tw == 0 - setlocal tw=72 -endif - -" Set 'formatoptions' to break text lines and keep the comment leader ">". -setlocal fo+=tcql - -" Add mappings, unless the user doesn't want this. -if !exists("no_plugin_maps") && !exists("no_mail_maps") - " Quote text by inserting "> " - if !hasmapto('MailQuote') - vmap q MailQuote - nmap q MailQuote - endif - vnoremap MailQuote :s/^/> /:noh`` - nnoremap MailQuote :.,$s/^/> /:noh`` -endif diff --git a/share/vim/vim73/ftplugin/make.vim b/share/vim/vim73/ftplugin/make.vim deleted file mode 100644 index 38ee030f..00000000 --- a/share/vim/vim73/ftplugin/make.vim +++ /dev/null @@ -1,28 +0,0 @@ -" Vim filetype plugin file -" Language: Make -" Maintainer: Bram Moolenaar -" Last Change: 2006 Jun 17 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif -let b:did_ftplugin = 1 - -let b:undo_ftplugin = "setl et< sts< fo< com< cms< inc<" - -" Make sure a hard tab is used, required for most make programs -setlocal noexpandtab softtabstop=0 - -" Set 'formatoptions' to break comment lines but not other lines, -" and insert the comment leader when hitting or using "o". -setlocal fo-=t fo+=croql - -" Set 'comments' to format dashed lists in comments -setlocal com=sO:#\ -,mO:#\ \ ,b:# - -" Set 'commentstring' to put the marker after a #. -setlocal commentstring=#\ %s - -" Including files. -let &l:include = '^\s*include' diff --git a/share/vim/vim73/ftplugin/man.vim b/share/vim/vim73/ftplugin/man.vim deleted file mode 100644 index eef0628a..00000000 --- a/share/vim/vim73/ftplugin/man.vim +++ /dev/null @@ -1,181 +0,0 @@ -" Vim filetype plugin file -" Language: man -" Maintainer: SungHyun Nam -" Last Change: 2008 Sep 17 - -" To make the ":Man" command available before editing a manual page, source -" this script from your startup vimrc file. - -" If 'filetype' isn't "man", we must have been called to only define ":Man". -if &filetype == "man" - - " Only do this when not done yet for this buffer - if exists("b:did_ftplugin") - finish - endif - let b:did_ftplugin = 1 - - " allow dot and dash in manual page name. - setlocal iskeyword+=\.,- - - " Add mappings, unless the user didn't want this. - if !exists("no_plugin_maps") && !exists("no_man_maps") - if !hasmapto('ManBS') - nmap h ManBS - endif - nnoremap ManBS :%s/.\b//g:setl nomod'' - - nnoremap :call PreGetPage(v:count) - nnoremap :call PopPage() - endif - -endif - -if exists(":Man") != 2 - com -nargs=+ Man call s:GetPage() - nmap K :call PreGetPage(0) -endif - -" Define functions only once. -if !exists("s:man_tag_depth") - -let s:man_tag_depth = 0 - -let s:man_sect_arg = "" -let s:man_find_arg = "-w" -try - if !has("win32") && $OSTYPE !~ 'cygwin\|linux' && system('uname -s') =~ "SunOS" && system('uname -r') =~ "^5" - let s:man_sect_arg = "-s" - let s:man_find_arg = "-l" - endif -catch /E145:/ - " Ignore the error in restricted mode -endtry - -func PreGetPage(cnt) - if a:cnt == 0 - let old_isk = &iskeyword - setl iskeyword+=(,) - let str = expand("") - let &l:iskeyword = old_isk - let page = substitute(str, '(*\(\k\+\).*', '\1', '') - let sect = substitute(str, '\(\k\+\)(\([^()]*\)).*', '\2', '') - if match(sect, '^[0-9 ]\+$') == -1 - let sect = "" - endif - if sect == page - let sect = "" - endif - else - let sect = a:cnt - let page = expand("") - endif - call s:GetPage(sect, page) -endfunc - -func GetCmdArg(sect, page) - if a:sect == '' - return a:page - endif - return s:man_sect_arg.' '.a:sect.' '.a:page -endfunc - -func FindPage(sect, page) - let where = system("/usr/bin/man ".s:man_find_arg.' '.s:GetCmdArg(a:sect, a:page)) - if where !~ "^/" - if matchstr(where, " [^ ]*$") !~ "^ /" - return 0 - endif - endif - return 1 -endfunc - -func GetPage(...) - if a:0 >= 2 - let sect = a:1 - let page = a:2 - elseif a:0 >= 1 - let sect = "" - let page = a:1 - else - return - endif - - " To support: nmap K :Man - if page == '' - let page = expand('') - endif - - if sect != "" && s:FindPage(sect, page) == 0 - let sect = "" - endif - if s:FindPage(sect, page) == 0 - echo "\nCannot find a '".page."'." - return - endif - exec "let s:man_tag_buf_".s:man_tag_depth." = ".bufnr("%") - exec "let s:man_tag_lin_".s:man_tag_depth." = ".line(".") - exec "let s:man_tag_col_".s:man_tag_depth." = ".col(".") - let s:man_tag_depth = s:man_tag_depth + 1 - - " Use an existing "man" window if it exists, otherwise open a new one. - if &filetype != "man" - let thiswin = winnr() - exe "norm! \b" - if winnr() > 1 - exe "norm! " . thiswin . "\w" - while 1 - if &filetype == "man" - break - endif - exe "norm! \w" - if thiswin == winnr() - break - endif - endwhile - endif - if &filetype != "man" - new - setl nonu fdc=0 - endif - endif - silent exec "edit $HOME/".page.".".sect."~" - " Avoid warning for editing the dummy file twice - setl buftype=nofile noswapfile - - setl ma - silent exec "norm 1GdG" - let $MANWIDTH = winwidth(0) - silent exec "r!/usr/bin/man ".s:GetCmdArg(sect, page)." | col -b" - " Remove blank lines from top and bottom. - while getline(1) =~ '^\s*$' - silent norm ggdd - endwhile - while getline('$') =~ '^\s*$' - silent norm Gdd - endwhile - 1 - setl ft=man nomod - setl bufhidden=hide - setl nobuflisted -endfunc - -func PopPage() - if s:man_tag_depth > 0 - let s:man_tag_depth = s:man_tag_depth - 1 - exec "let s:man_tag_buf=s:man_tag_buf_".s:man_tag_depth - exec "let s:man_tag_lin=s:man_tag_lin_".s:man_tag_depth - exec "let s:man_tag_col=s:man_tag_col_".s:man_tag_depth - exec s:man_tag_buf."b" - exec s:man_tag_lin - exec "norm ".s:man_tag_col."|" - exec "unlet s:man_tag_buf_".s:man_tag_depth - exec "unlet s:man_tag_lin_".s:man_tag_depth - exec "unlet s:man_tag_col_".s:man_tag_depth - unlet s:man_tag_buf s:man_tag_lin s:man_tag_col - endif -endfunc - -endif - -" vim: set sw=2: diff --git a/share/vim/vim73/ftplugin/markdown.vim b/share/vim/vim73/ftplugin/markdown.vim deleted file mode 100644 index 94620820..00000000 --- a/share/vim/vim73/ftplugin/markdown.vim +++ /dev/null @@ -1,19 +0,0 @@ -" Vim filetype plugin -" Language: Markdown -" Maintainer: Tim Pope -" Last Change: 2010 May 21 - -if exists("b:did_ftplugin") - finish -endif - -runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim -unlet! b:did_ftplugin - -setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s -setlocal formatoptions+=tcqln -setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+ - -let b:undo_ftplugin .= "|setl cms< com< fo<" - -" vim:set sw=2: diff --git a/share/vim/vim73/ftplugin/matlab.vim b/share/vim/vim73/ftplugin/matlab.vim deleted file mode 100644 index 1800dc8a..00000000 --- a/share/vim/vim73/ftplugin/matlab.vim +++ /dev/null @@ -1,30 +0,0 @@ -" Vim filetype plugin file -" Language: matlab -" Maintainer: Jake Wasserman -" Last Changed: 2006 Jan 12 - -if exists("b:did_ftplugin") - finish -endif -let b:did_ftplugin = 1 - -let s:save_cpo = &cpo -set cpo-=C - -if exists("loaded_matchit") - let s:conditionalEnd = '\(([^()]*\)\@!\\([^()]*)\)\@!' - let b:match_words = '\\|\\|\\|\:' . - \ s:conditionalEnd . ',\:\:\:' . - \ s:conditionalEnd -endif - -setlocal suffixesadd=.m -setlocal suffixes+=.asv - -let b:undo_ftplugin = "setlocal suffixesadd< suffixes< " - \ . "| unlet! b:match_words" - -let &cpo = s:save_cpo - - - diff --git a/share/vim/vim73/ftplugin/ocaml.vim b/share/vim/vim73/ftplugin/ocaml.vim deleted file mode 100644 index a5914118..00000000 --- a/share/vim/vim73/ftplugin/ocaml.vim +++ /dev/null @@ -1,584 +0,0 @@ -" Language: OCaml -" Maintainer: David Baelde -" Mike Leary -" Markus Mottl -" Stefano Zacchiroli -" Vincent Aravantinos -" URL: http://www.ocaml.info/vim/ftplugin/ocaml.vim -" Last Change: 2010 Jul 10 - Bugfix, thanks to Pat Rondon -" 2008 Jul 17 - Bugfix related to fnameescape (VA) -" 2007 Sep 09 - Added .annot support for ocamlbuild, python not -" needed anymore (VA) -" 2006 May 01 - Added .annot support for file.whateverext (SZ) -" 2006 Apr 11 - Fixed an initialization bug; fixed ASS abbrev (MM) -" 2005 Oct 13 - removed GPL; better matchit support (MM, SZ) -" -if exists("b:did_ftplugin") - finish -endif -let b:did_ftplugin=1 - -" some macro -if exists('*fnameescape') - function! s:Fnameescape(s) - return fnameescape(a:s) - endfun -else - function! s:Fnameescape(s) - return escape(a:s," \t\n*?[{`$\\%#'\"|!<") - endfun -endif - -" Error handling -- helps moving where the compiler wants you to go -let s:cposet=&cpoptions -set cpo-=C -setlocal efm= - \%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d:, - \%EFile\ \"%f\"\\,\ line\ %l\\,\ character\ %c:%m, - \%+EReference\ to\ unbound\ regexp\ name\ %m, - \%Eocamlyacc:\ e\ -\ line\ %l\ of\ \"%f\"\\,\ %m, - \%Wocamlyacc:\ w\ -\ %m, - \%-Zmake%.%#, - \%C%m, - \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f', - \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f', - \%D%*\\a:\ Entering\ directory\ `%f', - \%X%*\\a:\ Leaving\ directory\ `%f', - \%DMaking\ %*\\a\ in\ %f - -" Add mappings, unless the user didn't want this. -if !exists("no_plugin_maps") && !exists("no_ocaml_maps") - " (un)commenting - if !hasmapto('Comment') - nmap c LUncomOn - vmap c BUncomOn - nmap C LUncomOff - vmap C BUncomOff - endif - - nnoremap LUncomOn mz0i(* $A *)`z - nnoremap LUncomOff :s/^(\* \(.*\) \*)/\1/:noh - vnoremap BUncomOn :'<,'>`0i(*`>o0i*)`< - vnoremap BUncomOff :'<,'>`dd`< - - if !hasmapto('Abbrev') - iabbrev ASS (assert (0=1) (* XXX *)) - endif -endif - -" Let % jump between structure elements (due to Issac Trotts) -let b:mw = '' -let b:mw = b:mw . ',\:\:\(\\|;;\)' -let b:mw = b:mw . ',\:\:\' -let b:mw = b:mw . ',\<\(for\|while\)\>:\:\,' -let b:mw = b:mw . ',\<\(object\|sig\|struct\|begin\)\>:\' -let b:mw = b:mw . ',\<\(match\|try\)\>:\' -let b:match_words = b:mw - -let b:match_ignorecase=0 - -" switching between interfaces (.mli) and implementations (.ml) -if !exists("g:did_ocaml_switch") - let g:did_ocaml_switch = 1 - map s :call OCaml_switch(0) - map S :call OCaml_switch(1) - fun OCaml_switch(newwin) - if (match(bufname(""), "\\.mli$") >= 0) - let fname = s:Fnameescape(substitute(bufname(""), "\\.mli$", ".ml", "")) - if (a:newwin == 1) - exec "new " . fname - else - exec "arge " . fname - endif - elseif (match(bufname(""), "\\.ml$") >= 0) - let fname = s:Fnameescape(bufname("")) . "i" - if (a:newwin == 1) - exec "new " . fname - else - exec "arge " . fname - endif - endif - endfun -endif - -" Folding support - -" Get the modeline because folding depends on indentation -let s:s = line2byte(line('.'))+col('.')-1 -if search('^\s*(\*:o\?caml:') - let s:modeline = getline(".") -else - let s:modeline = "" -endif -if s:s > 0 - exe 'goto' s:s -endif - -" Get the indentation params -let s:m = matchstr(s:modeline,'default\s*=\s*\d\+') -if s:m != "" - let s:idef = matchstr(s:m,'\d\+') -elseif exists("g:omlet_indent") - let s:idef = g:omlet_indent -else - let s:idef = 2 -endif -let s:m = matchstr(s:modeline,'struct\s*=\s*\d\+') -if s:m != "" - let s:i = matchstr(s:m,'\d\+') -elseif exists("g:omlet_indent_struct") - let s:i = g:omlet_indent_struct -else - let s:i = s:idef -endif - -" Set the folding method -if exists("g:ocaml_folding") - setlocal foldmethod=expr - setlocal foldexpr=OMLetFoldLevel(v:lnum) -endif - -" - Only definitions below, executed once ------------------------------------- - -if exists("*OMLetFoldLevel") - finish -endif - -function s:topindent(lnum) - let l = a:lnum - while l > 0 - if getline(l) =~ '\s*\%(\\|\\|\\)' - return indent(l) - endif - let l = l-1 - endwhile - return -s:i -endfunction - -function OMLetFoldLevel(l) - - " This is for not merging blank lines around folds to them - if getline(a:l) !~ '\S' - return -1 - endif - - " We start folds for modules, classes, and every toplevel definition - if getline(a:l) =~ '^\s*\%(\\|\\|\\|\\|\\|\\|\\|\\|\\)' - exe 'return ">' (indent(a:l)/s:i)+1 '"' - endif - - " Toplevel let are detected thanks to the indentation - if getline(a:l) =~ '^\s*let\>' && indent(a:l) == s:i+s:topindent(a:l) - exe 'return ">' (indent(a:l)/s:i)+1 '"' - endif - - " We close fold on end which are associated to struct, sig or object. - " We use syntax information to do that. - if getline(a:l) =~ '^\s*end\>' && synIDattr(synID(a:l, indent(a:l)+1, 0), "name") != "ocamlKeyword" - return (indent(a:l)/s:i)+1 - endif - - " Folds end on ;; - if getline(a:l) =~ '^\s*;;' - exe 'return "<' (indent(a:l)/s:i)+1 '"' - endif - - " Comments around folds aren't merged to them. - if synIDattr(synID(a:l, indent(a:l)+1, 0), "name") == "ocamlComment" - return -1 - endif - - return '=' -endfunction - -" Vim support for OCaml .annot files -" -" Last Change: 2007 Jul 17 -" Maintainer: Vincent Aravantinos -" License: public domain -" -" Originally inspired by 'ocaml-dtypes.vim' by Stefano Zacchiroli. -" The source code is quite radically different for we not use python anymore. -" However this plugin should have the exact same behaviour, that's why the -" following lines are the quite exact copy of Stefano's original plugin : -" -" << -" Executing Ocaml_print_type() function will display in the Vim bottom -" line(s) the type of an ocaml value getting it from the corresponding .annot -" file (if any). If Vim is in visual mode, should be "visual" and the -" selected ocaml value correspond to the highlighted text, otherwise ( -" can be anything else) it corresponds to the literal found at the current -" cursor position. -" -" Typing 't' (LocalLeader defaults to '\', see :h LocalLeader) -" will cause " Ocaml_print_type function to be invoked with the right -" argument depending on the current mode (visual or not). -" >> -" -" If you find something not matching this behaviour, please signal it. -" -" Differences are: -" - no need for python support -" + plus : more portable -" + minus: no more lazy parsing, it looks very fast however -" -" - ocamlbuild support, ie. -" + the plugin finds the _build directory and looks for the -" corresponding file inside; -" + if the user decides to change the name of the _build directory thanks -" to the '-build-dir' option of ocamlbuild, the plugin will manage in -" most cases to find it out (most cases = if the source file has a unique -" name among your whole project); -" + if ocamlbuild is not used, the usual behaviour holds; ie. the .annot -" file should be in the same directory as the source file; -" + for vim plugin programmers: -" the variable 'b:_build_dir' contains the inferred path to the build -" directory, even if this one is not named '_build'. -" -" Bonus : -" - latin1 accents are handled -" - lists are handled, even on multiple lines, you don't need the visual mode -" (the cursor must be on the first bracket) -" - parenthesized expressions, arrays, and structures (ie. '(...)', '[|...|]', -" and '{...}') are handled the same way - - " Copied from Stefano's original plugin : - " << - " .annot ocaml file representation - " - " File format (copied verbatim from caml-types.el) - " - " file ::= block * - " block ::= position position annotation * - " position ::= filename num num num - " annotation ::= keyword open-paren data close-paren - " - " is a space character (ASCII 0x20) - " is a line-feed character (ASCII 0x0A) - " num is a sequence of decimal digits - " filename is a string with the lexical conventions of O'Caml - " open-paren is an open parenthesis (ASCII 0x28) - " close-paren is a closed parenthesis (ASCII 0x29) - " data is any sequence of characters where is always followed by - " at least two space characters. - " - " - in each block, the two positions are respectively the start and the - " end of the range described by the block. - " - in a position, the filename is the name of the file, the first num - " is the line number, the second num is the offset of the beginning - " of the line, the third num is the offset of the position itself. - " - the char number within the line is the difference between the third - " and second nums. - " - " For the moment, the only possible keyword is \"type\"." - " >> - - -" 1. Finding the annotation file even if we use ocamlbuild - - " In: two strings representing paths - " Out: one string representing the common prefix between the two paths - function! s:Find_common_path (p1,p2) - let temp = a:p2 - while matchstr(a:p1,temp) == '' - let temp = substitute(temp,'/[^/]*$','','') - endwhile - return temp - endfun - - " After call: - " - b:annot_file_path : - " path to the .annot file corresponding to the - " source file (dealing with ocamlbuild stuff) - " - b:_build_path: - " path to the build directory even if this one is - " not named '_build' - function! s:Locate_annotation() - if !b:annotation_file_located - - silent exe 'cd' s:Fnameescape(expand('%:p:h')) - - let annot_file_name = s:Fnameescape(expand('%:r')).'.annot' - - " 1st case : the annot file is in the same directory as the buffer (no ocamlbuild) - let b:annot_file_path = findfile(annot_file_name,'.') - if b:annot_file_path != '' - let b:annot_file_path = getcwd().'/'.b:annot_file_path - let b:_build_path = '' - else - " 2nd case : the buffer and the _build directory are in the same directory - " .. - " / \ - " / \ - " _build .ml - " - let b:_build_path = finddir('_build','.') - if b:_build_path != '' - let b:_build_path = getcwd().'/'.b:_build_path - let b:annot_file_path = findfile(annot_file_name,'_build') - if b:annot_file_path != '' - let b:annot_file_path = getcwd().'/'.b:annot_file_path - endif - else - " 3rd case : the _build directory is in a directory higher in the file hierarchy - " (it can't be deeper by ocamlbuild requirements) - " .. - " / \ - " / \ - " _build ... - " \ - " \ - " .ml - " - let b:_build_path = finddir('_build',';') - if b:_build_path != '' - let project_path = substitute(b:_build_path,'/_build$','','') - let path_relative_to_project = s:Fnameescape(substitute(expand('%:p:h'),project_path.'/','','')) - let b:annot_file_path = findfile(annot_file_name,project_path.'/_build/'.path_relative_to_project) - else - let b:annot_file_path = findfile(annot_file_name,'**') - "4th case : what if the user decided to change the name of the _build directory ? - " -> we relax the constraints, it should work in most cases - if b:annot_file_path != '' - " 4a. we suppose the renamed _build directory is in the current directory - let b:_build_path = matchstr(b:annot_file_path,'^[^/]*') - if b:annot_file_path != '' - let b:annot_file_path = getcwd().'/'.b:annot_file_path - let b:_build_path = getcwd().'/'.b:_build_path - endif - else - " 4b. anarchy : the renamed _build directory may be higher in the hierarchy - " this will work if the file for which we are looking annotations has a unique name in the whole project - " if this is not the case, it may still work, but no warranty here - let b:annot_file_path = findfile(annot_file_name,'**;') - let project_path = s:Find_common_path(b:annot_file_path,expand('%:p:h')) - let b:_build_path = matchstr(b:annot_file_path,project_path.'/[^/]*') - endif - endif - endif - endif - - if b:annot_file_path == '' - throw 'E484: no annotation file found' - endif - - silent exe 'cd' '-' - - let b:annotation_file_located = 1 - endif - endfun - - " This in order to locate the .annot file only once - let b:annotation_file_located = 0 - -" 2. Finding the type information in the annotation file - - " a. The annotation file is opened in vim as a buffer that - " should be (almost) invisible to the user. - - " After call: - " The current buffer is now the one containing the .annot file. - " We manage to keep all this hidden to the user's eye. - function! s:Enter_annotation_buffer() - let s:current_pos = getpos('.') - let s:current_hidden = &l:hidden - set hidden - let s:current_buf = bufname('%') - if bufloaded(b:annot_file_path) - silent exe 'keepj keepalt' 'buffer' s:Fnameescape(b:annot_file_path) - else - silent exe 'keepj keepalt' 'view' s:Fnameescape(b:annot_file_path) - endif - endfun - - " After call: - " The original buffer has been restored in the exact same state as before. - function! s:Exit_annotation_buffer() - silent exe 'keepj keepalt' 'buffer' s:Fnameescape(s:current_buf) - let &l:hidden = s:current_hidden - call setpos('.',s:current_pos) - endfun - - " After call: - " The annot file is loaded and assigned to a buffer. - " This also handles the modification date of the .annot file, eg. after a - " compilation. - function! s:Load_annotation() - if bufloaded(b:annot_file_path) && b:annot_file_last_mod < getftime(b:annot_file_path) - call s:Enter_annotation_buffer() - silent exe "bunload" - call s:Exit_annotation_buffer() - endif - if !bufloaded(b:annot_file_path) - call s:Enter_annotation_buffer() - setlocal nobuflisted - setlocal bufhidden=hide - setlocal noswapfile - setlocal buftype=nowrite - call s:Exit_annotation_buffer() - let b:annot_file_last_mod = getftime(b:annot_file_path) - endif - endfun - - "b. 'search' and 'match' work to find the type information - - "In: - lin1,col1: postion of expression first char - " - lin2,col2: postion of expression last char - "Out: - the pattern to be looked for to find the block - " Must be called in the source buffer (use of line2byte) - function! s:Block_pattern(lin1,lin2,col1,col2) - let start_num1 = a:lin1 - let start_num2 = line2byte(a:lin1) - 1 - let start_num3 = start_num2 + a:col1 - let path = '"\(\\"\|[^"]\)\+"' - let start_pos = path.' '.start_num1.' '.start_num2.' '.start_num3 - let end_num1 = a:lin2 - let end_num2 = line2byte(a:lin2) - 1 - let end_num3 = end_num2 + a:col2 - let end_pos = path.' '.end_num1.' '.end_num2.' '.end_num3 - return '^'.start_pos.' '.end_pos."$" - " rq: the '^' here is not totally correct regarding the annot file "grammar" - " but currently the annotation file respects this, and it's a little bit faster with the '^'; - " can be removed safely. - endfun - - "In: (the cursor position should be at the start of an annotation) - "Out: the type information - " Must be called in the annotation buffer (use of search) - function! s:Match_data() - " rq: idem as previously, in the following, the '^' at start of patterns is not necessary - keepj while search('^type($','ce',line(".")) == 0 - keepj if search('^.\{-}($','e') == 0 - throw "no_annotation" - endif - keepj if searchpair('(','',')') == 0 - throw "malformed_annot_file" - endif - endwhile - let begin = line(".") + 1 - keepj if searchpair('(','',')') == 0 - throw "malformed_annot_file" - endif - let end = line(".") - 1 - return join(getline(begin,end),"\n") - endfun - - "In: the pattern to look for in order to match the block - "Out: the type information (calls s:Match_data) - " Should be called in the annotation buffer - function! s:Extract_type_data(block_pattern) - call s:Enter_annotation_buffer() - try - if search(a:block_pattern,'e') == 0 - throw "no_annotation" - endif - call cursor(line(".") + 1,1) - let annotation = s:Match_data() - finally - call s:Exit_annotation_buffer() - endtry - return annotation - endfun - - "c. link this stuff with what the user wants - " ie. get the expression selected/under the cursor - - let s:ocaml_word_char = '\w|[À-ÿ]|''' - - "In: the current mode (eg. "visual", "normal", etc.) - "Out: the borders of the expression we are looking for the type - function! s:Match_borders(mode) - if a:mode == "visual" - let cur = getpos(".") - normal `< - let col1 = col(".") - let lin1 = line(".") - normal `> - let col2 = col(".") - let lin2 = line(".") - call cursor(cur[1],cur[2]) - return [lin1,lin2,col1-1,col2] - else - let cursor_line = line(".") - let cursor_col = col(".") - let line = getline('.') - if line[cursor_col-1:cursor_col] == '[|' - let [lin2,col2] = searchpairpos('\[|','','|\]','n') - return [cursor_line,lin2,cursor_col-1,col2+1] - elseif line[cursor_col-1] == '[' - let [lin2,col2] = searchpairpos('\[','','\]','n') - return [cursor_line,lin2,cursor_col-1,col2] - elseif line[cursor_col-1] == '(' - let [lin2,col2] = searchpairpos('(','',')','n') - return [cursor_line,lin2,cursor_col-1,col2] - elseif line[cursor_col-1] == '{' - let [lin2,col2] = searchpairpos('{','','}','n') - return [cursor_line,lin2,cursor_col-1,col2] - else - let [lin1,col1] = searchpos('\v%('.s:ocaml_word_char.'|\.)*','ncb') - let [lin2,col2] = searchpos('\v%('.s:ocaml_word_char.'|\.)*','nce') - if col1 == 0 || col2 == 0 - throw "no_expression" - endif - return [cursor_line,cursor_line,col1-1,col2] - endif - endif - endfun - - "In: the current mode (eg. "visual", "normal", etc.) - "Out: the type information (calls s:Extract_type_data) - function! s:Get_type(mode) - let [lin1,lin2,col1,col2] = s:Match_borders(a:mode) - return s:Extract_type_data(s:Block_pattern(lin1,lin2,col1,col2)) - endfun - - "d. main - "In: the current mode (eg. "visual", "normal", etc.) - "After call: the type information is displayed - if !exists("*Ocaml_get_type") - function Ocaml_get_type(mode) - call s:Locate_annotation() - call s:Load_annotation() - return s:Get_type(a:mode) - endfun - endif - - if !exists("*Ocaml_get_type_or_not") - function Ocaml_get_type_or_not(mode) - let t=reltime() - try - return Ocaml_get_type(a:mode) - catch - return "" - endtry - endfun - endif - - if !exists("*Ocaml_print_type") - function Ocaml_print_type(mode) - if expand("%:e") == "mli" - echohl ErrorMsg | echo "No annotations for interface (.mli) files" | echohl None - return - endif - try - echo Ocaml_get_type(a:mode) - catch /E484:/ - echohl ErrorMsg | echo "No type annotations (.annot) file found" | echohl None - catch /no_expression/ - echohl ErrorMsg | echo "No expression found under the cursor" | echohl None - catch /no_annotation/ - echohl ErrorMsg | echo "No type annotation found for the given text" | echohl None - catch /malformed_annot_file/ - echohl ErrorMsg | echo "Malformed .annot file" | echohl None - endtry - endfun - endif - -" Maps - map t :call Ocaml_print_type("normal") - vmap t :call Ocaml_print_type("visual")`< - -let &cpoptions=s:cposet -unlet s:cposet - -" vim:sw=2 fdm=indent diff --git a/share/vim/vim73/ftplugin/occam.vim b/share/vim/vim73/ftplugin/occam.vim deleted file mode 100644 index ed2c4f4e..00000000 --- a/share/vim/vim73/ftplugin/occam.vim +++ /dev/null @@ -1,39 +0,0 @@ -" Vim filetype plugin file -" Language: occam -" Copyright: Christian Jacobsen , Mario Schweigler -" Maintainer: Mario Schweigler -" Last Change: 23 April 2003 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif -let b:did_ftplugin = 1 - -"{{{ Indent settings -" Set shift width for indent -setlocal shiftwidth=2 -" Set the tab key size to two spaces -setlocal softtabstop=2 -" Let tab keys always be expanded to spaces -setlocal expandtab -"}}} - -"{{{ Formatting -" Break comment lines and insert comment leader in this case -setlocal formatoptions-=t formatoptions+=cql -setlocal comments+=:-- -" Maximum length of comments is 78 -setlocal textwidth=78 -"}}} - -"{{{ File browsing filters -" Win32 can filter files in the browse dialog -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "All Occam Files (*.occ *.inc)\t*.occ;*.inc\n" . - \ "Occam Include Files (*.inc)\t*.inc\n" . - \ "Occam Source Files (*.occ)\t*.occ\n" . - \ "All Files (*.*)\t*.*\n" -endif -"}}} - diff --git a/share/vim/vim73/ftplugin/pascal.vim b/share/vim/vim73/ftplugin/pascal.vim deleted file mode 100644 index 3b1db4ab..00000000 --- a/share/vim/vim73/ftplugin/pascal.vim +++ /dev/null @@ -1,15 +0,0 @@ -" Vim filetype plugin file -" Language: pascal -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -if exists("loaded_matchit") - let b:match_words='\<\%(begin\|case\|try\)\>:\' -endif - -" Undo the stuff we changed. -let b:undo_ftplugin = "unlet! b:match_words" diff --git a/share/vim/vim73/ftplugin/perl.vim b/share/vim/vim73/ftplugin/perl.vim deleted file mode 100644 index 1d948535..00000000 --- a/share/vim/vim73/ftplugin/perl.vim +++ /dev/null @@ -1,71 +0,0 @@ -" Vim filetype plugin file -" Language: Perl -" Maintainer: Andy Lester -" URL: http://github.com/petdance/vim-perl -" Last Change: 2009-08-14 - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -setlocal formatoptions+=crq -setlocal keywordprg=perldoc\ -f - -setlocal comments=:# -setlocal commentstring=#%s - -" Change the browse dialog on Win32 to show mainly Perl-related files -if has("gui_win32") - let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" . - \ "Perl Modules (*.pm)\t*.pm\n" . - \ "Perl Documentation Files (*.pod)\t*.pod\n" . - \ "All Files (*.*)\t*.*\n" -endif - -" Provided by Ned Konz -"--------------------------------------------- -setlocal include=\\<\\(use\\\|require\\)\\> -setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','') -setlocal define=[^A-Za-z_] - -" The following line changes a global variable but is necessary to make -" gf and similar commands work. The change to iskeyword was incorrect. -" Thanks to Andrew Pimlott for pointing out the problem. If this causes a -" problem for you, add an after/ftplugin/perl.vim file that contains -" set isfname-=: -set isfname+=: -"setlocal iskeyword=48-57,_,A-Z,a-z,: - -" Set this once, globally. -if !exists("perlpath") - if executable("perl") - try - if &shellxquote != '"' - let perlpath = system('perl -e "print join(q/,/,@INC)"') - else - let perlpath = system("perl -e 'print join(q/,/,@INC)'") - endif - let perlpath = substitute(perlpath,',.$',',,','') - catch /E145:/ - let perlpath = ".,," - endtry - else - " If we can't call perl to get its path, just default to using the - " current directory and the directory of the current file. - let perlpath = ".,," - endif -endif - -let &l:path=perlpath -"--------------------------------------------- - -" Undo the stuff we changed. -let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< kp<" . - \ " | unlet! b:browsefilter" - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/perl6.vim b/share/vim/vim73/ftplugin/perl6.vim deleted file mode 100644 index 14ab1e9c..00000000 --- a/share/vim/vim73/ftplugin/perl6.vim +++ /dev/null @@ -1,48 +0,0 @@ -" Vim filetype plugin file -" Language: Perl 6 -" Maintainer: Andy Lester -" URL: http://github.com/petdance/vim-perl/tree/master -" Last Change: 2010-08-10 -" Contributors: Hinrik Örn Sigurðsson -" -" Based on ftplugin/perl.vim by Dan Sharp - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -setlocal formatoptions+=crq -setlocal comments=:# -setlocal commentstring=#%s - -" Change the browse dialog on Win32 to show mainly Perl-related files -if has("gui_win32") - let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" . - \ "Perl Modules (*.pm)\t*.pm\n" . - \ "Perl Documentation Files (*.pod)\t*.pod\n" . - \ "All Files (*.*)\t*.*\n" -endif - -" Provided by Ned Konz -"--------------------------------------------- -setlocal include=\\<\\(use\\\|require\\)\\> -setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','') -setlocal define=[^A-Za-z_] - -" The following line changes a global variable but is necessary to make -" gf and similar commands work. Thanks to Andrew Pimlott for pointing out -" the problem. If this causes a " problem for you, add an -" after/ftplugin/perl6.vim file that contains -" set isfname-=: -set isfname+=: - -" Undo the stuff we changed. -let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk<" . - \ " | unlet! b:browsefilter" - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/php.vim b/share/vim/vim73/ftplugin/php.vim deleted file mode 100644 index f59cf122..00000000 --- a/share/vim/vim73/ftplugin/php.vim +++ /dev/null @@ -1,82 +0,0 @@ -" Vim filetype plugin file -" Language: php -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -" Define some defaults in case the included ftplugins don't set them. -let s:undo_ftplugin = "" -let s:browsefilter = "HTML Files (*.html, *.htm)\t*.html;*.htm\n" . - \ "All Files (*.*)\t*.*\n" -let s:match_words = "" - -runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim -let b:did_ftplugin = 1 - -" Override our defaults if these were set by an included ftplugin. -if exists("b:undo_ftplugin") - let s:undo_ftplugin = b:undo_ftplugin -endif -if exists("b:browsefilter") - let s:browsefilter = b:browsefilter -endif -if exists("b:match_words") - let s:match_words = b:match_words -endif -if exists("b:match_skip") - unlet b:match_skip -endif - -" Change the :browse e filter to primarily show PHP-related files. -if has("gui_win32") - let b:browsefilter="PHP Files (*.php)\t*.php\n" . s:browsefilter -endif - -" ### -" Provided by Mikolaj Machowski -setlocal include=\\\(require\\\|include\\\)\\\(_once\\\)\\\? -" Disabled changing 'iskeyword', it breaks a command such as "*" -" setlocal iskeyword+=$ - -if exists("loaded_matchit") - let b:match_words = ',\:\,' . - \ '\:\:\:\,' . - \ '\:\,' . - \ '\:\,' . - \ '\:\,' . - \ '\:\,' . - \ '(:),[:],{:},' . - \ s:match_words -endif -" ### - -if exists('&omnifunc') - setlocal omnifunc=phpcomplete#CompletePHP -endif - -" Section jumping: [[ and ]] provided by Antony Scriven -let s:function = '\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function' -let s:class = '\(abstract\s\+\|final\s\+\)*class' -let s:interface = 'interface' -let s:section = '\(.*\%#\)\@!\_^\s*\zs\('.s:function.'\|'.s:class.'\|'.s:interface.'\)' -exe 'nno [[ ?' . escape(s:section, '|') . '?:nohls' -exe 'nno ]] /' . escape(s:section, '|') . '/:nohls' -exe 'ono [[ ?' . escape(s:section, '|') . '?:nohls' -exe 'ono ]] /' . escape(s:section, '|') . '/:nohls' - -setlocal commentstring=/*%s*/ - -" Undo the stuff we changed. -let b:undo_ftplugin = "setlocal commentstring< include< omnifunc<" . - \ " | unlet! b:browsefilter b:match_words | " . - \ s:undo_ftplugin - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/plaintex.vim b/share/vim/vim73/ftplugin/plaintex.vim deleted file mode 100644 index 5862d00b..00000000 --- a/share/vim/vim73/ftplugin/plaintex.vim +++ /dev/null @@ -1,36 +0,0 @@ -" plain TeX filetype plugin -" Language: plain TeX (ft=plaintex) -" Maintainer: Benji Fisher, Ph.D. -" Version: 1.1 -" Last Change: Wed 19 Apr 2006 - -" Only do this when not done yet for this buffer. -if exists("b:did_ftplugin") - finish -endif - -" Start with initex. This will also define b:did_ftplugin and b:undo_ftplugin . -source $VIMRUNTIME/ftplugin/initex.vim - -" Avoid problems if running in 'compatible' mode. -let s:save_cpo = &cpo -set cpo&vim - -let b:undo_ftplugin .= "| unlet! b:match_ignorecase b:match_skip b:match_words" - -" Allow "[d" to be used to find a macro definition: -let &l:define .= '\|\\new\(count\|dimen\|skip\|muskip\|box\|toks\|read\|write' - \ . '\|fam\|insert\)' - -" The following lines enable the macros/matchit.vim plugin for -" extended matching with the % key. -" There is no default meaning for \(...\) etc., but many users define one. -if exists("loaded_matchit") - let b:match_ignorecase = 0 - \ | let b:match_skip = 'r:\\\@ -" Last Change: 27th June 2002 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 - -" PS comment formatting -setlocal comments=b:% -setlocal formatoptions-=t formatoptions+=rol - -" Define patterns for the matchit macro -if !exists("b:match_words") - let b:match_ignorecase = 0 - let b:match_words = '<<:>>,\:\,\:\,\:\' -endif - -set cpo-=C - -" Define patterns for the browse file filter -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "PostScript Files (*.ps)\t*.ps\n" . - \ "EPS Files (*.eps)\t*.eps\n" . - \ "All Files (*.*)\t*.*\n" -endif diff --git a/share/vim/vim73/ftplugin/pyrex.vim b/share/vim/vim73/ftplugin/pyrex.vim deleted file mode 100644 index 69bd93dd..00000000 --- a/share/vim/vim73/ftplugin/pyrex.vim +++ /dev/null @@ -1,22 +0,0 @@ -" Vim filetype plugin file -" Language: Pyrex -" Maintainer: Marco Barisione -" URL: http://marcobari.altervista.org/pyrex_vim.html -" Last Change: 2004 May 16 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -" Behaves just like Python -runtime! ftplugin/python.vim ftplugin/python_*.vim ftplugin/python/*.vim - -if has("gui_win32") && exists("b:browsefilter") - let b:browsefilter = "Pyrex files (*.pyx,*.pxd)\t*.pyx;*.pxd\n" . - \ "Python Files (*.py)\t*.py\n" . - \ "C Source Files (*.c)\t*.c\n" . - \ "C Header Files (*.h)\t*.h\n" . - \ "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" . - \ "All Files (*.*)\t*.*\n" -endif diff --git a/share/vim/vim73/ftplugin/python.vim b/share/vim/vim73/ftplugin/python.vim deleted file mode 100644 index e7c6d6b0..00000000 --- a/share/vim/vim73/ftplugin/python.vim +++ /dev/null @@ -1,43 +0,0 @@ -" Vim filetype plugin file -" Language: python -" Maintainer: Johannes Zellner -" Last Change: Wed, 21 Apr 2004 13:13:08 CEST - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -setlocal cinkeys-=0# -setlocal indentkeys-=0# -setlocal include=\s*\\(from\\\|import\\) -setlocal includeexpr=substitute(v:fname,'\\.','/','g') -setlocal suffixesadd=.py -setlocal comments-=:% -setlocal commentstring=#%s - -setlocal omnifunc=pythoncomplete#Complete - -set wildignore+=*.pyc - -nnoremap ]] :call Python_jump('/^\(class\\|def\)') -nnoremap [[ :call Python_jump('?^\(class\\|def\)') -nnoremap ]m :call Python_jump('/^\s*\(class\\|def\)') -nnoremap [m :call Python_jump('?^\s*\(class\\|def\)') - -if exists('*Python_jump') | finish | endif - -fun! Python_jump(motion) range - let cnt = v:count1 - let save = @/ " save last search pattern - mark ' - while cnt > 0 - silent! exe a:motion - let cnt = cnt - 1 - endwhile - call histdel('/', -1) - let @/ = save " restore last search pattern -endfun - -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "Python Files (*.py)\t*.py\n" . - \ "All Files (*.*)\t*.*\n" -endif diff --git a/share/vim/vim73/ftplugin/qf.vim b/share/vim/vim73/ftplugin/qf.vim deleted file mode 100644 index f1d09225..00000000 --- a/share/vim/vim73/ftplugin/qf.vim +++ /dev/null @@ -1,16 +0,0 @@ -" Vim filetype plugin file -" Language: Vim's quickfix window -" Maintainer: Lech Lorens -" Last Changed: 22 Jul 2010 - -if exists("b:did_ftplugin") - finish -endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 - -let b:undo_ftplugin = "setl stl<" - -" Display the command that produced the list in the quickfix window: -setlocal stl=%q%{exists('w:quickfix_title')?\ '\ '.w:quickfix_title\ :\ ''} diff --git a/share/vim/vim73/ftplugin/rpl.vim b/share/vim/vim73/ftplugin/rpl.vim deleted file mode 100644 index 5ddf2c1a..00000000 --- a/share/vim/vim73/ftplugin/rpl.vim +++ /dev/null @@ -1,20 +0,0 @@ -" Vim filetype plugin file -" Language: RPL/2 -" Maintainer: Joël BERTRAND -" Last Change: 2005 Mar 28 -" Version: 0.1 - -" Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish -endif - -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 - -" Set 'formatoptions' to break comment lines but not other lines, -" and insert the comment leader when hitting or using "o". -setlocal fo-=t fo+=croql - -" Set 'comments' to format dashed lists in comments. -setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// diff --git a/share/vim/vim73/ftplugin/ruby.vim b/share/vim/vim73/ftplugin/ruby.vim deleted file mode 100644 index 6b9363e4..00000000 --- a/share/vim/vim73/ftplugin/ruby.vim +++ /dev/null @@ -1,274 +0,0 @@ -" Vim filetype plugin -" Language: Ruby -" Maintainer: Gavin Sinclair -" Last Change: 2010 Mar 15 -" URL: http://vim-ruby.rubyforge.org -" Anon CVS: See above site -" Release Coordinator: Doug Kearns -" ---------------------------------------------------------------------------- -" -" Original matchit support thanks to Ned Konz. See his ftplugin/ruby.vim at -" http://bike-nomad.com/vim/ruby.vim. -" ---------------------------------------------------------------------------- - -" Only do this when not done yet for this buffer -if (exists("b:did_ftplugin")) - finish -endif -let b:did_ftplugin = 1 - -let s:cpo_save = &cpo -set cpo&vim - -if has("gui_running") && !has("gui_win32") - setlocal keywordprg=ri\ -T -else - setlocal keywordprg=ri -endif - -" Matchit support -if exists("loaded_matchit") && !exists("b:match_words") - let b:match_ignorecase = 0 - - let b:match_words = - \ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|def\|begin\)\>=\@!' . - \ ':' . - \ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' . - \ ':' . - \ '\' . - \ ',{:},\[:\],(:)' - - let b:match_skip = - \ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" . - \ "\\'" -endif - -setlocal formatoptions-=t formatoptions+=croql - -setlocal include=^\\s*\\<\\(load\\\|\w*require\\)\\> -setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','') -setlocal suffixesadd=.rb - -if exists("&ofu") && has("ruby") - setlocal omnifunc=rubycomplete#Complete -endif - -" To activate, :set ballooneval -if has('balloon_eval') && exists('+balloonexpr') - setlocal balloonexpr=RubyBalloonexpr() -endif - - -" TODO: -"setlocal define=^\\s*def - -setlocal comments=:# -setlocal commentstring=#\ %s - -if !exists("s:ruby_path") - if exists("g:ruby_path") - let s:ruby_path = g:ruby_path - elseif has("ruby") && has("win32") - ruby VIM::command( 'let s:ruby_path = "%s"' % ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,}) ) - let s:ruby_path = '.,' . substitute(s:ruby_path, '\%(^\|,\)\.\%(,\|$\)', ',,', '') - elseif executable("ruby") - let s:code = "print ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,})" - if &shellxquote == "'" - let s:ruby_path = system('ruby -e "' . s:code . '"') - else - let s:ruby_path = system("ruby -e '" . s:code . "'") - endif - let s:ruby_path = '.,' . substitute(s:ruby_path, '\%(^\|,\)\.\%(,\|$\)', ',,', '') - else - " If we can't call ruby to get its path, just default to using the - " current directory and the directory of the current file. - let s:ruby_path = ".,," - endif -endif - -let &l:path = s:ruby_path - -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "Ruby Source Files (*.rb)\t*.rb\n" . - \ "All Files (*.*)\t*.*\n" -endif - -let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< kp<" - \."| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip" - \."| if exists('&ofu') && has('ruby') | setl ofu< | endif" - \."| if has('balloon_eval') && exists('+bexpr') | setl bexpr< | endif" - -if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps") - - nnoremap [m :call searchsyn('\','rubyDefine','b','n') - nnoremap ]m :call searchsyn('\','rubyDefine','','n') - nnoremap [M :call searchsyn('\','rubyDefine','b','n') - nnoremap ]M :call searchsyn('\','rubyDefine','','n') - xnoremap [m :call searchsyn('\','rubyDefine','b','v') - xnoremap ]m :call searchsyn('\','rubyDefine','','v') - xnoremap [M :call searchsyn('\','rubyDefine','b','v') - xnoremap ]M :call searchsyn('\','rubyDefine','','v') - - nnoremap [[ :call searchsyn('\<\%(class\module\)\>','rubyModule\rubyClass','b','n') - nnoremap ]] :call searchsyn('\<\%(class\module\)\>','rubyModule\rubyClass','','n') - nnoremap [] :call searchsyn('\','rubyModule\rubyClass','b','n') - nnoremap ][ :call searchsyn('\','rubyModule\rubyClass','','n') - xnoremap [[ :call searchsyn('\<\%(class\module\)\>','rubyModule\rubyClass','b','v') - xnoremap ]] :call searchsyn('\<\%(class\module\)\>','rubyModule\rubyClass','','v') - xnoremap [] :call searchsyn('\','rubyModule\rubyClass','b','v') - xnoremap ][ :call searchsyn('\','rubyModule\rubyClass','','v') - - let b:undo_ftplugin = b:undo_ftplugin - \."| sil! exe 'unmap [[' | sil! exe 'unmap ]]' | sil! exe 'unmap []' | sil! exe 'unmap ]['" - \."| sil! exe 'unmap [m' | sil! exe 'unmap ]m' | sil! exe 'unmap [M' | sil! exe 'unmap ]M'" - - if maparg("\",'n') == '' - nnoremap :exe v:count1."tag =RubyCursorIdentifier()" - nnoremap g :exe "tjump =RubyCursorIdentifier()" - nnoremap g] :exe "tselect =RubyCursorIdentifier()" - nnoremap ] :exe v:count1."stag =RubyCursorIdentifier()" - nnoremap :exe v:count1."stag =RubyCursorIdentifier()" - nnoremap g :exe "stjump =RubyCursorIdentifier()" - nnoremap g] :exe "stselect =RubyCursorIdentifier()" - nnoremap } :exe "ptag =RubyCursorIdentifier()" - nnoremap g} :exe "ptjump =RubyCursorIdentifier()" - let b:undo_ftplugin = b:undo_ftplugin - \."| sil! exe 'nunmap '| sil! exe 'nunmap g'| sil! exe 'nunmap g]'" - \."| sil! exe 'nunmap ]'| sil! exe 'nunmap '" - \."| sil! exe 'nunmap g'| sil! exe 'nunmap g]'" - \."| sil! exe 'nunmap }'| sil! exe 'nunmap g}'" - endif -endif - -let &cpo = s:cpo_save -unlet s:cpo_save - -if exists("g:did_ruby_ftplugin_functions") - finish -endif -let g:did_ruby_ftplugin_functions = 1 - -function! RubyBalloonexpr() - if !exists('s:ri_found') - let s:ri_found = executable('ri') - endif - if s:ri_found - let line = getline(v:beval_lnum) - let b = matchstr(strpart(line,0,v:beval_col),'\%(\w\|[:.]\)*$') - let a = substitute(matchstr(strpart(line,v:beval_col),'^\w*\%([?!]\|\s*=\)\?'),'\s\+','','g') - let str = b.a - let before = strpart(line,0,v:beval_col-strlen(b)) - let after = strpart(line,v:beval_col+strlen(a)) - if str =~ '^\.' - let str = substitute(str,'^\.','#','g') - if before =~ '\]\s*$' - let str = 'Array'.str - elseif before =~ '}\s*$' - " False positives from blocks here - let str = 'Hash'.str - elseif before =~ "[\"'`]\\s*$" || before =~ '\$\d\+\s*$' - let str = 'String'.str - elseif before =~ '\$\d\+\.\d\+\s*$' - let str = 'Float'.str - elseif before =~ '\$\d\+\s*$' - let str = 'Integer'.str - elseif before =~ '/\s*$' - let str = 'Regexp'.str - else - let str = substitute(str,'^#','.','') - endif - endif - let str = substitute(str,'.*\.\s*to_f\s*\.\s*','Float#','') - let str = substitute(str,'.*\.\s*to_i\%(nt\)\=\s*\.\s*','Integer#','') - let str = substitute(str,'.*\.\s*to_s\%(tr\)\=\s*\.\s*','String#','') - let str = substitute(str,'.*\.\s*to_sym\s*\.\s*','Symbol#','') - let str = substitute(str,'.*\.\s*to_a\%(ry\)\=\s*\.\s*','Array#','') - let str = substitute(str,'.*\.\s*to_proc\s*\.\s*','Proc#','') - if str !~ '^\w' - return '' - endif - silent! let res = substitute(system("ri -f simple -T \"".str.'"'),'\n$','','') - if res =~ '^Nothing known about' || res =~ '^Bad argument:' || res =~ '^More than one method' - return '' - endif - return res - else - return "" - endif -endfunction - -function! s:searchsyn(pattern,syn,flags,mode) - norm! m' - if a:mode ==# 'v' - norm! gv - endif - let i = 0 - let cnt = v:count ? v:count : 1 - while i < cnt - let i = i + 1 - let line = line('.') - let col = col('.') - let pos = search(a:pattern,'W'.a:flags) - while pos != 0 && s:synname() !~# a:syn - let pos = search(a:pattern,'W'.a:flags) - endwhile - if pos == 0 - call cursor(line,col) - return - endif - endwhile -endfunction - -function! s:synname() - return synIDattr(synID(line('.'),col('.'),0),'name') -endfunction - -function! RubyCursorIdentifier() - let asciicode = '\%(\w\|[]})\"'."'".']\)\@\|\<0[xXbBoOdD][[:xdigit:]_]\+\>\)\|'.asciicode - let operator = '\%(\[\]\|<<\|<=>\|[!<>]=\=\|===\=\|[!=]\~\|>>\|\*\*\|\.\.\.\=\|=>\|[~^&|*/%+-]\)' - let method = '\%(\<[_a-zA-Z]\w*\>\%([?!]\|\s*=>\@!\)\=\)' - let global = '$\%([!$&"'."'".'*+,./:;<=>?@\`~]\|-\=\w\+\>\)' - let symbolizable = '\%(\%(@@\=\)\w\+\>\|'.global.'\|'.method.'\|'.operator.'\)' - let pattern = '\C\s*\%('.number.'\|\%(:\@") : stripped -endfunction - -" -" Instructions for enabling "matchit" support: -" -" 1. Look for the latest "matchit" plugin at -" -" http://www.vim.org/scripts/script.php?script_id=39 -" -" It is also packaged with Vim, in the $VIMRUNTIME/macros directory. -" -" 2. Copy "matchit.txt" into a "doc" directory (e.g. $HOME/.vim/doc). -" -" 3. Copy "matchit.vim" into a "plugin" directory (e.g. $HOME/.vim/plugin). -" -" 4. Ensure this file (ftplugin/ruby.vim) is installed. -" -" 5. Ensure you have this line in your $HOME/.vimrc: -" filetype plugin on -" -" 6. Restart Vim and create the matchit documentation: -" -" :helptags ~/.vim/doc -" -" Now you can do ":help matchit", and you should be able to use "%" on Ruby -" keywords. Try ":echo b:match_words" to be sure. -" -" Thanks to Mark J. Reed for the instructions. See ":help vimrc" for the -" locations of plugin directories, etc., as there are several options, and it -" differs on Windows. Email gsinclair@soyabean.com.au if you need help. -" - -" vim: nowrap sw=2 sts=2 ts=8: diff --git a/share/vim/vim73/ftplugin/scheme.vim b/share/vim/vim73/ftplugin/scheme.vim deleted file mode 100644 index f4cee0c2..00000000 --- a/share/vim/vim73/ftplugin/scheme.vim +++ /dev/null @@ -1,26 +0,0 @@ -" Vim filetype plugin -" Language: Scheme -" Maintainer: Sergey Khorev -" URL: http://iamphet.nm.ru/vim -" Original author: Dorai Sitaram -" Original URL: http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html -" Last Change: Nov 22, 2004 - -runtime! ftplugin/lisp.vim ftplugin/lisp_*.vim ftplugin/lisp/*.vim - -if exists("b:is_mzscheme") || exists("is_mzscheme") - " improve indenting - setl iskeyword+=#,%,^ - setl lispwords+=module,parameterize,let-values,let*-values,letrec-values - setl lispwords+=define-values,opt-lambda,case-lambda,syntax-rules,with-syntax,syntax-case - setl lispwords+=define-signature,unit,unit/sig,compund-unit/sig,define-values/invoke-unit/sig -endif - -if exists("b:is_chicken") || exists("is_chicken") - " improve indenting - setl iskeyword+=#,%,^ - setl lispwords+=let-optionals,let-optionals*,declare - setl lispwords+=let-values,let*-values,letrec-values - setl lispwords+=define-values,opt-lambda,case-lambda,syntax-rules,with-syntax,syntax-case - setl lispwords+=cond-expand,and-let*,foreign-lambda,foreign-lambda* -endif diff --git a/share/vim/vim73/ftplugin/sgml.vim b/share/vim/vim73/ftplugin/sgml.vim deleted file mode 100644 index a07d31f0..00000000 --- a/share/vim/vim73/ftplugin/sgml.vim +++ /dev/null @@ -1,39 +0,0 @@ -" Vim filetype plugin file -" Language: sgml -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -" Define some defaults in case the included ftplugins don't set them. -let s:undo_ftplugin = "" -let s:browsefilter = "XML Files (*.xml)\t*.xml\n" . - \ "All Files (*.*)\t*.*\n" - -runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim -let b:did_ftplugin = 1 - -" Override our defaults if these were set by an included ftplugin. -if exists("b:undo_ftplugin") - let s:undo_ftplugin = b:undo_ftplugin -endif -if exists("b:browsefilter") - let s:browsefilter = b:browsefilter -endif - -" Change the :browse e filter to primarily show xml-related files. -if has("gui_win32") - let b:browsefilter="SGML Files (*.sgml,*.sgm)\t*.sgm*\n" . s:browsefilter -endif - -" Undo the stuff we changed. -let b:undo_ftplugin = "unlet! b:browsefilter | " . s:undo_ftplugin - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/sh.vim b/share/vim/vim73/ftplugin/sh.vim deleted file mode 100644 index 076b5efd..00000000 --- a/share/vim/vim73/ftplugin/sh.vim +++ /dev/null @@ -1,38 +0,0 @@ -" Vim filetype plugin file -" Language: sh -" Maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -setlocal commentstring=#%s - -" Shell: thanks to Johannes Zellner -if exists("loaded_matchit") - let s:sol = '\%(;\s*\|^\s*\)\@<=' " start of line - let b:match_words = - \ s:sol.'if\>:' . s:sol.'elif\>:' . s:sol.'else\>:' . s:sol. 'fi\>,' . - \ s:sol.'\%(for\|while\)\>:' . s:sol. 'done\>,' . - \ s:sol.'case\>:' . s:sol. 'esac\>' -endif - -" Change the :browse e filter to primarily show shell-related files. -if has("gui_win32") - let b:browsefilter="Bourne Shell Scripts (*.sh)\t*.sh\n" . - \ "Korn Shell Scripts (*.ksh)\t*.ksh\n" . - \ "Bash Shell Scripts (*.bash)\t*.bash\n" . - \ "All Files (*.*)\t*.*\n" -endif - -" Undo the stuff we changed. -let b:undo_ftplugin = "setlocal cms< | unlet! b:browsefilter b:match_words" - -" Restore the saved compatibility options. -let &cpo = s:save_cpo diff --git a/share/vim/vim73/ftplugin/spec.vim b/share/vim/vim73/ftplugin/spec.vim deleted file mode 100644 index 3b1d70a4..00000000 --- a/share/vim/vim73/ftplugin/spec.vim +++ /dev/null @@ -1,168 +0,0 @@ -" Plugin to update the %changelog section of RPM spec files -" Filename: spec.vim -" Maintainer: Gustavo Niemeyer -" Last Change: Wed, 10 Apr 2002 16:28:52 -0300 - -if exists("b:did_ftplugin") - finish -endif -let b:did_ftplugin = 1 - -if !exists("no_plugin_maps") && !exists("no_spec_maps") - if !hasmapto("SpecChangelog") - map c SpecChangelog - endif -endif - -noremap ', 'nWb') - \ && 0 < searchpair(js, '', '', 'nW') - " we're inside javascript - if getline(lnum) !~ js && getline(a:lnum) != '' - if restore_ic == 0 - setlocal noic - endif - return cindent(a:lnum) - endif - endif - - if getline(lnum) =~ '\c
' - " line before the current line a:lnum contains - " a closing . --> search for line before - " starting
 to restore the indent.
-	let preline = prevnonblank(search('\c
', 'bW') - 1)
-	if preline > 0
-	    if restore_ic == 0
-	      setlocal noic
-	    endif
-	    return indent(preline)
-	endif
-    endif
-
-    let ind = HtmlIndentSum(lnum, -1)
-    let ind = ind + HtmlIndentSum(a:lnum, 0)
-
-    if restore_ic == 0
-	setlocal noic
-    endif
-
-    return indent(lnum) + (&sw * ind)
-endfun
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
-
-" [-- EOF /indent/html.vim --]
diff --git a/share/vim/vim73/indent/idlang.vim b/share/vim/vim73/indent/idlang.vim
deleted file mode 100644
index 97c31ada..00000000
--- a/share/vim/vim73/indent/idlang.vim
+++ /dev/null
@@ -1,63 +0,0 @@
-" IDL (Interactive Data Language) indent file.
-" Language: IDL (ft=idlang)
-" Last change:	2002 Sep 23
-" Maintainer: Aleksandar Jelenak 
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-   finish
-endif
-let b:did_indent = 1
-
-setlocal indentkeys=o,O,0=endif,0=ENDIF,0=endelse,0=ENDELSE,0=endwhile,
-		    \0=ENDWHILE,0=endfor,0=ENDFOR,0=endrep,0=ENDREP
-
-setlocal indentexpr=GetIdlangIndent(v:lnum)
-
-" Only define the function once.
-if exists("*GetIdlangIndent")
-   finish
-endif
-
-function GetIdlangIndent(lnum)
-   " First non-empty line above the current line.
-   let pnum = prevnonblank(v:lnum-1)
-   " v:lnum is the first non-empty line -- zero indent.
-   if pnum == 0
-      return 0
-   endif
-   " Second non-empty line above the current line.
-   let pnum2 = prevnonblank(pnum-1)
-
-   " Current indent.
-   let curind = indent(pnum)
-
-   " Indenting of continued lines.
-   if getline(pnum) =~ '\$\s*\(;.*\)\=$'
-      if getline(pnum2) !~ '\$\s*\(;.*\)\=$'
-	 let curind = curind+&sw
-      endif
-   else
-      if getline(pnum2) =~ '\$\s*\(;.*\)\=$'
-	 let curind = curind-&sw
-      endif
-   endif
-
-   " Indenting blocks of statements.
-   if getline(v:lnum) =~? '^\s*\(endif\|endelse\|endwhile\|endfor\|endrep\)\>'
-      if getline(pnum) =~? 'begin\>'
-      elseif indent(v:lnum) > curind-&sw
-	 let curind = curind-&sw
-      else
-	 return -1
-      endif
-   elseif getline(pnum) =~? 'begin\>'
-      if indent(v:lnum) < curind+&sw
-	 let curind = curind+&sw
-      else
-	 return -1
-      endif
-   endif
-   return curind
-endfunction
-
diff --git a/share/vim/vim73/indent/java.vim b/share/vim/vim73/indent/java.vim
deleted file mode 100644
index facbdbf5..00000000
--- a/share/vim/vim73/indent/java.vim
+++ /dev/null
@@ -1,130 +0,0 @@
-" Vim indent file
-" Language:	Java
-" Maintainer:	Toby Allsopp  (resigned)
-" Last Change:	2005 Mar 28
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-" Indent Java anonymous classes correctly.
-setlocal cindent cinoptions& cinoptions+=j1
-
-" The "extends" and "implements" lines start off with the wrong indent.
-setlocal indentkeys& indentkeys+=0=extends indentkeys+=0=implements
-
-" Set the function to do the work.
-setlocal indentexpr=GetJavaIndent()
-
-let b:undo_indent = "set cin< cino< indentkeys< indentexpr<"
-
-" Only define the function once.
-if exists("*GetJavaIndent")
-  finish
-endif
-
-function! SkipJavaBlanksAndComments(startline)
-  let lnum = a:startline
-  while lnum > 1
-    let lnum = prevnonblank(lnum)
-    if getline(lnum) =~ '\*/\s*$'
-      while getline(lnum) !~ '/\*' && lnum > 1
-        let lnum = lnum - 1
-      endwhile
-      if getline(lnum) =~ '^\s*/\*'
-        let lnum = lnum - 1
-      else
-        break
-      endif
-    elseif getline(lnum) =~ '^\s*//'
-      let lnum = lnum - 1
-    else
-      break
-    endif
-  endwhile
-  return lnum
-endfunction
-
-function GetJavaIndent()
-
-  " Java is just like C; use the built-in C indenting and then correct a few
-  " specific cases.
-  let theIndent = cindent(v:lnum)
-
-  " If we're in the middle of a comment then just trust cindent
-  if getline(v:lnum) =~ '^\s*\*'
-    return theIndent
-  endif
-
-  " find start of previous line, in case it was a continuation line
-  let lnum = SkipJavaBlanksAndComments(v:lnum - 1)
-  let prev = lnum
-  while prev > 1
-    let next_prev = SkipJavaBlanksAndComments(prev - 1)
-    if getline(next_prev) !~ ',\s*$'
-      break
-    endif
-    let prev = next_prev
-  endwhile
-
-  " Try to align "throws" lines for methods and "extends" and "implements" for
-  " classes.
-  if getline(v:lnum) =~ '^\s*\(extends\|implements\)\>'
-        \ && getline(lnum) !~ '^\s*\(extends\|implements\)\>'
-    let theIndent = theIndent + &sw
-  endif
-
-  " correct for continuation lines of "throws", "implements" and "extends"
-  let cont_kw = matchstr(getline(prev),
-        \ '^\s*\zs\(throws\|implements\|extends\)\>\ze.*,\s*$')
-  if strlen(cont_kw) > 0
-    let amount = strlen(cont_kw) + 1
-    if getline(lnum) !~ ',\s*$'
-      let theIndent = theIndent - (amount + &sw)
-      if theIndent < 0
-        let theIndent = 0
-      endif
-    elseif prev == lnum
-      let theIndent = theIndent + amount
-      if cont_kw ==# 'throws'
-        let theIndent = theIndent + &sw
-      endif
-    endif
-  elseif getline(prev) =~ '^\s*\(throws\|implements\|extends\)\>'
-        \ && (getline(prev) =~ '{\s*$'
-        \  || getline(v:lnum) =~ '^\s*{\s*$')
-    let theIndent = theIndent - &sw
-  endif
-
-  " When the line starts with a }, try aligning it with the matching {,
-  " skipping over "throws", "extends" and "implements" clauses.
-  if getline(v:lnum) =~ '^\s*}\s*\(//.*\|/\*.*\)\=$'
-    call cursor(v:lnum, 1)
-    silent normal %
-    let lnum = line('.')
-    if lnum < v:lnum
-      while lnum > 1
-        let next_lnum = SkipJavaBlanksAndComments(lnum - 1)
-        if getline(lnum) !~ '^\s*\(throws\|extends\|implements\)\>'
-              \ && getline(next_lnum) !~ ',\s*$'
-          break
-        endif
-        let lnum = prevnonblank(next_lnum)
-      endwhile
-      return indent(lnum)
-    endif
-  endif
-
-  " Below a line starting with "}" never indent more.  Needed for a method
-  " below a method with an indented "throws" clause.
-  let lnum = SkipJavaBlanksAndComments(v:lnum - 1)
-  if getline(lnum) =~ '^\s*}\s*\(//.*\|/\*.*\)\=$' && indent(lnum) < theIndent
-    let theIndent = indent(lnum)
-  endif
-
-  return theIndent
-endfunction
-
-" vi: sw=2 et
diff --git a/share/vim/vim73/indent/liquid.vim b/share/vim/vim73/indent/liquid.vim
deleted file mode 100644
index 08341b04..00000000
--- a/share/vim/vim73/indent/liquid.vim
+++ /dev/null
@@ -1,63 +0,0 @@
-" Vim indent file
-" Language:     Liquid
-" Maintainer:   Tim Pope 
-" Last Change:	2010 May 21
-
-if exists('b:did_indent')
-  finish
-endif
-
-set indentexpr=
-if exists('b:liquid_subtype')
-  exe 'runtime! indent/'.b:liquid_subtype.'.vim'
-else
-  runtime! indent/html.vim
-endif
-unlet! b:did_indent
-
-if &l:indentexpr == ''
-  if &l:cindent
-    let &l:indentexpr = 'cindent(v:lnum)'
-  else
-    let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'
-  endif
-endif
-let b:liquid_subtype_indentexpr = &l:indentexpr
-
-let b:did_indent = 1
-
-setlocal indentexpr=GetLiquidIndent()
-setlocal indentkeys=o,O,*,<>>,{,},0),0],o,O,!^F,=end,=endif,=endunless,=endifchanged,=endcase,=endfor,=endtablerow,=endcapture,=else,=elsif,=when,=empty
-
-" Only define the function once.
-if exists('*GetLiquidIndent')
-  finish
-endif
-
-function! s:count(string,pattern)
-  let string = substitute(a:string,'\C'.a:pattern,"\n",'g')
-  return strlen(substitute(string,"[^\n]",'','g'))
-endfunction
-
-function! GetLiquidIndent(...)
-  if a:0 && a:1 == '.'
-    let v:lnum = line('.')
-  elseif a:0 && a:1 =~ '^\d'
-    let v:lnum = a:1
-  endif
-  let vcol = col('.')
-  call cursor(v:lnum,1)
-  exe "let ind = ".b:liquid_subtype_indentexpr
-  let lnum = prevnonblank(v:lnum-1)
-  let line = getline(lnum)
-  let cline = getline(v:lnum)
-  let line  = substitute(line,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
-  let line .= matchstr(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+')
-  let cline = substitute(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
-  let ind += &sw * s:count(line,'{%\s*\%(if\|elsif\|else\|unless\|ifchanged\|case\|when\|for\|tablerow\|capture\)\>')
-  let ind -= &sw * s:count(line,'{%\s*end\%(if\|unless\|ifchanged\|case\|for\|tablerow\|capture\)\>')
-  let ind += &sw * s:count(line,'{%\s*\%(elsif\|else\|when\|empty\)\>')
-  let ind -= &sw * s:count(cline,'{%\s*\%(elsif\|else\|when\|empty\)\>')
-  let ind -= &sw * s:count(cline,'{%\s*end\w*$')
-  return ind
-endfunction
diff --git a/share/vim/vim73/indent/lisp.vim b/share/vim/vim73/indent/lisp.vim
deleted file mode 100644
index 9f404ae6..00000000
--- a/share/vim/vim73/indent/lisp.vim
+++ /dev/null
@@ -1,15 +0,0 @@
-" Vim indent file
-" Language:	Lisp
-" Maintainer:    Sergey Khorev 
-" URL:		 http://iamphet.nm.ru/vim
-" Last Change:	2005 May 19
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-   finish
-endif
-let b:did_indent = 1
-
-setlocal ai nosi
-
-let b:undo_indent = "setl ai< si<"
diff --git a/share/vim/vim73/indent/mp.vim b/share/vim/vim73/indent/mp.vim
deleted file mode 100644
index 1aea4f80..00000000
--- a/share/vim/vim73/indent/mp.vim
+++ /dev/null
@@ -1,206 +0,0 @@
-" MetaPost indent file
-" Language:	MetaPost
-" Maintainer:	Eugene Minkovskii 
-" Last Change:	2003 Nov 21
-" Version: 0.1
-" ==========================================================================
-
-" Identation Rules: {{{1
-" First of all, MetaPost language don't expect any identation rules.
-" This screept need for you only if you (not MetaPost) need to do
-" exactly code. If you don't need to use indentation, see
-" :help filetype-indent-off
-"
-" Note: Every rules of identation in MetaPost or TeX languages (and in some
-" other of course) is very subjective. I can release only my vision of this
-" promlem.
-"
-" ..........................................................................
-" Example of correct (by me) identation {{{2
-" shiftwidth=4
-" ==========================================================================
-" for i=0 upto 99:
-"     z[i] = (0,1u) rotated (i*360/100);
-" endfor
-" draw z0 -- z10 -- z20
-"         withpen ...     % <- 2sw because breaked line
-"         withcolor ...;  % <- same as previous
-" draw z0 for i=1 upto 99:
-"             -- z[i]             % <- 1sw from left end of 'for' satement
-"         endfor withpen ...      % <- 0sw from left end of 'for' satement
-"                 withcolor ...;  % <- 2sw because breaked line
-" draw if One:     % <- This is internal if (like 'for' above)
-"          one
-"      elsif Other:
-"          other
-"      fi withpen ...;
-" if one:          % <- This is external if
-"     draw one;
-" elseif other:
-"     draw other;
-" fi
-" draw z0; draw z1;
-" }}}
-" }}}
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-setlocal indentexpr=GetMetaPostIndent()
-setlocal indentkeys+=;,<:>,=if,=for,=def,=end,=else,=fi
-
-" Only define the function once.
-if exists("*GetMetaPostIndent")
-  finish
-endif
-
-" Auxiliary Definitions: {{{1
-function! MetaNextNonblankNoncomment(pos)
-  " Like nextnonblank() but ignore comment lines
-  let tmp = nextnonblank(a:pos)
-  while tmp && getline(tmp) =~ '^\s*%'
-    let tmp = nextnonblank(tmp+1)
-  endwhile
-  return tmp
-endfunction
-
-function! MetaPrevNonblankNoncomment(pos)
-  " Like prevnonblank() but ignore comment lines
-  let tmp = prevnonblank(a:pos)
-  while tmp && getline(tmp) =~ '^\s*%'
-    let tmp = prevnonblank(tmp-1)
-  endwhile
-  return tmp
-endfunction
-
-function! MetaSearchNoncomment(pattern, ...)
-  " Like search() but ignore commented areas
-  if a:0
-    let flags = a:1
-  elseif &wrapscan
-    let flags = "w"
-  else
-    let flags = "W"
-  endif
-  let cl  = line(".")
-  let cc  = col(".")
-  let tmp = search(a:pattern, flags)
-  while tmp && synIDattr(synID(line("."), col("."), 1), "name") =~
-        \ 'm[fp]\(Comment\|TeXinsert\|String\)'
-    let tmp = search(a:pattern, flags)
-  endwhile
-  if !tmp
-    call cursor(cl,cc)
-  endif
-  return tmp
-endfunction
-" }}}
-
-function! GetMetaPostIndent()
-  " not indent in comment ???
-  if synIDattr(synID(line("."), col("."), 1), "name") =~
-        \ 'm[fp]\(Comment\|TeXinsert\|String\)'
-    return -1
-  endif
-  " Some RegExps: {{{1
-  " end_of_item: all of end by ';'
-  "            + all of end by :endfor, :enddef, :endfig, :endgroup, :fi
-  "            + all of start by :beginfig(num), :begingroup
-  "            + all of start by :for, :if, :else, :elseif and end by ':'
-  "            + all of start by :def, :vardef             and end by '='
-  let end_of_item = '\('                              .
-        \ ';\|'                                       .
-        \ '\<\(end\(for\|def\|fig\|group\)\|fi\)\>\|' .
-        \ '\\|fig\s*(\s*\d\+\s*)\)\|'  .
-        \ '\<\(for\|if\|else\(if\)\=\)\>.\+:\|'       .
-        \ '\<\(var\)\=def\>.\+='                      . '\)'
-  " }}}
-  " Save: current position {{{1
-  let cl = line   (".")
-  let cc = col    (".")
-  let cs = getline(".")
-  " if it is :beginfig or :endfig use zero indent
-  if  cs =~ '^\s*\(begin\|end\)fig\>'
-    return 0
-  endif
-  " }}}
-  " Initialise: ind variable {{{1
-  " search previous item not in current line
-  let p_semicol_l = MetaSearchNoncomment(end_of_item,"bW")
-  while p_semicol_l == cl
-    let p_semicol_l = MetaSearchNoncomment(end_of_item,"bW")
-  endwhile
-  " if this is first item in program use zero indent
-  if !p_semicol_l
-    return 0
-  endif
-  " if this is multiline item, remember first indent
-  if MetaNextNonblankNoncomment(p_semicol_l+1) < cl
-    let ind = indent(MetaNextNonblankNoncomment(p_semicol_l+1))
-  " else --- search pre-previous item for search first line in previous item
-  else
-    " search pre-previous item not in current line
-    let pp_semicol_l = MetaSearchNoncomment(end_of_item,"bW")
-    while pp_semicol_l == p_semicol_l
-      let pp_semicol_l = MetaSearchNoncomment(end_of_item,"bW")
-    endwhile
-    " if we find pre-previous item, remember indent of previous item
-    " else --- remember zero
-    if pp_semicol_l
-      let ind = indent(MetaNextNonblankNoncomment(line(".")+1))
-    else
-      let ind = 0
-    endif
-  endif
-  " }}}
-  " Increase Indent: {{{1
-  " if it is an internal/external :for or :if statements {{{2
-  let pnn_s = getline(MetaPrevNonblankNoncomment(cl-1))
-  if  pnn_s =~ '\<\(for\|if\)\>.\+:\s*\($\|%\)'
-    let ind = match(pnn_s, '\<\(for\|if\)\>.\+:\s*\($\|%\)') + &sw
-  " }}}
-  " if it is a :def, :vardef, :beginfig, :begingroup, :else, :elseif {{{2
-  elseif pnn_s =~ '^\s*\('                       .
-        \ '\(var\)\=def\|'                       .
-        \ 'begin\(group\|fig\s*(\s*\d\+\s*)\)\|' .
-        \ 'else\(if\)\='                         . '\)\>'
-    let ind = ind + &sw
-  " }}}
-  " if it is a broken line {{{2
-  elseif pnn_s !~ end_of_item.'\s*\($\|%\)'
-    let ind = ind + (2 * &sw)
-  endif
-  " }}}
-  " }}}
-  " Decrease Indent: {{{1
-  " if this is :endfor or :enddef statements {{{2
-  " this is correct because :def cannot be inside :for
-  if  cs  =~ '\'
-    call MetaSearchNoncomment('\.\+:\s*\($\|%\)' . '\|' .
-                            \ '^\s*\(var\)\=def\>',"bW")
-    if col(".") > 1
-      let ind = col(".") - 1
-    else
-      let ind = indent(".")
-    endif
-  " }}}
-  " if this is :fi, :else, :elseif statements {{{2
-  elseif cs =~ '\<\(else\(if\)\=\|fi\)\>'
-    call MetaSearchNoncomment('\.\+:\s*\($\|%\)',"bW")
-    let ind = col(".") - 1
-  " }}}
-  " if this is :endgroup statement {{{2
-  elseif cs =~ '^\s*endgroup\>'
-    let ind = ind - &sw
-  endif
-  " }}}
-  " }}}
-
-  return ind
-endfunction
-"
-
-" vim:sw=2:fdm=marker
diff --git a/share/vim/vim73/indent/ocaml.vim b/share/vim/vim73/indent/ocaml.vim
deleted file mode 100644
index 5c267af8..00000000
--- a/share/vim/vim73/indent/ocaml.vim
+++ /dev/null
@@ -1,253 +0,0 @@
-" Vim indent file
-" Language:     OCaml
-" Maintainers:	Jean-Francois Yuen   
-"		Mike Leary	     
-"		Markus Mottl	     
-" URL:		http://www.ocaml.info/vim/indent/ocaml.vim
-" Last Change:  2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
-"		2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
-"		2005 Apr 11 - Fixed an indentation bug concerning "let" (MM)
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
- finish
-endif
-let b:did_indent = 1
-
-setlocal expandtab
-setlocal indentexpr=GetOCamlIndent()
-setlocal indentkeys+=0=and,0=class,0=constraint,0=done,0=else,0=end,0=exception,0=external,0=if,0=in,0=include,0=inherit,0=initializer,0=let,0=method,0=open,0=then,0=type,0=val,0=with,0;;,0>\],0\|\],0>},0\|,0},0\],0)
-setlocal nolisp
-setlocal nosmartindent
-setlocal textwidth=80
-
-" Comment formatting
-if !exists("no_ocaml_comments")
- if (has("comments"))
-   setlocal comments=sr:(*,mb:*,ex:*)
-   setlocal fo=cqort
- endif
-endif
-
-" Only define the function once.
-if exists("*GetOCamlIndent")
- finish
-endif
-
-" Define some patterns:
-let s:beflet = '^\s*\(initializer\|method\|try\)\|\(\<\(begin\|do\|else\|in\|then\|try\)\|->\|<-\|=\|;\|(\)\s*$'
-let s:letpat = '^\s*\(let\|type\|module\|class\|open\|exception\|val\|include\|external\)\>'
-let s:letlim = '\(\<\(sig\|struct\)\|;;\)\s*$'
-let s:lim = '^\s*\(exception\|external\|include\|let\|module\|open\|type\|val\)\>'
-let s:module = '\<\%(begin\|sig\|struct\|object\)\>'
-let s:obj = '^\s*\(constraint\|inherit\|initializer\|method\|val\)\>\|\<\(object\|object\s*(.*)\)\s*$'
-let s:type = '^\s*\%(class\|let\|type\)\>.*='
-
-" Skipping pattern, for comments
-function s:GetLineWithoutFullComment(lnum)
- let lnum = prevnonblank(a:lnum - 1)
- let lline = substitute(getline(lnum), '(\*.*\*)\s*$', '', '')
- while lline =~ '^\s*$' && lnum > 0
-   let lnum = prevnonblank(lnum - 1)
-   let lline = substitute(getline(lnum), '(\*.*\*)\s*$', '', '')
- endwhile
- return lnum
-endfunction
-
-" Indent for ';;' to match multiple 'let'
-function s:GetInd(lnum, pat, lim)
- let llet = search(a:pat, 'bW')
- let old = indent(a:lnum)
- while llet > 0
-   let old = indent(llet)
-   let nb = s:GetLineWithoutFullComment(llet)
-   if getline(nb) =~ a:lim
-     return old
-   endif
-   let llet = search(a:pat, 'bW')
- endwhile
- return old
-endfunction
-
-" Indent pairs
-function s:FindPair(pstart, pmid, pend)
- call search(a:pend, 'bW')
- return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
-endfunction
-
-" Indent 'let'
-function s:FindLet(pstart, pmid, pend)
- call search(a:pend, 'bW')
- return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") =~ "^\\s*let\\>.*=.*\\\s*$'
-   return ind + &sw + &sw
- endif
-
- let line = getline(v:lnum)
-
- " Indent if current line begins with 'end':
- if line =~ '^\s*end\>'
-   return s:FindPair(s:module, '','\')
-
- " Indent if current line begins with 'done' for 'do':
- elseif line =~ '^\s*done\>'
-   return s:FindPair('\', '','\')
-
- " Indent if current line begins with '}' or '>}':
- elseif line =~ '^\s*\(\|>\)}'
-   return s:FindPair('{', '','}')
-
- " Indent if current line begins with ']', '|]' or '>]':
- elseif line =~ '^\s*\(\||\|>\)\]'
-   return s:FindPair('\[', '','\]')
-
- " Indent if current line begins with ')':
- elseif line =~ '^\s*)'
-   return s:FindPair('(', '',')')
-
- " Indent if current line begins with 'let':
- elseif line =~ '^\s*let\>'
-   if lline !~ s:lim . '\|' . s:letlim . '\|' . s:beflet
-     return s:FindLet(s:type, '','\'
-   if lline !~ s:lim . '\|\\)\|\<\(function\|parser\|private\|with\)\s*$'
-     call search('|', 'bW')
-     return indent(searchpair('^\s*\(match\|type\)\>\|\<\(function\|parser\|private\|with\)\s*$', '', '^\s*|', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") !~ "^\\s*|.*->"'))
-   endif
-
- " Indent if current line begins with ';;':
- elseif line =~ '^\s*;;'
-   if lline !~ ';;\s*$'
-     return s:GetInd(v:lnum, s:letpat, s:letlim)
-   endif
-
- " Indent if current line begins with 'in':
- elseif line =~ '^\s*in\>'
-   if lline !~ '^\s*\(let\|and\)\>'
-     return s:FindPair('\', '', '\')
-   endif
-
- " Indent if current line begins with 'else':
- elseif line =~ '^\s*else\>'
-   if lline !~ '^\s*\(if\|then\)\>'
-     return s:FindPair('\', '', '\')
-   endif
-
- " Indent if current line begins with 'then':
- elseif line =~ '^\s*then\>'
-   if lline !~ '^\s*\(if\|else\)\>'
-     return s:FindPair('\', '', '\')
-   endif
-
- " Indent if current line begins with 'and':
- elseif line =~ '^\s*and\>'
-   if lline !~ '^\s*\(and\|let\|type\)\>\|\'
-   if lline !~ '^\s*\(match\|try\)\>'
-     return s:FindPair('\<\%(match\|try\)\>', '','\')
-   endif
-
- " Indent if current line begins with 'exception', 'external', 'include' or
- " 'open':
- elseif line =~ '^\s*\(exception\|external\|include\|open\)\>'
-   if lline !~ s:lim . '\|' . s:letlim
-     call search(line)
-     return indent(search('^\s*\(\(exception\|external\|include\|open\|type\)\>\|val\>.*:\)', 'bW'))
-   endif
-
- " Indent if current line begins with 'val':
- elseif line =~ '^\s*val\>'
-   if lline !~ '^\s*\(exception\|external\|include\|open\)\>\|' . s:obj . '\|' . s:letlim
-     return indent(search('^\s*\(\(exception\|include\|initializer\|method\|open\|type\|val\)\>\|external\>.*:\)', 'bW'))
-   endif
-
- " Indent if current line begins with 'constraint', 'inherit', 'initializer'
- " or 'method':
- elseif line =~ '^\s*\(constraint\|inherit\|initializer\|method\)\>'
-   if lline !~ s:obj
-     return indent(search('\<\(object\|object\s*(.*)\)\s*$', 'bW')) + &sw
-   endif
-
- endif
-
- " Add a 'shiftwidth' after lines ending with:
- if lline =~ '\(:\|=\|->\|<-\|(\|\[\|{\|{<\|\[|\|\[<\|\<\(begin\|do\|else\|fun\|function\|functor\|if\|initializer\|object\|parser\|private\|sig\|struct\|then\|try\)\|\')
-
- " Back to normal indent after lines ending with 'in':
- elseif lline =~ '\'
-   let ind = s:FindPair('\', '', '\')
-
- " Back to normal indent after lines ending with 'done':
- elseif lline =~ '\', '','\')
-
- " Back to normal indent after lines ending with '}' or '>}':
- elseif lline =~ '\(\|>\)}\s*$'
-   let ind = s:FindPair('{', '','}')
-
- " Back to normal indent after lines ending with ']', '|]' or '>]':
- elseif lline =~ '\(\||\|>\)\]\s*$'
-   let ind = s:FindPair('\[', '','\]')
-
- " Back to normal indent after comments:
- elseif lline =~ '\*)\s*$'
-   call search('\*)', 'bW')
-   let ind = indent(searchpair('(\*', '', '\*)', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"'))
-
- " Back to normal indent after lines ending with ')':
- elseif lline =~ ')\s*$'
-   let ind = s:FindPair('(', '',')')
-
- " If this is a multiline comment then align '*':
- elseif lline =~ '^\s*(\*' && line =~ '^\s*\*'
-   let ind = ind + 1
-
- endif
-
- " Subtract a 'shiftwidth' after lines matching 'match ... with parser':
- if lline =~ '\.*\\s*\
-" Last Change:	23 April 2003
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-"{{{  Settings
-" Set the occam indent function
-setlocal indentexpr=GetOccamIndent()
-" Indent after new line and after initial colon
-setlocal indentkeys=o,O,0=:
-"}}}
-
-" Only define the function once
-if exists("*GetOccamIndent")
-  finish
-endif
-
-"{{{  Indent definitions
-" Define carriage return indent
-let s:FirstLevelIndent = '^\C\s*\(IF\|ALT\|PRI\s\+ALT\|PAR\|SEQ\|PRI\s\+PAR\|WHILE\|VALOF\|CLAIM\|FORKING\)\>\|\(--.*\)\@\|??\|\\s*\(--.*\)\=\_$\)'
-let s:FirstLevelNonColonEndIndent = '^\C\s*PROTOCOL\>\|\(--.*\)\@'
-let s:SecondLevelIndent = '^\C\s*\(IF\|ALT\|PRI\s\+ALT\)\>\|\(--.*\)\@\s*\(--.*\)\=\_$'
-let s:SecondLevelNonColonEndIndent = '\(--.*\)\@'
-
-" Define colon indent
-let s:ColonIndent = '\(--.*\)\@'
-let s:ColonNonColonEndIndent = '^\C\s*PROTOCOL\>\|\(--.*\)\@'
-
-let s:ColonEnd = '\(--.*\)\@ 0 && getline(linenum) =~ s:CommentLine
-    let linenum = prevnonblank(linenum - 1)
-  endwhile
-
-  " Get current indent
-  let curindent = indent(linenum)
-
-  " Get current line
-  let line = getline(linenum)
-
-  " Get previous line number
-  let prevlinenum = prevnonblank(linenum - 1)
-  while prevlinenum > 0 && getline(prevlinenum) =~ s:CommentLine
-    let prevlinenum = prevnonblank(prevlinenum - 1)
-  endwhile
-
-  " Get previous line
-  let prevline = getline(prevlinenum)
-
-  " Colon indent
-  if getline(v:lnum) =~ s:ColonStart
-
-    let found = 0
-
-    while found < 1
-
-      if line =~ s:ColonStart
-	let found = found - 1
-      elseif line =~ s:ColonIndent || (line =~ s:ColonNonColonEndIndent && line !~ s:ColonEnd)
-	let found = found + 1
-      endif
-
-      if found < 1
-	let linenum = prevnonblank(linenum - 1)
-	if linenum > 0
-	  let line = getline(linenum)
-	else
-	  let found = 1
-	endif
-      endif
-
-    endwhile
-
-    if linenum > 0
-      let curindent = indent(linenum)
-    else
-      let colonline = getline(v:lnum)
-      let tabstr = ''
-      while strlen(tabstr) < &tabstop
-	let tabstr = ' ' . tabstr
-      endwhile
-      let colonline = substitute(colonline, '\t', tabstr, 'g')
-      let curindent = match(colonline, ':')
-    endif
-
-    " Restore magic
-    if !save_magic|setlocal nomagic|endif
-
-    return curindent
-  endif
-
-  if getline(v:lnum) =~ '^\s*:'
-    let colonline = getline(v:lnum)
-    let tabstr = ''
-    while strlen(tabstr) < &tabstop
-      let tabstr = ' ' . tabstr
-    endwhile
-    let colonline = substitute(colonline, '\t', tabstr, 'g')
-    let curindent = match(colonline, ':')
-
-    " Restore magic
-    if !save_magic|setlocal nomagic|endif
-
-    return curindent
-  endif
-
-  " Carriage return indenat
-  if line =~ s:FirstLevelIndent || (line =~ s:FirstLevelNonColonEndIndent && line !~ s:ColonEnd)
-	\ || (line !~ s:ColonStart && (prevline =~ s:SecondLevelIndent
-	\ || (prevline =~ s:SecondLevelNonColonEndIndent && prevline !~ s:ColonEnd)))
-    let curindent = curindent + &shiftwidth
-
-    " Restore magic
-    if !save_magic|setlocal nomagic|endif
-
-    return curindent
-  endif
-
-  " Commented line
-  if getline(prevnonblank(v:lnum - 1)) =~ s:CommentLine
-
-    " Restore magic
-    if !save_magic|setlocal nomagic|endif
-
-    return indent(prevnonblank(v:lnum - 1))
-  endif
-
-  " Look for previous second level IF / ALT / PRI ALT
-  let found = 0
-
-  while !found
-
-    if indent(prevlinenum) == curindent - &shiftwidth
-      let found = 1
-    endif
-
-    if !found
-      let prevlinenum = prevnonblank(prevlinenum - 1)
-      while prevlinenum > 0 && getline(prevlinenum) =~ s:CommentLine
-	let prevlinenum = prevnonblank(prevlinenum - 1)
-      endwhile
-      if prevlinenum == 0
-	let found = 1
-      endif
-    endif
-
-  endwhile
-
-  if prevlinenum > 0
-    if getline(prevlinenum) =~ s:SecondLevelIndent
-      let curindent = curindent + &shiftwidth
-    endif
-  endif
-
-  " Restore magic
-  if !save_magic|setlocal nomagic|endif
-
-  return curindent
-
-endfunction
-"}}}
diff --git a/share/vim/vim73/indent/pascal.vim b/share/vim/vim73/indent/pascal.vim
deleted file mode 100644
index b1a652d0..00000000
--- a/share/vim/vim73/indent/pascal.vim
+++ /dev/null
@@ -1,173 +0,0 @@
-" Vim indent file
-" Language:    Pascal
-" Maintainer:  Neil Carter 
-" Created:     2004 Jul 13
-" Last Change: 2005 Jul 05
-
-
-if exists("b:did_indent")
-	finish
-endif
-let b:did_indent = 1
-
-setlocal indentexpr=GetPascalIndent(v:lnum)
-setlocal indentkeys&
-setlocal indentkeys+==end;,==const,==type,==var,==begin,==repeat,==until,==for
-setlocal indentkeys+==program,==function,==procedure,==object,==private
-setlocal indentkeys+==record,==if,==else,==case
-
-if exists("*GetPascalIndent")
-	finish
-endif
-
-
-function! s:GetPrevNonCommentLineNum( line_num )
-
-	" Skip lines starting with a comment
-	let SKIP_LINES = '^\s*\(\((\*\)\|\(\*\ \)\|\(\*)\)\|{\|}\)'
-
-	let nline = a:line_num
-	while nline > 0
-		let nline = prevnonblank(nline-1)
-		if getline(nline) !~? SKIP_LINES
-			break
-		endif
-	endwhile
-
-	return nline
-endfunction
-
-
-function! GetPascalIndent( line_num )
-	" Line 0 always goes at column 0
-	if a:line_num == 0
-		return 0
-	endif
-
-	let this_codeline = getline( a:line_num )
-
-	" If in the middle of a three-part comment
-	if this_codeline =~ '^\s*\*'
-		return indent( a:line_num )
-	endif
-
-	let prev_codeline_num = s:GetPrevNonCommentLineNum( a:line_num )
-	let prev_codeline = getline( prev_codeline_num )
-	let indnt = indent( prev_codeline_num )
-
-	" Compiler directives should always go in column zero.
-	if this_codeline =~ '^\s*{\(\$IFDEF\|\$ELSE\|\$ENDIF\)'
-		return 0
-	endif
-
-	" These items have nothing before or after (not even a comment), and
-	" go on column 0. Make sure that the ^\s* is followed by \( to make
-	" ORs work properly, and not include the start of line (this must
-	" always appear).
-	" The bracketed expression with the underline is a routine
-	" separator. This is one case where we do indent comment lines.
-	if this_codeline =~ '^\s*\((\*\ _\+\ \*)\|\<\(const\|var\)\>\)$'
-		return 0
-	endif
-
-	" These items may have text after them, and go on column 0 (in most
-	" cases). The problem is that "function" and "procedure" keywords
-	" should be indented if within a class declaration.
-	if this_codeline =~ '^\s*\<\(program\|type\|uses\|procedure\|function\)\>'
-		return 0
-	endif
-
-	" BEGIN
-	" If the begin does not come after "if", "for", or "else", then it
-	" goes in column 0
-	if this_codeline =~ '^\s*begin\>' && prev_codeline !~ '^\s*\<\(if\|for\|else\)\>'
-		return 0
-	endif
-
-	" These keywords are indented once only.
-	if this_codeline =~ '^\s*\<\(private\)\>'
-		return &shiftwidth
-	endif
-
-	" If the PREVIOUS LINE contained these items, the current line is
-	" always indented once.
-	if prev_codeline =~ '^\s*\<\(type\|uses\)\>'
-		return &shiftwidth
-	endif
-
-	" These keywords are indented once only. Possibly surrounded by
-	" other chars.
-	if this_codeline =~ '^.\+\<\(object\|record\)\>'
-		return &shiftwidth
-	endif
-
-	" If the previous line was indenting...
-	if prev_codeline =~ '^\s*\<\(for\|if\|case\|else\|end\ else\)\>'
-		" then indent.
-		let indnt = indnt + &shiftwidth
-		" BUT... if this is the start of a multistatement block then we
-		" need to align the begin with the previous line.
-		if this_codeline =~ '^\s*begin\>'
-			return indnt - &shiftwidth
-		endif
-
-		" We also need to keep the indentation level constant if the
-		" whole if-then statement was on one line.
-		if prev_codeline =~ '\.\+'
-			let indnt = indnt - &shiftwidth
-		endif
-	endif
-
-	" PREVIOUS-LINE BEGIN
-	" If the previous line was an indenting keyword then indent once...
-	if prev_codeline =~ '^\s*\<\(const\|var\|begin\|repeat\|private\)\>'
-		" But only if this is another var in a list.
-		if this_codeline !~ '^\s*var\>'
-			return indnt + &shiftwidth
-		endif
-	endif
-
-	" PREVIOUS-LINE BEGIN
-	" Indent code after a case statement begin
-	if prev_codeline =~ '\:\ begin\>'
-		return indnt + &shiftwidth
-	endif
-
-	" These words may have text before them on the line (hence the .*)
-	" but are followed by nothing. Always indent once only.
-	if prev_codeline =~ '^\(.*\|\s*\)\<\(object\|record\)\>$'
-		return indnt + &shiftwidth
-	endif
-
-	" If we just closed a bracket that started on a previous line, then
-	" unindent. But don't return yet -- we need to check for further
-	" unindentation (for end/until/else)
-	if prev_codeline =~ '^[^(]*[^*])'
-		let indnt = indnt - &shiftwidth
-	endif
-
-	" At the end of a block, we have to unindent both the current line
-	" (the "end" for instance) and the newly-created line.
-	if this_codeline =~ '^\s*\<\(end\|until\|else\)\>'
-		return indnt - &shiftwidth
-	endif
-
-	" If we have opened a bracket and it continues over one line,
-	" then indent once.
-	"
-	" RE = an opening bracket followed by any amount of anything other
-	" than a closing bracket and then the end-of-line.
-	"
-	" If we didn't include the end of line, this RE would match even
-	" closed brackets, since it would match everything up to the closing
-	" bracket.
-	"
-	" This test isn't clever enough to handle brackets inside strings or
-	" comments.
-	if prev_codeline =~ '([^*]\=[^)]*$'
-		return indnt + &shiftwidth
-	endif
-
-	return indnt
-endfunction
-
diff --git a/share/vim/vim73/indent/perl.vim b/share/vim/vim73/indent/perl.vim
deleted file mode 100644
index 1fbc4ded..00000000
--- a/share/vim/vim73/indent/perl.vim
+++ /dev/null
@@ -1,180 +0,0 @@
-" Vim indent file
-" Language:     Perl 5
-" Author:       Andy Lester 
-" URL:          http://github.com/petdance/vim-perl/tree/master
-" Last Change:  June 3, 2009
-
-" Suggestions and improvements by :
-"   Aaron J. Sherman (use syntax for hints)
-"   Artem Chuprina (play nice with folding)
-
-" TODO things that are not or not properly indented (yet) :
-" - Continued statements
-"     print "foo",
-"	"bar";
-"     print "foo"
-"	if bar();
-" - Multiline regular expressions (m//x)
-" (The following probably needs modifying the perl syntax file)
-" - qw() lists
-" - Heredocs with terminators that don't match \I\i*
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-    finish
-endif
-let b:did_indent = 1
-
-" Is syntax highlighting active ?
-let b:indent_use_syntax = has("syntax")
-
-setlocal indentexpr=GetPerlIndent()
-setlocal indentkeys+=0=,0),0],0=or,0=and
-if !b:indent_use_syntax
-    setlocal indentkeys+=0=EO
-endif
-
-" Only define the function once.
-if exists("*GetPerlIndent")
-    finish
-endif
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-function GetPerlIndent()
-
-    " Get the line to be indented
-    let cline = getline(v:lnum)
-
-    " Indent POD markers to column 0
-    if cline =~ '^\s*=\L\@!'
-        return 0
-    endif
-
-    " Don't reindent coments on first column
-    if cline =~ '^#.'
-        return 0
-    endif
-
-    " Get current syntax item at the line's first char
-    let csynid = ''
-    if b:indent_use_syntax
-        let csynid = synIDattr(synID(v:lnum,1,0),"name")
-    endif
-
-    " Don't reindent POD and heredocs
-    if csynid == "perlPOD" || csynid == "perlHereDoc" || csynid =~ "^pod"
-        return indent(v:lnum)
-    endif
-
-    " Indent end-of-heredocs markers to column 0
-    if b:indent_use_syntax
-        " Assumes that an end-of-heredoc marker matches \I\i* to avoid
-        " confusion with other types of strings
-        if csynid == "perlStringStartEnd" && cline =~ '^\I\i*$'
-            return 0
-        endif
-    else
-        " Without syntax hints, assume that end-of-heredocs markers begin with EO
-        if cline =~ '^\s*EO'
-            return 0
-        endif
-    endif
-
-    " Now get the indent of the previous perl line.
-
-    " Find a non-blank line above the current line.
-    let lnum = prevnonblank(v:lnum - 1)
-    " Hit the start of the file, use zero indent.
-    if lnum == 0
-        return 0
-    endif
-    let line = getline(lnum)
-    let ind = indent(lnum)
-    " Skip heredocs, POD, and comments on 1st column
-    if b:indent_use_syntax
-        let skippin = 2
-        while skippin
-            let synid = synIDattr(synID(lnum,1,0),"name")
-            if (synid == "perlStringStartEnd" && line =~ '^\I\i*$')
-                        \ || (skippin != 2 && synid == "perlPOD")
-                        \ || (skippin != 2 && synid == "perlHereDoc")
-                        \ || synid == "perlComment"
-                        \ || synid =~ "^pod"
-                let lnum = prevnonblank(lnum - 1)
-                if lnum == 0
-                    return 0
-                endif
-                let line = getline(lnum)
-                let ind = indent(lnum)
-                let skippin = 1
-            else
-                let skippin = 0
-            endif
-        endwhile
-    else
-        if line =~ "^EO"
-            let lnum = search("<<[\"']\\=EO", "bW")
-            let line = getline(lnum)
-            let ind = indent(lnum)
-        endif
-    endif
-
-    " Indent blocks enclosed by {}, (), or []
-    if b:indent_use_syntax
-        " Find a real opening brace
-        let bracepos = match(line, '[(){}\[\]]', matchend(line, '^\s*[)}\]]'))
-        while bracepos != -1
-            let synid = synIDattr(synID(lnum, bracepos + 1, 0), "name")
-            " If the brace is highlighted in one of those groups, indent it.
-            " 'perlHereDoc' is here only to handle the case '&foo(<'
-        if line !~ '^\s*\(or\|and\)\>'
-            let ind = ind + &sw
-        endif
-    elseif line =~ '^\s*\(or\|and\)\>'
-        let ind = ind - &sw
-    endif
-
-    return ind
-
-endfunction
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
-
-" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
diff --git a/share/vim/vim73/indent/perl6.vim b/share/vim/vim73/indent/perl6.vim
deleted file mode 100644
index 75159e3a..00000000
--- a/share/vim/vim73/indent/perl6.vim
+++ /dev/null
@@ -1,136 +0,0 @@
-" Vim indent file
-" Language:     Perl 6
-" Maintainer:   Andy Lester 
-" URL:          http://github.com/petdance/vim-perl/tree/master
-" Last Change:  2009-07-04
-" Contributors: Andy Lester 
-"               Hinrik Örn Sigurðsson 
-"
-" Adapted from Perl indent file by Rafael Garcia-Suarez 
-
-" Suggestions and improvements by :
-"   Aaron J. Sherman (use syntax for hints)
-"   Artem Chuprina (play nice with folding)
-" TODO:
-" This file still relies on stuff from the Perl 5 syntax file, which Perl 6
-" does not use.
-"
-" Things that are not or not properly indented (yet) :
-" - Continued statements
-"     print "foo",
-"       "bar";
-"     print "foo"
-"       if bar();
-" - Multiline regular expressions (m//x)
-" (The following probably needs modifying the perl syntax file)
-" - qw() lists
-" - Heredocs with terminators that don't match \I\i*
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-    finish
-endif
-let b:did_indent = 1
-
-" Is syntax highlighting active ?
-let b:indent_use_syntax = has("syntax")
-
-setlocal indentexpr=GetPerl6Indent()
-
-" we reset it first because the Perl 5 indent file might have been loaded due
-" to a .pl/pm file extension, and indent files don't clean up afterwards
-setlocal indentkeys&
-
-setlocal indentkeys+=0=,0),0],0>,0»,0=or,0=and
-if !b:indent_use_syntax
-    setlocal indentkeys+=0=EO
-endif
-
-" Only define the function once.
-if exists("*GetPerl6Indent")
-    finish
-endif
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-function GetPerl6Indent()
-
-    " Get the line to be indented
-    let cline = getline(v:lnum)
-
-    " Indent POD markers to column 0
-    if cline =~ '^\s*=\L\@!'
-        return 0
-    endif
-
-    " Don't reindent coments on first column
-    if cline =~ '^#'
-        return 0
-    endif
-
-    " Get current syntax item at the line's first char
-    let csynid = ''
-    if b:indent_use_syntax
-        let csynid = synIDattr(synID(v:lnum,1,0),"name")
-    endif
-
-    " Don't reindent POD and heredocs
-    if csynid =~ "^p6Pod"
-        return indent(v:lnum)
-    endif
-
-
-    " Now get the indent of the previous perl line.
-
-    " Find a non-blank line above the current line.
-    let lnum = prevnonblank(v:lnum - 1)
-    " Hit the start of the file, use zero indent.
-    if lnum == 0
-        return 0
-    endif
-    let line = getline(lnum)
-    let ind = indent(lnum)
-    " Skip heredocs, POD, and comments on 1st column
-    if b:indent_use_syntax
-        let skippin = 2
-        while skippin
-            let synid = synIDattr(synID(lnum,1,0),"name")
-            if (synid =~ "^p6Pod" || synid =~ "p6Comment")
-                let lnum = prevnonblank(lnum - 1)
-                if lnum == 0
-                    return 0
-                endif
-                let line = getline(lnum)
-                let ind = indent(lnum)
-                let skippin = 1
-            else
-                let skippin = 0
-            endif
-        endwhile
-    endif
-
-        if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$'
-            let ind = ind + &sw
-        endif
-        if cline =~ '^\s*[)}\]»>]'
-            let ind = ind - &sw
-        endif
-
-    " Indent lines that begin with 'or' or 'and'
-    if cline =~ '^\s*\(or\|and\)\>'
-        if line !~ '^\s*\(or\|and\)\>'
-            let ind = ind + &sw
-        endif
-    elseif line =~ '^\s*\(or\|and\)\>'
-        let ind = ind - &sw
-    endif
-
-    return ind
-
-endfunction
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
-
-" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
diff --git a/share/vim/vim73/indent/php.vim b/share/vim/vim73/indent/php.vim
deleted file mode 100644
index bc196ed3..00000000
--- a/share/vim/vim73/indent/php.vim
+++ /dev/null
@@ -1,733 +0,0 @@
-" Vim indent file
-" Language:	PHP
-" Author:	John Wellesz 
-" URL:		http://www.2072productions.com/vim/indent/php.vim
-" Last Change:	2010 Jully 26th
-" Newsletter:	http://www.2072productions.com/?to=php-indent-for-vim-newsletter.php
-" Version:	1.33
-"
-"
-"  If you find a bug, please report it on GitHub:
-"	http://github.com/2072/PHP-Indenting-for-VIm/issues
-"  with an example of code that breaks the algorithm.
-"
-"
-"	Thanks a lot for using this script.
-"
-"
-" NOTE: This script must be used with PHP syntax ON and with the php syntax
-"	script by Lutz Eymers (http://www.ipdienste.net/data/php.vim ) or with the
-"	script by Peter Hodge (http://www.vim.org/scripts/script.php?script_id=1571 )
-"	the later is bunbdled by default with Vim 7.
-"
-"
-"	In the case you have syntax errors in your script such as HereDoc end
-"	identifiers not at col 1 you'll have to indent your file 2 times (This
-"	script will automatically put HereDoc end identifiers at col 1 if
-"	they are followed by a ';').
-"
-"
-" NOTE: If you are editing files in Unix file format and that (by accident)
-"	there are '\r' before new lines, this script won't be able to proceed
-"	correctly and will make many mistakes because it won't be able to match
-"	'\s*$' correctly.
-"	So you have to remove those useless characters first with a command like:
-"
-"	:%s /\r$//g
-"
-"	or simply 'let' the option PHP_removeCRwhenUnix to 1 and the script will
-"	silently remove them when VIM load this script (at each bufread).
-"
-" Options: See :help php-indent for available options.
-
-
-if exists("b:did_indent")
-    finish
-endif
-let b:did_indent = 1
-
-
-let php_sync_method = 0
-
-
-if exists("PHP_default_indenting")
-    let b:PHP_default_indenting = PHP_default_indenting * &sw
-else
-    let b:PHP_default_indenting = 0
-endif
-
-if exists("PHP_BracesAtCodeLevel")
-    let b:PHP_BracesAtCodeLevel = PHP_BracesAtCodeLevel
-else
-    let b:PHP_BracesAtCodeLevel = 0
-endif
-
-
-if exists("PHP_autoformatcomment")
-    let b:PHP_autoformatcomment = PHP_autoformatcomment
-else
-    let b:PHP_autoformatcomment = 1
-endif
-
-if exists("PHP_outdentphpescape")
-    let b:PHP_outdentphpescape = PHP_outdentphpescape
-else
-    let b:PHP_outdentphpescape = 1
-endif
-
-
-if exists("PHP_vintage_case_default_indent") && PHP_vintage_case_default_indent
-    let b:PHP_vintage_case_default_indent = 1
-else
-    let b:PHP_vintage_case_default_indent = 0
-endif
-
-
-
-let b:PHP_lastindented = 0
-let b:PHP_indentbeforelast = 0
-let b:PHP_indentinghuge = 0
-let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
-let b:PHP_LastIndentedWasComment = 0
-let b:PHP_InsideMultilineComment = 0
-let b:InPHPcode = 0
-let b:InPHPcode_checked = 0
-let b:InPHPcode_and_script = 0
-let b:InPHPcode_tofind = ""
-let b:PHP_oldchangetick = b:changedtick
-let b:UserIsTypingComment = 0
-let b:optionsset = 0
-
-setlocal nosmartindent
-setlocal noautoindent
-setlocal nocindent
-setlocal nolisp
-
-setlocal indentexpr=GetPhpIndent()
-setlocal indentkeys=0{,0},0),:,!^F,o,O,e,*,=?>,=\)\@!\|]*>\%(.*<\/script>\)\@!'
-
-
-function! GetLastRealCodeLNum(startline) " {{{
-
-    let lnum = a:startline
-
-    if b:GetLastRealCodeLNum_ADD && b:GetLastRealCodeLNum_ADD == lnum + 1
-	let lnum = b:GetLastRealCodeLNum_ADD
-    endif
-
-    let old_lnum = lnum
-
-    while lnum > 1
-	let lnum = prevnonblank(lnum)
-	let lastline = getline(lnum)
-
-	if b:InPHPcode_and_script && lastline =~ '?>\s*$'
-	    let lnum = lnum - 1
-	elseif lastline =~ '^\s*?>.*.*\)\@'
-
-	    while lastline !~ '\(' && lnum > 1
-		let lnum = lnum - 1
-		let lastline = getline(lnum)
-	    endwhile
-	    if lastline =~ '^\s*?>'
-		let lnum = lnum - 1
-	    else
-		break
-	    endif
-
-
-	elseif lastline =~? '^\a\w*;\=$' && lastline !~? s:notPhpHereDoc
-	    let tofind=substitute( lastline, '\(\a\w*\);\=', '<<<''\\=\1''\\=$', '')
-	    while getline(lnum) !~? tofind && lnum > 1
-		let lnum = lnum - 1
-	    endwhile
-	else
-	    break
-	endif
-    endwhile
-
-    if lnum==1 && getline(lnum) !~ ''
-	let beforeelse = a:lnum
-    else
-	let beforeelse = GetLastRealCodeLNum(a:lnum - 1)
-    endif
-
-    if !s:level
-	let s:iftoskip = 0
-    endif
-
-    if getline(beforeelse) =~# '^\s*\%(}\s*\)\=else\%(\s*if\)\@!\>'
-	let s:iftoskip = s:iftoskip + 1
-    endif
-
-    if getline(beforeelse) =~ '^\s*}'
-	let beforeelse = FindOpenBracket(beforeelse)
-
-	if getline(beforeelse) =~ '^\s*{'
-	    let beforeelse = GetLastRealCodeLNum(beforeelse - 1)
-	endif
-    endif
-
-
-    if !s:iftoskip && a:StopAfterFirstPrevElse && getline(beforeelse) =~# '^\s*\%([}]\s*\)\=else\%(if\)\=\>'
-	return beforeelse
-    endif
-
-    if getline(beforeelse) !~# '^\s*if\>' && beforeelse>1 || s:iftoskip && beforeelse>1
-
-	if s:iftoskip && getline(beforeelse) =~# '^\s*if\>'
-	    let s:iftoskip = s:iftoskip - 1
-	endif
-
-	let s:level =  s:level + 1
-	let beforeelse = FindTheIfOfAnElse(beforeelse, a:StopAfterFirstPrevElse)
-    endif
-
-    return beforeelse
-
-endfunction " }}}
-
-let s:defaultORcase = '^\s*\%(default\|case\).*:'
-
-function! FindTheSwitchIndent (lnum) " {{{
-
-
-    let test = GetLastRealCodeLNum(a:lnum - 1)
-
-    if test <= 1
-	return indent(1) - &sw * b:PHP_vintage_case_default_indent
-    end
-
-    if getline(test) =~ '^\s*}'
-	let test = FindOpenBracket(test)
-
-	if getline(test) =~ '^\s*{'
-	    let test = GetLastRealCodeLNum(GetLastRealCodeLNum(test - 1) - 1)
-	endif
-    endif
-
-    if getline(test) =~# '^\s*switch\>'
-	return indent(test)
-    elseif getline(test) =~# s:defaultORcase
-	return indent(test) - &sw * b:PHP_vintage_case_default_indent
-    else
-	return FindTheSwitchIndent(test)
-    endif
-
-endfunction "}}}
-
-
-function! IslinePHP (lnum, tofind) " {{{
-    let cline = getline(a:lnum)
-
-    if a:tofind==""
-	let tofind = "^\\s*[\"']*\\s*\\zs\\S"
-    else
-	let tofind = a:tofind
-    endif
-
-    let tofind = tofind . '\c'
-
-    let coltotest = match (cline, tofind) + 1
-
-    let synname = synIDattr(synID(a:lnum, coltotest, 0), "name")
-
-    if synname =~ '^php' || synname=="Delimiter" || synname =~? '^javaScript'
-	return synname
-    else
-	return ""
-    endif
-endfunction " }}}
-
-let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|else\)'
-let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|else\>\|while\>\|switch\>\|case\>\|default\>\|for\%(each\)\=\>\|declare\>\|class\>\|interface\>\|abstract\>\|try\>\|catch\>\)'
-
-let s:autoresetoptions = 0
-if ! s:autoresetoptions
-    let s:autoresetoptions = 1
-endif
-
-function! ResetPhpOptions()
-    if ! b:optionsset && &filetype == "php"
-	if b:PHP_autoformatcomment
-
-	    setlocal comments=s1:/*,mb:*,ex:*/,://,:#
-
-	    setlocal formatoptions-=t
-	    setlocal formatoptions+=q
-	    setlocal formatoptions+=r
-	    setlocal formatoptions+=o
-	    setlocal formatoptions+=w
-	    setlocal formatoptions+=c
-	    setlocal formatoptions+=b
-	endif
-	let b:optionsset = 1
-    endif
-endfunc
-
-call ResetPhpOptions()
-
-function! GetPhpIndent()
-
-    let b:GetLastRealCodeLNum_ADD = 0
-
-    let UserIsEditing=0
-    if	b:PHP_oldchangetick != b:changedtick
-	let b:PHP_oldchangetick = b:changedtick
-	let UserIsEditing=1
-    endif
-
-    if b:PHP_default_indenting
-	let b:PHP_default_indenting = g:PHP_default_indenting * &sw
-    endif
-
-    let cline = getline(v:lnum)
-
-    if !b:PHP_indentinghuge && b:PHP_lastindented > b:PHP_indentbeforelast
-	if b:PHP_indentbeforelast
-	    let b:PHP_indentinghuge = 1
-	    echom 'Large indenting detected, speed optimizations engaged (v1.33)'
-	endif
-	let b:PHP_indentbeforelast = b:PHP_lastindented
-    endif
-
-    if b:InPHPcode_checked && prevnonblank(v:lnum - 1) != b:PHP_lastindented
-	if b:PHP_indentinghuge
-	    echom 'Large indenting deactivated'
-	    let b:PHP_indentinghuge = 0
-	    let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
-	endif
-	let b:PHP_lastindented = v:lnum
-	let b:PHP_LastIndentedWasComment=0
-	let b:PHP_InsideMultilineComment=0
-	let b:PHP_indentbeforelast = 0
-
-	let b:InPHPcode = 0
-	let b:InPHPcode_checked = 0
-	let b:InPHPcode_and_script = 0
-	let b:InPHPcode_tofind = ""
-
-    elseif v:lnum > b:PHP_lastindented
-	let real_PHP_lastindented = b:PHP_lastindented
-	let b:PHP_lastindented = v:lnum
-    endif
-
-
-    if !b:InPHPcode_checked " {{{ One time check
-	let b:InPHPcode_checked = 1
-
-	let synname = ""
-	if cline !~ ''
-	    let synname = IslinePHP (prevnonblank(v:lnum), "")
-	endif
-
-	if synname!=""
-	    if synname != "phpHereDoc" && synname != "phpHereDocDelimiter"
-		let b:InPHPcode = 1
-		let b:InPHPcode_tofind = ""
-
-		if synname =~# "^phpComment"
-		    let b:UserIsTypingComment = 1
-		else
-		    let b:UserIsTypingComment = 0
-		endif
-
-		if synname =~? '^javaScript'
-		    let b:InPHPcode_and_script = 1
-		endif
-
-	    else
-		let b:InPHPcode = 0
-		let b:UserIsTypingComment = 0
-
-		let lnum = v:lnum - 1
-		while getline(lnum) !~? '<<<''\=\a\w*''\=$' && lnum > 1
-		    let lnum = lnum - 1
-		endwhile
-
-		let b:InPHPcode_tofind = substitute( getline(lnum), '^.*<<<''\=\(\a\w*\)''\=$', '^\\s*\1;\\=$', '')
-	    endif
-	else
-	    let b:InPHPcode = 0
-	    let b:UserIsTypingComment = 0
-	    let b:InPHPcode_tofind = '\)\@!\|'
-	endif
-    endif "!b:InPHPcode_checked }}}
-
-
-    " Test if we are indenting PHP code {{{
-    let lnum = prevnonblank(v:lnum - 1)
-    let last_line = getline(lnum)
-
-    if b:InPHPcode_tofind!=""
-	if cline =~? b:InPHPcode_tofind
-	    let b:InPHPcode = 1
-	    let b:InPHPcode_tofind = ""
-	    let b:UserIsTypingComment = 0
-	    if cline =~ '\*/'
-		call cursor(v:lnum, 1)
-		if cline !~ '^\*/'
-		    call search('\*/', 'W')
-		endif
-		let lnum = searchpair('/\*', '', '\*/', s:searchpairflags, 'Skippmatch2()')
-
-		let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
-
-		let b:PHP_LastIndentedWasComment = 0
-
-		if cline =~ '^\s*\*/'
-		    return indent(lnum) + 1
-		else
-		    return indent(lnum)
-		endif
-
-	    elseif cline =~? ''
-		let b:InPHPcode_and_script = 1
-		let b:GetLastRealCodeLNum_ADD = v:lnum
-	    endif
-	endif
-    endif
-
-    if b:InPHPcode
-
-	if !b:InPHPcode_and_script && last_line =~ '\%(\%(.*')=~"Delimiter"
-	    if cline !~? s:PHP_startindenttag
-		let b:InPHPcode = 0
-		let b:InPHPcode_tofind = s:PHP_startindenttag
-	    elseif cline =~? ''
-		let b:InPHPcode_and_script = 1
-	    endif
-
-	elseif last_line =~? '<<<''\=\a\w*''\=$'
-	    let b:InPHPcode = 0
-	    let b:InPHPcode_tofind = substitute( last_line, '^.*<<<''\=\(\a\w*\)''\=$', '^\\s*\1;\\=$', '')
-
-	elseif !UserIsEditing && cline =~ '^\s*/\*\%(.*\*/\)\@!' && getline(v:lnum + 1) !~ '^\s*\*'
-	    let b:InPHPcode = 0
-	    let b:InPHPcode_tofind = '\*/'
-
-	elseif cline =~? '^\s*'
-	    let b:InPHPcode = 0
-	    let b:InPHPcode_tofind = s:PHP_startindenttag
-	endif
-    endif " }}}
-
-
-    if !b:InPHPcode && !b:InPHPcode_and_script
-	return -1
-    endif
-
-    " Indent successive // or # comment the same way the first is {{{
-    if cline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)'
-	if b:PHP_LastIndentedWasComment == 1
-	    return indent(real_PHP_lastindented)
-	endif
-	let b:PHP_LastIndentedWasComment = 1
-    else
-	let b:PHP_LastIndentedWasComment = 0
-    endif " }}}
-
-    " Indent multiline /* comments correctly {{{
-
-    if b:PHP_InsideMultilineComment || b:UserIsTypingComment
-	if cline =~ '^\s*\*\%(\/\)\@!'
-	    if last_line =~ '^\s*/\*'
-		return indent(lnum) + 1
-	    else
-		return indent(lnum)
-	    endif
-	else
-	    let b:PHP_InsideMultilineComment = 0
-	endif
-    endif
-
-    if !b:PHP_InsideMultilineComment && cline =~ '^\s*/\*' && cline !~ '\*/\s*$'
-	if getline(v:lnum + 1) !~ '^\s*\*'
-	    return -1
-	endif
-	let b:PHP_InsideMultilineComment = 1
-    endif " }}}
-
-
-    " Things always indented at col 1 (PHP delimiter: , Heredoc end) {{{
-    if cline =~# '^\s*' && b:PHP_outdentphpescape
-	return 0
-    endif
-
-    if	cline =~ '^\s*?>' && cline !~# '\)\=\|<<<''\=\a\w*''\=$\|^\s*}\)'.endline
-
-    let unstated   = '\%(^\s*'.s:blockstart.'.*)\|\%(//.*\)\@\)'.endline
-
-    if ind != b:PHP_default_indenting && cline =~# '^\s*else\%(if\)\=\>'
-	let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
-	return indent(FindTheIfOfAnElse(v:lnum, 1))
-    elseif cline =~# s:defaultORcase
-	return FindTheSwitchIndent(v:lnum) + &sw * b:PHP_vintage_case_default_indent
-    elseif cline =~ '^\s*)\=\s*{'
-	let previous_line = last_line
-	let last_line_num = lnum
-
-	while last_line_num > 1
-
-	    if previous_line =~ '^\s*\%(' . s:blockstart . '\|\%([a-zA-Z]\s*\)*function\)'
-
-		let ind = indent(last_line_num)
-
-		if  b:PHP_BracesAtCodeLevel
-		    let ind = ind + &sw
-		endif
-
-		return ind
-	    endif
-
-	    let last_line_num = last_line_num - 1
-	    let previous_line = getline(last_line_num)
-	endwhile
-
-    elseif last_line =~# unstated && cline !~ '^\s*);\='.endline
-	let ind = ind + &sw
-	return ind
-
-    elseif (ind != b:PHP_default_indenting || last_line =~ '^)' ) && last_line =~ terminated
-	let previous_line = last_line
-	let last_line_num = lnum
-	let LastLineClosed = 1
-
-	while 1
-	    if previous_line =~ '^\s*}'
-		let last_line_num = FindOpenBracket(last_line_num)
-
-		if getline(last_line_num) =~ '^\s*{'
-		    let last_line_num = GetLastRealCodeLNum(last_line_num - 1)
-		endif
-
-		let previous_line = getline(last_line_num)
-
-		continue
-	    else
-
-		if getline(last_line_num) =~# '^\s*else\%(if\)\=\>'
-		    let last_line_num = FindTheIfOfAnElse(last_line_num, 0)
-		    continue
-		endif
-
-
-		let last_match = last_line_num
-
-		let one_ahead_indent = indent(last_line_num)
-		let last_line_num = GetLastRealCodeLNum(last_line_num - 1)
-		let two_ahead_indent = indent(last_line_num)
-		let after_previous_line = previous_line
-		let previous_line = getline(last_line_num)
-
-
-		if previous_line =~# s:defaultORcase.'\|{'.endline
-		    break
-		endif
-
-		if after_previous_line=~# '^\s*'.s:blockstart.'.*)'.endline && previous_line =~# '[;}]'.endline
-		    break
-		endif
-
-		if one_ahead_indent == two_ahead_indent || last_line_num < 1
-		    if previous_line =~# '\%(;\|^\s*}\)'.endline || last_line_num < 1
-			break
-		    endif
-		endif
-	    endif
-	endwhile
-
-	if indent(last_match) != ind
-	    let ind = indent(last_match)
-	    let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
-
-	    return ind
-	endif
-    endif
-
-    let plinnum = GetLastRealCodeLNum(lnum - 1)
-    let AntepenultimateLine = getline(plinnum)
-
-    let last_line = substitute(last_line,"\\(//\\|#\\)\\(\\(\\([^\"']*\\([\"']\\)[^\"']*\\5\\)\\+[^\"']*$\\)\\|\\([^\"']*$\\)\\)",'','')
-
-
-    if ind == b:PHP_default_indenting
-	if last_line =~ terminated
-	    let LastLineClosed = 1
-	endif
-    endif
-
-    if !LastLineClosed
-
-
-	if last_line =~# '[{(]'.endline || last_line =~? '\h\w*\s*(.*,$' && AntepenultimateLine !~ '[,(]'.endline
-
-	    if !b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{'
-		let ind = ind + &sw
-	    endif
-
-	    if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1
-		let b:PHP_CurrentIndentLevel = ind
-
-		return ind
-	    endif
-
-	elseif last_line =~ '\S\+\s*),'.endline
-	    call cursor(lnum, 1)
-	    call search('),'.endline, 'W')
-	    let openedparent = searchpair('(', '', ')', 'bW', 'Skippmatch()')
-	    if openedparent != lnum
-		let ind = indent(openedparent)
-	    endif
-	
-	elseif last_line =~ '^\s*'.s:blockstart
-	    let ind = ind + &sw
-
-
-
-	elseif AntepenultimateLine =~ '\%(;\%(\s*?>\)\=\|<<<''\=\a\w*''\=$\|^\s*}\|{\)'.endline . '\|' . s:defaultORcase
-	    let ind = ind + &sw
-	endif
-
-    endif
-
-    if cline =~  '^\s*);\='
-	let ind = ind - &sw
-    endif
-
-    let b:PHP_CurrentIndentLevel = ind
-    return ind
-endfunction
diff --git a/share/vim/vim73/indent/python.vim b/share/vim/vim73/indent/python.vim
deleted file mode 100644
index 0c04e811..00000000
--- a/share/vim/vim73/indent/python.vim
+++ /dev/null
@@ -1,193 +0,0 @@
-" Vim indent file
-" Language:		Python
-" Maintainer:		Bram Moolenaar 
-" Original Author:	David Bustos 
-" Last Change:		2006 Jun 18
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-" Some preliminary settings
-setlocal nolisp		" Make sure lisp indenting doesn't supersede us
-setlocal autoindent	" indentexpr isn't much help otherwise
-
-setlocal indentexpr=GetPythonIndent(v:lnum)
-setlocal indentkeys+=<:>,=elif,=except
-
-" Only define the function once.
-if exists("*GetPythonIndent")
-  finish
-endif
-
-" Come here when loading the script the first time.
-
-let s:maxoff = 50	" maximum number of lines to look backwards for ()
-
-function GetPythonIndent(lnum)
-
-  " If this line is explicitly joined: If the previous line was also joined,
-  " line it up with that one, otherwise add two 'shiftwidth'
-  if getline(a:lnum - 1) =~ '\\$'
-    if a:lnum > 1 && getline(a:lnum - 2) =~ '\\$'
-      return indent(a:lnum - 1)
-    endif
-    return indent(a:lnum - 1) + (exists("g:pyindent_continue") ? eval(g:pyindent_continue) : (&sw * 2))
-  endif
-
-  " If the start of the line is in a string don't change the indent.
-  if has('syntax_items')
-	\ && synIDattr(synID(a:lnum, 1, 1), "name") =~ "String$"
-    return -1
-  endif
-
-  " Search backwards for the previous non-empty line.
-  let plnum = prevnonblank(v:lnum - 1)
-
-  if plnum == 0
-    " This is the first non-empty line, use zero indent.
-    return 0
-  endif
-
-  " If the previous line is inside parenthesis, use the indent of the starting
-  " line.
-  " Trick: use the non-existing "dummy" variable to break out of the loop when
-  " going too far back.
-  call cursor(plnum, 1)
-  let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW',
-	  \ "line('.') < " . (plnum - s:maxoff) . " ? dummy :"
-	  \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
-	  \ . " =~ '\\(Comment\\|String\\)$'")
-  if parlnum > 0
-    let plindent = indent(parlnum)
-    let plnumstart = parlnum
-  else
-    let plindent = indent(plnum)
-    let plnumstart = plnum
-  endif
-
-
-  " When inside parenthesis: If at the first line below the parenthesis add
-  " two 'shiftwidth', otherwise same as previous line.
-  " i = (a
-  "       + b
-  "       + c)
-  call cursor(a:lnum, 1)
-  let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
-	  \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
-	  \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
-	  \ . " =~ '\\(Comment\\|String\\)$'")
-  if p > 0
-    if p == plnum
-      " When the start is inside parenthesis, only indent one 'shiftwidth'.
-      let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
-	  \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
-	  \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
-	  \ . " =~ '\\(Comment\\|String\\)$'")
-      if pp > 0
-	return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : &sw)
-      endif
-      return indent(plnum) + (exists("g:pyindent_open_paren") ? eval(g:pyindent_open_paren) : (&sw * 2))
-    endif
-    if plnumstart == p
-      return indent(plnum)
-    endif
-    return plindent
-  endif
-
-
-  " Get the line and remove a trailing comment.
-  " Use syntax highlighting attributes when possible.
-  let pline = getline(plnum)
-  let pline_len = strlen(pline)
-  if has('syntax_items')
-    " If the last character in the line is a comment, do a binary search for
-    " the start of the comment.  synID() is slow, a linear search would take
-    " too long on a long line.
-    if synIDattr(synID(plnum, pline_len, 1), "name") =~ "Comment$"
-      let min = 1
-      let max = pline_len
-      while min < max
-	let col = (min + max) / 2
-	if synIDattr(synID(plnum, col, 1), "name") =~ "Comment$"
-	  let max = col
-	else
-	  let min = col + 1
-	endif
-      endwhile
-      let pline = strpart(pline, 0, min - 1)
-    endif
-  else
-    let col = 0
-    while col < pline_len
-      if pline[col] == '#'
-	let pline = strpart(pline, 0, col)
-	break
-      endif
-      let col = col + 1
-    endwhile
-  endif
-
-  " If the previous line ended with a colon, indent this line
-  if pline =~ ':\s*$'
-    return plindent + &sw
-  endif
-
-  " If the previous line was a stop-execution statement...
-  if getline(plnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\)\>'
-    " See if the user has already dedented
-    if indent(a:lnum) > indent(plnum) - &sw
-      " If not, recommend one dedent
-      return indent(plnum) - &sw
-    endif
-    " Otherwise, trust the user
-    return -1
-  endif
-
-  " If the current line begins with a keyword that lines up with "try"
-  if getline(a:lnum) =~ '^\s*\(except\|finally\)\>'
-    let lnum = a:lnum - 1
-    while lnum >= 1
-      if getline(lnum) =~ '^\s*\(try\|except\)\>'
-	let ind = indent(lnum)
-	if ind >= indent(a:lnum)
-	  return -1	" indent is already less than this
-	endif
-	return ind	" line up with previous try or except
-      endif
-      let lnum = lnum - 1
-    endwhile
-    return -1		" no matching "try"!
-  endif
-
-  " If the current line begins with a header keyword, dedent
-  if getline(a:lnum) =~ '^\s*\(elif\|else\)\>'
-
-    " Unless the previous line was a one-liner
-    if getline(plnumstart) =~ '^\s*\(for\|if\|try\)\>'
-      return plindent
-    endif
-
-    " Or the user has already dedented
-    if indent(a:lnum) <= plindent - &sw
-      return -1
-    endif
-
-    return plindent - &sw
-  endif
-
-  " When after a () construct we probably want to go back to the start line.
-  " a = (b
-  "       + c)
-  " here
-  if parlnum > 0
-    return plindent
-  endif
-
-  return -1
-
-endfunction
-
-" vim:sw=2
diff --git a/share/vim/vim73/indent/rst.vim b/share/vim/vim73/indent/rst.vim
deleted file mode 100644
index f936c9b2..00000000
--- a/share/vim/vim73/indent/rst.vim
+++ /dev/null
@@ -1,53 +0,0 @@
-" Vim indent file
-" Language:         reStructuredText Documentation Format
-" Maintainer:       Nikolai Weibull 
-" Latest Revision:  2006-12-20
-
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-setlocal indentexpr=GetRSTIndent()
-setlocal indentkeys=!^F,o,O
-setlocal nosmartindent
-
-if exists("*GetRSTIndent")
-  finish
-endif
-
-function GetRSTIndent()
-  let lnum = prevnonblank(v:lnum - 1)
-  if lnum == 0
-    return 0
-  endif
-
-  let ind = indent(lnum)
-  let line = getline(lnum)
-
-  if line =~ '^\s*[-*+]\s'
-    let ind = ind + 2
-  elseif line =~ '^\s*\d\+.\s'
-    let ind = ind + matchend(substitute(line, '^\s*', '', ''), '\d\+.\s\+')
-  endif
-
-  let line = getline(v:lnum - 1)
-
-  if line =~ '^\s*$'
-    execute lnum
-    call search('^\s*\%([-*+]\s\|\d\+.\s\|\.\.\|$\)', 'bW')
-    let line = getline('.')
-    if line =~ '^\s*[-*+]'
-      let ind = ind - 2
-    elseif line =~ '^\s*\d\+\.\s'
-      let ind = ind - matchend(substitute(line, '^\s*', '', ''),
-            \ '\d\+\.\s\+')
-    elseif line =~ '^\s*\.\.'
-      let ind = ind - 3
-    else
-      let ind = ind
-    endif
-  endif
-
-  return ind
-endfunction
diff --git a/share/vim/vim73/indent/ruby.vim b/share/vim/vim73/indent/ruby.vim
deleted file mode 100644
index 04d13010..00000000
--- a/share/vim/vim73/indent/ruby.vim
+++ /dev/null
@@ -1,378 +0,0 @@
-" Vim indent file
-" Language:		Ruby
-" Maintainer:		Nikolai Weibull 
-" Last Change:		2009 Dec 17
-" URL:			http://vim-ruby.rubyforge.org
-" Anon CVS:		See above site
-" Release Coordinator:	Doug Kearns 
-
-" 0. Initialization {{{1
-" =================
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-setlocal nosmartindent
-
-" Now, set up our indentation expression and keys that trigger it.
-setlocal indentexpr=GetRubyIndent()
-setlocal indentkeys=0{,0},0),0],!^F,o,O,e
-setlocal indentkeys+==end,=elsif,=when,=ensure,=rescue,==begin,==end
-
-" Only define the function once.
-if exists("*GetRubyIndent")
-  finish
-endif
-
-let s:cpo_save = &cpo
-set cpo&vim
-
-" 1. Variables {{{1
-" ============
-
-" Regex of syntax group names that are or delimit string or are comments.
-let s:syng_strcom = '\'
-
-" Regex of syntax group names that are strings.
-let s:syng_string =
-      \ '\'
-
-" Regex of syntax group names that are strings or documentation.
-let s:syng_stringdoc =
-  \'\'
-
-" Expression used to check whether we should skip a match with searchpair().
-let s:skip_expr =
-      \ "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'"
-
-" Regex used for words that, at the start of a line, add a level of indent.
-let s:ruby_indent_keywords = '^\s*\zs\<\%(module\|class\|def\|if\|for' .
-      \ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure' .
-      \ '\|rescue\)\>' .
-      \ '\|\%([*+/,=-]\|<<\|>>\|:\s\)\s*\zs' .
-      \    '\<\%(if\|for\|while\|until\|case\|unless\|begin\)\>'
-
-" Regex used for words that, at the start of a line, remove a level of indent.
-let s:ruby_deindent_keywords =
-      \ '^\s*\zs\<\%(ensure\|else\|rescue\|elsif\|when\|end\)\>'
-
-" Regex that defines the start-match for the 'end' keyword.
-"let s:end_start_regex = '\%(^\|[^.]\)\<\%(module\|class\|def\|if\|for\|while\|until\|case\|unless\|begin\|do\)\>'
-" TODO: the do here should be restricted somewhat (only at end of line)?
-let s:end_start_regex = '^\s*\zs\<\%(module\|class\|def\|if\|for' .
-      \ '\|while\|until\|case\|unless\|begin\)\>' .
-      \ '\|\%([*+/,=-]\|<<\|>>\|:\s\)\s*\zs' .
-      \    '\<\%(if\|for\|while\|until\|case\|unless\|begin\)\>' .
-      \ '\|\'
-
-" Regex that defines the middle-match for the 'end' keyword.
-let s:end_middle_regex = '\<\%(ensure\|else\|\%(\%(^\|;\)\s*\)\@<=\\|when\|elsif\)\>'
-
-" Regex that defines the end-match for the 'end' keyword.
-let s:end_end_regex = '\%(^\|[^.:@$]\)\@<=\'
-
-" Expression used for searchpair() call for finding match for 'end' keyword.
-let s:end_skip_expr = s:skip_expr .
-      \ ' || (expand("") == "do"' .
-      \ ' && getline(".") =~ "^\\s*\\<\\(while\\|until\\|for\\)\\>")'
-
-" Regex that defines continuation lines, not including (, {, or [.
-let s:continuation_regex = '\%([\\*+/.,:]\|\%(<%\)\@\|{\)\s*\%(|\%([*@]\=\h\w*,\=\s*\)\%(,\s*[*@]\=\h\w*\)*|\)\=\s*\%(#.*\)\=$'
-
-" 2. Auxiliary Functions {{{1
-" ======================
-
-" Check if the character at lnum:col is inside a string, comment, or is ascii.
-function s:IsInStringOrComment(lnum, col)
-  return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_strcom
-endfunction
-
-" Check if the character at lnum:col is inside a string.
-function s:IsInString(lnum, col)
-  return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_string
-endfunction
-
-" Check if the character at lnum:col is inside a string or documentation.
-function s:IsInStringOrDocumentation(lnum, col)
-  return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_stringdoc
-endfunction
-
-" Find line above 'lnum' that isn't empty, in a comment, or in a string.
-function s:PrevNonBlankNonString(lnum)
-  let in_block = 0
-  let lnum = prevnonblank(a:lnum)
-  while lnum > 0
-    " Go in and out of blocks comments as necessary.
-    " If the line isn't empty (with opt. comment) or in a string, end search.
-    let line = getline(lnum)
-    if line =~ '^=begin$'
-      if in_block
-	let in_block = 0
-      else
-	break
-      endif
-    elseif !in_block && line =~ '^=end$'
-      let in_block = 1
-    elseif !in_block && line !~ '^\s*#.*$' && !(s:IsInStringOrComment(lnum, 1)
-	  \ && s:IsInStringOrComment(lnum, strlen(line)))
-      break
-    endif
-    let lnum = prevnonblank(lnum - 1)
-  endwhile
-  return lnum
-endfunction
-
-" Find line above 'lnum' that started the continuation 'lnum' may be part of.
-function s:GetMSL(lnum)
-  " Start on the line we're at and use its indent.
-  let msl = a:lnum
-  let lnum = s:PrevNonBlankNonString(a:lnum - 1)
-  while lnum > 0
-    " If we have a continuation line, or we're in a string, use line as MSL.
-    " Otherwise, terminate search as we have found our MSL already.
-    let line = getline(lnum)
-    let col = match(line, s:continuation_regex2) + 1
-    if (col > 0 && !s:IsInStringOrComment(lnum, col))
-	  \ || s:IsInString(lnum, strlen(line))
-      let msl = lnum
-    else
-      break
-    endif
-    let lnum = s:PrevNonBlankNonString(lnum - 1)
-  endwhile
-  return msl
-endfunction
-
-" Check if line 'lnum' has more opening brackets than closing ones.
-function s:LineHasOpeningBrackets(lnum)
-  let open_0 = 0
-  let open_2 = 0
-  let open_4 = 0
-  let line = getline(a:lnum)
-  let pos = match(line, '[][(){}]', 0)
-  while pos != -1
-    if !s:IsInStringOrComment(a:lnum, pos + 1)
-      let idx = stridx('(){}[]', line[pos])
-      if idx % 2 == 0
-	let open_{idx} = open_{idx} + 1
-      else
-	let open_{idx - 1} = open_{idx - 1} - 1
-      endif
-    endif
-    let pos = match(line, '[][(){}]', pos + 1)
-  endwhile
-  return (open_0 > 0) . (open_2 > 0) . (open_4 > 0)
-endfunction
-
-function s:Match(lnum, regex)
-  let col = match(getline(a:lnum), '\C'.a:regex) + 1
-  return col > 0 && !s:IsInStringOrComment(a:lnum, col) ? col : 0
-endfunction
-
-function s:MatchLast(lnum, regex)
-  let line = getline(a:lnum)
-  let col = match(line, '.*\zs' . a:regex)
-  while col != -1 && s:IsInStringOrComment(a:lnum, col)
-    let line = strpart(line, 0, col)
-    let col = match(line, '.*' . a:regex)
-  endwhile
-  return col + 1
-endfunction
-
-" 3. GetRubyIndent Function {{{1
-" =========================
-
-function GetRubyIndent()
-  " 3.1. Setup {{{2
-  " ----------
-
-  " Set up variables for restoring position in file.  Could use v:lnum here.
-  let vcol = col('.')
-
-  " 3.2. Work on the current line {{{2
-  " -----------------------------
-
-  " Get the current line.
-  let line = getline(v:lnum)
-  let ind = -1
-
-  " If we got a closing bracket on an empty line, find its match and indent
-  " according to it.  For parentheses we indent to its column - 1, for the
-  " others we indent to the containing line's MSL's level.  Return -1 if fail.
-  let col = matchend(line, '^\s*[]})]')
-  if col > 0 && !s:IsInStringOrComment(v:lnum, col)
-    call cursor(v:lnum, col)
-    let bs = strpart('(){}[]', stridx(')}]', line[col - 1]) * 2, 2)
-    if searchpair(escape(bs[0], '\['), '', bs[1], 'bW', s:skip_expr) > 0
-      if line[col-1]==')' && col('.') != col('$') - 1
-	let ind = virtcol('.')-1
-      else
-	let ind = indent(s:GetMSL(line('.')))
-      endif
-    endif
-    return ind
-  endif
-
-  " If we have a =begin or =end set indent to first column.
-  if match(line, '^\s*\%(=begin\|=end\)$') != -1
-    return 0
-  endif
-
-  " If we have a deindenting keyword, find its match and indent to its level.
-  " TODO: this is messy
-  if s:Match(v:lnum, s:ruby_deindent_keywords)
-    call cursor(v:lnum, 1)
-    if searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',
-	    \ s:end_skip_expr) > 0
-      let line = getline('.')
-      if strpart(line, 0, col('.') - 1) =~ '=\s*$' &&
-       \ strpart(line, col('.') - 1, 2) !~ 'do'
-	let ind = virtcol('.') - 1
-      else
-	let ind = indent('.')
-      endif
-    endif
-    return ind
-  endif
-
-  " If we are in a multi-line string or line-comment, don't do anything to it.
-  if s:IsInStringOrDocumentation(v:lnum, matchend(line, '^\s*') + 1)
-    return indent('.')
-  endif
-
-  " 3.3. Work on the previous line. {{{2
-  " -------------------------------
-
-  " Find a non-blank, non-multi-line string line above the current line.
-  let lnum = s:PrevNonBlankNonString(v:lnum - 1)
-
-  " If the line is empty and inside a string, use the previous line.
-  if line =~ '^\s*$' && lnum != prevnonblank(v:lnum - 1)
-    return indent(prevnonblank(v:lnum))
-  endif
-
-  " At the start of the file use zero indent.
-  if lnum == 0
-    return 0
-  endif
-
-  " Set up variables for current line.
-  let line = getline(lnum)
-  let ind = indent(lnum)
-
-  " If the previous line ended with a block opening, add a level of indent.
-  if s:Match(lnum, s:block_regex)
-    return indent(s:GetMSL(lnum)) + &sw
-  endif
-
-  " If the previous line contained an opening bracket, and we are still in it,
-  " add indent depending on the bracket type.
-  if line =~ '[[({]'
-    let counts = s:LineHasOpeningBrackets(lnum)
-    if counts[0] == '1' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
-      if col('.') + 1 == col('$')
-	return ind + &sw
-      else
-	return virtcol('.')
-      endif
-    elseif counts[1] == '1' || counts[2] == '1'
-      return ind + &sw
-    else
-      call cursor(v:lnum, vcol)
-    end
-  endif
-
-  " If the previous line ended with an "end", match that "end"s beginning's
-  " indent.
-  let col = s:Match(lnum, '\%(^\|[^.:@$]\)\\s*\%(#.*\)\=$')
-  if col > 0
-    call cursor(lnum, col)
-    if searchpair(s:end_start_regex, '', s:end_end_regex, 'bW',
-		\ s:end_skip_expr) > 0
-      let n = line('.')
-      let ind = indent('.')
-      let msl = s:GetMSL(n)
-      if msl != n
-	let ind = indent(msl)
-      end
-      return ind
-    endif
-  end
-
-  let col = s:Match(lnum, s:ruby_indent_keywords)
-  if col > 0
-    call cursor(lnum, col)
-    let ind = virtcol('.') - 1 + &sw
-"    let ind = indent(lnum) + &sw
-    " TODO: make this better (we need to count them) (or, if a searchpair
-    " fails, we know that something is lacking an end and thus we indent a
-    " level
-    if s:Match(lnum, s:end_end_regex)
-      let ind = indent('.')
-    endif
-    return ind
-  endif
-
-  " 3.4. Work on the MSL line. {{{2
-  " --------------------------
-
-  " Set up variables to use and search for MSL to the previous line.
-  let p_lnum = lnum
-  let lnum = s:GetMSL(lnum)
-
-  " If the previous line wasn't a MSL and is continuation return its indent.
-  " TODO: the || s:IsInString() thing worries me a bit.
-  if p_lnum != lnum
-    if s:Match(p_lnum,s:continuation_regex)||s:IsInString(p_lnum,strlen(line))
-      return ind
-    endif
-  endif
-
-  " Set up more variables, now that we know we wasn't continuation bound.
-  let line = getline(lnum)
-  let msl_ind = indent(lnum)
-
-  " If the MSL line had an indenting keyword in it, add a level of indent.
-  " TODO: this does not take into account contrived things such as
-  " module Foo; class Bar; end
-  if s:Match(lnum, s:ruby_indent_keywords)
-    let ind = msl_ind + &sw
-    if s:Match(lnum, s:end_end_regex)
-      let ind = ind - &sw
-    endif
-    return ind
-  endif
-
-  " If the previous line ended with [*+/.-=], indent one extra level.
-  if s:Match(lnum, s:continuation_regex)
-    if lnum == p_lnum
-      let ind = msl_ind + &sw
-    else
-      let ind = msl_ind
-    endif
-  endif
-
-  " }}}2
-
-  return ind
-endfunction
-
-" }}}1
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
-
-" vim:set sw=2 sts=2 ts=8 noet:
diff --git a/share/vim/vim73/indent/sass.vim b/share/vim/vim73/indent/sass.vim
deleted file mode 100644
index 4622f00f..00000000
--- a/share/vim/vim73/indent/sass.vim
+++ /dev/null
@@ -1,39 +0,0 @@
-" Vim indent file
-" Language:	Sass
-" Maintainer:	Tim Pope 
-" Last Change:	2010 May 21
-
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-setlocal autoindent sw=2 et
-setlocal indentexpr=GetSassIndent()
-setlocal indentkeys=o,O,*,<:>,!^F
-
-" Only define the function once.
-if exists("*GetSassIndent")
-  finish
-endif
-
-let s:property = '^\s*:\|^\s*[[:alnum:]-]\+\%(:\|\s*=\)'
-
-function! GetSassIndent()
-  let lnum = prevnonblank(v:lnum-1)
-  let line = substitute(getline(lnum),'\s\+$','','')
-  let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','')
-  let lastcol = strlen(line)
-  let line = substitute(line,'^\s\+','','')
-  let indent = indent(lnum)
-  let cindent = indent(v:lnum)
-  if line !~ s:property && cline =~ s:property
-    return indent + &sw
-  "elseif line =~ s:property && cline !~ s:property
-    "return indent - &sw
-  else
-    return -1
-  endif
-endfunction
-
-" vim:set sw=2:
diff --git a/share/vim/vim73/indent/sdl.vim b/share/vim/vim73/indent/sdl.vim
deleted file mode 100644
index 9dde2c3f..00000000
--- a/share/vim/vim73/indent/sdl.vim
+++ /dev/null
@@ -1,89 +0,0 @@
-" Vim indent file
-" Language:	SDL
-" Maintainer:	Michael Piefel 
-" Last Change:	2001 Sep 17
-
-" Shamelessly stolen from the Vim-Script indent file
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-setlocal indentexpr=GetSDLIndent()
-setlocal indentkeys+==~end,=~state,*
-
-" Only define the function once.
-if exists("*GetSDLIndent")
-"  finish
-endif
-
-set cpo-=C
-
-function! GetSDLIndent()
-  " Find a non-blank line above the current line.
-  let lnum = prevnonblank(v:lnum - 1)
-
-  " At the start of the file use zero indent.
-  if lnum == 0
-    return 0
-  endif
-
-  let ind = indent(lnum)
-  let virtuality = '^\s*\(\(virtual\|redefined\|finalized\)\s\+\)\=\s*'
-
-  " Add a single space to comments which use asterisks
-  if getline(lnum) =~ '^\s*\*'
-    let ind = ind - 1
-  endif
-  if getline(v:lnum) =~ '^\s*\*'
-    let ind = ind + 1
-  endif
-
-  " Add a 'shiftwidth' after states, different blocks, decision (and alternatives), inputs
-  if (getline(lnum) =~? '^\s*\(start\|state\|system\|package\|connection\|channel\|alternative\|macro\|operator\|newtype\|select\|substructure\|decision\|generator\|refinement\|service\|method\|exceptionhandler\|asntype\|syntype\|value\|(.*):\|\(priority\s\+\)\=input\|provided\)'
-    \ || getline(lnum) =~? virtuality . '\(process\|procedure\|block\|object\)')
-    \ && getline(lnum) !~? 'end[[:alpha:]]\+;$'
-    let ind = ind + &sw
-  endif
-
-  " Subtract a 'shiftwidth' after states
-  if getline(lnum) =~? '^\s*\(stop\|return\>\|nextstate\)'
-    let ind = ind - &sw
-  endif
-
-  " Subtract a 'shiftwidth' on on end (uncompleted line)
-  if getline(v:lnum) =~? '^\s*end\>'
-    let ind = ind - &sw
-  endif
-
-  " Put each alternatives where the corresponding decision was
-  if getline(v:lnum) =~? '^\s*\((.*)\|else\):'
-    normal k
-    let ind = indent(searchpair('^\s*decision', '', '^\s*enddecision', 'bW',
-      \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "sdlString"'))
-  endif
-
-  " Put each state where the preceding state was
-  if getline(v:lnum) =~? '^\s*state\>'
-    let ind = indent(search('^\s*start', 'bW'))
-  endif
-
-  " Systems and packages are always in column 0
-  if getline(v:lnum) =~? '^\s*\(\(end\)\=system\|\(end\)\=package\)'
-    return 0;
-  endif
-
-  " Put each end* where the corresponding begin was
-  if getline(v:lnum) =~? '^\s*end[[:alpha:]]'
-    normal k
-    let partner=matchstr(getline(v:lnum), '\(' . virtuality . 'end\)\@<=[[:alpha:]]\+')
-    let ind = indent(searchpair(virtuality . partner, '', '^\s*end' . partner, 'bW',
-      \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "sdlString"'))
-  endif
-
-  return ind
-endfunction
-
-" vim:sw=2
diff --git a/share/vim/vim73/indent/sqlanywhere.vim b/share/vim/vim73/indent/sqlanywhere.vim
deleted file mode 100644
index fdafb622..00000000
--- a/share/vim/vim73/indent/sqlanywhere.vim
+++ /dev/null
@@ -1,385 +0,0 @@
-" Vim indent file
-" Language:    SQL
-" Maintainer:  David Fishburn 
-" Last Change: Mon Apr 02 2007 9:13:47 AM
-" Version:     1.5
-" Download:    http://vim.sourceforge.net/script.php?script_id=495
-
-" Notes:
-"    Indenting keywords are based on Oracle and Sybase Adaptive Server
-"    Anywhere (ASA).  Test indenting was done with ASA stored procedures and
-"    fuctions and Oracle packages which contain stored procedures and
-"    functions.
-"    This has not been tested against Microsoft SQL Server or
-"    Sybase Adaptive Server Enterprise (ASE) which use the Transact-SQL
-"    syntax.  That syntax does not have end tags for IF's, which makes
-"    indenting more difficult.
-"
-" Known Issues:
-"    The Oracle MERGE statement does not have an end tag associated with
-"    it, this can leave the indent hanging to the right one too many.
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-    finish
-endif
-let b:did_indent     = 1
-let b:current_indent = "sqlanywhere"
-
-setlocal indentkeys-=0{
-setlocal indentkeys-=0}
-setlocal indentkeys-=:
-setlocal indentkeys-=0#
-setlocal indentkeys-=e
-
-" This indicates formatting should take place when one of these
-" expressions is used.  These expressions would normally be something
-" you would type at the BEGINNING of a line
-" SQL is generally case insensitive, so this files assumes that
-" These keywords are something that would trigger an indent LEFT, not
-" an indent right, since the SQLBlockStart is used for those keywords
-setlocal indentkeys+==~end,=~else,=~elseif,=~elsif,0=~when,0=)
-
-" GetSQLIndent is executed whenever one of the expressions
-" in the indentkeys is typed
-setlocal indentexpr=GetSQLIndent()
-
-" Only define the functions once.
-if exists("*GetSQLIndent")
-    finish
-endif
-
-" List of all the statements that start a new block.
-" These are typically words that start a line.
-" IS is excluded, since it is difficult to determine when the
-" ending block is (especially for procedures/functions).
-let s:SQLBlockStart = '^\s*\%('.
-            \ 'if\|else\|elseif\|elsif\|'.
-                \ 'while\|loop\|do\|'.
-                \ 'begin\|'.
-                \ 'case\|when\|merge\|exception'.
-                \ '\)\>'
-let s:SQLBlockEnd = '^\s*\(end\)\>'
-
-" The indent level is also based on unmatched paranethesis
-" If a line has an extra "(" increase the indent
-" If a line has an extra ")" decrease the indent
-function s:CountUnbalancedParan( line, paran_to_check )
-    let l = a:line
-    let lp = substitute(l, '[^(]', '', 'g')
-    let l = a:line
-    let rp = substitute(l, '[^)]', '', 'g')
-
-    if a:paran_to_check =~ ')'
-        " echom 'CountUnbalancedParan ) returning: ' .
-        " \ (strlen(rp) - strlen(lp))
-        return (strlen(rp) - strlen(lp))
-    elseif a:paran_to_check =~ '('
-        " echom 'CountUnbalancedParan ( returning: ' .
-        " \ (strlen(lp) - strlen(rp))
-        return (strlen(lp) - strlen(rp))
-    else
-        " echom 'CountUnbalancedParan unknown paran to check: ' .
-        " \ a:paran_to_check
-        return 0
-    endif
-endfunction
-
-" Unindent commands based on previous indent level
-function s:CheckToIgnoreRightParan( prev_lnum, num_levels )
-    let lnum = a:prev_lnum
-    let line = getline(lnum)
-    let ends = 0
-    let num_right_paran = a:num_levels
-    let ignore_paran = 0
-    let vircol = 1
-
-    while num_right_paran > 0
-        silent! exec 'norm! '.lnum."G\".vircol."\"
-        let right_paran = search( ')', 'W' )
-        if right_paran != lnum
-            " This should not happen since there should be at least
-            " num_right_paran matches for this line
-            break
-        endif
-        let vircol      = virtcol(".")
-
-        " if getline(".") =~ '^)'
-        let matching_paran = searchpair('(', '', ')', 'bW',
-                    \ 's:IsColComment(line("."), col("."))')
-
-        if matching_paran < 1
-            " No match found
-            " echom 'CTIRP - no match found, ignoring'
-            break
-        endif
-
-        if matching_paran == lnum
-            " This was not an unmatched parantenses, start the search again
-            " again after this column
-            " echom 'CTIRP - same line match, ignoring'
-            continue
-        endif
-
-        " echom 'CTIRP - match: ' . line(".") . '  ' . getline(".")
-
-        if getline(matching_paran) =~? '\(if\|while\)\>'
-            " echom 'CTIRP - if/while ignored: ' . line(".") . '  ' . getline(".")
-            let ignore_paran = ignore_paran + 1
-        endif
-
-        " One match found, decrease and check for further matches
-        let num_right_paran = num_right_paran - 1
-
-    endwhile
-
-    " Fallback - just move back one
-    " return a:prev_indent - &sw
-    return ignore_paran
-endfunction
-
-" Based on the keyword provided, loop through previous non empty
-" non comment lines to find the statement that initated the keyword.
-" Return its indent level
-"    CASE ..
-"    WHEN ...
-" Should return indent level of CASE
-"    EXCEPTION ..
-"    WHEN ...
-"         something;
-"    WHEN ...
-" Should return indent level of exception.
-function s:GetStmtStarterIndent( keyword, curr_lnum )
-    let lnum  = a:curr_lnum
-
-    " Default - reduce indent by 1
-    let ind = indent(a:curr_lnum) - &sw
-
-    if a:keyword =~? 'end'
-        exec 'normal! ^'
-        let stmts = '^\s*\%('.
-                    \ '\\|' .
-                    \ '\%(\%(\\)\|' .
-                    \ '\%(\%(\\)\|' .
-                    \ '\%(\%(\\)\|' .
-                    \ '\%(\%(\\)'.
-                    \ '\)'
-        let matching_lnum = searchpair(stmts, '', '\\zs', 'bW',
-                    \ 's:IsColComment(line("."), col(".")) == 1')
-        exec 'normal! $'
-        if matching_lnum > 0 && matching_lnum < a:curr_lnum
-            let ind = indent(matching_lnum)
-        endif
-    elseif a:keyword =~? 'when'
-        exec 'normal! ^'
-        let matching_lnum = searchpair(
-                    \ '\%(\\|\\|\',
-                    \ '',
-                    \ '\%(\%(\\)\|\%(\\)\)',
-                    \ 'bW',
-                    \ 's:IsColComment(line("."), col(".")) == 1')
-        exec 'normal! $'
-        if matching_lnum > 0 && matching_lnum < a:curr_lnum
-            let ind = indent(matching_lnum)
-        else
-            let ind = indent(a:curr_lnum)
-        endif
-    endif
-
-    return ind
-endfunction
-
-
-" Check if the line is a comment
-function s:IsLineComment(lnum)
-    let rc = synIDattr(
-                \ synID(a:lnum,
-                \     match(getline(a:lnum), '\S')+1, 0)
-                \ , "name")
-                \ =~? "comment"
-
-    return rc
-endfunction
-
-
-" Check if the column is a comment
-function s:IsColComment(lnum, cnum)
-    let rc = synIDattr(synID(a:lnum, a:cnum, 0), "name")
-                \           =~? "comment"
-
-    return rc
-endfunction
-
-
-" Instead of returning a column position, return
-" an appropriate value as a factor of shiftwidth.
-function s:ModuloIndent(ind)
-    let ind = a:ind
-
-    if ind > 0
-        let modulo = ind % &shiftwidth
-
-        if modulo > 0
-            let ind = ind - modulo
-        endif
-    endif
-
-    return ind
-endfunction
-
-
-" Find correct indent of a new line based upon the previous line
-function GetSQLIndent()
-    let lnum = v:lnum
-    let ind = indent(lnum)
-
-    " If the current line is a comment, leave the indent as is
-    " Comment out this additional check since it affects the
-    " indenting of =, and will not reindent comments as it should
-    " if s:IsLineComment(lnum) == 1
-    "     return ind
-    " endif
-
-    " while 1
-        " Get previous non-blank line
-        let prevlnum = prevnonblank(lnum - 1)
-        if prevlnum <= 0
-            return ind
-        endif
-
-        if s:IsLineComment(prevlnum) == 1
-            if getline(v:lnum) =~ '^\s*\*'
-                let ind = s:ModuloIndent(indent(prevlnum))
-                return ind + 1
-            endif
-            " If the previous line is a comment, then return -1
-            " to tell Vim to use the formatoptions setting to determine
-            " the indent to use
-            " But only if the next line is blank.  This would be true if
-            " the user is typing, but it would not be true if the user
-            " is reindenting the file
-            if getline(v:lnum) =~ '^\s*$'
-                return -1
-            endif
-        endif
-
-    "     let prevline = getline(prevlnum)
-    "     if prevline !~ '^\s*$'
-    "         " echom 'previous non blank - break: ' . prevline
-    "         break
-    "     endif
-    " endwhile
-
-    " echom 'PREVIOUS INDENT: ' . indent(prevlnum) . '  LINE: ' . getline(prevlnum)
-
-    " This is the line you just hit return on, it is not the current line
-    " which is new and empty
-    " Based on this line, we can determine how much to indent the new
-    " line
-
-    " Get default indent (from prev. line)
-    let ind      = indent(prevlnum)
-    let prevline = getline(prevlnum)
-
-    " Now check what's on the previous line to determine if the indent
-    " should be changed, for example IF, BEGIN, should increase the indent
-    " where END IF, END, should decrease the indent.
-    if prevline =~? s:SQLBlockStart
-        " Move indent in
-        let ind = ind + &sw
-        " echom 'prevl - SQLBlockStart - indent ' . ind . '  line: ' . prevline
-    elseif prevline =~ '[()]'
-        if prevline =~ '('
-            let num_unmatched_left = s:CountUnbalancedParan( prevline, '(' )
-        else
-            let num_unmatched_left = 0
-        endif
-        if prevline =~ ')'
-            let num_unmatched_right  = s:CountUnbalancedParan( prevline, ')' )
-        else
-            let num_unmatched_right  = 0
-            " let num_unmatched_right  = s:CountUnbalancedParan( prevline, ')' )
-        endif
-        if num_unmatched_left > 0
-            " There is a open left paranethesis
-            " increase indent
-            let ind = ind + ( &sw * num_unmatched_left )
-        elseif num_unmatched_right > 0
-            " if it is an unbalanced paranethesis only unindent if
-            " it was part of a command (ie create table(..)  )
-            " instead of part of an if (ie if (....) then) which should
-            " maintain the indent level
-            let ignore = s:CheckToIgnoreRightParan( prevlnum, num_unmatched_right )
-            " echom 'prevl - ) unbalanced - CTIRP - ignore: ' . ignore
-
-            if prevline =~ '^\s*)'
-                let ignore = ignore + 1
-                " echom 'prevl - begins ) unbalanced ignore: ' . ignore
-            endif
-
-            if (num_unmatched_right - ignore) > 0
-                let ind = ind - ( &sw * (num_unmatched_right - ignore) )
-            endif
-
-        endif
-    endif
-
-
-    " echom 'CURRENT INDENT: ' . ind . '  LINE: '  . getline(v:lnum)
-
-    " This is a new blank line since we just typed a carriage return
-    " Check current line; search for simplistic matching start-of-block
-    let line = getline(v:lnum)
-
-    if line =~? '^\s*els'
-        " Any line when you type else will automatically back up one
-        " ident level  (ie else, elseif, elsif)
-        let ind = ind - &sw
-        " echom 'curr - else - indent ' . ind
-    elseif line =~? '^\s*end\>'
-        let ind = s:GetStmtStarterIndent('end', v:lnum)
-        " General case for end
-        " let ind = ind - &sw
-        " echom 'curr - end - indent ' . ind
-    elseif line =~? '^\s*when\>'
-        let ind = s:GetStmtStarterIndent('when', v:lnum)
-        " If the WHEN clause is used with a MERGE or EXCEPTION
-        " clause, do not change the indent level, since these
-        " statements do not have a corresponding END statement.
-        " if stmt_starter =~? 'case'
-        "    let ind = ind - &sw
-        " endif
-        " elseif line =~ '^\s*)\s*;\?\s*$'
-        " elseif line =~ '^\s*)'
-    elseif line =~ '^\s*)'
-        let num_unmatched_right  = s:CountUnbalancedParan( line, ')' )
-        let ignore = s:CheckToIgnoreRightParan( v:lnum, num_unmatched_right )
-        " If the line ends in a ), then reduce the indent
-        " This catches items like:
-        " CREATE TABLE T1(
-        "    c1 int,
-        "    c2 int
-        "    );
-        " But we do not want to unindent a line like:
-        " IF ( c1 = 1
-        " AND  c2 = 3 ) THEN
-        " let num_unmatched_right  = s:CountUnbalancedParan( line, ')' )
-        " if num_unmatched_right > 0
-        " elseif strpart( line, strlen(line)-1, 1 ) =~ ')'
-        " let ind = ind - &sw
-        if line =~ '^\s*)'
-            " let ignore = ignore + 1
-            " echom 'curr - begins ) unbalanced ignore: ' . ignore
-        endif
-
-        if (num_unmatched_right - ignore) > 0
-            let ind = ind - ( &sw * (num_unmatched_right - ignore) )
-        endif
-        " endif
-    endif
-
-    " echom 'final - indent ' . ind
-    return s:ModuloIndent(ind)
-endfunction
-
-" vim:sw=4:
diff --git a/share/vim/vim73/indent/tcsh.vim b/share/vim/vim73/indent/tcsh.vim
deleted file mode 100644
index cd18f061..00000000
--- a/share/vim/vim73/indent/tcsh.vim
+++ /dev/null
@@ -1,51 +0,0 @@
-" Vim indent file
-" Language:		C-shell (tcsh)
-" Maintainer:		Gautam Iyer 
-" Last Modified:	Sat 16 Jun 2007 04:27:45 PM PDT
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-    finish
-endif
-
-let b:did_indent = 1
-
-setlocal indentexpr=TcshGetIndent()
-setlocal indentkeys+=e,0=end,0=endsw indentkeys-=0{,0},0),:,0#
-
-" Only define the function once.
-if exists("*TcshGetIndent")
-    finish
-endif
-
-set cpoptions-=C
-
-function TcshGetIndent()
-    " Find a non-blank line above the current line.
-    let lnum = prevnonblank(v:lnum - 1)
-
-    " Hit the start of the file, use zero indent.
-    if lnum == 0
-	return 0
-    endif
-
-    " Add indent if previous line begins with while or foreach
-    " OR line ends with case :, default:, else, then or \
-    let ind = indent(lnum)
-    let line = getline(lnum)
-    if line =~ '\v^\s*%(while|foreach)>|^\s*%(case\s.*:|default:|else)\s*$|%('
-	let ind = ind - &sw
-    endif
-
-    " Subtract indent if current line has on end, endif, case commands
-    let line = getline(v:lnum)
-    if line =~ '\v^\s*%(else|end|endif)\s*$'
-	let ind = ind - &sw
-    endif
-
-    return ind
-endfunction
diff --git a/share/vim/vim73/indent/verilog.vim b/share/vim/vim73/indent/verilog.vim
deleted file mode 100644
index 74c8c5f6..00000000
--- a/share/vim/vim73/indent/verilog.vim
+++ /dev/null
@@ -1,219 +0,0 @@
-" Language:     Verilog HDL
-" Maintainer:	Chih-Tsun Huang 
-" Last Change:	Wed Oct 31 16:13:11 CST 2001
-" URL:		http://larc.ee.nthu.edu.tw/~cthuang/vim/indent/verilog.vim
-"
-" Credits:
-"   Suggestions for improvement, bug reports by
-"     Leo Butlero 
-"
-" Buffer Variables:
-"     b:verilog_indent_modules : indenting after the declaration
-"				 of module blocks
-"     b:verilog_indent_width   : indenting width
-"     b:verilog_indent_verbose : verbose to each indenting
-"
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-setlocal indentexpr=GetVerilogIndent()
-setlocal indentkeys=!^F,o,O,0),=begin,=end,=join,=endcase
-setlocal indentkeys+==endmodule,=endfunction,=endtask,=endspecify
-setlocal indentkeys+==`else,=`endif
-
-" Only define the function once.
-if exists("*GetVerilogIndent")
-  finish
-endif
-
-set cpo-=C
-
-function GetVerilogIndent()
-
-  if exists('b:verilog_indent_width')
-    let offset = b:verilog_indent_width
-  else
-    let offset = &sw
-  endif
-  if exists('b:verilog_indent_modules')
-    let indent_modules = offset
-  else
-    let indent_modules = 0
-  endif
-
-  " Find a non-blank line above the current line.
-  let lnum = prevnonblank(v:lnum - 1)
-
-  " At the start of the file use zero indent.
-  if lnum == 0
-    return 0
-  endif
-
-  let lnum2 = prevnonblank(lnum - 1)
-  let curr_line  = getline(v:lnum)
-  let last_line  = getline(lnum)
-  let last_line2 = getline(lnum2)
-  let ind  = indent(lnum)
-  let ind2 = indent(lnum - 1)
-  let offset_comment1 = 1
-  " Define the condition of an open statement
-  "   Exclude the match of //, /* or */
-  let vlog_openstat = '\(\\|\([*/]\)\@<+-/%^&|!=?:]\([*/]\)\@!\)'
-  " Define the condition when the statement ends with a one-line comment
-  let vlog_comment = '\(//.*\|/\*.*\*/\s*\)'
-  if exists('b:verilog_indent_verbose')
-    let vverb_str = 'INDENT VERBOSE:'
-    let vverb = 1
-  else
-    let vverb = 0
-  endif
-
-  " Indent accoding to last line
-  " End of multiple-line comment
-  if last_line =~ '\*/\s*$' && last_line !~ '/\*.\{-}\*/'
-    let ind = ind - offset_comment1
-    if vverb
-      echo vverb_str "De-indent after a multiple-line comment."
-    endif
-
-  " Indent after if/else/for/case/always/initial/specify/fork blocks
-  elseif last_line =~ '`\@' ||
-    \ last_line =~ '^\s*\<\(for\|case\%[[zx]]\)\>' ||
-    \ last_line =~ '^\s*\<\(always\|initial\)\>' ||
-    \ last_line =~ '^\s*\<\(specify\|fork\)\>'
-    if last_line !~ '\(;\|\\)\s*' . vlog_comment . '*$' ||
-      \ last_line =~ '\(//\|/\*\).*\(;\|\\)\s*' . vlog_comment . '*$'
-      let ind = ind + offset
-      if vverb | echo vverb_str "Indent after a block statement." | endif
-    endif
-  " Indent after function/task blocks
-  elseif last_line =~ '^\s*\<\(function\|task\)\>'
-    if last_line !~ '\\s*' . vlog_comment . '*$' ||
-      \ last_line =~ '\(//\|/\*\).*\(;\|\\)\s*' . vlog_comment . '*$'
-      let ind = ind + offset
-      if vverb
-	echo vverb_str "Indent after function/task block statement."
-      endif
-    endif
-
-  " Indent after module/function/task/specify/fork blocks
-  elseif last_line =~ '^\s*\'
-    let ind = ind + indent_modules
-    if vverb && indent_modules
-      echo vverb_str "Indent after module statement."
-    endif
-    if last_line =~ '[(,]\s*' . vlog_comment . '*$' &&
-      \ last_line !~ '\(//\|/\*\).*[(,]\s*' . vlog_comment . '*$'
-      let ind = ind + offset
-      if vverb
-	echo vverb_str "Indent after a multiple-line module statement."
-      endif
-    endif
-
-  " Indent after a 'begin' statement
-  elseif last_line =~ '\(\\)\(\s*:\s*\w\+\)*' . vlog_comment . '*$' &&
-    \ last_line !~ '\(//\|/\*\).*\(\\)' &&
-    \ ( last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$' ||
-    \ last_line2 =~ '^\s*[^=!]\+\s*:\s*' . vlog_comment . '*$' )
-    let ind = ind + offset
-    if vverb | echo vverb_str "Indent after begin statement." | endif
-
-  " De-indent for the end of one-line block
-  elseif ( last_line !~ '\' ||
-    \ last_line =~ '\(//\|/\*\).*\' ) &&
-    \ last_line2 =~ '\<\(`\@.*' .
-      \ vlog_comment . '*$' &&
-    \ last_line2 !~
-      \ '\(//\|/\*\).*\<\(`\@' &&
-    \ last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$' &&
-    \ ( last_line2 !~ '\' ||
-    \ last_line2 =~ '\(//\|/\*\).*\' )
-    let ind = ind - offset
-    if vverb
-      echo vverb_str "De-indent after the end of one-line statement."
-    endif
-
-    " Multiple-line statement (including case statement)
-    " Open statement
-    "   Ident the first open line
-    elseif  last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' &&
-      \ last_line !~ '\(//\|/\*\).*' . vlog_openstat . '\s*$' &&
-      \ last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$'
-      let ind = ind + offset
-      if vverb | echo vverb_str "Indent after an open statement." | endif
-
-    " Close statement
-    "   De-indent for an optional close parenthesis and a semicolon, and only
-    "   if there exists precedent non-whitespace char
-    elseif last_line =~ ')*\s*;\s*' . vlog_comment . '*$' &&
-      \ last_line !~ '^\s*)*\s*;\s*' . vlog_comment . '*$' &&
-      \ last_line !~ '\(//\|/\*\).*\S)*\s*;\s*' . vlog_comment . '*$' &&
-      \ ( last_line2 =~ vlog_openstat . '\s*' . vlog_comment . '*$' &&
-      \ last_line2 !~ ';\s*//.*$') &&
-      \ last_line2 !~ '^\s*' . vlog_comment . '$'
-      let ind = ind - offset
-      if vverb | echo vverb_str "De-indent after a close statement." | endif
-
-  " `ifdef and `else
-  elseif last_line =~ '^\s*`\<\(ifdef\|else\)\>'
-    let ind = ind + offset
-    if vverb
-      echo vverb_str "Indent after a `ifdef or `else statement."
-    endif
-
-  endif
-
-  " Re-indent current line
-
-  " De-indent on the end of the block
-  " join/end/endcase/endfunction/endtask/endspecify
-  if curr_line =~ '^\s*\<\(join\|end\|endcase\)\>' ||
-    \ curr_line =~ '^\s*\<\(endfunction\|endtask\|endspecify\)\>'
-    let ind = ind - offset
-    if vverb | echo vverb_str "De-indent the end of a block." | endif
-  elseif curr_line =~ '^\s*\'
-    let ind = ind - indent_modules
-    if vverb && indent_modules
-      echo vverb_str "De-indent the end of a module."
-    endif
-
-  " De-indent on a stand-alone 'begin'
-  elseif curr_line =~ '^\s*\'
-    if last_line !~ '^\s*\<\(function\|task\|specify\|module\)\>' &&
-      \ last_line !~ '^\s*\()*\s*;\|)\+\)\s*' . vlog_comment . '*$' &&
-      \ ( last_line =~
-	\ '\<\(`\@' ||
-      \ last_line =~ ')\s*' . vlog_comment . '*$' ||
-      \ last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' )
-      let ind = ind - offset
-      if vverb
-	echo vverb_str "De-indent a stand alone begin statement."
-      endif
-    endif
-
-  " De-indent after the end of multiple-line statement
-  elseif curr_line =~ '^\s*)' &&
-    \ ( last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' ||
-    \ last_line !~ vlog_openstat . '\s*' . vlog_comment . '*$' &&
-    \ last_line2 =~ vlog_openstat . '\s*' . vlog_comment . '*$' )
-    let ind = ind - offset
-    if vverb
-      echo vverb_str "De-indent the end of a multiple statement."
-    endif
-
-  " De-indent `else and `endif
-  elseif curr_line =~ '^\s*`\<\(else\|endif\)\>'
-    let ind = ind - offset
-    if vverb | echo vverb_str "De-indent `else and `endif statement." | endif
-
-  endif
-
-  " Return the indention
-  return ind
-endfunction
-
-" vim:sw=2
diff --git a/share/vim/vim73/indent/vhdl.vim b/share/vim/vim73/indent/vhdl.vim
deleted file mode 100644
index 717857fe..00000000
--- a/share/vim/vim73/indent/vhdl.vim
+++ /dev/null
@@ -1,406 +0,0 @@
-" VHDL indent ('93 syntax)
-" Language:    VHDL
-" Maintainer:  Gerald Lai 
-" Version:     1.56
-" Last Change: 2010 Jun 29
-" URL:         http://www.vim.org/scripts/script.php?script_id=1450
-
-" only load this indent file when no other was loaded
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-" setup indent options for local VHDL buffer
-setlocal indentexpr=GetVHDLindent()
-setlocal indentkeys=!^F,o,O,0(,0)
-setlocal indentkeys+==~begin,=~end\ ,=~end\	,=~is,=~select,=~when
-setlocal indentkeys+==~if,=~then,=~elsif,=~else
-setlocal indentkeys+==~case,=~loop,=~for,=~generate,=~record,=~units,=~process,=~block,=~function,=~component,=~procedure
-setlocal indentkeys+==~architecture,=~configuration,=~entity,=~package
-
-" constants
-" not a comment
-let s:NC = '\%(--.*\)\@ 0 && prevs =~ '^\s*--'
-    let prevn = prevnonblank(prevn - 1)
-    let prevs = getline(prevn)
-  endwhile
-  let prevs_noi = substitute(prevs, '^\s*', '', '')
-
-  " default indent starts as previous non-comment line's indent
-  let ind = prevn > 0 ? indent(prevn) : 0
-  " backup default
-  let ind2 = ind
-
-  " indent:   special; kill string so it would not affect other filters
-  " keywords: "report" + string
-  " where:    anywhere in current or previous line
-  let s0 = s:NC.'\\s*".*"'
-  if curs =~? s0
-    let curs = ""
-  endif
-  if prevs =~? s0
-    let prevs = ""
-  endif
-
-  " indent:   previous line's comment position, otherwise follow next non-comment line if possible
-  " keyword:  "--"
-  " where:    start of current line
-  if curs =~ '^\s*--'
-    let pn = curn - 1
-    let ps = getline(pn)
-    if curs =~ '^\s*--\s' && ps =~ '--'
-      return indent(pn) + stridx(substitute(ps, '^\s*', '', ''), '--')
-    else
-      " find nextnonblank line that is not a comment
-      let nn = nextnonblank(curn + 1)
-      let ns = getline(nn)
-      while nn > 0 && ns =~ '^\s*--'
-        let nn = nextnonblank(nn + 1)
-        let ns = getline(nn)
-      endwhile
-      let n = indent(nn)
-      return n != -1 ? n : ind
-    endif
-  endif
-
-  " ****************************************************************************************
-  " indent:   align generic variables & port names
-  " keywords: "generic", "map", "port" + "(", provided current line is part of mapping
-  " where:    anywhere in previous 2 lines
-  " find following previous non-comment line
-  let pn = prevnonblank(prevn - 1)
-  let ps = getline(pn)
-  while pn > 0 && ps =~ '^\s*--'
-    let pn = prevnonblank(pn - 1)
-    let ps = getline(pn)
-  endwhile
-  if (curs =~ '^\s*)' || curs =~? '^\s*\%(\<\%(generic\|map\|port\)\>.*\)\@\s*\S\+\|:[^=]\@=\s*\%(\%(in\|out\|inout\|buffer\|linkage\)\>\|\w\+\s\+:=\)\)') && (prevs =~? s:NC.'\<\%(generic\|map\|port\)\s*(\%(\s*\w\)\=' || (ps =~? s:NC.'\<\%(generic\|map\|port\)'.s:ES && prevs =~ '^\s*('))
-    " align closing ")" with opening "("
-    if curs =~ '^\s*)'
-      return ind2 + stridx(prevs_noi, '(')
-    endif
-    let m = matchend(prevs_noi, '(\s*\ze\w')
-    if m != -1
-      return ind2 + m
-    else
-      if g:vhdl_indent_genportmap
-        return ind2 + stridx(prevs_noi, '(') + &sw
-      else
-        return ind2 + &sw
-      endif
-    endif
-  endif
-
-  " indent:   align conditional/select statement
-  " keywords: variable + "<=" without ";" ending
-  " where:    start of previous line
-  if prevs =~? '^\s*\S\+\s*<=[^;]*'.s:ES
-    if g:vhdl_indent_rhsassign
-      return ind2 + matchend(prevs_noi, '<=\s*\ze.')
-    else
-      return ind2 + &sw
-    endif
-  endif
-
-  " indent:   backtrace previous non-comment lines for next smaller or equal size indent
-  " keywords: "end" + "record", "units"
-  " where:    start of previous line
-  " keyword:  ")"
-  " where:    start of previous line
-  " keyword:  without "<=" + ";" ending
-  " where:    anywhere in previous line
-  " keyword:  "=>" + ")" ending, provided current line does not begin with ")"
-  " where:    anywhere in previous line
-  " _note_:   indent allowed to leave this filter
-  let m = 0
-  if prevs =~? '^\s*end\s\+\%(record\|units\)\>'
-    let m = 3
-  elseif prevs =~ '^\s*)'
-    let m = 1
-  elseif prevs =~ s:NC.'\%(<=.*\)\@.*'.s:NC.')'.s:ES)
-    let m = 2
-  endif
-
-  if m > 0
-    let pn = prevnonblank(prevn - 1)
-    let ps = getline(pn)
-    while pn > 0
-      let t = indent(pn)
-      if ps !~ '^\s*--' && (t < ind || (t == ind && m == 3))
-        " make sure one of these is true
-        " keywords: variable + "<=" without ";" ending
-        " where:    start of previous non-comment line
-        " keywords: "generic", "map", "port"
-        " where:    anywhere in previous non-comment line
-        " keyword:  "("
-        " where:    start of previous non-comment line
-        if m < 3 && ps !~? '^\s*\S\+\s*<=[^;]*'.s:ES
-          if ps =~? s:NC.'\<\%(generic\|map\|port\)\>' || ps =~ '^\s*('
-            let ind = t
-          endif
-          break
-        endif
-        let ind = t
-        if m > 1
-          " find following previous non-comment line
-          let ppn = prevnonblank(pn - 1)
-          let pps = getline(ppn)
-          while ppn > 0 && pps =~ '^\s*--'
-            let ppn = prevnonblank(ppn - 1)
-            let pps = getline(ppn)
-          endwhile
-          " indent:   follow
-          " keyword:  "select"
-          " where:    end of following previous non-comment line
-          " keyword:  "type"
-          " where:    start of following previous non-comment line
-          if m == 2
-            let s1 = s:NC.'\'
-    let ind = ind - &sw
-    " find previous opening statement of
-    " keywords: "architecture", "block", "entity", "function", "generate", "procedure", "process"
-    let s2 = s:NC.s:NE.'\<\%(architecture\|block\|entity\|function\|generate\|procedure\|process\)\>'
-    if (curs !~? s2.'.*'.s:NC.'\.*'.s:ES && prevs =~? s2) || m == 1
-      let ind = ind + &sw
-    endif
-    return ind
-  endif
-
-  " indent:   +sw if previous line is previous opening statement
-  " keywords: "record", "units"
-  " where:    anywhere in current line
-  if curs =~? s:NC.s:NE.'\<\%(record\|units\)\>'
-    " find previous opening statement of
-    " keyword: "type"
-    let s3 = s:NC.s:NE.'\'
-    if curs !~? s3.'.*'.s:NC.'\<\%(record\|units\)\>.*'.s:ES && prevs =~? s3
-      let ind = ind + &sw
-    endif
-    return ind
-  endif
-
-  " ****************************************************************************************
-  " indent:   0
-  " keywords: "architecture", "configuration", "entity", "library", "package"
-  " where:    start of current line
-  if curs =~? '^\s*\%(architecture\|configuration\|entity\|library\|package\)\>'
-    return 0
-  endif
-
-  " indent:   maintain indent of previous opening statement
-  " keyword:  "is"
-  " where:    start of current line
-  " find previous opening statement of
-  " keywords: "architecture", "block", "configuration", "entity", "function", "package", "procedure", "process", "type"
-  if curs =~? '^\s*\' && prevs =~? s:NC.s:NE.'\<\%(architecture\|block\|configuration\|entity\|function\|package\|procedure\|process\|type\)\>'
-    return ind2
-  endif
-
-  " indent:   maintain indent of previous opening statement
-  " keyword:  "then"
-  " where:    start of current line
-  " find previous opening statement of
-  " keywords: "elsif", "if"
-  if curs =~? '^\s*\' && prevs =~? s:NC.'\%(\\|'.s:NE.'\\)'
-    return ind2
-  endif
-
-  " indent:   maintain indent of previous opening statement
-  " keyword:  "generate"
-  " where:    start of current line
-  " find previous opening statement of
-  " keywords: "for", "if"
-  if curs =~? '^\s*\' && prevs =~? s:NC.s:NE.'\%(\%(\'
-    return ind2
-  endif
-
-  " indent:   +sw
-  " keywords: "block", "process"
-  " removed:  "begin", "case", "elsif", "if", "loop", "record", "units", "while"
-  " where:    anywhere in previous line
-  if prevs =~? s:NC.s:NE.'\<\%(block\|process\)\>'
-    return ind + &sw
-  endif
-
-  " indent:   +sw
-  " keywords: "architecture", "configuration", "entity", "package"
-  " removed:  "component", "for", "when", "with"
-  " where:    start of previous line
-  if prevs =~? '^\s*\%(architecture\|configuration\|entity\|package\)\>'
-    return ind + &sw
-  endif
-
-  " indent:   +sw
-  " keyword:  "select"
-  " removed:  "generate", "is", "=>"
-  " where:    end of previous line
-  if prevs =~? s:NC.'\"
-  " where:    end of previous line
-  " _note_:   indent allowed to leave this filter
-  if prevs =~? s:NC.'\%(\\|'.s:NE.'\<\%(loop\|record\|units\)\>\)' || prevs =~? '^\s*\%(component\|else\|for\)\>' || prevs =~? s:NC.'\%('.s:NE.'\\)'.s:ES
-    let ind = ind + &sw
-  endif
-
-  " ****************************************************************************************
-  " indent:   -sw
-  " keywords: "when", provided previous line does not begin with "when", does not end with "is"
-  " where:    start of current line
-  let s4 = '^\s*when\>'
-  if curs =~? s4
-    if prevs =~? s:NC.'\'
-    return ind - &sw
-  endif
-
-  " indent:   backtrace previous non-comment lines
-  " keyword:  "end" + "case", "component"
-  " where:    start of current line
-  let m = 0
-  if curs =~? '^\s*end\s\+case\>'
-    let m = 1
-  elseif curs =~? '^\s*end\s\+component\>'
-    let m = 2
-  endif
-
-  if m > 0
-    " find following previous non-comment line
-    let pn = prevn
-    let ps = getline(pn)
-    while pn > 0
-      if ps !~ '^\s*--'
-        "indent:   -2sw
-        "keywords: "end" + "case"
-        "where:    start of previous non-comment line
-        "indent:   -sw
-        "keywords: "when"
-        "where:    start of previous non-comment line
-        "indent:   follow
-        "keywords: "case"
-        "where:    start of previous non-comment line
-        if m == 1
-          if ps =~? '^\s*end\s\+case\>'
-            return indent(pn) - 2 * &sw
-          elseif ps =~? '^\s*when\>'
-            return indent(pn) - &sw
-          elseif ps =~? '^\s*case\>'
-            return indent(pn)
-          endif
-        "indent:   follow
-        "keyword:  "component"
-        "where:    start of previous non-comment line
-        elseif m == 2
-          if ps =~? '^\s*component\>'
-            return indent(pn)
-          endif
-        endif
-      endif
-      let pn = prevnonblank(pn - 1)
-      let ps = getline(pn)
-    endwhile
-    return ind - &sw
-  endif
-
-  " indent:   -sw
-  " keyword:  ")"
-  " where:    start of current line
-  if curs =~ '^\s*)'
-    return ind - &sw
-  endif
-
-  " indent:   0
-  " keywords: "end" + "architecture", "configuration", "entity", "package"
-  " where:    start of current line
-  if curs =~? '^\s*end\s\+\%(architecture\|configuration\|entity\|package\)\>'
-    return 0
-  endif
-
-  " indent:   -sw
-  " keywords: "end" + identifier, ";"
-  " where:    start of current line
-  "if curs =~? '^\s*end\s\+\w\+\>'
-  if curs =~? '^\s*end\%(\s\|;'.s:ES.'\)'
-    return ind - &sw
-  endif
-
-  " ****************************************************************************************
-  " indent:   maintain indent of previous opening statement
-  " keywords: without "generic", "map", "port" + ":" but not ":=" + "in", "out", "inout", "buffer", "linkage", variable & ":="
-  " where:    start of current line
-  if curs =~? '^\s*\%(\<\%(generic\|map\|port\)\>.*\)\@\|\w\+\s\+:=\)'
-    return ind2
-  endif
-
-  " return leftover filtered indent
-  return ind
-endfunction
diff --git a/share/vim/vim73/indent/vim.vim b/share/vim/vim73/indent/vim.vim
deleted file mode 100644
index 0a6dbc17..00000000
--- a/share/vim/vim73/indent/vim.vim
+++ /dev/null
@@ -1,74 +0,0 @@
-" Vim indent file
-" Language:	Vim script
-" Maintainer:	Bram Moolenaar 
-" Last Change:	2005 Jul 06
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-setlocal indentexpr=GetVimIndent()
-setlocal indentkeys+==end,=else,=cat,=fina,=END,0\\
-
-" Only define the function once.
-if exists("*GetVimIndent")
-  finish
-endif
-
-function GetVimIndent()
-  " Find a non-blank line above the current line.
-  let lnum = prevnonblank(v:lnum - 1)
-
-  " If the current line doesn't start with '\' and below a line that starts
-  " with '\', use the indent of the line above it.
-  if getline(v:lnum) !~ '^\s*\\'
-    while lnum > 0 && getline(lnum) =~ '^\s*\\'
-      let lnum = lnum - 1
-    endwhile
-  endif
-
-  " At the start of the file use zero indent.
-  if lnum == 0
-    return 0
-  endif
-
-  " Add a 'shiftwidth' after :if, :while, :try, :catch, :finally, :function
-  " and :else.  Add it three times for a line that starts with '\' after
-  " a line that doesn't (or g:vim_indent_cont if it exists).
-  let ind = indent(lnum)
-  if getline(v:lnum) =~ '^\s*\\' && v:lnum > 1 && getline(lnum) !~ '^\s*\\'
-    if exists("g:vim_indent_cont")
-      let ind = ind + g:vim_indent_cont
-    else
-      let ind = ind + &sw * 3
-    endif
-  elseif getline(lnum) =~ '\(^\||\)\s*\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\%[lly]\|fu\%[nction]\|el\%[seif]\)\>'
-    let ind = ind + &sw
-  elseif getline(lnum) =~ '^\s*aug\%[roup]' && getline(lnum) !~ '^\s*aug\%[roup]\s*!\=\s\+END'
-    let ind = ind + &sw
-  endif
-
-  " If the previous line contains an "end" after a pipe, but not in an ":au"
-  " command.  And not when there is a backslash before the pipe.
-  " And when syntax HL is enabled avoid a match inside a string.
-  let line = getline(lnum)
-  let i = match(line, '[^\\]|\s*\(ene\@!\)')
-  if i > 0 && line !~ '^\s*au\%[tocmd]'
-    if !has('syntax_items') || synIDattr(synID(lnum, i + 2, 1), "name") !~ '\(Comment\|String\)$'
-      let ind = ind - &sw
-    endif
-  endif
-
-
-  " Subtract a 'shiftwidth' on a :endif, :endwhile, :catch, :finally, :endtry,
-  " :endfun, :else and :augroup END.
-  if getline(v:lnum) =~ '^\s*\(ene\@!\|cat\|fina\|el\|aug\%[roup]\s*!\=\s\+END\)'
-    let ind = ind - &sw
-  endif
-
-  return ind
-endfunction
-
-" vim:sw=2
diff --git a/share/vim/vim73/indent/xinetd.vim b/share/vim/vim73/indent/xinetd.vim
deleted file mode 100644
index f7a53414..00000000
--- a/share/vim/vim73/indent/xinetd.vim
+++ /dev/null
@@ -1,50 +0,0 @@
-" Vim indent file
-" Language:         xinetd.conf(5) configuration file
-" Maintainer:       Nikolai Weibull 
-" Latest Revision:  2006-12-20
-
-if exists("b:did_indent")
-  finish
-endif
-let b:did_indent = 1
-
-setlocal indentexpr=GetXinetdIndent()
-setlocal indentkeys=0{,0},!^F,o,O
-setlocal nosmartindent
-
-if exists("*GetXinetdIndent")
-  finish
-endif
-
-function s:count_braces(lnum, count_open)
-  let n_open = 0
-  let n_close = 0
-  let line = getline(a:lnum)
-  let pattern = '[{}]'
-  let i = match(line, pattern)
-  while i != -1
-    if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'ld\%(Comment\|String\)'
-      if line[i] == '{'
-        let n_open += 1
-      elseif line[i] == '}'
-        if n_open > 0
-          let n_open -= 1
-        else
-          let n_close += 1
-        endif
-      endif
-    endif
-    let i = match(line, pattern, i + 1)
-  endwhile
-  return a:count_open ? n_open : n_close
-endfunction
-
-function GetXinetdIndent()
-  let pnum = prevnonblank(v:lnum - 1)
-  if pnum == 0
-    return 0
-  endif
-
-  return indent(pnum) + s:count_braces(pnum, 1) * &sw
-        \ - s:count_braces(v:lnum, 0) * &sw
-endfunction
diff --git a/share/vim/vim73/indent/xml.vim b/share/vim/vim73/indent/xml.vim
deleted file mode 100644
index 4ac35b6a..00000000
--- a/share/vim/vim73/indent/xml.vim
+++ /dev/null
@@ -1,96 +0,0 @@
-" Language:	xml
-" Maintainer:	Johannes Zellner 
-" Last Change:	2009-05-26 00:17:25
-" Notes:	1) does not indent pure non-xml code (e.g. embedded scripts)
-"		2) will be confused by unbalanced tags in comments
-"		or CDATA sections.
-"		2009-05-26 patch by Nikolai Weibull
-" TODO: 	implement pre-like tags, see xml_indent_open / xml_indent_close
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-    finish
-endif
-let b:did_indent = 1
-
-" [-- local settings (must come before aborting the script) --]
-setlocal indentexpr=XmlIndentGet(v:lnum,1)
-setlocal indentkeys=o,O,*,<>>,<<>,/,{,}
-
-set cpo-=C
-
-if !exists('b:xml_indent_open')
-    let b:xml_indent_open = '.\{-}<\a'
-    " pre tag, e.g. 
- " let b:xml_indent_open = '.\{-}<[/]\@!\(address\)\@!' -endif - -if !exists('b:xml_indent_close') - let b:xml_indent_close = '.\{-} - " let b:xml_indent_close = '.\{-}XmlIndentWithPattern(line, pat) - let s = substitute('x'.a:line, a:pat, "\1", 'g') - return strlen(substitute(s, "[^\1].*$", '', '')) -endfun - -" [-- check if it's xml --] -fun! XmlIndentSynCheck(lnum) - if '' != &syntax - let syn1 = synIDattr(synID(a:lnum, 1, 1), 'name') - let syn2 = synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name') - if '' != syn1 && syn1 !~ 'xml' && '' != syn2 && syn2 !~ 'xml' - " don't indent pure non-xml code - return 0 - elseif syn1 =~ '^xmlComment' && syn2 =~ '^xmlComment' - " indent comments specially - return -1 - endif - endif - return 1 -endfun - -" [-- return the sum of indents of a:lnum --] -fun! XmlIndentSum(lnum, style, add) - let line = getline(a:lnum) - if a:style == match(line, '^\s*XmlIndentWithPattern(line, b:xml_indent_open) - \ - XmlIndentWithPattern(line, b:xml_indent_close) - \ - XmlIndentWithPattern(line, '.\{-}/>'))) + a:add - else - return a:add - endif -endfun - -fun! XmlIndentGet(lnum, use_syntax_check) - " Find a non-empty line above the current line. - let lnum = prevnonblank(a:lnum - 1) - - " Hit the start of the file, use zero indent. - if lnum == 0 - return 0 - endif - - if a:use_syntax_check - let check_lnum = XmlIndentSynCheck(lnum) - let check_alnum = XmlIndentSynCheck(a:lnum) - if 0 == check_lnum || 0 == check_alnum - return indent(a:lnum) - elseif -1 == check_lnum || -1 == check_alnum - return -1 - endif - endif - - let ind = XmlIndentSum(lnum, -1, indent(lnum)) - let ind = XmlIndentSum(a:lnum, 0, ind) - - return ind -endfun - -" vim:ts=8 diff --git a/share/vim/vim73/lang/menu_af_af.latin1.vim b/share/vim/vim73/lang/menu_af_af.latin1.vim deleted file mode 100644 index b32e8e98..00000000 --- a/share/vim/vim73/lang/menu_af_af.latin1.vim +++ /dev/null @@ -1,152 +0,0 @@ -" Menu Translations: Afrikaas -" Maintainer: Danie Roux -" Last Change: 2003 Mar 30 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" The translations below are in latin1, but they work for cp1252 and -" iso-8859-15 without conversion as well. -if &enc != "cp1252" && &enc != "iso-8859-15" - scriptencoding latin1 -endif - - -" Help menu -menutrans &Help &Hulp -menutrans &Overview &Oorsig -menutrans &How-to\ links &How-to\ Indeks -"menutrans &GUI &GUI -menutrans &Credits &Met\ dank\ aan -menutrans Co&pying &Kopiereg -menutrans &Find\.\.\. &Soek\.\.\. -menutrans &Version &Weergawe -menutrans &About &Inleiding\ skerm - -" File menu -menutrans &File &Lêer -menutrans &Open\.\.\.:e &Open\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Maak\ oop\ in\ nuwe\ &venster\.\.\.:sp -menutrans &New:enew &Nuut:enew -menutrans &Close:close Maak\ &Toe:close -menutrans &Save:w &Skryf:w -menutrans Save\ &As\.\.\.:w Skryf\ &as\.\.\.:w -menutrans &Print &Druk -menutrans Sa&ve-Exit:wqa Skryf\ en\ verlaat:wqa -menutrans E&xit:qa &Verlaat:qa - -" Edit menu -menutrans &Edit &Wysig -menutrans &Undou Terugu -menutrans &Redo^R Voo&ruit^R -menutrans Rep&eat\. &Herhaal\. -menutrans Cu&t"+x &Knip"+x -menutrans &Copy"+y &Kopiëer"+y -menutrans &Paste"+gP Plak"+gP -menutrans Put\ &Before[p Voeg\ &Voor\ in[p -menutrans Put\ &After]p Voeg\ A>er\ in]p -menutrans &Select\ allggVG Kies\ &AllesggVG -menutrans &Find\.\.\. &Soek\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Soek\ en\ Vervang\.\.\. -menutrans Options\.\.\. Opsies\.\.\. - -" Programming menu -menutrans &Tools &Gereedskap -menutrans &Jump\ to\ this\ tagg^] &Spring\ na\ Etiketg^] -menutrans Jump\ &back^T Spring\ &Terug^T -menutrans Build\ &Tags\ File Genereer\ &Etiket\ Leêr -menutrans &Make:make Voer\ &Make\ uit:make -menutrans &List\ Errors:cl &Foutlys:cl -menutrans L&ist\ Messages:cl! &Boodskaplys:cl! -menutrans &Next\ Error:cn Volgende\ Fout:cn -menutrans &Previous\ Error:cp Vorige\ Fout:cp -menutrans &Older\ List:cold &Ouer\ Lys:cold -menutrans N&ewer\ List:cnew &Nuwer\ Lys:cnew -menutrans Error\ &Window:cwin Foute\ Venster:cwin -menutrans Convert\ to\ HEX:%!xxd Verwissel\ na\ HEX:%!xxd -menutrans Convert\ back:%!xxd\ -r Verwissel\ terug:%!xxd\ -r - -" Names for buffer menu. -menutrans &Buffers &Buffers -menutrans Refresh Verfris -menutrans Delete Verwyder -menutrans Alternate Vorige -menutrans [No\ File] [Geen\ Leêr] - -" Window menu -menutrans &Window &Venster -menutrans &New^Wn &Nuut^Wn -menutrans S&plit^Ws Ver&deel^Ws -menutrans Sp&lit\ To\ #^W^^ Verdeel\ N&a\ #^W^^ -menutrans Split\ &Vertically^Wv Verdeel\ Vertikaal^Wv -menutrans &Close^Wc &Maak\ toe^Wc -menutrans Close\ &Other(s)^Wo Maak\ &Ander\ Toe^Wo -menutrans Ne&xt^Ww Volgende^Ww -menutrans P&revious^WW &Vorige^WW -menutrans &Equal\ Size^W= &Gelyke\ hoogte^W= -menutrans &Max\ Height^W_ &Maksimale\ hoogte^W_ -menutrans M&in\ Height^W1_ Mi&nimale\ hoogte^W1_ -menutrans Max\ Width^W\| Maksimale\ breedte^W\| -menutrans Min\ Width^W1\| Minimale\ breedte^W1\| -menutrans Rotate\ &Up^WR Roteer\ na\ &bo^WR -menutrans Rotate\ &Down^Wr Roteer\ na\ &onder^Wr -menutrans Select\ Fo&nt\.\.\. Kies\ font\.\.\. - -" The popup menu -menutrans &Undo &Terug -menutrans Cu&t Knip -menutrans &Copy &Kopiëer -menutrans &Paste &Plak -menutrans &Delete &Verwyder -menutrans Select\ Blockwise Kies\ per\ Blok -menutrans Select\ &Word Kies\ een\ &Woord -menutrans Select\ &Line Kies\ een\ &Reël -menutrans Select\ &Block Kies\ een\ &Blok -menutrans Select\ &All Kies\ &Alles - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Maak leêr oop - tmenu ToolBar.Save Skryf leêr - tmenu ToolBar.SaveAll Skryf alle leêrs - tmenu ToolBar.Print Druk - tmenu ToolBar.Undo Terug - tmenu ToolBar.Redo Vooruit - tmenu ToolBar.Cut Knip - tmenu ToolBar.Copy Kopiëer - tmenu ToolBar.Paste Plak - tmenu ToolBar.Find Soek... - tmenu ToolBar.FindNext Soek volgende - tmenu ToolBar.FindPrev Soek vorige - tmenu ToolBar.Replace Soek en vervang... - tmenu ToolBar.LoadSesn Laai sessie - tmenu ToolBar.SaveSesn Stoor sessie - tmenu ToolBar.RunScript Voer vim skrip uit - tmenu ToolBar.Make Voer make uit - tmenu ToolBar.Shell Begin dop - tmenu ToolBar.RunCtags Genereer etikette - tmenu ToolBar.TagJump Spring na etiket - tmenu ToolBar.Help Hulp - tmenu ToolBar.FindHelp Soek hulp... - endfun -endif - -" Syntax menu -menutrans &Syntax &Sintaks -menutrans Set\ 'syntax'\ only Stel\ slegs\ 'syntax' -menutrans Set\ 'filetype'\ too Verander\ 'filetype'\ ook -menutrans &Off &Af -menutrans &Manual &Met\ die\ hand -menutrans A&utomatic O&utomaties -menutrans o&n\ (this\ file) Aa&n\ (die\ leêr) -menutrans o&ff\ (this\ file) &Af\ (die\ leêr) -menutrans Co&lor\ test Toets\ die\ &kleure -menutrans &Highlight\ test Toets\ die\ verligting -menutrans &Convert\ to\ HTML Verwissel\ na\ HTML diff --git a/share/vim/vim73/lang/menu_ca_es.latin1.vim b/share/vim/vim73/lang/menu_ca_es.latin1.vim deleted file mode 100644 index c78e173b..00000000 --- a/share/vim/vim73/lang/menu_ca_es.latin1.vim +++ /dev/null @@ -1,313 +0,0 @@ -" Menu translations for Catalan -" -" Maintainer: Ernest Adrogué -" Last Change: 6 Jun 2008 -" - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" The translations below are in latin1, but they work for cp1252, -" iso-8859-15 without conversion as well. -if &enc != "cp1252" && &enc != "iso-8859-15" - scriptencoding latin1 -endif - -" menú Ajuda -menutrans &Help &Ajuda -menutrans &Overview &Introducció -menutrans &User\ Manual &Manual\ de\ l'usuari -menutrans &How-to\ links Com\ &fer\.\.\.? -menutrans &Find\.\.\. &Cerca\.\.\. -menutrans &Credits &Autors -menutrans Co&pying Con&dicions -menutrans &Sponsor/Register &Patrocini/Registre -menutrans O&rphans &Orfes -menutrans &Version &Versió -menutrans &About &Quant\ a\.\.\. -" text del diàleg Ajuda/Cerca... -let g:menutrans_help_dialog = "Introduïu el terme sobre el qual necessiteu ajuda.\n\nUseu el prefix i_ per ordres d'entrada (p.ex.: i_CTRL-X)\nUseu el prefix c_ per ordres de la línia d'ordres (p.ex.: c_)\nUseu el prefix ' per noms d'opcions (p.ex.: 'shiftwidth')" - -" menú Fitxer -menutrans &File &Fitxer -menutrans &Open\.\.\.:e &Obre\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Obre\ en\ una\ &finestra\ nova\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew Obre\ pestanya\.\.\.:tabnew -menutrans &New:enew &Nou:enew -menutrans &Close:close &Tanca:close -menutrans &Save:w &Desa:w -menutrans Save\ &As\.\.\.:sav &Anomena\ i\ desa\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. &Mostra\ les\ diferències\ respecte\.\.\. -menutrans Split\ Patched\ &By\.\.\. Aplica\ les\ modificacions\ de\.\.\. -menutrans &Print &Imprimeix -menutrans Sa&ve-Exit:wqa Desa\ i\ s&urt:wqa -menutrans E&xit:qa &Surt:qa - -" menú Edita -menutrans &Edit &Edita -menutrans &Undou &Desfésu -menutrans &Redo^R &Refés^R -menutrans Rep&eat\. Re&peteix\. -menutrans Cu&t"+x Re&talla"+x -menutrans &Copy"+y &Copia"+y -menutrans &Paste"+gP Engan&xa"+gP -menutrans Put\ &Before[p Posa\ &abans[p -menutrans Put\ &After]p P&osa\ després]p -menutrans &Deletex Suprimeixx -menutrans &Select\ AllggVG &Selecciona-ho\ totggVG -menutrans &Find\.\.\. &Cerca\.\.\. -menutrans &Find/ &Cerca/ -menutrans Find\ and\ Rep&lace Cerca\ i\ s&ubstitueix -menutrans Find\ and\ Rep&lace\.\.\. Cerca\ i\ s&ubstitueix\.\.\. -menutrans Find\ and\ Rep&lace:%s Cerca\ i\ s&ubstitueix:%s -menutrans Find\ and\ Rep&lace:s Cerca\ i\ s&ubstitueix:s -menutrans Settings\ &Window Fin&estra\ d'opcions -menutrans Startup\ &Settings Opcions\ i&nicials -menutrans &Global\ Settings Opcions\ &globals -" submenú Edita/Opcions Globals - menutrans Toggle\ Pattern\ &Highlight:set\ hls! Ressalt\ de\ &patrons:set\ hls! - menutrans Toggle\ &Ignore-case:set\ ic! Sensibilitat\ a\ les\ ma&júscules:set\ ic! - menutrans Toggle\ &Showmatch:set\ sm! &Ressalt\ de\ coincidències:set\ sm! - menutrans &Context\ lines Línies\ de\ co&ntext - menutrans &Virtual\ Edit Edició\ &virtual -" submenú Edita/Opcions Globals/Edició virtual - menutrans Never &Mai - menutrans Block\ Selection &Selecció\ de\ blocs - menutrans Insert\ mode Mode\ d'&inserció - menutrans Block\ and\ Insert &Blocs i inserció - menutrans Always S&empre - menutrans Toggle\ Insert\ &Mode:set\ im! Mode\ d'&inserció:set\ im! - menutrans Toggle\ Vi\ C&ompatible:set\ cp! Co&mpatible\ amb\ Vi:set\ cp! - menutrans Search\ &Path\.\.\. &Ubicacions\.\.\. - menutrans Ta&g\ Files\.\.\. Fitxers\ d'&etiquetes\.\.\. - menutrans Toggle\ &Toolbar &Barra\ d'eines - menutrans Toggle\ &Bottom\ Scrollbar Barra\ de\ &desplaçament\ inferior - menutrans Toggle\ &Left\ Scrollbar Barra\ de\ desplaçament\ e&squerra - menutrans Toggle\ &Right\ Scrollbar Barra\ de\ desplaçament\ dre&ta -menutrans F&ile\ Settings Opcions\ del\ f&itxer -" submenú Edita/Opcions del fitxer - menutrans Toggle\ Line\ &Numbering:set\ nu! &Ennumera\ les\ línies:set\ nu! - menutrans Toggle\ &List\ Mode:set\ list! Mode\ &llista:set\ list! - menutrans Toggle\ Line\ &Wrap:set\ wrap! A&justa\ les\ línies\ llargues:set\ wrap! - menutrans Toggle\ W&rap\ at\ word:set\ lbr! Ajusta\ sense\ partir\ ¶ules:set\ lbr! - menutrans Toggle\ &expand-tab:set\ et! Estén\ les\ ta&bulacions:set\ et! - menutrans Toggle\ &auto-indent:set\ ai! &Sagnia\ automàtica:set\ ai! - menutrans Toggle\ &C-indenting:set\ cin! Sagnia\ estil\ &C:set\ cin! - menutrans &Shiftwidth Sa&gnia - menutrans Soft\ &Tabstop Amplada\ de\ &tabulació - menutrans Te&xt\ Width\.\.\. &Amplada\ del\ text\.\.\. - menutrans &File\ Format\.\.\. &Format\ del\ fitxer\.\.\. -menutrans Select\ Fo&nt\.\.\. &Fosa\.\.\. -menutrans C&olor\ Scheme Es&quema\ de\ colors -" submenú Edita/Esquema de colors - menutrans blue blau - menutrans darkblue blau\ fosc - menutrans default normal - menutrans desert desert - menutrans evening vesprada - menutrans morning matinada - menutrans peachpuff préssec - menutrans shine brillant -menutrans &Keymap &Mapa\ de\ tecles -" submenú Edita/Mapa de tecles - menutrans None Cap - menutrans accents Accents - menutrans arabic Àrab - menutrans czech Txec - menutrans esperanto Esperanto - menutrans greek Grec - menutrans hebrew Hebreu - menutrans hebrewp Hebreu\ (fonètic) - menutrans lithuanian-baltic Lituà\ (bàltic) - menutrans pinyin Mandarí\ (fonètic) - menutrans russian-jcuken Rus\ (jcuken) - menutrans russian-jcukenwin Rus\ (jcukenwin) - menutrans russian-yawerty Rus\ (yawerty) - menutrans serbian Serbi - menutrans serbian-latin Serbi\ (llatí) - menutrans slovak Eslovac -" text del diàleg Edita/Opcions globals/Ubicacions... -let g:menutrans_path_dialog = "Introduïu les ubicacions on cercar fitxers.\nSepareu els noms dels directoris amb una coma." -" text del diàleg Edita/Opcions globals/Fitxers d'etiquetes... -let g:menutrans_tags_dialog = "Introduïu els noms dels fitxers d'etiquetes.\nSepareu els noms amb una coma." -" text del diàleg Edita/Opcions del fitxer/Amplada del text... -let g:menutrans_textwidth_dialog = "Introduïu la nova amplada del text (0 per infinit): " -" text del diàleg Edita/Opcions del fitxer/Format del fitxer... -let g:menutrans_fileformat_dialog = "Seleccioneu el format per escriure el fitxer." - - -" menú Eines -menutrans &Tools Ei&nes -menutrans &Jump\ to\ this\ tagg^] &Salta\ a\ aquesta\ etiquetag^] -menutrans Jump\ &back^T Salta\ en&rere^T -menutrans Build\ &Tags\ File Crea\ un\ fitxer\ d'eti&quetes -menutrans &Spelling &Ortografia -" submenú Eines/Ortografia - menutrans &Spell\ Check\ On Activa\ la\ &revisió\ ortogràfica - menutrans Spell\ Check\ &Off &Desactiva\ la\ revisió\ ortogràfica - menutrans To\ &Next\ error]s Error\ &següent]s - menutrans To\ &Previous\ error[s Error\ &anterior[s - menutrans Suggest\ &Correctionsz= Su&ggerimentsz= - menutrans &Repeat\ correction:spellrepall Re&peteix\ la\ correcció:spellrepall - menutrans Set\ language\ to\ "en" Selecciona\ l'idioma\ "en" - menutrans Set\ language\ to\ "en_au" Selecciona\ l'idioma\ "en_au" - menutrans Set\ language\ to\ "en_ca" Selecciona\ l'idioma\ "en_ca" - menutrans Set\ language\ to\ "en_gb" Selecciona\ l'idioma\ "en_gb" - menutrans Set\ language\ to\ "en_nz" Selecciona\ l'idioma\ "en_nz" - menutrans Set\ language\ to\ "en_us" Selecciona\ l'idioma\ "en_us" - menutrans Set\ language\ to\ "ca" Selecciona\ l'idioma\ "ca" - menutrans Set\ language\ to\ "es" Selecciona\ l'idioma\ "es" - menutrans Set\ language\ to\ "fr" Selecciona\ l'idioma\ "fr" - menutrans Set\ language\ to\ "it" Selecciona\ l'idioma\ "it" - menutrans &Find\ More\ Languages &Cerca\ altres\ idiomes -menutrans &Folding &Plecs -" submenú Eines/Plecs - menutrans &Enable/Disable\ foldszi &Habilita/Deshabilita\ els\ plecszi - menutrans &View\ Cursor\ Linezv &Línia\ del\ cursor\ visiblezv - menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Només\ visible\ la\ línia\ del\ cursorzMzx - menutrans C&lose\ more\ foldszm &Tanca\ més\ plecszm - menutrans &Close\ all\ foldszM Tanca\ t&ots\ els\ plecszM - menutrans O&pen\ more\ foldszr Obre\ &més\ plecszr - menutrans &Open\ all\ foldszR O&bre\ tots\ els\ plecszR - menutrans Fold\ Met&hod Mèto&de -" submenú Eines/Plècs/Mètode - menutrans M&anual M&anual - menutrans I&ndent &Sagnia - menutrans E&xpression E&xpressió - menutrans S&yntax S&intaxi - menutrans &Diff &Diferències - menutrans Ma&rker &Marques - menutrans Create\ &Foldzf &Crea\ un\ pleczf - menutrans &Delete\ Foldzd &Elimina\ un\ pleczd - menutrans Delete\ &All\ FoldszD Elimina\ tot&s\ els\ plecszD - menutrans Fold\ col&umn\ width &Amplada\ de\ la\ columna\ de\ plecs -menutrans &Diff &Diferències -" submenú Eines/Diferències - menutrans &Update &Actualitza - menutrans &Get\ Block &Obtingues\ un\ bloc - menutrans &Put\ Block &Posa\ un\ bloc -menutrans &Make:make Crida\ a\ &make:make -menutrans &List\ Errors:cl Llista\ d'&errors:cl -menutrans L&ist\ Messages:cl! &Llista\ de\ missatges:cl! -menutrans &Next\ Error:cn Error\ se&güent:cn -menutrans &Previous\ Error:cp Error\ an&terior:cp -menutrans &Older\ List:cold Llista\ &antiga:cold -menutrans N&ewer\ List:cnew Llista\ no&va:cnew -menutrans Error\ &Window F&inestra\ d'errors -" submenú Eines/Finestra d'errors - menutrans &Update:cwin &Actualitza:cwin - menutrans &Open:copen &Obre:copen - menutrans &Close:cclose &Tanca:cclose -menutrans &Set\ Compiler &Compilador -menutrans &SeT\ Compiler &Compilador -menutrans &Convert\ to\ HEX:%!xxd Converteix\ a\ &HEX:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Torna\ al\ format\ &original:%!xxd\ -r - - -" menú Buffers -menutrans &Buffers &Buffers -menutrans &Refresh\ menu &Refresca\ el\ menú -menutrans &Delete &Elimina -menutrans &Alternate &Alterna -menutrans &Next &Següent -menutrans &Previous A&nterior -let g:menutrans_no_file = "[Cap fitxer]" - - -" menú Finestra -menutrans &Window F&inestra -menutrans &New^Wn &Nova^Wn -menutrans S&plit^Ws &Divideix^Ws -menutrans Sp&lit\ To\ #^W^^ Divideix\ &en\ #^W^^ -menutrans Split\ &Vertically^Wv Divideix\ &verticalment^Wv -menutrans Split\ File\ E&xplorer E&xplorador\ de\ fitxers -menutrans &Close^Wc &Tanca^Wc -menutrans Close\ &Other(s)^Wo Tanca\ les\ altre&s^Wo -menutrans Move\ &To M&ou\ a -" submenú Finestra/Mou - menutrans &Top^WK &Dalt\ de\ tot^WK - menutrans &Bottom^WJ &Baix\ de\ tot^WJ - menutrans &Left\ side^WH Costat\ &esquerra^WH - menutrans &Right\ side^WL Costat\ d&ret^WL -menutrans Rotate\ &Up^WR Alterna\ cap\ am&unt^WR -menutrans Rotate\ &Down^Wr Alte&rna\ cap\ avall^Wr -menutrans &Equal\ Size^W= &Iguala^W= -menutrans &Max\ Height^W_ Màxima\ &alçada^W_ -menutrans M&in\ Height^W1_ Mínima\ a&lçada^W1_ -menutrans Max\ &Width^W\| Màxima\ a&mplada^W\| -menutrans Min\ Widt&h^W1\| Mínima\ am&plada^W1\| - - -" menú emergent -menutrans &Undo &Desfés -menutrans Cu&t &Retalla -menutrans &Copy &Copia -menutrans &Paste &Enganxa -menutrans &Delete &Suprimeix -menutrans Select\ Blockwise Se&lecció -menutrans Select\ &Word Selecció\ de\ ¶ules -menutrans Select\ &Line Selecció\ de\ &línies -menutrans Select\ &Block Selecció\ de\ bl&ocs -menutrans Select\ &All Selecciona-ho\ &tot - - -" barra d'eines -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Obre un fitxer - tmenu ToolBar.Save Desa el fitxer - tmenu ToolBar.SaveAll Desa tots els fitxers - tmenu ToolBar.Print Imprimeix - tmenu ToolBar.Undo Desfés - tmenu ToolBar.Redo Refés - tmenu ToolBar.Cut Retalla - tmenu ToolBar.Copy Copia - tmenu ToolBar.Paste Enganxa - tmenu ToolBar.Find Cerca - tmenu ToolBar.FindNext Cerca el següent - tmenu ToolBar.FindPrev Cerca l'anterior - tmenu ToolBar.Replace Cerca i substitueix - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Finestra nova - tmenu ToolBar.WinSplit Divideix la finestra - tmenu ToolBar.WinMax Alçada màxima - tmenu ToolBar.WinMin Alçada mínima - tmenu ToolBar.WinVSplit Divideix la finestra verticalment - tmenu ToolBar.WinMaxWidth Amplada màxima - tmenu ToolBar.WinMinWidth Amplada mínima - tmenu ToolBar.WinClose Tanca la finestra - endif - tmenu ToolBar.LoadSesn Carrega una sessió - tmenu ToolBar.SaveSesn Desa la sessió - tmenu ToolBar.RunScript Executa un script - tmenu ToolBar.Make Crida a make - tmenu ToolBar.Shell Obre l'intèrpret d'ordres - tmenu ToolBar.RunCtags Crea un fitxer d'etiquetes - tmenu ToolBar.TagJump Salta a una etiqueta - tmenu ToolBar.Help Ajuda - tmenu ToolBar.FindHelp Cerca a l'ajuda - endfun -endif - - -" menú Sintaxi -menutrans &Syntax &Sintaxi -menutrans &Manual &Manual -menutrans A&utomatic A&utomàtica -menutrans on/off\ for\ &This\ file Activa/Desactiva\ en\ &aquest\ fitxer -menutrans &Show\ filetypes\ in\ menu Mostra\ tots\ els\ &tipus\ al\ menú -menutrans &Off &Desactiva -menutrans Co&lor\ test Prova\ dels\ &colors -menutrans &Highlight\ test Prova\ del\ &ressalt -menutrans &Convert\ to\ HTML Converteix\ a\ &HTML -menutrans Assembly Ensamblador -menutrans Config Configuració -menutrans Set\ '&syntax'\ only Només\ el\ ressalt\ de\ sintaxi -menutrans Set\ '&filetype'\ too Carrega\ també\ els\ plugins - diff --git a/share/vim/vim73/lang/menu_chinese_gb.936.vim b/share/vim/vim73/lang/menu_chinese_gb.936.vim deleted file mode 100644 index 193826bd..00000000 --- a/share/vim/vim73/lang/menu_chinese_gb.936.vim +++ /dev/null @@ -1,263 +0,0 @@ -" Menu Translations: Simplified Chinese -" Translated By: Yuheng Xie -" Last Change: Tue Apr 18 22:00:00 2006 - -" vim: ts=8 sw=8 noet - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding cp936 - -" Help menu -menutrans &Help °ïÖú(&H) -menutrans &Overview ×ÝÀÀ(&O) -menutrans &User\ Manual Óû§ÊÖ²á(&U) -menutrans &How-to\ links How-to\ Ö¸Òý(&H) -menutrans &Find\.\.\. ²éÕÒ(&F)\.\.\. -menutrans &Credits ÖÂл(&C) -menutrans Co&pying °æȨ(&P) -menutrans &Sponsor/Register ÔÞÖú/×¢²á(&S) -menutrans O&rphans ¹Â¶ù(&R) -menutrans &Version °æ±¾(&V) -menutrans &About ¹ØÓÚ(&A) - -" File menu -menutrans &File Îļþ(&F) -menutrans &Open\.\.\.:e ´ò¿ª(&O)\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp ·Ö¸î²¢´ò¿ª(&L)\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew ´ò¿ª±êÇ©\.\.\.:tabnew -menutrans &New:enew н¨(&N):enew -menutrans &Close:close ¹Ø±Õ(&C):close -menutrans &Save:w ±£´æ(&S):w -menutrans Save\ &As\.\.\.:sav Áí´æΪ(&A)\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. ·Ö¸î±È½Ï(Diff)(&D)\.\.\. -menutrans Split\ Patched\ &By\.\.\. ·Ö¸î´ò²¹¶¡(Patch)(&B)\.\.\. -menutrans &Print ´òÓ¡(&P) -menutrans Sa&ve-Exit:wqa ±£´æ²¢Í˳ö(&V):wqa -menutrans E&xit:qa Í˳ö(&X):qa - -" Edit menu -menutrans &Edit ±à¼­(&E) -menutrans &Undou ³·Ïú(&U)u -menutrans &Redo^R ÖØ×ö(&R)^R -menutrans Rep&eat\. Öظ´ÉϴβÙ×÷(&E)\. -menutrans Cu&t"+x ¼ôÇÐ(&T)"+x -menutrans &Copy"+y ¸´ÖÆ(&C)"+y -menutrans &Paste"+gP Õ³Ìù(&P)"+gP -menutrans Put\ &Before[p Õ³Ìùµ½¹â±êÇ°(&B)[p -menutrans Put\ &After]p Õ³Ìùµ½¹â±êºó(&A)]p -menutrans &Deletex ɾ³ý(&D)x -menutrans &Select\ AllggVG ȫѡ(&S)ggVG -menutrans &Find\.\.\. ²éÕÒ(&F)\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. ²éÕÒºÍÌæ»»(&L)\.\.\. -menutrans &Find/ ²éÕÒ(&F)/ -menutrans Find\ and\ Rep&lace:%s ²éÕÒºÍÌæ»»(&L):%s -menutrans Settings\ &Window É趨´°¿Ú(&W) -menutrans Startup\ &Settings Æô¶¯É趨(&S) -menutrans &Global\ Settings È«¾ÖÉ趨(&G) - -" Edit/Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! ¿ª/¹Øģʽ¸ßÁÁ(&H):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! ¿ª/¹ØºöÂÔ´óСд(&I):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! ¿ª/¹ØÏÔʾÅä¶Ô(&S):set\ sm! -menutrans &Context\ lines ÉÏÏÂÎÄÐÐÊý(&C) - -menutrans &Virtual\ Edit ÐéÄâ±à¼­(&V) -menutrans Never ´Ó²» -menutrans Block\ Selection ¿éÑ¡Ôñ -menutrans Insert\ mode ²åÈëģʽ -menutrans Block\ and\ Insert ¿éÑ¡ÔñºÍ²åÈëģʽ -menutrans Always ×ÜÊÇ - -menutrans Toggle\ Insert\ &Mode:set\ im! ¿ª/¹Ø²åÈëģʽ(&M):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! ¿ª/¹Ø\ Vi\ ¼æÈÝ:set\ cp! -menutrans Search\ &Path\.\.\. ²éÕÒ·¾¶(&P)\.\.\. -menutrans Ta&g\ Files\.\.\. Tag\ Îļþ(&T)\.\.\. - -" GUI options -menutrans Toggle\ &Toolbar ¿ª/¹Ø¹¤¾ßÀ¸(&T) -menutrans Toggle\ &Bottom\ Scrollbar ¿ª/¹Øµ×²¿¹ö¶¯Ìõ(&B) -menutrans Toggle\ &Left\ Scrollbar ¿ª/¹Ø×ó¶Ë¹ö¶¯Ìõ(&L) -menutrans Toggle\ &Right\ Scrollbar ¿ª/¹ØÓҶ˹ö¶¯Ìõ(&R) - -" Edit/File Settings -menutrans F&ile\ Settings ÎļþÉ趨(&I) - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! ¿ª/¹ØÏÔʾÐкÅ(&N):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! ¿ª/¹Ø\ list\ ģʽ(&L):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! ¿ª/¹ØÕÛÐÐ(&W):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! ¿ª/¹ØÕû´ÊÕÛÐÐ(&R):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! ¿ª/¹ØÀ©Õ¹\ tab(&E):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! ¿ª/¹Ø×Ô¶¯Ëõ½ø(&A):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! ¿ª/¹Ø\ C\ Ëõ½ø(&C):set\ cin! - -" other options -menutrans &Shiftwidth Ëõ½ø¿í¶È(&S) -menutrans Soft\ &Tabstop Soft\ Tab\ ¿í¶È(&T) -menutrans Te&xt\ Width\.\.\. Îı¾¿í¶È(&X)\.\.\. -menutrans &File\ Format\.\.\. Îļþ¸ñʽ(&F)\.\.\. -menutrans C&olor\ Scheme ÅäÉ«·½°¸(&O) -menutrans Select\ Fo&nt\.\.\. Ñ¡Ôñ×ÖÌå(&N)\.\.\. -menutrans &Keymap ¼üÅÌÓ³Éä(&K) - -" Programming menu -menutrans &Tools ¹¤¾ß(&T) -menutrans &Jump\ to\ this\ tagg^] Ìøתµ½Õâ¸ö\ tag(&J)g^] -menutrans Jump\ &back^T Ìøת·µ»Ø(&B)^T -menutrans Build\ &Tags\ File ½¨Á¢\ Tags\ Îļþ(&T) - -" Tools.Spelling Menu -menutrans &Spelling ƴд¼ì²é(&S) -menutrans &Spell\ Check\ On ´ò¿ªÆ´Ð´¼ì²é(&S) -menutrans Spell\ Check\ &Off ¹Ø±Õƴд¼ì²é(&O) -menutrans To\ &Next\ error]s ÉÏÒ»¸ö´íÎó(&N)]s -menutrans To\ &Previous\ error[s ÏÂÒ»¸ö´íÎó(&P)[s -menutrans Suggest\ &Correctionsz= ÐÞÕý½¨Òé(&C)z= -menutrans &Repeat\ correction:spellrepall Öظ´ÐÞÕý(&R):spellrepall -menutrans Set\ language\ to\ "en" É趨ÓïÑÔΪ\ "en" -menutrans Set\ language\ to\ "en_au" É趨ÓïÑÔΪ\ "en_au" -menutrans Set\ language\ to\ "en_ca" É趨ÓïÑÔΪ\ "en_ca" -menutrans Set\ language\ to\ "en_gb" É趨ÓïÑÔΪ\ "en_gb" -menutrans Set\ language\ to\ "en_nz" É趨ÓïÑÔΪ\ "en_nz" -menutrans Set\ language\ to\ "en_us" É趨ÓïÑÔΪ\ "en_us" -menutrans &Find\ More\ Languages ²éÕÒ¸ü¶àÓïÑÔ(&F) - -" Tools.Fold Menu -" open close folds -menutrans &Folding ÕÛµþ(&F) -menutrans &Enable/Disable\ foldszi ÆôÓÃ/½ûÓÃÕÛµþ(&E)zi -menutrans &View\ Cursor\ Linezv ²é¿´´ËÐÐ(&V)zv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx ½ö²é¿´´ËÐÐ(&W)zMzx -menutrans C&lose\ more\ foldszm ¹Ø±Õ¸ü¶àÕÛµþ(&L)zm -menutrans &Close\ all\ foldszM ¹Ø±ÕËùÓÐÕÛµþ(&C)zM -menutrans O&pen\ more\ foldszr ´ò¿ª¸ü¶àÕÛµþ(&P)zr -menutrans &Open\ all\ foldszR ´ò¿ªËùÓÐÕÛµþ(&O)zR -" fold method -menutrans Fold\ Met&hod ÕÛµþ·½·¨(&H) -menutrans M&anual ÊÖ¹¤(&A) -menutrans I&ndent Ëõ½ø(&N) -menutrans E&xpression ±í´ïʽ(&X) -menutrans S&yntax Óï·¨(&Y) -menutrans &Diff ±È½Ï(Diff)(&D) -menutrans Ma&rker ±ê¼Ç(&R) -" create and delete folds -menutrans Create\ &Foldzf ´´½¨ÕÛµþ(&F)zf -menutrans &Delete\ Foldzd ɾ³ýÕÛµþ(&D)zd -menutrans Delete\ &All\ FoldszD ɾ³ýËùÓÐÕÛµþ(&A)zD -" moving around in folds -menutrans Fold\ column\ &width ÕÛµþÀ¸¿í¶È(&W) - -" Tools.Diff Menu -menutrans &Diff ±È½Ï(Diff)(&D) -menutrans &Update ¸üÐÂ(&U) -menutrans &Get\ Block µÃµ½¿é(&G) -menutrans &Put\ Block ·ÅÖÿé(&P) - -menutrans &Make:make Make(&M):make -menutrans &List\ Errors:cl Áгö´íÎó(&L):cl -menutrans L&ist\ Messages:cl! ÁгöÏûÏ¢(&I):cl! -menutrans &Next\ Error:cn ÏÂÒ»¸ö´íÎó(&N):cn -menutrans &Previous\ Error:cp ÉÏÒ»¸ö´íÎó(&P):cp -menutrans &Older\ List:cold ¸ü¾ÉµÄ´íÎóÁбí(&O):cold -menutrans N&ewer\ List:cnew ¸üеĴíÎóÁбí(&E):cnew -menutrans Error\ &Window ´íÎó´°¿Ú(&W) -menutrans &Update:cwin ¸üÐÂ(&U):cwin -menutrans &Open:copen ´ò¿ª(&O):copen -menutrans &Close:cclose ¹Ø±Õ(&C):cclose -menutrans &Convert\ to\ HEX:%!xxd ת»»³ÉÊ®Áù½øÖÆ:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r ת»»·µ»Ø:%!xxd\ -r -menutrans Se&T\ Compiler É趨±àÒëÆ÷(&T) - -" Names for buffer menu. -menutrans &Buffers »º³åÇø(&B) -menutrans &Refresh\ menu ¸üв˵¥(&R) -menutrans &Delete ɾ³ý(&D) -menutrans &Alternate ½»Ìæ(&A) -menutrans &Next ÏÂÒ»¸ö(&N) -menutrans &Previous ÉÏÒ»¸ö(&P) - -" Window menu -menutrans &Window ´°¿Ú(&W) -menutrans &New^Wn н¨(&N)^Wn -menutrans S&plit^Ws ·Ö¸î(&P)^Ws -menutrans Sp&lit\ To\ #^W^^ ·Ö¸îµ½\ #(&L)^W^^ -menutrans Split\ &Vertically^Wv ´¹Ö±·Ö¸î(&V)^Wv -menutrans Split\ File\ E&xplorer ·Ö¸îÎļþä¯ÀÀÆ÷(&X) -menutrans &Close^Wc ¹Ø±Õ(&C)^Wc -menutrans Close\ &Other(s)^Wo ¹Ø±ÕÆäËü´°¿Ú(&O)^Wo -menutrans Move\ &To Òƶ¯µ½(&T) -menutrans &Top^WK ¶¥¶Ë(&T)^WK -menutrans &Bottom^WJ µ×¶Ë(&B)^WJ -menutrans &Left\ side^WH ×ó±ß(&L)^WH -menutrans &Right\ side^WL ÓÒ±ß(&R)^WL -" menutrans Ne&xt^Ww ÏÂÒ»¸ö(&X)^Ww -" menutrans P&revious^WW ÉÏÒ»¸ö(&R)^WW -menutrans Rotate\ &Up^WR ÏòÉÏÂÖ»»(&U)^WR -menutrans Rotate\ &Down^Wr ÏòÏÂÂÖ»»(&D)^Wr -menutrans &Equal\ Size^W= µÈ´ó(&E)^W= -menutrans &Max\ Height^W_ ×î´ó¸ß¶È(&M)^W -menutrans M&in\ Height^W1_ ×îС¸ß¶È(&I)^W1_ -menutrans Max\ &Width^W\| ×î´ó¿í¶È(&W)^W\| -menutrans Min\ Widt&h^W1\| ×îС¿í¶È(&H)^W1\| -" -" The popup menu -menutrans &Undo ³·Ïú(&U) -menutrans Cu&t ¼ôÇÐ(&T) -menutrans &Copy ¸´ÖÆ(&C) -menutrans &Paste Õ³Ìù(&P) -menutrans &Delete ɾ³ý(&D) -menutrans Select\ Blockwise Ñ¡Ôñ¿é -menutrans Select\ &Word Ñ¡Ôñµ¥´Ê(&W) -menutrans Select\ &Sentence Ñ¡Ôñ¾ä×Ó(&S) -menutrans Select\ Pa&ragraph Ñ¡Ôñ¶ÎÂä(&R) -menutrans Select\ &Line Ñ¡ÔñÐÐ(&L) -menutrans Select\ &Block Ñ¡Ôñ¿é(&B) -menutrans Select\ &All ȫѡ(&A) -" -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open ´ò¿ªÎļþ - tmenu ToolBar.Save ±£´æµ±Ç°Îļþ - tmenu ToolBar.SaveAll ±£´æÈ«²¿Îļþ - tmenu ToolBar.Print ´òÓ¡ - tmenu ToolBar.Undo ³·Ïú - tmenu ToolBar.Redo ÖØ×ö - tmenu ToolBar.Cut ¼ôÇе½¼ôÌù°å - tmenu ToolBar.Copy ¸´ÖƵ½¼ôÌù°å - tmenu ToolBar.Paste ´Ó¼ôÌù°åÕ³Ìù - tmenu ToolBar.Find ²éÕÒ... - tmenu ToolBar.FindNext ²éÕÒÏÂÒ»¸ö - tmenu ToolBar.FindPrev ²éÕÒÉÏÒ»¸ö - tmenu ToolBar.Replace ²éÕÒºÍÌæ»»... - tmenu ToolBar.LoadSesn ¼ÓÔػỰ - tmenu ToolBar.SaveSesn ±£´æµ±Ç°»á»° - tmenu ToolBar.RunScript ÔËÐÐ Vim ½Å±¾ - tmenu ToolBar.Make Ö´ÐÐ Make (:make) - tmenu ToolBar.RunCtags ÔÚµ±Ç°Ä¿Â¼½¨Á¢ tags (!ctags -R .) - tmenu ToolBar.TagJump Ìøתµ½¹â±êλÖÃµÄ tag - tmenu ToolBar.Help Vim °ïÖú - tmenu ToolBar.FindHelp ²éÕÒ Vim °ïÖú - endfun -endif - -" Syntax menu -menutrans &Syntax Óï·¨(&S) -menutrans &Show\ filetypes\ in\ menu Ôڲ˵¥ÖÐÏÔʾÎļþÀàÐÍ(&S) -menutrans &Off ¹Ø±Õ(&O) -menutrans &Manual ÊÖ¹¤(&M) -menutrans A&utomatic ×Ô¶¯(&U) -menutrans on/off\ for\ &This\ file ½ö¶ÔÕâ¸öÎļþ¿ª/¹Ø(&T) -menutrans Co&lor\ test É«²Ê²âÊÔ(&L) -menutrans &Highlight\ test ¸ßÁÁ²âÊÔ(&H) -menutrans &Convert\ to\ HTML ת»»³É\ HTML(&C) -menutrans Set\ '&syntax'\ only ½öÉ趨\ 'syntax'(&S) -menutrans Set\ '&filetype'\ too Ò²É趨\ 'filetype'(&F) diff --git a/share/vim/vim73/lang/menu_chinese_taiwan.950.vim b/share/vim/vim73/lang/menu_chinese_taiwan.950.vim deleted file mode 100644 index 60dc2a79..00000000 --- a/share/vim/vim73/lang/menu_chinese_taiwan.950.vim +++ /dev/null @@ -1,285 +0,0 @@ -" Menu Translations: Traditional Chinese -" Translated By: Hung-Te Lin -" Last Change: 2005/01/28 02:51:38 - -" {{{ Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 -" }}} - -scriptencoding cp950 - -" {{{ Help menu: complete -menutrans &Help »²§U»¡©ú(&H) -" ------------------------------------------------------------------------ -menutrans &Overview »¡©ú¤å¥óÁ`Äý(&O) -menutrans &User\ Manual ¨Ï¥ÎªÌ¤â¥U(&U) -menutrans &How-to\ links ¦p¦ó§@\.\.\.(&H) -menutrans &GUI ¹Ï«¬¬É­±(&G) -menutrans &Credits ·PÁÂ(&C) -menutrans Co&pying ª©Åv(&P) -menutrans &Sponsor/Register ÃÙ§U/µù¥U(&S) -menutrans O&rphans ¬@±Ï©t¨à(&R) -" ------------------------------------------------------------------------ -menutrans &Version µ{¦¡ª©¥»¸ê°T(&V) -menutrans &About Ãö©ó\ Vim(&A) -" }}} - -" {{{ File menu: complete -menutrans &File ÀÉ®×(&F) -" ------------------------------------------------------------------------ -menutrans &Open\.\.\.:e ¶}±Ò(&O)\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp ¤À³Îµøµ¡¨Ã¶}±Ò(&L):sp -menutrans &New:enew ½s¿è·sÀÉ®×(&N):enew -menutrans &Close:close Ãö³¬ÀÉ®×(&C):close -" ------------------------------------------------------------------------ -menutrans &Save:w Àx¦s(&S):w -menutrans Save\ &As\.\.\.:sav ¥t¦s·sÀÉ(&A)\.\.\.:sav -" ------------------------------------------------------------------------ -menutrans Split\ &Diff\ with\.\.\. ¤ñ¸û(&Diff)\.\.\. -menutrans Split\ Patched\ &By\.\.\. °õ¦æPatch(&B)\.\.\. -" ------------------------------------------------------------------------ -menutrans &Print ¦C¦L(&P) -" ------------------------------------------------------------------------ -menutrans Sa&ve-Exit:wqa Àx¦s¨ÃÂ÷¶}(&V):wqa -menutrans E&xit:qa Â÷¶}(&X):qa -" }}} - -" {{{ Edit menu -menutrans &Edit ½s¿è(&E) -" ------------------------------------------------------------------------ -menutrans &Undou ´_­ì(&U)u -menutrans &Redo^R ¨ú®ø¤W¦¸´_­ì(&R)^R -menutrans Rep&eat\. ­«½Æ¤W¦¸°Ê§@(&E)\. -" ------------------------------------------------------------------------ -menutrans Cu&t"+x °Å¤U(&T)"+x -menutrans &Copy"+y ½Æ»s(&C)"+y -menutrans &Paste"+gP ¶K¤W(&P)"+gP -menutrans Put\ &Before[p ¶K¨ì´å¼Ð«e(&B)[p -menutrans Put\ &After]p ¶K¨ì´å¼Ð«á(&A)]p -menutrans &Deletex §R°£(&D)x -menutrans &Select\ AllggVG ¥þ¿ï(&S)ggvG -" ------------------------------------------------------------------------ -menutrans &Find\.\.\. ´M§ä(&F)\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. ´M§ä¨Ã¨ú¥N(&L)\.\.\. -" ------------------------------------------------------------------------ -menutrans Settings\ &Window ³]©wµøµ¡(&W) -menutrans &Global\ Settings ¥þ°ì³]©w(&G) -menutrans F&ile\ Settings ³]©w¦¹ÀÉ®×(&I) -menutrans C&olor\ Scheme °t¦â³]©w(&O) -menutrans &Keymap Áä½L¹ïÀ³(&K) - " "{{{ Keymap: - menutrans None µL - " }}} -menutrans Select\ Fo&nt\.\.\. ³]©w¦r«¬(&N)\.\.\. -" }}} - -" {{{ Edit.FileSettings -menutrans Toggle\ Line\ &Numbering:set\ nu! ¤Á´«Åã¥Ü¦æ¸¹(&N):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! ¤Á´«Åã¥Ü¦æ§À¤ÎTAB(&L):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! ¤Á´«¦Û°Ê§é¦æÅã¥Ü(&W):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! ¤Á´«§é¦æÅã¥Ü¥i¥ô·NÂ_¥y(&R):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! ¤Á´«®i¶}TAB(&E):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! ¤Á´«¦Û°ÊÁY±Æ(&A):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! ¤Á´«¢Ñ»y¨¥ÁY±Æ(&C):set\ cin! -" ------------------------------------------------------------------------ -menutrans &Shiftwidth ÁY±Æ¼e«×(shiftwidth)(&S) -menutrans Soft\ &Tabstop ³nÅé¼ÒÀÀTAB(softtabstop)(&T) -menutrans Te&xt\ Width\.\.\. ¤å¦r­¶­±¼e«×(textwidth)(&X)\.\.\. -menutrans &File\ Format\.\.\. ³]©wÀɮ׮榡(¹ïÀ³§@·~¨t²Î)(&F)\.\.\. -" }}} - -" {{{ Edit.GlobalSettings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! ¤Á´«°ª«G«×·j´M¦r¦ê(&H):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! ¤Á´«©¿²¤¤j¤p¼g(&I):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! ¤Á´«Åã¥Ü¹ïÀ³¬A¸¹(&S):set\ sm! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! ¤Á´«¶Ç²ÎVi¬Û®e¼Ò¦¡(&O):set\ cp! -menutrans &Context\ lines ¥»¤å«e«á«O¯d¦æ¼Æ(scrolloff)(&C) -menutrans &Virtual\ Edit ´å¼Ð¥ô·N²¾°Ê(virtualedit)(&V) - " {{{ Edit.GlobalSettings.VirtualEdit - menutrans Never ¤£¨Ï¥Î - menutrans Block\ Selection °Ï¶ô¿ï¾Ü®É - menutrans Insert\ mode ´¡¤J¼Ò¦¡®É - menutrans Block\ and\ Insert °Ï¶ô»P´¡¤J¼Ò¦¡ - menutrans Always ¤@ª½¶}±Ò - " }}} -menutrans Toggle\ Insert\ &Mode:set\ im! ¤Á´«´¡¤J¼Ò¦¡(&M):set\ im! -menutrans Search\ &Path\.\.\. ·j´M¸ô®|(&P)\.\.\. -menutrans Ta&g\ Files\.\.\. Tag\ ¼ÐÅÒ¯Á¤ÞÀÉ®×(&G)\.\.\. -" ------------------------------------------------------------------------ -menutrans Toggle\ &Toolbar ¤Á´«¨Ï¥Î¤u¨ã¦C(&T) -menutrans Toggle\ &Bottom\ Scrollbar ¤Á´«¨Ï¥Î©³ºÝ±²°Ê¶b(&B) -menutrans Toggle\ &Left\ Scrollbar ¤Á´«¨Ï¥Î¥ªºÝ±²°Ê¶b(&L) -menutrans Toggle\ &Right\ Scrollbar ¤Á´«¨Ï¥Î¥kºÝ±²°Ê¶b(&R) -" }}} - -" {{{ Tools menu: complete -menutrans &Tools ¤u¨ã(&T) -" ------------------------------------------------------------------------ -menutrans &Jump\ to\ this\ tagg^] À˯Á´å¼Ð³Bªº¼ÐÅÒÃöÁä¦r(tag)(&J)g^] -menutrans Jump\ &back^T ¸õ¦^À˯Á«eªº¦ì¸m(&B)^T -menutrans Build\ &Tags\ File «Ø¥ß¼ÐÅÒ¯Á¤ÞÀÉ\ Tags(&T) -" ------------------------------------------------------------------------ -menutrans &Folding ÂÐÅ|(Fold)³]©w(&F) - " {{{ Tools.Fold - menutrans &Enable/Disable\ foldszi ¤Á´«¨Ï¥Î\ Folding(&E)zi - menutrans &View\ Cursor\ Linezv À˵ø¦¹¼h\ Fold(&V)zv - menutrans Vie&w\ Cursor\ Line\ onlyzMzx ¥uÀ˵ø¦¹\ Fold(&W)zMzx - menutrans C&lose\ more\ foldszm ¦¬°_¤@¼h\ Folds(&L)zm - menutrans &Close\ all\ foldszM ¦¬°_©Ò¦³\ Folds(&C)zM - menutrans O&pen\ more\ foldszr ¥´¶}¤@¼h\ Folds(&P)zr - menutrans &Open\ all\ foldszR ¥´¶}©Ò¦³\ Folds(&O)zR - menutrans Fold\ Met&hod Folding\ ¤è¦¡(&H) - " {{{ Tools.Fold.Method - menutrans M&anual ¤â°Ê«Ø¥ß(&A) - menutrans I&ndent ¨Ì·ÓÁY±Æ(&N) - menutrans E&xpression ¦Û­q¹Bºâ¦¡(&X) - menutrans S&yntax ¨Ì·Ó»yªk³]©w(&Y) - menutrans &Diff Diff(&D) - menutrans Ma&rker ¼Ð°O(Marker)(&R) - " }}} - " ------------------------------------------------------------------------ - menutrans Create\ &Foldzf «Ø¥ß\ Fold(&F)zf - menutrans &Delete\ Foldzd §R°£\ Fold(&D)zd - menutrans Delete\ &All\ FoldszD §R°£©Ò¦³\ Fold(&A)zD - " ------------------------------------------------------------------------ - menutrans Fold\ column\ &width ³]©w\ FoldÄæ¼e(&W) - " }}} -menutrans &Diff Diff(&D) - " {{{ Tools.Diff - menutrans &Update §ó·s(&U) - menutrans &Get\ Block ¨ú±o°Ï¶ô(&G) - menutrans &Put\ Block ¶K¤W°Ï¶ô(&P) - " }}} -" ------------------------------------------------------------------------ -menutrans &Make:make °õ¦æ\ Make(&M):make -menutrans &List\ Errors:cl ¦C¥X½sĶ¿ù»~(&E):cl -menutrans L&ist\ Messages:cl! ¦C¥X©Ò¦³°T®§(&I):cl! -menutrans &Next\ Error:cn ¤U¤@­Ó½sĶ¿ù»~³B(&N):cn -menutrans &Previous\ Error:cp ¤W¤@­Ó½sĶ¿ù»~³B(&P):cp -menutrans &Older\ List:cold À˵ø¿ù»~¦Cªí(&O):cold -menutrans N&ewer\ List:cnew À˵ø·s¿ù»~¦Cªí(&E):cnew -menutrans Error\ &Window ¿ù»~°T®§µøµ¡(&W) - " {{{ Tools.ErrorWindow - menutrans &Update:cwin §ó·s(&U):cwin - menutrans &Open:copen ¶}±Ò(&O):copen - menutrans &Close:cclose Ãö³¬(&C):cclose - " }}} -menutrans &Set\ Compiler ³]©w½sĶ¾¹Compiler(&S) -" ------------------------------------------------------------------------ -menutrans &Convert\ to\ HEX:%!xxd Âà´«¦¨16¶i¦ì½X(&C):%!xxd -menutrans Conve&rt\ back:%!xxd\ -r ±q16¶i¦ì½XÂà´«¦^¤å¦r(&R):%!xxd\ -r -" }}} - -" {{{ Syntax menu: compete -menutrans &Syntax »yªk®ÄªG(&S) -" ------------------------------------------------------------------------ -menutrans &Show\ filetypes\ in\ menu Åã¥Ü©Ò¦³¥i¥ÎÀɮ׮榡(&S) -menutrans Set\ '&syntax'\ only ¥u¨Ï¥Î\ 'syntax'(&S) -menutrans Set\ '&filetype'\ too ¨Ï¥Î\ 'syntax'+'filetype'(&F) -menutrans &Off Ãö³¬®ÄªG(&O) -menutrans &Manual ¤â°Ê³]©w(&M) -menutrans A&utomatic ¦Û°Ê³]©w(&U) -menutrans on/off\ for\ &This\ file ¥u¤Á´«¦¹Àɪº®ÄªG³]©w(&T) -" ------------------------------------------------------------------------ -menutrans Co&lor\ test ¦â±mÅã¥Ü´ú¸Õ(&L) -menutrans &Highlight\ test »yªk®ÄªG´ú¸Õ(&H) -menutrans &Convert\ to\ HTML Âà´«¦¨\ HTML\ ®æ¦¡(&C) -" }}} - -" {{{ Buffers menu: complete -menutrans &Buffers ½w½Ä°Ï(&B) -" ------------------------------------------------------------------------ -menutrans &Refresh\ menu §ó·s(&R) -menutrans &Delete §R°£(&D) -menutrans &Alternate ¤Á´«¤W¦¸½s¿è½w½Ä°Ï(&A) -menutrans &Next ¤U¤@­Ó(&N) -menutrans &Previous «e¤@­Ó(&P) -" ------------------------------------------------------------------------ -" menutrans [No\ file] [µLÀÉ®×] -" }}} - -" {{{ Window menu: complete -menutrans &Window µøµ¡(&W) -" ------------------------------------------------------------------------ -menutrans &New^Wn ¶}·sµøµ¡(&N)^Wn -menutrans S&plit^Ws ¤À³Îµøµ¡(&P)^Ws -menutrans Sp&lit\ To\ #^W^^ ¤À³Î¨ì#(&L)^W^^ -menutrans Split\ &Vertically^Wv ««ª½¤À³Î(&V)^Wv -menutrans Split\ File\ E&xplorer ÀÉ®×Á`ºÞ¦¡¤À³Î(&X) -" ------------------------------------------------------------------------ -menutrans &Close^Wc Ãö³¬µøµ¡(&C)^Wc -menutrans Close\ &Other(s)^Wo Ãö³¬¨ä¥¦µøµ¡(&O)^Wo -" ------------------------------------------------------------------------ -menutrans Move\ &To ²¾¦Ü(&T) - " {{{ Window.MoveTo - menutrans &Top^WK ³»ºÝ(&T)^WK - menutrans &Bottom^WJ ©³ºÝ(&B)^WJ - menutrans &Left\ side^WH ¥ªÃä(&L)^WH - menutrans &Right\ side^WL ¥kÃä(&R)^WL - " }}} -menutrans Rotate\ &Up^WR ¤W²¾µøµ¡(&U)^WR -menutrans Rotate\ &Down^Wr ¤U²¾µøµ¡(&D)^Wr -" ------------------------------------------------------------------------ -menutrans &Equal\ Size^W= ©Ò¦³µøµ¡µ¥°ª(&E)^W= -menutrans &Max\ Height^W_ ³Ì¤j°ª«×(&M)^W -menutrans M&in\ Height^W1_ ³Ì¤p°ª«×(&I)^W1_ -menutrans Max\ &Width^W\| ³Ì¤j¼e«×(&W)^W\| -menutrans Min\ Widt&h^W1\| ³Ì¤p¼e«×(&H)^W1\| -" }}} - -" {{{ The popup menu: complete -menutrans &Undo ´_­ì(&U) -" ------------------------------------------------------------------------ -menutrans Cu&t °Å¤U(&T) -menutrans &Copy ½Æ»s(&C) -menutrans &Paste ¶K¤W(&P) -menutrans &Delete §R°£(&D) -" ------------------------------------------------------------------------ -menutrans Select\ Blockwise Blockwise¦¡¿ï¾Ü -menutrans Select\ &Word ¿ï¾Ü³æ¦r(&W) -menutrans Select\ &Line ¿ï¾Ü¦æ(&L) -menutrans Select\ &Block ¿ï¾Ü°Ï¶ô(&B) -menutrans Select\ &All ¥þ¿ï(&A) -" }}} - -" {{{ The GUI toolbar: complete -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open ¶}±ÒÀÉ®× - tmenu ToolBar.Save Àx¦s¥Ø«e½s¿è¤¤ªºÀÉ®× - tmenu ToolBar.SaveAll Àx¦s¥þ³¡ÀÉ®× - tmenu ToolBar.Print ¦C¦L -" ------------------------------------------------------------------------ - tmenu ToolBar.Undo ´_­ì¤W¦¸ÅÜ°Ê - tmenu ToolBar.Redo ¨ú®ø¤W¦¸´_­ì°Ê§@ -" ------------------------------------------------------------------------ - tmenu ToolBar.Cut °Å¤U¦Ü°Å¶Kï - tmenu ToolBar.Copy ½Æ»s¨ì°Å¶Kï - tmenu ToolBar.Paste ¥Ñ°Å¶Kï¶K¤W -" ------------------------------------------------------------------------ - tmenu ToolBar.Find ´M§ä... - tmenu ToolBar.FindNext §ä¤U¤@­Ó - tmenu ToolBar.FindPrev §ä¤W¤@­Ó - tmenu ToolBar.Replace ¨ú¥N... -" ------------------------------------------------------------------------ - tmenu ToolBar.LoadSesn ¸ü¤J Session - tmenu ToolBar.SaveSesn Àx¦s¥Ø«eªº Session - tmenu ToolBar.RunScript °õ¦æ Vim µ{¦¡ÀÉ -" ------------------------------------------------------------------------ - tmenu ToolBar.Make °õ¦æ Make - tmenu ToolBar.Shell ¶}±Ò¤@­Ó©R¥O¦Cµøµ¡ DosBox - tmenu ToolBar.RunCtags °õ¦æ ctags - tmenu ToolBar.TagJump ¸õ¨ì¥Ø«e´å¼Ð¦ì¸mªº tag - tmenu ToolBar.Help Vim »²§U»¡©ú - tmenu ToolBar.FindHelp ·j´M Vim »¡©ú¤å¥ó - endfun -endif -" }}} - -" vim:foldmethod=marker:nowrap:foldcolumn=2:foldlevel=1 diff --git a/share/vim/vim73/lang/menu_cs_cz.iso_8859-2.vim b/share/vim/vim73/lang/menu_cs_cz.iso_8859-2.vim deleted file mode 100644 index a5bc82e9..00000000 --- a/share/vim/vim73/lang/menu_cs_cz.iso_8859-2.vim +++ /dev/null @@ -1,264 +0,0 @@ -" Menu Translations: Czech for ISO-8859-2 -" Maintainer: Jiri Brezina -" vim:set foldmethod=marker: -" $Revision: 1.3 $ -" $Date: 2005/12/19 22:08:24 $ - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding ISO-8859-2 - -" {{{ File menu -menutrans &File &Soubor -menutrans &Open\.\.\.:e &Otevøít\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Otevøít\ v\ no&vém\ oknì\.\.\.:sp -menutrans &New:enew &Nový:enew -menutrans &Close:close &Zavøít:close -menutrans &Save:w &Ulo¾it:w -menutrans Save\ &As\.\.\.:sav Ulo¾it\ &jako\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Rozdìlit\ okno\ -\ &Diff\.\.\. -menutrans Split\ Patched\ &By\.\.\. Rozdìlit\ okno\ -\ &Patch\.\.\. -menutrans &Print &Tisk -menutrans Sa&ve-Exit:wqa U&lo¾it\ -\ Konec:wqa -menutrans E&xit:qa &Konec:qa -" }}} - -" {{{ Edit menu -menutrans &Edit Úpr&avy -menutrans &Undou &Zpìtu -menutrans &Redo^R Z&ru¹it\ vrácení^R -menutrans Rep&eat\. &Opakovat\. -menutrans Cu&t"+x &Vyøíznout"+x -menutrans &Copy"+y &Kopírovat"+y -menutrans &Paste"+gP V&lo¾it"+gP -menutrans Put\ &Before[p Vlo¾it\ &pøed[p -menutrans Put\ &After]p Vlo¾i&t\ za]p -menutrans &Deletex &Smazatx -menutrans &Select\ AllggVG Vy&brat\ v¹eggVG -menutrans &Find\.\.\. &Hledat\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. &Nahradit\.\.\. -menutrans Options\.\.\. Volb&y\.\.\. -menutrans Settings\ &Window Nastav&ení\ okna - " {{{2 Edit -1 -menutrans &Global\ Settings &Globální\ nastavení -menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Pøepnout\ zvýraznìní\ vzoru:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Pøepnout\ ignorování\ &VERZÁLEK:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Pøepnout\ &Showmatch\ \{\(\[\])\}:set\ sm! -menutrans &Context\ lines Zobrazit\ konte&xt\ kurzoru -menutrans &Virtual\ Edit Virtuální\ p&ozice\ kurzoru - menutrans Never Nikdy - menutrans Block\ Selection Výbìr\ Bloku - menutrans Insert\ mode Insert\ mód - menutrans Block\ and\ Insert Blok\ a\ Insert - menutrans Always V¾dycky -menutrans Toggle\ Insert\ &Mode:set\ im! Pøepnout\ Insert\ mó&d:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Pøepnout\ kompatibilní\ re¾im\ s\ 'vi':set\ cp! -menutrans Search\ &Path\.\.\. Nastavit\ &cestu\ k\ prohledávání\.\.\. -menutrans Ta&g\ Files\.\.\. Ta&g\ soubory\.\.\. -menutrans Toggle\ &Toolbar Pøepnout\ &Toolbar -menutrans Toggle\ &Bottom\ Scrollbar Pø&epnout\ dolní\ rolovací\ li¹tu -menutrans Toggle\ &Left\ Scrollbar Pøepnout\ &levou\ rolovací\ li¹tu -menutrans Toggle\ &Right\ Scrollbar Pøepnout\ p&ravou\ rolovací\ li¹tu - " {{{2 Edit -2 -menutrans F&ile\ Settings Nastavení\ so&uboru -menutrans Toggle\ Line\ &Numbering:set\ nu! Pøepnout\ èíslování\ øá&dkù:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Pøepnout\ &List\ mód:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Pøepnout\ zala&mování\ øádkù:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Pøepnout\ zl&om\ ve\ slovì:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Pøepnout\ &expand-tab:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Pøepnout\ &auto-indent:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Pøepnout\ &C-indenting:set\ cin! -menutrans &Shiftwidth Nastav&it\ ¹íøku\ od&sazení -menutrans Soft\ &Tabstop Nastavit\ Soft\ &Tabstop -menutrans Te&xt\ Width\.\.\. ©íøka\ te&xtu\.\.\. -menutrans &File\ Format\.\.\. &Formát\ souboru\.\.\. - " {{{2 Edit -3 -menutrans C&olor\ Scheme Barevné\ s&chéma -menutrans &Keymap Klávesová\ m&apa -menutrans Select\ Fo&nt\.\.\. Vybrat\ pís&mo\.\.\. -" }}}1 - -" {{{ Programming menu -menutrans &Tools Nást&roje -menutrans &Jump\ to\ this\ tagg^] &Skoèit\ na\ tagg^] -menutrans Jump\ &back^T Skoèit\ &zpìt^T -menutrans Build\ &Tags\ File &Vytvoøit\ soubor\ tagù - -menutrans &Spelling &Kontrola\ pravopisu -menutrans &Spell\ Check\ On Kontrola\ pravopisu\ &zapnuta -menutrans Spell\ Check\ &Off Kontrola\ pravopisu\ &vypnuta -menutrans To\ Next\ error]s &Dal¹í\ chyba]s -menutrans To\ Previous\ error[s &Pøedchozí\ chyba[s -menutrans Suggest\ Correctionsz? &Návrh\ opravz? -menutrans Repeat\ correction:spellrepall Zopakovat\ &opravu:spellrepall -menutrans Set\ language\ to\ "en" Nastav\ jazyk\ na\ "en" -menutrans Set\ language\ to\ "en_au" Nastav\ jazyk\ na\ "en_au" -menutrans Set\ language\ to\ "en_ca" Nastav\ jazyk\ na\ "en_ca" -menutrans Set\ language\ to\ "en_gb" Nastav\ jazyk\ na\ "en_gb" -menutrans Set\ language\ to\ "en_nz" Nastav\ jazyk\ na\ "en_nz" -menutrans Set\ language\ to\ "en_us" Nastav\ jazyk\ na\ "en_us" -menutrans Set\ language\ to\ "cz" Nastav\ jazyk\ na\ "cz" -menutrans Set\ language\ to\ "cs_cz" Nastav\ jazyk\ na\ "cs_cz" -menutrans &Find\ More\ Languages Nalézt\ dal¹í\ &jazyky - -menutrans &Folding &Foldy -menutrans &Enable/Disable\ foldszi &Ano/Nezi -menutrans &View\ Cursor\ Linezv &Zobrazit\ øádek\ kurzoruzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Zo&brazit\ pouze\ øádek\ kurzoru\ zMzx -menutrans C&lose\ more\ foldszm &Vyjmout\ jednu\ úroveò\ foldùzm -menutrans &Close\ all\ foldszM Zavøí&t\ v¹echny\ foldyzM -menutrans O&pen\ more\ foldszr Pøidat\ jedn&u\ úroveò\ foldùzr -menutrans &Open\ all\ foldszR &Otevøít\ v¹echny\ foldyzR -menutrans Fold\ Met&hod Metoda\ &skládání - "menutrans M&anual &Ruènì - "menutrans I&ndent &Odsazení - "menutrans E&xpression &Výraz - "menutrans S&yntax &Syntax - "menutrans &Diff &Diff - "menutrans Ma&rker Ma&rker -menutrans Create\ &Foldzf Vytvoøit\ &foldzf -menutrans &Delete\ Foldzd Vymazat\ fol&dzd -menutrans Delete\ &All\ FoldszD V&ymazat\ v¹echny\ foldyzD -menutrans Fold\ col&umn\ width Sloupec\ zob&razení\ foldù - -menutrans &Update &Obnovit -menutrans &Get\ Block &Sejmout\ Blok -menutrans &Put\ Block &Vlo¾it\ Blok -menutrans &Make:make &Make:make -menutrans &List\ Errors:cl Výpis\ &chyb:cl -menutrans L&ist\ Messages:cl! Výp&is\ zpráv:cl! -menutrans &Next\ Error:cn Dal¹í\ ch&yba:cn -menutrans &Previous\ Error:cp &Pøedchozí\ chyba:cp -menutrans &Older\ List:cold Sta&r¹í\ seznam:cold -menutrans N&ewer\ List:cnew N&ovìj¹í\ seznam:cnew -menutrans Error\ &Window Chybové\ o&kno -menutrans SeT\ Compiler Nas&tavení\ kompilátoru -menutrans &Update:cwin O&bnovit:cwin -menutrans &Open:copen &Otevøít:copen -menutrans &Close:cclose &Zavøít:cclose -menutrans &Set\ Compiler N&astavit\ kompilátor - -menutrans &Convert\ to\ HEX:%!xxd Pøevést\ do\ ¹estnáctkového\ formát&u:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Pø&evést\ zpìt:%!xxd\ -r -" }}} - -" {{{ Syntax menu -menutrans &Syntax Synta&xe -menutrans Set\ '&syntax'\ only Nastavit\ pouze\ 'synta&x' -menutrans Set\ '&filetype'\ too Nastavit\ také\ '&filetype' -menutrans &Off &Vypnout -menutrans &Manual &Ruènì -menutrans A&utomatic A&utomaticky -menutrans on/off\ for\ &This\ file &Pøepnout\ (pro\ tento\ soubor) -menutrans o&ff\ (this\ file) vyp&nout\ (pro\ tento\ soubor) -menutrans Co&lor\ test Test\ &barev -menutrans &Highlight\ test &Test\ zvýrazòování -menutrans &Convert\ to\ HTML Pøevést\ &do\ HTML -menutrans &Show\ filetypes\ in\ menu &Zobrazit\ výbìr\ mo¾ností -" }}} - -" {{{ Menu Buffers -menutrans &Buffers &Buffery -menutrans &Refresh\ menu &Obnovit\ menu -menutrans &Delete Z&ru¹it -menutrans &Alternate &Zmìnit -menutrans &Next &Dal¹í -menutrans &Previous &Pøedchozí -menutrans [No\ File] [®ádný\ soubor] -" }}} - -" {{{ Menu Window -menutrans &Window &Okna -menutrans &New^Wn &Nové^Wn -menutrans S&plit^Ws &Rozdìlit^Ws -menutrans Sp&lit\ To\ #^W^^ Ro&zdìlit\ na\ #^W^^ -menutrans Split\ &Vertically^Wv Rozdìlit\ &vertikálnì^Wv -menutrans Split\ File\ E&xplorer Rozdìlit\ -\ File\ E&xplorer -menutrans Move\ &To &Pøesun -menutrans &Top^WK &Nahoru^WK -menutrans &Bottom^WJ &Dolu^WJ -menutrans &Left\ side^WH &Vlevo^WH -menutrans &Right\ side^WL Vp&ravo^WL - -menutrans &Close^Wc Zavøí&t^Wc -menutrans Close\ &Other(s)^Wo Zavøít\ &ostatní^Wo -menutrans Ne&xt^Ww &Dal¹í^Ww -menutrans P&revious^WW &Pøedchozí^WW -menutrans &Equal\ Size^W= &Stejná\ vý¹ka^W= -menutrans &Max\ Height^W_ Maximální\ vý¹&ka^W_ -menutrans M&in\ Height^W1_ M&inimální\ vý¹ka^W1_ -menutrans Max\ &Width^W\| &Maximální\ ¹íøka^W\| -menutrans Min\ Widt&h^W1\| Minimální\ ¹íøk&a^W1\| -menutrans Rotate\ &Up^WR Rotovat\ na&horu^WR -menutrans Rotate\ &Down^Wr Rotovat\ &dolù^Wr - -" {{{ Help menu -menutrans &Help &Nápovìda -menutrans &Overview &Pøehled -menutrans &User\ Manual &U¾ivatelský\ Manuál -menutrans &How-to\ links Ho&wto -menutrans &GUI &Grafické\ rozhraní -menutrans &Credits &Autoøi -menutrans Co&pying &Licenèní\ politika -menutrans &Sponsor/Register Sponzorování/&Registrace -menutrans &Find\.\.\. &Hledat\.\.\. -menutrans O&rphans O&siøelé\ dìti -menutrans &Version &Verze -menutrans &About &O\ aplikaci -" }}} - -" {{{ The popup menu -menutrans &Undo &Zpìt -menutrans Cu&t &Vyøíznout -menutrans &Copy &Kopírovat -menutrans &Paste &Vlo¾it -menutrans &Delete &Smazat -menutrans Select\ Blockwise Vybrat\ blokovì -menutrans Select\ &Word Vybrat\ &slovo -menutrans Select\ &Line Vybrat\ &øádek -menutrans Select\ &Block Vybrat\ &blok -menutrans Select\ &All Vybrat\ &v¹e -" }}} - -" {{{ The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Otevøít soubor - tmenu ToolBar.Save Ulo¾it soubor - tmenu ToolBar.SaveAll Ulo¾it v¹echny soubory - tmenu ToolBar.Print Tisk - tmenu ToolBar.Undo Zpìt - tmenu ToolBar.Redo Zru¹it vrácení - tmenu ToolBar.Cut Vyøíznout - tmenu ToolBar.Copy Kopírovat - tmenu ToolBar.Paste Vlo¾it - tmenu ToolBar.Find Hledat... - tmenu ToolBar.FindNext Hledat dal¹í - tmenu ToolBar.FindPrev Hledat pøedchozí - tmenu ToolBar.Replace Nahradit... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nové okno - tmenu ToolBar.WinSplit Rozdìlit okno - tmenu ToolBar.WinMax Maximalizovat okno - tmenu ToolBar.WinMin Minimalizovat okno - tmenu ToolBar.WinClose Zavøít okno - endif - tmenu ToolBar.LoadSesn Naèíst sezení - tmenu ToolBar.SaveSesn Ulo¾it sezení - tmenu ToolBar.RunScript Spustit skript - tmenu ToolBar.Make Spustit make - tmenu ToolBar.Shell Spustit shell - tmenu ToolBar.RunCtags Spustit ctags - tmenu ToolBar.TagJump Skoèit na tag pod kurzorem - tmenu ToolBar.Help Nápovìda - tmenu ToolBar.FindHelp Hledat nápovìdu k... - endfun -endif -" }}} diff --git a/share/vim/vim73/lang/menu_cs_cz.latin1.vim b/share/vim/vim73/lang/menu_cs_cz.latin1.vim deleted file mode 100644 index efb28a00..00000000 --- a/share/vim/vim73/lang/menu_cs_cz.latin1.vim +++ /dev/null @@ -1,3 +0,0 @@ -" Menu Translations: Czech - -source :p:h/menu_czech_czech_republic.1252.vim diff --git a/share/vim/vim73/lang/menu_czech_czech_republic.1250.vim b/share/vim/vim73/lang/menu_czech_czech_republic.1250.vim deleted file mode 100644 index 4f21e892..00000000 --- a/share/vim/vim73/lang/menu_czech_czech_republic.1250.vim +++ /dev/null @@ -1,264 +0,0 @@ -" Menu Translations: Czech for MS-Windows -" Maintainer: Jiri Brezina -" vim:set foldmethod=marker: -" $Revision: 1.3 $ -" $Date: 2005/12/19 22:13:30 $ - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding cp1250 - -" {{{ File menu -menutrans &File &Soubor -menutrans &Open\.\.\.:e &Otevøít\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Otevøít\ v\ no&vém\ oknì\.\.\.:sp -menutrans &New:enew &Nový:enew -menutrans &Close:close &Zavøít:close -menutrans &Save:w &Uložit:w -menutrans Save\ &As\.\.\.:sav Uložit\ &jako\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Rozdìlit\ okno\ -\ &Diff\.\.\. -menutrans Split\ Patched\ &By\.\.\. Rozdìlit\ okno\ -\ &Patch\.\.\. -menutrans &Print &Tisk -menutrans Sa&ve-Exit:wqa U&ložit\ -\ Konec:wqa -menutrans E&xit:qa &Konec:qa -" }}} - -" {{{ Edit menu -menutrans &Edit Úpr&avy -menutrans &Undou &Zpìtu -menutrans &Redo^R Z&rušit\ vrácení^R -menutrans Rep&eat\. &Opakovat\. -menutrans Cu&t"+x &Vyøíznout"+x -menutrans &Copy"+y &Kopírovat"+y -menutrans &Paste"+gP V&ložit"+gP -menutrans Put\ &Before[p Vložit\ &pøed[p -menutrans Put\ &After]p Vloži&t\ za]p -menutrans &Deletex &Smazatx -menutrans &Select\ AllggVG Vy&brat\ všeggVG -menutrans &Find\.\.\. &Hledat\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. &Nahradit\.\.\. -menutrans Options\.\.\. Volb&y\.\.\. -menutrans Settings\ &Window Nastav&ení\ okna - " {{{2 Edit -1 -menutrans &Global\ Settings &Globální\ nastavení -menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Pøepnout\ zvýraznìní\ vzoru:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Pøepnout\ ignorování\ &VERZÁLEK:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Pøepnout\ &Showmatch\ \{\(\[\])\}:set\ sm! -menutrans &Context\ lines Zobrazit\ konte&xt\ kurzoru -menutrans &Virtual\ Edit Virtuální\ p&ozice\ kurzoru - menutrans Never Nikdy - menutrans Block\ Selection Výbìr\ Bloku - menutrans Insert\ mode Insert\ mód - menutrans Block\ and\ Insert Blok\ a\ Insert - menutrans Always Vždycky -menutrans Toggle\ Insert\ &Mode:set\ im! Pøepnout\ Insert\ mó&d:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Pøepnout\ kompatibilní\ režim\ s\ 'vi':set\ cp! -menutrans Search\ &Path\.\.\. Nastavit\ &cestu\ k\ prohledávání\.\.\. -menutrans Ta&g\ Files\.\.\. Ta&g\ soubory\.\.\. -menutrans Toggle\ &Toolbar Pøepnout\ &Toolbar -menutrans Toggle\ &Bottom\ Scrollbar Pø&epnout\ dolní\ rolovací\ lištu -menutrans Toggle\ &Left\ Scrollbar Pøepnout\ &levou\ rolovací\ lištu -menutrans Toggle\ &Right\ Scrollbar Pøepnout\ p&ravou\ rolovací\ lištu - " {{{2 Edit -2 -menutrans F&ile\ Settings Nastavení\ so&uboru -menutrans Toggle\ Line\ &Numbering:set\ nu! Pøepnout\ èíslování\ øá&dkù:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Pøepnout\ &List\ mód:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Pøepnout\ zala&mování\ øádkù:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Pøepnout\ zl&om\ ve\ slovì:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Pøepnout\ &expand-tab:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Pøepnout\ &auto-indent:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Pøepnout\ &C-indenting:set\ cin! -menutrans &Shiftwidth Nastav&it\ šíøku\ od&sazení -menutrans Soft\ &Tabstop Nastavit\ Soft\ &Tabstop -menutrans Te&xt\ Width\.\.\. Šíøka\ te&xtu\.\.\. -menutrans &File\ Format\.\.\. &Formát\ souboru\.\.\. - " {{{2 Edit -3 -menutrans C&olor\ Scheme Barevné\ s&chéma -menutrans &Keymap Klávesová\ m&apa -menutrans Select\ Fo&nt\.\.\. Vybrat\ pís&mo\.\.\. -" }}}1 - -" {{{ Programming menu -menutrans &Tools Nást&roje -menutrans &Jump\ to\ this\ tagg^] &Skoèit\ na\ tagg^] -menutrans Jump\ &back^T Skoèit\ &zpìt^T -menutrans Build\ &Tags\ File &Vytvoøit\ soubor\ tagù - -menutrans &Spelling &Kontrola\ pravopisu -menutrans &Spell\ Check\ On Kontrola\ pravopisu\ &zapnuta -menutrans Spell\ Check\ &Off Kontrola\ pravopisu\ &vypnuta -menutrans To\ Next\ error]s &Další\ chyba]s -menutrans To\ Previous\ error[s &Pøedchozí\ chyba[s -menutrans Suggest\ Correctionsz? &Návrh\ opravz? -menutrans Repeat\ correction:spellrepall Zopakovat\ &opravu:spellrepall -menutrans Set\ language\ to\ "en" Nastav\ jazyk\ na\ "en" -menutrans Set\ language\ to\ "en_au" Nastav\ jazyk\ na\ "en_au" -menutrans Set\ language\ to\ "en_ca" Nastav\ jazyk\ na\ "en_ca" -menutrans Set\ language\ to\ "en_gb" Nastav\ jazyk\ na\ "en_gb" -menutrans Set\ language\ to\ "en_nz" Nastav\ jazyk\ na\ "en_nz" -menutrans Set\ language\ to\ "en_us" Nastav\ jazyk\ na\ "en_us" -menutrans Set\ language\ to\ "cz" Nastav\ jazyk\ na\ "cz" -menutrans Set\ language\ to\ "cs_cz" Nastav\ jazyk\ na\ "cs_cz" -menutrans &Find\ More\ Languages Nalézt\ další\ &jazyky - -menutrans &Folding &Foldy -menutrans &Enable/Disable\ foldszi &Ano/Nezi -menutrans &View\ Cursor\ Linezv &Zobrazit\ øádek\ kurzoruzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Zo&brazit\ pouze\ øádek\ kurzoru\ zMzx -menutrans C&lose\ more\ foldszm &Vyjmout\ jednu\ úroveò\ foldùzm -menutrans &Close\ all\ foldszM Zavøí&t\ všechny\ foldyzM -menutrans O&pen\ more\ foldszr Pøidat\ jedn&u\ úroveò\ foldùzr -menutrans &Open\ all\ foldszR &Otevøít\ všechny\ foldyzR -menutrans Fold\ Met&hod Metoda\ &skládání - "menutrans M&anual &Ruènì - "menutrans I&ndent &Odsazení - "menutrans E&xpression &Výraz - "menutrans S&yntax &Syntax - "menutrans &Diff &Diff - "menutrans Ma&rker Ma&rker -menutrans Create\ &Foldzf Vytvoøit\ &foldzf -menutrans &Delete\ Foldzd Vymazat\ fol&dzd -menutrans Delete\ &All\ FoldszD V&ymazat\ všechny\ foldyzD -menutrans Fold\ col&umn\ width Sloupec\ zob&razení\ foldù - -menutrans &Update &Obnovit -menutrans &Get\ Block &Sejmout\ Blok -menutrans &Put\ Block &Vložit\ Blok -menutrans &Make:make &Make:make -menutrans &List\ Errors:cl Výpis\ &chyb:cl -menutrans L&ist\ Messages:cl! Výp&is\ zpráv:cl! -menutrans &Next\ Error:cn Další\ ch&yba:cn -menutrans &Previous\ Error:cp &Pøedchozí\ chyba:cp -menutrans &Older\ List:cold Sta&rší\ seznam:cold -menutrans N&ewer\ List:cnew N&ovìjší\ seznam:cnew -menutrans Error\ &Window Chybové\ o&kno -menutrans SeT\ Compiler Nas&tavení\ kompilátoru -menutrans &Update:cwin O&bnovit:cwin -menutrans &Open:copen &Otevøít:copen -menutrans &Close:cclose &Zavøít:cclose -menutrans &Set\ Compiler N&astavit\ kompilátor - -menutrans &Convert\ to\ HEX:%!xxd Pøevést\ do\ šestnáctkového\ formát&u:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Pø&evést\ zpìt:%!xxd\ -r -" }}} - -" {{{ Syntax menu -menutrans &Syntax Synta&xe -menutrans Set\ '&syntax'\ only Nastavit\ pouze\ 'synta&x' -menutrans Set\ '&filetype'\ too Nastavit\ také\ '&filetype' -menutrans &Off &Vypnout -menutrans &Manual &Ruènì -menutrans A&utomatic A&utomaticky -menutrans on/off\ for\ &This\ file &Pøepnout\ (pro\ tento\ soubor) -menutrans o&ff\ (this\ file) vyp&nout\ (pro\ tento\ soubor) -menutrans Co&lor\ test Test\ &barev -menutrans &Highlight\ test &Test\ zvýrazòování -menutrans &Convert\ to\ HTML Pøevést\ &do\ HTML -menutrans &Show\ filetypes\ in\ menu &Zobrazit\ výbìr\ možností -" }}} - -" {{{ Menu Buffers -menutrans &Buffers &Buffery -menutrans &Refresh\ menu &Obnovit\ menu -menutrans &Delete Z&rušit -menutrans &Alternate &Zmìnit -menutrans &Next &Další -menutrans &Previous &Pøedchozí -menutrans [No\ File] [Žádný\ soubor] -" }}} - -" {{{ Menu Window -menutrans &Window &Okna -menutrans &New^Wn &Nové^Wn -menutrans S&plit^Ws &Rozdìlit^Ws -menutrans Sp&lit\ To\ #^W^^ Ro&zdìlit\ na\ #^W^^ -menutrans Split\ &Vertically^Wv Rozdìlit\ &vertikálnì^Wv -menutrans Split\ File\ E&xplorer Rozdìlit\ -\ File\ E&xplorer -menutrans Move\ &To &Pøesun -menutrans &Top^WK &Nahoru^WK -menutrans &Bottom^WJ &Dolu^WJ -menutrans &Left\ side^WH &Vlevo^WH -menutrans &Right\ side^WL Vp&ravo^WL - -menutrans &Close^Wc Zavøí&t^Wc -menutrans Close\ &Other(s)^Wo Zavøít\ &ostatní^Wo -menutrans Ne&xt^Ww &Další^Ww -menutrans P&revious^WW &Pøedchozí^WW -menutrans &Equal\ Size^W= &Stejná\ výška^W= -menutrans &Max\ Height^W_ Maximální\ výš&ka^W_ -menutrans M&in\ Height^W1_ M&inimální\ výška^W1_ -menutrans Max\ &Width^W\| &Maximální\ šíøka^W\| -menutrans Min\ Widt&h^W1\| Minimální\ šíøk&a^W1\| -menutrans Rotate\ &Up^WR Rotovat\ na&horu^WR -menutrans Rotate\ &Down^Wr Rotovat\ &dolù^Wr - -" {{{ Help menu -menutrans &Help &Nápovìda -menutrans &Overview &Pøehled -menutrans &User\ Manual &Uživatelský\ Manuál -menutrans &How-to\ links Ho&wto -menutrans &GUI &Grafické\ rozhraní -menutrans &Credits &Autoøi -menutrans Co&pying &Licenèní\ politika -menutrans &Sponsor/Register Sponzorování/&Registrace -menutrans &Find\.\.\. &Hledat\.\.\. -menutrans O&rphans O&siøelé\ dìti -menutrans &Version &Verze -menutrans &About &O\ aplikaci -" }}} - -" {{{ The popup menu -menutrans &Undo &Zpìt -menutrans Cu&t &Vyøíznout -menutrans &Copy &Kopírovat -menutrans &Paste &Vložit -menutrans &Delete &Smazat -menutrans Select\ Blockwise Vybrat\ blokovì -menutrans Select\ &Word Vybrat\ &slovo -menutrans Select\ &Line Vybrat\ &øádek -menutrans Select\ &Block Vybrat\ &blok -menutrans Select\ &All Vybrat\ &vše -" }}} - -" {{{ The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Otevøít soubor - tmenu ToolBar.Save Uložit soubor - tmenu ToolBar.SaveAll Uložit všechny soubory - tmenu ToolBar.Print Tisk - tmenu ToolBar.Undo Zpìt - tmenu ToolBar.Redo Zrušit vrácení - tmenu ToolBar.Cut Vyøíznout - tmenu ToolBar.Copy Kopírovat - tmenu ToolBar.Paste Vložit - tmenu ToolBar.Find Hledat... - tmenu ToolBar.FindNext Hledat další - tmenu ToolBar.FindPrev Hledat pøedchozí - tmenu ToolBar.Replace Nahradit... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nové okno - tmenu ToolBar.WinSplit Rozdìlit okno - tmenu ToolBar.WinMax Maximalizovat okno - tmenu ToolBar.WinMin Minimalizovat okno - tmenu ToolBar.WinClose Zavøít okno - endif - tmenu ToolBar.LoadSesn Naèíst sezení - tmenu ToolBar.SaveSesn Uložit sezení - tmenu ToolBar.RunScript Spustit skript - tmenu ToolBar.Make Spustit make - tmenu ToolBar.Shell Spustit shell - tmenu ToolBar.RunCtags Spustit ctags - tmenu ToolBar.TagJump Skoèit na tag pod kurzorem - tmenu ToolBar.Help Nápovìda - tmenu ToolBar.FindHelp Hledat nápovìdu k... - endfun -endif -" }}} diff --git a/share/vim/vim73/lang/menu_czech_czech_republic.ascii.vim b/share/vim/vim73/lang/menu_czech_czech_republic.ascii.vim deleted file mode 100644 index f2faec90..00000000 --- a/share/vim/vim73/lang/menu_czech_czech_republic.ascii.vim +++ /dev/null @@ -1,264 +0,0 @@ -" Menu Translations: Czech for systems without localization -" Maintainer: Jiri Brezina -" vim:set foldmethod=marker: -" $Revision: 1.3 $ -" $Date: 2005/12/19 22:06:56 $ - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - - - -" {{{ File menu -menutrans &File &Soubor -menutrans &Open\.\.\.:e &Otevrit\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Otevrit\ v\ no&vem\ okne\.\.\.:sp -menutrans &New:enew &Novy:enew -menutrans &Close:close &Zavrit:close -menutrans &Save:w &Ulozit:w -menutrans Save\ &As\.\.\.:sav Ulozit\ &jako\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Rozdelit\ okno\ -\ &Diff\.\.\. -menutrans Split\ Patched\ &By\.\.\. Rozdelit\ okno\ -\ &Patch\.\.\. -menutrans &Print &Tisk -menutrans Sa&ve-Exit:wqa U&lozit\ -\ Konec:wqa -menutrans E&xit:qa &Konec:qa -" }}} - -" {{{ Edit menu -menutrans &Edit Upr&avy -menutrans &Undou &Zpetu -menutrans &Redo^R Z&rusit\ vraceni^R -menutrans Rep&eat\. &Opakovat\. -menutrans Cu&t"+x &Vyriznout"+x -menutrans &Copy"+y &Kopirovat"+y -menutrans &Paste"+gP V&lozit"+gP -menutrans Put\ &Before[p Vlozit\ &pred[p -menutrans Put\ &After]p Vlozi&t\ za]p -menutrans &Deletex &Smazatx -menutrans &Select\ AllggVG Vy&brat\ vseggVG -menutrans &Find\.\.\. &Hledat\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. &Nahradit\.\.\. -menutrans Options\.\.\. Volb&y\.\.\. -menutrans Settings\ &Window Nastav&eni\ okna - " {{{2 Edit -1 -menutrans &Global\ Settings &Globalni\ nastaveni -menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Prepnout\ zvyrazneni\ vzoru:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Prepnout\ ignorovani\ &VERZALEK:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Prepnout\ &Showmatch\ \{\(\[\])\}:set\ sm! -menutrans &Context\ lines Zobrazit\ konte&xt\ kurzoru -menutrans &Virtual\ Edit Virtualni\ p&ozice\ kurzoru - menutrans Never Nikdy - menutrans Block\ Selection Vyber\ Bloku - menutrans Insert\ mode Insert\ mod - menutrans Block\ and\ Insert Blok\ a\ Insert - menutrans Always Vzdycky -menutrans Toggle\ Insert\ &Mode:set\ im! Prepnout\ Insert\ mo&d:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Prepnout\ kompatibilni\ rezim\ s\ 'vi':set\ cp! -menutrans Search\ &Path\.\.\. Nastavit\ &cestu\ k\ prohledavani\.\.\. -menutrans Ta&g\ Files\.\.\. Ta&g\ soubory\.\.\. -menutrans Toggle\ &Toolbar Prepnout\ &Toolbar -menutrans Toggle\ &Bottom\ Scrollbar Pr&epnout\ dolni\ rolovaci\ listu -menutrans Toggle\ &Left\ Scrollbar Prepnout\ &levou\ rolovaci\ listu -menutrans Toggle\ &Right\ Scrollbar Prepnout\ p&ravou\ rolovaci\ listu - " {{{2 Edit -2 -menutrans F&ile\ Settings Nastaveni\ so&uboru -menutrans Toggle\ Line\ &Numbering:set\ nu! Prepnout\ cislovani\ ra&dku:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Prepnout\ &List\ mod:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Prepnout\ zala&movani\ radku:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Prepnout\ zl&om\ ve\ slove:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Prepnout\ &expand-tab:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Prepnout\ &auto-indent:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Prepnout\ &C-indenting:set\ cin! -menutrans &Shiftwidth Nastav&it\ sirku\ od&sazeni -menutrans Soft\ &Tabstop Nastavit\ Soft\ &Tabstop -menutrans Te&xt\ Width\.\.\. Sirka\ te&xtu\.\.\. -menutrans &File\ Format\.\.\. &Format\ souboru\.\.\. - " {{{2 Edit -3 -menutrans C&olor\ Scheme Barevne\ s&chema -menutrans &Keymap Klavesova\ m&apa -menutrans Select\ Fo&nt\.\.\. Vybrat\ pis&mo\.\.\. -" }}}1 - -" {{{ Programming menu -menutrans &Tools Nast&roje -menutrans &Jump\ to\ this\ tagg^] &Skocit\ na\ tagg^] -menutrans Jump\ &back^T Skocit\ &zpet^T -menutrans Build\ &Tags\ File &Vytvorit\ soubor\ tagu - -menutrans &Spelling &Kontrola\ pravopisu -menutrans &Spell\ Check\ On Kontrola\ pravopisu\ &zapnuta -menutrans Spell\ Check\ &Off Kontrola\ pravopisu\ &vypnuta -menutrans To\ Next\ error]s &Dalsi\ chyba]s -menutrans To\ Previous\ error[s &Predchozi\ chyba[s -menutrans Suggest\ Correctionsz? &Navrh\ opravz? -menutrans Repeat\ correction:spellrepall Zopakovat\ &opravu:spellrepall -menutrans Set\ language\ to\ "en" Nastav\ jazyk\ na\ "en" -menutrans Set\ language\ to\ "en_au" Nastav\ jazyk\ na\ "en_au" -menutrans Set\ language\ to\ "en_ca" Nastav\ jazyk\ na\ "en_ca" -menutrans Set\ language\ to\ "en_gb" Nastav\ jazyk\ na\ "en_gb" -menutrans Set\ language\ to\ "en_nz" Nastav\ jazyk\ na\ "en_nz" -menutrans Set\ language\ to\ "en_us" Nastav\ jazyk\ na\ "en_us" -menutrans Set\ language\ to\ "cz" Nastav\ jazyk\ na\ "cz" -menutrans Set\ language\ to\ "cs_cz" Nastav\ jazyk\ na\ "cs_cz" -menutrans &Find\ More\ Languages Nalezt\ dalsi\ &jazyky - -menutrans &Folding &Foldy -menutrans &Enable/Disable\ foldszi &Ano/Nezi -menutrans &View\ Cursor\ Linezv &Zobrazit\ radek\ kurzoruzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Zo&brazit\ pouze\ radek\ kurzoru\ zMzx -menutrans C&lose\ more\ foldszm &Vyjmout\ jednu\ uroven\ folduzm -menutrans &Close\ all\ foldszM Zavri&t\ vsechny\ foldyzM -menutrans O&pen\ more\ foldszr Pridat\ jedn&u\ uroven\ folduzr -menutrans &Open\ all\ foldszR &Otevrit\ vsechny\ foldyzR -menutrans Fold\ Met&hod Metoda\ &skladani - "menutrans M&anual &Rucne - "menutrans I&ndent &Odsazeni - "menutrans E&xpression &Vyraz - "menutrans S&yntax &Syntax - "menutrans &Diff &Diff - "menutrans Ma&rker Ma&rker -menutrans Create\ &Foldzf Vytvorit\ &foldzf -menutrans &Delete\ Foldzd Vymazat\ fol&dzd -menutrans Delete\ &All\ FoldszD V&ymazat\ vsechny\ foldyzD -menutrans Fold\ col&umn\ width Sloupec\ zob&razeni\ foldu - -menutrans &Update &Obnovit -menutrans &Get\ Block &Sejmout\ Blok -menutrans &Put\ Block &Vlozit\ Blok -menutrans &Make:make &Make:make -menutrans &List\ Errors:cl Vypis\ &chyb:cl -menutrans L&ist\ Messages:cl! Vyp&is\ zprav:cl! -menutrans &Next\ Error:cn Dalsi\ ch&yba:cn -menutrans &Previous\ Error:cp &Predchozi\ chyba:cp -menutrans &Older\ List:cold Sta&rsi\ seznam:cold -menutrans N&ewer\ List:cnew N&ovejsi\ seznam:cnew -menutrans Error\ &Window Chybove\ o&kno -menutrans SeT\ Compiler Nas&taveni\ kompilatoru -menutrans &Update:cwin O&bnovit:cwin -menutrans &Open:copen &Otevrit:copen -menutrans &Close:cclose &Zavrit:cclose -menutrans &Set\ Compiler N&astavit\ kompilator - -menutrans &Convert\ to\ HEX:%!xxd Prevest\ do\ sestnactkoveho\ format&u:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Pr&evest\ zpet:%!xxd\ -r -" }}} - -" {{{ Syntax menu -menutrans &Syntax Synta&xe -menutrans Set\ '&syntax'\ only Nastavit\ pouze\ 'synta&x' -menutrans Set\ '&filetype'\ too Nastavit\ take\ '&filetype' -menutrans &Off &Vypnout -menutrans &Manual &Rucne -menutrans A&utomatic A&utomaticky -menutrans on/off\ for\ &This\ file &Prepnout\ (pro\ tento\ soubor) -menutrans o&ff\ (this\ file) vyp&nout\ (pro\ tento\ soubor) -menutrans Co&lor\ test Test\ &barev -menutrans &Highlight\ test &Test\ zvyraznovani -menutrans &Convert\ to\ HTML Prevest\ &do\ HTML -menutrans &Show\ filetypes\ in\ menu &Zobrazit\ vyber\ moznosti -" }}} - -" {{{ Menu Buffers -menutrans &Buffers &Buffery -menutrans &Refresh\ menu &Obnovit\ menu -menutrans &Delete Z&rusit -menutrans &Alternate &Zmenit -menutrans &Next &Dalsi -menutrans &Previous &Predchozi -menutrans [No\ File] [Zadny\ soubor] -" }}} - -" {{{ Menu Window -menutrans &Window &Okna -menutrans &New^Wn &Nove^Wn -menutrans S&plit^Ws &Rozdelit^Ws -menutrans Sp&lit\ To\ #^W^^ Ro&zdelit\ na\ #^W^^ -menutrans Split\ &Vertically^Wv Rozdelit\ &vertikalne^Wv -menutrans Split\ File\ E&xplorer Rozdelit\ -\ File\ E&xplorer -menutrans Move\ &To &Presun -menutrans &Top^WK &Nahoru^WK -menutrans &Bottom^WJ &Dolu^WJ -menutrans &Left\ side^WH &Vlevo^WH -menutrans &Right\ side^WL Vp&ravo^WL - -menutrans &Close^Wc Zavri&t^Wc -menutrans Close\ &Other(s)^Wo Zavrit\ &ostatni^Wo -menutrans Ne&xt^Ww &Dalsi^Ww -menutrans P&revious^WW &Predchozi^WW -menutrans &Equal\ Size^W= &Stejna\ vyska^W= -menutrans &Max\ Height^W_ Maximalni\ vys&ka^W_ -menutrans M&in\ Height^W1_ M&inimalni\ vyska^W1_ -menutrans Max\ &Width^W\| &Maximalni\ sirka^W\| -menutrans Min\ Widt&h^W1\| Minimalni\ sirk&a^W1\| -menutrans Rotate\ &Up^WR Rotovat\ na&horu^WR -menutrans Rotate\ &Down^Wr Rotovat\ &dolu^Wr - -" {{{ Help menu -menutrans &Help &Napoveda -menutrans &Overview &Prehled -menutrans &User\ Manual &Uzivatelsky\ Manual -menutrans &How-to\ links Ho&wto -menutrans &GUI &Graficke\ rozhrani -menutrans &Credits &Autori -menutrans Co&pying &Licencni\ politika -menutrans &Sponsor/Register Sponzorovani/&Registrace -menutrans &Find\.\.\. &Hledat\.\.\. -menutrans O&rphans O&sirele\ deti -menutrans &Version &Verze -menutrans &About &O\ aplikaci -" }}} - -" {{{ The popup menu -menutrans &Undo &Zpet -menutrans Cu&t &Vyriznout -menutrans &Copy &Kopirovat -menutrans &Paste &Vlozit -menutrans &Delete &Smazat -menutrans Select\ Blockwise Vybrat\ blokove -menutrans Select\ &Word Vybrat\ &slovo -menutrans Select\ &Line Vybrat\ &radek -menutrans Select\ &Block Vybrat\ &blok -menutrans Select\ &All Vybrat\ &vse -" }}} - -" {{{ The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Otevrit soubor - tmenu ToolBar.Save Ulozit soubor - tmenu ToolBar.SaveAll Ulozit vsechny soubory - tmenu ToolBar.Print Tisk - tmenu ToolBar.Undo Zpet - tmenu ToolBar.Redo Zrusit vraceni - tmenu ToolBar.Cut Vyriznout - tmenu ToolBar.Copy Kopirovat - tmenu ToolBar.Paste Vlozit - tmenu ToolBar.Find Hledat... - tmenu ToolBar.FindNext Hledat dalsi - tmenu ToolBar.FindPrev Hledat predchozi - tmenu ToolBar.Replace Nahradit... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nove okno - tmenu ToolBar.WinSplit Rozdelit okno - tmenu ToolBar.WinMax Maximalizovat okno - tmenu ToolBar.WinMin Minimalizovat okno - tmenu ToolBar.WinClose Zavrit okno - endif - tmenu ToolBar.LoadSesn Nacist sezeni - tmenu ToolBar.SaveSesn Ulozit sezeni - tmenu ToolBar.RunScript Spustit skript - tmenu ToolBar.Make Spustit make - tmenu ToolBar.Shell Spustit shell - tmenu ToolBar.RunCtags Spustit ctags - tmenu ToolBar.TagJump Skocit na tag pod kurzorem - tmenu ToolBar.Help Napoveda - tmenu ToolBar.FindHelp Hledat napovedu k... - endfun -endif -" }}} diff --git a/share/vim/vim73/lang/menu_de_de.latin1.vim b/share/vim/vim73/lang/menu_de_de.latin1.vim deleted file mode 100644 index 6bfc0724..00000000 --- a/share/vim/vim73/lang/menu_de_de.latin1.vim +++ /dev/null @@ -1,304 +0,0 @@ -" Menu Translations: German / Deutsch -" Maintainer: Georg Dahn -" Originally By: Marcin Dalecki -" Johannes Zellner -" Last Change: Sat, 11 Mar 2006 22:40:00 CEST -" vim:set foldmethod=marker tabstop=8: - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" The translations below are in latin1, but they work for cp1252 and -" iso-8859-15 without conversion as well. -if &enc != "cp1252" && &enc != "iso-8859-15" - scriptencoding latin1 -endif - -" {{{ FILE / DATEI -menutrans &File &Datei -menutrans &Open\.\.\.:e &Öffnen\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp In\ geteiltem\ &Fenster\ öffnen\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew In\ neuem\ &Tab\ öffnen\.\.\.:tabnew -menutrans &New:enew &Neue\ Datei:enew -menutrans &Close:close S&chließen:close -menutrans &Save:w &Speichern:w -menutrans Save\ &As\.\.\.:sav Speichern\ &als\.\.\.:sav -menutrans &Print &Drucken -menutrans Sa&ve-Exit:wqa Speichern\ und\ Be&enden:wqa -menutrans E&xit:qa &Beenden:qa - -if has("diff") - menutrans Split\ &Diff\ with\.\.\. D&ifferenz\ in\ geteiltem\ Fenster\ mit\.\.\. - menutrans Split\ Patched\ &By\.\.\. &Patch\ in\ geteiltem\ Fenster\ mit\.\.\. -endif -" }}} FILE / DATEI - -" {{{ EDIT / EDITIEREN -menutrans &Edit &Editieren -menutrans &Undou Z&urücku -menutrans &Redo^R Vo&r^R -menutrans Rep&eat\. &Wiederholen\. -menutrans Cu&t"+x &Ausschneiden"+x -menutrans &Copy"+y &Kopieren"+y -menutrans &Paste"+gP Ein&fügen"+gP -menutrans Put\ &Before[p Da&vor\ einfügen[p -menutrans Put\ &After]p Da&nach\ einfügen]p -menutrans &Deletex &Löschenx -menutrans &Select\ AllggVG Alles\ &markierenggVG -menutrans &Find\.\.\. &Suchen\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Suchen\ und\ &Ersetzen\.\.\. - -" [-- SETTINGS --] -" XXX &E would conflict with 'Suchen\ und\ &Ersetzen', see above -menutrans Settings\ &Window E&instellungen\.\.\. -menutrans &Global\ Settings &Globale\ Einstellungen -menutrans Startup\ &Settings &Starteinstellungen - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Hervorhebungen\ ein-\ und\ ausschalten:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Großschreibung\ &ignorieren\ oder\ benutzen:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Anzeige\ des\ passenden\ &Symbols\ ein-\ und\ ausschalten:set\ sm! - -menutrans &Context\ lines &Zusammenhang - -menutrans &Virtual\ Edit &Virtueller\ Editier-Modus -menutrans Never Nie -menutrans Block\ Selection Block-Auswahl -menutrans Insert\ mode Einfüge-Modus -menutrans Block\ and\ Insert Block-Auswahl\ und\ Einfüge-Modus -menutrans Always Immer -menutrans Toggle\ Insert\ &Mode:set\ im! Einfüge-&Modus\ ein-\ und\ ausschalten:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vi-Kompatibilität\ ein-\ und\ ausschalten:set\ cp! - -menutrans Search\ &Path\.\.\. Such-&Pfad\.\.\. -menutrans Ta&g\ Files\.\.\. Ta&g-Dateien\.\.\. - -menutrans Toggle\ &Toolbar Werkzeugleiste\ ein-\ und\ ausschalten -menutrans Toggle\ &Bottom\ Scrollbar Unteren\ Rollbalken\ ein-\ und\ ausschalten -menutrans Toggle\ &Left\ Scrollbar Linken\ Rollbalken\ ein-\ und\ ausschalten -menutrans Toggle\ &Right\ Scrollbar Rechten\ Rollbalken\ ein-\ und\ ausschalten - -" Edit/File Settings -menutrans F&ile\ Settings &Datei-Einstellungen - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! Anzeige\ der\ Zeilen&nummer\ ein-\ und\ ausschalten:set\ nu! -menutrans Toggle\ relati&ve\ Line\ Numbering:set\ rnu! Anzeige\ der\ relati&ven\ Zeilennummer\ ein-\ und\ ausschalten:set\ rnu! -menutrans Toggle\ &List\ Mode:set\ list! &List-Modus\ ein-\ und\ ausschalten:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! &Zeilenumbruch\ ein-\ und\ ausschalten:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Umbruch\ an\ &Wortgrenzen\ ein-\ und\ ausschalten:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! &Erweiterung\ von\ Tabulatoren\ ein-\ und\ ausschalten:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! &Automatische\ Einrückung\ ein-\ und\ ausschalten:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! &C-Einrückung\ ein-\ und\ ausschalten:set\ cin! - -" other options -menutrans &Shiftwidth &Schiebeweite -menutrans Soft\ &Tabstop &Tabulator -menutrans Te&xt\ Width\.\.\. Te&xtbreite\.\.\. -menutrans &File\ Format\.\.\. &Dateiformat\.\.\. -menutrans C&olor\ Scheme F&arbschema\.\.\. -menutrans &Keymap &Tastaturbelegung -" }}} EDIT / EDITIEREN - -" {{{ TOOLS / WERKZEUGE -if has("spell") - menutrans &Spelling &Rechtschreibung - menutrans &Spell\ Check\ On &Rechtschreibprüfung\ an - menutrans Spell\ Check\ &Off Rechtschreibprüfung\ &aus - menutrans To\ &Next\ error]s Zum\ &nächsten\ Fehler]s - menutrans To\ &Previous\ error[s Zum\ &vorherigen\ Fehler[s - menutrans Suggest\ &Correctionsz= &Korrekturvorschlägez= - menutrans &Repeat\ correction:spellrepall &Wiederhole\ Korrektur:spellrepall - menutrans Set\ language\ to\ "en" Verwende\ Wörterbuch\ "en" - menutrans Set\ language\ to\ "en_au" Verwende\ Wörterbuch\ "en_au" - menutrans Set\ language\ to\ "en_ca" Verwende\ Wörterbuch\ "en_ca" - menutrans Set\ language\ to\ "en_gb" Verwende\ Wörterbuch\ "en_gb" - menutrans Set\ language\ to\ "en_nz" Verwende\ Wörterbuch\ "en_nz" - menutrans Set\ language\ to\ "en_us" Verwende\ Wörterbuch\ "en_us" - menutrans Set\ language\ to\ "de" Verwende\ Wörterbuch\ "de" - menutrans &Find\ More\ Languages &Suche\ nach\ Wörterbüchern -endif -if has("folding") - menutrans &Folding Fa<ung - " open close folds - menutrans &Enable/Disable\ foldszi &Ein-\ und\ ausschaltenzi - menutrans &View\ Cursor\ Linezv Momentane\ &Position\ anzeigenzv - menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Ausschließlich\ momentane\ Position\ anzeigenzMzx - menutrans C&lose\ more\ foldszm Faltungen\ &schließenzm - menutrans &Close\ all\ foldszM Alle\ Faltungen\ schließenzM - menutrans O&pen\ more\ foldszr Faltungen\ &öffnenzr - menutrans &Open\ all\ foldszR Alle\ Faltungen\ öffnenzR - " fold method - menutrans Fold\ Met&hod Faltungs-&Methode - menutrans M&anual &Manuell - menutrans I&ndent &Einrückungen - menutrans E&xpression &Ausdruck - menutrans S&yntax &Syntax - menutrans &Diff &Differenz - menutrans Ma&rker Ma&rkierungen - " create and delete folds - " TODO accelerators - menutrans Create\ &Foldzf Faltung\ erzeugenzf - menutrans &Delete\ Foldzd Faltung\ löschenzd - menutrans Delete\ &All\ FoldszD Alle\ Faltungen\ löschenzD - " moving around in folds - menutrans Fold\ column\ &width &Breite\ der\ Faltungsspalte -endif " has folding - -if has("diff") - menutrans &Diff &Differenz - menutrans &Update &Aktualisieren - menutrans &Get\ Block Block\ &einfügen - menutrans &Put\ Block Block\ &übertragen -endif - -menutrans &Tools &Werkzeuge -menutrans &Jump\ to\ this\ tagg^] &Springe\ zum\ Tagg^] -menutrans Jump\ &back^T Springe\ &zurück^T -menutrans Build\ &Tags\ File Erstelle\ &Tag-Datei -menutrans &Make:make &Erstellen:make -menutrans &List\ Errors:cl &Fehler\ anzeigen:cl -menutrans L&ist\ Messages:cl! &Hinweise\ anzeigen:cl! -menutrans &Next\ Error:cn Zum\ &nächsten\ Fehler:cn -menutrans &Previous\ Error:cp Zum\ &vorherigen\ Fehler:cp -menutrans &Older\ List:cold &Ältere\ Liste:cold -menutrans N&ewer\ List:cnew &Neuere\ Liste:cnew - -menutrans Error\ &Window Feh&ler-Fenster -menutrans Se&t\ Compiler &Compiler -menutrans Se&T\ Compiler &Compiler -menutrans &Update:cwin &Aktualisieren:cwin -menutrans &Open:copen &Öffnen:copen -menutrans &Close:cclose &Schließen:cclose - -menutrans &Convert\ to\ HEX:%!xxd Nach\ HE&X\ konvertieren:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Zurück\ konvertieren:%!xxd\ -r -" }}} TOOLS / WERKZEUGE - -" {{{ SYNTAX / SYNTAX -menutrans &Syntax &Syntax -menutrans &Show\ filetypes\ in\ menu Dateitypen\ an&zeigen -menutrans Set\ '&syntax'\ only Nur\ '&syntax'\ setzen -menutrans Set\ '&filetype'\ too Auch\ '&filetype'\ setzen -menutrans &Off &Aus -menutrans &Manual &Manuell -menutrans A&utomatic A&utomatisch -menutrans on/off\ for\ &This\ file An/Aus (diese\ &Datei) -menutrans Co&lor\ test Test\ der\ Farben -menutrans &Highlight\ test Test\ der\ Un&terstreichungen -menutrans &Convert\ to\ HTML Konvertieren\ nach\ &HTML -" }}} SYNTAX / SYNTAX - -" {{{ BUFFERS / PUFFER -menutrans &Buffers &Puffer -menutrans &Refresh\ menu &Aktualisieren -menutrans Delete Löschen -menutrans &Alternate &Wechseln -menutrans &Next &Nächster -menutrans &Previous &Vorheriger -" }}} BUFFERS / PUFFER - -" {{{ WINDOW / ANSICHT -menutrans &Window &Ansicht -menutrans &New^Wn &Neu^Wn -menutrans S&plit^Ws Aufs&palten^Ws -menutrans Split\ &Vertically^Wv &Vertikal\ aufspalten^Wv -menutrans Split\ File\ E&xplorer Ver&zeichnis -menutrans Sp&lit\ To\ #^W^^ Aufspa<en\ in\ #^W^^ -menutrans &Close^Wc &Schließen^Wc -menutrans Close\ &Other(s)^Wo &Andere\ schließen^Wo -menutrans Ne&xt^Ww N&ächstes^Ww -menutrans P&revious^WW Vor&heriges^WW -menutrans &Equal\ Size^W= &Gleiche\ Höhen^W= -menutrans &Max\ Height^W_ &Maximale\ Höhe^W_ -menutrans M&in\ Height^W1_ M&inimale\ Höhe^W1_ -menutrans Max\ &Width^W\| Maximale\ &Breite^W\| -menutrans Min\ Widt&h^W1\| Minimale\ Brei&te^W1\| -menutrans Move\ &To V&erschiebe\ nach -menutrans &Top^WK &Oben^WK -menutrans &Bottom^WJ &Unten^WJ -menutrans &Left\ side^WH &Links^WH -menutrans &Right\ side^WL &Rechts^WL -menutrans Rotate\ &Up^WR Rotiere\ nach\ &oben^WR -menutrans Rotate\ &Down^Wr Rotiere\ nach\ &unten^Wr -menutrans Select\ Fo&nt\.\.\. Auswahl\ der\ Schriftart\.\.\. -" }}} WINDOW / ANSICHT - -" {{{ HELP / HILFE -menutrans &Help &Hilfe -menutrans &Overview &Überblick -menutrans &User\ Manual &Handbuch -menutrans &How-to\ links How-to\ &Index -menutrans &GUI &Graphische\ Oberfläche -menutrans &Credits &Autoren -menutrans Co&pying &Urheberrecht -menutrans O&rphans &Waisen -menutrans &Find\.\.\. &Suchen\.\.\. " conflicts with Edit.Find -menutrans &Version &Version -menutrans &About &Titelseite -" }}} HELP / HILFE - -" {{{ POPUP -menutrans &Undo &Zurück -menutrans Cu&t Aus&schneiden -menutrans &Copy &Kopieren -menutrans &Paste &Einfügen -menutrans &Delete &Löschen -menutrans Select\ Blockwise Auswahl\ blockartig -menutrans Select\ &Word Auswahl\ des\ &Wortes -menutrans Select\ &Sentence Auswahl\ des\ Sa&tzes -menutrans Select\ Pa&ragraph Auswahl\ des\ Absatzes -menutrans Select\ &Line Auswahl\ der\ &Zeile -menutrans Select\ &Block Auswahl\ des\ &Blocks -menutrans Select\ &All &Alles\ Auswählen -" }}} POPUP - -" {{{ TOOLBAR -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Datei öffnen - tmenu ToolBar.Save Datei speichern - tmenu ToolBar.SaveAll Alle Dateien speichern - tmenu ToolBar.Print Drucken - tmenu ToolBar.Undo Zurück - tmenu ToolBar.Redo Wiederholen - tmenu ToolBar.Cut Ausschneiden - tmenu ToolBar.Copy Kopieren - tmenu ToolBar.Paste Einfügen - tmenu ToolBar.Find Suchen... - tmenu ToolBar.FindNext Suche nächsten - tmenu ToolBar.FindPrev Suche vorherigen - tmenu ToolBar.Replace Suchen und Ersetzen... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Neue Ansicht - tmenu ToolBar.WinSplit Ansicht aufspalten - tmenu ToolBar.WinMax Ansicht maximale Höhen - tmenu ToolBar.WinMin Ansicht minimale Höhen - tmenu ToolBar.WinClose Ansicht schließen - endif - tmenu ToolBar.LoadSesn Sitzung laden - tmenu ToolBar.SaveSesn Sitzung speichern - tmenu ToolBar.RunScript Vim-Skript ausführen - tmenu ToolBar.Make Erstellen - tmenu ToolBar.Shell Shell starten - tmenu ToolBar.RunCtags Erstelle Tag-Datei - tmenu ToolBar.TagJump Springe zum Tag - tmenu ToolBar.Help Hilfe! - tmenu ToolBar.FindHelp Hilfe durchsuchen... - endfun -endif -" }}} TOOLBAR - -" {{{ DIALOG TEXTS -let g:menutrans_no_file = "[Keine Datei]" -let g:menutrans_help_dialog = "Geben Sie einen Befehl oder ein Wort ein, für das Sie Hilfe benötigen:\n\nVerwenden Sie i_ für Eingabe ('input') Befehle (z.B.: i_CTRL-X)\nVerwenden Sie c_ für Befehls-Zeilen ('command-line') Befehle (z.B.: c_)\nVerwenden Sie ' für Options-Namen (z.B.: 'shiftwidth')" -let g:menutrans_path_dialog = "Geben Sie Such-Pfade für Dateien ein.\nTrennen Sie die Verzeichnis-Namen durch Kommata." -let g:menutrans_tags_dialog = "Geben Sie die Namen der 'tag'-Dateien ein.\nTrennen Sie die Namen durch Kommata." -let g:menutrans_textwidth_dialog = "Geben Sie eine neue Text-Breite ein (oder 0, um die Formatierung abzuschalten)" -let g:menutrans_fileformat_dialog = "Wählen Sie ein Datei-Format aus" -" }}} diff --git a/share/vim/vim73/lang/menu_eo.utf-8.vim b/share/vim/vim73/lang/menu_eo.utf-8.vim deleted file mode 100644 index 761ae0b8..00000000 --- a/share/vim/vim73/lang/menu_eo.utf-8.vim +++ /dev/null @@ -1,457 +0,0 @@ -" Menu Translations: Esperanto -" Maintainer: Dominique PELLE -" Last Change: 2008 Mar 01 -" -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding utf-8 - -menutrans &Help &Helpo - -menutrans &Overview &Enhavtabelo -menutrans &User\ Manual &Uzula\ manlibro -menutrans &How-to\ links &Kiel\ fari -menutrans &Find\.\.\. T&rovi\.\.\. -" -sep1- -menutrans &Credits &Dankoj -menutrans Co&pying &Permisilo -menutrans &Sponsor/Register &Subteni/Registriĝi -menutrans O&rphans &Orfoj -" -sep2- -menutrans &Version &Versio -menutrans &About Pri\ &Vim - -let g:menutrans_help_dialog = "Tajpu komandon aŭ serĉendan vorton en la helparo.\n\nAldonu i_ por la komandoj de la enmeta reĝimo (ekz: i_CTRL-X)\nAldonu c_ por redakto de la komanda linio (ekz: c_)\nĈirkaŭi la opciojn per apostrofoj (ekz: 'shiftwidth')" - -menutrans &File &Dosiero - -menutrans &Open\.\.\.:e &Malfermi\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Malfermi\ ÷\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew Malfermi\ &langeton\.\.\.:tabnew -menutrans &New:enew &Nova:enew -menutrans &Close:close &Fermi:close -" -SEP1- -menutrans &Save:w &Konservi:w -menutrans Save\ &As\.\.\.:sav Konservi\ ki&el\.\.\.:sav -" -SEP2- -menutrans Split\ &Diff\ with\.\.\. Kom&pari\ divide\.\.\. -menutrans Split\ Patched\ &By\.\.\. &Testi\ flikaĵon\.\.\. -" -SEP3- -menutrans &Print &Presi -" -SEP4- -menutrans Sa&ve-Exit:wqa Konservi\ kaj\ eli&ri:wqa -menutrans E&xit:qa &Eliri:qa - - -menutrans &Edit &Redakti - -menutrans &Undou &Malfariu -menutrans &Redo^R Re&fari^R -menutrans Rep&eat\. R&ipeti\. -" -SEP1- -menutrans Cu&t"+x &Tondi"+x -menutrans &Copy"+y &Kopii"+y -menutrans &Paste"+gP Al&glui"+gP -menutrans Put\ &Before[p Enmeti\ &antaŭ[p -menutrans Put\ &After]p Enmeti\ ma&lantaŭ]p -menutrans &Deletex &Forviŝix -menutrans &Select\ AllggVG A&partigi\ ĉionggVG -" -SEP2- -menutrans &Find\.\.\. &Trovi\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Trovi\ kaj\ a&nstataŭigi\.\.\. -menutrans &Find/ &Trovi/ -menutrans Find\ and\ Rep&lace:%s Trovi\ kaj\ ansta&taŭigi:%s -menutrans Find\ and\ Rep&lace:s Trovi\ kaj\ ansta&taŭigi:s -" -SEP3- -menutrans Settings\ &Window Fenestro\ de\ a&gordoj -menutrans Startup\ &Settings Agordoj\ de\ prav&aloroj -menutrans &Global\ Settings Mallo&kaj\ agordoj - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Baskuli\ emfazon\ de\ ŝa&blono:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Baskuli\ kongruon\ de\ uskle&co:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Baskuli\ kongruon\ de\ kram&poj:set\ sm! - -menutrans &Context\ lines Linioj\ de\ &kunteksto - -menutrans &Virtual\ Edit &Virtuala\ redakto -menutrans Never &Neniam -menutrans Block\ Selection &Bloka\ apartigo -menutrans Insert\ mode &Enmeta\ reĝimo -menutrans Block\ and\ Insert Blo&ko\ kaj\ enmeto -menutrans Always Ĉia&m - -menutrans Toggle\ Insert\ &Mode:set\ im! Baskuli\ &enmetan\ reĝimon:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Baskuli\ kongruon\ kun\ &Vi:set\ cp! -menutrans Search\ &Path\.\.\. &Serĉvojo\ de\ dosieroj\.\.\. -menutrans Ta&g\ Files\.\.\. Dosiero\ de\ etike&doj\.\.\. -" -SEP1- -menutrans Toggle\ &Toolbar Baskuli\ &ilobreton -menutrans Toggle\ &Bottom\ Scrollbar Baskuli\ su&ban\ rulumskalon -menutrans Toggle\ &Left\ Scrollbar Baskuli\ &maldekstran\ rulumskalon -menutrans Toggle\ &Right\ Scrollbar Baskuli\ &dekstran\ rulumskalon - -let g:menutrans_path_dialog = "Tajpu la vojon de serĉo de dosieroj.\nDisigu la dosierujojn per komoj." -let g:menutrans_tags_dialog = "Tajpu la nomojn de dosieroj de etikedoj.\nDisigu la nomojn per komoj." - -menutrans F&ile\ Settings A&gordoj\ de\ dosiero - -menutrans Toggle\ Line\ &Numbering:set\ nu! Baskuli\ &numerojn\ de\ linioj:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Baskuli\ &listan\ reĝimon:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Baskuli\ linifal&don:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Baskuli\ &vortofaldon:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Baskuli\ ekspansio\ de\ &taboj:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Baskuli\ &aŭtokrommarĝenon:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Baskuli\ &C-krommarĝenon:set\ cin! -" -SEP2- -menutrans &Shiftwidth &Larĝo\ de\ krommarĝeno -menutrans Soft\ &Tabstop &Malm&olaj\ taboj -menutrans Te&xt\ Width\.\.\. Larĝo\ de\ te&ksto\.\.\. -menutrans &File\ Format\.\.\. &Formato\ de\ &dosiero\.\.\. - -let g:menutrans_textwidth_dialog = "Tajpu la novan larĝon de teksto\n(0 por malŝalti formatigon)." -let g:menutrans_fileformat_dialog = "Elektu la formaton de la skribonta dosiero." -let g:menutrans_fileformat_choices = " &Unikso \n &Dos \n &Mak \n &Rezigni " - -menutrans C&olor\ Scheme &Koloraro -menutrans &Keymap Klavo&mapo -menutrans None (nenio) -menutrans Select\ Fo&nt\.\.\. Elekti\ &tiparon\.\.\. - - -menutrans &Tools &Iloj - -menutrans &Jump\ to\ this\ tagg^] &Aliri\ al\ tiu\ etikedog^] -menutrans Jump\ &back^T &Retroiri^T -menutrans Build\ &Tags\ File Krei\ &etikedan\ dosieron - -" -SEP1- -menutrans &Spelling &Literumilo -menutrans &Spell\ Check\ On Ŝal&ti\ literumilon -menutrans Spell\ Check\ &Off &Malŝalti\ literumilon -menutrans To\ &Next\ error]s Al\ sek&vonta\ eraro]s -menutrans To\ &Previous\ error[s Al\ an&taŭa\ eraro[s -menutrans Suggest\ &Correctionsz= &Sugesti\ korektojnz= -menutrans &Repeat\ correction:spellrepall R&ipeti\ korekton:spellrepall - -menutrans Set\ language\ to\ "en" Angla -menutrans Set\ language\ to\ "en_au" Angla\ (Aŭstralio) -menutrans Set\ language\ to\ "en_ca" Angla\ (Kanado) -menutrans Set\ language\ to\ "en_gb" Angla\ (Britio) -menutrans Set\ language\ to\ "en_nz" Angla\ (Novzelando) -menutrans Set\ language\ to\ "en_us" Angla\ (Usono) - -menutrans &Find\ More\ Languages &Trovi\ pli\ da\ lingvoj - - -menutrans &Folding &Faldo - -menutrans &Enable/Disable\ foldszi &Baskuli\ faldojnzi -menutrans &View\ Cursor\ Linezv &Vidi\ linion\ de\ kursorozv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Vidi\ nur\ &kursoran\ linionzMzx -menutrans C&lose\ more\ foldszm F&ermi\ pli\ da\ faldojzm -menutrans &Close\ all\ foldszM Fermi\ ĉiu&jn\ faldojnzM -menutrans O&pen\ more\ foldszr &Malfermi\ pli\ da\ faldojzr -menutrans &Open\ all\ foldszR Malfermi\ ĉiuj&n\ faldojnzR -" -SEP1- -menutrans Fold\ Met&hod &Metodo\ de\ faldo - -menutrans M&anual &Permana\ metodo -menutrans I&ndent &Krommarĝeno -menutrans E&xpression &Esprimo -menutrans S&yntax &Sintakso -menutrans &Diff &Komparo -menutrans Ma&rker Ma&rko - -menutrans Create\ &Foldzf &Krei\ faldonzf -menutrans &Delete\ Foldzd Forv&iŝi\ faldonzd -menutrans Delete\ &All\ FoldszD Forviŝi\ ĉiu&jn\ faldojnzD -" -SEP2- -menutrans Fold\ col&umn\ width &Larĝo\ de\ falda\ kolumno - -menutrans &Diff Kom&pari - -menutrans &Update Ĝis&datigi -menutrans &Get\ Block &Akiri\ blokon -menutrans &Put\ Block Enme&ti\ blokon - -" -SEP2- -menutrans &Make:make Lanĉi\ ma&ke:make -menutrans &List\ Errors:cl Listigi\ &erarojn:cl -menutrans L&ist\ Messages:cl! Listigi\ &mesaĝojn:cl! -menutrans &Next\ Error:cn Sek&vanta\ eraro:cn -menutrans &Previous\ Error:cp An&taŭa\ eraro:cp -menutrans &Older\ List:cold Pli\ ma&lnova\ listo:cold -menutrans N&ewer\ List:cnew Pli\ nova\ listo:cnew - -menutrans Error\ &Window &Fenestro\ de\ eraroj - -menutrans &Update:cwin Ĝis&datigi:cwin -menutrans &Open:copen &Malfermi:copen -menutrans &Close:cclose &Fermi:cclose - -" -SEP3- -menutrans &Convert\ to\ HEX:%!xxd Konverti\ al\ deksesuma:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Retrokonverti:%!xxd\ -r - -menutrans Se&T\ Compiler &Elekti\ kompililon - - -menutrans &Buffers &Bufroj - -menutrans Dummy Fikcia -menutrans &Refresh\ menu Ĝis&datigi\ menuon -menutrans &Delete &Forviŝi -menutrans &Alternate &Alterni -menutrans &Next &Sekvanta -menutrans &Previous An&taŭa -" -SEP- - -menutrans &others a&liaj -menutrans &u-z &u-z -let g:menutrans_no_file = "[Neniu dosiero]" - - -menutrans &Window Fene&stro - -menutrans &New^Wn &Nova^Wn -menutrans S&plit^Ws Di&vidi^Ws -menutrans Sp&lit\ To\ #^W^^ Dividi\ &al\ #^W^^ -menutrans Split\ &Vertically^Wv Dividi\ &vertikale^Wv -menutrans Split\ File\ E&xplorer Dividi\ &dosierfoliumilo -" -SEP1- -menutrans &Close^Wc &Fermi^Wc -menutrans Close\ &Other(s)^Wo Fermi\ &aliajn^Wo -" -SEP2- -menutrans Move\ &To &Movu\ al - -menutrans &Top^WK Su&pro^WK -menutrans &Bottom^WJ Su&bo^WJ -menutrans &Left\ side^WH Maldekstra\ &flanko^WH -menutrans &Right\ side^WL Dekstra\ f&lanko^WL - -menutrans Rotate\ &Up^WR Rota&cii\ supre^WR -menutrans Rotate\ &Down^Wr Rotac&ii\ sube^Wr -" -SEP3- -menutrans &Equal\ Size^W= &Egala\ grando^W= -menutrans &Max\ Height^W_ Ma&ksimuma\ alto^W_ -menutrans M&in\ Height^W1_ Mi&nimuma\ alto^W1_ -menutrans Max\ &Width^W\| Maksimuma\ &larĝo^W\| -menutrans Min\ Widt&h^W1\| Minimuma\ lar&ĝo^W1\| - - -" PopUp - -menutrans &Undo &Malfari -" -SEP1- -menutrans Cu&t &Tondi -menutrans &Copy &Kopii -menutrans &Paste &Al&glui -" &Buffers.&Delete overwrites this one -menutrans &Delete &Forviŝi -" -SEP2- -menutrans Select\ Blockwise Apartigi\ &bloke -menutrans Select\ &Word Apartigi\ &vorton -menutrans Select\ &Line Apartigi\ &linion -menutrans Select\ &Block Apartigi\ blo&kon -menutrans Select\ &All Apartigi\ ĉi&on - - -" ToolBar - -menutrans Open Malfermi -menutrans Save Konservi -menutrans SaveAll Konservi\ ĉion -menutrans Print Presi -" -sep1- -menutrans Undo Rezigni -menutrans Redo Refari -" -sep2- -menutrans Cut Tondi -menutrans Copy Kopii -menutrans Paste Alglui -" -sep3- -menutrans Find Trovi -menutrans FindNext Trovi\ sekvanten -menutrans FindPrev Trovi\ antaŭen -menutrans Replace Anstataŭigi -" -sep4- -menutrans New Nova -menutrans WinSplit DividFen -menutrans WinMax MaksFen -menutrans WinMin MinFen -menutrans WinVSplit VDividFen -menutrans WinMaxWidth MaksLarĝFen -menutrans WinMinWidth MinLarĝFen -menutrans WinClose FermFen -" -sep5- -menutrans LoadSesn ŜargSeanc -menutrans SaveSesn KonsSeanc -menutrans RunScript LanĉSkript -" -sep6- -menutrans Make Make -menutrans RunCtags KreiEtik -menutrans TagJump IriAlEtik -" -sep7- -menutrans Help Helpo -menutrans FindHelp SerĉHelp - -fun! Do_toolbar_tmenu() - let did_toolbar_tmenu = 1 - tmenu ToolBar.Open Malfermi dosieron - tmenu ToolBar.Save Konservi aktualan dosieron - tmenu ToolBar.SaveAll Konservi ĉiujn dosierojn - tmenu ToolBar.Print Presi - tmenu ToolBar.Undo Rezigni - tmenu ToolBar.Redo Refari - tmenu ToolBar.Cut Tondi - tmenu ToolBar.Copy Kopii - tmenu ToolBar.Paste Alglui - if !has("gui_athena") - tmenu ToolBar.Find Trovi - tmenu ToolBar.FindNext Trovi sekvanten - tmenu ToolBar.FindPrev Trovi antaŭen - tmenu ToolBar.Replace Anstataŭigi - endif - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nova fenestro - tmenu ToolBar.WinSplit Dividi fenestron - tmenu ToolBar.WinMax Maksimumi fenestron - tmenu ToolBar.WinMin Minimumi fenestron - tmenu ToolBar.WinVSplit Dividi vertikale - tmenu ToolBar.WinMaxWidth Maksimumi larĝon de fenestro - tmenu ToolBar.WinMinWidth Minimumi larĝon de fenestro - tmenu ToolBar.WinClose Fermi fenestron - endif - tmenu ToolBar.LoadSesn Malfermi seancon - tmenu ToolBar.SaveSesn Konservi aktualan seancon - tmenu ToolBar.RunScript Ruli skripton Vim - tmenu ToolBar.Make Lanĉi make - tmenu ToolBar.RunCtags Krei etikedojn - tmenu ToolBar.TagJump Atingi tiun etikedon - tmenu ToolBar.Help Helpo de Vim - tmenu ToolBar.FindHelp Serĉo en helparo -endfun - - -menutrans &Syntax &Sintakso - -menutrans &Off &Malŝalti -menutrans &Manual &Permana -menutrans A&utomatic &Aŭtomata -menutrans on/off\ for\ &This\ file Ŝalti/Malŝalti\ por\ &tiu\ dosiero - -" The Start Of The Syntax Menu -menutrans ABC\ music\ notation ABC\ (muzika\ notacio) -menutrans AceDB\ model Modelo\ AceDB -menutrans Apache\ config Konfiguro\ de\ Apache -menutrans Apache-style\ config Konfiguro\ de\ stilo\ Apache -menutrans ASP\ with\ VBScript ASP\ kun\ VBScript -menutrans ASP\ with\ Perl ASP\ kun\ Perl -menutrans Assembly Asemblilo -menutrans BC\ calculator Kalkulilo\ BC -menutrans BDF\ font Tiparo\ BDF -menutrans BIND\ config Konfiguro\ de\ BIND -menutrans BIND\ zone Zone\ BIND -menutrans Cascading\ Style\ Sheets CSS -menutrans Cfg\ Config\ file Konfigura\ dosiero\ \.cfg -menutrans Cheetah\ template Ŝablono\ Cheetah -menutrans commit\ file Dosiero\ commit -menutrans Generic\ Config\ file Dosiero\ de\ ĝenerala\ konfiguro -menutrans Digital\ Command\ Lang DCL -menutrans DNS/BIND\ zone Regiono\ BIND/DNS -menutrans Dylan\ interface Interfaco\ Dylan -menutrans Dylan\ lid Dylan\ lid -menutrans Elm\ filter\ rules Reguloj\ de\ filtrado\ Elm -menutrans ERicsson\ LANGuage Erlang\ (Lingvo\ de\ Ericsson) -menutrans Essbase\ script Skripto\ Essbase -menutrans Eterm\ config Konfiguro\ de\ Eterm -menutrans Exim\ conf Konfiguro\ de\ Exim -menutrans Fvwm\ configuration Konfiguro\ de\ Fvwm -menutrans Fvwm2\ configuration Konfiguro\ de\ Fvwm2 -menutrans Fvwm2\ configuration\ with\ M4 Konfiguro\ de\ Fvwm2\ kun\ M4 -menutrans GDB\ command\ file Komanda\ dosiero\ de\ GDB -menutrans HTML\ with\ M4 HTML\ kun\ M4 -menutrans Cheetah\ HTML\ template Ŝablono\ Cheetah\ HTML -menutrans IDL\Generic\ IDL Ĝenerala\ IDL\IDL -menutrans IDL\Microsoft\ IDL IDL\IDL\ Mikrosofto -menutrans Indent\ profile Profilo\ Indent -menutrans Inno\ setup Konfiguro\ de\ Inno -menutrans InstallShield\ script Skripto\ InstallShield -menutrans KDE\ script Skripto\ KDE -menutrans LFTP\ config Konfiguro\ de\ LFTP -menutrans LifeLines\ script Skripto\ LifeLines -menutrans Lynx\ Style Stilo\ de\ Lynx -menutrans Lynx\ config Konfiguro\ de\ Lynx -menutrans Man\ page Manlibra\ paĝo -menutrans MEL\ (for\ Maya) MEL\ (por\ Maya) -menutrans 4DOS\ \.bat\ file Dosiero\ \.bat\ 4DOS -menutrans \.bat\/\.cmd\ file Dosiero\ \.bat\/\.cmd -menutrans \.ini\ file Dosiero\ \.ini -menutrans Module\ Definition Difino\ de\ modulo -menutrans Registry Registraro -menutrans Resource\ file Dosiero\ de\ rimedoj -menutrans Novell\ NCF\ batch Staplo\ Novell\ NCF -menutrans NSIS\ script Skripto\ NSIS -menutrans Oracle\ config Konfiguro\ de\ Oracle -menutrans Palm\ resource\ compiler Tradukilo\ de\ rimedoj\ Palm -menutrans PHP\ 3-4 PHP\ 3\ et\ 4 -menutrans Postfix\ main\ config Ĉefa\ konfiguro\ de\ Postfix -menutrans Povray\ scene\ descr Scenejo\ Povray -menutrans Povray\ configuration Konfiguro\ de\ Povray -menutrans Purify\ log Protokolo\ de\ Purify -menutrans Readline\ config Konfiguro\ de\ Readline -menutrans RCS\ log\ output Protokola\ eligo\ de\ RCS -menutrans RCS\ file Dosiero\ RCS -menutrans RockLinux\ package\ desc\. Priskribo\ de\ pakaĵoj\ RockLinux -menutrans Samba\ config Konfiguro\ de\ Samba -menutrans SGML\ catalog Katalogo\ SGML -menutrans SGML\ DTD DTD\ SGML -menutrans SGML\ Declaration Deklaracio\ SGML -menutrans Shell\ script Skripto-ŝelo -menutrans sh\ and\ ksh sh\ kaj\ ksh -menutrans Sinda\ compare Komparo\ Sinda -menutrans Sinda\ input Enigo\ Sinda -menutrans Sinda\ output Eligo\ Sinda -menutrans SKILL\ for\ Diva SKILL\ por\ Diva -menutrans Smarty\ Templates Ŝablono\ Smarty -menutrans SNNS\ network Reto\ SNNS -menutrans SNNS\ pattern Ŝablono\ SNNS -menutrans SNNS\ result Rezulto\ SNNS -menutrans Snort\ Configuration Konfiguro\ de\ Snort -menutrans Squid\ config Konfiguro\ de\ Squid -menutrans Subversion\ commit Commit\ Subversion -menutrans TAK\ compare Komparo\ TAK -menutrans TAK\ input Enigo\ TAK -menutrans TAK\ output Eligo\ TAK -menutrans TeX\ configuration Konfiguro\ de\ TeX -menutrans TF\ mud\ client TF\ (client\ MUD) -menutrans Tidy\ configuration Konfiguro\ de\ Tidy -menutrans Trasys\ input Enigo\ Trasys -menutrans Command\ Line Komanda\ linio -menutrans Geometry Geometrio -menutrans Optics Optiko -menutrans Vim\ help\ file Helpa\ dosiero\ de\ Vim -menutrans Vim\ script Skripto\ Vim -menutrans Viminfo\ file Dosiero\ Viminfo -menutrans Virata\ config Konfiguro\ de\ Virata -menutrans Wget\ config Konfiguro\ de\ wget -menutrans Whitespace\ (add) Spacetoj -menutrans WildPackets\ EtherPeek\ Decoder Malkodilo\ WildPackets\ EtherPeek -menutrans X\ resources Rimedoj\ X -menutrans XXD\ hex\ dump Eligo\ deksesuma\.\ de\ xxd -menutrans XFree86\ Config Konfiguro\ de\ XFree86 -" The End Of The Syntax Menu - -menutrans &Show\ filetypes\ in\ menu &Montri\ dosiertipojn\ en\ menuo -" -SEP1- -menutrans Set\ '&syntax'\ only Ŝalti\ nur\ '&syntax' -menutrans Set\ '&filetype'\ too Ŝalti\ ankaŭ\ '&filetype' -menutrans &Off M&alŝaltita -" -SEP3- -menutrans Co&lor\ test Testo\ de\ &koloroj -menutrans &Highlight\ test Testo\ de\ &emfazo -menutrans &Convert\ to\ HTML Konverti\ al\ &HTML diff --git a/share/vim/vim73/lang/menu_es_es.latin1.vim b/share/vim/vim73/lang/menu_es_es.latin1.vim deleted file mode 100644 index b943e230..00000000 --- a/share/vim/vim73/lang/menu_es_es.latin1.vim +++ /dev/null @@ -1,318 +0,0 @@ -" Menu Translations: Español -" Previous translator: Alejandro López-Valencia -" Last translator: Omar Campagne Polaino -" Version: 7.2.245 -" Last Change: 2009 Sep 03 -" - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" The translations below are in latin1, but they work for cp1252, -" iso-8859-15 without conversion as well. -if &enc != "cp1252" && &enc != "iso-8859-15" - scriptencoding latin1 -endif - - -" Help menu -menutrans &Help Ay&uda -menutrans &Overview Tabla\ de\ &contenidos -menutrans &User\ Manual &Manual\ del\ usuario -menutrans &How-to\ links &Enlaces\ a\ ¿Cómo\ hago\.\.\.? -menutrans &Find\.\.\. &Buscar\ en\ la\ ayuda -menutrans &Credits &Reconocimientos -menutrans O&rphans Ayude\ a\ los\ niños\ &huérfanos -menutrans Co&pying &Términos\ de\ Licencia -menutrans Sponsor/Register Benefactor/Regístrese -menutrans &Version &Versión\ e\ \información\ de\ configuración -menutrans &About &Acerca\ de\ Vim - -" File menu -menutrans &File &Archivo -menutrans &Open\.\.\.:e &Abrir\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp A&brir\ en\ otra\ ventana\.\.\.:sp -menutrans &New:enew &Nuevo:enew -menutrans Open\ Tab\.\.\.:tabnew Abrir\ pes&taña\.\.\.:tabnew -menutrans &Close:close &Cerrar:close -menutrans &Save:w &Guardar:w -menutrans Save\ &As\.\.\.:sav Guardar\ &como\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. &Mostrar\ diferencias\ con\.\.\. -menutrans Split\ Patched\ &By\.\.\. Mostrar\ &parcheado\ por\.\.\. -menutrans &Print &Imprimir -menutrans Sa&ve-Exit:wqa Gua&rdar\ y\ salir:wqa -menutrans E&xit:qa &Salir:qa - -" Edit menu -menutrans &Edit &Editar -menutrans &Undou &Deshaceru -menutrans &Redo^R &Rehacer^R -menutrans Rep&eat\. Repe&tir\. -menutrans Cu&t"+x Cor&tar"+x -menutrans &Copy"+y &Copiar"+y -menutrans &Paste"+gP &Pegar"+gP -menutrans Put\ &Before[p Poner\ &antes[p -menutrans Put\ &After]p Poner\ &después]p -if has("win32") || has("win16") - menutrans &Deletex S&uprimirx -endif -menutrans &Select\ allggVG &Seleccionar\ todoggVG -menutrans &Find\.\.\. &Buscar\.\.\. -menutrans &Find/ &Buscar/ -menutrans Find\ and\ Rep&lace\.\.\. Buscar\ y\ R&eemplazar\.\.\. -menutrans Find\ and\ Rep&lace:%s Buscar\ y\ R&eemplazar:%s -menutrans Find\ and\ Rep&lace Buscar\ y\ R&eemplazar -menutrans Find\ and\ Rep&lace:s Buscar\ y\ R&eemplazar:s -menutrans Settings\ &Window &Ventana\ de\ opciones -menutrans Startup\ &Settings Opciones\ de\ arranque - -" Edit/Global Settings -menutrans &Global\ Settings Opciones\ &globales - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Activar/Desactivar\ &resaltado\ de\ sintaxis:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Activar/Desactivar\ &ignorar\ mayúsculas\ y\ minúsculas:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Activar/Desactivar\ &mostrar\ coincidencias:set\ sm! - -menutrans &Context\ lines Líneas\ de\ &contexto - -menutrans &Virtual\ Edit Edición\ &virtual -menutrans Never Nunca -menutrans Block\ Selection Selección\ de\ bloque -menutrans Insert\ mode Modo\ de\ inserción -menutrans Block\ and\ Insert Bloque\ e\ inserción -menutrans Always Siempre - -menutrans Toggle\ Insert\ &Mode:set\ im! Activar/Desactivar\ modo\ de\ in&serción:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Activar/Desactivar\ compatiblidad\ con\ Vi:set\ cp! - -menutrans Search\ &Path\.\.\. Ruta\ de\ &búsqueda\.\.\. - -menutrans Ta&g\ Files\.\.\. Ficheros\ de\ &etiquetas\.\.\. - -" GUI options -menutrans Toggle\ &Toolbar Ocultar/Mostrar\ barra\ de\ &herramientas -menutrans Toggle\ &Bottom\ Scrollbar Ocultar/Mostrar\ barra\ de\ desplazamiento\ &inferior -menutrans Toggle\ &Left\ Scrollbar Ocultar/Mostrar\ barra\ de\ desplazamiento\ i&zquierda -menutrans Toggle\ &Right\ Scrollbar Ocultar/Mostrar\ barra\ de\ desplazamiento\ &derecha - -let g:menutrans_path_dialog = "Introduzca la ruta de búsqueda para los archivos.\nSepare los nombres de los directorios con una coma." -let g:menutrans_tags_dialog = "Introduzca los nombres de los archivos de tags.\nSepare los nombres con una coma." - -" Edit/File Settings -menutrans F&ile\ Settings Opciones\ del\ &archivo - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! Activar/Desactivar\ &numeración\ de\ líneas:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Activar/Desactivar\ modo\ de\ lista:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Activar/Desactivar\ &quiebre\ de\ líneas:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Activar/Desactivar\ quiebre\ entre\ &palabras:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Activar/Desactivar\ &expansión\ de\ marcas\ de\ \tabulado:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Activar/Desactivar\ &auto-sangrado:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Activar/Desactivar\ sangrado\ &C:set\ cin! - -" other options -menutrans &Shiftwidth Anchura\ del\ &sangrado - -menutrans Soft\ &Tabstop &Tabulado\ «blando» - -menutrans Te&xt\ Width\.\.\. Anchura\ del\ te&xto\.\.\. -let g:menutrans_textwidth_dialog = "Introduzca el nuevo ancho del texto (0 para desactivar el quiebre de línea): " - -menutrans &File\ Format\.\.\. &Formato\ del\ archivo\.\.\. -let g:menutrans_fileformat_dialog = "Seleccione el formato para escribir el archivo" - -menutrans C&olor\ Scheme Esquema\ de\ c&olores -menutrans blue azul -menutrans darkblue azul\ oscuro -menutrans default original -menutrans desert desierto -menutrans evening vespertino -menutrans morning matutino -menutrans peachpuff melocotón -menutrans shine brillante - -menutrans Select\ Fo&nt\.\.\. Seleccionar\ fue&nte\.\.\. - -menutrans &Keymap Asociación\ de\ teclados -menutrans None Ninguna -menutrans accents acentos -menutrans arabic árabe -menutrans czech checo -menutrans greek griego -menutrans hebrew hebreo -menutrans hebrewp hebreo\ fonético -menutrans lithuanian-baltic lituano-báltico -menutrans russian-jcuken ruso-«jcuken» -menutrans russian-jcukenwin ruso-«jcuken»\ Windows -menutrans russian-yawerty ruso-«yawerty» -menutrans serbian-latin serbio-latino -menutrans serbian serbio -menutrans slovak eslovaco - - -" Programming menu -menutrans &Tools &Herramientas -menutrans &Jump\ to\ this\ tagg^] &Saltar\ a\ este\ etiquetag^] -menutrans Jump\ &back^T Saltar\ &atrás^T -menutrans Build\ &Tags\ File Crear\ archivo\ de\ &etiquetas\ -menutrans &Diff Modo\ de\ &diferencias -menutrans &Folding &Plegado -menutrans &Make:make Ejecutar\ «&Make»:make -menutrans &List\ Errors:cl &Lista\ de\ errores:cl -menutrans L&ist\ Messages:cl! L&ista\ de\ mensajes:cl! -menutrans &Next\ Error:cn &Error\ siguiente:cn -menutrans &Previous\ Error:cp Error\ p&revio:cp -menutrans &Older\ List:cold Lista\ de\ &viejos\ a\ nuevos:cold -menutrans N&ewer\ List:cnew Lista\ de\ &nuevos\ a\ viejos:cnew -menutrans Error\ &Window Ven&tana\ de\ errores -menutrans &Set\ Compiler Esco&ger\ el\ compilador\ a\ usar -menutrans &Convert\ to\ HEX:%!xxd Convertir\ a\ formato\ &hexadecimal:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r &Convertir\ al\ formato\ original:%!xxd\ -r - -" Tools.Spelling Menu -menutrans &Spelling Corrección\ ortográfica -menutrans &Spell\ Check\ On &Activar\ corrección\ ortográfica -menutrans Spell\ Check\ &Off &Desactivar\ corrección\ ortográfica -menutrans To\ &Next\ error]s &Siguiente\ error]s -menutrans To\ &Previous\ error[s Error\ &precedente[s -menutrans Suggest\ &Correctionsz= Sugerir\ &correcciónz= -menutrans &Repeat\ correction:spellrepall &Repetir\ corrección:spellrepall -an 40.335.205 &Tools.&Spelling.Castellano\ (es) :set spl=es spell -menutrans Set\ language\ to\ "en" Inglés -menutrans Set\ language\ to\ "en_au" Inglés\ (en_au) -menutrans Set\ language\ to\ "en_ca" Inglés\ (en_ca) -menutrans Set\ language\ to\ "en_gb" Inglés\ (en_gb) -menutrans Set\ language\ to\ "en_nz" Inglés\ (en_nz) -menutrans Set\ language\ to\ "en_us" Inglés\ (en_us) - -menutrans &Find\ More\ Languages &Buscar\ otras\ lenguas - -" Tools.Fold Menu -menutrans &Enable/Disable\ foldszi &Activar/Desactivar\ pliegueszi -menutrans &View\ Cursor\ Linezv &Ver\ línea\ del\ cursorzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Ve&r\ sólo\ la\ línea\ del\ cursorzMzx -menutrans C&lose\ more\ foldszm C&errar\ más\ pliegueszm -menutrans &Close\ all\ foldszM &Cerrar\ todos\ los\ pliegueszM -menutrans O&pen\ more\ foldszr Abrir\ &más\ pliegueszr -menutrans &Open\ all\ foldszR &Abrir\ todos\ los\ pliegueszR -" fold method -menutrans Fold\ Met&hod &Método\ de\ plegado -" create and delete folds -menutrans Create\ &Foldzf Crear\ &plieguezf -menutrans &Delete\ Foldzd &Suprimir\ plieguezd -menutrans Delete\ &All\ FoldszD Suprimir\ &todos\ los\ pliegueszD -" moving around in folds -menutrans Fold\ col&umn\ width A&nchura\ de\ columna\ del\ pliegue - -" Tools.Diff Menu -menutrans &Update &Actualizar -menutrans &Get\ Block &Obtener\ bloque -menutrans &Put\ Block &Poner\ bloque - -"Tools.Error Menu -menutrans &Update:cwin &Actualizar -menutrans &Open:copen A&brir -menutrans &Close:cclose &Cerrar - -" Names for buffer menu. -menutrans &Buffers &Buffers -menutrans &Refresh\ menu &Refrescar\ menú -menutrans &Delete &Suprimir -menutrans &Alternate &Alternar -menutrans &Next Si&guiente -menutrans &Previous &Previo -let g:menutrans_no_file = "[Sin archivo]" - -" Window menu -menutrans &Window &Ventana -menutrans &New^Wn Ventana\ &nueva^Wn -menutrans S&plit^Ws &Dividir\ la\ ventana^Ws -menutrans Sp&lit\ To\ #^W^^ D&ividir\ en\ el\ marcador\ (#)^W^^ -menutrans Split\ &Vertically^Wv Dividir\ &verticalmente^Wv -menutrans Split\ File\ E&xplorer &Abrir\ el\ «Explorador\ de\ archivos» -menutrans &Close^Wc &Cerrar\ esta\ ventana^Wc -menutrans Close\ &Other(s)^Wo Cerrar\ &otra(s)\ ventana(s)^Wo -menutrans Move\ &To Mov&er\ a -menutrans &Top^WK &Arriba^WK -menutrans &Bottom^WJ A&bajo^WJ -menutrans &Left\ side^WH Lado\ &izquierdo^WH -menutrans &Right\ side^WL Lado\ &derecho^WL -menutrans Rotate\ &Up^WR &Rotar\ hacia\ arriba^WR -menutrans Rotate\ &Down^Wr Rotar\ hacia\ a&bajo^Wr -menutrans &Equal\ Size^W= Mismo\ &tamaño^W= -menutrans &Max\ Height^W_ Altura\ &máxima^W_ -menutrans M&in\ Height^W1_ Altura\ mí&nima^W1_ -menutrans Max\ &Width^W\| Anchura\ má&xima^W\| -menutrans Min\ Widt&h^W1\| Anc&hura\ mínima^W1\| - -" The popup menu -menutrans &Undo &Deshacer -menutrans Cu&t Cor&tar -menutrans &Copy &Copiar -menutrans &Paste &Pegar -menutrans &Delete &Borrar -menutrans Select\ Blockwise Seleccionar\ por\ bloque -menutrans Select\ &Word Seleccionar\ &palabra -menutrans Select\ &Line Seleccionar\ una\ &línea -menutrans Select\ &Block Seleccionar\ un\ &bloque -menutrans Select\ &All Seleccionar\ &todo - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Abrir archivo - tmenu ToolBar.Save Guardar archivo - tmenu ToolBar.SaveAll Guardar todos los archivos - tmenu ToolBar.Print Imprimir - tmenu ToolBar.Undo Deshacer - tmenu ToolBar.Redo Rehacer - tmenu ToolBar.Cut Cortar - tmenu ToolBar.Copy Copiar - tmenu ToolBar.Paste Pegar - tmenu ToolBar.Find Buscar... - tmenu ToolBar.FindNext Buscar siguiente - tmenu ToolBar.FindPrev Buscar precedente - tmenu ToolBar.Replace Buscar y reemplazar - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Ventana nueva - tmenu ToolBar.WinSplit Dividir ventana - tmenu ToolBar.WinMax Altura máxima - tmenu ToolBar.WinMin Altura mínima - tmenu ToolBar.WinVSplit Dividir verticalmente - tmenu ToolBar.WinMaxWidth Anchura máxima - tmenu ToolBar.WinMinWidth Anchura mínima - tmenu ToolBar.WinClose Cerrar ventana - endif - tmenu ToolBar.LoadSesn Cargar sesión - tmenu ToolBar.SaveSesn Guardar sesión - tmenu ToolBar.RunScript Ejecutar un archivo de órdenes - tmenu ToolBar.Make Ejecutar «Make» - tmenu ToolBar.Shell Abrir un intérprete de comandos - tmenu ToolBar.RunCtags Generar un archivo de etiquetas - tmenu ToolBar.TagJump Saltar a una etiqueta - tmenu ToolBar.Help Ayuda - tmenu ToolBar.FindHelp Buscar en la ayuda... - endfun -endif - -" Syntax menu -menutrans &Syntax &Sintaxis -menutrans &Show\ filetypes\ in\ menu &Mostrar\ listas\ de\ «tipo\ de\ archivo» -menutrans Set\ '&syntax'\ only Activar\ sólo\ sintaxis -menutrans Set\ '&filetype'\ too Activar\ también\ «tipo\ de\ archivo» -menutrans &Off &Desactivar\ sintaxis -menutrans &Manual Sintaxis\ &manual -menutrans A&utomatic Sintaxis\ a&utomática -menutrans on/off\ for\ &This\ file Activar/Desactivar\ en\ es&te\ archivo -menutrans Co&lor\ test &Prueba\ de\ colores -menutrans &Highlight\ test Prueba\ de\ &resaltado -menutrans &Convert\ to\ HTML &Convertir\ a\ HTML - -" Find Help dialog text -let g:menutrans_help_dialog = "Introduzca un nombre de comando o palabra para obtener ayuda;\n\nAnteponga i_ para comandos de entrada (e.g.: i_CTRL-X)\nAnteponga c_ para comandos de la línea de comandos (e.g.: c_)\nAnteponga ` para un nombre de opción (e.g.: `shiftwidth`)" diff --git a/share/vim/vim73/lang/menu_fi_fi.latin1.vim b/share/vim/vim73/lang/menu_fi_fi.latin1.vim deleted file mode 100644 index 1f1f5072..00000000 --- a/share/vim/vim73/lang/menu_fi_fi.latin1.vim +++ /dev/null @@ -1,473 +0,0 @@ -" Menu Translations: Finnish -" Maintainer: Flammie Pirinen -" Last Change: 2007 Sep 04 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" Translations should be in latin1, if it requires latin9 or even unicode, -" change this: -if &enc != "cp1252" && &enc != "iso-8859-15" && &enc != "iso-8859-1" - scriptencoding latin1 -endif - -" Accels: TMYSPIO -menutrans &File &Tiedosto -" Accels: AJTUSNIDPOE -menutrans &Open\.\.\.:e &Avaa\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Avaa\ &jaettuna\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew Avaa\ &tabissa\.\.\.:tabnew -menutrans &New:enew &Uusi:enew -menutrans &Close:close &Sulje:close -" -SEP1- -menutrans &Save:w Talle&nna:w -menutrans Save\ &As\.\.\.:sav Tallenna\ n&imellä\.\.\.:sav -" -SEP2- -menutrans Split\ &Diff\ with\.\.\. Jaa\ &diffillä\.\.\. -menutrans Split\ Patched\ &By\.\.\. Jaa\ &patchilla\.\.\. -" -SEP3- -menutrans &Print Tul&osta -" -SEP4- -menutrans Sa&ve-Exit:wqa Tall&enna\ ja\ lopeta:wqa -menutrans E&xit:qa &Lopeta:qa - - -menutrans &Edit &Muokkaa -" Accels: KPTLOIEJSAHRUYKVNF -menutrans &Undou &Kumoau -menutrans &Redo^R &Palauta^R -menutrans Rep&eat\. &Toista\. -" -SEP1- -menutrans Cu&t"+x &Leikkaa"+x -menutrans &Copy"+y K&opioi"+y -menutrans &Paste"+gP L&iitä"+gP -menutrans Put\ &Before[p Lisää\ &ennen[p -menutrans Put\ &After]p Lisää\ &jälkeen]p -menutrans &Deletex Poi&stax -menutrans &Select\ AllggVG V&alitse\ kaikkiggVG -" -SEP2- -menutrans &Find\.\.\. &Hae\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Hae\ ja\ ko&rvaa\.\.\. -menutrans &Find/ &Hae/ -menutrans Find\ and\ Rep&lace:%s Hae\ ja\ ko&rvaa:%s -menutrans Find\ and\ Rep&lace:s Hae\ ja\ ko&rvaa:s -" -SEP3- -menutrans Settings\ &Window Aset&usikkuna -menutrans Startup\ &Settings &Käynnistysasetukset -menutrans &Global\ Settings &Yleiset\ asetukset -" Submenu: -" Accels: KOSHVYIATLEPR -menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Korostus:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! &Ohita\ kirjaintaso:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! &Suljekorostus:set\ sm! - -menutrans &Context\ lines &Huomioitavat\ kontekstirivit -" Subsubmenu: -" Accels: ELSOA -menutrans &Virtual\ Edit &Virtuaalimuokkaus -menutrans Never &Ei koskaan -menutrans Block\ Selection &Lohkovalinta -menutrans Insert\ mode &Syöttötila -menutrans Block\ and\ Insert L&ohkosyöttötila -menutrans Always &Aina - -menutrans Toggle\ Insert\ &Mode:set\ im! S&yöttötila:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! V&i-tila:set\ cp! -menutrans Search\ &Path\.\.\. H&akupolku\.\.\. -menutrans Ta&g\ Files\.\.\. &Tägitiedostot\.\.\. -" -SEP1- -menutrans Toggle\ &Toolbar Työka&lupalkki -menutrans Toggle\ &Bottom\ Scrollbar Vaakavi&erityspalkki -menutrans Toggle\ &Left\ Scrollbar Vasen\ &pystyvierityspalkki -menutrans Toggle\ &Right\ Scrollbar Oikea\ pystyvie&rityspalkki - -let g:menutrans_path_dialog = "Anna tiedostojen hakupolku.\nErota hakemistot pilkuin." -let g:menutrans_tags_dialog = "Anna tägitiedostojen nimet.\nErota tidostot pilkuin." - -menutrans F&ile\ Settings Tiedostoasetu&kset -" Submenu: -" Accels: NLRSTACIBEM -menutrans Toggle\ Line\ &Numbering:set\ nu! Rivi&numerointi:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! &Listaustila:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! &Rivitys:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! &Sanoittainen rivitys:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Muuta\ &tabit\ väleiksi:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! &Automaattinen\ sisennys:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! &C-kielen\ sisennys:set\ cin! -" -SEP2- -menutrans &Shiftwidth S&isennysleveys -menutrans Soft\ &Tabstop Näennäista&bulointi -menutrans Te&xt\ Width\.\.\. Tekstinl&eveys\.\.\. -menutrans &File\ Format\.\.\. Tiedosto&muoto\.\.\. - -let g:menutrans_textwidth_dialog = "Anna uusi tekstin leveys\n(0 poistaa käytöstä)" -let g:menutrans_fileformat_dialog = "Anaa tiedoston kirjoitusmuoto." -let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Peru " - -menutrans C&olor\ Scheme &Väriteema -menutrans &Keymap &Näppäinkartta -menutrans None Ei mikään -menutrans Select\ Fo&nt\.\.\. Valitse\ &fontti\.\.\. - - -menutrans &Tools T&yökalut -" Accels: ___OTDM__ -menutrans &Jump\ to\ this\ tagg^] Siirry\ tägiing^] -menutrans Jump\ &back^T Siirry\ takaisin^T -menutrans Build\ &Tags\ File Luo\ tägitiedosto - -" -SEP1- -menutrans &Spelling &Oikeinkirjoitus -" Submenu: -" Accels: OSEKT -menutrans &Spell\ Check\ On &Oikaisuluku\ päälle -menutrans Spell\ Check\ &Off &Oikaisuluku\ pois\ päältä -menutrans To\ &Next\ error]s &Seuraavaan\ virheeseen]s -menutrans To\ &Previous\ error[s &Edelliseen\ virheeseen[s -menutrans Suggest\ &Correctionsz= Ehdota\ &korjaustaz= -menutrans &Repeat\ correction:spellrepall &Toista\ korjaus:spellrepall - -menutrans Set\ language\ to\ "en" Aseta\ kieleksi\ en -menutrans Set\ language\ to\ "en_au" Aseta\ kieleksi\ en_au -menutrans Set\ language\ to\ "en_ca" Aseta\ kieleksi\ en_ca -menutrans Set\ language\ to\ "en_gb" Aseta\ kieleksi\ en_gb -menutrans Set\ language\ to\ "en_nz" Aseta\ kieleksi\ en_nz -menutrans Set\ language\ to\ "en_us" Aseta\ kieleksi\ en_us - -menutrans &Find\ More\ Languages Hae\ lisää\ kieliä - - - -menutrans &Folding &Taitokset -" Accels: TNVSAPEOKL -menutrans &Enable/Disable\ foldszi &Taitoksetzi -menutrans &View\ Cursor\ Linezv &Näytä\ kursorin\ rivizv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Näytä\ &vain\ kursorin\ rivizMzx -menutrans C&lose\ more\ foldszm &Sulje\ lisää\ taitoksiazm -menutrans &Close\ all\ foldszM &Sulje\ kaikki\ taitoksetzM -menutrans O&pen\ more\ foldszr &Avaa\ lisää\ taitoksiazr -menutrans &Open\ all\ foldszR &Avaa\ kaikki\ taitoksetzR -" -SEP1- -menutrans Fold\ Met&hod Taitteluta&pa -" Submenu: -" Accels: MILSDM -menutrans M&anual &Manuaalinen -menutrans I&ndent S&isennys -menutrans E&xpression I&lmaus -menutrans S&yntax &Syntaksi -menutrans &Diff &Diff -menutrans Ma&rker &Merkit - -menutrans Create\ &Foldzf T&ee\ taitoszf -menutrans &Delete\ Foldzd P&oista\ taitoszd -menutrans Delete\ &All\ FoldszD Poista\ &kaikki\ taitoksetzD -" -SEP2- -menutrans Fold\ col&umn\ width Taitossarakkeen\ &leveys - -menutrans &Diff &Diffit -" Submenu: -" Accels: PHL -menutrans &Update &Päivitä -menutrans &Get\ Block &Hae\ lohko -menutrans &Put\ Block &Lisää\ lohko - -" -SEP2- -menutrans &Make:make &Make:make -menutrans &List\ Errors:cl Virheluettelo:cl -menutrans L&ist\ Messages:cl! Virheviestit:cl! -menutrans &Next\ Error:cn Seuraava\ virhe:cn -menutrans &Previous\ Error:cp Edellinen\ virhe:cp -menutrans &Older\ List:cold Edellinen\ lista:cold -menutrans N&ewer\ List:cnew Seuraava\ lista:cnew - -menutrans Error\ &Window Virheikkuna -" Submenu: -" Accels: PAS -menutrans &Update:cwin &Päivitä:cwin -menutrans &Open:copen &Avaa:copen -menutrans &Close:cclose &Sulje:cclose - -menutrans Se&T\ Compiler Ase&ta\ kääntäjä -" -SEP3- -menutrans &Convert\ to\ HEX:%!xxd Muunna\ heksoiksi:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Muunna\ takaisin:%!xxd\ -r - - -menutrans &Syntax &Syntaksi -" Accels: NSFPMAT -menutrans &Show\ filetypes\ in\ menu &Näytä\ tiedostotyypit\ valikossa -" -SEP1- -menutrans Set\ '&syntax'\ only Aseta\ vain\ &syntax -menutrans Set\ '&filetype'\ too Aseta\ myös\ &filetype -menutrans &Off &Pois\ päältä -" -SEP3- -menutrans Co&lor\ test Testaa\ värit -menutrans &Highlight\ test Testaa\ korostukset -menutrans &Convert\ to\ HTML Muunna\ HTML:ksi -" -SEP2- -menutrans &Off &Pois\ päältä -menutrans &Manual &Manuaalinen -menutrans A&utomatic &Automaattinen -menutrans on/off\ for\ &This\ file Kytke\ &tälle\ tiedostolle - -" The Start Of The Syntax Menu -menutrans ABC\ music\ notation ABC\ (notation\ musicale) -menutrans AceDB\ model Modèle\ AceDB -menutrans Apache\ config Config\.\ Apache -menutrans Apache-style\ config Config\.\ style\ Apache -menutrans ASP\ with\ VBScript ASP\ avec\ VBScript -menutrans ASP\ with\ Perl ASP\ avec\ Perl -menutrans Assembly Assembleur -menutrans BC\ calculator Calculateur\ BC -menutrans BDF\ font Fonte\ BDF -menutrans BIND\ config Config\.\ BIND -menutrans BIND\ zone Zone\ BIND -menutrans Cascading\ Style\ Sheets Feuilles\ de\ style\ en\ cascade -menutrans Cfg\ Config\ file Fichier\ de\ config\.\ \.cfg -menutrans Cheetah\ template Patron\ Cheetah -menutrans commit\ file Fichier\ commit -menutrans Generic\ Config\ file Fichier\ de\ config\.\ générique -menutrans Digital\ Command\ Lang DCL -menutrans DNS/BIND\ zone Zone\ BIND/DNS -menutrans Dylan\ interface Interface -menutrans Dylan\ lid LID -menutrans Elm\ filter\ rules Règles\ de\ filtrage\ Elm -menutrans ERicsson\ LANGuage Erlang\ (langage\ Ericsson) -menutrans Essbase\ script Script\ Essbase -menutrans Eterm\ config Config\.\ Eterm -menutrans Exim\ conf Config\.\ Exim -menutrans Fvwm\ configuration Config\.\ Fvwm -menutrans Fvwm2\ configuration Config\.\ Fvwm2 -menutrans Fvwm2\ configuration\ with\ M4 Config\.\ Fvwm2\ avec\ M4 -menutrans GDB\ command\ file Fichier\ de\ commandes\ GDB -menutrans HTML\ with\ M4 HTML\ avec\ M4 -menutrans Cheetah\ HTML\ template Patron\ Cheetah\ pour\ HTML -menutrans IDL\Generic\ IDL IDL\IDL\ générique -menutrans IDL\Microsoft\ IDL IDL\IDL\ Microsoft -menutrans Indent\ profile Profil\ Indent -menutrans Inno\ setup Config\.\ Inno -menutrans InstallShield\ script Script\ InstallShield -menutrans KDE\ script Script\ KDE -menutrans LFTP\ config Config\.\ LFTP -menutrans LifeLines\ script Script\ LifeLines -menutrans Lynx\ Style Style\ Lynx -menutrans Lynx\ config Config\.\ Lynx -menutrans Man\ page Page\ Man -menutrans MEL\ (for\ Maya) MEL\ (pour\ Maya) -menutrans 4DOS\ \.bat\ file Fichier\ \.bat\ 4DOS -menutrans \.bat\/\.cmd\ file Fichier\ \.bat\ /\ \.cmd -menutrans \.ini\ file Fichier\ \.ini -menutrans Module\ Definition Définition\ de\ module -menutrans Registry Extrait\ du\ registre -menutrans Resource\ file Fichier\ de\ ressources -menutrans Novell\ NCF\ batch Batch\ Novell\ NCF -menutrans NSIS\ script Script\ NSIS -menutrans Oracle\ config Config\.\ Oracle -menutrans Palm\ resource\ compiler Compil\.\ de\ resources\ Palm -menutrans PHP\ 3-4 PHP\ 3\ et\ 4 -menutrans Postfix\ main\ config Config\.\ Postfix -menutrans Povray\ scene\ descr Scène\ Povray -menutrans Povray\ configuration Config\.\ Povray -menutrans Purify\ log Log\ Purify -menutrans Readline\ config Config\.\ Readline -menutrans RCS\ log\ output Log\ RCS -menutrans RCS\ file Fichier\ RCS -menutrans RockLinux\ package\ desc\. Desc\.\ pkg\.\ RockLinux -menutrans Samba\ config Config\.\ Samba -menutrans SGML\ catalog Catalogue\ SGML -menutrans SGML\ DTD DTD\ SGML -menutrans SGML\ Declaration Déclaration\ SGML -menutrans Shell\ script Script\ shell -menutrans sh\ and\ ksh sh\ et\ ksh -menutrans Sinda\ compare Comparaison\ Sinda -menutrans Sinda\ input Entrée\ Sinda -menutrans Sinda\ output Sortie\ Sinda -menutrans SKILL\ for\ Diva SKILL\ pour\ Diva -menutrans Smarty\ Templates Patrons\ Smarty -menutrans SNNS\ network Réseau\ SNNS -menutrans SNNS\ pattern Motif\ SNNS -menutrans SNNS\ result Résultat\ SNNS -menutrans Snort\ Configuration Config\.\ Snort -menutrans Squid\ config Config\.\ Squid -menutrans Subversion\ commit Commit\ Subversion -menutrans TAK\ compare Comparaison\ TAK -menutrans TAK\ input Entrée\ TAK -menutrans TAK\ output Sortie\ TAK -menutrans TeX\ configuration Config\.\ TeX -menutrans TF\ mud\ client TF\ (client\ MUD) -menutrans Tidy\ configuration Config\.\ Tidy -menutrans Trasys\ input Entrée\ Trasys -menutrans Command\ Line Ligne\ de\ commande -menutrans Geometry Géométrie -menutrans Optics Optiques -menutrans Vim\ help\ file Fichier\ d'aide\ Vim -menutrans Vim\ script Script\ Vim -menutrans Viminfo\ file Fichier\ Viminfo -menutrans Virata\ config Config\.\ Virata -menutrans Wget\ config Config\.\ wget -menutrans Whitespace\ (add) Espaces\ et\ tabulations -menutrans WildPackets\ EtherPeek\ Decoder Décodeur\ WildPackets\ EtherPeek -menutrans X\ resources Resources\ X -menutrans XXD\ hex\ dump Sortie\ hexa\.\ de\ xxd -menutrans XFree86\ Config Config\.\ XFree86 - -menutrans &Buffers &Puskurit -" Accels: VPASE -menutrans Dummy Dummy -menutrans &Refresh\ menu Päivitä\ &valikko -menutrans &Delete &Poista -menutrans &Alternate V&aihda -menutrans &Next &Seuraava -menutrans &Previous &Edellinen -" -SEP- -" (Alphabet menus) -menutrans &others &muut -let g:menutrans_no_file = "[Ei tiedostoja]" - - -menutrans &Window &Ikkuna -" Accels: UJPTSMIYAKOL -menutrans &New^Wn &Uusi\ ikkuna^Wn -menutrans S&plit^Ws &Jaa^Ws -menutrans Sp&lit\ To\ #^W^^ &Jaa\ #^W^^ -menutrans Split\ &Vertically^Wv Jaa\ &pystysuunnassa^Wv -menutrans Split\ File\ E&xplorer Jaa\ &tiedostonhallinnalle -" -SEP1- -menutrans &Close^Wc &Sulje^Wc -menutrans Close\ &Other(s)^Wo Sulje\ &muut^Wo -" -SEP2- -menutrans Move\ &To S&iirrä -" Submenu: -" Accels: YAOV -menutrans &Top^WK &Ylös^WK -menutrans &Bottom^WJ &Alas^WJ -menutrans &Left\ side^WH &Oikealle^WH -menutrans &Right\ side^WL &Vasemmalle^WL - -menutrans Rotate\ &Up^WR Vaihda\ &ylemmäs^WR -menutrans Rotate\ &Down^Wr Vaihda\ &alemmas^Wr -" -SEP3- -menutrans &Equal\ Size^W= Saman\ &kokoisiksi^W= -menutrans &Max\ Height^W_ Enimmäisk&orkeuteen^W_ -menutrans M&in\ Height^W1_ Vähimmäisk&orkeuteen^W1_ -menutrans Max\ &Width^W\| Enimmäis&leveyteen^W\| -menutrans Min\ Widt&h^W1\| Vähimmäis&leveyteen^W1\| - -" (Plugin menus here) -menutrans Plugin Liitännäiset - -menutrans &Help &Ohje -" Accels: YKUHTLROVI -menutrans &Overview &Yleiskatsaus -menutrans &User\ Manual &Käyttöohje -menutrans &How-to\ links K&UINKA-linkkejä -menutrans &Find\.\.\. &Hae\.\.\. -" -sep1- -menutrans &Credits &Tekijät -menutrans Co&pying &Lisenssi -menutrans &Sponsor/Register Sponsoroi/&Rekisteröi -menutrans O&rphans &Orvoista -" -sep2- -menutrans &Version &Versio -menutrans &About T&ietoja - -let g:menutrans_help_dialog = "Anna komento tai sana, jota haetaan ohjeesta.\n\nAloita i_:llä syöttötilan komentoja varten (esim. i_CTRL-X)\nAloita c_:llä komentoriviä varten (esim. c_)\nKirjoita asetukset puolilainausmerkkeijin (esim. 'shiftwidth')" - - -" PopUp - -menutrans &Undo &Kumoa -" -SEP1- -menutrans Cu&t &Leikkaa -menutrans &Copy &Kopioi -menutrans &Paste L&iitä -" &Buffers.&Delete overwrites this one -menutrans &Delete &Poista -" -SEP2- -menutrans Select\ Blockwise Valitse\ lohkoittain -menutrans Select\ &Word Valitse\ &sana -menutrans Select\ &Line Valitse\ &rivi -menutrans Select\ &Block Valitse\ &lohko -menutrans Select\ &All Valitse\ &kaikki - - -" ToolBar - -menutrans Open Avaa -menutrans Save Tallenna -menutrans SaveAll TallennaKaikki -menutrans Print Tulosta -" -sep1- -menutrans Undo Kumoa -menutrans Redo Palauta -" -sep2- -menutrans Cut Leikkaa -menutrans Copy Kopioi -menutrans Paste Liitä -" -sep3- -menutrans Find Etsi -menutrans FindNext EtsiSeur -menutrans FindPrev EtsiEd -menutrans Replace Korvaa -" -sep4- -menutrans New Uusi -menutrans WinSplit JaaIkk -menutrans WinMax IkkMax -menutrans WinMin IkkMin -menutrans WinVSplit JaaIkkV -menutrans WinMaxWidth IkkMaxLev -menutrans WinMinWidth IkkMinLev -menutrans WinClose SuljeIkk -" -sep5- -menutrans LoadSesn AvaaSess -menutrans SaveSesn TallSess -menutrans RunScript AjaSkripti -" -sep6- -menutrans Make Make -menutrans RunCtags AjaCTags -menutrans TagJump TagHypp -" -sep7- -menutrans Help Ohje -menutrans FindHelp OhjeHaku - -fun! Do_toolbar_tmenu() - let did_toolbar_tmenu = 1 - tmenu ToolBar.Open Avaa tiedosto - tmenu ToolBar.Save Tallenna nykyinen tiedosto - tmenu ToolBar.SaveAll Tallenna kaikki tiedostot - tmenu ToolBar.Print Tulosta - tmenu ToolBar.Undo Kumoa - tmenu ToolBar.Redo Palauta - tmenu ToolBar.Cut Leikkaa - tmenu ToolBar.Copy Kopioi - tmenu ToolBar.Paste Liitä - if !has("gui_athena") - tmenu ToolBar.Find Hae - tmenu ToolBar.FindNext Hae seuraava - tmenu ToolBar.FindPrev Hae edellinen - tmenu ToolBar.Replace Korvaa - endif - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Uusi ikkuna - tmenu ToolBar.WinSplit Jaa ikkuna - tmenu ToolBar.WinMax Maximiser fenêtre - tmenu ToolBar.WinMin Minimiser fenêtre - tmenu ToolBar.WinVSplit Fractionner verticalement - tmenu ToolBar.WinMaxWidth Maximiser largeur fenêtre - tmenu ToolBar.WinMinWidth Minimiser largeur fenêtre - tmenu ToolBar.WinClose Fermer fenêtre - endif - tmenu ToolBar.LoadSesn Avaa sessio - tmenu ToolBar.SaveSesn Tallenna nykyinen sessio - tmenu ToolBar.RunScript Lataa vim-skripti - tmenu ToolBar.Make Suorita make - tmenu ToolBar.RunCtags Suorita CTags - tmenu ToolBar.TagJump Hyppää tägiin - tmenu ToolBar.Help Vimin ohje - tmenu ToolBar.FindHelp Etsi ohjeesta -endfun - -" vim: set fileencoding=latin1 diff --git a/share/vim/vim73/lang/menu_fr_fr.latin1.vim b/share/vim/vim73/lang/menu_fr_fr.latin1.vim deleted file mode 100644 index e8881bd6..00000000 --- a/share/vim/vim73/lang/menu_fr_fr.latin1.vim +++ /dev/null @@ -1,468 +0,0 @@ -" Menu Translations: Francais -" Maintainer: Adrien Beau -" First Version: Francois Thunus -" Last Modification: David Blanchet -" Last Change: 2006 Apr 30 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" The translations below are in latin1, but they work for cp1252 and -" iso-8859-15 without conversion as well. -if &enc != "cp1252" && &enc != "iso-8859-15" && &enc != "iso-8859-1" - scriptencoding latin1 -endif - -menutrans &Help &Aide - -menutrans &Overview &Sommaire -menutrans &User\ Manual &Manuel\ utilisateur -menutrans &How-to\ links &Tâches\ courantes -menutrans &Find\.\.\. Rec&hercher\.\.\. -" -sep1- -menutrans &Credits &Remerciements -menutrans Co&pying &License -menutrans &Sponsor/Register Sponsor/&Enregistrement -menutrans O&rphans &Orphelins -" -sep2- -menutrans &Version &Version -menutrans &About À\ &propos\ de\ Vim - -let g:menutrans_help_dialog = "Entrez une commande ou un mot à rechercher dans l'aide.\n\nAjoutez i_ pour les commandes du mode Insertion (ex: i_CTRL-X)\nAjoutez c_ pour l'édition de la ligne de commande (ex: c_)\nEntourez les options avec des apostrophes (ex: 'shiftwidth')" - - -menutrans &File &Fichier - -menutrans &Open\.\.\.:e &Ouvrir\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Ouvrir\ à\ p&art\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew Ouvrir\ dans\ un\ onglet\.\.\.:tabnew -menutrans &New:enew &Nouveau:enew -menutrans &Close:close &Fermer:close -" -SEP1- -menutrans &Save:w &Enregistrer:w -menutrans Save\ &As\.\.\.:sav Enregistrer\ &sous\.\.\.:sav -" -SEP2- -menutrans Split\ &Diff\ with\.\.\. &Difference\ avec\.\.\. -"menutrans Split\ Patched\ &By\.\.\. &Patcher\ avec\.\.\. -menutrans Split\ Patched\ &By\.\.\. &Tester\ un\ patch\.\.\. -" -SEP3- -menutrans &Print &Imprimer -" -SEP4- -menutrans Sa&ve-Exit:wqa En®istrer\ et\ quitter:wqa -menutrans E&xit:qa &Quitter:qa - - -menutrans &Edit &Edition - -menutrans &Undou &Annuleru -menutrans &Redo^R Re&faire^R -menutrans Rep&eat\. R&épéter\. -" -SEP1- -menutrans Cu&t"+x Co&uper"+x -menutrans &Copy"+y Cop&ier"+y -menutrans &Paste"+gP C&oller"+gP -menutrans Put\ &Before[p Placer\ a&vant[p -menutrans Put\ &After]p Placer\ apr&ès]p -menutrans &Deletex Effa&cerx -menutrans &Select\ AllggVG &Sélectionner\ toutggVG -" -SEP2- -menutrans &Find\.\.\. Rec&hercher\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Re&mplacer\.\.\. -menutrans &Find/ Rec&hercher/ -menutrans Find\ and\ Rep&lace:%s Re&mplacer:%s -menutrans Find\ and\ Rep&lace:s Re&mplacer:s -" -SEP3- -menutrans Settings\ &Window Fe&nêtre\ des\ réglages -menutrans &Global\ Settings Réglages\ globau&x - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Surligner\ recherche\ on/off:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! &Ignorer\ casse\ on/off:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Vérifier\ parenth&èses\ on/off:set\ sm! - -menutrans &Context\ lines Lignes\ &autour\ du\ curseur - -menutrans &Virtual\ Edit Édition\ &virtuelle -menutrans Never &Jamais -menutrans Block\ Selection &Sélection\ en\ bloc -menutrans Insert\ mode &Mode\ insertion -menutrans Block\ and\ Insert &Bloc\ et\ insertion -menutrans Always &Toujours - -menutrans Toggle\ Insert\ &Mode:set\ im! I&nsertion\ permanente\ on/off:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! &Compatibilité\ Vi\ on/off:set\ cp! -menutrans Search\ &Path\.\.\. Chemin\ de\ rec&herche\ des\ fichiers\.\.\. -menutrans Ta&g\ Files\.\.\. Fichiers\ d'&étiquettes\.\.\. -" -SEP1- -menutrans Toggle\ &Toolbar Barre\ d'&outils\ on/off -menutrans Toggle\ &Bottom\ Scrollbar Ascenseur\ &horizontal\ on/off -menutrans Toggle\ &Left\ Scrollbar Ascenseur\ à\ ga&uche\ on/off -menutrans Toggle\ &Right\ Scrollbar Ascenseur\ à\ &droite\ on/off - -let g:menutrans_path_dialog = "Entrez le chemin de recherche des fichiers.\nSéparez les répertoires par des virgules." -let g:menutrans_tags_dialog = "Entrez les noms des fichiers d'étiquettes.\nSéparez les noms par des virgules." - -menutrans F&ile\ Settings Réglages\ fichie&r - -menutrans Toggle\ Line\ &Numbering:set\ nu! &Numérotation\ on/off:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Mode\ &listing\ on/off:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! &Retour\ à\ la\ ligne\ on/off:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Retour\ sur\ &mot\ on/off:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! &Tab\.\ en\ espaces\ on/off:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Indentation\ &auto\.\ on/off:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Indent\.\ langage\ &C\ on/off:set\ cin! -" -SEP2- -menutrans &Shiftwidth Largeur\ des\ in&dentations -menutrans Soft\ &Tabstop &Pseudo-tabulations -menutrans Te&xt\ Width\.\.\. Largeur\ du\ te&xte\.\.\. -menutrans &File\ Format\.\.\. Format\ du\ &fichier\.\.\. - -let g:menutrans_textwidth_dialog = "Entrez la nouvelle largeur du texte\n(0 pour désactiver le formattage)." -let g:menutrans_fileformat_dialog = "Choisissez le format dans lequel écrire le fichier." -let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Annuler " - -menutrans C&olor\ Scheme &Jeu\ de\ couleurs -menutrans &Keymap &Type\ de\ clavier -menutrans None (aucun) -menutrans Select\ Fo&nt\.\.\. Sélectionner\ &police\.\.\. - - -menutrans &Tools &Outils - -menutrans &Jump\ to\ this\ tagg^] &Atteindre\ cette\ étiquetteg^] -menutrans Jump\ &back^T Repartir\ en\ arri&ère^T -menutrans Build\ &Tags\ File &Générer\ fichier\ d'étiquettes - -" -SEP1- -menutrans &Spelling &Orthographe -menutrans &Spell\ Check\ On &Activer -menutrans Spell\ Check\ &Off &Désactiver -menutrans To\ &Next\ error]s À\ l'erreur\ &suivante]s -menutrans To\ &Previous\ error[s À\ l'erreur\ &précédente[s -menutrans Suggest\ &Correctionsz= Suggérer\ &correctionz= -menutrans &Repeat\ correction:spellrepall &Reporter\ la\ correction:spellrepall - -an 40.335.205 &Tools.&Spelling.Français\ (fr) :set spl=fr spell -menutrans Set\ language\ to\ "en" Anglais -menutrans Set\ language\ to\ "en_au" Anglais\ (en_au) -menutrans Set\ language\ to\ "en_ca" Anglais\ (en_ca) -menutrans Set\ language\ to\ "en_gb" Anglais\ (en_gb) -menutrans Set\ language\ to\ "en_nz" Anglais\ (en_nz) -menutrans Set\ language\ to\ "en_us" Anglais\ (en_us) - -menutrans &Find\ More\ Languages &Trouver\ d'autres\ langues - - - -menutrans &Folding &Replis - -menutrans &Enable/Disable\ foldszi &Replis\ on/offzi -menutrans &View\ Cursor\ Linezv D&éplier\ ligne\ curseurzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Tout\ plier\ &sauf\ ligne\ curseurzMzx -menutrans C&lose\ more\ foldszm Fermer\ &plus\ de\ repliszm -menutrans &Close\ all\ foldszM F&ermer\ tous\ les\ repliszM -menutrans O&pen\ more\ foldszr Ouvrir\ pl&us\ de\ repliszr -menutrans &Open\ all\ foldszR &Ouvrir\ tous\ les\ repliszR -" -SEP1- -menutrans Fold\ Met&hod &Méthode\ de\ repli - -menutrans M&anual &Manuelle -menutrans I&ndent &Indentation -menutrans E&xpression &Expression -menutrans S&yntax &Syntaxe -menutrans &Diff &Différence -menutrans Ma&rker Ma&rqueurs - -menutrans Create\ &Foldzf &Créer\ replizf -menutrans &Delete\ Foldzd E&ffacer\ replizd -menutrans Delete\ &All\ FoldszD Effacer\ &tous\ les\ repliszD -" -SEP2- -menutrans Fold\ col&umn\ width &Largeur\ colonne\ replis - -menutrans &Diff &Différence - -menutrans &Update &Mettre\ à\ jour -menutrans &Get\ Block Corriger\ &ce\ tampon -menutrans &Put\ Block Corriger\ l'&autre\ tampon - -" -SEP2- -menutrans &Make:make Lancer\ ma&ke:make -menutrans &List\ Errors:cl Lister\ &erreurs:cl -menutrans L&ist\ Messages:cl! Lister\ &messages:cl! -menutrans &Next\ Error:cn Erreur\ &suivante:cn -menutrans &Previous\ Error:cp Erreur\ pr&écédente:cp -"menutrans &Older\ List:cold A&ncienne\ liste:cold -menutrans &Older\ List:cold Liste\ &précédente:cold -"menutrans N&ewer\ List:cnew No&uvelle\ liste:cnew -menutrans N&ewer\ List:cnew Liste\ suivan&te:cnew - -menutrans Error\ &Window &Fenêtre\ d'erreurs - -menutrans &Update:cwin &Mettre\ à\ jour:cwin -menutrans &Open:copen &Ouvrir:copen -menutrans &Close:cclose &Fermer:cclose - -" -SEP3- -menutrans &Convert\ to\ HEX:%!xxd Convertir\ en\ he&xa:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Décon&vertir:%!xxd\ -r - -menutrans Se&T\ Compiler &Type\ de\ compilateur - - -menutrans &Buffers &Tampons - -menutrans Dummy Factice -menutrans &Refresh\ menu &Mettre\ ce\ menu\ à\ jour -menutrans &Delete &Effacer -menutrans &Alternate &Alterner -menutrans &Next &Suivant -menutrans &Previous &Précédent -" -SEP- - -menutrans &others au&tres -menutrans &u-z &uvwxyz -let g:menutrans_no_file = "[Aucun fichier]" - - -menutrans &Window Fe&nêtre - -menutrans &New^Wn &Nouvelle\ fenêtre^Wn -menutrans S&plit^Ws &Fractionner^Ws -menutrans Sp&lit\ To\ #^W^^ Fractionner\ p&our\ #^W^^ -menutrans Split\ &Vertically^Wv Fractionner\ &verticalement^Wv -menutrans Split\ File\ E&xplorer Fractionner\ &explorateur -" -SEP1- -menutrans &Close^Wc Fer&mer^Wc -menutrans Close\ &Other(s)^Wo Fermer\ les\ &autres^Wo -" -SEP2- -menutrans Move\ &To &Déplacer\ vers\ le - -menutrans &Top^WK &Haut^WK -menutrans &Bottom^WJ &Bas^WJ -menutrans &Left\ side^WH Côté\ &gauche^WH -menutrans &Right\ side^WL Côté\ &droit^WL - -menutrans Rotate\ &Up^WR Rotation\ vers\ le\ &haut^WR -menutrans Rotate\ &Down^Wr Rotation\ vers\ le\ &bas^Wr -" -SEP3- -menutrans &Equal\ Size^W= Égaliser\ ta&illes^W= -menutrans &Max\ Height^W_ Hau&teur\ maximale^W_ -menutrans M&in\ Height^W1_ Ha&uteur\ minimale^W1_ -menutrans Max\ &Width^W\| &Largeur\ maximale^W\| -menutrans Min\ Widt&h^W1\| La&rgeur\ minimale^W1\| - - -" PopUp - -menutrans &Undo &Annuler -" -SEP1- -menutrans Cu&t Co&uper -menutrans &Copy Cop&ier -menutrans &Paste C&oller -" &Buffers.&Delete overwrites this one -menutrans &Delete &Effacer -" -SEP2- -menutrans Select\ Blockwise Sélectionner\ &bloc -menutrans Select\ &Word Sélectionner\ &mot -menutrans Select\ &Line Sélectionner\ &ligne -menutrans Select\ &Block Sélectionner\ &bloc -menutrans Select\ &All Sélectionner\ &tout - - -" ToolBar - -menutrans Open Ouvrir -menutrans Save Enreg -menutrans SaveAll EnregTout -menutrans Print Imprimer -" -sep1- -menutrans Undo Annuler -menutrans Redo Refaire -" -sep2- -menutrans Cut Couper -menutrans Copy Copier -menutrans Paste Coller -" -sep3- -menutrans Find Chercher -menutrans FindNext CherchSuiv -menutrans FindPrev CherchPrec -menutrans Replace Remplacer -" -sep4- -menutrans New Nouvelle -menutrans WinSplit FenFract -menutrans WinMax FenMax -menutrans WinMin FenMin -menutrans WinVSplit FenVFract -menutrans WinMaxWidth FenMaxLarg -menutrans WinMinWidth FenMinLarg -menutrans WinClose FenFerme -" -sep5- -menutrans LoadSesn OuvrirSess -menutrans SaveSesn EnregSess -menutrans RunScript LancScript -" -sep6- -menutrans Make Make -menutrans RunCtags CréerEtiqu -menutrans TagJump AllerEtiqu -" -sep7- -menutrans Help Aide -menutrans FindHelp CherchAide - -fun! Do_toolbar_tmenu() - let did_toolbar_tmenu = 1 - tmenu ToolBar.Open Ouvrir fichier - tmenu ToolBar.Save Enregistrer fichier courant - tmenu ToolBar.SaveAll Enregistrer tous les fichiers - tmenu ToolBar.Print Imprimer - tmenu ToolBar.Undo Annuler - tmenu ToolBar.Redo Refaire - tmenu ToolBar.Cut Couper - tmenu ToolBar.Copy Copier - tmenu ToolBar.Paste Coller - if !has("gui_athena") - tmenu ToolBar.Find Rechercher - tmenu ToolBar.FindNext Chercher suivant - tmenu ToolBar.FindPrev Chercher précédent - tmenu ToolBar.Replace Remplacer - endif - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nouvelle fenêtre - tmenu ToolBar.WinSplit Fractionner fenêtre - tmenu ToolBar.WinMax Maximiser fenêtre - tmenu ToolBar.WinMin Minimiser fenêtre - tmenu ToolBar.WinVSplit Fractionner verticalement - tmenu ToolBar.WinMaxWidth Maximiser largeur fenêtre - tmenu ToolBar.WinMinWidth Minimiser largeur fenêtre - tmenu ToolBar.WinClose Fermer fenêtre - endif - tmenu ToolBar.LoadSesn Ouvrir session - tmenu ToolBar.SaveSesn Enregister session courante - tmenu ToolBar.RunScript Lancer un script Vim - tmenu ToolBar.Make Lancer make - tmenu ToolBar.RunCtags Créer les étiquettes - tmenu ToolBar.TagJump Atteindre cette étiquette - tmenu ToolBar.Help Aide de Vim - tmenu ToolBar.FindHelp Rechercher dans l'aide -endfun - - -menutrans &Syntax &Syntaxe - -menutrans &Off Désactiver -menutrans &Manual &Manuelle -menutrans A&utomatic &Automatique -menutrans on/off\ for\ &This\ file On/off\ pour\ &ce\ fichier - -" The Start Of The Syntax Menu -menutrans ABC\ music\ notation ABC\ (notation\ musicale) -menutrans AceDB\ model Modèle\ AceDB -menutrans Apache\ config Config\.\ Apache -menutrans Apache-style\ config Config\.\ style\ Apache -menutrans ASP\ with\ VBScript ASP\ avec\ VBScript -menutrans ASP\ with\ Perl ASP\ avec\ Perl -menutrans Assembly Assembleur -menutrans BC\ calculator Calculateur\ BC -menutrans BDF\ font Fonte\ BDF -menutrans BIND\ config Config\.\ BIND -menutrans BIND\ zone Zone\ BIND -menutrans Cascading\ Style\ Sheets Feuilles\ de\ style\ en\ cascade -menutrans Cfg\ Config\ file Fichier\ de\ config\.\ \.cfg -menutrans Cheetah\ template Patron\ Cheetah -menutrans commit\ file Fichier\ commit -menutrans Generic\ Config\ file Fichier\ de\ config\.\ générique -menutrans Digital\ Command\ Lang DCL -menutrans DNS/BIND\ zone Zone\ BIND/DNS -menutrans Dylan\ interface Interface -menutrans Dylan\ lid LID -menutrans Elm\ filter\ rules Règles\ de\ filtrage\ Elm -menutrans ERicsson\ LANGuage Erlang\ (langage\ Ericsson) -menutrans Essbase\ script Script\ Essbase -menutrans Eterm\ config Config\.\ Eterm -menutrans Exim\ conf Config\.\ Exim -menutrans Fvwm\ configuration Config\.\ Fvwm -menutrans Fvwm2\ configuration Config\.\ Fvwm2 -menutrans Fvwm2\ configuration\ with\ M4 Config\.\ Fvwm2\ avec\ M4 -menutrans GDB\ command\ file Fichier\ de\ commandes\ GDB -menutrans HTML\ with\ M4 HTML\ avec\ M4 -menutrans Cheetah\ HTML\ template Patron\ Cheetah\ pour\ HTML -menutrans IDL\Generic\ IDL IDL\IDL\ générique -menutrans IDL\Microsoft\ IDL IDL\IDL\ Microsoft -menutrans Indent\ profile Profil\ Indent -menutrans Inno\ setup Config\.\ Inno -menutrans InstallShield\ script Script\ InstallShield -menutrans KDE\ script Script\ KDE -menutrans LFTP\ config Config\.\ LFTP -menutrans LifeLines\ script Script\ LifeLines -menutrans Lynx\ Style Style\ Lynx -menutrans Lynx\ config Config\.\ Lynx -menutrans Man\ page Page\ Man -menutrans MEL\ (for\ Maya) MEL\ (pour\ Maya) -menutrans 4DOS\ \.bat\ file Fichier\ \.bat\ 4DOS -menutrans \.bat\/\.cmd\ file Fichier\ \.bat\ /\ \.cmd -menutrans \.ini\ file Fichier\ \.ini -menutrans Module\ Definition Définition\ de\ module -menutrans Registry Extrait\ du\ registre -menutrans Resource\ file Fichier\ de\ ressources -menutrans Novell\ NCF\ batch Batch\ Novell\ NCF -menutrans NSIS\ script Script\ NSIS -menutrans Oracle\ config Config\.\ Oracle -menutrans Palm\ resource\ compiler Compil\.\ de\ resources\ Palm -menutrans PHP\ 3-4 PHP\ 3\ et\ 4 -menutrans Postfix\ main\ config Config\.\ Postfix -menutrans Povray\ scene\ descr Scène\ Povray -menutrans Povray\ configuration Config\.\ Povray -menutrans Purify\ log Log\ Purify -menutrans Readline\ config Config\.\ Readline -menutrans RCS\ log\ output Log\ RCS -menutrans RCS\ file Fichier\ RCS -menutrans RockLinux\ package\ desc\. Desc\.\ pkg\.\ RockLinux -menutrans Samba\ config Config\.\ Samba -menutrans SGML\ catalog Catalogue\ SGML -menutrans SGML\ DTD DTD\ SGML -menutrans SGML\ Declaration Déclaration\ SGML -menutrans Shell\ script Script\ shell -menutrans sh\ and\ ksh sh\ et\ ksh -menutrans Sinda\ compare Comparaison\ Sinda -menutrans Sinda\ input Entrée\ Sinda -menutrans Sinda\ output Sortie\ Sinda -menutrans SKILL\ for\ Diva SKILL\ pour\ Diva -menutrans Smarty\ Templates Patrons\ Smarty -menutrans SNNS\ network Réseau\ SNNS -menutrans SNNS\ pattern Motif\ SNNS -menutrans SNNS\ result Résultat\ SNNS -menutrans Snort\ Configuration Config\.\ Snort -menutrans Squid\ config Config\.\ Squid -menutrans Subversion\ commit Commit\ Subversion -menutrans TAK\ compare Comparaison\ TAK -menutrans TAK\ input Entrée\ TAK -menutrans TAK\ output Sortie\ TAK -menutrans TeX\ configuration Config\.\ TeX -menutrans TF\ mud\ client TF\ (client\ MUD) -menutrans Tidy\ configuration Config\.\ Tidy -menutrans Trasys\ input Entrée\ Trasys -menutrans Command\ Line Ligne\ de\ commande -menutrans Geometry Géométrie -menutrans Optics Optiques -menutrans Vim\ help\ file Fichier\ d'aide\ Vim -menutrans Vim\ script Script\ Vim -menutrans Viminfo\ file Fichier\ Viminfo -menutrans Virata\ config Config\.\ Virata -menutrans Wget\ config Config\.\ wget -menutrans Whitespace\ (add) Espaces\ et\ tabulations -menutrans WildPackets\ EtherPeek\ Decoder Décodeur\ WildPackets\ EtherPeek -menutrans X\ resources Resources\ X -menutrans XXD\ hex\ dump Sortie\ hexa\.\ de\ xxd -menutrans XFree86\ Config Config\.\ XFree86 -" The End Of The Syntax Menu - -menutrans &Show\ filetypes\ in\ menu &Afficher\ tout\ le\ menu -" -SEP1- -menutrans Set\ '&syntax'\ only Changer\ '&syntax'\ seulement -menutrans Set\ '&filetype'\ too Changer\ '&filetype'\ aussi -menutrans &Off &Off -" -SEP3- -menutrans Co&lor\ test Tester\ les\ co&uleurs -menutrans &Highlight\ test Tester\ les\ g&roupes\ de\ surbrillance -menutrans &Convert\ to\ HTML Con&vertir\ en\ HTML diff --git a/share/vim/vim73/lang/menu_hu_hu.iso_8859-2.vim b/share/vim/vim73/lang/menu_hu_hu.iso_8859-2.vim deleted file mode 100644 index d3fafce1..00000000 --- a/share/vim/vim73/lang/menu_hu_hu.iso_8859-2.vim +++ /dev/null @@ -1,258 +0,0 @@ -" Menu Translations: Hungarian (Magyar) -" Original Translation: Zoltán Árpádffy -" Maintained By: Kontra Gergely -" Last Change: 2003 May 31 -" I'm working on defining (unaccented) hotkeys for everything. -" I want to remove y and z hotkeys, because on the hungarian keymap they're at -" a differrent place. -" I also want to avoid g and j shortcuts, because you cannot see, wheter -" they're underlined or not. -" If the hotkeys are not uniq (pressing the hotkey doesn't executes the menu, -" just one menupoint is selected), or you find any other undesired behaviour, -" please report it to me. -" All kind of feedback is welcome. -" -" Igyekeztem mindenhez gyorsbillentyût rendelni, lehetõleg nem ékezeteset. -" További tennivaló az y és z gyorsbillentyûk kiirtása, ezenkívül a g, j -" billentyûk irtása is, mivel ez utóbbiak aláhúzott változatát nem könnyû -" felismerni. -" Amennyiben valahol nem egyértelmûk a gyorsbillentyûk (a gyorsbillentyût -" leütve nem hajtódik végre a kiszemelt menüpont, hanem csak kiválasztódik, -" vagy másik menüpont választódik ki), vagy egyéb hibát találsz, kérlek jelezd -" nekem a fenti email címen. -" Mindennemû visszajelzést szívesen fogadok. - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding iso-8859-2 - -" Help menu -menutrans &Help &Súgó -menutrans &Overview Á&ttekintés -menutrans &How-to\ links &HOGYAN\ linkek -menutrans &User\ Manual &Kézikönyv -menutrans &Credits &Szerzõk,\ köszönetek -menutrans Co&pying &Védjegy -menutrans O&rphans Árvá&k -menutrans &Find\.\.\. Ke&resés\.\.\. -menutrans &Version &Verzió -menutrans &About &Névjegy -" File menu -menutrans &File &Fájl -menutrans &Open\.\.\.:e Meg&nyitás\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Megnyitás\ új\ a&blakba\.\.\.:sp -menutrans &New:enew Új\ dok&umentum:enew -menutrans &Close:close Be&zárás:close -menutrans &Save:w &Mentés:w -menutrans Split\ &Diff\ with\.\.\. Össze&hasonlítás\.\.\. -menutrans Split\ Patched\ &By\.\.\. Összehasonlítás\ &patch\ -el\.\.\. -menutrans Save\ &As\.\.\.:sav Menté&s\ másként\.\.\.:w -menutrans &Print Nyomt&atás -menutrans Sa&ve-Exit:wqa Mentés\ és\ k&ilépés:wqa -menutrans E&xit:qa &Kilépés:qa - -" Edit menu -menutrans &Edit S&zerkesztés -menutrans &Undou &Visszavonásu -menutrans &Redo^R Mé&gis^R -menutrans Rep&eat\. &Ismét\. -menutrans Cu&t"+x &Kivágás"+x -menutrans &Copy"+y &Másolás"+y -menutrans &Paste"+gP &Beillesztés"+gP -menutrans Put\ &Before[p Berakás\ e&lé[p -menutrans Put\ &After]p Berakás\ &mögé]p -menutrans &Deletex &Törlésx -menutrans &Select\ allggVG A&z\ összes kijelöléseggvG -menutrans &Find\.\.\. Ke&resés\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Keresés\ és\ c&sere\.\.\. -menutrans Find\ and\ Rep&lace:%s Keresés\ és\ c&sere:%s -menutrans Find\ and\ Rep&lace Keresés\ és\ c&sere -menutrans Find\ and\ Rep&lace:s Keresés\ és\ c&sere:s -menutrans Settings\ &Window &Ablak\ beállításai -menutrans &Global\ Settings Ál&talános\ beállítások -menutrans F&ile\ Settings &Fájl\ beállítások -menutrans C&olor\ Scheme &Színek -menutrans &Keymap Billent&yûzetkiosztás - -" Edit.Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Minta\ kiemelés\ BE/KI:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! &Kis/nagybetû\ azonos/különbözõ:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! &Zárójelpár\ mutatása\ BE/KI:set\ sm! -menutrans &Context\ lines &Kurzor\ ablak\ szélétõl -menutrans &Virtual\ Edit &Virtuális\ szerkesztés -menutrans Never &Soha -menutrans Block\ Selection &Blokk\ kijelölésekor -menutrans Insert\ mode S&zöveg\ bevitelekor -menutrans Block\ and\ Insert Bl&okk\ kijelölésekor\ és\ szöveg\ bevitelekor -menutrans Always &Mindig -menutrans Toggle\ Insert\ &Mode:set\ im! &Szövegbeviteli\ mód\ BE/KI:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! &Vi\ kompatíbilis\ mód\ BE/Ki:set\ cp! -menutrans Search\ &Path\.\.\. Ke&resési\ útvonal\.\.\. -menutrans Ta&g\ Files\.\.\. &Tag\ fájl\.\.\. -menutrans Toggle\ &Toolbar &Eszköztár\ BE/KI -menutrans Toggle\ &Bottom\ Scrollbar &Vízszintes\ Görgetõsáv\ BE/KI -menutrans Toggle\ &Left\ Scrollbar &Bal\ görgetõsáv\ BE/KI -menutrans Toggle\ &Right\ Scrollbar &Jobb\ görgetõsáv\ BE/KI -menutrans None Nincs - -" Edit.File Settings -menutrans Toggle\ Line\ &Numbering:set\ nu! Sorszá&mozás\ BE/KI:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! &Lista\ mód\ BE/KI:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Sor&törés\ BE/KI:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Sortörés\ s&zóvégeknél\ BE/KI:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! &Tab\ kifejtés\ BE/KI:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! &Automatikus\ behúzás\ BE/KI:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! &C-behúzás\ BE/KI:set\ cin! -menutrans &Shiftwidth &Behúzás\ mértéke\ ('sw') -menutrans Soft\ &Tabstop T&abulálás\ mértéke\ ('sts') -menutrans Te&xt\ Width\.\.\. &Szöveg\ szélessége\.\.\. -menutrans &File\ Format\.\.\. &Fájlformátum\.\.\. - -" Tools menu -menutrans &Tools &Eszközök -menutrans &Jump\ to\ this\ tagg^] &Ugrás\ a\ taghozg^] -menutrans Jump\ &back^T Ugrás\ &vissza^T -menutrans Build\ &Tags\ File &Tag\ fájl\ készítése -menutrans &Folding &Behajtások -menutrans &Make:make &Fordítás:make -menutrans &List\ Errors:cl &Hibák\ listája:cl -menutrans L&ist\ Messages:cl! Ü&zenetek\ listája:cl! -menutrans &Next\ Error:cn &Következõ\ &hiba:cn -menutrans &Previous\ Error:cp &Elõzõ\ hiba:cp -menutrans &Older\ List:cold &Régebbi\ lista:cold -menutrans N&ewer\ List:cnew &Újabb\ lista:cnew -menutrans Error\ &Window Hibaablak -menutrans &Update:cwin &Frissítés:cwin -menutrans &Open:copen M&egnyitás:copen -menutrans &Close:cclose Be&zárás:cclose -menutrans &Convert\ to\ HEX:%!xxd Normál->HEX\ nézet:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r HEX->Normál\ nézet:%!xxd\ -r -menutrans &Set\ Compiler Fordító\ &megadása - -" Tools.Folding -menutrans &Enable/Disable\ foldszi Behajtások\ BE&/KIzi -menutrans &View\ Cursor\ Linezv &Aktuális\ sor\ látszikzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Csak\ aktuális\ sor\ látszikzMzx -menutrans C&lose\ more\ foldszm Következõ\ szint\ be&zárásazm -menutrans &Close\ all\ foldszM Összes\ hajtás\ &bezárásazM -menutrans O&pen\ more\ foldszr Következõ\ szint\ ki&nyitásazr -menutrans &Open\ all\ foldszR Összes\ hajtás\ &kinyitásazR -menutrans Fold\ Met&hod Behajtások\ &létrehozása -menutrans M&anual &Kézi -menutrans I&ndent Be&húzás -menutrans E&xpression Ki&fejezés -menutrans S&yntax &Szintaxis -menutrans &Diff &Diff-különbség -menutrans Ma&rker &Jelölés -menutrans Create\ &Foldzf Ú&j\ behajtászf -menutrans &Delete\ Foldzd Behajtás\ &törlésezd -menutrans Delete\ &All\ FoldszD Öss&zes\ behajtás\ törlésezD -menutrans Fold\ col&umn\ width Behajtások\ a\ &margón\ x\ oszlopban - -" Tools.Diff -menutrans &Update &Frissítés -menutrans &Get\ Block Block\ &BE -menutrans &Put\ Block Block\ &KI - - - -" Names for buffer menu. -menutrans &Buffers &Pufferok -menutrans &Refresh\ menu &Frissítés -menutrans Delete &Törlés -menutrans &Alternate &Csere -menutrans &Next &Következõ -menutrans &Previous &Elõzõ - -" Window menu -menutrans &Window &Ablak -menutrans &New^Wn Ú&j^Wn -menutrans S&plit^Ws &Felosztás^Ws -menutrans Sp&lit\ To\ #^W^^ Felosztás\ &#-val^W^^ -menutrans Split\ &Vertically^Wv Felosztás\ Fü&ggõlegesen^Wv -menutrans Split\ File\ E&xplorer Új\ &intézõ -menutrans &Close^Wc Be&zárás^Wc -menutrans Close\ &Other(s)^Wo &Többi\ bezárása^Wo -menutrans Ne&xt^Ww &Következõ^Ww -menutrans P&revious^WW &Elõzõ^WW -menutrans &Equal\ Size^W= &Azonos\ magasság^W= -menutrans &Max\ Height^W_ Ma&x\ magasság^W_ -menutrans M&in\ Height^W1_ &Min\ magasság^W1_ -menutrans Max\ &Width^W\| Max\ &szélesség^W\| -menutrans Min\ Widt&h^W1\| Mi&n\ szélesség^W1\| -menutrans Move\ &To &Elmozdítás -menutrans &Top^WK &Fel^WK -menutrans &Bottom^WJ &Le^WJ -menutrans &Left\ side^WH &Balra^WH -menutrans &Right\ side^WL &Jobbra^WL -menutrans Rotate\ &Up^WR Gördítés\ &felfelé^WR -menutrans Rotate\ &Down^Wr Gördítés\ &lefelé^Wr -menutrans Select\ Fo&nt\.\.\. &Betûtípus\.\.\. - -" The popup menu -menutrans &Undo &Visszavonás -menutrans Cu&t &Kivágás -menutrans &Copy &Másolás -menutrans &Paste &Beillesztés -menutrans &Delete &Törlés -menutrans Select\ Blockwise Kijelölés\ blo&kként -menutrans Select\ &Word S&zó\ kijelölése -menutrans Select\ &Line &Sor\ kijelölése -menutrans Select\ &Block B&lokk\ kijelölése -menutrans Select\ &All A&z\ összes\ kijelölése - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Megnyitás - tmenu ToolBar.Save Mentés - tmenu ToolBar.SaveAll Mindet menti - tmenu ToolBar.Print Nyomtatás - tmenu ToolBar.Undo Visszavonás - tmenu ToolBar.Redo Mégis - tmenu ToolBar.Cut Kivágás - tmenu ToolBar.Copy Másolás - tmenu ToolBar.Paste Beillesztés - tmenu ToolBar.Find Keresés - tmenu ToolBar.FindNext Tovább keresés - tmenu ToolBar.FindPrev Keresés visszafelé - tmenu ToolBar.Replace Keresés/csere - tmenu ToolBar.LoadSesn Munkamenet beolvasás - tmenu ToolBar.SaveSesn Munkamenet mentés - tmenu ToolBar.RunScript Vim program indítás - tmenu ToolBar.Make Projekt építés - tmenu ToolBar.Shell Shell indítás - tmenu ToolBar.RunCtags Tag építés - tmenu ToolBar.TagJump Ugrás a kurzor alatti tagra - tmenu ToolBar.Help Vim súgó - tmenu ToolBar.FindHelp Keresés a Vim súgóban - endfun -endif - -" Syntax menu -menutrans &Syntax Sz&intaxis -menutrans &Show\ filetypes\ in\ menu Fájl&típusok\ menü -menutrans Set\ '&syntax'\ only Csak\ '&syntax' -menutrans Set\ '&filetype'\ too '&filetype'\ is -menutrans &Off &Ki -menutrans &Manual Ké&zi -menutrans A&utomatic A&utomatikus -menutrans on/off\ for\ &This\ file &BE/KI\ ennél\ a\ fájlnál -menutrans Co&lor\ test &Színteszt -menutrans &Highlight\ test Kiemelés\ &teszt -menutrans &Convert\ to\ HTML &HTML\ oldal\ készítése - -" dialog texts -let menutrans_no_file = "[Nincs file]" -let menutrans_help_dialog = "Írd be a kívánt szót vagy parancsot:\n\n A szövegbeviteli parancsok elé írj i_-t (pl.: i_CTRL-X)\nA sorszerkeszõ parancsok elé c_-t (pl.: c_)\nA változókat a ' jellel vedd körül (pl.: 'shiftwidth')" -let g:menutrans_path_dialog = "Írd be a keresett fájl lehetséges elérési útjait, vesszõvel elválasztva" -let g:menutrans_tags_dialog = "Írd be a tag fájl lehetséges elérési útjait, vesszõvel elválasztva" -let g:menutrans_textwidth_dialog = "Írd be a szöveg szélességét (0 = formázás kikapcsolva)" -let g:menutrans_fileformat_dialog = "Válaszd ki a fájl formátumát" diff --git a/share/vim/vim73/lang/menu_hu_hu.utf-8.vim b/share/vim/vim73/lang/menu_hu_hu.utf-8.vim deleted file mode 100644 index 83a4dca4..00000000 --- a/share/vim/vim73/lang/menu_hu_hu.utf-8.vim +++ /dev/null @@ -1,242 +0,0 @@ -" Menu Translations: Hungarian (Magyar) -" Original Translation: Zoltán Árpádffy -" Maintained By: Kontra Gergely -" Last Change: 2004 Jun 10 -" -" This file was converted from menu_hu_hu.iso_8859-2.vim. See there for -" remarks. - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding utf-8 - -" Help menu -menutrans &Help &Súgó -menutrans &Overview Á&ttekintés -menutrans &How-to\ links &HOGYAN\ linkek -menutrans &User\ Manual &Kézikönyv -menutrans &Credits &Szerzők,\ köszönetek -menutrans Co&pying &Védjegy -menutrans O&rphans Árvá&k -menutrans &Find\.\.\. Ke&resés\.\.\. -menutrans &Version &Verzió -menutrans &About &Névjegy -" File menu -menutrans &File &Fájl -menutrans &Open\.\.\.:e Meg&nyitás\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Megnyitás\ új\ a&blakba\.\.\.:sp -menutrans &New:enew Új\ dok&umentum:enew -menutrans &Close:close Be&zárás:close -menutrans &Save:w &Mentés:w -menutrans Split\ &Diff\ with\.\.\. Össze&hasonlítás\.\.\. -menutrans Split\ Patched\ &By\.\.\. Összehasonlítás\ &patch\ -el\.\.\. -menutrans Save\ &As\.\.\.:sav Menté&s\ másként\.\.\.:w -menutrans &Print Nyomt&atás -menutrans Sa&ve-Exit:wqa Mentés\ és\ k&ilépés:wqa -menutrans E&xit:qa &Kilépés:qa - -" Edit menu -menutrans &Edit S&zerkesztés -menutrans &Undou &Visszavonásu -menutrans &Redo^R Mé&gis^R -menutrans Rep&eat\. &Ismét\. -menutrans Cu&t"+x &Kivágás"+x -menutrans &Copy"+y &Másolás"+y -menutrans &Paste"+gP &Beillesztés"+gP -menutrans Put\ &Before[p Berakás\ e&lé[p -menutrans Put\ &After]p Berakás\ &mögé]p -menutrans &Deletex &Törlésx -menutrans &Select\ allggVG A&z\ összes kijelöléseggvG -menutrans &Find\.\.\. Ke&resés\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Keresés\ és\ c&sere\.\.\. -menutrans Find\ and\ Rep&lace:%s Keresés\ és\ c&sere:%s -menutrans Find\ and\ Rep&lace Keresés\ és\ c&sere -menutrans Find\ and\ Rep&lace:s Keresés\ és\ c&sere:s -menutrans Settings\ &Window &Ablak\ beállításai -menutrans &Global\ Settings Ál&talános\ beállítások -menutrans F&ile\ Settings &Fájl\ beállítások -menutrans C&olor\ Scheme &Színek -menutrans &Keymap Billent&yűzetkiosztás - -" Edit.Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Minta\ kiemelés\ BE/KI:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! &Kis/nagybetű\ azonos/különböző:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! &Zárójelpár\ mutatása\ BE/KI:set\ sm! -menutrans &Context\ lines &Kurzor\ ablak\ szélétől -menutrans &Virtual\ Edit &Virtuális\ szerkesztés -menutrans Never &Soha -menutrans Block\ Selection &Blokk\ kijelölésekor -menutrans Insert\ mode S&zöveg\ bevitelekor -menutrans Block\ and\ Insert Bl&okk\ kijelölésekor\ és\ szöveg\ bevitelekor -menutrans Always &Mindig -menutrans Toggle\ Insert\ &Mode:set\ im! &Szövegbeviteli\ mód\ BE/KI:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! &Vi\ kompatíbilis\ mód\ BE/Ki:set\ cp! -menutrans Search\ &Path\.\.\. Ke&resési\ útvonal\.\.\. -menutrans Ta&g\ Files\.\.\. &Tag\ fájl\.\.\. -menutrans Toggle\ &Toolbar &Eszköztár\ BE/KI -menutrans Toggle\ &Bottom\ Scrollbar &Vízszintes\ Görgetősáv\ BE/KI -menutrans Toggle\ &Left\ Scrollbar &Bal\ görgetősáv\ BE/KI -menutrans Toggle\ &Right\ Scrollbar &Jobb\ görgetősáv\ BE/KI -menutrans None Nincs - -" Edit.File Settings -menutrans Toggle\ Line\ &Numbering:set\ nu! Sorszá&mozás\ BE/KI:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! &Lista\ mód\ BE/KI:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Sor&törés\ BE/KI:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Sortörés\ s&zóvégeknél\ BE/KI:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! &Tab\ kifejtés\ BE/KI:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! &Automatikus\ behúzás\ BE/KI:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! &C-behúzás\ BE/KI:set\ cin! -menutrans &Shiftwidth &Behúzás\ mértéke\ ('sw') -menutrans Soft\ &Tabstop T&abulálás\ mértéke\ ('sts') -menutrans Te&xt\ Width\.\.\. &Szöveg\ szélessége\.\.\. -menutrans &File\ Format\.\.\. &Fájlformátum\.\.\. - -" Tools menu -menutrans &Tools &Eszközök -menutrans &Jump\ to\ this\ tagg^] &Ugrás\ a\ taghozg^] -menutrans Jump\ &back^T Ugrás\ &vissza^T -menutrans Build\ &Tags\ File &Tag\ fájl\ készítése -menutrans &Folding &Behajtások -menutrans &Make:make &Fordítás:make -menutrans &List\ Errors:cl &Hibák\ listája:cl -menutrans L&ist\ Messages:cl! Ü&zenetek\ listája:cl! -menutrans &Next\ Error:cn &Következő\ &hiba:cn -menutrans &Previous\ Error:cp &Előző\ hiba:cp -menutrans &Older\ List:cold &Régebbi\ lista:cold -menutrans N&ewer\ List:cnew &Újabb\ lista:cnew -menutrans Error\ &Window Hibaablak -menutrans &Update:cwin &Frissítés:cwin -menutrans &Open:copen M&egnyitás:copen -menutrans &Close:cclose Be&zárás:cclose -menutrans &Convert\ to\ HEX:%!xxd Normál->HEX\ nézet:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r HEX->Normál\ nézet:%!xxd\ -r -menutrans &Set\ Compiler Fordító\ &megadása - -" Tools.Folding -menutrans &Enable/Disable\ foldszi Behajtások\ BE&/KIzi -menutrans &View\ Cursor\ Linezv &Aktuális\ sor\ látszikzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Csak\ aktuális\ sor\ látszikzMzx -menutrans C&lose\ more\ foldszm Következő\ szint\ be&zárásazm -menutrans &Close\ all\ foldszM Összes\ hajtás\ &bezárásazM -menutrans O&pen\ more\ foldszr Következő\ szint\ ki&nyitásazr -menutrans &Open\ all\ foldszR Összes\ hajtás\ &kinyitásazR -menutrans Fold\ Met&hod Behajtások\ &létrehozása -menutrans M&anual &Kézi -menutrans I&ndent Be&húzás -menutrans E&xpression Ki&fejezés -menutrans S&yntax &Szintaxis -menutrans &Diff &Diff-különbség -menutrans Ma&rker &Jelölés -menutrans Create\ &Foldzf Ú&j\ behajtászf -menutrans &Delete\ Foldzd Behajtás\ &törlésezd -menutrans Delete\ &All\ FoldszD Öss&zes\ behajtás\ törlésezD -menutrans Fold\ col&umn\ width Behajtások\ a\ &margón\ x\ oszlopban - -" Tools.Diff -menutrans &Update &Frissítés -menutrans &Get\ Block Block\ &BE -menutrans &Put\ Block Block\ &KI - - - -" Names for buffer menu. -menutrans &Buffers &Pufferok -menutrans &Refresh\ menu &Frissítés -menutrans Delete &Törlés -menutrans &Alternate &Csere -menutrans &Next &Következő -menutrans &Previous &Előző - -" Window menu -menutrans &Window &Ablak -menutrans &New^Wn Ú&j^Wn -menutrans S&plit^Ws &Felosztás^Ws -menutrans Sp&lit\ To\ #^W^^ Felosztás\ &#-val^W^^ -menutrans Split\ &Vertically^Wv Felosztás\ Fü&ggőlegesen^Wv -menutrans Split\ File\ E&xplorer Új\ &intéző -menutrans &Close^Wc Be&zárás^Wc -menutrans Close\ &Other(s)^Wo &Többi\ bezárása^Wo -menutrans Ne&xt^Ww &Következő^Ww -menutrans P&revious^WW &Előző^WW -menutrans &Equal\ Size^W= &Azonos\ magasság^W= -menutrans &Max\ Height^W_ Ma&x\ magasság^W_ -menutrans M&in\ Height^W1_ &Min\ magasság^W1_ -menutrans Max\ &Width^W\| Max\ &szélesség^W\| -menutrans Min\ Widt&h^W1\| Mi&n\ szélesség^W1\| -menutrans Move\ &To &Elmozdítás -menutrans &Top^WK &Fel^WK -menutrans &Bottom^WJ &Le^WJ -menutrans &Left\ side^WH &Balra^WH -menutrans &Right\ side^WL &Jobbra^WL -menutrans Rotate\ &Up^WR Gördítés\ &felfelé^WR -menutrans Rotate\ &Down^Wr Gördítés\ &lefelé^Wr -menutrans Select\ Fo&nt\.\.\. &Betűtípus\.\.\. - -" The popup menu -menutrans &Undo &Visszavonás -menutrans Cu&t &Kivágás -menutrans &Copy &Másolás -menutrans &Paste &Beillesztés -menutrans &Delete &Törlés -menutrans Select\ Blockwise Kijelölés\ blo&kként -menutrans Select\ &Word S&zó\ kijelölése -menutrans Select\ &Line &Sor\ kijelölése -menutrans Select\ &Block B&lokk\ kijelölése -menutrans Select\ &All A&z\ összes\ kijelölése - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Megnyitás - tmenu ToolBar.Save Mentés - tmenu ToolBar.SaveAll Mindet menti - tmenu ToolBar.Print Nyomtatás - tmenu ToolBar.Undo Visszavonás - tmenu ToolBar.Redo Mégis - tmenu ToolBar.Cut Kivágás - tmenu ToolBar.Copy Másolás - tmenu ToolBar.Paste Beillesztés - tmenu ToolBar.Find Keresés - tmenu ToolBar.FindNext Tovább keresés - tmenu ToolBar.FindPrev Keresés visszafelé - tmenu ToolBar.Replace Keresés/csere - tmenu ToolBar.LoadSesn Munkamenet beolvasás - tmenu ToolBar.SaveSesn Munkamenet mentés - tmenu ToolBar.RunScript Vim program indítás - tmenu ToolBar.Make Projekt építés - tmenu ToolBar.Shell Shell indítás - tmenu ToolBar.RunCtags Tag építés - tmenu ToolBar.TagJump Ugrás a kurzor alatti tagra - tmenu ToolBar.Help Vim súgó - tmenu ToolBar.FindHelp Keresés a Vim súgóban - endfun -endif - -" Syntax menu -menutrans &Syntax Sz&intaxis -menutrans &Show\ filetypes\ in\ menu Fájl&típusok\ menü -menutrans Set\ '&syntax'\ only Csak\ '&syntax' -menutrans Set\ '&filetype'\ too '&filetype'\ is -menutrans &Off &Ki -menutrans &Manual Ké&zi -menutrans A&utomatic A&utomatikus -menutrans on/off\ for\ &This\ file &BE/KI\ ennél\ a\ fájlnál -menutrans Co&lor\ test &Színteszt -menutrans &Highlight\ test Kiemelés\ &teszt -menutrans &Convert\ to\ HTML &HTML\ oldal\ készítése - -" dialog texts -let menutrans_no_file = "[Nincs file]" -let menutrans_help_dialog = "Írd be a kívánt szót vagy parancsot:\n\n A szövegbeviteli parancsok elé írj i_-t (pl.: i_CTRL-X)\nA sorszerkesző parancsok elé c_-t (pl.: c_)\nA változókat a ' jellel vedd körül (pl.: 'shiftwidth')" -let g:menutrans_path_dialog = "Írd be a keresett fájl lehetséges elérési útjait, vesszővel elválasztva" -let g:menutrans_tags_dialog = "Írd be a tag fájl lehetséges elérési útjait, vesszővel elválasztva" -let g:menutrans_textwidth_dialog = "Írd be a szöveg szélességét (0 = formázás kikapcsolva)" -let g:menutrans_fileformat_dialog = "Válaszd ki a fájl formátumát" diff --git a/share/vim/vim73/lang/menu_it_it.latin1.vim b/share/vim/vim73/lang/menu_it_it.latin1.vim deleted file mode 100644 index 5a87bf00..00000000 --- a/share/vim/vim73/lang/menu_it_it.latin1.vim +++ /dev/null @@ -1,351 +0,0 @@ -" Menu Translations: Italian / Italiano -" Maintainer: Antonio Colombo -" Vlad Sandrini -" Luciano Montanaro -" Last Change: 2010 Ago 13 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding iso-8859-1 - -" Help / Aiuto -menut &Help &Aiuto -menut &Overview &Panoramica -menut &User\ Manual Manuale\ &Utente -menut &How-to\ links Co&Me\.\.\. -"menut &GUI &GUI -menut &Credits Cr&Editi -menut Co&pying C&Opie -menut &Sponsor/Register &Sponsor/registrazione -menut O&rphans O&Rfani -"menut &Find\.\.\. &Cerca\.\.\. -"NOTA: fa conflitto con 'cerca' nel menu 'modifica' -menut &Version &Versione -menut &About &Intro - -let g:menutrans_help_dialog = "Batti un comando o una parola per cercare aiuto:\n\nPremetti i_ per comandi in modo Input (ad.es.: i_CTRL-X)\nPremetti c_ per comandi che editano la linea-comandi (ad.es.: c_)\nPremetti ' per un nome di opzione (ad.es.: 'shiftwidth')" - -" File menu -"menut &File &File -" -menut &Open\.\.\.:e &Apri\.\.\.:e -menut Sp&lit-Open\.\.\.:sp A&Pri\ nuova\ finestra\.\.\.:sp -menut Open\ Tab\.\.\.:tabnew Apri\ nuova\ &Linguetta\.\.\.:tabnew -menut &New:enew &Nuovo:enew -menut &Close:close &Chiudi:close -menut &Save:w &Salva:w -menut Save\ &As\.\.\.:sav Salva\ &Con\ nome\.\.\.:sav - -if has("diff") - menut Split\ &Diff\ with\.\.\. Finestra\ &Differenza\ con\.\.\. - menut Split\ Patched\ &By\.\.\. Finestra\ patc&H\ da\.\.\. -endif - -menut &Print S&tampa -menut Sa&ve-Exit:wqa Sa&Lva\ ed\ esci:wqa -menut E&xit:qa &Esci:qa - -" Edit / Modifica - -menut &Edit &Modifica -menut &Undou &Annullau -menut &Redo^R &Ripristina^R -menut Rep&eat\. Ri&Peti\. -menut Cu&t"+x &Taglia"+x -menut &Copy"+y &Copia"+y -menut &Paste"+gP &Incolla"+gP -menut Put\ &Before[p &Metti\ davanti[p -menut Put\ &After]p M&Etti\ dietro]p -menut &Deletex Cance&Llax -menut &Select\ allggVG Seleziona\ &TuttoggVG -menut &Select\ AllggVG Seleziona\ &TuttoggVG -menut &Find\.\.\. &Cerca\.\.\. -menut Find\ and\ Rep&lace\.\.\. &Sostituisci\.\.\. -menut Settings\ &Window &Finestra\ impostazioni -menut Startup\ &Settings Impostazioni\ di\ &Avvio -menut &Global\ Settings Impostazioni\ &Globali -menut Question Domanda - -" Edit / Modifica Impostazioni Globali -menut &Global\ Settings Impostazioni\ &Globali -menut Toggle\ Pattern\ &Highlight:set\ hls! &Evidenzia\ ricerche\ Sì/No:set\ hls! -menut Toggle\ &Ignore-case:set\ ic! &Ignora\ maiusc\.-minusc\.\ Sì/No:set\ ic! -menut Toggle\ &Showmatch:set\ sm! Indica\ &Corrispondente\ Sì/No:set\ sm! - -menut &Context\ lines &Linee\ di\ contesto -menut &Virtual\ Edit &Edit\ virtuale - -menut Never Mai -menut Block\ Selection Selezione\ blocco -menut Insert\ mode Modo\ insert -menut Block\ and\ Insert Selezione\ blocco+inserimento -menut Always Sempre - -menut Toggle\ Insert\ &Mode:set\ im! &Modo\ insert\ Sì/No:set\ im! -menut Toggle\ Vi\ C&ompatible:set\ cp! C&Ompatibile\ VI\ Sì/No:set\ cp! -menut Search\ &Path\.\.\. &Percorso\ di\ ricerca\.\.\. -menut Ta&g\ Files\.\.\. File\ ta&G\.\.\. -" -" Opzioni GUI -menut Toggle\ &Toolbar Barra\ s&Trumenti\ Sì/No -menut Toggle\ &Bottom\ Scrollbar Barra\ scorrimento\ in\ &Fondo\ Sì/No -menut Toggle\ &Left\ Scrollbar Barra\ scorrimento\ a\ &Sinistra\ Sì/No -menut Toggle\ &Right\ Scrollbar Barra\ scorrimento\ a\ &Destra\ Sì/No - -let g:menutrans_path_dialog = "Batti percorso di ricerca per i file.\nSepara fra loro i nomi di directory con una virgola." -let g:menutrans_tags_dialog = "Batti nome dei file di tag.\nSepara fra loro i nomi di directory con una virgola." - -" Edit / Impostazioni File -menut F&ile\ Settings &Impostazioni\ file - -" Boolean options -menut Toggle\ Line\ &Numbering:set\ nu! &Numerazione\ \ Sì/No:set\ nu! -menut Toggle\ relati&ve\ Line\ Numbering:set\ rnu! Numerazione\ relati&Va\ Sì/No:set\ rnu! -menut Toggle\ &List\ Mode:set\ list! Modo\ &List\ Sì/No:set\ list! -menut Toggle\ Line\ &Wrap:set\ wrap! Linee\ &Continuate\ Sì/No:set\ wrap! -menut Toggle\ W&rap\ at\ word:set\ lbr! A\ capo\ alla\ &Parola\ Sì/No:set\ lbr! -menut Toggle\ &expand-tab:set\ et! &Espandi\ tabulazione\ Sì/No:set\ et! -menut Toggle\ &auto-indent:set\ ai! Indentazione\ &Automatica\ Sì/No:set ai! -menut Toggle\ &C-indenting:set\ cin! Indentazione\ stile\ &C\ Sì/No:set cin! - -" altre opzioni -menut &Shiftwidth &Spazi\ rientranza -menut Soft\ &Tabstop &Tabulazione\ software -menut Te&xt\ Width\.\.\. Lunghe&Zza\ riga\.\.\. -menut &File\ Format\.\.\. Formato\ &File\.\.\. - -let g:menutrans_textwidth_dialog = "Batti nuova lunghezza linea (0 per inibire la formattazione): " - -let g:menutrans_fileformat_dialog = "Scegli formato con cui scrivere il file" - -menut C&olor\ Scheme Schema\ c&Olori - -menut default normale -menut DEFAULT NORMALE -menut evening notturno -menut EVENING NOTTURNO -menut morning diurno -menut MORNING DIURNO -menut shine brillante -menut SHINE BRILLANTE -menut peachpuff pesca -menut PEACHPUF PESCA - -menut &Keymap &Mappa\ tastiera - -menut None nessuna -menut accents accenti -menut ACCENTS ACCENTI -menut hebrew ebraico -menut HEBREW EBRAICO -menut hebrew_iso-8859-8 ebraico_iso-8859-8 -menut hebrew_cp1255 ebraico_cp1255 -menut hebrew_utf-8 ebraico_utf-8 -menut hebrewp_iso-8859-8 ebraico_p_iso-8859-8 -menut HEBREW- EBRAICO+ -menut hebrewp EBRAICOP -menut HEBREWP EBRAICOP -menut russian-jcuken cirillico-jcuken -menut russian-jcukenwin cirillico-jcuken-win -menut RUSSIAN CIRILLICO -menut RUSSIAN- CIRILLICO- - -menut Select\ Fo&nt\.\.\. Scegli\ &Font\.\.\. - -" Menu strumenti programmazione -menut &Tools &Strumenti - -menut &Jump\ to\ this\ tagg^] &Vai\ a\ questa\ tagg^] -menut Jump\ &back^T Torna\ &Indietro^T -menut Build\ &Tags\ File Costruisci\ file\ &Tags\ - -" Menu ortografia / Spelling -menut &Spelling &Ortografia - -menut &Spell\ Check\ On Attiva\ &Controllo\ ortografico -menut Spell\ Check\ &Off &Disattiva\ controllo\ ortografico -menut To\ &Next\ error]s Errore\ &Seguente]s -menut To\ &Previous\ error[s Errore\ &Precedente[s -menut Suggest\ &Correctionsz= &Suggerimentiz= -menut &Repeat\ correction:spellrepall &Ripeti\ correzione:spellrepall -menut Set\ language\ to\ "en" Imposta\ lingua\ a\ "en" -menut Set\ language\ to\ "en_au" Imposta\ lingua\ a\ "en_au" -menut Set\ language\ to\ "en_ca" Imposta\ lingua\ a\ "en_ca" -menut Set\ language\ to\ "en_gb" Imposta\ lingua\ a\ "en_gb" -menut Set\ language\ to\ "en_nz" Imposta\ lingua\ a\ "en_nz" -menut Set\ language\ to\ "en_us" Imposta\ lingua\ a\ "en_us" -menut Set\ language\ to\ "it" Imposta\ lingua\ a\ "it" -menut Set\ language\ to\ "it_it" Imposta\ lingua\ a\ "it_it" -menut Set\ language\ to\ "it_ch" Imposta\ lingua\ a\ "it_ch" -menut &Find\ More\ Languages &Trova\ altre\ lingue - -" Menu piegature / Fold -if has("folding") - menut &Folding &Piegature - " apri e chiudi piegature - menut &Enable/Disable\ foldszi Pi&egature\ Sì/Nozi - menut &View\ Cursor\ Linezv &Vedi\ linea\ col\ Cursorezv - menut Vie&w\ Cursor\ Line\ onlyzMzx Vedi\ &Solo\ linea\ col\ CursorezMzx - menut C&lose\ more\ foldszm C&Hiudi\ più\ piegaturezm - menut &Close\ all\ foldszM &Chiudi\ tutte\ le\ piegaturezM - menut O&pen\ more\ foldszr A&Pri\ più\ piegaturezr - menut &Open\ all\ foldszR &Apri\ tutte\ le\ piegaturezR - " metodo piegatura - menut Fold\ Met&hod Meto&Do\ piegatura - menut M&anual &Manuale - menut I&ndent &Nidificazione - menut E&xpression &Espressione\ Reg\. - menut S&yntax &Sintassi - menut &Diff &Differenza - menut Ma&rker Mar&Catura - " crea e cancella piegature - menut Create\ &Foldzf Crea\ &Piegaturazf - menut &Delete\ Foldzd &Leva\ piegaturazd - menut Delete\ &All\ FoldszD Leva\ &Tutte\ le\ piegaturezD - " movimenti all'interno delle piegature - menut Fold\ col&umn\ width Larghezza\ piegat&Ure\ in\ colonne -endif " has folding - -if has("diff") - menut &Diff &Differenza - " - menut &Update &Aggiorna - menut &Get\ Block &Importa\ differenze - menut &Put\ Block &Esporta\ differenze -endif " has diff - -menut &Make:make Esegui\ &Make:make - -menut &List\ Errors:cl Lista\ &Errori:cl -menut L&ist\ Messages:cl! Lista\ &Messaggi:cl! -menut &Next\ Error:cn Errore\ s&Uccessivo:cn -menut &Previous\ Error:cp Errore\ &Precedente:cp -menut &Older\ List:cold Lista\ men&O\ recente:cold -menut N&ewer\ List:cnew Lista\ più\ rece&Nte:cnew - -menut Error\ &Window &Finestra\ errori - -menut &Update:cwin A&Ggiorna:cwin -menut &Open:copen &Apri:copen -menut &Close:cclose &Chiudi:cclose - -menut &Convert\ to\ HEX:%!xxd &Converti\ a\ esadecimale:%!xxd -menut Conve&rt\ back:%!xxd\ -r Conve&rti\ da\ esadecimale:%!xxd\ -r - -menut Se&T\ Compiler Impo&Sta\ Compilatore - -" Buffers / Buffer -menut &Buffers &Buffer - -menut &Refresh\ menu A&ggiorna\ menu -menut &Delete &Elimina -menut &Alternate &Alternato -menut &Next &Successivo -menut &Previous &Precedente -menut [No\ File] [Nessun\ File] -" Syntax / Sintassi -menut &Syntax &Sintassi -menut &Show\ filetypes\ in\ menu Mo&Stra\ tipi\ di\ file\ nel\ menu -menut Set\ '&syntax'\ only &S\ Attiva\ solo\ \ 'syntax' -menut Set\ '&filetype'\ too &F\ Attiva\ anche\ 'filetype' -menut &Off &Disattiva -menut &Manual &Manuale -menut A&utomatic A&Utomatico -menut on/off\ for\ &This\ file Attiva\ Sì/No\ su\ ques&To\ file -menut Co&lor\ test Test\ &Colori -menut &Highlight\ test Test\ &Evidenziamento -menut &Convert\ to\ HTML Converti\ ad\ &HTML - -let g:menutrans_no_file = "[Senza nome]" - -" Window / Finestra -menut &Window &Finestra - -menut &New^Wn &Nuova^Wn -menut S&plit^Ws &Dividi\ lo\ schermo^Ws -menut Sp&lit\ To\ #^W^^ D&Ividi\ verso\ #^W^^ -menut Split\ &Vertically^Wv Di&Vidi\ verticalmente^Wv -menut Split\ File\ E&xplorer Aggiungi\ finestra\ e&Xplorer - -menut &Close^Wc &Chiudi^Wc -menut Close\ &Other(s)^Wo C&Hiudi\ altra(e)^Wo - -menut Move\ &To &Muovi\ verso - -menut &Top^WK &Cima^WK -menut &Bottom^WJ &Fondo^WJ -menut &Left\ side^WH Lato\ &Sinistro^WH -menut &Right\ side^WL Lato\ &Destro^WL -menut Rotate\ &Up^WR Ruota\ verso\ l'&Alto^WR -menut Rotate\ &Down^Wr Ruota\ verso\ il\ &Basso^Wr - -menut &Equal\ Size^W= &Uguale\ ampiezza^W= -menut &Max\ Height^W_ &Altezza\ massima^W_ -menut M&in\ Height^W1_ A&Ltezza\ minima^W1_ -menut Max\ &Width^W\| Larghezza\ massima^W\| -menut Min\ Widt&h^W1\| Larghezza\ minima^W1\| - -" The popup menu -menut &Undo &Annulla -menut Cu&t &Taglia -menut &Copy &Copia -menut &Paste &Incolla -menut &Delete &Elimina - -menut Select\ Blockwise Seleziona\ in\ blocco -menut Select\ &Word Seleziona\ &Parola -menut Select\ &Line Seleziona\ &Linea -menut Select\ &Block Seleziona\ &Blocco -menut Select\ &All Seleziona\ t&Utto - -" The GUI Toolbar / Barra Strumenti -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Apri - tmenu ToolBar.Save Salva - tmenu ToolBar.SaveAll Salva Tutto - tmenu ToolBar.Print Stampa - tmenu ToolBar.Undo Annulla - tmenu ToolBar.Redo Ripristina - tmenu ToolBar.Cut Taglia - tmenu ToolBar.Copy Copia - tmenu ToolBar.Paste Incolla - - if !has("gui_athena") - tmenu ToolBar.Find Cerca - tmenu ToolBar.FindNext Cerca Successivo - tmenu ToolBar.FindPrev Cerca Precedente - tmenu ToolBar.Replace Sostituisci - endif - -if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nuova finestra - tmenu ToolBar.WinSplit Dividi finestra - tmenu ToolBar.WinMax Massima ampiezza - tmenu ToolBar.WinMin Minima ampiezza - tmenu ToolBar.WinVSplit Dividi verticalmente - tmenu ToolBar.WinMaxWidth Massima larghezza - tmenu ToolBar.WinMinWidth Minima larghezza - tmenu ToolBar.WinClose Chiudi finestra -endif - - tmenu ToolBar.LoadSesn Carica Sessione - tmenu ToolBar.SaveSesn Salva Sessione - tmenu ToolBar.RunScript Esegui Script - tmenu ToolBar.Make Make - tmenu ToolBar.Shell Shell - tmenu ToolBar.RunCtags Esegui Ctags - tmenu ToolBar.TagJump Vai a Tag - tmenu ToolBar.Help Aiuto - tmenu ToolBar.FindHelp Cerca in Aiuto - endfun -endif - -" vim: set sw=2 : diff --git a/share/vim/vim73/lang/menu_ja.cp932.vim b/share/vim/vim73/lang/menu_ja.cp932.vim deleted file mode 100644 index c761b081..00000000 --- a/share/vim/vim73/lang/menu_ja.cp932.vim +++ /dev/null @@ -1,5 +0,0 @@ -" Menu Translations: Japanese (for Windows) -" Translated By: MURAOKA Taro -" Last Change: 29-Apr-2004. - -source :p:h/menu_japanese_japan.932.vim diff --git a/share/vim/vim73/lang/menu_ja.euc-jp.vim b/share/vim/vim73/lang/menu_ja.euc-jp.vim deleted file mode 100644 index 0861315e..00000000 --- a/share/vim/vim73/lang/menu_ja.euc-jp.vim +++ /dev/null @@ -1,6 +0,0 @@ -" Menu Translations: Japanese (for UNIX) -" Translated By: Muraoka Taro -" Last Change: 08:50:47 25-Mar-2001. - -" eucjp is the same as euc-jp. Source the other one from here. -source :p:h/menu_ja_jp.euc-jp.vim diff --git a/share/vim/vim73/lang/menu_ja.eucjp.vim b/share/vim/vim73/lang/menu_ja.eucjp.vim deleted file mode 100644 index 0861315e..00000000 --- a/share/vim/vim73/lang/menu_ja.eucjp.vim +++ /dev/null @@ -1,6 +0,0 @@ -" Menu Translations: Japanese (for UNIX) -" Translated By: Muraoka Taro -" Last Change: 08:50:47 25-Mar-2001. - -" eucjp is the same as euc-jp. Source the other one from here. -source :p:h/menu_ja_jp.euc-jp.vim diff --git a/share/vim/vim73/lang/menu_ja.ujis.vim b/share/vim/vim73/lang/menu_ja.ujis.vim deleted file mode 100644 index 49248fc7..00000000 --- a/share/vim/vim73/lang/menu_ja.ujis.vim +++ /dev/null @@ -1,6 +0,0 @@ -" Menu Translations: Japanese (for UNIX) -" Translated By: Muraoka Taro -" Last Change: 08:50:47 25-Mar-2001. - -" ujis is the same as euc-jp. Source the other one from here. -source :p:h/menu_ja_jp.euc-jp.vim diff --git a/share/vim/vim73/lang/menu_ja_jp.cp932.vim b/share/vim/vim73/lang/menu_ja_jp.cp932.vim deleted file mode 100644 index c761b081..00000000 --- a/share/vim/vim73/lang/menu_ja_jp.cp932.vim +++ /dev/null @@ -1,5 +0,0 @@ -" Menu Translations: Japanese (for Windows) -" Translated By: MURAOKA Taro -" Last Change: 29-Apr-2004. - -source :p:h/menu_japanese_japan.932.vim diff --git a/share/vim/vim73/lang/menu_ja_jp.euc-jp.vim b/share/vim/vim73/lang/menu_ja_jp.euc-jp.vim deleted file mode 100644 index f2318579..00000000 --- a/share/vim/vim73/lang/menu_ja_jp.euc-jp.vim +++ /dev/null @@ -1,338 +0,0 @@ -" vi:set ts=8 sts=8 sw=8 tw=0: -" -" Menu Translations: Japanese (EUC-JP) -" Translated By: MURAOKA Taro -" Last Change: 18-Apr-2006. - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding euc-jp - -" Help menu -menutrans &Help ¥Ø¥ë¥×(&H) -menutrans &Overview ³µÎ¬(&O) -menutrans &User\ Manual ¥æ¡¼¥¶¥Þ¥Ë¥å¥¢¥ë(&U) -menutrans &How-to\ links &How-to¥ê¥ó¥¯ -menutrans &Credits ¥¯¥ì¥¸¥Ã¥È(&C) -menutrans Co&pying Ãøºî¸¢¾ðÊó(&P) -menutrans &Sponsor/Register ¥¹¥Ý¥ó¥µ¡¼/ÅÐÏ¿(&S) -menutrans O&rphans ¸É»ù(&R) -menutrans &Version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó(&V) -menutrans &About Vim¤Ë¤Ä¤¤¤Æ(&A) - -let g:menutrans_help_dialog = "¥Ø¥ë¥×¤ò¸¡º÷¤·¤¿¤¤¥³¥Þ¥ó¥É¤â¤·¤¯¤Ïñ¸ì¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:\n\nÁÞÆþ¥â¡¼¥É¤Î¥³¥Þ¥ó¥É¤Ë¤Ï i_ ¤òÀèƬ¤ËÉղä·¤Þ¤¹. (Îã: i_CTRL-X)\n¥³¥Þ¥ó¥É¥é¥¤¥óÊÔ½¸¥³¥Þ¥ó¥É¤Ë¤Ï c_ ¤òÀèƬ¤ËÉղä·¤Þ¤¹. (Îã: c_)\n¥ª¥×¥·¥ç¥ó¤Î̾Á°¤Ë¤Ï ' ¤òÉղä·¤Þ¤¹. (Îã: 'shiftwidth')" - -" File menu -menutrans &File ¥Õ¥¡¥¤¥ë(&F) -menutrans &Open\.\.\.:e ³«¤¯(&O)\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp ʬ³ä¤·¤Æ³«¤¯(&L)\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew ¥¿¥Ö¥Ú¡¼¥¸¤Ç³«¤¯:tabnew -menutrans &New:enew ¿·µ¬ºîÀ®(&N):enew -menutrans &Close:close ÊĤ¸¤ë(&C):close -menutrans &Save:w Êݸ(&S):w -menutrans Save\ &As\.\.\.:sav ̾Á°¤òÉÕ¤±¤ÆÊݸ(&A)\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. º¹Ê¬É½¼¨(&D)\.\.\. -menutrans Split\ Patched\ &By\.\.\. ¥Ñ¥Ã¥Á·ë²Ì¤òɽ¼¨(&B)\.\.\. -menutrans &Print °õºþ(&P) -menutrans Sa&ve-Exit:wqa Êݸ¤·¤Æ½ªÎ»(&V):wqa -menutrans E&xit:qa ½ªÎ»(&X):qa - -" Edit menu -menutrans &Edit ÊÔ½¸(&E) -menutrans &Undou ¼è¤ê¾Ã¤¹(&U)u -menutrans &Redo^R ¤â¤¦°ìÅÙ¤ä¤ë(&R)^R -menutrans Rep&eat\. ·«¤êÊÖ¤¹(&E)\. -menutrans Cu&t"+x ÀÚ¤ê¼è¤ê(&T)"+x -menutrans &Copy"+y ¥³¥Ô¡¼(&C)"+y -menutrans &Paste"+gP Ž¤êÉÕ¤±(&P)"+gP -menutrans Put\ &Before[p Á°¤ËŽ¤ë(&B)[p -menutrans Put\ &After]p ¸å¤ËŽ¤ë(&A)]p -menutrans &Deletex ¾Ã¤¹(&D)x -menutrans &Select\ AllggVG Á´¤ÆÁªÂò(&S)ggVG -menutrans &Find\.\.\. ¸¡º÷(&F)\.\.\. -menutrans &Find/ ¸¡º÷(&F)/ -menutrans Find\ and\ Rep&lace\.\.\. ÃÖ´¹(&L)\.\.\. -menutrans Find\ and\ Rep&lace:%s ÃÖ´¹(&L):%s -menutrans Find\ and\ Rep&lace:s ÃÖ´¹(&L):s -"menutrans Options\.\.\. ¥ª¥×¥·¥ç¥ó(&O)\.\.\. -menutrans Settings\ &Window ÀßÄꥦ¥£¥ó¥É¥¦(&W) -menutrans Startup\ &Settings µ¯Æ°»þ¤ÎÀßÄê(&S) - -" Edit/Global Settings -menutrans &Global\ Settings Á´ÂÎÀßÄê(&G) -menutrans Toggle\ Pattern\ &Highlight:set\ hls! - \ ¥Ñ¥¿¡¼¥ó¶¯Ä´ÀÚÂØ(&H):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! - \ Â羮ʸ»ú¶èÊÌÀÚÂØ(&I):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! - \ ¥Þ¥Ã¥Áɽ¼¨ÀÚÂØ(&S):set\ sm! -menutrans &Context\ lines ¥«¡¼¥½¥ë¼þÊÕ¹Ô¿ô(&C) -menutrans &Virtual\ Edit ²¾ÁÛÊÔ½¸(&V) -menutrans Never ̵¸ú -menutrans Block\ Selection ¥Ö¥í¥Ã¥¯ÁªÂò»þ -menutrans Insert\ mode ÁÞÆþ¥â¡¼¥É»þ -menutrans Block\ and\ Insert ¥Ö¥í¥Ã¥¯/ÁÞÆþ¥â¡¼¥É»þ -menutrans Always ¾ï»þ -menutrans Toggle\ Insert\ &Mode:set\ im! - \ ÁÞÆþ(½é¿´¼Ô)¥â¡¼¥ÉÀÚÂØ(&M):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! - \ Vi¸ß´¹¥â¡¼¥ÉÀÚÂØ(&O):set\ cp! -menutrans Search\ &Path\.\.\. ¸¡º÷¥Ñ¥¹(&P)\.\.\. -menutrans Ta&g\ Files\.\.\. ¥¿¥°¥Õ¥¡¥¤¥ë(&G)\.\.\. -" -" GUI options -menutrans Toggle\ &Toolbar ¥Ä¡¼¥ë¥Ð¡¼É½¼¨ÀÚÂØ(&T) -menutrans Toggle\ &Bottom\ Scrollbar ¥¹¥¯¥í¡¼¥ë¥Ð¡¼(²¼)ɽ¼¨ÀÚÂØ(&B) -menutrans Toggle\ &Left\ Scrollbar ¥¹¥¯¥í¡¼¥ë¥Ð¡¼(º¸)ɽ¼¨ÀÚÂØ(&L) -menutrans Toggle\ &Right\ Scrollbar ¥¹¥¯¥í¡¼¥ë¥Ð¡¼(±¦)ɽ¼¨ÀÚÂØ(&R) - -let g:menutrans_path_dialog = "¥Õ¥¡¥¤¥ë¤Î¸¡º÷¥Ñ¥¹¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:\n¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï¥«¥ó¥Þ ( , ) ¤Ç¶èÀڤäƤ¯¤À¤µ¤¤." -let g:menutrans_tags_dialog = "¥¿¥°¥Õ¥¡¥¤¥ë¤Î̾Á°¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:\n̾Á°¤Ï¥«¥ó¥Þ ( , ) ¤Ç¶èÀڤäƤ¯¤À¤µ¤¤." - -" Edit/File Settings - -" Boolean options -menutrans F&ile\ Settings ¥Õ¥¡¥¤¥ëÀßÄê(&I) -menutrans Toggle\ Line\ &Numbering:set\ nu! - \ ¹ÔÈÖ¹æɽ¼¨ÀÚÂØ(&N):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! - \ ¥ê¥¹¥È¥â¡¼¥ÉÀÚÂØ(&L):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! - \ ¹ÔÀÞÊÖ¤·ÀÚÂØ(&W):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! - \ ñ¸ìÀÞÊÖ¤·ÀÚÂØ(&R):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! - \ ¥¿¥ÖŸ³«ÀÚÂØ(&E):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! - \ ¼«Æ°»ú²¼¤²ÀÚÂØ(&A):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! - \ C¸À¸ì»ú²¼¤²ÀÚÂØ(&C):set\ cin! - -" other options -menutrans &Shiftwidth ¥·¥Õ¥ÈÉý(&S) -menutrans Soft\ &Tabstop ¥½¥Õ¥È¥¦¥§¥¢¥¿¥ÖÉý(&T) -menutrans Te&xt\ Width\.\.\. ¥Æ¥­¥¹¥ÈÉý(&X)\.\.\. -menutrans &File\ Format\.\.\. ²þ¹Ôµ­¹æÁªÂò(&F)\.\.\. - -let g:menutrans_textwidth_dialog = "¥Æ¥­¥¹¥È¤ÎÉý('textwidth')¤òÀßÄꤷ¤Æ¤¯¤À¤µ¤¤ (0¤ÇÀ°·Á¤ò̵¸ú²½):" -let g:menutrans_fileformat_dialog = "¥Õ¥¡¥¤¥ë½ÐÎϤκݤβþ¹Ôµ­¹æ¤Î·Á¼°¤òÁª¤ó¤Ç¤¯¤À¤µ¤¤." -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n¥­¥ã¥ó¥»¥ë(&C)" - -menutrans C&olor\ Scheme ¿§¥Æ¡¼¥ÞÁªÂò(&O) -menutrans &Keymap ¥­¡¼¥Þ¥Ã¥×(&K) -menutrans None ¤Ê¤· - -" Programming menu -menutrans &Tools ¥Ä¡¼¥ë(&T) -menutrans &Jump\ to\ this\ tagg^] ¥¿¥°¥¸¥ã¥ó¥×(&J)g^] -menutrans Jump\ &back^T Ìá¤ë(&B)^T -menutrans Build\ &Tags\ File ¥¿¥°¥Õ¥¡¥¤¥ëºîÀ®(&T) -menutrans &Make:make ¥á¥¤¥¯(&M):make -menutrans &List\ Errors:cl ¥¨¥é¡¼¥ê¥¹¥È(&L):cl -menutrans L&ist\ Messages:cl! ¥á¥Ã¥»¡¼¥¸¥ê¥¹¥È(&I):cl! -menutrans &Next\ Error:cn ¼¡¤Î¥¨¥é¡¼¤Ø(&N):cn -menutrans &Previous\ Error:cp Á°¤Î¥¨¥é¡¼¤Ø(&P):cp -menutrans &Older\ List:cold ¸Å¤¤¥ê¥¹¥È(&O):cold -menutrans N&ewer\ List:cnew ¿·¤·¤¤¥ê¥¹¥È(&E):cnew -menutrans Error\ &Window ¥¨¥é¡¼¥¦¥£¥ó¥É¥¦(&W) -menutrans &Update:cwin ¹¹¿·(&U):cwin -menutrans &Open:copen ³«¤¯(&O):copen -menutrans &Close:cclose ÊĤ¸¤ë(&C):cclose -menutrans &Convert\ to\ HEX:%!xxd HEX¤ØÊÑ´¹(&C):%!xxd -menutrans Conve&rt\ back:%!xxd\ -r HEX¤«¤éµÕÊÑ´¹(&R)%!xxd\ -r -menutrans Se&T\ Compiler ¥³¥ó¥Ñ¥¤¥éÀßÄê(&T) - -" Tools.Spelling Menu -menutrans &Spelling ¥¹¥Ú¥ê¥ó¥°(&S) -menutrans &Spell\ Check\ On ¥¹¥Ú¥ë¥Á¥§¥Ã¥¯Í­¸ú(&S) -menutrans Spell\ Check\ &Off ¥¹¥Ú¥ë¥Á¥§¥Ã¥¯Í­¸ú(&O) -menutrans To\ &Next\ error]s ¼¡¤Î¥¨¥é¡¼(&N)]s -menutrans To\ &Previous\ error[s Á°¤Î¥¨¥é¡¼(&P)[s -menutrans Suggest\ &Correctionsz= ½¤Àµ¸õÊä(&C)z= -menutrans &Repeat\ correction:spellrepall ½¤Àµ¤ò·«¤êÊÖ¤¹(&R):spellrepall -menutrans Set\ language\ to\ "en" ¸À¸ì¤ò\ "en"\ ¤ËÀßÄꤹ¤ë -menutrans Set\ language\ to\ "en_au" ¸À¸ì¤ò\ "en_au"\ ¤ËÀßÄꤹ¤ë -menutrans Set\ language\ to\ "en_ca" ¸À¸ì¤ò\ "en_ca"\ ¤ËÀßÄꤹ¤ë -menutrans Set\ language\ to\ "en_gb" ¸À¸ì¤ò\ "en_gb"\ ¤ËÀßÄꤹ¤ë -menutrans Set\ language\ to\ "en_nz" ¸À¸ì¤ò\ "en_nz"\ ¤ËÀßÄꤹ¤ë -menutrans Set\ language\ to\ "en_us" ¸À¸ì¤ò\ "en_us"\ ¤ËÀßÄꤹ¤ë -menutrans &Find\ More\ Languages ¾¤Î¸À¸ì¤ò¸¡º÷¤¹¤ë(&F) - -" Tools.Fold Menu -menutrans &Folding ÀÞ¾ö¤ß(&F) -" open close folds -menutrans &Enable/Disable\ foldszi Í­¸ú/̵¸úÀÚÂØ(&E)zi -menutrans &View\ Cursor\ Linezv ¥«¡¼¥½¥ë¹Ô¤òɽ¼¨(&V)zv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx ¥«¡¼¥½¥ë¹Ô¤À¤±¤òɽ¼¨(&W)zMzx -menutrans C&lose\ more\ foldszm ÀÞ¾ö¤ß¤òÊĤ¸¤ë(&L)zm -menutrans &Close\ all\ foldszM Á´ÀÞ¾ö¤ß¤òÊĤ¸¤ë(&C)zM -menutrans O&pen\ more\ foldszr ÀÞ¾ö¤ß¤ò³«¤¯(&P)zr -menutrans &Open\ all\ foldszR Á´ÀÞ¾ö¤ß¤ò³«¤¯(&O)zR -" fold method -menutrans Fold\ Met&hod ÀÞ¾ö¤ßÊýË¡(&H) -menutrans M&anual ¼êÆ°(&A) -menutrans I&ndent ¥¤¥ó¥Ç¥ó¥È(&N) -menutrans E&xpression ¼°É¾²Á(&X) -menutrans S&yntax ¥·¥ó¥¿¥Ã¥¯¥¹(&Y) -menutrans &Diff º¹Ê¬(&D) -menutrans Ma&rker ¥Þ¡¼¥«¡¼(&R) -" create and delete folds -menutrans Create\ &Foldzf ÀÞ¾ö¤ßºîÀ®(&F)zf -menutrans &Delete\ Foldzd ÀÞ¾ö¤ßºï½ü(&D)zd -menutrans Delete\ &All\ FoldszD Á´ÀÞ¾ö¤ßºï½ü(&A)zD -" moving around in folds -menutrans Fold\ col&umn\ width ÀÞ¾ö¤ß¥«¥é¥àÉý(&U) - -menutrans &Update ¹¹¿·(&U) -menutrans &Get\ Block ¥Ö¥í¥Ã¥¯Ãê½Ð(&G) -menutrans &Put\ Block ¥Ö¥í¥Ã¥¯Å¬ÍÑ(&P) - -" Names for buffer menu. -menutrans &Buffers ¥Ð¥Ã¥Õ¥¡(&B) -menutrans &Refresh\ menu ¥á¥Ë¥å¡¼ºÆÆɹþ(&R) -menutrans &Delete ºï½ü(&D) -menutrans &Alternate ΢¤ØÀÚÂØ(&A) -menutrans &Next ¼¡¤Î¥Ð¥Ã¥Õ¥¡(&N) -menutrans &Previous Á°¤Î¥Ð¥Ã¥Õ¥¡(&P) -menutrans [No\ File] [̵Âê] -let g:menutrans_no_file = "[̵Âê]" - -" Window menu -menutrans &Window ¥¦¥£¥ó¥É¥¦(&W) -menutrans &New^Wn ¿·µ¬ºîÀ®(&N)^Wn -menutrans S&plit^Ws ʬ³ä(&P)^Ws -menutrans Sp&lit\ To\ #^W^^ ΢¥Ð¥Ã¥Õ¥¡¤Øʬ³ä(&L)^W^^ -menutrans Split\ &Vertically^Wv ¿âľʬ³ä(&V)^Wv -menutrans Split\ File\ E&xplorer ¥Õ¥¡¥¤¥ë¥¨¥¯¥¹¥×¥í¡¼¥é(&X) -menutrans &Close^Wc ÊĤ¸¤ë(&C)^Wc -menutrans Move\ &To °ÜÆ°(&T) -menutrans &Top^WK ¾å(&T)^WK -menutrans &Bottom^WJ ²¼(&B)^WJ -menutrans &Left\ side^WH º¸(&L)^WH -menutrans &Right\ side^WL ±¦(&R)^WL -menutrans Close\ &Other(s)^Wo ¾¤òÊĤ¸¤ë(&O)^Wo -menutrans Ne&xt^Ww ¼¡¤Ø(&X)^Ww -menutrans P&revious^WW Á°¤Ø(&R)^WW -menutrans &Equal\ Size^W= Ʊ¤¸¹â¤µ¤Ë(&E)^W= -menutrans &Max\ Height^W_ ºÇÂç¹â¤Ë(&M)^W_ -menutrans M&in\ Height^W1_ ºÇ¾®¹â¤Ë(&i)^W1_ -menutrans Max\ &Width^W\| ºÇÂçÉý¤Ë(&W)^W\| -menutrans Min\ Widt&h^W1\| ºÇ¾®Éý¤Ë(&H)^W1\| -menutrans Rotate\ &Up^WR ¾å¤Ë¥í¡¼¥Æ¡¼¥·¥ç¥ó(&U)^WR -menutrans Rotate\ &Down^Wr ²¼¤Ë¥í¡¼¥Æ¡¼¥·¥ç¥ó(&D)^Wr -menutrans Select\ Fo&nt\.\.\. ¥Õ¥©¥ó¥ÈÀßÄê(&N)\.\.\. - -" The popup menu -menutrans &Undo ¼è¤ê¾Ã¤¹(&U) -menutrans Cu&t ÀÚ¤ê¼è¤ê(&T) -menutrans &Copy ¥³¥Ô¡¼(&C) -menutrans &Paste Ž¤êÉÕ¤±(&P) -menutrans &Delete ºï½ü(&D) -menutrans Select\ Blockwise ¶ë·Á¥Ö¥í¥Ã¥¯ÁªÂò -menutrans Select\ &Word ñ¸ìÁªÂò(&W) -menutrans Select\ &Line ¹ÔÁªÂò(&L) -menutrans Select\ &Block ¥Ö¥í¥Ã¥¯ÁªÂò(&B) -menutrans Select\ &All ¤¹¤Ù¤ÆÁªÂò(&A) - -" The GUI toolbar (for Win32 or GTK) -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open ¥Õ¥¡¥¤¥ë¤ò³«¤¯ - tmenu ToolBar.Save ¸½ºß¤Î¥Õ¥¡¥¤¥ë¤òÊݸ - tmenu ToolBar.SaveAll ¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤òÊݸ - tmenu ToolBar.Print °õºþ - tmenu ToolBar.Undo ¼è¤ê¾Ã¤· - tmenu ToolBar.Redo ¤â¤¦°ìÅÙ¤ä¤ë - tmenu ToolBar.Cut ¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤ØÀÚ¤ê¼è¤ê - tmenu ToolBar.Copy ¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤Ø¥³¥Ô¡¼ - tmenu ToolBar.Paste ¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤«¤éŽ¤êÉÕ¤± - tmenu ToolBar.Find ¸¡º÷... - tmenu ToolBar.FindNext ¼¡¤ò¸¡º÷ - tmenu ToolBar.FindPrev Á°¤ò¸¡º÷ - tmenu ToolBar.Replace ÃÖ´¹... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New ¿·µ¬¥¦¥£¥ó¥É¥¦ºîÀ® - tmenu ToolBar.WinSplit ¥¦¥£¥ó¥É¥¦Ê¬³ä - tmenu ToolBar.WinMax ¥¦¥£¥ó¥É¥¦ºÇÂç²½ - tmenu ToolBar.WinMin ¥¦¥£¥ó¥É¥¦ºÇ¾®²½ - tmenu ToolBar.WinClose ¥¦¥£¥ó¥É¥¦¤òÊĤ¸¤ë - endif - tmenu ToolBar.LoadSesn ¥»¥Ã¥·¥ç¥óÆɹþ - tmenu ToolBar.SaveSesn ¥»¥Ã¥·¥ç¥óÊݸ - tmenu ToolBar.RunScript Vim¥¹¥¯¥ê¥×¥È¼Â¹Ô - tmenu ToolBar.Make ¥×¥í¥¸¥§¥¯¥È¤òMake - tmenu ToolBar.Shell ¥·¥§¥ë¤ò³«¤¯ - tmenu ToolBar.RunCtags tagsºîÀ® - tmenu ToolBar.TagJump ¥¿¥°¥¸¥ã¥ó¥× - tmenu ToolBar.Help Vim¥Ø¥ë¥× - tmenu ToolBar.FindHelp Vim¥Ø¥ë¥×¸¡º÷ - endfun -endif - -" Syntax menu -menutrans &Syntax ¥·¥ó¥¿¥Ã¥¯¥¹(&S) -menutrans &Show\ filetypes\ in\ menu Âбþ·Á¼°¤ò¥á¥Ë¥å¡¼¤Ëɽ¼¨(&S) -menutrans Set\ '&syntax'\ only 'syntax'¤À¤±ÀßÄê(&S) -menutrans Set\ '&filetype'\ too 'filetype'¤âÀßÄê(&F) -menutrans &Off ̵¸ú²½(&O) -menutrans &Manual ¼êÆ°ÀßÄê(&M) -menutrans A&utomatic ¼«Æ°ÀßÄê(&U) -menutrans on/off\ for\ &This\ file - \ ¥ª¥ó/¥ª¥ÕÀÚÂØ(&T) -menutrans Co&lor\ test ¥«¥é¡¼¥Æ¥¹¥È(&L) -menutrans &Highlight\ test ¥Ï¥¤¥é¥¤¥È¥Æ¥¹¥È(&H) -menutrans &Convert\ to\ HTML HTML¤Ø¥³¥ó¥Ð¡¼¥È(&C) - -" Japanese specific menu -" À®ÈݤÏiconv¼¡Â衢ɬ¤º¤·¤â»ØÄꤷ¤¿¥¨¥ó¥³¡¼¥É¤Ë¤Ê¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤³¤È¤ËÃí°Õ -if has('iconv') - " iconv¤Î¥Ð¡¼¥¸¥ç¥óȽÄê - let support_jisx0213 = (iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb") ? 1 : 0 - " - " Æɤ߹þ¤ß - an 10.395 &File.-SEPICONV- - an 10.396.100.100 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..³«¤¯(&O)\.\.\..SJIS(&S)fenc=cp932 :browse confirm e ++enc=cp932 - if !support_jisx0213 - an 10.396.100.110 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..³«¤¯(&O)\.\.\..EUC(&E)fenc=euc-jp :browse confirm e ++enc=euc-jp - an 10.396.100.120 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..³«¤¯(&O)\.\.\..JIS(&J)fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp - else - an 10.396.100.110 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..³«¤¯(&O)\.\.\..EUC(&E)fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213 - an 10.396.100.120 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..³«¤¯(&O)\.\.\..JIS(&J)fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3 - endif - an 10.396.100.130 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..³«¤¯(&O)\.\.\..UTF-8(&8)fenc=utf-8 :browse confirm e ++enc=utf-8 - - " ºÆÆɹþ - an 10.396.110.100 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..ºÆÆɹþ(&R)\.\.\..SJIS(&S)fenc=cp932 :e ++enc=cp932 - if !support_jisx0213 - an 10.396.110.110 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..ºÆÆɹþ(&R)\.\.\..EUC(&E)fenc=euc-jp :e ++enc=euc-jp - an 10.396.110.120 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..ºÆÆɹþ(&R)\.\.\..JIS(&J)fenc=iso-2022-jp :e ++enc=iso-2022-jp - else - an 10.396.110.110 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..ºÆÆɹþ(&R)\.\.\..EUC(&E)fenc=euc-jisx0213 :e ++enc=euc-jisx0213 - an 10.396.110.120 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..ºÆÆɹþ(&R)\.\.\..JIS(&J)fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3 - endif - an 10.396.110.130 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..ºÆÆɹþ(&R)\.\.\..UTF-8(&8)fenc=utf-8 :e ++enc=utf-8 - - " Êݸ - an 10.396.115 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..-SEP1- - an 10.396.120.100 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..Êݸ(&S)\.\.\..SJIS(&S)fenc=cp932 :set fenc=cp932 \| w - if !support_jisx0213 - an 10.396.120.110 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..Êݸ(&S)\.\.\..EUC(&E)fenc=euc-jp :set fenc=euc-jp \| w - an 10.396.120.120 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..Êݸ(&S)\.\.\..JIS(&J)fenc=iso-2022-jp :set fenc=iso-2022-jp \| w - else - an 10.396.120.110 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..Êݸ(&S)\.\.\..EUC(&E)fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w - an 10.396.120.120 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..Êݸ(&S)\.\.\..JIS(&J)fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w - endif - an 10.396.120.130 &File.¥¨¥ó¥³¡¼¥É»ØÄê(&E)\.\.\..Êݸ(&S)\.\.\..UTF-8(&8)fenc=utf-8 :set fenc=utf-8 \| w -endif - -" filler to avoid the line above being recognized as a modeline -" filler -" filler -" filler diff --git a/share/vim/vim73/lang/menu_ja_jp.eucjp.vim b/share/vim/vim73/lang/menu_ja_jp.eucjp.vim deleted file mode 100644 index 0861315e..00000000 --- a/share/vim/vim73/lang/menu_ja_jp.eucjp.vim +++ /dev/null @@ -1,6 +0,0 @@ -" Menu Translations: Japanese (for UNIX) -" Translated By: Muraoka Taro -" Last Change: 08:50:47 25-Mar-2001. - -" eucjp is the same as euc-jp. Source the other one from here. -source :p:h/menu_ja_jp.euc-jp.vim diff --git a/share/vim/vim73/lang/menu_ja_jp.ujis.vim b/share/vim/vim73/lang/menu_ja_jp.ujis.vim deleted file mode 100644 index 49248fc7..00000000 --- a/share/vim/vim73/lang/menu_ja_jp.ujis.vim +++ /dev/null @@ -1,6 +0,0 @@ -" Menu Translations: Japanese (for UNIX) -" Translated By: Muraoka Taro -" Last Change: 08:50:47 25-Mar-2001. - -" ujis is the same as euc-jp. Source the other one from here. -source :p:h/menu_ja_jp.euc-jp.vim diff --git a/share/vim/vim73/lang/menu_ja_jp.utf-8.vim b/share/vim/vim73/lang/menu_ja_jp.utf-8.vim deleted file mode 100644 index b2310059..00000000 --- a/share/vim/vim73/lang/menu_ja_jp.utf-8.vim +++ /dev/null @@ -1,338 +0,0 @@ -" vi:set ts=8 sts=8 sw=8 tw=0: -" -" Menu Translations: Japanese (UTF-8) -" Translated By: MURAOKA Taro -" Last Change: 18-Apr-2006. - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding utf-8 - -" Help menu -menutrans &Help ヘルプ(&H) -menutrans &Overview 概略(&O) -menutrans &User\ Manual ユーザマニュアル(&U) -menutrans &How-to\ links &How-toリンク -menutrans &Credits クレジット(&C) -menutrans Co&pying 著作権情報(&P) -menutrans &Sponsor/Register スポンサー/登録(&S) -menutrans O&rphans 孤児(&R) -menutrans &Version バージョン情報(&V) -menutrans &About Vimについて(&A) - -let g:menutrans_help_dialog = "ヘルプを検索したいコマンドもしくは単語を入力してください:\n\n挿入モードのコマンドには i_ を先頭に付加します. (例: i_CTRL-X)\nコマンドライン編集コマンドには c_ を先頭に付加します. (例: c_)\nオプションの名前には ' を付加します. (例: 'shiftwidth')" - -" File menu -menutrans &File ファイル(&F) -menutrans &Open\.\.\.:e 開く(&O)\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp 分割して開く(&L)\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew タブページで開く:tabnew -menutrans &New:enew 新規作成(&N):enew -menutrans &Close:close 閉じる(&C):close -menutrans &Save:w 保存(&S):w -menutrans Save\ &As\.\.\.:sav 名前を付けて保存(&A)\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. 差分表示(&D)\.\.\. -menutrans Split\ Patched\ &By\.\.\. パッチ結果を表示(&B)\.\.\. -menutrans &Print 印刷(&P) -menutrans Sa&ve-Exit:wqa 保存して終了(&V):wqa -menutrans E&xit:qa 終了(&X):qa - -" Edit menu -menutrans &Edit 編集(&E) -menutrans &Undou 取り消す(&U)u -menutrans &Redo^R もう一度やる(&R)^R -menutrans Rep&eat\. 繰り返す(&E)\. -menutrans Cu&t"+x 切り取り(&T)"+x -menutrans &Copy"+y コピー(&C)"+y -menutrans &Paste"+gP 貼り付け(&P)"+gP -menutrans Put\ &Before[p 前に貼る(&B)[p -menutrans Put\ &After]p 後に貼る(&A)]p -menutrans &Deletex 消す(&D)x -menutrans &Select\ AllggVG 全て選択(&S)ggVG -menutrans &Find\.\.\. 検索(&F)\.\.\. -menutrans &Find/ 検索(&F)/ -menutrans Find\ and\ Rep&lace\.\.\. 置換(&L)\.\.\. -menutrans Find\ and\ Rep&lace:%s 置換(&L):%s -menutrans Find\ and\ Rep&lace:s 置換(&L):s -"menutrans Options\.\.\. オプション(&O)\.\.\. -menutrans Settings\ &Window 設定ウィンドウ(&W) -menutrans Startup\ &Settings 起動時の設定(&S) - -" Edit/Global Settings -menutrans &Global\ Settings 全体設定(&G) -menutrans Toggle\ Pattern\ &Highlight:set\ hls! - \ パターン強調切替(&H):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! - \ 大小文字区別切替(&I):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! - \ マッチ表示切替(&S):set\ sm! -menutrans &Context\ lines カーソル周辺行数(&C) -menutrans &Virtual\ Edit 仮想編集(&V) -menutrans Never 無効 -menutrans Block\ Selection ブロック選択時 -menutrans Insert\ mode 挿入モード時 -menutrans Block\ and\ Insert ブロック/挿入モード時 -menutrans Always 常時 -menutrans Toggle\ Insert\ &Mode:set\ im! - \ 挿入(初心者)モード切替(&M):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! - \ Vi互換モード切替(&O):set\ cp! -menutrans Search\ &Path\.\.\. 検索パス(&P)\.\.\. -menutrans Ta&g\ Files\.\.\. タグファイル(&G)\.\.\. -" -" GUI options -menutrans Toggle\ &Toolbar ツールバー表示切替(&T) -menutrans Toggle\ &Bottom\ Scrollbar スクロールバー(下)表示切替(&B) -menutrans Toggle\ &Left\ Scrollbar スクロールバー(左)表示切替(&L) -menutrans Toggle\ &Right\ Scrollbar スクロールバー(右)表示切替(&R) - -let g:menutrans_path_dialog = "ファイルの検索パスを入力してください:\nディレクトリ名はカンマ ( , ) で区切ってください." -let g:menutrans_tags_dialog = "タグファイルの名前を入力してください:\n名前はカンマ ( , ) で区切ってください." - -" Edit/File Settings - -" Boolean options -menutrans F&ile\ Settings ファイル設定(&I) -menutrans Toggle\ Line\ &Numbering:set\ nu! - \ 行番号表示切替(&N):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! - \ リストモード切替(&L):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! - \ 行折返し切替(&W):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! - \ 単語折返し切替(&R):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! - \ タブ展開切替(&E):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! - \ 自動字下げ切替(&A):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! - \ C言語字下げ切替(&C):set\ cin! - -" other options -menutrans &Shiftwidth シフト幅(&S) -menutrans Soft\ &Tabstop ソフトウェアタブ幅(&T) -menutrans Te&xt\ Width\.\.\. テキスト幅(&X)\.\.\. -menutrans &File\ Format\.\.\. 改行記号選択(&F)\.\.\. - -let g:menutrans_textwidth_dialog = "テキストの幅('textwidth')を設定してください (0で整形を無効化):" -let g:menutrans_fileformat_dialog = "ファイル出力の際の改行記号の形式を選んでください." -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nキャンセル(&C)" - -menutrans C&olor\ Scheme 色テーマ選択(&O) -menutrans &Keymap キーマップ(&K) -menutrans None なし - -" Programming menu -menutrans &Tools ツール(&T) -menutrans &Jump\ to\ this\ tagg^] タグジャンプ(&J)g^] -menutrans Jump\ &back^T 戻る(&B)^T -menutrans Build\ &Tags\ File タグファイル作成(&T) -menutrans &Make:make メイク(&M):make -menutrans &List\ Errors:cl エラーリスト(&L):cl -menutrans L&ist\ Messages:cl! メッセージリスト(&I):cl! -menutrans &Next\ Error:cn 次のエラーへ(&N):cn -menutrans &Previous\ Error:cp 前のエラーへ(&P):cp -menutrans &Older\ List:cold 古いリスト(&O):cold -menutrans N&ewer\ List:cnew 新しいリスト(&E):cnew -menutrans Error\ &Window エラーウィンドウ(&W) -menutrans &Update:cwin 更新(&U):cwin -menutrans &Open:copen 開く(&O):copen -menutrans &Close:cclose 閉じる(&C):cclose -menutrans &Convert\ to\ HEX:%!xxd HEXへ変換(&C):%!xxd -menutrans Conve&rt\ back:%!xxd\ -r HEXから逆変換(&R)%!xxd\ -r -menutrans Se&T\ Compiler コンパイラ設定(&T) - -" Tools.Spelling Menu -menutrans &Spelling スペリング(&S) -menutrans &Spell\ Check\ On スペルチェック有効(&S) -menutrans Spell\ Check\ &Off スペルチェック有効(&O) -menutrans To\ &Next\ error]s 次のエラー(&N)]s -menutrans To\ &Previous\ error[s 前のエラー(&P)[s -menutrans Suggest\ &Correctionsz= 修正候補(&C)z= -menutrans &Repeat\ correction:spellrepall 修正を繰り返す(&R):spellrepall -menutrans Set\ language\ to\ "en" 言語を\ "en"\ に設定する -menutrans Set\ language\ to\ "en_au" 言語を\ "en_au"\ に設定する -menutrans Set\ language\ to\ "en_ca" 言語を\ "en_ca"\ に設定する -menutrans Set\ language\ to\ "en_gb" 言語を\ "en_gb"\ に設定する -menutrans Set\ language\ to\ "en_nz" 言語を\ "en_nz"\ に設定する -menutrans Set\ language\ to\ "en_us" 言語を\ "en_us"\ に設定する -menutrans &Find\ More\ Languages 他の言語を検索する(&F) - -" Tools.Fold Menu -menutrans &Folding 折畳み(&F) -" open close folds -menutrans &Enable/Disable\ foldszi 有効/無効切替(&E)zi -menutrans &View\ Cursor\ Linezv カーソル行を表示(&V)zv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx カーソル行だけを表示(&W)zMzx -menutrans C&lose\ more\ foldszm 折畳みを閉じる(&L)zm -menutrans &Close\ all\ foldszM 全折畳みを閉じる(&C)zM -menutrans O&pen\ more\ foldszr 折畳みを開く(&P)zr -menutrans &Open\ all\ foldszR 全折畳みを開く(&O)zR -" fold method -menutrans Fold\ Met&hod 折畳み方法(&H) -menutrans M&anual 手動(&A) -menutrans I&ndent インデント(&N) -menutrans E&xpression 式評価(&X) -menutrans S&yntax シンタックス(&Y) -menutrans &Diff 差分(&D) -menutrans Ma&rker マーカー(&R) -" create and delete folds -menutrans Create\ &Foldzf 折畳み作成(&F)zf -menutrans &Delete\ Foldzd 折畳み削除(&D)zd -menutrans Delete\ &All\ FoldszD 全折畳み削除(&A)zD -" moving around in folds -menutrans Fold\ col&umn\ width 折畳みカラム幅(&U) - -menutrans &Update 更新(&U) -menutrans &Get\ Block ブロック抽出(&G) -menutrans &Put\ Block ブロック適用(&P) - -" Names for buffer menu. -menutrans &Buffers バッファ(&B) -menutrans &Refresh\ menu メニュー再読込(&R) -menutrans &Delete 削除(&D) -menutrans &Alternate 裏へ切替(&A) -menutrans &Next 次のバッファ(&N) -menutrans &Previous 前のバッファ(&P) -menutrans [No\ File] [無題] -let g:menutrans_no_file = "[無題]" - -" Window menu -menutrans &Window ウィンドウ(&W) -menutrans &New^Wn 新規作成(&N)^Wn -menutrans S&plit^Ws 分割(&P)^Ws -menutrans Sp&lit\ To\ #^W^^ 裏バッファへ分割(&L)^W^^ -menutrans Split\ &Vertically^Wv 垂直分割(&V)^Wv -menutrans Split\ File\ E&xplorer ファイルエクスプローラ(&X) -menutrans &Close^Wc 閉じる(&C)^Wc -menutrans Move\ &To 移動(&T) -menutrans &Top^WK 上(&T)^WK -menutrans &Bottom^WJ 下(&B)^WJ -menutrans &Left\ side^WH 左(&L)^WH -menutrans &Right\ side^WL 右(&R)^WL -menutrans Close\ &Other(s)^Wo 他を閉じる(&O)^Wo -menutrans Ne&xt^Ww 次へ(&X)^Ww -menutrans P&revious^WW 前へ(&R)^WW -menutrans &Equal\ Size^W= 同じ高さに(&E)^W= -menutrans &Max\ Height^W_ 最大高に(&M)^W_ -menutrans M&in\ Height^W1_ 最小高に(&i)^W1_ -menutrans Max\ &Width^W\| 最大幅に(&W)^W\| -menutrans Min\ Widt&h^W1\| 最小幅に(&H)^W1\| -menutrans Rotate\ &Up^WR 上にローテーション(&U)^WR -menutrans Rotate\ &Down^Wr 下にローテーション(&D)^Wr -menutrans Select\ Fo&nt\.\.\. フォント設定(&N)\.\.\. - -" The popup menu -menutrans &Undo 取り消す(&U) -menutrans Cu&t 切り取り(&T) -menutrans &Copy コピー(&C) -menutrans &Paste 貼り付け(&P) -menutrans &Delete 削除(&D) -menutrans Select\ Blockwise 矩形ブロック選択 -menutrans Select\ &Word 単語選択(&W) -menutrans Select\ &Line 行選択(&L) -menutrans Select\ &Block ブロック選択(&B) -menutrans Select\ &All すべて選択(&A) - -" The GUI toolbar (for Win32 or GTK) -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open ファイルを開く - tmenu ToolBar.Save 現在のファイルを保存 - tmenu ToolBar.SaveAll すべてのファイルを保存 - tmenu ToolBar.Print 印刷 - tmenu ToolBar.Undo 取り消し - tmenu ToolBar.Redo もう一度やる - tmenu ToolBar.Cut クリップボードへ切り取り - tmenu ToolBar.Copy クリップボードへコピー - tmenu ToolBar.Paste クリップボードから貼り付け - tmenu ToolBar.Find 検索... - tmenu ToolBar.FindNext 次を検索 - tmenu ToolBar.FindPrev 前を検索 - tmenu ToolBar.Replace 置換... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New 新規ウィンドウ作成 - tmenu ToolBar.WinSplit ウィンドウ分割 - tmenu ToolBar.WinMax ウィンドウ最大化 - tmenu ToolBar.WinMin ウィンドウ最小化 - tmenu ToolBar.WinClose ウィンドウを閉じる - endif - tmenu ToolBar.LoadSesn セッション読込 - tmenu ToolBar.SaveSesn セッション保存 - tmenu ToolBar.RunScript Vimスクリプト実行 - tmenu ToolBar.Make プロジェクトをMake - tmenu ToolBar.Shell シェルを開く - tmenu ToolBar.RunCtags tags作成 - tmenu ToolBar.TagJump タグジャンプ - tmenu ToolBar.Help Vimヘルプ - tmenu ToolBar.FindHelp Vimヘルプ検索 - endfun -endif - -" Syntax menu -menutrans &Syntax シンタックス(&S) -menutrans &Show\ filetypes\ in\ menu 対応形式をメニューに表示(&S) -menutrans Set\ '&syntax'\ only 'syntax'だけ設定(&S) -menutrans Set\ '&filetype'\ too 'filetype'も設定(&F) -menutrans &Off 無効化(&O) -menutrans &Manual 手動設定(&M) -menutrans A&utomatic 自動設定(&U) -menutrans on/off\ for\ &This\ file - \ オン/オフ切替(&T) -menutrans Co&lor\ test カラーテスト(&L) -menutrans &Highlight\ test ハイライトテスト(&H) -menutrans &Convert\ to\ HTML HTMLへコンバート(&C) - -" Japanese specific menu -" 成否はiconv次第、必ずしも指定したエンコードになるわけではないことに注意 -if has('iconv') - " iconvのバージョン判定 - let support_jisx0213 = (iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb") ? 1 : 0 - " - " 読み込み - an 10.395 &File.-SEPICONV- - an 10.396.100.100 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..SJIS(&S)fenc=cp932 :browse confirm e ++enc=cp932 - if !support_jisx0213 - an 10.396.100.110 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..EUC(&E)fenc=euc-jp :browse confirm e ++enc=euc-jp - an 10.396.100.120 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..JIS(&J)fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp - else - an 10.396.100.110 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..EUC(&E)fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213 - an 10.396.100.120 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..JIS(&J)fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3 - endif - an 10.396.100.130 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..UTF-8(&8)fenc=utf-8 :browse confirm e ++enc=utf-8 - - " 再読込 - an 10.396.110.100 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..SJIS(&S)fenc=cp932 :e ++enc=cp932 - if !support_jisx0213 - an 10.396.110.110 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..EUC(&E)fenc=euc-jp :e ++enc=euc-jp - an 10.396.110.120 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..JIS(&J)fenc=iso-2022-jp :e ++enc=iso-2022-jp - else - an 10.396.110.110 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..EUC(&E)fenc=euc-jisx0213 :e ++enc=euc-jisx0213 - an 10.396.110.120 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..JIS(&J)fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3 - endif - an 10.396.110.130 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..UTF-8(&8)fenc=utf-8 :e ++enc=utf-8 - - " 保存 - an 10.396.115 &File.エンコード指定(&E)\.\.\..-SEP1- - an 10.396.120.100 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..SJIS(&S)fenc=cp932 :set fenc=cp932 \| w - if !support_jisx0213 - an 10.396.120.110 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..EUC(&E)fenc=euc-jp :set fenc=euc-jp \| w - an 10.396.120.120 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..JIS(&J)fenc=iso-2022-jp :set fenc=iso-2022-jp \| w - else - an 10.396.120.110 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..EUC(&E)fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w - an 10.396.120.120 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..JIS(&J)fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w - endif - an 10.396.120.130 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..UTF-8(&8)fenc=utf-8 :set fenc=utf-8 \| w -endif - -" filler to avoid the line above being recognized as a modeline -" filler -" filler -" filler diff --git a/share/vim/vim73/lang/menu_japanese_japan.932.vim b/share/vim/vim73/lang/menu_japanese_japan.932.vim deleted file mode 100644 index 09976a94..00000000 --- a/share/vim/vim73/lang/menu_japanese_japan.932.vim +++ /dev/null @@ -1,338 +0,0 @@ -" vi:set ts=8 sts=8 sw=8 tw=0: -" -" Menu Translations: Japanese (CP932) -" Translated By: MURAOKA Taro -" Last Change: 18-Apr-2006. - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding cp932 - -" Help menu -menutrans &Help ƒwƒ‹ƒv(&H) -menutrans &Overview ŠT—ª(&O) -menutrans &User\ Manual ƒ†�[ƒUƒ}ƒjƒ…ƒAƒ‹(&U) -menutrans &How-to\ links &How-toƒŠƒ“ƒN -menutrans &Credits ƒNƒŒƒWƒbƒg(&C) -menutrans Co&pying ’˜�쌠�î•ñ(&P) -menutrans &Sponsor/Register ƒXƒ|ƒ“ƒT�[/“o˜^(&S) -menutrans O&rphans ŒÇŽ™(&R) -menutrans &Version ƒo�[ƒWƒ‡ƒ“�î•ñ(&V) -menutrans &About Vim‚ɂ‚¢‚Ä(&A) - -let g:menutrans_help_dialog = "ƒwƒ‹ƒv‚ðŒŸ�õ‚µ‚½‚¢ƒRƒ}ƒ“ƒh‚à‚µ‚­‚Í’PŒê‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢:\n\n‘}“üƒ‚�[ƒh‚̃Rƒ}ƒ“ƒh‚É‚Í i_ ‚ð�擪‚É•t‰Á‚µ‚Ü‚·. (—á: i_CTRL-X)\nƒRƒ}ƒ“ƒhƒ‰ƒCƒ“•Ò�WƒRƒ}ƒ“ƒh‚É‚Í c_ ‚ð�擪‚É•t‰Á‚µ‚Ü‚·. (—á: c_)\nƒIƒvƒVƒ‡ƒ“‚Ì–¼‘O‚É‚Í ' ‚ð•t‰Á‚µ‚Ü‚·. (—á: 'shiftwidth')" - -" File menu -menutrans &File ƒtƒ@ƒCƒ‹(&F) -menutrans &Open\.\.\.:e ŠJ‚­(&O)\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp •ªŠ„‚µ‚ÄŠJ‚­(&L)\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew ƒ^ƒuƒy�[ƒW‚ÅŠJ‚­:tabnew -menutrans &New:enew �V‹K�ì�¬(&N):enew -menutrans &Close:close •Â‚¶‚é(&C):close -menutrans &Save:w •Û‘¶(&S):w -menutrans Save\ &As\.\.\.:sav –¼‘O‚ð•t‚¯‚Ä•Û‘¶(&A)\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. �·•ª•\Ž¦(&D)\.\.\. -menutrans Split\ Patched\ &By\.\.\. ƒpƒbƒ`Œ‹‰Ê‚ð•\Ž¦(&B)\.\.\. -menutrans &Print ˆó�ü(&P) -menutrans Sa&ve-Exit:wqa •Û‘¶‚µ‚Ä�I—¹(&V):wqa -menutrans E&xit:qa �I—¹(&X):qa - -" Edit menu -menutrans &Edit •Ò�W(&E) -menutrans &Undou Žæ‚è�Á‚·(&U)u -menutrans &Redo^R ‚à‚¤ˆê“x‚â‚é(&R)^R -menutrans Rep&eat\. ŒJ‚è•Ô‚·(&E)\. -menutrans Cu&t"+x �Ø‚èŽæ‚è(&T)"+x -menutrans &Copy"+y ƒRƒs�[(&C)"+y -menutrans &Paste"+gP “\‚è•t‚¯(&P)"+gP -menutrans Put\ &Before[p ‘O‚É“\‚é(&B)[p -menutrans Put\ &After]p Œã‚É“\‚é(&A)]p -menutrans &Deletex �Á‚·(&D)x -menutrans &Select\ AllggVG ‘S‚Ä‘I‘ð(&S)ggVG -menutrans &Find\.\.\. ŒŸ�õ(&F)\.\.\. -menutrans &Find/ ŒŸ�õ(&F)/ -menutrans Find\ and\ Rep&lace\.\.\. ’uŠ·(&L)\.\.\. -menutrans Find\ and\ Rep&lace:%s ’uŠ·(&L):%s -menutrans Find\ and\ Rep&lace:s ’uŠ·(&L):s -"menutrans Options\.\.\. ƒIƒvƒVƒ‡ƒ“(&O)\.\.\. -menutrans Settings\ &Window �Ý’èƒEƒBƒ“ƒhƒE(&W) -menutrans Startup\ &Settings ‹N“®Žž‚Ì�Ý’è(&S) - -" Edit/Global Settings -menutrans &Global\ Settings ‘S‘Ì�Ý’è(&G) -menutrans Toggle\ Pattern\ &Highlight:set\ hls! - \ ƒpƒ^�[ƒ“‹­’²�Ø‘Ö(&H):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! - \ ‘å�¬•¶Žš‹æ•Ê�Ø‘Ö(&I):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! - \ ƒ}ƒbƒ`•\Ž¦�Ø‘Ö(&S):set\ sm! -menutrans &Context\ lines ƒJ�[ƒ\ƒ‹Žü•Ó�s�”(&C) -menutrans &Virtual\ Edit ‰¼‘z•Ò�W(&V) -menutrans Never –³Œø -menutrans Block\ Selection ƒuƒ�ƒbƒN‘I‘ðŽž -menutrans Insert\ mode ‘}“üƒ‚�[ƒhŽž -menutrans Block\ and\ Insert ƒuƒ�ƒbƒN/‘}“üƒ‚�[ƒhŽž -menutrans Always �펞 -menutrans Toggle\ Insert\ &Mode:set\ im! - \ ‘}“ü(�‰�SŽÒ)ƒ‚�[ƒh�Ø‘Ö(&M):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! - \ ViŒÝŠ·ƒ‚�[ƒh�Ø‘Ö(&O):set\ cp! -menutrans Search\ &Path\.\.\. ŒŸ�õƒpƒX(&P)\.\.\. -menutrans Ta&g\ Files\.\.\. ƒ^ƒOƒtƒ@ƒCƒ‹(&G)\.\.\. -" -" GUI options -menutrans Toggle\ &Toolbar ƒc�[ƒ‹ƒo�[•\Ž¦�Ø‘Ö(&T) -menutrans Toggle\ &Bottom\ Scrollbar ƒXƒNƒ��[ƒ‹ƒo�[(‰º)•\Ž¦�Ø‘Ö(&B) -menutrans Toggle\ &Left\ Scrollbar ƒXƒNƒ��[ƒ‹ƒo�[(�¶)•\Ž¦�Ø‘Ö(&L) -menutrans Toggle\ &Right\ Scrollbar ƒXƒNƒ��[ƒ‹ƒo�[(‰E)•\Ž¦�Ø‘Ö(&R) - -let g:menutrans_path_dialog = "ƒtƒ@ƒCƒ‹‚ÌŒŸ�õƒpƒX‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢:\nƒfƒBƒŒƒNƒgƒŠ–¼‚̓Jƒ“ƒ} ( , ) ‚Å‹æ�Ø‚Á‚Ä‚­‚¾‚³‚¢." -let g:menutrans_tags_dialog = "ƒ^ƒOƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢:\n–¼‘O‚̓Jƒ“ƒ} ( , ) ‚Å‹æ�Ø‚Á‚Ä‚­‚¾‚³‚¢." - -" Edit/File Settings - -" Boolean options -menutrans F&ile\ Settings ƒtƒ@ƒCƒ‹�Ý’è(&I) -menutrans Toggle\ Line\ &Numbering:set\ nu! - \ �s”Ô�†•\Ž¦�Ø‘Ö(&N):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! - \ ƒŠƒXƒgƒ‚�[ƒh�Ø‘Ö(&L):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! - \ �s�Ü•Ô‚µ�Ø‘Ö(&W):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! - \ ’PŒê�Ü•Ô‚µ�Ø‘Ö(&R):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! - \ ƒ^ƒu“WŠJ�Ø‘Ö(&E):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! - \ Ž©“®Žš‰º‚°�Ø‘Ö(&A):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! - \ CŒ¾ŒêŽš‰º‚°�Ø‘Ö(&C):set\ cin! - -" other options -menutrans &Shiftwidth ƒVƒtƒg•�(&S) -menutrans Soft\ &Tabstop ƒ\ƒtƒgƒEƒFƒAƒ^ƒu•�(&T) -menutrans Te&xt\ Width\.\.\. ƒeƒLƒXƒg•�(&X)\.\.\. -menutrans &File\ Format\.\.\. ‰ü�s‹L�†‘I‘ð(&F)\.\.\. - -let g:menutrans_textwidth_dialog = "ƒeƒLƒXƒg‚Ì•�('textwidth')‚ð�ݒ肵‚Ä‚­‚¾‚³‚¢ (0‚Å�®Œ`‚𖳌ø‰»):" -let g:menutrans_fileformat_dialog = "ƒtƒ@ƒCƒ‹�o—Í‚Ì�ۂ̉ü�s‹L�†‚ÌŒ`Ž®‚ð‘I‚ñ‚Å‚­‚¾‚³‚¢." -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nƒLƒƒƒ“ƒZƒ‹(&C)" - -menutrans C&olor\ Scheme �Fƒe�[ƒ}‘I‘ð(&O) -menutrans &Keymap ƒL�[ƒ}ƒbƒv(&K) -menutrans None ‚È‚µ - -" Programming menu -menutrans &Tools ƒc�[ƒ‹(&T) -menutrans &Jump\ to\ this\ tagg^] ƒ^ƒOƒWƒƒƒ“ƒv(&J)g^] -menutrans Jump\ &back^T –ß‚é(&B)^T -menutrans Build\ &Tags\ File ƒ^ƒOƒtƒ@ƒCƒ‹�ì�¬(&T) -menutrans &Make:make ƒ�ƒCƒN(&M):make -menutrans &List\ Errors:cl ƒGƒ‰�[ƒŠƒXƒg(&L):cl -menutrans L&ist\ Messages:cl! ƒ�ƒbƒZ�[ƒWƒŠƒXƒg(&I):cl! -menutrans &Next\ Error:cn ŽŸ‚̃Gƒ‰�[‚Ö(&N):cn -menutrans &Previous\ Error:cp ‘O‚̃Gƒ‰�[‚Ö(&P):cp -menutrans &Older\ List:cold ŒÃ‚¢ƒŠƒXƒg(&O):cold -menutrans N&ewer\ List:cnew �V‚µ‚¢ƒŠƒXƒg(&E):cnew -menutrans Error\ &Window ƒGƒ‰�[ƒEƒBƒ“ƒhƒE(&W) -menutrans &Update:cwin �X�V(&U):cwin -menutrans &Open:copen ŠJ‚­(&O):copen -menutrans &Close:cclose •Â‚¶‚é(&C):cclose -menutrans &Convert\ to\ HEX:%!xxd HEX‚Ö•ÏŠ·(&C):%!xxd -menutrans Conve&rt\ back:%!xxd\ -r HEX‚©‚ç‹t•ÏŠ·(&R)%!xxd\ -r -menutrans Se&T\ Compiler ƒRƒ“ƒpƒCƒ‰�Ý’è(&T) - -" Tools.Spelling Menu -menutrans &Spelling ƒXƒyƒŠƒ“ƒO(&S) -menutrans &Spell\ Check\ On ƒXƒyƒ‹ƒ`ƒFƒbƒN—LŒø(&S) -menutrans Spell\ Check\ &Off ƒXƒyƒ‹ƒ`ƒFƒbƒN—LŒø(&O) -menutrans To\ &Next\ error]s ŽŸ‚̃Gƒ‰�[(&N)]s -menutrans To\ &Previous\ error[s ‘O‚̃Gƒ‰�[(&P)[s -menutrans Suggest\ &Correctionsz= �C�³Œó•â(&C)z= -menutrans &Repeat\ correction:spellrepall �C�³‚ðŒJ‚è•Ô‚·(&R):spellrepall -menutrans Set\ language\ to\ "en" Œ¾Œê‚ð\ "en"\ ‚É�Ý’è‚·‚é -menutrans Set\ language\ to\ "en_au" Œ¾Œê‚ð\ "en_au"\ ‚É�Ý’è‚·‚é -menutrans Set\ language\ to\ "en_ca" Œ¾Œê‚ð\ "en_ca"\ ‚É�Ý’è‚·‚é -menutrans Set\ language\ to\ "en_gb" Œ¾Œê‚ð\ "en_gb"\ ‚É�Ý’è‚·‚é -menutrans Set\ language\ to\ "en_nz" Œ¾Œê‚ð\ "en_nz"\ ‚É�Ý’è‚·‚é -menutrans Set\ language\ to\ "en_us" Œ¾Œê‚ð\ "en_us"\ ‚É�Ý’è‚·‚é -menutrans &Find\ More\ Languages ‘¼‚ÌŒ¾Œê‚ðŒŸ�õ‚·‚é(&F) - -" Tools.Fold Menu -menutrans &Folding �Ü�ô‚Ý(&F) -" open close folds -menutrans &Enable/Disable\ foldszi —LŒø/–³Œø�Ø‘Ö(&E)zi -menutrans &View\ Cursor\ Linezv ƒJ�[ƒ\ƒ‹�s‚ð•\Ž¦(&V)zv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx ƒJ�[ƒ\ƒ‹�s‚¾‚¯‚ð•\Ž¦(&W)zMzx -menutrans C&lose\ more\ foldszm �Ü�ô‚Ý‚ð•Â‚¶‚é(&L)zm -menutrans &Close\ all\ foldszM ‘S�Ü�ô‚Ý‚ð•Â‚¶‚é(&C)zM -menutrans O&pen\ more\ foldszr �Ü�ô‚Ý‚ðŠJ‚­(&P)zr -menutrans &Open\ all\ foldszR ‘S�Ü�ô‚Ý‚ðŠJ‚­(&O)zR -" fold method -menutrans Fold\ Met&hod �Ü�ô‚Ý•û–@(&H) -menutrans M&anual Žè“®(&A) -menutrans I&ndent ƒCƒ“ƒfƒ“ƒg(&N) -menutrans E&xpression Ž®•]‰¿(&X) -menutrans S&yntax ƒVƒ“ƒ^ƒbƒNƒX(&Y) -menutrans &Diff �·•ª(&D) -menutrans Ma&rker ƒ}�[ƒJ�[(&R) -" create and delete folds -menutrans Create\ &Foldzf �Ü�ô‚Ý�ì�¬(&F)zf -menutrans &Delete\ Foldzd �Ü�ô‚Ý�í�œ(&D)zd -menutrans Delete\ &All\ FoldszD ‘S�Ü�ô‚Ý�í�œ(&A)zD -" moving around in folds -menutrans Fold\ col&umn\ width �Ü�ô‚݃Jƒ‰ƒ€•�(&U) - -menutrans &Update �X�V(&U) -menutrans &Get\ Block ƒuƒ�ƒbƒN’Š�o(&G) -menutrans &Put\ Block ƒuƒ�ƒbƒN“K—p(&P) - -" Names for buffer menu. -menutrans &Buffers ƒoƒbƒtƒ@(&B) -menutrans &Refresh\ menu ƒ�ƒjƒ…�[�Ä“Ç�ž(&R) -menutrans &Delete �í�œ(&D) -menutrans &Alternate — ‚Ö�Ø‘Ö(&A) -menutrans &Next ŽŸ‚̃oƒbƒtƒ@(&N) -menutrans &Previous ‘O‚̃oƒbƒtƒ@(&P) -menutrans [No\ File] [–³‘è] -let g:menutrans_no_file = "[–³‘è]" - -" Window menu -menutrans &Window ƒEƒBƒ“ƒhƒE(&W) -menutrans &New^Wn �V‹K�ì�¬(&N)^Wn -menutrans S&plit^Ws •ªŠ„(&P)^Ws -menutrans Sp&lit\ To\ #^W^^ — ƒoƒbƒtƒ@‚Ö•ªŠ„(&L)^W^^ -menutrans Split\ &Vertically^Wv �‚’¼•ªŠ„(&V)^Wv -menutrans Split\ File\ E&xplorer ƒtƒ@ƒCƒ‹ƒGƒNƒXƒvƒ��[ƒ‰(&X) -menutrans &Close^Wc •Â‚¶‚é(&C)^Wc -menutrans Move\ &To ˆÚ“®(&T) -menutrans &Top^WK �ã(&T)^WK -menutrans &Bottom^WJ ‰º(&B)^WJ -menutrans &Left\ side^WH �¶(&L)^WH -menutrans &Right\ side^WL ‰E(&R)^WL -menutrans Close\ &Other(s)^Wo ‘¼‚ð•Â‚¶‚é(&O)^Wo -menutrans Ne&xt^Ww ŽŸ‚Ö(&X)^Ww -menutrans P&revious^WW ‘O‚Ö(&R)^WW -menutrans &Equal\ Size^W= “¯‚¶�‚‚³‚É(&E)^W= -menutrans &Max\ Height^W_ �Å‘å�‚‚É(&M)^W_ -menutrans M&in\ Height^W1_ �Å�¬�‚‚É(&i)^W1_ -menutrans Max\ &Width^W\| �Å‘å•�‚É(&W)^W\| -menutrans Min\ Widt&h^W1\| �Å�¬•�‚É(&H)^W1\| -menutrans Rotate\ &Up^WR �ã‚Ƀ��[ƒe�[ƒVƒ‡ƒ“(&U)^WR -menutrans Rotate\ &Down^Wr ‰º‚Ƀ��[ƒe�[ƒVƒ‡ƒ“(&D)^Wr -menutrans Select\ Fo&nt\.\.\. ƒtƒHƒ“ƒg�Ý’è(&N)\.\.\. - -" The popup menu -menutrans &Undo Žæ‚è�Á‚·(&U) -menutrans Cu&t �Ø‚èŽæ‚è(&T) -menutrans &Copy ƒRƒs�[(&C) -menutrans &Paste “\‚è•t‚¯(&P) -menutrans &Delete �í�œ(&D) -menutrans Select\ Blockwise ‹éŒ`ƒuƒ�ƒbƒN‘I‘ð -menutrans Select\ &Word ’PŒê‘I‘ð(&W) -menutrans Select\ &Line �s‘I‘ð(&L) -menutrans Select\ &Block ƒuƒ�ƒbƒN‘I‘ð(&B) -menutrans Select\ &All ‚·‚ׂđI‘ð(&A) - -" The GUI toolbar (for Win32 or GTK) -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open ƒtƒ@ƒCƒ‹‚ðŠJ‚­ - tmenu ToolBar.Save Œ»�݂̃tƒ@ƒCƒ‹‚ð•Û‘¶ - tmenu ToolBar.SaveAll ‚·‚ׂẴtƒ@ƒCƒ‹‚ð•Û‘¶ - tmenu ToolBar.Print ˆó�ü - tmenu ToolBar.Undo Žæ‚è�Á‚µ - tmenu ToolBar.Redo ‚à‚¤ˆê“x‚â‚é - tmenu ToolBar.Cut ƒNƒŠƒbƒvƒ{�[ƒh‚Ö�Ø‚èŽæ‚è - tmenu ToolBar.Copy ƒNƒŠƒbƒvƒ{�[ƒh‚ÖƒRƒs�[ - tmenu ToolBar.Paste ƒNƒŠƒbƒvƒ{�[ƒh‚©‚ç“\‚è•t‚¯ - tmenu ToolBar.Find ŒŸ�õ... - tmenu ToolBar.FindNext ŽŸ‚ðŒŸ�õ - tmenu ToolBar.FindPrev ‘O‚ðŒŸ�õ - tmenu ToolBar.Replace ’uŠ·... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New �V‹KƒEƒBƒ“ƒhƒE�ì�¬ - tmenu ToolBar.WinSplit ƒEƒBƒ“ƒhƒE•ªŠ„ - tmenu ToolBar.WinMax ƒEƒBƒ“ƒhƒE�ő剻 - tmenu ToolBar.WinMin ƒEƒBƒ“ƒhƒE�Å�¬‰» - tmenu ToolBar.WinClose ƒEƒBƒ“ƒhƒE‚ð•Â‚¶‚é - endif - tmenu ToolBar.LoadSesn ƒZƒbƒVƒ‡ƒ““Ç�ž - tmenu ToolBar.SaveSesn ƒZƒbƒVƒ‡ƒ“•Û‘¶ - tmenu ToolBar.RunScript VimƒXƒNƒŠƒvƒgŽÀ�s - tmenu ToolBar.Make ƒvƒ�ƒWƒFƒNƒg‚ðMake - tmenu ToolBar.Shell ƒVƒFƒ‹‚ðŠJ‚­ - tmenu ToolBar.RunCtags tags�ì�¬ - tmenu ToolBar.TagJump ƒ^ƒOƒWƒƒƒ“ƒv - tmenu ToolBar.Help Vimƒwƒ‹ƒv - tmenu ToolBar.FindHelp Vimƒwƒ‹ƒvŒŸ�õ - endfun -endif - -" Syntax menu -menutrans &Syntax ƒVƒ“ƒ^ƒbƒNƒX(&S) -menutrans &Show\ filetypes\ in\ menu ‘ΉžŒ`Ž®‚ðƒ�ƒjƒ…�[‚É•\Ž¦(&S) -menutrans Set\ '&syntax'\ only 'syntax'‚¾‚¯�Ý’è(&S) -menutrans Set\ '&filetype'\ too 'filetype'‚à�Ý’è(&F) -menutrans &Off –³Œø‰»(&O) -menutrans &Manual Žè“®�Ý’è(&M) -menutrans A&utomatic Ž©“®�Ý’è(&U) -menutrans on/off\ for\ &This\ file - \ ƒIƒ“/ƒIƒt�Ø‘Ö(&T) -menutrans Co&lor\ test ƒJƒ‰�[ƒeƒXƒg(&L) -menutrans &Highlight\ test ƒnƒCƒ‰ƒCƒgƒeƒXƒg(&H) -menutrans &Convert\ to\ HTML HTML‚ÖƒRƒ“ƒo�[ƒg(&C) - -" Japanese specific menu -" �¬”Û‚ÍiconvŽŸ‘æ�A•K‚¸‚µ‚àŽw’肵‚½ƒGƒ“ƒR�[ƒh‚É‚È‚é‚킯‚Å‚Í‚È‚¢‚±‚Æ‚É’�ˆÓ -if has('iconv') - " iconv‚̃o�[ƒWƒ‡ƒ“”»’è - let support_jisx0213 = (iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb") ? 1 : 0 - " - " “Ç‚Ý�ž‚Ý - an 10.395 &File.-SEPICONV- - an 10.396.100.100 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..ŠJ‚­(&O)\.\.\..SJIS(&S)fenc=cp932 :browse confirm e ++enc=cp932 - if !support_jisx0213 - an 10.396.100.110 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..ŠJ‚­(&O)\.\.\..EUC(&E)fenc=euc-jp :browse confirm e ++enc=euc-jp - an 10.396.100.120 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..ŠJ‚­(&O)\.\.\..JIS(&J)fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp - else - an 10.396.100.110 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..ŠJ‚­(&O)\.\.\..EUC(&E)fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213 - an 10.396.100.120 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..ŠJ‚­(&O)\.\.\..JIS(&J)fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3 - endif - an 10.396.100.130 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..ŠJ‚­(&O)\.\.\..UTF-8(&8)fenc=utf-8 :browse confirm e ++enc=utf-8 - - " �Ä“Ç�ž - an 10.396.110.100 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..�Ä“Ç�ž(&R)\.\.\..SJIS(&S)fenc=cp932 :e ++enc=cp932 - if !support_jisx0213 - an 10.396.110.110 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..�Ä“Ç�ž(&R)\.\.\..EUC(&E)fenc=euc-jp :e ++enc=euc-jp - an 10.396.110.120 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..�Ä“Ç�ž(&R)\.\.\..JIS(&J)fenc=iso-2022-jp :e ++enc=iso-2022-jp - else - an 10.396.110.110 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..�Ä“Ç�ž(&R)\.\.\..EUC(&E)fenc=euc-jisx0213 :e ++enc=euc-jisx0213 - an 10.396.110.120 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..�Ä“Ç�ž(&R)\.\.\..JIS(&J)fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3 - endif - an 10.396.110.130 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..�Ä“Ç�ž(&R)\.\.\..UTF-8(&8)fenc=utf-8 :e ++enc=utf-8 - - " •Û‘¶ - an 10.396.115 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..-SEP1- - an 10.396.120.100 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..•Û‘¶(&S)\.\.\..SJIS(&S)fenc=cp932 :set fenc=cp932 \| w - if !support_jisx0213 - an 10.396.120.110 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..•Û‘¶(&S)\.\.\..EUC(&E)fenc=euc-jp :set fenc=euc-jp \| w - an 10.396.120.120 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..•Û‘¶(&S)\.\.\..JIS(&J)fenc=iso-2022-jp :set fenc=iso-2022-jp \| w - else - an 10.396.120.110 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..•Û‘¶(&S)\.\.\..EUC(&E)fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w - an 10.396.120.120 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..•Û‘¶(&S)\.\.\..JIS(&J)fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w - endif - an 10.396.120.130 &File.ƒGƒ“ƒR�[ƒhŽw’è(&E)\.\.\..•Û‘¶(&S)\.\.\..UTF-8(&8)fenc=utf-8 :set fenc=utf-8 \| w -endif - -" filler to avoid the line above being recognized as a modeline -" filler -" filler -" filler diff --git a/share/vim/vim73/lang/menu_ko_kr.euckr.vim b/share/vim/vim73/lang/menu_ko_kr.euckr.vim deleted file mode 100644 index 11809cf9..00000000 --- a/share/vim/vim73/lang/menu_ko_kr.euckr.vim +++ /dev/null @@ -1,261 +0,0 @@ -" Menu Translations: Korean -" Maintainer: SungHyun Nam -" Last Change: 2010 Feb 18 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding euc-kr - -" Help menu -menutrans &Help µµ¿ò¸»(&H) -menutrans &Overview °³°ü(&O) -menutrans &User\ Manual »ç¿ëÀÚ\ ¸Å´º¾ó(&U) -menutrans &How-to\ links ÇÏ¿ìÅõ\ ¸ñ·Ï(&H) -menutrans &GUI GUI(&G) -menutrans &Find\.\.\. ã±â(&F)\.\.\. -menutrans &Credits °í¸¶¿î\ ºÐ(&C) -menutrans Co&pying ÀúÀÛ±Ç(&p) -menutrans &Sponsor/Register ÈÄ¿ø/µî·Ï(&S) -menutrans O&rphans °í¾Æ(&r) -menutrans &Version ¹öÁ¯(&V) -menutrans &About ÀÌ\ ÇÁ·Î±×·¥Àº(&A) - -" File menu -menutrans &File ÆÄÀÏ(&F) -menutrans &Open\.\.\.:e ¿­±â(&O)\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp ³ª´²¼­\ ¿­±â(&l)\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew ÅÇ\ ¿­±â\.\.\.:tabnew -menutrans &New:enew »õ·Î¿î(&N):enew -menutrans &Close:close ´Ý±â(&C):close -menutrans &Save:w ÀúÀå(&S):w -menutrans Save\ &As\.\.\.:sav ´Ù¸¥\ À̸§À¸·Î\ ÀúÀå(&A)\.\.\.:sav -"menutrans Split\ &Diff\ with\.\.\. Split\ &Diff\ with\.\.\. -"menutrans Split\ Patched\ &By\.\.\. Split\ Patched\ &By\.\.\. -menutrans &Print Àμâ(&P) -menutrans Sa&ve-Exit:wqa ÀúÀåÇÏ°í\ ³¡³»±â(&v):wqa -menutrans E&xit:qa ³¡³»±â(&x):qa - -" Edit menu -menutrans &Edit ÆíÁý(&E) -menutrans &Undou Ãë¼Ò(&U)u -menutrans &Redo^R ´Ù½Ã ½ÇÇà(&R)^R -menutrans Rep&eat\. µÇÇ®ÀÌ(&e)\. -menutrans Cu&t"+x ÀÚ¸£±â(&t)"+x -menutrans &Copy"+y º¹»ç(&C)"+y -menutrans &Paste"+gP ºÙÀ̱â(&P)"+gP -menutrans Put\ &Before[p ¾Õ¿¡\ ºÙÀ̱â(&B)[p -menutrans Put\ &After]p µÚ¿¡\ ºÙÀ̱â(&A)]p -menutrans &Deletex Áö¿ì±â(&D)x -menutrans &Select\ AllggVG ¸ðµÎ\ °í¸£±â(&S)ggVG -menutrans &Find\.\.\. ã±â(&F)\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. ã¾Æ¼­\ ¹Ù²Ù±â(&l)\.\.\. -menutrans Settings\ &Window ¼³Á¤\ â(&W) -menutrans Startup\ &Settings ½ÃÀÛ\ ¼³Á¤(&S) - -" Edit/Global Settings -menutrans &Global\ Settings Àü¿ª\ ¼³Á¤(&G) -menutrans Toggle\ Pattern\ &Highlight:set\ hls! ÆÐÅÏ\ ÇÏÀ̶óÀÌÆ®\ Åä±Û(&H):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! ´ë¼Ò¹®ÀÚ\ ±¸ºÐ\ Åä±Û(&I):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Showmatch\ Åä±Û(&S):set\ sm! -menutrans &Context\ lines ÄÜÅؽºÆ®\ ÁÙ(&C) -menutrans &Virtual\ Edit °¡»ó\ ÆíÁý(&V) -menutrans Never »ç¿ë ¾È ÇÔ -menutrans Block\ Selection ºí·°\ °í¸£±â -menutrans Insert\ mode »ðÀÔ\ ¸ðµå -menutrans Block\ and\ Insert ºí·°°ú\ »ðÀÔ -menutrans Always Ç×»ó\ »ç¿ë -menutrans Toggle\ Insert\ &Mode:set\ im! »ðÀÔ\ ¸ðµå\ Åä±Û(&M):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vi\ ȣȯ\ Åä±Û(&o):set\ cp! -menutrans Search\ &Path\.\.\. ã±â\ °æ·Î(&P)\.\.\. -menutrans Ta&g\ Files\.\.\. ²¿¸®Ç¥\ ÆÄÀÏ(&g)\.\.\. - -" GUI options -menutrans Toggle\ &Toolbar µµ±¸¸·´ë\ Åä±Û(&T) -menutrans Toggle\ &Bottom\ Scrollbar ¹Ù´Ú\ ½ºÅ©·Ñ¹Ù\ Åä±Û(&B) -menutrans Toggle\ &Left\ Scrollbar ¿ÞÂÊ\ ½ºÅ©·Ñ¹Ù\ Åä±Û(&L) -menutrans Toggle\ &Right\ Scrollbar ¿À¸¥ÂÊ\ ½ºÅ©·Ñ¹Ù\ Åä±Û(&R) - -" Edit/File Settings -menutrans F&ile\ Settings ÆÄÀÏ\ ¼³Á¤(&i) - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! ÁÙ\ ¹øÈ£ºÙÀ̱â\ Åä±Û(&N):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! ¸ñ·Ï\ ¸ðµå\ Åä±Û(&L):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! ÁÙ\ Wrap\ Åä±Û(&W):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! ³¹¸»¿¡¼­\ Wrap\ Åä±Û(&r):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! ÅÇ\ È®Àå\ Åä±Û(&e):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! ÀÚµ¿Àε§Æ®\ Åä±Û(&a):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! C-Àε§ÆÃ\ Åä±Û(&C):set\ cin! - -" other options -menutrans &Shiftwidth ½¬ÇÁÆ® ³Êºñ(&S) -menutrans Soft\ &Tabstop ¼ÒÇÁÆ®\ ÅǽºÅé(&T) -menutrans Te&xt\ Width\.\.\. ÅؽºÆ®\ ³Êºñ(&x)\.\.\. -menutrans &File\ Format\.\.\. ÆÄÀÏ\ Çü½Ä(&F)\.\.\. -menutrans C&olor\ Scheme Ä÷¯\ ½ºÅ´(&o) -menutrans &Keymap Å°¸Ê(&K) - -menutrans Select\ Fo&nt\.\.\. ±Û²Ã\ °í¸£±â(&F)\.\.\. - -" Programming menu -menutrans &Tools µµ±¸(&T) -menutrans &Jump\ to\ this\ tagg^] ÀÌ\ ²¿¸®Ç¥·Î\ °¡±â(&J)g^] -menutrans Jump\ &back^T µÚ·Î\ °¡±â(&b)^T -menutrans Build\ &Tags\ File ²¿¸®Ç¥\ ÆÄÀÏ\ ¸¸µé±â(&T) - -menutrans &Spelling ¸ÂÃã¹ý\ °Ë»ç(&S) -menutrans &Spell\ Check\ On ¸ÂÃã¹ý\ °Ë»ç\ ½ÃÀÛ(&S) -menutrans Spell\ Check\ &Off ¸ÂÃã¹ý\ °Ë»ç\ ³¡(&O) -menutrans To\ &Next\ error]s ´ÙÀ½\ ¿¡·¯·Î(&N)]s -menutrans To\ &Previous\ error[s ÀÌÀü\ ¿¡·¯·Î(&P)[s -menutrans Suggest\ &Correctionsz= ¼öÁ¤\ Á¦¾È(&C)z= -menutrans &Repeat\ correction:spellrepall ¼öÁ¤\ ¹Ýº¹(&R):spellrepall -menutrans Set\ language\ to\ "en" ¾ð¾î¸¦\ "en"À¸·Î\ ¼³Á¤ -menutrans Set\ language\ to\ "en_au" ¾ð¾î¸¦\ "en_au"·Î\ ¼³Á¤ -menutrans Set\ language\ to\ "en_ca" ¾ð¾î¸¦\ "en_ca"·Î\ ¼³Á¤ -menutrans Set\ language\ to\ "en_gb" ¾ð¾î¸¦\ "en_gb"·Î\ ¼³Á¤ -menutrans Set\ language\ to\ "en_nz" ¾ð¾î¸¦\ "en_nz"À¸·Î\ ¼³Á¤ -menutrans Set\ language\ to\ "en_us" ¾ð¾î¸¦\ "en_us"·Î\ ¼³Á¤ -menutrans &Find\ More\ Languages ´Ù¸¥\ ¾ð¾î\ ã±â(&F) - -" Tools.Fold Menu -menutrans &Folding Á¢±â(&F) -" open close folds -menutrans &Enable/Disable\ foldszi Á¢´Â\ ±â´É\ »ç¿ë\ Åä±Û(&E)zi -menutrans &View\ Cursor\ Linezv Ä¿¼­\ ÁÙ\ º¸±â(&V)zv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Ä¿¼­\ ÁÙ¸¸\ º¸±â(&w)zMzx -menutrans C&lose\ more\ foldszm ´õ\ ¸¹Àº\ Á¢±â\ ´Ý±â(&l)zm -menutrans &Close\ all\ foldszM Á¢Èù\ ºÎºÐ\ ¸ðµÎ\ Á¢±â(&C)zM -menutrans O&pen\ more\ foldszr ´õ ¸¹Àº\ Á¢±â\ ¿­±â(&p)zr -menutrans &Open\ all\ foldszR Á¢Èù\ ºÎºÐ\ ¸ðµÎ\ Æì±â(&O)zR -" fold method -menutrans Fold\ Met&hod Á¢´Â\ ¹æ¹ý(&h) -menutrans M&anual ¼öµ¿(&a) -menutrans I&ndent µé¿©¾²±â(&n) -menutrans E&xpression Ç¥Çö½Ä(&x) -menutrans S&yntax ½ÅÅýº(&y) -"menutrans &Diff &Diff -menutrans Ma&rker ²¿¸®Ç¥(&r) -" create and delete folds -menutrans Create\ &Foldzf »õ·Î Á¢±â(&F)zf -menutrans &Delete\ Foldzd ¿ÏÀüÈ÷ Æì±â(&D)zd -menutrans Delete\ &All\ FoldszD ¸ðµÎ\ Æì±â(&A)zD -" moving around in folds -menutrans Fold\ column\ &width Á¢À»\ Ä­\ ³Êºñ(&w) - -"menutrans &Diff &Diff -menutrans &Update °»½Å(&U) -menutrans &Get\ Block ºí·°\ °¡Á®¿À±â(&G) -menutrans &Put\ Block ºí·°\ Áý¾î³Ö±â(&P) - -menutrans &Make:make ºôµå(&M):make -menutrans &List\ Errors:cl ¿¡·¯\ ¸ñ·Ï\ º¸±â(&L):cl -menutrans L&ist\ Messages:cl! ¸Þ½ÃÁö\ ¸ñ·Ï\ º¸±â(&i):cl! -menutrans &Next\ Error:cn ´ÙÀ½\ ¿¡·¯(&N):cn -menutrans &Previous\ Error:cp ÀÌÀü\ ¿¡·¯(&P):cp -menutrans &Older\ List:cold ¿À·¡µÈ\ ¸ñ·Ï(&O):cold -menutrans N&ewer\ List:cnew »õ·Î¿î\ ¸ñ·Ï(&e):cnew -menutrans Error\ &Window ¿¡·¯\ â(&W) -menutrans &Update:cwin °»½Å(&U):cwin -menutrans &Open:copen ¿­±â(&O):copen -menutrans &Close:cclose ´Ý±â(&C):cclose -menutrans Se&T\ Compiler ÄÄÆÄÀÏ·¯\ ¼³Á¤(&T) -menutrans &Convert\ to\ HEX:%!mc\ vim:xxd ½ÊÀ°ÁøÀ¸·Î\ º¯È¯:%!mc\ vim:xxd -menutrans &Convert\ to\ HEX:%!xxd ½ÊÀ°ÁøÀ¸·Î\ º¯È¯(&C):%!xxd -menutrans Conve&rt\ back:%!mc\ vim:xxd\ -r ¿ø·¡´ë·Î\ º¯È¯(&r):%!mc\ vim:xxd\ -r -menutrans Conve&rt\ back:%!xxd\ -r ¿ø·¡´ë·Î\ º¯È¯(&r):%!xxd\ -r - -" Names for buffer menu. -menutrans &Buffers ¹öÆÛ(&B) -menutrans &Refresh\ menu Â÷¸²Ç¥\ ´Ù½Ã±×¸®±â(&R) -menutrans &Delete Áö¿ì±â(&D) -menutrans &Alternate ±³Ã¼(&A) -menutrans &Next ´ÙÀ½(&N) -menutrans &Previous ÀÌÀü(&P) - -" Window menu -menutrans &Window â(&W) -menutrans &New^Wn »õ\ â(&N)^Wn -menutrans S&plit^Ws ³ª´©±â(&p)^Ws -menutrans Sp&lit\ To\ #^W^^ #À¸·Î\ ³ª´©±â(&l)^W^^ -menutrans Split\ &Vertically^Wv ¼¼·Î·Î\ ³ª´©±â(&V)^Wv -menutrans Split\ File\ E&xplorer ÆÄÀÏ\ ÀͽºÇ÷η¯\ ³ª´©±â - -menutrans &Close^Wc ´Ý±â(&C)^Wc -menutrans Close\ &Other(s)^Wo ´Ù¸¥\ â\ ´Ý±â(&O)^Wo - -menutrans Move\ &To À̵¿(&T) -menutrans &Top^WK ²À´ë±â(&T)^WK -menutrans &Bottom^WJ ¹Ù´Ú(&B)^WJ -menutrans &Left\ side^WH ¿ÞÂÊ(&L)^WH -menutrans &Right\ side^WL ¿À¸¥ÂÊ(&R)^WL -menutrans Rotate\ &Up^WR À§·Î\ ȸÀü(&U)^WR -menutrans Rotate\ &Down^Wr ¾Æ·¡·Î\ ȸÀü(&D)^Wr - -menutrans &Equal\ Size^W= °°Àº\ ³ôÀÌ·Î(&E)^W= -menutrans &Max\ Height^W_ ÃÖ´ë\ ³ôÀÌ·Î(&M)^W_ -menutrans M&in\ Height^W1_ ÃÖ¼Ò\ ³ôÀÌ·Î(&i)^W1_ -menutrans Max\ &Width^W\| ÃÖ´ë\ ³ÐÀÌ·Î(&W)^W\| -menutrans Min\ Widt&h^W1\| ÃÖ¼Ò\ ³ÐÀÌ·Î(&h)^W1\| - -" The popup menu -menutrans &Undo Ãë¼Ò(&U) -menutrans Cu&t ÀÚ¸£±â(&t) -menutrans &Copy º¹»ç(&C) -menutrans &Paste ºÙÀ̱â(&P) -menutrans &Delete Áö¿ì±â(&D) -menutrans Select\ Blockwise »ç°¢Çü\ °í¸£±â -menutrans Select\ &Word ³¹¸»\ °í¸£±â(&W) -menutrans Select\ &Line ÁÙ\ °í¸£±â(&L) -menutrans Select\ &Block ±¸È¹\ °í¸£±â(&B) -menutrans Select\ &All ¸ðµÎ\ °í¸£±â(&A) - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open ÆÄÀÏ ¿­±â - tmenu ToolBar.Save ÇöÀç ÆÄÀÏ ÀúÀå - tmenu ToolBar.SaveAll ¸ðµÎ ÀúÀå - tmenu ToolBar.Print Àμâ - tmenu ToolBar.Undo Ãë¼Ò - tmenu ToolBar.Redo ´Ù½Ã ½ÇÇà - tmenu ToolBar.Cut ÀÚ¸£±â - tmenu ToolBar.Copy º¹»ç - tmenu ToolBar.Paste ºÙÀ̱â - tmenu ToolBar.Find ã±â... - tmenu ToolBar.FindNext ´ÙÀ½ ã±â - tmenu ToolBar.FindPrev ÀÌÀü ã±â - tmenu ToolBar.Replace ¹Ù²Ù±â - tmenu ToolBar.LoadSesn ¼¼¼Ç Àоî¿À±â - tmenu ToolBar.SaveSesn ¼¼¼Ç ÀúÀå - tmenu ToolBar.RunScript ½ºÅ©¸³Æ® ½ÇÇà - tmenu ToolBar.Make Make - tmenu ToolBar.Shell ½© - tmenu ToolBar.RunCtags ²¿¸®Ç¥ ¸¸µé±â - tmenu ToolBar.TagJump ²¿¸®Ç¥·Î °¡±â - tmenu ToolBar.Help µµ¿ò¸» - tmenu ToolBar.FindHelp µµ¿ò¸» ã±â... - endfun -endif - -" Syntax menu -menutrans &Syntax ¹®¹ý(&S) -menutrans &Show\ filetypes\ in\ menu ¸ðµç\ ¼±Åð¡´ÉÇÑ\ Ç׸ñ\ º¸±â(&S) -menutrans Set\ '&syntax'\ only 'syntax'¸¸\ ¼³Á¤(&s) -menutrans Set\ '&filetype'\ too 'filetype'µµ\ ¼³Á¤(&f) -menutrans &Off ²ô±â(&O) -menutrans &Manual ¼öµ¿(&M) -menutrans A&utomatic ÀÚµ¿(&u) -menutrans on/off\ for\ &This\ file ÀÌ\ ÆÄÀϸ¸\ Äѱâ/²ô±â(&T) - -menutrans Co&lor\ test »ö\ ½ÃÇè(&l) -menutrans &Highlight\ test Highlight\ ½ÃÇè(&H) -menutrans &Convert\ to\ HTML HTML·Î\ º¯È¯(&C) - diff --git a/share/vim/vim73/lang/menu_ko_kr.utf-8.vim b/share/vim/vim73/lang/menu_ko_kr.utf-8.vim deleted file mode 100644 index ef461737..00000000 --- a/share/vim/vim73/lang/menu_ko_kr.utf-8.vim +++ /dev/null @@ -1,261 +0,0 @@ -" Menu Translations: Korean -" Maintainer: SungHyun Nam -" Last Change: 2010 Feb 18 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding utf-8 - -" Help menu -menutrans &Help 도움말(&H) -menutrans &Overview 개관(&O) -menutrans &User\ Manual 사용자\ 매뉴얼(&U) -menutrans &How-to\ links 하우투\ 목록(&H) -menutrans &GUI GUI(&G) -menutrans &Find\.\.\. 찾기(&F)\.\.\. -menutrans &Credits 고마운\ 분(&C) -menutrans Co&pying 저작권(&p) -menutrans &Sponsor/Register 후원/등록(&S) -menutrans O&rphans 고아(&r) -menutrans &Version 버젼(&V) -menutrans &About 이\ 프로그램은(&A) - -" File menu -menutrans &File 파일(&F) -menutrans &Open\.\.\.:e 열기(&O)\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp 나눠서\ 열기(&l)\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew 탭\ 열기\.\.\.:tabnew -menutrans &New:enew 새로운(&N):enew -menutrans &Close:close 닫기(&C):close -menutrans &Save:w 저장(&S):w -menutrans Save\ &As\.\.\.:sav 다른\ 이름으로\ 저장(&A)\.\.\.:sav -"menutrans Split\ &Diff\ with\.\.\. Split\ &Diff\ with\.\.\. -"menutrans Split\ Patched\ &By\.\.\. Split\ Patched\ &By\.\.\. -menutrans &Print 인쇄(&P) -menutrans Sa&ve-Exit:wqa 저장하고\ 끝내기(&v):wqa -menutrans E&xit:qa 끝내기(&x):qa - -" Edit menu -menutrans &Edit 편집(&E) -menutrans &Undou 취소(&U)u -menutrans &Redo^R 다시 실행(&R)^R -menutrans Rep&eat\. 되풀이(&e)\. -menutrans Cu&t"+x 자르기(&t)"+x -menutrans &Copy"+y 복사(&C)"+y -menutrans &Paste"+gP 붙이기(&P)"+gP -menutrans Put\ &Before[p 앞에\ 붙이기(&B)[p -menutrans Put\ &After]p 뒤에\ 붙이기(&A)]p -menutrans &Deletex 지우기(&D)x -menutrans &Select\ AllggVG 모두\ 고르기(&S)ggVG -menutrans &Find\.\.\. 찾기(&F)\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. 찾아서\ 바꾸기(&l)\.\.\. -menutrans Settings\ &Window 설정\ 창(&W) -menutrans Startup\ &Settings 시작\ 설정(&S) - -" Edit/Global Settings -menutrans &Global\ Settings 전역\ 설정(&G) -menutrans Toggle\ Pattern\ &Highlight:set\ hls! 패턴\ 하이라이트\ 토글(&H):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! 대소문자\ 구분\ 토글(&I):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Showmatch\ 토글(&S):set\ sm! -menutrans &Context\ lines 콘텍스트\ 줄(&C) -menutrans &Virtual\ Edit 가상\ 편집(&V) -menutrans Never 사용 안 함 -menutrans Block\ Selection 블럭\ 고르기 -menutrans Insert\ mode 삽입\ 모드 -menutrans Block\ and\ Insert 블럭과\ 삽입 -menutrans Always 항상\ 사용 -menutrans Toggle\ Insert\ &Mode:set\ im! 삽입\ 모드\ 토글(&M):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vi\ 호환\ 토글(&o):set\ cp! -menutrans Search\ &Path\.\.\. 찾기\ 경로(&P)\.\.\. -menutrans Ta&g\ Files\.\.\. 꼬리표\ 파일(&g)\.\.\. - -" GUI options -menutrans Toggle\ &Toolbar 도구막대\ 토글(&T) -menutrans Toggle\ &Bottom\ Scrollbar 바닥\ 스크롤바\ 토글(&B) -menutrans Toggle\ &Left\ Scrollbar 왼쪽\ 스크롤바\ 토글(&L) -menutrans Toggle\ &Right\ Scrollbar 오른쪽\ 스크롤바\ 토글(&R) - -" Edit/File Settings -menutrans F&ile\ Settings 파일\ 설정(&i) - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! 줄\ 번호붙이기\ 토글(&N):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! 목록\ 모드\ 토글(&L):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! 줄\ Wrap\ 토글(&W):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! 낱말에서\ Wrap\ 토글(&r):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! 탭\ 확장\ 토글(&e):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! 자동인덴트\ 토글(&a):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! C-인덴팅\ 토글(&C):set\ cin! - -" other options -menutrans &Shiftwidth 쉬프트 너비(&S) -menutrans Soft\ &Tabstop 소프트\ 탭스톱(&T) -menutrans Te&xt\ Width\.\.\. 텍스트\ 너비(&x)\.\.\. -menutrans &File\ Format\.\.\. 파일\ 형식(&F)\.\.\. -menutrans C&olor\ Scheme 컬러\ 스킴(&o) -menutrans &Keymap 키맵(&K) - -menutrans Select\ Fo&nt\.\.\. 글꼴\ 고르기(&F)\.\.\. - -" Programming menu -menutrans &Tools 도구(&T) -menutrans &Jump\ to\ this\ tagg^] 이\ 꼬리표로\ 가기(&J)g^] -menutrans Jump\ &back^T 뒤로\ 가기(&b)^T -menutrans Build\ &Tags\ File 꼬리표\ 파일\ 만들기(&T) - -menutrans &Spelling 맞춤법\ 검사(&S) -menutrans &Spell\ Check\ On 맞춤법\ 검사\ 시작(&S) -menutrans Spell\ Check\ &Off 맞춤법\ 검사\ 끝(&O) -menutrans To\ &Next\ error]s 다음\ 에러로(&N)]s -menutrans To\ &Previous\ error[s 이전\ 에러로(&P)[s -menutrans Suggest\ &Correctionsz= 수정\ 제안(&C)z= -menutrans &Repeat\ correction:spellrepall 수정\ 반복(&R):spellrepall -menutrans Set\ language\ to\ "en" 언어를\ "en"으로\ 설정 -menutrans Set\ language\ to\ "en_au" 언어를\ "en_au"로\ 설정 -menutrans Set\ language\ to\ "en_ca" 언어를\ "en_ca"로\ 설정 -menutrans Set\ language\ to\ "en_gb" 언어를\ "en_gb"로\ 설정 -menutrans Set\ language\ to\ "en_nz" 언어를\ "en_nz"으로\ 설정 -menutrans Set\ language\ to\ "en_us" 언어를\ "en_us"로\ 설정 -menutrans &Find\ More\ Languages 다른\ 언어\ 찾기(&F) - -" Tools.Fold Menu -menutrans &Folding 접기(&F) -" open close folds -menutrans &Enable/Disable\ foldszi 접는\ 기능\ 사용\ 토글(&E)zi -menutrans &View\ Cursor\ Linezv 커서\ 줄\ 보기(&V)zv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx 커서\ 줄만\ 보기(&w)zMzx -menutrans C&lose\ more\ foldszm 더\ 많은\ 접기\ 닫기(&l)zm -menutrans &Close\ all\ foldszM 접힌\ 부분\ 모두\ 접기(&C)zM -menutrans O&pen\ more\ foldszr 더 많은\ 접기\ 열기(&p)zr -menutrans &Open\ all\ foldszR 접힌\ 부분\ 모두\ 펴기(&O)zR -" fold method -menutrans Fold\ Met&hod 접는\ 방법(&h) -menutrans M&anual 수동(&a) -menutrans I&ndent 들여쓰기(&n) -menutrans E&xpression 표현식(&x) -menutrans S&yntax 신택스(&y) -"menutrans &Diff &Diff -menutrans Ma&rker 꼬리표(&r) -" create and delete folds -menutrans Create\ &Foldzf 새로 접기(&F)zf -menutrans &Delete\ Foldzd 완전히 펴기(&D)zd -menutrans Delete\ &All\ FoldszD 모두\ 펴기(&A)zD -" moving around in folds -menutrans Fold\ column\ &width 접을\ 칸\ 너비(&w) - -"menutrans &Diff &Diff -menutrans &Update 갱신(&U) -menutrans &Get\ Block 블럭\ 가져오기(&G) -menutrans &Put\ Block 블럭\ 집어넣기(&P) - -menutrans &Make:make 빌드(&M):make -menutrans &List\ Errors:cl 에러\ 목록\ 보기(&L):cl -menutrans L&ist\ Messages:cl! 메시지\ 목록\ 보기(&i):cl! -menutrans &Next\ Error:cn 다음\ 에러(&N):cn -menutrans &Previous\ Error:cp 이전\ 에러(&P):cp -menutrans &Older\ List:cold 오래된\ 목록(&O):cold -menutrans N&ewer\ List:cnew 새로운\ 목록(&e):cnew -menutrans Error\ &Window 에러\ 창(&W) -menutrans &Update:cwin 갱신(&U):cwin -menutrans &Open:copen 열기(&O):copen -menutrans &Close:cclose 닫기(&C):cclose -menutrans Se&T\ Compiler 컴파일러\ 설정(&T) -menutrans &Convert\ to\ HEX:%!mc\ vim:xxd 십육진으로\ 변환:%!mc\ vim:xxd -menutrans &Convert\ to\ HEX:%!xxd 십육진으로\ 변환(&C):%!xxd -menutrans Conve&rt\ back:%!mc\ vim:xxd\ -r 원래대로\ 변환(&r):%!mc\ vim:xxd\ -r -menutrans Conve&rt\ back:%!xxd\ -r 원래대로\ 변환(&r):%!xxd\ -r - -" Names for buffer menu. -menutrans &Buffers 버퍼(&B) -menutrans &Refresh\ menu 차림표\ 다시그리기(&R) -menutrans &Delete 지우기(&D) -menutrans &Alternate 교체(&A) -menutrans &Next 다음(&N) -menutrans &Previous 이전(&P) - -" Window menu -menutrans &Window 창(&W) -menutrans &New^Wn 새\ 창(&N)^Wn -menutrans S&plit^Ws 나누기(&p)^Ws -menutrans Sp&lit\ To\ #^W^^ #으로\ 나누기(&l)^W^^ -menutrans Split\ &Vertically^Wv 세로로\ 나누기(&V)^Wv -menutrans Split\ File\ E&xplorer 파일\ 익스플로러\ 나누기 - -menutrans &Close^Wc 닫기(&C)^Wc -menutrans Close\ &Other(s)^Wo 다른\ 창\ 닫기(&O)^Wo - -menutrans Move\ &To 이동(&T) -menutrans &Top^WK 꼭대기(&T)^WK -menutrans &Bottom^WJ 바닥(&B)^WJ -menutrans &Left\ side^WH 왼쪽(&L)^WH -menutrans &Right\ side^WL 오른쪽(&R)^WL -menutrans Rotate\ &Up^WR 위로\ 회전(&U)^WR -menutrans Rotate\ &Down^Wr 아래로\ 회전(&D)^Wr - -menutrans &Equal\ Size^W= 같은\ 높이로(&E)^W= -menutrans &Max\ Height^W_ 최대\ 높이로(&M)^W_ -menutrans M&in\ Height^W1_ 최소\ 높이로(&i)^W1_ -menutrans Max\ &Width^W\| 최대\ 넓이로(&W)^W\| -menutrans Min\ Widt&h^W1\| 최소\ 넓이로(&h)^W1\| - -" The popup menu -menutrans &Undo 취소(&U) -menutrans Cu&t 자르기(&t) -menutrans &Copy 복사(&C) -menutrans &Paste 붙이기(&P) -menutrans &Delete 지우기(&D) -menutrans Select\ Blockwise 사각형\ 고르기 -menutrans Select\ &Word 낱말\ 고르기(&W) -menutrans Select\ &Line 줄\ 고르기(&L) -menutrans Select\ &Block 구획\ 고르기(&B) -menutrans Select\ &All 모두\ 고르기(&A) - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open 파일 열기 - tmenu ToolBar.Save 현재 파일 저장 - tmenu ToolBar.SaveAll 모두 저장 - tmenu ToolBar.Print 인쇄 - tmenu ToolBar.Undo 취소 - tmenu ToolBar.Redo 다시 실행 - tmenu ToolBar.Cut 자르기 - tmenu ToolBar.Copy 복사 - tmenu ToolBar.Paste 붙이기 - tmenu ToolBar.Find 찾기... - tmenu ToolBar.FindNext 다음 찾기 - tmenu ToolBar.FindPrev 이전 찾기 - tmenu ToolBar.Replace 바꾸기 - tmenu ToolBar.LoadSesn 세션 읽어오기 - tmenu ToolBar.SaveSesn 세션 저장 - tmenu ToolBar.RunScript 스크립트 실행 - tmenu ToolBar.Make Make - tmenu ToolBar.Shell 쉘 - tmenu ToolBar.RunCtags 꼬리표 만들기 - tmenu ToolBar.TagJump 꼬리표로 가기 - tmenu ToolBar.Help 도움말 - tmenu ToolBar.FindHelp 도움말 찾기... - endfun -endif - -" Syntax menu -menutrans &Syntax 문법(&S) -menutrans &Show\ filetypes\ in\ menu 모든\ 선택가능한\ 항목\ 보기(&S) -menutrans Set\ '&syntax'\ only 'syntax'만\ 설정(&s) -menutrans Set\ '&filetype'\ too 'filetype'도\ 설정(&f) -menutrans &Off 끄기(&O) -menutrans &Manual 수동(&M) -menutrans A&utomatic 자동(&u) -menutrans on/off\ for\ &This\ file 이\ 파일만\ 켜기/끄기(&T) - -menutrans Co&lor\ test 색\ 시험(&l) -menutrans &Highlight\ test Highlight\ 시험(&H) -menutrans &Convert\ to\ HTML HTML로\ 변환(&C) - diff --git a/share/vim/vim73/lang/menu_nl_nl.latin1.vim b/share/vim/vim73/lang/menu_nl_nl.latin1.vim deleted file mode 100644 index d7f75f2f..00000000 --- a/share/vim/vim73/lang/menu_nl_nl.latin1.vim +++ /dev/null @@ -1,240 +0,0 @@ -" Menu Translations: Nederlands -" Maintainer: Bram Moolenaar -" Last Change: 2004 May 05 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" The translations below are in latin1, but they work for cp1252 and -" iso-8859-15 without conversion as well. -if &enc != "cp1252" && &enc != "iso-8859-15" - scriptencoding latin1 -endif - -" Help menu -menutrans &Help &Help -menutrans &Overview &Overzicht -menutrans &User\ Manual Gebruikershandleiding -menutrans &How-to\ links &Hoe-doe-ik\ lijst -"menutrans &GUI &GUI -menutrans &Credits &Met\ dank\ aan -menutrans Co&pying &Copyright -menutrans &Sponsor/Register &Sponsor/Registreer -menutrans O&rphans &Weeskinderen -menutrans &Version &Versie -menutrans &About &Introductiescherm - -" File menu -menutrans &File &Bestand -menutrans &Open\.\.\.:e &Openen\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp In\ nieuw\ &Venster\ openen\.\.\.:sp -menutrans &New:enew &Nieuw:enew -menutrans &Close:close &Sluiten:close -menutrans &Save:w &Bewaren:w -menutrans Save\ &As\.\.\.:sav Bewaren\ als\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Toon\ diff\ met\.\.\. -menutrans Split\ Patched\ &By\.\.\. Toon\ gewijzigd\ door\.\.\. -menutrans &Print Af&drukken -menutrans Sa&ve-Exit:wqa Bewaren\ en\ Afsluiten:wqa -menutrans E&xit:qa &Afsluiten:qa - -" Edit menu -menutrans &Edit Be&werken -menutrans &Undou Terugu -menutrans &Redo^R Voo&ruit^R -menutrans Rep&eat\. &Herhalen\. -menutrans Cu&t"+x &Knippen"+x -menutrans &Copy"+y K&opiëeren"+y -menutrans &Paste"+gP Plakken"+gP -menutrans Put\ &Before[p Ervoor\ invoegen[p -menutrans Put\ &After]p Erachter\ invoegen]p -menutrans &Select\ allggVG Alles\ &MarkerenggVG -menutrans &Find\.\.\. &Zoeken\.\.\. -menutrans &Find/ &Zoeken/ -menutrans Find\ and\ Rep&lace\.\.\. Zoeken\ en\ &Vervangen\.\.\. -menutrans Find\ and\ Rep&lace:%s Zoeken\ en\ &Vervangen:%s -menutrans Find\ and\ Rep&lace Zoeken\ en\ &Vervangen -menutrans Find\ and\ Rep&lace:s Zoeken\ en\ &Vervangen:s -menutrans Settings\ &Window Optievenster -menutrans &Global\ Settings Globale\ Opties -menutrans F&ile\ Settings Bestandopties -menutrans C&olor\ Scheme Kleurenschema -menutrans &Keymap Toetsenbordindeling - -" Edit.Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Flip\ Patroonkleuring:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Flip\ Negeren\ hoofd/kleine\ letters:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Flip\ Showmatch:set\ sm! -menutrans &Context\ lines Contextregels -menutrans &Virtual\ Edit Virtueel\ positioneren -menutrans Never Nooit -menutrans Block\ Selection Bij\ Blokselectie -menutrans Insert\ mode In\ Invoegmode -menutrans Block\ and\ Insert Bij\ Blokselectie\ en\ Invoegmode -menutrans Always Altijd -menutrans Toggle\ Insert\ &Mode:set\ im! Flip\ Invoegmode:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Flip\ Vi\ Compatibiliteit:set\ cp! -menutrans Search\ &Path\.\.\. Zoekpad\.\.\. -menutrans Ta&g\ Files\.\.\. Tag\ Bestanden\.\.\. -menutrans Toggle\ &Toolbar Toon/verberg\ Knoppenbalk -menutrans Toggle\ &Bottom\ Scrollbar Toon/verberg\ onderste\ schuifbalk -menutrans Toggle\ &Left\ Scrollbar Toon/verberg\ linker\ schuifbalk -menutrans Toggle\ &Right\ Scrollbar Toon/verberg\ rechter\ schuifbalk -menutrans None Geen - -" Edit.File Settings -menutrans Toggle\ Line\ &Numbering:set\ nu! Flip\ regelnummers:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Flip\ list\ mode:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Flip\ regelafbreken:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Flip\ afbreken\ op\ woordgrens:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Flip\ tabexpansie:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Flip\ automatisch\ indenteren:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Flip\ C-indenteren:set\ cin! -menutrans Te&xt\ Width\.\.\. Tekstbreedte\.\.\. -menutrans &File\ Format\.\.\. Bestandsformaat\.\.\. - -" Tools menu -menutrans &Tools &Gereedschap -menutrans &Jump\ to\ this\ tagg^] &Spring\ naar\ Tagg^] -menutrans Jump\ &back^T Spring\ &Terug^T -menutrans Build\ &Tags\ File Genereer\ &Tagsbestand -menutrans &Make:make &Make\ uitvoeren:make -menutrans &List\ Errors:cl &Foutenlijst:cl -menutrans L&ist\ Messages:cl! &Berichtenlijst:cl! -menutrans &Next\ Error:cn Volgende\ Fout:cn -menutrans &Previous\ Error:cp Vorige\ Fout:cp -menutrans &Older\ List:cold &Oudere\ Lijst:cold -menutrans N&ewer\ List:cnew &Nieuwere\ Lijst:cnew -menutrans Error\ &Window Foutenvenster -menutrans &Update:cwin &Aanpassen:cwin -menutrans &Open:copen &Openen:copen -menutrans &Close:cclose &Sluiten:cclose -menutrans &Convert\ to\ HEX:%!xxd Converteer\ naar\ HEX:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Converteer\ terug:%!xxd\ -r -menutrans &Set\ Compiler Kies\ Compiler - -" Tools.Folding -menutrans &Enable/Disable\ foldszi Flip\ tonen\ foldszi -menutrans &View\ Cursor\ Linezv Toon\ cursorregelzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Toon\ alleen\ cursorregelzMzx -menutrans C&lose\ more\ foldszm Sluit\ meer\ foldszm -menutrans &Close\ all\ foldszM Sluit\ alle\ foldszM -menutrans O&pen\ more\ foldszr Open\ meer\ foldszr -menutrans &Open\ all\ foldszR Open\ alle\ foldszR -menutrans Fold\ Met&hod Foldwijze -menutrans M&anual Handmatig -menutrans I&ndent Inspringing -menutrans E&xpression Expressie -menutrans S&yntax Syntax -menutrans &Diff Verschillen -menutrans Ma&rker Markeringen -menutrans Create\ &Foldzf maak\ Foldzf -menutrans &Delete\ Foldzd verwijder\ Foldzd -menutrans Delete\ &All\ FoldszD verwijder\ alle\ FoldszD -menutrans Fold\ column\ &width Fold\ kolom\ breedte - -" Tools.Diff -menutrans &Update Verversen -menutrans &Get\ Block Blok\ ophalen\ van\ ander\ venster -menutrans &Put\ Block Blok\ naar\ ander\ venster - -" Names for buffer menu. -menutrans &Buffers &Buffer -menutrans &Refresh\ menu Ververs\ menu -menutrans &Delete Wissen -menutrans &Alternate Vorige -menutrans &Next Vooruit -menutrans &Previous Achteruit - -" Window menu -menutrans &Window &Venster -menutrans &New^Wn &Nieuw^Wn -menutrans S&plit^Ws Splitsen^Ws -menutrans Sp&lit\ To\ #^W^^ Splits\ naar\ #^W^^ -menutrans Split\ &Vertically^Wv Splits\ &Vertikaal^Wv -menutrans Split\ File\ E&xplorer Splits\ Bestandverkenner -menutrans &Close^Wc &Sluiten^Wc -menutrans Close\ &Other(s)^Wo &Sluit\ alle\ andere^Wo -menutrans Ne&xt^Ww Volgende^Ww -menutrans P&revious^WW &Vorige^WW -menutrans &Equal\ Size^W= &Gelijke\ afmetingen^W= -menutrans &Max\ Height^W_ &Maximale\ hoogte^W_ -menutrans M&in\ Height^W1_ Mi&nimale\ hoogte^W1_ -menutrans Max\ &Width^W\| Maximale\ breedte^W\| -menutrans Min\ Widt&h^W1\| Minimale\ breedte^W1\| -menutrans Move\ &To Verplaats\ naar -menutrans &Top^WK Bovenkant^WK -menutrans &Bottom^WJ Onderkant^WJ -menutrans &Left\ side^WH Linkerkant^WH -menutrans &Right\ side^WL Rechterkant^WL -menutrans Rotate\ &Up^WR Roteren\ naar\ &boven^WR -menutrans Rotate\ &Down^Wr Roteren\ naar\ &onder^Wr -menutrans Select\ Fo&nt\.\.\. Selecteer\ font\.\.\. - -" The popup menu -menutrans &Undo &Terug -menutrans Cu&t Knip -menutrans &Copy &Kopiëer -menutrans &Paste &Plak -menutrans &Delete &Wissen -menutrans Select\ Blockwise Selecteer\ per\ Rechthoek -menutrans Select\ &Word Selecteer\ een\ &Woord -menutrans Select\ &Line Selecteer\ een\ &Regel -menutrans Select\ &Block Selecteer\ een\ Recht&hoek -menutrans Select\ &All Selecteer\ &Alles - -" The GUI toolbar (for Win32 or GTK) -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Bestand openen - tmenu ToolBar.Save Bestand opslaan - tmenu ToolBar.SaveAll Alle bestanden opslaan - tmenu ToolBar.Print afdrukken - tmenu ToolBar.Undo terug - tmenu ToolBar.Redo vooruit - tmenu ToolBar.Cut knippen - tmenu ToolBar.Copy Kopiëren - tmenu ToolBar.Paste Plakken - tmenu ToolBar.Find Zoeken... - tmenu ToolBar.FindNext Zoek volgende - tmenu ToolBar.FindPrev Zoek vorige - tmenu ToolBar.Replace Zoek en vervang... - tmenu ToolBar.LoadSesn Sessie Laden - tmenu ToolBar.SaveSesn Sessie opslaan - tmenu ToolBar.RunScript Vim script uitvoeren - tmenu ToolBar.Make Make uitvoeren - tmenu ToolBar.Shell Shell starten - tmenu ToolBar.RunCtags Tags bestand genereren - tmenu ToolBar.TagJump Spring naar tag - tmenu ToolBar.Help Help! - tmenu ToolBar.FindHelp Help vinden... - endfun -endif - -" Syntax menu -menutrans &Syntax &Syntax -menutrans &Show\ filetypes\ in\ menu Toon\ filetypes\ in\ menu -menutrans Set\ '&syntax'\ only Alleen\ 'syntax'\ wijzigen -menutrans Set\ '&filetype'\ too Ook\ 'filetype'\ wijzigen -menutrans &Off &Uit -menutrans &Manual &Handmatig -menutrans A&utomatic A&utomatisch -menutrans on/off\ for\ &This\ file Aan/Uit\ voor\ dit\ Bestand -menutrans Co&lor\ test Test\ de\ &Kleuren -menutrans &Highlight\ test Test\ de\ Markeringen -menutrans &Convert\ to\ HTML Converteren\ naar\ &HTML -menutrans &Show\ individual\ choices Toon\ elke\ keuze - -" dialog texts -let menutrans_no_file = "[Geen Bestand]" -let menutrans_help_dialog = "Typ een commando of woord om help voor te vinden:\n\nVoeg i_ in voor Input mode commandos (bijv. i_CTRL-X)\nVoeg c_ in voor een commando-regel edit commando (bijv. c_)\nVoeg ' in \voor een optie naam (bijv. 'shiftwidth')" -let g:menutrans_path_dialog = "Typ het zoekpad voor bestanden.\nGebruik commas tussen de padnamen." -let g:menutrans_tags_dialog = "Typ namen van tag bestanden.\nGebruik commas tussen de namen." -let g:menutrans_textwidth_dialog = "Typ de nieuwe tekst breedte (0 om formatteren uit the schakelen): " -let g:menutrans_fileformat_dialog = "Selecteer formaat voor het schrijven van het bestand" diff --git a/share/vim/vim73/lang/menu_no_no.latin1.vim b/share/vim/vim73/lang/menu_no_no.latin1.vim deleted file mode 100644 index f27b05c7..00000000 --- a/share/vim/vim73/lang/menu_no_no.latin1.vim +++ /dev/null @@ -1,233 +0,0 @@ -" Menu Translations: Norwegian / Norsk (Bokmål) -" Maintainer: Øyvind A. Holm -" Last Change: 2004-05-16 20:00:52 +0200 -" menu_no_no.latin1.vim 289 2004-05-16 18:00:52Z sunny - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" The translations below are in ISO-8859-1, but they work for ISO-8859-15 and -" CP1252 without conversion as well. -if &enc != "cp1252" && &enc != "iso-8859-15" - scriptencoding latin1 -endif - -menutrans &File &Fil - menutrans &Open\.\.\.:e &Åpne \.\.\.:e - menutrans Sp&lit-Open\.\.\.:sp Åpne\ i\ nytt\ &vindu \.\.\.:sp - menutrans &New:enew &Ny\ fil:enew - menutrans &Close:close L&ukk:close - menutrans &Save:w &Lagre:w - menutrans Save\ &As\.\.\.:sav Lagre\ s&om \.\.\.:sav - if has("diff") - menutrans Split\ &Diff\ with\.\.\. Sa&mmenlign\ med\ ny\ fil \.\.\. - menutrans Split\ Patched\ &By\.\.\. &Patch\ i\ nytt\ vindu \.\.\. - endif - menutrans &Print &Skriv\ ut - menutrans Sa&ve-Exit:wqa Lagre\ o&g\ avslutt:wqa - menutrans E&xit:qa &Avslutt:qa -menutrans &Edit &Rediger - menutrans &Undou &Angreu - menutrans &Redo^R &Gjenopprett^R - menutrans Rep&eat\. &Repeter\. - menutrans Cu&t"+x &Klipp\ ut"+x - menutrans &Copy"+y K&opier"+y - menutrans &Paste"+gP &Lim\ inn"+gP - menutrans Put\ &Before[p Lim\ i&nn\ før\ markør[p - menutrans Put\ &After]p Lim\ inn\ &etter\ markør]p - menutrans &Select\ AllggVG &Merk\ altggVG - menutrans &Find\.\.\. &Søk \.\.\. - menutrans Find\ and\ Rep&lace\.\.\. S&øk\ og\ erstatt \.\.\. - menutrans Settings\ &Window &Innstillinger - menutrans &Global\ Settings Glo&bale\ innstillinger - menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Utheving\ av\ søketekst\ av/på:set\ hls! - menutrans Toggle\ &Ignore-case:set\ ic! &Forskjell\ mellom\ store/små bokstaver\ av/på:set\ ic! - menutrans Toggle\ &Showmatch:set\ sm! &Indikering\ av\ samsvarende\ parentes\ av/på:set\ sm! - menutrans &Context\ lines &Kontekstlinjer - menutrans &Virtual\ Edit Vi&rtuell\ redigering - menutrans Never &Aldri - menutrans Block\ Selection I\ &blokkmodus - menutrans Insert\ mode I\ &Innsettingsmodus - menutrans Block\ and\ Insert I\ Blokk-\ &og\ innsettingsmodus - menutrans Always A&lltid - menutrans Toggle\ Insert\ &Mode:set\ im! Innsettings&modus\ av/på:set\ im! - menutrans Toggle\ Vi\ C&ompatible:set\ cp! &Vi-kompatiblitet\ av/på:set\ cp! - menutrans Search\ &Path\.\.\. &Søkesti \.\.\. - menutrans Ta&g\ Files\.\.\. Ta&gfiler \.\.\. - menutrans Toggle\ &Toolbar Verkt&øylinje - menutrans Toggle\ &Bottom\ Scrollbar Ne&dre\ rullefelt\ av/på - menutrans Toggle\ &Left\ Scrollbar Ve&nstre\ rullefelt\ av/på - menutrans Toggle\ &Right\ Scrollbar &Høyre\ rullefelt\ av/på - menutrans F&ile\ Settings Filo&ppsett - menutrans Toggle\ Line\ &Numbering:set\ nu! &Linjenummer\ av/på:set\ nu! - menutrans Toggle\ &List\ Mode:set\ list! L&istemodus\ av/på:set\ list! - menutrans Toggle\ Line\ &Wrap:set\ wrap! Li&njebryting\ av/på:set\ wrap! - menutrans Toggle\ W&rap\ at\ word:set\ lbr! Linjebryting\ ved\ &ord\ av/på:set\ lbr! - menutrans Toggle\ &expand-tab:set\ et! Utvidelse\ av\ &tabulatorer\ av/på:set\ et! - menutrans Toggle\ &auto-indent:set\ ai! A&utomatisk\ innrykk\ av/på:set\ ai! - menutrans Toggle\ &C-indenting:set\ cin! &C-innrykk\ av/på:set\ cin! - menutrans &Shiftwidth &Størrelse\ på\ innrykk - menutrans Soft\ &Tabstop &Myke\ tabulatorstopp - menutrans Te&xt\ Width\.\.\. Te&kstbredde \.\.\. - menutrans &File\ Format\.\.\. &Filformat \.\.\. - menutrans C&olor\ Scheme &Fargekart - menutrans &Keymap &Tastaturoppsett - menutrans Select\ Fo&nt\.\.\. Skriftt&ype \.\.\. -menutrans &Tools &Verktøy - menutrans &Jump\ to\ this\ tagg^] &Hopp\ til\ tag\ under\ markørg^] - menutrans Jump\ &back^T Hopp\ &tilbake^T - menutrans Build\ &Tags\ File Lag\ ta&gfil - if has("folding") - menutrans &Folding Fol&der - menutrans &Enable/Disable\ foldszi &Folder\ av/påzi - menutrans &View\ Cursor\ Linezv Se\ &markørlinjezv - menutrans Vie&w\ Cursor\ Line\ onlyzMzx Se\ &bare\ markørlinjenzMzx - menutrans C&lose\ more\ foldszm L&ukk\ flere\ folderzm - menutrans &Close\ all\ foldszM Lukk\ &alle\ folderzM - menutrans O&pen\ more\ foldszr &Åpne\ flere\ folderzr - menutrans &Open\ all\ foldszR Å&pne\ alle\ folderzR - menutrans Fold\ Met&hod Foldme&tode - menutrans M&anual &Manuell - menutrans I&ndent &Innrykk - menutrans E&xpression &Uttrykk - menutrans S&yntax &Syntaks - menutrans &Diff &Forskjeller - menutrans Ma&rker M&arkering - menutrans Create\ &Foldzf La&g\ foldzf - menutrans &Delete\ Foldzd &Slett\ foldzd - menutrans Delete\ &All\ FoldszD Sl&ett\ alle\ folderzD - menutrans Fold\ col&umn\ width Bredde\ på\ fold&kolonne - endif - if has("diff") - menutrans &Diff &Forskjeller - menutrans &Update &Oppdater - menutrans &Get\ Block &Hent\ blokk - menutrans &Put\ Block &Putt\ blokk - endif - menutrans &Make:make &Kjør\ "make":make - menutrans &List\ Errors:cl &List\ feil:cl - menutrans L&ist\ Messages:cl! List\ &meldinger:cl! - menutrans &Next\ Error:cn &Neste\ feil:cn - menutrans &Previous\ Error:cp Fo&rrige\ feil:cp - menutrans &Older\ List:cold &Eldre\ liste:cold - menutrans N&ewer\ List:cnew N&yere\ liste:cnew - menutrans Error\ &Window Fe&ilvindu - menutrans &Update:cwin &Oppdater:cwin - menutrans &Open:copen &Åpne:copen - menutrans &Close:cclose &Lukk:cclose - menutrans &Set\ Compiler &Velg\ kompilator - menutrans &Convert\ to\ HEX:%!xxd Konverter\ til\ hek&sadesimal:%!xxd - menutrans Conve&rt\ back:%!xxd\ -r K&onverter\ tilbake:%!xxd\ -r -menutrans &Syntax &Syntaks - menutrans &Show\ filetypes\ in\ menu &Vis\ filtyper\ i\ menyen - menutrans Set\ '&syntax'\ only Sett\ bare\ '&syntax' - menutrans Set\ '&filetype'\ too Sett\ '&filetype'\ også - menutrans &Off &Av - menutrans &Manual &Manuell - menutrans A&utomatic A&utomatisk - menutrans on/off\ for\ &This\ file Av/på\ for\ &denne\ filen - menutrans Co&lor\ test Far&getest - menutrans &Highlight\ test Uthevings&test - menutrans &Convert\ to\ HTML Konverter\ til\ &HTML -menutrans &Buffers &Buffer - menutrans &Refresh\ menu &Oppdater - menutrans Delete &Slett - menutrans &Alternate &Veksle - menutrans &Next &Neste - menutrans &Previous &Forrige - menutrans [No\ File] [Uten\ navn] -menutrans &Window Vi&ndu - menutrans &New^Wn &Nytt^Wn - menutrans S&plit^Ws &Splitt^Ws - menutrans Sp&lit\ To\ #^W^^ Splitt\ &til\ #^W^^ - menutrans Split\ &Vertically^Wv S&plitt\ loddrett^Ws - menutrans Split\ File\ E&xplorer &Filbehandler - menutrans &Close^Wc &Lukk^Wc - menutrans Close\ &Other(s)^Wo Lukk\ &andre^Wo - menutrans Move\ &To Fl&ytt\ til - menutrans &Top^WK &Toppen^WK - menutrans &Bottom^WJ &Bunnen^WJ - menutrans &Left\ side^WH &Venstre\ side^WH - menutrans &Right\ side^WL &Høyre\ side^WL - menutrans Rotate\ &Up^WR Roter\ &opp^WR - menutrans Rotate\ &Down^Wr &Roter\ ned^Wr - menutrans &Equal\ Size^W= Lik\ st&ørrelse^W= - menutrans &Max\ Height^W_ &Maksimal\ høyde^W_ - menutrans M&in\ Height^W1_ M&inimal\ høyde^W1_ - menutrans Max\ &Width^W\| Ma&ksimal\ bredde^W\| - menutrans Min\ Widt&h^W1\| Minimal\ &bredde^W1\| -menutrans &Help &Hjelp - menutrans &Overview &Oversikt - menutrans &User\ Manual &Brukerhåndbok - menutrans &How-to\ links &Førstehjelp - menutrans &Find\.\.\. &Søk \.\.\. - menutrans &Credits &Kreditering - menutrans Co&pying &Programlisens - menutrans &Sponsor/Register S&tøtte/Registrering - menutrans O&rphans Fo&reldreløse - menutrans &Version &Versjon - menutrans &About &Om\ Vim - -" Popup - menutrans &Undo &Angre - menutrans Cu&t Klipp\ &ut - menutrans &Copy &Kopier - menutrans &Paste &Lim\ inn - menutrans &Delete &Slett - menutrans Select\ Blockwise Marker\ blokk&vis - menutrans Select\ &Word Marker\ &ord - menutrans Select\ &Line Marker\ lin&je - menutrans Select\ &Block Marker\ &blokk - menutrans Select\ &All Marker\ al&t - -" Verktøylinje -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfunction Do_toolbar_tmenu - endif - function Do_toolbar_tmenu() - tmenu ToolBar.Open Åpne fil - tmenu ToolBar.Save Lagre fil - tmenu ToolBar.SaveAll Lagre alle filer - tmenu ToolBar.Print Skriv ut - tmenu ToolBar.Undo Angre - tmenu ToolBar.Redo Gjenopprett - tmenu ToolBar.Cut Klipp - tmenu ToolBar.Copy Kopier - tmenu ToolBar.Paste Lim inn - tmenu ToolBar.Find Søk ... - tmenu ToolBar.FindNext Finn neste - tmenu ToolBar.FindPrev Finn forrige - tmenu ToolBar.Replace Søk og erstatt ... - if 0 " Disabled, they are in the Windows menu - tmenu ToolBar.New Nytt vindu - tmenu ToolBar.WinSplit Splitt vindu - tmenu ToolBar.WinMax Maksimal vindushøyde - tmenu ToolBar.WinMin Minimal vindushøyde - tmenu ToolBar.WinClose Lukk vindu - endif - tmenu ToolBar.LoadSesn Åpne økt - tmenu ToolBar.SaveSesn Lagre økt - tmenu ToolBar.RunScript Kjør Vim-skript - tmenu ToolBar.Make Kjør "make" - tmenu ToolBar.Shell Start skall - tmenu ToolBar.RunCtags Oppdater tag-fil - tmenu ToolBar.TagJump Hopp til tag - tmenu ToolBar.Help Hjelp! - tmenu ToolBar.FindHelp Søk i hjelpen ... - endfunction -endif - -" Dialogmeldinger - let g:menutrans_no_file = "[Uten navn]" - let g:menutrans_help_dialog = "Skriv en kommando eller ord du vil ha hjelp om:\n\nLegg til i_ i begynnelsen for inndatametoder (f.eks.: i_CTRL-X)\nLegg til c_ i begynnelsen for kommandoer som redigerer kommandolinjen (f.eks.: c_)\nLegg til ' i begynnelsen for et valgnavn (f.eks.: 'shiftwidth')" - let g:menutrans_path_dialog = "Skriv søkesti for filer.\nSkill katalognavn med komma." - let g:menutrans_tags_dialog = "Skriv navn på tagfiler.\nSkill navnene med komma." - let g:menutrans_textwidth_dialog = "Velg ny tekstbredde (0 for å forhindre formatering): " - let g:menutrans_fileformat_dialog = "Velg filformat som filen skal lagres med" - -" vim: set ts=8 sw=8 : -" vim600: set fdm=indent : diff --git a/share/vim/vim73/lang/menu_pl_pl.iso_8859-2.vim b/share/vim/vim73/lang/menu_pl_pl.iso_8859-2.vim deleted file mode 100644 index 021e1a7e..00000000 --- a/share/vim/vim73/lang/menu_pl_pl.iso_8859-2.vim +++ /dev/null @@ -1,287 +0,0 @@ -" Menu Translations: Polish -" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) -" Initial Translation: Marcin Dalecki -" Last Change: 17 May 2010 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding iso-8859-2 - -" Help menu -menutrans &Help Po&moc -menutrans &Overview &Ogólnie -menutrans &User\ Manual Podrêcznik\ &u¿ytkownika -menutrans &How-to\ links &Odno¶niki\ JTZ -menutrans &Find\.\.\. &Szukaj\.\.\. -menutrans &Credits Po&dziêkowania -menutrans Co&pying &Kopiowanie -menutrans &Sponsor/Register &Sponsorowanie/Rejestracja -menutrans O&rphans Sie&roty -menutrans &Version &Wersja -menutrans &About o\ &Programie - -" File menu -menutrans &File &Plik -menutrans &Open\.\.\.:e &Otwórz\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Otwórz\ z\ &podzia³em\.\.\.:sp -menutrans &New:enew &Nowy:enew -menutrans &Close:close &Zamknij:close -menutrans &Save:w Za&pisz:w -menutrans Save\ &As\.\.\.:sav Zapisz\ &jako\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Podziel\ na\ diff-a\ miêdzy\.\.\. -menutrans Split\ Patched\ &By\.\.\. Podziel\ ³atane\ przez\.\.\. -menutrans &Print &Drukuj -menutrans Sa&ve-Exit:wqa W&yj¶cie\ z\ zapisem:wqa -menutrans E&xit:qa &Wyj¶cie:qa -menutrans Open\ Tab\.\.\.:tabnew Otwórz\ &kartê\.\.\.:tabnew - -" Edit menu -menutrans &Edit &Edycja -menutrans &Undou &Cofniju -menutrans &Redo^R &Ponów^R -menutrans Rep&eat\. P&owtórz\. -menutrans Cu&t"+x W&ytnij"+x -menutrans &Copy"+y &Kopiuj"+y -menutrans &Paste"+gP &Wklej"+gP -menutrans Put\ &Before[p Wstaw\ p&rzed[p -menutrans Put\ &After]p Wstaw\ p&o]p -menutrans &Select\ AllggVG Z&aznacz\ ca³o¶æggVG -menutrans &Find\.\.\. &Szukaj\.\.\. -menutrans &Find/ &Szukaj/ -menutrans Find\ and\ Rep&lace\.\.\. &Zamieñ\.\.\. -menutrans Find\ and\ Rep&lace:%s &Zamieñ:%s -menutrans Find\ and\ Rep&lace &Zamieñ -menutrans Find\ and\ Rep&lace:s &Zamieñ:s -menutrans Options\.\.\. Opcje\.\.\. -menutrans Settings\ &Window Ustawienia -menutrans &Global\ Settings Ustawienia\ &globalne -menutrans Startup\ &Settings Ustawienia\ &startowe -menutrans F&ile\ Settings Ustawienia\ dla\ pliku -menutrans Toggle\ Line\ &Numbering:set\ nu! &Numerowanie\ wierszy:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Tryb\ &listowania:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Za&wijanie\ wierszy:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! £amanie\ wie&rsza:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Rozwijani&e\ tabulatorów:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! &Automatyczne\ wciêcia:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Wciêcia\ &C:set\ cin! -menutrans &Shiftwidth &Szeroko¶æ\ wciêcia -menutrans Te&xt\ Width\.\.\. D³ugo¶æ\ linii\.\.\. -menutrans &File\ Format\.\.\. &Format\ pliku\.\.\. -menutrans Soft\ &Tabstop Rozmiar\ &tabulacji -menutrans C&olor\ Scheme Zestawy\ kolorów -menutrans &Keymap Uk³ady\ klawiatury -menutrans None ¿aden -menutrans accents akcenty -menutrans hebrew hebrajski -menutrans hebrewp hebrajski\ p -menutrans russian-jcuken rosyjski-jcuken -menutrans russian-jcukenwin rosyjski-jcukenwin - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Pod¶wietlanie\ &wzorców:set\ hls! - -menutrans Toggle\ &Ignore-case:set\ ic! &Ignorowanie\ wielko¶ci:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! &Pokazywanie\ pasuj±cych:set\ sm! - -menutrans &Context\ lines Wiersze\ &kontekstowe -menutrans &Virtual\ Edit Edycja\ &wirtualna - -menutrans Never Nigdy -menutrans Block\ Selection Zaznaczanie\ blokowe -menutrans Insert\ mode Tryb\ wprowadzania -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Tryb\ zg&odno¶ci\ z\ Vi:set\ cp! -menutrans Block\ and\ Insert Blokowe\ i\ wprowadzanie -menutrans Always Zawsze - -menutrans Toggle\ Insert\ &Mode:set\ im! Tryb\ wprowadzania:set\ im! -menutrans Search\ &Path\.\.\. Scie¿ka\ poszukiwania\.\.\. -menutrans Ta&g\ Files\.\.\. Pliki\ tagów\.\.\. - - -" -" GUI options -menutrans Toggle\ &Toolbar Pasek\ narzêdzi -menutrans Toggle\ &Bottom\ Scrollbar Dolny\ przewijacz -menutrans Toggle\ &Left\ Scrollbar &Lewy\ przewijacz -menutrans Toggle\ &Right\ Scrollbar P&rawy\ przewijacz - -" Programming menu -menutrans &Tools &Narzêdzia -menutrans &Jump\ to\ this\ tagg^] &Skocz\ do\ tagag^] -menutrans Jump\ &back^T Skok\ w\ &ty³^T -menutrans Build\ &Tags\ File &Twórz\ plik\ tagów -" Spelling -menutrans &Spelling Pi&sownia -menutrans &Spell\ Check\ On W³±cz -menutrans Spell\ Check\ &Off Wy³±cz -menutrans To\ &Next\ error]s Do\ &nastêpnego\ b³êdu]s -menutrans To\ &Previous\ error[s Do\ &poprzedniego\ b³êdu[s -menutrans Suggest\ &Correctionsz= Sugestie\ poprawekz= -menutrans &Repeat\ correction:spellrepall Powtór&z\ poprawkê:spellrepall -menutrans Set\ language\ to\ "en" Ustaw\ jêzyk\ na\ "en" -menutrans Set\ language\ to\ "en_au" Ustaw\ jêzyk\ na\ "en_au" -menutrans Set\ language\ to\ "en_ca" Ustaw\ jêzyk\ na\ "en_ca" -menutrans Set\ language\ to\ "en_gb" Ustaw\ jêzyk\ na\ "en_gb" -menutrans Set\ language\ to\ "en_nz" Ustaw\ jêzyk\ na\ "en_nz" -menutrans Set\ language\ to\ "en_us" Ustaw\ jêzyk\ na\ "en_us" -menutrans Set\ language\ to\ "pl" Ustaw\ jêzyk\ na\ "pl" -menutrans &Find\ More\ Languages &Znajd¼\ wiêcej\ jêzyków - -" Folding -menutrans &Folding &Zwijanie -menutrans &Enable/Disable\ foldszi &Zwiñ/rozwiñzi -menutrans &View\ Cursor\ Linezv &Linia\ kursorazv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Tylko\ linia\ kursorazMzx -menutrans C&lose\ more\ foldszm Zwiñ\ wiêcejzm -menutrans &Close\ all\ foldszM Z&wiñ\ wszystkiezM -menutrans &Open\ all\ foldszR Rozwiñ\ wszystkiezR -menutrans O&pen\ more\ foldszr R&ozwiñ\ wiêcejzr - -menutrans Create\ &Foldzf T&wórz\ zawiniêciezf -menutrans &Delete\ Foldzd U&suñ\ zawiniêciezd -menutrans Delete\ &All\ FoldszD &Usuñ\ wszystkie\ zawiniêciazD -menutrans Fold\ column\ &width Szeroko¶æ\ kolumny\ za&winiêæ -menutrans Fold\ Met&hod Me&toda\ zawijania -menutrans M&anual &Rêcznie -menutrans I&ndent W&ciêcie -menutrans E&xpression W&yra¿enie -menutrans S&yntax S&k³adnia -menutrans Ma&rker Zn&acznik - -" Diff -menutrans &Update &Od¶wie¿ -menutrans &Get\ Block &Pobierz\ blok -menutrans &Put\ Block &Wstaw\ blok - -" Make and stuff... -menutrans &Make:make M&ake:make -menutrans &List\ Errors:cl &Poka¿\ b³êdy:cl -menutrans L&ist\ Messages:cl! W&ylicz\ powiadomienia:cl! -menutrans &Next\ Error:cn &Nastêpny\ b³±d:cn -menutrans &Previous\ Error:cp &Poprzedni\ b³±d:cp -menutrans &Older\ List:cold &Starsza\ lista:cold -menutrans N&ewer\ List:cnew N&owsza\ lista:cnew -menutrans Error\ &Window Okno\ b³êdó&w -menutrans &Update:cwin Akt&ualizuj:cwin -menutrans &Close:cclose &Zamknij:cclose -menutrans &Open:copen &Otwórz:copen - -menutrans Se&T\ Compiler U&staw\ kompilator -menutrans &Convert\ to\ HEX:%!xxd Kody\ szesnastkowe:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Zwyk³y\ tekst:%!xxd\ -r - -" Names for buffer menu. -menutrans &Buffers &Bufory -menutrans &Refresh\ menu &Od¶wie¿ -menutrans &Delete &Skasuj -menutrans &Alternate &Zmieñ -menutrans &Next &Nastêpny -menutrans &Previous &Poprzedni -menutrans [No\ File] [Brak\ Pliku] - -" Window menu -menutrans &Window &Widoki -menutrans &New^Wn &Nowy^Wn -menutrans S&plit^Ws Po&dziel^Ws -menutrans Sp&lit\ To\ #^W^^ P&odziel\ na\ #^W^^ -menutrans Split\ &Vertically^Wv Podziel\ pionowo^Wv -menutrans Split\ File\ E&xplorer Otwórz\ mened¿er\ plików - -menutrans &Close^Wc &Zamknij^Wc -menutrans Close\ &Other(s)^Wo Zamknij\ &inne^Wo -menutrans Ne&xt^Ww &Nastêpny^Ww -menutrans P&revious^WW &Poprzedni^WW -menutrans &Equal\ Size^W= &Wyrównaj\ wysoko¶ci^W= -menutrans &Max\ Height^W_ Z&maksymalizuj\ wysoko¶æ^W_ -menutrans M&in\ Height^W1_ Zminim&alizuj\ wysoko¶æ^W1_ -menutrans Max\ Width^W\| Maksymalna\ szeroko¶æ^W\| -menutrans Min\ Width^W1\| Minimalna\ szeroko¶æ^W1\| -menutrans Max\ &Width^W\| Zmaksymalizuj\ szeroko¶æ^W\| -menutrans Min\ Widt&h^W1\| Zminimalizuj\ szeroko¶æ^W1\| -menutrans Move\ &To &Id¼\ do -menutrans &Top^WK &Góra^WK -menutrans &Bottom^WJ &Dó³^WJ -menutrans &Left\ side^WH &Lewa\ strona^WH -menutrans &Right\ side^WL &Prawa\ strona^WL -menutrans Rotate\ &Up^WR Obróæ\ w\ &górê^WR -menutrans Rotate\ &Down^Wr Obróæ\ w\ &dó³^Wr -menutrans Split\ &Vertically^Wv &Podziel\ w\ poziomie^Wv -menutrans Select\ Fo&nt\.\.\. Wybierz\ &czcionkê\.\.\. - -" The popup menu -menutrans &Undo &Cofnij -menutrans Cu&t W&ytnij -menutrans &Copy &Kopiuj -menutrans &Paste &Wklej -menutrans &Delete &Skasuj -menutrans Select\ Blockwise Zaznacz\ &blok -menutrans Select\ &Sentence Zaznacz\ &zdanie -menutrans Select\ Pa&ragraph Zaznacz\ aka&pit -menutrans Select\ &Word Zaznacz\ &s³owo -menutrans Select\ &Line Zaznacz\ w&iersz -menutrans Select\ &Block Zaznacz\ &blok -menutrans Select\ &All Zaznacz\ c&a³o¶æ -menutrans Input\ &Methods Wprowadza&nie - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Otwórz plik - tmenu ToolBar.Save Zapisz bie¿±cy plik - tmenu ToolBar.SaveAll Zapisz wszystkie pliki - tmenu ToolBar.Print Drukuj - tmenu ToolBar.Undo Cofnij - tmenu ToolBar.Redo Ponów - tmenu ToolBar.Cut Wytnij - tmenu ToolBar.Copy Skopiuj - tmenu ToolBar.Paste Wklej - tmenu ToolBar.Find Szukaj... - tmenu ToolBar.FindNext Szukaj nastêpnego - tmenu ToolBar.FindPrev Szukaj poprzedniego - tmenu ToolBar.Replace Szukaj i zamieniaj... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nowy widok - tmenu ToolBar.WinSplit Podziel widok - tmenu ToolBar.WinMax Zmaksymalizuj widok - tmenu ToolBar.WinMin Zminimalizuj widok - tmenu ToolBar.WinClose Zamknij widok - endif - tmenu ToolBar.LoadSesn Za³aduj sesjê - tmenu ToolBar.SaveSesn Zachowaj bie¿±c± sesjê - tmenu ToolBar.RunScript Uruchom skrypt Vima - tmenu ToolBar.Make Wykonaj bie¿±cy projekt - tmenu ToolBar.Shell Otwórz pow³okê - tmenu ToolBar.RunCtags Twórz tagi w bie¿±cym katalogu - tmenu ToolBar.TagJump Skok do taga pod kursorem - tmenu ToolBar.Help Pomoc Vima - tmenu ToolBar.FindHelp Przeszukuj pomoc Vim-a - endfun -endif - -" Syntax menu -menutrans &Syntax &Sk³adnia -menutrans &Show\ filetypes\ in\ menu Poka¿\ typy\ &plików\ w\ menu -menutrans Set\ '&syntax'\ only Ustaw\ tylko\ '&syntax' -menutrans Set\ '&filetype'\ too Ustaw\ równie¿\ '&filetype' -menutrans &Off &Wy³±cz -menutrans &Manual &Rêcznie -menutrans A&utomatic A&utomatyczne -menutrans on/off\ for\ &This\ file w³±cz/w&y³±cz\ dla\ pliku -menutrans Co&lor\ test Test\ &kolorów -menutrans &Highlight\ test &Test\ pod¶wietlania -menutrans &Convert\ to\ HTML Przetwórz\ na\ &HTML - -" dialog texts -let menutrans_no_file = "[Brak pliku]" -let menutrans_help_dialog = "Wprowad¼ komendê lub s³owo, aby otrzymaæ pomoc o:\n\nPrzedrostek i_ oznacza komendê trybu Wprowadzania (np. i_CTRL-X)\nPrzedrostek c_ oznacza komendê edycji wiersza komend (np. c_)\nPrzedrostek ' oznacza nazwê opcji (np. 'shiftwidth')" -let g:menutrans_path_dialog = "Wprowad¼ ¶cie¿kê poszukiwania plików.\nProszê rozdzielaæ nazwy katalogów przecinkiem." -let g:menutrans_tags_dialog = "Podaj nazwy plików tagów.\nProszê rozdzielaæ nazwy przecinkiem." -let g:menutrans_textwidth_dialog = "Wprowad¼ now± szeroko¶æ tekstu (0 wy³±cza przewijanie): " -let g:menutrans_fileformat_dialog = "Wybierz format w którym ten plik ma byæ zapisany" -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Anuluj" diff --git a/share/vim/vim73/lang/menu_pl_pl.utf-8.vim b/share/vim/vim73/lang/menu_pl_pl.utf-8.vim deleted file mode 100644 index 1d347dcd..00000000 --- a/share/vim/vim73/lang/menu_pl_pl.utf-8.vim +++ /dev/null @@ -1,287 +0,0 @@ -" Menu Translations: Polish -" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) -" Initial Translation: Marcin Dalecki -" Last Change: 17 May 2010 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding utf-8 - -" Help menu -menutrans &Help Po&moc -menutrans &Overview &Ogólnie -menutrans &User\ Manual Podręcznik\ &użytkownika -menutrans &How-to\ links &Odnośniki\ JTZ -menutrans &Find\.\.\. &Szukaj\.\.\. -menutrans &Credits Po&dziękowania -menutrans Co&pying &Kopiowanie -menutrans &Sponsor/Register &Sponsorowanie/Rejestracja -menutrans O&rphans Sie&roty -menutrans &Version &Wersja -menutrans &About o\ &Programie - -" File menu -menutrans &File &Plik -menutrans &Open\.\.\.:e &Otwórz\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Otwórz\ z\ &podziałem\.\.\.:sp -menutrans &New:enew &Nowy:enew -menutrans &Close:close &Zamknij:close -menutrans &Save:w Za&pisz:w -menutrans Save\ &As\.\.\.:sav Zapisz\ &jako\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Podziel\ na\ diff-a\ między\.\.\. -menutrans Split\ Patched\ &By\.\.\. Podziel\ łatane\ przez\.\.\. -menutrans &Print &Drukuj -menutrans Sa&ve-Exit:wqa W&yjście\ z\ zapisem:wqa -menutrans E&xit:qa &Wyjście:qa -menutrans Open\ Tab\.\.\.:tabnew Otwórz\ &kartę\.\.\.:tabnew - -" Edit menu -menutrans &Edit &Edycja -menutrans &Undou &Cofniju -menutrans &Redo^R &Ponów^R -menutrans Rep&eat\. P&owtórz\. -menutrans Cu&t"+x W&ytnij"+x -menutrans &Copy"+y &Kopiuj"+y -menutrans &Paste"+gP &Wklej"+gP -menutrans Put\ &Before[p Wstaw\ p&rzed[p -menutrans Put\ &After]p Wstaw\ p&o]p -menutrans &Select\ AllggVG Z&aznacz\ całośćggVG -menutrans &Find\.\.\. &Szukaj\.\.\. -menutrans &Find/ &Szukaj/ -menutrans Find\ and\ Rep&lace\.\.\. &Zamień\.\.\. -menutrans Find\ and\ Rep&lace:%s &Zamień:%s -menutrans Find\ and\ Rep&lace &Zamień -menutrans Find\ and\ Rep&lace:s &Zamień:s -menutrans Options\.\.\. Opcje\.\.\. -menutrans Settings\ &Window Ustawienia -menutrans &Global\ Settings Ustawienia\ &globalne -menutrans Startup\ &Settings Ustawienia\ &startowe -menutrans F&ile\ Settings Ustawienia\ dla\ pliku -menutrans Toggle\ Line\ &Numbering:set\ nu! &Numerowanie\ wierszy:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Tryb\ &listowania:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Za&wijanie\ wierszy:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Łamanie\ wie&rsza:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Rozwijani&e\ tabulatorów:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! &Automatyczne\ wcięcia:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Wcięcia\ &C:set\ cin! -menutrans &Shiftwidth &Szerokość\ wcięcia -menutrans Te&xt\ Width\.\.\. Długość\ linii\.\.\. -menutrans &File\ Format\.\.\. &Format\ pliku\.\.\. -menutrans Soft\ &Tabstop Rozmiar\ &tabulacji -menutrans C&olor\ Scheme Zestawy\ kolorów -menutrans &Keymap Układy\ klawiatury -menutrans None żaden -menutrans accents akcenty -menutrans hebrew hebrajski -menutrans hebrewp hebrajski\ p -menutrans russian-jcuken rosyjski-jcuken -menutrans russian-jcukenwin rosyjski-jcukenwin - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Podświetlanie\ &wzorców:set\ hls! - -menutrans Toggle\ &Ignore-case:set\ ic! &Ignorowanie\ wielkości:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! &Pokazywanie\ pasujących:set\ sm! - -menutrans &Context\ lines Wiersze\ &kontekstowe -menutrans &Virtual\ Edit Edycja\ &wirtualna - -menutrans Never Nigdy -menutrans Block\ Selection Zaznaczanie\ blokowe -menutrans Insert\ mode Tryb\ wprowadzania -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Tryb\ zg&odności\ z\ Vi:set\ cp! -menutrans Block\ and\ Insert Blokowe\ i\ wprowadzanie -menutrans Always Zawsze - -menutrans Toggle\ Insert\ &Mode:set\ im! Tryb\ wprowadzania:set\ im! -menutrans Search\ &Path\.\.\. Scieżka\ poszukiwania\.\.\. -menutrans Ta&g\ Files\.\.\. Pliki\ tagów\.\.\. - - -" -" GUI options -menutrans Toggle\ &Toolbar Pasek\ narzędzi -menutrans Toggle\ &Bottom\ Scrollbar Dolny\ przewijacz -menutrans Toggle\ &Left\ Scrollbar &Lewy\ przewijacz -menutrans Toggle\ &Right\ Scrollbar P&rawy\ przewijacz - -" Programming menu -menutrans &Tools &Narzędzia -menutrans &Jump\ to\ this\ tagg^] &Skocz\ do\ tagag^] -menutrans Jump\ &back^T Skok\ w\ &tył^T -menutrans Build\ &Tags\ File &Twórz\ plik\ tagów -" Spelling -menutrans &Spelling Pi&sownia -menutrans &Spell\ Check\ On Włącz -menutrans Spell\ Check\ &Off Wyłącz -menutrans To\ &Next\ error]s Do\ &następnego\ błędu]s -menutrans To\ &Previous\ error[s Do\ &poprzedniego\ błędu[s -menutrans Suggest\ &Correctionsz= Sugestie\ poprawekz= -menutrans &Repeat\ correction:spellrepall Powtór&z\ poprawkę:spellrepall -menutrans Set\ language\ to\ "en" Ustaw\ język\ na\ "en" -menutrans Set\ language\ to\ "en_au" Ustaw\ język\ na\ "en_au" -menutrans Set\ language\ to\ "en_ca" Ustaw\ język\ na\ "en_ca" -menutrans Set\ language\ to\ "en_gb" Ustaw\ język\ na\ "en_gb" -menutrans Set\ language\ to\ "en_nz" Ustaw\ język\ na\ "en_nz" -menutrans Set\ language\ to\ "en_us" Ustaw\ język\ na\ "en_us" -menutrans Set\ language\ to\ "pl" Ustaw\ język\ na\ "pl" -menutrans &Find\ More\ Languages &Znajdź\ więcej\ języków - -" Folding -menutrans &Folding &Zwijanie -menutrans &Enable/Disable\ foldszi &Zwiń/rozwińzi -menutrans &View\ Cursor\ Linezv &Linia\ kursorazv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Tylko\ linia\ kursorazMzx -menutrans C&lose\ more\ foldszm Zwiń\ więcejzm -menutrans &Close\ all\ foldszM Z&wiń\ wszystkiezM -menutrans &Open\ all\ foldszR Rozwiń\ wszystkiezR -menutrans O&pen\ more\ foldszr R&ozwiń\ więcejzr - -menutrans Create\ &Foldzf T&wórz\ zawinięciezf -menutrans &Delete\ Foldzd U&suń\ zawinięciezd -menutrans Delete\ &All\ FoldszD &Usuń\ wszystkie\ zawinięciazD -menutrans Fold\ column\ &width Szerokość\ kolumny\ za&winięć -menutrans Fold\ Met&hod Me&toda\ zawijania -menutrans M&anual &Ręcznie -menutrans I&ndent W&cięcie -menutrans E&xpression W&yrażenie -menutrans S&yntax S&kładnia -menutrans Ma&rker Zn&acznik - -" Diff -menutrans &Update &Odśwież -menutrans &Get\ Block &Pobierz\ blok -menutrans &Put\ Block &Wstaw\ blok - -" Make and stuff... -menutrans &Make:make M&ake:make -menutrans &List\ Errors:cl &Pokaż\ błędy:cl -menutrans L&ist\ Messages:cl! W&ylicz\ powiadomienia:cl! -menutrans &Next\ Error:cn &Następny\ błąd:cn -menutrans &Previous\ Error:cp &Poprzedni\ błąd:cp -menutrans &Older\ List:cold &Starsza\ lista:cold -menutrans N&ewer\ List:cnew N&owsza\ lista:cnew -menutrans Error\ &Window Okno\ błędó&w -menutrans &Update:cwin Akt&ualizuj:cwin -menutrans &Close:cclose &Zamknij:cclose -menutrans &Open:copen &Otwórz:copen - -menutrans Se&T\ Compiler U&staw\ kompilator -menutrans &Convert\ to\ HEX:%!xxd Kody\ szesnastkowe:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Zwykły\ tekst:%!xxd\ -r - -" Names for buffer menu. -menutrans &Buffers &Bufory -menutrans &Refresh\ menu &Odśwież -menutrans &Delete &Skasuj -menutrans &Alternate &Zmień -menutrans &Next &Następny -menutrans &Previous &Poprzedni -menutrans [No\ File] [Brak\ Pliku] - -" Window menu -menutrans &Window &Widoki -menutrans &New^Wn &Nowy^Wn -menutrans S&plit^Ws Po&dziel^Ws -menutrans Sp&lit\ To\ #^W^^ P&odziel\ na\ #^W^^ -menutrans Split\ &Vertically^Wv Podziel\ pionowo^Wv -menutrans Split\ File\ E&xplorer Otwórz\ menedżer\ plików - -menutrans &Close^Wc &Zamknij^Wc -menutrans Close\ &Other(s)^Wo Zamknij\ &inne^Wo -menutrans Ne&xt^Ww &Następny^Ww -menutrans P&revious^WW &Poprzedni^WW -menutrans &Equal\ Size^W= &Wyrównaj\ wysokości^W= -menutrans &Max\ Height^W_ Z&maksymalizuj\ wysokość^W_ -menutrans M&in\ Height^W1_ Zminim&alizuj\ wysokość^W1_ -menutrans Max\ Width^W\| Maksymalna\ szerokość^W\| -menutrans Min\ Width^W1\| Minimalna\ szerokość^W1\| -menutrans Max\ &Width^W\| Zmaksymalizuj\ szerokość^W\| -menutrans Min\ Widt&h^W1\| Zminimalizuj\ szerokość^W1\| -menutrans Move\ &To &Idź\ do -menutrans &Top^WK &Góra^WK -menutrans &Bottom^WJ &Dół^WJ -menutrans &Left\ side^WH &Lewa\ strona^WH -menutrans &Right\ side^WL &Prawa\ strona^WL -menutrans Rotate\ &Up^WR Obróć\ w\ &górę^WR -menutrans Rotate\ &Down^Wr Obróć\ w\ &dół^Wr -menutrans Split\ &Vertically^Wv &Podziel\ w\ poziomie^Wv -menutrans Select\ Fo&nt\.\.\. Wybierz\ &czcionkę\.\.\. - -" The popup menu -menutrans &Undo &Cofnij -menutrans Cu&t W&ytnij -menutrans &Copy &Kopiuj -menutrans &Paste &Wklej -menutrans &Delete &Skasuj -menutrans Select\ Blockwise Zaznacz\ &blok -menutrans Select\ &Sentence Zaznacz\ &zdanie -menutrans Select\ Pa&ragraph Zaznacz\ aka&pit -menutrans Select\ &Word Zaznacz\ &słowo -menutrans Select\ &Line Zaznacz\ w&iersz -menutrans Select\ &Block Zaznacz\ &blok -menutrans Select\ &All Zaznacz\ c&ałość -menutrans Input\ &Methods Wprowadza&nie - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Otwórz plik - tmenu ToolBar.Save Zapisz bieżący plik - tmenu ToolBar.SaveAll Zapisz wszystkie pliki - tmenu ToolBar.Print Drukuj - tmenu ToolBar.Undo Cofnij - tmenu ToolBar.Redo Ponów - tmenu ToolBar.Cut Wytnij - tmenu ToolBar.Copy Skopiuj - tmenu ToolBar.Paste Wklej - tmenu ToolBar.Find Szukaj... - tmenu ToolBar.FindNext Szukaj następnego - tmenu ToolBar.FindPrev Szukaj poprzedniego - tmenu ToolBar.Replace Szukaj i zamieniaj... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nowy widok - tmenu ToolBar.WinSplit Podziel widok - tmenu ToolBar.WinMax Zmaksymalizuj widok - tmenu ToolBar.WinMin Zminimalizuj widok - tmenu ToolBar.WinClose Zamknij widok - endif - tmenu ToolBar.LoadSesn Załaduj sesję - tmenu ToolBar.SaveSesn Zachowaj bieżącą sesję - tmenu ToolBar.RunScript Uruchom skrypt Vima - tmenu ToolBar.Make Wykonaj bieżący projekt - tmenu ToolBar.Shell Otwórz powłokę - tmenu ToolBar.RunCtags Twórz tagi w bieżącym katalogu - tmenu ToolBar.TagJump Skok do taga pod kursorem - tmenu ToolBar.Help Pomoc Vima - tmenu ToolBar.FindHelp Przeszukuj pomoc Vim-a - endfun -endif - -" Syntax menu -menutrans &Syntax &Składnia -menutrans &Show\ filetypes\ in\ menu Pokaż\ typy\ &plików\ w\ menu -menutrans Set\ '&syntax'\ only Ustaw\ tylko\ '&syntax' -menutrans Set\ '&filetype'\ too Ustaw\ również\ '&filetype' -menutrans &Off &Wyłącz -menutrans &Manual &Ręcznie -menutrans A&utomatic A&utomatyczne -menutrans on/off\ for\ &This\ file włącz/w&yłącz\ dla\ pliku -menutrans Co&lor\ test Test\ &kolorów -menutrans &Highlight\ test &Test\ podświetlania -menutrans &Convert\ to\ HTML Przetwórz\ na\ &HTML - -" dialog texts -let menutrans_no_file = "[Brak pliku]" -let menutrans_help_dialog = "Wprowadź komendę lub słowo, aby otrzymać pomoc o:\n\nPrzedrostek i_ oznacza komendę trybu Wprowadzania (np. i_CTRL-X)\nPrzedrostek c_ oznacza komendę edycji wiersza komend (np. c_)\nPrzedrostek ' oznacza nazwę opcji (np. 'shiftwidth')" -let g:menutrans_path_dialog = "Wprowadź ścieżkę poszukiwania plików.\nProszę rozdzielać nazwy katalogów przecinkiem." -let g:menutrans_tags_dialog = "Podaj nazwy plików tagów.\nProszę rozdzielać nazwy przecinkiem." -let g:menutrans_textwidth_dialog = "Wprowadź nową szerokość tekstu (0 wyłącza przewijanie): " -let g:menutrans_fileformat_dialog = "Wybierz format w którym ten plik ma być zapisany" -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Anuluj" diff --git a/share/vim/vim73/lang/menu_polish_poland.1250.vim b/share/vim/vim73/lang/menu_polish_poland.1250.vim deleted file mode 100644 index 398b18da..00000000 --- a/share/vim/vim73/lang/menu_polish_poland.1250.vim +++ /dev/null @@ -1,287 +0,0 @@ -" Menu Translations: Polish -" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) -" Initial Translation: Marcin Dalecki -" Last Change: 17 May 2010 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding cp1250 - -" Help menu -menutrans &Help Po&moc -menutrans &Overview &Ogólnie -menutrans &User\ Manual Podrêcznik\ &u¿ytkownika -menutrans &How-to\ links &Odnoœniki\ JTZ -menutrans &Find\.\.\. &Szukaj\.\.\. -menutrans &Credits Po&dziêkowania -menutrans Co&pying &Kopiowanie -menutrans &Sponsor/Register &Sponsorowanie/Rejestracja -menutrans O&rphans Sie&roty -menutrans &Version &Wersja -menutrans &About o\ &Programie - -" File menu -menutrans &File &Plik -menutrans &Open\.\.\.:e &Otwórz\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Otwórz\ z\ &podzia³em\.\.\.:sp -menutrans &New:enew &Nowy:enew -menutrans &Close:close &Zamknij:close -menutrans &Save:w Za&pisz:w -menutrans Save\ &As\.\.\.:sav Zapisz\ &jako\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Podziel\ na\ diff-a\ miêdzy\.\.\. -menutrans Split\ Patched\ &By\.\.\. Podziel\ ³atane\ przez\.\.\. -menutrans &Print &Drukuj -menutrans Sa&ve-Exit:wqa W&yjœcie\ z\ zapisem:wqa -menutrans E&xit:qa &Wyjœcie:qa -menutrans Open\ Tab\.\.\.:tabnew Otwórz\ &kartê\.\.\.:tabnew - -" Edit menu -menutrans &Edit &Edycja -menutrans &Undou &Cofniju -menutrans &Redo^R &Ponów^R -menutrans Rep&eat\. P&owtórz\. -menutrans Cu&t"+x W&ytnij"+x -menutrans &Copy"+y &Kopiuj"+y -menutrans &Paste"+gP &Wklej"+gP -menutrans Put\ &Before[p Wstaw\ p&rzed[p -menutrans Put\ &After]p Wstaw\ p&o]p -menutrans &Select\ AllggVG Z&aznacz\ ca³oœæggVG -menutrans &Find\.\.\. &Szukaj\.\.\. -menutrans &Find/ &Szukaj/ -menutrans Find\ and\ Rep&lace\.\.\. &Zamieñ\.\.\. -menutrans Find\ and\ Rep&lace:%s &Zamieñ:%s -menutrans Find\ and\ Rep&lace &Zamieñ -menutrans Find\ and\ Rep&lace:s &Zamieñ:s -menutrans Options\.\.\. Opcje\.\.\. -menutrans Settings\ &Window Ustawienia -menutrans &Global\ Settings Ustawienia\ &globalne -menutrans Startup\ &Settings Ustawienia\ &startowe -menutrans F&ile\ Settings Ustawienia\ dla\ pliku -menutrans Toggle\ Line\ &Numbering:set\ nu! &Numerowanie\ wierszy:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Tryb\ &listowania:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Za&wijanie\ wierszy:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! £amanie\ wie&rsza:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Rozwijani&e\ tabulatorów:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! &Automatyczne\ wciêcia:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Wciêcia\ &C:set\ cin! -menutrans &Shiftwidth &Szerokoœæ\ wciêcia -menutrans Te&xt\ Width\.\.\. D³ugoœæ\ linii\.\.\. -menutrans &File\ Format\.\.\. &Format\ pliku\.\.\. -menutrans Soft\ &Tabstop Rozmiar\ &tabulacji -menutrans C&olor\ Scheme Zestawy\ kolorów -menutrans &Keymap Uk³ady\ klawiatury -menutrans None ¿aden -menutrans accents akcenty -menutrans hebrew hebrajski -menutrans hebrewp hebrajski\ p -menutrans russian-jcuken rosyjski-jcuken -menutrans russian-jcukenwin rosyjski-jcukenwin - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Podœwietlanie\ &wzorców:set\ hls! - -menutrans Toggle\ &Ignore-case:set\ ic! &Ignorowanie\ wielkoœci:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! &Pokazywanie\ pasuj¹cych:set\ sm! - -menutrans &Context\ lines Wiersze\ &kontekstowe -menutrans &Virtual\ Edit Edycja\ &wirtualna - -menutrans Never Nigdy -menutrans Block\ Selection Zaznaczanie\ blokowe -menutrans Insert\ mode Tryb\ wprowadzania -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Tryb\ zg&odnoœci\ z\ Vi:set\ cp! -menutrans Block\ and\ Insert Blokowe\ i\ wprowadzanie -menutrans Always Zawsze - -menutrans Toggle\ Insert\ &Mode:set\ im! Tryb\ wprowadzania:set\ im! -menutrans Search\ &Path\.\.\. Scie¿ka\ poszukiwania\.\.\. -menutrans Ta&g\ Files\.\.\. Pliki\ tagów\.\.\. - - -" -" GUI options -menutrans Toggle\ &Toolbar Pasek\ narzêdzi -menutrans Toggle\ &Bottom\ Scrollbar Dolny\ przewijacz -menutrans Toggle\ &Left\ Scrollbar &Lewy\ przewijacz -menutrans Toggle\ &Right\ Scrollbar P&rawy\ przewijacz - -" Programming menu -menutrans &Tools &Narzêdzia -menutrans &Jump\ to\ this\ tagg^] &Skocz\ do\ tagag^] -menutrans Jump\ &back^T Skok\ w\ &ty³^T -menutrans Build\ &Tags\ File &Twórz\ plik\ tagów -" Spelling -menutrans &Spelling Pi&sownia -menutrans &Spell\ Check\ On W³¹cz -menutrans Spell\ Check\ &Off Wy³¹cz -menutrans To\ &Next\ error]s Do\ &nastêpnego\ b³êdu]s -menutrans To\ &Previous\ error[s Do\ &poprzedniego\ b³êdu[s -menutrans Suggest\ &Correctionsz= Sugestie\ poprawekz= -menutrans &Repeat\ correction:spellrepall Powtór&z\ poprawkê:spellrepall -menutrans Set\ language\ to\ "en" Ustaw\ jêzyk\ na\ "en" -menutrans Set\ language\ to\ "en_au" Ustaw\ jêzyk\ na\ "en_au" -menutrans Set\ language\ to\ "en_ca" Ustaw\ jêzyk\ na\ "en_ca" -menutrans Set\ language\ to\ "en_gb" Ustaw\ jêzyk\ na\ "en_gb" -menutrans Set\ language\ to\ "en_nz" Ustaw\ jêzyk\ na\ "en_nz" -menutrans Set\ language\ to\ "en_us" Ustaw\ jêzyk\ na\ "en_us" -menutrans Set\ language\ to\ "pl" Ustaw\ jêzyk\ na\ "pl" -menutrans &Find\ More\ Languages &ZnajdŸ\ wiêcej\ jêzyków - -" Folding -menutrans &Folding &Zwijanie -menutrans &Enable/Disable\ foldszi &Zwiñ/rozwiñzi -menutrans &View\ Cursor\ Linezv &Linia\ kursorazv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Tylko\ linia\ kursorazMzx -menutrans C&lose\ more\ foldszm Zwiñ\ wiêcejzm -menutrans &Close\ all\ foldszM Z&wiñ\ wszystkiezM -menutrans &Open\ all\ foldszR Rozwiñ\ wszystkiezR -menutrans O&pen\ more\ foldszr R&ozwiñ\ wiêcejzr - -menutrans Create\ &Foldzf T&wórz\ zawiniêciezf -menutrans &Delete\ Foldzd U&suñ\ zawiniêciezd -menutrans Delete\ &All\ FoldszD &Usuñ\ wszystkie\ zawiniêciazD -menutrans Fold\ column\ &width Szerokoœæ\ kolumny\ za&winiêæ -menutrans Fold\ Met&hod Me&toda\ zawijania -menutrans M&anual &Rêcznie -menutrans I&ndent W&ciêcie -menutrans E&xpression W&yra¿enie -menutrans S&yntax S&k³adnia -menutrans Ma&rker Zn&acznik - -" Diff -menutrans &Update &Odœwie¿ -menutrans &Get\ Block &Pobierz\ blok -menutrans &Put\ Block &Wstaw\ blok - -" Make and stuff... -menutrans &Make:make M&ake:make -menutrans &List\ Errors:cl &Poka¿\ b³êdy:cl -menutrans L&ist\ Messages:cl! W&ylicz\ powiadomienia:cl! -menutrans &Next\ Error:cn &Nastêpny\ b³¹d:cn -menutrans &Previous\ Error:cp &Poprzedni\ b³¹d:cp -menutrans &Older\ List:cold &Starsza\ lista:cold -menutrans N&ewer\ List:cnew N&owsza\ lista:cnew -menutrans Error\ &Window Okno\ b³êdó&w -menutrans &Update:cwin Akt&ualizuj:cwin -menutrans &Close:cclose &Zamknij:cclose -menutrans &Open:copen &Otwórz:copen - -menutrans Se&T\ Compiler U&staw\ kompilator -menutrans &Convert\ to\ HEX:%!xxd Kody\ szesnastkowe:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Zwyk³y\ tekst:%!xxd\ -r - -" Names for buffer menu. -menutrans &Buffers &Bufory -menutrans &Refresh\ menu &Odœwie¿ -menutrans &Delete &Skasuj -menutrans &Alternate &Zmieñ -menutrans &Next &Nastêpny -menutrans &Previous &Poprzedni -menutrans [No\ File] [Brak\ Pliku] - -" Window menu -menutrans &Window &Widoki -menutrans &New^Wn &Nowy^Wn -menutrans S&plit^Ws Po&dziel^Ws -menutrans Sp&lit\ To\ #^W^^ P&odziel\ na\ #^W^^ -menutrans Split\ &Vertically^Wv Podziel\ pionowo^Wv -menutrans Split\ File\ E&xplorer Otwórz\ mened¿er\ plików - -menutrans &Close^Wc &Zamknij^Wc -menutrans Close\ &Other(s)^Wo Zamknij\ &inne^Wo -menutrans Ne&xt^Ww &Nastêpny^Ww -menutrans P&revious^WW &Poprzedni^WW -menutrans &Equal\ Size^W= &Wyrównaj\ wysokoœci^W= -menutrans &Max\ Height^W_ Z&maksymalizuj\ wysokoœæ^W_ -menutrans M&in\ Height^W1_ Zminim&alizuj\ wysokoœæ^W1_ -menutrans Max\ Width^W\| Maksymalna\ szerokoœæ^W\| -menutrans Min\ Width^W1\| Minimalna\ szerokoœæ^W1\| -menutrans Max\ &Width^W\| Zmaksymalizuj\ szerokoœæ^W\| -menutrans Min\ Widt&h^W1\| Zminimalizuj\ szerokoœæ^W1\| -menutrans Move\ &To &IdŸ\ do -menutrans &Top^WK &Góra^WK -menutrans &Bottom^WJ &Dó³^WJ -menutrans &Left\ side^WH &Lewa\ strona^WH -menutrans &Right\ side^WL &Prawa\ strona^WL -menutrans Rotate\ &Up^WR Obróæ\ w\ &górê^WR -menutrans Rotate\ &Down^Wr Obróæ\ w\ &dó³^Wr -menutrans Split\ &Vertically^Wv &Podziel\ w\ poziomie^Wv -menutrans Select\ Fo&nt\.\.\. Wybierz\ &czcionkê\.\.\. - -" The popup menu -menutrans &Undo &Cofnij -menutrans Cu&t W&ytnij -menutrans &Copy &Kopiuj -menutrans &Paste &Wklej -menutrans &Delete &Skasuj -menutrans Select\ Blockwise Zaznacz\ &blok -menutrans Select\ &Sentence Zaznacz\ &zdanie -menutrans Select\ Pa&ragraph Zaznacz\ aka&pit -menutrans Select\ &Word Zaznacz\ &s³owo -menutrans Select\ &Line Zaznacz\ w&iersz -menutrans Select\ &Block Zaznacz\ &blok -menutrans Select\ &All Zaznacz\ c&a³oœæ -menutrans Input\ &Methods Wprowadza&nie - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Otwórz plik - tmenu ToolBar.Save Zapisz bie¿¹cy plik - tmenu ToolBar.SaveAll Zapisz wszystkie pliki - tmenu ToolBar.Print Drukuj - tmenu ToolBar.Undo Cofnij - tmenu ToolBar.Redo Ponów - tmenu ToolBar.Cut Wytnij - tmenu ToolBar.Copy Skopiuj - tmenu ToolBar.Paste Wklej - tmenu ToolBar.Find Szukaj... - tmenu ToolBar.FindNext Szukaj nastêpnego - tmenu ToolBar.FindPrev Szukaj poprzedniego - tmenu ToolBar.Replace Szukaj i zamieniaj... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nowy widok - tmenu ToolBar.WinSplit Podziel widok - tmenu ToolBar.WinMax Zmaksymalizuj widok - tmenu ToolBar.WinMin Zminimalizuj widok - tmenu ToolBar.WinClose Zamknij widok - endif - tmenu ToolBar.LoadSesn Za³aduj sesjê - tmenu ToolBar.SaveSesn Zachowaj bie¿¹c¹ sesjê - tmenu ToolBar.RunScript Uruchom skrypt Vima - tmenu ToolBar.Make Wykonaj bie¿¹cy projekt - tmenu ToolBar.Shell Otwórz pow³okê - tmenu ToolBar.RunCtags Twórz tagi w bie¿¹cym katalogu - tmenu ToolBar.TagJump Skok do taga pod kursorem - tmenu ToolBar.Help Pomoc Vima - tmenu ToolBar.FindHelp Przeszukuj pomoc Vim-a - endfun -endif - -" Syntax menu -menutrans &Syntax &Sk³adnia -menutrans &Show\ filetypes\ in\ menu Poka¿\ typy\ &plików\ w\ menu -menutrans Set\ '&syntax'\ only Ustaw\ tylko\ '&syntax' -menutrans Set\ '&filetype'\ too Ustaw\ równie¿\ '&filetype' -menutrans &Off &Wy³¹cz -menutrans &Manual &Rêcznie -menutrans A&utomatic A&utomatyczne -menutrans on/off\ for\ &This\ file w³¹cz/w&y³¹cz\ dla\ pliku -menutrans Co&lor\ test Test\ &kolorów -menutrans &Highlight\ test &Test\ podœwietlania -menutrans &Convert\ to\ HTML Przetwórz\ na\ &HTML - -" dialog texts -let menutrans_no_file = "[Brak pliku]" -let menutrans_help_dialog = "WprowadŸ komendê lub s³owo, aby otrzymaæ pomoc o:\n\nPrzedrostek i_ oznacza komendê trybu Wprowadzania (np. i_CTRL-X)\nPrzedrostek c_ oznacza komendê edycji wiersza komend (np. c_)\nPrzedrostek ' oznacza nazwê opcji (np. 'shiftwidth')" -let g:menutrans_path_dialog = "WprowadŸ œcie¿kê poszukiwania plików.\nProszê rozdzielaæ nazwy katalogów przecinkiem." -let g:menutrans_tags_dialog = "Podaj nazwy plików tagów.\nProszê rozdzielaæ nazwy przecinkiem." -let g:menutrans_textwidth_dialog = "WprowadŸ now¹ szerokoœæ tekstu (0 wy³¹cza przewijanie): " -let g:menutrans_fileformat_dialog = "Wybierz format w którym ten plik ma byæ zapisany" -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Anuluj" diff --git a/share/vim/vim73/lang/menu_pt_br.vim b/share/vim/vim73/lang/menu_pt_br.vim deleted file mode 100644 index 28a62b78..00000000 --- a/share/vim/vim73/lang/menu_pt_br.vim +++ /dev/null @@ -1,285 +0,0 @@ -" Menu Translations: Português do Brasil -" Maintainer: José de Paula -" Last Change: 2006-09-19 02:30:00-03:00 -" - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" Translations in latin1 (ISO-8859-1), and should work in -" latin9 (ISO-8859-15) - -if &enc != "cp1252" && &enc != "iso-8859-15" - scriptencoding latin1 -endif - -" Help menu -menutrans &Help A&juda -menutrans &Overview &Conteúdo -menutrans &User\ Manual &Manual\ do\ Usuário -menutrans &How-to\ links &Como\ fazer? -menutrans &Find\.\.\. &Procurar\.\.\. -menutrans &Credits &Créditos -menutrans O&rphans &Órfãos -menutrans Co&pying &Licença -menutrans &Sponsor/Register &Doar/Registrar -menutrans &Version &Versão -menutrans &About &Sobre - -" File menu -menutrans &File &Arquivo -menutrans &Open\.\.\.:e A&brir\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Ab&rir\ em\ outra\ janela\.\.\.:sp -menutrans &New:enew &Novo:enew -menutrans &Close:close &Fechar:close -menutrans &Save:w &Salvar:w -menutrans Save\ &As\.\.\.:sav Sa&lvar\ como\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. &Exibir\ diferenças\ com\.\.\. -menutrans Split\ Patched\ &By\.\.\. Ex&ibir\ patcheado\ por\.\.\. -menutrans &Print I&mprimir -menutrans Sa&ve-Exit:wqa Sal&var\ e\ sair:wqa -menutrans E&xit:qa Sai&r:qa - -" Edit menu -menutrans &Edit &Editar -menutrans &Undou &Desfazeru -menutrans &Redo^R &Refazeru -menutrans Rep&eat\. Repe&tir\. -menutrans Cu&t"+x Re&cortar"+x -menutrans &Copy"+y Cop&iar"+y -menutrans &Paste"+gP C&olar"+gP -menutrans Put\ &Before[p Colocar\ &antes[p -menutrans Put\ &After]p Colocar\ &depois]p -menutrans &Select\ allggVG &Selecionar\ tudoggVG -menutrans &Find\.\.\. &Procurar\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Procurar\ e\ substit&uir\.\.\. -menutrans Find\ and\ Rep&lace:%s Procurar\ e\ substit&uir:%s -menutrans Find\ and\ Rep&lace Procurar\ e\ substit&uir -menutrans Find\ and\ Rep&lace:s Procurar\ e\ substituir:s -menutrans Settings\ &Window &Opções -menutrans Startup\ &Settings &Inicialização - -" Edit/Global Settings -menutrans &Global\ Settings Opções\ &Globais - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Ativar/Desativar\ &Realce\ de\ Padrões:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Ativar/Desativar\ &Ignorar\ maiúsculas:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Ativar/Desativar\ &coincidências:set\ sm! - -menutrans &Context\ lines Linhas\ de\ C&ontexto - -menutrans &Virtual\ Edit Edição\ &Virtual -menutrans Never Nunca -menutrans Block\ Selection Seleção\ de\ Bloco -menutrans Insert\ mode Modo\ de\ inserção -menutrans Block\ and\ Insert Bloco\ e\ inserção -menutrans Always Sempre - -menutrans Toggle\ Insert\ &Mode:set\ im! Ativar/Desativar\ Modo\ de\ In&serção:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Ativar/Desativar\ Co&mpatibilidade\ com\ Vi:set\ cp! -menutrans Search\ &Path\.\.\. Camin&ho\ de\ Busca\.\.\. -menutrans Ta&g\ Files\.\.\. Arquivos\ de\ Tags\.\.\. - -" GUI options -menutrans Toggle\ &Toolbar Ocultar/Exibir\ Barra\ de\ &Ferramentas -menutrans Toggle\ &Bottom\ Scrollbar Ocultar/Exibir\ Barra\ de\ &Rolagem\ Inferior -menutrans Toggle\ &Left\ Scrollbar Ocultar/Exibir\ Barra\ de\ R&olagem\ Esquerda -menutrans Toggle\ &Right\ Scrollbar Ocultar/Exibir\ Barra\ de\ Ro&lagem\ Direita -let g:menutrans_path_dialog = "Indique um caminho de procura para os arquivos.\nSepare os nomes dos diretórios com uma vírgula." -let g:menutrans_tags_dialog = "Indique os nomes dos arquivos de tags.\nSepare os nomes com uma vírgula." - -" Edit/File Settings -menutrans F&ile\ Settings Opções\ do\ &Arquivo - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! Ativar/Desativar\ &numeração\ de\ linhas:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Ativar/Desativar\ modo\ &list:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Ativar/Desativar\ &quebra\ de\ linhas:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Ativar/Desativar\ quebra\ na\ &palavra:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Ativar/Desativar\ expansão de tabs:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Ativar/Desativar\ &auto-indentação:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Ativar/Desativar\ indentação estilo &C:set\ cin! - -" other options -menutrans &Shiftwidth Largura\ da\ &indentação - -menutrans Soft\ &Tabstop &Tabulação\ com\ espaços - -menutrans Te&xt\ Width\.\.\. Largura\ do\ te&xto\.\.\. -let g:menutrans_textwidth_dialog = "Digite a nova largura do texto (0 para desativar a formatação): " - -menutrans &File\ Format\.\.\. &Formato\ do\ arquivo\.\.\. -let g:menutrans_fileformat_dialog = "Selecione o formato para gravar o arquivo" - -menutrans C&olor\ Scheme Esquema\ de\ c&ores -menutrans default padrão - -menutrans Select\ Fo&nt\.\.\. Selecionar\ fo&nte\.\.\. - -menutrans &Keymap &Mapa\ de\ teclado -menutrans None Nenhum - -" Programming menu -menutrans &Tools &Ferramentas -menutrans &Jump\ to\ this\ tagg^] &Pular\ para\ este\ tagg^] -menutrans Jump\ &back^T &Voltar^T -menutrans Build\ &Tags\ File &Construir\ Arquivo\ de\ tags -menutrans &Spelling &Ortografia -menutrans &Folding &Dobra -menutrans &Make:make &Make:make -menutrans &List\ Errors:cl &Lista\ de\ erros:cl -menutrans L&ist\ Messages:cl! Li&sta\ de\ mensagens:cl! -menutrans &Next\ Error:cn P&róximo\ erro:cn -menutrans &Previous\ Error:cp &Erro\ anterior:cp -menutrans &Older\ List:cold Listar\ erros\ &antigos:cold -menutrans N&ewer\ List:cnew Listar\ erros\ &novos:cnew -menutrans Error\ &Window &Janela\ de\ erros -menutrans Se&T\ Compiler Def&inir\ Compilador -menutrans &Convert\ to\ HEX:%!xxd Converter\ para\ hexadecimal:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Conver&ter\ de\ volta:%!xxd\ -r - -" Tools.Spelling menu -menutrans &Spell Check On &Ativar Correção Ortográfica -menutrans &Spell Check Off &Desativar Correção Ortográfica -menutrans To &Next error]s &Próximo Erro]s -menutrans To &Previous Error[s Erro A&nterior[s -menutrans Suggest &Correctionsz= &Sugerir Correçõesz= -menutrans &Repeat correction:spellrepall &Repetir Correção:spellrepall - -menutrans Set\ language\ to\ "en" Inglês -menutrans Set\ language\ to\ "en_au" Inglês\ (en_au) -menutrans Set\ language\ to\ "en_ca" Inglês\ (en_ca) -menutrans Set\ language\ to\ "en_gb" Inglês\ (en_gb) -menutrans Set\ language\ to\ "en_nz" Inglês\ (en_nz) -menutrans Set\ language\ to\ "en_us" Inglês\ (en_us) - -menutrans &Find\ More\ Languages &Buscar mais idiomas - -" Tools.Fold Menu -menutrans &Enable/Disable\ foldszi &Ativar/Desativar\ dobraszi -menutrans &View\ Cursor\ Linezv &Ver\ linha\ do\ cursorzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Ve&r\ somente\ linha\ do\ cursorzMzx -menutrans C&lose\ more\ foldszm &Fechar\ mais\ dobraszm -menutrans &Close\ all\ foldszM F&echar\ todas\ as\ dobraszM -menutrans O&pen\ more\ foldszr A&brir\ mais\ dobraszr -menutrans &Open\ all\ foldszR Abr&ir\ todas\ as\ dobraszR -" fold method -menutrans Fold\ Met&hod &Modo\ de\ dobras -menutrans Create\ &Foldzf Criar\ &dobraszf -menutrans &Delete\ Foldzd Remover\ d&obraszd -menutrans Delete\ &All\ FoldszD Remover\ &todas\ as\ dobraszD -" moving around in folds -menutrans Fold\ col&umn\ width &Largura\ da\ coluna\ da\ dobra - -" Tools.Diff Menu -menutrans &Update &Atualizar -menutrans &Get\ Block &Obter\ Bloco -menutrans &Put\ Block &Pôr\ Bloco - -" Tools.Error Menu -menutrans &Update:cwin &Atualizar:cwin -menutrans &Open:copen A&brir:copen -menutrans &Close:cclose &Fechar:cclose - -" Names for buffer menu. -menutrans &Buffers &Buffers -menutrans &Refresh\ menu A&tualizar\ menu -menutrans &Delete &Apagar -menutrans &Alternate A<ernar -menutrans &Next P&róximo -menutrans &Previous A&nterior -let g:menutrans_no_file = "[Sem arquivos]" - -" Window menu -menutrans &Window &Janela -menutrans &New^Wn N&ova^Wn -menutrans S&plit^Ws &Dividir^Ws -menutrans Sp&lit\ To\ #^W^^ D&ividir\ para\ #^W^^ -menutrans Split\ &Vertically^Wv Dividir\ &verticalmente^Wv -menutrans Split\ File\ E&xplorer &Abrir\ Gerenciador\ de\ arquivos -menutrans &Close^Wc &Fechar^Wc -menutrans Close\ &Other(s)^Wo Fechar\ &outra(s)^Wo -menutrans Move\ &To Mover\ ¶ -menutrans &Top^WK A&cima^WK -menutrans &Bottom^WJ A&baixo^WJ -menutrans &Left\ side^WH Lado\ &esquerdo^WH -menutrans &Right\ side^WL Lado\ di&reito^WL -menutrans Rotate\ &Up^WR &Girar\ para\ cima^WR -menutrans Rotate\ &Down^Wr Girar\ para\ bai&xo^Wr -menutrans &Equal\ Size^W= Mesmo\ &Tamanho^W= -menutrans &Max\ Height^W_ Altura\ &Máxima^W_ -menutrans M&in\ Height^W1_ A<ura\ Mínima^W1_ -menutrans Max\ &Width^W\| Larg&ura\ Máxima^W\| -menutrans Min\ Widt&h^W1\| Largura\ Mí&nima^W1\| - -" The popup menu -menutrans &Undo &Desfazer -menutrans Cu&t Recor&tar -menutrans &Copy &Copiar -menutrans &Paste Co&lar -menutrans &Delete &Apagar -menutrans Select\ Blockwise Seleção\ de\ bloco -menutrans Select\ &Word Selecionar\ &Palavra -menutrans Select\ &Line Selecionar\ L&inha -menutrans Select\ &All Selecionar\ T&udo - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Abrir Arquivo - tmenu ToolBar.Save Salvar Arquivo - tmenu ToolBar.SaveAll Salvar Todos os arquivos - tmenu ToolBar.Print Imprimir - tmenu ToolBar.Undo Desfazer - tmenu ToolBar.Redo Refazer - tmenu ToolBar.Cut Recortar - tmenu ToolBar.Copy Copiar - tmenu ToolBar.Paste Colar - tmenu ToolBar.Find Procurar... - tmenu ToolBar.FindNext Procurar Próximo - tmenu ToolBar.FindPrev Procurar Anterior - tmenu ToolBar.Replace Procurar e Substituir - if 0 " disable; these are in the Windoze menu - tmenu ToolBar.New Nova Janela - tmenu ToolBar.WinSplit Dividir Janela - tmenu ToolBar.WinMax Janela Máxima - tmenu ToolBar.WinMin Janela Mínima - tmenu ToolBar.WinVSplit Dividir Verticalmente - tmenu ToolBar.WinMaxWidth Largura Máxima - tmenu ToolBar.WinMinWidth Largura Mínima - tmenu ToolBar.WinClose Fechar Janela - endif - tmenu ToolBar.LoadSesn Carregar Sessão - tmenu ToolBar.SaveSesn Salvar Sessão - tmenu ToolBar.RunScript Executar script - tmenu ToolBar.Make Make - tmenu ToolBar.Shell Abrir um shell - tmenu ToolBar.RunCtags Gerar um arquivo de tags - tmenu ToolBar.TagJump Saltar para um tag - tmenu ToolBar.Help Ajuda - tmenu ToolBar.FindHelp Procurar na Ajuda - endfun -endif - -" Syntax menu -menutrans &Syntax &Sintaxe -"menutrans &Show\ individual\ choices E&xibir\ escolhas\ individuais -menutrans &Show\ filetypes\ in\ menu E&xibir\ tipos\ de\ arquivos\ no\ menu -menutrans Set\ '&syntax'\ only Ativar\ somente\ s&intaxe -menutrans Set\ '&filetype'\ too Ativar\ também\ &tipo\ de\ arquivo -menutrans &Off &Desativar -menutrans &Manual &Manual -menutrans A&utomatic A&utomática -menutrans on/off\ for\ &This\ file Ativar/Desativar\ neste\ &arquivo -menutrans Co&lor\ test T&este\ de\ cores -menutrans &Highlight\ test Teste\ de\ &realce -menutrans &Convert\ to\ HTML &Converter\ para\ HTML - -" Find Help dialog text -let g:menutrans_help_dialog = "Digite um comando ou palavra para obter ajuda;\n\nAnteponha i_ para comandos de entrada (ex.: i_CTRL-X)\nAnteponha c_ para comandos da linha de comandos (ex.: c_)\nAnteponha ` para um nome de opção (ex.: `shiftwidth`)" diff --git a/share/vim/vim73/lang/menu_pt_pt.vim b/share/vim/vim73/lang/menu_pt_pt.vim deleted file mode 100644 index 28b9726f..00000000 --- a/share/vim/vim73/lang/menu_pt_pt.vim +++ /dev/null @@ -1,264 +0,0 @@ -" Menu Translations: Português -" adaptado de pt_br. -" Maintainer: Duarte Henriques - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" Translations in latin1 (ISO-8859-1), and should work in -" latin9 (ISO-8859-15) - -if &enc != "cp1252" && &enc != "iso-8859-15" - scriptencoding latin1 -endif - -" Help menu -menutrans &Help A&juda -menutrans &Overview &Conteúdo -menutrans &User\ Manual &Manual\ do\ Utilizador -menutrans &How-to\ links &Como\ fazer? -menutrans &Find\.\.\. &Procurar\.\.\. -menutrans &Credits &Créditos -menutrans O&rphans &Órfãos -menutrans Co&pying &Licença -menutrans &Version &Versão -menutrans &About &Sobre - -" File menu -menutrans &File &Ficheiro -menutrans &Open\.\.\.:e A&brir\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Abrir\ noutra\ &janela\.\.\.:sp -menutrans &New:enew &Novo:enew -menutrans &Close:close &Fechar:close -menutrans &Save:w &Guardar:w -menutrans Save\ &As\.\.\.:sav Gu&ardar\ como\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. &Exibir\ diferenças\ com\.\.\. -menutrans Split\ Patched\ &By\.\.\. Ex&ibir\ patcheado\ por\.\.\. -menutrans &Print Im&primir -menutrans Sa&ve-Exit:wqa Gua&rdar\ e\ sair:wqa -menutrans E&xit:qa Sai&r:qa - -" Edit menu -menutrans &Edit &Editar -menutrans &Undou &Desfazeru -menutrans &Redo^R &Refazeru -menutrans Rep&eat\. Repe&tir\. -menutrans Cu&t"+x &Cortar"+x -menutrans &Copy"+y Cop&iar"+y -menutrans &Paste"+gP C&olar"+gP -menutrans Put\ &Before[p Colocar\ &antes[p -menutrans Put\ &After]p Colocar\ &depois]p -menutrans &Select\ allggVG &Seleccionar\ tudoggVG -menutrans &Find\.\.\. &Procurar\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Procurar\ e\ substit&uir\.\.\. -menutrans Find\ and\ Rep&lace:%s Procurar\ e\ substit&uir:%s -menutrans Find\ and\ Rep&lace Procurar\ e\ substit&uir -menutrans Find\ and\ Rep&lace:s Procurar\ e\ substituir:s -menutrans Settings\ &Window Op&ções - -" Edit/Global Settings -menutrans &Global\ Settings Opções\ &Globais - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Activar/Desactivar\ &Realce\ de\ Padrões:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Activar/Desactivar\ &Ignorar\ maiúsculas:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Activar/Desactivar\ &coincidências:set\ sm! - -menutrans &Context\ lines Linhas\ de\ C&ontexto - -menutrans &Virtual\ Edit Edição\ &Virtual -menutrans Never Nunca -menutrans Block\ Selection Seleção\ de\ Bloco -menutrans Insert\ mode Modo\ de\ inserção -menutrans Block\ and\ Insert Bloco\ e\ inserção -menutrans Always Sempre - -menutrans Toggle\ Insert\ &Mode:set\ im! Activar/Desactivar\ Modo\ de\ In&serção:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Activar/Desactivar\ Co&mpatibilidade\ com\ Vi:set\ cp! -menutrans Search\ &Path\.\.\. Camin&ho\ de\ Busca\.\.\. -menutrans Ta&g\ Files\.\.\. Arquivos\ de\ Tags\.\.\. - -" GUI options -menutrans Toggle\ &Toolbar Ocultar/Exibir\ Barra\ de\ &Ferramentas -menutrans Toggle\ &Bottom\ Scrollbar Ocultar/Exibir\ Barra\ de\ &Rolagem\ Inferior -menutrans Toggle\ &Left\ Scrollbar Ocultar/Exibir\ Barra\ de\ R&olagem\ Esquerda -menutrans Toggle\ &Right\ Scrollbar Ocultar/Exibir\ Barra\ de\ Ro&lagem\ Direita -let g:menutrans_path_dialog = "Indique um caminho de procura para os arquivos.\nSepare os nomes dos diretórios com uma vírgula." -let g:menutrans_tags_dialog = "Indique os nomes dos arquivos de tags.\nSepare os nomes com uma vírgula." - -" Edit/File Settings -menutrans F&ile\ Settings Opções\ do\ &Arquivo - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! Activar/Desactivar\ &numeração\ de\ linhas:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Activar/Desactivar\ modo\ &list:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Activar/Desactivar\ &quebra\ de\ linhas:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Activar/Desactivar\ quebra\ na\ &palavra:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Activar/Desactivar\ expansão de tabs:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Activar/Desactivar\ &auto-indentação:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Activar/Desactivar\ indentação estilo &C:set\ cin! - -" other options -menutrans &Shiftwidth Largura\ da\ &indentação - -menutrans Soft\ &Tabstop &Tabulação\ com\ espaços - -menutrans Te&xt\ Width\.\.\. Largura\ do\ te&xto\.\.\. -let g:menutrans_textwidth_dialog = "Digite a nova largura do texto (0 para desativar a formatação): " - -menutrans &File\ Format\.\.\. &Formato\ do\ arquivo\.\.\. -let g:menutrans_fileformat_dialog = "Selecione o formato para gravar o arquivo" - -menutrans C&olor\ Scheme Esquema\ de\ c&ores -menutrans default padrão - -menutrans Select\ Fo&nt\.\.\. Seleccionar\ fo&nte\.\.\. - -menutrans &Keymap Mapa\ de\ teclado -menutrans None Nenhum - -" Programming menu -menutrans &Tools Fe&rramentas -menutrans &Jump\ to\ this\ tagg^] Saltar\ para\ esta\ &tagg^] -menutrans Jump\ &back^T &Voltar^T -menutrans Build\ &Tags\ File &Construir\ Arquivo\ de\ tags -menutrans &Folding &Dobra -menutrans &Make:make &Make:make -menutrans &List\ Errors:cl &Lista\ de\ erros:cl -menutrans L&ist\ Messages:cl! Li&sta\ de\ mensagens:cl! -menutrans &Next\ Error:cn P&róximo\ erro:cn -menutrans &Previous\ Error:cp &Erro\ anterior:cp -menutrans &Older\ List:cold Listar\ erros\ &antigos:cold -menutrans N&ewer\ List:cnew Listar\ erros\ &novos:cnew -menutrans Error\ &Window &Janela\ de\ erros -menutrans &Set\ Compiler Def&inir\ Compilador -menutrans &Convert\ to\ HEX:%!xxd Converter\ para\ hexadecimal:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Conver&ter\ de\ volta:%!xxd\ -r - -" Tools.Fold Menu -menutrans &Enable/Disable\ foldszi &Activar/Desactivar\ dobraszi -menutrans &View\ Cursor\ Linezv &Ver\ linha\ do\ cursorzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Ve&r\ somente\ linha\ do\ cursorzMzx -menutrans C&lose\ more\ foldszm &Fechar\ mais\ dobraszm -menutrans &Close\ all\ foldszM F&echar\ todas\ as\ dobraszM -menutrans O&pen\ more\ foldszr A&brir\ mais\ dobraszr -menutrans &Open\ all\ foldszR Abr&ir\ todas\ as\ dobraszR -" fold method -menutrans Fold\ Met&hod &Modo\ de\ dobras -menutrans Create\ &Foldzf Criar\ &dobraszf -menutrans &Delete\ Foldzd Remover\ d&obraszd -menutrans Delete\ &All\ FoldszD Remover\ &todas\ as\ dobraszD -" moving around in folds -menutrans Fold\ col&umn\ width &Largura\ da\ coluna\ da\ dobra - -" Tools.Diff Menu -menutrans &Update &Actualizar -menutrans &Get\ Block &Obter\ Bloco -menutrans &Put\ Block &Pôr\ Bloco - -" Tools.Error Menu -menutrans &Update:cwin &Actualizar:cwin -menutrans &Open:copen A&brir:copen -menutrans &Close:cclose &Fechar:cclose - -" Names for buffer menu. -menutrans &Buffers &Buffers -menutrans &Refresh\ menu A&ctualizar\ menu -menutrans &Delete &Apagar -menutrans &Alternate A<ernar -menutrans &Next P&róximo -menutrans &Previous A&nterior -let g:menutrans_no_file = "[Sem arquivos]" - -" Window menu -menutrans &Window &Janela -menutrans &New^Wn N&ova^Wn -menutrans S&plit^Ws &Dividir^Ws -menutrans Sp&lit\ To\ #^W^^ D&ividir\ para\ #^W^^ -menutrans Split\ &Vertically^Wv Dividir\ &verticalmente^Wv -menutrans Split\ File\ E&xplorer &Abrir\ Gerenciador\ de\ arquivos -menutrans &Close^Wc &Fechar^Wc -menutrans Close\ &Other(s)^Wo Fechar\ &outra(s)^Wo -menutrans Move\ &To Mover\ ¶ -menutrans &Top^WK A&cima^WK -menutrans &Bottom^WJ A&baixo^WJ -menutrans &Left\ side^WH Lado\ &esquerdo^WH -menutrans &Right\ side^WL Lado\ di&reito^WL -menutrans Rotate\ &Up^WR &Girar\ para\ cima^WR -menutrans Rotate\ &Down^Wr Girar\ para\ bai&xo^Wr -menutrans &Equal\ Size^W= Mesmo\ &Tamanho^W= -menutrans &Max\ Height^W_ Altura\ &Máxima^W_ -menutrans M&in\ Height^W1_ A<ura\ Mínima^W1_ -menutrans Max\ &Width^W\| Larg&ura\ Máxima^W\| -menutrans Min\ Widt&h^W1\| Largura\ Mí&nima^W1\| - -" The popup menu -menutrans &Undo &Desfazer -menutrans Cu&t Recor&tar -menutrans &Copy &Copiar -menutrans &Paste Co&lar -menutrans &Delete &Apagar -menutrans Select\ Blockwise Seleção\ de\ bloco -menutrans Select\ &Word Seleccionar\ &Palavra -menutrans Select\ &Line Seleccionar\ L&inha -menutrans Select\ &All Seleccionar\ T&udo - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Abrir Arquivo - tmenu ToolBar.Save Salvar Arquivo - tmenu ToolBar.SaveAll Salvar Todos os arquivos - tmenu ToolBar.Print Imprimir - tmenu ToolBar.Undo Desfazer - tmenu ToolBar.Redo Refazer - tmenu ToolBar.Cut Recortar - tmenu ToolBar.Copy Copiar - tmenu ToolBar.Paste Colar - tmenu ToolBar.Find Procurar... - tmenu ToolBar.FindNext Procurar Próximo - tmenu ToolBar.FindPrev Procurar Anterior - tmenu ToolBar.Replace Procurar e Substituir - if 0 " disable; these are in the Windoze menu - tmenu ToolBar.New Nova Janela - tmenu ToolBar.WinSplit Dividir Janela - tmenu ToolBar.WinMax Janela Máxima - tmenu ToolBar.WinMin Janela Mínima - tmenu ToolBar.WinVSplit Dividir Verticalmente - tmenu ToolBar.WinMaxWidth Largura Máxima - tmenu ToolBar.WinMinWidth Largura Mínima - tmenu ToolBar.WinClose Fechar Janela - endif - tmenu ToolBar.LoadSesn Carregar Sessão - tmenu ToolBar.SaveSesn Salvar Sessão - tmenu ToolBar.RunScript Executar script - tmenu ToolBar.Make Make - tmenu ToolBar.Shell Abrir um shell - tmenu ToolBar.RunCtags Gerar um arquivo de tags - tmenu ToolBar.TagJump Saltar para um tag - tmenu ToolBar.Help Ajuda - tmenu ToolBar.FindHelp Procurar na Ajuda - endfun -endif - -" Syntax menu -menutrans &Syntax &Sintaxe -"menutrans &Show\ individual\ choices E&xibir\ escolhas\ individuais -menutrans &Show\ filetypes\ in\ menu E&xibir\ tipos\ de\ arquivos\ no\ menu -menutrans Set\ '&syntax'\ only Activar\ somente\ s&intaxe -menutrans Set\ '&filetype'\ too Activar\ também\ &tipo\ de\ arquivo -menutrans &Off &Desactivar -menutrans &Manual &Manual -menutrans A&utomatic A&utomática -menutrans on/off\ for\ &This\ file Activar/Desactivar\ neste\ &arquivo -menutrans Co&lor\ test T&este\ de\ cores -menutrans &Highlight\ test Teste\ de\ &realce -menutrans &Convert\ to\ HTML &Converter\ para\ HTML - -" Find Help dialog text -let g:menutrans_help_dialog = "Digite um comando ou palavra para obter ajuda;\n\nAnteponha i_ para comandos de entrada (ex.: i_CTRL-X)\nAnteponha c_ para comandos da linha de comandos (ex.: c_)\nAnteponha ` para um nome de opção (ex.: `shiftwidth`)" diff --git a/share/vim/vim73/lang/menu_ru_ru.koi8-r.vim b/share/vim/vim73/lang/menu_ru_ru.koi8-r.vim deleted file mode 100644 index 37cd9353..00000000 --- a/share/vim/vim73/lang/menu_ru_ru.koi8-r.vim +++ /dev/null @@ -1,296 +0,0 @@ -" Menu Translations: Russian -" Maintainer: vassily ragosin -" Last Change: 26 Apr 2004 -" URL: cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim -" -" $Id: menu_ru_ru.koi8-r.vim,v 1.2 2004/06/16 11:19:21 vimboss Exp $ -" -" Adopted for RuVim project by Vassily Ragosin. -" First translation: Tim Alexeevsky , -" based on ukrainian translation by Bohdan Vlasyuk -" -" -" Quit when menu translations have already been done. -" -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding koi8-r - -" Top -menutrans &File &æÁÊÌ -menutrans &Edit ð&ÒÁ×ËÁ -menutrans &Tools &éÎÓÔÒÕÍÅÎÔÙ -menutrans &Syntax &óÉÎÔÁËÓÉÓ -menutrans &Buffers &âÕÆÅÒÙ -menutrans &Window &ïËÎÏ -menutrans &Help ó&ÐÒÁ×ËÁ -" -" -" -" Help menu -menutrans &Overview &ïÂÚÏÒ -menutrans &User\ Manual òÕËÏ×Ï&ÄÓÔ×Ï\ ÐÏÌØÚÏ×ÁÔÅÌÑ -menutrans &How-to\ links &ëÁË\ ÜÔÏ\ ÓÄÅÌÁÔØ\.\.\. -menutrans &Find\.\.\. &ðÏÉÓË -"-------------------- -menutrans &Credits &âÌÁÇÏÄÁÒÎÏÓÔÉ -menutrans Co&pying &òÁÓÐÒÏÓÔÒÁÎÅÎÉÅ -menutrans &Sponsor/Register ðÏÍÏ&ÝØ/òÅÇÉÓÔÒÁÃÉÑ -menutrans O&rphans &óÉÒÏÔÙ -"-------------------- -menutrans &Version &éÎÆÏÒÍÁÃÉÑ\ Ï\ ÐÒÏÇÒÁÍÍÅ -menutrans &About &úÁÓÔÁ×ËÁ -" -" -" File menu -menutrans &Open\.\.\.:e &ïÔËÒÙÔØ\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp ðÏ&ÄÅÌÉÔØ\ ÏËÎÏ\.\.\.:sp -menutrans &New:enew &îÏ×ÙÊ:enew -menutrans &Close:close &úÁËÒÙÔØ:close -"-------------------- -menutrans &Save:w &óÏÈÒÁÎÉÔØ:w -menutrans Save\ &As\.\.\.:sav óÏÈÒÁÎÉÔØ\ &ËÁË\.\.\.:sav -"-------------------- -menutrans Split\ &Diff\ with\.\.\. óÒ&Á×ÎÉÔØ\ Ó\.\.\. -menutrans Split\ Patched\ &By\.\.\. óÒÁ×ÎÉÔØ\ Ó\ ÐÒÉÍÅÎÅÎÉÅÍ\ ÚÁÐ&ÌÁÔËÉ\.\.\. -"-------------------- -menutrans &Print îÁ&ÐÅÞÁÔÁÔØ -menutrans Sa&ve-Exit:wqa ÷Ù&ÈÏÄ\ Ó\ ÓÏÈÒÁÎÅÎÉÅÍ:wqa -menutrans E&xit:qa &÷ÙÈÏÄ:qa -" -" -" Edit menu -menutrans &Undou ï&ÔÍÅÎÉÔØu -menutrans &Redo^R ÷&ÅÒÎÕÔØ^R -menutrans Rep&eat\. ðÏ×ÔÏÒÉÔ&Ø\. -"-------------------- -menutrans Cu&t"+x &÷ÙÒÅÚÁÔØ"+x -menutrans &Copy"+y &ëÏÐÉÒÏ×ÁÔØ"+y -menutrans &Paste"+gP ÷Ë&ÌÅÉÔØ"+gP -menutrans Put\ &Before[p ÷ËÌÅÉÔØ\ ÐÅÒÅ&Ä[p -menutrans Put\ &After]p ÷ËÌÅÉÔØ\ ÐÏ&ÓÌÅ]p -menutrans &Deletex &õÄÁÌÉÔØx -menutrans &Select\ AllggVG ÷&ÙÄÅÌÉÔØ\ ×Ó£ggVG -"-------------------- -menutrans &Find\.\.\./ &ðÏÉÓË\.\.\./ -menutrans Find\ and\ Rep&lace\.\.\. ðÏÉÓË\ É\ &ÚÁÍÅÎÁ\.\.\. -menutrans Find\ and\ Rep&lace\.\.\.:%s ðÏÉÓË\ É\ &ÚÁÍÅÎÁ\.\.\.:%s -menutrans Find\ and\ Rep&lace\.\.\.:s ðÏÉÓË\ É\ &ÚÁÍÅÎÁ\.\.\.:s -"-------------------- -menutrans Settings\ &Window ïËÎÏ\ ÎÁÓÔÒÏÊËÉ\ &ÏÐÃÉÊ -menutrans &Global\ Settings &çÌÏÂÁÌØÎÙÅ\ ÎÁÓÔÒÏÊËÉ -menutrans F&ile\ Settings îÁÓÔÒÏÊËÉ\ &ÆÁÊÌÏ× -menutrans C&olor\ Scheme &ã×ÅÔÏ×ÁÑ\ ÓÈÅÍÁ -menutrans &Keymap òÁÓËÌÁÄËÁ\ ËÌ&Á×ÉÁÔÕÒÙ -menutrans Select\ Fo&nt\.\.\. ÷ÙÂÏÒ\ &ÛÒÉÆÔÁ\.\.\. -">>>----------------- Edit/Global settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! ðÏÄÓ×ÅÔËÁ\ &ÎÁÊÄÅÎÎÙÈ\ ÓÏÏÔ×ÅÔÓÔ×ÉÊ:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! &òÅÇÉÓÔÒÏÎÅÚÁ×ÉÓÉÍÙÊ\ ÐÏÉÓË:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! ðÏËÁÚÙ×ÁÔØ\ ÐÁÒÎÙÅ\ &ÜÌÅÍÅÎÔÙ:set\ sm! -menutrans &Context\ lines óÔÒ&ÏË\ ×ÏËÒÕÇ\ ËÕÒÓÏÒÁ -menutrans &Virtual\ Edit ÷ÉÒ&ÔÕÁÌØÎÏÅ\ ÒÅÄÁËÔÉÒÏ×ÁÎÉÅ -menutrans Toggle\ Insert\ &Mode:set\ im! òÅÖÉÍ\ &÷ÓÔÁ×ËÉ:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! &óÏ×ÍÅÓÔÉÍÏÓÔØ\ Ó\ Vi:set\ cp! -menutrans Search\ &Path\.\.\. &ðÕÔØ\ ÄÌÑ\ ÐÏÉÓËÁ\ ÆÁÊÌÏ×\.\.\. -menutrans Ta&g\ Files\.\.\. æÁÊÌÙ\ &ÍÅÔÏË\.\.\. -" -menutrans Toggle\ &Toolbar &éÎÓÔÒÕÍÅÎÔÁÌØÎÁÑ\ ÐÁÎÅÌØ -menutrans Toggle\ &Bottom\ Scrollbar ðÏÌÏÓÁ\ ÐÒÏËÒÕÔËÉ\ ×ÎÉ&ÚÕ -menutrans Toggle\ &Left\ Scrollbar ðÏÌÏÓÁ\ ÐÒÏËÒÕÔËÉ\ Ó&ÌÅ×Á -menutrans Toggle\ &Right\ Scrollbar ðÏÌÏÓÁ\ ÐÒÏËÒÕÔËÉ\ ÓÐÒ&Á×Á -">>>->>>------------- Edit/Global settings/Virtual edit -menutrans Never ÷ÙËÌÀÞÅÎÏ -menutrans Block\ Selection ðÒÉ\ ×ÙÄÅÌÅÎÉÉ\ ÂÌÏËÁ -menutrans Insert\ mode ÷\ ÒÅÖÉÍÅ\ ÷ÓÔÁ×ËÉ -menutrans Block\ and\ Insert ðÒÉ\ ×ÙÄÅÌÅÎÉÉ\ ÂÌÏËÁ\ É\ ×\ ÒÅÖÉÍÅ\ ÷ÓÔÁ×ËÉ -menutrans Always ÷ËÌÀÞÅÎÏ\ ×ÓÅÇÄÁ -">>>----------------- Edit/File settings -menutrans Toggle\ Line\ &Numbering:set\ nu! &îÕÍÅÒÁÃÉÑ\ ÓÔÒÏË:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! ïÔÏÂÒÁ&ÖÅÎÉÅ\ ÎÅ×ÉÄÉÍÙÈ\ ÓÉÍ×ÏÌÏ×:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! &ðÅÒÅÎÏÓ\ ÄÌÉÎÎÙÈ\ ÓÔÒÏË:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! ðÅÒÅÎÏÓ\ &ÃÅÌÙÈ\ ÓÌÏ×:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! ðÒÏ&ÂÅÌÙ\ ×ÍÅÓÔÏ\ ÔÁÂÕÌÑÃÉÉ:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! á×ÔÏÍÁÔÉÞÅÓËÏÅ\ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÅ\ &ÏÔÓÔÕÐÏ×:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! æÏÒÍÁÔÉÒÏ×ÁÎÉÅ\ ÏÔÓÔÕÐÏ×\ ×\ &ÓÔÉÌÅ\ C:set\ cin! -">>>--- -menutrans &Shiftwidth ÷ÅÌÉ&ÞÉÎÁ\ ÏÔÓÔÕÐÁ -menutrans Soft\ &Tabstop ûÉÒÉÎÁ\ &ÔÁÂÕÌÑÃÉÉ -menutrans Te&xt\ Width\.\.\. &ûÉÒÉÎÁ\ ÔÅËÓÔÁ\.\.\. -menutrans &File\ Format\.\.\. &æÏÒÍÁÔ\ ÆÁÊÌÁ\.\.\. -" -" -" -" Tools menu -menutrans &Jump\ to\ this\ tagg^] &ðÅÒÅÈÏÄ\ Ë\ ÍÅÔËÅg^] -menutrans Jump\ &back^T &÷ÅÒÎÕÔØÓÑ\ ÎÁÚÁÄ^T -menutrans Build\ &Tags\ File óÏÚÄÁÔØ\ &ÆÁÊÌ\ ÍÅÔÏË -"------------------- -menutrans &Folding òÁÂÏÔÁ\ ÓÏ\ &ÓËÌÁÄËÁÍÉ -menutrans &Diff &ïÔÌÉÞÉÑ\ (diff) -"------------------- -menutrans &Make:make ëÏ&ÍÐÉÌÑÃÉÑ:make -menutrans &List\ Errors:cl óÐÉÓÏË\ Ï&ÛÉÂÏË:cl -menutrans L&ist\ Messages:cl! óÐÉÓÏË\ ×ÓÅ&È\ ÏÛÉÂÏË\ É\ ÐÒÅÄÕÐÒÅÖÄÅÎÉÊ:cl! -menutrans &Next\ Error:cn óÌÅÄÕ&ÀÝÁÑ\ ÏÛÉÂËÁ:cn -menutrans &Previous\ Error:cp ð&ÒÅÄÙÄÕÝÁÑ\ ÏÛÉÂËÁ:cp -menutrans &Older\ List:cold âÏÌÅÅ\ ÓÔÁÒ&ÙÊ\ ÓÐÉÓÏË\ ÏÛÉÂÏË:cold -menutrans N&ewer\ List:cnew âÏÌÅÅ\ Ó×Å&ÖÉÊ\ ÓÐÉÓÏË\ ÏÛÉÂÏË:cnew -menutrans Error\ &Window ïË&ÎÏ\ ÏÛÉÂÏË -menutrans &Set\ Compiler ÷ÙÂÏÒ\ &ËÏÍÐÉÌÑÔÏÒÁ -"------------------- -menutrans &Convert\ to\ HEX:%!xxd ð&ÅÒÅ×ÅÓÔÉ\ ×\ HEX:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r ðÅÒÅ×ÅÓÔÉ\ É&Ú\ HEX:%!xxd\ -r -">>>---------------- Folds -menutrans &Enable/Disable\ foldszi ÷ËÌ/×ÙËÌ\ &ÓËÌÁÄËÉzi -menutrans &View\ Cursor\ Linezv ïÔËÒÙÔØ\ ÓÔÒÏËÕ\ Ó\ &ËÕÒÓÏÒÏÍzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx ïÔËÒÙÔØ\ &ÔÏÌØËÏ\ ÓÔÒÏËÕ\ Ó\ ËÕÒÓÏÒÏÍzMzx -menutrans C&lose\ more\ foldszm úÁËÒÙÔØ\ &ÂÏÌØÛÅ\ ÓËÌÁÄÏËzm -menutrans &Close\ all\ foldszM úÁËÒÙÔØ\ &×ÓÅ\ ÓËÌÁÄËÉzM -menutrans &Open\ all\ foldszR ïÔËÒ&ÙÔØ\ ×ÓÅ\ ÓËÌÁÄËÉzR -menutrans O&pen\ more\ foldszr ïÔË&ÒÙÔØ\ ÂÏÌØÛÅ\ ÓËÌÁÄÏËzr -menutrans Fold\ Met&hod &íÅÔÏÄ\ ÓËÌÁÄÏË -menutrans Create\ &Foldzf óÏ&ÚÄÁÔØ\ ÓËÌÁÄËÕzf -menutrans &Delete\ Foldzd õ&ÄÁÌÉÔØ\ ÓËÌÁÄËÕzd -menutrans Delete\ &All\ FoldszD õÄÁÌÉÔØ\ ×Ó&Å\ ÓËÌÁÄËÉzD -menutrans Fold\ col&umn\ width &ûÉÒÉÎÁ\ ËÏÌÏÎËÉ\ ÓËÌÁÄÏË -">>>->>>----------- Tools/Folds/Fold Method -menutrans M&anual ÷ÒÕ&ÞÎÕÀ -menutrans I&ndent ï&ÔÓÔÕÐ -menutrans E&xpression &÷ÙÒÁÖÅÎÉÅ -menutrans S&yntax &óÉÎÔÁËÓÉÓ -menutrans Ma&rker &íÁÒËÅÒÙ -">>>--------------- Tools/Diff -menutrans &Update ï&ÂÎÏ×ÉÔØ -menutrans &Get\ Block éÚÍÅÎÉÔØ\ &ÜÔÏÔ\ ÂÕÆÅÒ -menutrans &Put\ Block éÚÍÅÎÉÔØ\ &ÄÒÕÇÏÊ\ ÂÕÆÅÒ -">>>--------------- Tools/Diff/Error window -menutrans &Update:cwin ï&ÂÎÏ×ÉÔØ:cwin -menutrans &Close:cclose &úÁËÒÙÔØ:cclose -menutrans &Open:copen &ïÔËÒÙÔØ:copen -" -" -" Syntax menu -" -menutrans &Show\ filetypes\ in\ menu ðÏËÁÚÁÔØ\ ÍÅÎÀ\ ÄÌÑ\ ×ÙÂÏÒÁ\ ÔÉÐÁ\ &ÆÁÊÌÁ -menutrans Set\ '&syntax'\ only &éÚÍÅÎÑÔØ\ ÔÏÌØËÏ\ ÚÎÁÞÅÎÉÅ\ 'syntax' -menutrans Set\ '&filetype'\ too éÚÍÅÎÑÔØ\ &ÔÁËÖÅ\ ÚÎÁÞÅÎÉÅ\ 'filetype' -menutrans &Off &ïÔËÌÀÞÉÔØ -menutrans &Manual ÷ÒÕ&ÞÎÕÀ -menutrans A&utomatic &á×ÔÏÍÁÔÉÞÅÓËÉ -menutrans on/off\ for\ &This\ file ÷ËÌ/×ÙËÌ\ ÄÌÑ\ &ÜÔÏÇÏ\ ÆÁÊÌÁ -menutrans Co&lor\ test ðÒÏ×ÅÒËÁ\ &Ã×ÅÔÏ× -menutrans &Highlight\ test ðÒÏ×ÅÒËÁ\ ÐÏÄ&Ó×ÅÔËÉ -menutrans &Convert\ to\ HTML ó&ÄÅÌÁÔØ\ HTML\ Ó\ ÐÏÄÓ×ÅÔËÏÊ -" -" -" Buffers menu -" -menutrans &Refresh\ menu ï&ÂÎÏ×ÉÔØ\ ÍÅÎÀ -menutrans Delete õ&ÄÁÌÉÔØ -menutrans &Alternate &óÏÓÅÄÎÉÊ -menutrans &Next ó&ÌÅÄÕÀÝÉÊ -menutrans &Previous &ðÒÅÄÙÄÕÝÉÊ -menutrans [No\ File] [îÅÔ\ ÆÁÊÌÁ] -" -" -" Window menu -" -menutrans &New^Wn &îÏ×ÏÅ\ ÏËÎÏ^Wn -menutrans S&plit^Ws &òÁÚÄÅÌÉÔØ\ ÏËÎÏ^Ws -menutrans Sp&lit\ To\ #^W^^ ïÔËÒÙÔØ\ &ÓÏÓÅÄÎÉÊ\ ÆÁÊÌ\ ×\ ÎÏ×ÏÍ\ ÏËÎÅ^W^^ -menutrans Split\ &Vertically^Wv òÁÚÄÅÌÉÔØ\ ÐÏ\ &×ÅÒÔÉËÁÌÉ^Wv -menutrans Split\ File\ E&xplorer ïÔËÒÙÔØ\ ÐÒÏ×ÏÄÎÉË\ ÐÏ\ &ÆÁÊÌÏ×ÏÊ\ ÓÉÓÔÅÍÅ -" -menutrans &Close^Wc &úÁËÒÙÔØ\ ÜÔÏ\ ÏËÎÏ^Wc -menutrans Close\ &Other(s)^Wo úÁËÒÙÔØ\ &ÏÓÔÁÌØÎÙÅ\ ÏËÎÁ^Wo -" -menutrans Move\ &To &ðÅÒÅÍÅÓÔÉÔØ -menutrans Rotate\ &Up^WR óÄ×ÉÎÕÔØ\ ××ÅÒ&È^WR -menutrans Rotate\ &Down^Wr óÄ×ÉÎÕÔØ\ ×&ÎÉÚ^Wr -" -menutrans &Equal\ Size^W= ï&ÄÉÎÁËÏ×ÙÊ\ ÒÁÚÍÅÒ^W= -menutrans &Max\ Height^W_ íÁËÓÉÍÁÌØÎÁÑ\ ×&ÙÓÏÔÁ^W_ -menutrans M&in\ Height^W1_ íÉÎÉÍÁÌØÎÁÑ\ ×ÙÓÏ&ÔÁ^W1_ -menutrans Max\ &Width^W\| íÁËÓÉÍÁÌØÎÁÑ\ &ÛÉÒÉÎÁ^W\| -menutrans Min\ Widt&h^W1\| íÉÎÉÍÁÌ&ØÎÁÑ\ ÛÉÒÉÎÁ^W1\| -">>>----------------- Window/Move To -menutrans &Top^WK îÁ&×ÅÒÈ^WK -menutrans &Bottom^WJ ÷&ÎÉÚ^WJ -menutrans &Left\ side^WH ÷&ÌÅ×Ï^WH -menutrans &Right\ side^WL ÷&ÐÒÁ×Ï^WL -" -" -" The popup menu -" -" -menutrans &Undo ï&ÔÍÅÎÉÔØ -menutrans Cu&t &÷ÙÒÅÚÁÔØ -menutrans &Copy &ëÏÐÉÒÏ×ÁÔØ -menutrans &Paste ÷Ë&ÌÅÉÔØ -menutrans &Delete &õÄÁÌÉÔØ -menutrans Select\ Blockwise âÌÏËÏ×ÏÅ\ ×ÙÄÅÌÅÎÉÅ -menutrans Select\ &Word ÷ÙÄÅÌÉÔØ\ &ÓÌÏ×Ï -menutrans Select\ &Line ÷ÙÄÅÌÉÔØ\ ÓÔ&ÒÏËÕ -menutrans Select\ &Block ÷ÙÄÅÌÉÔØ\ &ÂÌÏË -menutrans Select\ &All ÷&ÙÄÅÌÉÔØ\ &×Ó£ -" -" The GUI toolbar -" -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open ïÔËÒÙÔØ ÆÁÊÌ - tmenu ToolBar.Save óÏÈÒÁÎÉÔØ ÆÁÊÌ - tmenu ToolBar.SaveAll óÏÈÒÁÎÉÔØ ×ÓÅ ÆÁÊÌÙ - tmenu ToolBar.Print îÁÐÅÞÁÔÁÔØ - tmenu ToolBar.Undo ïÔÍÅÎÉÔØ - tmenu ToolBar.Redo ÷ÅÒÎÕÔØ - tmenu ToolBar.Cut ÷ÙÒÅÚÁÔØ - tmenu ToolBar.Copy ëÏÐÉÒÏ×ÁÔØ - tmenu ToolBar.Paste ÷ËÌÅÉÔØ - tmenu ToolBar.Find ðÏÉÓË... - tmenu ToolBar.FindNext ðÏÉÓË ÓÌÅÄÕÀÝÅÇÏ ÓÏÏÔ×ÅÔÓÔ×ÉÑ - tmenu ToolBar.FindPrev ðÏÉÓË ÐÒÅÄÙÄÕÝÅÇÏ ÓÏÏÔ×ÅÔÓÔ×ÉÑ - tmenu ToolBar.Replace úÁÍÅÎÉÔØ... - tmenu ToolBar.LoadSesn úÁÇÒÕÚÉÔØ ÓÅÁÎÓ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ - tmenu ToolBar.SaveSesn óÏÈÒÁÎÉÔØ ÓÅÁÎÓ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ - tmenu ToolBar.RunScript ÷ÙÐÏÌÎÉÔØ ÓÃÅÎÁÒÉÊ Vim - tmenu ToolBar.Make ëÏÍÐÉÌÑÃÉÑ - tmenu ToolBar.Shell ïÂÏÌÏÞËÁ - tmenu ToolBar.RunCtags óÏÚÄÁÔØ ÆÁÊÌ ÍÅÔÏË - tmenu ToolBar.TagJump ðÅÒÅÊÔÉ Ë ÍÅÔËÅ - tmenu ToolBar.Help óÐÒÁ×ËÁ - tmenu ToolBar.FindHelp îÁÊÔÉ ÓÐÒÁ×ËÕ - endfun -endif -" -" -" Dialog texts -" -" Find in help dialog -" -let g:menutrans_help_dialog = "÷×ÅÄÉÔÅ ËÏÍÁÎÄÕ ÉÌÉ ÓÌÏ×Ï ÄÌÑ ÐÏÉÓËÁ:\n\näÏÂÁ×ØÔÅ i_ ÄÌÑ ÐÏÉÓËÁ ËÏÍÁÎÄ ÒÅÖÉÍÁ ÷ÓÔÁ×ËÉ (ÎÁÐÒÉÍÅÒ, i_CTRL-X)\näÏÂÁ×ØÔÅ c_ ÄÌÑ ÐÏÉÓËÁ ËÏÍÁÎÄ ïÂÙÞÎÏÇÏ ÒÅÖÉÍÁ (ÎÁÐÒÉÍÅÒ, Ó_)\näÏÂÁ×ØÔÅ ' ÄÌÑ ÐÏÉÓËÁ ÓÐÒÁ×ËÉ ÐÏ ÏÐÃÉÉ (ÎÁÐÒÉÍÅÒ, 'shiftwidth')" -" -" Searh path dialog -" -let g:menutrans_path_dialog = "õËÁÖÉÔÅ ÐÕÔØ ÄÌÑ ÐÏÉÓËÁ ÆÁÊÌÏ×.\néÍÅÎÁ ËÁÔÁÌÏÇÏ× ÒÁÚÄÅÌÑÀÔÓÑ ÚÁÐÑÔÙÍÉ." -" -" Tag files dialog -" -let g:menutrans_tags_dialog = "÷×ÅÄÉÔÅ ÉÍÅÎÁ ÆÁÊÌÏ× ÍÅÔÏË (ÞÅÒÅÚ ÚÁÐÑÔÕÀ).\n" -" -" Text width dialog -" -let g:menutrans_textwidth_dialog = "÷×ÅÄÉÔÅ ÛÉÒÉÎÕ ÔÅËÓÔÁ ÄÌÑ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ.\näÌÑ ÏÔÍÅÎÙ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ ××ÅÄÉÔÅ 0." -" -" File format dialog -" -let g:menutrans_fileformat_dialog = "÷ÙÂÅÒÉÔÅ ÆÏÒÍÁÔ ÆÁÊÌÁ." -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nï&ÔÍÅÎÁ" -" -let menutrans_no_file = "[îÅÔ ÆÁÊÌÁ]" diff --git a/share/vim/vim73/lang/menu_ru_ru.vim b/share/vim/vim73/lang/menu_ru_ru.vim deleted file mode 100644 index b7261526..00000000 --- a/share/vim/vim73/lang/menu_ru_ru.vim +++ /dev/null @@ -1,296 +0,0 @@ -" Menu Translations: Russian -" Maintainer: vassily ragosin -" Last Change: 26 Apr 2004 -" URL: cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim -" -" $Id: menu_ru_ru.vim,v 1.1 2004/06/13 16:09:10 vimboss Exp $ -" -" Adopted for RuVim project by Vassily Ragosin. -" First translation: Tim Alexeevsky , -" based on ukrainian translation by Bohdan Vlasyuk -" -" -" Quit when menu translations have already been done. -" -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding utf-8 - -" Top -menutrans &File &Файл -menutrans &Edit П&равка -menutrans &Tools &Инструменты -menutrans &Syntax &Синтаксис -menutrans &Buffers &Буферы -menutrans &Window &Окно -menutrans &Help С&правка -" -" -" -" Help menu -menutrans &Overview &Обзор -menutrans &User\ Manual Руково&дство\ пользователя -menutrans &How-to\ links &Как\ это\ сделать\.\.\. -menutrans &Find\.\.\. &Поиск -"-------------------- -menutrans &Credits &Благодарности -menutrans Co&pying &Распространение -menutrans &Sponsor/Register Помо&щь/Регистрация -menutrans O&rphans &Сироты -"-------------------- -menutrans &Version &Информация\ о\ программе -menutrans &About &Заставка -" -" -" File menu -menutrans &Open\.\.\.:e &Открыть\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp По&делить\ окно\.\.\.:sp -menutrans &New:enew &Новый:enew -menutrans &Close:close &Закрыть:close -"-------------------- -menutrans &Save:w &Сохранить:w -menutrans Save\ &As\.\.\.:sav Сохранить\ &как\.\.\.:sav -"-------------------- -menutrans Split\ &Diff\ with\.\.\. Ср&авнить\ с\.\.\. -menutrans Split\ Patched\ &By\.\.\. Сравнить\ с\ применением\ зап&латки\.\.\. -"-------------------- -menutrans &Print На&печатать -menutrans Sa&ve-Exit:wqa Вы&ход\ с\ сохранением:wqa -menutrans E&xit:qa &Выход:qa -" -" -" Edit menu -menutrans &Undou О&тменитьu -menutrans &Redo^R В&ернуть^R -menutrans Rep&eat\. Повторит&ь\. -"-------------------- -menutrans Cu&t"+x &Вырезать"+x -menutrans &Copy"+y &Копировать"+y -menutrans &Paste"+gP Вк&леить"+gP -menutrans Put\ &Before[p Вклеить\ пере&д[p -menutrans Put\ &After]p Вклеить\ по&сле]p -menutrans &Deletex &Удалитьx -menutrans &Select\ AllggVG В&ыделить\ всёggVG -"-------------------- -menutrans &Find\.\.\./ &Поиск\.\.\./ -menutrans Find\ and\ Rep&lace\.\.\. Поиск\ и\ &замена\.\.\. -menutrans Find\ and\ Rep&lace\.\.\.:%s Поиск\ и\ &замена\.\.\.:%s -menutrans Find\ and\ Rep&lace\.\.\.:s Поиск\ и\ &замена\.\.\.:s -"-------------------- -menutrans Settings\ &Window Окно\ настройки\ &опций -menutrans &Global\ Settings &Глобальные\ настройки -menutrans F&ile\ Settings Настройки\ &файлов -menutrans C&olor\ Scheme &Цветовая\ схема -menutrans &Keymap Раскладка\ кл&авиатуры -menutrans Select\ Fo&nt\.\.\. Выбор\ &шрифта\.\.\. -">>>----------------- Edit/Global settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Подсветка\ &найденных\ соответствий:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! &Регистронезависимый\ поиск:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Показывать\ парные\ &элементы:set\ sm! -menutrans &Context\ lines Стр&ок\ вокруг\ курсора -menutrans &Virtual\ Edit Вир&туальное\ редактирование -menutrans Toggle\ Insert\ &Mode:set\ im! Режим\ &Вставки:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! &Совместимость\ с\ Vi:set\ cp! -menutrans Search\ &Path\.\.\. &Путь\ для\ поиска\ файлов\.\.\. -menutrans Ta&g\ Files\.\.\. Файлы\ &меток\.\.\. -" -menutrans Toggle\ &Toolbar &Инструментальная\ панель -menutrans Toggle\ &Bottom\ Scrollbar Полоса\ прокрутки\ вни&зу -menutrans Toggle\ &Left\ Scrollbar Полоса\ прокрутки\ с&лева -menutrans Toggle\ &Right\ Scrollbar Полоса\ прокрутки\ спр&ава -">>>->>>------------- Edit/Global settings/Virtual edit -menutrans Never Выключено -menutrans Block\ Selection При\ выделении\ блока -menutrans Insert\ mode В\ режиме\ Вставки -menutrans Block\ and\ Insert При\ выделении\ блока\ и\ в\ режиме\ Вставки -menutrans Always Включено\ всегда -">>>----------------- Edit/File settings -menutrans Toggle\ Line\ &Numbering:set\ nu! &Нумерация\ строк:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Отобра&жение\ невидимых\ символов:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! &Перенос\ длинных\ строк:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Перенос\ &целых\ слов:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Про&белы\ вместо\ табуляции:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Автоматическое\ форматирование\ &отступов:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Форматирование\ отступов\ в\ &стиле\ C:set\ cin! -">>>--- -menutrans &Shiftwidth Вели&чина\ отступа -menutrans Soft\ &Tabstop Ширина\ &табуляции -menutrans Te&xt\ Width\.\.\. &Ширина\ текста\.\.\. -menutrans &File\ Format\.\.\. &Формат\ файла\.\.\. -" -" -" -" Tools menu -menutrans &Jump\ to\ this\ tagg^] &Переход\ к\ меткеg^] -menutrans Jump\ &back^T &Вернуться\ назад^T -menutrans Build\ &Tags\ File Создать\ &файл\ меток -"------------------- -menutrans &Folding Работа\ со\ &складками -menutrans &Diff &Отличия\ (diff) -"------------------- -menutrans &Make:make Ко&мпиляция:make -menutrans &List\ Errors:cl Список\ о&шибок:cl -menutrans L&ist\ Messages:cl! Список\ все&х\ ошибок\ и\ предупреждений:cl! -menutrans &Next\ Error:cn Следу&ющая\ ошибка:cn -menutrans &Previous\ Error:cp П&редыдущая\ ошибка:cp -menutrans &Older\ List:cold Более\ стар&ый\ список\ ошибок:cold -menutrans N&ewer\ List:cnew Более\ све&жий\ список\ ошибок:cnew -menutrans Error\ &Window Ок&но\ ошибок -menutrans &Set\ Compiler Выбор\ &компилятора -"------------------- -menutrans &Convert\ to\ HEX:%!xxd П&еревести\ в\ HEX:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Перевести\ и&з\ HEX:%!xxd\ -r -">>>---------------- Folds -menutrans &Enable/Disable\ foldszi Вкл/выкл\ &складкиzi -menutrans &View\ Cursor\ Linezv Открыть\ строку\ с\ &курсоромzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Открыть\ &только\ строку\ с\ курсоромzMzx -menutrans C&lose\ more\ foldszm Закрыть\ &больше\ складокzm -menutrans &Close\ all\ foldszM Закрыть\ &все\ складкиzM -menutrans &Open\ all\ foldszR Откр&ыть\ все\ складкиzR -menutrans O&pen\ more\ foldszr Отк&рыть\ больше\ складокzr -menutrans Fold\ Met&hod &Метод\ складок -menutrans Create\ &Foldzf Со&здать\ складкуzf -menutrans &Delete\ Foldzd У&далить\ складкуzd -menutrans Delete\ &All\ FoldszD Удалить\ вс&е\ складкиzD -menutrans Fold\ col&umn\ width &Ширина\ колонки\ складок -">>>->>>----------- Tools/Folds/Fold Method -menutrans M&anual Вру&чную -menutrans I&ndent О&тступ -menutrans E&xpression &Выражение -menutrans S&yntax &Синтаксис -menutrans Ma&rker &Маркеры -">>>--------------- Tools/Diff -menutrans &Update О&бновить -menutrans &Get\ Block Изменить\ &этот\ буфер -menutrans &Put\ Block Изменить\ &другой\ буфер -">>>--------------- Tools/Diff/Error window -menutrans &Update:cwin О&бновить:cwin -menutrans &Close:cclose &Закрыть:cclose -menutrans &Open:copen &Открыть:copen -" -" -" Syntax menu -" -menutrans &Show\ filetypes\ in\ menu Показать\ меню\ для\ выбора\ типа\ &файла -menutrans Set\ '&syntax'\ only &Изменять\ только\ значение\ 'syntax' -menutrans Set\ '&filetype'\ too Изменять\ &также\ значение\ 'filetype' -menutrans &Off &Отключить -menutrans &Manual Вру&чную -menutrans A&utomatic &Автоматически -menutrans on/off\ for\ &This\ file Вкл/выкл\ для\ &этого\ файла -menutrans Co&lor\ test Проверка\ &цветов -menutrans &Highlight\ test Проверка\ под&светки -menutrans &Convert\ to\ HTML С&делать\ HTML\ с\ подсветкой -" -" -" Buffers menu -" -menutrans &Refresh\ menu О&бновить\ меню -menutrans Delete У&далить -menutrans &Alternate &Соседний -menutrans &Next С&ледующий -menutrans &Previous &Предыдущий -menutrans [No\ File] [Нет\ файла] -" -" -" Window menu -" -menutrans &New^Wn &Новое\ окно^Wn -menutrans S&plit^Ws &Разделить\ окно^Ws -menutrans Sp&lit\ To\ #^W^^ Открыть\ &соседний\ файл\ в\ новом\ окне^W^^ -menutrans Split\ &Vertically^Wv Разделить\ по\ &вертикали^Wv -menutrans Split\ File\ E&xplorer Открыть\ проводник\ по\ &файловой\ системе -" -menutrans &Close^Wc &Закрыть\ это\ окно^Wc -menutrans Close\ &Other(s)^Wo Закрыть\ &остальные\ окна^Wo -" -menutrans Move\ &To &Переместить -menutrans Rotate\ &Up^WR Сдвинуть\ ввер&х^WR -menutrans Rotate\ &Down^Wr Сдвинуть\ в&низ^Wr -" -menutrans &Equal\ Size^W= О&динаковый\ размер^W= -menutrans &Max\ Height^W_ Максимальная\ в&ысота^W_ -menutrans M&in\ Height^W1_ Минимальная\ высо&та^W1_ -menutrans Max\ &Width^W\| Максимальная\ &ширина^W\| -menutrans Min\ Widt&h^W1\| Минимал&ьная\ ширина^W1\| -">>>----------------- Window/Move To -menutrans &Top^WK На&верх^WK -menutrans &Bottom^WJ В&низ^WJ -menutrans &Left\ side^WH В&лево^WH -menutrans &Right\ side^WL В&право^WL -" -" -" The popup menu -" -" -menutrans &Undo О&тменить -menutrans Cu&t &Вырезать -menutrans &Copy &Копировать -menutrans &Paste Вк&леить -menutrans &Delete &Удалить -menutrans Select\ Blockwise Блоковое\ выделение -menutrans Select\ &Word Выделить\ &слово -menutrans Select\ &Line Выделить\ ст&року -menutrans Select\ &Block Выделить\ &блок -menutrans Select\ &All В&ыделить\ &всё -" -" The GUI toolbar -" -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Открыть файл - tmenu ToolBar.Save Сохранить файл - tmenu ToolBar.SaveAll Сохранить все файлы - tmenu ToolBar.Print Напечатать - tmenu ToolBar.Undo Отменить - tmenu ToolBar.Redo Вернуть - tmenu ToolBar.Cut Вырезать - tmenu ToolBar.Copy Копировать - tmenu ToolBar.Paste Вклеить - tmenu ToolBar.Find Поиск... - tmenu ToolBar.FindNext Поиск следующего соответствия - tmenu ToolBar.FindPrev Поиск предыдущего соответствия - tmenu ToolBar.Replace Заменить... - tmenu ToolBar.LoadSesn Загрузить сеанс редактирования - tmenu ToolBar.SaveSesn Сохранить сеанс редактирования - tmenu ToolBar.RunScript Выполнить сценарий Vim - tmenu ToolBar.Make Компиляция - tmenu ToolBar.Shell Оболочка - tmenu ToolBar.RunCtags Создать файл меток - tmenu ToolBar.TagJump Перейти к метке - tmenu ToolBar.Help Справка - tmenu ToolBar.FindHelp Найти справку - endfun -endif -" -" -" Dialog texts -" -" Find in help dialog -" -let g:menutrans_help_dialog = "Введите команду или слово для поиска:\n\nДобавьте i_ для поиска команд режима Вставки (например, i_CTRL-X)\nДобавьте c_ для поиска команд Обычного режима (например, с_)\nДобавьте ' для поиска справки по опции (например, 'shiftwidth')" -" -" Searh path dialog -" -let g:menutrans_path_dialog = "Укажите путь для поиска файлов.\nИмена каталогов разделяются запятыми." -" -" Tag files dialog -" -let g:menutrans_tags_dialog = "Введите имена файлов меток (через запятую).\n" -" -" Text width dialog -" -let g:menutrans_textwidth_dialog = "Введите ширину текста для форматирования.\nДля отмены форматирования введите 0." -" -" File format dialog -" -let g:menutrans_fileformat_dialog = "Выберите формат файла." -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nО&тмена" -" -let menutrans_no_file = "[Нет файла]" diff --git a/share/vim/vim73/lang/menu_sk_sk.iso_8859-2.vim b/share/vim/vim73/lang/menu_sk_sk.iso_8859-2.vim deleted file mode 100644 index bace7d23..00000000 --- a/share/vim/vim73/lang/menu_sk_sk.iso_8859-2.vim +++ /dev/null @@ -1,232 +0,0 @@ -" Menu Translations: Slovak -" Translated By: Martin Lacko -" Last Change: 2003 Mar 30 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding iso-8859-2 - -" Help menu -menutrans &Help &Pomocník -menutrans &Overview &Prehµad -menutrans &User\ Manual Po&u¾ívateµský\ manuál -menutrans &How-to\ links &Tipy -menutrans &Find\.\.\. &Nájs»\.\.\. -menutrans &Credits Poï&akovanie -menutrans O&rphans Si&roty -menutrans Co&pying &Licencia -menutrans &Version &Verzia -menutrans &About &O\ programe - -" File menu -menutrans &File &Súbor -menutrans &Open\.\.\.:e &Otvori»\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Ot&vori»\ v\ novom\ okne\.\.\.:sp -menutrans &New:enew &Nový:enew -menutrans &Close:close &Zatvori»:close -menutrans &Save:w &Ulo¾i»:w -menutrans Save\ &As\.\.\.:sav Ulo¾i»\ &ako\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Otvor&i»\ porovnanie\ v\ novom\ okne\ s\.\.\. -menutrans Split\ Patched\ &By\.\.\. Otvo&ri»\ aktualizované\ s\.\.\. -menutrans &Print &Tlaè -menutrans Sa&ve-Exit:wqa U&lo¾i»-Koniec:wqa -menutrans E&xit:qa &Koniec:qa - -" Edit menu -menutrans &Edit &Úpravy -menutrans &Undou &Spä»u -menutrans &Redo^R Z&ru¹i»\ spä»^R -menutrans Rep&eat\. &Opakova»\. -menutrans Cu&t"+x &Vystrihnú»"+x -menutrans &Copy"+y &Kopírova»"+y -menutrans &Paste"+gP V&lo¾i»"+gP -menutrans Put\ &Before[p Vlo¾i»\ &pred[p -menutrans Put\ &After]p Vlo¾i»\ za]p -menutrans &Select\ allggVG Vy&bra»\ v¹etkoggVG -menutrans &Deletex Vy&maza»x -menutrans &Find\.\.\. &Nájs»\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. N&ahradi»\.\.\. -menutrans Settings\ &Window Mo&¾nosti -menutrans &Global\ Settings &Globálne mo¾nosti -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Prepnú»\ paletu\ zvýrazòovania:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Prepnú»\ &ignorovanie veµkosti:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Prepnú»\ &ukáza»\ zhodu:set\ sm! -menutrans &Context\ lines &Kontextové\ riadky -menutrans &Virtual\ Edit &Virtuálne úpravy -menutrans Never Nikdy -menutrans Block\ Selection Blokový\ výber -menutrans Insert\ mode Re¾im\ vkladania -menutrans Block\ and\ Insert Blok\ a\ vkladanie -menutrans Always V¾dy -menutrans Toggle\ Insert\ &Mode:set\ im! Prepnú»\ re¾i&m\ vkladania:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Prepnú»\ vi\ kompatibilitu:set\ cp! -menutrans Search\ &Path\.\.\. Cesta\ &hµadania\.\.\. -menutrans Ta&g\ Files\.\.\. Ta&gové súbory\.\.\. -menutrans Toggle\ &Toolbar Prepnú»\ &panel -menutrans Toggle\ &Bottom\ Scrollbar Prepnú»\ spodný\ posuvník -menutrans Toggle\ &Left\ Scrollbar Prepnú»\ µavý\ posuvník -menutrans Toggle\ &Right\ Scrollbar Prepnú»\ pravý\ posuvník -menutrans F&ile\ Settings Nastavenia\ súboru -menutrans Toggle\ Line\ &Numbering:set\ nu! Prepnú»\ èíslova&nie\ riadkov:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Prepnú»\ re¾im\ &zoznamu:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Prepnú»\ z&alamovanie\ riadkov:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Prepnú»\ za&lamovanie\ slov:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Prepnú»\ roz¹ír&ené\ tabulátory:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Prepnú»\ automatické\ &odsadzovanie:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Prepnú»\ &C-odsadzovanie:set\ cin! -menutrans &Shiftwidth &©írka\ ¹iftu -menutrans Soft\ &Tabstop &Softvérový\ tabulátor -menutrans Te&xt\ Width\.\.\. ©írka\ te&xtu\.\.\. -menutrans &File\ Format\.\.\. &Formát\ súboru\.\.\. -menutrans C&olor\ Scheme Far&ebná\ schéma - -" Programming menu -menutrans &Tools &Nástroje -menutrans &Jump\ to\ this\ tagg^] &Skoèi»\ na\ znaèkug^] -menutrans Jump\ &back^T Sk&oèi»\ spä»^T -menutrans Build\ &Tags\ File &Vytvori»\ súbor\ znaèiek -menutrans &Folding &Vnáranie -menutrans &Enable/Disable\ foldszi Zapnú»/Vypnú»\ vnárani&ezi -menutrans &View\ Cursor\ Linezv Zobrazi»\ kurzoro&vý\ riadokzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Zobrazi»\ iba\ kurzorový\ riadokzMzx -menutrans C&lose\ more\ foldszm Zatvori»\ viac \vnorenízm -menutrans &Close\ all\ foldszM Zatvor&i»\ v¹etky\ vnoreniazM -menutrans O&pen\ more\ foldszr O&tvori»\ viac\ vnorenízr -menutrans &Open\ all\ foldszR &Otvori»\ v¹etky\ vnoreniazR -menutrans Fold\ Met&hod Metó&da\ vnárania -menutrans M&anual M&anuálne -menutrans I&ndent Odsade&nie -menutrans E&xpression &Výraz -menutrans S&yntax S&yntax -menutrans &Diff Roz&diel -menutrans Ma&rker Zna&èkovaè -menutrans Create\ &Foldzf Vyt&vori»\ vnoreniezf -menutrans &Delete\ Foldzd V&ymaza»\ vnoreniezd -menutrans Delete\ &All\ FoldszD Vymaza»\ v¹etky\ vnoreniazD -menutrans Fold\ column\ &width ©írka\ &vkladaného\ ståpca -menutrans &Diff &Rozdiely -menutrans &Update Akt&ualizova» -menutrans &Get\ Block Zob&ra»\ blok -menutrans &Put\ Block &Vlo¾i»\ blok -menutrans Error\ &Window Chybové\ &okno -menutrans &Update:cwin Akt&ualizova»:cwin -menutrans &Open:copen &Otvori»:copen -menutrans &Close:cclose &Zatvori»:cclose -menutrans &Convert\ to\ HEX:%!xxd &Konvertova»\ do\ HEX:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Konve&rtova»\ spä»:%!xxd\ -r -menutrans &Make:make &Make:make -menutrans &List\ Errors:cl Výpis\ &chýb:cl -menutrans L&ist\ Messages:cl! Výp&is\ správ:cl! -menutrans &Next\ Error:cn Ïa&l¹ia\ chyba:cn -menutrans &Previous\ Error:cp &Predchádzajúca\ chyba:cp -menutrans &Older\ List:cold Sta&r¹í\ zoznam:cold -menutrans N&ewer\ List:cnew Nov¹í\ &zoznam:cnew -menutrans Error\ &Window:cwin Chybové\ o&kno:cwin -menutrans &Set\ Compiler Vyberte\ k&ompilátor -menutrans Convert\ to\ HEX:%!xxd Prvies»\ do\ ¹es&tnástkového\ formátu:%!xxd -menutrans Convert\ back:%!xxd\ -r Pr&evies»\ spä»:%!xxd\ -r - -" Names for buffer menu. -menutrans &Buffers &Vyrovnávacia\ pamä» -menutrans &Refresh\ menu Obnovi» -menutrans &Delete Vymaza» -menutrans &Alternate Zmeni» -menutrans &Next Ï&al¹ia -menutrans &Previous &Predchádzajúca -menutrans [No File] [®iadny\ súbor] - -" Window menu -menutrans &Window &Okná -menutrans &New^Wn &Nové^Wn -menutrans S&plit^Ws &Rozdeli»^Ws -menutrans Sp&lit\ To\ #^W^^ Ro&zdeli»\ na\ #^W^^ -menutrans Split\ &Vertically^Wv Rozdeli»\ &vertikálne^Wv -menutrans Split\ File\ E&xplorer Otvori»\ pri&eskumníka -menutrans &Close^Wc Zatvor&i»^Wc -menutrans Close\ &Other(s)^Wo Zatvori»\ i&né^Wo -menutrans Move\ &To Presunú&» -menutrans &Top^WK Na&hor^WK -menutrans &Bottom^WJ Nado&l^WJ -menutrans &Left\ side^WH V&µavo^WJ -menutrans &Right\ side^WL Vprav&o^WL -menutrans Ne&xt^Ww Ï&al¹ie^Ww -menutrans P&revious^WW &Predchádzajúce^WW -menutrans &Equal\ Size^W= Rovnaká\ vý¹&ka^W= -menutrans &Max\ Height^W_ &Maximálna\ vý¹ka^W_ -menutrans M&in\ Height^W1_ Minimálna\ vý&¹ka^W1_ -menutrans Max\ &Width^W\| Maximálna\ ¹írka^W\| -menutrans Min\ Widt&h^W1\| Minimálna ¹irka^W1\| -menutrans Rotate\ &Up^WR Rotova&»\ nahor^WR -menutrans Rotate\ &Down^Wr Rotova»\ na&dol^Wr -menutrans Select\ Fo&nt\.\.\. Vy&bra»\ písmo\.\.\. - -" The popup menu -menutrans &Undo &Spä» -menutrans Cu&t &Vystrihnú» -menutrans &Copy &Kopírova» -menutrans &Paste V&lo¾i» -menutrans &Delete V&ymaza» -menutrans Select\ Blockwise Vybra»\ blokovo -menutrans Select\ &Word Vybra»\ sl&ovo -menutrans Select\ &Line Vybra»\ &riadok -menutrans Select\ &Block Vybra»\ &blok -menutrans Select\ &All Vybra»\ v¹&etko - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Otvori» súbor - tmenu ToolBar.Save Ulo¾i» súbor - tmenu ToolBar.SaveAll Ulo¾i» v¹etky - tmenu ToolBar.Print Tlaè - tmenu ToolBar.Undo Spä» - tmenu ToolBar.Redo Opakova» - tmenu ToolBar.Cut Vystrihnú» - tmenu ToolBar.Copy Kopírova» - tmenu ToolBar.Paste Vlo¾i» - tmenu ToolBar.Find Nájs»... - tmenu ToolBar.FindNext Nájs» ïal¹ie - tmenu ToolBar.FindPrev Nájs» predchádzajúce - tmenu ToolBar.Replace Nahradi»... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nové okno - tmenu ToolBar.WinSplit Rozdeli» okno - tmenu ToolBar.WinMax Maximalizova» okno - tmenu ToolBar.WinMin Minimalizova» okno - tmenu ToolBar.WinVSplit Rozdeli» okno vertikálne - tmenu ToolBar.WinMaxWidth Maximalizova» ¹írku okna - tmenu ToolBar.WinMinWidth Minimalizova» ¹írku okna - tmenu ToolBar.WinClose Zatvori» okno - endif - tmenu ToolBar.LoadSesn Naèíta» sedenie - tmenu ToolBar.SaveSesn Ulo¾i» sedenie - tmenu ToolBar.RunScript Spusti» skript - tmenu ToolBar.Make Spusti» make - tmenu ToolBar.Shell Spusti» ¹el - tmenu ToolBar.RunCtags Spusti» ctags - tmenu ToolBar.TagJump Skoèi» na tag pod kurzorom - tmenu ToolBar.Help Pomocník - tmenu ToolBar.FindHelp Nájs» pomocníka k... - endfun -endif - -" Syntax menu -menutrans &Syntax &Syntax -menutrans Set\ '&syntax'\ only Nastavi»\ iba\ 'syntax' -menutrans Set\ '&filetype'\ too Nastavi»\ aj\ 'filetype' -menutrans &Off &Vypnú» -menutrans &Manual &Ruène -menutrans A&utomatic A&utomaticky -" menutrans o&n\ (this\ file) &Zapnú»\ (pre\ tento\ súbor) -" menutrans o&ff\ (this\ file) Vyp&nú»\ (pre\ tento\ súbor ) -menutrans on/off\ for\ &This\ file Zapnú»/vypnú»\ pre\ &tento\ súbor -menutrans Co&lor\ test Test\ &farieb -menutrans &Highlight\ test &Test\ zvýrazòovania -menutrans &Convert\ to\ HTML &Previes»\ do\ HTML diff --git a/share/vim/vim73/lang/menu_sl_si.cp1250.vim b/share/vim/vim73/lang/menu_sl_si.cp1250.vim deleted file mode 100644 index 23f668ce..00000000 --- a/share/vim/vim73/lang/menu_sl_si.cp1250.vim +++ /dev/null @@ -1,294 +0,0 @@ -" Menu Translations: Slovenian / Slovensko -" Maintainer: Mojca Miklavec -" Originally By: Mojca Miklavec -" Last Change: Sat, 17 Jun 2006 -" vim:set foldmethod=marker tabstop=8: - -" TODO: add/check all '&'s - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding cp1250 - -" {{{ FILE / DATOTEKA -menutrans &File &Datoteka -menutrans &Open\.\.\.:e &Odpri\ \.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Odpri\ de&ljeno\ \.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew Odpri\ v\ zavi&hku\ \.\.\.:tabnew -menutrans &New:enew &Nova:enew -menutrans &Close:close &Zapri:close -menutrans &Save:w &Shrani:w -menutrans Save\ &As\.\.\.:sav Shrani\ &kot\ \.\.\.:sav -menutrans &Print Na&tisni -menutrans Sa&ve-Exit:wqa Shrani\ in\ &konèaj:wqa -menutrans E&xit:qa &Izhod:qa - -if has("diff") - menutrans Split\ &Diff\ with\.\.\. Primerjaj\ z\ (di&ff)\ \.\.\. - menutrans Split\ Patched\ &By\.\.\. &Popravi\ z\ (patch)\ \.\.\. -endif -" }}} FILE / DATOTEKA - -" {{{ EDIT / UREDI -menutrans &Edit &Uredi -menutrans &Undou &Razveljaviu -menutrans &Redo^R &Obnovi^R -menutrans Rep&eat\. Po&novi\. -menutrans Cu&t"+x &Izreži"+x -menutrans &Copy"+y &Kopiraj"+y -menutrans &Paste"+gP &Prilepi"+gP -menutrans Put\ &Before[p Vrini\ pred[p -menutrans Put\ &After]p Vrini\ za]p -menutrans &Deletex Iz&brišix -menutrans &Select\ allggVG Izberi\ vseggVG -menutrans &Find\.\.\. Po&išèi\ \.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Poišèi\ in\ &zamenjaj\ \.\.\. - -" [-- SETTINGS --] -menutrans Settings\ &Window Nastavitve\ \.\.\. -menutrans Startup\ &Settings Zaèetne\ nastavitve -menutrans &Global\ Settings &Globalne\ nastavitve - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Vkljuèi/izkljuèi\ poudarjanje\ iskanega\ niza:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Vkljuèi/izkljuèi\ loèevanje\ velikih\ in\ malih\ èrk:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Vkljuèi/izkljuèi\ kratek\ skok\ na\ pripadajoèi\ oklepaj:set\ sm! - -menutrans &Context\ lines Št\.\ vidnih\ vrstic\ pred/za\ kurzorjem - -menutrans &Virtual\ Edit Dovoli\ položaj\ kazalèka,\ kjer\ ni\ besedila -menutrans Never Nikoli -menutrans Block\ Selection Le\ med\ izbiranjem\ bloka -menutrans Insert\ mode Le\ v\ naèinu\ za\ pisanje -menutrans Block\ and\ Insert Pri\ obojem -menutrans Always Vedno -menutrans Toggle\ Insert\ &Mode:set\ im! Vkljuèi/izkljuèi\ naèin\ za\ pisanje:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vkljuèi/izkljuèi\ združljivost\ z\ Vi-jem:set\ cp! - -menutrans Search\ &Path\.\.\. Pot\ za\ iskanje\ \.\.\. -menutrans Ta&g\ Files\.\.\. Ta&g-datoteke\.\.\. - -menutrans Toggle\ &Toolbar Pokaži/skrij\ Orodja -menutrans Toggle\ &Bottom\ Scrollbar Pokaži/skrij\ spodnji\ drsnik -menutrans Toggle\ &Left\ Scrollbar Pokaži/skrij\ levi\ drsnik -menutrans Toggle\ &Right\ Scrollbar Pokaži/skrij\ desni\ drsnik - -" Edit/File Settings -menutrans F&ile\ Settings &Nastavitve\ datoteke - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! Pokaži/skrij\ številke\ vrstic:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Pokaži/skrij\ nevidne\ znake:set\ list! " space/tab -menutrans Toggle\ Line\ &Wrap:set\ wrap! Vkljuèi/izkljuèi\ prelome\ vrstic:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Vkljuèi/izkljuèi\ prelome\ vrstic\ med\ besedami:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Vkljuèi/izkljuèi\ zamenjavo\ tabulatorjev\ s\ presledki:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Vkljuèi/izkljuèi\ avtomatsko\ zamikanje\ vrstic:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Vkljuèi/izkljuèi\ C-jevski\ naèin\ zamikanja\ vrstic:set\ cin! - -" other options -menutrans &Shiftwidth Širina\ zamika\ vrstic -menutrans Soft\ &Tabstop Širina\ &tabulatorja -menutrans Te&xt\ Width\.\.\. Širina\ besedila\ \.\.\. -menutrans &File\ Format\.\.\. Format\ &datoteke\ \.\.\. -menutrans C&olor\ Scheme &Barvna\ shema\ \.\.\. -menutrans &Keymap &Keymap -menutrans Select\ Fo&nt\.\.\. Pisava\ \.\.\. -" }}} EDIT / UREDI - -" {{{ TOOLS / ORODJA -menutrans &Tools &Orodja -menutrans &Jump\ to\ this\ tagg^] &Skoèi\ k\ tej\ znaèkig^] -menutrans Jump\ &back^T Skoèi\ Na&zaj^T -menutrans Build\ &Tags\ File Napravi\ datoteke\ z\ znaèkami\ (tag) -if has("spell") - menutrans &Spelling Èrkovalnik - menutrans &Spell\ Check\ On &Vkljuèi - menutrans Spell\ Check\ &Off &Izkljuèi - menutrans To\ &Next\ error]s K\ &naslednji\ napaki]s - menutrans To\ &Previous\ error[s K\ &prejšnji\ napaki[s - menutrans Suggest\ &Correctionsz= Predlagaj\ popravekz= - menutrans &Repeat\ correction:spellrepall Po&novi\ popravke\ na\ vseh\ besedah:spellrepall - menutrans Set\ language\ to\ "en" Angleški\ "en" - menutrans Set\ language\ to\ "en_au" Angleški\ "en_au" - menutrans Set\ language\ to\ "en_ca" Angleški\ "en_ca" - menutrans Set\ language\ to\ "en_gb" Angleški\ "en_gb" - menutrans Set\ language\ to\ "en_nz" Angleški\ "en_nz" - menutrans Set\ language\ to\ "en_us" Angleški\ "en_us" - menutrans Set\ language\ to\ "sl" Slovenski\ "sl" - menutrans Set\ language\ to\ "de" Nemški\ "de" - menutrans Set\ language\ to\ Èrkovalnik:\ - menutrans &Find\ More\ Languages &Ostali\ jeziki -endif -if has("folding") - menutrans &Folding Zvijanje\ kode - " open close folds - menutrans &Enable/Disable\ foldszi Omogoèi/onemogoèi\ zvijanjezi " Omogoèi/onemogoèi\ zavihke - menutrans &View\ Cursor\ Linezv Pokaži\ vrstico\ s\ kazalèkomzv " kjer je kazalec - menutrans Vie&w\ Cursor\ Line\ onlyzMzx Pokaži\ samo\ vrstico\ s\ kazalèkomzMzx - menutrans C&lose\ more\ foldszm Zvij\ naslednji\ nivozm " Zapri\ veè\ zavihkov - menutrans &Close\ all\ foldszM Zvij\ vso\ kodozM " Zapri\ vse\ zavihke - menutrans O&pen\ more\ foldszr Razvij\ en\ nivozr " Odpri\ veè\ zavihkov - menutrans &Open\ all\ foldszR Razvij\ vso\ kodozR " Odpri\ vse\ zavihke - " fold method - menutrans Fold\ Met&hod Kriterij\ za\ zvijanje " Ustvarjanje\ zavihkov - menutrans M&anual &Roèno - menutrans I&ndent Glede\ na\ &poravnavo - menutrans E&xpression Z\ &izrazi\ (foldexpr) - menutrans S&yntax Glede\ na\ &sintakso - menutrans &Diff Razlike\ (&diff) - menutrans Ma&rker Z\ &markerji/oznaèbami - " create and delete folds - " TODO accelerators - menutrans Create\ &Foldzf Ustvari\ zvitekzf - menutrans &Delete\ Foldzd Izbriši\ zvitekzd - menutrans Delete\ &All\ FoldszD Izbriši\ vse\ zvitkezD - " moving around in folds - menutrans Fold\ column\ &width Širina\ drevesa\ z\ zvitki -endif " has folding - -if has("diff") - menutrans &Diff Razlike\ (&Diff) - menutrans &Update &Posodobi - menutrans &Get\ Block &Sprejmi\ (spremeni\ to\ okno) " XXX: check if translation is OK - menutrans &Put\ Block &Pošlji\ (spremeni\ drugo\ okno) -endif - -menutrans &Make:make Napravi\ (&make):make -menutrans &List\ Errors:cl Pokaži\ napake:cl -menutrans L&ist\ Messages:cl! Pokaži\ sporoèila:cl! -menutrans &Next\ Error:cn K\ &naslednji\ napaki:cn -menutrans &Previous\ Error:cp K\ &prejšnji\ napaki:cp -menutrans &Older\ List:cold K\ &starejšemu\ seznamu\ napak:cold -menutrans N&ewer\ List:cnew K\ &novejšemu\ seznamu\ napak:cnew - -menutrans Error\ &Window Okno\ z\ napakami -menutrans &Update:cwin &Posodobi:cwin -menutrans &Open:copen &Odpri:copen -menutrans &Close:cclose &Zapri:cclose - -menutrans &Set\ Compiler Nastavi\ &prevajalnik -menutrans Se&T\ Compiler Nastavi\ &prevajalnik " bug in original translation? - -menutrans &Convert\ to\ HEX:%!xxd Pretvori\ v\ HE&X:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Pretvori\ nazaj:%!xxd\ -r -" }}} TOOLS / ORODJA - -" {{{ SYNTAX / BARVANJE KODE -menutrans &Syntax &Barvanje\ kode -menutrans &Show\ filetypes\ in\ menu Podprte\ vrste\ datotek -menutrans Set\ '&syntax'\ only Samo\ barvanje\ ('&syntax') -menutrans Set\ '&filetype'\ too Tudi\ obnašanje\ ('&filetype') -menutrans &Off &Izkljuèeno -menutrans &Manual &Roèno -menutrans A&utomatic &Avtomatsko -menutrans on/off\ for\ &This\ file Vkljuèi/izkljuèi\ za\ to\ datoteko -menutrans Co&lor\ test Preizkus\ barv -menutrans &Highlight\ test Preizkus\ barvanja\ kode -menutrans &Convert\ to\ HTML Pretvori\ v\ &HTML -" }}} SYNTAX / BARVANJE KODE - -" {{{ BUFFERS / MEDPOMNILNIK -menutrans &Buffers &Medpomnilnik " XXX: ni najbolje: okno bi bolj pristajalo, ampak okno je že -menutrans &Refresh\ menu &Osveži -menutrans Delete &Briši -menutrans &Alternate &Menjaj -menutrans &Next &Naslednji -menutrans &Previous &Prejšnji -menutrans [No\ File] [Brez\ datoteke] -" }}} BUFFERS / MEDPOMNILNIK - -" {{{ WINDOW / OKNO -menutrans &Window &Okno -menutrans &New^Wn &Novo^Wn -menutrans S&plit^Ws Razdeli^Ws -menutrans Split\ &Vertically^Wv Razdeli\ navpièno^Ws -menutrans Split\ File\ E&xplorer Razdeli:\ Vsebina\ mape -menutrans Sp&lit\ To\ #^W^^ Razdeli\ v\ #^W^^ -menutrans &Close^Wc &Zapri^Wc -menutrans Close\ &Other(s)^Wo Zapri\ &ostala^Wo -menutrans Move\ &To Premakni -menutrans &Top^WK &Gor^WK -menutrans &Bottom^WJ &Dol^WJ -menutrans &Left\ side^WH &Levo^WH -menutrans &Right\ side^WL &Desno^WL -menutrans Rotate\ &Up^WR Zavrti\ navzgor^WR -menutrans Rotate\ &Down^Wr Zavrti\ navzdol^Wr -menutrans &Equal\ Size^W= &Enaka\ velikost^W= -menutrans &Max\ Height^W_ Najvišje^W_ -menutrans M&in\ Height^W1_ Najnižje^W1_ -menutrans Max\ &Width^W\| Najširše^W\| -menutrans Min\ Widt&h^W1\| Najožje^W1\| -" }}} WINDOW / OKNO - -" {{{ HELP / POMOÈ -menutrans &Help &Pomoè -menutrans &Overview Hitri\ pregled -menutrans &User\ Manual P&riroènik -menutrans &How-to\ links &How-to\ kazalo -menutrans &Find\.\.\. Po&išèi\ \.\.\. " conflicts with Edit.Find -menutrans &Credits &Avtorji -menutrans Co&pying &Licenca -menutrans &Sponsor/Register Registracija\ in\ &donacije -menutrans O&rphans &Sirotam -menutrans &Version &Verzija -menutrans &About &O\ programu -" }}} HELP / POMOÈ - -" {{{ POPUP -menutrans &Undo &Razveljavi -menutrans Cu&t &Izreži -menutrans &Copy &Kopieraj -menutrans &Paste &Prilepi -menutrans &Delete &Zbriši -menutrans Select\ Blockwise Izbiraj\ po\ blokih -menutrans Select\ &Word Izberi\ &besedo -menutrans Select\ &Sentence Izberi\ &stavek -menutrans Select\ Pa&ragraph Izberi\ &odstavek -menutrans Select\ &Line Izberi\ vrs&tico -menutrans Select\ &Block Izberi\ b&lok -menutrans &Select\ AllggVG Izberi\ &vseggVG -" }}} POPUP - -" {{{ TOOLBAR -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Odpri datoteko - tmenu ToolBar.Save Shrani datoteko - tmenu ToolBar.SaveAll Shrani vse datoteke - tmenu ToolBar.Print Natisni - tmenu ToolBar.Undo Razveljavi - tmenu ToolBar.Redo Obnovi - tmenu ToolBar.Cut Izreži - tmenu ToolBar.Copy Kopiraj - tmenu ToolBar.Paste Prilepi - tmenu ToolBar.Find Najdi ... - tmenu ToolBar.FindNext Najdi naslednje - tmenu ToolBar.FindPrev Najdi prejšnje - tmenu ToolBar.Replace Najdi in zamenjaj ... - tmenu ToolBar.LoadSesn Naloži sejo - tmenu ToolBar.SaveSesn Shrani trenutno sejo - tmenu ToolBar.RunScript Izberi Vim skripto za izvajanje - tmenu ToolBar.Make Napravi trenutni projekt (:make) - tmenu ToolBar.RunCtags Napravi znaèke v trenutnem direktoriju (!ctags -R.) - tmenu ToolBar.TagJump Skoèi k znaèki pod kurzorjem - tmenu ToolBar.Help Pomoè za Vim - tmenu ToolBar.FindHelp Išèi v pomoèi za Vim - endfun -endif -" }}} TOOLBAR - -" {{{ DIALOG TEXTS -let g:menutrans_no_file = "[Brez datoteke]" -let g:menutrans_help_dialog = "Vnesite ukaz ali besedo, za katero želite pomoè:\n\nUporabite predpono i_ za ukaze v naèinu za pisanje (npr.: i_CTRL-X)\nUporabite predpono c_ za ukaze v ukazni vrstici (command-line) (npr.: c_)\nUporabite predpono ' za imena opcij (npr.: 'shiftwidth')" -let g:menutrans_path_dialog = "Vnesite poti za iskanje datotek.\nImena direktorijev loèite z vejico." -let g:menutrans_tags_dialog = "Vnesite imena datotek z znaèkami ('tag').\nImana loèite z vejicami." -let g:menutrans_textwidth_dialog = "Vnesite novo širino besedila (ali 0 za izklop formatiranja): " -let g:menutrans_fileformat_dialog = "Izberite format datoteke" -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Preklièi" -" }}} diff --git a/share/vim/vim73/lang/menu_sl_si.latin2.vim b/share/vim/vim73/lang/menu_sl_si.latin2.vim deleted file mode 100644 index 57d6c89d..00000000 --- a/share/vim/vim73/lang/menu_sl_si.latin2.vim +++ /dev/null @@ -1,294 +0,0 @@ -" Menu Translations: Slovenian / Slovensko -" Maintainer: Mojca Miklavec -" Originally By: Mojca Miklavec -" Last Change: Mon, 12 Jun 2006 00:00:00 CEST -" vim:set foldmethod=marker tabstop=8: - -" TODO: add/check all '&'s - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding latin2 - -" {{{ FILE / DATOTEKA -menutrans &File &Datoteka -menutrans &Open\.\.\.:e &Odpri\ \.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Odpri\ de&ljeno\ \.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew Odpri\ v\ zavi&hku\ \.\.\.:tabnew -menutrans &New:enew &Nova:enew -menutrans &Close:close &Zapri:close -menutrans &Save:w &Shrani:w -menutrans Save\ &As\.\.\.:sav Shrani\ &kot\ \.\.\.:sav -menutrans &Print Na&tisni -menutrans Sa&ve-Exit:wqa Shrani\ in\ &konèaj:wqa -menutrans E&xit:qa &Izhod:qa - -if has("diff") - menutrans Split\ &Diff\ with\.\.\. Primerjaj\ z\ (di&ff)\ \.\.\. - menutrans Split\ Patched\ &By\.\.\. &Popravi\ z\ (patch)\ \.\.\. -endif -" }}} FILE / DATOTEKA - -" {{{ EDIT / UREDI -menutrans &Edit &Uredi -menutrans &Undou &Razveljaviu -menutrans &Redo^R &Obnovi^R -menutrans Rep&eat\. Po&novi\. -menutrans Cu&t"+x &Izre¾i"+x -menutrans &Copy"+y &Kopiraj"+y -menutrans &Paste"+gP &Prilepi"+gP -menutrans Put\ &Before[p Vrini\ pred[p -menutrans Put\ &After]p Vrini\ za]p -menutrans &Deletex Iz&bri¹ix -menutrans &Select\ allggVG Izberi\ vseggVG -menutrans &Find\.\.\. Po&i¹èi\ \.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Poi¹èi\ in\ &zamenjaj\ \.\.\. - -" [-- SETTINGS --] -menutrans Settings\ &Window Nastavitve\ \.\.\. -menutrans Startup\ &Settings Zaèetne nastavitve -menutrans &Global\ Settings &Globalne\ nastavitve - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Vkljuèi/izkljuèi\ poudarjanje\ iskanega\ niza:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Vkljuèi/izkljuèi\ loèevanje\ velikih\ in\ malih\ èrk:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Vkljuèi/izkljuèi\ kratek\ skok\ na\ pripadajoèi\ oklepaj:set\ sm! - -menutrans &Context\ lines ©t\.\ vidnih\ vrstic\ pred/za\ kurzorjem - -menutrans &Virtual\ Edit Dovoli\ polo¾aj\ kazalèka,\ kjer\ ni\ besedila -menutrans Never Nikoli -menutrans Block\ Selection Le\ med\ izbiranjem\ bloka -menutrans Insert\ mode Le\ v\ naèinu\ za\ pisanje -menutrans Block\ and\ Insert Pri\ obojem -menutrans Always Vedno -menutrans Toggle\ Insert\ &Mode:set\ im! Vkljuèi/izkljuèi\ naèin\ za\ pisanje:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vkljuèi/izkljuèi\ zdru¾ljivost\ z\ Vi-jem:set\ cp! - -menutrans Search\ &Path\.\.\. Pot\ za\ iskanje\ \.\.\. -menutrans Ta&g\ Files\.\.\. Ta&g-datoteke\.\.\. - -menutrans Toggle\ &Toolbar Poka¾i/skrij\ Orodja -menutrans Toggle\ &Bottom\ Scrollbar Poka¾i/skrij\ spodnji\ drsnik -menutrans Toggle\ &Left\ Scrollbar Poka¾i/skrij\ levi\ drsnik -menutrans Toggle\ &Right\ Scrollbar Poka¾i/skrij\ desni\ drsnik - -" Edit/File Settings -menutrans F&ile\ Settings &Nastavitve\ datoteke - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! Poka¾i/skrij\ ¹tevilke\ vrstic:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Poka¾i/skrij\ nevidne\ znake:set\ list! " space/tab -menutrans Toggle\ Line\ &Wrap:set\ wrap! Vkljuèi/izkljuèi\ prelome\ vrstic:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Vkljuèi/izkljuèi\ prelome\ vrstic\ med\ besedami:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Vkljuèi/izkljuèi\ zamenjavo\ tabulatorjev\ s\ presledki:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Vkljuèi/izkljuèi\ avtomatsko\ zamikanje\ vrstic:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Vkljuèi/izkljuèi\ C-jevski\ naèin\ zamikanja\ vrstic:set\ cin! - -" other options -menutrans &Shiftwidth ©irina\ zamika\ vrstic -menutrans Soft\ &Tabstop ©irina &tabulatorja -menutrans Te&xt\ Width\.\.\. ©irina\ besedila\ \.\.\. -menutrans &File\ Format\.\.\. Format\ &datoteke\ \.\.\. -menutrans C&olor\ Scheme &Barvna\ shema\ \.\.\. -menutrans &Keymap &Keymap -menutrans Select\ Fo&nt\.\.\. Pisava\ \.\.\. -" }}} EDIT / UREDI - -" {{{ TOOLS / ORODJA -menutrans &Tools &Orodja -menutrans &Jump\ to\ this\ tagg^] &Skoèi\ k\ tej\ znaèkig^] -menutrans Jump\ &back^T Skoèi\ Na&zaj^T -menutrans Build\ &Tags\ File Napravi\ datoteke\ z\ znaèkami\ (tag) -if has("spell") - menutrans &Spelling Èrkovalnik - menutrans &Spell\ Check\ On &Vkljuèi - menutrans Spell\ Check\ &Off &Izkljuèi - menutrans To\ &Next\ error]s K\ &naslednji\ napaki]s - menutrans To\ &Previous\ error[s K\ &prej¹nji\ napaki[s - menutrans Suggest\ &Correctionsz= Predlagaj\ popravekz= - menutrans &Repeat\ correction:spellrepall Po&novi\ popravke\ na\ vseh\ besedah:spellrepall - menutrans Set\ language\ to\ "en" Èrkovalnik:\ angle¹ki\ "en" - menutrans Set\ language\ to\ "en_au" Èrkovalnik:\ angle¹ki\ "en_au" - menutrans Set\ language\ to\ "en_ca" Èrkovalnik:\ angle¹ki\ "en_ca" - menutrans Set\ language\ to\ "en_gb" Èrkovalnik:\ angle¹ki\ "en_gb" - menutrans Set\ language\ to\ "en_nz" Èrkovalnik:\ angle¹ki\ "en_nz" - menutrans Set\ language\ to\ "en_us" Èrkovalnik:\ angle¹ki\ "en_us" - menutrans Set\ language\ to\ "sl" Èrkovalnik:\ slovenski\ "sl" - menutrans Set\ language\ to\ "de" Èrkovalnik:\ nem¹ki\ "de" - menutrans Set\ language\ to\ Èrkovalnik:\ - menutrans &Find\ More\ Languages &Ostali\ jeziki -endif -if has("folding") - menutrans &Folding Zavihek - " open close folds - menutrans &Enable/Disable\ foldszi Omogoèi/onemogoèi\ zavihkezi - menutrans &View\ Cursor\ Linezv Poka¾i\ vrstico\ s\ kazalcemzv " kjer je kazalec - menutrans Vie&w\ Cursor\ Line\ onlyzMzx Poka¾i\ samo\ vrstico\ s\ kazalcemzMzx - menutrans C&lose\ more\ foldszm Zapri\ veè\ zavihkovzm - menutrans &Close\ all\ foldszM Zapri\ vse\ zavihkezM - menutrans O&pen\ more\ foldszr Odpri\ veè\ zavihkovzr - menutrans &Open\ all\ foldszR Odpri\ vse\ zavihkezR - " fold method - menutrans Fold\ Met&hod Ustvarjanje\ zavihkov - menutrans M&anual &Roèno - menutrans I&ndent Glede\ na\ &poravnavo - menutrans E&xpression Z\ &izrazi\ (foldexpr) - menutrans S&yntax Glede\ na\ &sintakso - menutrans &Diff Razlike\ (&diff) - menutrans Ma&rker Z\ &markerji/oznaèbami - " create and delete folds - " TODO accelerators - menutrans Create\ &Foldzf Ustvari\ zavihekzf - menutrans &Delete\ Foldzd Izbri¹i\ zavihekzd - menutrans Delete\ &All\ FoldszD Izbri¹i\ vse\ zavihkezD - " moving around in folds - menutrans Fold\ column\ &width ©irina\ stolpca\ z\ zavihkom -endif " has folding - -if has("diff") - menutrans &Diff Razlike\ (&Diff) - menutrans &Update &Posodobi - menutrans &Get\ Block &Sprejmi\ (spremeni\ to\ okno) " TODO: check if translation is OK - menutrans &Put\ Block &Po¹lji\ (spremeni\ drugo\ okno) -endif - -menutrans &Make:make Napravi\ (&make):make -menutrans &List\ Errors:cl Poka¾i\ napake:cl -menutrans L&ist\ Messages:cl! Poka¾i\ sporoèila:cl! -menutrans &Next\ Error:cn K\ &naslednji\ napaki:cn -menutrans &Previous\ Error:cp K\ &prej¹nji\ napaki:cp -menutrans &Older\ List:cold K\ &starej¹emu\ seznamu\ napak:cold -menutrans N&ewer\ List:cnew K\ &novej¹emu\ seznamu\ napak:cnew - -menutrans Error\ &Window Okno\ z\ napakami -menutrans &Update:cwin &Posodobi:cwin -menutrans &Open:copen &Odpri:copen -menutrans &Close:cclose &Zapri:cclose - -menutrans &Set\ Compiler Nastavi\ &prevajalnik -menutrans Se&T\ Compiler Nastavi\ &prevajalnik " bug in original translation? - -menutrans &Convert\ to\ HEX:%!xxd Pretvori\ v\ HE&X:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Pretvori\ nazaj:%!xxd\ -r -" }}} TOOLS / ORODJA - -" {{{ SYNTAX / BARVANJE KODE -menutrans &Syntax &Barvanje\ kode -menutrans &Show\ filetypes\ in\ menu Podprte\ vrste\ datotek -menutrans Set\ '&syntax'\ only Samo\ barvanje\ ('&syntax') -menutrans Set\ '&filetype'\ too Tudi\ obna¹anje\ ('&filetype') -menutrans &Off &Izkljuèeno -menutrans &Manual &Roèno -menutrans A&utomatic &Avtomatsko -menutrans on/off\ for\ &This\ file Vkljuèi/izkljuèi\ za\ to\ datoteko -menutrans Co&lor\ test Preizkus\ barv -menutrans &Highlight\ test Preizkus\ barvanja\ kode -menutrans &Convert\ to\ HTML Pretvori\ v\ &HTML -" }}} SYNTAX / BARVANJE KODE - -" {{{ BUFFERS / MEDPOMNILNIK -menutrans &Buffers &Medpomnilnik " XXX: ni najbolje: okno bi bolj pristajalo, ampak okno je ¾e -menutrans &Refresh\ menu &Osve¾i -menutrans Delete &Bri¹i -menutrans &Alternate &Menjaj -menutrans &Next &Naslednji -menutrans &Previous &Prej¹nji -menutrans [No\ File] [Brez\ datoteke] -" }}} BUFFERS / MEDPOMNILNIK - -" {{{ WINDOW / OKNO -menutrans &Window &Okno -menutrans &New^Wn &Novo^Wn -menutrans S&plit^Ws Razdeli^Ws -menutrans Split\ &Vertically^Wv Razdeli\ navpièno^Ws -menutrans Split\ File\ E&xplorer Razdeli:\ Vsebina\ mape -menutrans Sp&lit\ To\ #^W^^ Razdeli\ v\ #^W^^ -menutrans &Close^Wc &Zapri^Wc -menutrans Close\ &Other(s)^Wo Zapri\ &ostala^Wo -menutrans Move\ &To Premakni -menutrans &Top^WK &Gor^WK -menutrans &Bottom^WJ &Dol^WJ -menutrans &Left\ side^WH &Levo^WH -menutrans &Right\ side^WL &Desno^WL -menutrans Rotate\ &Up^WR Zavrti\ navzgor^WR -menutrans Rotate\ &Down^Wr Zavrti\ navzdol^Wr -menutrans &Equal\ Size^W= &Enaka\ velikost^W= -menutrans &Max\ Height^W_ Najvi¹je^W_ -menutrans M&in\ Height^W1_ Najni¾je^W1_ -menutrans Max\ &Width^W\| Naj¹ir¹e^W\| -menutrans Min\ Widt&h^W1\| Najo¾je^W1\| -" }}} WINDOW / OKNO - -" {{{ HELP / POMOÈ -menutrans &Help &Pomoè -menutrans &Overview Hitri\ pregled -menutrans &User\ Manual P&riroènik -menutrans &How-to\ links &How-to\ kazalo -menutrans &Find\.\.\. Po&i¹èi\ \.\.\. " conflicts with Edit.Find -menutrans &Credits &Avtorji -menutrans Co&pying &Licenca -menutrans &Sponsor/Register Registracija\ in\ &donacije -menutrans O&rphans &Sirotam -menutrans &Version &Verzija -menutrans &About &O\ programu -" }}} HELP / POMOÈ - -" {{{ POPUP -menutrans &Undo &Razveljavi -menutrans Cu&t &Izre¾i -menutrans &Copy &Kopieraj -menutrans &Paste &Prilepi -menutrans &Delete &Zbri¹i -menutrans Select\ Blockwise Izbiraj\ po\ blokih -menutrans Select\ &Word Izberi\ &besedo -menutrans Select\ &Sentence Izberi\ &stavek -menutrans Select\ Pa&ragraph Izberi\ &odstavek -menutrans Select\ &Line Izberi\ vrs&tico -menutrans Select\ &Block Izberi\ b&lok -menutrans Select\ &All Izberi\ &vse -" }}} POPUP - -" {{{ TOOLBAR -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Odpri datoteko - tmenu ToolBar.Save Shrani datoteko - tmenu ToolBar.SaveAll Shrani vse datoteke - tmenu ToolBar.Print Natisni - tmenu ToolBar.Undo Razveljavi - tmenu ToolBar.Redo Obnovi - tmenu ToolBar.Cut Izre¾i - tmenu ToolBar.Copy Kopiraj - tmenu ToolBar.Paste Prilepi - tmenu ToolBar.Find Najdi ... - tmenu ToolBar.FindNext Najdi naslednje - tmenu ToolBar.FindPrev Najdi prej¹nje - tmenu ToolBar.Replace Najdi in zamenjaj ... - tmenu ToolBar.LoadSesn Nalo¾i sejo - tmenu ToolBar.SaveSesn Shrani trenutno sejo - tmenu ToolBar.RunScript Izberi Vim skripto za izvajanje - tmenu ToolBar.Make Napravi trenutni projekt (:make) - tmenu ToolBar.RunCtags Napravi znaèke v trenutnem direktoriju (!ctags -R.) - tmenu ToolBar.TagJump Skoèi k znaèki pod kurzorjem - tmenu ToolBar.Help Pomoè za Vim - tmenu ToolBar.FindHelp I¹èi v pomoèi za Vim - endfun -endif -" }}} TOOLBAR - -" {{{ DIALOG TEXTS -let g:menutrans_no_file = "[Brez datoteke]" -let g:menutrans_help_dialog = "Vnesite ukaz ali besedo, za katero ¾elite pomoè:\n\nUporabite predpono i_ za ukaze v naèinu za pisanje (npr.: i_CTRL-X)\nUporabite predpono c_ za ukaze v ukazni vrstici (command-line) (npr.: c_)\nUporabite predpono ' za imena opcij (npr.: 'shiftwidth')" -let g:menutrans_path_dialog = "Vnesite poti za iskanje datotek.\nImena direktorijev loèite z vejico." -let g:menutrans_tags_dialog = "Vnesite imena datotek z znaèkami ('tag').\nImana loèite z vejicami." -let g:menutrans_textwidth_dialog = "Vnesite novo ¹irino besedila (ali 0 za izklop formatiranja): " -let g:menutrans_fileformat_dialog = "Izberite format datoteke" -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Preklièi" -" }}} diff --git a/share/vim/vim73/lang/menu_sl_si.utf-8.vim b/share/vim/vim73/lang/menu_sl_si.utf-8.vim deleted file mode 100644 index 306e449e..00000000 --- a/share/vim/vim73/lang/menu_sl_si.utf-8.vim +++ /dev/null @@ -1,294 +0,0 @@ -" Menu Translations: Slovenian / Slovensko -" Maintainer: Mojca Miklavec -" Originally By: Mojca Miklavec -" Last Change: Sat, 17 Jun 2006 -" vim:set foldmethod=marker tabstop=8: - -" TODO: add/check all '&'s - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding utf-8 - -" {{{ FILE / DATOTEKA -menutrans &File &Datoteka -menutrans &Open\.\.\.:e &Odpri\ \.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Odpri\ de&ljeno\ \.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew Odpri\ v\ zavi&hku\ \.\.\.:tabnew -menutrans &New:enew &Nova:enew -menutrans &Close:close &Zapri:close -menutrans &Save:w &Shrani:w -menutrans Save\ &As\.\.\.:sav Shrani\ &kot\ \.\.\.:sav -menutrans &Print Na&tisni -menutrans Sa&ve-Exit:wqa Shrani\ in\ &končaj:wqa -menutrans E&xit:qa &Izhod:qa - -if has("diff") - menutrans Split\ &Diff\ with\.\.\. Primerjaj\ z\ (di&ff)\ \.\.\. - menutrans Split\ Patched\ &By\.\.\. &Popravi\ z\ (patch)\ \.\.\. -endif -" }}} FILE / DATOTEKA - -" {{{ EDIT / UREDI -menutrans &Edit &Uredi -menutrans &Undou &Razveljaviu -menutrans &Redo^R &Obnovi^R -menutrans Rep&eat\. Po&novi\. -menutrans Cu&t"+x &Izreži"+x -menutrans &Copy"+y &Kopiraj"+y -menutrans &Paste"+gP &Prilepi"+gP -menutrans Put\ &Before[p Vrini\ pred[p -menutrans Put\ &After]p Vrini\ za]p -menutrans &Deletex Iz&brišix -menutrans &Select\ allggVG Izberi\ vseggVG -menutrans &Find\.\.\. Po&išči\ \.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Poišči\ in\ &zamenjaj\ \.\.\. - -" [-- SETTINGS --] -menutrans Settings\ &Window Nastavitve\ \.\.\. -menutrans Startup\ &Settings Začetne\ nastavitve -menutrans &Global\ Settings &Globalne\ nastavitve - -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Vključi/izključi\ poudarjanje\ iskanega\ niza:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Vključi/izključi\ ločevanje\ velikih\ in\ malih\ črk:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Vključi/izključi\ kratek\ skok\ na\ pripadajoči\ oklepaj:set\ sm! - -menutrans &Context\ lines Št\.\ vidnih\ vrstic\ pred/za\ kurzorjem - -menutrans &Virtual\ Edit Dovoli\ položaj\ kazalčka,\ kjer\ ni\ besedila -menutrans Never Nikoli -menutrans Block\ Selection Le\ med\ izbiranjem\ bloka -menutrans Insert\ mode Le\ v\ načinu\ za\ pisanje -menutrans Block\ and\ Insert Pri\ obojem -menutrans Always Vedno -menutrans Toggle\ Insert\ &Mode:set\ im! Vključi/izključi\ način\ za\ pisanje:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vključi/izključi\ združljivost\ z\ Vi-jem:set\ cp! - -menutrans Search\ &Path\.\.\. Pot\ za\ iskanje\ \.\.\. -menutrans Ta&g\ Files\.\.\. Ta&g-datoteke\.\.\. - -menutrans Toggle\ &Toolbar Pokaži/skrij\ Orodja -menutrans Toggle\ &Bottom\ Scrollbar Pokaži/skrij\ spodnji\ drsnik -menutrans Toggle\ &Left\ Scrollbar Pokaži/skrij\ levi\ drsnik -menutrans Toggle\ &Right\ Scrollbar Pokaži/skrij\ desni\ drsnik - -" Edit/File Settings -menutrans F&ile\ Settings &Nastavitve\ datoteke - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! Pokaži/skrij\ številke\ vrstic:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Pokaži/skrij\ nevidne\ znake:set\ list! " space/tab -menutrans Toggle\ Line\ &Wrap:set\ wrap! Vključi/izključi\ prelome\ vrstic:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Vključi/izključi\ prelome\ vrstic\ med\ besedami:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Vključi/izključi\ zamenjavo\ tabulatorjev\ s\ presledki:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Vključi/izključi\ avtomatsko\ zamikanje\ vrstic:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Vključi/izključi\ C-jevski\ način\ zamikanja\ vrstic:set\ cin! - -" other options -menutrans &Shiftwidth Širina\ zamika\ vrstic -menutrans Soft\ &Tabstop Širina\ &tabulatorja -menutrans Te&xt\ Width\.\.\. Širina\ besedila\ \.\.\. -menutrans &File\ Format\.\.\. Format\ &datoteke\ \.\.\. -menutrans C&olor\ Scheme &Barvna\ shema\ \.\.\. -menutrans &Keymap &Keymap -menutrans Select\ Fo&nt\.\.\. Pisava\ \.\.\. -" }}} EDIT / UREDI - -" {{{ TOOLS / ORODJA -menutrans &Tools &Orodja -menutrans &Jump\ to\ this\ tagg^] &Skoči\ k\ tej\ značkig^] -menutrans Jump\ &back^T Skoči\ Na&zaj^T -menutrans Build\ &Tags\ File Napravi\ datoteke\ z\ značkami\ (tag) -if has("spell") - menutrans &Spelling Črkovalnik - menutrans &Spell\ Check\ On &Vključi - menutrans Spell\ Check\ &Off &Izključi - menutrans To\ &Next\ error]s K\ &naslednji\ napaki]s - menutrans To\ &Previous\ error[s K\ &prejšnji\ napaki[s - menutrans Suggest\ &Correctionsz= Predlagaj\ popravekz= - menutrans &Repeat\ correction:spellrepall Po&novi\ popravke\ na\ vseh\ besedah:spellrepall - menutrans Set\ language\ to\ "en" Angleški\ "en" - menutrans Set\ language\ to\ "en_au" Angleški\ "en_au" - menutrans Set\ language\ to\ "en_ca" Angleški\ "en_ca" - menutrans Set\ language\ to\ "en_gb" Angleški\ "en_gb" - menutrans Set\ language\ to\ "en_nz" Angleški\ "en_nz" - menutrans Set\ language\ to\ "en_us" Angleški\ "en_us" - menutrans Set\ language\ to\ "sl" Slovenski\ "sl" - menutrans Set\ language\ to\ "de" Nemški\ "de" - menutrans Set\ language\ to\ Črkovalnik:\ - menutrans &Find\ More\ Languages &Ostali\ jeziki -endif -if has("folding") - menutrans &Folding Zvijanje\ kode - " open close folds - menutrans &Enable/Disable\ foldszi Omogoči/onemogoči\ zvijanjezi " Omogoči/onemogoči\ zavihke - menutrans &View\ Cursor\ Linezv Pokaži\ vrstico\ s\ kazalčkomzv " kjer je kazalec - menutrans Vie&w\ Cursor\ Line\ onlyzMzx Pokaži\ samo\ vrstico\ s\ kazalčkomzMzx - menutrans C&lose\ more\ foldszm Zvij\ naslednji\ nivozm " Zapri\ več\ zavihkov - menutrans &Close\ all\ foldszM Zvij\ vso\ kodozM " Zapri\ vse\ zavihke - menutrans O&pen\ more\ foldszr Razvij\ en\ nivozr " Odpri\ več\ zavihkov - menutrans &Open\ all\ foldszR Razvij\ vso\ kodozR " Odpri\ vse\ zavihke - " fold method - menutrans Fold\ Met&hod Kriterij\ za\ zvijanje " Ustvarjanje\ zavihkov - menutrans M&anual &Ročno - menutrans I&ndent Glede\ na\ &poravnavo - menutrans E&xpression Z\ &izrazi\ (foldexpr) - menutrans S&yntax Glede\ na\ &sintakso - menutrans &Diff Razlike\ (&diff) - menutrans Ma&rker Z\ &markerji/označbami - " create and delete folds - " TODO accelerators - menutrans Create\ &Foldzf Ustvari\ zvitekzf - menutrans &Delete\ Foldzd Izbriši\ zvitekzd - menutrans Delete\ &All\ FoldszD Izbriši\ vse\ zvitkezD - " moving around in folds - menutrans Fold\ column\ &width Širina\ drevesa\ z\ zvitki -endif " has folding - -if has("diff") - menutrans &Diff Razlike\ (&Diff) - menutrans &Update &Posodobi - menutrans &Get\ Block &Sprejmi\ (spremeni\ to\ okno) " XXX: check if translation is OK - menutrans &Put\ Block &Pošlji\ (spremeni\ drugo\ okno) -endif - -menutrans &Make:make Napravi\ (&make):make -menutrans &List\ Errors:cl Pokaži\ napake:cl -menutrans L&ist\ Messages:cl! Pokaži\ sporočila:cl! -menutrans &Next\ Error:cn K\ &naslednji\ napaki:cn -menutrans &Previous\ Error:cp K\ &prejšnji\ napaki:cp -menutrans &Older\ List:cold K\ &starejšemu\ seznamu\ napak:cold -menutrans N&ewer\ List:cnew K\ &novejšemu\ seznamu\ napak:cnew - -menutrans Error\ &Window Okno\ z\ napakami -menutrans &Update:cwin &Posodobi:cwin -menutrans &Open:copen &Odpri:copen -menutrans &Close:cclose &Zapri:cclose - -menutrans &Set\ Compiler Nastavi\ &prevajalnik -menutrans Se&T\ Compiler Nastavi\ &prevajalnik " bug in original translation? - -menutrans &Convert\ to\ HEX:%!xxd Pretvori\ v\ HE&X:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Pretvori\ nazaj:%!xxd\ -r -" }}} TOOLS / ORODJA - -" {{{ SYNTAX / BARVANJE KODE -menutrans &Syntax &Barvanje\ kode -menutrans &Show\ filetypes\ in\ menu Podprte\ vrste\ datotek -menutrans Set\ '&syntax'\ only Samo\ barvanje\ ('&syntax') -menutrans Set\ '&filetype'\ too Tudi\ obnašanje\ ('&filetype') -menutrans &Off &Izključeno -menutrans &Manual &Ročno -menutrans A&utomatic &Avtomatsko -menutrans on/off\ for\ &This\ file Vključi/izključi\ za\ to\ datoteko -menutrans Co&lor\ test Preizkus\ barv -menutrans &Highlight\ test Preizkus\ barvanja\ kode -menutrans &Convert\ to\ HTML Pretvori\ v\ &HTML -" }}} SYNTAX / BARVANJE KODE - -" {{{ BUFFERS / MEDPOMNILNIK -menutrans &Buffers &Medpomnilnik " XXX: ni najbolje: okno bi bolj pristajalo, ampak okno je že -menutrans &Refresh\ menu &Osveži -menutrans Delete &Briši -menutrans &Alternate &Menjaj -menutrans &Next &Naslednji -menutrans &Previous &Prejšnji -menutrans [No\ File] [Brez\ datoteke] -" }}} BUFFERS / MEDPOMNILNIK - -" {{{ WINDOW / OKNO -menutrans &Window &Okno -menutrans &New^Wn &Novo^Wn -menutrans S&plit^Ws Razdeli^Ws -menutrans Split\ &Vertically^Wv Razdeli\ navpično^Ws -menutrans Split\ File\ E&xplorer Razdeli:\ Vsebina\ mape -menutrans Sp&lit\ To\ #^W^^ Razdeli\ v\ #^W^^ -menutrans &Close^Wc &Zapri^Wc -menutrans Close\ &Other(s)^Wo Zapri\ &ostala^Wo -menutrans Move\ &To Premakni -menutrans &Top^WK &Gor^WK -menutrans &Bottom^WJ &Dol^WJ -menutrans &Left\ side^WH &Levo^WH -menutrans &Right\ side^WL &Desno^WL -menutrans Rotate\ &Up^WR Zavrti\ navzgor^WR -menutrans Rotate\ &Down^Wr Zavrti\ navzdol^Wr -menutrans &Equal\ Size^W= &Enaka\ velikost^W= -menutrans &Max\ Height^W_ Najvišje^W_ -menutrans M&in\ Height^W1_ Najnižje^W1_ -menutrans Max\ &Width^W\| Najširše^W\| -menutrans Min\ Widt&h^W1\| Najožje^W1\| -" }}} WINDOW / OKNO - -" {{{ HELP / POMOČ -menutrans &Help &Pomoč -menutrans &Overview Hitri\ pregled -menutrans &User\ Manual P&riročnik -menutrans &How-to\ links &How-to\ kazalo -menutrans &Find\.\.\. Po&išči\ \.\.\. " conflicts with Edit.Find -menutrans &Credits &Avtorji -menutrans Co&pying &Licenca -menutrans &Sponsor/Register Registracija\ in\ &donacije -menutrans O&rphans &Sirotam -menutrans &Version &Verzija -menutrans &About &O\ programu -" }}} HELP / POMOČ - -" {{{ POPUP -menutrans &Undo &Razveljavi -menutrans Cu&t &Izreži -menutrans &Copy &Kopieraj -menutrans &Paste &Prilepi -menutrans &Delete &Zbriši -menutrans Select\ Blockwise Izbiraj\ po\ blokih -menutrans Select\ &Word Izberi\ &besedo -menutrans Select\ &Sentence Izberi\ &stavek -menutrans Select\ Pa&ragraph Izberi\ &odstavek -menutrans Select\ &Line Izberi\ vrs&tico -menutrans Select\ &Block Izberi\ b&lok -menutrans &Select\ AllggVG Izberi\ &vseggVG -" }}} POPUP - -" {{{ TOOLBAR -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Odpri datoteko - tmenu ToolBar.Save Shrani datoteko - tmenu ToolBar.SaveAll Shrani vse datoteke - tmenu ToolBar.Print Natisni - tmenu ToolBar.Undo Razveljavi - tmenu ToolBar.Redo Obnovi - tmenu ToolBar.Cut Izreži - tmenu ToolBar.Copy Kopiraj - tmenu ToolBar.Paste Prilepi - tmenu ToolBar.Find Najdi ... - tmenu ToolBar.FindNext Najdi naslednje - tmenu ToolBar.FindPrev Najdi prejšnje - tmenu ToolBar.Replace Najdi in zamenjaj ... - tmenu ToolBar.LoadSesn Naloži sejo - tmenu ToolBar.SaveSesn Shrani trenutno sejo - tmenu ToolBar.RunScript Izberi Vim skripto za izvajanje - tmenu ToolBar.Make Napravi trenutni projekt (:make) - tmenu ToolBar.RunCtags Napravi značke v trenutnem direktoriju (!ctags -R.) - tmenu ToolBar.TagJump Skoči k znački pod kurzorjem - tmenu ToolBar.Help Pomoč za Vim - tmenu ToolBar.FindHelp Išči v pomoči za Vim - endfun -endif -" }}} TOOLBAR - -" {{{ DIALOG TEXTS -let g:menutrans_no_file = "[Brez datoteke]" -let g:menutrans_help_dialog = "Vnesite ukaz ali besedo, za katero želite pomoč:\n\nUporabite predpono i_ za ukaze v načinu za pisanje (npr.: i_CTRL-X)\nUporabite predpono c_ za ukaze v ukazni vrstici (command-line) (npr.: c_)\nUporabite predpono ' za imena opcij (npr.: 'shiftwidth')" -let g:menutrans_path_dialog = "Vnesite poti za iskanje datotek.\nImena direktorijev ločite z vejico." -let g:menutrans_tags_dialog = "Vnesite imena datotek z značkami ('tag').\nImana ločite z vejicami." -let g:menutrans_textwidth_dialog = "Vnesite novo širino besedila (ali 0 za izklop formatiranja): " -let g:menutrans_fileformat_dialog = "Izberite format datoteke" -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Prekliči" -" }}} diff --git a/share/vim/vim73/lang/menu_slovak_slovak_republic.1250.vim b/share/vim/vim73/lang/menu_slovak_slovak_republic.1250.vim deleted file mode 100644 index 1df513de..00000000 --- a/share/vim/vim73/lang/menu_slovak_slovak_republic.1250.vim +++ /dev/null @@ -1,232 +0,0 @@ -" Menu Translations: Slovak -" Translated By: Martin Lacko -" Last Change: 2006 Jun 17 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding cp1250 - -" Help menu -menutrans &Help &Pomocník -menutrans &Overview &Preh¾ad -menutrans &User\ Manual Po&užívate¾ský\ manuál -menutrans &How-to\ links &Tipy -menutrans &Find\.\.\. &Nájs�\.\.\. -menutrans &Credits Poï&akovanie -menutrans O&rphans Si&roty -menutrans Co&pying &Licencia -menutrans &Version &Verzia -menutrans &About &O\ programe - -" File menu -menutrans &File &Súbor -menutrans &Open\.\.\.:e &Otvori�\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Ot&vori�\ v\ novom\ okne\.\.\.:sp -menutrans &New:enew &Nový:enew -menutrans &Close:close &Zatvori�:close -menutrans &Save:w &Uloži�:w -menutrans Save\ &As\.\.\.:sav Uloži�\ &ako\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Otvor&i�\ porovnanie\ v\ novom\ okne\ s\.\.\. -menutrans Split\ Patched\ &By\.\.\. Otvo&ri�\ aktualizované\ s\.\.\. -menutrans &Print &Tlaè -menutrans Sa&ve-Exit:wqa U&loži�-Koniec:wqa -menutrans E&xit:qa &Koniec:qa - -" Edit menu -menutrans &Edit &Úpravy -menutrans &Undou &Spä�u -menutrans &Redo^R Z&ruši�\ spä�^R -menutrans Rep&eat\. &Opakova�\. -menutrans Cu&t"+x &Vystrihnú�"+x -menutrans &Copy"+y &Kopírova�"+y -menutrans &Paste"+gP V&loži�"+gP -menutrans Put\ &Before[p Vloži�\ &pred[p -menutrans Put\ &After]p Vloži�\ za]p -menutrans &Select\ allggVG Vy&bra�\ všetkoggVG -menutrans &Deletex Vy&maza�x -menutrans &Find\.\.\. &Nájs�\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. N&ahradi�\.\.\. -menutrans Settings\ &Window Mo&žnosti -menutrans &Global\ Settings &Globálne možnosti -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Prepnú�\ paletu\ zvýrazòovania:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Prepnú�\ &ignorovanie ve¾kosti:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Prepnú�\ &ukáza�\ zhodu:set\ sm! -menutrans &Context\ lines &Kontextové\ riadky -menutrans &Virtual\ Edit &Virtuálne úpravy -menutrans Never Nikdy -menutrans Block\ Selection Blokový\ výber -menutrans Insert\ mode Režim\ vkladania -menutrans Block\ and\ Insert Blok\ a\ vkladanie -menutrans Always Vždy -menutrans Toggle\ Insert\ &Mode:set\ im! Prepnú�\ reži&m\ vkladania:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Prepnú�\ vi\ kompatibilitu:set\ cp! -menutrans Search\ &Path\.\.\. Cesta\ &h¾adania\.\.\. -menutrans Ta&g\ Files\.\.\. Ta&gové súbory\.\.\. -menutrans Toggle\ &Toolbar Prepnú�\ &panel -menutrans Toggle\ &Bottom\ Scrollbar Prepnú�\ spodný\ posuvník -menutrans Toggle\ &Left\ Scrollbar Prepnú�\ ¾avý\ posuvník -menutrans Toggle\ &Right\ Scrollbar Prepnú�\ pravý\ posuvník -menutrans F&ile\ Settings Nastavenia\ súboru -menutrans Toggle\ Line\ &Numbering:set\ nu! Prepnú�\ èíslova&nie\ riadkov:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Prepnú�\ režim\ &zoznamu:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Prepnú�\ z&alamovanie\ riadkov:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Prepnú�\ za&lamovanie\ slov:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Prepnú�\ rozšír&ené\ tabulátory:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Prepnú�\ automatické\ &odsadzovanie:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Prepnú�\ &C-odsadzovanie:set\ cin! -menutrans &Shiftwidth &Šírka\ šiftu -menutrans Soft\ &Tabstop &Softvérový\ tabulátor -menutrans Te&xt\ Width\.\.\. Šírka\ te&xtu\.\.\. -menutrans &File\ Format\.\.\. &Formát\ súboru\.\.\. -menutrans C&olor\ Scheme Far&ebná\ schéma - -" Programming menu -menutrans &Tools &Nástroje -menutrans &Jump\ to\ this\ tagg^] &Skoèi�\ na\ znaèkug^] -menutrans Jump\ &back^T Sk&oèi�\ spä�^T -menutrans Build\ &Tags\ File &Vytvori�\ súbor\ znaèiek -menutrans &Folding &Vnáranie -menutrans &Enable/Disable\ foldszi Zapnú�/Vypnú�\ vnárani&ezi -menutrans &View\ Cursor\ Linezv Zobrazi�\ kurzoro&vý\ riadokzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Zobrazi�\ iba\ kurzorový\ riadokzMzx -menutrans C&lose\ more\ foldszm Zatvori�\ viac \vnorenízm -menutrans &Close\ all\ foldszM Zatvor&i�\ všetky\ vnoreniazM -menutrans O&pen\ more\ foldszr O&tvori�\ viac\ vnorenízr -menutrans &Open\ all\ foldszR &Otvori�\ všetky\ vnoreniazR -menutrans Fold\ Met&hod Metó&da\ vnárania -menutrans M&anual M&anuálne -menutrans I&ndent Odsade&nie -menutrans E&xpression &Výraz -menutrans S&yntax S&yntax -menutrans &Diff Roz&diel -menutrans Ma&rker Zna&èkovaè -menutrans Create\ &Foldzf Vyt&vori�\ vnoreniezf -menutrans &Delete\ Foldzd V&ymaza�\ vnoreniezd -menutrans Delete\ &All\ FoldszD Vymaza�\ všetky\ vnoreniazD -menutrans Fold\ column\ &width Šírka\ &vkladaného\ ståpca -menutrans &Diff &Rozdiely -menutrans &Update Akt&ualizova� -menutrans &Get\ Block Zob&ra�\ blok -menutrans &Put\ Block &Vloži�\ blok -menutrans Error\ &Window Chybové\ &okno -menutrans &Update:cwin Akt&ualizova�:cwin -menutrans &Open:copen &Otvori�:copen -menutrans &Close:cclose &Zatvori�:cclose -menutrans &Convert\ to\ HEX:%!xxd &Konvertova�\ do\ HEX:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Konve&rtova�\ spä�:%!xxd\ -r -menutrans &Make:make &Make:make -menutrans &List\ Errors:cl Výpis\ &chýb:cl -menutrans L&ist\ Messages:cl! Výp&is\ správ:cl! -menutrans &Next\ Error:cn Ïa&lšia\ chyba:cn -menutrans &Previous\ Error:cp &Predchádzajúca\ chyba:cp -menutrans &Older\ List:cold Sta&rší\ zoznam:cold -menutrans N&ewer\ List:cnew Novší\ &zoznam:cnew -menutrans Error\ &Window:cwin Chybové\ o&kno:cwin -menutrans &Set\ Compiler Vyberte\ k&ompilátor -menutrans Convert\ to\ HEX:%!xxd Prvies�\ do\ šes&tnástkového\ formátu:%!xxd -menutrans Convert\ back:%!xxd\ -r Pr&evies�\ spä�:%!xxd\ -r - -" Names for buffer menu. -menutrans &Buffers &Vyrovnávacia\ pamä� -menutrans &Refresh\ menu Obnovi� -menutrans &Delete Vymaza� -menutrans &Alternate Zmeni� -menutrans &Next Ï&alšia -menutrans &Previous &Predchádzajúca -menutrans [No File] [Žiadny\ súbor] - -" Window menu -menutrans &Window &Okná -menutrans &New^Wn &Nové^Wn -menutrans S&plit^Ws &Rozdeli�^Ws -menutrans Sp&lit\ To\ #^W^^ Ro&zdeli�\ na\ #^W^^ -menutrans Split\ &Vertically^Wv Rozdeli�\ &vertikálne^Wv -menutrans Split\ File\ E&xplorer Otvori�\ pri&eskumníka -menutrans &Close^Wc Zatvor&i�^Wc -menutrans Close\ &Other(s)^Wo Zatvori�\ i&né^Wo -menutrans Move\ &To Presunú&� -menutrans &Top^WK Na&hor^WK -menutrans &Bottom^WJ Nado&l^WJ -menutrans &Left\ side^WH V&¾avo^WJ -menutrans &Right\ side^WL Vprav&o^WL -menutrans Ne&xt^Ww Ï&alšie^Ww -menutrans P&revious^WW &Predchádzajúce^WW -menutrans &Equal\ Size^W= Rovnaká\ výš&ka^W= -menutrans &Max\ Height^W_ &Maximálna\ výška^W_ -menutrans M&in\ Height^W1_ Minimálna\ vý&ška^W1_ -menutrans Max\ &Width^W\| Maximálna\ šírka^W\| -menutrans Min\ Widt&h^W1\| Minimálna širka^W1\| -menutrans Rotate\ &Up^WR Rotova&�\ nahor^WR -menutrans Rotate\ &Down^Wr Rotova�\ na&dol^Wr -menutrans Select\ Fo&nt\.\.\. Vy&bra�\ písmo\.\.\. - -" The popup menu -menutrans &Undo &Spä� -menutrans Cu&t &Vystrihnú� -menutrans &Copy &Kopírova� -menutrans &Paste V&loži� -menutrans &Delete V&ymaza� -menutrans Select\ Blockwise Vybra�\ blokovo -menutrans Select\ &Word Vybra�\ sl&ovo -menutrans Select\ &Line Vybra�\ &riadok -menutrans Select\ &Block Vybra�\ &blok -menutrans Select\ &All Vybra�\ vš&etko - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Otvori� súbor - tmenu ToolBar.Save Uloži� súbor - tmenu ToolBar.SaveAll Uloži� všetky - tmenu ToolBar.Print Tlaè - tmenu ToolBar.Undo Spä� - tmenu ToolBar.Redo Opakova� - tmenu ToolBar.Cut Vystrihnú� - tmenu ToolBar.Copy Kopírova� - tmenu ToolBar.Paste Vloži� - tmenu ToolBar.Find Nájs�... - tmenu ToolBar.FindNext Nájs� ïalšie - tmenu ToolBar.FindPrev Nájs� predchádzajúce - tmenu ToolBar.Replace Nahradi�... - if 0 " disabled; These are in the Windows menu - tmenu ToolBar.New Nové okno - tmenu ToolBar.WinSplit Rozdeli� okno - tmenu ToolBar.WinMax Maximalizova� okno - tmenu ToolBar.WinMin Minimalizova� okno - tmenu ToolBar.WinVSplit Rozdeli� okno vertikálne - tmenu ToolBar.WinMaxWidth Maximalizova� šírku okna - tmenu ToolBar.WinMinWidth Minimalizova� šírku okna - tmenu ToolBar.WinClose Zatvori� okno - endif - tmenu ToolBar.LoadSesn Naèíta� sedenie - tmenu ToolBar.SaveSesn Uloži� sedenie - tmenu ToolBar.RunScript Spusti� skript - tmenu ToolBar.Make Spusti� make - tmenu ToolBar.Shell Spusti� šel - tmenu ToolBar.RunCtags Spusti� ctags - tmenu ToolBar.TagJump Skoèi� na tag pod kurzorom - tmenu ToolBar.Help Pomocník - tmenu ToolBar.FindHelp Nájs� pomocníka k... - endfun -endif - -" Syntax menu -menutrans &Syntax &Syntax -menutrans Set\ '&syntax'\ only Nastavi�\ iba\ 'syntax' -menutrans Set\ '&filetype'\ too Nastavi�\ aj\ 'filetype' -menutrans &Off &Vypnú� -menutrans &Manual &Ruène -menutrans A&utomatic A&utomaticky -" menutrans o&n\ (this\ file) &Zapnú�\ (pre\ tento\ súbor) -" menutrans o&ff\ (this\ file) Vyp&nú�\ (pre\ tento\ súbor ) -menutrans on/off\ for\ &This\ file Zapnú�/vypnú�\ pre\ &tento\ súbor -menutrans Co&lor\ test Test\ &farieb -menutrans &Highlight\ test &Test\ zvýrazòovania -menutrans &Convert\ to\ HTML &Previes�\ do\ HTML diff --git a/share/vim/vim73/lang/menu_sr_rs.ascii.vim b/share/vim/vim73/lang/menu_sr_rs.ascii.vim deleted file mode 100644 index 14a90260..00000000 --- a/share/vim/vim73/lang/menu_sr_rs.ascii.vim +++ /dev/null @@ -1,258 +0,0 @@ -" Menu Translations: Serbian -" Maintainer: Aleksandar Jelenak -" Last Change: Fri, 30 May 2003 12:15:30 -0400 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" Help menu -menutrans &Help Pomo&c -menutrans &Overview &Pregled -menutrans &User\ Manual &Uputstvo\ za\ korisnike -menutrans &How-to\ links &Kako\ da\.\.\. -menutrans &Find &Nadji -menutrans &Credits &Zasluge -menutrans Co&pying P&reuzimanje -menutrans O&rphans &Sirocici -menutrans &Version &Verzija -menutrans &About &O\ programu - -" File menu -menutrans &File &Datoteka -menutrans &Open\.\.\.:e &Otvori\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp &Podeli-otvori\.\.\.:sp -menutrans &New:enew &Nova:enew -menutrans &Close:close &Zatvori:close -menutrans &Save:w &Sacuvaj:w -menutrans Save\ &As\.\.\.:sav Sacuvaj\ &kao\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Podeli\ i\ &uporedi\ sa\.\.\. -menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\. -menutrans &Print Sta&mpaj -menutrans Sa&ve-Exit:wqa Sacuvaj\ i\ za&vrsi:wqa -menutrans E&xit:qa K&raj:qa - -" Edit menu -menutrans &Edit &Uredjivanje -menutrans &Undou &Vratiu -menutrans &Redo^R &Povrati^R -menutrans Rep&eat\. P&onovi\. -menutrans Cu&t"+x Ise&ci"+x -menutrans &Copy"+y &Kopiraj"+y -menutrans &Paste"+gP &Ubaci"+gP -menutrans &Paste"+P &Ubaci"+gP -menutrans Put\ &Before[p Stavi\ pre&d[p -menutrans Put\ &After]p Stavi\ &iza]p -menutrans &Deletex Iz&brisix -menutrans &Select\ allggVG Izaberi\ sv&eggVG -menutrans &Find\.\.\. &Nadji\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Nadji\ i\ &zameni\.\.\. -menutrans Settings\ &Window P&rozor\ podesavanja -menutrans &Global\ Settings Op&sta\ podesavanja -menutrans F&ile\ Settings Podesavanja\ za\ da&toteke -menutrans &Shiftwidth &Pomeraj -menutrans Soft\ &Tabstop &Meka\ tabulacija -menutrans Te&xt\ Width\.\.\. &Sirina\ teksta\.\.\. -menutrans &File\ Format\.\.\. &Vrsta\ datoteke\.\.\. -menutrans C&olor\ Scheme Bo&je -menutrans &Keymap Pres&likavanje\ tastature -menutrans Select\ Fo&nt\.\.\. Izbor\ &fonta\.\.\. - -" Edit/Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Naglasi\ &obrazce\ (da/ne):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Zanemari\ \velicinu\ &slova\ (da/ne):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Proveri\ pratecu\ &zagradu\ (da/ne):set\ sm! -menutrans &Context\ lines Vidljivi\ &redovi -menutrans &Virtual\ Edit Virtuelno\ &uredjivanje -menutrans Toggle\ Insert\ &Mode:set\ im! Rezim\ u&nosa\ (da/ne):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! '&Vi'\ saglasno\ (da/ne):set\ cp! -menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\. -menutrans Ta&g\ Files\.\.\. &Datoteke\ oznaka\.\.\. -menutrans Toggle\ &Toolbar Linija\ sa\ &alatkama\ (da/ne) -menutrans Toggle\ &Bottom\ Scrollbar Donja\ l&inija\ klizanja\ (da/ne) -menutrans Toggle\ &Left\ Scrollbar &Leva\ linija\ klizanja\ (da/ne) -menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne) - -" Edit/Global Settings/Virtual Edit -menutrans Never Nikad -menutrans Block\ Selection Izbor\ bloka -menutrans Insert\ mode Rezim\ unosa -menutrans Block\ and\ Insert Blok\ i\ unos -menutrans Always Uvek - -" Edit/File Settings -menutrans Toggle\ Line\ &Numbering:set\ nu! Redni\ &brojevi\ (da/ne):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Rezim\ &liste\ (da/ne):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Obavijanje\ &redova\ (da/ne):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Prelomi\ &na\ rec\ (da/ne):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Razmaci\ umesto\ &tabulacije\ (da/ne):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Auto-&uvlacenje\ (da/ne):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! &Ce-uvlacenje\ (da/ne):set\ cin! - -" Edit/Keymap -menutrans None Nijedan - -" Tools menu -menutrans &Tools &Alatke -menutrans &Jump\ to\ this\ tagg^] Skoci\ na\ &ovu\ oznakug^] -menutrans Jump\ &back^T Skoci\ &natrag^T -menutrans Build\ &Tags\ File Izgradi\ &datoteku\ oznaka -menutrans &Folding &Podvijanje -menutrans Create\ &Foldzf S&tvori\ podvijutakzf -menutrans &Delete\ Foldzd O&brisi\ podvijutakzd -menutrans Delete\ &All\ FoldszD Obrisi\ sve\ po&dvijutkezD -menutrans Fold\ column\ &width Sirina\ &reda\ podvijutka -menutrans &Diff &Uporedjivanje -menutrans &Make:make 'mak&e':make -menutrans &List\ Errors:cl Spisak\ &gresaka:cl -menutrans L&ist\ Messages:cl! Sp&isak\ poruka:cl! -menutrans &Next\ Error:cn S&ledeca\ greska:cn -menutrans &Previous\ Error:cp Pre&thodna\ greska:cp -menutrans &Older\ List:cold Stari\ spisa&k:cold -menutrans N&ewer\ List:cnew No&vi\ spisak:cnew -menutrans Error\ &Window Prozor\ sa\ g&reskama -menutrans &Set\ Compiler I&zaberi\ prevodioca -menutrans &Convert\ to\ HEX:%!xxd Pretvori\ u\ &HEKS:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Vr&ati\ u\ prvobitan\ oblik:%!xxd\ -r - -" Tools/Folding -menutrans &Enable/Disable\ foldszi &Omoguci/prekini\ podvijanjezi -menutrans &View\ Cursor\ Linezv &Pokazi\ red\ sa\ kursoromzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Pokazi\ &samo\ red\ sa\ kursoromzMzx -menutrans C&lose\ more\ foldszm &Zatvori\ vise\ podvijutakazm -menutrans &Close\ all\ foldszM Zatvori\ s&ve\ podvijutkezM -menutrans O&pen\ more\ foldszr Otvori\ vis&e\ podvijutakazr -menutrans &Open\ all\ foldszR O&tvori\ sve\ podvijutkezR -menutrans Fold\ Met&hod &Nacin\ podvijanja - -" Tools/Folding/Fold Method -menutrans M&anual &Rucno -menutrans I&ndent &Uvucenost -menutrans E&xpression &Izraz -menutrans S&yntax &Sintaksa -"menutrans &Diff -menutrans Ma&rker &Oznaka - -" Tools/Diff -menutrans &Update &Azuriraj -menutrans &Get\ Block &Prihvati\ izmenu -menutrans &Put\ Block Pre&baci\ izmenu - -" Tools/Error Window -menutrans &Update:cwin &Azuriraj:cwin -menutrans &Open:copen &Otvori:copen -menutrans &Close:cclose &Zatvori:cclose - -" Bufers menu -menutrans &Buffers &Baferi -menutrans &Refresh\ menu &Azuriraj -menutrans Delete &Obrisi -menutrans &Alternate A<ernativni -menutrans &Next &Sledeci -menutrans &Previous &Prethodni -menutrans [No\ File] [Nema\ datoteke] - -" Window menu -menutrans &Window &Prozor -menutrans &New^Wn &Novi^Wn -menutrans S&plit^Ws &Podeli^Ws -menutrans Sp&lit\ To\ #^W^^ Podeli\ sa\ &alternativnim^W^^ -menutrans Split\ &Vertically^Wv Podeli\ &uspravno^Wv -menutrans Split\ File\ E&xplorer Podeli\ za\ pregled\ &datoteka -menutrans &Close^Wc &Zatvori^Wc -menutrans Close\ &Other(s)^Wo Zatvori\ &ostale^Wo -"menutrans Ne&xt^Ww &Sledeci^Ww -"menutrans P&revious^WW P&rethodni^WW -menutrans Move\ &To Pre&mesti -menutrans Rotate\ &Up^WR &Kruzno\ nagore^WR -menutrans Rotate\ &Down^Wr Kruzno\ nadol&e^Wr -menutrans &Equal\ Size^W= &Iste\ velicine^W= -menutrans &Max\ Height^W_ Maksimalna\ &visina^W_ -menutrans M&in\ Height^W1_ Minima&lna\ visina^W1_ -menutrans Max\ &Width^W\| Maksimalna\ &sirina^W\| -menutrans Min\ Widt&h^W1\| Minimalna\ si&rina^W1\| - -" Window/Move To -menutrans &Top^WK &Vrh^WK -menutrans &Bottom^WJ &Podnozje^WJ -menutrans &Left\ side^WH U&levo^WH -menutrans &Right\ side^WL U&desno^WL - -" The popup menu -menutrans &Undo &Vrati -menutrans Cu&t &Iseci -menutrans &Copy &Kopiraj -menutrans &Paste &Ubaci -menutrans &Delete I&zbrisi -menutrans Select\ Blockwise Biraj\ &pravougaono -menutrans Select\ &Word Izaberi\ &rec -menutrans Select\ &Line Izaberi\ r&ed -menutrans Select\ &Block Izaberi\ &blok -menutrans Select\ &All Izaberi\ &sve - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Ucitaj - tmenu ToolBar.Save Sacuvaj - tmenu ToolBar.SaveAll Sacuvaj sve - tmenu ToolBar.Print Stampaj - tmenu ToolBar.Undo Vrati - tmenu ToolBar.Redo Povrati - tmenu ToolBar.Cut Iseci - tmenu ToolBar.Copy Kopiraj - tmenu ToolBar.Paste Ubaci - tmenu ToolBar.Find Nadji - tmenu ToolBar.FindNext Nadji sledeci - tmenu ToolBar.FindPrev Nadji prethodni - tmenu ToolBar.Replace Zameni - tmenu ToolBar.New Novi - tmenu ToolBar.WinSplit Podeli prozor - tmenu ToolBar.WinMax Maksimalna visina - tmenu ToolBar.WinMin Minimalna visina - tmenu ToolBar.WinVSplit Podeli uspravno - tmenu ToolBar.WinMaxWidth Maksimalna sirina - tmenu ToolBar.WinMinWidth Minimalna sirina - tmenu ToolBar.WinClose Zatvori prozor - tmenu ToolBar.LoadSesn Ucitaj seansu - tmenu ToolBar.SaveSesn Sacuvaj seansu - tmenu ToolBar.RunScript Izvrsi spis - tmenu ToolBar.Make 'make' - tmenu ToolBar.Shell Operativno okruzenje - tmenu ToolBar.RunCtags Napravi oznake - tmenu ToolBar.TagJump Idi na oznaku - tmenu ToolBar.Help Pomoc - tmenu ToolBar.FindHelp Nadji objasnjenje - endfun -endif - -" Syntax menu -menutrans &Syntax &Sintaksa -menutrans &Show\ filetypes\ in\ menu Izbor\ 'filetype'\ iz\ &menija -menutrans Set\ '&syntax'\ only Pode&si\ 'syntax'\ samo -menutrans Set\ '&filetype'\ too Podesi\ 'filetype'\ &takodje -menutrans &Off &Iskljuceno -menutrans &Manual &Rucno -menutrans A&utomatic &Automatski -menutrans on/off\ for\ &This\ file Da/ne\ za\ ovu\ &datoteku -menutrans Co&lor\ test Provera\ &boja -menutrans &Highlight\ test Provera\ isti&canja -menutrans &Convert\ to\ HTML Pretvori\ &u\ HTML - -" dialog texts -let menutrans_help_dialog = "Unesite naredbu ili rec cije pojasnjenje trazite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog rezima (npr. s_)\nDodajte ' za imena opcija (npr. 'shiftwidth')" - -let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma." - -let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena." - -let g:menutrans_textwidth_dialog = "Unesite novu sirinu teksta (0 sprecava prelom)" - -let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke" - -let menutrans_no_file = "[Nema datoteke]" diff --git a/share/vim/vim73/lang/menu_sr_rs.iso_8859-2.vim b/share/vim/vim73/lang/menu_sr_rs.iso_8859-2.vim deleted file mode 100644 index 992124c8..00000000 --- a/share/vim/vim73/lang/menu_sr_rs.iso_8859-2.vim +++ /dev/null @@ -1,259 +0,0 @@ -" Menu Translations: Serbian -" Maintainer: Aleksandar Jelenak -" Last Change: Fri, 30 May 2003 12:04:48 -0400 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 -scriptencoding iso8859-2 - -" Help menu -menutrans &Help Pomo&æ -menutrans &Overview &Pregled -menutrans &User\ Manual &Uputstvo\ za\ korisnike -menutrans &How-to\ links &Kako\ da\.\.\. -menutrans &Find &Naði -menutrans &Credits &Zasluge -menutrans Co&pying P&reuzimanje -menutrans O&rphans &Siroèiæi -menutrans &Version &Verzija -menutrans &About &O\ programu - -" File menu -menutrans &File &Datoteka -menutrans &Open\.\.\.:e &Otvori\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp &Podeli-otvori\.\.\.:sp -menutrans &New:enew &Nova:enew -menutrans &Close:close &Zatvori:close -menutrans &Save:w &Saèuvaj:w -menutrans Save\ &As\.\.\.:sav Saèuvaj\ &kao\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Podeli\ i\ &uporedi\ sa\.\.\. -menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\. -menutrans &Print ©ta&mpaj -menutrans Sa&ve-Exit:wqa Saèuvaj\ i\ za&vr¹i:wqa -menutrans E&xit:qa K&raj:qa - -" Edit menu -menutrans &Edit &Ureðivanje -menutrans &Undou &Vratiu -menutrans &Redo^R &Povrati^R -menutrans Rep&eat\. P&onovi\. -menutrans Cu&t"+x Ise&ci"+x -menutrans &Copy"+y &Kopiraj"+y -menutrans &Paste"+gP &Ubaci"+gP -menutrans &Paste"+P &Ubaci"+gP -menutrans Put\ &Before[p Stavi\ pre&d[p -menutrans Put\ &After]p Stavi\ &iza]p -menutrans &Deletex Iz&bri¹ix -menutrans &Select\ allggVG Izaberi\ sv&eggVG -menutrans &Find\.\.\. &Naði\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Naði\ i\ &zameni\.\.\. -menutrans Settings\ &Window P&rozor\ pode¹avanja -menutrans &Global\ Settings Op&¹ta\ pode¹avanja -menutrans F&ile\ Settings Pode¹avanja\ za\ da&toteke -menutrans &Shiftwidth &Pomeraj -menutrans Soft\ &Tabstop &Meka\ tabulacija -menutrans Te&xt\ Width\.\.\. &©irina\ teksta\.\.\. -menutrans &File\ Format\.\.\. &Vrsta\ datoteke\.\.\. -menutrans C&olor\ Scheme Bo&je -menutrans &Keymap Pres&likavanje\ tastature -menutrans Select\ Fo&nt\.\.\. Izbor\ &fonta\.\.\. - -" Edit/Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Naglasi\ &obrazce\ (da/ne):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Zanemari\ \velièinu\ &slova\ (da/ne):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Proveri\ prateæu\ &zagradu\ (da/ne):set\ sm! -menutrans &Context\ lines Vidljivi\ &redovi -menutrans &Virtual\ Edit Virtuelno\ &ureðivanje -menutrans Toggle\ Insert\ &Mode:set\ im! Re¾im\ u&nosa\ (da/ne):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! '&Vi'\ saglasno\ (da/ne):set\ cp! -menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\. -menutrans Ta&g\ Files\.\.\. &Datoteke\ oznaka\.\.\. -menutrans Toggle\ &Toolbar Linija\ sa\ &alatkama\ (da/ne) -menutrans Toggle\ &Bottom\ Scrollbar Donja\ l&inija\ klizanja\ (da/ne) -menutrans Toggle\ &Left\ Scrollbar &Leva\ linija\ klizanja\ (da/ne) -menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne) - -" Edit/Global Settings/Virtual Edit -menutrans Never Nikad -menutrans Block\ Selection Izbor\ bloka -menutrans Insert\ mode Re¾im\ unosa -menutrans Block\ and\ Insert Blok\ i\ unos -menutrans Always Uvek - -" Edit/File Settings -menutrans Toggle\ Line\ &Numbering:set\ nu! Redni\ &brojevi\ (da/ne):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Re¾im\ &liste\ (da/ne):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Obavijanje\ &redova\ (da/ne):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Prelomi\ &na\ reè\ (da/ne):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Razmaci\ umesto\ &tabulacije\ (da/ne):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Auto-&uvlaèenje\ (da/ne):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! &Ce-uvlaèenje\ (da/ne):set\ cin! - -" Edit/Keymap -menutrans None Nijedan - -" Tools menu -menutrans &Tools &Alatke -menutrans &Jump\ to\ this\ tagg^] Skoèi\ na\ &ovu\ oznakug^] -menutrans Jump\ &back^T Skoèi\ &natrag^T -menutrans Build\ &Tags\ File Izgradi\ &datoteku\ oznaka -menutrans &Folding &Podvijanje -menutrans Create\ &Foldzf S&tvori\ podvijutakzf -menutrans &Delete\ Foldzd O&bri¹i\ podvijutakzd -menutrans Delete\ &All\ FoldszD Obri¹i\ sve\ po&dvijutkezD -menutrans Fold\ column\ &width ©irina\ &reda\ podvijutka -menutrans &Diff &Uporeðivanje -menutrans &Make:make 'mak&e':make -menutrans &List\ Errors:cl Spisak\ &gre¹aka:cl -menutrans L&ist\ Messages:cl! Sp&isak\ poruka:cl! -menutrans &Next\ Error:cn S&ledeæa\ gre¹ka:cn -menutrans &Previous\ Error:cp Pre&thodna\ gre¹ka:cp -menutrans &Older\ List:cold Stari\ spisa&k:cold -menutrans N&ewer\ List:cnew No&vi\ spisak:cnew -menutrans Error\ &Window Prozor\ sa\ g&re¹kama -menutrans &Set\ Compiler I&zaberi\ prevodioca -menutrans &Convert\ to\ HEX:%!xxd Pretvori\ u\ &HEKS:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Vr&ati\ u\ prvobitan\ oblik:%!xxd\ -r - -" Tools/Folding -menutrans &Enable/Disable\ foldszi &Omoguæi/prekini\ podvijanjezi -menutrans &View\ Cursor\ Linezv &Poka¾i\ red\ sa\ kursoromzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Poka¾i\ &samo\ red\ sa\ kursoromzMzx -menutrans C&lose\ more\ foldszm &Zatvori\ vi¹e\ podvijutakazm -menutrans &Close\ all\ foldszM Zatvori\ s&ve\ podvijutkezM -menutrans O&pen\ more\ foldszr Otvori\ vi¹&e\ podvijutakazr -menutrans &Open\ all\ foldszR O&tvori\ sve\ podvijutkezR -menutrans Fold\ Met&hod &Naèin\ podvijanja - -" Tools/Folding/Fold Method -menutrans M&anual &Ruèno -menutrans I&ndent &Uvuèenost -menutrans E&xpression &Izraz -menutrans S&yntax &Sintaksa -"menutrans &Diff -menutrans Ma&rker &Oznaka - -" Tools/Diff -menutrans &Update &A¾uriraj -menutrans &Get\ Block &Prihvati\ izmenu -menutrans &Put\ Block Pre&baci\ izmenu - -" Tools/Error Window -menutrans &Update:cwin &A¾uriraj:cwin -menutrans &Open:copen &Otvori:copen -menutrans &Close:cclose &Zatvori:cclose - -" Bufers menu -menutrans &Buffers &Baferi -menutrans &Refresh\ menu &A¾uriraj -menutrans Delete &Obri¹i -menutrans &Alternate A<ernativni -menutrans &Next &Sledeæi -menutrans &Previous &Prethodni -menutrans [No\ File] [Nema\ datoteke] - -" Window menu -menutrans &Window &Prozor -menutrans &New^Wn &Novi^Wn -menutrans S&plit^Ws &Podeli^Ws -menutrans Sp&lit\ To\ #^W^^ Podeli\ sa\ &alternativnim^W^^ -menutrans Split\ &Vertically^Wv Podeli\ &uspravno^Wv -menutrans Split\ File\ E&xplorer Podeli\ za\ pregled\ &datoteka -menutrans &Close^Wc &Zatvori^Wc -menutrans Close\ &Other(s)^Wo Zatvori\ &ostale^Wo -"menutrans Ne&xt^Ww &Sledeæi^Ww -"menutrans P&revious^WW P&rethodni^WW -menutrans Move\ &To Pre&mesti -menutrans Rotate\ &Up^WR &Kru¾no\ nagore^WR -menutrans Rotate\ &Down^Wr Kru¾no\ nadol&e^Wr -menutrans &Equal\ Size^W= &Iste\ velièine^W= -menutrans &Max\ Height^W_ Maksimalna\ &visina^W_ -menutrans M&in\ Height^W1_ Minima&lna\ visina^W1_ -menutrans Max\ &Width^W\| Maksimalna\ &¹irina^W\| -menutrans Min\ Widt&h^W1\| Minimalna\ ¹i&rina^W1\| - -" Window/Move To -menutrans &Top^WK &Vrh^WK -menutrans &Bottom^WJ &Podno¾je^WJ -menutrans &Left\ side^WH U&levo^WH -menutrans &Right\ side^WL U&desno^WL - -" The popup menu -menutrans &Undo &Vrati -menutrans Cu&t &Iseci -menutrans &Copy &Kopiraj -menutrans &Paste &Ubaci -menutrans &Delete I&zbri¹i -menutrans Select\ Blockwise Biraj\ &pravougaono -menutrans Select\ &Word Izaberi\ &reè -menutrans Select\ &Line Izaberi\ r&ed -menutrans Select\ &Block Izaberi\ &blok -menutrans Select\ &All Izaberi\ &sve - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Uèitaj - tmenu ToolBar.Save Saèuvaj - tmenu ToolBar.SaveAll Saèuvaj sve - tmenu ToolBar.Print ©tampaj - tmenu ToolBar.Undo Vrati - tmenu ToolBar.Redo Povrati - tmenu ToolBar.Cut Iseci - tmenu ToolBar.Copy Kopiraj - tmenu ToolBar.Paste Ubaci - tmenu ToolBar.Find Naði - tmenu ToolBar.FindNext Naði sledeæi - tmenu ToolBar.FindPrev Naði prethodni - tmenu ToolBar.Replace Zameni - tmenu ToolBar.New Novi - tmenu ToolBar.WinSplit Podeli prozor - tmenu ToolBar.WinMax Maksimalna visina - tmenu ToolBar.WinMin Minimalna visina - tmenu ToolBar.WinVSplit Podeli uspravno - tmenu ToolBar.WinMaxWidth Maksimalna ¹irina - tmenu ToolBar.WinMinWidth Minimalna ¹irina - tmenu ToolBar.WinClose Zatvori prozor - tmenu ToolBar.LoadSesn Uèitaj seansu - tmenu ToolBar.SaveSesn Saèuvaj seansu - tmenu ToolBar.RunScript Izvr¹i spis - tmenu ToolBar.Make 'make' - tmenu ToolBar.Shell Operativno okru¾enje - tmenu ToolBar.RunCtags Napravi oznake - tmenu ToolBar.TagJump Idi na oznaku - tmenu ToolBar.Help Pomoæ - tmenu ToolBar.FindHelp Naði obja¹njenje - endfun -endif - -" Syntax menu -menutrans &Syntax &Sintaksa -menutrans &Show\ filetypes\ in\ menu Izbor\ 'filetype'\ iz\ &menija -menutrans Set\ '&syntax'\ only Pode&si\ 'syntax'\ samo -menutrans Set\ '&filetype'\ too Podesi\ 'filetype'\ &takoðe -menutrans &Off &Iskljuèeno -menutrans &Manual &Ruèno -menutrans A&utomatic &Automatski -menutrans on/off\ for\ &This\ file Da/ne\ za\ ovu\ &datoteku -menutrans Co&lor\ test Provera\ &boja -menutrans &Highlight\ test Provera\ isti&canja -menutrans &Convert\ to\ HTML Pretvori\ &u\ HTML - -" dialog texts -let menutrans_help_dialog = "Unesite naredbu ili reè èije poja¹njenje tra¾ite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog re¾ima (npr. s_)\nDodajte ' za imena opcija (npr. 'shiftwidth')" - -let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma." - -let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena." - -let g:menutrans_textwidth_dialog = "Unesite novu ¹irinu teksta (0 spreèava prelom)" - -let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke" - -let menutrans_no_file = "[Nema datoteke]" diff --git a/share/vim/vim73/lang/menu_sr_rs.iso_8859-5.vim b/share/vim/vim73/lang/menu_sr_rs.iso_8859-5.vim deleted file mode 100644 index e4d322dc..00000000 --- a/share/vim/vim73/lang/menu_sr_rs.iso_8859-5.vim +++ /dev/null @@ -1,259 +0,0 @@ -" Menu Translations: Serbian -" Maintainer: Aleksandar Jelenak -" Last Change: Fri, 30 May 2003 12:02:07 -0400 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 -scriptencoding iso8859-5 - -" Help menu -menutrans &Help ¿ÞÜÞ&û -menutrans &Overview &¿àÕÓÛÕÔ -menutrans &User\ Manual &ÃßãâáâÒÞ\ ×Ð\ ÚÞàØáÝØÚÕ -menutrans &How-to\ links &ºÐÚÞ\ ÔÐ\.\.\. -menutrans &Find &½ÐòØ -menutrans &Credits &·ÐáÛãÓÕ -menutrans Co&pying ¿&àÕã×ØÜÐúÕ -menutrans O&rphans &ÁØàÞçØûØ -menutrans &Version &²Õà×ØøÐ -menutrans &About &¾\ ßàÞÓàÐÜã - -" File menu -menutrans &File &´ÐâÞâÕÚÐ -menutrans &Open\.\.\.:e &¾âÒÞàØ\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp &¿ÞÔÕÛØ-ÞâÒÞàØ\.\.\.:sp -menutrans &New:enew &½ÞÒÐ:enew -menutrans &Close:close &·ÐâÒÞàØ:close -menutrans &Save:w &ÁÐçãÒÐø:w -menutrans Save\ &As\.\.\.:sav ÁÐçãÒÐø\ &ÚÐÞ\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. ¿ÞÔÕÛØ\ Ø\ &ãßÞàÕÔØ\ áÐ\.\.\. -menutrans Split\ Patched\ &By\.\.\. ¿Þ&ÔÕÛØ\ Ø\ ßàÕßàÐÒØ\ áÐ\.\.\. -menutrans &Print ÈâÐ&ÜßÐø -menutrans Sa&ve-Exit:wqa ÁÐçãÒÐø\ Ø\ ×Ð&ÒàèØ:wqa -menutrans E&xit:qa º&àÐø:qa - -" Edit menu -menutrans &Edit &ÃàÕòØÒÐúÕ -menutrans &Undou &²àÐâØu -menutrans &Redo^R &¿ÞÒàÐâØ^R -menutrans Rep&eat\. ¿&ÞÝÞÒØ\. -menutrans Cu&t"+x ¸áÕ&æØ"+x -menutrans &Copy"+y &ºÞßØàÐø"+y -menutrans &Paste"+gP &ÃÑÐæØ"+gP -menutrans &Paste"+P &ÃÑÐæØ"+gP -menutrans Put\ &Before[p ÁâÐÒØ\ ßàÕ&Ô[p -menutrans Put\ &After]p ÁâÐÒØ\ &Ø×Ð]p -menutrans &Deletex ¸×&ÑàØèØx -menutrans &Select\ allggVG ¸×ÐÑÕàØ\ áÒ&ÕggVG -menutrans &Find\.\.\. &½ÐòØ\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. ½ÐòØ\ Ø\ &×ÐÜÕÝØ\.\.\. -menutrans Settings\ &Window ¿&àÞ×Þà\ ßÞÔÕèÐÒÐúÐ -menutrans &Global\ Settings ¾ß&èâÐ\ ßÞÔÕèÐÒÐúÐ -menutrans F&ile\ Settings ¿ÞÔÕèÐÒÐúÐ\ ×Ð\ ÔÐ&âÞâÕÚÕ -menutrans &Shiftwidth &¿ÞÜÕàÐø -menutrans Soft\ &Tabstop &¼ÕÚÐ\ âÐÑãÛÐæØøÐ -menutrans Te&xt\ Width\.\.\. &ÈØàØÝÐ\ âÕÚáâÐ\.\.\. -menutrans &File\ Format\.\.\. &²àáâÐ\ ÔÐâÞâÕÚÕ\.\.\. -menutrans C&olor\ Scheme ±Þ&øÕ -menutrans &Keymap ¿àÕá&ÛØÚÐÒÐúÕ\ âÐáâÐâãàÕ -menutrans Select\ Fo&nt\.\.\. ¸×ÑÞà\ &äÞÝâÐ\.\.\. - -" Edit/Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! ½ÐÓÛÐáØ\ &ÞÑàÐ×æÕ\ (ÔÐ/ÝÕ):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! ·ÐÝÕÜÐàØ\ \ÒÕÛØçØÝã\ &áÛÞÒÐ\ (ÔÐ/ÝÕ):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! ¿àÞÒÕàØ\ ßàÐâÕûã\ &×ÐÓàÐÔã\ (ÔÐ/ÝÕ):set\ sm! -menutrans &Context\ lines ²ØÔùØÒØ\ &àÕÔÞÒØ -menutrans &Virtual\ Edit ²ØàâãÕÛÝÞ\ &ãàÕòØÒÐúÕ -menutrans Toggle\ Insert\ &Mode:set\ im! ÀÕÖØÜ\ ã&ÝÞáÐ\ (ÔÐ/ÝÕ):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! '&Vi'\ áÐÓÛÐáÝÞ\ (ÔÐ/ÝÕ):set\ cp! -menutrans Search\ &Path\.\.\. ¿ãâÐúÐ\ &ßàÕâàÐÓÕ\.\.\. -menutrans Ta&g\ Files\.\.\. &´ÐâÞâÕÚÕ\ Þ×ÝÐÚÐ\.\.\. -menutrans Toggle\ &Toolbar »ØÝØøÐ\ áÐ\ &ÐÛÐâÚÐÜÐ\ (ÔÐ/ÝÕ) -menutrans Toggle\ &Bottom\ Scrollbar ´ÞúÐ\ Û&ØÝØøÐ\ ÚÛØ×ÐúÐ\ (ÔÐ/ÝÕ) -menutrans Toggle\ &Left\ Scrollbar &»ÕÒÐ\ ÛØÝØøÐ\ ÚÛØ×ÐúÐ\ (ÔÐ/ÝÕ) -menutrans Toggle\ &Right\ Scrollbar &´ÕáÝÐ\ ÛØÝØøÐ\ ÚÛØ×ÐúÐ\ (ÔÐ/ÝÕ) - -" Edit/Global Settings/Virtual Edit -menutrans Never ½ØÚÐÔ -menutrans Block\ Selection ¸×ÑÞà\ ÑÛÞÚÐ -menutrans Insert\ mode ÀÕÖØÜ\ ãÝÞáÐ -menutrans Block\ and\ Insert ±ÛÞÚ\ Ø\ ãÝÞá -menutrans Always ÃÒÕÚ - -" Edit/File Settings -menutrans Toggle\ Line\ &Numbering:set\ nu! ÀÕÔÝØ\ &ÑàÞøÕÒØ\ (ÔÐ/ÝÕ):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! ÀÕÖØÜ\ &ÛØáâÕ\ (ÔÐ/ÝÕ):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! ¾ÑÐÒØøÐúÕ\ &àÕÔÞÒÐ\ (ÔÐ/ÝÕ):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! ¿àÕÛÞÜØ\ &ÝÐ\ àÕç\ (ÔÐ/ÝÕ):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! ÀÐ×ÜÐæØ\ ãÜÕáâÞ\ &âÐÑãÛÐæØøÕ\ (ÔÐ/ÝÕ):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! °ãâÞ-&ãÒÛÐçÕúÕ\ (ÔÐ/ÝÕ):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! &ÆÕ-ãÒÛÐçÕúÕ\ (ÔÐ/ÝÕ):set\ cin! - -" Edit/Keymap -menutrans None ½ØøÕÔÐÝ - -" Tools menu -menutrans &Tools &°ÛÐâÚÕ -menutrans &Jump\ to\ this\ tagg^] ÁÚÞçØ\ ÝÐ\ &ÞÒã\ Þ×ÝÐÚãg^] -menutrans Jump\ &back^T ÁÚÞçØ\ &ÝÐâàÐÓ^T -menutrans Build\ &Tags\ File ¸×ÓàÐÔØ\ &ÔÐâÞâÕÚã\ Þ×ÝÐÚÐ -menutrans &Folding &¿ÞÔÒØøÐúÕ -menutrans Create\ &Foldzf Á&âÒÞàØ\ ßÞÔÒØøãâÐÚzf -menutrans &Delete\ Foldzd ¾&ÑàØèØ\ ßÞÔÒØøãâÐÚzd -menutrans Delete\ &All\ FoldszD ¾ÑàØèØ\ áÒÕ\ ßÞ&ÔÒØøãâÚÕzD -menutrans Fold\ column\ &width ÈØàØÝÐ\ &àÕÔÐ\ ßÞÔÒØøãâÚÐ -menutrans &Diff &ÃßÞàÕòØÒÐúÕ -menutrans &Make:make 'mak&Õ':make -menutrans &List\ Errors:cl ÁßØáÐÚ\ &ÓàÕèÐÚÐ:cl -menutrans L&ist\ Messages:cl! Áß&ØáÐÚ\ ßÞàãÚÐ:cl! -menutrans &Next\ Error:cn Á&ÛÕÔÕûÐ\ ÓàÕèÚÐ:cn -menutrans &Previous\ Error:cp ¿àÕ&âåÞÔÝÐ\ ÓàÕèÚÐ:cp -menutrans &Older\ List:cold ÁâÐàØ\ áßØáÐ&Ú:cold -menutrans N&ewer\ List:cnew ½Þ&ÒØ\ áßØáÐÚ:cnew -menutrans Error\ &Window ¿àÞ×Þà\ áÐ\ Ó&àÕèÚÐÜÐ -menutrans &Set\ Compiler ¸&×ÐÑÕàØ\ ßàÕÒÞÔØÞæÐ -menutrans &Convert\ to\ HEX:%!xxd ¿àÕâÒÞàØ\ ã\ &ŵºÁ:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r ²à&ÐâØ\ ã\ ßàÒÞÑØâÐÝ\ ÞÑÛØÚ:%!xxd\ -r - -" Tools/Folding -menutrans &Enable/Disable\ foldszi &¾ÜÞÓãûØ/ßàÕÚØÝØ\ ßÞÔÒØøÐúÕzi -menutrans &View\ Cursor\ Linezv &¿ÞÚÐÖØ\ àÕÔ\ áÐ\ ÚãàáÞàÞÜzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx ¿ÞÚÐÖØ\ &áÐÜÞ\ àÕÔ\ áÐ\ ÚãàáÞàÞÜzMzx -menutrans C&lose\ more\ foldszm &·ÐâÒÞàØ\ ÒØèÕ\ ßÞÔÒØøãâÐÚÐzm -menutrans &Close\ all\ foldszM ·ÐâÒÞàØ\ á&ÒÕ\ ßÞÔÒØøãâÚÕzM -menutrans O&pen\ more\ foldszr ¾âÒÞàØ\ ÒØè&Õ\ ßÞÔÒØøãâÐÚÐzr -menutrans &Open\ all\ foldszR ¾&âÒÞàØ\ áÒÕ\ ßÞÔÒØøãâÚÕzR -menutrans Fold\ Met&hod &½ÐçØÝ\ ßÞÔÒØøÐúÐ - -" Tools/Folding/Fold Method -menutrans M&anual &ÀãçÝÞ -menutrans I&ndent &ÃÒãçÕÝÞáâ -menutrans E&xpression &¸×àÐ× -menutrans S&yntax &ÁØÝâÐÚáÐ -"menutrans &Diff -menutrans Ma&rker &¾×ÝÐÚÐ - -" Tools/Diff -menutrans &Update &°ÖãàØàÐø -menutrans &Get\ Block &¿àØåÒÐâØ\ Ø×ÜÕÝã -menutrans &Put\ Block ¿àÕ&ÑÐæØ\ Ø×ÜÕÝã - -" Tools/Error Window -menutrans &Update:cwin &°ÖãàØàÐø:cwin -menutrans &Open:copen &¾âÒÞàØ:copen -menutrans &Close:cclose &·ÐâÒÞàØ:cclose - -" Bufers menu -menutrans &Buffers &±ÐäÕàØ -menutrans &Refresh\ menu &°ÖãàØàÐø -menutrans Delete &¾ÑàØèØ -menutrans &Alternate °&ÛâÕàÝÐâØÒÝØ -menutrans &Next &ÁÛÕÔÕûØ -menutrans &Previous &¿àÕâåÞÔÝØ -menutrans [No\ File] [½ÕÜÐ\ ÔÐâÞâÕÚÕ] - -" Window menu -menutrans &Window &¿àÞ×Þà -menutrans &New^Wn &½ÞÒØ^Wn -menutrans S&plit^Ws &¿ÞÔÕÛØ^Ws -menutrans Sp&lit\ To\ #^W^^ ¿ÞÔÕÛØ\ áÐ\ &ÐÛâÕàÝÐâØÒÝØÜ^W^^ -menutrans Split\ &Vertically^Wv ¿ÞÔÕÛØ\ &ãáßàÐÒÝÞ^Wv -menutrans Split\ File\ E&xplorer ¿ÞÔÕÛØ\ ×Ð\ ßàÕÓÛÕÔ\ &ÔÐâÞâÕÚÐ -menutrans &Close^Wc &·ÐâÒÞàØ^Wc -menutrans Close\ &Other(s)^Wo ·ÐâÒÞàØ\ &ÞáâÐÛÕ^Wo -"menutrans Ne&xt^Ww &ÁÛÕÔÕûØ^Ww -"menutrans P&revious^WW ¿&àÕâåÞÔÝØ^WW -menutrans Move\ &To ¿àÕ&ÜÕáâØ -menutrans Rotate\ &Up^WR &ºàãÖÝÞ\ ÝÐÓÞàÕ^WR -menutrans Rotate\ &Down^Wr ºàãÖÝÞ\ ÝÐÔÞÛ&Õ^Wr -menutrans &Equal\ Size^W= &¸áâÕ\ ÒÕÛØçØÝÕ^W= -menutrans &Max\ Height^W_ ¼ÐÚáØÜÐÛÝÐ\ &ÒØáØÝÐ^W_ -menutrans M&in\ Height^W1_ ¼ØÝØÜÐ&ÛÝÐ\ ÒØáØÝÐ^W1_ -menutrans Max\ &Width^W\| ¼ÐÚáØÜÐÛÝÐ\ &èØàØÝÐ^W\| -menutrans Min\ Widt&h^W1\| ¼ØÝØÜÐÛÝÐ\ èØ&àØÝÐ^W1\| - -" Window/Move To -menutrans &Top^WK &²àå^WK -menutrans &Bottom^WJ &¿ÞÔÝÞÖøÕ^WJ -menutrans &Left\ side^WH Ã&ÛÕÒÞ^WH -menutrans &Right\ side^WL Ã&ÔÕáÝÞ^WL - -" The popup menu -menutrans &Undo &²àÐâØ -menutrans Cu&t &¸áÕæØ -menutrans &Copy &ºÞßØàÐø -menutrans &Paste &ÃÑÐæØ -menutrans &Delete ¸&×ÑàØèØ -menutrans Select\ Blockwise ±ØàÐø\ &ßàÐÒÞãÓÐÞÝÞ -menutrans Select\ &Word ¸×ÐÑÕàØ\ &àÕç -menutrans Select\ &Line ¸×ÐÑÕàØ\ à&ÕÔ -menutrans Select\ &Block ¸×ÐÑÕàØ\ &ÑÛÞÚ -menutrans Select\ &All ¸×ÐÑÕàØ\ &áÒÕ - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open ÃçØâÐø - tmenu ToolBar.Save ÁÐçãÒÐø - tmenu ToolBar.SaveAll ÁÐçãÒÐø áÒÕ - tmenu ToolBar.Print ÈâÐÜßÐø - tmenu ToolBar.Undo ²àÐâØ - tmenu ToolBar.Redo ¿ÞÒàÐâØ - tmenu ToolBar.Cut ¸áÕæØ - tmenu ToolBar.Copy ºÞßØàÐø - tmenu ToolBar.Paste ÃÑÐæØ - tmenu ToolBar.Find ½ÐòØ - tmenu ToolBar.FindNext ½ÐòØ áÛÕÔÕûØ - tmenu ToolBar.FindPrev ½ÐòØ ßàÕâåÞÔÝØ - tmenu ToolBar.Replace ·ÐÜÕÝØ - tmenu ToolBar.New ½ÞÒØ - tmenu ToolBar.WinSplit ¿ÞÔÕÛØ ßàÞ×Þà - tmenu ToolBar.WinMax ¼ÐÚáØÜÐÛÝÐ ÒØáØÝÐ - tmenu ToolBar.WinMin ¼ØÝØÜÐÛÝÐ ÒØáØÝÐ - tmenu ToolBar.WinVSplit ¿ÞÔÕÛØ ãáßàÐÒÝÞ - tmenu ToolBar.WinMaxWidth ¼ÐÚáØÜÐÛÝÐ èØàØÝÐ - tmenu ToolBar.WinMinWidth ¼ØÝØÜÐÛÝÐ èØàØÝÐ - tmenu ToolBar.WinClose ·ÐâÒÞàØ ßàÞ×Þà - tmenu ToolBar.LoadSesn ÃçØâÐø áÕÐÝáã - tmenu ToolBar.SaveSesn ÁÐçãÒÐø áÕÐÝáã - tmenu ToolBar.RunScript ¸×ÒàèØ áßØá - tmenu ToolBar.Make 'make' - tmenu ToolBar.Shell ¾ßÕàÐâØÒÝÞ ÞÚàãÖÕúÕ - tmenu ToolBar.RunCtags ½ÐßàÐÒØ Þ×ÝÐÚÕ - tmenu ToolBar.TagJump ¸ÔØ ÝÐ Þ×ÝÐÚã - tmenu ToolBar.Help ¿ÞÜÞû - tmenu ToolBar.FindHelp ½ÐòØ ÞÑøÐèúÕúÕ - endfun -endif - -" Syntax menu -menutrans &Syntax &ÁØÝâÐÚáÐ -menutrans &Show\ filetypes\ in\ menu ¸×ÑÞà\ 'filetype'\ Ø×\ &ÜÕÝØøÐ -menutrans Set\ '&syntax'\ only ¿ÞÔÕ&áØ\ 'syntax'\ áÐÜÞ -menutrans Set\ '&filetype'\ too ¿ÞÔÕáØ\ 'filetype'\ &âÐÚÞòÕ -menutrans &Off &¸áÚùãçÕÝÞ -menutrans &Manual &ÀãçÝÞ -menutrans A&utomatic &°ãâÞÜÐâáÚØ -menutrans on/off\ for\ &This\ file ´Ð/ÝÕ\ ×Ð\ ÞÒã\ &ÔÐâÞâÕÚã -menutrans Co&lor\ test ¿àÞÒÕàÐ\ &ÑÞøÐ -menutrans &Highlight\ test ¿àÞÒÕàÐ\ ØáâØ&æÐúÐ -menutrans &Convert\ to\ HTML ¿àÕâÒÞàØ\ &ã\ HTML - -" dialog texts -let menutrans_help_dialog = "ÃÝÕáØâÕ ÝÐàÕÔÑã ØÛØ àÕç çØøÕ ßÞøÐèúÕúÕ âàÐÖØâÕ:\n\n´ÞÔÐøâÕ i_ ×Ð ÝÐàÕÔÑÕ ãÝÞáÐ (Ýßà. i_CTRL-X)\n´ÞÔÐøâÕ c_ ×Ð ÝÐàÕÔÑÕ ÚÞÜÐÝÔÝÞÓ àÕÖØÜÐ (Ýßà. á_)\n´ÞÔÐøâÕ ' ×Ð ØÜÕÝÐ ÞßæØøÐ (Ýßà. 'shiftwidth')" - -let g:menutrans_path_dialog = "ÃÝÕáØâÕ ßãâ ßàÕâàÐÓÕ ×Ð ÔÐâÞâÕÚÕ\nÀÐ×ÔÒÞøØâÕ ×ÐàÕ×ØÜÐ ØÜÕÝÐ ÔØàÕÚâÞàØøãÜÐ." - -let g:menutrans_tags_dialog = "ÃÝÕáØâÕ ØÜÕÝÐ ÔÐâÞâÕÚÐ áÐ Þ×ÝÐÚÐÜÐ\nÀÐ×ÔÒÞøØâÕ ×ÐàÕ×ØÜÐ ØÜÕÝÐ." - -let g:menutrans_textwidth_dialog = "ÃÝÕáØâÕ ÝÞÒã èØàØÝã âÕÚáâÐ (0 áßàÕçÐÒÐ ßàÕÛÞÜ)" - -let g:menutrans_fileformat_dialog = "¸×ÐÑÕàØâÕ Òàáâã ÔÐâÞâÕÚÕ" - -let menutrans_no_file = "[½ÕÜÐ ÔÐâÞâÕÚÕ]" diff --git a/share/vim/vim73/lang/menu_sr_rs.utf-8.vim b/share/vim/vim73/lang/menu_sr_rs.utf-8.vim deleted file mode 100644 index 85f1491d..00000000 --- a/share/vim/vim73/lang/menu_sr_rs.utf-8.vim +++ /dev/null @@ -1,261 +0,0 @@ -" Menu Translations: Serbian -" Maintainer: Aleksandar Jelenak -" Last Change: Fri, 30 May 2003 10:17:39 Eastern Daylight Time - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 -scriptencoding utf-8 - -" Help menu -menutrans &Help Помо&ћ -menutrans &Overview &Преглед -menutrans &User\ Manual &Упутство\ за\ кориснике -menutrans &How-to\ links &Како\ да\.\.\. -menutrans &Find &Нађи -menutrans &Credits &Заслуге -menutrans Co&pying П&реузимање -menutrans O&rphans &Сирочићи -menutrans &Version &Верзија -menutrans &About &О\ програму - -" File menu -menutrans &File &Датотека -menutrans &Open\.\.\.:e &Отвори\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp &Подели-отвори\.\.\.:sp -menutrans &New:enew &Нова:enew -menutrans &Close:close &Затвори:close -menutrans &Save:w &Сачувај:w -menutrans Save\ &As\.\.\.:sav Сачувај\ &као\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Подели\ и\ &упореди\ са\.\.\. -menutrans Split\ Patched\ &By\.\.\. По&дели\ и\ преправи\ са\.\.\. -menutrans &Print Шта&мпај -menutrans Sa&ve-Exit:wqa Сачувај\ и\ за&врши:wqa -menutrans E&xit:qa К&рај:qa - -" Edit menu -menutrans &Edit &Уређивање -menutrans &Undou &Вратиu -menutrans &Redo^R &Поврати^R -menutrans Rep&eat\. П&онови\. -menutrans Cu&t"+x Исе&ци"+x -menutrans &Copy"+y &Копирај"+y -menutrans &Paste"+gP &Убаци"+gP -menutrans &Paste"+P &Убаци"+gP -menutrans Put\ &Before[p Стави\ пре&д[p -menutrans Put\ &After]p Стави\ &иза]p -menutrans &Deletex Из&бришиx -menutrans &Select\ allggVG Изабери\ св&еggVG -menutrans &Find\.\.\. &Нађи\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Нађи\ и\ &замени\.\.\. -menutrans Settings\ &Window П&розор\ подешавања -menutrans &Global\ Settings Оп&шта\ подешавања -menutrans F&ile\ Settings Подешавања\ за\ да&тотеке -menutrans &Shiftwidth &Померај -menutrans Soft\ &Tabstop &Мека\ табулација -menutrans Te&xt\ Width\.\.\. &Ширина\ текста\.\.\. -menutrans &File\ Format\.\.\. &Врста\ датотеке\.\.\. -menutrans C&olor\ Scheme Бо&је -menutrans &Keymap Прес&ликавање\ тастатуре -menutrans Select\ Fo&nt\.\.\. Избор\ &фонта\.\.\. - -" Edit/Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Нагласи\ &образце\ (да/не):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Занемари\ \величину\ &слова\ (да/не):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Провери\ пратећу\ &заграду\ (да/не):set\ sm! -menutrans &Context\ lines Видљиви\ &редови -menutrans &Virtual\ Edit Виртуелно\ &уређивање -menutrans Toggle\ Insert\ &Mode:set\ im! Режим\ у&носа\ (да/не):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! '&Vi'\ сагласно\ (да/не):set\ cp! -menutrans Search\ &Path\.\.\. Путања\ &претраге\.\.\. -menutrans Ta&g\ Files\.\.\. &Датотеке\ ознака\.\.\. -menutrans Toggle\ &Toolbar Линија\ са\ &алаткама\ (да/не) -menutrans Toggle\ &Bottom\ Scrollbar Доња\ л&инија\ клизања\ (да/не) -menutrans Toggle\ &Left\ Scrollbar &Лева\ линија\ клизања\ (да/не) -menutrans Toggle\ &Right\ Scrollbar &Десна\ линија\ клизања\ (да/не) - -" Edit/Global Settings/Virtual Edit -menutrans Never Никад -menutrans Block\ Selection Избор\ блока -menutrans Insert\ mode Режим\ уноса -menutrans Block\ and\ Insert Блок\ и\ унос -menutrans Always Увек - -" Edit/File Settings -menutrans Toggle\ Line\ &Numbering:set\ nu! Редни\ &бројеви\ (да/не):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Режим\ &листе\ (да/не):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Обавијање\ &редова\ (да/не):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Преломи\ &на\ реч\ (да/не):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Размаци\ уместо\ &табулације\ (да/не):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Ауто-&увлачење\ (да/не):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! &Це-увлачење\ (да/не):set\ cin! - -" Edit/Keymap -menutrans None Ниједан - -" Tools menu -menutrans &Tools &Алатке -menutrans &Jump\ to\ this\ tagg^] Скочи\ на\ &ову\ ознакуg^] -menutrans Jump\ &back^T Скочи\ &натраг^T -menutrans Build\ &Tags\ File Изгради\ &датотеку\ ознака -menutrans &Folding &Подвијање -menutrans Create\ &Foldzf С&твори\ подвијутакzf -menutrans &Delete\ Foldzd О&бриши\ подвијутакzd -menutrans Delete\ &All\ FoldszD Обриши\ све\ по&двијуткеzD -menutrans Fold\ column\ &width Ширина\ &реда\ подвијутка -menutrans &Diff &Упоређивање -menutrans &Make:make 'mak&е':make -menutrans &List\ Errors:cl Списак\ &грешака:cl -menutrans L&ist\ Messages:cl! Сп&исак\ порука:cl! -menutrans &Next\ Error:cn С&ледећа\ грешка:cn -menutrans &Previous\ Error:cp Пре&тходна\ грешка:cp -menutrans &Older\ List:cold Стари\ списа&к:cold -menutrans N&ewer\ List:cnew Но&ви\ списак:cnew -menutrans Error\ &Window Прозор\ са\ г&решкама -menutrans &Set\ Compiler И&забери\ преводиоца -menutrans &Convert\ to\ HEX:%!xxd Претвори\ у\ &ХЕКС:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Вр&ати\ у\ првобитан\ облик:%!xxd\ -r - -" Tools/Folding -menutrans &Enable/Disable\ foldszi &Омогући/прекини\ подвијањеzi -menutrans &View\ Cursor\ Linezv &Покажи\ ред\ са\ курсоромzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Покажи\ &само\ ред\ са\ курсоромzMzx -menutrans C&lose\ more\ foldszm &Затвори\ више\ подвијутакаzm -menutrans &Close\ all\ foldszM Затвори\ с&ве\ подвијуткеzM -menutrans O&pen\ more\ foldszr Отвори\ виш&е\ подвијутакаzr -menutrans &Open\ all\ foldszR О&твори\ све\ подвијуткеzR -menutrans Fold\ Met&hod &Начин\ подвијања - -" Tools/Folding/Fold Method -menutrans M&anual &Ручно -menutrans I&ndent &Увученост -menutrans E&xpression &Израз -menutrans S&yntax &Синтакса -"menutrans &Diff -menutrans Ma&rker &Ознака - -" Tools/Diff -menutrans &Update &Ажурирај -menutrans &Get\ Block &Прихвати\ измену -menutrans &Put\ Block Пре&баци\ измену - -" Tools/Error Window -menutrans &Update:cwin &Ажурирај:cwin -menutrans &Open:copen &Отвори:copen -menutrans &Close:cclose &Затвори:cclose - -" Bufers menu -menutrans &Buffers &Бафери -menutrans &Refresh\ menu &Ажурирај -menutrans Delete &Обриши -menutrans &Alternate А&лтернативни -menutrans &Next &Следећи -menutrans &Previous &Претходни -menutrans [No\ File] [Нема\ датотеке] - -" Window menu -menutrans &Window &Прозор -menutrans &New^Wn &Нови^Wn -menutrans S&plit^Ws &Подели^Ws -menutrans Sp&lit\ To\ #^W^^ Подели\ са\ &алтернативним^W^^ -menutrans Split\ &Vertically^Wv Подели\ &усправно^Wv -menutrans Split\ File\ E&xplorer Подели\ за\ преглед\ &датотека -menutrans &Close^Wc &Затвори^Wc -menutrans Close\ &Other(s)^Wo Затвори\ &остале^Wo -"menutrans Ne&xt^Ww &Следећи^Ww -"menutrans P&revious^WW П&ретходни^WW -menutrans Move\ &To Пре&мести -menutrans Rotate\ &Up^WR &Кружно\ нагоре^WR -menutrans Rotate\ &Down^Wr Кружно\ надол&е^Wr -menutrans &Equal\ Size^W= &Исте\ величине^W= -menutrans &Max\ Height^W_ Максимална\ &висина^W_ -menutrans M&in\ Height^W1_ Минима&лна\ висина^W1_ -menutrans Max\ &Width^W\| Максимална\ &ширина^W\| -menutrans Min\ Widt&h^W1\| Минимална\ ши&рина^W1\| - -" Window/Move To -menutrans &Top^WK &Врх^WK -menutrans &Bottom^WJ &Подножје^WJ -menutrans &Left\ side^WH У&лево^WH -menutrans &Right\ side^WL У&десно^WL - -" The popup menu -menutrans &Undo &Врати -menutrans Cu&t &Исеци -menutrans &Copy &Копирај -menutrans &Paste &Убаци -menutrans &Delete И&збриши -menutrans Select\ Blockwise Бирај\ &правоугаоно -menutrans Select\ &Word Изабери\ &реч -menutrans Select\ &Line Изабери\ р&ед -menutrans Select\ &Block Изабери\ &блок -menutrans Select\ &All Изабери\ &све - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Учитај - tmenu ToolBar.Save Сачувај - tmenu ToolBar.SaveAll Сачувај све - tmenu ToolBar.Print Штампај - tmenu ToolBar.Undo Врати - tmenu ToolBar.Redo Поврати - tmenu ToolBar.Cut Исеци - tmenu ToolBar.Copy Копирај - tmenu ToolBar.Paste Убаци - tmenu ToolBar.Find Нађи - tmenu ToolBar.FindNext Нађи следећи - tmenu ToolBar.FindPrev Нађи претходни - tmenu ToolBar.Replace Замени - tmenu ToolBar.New Нови - tmenu ToolBar.WinSplit Подели прозор - tmenu ToolBar.WinMax Максимална висина - tmenu ToolBar.WinMin Минимална висина - tmenu ToolBar.WinVSplit Подели усправно - tmenu ToolBar.WinMaxWidth Максимална ширина - tmenu ToolBar.WinMinWidth Минимална ширина - tmenu ToolBar.WinClose Затвори прозор - tmenu ToolBar.LoadSesn Учитај сеансу - tmenu ToolBar.SaveSesn Сачувај сеансу - tmenu ToolBar.RunScript Изврши спис - tmenu ToolBar.Make 'make' - tmenu ToolBar.Shell Оперативно окружење - tmenu ToolBar.RunCtags Направи ознаке - tmenu ToolBar.TagJump Иди на ознаку - tmenu ToolBar.Help Помоћ - tmenu ToolBar.FindHelp Нађи објашњење - endfun -endif - -" Syntax menu -menutrans &Syntax &Синтакса -menutrans &Show\ filetypes\ in\ menu Избор\ 'filetype'\ из\ &менија -menutrans Set\ '&syntax'\ only Поде&си\ 'syntax'\ само -menutrans Set\ '&filetype'\ too Подеси\ 'filetype'\ &такође -menutrans &Off &Искључено -menutrans &Manual &Ручно -menutrans A&utomatic &Аутоматски -menutrans on/off\ for\ &This\ file Да/не\ за\ ову\ &датотеку -menutrans Co&lor\ test Провера\ &боја -menutrans &Highlight\ test Провера\ исти&цања -menutrans &Convert\ to\ HTML Претвори\ &у\ HTML - -" dialog texts -let menutrans_help_dialog = "Унесите наредбу или реч чије појашњење тражите:\n\nДодајте i_ за наредбе уноса (нпр. i_CTRL-X)\nДодајте c_ за наредбе командног режима (нпр. с_)\nДодајте ' за имена опција (нпр. 'shiftwidth')" - -let g:menutrans_path_dialog = "Унесите пут претраге за датотеке\nРаздвојите зарезима имена директоријума." - -let g:menutrans_tags_dialog = "Унесите имена датотека са ознакама\nРаздвојите зарезима имена." - -let g:menutrans_textwidth_dialog = "Унесите нову ширину текста (0 спречава прелом)" - -let g:menutrans_fileformat_dialog = "Изаберите врсту датотеке" - -let menutrans_no_file = "[Нема датотеке]" - -" vim: tw=0 keymap=serbian diff --git a/share/vim/vim73/lang/menu_sv_se.latin1.vim b/share/vim/vim73/lang/menu_sv_se.latin1.vim deleted file mode 100644 index 8935e0da..00000000 --- a/share/vim/vim73/lang/menu_sv_se.latin1.vim +++ /dev/null @@ -1,250 +0,0 @@ -" Menu Translations: Swedish -" Maintainer: Johan Svedberg -" Last Change: 2006 Apr 13 - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" The translations below are in latin1, but they work for cp1252 and -" iso-8859-15 without conversion as well. -if &enc != "cp1252" && &enc != "iso-8859-15" - scriptencoding latin1 -endif - -" Help menu -menutrans &Help &Hjälp -menutrans &Overview &Översikt -menutrans &User\ Manual &Användarmanual -menutrans &How-to\ links &Hur-göra-länkar -menutrans &Find\.\.\. &Sök\.\.\. -menutrans &Credits &Tack -menutrans Co&pying &Kopieringsrättigheter -menutrans &Sponsor/Register &Sponsra/Registrera -menutrans O&rphans &Föräldralösa -menutrans &Version &Version -menutrans &About &Om - -" File menu -menutrans &File &Arkiv -menutrans &Open\.\.\.:e &Öppna\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp Öppna\ i\ splitt-vy\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew Öppna\ flik\.\.\.:tabnew -menutrans &New:enew &Ny:enew -menutrans &Close:close S&täng:close -menutrans &Save:w &Spara:w -menutrans Save\ &As\.\.\.:sav Spara\ som\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Dela\ diff\ med\.\.\. -menutrans Split\ Patched\ &By\.\.\. Dela\ lappad\ med\.\.\. -menutrans &Print Skriv\ &ut -menutrans Sa&ve-Exit:wqa Spara\ &och\ avsluta:wqa -menutrans E&xit:qa &Avsluta:qa - -" Edit menu -menutrans &Edit &Redigera -menutrans &Undou &Ångrau -menutrans &Redo^R &Gör\ om^R -menutrans Rep&eat\. &Repetera\. -menutrans Cu&t"+x Klipp\ &ut"+x -menutrans &Copy"+y &Kopiera"+y -menutrans &Paste"+gP Klistra &in"+gP -menutrans Put\ &Before[p Sätt\ in\ &före[p -menutrans Put\ &After]p Sätt\ in\ &efter]p -menutrans &Select\ AllggVG &Markera\ alltggVG -menutrans &Find\.\.\. &Sök\.\.\. -menutrans &Find/ &Sök/ -menutrans Find\ and\ Rep&lace\.\.\. Sök\ och\ ersätt\.\.\. -menutrans Find\ and\ Rep&lace:%s Sök\ och\ ersätt:%s -menutrans Find\ and\ Rep&lace Sök\ och\ ersätt -menutrans Find\ and\ Rep&lace:s Sök\ och\ ersätt:s -menutrans Settings\ &Window In&ställningar -menutrans &Global\ Settings Gl&obala\ inställningar -menutrans F&ile\ Settings Fi&linställningar -menutrans C&olor\ Scheme F&ärgschema -menutrans &Keymap &Tangentbordsuppsättning - -" Edit.Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Växla\ mönsterframhävning:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Växla\ ignorering\ av\ storlek:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Växla\ matchningsvisning:set\ sm! -menutrans &Context\ lines Sammanhangsrader -menutrans &Virtual\ Edit Virtuell\ redigering -menutrans Never Aldrig -menutrans Block\ Selection Blockval -menutrans Insert\ mode Infogningsläge -menutrans Block\ and\ Insert Block\ och\ infogning -menutrans Always Alltid -menutrans Toggle\ Insert\ &Mode:set\ im! Växla\ infogningsläge:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Växla\ Vi-kompabilitet:set\ cp! -menutrans Search\ &Path\.\.\. Sökväg\.\.\. -menutrans Ta&g\ Files\.\.\. Taggfiler\.\.\. -menutrans Toggle\ &Toolbar Växla\ verktygsrad -menutrans Toggle\ &Bottom\ Scrollbar Växla\ rullningslista\ i\ botten -menutrans Toggle\ &Left\ Scrollbar Växla\ vänster\ rullningslista -menutrans Toggle\ &Right\ Scrollbar Växla\ höger\ rullningslista -menutrans None Ingen - -" Edit.File Settings -menutrans Toggle\ Line\ &Numbering:set\ nu! Växla\ radnumrering:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Växla\ listläge:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Växla\ radbrytning:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Växla\ radbrytning\ vid\ ord:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Växla\ tab-expandering:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Växla\ auto-indentering:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Växla\ C-indentering:set\ cin! -menutrans &Shiftwidth Shiftbredd -menutrans Soft\ &Tabstop Mjuk\ tab-stopp -menutrans Te&xt\ Width\.\.\. Textbredd\.\.\. -menutrans &File\ Format\.\.\. Filformat\.\.\. - -" Tools menu -menutrans &Tools &Verktyg -menutrans &Jump\ to\ this\ tagg^] &Hoppa\ till\ den\ här\ taggeng^] -menutrans Jump\ &back^T Hoppa\ tillbaka^T -menutrans Build\ &Tags\ File Bygg\ taggfil -menutrans &Make:make &Bygg:make -menutrans &List\ Errors:cl Listfel:cl -menutrans L&ist\ Messages:cl! Listmeddelande:cl! -menutrans &Next\ Error:cn Nästa\ fel:cn -menutrans &Previous\ Error:cp Tidigare\ fel:cp -menutrans &Older\ List:cold &Äldre\ lista:cold -menutrans N&ewer\ List:cnew &Nyare\ lista:cnew -menutrans Error\ &Window Felfönster -menutrans &Update:cwin &Uppdatera:cwin -menutrans &Open:copen &Öppna:copen -menutrans &Close:cclose &Stäng:cclose -menutrans &Convert\ to\ HEX:%!xxd Konvertera\ till\ HEX:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Konvertera\ tillbaka:%!xxd\ -r -menutrans Se&T\ Compiler Sätt\ &kompilerare - -" Tools.Spelling -menutrans &Spelling &Stavning -menutrans &Spell\ Check\ On &Stavningskontroll\ på -menutrans &Spell\ Check\ Off Stavningskontroll\ &av -menutrans To\ &Next\ error]s Till\ &nästa\ fel -menutrans To\ &Previous\ error[s Till\ &föregående\ fel -menutrans Suggest\ &Correctionsz= Föreslå\ &korrigeringar -menutrans &Repeat\ correction:spellrepall &Upprepa\ korrigering - -" Tools.Folding -menutrans &Enable/Disable\ foldszi Växla\ veckzi -menutrans &View\ Cursor\ Linezv Visa\ markörradzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Visa\ bara\ markörradzMzx -menutrans C&lose\ more\ foldszm Stäng\ mer\ veckzm -menutrans &Close\ all\ foldszM Stäng\ alla\ veckzM -menutrans O&pen\ more\ foldszr Öppna\ mer\ veckzr -menutrans &Open\ all\ foldszR Öppna\ mer\ veckzR -menutrans Fold\ Met&hod Veckmetod -menutrans M&anual Manual -menutrans I&ndent Indentering -menutrans E&xpression Uttryck -menutrans S&yntax Syntax -menutrans &Folding Vikning -menutrans &Diff Differans -menutrans Ma&rker Markering -menutrans Create\ &Foldzf Skapa\ veckzf -menutrans &Delete\ Foldzd Ta\ bort\ veckzd -menutrans Delete\ &All\ FoldszD Ta\ bort\ alla\ veckzD -menutrans Fold\ col&umn\ width Veckcolumnsbredd - -" Tools.Diff -menutrans &Update Uppdatera -menutrans &Get\ Block Hämta\ block -menutrans &Put\ Block Lämna\ block - -" Names for buffer menu. -menutrans &Buffers &Buffertar -menutrans &Refresh\ menu Uppdatera\ meny -menutrans &Delete Ta\ bort -menutrans &Alternate Alternativ -menutrans &Next &Nästa -menutrans &Previous &Tidigare - -" Window menu -menutrans &Window &Fönster -menutrans &New^Wn &Nytt^Wn -menutrans S&plit^Ws Dela^Ws -menutrans Sp&lit\ To\ #^W^^ Dela\ till\ #^W^^ -menutrans Split\ &Vertically^Wv Dela\ &vertikalt^Wv -menutrans Split\ File\ E&xplorer Dela\ filhanterare -menutrans &Close^Wc &Stäng^Wc -menutrans Close\ &Other(s)^Wo &Stäng\ alla\ andra^Wo -menutrans Ne&xt^Ww Nästa^Ww -menutrans P&revious^WW &Tidigare^WW -menutrans &Equal\ Size^W= &Samma\ storlek^W= -menutrans &Max\ Height^W_ &Maximal\ storlek^W_ -menutrans M&in\ Height^W1_ M&inimal\ storlek^W1_ -menutrans Max\ &Width^W\| Maximal\ bredd^W\| -menutrans Min\ Widt&h^W1\| Minimal\ bredd^W1\| -menutrans Move\ &To Flytta\ till -menutrans &Top^WK Toppen^WK -menutrans &Bottom^WJ Botten^WJ -menutrans &Left\ side^WH &Vänstra\ sidan^WH -menutrans &Right\ side^WL &Högra\ sidan^WL -menutrans Rotate\ &Up^WR Rotera\ upp^WR -menutrans Rotate\ &Down^Wr Rotera\ ned^Wr -menutrans Select\ Fo&nt\.\.\. Välj\ typsnitt\.\.\. - -" The popup menu -menutrans &Undo &Ångra -menutrans Cu&t Klipp\ ut -menutrans &Copy &Kopiera -menutrans &Paste &Klistra\ in -menutrans &Delete &Ta\ bort -menutrans Select\ Blockwise Markera\ blockvis -menutrans Select\ &Word Markera\ ord -menutrans Select\ &Line Markera\ rad -menutrans Select\ &Block Markera\ block -menutrans Select\ &All Markera\ allt - -" The GUI toolbar (for Win32 or GTK) -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Öppna fil - tmenu ToolBar.Save Spara aktuell fil - tmenu ToolBar.SaveAll Spara alla filer - tmenu ToolBar.Print Skriv ut - tmenu ToolBar.Undo Ångra - tmenu ToolBar.Redo Gör om - tmenu ToolBar.Cut Klipp ut - tmenu ToolBar.Copy Kopiera - tmenu ToolBar.Paste Klistra in - tmenu ToolBar.Find Sök... - tmenu ToolBar.FindNext Sök nästa - tmenu ToolBar.FindPrev Sök tidigare - tmenu ToolBar.Replace Sök och ersätt... - tmenu ToolBar.LoadSesn Ladda session - tmenu ToolBar.SaveSesn Spara session - tmenu ToolBar.RunScript Kör ett Vim-skript - tmenu ToolBar.Make Bygg aktuellt projekt - tmenu ToolBar.Shell Öppna ett kommandoskal - tmenu ToolBar.RunCtags Kör Ctags - tmenu ToolBar.TagJump Hoppa till tagg under markör - tmenu ToolBar.Help Hjälp - tmenu ToolBar.FindHelp Sök i hjälp - endfun -endif - -" Syntax menu -menutrans &Syntax &Syntax -menutrans &Show\ filetypes\ in\ menu &Visa\ filtyper\ i\ meny -menutrans &Off &Av -menutrans &Manual &Manuellt -menutrans A&utomatic Automatiskt -menutrans on/off\ for\ &This\ file Av/På\ för\ aktuell\ fil -menutrans Co&lor\ test Färgtest -menutrans &Highlight\ test Framhävningstest -menutrans &Convert\ to\ HTML Konvertera\ till\ &HTML - -" dialog texts -let menutrans_no_file = "[Ingen fil]" -let menutrans_help_dialog = "Skriv in ett kommando eller ord som du vill söka hjälp på:\n\nBörja med i_ för infogninglägeskommandon (t.ex. i_CTRL-X)\nBörja med c_ för kommandoradredigeringskommandon (t.ex. c_)\nBörja med ' för ett inställningsnamn (t.ex. 'shiftwidth')" -let g:menutrans_path_dialog = "Skriv in sökväg för filer.\nSeparera katalognamn med komma" -let g:menutrans_tags_dialog = "Skriv in namn på taggfiler.\nSeparera namn med komma." -let g:menutrans_textwidth_dialog = "Välj ny textbredd (0 för att förhindra formatering): " -let g:menutrans_fileformat_dialog = "Välj filformat som filen ska sparas med" diff --git a/share/vim/vim73/lang/menu_uk_ua.cp1251.vim b/share/vim/vim73/lang/menu_uk_ua.cp1251.vim deleted file mode 100644 index a517ecd7..00000000 --- a/share/vim/vim73/lang/menu_uk_ua.cp1251.vim +++ /dev/null @@ -1,246 +0,0 @@ -" Menu Translations: Ukrainian -" Maintainer: Bohdan Vlasyuk -" Last Change: 11 Oct 2001 - -" -" Please, see readme at htpp://www.vstu.edu.ua/~bohdan/vim before any -" complains, and even if you won't complain, read it anyway. -" - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 -scriptencoding cp1251 - -" Help menu -menutrans &Help &Äîïîìîãà -menutrans &Overview &Çàãàëüíà\ ²íôîðìàö³ÿ -menutrans &User\ Manual &Êåð³âíèöòâî\ äëÿ\ êîðèñòóâà÷à -menutrans &How-to\ links &ßê-Çðîáèòè? -"menutrans &GUI &GIU -menutrans &Credits &Ïîäÿêè -menutrans Co&pying &Ðîçïîâñþäæåííÿ -menutrans O&rphans &Äîïîìîãà\ ñèðîòàì -menutrans &Version &Âåðñ³ÿ -menutrans &About Ïðî\ &ïðîãðàìó - -" File menu -menutrans &File &Ôàéë -menutrans &Open\.\.\.:e &³äêðèòè\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp &Ðîçä³ëèòè\ â³êíî\.\.\.:sp -menutrans &New:enew &Íîâèé:enew -menutrans &Close:close &Çàêðèòè:close -menutrans &Save:w Çà&ïàì'ÿòàòè:w -menutrans Save\ &As\.\.\.:sav Çàïàì'ÿòàòè\ &ÿê\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Ïî&ð³âíÿòè\ ç\.\.\. -menutrans Split\ Patched\ &By\.\.\. Çà&ëàòàòè\.\.\. -menutrans &Print &Äðóêóâàòè -menutrans Sa&ve-Exit:wqa Çàïèñàòè\ ³\ âè&éòè:wqa -menutrans E&xit:qa &Âèõ³ä:qa - -" Edit menu -menutrans &Edit &Ðåäàãóâàòè -menutrans &Undou &³äì³íèòèu -menutrans &Redo^R &Ïîâåðíóòè^R -menutrans Rep&eat\. Ï&îâòîðèòè\. -menutrans Cu&t"+x Âè&ð³çàòè"+x -menutrans &Copy"+y &Êîï³þâàòè"+y -menutrans &Paste"+gP Â&ñòàâèòè"+gP -menutrans Put\ &Before[p Âñòàâèòè\ ïîïå&ðåäó[p -menutrans Put\ &After]p Âñòàâèòè\ ï&³ñëÿ]p -menutrans &Select\ allggVG Âè&áðàòè\ óñåggVG -menutrans &Find\.\.\. &Çíàéòè\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. Çà&ì³íèòè\.\.\. -menutrans Settings\ &Window ³êíî\ &íàëàøòóâàíü -menutrans &Global\ Settings Çàãàëüí³\ íà&ëàøòóâàííÿ -menutrans F&ile\ Settings Íàëàøòóâàííÿ\ äëÿ\ &ôàéëó -menutrans Toggle\ Line\ &Numbering:set\ nu! &Íóìåðàö³ÿ\ ðÿäê³â:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Ðåæèì\ íà&äëèøêîâîãî\ â³äîáðàæåííÿ:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Ðåæèì\ &ïåðåíîñó:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Ïåðåíîñèòè\ óñå\ &ñëîâî:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Êîðèñòóâàòèñÿ\ ñèìâîëîì\ &òàáóëÿö³¿:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Àâòîìàòè÷íèé\ &â³äñòóï:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! ³äñòóïè\ äëÿ\ ìîâè\ &C:set\ cin! -menutrans &Shiftwidth &Çñóâ -menutrans Te&xt\ Width\.\.\. &Øèðèíà\ òåêñòó\.\.\. -menutrans &File\ Format\.\.\. &Ôîðìàò\ ôàéëó\.\.\. -menutrans Soft\ &Tabstop Ïîçèö³ÿ\ &òàáóëÿö³¿ -menutrans C&olor\ Scheme &Êîëüîðè -menutrans Select\ Fo&nt\.\.\. Âèáðàòè\ &øðèôò\.\.\. - - -menutrans &Keymap Ðåæèì\ êëàâ³àòóðè -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Âèä³ëÿòè\ &çðàçîê:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! &Ðîçð³çíÿòè\ \âåëèê³\ òà\ ìàë³\ ë³òåðè:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! &Íåãàéíèé\ ïîøóê:set\ sm! -menutrans &Context\ lines ʳëüê³ñòü\ &âàæëèâèõ\ ðÿäê³â -menutrans &Virtual\ Edit Êóðñîð\ &ðóõàºòüñÿ\ áåç\ ìåæ - -menutrans Never ͳêîëè -menutrans Block\ Selection Âèá³ð\ Áëîêó -menutrans Insert\ mode Ðåæèì\ âñòàâêè -menutrans Block\ and\ Insert Âèá³ð\ ³\ âñòàâêà -menutrans Always Çàâæäè - -menutrans Toggle\ Insert\ &Mode:set\ im! Ðåæèì\ &âñòàâêè:set\ im! -menutrans Search\ &Path\.\.\. &Øëÿõ\ ïîøóêó\.\.\. -menutrans Ta&g\ Files\.\.\. Ôàéëè\ &ïîì³òîê\.\.\. - - -" -" GUI options -menutrans Toggle\ &Toolbar Ïàíåëü\ &³íñòðóìåíò³â -menutrans Toggle\ &Bottom\ Scrollbar &Íèæíÿ\ ë³í³éêà\ çñóâó -menutrans Toggle\ &Left\ Scrollbar &˳âà\ ë³í³éêà\ çñóâó -menutrans Toggle\ &Right\ Scrollbar &Ïðàâà\ ë³í³éêà\ çñóâó - -" Programming menu -menutrans &Tools &²íñòðóìåíòè -menutrans &Jump\ to\ this\ tagg^] &Ïåðåéòè\ äî\ ïîì³òêèg^] -menutrans Jump\ &back^T Ïî&âåðíóòèñÿ^T -menutrans Build\ &Tags\ File &Ñòâîðèòè\ ôàéë\ ïîì³òîê -" Folding -menutrans &Folding &Çãîðòêè -menutrans &Enable/Disable\ foldszi &Äîçâîëèòè/çàáîðîíèòè\ çãîðòêèzi -menutrans &View\ Cursor\ Linezv &Áà÷èòè\ ðÿäîê\ ç\ êóðñîðîìzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Áà÷èòè\ &ëèøå\ ðÿäîê\ ç\ êóðñîðîìzMzx -menutrans C&lose\ more\ foldszm Çàêðèòè\ &á³ëüøå\ çãîðòê³âzm -menutrans &Close\ all\ foldszM Çàêðèòè\ &óñ³\ çãîðòêèzM -menutrans &Open\ all\ foldszR ³äêðèòè\ ó&ñ³\ çãîðòêèzR -menutrans O&pen\ more\ foldszr ³äêðèòè\ á&³ëüøå\ çãîðòê³âzr - -menutrans Create\ &Foldzf Ñ&òâîðèòè\ çãîðòîêzf -menutrans &Delete\ Foldzd &Âèäàëèòè\ çãîðòîêzd -menutrans Delete\ &All\ FoldszD Âèäàëèò&è\ óñ³\ çãîðòêèzD -menutrans Fold\ column\ &width &Òîâùèíà\ ðÿäêà\ çãîðòê³â -menutrans Fold\ Met&hod &Ìåòîä\ çãîðòàííÿ -menutrans M&anual &Ðó÷íèé -menutrans I&ndent &³äñòóï -menutrans E&xpression Â&èðàç -menutrans S&yntax &Ñèíòàêñè÷íî -menutrans Ma&rker Ïî&çíà÷êè - -" Diff -menutrans &Diff Ïî&ð³âíÿííÿ -menutrans &Update &Ïîíîâèòè -menutrans &Get\ Block &Çàïîçè÷èòè\ ð³çíèöþ -menutrans &Put\ Block &Âïðîâàäèòè\ ð³çíèöþ - -" Make and stuff... -menutrans &Make:make &Áóäóâàòè(make):make -menutrans &List\ Errors:cl &Ñïèñîê\ ïîìèëîê:cl -menutrans L&ist\ Messages:cl! Ñï&èñîê\ ïîâ³äîìëåíü:cl! -menutrans &Next\ Error:cn &Íàñòóïíà\ ïîìèëêà:cn -menutrans &Previous\ Error:cp &Ïîïåðåäíÿ\ ïîìèëêà:cp -menutrans &Older\ List:cold &Áóâø³\ ïîìèëêè:cold -menutrans N&ewer\ List:cnew &Ìàéáóòí³\ ïîìèëêè:cnew -menutrans Error\ &Window &³êíî\ ïîìèëîê -menutrans &Update:cwin &Ïîíîâèòè:cwin -menutrans &Close:cclose &Çàêðèòè:cclose -menutrans &Open:copen &³äêðèòè:copen - -menutrans &Set\ Compiler Âñòàíîâèòè\ &êîìï³ëÿòîð -menutrans &Convert\ to\ HEX:%!xxd Ïåðåâåñòè\ â\ ø³ñòíàäöÿòêîâ³\ êîäè:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Ïîâåðíóòè\ â\ äâ³éêîâó\ ôîðìó:%!xxd\ -r - -" Names for buffer menu. -menutrans &Buffers &Áóôåðè -menutrans &Refresh\ menu &Ïîíîâèòè -menutrans Delete &Âèäàëèòè -menutrans &Alternate &Âòîðèííèé -menutrans &Next &Ñë³äóþ÷èé -menutrans &Previous &Ïîïåðåäí³é -menutrans [No\ File] [Íåìàº\ Ôàéëà] - -" Window menu -menutrans &Window &³êíî -menutrans &New^Wn &Íîâå^Wn -menutrans S&plit^Ws &Ðîçä³ëèòè^Ws -menutrans Sp&lit\ To\ #^W^^ Ðîçä³ëèòè\ äëÿ\ &âòîðèííîãî\ ôàéëó^W^^ -menutrans Split\ &Vertically^Wv Ðîçä³ëèòè\ &ïîïåðåê^Wv -"menutrans Split\ &Vertically^Wv &Ðîçä³ëèòè\ ïîïåðåê^Wv -menutrans Split\ File\ E&xplorer Ðîçä³ëèòè\ äëÿ\ &ïåðåãëÿäó\ ôàéë³â - -menutrans &Close^Wc &Çàêðèòè^Wc -menutrans Close\ &Other(s)^Wo Çàêðèòè\ óñ³\ &³íø³^Wo -menutrans Ne&xt^Ww &Íàñòóïíå^Ww -menutrans P&revious^WW &Ïîïåðåäíº^WW -menutrans &Equal\ Size^W= &Âèð³âíÿòè\ ðîçì³ð^W= -menutrans &Max\ Height^W_ Íàé&á³ëüøà\ âèñîòà^W_ -menutrans M&in\ Height^W1_ Íàé&ìåíøà\ âèñîòà^W1_ -menutrans Max\ &Width^W\| Íàéá³&ëüøà\ øèðèíà^W\| -menutrans Min\ Widt&h^W1\| Íàéìåí&øà\ øèðèíà^W1\| -menutrans Move\ &To &Çì³ñòèòè -menutrans &Top^WK Äî&ãîðè^WK -menutrans &Bottom^WJ Äî&íèçó^WJ -menutrans &Left\ side^WH Ó&ë³âî^WH -menutrans &Right\ side^WL Â&ïðàâî^WL -menutrans Rotate\ &Up^WR &Öèêë³÷íî\ äîãîðè^WR -menutrans Rotate\ &Down^Wr Ö&èêë³÷íî\ óíèç^Wr - -" The popup menu -menutrans &Undo &³äì³íèòè -menutrans Cu&t Âè&ð³çàòè -menutrans &Copy &Êîï³þâàòè -menutrans &Paste Â&ñòàâèòè -menutrans &Delete Âè&äàëèòè -menutrans Select\ &Word Âèáðàòè\ &ñëîâî -menutrans Select\ &Line Âèáðàòè\ &ðÿäîê -menutrans Select\ &Block Âèáðàòè\ &áëîê -menutrans Select\ &All Âèáðàòè\ &óñå - - - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open ³äêðèòè ôàéë - tmenu ToolBar.Save Çàïàì'ÿòàòè ôàéë - tmenu ToolBar.SaveAll Çàïàì'ÿòàòè óñ³ ôàéëè - tmenu ToolBar.Print Äðóêóâàòè - tmenu ToolBar.Undo ³äì³íèòè - tmenu ToolBar.Redo Ïîâåðíóòè - tmenu ToolBar.Cut Âèð³çàòè - tmenu ToolBar.Copy Êîï³þâàòè - tmenu ToolBar.Paste Âñòàâèòè - tmenu ToolBar.Find Çíàéòè... - tmenu ToolBar.FindNext Çíàéòè íàñòóïíèé - tmenu ToolBar.FindPrev Çíàéòè ïîïåðåäí³é - tmenu ToolBar.Replace Çàì³íèòè... - tmenu ToolBar.LoadSesn Çàâàíòàæèòè ñåàíñ ðåäàãóâàííÿ - tmenu ToolBar.SaveSesn Çàïàì'ÿòàòè ñåàíñ ðåäàãóâàííÿ - tmenu ToolBar.RunScript Âèêîíàòè ôàéë êîìàíä - tmenu ToolBar.Make Çáóäóâàòè ïðîåêò - tmenu ToolBar.Shell Shell - tmenu ToolBar.RunCtags Ñòâîðèòè ôàéë ïîì³òîê - tmenu ToolBar.TagJump Ïåðåéòè äî ïîì³òêè - tmenu ToolBar.Help Äîïîìîãà - tmenu ToolBar.FindHelp Ïîøóê ó äîïîìîç³ - endfun -endif - -" Syntax menu -menutrans &Syntax &Ñèíòàêñèñ -menutrans Set\ '&syntax'\ only Âñòàíîâëþâàòè\ ëèøå\ '&syntax' -menutrans Set\ '&filetype'\ too Âñòàíîâëþâàòè\ '&filetype'\ òàêîæ -menutrans &Off &Âèìêíåíî -menutrans &Manual &Ðó÷íèé -menutrans A&utomatic &Àâòîìàòè÷íî -menutrans on/off\ for\ &This\ file Ïåðåìêíóòè\ äëÿ\ öüîãî\ &ôàéëà -menutrans Co&lor\ test Ïåðåâ³ðêà\ &êîëüîð³â -menutrans &Highlight\ test &Ïåðåâ³ðêà\ âèä³ëåííÿ -menutrans &Convert\ to\ HTML Ñòâîðèòè\ &HTML - -" dialog texts -let menutrans_no_file = "[Íåìàº\ Ôàéëà]" -let menutrans_help_dialog = "Âêàæ³òü êîìàíäó àáî ñëîâî äëÿ ïîøóêó:\n\nÄîäàéòå i_ äëÿ êîìàíä ðåæèìó âñòàâêè (íàïð. i_CTRL-X)\nÄîäàéòå i_ äëÿ êîìàíäíîãî ðåæèìó (íàïð. ñ_)\nÄîäàéòå ' äëÿ ïîçíà÷åííÿ íàçâè îïö³¿ (íàïð. 'shiftwidth')" -let g:menutrans_path_dialog = "Âêàæ³òü øëÿõ ïîøóêó ôàéë³â\nÐîçä³ëÿéòå íàçâè äèðåêòîð³é êîìàìè." -let g:menutrans_tags_dialog = "Âêàæ³òü íàçâè ôàéë³â ïîì³òîê\nÐîçä³ëÿéòå íàçâè êîìàìè." -let g:menutrans_textwidth_dialog = "Âêàæ³òü íîâó øèðèíó òåêñòó (0 äëÿ â³äì³íè ôîìàòóâàííÿ)" -let g:menutrans_fileformat_dialog = "Âèáåð³òü ôîðìàò ôàéëó" - diff --git a/share/vim/vim73/lang/menu_uk_ua.koi8-u.vim b/share/vim/vim73/lang/menu_uk_ua.koi8-u.vim deleted file mode 100644 index 6284145d..00000000 --- a/share/vim/vim73/lang/menu_uk_ua.koi8-u.vim +++ /dev/null @@ -1,246 +0,0 @@ -" Menu Translations: Ukrainian -" Maintainer: Bohdan Vlasyuk -" Last Change: 11 Oct 2001 - -" -" Please, see readme at htpp://www.vstu.edu.ua/~bohdan/vim before any -" complains, and even if you won't complain, read it anyway. -" - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 -scriptencoding koi8-u - -" Help menu -menutrans &Help &äÏÐÏÍÏÇÁ -menutrans &Overview &úÁÇÁÌØÎÁ\ ¶ÎÆÏÒÍÁÃ¦Ñ -menutrans &User\ Manual &ëÅÒ¦×ÎÉÃÔ×Ï\ ÄÌÑ\ ËÏÒÉÓÔÕ×ÁÞÁ -menutrans &How-to\ links &ñË-úÒÏÂÉÔÉ? -"menutrans &GUI &GIU -menutrans &Credits &ðÏÄÑËÉ -menutrans Co&pying &òÏÚÐÏ×ÓÀÄÖÅÎÎÑ -menutrans O&rphans &äÏÐÏÍÏÇÁ\ ÓÉÒÏÔÁÍ -menutrans &Version &÷ÅÒÓ¦Ñ -menutrans &About ðÒÏ\ &ÐÒÏÇÒÁÍÕ - -" File menu -menutrans &File &æÁÊÌ -menutrans &Open\.\.\.:e &÷¦ÄËÒÉÔÉ\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp &òÏÚĦÌÉÔÉ\ צËÎÏ\.\.\.:sp -menutrans &New:enew &îÏ×ÉÊ:enew -menutrans &Close:close &úÁËÒÉÔÉ:close -menutrans &Save:w úÁ&ÐÁÍ'ÑÔÁÔÉ:w -menutrans Save\ &As\.\.\.:sav úÁÐÁÍ'ÑÔÁÔÉ\ &ÑË\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. ðÏ&Ò¦×ÎÑÔÉ\ Ú\.\.\. -menutrans Split\ Patched\ &By\.\.\. úÁ&ÌÁÔÁÔÉ\.\.\. -menutrans &Print &äÒÕËÕ×ÁÔÉ -menutrans Sa&ve-Exit:wqa úÁÐÉÓÁÔÉ\ ¦\ ×É&ÊÔÉ:wqa -menutrans E&xit:qa &÷ÉȦÄ:qa - -" Edit menu -menutrans &Edit &òÅÄÁÇÕ×ÁÔÉ -menutrans &Undou &÷¦ÄͦÎÉÔÉu -menutrans &Redo^R &ðÏ×ÅÒÎÕÔÉ^R -menutrans Rep&eat\. ð&Ï×ÔÏÒÉÔÉ\. -menutrans Cu&t"+x ÷É&Ò¦ÚÁÔÉ"+x -menutrans &Copy"+y &ëÏЦÀ×ÁÔÉ"+y -menutrans &Paste"+gP ÷&ÓÔÁ×ÉÔÉ"+gP -menutrans Put\ &Before[p ÷ÓÔÁ×ÉÔÉ\ ÐÏÐÅ&ÒÅÄÕ[p -menutrans Put\ &After]p ÷ÓÔÁ×ÉÔÉ\ Ð&¦ÓÌÑ]p -menutrans &Select\ allggVG ÷É&ÂÒÁÔÉ\ ÕÓÅggVG -menutrans &Find\.\.\. &úÎÁÊÔÉ\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. úÁ&ͦÎÉÔÉ\.\.\. -menutrans Settings\ &Window ÷¦ËÎÏ\ &ÎÁÌÁÛÔÕ×ÁÎØ -menutrans &Global\ Settings úÁÇÁÌØΦ\ ÎÁ&ÌÁÛÔÕ×ÁÎÎÑ -menutrans F&ile\ Settings îÁÌÁÛÔÕ×ÁÎÎÑ\ ÄÌÑ\ &ÆÁÊÌÕ -menutrans Toggle\ Line\ &Numbering:set\ nu! &îÕÍÅÒÁæÑ\ ÒÑÄ˦×:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! òÅÖÉÍ\ ÎÁ&ÄÌÉÛËÏ×ÏÇÏ\ צÄÏÂÒÁÖÅÎÎÑ:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! òÅÖÉÍ\ &ÐÅÒÅÎÏÓÕ:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! ðÅÒÅÎÏÓÉÔÉ\ ÕÓÅ\ &ÓÌÏ×Ï:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! ëÏÒÉÓÔÕ×ÁÔÉÓÑ\ ÓÉÍ×ÏÌÏÍ\ &ÔÁÂÕÌÑæ§:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! á×ÔÏÍÁÔÉÞÎÉÊ\ &צÄÓÔÕÐ:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! ÷¦ÄÓÔÕÐÉ\ ÄÌÑ\ ÍÏ×É\ &C:set\ cin! -menutrans &Shiftwidth &úÓÕ× -menutrans Te&xt\ Width\.\.\. &ûÉÒÉÎÁ\ ÔÅËÓÔÕ\.\.\. -menutrans &File\ Format\.\.\. &æÏÒÍÁÔ\ ÆÁÊÌÕ\.\.\. -menutrans Soft\ &Tabstop ðÏÚÉæÑ\ &ÔÁÂÕÌÑæ§ -menutrans C&olor\ Scheme &ëÏÌØÏÒÉ -menutrans Select\ Fo&nt\.\.\. ÷ÉÂÒÁÔÉ\ &ÛÒÉÆÔ\.\.\. - - -menutrans &Keymap òÅÖÉÍ\ ËÌÁצÁÔÕÒÉ -menutrans Toggle\ Pattern\ &Highlight:set\ hls! ÷ÉĦÌÑÔÉ\ &ÚÒÁÚÏË:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! &òÏÚÒ¦ÚÎÑÔÉ\ \×ÅÌÉ˦\ ÔÁ\ ÍÁ̦\ ̦ÔÅÒÉ:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! &îÅÇÁÊÎÉÊ\ ÐÏÛÕË:set\ sm! -menutrans &Context\ lines ë¦ÌØ˦ÓÔØ\ &×ÁÖÌÉ×ÉÈ\ ÒÑÄË¦× -menutrans &Virtual\ Edit ëÕÒÓÏÒ\ &ÒÕÈÁ¤ÔØÓÑ\ ÂÅÚ\ ÍÅÖ - -menutrans Never î¦ËÏÌÉ -menutrans Block\ Selection ÷ɦÒ\ âÌÏËÕ -menutrans Insert\ mode òÅÖÉÍ\ ×ÓÔÁ×ËÉ -menutrans Block\ and\ Insert ÷ɦÒ\ ¦\ ×ÓÔÁ×ËÁ -menutrans Always úÁ×ÖÄÉ - -menutrans Toggle\ Insert\ &Mode:set\ im! òÅÖÉÍ\ &×ÓÔÁ×ËÉ:set\ im! -menutrans Search\ &Path\.\.\. &ûÌÑÈ\ ÐÏÛÕËÕ\.\.\. -menutrans Ta&g\ Files\.\.\. æÁÊÌÉ\ &ÐÏͦÔÏË\.\.\. - - -" -" GUI options -menutrans Toggle\ &Toolbar ðÁÎÅÌØ\ &¦ÎÓÔÒÕÍÅÎÔ¦× -menutrans Toggle\ &Bottom\ Scrollbar &îÉÖÎÑ\ ̦ΦÊËÁ\ ÚÓÕ×Õ -menutrans Toggle\ &Left\ Scrollbar &ì¦×Á\ ̦ΦÊËÁ\ ÚÓÕ×Õ -menutrans Toggle\ &Right\ Scrollbar &ðÒÁ×Á\ ̦ΦÊËÁ\ ÚÓÕ×Õ - -" Programming menu -menutrans &Tools &¶ÎÓÔÒÕÍÅÎÔÉ -menutrans &Jump\ to\ this\ tagg^] &ðÅÒÅÊÔÉ\ ÄÏ\ ÐÏͦÔËÉg^] -menutrans Jump\ &back^T ðÏ&×ÅÒÎÕÔÉÓÑ^T -menutrans Build\ &Tags\ File &óÔ×ÏÒÉÔÉ\ ÆÁÊÌ\ ÐÏͦÔÏË -" Folding -menutrans &Folding &úÇÏÒÔËÉ -menutrans &Enable/Disable\ foldszi &äÏÚ×ÏÌÉÔÉ/ÚÁÂÏÒÏÎÉÔÉ\ ÚÇÏÒÔËÉzi -menutrans &View\ Cursor\ Linezv &âÁÞÉÔÉ\ ÒÑÄÏË\ Ú\ ËÕÒÓÏÒÏÍzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx âÁÞÉÔÉ\ &ÌÉÛÅ\ ÒÑÄÏË\ Ú\ ËÕÒÓÏÒÏÍzMzx -menutrans C&lose\ more\ foldszm úÁËÒÉÔÉ\ &¦ÌØÛÅ\ ÚÇÏÒÔ˦×zm -menutrans &Close\ all\ foldszM úÁËÒÉÔÉ\ &ÕÓ¦\ ÚÇÏÒÔËÉzM -menutrans &Open\ all\ foldszR ÷¦ÄËÒÉÔÉ\ Õ&Ó¦\ ÚÇÏÒÔËÉzR -menutrans O&pen\ more\ foldszr ÷¦ÄËÒÉÔÉ\ Â&¦ÌØÛÅ\ ÚÇÏÒÔ˦×zr - -menutrans Create\ &Foldzf ó&Ô×ÏÒÉÔÉ\ ÚÇÏÒÔÏËzf -menutrans &Delete\ Foldzd &÷ÉÄÁÌÉÔÉ\ ÚÇÏÒÔÏËzd -menutrans Delete\ &All\ FoldszD ÷ÉÄÁÌÉÔ&É\ ÕÓ¦\ ÚÇÏÒÔËÉzD -menutrans Fold\ column\ &width &ôÏ×ÝÉÎÁ\ ÒÑÄËÁ\ ÚÇÏÒÔË¦× -menutrans Fold\ Met&hod &íÅÔÏÄ\ ÚÇÏÒÔÁÎÎÑ -menutrans M&anual &òÕÞÎÉÊ -menutrans I&ndent &÷¦ÄÓÔÕÐ -menutrans E&xpression ÷&ÉÒÁÚ -menutrans S&yntax &óÉÎÔÁËÓÉÞÎÏ -menutrans Ma&rker ðÏ&ÚÎÁÞËÉ - -" Diff -menutrans &Diff ðÏ&Ò¦×ÎÑÎÎÑ -menutrans &Update &ðÏÎÏ×ÉÔÉ -menutrans &Get\ Block &úÁÐÏÚÉÞÉÔÉ\ Ò¦ÚÎÉÃÀ -menutrans &Put\ Block &÷ÐÒÏ×ÁÄÉÔÉ\ Ò¦ÚÎÉÃÀ - -" Make and stuff... -menutrans &Make:make &âÕÄÕ×ÁÔÉ(make):make -menutrans &List\ Errors:cl &óÐÉÓÏË\ ÐÏÍÉÌÏË:cl -menutrans L&ist\ Messages:cl! óÐ&ÉÓÏË\ ÐÏצÄÏÍÌÅÎØ:cl! -menutrans &Next\ Error:cn &îÁÓÔÕÐÎÁ\ ÐÏÍÉÌËÁ:cn -menutrans &Previous\ Error:cp &ðÏÐÅÒÅÄÎÑ\ ÐÏÍÉÌËÁ:cp -menutrans &Older\ List:cold &âÕ×Û¦\ ÐÏÍÉÌËÉ:cold -menutrans N&ewer\ List:cnew &íÁÊÂÕÔΦ\ ÐÏÍÉÌËÉ:cnew -menutrans Error\ &Window &÷¦ËÎÏ\ ÐÏÍÉÌÏË -menutrans &Update:cwin &ðÏÎÏ×ÉÔÉ:cwin -menutrans &Close:cclose &úÁËÒÉÔÉ:cclose -menutrans &Open:copen &÷¦ÄËÒÉÔÉ:copen - -menutrans &Set\ Compiler ÷ÓÔÁÎÏ×ÉÔÉ\ &ËÏÍЦÌÑÔÏÒ -menutrans &Convert\ to\ HEX:%!xxd ðÅÒÅ×ÅÓÔÉ\ ×\ Û¦ÓÔÎÁÄÃÑÔËÏצ\ ËÏÄÉ:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r ðÏ×ÅÒÎÕÔÉ\ ×\ ÄצÊËÏ×Õ\ ÆÏÒÍÕ:%!xxd\ -r - -" Names for buffer menu. -menutrans &Buffers &âÕÆÅÒÉ -menutrans &Refresh\ menu &ðÏÎÏ×ÉÔÉ -menutrans Delete &÷ÉÄÁÌÉÔÉ -menutrans &Alternate &÷ÔÏÒÉÎÎÉÊ -menutrans &Next &ó̦ÄÕÀÞÉÊ -menutrans &Previous &ðÏÐÅÒÅÄÎ¦Ê -menutrans [No\ File] [îÅÍÁ¤\ æÁÊÌÁ] - -" Window menu -menutrans &Window &÷¦ËÎÏ -menutrans &New^Wn &îÏ×Å^Wn -menutrans S&plit^Ws &òÏÚĦÌÉÔÉ^Ws -menutrans Sp&lit\ To\ #^W^^ òÏÚĦÌÉÔÉ\ ÄÌÑ\ &×ÔÏÒÉÎÎÏÇÏ\ ÆÁÊÌÕ^W^^ -menutrans Split\ &Vertically^Wv òÏÚĦÌÉÔÉ\ &ÐÏÐÅÒÅË^Wv -"menutrans Split\ &Vertically^Wv &òÏÚĦÌÉÔÉ\ ÐÏÐÅÒÅË^Wv -menutrans Split\ File\ E&xplorer òÏÚĦÌÉÔÉ\ ÄÌÑ\ &ÐÅÒÅÇÌÑÄÕ\ ÆÁÊÌ¦× - -menutrans &Close^Wc &úÁËÒÉÔÉ^Wc -menutrans Close\ &Other(s)^Wo úÁËÒÉÔÉ\ ÕÓ¦\ &¦ÎÛ¦^Wo -menutrans Ne&xt^Ww &îÁÓÔÕÐÎÅ^Ww -menutrans P&revious^WW &ðÏÐÅÒÅÄΤ^WW -menutrans &Equal\ Size^W= &÷ÉÒ¦×ÎÑÔÉ\ ÒÏÚͦÒ^W= -menutrans &Max\ Height^W_ îÁÊ&¦ÌØÛÁ\ ×ÉÓÏÔÁ^W_ -menutrans M&in\ Height^W1_ îÁÊ&ÍÅÎÛÁ\ ×ÉÓÏÔÁ^W1_ -menutrans Max\ &Width^W\| îÁʦ&ÌØÛÁ\ ÛÉÒÉÎÁ^W\| -menutrans Min\ Widt&h^W1\| îÁÊÍÅÎ&ÛÁ\ ÛÉÒÉÎÁ^W1\| -menutrans Move\ &To &úͦÓÔÉÔÉ -menutrans &Top^WK äÏ&ÇÏÒÉ^WK -menutrans &Bottom^WJ äÏ&ÎÉÚÕ^WJ -menutrans &Left\ side^WH õ&̦×Ï^WH -menutrans &Right\ side^WL ÷&ÐÒÁ×Ï^WL -menutrans Rotate\ &Up^WR &ãÉË̦ÞÎÏ\ ÄÏÇÏÒÉ^WR -menutrans Rotate\ &Down^Wr ã&ÉË̦ÞÎÏ\ ÕÎÉÚ^Wr - -" The popup menu -menutrans &Undo &÷¦ÄͦÎÉÔÉ -menutrans Cu&t ÷É&Ò¦ÚÁÔÉ -menutrans &Copy &ëÏЦÀ×ÁÔÉ -menutrans &Paste ÷&ÓÔÁ×ÉÔÉ -menutrans &Delete ÷É&ÄÁÌÉÔÉ -menutrans Select\ &Word ÷ÉÂÒÁÔÉ\ &ÓÌÏ×Ï -menutrans Select\ &Line ÷ÉÂÒÁÔÉ\ &ÒÑÄÏË -menutrans Select\ &Block ÷ÉÂÒÁÔÉ\ &ÂÌÏË -menutrans Select\ &All ÷ÉÂÒÁÔÉ\ &ÕÓÅ - - - -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open ÷¦ÄËÒÉÔÉ ÆÁÊÌ - tmenu ToolBar.Save úÁÐÁÍ'ÑÔÁÔÉ ÆÁÊÌ - tmenu ToolBar.SaveAll úÁÐÁÍ'ÑÔÁÔÉ ÕÓ¦ ÆÁÊÌÉ - tmenu ToolBar.Print äÒÕËÕ×ÁÔÉ - tmenu ToolBar.Undo ÷¦ÄͦÎÉÔÉ - tmenu ToolBar.Redo ðÏ×ÅÒÎÕÔÉ - tmenu ToolBar.Cut ÷ÉÒ¦ÚÁÔÉ - tmenu ToolBar.Copy ëÏЦÀ×ÁÔÉ - tmenu ToolBar.Paste ÷ÓÔÁ×ÉÔÉ - tmenu ToolBar.Find úÎÁÊÔÉ... - tmenu ToolBar.FindNext úÎÁÊÔÉ ÎÁÓÔÕÐÎÉÊ - tmenu ToolBar.FindPrev úÎÁÊÔÉ ÐÏÐÅÒÅÄÎ¦Ê - tmenu ToolBar.Replace úÁͦÎÉÔÉ... - tmenu ToolBar.LoadSesn úÁ×ÁÎÔÁÖÉÔÉ ÓÅÁÎÓ ÒÅÄÁÇÕ×ÁÎÎÑ - tmenu ToolBar.SaveSesn úÁÐÁÍ'ÑÔÁÔÉ ÓÅÁÎÓ ÒÅÄÁÇÕ×ÁÎÎÑ - tmenu ToolBar.RunScript ÷ÉËÏÎÁÔÉ ÆÁÊÌ ËÏÍÁÎÄ - tmenu ToolBar.Make úÂÕÄÕ×ÁÔÉ ÐÒÏÅËÔ - tmenu ToolBar.Shell Shell - tmenu ToolBar.RunCtags óÔ×ÏÒÉÔÉ ÆÁÊÌ ÐÏͦÔÏË - tmenu ToolBar.TagJump ðÅÒÅÊÔÉ ÄÏ ÐÏͦÔËÉ - tmenu ToolBar.Help äÏÐÏÍÏÇÁ - tmenu ToolBar.FindHelp ðÏÛÕË Õ ÄÏÐÏÍÏÚ¦ - endfun -endif - -" Syntax menu -menutrans &Syntax &óÉÎÔÁËÓÉÓ -menutrans Set\ '&syntax'\ only ÷ÓÔÁÎÏ×ÌÀ×ÁÔÉ\ ÌÉÛÅ\ '&syntax' -menutrans Set\ '&filetype'\ too ÷ÓÔÁÎÏ×ÌÀ×ÁÔÉ\ '&filetype'\ ÔÁËÏÖ -menutrans &Off &÷ÉÍËÎÅÎÏ -menutrans &Manual &òÕÞÎÉÊ -menutrans A&utomatic &á×ÔÏÍÁÔÉÞÎÏ -menutrans on/off\ for\ &This\ file ðÅÒÅÍËÎÕÔÉ\ ÄÌÑ\ ÃØÏÇÏ\ &ÆÁÊÌÁ -menutrans Co&lor\ test ðÅÒÅצÒËÁ\ &ËÏÌØÏÒ¦× -menutrans &Highlight\ test &ðÅÒÅצÒËÁ\ ×ÉĦÌÅÎÎÑ -menutrans &Convert\ to\ HTML óÔ×ÏÒÉÔÉ\ &HTML - -" dialog texts -let menutrans_no_file = "[îÅÍÁ¤\ æÁÊÌÁ]" -let menutrans_help_dialog = "÷ËÁÖ¦ÔØ ËÏÍÁÎÄÕ ÁÂÏ ÓÌÏ×Ï ÄÌÑ ÐÏÛÕËÕ:\n\näÏÄÁÊÔÅ i_ ÄÌÑ ËÏÍÁÎÄ ÒÅÖÉÍÕ ×ÓÔÁ×ËÉ (ÎÁÐÒ. i_CTRL-X)\näÏÄÁÊÔÅ i_ ÄÌÑ ËÏÍÁÎÄÎÏÇÏ ÒÅÖÉÍÕ (ÎÁÐÒ. Ó_)\näÏÄÁÊÔÅ ' ÄÌÑ ÐÏÚÎÁÞÅÎÎÑ ÎÁÚ×É ÏÐæ§ (ÎÁÐÒ. 'shiftwidth')" -let g:menutrans_path_dialog = "÷ËÁÖ¦ÔØ ÛÌÑÈ ÐÏÛÕËÕ ÆÁÊ̦×\nòÏÚĦÌÑÊÔÅ ÎÁÚ×É ÄÉÒÅËÔÏÒ¦Ê ËÏÍÁÍÉ." -let g:menutrans_tags_dialog = "÷ËÁÖ¦ÔØ ÎÁÚ×É ÆÁÊÌ¦× ÐÏͦÔÏË\nòÏÚĦÌÑÊÔÅ ÎÁÚ×É ËÏÍÁÍÉ." -let g:menutrans_textwidth_dialog = "÷ËÁÖ¦ÔØ ÎÏ×Õ ÛÉÒÉÎÕ ÔÅËÓÔÕ (0 ÄÌÑ ×¦ÄͦÎÉ ÆÏÍÁÔÕ×ÁÎÎÑ)" -let g:menutrans_fileformat_dialog = "÷ÉÂÅÒ¦ÔØ ÆÏÒÍÁÔ ÆÁÊÌÕ" - diff --git a/share/vim/vim73/lang/menu_vi_vn.vim b/share/vim/vim73/lang/menu_vi_vn.vim deleted file mode 100644 index 4b2b21f1..00000000 --- a/share/vim/vim73/lang/menu_vi_vn.vim +++ /dev/null @@ -1,329 +0,0 @@ -" Menu Translations: Vietnamese -" Maintainer: Phan Vinh Thinh -" Last Change: 12 Mar 2005 -" URL: http://iatp.vspu.ac.ru/phan/vietvim/lang/menu_vi_vn.vim -" -" -" Adopted for VietVim project by Phan Vinh Thinh. -" First translation: Phan Vinh Thinh -" -" -" Quit when menu translations have already been done. -" -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding utf-8 - -" Top -menutrans &File &Tập\ tin -menutrans &Edit &Soạn\ thảo -menutrans &Tools Cô&ng\ cụ -menutrans &Syntax &Cú\ pháp -menutrans &Buffers &Bộ\ đệm -menutrans &Window Cử&a\ sổ -menutrans &Help Trợ\ &giúp -" -" -" -" Help menu -menutrans &Overview &Tổng\ quan -menutrans &User\ Manual &Hướng\ dẫn\ sử\ dụng -menutrans &How-to\ links &Làm\ như\ thế\ nào -menutrans &Find\.\.\. Tìm\ &kiếm\.\.\. -"-------------------- -menutrans &Credits Lời\ &cảm\ ơn -menutrans Co&pying &Bản\ quyền -menutrans &Sponsor/Register &Giúp\ đỡ/Đăng\ ký -menutrans O&rphans Trẻ\ &mồ\ côi -"-------------------- -menutrans &Version &Phiên\ bản -menutrans &About &Về\ Vim -" -" -" File menu -menutrans &Open\.\.\.:e &Mở\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp &Chia-Mở\.\.\.:sp -menutrans &New:enew Mớ&i:enew -menutrans &Close:close Đó&ng:close -"-------------------- -menutrans &Save:w &Ghi\ nhớ:w -menutrans Save\ &As\.\.\.:sav Ghi\ n&hư\.\.\.:sav -"-------------------- -menutrans Split\ &Diff\ with\.\.\. &So\ sánh\ với\.\.\. -menutrans Split\ Patched\ &By\.\.\. So\ sánh\ đã\ vá\ lỗi\ &bởi\.\.\. -"-------------------- -menutrans &Print In\ &ra -menutrans Sa&ve-Exit:wqa Ghi\ nhớ\ rồi\ th&oát :wqa -menutrans E&xit:qa &Thoát:qa -" -" -" Edit menu -menutrans &Undou &Hủy\ bướcu -menutrans &Redo^R &Làm\ lại^R -menutrans Rep&eat\. Lặ&p\ lại\. -"-------------------- -menutrans Cu&t"+x &Cắt"+x -menutrans &Copy"+y &Sao\ chép"+y -menutrans &Paste"+gP &Dán"+gP -menutrans Put\ &Before[p Dán\ trướ&c[p -menutrans Put\ &After]p Dán\ sa&u]p -menutrans &Deletex &Xóax -menutrans &Select\ AllggVG Chọ&n\ tất\ cảggVG -"-------------------- -menutrans &Find\.\.\./ &Tìm\ kiếm\.\.\./ -menutrans Find\ and\ Rep&lace\.\.\. Tìm\ kiếm\ &và\ thay\ thế\.\.\. -menutrans Find\ and\ Rep&lace\.\.\.:%s Tìm\ kiếm\ &và\ thay\ thế\.\.\.:%s -menutrans Find\ and\ Rep&lace\.\.\.:s Tìm\ kiếm\ &và\ thay\ thế\.\.\:s -"-------------------- -menutrans Settings\ &Window Cửa\ &sổ\ thiết\ lập -menutrans &Global\ Settings Thiết\ lập\ t&oàn\ cầu -menutrans F&ile\ Settings &Thiết\ lập\ tập\ t&in -menutrans C&olor\ Scheme Phối\ hợp\ màu\ &sắc -menutrans &Keymap Sơ\ đồ\ &bàn\ phím -menutrans Select\ Fo&nt\.\.\. Chọn\ &phông\ chữ\.\.\. -">>>----------------- Edit/Global settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Chiếu\ sáng\ từ\ tìm\ thấy :set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! &Không\ tính\ đến\ kiểu\ chữ:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Cho\ &biết\ phần\ tử\ có\ cặp:set\ sm! -menutrans &Context\ lines Số\ &dòng\ quanh\ con\ trỏ -menutrans &Virtual\ Edit &Soạn\ thảo\ ảo -menutrans Toggle\ Insert\ &Mode:set\ im! Chế\ độ\ chè&n:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Tương\ thích\ với\ &Vi:set\ cp! -menutrans Search\ &Path\.\.\. Đường\ dẫn\ tìm\ &kiếm\.\.\. -menutrans Ta&g\ Files\.\.\. Tập\ tin\ t&hẻ\ ghi\.\.\. -" -menutrans Toggle\ &Toolbar Ẩn/hiện\ th&anh\ công\ cụ -menutrans Toggle\ &Bottom\ Scrollbar Ẩn/hiện\ thanh\ kéo\ nằ&m\ dưới -menutrans Toggle\ &Left\ Scrollbar Ẩn/hiện\ thanh\ ké&o\ bên\ trái -menutrans Toggle\ &Right\ Scrollbar Ẩn/hiện\ thanh\ kéo\ bên\ &phải -">>>->>>------------- Edit/Global settings/Virtual edit -menutrans Never Tắt -menutrans Block\ Selection Khi\ chọn\ khối -menutrans Insert\ mode Trong\ chế\ độ\ Chèn -menutrans Block\ and\ Insert Khi\ chọn\ khối\ và\ Chèn -menutrans Always Luôn\ luôn\ bật -">>>----------------- Edit/File settings -menutrans Toggle\ Line\ &Numbering:set\ nu! Đánh\ &số\ dòng:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! &Chế\ độ\ danh\ sách:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! &Ngắt\ những\ dòng\ dài:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Ngắt\ từ\ nguyên\ &vẹn:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! &Dấu\ trắng\ thay\ cho\ tab:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! &Tự\ động\ thụt\ dòng:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! T&hụt\ dòng\ kiểu\ C:set\ cin! -">>>--- -menutrans &Shiftwidth Chiều\ &rộng\ thụt\ dòng -menutrans Soft\ &Tabstop Chiều\ rộng\ T&ab -menutrans Te&xt\ Width\.\.\. Chiều\ rộng\ văn\ &bản\.\.\. -menutrans &File\ Format\.\.\. Định\ dạng\ tậ&p\ tin\.\.\. -">>>----------------- Edit/File settings/Color Scheme -menutrans default Mặc\ định -">>>----------------- Edit/File settings/Keymap -menutrans None Không\ dùng -menutrans arabic Ả\ rập -menutrans czech Séc -menutrans esperanto Etperantô -menutrans greek Hy\ Lạp -menutrans hebrew Do\ thái -menutrans hebrewp Do\ thái\ p -menutrans lithuania-baltic Lát-vi\ Bal-tíc -menutrans magyar Hungari -menutrans persian-iranian Iran\ Ba\ Tư -menutrans persian Ba\ Tư -menutrans russian-jcuken Nga\ jcuken -menutrans russian-jcukenwin Nga\ jcukenwin -menutrans russian-yawerty Nga\ yawerty -menutrans serbian-latin Xéc-bi\ La-tinh -menutrans serbian Xéc-bi -menutrans slovak slovak -" -" -" -" Tools menu -menutrans &Jump\ to\ this\ tagg^] &Nhảy\ tới\ thẻ\ ghig^] -menutrans Jump\ &back^T &Quay\ lại^T -menutrans Build\ &Tags\ File &Tạo\ tập\ tin\ thẻ\ ghi -"------------------- -menutrans &Folding Nếp\ &gấp -menutrans &Diff &Khác\ biệt (diff) -"------------------- -menutrans &Make:make &Biên\ dịch:make -menutrans &List\ Errors:cl &Danh\ sách\ lỗi:cl -menutrans L&ist\ Messages:cl! Danh\ &sách\ thông\ báo:cl! -menutrans &Next\ Error:cn &Lỗi\ tiếp\ theo:cn -menutrans &Previous\ Error:cp Lỗi\ t&rước:cp -menutrans &Older\ List:cold Danh\ sách\ &cũ\ hơn:cold -menutrans N&ewer\ List:cnew Danh\ sách\ &mới\ hơn:cnew -menutrans Error\ &Window Cử&a\ sổ\ lỗi -menutrans &Set\ Compiler C&họn\ trình\ biên\ dịch -"------------------- -menutrans &Convert\ to\ HEX:%!xxd Ch&uyển\ thành\ HEX:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Chuyển\ từ\ HE&X:%!xxd\ -r -">>>---------------- Folds -menutrans &Enable/Disable\ foldszi &Bật/tắt\ nếp\ gấpzi -menutrans &View\ Cursor\ Linezv &Xem\ dòng\ có\ con\ trỏzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Chỉ\ xem\ dòng\ có\ con\ trỏzMzx -menutrans C&lose\ more\ foldszm Đóng\ &nhiều\ nếp\ gấp\ hơnzm -menutrans &Close\ all\ foldszM Đóng\ mọi\ nếp\ &gấpzM -menutrans &Open\ all\ foldszR &Mở\ mọi\ nếp\ gấpzR -menutrans O&pen\ more\ foldszr Mở\ n&hiều\ nếp\ gấp\ hơnzr -menutrans Fold\ Met&hod &Phương\ pháp\ gấp -menutrans Create\ &Foldzf &Tạo\ nếp\ gấpzf -menutrans &Delete\ Foldzd Xó&a\ nếp\ gấpzd -menutrans Delete\ &All\ FoldszD Xóa\ mọ&i\ nếp\ gấpzD -menutrans Fold\ col&umn\ width Chiều\ &rộng\ cột\ nếp\ gấp -">>>->>>----------- Tools/Folds/Fold Method -menutrans M&anual &Thủ\ công -menutrans I&ndent Thụt\ &dòng -menutrans E&xpression &Biểu\ thức -menutrans S&yntax &Cú\ pháp -menutrans Ma&rker &Dấu\ hiệu -">>>--------------- Tools/Diff -menutrans &Update &Cập\ nhật -menutrans &Get\ Block &Thay\ đổi\ bộ\ đệm\ này -menutrans &Put\ Block T&hay\ đổi\ bộ\ đệm\ khác -">>>--------------- Tools/Diff/Error window -menutrans &Update:cwin &Cập\ nhật:cwin -menutrans &Close:cclose Đó&ng:cclose -menutrans &Open:copen &Mở:copen -" -" -" Syntax menu -" -menutrans &Show\ filetypes\ in\ menu &Hiển\ thị\ loại\ tập\ tin\ trong\ trình\ đơn -menutrans Set\ '&syntax'\ only &Chỉ\ thay\ đổi\ giá\ trị\ 'syntax' -menutrans Set\ '&filetype'\ too Th&ay\ đổi\ cả\ giá\ trị\ 'filetype' -menutrans &Off &Tắt -menutrans &Manual &Bằng\ tay -menutrans A&utomatic Tự\ độ&ng -menutrans on/off\ for\ &This\ file Bật\ tắt\ &cho\ tập\ tin\ này -menutrans Co&lor\ test &Kiểm\ tra\ màu\ sắc -menutrans &Highlight\ test Kiểm\ tra\ chiếu\ &sáng -menutrans &Convert\ to\ HTML &Chuyển\ thành\ HTML -">>>---------------- Syntax/AB -menutrans Apache\ config Cấu\ hình\ Apache -menutrans Ant\ build\ file Tập\ tin\ biên\ dịch\ Ant -menutrans Apache-style\ config Cấu\ hình\ phong\ cách\ Apache -menutrans Arc\ Macro\ Language Ngôn\ ngữ\ Macro\ Arc -menutrans Arch\ inventory Kiểm\ kê\ Arch -menutrans ASP\ with\ VBScript ASP\ với\ VBScript -menutrans ASP\ with\ Perl ASP\ với\ Perl -menutrans BC\ calculator Máy\ tính\ BC -menutrans BDF\ font Phông\ chữ\ BDF -menutrans blank không\ dùng -">>>---------------- Syntax/C -menutrans Calendar Lịch -menutrans Cheetah\ template Mẫu\ Cheetah -menutrans Config Cấu\ hình -" -" -" Buffers menu -" -menutrans &Refresh\ menu &Cập\ nhật\ trình\ đơn -menutrans Delete &Xóa -menutrans &Alternate Xen\ &kẽ -menutrans &Next Tiế&p\ theo -menutrans &Previous &Trước -menutrans [No\ File] [Không\ có\ tập\ tin] -" -" -" Window menu -" -menutrans &New^Wn &Mới^Wn -menutrans S&plit^Ws &Chia\ đôi^Ws -menutrans Sp&lit\ To\ #^W^^ Chia\ &tới\ #^W^^ -menutrans Split\ &Vertically^Wv Chia\ &dọc^Wv -menutrans Split\ File\ E&xplorer Mở\ trình\ &duyệt\ tập\ tin -" -menutrans &Close^Wc Đó&ng^Wc -menutrans Close\ &Other(s)^Wo Đóng\ các\ cửa\ sổ\ &khác^Wo -" -menutrans Move\ &To C&huyển\ tới -menutrans Rotate\ &Up^WR &Lên\ trên^WR -menutrans Rotate\ &Down^Wr &Xuống\ dưới^Wr -" -menutrans &Equal\ Size^W= Cân\ &bằng\ kích\ thước^W= -menutrans &Max\ Height^W_ Chiều\ c&ao\ lớn\ nhất^W_ -menutrans M&in\ Height^W1_ Chiều\ ca&o\ nhỏ\ nhất^W1_ -menutrans Max\ &Width^W\| Chiều\ &rộng\ lớn\ nhất^W\| -menutrans Min\ Widt&h^W1\| Chiề&u\ rộng\ nhỏ\ nhất^W1\| -">>>----------------- Window/Move To -menutrans &Top^WK Đầ&u^WK -menutrans &Bottom^WJ &Cuối^WJ -menutrans &Left\ side^WH &Trái^WH -menutrans &Right\ side^WL &Phải^WL -" -" -" The popup menu -" -" -menutrans &Undo &Hủy\ bước -menutrans Cu&t &Cắt -menutrans &Copy &Sao\ chép -menutrans &Paste &Dán -menutrans &Delete &Xóa -menutrans Select\ Blockwise Chọn\ &theo\ khối -menutrans Select\ &Word Chọ&n\ từ -menutrans Select\ &Line Chọn\ dòn&g -menutrans Select\ &Block Chọn\ &khối -menutrans Select\ &All Chọn\ tất\ &cả -" -" The GUI toolbar -" -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open Mở tập tin - tmenu ToolBar.Save Ghi nhớ tập tin - tmenu ToolBar.SaveAll Ghi nhớ tất cả - tmenu ToolBar.Print In ra - tmenu ToolBar.Undo Hủy bước - tmenu ToolBar.Redo Làm lại - tmenu ToolBar.Cut Cắt - tmenu ToolBar.Copy Sao chép - tmenu ToolBar.Paste Dán - tmenu ToolBar.Find Tìm kiếm - tmenu ToolBar.FindNext Tìm tiếp theo - tmenu ToolBar.FindPrev Tìm ngược lại - tmenu ToolBar.Replace Thay thế... - tmenu ToolBar.LoadSesn Nạp buổi làm việc - tmenu ToolBar.SaveSesn Ghi nhớ buổi làm việc - tmenu ToolBar.RunScript Chạy script của Vim - tmenu ToolBar.Make Biên dịch - tmenu ToolBar.Shell Shell - tmenu ToolBar.RunCtags Tạo tập tin thẻ ghi - tmenu ToolBar.TagJump Chuyển tới thẻ ghi - tmenu ToolBar.Help Trợ giúp - tmenu ToolBar.FindHelp Tìm trong trợ giúp - endfun -endif -" -" -" Dialog texts -" -" Find in help dialog -" -let g:menutrans_help_dialog = "Hãy nhập câu lệnh hoặc từ khóa tìm kiếm:\n\nThêm i_ để tìm kiếm câu lệnh của chế độ Nhập Input (Ví dụ, i_CTRL-X)\nThêm c_ để tìm kiếm câu lệnh của chế độ soạn thảo dòng lệnh (Ví dụ, с_)\nThêm ' để tìm kiếm trợ giúp cho một tùy chọn (ví dụ, 'shiftwidth')" -" -" Searh path dialog -" -let g:menutrans_path_dialog = "Hãy chỉ ra đường dẫn để tìm kiếm tập tin.\nTên của thư mục phân cách nhau bởi dấu phẩy." -" -" Tag files dialog -" -let g:menutrans_tags_dialog = "Nhập tên tập tin thẻ ghi (phân cách bởi dấu phẩy).\n" -" -" Text width dialog -" -let g:menutrans_textwidth_dialog = "Hãy nhập chiều rộng văn bản mới.\nNhập 0 để hủy bỏ." -" -" File format dialog -" -let g:menutrans_fileformat_dialog = "Hãy chọn định dạng tập tin." -let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Hủy bỏ" -" -let menutrans_no_file = "[không có tập tin]" diff --git a/share/vim/vim73/lang/menu_zh_cn.gb2312.vim b/share/vim/vim73/lang/menu_zh_cn.gb2312.vim deleted file mode 100644 index 3ec825ce..00000000 --- a/share/vim/vim73/lang/menu_zh_cn.gb2312.vim +++ /dev/null @@ -1,266 +0,0 @@ -" Menu Translations: Simplified Chinese -" Translated By: Yuheng Xie -" Last Change: Tue Apr 18 22:00:00 2006 - -" vim: ts=8 sw=8 noet - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -" This causes trouble for a broken iconv (symptom: last character is always -" ??). Without this it works fine anyway, because gbk/cp936 is a superset of -" gb2312. (suggested by Edward L. Fox) -" scriptencoding gb2312 - -" Help menu -menutrans &Help °ïÖú(&H) -menutrans &Overview ×ÝÀÀ(&O) -menutrans &User\ Manual Óû§ÊÖ²á(&U) -menutrans &How-to\ links How-to\ Ö¸Òý(&H) -menutrans &Find\.\.\. ²éÕÒ(&F)\.\.\. -menutrans &Credits ÖÂл(&C) -menutrans Co&pying °æȨ(&P) -menutrans &Sponsor/Register ÔÞÖú/×¢²á(&S) -menutrans O&rphans ¹Â¶ù(&R) -menutrans &Version °æ±¾(&V) -menutrans &About ¹ØÓÚ(&A) - -" File menu -menutrans &File Îļþ(&F) -menutrans &Open\.\.\.:e ´ò¿ª(&O)\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp ·Ö¸î²¢´ò¿ª(&L)\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew ´ò¿ª±êÇ©\.\.\.:tabnew -menutrans &New:enew н¨(&N):enew -menutrans &Close:close ¹Ø±Õ(&C):close -menutrans &Save:w ±£´æ(&S):w -menutrans Save\ &As\.\.\.:sav Áí´æΪ(&A)\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. ·Ö¸î±È½Ï(Diff)(&D)\.\.\. -menutrans Split\ Patched\ &By\.\.\. ·Ö¸î´ò²¹¶¡(Patch)(&B)\.\.\. -menutrans &Print ´òÓ¡(&P) -menutrans Sa&ve-Exit:wqa ±£´æ²¢Í˳ö(&V):wqa -menutrans E&xit:qa Í˳ö(&X):qa - -" Edit menu -menutrans &Edit ±à¼­(&E) -menutrans &Undou ³·Ïú(&U)u -menutrans &Redo^R ÖØ×ö(&R)^R -menutrans Rep&eat\. Öظ´ÉϴβÙ×÷(&E)\. -menutrans Cu&t"+x ¼ôÇÐ(&T)"+x -menutrans &Copy"+y ¸´ÖÆ(&C)"+y -menutrans &Paste"+gP Õ³Ìù(&P)"+gP -menutrans Put\ &Before[p Õ³Ìùµ½¹â±êÇ°(&B)[p -menutrans Put\ &After]p Õ³Ìùµ½¹â±êºó(&A)]p -menutrans &Deletex ɾ³ý(&D)x -menutrans &Select\ AllggVG ȫѡ(&S)ggVG -menutrans &Find\.\.\. ²éÕÒ(&F)\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. ²éÕÒºÍÌæ»»(&L)\.\.\. -menutrans &Find/ ²éÕÒ(&F)/ -menutrans Find\ and\ Rep&lace:%s ²éÕÒºÍÌæ»»(&L):%s -menutrans Settings\ &Window É趨´°¿Ú(&W) -menutrans Startup\ &Settings Æô¶¯É趨(&S) -menutrans &Global\ Settings È«¾ÖÉ趨(&G) - -" Edit/Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! ¿ª/¹Øģʽ¸ßÁÁ(&H):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! ¿ª/¹ØºöÂÔ´óСд(&I):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! ¿ª/¹ØÏÔʾÅä¶Ô(&S):set\ sm! -menutrans &Context\ lines ÉÏÏÂÎÄÐÐÊý(&C) - -menutrans &Virtual\ Edit ÐéÄâ±à¼­(&V) -menutrans Never ´Ó²» -menutrans Block\ Selection ¿éÑ¡Ôñ -menutrans Insert\ mode ²åÈëģʽ -menutrans Block\ and\ Insert ¿éÑ¡ÔñºÍ²åÈëģʽ -menutrans Always ×ÜÊÇ - -menutrans Toggle\ Insert\ &Mode:set\ im! ¿ª/¹Ø²åÈëģʽ(&M):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! ¿ª/¹Ø\ Vi\ ¼æÈÝ:set\ cp! -menutrans Search\ &Path\.\.\. ²éÕÒ·¾¶(&P)\.\.\. -menutrans Ta&g\ Files\.\.\. Tag\ Îļþ(&T)\.\.\. - -" GUI options -menutrans Toggle\ &Toolbar ¿ª/¹Ø¹¤¾ßÀ¸(&T) -menutrans Toggle\ &Bottom\ Scrollbar ¿ª/¹Øµ×²¿¹ö¶¯Ìõ(&B) -menutrans Toggle\ &Left\ Scrollbar ¿ª/¹Ø×ó¶Ë¹ö¶¯Ìõ(&L) -menutrans Toggle\ &Right\ Scrollbar ¿ª/¹ØÓҶ˹ö¶¯Ìõ(&R) - -" Edit/File Settings -menutrans F&ile\ Settings ÎļþÉ趨(&I) - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! ¿ª/¹ØÏÔʾÐкÅ(&N):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! ¿ª/¹Ø\ list\ ģʽ(&L):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! ¿ª/¹ØÕÛÐÐ(&W):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! ¿ª/¹ØÕû´ÊÕÛÐÐ(&R):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! ¿ª/¹ØÀ©Õ¹\ tab(&E):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! ¿ª/¹Ø×Ô¶¯Ëõ½ø(&A):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! ¿ª/¹Ø\ C\ Ëõ½ø(&C):set\ cin! - -" other options -menutrans &Shiftwidth Ëõ½ø¿í¶È(&S) -menutrans Soft\ &Tabstop Soft\ Tab\ ¿í¶È(&T) -menutrans Te&xt\ Width\.\.\. Îı¾¿í¶È(&X)\.\.\. -menutrans &File\ Format\.\.\. Îļþ¸ñʽ(&F)\.\.\. -menutrans C&olor\ Scheme ÅäÉ«·½°¸(&O) -menutrans Select\ Fo&nt\.\.\. Ñ¡Ôñ×ÖÌå(&N)\.\.\. -menutrans &Keymap ¼üÅÌÓ³Éä(&K) - -" Programming menu -menutrans &Tools ¹¤¾ß(&T) -menutrans &Jump\ to\ this\ tagg^] Ìøתµ½Õâ¸ö\ tag(&J)g^] -menutrans Jump\ &back^T Ìøת·µ»Ø(&B)^T -menutrans Build\ &Tags\ File ½¨Á¢\ Tags\ Îļþ(&T) - -" Tools.Spelling Menu -menutrans &Spelling ƴд¼ì²é(&S) -menutrans &Spell\ Check\ On ´ò¿ªÆ´Ð´¼ì²é(&S) -menutrans Spell\ Check\ &Off ¹Ø±Õƴд¼ì²é(&O) -menutrans To\ &Next\ error]s ÉÏÒ»¸ö´íÎó(&N)]s -menutrans To\ &Previous\ error[s ÏÂÒ»¸ö´íÎó(&P)[s -menutrans Suggest\ &Correctionsz= ÐÞÕý½¨Òé(&C)z= -menutrans &Repeat\ correction:spellrepall Öظ´ÐÞÕý(&R):spellrepall -menutrans Set\ language\ to\ "en" É趨ÓïÑÔΪ\ "en" -menutrans Set\ language\ to\ "en_au" É趨ÓïÑÔΪ\ "en_au" -menutrans Set\ language\ to\ "en_ca" É趨ÓïÑÔΪ\ "en_ca" -menutrans Set\ language\ to\ "en_gb" É趨ÓïÑÔΪ\ "en_gb" -menutrans Set\ language\ to\ "en_nz" É趨ÓïÑÔΪ\ "en_nz" -menutrans Set\ language\ to\ "en_us" É趨ÓïÑÔΪ\ "en_us" -menutrans &Find\ More\ Languages ²éÕÒ¸ü¶àÓïÑÔ(&F) - -" Tools.Fold Menu -" open close folds -menutrans &Folding ÕÛµþ(&F) -menutrans &Enable/Disable\ foldszi ÆôÓÃ/½ûÓÃÕÛµþ(&E)zi -menutrans &View\ Cursor\ Linezv ²é¿´´ËÐÐ(&V)zv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx ½ö²é¿´´ËÐÐ(&W)zMzx -menutrans C&lose\ more\ foldszm ¹Ø±Õ¸ü¶àÕÛµþ(&L)zm -menutrans &Close\ all\ foldszM ¹Ø±ÕËùÓÐÕÛµþ(&C)zM -menutrans O&pen\ more\ foldszr ´ò¿ª¸ü¶àÕÛµþ(&P)zr -menutrans &Open\ all\ foldszR ´ò¿ªËùÓÐÕÛµþ(&O)zR -" fold method -menutrans Fold\ Met&hod ÕÛµþ·½·¨(&H) -menutrans M&anual ÊÖ¹¤(&A) -menutrans I&ndent Ëõ½ø(&N) -menutrans E&xpression ±í´ïʽ(&X) -menutrans S&yntax Óï·¨(&Y) -menutrans &Diff ±È½Ï(Diff)(&D) -menutrans Ma&rker ±ê¼Ç(&R) -" create and delete folds -menutrans Create\ &Foldzf ´´½¨ÕÛµþ(&F)zf -menutrans &Delete\ Foldzd ɾ³ýÕÛµþ(&D)zd -menutrans Delete\ &All\ FoldszD ɾ³ýËùÓÐÕÛµþ(&A)zD -" moving around in folds -menutrans Fold\ column\ &width ÕÛµþÀ¸¿í¶È(&W) - -" Tools.Diff Menu -menutrans &Diff ±È½Ï(Diff)(&D) -menutrans &Update ¸üÐÂ(&U) -menutrans &Get\ Block µÃµ½¿é(&G) -menutrans &Put\ Block ·ÅÖÿé(&P) - -menutrans &Make:make Make(&M):make -menutrans &List\ Errors:cl Áгö´íÎó(&L):cl -menutrans L&ist\ Messages:cl! ÁгöÏûÏ¢(&I):cl! -menutrans &Next\ Error:cn ÏÂÒ»¸ö´íÎó(&N):cn -menutrans &Previous\ Error:cp ÉÏÒ»¸ö´íÎó(&P):cp -menutrans &Older\ List:cold ¸ü¾ÉµÄ´íÎóÁбí(&O):cold -menutrans N&ewer\ List:cnew ¸üеĴíÎóÁбí(&E):cnew -menutrans Error\ &Window ´íÎó´°¿Ú(&W) -menutrans &Update:cwin ¸üÐÂ(&U):cwin -menutrans &Open:copen ´ò¿ª(&O):copen -menutrans &Close:cclose ¹Ø±Õ(&C):cclose -menutrans &Convert\ to\ HEX:%!xxd ת»»³ÉÊ®Áù½øÖÆ:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r ת»»·µ»Ø:%!xxd\ -r -menutrans Se&T\ Compiler É趨±àÒëÆ÷(&T) - -" Names for buffer menu. -menutrans &Buffers »º³åÇø(&B) -menutrans &Refresh\ menu ¸üв˵¥(&R) -menutrans &Delete ɾ³ý(&D) -menutrans &Alternate ½»Ìæ(&A) -menutrans &Next ÏÂÒ»¸ö(&N) -menutrans &Previous ÉÏÒ»¸ö(&P) - -" Window menu -menutrans &Window ´°¿Ú(&W) -menutrans &New^Wn н¨(&N)^Wn -menutrans S&plit^Ws ·Ö¸î(&P)^Ws -menutrans Sp&lit\ To\ #^W^^ ·Ö¸îµ½\ #(&L)^W^^ -menutrans Split\ &Vertically^Wv ´¹Ö±·Ö¸î(&V)^Wv -menutrans Split\ File\ E&xplorer ·Ö¸îÎļþä¯ÀÀÆ÷(&X) -menutrans &Close^Wc ¹Ø±Õ(&C)^Wc -menutrans Close\ &Other(s)^Wo ¹Ø±ÕÆäËü´°¿Ú(&O)^Wo -menutrans Move\ &To Òƶ¯µ½(&T) -menutrans &Top^WK ¶¥¶Ë(&T)^WK -menutrans &Bottom^WJ µ×¶Ë(&B)^WJ -menutrans &Left\ side^WH ×ó±ß(&L)^WH -menutrans &Right\ side^WL ÓÒ±ß(&R)^WL -" menutrans Ne&xt^Ww ÏÂÒ»¸ö(&X)^Ww -" menutrans P&revious^WW ÉÏÒ»¸ö(&R)^WW -menutrans Rotate\ &Up^WR ÏòÉÏÂÖ»»(&U)^WR -menutrans Rotate\ &Down^Wr ÏòÏÂÂÖ»»(&D)^Wr -menutrans &Equal\ Size^W= µÈ´ó(&E)^W= -menutrans &Max\ Height^W_ ×î´ó¸ß¶È(&M)^W -menutrans M&in\ Height^W1_ ×îС¸ß¶È(&I)^W1_ -menutrans Max\ &Width^W\| ×î´ó¿í¶È(&W)^W\| -menutrans Min\ Widt&h^W1\| ×îС¿í¶È(&H)^W1\| -" -" The popup menu -menutrans &Undo ³·Ïú(&U) -menutrans Cu&t ¼ôÇÐ(&T) -menutrans &Copy ¸´ÖÆ(&C) -menutrans &Paste Õ³Ìù(&P) -menutrans &Delete ɾ³ý(&D) -menutrans Select\ Blockwise Ñ¡Ôñ¿é -menutrans Select\ &Word Ñ¡Ôñµ¥´Ê(&W) -menutrans Select\ &Sentence Ñ¡Ôñ¾ä×Ó(&S) -menutrans Select\ Pa&ragraph Ñ¡Ôñ¶ÎÂä(&R) -menutrans Select\ &Line Ñ¡ÔñÐÐ(&L) -menutrans Select\ &Block Ñ¡Ôñ¿é(&B) -menutrans Select\ &All ȫѡ(&A) -" -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open ´ò¿ªÎļþ - tmenu ToolBar.Save ±£´æµ±Ç°Îļþ - tmenu ToolBar.SaveAll ±£´æÈ«²¿Îļþ - tmenu ToolBar.Print ´òÓ¡ - tmenu ToolBar.Undo ³·Ïú - tmenu ToolBar.Redo ÖØ×ö - tmenu ToolBar.Cut ¼ôÇе½¼ôÌù°å - tmenu ToolBar.Copy ¸´ÖƵ½¼ôÌù°å - tmenu ToolBar.Paste ´Ó¼ôÌù°åÕ³Ìù - tmenu ToolBar.Find ²éÕÒ... - tmenu ToolBar.FindNext ²éÕÒÏÂÒ»¸ö - tmenu ToolBar.FindPrev ²éÕÒÉÏÒ»¸ö - tmenu ToolBar.Replace ²éÕÒºÍÌæ»»... - tmenu ToolBar.LoadSesn ¼ÓÔػỰ - tmenu ToolBar.SaveSesn ±£´æµ±Ç°»á»° - tmenu ToolBar.RunScript ÔËÐÐ Vim ½Å±¾ - tmenu ToolBar.Make Ö´ÐÐ Make (:make) - tmenu ToolBar.RunCtags ÔÚµ±Ç°Ä¿Â¼½¨Á¢ tags (!ctags -R .) - tmenu ToolBar.TagJump Ìøתµ½¹â±êλÖÃµÄ tag - tmenu ToolBar.Help Vim °ïÖú - tmenu ToolBar.FindHelp ²éÕÒ Vim °ïÖú - endfun -endif - -" Syntax menu -menutrans &Syntax Óï·¨(&S) -menutrans &Show\ filetypes\ in\ menu Ôڲ˵¥ÖÐÏÔʾÎļþÀàÐÍ(&S) -menutrans &Off ¹Ø±Õ(&O) -menutrans &Manual ÊÖ¹¤(&M) -menutrans A&utomatic ×Ô¶¯(&U) -menutrans on/off\ for\ &This\ file ½ö¶ÔÕâ¸öÎļþ¿ª/¹Ø(&T) -menutrans Co&lor\ test É«²Ê²âÊÔ(&L) -menutrans &Highlight\ test ¸ßÁÁ²âÊÔ(&H) -menutrans &Convert\ to\ HTML ת»»³É\ HTML(&C) -menutrans Set\ '&syntax'\ only ½öÉ趨\ 'syntax'(&S) -menutrans Set\ '&filetype'\ too Ò²É趨\ 'filetype'(&F) diff --git a/share/vim/vim73/lang/menu_zh_cn.utf-8.vim b/share/vim/vim73/lang/menu_zh_cn.utf-8.vim deleted file mode 100644 index 04f192f6..00000000 --- a/share/vim/vim73/lang/menu_zh_cn.utf-8.vim +++ /dev/null @@ -1,263 +0,0 @@ -" Menu Translations: Simplified Chinese -" Translated By: Yuheng Xie -" Last Change: Tue Apr 18 22:00:00 2006 - -" vim: ts=8 sw=8 noet - -" Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 - -scriptencoding utf-8 - -" Help menu -menutrans &Help 帮助(&H) -menutrans &Overview 纵览(&O) -menutrans &User\ Manual 用户手册(&U) -menutrans &How-to\ links How-to\ 指引(&H) -menutrans &Find\.\.\. 查找(&F)\.\.\. -menutrans &Credits 致谢(&C) -menutrans Co&pying 版权(&P) -menutrans &Sponsor/Register 赞助/注册(&S) -menutrans O&rphans 孤儿(&R) -menutrans &Version 版本(&V) -menutrans &About 关于(&A) - -" File menu -menutrans &File 文件(&F) -menutrans &Open\.\.\.:e 打开(&O)\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp 分割并打开(&L)\.\.\.:sp -menutrans Open\ Tab\.\.\.:tabnew 打开标签\.\.\.:tabnew -menutrans &New:enew 新建(&N):enew -menutrans &Close:close 关闭(&C):close -menutrans &Save:w 保存(&S):w -menutrans Save\ &As\.\.\.:sav 另存为(&A)\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. 分割比较(Diff)(&D)\.\.\. -menutrans Split\ Patched\ &By\.\.\. 分割打补丁(Patch)(&B)\.\.\. -menutrans &Print 打印(&P) -menutrans Sa&ve-Exit:wqa 保存并退出(&V):wqa -menutrans E&xit:qa 退出(&X):qa - -" Edit menu -menutrans &Edit 编辑(&E) -menutrans &Undou 撤销(&U)u -menutrans &Redo^R 重做(&R)^R -menutrans Rep&eat\. 重复上次操作(&E)\. -menutrans Cu&t"+x 剪切(&T)"+x -menutrans &Copy"+y 复制(&C)"+y -menutrans &Paste"+gP 粘贴(&P)"+gP -menutrans Put\ &Before[p 粘贴到光标前(&B)[p -menutrans Put\ &After]p 粘贴到光标后(&A)]p -menutrans &Deletex 删除(&D)x -menutrans &Select\ AllggVG 全选(&S)ggVG -menutrans &Find\.\.\. 查找(&F)\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. 查找和替换(&L)\.\.\. -menutrans &Find/ 查找(&F)/ -menutrans Find\ and\ Rep&lace:%s 查找和替换(&L):%s -menutrans Settings\ &Window 设定窗口(&W) -menutrans Startup\ &Settings 启动设定(&S) -menutrans &Global\ Settings 全局设定(&G) - -" Edit/Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! 开/关模式高亮(&H):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! 开/关忽略大小写(&I):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! 开/关显示配对(&S):set\ sm! -menutrans &Context\ lines 上下文行数(&C) - -menutrans &Virtual\ Edit 虚拟编辑(&V) -menutrans Never 从不 -menutrans Block\ Selection 块选择 -menutrans Insert\ mode 插入模式 -menutrans Block\ and\ Insert 块选择和插入模式 -menutrans Always 总是 - -menutrans Toggle\ Insert\ &Mode:set\ im! 开/关插入模式(&M):set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! 开/关\ Vi\ 兼容:set\ cp! -menutrans Search\ &Path\.\.\. 查找路径(&P)\.\.\. -menutrans Ta&g\ Files\.\.\. Tag\ 文件(&T)\.\.\. - -" GUI options -menutrans Toggle\ &Toolbar 开/关工具栏(&T) -menutrans Toggle\ &Bottom\ Scrollbar 开/关底部滚动条(&B) -menutrans Toggle\ &Left\ Scrollbar 开/关左端滚动条(&L) -menutrans Toggle\ &Right\ Scrollbar 开/关右端滚动条(&R) - -" Edit/File Settings -menutrans F&ile\ Settings 文件设定(&I) - -" Boolean options -menutrans Toggle\ Line\ &Numbering:set\ nu! 开/关显示行号(&N):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! 开/关\ list\ 模式(&L):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! 开/关折行(&W):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! 开/关整词折行(&R):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! 开/关扩展\ tab(&E):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! 开/关自动缩进(&A):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! 开/关\ C\ 缩进(&C):set\ cin! - -" other options -menutrans &Shiftwidth 缩进宽度(&S) -menutrans Soft\ &Tabstop Soft\ Tab\ 宽度(&T) -menutrans Te&xt\ Width\.\.\. 文本宽度(&X)\.\.\. -menutrans &File\ Format\.\.\. 文件格式(&F)\.\.\. -menutrans C&olor\ Scheme 配色方案(&O) -menutrans Select\ Fo&nt\.\.\. 选择字体(&N)\.\.\. -menutrans &Keymap 键盘映射(&K) - -" Programming menu -menutrans &Tools 工具(&T) -menutrans &Jump\ to\ this\ tagg^] 跳转到这个\ tag(&J)g^] -menutrans Jump\ &back^T 跳转返回(&B)^T -menutrans Build\ &Tags\ File 建立\ Tags\ 文件(&T) - -" Tools.Spelling Menu -menutrans &Spelling 拼写检查(&S) -menutrans &Spell\ Check\ On 打开拼写检查(&S) -menutrans Spell\ Check\ &Off 关闭拼写检查(&O) -menutrans To\ &Next\ error]s 上一个错误(&N)]s -menutrans To\ &Previous\ error[s 下一个错误(&P)[s -menutrans Suggest\ &Correctionsz= 修正建议(&C)z= -menutrans &Repeat\ correction:spellrepall 重复修正(&R):spellrepall -menutrans Set\ language\ to\ "en" 设定语言为\ "en" -menutrans Set\ language\ to\ "en_au" 设定语言为\ "en_au" -menutrans Set\ language\ to\ "en_ca" 设定语言为\ "en_ca" -menutrans Set\ language\ to\ "en_gb" 设定语言为\ "en_gb" -menutrans Set\ language\ to\ "en_nz" 设定语言为\ "en_nz" -menutrans Set\ language\ to\ "en_us" 设定语言为\ "en_us" -menutrans &Find\ More\ Languages 查找更多语言(&F) - -" Tools.Fold Menu -" open close folds -menutrans &Folding 折叠(&F) -menutrans &Enable/Disable\ foldszi 启用/禁用折叠(&E)zi -menutrans &View\ Cursor\ Linezv 查看此行(&V)zv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx 仅查看此行(&W)zMzx -menutrans C&lose\ more\ foldszm 关闭更多折叠(&L)zm -menutrans &Close\ all\ foldszM 关闭所有折叠(&C)zM -menutrans O&pen\ more\ foldszr 打开更多折叠(&P)zr -menutrans &Open\ all\ foldszR 打开所有折叠(&O)zR -" fold method -menutrans Fold\ Met&hod 折叠方法(&H) -menutrans M&anual 手工(&A) -menutrans I&ndent 缩进(&N) -menutrans E&xpression 表达式(&X) -menutrans S&yntax 语法(&Y) -menutrans &Diff 比较(Diff)(&D) -menutrans Ma&rker 标记(&R) -" create and delete folds -menutrans Create\ &Foldzf 创建折叠(&F)zf -menutrans &Delete\ Foldzd 删除折叠(&D)zd -menutrans Delete\ &All\ FoldszD 删除所有折叠(&A)zD -" moving around in folds -menutrans Fold\ column\ &width 折叠栏宽度(&W) - -" Tools.Diff Menu -menutrans &Diff 比较(Diff)(&D) -menutrans &Update 更新(&U) -menutrans &Get\ Block 得到块(&G) -menutrans &Put\ Block 放置块(&P) - -menutrans &Make:make Make(&M):make -menutrans &List\ Errors:cl 列出错误(&L):cl -menutrans L&ist\ Messages:cl! 列出消息(&I):cl! -menutrans &Next\ Error:cn 下一个错误(&N):cn -menutrans &Previous\ Error:cp 上一个错误(&P):cp -menutrans &Older\ List:cold 更旧的错误列表(&O):cold -menutrans N&ewer\ List:cnew 更新的错误列表(&E):cnew -menutrans Error\ &Window 错误窗口(&W) -menutrans &Update:cwin 更新(&U):cwin -menutrans &Open:copen 打开(&O):copen -menutrans &Close:cclose 关闭(&C):cclose -menutrans &Convert\ to\ HEX:%!xxd 转换成十六进制:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r 转换返回:%!xxd\ -r -menutrans Se&T\ Compiler 设定编译器(&T) - -" Names for buffer menu. -menutrans &Buffers 缓冲区(&B) -menutrans &Refresh\ menu 更新菜单(&R) -menutrans &Delete 删除(&D) -menutrans &Alternate 交替(&A) -menutrans &Next 下一个(&N) -menutrans &Previous 上一个(&P) - -" Window menu -menutrans &Window 窗口(&W) -menutrans &New^Wn 新建(&N)^Wn -menutrans S&plit^Ws 分割(&P)^Ws -menutrans Sp&lit\ To\ #^W^^ 分割到\ #(&L)^W^^ -menutrans Split\ &Vertically^Wv 垂直分割(&V)^Wv -menutrans Split\ File\ E&xplorer 分割文件浏览器(&X) -menutrans &Close^Wc 关闭(&C)^Wc -menutrans Close\ &Other(s)^Wo 关闭其它窗口(&O)^Wo -menutrans Move\ &To 移动到(&T) -menutrans &Top^WK 顶端(&T)^WK -menutrans &Bottom^WJ 底端(&B)^WJ -menutrans &Left\ side^WH 左边(&L)^WH -menutrans &Right\ side^WL 右边(&R)^WL -" menutrans Ne&xt^Ww 下一个(&X)^Ww -" menutrans P&revious^WW 上一个(&R)^WW -menutrans Rotate\ &Up^WR 向上轮换(&U)^WR -menutrans Rotate\ &Down^Wr 向下轮换(&D)^Wr -menutrans &Equal\ Size^W= 等大(&E)^W= -menutrans &Max\ Height^W_ 最大高度(&M)^W -menutrans M&in\ Height^W1_ 最小高度(&I)^W1_ -menutrans Max\ &Width^W\| 最大宽度(&W)^W\| -menutrans Min\ Widt&h^W1\| 最小宽度(&H)^W1\| -" -" The popup menu -menutrans &Undo 撤销(&U) -menutrans Cu&t 剪切(&T) -menutrans &Copy 复制(&C) -menutrans &Paste 粘贴(&P) -menutrans &Delete 删除(&D) -menutrans Select\ Blockwise 选择块 -menutrans Select\ &Word 选择单词(&W) -menutrans Select\ &Sentence 选择句子(&S) -menutrans Select\ Pa&ragraph 选择段落(&R) -menutrans Select\ &Line 选择行(&L) -menutrans Select\ &Block 选择块(&B) -menutrans Select\ &All 全选(&A) -" -" The GUI toolbar -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open 打开文件 - tmenu ToolBar.Save 保存当前文件 - tmenu ToolBar.SaveAll 保存全部文件 - tmenu ToolBar.Print 打印 - tmenu ToolBar.Undo 撤销 - tmenu ToolBar.Redo 重做 - tmenu ToolBar.Cut 剪切到剪贴板 - tmenu ToolBar.Copy 复制到剪贴板 - tmenu ToolBar.Paste 从剪贴板粘贴 - tmenu ToolBar.Find 查找... - tmenu ToolBar.FindNext 查找下一个 - tmenu ToolBar.FindPrev 查找上一个 - tmenu ToolBar.Replace 查找和替换... - tmenu ToolBar.LoadSesn 加载会话 - tmenu ToolBar.SaveSesn 保存当前会话 - tmenu ToolBar.RunScript 运行 Vim 脚本 - tmenu ToolBar.Make 执行 Make (:make) - tmenu ToolBar.RunCtags 在当前目录建立 tags (!ctags -R .) - tmenu ToolBar.TagJump 跳转到光标位置的 tag - tmenu ToolBar.Help Vim 帮助 - tmenu ToolBar.FindHelp 查找 Vim 帮助 - endfun -endif - -" Syntax menu -menutrans &Syntax 语法(&S) -menutrans &Show\ filetypes\ in\ menu 在菜单中显示文件类型(&S) -menutrans &Off 关闭(&O) -menutrans &Manual 手工(&M) -menutrans A&utomatic 自动(&U) -menutrans on/off\ for\ &This\ file 仅对这个文件开/关(&T) -menutrans Co&lor\ test 色彩测试(&L) -menutrans &Highlight\ test 高亮测试(&H) -menutrans &Convert\ to\ HTML 转换成\ HTML(&C) -menutrans Set\ '&syntax'\ only 仅设定\ 'syntax'(&S) -menutrans Set\ '&filetype'\ too 也设定\ 'filetype'(&F) diff --git a/share/vim/vim73/lang/menu_zh_tw.utf-8.vim b/share/vim/vim73/lang/menu_zh_tw.utf-8.vim deleted file mode 100644 index 97c56a39..00000000 --- a/share/vim/vim73/lang/menu_zh_tw.utf-8.vim +++ /dev/null @@ -1,285 +0,0 @@ -" Menu Translations: Traditional Chinese -" Translated By: Hung-Te Lin -" Last Change: 2005/01/28 02:51:38 - -" {{{ Quit when menu translations have already been done. -if exists("did_menu_trans") - finish -endif -let did_menu_trans = 1 -" }}} - -scriptencoding utf-8 - -" {{{ Help menu: complete -menutrans &Help 輔助說明(&H) -" ------------------------------------------------------------------------ -menutrans &Overview 說明文件總覽(&O) -menutrans &User\ Manual 使用者手冊(&U) -menutrans &How-to\ links 如何作\.\.\.(&H) -menutrans &GUI 圖型界面(&G) -menutrans &Credits 感謝(&C) -menutrans Co&pying 版權(&P) -menutrans &Sponsor/Register 贊助/註冊(&S) -menutrans O&rphans 拯救孤兒(&R) -" ------------------------------------------------------------------------ -menutrans &Version 程式版本資訊(&V) -menutrans &About 關於\ Vim(&A) -" }}} - -" {{{ File menu: complete -menutrans &File 檔案(&F) -" ------------------------------------------------------------------------ -menutrans &Open\.\.\.:e 開啟(&O)\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp 分割視窗並開啟(&L):sp -menutrans &New:enew 編輯新檔案(&N):enew -menutrans &Close:close 關閉檔案(&C):close -" ------------------------------------------------------------------------ -menutrans &Save:w 儲存(&S):w -menutrans Save\ &As\.\.\.:sav 另存新檔(&A)\.\.\.:sav -" ------------------------------------------------------------------------ -menutrans Split\ &Diff\ with\.\.\. 比較(&Diff)\.\.\. -menutrans Split\ Patched\ &By\.\.\. 執行Patch(&B)\.\.\. -" ------------------------------------------------------------------------ -menutrans &Print 列印(&P) -" ------------------------------------------------------------------------ -menutrans Sa&ve-Exit:wqa 儲存並離開(&V):wqa -menutrans E&xit:qa 離開(&X):qa -" }}} - -" {{{ Edit menu -menutrans &Edit 編輯(&E) -" ------------------------------------------------------------------------ -menutrans &Undou 復原(&U)u -menutrans &Redo^R 取消上次復原(&R)^R -menutrans Rep&eat\. 重複上次動作(&E)\. -" ------------------------------------------------------------------------ -menutrans Cu&t"+x 剪下(&T)"+x -menutrans &Copy"+y 複製(&C)"+y -menutrans &Paste"+gP 貼上(&P)"+gP -menutrans Put\ &Before[p 貼到游標前(&B)[p -menutrans Put\ &After]p 貼到游標後(&A)]p -menutrans &Deletex 刪除(&D)x -menutrans &Select\ AllggVG 全選(&S)ggvG -" ------------------------------------------------------------------------ -menutrans &Find\.\.\. 尋找(&F)\.\.\. -menutrans Find\ and\ Rep&lace\.\.\. 尋找並取代(&L)\.\.\. -" ------------------------------------------------------------------------ -menutrans Settings\ &Window 設定視窗(&W) -menutrans &Global\ Settings 全域設定(&G) -menutrans F&ile\ Settings 設定此檔案(&I) -menutrans C&olor\ Scheme 配色設定(&O) -menutrans &Keymap 鍵盤對應(&K) - " "{{{ Keymap: - menutrans None 無 - " }}} -menutrans Select\ Fo&nt\.\.\. 設定字型(&N)\.\.\. -" }}} - -" {{{ Edit.FileSettings -menutrans Toggle\ Line\ &Numbering:set\ nu! 切換顯示行號(&N):set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! 切換顯示行尾及TAB(&L):set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! 切換自動折行顯示(&W):set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! 切換折行顯示可任意斷句(&R):set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! 切換展開TAB(&E):set\ et! -menutrans Toggle\ &auto-indent:set\ ai! 切換自動縮排(&A):set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! 切換C語言縮排(&C):set\ cin! -" ------------------------------------------------------------------------ -menutrans &Shiftwidth 縮排寬度(shiftwidth)(&S) -menutrans Soft\ &Tabstop 軟體模擬TAB(softtabstop)(&T) -menutrans Te&xt\ Width\.\.\. 文字頁面寬度(textwidth)(&X)\.\.\. -menutrans &File\ Format\.\.\. 設定檔案格式(對應作業系統)(&F)\.\.\. -" }}} - -" {{{ Edit.GlobalSettings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! 切換高亮度搜尋字串(&H):set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! 切換忽略大小寫(&I):set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! 切換顯示對應括號(&S):set\ sm! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! 切換傳統Vi相容模式(&O):set\ cp! -menutrans &Context\ lines 本文前後保留行數(scrolloff)(&C) -menutrans &Virtual\ Edit 游標任意移動(virtualedit)(&V) - " {{{ Edit.GlobalSettings.VirtualEdit - menutrans Never 不使用 - menutrans Block\ Selection 區塊選擇時 - menutrans Insert\ mode 插入模式時 - menutrans Block\ and\ Insert 區塊與插入模式 - menutrans Always 一直開啟 - " }}} -menutrans Toggle\ Insert\ &Mode:set\ im! 切換插入模式(&M):set\ im! -menutrans Search\ &Path\.\.\. 搜尋路徑(&P)\.\.\. -menutrans Ta&g\ Files\.\.\. Tag\ 標籤索引檔案(&G)\.\.\. -" ------------------------------------------------------------------------ -menutrans Toggle\ &Toolbar 切換使用工具列(&T) -menutrans Toggle\ &Bottom\ Scrollbar 切換使用底端捲動軸(&B) -menutrans Toggle\ &Left\ Scrollbar 切換使用左端捲動軸(&L) -menutrans Toggle\ &Right\ Scrollbar 切換使用右端捲動軸(&R) -" }}} - -" {{{ Tools menu: complete -menutrans &Tools 工具(&T) -" ------------------------------------------------------------------------ -menutrans &Jump\ to\ this\ tagg^] 檢索游標處的標籤關鍵字(tag)(&J)g^] -menutrans Jump\ &back^T 跳回檢索前的位置(&B)^T -menutrans Build\ &Tags\ File 建立標籤索引檔\ Tags(&T) -" ------------------------------------------------------------------------ -menutrans &Folding 覆疊(Fold)設定(&F) - " {{{ Tools.Fold - menutrans &Enable/Disable\ foldszi 切換使用\ Folding(&E)zi - menutrans &View\ Cursor\ Linezv 檢視此層\ Fold(&V)zv - menutrans Vie&w\ Cursor\ Line\ onlyzMzx 只檢視此\ Fold(&W)zMzx - menutrans C&lose\ more\ foldszm 收起一層\ Folds(&L)zm - menutrans &Close\ all\ foldszM 收起所有\ Folds(&C)zM - menutrans O&pen\ more\ foldszr 打開一層\ Folds(&P)zr - menutrans &Open\ all\ foldszR 打開所有\ Folds(&O)zR - menutrans Fold\ Met&hod Folding\ 方式(&H) - " {{{ Tools.Fold.Method - menutrans M&anual 手動建立(&A) - menutrans I&ndent 依照縮排(&N) - menutrans E&xpression 自訂運算式(&X) - menutrans S&yntax 依照語法設定(&Y) - menutrans &Diff Diff(&D) - menutrans Ma&rker 標記(Marker)(&R) - " }}} - " ------------------------------------------------------------------------ - menutrans Create\ &Foldzf 建立\ Fold(&F)zf - menutrans &Delete\ Foldzd 刪除\ Fold(&D)zd - menutrans Delete\ &All\ FoldszD 刪除所有\ Fold(&A)zD - " ------------------------------------------------------------------------ - menutrans Fold\ column\ &width 設定\ Fold欄寬(&W) - " }}} -menutrans &Diff Diff(&D) - " {{{ Tools.Diff - menutrans &Update 更新(&U) - menutrans &Get\ Block 取得區塊(&G) - menutrans &Put\ Block 貼上區塊(&P) - " }}} -" ------------------------------------------------------------------------ -menutrans &Make:make 執行\ Make(&M):make -menutrans &List\ Errors:cl 列出編譯錯誤(&E):cl -menutrans L&ist\ Messages:cl! 列出所有訊息(&I):cl! -menutrans &Next\ Error:cn 下一個編譯錯誤處(&N):cn -menutrans &Previous\ Error:cp 上一個編譯錯誤處(&P):cp -menutrans &Older\ List:cold 檢視舊錯誤列表(&O):cold -menutrans N&ewer\ List:cnew 檢視新錯誤列表(&E):cnew -menutrans Error\ &Window 錯誤訊息視窗(&W) - " {{{ Tools.ErrorWindow - menutrans &Update:cwin 更新(&U):cwin - menutrans &Open:copen 開啟(&O):copen - menutrans &Close:cclose 關閉(&C):cclose - " }}} -menutrans &Set\ Compiler 設定編譯器Compiler(&S) -" ------------------------------------------------------------------------ -menutrans &Convert\ to\ HEX:%!xxd 轉換成16進位碼(&C):%!xxd -menutrans Conve&rt\ back:%!xxd\ -r 從16進位碼轉換回文字(&R):%!xxd\ -r -" }}} - -" {{{ Syntax menu: compete -menutrans &Syntax 語法效果(&S) -" ------------------------------------------------------------------------ -menutrans &Show\ filetypes\ in\ menu 顯示所有可用檔案格式(&S) -menutrans Set\ '&syntax'\ only 只使用\ 'syntax'(&S) -menutrans Set\ '&filetype'\ too 使用\ 'syntax'+'filetype'(&F) -menutrans &Off 關閉效果(&O) -menutrans &Manual 手動設定(&M) -menutrans A&utomatic 自動設定(&U) -menutrans on/off\ for\ &This\ file 只切換此檔的效果設定(&T) -" ------------------------------------------------------------------------ -menutrans Co&lor\ test 色彩顯示測試(&L) -menutrans &Highlight\ test 語法效果測試(&H) -menutrans &Convert\ to\ HTML 轉換成\ HTML\ 格式(&C) -" }}} - -" {{{ Buffers menu: complete -menutrans &Buffers 緩衝區(&B) -" ------------------------------------------------------------------------ -menutrans &Refresh\ menu 更新(&R) -menutrans &Delete 刪除(&D) -menutrans &Alternate 切換上次編輯緩衝區(&A) -menutrans &Next 下一個(&N) -menutrans &Previous 前一個(&P) -" ------------------------------------------------------------------------ -" menutrans [No\ file] [無檔案] -" }}} - -" {{{ Window menu: complete -menutrans &Window 視窗(&W) -" ------------------------------------------------------------------------ -menutrans &New^Wn 開新視窗(&N)^Wn -menutrans S&plit^Ws 分割視窗(&P)^Ws -menutrans Sp&lit\ To\ #^W^^ 分割到#(&L)^W^^ -menutrans Split\ &Vertically^Wv 垂直分割(&V)^Wv -menutrans Split\ File\ E&xplorer 檔案總管式分割(&X) -" ------------------------------------------------------------------------ -menutrans &Close^Wc 關閉視窗(&C)^Wc -menutrans Close\ &Other(s)^Wo 關閉其它視窗(&O)^Wo -" ------------------------------------------------------------------------ -menutrans Move\ &To 移至(&T) - " {{{ Window.MoveTo - menutrans &Top^WK 頂端(&T)^WK - menutrans &Bottom^WJ 底端(&B)^WJ - menutrans &Left\ side^WH 左邊(&L)^WH - menutrans &Right\ side^WL 右邊(&R)^WL - " }}} -menutrans Rotate\ &Up^WR 上移視窗(&U)^WR -menutrans Rotate\ &Down^Wr 下移視窗(&D)^Wr -" ------------------------------------------------------------------------ -menutrans &Equal\ Size^W= 所有視窗等高(&E)^W= -menutrans &Max\ Height^W_ 最大高度(&M)^W -menutrans M&in\ Height^W1_ 最小高度(&I)^W1_ -menutrans Max\ &Width^W\| 最大寬度(&W)^W\| -menutrans Min\ Widt&h^W1\| 最小寬度(&H)^W1\| -" }}} - -" {{{ The popup menu: complete -menutrans &Undo 復原(&U) -" ------------------------------------------------------------------------ -menutrans Cu&t 剪下(&T) -menutrans &Copy 複製(&C) -menutrans &Paste 貼上(&P) -menutrans &Delete 刪除(&D) -" ------------------------------------------------------------------------ -menutrans Select\ Blockwise Blockwise式選擇 -menutrans Select\ &Word 選擇單字(&W) -menutrans Select\ &Line 選擇行(&L) -menutrans Select\ &Block 選擇區塊(&B) -menutrans Select\ &All 全選(&A) -" }}} - -" {{{ The GUI toolbar: complete -if has("toolbar") - if exists("*Do_toolbar_tmenu") - delfun Do_toolbar_tmenu - endif - fun Do_toolbar_tmenu() - tmenu ToolBar.Open 開啟檔案 - tmenu ToolBar.Save 儲存目前編輯中的檔案 - tmenu ToolBar.SaveAll 儲存全部檔案 - tmenu ToolBar.Print 列印 -" ------------------------------------------------------------------------ - tmenu ToolBar.Undo 復原上次變動 - tmenu ToolBar.Redo 取消上次復原動作 -" ------------------------------------------------------------------------ - tmenu ToolBar.Cut 剪下至剪貼簿 - tmenu ToolBar.Copy 複製到剪貼簿 - tmenu ToolBar.Paste 由剪貼簿貼上 -" ------------------------------------------------------------------------ - tmenu ToolBar.Find 尋找... - tmenu ToolBar.FindNext 找下一個 - tmenu ToolBar.FindPrev 找上一個 - tmenu ToolBar.Replace 取代... -" ------------------------------------------------------------------------ - tmenu ToolBar.LoadSesn 載入 Session - tmenu ToolBar.SaveSesn 儲存目前的 Session - tmenu ToolBar.RunScript 執行 Vim 程式檔 -" ------------------------------------------------------------------------ - tmenu ToolBar.Make 執行 Make - tmenu ToolBar.Shell 開啟一個命令列視窗 DosBox - tmenu ToolBar.RunCtags 執行 ctags - tmenu ToolBar.TagJump 跳到目前游標位置的 tag - tmenu ToolBar.Help Vim 輔助說明 - tmenu ToolBar.FindHelp 搜尋 Vim 說明文件 - endfun -endif -" }}} - -" vim:foldmethod=marker:nowrap:foldcolumn=2:foldlevel=1 diff --git a/share/vim/vim73/macros/editexisting.vim b/share/vim/vim73/macros/editexisting.vim deleted file mode 100644 index 07c55f67..00000000 --- a/share/vim/vim73/macros/editexisting.vim +++ /dev/null @@ -1,119 +0,0 @@ -" Vim Plugin: Edit the file with an existing Vim if possible -" Maintainer: Bram Moolenaar -" Last Change: 2008 May 29 - -" This is a plugin, drop it in your (Unix) ~/.vim/plugin or (Win32) -" $VIM/vimfiles/plugin directory. Or make a symbolic link, so that you -" automatically use the latest version. - -" This plugin serves two purposes: -" 1. On startup, if we were invoked with one file name argument and the file -" is not modified then try to find another Vim instance that is editing -" this file. If there is one then bring it to the foreground and exit. -" 2. When a file is edited and a swap file exists for it, try finding that -" other Vim and bring it to the foreground. Requires Vim 7, because it -" uses the SwapExists autocommand event. -if v:version < 700 - finish -endif - -" Function that finds the Vim instance that is editing "filename" and brings -" it to the foreground. -func s:EditElsewhere(filename) - let fname_esc = substitute(a:filename, "'", "''", "g") - - let servers = serverlist() - while servers != '' - " Get next server name in "servername"; remove it from "servers". - let i = match(servers, "\n") - if i == -1 - let servername = servers - let servers = '' - else - let servername = strpart(servers, 0, i) - let servers = strpart(servers, i + 1) - endif - - " Skip ourselves. - if servername ==? v:servername - continue - endif - - " Check if this server is editing our file. - if remote_expr(servername, "bufloaded('" . fname_esc . "')") - " Yes, bring it to the foreground. - if has("win32") - call remote_foreground(servername) - endif - call remote_expr(servername, "foreground()") - - if remote_expr(servername, "exists('*EditExisting')") - " Make sure the file is visible in a window (not hidden). - " If v:swapcommand exists and is set, send it to the server. - if exists("v:swapcommand") - let c = substitute(v:swapcommand, "'", "''", "g") - call remote_expr(servername, "EditExisting('" . fname_esc . "', '" . c . "')") - else - call remote_expr(servername, "EditExisting('" . fname_esc . "', '')") - endif - endif - - if !(has('vim_starting') && has('gui_running') && has('gui_win32')) - " Tell the user what is happening. Not when the GUI is starting - " though, it would result in a message box. - echomsg "File is being edited by " . servername - sleep 2 - endif - return 'q' - endif - endwhile - return '' -endfunc - -" When the plugin is loaded and there is one file name argument: Find another -" Vim server that is editing this file right now. -if argc() == 1 && !&modified - if s:EditElsewhere(expand("%:p")) == 'q' - quit - endif -endif - -" Setup for handling the situation that an existing swap file is found. -try - au! SwapExists * let v:swapchoice = s:EditElsewhere(expand(":p")) -catch - " Without SwapExists we don't do anything for ":edit" commands -endtry - -" Function used on the server to make the file visible and possibly execute a -" command. -func! EditExisting(fname, command) - " Get the window number of the file in the current tab page. - let winnr = bufwinnr(a:fname) - if winnr <= 0 - " Not found, look in other tab pages. - let bufnr = bufnr(a:fname) - for i in range(tabpagenr('$')) - if index(tabpagebuflist(i + 1), bufnr) >= 0 - " Make this tab page the current one and find the window number. - exe 'tabnext ' . (i + 1) - let winnr = bufwinnr(a:fname) - break; - endif - endfor - endif - - if winnr > 0 - exe winnr . "wincmd w" - elseif exists('*fnameescape') - exe "split " . fnameescape(a:fname) - else - exe "split " . escape(a:fname, " \t\n*?[{`$\\%#'\"|!<") - endif - - if a:command != '' - exe "normal " . a:command - endif - - redraw -endfunc diff --git a/share/vim/vim73/macros/justify.vim b/share/vim/vim73/macros/justify.vim deleted file mode 100644 index aa4a9ca5..00000000 --- a/share/vim/vim73/macros/justify.vim +++ /dev/null @@ -1,317 +0,0 @@ -" Function to left and rigt align text. -" -" Written by: Preben "Peppe" Guldberg -" Created: 980806 14:13 (or around that time anyway) -" Revised: 001103 00:36 (See "Revisions" below) - - -" function Justify( [ textwidth [, maxspaces [, indent] ] ] ) -" -" Justify() will left and right align a line by filling in an -" appropriate amount of spaces. Extra spaces are added to existing -" spaces starting from the right side of the line. As an example, the -" following documentation has been justified. -" -" The function takes the following arguments: - -" textwidth argument -" ------------------ -" If not specified, the value of the 'textwidth' option is used. If -" 'textwidth' is zero a value of 80 is used. -" -" Additionally the arguments 'tw' and '' are accepted. The value of -" 'textwidth' will be used. These are handy, if you just want to specify -" the maxspaces argument. - -" maxspaces argument -" ------------------ -" If specified, alignment will only be done, if the longest space run -" after alignment is no longer than maxspaces. -" -" An argument of '' is accepted, should the user like to specify all -" arguments. -" -" To aid user defined commands, negative values are accepted aswell. -" Using a negative value specifies the default behaviour: any length of -" space runs will be used to justify the text. - -" indent argument -" --------------- -" This argument specifies how a line should be indented. The default is -" to keep the current indentation. -" -" Negative values: Keep current amount of leading whitespace. -" Positive values: Indent all lines with leading whitespace using this -" amount of whitespace. -" -" Note that the value 0, needs to be quoted as a string. This value -" leads to a left flushed text. -" -" Additionally units of 'shiftwidth'/'sw' and 'tabstop'/'ts' may be -" added. In this case, if the value of indent is positive, the amount of -" whitespace to be added will be multiplied by the value of the -" 'shiftwidth' and 'tabstop' settings. If these units are used, the -" argument must be given as a string, eg. Justify('','','2sw'). -" -" If the values of 'sw' or 'tw' are negative, they are treated as if -" they were 0, which means that the text is flushed left. There is no -" check if a negative number prefix is used to change the sign of a -" negative 'sw' or 'ts' value. -" -" As with the other arguments, '' may be used to get the default -" behaviour. - - -" Notes: -" -" If the line, adjusted for space runs and leading/trailing whitespace, -" is wider than the used textwidth, the line will be left untouched (no -" whitespace removed). This should be equivalent to the behaviour of -" :left, :right and :center. -" -" If the resulting line is shorter than the used textwidth it is left -" untouched. -" -" All space runs in the line are truncated before the alignment is -" carried out. -" -" If you have set 'noexpandtab', :retab! is used to replace space runs -" with whitespace using the value of 'tabstop'. This should be -" conformant with :left, :right and :center. -" -" If joinspaces is set, an extra space is added after '.', '?' and '!'. -" If 'cpooptions' include 'j', extra space is only added after '.'. -" (This may on occasion conflict with maxspaces.) - - -" Related mappings: -" -" Mappings that will align text using the current text width, using at -" most four spaces in a space run and keeping current indentation. -nmap _j :%call Justify('tw',4) -vmap _j :call Justify('tw',4) -" -" Mappings that will remove space runs and format lines (might be useful -" prior to aligning the text). -nmap ,gq :%s/\s\+/ /ggq1G -vmap ,gq :s/\s\+/ /ggvgq - - -" User defined command: -" -" The following is an ex command that works as a shortcut to the Justify -" function. Arguments to Justify() can be added after the command. -com! -range -nargs=* Justify ,call Justify() -" -" The following commands are all equivalent: -" -" 1. Simplest use of Justify(): -" :call Justify() -" :Justify -" -" 2. The _j mapping above via the ex command: -" :%Justify tw 4 -" -" 3. Justify visualised text at 72nd column while indenting all -" previously indented text two shiftwidths -" :'<,'>call Justify(72,'','2sw') -" :'<,'>Justify 72 -1 2sw -" -" This documentation has been justified using the following command: -":se et|kz|1;/^" function Justify(/+,'z-g/^" /s/^" //|call Justify(70,3)|s/^/" / - -" Revisions: -" 001103: If 'joinspaces' was set, calculations could be wrong. -" Tabs at start of line could also lead to errors. -" Use setline() instead of "exec 's/foo/bar/' - safer. -" Cleaned up the code a bit. -" -" Todo: Convert maps to the new script specific form - -" Error function -function! Justify_error(message) - echohl Error - echo "Justify([tw, [maxspaces [, indent]]]): " . a:message - echohl None -endfunction - - -" Now for the real thing -function! Justify(...) range - - if a:0 > 3 - call Justify_error("Too many arguments (max 3)") - return 1 - endif - - " Set textwidth (accept 'tw' and '' as arguments) - if a:0 >= 1 - if a:1 =~ '^\(tw\)\=$' - let tw = &tw - elseif a:1 =~ '^\d\+$' - let tw = a:1 - else - call Justify_error("tw must be a number (>0), '' or 'tw'") - return 2 - endif - else - let tw = &tw - endif - if tw == 0 - let tw = 80 - endif - - " Set maximum number of spaces between WORDs - if a:0 >= 2 - if a:2 == '' - let maxspaces = tw - elseif a:2 =~ '^-\d\+$' - let maxspaces = tw - elseif a:2 =~ '^\d\+$' - let maxspaces = a:2 - else - call Justify_error("maxspaces must be a number or ''") - return 3 - endif - else - let maxspaces = tw - endif - if maxspaces <= 1 - call Justify_error("maxspaces should be larger than 1") - return 4 - endif - - " Set the indentation style (accept sw and ts units) - let indent_fix = '' - if a:0 >= 3 - if (a:3 == '') || a:3 =~ '^-[1-9]\d*\(shiftwidth\|sw\|tabstop\|ts\)\=$' - let indent = -1 - elseif a:3 =~ '^-\=0\(shiftwidth\|sw\|tabstop\|ts\)\=$' - let indent = 0 - elseif a:3 =~ '^\d\+\(shiftwidth\|sw\|tabstop\|ts\)\=$' - let indent = substitute(a:3, '\D', '', 'g') - elseif a:3 =~ '^\(shiftwidth\|sw\|tabstop\|ts\)$' - let indent = 1 - else - call Justify_error("indent: a number with 'sw'/'ts' unit") - return 5 - endif - if indent >= 0 - while indent > 0 - let indent_fix = indent_fix . ' ' - let indent = indent - 1 - endwhile - let indent_sw = 0 - if a:3 =~ '\(shiftwidth\|sw\)' - let indent_sw = &sw - elseif a:3 =~ '\(tabstop\|ts\)' - let indent_sw = &ts - endif - let indent_fix2 = '' - while indent_sw > 0 - let indent_fix2 = indent_fix2 . indent_fix - let indent_sw = indent_sw - 1 - endwhile - let indent_fix = indent_fix2 - endif - else - let indent = -1 - endif - - " Avoid substitution reports - let save_report = &report - set report=1000000 - - " Check 'joinspaces' and 'cpo' - if &js == 1 - if &cpo =~ 'j' - let join_str = '\(\. \)' - else - let join_str = '\([.!?!] \)' - endif - endif - - let cur = a:firstline - while cur <= a:lastline - - let str_orig = getline(cur) - let save_et = &et - set et - exec cur . "retab" - let &et = save_et - let str = getline(cur) - - let indent_str = indent_fix - let indent_n = strlen(indent_str) - " Shall we remember the current indentation - if indent < 0 - let indent_orig = matchstr(str_orig, '^\s*') - if strlen(indent_orig) > 0 - let indent_str = indent_orig - let indent_n = strlen(matchstr(str, '^\s*')) - endif - endif - - " Trim trailing, leading and running whitespace - let str = substitute(str, '\s\+$', '', '') - let str = substitute(str, '^\s\+', '', '') - let str = substitute(str, '\s\+', ' ', 'g') - " Use substitute() hack to get strlen in characters instead of bytes - let str_n = strlen(substitute(str, '.', 'x', 'g')) - - " Possible addition of space after punctuation - if exists("join_str") - let str = substitute(str, join_str, '\1 ', 'g') - endif - let join_n = strlen(substitute(str, '.', 'x', 'g')) - str_n - - " Can extraspaces be added? - " Note that str_n may be less than strlen(str) [joinspaces above] - if strlen(substitute(str, '.', 'x', 'g')) < tw - indent_n && str_n > 0 - " How many spaces should be added - let s_add = tw - str_n - indent_n - join_n - let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n - let s_dup = s_add / s_nr - let s_mod = s_add % s_nr - - " Test if the changed line fits with tw - if 0 <= (str_n + (maxspaces - 1)*s_nr + indent_n) - tw - - " Duplicate spaces - while s_dup > 0 - let str = substitute(str, '\( \+\)', ' \1', 'g') - let s_dup = s_dup - 1 - endwhile - - " Add extra spaces from the end - while s_mod > 0 - let str = substitute(str, '\(\(\s\+\S\+\)\{' . s_mod . '}\)$', ' \1', '') - let s_mod = s_mod - 1 - endwhile - - " Indent the line - if indent_n > 0 - let str = substitute(str, '^', indent_str, '' ) - endif - - " Replace the line - call setline(cur, str) - - " Convert to whitespace - if &et == 0 - exec cur . 'retab!' - endif - - endif " Change of line - endif " Possible change - - let cur = cur + 1 - endwhile - - norm ^ - - let &report = save_report - -endfunction - -" EOF vim: tw=78 ts=8 sw=4 sts=4 noet ai diff --git a/share/vim/vim73/macros/less.sh b/share/vim/vim73/macros/less.sh deleted file mode 100644 index 484c714c..00000000 --- a/share/vim/vim73/macros/less.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# Shell script to start Vim with less.vim. -# Read stdin if no arguments were given. - -if test -t 1; then - if test $# = 0; then - vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' - - else - vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' "$@" - fi -else - # Output is not a terminal, cat arguments or stdin - if test $# = 0; then - cat - else - cat "$@" - fi -fi diff --git a/share/vim/vim73/macros/less.vim b/share/vim/vim73/macros/less.vim deleted file mode 100644 index 959a5d73..00000000 --- a/share/vim/vim73/macros/less.vim +++ /dev/null @@ -1,244 +0,0 @@ -" Vim script to work like "less" -" Maintainer: Bram Moolenaar -" Last Change: 2006 Dec 05 - -" Avoid loading this file twice, allow the user to define his own script. -if exists("loaded_less") - finish -endif -let loaded_less = 1 - -" If not reading from stdin, skip files that can't be read. -" Exit if there is no file at all. -if argc() > 0 - let s:i = 0 - while 1 - if filereadable(argv(s:i)) - if s:i != 0 - sleep 3 - endif - break - endif - if isdirectory(argv(s:i)) - echomsg "Skipping directory " . argv(s:i) - elseif getftime(argv(s:i)) < 0 - echomsg "Skipping non-existing file " . argv(s:i) - else - echomsg "Skipping unreadable file " . argv(s:i) - endif - echo "\n" - let s:i = s:i + 1 - if s:i == argc() - quit - endif - next - endwhile -endif - -set nocp -syntax on -set so=0 -set hlsearch -set incsearch -nohlsearch -" Don't remember file names and positions -set viminfo= -set nows -" Inhibit screen updates while searching -let s:lz = &lz -set lz - -" Used after each command: put cursor at end and display position -if &wrap - noremap L L0:redraw:file - au VimEnter * normal! L0 -else - noremap L Lg0:redraw:file - au VimEnter * normal! Lg0 -endif - -" When reading from stdin don't consider the file modified. -au VimEnter * set nomod - -" Can't modify the text -set noma - -" Give help -noremap h :call Help() -map H h -fun! s:Help() - echo " One page forward b One page backward" - echo "d Half a page forward u Half a page backward" - echo " One line forward k One line backward" - echo "G End of file g Start of file" - echo "N% percentage in file" - echo "\n" - echo "/pattern Search for pattern ?pattern Search backward for pattern" - echo "n next pattern match N Previous pattern match" - echo "\n" - echo ":n Next file :p Previous file" - echo "\n" - echo "q Quit v Edit file" - let i = input("Hit Enter to continue") -endfun - -" Scroll one page forward -noremap " - \]) -endif - -if s:settings.no_pre - call extend(s:lines, ["", ""]) -else - call extend(s:lines, ["", "", "
"])
-endif
-
-exe s:orgwin . "wincmd w"
-
-" List of all id's
-let s:idlist = []
-
-" set up progress bar in the status line
-if !s:settings.no_progress
-  " ProgressBar Indicator
-  let s:progressbar={}
-
-  " Progessbar specific functions
-  func! s:ProgressBar(title, max_value, winnr)
-    let pgb=copy(s:progressbar)
-    let pgb.title = a:title.' '
-    let pgb.max_value = a:max_value
-    let pgb.winnr = a:winnr
-    let pgb.cur_value = 0
-    let pgb.items = { 'title'   : { 'color' : 'Statusline' },
-	  \'bar'     : { 'color' : 'Statusline' , 'fillcolor' : 'DiffDelete' , 'bg' : 'Statusline' } ,
-	  \'counter' : { 'color' : 'Statusline' } }
-    let pgb.last_value = 0
-    let pgb.needs_redraw = 0
-    " Note that you must use len(split) instead of len() if you want to use 
-    " unicode in title.
-    "
-    " Subtract 3 for spacing around the title.
-    " Subtract 4 for the percentage display.
-    " Subtract 2 for spacing before this.
-    " Subtract 2 more for the '|' on either side of the progress bar
-    let pgb.subtractedlen=len(split(pgb.title, '\zs'))+3+4+2+2
-    let pgb.max_len = 0
-    set laststatus=2
-    return pgb
-  endfun
-
-  " Function: progressbar.calculate_ticks() {{{1
-  func! s:progressbar.calculate_ticks(pb_len)
-    if a:pb_len<=0
-      let pb_len = 100
-    else
-      let pb_len = a:pb_len
-    endif
-    let self.progress_ticks = map(range(pb_len+1), "v:val * self.max_value / pb_len")
-  endfun
-
-  "Function: progressbar.paint()
-  func! s:progressbar.paint()
-    " Recalculate widths.
-    let max_len = winwidth(self.winnr)
-    let pb_len = 0
-    " always true on first call because of initial value of self.max_len
-    if max_len != self.max_len
-      let self.max_len = max_len
-
-      " Progressbar length
-      let pb_len = max_len - self.subtractedlen
-
-      call self.calculate_ticks(pb_len)
-
-      let self.needs_redraw = 1
-      let cur_value = 0
-      let self.pb_len = pb_len
-    else
-      " start searching at the last found index to make the search for the
-      " appropriate tick value normally take 0 or 1 comparisons
-      let cur_value = self.last_value
-      let pb_len = self.pb_len
-    endif
-
-    let cur_val_max = pb_len > 0 ? pb_len : 100
-
-    " find the current progress bar position based on precalculated thresholds
-    while cur_value < cur_val_max && self.cur_value > self.progress_ticks[cur_value]
-      let cur_value += 1
-    endwhile
-
-    " update progress bar
-    if self.last_value != cur_value || self.needs_redraw || self.cur_value == self.max_value
-      let self.needs_redraw = 1
-      let self.last_value = cur_value
-
-      let t_color  = self.items.title.color
-      let b_fcolor = self.items.bar.fillcolor
-      let b_color  = self.items.bar.color
-      let c_color  = self.items.counter.color
-
-      let stl =  "%#".t_color."#%-( ".self.title." %)".
-	    \"%#".b_color."#".
-	    \(pb_len>0 ?
-	    \	('|%#'.b_fcolor."#%-(".repeat(" ",cur_value)."%)".
-	    \	 '%#'.b_color."#".repeat(" ",pb_len-cur_value)."|"):
-	    \	('')).
-	    \"%=%#".c_color."#%( ".printf("%3.d ",100*self.cur_value/self.max_value)."%% %)"
-      call setwinvar(self.winnr, '&stl', stl)
-    endif
-  endfun
-
-  func! s:progressbar.incr( ... )
-    let self.cur_value += (a:0 ? a:1 : 1)
-    " if we were making a general-purpose progress bar, we'd need to limit to a
-    " lower limit as well, but since we always increment with a positive value
-    " in this script, we only need limit the upper value
-    let self.cur_value = (self.cur_value > self.max_value ? self.max_value : self.cur_value)
-    call self.paint()
-  endfun
-  " }}}
-  if s:settings.dynamic_folds
-    " to process folds we make two passes through each line
-    let s:pgb = s:ProgressBar("Processing folds:", line('$')*2, s:orgwin)
-  endif
-endif
-
-" First do some preprocessing for dynamic folding. Do this for the entire file
-" so we don't accidentally start within a closed fold or something.
-let s:allfolds = []
-
-if s:settings.dynamic_folds
-  let s:lnum = 1
-  let s:end = line('$')
-  " save the fold text and set it to the default so we can find fold levels
-  let s:foldtext_save = &foldtext
-  setlocal foldtext&
-
-  " we will set the foldcolumn in the html to the greater of the maximum fold
-  " level and the current foldcolumn setting
-  let s:foldcolumn = &foldcolumn
-
-  " get all info needed to describe currently closed folds
-  while s:lnum <= s:end
-    if foldclosed(s:lnum) == s:lnum
-      " default fold text has '+-' and then a number of dashes equal to fold
-      " level, so subtract 2 from index of first non-dash after the dashes
-      " in order to get the fold level of the current fold
-      let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
-      if s:level+1 > s:foldcolumn
-	let s:foldcolumn = s:level+1
-      endif
-      " store fold info for later use
-      let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
-      call add(s:allfolds, s:newfold)
-      " open the fold so we can find any contained folds
-      execute s:lnum."foldopen"
-    else
-      if !s:settings.no_progress
-	call s:pgb.incr()
-	if s:pgb.needs_redraw
-	  redrawstatus
-	  let s:pgb.needs_redraw = 0
-	endif
-      endif
-      let s:lnum = s:lnum + 1
-    endif
-  endwhile
-
-  " close all folds to get info for originally open folds
-  silent! %foldclose!
-  let s:lnum = 1
-
-  " the originally open folds will be all folds we encounter that aren't
-  " already in the list of closed folds
-  while s:lnum <= s:end
-    if foldclosed(s:lnum) == s:lnum
-      " default fold text has '+-' and then a number of dashes equal to fold
-      " level, so subtract 2 from index of first non-dash after the dashes
-      " in order to get the fold level of the current fold
-      let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
-      if s:level+1 > s:foldcolumn
-	let s:foldcolumn = s:level+1
-      endif
-      let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
-      " only add the fold if we don't already have it
-      if empty(s:allfolds) || index(s:allfolds, s:newfold) == -1
-	let s:newfold.type = "open-fold"
-	call add(s:allfolds, s:newfold)
-      endif
-      " open the fold so we can find any contained folds
-      execute s:lnum."foldopen"
-    else
-      if !s:settings.no_progress
-	call s:pgb.incr()
-	if s:pgb.needs_redraw
-	  redrawstatus
-	  let s:pgb.needs_redraw = 0
-	endif
-      endif
-      let s:lnum = s:lnum + 1
-    endif
-  endwhile
-
-  " sort the folds so that we only ever need to look at the first item in the
-  " list of folds
-  call sort(s:allfolds, "s:FoldCompare")
-
-  let &l:foldtext = s:foldtext_save
-  unlet s:foldtext_save
-
-  " close all folds again so we can get the fold text as we go
-  silent! %foldclose!
-endif
-
-" Now loop over all lines in the original text to convert to html.
-" Use html_start_line and html_end_line if they are set.
-if exists("g:html_start_line")
-  let s:lnum = html_start_line
-  if s:lnum < 1 || s:lnum > line("$")
-    let s:lnum = 1
-  endif
-else
-  let s:lnum = 1
-endif
-if exists("g:html_end_line")
-  let s:end = html_end_line
-  if s:end < s:lnum || s:end > line("$")
-    let s:end = line("$")
-  endif
-else
-  let s:end = line("$")
-endif
-
-" stack to keep track of all the folds containing the current line
-let s:foldstack = []
-
-if !s:settings.no_progress
-  let s:pgb = s:ProgressBar("Processing lines:", s:end - s:lnum + 1, s:orgwin)
-endif
-
-if s:settings.number_lines
-  let s:margin = strlen(s:end) + 1
-else
-  let s:margin = 0
-endif
-
-if has('folding') && !s:settings.ignore_folding
-  let s:foldfillchar = &fillchars[matchend(&fillchars, 'fold:')]
-  if s:foldfillchar == ''
-    let s:foldfillchar = '-'
-  endif
-endif
-let s:difffillchar = &fillchars[matchend(&fillchars, 'diff:')]
-if s:difffillchar == ''
-  let s:difffillchar = '-'
-endif
-
-let s:foldId = 0
-
-while s:lnum <= s:end
-
-  " If there are filler lines for diff mode, show these above the line.
-  let s:filler = diff_filler(s:lnum)
-  if s:filler > 0
-    let s:n = s:filler
-    while s:n > 0
-      let s:new = repeat(s:difffillchar, 3)
-
-      if s:n > 2 && s:n < s:filler && !s:settings.whole_filler
-	let s:new = s:new . " " . s:filler . " inserted lines "
-	let s:n = 2
-      endif
-
-      if !s:settings.no_pre
-	" HTML line wrapping is off--go ahead and fill to the margin
-	let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new) - s:margin)
-      else
-	let s:new = s:new . repeat(s:difffillchar, 3)
-      endif
-
-      let s:new = s:HtmlFormat(s:new, "DiffDelete", "")
-      if s:settings.number_lines
-	" Indent if line numbering is on; must be after escaping.
-	let s:new = repeat(s:LeadingSpace, s:margin) . s:new
-      endif
-      call add(s:lines, s:new.s:HtmlEndline)
-
-      let s:n = s:n - 1
-    endwhile
-    unlet s:n
-  endif
-  unlet s:filler
-
-  " Start the line with the line number.
-  if s:settings.number_lines
-    let s:numcol = repeat(' ', s:margin - 1 - strlen(s:lnum)) . s:lnum . ' '
-  else
-    let s:numcol = ""
-  endif
-
-  let s:new = ""
-
-  if has('folding') && !s:settings.ignore_folding && foldclosed(s:lnum) > -1 && !s:settings.dynamic_folds
-    "
-    " This is the beginning of a folded block (with no dynamic folding)
-    "
-    let s:new = s:numcol . foldtextresult(s:lnum)
-    if !s:settings.no_pre
-      " HTML line wrapping is off--go ahead and fill to the margin
-      let s:new = s:new . repeat(s:foldfillchar, &columns - strlen(s:new))
-    endif
-
-    let s:new = s:HtmlFormat(s:new, "Folded", "")
-
-    " Skip to the end of the fold
-    let s:new_lnum = foldclosedend(s:lnum)
-
-    if !s:settings.no_progress
-      call s:pgb.incr(s:new_lnum - s:lnum)
-    endif
-
-    let s:lnum = s:new_lnum
-
-  else
-    "
-    " A line that is not folded, or doing dynamic folding.
-    "
-    let s:line = getline(s:lnum)
-    let s:len = strlen(s:line)
-
-    if s:settings.dynamic_folds
-      " First insert a closing for any open folds that end on this line
-      while !empty(s:foldstack) && get(s:foldstack,0).lastline == s:lnum-1
-	let s:new = s:new.""
-	call remove(s:foldstack, 0)
-      endwhile
-
-      " Now insert an opening any new folds that start on this line
-      let s:firstfold = 1
-      while !empty(s:allfolds) && get(s:allfolds,0).firstline == s:lnum
-	let s:foldId = s:foldId + 1
-	let s:new .= ""
-
-
-	" Unless disabled, add a fold column for the opening line of a fold.
-	"
-	" Note that dynamic folds require using css so we just use css to take
-	" care of the leading spaces rather than using   in the case of
-	" html_no_pre to make it easier
-	if !s:settings.no_foldcolumn
-	  " add fold column that can open the new fold
-	  if s:allfolds[0].level > 1 && s:firstfold
-	    let s:new = s:new . ""
-	    let s:new = s:new . repeat('|', s:allfolds[0].level - 1) . ""
-	  endif
-	  let s:new = s:new . "+"
-	  let s:new = s:new . ""
-
-	  " add fold column that can close the new fold
-	  let s:new = s:new . ""
-	  if s:firstfold
-	    let s:new = s:new . repeat('|', s:allfolds[0].level - 1)
-	  endif
-	  let s:new = s:new . "-"
-	  " only add spaces if we aren't opening another fold on the same line
-	  if get(s:allfolds, 1, {'firstline': 0}).firstline != s:lnum
-	    let s:new = s:new . repeat(" ", s:foldcolumn - s:allfolds[0].level)
-	  endif
-	  let s:new = s:new . ""
-	  let s:firstfold = 0
-	endif
-
-	" add fold text, moving the span ending to the next line so collapsing
-	" of folds works correctly
-	let s:new = s:new . substitute(s:HtmlFormat(s:numcol . foldtextresult(s:lnum), "Folded", ""), '', s:HtmlEndline.'\n\0', '')
-	let s:new = s:new . ""
-
-	" open the fold now that we have the fold text to allow retrieval of
-	" fold text for subsequent folds
-	execute s:lnum."foldopen"
-	call insert(s:foldstack, remove(s:allfolds,0))
-	let s:foldstack[0].id = s:foldId
-      endwhile
-
-      " Unless disabled, add a fold column for other lines.
-      "
-      " Note that dynamic folds require using css so we just use css to take
-      " care of the leading spaces rather than using   in the case of
-      " html_no_pre to make it easier
-      if !s:settings.no_foldcolumn
-	if empty(s:foldstack)
-	  " add the empty foldcolumn for unfolded lines if there is a fold
-	  " column at all
-	  if s:foldcolumn > 0
-	    let s:new = s:new . s:HtmlFormat(repeat(' ', s:foldcolumn), "FoldColumn", "")
-	  endif
-	else
-	  " add the fold column for folds not on the opening line
-	  if get(s:foldstack, 0).firstline < s:lnum
-	    let s:new = s:new . ""
-	    let s:new = s:new . repeat('|', s:foldstack[0].level)
-	    let s:new = s:new . repeat(' ', s:foldcolumn - s:foldstack[0].level) . ""
-	  endif
-	endif
-      endif
-    endif
-
-    " Now continue with the unfolded line text
-    if s:settings.number_lines
-      " TODO: why not use the real highlight name here?
-      let s:new = s:new . s:HtmlFormat(s:numcol, "lnr", "")
-    endif
-
-    " Get the diff attribute, if any.
-    let s:diffattr = diff_hlID(s:lnum, 1)
-
-    " initialize conceal info to act like not concealed, just in case
-    let s:concealinfo = [0, '']
-
-    " Loop over each character in the line
-    let s:col = 1
-
-    " most of the time we won't use the diff_id, initialize to zero
-    let s:diff_id = 0
-    let s:diff_id_name = ""
-
-    while s:col <= s:len || (s:col == 1 && s:diffattr)
-      let s:startcol = s:col " The start column for processing text
-      if !s:settings.ignore_conceal && has('conceal')
-	let s:concealinfo = synconcealed(s:lnum, s:col)
-      endif
-      if !s:settings.ignore_conceal && s:concealinfo[0]
-	let s:col = s:col + 1
-	" Speed loop (it's small - that's the trick)
-	" Go along till we find a change in the match sequence number (ending
-	" the specific concealed region) or until there are no more concealed
-	" characters.
-	while s:col <= s:len && s:concealinfo == synconcealed(s:lnum, s:col) | let s:col = s:col + 1 | endwhile
-      elseif s:diffattr
-	let s:diff_id = diff_hlID(s:lnum, s:col)
-	let s:id = synID(s:lnum, s:col, 1)
-	let s:col = s:col + 1
-	" Speed loop (it's small - that's the trick)
-	" Go along till we find a change in hlID
-	while s:col <= s:len && s:id == synID(s:lnum, s:col, 1)
-	      \   && s:diff_id == diff_hlID(s:lnum, s:col) |
-	      \     let s:col = s:col + 1 |
-	      \ endwhile
-	if s:len < &columns && !s:settings.no_pre
-	  " Add spaces at the end of the raw text line to extend the changed
-	  " line to the full width.
-	  let s:line = s:line . repeat(' ', &columns - virtcol([s:lnum, s:len]) - s:margin)
-	  let s:len = &columns
-	endif
-      else
-	let s:id = synID(s:lnum, s:col, 1)
-	let s:col = s:col + 1
-	" Speed loop (it's small - that's the trick)
-	" Go along till we find a change in synID
-	while s:col <= s:len && s:id == synID(s:lnum, s:col, 1) | let s:col = s:col + 1 | endwhile
-      endif
-
-      if s:settings.ignore_conceal || !s:concealinfo[0]
-	" Expand tabs
-	let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol)
-	let s:offset = 0
-	let s:idx = stridx(s:expandedtab, "\t")
-	while s:idx >= 0
-	  if has("multi_byte_encoding")
-	    if s:startcol + s:idx == 1
-	      let s:i = &ts
-	    else
-	      if s:idx == 0
-		let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:idx + s:offset) . 'c')
-	      else
-		let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
-	      endif
-	      let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
-	      let s:i = &ts - (s:vcol % &ts)
-	    endif
-	    let s:offset -= s:i - 1
-	  else
-	    let s:i = &ts - ((s:idx + s:startcol - 1) % &ts)
-	  endif
-	  let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
-	  let s:idx = stridx(s:expandedtab, "\t")
-	endwhile
-
-	" get the highlight group name to use
-	let s:id = synIDtrans(s:id)
-	let s:id_name = synIDattr(s:id, "name", s:whatterm)
-	if s:diff_id
-	  let s:diff_id_name = synIDattr(s:diff_id, "name", s:whatterm)
-	endif
-      else
-	" use Conceal highlighting for concealed text
-	let s:id_name = 'Conceal'
-	let s:expandedtab = s:concealinfo[1]
-      endif
-
-      " Output the text with the same synID, with class set to {s:id_name},
-      " unless it has been concealed completely.
-      if strlen(s:expandedtab) > 0
-	let s:new = s:new . s:HtmlFormat(s:expandedtab,  s:id_name, s:diff_id_name)
-      endif
-    endwhile
-  endif
-
-  call extend(s:lines, split(s:new.s:HtmlEndline, '\n', 1))
-  if !s:settings.no_progress && s:pgb.needs_redraw
-    redrawstatus
-    let s:pgb.needs_redraw = 0
-  endif
-  let s:lnum = s:lnum + 1
-
-  if !s:settings.no_progress
-    call s:pgb.incr()
-  endif
-endwhile
-
-if s:settings.dynamic_folds
-  " finish off any open folds
-  while !empty(s:foldstack)
-    let s:lines[-1].=""
-    call remove(s:foldstack, 0)
-  endwhile
-
-  " add fold column to the style list if not already there
-  let s:id = hlID('FoldColumn')
-  if index(s:idlist, s:id) == -1
-    call insert(s:idlist, s:id)
-  endif
-endif
-
-if s:settings.no_pre
-  if !s:settings.use_css
-    " Close off the font tag that encapsulates the whole 
-    call extend(s:lines, ["", "", ""])
-  else
-    call extend(s:lines, ["", ""])
-  endif
-else
-  call extend(s:lines, ["
", "", ""]) -endif - -exe s:newwin . "wincmd w" -call setline(1, s:lines) -unlet s:lines - -" Now, when we finally know which, we define the colors and styles -if s:settings.use_css - 1;/+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc - syn match htmlCssStyleComment contained "\(\)" - syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc - HtmlHiLink htmlStyleArg htmlString -endif - -if main_syntax == "html" - " synchronizing (does not always work if a comment includes legal - " html tags, but doing it right would mean to always start - " at the first line, which is too slow) - syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]" - syn sync match htmlHighlight groupthere javaScript "= 508 || !exists("did_html_syn_inits") - if version < 508 - let did_html_syn_inits = 1 - endif - HtmlHiLink htmlTag Function - HtmlHiLink htmlEndTag Identifier - HtmlHiLink htmlArg Type - HtmlHiLink htmlTagName htmlStatement - HtmlHiLink htmlSpecialTagName Exception - HtmlHiLink htmlValue String - HtmlHiLink htmlSpecialChar Special - - if !exists("html_no_rendering") - HtmlHiLink htmlH1 Title - HtmlHiLink htmlH2 htmlH1 - HtmlHiLink htmlH3 htmlH2 - HtmlHiLink htmlH4 htmlH3 - HtmlHiLink htmlH5 htmlH4 - HtmlHiLink htmlH6 htmlH5 - HtmlHiLink htmlHead PreProc - HtmlHiLink htmlTitle Title - HtmlHiLink htmlBoldItalicUnderline htmlBoldUnderlineItalic - HtmlHiLink htmlUnderlineBold htmlBoldUnderline - HtmlHiLink htmlUnderlineItalicBold htmlBoldUnderlineItalic - HtmlHiLink htmlUnderlineBoldItalic htmlBoldUnderlineItalic - HtmlHiLink htmlItalicUnderline htmlUnderlineItalic - HtmlHiLink htmlItalicBold htmlBoldItalic - HtmlHiLink htmlItalicBoldUnderline htmlBoldUnderlineItalic - HtmlHiLink htmlItalicUnderlineBold htmlBoldUnderlineItalic - HtmlHiLink htmlLink Underlined - if !exists("html_my_rendering") - hi def htmlBold term=bold cterm=bold gui=bold - hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline - hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic - hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline - hi def htmlUnderline term=underline cterm=underline gui=underline - hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline - hi def htmlItalic term=italic cterm=italic gui=italic - endif - endif - - HtmlHiLink htmlPreStmt PreProc - HtmlHiLink htmlPreError Error - HtmlHiLink htmlPreProc PreProc - HtmlHiLink htmlPreAttr String - HtmlHiLink htmlPreProcAttrName PreProc - HtmlHiLink htmlPreProcAttrError Error - HtmlHiLink htmlSpecial Special - HtmlHiLink htmlSpecialChar Special - HtmlHiLink htmlString String - HtmlHiLink htmlStatement Statement - HtmlHiLink htmlComment Comment - HtmlHiLink htmlCommentPart Comment - HtmlHiLink htmlValue String - HtmlHiLink htmlCommentError htmlError - HtmlHiLink htmlTagError htmlError - HtmlHiLink htmlEvent javaScript - HtmlHiLink htmlError Error - - HtmlHiLink javaScript Special - HtmlHiLink javaScriptExpression javaScript - HtmlHiLink htmlCssStyleComment Comment - HtmlHiLink htmlCssDefinition Special -endif - -delcommand HtmlHiLink - -let b:current_syntax = "html" - -if main_syntax == 'html' - unlet main_syntax -endif - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/idl.vim b/share/vim/vim73/syntax/idl.vim deleted file mode 100644 index 39041fca..00000000 --- a/share/vim/vim73/syntax/idl.vim +++ /dev/null @@ -1,319 +0,0 @@ -" Vim syntax file -" Language: IDL (Interface Description Language) -" Created By: Jody Goldberg -" Maintainer: Michael Geddes -" Last Change: Thu Apr 13 2006 - - -" This is an experiment. IDL's structure is simple enough to permit a full -" grammar based approach to rather than using a few heuristics. The result -" is large and somewhat repetative but seems to work. - -" There are some Microsoft extensions to idl files that are here. Some of -" them are disabled by defining idl_no_ms_extensions. -" -" The more complex of the extensions are disabled by defining idl_no_extensions. -" -" History: -" 2.0: Michael's new version -" 2.1: Support for Vim 7 spell (Anduin Withers) -" - -if exists("b:current_syntax") - finish -endif - -if exists("idlsyntax_showerror") - syn match idlError +\S+ skipwhite skipempty nextgroup=idlError -endif - -syn region idlCppQuote start='\]*>" -syn match idlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString -syn region idlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=idlComment,idlCommentError -syn region idlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral,idlString - -" Constants -syn keyword idlConst const skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt - -" Attribute -syn keyword idlROAttr readonly skipempty skipwhite nextgroup=idlAttr -syn keyword idlAttr attribute skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType - -" Types -syn region idlD4 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral -syn keyword idlSeqType contained sequence skipempty skipwhite nextgroup=idlD4 -syn keyword idlBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlSimpDecl -syn keyword idlBaseTypeInt contained short long skipempty skipwhite nextgroup=idlSimpDecl -syn keyword idlBaseType contained unsigned skipempty skipwhite nextgroup=idlBaseTypeInt -syn region idlD1 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlString,idlLiteral -syn keyword idlBaseType contained string skipempty skipwhite nextgroup=idlD1,idlSimpDecl -syn match idlBaseType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlSimpDecl - -" Modules -syn region idlModuleContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule -syn match idlModuleName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlModuleContent,idlError,idlSemiColon -syn keyword idlModule module skipempty skipwhite nextgroup=idlModuleName - -" Interfaces -syn cluster idlCommentable contains=idlComment -syn cluster idlContentCluster contains=idlUnion,idlStruct,idlEnum,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlInterfaceSections - -syn region idlInterfaceContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable -syn match idlInheritFrom2 contained "," skipempty skipwhite nextgroup=idlInheritFrom -syn match idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent -syn match idlInherit contained ":" skipempty skipwhite nextgroup=idlInheritFrom -syn match idlInterfaceName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlError,idlSemiColon -syn keyword idlInterface interface dispinterface skipempty skipwhite nextgroup=idlInterfaceName -syn keyword idlInterfaceSections contained properties methods skipempty skipwhite nextgroup=idlSectionColon,idlError -syn match idlSectionColon contained ":" - - -syn match idlLibraryName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlLibraryContent,idlError,idlSemiColon -syn keyword idlLibrary library skipempty skipwhite nextgroup=idlLibraryName -syn region idlLibraryContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlCommentable,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlImportlib,idlCoclass,idlTypedef,idlInterface - -syn keyword idlImportlib contained importlib skipempty skipwhite nextgroup=idlStringArg -syn region idlStringArg contained start="(" end=")" contains=idlString nextgroup=idlError,idlSemiColon,idlErrorBrace,idlErrorSquareBracket - -syn keyword idlCoclass coclass contained skipempty skipwhite nextgroup=idlCoclassName -syn match idlCoclassName "[a-zA-Z0-9_]\+" contained skipempty skipwhite nextgroup=idlCoclassDefinition,idlError,idlSemiColon - -syn region idlCoclassDefinition contained start="{" end="}" contains=idlCoclassAttributes,idlInterface,idlErrorBracket,idlErrorSquareBracket skipempty skipwhite nextgroup=idlError,idlSemiColon -syn region idlCoclassAttributes contained start=+\[+ end=+]+ skipempty skipwhite nextgroup=idlInterface contains=idlErrorBracket,idlErrorBrace,idlCoclassAttribute -syn keyword idlCoclassAttribute contained default source -"syn keyword idlInterface interface skipempty skipwhite nextgroup=idlInterfaceStubName - -syn match idlImportString +"\f\+"+ skipempty skipwhite nextgroup=idlError,idlSemiColon -syn keyword idlImport import skipempty skipwhite nextgroup=idlImportString - -syn region idlAttributes start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace,idlComment -syn keyword idlAttribute contained propput propget propputref id helpstring object uuid pointer_default -if !exists('idl_no_ms_extensions') -syn keyword idlAttribute contained nonextensible dual version aggregatable restricted hidden noncreatable oleautomation -endif -syn region idlAttributeParam contained start="(" end=")" contains=idlString,idlUuid,idlLiteral,idlErrorBrace,idlErrorSquareBracket -" skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral -syn match idlErrorBrace contained "}" -syn match idlErrorBracket contained ")" -syn match idlErrorSquareBracket contained "\]" - -syn match idlUuid contained +[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}+ - -" Raises -syn keyword idlRaises contained raises skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon - -" Context -syn keyword idlContext contained context skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon - -" Operation -syn match idlParmList contained "," skipempty skipwhite nextgroup=idlOpParms -syn region idlArraySize contained start="\[" end="\]" skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral -syn match idlParmName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlParmList,idlArraySize -syn keyword idlParmInt contained short long skipempty skipwhite nextgroup=idlParmName -syn keyword idlParmType contained unsigned skipempty skipwhite nextgroup=idlParmInt -syn region idlD3 contained start="<" end=">" skipempty skipwhite nextgroup=idlParmName contains=idlString,idlLiteral -syn keyword idlParmType contained string skipempty skipwhite nextgroup=idlD3,idlParmName -syn keyword idlParmType contained void float double char boolean octet any skipempty skipwhite nextgroup=idlParmName -syn match idlParmType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName -syn keyword idlOpParms contained in out inout skipempty skipwhite nextgroup=idlParmType - -if !exists('idl_no_ms_extensions') -syn keyword idlOpParms contained retval optional skipempty skipwhite nextgroup=idlParmType - syn match idlOpParms contained +\<\(iid_is\|defaultvalue\)\s*([^)]*)+ skipempty skipwhite nextgroup=idlParamType - - syn keyword idlVariantType contained BSTR VARIANT VARIANT_BOOL long short unsigned double CURRENCY DATE - syn region idlSafeArray contained matchgroup=idlVariantType start=+SAFEARRAY(\s*+ end=+)+ contains=idlVariantType -endif - -syn region idlOpContents contained start="(" end=")" skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon contains=idlOpParms,idlSafeArray,idlVariantType,@idlCommentable -syn match idlOpName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlOpContents -syn keyword idlOpInt contained short long skipempty skipwhite nextgroup=idlOpName -syn region idlD2 contained start="<" end=">" skipempty skipwhite nextgroup=idlOpName contains=idlString,idlLiteral -syn keyword idlOp contained unsigned skipempty skipwhite nextgroup=idlOpInt -syn keyword idlOp contained string skipempty skipwhite nextgroup=idlD2,idlOpName -syn keyword idlOp contained void float double char boolean octet any skipempty skipwhite nextgroup=idlOpName -syn match idlOp contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlOpName -syn keyword idlOp contained void skipempty skipwhite nextgroup=idlOpName -syn keyword idlOneWayOp contained oneway skipempty skipwhite nextgroup=idOp - -" Enum -syn region idlEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlId,idlAttributes,@idlCommentable -syn match idlEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlEnumContents -syn keyword idlEnum enum skipempty skipwhite nextgroup=idlEnumName,idlEnumContents - -" Typedef -syn keyword idlTypedef typedef skipempty skipwhite nextgroup=idlTypedefOtherTypeQualifier,idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError - -if !exists('idl_no_extensions') - syn keyword idlTypedefOtherTypeQualifier contained struct enum interface nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError skipwhite - - syn region idlDefAttributes contained start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace skipempty skipwhite nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlError - - syn keyword idlDefBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlTypedefDecl,idlError - syn keyword idlDefBaseTypeInt contained short long skipempty skipwhite nextgroup=idlTypedefDecl,idlError - syn match idlDefOtherType contained +\<\k\+\>+ skipempty nextgroup=idlTypedefDecl,idlError - " syn keyword idlDefSeqType contained sequence skipempty skipwhite nextgroup=idlD4 - - " Enum typedef - syn keyword idlDefEnum contained enum skipempty skipwhite nextgroup=idlDefEnumName,idlDefEnumContents - syn match idlDefEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlDefEnumContents,idlTypedefDecl - syn region idlDefEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlTypedefDecl contains=idlId,idlAttributes - - syn match idlTypedefDecl contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlError,idlSemiColon -endif - -" Struct -syn region idlStructContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlBaseType,idlBaseTypeInt,idlSeqType,@idlCommentable,idlEnum,idlUnion -syn match idlStructName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlStructContent -syn keyword idlStruct struct skipempty skipwhite nextgroup=idlStructName - -" Exception -syn keyword idlException exception skipempty skipwhite nextgroup=idlStructName - -" Union -syn match idlColon contained ":" skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt -syn region idlCaseLabel contained start="" skip="::" end=":"me=e-1 skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString -syn keyword idlCase contained case skipempty skipwhite nextgroup=idlCaseLabel -syn keyword idlCase contained default skipempty skipwhite nextgroup=idlColon -syn region idlUnionContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlCase -syn region idlSwitchType contained start="(" end=")" skipempty skipwhite nextgroup=idlUnionContent -syn keyword idlUnionSwitch contained switch skipempty skipwhite nextgroup=idlSwitchType -syn match idlUnionName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlUnionSwitch -syn keyword idlUnion union skipempty skipwhite nextgroup=idlUnionName - -if !exists('idl_no_extensions') - syn sync match idlInterfaceSync grouphere idlInterfaceContent "\<\(disp\)\=interface\>\s\+\k\+\s*:\s*\k\+\_s*{" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable - syn sync maxlines=1000 minlines=100 -else - syn sync lines=200 -endif -" syn sync fromstart - -if !exists("did_idl_syntax_inits") - let did_idl_syntax_inits = 1 - " The default methods for highlighting. Can be overridden later - command -nargs=+ HiLink hi def link - - HiLink idlInclude Include - HiLink idlPreProc PreProc - HiLink idlPreCondit PreCondit - HiLink idlDefine Macro - HiLink idlIncluded String - HiLink idlString String - HiLink idlComment Comment - HiLink idlTodo Todo - HiLink idlLiteral Number - HiLink idlUuid Number - HiLink idlType Type - HiLink idlVariantType idlType - - HiLink idlModule Keyword - HiLink idlInterface Keyword - HiLink idlEnum Keyword - HiLink idlStruct Keyword - HiLink idlUnion Keyword - HiLink idlTypedef Keyword - HiLink idlException Keyword - HiLink idlTypedefOtherTypeQualifier keyword - - HiLink idlModuleName Typedef - HiLink idlInterfaceName Typedef - HiLink idlEnumName Typedef - HiLink idlStructName Typedef - HiLink idlUnionName Typedef - - HiLink idlBaseTypeInt idlType - HiLink idlBaseType idlType - HiLink idlSeqType idlType - HiLink idlD1 Paren - HiLink idlD2 Paren - HiLink idlD3 Paren - HiLink idlD4 Paren - "HiLink idlArraySize Paren - "HiLink idlArraySize1 Paren - HiLink idlModuleContent Paren - HiLink idlUnionContent Paren - HiLink idlStructContent Paren - HiLink idlEnumContents Paren - HiLink idlInterfaceContent Paren - - HiLink idlSimpDecl Identifier - HiLink idlROAttr StorageClass - HiLink idlAttr Keyword - HiLink idlConst StorageClass - - HiLink idlOneWayOp StorageClass - HiLink idlOp idlType - HiLink idlParmType idlType - HiLink idlOpName Function - HiLink idlOpParms SpecialComment - HiLink idlParmName Identifier - HiLink idlInheritFrom Identifier - HiLink idlAttribute SpecialComment - - HiLink idlId Constant - "HiLink idlCase Keyword - HiLink idlCaseLabel Constant - - HiLink idlErrorBracket Error - HiLink idlErrorBrace Error - HiLink idlErrorSquareBracket Error - - HiLink idlImport Keyword - HiLink idlImportString idlString - HiLink idlCoclassAttribute StorageClass - HiLink idlLibrary Keyword - HiLink idlImportlib Keyword - HiLink idlCoclass Keyword - HiLink idlLibraryName Typedef - HiLink idlCoclassName Typedef - " hi idlLibraryContent guifg=red - HiLink idlTypedefDecl Typedef - HiLink idlDefEnum Keyword - HiLink idlDefv1Enum Keyword - HiLink idlDefEnumName Typedef - HiLink idlDefEnumContents Paren - HiLink idlDefBaseTypeInt idlType - HiLink idlDefBaseType idlType - HiLink idlDefSeqType idlType - HiLink idlInterfaceSections Label - - if exists("idlsyntax_showerror") - if exists("idlsyntax_showerror_soft") - hi default idlError guibg=#d0ffd0 - else - HiLink idlError Error - endif - endif - delcommand HiLink -endif - -let b:current_syntax = "idl" - -" vim: sw=2 et diff --git a/share/vim/vim73/syntax/idlang.vim b/share/vim/vim73/syntax/idlang.vim deleted file mode 100644 index 9d567e5f..00000000 --- a/share/vim/vim73/syntax/idlang.vim +++ /dev/null @@ -1,253 +0,0 @@ -" Interactive Data Language syntax file (IDL, too [:-)] -" Maintainer: Aleksandar Jelenak -" Last change: 2003 Apr 25 -" Created by: Hermann Rochholz - -" Remove any old syntax stuff hanging around -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syntax case ignore - -syn match idlangStatement "^\s*pro\s" -syn match idlangStatement "^\s*function\s" -syn keyword idlangStatement return continue mod do break -syn keyword idlangStatement compile_opt forward_function goto -syn keyword idlangStatement begin common end of -syn keyword idlangStatement inherits on_ioerror begin - -syn keyword idlangConditional if else then for while case switch -syn keyword idlangConditional endcase endelse endfor endswitch -syn keyword idlangConditional endif endrep endwhile repeat until - -syn match idlangOperator "\ and\ " -syn match idlangOperator "\ eq\ " -syn match idlangOperator "\ ge\ " -syn match idlangOperator "\ gt\ " -syn match idlangOperator "\ le\ " -syn match idlangOperator "\ lt\ " -syn match idlangOperator "\ ne\ " -syn match idlangOperator /\(\ \|(\)not\ /hs=e-3 -syn match idlangOperator "\ or\ " -syn match idlangOperator "\ xor\ " - -syn keyword idlangStop stop pause - -syn match idlangStrucvar "\h\w*\(\.\h\w*\)\+" -syn match idlangStrucvar "[),\]]\(\.\h\w*\)\+"hs=s+1 - -syn match idlangSystem "\!\a\w*\(\.\w*\)\=" - -syn match idlangKeyword "\([(,]\s*\(\$\_s*\)\=\)\@<=/\h\w*" -syn match idlangKeyword "\([(,]\s*\(\$\_s*\)\=\)\@<=\h\w*\s*=" - -syn keyword idlangTodo contained TODO - -syn region idlangString start=+"+ end=+"+ -syn region idlangString start=+'+ end=+'+ - -syn match idlangPreCondit "^\s*@\w*\(\.\a\{3}\)\=" - -syn match idlangRealNumber "\<\d\+\(\.\=\d*e[+-]\=\d\+\|\.\d*d\|\.\d*\|d\)" -syn match idlangRealNumber "\.\d\+\(d\|e[+-]\=\d\+\)\=" - -syn match idlangNumber "\<\.\@!\d\+\.\@!\(b\|u\|us\|s\|l\|ul\|ll\|ull\)\=\>" - -syn match idlangComment "[\;].*$" contains=idlangTodo - -syn match idlangContinueLine "\$\s*\($\|;\)"he=s+1 contains=idlangComment -syn match idlangContinueLine "&\s*\(\h\|;\)"he=s+1 contains=ALL - -syn match idlangDblCommaError "\,\s*\," - -" List of standard routines as of IDL version 5.4. -syn match idlangRoutine "EOS_\a*" -syn match idlangRoutine "HDF_\a*" -syn match idlangRoutine "CDF_\a*" -syn match idlangRoutine "NCDF_\a*" -syn match idlangRoutine "QUERY_\a*" -syn match idlangRoutine "\= 508 || !exists("did_idlang_syn_inits") - if version < 508 - let did_idlang_syn_inits = 1 - command -nargs=+ HiLink hi link -else - command -nargs=+ HiLink hi def link -endif - - HiLink idlangConditional Conditional - HiLink idlangRoutine Type - HiLink idlangStatement Statement - HiLink idlangContinueLine Todo - HiLink idlangRealNumber Float - HiLink idlangNumber Number - HiLink idlangString String - HiLink idlangOperator Operator - HiLink idlangComment Comment - HiLink idlangTodo Todo - HiLink idlangPreCondit Identifier - HiLink idlangDblCommaError Error - HiLink idlangStop Error - HiLink idlangStrucvar PreProc - HiLink idlangSystem Identifier - HiLink idlangKeyword Special - - delcommand HiLink -endif - -let b:current_syntax = "idlang" -" vim: ts=18 diff --git a/share/vim/vim73/syntax/ist.vim b/share/vim/vim73/syntax/ist.vim deleted file mode 100644 index fd0005e5..00000000 --- a/share/vim/vim73/syntax/ist.vim +++ /dev/null @@ -1,70 +0,0 @@ -" Vim syntax file -" Language: Makeindex style file, *.ist -" Maintainer: Peter Meszaros -" Last Change: May 4, 2001 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if version >= 600 - setlocal iskeyword=$,@,48-57,_ -else - set iskeyword=$,@,48-57,_ -endif - -syn case ignore -syn keyword IstInpSpec actual arg_close arg_open encap escape -syn keyword IstInpSpec keyword level quote range_close range_open -syn keyword IstInpSpec page_compositor - -syn keyword IstOutSpec preamble postamble setpage_prefix setpage_suffix group_skip -syn keyword IstOutSpec headings_flag heading_prefix heading_suffix -syn keyword IstOutSpec lethead_flag lethead_prefix lethead_suffix -syn keyword IstOutSpec symhead_positive symhead_negative numhead_positive numhead_negative -syn keyword IstOutSpec item_0 item_1 item_2 item_01 -syn keyword IstOutSpec item_x1 item_12 item_x2 -syn keyword IstOutSpec delim_0 delim_1 delim_2 -syn keyword IstOutSpec delim_n delim_r delim_t -syn keyword IstOutSpec encap_prefix encap_infix encap_suffix -syn keyword IstOutSpec line_max indent_space indent_length -syn keyword IstOutSpec suffix_2p suffix_3p suffix_mp - -syn region IstString matchgroup=IstDoubleQuote start=+"+ skip=+\\"+ end=+"+ contains=IstSpecial -syn match IstCharacter "'.'" -syn match IstNumber "\d\+" -syn match IstComment "^[\t ]*%.*$" contains=IstTodo -syn match IstSpecial "\\\\\|{\|}\|#\|\\n" contained -syn match IstTodo "DEBUG\|TODO" contained - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_dummy_syn_inits") - if version < 508 - let did_dummy_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink IstInpSpec Type - HiLink IstOutSpec Identifier - HiLink IstString String - HiLink IstNumber Number - HiLink IstComment Comment - HiLink IstTodo Todo - HiLink IstSpecial Special - HiLink IstDoubleQuote Label - HiLink IstCharacter Label - - delcommand HiLink -endif - -let b:current_syntax = "ist" - -" vim: ts=8 sw=2 diff --git a/share/vim/vim73/syntax/jam.vim b/share/vim/vim73/syntax/jam.vim deleted file mode 100644 index 9fe66788..00000000 --- a/share/vim/vim73/syntax/jam.vim +++ /dev/null @@ -1,252 +0,0 @@ -" Vim syntax file -" Language: JAM -" Maintainer: Ralf Lemke (ralflemk@t-online.de) -" Last change: 09-10-2000 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if version >= 600 - setlocal iskeyword=@,48-57,_,- -else - set iskeyword=@,48-57,_,- -endif - -" A bunch of useful jam keywords -syn keyword jamStatement break call dbms flush global include msg parms proc public receive return send unload vars -syn keyword jamConditional if else -syn keyword jamRepeat for while next step - -syn keyword jamTodo contained TODO FIXME XXX -syn keyword jamDBState1 alias binary catquery close close_all_connections column_names connection continue continue_bottom continue_down continue_top continue_up -syn keyword jamDBState2 cursor declare engine execute format occur onentry onerror onexit sql start store unique with -syn keyword jamSQLState1 all alter and any avg between by count create current data database delete distinct drop exists fetch from grant group -syn keyword jamSQLState2 having index insert into like load max min of open order revoke rollback runstats select set show stop sum synonym table to union update values view where bundle - -syn keyword jamLibFunc1 dm_bin_create_occur dm_bin_delete_occur dm_bin_get_dlength dm_bin_get_occur dm_bin_length dm_bin_max_occur dm_bin_set_dlength dm_convert_empty dm_cursor_connection dm_cursor_consistent dm_cursor_engine dm_dbi_init dm_dbms dm_dbms_noexp dm_disable_styles dm_enable_styles dm_exec_sql dm_expand dm_free_sql_info dm_gen_change_execute_using dm_gen_change_select_from dm_gen_change_select_group_by dm_gen_change_select_having dm_gen_change_select_list dm_gen_change_select_order_by dm_gen_change_select_suffix dm_gen_change_select_where dm_gen_get_tv_alias dm_gen_sql_info - -syn keyword jamLibFunc2 dm_get_db_conn_handle dm_get_db_cursor_handle dm_get_driver_option dm_getdbitext dm_init dm_is_connection dm_is_cursor dm_is_engine dm_odb_preserves_cursor dm_reset dm_set_driver_option dm_set_max_fetches dm_set_max_rows_per_fetch dm_set_tm_clear_fast dm_val_relative sm_adjust_area sm_allget sm_amt_format sm_e_amt_format sm_i_amt_format sm_n_amt_format sm_o_amt_format sm_append_bundle_data sm_append_bundle_done sm_append_bundle_item sm_d_at_cur sm_l_at_cur sm_r_at_cur sm_mw_attach_drawing_func sm_mwn_attach_drawing_func sm_mwe_attach_drawing_func sm_xm_attach_drawing_func sm_xmn_attach_drawing_func sm_xme_attach_drawing_func sm_backtab sm_bel sm_bi_comparesm_bi_copy sm_bi_initialize sm_bkrect sm_c_off sm_c_on sm_c_vis sm_calc sm_cancel sm_ckdigit sm_cl_all_mdts sm_cl_unprot sm_clear_array sm_n_clear_array sm_1clear_array sm_n_1clear_array sm_close_window sm_com_load_picture sm_com_QueryInterface sm_com_result sm_com_result_msg sm_com_set_handler sm_copyarray sm_n_copyarray sm_create_bundle - -syn keyword jamLibFunc3 sm_d_msg_line sm_dblval sm_e_dblval sm_i_dblval sm_n_dblval sm_o_dblval sm_dd_able sm_dde_client_connect_cold sm_dde_client_connect_hot sm_dde_client_connect_warm sm_dde_client_disconnect sm_dde_client_off sm_dde_client_on sm_dde_client_paste_link_cold sm_dde_client_paste_link_hot sm_dde_client_paste_link_warm sm_dde_client_request sm_dde_execute sm_dde_install_notify sm_dde_poke sm_dde_server_off sm_dde_server_on sm_delay_cursor sm_deselect sm_dicname sm_disp_off sm_dlength sm_e_dlength sm_i_dlength sm_n_dlength sm_o_dlength sm_do_uinstalls sm_i_doccur sm_o_doccur sm_drawingarea sm_xm_drawingarea sm_dtofield sm_e_dtofield sm_i_dtofield sm_n_dtofield sm_o_dtofield sm_femsg sm_ferr_reset sm_fi_path sm_file_copy sm_file_exists sm_file_move sm_file_remove sm_fi_open sm_fi_path sm_filebox sm_filetypes sm_fio_a2f sm_fio_close sm_fio_editor sm_fio_error sm_fio_error_set sm_fio_f2a sm_fio_getc sm_fio_gets sm_fio_handle sm_fio_open sm_fio_putc sm_fio_puts sm_fio_rewind sm_flush sm_d_form sm_l_form - -syn keyword jamLibFunc4 sm_r_form sm_formlist sm_fptr sm_e_fptr sm_i_fptr sm_n_fptr sm_o_fptr sm_fqui_msg sm_fquiet_err sm_free_bundle sm_ftog sm_e_ftog sm_i_ftog sm_n_ftog sm_o_ftog sm_fval sm_e_fval sm_i_fval sm_n_fval sm_o_fval sm_i_get_bi_data sm_o_get_bi_data sm_get_bundle_data sm_get_bundle_item_count sm_get_bundle_occur_count sm_get_next_bundle_name sm_i_get_tv_bi_data sm_o_get_tv_bi_data sm_getfield sm_e_getfield sm_i_getfield sm_n_getfield sm_o_getfield sm_getkey sm_gofield sm_e_gofield sm_i_gofield sm_n_gofield sm_o_gofield sm_gtof sm_gval sm_i_gtof sm_n_gval sm_hlp_by_name sm_home sm_inimsg sm_initcrt sm_jinitcrt sm_jxinitcrt sm_input sm_inquire sm_install sm_intval sm_e_intval sm_i_intval sm_n_intval sm_o_intval sm_i_ioccur sm_o_ioccur sm_is_bundle sm_is_no sm_e_is_no sm_i_is_no sm_n_is_no sm_o_is_no sm_is_yes sm_e_is_yes sm_i_is_yes sm_n_is_yes sm_o_is_yes sm_isabort sm_iset sm_issv sm_itofield sm_e_itofield sm_i_itofield sm_n_itofield sm_o_itofield sm_jclose sm_jfilebox sm_jform sm_djplcall sm_jplcall - -syn keyword jamLibFunc5 sm_sjplcall sm_jplpublic sm_jplunload sm_jtop sm_jwindow sm_key_integer sm_keyfilter sm_keyhit sm_keyinit sm_n_keyinit sm_keylabel sm_keyoption sm_l_close sm_l_open sm_l_open_syslib sm_last sm_launch sm_h_ldb_fld_get sm_n_ldb_fld_get sm_h_ldb_n_fld_get sm_n_ldb_n_fld_get sm_h_ldb_fld_store sm_n_ldb_fld_store sm_h_ldb_n_fld_store sm_n_ldb_n_fld_store sm_ldb_get_active sm_ldb_get_inactive sm_ldb_get_next_active sm_ldb_get_next_inactive sm_ldb_getfield sm_i_ldb_getfield sm_n_ldb_getfield sm_o_ldb_getfield sm_ldb_h_getfield sm_i_ldb_h_getfield sm_n_ldb_h_getfield sm_o_ldb_h_getfield sm_ldb_handle sm_ldb_init sm_ldb_is_loaded sm_ldb_load sm_ldb_name sm_ldb_next_handle sm_ldb_pop sm_ldb_push sm_ldb_putfield sm_i_ldb_putfield sm_n_ldb_putfield sm_o_ldb_putfield sm_ldb_h_putfield sm_i_ldb_h_putfield sm_n_ldb_h_putfield sm_o_ldb_h_putfield sm_ldb_state_get sm_ldb_h_state_get sm_ldb_state_set sm_ldb_h_state_set sm_ldb_unload sm_ldb_h_unload sm_leave sm_list_objects_count sm_list_objects_end sm_list_objects_next - -syn keyword jamLibFunc6 sm_list_objects_start sm_lngval sm_e_lngval sm_i_lngval sm_n_lngval sm_o_lngval sm_load_screen sm_log sm_lstore sm_ltofield sm_e_ltofield sm_i_ltofield sm_n_ltofield sm_o_ltofield sm_m_flush sm_menu_bar_error sm_menu_change sm_menu_create sm_menu_delete sm_menu_get_int sm_menu_get_str sm_menu_install sm_menu_remove sm_message_box sm_mncrinit6 sm_mnitem_change sm_n_mnitem_change sm_mnitem_create sm_n_mnitem_create sm_mnitem_delete sm_n_mnitem_delete sm_mnitem_get_int sm_n_mnitem_get_int sm_mnitem_get_str sm_n_mnitem_get_str sm_mnscript_load sm_mnscript_unload sm_ms_inquire sm_msg sm_msg_del sm_msg_get sm_msg_read sm_d_msg_read sm_n_msg_read sm_msgfind sm_mts_CreateInstance sm_mts_CreateProperty sm_mts_CreatePropertyGroup sm_mts_DisableCommit sm_mts_EnableCommit sm_mts_GetPropertyValue sm_mts_IsCallerInRole sm_mts_IsInTransaction sm_mts_IsSecurityEnabled sm_mts_PutPropertyValue sm_mts_SetAbort sm_mts_SetComplete sm_mus_time sm_mw_get_client_wnd sm_mw_get_cmd_show sm_mw_get_frame_wnd sm_mw_get_instance - -syn keyword jamLibFunc7 sm_mw_get_prev_instance sm_mw_PrintScreen sm_next_sync sm_nl sm_null sm_e_null sm_i_null sm_n_null sm_o_null sm_obj_call sm_obj_copy sm_obj_copy_id sm_obj_create sm_obj_delete sm_obj_delete_id sm_obj_get_property sm_obj_onerror sm_obj_set_property sm_obj_sort sm_obj_sort_auto sm_occur_no sm_off_gofield sm_e_off_gofield sm_i_off_gofield sm_n_off_gofield sm_o_off_gofield sm_option sm_optmnu_id sm_pinquire sm_popup_at_cur sm_prop_error sm_prop_get_int sm_prop_get_str sm_prop_get_dbl sm_prop_get_x_int sm_prop_get_x_str sm_prop_get_x_dbl sm_prop_get_m_int sm_prop_get_m_str sm_prop_get_m_dbl sm_prop_id sm_prop_name_to_id sm_prop_set_int sm_prop_set_str sm_prop_set_dbl sm_prop_set_x_int sm_prop_set_x_str sm_prop_set_x_dbl sm_prop_set_m_int sm_prop_set_m_str sm_prop_set_m_dbl sm_pset sm_putfield sm_e_putfield sm_i_putfield sm_n_putfield sm_o_putfield sm_raise_exception sm_receive sm_receive_args sm_rescreen sm_resetcrt sm_jresetcrt sm_jxresetcrt sm_resize sm_restore_data sm_return sm_return_args sm_rmformlist sm_rs_data - -syn keyword jamLibFunc8 sm_rw_error_message sm_rw_play_metafile sm_rw_runreport sm_s_val sm_save_data sm_sdtime sm_select sm_send sm_set_help sm_setbkstat sm_setsibling sm_setstatus sm_sh_off sm_shell sm_shrink_to_fit sm_slib_error sm_slib_install sm_slib_load sm_soption sm_strip_amt_ptr sm_e_strip_amt_ptr sm_i_strip_amt_ptr sm_n_strip_amt_ptr sm_o_strip_amt_ptr sm_sv_data sm_sv_free sm_svscreen sm_tab sm_tm_clear sm_tm_clear_model_events sm_tm_command sm_tm_command_emsgset sm_tm_command_errset sm_tm_continuation_validity sm_tm_dbi_checker sm_tm_error sm_tm_errorlog sm_tm_event sm_tm_event_name sm_tm_failure_message sm_tm_handling sm_tm_inquire sm_tm_iset sm_tm_msg_count_error sm_tm_msg_emsg sm_tm_msg_error sm_tm_old_bi_context sm_tm_pcopy sm_tm_pinquire sm_tm_pop_model_event sm_tm_pset sm_tm_push_model_event sm_tmpnam sm_tp_exec sm_tp_free_arg_buf sm_tp_gen_insert sm_tp_gen_sel_return sm_tp_gen_sel_where sm_tp_gen_val_link sm_tp_gen_val_return sm_tp_get_svc_alias sm_tp_get_tux_callid sm_translatecoords sm_tst_all_mdts - -syn keyword jamLibFunc9 sm_udtime sm_ungetkey sm_unload_screen sm_unsvscreen sm_upd_select sm_validate sm_n_validate sm_vinit sm_n_vinit sm_wcount sm_wdeselect sm_web_get_cookie sm_web_invoke_url sm_web_log_error sm_web_save_global sm_web_set_cookie sm_web_unsave_all_globals sm_web_unsave_global sm_mw_widget sm_mwe_widget sm_mwn_widget sm_xm_widget sm_xme_widget sm_xmn_widget sm_win_shrink sm_d_window sm_d_at_cur sm_l_window sm_l_at_cur sm_r_window sm_r_at_cur sm_winsize sm_wrotate sm_wselect sm_n_wselect sm_ww_length sm_n_ww_length sm_ww_read sm_n_ww_read sm_ww_write sm_n_ww_write sm_xlate_table sm_xm_get_base_window sm_xm_get_display - -syn keyword jamVariable1 SM_SCCS_ID SM_ENTERTERM SM_MALLOC SM_CANCEL SM_BADTERM SM_FNUM SM_DZERO SM_EXPONENT SM_INVDATE SM_MATHERR SM_FRMDATA SM_NOFORM SM_FRMERR SM_BADKEY SM_DUPKEY SM_ERROR SM_SP1 SM_SP2 SM_RENTRY SM_MUSTFILL SM_AFOVRFLW SM_TOO_FEW_DIGITS SM_CKDIGIT SM_HITANY SM_NOHELP SM_MAXHELP SM_OUTRANGE SM_ENTERTERM1 SM_SYSDATE SM_DATFRM SM_DATCLR SM_DATINV SM_KSDATA SM_KSERR SM_KSNONE SM_KSMORE SM_DAYA1 SM_DAYA2 SM_DAYA3 SM_DAYA4 SM_DAYA5 SM_DAYA6 SM_DAYA7 SM_DAYL1 SM_DAYL2 SM_DAYL3 SM_DAYL4 SM_DAYL5 SM_DAYL6 SM_DAYL7 SM_MNSCR_LOAD SM_MENU_INSTALL SM_INSTDEFSCRL SM_INSTSCROLL SM_MOREDATA SM_READY SM_WAIT SM_YES SM_NO SM_NOTEMP SM_FRMHELP SM_FILVER SM_ONLYONE SM_WMSMOVE SM_WMSSIZE SM_WMSOFF SM_LPRINT SM_FMODE SM_NOFILE SM_NOSECTN SM_FFORMAT SM_FREAD SM_RX1 SM_RX2 SM_RX3 SM_TABLOOK SM_MISKET SM_ILLKET SM_ILLBRA SM_MISDBLKET SM_ILLDBLKET SM_ILLDBLBRA SM_ILL_RIGHT SM_ILLELSE SM_NUMBER SM_EOT SM_BREAK SM_NOARGS SM_BIGVAR SM_EXCESS SM_EOL SM_FILEIO SM_FOR SM_RCURLY SM_NONAME SM_1JPL_ERR SM_2JPL_ERR SM_3JPL_ERR - -syn keyword jamVariable2 SM_JPLATCH SM_FORMAT SM_DESTINATION SM_ORAND SM_ORATOR SM_ILL_LEFT SM_MISSPARENS SM_ILLCLOSE_COMM SM_FUNCTION SM_EQUALS SM_MISMATCH SM_QUOTE SM_SYNTAX SM_NEXT SM_VERB_UNKNOWN SM_JPLFORM SM_NOT_LOADED SM_GA_FLG SM_GA_CHAR SM_GA_ARG SM_GA_DIG SM_NOFUNC SM_BADPROTO SM_JPLPUBLIC SM_NOCOMPILE SM_NULLEDIT SM_RP_NULL SM_DBI_NOT_INST SM_NOTJY SM_MAXLIB SM_FL_FLLIB SM_TPI_NOT_INST SM_RW_NOT_INST SM_MONA1 SM_MONA2 SM_MONA3 SM_MONA4 SM_MONA5 SM_MONA6 SM_MONA7 SM_MONA8 SM_MONA9 SM_MONA10 SM_MONA11 SM_MONA12 SM_MONL1 SM_MONL2 SM_MONL3 SM_MONL4 SM_MONL5 SM_MONL6 SM_MONL7 SM_MONL8 SM_MONL9 SM_MONL10 SM_MONL11 SM_MONL12 SM_AM SM_PM SM_0DEF_DTIME SM_1DEF_DTIME SM_2DEF_DTIME SM_3DEF_DTIME SM_4DEF_DTIME SM_5DEF_DTIME SM_6DEF_DTIME SM_7DEF_DTIME SM_8DEF_DTIME SM_9DEF_DTIME SM_CALC_DATE SM_BAD_DIGIT SM_BAD_YN SM_BAD_ALPHA SM_BAD_NUM SM_BAD_ALPHNUM SM_DECIMAL SM_1STATS SM_VERNO SM_DIG_ERR SM_YN_ERR SM_LET_ERR SM_NUM_ERR SM_ANUM_ERR SM_REXP_ERR SM_POSN_ERR SM_FBX_OPEN SM_FBX_WINDOW SM_FBX_SIBLING SM_OPENDIR - -syn keyword jamVariable3 SM_GETFILES SM_CHDIR SM_GETCWD SM_UNCLOSED_COMM SM_MB_OKLABEL SM_MB_CANCELLABEL SM_MB_YESLABEL SM_MB_NOLABEL SM_MB_RETRYLABEL SM_MB_IGNORELABEL SM_MB_ABORTLABEL SM_MB_HELPLABEL SM_MB_STOP SM_MB_QUESTION SM_MB_WARNING SM_MB_INFORMATION SM_MB_YESALLLABEL SM_0MN_CURRDEF SM_1MN_CURRDEF SM_2MN_CURRDEF SM_0DEF_CURR SM_1DEF_CURR SM_2DEF_CURR SM_3DEF_CURR SM_4DEF_CURR SM_5DEF_CURR SM_6DEF_CURR SM_7DEF_CURR SM_8DEF_CURR SM_9DEF_CURR SM_SEND_SYNTAX SM_SEND_ITEM SM_SEND_INVALID_BUNDLE SM_RECEIVE_SYNTAX SM_RECEIVE_ITEM_NUMBER SM_RECEIVE_OVERFLOW SM_RECEIVE_ITEM SM_SYNCH_RECEIVE SM_EXEC_FAIL SM_DYNA_HELP_NOT_AVAIL SM_DLL_LOAD_ERR SM_DLL_UNRESOLVED SM_DLL_VERSION_ERR SM_DLL_OPTION_ERR SM_DEMOERR SM_MB_OKALLLABEL SM_MB_NOALLLABEL SM_BADPROP SM_BETWEEN SM_ATLEAST SM_ATMOST SM_PR_ERROR SM_PR_OBJID SM_PR_OBJECT SM_PR_ITEM SM_PR_PROP SM_PR_PROP_ITEM SM_PR_PROP_VAL SM_PR_CONVERT SM_PR_OBJ_TYPE SM_PR_RANGE SM_PR_NO_SET SM_PR_BYND_SCRN SM_PR_WW_SCROLL SM_PR_NO_SYNC SM_PR_TOO_BIG SM_PR_BAD_MASK SM_EXEC_MEM_ERR - -syn keyword jamVariable4 SM_EXEC_NO_PROG SM_PR_NO_KEYSTRUCT SM_REOPEN_AS_SLIB SM_REOPEN_THE_SLIB SM_ERRLIB SM_WARNLIB SM_LIB_DOWNGRADE SM_OLDER SM_NEWER SM_UPGRADE SM_LIB_READONLY SM_LOPEN_ERR SM_LOPEN_WARN SM_MLOPEN_CREAT SM_MLOPEN_INIT SM_LIB_ERR SM_LIB_ISOLATE SM_LIB_NO_ERR SM_LIB_REC_ERR SM_LIB_FATAL_ERR SM_LIB_LERR_FILE SM_LIB_LERR_NOTLIB SM_LIB_LERR_BADVERS SM_LIB_LERR_FORMAT SM_LIB_LERR_BADCM SM_LIB_LERR_LOCK SM_LIB_LERR_RESERVED SM_LIB_LERR_READONLY SM_LIB_LERR_NOENTRY SM_LIB_LERR_BUSY SM_LIB_LERR_ROVERS SM_LIB_LERR_DEFAULT SM_LIB_BADCM SM_LIB_LERR_NEW SM_STANDALONE_MODE SM_FEATURE_RESTRICT FM_CH_LOST FM_JPL_PROMPT FM_YR4 FM_YR2 FM_MON FM_MON2 FM_DATE FM_DATE2 FM_HOUR FM_HOUR2 FM_MIN FM_MIN2 FM_SEC FM_SEC2 FM_YRDAY FM_AMPM FM_DAYA FM_DAYL FM_MONA FM_MONL FM_0MN_DEF_DT FM_1MN_DEF_DT FM_2MN_DEF_DT FM_DAY JM_QTERMINATE JM_HITSPACE JM_HITACK JM_NOJWIN UT_MEMERR UT_P_OPT UT_V_OPT UT_E_BINOPT UT_NO_INPUT UT_SECLONG UT_1FNAME UT_SLINE UT_FILE UT_ERROR UT_WARNING UT_MISSEQ UT_VOPT UT_M2_DESCR - -syn keyword jamVariable5 UT_M2_PROGNAME UT_M2_USAGE UT_M2_O_OPT UT_M2_COM UT_M2_BADTAG UT_M2_MSSQUOT UT_M2_AFTRQUOT UT_M2_DUPSECT UT_M2_BADUCLSS UT_M2_USECPRFX UT_M2_MPTYUSCT UT_M2_DUPMSGTG UT_M2_TOOLONG UT_M2_LONG UT_K2_DESCR UT_K2_PROGNAME UT_K2_USAGE UT_K2_MNEM UT_K2_NKEYDEF UT_K2_DUPKEY UT_K2_NOTFOUND UT_K2_1FNAME UT_K2_VOPT UT_K2_EXCHAR UT_V2_DESCR UT_V2_PROGNAME UT_V2_USAGE UT_V2_SLINE UT_V2_SEQUAL UT_V2_SVARNAME UT_V2_SNAME UT_V2_VOPT UT_V2_1REQ UT_CB_DESCR UT_CB_PROGNAME UT_CB_USAGE UT_CB_VOPT UT_CB_MIEXT UT_CB_AEXT UT_CB_UNKNOWN UT_CB_ISCHEME UT_CB_BKFGS UT_CB_ABGS UT_CB_REC UT_CB_GUI UT_CB_CONT UT_CB_CONTFG UT_CB_AFILE UT_CB_LEFT_QUOTE UT_CB_NO_EQUAL UT_CB_EXTRA_EQ UT_CB_BAD_LHS UT_CB_BAD_RHS UT_CB_BAD_QUOTED UT_CB_FILE UT_CB_FILE_LINE UT_CB_DUP_ALIAS UT_CB_LINE_LOOP UT_CB_BAD_STYLE UT_CB_DUP_STYLE UT_CB_NO_SECT UT_CB_DUP_SCHEME DM_ERROR DM_NODATABASE DM_NOTLOGGEDON DM_ALREADY_ON DM_ARGS_NEEDED DM_LOGON_DENIED DM_BAD_ARGS DM_BAD_CMD DM_NO_MORE_ROWS DM_ABORTED DM_NO_CURSOR DM_MANY_CURSORS DM_KEYWORD - -syn keyword jamVariable6 DM_INVALID_DATE DM_COMMIT DM_ROLLBACK DM_PARSE_ERROR DM_BIND_COUNT DM_BIND_VAR DM_DESC_COL DM_FETCH DM_NO_NAME DM_END_OF_PROC DM_NOCONNECTION DM_NOTSUPPORTED DM_TRAN_PEND DM_NO_TRANSACTION DM_ALREADY_INIT DM_INIT_ERROR DM_MAX_DEPTH DM_NO_PARENT DM_NO_CHILD DM_MODALITY_NOT_FOUND DM_NATIVE_NO_SUPPORT DM_NATIVE_CANCEL DM_TM_ALREADY DM_TM_IN_PROGRESS DM_TM_CLOSE_ERROR DM_TM_BAD_MODE DM_TM_BAD_CLOSE_ACTION DM_TM_INTERNAL DM_TM_MODEL_INTERNAL DM_TM_NO_ROOT DM_TM_NO_TRANSACTION DM_TM_INITIAL_MODE DM_TM_PARENT_NAME DM_TM_BAD_MEMBER DM_TM_FLD_NAM_LEN DM_TM_NO_PARENT DM_TM_BAD_REQUEST DM_TM_CANNOT_GEN_SQL DM_TM_CANNOT_EXEC_SQL DM_TM_DBI_ERROR DM_TM_DISCARD_ALL DM_TM_DISCARD_LATEST DM_TM_CALL_ERROR DM_TM_CALL_TYPE DM_TM_HOOK_MODEL DM_TM_ROOT_NAME DM_TM_TV_INVALID DM_TM_COL_NOT_FOUND DM_TM_BAD_LINK DM_TM_HOOK_MODEL_ERROR DM_TM_ONE_ROW DM_TM_SOME_ROWS DM_TM_GENERAL DM_TM_NO_HOOK DM_TM_NOSET DM_TM_TBLNAME DM_TM_PRIMARY_KEY DM_TM_INCOMPLETE_KEY DM_TM_CMD_MODE DM_TM_NO_SUCH_CMD DM_TM_NO_SUCH_SCOPE - -syn keyword jamVariable7 DM_TM_NO_SUCH_TV DM_TM_EVENT_LOOP DM_TM_UNSUPPORTED DM_TM_NO_MODEL DM_TM_SYNCH_SV DM_TM_WRONG_FORM DM_TM_VC_FIELD DM_TM_VC_DATE DM_TM_VC_TYPE DM_TM_BAD_CONTINUE DM_JDB_OUT_OF_MEMORY DM_JDB_DUPTABLEALIAS DM_JDB_DUPCURSORNAME DM_JDB_NODB DM_JDB_BINDCOUNT DM_JDB_NO_MORE_ROWS DM_JDB_AMBIGUOUS_COLUMN_REF DM_JDB_UNRESOLVED_COLUMN_REF DM_JDB_TABLE_READ_WRITE_CONFLICT DM_JDB_SYNTAX_ERROR DM_JDB_DUP_COLUMN_ASSIGNMENT DM_JDB_NO_MSG_FILE DM_JDB_NO_MSG DM_JDB_NOT_IMPLEMENTED DM_JDB_AGGREGATE_NOT_ALLOWED DM_JDB_TYPE_MISMATCH DM_JDB_NO_CURRENT_ROW DM_JDB_DB_CORRUPT DM_JDB_BUF_OVERFLOW DM_JDB_FILE_IO_ERR DM_JDB_BAD_HANDLE DM_JDB_DUP_TNAME DM_JDB_INVALID_TABLE_OP DM_JDB_TABLE_NOT_FOUND DM_JDB_CONVERSION_FAILED DM_JDB_INVALID_COLUMN_LIST DM_JDB_TABLE_OPEN DM_JDB_BAD_INPUT DM_JDB_DATATYPE_OVERFLOW DM_JDB_DATABASE_EXISTS DM_JDB_DATABASE_OPEN DM_JDB_DUP_CNAME DM_JDB_TMPDATABASE_ERR DM_JDB_INVALID_VALUES_COUNT DM_JDB_INVALID_COLUMN_COUNT DM_JDB_MAX_RECLEN_EXCEEDED DM_JDB_END_OF_GROUP - -syn keyword jamVariable8 TP_EXC_INVALID_CLIENT_COMMAND TP_EXC_INVALID_CLIENT_OPTION TP_EXC_INVALID_COMMAND TP_EXC_INVALID_COMMAND_SYNTAX TP_EXC_INVALID_CONNECTION TP_EXC_INVALID_CONTEXT TP_EXC_INVALID_FORWARD TP_EXC_INVALID_JAM_VARIABLE_REF TP_EXC_INVALID_MONITOR_COMMAND TP_EXC_INVALID_MONITOR_OPTION TP_EXC_INVALID_OPTION TP_EXC_INVALID_OPTION_VALUE TP_EXC_INVALID_SERVER_COMMAND TP_EXC_INVALID_SERVER_OPTION TP_EXC_INVALID_SERVICE TP_EXC_INVALID_TRANSACTION TP_EXC_JIF_ACCESS_FAILED TP_EXC_JIF_LOWER_VERSION TP_EXC_LOGFILE_ERROR TP_EXC_MONITOR_ERROR TP_EXC_NO_OUTSIDE_TRANSACTION TP_EXC_NO_OUTSTANDING_CALLS TP_EXC_NO_OUTSTANDING_MESSAGE TP_EXC_NO_SERVICES_ADVERTISED TP_EXC_NO_SIGNALS TP_EXC_NONTRANSACTIONAL_SERVICE TP_EXC_NONTRANSACTIONAL_ACTION TP_EXC_OUT_OF_MEMORY TP_EXC_POSTING_FAILED TP_EXC_PERMISSION_DENIED TP_EXC_REQUEST_LIMIT TP_EXC_ROLLBACK_COMMITTED TP_EXC_ROLLBACK_FAILED TP_EXC_SERVICE_FAILED TP_EXC_SERVICE_NOT_IN_JIF TP_EXC_SERVICE_PROTOCOL_ERROR TP_EXC_SUBSCRIPTION_LIMIT - -syn keyword jamVariable9 TP_EXC_SUBSCRIPTION_MATCH TP_EXC_SVC_ADVERTISE_LIMIT TP_EXC_SVC_WORK_OUTSTANDING TP_EXC_SVCROUTINE_MISSING TP_EXC_SVRINIT_WORK_OUTSTANDING TP_EXC_TIMEOUT TP_EXC_TRANSACTION_LIMIT TP_EXC_UNLOAD_FAILED TP_EXC_UNSUPPORTED_BUFFER TP_EXC_UNSUPPORTED_BUF_W_SUBT TP_EXC_USER_ABORT TP_EXC_WORK_OUTSTANDING TP_EXC_XA_CLOSE_FAILED TP_EXC_XA_OPEN_FAILED TP_EXC_QUEUE_BAD_MSGID TP_EXC_QUEUE_BAD_NAMESPACE TP_EXC_QUEUE_BAD_QUEUE TP_EXC_QUEUE_CANT_START_TRAN TP_EXC_QUEUE_FULL TP_EXC_QUEUE_MSG_IN_USE TP_EXC_QUEUE_NO_MSG TP_EXC_QUEUE_NOT_IN_QSPACE TP_EXC_QUEUE_RSRC_NOT_OPEN TP_EXC_QUEUE_SPACE_NOT_IN_JIF TP_EXC_QUEUE_TRAN_ABORTED TP_EXC_QUEUE_TRAN_ABSENT TP_EXC_QUEUE_UNEXPECTED TP_EXC_DCE_LOGIN_REQUIRED TP_EXC_ENC_CELL_NAME_REQUIRED TP_EXC_ENC_CONN_INFO_DIFFS TP_EXC_ENC_SVC_REGISTRY_ERROR TP_INVALID_START_ROUTINE TP_JIF_NOT_FOUND TP_JIF_OPEN_ERROR TP_NO_JIF TP_NO_MONITORS_ERROR TP_NO_SESSIONS_ERROR TP_NO_START_ROUTINE TP_ADV_SERVICE TP_ADV_SERVICE_IN_GROUP TP_PRE_SVCHDL_WINOPEN_FAILED - -syn keyword jamVariable10 PV_YES PV_NO TRUE FALSE TM_TRAN_NAME - -" jamCommentGroup allows adding matches for special things in comments -syn cluster jamCommentGroup contains=jamTodo - -" String and Character constants -" Highlight special characters (those which have a backslash) differently -syn match jamSpecial contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" -if !exists("c_no_utf") - syn match jamSpecial contained "\\\(u\x\{4}\|U\x\{8}\)" -endif -if exists("c_no_cformat") - syn region jamString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial -else - syn match jamFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained - syn match jamFormat "%%" contained - syn region jamString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat - hi link jamFormat jamSpecial -endif -syn match jamCharacter "L\='[^\\]'" -syn match jamCharacter "L'[^']*'" contains=jamSpecial -syn match jamSpecialError "L\='\\[^'\"?\\abfnrtv]'" -syn match jamSpecialCharacter "L\='\\['\"?\\abfnrtv]'" -syn match jamSpecialCharacter "L\='\\\o\{1,3}'" -syn match jamSpecialCharacter "'\\x\x\{1,2}'" -syn match jamSpecialCharacter "L'\\x\x\+'" - -"catch errors caused by wrong parenthesis and brackets -syn cluster jamParenGroup contains=jamParenError,jamIncluded,jamSpecial,@jamCommentGroup,jamUserCont,jamUserLabel,jamBitField,jamCommentSkip,jamOctalZero,jamCppOut,jamCppOut2,jamCppSkip,jamFormat,jamNumber,jamFloat,jamOctal,jamOctalError,jamNumbersCom - -syn region jamParen transparent start='(' end=')' contains=ALLBUT,@jamParenGroup,jamErrInBracket -syn match jamParenError "[\])]" -syn match jamErrInParen contained "[\]{}]" -syn region jamBracket transparent start='\[' end=']' contains=ALLBUT,@jamParenGroup,jamErrInParen -syn match jamErrInBracket contained "[);{}]" - -"integer number, or floating point number without a dot and with "f". -syn case ignore -syn match jamNumbers transparent "\<\d\|\,\d" contains=jamNumber,jamFloat,jamOctalError,jamOctal -" Same, but without octal error (for comments) -syn match jamNumbersCom contained transparent "\<\d\|\,\d" contains=jamNumber,jamFloat,jamOctal -syn match jamNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" -"hex number -syn match jamNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" -" Flag the first zero of an octal number as something special -syn match jamOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero -syn match jamOctalZero contained "\<0" -syn match jamFloat contained "\d\+f" -"floating point number, with dot, optional exponent -syn match jamFloat contained "\d\+\,\d*\(e[-+]\=\d\+\)\=[fl]\=" -"floating point number, starting with a dot, optional exponent -syn match jamFloat contained "\,\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" -"floating point number, without dot, with exponent -syn match jamFloat contained "\d\+e[-+]\=\d\+[fl]\=\>" -" flag an octal number with wrong digits -syn match jamOctalError contained "0\o*[89]\d*" -syn case match - -syntax match jamOperator1 "\#\#" -syntax match jamOperator6 "/" -syntax match jamOperator2 "+" -syntax match jamOperator3 "*" -syntax match jamOperator4 "-" -syntax match jamOperator5 "|" -syntax match jamOperator6 "/" -syntax match jamOperator7 "&" -syntax match jamOperator8 ":" -syntax match jamOperator9 "<" -syntax match jamOperator10 ">" -syntax match jamOperator11 "!" -syntax match jamOperator12 "%" -syntax match jamOperator13 "^" -syntax match jamOperator14 "@" - -syntax match jamCommentL "//" - -if exists("jam_comment_strings") - " A comment can contain jamString, jamCharacter and jamNumber. - " But a "*/" inside a jamString in a jamComment DOES end the comment! So we - " need to use a special type of jamString: jamCommentString, which also ends on - " "*/", and sees a "*" at the start of the line as comment again. - " Unfortunately this doesn't very well work for // type of comments :-( - syntax match jamCommentSkip contained "^\s*\*\($\|\s\+\)" - syntax region jamCommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=jamSpecial,jamCommentSkip - syntax region jamComment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=jamSpecial - syntax region jamCommentL start="//" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamComment2String,jamCharacter,jamNumbersCom,jamSpaceError - syntax region jamCommentL2 start="^#\|^\s\+\#" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamComment2String,jamCharacter,jamNumbersCom,jamSpaceError - syntax region jamComment start="/\*" end="\*/" contains=@jamCommentGroup,jamCommentString,jamCharacter,jamNumbersCom,jamSpaceError -else - syn region jamCommentL start="//" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamSpaceError - syn region jamCommentL2 start="^\#\|^\s\+\#" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamSpaceError - syn region jamComment start="/\*" end="\*/" contains=@jamCommentGroup,jamSpaceError -endif - -" keep a // comment separately, it terminates a preproc. conditional -syntax match jamCommentError "\*/" - -syntax match jamOperator3Error "*/" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_jam_syn_inits") - if version < 508 - let did_jam_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink jamCommentL jamComment - HiLink jamCommentL2 jamComment - HiLink jamOperator3Error jamError - HiLink jamConditional Conditional - HiLink jamRepeat Repeat - HiLink jamCharacter Character - HiLink jamSpecialCharacter jamSpecial - HiLink jamNumber Number - HiLink jamParenError jamError - HiLink jamErrInParen jamError - HiLink jamErrInBracket jamError - HiLink jamCommentError jamError - HiLink jamSpaceError jamError - HiLink jamSpecialError jamError - HiLink jamOperator1 jamOperator - HiLink jamOperator2 jamOperator - HiLink jamOperator3 jamOperator - HiLink jamOperator4 jamOperator - HiLink jamOperator5 jamOperator - HiLink jamOperator6 jamOperator - HiLink jamOperator7 jamOperator - HiLink jamOperator8 jamOperator - HiLink jamOperator9 jamOperator - HiLink jamOperator10 jamOperator - HiLink jamOperator11 jamOperator - HiLink jamOperator12 jamOperator - HiLink jamOperator13 jamOperator - HiLink jamOperator14 jamOperator - HiLink jamError Error - HiLink jamStatement Statement - HiLink jamPreCondit PreCondit - HiLink jamCommentError jamError - HiLink jamCommentString jamString - HiLink jamComment2String jamString - HiLink jamCommentSkip jamComment - HiLink jamString String - HiLink jamComment Comment - HiLink jamSpecial SpecialChar - HiLink jamTodo Todo - HiLink jamCppSkip jamCppOut - HiLink jamCppOut2 jamCppOut - HiLink jamCppOut Comment - HiLink jamDBState1 Identifier - HiLink jamDBState2 Identifier - HiLink jamSQLState1 jamSQL - HiLink jamSQLState2 jamSQL - HiLink jamLibFunc1 jamLibFunc - HiLink jamLibFunc2 jamLibFunc - HiLink jamLibFunc3 jamLibFunc - HiLink jamLibFunc4 jamLibFunc - HiLink jamLibFunc5 jamLibFunc - HiLink jamLibFunc6 jamLibFunc - HiLink jamLibFunc7 jamLibFunc - HiLink jamLibFunc8 jamLibFunc - HiLink jamLibFunc9 jamLibFunc - HiLink jamVariable1 jamVariablen - HiLink jamVariable2 jamVariablen - HiLink jamVariable3 jamVariablen - HiLink jamVariable4 jamVariablen - HiLink jamVariable5 jamVariablen - HiLink jamVariable6 jamVariablen - HiLink jamVariable7 jamVariablen - HiLink jamVariable8 jamVariablen - HiLink jamVariable9 jamVariablen - HiLink jamVariable10 jamVariablen - HiLink jamVariablen Constant - HiLink jamSQL Type - HiLink jamLibFunc PreProc - HiLink jamOperator Special - - delcommand HiLink -endif - -let b:current_syntax = "jam" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/java.vim b/share/vim/vim73/syntax/java.vim deleted file mode 100644 index d11afa8b..00000000 --- a/share/vim/vim73/syntax/java.vim +++ /dev/null @@ -1,348 +0,0 @@ -" Vim syntax file " Language: Java -" Maintainer: Claudio Fleiner -" URL: http://www.fleiner.com/vim/syntax/java.vim -" Last Change: 2010 March 23 - -" Please check :help java.vim for comments on some of the options available. - -" Quit when a syntax file was already loaded -if !exists("main_syntax") - if version < 600 - syntax clear - elseif exists("b:current_syntax") - finish - endif - " we define it here so that included files can test for it - let main_syntax='java' - syn region javaFold start="{" end="}" transparent fold -endif - -" don't use standard HiLink, it will not work with included syntax files -if version < 508 - command! -nargs=+ JavaHiLink hi link -else - command! -nargs=+ JavaHiLink hi def link -endif - -" some characters that cannot be in a java program (outside a string) -syn match javaError "[\\@`]" -syn match javaError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/" -syn match javaOK "\.\.\." - -" use separate name so that it can be deleted in javacc.vim -syn match javaError2 "#\|=<" -JavaHiLink javaError2 javaError - - - -" keyword definitions -syn keyword javaExternal native package -syn match javaExternal "\\(\s\+static\>\)\?" -syn keyword javaError goto const -syn keyword javaConditional if else switch -syn keyword javaRepeat while for do -syn keyword javaBoolean true false -syn keyword javaConstant null -syn keyword javaTypedef this super -syn keyword javaOperator new instanceof -syn keyword javaType boolean char byte short int long float double -syn keyword javaType void -syn keyword javaStatement return -syn keyword javaStorageClass static synchronized transient volatile final strictfp serializable -syn keyword javaExceptions throw try catch finally -syn keyword javaAssert assert -syn keyword javaMethodDecl synchronized throws -syn keyword javaClassDecl extends implements interface -" to differentiate the keyword class from MyClass.class we use a match here -syn match javaTypedef "\.\s*\"ms=s+1 -syn keyword javaClassDecl enum -syn match javaClassDecl "^class\>" -syn match javaClassDecl "[^.]\s*\"ms=s+1 -syn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>" -syn match javaClassDecl "@interface\>" -syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite -syn match javaUserLabelRef "\k\+" contained -syn match javaVarArg "\.\.\." -syn keyword javaScopeDecl public protected private abstract - -if exists("java_highlight_java_lang_ids") - let java_highlight_all=1 -endif -if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang") - " java.lang.* - syn match javaLangClass "\" - syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException - syn cluster javaTop add=javaR_JavaLang - syn cluster javaClasses add=javaR_JavaLang - JavaHiLink javaR_JavaLang javaR_Java - syn keyword javaC_JavaLang Process RuntimePermission StringKeySet CharacterData01 Class ThreadLocal ThreadLocalMap CharacterData0E Package Character StringCoding Long ProcessImpl ProcessEnvironment Short AssertionStatusDirectives 1PackageInfoProxy UnicodeBlock InheritableThreadLocal AbstractStringBuilder StringEnvironment ClassLoader ConditionalSpecialCasing CharacterDataPrivateUse StringBuffer StringDecoder Entry StringEntry WrappedHook StringBuilder StrictMath State ThreadGroup Runtime CharacterData02 MethodArray Object CharacterDataUndefined Integer Gate Boolean Enum Variable Subset StringEncoder Void Terminator CharsetSD IntegerCache CharacterCache Byte CharsetSE Thread SystemClassLoaderAction CharacterDataLatin1 StringValues StackTraceElement Shutdown ShortCache String ConverterSD ByteCache Lock EnclosingMethodInfo Math Float Value Double SecurityManager LongCache ProcessBuilder StringEntrySet Compiler Number UNIXProcess ConverterSE ExternalData CaseInsensitiveComparator CharacterData00 NativeLibrary - syn cluster javaTop add=javaC_JavaLang - syn cluster javaClasses add=javaC_JavaLang - JavaHiLink javaC_JavaLang javaC_Java - syn keyword javaE_JavaLang IncompatibleClassChangeError InternalError UnknownError ClassCircularityError AssertionError ThreadDeath IllegalAccessError NoClassDefFoundError ClassFormatError UnsupportedClassVersionError NoSuchFieldError VerifyError ExceptionInInitializerError InstantiationError LinkageError NoSuchMethodError Error UnsatisfiedLinkError StackOverflowError AbstractMethodError VirtualMachineError OutOfMemoryError - syn cluster javaTop add=javaE_JavaLang - syn cluster javaClasses add=javaE_JavaLang - JavaHiLink javaE_JavaLang javaE_Java - syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException - syn cluster javaTop add=javaX_JavaLang - syn cluster javaClasses add=javaX_JavaLang - JavaHiLink javaX_JavaLang javaX_Java - - JavaHiLink javaR_Java javaR_ - JavaHiLink javaC_Java javaC_ - JavaHiLink javaE_Java javaE_ - JavaHiLink javaX_Java javaX_ - JavaHiLink javaX_ javaExceptions - JavaHiLink javaR_ javaExceptions - JavaHiLink javaE_ javaExceptions - JavaHiLink javaC_ javaConstant - - syn keyword javaLangObject clone equals finalize getClass hashCode - syn keyword javaLangObject notify notifyAll toString wait - JavaHiLink javaLangObject javaConstant - syn cluster javaTop add=javaLangObject -endif - -if filereadable(expand(":p:h")."/javaid.vim") - source :p:h/javaid.vim -endif - -if exists("java_space_errors") - if !exists("java_no_trail_space_error") - syn match javaSpaceError "\s\+$" - endif - if !exists("java_no_tab_space_error") - syn match javaSpaceError " \+\t"me=e-1 - endif -endif - -syn region javaLabelRegion transparent matchgroup=javaLabel start="\" matchgroup=NONE end=":" contains=javaNumber,javaCharacter -syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel -syn keyword javaLabel default - -if !exists("java_allow_cpp_keywords") - syn keyword javaError auto delete extern friend inline redeclared - syn keyword javaError register signed sizeof struct template typedef union - syn keyword javaError unsigned operator -endif - -" The following cluster contains all java groups except the contained ones -syn cluster javaTop add=javaExternal,javaError,javaError,javaBranch,javaLabelRegion,javaLabel,javaConditional,javaRepeat,javaBoolean,javaConstant,javaTypedef,javaOperator,javaType,javaType,javaStatement,javaStorageClass,javaAssert,javaExceptions,javaMethodDecl,javaClassDecl,javaClassDecl,javaClassDecl,javaScopeDecl,javaError,javaError2,javaUserLabel,javaLangObject,javaAnnotation,javaVarArg - - -" Comments -syn keyword javaTodo contained TODO FIXME XXX -if exists("java_comment_strings") - syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell - syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell - syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar - syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar - syn match javaCommentCharacter contained "'[^\\]'" - syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber - syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber -endif -syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell -syn match javaCommentStar contained "^\s*\*[^/]"me=e-1 -syn match javaCommentStar contained "^\s*\*$" -syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell -JavaHiLink javaCommentString javaString -JavaHiLink javaComment2String javaString -JavaHiLink javaCommentCharacter javaCharacter - -syn cluster javaTop add=javaComment,javaLineComment - -if !exists("java_ignore_javadoc") && main_syntax != 'jsp' - syntax case ignore - " syntax coloring for javadoc comments (HTML) - syntax include @javaHtml :p:h/html.vim - unlet b:current_syntax - " HTML enables spell checking for all text that is not in a syntax item. This - " is wrong for Java (all identifiers would be spell-checked), so it's undone - " here. - syntax spell default - - syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell - syn region javaCommentTitle contained matchgroup=javaDocComment start="/\*\*" matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag - - syn region javaDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" - syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam - syn match javaDocParam contained "\s\S\+" - syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>" - syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam - syn match javaDocSeeTagParam contained @"\_[^"]\+"\|\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend - syntax case match -endif - -" match the special comment /**/ -syn match javaComment "/\*\*/" - -" Strings and constants -syn match javaSpecialError contained "\\." -syn match javaSpecialCharError contained "[^']" -syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" -syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell -" next line disabled, it can cause a crash for a long line -"syn match javaStringError +"\([^"\\]\|\\.\)*$+ -syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError -syn match javaCharacter "'\\''" contains=javaSpecialChar -syn match javaCharacter "'[^\\]'" -syn match javaNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" -syn match javaNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" -syn match javaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" -syn match javaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" - -" unicode characters -syn match javaSpecial "\\u\d\{4\}" - -syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError - -if exists("java_highlight_functions") - if java_highlight_functions == "indent" - syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses - syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses - syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses - syn region javaFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses - else - " This line catches method declarations at any indentation>0, but it assumes - " two things: - " 1. class names are always capitalized (ie: Button) - " 2. method names are never capitalized (except constructors, of course) - syn region javaFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(<[^>]*>\)\=\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*([^0-9]+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses - endif - syn match javaBraces "[{}]" - syn cluster javaTop add=javaFuncDef,javaBraces -endif - -if exists("java_highlight_debug") - - " Strings and constants - syn match javaDebugSpecial contained "\\\d\d\d\|\\." - syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial - syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+ - syn match javaDebugCharacter contained "'[^\\]'" - syn match javaDebugSpecialCharacter contained "'\\.'" - syn match javaDebugSpecialCharacter contained "'\\''" - syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" - syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" - syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" - syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" - syn keyword javaDebugBoolean contained true false - syn keyword javaDebugType contained null this super - syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen - - " to make this work you must define the highlighting for these groups - syn match javaDebug "\= 508 || !exists("did_c_syn_inits") - JavaHiLink javaDebug Debug - JavaHiLink javaDebugString DebugString - JavaHiLink javaDebugStringError javaError - JavaHiLink javaDebugType DebugType - JavaHiLink javaDebugBoolean DebugBoolean - JavaHiLink javaDebugNumber Debug - JavaHiLink javaDebugSpecial DebugSpecial - JavaHiLink javaDebugSpecialCharacter DebugSpecial - JavaHiLink javaDebugCharacter DebugString - JavaHiLink javaDebugParen Debug - - JavaHiLink DebugString String - JavaHiLink DebugSpecial Special - JavaHiLink DebugBoolean Boolean - JavaHiLink DebugType Type - endif -endif - -if exists("java_mark_braces_in_parens_as_errors") - syn match javaInParen contained "[{}]" - JavaHiLink javaInParen javaError - syn cluster javaTop add=javaInParen -endif - -" catch errors caused by wrong parenthesis -syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1 -syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained -syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained -syn match javaParenError ")" -" catch errors caused by wrong square parenthesis -syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1 -syn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained -syn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained -syn match javaParenError "\]" - -JavaHiLink javaParenError javaError - -if !exists("java_minlines") - let java_minlines = 10 -endif -exec "syn sync ccomment javaComment minlines=" . java_minlines - -" The default highlighting. -if version >= 508 || !exists("did_java_syn_inits") - if version < 508 - let did_java_syn_inits = 1 - endif - JavaHiLink javaFuncDef Function - JavaHiLink javaVarArg Function - JavaHiLink javaBraces Function - JavaHiLink javaBranch Conditional - JavaHiLink javaUserLabelRef javaUserLabel - JavaHiLink javaLabel Label - JavaHiLink javaUserLabel Label - JavaHiLink javaConditional Conditional - JavaHiLink javaRepeat Repeat - JavaHiLink javaExceptions Exception - JavaHiLink javaAssert Statement - JavaHiLink javaStorageClass StorageClass - JavaHiLink javaMethodDecl javaStorageClass - JavaHiLink javaClassDecl javaStorageClass - JavaHiLink javaScopeDecl javaStorageClass - JavaHiLink javaBoolean Boolean - JavaHiLink javaSpecial Special - JavaHiLink javaSpecialError Error - JavaHiLink javaSpecialCharError Error - JavaHiLink javaString String - JavaHiLink javaCharacter Character - JavaHiLink javaSpecialChar SpecialChar - JavaHiLink javaNumber Number - JavaHiLink javaError Error - JavaHiLink javaStringError Error - JavaHiLink javaStatement Statement - JavaHiLink javaOperator Operator - JavaHiLink javaComment Comment - JavaHiLink javaDocComment Comment - JavaHiLink javaLineComment Comment - JavaHiLink javaConstant Constant - JavaHiLink javaTypedef Typedef - JavaHiLink javaTodo Todo - JavaHiLink javaAnnotation PreProc - - JavaHiLink javaCommentTitle SpecialComment - JavaHiLink javaDocTags Special - JavaHiLink javaDocParam Function - JavaHiLink javaDocSeeTagParam Function - JavaHiLink javaCommentStar javaComment - - JavaHiLink javaType Type - JavaHiLink javaExternal Include - - JavaHiLink htmlComment Special - JavaHiLink htmlCommentPart Special - JavaHiLink javaSpaceError Error -endif - -delcommand JavaHiLink - -let b:current_syntax = "java" - -if main_syntax == 'java' - unlet main_syntax -endif - -let b:spell_options="contained" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/javacc.vim b/share/vim/vim73/syntax/javacc.vim deleted file mode 100644 index 57c57b56..00000000 --- a/share/vim/vim73/syntax/javacc.vim +++ /dev/null @@ -1,77 +0,0 @@ -" Vim syntax file -" Language: JavaCC, a Java Compiler Compiler written by JavaSoft -" Maintainer: Claudio Fleiner -" URL: http://www.fleiner.com/vim/syntax/javacc.vim -" Last Change: 2001 Jun 20 - -" Uses java.vim, and adds a few special things for JavaCC Parser files. -" Those files usually have the extension *.jj - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" source the java.vim file -if version < 600 - source :p:h/java.vim -else - runtime! syntax/java.vim -endif -unlet b:current_syntax - -"remove catching errors caused by wrong parenthesis (does not work in javacc -"files) (first define them in case they have not been defined in java) -syn match javaParen "--" -syn match javaParenError "--" -syn match javaInParen "--" -syn match javaError2 "--" -syn clear javaParen -syn clear javaParenError -syn clear javaInParen -syn clear javaError2 - -" remove function definitions (they look different) (first define in -" in case it was not defined in java.vim) -"syn match javaFuncDef "--" -syn clear javaFuncDef -syn match javaFuncDef "[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)[ \t]*:" contains=javaType - -syn keyword javaccPackages options DEBUG_PARSER DEBUG_LOOKAHEAD DEBUG_TOKEN_MANAGER -syn keyword javaccPackages COMMON_TOKEN_ACTION IGNORE_CASE CHOICE_AMBIGUITY_CHECK -syn keyword javaccPackages OTHER_AMBIGUITY_CHECK STATIC LOOKAHEAD ERROR_REPORTING -syn keyword javaccPackages USER_TOKEN_MANAGER USER_CHAR_STREAM JAVA_UNICODE_ESCAPE -syn keyword javaccPackages UNICODE_INPUT -syn match javaccPackages "PARSER_END([^)]*)" -syn match javaccPackages "PARSER_BEGIN([^)]*)" -syn match javaccSpecToken "" -" the dot is necessary as otherwise it will be matched as a keyword. -syn match javaccSpecToken ".LOOKAHEAD("ms=s+1,me=e-1 -syn match javaccToken "<[^> \t]*>" -syn keyword javaccActionToken TOKEN SKIP MORE SPECIAL_TOKEN -syn keyword javaccError DEBUG IGNORE_IN_BNF - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_css_syn_inits") - if version < 508 - let did_css_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - HiLink javaccSpecToken Statement - HiLink javaccActionToken Type - HiLink javaccPackages javaScopeDecl - HiLink javaccToken String - HiLink javaccError Error - delcommand HiLink -endif - -let b:current_syntax = "javacc" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/javascript.vim b/share/vim/vim73/syntax/javascript.vim deleted file mode 100644 index b293eb80..00000000 --- a/share/vim/vim73/syntax/javascript.vim +++ /dev/null @@ -1,135 +0,0 @@ -" Vim syntax file -" Language: JavaScript -" Maintainer: Claudio Fleiner -" Updaters: Scott Shattuck (ss) -" URL: http://www.fleiner.com/vim/syntax/javascript.vim -" Changes: (ss) added keywords, reserved words, and other identifiers -" (ss) repaired several quoting and grouping glitches -" (ss) fixed regex parsing issue with multiple qualifiers [gi] -" (ss) additional factoring of keywords, globals, and members -" Last Change: 2010 Mar 25 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -" tuning parameters: -" unlet javaScript_fold - -if !exists("main_syntax") - if version < 600 - syntax clear - elseif exists("b:current_syntax") - finish - endif - let main_syntax = 'javascript' -endif - -" Drop fold if it set but vim doesn't support it. -if version < 600 && exists("javaScript_fold") - unlet javaScript_fold -endif - - -syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained -syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo -syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" -syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo -syn match javaScriptSpecial "\\\d\d\d\|\\." -syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc -syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc - -syn match javaScriptSpecialCharacter "'\\.'" -syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" -syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline - -syn keyword javaScriptConditional if else switch -syn keyword javaScriptRepeat while for do in -syn keyword javaScriptBranch break continue -syn keyword javaScriptOperator new delete instanceof typeof -syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp -syn keyword javaScriptStatement return with -syn keyword javaScriptBoolean true false -syn keyword javaScriptNull null undefined -syn keyword javaScriptIdentifier arguments this var let -syn keyword javaScriptLabel case default -syn keyword javaScriptException try catch finally throw -syn keyword javaScriptMessage alert confirm prompt status -syn keyword javaScriptGlobal self window top parent -syn keyword javaScriptMember document event location -syn keyword javaScriptDeprecated escape unescape -syn keyword javaScriptReserved abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile - -if exists("javaScript_fold") - syn match javaScriptFunction "\" - syn region javaScriptFunctionFold start="\.*[^};]$" end="^\z1}.*$" transparent fold keepend - - syn sync match javaScriptSync grouphere javaScriptFunctionFold "\" - syn sync match javaScriptSync grouphere NONE "^}" - - setlocal foldmethod=syntax - setlocal foldtext=getline(v:foldstart) -else - syn keyword javaScriptFunction function - syn match javaScriptBraces "[{}\[\]]" - syn match javaScriptParens "[()]" -endif - -syn sync fromstart -syn sync maxlines=100 - -if main_syntax == "javascript" - syn sync ccomment javaScriptComment -endif - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_javascript_syn_inits") - if version < 508 - let did_javascript_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - HiLink javaScriptComment Comment - HiLink javaScriptLineComment Comment - HiLink javaScriptCommentTodo Todo - HiLink javaScriptSpecial Special - HiLink javaScriptStringS String - HiLink javaScriptStringD String - HiLink javaScriptCharacter Character - HiLink javaScriptSpecialCharacter javaScriptSpecial - HiLink javaScriptNumber javaScriptValue - HiLink javaScriptConditional Conditional - HiLink javaScriptRepeat Repeat - HiLink javaScriptBranch Conditional - HiLink javaScriptOperator Operator - HiLink javaScriptType Type - HiLink javaScriptStatement Statement - HiLink javaScriptFunction Function - HiLink javaScriptBraces Function - HiLink javaScriptError Error - HiLink javaScrParenError javaScriptError - HiLink javaScriptNull Keyword - HiLink javaScriptBoolean Boolean - HiLink javaScriptRegexpString String - - HiLink javaScriptIdentifier Identifier - HiLink javaScriptLabel Label - HiLink javaScriptException Exception - HiLink javaScriptMessage Keyword - HiLink javaScriptGlobal Keyword - HiLink javaScriptMember Keyword - HiLink javaScriptDeprecated Exception - HiLink javaScriptReserved Keyword - HiLink javaScriptDebug Debug - HiLink javaScriptConstant Label - - delcommand HiLink -endif - -let b:current_syntax = "javascript" -if main_syntax == 'javascript' - unlet main_syntax -endif - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/kwt.vim b/share/vim/vim73/syntax/kwt.vim deleted file mode 100644 index 47be7a80..00000000 --- a/share/vim/vim73/syntax/kwt.vim +++ /dev/null @@ -1,87 +0,0 @@ -" Vim syntax file -" Language: kimwitu++ -" Maintainer: Michael Piefel -" Last Change: 2 May 2001 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Read the C++ syntax to start with -if version < 600 - source :p:h/cpp.vim -else - runtime! syntax/cpp.vim - unlet b:current_syntax -endif - -" kimwitu++ extentions - -" Don't stop at eol, messes around with CPP mode, but gives line spanning -" strings in unparse rules -syn region cCppString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat -syn keyword cType integer real casestring nocasestring voidptr list -syn keyword cType uview rview uview_enum rview_enum - -" avoid unparsing rule sth:view being scanned as label -syn clear cUserCont -syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel contained -syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel contained -syn match cUserCont "^\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained -syn match cUserCont ";\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained - -" highlight phylum decls -syn match kwtPhylum "^\I\i*:$" -syn match kwtPhylum "^\I\i*\s*{\s*\(!\|\I\)\i*\s*}\s*:$" - -syn keyword kwtStatement with foreach afterforeach provided -syn match kwtDecl "%\(uviewvar\|rviewvar\)" -syn match kwtDecl "^%\(uview\|rview\|ctor\|dtor\|base\|storageclass\|list\|attr\|member\|option\)" -syn match kwtOption "no-csgio\|no-unparse\|no-rewrite\|no-printdot\|no-hashtables\|smart-pointer\|weak-pointer" -syn match kwtSep "^%}$" -syn match kwtSep "^%{\(\s\+\I\i*\)*$" -syn match kwtCast "\= 508 || !exists("did_kwt_syn_inits") - if version < 508 - let did_kwt_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink kwtStatement cppStatement - HiLink kwtDecl cppStatement - HiLink kwtCast cppStatement - HiLink kwtSep Delimiter - HiLink kwtViews Label - HiLink kwtPhylum Type - HiLink kwtOption PreProc - "HiLink cText Comment - - delcommand HiLink -endif - -syn sync lines=300 - -let b:current_syntax = "kwt" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/lex.vim b/share/vim/vim73/syntax/lex.vim deleted file mode 100644 index 68ae6327..00000000 --- a/share/vim/vim73/syntax/lex.vim +++ /dev/null @@ -1,129 +0,0 @@ -" Vim syntax file -" Language: Lex -" Maintainer: Charles E. Campbell, Jr. -" Last Change: Sep 11, 2009 -" Version: 10 -" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax -" -" Option: -" lex_uses_cpp : if this variable exists, then C++ is loaded rather than C - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Read the C/C++ syntax to start with -if version >= 600 - if exists("lex_uses_cpp") - runtime! syntax/cpp.vim - else - runtime! syntax/c.vim - endif - unlet b:current_syntax -else - if exists("lex_uses_cpp") - so :p:h/cpp.vim - else - so :p:h/c.vim - endif -endif - -" --- ========= --- -" --- Lex stuff --- -" --- ========= --- - -"I'd prefer to use lex.* , but vim doesn't handle forward definitions yet -syn cluster lexListGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatString,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,lexPatCode,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError -syn cluster lexListPatCodeGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatTagZoneStart,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError - -" Abbreviations Section -if has("folding") - syn region lexAbbrvBlock fold start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState -else - syn region lexAbbrvBlock start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState -endif -syn match lexAbbrv "^\I\i*\s"me=e-1 skipwhite contained nextgroup=lexAbbrvRegExp -syn match lexAbbrv "^%[sx]" contained -syn match lexAbbrvRegExp "\s\S.*$"lc=1 contained nextgroup=lexAbbrv,lexInclude -if has("folding") - syn region lexInclude fold matchgroup=lexSep start="^%{" end="%}" contained contains=ALLBUT,@lexListGroup - syn region lexAbbrvComment fold start="^\s\+/\*" end="\*/" contains=@Spell - syn region lexStartState fold matchgroup=lexAbbrv start="^%\a\+" end="$" contained -else - syn region lexInclude matchgroup=lexSep start="^%{" end="%}" contained contains=ALLBUT,@lexListGroup - syn region lexAbbrvComment start="^\s\+/\*" end="\*/" contains=@Spell - syn region lexStartState matchgroup=lexAbbrv start="^%\a\+" end="$" contained -endif - -"%% : Patterns {Actions} -if has("folding") - syn region lexPatBlock fold matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat - syn region lexPat fold start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace - syn region lexBrace fold start="\[" skip=+\\\\\|\\+ end="]" contained - syn region lexPatString fold matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained -else - syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat - syn region lexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace - syn region lexBrace start="\[" skip=+\\\\\|\\+ end="]" contained - syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained -endif -syn match lexPatTag "^<\I\i*\(,\I\i*\)*>" contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep -syn match lexPatTagZone "^<\I\i*\(,\I\i*\)*>\s*\ze{" contained nextgroup=lexPatTagZoneStart -syn match lexPatTag +^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+ contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep -if has("folding") - syn region lexPatTagZoneStart matchgroup=lexPatTag fold start='{' end='}' contained contains=lexPat,lexPatComment - syn region lexPatComment start="\s\+/\*" end="\*/" fold skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell -else - syn region lexPatTagZoneStart matchgroup=lexPatTag start='{' end='}' contained contains=lexPat,lexPatComment - syn region lexPatComment start="\s\+/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell -endif -syn match lexPatCodeLine ".*$" contained contains=ALLBUT,@lexListGroup -syn match lexMorePat "\s*|\s*$" skipnl contained nextgroup=lexPat,lexPatTag,lexPatComment -syn match lexPatSep "\s\+" contained nextgroup=lexMorePat,lexPatCode,lexPatCodeLine -syn match lexSlashQuote +\(\\\\\)*\\"+ contained -if has("folding") - syn region lexPatCode matchgroup=Delimiter start="{" end="}" fold skipnl contained contains=ALLBUT,@lexListPatCodeGroup -else - syn region lexPatCode matchgroup=Delimiter start="{" end="}" skipnl contained contains=ALLBUT,@lexListPatCodeGroup -endif - -syn keyword lexCFunctions BEGIN input unput woutput yyleng yylook yytext -syn keyword lexCFunctions ECHO output winput wunput yyless yymore yywrap - -" includes several ALLBUTs; these have to be treated so as to exclude lex* groups -syn cluster cParenGroup add=lex.* -syn cluster cDefineGroup add=lex.* -syn cluster cPreProcGroup add=lex.* -syn cluster cMultiGroup add=lex.* - -" Synchronization -syn sync clear -syn sync minlines=300 -syn sync match lexSyncPat grouphere lexPatBlock "^%[a-zA-Z]" -syn sync match lexSyncPat groupthere lexPatBlock "^<$" -syn sync match lexSyncPat groupthere lexPatBlock "^%%$" - -" The default highlighting. -hi def link lexAbbrvComment lexPatComment -hi def link lexBrace lexPat -hi def link lexPatTagZone lexPatTag -hi def link lexSlashQuote lexPat - -hi def link lexAbbrvRegExp Macro -hi def link lexAbbrv SpecialChar -hi def link lexCFunctions Function -hi def link lexMorePat SpecialChar -hi def link lexPatComment Comment -hi def link lexPat Function -hi def link lexPatString Function -hi def link lexPatTag Special -hi def link lexSep Delimiter -hi def link lexStartState Statement - -let b:current_syntax = "lex" - -" vim:ts=10 diff --git a/share/vim/vim73/syntax/liquid.vim b/share/vim/vim73/syntax/liquid.vim deleted file mode 100644 index 20e5f388..00000000 --- a/share/vim/vim73/syntax/liquid.vim +++ /dev/null @@ -1,137 +0,0 @@ -" Vim syntax file -" Language: Liquid -" Maintainer: Tim Pope -" Filenames: *.liquid -" Last Change: 2010 May 21 - -if exists('b:current_syntax') - finish -endif - -if !exists('main_syntax') - let main_syntax = 'liquid' -endif - -if !exists('g:liquid_default_subtype') - let g:liquid_default_subtype = 'html' -endif - -if !exists('b:liquid_subtype') && main_syntax == 'liquid' - let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") - let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+') - if b:liquid_subtype == '' - let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+') - endif - if b:liquid_subtype == '' - let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$') - endif - if b:liquid_subtype == '' - let b:liquid_subtype = g:liquid_default_subtype - endif -endif - -if exists('b:liquid_subtype') && b:liquid_subtype != '' - exe 'runtime! syntax/'.b:liquid_subtype.'.vim' - unlet! b:current_syntax -endif - -syn case match - -if exists('b:liquid_subtype') && b:liquid_subtype != 'yaml' - " YAML Front Matter - syn include @liquidYamlTop syntax/yaml.vim - unlet! b:current_syntax - syn region liquidYamlHead start="\%^---$" end="^---\s*$" keepend contains=@liquidYamlTop,@Spell -endif - -if !exists('g:liquid_highlight_types') - let g:liquid_highlight_types = [] -endif - -if !exists('s:subtype') - let s:subtype = exists('b:liquid_subtype') ? b:liquid_subtype : '' - - for s:type in map(copy(g:liquid_highlight_types),'matchstr(v:val,"[^=]*$")') - if s:type =~ '\.' - let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*') - endif - exe 'syn include @liquidHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim' - unlet! b:current_syntax - endfor - unlet! s:type - - if s:subtype == '' - unlet! b:liquid_subtype - else - let b:liquid_subtype = s:subtype - endif - unlet s:subtype -endif - -syn region liquidStatement matchgroup=liquidDelimiter start="{%" end="%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend -syn region liquidExpression matchgroup=liquidDelimiter start="{{" end="}}" contains=@liquidExpression containedin=ALLBUT,@liquidExempt keepend -syn region liquidComment matchgroup=liquidDelimiter start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend - -syn cluster liquidExempt contains=liquidStatement,liquidExpression,liquidComment,@liquidStatement,liquidYamlHead -syn cluster liquidStatement contains=liquidConditional,liquidRepeat,liquidKeyword,@liquidExpression -syn cluster liquidExpression contains=liquidOperator,liquidString,liquidNumber,liquidFloat,liquidBoolean,liquidNull,liquidEmpty,liquidPipe,liquidForloop - -syn keyword liquidKeyword highlight nextgroup=liquidTypeHighlight skipwhite contained -syn keyword liquidKeyword endhighlight contained -syn region liquidHighlight start="{%\s*highlight\s\+\w\+\s*%}" end="{% endhighlight %}" keepend - -for s:type in g:liquid_highlight_types - exe 'syn match liquidTypeHighlight "\<'.matchstr(s:type,'[^=]*').'\>" contained' - exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*%}" end="{% endhighlight %}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') -endfor -unlet! s:type - -syn region liquidString matchgroup=liquidQuote start=+"+ end=+"+ contained -syn region liquidString matchgroup=liquidQuote start=+'+ end=+'+ contained -syn match liquidNumber "-\=\<\d\+\>" contained -syn match liquidFloat "-\=\<\d\+\>\.\.\@!\%(\d\+\>\)\=" contained -syn keyword liquidBoolean true false contained -syn keyword liquidNull null nil contained -syn match liquidEmpty "\" contained - -syn keyword liquidOperator and or not contained -syn match liquidPipe '|' contained skipwhite nextgroup=liquidFilter - -syn keyword liquidFilter date capitalize downcase upcase first last join sort size strip_html strip_newlines newline_to_br replace replace_first remove remove_first truncate truncatewords prepend append minus plus times divided_by contained - -syn keyword liquidConditional if elsif else endif unless endunless case when endcase ifchanged endifchanged contained -syn keyword liquidRepeat for endfor tablerow endtablerow in contained -syn match liquidRepeat "\%({%\s*\)\@<=empty\>" contained -syn keyword liquidKeyword assign cycle include with contained - -syn keyword liquidForloop forloop nextgroup=liquidForloopDot contained -syn match liquidForloopDot "\." nextgroup=liquidForloopAttribute contained -syn keyword liquidForloopAttribute length index index0 rindex rindex0 first last contained - -syn keyword liquidTablerowloop tablerowloop nextgroup=liquidTablerowloopDot contained -syn match liquidTablerowloopDot "\." nextgroup=liquidTableForloopAttribute contained -syn keyword liquidTablerowloopAttribute length index index0 col col0 index0 rindex rindex0 first last col_first col_last contained - -hi def link liquidDelimiter PreProc -hi def link liquidComment Comment -hi def link liquidTypeHighlight Type -hi def link liquidConditional Conditional -hi def link liquidRepeat Repeat -hi def link liquidKeyword Keyword -hi def link liquidOperator Operator -hi def link liquidString String -hi def link liquidQuote Delimiter -hi def link liquidNumber Number -hi def link liquidFloat Float -hi def link liquidEmpty liquidNull -hi def link liquidNull liquidBoolean -hi def link liquidBoolean Boolean -hi def link liquidFilter Function -hi def link liquidForloop Identifier -hi def link liquidForloopAttribute Identifier - -let b:current_syntax = 'liquid' - -if exists('main_syntax') && main_syntax == 'liquid' - unlet main_syntax -endif diff --git a/share/vim/vim73/syntax/lisp.vim b/share/vim/vim73/syntax/lisp.vim deleted file mode 100644 index fd44f607..00000000 --- a/share/vim/vim73/syntax/lisp.vim +++ /dev/null @@ -1,625 +0,0 @@ -" Vim syntax file -" Language: Lisp -" Maintainer: Dr. Charles E. Campbell, Jr. -" Last Change: Mar 05, 2009 -" Version: 21 -" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax -" -" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols -" taken from the HyperSpec -" Clisp additions courtesy of http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/emacs/lisp.vim - -" --------------------------------------------------------------------- -" Load Once: {{{1 -" For vim-version 5.x: Clear all syntax items -" For vim-version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if version >= 600 - setlocal iskeyword=38,42,43,45,47-58,60-62,64-90,97-122,_ -else - set iskeyword=38,42,43,45,47-58,60-62,64-90,97-122,_ -endif - -if exists("g:lispsyntax_ignorecase") || exists("g:lispsyntax_clisp") - set ignorecase -endif - -" --------------------------------------------------------------------- -" Clusters: {{{1 -syn cluster lispAtomCluster contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite -syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispSpecial,lispSymbol,lispVar,lispLeadWhite -if exists("g:lisp_instring") - syn cluster lispListCluster contains=@lispBaseListCluster,lispString,lispInString,lispInStringString -else - syn cluster lispListCluster contains=@lispBaseListCluster,lispString -endif - -syn case ignore - -" --------------------------------------------------------------------- -" Lists: {{{1 -syn match lispSymbol contained ![^()'`,"; \t]\+! -syn match lispBarSymbol contained !|..\{-}|! -if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 - syn region lispParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1 - syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2 - syn region lispParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen3 - syn region lispParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen4 - syn region lispParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen5 - syn region lispParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen6 - syn region lispParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen7 - syn region lispParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen8 - syn region lispParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen9 - syn region lispParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen0 -else - syn region lispList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=@lispListCluster - syn region lispBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=@lispListCluster -endif - -" --------------------------------------------------------------------- -" Atoms: {{{1 -syn match lispAtomMark "'" -syn match lispAtom "'("me=e-1 contains=lispAtomMark nextgroup=lispAtomList -syn match lispAtom "'[^ \t()]\+" contains=lispAtomMark -syn match lispAtomBarSymbol !'|..\{-}|! contains=lispAtomMark -syn region lispAtom start=+'"+ skip=+\\"+ end=+"+ -syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString,lispSpecial -syn match lispAtomNmbr contained "\<\d\+" -syn match lispLeadWhite contained "^\s\+" - -" --------------------------------------------------------------------- -" Standard Lisp Functions and Macros: {{{1 -syn keyword lispFunc * find-method pprint-indent -syn keyword lispFunc ** find-package pprint-linear -syn keyword lispFunc *** find-restart pprint-logical-block -syn keyword lispFunc + find-symbol pprint-newline -syn keyword lispFunc ++ finish-output pprint-pop -syn keyword lispFunc +++ first pprint-tab -syn keyword lispFunc - fixnum pprint-tabular -syn keyword lispFunc / flet prin1 -syn keyword lispFunc // float prin1-to-string -syn keyword lispFunc /// float-digits princ -syn keyword lispFunc /= float-precision princ-to-string -syn keyword lispFunc 1+ float-radix print -syn keyword lispFunc 1- float-sign print-not-readable -syn keyword lispFunc < floating-point-inexact print-not-readable-object -syn keyword lispFunc <= floating-point-invalid-operation print-object -syn keyword lispFunc = floating-point-overflow print-unreadable-object -syn keyword lispFunc > floating-point-underflow probe-file -syn keyword lispFunc >= floatp proclaim -syn keyword lispFunc abort floor prog -syn keyword lispFunc abs fmakunbound prog* -syn keyword lispFunc access force-output prog1 -syn keyword lispFunc acons format prog2 -syn keyword lispFunc acos formatter progn -syn keyword lispFunc acosh fourth program-error -syn keyword lispFunc add-method fresh-line progv -syn keyword lispFunc adjoin fround provide -syn keyword lispFunc adjust-array ftruncate psetf -syn keyword lispFunc adjustable-array-p ftype psetq -syn keyword lispFunc allocate-instance funcall push -syn keyword lispFunc alpha-char-p function pushnew -syn keyword lispFunc alphanumericp function-keywords putprop -syn keyword lispFunc and function-lambda-expression quote -syn keyword lispFunc append functionp random -syn keyword lispFunc apply gbitp random-state -syn keyword lispFunc applyhook gcd random-state-p -syn keyword lispFunc apropos generic-function rassoc -syn keyword lispFunc apropos-list gensym rassoc-if -syn keyword lispFunc aref gentemp rassoc-if-not -syn keyword lispFunc arithmetic-error get ratio -syn keyword lispFunc arithmetic-error-operands get-decoded-time rational -syn keyword lispFunc arithmetic-error-operation get-dispatch-macro-character rationalize -syn keyword lispFunc array get-internal-real-time rationalp -syn keyword lispFunc array-dimension get-internal-run-time read -syn keyword lispFunc array-dimension-limit get-macro-character read-byte -syn keyword lispFunc array-dimensions get-output-stream-string read-char -syn keyword lispFunc array-displacement get-properties read-char-no-hang -syn keyword lispFunc array-element-type get-setf-expansion read-delimited-list -syn keyword lispFunc array-has-fill-pointer-p get-setf-method read-eval-print -syn keyword lispFunc array-in-bounds-p get-universal-time read-from-string -syn keyword lispFunc array-rank getf read-line -syn keyword lispFunc array-rank-limit gethash read-preserving-whitespace -syn keyword lispFunc array-row-major-index go read-sequence -syn keyword lispFunc array-total-size graphic-char-p reader-error -syn keyword lispFunc array-total-size-limit handler-bind readtable -syn keyword lispFunc arrayp handler-case readtable-case -syn keyword lispFunc ash hash-table readtablep -syn keyword lispFunc asin hash-table-count real -syn keyword lispFunc asinh hash-table-p realp -syn keyword lispFunc assert hash-table-rehash-size realpart -syn keyword lispFunc assoc hash-table-rehash-threshold reduce -syn keyword lispFunc assoc-if hash-table-size reinitialize-instance -syn keyword lispFunc assoc-if-not hash-table-test rem -syn keyword lispFunc atan host-namestring remf -syn keyword lispFunc atanh identity remhash -syn keyword lispFunc atom if remove -syn keyword lispFunc base-char if-exists remove-duplicates -syn keyword lispFunc base-string ignorable remove-if -syn keyword lispFunc bignum ignore remove-if-not -syn keyword lispFunc bit ignore-errors remove-method -syn keyword lispFunc bit-and imagpart remprop -syn keyword lispFunc bit-andc1 import rename-file -syn keyword lispFunc bit-andc2 in-package rename-package -syn keyword lispFunc bit-eqv in-package replace -syn keyword lispFunc bit-ior incf require -syn keyword lispFunc bit-nand initialize-instance rest -syn keyword lispFunc bit-nor inline restart -syn keyword lispFunc bit-not input-stream-p restart-bind -syn keyword lispFunc bit-orc1 inspect restart-case -syn keyword lispFunc bit-orc2 int-char restart-name -syn keyword lispFunc bit-vector integer return -syn keyword lispFunc bit-vector-p integer-decode-float return-from -syn keyword lispFunc bit-xor integer-length revappend -syn keyword lispFunc block integerp reverse -syn keyword lispFunc boole interactive-stream-p room -syn keyword lispFunc boole-1 intern rotatef -syn keyword lispFunc boole-2 internal-time-units-per-second round -syn keyword lispFunc boole-and intersection row-major-aref -syn keyword lispFunc boole-andc1 invalid-method-error rplaca -syn keyword lispFunc boole-andc2 invoke-debugger rplacd -syn keyword lispFunc boole-c1 invoke-restart safety -syn keyword lispFunc boole-c2 invoke-restart-interactively satisfies -syn keyword lispFunc boole-clr isqrt sbit -syn keyword lispFunc boole-eqv keyword scale-float -syn keyword lispFunc boole-ior keywordp schar -syn keyword lispFunc boole-nand labels search -syn keyword lispFunc boole-nor lambda second -syn keyword lispFunc boole-orc1 lambda-list-keywords sequence -syn keyword lispFunc boole-orc2 lambda-parameters-limit serious-condition -syn keyword lispFunc boole-set last set -syn keyword lispFunc boole-xor lcm set-char-bit -syn keyword lispFunc boolean ldb set-difference -syn keyword lispFunc both-case-p ldb-test set-dispatch-macro-character -syn keyword lispFunc boundp ldiff set-exclusive-or -syn keyword lispFunc break least-negative-double-float set-macro-character -syn keyword lispFunc broadcast-stream least-negative-long-float set-pprint-dispatch -syn keyword lispFunc broadcast-stream-streams least-negative-normalized-double-float set-syntax-from-char -syn keyword lispFunc built-in-class least-negative-normalized-long-float setf -syn keyword lispFunc butlast least-negative-normalized-short-float setq -syn keyword lispFunc byte least-negative-normalized-single-float seventh -syn keyword lispFunc byte-position least-negative-short-float shadow -syn keyword lispFunc byte-size least-negative-single-float shadowing-import -syn keyword lispFunc call-arguments-limit least-positive-double-float shared-initialize -syn keyword lispFunc call-method least-positive-long-float shiftf -syn keyword lispFunc call-next-method least-positive-normalized-double-float short-float -syn keyword lispFunc capitalize least-positive-normalized-long-float short-float-epsilon -syn keyword lispFunc car least-positive-normalized-short-float short-float-negative-epsilon -syn keyword lispFunc case least-positive-normalized-single-float short-site-name -syn keyword lispFunc catch least-positive-short-float signal -syn keyword lispFunc ccase least-positive-single-float signed-byte -syn keyword lispFunc cdr length signum -syn keyword lispFunc ceiling let simple-condition -syn keyword lispFunc cell-error let* simple-array -syn keyword lispFunc cell-error-name lisp simple-base-string -syn keyword lispFunc cerror lisp-implementation-type simple-bit-vector -syn keyword lispFunc change-class lisp-implementation-version simple-bit-vector-p -syn keyword lispFunc char list simple-condition-format-arguments -syn keyword lispFunc char-bit list* simple-condition-format-control -syn keyword lispFunc char-bits list-all-packages simple-error -syn keyword lispFunc char-bits-limit list-length simple-string -syn keyword lispFunc char-code listen simple-string-p -syn keyword lispFunc char-code-limit listp simple-type-error -syn keyword lispFunc char-control-bit load simple-vector -syn keyword lispFunc char-downcase load-logical-pathname-translations simple-vector-p -syn keyword lispFunc char-equal load-time-value simple-warning -syn keyword lispFunc char-font locally sin -syn keyword lispFunc char-font-limit log single-flaot-epsilon -syn keyword lispFunc char-greaterp logand single-float -syn keyword lispFunc char-hyper-bit logandc1 single-float-epsilon -syn keyword lispFunc char-int logandc2 single-float-negative-epsilon -syn keyword lispFunc char-lessp logbitp sinh -syn keyword lispFunc char-meta-bit logcount sixth -syn keyword lispFunc char-name logeqv sleep -syn keyword lispFunc char-not-equal logical-pathname slot-boundp -syn keyword lispFunc char-not-greaterp logical-pathname-translations slot-exists-p -syn keyword lispFunc char-not-lessp logior slot-makunbound -syn keyword lispFunc char-super-bit lognand slot-missing -syn keyword lispFunc char-upcase lognor slot-unbound -syn keyword lispFunc char/= lognot slot-value -syn keyword lispFunc char< logorc1 software-type -syn keyword lispFunc char<= logorc2 software-version -syn keyword lispFunc char= logtest some -syn keyword lispFunc char> logxor sort -syn keyword lispFunc char>= long-float space -syn keyword lispFunc character long-float-epsilon special -syn keyword lispFunc characterp long-float-negative-epsilon special-form-p -syn keyword lispFunc check-type long-site-name special-operator-p -syn keyword lispFunc cis loop speed -syn keyword lispFunc class loop-finish sqrt -syn keyword lispFunc class-name lower-case-p stable-sort -syn keyword lispFunc class-of machine-instance standard -syn keyword lispFunc clear-input machine-type standard-char -syn keyword lispFunc clear-output machine-version standard-char-p -syn keyword lispFunc close macro-function standard-class -syn keyword lispFunc clrhash macroexpand standard-generic-function -syn keyword lispFunc code-char macroexpand-1 standard-method -syn keyword lispFunc coerce macroexpand-l standard-object -syn keyword lispFunc commonp macrolet step -syn keyword lispFunc compilation-speed make-array storage-condition -syn keyword lispFunc compile make-array store-value -syn keyword lispFunc compile-file make-broadcast-stream stream -syn keyword lispFunc compile-file-pathname make-char stream-element-type -syn keyword lispFunc compiled-function make-concatenated-stream stream-error -syn keyword lispFunc compiled-function-p make-condition stream-error-stream -syn keyword lispFunc compiler-let make-dispatch-macro-character stream-external-format -syn keyword lispFunc compiler-macro make-echo-stream streamp -syn keyword lispFunc compiler-macro-function make-hash-table streamup -syn keyword lispFunc complement make-instance string -syn keyword lispFunc complex make-instances-obsolete string-capitalize -syn keyword lispFunc complexp make-list string-char -syn keyword lispFunc compute-applicable-methods make-load-form string-char-p -syn keyword lispFunc compute-restarts make-load-form-saving-slots string-downcase -syn keyword lispFunc concatenate make-method string-equal -syn keyword lispFunc concatenated-stream make-package string-greaterp -syn keyword lispFunc concatenated-stream-streams make-pathname string-left-trim -syn keyword lispFunc cond make-random-state string-lessp -syn keyword lispFunc condition make-sequence string-not-equal -syn keyword lispFunc conjugate make-string string-not-greaterp -syn keyword lispFunc cons make-string-input-stream string-not-lessp -syn keyword lispFunc consp make-string-output-stream string-right-strim -syn keyword lispFunc constantly make-symbol string-right-trim -syn keyword lispFunc constantp make-synonym-stream string-stream -syn keyword lispFunc continue make-two-way-stream string-trim -syn keyword lispFunc control-error makunbound string-upcase -syn keyword lispFunc copy-alist map string/= -syn keyword lispFunc copy-list map-into string< -syn keyword lispFunc copy-pprint-dispatch mapc string<= -syn keyword lispFunc copy-readtable mapcan string= -syn keyword lispFunc copy-seq mapcar string> -syn keyword lispFunc copy-structure mapcon string>= -syn keyword lispFunc copy-symbol maphash stringp -syn keyword lispFunc copy-tree mapl structure -syn keyword lispFunc cos maplist structure-class -syn keyword lispFunc cosh mask-field structure-object -syn keyword lispFunc count max style-warning -syn keyword lispFunc count-if member sublim -syn keyword lispFunc count-if-not member-if sublis -syn keyword lispFunc ctypecase member-if-not subseq -syn keyword lispFunc debug merge subsetp -syn keyword lispFunc decf merge-pathname subst -syn keyword lispFunc declaim merge-pathnames subst-if -syn keyword lispFunc declaration method subst-if-not -syn keyword lispFunc declare method-combination substitute -syn keyword lispFunc decode-float method-combination-error substitute-if -syn keyword lispFunc decode-universal-time method-qualifiers substitute-if-not -syn keyword lispFunc defclass min subtypep -syn keyword lispFunc defconstant minusp svref -syn keyword lispFunc defgeneric mismatch sxhash -syn keyword lispFunc define-compiler-macro mod symbol -syn keyword lispFunc define-condition most-negative-double-float symbol-function -syn keyword lispFunc define-method-combination most-negative-fixnum symbol-macrolet -syn keyword lispFunc define-modify-macro most-negative-long-float symbol-name -syn keyword lispFunc define-setf-expander most-negative-short-float symbol-package -syn keyword lispFunc define-setf-method most-negative-single-float symbol-plist -syn keyword lispFunc define-symbol-macro most-positive-double-float symbol-value -syn keyword lispFunc defmacro most-positive-fixnum symbolp -syn keyword lispFunc defmethod most-positive-long-float synonym-stream -syn keyword lispFunc defpackage most-positive-short-float synonym-stream-symbol -syn keyword lispFunc defparameter most-positive-single-float sys -syn keyword lispFunc defsetf muffle-warning system -syn keyword lispFunc defstruct multiple-value-bind t -syn keyword lispFunc deftype multiple-value-call tagbody -syn keyword lispFunc defun multiple-value-list tailp -syn keyword lispFunc defvar multiple-value-prog1 tan -syn keyword lispFunc delete multiple-value-seteq tanh -syn keyword lispFunc delete-duplicates multiple-value-setq tenth -syn keyword lispFunc delete-file multiple-values-limit terpri -syn keyword lispFunc delete-if name-char the -syn keyword lispFunc delete-if-not namestring third -syn keyword lispFunc delete-package nbutlast throw -syn keyword lispFunc denominator nconc time -syn keyword lispFunc deposit-field next-method-p trace -syn keyword lispFunc describe nil translate-logical-pathname -syn keyword lispFunc describe-object nintersection translate-pathname -syn keyword lispFunc destructuring-bind ninth tree-equal -syn keyword lispFunc digit-char no-applicable-method truename -syn keyword lispFunc digit-char-p no-next-method truncase -syn keyword lispFunc directory not truncate -syn keyword lispFunc directory-namestring notany two-way-stream -syn keyword lispFunc disassemble notevery two-way-stream-input-stream -syn keyword lispFunc division-by-zero notinline two-way-stream-output-stream -syn keyword lispFunc do nreconc type -syn keyword lispFunc do* nreverse type-error -syn keyword lispFunc do-all-symbols nset-difference type-error-datum -syn keyword lispFunc do-exeternal-symbols nset-exclusive-or type-error-expected-type -syn keyword lispFunc do-external-symbols nstring type-of -syn keyword lispFunc do-symbols nstring-capitalize typecase -syn keyword lispFunc documentation nstring-downcase typep -syn keyword lispFunc dolist nstring-upcase unbound-slot -syn keyword lispFunc dotimes nsublis unbound-slot-instance -syn keyword lispFunc double-float nsubst unbound-variable -syn keyword lispFunc double-float-epsilon nsubst-if undefined-function -syn keyword lispFunc double-float-negative-epsilon nsubst-if-not unexport -syn keyword lispFunc dpb nsubstitute unintern -syn keyword lispFunc dribble nsubstitute-if union -syn keyword lispFunc dynamic-extent nsubstitute-if-not unless -syn keyword lispFunc ecase nth unread -syn keyword lispFunc echo-stream nth-value unread-char -syn keyword lispFunc echo-stream-input-stream nthcdr unsigned-byte -syn keyword lispFunc echo-stream-output-stream null untrace -syn keyword lispFunc ed number unuse-package -syn keyword lispFunc eighth numberp unwind-protect -syn keyword lispFunc elt numerator update-instance-for-different-class -syn keyword lispFunc encode-universal-time nunion update-instance-for-redefined-class -syn keyword lispFunc end-of-file oddp upgraded-array-element-type -syn keyword lispFunc endp open upgraded-complex-part-type -syn keyword lispFunc enough-namestring open-stream-p upper-case-p -syn keyword lispFunc ensure-directories-exist optimize use-package -syn keyword lispFunc ensure-generic-function or use-value -syn keyword lispFunc eq otherwise user -syn keyword lispFunc eql output-stream-p user-homedir-pathname -syn keyword lispFunc equal package values -syn keyword lispFunc equalp package-error values-list -syn keyword lispFunc error package-error-package vector -syn keyword lispFunc etypecase package-name vector-pop -syn keyword lispFunc eval package-nicknames vector-push -syn keyword lispFunc eval-when package-shadowing-symbols vector-push-extend -syn keyword lispFunc evalhook package-use-list vectorp -syn keyword lispFunc evenp package-used-by-list warn -syn keyword lispFunc every packagep warning -syn keyword lispFunc exp pairlis when -syn keyword lispFunc export parse-error wild-pathname-p -syn keyword lispFunc expt parse-integer with-accessors -syn keyword lispFunc extended-char parse-namestring with-compilation-unit -syn keyword lispFunc fboundp pathname with-condition-restarts -syn keyword lispFunc fceiling pathname-device with-hash-table-iterator -syn keyword lispFunc fdefinition pathname-directory with-input-from-string -syn keyword lispFunc ffloor pathname-host with-open-file -syn keyword lispFunc fifth pathname-match-p with-open-stream -syn keyword lispFunc file-author pathname-name with-output-to-string -syn keyword lispFunc file-error pathname-type with-package-iterator -syn keyword lispFunc file-error-pathname pathname-version with-simple-restart -syn keyword lispFunc file-length pathnamep with-slots -syn keyword lispFunc file-namestring peek-char with-standard-io-syntax -syn keyword lispFunc file-position phase write -syn keyword lispFunc file-stream pi write-byte -syn keyword lispFunc file-string-length plusp write-char -syn keyword lispFunc file-write-date pop write-line -syn keyword lispFunc fill position write-sequence -syn keyword lispFunc fill-pointer position-if write-string -syn keyword lispFunc find position-if-not write-to-string -syn keyword lispFunc find-all-symbols pprint y-or-n-p -syn keyword lispFunc find-class pprint-dispatch yes-or-no-p -syn keyword lispFunc find-if pprint-exit-if-list-exhausted zerop -syn keyword lispFunc find-if-not pprint-fill - -syn match lispFunc "\" -if exists("g:lispsyntax_clisp") - " CLISP FFI: - syn match lispFunc "\<\(ffi:\)\?with-c-\(place\|var\)\>" - syn match lispFunc "\<\(ffi:\)\?with-foreign-\(object\|string\)\>" - syn match lispFunc "\<\(ffi:\)\?default-foreign-\(language\|library\)\>" - syn match lispFunc "\<\([us]_\?\)\?\(element\|deref\|cast\|slot\|validp\)\>" - syn match lispFunc "\<\(ffi:\)\?set-foreign-pointer\>" - syn match lispFunc "\<\(ffi:\)\?allocate-\(deep\|shallow\)\>" - syn match lispFunc "\<\(ffi:\)\?c-lines\>" - syn match lispFunc "\<\(ffi:\)\?foreign-\(value\|free\|variable\|function\|object\)\>" - syn match lispFunc "\<\(ffi:\)\?foreign-address\(-null\|unsigned\)\?\>" - syn match lispFunc "\<\(ffi:\)\?undigned-foreign-address\>" - syn match lispFunc "\<\(ffi:\)\?c-var-\(address\|object\)\>" - syn match lispFunc "\<\(ffi:\)\?typeof\>" - syn match lispFunc "\<\(ffi:\)\?\(bit\)\?sizeof\>" -" CLISP Macros, functions et al: - syn match lispFunc "\<\(ext:\)\?with-collect\>" - syn match lispFunc "\<\(ext:\)\?letf\*\?\>" - syn match lispFunc "\<\(ext:\)\?finalize\>\>" - syn match lispFunc "\<\(ext:\)\?memoized\>" - syn match lispFunc "\<\(ext:\)\?getenv\>" - syn match lispFunc "\<\(ext:\)\?convert-string-\(to\|from\)-bytes\>" - syn match lispFunc "\<\(ext:\)\?ethe\>" - syn match lispFunc "\<\(ext:\)\?with-gensyms\>" - syn match lispFunc "\<\(ext:\)\?open-http\>" - syn match lispFunc "\<\(ext:\)\?string-concat\>" - syn match lispFunc "\<\(ext:\)\?with-http-\(in\|out\)put\>" - syn match lispFunc "\<\(ext:\)\?with-html-output\>" - syn match lispFunc "\<\(ext:\)\?expand-form\>" - syn match lispFunc "\<\(ext:\)\?\(without-\)\?package-lock\>" - syn match lispFunc "\<\(ext:\)\?re-export\>" - syn match lispFunc "\<\(ext:\)\?saveinitmem\>" - syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(integer\|float\)\>" - syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(char\|byte\)-sequence\>" - syn match lispFunc "\<\(custom:\)\?\*system-package-list\*\>" - syn match lispFunc "\<\(custom:\)\?\*ansi\*\>" -endif - -" --------------------------------------------------------------------- -" Lisp Keywords (modifiers): {{{1 -syn keyword lispKey :abort :from-end :overwrite -syn keyword lispKey :adjustable :gensym :predicate -syn keyword lispKey :append :host :preserve-whitespace -syn keyword lispKey :array :if-does-not-exist :pretty -syn keyword lispKey :base :if-exists :print -syn keyword lispKey :case :include :print-function -syn keyword lispKey :circle :index :probe -syn keyword lispKey :conc-name :inherited :radix -syn keyword lispKey :constructor :initial-contents :read-only -syn keyword lispKey :copier :initial-element :rehash-size -syn keyword lispKey :count :initial-offset :rehash-threshold -syn keyword lispKey :create :initial-value :rename -syn keyword lispKey :default :input :rename-and-delete -syn keyword lispKey :defaults :internal :size -syn keyword lispKey :device :io :start -syn keyword lispKey :direction :junk-allowed :start1 -syn keyword lispKey :directory :key :start2 -syn keyword lispKey :displaced-index-offset :length :stream -syn keyword lispKey :displaced-to :level :supersede -syn keyword lispKey :element-type :name :test -syn keyword lispKey :end :named :test-not -syn keyword lispKey :end1 :new-version :type -syn keyword lispKey :end2 :nicknames :use -syn keyword lispKey :error :output :verbose -syn keyword lispKey :escape :output-file :version -syn keyword lispKey :external -" defpackage arguments -syn keyword lispKey :documentation :shadowing-import-from :modern :export -syn keyword lispKey :case-sensitive :case-inverted :shadow :import-from :intern -" lambda list keywords -syn keyword lispKey &allow-other-keys &aux &body -syn keyword lispKey &environment &key &optional &rest &whole -" make-array argument -syn keyword lispKey :fill-pointer -" readtable-case values -syn keyword lispKey :upcase :downcase :preserve :invert -" eval-when situations -syn keyword lispKey :load-toplevel :compile-toplevel :execute -" ANSI Extended LOOP: -syn keyword lispKey :while :until :for :do :if :then :else :when :unless :in -syn keyword lispKey :across :finally :collect :nconc :maximize :minimize :sum -syn keyword lispKey :and :with :initially :append :into :count :end :repeat -syn keyword lispKey :always :never :thereis :from :to :upto :downto :below -syn keyword lispKey :above :by :on :being :each :the :hash-key :hash-keys -syn keyword lispKey :hash-value :hash-values :using :of-type :upfrom :downfrom -if exists("g:lispsyntax_clisp") - " CLISP FFI: - syn keyword lispKey :arguments :return-type :library :full :malloc-free - syn keyword lispKey :none :alloca :in :out :in-out :stdc-stdcall :stdc :c - syn keyword lispKey :language :built-in :typedef :external - syn keyword lispKey :fini :init-once :init-always -endif - -" --------------------------------------------------------------------- -" Standard Lisp Variables: {{{1 -syn keyword lispVar *applyhook* *load-pathname* *print-pprint-dispatch* -syn keyword lispVar *break-on-signals* *load-print* *print-pprint-dispatch* -syn keyword lispVar *break-on-signals* *load-truename* *print-pretty* -syn keyword lispVar *break-on-warnings* *load-verbose* *print-radix* -syn keyword lispVar *compile-file-pathname* *macroexpand-hook* *print-readably* -syn keyword lispVar *compile-file-pathname* *modules* *print-right-margin* -syn keyword lispVar *compile-file-truename* *package* *print-right-margin* -syn keyword lispVar *compile-file-truename* *print-array* *query-io* -syn keyword lispVar *compile-print* *print-base* *random-state* -syn keyword lispVar *compile-verbose* *print-case* *read-base* -syn keyword lispVar *compile-verbose* *print-circle* *read-default-float-format* -syn keyword lispVar *debug-io* *print-escape* *read-eval* -syn keyword lispVar *debugger-hook* *print-gensym* *read-suppress* -syn keyword lispVar *default-pathname-defaults* *print-length* *readtable* -syn keyword lispVar *error-output* *print-level* *standard-input* -syn keyword lispVar *evalhook* *print-lines* *standard-output* -syn keyword lispVar *features* *print-miser-width* *terminal-io* -syn keyword lispVar *gensym-counter* *print-miser-width* *trace-output* - -" --------------------------------------------------------------------- -" Strings: {{{1 -syn region lispString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell -if exists("g:lisp_instring") - syn region lispInString keepend matchgroup=Delimiter start=+"(+rs=s+1 skip=+|.\{-}|+ matchgroup=Delimiter end=+)"+ contains=@lispBaseListCluster,lispInStringString - syn region lispInStringString start=+\\"+ skip=+\\\\+ end=+\\"+ contained -endif - -" --------------------------------------------------------------------- -" Shared with Xlisp, Declarations, Macros, Functions: {{{1 -syn keyword lispDecl defmacro do-all-symbols labels -syn keyword lispDecl defsetf do-external-symbols let -syn keyword lispDecl deftype do-symbols locally -syn keyword lispDecl defun dotimes macrolet -syn keyword lispDecl do* flet multiple-value-bind -if exists("g:lispsyntax_clisp") - " CLISP FFI: - syn match lispDecl "\<\(ffi:\)\?def-c-\(var\|const\|enum\|type\|struct\)\>" - syn match lispDecl "\<\(ffi:\)\?def-call-\(out\|in\)\>" - syn match lispDecl "\<\(ffi:\)\?c-\(function\|struct\|pointer\|string\)\>" - syn match lispDecl "\<\(ffi:\)\?c-ptr\(-null\)\?\>" - syn match lispDecl "\<\(ffi:\)\?c-array\(-ptr\|-max\)\?\>" - syn match lispDecl "\<\(ffi:\)\?[us]\?\(char\|short\|int\|long\)\>" - syn match lispDecl "\<\(win32:\|w32\)\?d\?word\>" - syn match lispDecl "\<\([us]_\?\)\?int\(8\|16\|32\|64\)\(_t\)\?\>" - syn keyword lispDecl size_t off_t time_t handle -endif - -" --------------------------------------------------------------------- -" Numbers: supporting integers and floating point numbers {{{1 -syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\=" -syn match lispNumber "-\=\(\d\+/\d\+\)" - -syn match lispSpecial "\*\w[a-z_0-9-]*\*" -syn match lispSpecial !#|[^()'`,"; \t]\+|#! -syn match lispSpecial !#x\x\+! -syn match lispSpecial !#o\o\+! -syn match lispSpecial !#b[01]\+! -syn match lispSpecial !#\\[ -}\~]! -syn match lispSpecial !#[':][^()'`,"; \t]\+! -syn match lispSpecial !#([^()'`,"; \t]\+)! -syn match lispSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)! -syn match lispSpecial "\<+[a-zA-Z_][a-zA-Z_0-9-]*+\>" - -syn match lispConcat "\s\.\s" -syn match lispParenError ")" - -" --------------------------------------------------------------------- -" Comments: {{{1 -syn cluster lispCommentGroup contains=lispTodo,@Spell -syn match lispComment ";.*$" contains=@lispCommentGroup -syn region lispCommentRegion start="#|" end="|#" contains=lispCommentRegion,@lispCommentGroup -syn keyword lispTodo contained combak combak: todo todo: - -" --------------------------------------------------------------------- -" Synchronization: {{{1 -syn sync lines=100 - -" --------------------------------------------------------------------- -" Define Highlighting: {{{1 -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 - command -nargs=+ HiLink hi def link - - HiLink lispCommentRegion lispComment - HiLink lispAtomNmbr lispNumber - HiLink lispAtomMark lispMark - HiLink lispInStringString lispString - - HiLink lispAtom Identifier - HiLink lispAtomBarSymbol Special - HiLink lispBarSymbol Special - HiLink lispComment Comment - HiLink lispConcat Statement - HiLink lispDecl Statement - HiLink lispFunc Statement - HiLink lispKey Type - HiLink lispMark Delimiter - HiLink lispNumber Number - HiLink lispParenError Error - HiLink lispSpecial Type - HiLink lispString String - HiLink lispTodo Todo - HiLink lispVar Statement - - if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 - if &bg == "dark" - hi def hlLevel0 ctermfg=red guifg=red1 - hi def hlLevel1 ctermfg=yellow guifg=orange1 - hi def hlLevel2 ctermfg=green guifg=yellow1 - hi def hlLevel3 ctermfg=cyan guifg=greenyellow - hi def hlLevel4 ctermfg=magenta guifg=green1 - hi def hlLevel5 ctermfg=red guifg=springgreen1 - hi def hlLevel6 ctermfg=yellow guifg=cyan1 - hi def hlLevel7 ctermfg=green guifg=slateblue1 - hi def hlLevel8 ctermfg=cyan guifg=magenta1 - hi def hlLevel9 ctermfg=magenta guifg=purple1 - else - hi def hlLevel0 ctermfg=red guifg=red3 - hi def hlLevel1 ctermfg=darkyellow guifg=orangered3 - hi def hlLevel2 ctermfg=darkgreen guifg=orange2 - hi def hlLevel3 ctermfg=blue guifg=yellow3 - hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4 - hi def hlLevel5 ctermfg=red guifg=green4 - hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3 - hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4 - hi def hlLevel8 ctermfg=blue guifg=darkslateblue - hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet - endif - endif - - delcommand HiLink -endif - -let b:current_syntax = "lisp" - -" --------------------------------------------------------------------- -" vim: ts=8 nowrap fdm=marker diff --git a/share/vim/vim73/syntax/logindefs.vim b/share/vim/vim73/syntax/logindefs.vim deleted file mode 100644 index 7c2b122a..00000000 --- a/share/vim/vim73/syntax/logindefs.vim +++ /dev/null @@ -1,94 +0,0 @@ -" Vim syntax file -" Language: login.defs(5) configuration file -" Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -syn keyword logindefsTodo contained TODO FIXME XXX NOTE - -syn region logindefsComment display oneline start='^\s*#' end='$' - \ contains=logindefsTodo,@Spell - -syn match logindefsString contained '[[:graph:]]\+' - -syn match logindefsPath contained '[[:graph:]]\+' - -syn match logindefsPaths contained '[[:graph:]]\+' - \ nextgroup=logindefsPathDelim - -syn match logindefsPathDelim contained ':' nextgroup=logindefsPaths - -syn keyword logindefsBoolean contained yes no - -syn match logindefsDecimal contained '\<\d\+\>' - -syn match logindefsOctal contained display '\<0\o\+\>' - \ contains=logindefsOctalZero -syn match logindefsOctalZero contained display '\<0' -syn match logindefsOctalError contained display '\<0\o*[89]\d*\>' - -syn match logindefsHex contained display '\<0x\x\+\>' - -syn cluster logindefsNumber contains=logindefsDecimal,logindefsOctal, - \ logindefsOctalError,logindefsHex - -syn match logindefsBegin display '^' - \ nextgroup=logindefsKeyword,logindefsComment - \ skipwhite - -syn keyword logindefsKeyword contained CHFN_AUTH CLOSE_SESSIONS CREATE_HOME - \ DEFAULT_HOME FAILLOG_ENAB LASTLOG_ENAB - \ LOG_OK_LOGINS LOG_UNKFAIL_ENAB MAIL_CHECK_ENAB - \ MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB - \ PASS_ALWAYS_WARN PORTTIME_CHECKS_ENAB - \ QUOTAS_ENAB SU_WHEEL_ONLY SYSLOG_SG_ENAB - \ SYSLOG_SU_ENAB USERGROUPS_ENAB - \ nextgroup=logindefsBoolean skipwhite - -syn keyword logindefsKeyword contained CHFN_RESTRICT CONSOLE CONSOLE_GROUPS - \ ENV_TZ ENV_HZ FAKE_SHELL SU_NAME LOGIN_STRING - \ NOLOGIN_STR TTYGROUP USERDEL_CMD - \ nextgroup=logindefsString skipwhite - -syn keyword logindefsKeyword contained ENVIRON_FILE FTMP_FILE HUSHLOGIN_FILE - \ ISSUE_FILE MAIL_DIR MAIL_FILE NOLOGINS_FILE - \ NOLOGINS_FILE TTYTYPE_FILE QMAIL_DIR - \ SULOG_FILE - \ nextgroup=logindefsPath skipwhite - -syn keyword logindefsKeyword contained CRACKLIB_DICTPATH ENV_PATH - \ ENV_ROOTPATH ENV_SUPATH MOTD_FILE - \ nextgroup=logindefsPaths skipwhite - -syn keyword logindefsKeyword contained ERASECHAR FAIL_DELAY GETPASS_ASTERISKS - \ GID_MAX GID_MIN KILLCHAR LOGIN_RETRIES - \ LOGIN_TIMEOUT PASS_CHANGE_TRIES PASS_MAX_DAYS - \ PASS_MAX_LEN PASS_MIN_DAYS PASS_MIN_LEN - \ PASS_WARN_AGE TTYPERM UID_MAX UID_MIN ULIMIT - \ UMASK - \ nextgroup=@logindefsNumber skipwhite - -hi def link logindefsTodo Todo -hi def link logindefsComment Comment -hi def link logindefsString String -hi def link logindefsPath String -hi def link logindefsPaths logindefsPath -hi def link logindefsPathDelim Delimiter -hi def link logindefsBoolean Boolean -hi def link logindefsDecimal Number -hi def link logindefsOctal Number -hi def link logindefsOctalZero PreProc -hi def link logindefsOctalError Error -hi def link logindefsHex Number -hi def link logindefsKeyword Keyword - -let b:current_syntax = "logindefs" - -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/share/vim/vim73/syntax/logtalk.vim b/share/vim/vim73/syntax/logtalk.vim deleted file mode 100644 index 7d90cd88..00000000 --- a/share/vim/vim73/syntax/logtalk.vim +++ /dev/null @@ -1,398 +0,0 @@ -" Vim syntax file -" -" Language: Logtalk -" Maintainer: Paulo Moura -" Last Change: Oct 31, 2008 - - -" Quit when a syntax file was already loaded: - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - - -" Logtalk is case sensitive: - -syn case match - - -" Logtalk variables - -syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>" - - -" Logtalk clause functor - -syn match logtalkOperator ":-" - - -" Logtalk quoted atoms and strings - -syn region logtalkString start=+"+ skip=+\\"+ end=+"+ -syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+ contains=logtalkEscapeSequence - -syn match logtalkEscapeSequence contained "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)" - - -" Logtalk message sending operators - -syn match logtalkOperator "::" -syn match logtalkOperator ":" -syn match logtalkOperator "\^\^" - - -" Logtalk external call - -syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL - - -" Logtalk opening entity directives - -syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment -syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment -syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment - - -" Logtalk closing entity directives - -syn match logtalkCloseEntityDir ":- end_object\." -syn match logtalkCloseEntityDir ":- end_protocol\." -syn match logtalkCloseEntityDir ":- end_category\." - - -" Logtalk entity relations - -syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained -syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained -syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained -syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained -syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained -syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="complements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained - - -" Logtalk directives - -syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom -syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn match logtalkDirTag ":- dynamic\." -syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- synchronized(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn match logtalkDirTag ":- synchronized\." -syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn match logtalkDirTag ":- threaded\." - - -" Module directives - -syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL -syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL - - -" Logtalk built-in predicates - -syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze(" - -syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze(" - -syn match logtalkBuiltIn "\" -syn match logtalkKeyword "\" -syn match logtalkKeyword "\" -syn match logtalkOperator "->" -syn match logtalkKeyword "\" -syn match logtalkOperator "@>=" - - -" Term creation and decomposition - -syn match logtalkKeyword "\" - - -" Arithemtic comparison - -syn match logtalkOperator "=:=" -syn match logtalkOperator "=\\=" -syn match logtalkOperator "<" -syn match logtalkOperator "=<" -syn match logtalkOperator ">" -syn match logtalkOperator ">=" - - -" Stream selection and control - -syn match logtalkKeyword "\<\(curren\|se\)t_\(in\|out\)put\ze(" -syn match logtalkKeyword "\" -syn match logtalkKeyword "\" -syn match logtalkKeyword "\" - - -" Term input/output - -syn match logtalkKeyword "\" - - -" Atomic term processing - -syn match logtalkKeyword "\" - - -" Evaluable functors - -syn match logtalkOperator "+" -syn match logtalkOperator "-" -syn match logtalkOperator "\*" -syn match logtalkOperator "//" -syn match logtalkOperator "/" -syn match logtalkKeyword "\" -syn match logtalkKeyword "\" -syn match logtalkKeyword "\>" -syn match logtalkOperator "<<" -syn match logtalkOperator "/\\" -syn match logtalkOperator "\\/" -syn match logtalkOperator "\\" - - -" Logtalk list operator - -syn match logtalkOperator "|" - - -" Logtalk numbers - -syn match logtalkNumber "\<\d\+\>" -syn match logtalkNumber "\<\d\+\.\d\+\>" -syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>" -syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>" -syn match logtalkNumber "\<0'.\|0''\|0'\"\>" -syn match logtalkNumber "\<0b[0-1]\+\>" -syn match logtalkNumber "\<0o\o\+\>" -syn match logtalkNumber "\<0x\x\+\>" - - -" Logtalk end-of-clause - -syn match logtalkOperator "\." - - -" Logtalk comments - -syn region logtalkBlockComment start="/\*" end="\*/" fold -syn match logtalkLineComment "%.*" - - -" Logtalk entity folding - -syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL -syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL -syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL - - -syn sync ccomment logtalkBlockComment maxlines=50 - - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet - -if version >= 508 || !exists("did_logtalk_syn_inits") - if version < 508 - let did_logtalk_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink logtalkBlockComment Comment - HiLink logtalkLineComment Comment - - HiLink logtalkOpenEntityDir Normal - HiLink logtalkOpenEntityDirTag PreProc - - HiLink logtalkEntity Normal - - HiLink logtalkEntityRel Normal - HiLink logtalkEntityRelTag PreProc - - HiLink logtalkCloseEntityDir PreProc - - HiLink logtalkDir Normal - HiLink logtalkDirTag PreProc - - HiLink logtalkAtom String - HiLink logtalkString String - HiLink logtalkEscapeSequence SpecialChar - - HiLink logtalkNumber Number - - HiLink logtalkKeyword Keyword - - HiLink logtalkBuiltIn Keyword - HiLink logtalkBuiltInMethod Keyword - - HiLink logtalkOperator Operator - - HiLink logtalkExtCall Normal - HiLink logtalkExtCallTag Operator - - HiLink logtalkVariable Identifier - - delcommand HiLink - -endif - - -let b:current_syntax = "logtalk" diff --git a/share/vim/vim73/syntax/lout.vim b/share/vim/vim73/syntax/lout.vim deleted file mode 100644 index 2a0a72c5..00000000 --- a/share/vim/vim73/syntax/lout.vim +++ /dev/null @@ -1,139 +0,0 @@ -" Vim syntax file -" Language: Lout -" Maintainer: Christian V. J. Brüssow -" Last Change: Son 22 Jun 2003 20:43:26 CEST -" Filenames: *.lout,*.lt -" URL: http://www.cvjb.de/comp/vim/lout.vim -" $Id: lout.vim,v 1.1 2004/06/13 17:52:18 vimboss Exp $ -" -" Lout: Basser Lout document formatting system. - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Lout is case sensitive -syn case match - -" Synchronization, I know it is a huge number, but normal texts can be -" _very_ long ;-) -syn sync lines=1000 - -" Characters allowed in keywords -" I don't know if 128-255 are allowed in ANS-FORHT -if version >= 600 - setlocal iskeyword=@,48-57,.,@-@,_,192-255 -else - set iskeyword=@,48-57,.,@-@,_,192-255 -endif - -" Some special keywords -syn keyword loutTodo contained TODO lout Lout LOUT -syn keyword loutDefine def macro - -" Some big structures -syn keyword loutKeyword @Begin @End @Figure @Tab -syn keyword loutKeyword @Book @Doc @Document @Report -syn keyword loutKeyword @Introduction @Abstract @Appendix -syn keyword loutKeyword @Chapter @Section @BeginSections @EndSections - -" All kind of Lout keywords -syn match loutFunction '\<@[^ \t{}]\+\>' - -" Braces -- Don`t edit these lines! -syn match loutMBraces '[{}]' -syn match loutIBraces '[{}]' -syn match loutBBrace '[{}]' -syn match loutBIBraces '[{}]' -syn match loutHeads '[{}]' - -" Unmatched braces. -syn match loutBraceError '}' - -" End of multi-line definitions, like @Document, @Report and @Book. -syn match loutEOmlDef '^//$' - -" Grouping of parameters and objects. -syn region loutObject transparent matchgroup=Delimiter start='{' matchgroup=Delimiter end='}' contains=ALLBUT,loutBraceError - -" The NULL object has a special meaning -syn keyword loutNULL {} - -" Comments -syn region loutComment start='\#' end='$' contains=loutTodo - -" Double quotes -syn region loutSpecial start=+"+ skip=+\\\\\|\\"+ end=+"+ - -" ISO-LATIN-1 characters created with @Char, or Adobe symbols -" created with @Sym -syn match loutSymbols '@\(\(Char\)\|\(Sym\)\)\s\+[A-Za-z]\+' - -" Include files -syn match loutInclude '@IncludeGraphic\s\+\k\+' -syn region loutInclude start='@\(\(SysInclude\)\|\(IncludeGraphic\)\|\(Include\)\)\s*{' end='}' - -" Tags -syn match loutTag '@\(\(Tag\)\|\(PageMark\)\|\(PageOf\)\|\(NumberOf\)\)\s\+\k\+' -syn region loutTag start='@Tag\s*{' end='}' - -" Equations -syn match loutMath '@Eq\s\+\k\+' -syn region loutMath matchgroup=loutMBraces start='@Eq\s*{' matchgroup=loutMBraces end='}' contains=ALLBUT,loutBraceError -" -" Fonts -syn match loutItalic '@I\s\+\k\+' -syn region loutItalic matchgroup=loutIBraces start='@I\s*{' matchgroup=loutIBraces end='}' contains=ALLBUT,loutBraceError -syn match loutBold '@B\s\+\k\+' -syn region loutBold matchgroup=loutBBraces start='@B\s*{' matchgroup=loutBBraces end='}' contains=ALLBUT,loutBraceError -syn match loutBoldItalic '@BI\s\+\k\+' -syn region loutBoldItalic matchgroup=loutBIBraces start='@BI\s*{' matchgroup=loutBIBraces end='}' contains=ALLBUT,loutBraceError -syn region loutHeadings matchgroup=loutHeads start='@\(\(Title\)\|\(Caption\)\)\s*{' matchgroup=loutHeads end='}' contains=ALLBUT,loutBraceError - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_lout_syn_inits") - if version < 508 - let did_lout_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " The default methods for highlighting. Can be overrriden later. - HiLink loutTodo Todo - HiLink loutDefine Define - HiLink loutEOmlDef Define - HiLink loutFunction Function - HiLink loutBraceError Error - HiLink loutNULL Special - HiLink loutComment Comment - HiLink loutSpecial Special - HiLink loutSymbols Character - HiLink loutInclude Include - HiLink loutKeyword Keyword - HiLink loutTag Tag - HiLink loutMath Number - - " HiLink Not really needed here, but I think it is more consistent. - HiLink loutMBraces loutMath - hi loutItalic term=italic cterm=italic gui=italic - HiLink loutIBraces loutItalic - hi loutBold term=bold cterm=bold gui=bold - HiLink loutBBraces loutBold - hi loutBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic - HiLink loutBIBraces loutBoldItalic - hi loutHeadings term=bold cterm=bold guifg=indianred - HiLink loutHeads loutHeadings - - delcommand HiLink -endif - -let b:current_syntax = "lout" - -" vim:ts=8:sw=4:nocindent:smartindent: diff --git a/share/vim/vim73/syntax/lpc.vim b/share/vim/vim73/syntax/lpc.vim deleted file mode 100644 index 7665c1a6..00000000 --- a/share/vim/vim73/syntax/lpc.vim +++ /dev/null @@ -1,455 +0,0 @@ -" Vim syntax file -" Language: LPC -" Maintainer: Shizhu Pan -" URL: http://poet.tomud.com/pub/lpc.vim.bz2 -" Last Change: 2003 May 11 -" Comments: If you are using Vim 6.2 or later, see :h lpc.vim for -" file type recognizing, if not, you had to use modeline. - - -" Nodule: This is the start nodule. {{{1 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Nodule: Keywords {{{1 - -" LPC keywords -" keywords should always be highlighted so "contained" is not used. -syn cluster lpcKeywdGrp contains=lpcConditional,lpcLabel,lpcOperator,lpcRepeat,lpcStatement,lpcModifier,lpcReserved - -syn keyword lpcConditional if else switch -syn keyword lpcLabel case default -syn keyword lpcOperator catch efun in inherit -syn keyword lpcRepeat do for foreach while -syn keyword lpcStatement break continue return - -syn match lpcEfunError /efun[^:]/ display - -" Illegal to use keyword as function -" It's not working, maybe in the next version. -syn keyword lpcKeywdError contained if for foreach return switch while - -" These are keywords only because they take lvalue or type as parameter, -" so these keywords should only be used as function but cannot be names of -" user-defined functions. -syn keyword lpcKeywdFunc new parse_command sscanf time_expression - -" Nodule: Type and modifiers {{{1 - -" Type names list. - -" Special types -syn keyword lpcType void mixed unknown -" Scalar/Value types. -syn keyword lpcType int float string -" Pointer types. -syn keyword lpcType array buffer class function mapping object -" Other types. -if exists("lpc_compat_32") - syn keyword lpcType closure status funcall -else - syn keyword lpcError closure status - syn keyword lpcType multiset -endif - -" Type modifier. -syn keyword lpcModifier nomask private public -syn keyword lpcModifier varargs virtual - -" sensible modifiers -if exists("lpc_pre_v22") - syn keyword lpcReserved nosave protected ref - syn keyword lpcModifier static -else - syn keyword lpcError static - syn keyword lpcModifier nosave protected ref -endif - -" Nodule: Applies {{{1 - -" Match a function declaration or function pointer -syn match lpcApplyDecl excludenl /->\h\w*(/me=e-1 contains=lpcApplies transparent display - -" We should note that in func_spec.c the efun definition syntax is so -" complicated that I use such a long regular expression to describe. -syn match lpcLongDecl excludenl /\(\s\|\*\)\h\+\s\h\+(/me=e-1 contains=@lpcEfunGroup,lpcType,@lpcKeywdGrp transparent display - -" this is form for all functions -" ->foo() form had been excluded -syn match lpcFuncDecl excludenl /\h\w*(/me=e-1 contains=lpcApplies,@lpcEfunGroup,lpcKeywdError transparent display - -" The (: :) parenthesis or $() forms a function pointer -syn match lpcFuncName /(:\s*\h\+\s*:)/me=e-1 contains=lpcApplies,@lpcEfunGroup transparent display contained -syn match lpcFuncName /(:\s*\h\+,/ contains=lpcApplies,@lpcEfunGroup transparent display contained -syn match lpcFuncName /\$(\h\+)/ contains=lpcApplies,@lpcEfunGroup transparent display contained - -" Applies list. -" system applies -syn keyword lpcApplies contained __INIT clean_up create destructor heart_beat id init move_or_destruct reset -" interactive -syn keyword lpcApplies contained catch_tell logon net_dead process_input receive_message receive_snoop telnet_suboption terminal_type window_size write_prompt -" master applies -syn keyword lpcApplies contained author_file compile_object connect crash creator_file domain_file epilog error_handler flag get_bb_uid get_root_uid get_save_file_name log_error make_path_absolute object_name preload privs_file retrieve_ed_setup save_ed_setup slow_shutdown -syn keyword lpcApplies contained valid_asm valid_bind valid_compile_to_c valid_database valid_hide valid_link valid_object valid_override valid_read valid_save_binary valid_seteuid valid_shadow valid_socket valid_write -" parsing -syn keyword lpcApplies contained inventory_accessible inventory_visible is_living parse_command_adjectiv_id_list parse_command_adjective_id_list parse_command_all_word parse_command_id_list parse_command_plural_id_list parse_command_prepos_list parse_command_users parse_get_environment parse_get_first_inventory parse_get_next_inventory parser_error_message - - -" Nodule: Efuns {{{1 - -syn cluster lpcEfunGroup contains=lpc_efuns,lpcOldEfuns,lpcNewEfuns,lpcKeywdFunc - -" Compat32 efuns -if exists("lpc_compat_32") - syn keyword lpc_efuns contained closurep heart_beat_info m_delete m_values m_indices query_once_interactive strstr -else - syn match lpcErrFunc /#`\h\w*/ - " Shell compatible first line comment. - syn region lpcCommentFunc start=/^#!/ end=/$/ -endif - -" pre-v22 efuns which are removed in newer versions. -syn keyword lpcOldEfuns contained tail dump_socket_status - -" new efuns after v22 should be added here! -syn keyword lpcNewEfuns contained socket_status - -" LPC efuns list. -" DEBUG efuns Not included. -" New efuns should NOT be added to this list, see v22 efuns above. -" Efuns list {{{2 -syn keyword lpc_efuns contained acos add_action all_inventory all_previous_objects allocate allocate_buffer allocate_mapping apply arrayp asin atan author_stats -syn keyword lpc_efuns contained bind break_string bufferp -syn keyword lpc_efuns contained cache_stats call_other call_out call_out_info call_stack capitalize catch ceil check_memory children classp clear_bit clone_object clonep command commands copy cos cp crc32 crypt ctime -syn keyword lpc_efuns contained db_close db_commit db_connect db_exec db_fetch db_rollback db_status debug_info debugmalloc debug_message deep_inherit_list deep_inventory destruct disable_commands disable_wizard domain_stats dumpallobj dump_file_descriptors dump_prog -syn keyword lpc_efuns contained each ed ed_cmd ed_start enable_commands enable_wizard environment error errorp eval_cost evaluate exec exp explode export_uid external_start -syn keyword lpc_efuns contained fetch_variable file_length file_name file_size filter filter_array filter_mapping find_call_out find_living find_object find_player first_inventory floatp floor flush_messages function_exists function_owner function_profile functionp functions -syn keyword lpc_efuns contained generate_source get_char get_config get_dir geteuid getuid -syn keyword lpc_efuns contained heart_beats -syn keyword lpc_efuns contained id_matrix implode in_edit in_input inherit_list inherits input_to interactive intp -syn keyword lpc_efuns contained keys -syn keyword lpc_efuns contained link living livings load_object localtime log log10 lookat_rotate lower_case lpc_info -syn keyword lpc_efuns contained malloc_check malloc_debug malloc_status map map_array map_delete map_mapping mapp master match_path max_eval_cost member_array memory_info memory_summary message mkdir moncontrol move_object mud_status -syn keyword lpc_efuns contained named_livings network_stats next_bit next_inventory notify_fail nullp -syn keyword lpc_efuns contained objectp objects oldcrypt opcprof origin -syn keyword lpc_efuns contained parse_add_rule parse_add_synonym parse_command parse_dump parse_init parse_my_rules parse_refresh parse_remove parse_sentence pluralize pointerp pow present previous_object printf process_string process_value program_info -syn keyword lpc_efuns contained query_ed_mode query_heart_beat query_host_name query_idle query_ip_name query_ip_number query_ip_port query_load_average query_notify_fail query_privs query_replaced_program query_shadowing query_snoop query_snooping query_verb -syn keyword lpc_efuns contained random read_buffer read_bytes read_file receive reclaim_objects refs regexp reg_assoc reload_object remove_action remove_call_out remove_interactive remove_shadow rename repeat_string replace_program replace_string replaceable reset_eval_cost resolve restore_object restore_variable rm rmdir rotate_x rotate_y rotate_z rusage -syn keyword lpc_efuns contained save_object save_variable say scale set_author set_bit set_eval_limit set_heart_beat set_hide set_light set_living_name set_malloc_mask set_privs set_reset set_this_player set_this_user seteuid shadow shallow_inherit_list shout shutdown sin sizeof snoop socket_accept socket_acquire socket_address socket_bind socket_close socket_connect socket_create socket_error socket_listen socket_release socket_write sort_array sprintf sqrt stat store_variable strcmp stringp strlen strsrch -syn keyword lpc_efuns contained tan tell_object tell_room terminal_colour test_bit this_interactive this_object this_player this_user throw time to_float to_int trace traceprefix translate typeof -syn keyword lpc_efuns contained undefinedp unique_array unique_mapping upper_case uptime userp users -syn keyword lpc_efuns contained values variables virtualp -syn keyword lpc_efuns contained wizardp write write_buffer write_bytes write_file - -" Nodule: Constants {{{1 - -" LPC Constants. -" like keywords, constants are always highlighted, be careful to choose only -" the constants we used to add to this list. -syn keyword lpcConstant __ARCH__ __COMPILER__ __DIR__ __FILE__ __OPTIMIZATION__ __PORT__ __VERSION__ -" Defines in options.h are all predefined in LPC sources surrounding by -" two underscores. Do we need to include all of that? -syn keyword lpcConstant __SAVE_EXTENSION__ __HEARTBEAT_INTERVAL__ -" from the documentation we know that these constants remains only for -" backward compatibility and should not be used any more. -syn keyword lpcConstant HAS_ED HAS_PRINTF HAS_RUSAGE HAS_DEBUG_LEVEL -syn keyword lpcConstant MUD_NAME F__THIS_OBJECT - -" Nodule: Todo for this file. {{{1 - -" TODO : need to check for LPC4 syntax and other series of LPC besides -" v22, b21 and l32, if you had a good idea, contact me at poet@mudbuilder.net -" and I will be appreciated about that. - -" Notes about some FAQ: -" -" About variables : We adopts the same behavior for C because almost all the -" LPC programmers are also C programmers, so we don't need separate settings -" for C and LPC. That is the reason why I don't change variables like -" "c_no_utf"s to "lpc_no_utf"s. -" -" Copy : Some of the following seems to be copied from c.vim but not quite -" the same in details because the syntax for C and LPC is different. -" -" Color scheme : this syntax file had been thouroughly tested to work well -" for all of the dark-backgrounded color schemes Vim has provided officially, -" and it should be quite Ok for all of the bright-backgrounded color schemes, -" of course it works best for the color scheme that I am using, download it -" from http://poet.tomud.com/pub/ps_color.vim.bz2 if you want to try it. -" - -" Nodule: String and Character {{{1 - - -" String and Character constants -" Highlight special characters (those which have a backslash) differently -syn match lpcSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" -if !exists("c_no_utf") - syn match lpcSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" -endif - -" LPC version of sprintf() format, -syn match lpcFormat display "%\(\d\+\)\=[-+ |=#@:.]*\(\d\+\)\=\('\I\+'\|'\I*\\'\I*'\)\=[OsdicoxXf]" contained -syn match lpcFormat display "%%" contained -syn region lpcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lpcSpecial,lpcFormat -" lpcCppString: same as lpcString, but ends at end of line -syn region lpcCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=lpcSpecial,lpcFormat - -" LPC preprocessor for the text formatting short cuts -" Thanks to Dr. Charles E. Campbell -" he suggests the best way to do this. -syn region lpcTextString start=/@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial -syn region lpcArrayString start=/@@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial - -" Character -syn match lpcCharacter "L\='[^\\]'" -syn match lpcCharacter "L'[^']*'" contains=lpcSpecial -syn match lpcSpecialError "L\='\\[^'\"?\\abefnrtv]'" -syn match lpcSpecialCharacter "L\='\\['\"?\\abefnrtv]'" -syn match lpcSpecialCharacter display "L\='\\\o\{1,3}'" -syn match lpcSpecialCharacter display "'\\x\x\{1,2}'" -syn match lpcSpecialCharacter display "L'\\x\x\+'" - -" Nodule: White space {{{1 - -" when wanted, highlight trailing white space -if exists("c_space_errors") - if !exists("c_no_trail_space_error") - syn match lpcSpaceError display excludenl "\s\+$" - endif - if !exists("c_no_tab_space_error") - syn match lpcSpaceError display " \+\t"me=e-1 - endif -endif - -" Nodule: Parenthesis and brackets {{{1 - -" catch errors caused by wrong parenthesis and brackets -syn cluster lpcParenGroup contains=lpcParenError,lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcCommentSkip,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom -syn region lpcParen transparent start='(' end=')' contains=ALLBUT,@lpcParenGroup,lpcCppParen,lpcErrInBracket,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcKeywdError -" lpcCppParen: same as lpcParen but ends at end-of-line; used in lpcDefine -syn region lpcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInBracket,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcKeywdError -syn match lpcParenError display ")" -syn match lpcParenError display "\]" -" for LPC: -" Here we should consider the array ({ }) parenthesis and mapping ([ ]) -" parenthesis and multiset (< >) parenthesis. -syn match lpcErrInParen display contained "[^^]{"ms=s+1 -syn match lpcErrInParen display contained "\(}\|\]\)[^)]"me=e-1 -syn region lpcBracket transparent start='\[' end=']' contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcCppParen,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError -" lpcCppBracket: same as lpcParen but ends at end-of-line; used in lpcDefine -syn region lpcCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError -syn match lpcErrInBracket display contained "[);{}]" - -" Nodule: Numbers {{{1 - -" integer number, or floating point number without a dot and with "f". -syn case ignore -syn match lpcNumbers display transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctalError,lpcOctal -" Same, but without octal error (for comments) -syn match lpcNumbersCom display contained transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctal -syn match lpcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" -" hex number -syn match lpcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" -" Flag the first zero of an octal number as something special -syn match lpcOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=lpcOctalZero -syn match lpcOctalZero display contained "\<0" -syn match lpcFloat display contained "\d\+f" -" floating point number, with dot, optional exponent -syn match lpcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" -" floating point number, starting with a dot, optional exponent -syn match lpcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" -" floating point number, without dot, with exponent -syn match lpcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" -" flag an octal number with wrong digits -syn match lpcOctalError display contained "0\o*[89]\d*" -syn case match - -" Nodule: Comment string {{{1 - -" lpcCommentGroup allows adding matches for special things in comments -syn keyword lpcTodo contained TODO FIXME XXX -syn cluster lpcCommentGroup contains=lpcTodo - -if exists("c_comment_strings") - " A comment can contain lpcString, lpcCharacter and lpcNumber. - syntax match lpcCommentSkip contained "^\s*\*\($\|\s\+\)" - syntax region lpcCommentString contained start=+L\=\\\@" skip="\\$" end="$" end="//"me=s-1 contains=lpcComment,lpcCppString,lpcCharacter,lpcCppParen,lpcParenError,lpcNumbers,lpcCommentError,lpcSpaceError -syn match lpcPreCondit display "^\s*#\s*\(else\|endif\)\>" -if !exists("c_no_if0") - syn region lpcCppOut start="^\s*#\s*if\s\+0\+\>" end=".\|$" contains=lpcCppOut2 - syn region lpcCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=lpcSpaceError,lpcCppSkip - syn region lpcCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=lpcSpaceError,lpcCppSkip -endif -syn region lpcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn match lpcIncluded display contained "<[^>]*>" -syn match lpcInclude display "^\s*#\s*include\>\s*["<]" contains=lpcIncluded -syn match lpcLineSkip "\\$" -syn cluster lpcPreProcGroup contains=lpcPreCondit,lpcIncluded,lpcInclude,lpcDefine,lpcErrInParen,lpcErrInBracket,lpcUserLabel,lpcSpecial,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcString,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcParen,lpcBracket,lpcMulti,lpcKeywdError -syn region lpcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@lpcPreProcGroup - -if exists("lpc_pre_v22") - syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup -else - syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup -endif - -" Nodule: User labels {{{1 - -" Highlight Labels -" User labels in LPC is not allowed, only "case x" and "default" is supported -syn cluster lpcMultiGroup contains=lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcCppParen,lpcCppBracket,lpcCppString,lpcKeywdError -syn region lpcMulti transparent start='\(case\|default\|public\|protected\|private\)' skip='::' end=':' contains=ALLBUT,@lpcMultiGroup - -syn cluster lpcLabelGroup contains=lpcUserLabel -syn match lpcUserCont display "^\s*lpc:$" contains=@lpcLabelGroup - -" Don't want to match anything -syn match lpcUserLabel display "lpc" contained - -" Nodule: Initializations {{{1 - -if exists("c_minlines") - let b:c_minlines = c_minlines -else - if !exists("c_no_if0") - let b:c_minlines = 50 " #if 0 constructs can be long - else - let b:c_minlines = 15 " mostly for () constructs - endif -endif -exec "syn sync ccomment lpcComment minlines=" . b:c_minlines - -" Make sure these options take place since we no longer depend on file type -" plugin for C -setlocal cindent -setlocal fo-=t fo+=croql -setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// -set cpo-=C - -" Win32 can filter files in the browse dialog -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "LPC Source Files (*.c *.d *.h)\t*.c;*.d;*.h\n" . - \ "LPC Data Files (*.scr *.o *.dat)\t*.scr;*.o;*.dat\n" . - \ "Text Documentation (*.txt)\t*.txt\n" . - \ "All Files (*.*)\t*.*\n" -endif - -" Nodule: Highlight links {{{1 - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_lpc_syn_inits") - if version < 508 - let did_lpc_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink lpcModifier lpcStorageClass - - HiLink lpcQuotedFmt lpcFormat - HiLink lpcFormat lpcSpecial - HiLink lpcCppString lpcString " Cpp means - " C Pre-Processor - HiLink lpcCommentL lpcComment - HiLink lpcCommentStart lpcComment - HiLink lpcUserLabel lpcLabel - HiLink lpcSpecialCharacter lpcSpecial - HiLink lpcOctal lpcPreProc - HiLink lpcOctalZero lpcSpecial " LPC will treat octal numbers - " as decimals, programmers should - " be aware of that. - HiLink lpcEfunError lpcError - HiLink lpcKeywdError lpcError - HiLink lpcOctalError lpcError - HiLink lpcParenError lpcError - HiLink lpcErrInParen lpcError - HiLink lpcErrInBracket lpcError - HiLink lpcCommentError lpcError - HiLink lpcCommentStartError lpcError - HiLink lpcSpaceError lpcError - HiLink lpcSpecialError lpcError - HiLink lpcErrFunc lpcError - - if exists("lpc_pre_v22") - HiLink lpcOldEfuns lpc_efuns - HiLink lpcNewEfuns lpcError - else - HiLink lpcOldEfuns lpcReserved - HiLink lpcNewEfuns lpc_efuns - endif - HiLink lpc_efuns lpcFunction - - HiLink lpcReserved lpcPreProc - HiLink lpcTextString lpcString " This should be preprocessors, but - HiLink lpcArrayString lpcPreProc " let's make some difference - " between text and array - - HiLink lpcIncluded lpcString - HiLink lpcCommentString lpcString - HiLink lpcComment2String lpcString - HiLink lpcCommentSkip lpcComment - HiLink lpcCommentFunc lpcComment - - HiLink lpcCppSkip lpcCppOut - HiLink lpcCppOut2 lpcCppOut - HiLink lpcCppOut lpcComment - - " Standard type below - HiLink lpcApplies Special - HiLink lpcCharacter Character - HiLink lpcComment Comment - HiLink lpcConditional Conditional - HiLink lpcConstant Constant - HiLink lpcDefine Macro - HiLink lpcError Error - HiLink lpcFloat Float - HiLink lpcFunction Function - HiLink lpcIdentifier Identifier - HiLink lpcInclude Include - HiLink lpcLabel Label - HiLink lpcNumber Number - HiLink lpcOperator Operator - HiLink lpcPreCondit PreCondit - HiLink lpcPreProc PreProc - HiLink lpcRepeat Repeat - HiLink lpcStatement Statement - HiLink lpcStorageClass StorageClass - HiLink lpcString String - HiLink lpcStructure Structure - HiLink lpcSpecial LineNr - HiLink lpcTodo Todo - HiLink lpcType Type - - delcommand HiLink -endif - -" Nodule: This is the end nodule. {{{1 - -let b:current_syntax = "lpc" - -" vim:ts=8:nosta:sw=2:ai:si: -" vim600:set fdm=marker: }}}1 diff --git a/share/vim/vim73/syntax/lsl.vim b/share/vim/vim73/syntax/lsl.vim deleted file mode 100644 index 3f248167..00000000 --- a/share/vim/vim73/syntax/lsl.vim +++ /dev/null @@ -1,272 +0,0 @@ -" Vim syntax file -" Language: Linden Scripting Language -" Maintainer: Timo Frenay -" Last Change: 2008 Mar 29 - -" Quit when a syntax file was already loaded -if exists("b:current_syntax") - finish -endif - -" Initializations -syn case match - -" Keywords -syn keyword lslKeyword default do else for if jump return state while - -" Types -syn keyword lslType float integer key list quaternion rotation string vector - -" Labels -syn match lslLabel +@\h\w*+ display - -" Constants -syn keyword lslConstant -\ ACTIVE AGENT AGENT_ALWAYS_RUN AGENT_ATTACHMENTS AGENT_AWAY AGENT_BUSY -\ AGENT_CROUCHING AGENT_FLYING AGENT_IN_AIR AGENT_MOUSELOOK AGENT_ON_OBJECT -\ AGENT_SCRIPTED AGENT_SITTING AGENT_TYPING AGENT_WALKING ALL_SIDES ANIM_ON -\ ATTACH_BACK ATTACH_BELLY ATTACH_CHEST ATTACH_CHIN ATTACH_HEAD -\ ATTACH_HUD_BOTTOM ATTACH_HUD_BOTTOM_LEFT ATTACH_HUD_BOTTOM_RIGHT -\ ATTACH_HUD_CENTER_1 ATTACH_HUD_CENTER_2 ATTACH_HUD_TOP_CENTER -\ ATTACH_HUD_TOP_LEFT ATTACH_HUD_TOP_RIGHT ATTACH_LEAR ATTACH_LEYE ATTACH_LFOOT -\ ATTACH_LHAND ATTACH_LHIP ATTACH_LLARM ATTACH_LLLEG ATTACH_LPEC -\ ATTACH_LSHOULDER ATTACH_LUARM ATTACH_LULEG ATTACH_MOUTH ATTACH_NOSE -\ ATTACH_PELVIS ATTACH_REAR ATTACH_REYE ATTACH_RFOOT ATTACH_RHAND ATTACH_RHIP -\ ATTACH_RLARM ATTACH_RLLEG ATTACH_RPEC ATTACH_RSHOULDER ATTACH_RUARM -\ ATTACH_RULEG CAMERA_ACTIVE CAMERA_BEHINDNESS_ANGLE CAMERA_BEHINDNESS_LAG -\ CAMERA_DISTANCE CAMERA_FOCUS CAMERA_FOCUS_LAG CAMERA_FOCUS_LOCKED -\ CAMERA_FOCUS_OFFSET CAMERA_FOCUS_THRESHOLD CAMERA_PITCH CAMERA_POSITION -\ CAMERA_POSITION_LAG CAMERA_POSITION_LOCKED CAMERA_POSITION_THRESHOLD -\ CHANGED_ALLOWED_DROP CHANGED_COLOR CHANGED_INVENTORY CHANGED_LINK -\ CHANGED_OWNER CHANGED_REGION CHANGED_SCALE CHANGED_SHAPE CHANGED_TELEPORT -\ CHANGED_TEXTURE CLICK_ACTION_BUY CLICK_ACTION_NONE CLICK_ACTION_OPEN -\ CLICK_ACTION_OPEN_MEDIA CLICK_ACTION_PAY CLICK_ACTION_PLAY CLICK_ACTION_SIT -\ CLICK_ACTION_TOUCH CONTROL_BACK CONTROL_DOWN CONTROL_FWD CONTROL_LBUTTON -\ CONTROL_LEFT CONTROL_ML_LBUTTON CONTROL_RIGHT CONTROL_ROT_LEFT -\ CONTROL_ROT_RIGHT CONTROL_UP DATA_BORN DATA_NAME DATA_ONLINE DATA_PAYINFO -\ DATA_RATING DATA_SIM_POS DATA_SIM_RATING DATA_SIM_STATUS DEBUG_CHANNEL -\ DEG_TO_RAD EOF FALSE HTTP_BODY_MAXLENGTH HTTP_BODY_TRUNCATED HTTP_METHOD -\ HTTP_MIMETYPE HTTP_VERIFY_CERT INVENTORY_ALL INVENTORY_ANIMATION -\ INVENTORY_BODYPART INVENTORY_CLOTHING INVENTORY_GESTURE INVENTORY_LANDMARK -\ INVENTORY_NONE INVENTORY_NOTECARD INVENTORY_OBJECT INVENTORY_SCRIPT -\ INVENTORY_SOUND INVENTORY_TEXTURE LAND_LARGE_BRUSH LAND_LEVEL LAND_LOWER -\ LAND_MEDIUM_BRUSH LAND_NOISE LAND_RAISE LAND_REVERT LAND_SMALL_BRUSH -\ LAND_SMOOTH LINK_ALL_CHILDREN LINK_ALL_OTHERS LINK_ROOT LINK_SET LINK_THIS -\ LIST_STAT_GEOMETRIC_MEAN LIST_STAT_MAX LIST_STAT_MEAN LIST_STAT_MEDIAN -\ LIST_STAT_MIN LIST_STAT_NUM_COUNT LIST_STAT_RANGE LIST_STAT_STD_DEV -\ LIST_STAT_SUM LIST_STAT_SUM_SQUARES LOOP MASK_BASE MASK_EVERYONE MASK_GROUP -\ MASK_NEXT MASK_OWNER NULL_KEY OBJECT_CREATOR OBJECT_DESC OBJECT_GROUP -\ OBJECT_NAME OBJECT_OWNER OBJECT_POS OBJECT_ROT OBJECT_UNKNOWN_DETAIL -\ OBJECT_VELOCITY PARCEL_COUNT_GROUP PARCEL_COUNT_OTHER PARCEL_COUNT_OWNER -\ PARCEL_COUNT_SELECTED PARCEL_COUNT_TEMP PARCEL_COUNT_TOTAL PARCEL_DETAILS_AREA -\ PARCEL_DETAILS_DESC PARCEL_DETAILS_GROUP PARCEL_DETAILS_NAME -\ PARCEL_DETAILS_OWNER PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY -\ PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS PARCEL_FLAG_ALLOW_CREATE_OBJECTS -\ PARCEL_FLAG_ALLOW_DAMAGE PARCEL_FLAG_ALLOW_FLY -\ PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY PARCEL_FLAG_ALLOW_GROUP_SCRIPTS -\ PARCEL_FLAG_ALLOW_LANDMARK PARCEL_FLAG_ALLOW_SCRIPTS -\ PARCEL_FLAG_ALLOW_TERRAFORM PARCEL_FLAG_LOCAL_SOUND_ONLY -\ PARCEL_FLAG_RESTRICT_PUSHOBJECT PARCEL_FLAG_USE_ACCESS_GROUP -\ PARCEL_FLAG_USE_ACCESS_LIST PARCEL_FLAG_USE_BAN_LIST -\ PARCEL_FLAG_USE_LAND_PASS_LIST PARCEL_MEDIA_COMMAND_AGENT -\ PARCEL_MEDIA_COMMAND_AUTO_ALIGN PARCEL_MEDIA_COMMAND_DESC -\ PARCEL_MEDIA_COMMAND_LOOP PARCEL_MEDIA_COMMAND_LOOP_SET -\ PARCEL_MEDIA_COMMAND_PAUSE PARCEL_MEDIA_COMMAND_PLAY PARCEL_MEDIA_COMMAND_SIZE -\ PARCEL_MEDIA_COMMAND_STOP PARCEL_MEDIA_COMMAND_TEXTURE -\ PARCEL_MEDIA_COMMAND_TIME PARCEL_MEDIA_COMMAND_TYPE -\ PARCEL_MEDIA_COMMAND_UNLOAD PARCEL_MEDIA_COMMAND_URL PASSIVE -\ PAYMENT_INFO_ON_FILE PAYMENT_INFO_USED PAY_DEFAULT PAY_HIDE PERM_ALL PERM_COPY -\ PERM_MODIFY PERM_MOVE PERM_TRANSFER PERMISSION_ATTACH PERMISSION_CHANGE_LINKS -\ PERMISSION_CONTROL_CAMERA PERMISSION_DEBIT PERMISSION_TAKE_CONTROLS -\ PERMISSION_TRACK_CAMERA PERMISSION_TRIGGER_ANIMATION PI PI_BY_TWO PING_PONG -\ PRIM_BUMP_BARK PRIM_BUMP_BLOBS PRIM_BUMP_BRICKS PRIM_BUMP_BRIGHT -\ PRIM_BUMP_CHECKER PRIM_BUMP_CONCRETE PRIM_BUMP_DARK PRIM_BUMP_DISKS -\ PRIM_BUMP_GRAVEL PRIM_BUMP_LARGETILE PRIM_BUMP_NONE PRIM_BUMP_SHINY -\ PRIM_BUMP_SIDING PRIM_BUMP_STONE PRIM_BUMP_STUCCO PRIM_BUMP_SUCTION -\ PRIM_BUMP_TILE PRIM_BUMP_WEAVE PRIM_BUMP_WOOD PRIM_CAST_SHADOWS PRIM_COLOR -\ PRIM_FLEXIBLE PRIM_FULLBRIGHT PRIM_HOLE_CIRCLE PRIM_HOLE_DEFAULT -\ PRIM_HOLE_SQUARE PRIM_HOLE_TRIANGLE PRIM_MATERIAL PRIM_MATERIAL_FLESH -\ PRIM_MATERIAL_GLASS PRIM_MATERIAL_LIGHT PRIM_MATERIAL_METAL -\ PRIM_MATERIAL_PLASTIC PRIM_MATERIAL_RUBBER PRIM_MATERIAL_STONE -\ PRIM_MATERIAL_WOOD PRIM_PHANTOM PRIM_PHYSICS PRIM_POINT_LIGHT PRIM_POSITION -\ PRIM_ROTATION PRIM_SCULPT_TYPE_CYLINDER PRIM_SCULPT_TYPE_PLANE -\ PRIM_SCULPT_TYPE_SPHERE PRIM_SCULPT_TYPE_TORUS PRIM_SHINY_HIGH PRIM_SHINY_LOW -\ PRIM_SHINY_MEDIUM PRIM_SHINY_NONE PRIM_SIZE PRIM_TEMP_ON_REZ PRIM_TEXGEN -\ PRIM_TEXGEN_DEFAULT PRIM_TEXGEN_PLANAR PRIM_TEXTURE PRIM_TYPE PRIM_TYPE_BOX -\ PRIM_TYPE_BOX PRIM_TYPE_CYLINDER PRIM_TYPE_CYLINDER PRIM_TYPE_LEGACY -\ PRIM_TYPE_PRISM PRIM_TYPE_PRISM PRIM_TYPE_RING PRIM_TYPE_SCULPT -\ PRIM_TYPE_SPHERE PRIM_TYPE_SPHERE PRIM_TYPE_TORUS PRIM_TYPE_TORUS -\ PRIM_TYPE_TUBE PRIM_TYPE_TUBE PSYS_PART_BEAM_MASK PSYS_PART_BOUNCE_MASK -\ PSYS_PART_DEAD_MASK PSYS_PART_EMISSIVE_MASK PSYS_PART_END_ALPHA -\ PSYS_PART_END_COLOR PSYS_PART_END_SCALE PSYS_PART_FLAGS -\ PSYS_PART_FOLLOW_SRC_MASK PSYS_PART_FOLLOW_VELOCITY_MASK -\ PSYS_PART_INTERP_COLOR_MASK PSYS_PART_INTERP_SCALE_MASK PSYS_PART_MAX_AGE -\ PSYS_PART_RANDOM_ACCEL_MASK PSYS_PART_RANDOM_VEL_MASK PSYS_PART_START_ALPHA -\ PSYS_PART_START_COLOR PSYS_PART_START_SCALE PSYS_PART_TARGET_LINEAR_MASK -\ PSYS_PART_TARGET_POS_MASK PSYS_PART_TRAIL_MASK PSYS_PART_WIND_MASK -\ PSYS_SRC_ACCEL PSYS_SRC_ANGLE_BEGIN PSYS_SRC_ANGLE_END -\ PSYS_SRC_BURST_PART_COUNT PSYS_SRC_BURST_RADIUS PSYS_SRC_BURST_RATE -\ PSYS_SRC_BURST_SPEED_MAX PSYS_SRC_BURST_SPEED_MIN PSYS_SRC_INNERANGLE -\ PSYS_SRC_MAX_AGE PSYS_SRC_OMEGA PSYS_SRC_OUTERANGLE PSYS_SRC_PATTERN -\ PSYS_SRC_PATTERN_ANGLE PSYS_SRC_PATTERN_ANGLE_CONE -\ PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY PSYS_SRC_PATTERN_DROP -\ PSYS_SRC_PATTERN_EXPLODE PSYS_SRC_TARGET_KEY PSYS_SRC_TEXTURE PUBLIC_CHANNEL -\ RAD_TO_DEG REGION_FLAG_ALLOW_DAMAGE REGION_FLAG_ALLOW_DIRECT_TELEPORT -\ REGION_FLAG_BLOCK_FLY REGION_FLAG_BLOCK_TERRAFORM -\ REGION_FLAG_DISABLE_COLLISIONS REGION_FLAG_DISABLE_PHYSICS -\ REGION_FLAG_FIXED_SUN REGION_FLAG_RESTRICT_PUSHOBJECT REGION_FLAG_SANDBOX -\ REMOTE_DATA_CHANNEL REMOTE_DATA_REPLY REMOTE_DATA_REQUEST REVERSE ROTATE SCALE -\ SCRIPTED SMOOTH SQRT2 STATUS_BLOCK_GRAB STATUS_CAST_SHADOWS STATUS_DIE_AT_EDGE -\ STATUS_PHANTOM STATUS_PHYSICS STATUS_RETURN_AT_EDGE STATUS_ROTATE_X -\ STATUS_ROTATE_Y STATUS_ROTATE_Z STATUS_SANDBOX STRING_TRIM STRING_TRIM_HEAD -\ STRING_TRIM_TAIL TRUE TWO_PI TYPE_FLOAT TYPE_INTEGER TYPE_INVALID TYPE_KEY -\ TYPE_ROTATION TYPE_STRING TYPE_VECTOR VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY -\ VEHICLE_ANGULAR_DEFLECTION_TIMESCALE VEHICLE_ANGULAR_FRICTION_TIMESCALE -\ VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE VEHICLE_ANGULAR_MOTOR_DIRECTION -\ VEHICLE_ANGULAR_MOTOR_TIMESCALE VEHICLE_BANKING_EFFICIENCY VEHICLE_BANKING_MIX -\ VEHICLE_BANKING_TIMESCALE VEHICLE_BUOYANCY VEHICLE_FLAG_CAMERA_DECOUPLED -\ VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT VEHICLE_FLAG_HOVER_TERRAIN_ONLY -\ VEHICLE_FLAG_HOVER_UP_ONLY VEHICLE_FLAG_HOVER_WATER_ONLY -\ VEHICLE_FLAG_LIMIT_MOTOR_UP VEHICLE_FLAG_LIMIT_ROLL_ONLY -\ VEHICLE_FLAG_MOUSELOOK_BANK VEHICLE_FLAG_MOUSELOOK_STEER -\ VEHICLE_FLAG_NO_DEFLECTION_UP VEHICLE_HOVER_EFFICIENCY VEHICLE_HOVER_HEIGHT -\ VEHICLE_HOVER_TIMESCALE VEHICLE_LINEAR_DEFLECTION_EFFICIENCY -\ VEHICLE_LINEAR_DEFLECTION_TIMESCALE VEHICLE_LINEAR_FRICTION_TIMESCALE -\ VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE VEHICLE_LINEAR_MOTOR_TIMESCALE -\ VEHICLE_LINEAR_MOTOR_DIRECTION VEHICLE_LINEAR_MOTOR_OFFSET -\ VEHICLE_REFERENCE_FRAME VEHICLE_TYPE_AIRPLANE VEHICLE_TYPE_BALLOON -\ VEHICLE_TYPE_BOAT VEHICLE_TYPE_CAR VEHICLE_TYPE_NONE VEHICLE_TYPE_SLED -\ VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY VEHICLE_VERTICAL_ATTRACTION_TIMESCALE -\ ZERO_ROTATION ZERO_VECTOR - -" Events -syn keyword lslEvent -\ attach at_rot_target at_target changed collision collision_end collision_start -\ control dataserver email http_response land_collision land_collision_end -\ land_collision_start link_message listen money moving_end moving_start -\ not_at_rot_target no_sensor object_rez on_rez remote_data run_time_permissions -\ sensor state_entry state_exit timer touch touch_end touch_start not_at_target - -" Functions -syn keyword lslFunction -\ llAbs llAcos llAddToLandBanList llAddToLandPassList llAdjustSoundVolume -\ llAllowInventoryDrop llAngleBetween llApplyImpulse llApplyRotationalImpulse -\ llAsin llAtan2 llAttachToAvatar llAvatarOnSitTarget llAxes2Rot llAxisAngle2Rot -\ llBase64ToInteger llBase64ToString llBreakAllLinks llBreakLink llCSV2List -\ llCeil llClearCameraParams llCloseRemoteDataChannel llCloud llCollisionFilter -\ llCollisionSound llCollisionSprite llCos llCreateLink llDeleteSubList -\ llDeleteSubString llDetachFromAvatar llDetectedGrab llDetectedGroup -\ llDetectedKey llDetectedLinkNumber llDetectedName llDetectedOwner -\ llDetectedPos llDetectedRot llDetectedType llDetectedVel llDialog llDie -\ llDumpList2String llEdgeOfWorld llEjectFromLand llEmail llEscapeURL -\ llEuler2Rot llFabs llFloor llForceMouselook llFrand llGetAccel llGetAgentInfo -\ llGetAgentSize llGetAlpha llGetAndResetTime llGetAnimation llGetAnimationList -\ llGetAttached llGetBoundingBox llGetCameraPos llGetCameraRot llGetCenterOfMass -\ llGetColor llGetCreator llGetDate llGetEnergy llGetForce llGetFreeMemory -\ llGetGMTclock llGetGeometricCenter llGetInventoryCreator llGetInventoryKey -\ llGetInventoryName llGetInventoryNumber llGetInventoryPermMask -\ llGetInventoryType llGetKey llGetLandOwnerAt llGetLinkKey llGetLinkName -\ llGetLinkNumber llGetListEntryType llGetListLength llGetLocalPos llGetLocalRot -\ llGetMass llGetNextEmail llGetNotecardLine llGetNumberOfNotecardLines -\ llGetNumberOfPrims llGetNumberOfSides llGetObjectDesc llGetObjectDetails -\ llGetObjectMass llGetObjectName llGetObjectPermMask llGetObjectPrimCount -\ llGetOmega llGetOwner llGetOwnerKey llGetParcelDetails llGetParcelFlags -\ llGetParcelMaxPrims llGetParcelPrimCount llGetParcelPrimOwners -\ llGetPermissions llGetPermissionsKey llGetPos llGetPrimitiveParams -\ llGetRegionCorner llGetRegionFPS llGetRegionFlags llGetRegionName -\ llGetRegionTimeDilation llGetRootPosition llGetRootRotation llGetRot -\ llGetScale llGetScriptName llGetScriptState llGetSimulatorHostname -\ llGetStartParameter llGetStatus llGetSubString llGetSunDirection llGetTexture -\ llGetTextureOffset llGetTextureRot llGetTextureScale llGetTime llGetTimeOfDay -\ llGetTimestamp llGetTorque llGetUnixTime llGetVel llGetWallclock -\ llGiveInventory llGiveInventoryList llGiveMoney llGodLikeRezObject llGround -\ llGroundContour llGroundNormal llGroundRepel llGroundSlope llHTTPRequest -\ llInsertString llInstantMessage llIntegerToBase64 llKey2Name llList2CSV -\ llList2Float llList2Integer llList2Key llList2List llList2ListStrided -\ llList2Rot llList2String llList2Vector llListFindList llListInsertList -\ llListRandomize llListReplaceList llListSort llListStatistics llListen -\ llListenControl llListenRemove llLoadURL llLog llLog10 llLookAt llLoopSound -\ llLoopSoundMaster llLoopSoundSlave llMD5String llMakeExplosion llMakeFire -\ llMakeFountain llMakeSmoke llMapDestination llMessageLinked llMinEventDelay -\ llModPow llModifyLand llMoveToTarget llOffsetTexture llOpenRemoteDataChannel -\ llOverMyLand llOwnerSay llParcelMediaCommandList llParcelMediaQuery -\ llParseString2List llParseStringKeepNulls llParticleSystem llPassCollisions -\ llPassTouches llPlaySound llPlaySoundSlave llPointAt llPow llPreloadSound -\ llPushObject llRefreshPrimURL llRegionSay llReleaseCamera llReleaseControls -\ llRemoteDataReply llRemoteDataSetRegion llRemoteLoadScript -\ llRemoteLoadScriptPin llRemoveFromLandBanList llRemoveFromLandPassList -\ llRemoveInventory llRemoveVehicleFlags llRequestAgentData -\ llRequestInventoryData llRequestPermissions llRequestSimulatorData -\ llResetLandBanList llResetLandPassList llResetOtherScript llResetScript -\ llResetTime llRezAtRoot llRezObject llRot2Angle llRot2Axis llRot2Euler -\ llRot2Fwd llRot2Left llRot2Up llRotBetween llRotLookAt llRotTarget -\ llRotTargetRemove llRotateTexture llRound llSameGroup llSay llScaleTexture -\ llScriptDanger llSendRemoteData llSensor llSensorRemove llSensorRepeat -\ llSetAlpha llSetBuoyancy llSetCameraAtOffset llSetCameraEyeOffset -\ llSetCameraParams llSetClickAction llSetColor llSetDamage llSetForce -\ llSetForceAndTorque llSetHoverHeight llSetInventoryPermMask llSetLinkAlpha -\ llSetLinkColor llSetLinkPrimitiveParams llSetLinkTexture llSetLocalRot -\ llSetObjectDesc llSetObjectName llSetObjectPermMask llSetParcelMusicURL -\ llSetPayPrice llSetPos llSetPrimURL llSetPrimitiveParams -\ llSetRemoteScriptAccessPin llSetRot llSetScale llSetScriptState llSetSitText -\ llSetSoundQueueing llSetSoundRadius llSetStatus llSetText llSetTexture -\ llSetTextureAnim llSetTimerEvent llSetTorque llSetTouchText llSetVehicleFlags -\ llSetVehicleFloatParam llSetVehicleRotationParam llSetVehicleType -\ llSetVehicleVectorParam llShout llSin llSitTarget llSleep llSound -\ llSoundPreload llSqrt llStartAnimation llStopAnimation llStopHover -\ llStopLookAt llStopMoveToTarget llStopPointAt llStopSound llStringLength -\ llStringToBase64 llStringTrim llSubStringIndex llTakeCamera llTakeControls -\ llTan llTarget llTargetOmega llTargetRemove llTeleportAgentHome llToLower -\ llToUpper llTriggerSound llTriggerSoundLimited llUnSit llUnescapeURL llVecDist -\ llVecMag llVecNorm llVolumeDetect llWater llWhisper llWind llXorBase64Strings -\ llXorBase64StringsCorrect - -" Operators -syn match lslOperator +[-!%&*+/<=>^|~]+ display - -" Numbers -syn match lslNumber +-\=\%(\<\d\+\|\%(\<\d\+\)\=\.\d\+\)\%([Ee][-+]\=\d\+\)\=\>\|\<0x\x\+\>+ display - -" Vectors and rotations -syn match lslVectorRot +<[-\t +.0-9A-Za-z_]\+\%(,[-\t +.0-9A-Za-z_]\+\)\{2,3}>+ contains=lslNumber display - -" Vector and rotation properties -syn match lslProperty +\.\@<=[sxyz]\>+ display - -" Strings -syn region lslString start=+"+ skip=+\\.+ end=+"+ contains=lslSpecialChar,@Spell -syn match lslSpecialChar +\\.+ contained display - -" Keys -syn match lslKey +"\x\{8}-\x\{4}-\x\{4}-\x\{4}-\x\{12}"+ display - -" Parentheses, braces and brackets -syn match lslBlock +[][(){}]+ display - -" Typecast operators -syn match lslTypecast +(\%(float\|integer\|key\|list\|quaternion\|rotation\|string\|vector\))+ contains=lslType display - -" Comments -syn match lslComment +//.*+ contains=@Spell - -" Define the default highlighting. -hi def link lslKeyword Keyword -hi def link lslType Type -hi def link lslLabel Label -hi def link lslConstant Constant -hi def link lslEvent PreProc -hi def link lslFunction Function -hi def link lslOperator Operator -hi def link lslNumber Number -hi def link lslVectorRot Special -hi def link lslProperty Identifier -hi def link lslString String -hi def link lslSpecialChar SpecialChar -hi def link lslKey Special -hi def link lslBlock Special -hi def link lslTypecast Operator -hi def link lslComment Comment - -let b:current_syntax = "lsl" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/lua.vim b/share/vim/vim73/syntax/lua.vim deleted file mode 100644 index c40c6285..00000000 --- a/share/vim/vim73/syntax/lua.vim +++ /dev/null @@ -1,304 +0,0 @@ -" Vim syntax file -" Language: Lua 4.0, Lua 5.0 and Lua 5.1 -" Maintainer: Marcus Aurelius Farias -" First Author: Carlos Augusto Teixeira Mendes -" Last Change: 2006 Aug 10 -" Options: lua_version = 4 or 5 -" lua_subversion = 0 (4.0, 5.0) or 1 (5.1) -" default 5.1 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if !exists("lua_version") - " Default is lua 5.1 - let lua_version = 5 - let lua_subversion = 1 -elseif !exists("lua_subversion") - " lua_version exists, but lua_subversion doesn't. So, set it to 0 - let lua_subversion = 0 -endif - -syn case match - -" syncing method -syn sync minlines=100 - -" Comments -syn keyword luaTodo contained TODO FIXME XXX -syn match luaComment "--.*$" contains=luaTodo,@Spell -if lua_version == 5 && lua_subversion == 0 - syn region luaComment matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell - syn region luaInnerComment contained transparent start="\[\[" end="\]\]" -elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) - " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc. - syn region luaComment matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell -endif - -" First line may start with #! -syn match luaComment "\%^#!.*" - -" catch errors caused by wrong parenthesis and wrong curly brackets or -" keywords placed outside their respective blocks - -syn region luaParen transparent start='(' end=')' contains=ALLBUT,luaError,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement -syn match luaError ")" -syn match luaError "}" -syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>" - -" Function declaration -syn region luaFunctionBlock transparent matchgroup=luaFunction start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat - -" if then else elseif end -syn keyword luaCond contained else - -" then ... end -syn region luaCondEnd contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaRepeat - -" elseif ... then -syn region luaCondElseif contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat - -" if ... then -syn region luaCondStart transparent matchgroup=luaCond start="\" end="\"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaCondEnd skipwhite skipempty - -" do ... end -syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat - -" repeat ... until -syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat - -" while ... do -syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaBlock skipwhite skipempty - -" for ... do and for ... in ... do -syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd nextgroup=luaBlock skipwhite skipempty - -" Following 'else' example. This is another item to those -" contains=ALLBUT,... because only the 'for' luaRepeatBlock contains it. -syn keyword luaRepeat contained in - -" other keywords -syn keyword luaStatement return local break -syn keyword luaOperator and or not -syn keyword luaConstant nil -if lua_version > 4 - syn keyword luaConstant true false -endif - -" Strings -if lua_version < 5 - syn match luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}" -elseif lua_version == 5 && lua_subversion == 0 - syn match luaSpecial contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}" - syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell -elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) - syn match luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}" - syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell -endif -syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell -syn region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell - -" integer number -syn match luaNumber "\<\d\+\>" -" floating point number, with dot, optional exponent -syn match luaFloat "\<\d\+\.\d*\%(e[-+]\=\d\+\)\=\>" -" floating point number, starting with a dot, optional exponent -syn match luaFloat "\.\d\+\%(e[-+]\=\d\+\)\=\>" -" floating point number, without dot, with exponent -syn match luaFloat "\<\d\+e[-+]\=\d\+\>" - -" hex numbers -if lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) - syn match luaNumber "\<0x\x\+\>" -endif - -" tables -syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement - -syn keyword luaFunc assert collectgarbage dofile error next -syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION - -if lua_version == 4 - syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo - syn keyword luaFunc call copytagmethods dostring - syn keyword luaFunc foreach foreachi getglobal getn - syn keyword luaFunc gettagmethod globals newtag - syn keyword luaFunc setglobal settag settagmethod sort - syn keyword luaFunc tag tinsert tremove - syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR - syn keyword luaFunc openfile closefile flush seek - syn keyword luaFunc setlocale execute remove rename tmpname - syn keyword luaFunc getenv date clock exit - syn keyword luaFunc readfrom writeto appendto read write - syn keyword luaFunc PI abs sin cos tan asin - syn keyword luaFunc acos atan atan2 ceil floor - syn keyword luaFunc mod frexp ldexp sqrt min max log - syn keyword luaFunc log10 exp deg rad random - syn keyword luaFunc randomseed strlen strsub strlower strupper - syn keyword luaFunc strchar strrep ascii strbyte - syn keyword luaFunc format strfind gsub - syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook -elseif lua_version == 5 - " Not sure if all these functions need to be highlighted... - syn keyword luaFunc _G getfenv getmetatable ipairs loadfile - syn keyword luaFunc loadstring pairs pcall rawequal - syn keyword luaFunc require setfenv setmetatable unpack xpcall - if lua_subversion == 0 - syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME - elseif lua_subversion == 1 - syn keyword luaFunc load module select - syn match luaFunc /package\.cpath/ - syn match luaFunc /package\.loaded/ - syn match luaFunc /package\.loadlib/ - syn match luaFunc /package\.path/ - syn match luaFunc /package\.preload/ - syn match luaFunc /package\.seeall/ - syn match luaFunc /coroutine\.running/ - endif - syn match luaFunc /coroutine\.create/ - syn match luaFunc /coroutine\.resume/ - syn match luaFunc /coroutine\.status/ - syn match luaFunc /coroutine\.wrap/ - syn match luaFunc /coroutine\.yield/ - syn match luaFunc /string\.byte/ - syn match luaFunc /string\.char/ - syn match luaFunc /string\.dump/ - syn match luaFunc /string\.find/ - syn match luaFunc /string\.len/ - syn match luaFunc /string\.lower/ - syn match luaFunc /string\.rep/ - syn match luaFunc /string\.sub/ - syn match luaFunc /string\.upper/ - syn match luaFunc /string\.format/ - syn match luaFunc /string\.gsub/ - if lua_subversion == 0 - syn match luaFunc /string\.gfind/ - syn match luaFunc /table\.getn/ - syn match luaFunc /table\.setn/ - syn match luaFunc /table\.foreach/ - syn match luaFunc /table\.foreachi/ - elseif lua_subversion == 1 - syn match luaFunc /string\.gmatch/ - syn match luaFunc /string\.match/ - syn match luaFunc /string\.reverse/ - syn match luaFunc /table\.maxn/ - endif - syn match luaFunc /table\.concat/ - syn match luaFunc /table\.sort/ - syn match luaFunc /table\.insert/ - syn match luaFunc /table\.remove/ - syn match luaFunc /math\.abs/ - syn match luaFunc /math\.acos/ - syn match luaFunc /math\.asin/ - syn match luaFunc /math\.atan/ - syn match luaFunc /math\.atan2/ - syn match luaFunc /math\.ceil/ - syn match luaFunc /math\.sin/ - syn match luaFunc /math\.cos/ - syn match luaFunc /math\.tan/ - syn match luaFunc /math\.deg/ - syn match luaFunc /math\.exp/ - syn match luaFunc /math\.floor/ - syn match luaFunc /math\.log/ - syn match luaFunc /math\.log10/ - syn match luaFunc /math\.max/ - syn match luaFunc /math\.min/ - if lua_subversion == 0 - syn match luaFunc /math\.mod/ - elseif lua_subversion == 1 - syn match luaFunc /math\.fmod/ - syn match luaFunc /math\.modf/ - syn match luaFunc /math\.cosh/ - syn match luaFunc /math\.sinh/ - syn match luaFunc /math\.tanh/ - endif - syn match luaFunc /math\.pow/ - syn match luaFunc /math\.rad/ - syn match luaFunc /math\.sqrt/ - syn match luaFunc /math\.frexp/ - syn match luaFunc /math\.ldexp/ - syn match luaFunc /math\.random/ - syn match luaFunc /math\.randomseed/ - syn match luaFunc /math\.pi/ - syn match luaFunc /io\.stdin/ - syn match luaFunc /io\.stdout/ - syn match luaFunc /io\.stderr/ - syn match luaFunc /io\.close/ - syn match luaFunc /io\.flush/ - syn match luaFunc /io\.input/ - syn match luaFunc /io\.lines/ - syn match luaFunc /io\.open/ - syn match luaFunc /io\.output/ - syn match luaFunc /io\.popen/ - syn match luaFunc /io\.read/ - syn match luaFunc /io\.tmpfile/ - syn match luaFunc /io\.type/ - syn match luaFunc /io\.write/ - syn match luaFunc /os\.clock/ - syn match luaFunc /os\.date/ - syn match luaFunc /os\.difftime/ - syn match luaFunc /os\.execute/ - syn match luaFunc /os\.exit/ - syn match luaFunc /os\.getenv/ - syn match luaFunc /os\.remove/ - syn match luaFunc /os\.rename/ - syn match luaFunc /os\.setlocale/ - syn match luaFunc /os\.time/ - syn match luaFunc /os\.tmpname/ - syn match luaFunc /debug\.debug/ - syn match luaFunc /debug\.gethook/ - syn match luaFunc /debug\.getinfo/ - syn match luaFunc /debug\.getlocal/ - syn match luaFunc /debug\.getupvalue/ - syn match luaFunc /debug\.setlocal/ - syn match luaFunc /debug\.setupvalue/ - syn match luaFunc /debug\.sethook/ - syn match luaFunc /debug\.traceback/ - if lua_subversion == 1 - syn match luaFunc /debug\.getfenv/ - syn match luaFunc /debug\.getmetatable/ - syn match luaFunc /debug\.getregistry/ - syn match luaFunc /debug\.setfenv/ - syn match luaFunc /debug\.setmetatable/ - endif -endif - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_lua_syntax_inits") - if version < 508 - let did_lua_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink luaStatement Statement - HiLink luaRepeat Repeat - HiLink luaString String - HiLink luaString2 String - HiLink luaNumber Number - HiLink luaFloat Float - HiLink luaOperator Operator - HiLink luaConstant Constant - HiLink luaCond Conditional - HiLink luaFunction Function - HiLink luaComment Comment - HiLink luaTodo Todo - HiLink luaTable Structure - HiLink luaError Error - HiLink luaSpecial SpecialChar - HiLink luaFunc Identifier - - delcommand HiLink -endif - -let b:current_syntax = "lua" - -" vim: et ts=8 diff --git a/share/vim/vim73/syntax/lynx.vim b/share/vim/vim73/syntax/lynx.vim deleted file mode 100644 index 2e37ff64..00000000 --- a/share/vim/vim73/syntax/lynx.vim +++ /dev/null @@ -1,94 +0,0 @@ -" Vim syntax file -" Language: Lynx configuration file (lynx.cfg) -" Maintainer: Doug Kearns -" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/syntax/lynx.vim -" Last Change: 2007 Mar 20 - -" Lynx 2.8.5 - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -syn match lynxLeadingWS "^\s*" transparent nextgroup=lynxOption - -syn match lynxComment "\(^\|\s\+\)#.*$" contains=lynxTodo - -syn keyword lynxTodo TODO NOTE FIXME XXX contained - -syn match lynxDelimiter ":" contained nextgroup=lynxBoolean,lynxNumber - -syn case ignore -syn keyword lynxBoolean TRUE FALSE contained -syn case match - -syn match lynxNumber "-\=\<\d\+\>" contained - -syn case ignore -syn keyword lynxOption ACCEPT_ALL_COOKIES ALERTSECS ALWAYS_RESUBMIT_POSTS ALWAYS_TRUSTED_EXEC ASSUME_CHARSET - \ ASSUMED_COLOR ASSUMED_DOC_CHARSET_CHOICE ASSUME_LOCAL_CHARSET ASSUME_UNREC_CHARSET AUTO_UNCACHE_DIRLISTS - \ BIBP_BIBHOST BIBP_GLOBAL_SERVER BLOCK_MULTI_BOOKMARKS BOLD_H1 BOLD_HEADERS - \ BOLD_NAME_ANCHORS CASE_SENSITIVE_ALWAYS_ON CHARACTER_SET CHARSETS_DIRECTORY CHARSET_SWITCH_RULES - \ CHECKMAIL COLLAPSE_BR_TAGS COLOR CONNECT_TIMEOUT COOKIE_ACCEPT_DOMAINS - \ COOKIE_FILE COOKIE_LOOSE_INVALID_DOMAINS COOKIE_QUERY_INVALID_DOMAINS COOKIE_REJECT_DOMAINS COOKIE_SAVE_FILE - \ COOKIE_STRICT_INVALID_DOMAINS CSO_PROXY CSWING_PATH DEBUGSECS DEFAULT_BOOKMARK_FILE - \ DEFAULT_CACHE_SIZE DEFAULT_EDITOR DEFAULT_INDEX_FILE DEFAULT_KEYPAD_MODE DEFAULT_KEYPAD_MODE_IS_NUMBERS_AS_ARROWS - \ DEFAULT_USER_MODE DEFAULT_VIRTUAL_MEMORY_SIZE DIRED_MENU DISPLAY_CHARSET_CHOICE DOWNLOADER - \ EMACS_KEYS_ALWAYS_ON ENABLE_LYNXRC ENABLE_SCROLLBACK EXTERNAL FINGER_PROXY - \ FOCUS_WINDOW FORCE_8BIT_TOUPPER FORCE_COOKIE_PROMPT FORCE_EMPTY_HREFLESS_A FORCE_SSL_COOKIES_SECURE - \ FORCE_SSL_PROMPT FORMS_OPTIONS FTP_PASSIVE FTP_PROXY GLOBAL_EXTENSION_MAP - \ GLOBAL_MAILCAP GOPHER_PROXY GOTOBUFFER HELPFILE HIDDEN_LINK_MARKER - \ HISTORICAL_COMMENTS HTMLSRC_ATTRNAME_XFORM HTMLSRC_TAGNAME_XFORM HTTP_PROXY HTTPS_PROXY - \ INCLUDE INFOSECS JUMPBUFFER JUMPFILE JUMP_PROMPT - \ JUSTIFY JUSTIFY_MAX_VOID_PERCENT KEYBOARD_LAYOUT KEYMAP LEFTARROW_IN_TEXTFIELD_PROMPT - \ LIST_FORMAT LIST_NEWS_DATES LIST_NEWS_NUMBERS LOCAL_DOMAIN LOCALE_CHARSET - \ LOCAL_EXECUTION_LINKS_ALWAYS_ON LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE LOCALHOST_ALIAS LYNXCGI_DOCUMENT_ROOT LYNXCGI_ENVIRONMENT - \ LYNX_HOST_NAME LYNX_SIG_FILE MAIL_ADRS MAIL_SYSTEM_ERROR_LOGGING MAKE_LINKS_FOR_ALL_IMAGES - \ MAKE_PSEUDO_ALTS_FOR_INLINES MESSAGESECS MINIMAL_COMMENTS MULTI_BOOKMARK_SUPPORT NCR_IN_BOOKMARKS - \ NEWS_CHUNK_SIZE NEWS_MAX_CHUNK NEWS_POSTING NEWSPOST_PROXY NEWS_PROXY - \ NEWSREPLY_PROXY NNTP_PROXY NNTPSERVER NO_DOT_FILES NO_FILE_REFERER - \ NO_FORCED_CORE_DUMP NO_FROM_HEADER NO_ISMAP_IF_USEMAP NONRESTARTING_SIGWINCH NO_PROXY - \ NO_REFERER_HEADER NO_TABLE_CENTER NUMBER_FIELDS_ON_LEFT NUMBER_LINKS_ON_LEFT OUTGOING_MAIL_CHARSET - \ PARTIAL PARTIAL_THRES PERSISTENT_COOKIES PERSONAL_EXTENSION_MAP PERSONAL_MAILCAP - \ PREFERRED_CHARSET PREFERRED_LANGUAGE PREPEND_BASE_TO_SOURCE PREPEND_CHARSET_TO_SOURCE PRETTYSRC - \ PRETTYSRC_SPEC PRETTYSRC_VIEW_NO_ANCHOR_NUMBERING PRINTER QUIT_DEFAULT_YES REFERER_WITH_QUERY - \ REPLAYSECS REUSE_TEMPFILES RULE RULESFILE SAVE_SPACE - \ SCAN_FOR_BURIED_NEWS_REFS SCREEN_SIZE SCROLLBAR SCROLLBAR_ARROW SEEK_FRAG_AREA_IN_CUR - \ SEEK_FRAG_MAP_IN_CUR SET_COOKIES SHOW_CURSOR SHOW_KB_NAME SHOW_KB_RATE - \ SNEWSPOST_PROXY SNEWS_PROXY SNEWSREPLY_PROXY SOFT_DQUOTES SOURCE_CACHE - \ SOURCE_CACHE_FOR_ABORTED STARTFILE STRIP_DOTDOT_URLS SUBSTITUTE_UNDERSCORES SUFFIX - \ SUFFIX_ORDER SYSTEM_EDITOR SYSTEM_MAIL SYSTEM_MAIL_FLAGS TAGSOUP - \ TEXTFIELDS_NEED_ACTIVATION TIMEOUT TRIM_INPUT_FIELDS TRUSTED_EXEC TRUSTED_LYNXCGI - \ UNDERLINE_LINKS UPLOADER URL_DOMAIN_PREFIXES URL_DOMAIN_SUFFIXES USE_FIXED_RECORDS - \ USE_MOUSE USE_SELECT_POPUPS VERBOSE_IMAGES VIEWER VI_KEYS_ALWAYS_ON - \ WAIS_PROXY XLOADIMAGE_COMMAND contained nextgroup=lynxDelimiter -syn keyword lynxOption BZIP2_PATH CHMOD_PATH COMPRESS_PATH COPY_PATH GZIP_PATH - \ INSTALL_PATH MKDIR_PATH MV_PATH RLOGIN_PATH RMDIR_PATH - \ RM_PATH TAR_PATH TELNET_PATH TN3270_PATH TOUCH_PATH - \ UNCOMPRESS_PATH UNZIP_PATH UUDECODE_PATH ZCAT_PATH ZIP_PATH contained nextgroup=lynxDelimiter -syn case match - -" NOTE: set this if you want the cfg2html.pl formatting directives to be highlighted -if exists("lynx_formatting_directives") - syn match lynxFormatDir "^\.\(h1\|h2\)\s.*$" - syn match lynxFormatDir "^\.\(ex\|nf\)\(\s\+\d\+\)\=$" - syn match lynxFormatDir "^\.fi$" -endif - -hi def link lynxBoolean Boolean -hi def link lynxComment Comment -hi def link lynxDelimiter Special -hi def link lynxFormatDir Special -hi def link lynxNumber Number -hi def link lynxOption Identifier -hi def link lynxTodo Todo - -let b:current_syntax = "lynx" - -let &cpo = s:cpo_save -unlet s:cpo_save - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/mail.vim b/share/vim/vim73/syntax/mail.vim deleted file mode 100644 index c89d2de5..00000000 --- a/share/vim/vim73/syntax/mail.vim +++ /dev/null @@ -1,106 +0,0 @@ -" Vim syntax file -" Language: Mail file -" Previous Maintainer: Felix von Leitner -" Maintainer: Gautam Iyer -" Last Change: Thu 06 Nov 2008 10:10:55 PM PST - -" Quit when a syntax file was already loaded -if exists("b:current_syntax") - finish -endif - -" The mail header is recognized starting with a "keyword:" line and ending -" with an empty line or other line that can't be in the header. All lines of -" the header are highlighted. Headers of quoted messages (quoted with >) are -" also highlighted. - -" Syntax clusters -syn cluster mailHeaderFields contains=mailHeaderKey,mailSubject,mailHeaderEmail,@mailLinks -syn cluster mailLinks contains=mailURL,mailEmail -syn cluster mailQuoteExps contains=mailQuoteExp1,mailQuoteExp2,mailQuoteExp3,mailQuoteExp4,mailQuoteExp5,mailQuoteExp6 - -syn case match -" For "From " matching case is required. The "From " is not matched in quoted -" emails -" According to RFC 2822 any printable ASCII character can appear in a field -" name, except ':'. -syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 fold -syn match mailHeaderKey contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$" - -" Nothing else depends on case. -syn case ignore - -" Headers in properly quoted (with "> " or ">") emails are matched -syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 fold - -" Usenet headers -syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$" - - -syn region mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$" -syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" fold -syn match mailHeaderKey contained contains=@NoSpell "\v(^(\> ?)*)@<=date:" -syn match mailSubject contained "\v^subject:.*$" fold -syn match mailSubject contained contains=@NoSpell "\v(^(\> ?)+)@<=subject:.*$" - -" Anything in the header between < and > is an email address -syn match mailHeaderEmail contained contains=@NoSpell "<.\{-}>" - -" Mail Signatures. (Begin with "-- ", end with change in quote level) -syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1 fold -syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1 fold - -" Treat verbatim Text special. -syn region mailVerbatim contains=@NoSpell keepend start="^#v+$" end="^#v-$" fold -syn region mailVerbatim contains=@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)#v+$" end="\z1#v-$" fold - -" URLs start with a known protocol or www,web,w3. -syn match mailURL contains=@NoSpell `\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^' <>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^' <>"]+)[a-z0-9/]` -syn match mailEmail contains=@NoSpell "\v[_=a-z\./+0-9-]+\@[a-z0-9._-]+\a{2}" - -" Make sure quote markers in regions (header / signature) have correct color -syn match mailQuoteExp1 contained "\v^(\> ?)" -syn match mailQuoteExp2 contained "\v^(\> ?){2}" -syn match mailQuoteExp3 contained "\v^(\> ?){3}" -syn match mailQuoteExp4 contained "\v^(\> ?){4}" -syn match mailQuoteExp5 contained "\v^(\> ?){5}" -syn match mailQuoteExp6 contained "\v^(\> ?){6}" - -" Even and odd quoted lines. Order is important here! -syn region mailQuoted6 keepend contains=mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold -syn region mailQuoted5 keepend contains=mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold -syn region mailQuoted4 keepend contains=mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold -syn region mailQuoted3 keepend contains=mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold -syn region mailQuoted2 keepend contains=mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{1}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold -syn region mailQuoted1 keepend contains=mailQuoted2,mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z([a-z]\+>\|[]|}>]\)" end="^\z1\@!" fold - -" Need to sync on the header. Assume we can do that within 100 lines -if exists("mail_minlines") - exec "syn sync minlines=" . mail_minlines -else - syn sync minlines=100 -endif - -" Define the default highlighting. -hi def link mailVerbatim Special -hi def link mailHeader Statement -hi def link mailHeaderKey Type -hi def link mailSignature PreProc -hi def link mailHeaderEmail mailEmail -hi def link mailEmail Special -hi def link mailURL String -hi def link mailSubject LineNR -hi def link mailQuoted1 Comment -hi def link mailQuoted3 mailQuoted1 -hi def link mailQuoted5 mailQuoted1 -hi def link mailQuoted2 Identifier -hi def link mailQuoted4 mailQuoted2 -hi def link mailQuoted6 mailQuoted2 -hi def link mailQuoteExp1 mailQuoted1 -hi def link mailQuoteExp2 mailQuoted2 -hi def link mailQuoteExp3 mailQuoted3 -hi def link mailQuoteExp4 mailQuoted4 -hi def link mailQuoteExp5 mailQuoted5 -hi def link mailQuoteExp6 mailQuoted6 - -let b:current_syntax = "mail" diff --git a/share/vim/vim73/syntax/mailcap.vim b/share/vim/vim73/syntax/mailcap.vim deleted file mode 100644 index 547db736..00000000 --- a/share/vim/vim73/syntax/mailcap.vim +++ /dev/null @@ -1,54 +0,0 @@ -" Vim syntax file -" Language: Mailcap configuration file -" Maintainer: Doug Kearns -" Last Change: 2004 Nov 27 -" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/syntax/mailcap.vim - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn match mailcapComment "^#.*" - -syn region mailcapString start=+"+ end=+"+ contains=mailcapSpecial oneline - -syn match mailcapDelimiter "\\\@" -syn match mailcapFieldname "\<\(compose\|composetyped\|print\|edit\|test\|x11-bitmap\|nametemplate\|textualnewlines\|description\|x-\w+\)\>\ze\s*=" -syn match mailcapTypeField "^\(text\|image\|audio\|video\|application\|message\|multipart\|model\|x-[[:graph:]]\+\)\(/\(\*\|[[:graph:]]\+\)\)\=\ze\s*;" -syn case match - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_mailcap_syntax_inits") - if version < 508 - let did_mailcap_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink mailcapComment Comment - HiLink mailcapDelimiter Delimiter - HiLink mailcapFlag Statement - HiLink mailcapFieldname Statement - HiLink mailcapSpecial Identifier - HiLink mailcapTypeField Type - HiLink mailcapString String - - delcommand HiLink -endif - -let b:current_syntax = "mailcap" - -" vim: tabstop=8 diff --git a/share/vim/vim73/syntax/make.vim b/share/vim/vim73/syntax/make.vim deleted file mode 100644 index e9d7ee99..00000000 --- a/share/vim/vim73/syntax/make.vim +++ /dev/null @@ -1,137 +0,0 @@ -" Vim syntax file -" Language: Makefile -" Maintainer: Claudio Fleiner -" URL: http://www.fleiner.com/vim/syntax/make.vim -" Last Change: 2008 Aug 04 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" some special characters -syn match makeSpecial "^\s*[@+-]\+" -syn match makeNextLine "\\\n\s*" - -" some directives -syn match makePreCondit "^ *\(ifeq\>\|else\>\|endif\>\|ifneq\>\|ifdef\>\|ifndef\>\)" -syn match makeInclude "^ *[-s]\=include" -syn match makeStatement "^ *vpath" -syn match makeExport "^ *\(export\|unexport\)\>" -syn match makeOverride "^ *override" -hi link makeOverride makeStatement -hi link makeExport makeStatement - -" Koehler: catch unmatched define/endef keywords. endef only matches it is by itself on a line -syn region makeDefine start="^\s*define\s" end="^\s*endef\s*$" contains=makeStatement,makeIdent,makePreCondit,makeDefine - -" Microsoft Makefile specials -syn case ignore -syn match makeInclude "^! *include" -syn match makePreCondit "! *\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|elseif\|else if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>" -syn case match - -" identifiers -syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent,makeSString,makeDString -syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent,makeSString,makeDString -syn match makeIdent "\$\$\w*" -syn match makeIdent "\$[^({]" -syn match makeIdent "^ *\a\w*\s*[:+?!*]="me=e-2 -syn match makeIdent "^ *\a\w*\s*="me=e-1 -syn match makeIdent "%" - -" Makefile.in variables -syn match makeConfig "@[A-Za-z0-9_]\+@" - -" make targets -" syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>" -syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2 nextgroup=makeSource -syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1 nextgroup=makeSource - -syn region makeTarget transparent matchgroup=makeTarget start="^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"rs=e-1 end=";"re=e-1,me=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine skipnl nextGroup=makeCommands -syn match makeTarget "^[A-Za-z0-9_./$()%*@-][A-Za-z0-9_./\t $()%*@-]*::\=\s*$" contains=makeIdent,makeSpecTarget skipnl nextgroup=makeCommands,makeCommandError - -syn region makeSpecTarget transparent matchgroup=makeSpecTarget start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*:\{1,2}[^:=]"rs=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine skipnl nextGroup=makeCommands -syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*::\=\s*$" contains=makeIdent skipnl nextgroup=makeCommands,makeCommandError - -syn match makeCommandError "^\s\+\S.*" contained -syn region makeCommands start=";"hs=s+1 start="^\t" end="^[^\t#]"me=e-1,re=e-1 end="^$" contained contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString nextgroup=makeCommandError -syn match makeCmdNextLine "\\\n."he=e-1 contained - - -" Statements / Functions (GNU make) -syn match makeStatement contained "(\(subst\|abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1 - -" Comment -if exists("make_microsoft") - syn match makeComment "#.*" contains=@Spell,makeTodo -elseif !exists("make_no_comments") - syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo - syn match makeComment "#$" contains=@Spell -endif -syn keyword makeTodo TODO FIXME XXX contained - -" match escaped quotes and any other escaped character -" except for $, as a backslash in front of a $ does -" not make it a standard character, but instead it will -" still act as the beginning of a variable -" The escaped char is not highlightet currently -syn match makeEscapedChar "\\[^$]" - - -syn region makeDString start=+\(\\\)\@= 508 || !exists("did_make_syn_inits") - if version < 508 - let did_make_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink makeNextLine makeSpecial - HiLink makeCmdNextLine makeSpecial - HiLink makeSpecTarget Statement - if !exists("make_no_commands") - HiLink makeCommands Number - endif - HiLink makeImplicit Function - HiLink makeTarget Function - HiLink makeInclude Include - HiLink makePreCondit PreCondit - HiLink makeStatement Statement - HiLink makeIdent Identifier - HiLink makeSpecial Special - HiLink makeComment Comment - HiLink makeDString String - HiLink makeSString String - HiLink makeBString Function - HiLink makeError Error - HiLink makeTodo Todo - HiLink makeDefine Define - HiLink makeCommandError Error - HiLink makeConfig PreCondit - delcommand HiLink -endif - -let b:current_syntax = "make" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/markdown.vim b/share/vim/vim73/syntax/markdown.vim deleted file mode 100644 index 4ec5dd54..00000000 --- a/share/vim/vim73/syntax/markdown.vim +++ /dev/null @@ -1,105 +0,0 @@ -" Vim syntax file -" Language: Markdown -" Maintainer: Tim Pope -" Filenames: *.markdown -" Last Change: 2010 May 21 - -if exists("b:current_syntax") - finish -endif - -runtime! syntax/html.vim -unlet! b:current_syntax - -syn sync minlines=10 -syn case ignore - -syn match markdownValid '[<>]\S\@!' -syn match markdownValid '&\%(#\=\w*;\)\@!' - -syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock - -syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule -syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop - -syn match markdownH1 ".\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule -syn match markdownH2 ".\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule - -syn match markdownHeadingRule "^[=-]\+$" contained - -syn region markdownH1 matchgroup=markdownHeadingDelimiter start="##\@!" end="#*\s*$" keepend oneline contains=@markdownInline contained -syn region markdownH2 matchgroup=markdownHeadingDelimiter start="###\@!" end="#*\s*$" keepend oneline contains=@markdownInline contained -syn region markdownH3 matchgroup=markdownHeadingDelimiter start="####\@!" end="#*\s*$" keepend oneline contains=@markdownInline contained -syn region markdownH4 matchgroup=markdownHeadingDelimiter start="#####\@!" end="#*\s*$" keepend oneline contains=@markdownInline contained -syn region markdownH5 matchgroup=markdownHeadingDelimiter start="######\@!" end="#*\s*$" keepend oneline contains=@markdownInline contained -syn region markdownH6 matchgroup=markdownHeadingDelimiter start="#######\@!" end="#*\s*$" keepend oneline contains=@markdownInline contained - -syn match markdownBlockquote ">\s" contained nextgroup=@markdownBlock - -syn region markdownCodeBlock start=" \|\t" end="$" contained - -" TODO: real nesting -syn match markdownListMarker " \{0,4\}[-*+]\%(\s\+\S\)\@=" contained -syn match markdownOrderedListMarker " \{0,4}\<\d\+\.\%(\s*\S\)\@=" contained - -syn match markdownRule "\* *\* *\*[ *]*$" contained -syn match markdownRule "- *- *-[ -]*$" contained - -syn match markdownLineBreak "\s\{2,\}$" - -syn region markdownIdDeclaration matchgroup=markdownLinkDelimiter start="^ \{0,3\}!\=\[" end="\]:" oneline keepend nextgroup=markdownUrl skipwhite -syn match markdownUrl "\S\+" nextgroup=markdownUrlTitle skipwhite contained -syn region markdownUrl matchgroup=markdownUrlDelimiter start="<" end=">" oneline keepend nextgroup=markdownUrlTitle skipwhite contained -syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+"+ keepend contained -syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained -syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained - -syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^]]*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" keepend nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart -syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained -syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained -syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline - -syn region markdownItalic start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart -syn region markdownItalic start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart -syn region markdownBold start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart -syn region markdownBold start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart -syn region markdownBoldItalic start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart -syn region markdownBoldItalic start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart -syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" transparent keepend contains=markdownLineStart -syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart - -syn match markdownEscape "\\[][\\`*_{}()#+.!-]" - -hi def link markdownH1 htmlH1 -hi def link markdownH2 htmlH2 -hi def link markdownH3 htmlH3 -hi def link markdownH4 htmlH4 -hi def link markdownH5 htmlH5 -hi def link markdownH6 htmlH6 -hi def link markdownHeadingRule markdownRule -hi def link markdownHeadingDelimiter Delimiter -hi def link markdownOrderedListMarker markdownListMarker -hi def link markdownListMarker htmlTagName -hi def link markdownBlockquote Comment -hi def link markdownRule PreProc - -hi def link markdownLinkText htmlLink -hi def link markdownIdDeclaration Typedef -hi def link markdownId Type -hi def link markdownAutomaticLink markdownUrl -hi def link markdownUrl Float -hi def link markdownUrlTitle String -hi def link markdownIdDelimiter markdownLinkDelimiter -hi def link markdownUrlDelimiter htmlTag -hi def link markdownUrlTitleDelimiter Delimiter - -hi def link markdownItalic htmlItalic -hi def link markdownBold htmlBold -hi def link markdownBoldItalic htmlBoldItalic -hi def link markdownCodeDelimiter Delimiter - -hi def link markdownEscape Special - -let b:current_syntax = "markdown" - -" vim:set sw=2: diff --git a/share/vim/vim73/syntax/masm.vim b/share/vim/vim73/syntax/masm.vim deleted file mode 100644 index 4ffd22b9..00000000 --- a/share/vim/vim73/syntax/masm.vim +++ /dev/null @@ -1,343 +0,0 @@ -" Vim syntax file -" Language: Microsoft Macro Assembler (80x86) -" Orig Author: Rob Brady -" Maintainer: Wu Yongwei -" Last Change: $Date: 2007/04/21 13:20:15 $ -" $Revision: 1.44 $ - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case ignore - - -syn match masmIdentifier "[@a-z_$?][@a-z0-9_$?]*" -syn match masmLabel "^\s*[@a-z_$?][@a-z0-9_$?]*:"he=e-1 - -syn match masmDecimal "[-+]\?\d\+[dt]\?" -syn match masmBinary "[-+]\?[0-1]\+[by]" "put this before hex or 0bfh dies! -syn match masmOctal "[-+]\?[0-7]\+[oq]" -syn match masmHexadecimal "[-+]\?[0-9]\x*h" -syn match masmFloatRaw "[-+]\?[0-9]\x*r" -syn match masmFloat "[-+]\?\d\+\.\(\d*\(E[-+]\?\d\+\)\?\)\?" - -syn match masmComment ";.*" contains=@Spell -syn region masmComment start=+COMMENT\s*\z(\S\)+ end=+\z1.*+ contains=@Spell -syn region masmString start=+'+ end=+'+ oneline contains=@Spell -syn region masmString start=+"+ end=+"+ oneline contains=@Spell - -syn region masmTitleArea start=+\" -syn match masmOperator "CARRY?" -syn match masmOperator "OVERFLOW?" -syn match masmOperator "PARITY?" -syn match masmOperator "SIGN?" -syn match masmOperator "ZERO?" -syn keyword masmDirective ALIAS ASSUME CATSTR COMM DB DD DF DOSSEG DQ DT -syn keyword masmDirective DW ECHO ELSE ELSEIF ELSEIF1 ELSEIF2 ELSEIFB -syn keyword masmDirective ELSEIFDEF ELSEIFDIF ELSEIFDIFI ELSEIFE -syn keyword masmDirective ELSEIFIDN ELSEIFIDNI ELSEIFNB ELSEIFNDEF END -syn keyword masmDirective ENDIF ENDM ENDP ENDS EQU EVEN EXITM EXTERN -syn keyword masmDirective EXTERNDEF EXTRN FOR FORC GOTO GROUP IF IF1 IF2 -syn keyword masmDirective IFB IFDEF IFDIF IFDIFI IFE IFIDN IFIDNI IFNB -syn keyword masmDirective IFNDEF INCLUDE INCLUDELIB INSTR INVOKE IRP -syn keyword masmDirective IRPC LABEL LOCAL MACRO NAME OPTION ORG PAGE -syn keyword masmDirective POPCONTEXT PROC PROTO PUBLIC PURGE PUSHCONTEXT -syn keyword masmDirective RECORD REPEAT REPT SEGMENT SIZESTR STRUC -syn keyword masmDirective STRUCT SUBSTR SUBTITLE SUBTTL TEXTEQU TITLE -syn keyword masmDirective TYPEDEF UNION WHILE -syn match masmDirective "\.8086\>" -syn match masmDirective "\.8087\>" -syn match masmDirective "\.NO87\>" -syn match masmDirective "\.186\>" -syn match masmDirective "\.286\>" -syn match masmDirective "\.286C\>" -syn match masmDirective "\.286P\>" -syn match masmDirective "\.287\>" -syn match masmDirective "\.386\>" -syn match masmDirective "\.386C\>" -syn match masmDirective "\.386P\>" -syn match masmDirective "\.387\>" -syn match masmDirective "\.486\>" -syn match masmDirective "\.486P\>" -syn match masmDirective "\.586\>" -syn match masmDirective "\.586P\>" -syn match masmDirective "\.686\>" -syn match masmDirective "\.686P\>" -syn match masmDirective "\.K3D\>" -syn match masmDirective "\.MMX\>" -syn match masmDirective "\.XMM\>" -syn match masmDirective "\.ALPHA\>" -syn match masmDirective "\.DOSSEG\>" -syn match masmDirective "\.SEQ\>" -syn match masmDirective "\.CODE\>" -syn match masmDirective "\.CONST\>" -syn match masmDirective "\.DATA\>" -syn match masmDirective "\.DATA?" -syn match masmDirective "\.EXIT\>" -syn match masmDirective "\.FARDATA\>" -syn match masmDirective "\.FARDATA?" -syn match masmDirective "\.MODEL\>" -syn match masmDirective "\.STACK\>" -syn match masmDirective "\.STARTUP\>" -syn match masmDirective "\.IF\>" -syn match masmDirective "\.ELSE\>" -syn match masmDirective "\.ELSEIF\>" -syn match masmDirective "\.ENDIF\>" -syn match masmDirective "\.REPEAT\>" -syn match masmDirective "\.UNTIL\>" -syn match masmDirective "\.UNTILCXZ\>" -syn match masmDirective "\.WHILE\>" -syn match masmDirective "\.ENDW\>" -syn match masmDirective "\.BREAK\>" -syn match masmDirective "\.CONTINUE\>" -syn match masmDirective "\.ERR\>" -syn match masmDirective "\.ERR1\>" -syn match masmDirective "\.ERR2\>" -syn match masmDirective "\.ERRB\>" -syn match masmDirective "\.ERRDEF\>" -syn match masmDirective "\.ERRDIF\>" -syn match masmDirective "\.ERRDIFI\>" -syn match masmDirective "\.ERRE\>" -syn match masmDirective "\.ERRIDN\>" -syn match masmDirective "\.ERRIDNI\>" -syn match masmDirective "\.ERRNB\>" -syn match masmDirective "\.ERRNDEF\>" -syn match masmDirective "\.ERRNZ\>" -syn match masmDirective "\.LALL\>" -syn match masmDirective "\.SALL\>" -syn match masmDirective "\.XALL\>" -syn match masmDirective "\.LFCOND\>" -syn match masmDirective "\.SFCOND\>" -syn match masmDirective "\.TFCOND\>" -syn match masmDirective "\.CREF\>" -syn match masmDirective "\.NOCREF\>" -syn match masmDirective "\.XCREF\>" -syn match masmDirective "\.LIST\>" -syn match masmDirective "\.NOLIST\>" -syn match masmDirective "\.XLIST\>" -syn match masmDirective "\.LISTALL\>" -syn match masmDirective "\.LISTIF\>" -syn match masmDirective "\.NOLISTIF\>" -syn match masmDirective "\.LISTMACRO\>" -syn match masmDirective "\.NOLISTMACRO\>" -syn match masmDirective "\.LISTMACROALL\>" -syn match masmDirective "\.FPO\>" -syn match masmDirective "\.RADIX\>" -syn match masmDirective "\.SAFESEH\>" -syn match masmDirective "%OUT\>" -syn match masmDirective "ALIGN\>" -syn match masmOption "ALIGN([0-9]\+)" - -syn keyword masmRegister AX BX CX DX SI DI BP SP -syn keyword masmRegister CS DS SS ES FS GS -syn keyword masmRegister AH BH CH DH AL BL CL DL -syn keyword masmRegister EAX EBX ECX EDX ESI EDI EBP ESP -syn keyword masmRegister CR0 CR2 CR3 CR4 -syn keyword masmRegister DR0 DR1 DR2 DR3 DR6 DR7 -syn keyword masmRegister TR3 TR4 TR5 TR6 TR7 -syn match masmRegister "ST([0-7])" - - -" Instruction prefixes -syn keyword masmOpcode LOCK REP REPE REPNE REPNZ REPZ - -" 8086/8088 opcodes -syn keyword masmOpcode AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD -syn keyword masmOpcode CLI CMC CMP CMPS CMPSB CMPSW CWD DAA DAS DEC -syn keyword masmOpcode DIV ESC HLT IDIV IMUL IN INC INT INTO IRET -syn keyword masmOpcode JCXZ JMP LAHF LDS LEA LES LODS LODSB LODSW -syn keyword masmOpcode LOOP LOOPE LOOPEW LOOPNE LOOPNEW LOOPNZ -syn keyword masmOpcode LOOPNZW LOOPW LOOPZ LOOPZW MOV MOVS MOVSB -syn keyword masmOpcode MOVSW MUL NEG NOP NOT OR OUT POP POPF PUSH -syn keyword masmOpcode PUSHF RCL RCR RET RETF RETN ROL ROR SAHF SAL -syn keyword masmOpcode SAR SBB SCAS SCASB SCASW SHL SHR STC STD STI -syn keyword masmOpcode STOS STOSB STOSW SUB TEST WAIT XCHG XLAT XLATB -syn keyword masmOpcode XOR -syn match masmOpcode "J\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" - -" 80186 opcodes -syn keyword masmOpcode BOUND ENTER INS INSB INSW LEAVE OUTS OUTSB -syn keyword masmOpcode OUTSW POPA PUSHA PUSHW - -" 80286 opcodes -syn keyword masmOpcode ARPL LAR LSL SGDT SIDT SLDT SMSW STR VERR VERW - -" 80286/80386 privileged opcodes -syn keyword masmOpcode CLTS LGDT LIDT LLDT LMSW LTR - -" 80386 opcodes -syn keyword masmOpcode BSF BSR BT BTC BTR BTS CDQ CMPSD CWDE INSD -syn keyword masmOpcode IRETD IRETDF IRETF JECXZ LFS LGS LODSD LOOPD -syn keyword masmOpcode LOOPED LOOPNED LOOPNZD LOOPZD LSS MOVSD MOVSX -syn keyword masmOpcode MOVZX OUTSD POPAD POPFD PUSHAD PUSHD PUSHFD -syn keyword masmOpcode SCASD SHLD SHRD STOSD -syn match masmOpcode "SET\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" - -" 80486 opcodes -syn keyword masmOpcode BSWAP CMPXCHG INVD INVLPG WBINVD XADD - -" Floating-point opcodes as of 487 -syn keyword masmOpFloat F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX -syn keyword masmOpFloat FNCLEX FCOM FCOMP FCOMPP FCOS FDECSTP FDISI -syn keyword masmOpFloat FNDISI FDIV FDIVP FDIVR FDIVRP FENI FNENI -syn keyword masmOpFloat FFREE FIADD FICOM FICOMP FIDIV FIDIVR FILD -syn keyword masmOpFloat FIMUL FINCSTP FINIT FNINIT FIST FISTP FISUB -syn keyword masmOpFloat FISUBR FLD FLDCW FLDENV FLDLG2 FLDLN2 FLDL2E -syn keyword masmOpFloat FLDL2T FLDPI FLDZ FLD1 FMUL FMULP FNOP FPATAN -syn keyword masmOpFloat FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FNSAVE -syn keyword masmOpFloat FSCALE FSETPM FSIN FSINCOS FSQRT FST FSTCW -syn keyword masmOpFloat FNSTCW FSTENV FNSTENV FSTP FSTSW FNSTSW FSUB -syn keyword masmOpFloat FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP FUCOMPP -syn keyword masmOpFloat FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1 - -" Floating-point opcodes in Pentium and later processors -syn keyword masmOpFloat FCMOVE FCMOVNE FCMOVB FCMOVBE FCMOVNB FCMOVNBE -syn keyword masmOpFloat FCMOVU FCMOVNU FCOMI FUCOMI FCOMIP FUCOMIP -syn keyword masmOpFloat FXSAVE FXRSTOR - -" MMX opcodes (Pentium w/ MMX, Pentium II, and later) -syn keyword masmOpcode MOVD MOVQ PACKSSWB PACKSSDW PACKUSWB -syn keyword masmOpcode PUNPCKHBW PUNPCKHWD PUNPCKHDQ -syn keyword masmOpcode PUNPCKLBW PUNPCKLWD PUNPCKLDQ -syn keyword masmOpcode PADDB PADDW PADDD PADDSB PADDSW PADDUSB PADDUSW -syn keyword masmOpcode PSUBB PSUBW PSUBD PSUBSB PSUBSW PSUBUSB PSUBUSW -syn keyword masmOpcode PMULHW PMULLW PMADDWD -syn keyword masmOpcode PCMPEQB PCMPEQW PCMPEQD PCMPGTB PCMPGTW PCMPGTD -syn keyword masmOpcode PAND PANDN POR PXOR -syn keyword masmOpcode PSLLW PSLLD PSLLQ PSRLW PSRLD PSRLQ PSRAW PSRAD -syn keyword masmOpcode EMMS - -" SSE opcodes (Pentium III and later) -syn keyword masmOpcode MOVAPS MOVUPS MOVHPS MOVHLPS MOVLPS MOVLHPS -syn keyword masmOpcode MOVMSKPS MOVSS -syn keyword masmOpcode ADDPS ADDSS SUBPS SUBSS MULPS MULSS DIVPS DIVSS -syn keyword masmOpcode RCPPS RCPSS SQRTPS SQRTSS RSQRTPS RSQRTSS -syn keyword masmOpcode MAXPS MAXSS MINPS MINSS -syn keyword masmOpcode CMPPS CMPSS COMISS UCOMISS -syn keyword masmOpcode ANDPS ANDNPS ORPS XORPS -syn keyword masmOpcode SHUFPS UNPCKHPS UNPCKLPS -syn keyword masmOpcode CVTPI2PS CVTSI2SS CVTPS2PI CVTTPS2PI -syn keyword masmOpcode CVTSS2SI CVTTSS2SI -syn keyword masmOpcode LDMXCSR STMXCSR -syn keyword masmOpcode PAVGB PAVGW PEXTRW PINSRW PMAXUB PMAXSW -syn keyword masmOpcode PMINUB PMINSW PMOVMSKB PMULHUW PSADBW PSHUFW -syn keyword masmOpcode MASKMOVQ MOVNTQ MOVNTPS SFENCE -syn keyword masmOpcode PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA - -" SSE2 opcodes (Pentium 4 and later) -syn keyword masmOpcode MOVAPD MOVUPD MOVHPD MOVLPD MOVMSKPD MOVSD -syn keyword masmOpcode ADDPD ADDSD SUBPD SUBSD MULPD MULSD DIVPD DIVSD -syn keyword masmOpcode SQRTPD SQRTSD MAXPD MAXSD MINPD MINSD -syn keyword masmOpcode ANDPD ANDNPD ORPD XORPD -syn keyword masmOpcode CMPPD CMPSD COMISD UCOMISD -syn keyword masmOpcode SHUFPD UNPCKHPD UNPCKLPD -syn keyword masmOpcode CVTPD2PI CVTTPD2PI CVTPI2PD CVTPD2DQ -syn keyword masmOpcode CVTTPD2DQ CVTDQ2PD CVTPS2PD CVTPD2PS -syn keyword masmOpcode CVTSS2SD CVTSD2SS CVTSD2SI CVTTSD2SI CVTSI2SD -syn keyword masmOpcode CVTDQ2PS CVTPS2DQ CVTTPS2DQ -syn keyword masmOpcode MOVDQA MOVDQU MOVQ2DQ MOVDQ2Q PMULUDQ -syn keyword masmOpcode PADDQ PSUBQ PSHUFLW PSHUFHW PSHUFD -syn keyword masmOpcode PSLLDQ PSRLDQ PUNPCKHQDQ PUNPCKLQDQ -syn keyword masmOpcode CLFLUSH LFENCE MFENCE PAUSE MASKMOVDQU -syn keyword masmOpcode MOVNTPD MOVNTDQ MOVNTI - -" SSE3 opcodes (Pentium 4 w/ Hyper-Threading and later) -syn keyword masmOpcode FISTTP LDDQU ADDSUBPS ADDSUBPD -syn keyword masmOpcode HADDPS HSUBPS HADDPD HSUBPD -syn keyword masmOpcode MOVSHDUP MOVSLDUP MOVDDUP MONITOR MWAIT - -" Other opcodes in Pentium and later processors -syn keyword masmOpcode CMPXCHG8B CPUID UD2 -syn keyword masmOpcode RSM RDMSR WRMSR RDPMC RDTSC SYSENTER SYSEXIT -syn match masmOpcode "CMOV\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" - - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_masm_syntax_inits") - if version < 508 - let did_masm_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " The default methods for highlighting. Can be overridden later - HiLink masmLabel PreProc - HiLink masmComment Comment - HiLink masmDirective Statement - HiLink masmType Type - HiLink masmOperator Type - HiLink masmOption Special - HiLink masmRegister Special - HiLink masmString String - HiLink masmText String - HiLink masmTitle Title - HiLink masmOpcode Statement - HiLink masmOpFloat Statement - - HiLink masmHexadecimal Number - HiLink masmDecimal Number - HiLink masmOctal Number - HiLink masmBinary Number - HiLink masmFloatRaw Number - HiLink masmFloat Number - - HiLink masmIdentifier Identifier - - syntax sync minlines=50 - - delcommand HiLink -endif - -let b:current_syntax = "masm" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/matlab.vim b/share/vim/vim73/syntax/matlab.vim deleted file mode 100644 index 7d20368e..00000000 --- a/share/vim/vim73/syntax/matlab.vim +++ /dev/null @@ -1,123 +0,0 @@ -" Vim syntax file -" Language: Matlab -" Maintainer: Maurizio Tranchero - maurizio(.)tranchero(@)gmail(.)com -" Credits: Preben 'Peppe' Guldberg -" Original author: Mario Eusebio -" Last Change: Wed Jan 13 11:12:34 CET 2010 -" - 'global' and 'persistent' keyword are now recognized - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn keyword matlabStatement return -syn keyword matlabLabel case switch -syn keyword matlabConditional else elseif end if otherwise -syn keyword matlabRepeat do for while -" MT_ADDON - added exception-specific keywords -syn keyword matlabExceptions try catch -syn keyword matlabOO classdef properties events methods - -syn keyword matlabTodo contained TODO -syn keyword matlabScope global persistent - -" If you do not want these operators lit, uncommment them and the "hi link" below -syn match matlabArithmeticOperator "[-+]" -syn match matlabArithmeticOperator "\.\=[*/\\^]" -syn match matlabRelationalOperator "[=~]=" -syn match matlabRelationalOperator "[<>]=\=" -syn match matlabLogicalOperator "[&|~]" - -syn match matlabLineContinuation "\.\{3}" - -"syn match matlabIdentifier "\<\a\w*\>" - -" String -" MT_ADDON - added 'skip' in order to deal with 'tic' escaping sequence -syn region matlabString start=+'+ end=+'+ oneline skip=+''+ - -" If you don't like tabs -syn match matlabTab "\t" - -" Standard numbers -syn match matlabNumber "\<\d\+[ij]\=\>" -" floating point number, with dot, optional exponent -syn match matlabFloat "\<\d\+\(\.\d*\)\=\([edED][-+]\=\d\+\)\=[ij]\=\>" -" floating point number, starting with a dot, optional exponent -syn match matlabFloat "\.\d\+\([edED][-+]\=\d\+\)\=[ij]\=\>" - -" Transpose character and delimiters: Either use just [...] or (...) aswell -syn match matlabDelimiter "[][]" -"syn match matlabDelimiter "[][()]" -syn match matlabTransposeOperator "[])a-zA-Z0-9.]'"lc=1 - -syn match matlabSemicolon ";" - -syn match matlabComment "%.*$" contains=matlabTodo,matlabTab -" MT_ADDON - correctly highlights words after '...' as comments -syn match matlabComment "\.\.\..*$" contains=matlabTodo,matlabTab -syn region matlabMultilineComment start=+%{+ end=+%}+ contains=matlabTodo,matlabTab - -syn keyword matlabOperator break zeros default margin round ones rand -syn keyword matlabOperator ceil floor size clear zeros eye mean std cov - -syn keyword matlabFunction error eval function - -syn keyword matlabImplicit abs acos atan asin cos cosh exp log prod sum -syn keyword matlabImplicit log10 max min sign sin sqrt tan reshape - -syn match matlabError "-\=\<\d\+\.\d\+\.[^*/\\^]" -syn match matlabError "-\=\<\d\+\.\d\+[eEdD][-+]\=\d\+\.\([^*/\\^]\)" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_matlab_syntax_inits") - if version < 508 - let did_matlab_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink matlabTransposeOperator matlabOperator - HiLink matlabOperator Operator - HiLink matlabLineContinuation Special - HiLink matlabLabel Label - HiLink matlabConditional Conditional - HiLink matlabExceptions Conditional - HiLink matlabRepeat Repeat - HiLink matlabTodo Todo - HiLink matlabString String - HiLink matlabDelimiter Identifier - HiLink matlabTransposeOther Identifier - HiLink matlabNumber Number - HiLink matlabFloat Float - HiLink matlabFunction Function - HiLink matlabError Error - HiLink matlabImplicit matlabStatement - HiLink matlabStatement Statement - HiLink matlabOO Statement - HiLink matlabSemicolon SpecialChar - HiLink matlabComment Comment - HiLink matlabMultilineComment Comment - HiLink matlabScope Type - - HiLink matlabArithmeticOperator matlabOperator - HiLink matlabRelationalOperator matlabOperator - HiLink matlabLogicalOperator matlabOperator - -"optional highlighting - "HiLink matlabIdentifier Identifier - "HiLink matlabTab Error - - delcommand HiLink -endif - -let b:current_syntax = "matlab" - -"EOF vim: ts=8 noet tw=100 sw=8 sts=0 diff --git a/share/vim/vim73/syntax/mma.vim b/share/vim/vim73/syntax/mma.vim deleted file mode 100644 index f48dccee..00000000 --- a/share/vim/vim73/syntax/mma.vim +++ /dev/null @@ -1,325 +0,0 @@ -" Vim syntax file -" Language: Mathematica -" Maintainer: steve layland -" Last Change: Thu May 19 21:36:04 CDT 2005 -" Source: http://members.wri.com/layland/vim/syntax/mma.vim -" http://vim.sourceforge.net/scripts/script.php?script_id=1273 -" Id: $Id: mma.vim,v 1.4 2006/04/14 20:40:38 vimboss Exp $ -" NOTE: -" -" Empty .m files will automatically be presumed as Matlab files -" unless you have the following in your .vimrc: -" -" let filetype_m="mma" -" -" I also recommend setting the default 'Comment' hilighting to something -" other than the color used for 'Function', since both are plentiful in -" most mathematica files, and they are often the same color (when using -" background=dark). -" -" Credits: -" o Original Mathematica syntax version written by -" Wolfgang Waltenberger -" o Some ideas like the CommentStar,CommentTitle were adapted -" from the Java vim syntax file by Claudio Fleiner. Thanks! -" o Everything else written by steve -" -" Bugs: -" o Vim 6.1 didn't really have support for character classes -" of other named character classes. For example, [\a\d] -" didn't work. Therefore, a lot of this code uses explicit -" character classes instead: [0-9a-zA-Z] -" -" TODO: -" folding -" fix nesting -" finish populating popular symbols - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Group Definitions: -syntax cluster mmaNotes contains=mmaTodo,mmaFixme -syntax cluster mmaComments contains=mmaComment,mmaFunctionComment,mmaItem,mmaFunctionTitle,mmaCommentStar -syntax cluster mmaCommentStrings contains=mmaLooseQuote,mmaCommentString,mmaUnicode -syntax cluster mmaStrings contains=@mmaCommentStrings,mmaString -syntax cluster mmaTop contains=mmaOperator,mmaGenericFunction,mmaPureFunction,mmaVariable - -" Predefined Constants: -" to list all predefined Symbols would be too insane... -" it's probably smarter to define a select few, and get the rest from -" context if absolutely necessary. -" TODO - populate this with other often used Symbols - -" standard fixed symbols: -syntax keyword mmaVariable True False None Automatic All Null C General - -" mathematical constants: -syntax keyword mmaVariable Pi I E Infinity ComplexInfinity Indeterminate GoldenRatio EulerGamma Degree Catalan Khinchin Glaisher - -" stream data / atomic heads: -syntax keyword mmaVariable Byte Character Expression Number Real String Word EndOfFile Integer Symbol - -" sets: -syntax keyword mmaVariable Integers Complexes Reals Booleans Rationals - -" character classes: -syntax keyword mmaPattern DigitCharacter LetterCharacter WhitespaceCharacter WordCharacter EndOfString StartOfString EndOfLine StartOfLine WordBoundary - -" SelectionMove directions/units: -syntax keyword mmaVariable Next Previous After Before Character Word Expression TextLine CellContents Cell CellGroup EvaluationCell ButtonCell GeneratedCell Notebook -syntax keyword mmaVariable CellTags CellStyle CellLabel - -" TableForm positions: -syntax keyword mmaVariable Above Below Left Right - -" colors: -syntax keyword mmaVariable Black Blue Brown Cyan Gray Green Magenta Orange Pink Purple Red White Yellow - -" function attributes -syntax keyword mmaVariable Protected Listable OneIdentity Orderless Flat Constant NumericFunction Locked ReadProtected HoldFirst HoldRest HoldAll HoldAllComplete SequenceHold NHoldFirst NHoldRest NHoldAll Temporary Stub - -" Comment Sections: -" this: -" :that: -syntax match mmaItem "\%(^[( |*\t]*\)\@<=\%(:\+\|\w\)\w\+\%( \w\+\)\{0,3}:" contained contains=@mmaNotes - -" Comment Keywords: -syntax keyword mmaTodo TODO NOTE HEY contained -syntax match mmaTodo "X\{3,}" contained -syntax keyword mmaFixme FIX[ME] FIXTHIS BROKEN contained -syntax match mmaFixme "BUG\%( *\#\=[0-9]\+\)\=" contained -" yay pirates... -syntax match mmaFixme "\%(Y\=A\+R\+G\+\|GRR\+\|CR\+A\+P\+\)\%(!\+\)\=" contained - -" EmPHAsis: -" this unnecessary, but whatever :) -syntax match mmaemPHAsis "\%(^\|\s\)\([_/]\)[a-zA-Z0-9]\+\%([- \t':]\+[a-zA-Z0-9]\+\)*\1\%(\s\|$\)" contained contains=mmaemPHAsis -syntax match mmaemPHAsis "\%(^\|\s\)(\@]\@!" contains=mmaOperator -"pattern default: -syntax match mmaPattern ": *[^ ,]\+[\], ]\@=" contains=@mmaCommentStrings,@mmaTop,mmaOperator -"pattern head/test: -syntax match mmaPattern "[A-Za-z0-9`]*_\+\%(\a\+\)\=\%(?([^)]\+)\|?[^\]},]\+\)\=" contains=@mmaTop,@mmaCommentStrings,mmaPatternError - -" Operators: -" /: ^= ^:= UpValue -" /; Conditional -" := = DownValue -" == === || -" != =!= && Logic -" >= <= < > -" += -= *= -" /= ++ -- Math -" ^* -" -> :> Rules -" @@ @@@ Apply -" /@ //@ Map -" /. //. Replace -" // @ Function application -" <> ~~ String/Pattern join -" ~ infix operator -" . : Pattern operators -syntax match mmaOperator "\%(@\{1,3}\|//[.@]\=\)" -syntax match mmaOperator "\%(/[;:@.]\=\|\^\=:\==\)" -syntax match mmaOperator "\%([-:=]\=>\|<=\=\)" -"syntax match mmaOperator "\%(++\=\|--\=\|[/+-*]=\|[^*]\)" -syntax match mmaOperator "[*+=^.:?-]" -syntax match mmaOperator "\%(\~\~\=\)" -syntax match mmaOperator "\%(=\{2,3}\|=\=!=\|||\=\|&&\|!\)" contains=ALLBUT,mmaPureFunction - -" Symbol Tags: -" "SymbolName::item" -"syntax match mmaSymbol "`\=[a-zA-Z$]\+[0-9a-zA-Z$]*\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*" contained -syntax match mmaMessage "`\=\([a-zA-Z$]\+[0-9a-zA-Z$]*\)\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*::\a\+" contains=mmaMessageType -syntax match mmaMessageType "::\a\+"hs=s+2 contained - -" Pure Functions: -syntax match mmaPureFunction "#\%(#\|\d\+\)\=" -syntax match mmaPureFunction "&" - -" Named Functions: -" Since everything is pretty much a function, get this straight -" from context -syntax match mmaGenericFunction "[A-Za-z0-9`]\+\s*\%([@[]\|/:\|/\=/@\)\@=" contains=mmaOperator -syntax match mmaGenericFunction "\~\s*[^~]\+\s*\~"hs=s+1,he=e-1 contains=mmaOperator,mmaBoring -syntax match mmaGenericFunction "//\s*[A-Za-z0-9`]\+"hs=s+2 contains=mmaOperator - -" Numbers: -syntax match mmaNumber "\<\%(\d\+\.\=\d*\|\d*\.\=\d\+\)\>" -syntax match mmaNumber "`\d\+\%(\d\@!\.\|\>\)" - -" Special Characters: -" \[Name] named character -" \ooo octal -" \.xx 2 digit hex -" \:xxxx 4 digit hex (multibyte unicode) -syntax match mmaUnicode "\\\[\w\+\d*\]" -syntax match mmaUnicode "\\\%(\x\{3}\|\.\x\{2}\|:\x\{4}\)" - -" Syntax Errors: -syntax match mmaError "\*)" containedin=ALLBUT,@mmaComments,@mmaStrings -syntax match mmaError "\%([/]{3,}\|[&:|+*?~-]\{3,}\|[.=]\{4,}\|_\@<=\.\{2,}\|`\{2,}\)" containedin=ALLBUT,@mmaComments,@mmaStrings - -" Punctuation: -" things that shouldn't really be highlighted, or highlighted -" in they're own group if you _really_ want. :) -" ( ) { } -" TODO - use Delimiter group? -syntax match mmaBoring "[(){}]" contained - -" ------------------------------------ -" future explorations... -" ------------------------------------ -" Function Arguments: -" anything between brackets [] -" (fold) -"syntax region mmaArgument start="\[" end="\]" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold - -" Lists: -" (fold) -"syntax region mmaLists start="{" end="}" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold - -" Regions: -" (fold) -"syntax region mmaRegion start="(\*\+[^<]* \*)" containedin=ALLBUT,@mmaStrings transparent fold keepend - -" show fold text -set commentstring='(*%s*)' -"set foldtext=MmaFoldText() - -"function MmaFoldText() -" let line = getline(v:foldstart) -" -" let lines = v:foldend-v:foldstart+1 -" -" let sub = substitute(line, '(\*\+|\*\+)|[-*_]\+', '', 'g') -" -" if match(line, '(\*') != -1 -" let lines = lines.' line comment' -" else -" let lines = lines.' lines' -" endif -" -" return v:folddashes.' '.lines.' '.sub -"endf - -"this is slow for computing folds, but it does so accurately -syntax sync fromstart - -" but this seems to do alright for non fold syntax coloring. -" for folding, however, it doesn't get the nesting right. -" TODO - find sync group for multiline modules? ick... - -" sync multi line comments -"syntax sync match syncComments groupthere NONE "\*)" -"syntax sync match syncComments groupthere mmaComment "(\*" - -"set foldmethod=syntax -"set foldnestmax=1 -"set foldminlines=15 - -if version >= 508 || !exists("did_mma_syn_inits") - if version < 508 - let did_mma_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " NOTE - the following links are not guaranteed to - " look good under all colorschemes. You might need to - " :so $VIMRUNTIME/syntax/hitest.vim and tweak these to - " look good in yours - - - HiLink mmaComment Comment - HiLink mmaCommentStar Comment - HiLink mmaFunctionComment Comment - HiLink mmaLooseQuote Comment - HiLink mmaGenericFunction Function - HiLink mmaVariable Identifier -" HiLink mmaSymbol Identifier - HiLink mmaOperator Operator - HiLink mmaPatternOp Operator - HiLink mmaPureFunction Operator - HiLink mmaString String - HiLink mmaCommentString String - HiLink mmaUnicode String - HiLink mmaMessage Type - HiLink mmaNumber Type - HiLink mmaPattern Type - HiLink mmaError Error - HiLink mmaFixme Error - HiLink mmaPatternError Error - HiLink mmaTodo Todo - HiLink mmaemPHAsis Special - HiLink mmaFunctionTitle Special - HiLink mmaMessageType Special - HiLink mmaItem Preproc - - delcommand HiLink -endif - -let b:current_syntax = "mma" diff --git a/share/vim/vim73/syntax/mmix.vim b/share/vim/vim73/syntax/mmix.vim deleted file mode 100644 index 5b6a4437..00000000 --- a/share/vim/vim73/syntax/mmix.vim +++ /dev/null @@ -1,162 +0,0 @@ -" Vim syntax file -" Language: MMIX -" Maintainer: Dirk Hüsken, -" Last Change: Wed Apr 24 01:18:52 CEST 2002 -" Filenames: *.mms -" URL: http://homepages.uni-tuebingen.de/student/dirk.huesken/vim/syntax/mmix.vim - -" Limitations: Comments must start with either % or // -" (preferrably %, Knuth-Style) - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case ignore - -" MMIX data types -syn keyword mmixType byte wyde tetra octa - -" different literals... -syn match decNumber "[0-9]*" -syn match octNumber "0[0-7][0-7]\+" -syn match hexNumber "#[0-9a-fA-F]\+" -syn region mmixString start=+"+ skip=+\\"+ end=+"+ -syn match mmixChar "'.'" - -" ...and more special MMIX stuff -syn match mmixAt "@" -syn keyword mmixSegments Data_Segment Pool_Segment Stack_Segment - -syn match mmixIdentifier "[a-z_][a-z0-9_]*" - -" labels (for branches etc) -syn match mmixLabel "^[a-z0-9_:][a-z0-9_]*" -syn match mmixLabel "[0-9][HBF]" - -" pseudo-operations -syn keyword mmixPseudo is loc greg - -" comments -syn match mmixComment "%.*" -syn match mmixComment "//.*" -syn match mmixComment "^\*.*" - - -syn keyword mmixOpcode trap fcmp fun feql fadd fix fsub fixu -syn keyword mmixOpcode fmul fcmpe fune feqle fdiv fsqrt frem fint - -syn keyword mmixOpcode floti flotui sfloti sflotui i -syn keyword mmixOpcode muli mului divi divui -syn keyword mmixOpcode addi addui subi subui -syn keyword mmixOpcode 2addui 4addui 8addui 16addui -syn keyword mmixOpcode cmpi cmpui negi negui -syn keyword mmixOpcode sli slui sri srui -syn keyword mmixOpcode bnb bzb bpb bodb -syn keyword mmixOpcode bnnb bnzb bnpb bevb -syn keyword mmixOpcode pbnb pbzb pbpb pbodb -syn keyword mmixOpcode pbnnb pbnzb pbnpb pbevb -syn keyword mmixOpcode csni cszi cspi csodi -syn keyword mmixOpcode csnni csnzi csnpi csevi -syn keyword mmixOpcode zsni zszi zspi zsodi -syn keyword mmixOpcode zsnni zsnzi zsnpi zsevi -syn keyword mmixOpcode ldbi ldbui ldwi ldwui -syn keyword mmixOpcode ldti ldtui ldoi ldoui -syn keyword mmixOpcode ldsfi ldhti cswapi ldunci -syn keyword mmixOpcode ldvtsi preldi pregoi goi -syn keyword mmixOpcode stbi stbui stwi stwui -syn keyword mmixOpcode stti sttui stoi stoui -syn keyword mmixOpcode stsfi sthti stcoi stunci -syn keyword mmixOpcode syncdi presti syncidi pushgoi -syn keyword mmixOpcode ori orni nori xori -syn keyword mmixOpcode andi andni nandi nxori -syn keyword mmixOpcode bdifi wdifi tdifi odifi -syn keyword mmixOpcode muxi saddi mori mxori -syn keyword mmixOpcode muli mului divi divui - -syn keyword mmixOpcode flot flotu sflot sflotu -syn keyword mmixOpcode mul mulu div divu -syn keyword mmixOpcode add addu sub subu -syn keyword mmixOpcode 2addu 4addu 8addu 16addu -syn keyword mmixOpcode cmp cmpu neg negu -syn keyword mmixOpcode sl slu sr sru -syn keyword mmixOpcode bn bz bp bod -syn keyword mmixOpcode bnn bnz bnp bev -syn keyword mmixOpcode pbn pbz pbp pbod -syn keyword mmixOpcode pbnn pbnz pbnp pbev -syn keyword mmixOpcode csn csz csp csod -syn keyword mmixOpcode csnn csnz csnp csev -syn keyword mmixOpcode zsn zsz zsp zsod -syn keyword mmixOpcode zsnn zsnz zsnp zsev -syn keyword mmixOpcode ldb ldbu ldw ldwu -syn keyword mmixOpcode ldt ldtu ldo ldou -syn keyword mmixOpcode ldsf ldht cswap ldunc -syn keyword mmixOpcode ldvts preld prego go -syn keyword mmixOpcode stb stbu stw stwu -syn keyword mmixOpcode stt sttu sto stou -syn keyword mmixOpcode stsf stht stco stunc -syn keyword mmixOpcode syncd prest syncid pushgo -syn keyword mmixOpcode or orn nor xor -syn keyword mmixOpcode and andn nand nxor -syn keyword mmixOpcode bdif wdif tdif odif -syn keyword mmixOpcode mux sadd mor mxor - -syn keyword mmixOpcode seth setmh setml setl inch incmh incml incl -syn keyword mmixOpcode orh ormh orml orl andh andmh andml andnl -syn keyword mmixOpcode jmp pushj geta put -syn keyword mmixOpcode pop resume save unsave sync swym get trip -syn keyword mmixOpcode set lda - -" switch back to being case sensitive -syn case match - -" general-purpose and special-purpose registers -syn match mmixRegister "$[0-9]*" -syn match mmixRegister "r[A-Z]" -syn keyword mmixRegister rBB rTT rWW rXX rYY rZZ - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_mmix_syntax_inits") - if version < 508 - let did_mmix_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " The default methods for highlighting. Can be overridden later - HiLink mmixAt Type - HiLink mmixPseudo Type - HiLink mmixRegister Special - HiLink mmixSegments Type - - HiLink mmixLabel Special - HiLink mmixComment Comment - HiLink mmixOpcode Keyword - - HiLink hexNumber Number - HiLink decNumber Number - HiLink octNumber Number - - HiLink mmixString String - HiLink mmixChar String - - HiLink mmixType Type - HiLink mmixIdentifier Normal - HiLink mmixSpecialComment Comment - - " My default color overrides: - " hi mmixSpecialComment ctermfg=red - "hi mmixLabel ctermfg=lightcyan - " hi mmixType ctermbg=black ctermfg=brown - - delcommand HiLink -endif - -let b:current_syntax = "mmix" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/monk.vim b/share/vim/vim73/syntax/monk.vim deleted file mode 100644 index 560b79c6..00000000 --- a/share/vim/vim73/syntax/monk.vim +++ /dev/null @@ -1,228 +0,0 @@ -" Vim syntax file -" Language: Monk (See-Beyond Technologies) -" Maintainer: Mike Litherland -" Last Change: March 6, 2002 - -" This syntax file is good enough for my needs, but others -" may desire more features. Suggestions and bug reports -" are solicited by the author (above). - -" Originally based on the Scheme syntax file by: - -" Maintainer: Dirk van Deun -" Last Change: April 30, 1998 - -" In fact it's almost identical. :) - -" The original author's notes: -" This script incorrectly recognizes some junk input as numerals: -" parsing the complete system of Scheme numerals using the pattern -" language is practically impossible: I did a lax approximation. - -" Initializing: - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case ignore - -" Fascist highlighting: everything that doesn't fit the rules is an error... - -syn match monkError oneline ![^ \t()";]*! -syn match monkError oneline ")" - -" Quoted and backquoted stuff - -syn region monkQuoted matchgroup=Delimiter start="['`]" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc - -syn region monkQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc -syn region monkQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc - -syn region monkStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc -syn region monkStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc - -syn region monkUnquote matchgroup=Delimiter start="," end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc -syn region monkUnquote matchgroup=Delimiter start=",@" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc - -syn region monkUnquote matchgroup=Delimiter start=",(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc -syn region monkUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc - -syn region monkUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc -syn region monkUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc - -" R5RS Scheme Functions and Syntax: - -if version < 600 - set iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_ -else - setlocal iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_ -endif - -syn keyword monkSyntax lambda and or if cond case define let let* letrec -syn keyword monkSyntax begin do delay set! else => -syn keyword monkSyntax quote quasiquote unquote unquote-splicing -syn keyword monkSyntax define-syntax let-syntax letrec-syntax syntax-rules - -syn keyword monkFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car! -syn keyword monkFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr -syn keyword monkFunc cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr -syn keyword monkFunc cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr -syn keyword monkFunc cddaar cddadr cdddar cddddr null? list? list length -syn keyword monkFunc append reverse list-ref memq memv member assq assv assoc -syn keyword monkFunc symbol? symbol->string string->symbol number? complex? -syn keyword monkFunc real? rational? integer? exact? inexact? = < > <= >= -syn keyword monkFunc zero? positive? negative? odd? even? max min + * - / abs -syn keyword monkFunc quotient remainder modulo gcd lcm numerator denominator -syn keyword monkFunc floor ceiling truncate round rationalize exp log sin cos -syn keyword monkFunc tan asin acos atan sqrt expt make-rectangular make-polar -syn keyword monkFunc real-part imag-part magnitude angle exact->inexact -syn keyword monkFunc inexact->exact number->string string->number char=? -syn keyword monkFunc char-ci=? char? char-ci>? char<=? -syn keyword monkFunc char-ci<=? char>=? char-ci>=? char-alphabetic? char? -syn keyword monkFunc char-numeric? char-whitespace? char-upper-case? -syn keyword monkFunc char-lower-case? -syn keyword monkFunc char->integer integer->char char-upcase char-downcase -syn keyword monkFunc string? make-string string string-length string-ref -syn keyword monkFunc string-set! string=? string-ci=? string? string-ci>? string<=? string-ci<=? string>=? -syn keyword monkFunc string-ci>=? substring string-append vector? make-vector -syn keyword monkFunc vector vector-length vector-ref vector-set! procedure? -syn keyword monkFunc apply map for-each call-with-current-continuation -syn keyword monkFunc call-with-input-file call-with-output-file input-port? -syn keyword monkFunc output-port? current-input-port current-output-port -syn keyword monkFunc open-input-file open-output-file close-input-port -syn keyword monkFunc close-output-port eof-object? read read-char peek-char -syn keyword monkFunc write display newline write-char call/cc -syn keyword monkFunc list-tail string->list list->string string-copy -syn keyword monkFunc string-fill! vector->list list->vector vector-fill! -syn keyword monkFunc force with-input-from-file with-output-to-file -syn keyword monkFunc char-ready? load transcript-on transcript-off eval -syn keyword monkFunc dynamic-wind port? values call-with-values -syn keyword monkFunc monk-report-environment null-environment -syn keyword monkFunc interaction-environment - -" Keywords specific to STC's implementation - -syn keyword monkFunc $event-clear $event-parse $event->string $make-event-map -syn keyword monkFunc $resolve-event-definition change-pattern copy copy-strip -syn keyword monkFunc count-data-children count-map-children count-rep data-map -syn keyword monkFunc duplicate duplicate-strip file-check file-lookup get -syn keyword monkFunc insert list-lookup node-has-data? not-verify path? -syn keyword monkFunc path-defined-as-repeating? path-nodeclear path-nodedepth -syn keyword monkFunc path-nodename path-nodeparentname path->string path-valid? -syn keyword monkFunc regex string->path timestamp uniqueid verify - -" Keywords from the Monk function library (from e*Gate 4.1 programmers ref) -syn keyword monkFunc allcap? capitalize char-punctuation? char-substitute -syn keyword monkFunc char-to-char conv count-used-children degc->degf -syn keyword monkFunc diff-two-dates display-error empty-string? fail_id -syn keyword monkFunc fail_id_if fail_translation fail_translation_if -syn keyword monkFunc find-get-after find-get-before get-timestamp julian-date? -syn keyword monkFunc julian->standard leap-year? map-string not-empty-string? -syn keyword monkFunc standard-date? standard->julian string-begins-with? -syn keyword monkFunc string-contains? string-ends-with? string-search-from-left -syn keyword monkFunc string-search-from-right string->ssn strip-punct -syn keyword monkFunc strip-string substring=? symbol-table-get symbol-table-put -syn keyword monkFunc trim-string-left trim-string-right valid-decimal? -syn keyword monkFunc valid-integer? verify-type - -" Writing out the complete description of Scheme numerals without -" using variables is a day's work for a trained secretary... -" This is a useful lax approximation: - -syn match monkNumber oneline "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*" -syn match monkError oneline ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t()";][^ \t()";]*! - -syn match monkOther oneline ![+-][ \t()";]!me=e-1 -syn match monkOther oneline ![+-]$! -" ... so that a single + or -, inside a quoted context, would not be -" interpreted as a number (outside such contexts, it's a monkFunc) - -syn match monkDelimiter oneline !\.[ \t()";]!me=e-1 -syn match monkDelimiter oneline !\.$! -" ... and a single dot is not a number but a delimiter - -" Simple literals: - -syn match monkBoolean oneline "#[tf]" -syn match monkError oneline !#[tf][^ \t()";]\+! - -syn match monkChar oneline "#\\" -syn match monkChar oneline "#\\." -syn match monkError oneline !#\\.[^ \t()";]\+! -syn match monkChar oneline "#\\space" -syn match monkError oneline !#\\space[^ \t()";]\+! -syn match monkChar oneline "#\\newline" -syn match monkError oneline !#\\newline[^ \t()";]\+! - -" This keeps all other stuff unhighlighted, except *stuff* and : - -syn match monkOther oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*, -syn match monkError oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, - -syn match monkOther oneline "\.\.\." -syn match monkError oneline !\.\.\.[^ \t()";]\+! -" ... a special identifier - -syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t()";],me=e-1 -syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$, -syn match monkError oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, - -syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t()";],me=e-1 -syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$, -syn match monkError oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, - -" Monk input and output structures -syn match monkSyntax oneline "\(\~input\|\[I\]->\)[^ \t]*" -syn match monkFunc oneline "\(\~output\|\[O\]->\)[^ \t]*" - -" Non-quoted lists, and strings: - -syn region monkStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL -syn region monkStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL - -syn region monkString start=+"+ skip=+\\[\\"]+ end=+"+ - -" Comments: - -syn match monkComment ";.*$" - -" Synchronization and the wrapping up... - -syn sync match matchPlace grouphere NONE "^[^ \t]" -" ... i.e. synchronize on a line that starts at the left margin - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_monk_syntax_inits") - if version < 508 - let did_monk_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink monkSyntax Statement - HiLink monkFunc Function - - HiLink monkString String - HiLink monkChar Character - HiLink monkNumber Number - HiLink monkBoolean Boolean - - HiLink monkDelimiter Delimiter - HiLink monkConstant Constant - - HiLink monkComment Comment - HiLink monkError Error - - delcommand HiLink -endif - -let b:current_syntax = "monk" diff --git a/share/vim/vim73/syntax/mrxvtrc.vim b/share/vim/vim73/syntax/mrxvtrc.vim deleted file mode 100644 index 878021e0..00000000 --- a/share/vim/vim73/syntax/mrxvtrc.vim +++ /dev/null @@ -1,276 +0,0 @@ -" Created : Wed 26 Apr 2006 01:20:53 AM CDT -" Modified : Mon 27 Aug 2007 12:10:37 PM PDT -" Author : Gautam Iyer -" Description : Vim syntax file for mrxvtrc (for mrxvt-0.5.0 and up) - -" Quit when a syntax file was already loaded -if exists("b:current_syntax") - finish -endif - -syn case match - -" Errors -syn match mrxvtrcError contained '\v\S+' - -" Comments -syn match mrxvtrcComment contains=@Spell '^\s*[!#].*$' -syn match mrxvtrcComment '\v^\s*[#!]\s*\w+[.*]\w+.*:.*' - -" -" Options. -" -syn match mrxvtrcClass '\v^\s*\w+[.*]' - \ nextgroup=mrxvtrcOptions,mrxvtrcProfile,@mrxvtrcPOpts,mrxvtrcError - -" Boolean options -syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError - \ highlightTabOnBell syncTabTitle hideTabbar - \ autohideTabbar bottomTabbar hideButtons - \ syncTabIcon veryBoldFont maximized - \ fullscreen reverseVideo loginShell - \ jumpScroll scrollBar scrollbarRight - \ scrollbarFloating scrollTtyOutputInhibit - \ scrollTtyKeypress transparentForce - \ transparentScrollbar transparentMenubar - \ transparentTabbar tabUsePixmap utmpInhibit - \ visualBell mapAlert meta8 - \ mouseWheelScrollPage multibyte_cursor - \ tripleclickwords showMenu xft xftNomFont - \ xftSlowOutput xftAntialias xftHinting - \ xftAutoHint xftGlobalAdvance cmdAllTabs - \ protectSecondary thai borderLess - \ overrideRedirect broadcast smartResize - \ pointerBlank cursorBlink noSysConfig - \ disableMacros linuxHomeEndKey sessionMgt - \ boldColors smoothResize useFifo veryBright -syn match mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError - \ '\v' -syn match mrxvtrcBColon contained skipwhite - \ nextgroup=mrxvtrcBoolVal,mrxvtrcError ':' -syn case ignore -syn keyword mrxvtrcBoolVal contained skipwhite nextgroup=mrxvtrcError - \ 0 1 yes no on off true false -syn case match - -" Color options -syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcCColon,mrxvtrcError - \ ufBackground textShadow tabForeground - \ itabForeground tabBackground itabBackground - \ scrollColor troughColor highlightColor - \ cursorColor cursorColor2 pointerColor - \ borderColor tintColor -syn match mrxvtrcOptions contained nextgroup=mrxvtrcCColon,mrxvtrcError - \ '\v' -syn match mrxvtrcCColon contained skipwhite - \ nextgroup=mrxvtrcColorVal ':' -syn match mrxvtrcColorVal contained skipwhite nextgroup=mrxvtrcError - \ '\v#[0-9a-fA-F]{6}' - -" Numeric options -syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcNColon,mrxvtrcError - \ maxTabWidth minVisibleTabs - \ scrollbarThickness xftmSize xftSize desktop - \ externalBorder internalBorder lineSpace - \ pointerBlankDelay cursorBlinkInterval - \ shading backgroundFade bgRefreshInterval - \ fading opacity opacityDegree xftPSize -syn match mrxvtrcNColon contained skipwhite - \ nextgroup=mrxvtrcNumVal,mrxvtrcError ':' -syn match mrxvtrcNumVal contained skipwhite nextgroup=mrxvtrcError - \ '\v[+-]?<(0[0-7]+|\d+|0x[0-9a-f]+)>' - -" String options -syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError - \ tabTitle termName title clientName iconName - \ bellCommand backspaceKey deleteKey - \ printPipe cutChars answerbackString - \ smClientID geometry path boldFont xftFont - \ xftmFont xftPFont inputMethod - \ greektoggle_key menu menubarPixmap - \ scrollbarPixmap tabbarPixmap appIcon - \ multichar_encoding initProfileList -syn match mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError - \ '\v' -syn match mrxvtrcSColon contained skipwhite nextgroup=mrxvtrcStrVal ':' -syn match mrxvtrcStrVal contained '\v\S.*' - -" Profile options -syn cluster mrxvtrcPOpts contains=mrxvtrcPSOpts,mrxvtrcPCOpts,mrxvtrcPNOpts -syn match mrxvtrcProfile contained nextgroup=@mrxvtrcPOpts,mrxvtrcError - \ '\vprofile\d+\.' -syn keyword mrxvtrcPSOpts contained nextgroup=mrxvtrcSColon,mrxvtrcError - \ tabTitle command holdExitText holdExitTitle - \ Pixmap workingDirectory titleFormat - \ winTitleFormat -syn keyword mrxvtrcPCOpts contained nextgroup=mrxvtrcCColon,mrxvtrcError - \ background foreground -syn keyword mrxvtrcPNOpts contained nextgroup=mrxvtrcNColon,mrxvtrcError - \ holdExit saveLines - -" scrollbarStyle -syn match mrxvtrcOptions contained skipwhite - \ nextgroup=mrxvtrcSBstyle,mrxvtrcError - \ '\v' - -" -" Highlighting groups -" -hi def link mrxvtrcError Error -hi def link mrxvtrcComment Comment - -hi def link mrxvtrcClass Statement -hi def link mrxvtrcOptions mrxvtrcClass -hi def link mrxvtrcBColon mrxvtrcClass -hi def link mrxvtrcCColon mrxvtrcClass -hi def link mrxvtrcNColon mrxvtrcClass -hi def link mrxvtrcSColon mrxvtrcClass -hi def link mrxvtrcProfile mrxvtrcClass -hi def link mrxvtrcPSOpts mrxvtrcClass -hi def link mrxvtrcPCOpts mrxvtrcClass -hi def link mrxvtrcPNOpts mrxvtrcClass - -hi def link mrxvtrcBoolVal Boolean -hi def link mrxvtrcStrVal String -hi def link mrxvtrcColorVal Constant -hi def link mrxvtrcNumVal Number - -hi def link mrxvtrcSBstyle mrxvtrcStrVal -hi def link mrxvtrcSBalign mrxvtrcStrVal -hi def link mrxvtrcTSmode mrxvtrcStrVal -hi def link mrxvtrcGrkKbd mrxvtrcStrVal -hi def link mrxvtrcXftWt mrxvtrcStrVal -hi def link mrxvtrcXftSl mrxvtrcStrVal -hi def link mrxvtrcXftWd mrxvtrcStrVal -hi def link mrxvtrcXftHt mrxvtrcStrVal -hi def link mrxvtrcPedit mrxvtrcStrVal -hi def link mrxvtrcMod mrxvtrcStrVal -hi def link mrxvtrcSelSty mrxvtrcStrVal - -hi def link mrxvtrcMacro Identifier -hi def link mrxvtrcKey mrxvtrcClass -hi def link mrxvtrcTitle mrxvtrcStrVal -hi def link mrxvtrcShell Special -hi def link mrxvtrcCmd PreProc -hi def link mrxvtrcSubwin mrxvtrcStrVal - -let b:current_syntax = "mrxvtrc" diff --git a/share/vim/vim73/syntax/msidl.vim b/share/vim/vim73/syntax/msidl.vim deleted file mode 100644 index cf270eeb..00000000 --- a/share/vim/vim73/syntax/msidl.vim +++ /dev/null @@ -1,92 +0,0 @@ -" Vim syntax file -" Language: MS IDL (Microsoft dialect of Interface Description Language) -" Maintainer: Vadim Zeitlin -" Last Change: 2003 May 11 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Misc basic -syn match msidlId "[a-zA-Z][a-zA-Z0-9_]*" -syn match msidlUUID "{\?[[:xdigit:]]\{8}-\([[:xdigit:]]\{4}-\)\{3}[[:xdigit:]]\{12}}\?" -syn region msidlString start=/"/ skip=/\\\(\\\\\)*"/ end=/"/ -syn match msidlLiteral "\d\+\(\.\d*\)\=" -syn match msidlLiteral "\.\d\+" -syn match msidlSpecial contained "[]\[{}:]" - -" Comments -syn keyword msidlTodo contained TODO FIXME XXX -syn region msidlComment start="/\*" end="\*/" contains=msidlTodo -syn match msidlComment "//.*" contains=msidlTodo -syn match msidlCommentError "\*/" - -" C style Preprocessor -syn region msidlIncluded contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+ -syn match msidlIncluded contained "<[^>]*>" -syn match msidlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=msidlIncluded,msidlString -syn region msidlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=msidlComment,msidlCommentError -syn region msidlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=msidlLiteral, msidlString - -" Attributes -syn keyword msidlAttribute contained in out propget propput propputref retval -syn keyword msidlAttribute contained aggregatable appobject binadable coclass control custom default defaultbind defaultcollelem defaultvalue defaultvtable dispinterface displaybind dual entry helpcontext helpfile helpstring helpstringdll hidden id immediatebind lcid library licensed nonbrowsable noncreatable nonextensible oleautomation optional object public readonly requestedit restricted source string uidefault usesgetlasterror vararg version -syn match msidlAttribute /uuid(.*)/he=s+4 contains=msidlUUID -syn match msidlAttribute /helpstring(.*)/he=s+10 contains=msidlString -syn region msidlAttributes start="\[" end="]" keepend contains=msidlSpecial,msidlString,msidlAttribute,msidlComment,msidlCommentError - -" Keywords -syn keyword msidlEnum enum -syn keyword msidlImport import importlib -syn keyword msidlStruct interface library coclass -syn keyword msidlTypedef typedef - -" Types -syn keyword msidlStandardType byte char double float hyper int long short void wchar_t -syn keyword msidlStandardType BOOL BSTR HRESULT VARIANT VARIANT_BOOL -syn region msidlSafeArray start="SAFEARRAY(" end=")" contains=msidlStandardType - -syn sync lines=50 - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_msidl_syntax_inits") - if version < 508 - let did_msidl_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink msidlInclude Include - HiLink msidlPreProc PreProc - HiLink msidlPreCondit PreCondit - HiLink msidlDefine Macro - HiLink msidlIncluded String - HiLink msidlString String - HiLink msidlComment Comment - HiLink msidlTodo Todo - HiLink msidlSpecial SpecialChar - HiLink msidlLiteral Number - HiLink msidlUUID Number - - HiLink msidlImport Include - HiLink msidlEnum StorageClass - HiLink msidlStruct Structure - HiLink msidlTypedef Typedef - HiLink msidlAttribute StorageClass - - HiLink msidlStandardType Type - HiLink msidlSafeArray Type - - delcommand HiLink -endif - -let b:current_syntax = "msidl" - -" vi: set ts=8 sw=4: diff --git a/share/vim/vim73/syntax/muttrc.vim b/share/vim/vim73/syntax/muttrc.vim deleted file mode 100644 index 0037f8fb..00000000 --- a/share/vim/vim73/syntax/muttrc.vim +++ /dev/null @@ -1,768 +0,0 @@ -" Vim syntax file -" Language: Mutt setup files -" Original: Preben 'Peppe' Guldberg -" Maintainer: Kyle Wheeler -" Last Change: 9 Aug 2010 - -" This file covers mutt version 1.5.20 (and most of the mercurial tip) -" Included are also a few features from 1.4.2.1 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Set the keyword characters -if version < 600 - set isk=@,48-57,_,- -else - setlocal isk=@,48-57,_,- -endif - -syn match muttrcComment "^# .*$" contains=@Spell -syn match muttrcComment "^#[^ ].*$" -syn match muttrcComment "^#$" -syn match muttrcComment "[^\\]#.*$"lc=1 - -" Escape sequences (back-tick and pipe goes here too) -syn match muttrcEscape +\\[#tnr"'Cc ]+ -syn match muttrcEscape +[`|]+ -syn match muttrcEscape +\\$+ - -" The variables takes the following arguments -"syn match muttrcString contained "=\s*[^ #"'`]\+"lc=1 contains=muttrcEscape -syn region muttrcString contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString -syn region muttrcString contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction -syn match muttrcStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcString,muttrcStringNL - -syn region muttrcShellString matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand - -syn match muttrcRXChars contained /[^\\][][.*?+]\+/hs=s+1 -syn match muttrcRXChars contained /[][|()][.*?+]*/ -syn match muttrcRXChars contained /['"]^/ms=s+1 -syn match muttrcRXChars contained /$['"]/me=e-1 -syn match muttrcRXChars contained /\\/ -" Why does muttrcRXString2 work with one \ when muttrcRXString requires two? -syn region muttrcRXString contained skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars -syn region muttrcRXString contained skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars -syn region muttrcRXString contained skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars -" For some reason, skip refuses to match backslashes here... -syn region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXChars -syn region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXChars -syn region muttrcRXString2 contained skipwhite start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars -syn region muttrcRXString2 contained skipwhite start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars - -" these must be kept synchronized with muttrcRXString, but are intended for -" muttrcRXHooks -syn region muttrcRXHookString contained keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL -syn region muttrcRXHookString contained keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL -syn region muttrcRXHookString contained keepend skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL -syn region muttrcRXHookString contained keepend skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL -syn region muttrcRXHookString contained keepend matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL -syn match muttrcRXHookStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL - -" these are exclusively for args lists (e.g. -rx pat pat pat ...) -syn region muttrcRXPat contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat -syn region muttrcRXPat contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat -syn match muttrcRXPat contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat -syn match muttrcRXDef contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat - -syn match muttrcSpecial +\(['"]\)!\1+ - -syn match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable -syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString -syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString -syn match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable -syn match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable -syn match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable -syn match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn match muttrcSetNumAssignment contained skipwhite /=\s*'\d\+'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -" Now catch some email addresses and headers (purified version from mail.vim) -syn match muttrcEmail "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+" -syn match muttrcHeader "\<\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\=" - -syn match muttrcKeySpecial contained +\%(\\[Cc'"]\|\^\|\\[01]\d\{2}\)+ -syn match muttrcKey contained "\S\+" contains=muttrcKeySpecial,muttrcKeyName -syn region muttrcKey contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=muttrcKeySpecial,muttrcKeyName -syn region muttrcKey contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=muttrcKeySpecial,muttrcKeyName -syn match muttrcKeyName contained "\" -syn match muttrcKeyName contained "\\[trne]" -syn match muttrcKeyName contained "\c<\%(BackSpace\|Delete\|Down\|End\|Enter\|Esc\|Home\|Insert\|Left\|PageDown\|PageUp\|Return\|Right\|Space\|Tab\|Up\)>" -syn match muttrcKeyName contained "" - -syn keyword muttrcVarBool skipwhite contained allow_8bit allow_ansi arrow_cursor ascii_chars askbcc askcc attach_split auto_tag autoedit beep beep_new nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained bounce_delivered braille_friendly check_new check_mbox_size nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained collapse_unread confirmappend confirmcreate crypt_autoencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained crypt_autopgp crypt_autosign crypt_autosmime crypt_replyencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained crypt_replysign crypt_replysignencrypted crypt_timestamp nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained crypt_use_gpgme crypt_use_pka delete_untag digest_collapse duplicate_threads nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained edit_hdrs edit_headers encode_from envelope_from fast_reply nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained fcc_clear followup_to force_name forw_decode nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained forw_decrypt forw_quote forward_decode forward_decrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained forward_quote hdrs header help hidden_host hide_limited nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained hide_missing hide_thread_subject hide_top_limited nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained hide_top_missing honor_disposition ignore_linear_white_space ignore_list_reply_to imap_check_subscribed nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained imap_list_subscribed imap_passive imap_peek imap_servernoise nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained implicit_autoview include_onlyfirst keep_flagged nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained mailcap_sanitize maildir_header_cache_verify maildir_trash nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained mark_old markers menu_move_off menu_scroll message_cache_clean meta_key nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained metoo mh_purge mime_forward_decode narrow_tree pager_stop nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained pgp_auto_decode pgp_auto_traditional pgp_autoencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained pgp_autoinline pgp_autosign pgp_check_exit nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained pgp_create_traditional pgp_ignore_subkeys pgp_long_ids nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained pgp_replyencrypt pgp_replyinline pgp_replysign nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained pgp_replysignencrypted pgp_retainable_sigs pgp_show_unusable nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained pgp_strict_enc pgp_use_gpg_agent pipe_decode pipe_split nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained pop_auth_try_all pop_last print_decode print_split nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained prompt_after read_only reply_self resolve reverse_alias nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained reverse_name reverse_realname rfc2047_parameters save_address nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained save_empty save_name score sig_dashes sig_on_top nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained smart_wrap smime_ask_cert_label smime_decrypt_use_default_key nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained smime_is_default sort_re ssl_force_tls ssl_use_sslv2 nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained ssl_use_sslv3 ssl_use_tlsv1 ssl_usesystemcerts ssl_verify_dates ssl_verify_host status_on_top nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained strict_mime strict_threads suspend text_flowed thorough_search nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained thread_received tilde uncollapse_jump use_8bitmime nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained use_domain use_envelope_from use_from use_idn use_ipv6 nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained user_agent wait_key weed wrap_search write_bcc nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -syn keyword muttrcVarBool skipwhite contained noallow_8bit noallow_ansi noarrow_cursor noascii_chars noaskbcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained noaskcc noattach_split noauto_tag noautoedit nobeep nobeep_new nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nobounce_delivered nobraille_friendly nocheck_new nocollapse_unread nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained noconfirmappend noconfirmcreate nocrypt_autoencrypt nocrypt_autopgp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nocrypt_autosign nocrypt_autosmime nocrypt_replyencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nocrypt_replysign nocrypt_replysignencrypted nocrypt_timestamp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nocrypt_use_gpgme nodelete_untag nodigest_collapse noduplicate_threads nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained noedit_hdrs noedit_headers noencode_from noenvelope_from nofast_reply nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nofcc_clear nofollowup_to noforce_name noforw_decode nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained noforw_decrypt noforw_quote noforward_decode noforward_decrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained noforward_quote nohdrs noheader nohelp nohidden_host nohide_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nohide_missing nohide_thread_subject nohide_top_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nohide_top_missing nohonor_disposition noignore_list_reply_to noimap_check_subscribed nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained noimap_list_subscribed noimap_passive noimap_peek noimap_servernoise nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained noimplicit_autoview noinclude_onlyfirst nokeep_flagged nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nomailcap_sanitize nomaildir_header_cache_verify nomaildir_trash nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nomark_old nomarkers nomenu_move_off nomenu_scroll nometa_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nometoo nomh_purge nomime_forward_decode nonarrow_tree nopager_stop nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nopgp_auto_decode nopgp_auto_traditional nopgp_autoencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nopgp_autoinline nopgp_autosign nopgp_check_exit nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nopgp_create_traditional nopgp_ignore_subkeys nopgp_long_ids nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nopgp_replyencrypt nopgp_replyinline nopgp_replysign nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nopgp_replysignencrypted nopgp_retainable_sigs nopgp_show_unusable nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nopgp_strict_enc nopgp_use_gpg_agent nopipe_decode nopipe_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nopop_auth_try_all nopop_last noprint_decode noprint_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained noprompt_after noread_only noreply_self noresolve noreverse_alias nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained noreverse_name noreverse_realname norfc2047_parameters nosave_address nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nosave_empty nosave_name noscore nosig_dashes nosig_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nosmart_wrap nosmime_ask_cert_label nosmime_decrypt_use_default_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nosmime_is_default nosort_re nossl_force_tls nossl_use_sslv2 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nossl_use_sslv3 nossl_use_tlsv1 nossl_usesystemcerts nostatus_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nostrict_threads nosuspend notext_flowed nothorough_search nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nothread_received notilde nouncollapse_jump nouse_8bitmime nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nouse_domain nouse_envelope_from nouse_from nouse_idn nouse_ipv6 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained nouser_agent nowait_key noweed nowrap_search nowrite_bcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -syn keyword muttrcVarBool skipwhite contained invallow_8bit invallow_ansi invarrow_cursor invascii_chars invaskbcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invaskcc invattach_split invauto_tag invautoedit invbeep invbeep_new nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invbounce_delivered invbraille_friendly invcheck_new invcollapse_unread nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invconfirmappend invconfirmcreate invcrypt_autoencrypt invcrypt_autopgp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invcrypt_autosign invcrypt_autosmime invcrypt_replyencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invcrypt_replysign invcrypt_replysignencrypted invcrypt_timestamp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invcrypt_use_gpgme invdelete_untag invdigest_collapse invduplicate_threads nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invedit_hdrs invedit_headers invencode_from invenvelope_from invfast_reply nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invfcc_clear invfollowup_to invforce_name invforw_decode nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invforw_decrypt invforw_quote invforward_decode invforward_decrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invforward_quote invhdrs invheader invhelp invhidden_host invhide_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invhide_missing invhide_thread_subject invhide_top_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invhide_top_missing invhonor_disposition invignore_list_reply_to invimap_check_subscribed nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invimap_list_subscribed invimap_passive invimap_peek invimap_servernoise nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invimplicit_autoview invinclude_onlyfirst invkeep_flagged nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invmailcap_sanitize invmaildir_header_cache_verify invmaildir_trash nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invmark_old invmarkers invmenu_move_off invmenu_scroll invmeta_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invmetoo invmh_purge invmime_forward_decode invnarrow_tree invpager_stop nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invpgp_auto_decode invpgp_auto_traditional invpgp_autoencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invpgp_autoinline invpgp_autosign invpgp_check_exit nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invpgp_create_traditional invpgp_ignore_subkeys invpgp_long_ids nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invpgp_replyencrypt invpgp_replyinline invpgp_replysign nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invpgp_replysignencrypted invpgp_retainable_sigs invpgp_show_unusable nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invpgp_strict_enc invpgp_use_gpg_agent invpipe_decode invpipe_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invpop_auth_try_all invpop_last invprint_decode invprint_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invprompt_after invread_only invreply_self invresolve invreverse_alias nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invreverse_name invreverse_realname invrfc2047_parameters invsave_address nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invsave_empty invsave_name invscore invsig_dashes invsig_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invsmart_wrap invsmime_ask_cert_label invsmime_decrypt_use_default_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invsmime_is_default invsort_re invssl_force_tls invssl_use_sslv2 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invssl_use_sslv3 invssl_use_tlsv1 invssl_usesystemcerts invstatus_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invstrict_threads invsuspend invtext_flowed invthorough_search nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invthread_received invtilde invuncollapse_jump invuse_8bitmime nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invuse_domain invuse_envelope_from invuse_from invuse_idn invuse_ipv6 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarBool skipwhite contained invuser_agent invwait_key invweed invwrap_search invwrite_bcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -syn keyword muttrcVarQuad skipwhite contained abort_nosubject abort_unmodified bounce copy nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained crypt_verify_sig delete fcc_attach forward_edit honor_followup_to nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained include mime_forward mime_forward_rest mime_fwd move nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained pgp_mime_auto pgp_verify_sig pop_delete pop_reconnect nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained postpone print quit recall reply_to ssl_starttls nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -syn keyword muttrcVarQuad skipwhite contained noabort_nosubject noabort_unmodified nobounce nocopy nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained nocrypt_verify_sig nodelete nofcc_attach noforward_edit nohonor_followup_to nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained noinclude nomime_forward nomime_forward_rest nomime_fwd nomove nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained nopgp_mime_auto nopgp_verify_sig nopop_delete nopop_reconnect nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained nopostpone noprint noquit norecall noreply_to nossl_starttls nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -syn keyword muttrcVarQuad skipwhite contained invabort_nosubject invabort_unmodified invbounce invcopy nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained invcrypt_verify_sig invdelete invfcc_attach invforward_edit invhonor_followup_to nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained invinclude invmime_forward invmime_forward_rest invmime_fwd invmove nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained invpgp_mime_auto invpgp_verify_sig invpop_delete invpop_reconnect nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarQuad skipwhite contained invpostpone invprint invquit invrecall invreply_to invssl_starttls nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -syn keyword muttrcVarNum skipwhite contained connect_timeout history imap_keepalive imap_pipeline_depth mail_check nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarNum skipwhite contained menu_context net_inc pager_context pager_index_lines pgp_timeout nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarNum skipwhite contained pop_checkinterval read_inc save_history score_threshold_delete nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarNum skipwhite contained score_threshold_flag score_threshold_read search_context sendmail_wait sleep_time nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarNum skipwhite contained smime_timeout ssl_min_dh_prime_bits timeout time_inc wrap wrapmargin nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarNum skipwhite contained write_inc nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -syn match muttrcFormatErrors contained /%./ - -syn match muttrcStrftimeEscapes contained /%[AaBbCcDdeFGgHhIjklMmnpRrSsTtUuVvWwXxYyZz+%]/ -syn match muttrcStrftimeEscapes contained /%E[cCxXyY]/ -syn match muttrcStrftimeEscapes contained /%O[BdeHImMSuUVwWy]/ - -syn region muttrcIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcQueryFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcAliasFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcAliasFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcAttachFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcAttachFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcComposeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcComposeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcFolderFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcFolderFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcMixFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcMixFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcPGPFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcPGPFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcPGPCmdFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcPGPCmdFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcStatusFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcStatusFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcSmimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcSmimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -" The following info was pulled from hdr_format_str in hdrline.c -syn match muttrcIndexFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[aAbBcCdDeEfFHilLmMnNOPsStTuvXyYZ%]/ -syn match muttrcIndexFormatEscapes contained /%[>|*]./ -syn match muttrcIndexFormatConditionals contained /%?[EFHlLMNOXyY]?/ nextgroup=muttrcFormatConditionals2 -" The following info was pulled from alias_format_str in addrbook.c -syn match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/ -" The following info was pulled from query_format_str in query.c -syn match muttrcQueryFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[acent%]/ -syn match muttrcQueryFormatConditionals contained /%?[e]?/ nextgroup=muttrcFormatConditionals2 -" The following info was pulled from mutt_attach_fmt in recvattach.c -syn match muttrcAttachFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CcDdefImMnQstTuX%]/ -syn match muttrcAttachFormatEscapes contained /%[>|*]./ -syn match muttrcAttachFormatConditionals contained /%?[CcdDefInmMQstTuX]?/ nextgroup=muttrcFormatConditionals2 -syn match muttrcFormatConditionals2 contained /[^?]*?/ -" The following info was pulled from compose_format_str in compose.c -syn match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/ -syn match muttrcComposeFormatEscapes contained /%[>|*]./ -" The following info was pulled from folder_format_str in browser.c -syn match muttrcFolderFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CDdfFglNstu%]/ -syn match muttrcFolderFormatEscapes contained /%[>|*]./ -syn match muttrcFolderFormatConditionals contained /%?[N]?/ -" The following info was pulled from mix_entry_fmt in remailer.c -syn match muttrcMixFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ncsa%]/ -syn match muttrcMixFormatConditionals contained /%?[ncsa]?/ -" The following info was pulled from crypt_entry_fmt in crypt-gpgme.c -" and pgp_entry_fmt in pgpkey.c (note that crypt_entry_fmt supports -" 'p', but pgp_entry_fmt does not). -syn match muttrcPGPFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[nkualfctp%]/ -syn match muttrcPGPFormatConditionals contained /%?[nkualfct]?/ -" The following info was pulled from _mutt_fmt_pgp_command in -" pgpinvoke.c -syn match muttrcPGPCmdFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[pfsar%]/ -syn match muttrcPGPCmdFormatConditionals contained /%?[pfsar]?/ nextgroup=muttrcFormatConditionals2 -" The following info was pulled from status_format_str in status.c -syn match muttrcStatusFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[bdfFhlLmMnopPrsStuvV%]/ -syn match muttrcStatusFormatEscapes contained /%[>|*]./ -syn match muttrcStatusFormatConditionals contained /%?[bdFlLmMnoptuV]?/ nextgroup=muttrcFormatConditionals2 -" This matches the documentation, but directly contradicts the code -" (according to the code, this should be identical to the -" muttrcPGPCmdFormatEscapes -syn match muttrcPGPGetKeysFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[r%]/ -" The following info was pulled from _mutt_fmt_smime_command in -" smime.c -syn match muttrcSmimeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[Cciskaf%]/ -syn match muttrcSmimeFormatConditionals contained /%?[Cciskaf]?/ nextgroup=muttrcFormatConditionals2 - -syn region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes -syn region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes -syn region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes -syn region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes -syn region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes - -syn keyword muttrcVarStr contained skipwhite attribution index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt -syn match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=muttrcIndexFormatStr -syn keyword muttrcVarStr contained skipwhite alias_format nextgroup=muttrcVarEqualsAliasFmt -syn match muttrcVarEqualsAliasFmt contained skipwhite "=" nextgroup=muttrcAliasFormatStr -syn keyword muttrcVarStr contained skipwhite attach_format nextgroup=muttrcVarEqualsAttachFmt -syn match muttrcVarEqualsAttachFmt contained skipwhite "=" nextgroup=muttrcAttachFormatStr -syn keyword muttrcVarStr contained skipwhite compose_format nextgroup=muttrcVarEqualsComposeFmt -syn match muttrcVarEqualsComposeFmt contained skipwhite "=" nextgroup=muttrcComposeFormatStr -syn keyword muttrcVarStr contained skipwhite folder_format nextgroup=muttrcVarEqualsFolderFmt -syn match muttrcVarEqualsFolderFmt contained skipwhite "=" nextgroup=muttrcFolderFormatStr -syn keyword muttrcVarStr contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt -syn match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr -syn keyword muttrcVarStr contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt -syn match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr -syn keyword muttrcVarStr contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt -syn match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr -syn keyword muttrcVarStr contained skipwhite pgp_decode_command pgp_verify_command pgp_decrypt_command pgp_clearsign_command pgp_sign_command pgp_encrypt_sign_command pgp_encrypt_only_command pgp_import_command pgp_export_command pgp_verify_key_command pgp_list_secring_command pgp_list_pubring_command nextgroup=muttrcVarEqualsPGPCmdFmt -syn match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr -syn keyword muttrcVarStr contained skipwhite status_format nextgroup=muttrcVarEqualsStatusFmt -syn match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr -syn keyword muttrcVarStr contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt -syn match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr -syn keyword muttrcVarStr contained skipwhite smime_decrypt_command smime_verify_command smime_verify_opaque_command smime_sign_command smime_sign_opaque_command smime_encrypt_command smime_pk7out_command smime_get_cert_command smime_get_signer_cert_command smime_import_cert_command smime_get_cert_email_command nextgroup=muttrcVarEqualsSmimeFmt -syn match muttrcVarEqualsSmimeFmt contained skipwhite "=" nextgroup=muttrcSmimeFormatStr -syn keyword muttrcVarStr contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt -syn match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr - -syn match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -syn match muttrcVarStr contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite alias_file assumed_charset attach_charset attach_sep nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite certificate_file charset config_charset content_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite default_hook display_filter dotlock_program dsn_notify nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite dsn_return editor entropy_file envelope_from_address escape folder nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite forw_format forward_format from gecos_mask hdr_format nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite header_cache header_cache_compress header_cache_pagesize nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite history_file hostname imap_authenticators nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite imap_delim_chars imap_headers imap_idle imap_login imap_pass nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite imap_user indent_str indent_string ispell locale mailcap_path nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite mask mbox mbox_type message_cachedir mh_seq_flagged mh_seq_replied nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite mh_seq_unseen mixmaster msg_format pager nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite pgp_good_sign nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite pgp_mime_signature_filename nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite pgp_mime_signature_description pgp_sign_as nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite pgp_sort_keys nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite pipe_sep pop_authenticators pop_host pop_pass pop_user post_indent_str nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite post_indent_string postponed preconnect print_cmd print_command nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite query_command quote_regexp realname record reply_regexp send_charset nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite sendmail shell signature simple_search smileys smime_ca_location nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite smime_certificates smime_default_key nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite smime_encrypt_with nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite smime_keys smime_sign_as nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite smtp_url smtp_authenticators smtp_pass sort sort_alias sort_aux nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite sort_browser spam_separator spoolfile ssl_ca_certificates_file ssl_client_cert nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcVarStr contained skipwhite status_chars tmpdir to_chars tunnel visual nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -" Present in 1.4.2.1 (pgp_create_traditional was a bool then) -syn keyword muttrcVarBool contained skipwhite imap_force_ssl noimap_force_ssl invimap_force_ssl nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -"syn keyword muttrcVarQuad contained pgp_create_traditional nopgp_create_traditional invpgp_create_traditional -syn keyword muttrcVarStr contained skipwhite alternates nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -syn keyword muttrcMenu contained alias attach browser compose editor index pager postpone pgp mix query generic -syn match muttrcMenuList "\S\+" contained contains=muttrcMenu -syn match muttrcMenuCommas /,/ contained - -syn keyword muttrcHooks contained skipwhite account-hook charset-hook iconv-hook message-hook folder-hook mbox-hook save-hook fcc-hook fcc-save-hook send-hook send2-hook reply-hook crypt-hook - -syn keyword muttrcCommand auto_view alternative_order exec unalternative_order -syn keyword muttrcCommand hdr_order iconv-hook ignore mailboxes my_hdr unmailboxes -syn keyword muttrcCommand pgp-hook push score source unauto_view unhdr_order -syn keyword muttrcCommand unignore unmono unmy_hdr unscore -syn keyword muttrcCommand mime_lookup unmime_lookup ungroup -syn keyword muttrcCommand unalternative_order -syn keyword muttrcCommand skipwhite charset-hook nextgroup=muttrcRXString -syn keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks - -syn keyword muttrcCommand skipwhite spam nextgroup=muttrcSpamPattern -syn region muttrcSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL -syn region muttrcSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL - -syn keyword muttrcCommand skipwhite nospam nextgroup=muttrcNoSpamPattern -syn region muttrcNoSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern -syn region muttrcNoSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern - -syn match muttrcAttachmentsMimeType contained "[*a-z0-9_-]\+/[*a-z0-9._-]\+\s*" skipwhite nextgroup=muttrcAttachmentsMimeType -syn match muttrcAttachmentsFlag contained "[+-]\%([AI]\|inline\|attachment\)\s\+" skipwhite nextgroup=muttrcAttachmentsMimeType -syn match muttrcAttachmentsLine "^\s*\%(un\)\?attachments\s\+" skipwhite nextgroup=muttrcAttachmentsFlag - -syn match muttrcUnHighlightSpace contained "\%(\s\+\|\\$\)" - -syn keyword muttrcAsterisk contained * -syn keyword muttrcListsKeyword lists skipwhite nextgroup=muttrcGroupDef,muttrcComment -syn keyword muttrcListsKeyword unlists skipwhite nextgroup=muttrcAsterisk,muttrcComment - -syn keyword muttrcSubscribeKeyword subscribe nextgroup=muttrcGroupDef,muttrcComment -syn keyword muttrcSubscribeKeyword unsubscribe nextgroup=muttrcAsterisk,muttrcComment - -syn keyword muttrcAlternateKeyword contained alternates unalternates -syn region muttrcAlternatesLine keepend start=+^\s*\%(un\)\?alternates\s+ skip=+\\$+ end=+$+ contains=muttrcAlternateKeyword,muttrcGroupDef,muttrcRXPat,muttrcUnHighlightSpace,muttrcComment - -syn match muttrcVariable contained "\\\@]\+" contains=muttrcEmail -syn match muttrcFunction contained "\<\%(attach\|bounce\|copy\|delete\|display\|flag\|forward\|parent\|pipe\|postpone\|print\|recall\|resend\|save\|send\|tag\|undelete\)-message\>" -syn match muttrcFunction contained "\<\%(delete\|next\|previous\|read\|tag\|break\|undelete\)-thread\>" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\<\%(backward\|capitalize\|downcase\|forward\|kill\|upcase\)-word\>" -syn match muttrcFunction contained "\<\%(delete\|filter\|first\|last\|next\|pipe\|previous\|print\|save\|select\|tag\|undelete\)-entry\>" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\" -syn match muttrcFunction contained "\<\%(backspace\|backward-char\|bol\|bottom\|bottom-page\|buffy-cycle\|clear-flag\|complete\%(-query\)\?\|copy-file\|create-alias\|detach-file\|eol\|exit\|extract-keys\|\%(imap-\)\?fetch-mail\|forget-passphrase\|forward-char\|group-reply\|help\|ispell\|jump\|limit\|list-reply\|mail\|mail-key\|mark-as-new\|middle-page\|new-mime\|noop\|pgp-menu\|query\|query-append\|quit\|quote-char\|read-subthread\|redraw-screen\|refresh\|rename-file\|reply\|select-new\|set-flag\|shell-escape\|skip-quoted\|sort\|subscribe\|sync-mailbox\|top\|top-page\|transpose-chars\|unsubscribe\|untag-pattern\|verify-key\|what-key\|write-fcc\)\>" -syn match muttrcAction contained "<[^>]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName - -syn keyword muttrcCommand set skipwhite nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcCommand unset skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcCommand reset skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -syn keyword muttrcCommand toggle skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr - -" First, functions that take regular expressions: -syn match muttrcRXHookNot contained /!\s*/ skipwhite nextgroup=muttrcRXHookString,muttrcRXHookStringNL -syn match muttrcRXHooks /\<\%(account\|folder\)-hook\>/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXHookString,muttrcRXHookStringNL - -" Now, functions that take patterns -syn match muttrcPatHookNot contained /!\s*/ skipwhite nextgroup=muttrcPattern -syn match muttrcPatHooks /\<\%(mbox\|crypt\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern -syn match muttrcPatHooks /\<\%(message\|reply\|send\|send2\|save\|\|fcc\%(-save\)\?\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcOptPattern - -syn match muttrcBindFunction contained /\S\+\>/ skipwhite contains=muttrcFunction -syn match muttrcBindFunctionNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindFunction,muttrcBindFunctionNL -syn match muttrcBindKey contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcBindFunction,muttrcBindFunctionNL -syn match muttrcBindKeyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindKey,muttrcBindKeyNL -syn match muttrcBindMenuList contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcBindKey,muttrcBindKeyNL -syn match muttrcBindMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindMenuList,muttrcBindMenuListNL -syn keyword muttrcCommand skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL - -syn region muttrcMacroDescr contained keepend skipwhite start=+\s*\S+ms=e skip=+\\ + end=+ \|$+me=s -syn region muttrcMacroDescr contained keepend skipwhite start=+'+ms=e skip=+\\'+ end=+'+me=s -syn region muttrcMacroDescr contained keepend skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s -syn match muttrcMacroDescrNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroDescr,muttrcMacroDescrNL -syn region muttrcMacroBody contained skipwhite start="\S" skip='\\ \|\\$' end=' \|$' contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL -syn region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'\|\%(\%(\\\\\)\@]\+>/ contains=muttrcEmail nextgroup=muttrcAliasComma -syn match muttrcAliasEncEmailNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL -syn match muttrcAliasNameNoParens contained /[^<(@]\+\s\+/ nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL -syn region muttrcAliasName contained matchgroup=Type start=/(/ end=/)/ skipwhite -syn match muttrcAliasNameNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasName,muttrcAliasNameNL -syn match muttrcAliasENNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL -syn match muttrcAliasKey contained /\s*[^- \t]\S\+/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL -syn match muttrcAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL -syn keyword muttrcCommand skipwhite alias nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL - -syn match muttrcUnAliasKey contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL -syn match muttrcUnAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL -syn keyword muttrcCommand skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL - -syn match muttrcSimplePat contained "!\?\^\?[~][ADEFgGklNOpPQRSTuUvV=$]" -syn match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s*\%([<>-][0-9]\+[kM]\?\|[0-9]\+[kM]\?[-]\%([0-9]\+[kM]\?\)\?\)" -syn match muttrcSimplePat contained "!\?\^\?[~][dr]\s*\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\|\%(`[^`]\+`\)\|\%(\$[a-zA-Z0-9_-]\+\)\)" contains=muttrcShellString,muttrcVariable -syn match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatRXContainer -syn match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString -syn match muttrcSimplePat contained "!\?\^\?[=][bh]\s*" nextgroup=muttrcSimplePatString -syn region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat -"syn match muttrcSimplePat contained /'[^~=%][^']*/ contains=muttrcRXString -syn region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+ -syn region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+ -syn region muttrcSimplePatString contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 -syn region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXString -syn region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXString -syn region muttrcSimplePatRXContainer contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString -syn match muttrcSimplePatMetas contained /[(|)]/ - -syn match muttrcOptSimplePat contained skipwhite /[~=%!(^].*/ contains=muttrcSimplePat,muttrcSimplePatMetas -syn match muttrcOptSimplePat contained skipwhite /[^~=%!(^].*/ contains=muttrcRXString -syn region muttrcOptPattern contained matchgroup=Type keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL -syn region muttrcOptPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL -syn region muttrcOptPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL -syn match muttrcOptPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL -syn match muttrcOptPattern contained skipwhite /[.]/ nextgroup=muttrcString,muttrcStringNL -" Keep muttrcPattern and muttrcOptPattern synchronized -syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas -syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas -syn region muttrcPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat -syn match muttrcPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat -syn match muttrcPattern contained skipwhite /[.]/ -syn region muttrcPatternInner contained keepend start=+"[~=%!(^]+ms=s+1 skip=+\\"+ end=+"+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas -syn region muttrcPatternInner contained keepend start=+'[~=%!(^]+ms=s+1 skip=+\\'+ end=+'+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas - -" Colour definitions takes object, foreground and background arguments (regexps excluded). -syn match muttrcColorMatchCount contained "[0-9]\+" -syn match muttrcColorMatchCountNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL -syn region muttrcColorRXPat contained start=+\s*'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL -syn region muttrcColorRXPat contained start=+\s*"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL -syn keyword muttrcColorField contained attachment body bold error hdrdefault header index indicator markers message normal quoted search signature status tilde tree underline -syn match muttrcColorField contained "\" -syn keyword muttrcColor contained black blue cyan default green magenta red white yellow -syn keyword muttrcColor contained brightblack brightblue brightcyan brightdefault brightgreen brightmagenta brightred brightwhite brightyellow -syn match muttrcColor contained "\<\%(bright\)\=color\d\{1,2}\>" -" Now for the structure of the color line -syn match muttrcColorRXNL contained skipnl "\s*\\$" nextgroup=muttrcColorRXPat,muttrcColorRXNL -syn match muttrcColorBG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL -syn match muttrcColorBGNL contained skipnl "\s*\\$" nextgroup=muttrcColorBG,muttrcColorBGNL -syn match muttrcColorFG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL -syn match muttrcColorFGNL contained skipnl "\s*\\$" nextgroup=muttrcColorFG,muttrcColorFGNL -syn match muttrcColorContext contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorFG,muttrcColorFGNL -syn match muttrcColorNL contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL -syn match muttrcColorKeyword contained /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL -syn region muttrcColorLine keepend start=/^\s*color\s\+\%(index\|header\)\@!/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace -" Now for the structure of the color index line -syn match muttrcPatternNL contained skipnl "\s*\\$" nextgroup=muttrcPattern,muttrcPatternNL -syn match muttrcColorBGI contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcPattern,muttrcPatternNL -syn match muttrcColorBGNLI contained skipnl "\s*\\$" nextgroup=muttrcColorBGI,muttrcColorBGNLI -syn match muttrcColorFGI contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGI,muttrcColorBGNLI -syn match muttrcColorFGNLI contained skipnl "\s*\\$" nextgroup=muttrcColorFGI,muttrcColorFGNLI -syn match muttrcColorContextI contained /\s*\/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGI,muttrcColorFGNLI -syn match muttrcColorNLI contained skipnl "\s*\\$" nextgroup=muttrcColorContextI,muttrcColorNLI -syn match muttrcColorKeywordI contained skipwhite /\/ nextgroup=muttrcColorContextI,muttrcColorNLI -syn region muttrcColorLine keepend skipwhite start=/\/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordI,muttrcComment,muttrcUnHighlightSpace -" Now for the structure of the color header line -syn match muttrcRXPatternNL contained skipnl "\s*\\$" nextgroup=muttrcRXString,muttrcRXPatternNL -syn match muttrcColorBGH contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcRXString,muttrcRXPatternNL -syn match muttrcColorBGNLH contained skipnl "\s*\\$" nextgroup=muttrcColorBGH,muttrcColorBGNLH -syn match muttrcColorFGH contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGH,muttrcColorBGNLH -syn match muttrcColorFGNLH contained skipnl "\s*\\$" nextgroup=muttrcColorFGH,muttrcColorFGNLH -syn match muttrcColorContextH contained /\s*\/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGH,muttrcColorFGNLH -syn match muttrcColorNLH contained skipnl "\s*\\$" nextgroup=muttrcColorContextH,muttrcColorNLH -syn match muttrcColorKeywordH contained skipwhite /\/ nextgroup=muttrcColorContextH,muttrcColorNLH -syn region muttrcColorLine keepend skipwhite start=/\/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordH,muttrcComment,muttrcUnHighlightSpace -" And now color's brother: -syn region muttrcUnColorPatterns contained skipwhite start=+\s*'+ end=+'+ skip=+\\'+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL -syn region muttrcUnColorPatterns contained skipwhite start=+\s*"+ end=+"+ skip=+\\"+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL -syn match muttrcUnColorPatterns contained skipwhite /\s*[^'"\s]\S\*/ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL -syn match muttrcUnColorPatNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL -syn match muttrcUnColorAll contained skipwhite /[*]/ -syn match muttrcUnColorAPNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL -syn match muttrcUnColorIndex contained skipwhite /\s*index\s\+/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL -syn match muttrcUnColorIndexNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL -syn match muttrcUnColorKeyword contained skipwhite /^\s*uncolor\s\+/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL -syn region muttrcUnColorLine keepend start=+^\s*uncolor\s+ skip=+\\$+ end=+$+ contains=muttrcUnColorKeyword,muttrcComment,muttrcUnHighlightSpace - -" Mono are almost like color (ojects inherited from color) -syn keyword muttrcMonoAttrib contained bold none normal reverse standout underline -syn keyword muttrcMono contained mono skipwhite nextgroup=muttrcColorField -syn match muttrcMonoLine "^\s*mono\s\+\S\+" skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_muttrc_syntax_inits") - if version < 508 - let did_muttrc_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink muttrcComment Comment - HiLink muttrcEscape SpecialChar - HiLink muttrcRXChars SpecialChar - HiLink muttrcString String - HiLink muttrcRXString String - HiLink muttrcRXString2 String - HiLink muttrcSpecial Special - HiLink muttrcHooks Type - HiLink muttrcGroupFlag Type - HiLink muttrcGroupDef Macro - HiLink muttrcAddrDef muttrcGroupFlag - HiLink muttrcRXDef muttrcGroupFlag - HiLink muttrcRXPat String - HiLink muttrcAliasGroupName Macro - HiLink muttrcAliasKey Identifier - HiLink muttrcUnAliasKey Identifier - HiLink muttrcAliasEncEmail Identifier - HiLink muttrcAliasParens Type - HiLink muttrcSetNumAssignment Number - HiLink muttrcSetBoolAssignment Boolean - HiLink muttrcSetQuadAssignment Boolean - HiLink muttrcSetStrAssignment String - HiLink muttrcEmail Special - HiLink muttrcVariable Special - HiLink muttrcEscapedVariable String - HiLink muttrcHeader Type - HiLink muttrcKeySpecial SpecialChar - HiLink muttrcKey Type - HiLink muttrcKeyName SpecialChar - HiLink muttrcVarBool Identifier - HiLink muttrcVarQuad Identifier - HiLink muttrcVarNum Identifier - HiLink muttrcVarStr Identifier - HiLink muttrcMenu Identifier - HiLink muttrcCommand Keyword - HiLink muttrcMacroDescr String - HiLink muttrcAction Macro - HiLink muttrcBadAction Error - HiLink muttrcBindFunction Error - HiLink muttrcBindMenuList Error - HiLink muttrcFunction Macro - HiLink muttrcGroupKeyword muttrcCommand - HiLink muttrcGroupLine Error - HiLink muttrcSubscribeKeyword muttrcCommand - HiLink muttrcSubscribeLine Error - HiLink muttrcListsKeyword muttrcCommand - HiLink muttrcListsLine Error - HiLink muttrcAlternateKeyword muttrcCommand - HiLink muttrcAlternatesLine Error - HiLink muttrcAttachmentsLine muttrcCommand - HiLink muttrcAttachmentsFlag Type - HiLink muttrcAttachmentsMimeType String - HiLink muttrcColorLine Error - HiLink muttrcColorContext Error - HiLink muttrcColorContextI Identifier - HiLink muttrcColorContextH Identifier - HiLink muttrcColorKeyword muttrcCommand - HiLink muttrcColorKeywordI muttrcColorKeyword - HiLink muttrcColorKeywordH muttrcColorKeyword - HiLink muttrcColorField Identifier - HiLink muttrcColor Type - HiLink muttrcColorFG Error - HiLink muttrcColorFGI Error - HiLink muttrcColorFGH Error - HiLink muttrcColorBG Error - HiLink muttrcColorBGI Error - HiLink muttrcColorBGH Error - HiLink muttrcMonoAttrib muttrcColor - HiLink muttrcMono muttrcCommand - HiLink muttrcSimplePat Identifier - HiLink muttrcSimplePatString Macro - HiLink muttrcSimplePatMetas Special - HiLink muttrcPattern Error - HiLink muttrcUnColorLine Error - HiLink muttrcUnColorKeyword muttrcCommand - HiLink muttrcUnColorIndex Identifier - HiLink muttrcShellString muttrcEscape - HiLink muttrcRXHooks muttrcCommand - HiLink muttrcRXHookNot Type - HiLink muttrcPatHooks muttrcCommand - HiLink muttrcPatHookNot Type - HiLink muttrcFormatConditionals2 Type - HiLink muttrcIndexFormatStr muttrcString - HiLink muttrcIndexFormatEscapes muttrcEscape - HiLink muttrcIndexFormatConditionals muttrcFormatConditionals2 - HiLink muttrcAliasFormatStr muttrcString - HiLink muttrcAliasFormatEscapes muttrcEscape - HiLink muttrcAttachFormatStr muttrcString - HiLink muttrcAttachFormatEscapes muttrcEscape - HiLink muttrcAttachFormatConditionals muttrcFormatConditionals2 - HiLink muttrcComposeFormatStr muttrcString - HiLink muttrcComposeFormatEscapes muttrcEscape - HiLink muttrcFolderFormatStr muttrcString - HiLink muttrcFolderFormatEscapes muttrcEscape - HiLink muttrcFolderFormatConditionals muttrcFormatConditionals2 - HiLink muttrcMixFormatStr muttrcString - HiLink muttrcMixFormatEscapes muttrcEscape - HiLink muttrcMixFormatConditionals muttrcFormatConditionals2 - HiLink muttrcPGPFormatStr muttrcString - HiLink muttrcPGPFormatEscapes muttrcEscape - HiLink muttrcPGPFormatConditionals muttrcFormatConditionals2 - HiLink muttrcPGPCmdFormatStr muttrcString - HiLink muttrcPGPCmdFormatEscapes muttrcEscape - HiLink muttrcPGPCmdFormatConditionals muttrcFormatConditionals2 - HiLink muttrcStatusFormatStr muttrcString - HiLink muttrcStatusFormatEscapes muttrcEscape - HiLink muttrcStatusFormatConditionals muttrcFormatConditionals2 - HiLink muttrcPGPGetKeysFormatStr muttrcString - HiLink muttrcPGPGetKeysFormatEscapes muttrcEscape - HiLink muttrcSmimeFormatStr muttrcString - HiLink muttrcSmimeFormatEscapes muttrcEscape - HiLink muttrcSmimeFormatConditionals muttrcFormatConditionals2 - HiLink muttrcTimeEscapes muttrcEscape - HiLink muttrcPGPTimeEscapes muttrcEscape - HiLink muttrcStrftimeEscapes Type - HiLink muttrcStrftimeFormatStr muttrcString - HiLink muttrcFormatErrors Error - - HiLink muttrcBindFunctionNL SpecialChar - HiLink muttrcBindKeyNL SpecialChar - HiLink muttrcBindMenuListNL SpecialChar - HiLink muttrcMacroDescrNL SpecialChar - HiLink muttrcMacroBodyNL SpecialChar - HiLink muttrcMacroKeyNL SpecialChar - HiLink muttrcMacroMenuListNL SpecialChar - HiLink muttrcColorMatchCountNL SpecialChar - HiLink muttrcColorNL SpecialChar - HiLink muttrcColorRXNL SpecialChar - HiLink muttrcColorBGNL SpecialChar - HiLink muttrcColorFGNL SpecialChar - HiLink muttrcAliasNameNL SpecialChar - HiLink muttrcAliasENNL SpecialChar - HiLink muttrcAliasNL SpecialChar - HiLink muttrcUnAliasNL SpecialChar - HiLink muttrcAliasGroupDefNL SpecialChar - HiLink muttrcAliasEncEmailNL SpecialChar - HiLink muttrcPatternNL SpecialChar - HiLink muttrcUnColorPatNL SpecialChar - HiLink muttrcUnColorAPNL SpecialChar - HiLink muttrcUnColorIndexNL SpecialChar - HiLink muttrcStringNL SpecialChar - - delcommand HiLink -endif - -let b:current_syntax = "muttrc" - -"EOF vim: ts=8 noet tw=100 sw=8 sts=0 ft=vim diff --git a/share/vim/vim73/syntax/nasm.vim b/share/vim/vim73/syntax/nasm.vim deleted file mode 100644 index 6bbf33a9..00000000 --- a/share/vim/vim73/syntax/nasm.vim +++ /dev/null @@ -1,522 +0,0 @@ -" Vim syntax file -" Language: NASM - The Netwide Assembler (v0.98) -" Maintainer: Manuel M.H. Stol -" Last Change: 2003 May 11 -" Vim URL: http://www.vim.org/lang.html -" NASM Home: http://www.cryogen.com/Nasm/ - - - -" Setup Syntax: -" Clear old syntax settings -if version < 600 - syn clear -elseif exists("b:current_syntax") - finish -endif -" Assembler syntax is case insensetive -syn case ignore - - - -" Vim search and movement commands on identifers -if version < 600 - " Comments at start of a line inside which to skip search for indentifiers - set comments=:; - " Identifier Keyword characters (defines \k) - set iskeyword=@,48-57,#,$,.,?,@-@,_,~ -else - " Comments at start of a line inside which to skip search for indentifiers - setlocal comments=:; - " Identifier Keyword characters (defines \k) - setlocal iskeyword=@,48-57,#,$,.,?,@-@,_,~ -endif - - - -" Comments: -syn region nasmComment start=";" keepend end="$" contains=@nasmGrpInComments -syn region nasmSpecialComment start=";\*\*\*" keepend end="$" -syn keyword nasmInCommentTodo contained TODO FIXME XXX[XXXXX] -syn cluster nasmGrpInComments contains=nasmInCommentTodo -syn cluster nasmGrpComments contains=@nasmGrpInComments,nasmComment,nasmSpecialComment - - - -" Label Identifiers: -" in NASM: 'Everything is a Label' -" Definition Label = label defined by %[i]define or %[i]assign -" Identifier Label = label defined as first non-keyword on a line or %[i]macro -syn match nasmLabelError "$\=\(\d\+\K\|[#\.@]\|\$\$\k\)\k*\>" -syn match nasmLabel "\<\(\h\|[?@]\)\k*\>" -syn match nasmLabel "[\$\~]\(\h\|[?@]\)\k*\>"lc=1 -" Labels starting with one or two '.' are special -syn match nasmLocalLabel "\<\.\(\w\|[#$?@~]\)\k*\>" -syn match nasmLocalLabel "\<\$\.\(\w\|[#$?@~]\)\k*\>"ms=s+1 -if !exists("nasm_no_warn") - syn match nasmLabelWarn "\<\~\=\$\=[_\.][_\.\~]*\>" -endif -if exists("nasm_loose_syntax") - syn match nasmSpecialLabel "\<\.\.@\k\+\>" - syn match nasmSpecialLabel "\<\$\.\.@\k\+\>"ms=s+1 - if !exists("nasm_no_warn") - syn match nasmLabelWarn "\<\$\=\.\.@\(\d\|[#$\.~]\)\k*\>" - endif - " disallow use of nasm internal label format - syn match nasmLabelError "\<\$\=\.\.@\d\+\.\k*\>" -else - syn match nasmSpecialLabel "\<\.\.@\(\h\|[?@]\)\k*\>" - syn match nasmSpecialLabel "\<\$\.\.@\(\h\|[?@]\)\k*\>"ms=s+1 -endif -" Labels can be dereferenced with '$' to destinguish them from reserved words -syn match nasmLabelError "\<\$\K\k*\s*:" -syn match nasmLabelError "^\s*\$\K\k*\>" -syn match nasmLabelError "\<\~\s*\(\k*\s*:\|\$\=\.\k*\)" - - - -" Constants: -syn match nasmStringError +["']+ -syn match nasmString +\("[^"]\{-}"\|'[^']\{-}'\)+ -syn match nasmBinNumber "\<[0-1]\+b\>" -syn match nasmBinNumber "\<\~[0-1]\+b\>"lc=1 -syn match nasmOctNumber "\<\o\+q\>" -syn match nasmOctNumber "\<\~\o\+q\>"lc=1 -syn match nasmDecNumber "\<\d\+\>" -syn match nasmDecNumber "\<\~\d\+\>"lc=1 -syn match nasmHexNumber "\<\(\d\x*h\|0x\x\+\|\$\d\x*\)\>" -syn match nasmHexNumber "\<\~\(\d\x*h\|0x\x\+\|\$\d\x*\)\>"lc=1 -syn match nasmFltNumber "\<\d\+\.\d*\(e[+-]\=\d\+\)\=\>" -syn keyword nasmFltNumber Inf Infinity Indefinite NaN SNaN QNaN -syn match nasmNumberError "\<\~\s*\d\+\.\d*\(e[+-]\=\d\+\)\=\>" - - - -" Netwide Assembler Storage Directives: -" Storage types -syn keyword nasmTypeError DF EXTRN FWORD RESF TBYTE -syn keyword nasmType FAR NEAR SHORT -syn keyword nasmType BYTE WORD DWORD QWORD DQWORD HWORD DHWORD TWORD -syn keyword nasmType CDECL FASTCALL NONE PASCAL STDCALL -syn keyword nasmStorage DB DW DD DQ DDQ DT -syn keyword nasmStorage RESB RESW RESD RESQ RESDQ REST -syn keyword nasmStorage EXTERN GLOBAL COMMON -" Structured storage types -syn match nasmTypeError "\<\(AT\|I\=\(END\)\=\(STRUCT\=\|UNION\)\|I\=END\)\>" -syn match nasmStructureLabel contained "\<\(AT\|I\=\(END\)\=\(STRUCT\=\|UNION\)\|I\=END\)\>" -" structures cannot be nested (yet) -> use: 'keepend' and 're=' -syn cluster nasmGrpCntnStruc contains=ALLBUT,@nasmGrpInComments,nasmMacroDef,@nasmGrpInMacros,@nasmGrpInPreCondits,nasmStructureDef,@nasmGrpInStrucs -syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*STRUCT\>"hs=e-5 end="^\s*ENDSTRUCT\>"re=e-9 contains=@nasmGrpCntnStruc -syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*STRUC\>"hs=e-4 end="^\s*ENDSTRUC\>"re=e-8 contains=@nasmGrpCntnStruc -syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="\" end="\" contains=@nasmGrpCntnStruc,nasmInStructure -" union types are not part of nasm (yet) -"syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*UNION\>"hs=e-4 end="^\s*ENDUNION\>"re=e-8 contains=@nasmGrpCntnStruc -"syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="\" end="\" contains=@nasmGrpCntnStruc,nasmInStructure -syn match nasmInStructure contained "^\s*AT\>"hs=e-1 -syn cluster nasmGrpInStrucs contains=nasmStructure,nasmInStructure,nasmStructureLabel - - - -" PreProcessor Instructions: -" NAsm PreProcs start with %, but % is not a character -syn match nasmPreProcError "%{\=\(%\=\k\+\|%%\+\k*\|[+-]\=\d\+\)}\=" -if exists("nasm_loose_syntax") - syn cluster nasmGrpNxtCtx contains=nasmStructureLabel,nasmLabel,nasmLocalLabel,nasmSpecialLabel,nasmLabelError,nasmPreProcError -else - syn cluster nasmGrpNxtCtx contains=nasmStructureLabel,nasmLabel,nasmLabelError,nasmPreProcError -endif - -" Multi-line macro -syn cluster nasmGrpCntnMacro contains=ALLBUT,@nasmGrpInComments,nasmStructureDef,@nasmGrpInStrucs,nasmMacroDef,@nasmGrpPreCondits,nasmMemReference,nasmInMacPreCondit,nasmInMacStrucDef -syn region nasmMacroDef matchgroup=nasmMacro keepend start="^\s*%macro\>"hs=e-5 start="^\s*%imacro\>"hs=e-6 end="^\s*%endmacro\>"re=e-9 contains=@nasmGrpCntnMacro,nasmInMacStrucDef -if exists("nasm_loose_syntax") - syn match nasmInMacLabel contained "%\(%\k\+\>\|{%\k\+}\)" - syn match nasmInMacLabel contained "%\($\+\(\w\|[#\.?@~]\)\k*\>\|{$\+\(\w\|[#\.?@~]\)\k*}\)" - syn match nasmInMacPreProc contained "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=nasmStructureLabel,nasmLabel,nasmInMacParam,nasmLocalLabel,nasmSpecialLabel,nasmLabelError,nasmPreProcError - if !exists("nasm_no_warn") - syn match nasmInMacLblWarn contained "%\(%[$\.]\k*\>\|{%[$\.]\k*}\)" - syn match nasmInMacLblWarn contained "%\($\+\(\d\|[#\.@~]\)\k*\|{\$\+\(\d\|[#\.@~]\)\k*}\)" - hi link nasmInMacCatLabel nasmInMacLblWarn - else - hi link nasmInMacCatLabel nasmInMacLabel - endif -else - syn match nasmInMacLabel contained "%\(%\(\w\|[#?@~]\)\k*\>\|{%\(\w\|[#?@~]\)\k*}\)" - syn match nasmInMacLabel contained "%\($\+\(\h\|[?@]\)\k*\>\|{$\+\(\h\|[?@]\)\k*}\)" - hi link nasmInMacCatLabel nasmLabelError -endif -syn match nasmInMacCatLabel contained "\d\K\k*"lc=1 -syn match nasmInMacLabel contained "\d}\k\+"lc=2 -if !exists("nasm_no_warn") - syn match nasmInMacLblWarn contained "%\(\($\+\|%\)[_~][._~]*\>\|{\($\+\|%\)[_~][._~]*}\)" -endif -syn match nasmInMacPreProc contained "^\s*%pop\>"hs=e-3 -syn match nasmInMacPreProc contained "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=@nasmGrpNxtCtx -" structures cannot be nested (yet) -> use: 'keepend' and 're=' -syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*STRUCT\>"hs=e-5 end="^\s*ENDSTRUCT\>"re=e-9 contains=@nasmGrpCntnMacro -syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*STRUC\>"hs=e-4 end="^\s*ENDSTRUC\>"re=e-8 contains=@nasmGrpCntnMacro -syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="\" end="\" contains=@nasmGrpCntnMacro,nasmInStructure -" union types are not part of nasm (yet) -"syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*UNION\>"hs=e-4 end="^\s*ENDUNION\>"re=e-8 contains=@nasmGrpCntnMacro -"syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="\" end="\" contains=@nasmGrpCntnMacro,nasmInStructure -syn region nasmInMacPreConDef contained transparent matchgroup=nasmInMacPreCondit start="^\s*%ifnidni\>"hs=e-7 start="^\s*%if\(idni\|n\(ctx\|def\|idn\|num\|str\)\)\>"hs=e-6 start="^\s*%if\(ctx\|def\|idn\|nid\|num\|str\)\>"hs=e-5 start="^\s*%ifid\>"hs=e-4 start="^\s*%if\>"hs=e-2 end="%endif\>" contains=@nasmGrpCntnMacro,nasmInMacPreCondit,nasmInPreCondit -syn match nasmInMacPreCondit contained transparent "ctx\s"lc=3 skipwhite nextgroup=@nasmGrpNxtCtx -syn match nasmInMacPreCondit contained "^\s*%elifctx\>"hs=e-7 skipwhite nextgroup=@nasmGrpNxtCtx -syn match nasmInMacPreCondit contained "^\s*%elifnctx\>"hs=e-8 skipwhite nextgroup=@nasmGrpNxtCtx -syn match nasmInMacParamNum contained "\<\d\+\.list\>"me=e-5 -syn match nasmInMacParamNum contained "\<\d\+\.nolist\>"me=e-7 -syn match nasmInMacDirective contained "\.\(no\)\=list\>" -syn match nasmInMacMacro contained transparent "macro\s"lc=5 skipwhite nextgroup=nasmStructureLabel -syn match nasmInMacMacro contained "^\s*%rotate\>"hs=e-6 -syn match nasmInMacParam contained "%\([+-]\=\d\+\|{[+-]\=\d\+}\)" -" nasm conditional macro operands/arguments -" Todo: check feasebility; add too nasmGrpInMacros, etc. -"syn match nasmInMacCond contained "\<\(N\=\([ABGL]E\=\|[CEOSZ]\)\|P[EO]\=\)\>" -syn cluster nasmGrpInMacros contains=nasmMacro,nasmInMacMacro,nasmInMacParam,nasmInMacParamNum,nasmInMacDirective,nasmInMacLabel,nasmInMacLblWarn,nasmInMacMemRef,nasmInMacPreConDef,nasmInMacPreCondit,nasmInMacPreProc,nasmInMacStrucDef - -" Context pre-procs that are better used inside a macro -if exists("nasm_ctx_outside_macro") - syn region nasmPreConditDef transparent matchgroup=nasmCtxPreCondit start="^\s*%ifnctx\>"hs=e-6 start="^\s*%ifctx\>"hs=e-5 end="%endif\>" contains=@nasmGrpCntnPreCon - syn match nasmCtxPreProc "^\s*%pop\>"hs=e-3 - if exists("nasm_loose_syntax") - syn match nasmCtxLocLabel "%$\+\(\w\|[#\.?@~]\)\k*\>" - else - syn match nasmCtxLocLabel "%$\+\(\h\|[?@]\)\k*\>" - endif - syn match nasmCtxPreProc "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=@nasmGrpNxtCtx - syn match nasmCtxPreCondit contained transparent "ctx\s"lc=3 skipwhite nextgroup=@nasmGrpNxtCtx - syn match nasmCtxPreCondit contained "^\s*%elifctx\>"hs=e-7 skipwhite nextgroup=@nasmGrpNxtCtx - syn match nasmCtxPreCondit contained "^\s*%elifnctx\>"hs=e-8 skipwhite nextgroup=@nasmGrpNxtCtx - if exists("nasm_no_warn") - hi link nasmCtxPreCondit nasmPreCondit - hi link nasmCtxPreProc nasmPreProc - hi link nasmCtxLocLabel nasmLocalLabel - else - hi link nasmCtxPreCondit nasmPreProcWarn - hi link nasmCtxPreProc nasmPreProcWarn - hi link nasmCtxLocLabel nasmLabelWarn - endif -endif - -" Conditional assembly -syn cluster nasmGrpCntnPreCon contains=ALLBUT,@nasmGrpInComments,@nasmGrpInMacros,@nasmGrpInStrucs -syn region nasmPreConditDef transparent matchgroup=nasmPreCondit start="^\s*%ifnidni\>"hs=e-7 start="^\s*%if\(idni\|n\(def\|idn\|num\|str\)\)\>"hs=e-6 start="^\s*%if\(def\|idn\|nid\|num\|str\)\>"hs=e-5 start="^\s*%ifid\>"hs=e-4 start="^\s*%if\>"hs=e-2 end="%endif\>" contains=@nasmGrpCntnPreCon -syn match nasmInPreCondit contained "^\s*%el\(if\|se\)\>"hs=e-4 -syn match nasmInPreCondit contained "^\s*%elifid\>"hs=e-6 -syn match nasmInPreCondit contained "^\s*%elif\(def\|idn\|nid\|num\|str\)\>"hs=e-7 -syn match nasmInPreCondit contained "^\s*%elif\(n\(def\|idn\|num\|str\)\|idni\)\>"hs=e-8 -syn match nasmInPreCondit contained "^\s*%elifnidni\>"hs=e-9 -syn cluster nasmGrpInPreCondits contains=nasmPreCondit,nasmInPreCondit,nasmCtxPreCondit -syn cluster nasmGrpPreCondits contains=nasmPreConditDef,@nasmGrpInPreCondits,nasmCtxPreProc,nasmCtxLocLabel - -" Other pre-processor statements -syn match nasmPreProc "^\s*%rep\>"hs=e-3 -syn match nasmPreProc "^\s*%line\>"hs=e-4 -syn match nasmPreProc "^\s*%\(clear\|error\)\>"hs=e-5 -syn match nasmPreProc "^\s*%endrep\>"hs=e-6 -syn match nasmPreProc "^\s*%exitrep\>"hs=e-7 -syn match nasmDefine "^\s*%undef\>"hs=e-5 -syn match nasmDefine "^\s*%\(assign\|define\)\>"hs=e-6 -syn match nasmDefine "^\s*%i\(assign\|define\)\>"hs=e-7 -syn match nasmInclude "^\s*%include\>"hs=e-7 - -" Multiple pre-processor instructions on single line detection (obsolete) -"syn match nasmPreProcError +^\s*\([^\t "%';][^"%';]*\|[^\t "';][^"%';]\+\)%\a\+\>+ -syn cluster nasmGrpPreProcs contains=nasmMacroDef,@nasmGrpInMacros,@nasmGrpPreCondits,nasmPreProc,nasmDefine,nasmInclude,nasmPreProcWarn,nasmPreProcError - - - -" Register Identifiers: -" Register operands: -syn match nasmGen08Register "\<[A-D][HL]\>" -syn match nasmGen16Register "\<\([A-D]X\|[DS]I\|[BS]P\)\>" -syn match nasmGen32Register "\" -syn match nasmSegRegister "\<[C-GS]S\>" -syn match nasmSpcRegister "\" -syn match nasmFpuRegister "\" -syn match nasmMmxRegister "\" -syn match nasmSseRegister "\" -syn match nasmCtrlRegister "\" -syn match nasmDebugRegister "\" -syn match nasmTestRegister "\" -syn match nasmRegisterError "\<\(CR[15-9]\|DR[4-58-9]\|TR[0-28-9]\)\>" -syn match nasmRegisterError "\" -syn match nasmRegisterError "\\)" -syn match nasmRegisterError "\" -" Memory reference operand (address): -syn match nasmMemRefError "[\[\]]" -syn cluster nasmGrpCntnMemRef contains=ALLBUT,@nasmGrpComments,@nasmGrpPreProcs,@nasmGrpInStrucs,nasmMemReference,nasmMemRefError -syn match nasmInMacMemRef contained "\[[^;\[\]]\{-}\]" contains=@nasmGrpCntnMemRef,nasmPreProcError,nasmInMacLabel,nasmInMacLblWarn,nasmInMacParam -syn match nasmMemReference "\[[^;\[\]]\{-}\]" contains=@nasmGrpCntnMemRef,nasmPreProcError,nasmCtxLocLabel - - - -" Netwide Assembler Directives: -" Compilation constants -syn keyword nasmConstant __BITS__ __DATE__ __FILE__ __FORMAT__ __LINE__ -syn keyword nasmConstant __NASM_MAJOR__ __NASM_MINOR__ __NASM_VERSION__ -syn keyword nasmConstant __TIME__ -" Instruction modifiers -syn match nasmInstructnError "\" -syn match nasmInstrModifier "\(^\|:\)\s*[C-GS]S\>"ms=e-1 -syn keyword nasmInstrModifier A16 A32 O16 O32 -syn match nasmInstrModifier "\"lc=5,ms=e-1 -" the 'to' keyword is not allowed for fpu-pop instructions (yet) -"syn match nasmInstrModifier "\"lc=6,ms=e-1 -" NAsm directives -syn keyword nasmRepeat TIMES -syn keyword nasmDirective ALIGN[B] INCBIN EQU NOSPLIT SPLIT -syn keyword nasmDirective ABSOLUTE BITS SECTION SEGMENT -syn keyword nasmDirective ENDSECTION ENDSEGMENT -syn keyword nasmDirective __SECT__ -" Macro created standard directives: (requires %include) -syn case match -syn keyword nasmStdDirective ENDPROC EPILOGUE LOCALS PROC PROLOGUE USES -syn keyword nasmStdDirective ENDIF ELSE ELIF ELSIF IF -"syn keyword nasmStdDirective BREAK CASE DEFAULT ENDSWITCH SWITCH -"syn keyword nasmStdDirective CASE OF ENDCASE -syn keyword nasmStdDirective DO ENDFOR ENDWHILE FOR REPEAT UNTIL WHILE EXIT -syn case ignore -" Format specific directives: (all formats) -" (excluded: extension directives to section, global, common and extern) -syn keyword nasmFmtDirective ORG -syn keyword nasmFmtDirective EXPORT IMPORT GROUP UPPERCASE SEG WRT -syn keyword nasmFmtDirective LIBRARY -syn case match -syn keyword nasmFmtDirective _GLOBAL_OFFSET_TABLE_ __GLOBAL_OFFSET_TABLE_ -syn keyword nasmFmtDirective ..start ..got ..gotoff ..gotpc ..plt ..sym -syn case ignore - - - -" Standard Instructions: -syn match nasmInstructnError "\<\(F\=CMOV\|SET\)N\=\a\{0,2}\>" -syn keyword nasmInstructnError CMPS MOVS LCS LODS STOS XLAT -syn match nasmStdInstruction "\" -syn match nasmInstructnError "\\s*[^:]"he=e-1 -syn match nasmStdInstruction "\<\(CMOV\|J\|SET\)\(N\=\([ABGL]E\=\|[CEOSZ]\)\|P[EO]\=\)\>" -syn match nasmStdInstruction "\" -syn keyword nasmStdInstruction AAA AAD AAM AAS ADC ADD AND -syn keyword nasmStdInstruction BOUND BSF BSR BSWAP BT[C] BTR BTS -syn keyword nasmStdInstruction CALL CBW CDQ CLC CLD CMC CMP CMPSB CMPSD CMPSW -syn keyword nasmStdInstruction CMPXCHG CMPXCHG8B CPUID CWD[E] -syn keyword nasmStdInstruction DAA DAS DEC DIV ENTER -syn keyword nasmStdInstruction IDIV IMUL INC INT[O] IRET[D] IRETW -syn keyword nasmStdInstruction JCXZ JECXZ JMP -syn keyword nasmStdInstruction LAHF LDS LEA LEAVE LES LFS LGS LODSB LODSD -syn keyword nasmStdInstruction LODSW LOOP[E] LOOPNE LOOPNZ LOOPZ LSS -syn keyword nasmStdInstruction MOVSB MOVSD MOVSW MOVSX MOVZX MUL NEG NOP NOT -syn keyword nasmStdInstruction OR POPA[D] POPAW POPF[D] POPFW -syn keyword nasmStdInstruction PUSH[AD] PUSHAW PUSHF[D] PUSHFW -syn keyword nasmStdInstruction RCL RCR RETF RET[N] ROL ROR -syn keyword nasmStdInstruction SAHF SAL SAR SBB SCASB SCASD SCASW -syn keyword nasmStdInstruction SHL[D] SHR[D] STC STD STOSB STOSD STOSW SUB -syn keyword nasmStdInstruction TEST XADD XCHG XLATB XOR - - -" System Instructions: (usually privileged) -" Verification of pointer parameters -syn keyword nasmSysInstruction ARPL LAR LSL VERR VERW -" Addressing descriptor tables -syn keyword nasmSysInstruction LLDT SLDT LGDT SGDT -" Multitasking -syn keyword nasmSysInstruction LTR STR -" Coprocessing and Multiprocessing (requires fpu and multiple cpu's resp.) -syn keyword nasmSysInstruction CLTS LOCK WAIT -" Input and Output -syn keyword nasmInstructnError INS OUTS -syn keyword nasmSysInstruction IN INSB INSW INSD OUT OUTSB OUTSB OUTSW OUTSD -" Interrupt control -syn keyword nasmSysInstruction CLI STI LIDT SIDT -" System control -syn match nasmSysInstruction "\"me=s+3 -syn keyword nasmSysInstruction HLT INVD LMSW -syn keyword nasmSseInstruction PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA -syn keyword nasmSseInstruction RSM SFENCE SMSW SYSENTER SYSEXIT UD2 WBINVD -" TLB (Translation Lookahead Buffer) testing -syn match nasmSysInstruction "\"me=s+3 -syn keyword nasmSysInstruction INVLPG - -" Debugging Instructions: (privileged) -syn match nasmDbgInstruction "\"me=s+3 -syn keyword nasmDbgInstruction INT1 INT3 RDMSR RDTSC RDPMC WRMSR - - -" Floating Point Instructions: (requires FPU) -syn match nasmFpuInstruction "\" -syn keyword nasmFpuInstruction F2XM1 FABS FADD[P] FBLD FBSTP -syn keyword nasmFpuInstruction FCHS FCLEX FCOM[IP] FCOMP[P] FCOS -syn keyword nasmFpuInstruction FDECSTP FDISI FDIV[P] FDIVR[P] FENI FFREE -syn keyword nasmFpuInstruction FIADD FICOM[P] FIDIV[R] FILD -syn keyword nasmFpuInstruction FIMUL FINCSTP FINIT FIST[P] FISUB[R] -syn keyword nasmFpuInstruction FLD[1] FLDCW FLDENV FLDL2E FLDL2T FLDLG2 -syn keyword nasmFpuInstruction FLDLN2 FLDPI FLDZ FMUL[P] -syn keyword nasmFpuInstruction FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE -syn keyword nasmFpuInstruction FNSTCW FNSTENV FNSTSW FNSTSW -syn keyword nasmFpuInstruction FPATAN FPREM[1] FPTAN FRNDINT FRSTOR -syn keyword nasmFpuInstruction FSAVE FSCALE FSETPM FSIN FSINCOS FSQRT -syn keyword nasmFpuInstruction FSTCW FSTENV FST[P] FSTSW FSUB[P] FSUBR[P] -syn keyword nasmFpuInstruction FTST FUCOM[IP] FUCOMP[P] -syn keyword nasmFpuInstruction FXAM FXCH FXTRACT FYL2X FYL2XP1 - - -" Multi Media Xtension Packed Instructions: (requires MMX unit) -" Standard MMX instructions: (requires MMX1 unit) -syn match nasmInstructnError "\" -syn match nasmInstructnError "\" -syn keyword nasmMmxInstruction EMMS MOVD MOVQ -syn keyword nasmMmxInstruction PACKSSDW PACKSSWB PACKUSWB PADDB PADDD PADDW -syn keyword nasmMmxInstruction PADDSB PADDSW PADDUSB PADDUSW PAND[N] -syn keyword nasmMmxInstruction PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD PCMPGTW -syn keyword nasmMmxInstruction PMACHRIW PMADDWD PMULHW PMULLW POR -syn keyword nasmMmxInstruction PSLLD PSLLQ PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW -syn keyword nasmMmxInstruction PSUBB PSUBD PSUBW PSUBSB PSUBSW PSUBUSB PSUBUSW -syn keyword nasmMmxInstruction PUNPCKHBW PUNPCKHDQ PUNPCKHWD -syn keyword nasmMmxInstruction PUNPCKLBW PUNPCKLDQ PUNPCKLWD PXOR -" Extended MMX instructions: (requires MMX2/SSE unit) -syn keyword nasmMmxInstruction MASKMOVQ MOVNTQ -syn keyword nasmMmxInstruction PAVGB PAVGW PEXTRW PINSRW PMAXSW PMAXUB -syn keyword nasmMmxInstruction PMINSW PMINUB PMOVMSKB PMULHUW PSADBW PSHUFW - - -" Streaming SIMD Extension Packed Instructions: (requires SSE unit) -syn match nasmInstructnError "\" -syn match nasmSseInstruction "\" -syn keyword nasmSseInstruction ADDPS ADDSS ANDNPS ANDPS -syn keyword nasmSseInstruction COMISS CVTPI2PS CVTPS2PI -syn keyword nasmSseInstruction CVTSI2SS CVTSS2SI CVTTPS2PI CVTTSS2SI -syn keyword nasmSseInstruction DIVPS DIVSS FXRSTOR FXSAVE LDMXCSR -syn keyword nasmSseInstruction MAXPS MAXSS MINPS MINSS MOVAPS MOVHLPS MOVHPS -syn keyword nasmSseInstruction MOVLHPS MOVLPS MOVMSKPS MOVNTPS MOVSS MOVUPS -syn keyword nasmSseInstruction MULPS MULSS -syn keyword nasmSseInstruction ORPS RCPPS RCPSS RSQRTPS RSQRTSS -syn keyword nasmSseInstruction SHUFPS SQRTPS SQRTSS STMXCSR SUBPS SUBSS -syn keyword nasmSseInstruction UCOMISS UNPCKHPS UNPCKLPS XORPS - - -" Three Dimensional Now Packed Instructions: (requires 3DNow! unit) -syn keyword nasmNowInstruction FEMMS PAVGUSB PF2ID PFACC PFADD PFCMPEQ PFCMPGE -syn keyword nasmNowInstruction PFCMPGT PFMAX PFMIN PFMUL PFRCP PFRCPIT1 -syn keyword nasmNowInstruction PFRCPIT2 PFRSQIT1 PFRSQRT PFSUB[R] PI2FD -syn keyword nasmNowInstruction PMULHRWA PREFETCH[W] - - -" Vendor Specific Instructions: -" Cyrix instructions (requires Cyrix processor) -syn keyword nasmCrxInstruction PADDSIW PAVEB PDISTIB PMAGW PMULHRW[C] PMULHRIW -syn keyword nasmCrxInstruction PMVGEZB PMVLZB PMVNZB PMVZB PSUBSIW -syn keyword nasmCrxInstruction RDSHR RSDC RSLDT SMINT SMINTOLD SVDC SVLDT SVTS -syn keyword nasmCrxInstruction WRSHR -" AMD instructions (requires AMD processor) -syn keyword nasmAmdInstruction SYSCALL SYSRET - - -" Undocumented Instructions: -syn match nasmUndInstruction "\"me=s+3 -syn keyword nasmUndInstruction CMPXCHG486 IBTS ICEBP INT01 INT03 LOADALL -syn keyword nasmUndInstruction LOADALL286 LOADALL386 SALC SMI UD1 UMOV XBTS - - - -" Synchronize Syntax: -syn sync clear -syn sync minlines=50 "for multiple region nesting -syn sync match nasmSync grouphere nasmMacroDef "^\s*%i\=macro\>"me=s-1 -syn sync match nasmSync grouphere NONE "^\s*%endmacro\>" - - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later : only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_nasm_syntax_inits") - if version < 508 - let did_nasm_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " Sub Links: - HiLink nasmInMacDirective nasmDirective - HiLink nasmInMacLabel nasmLocalLabel - HiLink nasmInMacLblWarn nasmLabelWarn - HiLink nasmInMacMacro nasmMacro - HiLink nasmInMacParam nasmMacro - HiLink nasmInMacParamNum nasmDecNumber - HiLink nasmInMacPreCondit nasmPreCondit - HiLink nasmInMacPreProc nasmPreProc - HiLink nasmInPreCondit nasmPreCondit - HiLink nasmInStructure nasmStructure - HiLink nasmStructureLabel nasmStructure - - " Comment Group: - HiLink nasmComment Comment - HiLink nasmSpecialComment SpecialComment - HiLink nasmInCommentTodo Todo - - " Constant Group: - HiLink nasmString String - HiLink nasmStringError Error - HiLink nasmBinNumber Number - HiLink nasmOctNumber Number - HiLink nasmDecNumber Number - HiLink nasmHexNumber Number - HiLink nasmFltNumber Float - HiLink nasmNumberError Error - - " Identifier Group: - HiLink nasmLabel Identifier - HiLink nasmLocalLabel Identifier - HiLink nasmSpecialLabel Special - HiLink nasmLabelError Error - HiLink nasmLabelWarn Todo - - " PreProc Group: - HiLink nasmPreProc PreProc - HiLink nasmDefine Define - HiLink nasmInclude Include - HiLink nasmMacro Macro - HiLink nasmPreCondit PreCondit - HiLink nasmPreProcError Error - HiLink nasmPreProcWarn Todo - - " Type Group: - HiLink nasmType Type - HiLink nasmStorage StorageClass - HiLink nasmStructure Structure - HiLink nasmTypeError Error - - " Directive Group: - HiLink nasmConstant Constant - HiLink nasmInstrModifier Operator - HiLink nasmRepeat Repeat - HiLink nasmDirective Keyword - HiLink nasmStdDirective Operator - HiLink nasmFmtDirective Keyword - - " Register Group: - HiLink nasmCtrlRegister Special - HiLink nasmDebugRegister Debug - HiLink nasmTestRegister Special - HiLink nasmRegisterError Error - HiLink nasmMemRefError Error - - " Instruction Group: - HiLink nasmStdInstruction Statement - HiLink nasmSysInstruction Statement - HiLink nasmDbgInstruction Debug - HiLink nasmFpuInstruction Statement - HiLink nasmMmxInstruction Statement - HiLink nasmSseInstruction Statement - HiLink nasmNowInstruction Statement - HiLink nasmAmdInstruction Special - HiLink nasmCrxInstruction Special - HiLink nasmUndInstruction Todo - HiLink nasmInstructnError Error - - delcommand HiLink -endif - -let b:current_syntax = "nasm" - -" vim:ts=8 sw=4 diff --git a/share/vim/vim73/syntax/natural.vim b/share/vim/vim73/syntax/natural.vim deleted file mode 100644 index 26281513..00000000 --- a/share/vim/vim73/syntax/natural.vim +++ /dev/null @@ -1,209 +0,0 @@ -" Vim syntax file -" -" Language: NATURAL -" Version: 2.1.0.3 -" Maintainer: Marko von Oppen -" Last Changed: 2008-07-29 01:40:52 -" Support: http://www.von-oppen.com/ - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when this syntax file was already loaded -if v:version < 600 - syntax clear - set iskeyword+=-,*,#,+,_,/ -elseif exists("b:current_syntax") - finish -else - setlocal iskeyword+=-,*,#,+,_,/ -endif - -" NATURAL is case insensitive -syntax case ignore - -" preprocessor -syn keyword naturalInclude include nextgroup=naturalObjName skipwhite - -" define data -syn keyword naturalKeyword define data end-define -syn keyword naturalKeyword independent global parameter local redefine view -syn keyword naturalKeyword const[ant] init initial - -" loops -syn keyword naturalLoop read end-read end-work find end-find histogram end-histogram -syn keyword naturalLoop end-all sort end-sort sorted descending ascending -syn keyword naturalRepeat repeat end-repeat while until for step end-for -syn keyword naturalKeyword in file with field starting from ending at thru by isn where -syn keyword naturalError on error end-error -syn keyword naturalKeyword accept reject end-enddata number unique retain as release -syn keyword naturalKeyword start end-start break end-break physical page top sequence -syn keyword naturalKeyword end-toppage end-endpage end-endfile before processing -syn keyword naturalKeyword end-before - -" conditionals -syn keyword naturalConditional if then else end-if end-norec -syn keyword naturalConditional decide end-decide value when condition none any - -" assignment / calculation -syn keyword naturalKeyword reset assign move left right justified compress to into edited -syn keyword naturalKeyword add subtract multiply divide compute name -syn keyword naturalKeyword all giving remainder rounded leaving space numeric -syn keyword naturalKeyword examine full replace giving separate delimiter modified -syn keyword naturalKeyword suspend identical suppress - -" program flow -syn keyword naturalFlow callnat fetch return enter escape bottom top stack formatted -syn keyword naturalFlow command call -syn keyword naturalflow end-subroutine routine - -" file operations -syn keyword naturalKeyword update store get delete end transaction work once close - -" other keywords -syn keyword naturalKeyword first every of no record[s] found ignore immediate -syn keyword naturalKeyword set settime key control stop terminate - -" in-/output -syn keyword naturalKeyword write display input reinput notitle nohdr map newpage -syn keyword naturalKeyword alarm text help eject index window base size -syn keyword naturalKeyword format printer skip lines - -" functions -syn keyword naturalKeyword abs atn cos exp frac int log sgn sin sqrt tan val old -syn keyword naturalKeyword pos - -" report mode keywords -syn keyword naturalRMKeyword same loop obtain indexed do doend - -" Subroutine name -syn keyword naturalFlow perform subroutine nextgroup=naturalFunction skipwhite -syn match naturalFunction "\<[a-z][-_a-z0-9]*\>" - -syn keyword naturalFlow using nextgroup=naturalKeyword,naturalObjName skipwhite -syn match naturalObjName "\<[a-z][-_a-z0-9]\{,7}\>" - -" Labels -syn match naturalLabel "\<[+#a-z][-_#a-z0-9]*\." -syn match naturalRef "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>" - -" mark keyword special handling -syn keyword naturalKeyword mark nextgroup=naturalMark skipwhite -syn match naturalMark "\<\*[a-z][-_#.a-z0-9]*\>" - -" System variables -syn match naturalSysVar "\<\*[a-z][-a-z0-9]*\>" - -"integer number, or floating point number without a dot. -syn match naturalNumber "\<-\=\d\+\>" -"floating point number, with dot -syn match naturalNumber "\<-\=\d\+\.\d\+\>" -"floating point number, starting with a dot -syn match naturalNumber "\.\d\+" - -" Formats in write statement -syn match naturalFormat "\<\d\+[TX]\>" - -" String and Character contstants -syn match naturalString "H'\x\+'" -syn region naturalString start=+"+ end=+"+ -syn region naturalString start=+'+ end=+'+ - -" Type definition -syn match naturalAttribute "\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>" -syn match naturalType contained "\<[ABINP]\d\+\(,\d\+\)\=\>" -syn match naturalType contained "\<[CL]\>" - -" "TODO" / other comments -syn keyword naturalTodo contained todo test -syn match naturalCommentMark contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1 - -" comments -syn region naturalComment start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark -syn region naturalComment start="^\*[ *]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark -syn region naturalComment start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark -syn match naturalComment "^\*$" -syn match naturalComment "^\d\{4} \*$"lc=5 -" /* is legal syntax in parentheses e.g. "#ident(label./*)" -syn region naturalPComment contained start="/\*\s*[^),]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark - -" operators -syn keyword naturalOperator and or not eq ne gt lt ge le mask scan modified - -" constants -syn keyword naturalBoolean true false -syn match naturalLineNo "^\d\{4}" - -" identifiers -syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1 -syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*$" -syn match naturalLegalIdent "[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*" - -" parentheses -syn region naturalPar matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment -syn match naturalLineRef "(\d\{4})" - -" build syntax groups -syntax cluster naturalConstant contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean - -" folding -if v:version >= 600 - set foldignore=* -endif - - -if v:version >= 508 || !exists("did_natural_syntax_inits") - if v:version < 508 - let did_natural_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - " The default methods for highlighting. Can be overridden later - - " Constants - HiLink naturalFormat Constant - HiLink naturalAttribute Constant - HiLink naturalNumber Number - HiLink naturalString String - HiLink naturalBoolean Boolean - - " All kinds of keywords - HiLink naturalConditional Conditional - HiLink naturalRepeat Repeat - HiLink naturalLoop Repeat - HiLink naturalFlow Keyword - HiLink naturalError Keyword - HiLink naturalKeyword Keyword - HiLink naturalOperator Operator - HiLink naturalParGui Operator - - " Labels - HiLink naturalLabel Label - HiLink naturalRefLabel Label - - " Comments - HiLink naturalPComment Comment - HiLink naturalComment Comment - HiLink naturalTodo Todo - HiLink naturalCommentMark PreProc - - HiLink naturalInclude Include - HiLink naturalSysVar Identifier - HiLink naturalLineNo LineNr - HiLink naturalLineRef Error - HiLink naturalSpecial Special - HiLink naturalComKey Todo - - " illegal things - HiLink naturalRMKeyword Error - HiLink naturalLegalIdent Error - - HiLink naturalType Type - HiLink naturalFunction Function - HiLink naturalObjName PreProc - - delcommand HiLink -endif - -let b:current_syntax = "natural" - -" vim:set ts=8 sw=8 noet ft=vim: diff --git a/share/vim/vim73/syntax/netrw.vim b/share/vim/vim73/syntax/netrw.vim deleted file mode 100644 index f6fd66c2..00000000 --- a/share/vim/vim73/syntax/netrw.vim +++ /dev/null @@ -1,109 +0,0 @@ -" Language : Netrw Remote-Directory Listing Syntax -" Maintainer : Charles E. Campbell, Jr. -" Last change: Jan 14, 2009 -" Version : 16 -" --------------------------------------------------------------------- - -" Syntax Clearing: {{{1 -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" --------------------------------------------------------------------- -" Directory List Syntax Highlighting: {{{1 -syn cluster NetrwGroup contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion,netrwCopyTgt -syn cluster NetrwTreeGroup contains=netrwDir,netrwSymLink,netrwExe - -syn match netrwPlain "\(\S\+ \)*\S\+" contains=@NoSpell -syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell -syn match netrwDir "\.\{1,2}/" contains=netrwClassify,@NoSpell -syn match netrwDir "\%(\S\+ \)*\S\+/" contains=netrwClassify,@NoSpell -syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" skipwhite contains=netrwDateSep,@NoSpell nextgroup=netrwTime -syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell -syn match netrwExe "\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell -syn match netrwTreeBar "^\%([-+|] \)\+" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup -syn match netrwTreeBarSpace " " contained - -syn match netrwClassify "[*=|@/]\ze\%(\s\{2,}\|$\)" contained -syn match netrwDateSep "/" contained -syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep -syn match netrwTimeSep ":" - -syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup,@NoSpell -syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite contains=@NoSpell nextgroup=netrwHidePat -syn match netrwSlash "/" contained -syn match netrwHidePat "[^,]\+" contained skipwhite contains=@NoSpell nextgroup=netrwHideSep -syn match netrwHideSep "," contained skipwhite nextgroup=netrwHidePat -syn match netrwSortBy "Sorted by" contained transparent skipwhite nextgroup=netrwList -syn match netrwSortSeq "Sort sequence:" contained transparent skipwhite nextgroup=netrwList -syn match netrwCopyTgt "Copy/Move Tgt:" contained transparent skipwhite nextgroup=netrwList -syn match netrwList ".*$" contained contains=netrwComma,@NoSpell -syn match netrwComma "," contained -syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd,@NoSpell keepend contained -syn match netrwHelpCmd "\S\ze:" contained skipwhite contains=@NoSpell nextgroup=netrwCmdSep -syn match netrwCmdSep ":" contained nextgroup=netrwCmdNote -syn match netrwCmdNote ".\{-}\ze " contained contains=@NoSpell -syn match netrwVersion "(netrw.*)" contained contains=@NoSpell - -" ----------------------------- -" Special filetype highlighting {{{1 -" ----------------------------- -if exists("g:netrw_special_syntax") && netrw_special_syntax - syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell - syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell - if has("unix") - syn match netrwCoreDump "\" contains=netrwTreeBar,@NoSpell - endif - syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell - syn match netrwHdr "\(\S\+ \)*\S\+\.h\>" contains=netrwTreeBar,@NoSpell - syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell - syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwTags "\" contains=netrwTreeBar,@NoSpell - syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwTilde "\(\S\+ \)*\S\+\~\>" contains=netrwTreeBar,@NoSpell - syn match netrwTmp "\\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell -endif - -" --------------------------------------------------------------------- -" Highlighting Links: {{{1 -if !exists("did_drchip_netrwlist_syntax") - let did_drchip_netrwlist_syntax= 1 - hi default link netrwClassify Function - hi default link netrwCmdSep Delimiter - hi default link netrwComment Comment - hi default link netrwDir Directory - hi default link netrwHelpCmd Function - hi default link netrwHidePat Statement - hi default link netrwHideSep netrwComment - hi default link netrwList Statement - hi default link netrwVersion Identifier - hi default link netrwSymLink Question - hi default link netrwExe PreProc - hi default link netrwDateSep Delimiter - - hi default link netrwTreeBar Special - hi default link netrwTimeSep netrwDateSep - hi default link netrwComma netrwComment - hi default link netrwHide netrwComment - hi default link netrwMarkFile Identifier - - " special syntax highlighting (see :he g:netrw_special_syntax) - hi default link netrwBak NonText - hi default link netrwCompress Folded - hi default link netrwCoreDump WarningMsg - hi default link netrwData DiffChange - hi default link netrwLib DiffChange - hi default link netrwMakefile DiffChange - hi default link netrwObj Folded - hi default link netrwTilde Folded - hi default link netrwTmp Folded - hi default link netrwTags Folded -endif - -" Current Syntax: {{{1 -let b:current_syntax = "netrwlist" -" --------------------------------------------------------------------- -" vim: ts=8 fdm=marker diff --git a/share/vim/vim73/syntax/nroff.vim b/share/vim/vim73/syntax/nroff.vim deleted file mode 100644 index 6f2a1313..00000000 --- a/share/vim/vim73/syntax/nroff.vim +++ /dev/null @@ -1,259 +0,0 @@ -" VIM syntax file -" Language: nroff/groff -" Maintainer: Alejandro López-Valencia -" URL: http://dradul.tripod.com/vim -" Last Change: 2006 Apr 14 -" -" {{{1 Acknowledgements -" -" ACKNOWLEDGEMENTS: -" -" My thanks to Jérôme Plût , who was the -" creator and maintainer of this syntax file for several years. -" May I be as good at it as he has been. -" -" {{{1 Todo -" -" TODO: -" -" * Write syntax highlighting files for the preprocessors, -" and integrate with nroff.vim. -" -" -" {{{1 Start syntax highlighting. -" -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -" -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" -" {{{1 plugin settings... -" -" {{{2 enable spacing error highlighting -" -if exists("nroff_space_errors") - syn match nroffError /\s\+$/ - syn match nroffSpaceError /[.,:;!?]\s\{2,}/ -endif -" -" -" {{{1 Special file settings -" -" {{{2 ms exdented paragraphs are not in the default paragraphs list. -" -setlocal paragraphs+=XP -" -" {{{2 Activate navigation to preporcessor sections. -" -if exists("b:preprocs_as_sections") - setlocal sections=EQTSPS[\ G1GS -endif - -" {{{1 Escape sequences -" ------------------------------------------------------------ - -syn match nroffEscChar /\\[CN]/ nextgroup=nroffEscCharArg -syn match nroffEscape /\\[*fgmnYV]/ nextgroup=nroffEscRegPar,nroffEscRegArg -syn match nroffEscape /\\s[+-]\=/ nextgroup=nroffSize -syn match nroffEscape /\\[$AbDhlLRvxXZ]/ nextgroup=nroffEscPar,nroffEscArg - -syn match nroffEscRegArg /./ contained -syn match nroffEscRegArg2 /../ contained -syn match nroffEscRegPar /(/ contained nextgroup=nroffEscRegArg2 -syn match nroffEscArg /./ contained -syn match nroffEscArg2 /../ contained -syn match nroffEscPar /(/ contained nextgroup=nroffEscArg2 -syn match nroffSize /\((\d\)\=\d/ contained - -syn region nroffEscCharArg start=/'/ end=/'/ contained -syn region nroffEscArg start=/'/ end=/'/ contained contains=nroffEscape,@nroffSpecial - -if exists("b:nroff_is_groff") - syn region nroffEscRegArg matchgroup=nroffEscape start=/\[/ end=/\]/ contained oneline - syn region nroffSize matchgroup=nroffEscape start=/\[/ end=/\]/ contained -endif - -syn match nroffEscape /\\[adprtu{}]/ -syn match nroffEscape /\\$/ -syn match nroffEscape /\\\$[@*]/ - -" {{{1 Strings and special characters -" ------------------------------------------------------------ - -syn match nroffSpecialChar /\\[\\eE?!-]/ -syn match nroffSpace "\\[&%~|^0)/,]" -syn match nroffSpecialChar /\\(../ - -if exists("b:nroff_is_groff") - syn match nroffSpecialChar /\\\[[^]]*]/ - syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\?/ end=/\\?/ oneline -endif - -syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\!/ end=/$/ oneline - -syn cluster nroffSpecial contains=nroffSpecialChar,nroffSpace - - -syn region nroffString start=/"/ end=/"/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained -syn region nroffString start=/'/ end=/'/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained - - -" {{{1 Numbers and units -" ------------------------------------------------------------ -syn match nroffNumBlock /[0-9.]\a\=/ contained contains=nroffNumber -syn match nroffNumber /\d\+\(\.\d*\)\=/ contained nextgroup=nroffUnit,nroffBadChar -syn match nroffNumber /\.\d\+)/ contained nextgroup=nroffUnit,nroffBadChar -syn match nroffBadChar /./ contained -syn match nroffUnit /[icpPszmnvMu]/ contained - - -" {{{1 Requests -" ------------------------------------------------------------ - -" Requests begin with . or ' at the beginning of a line, or -" after .if or .ie. - -syn match nroffReqLeader /^[.']/ nextgroup=nroffReqName skipwhite -syn match nroffReqLeader /[.']/ contained nextgroup=nroffReqName skipwhite - -if exists("b:nroff_is_groff") -" -" GNU troff allows long request names -" - syn match nroffReqName /[^\t \\\[?]\+/ contained nextgroup=nroffReqArg -else - syn match nroffReqName /[^\t \\\[?]\{1,2}/ contained nextgroup=nroffReqArg -endif - -syn region nroffReqArg start=/\S/ skip=/\\$/ end=/$/ contained contains=nroffEscape,@nroffSpecial,nroffString,nroffError,nroffSpaceError,nroffNumBlock,nroffComment - -" {{{2 Conditional: .if .ie .el -syn match nroffReqName /\(if\|ie\)/ contained nextgroup=nroffCond skipwhite -syn match nroffReqName /el/ contained nextgroup=nroffReqLeader skipwhite -syn match nroffCond /\S\+/ contained nextgroup=nroffReqLeader skipwhite - -" {{{2 String definition: .ds .as -syn match nroffReqname /[da]s/ contained nextgroup=nroffDefIdent skipwhite -syn match nroffDefIdent /\S\+/ contained nextgroup=nroffDefinition skipwhite -syn region nroffDefinition matchgroup=nroffSpecialChar start=/"/ matchgroup=NONE end=/\\"/me=e-2 skip=/\\$/ start=/\S/ end=/$/ contained contains=nroffDefSpecial -syn match nroffDefSpecial /\\$/ contained -syn match nroffDefSpecial /\\\((.\)\=./ contained - -if exists("b:nroff_is_groff") - syn match nroffDefSpecial /\\\[[^]]*]/ contained -endif - -" {{{2 Macro definition: .de .am, also diversion: .di -syn match nroffReqName /\(d[ei]\|am\)/ contained nextgroup=nroffIdent skipwhite -syn match nroffIdent /[^[?( \t]\+/ contained -if exists("b:nroff_is_groff") - syn match nroffReqName /als/ contained nextgroup=nroffIdent skipwhite -endif - -" {{{2 Register definition: .rn .rr -syn match nroffReqName /[rn]r/ contained nextgroup=nroffIdent skipwhite -if exists("b:nroff_is_groff") - syn match nroffReqName /\(rnn\|aln\)/ contained nextgroup=nroffIdent skipwhite -endif - - -" {{{1 eqn/tbl/pic -" ------------------------------------------------------------ -" -" XXX: write proper syntax highlight for eqn / tbl / pic ? -" - -syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/ -syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/ -syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/ -syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/ -syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/ -syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/ - -" {{{1 Comments -" ------------------------------------------------------------ - -syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./ -syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo -syn match nroffComment /^'''.*/ contains=nroffTodo - -if exists("b:nroff_is_groff") - syn match nroffComment "\\#.*$" contains=nroffTodo -endif - -syn keyword nroffTodo TODO XXX FIXME contained - -" {{{1 Hilighting -" ------------------------------------------------------------ -" - -" -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -" -if version >= 508 || !exists("did_nroff_syn_inits") - - if version < 508 - let did_nroff_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink nroffEscChar nroffSpecialChar - HiLink nroffEscCharAr nroffSpecialChar - HiLink nroffSpecialChar SpecialChar - HiLink nroffSpace Delimiter - - HiLink nroffEscRegArg2 nroffEscRegArg - HiLink nroffEscRegArg nroffIdent - - HiLink nroffEscArg2 nroffEscArg - HiLink nroffEscPar nroffEscape - - HiLink nroffEscRegPar nroffEscape - HiLink nroffEscArg nroffEscape - HiLink nroffSize nroffEscape - HiLink nroffEscape Preproc - - HiLink nroffIgnore Comment - HiLink nroffComment Comment - HiLink nroffTodo Todo - - HiLink nroffReqLeader nroffRequest - HiLink nroffReqName nroffRequest - HiLink nroffRequest Statement - HiLink nroffCond PreCondit - HiLink nroffDefIdent nroffIdent - HiLink nroffIdent Identifier - - HiLink nroffEquation PreProc - HiLink nroffTable PreProc - HiLink nroffPicture PreProc - HiLink nroffRefer PreProc - HiLink nroffGrap PreProc - HiLink nroffGremlin PreProc - - HiLink nroffNumber Number - HiLink nroffBadChar nroffError - HiLink nroffSpaceError nroffError - HiLink nroffError Error - - HiLink nroffPreserve String - HiLink nroffString String - HiLink nroffDefinition String - HiLink nroffDefSpecial Special - - delcommand HiLink - -endif - -let b:current_syntax = "nroff" - -" vim600: set fdm=marker fdl=2: diff --git a/share/vim/vim73/syntax/objc.vim b/share/vim/vim73/syntax/objc.vim deleted file mode 100644 index c575cf2a..00000000 --- a/share/vim/vim73/syntax/objc.vim +++ /dev/null @@ -1,110 +0,0 @@ -" Vim syntax file -" Language: Objective C -" Maintainer: Kazunobu Kuriyama -" Ex-maintainer: Anthony Hodsdon -" First Author: Valentino Kyriakides <1kyriaki@informatik.uni-hamburg.de> -" Last Change: 2007 Feb 21 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if &filetype != 'objcpp' - " Read the C syntax to start with - if version < 600 - source :p:h/c.vim - else - runtime! syntax/c.vim - endif -endif - -" Objective C extentions follow below -" -" NOTE: Objective C is abbreviated to ObjC/objc -" and uses *.h, *.m as file extensions! - - -" ObjC keywords, types, type qualifiers etc. -syn keyword objcStatement self super _cmd -syn keyword objcType id Class SEL IMP BOOL -syn keyword objcTypeModifier bycopy in out inout oneway -syn keyword objcConstant nil Nil - -" Match the ObjC #import directive (like C's #include) -syn region objcImported display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn match objcImported display contained "<[-_0-9a-zA-Z.\/]*>" -syn match objcImport display "^\s*\(%:\|#\)\s*import\>\s*["<]" contains=objcImported - -" Match the important ObjC directives -syn match objcScopeDecl "@public\|@private\|@protected" -syn match objcDirective "@interface\|@implementation" -syn match objcDirective "@class\|@end\|@defs" -syn match objcDirective "@encode\|@protocol\|@selector" -syn match objcDirective "@try\|@catch\|@finally\|@throw\|@synchronized" - -" Match the ObjC method types -" -" NOTE: here I match only the indicators, this looks -" much nicer and reduces cluttering color highlightings. -" However, if you prefer full method declaration matching -" append .* at the end of the next two patterns! -" -syn match objcInstMethod "^\s*-\s*" -syn match objcFactMethod "^\s*+\s*" - -" To distinguish from a header inclusion from a protocol list. -syn match objcProtocol display "<[_a-zA-Z][_a-zA-Z0-9]*>" contains=objcType,cType,Type - - -" To distinguish labels from the keyword for a method's parameter. -syn region objcKeyForMethodParam display - \ start="^\s*[_a-zA-Z][_a-zA-Z0-9]*\s*:\s*(" - \ end=")\s*[_a-zA-Z][_a-zA-Z0-9]*" - \ contains=objcType,objcTypeModifier,cType,cStructure,cStorageClass,Type - -" Objective-C Constant Strings -syn match objcSpecial display "%@" contained -syn region objcString start=+\(@"\|"\)+ skip=+\\\\\|\\"+ end=+"+ contains=cFormat,cSpecial,objcSpecial - -" Objective-C Message Expressions -syn region objcMessage display start="\[" end="\]" contains=objcMessage,objcStatement,objcType,objcTypeModifier,objcString,objcConstant,objcDirective,cType,cStructure,cStorageClass,cString,cCharacter,cSpecialCharacter,cNumbers,cConstant,cOperator,cComment,cCommentL,Type - -syn cluster cParenGroup add=objcMessage -syn cluster cPreProcGroup add=objcMessage - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_objc_syntax_inits") - if version < 508 - let did_objc_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink objcImport Include - HiLink objcImported cString - HiLink objcTypeModifier objcType - HiLink objcType Type - HiLink objcScopeDecl Statement - HiLink objcInstMethod Function - HiLink objcFactMethod Function - HiLink objcStatement Statement - HiLink objcDirective Statement - HiLink objcKeyForMethodParam None - HiLink objcString cString - HiLink objcSpecial Special - HiLink objcProtocol None - HiLink objcConstant cConstant - - delcommand HiLink -endif - -let b:current_syntax = "objc" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/ocaml.vim b/share/vim/vim73/syntax/ocaml.vim deleted file mode 100644 index 27eb3907..00000000 --- a/share/vim/vim73/syntax/ocaml.vim +++ /dev/null @@ -1,327 +0,0 @@ -" Vim syntax file -" Language: OCaml -" Filenames: *.ml *.mli *.mll *.mly -" Maintainers: Markus Mottl -" Karl-Heinz Sylla -" Issac Trotts -" URL: http://www.ocaml.info/vim/syntax/ocaml.vim -" Last Change: 2007 Apr 13 - Added highlighting of nativeints (MM) -" 2006 Oct 09 - More highlighting improvements to numbers (MM) -" 2006 Sep 19 - Improved highlighting of numbers (Florent Monnier) - -" A minor patch was applied to the official version so that object/end -" can be distinguished from begin/end, which is used for indentation, -" and folding. (David Baelde) - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") && b:current_syntax == "ocaml" - finish -endif - -" OCaml is case sensitive. -syn case match - -" Script headers highlighted like comments -syn match ocamlComment "^#!.*" - -" Scripting directives -syn match ocamlScript "^#\<\(quit\|labels\|warnings\|directory\|cd\|load\|use\|install_printer\|remove_printer\|require\|thread\|trace\|untrace\|untrace_all\|print_depth\|print_length\)\>" - -" Script headers highlighted like comments -syn match ocamlComment "^#!.*" - -" lowercase identifier - the standard way to match -syn match ocamlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/ - -syn match ocamlKeyChar "|" - -" Errors -syn match ocamlBraceErr "}" -syn match ocamlBrackErr "\]" -syn match ocamlParenErr ")" -syn match ocamlArrErr "|]" - -syn match ocamlCommentErr "\*)" - -syn match ocamlCountErr "\" -syn match ocamlCountErr "\" - -if !exists("ocaml_revised") - syn match ocamlDoErr "\" -endif - -syn match ocamlDoneErr "\" -syn match ocamlThenErr "\" - -" Error-highlighting of "end" without synchronization: -" as keyword or as error (default) -if exists("ocaml_noend_error") - syn match ocamlKeyword "\" -else - syn match ocamlEndErr "\" -endif - -" Some convenient clusters -syn cluster ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr - -syn cluster ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr - -syn cluster ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlPreMPRestr,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod - - -" Enclosing delimiters -syn region ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr -syn region ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}" contains=ALLBUT,@ocamlContained,ocamlBraceErr -syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr -syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr - - -" Comments -syn region ocamlComment start="(\*" end="\*)" contains=ocamlComment,ocamlTodo -syn keyword ocamlTodo contained TODO FIXME XXX NOTE - - -" Objects -syn region ocamlEnd matchgroup=ocamlObject start="\" matchgroup=ocamlObject end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr - - -" Blocks -if !exists("ocaml_revised") - syn region ocamlEnd matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr -endif - - -" "for" -syn region ocamlNone matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\<\(to\|downto\)\>" contains=ALLBUT,@ocamlContained,ocamlCountErr - - -" "do" -if !exists("ocaml_revised") - syn region ocamlDo matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlDoneErr -endif - -" "if" -syn region ocamlNone matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlThenErr - - -"" Modules - -" "struct" -syn region ocamlStruct matchgroup=ocamlModule start="\" matchgroup=ocamlModule end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr - -" "sig" -syn region ocamlSig matchgroup=ocamlModule start="\" matchgroup=ocamlModule end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule -syn region ocamlModSpec matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr - -" "open" -syn region ocamlNone matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*\>" contains=@ocamlAllErrs,ocamlComment - -" "include" -syn match ocamlKeyword "\" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod - -" "module" - somewhat complicated stuff ;-) -syn region ocamlModule matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDef -syn region ocamlPreDef start="."me=e-1 matchgroup=ocamlKeyword end="\l\|="me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlModTypeRestr,ocamlModTRWith nextgroup=ocamlModPreRHS -syn region ocamlModParam start="([^*]" end=")" contained contains=@ocamlAENoParen,ocamlModParam1 -syn match ocamlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlPreMPRestr - -syn region ocamlPreMPRestr start="."me=e-1 end=")"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlMPRestr,ocamlModTypeRestr - -syn region ocamlMPRestr start=":" end="."me=e-1 contained contains=@ocamlComment skipwhite skipempty nextgroup=ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3 -syn region ocamlMPRestr1 matchgroup=ocamlModule start="\ssig\s\=" matchgroup=ocamlModule end="\" contained contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule -syn region ocamlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=ocamlKeyword end="->" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam skipwhite skipempty nextgroup=ocamlFuncWith,ocamlMPRestr2 -syn match ocamlMPRestr3 "\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*" contained -syn match ocamlModPreRHS "=" contained skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod -syn region ocamlModRHS start="." end=".\w\|([^*]"me=e-2 contained contains=ocamlComment skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod -syn match ocamlFullMod "\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=ocamlFuncWith - -syn region ocamlFuncWith start="([^*]"me=e-1 end=")" contained contains=ocamlComment,ocamlWith,ocamlFuncStruct skipwhite skipempty nextgroup=ocamlFuncWith -syn region ocamlFuncStruct matchgroup=ocamlModule start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=ocamlModule end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr - -syn match ocamlModTypeRestr "\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contained -syn region ocamlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@ocamlAENoParen,ocamlWith -syn match ocamlWith "\<\(\u\(\w\|'\)*\.\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlWithRest -syn region ocamlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@ocamlContained - -" "module type" -syn region ocamlKeyword start="\\s*\" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef -syn match ocamlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s - -syn keyword ocamlKeyword and as assert class -syn keyword ocamlKeyword constraint else -syn keyword ocamlKeyword exception external fun - -syn keyword ocamlKeyword in inherit initializer -syn keyword ocamlKeyword land lazy let match -syn keyword ocamlKeyword method mutable new of -syn keyword ocamlKeyword parser private raise rec -syn keyword ocamlKeyword try type -syn keyword ocamlKeyword val virtual when while with - -if exists("ocaml_revised") - syn keyword ocamlKeyword do value - syn keyword ocamlBoolean True False -else - syn keyword ocamlKeyword function - syn keyword ocamlBoolean true false - syn match ocamlKeyChar "!" -endif - -syn keyword ocamlType array bool char exn float format format4 -syn keyword ocamlType int int32 int64 lazy_t list nativeint option -syn keyword ocamlType string unit - -syn keyword ocamlOperator asr lor lsl lsr lxor mod not - -syn match ocamlConstructor "(\s*)" -syn match ocamlConstructor "\[\s*\]" -syn match ocamlConstructor "\[|\s*>|]" -syn match ocamlConstructor "\[<\s*>\]" -syn match ocamlConstructor "\u\(\w\|'\)*\>" - -" Polymorphic variants -syn match ocamlConstructor "`\w\(\w\|'\)*\>" - -" Module prefix -syn match ocamlModPath "\u\(\w\|'\)*\."he=e-1 - -syn match ocamlCharacter "'\\\d\d\d'\|'\\[\'ntbr]'\|'.'" -syn match ocamlCharErr "'\\\d\d'\|'\\\d'" -syn match ocamlCharErr "'\\[^\'ntbr]'" -syn region ocamlString start=+"+ skip=+\\\\\|\\"+ end=+"+ - -syn match ocamlFunDef "->" -syn match ocamlRefAssign ":=" -syn match ocamlTopStop ";;" -syn match ocamlOperator "\^" -syn match ocamlOperator "::" - -syn match ocamlOperator "&&" -syn match ocamlOperator "<" -syn match ocamlOperator ">" -syn match ocamlAnyVar "\<_\>" -syn match ocamlKeyChar "|[^\]]"me=e-1 -syn match ocamlKeyChar ";" -syn match ocamlKeyChar "\~" -syn match ocamlKeyChar "?" -syn match ocamlKeyChar "\*" -syn match ocamlKeyChar "=" - -if exists("ocaml_revised") - syn match ocamlErr "<-" -else - syn match ocamlOperator "<-" -endif - -syn match ocamlNumber "\<-\=\d\(_\|\d\)*[l|L|n]\?\>" -syn match ocamlNumber "\<-\=0[x|X]\(\x\|_\)\+[l|L|n]\?\>" -syn match ocamlNumber "\<-\=0[o|O]\(\o\|_\)\+[l|L|n]\?\>" -syn match ocamlNumber "\<-\=0[b|B]\([01]\|_\)\+[l|L|n]\?\>" -syn match ocamlFloat "\<-\=\d\(_\|\d\)*\.\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>" - -" Labels -syn match ocamlLabel "\~\(\l\|_\)\(\w\|'\)*"lc=1 -syn match ocamlLabel "?\(\l\|_\)\(\w\|'\)*"lc=1 -syn region ocamlLabel transparent matchgroup=ocamlLabel start="?(\(\l\|_\)\(\w\|'\)*"lc=2 end=")"me=e-1 contains=ALLBUT,@ocamlContained,ocamlParenErr - - -" Synchronization -syn sync minlines=50 -syn sync maxlines=500 - -if !exists("ocaml_revised") - syn sync match ocamlDoSync grouphere ocamlDo "\" - syn sync match ocamlDoSync groupthere ocamlDo "\" -endif - -if exists("ocaml_revised") - syn sync match ocamlEndSync grouphere ocamlEnd "\<\(object\)\>" -else - syn sync match ocamlEndSync grouphere ocamlEnd "\<\(begin\|object\)\>" -endif - -syn sync match ocamlEndSync groupthere ocamlEnd "\" -syn sync match ocamlStructSync grouphere ocamlStruct "\" -syn sync match ocamlStructSync groupthere ocamlStruct "\" -syn sync match ocamlSigSync grouphere ocamlSig "\" -syn sync match ocamlSigSync groupthere ocamlSig "\" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_ocaml_syntax_inits") - if version < 508 - let did_ocaml_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink ocamlBraceErr Error - HiLink ocamlBrackErr Error - HiLink ocamlParenErr Error - HiLink ocamlArrErr Error - - HiLink ocamlCommentErr Error - - HiLink ocamlCountErr Error - HiLink ocamlDoErr Error - HiLink ocamlDoneErr Error - HiLink ocamlEndErr Error - HiLink ocamlThenErr Error - - HiLink ocamlCharErr Error - - HiLink ocamlErr Error - - HiLink ocamlComment Comment - - HiLink ocamlModPath Include - HiLink ocamlObject Include - HiLink ocamlModule Include - HiLink ocamlModParam1 Include - HiLink ocamlModType Include - HiLink ocamlMPRestr3 Include - HiLink ocamlFullMod Include - HiLink ocamlModTypeRestr Include - HiLink ocamlWith Include - HiLink ocamlMTDef Include - - HiLink ocamlScript Include - - HiLink ocamlConstructor Constant - - HiLink ocamlModPreRHS Keyword - HiLink ocamlMPRestr2 Keyword - HiLink ocamlKeyword Keyword - HiLink ocamlMethod Include - HiLink ocamlFunDef Keyword - HiLink ocamlRefAssign Keyword - HiLink ocamlKeyChar Keyword - HiLink ocamlAnyVar Keyword - HiLink ocamlTopStop Keyword - HiLink ocamlOperator Keyword - - HiLink ocamlBoolean Boolean - HiLink ocamlCharacter Character - HiLink ocamlNumber Number - HiLink ocamlFloat Float - HiLink ocamlString String - - HiLink ocamlLabel Identifier - - HiLink ocamlType Type - - HiLink ocamlTodo Todo - - HiLink ocamlEncl Keyword - - delcommand HiLink -endif - -let b:current_syntax = "ocaml" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/opl.vim b/share/vim/vim73/syntax/opl.vim deleted file mode 100644 index aa3cb9e3..00000000 --- a/share/vim/vim73/syntax/opl.vim +++ /dev/null @@ -1,96 +0,0 @@ -" Vim syntax file -" Language: OPL -" Maintainer: Czo -" $Id: opl.vim,v 1.1 2004/06/13 17:34:11 vimboss Exp $ - -" Open Psion Language... (EPOC16/EPOC32) - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" case is not significant -syn case ignore - -" A bunch of useful OPL keywords -syn keyword OPLStatement proc endp abs acos addr adjustalloc alert alloc app -syn keyword OPLStatement append appendsprite asc asin at atan back beep -syn keyword OPLStatement begintrans bookmark break busy byref cache -syn keyword OPLStatement cachehdr cacherec cachetidy call cancel caption -syn keyword OPLStatement changesprite chr$ clearflags close closesprite cls -syn keyword OPLStatement cmd$ committrans compact compress const continue -syn keyword OPLStatement copy cos count create createsprite cursor -syn keyword OPLStatement datetosecs datim$ day dayname$ days daystodate -syn keyword OPLStatement dbuttons dcheckbox dchoice ddate declare dedit -syn keyword OPLStatement deditmulti defaultwin deg delete dfile dfloat -syn keyword OPLStatement dialog diaminit diampos dinit dir$ dlong do dow -syn keyword OPLStatement dposition drawsprite dtext dtime dxinput edit else -syn keyword OPLStatement elseif enda endif endv endwh entersend entersend0 -syn keyword OPLStatement eof erase err err$ errx$ escape eval exist exp ext -syn keyword OPLStatement external find findfield findlib first fix$ flags -syn keyword OPLStatement flt font freealloc gat gborder gbox gbutton -syn keyword OPLStatement gcircle gclock gclose gcls gcolor gcopy gcreate -syn keyword OPLStatement gcreatebit gdrawobject gellipse gen$ get get$ -syn keyword OPLStatement getcmd$ getdoc$ getevent getevent32 geteventa32 -syn keyword OPLStatement geteventc getlibh gfill gfont ggmode ggrey gheight -syn keyword OPLStatement gidentity ginfo ginfo32 ginvert giprint glineby -syn keyword OPLStatement glineto gloadbit gloadfont global gmove gorder -syn keyword OPLStatement goriginx goriginy goto gotomark gpatt gpeekline -syn keyword OPLStatement gpoly gprint gprintb gprintclip grank gsavebit -syn keyword OPLStatement gscroll gsetpenwidth gsetwin gstyle gtmode gtwidth -syn keyword OPLStatement gunloadfont gupdate guse gvisible gwidth gx -syn keyword OPLStatement gxborder gxprint gy hex$ hour iabs icon if include -syn keyword OPLStatement input insert int intf intrans key key$ keya keyc -syn keyword OPLStatement killmark kmod last lclose left$ len lenalloc -syn keyword OPLStatement linklib ln loadlib loadm loc local lock log lopen -syn keyword OPLStatement lower$ lprint max mcard mcasc mean menu mid$ min -syn keyword OPLStatement minit minute mkdir modify month month$ mpopup -syn keyword OPLStatement newobj newobjh next notes num$ odbinfo off onerr -syn keyword OPLStatement open openr opx os parse$ path pause peek pi -syn keyword OPLStatement pointerfilter poke pos position possprite print -syn keyword OPLStatement put rad raise randomize realloc recsize rename -syn keyword OPLStatement rept$ return right$ rmdir rnd rollback sci$ screen -syn keyword OPLStatement screeninfo second secstodate send setdoc setflags -syn keyword OPLStatement setname setpath sin space sqr statuswin -syn keyword OPLStatement statwininfo std stop style sum tan testevent trap -syn keyword OPLStatement type uadd unloadlib unloadm until update upper$ -syn keyword OPLStatement use usr usr$ usub val var vector week while year -" syn keyword OPLStatement rem - - -syn match OPLNumber "\<\d\+\>" -syn match OPLNumber "\<\d\+\.\d*\>" -syn match OPLNumber "\.\d\+\>" - -syn region OPLString start=+"+ end=+"+ -syn region OPLComment start="REM[\t ]" end="$" -syn match OPLMathsOperator "-\|=\|[:<>+\*^/\\]" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_OPL_syntax_inits") - if version < 508 - let did_OPL_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink OPLStatement Statement - HiLink OPLNumber Number - HiLink OPLString String - HiLink OPLComment Comment - HiLink OPLMathsOperator Conditional -" HiLink OPLError Error - - delcommand HiLink -endif - -let b:current_syntax = "opl" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/pamconf.vim b/share/vim/vim73/syntax/pamconf.vim deleted file mode 100644 index 46cd3c30..00000000 --- a/share/vim/vim73/syntax/pamconf.vim +++ /dev/null @@ -1,118 +0,0 @@ -" Vim syntax file -" Language: pam(8) configuration file -" Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 - - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -syn match pamconfService '^[[:graph:]]\+' - \ nextgroup=pamconfType, - \ pamconfServiceLineCont skipwhite - -syn keyword pamconfTodo contained TODO FIXME XXX NOTE - -syn region pamconfComment display oneline start='#' end='$' - \ contains=pamconfTodo,@Spell - -syn match pamconfServiceLineCont contained '\\$' - \ nextgroup=pamconfType, - \ pamconfServiceLineCont skipwhite skipnl - -syn keyword pamconfType account auth password session - \ nextgroup=pamconfControl, - \ pamconfTypeLineCont skipwhite - -syn match pamconfTypeLineCont contained '\\$' - \ nextgroup=pamconfControl, - \ pamconfTypeLineCont skipwhite skipnl - -syn keyword pamconfControl contained requisite required sufficient - \ optional - \ nextgroup=pamconfMPath, - \ pamconfControlLineContH skipwhite - -syn match pamconfControlBegin '\[' nextgroup=pamconfControlValues, - \ pamconfControlLineCont skipwhite - -syn match pamconfControlLineCont contained '\\$' - \ nextgroup=pamconfControlValues, - \ pamconfControlLineCont skipwhite skipnl - -syn keyword pamconfControlValues contained success open_err symbol_err - \ service_err system_err buf_err - \ perm_denied auth_err cred_insufficient - \ authinfo_unavail user_unknown maxtries - \ new_authtok_reqd acct_expired session_err - \ cred_unavail cred_expired cred_err - \ no_module_data conv_err authtok_err - \ authtok_recover_err authtok_lock_busy - \ authtok_disable_aging try_again ignore - \ abort authtok_expired module_unknown - \ bad_item and default - \ nextgroup=pamconfControlValueEq - -syn match pamconfControlValueEq contained '=' nextgroup=pamconfControlAction - -syn match pamconfControlActionN contained '\d\+\>' - \ nextgroup=pamconfControlValues, - \ pamconfControlLineCont,pamconfControlEnd - \ skipwhite -syn keyword pamconfControlAction contained ignore bad die ok done reset - \ nextgroup=pamconfControlValues, - \ pamconfControlLineCont,pamconfControlEnd - \ skipwhite - -syn match pamconfControlEnd contained '\]' - \ nextgroup=pamconfMPath, - \ pamconfControlLineContH skipwhite - -syn match pamconfControlLineContH contained '\\$' - \ nextgroup=pamconfMPath, - \ pamconfControlLineContH skipwhite skipnl - -syn match pamconfMPath contained '\S\+' - \ nextgroup=pamconfMPathLineCont, - \ pamconfArgs skipwhite - -syn match pamconfArgs contained '\S\+' - \ nextgroup=pamconfArgsLineCont, - \ pamconfArgs skipwhite - -syn match pamconfMPathLineCont contained '\\$' - \ nextgroup=pamconfMPathLineCont, - \ pamconfArgs skipwhite skipnl - -syn match pamconfArgsLineCont contained '\\$' - \ nextgroup=pamconfArgsLineCont, - \ pamconfArgs skipwhite skipnl - -hi def link pamconfTodo Todo -hi def link pamconfComment Comment -hi def link pamconfService Statement -hi def link pamconfServiceLineCont Special -hi def link pamconfType Type -hi def link pamconfTypeLineCont pamconfServiceLineCont -hi def link pamconfControl Macro -hi def link pamconfControlBegin Delimiter -hi def link pamconfControlLineContH pamconfServiceLineCont -hi def link pamconfControlLineCont pamconfServiceLineCont -hi def link pamconfControlValues Identifier -hi def link pamconfControlValueEq Operator -hi def link pamconfControlActionN Number -hi def link pamconfControlAction Identifier -hi def link pamconfControlEnd Delimiter -hi def link pamconfMPath String -hi def link pamconfMPathLineCont pamconfServiceLineCont -hi def link pamconfArgs Normal -hi def link pamconfArgsLineCont pamconfServiceLineCont - -let b:current_syntax = "pamconf" - -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/share/vim/vim73/syntax/perl.vim b/share/vim/vim73/syntax/perl.vim deleted file mode 100644 index 5510c4b6..00000000 --- a/share/vim/vim73/syntax/perl.vim +++ /dev/null @@ -1,543 +0,0 @@ -" Vim syntax file -" Language: Perl 5 -" Maintainer: Andy Lester -" URL: http://github.com/petdance/vim-perl/tree/master -" Last Change: 2010-08-10 -" Contributors: Andy Lester -" Hinrik Örn Sigurðsson -" Lukas Mai -" Nick Hibma -" Sonia Heimann -" and many others. -" -" Please download most recent version first before mailing -" any comments. -" -" The following parameters are available for tuning the -" perl syntax highlighting, with defaults given: -" -" unlet perl_include_pod -" unlet perl_no_scope_in_variables -" unlet perl_no_extended_vars -" unlet perl_string_as_statement -" unlet perl_no_sync_on_sub -" unlet perl_no_sync_on_global_var -" let perl_sync_dist = 100 -" unlet perl_fold -" unlet perl_fold_blocks -" let perl_nofold_packages = 1 -" let perl_nofold_subs = 1 - -if exists("b:current_syntax") - finish -endif - - -" POD starts with ^= and ends with ^=cut - -if exists("perl_include_pod") - " Include a while extra syntax file - syn include @Pod syntax/pod.vim - unlet b:current_syntax - if exists("perl_fold") - syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend fold - syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend fold - else - syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend - syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend - endif -else - " Use only the bare minimum of rules - if exists("perl_fold") - syn region perlPOD start="^=[a-z]" end="^=cut" fold - else - syn region perlPOD start="^=[a-z]" end="^=cut" - endif -endif - - -syn cluster perlTop contains=TOP -syn region perlGenericBlock matchgroup=perlGenericBlock start="{" end="}" contained transparent - - -" All keywords -" -syn match perlConditional "\<\%(if\|elsif\|unless\|given\|when\|default\)\>" -syn match perlConditional "\" nextgroup=perlElseIfError skipwhite skipnl skipempty -syn match perlRepeat "\<\%(while\|for\%(each\)\=\|do\|until\|continue\)\>" -syn match perlOperator "\<\%(defined\|undef\|eq\|ne\|[gl][et]\|cmp\|not\|and\|or\|xor\|not\|bless\|ref\|do\)\>" -syn match perlControl "\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>" - -syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>" -syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>" -syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|uc\%(first\)\=\)\>" -syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>" -syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>" -syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>" -syn match perlStatementHash "\<\%(delete\|each\|exists\|keys\|values\)\>" -syn match perlStatementIOfunc "\<\%(syscall\|dbmopen\|dbmclose\)\>" -syn match perlStatementFiledesc "\<\%(binmode\|close\%(dir\)\=\|eof\|fileno\|getc\|lstat\|printf\=\|read\%(dir\|line\|pipe\)\|rewinddir\|say\|select\|stat\|tell\%(dir\)\=\|write\)\>" nextgroup=perlFiledescStatementNocomma skipwhite -syn match perlStatementFiledesc "\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read\|seek\%(dir\)\=\|sys\%(open\|read\|seek\|write\)\|truncate\)\>" nextgroup=perlFiledescStatementComma skipwhite -syn match perlStatementVector "\" -syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>" -syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>" -syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\)\>" -syn match perlStatementInclude "\" -syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\=" -syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>" -syn match perlStatementSocket "\<\%(acept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>" -syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>" -syn match perlStatementNetwork "\<\%(\%(end\|[gs]et\)\%(host\|net\|proto\|serv\)ent\|get\%(\%(host\|net\)by\%(addr\|name\)\|protoby\%(name\|number\)\|servby\%(name\|port\)\)\)\>" -syn match perlStatementPword "\<\%(get\%(pw\%(uid\|nam\)\|gr\%(gid\|nam\)\|login\)\)\|\%(end\|[gs]et\)\%(pw\|gr\)ent\>" -syn match perlStatementTime "\<\%(gmtime\|localtime\|time\)\>" - -syn match perlStatementMisc "\<\%(warn\|formline\|reset\|scalar\|prototype\|lock\|tied\=\|untie\)\>" - -syn keyword perlTodo TODO TBD FIXME XXX NOTE contained - -syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\<\%(map\|grep\|sort\|print\|system\|exec\)\>\s*{" end="}" contains=@perlTop,perlGenericBlock - -syn match perlLabel "^\s*\h\w*\s*::\@!\%(\ is *not* considered as part of the -" variable - there again, too complicated and too slow. - -" Special variables first ($^A, ...) and ($|, $', ...) -syn match perlVarPlain "$^[ACDEFHILMNOPRSTVWX]\=" -syn match perlVarPlain "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]" -syn match perlVarPlain "%+" -syn match perlVarPlain "$\%(0\|[1-9]\d*\)" -" Same as above, but avoids confusion in $::foo (equivalent to $main::foo) -syn match perlVarPlain "$::\@!" -" These variables are not recognized within matches. -syn match perlVarNotInMatches "$[|)]" -" This variable is not recognized within matches delimited by m//. -syn match perlVarSlash "$/" - -" And plain identifiers -syn match perlPackageRef "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\=\%(::\|'\)\I"ms=s+1,me=e-1 contained - -" To not highlight packages in variables as a scope reference - i.e. in -" $pack::var, pack:: is a scope, just set "perl_no_scope_in_variables" -" If you don't want complex things like @{${"foo"}} to be processed, -" just set the variable "perl_no_extended_vars"... - -if !exists("perl_no_scope_in_variables") - syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod - syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef - syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod -else - syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod - syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" - syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod -endif - -if !exists("perl_no_extended_vars") - syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlGenericBlock - syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained - syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained - syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained - syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained - syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained - syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod - syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod - syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod - syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod - syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod - syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contains=perlVarSimpleMemberName contained - syn match perlVarSimpleMemberName "\I\i*" contained - syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod - syn match perlPackageConst "__PACKAGE__" nextgroup=perlMethod - syn match perlMethod "->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod -endif - -" File Descriptors -syn match perlFiledescRead "<\h\w*>" - -syn match perlFiledescStatementComma "(\=\s*\u\w*\s*,"me=e-1 transparent contained contains=perlFiledescStatement -syn match perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement - -syn match perlFiledescStatement "\u\w*" contained - -" Special characters in strings and matches -syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend -syn match perlSpecialStringU2 "\\." extend contained transparent contains=NONE -syn match perlSpecialStringU "\\\\" contained -syn match perlSpecialMatch "\\[1-9]" contained extend -syn match perlSpecialMatch "\\g\%(\d\+\|{\%(-\=\d\+\|\h\w*\)}\)" contained -syn match perlSpecialMatch "\\k\%(<\h\w*>\|'\h\w*'\)" contained -syn match perlSpecialMatch "{\d\+\%(,\%(\d\+\)\=\)\=}" contained -syn match perlSpecialMatch "\[[]-]\=[^\[\]]*[]-]\=\]" contained -syn match perlSpecialMatch "[+*()?.]" contained -syn match perlSpecialMatch "(?[#:=!]" contained -syn match perlSpecialMatch "(?[impsx]*\%(-[imsx]\+\)\=)" contained -syn match perlSpecialMatch "(?\%([-+]\=\d\+\|R\))" contained -syn match perlSpecialMatch "(?\%(&\|P[>=]\)\h\w*)" contained -syn match perlSpecialMatch "(\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\=\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\=\|ACCEPT\))" contained - -" Possible errors -" -" Highlight lines with only whitespace (only in blank delimited here documents) as errors -syn match perlNotEmptyLine "^\s\+$" contained -" Highlight '} else if (...) {', it should be '} else { if (...) { ' or -" '} elsif (...) {'. -syn match perlElseIfError "\s\+if" contained -syn keyword perlElseIfError elseif - -" Variable interpolation -" -" These items are interpolated inside "" strings and similar constructs. -syn cluster perlInterpDQ contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock -" These items are interpolated inside '' strings and similar constructs. -syn cluster perlInterpSQ contains=perlSpecialStringU,perlSpecialStringU2 -" These items are interpolated inside m// matches and s/// substitutions. -syn cluster perlInterpSlash contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock -" These items are interpolated inside m## matches and s### substitutions. -syn cluster perlInterpMatch contains=@perlInterpSlash,perlVarSlash - -" Shell commands -syn region perlShellCommand matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ keepend - -" Constants -" -" Numbers -syn match perlNumber "\<\%(0\%(x\x[[:xdigit:]_]*\|b[01][01_]*\|\o[0-7_]*\|\)\|[1-9][[:digit:]_]*\)\>" -syn match perlFloat "\<\d[[:digit:]_]*[eE][\-+]\=\d\+" -syn match perlFloat "\<\d[[:digit:]_]*\.[[:digit:]_]*\%([eE][\-+]\=\d\+\)\=" -syn match perlFloat "\.[[:digit:]_]\+\%([eE][\-+]\=\d\+\)\=" - -syn match perlString "\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV -syn match perlVStringV "\+ extend contained transparent contains=perlAnglesSQ,@perlInterpSQ keepend - -syn region perlParensDQ start=+(+ end=+)+ extend contained transparent contains=perlParensDQ,@perlInterpDQ keepend -syn region perlBracketsDQ start=+\[+ end=+\]+ extend contained transparent contains=perlBracketsDQ,@perlInterpDQ keepend -syn region perlBracesDQ start=+{+ end=+}+ extend contained transparent contains=perlBracesDQ,@perlInterpDQ keepend -syn region perlAnglesDQ start=+<+ end=+>+ extend contained transparent contains=perlAnglesDQ,@perlInterpDQ keepend - - -" Simple version of searches and matches -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]'([{<#]\)+ end=+\z1[cgimopsx]*+ contains=@perlInterpMatch keepend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@ and m[] which allows for comments and extra whitespace in the pattern -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@[cgimopsx]*+ contains=@perlInterpMatch,perlAnglesDQ keepend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@[ecgimopsx]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend -syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[ecgimopsx]*+ contained contains=@perlInterpSQ keepend - -" Translations -" perlMatch is the first part, perlTranslation* is the second, translator part. -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@[cds]*+ contains=perlAnglesSQ contained - - -" Strings and q, qq, qw and qr expressions - -syn region perlStringUnexpanded matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ keepend -syn region perlString matchgroup=perlStringStartEnd start=+"+ end=+"+ contains=@perlInterpDQ keepend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ keepend - -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpDQ keepend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpDQ,perlAnglesDQ keepend - -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ keepend - -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<'/]\)+ end=+\z1[imosx]*+ contains=@perlInterpMatch keepend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@ and qr[] which allows for comments and extra whitespace in the pattern -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@[imosx]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\zs\_[^)]\+" contained -syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes contained contains=perlSubPrototypeError -syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype - -syn match perlFunction +\\_s*+ nextgroup=perlSubName - -if !exists("perl_no_scope_in_variables") - syn match perlFunctionPRef "\h\w*::" contained - syn match perlFunctionName "\h\w*[^:]" contained -else - syn match perlFunctionName "\h[[:alnum:]_:]*" contained -endif - -" The => operator forces a bareword to the left of it to be interpreted as -" a string -syn match perlString "\I\@\)\@=" - -" All other # are comments, except ^#! -syn match perlComment "#.*" contains=perlTodo,@Spell -syn match perlSharpBang "^#!.*" - -" Formats -syn region perlFormat matchgroup=perlStatementIOFunc start="^\s*\~]\+\%(\.\.\.\)\=" contained -syn match perlFormatField "[@^]#[#.]*" contained -syn match perlFormatField "@\*" contained -syn match perlFormatField "@[^A-Za-z_|<>~#*]"me=e-1 contained -syn match perlFormatField "@$" contained - -" __END__ and __DATA__ clauses -if exists("perl_fold") - syntax region perlDATA start="^__\%(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA fold -else - syntax region perlDATA start="^__\%(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA -endif - -" -" Folding - -if exists("perl_fold") - " Note: this bit must come before the actual highlighting of the "package" - " keyword, otherwise this will screw up Pod lines that match /^package/ - if !exists("perl_nofold_packages") - syn region perlPackageFold start="^package \S\+;\s*\%(#.*\)\=$" end="^1;\=\s*\%(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend - endif - if !exists("perl_nofold_subs") - syn region perlSubFold start="^\z(\s*\)\.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend - syn region perlSubFold start="^\z(\s*\)\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend - endif - - if exists("perl_fold_blocks") - syn region perlBlockFold start="^\z(\s*\)\%(if\|elsif\|unless\|for\|while\|until\|given\)\s*(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" start="^\z(\s*\)foreach\s*\%(\%(my\|our\)\=\s*\S\+\s*\)\=(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend - syn region perlBlockFold start="^\z(\s*\)\%(do\|else\)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend - endif - - setlocal foldmethod=syntax - syn sync fromstart -else - " fromstart above seems to set minlines even if perl_fold is not set. - syn sync minlines=0 -endif - -command -nargs=+ HiLink hi def link - -" The default highlighting. -HiLink perlSharpBang PreProc -HiLink perlControl PreProc -HiLink perlInclude Include -HiLink perlSpecial Special -HiLink perlString String -HiLink perlCharacter Character -HiLink perlNumber Number -HiLink perlFloat Float -HiLink perlType Type -HiLink perlIdentifier Identifier -HiLink perlLabel Label -HiLink perlStatement Statement -HiLink perlConditional Conditional -HiLink perlRepeat Repeat -HiLink perlOperator Operator -HiLink perlFunction Keyword -HiLink perlSubName Function -HiLink perlSubPrototype Type -HiLink perlSubAttributes PreProc -HiLink perlSubAttributesCont perlSubAttributes -HiLink perlComment Comment -HiLink perlTodo Todo -if exists("perl_string_as_statement") - HiLink perlStringStartEnd perlStatement -else - HiLink perlStringStartEnd perlString -endif -HiLink perlVStringV perlStringStartEnd -HiLink perlList perlStatement -HiLink perlMisc perlStatement -HiLink perlVarPlain perlIdentifier -HiLink perlVarPlain2 perlIdentifier -HiLink perlArrow perlIdentifier -HiLink perlFiledescRead perlIdentifier -HiLink perlFiledescStatement perlIdentifier -HiLink perlVarSimpleMember perlIdentifier -HiLink perlVarSimpleMemberName perlString -HiLink perlVarNotInMatches perlIdentifier -HiLink perlVarSlash perlIdentifier -HiLink perlQQ perlString -HiLink perlHereDoc perlString -HiLink perlStringUnexpanded perlString -HiLink perlSubstitutionSQ perlString -HiLink perlSubstitutionGQQ perlString -HiLink perlTranslationGQ perlString -HiLink perlMatch perlString -HiLink perlMatchStartEnd perlStatement -HiLink perlFormatName perlIdentifier -HiLink perlFormatField perlString -HiLink perlPackageDecl perlType -HiLink perlStorageClass perlType -HiLink perlPackageRef perlType -HiLink perlStatementPackage perlStatement -HiLink perlStatementStorage perlStatement -HiLink perlStatementControl perlStatement -HiLink perlStatementScalar perlStatement -HiLink perlStatementRegexp perlStatement -HiLink perlStatementNumeric perlStatement -HiLink perlStatementList perlStatement -HiLink perlStatementHash perlStatement -HiLink perlStatementIOfunc perlStatement -HiLink perlStatementFiledesc perlStatement -HiLink perlStatementVector perlStatement -HiLink perlStatementFiles perlStatement -HiLink perlStatementFlow perlStatement -HiLink perlStatementInclude perlStatement -HiLink perlStatementProc perlStatement -HiLink perlStatementSocket perlStatement -HiLink perlStatementIPC perlStatement -HiLink perlStatementNetwork perlStatement -HiLink perlStatementPword perlStatement -HiLink perlStatementTime perlStatement -HiLink perlStatementMisc perlStatement -HiLink perlStatementIndirObj perlStatement -HiLink perlFunctionName perlIdentifier -HiLink perlMethod perlIdentifier -HiLink perlFunctionPRef perlType -HiLink perlPOD perlComment -HiLink perlShellCommand perlString -HiLink perlSpecialAscii perlSpecial -HiLink perlSpecialDollar perlSpecial -HiLink perlSpecialString perlSpecial -HiLink perlSpecialStringU perlSpecial -HiLink perlSpecialMatch perlSpecial -HiLink perlDATA perlComment - -" Possible errors -HiLink perlNotEmptyLine Error -HiLink perlElseIfError Error -HiLink perlSubPrototypeError Error -HiLink perlSubError Error - -delcommand HiLink - -" Syncing to speed up processing -" -if !exists("perl_no_sync_on_sub") - syn sync match perlSync grouphere NONE "^\s*\" - syn sync match perlSync grouphere NONE "^}" -endif - -if !exists("perl_no_sync_on_global_var") - syn sync match perlSync grouphere NONE "^$\I[[:alnum:]_:]+\s*=\s*{" - syn sync match perlSync grouphere NONE "^[@%]\I[[:alnum:]_:]+\s*=\s*(" -endif - -if exists("perl_sync_dist") - execute "syn sync maxlines=" . perl_sync_dist -else - syn sync maxlines=100 -endif - -syn sync match perlSyncPOD grouphere perlPOD "^=pod" -syn sync match perlSyncPOD grouphere perlPOD "^=head" -syn sync match perlSyncPOD grouphere perlPOD "^=item" -syn sync match perlSyncPOD grouphere NONE "^=cut" - -let b:current_syntax = "perl" - -" XXX Change to sts=4:sw=4 -" vim:ts=8:sts=2:sw=2:expandtab:ft=vim diff --git a/share/vim/vim73/syntax/perl6.vim b/share/vim/vim73/syntax/perl6.vim deleted file mode 100644 index 6a3baba7..00000000 --- a/share/vim/vim73/syntax/perl6.vim +++ /dev/null @@ -1,2249 +0,0 @@ -" Vim syntax file -" Language: Perl 6 -" Maintainer: Andy Lester -" Homepage: http://github.com/petdance/vim-perl/tree/master -" Last Change: 2009-07-04 - -" Contributors: Luke Palmer -" Moritz Lenz -" Hinrik Örn Sigurðsson -" -" This is a big undertaking. Perl 6 is the sort of language that only Perl -" can parse. But I'll do my best to get vim to. -" -" You can associate the extension ".pl" with the filetype "perl6" by setting -" autocmd BufNewFile,BufRead *.pl setf perl6 -" in your ~/.vimrc. But that will infringe on Perl 5, so you might want to -" put a modeline near the beginning or end of your Perl 6 files instead: -" # vim: filetype=perl6 - -" TODO: -" * Deal with s:Perl5// -" * m:s// is a match, not a substitution -" * Make these highlight as strings, not operators: -" <==> <=:=> <===> <=~> <« »> «>» «<» -" * Allow more keywords to match as function calls(leave() is export(), etc) -" * Optimization: use nextgroup instead of lookaround (:help syn-nextgroup) -" * Fix s''' substitutions being matched as package names -" * Match s/// and m/// better, so things like "$s/" won't match -" * Add more support for folding (:help syn-fold) -" * Add more syntax syncing hooks (:help syn-sync) -" * Q//: -" :to, :heredoc -" interpolate \q:s{$scalar} (though the spec isn't very clear on it) -" -" Impossible TODO?: -" * Unspace -" * Unicode bracketing characters for quoting (there are so many) -" * Various tricks depending on context. I.e. we can't know when Perl -" expects «*» to be a string or a hyperoperator. The latter is presumably -" more common, so that's what we assume. -" * Selective highlighting of Pod formatting codes with the :allow option -" * Arbitrary number, order, and negation of adverbs to Q//, q//, qq//. -" Currently only the first adverb is considered significant. Anything -" more would require an exponential amount of regexes, making this -" already slow syntax file even slower. -" -" If you want to have Pir code inside Q:PIR// strings highlighted, do: -" let perl6_embedded_pir=1 -" -" The above requires pir.vim, which you can find in Parrot's repository: -" https://svn.parrot.org/parrot/trunk/editor/ -" -" Some less than crucial things have been made optional to speed things up. -" Look at the comments near the if/else branches in this file to see exactly -" which features are affected. "perl6_extended_all" enables everything. -" -" The defaults are: -" -" unlet perl6_extended_comments -" unlet perl6_extended_q -" unlet perl6_extended_all - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" identifiers -syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*" - -" This is used in the for loops below -" Don't use the "syn keyword" construct because that always has higher -" priority than matches/regions, so the words can't be autoquoted with -" the "=>" and "p5=>" operators. All the lookaround stuff is to make sure -" we don't match them as part of some other identifier. -let s:before_keyword = " display \"\\%(\\k\\|\\K\\@<=[-']\\)\\@.;\\]" -syn match p6Operator display "\%(:\@\)" -" "i" requires a digit to the left, and no keyword char to the right -syn match p6Operator display "\d\@<=i\k\@!" -" index overloading -syn match p6Operator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)" - -" all infix operators except nonassocative ones -let s:infix_a = [ - \ "div % mod +& +< +> \\~& ?& \\~< \\~> +| +\\^ \\~| \\~\\^ ?| ?\\^ xx x", - \ "\\~ && & also <== ==> <<== ==>> == != < <= > >= \\~\\~ eq ne lt le gt", - \ "ge =:= === eqv before after \\^\\^ min max \\^ff ff\\^ \\^ff\\^", - \ "\\^fff fff\\^ \\^fff\\^ fff ff ::= := \\.= => , : p5=> Z minmax", - \ "\\.\\.\\. and andthen or orelse xor \\^ += -= /= \\*= \\~= //= ||=", - \ "+ - \\*\\* \\* // / \\~ || |", -\ ] -" nonassociative infix operators -let s:infix_n = "but does <=> leg cmp \\.\\. \\.\\.\\^\\^ \\^\\.\\. \\^\\.\\.\\^" - -let s:infix_a_long = join(s:infix_a, " ") -let s:infix_a_words = split(s:infix_a_long) -let s:infix_a_pattern = join(s:infix_a_words, "\\|") - -let s:infix_n_words = split(s:infix_n) -let s:infix_n_pattern = join(s:infix_n_words, "\\|") - -let s:both = [s:infix_a_pattern, s:infix_n_pattern] -let s:infix = join(s:both, "\\|") - -let s:infix_assoc = "!\\?\\%(" . s:infix_a_pattern . "\\)" -let s:infix = "!\\?\\%(" . s:infix . "\\)" - -unlet s:infix_a s:infix_a_long s:infix_a_words s:infix_a_pattern -unlet s:infix_n s:infix_n_pattern s:both - -" [+] reduce -exec "syn match p6ReduceOp display \"\\k\\@" - -" does is a type constraint sometimes -syn match p6TypeConstraint display "does\%(\s*\%(\k\|[-']\K\@=\)\)\@=" - -" int is a type sometimes -syn match p6Type display "\\%(\s*(\|\s\+\d\)\@!" - -" these Routine names are also Properties, if preceded by "is" -syn match p6Property display "\%(is\s\+\)\@<=\%(signature\|context\|also\|shape\)" - -" The sigil in ::*Package -syn match p6PackageTwigil display "\%(::\)\@<=\*" - -" $ -syn region p6MatchVarSigil - \ matchgroup=p6Variable - \ start="\$\%(<<\@!\)\@=" - \ end=">\@<=" - \ contains=p6MatchVar - -syn region p6MatchVar - \ matchgroup=p6Twigil - \ start="<" - \ end=">" - \ contained - -" Contextualizers -syn match p6Context display "\<\%(item\|list\|slice\|hash\)\>" -syn match p6Context display "\%(\$\|@\|%\|&\|@@\)(\@=" - -" the "$" placeholder in "$var1, $, var2 = @list" -syn match p6Placeholder display "\%(,\s*\)\@<=\$\%(\K\|\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" - \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" - \ end="\z1\zs" - \ contained - \ contains=TOP - \ keepend - -syn region p6InterpArray - \ matchgroup=p6Context - \ start="@\ze()\@!" - \ start="@@\ze()\@!" - \ skip="([^)]*)" - \ end=")\zs" - \ contained - \ contains=TOP - -syn region p6InterpHash - \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" - \ end="\z1\zs" - \ contained - \ contains=TOP - \ keepend - -syn region p6InterpHash - \ matchgroup=p6Context - \ start="%\ze()\@!" - \ skip="([^)]*)" - \ end=")\zs" - \ contained - \ contains=TOP - -syn region p6InterpFunction - \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" - \ end="\z1\zs" - \ contained - \ contains=TOP - \ keepend - -syn region p6InterpFunction - \ matchgroup=p6Context - \ start="&\ze()\@!" - \ skip="([^)]*)" - \ end=")\zs" - \ contained - \ contains=TOP - -syn region p6InterpClosure - \ start="\\\@" contained -syn match p6EscCloseFrench display "\\»" contained -syn match p6EscBackTick display "\\`" contained -syn match p6EscForwardSlash display "\\/" contained -syn match p6EscVerticalBar display "\\|" contained -syn match p6EscExclamation display "\\!" contained -syn match p6EscComma display "\\," contained -syn match p6EscDollar display "\\\$" contained -syn match p6EscCloseCurly display "\\}" contained -syn match p6EscCloseBracket display "\\\]" contained - -" misc escapes -syn match p6EscOctOld display "\\\d\{1,3}" contained -syn match p6EscNull display "\\0\d\@!" contained -syn match p6EscCodePoint display "\%(\\c\)\@<=\%(\d\|\S\|\[\)\@=" contained nextgroup=p6CodePoint -syn match p6EscHex display "\%(\\x\)\@<=\%(\x\|\[\)\@=" contained nextgroup=p6HexSequence -syn match p6EscOct display "\%(\\o\)\@<=\%(\o\|\[\)\@=" contained nextgroup=p6OctSequence -syn match p6EscQQ display "\\qq" contained nextgroup=p6QQSequence -syn match p6EscOpenCurly display "\\{" contained -syn match p6EscHash display "\\#" contained -syn match p6EscBackSlash display "\\\\" contained - -syn region p6QQSequence - \ matchgroup=p6Escape - \ start="\[" - \ skip="\[[^\]]*]" - \ end="]" - \ contained - \ transparent - \ contains=@p6Interp_qq - -syn match p6CodePoint display "\%(\d\+\|\S\)" contained -syn region p6CodePoint - \ matchgroup=p6Escape - \ start="\[" - \ end="]" - \ contained - -syn match p6HexSequence display "\x\+" contained -syn region p6HexSequence - \ matchgroup=p6Escape - \ start="\[" - \ end="]" - \ contained - -syn match p6OctSequence display "\o\+" contained -syn region p6OctSequence - \ matchgroup=p6Escape - \ start="\[" - \ end="]" - \ contained - -" matches :key, :!key, :$var, :key, etc -" Since we don't know in advance how the adverb ends, we use a trick. -" Consume nothing with the start pattern (\ze at the beginning), -" while capturing the whole adverb into \z1 and then putting it before -" the match start (\zs) of the end pattern. -syn region p6Adverb - \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)" - \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@ -" FIXME: not sure how to distinguish this from the "less than" operator -" in all cases. For now, it matches if any of the following is true: -" -" * There is whitespace missing on either side of the "<", since -" people tend to put spaces around "less than" -" * It comes after "enum", "for", "any", "all", or "none" -" * It's the first or last thing on a line (ignoring whitespace) -" * It's preceded by "= " -" -" It never matches when: -" -" * Preceded by [<+~=] (e.g. <>, =<$foo>) -" * Followed by [-=] (e.g. <--, <=, <==) -syn region p6StringAngle - \ matchgroup=p6Quote - \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" - \ start="\%(\s\|[<+~=]\)\@\|[-=]\{1,2}>\@!\)\@!" - \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" - \ start="\%(^\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" - \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" - \ skip="\\\@" - \ end=">" - \ contains=p6InnerAnglesOne,p6EscBackSlash,p6EscCloseAngle - -syn region p6InnerAnglesOne - \ matchgroup=p6StringAngle - \ start="<" - \ skip="\\\@" - \ end=">" - \ transparent - \ contained - \ contains=p6InnerAnglesOne - -" <> -syn region p6StringAngles - \ matchgroup=p6Quote - \ start="<<=\@!" - \ skip="\\\@" - \ end=">>" - \ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ - -syn region p6InnerAnglesTwo - \ matchgroup=p6StringAngles - \ start="<<" - \ skip="\\\@" - \ end=">>" - \ transparent - \ contained - \ contains=p6InnerAnglesTwo - -" «words» -syn region p6StringFrench - \ matchgroup=p6Quote - \ start="«" - \ skip="\\\@" nextgroup=p6QPairs skipwhite skipempty -syn match p6QPairs contained transparent skipwhite skipempty nextgroup=p6StringQ,p6StringQ_PIR "\%(\_s*:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)*" - -if exists("perl6_embedded_pir") - syn include @p6PIR syntax/pir.vim -endif - -" hardcoded set of delimiters -let s:delims = [ - \ ["\\\"", "\\\"", "p6EscDoubleQuote", "\\\\\\@", "p6EscCloseAngle", "\\%(\\\\\\@\\|<[^>]*>\\)"], - \ ["«", "»", "p6EscCloseFrench", "\\%(\\\\\\@>", "p6EscCloseAngle", "\\%(\\\\\\@>\\|<<\\%([^>]\\|>>\\@!\\)*>>\\)"]) - call add(s:delims, ["\\s\\@<=<<<", ">>>", "p6EscCloseAngle", "\\%(\\\\\\@>>\\|<<<\\%([^>]\\|>\\%(>>\\)\\@!\\)*>>>\\)"]) -endif - -if !exists("perl6_extended_q") && !exists("perl6_extended_all") - " simple version, no special highlighting within the string - for [start_delim, end_delim, end_group, skip] in s:delims - exec "syn region p6StringQ matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=".end_group." contained" - endfor - - if exists("perl6_embedded_pir") - " highlight embedded PIR code - for [start_delim, end_delim, end_group, skip] in s:delims - exec "syn region p6StringQ_PIR matchgroup=p6Quote start=\"\\%(Q\\s*:PIR\\s*\\)\\@<=".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6PIR,".end_group." contained" - endfor - endif -else - let s:before = "syn region p6StringQ matchgroup=p6Quote start=\"\\%(" - let s:after = "\\%(\\_s*:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\?\\)*\\_s*\\)\\@<=" - - let s:adverbs = [ - \ ["s", "scalar"], - \ ["a", "array"], - \ ["h", "hash"], - \ ["f", "function"], - \ ["c", "closure"], - \ ["b", "backslash"], - \ ["w", "words"], - \ ["ww", "quotewords"], - \ ["x", "exec"], - \ ] - - " these can't be conjoined with q and qq (e.g. as qqq and qqqq) - let s:q_adverbs = [ - \ ["q", "single"], - \ ["qq", "double"], - \ ] - - for [start_delim, end_delim, end_group, skip] in s:delims - " Q, q, and qq with any number of (ignored) adverbs - exec s:before ."Q". s:after .start_delim."\" end=\"". end_delim ."\""." contained" - exec s:before ."q". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q"." contained" - exec s:before ."qq". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq"." contained" - - for [short, long] in s:adverbs - " Qs, qs, qqs, Qa, qa, qqa, etc, with ignored adverbs - exec s:before ."Q".short. s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" - exec s:before ."q".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" - exec s:before ."qq".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" - - " Q, q, and qq, with one significant adverb - exec s:before ."Q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" - for [q_short, q_long] in s:q_adverbs - exec s:before ."Q\\s*:\\%(".q_short."\\|".q_long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".q_long." contained" - endfor - exec s:before ."q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" - exec s:before ."qq\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" - - for [short2, long2] in s:adverbs - " Qs, qs, qqs, Qa, qa, qqa, etc, with one significant adverb - exec s:before ."Q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".long2." contained" - for [q_short2, q_long2] in s:q_adverbs - exec s:before ."Q".short."\\s*:\\%(".q_short2."\\|".q_long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".q_long2." contained" - endfor - exec s:before ."q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long.",@p6Interp_".long2." contained" - exec s:before ."qq".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long.",@p6Interp_".long2." contained" - endfor - endfor - endfor - unlet s:before s:after s:adverbs s:q_adverbs -endif -unlet s:delims - -" Match these so something else above can't. E.g. the "q" in "role q { }" -" should not be considered a string -syn match p6Normal display "\%(\<\%(role\|grammar\|slang\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" - -" :key -syn match p6Operator display ":\@ and p5=> autoquoting -syn match p6StringP5Auto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+p5=>" -syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\%(p5\)\@" -syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+=>" -syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*p5\ze=>" - -" Hyperoperators. Needs to come after the quoting operators (<>, «», etc) -exec "syn match p6HyperOp display \"»" .s:infix."»\\?\"" -exec "syn match p6HyperOp display \"«\\?".s:infix."«\"" -exec "syn match p6HyperOp display \"»" .s:infix."«\"" -exec "syn match p6HyperOp display \"«" .s:infix. "»\"" - -exec "syn match p6HyperOp display \">>" .s:infix."\\%(>>\\)\\?\"" -exec "syn match p6HyperOp display \"\\%(<<\\)\\?".s:infix."<<\"" -exec "syn match p6HyperOp display \">>" .s:infix."<<\"" -exec "syn match p6HyperOp display \"<<" .s:infix.">>\"" -unlet s:infix - -" Regexes and grammars - -syn match p6RegexName display "\%(\<\%(regex\|rule\|token\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" nextgroup=p6RegexBlockCrap skipwhite skipempty -syn match p6RegexBlockCrap "[^{]*" nextgroup=p6RegexBlock skipwhite skipempty transparent contained - -syn region p6RegexBlock - \ matchgroup=p6Normal - \ start="{" - \ end="}" - \ contained - \ contains=@p6Regexen,@p6Variables - -" Perl 6 regex bits - -syn cluster p6Regexen - \ add=p6RxMeta - \ add=p6RxEscape - \ add=p6EscHex - \ add=p6EscOct - \ add=p6EscNull - \ add=p6RxAnchor - \ add=p6RxCapture - \ add=p6RxGroup - \ add=p6RxAlternation - \ add=p6RxAdverb - \ add=p6RxAdverbArg - \ add=p6RxStorage - \ add=p6RxAssertion - \ add=p6RxQuoteWords - \ add=p6RxClosure - \ add=p6RxStringSQ - \ add=p6RxStringDQ - \ add=p6Comment - -syn match p6RxMeta display contained ".\%(\k\|\s\)\@" - \ contained - \ contains=@p6Regexen,@p6Variables,p6RxCharClass,p6RxAssertCall -syn region p6RxAssertCall - \ matchgroup=p6Normal - \ start="\%(::\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\@<=(\@=" - \ end=")\@<=" - \ contained - \ contains=TOP -syn region p6RxCharClass - \ matchgroup=p6StringSpecial2 - \ start="\%(<[-!+?]\?\)\@<=\[" - \ skip="\\]" - \ end="]" - \ contained - \ contains=p6RxRange,p6RxEscape,p6EscHex,p6EscOct,p6EscNull -syn region p6RxQuoteWords - \ matchgroup=p6StringSpecial2 - \ start="< " - \ end=">" - \ contained -syn region p6RxAdverb - \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\)" - \ end="\z1\zs" - \ contained - \ contains=TOP - \ keepend -syn region p6RxAdverbArg - \ start="\%(:!\?\K\%(\k\|[-']\K\@=\)*\)\@<=(" - \ skip="([^)]*)" - \ end=")" - \ contained - \ contains=TOP -syn region p6RxStorage - \ matchgroup=p6Operator - \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@=" - \ end="$" - \ contains=TOP - \ contained - -" Perl 5 regex bits - -syn cluster p6RegexP5Base - \ add=p6RxP5Escape - \ add=p6RxP5Oct - \ add=p6RxP5Hex - \ add=p6RxP5EscMeta - \ add=p6RxP5CodePoint - \ add=p6RxP5Prop - -" normal regex stuff -syn cluster p6RegexP5 - \ add=@p6RegexP5Base - \ add=p6RxP5Quantifier - \ add=p6RxP5Meta - \ add=p6RxP5QuoteMeta - \ add=p6RxP5ParenMod - \ add=p6RxP5Verb - \ add=p6RxP5Count - \ add=p6RxP5Named - \ add=p6RxP5ReadRef - \ add=p6RxP5WriteRef - \ add=p6RxP5CharClass - \ add=p6RxP5Anchor - -" inside character classes -syn cluster p6RegexP5Class - \ add=@p6RegexP5Base - \ add=p6RxP5Posix - \ add=p6RxP5Range - -syn match p6RxP5Escape display contained "\\\S" -syn match p6RxP5CodePoint display contained "\\c\S\@=" nextgroup=p6RxP5CPId -syn match p6RxP5CPId display contained "\S" -syn match p6RxP5Oct display contained "\\\%(\o\{1,3}\)\@=" nextgroup=p6RxP5OctSeq -syn match p6RxP5OctSeq display contained "\o\{1,3}" -syn match p6RxP5Anchor display contained "[\^$]" -syn match p6RxP5Hex display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=p6RxP5HexSeq -syn match p6RxP5HexSeq display contained "\x\{1,2}" -syn region p6RxP5HexSeq - \ matchgroup=p6RxP5Escape - \ start="{" - \ end="}" - \ contained -syn region p6RxP5Named - \ matchgroup=p6RxP5Escape - \ start="\%(\\N\)\@<={" - \ end="}" - \ contained -syn match p6RxP5Quantifier display contained "\%([+*]\|(\@" - \ contained -syn match p6RxP5WriteRef display contained "\\g\%(\d\|{\)\@=" nextgroup=p6RxP5WriteRefId -syn match p6RxP5WriteRefId display contained "\d\+" -syn region p6RxP5WriteRefId - \ matchgroup=p6RxP5Escape - \ start="{" - \ end="}" - \ contained -syn match p6RxP5Prop display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=p6RxP5PropId -syn match p6RxP5PropId display contained "\a" -syn region p6RxP5PropId - \ matchgroup=p6RxP5Escape - \ start="{" - \ end="}" - \ contained -syn match p6RxP5Meta display contained "[(|).]" -syn match p6RxP5ParenMod display contained "(\@<=?\@=" nextgroup=p6RxP5Mod,p6RxP5ModName,p6RxP5Code -syn match p6RxP5Mod display contained "?\%(<\?=\|<\?!\|[#:|]\)" -syn match p6RxP5Mod display contained "?-\?[impsx]\+" -syn match p6RxP5Mod display contained "?\%([-+]\?\d\+\|R\)" -syn match p6RxP5Mod display contained "?(DEFINE)" -syn match p6RxP5Mod display contained "?\%(&\|P[>=]\)" nextgroup=p6RxP5ModDef -syn match p6RxP5ModDef display contained "\h\w*" -syn region p6RxP5ModName - \ matchgroup=p6StringSpecial - \ start="?'" - \ end="'" - \ contained -syn region p6RxP5ModName - \ matchgroup=p6StringSpecial - \ start="?P\?<" - \ end=">" - \ contained -syn region p6RxP5Code - \ matchgroup=p6StringSpecial - \ start="??\?{" - \ end="})\@=" - \ contained - \ contains=TOP -syn match p6RxP5EscMeta display contained "\\[?*.{}()[\]|\^$]" -syn match p6RxP5Count display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=p6RxP5CountId -syn region p6RxP5CountId - \ matchgroup=p6RxP5Escape - \ start="{" - \ end="}" - \ contained -syn match p6RxP5Verb display contained "(\@<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)" -syn region p6RxP5QuoteMeta - \ matchgroup=p6RxP5Escape - \ start="\\Q" - \ end="\\E" - \ contained - \ contains=@p6Variables,p6EscBackSlash -syn region p6RxP5CharClass - \ matchgroup=p6StringSpecial - \ start="\[\^\?" - \ skip="\\]" - \ end="]" - \ contained - \ contains=@p6RegexP5Class -syn region p6RxP5Posix - \ matchgroup=p6RxP5Escape - \ start="\[:" - \ end=":]" - \ contained -syn match p6RxP5Range display contained "-" - -" 'string' inside a regex -syn region p6RxStringSQ - \ matchgroup=p6Quote - \ start="'" - \ skip="\\\@, mm, rx -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=<>\@!>\@!" - \ skip="\\>" - \ end=">" - \ contains=@p6Regexen,@p6Variables - -" m«foo», mm«foo», rx«foo» -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=«»\@!»\@!" - \ skip="\\»" - \ end="»" - \ contains=@p6Regexen,@p6Variables - -" Substitutions - -" s/foo/bar/ -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\ -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\\@!" - \ skip="\\>" - \ end=">" - \ contains=@p6Regexen,@p6Variables - -" s«foo» -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\ -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\\@!" - \ skip="\\>" - \ end=">" - \ contains=@p6RegexP5,p6Variables - -" m:P5«» -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\" -syn match p6PodConfigOperator display contained ":!\?" nextgroup=p6PodConfigOption -syn match p6PodConfigOption display contained "[^[:space:](<]\+" nextgroup=p6PodParens,p6StringAngle -syn match p6PodExtraConfig display contained "^=" -syn match p6PodVerticalBar display contained "|" -syn match p6PodColon display contained ":" -syn match p6PodSemicolon display contained ";" -syn match p6PodComma display contained "," -syn match p6PodImplicitCode display contained "^\s.*" - -syn region p6PodDelimEndRegion - \ matchgroup=p6PodType - \ start="\%(^=end\>\)\@<=" - \ end="\K\k*" - -" These may appear inside delimited blocks -syn cluster p6PodNestedBlocks - \ add=p6PodAbbrRegion - \ add=p6PodDirectRegion - \ add=p6PodParaRegion - \ add=p6PodDelimRegion - \ add=p6PodDelimEndRegion - -" Pod formatting codes - -syn cluster p6PodFormat - \ add=p6PodFormatOne - \ add=p6PodFormatTwo - \ add=p6PodFormatThree - \ add=p6PodFormatFrench - -" Balanced angles found inside formatting codes. Ensures proper nesting. - -syn region p6PodFormatAnglesOne - \ matchgroup=p6PodFormat - \ start="<" - \ skip="<[^>]*>" - \ end=">" - \ transparent - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne - -syn region p6PodFormatAnglesTwo - \ matchgroup=p6PodFormat - \ start="<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ transparent - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo - -syn region p6PodFormatAnglesThree - \ matchgroup=p6PodFormat - \ start="<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ transparent - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree - -syn region p6PodFormatAnglesFrench - \ matchgroup=p6PodFormat - \ start="«" - \ skip="«[^»]*»" - \ end="»" - \ transparent - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree - -" All formatting codes - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="\u<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="\u<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="\u<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="\u«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree - -" C<> and V<> don't allow nested formatting formatting codes - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="[CV]<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="[CV]<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="[CV]<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="[CV]«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench - -" L<> can have a "|" separator - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="L<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="L<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="L<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="L«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar - -" E<> can have a ";" separator - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="E<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodSemiColon - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="E<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodSemiColon - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="E<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="E«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon - -" M<> can have a ":" separator - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="M<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodColon - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="M<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodColon - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="M<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="M«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon - -" D<> can have "|" and ";" separators - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="D<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="D<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAngleTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="D<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="D«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon - -" X<> can have "|", "," and ";" separators - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="X<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon,p6PodComma - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="X<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon,p6PodComma - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="X<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="X«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_perl6_syntax_inits") - if version < 508 - let did_perl6_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink p6EscOctOld p6Error - HiLink p6PackageTwigil p6Twigil - HiLink p6StringAngle p6String - HiLink p6StringFrench p6String - HiLink p6StringAngles p6String - HiLink p6StringSQ p6String - HiLink p6StringDQ p6String - HiLink p6StringQ p6String - HiLink p6RxStringSQ p6String - HiLink p6RxStringDQ p6String - HiLink p6Substitution p6String - HiLink p6Transliteration p6String - HiLink p6StringAuto p6String - HiLink p6StringP5Auto p6String - HiLink p6Key p6String - HiLink p6Match p6String - HiLink p6RegexBlock p6String - HiLink p6RxP5CharClass p6String - HiLink p6RxP5QuoteMeta p6String - HiLink p6RxCharClass p6String - HiLink p6RxQuoteWords p6String - HiLink p6ReduceOp p6Operator - HiLink p6ReverseCrossOp p6Operator - HiLink p6HyperOp p6Operator - HiLink p6QuoteQ p6Operator - HiLink p6RxRange p6StringSpecial - HiLink p6RxAnchor p6StringSpecial - HiLink p6RxP5Anchor p6StringSpecial - HiLink p6CodePoint p6StringSpecial - HiLink p6RxMeta p6StringSpecial - HiLink p6RxP5Range p6StringSpecial - HiLink p6RxP5CPId p6StringSpecial - HiLink p6RxP5Posix p6StringSpecial - HiLink p6RxP5Mod p6StringSpecial - HiLink p6RxP5HexSeq p6StringSpecial - HiLink p6RxP5OctSeq p6StringSpecial - HiLink p6RxP5WriteRefId p6StringSpecial - HiLink p6HexSequence p6StringSpecial - HiLink p6OctSequence p6StringSpecial - HiLink p6RxP5Named p6StringSpecial - HiLink p6RxP5PropId p6StringSpecial - HiLink p6RxP5Quantifier p6StringSpecial - HiLink p6RxP5CountId p6StringSpecial - HiLink p6RxP5Verb p6StringSpecial - HiLink p6Escape p6StringSpecial2 - HiLink p6EscNull p6StringSpecial2 - HiLink p6EscHash p6StringSpecial2 - HiLink p6EscQQ p6StringSpecial2 - HiLink p6EscQuote p6StringSpecial2 - HiLink p6EscDoubleQuote p6StringSpecial2 - HiLink p6EscBackTick p6StringSpecial2 - HiLink p6EscForwardSlash p6StringSpecial2 - HiLink p6EscVerticalBar p6StringSpecial2 - HiLink p6EscExclamation p6StringSpecial2 - HiLink p6EscDollar p6StringSpecial2 - HiLink p6EscOpenCurly p6StringSpecial2 - HiLink p6EscCloseCurly p6StringSpecial2 - HiLink p6EscCloseBracket p6StringSpecial2 - HiLink p6EscCloseAngle p6StringSpecial2 - HiLink p6EscCloseFrench p6StringSpecial2 - HiLink p6EscBackSlash p6StringSpecial2 - HiLink p6RxEscape p6StringSpecial2 - HiLink p6RxCapture p6StringSpecial2 - HiLink p6RxAlternation p6StringSpecial2 - HiLink p6RxP5 p6StringSpecial2 - HiLink p6RxP5ReadRef p6StringSpecial2 - HiLink p6RxP5Oct p6StringSpecial2 - HiLink p6RxP5Hex p6StringSpecial2 - HiLink p6RxP5EscMeta p6StringSpecial2 - HiLink p6RxP5Meta p6StringSpecial2 - HiLink p6RxP5Escape p6StringSpecial2 - HiLink p6RxP5CodePoint p6StringSpecial2 - HiLink p6RxP5WriteRef p6StringSpecial2 - HiLink p6RxP5Prop p6StringSpecial2 - - HiLink p6Property Tag - HiLink p6Attention Todo - HiLink p6Type Type - HiLink p6Error Error - HiLink p6BlockLabel Label - HiLink p6Float Float - HiLink p6Normal Normal - HiLink p6Package Normal - HiLink p6PackageScope Normal - HiLink p6Number Number - HiLink p6VersionNum Number - HiLink p6String String - HiLink p6Repeat Repeat - HiLink p6Keyword Keyword - HiLink p6Pragma Keyword - HiLink p6Module Keyword - HiLink p6DeclareRoutine Keyword - HiLink p6VarStorage Special - HiLink p6FlowControl Special - HiLink p6NumberBase Special - HiLink p6Twigil Special - HiLink p6StringSpecial2 Special - HiLink p6VersionDot Special - HiLink p6Comment Comment - HiLink p6Include Include - HiLink p6Shebang PreProc - HiLink p6ClosureTrait PreProc - HiLink p6Routine Function - HiLink p6Operator Operator - HiLink p6Version Operator - HiLink p6Context Operator - HiLink p6Quote Delimiter - HiLink p6TypeConstraint PreCondit - HiLink p6Exception Exception - HiLink p6Placeholder Identifier - HiLink p6Variable Identifier - HiLink p6VarSlash Identifier - HiLink p6VarNum Identifier - HiLink p6VarExclam Identifier - HiLink p6VarMatch Identifier - HiLink p6VarName Identifier - HiLink p6MatchVar Identifier - HiLink p6RxP5ReadRefId Identifier - HiLink p6RxP5ModDef Identifier - HiLink p6RxP5ModName Identifier - HiLink p6Conditional Conditional - HiLink p6StringSpecial SpecialChar - - HiLink p6PodAbbr p6Pod - HiLink p6PodAbbrEOF p6Pod - HiLink p6PodAbbrNoCode p6Pod - HiLink p6PodAbbrCode p6PodCode - HiLink p6PodPara p6Pod - HiLink p6PodParaEOF p6Pod - HiLink p6PodParaNoCode p6Pod - HiLink p6PodParaCode p6PodCode - HiLink p6PodDelim p6Pod - HiLink p6PodDelimEOF p6Pod - HiLink p6PodDelimNoCode p6Pod - HiLink p6PodDelimCode p6PodCode - HiLink p6PodImplicitCode p6PodCode - HiLink p6PodExtraConfig p6PodPrefix - HiLink p6PodVerticalBar p6PodFormatCode - HiLink p6PodColon p6PodFormatCode - HiLink p6PodSemicolon p6PodFormatCode - HiLink p6PodComma p6PodFormatCode - HiLink p6PodFormatOne p6PodFormat - HiLink p6PodFormatTwo p6PodFormat - HiLink p6PodFormatThree p6PodFormat - HiLink p6PodFormatFrench p6PodFormat - - HiLink p6PodType Type - HiLink p6PodConfigOption String - HiLink p6PodCode PreProc - HiLink p6Pod Comment - HiLink p6PodComment Comment - HiLink p6PodAutoQuote Operator - HiLink p6PodConfigOperator Operator - HiLink p6PodPrefix Statement - HiLink p6PodName Identifier - HiLink p6PodFormatCode SpecialChar - HiLink p6PodFormat SpecialComment - - delcommand HiLink -endif - -" Syncing to speed up processing -"syn sync match p6SyncPod groupthere p6PodAbbrRegion "^=\K\k*\>" -"syn sync match p6SyncPod groupthere p6PodDirectRegion "^=\%(config\|use\|encoding\)\>" -"syn sync match p6SyncPod groupthere p6PodParaRegion "^=for\>" -"syn sync match p6SyncPod groupthere p6PodDelimRegion "^=begin\>" -"syn sync match p6SyncPod groupthere p6PodDelimEndRegion "^=end\>" - -" Let's just sync whole file, the other methods aren't reliable (or I don't -" know how to use them reliably) -syn sync fromstart - -setlocal foldmethod=syntax - -let b:current_syntax = "perl6" - -" vim:ts=8:sts=4:sw=4:expandtab:ft=vim diff --git a/share/vim/vim73/syntax/pf.vim b/share/vim/vim73/syntax/pf.vim deleted file mode 100644 index 394cfb3e..00000000 --- a/share/vim/vim73/syntax/pf.vim +++ /dev/null @@ -1,75 +0,0 @@ -" pf syntax file -" Language: OpenBSD packet filter configuration (pf.conf) -" Maintainer: Camiel Dobbelaar -" Last Change: 2003 May 27 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -setlocal foldmethod=syntax -syn sync fromstart - -syn cluster pfNotLS contains=pfComment,pfTodo,pfVarAssign -syn keyword pfCmd altq anchor antispoof binat nat pass -syn keyword pfCmd queue rdr scrub table set -syn keyword pfService auth bgp domain finger ftp http https ident -syn keyword pfService imap irc isakmp kerberos mail nameserver nfs -syn keyword pfService nntp ntp pop3 portmap pptp rpcbind rsync smtp -syn keyword pfService snmp snmptrap socks ssh sunrpc syslog telnet -syn keyword pfService tftp www -syn keyword pfTodo TODO XXX contained -syn keyword pfWildAddr all any -syn match pfCmd /block\s/ -syn match pfComment /#.*$/ contains=pfTodo -syn match pfCont /\\$/ -syn match pfErrClose /}/ -syn match pfIPv4 /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ -syn match pfIPv6 /[a-fA-F0-9:]*::[a-fA-F0-9:.]*/ -syn match pfIPv6 /[a-fA-F0-9:]\+:[a-fA-F0-9:]\+:[a-fA-F0-9:.]\+/ -syn match pfNetmask /\/\d\+/ -syn match pfNum /[a-zA-Z0-9_:.]\@/ -syn match pfVar /$[a-zA-Z][a-zA-Z0-9_]*/ -syn match pfVarAssign /^\s*[a-zA-Z][a-zA-Z0-9_]*\s*=/me=e-1 -syn region pfFold1 start=/^#\{1}>/ end=/^#\{1,3}>/me=s-1 transparent fold -syn region pfFold2 start=/^#\{2}>/ end=/^#\{2,3}>/me=s-1 transparent fold -syn region pfFold3 start=/^#\{3}>/ end=/^#\{3}>/me=s-1 transparent fold -syn region pfList start=/{/ end=/}/ transparent contains=ALLBUT,pfErrClose,@pfNotLS -syn region pfString start=/"/ end=/"/ transparent contains=ALLBUT,pfString,@pfNotLS -syn region pfString start=/'/ end=/'/ transparent contains=ALLBUT,pfString,@pfNotLS - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_c_syn_inits") - if version < 508 - let did_c_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink pfCmd Statement - HiLink pfComment Comment - HiLink pfCont Statement - HiLink pfErrClose Error - HiLink pfIPv4 Type - HiLink pfIPv6 Type - HiLink pfNetmask Constant - HiLink pfNum Constant - HiLink pfService Constant - HiLink pfTable Identifier - HiLink pfTodo Todo - HiLink pfVar Identifier - HiLink pfVarAssign Identifier - HiLink pfWildAddr Type - - delcommand HiLink -endif - -let b:current_syntax = "pf" diff --git a/share/vim/vim73/syntax/pfmain.vim b/share/vim/vim73/syntax/pfmain.vim deleted file mode 100644 index 233c8d9c..00000000 --- a/share/vim/vim73/syntax/pfmain.vim +++ /dev/null @@ -1,1114 +0,0 @@ -" Vim syntax file -" Language: Postfix main.cf configuration -" Maintainer: KELEMEN Peter -" Last Change: 2006 Apr 15 -" Version: 0.20 -" URL: http://cern.ch/fuji/vim/syntax/pfmain.vim -" Comment: Based on Postfix 2.3.x defaults. - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if version >= 600 - setlocal iskeyword=@,48-57,_,- -else - set iskeyword=@,48-57,_,- -endif - -syntax case match -syntax sync minlines=1 - -syntax keyword pfmainConf 2bounce_notice_recipient -syntax keyword pfmainConf access_map_reject_code -syntax keyword pfmainConf address_verify_default_transport -syntax keyword pfmainConf address_verify_local_transport -syntax keyword pfmainConf address_verify_map -syntax keyword pfmainConf address_verify_negative_cache -syntax keyword pfmainConf address_verify_negative_expire_time -syntax keyword pfmainConf address_verify_negative_refresh_time -syntax keyword pfmainConf address_verify_poll_count -syntax keyword pfmainConf address_verify_poll_delay -syntax keyword pfmainConf address_verify_positive_expire_time -syntax keyword pfmainConf address_verify_positive_refresh_time -syntax keyword pfmainConf address_verify_relay_transport -syntax keyword pfmainConf address_verify_relayhost -syntax keyword pfmainConf address_verify_sender -syntax keyword pfmainConf address_verify_sender_dependent_relayhost_maps -syntax keyword pfmainConf address_verify_service_name -syntax keyword pfmainConf address_verify_transport_maps -syntax keyword pfmainConf address_verify_virtual_transport -syntax keyword pfmainConf alias_database -syntax keyword pfmainConf alias_maps -syntax keyword pfmainConf allow_mail_to_commands -syntax keyword pfmainConf allow_mail_to_files -syntax keyword pfmainConf allow_min_user -syntax keyword pfmainConf allow_percent_hack -syntax keyword pfmainConf allow_untrusted_routing -syntax keyword pfmainConf alternate_config_directories -syntax keyword pfmainConf always_bcc -syntax keyword pfmainConf anvil_rate_time_unit -syntax keyword pfmainConf anvil_status_update_time -syntax keyword pfmainConf append_at_myorigin -syntax keyword pfmainConf append_dot_mydomain -syntax keyword pfmainConf application_event_drain_time -syntax keyword pfmainConf authorized_flush_users -syntax keyword pfmainConf authorized_mailq_users -syntax keyword pfmainConf authorized_submit_users -syntax keyword pfmainConf backwards_bounce_logfile_compatibility -syntax keyword pfmainConf berkeley_db_create_buffer_size -syntax keyword pfmainConf berkeley_db_read_buffer_size -syntax keyword pfmainConf best_mx_transport -syntax keyword pfmainConf biff -syntax keyword pfmainConf body_checks -syntax keyword pfmainConf body_checks_size_limit -syntax keyword pfmainConf bounce_notice_recipient -syntax keyword pfmainConf bounce_queue_lifetime -syntax keyword pfmainConf bounce_service_name -syntax keyword pfmainConf bounce_size_limit -syntax keyword pfmainConf bounce_template_file -syntax keyword pfmainConf broken_sasl_auth_clients -syntax keyword pfmainConf canonical_classes -syntax keyword pfmainConf canonical_maps -syntax keyword pfmainConf cleanup_service_name -syntax keyword pfmainConf command_directory -syntax keyword pfmainConf command_execution_directory -syntax keyword pfmainConf command_expansion_filter -syntax keyword pfmainConf command_time_limit -syntax keyword pfmainConf config_directory -syntax keyword pfmainConf connection_cache_protocol_timeout -syntax keyword pfmainConf connection_cache_service_name -syntax keyword pfmainConf connection_cache_status_update_time -syntax keyword pfmainConf connection_cache_ttl_limit -syntax keyword pfmainConf content_filter -syntax keyword pfmainConf daemon_directory -syntax keyword pfmainConf daemon_timeout -syntax keyword pfmainConf debug_peer_level -syntax keyword pfmainConf debug_peer_list -syntax keyword pfmainConf default_database_type -syntax keyword pfmainConf default_delivery_slot_cost -syntax keyword pfmainConf default_delivery_slot_discount -syntax keyword pfmainConf default_delivery_slot_loan -syntax keyword pfmainConf default_destination_concurrency_limit -syntax keyword pfmainConf default_destination_recipient_limit -syntax keyword pfmainConf default_extra_recipient_limit -syntax keyword pfmainConf default_minimum_delivery_slots -syntax keyword pfmainConf default_privs -syntax keyword pfmainConf default_process_limit -syntax keyword pfmainConf default_rbl_reply -syntax keyword pfmainConf default_recipient_limit -syntax keyword pfmainConf default_transport -syntax keyword pfmainConf default_verp_delimiters -syntax keyword pfmainConf defer_code -syntax keyword pfmainConf defer_service_name -syntax keyword pfmainConf defer_transports -syntax keyword pfmainConf delay_logging_resolution_limit -syntax keyword pfmainConf delay_notice_recipient -syntax keyword pfmainConf delay_warning_time -syntax keyword pfmainConf deliver_lock_attempts -syntax keyword pfmainConf deliver_lock_delay -syntax keyword pfmainConf disable_dns_lookups -syntax keyword pfmainConf disable_mime_input_processing -syntax keyword pfmainConf disable_mime_output_conversion -syntax keyword pfmainConf disable_verp_bounces -syntax keyword pfmainConf disable_vrfy_command -syntax keyword pfmainConf dont_remove -syntax keyword pfmainConf double_bounce_sender -syntax keyword pfmainConf duplicate_filter_limit -syntax keyword pfmainConf empty_address_recipient -syntax keyword pfmainConf enable_original_recipient -syntax keyword pfmainConf error_notice_recipient -syntax keyword pfmainConf error_service_name -syntax keyword pfmainConf execution_directory_expansion_filter -syntax keyword pfmainConf expand_owner_alias -syntax keyword pfmainConf export_environment -syntax keyword pfmainConf fallback_transport -syntax keyword pfmainConf fallback_transport_maps -syntax keyword pfmainConf fast_flush_domains -syntax keyword pfmainConf fast_flush_purge_time -syntax keyword pfmainConf fast_flush_refresh_time -syntax keyword pfmainConf fault_injection_code -syntax keyword pfmainConf flush_service_name -syntax keyword pfmainConf fork_attempts -syntax keyword pfmainConf fork_delay -syntax keyword pfmainConf forward_expansion_filter -syntax keyword pfmainConf forward_path -syntax keyword pfmainConf frozen_delivered_to -syntax keyword pfmainConf hash_queue_depth -syntax keyword pfmainConf hash_queue_names -syntax keyword pfmainConf header_address_token_limit -syntax keyword pfmainConf header_checks -syntax keyword pfmainConf header_size_limit -syntax keyword pfmainConf helpful_warnings -syntax keyword pfmainConf home_mailbox -syntax keyword pfmainConf hopcount_limit -syntax keyword pfmainConf html_directory -syntax keyword pfmainConf ignore_mx_lookup_error -syntax keyword pfmainConf import_environment -syntax keyword pfmainConf in_flow_delay -syntax keyword pfmainConf inet_interfaces -syntax keyword pfmainConf inet_protocols -syntax keyword pfmainConf initial_destination_concurrency -syntax keyword pfmainConf invalid_hostname_reject_code -syntax keyword pfmainConf ipc_idle -syntax keyword pfmainConf ipc_timeout -syntax keyword pfmainConf ipc_ttl -syntax keyword pfmainConf line_length_limit -syntax keyword pfmainConf lmtp_bind_address -syntax keyword pfmainConf lmtp_bind_address6 -syntax keyword pfmainConf lmtp_cname_overrides_servername -syntax keyword pfmainConf lmtp_connect_timeout -syntax keyword pfmainConf lmtp_connection_cache_destinations -syntax keyword pfmainConf lmtp_connection_cache_on_demand -syntax keyword pfmainConf lmtp_connection_cache_time_limit -syntax keyword pfmainConf lmtp_connection_reuse_time_limit -syntax keyword pfmainConf lmtp_data_done_timeout -syntax keyword pfmainConf lmtp_data_init_timeout -syntax keyword pfmainConf lmtp_data_xfer_timeout -syntax keyword pfmainConf lmtp_defer_if_no_mx_address_found -syntax keyword pfmainConf lmtp_destination_concurrency_limit -syntax keyword pfmainConf lmtp_destination_recipient_limit -syntax keyword pfmainConf lmtp_discard_lhlo_keyword_address_maps -syntax keyword pfmainConf lmtp_discard_lhlo_keywords -syntax keyword pfmainConf lmtp_enforce_tls -syntax keyword pfmainConf lmtp_generic_maps -syntax keyword pfmainConf lmtp_host_lookup -syntax keyword pfmainConf lmtp_lhlo_name -syntax keyword pfmainConf lmtp_lhlo_timeout -syntax keyword pfmainConf lmtp_line_length_limit -syntax keyword pfmainConf lmtp_mail_timeout -syntax keyword pfmainConf lmtp_mx_address_limit -syntax keyword pfmainConf lmtp_mx_session_limit -syntax keyword pfmainConf lmtp_pix_workaround_delay_time -syntax keyword pfmainConf lmtp_pix_workaround_threshold_time -syntax keyword pfmainConf lmtp_quit_timeout -syntax keyword pfmainConf lmtp_quote_rfc821_envelope -syntax keyword pfmainConf lmtp_randomize_addresses -syntax keyword pfmainConf lmtp_rcpt_timeout -syntax keyword pfmainConf lmtp_rset_timeout -syntax keyword pfmainConf lmtp_sasl_auth_enable -syntax keyword pfmainConf lmtp_sasl_mechanism_filter -syntax keyword pfmainConf lmtp_sasl_password_maps -syntax keyword pfmainConf lmtp_sasl_path -syntax keyword pfmainConf lmtp_sasl_security_options -syntax keyword pfmainConf lmtp_sasl_tls_security_options -syntax keyword pfmainConf lmtp_sasl_tls_verified_security_options -syntax keyword pfmainConf lmtp_sasl_type -syntax keyword pfmainConf lmtp_send_xforward_command -syntax keyword pfmainConf lmtp_sender_dependent_authentication -syntax keyword pfmainConf lmtp_skip_5xx_greeting -syntax keyword pfmainConf lmtp_starttls_timeout -syntax keyword pfmainConf lmtp_tcp_port -syntax keyword pfmainConf lmtp_tls_enforce_peername -syntax keyword pfmainConf lmtp_tls_note_starttls_offer -syntax keyword pfmainConf lmtp_tls_per_site -syntax keyword pfmainConf lmtp_tls_scert_verifydepth -syntax keyword pfmainConf lmtp_use_tls -syntax keyword pfmainConf lmtp_xforward_timeout -syntax keyword pfmainConf local_command_shell -syntax keyword pfmainConf local_destination_concurrency_limit -syntax keyword pfmainConf local_destination_recipient_limit -syntax keyword pfmainConf local_header_rewrite_clients -syntax keyword pfmainConf local_recipient_maps -syntax keyword pfmainConf local_transport -syntax keyword pfmainConf luser_relay -syntax keyword pfmainConf mail_name -syntax keyword pfmainConf mail_owner -syntax keyword pfmainConf mail_release_date -syntax keyword pfmainConf mail_spool_directory -syntax keyword pfmainConf mail_version -syntax keyword pfmainConf mailbox_command -syntax keyword pfmainConf mailbox_command_maps -syntax keyword pfmainConf mailbox_delivery_lock -syntax keyword pfmainConf mailbox_size_limit -syntax keyword pfmainConf mailbox_transport -syntax keyword pfmainConf mailbox_transport_maps -syntax keyword pfmainConf mailq_path -syntax keyword pfmainConf manpage_directory -syntax keyword pfmainConf maps_rbl_domains -syntax keyword pfmainConf maps_rbl_reject_code -syntax keyword pfmainConf masquerade_classes -syntax keyword pfmainConf masquerade_domains -syntax keyword pfmainConf masquerade_exceptions -syntax keyword pfmainConf max_idle -syntax keyword pfmainConf max_use -syntax keyword pfmainConf maximal_backoff_time -syntax keyword pfmainConf maximal_queue_lifetime -syntax keyword pfmainConf message_reject_characters -syntax keyword pfmainConf message_size_limit -syntax keyword pfmainConf message_strip_characters -syntax keyword pfmainConf mime_boundary_length_limit -syntax keyword pfmainConf mime_header_checks -syntax keyword pfmainConf mime_nesting_limit -syntax keyword pfmainConf minimal_backoff_time -syntax keyword pfmainConf multi_recipient_bounce_reject_code -syntax keyword pfmainConf mydestination -syntax keyword pfmainConf mydomain -syntax keyword pfmainConf myhostname -syntax keyword pfmainConf mynetworks -syntax keyword pfmainConf mynetworks_style -syntax keyword pfmainConf myorigin -syntax keyword pfmainConf nested_header_checks -syntax keyword pfmainConf newaliases_path -syntax keyword pfmainConf non_fqdn_reject_code -syntax keyword pfmainConf notify_classes -syntax keyword pfmainConf owner_request_special -syntax keyword pfmainConf parent_domain_matches_subdomains -syntax keyword pfmainConf permit_mx_backup_networks -syntax keyword pfmainConf pickup_service_name -syntax keyword pfmainConf plaintext_reject_code -syntax keyword pfmainConf prepend_delivered_header -syntax keyword pfmainConf process_id_directory -syntax keyword pfmainConf propagate_unmatched_extensions -syntax keyword pfmainConf proxy_interfaces -syntax keyword pfmainConf proxy_read_maps -syntax keyword pfmainConf qmgr_clog_warn_time -syntax keyword pfmainConf qmgr_fudge_factor -syntax keyword pfmainConf qmgr_message_active_limit -syntax keyword pfmainConf qmgr_message_recipient_limit -syntax keyword pfmainConf qmgr_message_recipient_minimum -syntax keyword pfmainConf qmqpd_authorized_clients -syntax keyword pfmainConf qmqpd_error_delay -syntax keyword pfmainConf qmqpd_timeout -syntax keyword pfmainConf queue_directory -syntax keyword pfmainConf queue_file_attribute_count_limit -syntax keyword pfmainConf queue_minfree -syntax keyword pfmainConf queue_run_delay -syntax keyword pfmainConf queue_service_name -syntax keyword pfmainConf rbl_reply_maps -syntax keyword pfmainConf readme_directory -syntax keyword pfmainConf receive_override_options -syntax keyword pfmainConf recipient_bcc_maps -syntax keyword pfmainConf recipient_canonical_classes -syntax keyword pfmainConf recipient_canonical_maps -syntax keyword pfmainConf recipient_delimiter -syntax keyword pfmainConf reject_code -syntax keyword pfmainConf relay_clientcerts -syntax keyword pfmainConf relay_destination_concurrency_limit -syntax keyword pfmainConf relay_destination_recipient_limit -syntax keyword pfmainConf relay_domains -syntax keyword pfmainConf relay_domains_reject_code -syntax keyword pfmainConf relay_recipient_maps -syntax keyword pfmainConf relay_transport -syntax keyword pfmainConf relayhost -syntax keyword pfmainConf relocated_maps -syntax keyword pfmainConf remote_header_rewrite_domain -syntax keyword pfmainConf require_home_directory -syntax keyword pfmainConf resolve_dequoted_address -syntax keyword pfmainConf resolve_null_domain -syntax keyword pfmainConf resolve_numeric_domain -syntax keyword pfmainConf rewrite_service_name -syntax keyword pfmainConf sample_directory -syntax keyword pfmainConf sender_bcc_maps -syntax keyword pfmainConf sender_canonical_classes -syntax keyword pfmainConf sender_canonical_maps -syntax keyword pfmainConf sender_dependent_relayhost_maps -syntax keyword pfmainConf sendmail_path -syntax keyword pfmainConf service_throttle_time -syntax keyword pfmainConf setgid_group -syntax keyword pfmainConf show_user_unknown_table_name -syntax keyword pfmainConf showq_service_name -syntax keyword pfmainConf smtp_always_send_ehlo -syntax keyword pfmainConf smtp_bind_address -syntax keyword pfmainConf smtp_bind_address6 -syntax keyword pfmainConf smtp_cname_overrides_servername -syntax keyword pfmainConf smtp_connect_timeout -syntax keyword pfmainConf smtp_connection_cache_destinations -syntax keyword pfmainConf smtp_connection_cache_on_demand -syntax keyword pfmainConf smtp_connection_cache_time_limit -syntax keyword pfmainConf smtp_connection_reuse_time_limit -syntax keyword pfmainConf smtp_data_done_timeout -syntax keyword pfmainConf smtp_data_init_timeout -syntax keyword pfmainConf smtp_data_xfer_timeout -syntax keyword pfmainConf smtp_defer_if_no_mx_address_found -syntax keyword pfmainConf smtp_destination_concurrency_limit -syntax keyword pfmainConf smtp_destination_recipient_limit -syntax keyword pfmainConf smtp_discard_ehlo_keyword_address_maps -syntax keyword pfmainConf smtp_discard_ehlo_keywords -syntax keyword pfmainConf smtp_enforce_tls -syntax keyword pfmainConf smtp_fallback_relay -syntax keyword pfmainConf smtp_generic_maps -syntax keyword pfmainConf smtp_helo_name -syntax keyword pfmainConf smtp_helo_timeout -syntax keyword pfmainConf smtp_host_lookup -syntax keyword pfmainConf smtp_line_length_limit -syntax keyword pfmainConf smtp_mail_timeout -syntax keyword pfmainConf smtp_mx_address_limit -syntax keyword pfmainConf smtp_mx_session_limit -syntax keyword pfmainConf smtp_never_send_ehlo -syntax keyword pfmainConf smtp_pix_workaround_delay_time -syntax keyword pfmainConf smtp_pix_workaround_threshold_time -syntax keyword pfmainConf smtp_quit_timeout -syntax keyword pfmainConf smtp_quote_rfc821_envelope -syntax keyword pfmainConf smtp_randomize_addresses -syntax keyword pfmainConf smtp_rcpt_timeout -syntax keyword pfmainConf smtp_rset_timeout -syntax keyword pfmainConf smtp_sasl_auth_enable -syntax keyword pfmainConf smtp_sasl_mechanism_filter -syntax keyword pfmainConf smtp_sasl_password_maps -syntax keyword pfmainConf smtp_sasl_path -syntax keyword pfmainConf smtp_sasl_security_options -syntax keyword pfmainConf smtp_sasl_tls_security_options -syntax keyword pfmainConf smtp_sasl_tls_verified_security_options -syntax keyword pfmainConf smtp_sasl_type -syntax keyword pfmainConf smtp_send_xforward_command -syntax keyword pfmainConf smtp_sender_dependent_authentication -syntax keyword pfmainConf smtp_skip_5xx_greeting -syntax keyword pfmainConf smtp_skip_quit_response -syntax keyword pfmainConf smtp_starttls_timeout -syntax keyword pfmainConf smtp_tls_CAfile -syntax keyword pfmainConf smtp_tls_CApath -syntax keyword pfmainConf smtp_tls_cert_file -syntax keyword pfmainConf smtp_tls_cipherlist -syntax keyword pfmainConf smtp_tls_dcert_file -syntax keyword pfmainConf smtp_tls_dkey_file -syntax keyword pfmainConf smtp_tls_enforce_peername -syntax keyword pfmainConf smtp_tls_key_file -syntax keyword pfmainConf smtp_tls_loglevel -syntax keyword pfmainConf smtp_tls_note_starttls_offer -syntax keyword pfmainConf smtp_tls_per_site -syntax keyword pfmainConf smtp_tls_scert_verifydepth -syntax keyword pfmainConf smtp_tls_session_cache_database -syntax keyword pfmainConf smtp_tls_session_cache_timeout -syntax keyword pfmainConf smtp_use_tls -syntax keyword pfmainConf smtp_xforward_timeout -syntax keyword pfmainConf smtpd_authorized_verp_clients -syntax keyword pfmainConf smtpd_authorized_xclient_hosts -syntax keyword pfmainConf smtpd_authorized_xforward_hosts -syntax keyword pfmainConf smtpd_banner -syntax keyword pfmainConf smtpd_client_connection_count_limit -syntax keyword pfmainConf smtpd_client_connection_rate_limit -syntax keyword pfmainConf smtpd_client_event_limit_exceptions -syntax keyword pfmainConf smtpd_client_message_rate_limit -syntax keyword pfmainConf smtpd_client_new_tls_session_rate_limit -syntax keyword pfmainConf smtpd_client_recipient_rate_limit -syntax keyword pfmainConf smtpd_client_restrictions -syntax keyword pfmainConf smtpd_data_restrictions -syntax keyword pfmainConf smtpd_delay_open_until_valid_rcpt -syntax keyword pfmainConf smtpd_delay_reject -syntax keyword pfmainConf smtpd_discard_ehlo_keyword_address_maps -syntax keyword pfmainConf smtpd_discard_ehlo_keywords -syntax keyword pfmainConf smtpd_end_of_data_restrictions -syntax keyword pfmainConf smtpd_enforce_tls -syntax keyword pfmainConf smtpd_error_sleep_time -syntax keyword pfmainConf smtpd_etrn_restrictions -syntax keyword pfmainConf smtpd_expansion_filter -syntax keyword pfmainConf smtpd_forbidden_commands -syntax keyword pfmainConf smtpd_hard_error_limit -syntax keyword pfmainConf smtpd_helo_required -syntax keyword pfmainConf smtpd_helo_restrictions -syntax keyword pfmainConf smtpd_history_flush_threshold -syntax keyword pfmainConf smtpd_junk_command_limit -syntax keyword pfmainConf smtpd_noop_commands -syntax keyword pfmainConf smtpd_null_access_lookup_key -syntax keyword pfmainConf smtpd_peername_lookup -syntax keyword pfmainConf smtpd_policy_service_max_idle -syntax keyword pfmainConf smtpd_policy_service_max_ttl -syntax keyword pfmainConf smtpd_policy_service_timeout -syntax keyword pfmainConf smtpd_proxy_ehlo -syntax keyword pfmainConf smtpd_proxy_filter -syntax keyword pfmainConf smtpd_proxy_timeout -syntax keyword pfmainConf smtpd_recipient_limit -syntax keyword pfmainConf smtpd_recipient_overshoot_limit -syntax keyword pfmainConf smtpd_recipient_restrictions -syntax keyword pfmainConf smtpd_reject_unlisted_recipient -syntax keyword pfmainConf smtpd_reject_unlisted_sender -syntax keyword pfmainConf smtpd_restriction_classes -syntax keyword pfmainConf smtpd_sasl_auth_enable -syntax keyword pfmainConf smtpd_sasl_authenticated_header -syntax keyword pfmainConf smtpd_sasl_exceptions_networks -syntax keyword pfmainConf smtpd_sasl_local_domain -syntax keyword pfmainConf smtpd_sasl_path -syntax keyword pfmainConf smtpd_sasl_security_options -syntax keyword pfmainConf smtpd_sasl_tls_security_options -syntax keyword pfmainConf smtpd_sasl_type -syntax keyword pfmainConf smtpd_sender_login_maps -syntax keyword pfmainConf smtpd_sender_restrictions -syntax keyword pfmainConf smtpd_soft_error_limit -syntax keyword pfmainConf smtpd_starttls_timeout -syntax keyword pfmainConf smtpd_timeout -syntax keyword pfmainConf smtpd_tls_CAfile -syntax keyword pfmainConf smtpd_tls_CApath -syntax keyword pfmainConf smtpd_tls_ask_ccert -syntax keyword pfmainConf smtpd_tls_auth_only -syntax keyword pfmainConf smtpd_tls_ccert_verifydepth -syntax keyword pfmainConf smtpd_tls_cert_file -syntax keyword pfmainConf smtpd_tls_cipherlist -syntax keyword pfmainConf smtpd_tls_dcert_file -syntax keyword pfmainConf smtpd_tls_dh1024_param_file -syntax keyword pfmainConf smtpd_tls_dh512_param_file -syntax keyword pfmainConf smtpd_tls_dkey_file -syntax keyword pfmainConf smtpd_tls_key_file -syntax keyword pfmainConf smtpd_tls_loglevel -syntax keyword pfmainConf smtpd_tls_received_header -syntax keyword pfmainConf smtpd_tls_req_ccert -syntax keyword pfmainConf smtpd_tls_session_cache_database -syntax keyword pfmainConf smtpd_tls_session_cache_timeout -syntax keyword pfmainConf smtpd_tls_wrappermode -syntax keyword pfmainConf smtpd_use_tls -syntax keyword pfmainConf soft_bounce -syntax keyword pfmainConf stale_lock_time -syntax keyword pfmainConf strict_7bit_headers -syntax keyword pfmainConf strict_8bitmime -syntax keyword pfmainConf strict_8bitmime_body -syntax keyword pfmainConf strict_mime_encoding_domain -syntax keyword pfmainConf strict_rfc821_envelopes -syntax keyword pfmainConf sun_mailtool_compatibility -syntax keyword pfmainConf swap_bangpath -syntax keyword pfmainConf syslog_facility -syntax keyword pfmainConf syslog_name -syntax keyword pfmainConf tls_daemon_random_bytes -syntax keyword pfmainConf tls_random_bytes -syntax keyword pfmainConf tls_random_exchange_name -syntax keyword pfmainConf tls_random_prng_update_period -syntax keyword pfmainConf tls_random_reseed_period -syntax keyword pfmainConf tls_random_source -syntax keyword pfmainConf trace_service_name -syntax keyword pfmainConf transport_maps -syntax keyword pfmainConf transport_retry_time -syntax keyword pfmainConf trigger_timeout -syntax keyword pfmainConf undisclosed_recipients_header -syntax keyword pfmainConf unknown_address_reject_code -syntax keyword pfmainConf unknown_client_reject_code -syntax keyword pfmainConf unknown_hostname_reject_code -syntax keyword pfmainConf unknown_local_recipient_reject_code -syntax keyword pfmainConf unknown_relay_recipient_reject_code -syntax keyword pfmainConf unknown_virtual_alias_reject_code -syntax keyword pfmainConf unknown_virtual_mailbox_reject_code -syntax keyword pfmainConf unverified_recipient_reject_code -syntax keyword pfmainConf unverified_sender_reject_code -syntax keyword pfmainConf verp_delimiter_filter -syntax keyword pfmainConf virtual_alias_domains -syntax keyword pfmainConf virtual_alias_expansion_limit -syntax keyword pfmainConf virtual_alias_maps -syntax keyword pfmainConf virtual_alias_recursion_limit -syntax keyword pfmainConf virtual_destination_concurrency_limit -syntax keyword pfmainConf virtual_destination_recipient_limit -syntax keyword pfmainConf virtual_gid_maps -syntax keyword pfmainConf virtual_mailbox_base -syntax keyword pfmainConf virtual_mailbox_domains -syntax keyword pfmainConf virtual_mailbox_limit -syntax keyword pfmainConf virtual_mailbox_lock -syntax keyword pfmainConf virtual_mailbox_maps -syntax keyword pfmainConf virtual_minimum_uid -syntax keyword pfmainConf virtual_transport -syntax keyword pfmainConf virtual_uid_maps -syntax match pfmainRef "$\<2bounce_notice_recipient\>" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax match pfmainRef "$\" -syntax keyword pfmainWord all -syntax keyword pfmainWord check_address_map -syntax keyword pfmainWord check_ccert_access -syntax keyword pfmainWord check_client_access -syntax keyword pfmainWord check_etrn_access -syntax keyword pfmainWord check_helo_access -syntax keyword pfmainWord check_helo_mx_access -syntax keyword pfmainWord check_helo_ns_access -syntax keyword pfmainWord check_policy_service -syntax keyword pfmainWord check_recipient_access -syntax keyword pfmainWord check_recipient_maps -syntax keyword pfmainWord check_recipient_mx_access -syntax keyword pfmainWord check_recipient_ns_access -syntax keyword pfmainWord check_relay_domains -syntax keyword pfmainWord check_sender_access -syntax keyword pfmainWord check_sender_mx_access -syntax keyword pfmainWord check_sender_ns_access -syntax keyword pfmainWord class -syntax keyword pfmainWord defer_if_permit -syntax keyword pfmainWord defer_if_reject -syntax keyword pfmainWord dns -syntax keyword pfmainWord envelope_recipient -syntax keyword pfmainWord envelope_sender -syntax keyword pfmainWord header_recipient -syntax keyword pfmainWord header_sender -syntax keyword pfmainWord host -syntax keyword pfmainWord ipv4 -syntax keyword pfmainWord ipv6 -syntax keyword pfmainWord native -syntax keyword pfmainWord permit -syntax keyword pfmainWord permit_auth_destination -syntax keyword pfmainWord permit_inet_interfaces -syntax keyword pfmainWord permit_mx_backup -syntax keyword pfmainWord permit_mynetworks -syntax keyword pfmainWord permit_naked_ip_address -syntax keyword pfmainWord permit_sasl_authenticated -syntax keyword pfmainWord permit_tls_all_clientcerts -syntax keyword pfmainWord permit_tls_clientcerts -syntax keyword pfmainWord reject -syntax keyword pfmainWord reject_invalid_helo_hostname -syntax keyword pfmainWord reject_invalid_hostname -syntax keyword pfmainWord reject_maps_rbl -syntax keyword pfmainWord reject_multi_recipient_bounce -syntax keyword pfmainWord reject_non_fqdn_helo_hostname -syntax keyword pfmainWord reject_non_fqdn_hostname -syntax keyword pfmainWord reject_non_fqdn_recipient -syntax keyword pfmainWord reject_non_fqdn_sender -syntax keyword pfmainWord reject_plaintext_session -syntax keyword pfmainWord reject_rbl -syntax keyword pfmainWord reject_rbl_client -syntax keyword pfmainWord reject_rhsbl_client -syntax keyword pfmainWord reject_rhsbl_helo -syntax keyword pfmainWord reject_rhsbl_recipient -syntax keyword pfmainWord reject_rhsbl_sender -syntax keyword pfmainWord reject_sender_login_mismatch -syntax keyword pfmainWord reject_unauth_destination -syntax keyword pfmainWord reject_unauth_pipelining -syntax keyword pfmainWord reject_unknown_address -syntax keyword pfmainWord reject_unknown_client -syntax keyword pfmainWord reject_unknown_client_hostname -syntax keyword pfmainWord reject_unknown_forward_client_hostname -syntax keyword pfmainWord reject_unknown_helo_hostname -syntax keyword pfmainWord reject_unknown_hostname -syntax keyword pfmainWord reject_unknown_recipient_domain -syntax keyword pfmainWord reject_unknown_reverse_client_hostname -syntax keyword pfmainWord reject_unknown_sender_domain -syntax keyword pfmainWord reject_unlisted_recipient -syntax keyword pfmainWord reject_unlisted_sender -syntax keyword pfmainWord reject_unverified_recipient -syntax keyword pfmainWord reject_unverified_sender -syntax keyword pfmainWord sleep -syntax keyword pfmainWord smtpd_access_maps -syntax keyword pfmainWord subnet -syntax keyword pfmainWord warn_if_reject - -syntax keyword pfmainDict btree cidr environ hash nis pcre proxy regexp sdbm sdbm static tcp unix -syntax keyword pfmainQueueDir incoming active deferred corrupt hold -syntax keyword pfmainTransport smtp lmtp unix local relay uucp virtual -syntax keyword pfmainLock fcntl flock dotlock -syntax keyword pfmainAnswer yes no - -syntax match pfmainComment "#.*$" -syntax match pfmainNumber "\<\d\+\>" -syntax match pfmainTime "\<\d\+[hmsd]\>" -syntax match pfmainIP "\<\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\>" -syntax match pfmainVariable "\$\w\+" contains=pfmainRef - -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" - -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" -syntax match pfmainSpecial "\" - -if version >= 508 || !exists("pfmain_syntax_init") - if version < 508 - let pfmain_syntax_init = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink pfmainConf Statement - HiLink pfmainRef PreProc - HiLink pfmainWord identifier - - HiLink pfmainDict Type - HiLink pfmainQueueDir Constant - HiLink pfmainTransport Constant - HiLink pfmainLock Constant - HiLink pfmainAnswer Constant - - HiLink pfmainComment Comment - HiLink pfmainNumber Number - HiLink pfmainTime Number - HiLink pfmainIP Number - HiLink pfmainVariable Error - HiLink pfmainSpecial Special - - delcommand HiLink -endif - -let b:current_syntax = "pfmain" - -" vim: ts=8 sw=2 diff --git a/share/vim/vim73/syntax/php.vim b/share/vim/vim73/syntax/php.vim deleted file mode 100644 index 4e6b95ca..00000000 --- a/share/vim/vim73/syntax/php.vim +++ /dev/null @@ -1,649 +0,0 @@ -" Vim syntax file -" Language: php PHP 3/4/5 -" Maintainer: Peter Hodge -" Last Change: June 9, 2006 -" URL: http://www.vim.org/scripts/script.php?script_id=1571 -" -" Former Maintainer: Debian VIM Maintainers -" Former URL: http://svn.debian.org/wsvn/pkg-vim/trunk/runtime/syntax/php.vim?op=file&rev=0&sc=0 -" -" Note: If you are using a colour terminal with dark background, you will probably find -" the 'elflord' colorscheme is much better for PHP's syntax than the default -" colourscheme, because elflord's colours will better highlight the break-points -" (Statements) in your code. -" -" Options: php_sql_query = 1 for SQL syntax highlighting inside strings -" php_htmlInStrings = 1 for HTML syntax highlighting inside strings -" php_baselib = 1 for highlighting baselib functions -" php_asp_tags = 1 for highlighting ASP-style short tags -" php_parent_error_close = 1 for highlighting parent error ] or ) -" php_parent_error_open = 1 for skipping an php end tag, if there exists an open ( or [ without a closing one -" php_oldStyle = 1 for using old colorstyle -" php_noShortTags = 1 don't sync as php -" php_folding = 1 for folding classes and functions -" php_folding = 2 for folding all { } regions -" php_sync_method = x -" x=-1 to sync by search ( default ) -" x>0 to sync at least x lines backwards -" x=0 to sync from start -" -" Added by Peter Hodge On June 9, 2006: -" php_special_functions = 1|0 to highlight functions with abnormal behaviour -" php_alt_comparisons = 1|0 to highlight comparison operators in an alternate colour -" php_alt_assignByReference = 1|0 to highlight '= &' in an alternate colour -" -" Note: these all default to 1 (On), so you would set them to '0' to turn them off. -" E.g., in your .vimrc or _vimrc file: -" let php_special_functions = 0 -" let php_alt_comparisons = 0 -" let php_alt_assignByReference = 0 -" Unletting these variables will revert back to their default (On). -" -" -" Note: -" Setting php_folding=1 will match a closing } by comparing the indent -" before the class or function keyword with the indent of a matching }. -" Setting php_folding=2 will match all of pairs of {,} ( see known -" bugs ii ) - -" Known Bugs: -" - setting php_parent_error_close on and php_parent_error_open off -" has these two leaks: -" i) A closing ) or ] inside a string match to the last open ( or [ -" before the string, when the the closing ) or ] is on the same line -" where the string started. In this case a following ) or ] after -" the string would be highlighted as an error, what is incorrect. -" ii) Same problem if you are setting php_folding = 2 with a closing -" } inside an string on the first line of this string. -" -" - A double-quoted string like this: -" "$foo->someVar->someOtherVar->bar" -" will highight '->someOtherVar->bar' as though they will be parsed -" as object member variables, but PHP only recognizes the first -" object member variable ($foo->someVar). -" -" - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if !exists("main_syntax") - let main_syntax = 'php' -endif - -if version < 600 - unlet! php_folding - if exists("php_sync_method") && !php_sync_method - let php_sync_method=-1 - endif - so :p:h/html.vim -else - runtime! syntax/html.vim - unlet b:current_syntax -endif - -" accept old options -if !exists("php_sync_method") - if exists("php_minlines") - let php_sync_method=php_minlines - else - let php_sync_method=-1 - endif -endif - -if exists("php_parentError") && !exists("php_parent_error_open") && !exists("php_parent_error_close") - let php_parent_error_close=1 - let php_parent_error_open=1 -endif - -syn cluster htmlPreproc add=phpRegion,phpRegionAsp,phpRegionSc - -if version < 600 - syn include @sqlTop :p:h/sql.vim -else - syn include @sqlTop syntax/sql.vim -endif -syn sync clear -unlet b:current_syntax -syn cluster sqlTop remove=sqlString,sqlComment -if exists( "php_sql_query") - syn cluster phpAddStrings contains=@sqlTop -endif - -if exists( "php_htmlInStrings") - syn cluster phpAddStrings add=@htmlTop -endif - -syn case match - -" Env Variables -syn keyword phpEnvVar GATEWAY_INTERFACE SERVER_NAME SERVER_SOFTWARE SERVER_PROTOCOL REQUEST_METHOD QUERY_STRING DOCUMENT_ROOT HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION HTTP_HOST HTTP_REFERER HTTP_USER_AGENT REMOTE_ADDR REMOTE_PORT SCRIPT_FILENAME SERVER_ADMIN SERVER_PORT SERVER_SIGNATURE PATH_TRANSLATED SCRIPT_NAME REQUEST_URI contained - -" Internal Variables -syn keyword phpIntVar GLOBALS PHP_ERRMSG PHP_SELF HTTP_GET_VARS HTTP_POST_VARS HTTP_COOKIE_VARS HTTP_POST_FILES HTTP_ENV_VARS HTTP_SERVER_VARS HTTP_SESSION_VARS HTTP_RAW_POST_DATA HTTP_STATE_VARS _GET _POST _COOKIE _FILES _SERVER _ENV _SERVER _REQUEST _SESSION contained - -" Constants -syn keyword phpCoreConstant PHP_VERSION PHP_OS DEFAULT_INCLUDE_PATH PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_BINDIR PHP_LIBDIR PHP_DATADIR PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_ALL contained - -syn case ignore - -syn keyword phpConstant __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__ contained - - -" Function and Methods ripped from php_manual_de.tar.gz Jan 2003 -syn keyword phpFunctions apache_child_terminate apache_get_modules apache_get_version apache_getenv apache_lookup_uri apache_note apache_request_headers apache_response_headers apache_setenv ascii2ebcdic ebcdic2ascii getallheaders virtual contained -syn keyword phpFunctions array_change_key_case array_chunk array_combine array_count_values array_diff_assoc array_diff_uassoc array_diff array_fill array_filter array_flip array_intersect_assoc array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_push array_rand array_reduce array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_unique array_unshift array_values array_walk array arsort asort compact count current each end extract in_array key krsort ksort list natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort contained -syn keyword phpFunctions aspell_check aspell_new aspell_suggest contained -syn keyword phpFunctions bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub contained -syn keyword phpFunctions bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite contained -syn keyword phpFunctions cal_days_in_month cal_from_jd cal_info cal_to_jd easter_date easter_days frenchtojd gregoriantojd jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd juliantojd unixtojd contained -syn keyword phpFunctions ccvs_add ccvs_auth ccvs_command ccvs_count ccvs_delete ccvs_done ccvs_init ccvs_lookup ccvs_new ccvs_report ccvs_return ccvs_reverse ccvs_sale ccvs_status ccvs_textvalue ccvs_void contained -syn keyword phpFunctions call_user_method_array call_user_method class_exists get_class_methods get_class_vars get_class get_declared_classes get_object_vars get_parent_class is_a is_subclass_of method_exists contained -syn keyword phpFunctions com VARIANT com_addref com_get com_invoke com_isenum com_load_typelib com_load com_propget com_propput com_propset com_release com_set contained -syn keyword phpFunctions cpdf_add_annotation cpdf_add_outline cpdf_arc cpdf_begin_text cpdf_circle cpdf_clip cpdf_close cpdf_closepath_fill_stroke cpdf_closepath_stroke cpdf_closepath cpdf_continue_text cpdf_curveto cpdf_end_text cpdf_fill_stroke cpdf_fill cpdf_finalize_page cpdf_finalize cpdf_global_set_document_limits cpdf_import_jpeg cpdf_lineto cpdf_moveto cpdf_newpath cpdf_open cpdf_output_buffer cpdf_page_init cpdf_place_inline_image cpdf_rect cpdf_restore cpdf_rlineto cpdf_rmoveto cpdf_rotate_text cpdf_rotate cpdf_save_to_file cpdf_save cpdf_scale cpdf_set_action_url cpdf_set_char_spacing cpdf_set_creator cpdf_set_current_page cpdf_set_font_directories cpdf_set_font_map_file cpdf_set_font cpdf_set_horiz_scaling cpdf_set_keywords cpdf_set_leading cpdf_set_page_animation cpdf_set_subject cpdf_set_text_matrix cpdf_set_text_pos cpdf_set_text_rendering cpdf_set_text_rise cpdf_set_title cpdf_set_viewer_preferences cpdf_set_word_spacing cpdf_setdash cpdf_setflat cpdf_setgray_fill cpdf_setgray_stroke cpdf_setgray cpdf_setlinecap cpdf_setlinejoin cpdf_setlinewidth cpdf_setmiterlimit cpdf_setrgbcolor_fill cpdf_setrgbcolor_stroke cpdf_setrgbcolor cpdf_show_xy cpdf_show cpdf_stringwidth cpdf_stroke cpdf_text cpdf_translate contained -syn keyword phpFunctions crack_check crack_closedict crack_getlastmessage crack_opendict contained -syn keyword phpFunctions ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit contained -syn keyword phpFunctions curl_close curl_errno curl_error curl_exec curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_setopt curl_version contained -syn keyword phpFunctions cybercash_base64_decode cybercash_base64_encode cybercash_decr cybercash_encr contained -syn keyword phpFunctions cyrus_authenticate cyrus_bind cyrus_close cyrus_connect cyrus_query cyrus_unbind contained -syn keyword phpFunctions checkdate date getdate gettimeofday gmdate gmmktime gmstrftime localtime microtime mktime strftime strtotime time contained -syn keyword phpFunctions dba_close dba_delete dba_exists dba_fetch dba_firstkey dba_handlers dba_insert dba_key_split dba_list dba_nextkey dba_open dba_optimize dba_popen dba_replace dba_sync contained -syn keyword phpFunctions dbase_add_record dbase_close dbase_create dbase_delete_record dbase_get_header_info dbase_get_record_with_names dbase_get_record dbase_numfields dbase_numrecords dbase_open dbase_pack dbase_replace_record contained -syn keyword phpFunctions dblist dbmclose dbmdelete dbmexists dbmfetch dbmfirstkey dbminsert dbmnextkey dbmopen dbmreplace contained -syn keyword phpFunctions dbplus_add dbplus_aql dbplus_chdir dbplus_close dbplus_curr dbplus_errcode dbplus_errno dbplus_find dbplus_first dbplus_flush dbplus_freealllocks dbplus_freelock dbplus_freerlocks dbplus_getlock dbplus_getunique dbplus_info dbplus_last dbplus_lockrel dbplus_next dbplus_open dbplus_prev dbplus_rchperm dbplus_rcreate dbplus_rcrtexact dbplus_rcrtlike dbplus_resolve dbplus_restorepos dbplus_rkeys dbplus_ropen dbplus_rquery dbplus_rrename dbplus_rsecindex dbplus_runlink dbplus_rzap dbplus_savepos dbplus_setindex dbplus_setindexbynumber dbplus_sql dbplus_tcl dbplus_tremove dbplus_undo dbplus_undoprepare dbplus_unlockrel dbplus_unselect dbplus_update dbplus_xlockrel dbplus_xunlockrel contained -syn keyword phpFunctions dbx_close dbx_compare dbx_connect dbx_error dbx_escape_string dbx_fetch_row dbx_query dbx_sort contained -syn keyword phpFunctions dio_close dio_fcntl dio_open dio_read dio_seek dio_stat dio_tcsetattr dio_truncate dio_write contained -syn keyword phpFunctions chdir chroot dir closedir getcwd opendir readdir rewinddir scandir contained -syn keyword phpFunctions domxml_new_doc domxml_open_file domxml_open_mem domxml_version domxml_xmltree domxml_xslt_stylesheet_doc domxml_xslt_stylesheet_file domxml_xslt_stylesheet xpath_eval_expression xpath_eval xpath_new_context xptr_eval xptr_new_context contained -syn keyword phpMethods name specified value create_attribute create_cdata_section create_comment create_element_ns create_element create_entity_reference create_processing_instruction create_text_node doctype document_element dump_file dump_mem get_element_by_id get_elements_by_tagname html_dump_mem xinclude entities internal_subset name notations public_id system_id get_attribute_node get_attribute get_elements_by_tagname has_attribute remove_attribute set_attribute tagname add_namespace append_child append_sibling attributes child_nodes clone_node dump_node first_child get_content has_attributes has_child_nodes insert_before is_blank_node last_child next_sibling node_name node_type node_value owner_document parent_node prefix previous_sibling remove_child replace_child replace_node set_content set_name set_namespace unlink_node data target process result_dump_file result_dump_mem contained -syn keyword phpFunctions dotnet_load contained -syn keyword phpFunctions debug_backtrace debug_print_backtrace error_log error_reporting restore_error_handler set_error_handler trigger_error user_error contained -syn keyword phpFunctions escapeshellarg escapeshellcmd exec passthru proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec system contained -syn keyword phpFunctions fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor contained -syn keyword phpFunctions fbsql_affected_rows fbsql_autocommit fbsql_change_user fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_select_db fbsql_set_lob_mode fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_tablename fbsql_username fbsql_warnings contained -syn keyword phpFunctions fdf_add_doc_javascript fdf_add_template fdf_close fdf_create fdf_enum_values fdf_errno fdf_error fdf_get_ap fdf_get_attachment fdf_get_encoding fdf_get_file fdf_get_flags fdf_get_opt fdf_get_status fdf_get_value fdf_get_version fdf_header fdf_next_field_name fdf_open_string fdf_open fdf_remove_item fdf_save_string fdf_save fdf_set_ap fdf_set_encoding fdf_set_file fdf_set_flags fdf_set_javascript_action fdf_set_opt fdf_set_status fdf_set_submit_form_action fdf_set_target_frame fdf_set_value fdf_set_version contained -syn keyword phpFunctions filepro_fieldcount filepro_fieldname filepro_fieldtype filepro_fieldwidth filepro_retrieve filepro_rowcount filepro contained -syn keyword phpFunctions basename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink contained -syn keyword phpFunctions fribidi_log2vis contained -syn keyword phpFunctions ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype contained -syn keyword phpFunctions call_user_func_array call_user_func create_function func_get_arg func_get_args func_num_args function_exists get_defined_functions register_shutdown_function register_tick_function unregister_tick_function contained -syn keyword phpFunctions bind_textdomain_codeset bindtextdomain dcgettext dcngettext dgettext dngettext gettext ngettext textdomain contained -syn keyword phpFunctions gmp_abs gmp_add gmp_and gmp_clrbit gmp_cmp gmp_com gmp_div_q gmp_div_qr gmp_div_r gmp_div gmp_divexact gmp_fact gmp_gcd gmp_gcdext gmp_hamdist gmp_init gmp_intval gmp_invert gmp_jacobi gmp_legendre gmp_mod gmp_mul gmp_neg gmp_or gmp_perfect_square gmp_popcount gmp_pow gmp_powm gmp_prob_prime gmp_random gmp_scan0 gmp_scan1 gmp_setbit gmp_sign gmp_sqrt gmp_sqrtrem gmp_sqrtrm gmp_strval gmp_sub gmp_xor contained -syn keyword phpFunctions header headers_list headers_sent setcookie contained -syn keyword phpFunctions hw_api_attribute hwapi_hgcsp hw_api_content hw_api_object contained -syn keyword phpMethods key langdepvalue value values checkin checkout children mimetype read content copy dbstat dcstat dstanchors dstofsrcanchors count reason find ftstat hwstat identify info insert insertanchor insertcollection insertdocument link lock move assign attreditable count insert remove title value object objectbyanchor parents description type remove replace setcommitedversion srcanchors srcsofdst unlock user userlist contained -syn keyword phpFunctions hw_Array2Objrec hw_changeobject hw_Children hw_ChildrenObj hw_Close hw_Connect hw_connection_info hw_cp hw_Deleteobject hw_DocByAnchor hw_DocByAnchorObj hw_Document_Attributes hw_Document_BodyTag hw_Document_Content hw_Document_SetContent hw_Document_Size hw_dummy hw_EditText hw_Error hw_ErrorMsg hw_Free_Document hw_GetAnchors hw_GetAnchorsObj hw_GetAndLock hw_GetChildColl hw_GetChildCollObj hw_GetChildDocColl hw_GetChildDocCollObj hw_GetObject hw_GetObjectByQuery hw_GetObjectByQueryColl hw_GetObjectByQueryCollObj hw_GetObjectByQueryObj hw_GetParents hw_GetParentsObj hw_getrellink hw_GetRemote hw_getremotechildren hw_GetSrcByDestObj hw_GetText hw_getusername hw_Identify hw_InCollections hw_Info hw_InsColl hw_InsDoc hw_insertanchors hw_InsertDocument hw_InsertObject hw_mapid hw_Modifyobject hw_mv hw_New_Document hw_objrec2array hw_Output_Document hw_pConnect hw_PipeDocument hw_Root hw_setlinkroot hw_stat hw_Unlock hw_Who contained -syn keyword phpFunctions ibase_add_user ibase_affected_rows ibase_blob_add ibase_blob_cancel ibase_blob_close ibase_blob_create ibase_blob_echo ibase_blob_get ibase_blob_import ibase_blob_info ibase_blob_open ibase_close ibase_commit_ret ibase_commit ibase_connect ibase_delete_user ibase_drop_db ibase_errcode ibase_errmsg ibase_execute ibase_fetch_assoc ibase_fetch_object ibase_fetch_row ibase_field_info ibase_free_event_handler ibase_free_query ibase_free_result ibase_gen_id ibase_modify_user ibase_name_result ibase_num_fields ibase_num_params ibase_param_info ibase_pconnect ibase_prepare ibase_query ibase_rollback_ret ibase_rollback ibase_set_event_handler ibase_timefmt ibase_trans ibase_wait_event contained -syn keyword phpFunctions iconv_get_encoding iconv_mime_decode_headers iconv_mime_decode iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr iconv ob_iconv_handler contained -syn keyword phpFunctions ifx_affected_rows ifx_blobinfile_mode ifx_byteasvarchar ifx_close ifx_connect ifx_copy_blob ifx_create_blob ifx_create_char ifx_do ifx_error ifx_errormsg ifx_fetch_row ifx_fieldproperties ifx_fieldtypes ifx_free_blob ifx_free_char ifx_free_result ifx_get_blob ifx_get_char ifx_getsqlca ifx_htmltbl_result ifx_nullformat ifx_num_fields ifx_num_rows ifx_pconnect ifx_prepare ifx_query ifx_textasvarchar ifx_update_blob ifx_update_char ifxus_close_slob ifxus_create_slob ifxus_free_slob ifxus_open_slob ifxus_read_slob ifxus_seek_slob ifxus_tell_slob ifxus_write_slob contained -syn keyword phpFunctions exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data contained -syn keyword phpFunctions imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct imap_check imap_clearflag_full imap_close imap_createmailbox imap_delete imap_deletemailbox imap_errors imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchstructure imap_get_quota imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers imap_last_error imap_list imap_listmailbox imap_listscan imap_listsubscribed imap_lsub imap_mail_compose imap_mail_copy imap_mail_move imap_mail imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open imap_ping imap_qprint imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers imap_rfc822_write_address imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode imap_utf7_encode imap_utf8 contained -syn keyword phpFunctions assert_options assert dl extension_loaded get_cfg_var get_current_user get_defined_constants get_extension_funcs get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_required_files getenv getlastmod getmygid getmyinode getmypid getmyuid getopt getrusage ini_alter ini_get_all ini_get ini_restore ini_set main memory_get_usage php_ini_scanned_files php_logo_guid php_sapi_name php_uname phpcredits phpinfo phpversion putenv restore_include_path set_include_path set_magic_quotes_runtime set_time_limit version_compare zend_logo_guid zend_version contained -syn keyword phpFunctions ingres_autocommit ingres_close ingres_commit ingres_connect ingres_fetch_array ingres_fetch_object ingres_fetch_row ingres_field_length ingres_field_name ingres_field_nullable ingres_field_precision ingres_field_scale ingres_field_type ingres_num_fields ingres_num_rows ingres_pconnect ingres_query ingres_rollback contained -syn keyword phpFunctions ircg_channel_mode ircg_disconnect ircg_fetch_error_msg ircg_get_username ircg_html_encode ircg_ignore_add ircg_ignore_del ircg_is_conn_alive ircg_join ircg_kick ircg_lookup_format_messages ircg_msg ircg_nick ircg_nickname_escape ircg_nickname_unescape ircg_notice ircg_part ircg_pconnect ircg_register_format_messages ircg_set_current ircg_set_file ircg_set_on_die ircg_topic ircg_whois contained -syn keyword phpFunctions java_last_exception_clear java_last_exception_get contained -syn keyword phpFunctions ldap_8859_to_t61 ldap_add ldap_bind ldap_close ldap_compare ldap_connect ldap_count_entries ldap_delete ldap_dn2ufn ldap_err2str ldap_errno ldap_error ldap_explode_dn ldap_first_attribute ldap_first_entry ldap_first_reference ldap_free_result ldap_get_attributes ldap_get_dn ldap_get_entries ldap_get_option ldap_get_values_len ldap_get_values ldap_list ldap_mod_add ldap_mod_del ldap_mod_replace ldap_modify ldap_next_attribute ldap_next_entry ldap_next_reference ldap_parse_reference ldap_parse_result ldap_read ldap_rename ldap_search ldap_set_option ldap_set_rebind_proc ldap_sort ldap_start_tls ldap_t61_to_8859 ldap_unbind contained -syn keyword phpFunctions lzf_compress lzf_decompress lzf_optimized_for contained -syn keyword phpFunctions ezmlm_hash mail contained -syn keyword phpFunctions mailparse_determine_best_xfer_encoding mailparse_msg_create mailparse_msg_extract_part_file mailparse_msg_extract_part mailparse_msg_free mailparse_msg_get_part_data mailparse_msg_get_part mailparse_msg_get_structure mailparse_msg_parse_file mailparse_msg_parse mailparse_rfc822_parse_addresses mailparse_stream_encode mailparse_uudecode_all contained -syn keyword phpFunctions abs acos acosh asin asinh atan2 atan atanh base_convert bindec ceil cos cosh decbin dechex decoct deg2rad exp expm1 floor fmod getrandmax hexdec hypot is_finite is_infinite is_nan lcg_value log10 log1p log max min mt_getrandmax mt_rand mt_srand octdec pi pow rad2deg rand round sin sinh sqrt srand tan tanh contained -syn keyword phpFunctions mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_ereg_match mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_get_info mb_http_input mb_http_output mb_internal_encoding mb_language mb_output_handler mb_parse_str mb_preferred_mime_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_strlen mb_strpos mb_strrpos mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr contained -syn keyword phpFunctions mcal_append_event mcal_close mcal_create_calendar mcal_date_compare mcal_date_valid mcal_day_of_week mcal_day_of_year mcal_days_in_month mcal_delete_calendar mcal_delete_event mcal_event_add_attribute mcal_event_init mcal_event_set_alarm mcal_event_set_category mcal_event_set_class mcal_event_set_description mcal_event_set_end mcal_event_set_recur_daily mcal_event_set_recur_monthly_mday mcal_event_set_recur_monthly_wday mcal_event_set_recur_none mcal_event_set_recur_weekly mcal_event_set_recur_yearly mcal_event_set_start mcal_event_set_title mcal_expunge mcal_fetch_current_stream_event mcal_fetch_event mcal_is_leap_year mcal_list_alarms mcal_list_events mcal_next_recurrence mcal_open mcal_popen mcal_rename_calendar mcal_reopen mcal_snooze mcal_store_event mcal_time_valid mcal_week_of_year contained -syn keyword phpFunctions mcrypt_cbc mcrypt_cfb mcrypt_create_iv mcrypt_decrypt mcrypt_ecb mcrypt_enc_get_algorithms_name mcrypt_enc_get_block_size mcrypt_enc_get_iv_size mcrypt_enc_get_key_size mcrypt_enc_get_modes_name mcrypt_enc_get_supported_key_sizes mcrypt_enc_is_block_algorithm_mode mcrypt_enc_is_block_algorithm mcrypt_enc_is_block_mode mcrypt_enc_self_test mcrypt_encrypt mcrypt_generic_deinit mcrypt_generic_end mcrypt_generic_init mcrypt_generic mcrypt_get_block_size mcrypt_get_cipher_name mcrypt_get_iv_size mcrypt_get_key_size mcrypt_list_algorithms mcrypt_list_modes mcrypt_module_close mcrypt_module_get_algo_block_size mcrypt_module_get_algo_key_size mcrypt_module_get_supported_key_sizes mcrypt_module_is_block_algorithm_mode mcrypt_module_is_block_algorithm mcrypt_module_is_block_mode mcrypt_module_open mcrypt_module_self_test mcrypt_ofb mdecrypt_generic contained -syn keyword phpFunctions mcve_adduser mcve_adduserarg mcve_bt mcve_checkstatus mcve_chkpwd mcve_chngpwd mcve_completeauthorizations mcve_connect mcve_connectionerror mcve_deleteresponse mcve_deletetrans mcve_deleteusersetup mcve_deluser mcve_destroyconn mcve_destroyengine mcve_disableuser mcve_edituser mcve_enableuser mcve_force mcve_getcell mcve_getcellbynum mcve_getcommadelimited mcve_getheader mcve_getuserarg mcve_getuserparam mcve_gft mcve_gl mcve_gut mcve_initconn mcve_initengine mcve_initusersetup mcve_iscommadelimited mcve_liststats mcve_listusers mcve_maxconntimeout mcve_monitor mcve_numcolumns mcve_numrows mcve_override mcve_parsecommadelimited mcve_ping mcve_preauth mcve_preauthcompletion mcve_qc mcve_responseparam mcve_return mcve_returncode mcve_returnstatus mcve_sale mcve_setblocking mcve_setdropfile mcve_setip mcve_setssl_files mcve_setssl mcve_settimeout mcve_settle mcve_text_avs mcve_text_code mcve_text_cv mcve_transactionauth mcve_transactionavs mcve_transactionbatch mcve_transactioncv mcve_transactionid mcve_transactionitem mcve_transactionssent mcve_transactiontext mcve_transinqueue mcve_transnew mcve_transparam mcve_transsend mcve_ub mcve_uwait mcve_verifyconnection mcve_verifysslcert mcve_void contained -syn keyword phpFunctions mhash_count mhash_get_block_size mhash_get_hash_name mhash_keygen_s2k mhash contained -syn keyword phpFunctions mime_content_type contained -syn keyword phpFunctions ming_setcubicthreshold ming_setscale ming_useswfversion SWFAction SWFBitmap swfbutton_keypress SWFbutton SWFDisplayItem SWFFill SWFFont SWFGradient SWFMorph SWFMovie SWFShape SWFSprite SWFText SWFTextField contained -syn keyword phpMethods getHeight getWidth addAction addShape setAction setdown setHit setOver setUp addColor move moveTo multColor remove Rotate rotateTo scale scaleTo setDepth setName setRatio skewX skewXTo skewY skewYTo moveTo rotateTo scaleTo skewXTo skewYTo getwidth addEntry getshape1 getshape2 add nextframe output remove save setbackground setdimension setframes setrate streammp3 addFill drawCurve drawCurveTo drawLine drawLineTo movePen movePenTo setLeftFill setLine setRightFill add nextframe remove setframes addString getWidth moveTo setColor setFont setHeight setSpacing addstring align setbounds setcolor setFont setHeight setindentation setLeftMargin setLineSpacing setMargins setname setrightMargin contained -syn keyword phpFunctions connection_aborted connection_status connection_timeout constant define defined die eval exit get_browser highlight_file highlight_string ignore_user_abort pack show_source sleep uniqid unpack usleep contained -syn keyword phpFunctions udm_add_search_limit udm_alloc_agent udm_api_version udm_cat_list udm_cat_path udm_check_charset udm_check_stored udm_clear_search_limits udm_close_stored udm_crc32 udm_errno udm_error udm_find udm_free_agent udm_free_ispell_data udm_free_res udm_get_doc_count udm_get_res_field udm_get_res_param udm_load_ispell_data udm_open_stored udm_set_agent_param contained -syn keyword phpFunctions msession_connect msession_count msession_create msession_destroy msession_disconnect msession_find msession_get_array msession_get msession_getdata msession_inc msession_list msession_listvar msession_lock msession_plugin msession_randstr msession_set_array msession_set msession_setdata msession_timeout msession_uniq msession_unlock contained -syn keyword phpFunctions msql_affected_rows msql_close msql_connect msql_create_db msql_createdb msql_data_seek msql_dbname msql_drop_db msql_dropdb msql_error msql_fetch_array msql_fetch_field msql_fetch_object msql_fetch_row msql_field_seek msql_fieldflags msql_fieldlen msql_fieldname msql_fieldtable msql_fieldtype msql_free_result msql_freeresult msql_list_dbs msql_list_fields msql_list_tables msql_listdbs msql_listfields msql_listtables msql_num_fields msql_num_rows msql_numfields msql_numrows msql_pconnect msql_query msql_regcase msql_result msql_select_db msql_selectdb msql_tablename msql contained -syn keyword phpFunctions mssql_bind mssql_close mssql_connect mssql_data_seek mssql_execute mssql_fetch_array mssql_fetch_assoc mssql_fetch_batch mssql_fetch_field mssql_fetch_object mssql_fetch_row mssql_field_length mssql_field_name mssql_field_seek mssql_field_type mssql_free_result mssql_free_statement mssql_get_last_message mssql_guid_string mssql_init mssql_min_error_severity mssql_min_message_severity mssql_next_result mssql_num_fields mssql_num_rows mssql_pconnect mssql_query mssql_result mssql_rows_affected mssql_select_db contained -syn keyword phpFunctions muscat_close muscat_get muscat_give muscat_setup_net muscat_setup contained -syn keyword phpFunctions mysql_affected_rows mysql_change_user mysql_client_encoding mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_name mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_free_result mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_num_fields mysql_num_rows mysql_pconnect mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_stat mysql_tablename mysql_thread_id mysql_unbuffered_query contained -syn keyword phpFunctions mysqli_affected_rows mysqli_autocommit mysqli_bind_param mysqli_bind_result mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect mysqli_data_seek mysqli_debug mysqli_disable_reads_from_master mysqli_disable_rpl_parse mysqli_dump_debug_info mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_errno mysqli_error mysqli_execute mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_fetch mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_client_info mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_master_query mysqli_num_fields mysqli_num_rows mysqli_options mysqli_param_count mysqli_ping mysqli_prepare_result mysqli_prepare mysqli_profiler mysqli_query mysqli_read_query_result mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reload mysqli_rollback mysqli_rpl_parse_enabled mysqli_rpl_probe mysqli_rpl_query_type mysqli_select_db mysqli_send_long_data mysqli_send_query mysqli_slave_query mysqli_ssl_set mysqli_stat mysqli_stmt_affected_rows mysqli_stmt_close mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_store_result mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count contained -syn keyword phpFunctions ncurses_addch ncurses_addchnstr ncurses_addchstr ncurses_addnstr ncurses_addstr ncurses_assume_default_colors ncurses_attroff ncurses_attron ncurses_attrset ncurses_baudrate ncurses_beep ncurses_bkgd ncurses_bkgdset ncurses_border ncurses_bottom_panel ncurses_can_change_color ncurses_cbreak ncurses_clear ncurses_clrtobot ncurses_clrtoeol ncurses_color_content ncurses_color_set ncurses_curs_set ncurses_def_prog_mode ncurses_def_shell_mode ncurses_define_key ncurses_del_panel ncurses_delay_output ncurses_delch ncurses_deleteln ncurses_delwin ncurses_doupdate ncurses_echo ncurses_echochar ncurses_end ncurses_erase ncurses_erasechar ncurses_filter ncurses_flash ncurses_flushinp ncurses_getch ncurses_getmaxyx ncurses_getmouse ncurses_getyx ncurses_halfdelay ncurses_has_colors ncurses_has_ic ncurses_has_il ncurses_has_key ncurses_hide_panel ncurses_hline ncurses_inch ncurses_init_color ncurses_init_pair ncurses_init ncurses_insch ncurses_insdelln ncurses_insertln ncurses_insstr ncurses_instr ncurses_isendwin ncurses_keyok ncurses_keypad ncurses_killchar ncurses_longname ncurses_meta ncurses_mouse_trafo ncurses_mouseinterval ncurses_mousemask ncurses_move_panel ncurses_move ncurses_mvaddch ncurses_mvaddchnstr ncurses_mvaddchstr ncurses_mvaddnstr ncurses_mvaddstr ncurses_mvcur ncurses_mvdelch ncurses_mvgetch ncurses_mvhline ncurses_mvinch ncurses_mvvline ncurses_mvwaddstr ncurses_napms ncurses_new_panel ncurses_newpad ncurses_newwin ncurses_nl ncurses_nocbreak ncurses_noecho ncurses_nonl ncurses_noqiflush ncurses_noraw ncurses_pair_content ncurses_panel_above ncurses_panel_below ncurses_panel_window ncurses_pnoutrefresh ncurses_prefresh ncurses_putp ncurses_qiflush ncurses_raw ncurses_refresh ncurses_replace_panel ncurses_reset_prog_mode ncurses_reset_shell_mode ncurses_resetty ncurses_savetty ncurses_scr_dump ncurses_scr_init ncurses_scr_restore ncurses_scr_set ncurses_scrl ncurses_show_panel ncurses_slk_attr ncurses_slk_attroff ncurses_slk_attron ncurses_slk_attrset ncurses_slk_clear ncurses_slk_color ncurses_slk_init ncurses_slk_noutrefresh ncurses_slk_refresh ncurses_slk_restore ncurses_slk_set ncurses_slk_touch ncurses_standend ncurses_standout ncurses_start_color ncurses_termattrs ncurses_termname ncurses_timeout ncurses_top_panel ncurses_typeahead ncurses_ungetch ncurses_ungetmouse ncurses_update_panels ncurses_use_default_colors ncurses_use_env ncurses_use_extended_names ncurses_vidattr ncurses_vline ncurses_waddch ncurses_waddstr ncurses_wattroff ncurses_wattron ncurses_wattrset ncurses_wborder ncurses_wclear ncurses_wcolor_set ncurses_werase ncurses_wgetch ncurses_whline ncurses_wmouse_trafo ncurses_wmove ncurses_wnoutrefresh ncurses_wrefresh ncurses_wstandend ncurses_wstandout ncurses_wvline contained -syn keyword phpFunctions checkdnsrr closelog debugger_off debugger_on define_syslog_variables dns_check_record dns_get_mx dns_get_record fsockopen gethostbyaddr gethostbyname gethostbynamel getmxrr getprotobyname getprotobynumber getservbyname getservbyport ip2long long2ip openlog pfsockopen socket_get_status socket_set_blocking socket_set_timeout syslog contained -syn keyword phpFunctions yp_all yp_cat yp_err_string yp_errno yp_first yp_get_default_domain yp_master yp_match yp_next yp_order contained -syn keyword phpFunctions notes_body notes_copy_db notes_create_db notes_create_note notes_drop_db notes_find_note notes_header_info notes_list_msgs notes_mark_read notes_mark_unread notes_nav_create notes_search notes_unread notes_version contained -syn keyword phpFunctions nsapi_request_headers nsapi_response_headers nsapi_virtual contained -syn keyword phpFunctions aggregate_info aggregate_methods_by_list aggregate_methods_by_regexp aggregate_methods aggregate_properties_by_list aggregate_properties_by_regexp aggregate_properties aggregate aggregation_info deaggregate contained -syn keyword phpFunctions ocibindbyname ocicancel ocicloselob ocicollappend ocicollassign ocicollassignelem ocicollgetelem ocicollmax ocicollsize ocicolltrim ocicolumnisnull ocicolumnname ocicolumnprecision ocicolumnscale ocicolumnsize ocicolumntype ocicolumntyperaw ocicommit ocidefinebyname ocierror ociexecute ocifetch ocifetchinto ocifetchstatement ocifreecollection ocifreecursor ocifreedesc ocifreestatement ociinternaldebug ociloadlob ocilogoff ocilogon ocinewcollection ocinewcursor ocinewdescriptor ocinlogon ocinumcols ociparse ociplogon ociresult ocirollback ocirowcount ocisavelob ocisavelobfile ociserverversion ocisetprefetch ocistatementtype ociwritelobtofile ociwritetemporarylob contained -syn keyword phpFunctions odbc_autocommit odbc_binmode odbc_close_all odbc_close odbc_columnprivileges odbc_columns odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns odbc_procedures odbc_result_all odbc_result odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics odbc_tableprivileges odbc_tables contained -syn keyword phpFunctions openssl_csr_export_to_file openssl_csr_export openssl_csr_new openssl_csr_sign openssl_error_string openssl_free_key openssl_get_privatekey openssl_get_publickey openssl_open openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_seal openssl_sign openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_free openssl_x509_parse openssl_x509_read contained -syn keyword phpFunctions ora_bind ora_close ora_columnname ora_columnsize ora_columntype ora_commit ora_commitoff ora_commiton ora_do ora_error ora_errorcode ora_exec ora_fetch_into ora_fetch ora_getcolumn ora_logoff ora_logon ora_numcols ora_numrows ora_open ora_parse ora_plogon ora_rollback contained -syn keyword phpFunctions flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars contained -syn keyword phpFunctions overload contained -syn keyword phpFunctions ovrimos_close ovrimos_commit ovrimos_connect ovrimos_cursor ovrimos_exec ovrimos_execute ovrimos_fetch_into ovrimos_fetch_row ovrimos_field_len ovrimos_field_name ovrimos_field_num ovrimos_field_type ovrimos_free_result ovrimos_longreadlen ovrimos_num_fields ovrimos_num_rows ovrimos_prepare ovrimos_result_all ovrimos_result ovrimos_rollback contained -syn keyword phpFunctions pcntl_exec pcntl_fork pcntl_signal pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig contained -syn keyword phpFunctions preg_grep preg_match_all preg_match preg_quote preg_replace_callback preg_replace preg_split contained -syn keyword phpFunctions pdf_add_annotation pdf_add_bookmark pdf_add_launchlink pdf_add_locallink pdf_add_note pdf_add_outline pdf_add_pdflink pdf_add_thumbnail pdf_add_weblink pdf_arc pdf_arcn pdf_attach_file pdf_begin_page pdf_begin_pattern pdf_begin_template pdf_circle pdf_clip pdf_close_image pdf_close_pdi_page pdf_close_pdi pdf_close pdf_closepath_fill_stroke pdf_closepath_stroke pdf_closepath pdf_concat pdf_continue_text pdf_curveto pdf_delete pdf_end_page pdf_end_pattern pdf_end_template pdf_endpath pdf_fill_stroke pdf_fill pdf_findfont pdf_get_buffer pdf_get_font pdf_get_fontname pdf_get_fontsize pdf_get_image_height pdf_get_image_width pdf_get_majorversion pdf_get_minorversion pdf_get_parameter pdf_get_pdi_parameter pdf_get_pdi_value pdf_get_value pdf_initgraphics pdf_lineto pdf_makespotcolor pdf_moveto pdf_new pdf_open_CCITT pdf_open_file pdf_open_gif pdf_open_image_file pdf_open_image pdf_open_jpeg pdf_open_memory_image pdf_open_pdi_page pdf_open_pdi pdf_open_png pdf_open_tiff pdf_open pdf_place_image pdf_place_pdi_page pdf_rect pdf_restore pdf_rotate pdf_save pdf_scale pdf_set_border_color pdf_set_border_dash pdf_set_border_style pdf_set_char_spacing pdf_set_duration pdf_set_font pdf_set_horiz_scaling pdf_set_info_author pdf_set_info_creator pdf_set_info_keywords pdf_set_info_subject pdf_set_info_title pdf_set_info pdf_set_leading pdf_set_parameter pdf_set_text_matrix pdf_set_text_pos pdf_set_text_rendering pdf_set_text_rise pdf_set_value pdf_set_word_spacing pdf_setcolor pdf_setdash pdf_setflat pdf_setfont pdf_setgray_fill pdf_setgray_stroke pdf_setgray pdf_setlinecap pdf_setlinejoin pdf_setlinewidth pdf_setmatrix pdf_setmiterlimit pdf_setpolydash pdf_setrgbcolor_fill pdf_setrgbcolor_stroke pdf_setrgbcolor pdf_show_boxed pdf_show_xy pdf_show pdf_skew pdf_stringwidth pdf_stroke pdf_translate contained -syn keyword phpFunctions pfpro_cleanup pfpro_init pfpro_process_raw pfpro_process pfpro_version contained -syn keyword phpFunctions pg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_string pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_type pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_pconnect pg_ping pg_port pg_put_line pg_query pg_result_error pg_result_seek pg_result_status pg_select pg_send_query pg_set_client_encoding pg_trace pg_tty pg_unescape_bytea pg_untrace pg_update contained -syn keyword phpFunctions posix_ctermid posix_get_last_error posix_getcwd posix_getegid posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid posix_isatty posix_kill posix_mkfifo posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid posix_setuid posix_strerror posix_times posix_ttyname posix_uname contained -syn keyword phpFunctions printer_abort printer_close printer_create_brush printer_create_dc printer_create_font printer_create_pen printer_delete_brush printer_delete_dc printer_delete_font printer_delete_pen printer_draw_bmp printer_draw_chord printer_draw_elipse printer_draw_line printer_draw_pie printer_draw_rectangle printer_draw_roundrect printer_draw_text printer_end_doc printer_end_page printer_get_option printer_list printer_logical_fontheight printer_open printer_select_brush printer_select_font printer_select_pen printer_set_option printer_start_doc printer_start_page printer_write contained -syn keyword phpFunctions pspell_add_to_personal pspell_add_to_session pspell_check pspell_clear_session pspell_config_create pspell_config_ignore pspell_config_mode pspell_config_personal pspell_config_repl pspell_config_runtogether pspell_config_save_repl pspell_new_config pspell_new_personal pspell_new pspell_save_wordlist pspell_store_replacement pspell_suggest contained -syn keyword phpFunctions qdom_error qdom_tree contained -syn keyword phpFunctions readline_add_history readline_clear_history readline_completion_function readline_info readline_list_history readline_read_history readline_write_history readline contained -syn keyword phpFunctions recode_file recode_string recode contained -syn keyword phpFunctions ereg_replace ereg eregi_replace eregi split spliti sql_regcase contained -syn keyword phpFunctions ftok msg_get_queue msg_receive msg_remove_queue msg_send msg_set_queue msg_stat_queue sem_acquire sem_get sem_release sem_remove shm_attach shm_detach shm_get_var shm_put_var shm_remove_var shm_remove contained -syn keyword phpFunctions sesam_affected_rows sesam_commit sesam_connect sesam_diagnostic sesam_disconnect sesam_errormsg sesam_execimm sesam_fetch_array sesam_fetch_result sesam_fetch_row sesam_field_array sesam_field_name sesam_free_result sesam_num_fields sesam_query sesam_rollback sesam_seek_row sesam_settransaction contained -syn keyword phpFunctions session_cache_expire session_cache_limiter session_decode session_destroy session_encode session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id session_register session_save_path session_set_cookie_params session_set_save_handler session_start session_unregister session_unset session_write_close contained -syn keyword phpFunctions shmop_close shmop_delete shmop_open shmop_read shmop_size shmop_write contained -syn keyword phpFunctions snmp_get_quick_print snmp_set_quick_print snmpget snmprealwalk snmpset snmpwalk snmpwalkoid contained -syn keyword phpFunctions socket_accept socket_bind socket_clear_error socket_close socket_connect socket_create_listen socket_create_pair socket_create socket_get_option socket_getpeername socket_getsockname socket_iovec_add socket_iovec_alloc socket_iovec_delete socket_iovec_fetch socket_iovec_free socket_iovec_set socket_last_error socket_listen socket_read socket_readv socket_recv socket_recvfrom socket_recvmsg socket_select socket_send socket_sendmsg socket_sendto socket_set_block socket_set_nonblock socket_set_option socket_shutdown socket_strerror socket_write socket_writev contained -syn keyword phpFunctions sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_fetch_array sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_query sqlite_rewind sqlite_seek sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query contained -syn keyword phpFunctions stream_context_create stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_filter_append stream_filter_prepend stream_filter_register stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_get_name stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_wrapper_register contained -syn keyword phpFunctions addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string count_chars crc32 crypt explode fprintf get_html_translation_table hebrev hebrevc html_entity_decode htmlentities htmlspecialchars implode join levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br number_format ord parse_str print printf quoted_printable_decode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_compare substr_count substr_replace substr trim ucfirst ucwords vprintf vsprintf wordwrap contained -syn keyword phpFunctions swf_actiongeturl swf_actiongotoframe swf_actiongotolabel swf_actionnextframe swf_actionplay swf_actionprevframe swf_actionsettarget swf_actionstop swf_actiontogglequality swf_actionwaitforframe swf_addbuttonrecord swf_addcolor swf_closefile swf_definebitmap swf_definefont swf_defineline swf_definepoly swf_definerect swf_definetext swf_endbutton swf_enddoaction swf_endshape swf_endsymbol swf_fontsize swf_fontslant swf_fonttracking swf_getbitmapinfo swf_getfontinfo swf_getframe swf_labelframe swf_lookat swf_modifyobject swf_mulcolor swf_nextid swf_oncondition swf_openfile swf_ortho2 swf_ortho swf_perspective swf_placeobject swf_polarview swf_popmatrix swf_posround swf_pushmatrix swf_removeobject swf_rotate swf_scale swf_setfont swf_setframe swf_shapearc swf_shapecurveto3 swf_shapecurveto swf_shapefillbitmapclip swf_shapefillbitmaptile swf_shapefilloff swf_shapefillsolid swf_shapelinesolid swf_shapelineto swf_shapemoveto swf_showframe swf_startbutton swf_startdoaction swf_startshape swf_startsymbol swf_textwidth swf_translate swf_viewport contained -syn keyword phpFunctions sybase_affected_rows sybase_close sybase_connect sybase_data_seek sybase_deadlock_retry_count sybase_fetch_array sybase_fetch_assoc sybase_fetch_field sybase_fetch_object sybase_fetch_row sybase_field_seek sybase_free_result sybase_get_last_message sybase_min_client_severity sybase_min_error_severity sybase_min_message_severity sybase_min_server_severity sybase_num_fields sybase_num_rows sybase_pconnect sybase_query sybase_result sybase_select_db sybase_set_message_handler sybase_unbuffered_query contained -syn keyword phpFunctions tidy_access_count tidy_clean_repair tidy_config_count tidy_diagnose tidy_error_count tidy_get_body tidy_get_config tidy_get_error_buffer tidy_get_head tidy_get_html_ver tidy_get_html tidy_get_output tidy_get_release tidy_get_root tidy_get_status tidy_getopt tidy_is_xhtml tidy_load_config tidy_parse_file tidy_parse_string tidy_repair_file tidy_repair_string tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count contained -syn keyword phpMethods attributes children get_attr get_nodes has_children has_siblings is_asp is_comment is_html is_jsp is_jste is_text is_xhtml is_xml next prev tidy_node contained -syn keyword phpFunctions token_get_all token_name contained -syn keyword phpFunctions base64_decode base64_encode get_meta_tags http_build_query parse_url rawurldecode rawurlencode urldecode urlencode contained -syn keyword phpFunctions doubleval empty floatval get_defined_vars get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export contained -syn keyword phpFunctions vpopmail_add_alias_domain_ex vpopmail_add_alias_domain vpopmail_add_domain_ex vpopmail_add_domain vpopmail_add_user vpopmail_alias_add vpopmail_alias_del_domain vpopmail_alias_del vpopmail_alias_get_all vpopmail_alias_get vpopmail_auth_user vpopmail_del_domain_ex vpopmail_del_domain vpopmail_del_user vpopmail_error vpopmail_passwd vpopmail_set_user_quota contained -syn keyword phpFunctions w32api_deftype w32api_init_dtype w32api_invoke_function w32api_register_function w32api_set_call_method contained -syn keyword phpFunctions wddx_add_vars wddx_deserialize wddx_packet_end wddx_packet_start wddx_serialize_value wddx_serialize_vars contained -syn keyword phpFunctions utf8_decode utf8_encode xml_error_string xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse_into_struct xml_parse xml_parser_create_ns xml_parser_create xml_parser_free xml_parser_get_option xml_parser_set_option xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler contained -syn keyword phpFunctions xmlrpc_decode_request xmlrpc_decode xmlrpc_encode_request xmlrpc_encode xmlrpc_get_type xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback xmlrpc_server_register_method xmlrpc_set_type contained -syn keyword phpFunctions xslt_create xslt_errno xslt_error xslt_free xslt_output_process xslt_set_base xslt_set_encoding xslt_set_error_handler xslt_set_log xslt_set_sax_handler xslt_set_sax_handlers xslt_set_scheme_handler xslt_set_scheme_handlers contained -syn keyword phpFunctions yaz_addinfo yaz_ccl_conf yaz_ccl_parse yaz_close yaz_connect yaz_database yaz_element yaz_errno yaz_error yaz_es_result yaz_get_option yaz_hits yaz_itemorder yaz_present yaz_range yaz_record yaz_scan_result yaz_scan yaz_schema yaz_search yaz_set_option yaz_sort yaz_syntax yaz_wait contained -syn keyword phpFunctions zip_close zip_entry_close zip_entry_compressedsize zip_entry_compressionmethod zip_entry_filesize zip_entry_name zip_entry_open zip_entry_read zip_open zip_read contained -syn keyword phpFunctions gzclose gzcompress gzdeflate gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress gzwrite readgzfile zlib_get_coding_type contained - -if exists( "php_baselib" ) - syn keyword phpMethods query next_record num_rows affected_rows nf f p np num_fields haltmsg seek link_id query_id metadata table_names nextid connect halt free register unregister is_registered delete url purl self_url pself_url hidden_session add_query padd_query reimport_get_vars reimport_post_vars reimport_cookie_vars set_container set_tokenname release_token put_headers get_id get_id put_id freeze thaw gc reimport_any_vars start url purl login_if is_authenticated auth_preauth auth_loginform auth_validatelogin auth_refreshlogin auth_registerform auth_doregister start check have_perm permsum perm_invalid contained - syn keyword phpFunctions page_open page_close sess_load sess_save contained -endif - -" Conditional -syn keyword phpConditional declare else enddeclare endswitch elseif endif if switch contained - -" Repeat -syn keyword phpRepeat as do endfor endforeach endwhile for foreach while contained - -" Repeat -syn keyword phpLabel case default switch contained - -" Statement -syn keyword phpStatement return break continue exit contained - -" Keyword -syn keyword phpKeyword var const contained - -" Type -syn keyword phpType bool[ean] int[eger] real double float string array object NULL contained - -" Structure -syn keyword phpStructure extends implements instanceof parent self contained - -" Operator -syn match phpOperator "[-=+%^&|*!.~?:]" contained display -syn match phpOperator "[-+*/%^&|.]=" contained display -syn match phpOperator "/[^*/]"me=e-1 contained display -syn match phpOperator "\$" contained display -syn match phpOperator "&&\|\" contained display -syn match phpOperator "||\|\" contained display -syn match phpRelation "[!=<>]=" contained display -syn match phpRelation "[<>]" contained display -syn match phpMemberSelector "->" contained display -syn match phpVarSelector "\$" contained display - -" Identifier -syn match phpIdentifier "$\h\w*" contained contains=phpEnvVar,phpIntVar,phpVarSelector display -syn match phpIdentifierSimply "${\h\w*}" contains=phpOperator,phpParent contained display -syn region phpIdentifierComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend -syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained - -" Methoden -syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display - -" Include -syn keyword phpInclude include require include_once require_once contained - -" Peter Hodge - added 'clone' keyword -" Define -syn keyword phpDefine new clone contained - -" Boolean -syn keyword phpBoolean true false contained - -" Number -syn match phpNumber "-\=\<\d\+\>" contained display -syn match phpNumber "\<0x\x\{1,8}\>" contained display - -" Float -syn match phpFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" contained display - -" SpecialChar -syn match phpSpecialChar "\\[abcfnrtyv\\]" contained display -syn match phpSpecialChar "\\\d\{3}" contained contains=phpOctalError display -syn match phpSpecialChar "\\x\x\{2}" contained display - -" Error -syn match phpOctalError "[89]" contained display -if exists("php_parent_error_close") - syn match phpParentError "[)\]}]" contained display -endif - -" Todo -syn keyword phpTodo todo fixme xxx contained - -" Comment -if exists("php_parent_error_open") - syn region phpComment start="/\*" end="\*/" contained contains=phpTodo -else - syn region phpComment start="/\*" end="\*/" contained contains=phpTodo extend -endif -if version >= 600 - syn match phpComment "#.\{-}\(?>\|$\)\@=" contained contains=phpTodo - syn match phpComment "//.\{-}\(?>\|$\)\@=" contained contains=phpTodo -else - syn match phpComment "#.\{-}$" contained contains=phpTodo - syn match phpComment "#.\{-}?>"me=e-2 contained contains=phpTodo - syn match phpComment "//.\{-}$" contained contains=phpTodo - syn match phpComment "//.\{-}?>"me=e-2 contained contains=phpTodo -endif - -" String -if exists("php_parent_error_open") - syn region phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained keepend - syn region phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained keepend - syn region phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings contained keepend -else - syn region phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained extend keepend - syn region phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained extend keepend - syn region phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings contained keepend extend -endif - -" HereDoc -if version >= 600 - syn case match - syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\I\i*\)$" end="^\z1\(;\=$\)\@=" contained contains=phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend -" including HTML,JavaScript,SQL even if not enabled via options - syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend - syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend - syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend - syn case ignore -endif - -" Parent -if exists("php_parent_error_close") || exists("php_parent_error_open") - syn match phpParent "[{}]" contained - syn region phpParent matchgroup=Delimiter start="(" end=")" contained contains=@phpClInside transparent - syn region phpParent matchgroup=Delimiter start="\[" end="\]" contained contains=@phpClInside transparent - if !exists("php_parent_error_close") - syn match phpParent "[\])]" contained - endif -else - syn match phpParent "[({[\]})]" contained -endif - -syn cluster phpClConst contains=phpFunctions,phpIdentifier,phpConditional,phpRepeat,phpStatement,phpOperator,phpRelation,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpFloat,phpKeyword,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstant,phpCoreConstant,phpException -syn cluster phpClInside contains=@phpClConst,phpComment,phpLabel,phpParent,phpParentError,phpInclude,phpHereDoc -syn cluster phpClFunction contains=@phpClInside,phpDefine,phpParentError,phpStorageClass -syn cluster phpClTop contains=@phpClFunction,phpFoldFunction,phpFoldClass,phpFoldInterface,phpFoldTry,phpFoldCatch - -" Php Region -if exists("php_parent_error_open") - if exists("php_noShortTags") - syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop - else - syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop - endif - syn region phpRegionSc matchgroup=Delimiter start=++ contains=@phpClTop - if exists("php_asp_tags") - syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop - endif -else - if exists("php_noShortTags") - syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop keepend - else - syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop keepend - endif - syn region phpRegionSc matchgroup=Delimiter start=++ contains=@phpClTop keepend - if exists("php_asp_tags") - syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop keepend - endif -endif - -" Fold -if exists("php_folding") && php_folding==1 -" match one line constructs here and skip them at folding - syn keyword phpSCKeyword abstract final private protected public static contained - syn keyword phpFCKeyword function contained - syn keyword phpStorageClass global contained - syn match phpDefine "\(\s\|^\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\(\s\+.*[;}]\)\@=" contained contains=phpSCKeyword - syn match phpStructure "\(\s\|^\)\(abstract\s\+\|final\s\+\)*class\(\s\+.*}\)\@=" contained - syn match phpStructure "\(\s\|^\)interface\(\s\+.*}\)\@=" contained - syn match phpException "\(\s\|^\)try\(\s\+.*}\)\@=" contained - syn match phpException "\(\s\|^\)catch\(\s\+.*}\)\@=" contained - - set foldmethod=syntax - syn region phpFoldHtmlInside matchgroup=Delimiter start="?>" end="" end="\h\w*" contained contains=phpMethods,phpMemberSelector display containedin=phpStringDouble - -" highlight constant E_STRICT -syntax case match -syntax keyword phpCoreConstant E_STRICT contained -syntax case ignore - -" different syntax highlighting for 'echo', 'print', 'switch', 'die' and 'list' keywords -" to better indicate what they are. -syntax keyword phpDefine echo print contained -syntax keyword phpStructure list contained -syntax keyword phpConditional switch contained -syntax keyword phpStatement die contained - -" Highlighting for PHP5's user-definable magic class methods -syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier - \ __construct __destruct __call __toString __sleep __wakeup __set __get __unset __isset __clone __set_state -" Highlighting for __autoload slightly different from line above -syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar - \ __autoload -highlight link phpSpecialFunction phpOperator - -" Highlighting for PHP5's built-in classes -" - built-in classes harvested from get_declared_classes() in 5.1.4 -syntax keyword phpClasses containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar - \ stdClass __PHP_Incomplete_Class php_user_filter Directory ArrayObject - \ Exception ErrorException LogicException BadFunctionCallException BadMethodCallException DomainException - \ RecursiveIteratorIterator IteratorIterator FilterIterator RecursiveFilterIterator ParentIterator LimitIterator - \ CachingIterator RecursiveCachingIterator NoRewindIterator AppendIterator InfiniteIterator EmptyIterator - \ ArrayIterator RecursiveArrayIterator DirectoryIterator RecursiveDirectoryIterator - \ InvalidArgumentException LengthException OutOfRangeException RuntimeException OutOfBoundsException - \ OverflowException RangeException UnderflowException UnexpectedValueException - \ PDO PDOException PDOStatement PDORow - \ Reflection ReflectionFunction ReflectionParameter ReflectionMethod ReflectionClass - \ ReflectionObject ReflectionProperty ReflectionExtension ReflectionException - \ SplFileInfo SplFileObject SplTempFileObject SplObjectStorage - \ XMLWriter LibXMLError XMLReader SimpleXMLElement SimpleXMLIterator - \ DOMException DOMStringList DOMNameList DOMDomError DOMErrorHandler - \ DOMImplementation DOMImplementationList DOMImplementationSource - \ DOMNode DOMNameSpaceNode DOMDocumentFragment DOMDocument DOMNodeList DOMNamedNodeMap - \ DOMCharacterData DOMAttr DOMElement DOMText DOMComment DOMTypeinfo DOMUserDataHandler - \ DOMLocator DOMConfiguration DOMCdataSection DOMDocumentType DOMNotation DOMEntity - \ DOMEntityReference DOMProcessingInstruction DOMStringExtend DOMXPath -highlight link phpClasses phpFunctions - -" Highlighting for PHP5's built-in interfaces -" - built-in classes harvested from get_declared_interfaces() in 5.1.4 -syntax keyword phpInterfaces containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar - \ Iterator IteratorAggregate RecursiveIterator OuterIterator SeekableIterator - \ Traversable ArrayAccess Serializable Countable SplObserver SplSubject Reflector -highlight link phpInterfaces phpConstant - -" option defaults: -if ! exists('php_special_functions') - let php_special_functions = 1 -endif -if ! exists('php_alt_comparisons') - let php_alt_comparisons = 1 -endif -if ! exists('php_alt_assignByReference') - let php_alt_assignByReference = 1 -endif - -if php_special_functions - " Highlighting for PHP built-in functions which exhibit special behaviours - " - isset()/unset()/empty() are not real functions. - " - compact()/extract() directly manipulate variables in the local scope where - " regular functions would not be able to. - " - eval() is the token 'make_your_code_twice_as_complex()' function for PHP. - " - user_error()/trigger_error() can be overloaded by set_error_handler and also - " have the capacity to terminate your script when type is E_USER_ERROR. - syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle - \ user_error trigger_error isset unset eval extract compact empty -endif - -if php_alt_assignByReference - " special highlighting for '=&' operator - syntax match phpAssignByRef /=\s*&/ containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle - highlight link phpAssignByRef Type -endif - -if php_alt_comparisons - " highlight comparison operators differently - syntax match phpComparison "\v[=!]\=\=?" contained containedin=phpRegion - syntax match phpComparison "\v[=<>-]@]\=?[<>]@!" contained containedin=phpRegion - - " highlight the 'instanceof' operator as a comparison operator rather than a structure - syntax case ignore - syntax keyword phpComparison instanceof contained containedin=phpRegion - - hi link phpComparison Statement -endif - -" ================================================================ - -" Sync -if php_sync_method==-1 - if exists("php_noShortTags") - syn sync match phpRegionSync grouphere phpRegion "^\s*\s*$+ - if exists("php_asp_tags") - syn sync match phpRegionSync grouphere phpRegionAsp "^\s*<%\(=\)\=\s*$" - endif - syn sync match phpRegionSync grouphere NONE "^\s*?>\s*$" - syn sync match phpRegionSync grouphere NONE "^\s*%>\s*$" - syn sync match phpRegionSync grouphere phpRegion "function\s.*(.*\$" - "syn sync match phpRegionSync grouphere NONE "/\i*>\s*$" -elseif php_sync_method>0 - exec "syn sync minlines=" . php_sync_method -else - exec "syn sync fromstart" -endif - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_php_syn_inits") - if version < 508 - let did_php_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink phpConstant Constant - HiLink phpCoreConstant Constant - HiLink phpComment Comment - HiLink phpException Exception - HiLink phpBoolean Boolean - HiLink phpStorageClass StorageClass - HiLink phpSCKeyword StorageClass - HiLink phpFCKeyword Define - HiLink phpStructure Structure - HiLink phpStringSingle String - HiLink phpStringDouble String - HiLink phpBacktick String - HiLink phpNumber Number - HiLink phpFloat Float - HiLink phpMethods Function - HiLink phpFunctions Function - HiLink phpBaselib Function - HiLink phpRepeat Repeat - HiLink phpConditional Conditional - HiLink phpLabel Label - HiLink phpStatement Statement - HiLink phpKeyword Statement - HiLink phpType Type - HiLink phpInclude Include - HiLink phpDefine Define - HiLink phpSpecialChar SpecialChar - HiLink phpParent Delimiter - HiLink phpIdentifierConst Delimiter - HiLink phpParentError Error - HiLink phpOctalError Error - HiLink phpTodo Todo - HiLink phpMemberSelector Structure - if exists("php_oldStyle") - hi phpIntVar guifg=Red ctermfg=DarkRed - hi phpEnvVar guifg=Red ctermfg=DarkRed - hi phpOperator guifg=SeaGreen ctermfg=DarkGreen - hi phpVarSelector guifg=SeaGreen ctermfg=DarkGreen - hi phpRelation guifg=SeaGreen ctermfg=DarkGreen - hi phpIdentifier guifg=DarkGray ctermfg=Brown - hi phpIdentifierSimply guifg=DarkGray ctermfg=Brown - else - HiLink phpIntVar Identifier - HiLink phpEnvVar Identifier - HiLink phpOperator Operator - HiLink phpVarSelector Operator - HiLink phpRelation Operator - HiLink phpIdentifier Identifier - HiLink phpIdentifierSimply Identifier - endif - - delcommand HiLink -endif - -let b:current_syntax = "php" - -if main_syntax == 'php' - unlet main_syntax -endif - -" vim: ts=8 sts=2 sw=2 expandtab diff --git a/share/vim/vim73/syntax/pine.vim b/share/vim/vim73/syntax/pine.vim deleted file mode 100644 index 749535e1..00000000 --- a/share/vim/vim73/syntax/pine.vim +++ /dev/null @@ -1,372 +0,0 @@ -" Vim syntax file -" Language: Pine (email program) run commands -" Maintainer: David Pascoe -" Last Change: Thu Feb 27 10:18:48 WST 2003, update for pine 4.53 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if version >= 600 - setlocal iskeyword=@,48-57,_,128-167,224-235,-, -else - set iskeyword=@,48-57,_,128-167,224-235,-, -endif - -syn keyword pineConfig addrbook-sort-rule -syn keyword pineConfig address-book -syn keyword pineConfig addressbook-formats -syn keyword pineConfig alt-addresses -syn keyword pineConfig bugs-additional-data -syn keyword pineConfig bugs-address -syn keyword pineConfig bugs-fullname -syn keyword pineConfig character-set -syn keyword pineConfig color-style -syn keyword pineConfig compose-mime -syn keyword pineConfig composer-wrap-column -syn keyword pineConfig current-indexline-style -syn keyword pineConfig cursor-style -syn keyword pineConfig customized-hdrs -syn keyword pineConfig debug-memory -syn keyword pineConfig default-composer-hdrs -syn keyword pineConfig default-fcc -syn keyword pineConfig default-saved-msg-folder -syn keyword pineConfig disable-these-authenticators -syn keyword pineConfig disable-these-drivers -syn keyword pineConfig display-filters -syn keyword pineConfig download-command -syn keyword pineConfig download-command-prefix -syn keyword pineConfig editor -syn keyword pineConfig elm-style-save -syn keyword pineConfig empty-header-message -syn keyword pineConfig fcc-name-rule -syn keyword pineConfig feature-level -syn keyword pineConfig feature-list -syn keyword pineConfig file-directory -syn keyword pineConfig folder-collections -syn keyword pineConfig folder-extension -syn keyword pineConfig folder-sort-rule -syn keyword pineConfig font-char-set -syn keyword pineConfig font-name -syn keyword pineConfig font-size -syn keyword pineConfig font-style -syn keyword pineConfig forced-abook-entry -syn keyword pineConfig form-letter-folder -syn keyword pineConfig global-address-book -syn keyword pineConfig goto-default-rule -syn keyword pineConfig header-in-reply -syn keyword pineConfig image-viewer -syn keyword pineConfig inbox-path -syn keyword pineConfig incoming-archive-folders -syn keyword pineConfig incoming-folders -syn keyword pineConfig incoming-startup-rule -syn keyword pineConfig index-answered-background-color -syn keyword pineConfig index-answered-foreground-color -syn keyword pineConfig index-deleted-background-color -syn keyword pineConfig index-deleted-foreground-color -syn keyword pineConfig index-format -syn keyword pineConfig index-important-background-color -syn keyword pineConfig index-important-foreground-color -syn keyword pineConfig index-new-background-color -syn keyword pineConfig index-new-foreground-color -syn keyword pineConfig index-recent-background-color -syn keyword pineConfig index-recent-foreground-color -syn keyword pineConfig index-to-me-background-color -syn keyword pineConfig index-to-me-foreground-color -syn keyword pineConfig index-unseen-background-color -syn keyword pineConfig index-unseen-foreground-color -syn keyword pineConfig initial-keystroke-list -syn keyword pineConfig kblock-passwd-count -syn keyword pineConfig keylabel-background-color -syn keyword pineConfig keylabel-foreground-color -syn keyword pineConfig keyname-background-color -syn keyword pineConfig keyname-foreground-color -syn keyword pineConfig last-time-prune-questioned -syn keyword pineConfig last-version-used -syn keyword pineConfig ldap-servers -syn keyword pineConfig literal-signature -syn keyword pineConfig local-address -syn keyword pineConfig local-fullname -syn keyword pineConfig mail-check-interval -syn keyword pineConfig mail-directory -syn keyword pineConfig mailcap-search-path -syn keyword pineConfig mimetype-search-path -syn keyword pineConfig new-version-threshold -syn keyword pineConfig news-active-file-path -syn keyword pineConfig news-collections -syn keyword pineConfig news-spool-directory -syn keyword pineConfig newsrc-path -syn keyword pineConfig nntp-server -syn keyword pineConfig normal-background-color -syn keyword pineConfig normal-foreground-color -syn keyword pineConfig old-style-reply -syn keyword pineConfig operating-dir -syn keyword pineConfig patterns -syn keyword pineConfig patterns-filters -syn keyword pineConfig patterns-filters2 -syn keyword pineConfig patterns-indexcolors -syn keyword pineConfig patterns-other -syn keyword pineConfig patterns-roles -syn keyword pineConfig patterns-scores -syn keyword pineConfig patterns-scores2 -syn keyword pineConfig personal-name -syn keyword pineConfig personal-print-category -syn keyword pineConfig personal-print-command -syn keyword pineConfig postponed-folder -syn keyword pineConfig print-font-char-set -syn keyword pineConfig print-font-name -syn keyword pineConfig print-font-size -syn keyword pineConfig print-font-style -syn keyword pineConfig printer -syn keyword pineConfig prompt-background-color -syn keyword pineConfig prompt-foreground-color -syn keyword pineConfig pruned-folders -syn keyword pineConfig pruning-rule -syn keyword pineConfig quote1-background-color -syn keyword pineConfig quote1-foreground-color -syn keyword pineConfig quote2-background-color -syn keyword pineConfig quote2-foreground-color -syn keyword pineConfig quote3-background-color -syn keyword pineConfig quote3-foreground-color -syn keyword pineConfig read-message-folder -syn keyword pineConfig remote-abook-history -syn keyword pineConfig remote-abook-metafile -syn keyword pineConfig remote-abook-validity -syn keyword pineConfig reply-indent-string -syn keyword pineConfig reply-leadin -syn keyword pineConfig reverse-background-color -syn keyword pineConfig reverse-foreground-color -syn keyword pineConfig rsh-command -syn keyword pineConfig rsh-open-timeout -syn keyword pineConfig rsh-path -syn keyword pineConfig save-by-sender -syn keyword pineConfig saved-msg-name-rule -syn keyword pineConfig scroll-margin -syn keyword pineConfig selectable-item-background-color -syn keyword pineConfig selectable-item-foreground-color -syn keyword pineConfig sending-filters -syn keyword pineConfig sendmail-path -syn keyword pineConfig show-all-characters -syn keyword pineConfig signature-file -syn keyword pineConfig smtp-server -syn keyword pineConfig sort-key -syn keyword pineConfig speller -syn keyword pineConfig ssh-command -syn keyword pineConfig ssh-open-timeout -syn keyword pineConfig ssh-path -syn keyword pineConfig standard-printer -syn keyword pineConfig status-background-color -syn keyword pineConfig status-foreground-color -syn keyword pineConfig status-message-delay -syn keyword pineConfig suggest-address -syn keyword pineConfig suggest-fullname -syn keyword pineConfig tcp-open-timeout -syn keyword pineConfig tcp-query-timeout -syn keyword pineConfig tcp-read-warning-timeout -syn keyword pineConfig tcp-write-warning-timeout -syn keyword pineConfig threading-display-style -syn keyword pineConfig threading-expanded-character -syn keyword pineConfig threading-index-style -syn keyword pineConfig threading-indicator-character -syn keyword pineConfig threading-lastreply-character -syn keyword pineConfig title-background-color -syn keyword pineConfig title-foreground-color -syn keyword pineConfig titlebar-color-style -syn keyword pineConfig upload-command -syn keyword pineConfig upload-command-prefix -syn keyword pineConfig url-viewers -syn keyword pineConfig use-only-domain-name -syn keyword pineConfig user-domain -syn keyword pineConfig user-id -syn keyword pineConfig user-id -syn keyword pineConfig user-input-timeout -syn keyword pineConfig viewer-hdr-colors -syn keyword pineConfig viewer-hdrs -syn keyword pineConfig viewer-overlap -syn keyword pineConfig window-position - -syn keyword pineOption allow-changing-from -syn keyword pineOption allow-talk -syn keyword pineOption alternate-compose-menu -syn keyword pineOption assume-slow-link -syn keyword pineOption auto-move-read-msgs -syn keyword pineOption auto-open-next-unread -syn keyword pineOption auto-unzoom-after-apply -syn keyword pineOption auto-zoom-after-select -syn keyword pineOption cache-remote-pinerc -syn keyword pineOption check-newmail-when-quitting -syn keyword pineOption combined-addrbook-display -syn keyword pineOption combined-folder-display -syn keyword pineOption combined-subdirectory-display -syn keyword pineOption compose-cut-from-cursor -syn keyword pineOption compose-maps-delete-key-to-ctrl-d -syn keyword pineOption compose-rejects-unqualified-addrs -syn keyword pineOption compose-send-offers-first-filter -syn keyword pineOption compose-sets-newsgroup-without-confirm -syn keyword pineOption confirm-role-even-for-default -syn keyword pineOption continue-tab-without-confirm -syn keyword pineOption delete-skips-deleted -syn keyword pineOption disable-2022-jp-conversions -syn keyword pineOption disable-busy-alarm -syn keyword pineOption disable-charset-conversions -syn keyword pineOption disable-config-cmd -syn keyword pineOption disable-keyboard-lock-cmd -syn keyword pineOption disable-keymenu -syn keyword pineOption disable-password-caching -syn keyword pineOption disable-password-cmd -syn keyword pineOption disable-pipes-in-sigs -syn keyword pineOption disable-pipes-in-templates -syn keyword pineOption disable-roles-setup-cmd -syn keyword pineOption disable-roles-sig-edit -syn keyword pineOption disable-roles-template-edit -syn keyword pineOption disable-sender -syn keyword pineOption disable-shared-namespaces -syn keyword pineOption disable-signature-edit-cmd -syn keyword pineOption disable-take-last-comma-first -syn keyword pineOption enable-8bit-esmtp-negotiation -syn keyword pineOption enable-8bit-nntp-posting -syn keyword pineOption enable-aggregate-command-set -syn keyword pineOption enable-alternate-editor-cmd -syn keyword pineOption enable-alternate-editor-implicitly -syn keyword pineOption enable-arrow-navigation -syn keyword pineOption enable-arrow-navigation-relaxed -syn keyword pineOption enable-background-sending -syn keyword pineOption enable-bounce-cmd -syn keyword pineOption enable-cruise-mode -syn keyword pineOption enable-cruise-mode-delete -syn keyword pineOption enable-delivery-status-notification -syn keyword pineOption enable-dot-files -syn keyword pineOption enable-dot-folders -syn keyword pineOption enable-exit-via-lessthan-command -syn keyword pineOption enable-fast-recent-test -syn keyword pineOption enable-flag-cmd -syn keyword pineOption enable-flag-screen-implicitly -syn keyword pineOption enable-full-header-and-text -syn keyword pineOption enable-full-header-cmd -syn keyword pineOption enable-goto-in-file-browser -syn keyword pineOption enable-incoming-folders -syn keyword pineOption enable-jump-shortcut -syn keyword pineOption enable-lame-list-mode -syn keyword pineOption enable-mail-check-cue -syn keyword pineOption enable-mailcap-param-substitution -syn keyword pineOption enable-mouse-in-xterm -syn keyword pineOption enable-msg-view-addresses -syn keyword pineOption enable-msg-view-attachments -syn keyword pineOption enable-msg-view-forced-arrows -syn keyword pineOption enable-msg-view-urls -syn keyword pineOption enable-msg-view-web-hostnames -syn keyword pineOption enable-newmail-in-xterm-icon -syn keyword pineOption enable-partial-match-lists -syn keyword pineOption enable-print-via-y-command -syn keyword pineOption enable-reply-indent-string-editing -syn keyword pineOption enable-rules-under-take -syn keyword pineOption enable-search-and-replace -syn keyword pineOption enable-sigdashes -syn keyword pineOption enable-suspend -syn keyword pineOption enable-tab-completion -syn keyword pineOption enable-take-export -syn keyword pineOption enable-tray-icon -syn keyword pineOption enable-unix-pipe-cmd -syn keyword pineOption enable-verbose-smtp-posting -syn keyword pineOption expanded-view-of-addressbooks -syn keyword pineOption expanded-view-of-distribution-lists -syn keyword pineOption expanded-view-of-folders -syn keyword pineOption expose-hidden-config -syn keyword pineOption expunge-only-manually -syn keyword pineOption expunge-without-confirm -syn keyword pineOption expunge-without-confirm-everywhere -syn keyword pineOption fcc-on-bounce -syn keyword pineOption fcc-only-without-confirm -syn keyword pineOption fcc-without-attachments -syn keyword pineOption include-attachments-in-reply -syn keyword pineOption include-header-in-reply -syn keyword pineOption include-text-in-reply -syn keyword pineOption ldap-result-to-addrbook-add -syn keyword pineOption mark-fcc-seen -syn keyword pineOption mark-for-cc -syn keyword pineOption news-approximates-new-status -syn keyword pineOption news-deletes-across-groups -syn keyword pineOption news-offers-catchup-on-close -syn keyword pineOption news-post-without-validation -syn keyword pineOption news-read-in-newsrc-order -syn keyword pineOption next-thread-without-confirm -syn keyword pineOption old-growth -syn keyword pineOption pass-control-characters-as-is -syn keyword pineOption prefer-plain-text -syn keyword pineOption preserve-start-stop-characters -syn keyword pineOption print-formfeed-between-messages -syn keyword pineOption print-includes-from-line -syn keyword pineOption print-index-enabled -syn keyword pineOption print-offers-custom-cmd-prompt -syn keyword pineOption quell-attachment-extra-prompt -syn keyword pineOption quell-berkeley-format-timezone -syn keyword pineOption quell-content-id -syn keyword pineOption quell-dead-letter-on-cancel -syn keyword pineOption quell-empty-directories -syn keyword pineOption quell-extra-post-prompt -syn keyword pineOption quell-folder-internal-msg -syn keyword pineOption quell-imap-envelope-update -syn keyword pineOption quell-lock-failure-warnings -syn keyword pineOption quell-maildomain-warning -syn keyword pineOption quell-news-envelope-update -syn keyword pineOption quell-partial-fetching -syn keyword pineOption quell-ssl-largeblocks -syn keyword pineOption quell-status-message-beeping -syn keyword pineOption quell-timezone-comment-when-sending -syn keyword pineOption quell-user-lookup-in-passwd-file -syn keyword pineOption quit-without-confirm -syn keyword pineOption reply-always-uses-reply-to -syn keyword pineOption save-aggregates-copy-sequence -syn keyword pineOption save-will-advance -syn keyword pineOption save-will-not-delete -syn keyword pineOption save-will-quote-leading-froms -syn keyword pineOption scramble-message-id -syn keyword pineOption select-without-confirm -syn keyword pineOption selectable-item-nobold -syn keyword pineOption separate-folder-and-directory-entries -syn keyword pineOption show-cursor -syn keyword pineOption show-plain-text-internally -syn keyword pineOption show-selected-in-boldface -syn keyword pineOption signature-at-bottom -syn keyword pineOption single-column-folder-list -syn keyword pineOption slash-collapses-entire-thread -syn keyword pineOption spell-check-before-sending -syn keyword pineOption store-window-position-in-config -syn keyword pineOption strip-from-sigdashes-on-reply -syn keyword pineOption tab-visits-next-new-message-only -syn keyword pineOption termdef-takes-precedence -syn keyword pineOption thread-index-shows-important-color -syn keyword pineOption try-alternative-authentication-driver-first -syn keyword pineOption unselect-will-not-advance -syn keyword pineOption use-current-dir -syn keyword pineOption use-function-keys -syn keyword pineOption use-sender-not-x-sender -syn keyword pineOption use-subshell-for-suspend -syn keyword pineOption vertical-folder-list - -syn match pineComment "^#.*$" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_pine_syn_inits") - if version < 508 - let did_pine_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink pineConfig Type - HiLink pineComment Comment - HiLink pineOption Macro - delcommand HiLink -endif - -let b:current_syntax = "pine" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/po.vim b/share/vim/vim73/syntax/po.vim deleted file mode 100644 index 4475417f..00000000 --- a/share/vim/vim73/syntax/po.vim +++ /dev/null @@ -1,135 +0,0 @@ -" Vim syntax file -" Language: po (gettext) -" Maintainer: Dwayne Bailey -" Last Change: 2008 Sep 17 -" Contributors: Dwayne Bailey (Most advanced syntax highlighting) -" Leonardo Fontenelle (Spell checking) -" SungHyun Nam (Original maintainer) - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn sync minlines=10 - -" Identifiers -syn match poStatementMsgCTxt "^msgctxt" -syn match poStatementMsgidplural "^msgid_plural" contained -syn match poPluralCaseN "[0-9]" contained -syn match poStatementMsgstr "^msgstr\(\[[0-9]\]\)" contains=poPluralCaseN - -" Simple HTML and XML highlighting -syn match poHtml "<\_[^<>]\+>" contains=poHtmlTranslatables,poLineBreak -syn match poHtmlNot +"<[^<]\+>"+ms=s+1,me=e-1 -syn region poHtmlTranslatables start=+\(abbr\|alt\|content\|summary\|standby\|title\)=\\"+ms=e-1 end=+\\"+ contained contains=@Spell -syn match poLineBreak +"\n"+ contained - -" Translation blocks -syn region poMsgCTxt matchgroup=poStatementMsgCTxt start=+^msgctxt "+rs=e-1 matchgroup=poStringCTxt end=+^msgid "+me=s-1 contains=poStringCTxt -syn region poMsgID matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\(\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid -syn region poMsgSTR matchgroup=poStatementMsgstr start=+^msgstr\(\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr -syn region poStringCTxt start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn region poStringID start=+"+ skip=+\\\\\|\\"+ end=+"+ contained - \ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAcceleratorId,poHtmlNot,poVariable -syn region poStringSTR start=+"+ skip=+\\\\\|\\"+ end=+"+ contained - \ contains=@Spell,poSpecial,poFormat,poHeaderItem,poCommentKDEError,poHeaderUndefined,poPluralKDEError,poMsguniqError,poKDEdesktopFile,poHtml,poAcceleratorStr,poHtmlNot,poVariable - -" Header and Copyright -syn match poHeaderItem "\(Project-Id-Version\|Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language-Team\|MIME-Version\|Content-Type\|Content-Transfer-Encoding\|Plural-Forms\|X-Generator\): " contained -syn match poHeaderUndefined "\(PACKAGE VERSION\|YEAR-MO-DA HO:MI+ZONE\|FULL NAME \|LANGUAGE \|CHARSET\|ENCODING\|INTEGER\|EXPRESSION\)" contained -syn match poCopyrightUnset "SOME DESCRIPTIVE TITLE\|FIRST AUTHOR , YEAR\|Copyright (C) YEAR Free Software Foundation, Inc\|YEAR THE PACKAGE\'S COPYRIGHT HOLDER\|PACKAGE" contained - -" Translation comment block including: translator comment, automatic coments, flags and locations -syn match poComment "^#.*$" -syn keyword poFlagFuzzy fuzzy contained -syn match poCommentTranslator "^# .*$" contains=poCopyrightUnset -syn match poCommentAutomatic "^#\..*$" -syn match poCommentSources "^#:.*$" -syn match poCommentFlags "^#,.*$" contains=poFlagFuzzy - -" Translations (also includes header fields as they appear in a translation msgstr) -syn region poCommentKDE start=+"_: +ms=s+1 end="\\n" end="\"\n^msgstr"me=s-1 contained -syn region poCommentKDEError start=+"\(\|\s\+\)_:+ms=s+1 end="\\n" end=+"\n\n+me=s-1 contained -syn match poPluralKDE +"_n: +ms=s+1 contained -syn region poPluralKDEError start=+"\(\|\s\+\)_n:+ms=s+1 end="\"\n\n"me=s-1 contained -syn match poSpecial contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" -syn match poFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained -syn match poFormat "%%" contained - -" msguniq and msgcat conflicts -syn region poMsguniqError matchgroup=poMsguniqErrorMarkers start="#-#-#-#-#" end='#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)\\n' contained - -" Obsolete messages -syn match poObsolete "^#\~.*$" - -" KDE Name= handling -syn match poKDEdesktopFile "\"\(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1 - -" Accelerator keys - this messes up if the preceding or following char is a multibyte unicode char -syn match poAcceleratorId contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 -syn match poAcceleratorStr contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell - -" Variables simple -syn match poVariable contained "%\d" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_po_syn_inits") - if version < 508 - let did_po_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink poCommentSources PreProc - HiLink poComment Comment - HiLink poCommentAutomatic Comment - HiLink poCommentTranslator Comment - HiLink poCommentFlags Special - HiLink poCopyrightUnset Todo - HiLink poFlagFuzzy Todo - HiLink poObsolete Comment - - HiLink poStatementMsgid Statement - HiLink poStatementMsgstr Statement - HiLink poStatementMsgidplural Statement - HiLink poStatementMsgCTxt Statement - HiLink poPluralCaseN Constant - - HiLink poStringCTxt Comment - HiLink poStringID String - HiLink poStringSTR String - HiLink poCommentKDE Comment - HiLink poCommentKDEError Error - HiLink poPluralKDE Comment - HiLink poPluralKDEError Error - HiLink poHeaderItem Identifier - HiLink poHeaderUndefined Todo - HiLink poKDEdesktopFile Identifier - - HiLink poHtml Identifier - HiLink poHtmlNot String - HiLink poHtmlTranslatables String - HiLink poLineBreak String - - HiLink poFormat poSpecial - HiLink poSpecial Special - HiLink poAcceleratorId Special - HiLink poAcceleratorStr Special - HiLink poVariable Special - - HiLink poMsguniqError Special - HiLink poMsguniqErrorMarkers Comment - - delcommand HiLink -endif - -let b:current_syntax = "po" - -" vim:set ts=8 sts=2 sw=2 noet: diff --git a/share/vim/vim73/syntax/pod.vim b/share/vim/vim73/syntax/pod.vim deleted file mode 100644 index 041c7c4c..00000000 --- a/share/vim/vim73/syntax/pod.vim +++ /dev/null @@ -1,90 +0,0 @@ -" Vim syntax file -" Language: Perl POD format -" Maintainer: Andy Lester -" Previously: Scott Bigham -" URL: http://github.com/petdance/vim-perl -" Last Change: 2009-08-14 - -" To add embedded POD documentation highlighting to your syntax file, add -" the commands: -" -" syn include @Pod :p:h/pod.vim -" syn region myPOD start="^=pod" start="^=head" end="^=cut" keepend contained contains=@Pod -" -" and add myPod to the contains= list of some existing region, probably a -" comment. The "keepend" flag is needed because "=cut" is matched as a -" pattern in its own right. - - -" Remove any old syntax stuff hanging around (this is suppressed -" automatically by ":syn include" if necessary). -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" POD commands -syn match podCommand "^=head[1234]" nextgroup=podCmdText contains=@NoSpell -syn match podCommand "^=item" nextgroup=podCmdText contains=@NoSpell -syn match podCommand "^=over" nextgroup=podOverIndent skipwhite contains=@NoSpell -syn match podCommand "^=back" contains=@NoSpell -syn match podCommand "^=cut" contains=@NoSpell -syn match podCommand "^=pod" contains=@NoSpell -syn match podCommand "^=for" nextgroup=podForKeywd skipwhite contains=@NoSpell -syn match podCommand "^=begin" nextgroup=podForKeywd skipwhite contains=@NoSpell -syn match podCommand "^=end" nextgroup=podForKeywd skipwhite contains=@NoSpell - -" Text of a =head1, =head2 or =item command -syn match podCmdText ".*$" contained contains=podFormat,@NoSpell - -" Indent amount of =over command -syn match podOverIndent "\d\+" contained contains=@NoSpell - -" Formatter identifier keyword for =for, =begin and =end commands -syn match podForKeywd "\S\+" contained contains=@NoSpell - -" An indented line, to be displayed verbatim -syn match podVerbatimLine "^\s.*$" contains=@NoSpell - -" Inline textual items handled specially by POD -syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell -syn match podSpecial "[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell - -" Special formatting sequences -syn region podFormat start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell -syn region podFormat start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell -syn match podFormat "Z<>" -syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell -syn match podEscape "\I\i*>"me=e-1 contained contains=@NoSpell -syn match podEscape2 "\d\+>"me=e-1 contained contains=@NoSpell - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_pod_syntax_inits") - if version < 508 - let did_pod_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink podCommand Statement - HiLink podCmdText String - HiLink podOverIndent Number - HiLink podForKeywd Identifier - HiLink podFormat Identifier - HiLink podVerbatimLine PreProc - HiLink podSpecial Identifier - HiLink podEscape String - HiLink podEscape2 Number - - delcommand HiLink -endif - -let b:current_syntax = "pod" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/pov.vim b/share/vim/vim73/syntax/pov.vim deleted file mode 100644 index 700bb315..00000000 --- a/share/vim/vim73/syntax/pov.vim +++ /dev/null @@ -1,144 +0,0 @@ -" Vim syntax file -" This is a GENERATED FILE. Please always refer to source file at the URI below. -" Language: PoV-Ray(tm) 3.5 Scene Description Language -" Maintainer: David Ne\v{c}as (Yeti) -" Last Change: 2003 Apr 25 -" URL: http://physics.muni.cz/~yeti/download/syntax/pov.vim -" Required Vim Version: 6.0 - -" Setup -if version >= 600 - " Quit when a syntax file was already loaded - if exists("b:current_syntax") - finish - endif -else - " Croak when an old Vim is sourcing us. - echo "Sorry, but this syntax file relies on Vim 6 features. Either upgrade Vim or use a version of " . expand(":t:r") . " syntax file appropriate for Vim " . version/100 . "." . version %100 . "." - finish -endif - -syn case match - -" Top level stuff -syn keyword povCommands global_settings -syn keyword povObjects array atmosphere background bicubic_patch blob box camera component cone cubic cylinder disc fog height_field isosurface julia_fractal lathe light_group light_source mesh mesh2 object parametric pattern photons plane poly polygon prism quadric quartic rainbow sky_sphere smooth_triangle sor sphere sphere_sweep spline superellipsoid text torus triangle -syn keyword povCSG clipped_by composite contained_by difference intersection merge union -syn keyword povAppearance interior material media texture interior_texture texture_list -syn keyword povGlobalSettings ambient_light assumed_gamma charset hf_gray_16 irid_wavelength max_intersections max_trace_level number_of_waves radiosity noise_generator -syn keyword povTransform inverse matrix rotate scale translate transform - -" Descriptors -syn keyword povDescriptors finish normal pigment uv_mapping uv_vectors vertex_vectors -syn keyword povDescriptors adc_bailout always_sample brightness count error_bound distance_maximum gray_threshold load_file low_error_factor max_sample media minimum_reuse nearest_count normal pretrace_end pretrace_start recursion_limit save_file -syn keyword povDescriptors color colour gray rgb rgbt rgbf rgbft red green blue -syn keyword povDescriptors bump_map color_map colour_map image_map material_map pigment_map quick_color quick_colour normal_map texture_map image_pattern pigment_pattern -syn keyword povDescriptors ambient brilliance conserve_energy crand diffuse fresnel irid metallic phong phong_size refraction reflection reflection_exponent roughness specular -syn keyword povDescriptors cylinder fisheye omnimax orthographic panoramic perspective spherical ultra_wide_angle -syn keyword povDescriptors agate average brick boxed bozo bumps cells checker crackle cylindrical dents facets function gradient granite hexagon julia leopard magnet mandel marble onion planar quilted radial ripples slope spherical spiral1 spiral2 spotted tiles tiles2 toroidal waves wood wrinkles -syn keyword povDescriptors density_file -syn keyword povDescriptors area_light shadowless spotlight parallel -syn keyword povDescriptors absorption confidence density emission intervals ratio samples scattering variance -syn keyword povDescriptors distance fog_alt fog_offset fog_type turb_depth -syn keyword povDescriptors b_spline bezier_spline cubic_spline evaluate face_indices form linear_spline max_gradient natural_spline normal_indices normal_vectors quadratic_spline uv_indices -syn keyword povDescriptors target - -" Modifiers -syn keyword povModifiers caustics dispersion dispersion_samples fade_color fade_colour fade_distance fade_power ior -syn keyword povModifiers bounded_by double_illuminate hierarchy hollow no_shadow open smooth sturm threshold water_level -syn keyword povModifiers hypercomplex max_iteration precision quaternion slice -syn keyword povModifiers conic_sweep linear_sweep -syn keyword povModifiers flatness type u_steps v_steps -syn keyword povModifiers aa_level aa_threshold adaptive falloff jitter looks_like media_attenuation media_interaction method point_at radius tightness -syn keyword povModifiers angle aperture blur_samples confidence direction focal_point h_angle location look_at right sky up v_angle variance -syn keyword povModifiers all bump_size filter interpolate map_type once slope_map transmit use_alpha use_color use_colour use_index -syn keyword povModifiers black_hole agate_turb brick_size control0 control1 cubic_wave density_map flip frequency interpolate inverse lambda metric mortar octaves offset omega phase poly_wave ramp_wave repeat scallop_wave sine_wave size strength triangle_wave thickness turbulence turb_depth type warp -syn keyword povModifiers eccentricity extinction -syn keyword povModifiers arc_angle falloff_angle width -syn keyword povModifiers accuracy all_intersections altitude autostop circular collect coords cutaway_textures dist_exp expand_thresholds exponent exterior gather global_lights major_radius max_trace no_bump_scale no_image no_reflection orient orientation pass_through precompute projected_through range_divider solid spacing split_union tolerance - -" Words not marked `reserved' in documentation, but... -syn keyword povBMPType alpha gif iff jpeg pgm png pot ppm sys tga tiff contained -syn keyword povFontType ttf contained -syn keyword povDensityType df3 contained -syn keyword povCharset ascii utf8 contained - -" Math functions on floats, vectors and strings -syn keyword povFunctions abs acos acosh asc asin asinh atan atan2 atanh ceil cos cosh defined degrees dimensions dimension_size div exp file_exists floor int internal ln log max min mod pow radians rand seed select sin sinh sqrt strcmp strlen tan tanh val vdot vlength vstr vturbulence -syn keyword povFunctions min_extent max_extent trace vcross vrotate vaxis_rotate vnormalize vturbulence -syn keyword povFunctions chr concat substr str strupr strlwr -syn keyword povJuliaFunctions acosh asinh atan cosh cube pwr reciprocal sinh sqr tanh - -" Specialities -syn keyword povConsts clock clock_delta clock_on final_clock final_frame frame_number initial_clock initial_frame image_width image_height false no off on pi t true u v version x y yes z -syn match povDotItem "\.\@<=\(blue\|green\|filter\|red\|transmit\|t\|u\|v\|x\|y\|z\)\>" display - -" Comments -syn region povComment start="/\*" end="\*/" contains=povTodo,povComment -syn match povComment "//.*" contains=povTodo -syn match povCommentError "\*/" -syn sync ccomment povComment -syn sync minlines=50 -syn keyword povTodo TODO FIXME XXX NOT contained -syn cluster povPRIVATE add=povTodo - -" Language directives -syn match povConditionalDir "#\s*\(else\|end\|if\|ifdef\|ifndef\|switch\|while\)\>" -syn match povLabelDir "#\s*\(break\|case\|default\|range\)\>" -syn match povDeclareDir "#\s*\(declare\|default\|local\|macro\|undef\|version\)\>" -syn match povIncludeDir "#\s*include\>" -syn match povFileDir "#\s*\(fclose\|fopen\|read\|write\)\>" -syn match povMessageDir "#\s*\(debug\|error\|render\|statistics\|warning\)\>" -syn region povFileOpen start="#\s*fopen\>" skip=+"[^"]*"+ matchgroup=povOpenType end="\<\(read\|write\|append\)\>" contains=ALLBUT,PovParenError,PovBraceError,@PovPRIVATE transparent keepend - -" Literal strings -syn match povSpecialChar "\\\d\d\d\|\\." contained -syn region povString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=povSpecialChar oneline -syn cluster povPRIVATE add=povSpecialChar - -" Catch errors caused by wrong parenthesization -syn region povParen start='(' end=')' contains=ALLBUT,povParenError,@povPRIVATE transparent -syn match povParenError ")" -syn region povBrace start='{' end='}' contains=ALLBUT,povBraceError,@povPRIVATE transparent -syn match povBraceError "}" - -" Numbers -syn match povNumber "\(^\|\W\)\@<=[+-]\=\(\d\+\)\=\.\=\d\+\([eE][+-]\=\d\+\)\=" - -" Define the default highlighting -hi def link povComment Comment -hi def link povTodo Todo -hi def link povNumber Number -hi def link povString String -hi def link povFileOpen Constant -hi def link povConsts Constant -hi def link povDotItem Constant -hi def link povBMPType povSpecial -hi def link povCharset povSpecial -hi def link povDensityType povSpecial -hi def link povFontType povSpecial -hi def link povOpenType povSpecial -hi def link povSpecialChar povSpecial -hi def link povSpecial Special -hi def link povConditionalDir PreProc -hi def link povLabelDir PreProc -hi def link povDeclareDir Define -hi def link povIncludeDir Include -hi def link povFileDir PreProc -hi def link povMessageDir Debug -hi def link povAppearance povDescriptors -hi def link povObjects povDescriptors -hi def link povGlobalSettings povDescriptors -hi def link povDescriptors Type -hi def link povJuliaFunctions PovFunctions -hi def link povModifiers povFunctions -hi def link povFunctions Function -hi def link povCommands Operator -hi def link povTransform Operator -hi def link povCSG Operator -hi def link povParenError povError -hi def link povBraceError povError -hi def link povCommentError povError -hi def link povError Error - -let b:current_syntax = "pov" diff --git a/share/vim/vim73/syntax/povini.vim b/share/vim/vim73/syntax/povini.vim deleted file mode 100644 index 02169ea2..00000000 --- a/share/vim/vim73/syntax/povini.vim +++ /dev/null @@ -1,62 +0,0 @@ -" Vim syntax file -" This is a GENERATED FILE. Please always refer to source file at the URI below. -" Language: PoV-Ray(tm) 3.5 configuration/initialization files -" Maintainer: David Ne\v{c}as (Yeti) -" Last Change: 2002-06-01 -" URL: http://physics.muni.cz/~yeti/download/syntax/povini.vim -" Required Vim Version: 6.0 - -" Setup -if version >= 600 - " Quit when a syntax file was already loaded - if exists("b:current_syntax") - finish - endif -else - " Croak when an old Vim is sourcing us. - echo "Sorry, but this syntax file relies on Vim 6 features. Either upgrade Vim or usea version of " . expand(":t:r") . " syntax file appropriate for Vim " . version/100 . "." . version %100 . "." - finish -endif - -syn case ignore - -" Syntax -syn match poviniInclude "^\s*[^[+-;]\S*\s*$" contains=poviniSection -syn match poviniLabel "^.\{-1,}\ze=" transparent contains=poviniKeyword nextgroup=poviniBool,poviniNumber -syn keyword poviniBool On Off True False Yes No -syn match poviniNumber "\<\d*\.\=\d\+\>" -syn keyword poviniKeyword Clock Initial_Frame Final_Frame Initial_Clock Final_Clock Subset_Start_Frame Subset_End_Frame Cyclic_Animation Field_Render Odd_Field -syn keyword poviniKeyword Width Height Start_Column Start_Row End_Column End_Row Test_Abort Test_Abort_Count Continue_Trace Create_Ini -syn keyword poviniKeyword Display Video_Mode Palette Display_Gamma Pause_When_Done Verbose Draw_Vistas Preview_Start_Size Preview_End_Size -syn keyword poviniKeyword Output_to_File Output_File_Type Output_Alpha Bits_Per_Color Output_File_Name Buffer_Output Buffer_Size -syn keyword poviniKeyword Histogram_Type Histogram_Grid_Size Histogram_Name -syn keyword poviniKeyword Input_File_Name Include_Header Library_Path Version -syn keyword poviniKeyword Debug_Console Fatal_Console Render_Console Statistic_Console Warning_Console All_Console Debug_File Fatal_File Render_File Statistic_File Warning_File All_File Warning_Level -syn keyword poviniKeyword Quality Radiosity Bounding Bounding_Threshold Light_Buffer Vista_Buffer Remove_Bounds Split_Unions Antialias Sampling_Method Antialias_Threshold Jitter Jitter_Amount Antialias_Depth -syn keyword poviniKeyword Pre_Scene_Return Pre_Frame_Return Post_Scene_Return Post_Frame_Return User_Abort_Return Fatal_Error_Return -syn match poviniShellOut "^\s*\(Pre_Scene_Command\|Pre_Frame_Command\|Post_Scene_Command\|Post_Frame_Command\|User_Abort_Command\|Fatal_Error_Command\)\>" nextgroup=poviniShellOutEq skipwhite -syn match poviniShellOutEq "=" nextgroup=poviniShellOutRHS skipwhite contained -syn match poviniShellOutRHS "[^;]\+" skipwhite contained contains=poviniShellOutSpecial -syn match poviniShellOutSpecial "%[osnkhw%]" contained -syn keyword poviniDeclare Declare -syn match poviniComment ";.*$" -syn match poviniOption "^\s*[+-]\S*" -syn match poviniIncludeLabel "^\s*Include_INI\s*=" nextgroup=poviniIncludedFile skipwhite -syn match poviniIncludedFile "[^;]\+" contains=poviniSection contained -syn region poviniSection start="\[" end="\]" - -" Define the default highlighting -hi def link poviniSection Special -hi def link poviniComment Comment -hi def link poviniDeclare poviniKeyword -hi def link poviniShellOut poviniKeyword -hi def link poviniIncludeLabel poviniKeyword -hi def link poviniKeyword Type -hi def link poviniShellOutSpecial Special -hi def link poviniIncludedFile poviniInclude -hi def link poviniInclude Include -hi def link poviniOption Keyword -hi def link poviniBool Constant -hi def link poviniNumber Number - -let b:current_syntax = "povini" diff --git a/share/vim/vim73/syntax/progress.vim b/share/vim/vim73/syntax/progress.vim deleted file mode 100644 index 6816548a..00000000 --- a/share/vim/vim73/syntax/progress.vim +++ /dev/null @@ -1,231 +0,0 @@ -" Vim syntax file -" Language: Progress 4GL -" Filename extensions: *.p (collides with Pascal), -" *.i (collides with assembler) -" *.w (collides with cweb) -" Maintainer: Philip Uren Remove "SPAX" spam block -" Contributors: Chris Ruprecht (Chris, where are you now?) -" Mikhail Kuperblum -" John Florian -" Last Change: Wed Apr 12 08:55:35 EST 2006 -" $Id: progress.vim,v 1.3 2006/04/12 21:48:47 vimboss Exp $ - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if version >= 600 - setlocal iskeyword=@,48-57,_,-,!,#,$,% -else - set iskeyword=@,48-57,_,-,!,#,$,% -endif - -" The Progress editor doesn't cope with tabs very well. -set expandtab - -syn case ignore - -" Progress Blocks of code and mismatched "end." errors. -syn match ProgressEndError "\" -syn region ProgressDoBlock transparent matchgroup=ProgressDo start="\" matchgroup=ProgressDo end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction -syn region ProgressForBlock transparent matchgroup=ProgressFor start="\" matchgroup=ProgressFor end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction -syn region ProgressRepeatBlock transparent matchgroup=ProgressRepeat start="\" matchgroup=ProgressRepeat end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction -syn region ProgressCaseBlock transparent matchgroup=ProgressCase start="\" matchgroup=ProgressCase end="\\|\" contains=ALLBUT,ProgressProcedure,ProgressFunction - -" These are Progress reserved words, -" and they could go in ProgressReserved, -" but I found it more helpful to highlight them in a different color. -syn keyword ProgressConditional if else then when otherwise -syn keyword ProgressFor each where - -" Make those TODO and debugging notes stand out! -syn keyword ProgressTodo contained TODO BUG FIX -syn keyword ProgressDebug contained DEBUG -syn keyword ProgressDebug debugger -syn match ProgressTodo contained "NEED[S]*\s\s*WORK" - -" If you like to highlight the whole line of -" the start and end of procedures -" to make the whole block of code stand out: -syn match ProgressProcedure "^\s*procedure.*" -syn match ProgressProcedure "^\s*end\s\s*procedure.*" -syn match ProgressFunction "^\s*function.*" -syn match ProgressFunction "^\s*end\s\s*function.*" -" ... otherwise use this: -" syn keyword ProgressFunction procedure function - -syn keyword ProgressReserved accum[ulate] active-window add alias all alter ambig[uous] analyz[e] and any apply as asc[ending] assign at attr[-space] -syn keyword ProgressReserved authorization auto-ret[urn] avail[able] back[ground] before-h[ide] begins bell between blank break btos by call can-do can-find -syn keyword ProgressReserved center[ed] character check chr clear clipboard col colon color col[umn] column-lab[el] col[umns] compiler connected control count-of -syn keyword ProgressReserved cpstream create ctos current current-changed current-lang[uage] current-window current_date curs[or] database dataservers -syn keyword ProgressReserved dbcodepage dbcollation dbname dbrest[rictions] dbtaskid dbtype dbvers[ion] dde deblank debug-list debugger decimal decimals declare -syn keyword ProgressReserved def default default-noxl[ate] default-window def[ine] delete delimiter desc[ending] dict[ionary] disable discon[nect] disp -syn keyword ProgressReserved disp[lay] distinct dos down drop editing enable encode entry error-stat[us] escape etime except exclusive -syn keyword ProgressReserved exclusive[-lock] exclusive-web-us[er] exists export false fetch field field[s] file-info[rmation] fill find find-case-sensitive -syn keyword ProgressReserved find-global find-next-occurrence find-prev-occurrence find-select find-wrap-around first first-of focus font form form[at] -syn keyword ProgressReserved fram[e] frame-col frame-db frame-down frame-field frame-file frame-inde[x] frame-line frame-name frame-row frame-val[ue] -syn keyword ProgressReserved from from-c[hars] from-p[ixels] gateway[s] get-byte get-codepage[s] get-coll[ations] get-key-val[ue] getbyte global go-on -syn keyword ProgressReserved go-pend[ing] grant graphic-e[dge] group having header help hide import in index indicator input input-o[utput] insert -syn keyword ProgressReserved integer into is is-attr[-space] join kblabel key-code key-func[tion] key-label keycode keyfunc[tion] keylabel keys keyword label -syn keyword ProgressReserved last last-even[t] last-key last-of lastkey ldbname leave library like line-count[er] listi[ng] locked lookup machine-class -syn keyword ProgressReserved map member message message-lines mouse mpe new next next-prompt no no-attr[-space] no-error no-f[ill] no-help no-hide no-label[s] -syn keyword ProgressReserved no-lock no-map no-mes[sage] no-pause no-prefe[tch] no-undo no-val[idate] no-wait not null num-ali[ases] num-dbs num-entries -syn keyword ProgressReserved of off old on open opsys option or os-append os-command os-copy os-create-dir os-delete os-dir os-drive[s] os-error os-rename -syn keyword ProgressReserved os2 os400 output overlay page page-bot[tom] page-num[ber] page-top param[eter] pause pdbname persist[ent] pixels -syn keyword ProgressReserved preproc[ess] privileges proc-ha[ndle] proc-st[atus] process program-name Progress prompt prompt[-for] promsgs propath provers[ion] -syn keyword ProgressReserved put put-byte put-key-val[ue] putbyte query query-tuning quit r-index rcode-informatio[n] readkey recid record-len[gth] rect[angle] -syn keyword ProgressReserved release reposition retain retry return return-val[ue] revert revoke run save schema screen screen-io screen-lines -syn keyword ProgressReserved scroll sdbname search seek select self session set setuser[id] share[-lock] shared show-stat[s] skip some space status stream -syn keyword ProgressReserved stream-io string-xref system-dialog table term term[inal] text text-cursor text-seg[-growth] this-procedure time title -syn keyword ProgressReserved to today top-only trans trans[action] trigger triggers trim true underl[ine] undo unform[atted] union unique unix up update -syn keyword ProgressReserved use-index use-revvideo use-underline user user[id] using v6frame value values variable view view-as vms wait-for web-con[text] -syn keyword ProgressReserved window window-maxim[ized] window-minim[ized] window-normal with work-tab[le] workfile write xcode xref yes _cbit -syn keyword ProgressReserved _control _list _memory _msg _pcontrol _serial[-num] _trace - -" Strings. Handles embedded quotes. -" Note that, for some reason, Progress doesn't use the backslash, "\" -" as the escape character; it uses tilde, "~". -syn region ProgressString matchgroup=ProgressQuote start=+"+ end=+"+ skip=+\~'\|\~\~+ -syn region ProgressString matchgroup=ProgressQuote start=+'+ end=+'+ skip=+\~'\|\~\~+ - -syn match ProgressIdentifier "\<[a-zA-Z_%#]+\>()" - -" syn match ProgressDelimiter "()" - -syn match ProgressMatrixDelimiter "[][]" -" If you prefer you can highlight the range -"syn match ProgressMatrixDelimiter "[\d\+\.\.\d\+]" - -syn match ProgressNumber "\<\-\=\d\+\(u\=l\=\|lu\|f\)\>" -syn match ProgressByte "\$[0-9a-fA-F]\+" - -" More values: Logicals, and Progress's unknown value, ?. -syn match ProgressNumber "?" -syn keyword ProgressNumber true false yes no - -" If you don't like tabs: -syn match ProgressShowTab "\t" - -" If you don't like white space on the end of lines: -" syn match ProgressSpaceError "\s\+$" - -syn region ProgressComment start="/\*" end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug -syn region ProgressInclude start="^[ ]*[{][^&]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,ProgressComment -syn region ProgressPreProc start="&" end="\>" contained - -" This next line works reasonably well. -" syn match ProgressOperator "[!;|)(:.><+*=-]" -" -" Progress allows a '-' to be part of an identifier. To be considered -" the subtraction/negation operation operator it needs a non-word -" character on either side. Also valid are cases where the minus -" operation appears at the beginning or end of a line. -" This next line trips up on "no-undo" etc. -" syn match ProgressOperator "[!;|)(:.><+*=]\|\W-\W\|^-\W\|\W-$" -syn match ProgressOperator "[!;|)(:.><+*=]\|\s-\s\|^-\s\|\s-$" - -syn keyword ProgressOperator <= <> >= abs[olute] accelerator across add-first add-last advise alert-box allow-replication ansi-only anywhere append appl-alert[-boxes] application as-cursor ask-overwrite -syn keyword ProgressOperator attach[ment] auto-end-key auto-endkey auto-go auto-ind[ent] auto-resize auto-z[ap] available-formats ave[rage] avg backward[s] base-key batch[-mode] bgc[olor] binary -syn keyword ProgressOperator bind-where block-iteration-display border-bottom border-bottom-ch[ars] border-bottom-pi[xels] border-left border-left-char[s] border-left-pixe[ls] border-right border-right-cha[rs] -syn keyword ProgressOperator border-right-pix[els] border-t[op] border-t[op-chars] border-top-pixel[s] both bottom box box-select[able] browse browse-header buffer buffer-chars buffer-lines -syn keyword ProgressOperator button button[s] byte cache cache-size can-query can-set cancel-break cancel-button caps careful-paint case-sensitive cdecl char[acter] character_length charset -syn keyword ProgressOperator checked choose clear-select[ion] close code codepage codepage-convert col-of colon-align[ed] color-table column-bgc[olor] column-dcolor column-fgc[olor] column-font -syn keyword ProgressOperator column-label-bgc[olor] column-label-dcolor column-label-fgc[olor] column-label-font column-of column-pfc[olor] column-sc[rolling] combo-box command compile complete -syn keyword ProgressOperator connect constrained contents context context-pop[up] control-containe[r] c[ontrol-form] convert-to-offse[t] convert count cpcase cpcoll cpint[ernal] cplog -syn keyword ProgressOperator cpprint cprcodein cprcodeout cpterm crc-val[ue] c[reate-control] create-result-list-entry create-test-file current-column current-environm[ent] current-iteration -syn keyword ProgressOperator current-result-row current-row-modified current-value cursor-char cursor-line cursor-offset data-entry-retur[n] data-t[ype] date date-f[ormat] day db-references -syn keyword ProgressOperator dcolor dde-error dde-i[d] dde-item dde-name dde-topic debu[g] dec[imal] default-b[utton] default-extensio[n] defer-lob-fetch define defined delete-char delete-current-row -syn keyword ProgressOperator delete-line delete-selected-row delete-selected-rows deselect-focused-row deselect-rows deselect-selected-row d[esign-mode] dialog-box dialog-help dir disabled display-message -syn keyword ProgressOperator display-t[ype] double drag-enabled drop-down drop-down-list dump dynamic echo edge edge[-chars] edge-p[ixels] editor empty end-key endkey entered eq error error-col[umn] -syn keyword ProgressOperator error-row event-t[ype] event[s] exclusive-id execute exp expand extended extent external extract fetch-selected-row fgc[olor] file file-name file-off[set] file-type -syn keyword ProgressOperator filename fill-in filled filters first-child first-column first-proc[edure] first-tab-i[tem] fixed-only float focused-row font-based-layout font-table force-file -syn keyword ProgressOperator fore[ground] form-input forward[s] frame-spa[cing] frame-x frame-y frequency from-cur[rent] full-height full-height-char[s] full-height-pixe[ls] full-pathn[ame] -syn keyword ProgressOperator full-width full-width[-chars] full-width-pixel[s] ge get get-blue[-value] g[et-char-property] get-double get-dynamic get-file get-float get-green[-value] -syn keyword ProgressOperator get-iteration get-license get-long get-message get-number get-pointer-value get-red[-value] get-repositioned-row get-selected-wid[get] get-short get-signature get-size -syn keyword ProgressOperator get-string get-tab-item get-text-height get-text-height-char[s] get-text-height-pixe[ls] get-text-width get-text-width-c[hars] get-text-width-pixel[s] get-unsigned-short -syn keyword ProgressOperator grayed grid-factor-horizont[al] grid-factor-vert[ical] grid-set grid-snap grid-unit-height grid-unit-height-cha[rs] grid-unit-height-pix[els] grid-unit-width grid-unit-width-char[s] -syn keyword ProgressOperator grid-unit-width-pixe[ls] grid-visible gt handle height height[-chars] height-p[ixels] help-con[text] helpfile-n[ame] hidden hint hori[zontal] hwnd image image-down -syn keyword ProgressOperator image-insensitive image-size image-size-c[hars] image-size-pixel[s] image-up immediate-display index-hint indexed-reposition info[rmation] init init[ial] initial-dir -syn keyword ProgressOperator initial-filter initiate inner inner-chars inner-lines insert-b[acktab] insert-file insert-row insert-string insert-t[ab] int[eger] internal-entries is-lead-byte -syn keyword ProgressOperator is-row-selected is-selected item items-per-row join-by-sqldb keep-frame-z-ord[er] keep-messages keep-tab-order key keyword-all label-bgc[olor] label-dc[olor] label-fgc[olor] -syn keyword ProgressOperator label-font label-pfc[olor] labels language[s] large large-to-small last-child last-tab-i[tem] last-proce[dure] lc le leading left left-align[ed] left-trim length -syn keyword ProgressOperator line list-events list-items list-query-attrs list-set-attrs list-widgets load l[oad-control] load-icon load-image load-image-down load-image-insensitive load-image-up -syn keyword ProgressOperator load-mouse-point[er] load-small-icon log logical lookahead lower lt manual-highlight margin-extra margin-height margin-height-ch[ars] margin-height-pi[xels] margin-width -syn keyword ProgressOperator margin-width-cha[rs] margin-width-pix[els] matches max max-chars max-data-guess max-height max-height[-chars] max-height-pixel[s] max-rows max-size max-val[ue] max-width -syn keyword ProgressOperator max-width[-chars] max-width-p[ixels] maximize max[imum] memory menu menu-bar menu-item menu-k[ey] menu-m[ouse] menubar message-area message-area-font message-line -syn keyword ProgressOperator min min-height min-height[-chars] min-height-pixel[s] min-size min-val[ue] min-width min-width[-chars] min-width-p[ixels] min[imum] mod modified mod[ulo] month mouse-p[ointer] -syn keyword ProgressOperator movable move-after-tab-i[tem] move-before-tab-[item] move-col[umn] move-to-b[ottom] move-to-eof move-to-t[op] multiple multiple-key multitasking-interval must-exist -syn keyword ProgressOperator name native ne new-row next-col[umn] next-sibling next-tab-ite[m] next-value no-apply no-assign no-bind-where no-box no-column-scroll[ing] no-convert no-current-value -syn keyword ProgressOperator no-debug no-drag no-echo no-index-hint no-join-by-sqldb no-lookahead no-row-markers no-scrolling no-separate-connection no-separators no-und[erline] no-word-wrap -syn keyword ProgressOperator none num-but[tons] num-col[umns] num-copies num-formats num-items num-iterations num-lines num-locked-colum[ns] num-messages num-results num-selected num-selected-rows -syn keyword ProgressOperator num-selected-widgets num-tabs num-to-retain numeric numeric-f[ormat] octet_length ok ok-cancel on-frame[-border] ordered-join ordinal orientation os-getenv outer -syn keyword ProgressOperator outer-join override owner page-size page-wid[th] paged parent partial-key pascal pathname pfc[olor] pinnable pixels-per-colum[n] pixels-per-row popup-m[enu] popup-o[nly] -syn keyword ProgressOperator position precision presel[ect] prev prev-col[umn] prev-sibling prev-tab-i[tem] primary printer-control-handle printer-setup private-d[ata] profiler Progress-s[ource] -syn keyword ProgressOperator publish put-double put-float put-long put-short put-string put-unsigned-short query-off-end question radio-buttons radio-set random raw raw-transfer read-file read-only -syn keyword ProgressOperator real recursive refresh refreshable replace replace-selection-text replication-create replication-delete replication-write request resiza[ble] resize retry-cancel -syn keyword ProgressOperator return-ins[erted] return-to-start-di[r] reverse-from right right-align[ed] right-trim round row row-ma[rkers] row-of rowid rule rule-row rule-y save-as save-file -syn keyword ProgressOperator screen-val[ue] scroll-bars scroll-delta scroll-horiz-value scroll-offset scroll-to-current-row scroll-to-i[tem] scroll-to-selected-row scroll-vert-value scrollable -syn keyword ProgressOperator scrollbar-horizo[ntal] scrollbar-vertic[al] scrolled-row-positio[n] scrolling se-check-pools se-enable-of[f] se-enable-on se-num-pools se-use-messa[ge] section select-focused-row -syn keyword ProgressOperator select-next-row select-prev-row select-repositioned-row select-row selectable selected selected-items selection-end selection-list selection-start selection-text -syn keyword ProgressOperator send sensitive separate-connection separators set-blue[-value] set-break set-cell-focus set-contents set-dynamic set-green[-value] set-leakpoint set-pointer-valu[e] -syn keyword ProgressOperator s[et-property] set-red[-value] set-repositioned-row set-selection set-size set-wait[-state] side-lab side-lab[e] side-lab[el] side-label-handl[e] side-lab[els] silent -syn keyword ProgressOperator simple single size size-c[hars] size-p[ixels] slider smallint sort source source-procedure sql sqrt start status-area status-area-font status-bar stdcall stenciled stop stoppe[d] -syn keyword ProgressOperator stored-proc[edure] string sub-ave[rage] sub-count sub-max[imum] sub-me[nu] sub-menu-help sub-min[imum] sub-total subscribe subst[itute] substr[ing] subtype sum super suppress-warning[s] -syn keyword ProgressOperator system-alert-box[es] system-help tab-position tabbable target target-procedure temp-dir[ectory] temp-table terminate text-selected three-d through thru tic-marks time-source title-bgc[olor] -syn keyword ProgressOperator title-dc[olor] title-fgc[olor] title-fo[nt] to-rowid toggle-box tool-bar top topic total trailing trunc[ate] type unbuff[ered] unique-id unload unsubscribe upper use use-dic[t-exps] -syn keyword ProgressOperator use-filename use-text v6display valid-event valid-handle validate validate-condition validate-message var[iable] vert[ical] virtual-height virtual-height-c[hars] -syn keyword ProgressOperator virtual-height-pixel[s] virtual-width virtual-width-ch[ars] virtual-width-pi[xels] visible wait warning weekday widget widget-e[nter] widget-h[andle] widget-l[eave] -syn keyword ProgressOperator widget-pool width width[-chars] width-p[ixels] window-name window-sta[te] window-sys[tem] word-wrap x-of y-of year yes-no yes-no-cancel _dcm - -syn keyword ProgressType char[acter] int[eger] format -syn keyword ProgressType var[iable] log[ical] da[te] - -syn sync lines=800 - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_progress_syntax_inits") - if version < 508 - let did_progress_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " The default methods for highlighting. Can be overridden later. - HiLink ProgressByte Number - HiLink ProgressCase Repeat - HiLink ProgressComment Comment - HiLink ProgressConditional Conditional - HiLink ProgressDebug Debug - HiLink ProgressDo Repeat - HiLink ProgressEndError Error - HiLink ProgressFor Repeat - HiLink ProgressFunction Procedure - HiLink ProgressIdentifier Identifier - HiLink ProgressInclude Include - HiLink ProgressMatrixDelimiter Identifier - HiLink ProgressNumber Number - HiLink ProgressOperator Operator - HiLink ProgressPreProc PreProc - HiLink ProgressProcedure Procedure - HiLink ProgressQuote Delimiter - HiLink ProgressRepeat Repeat - HiLink ProgressReserved Statement - HiLink ProgressSpaceError Error - HiLink ProgressString String - HiLink ProgressTodo Todo - HiLink ProgressType Statement - HiLink ProgressShowTab Error - - delcommand HiLink -endif - -let b:current_syntax = "progress" - -" vim: ts=8 sw=8 diff --git a/share/vim/vim73/syntax/prolog.vim b/share/vim/vim73/syntax/prolog.vim deleted file mode 100644 index 58de71f4..00000000 --- a/share/vim/vim73/syntax/prolog.vim +++ /dev/null @@ -1,119 +0,0 @@ -" Vim syntax file -" Language: PROLOG -" Maintainers: Thomas Koehler -" Last Change: 2009 Dec 04 -" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim - -" There are two sets of highlighting in here: -" If the "prolog_highlighting_clean" variable exists, it is rather sparse. -" Otherwise you get more highlighting. - -" Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Prolog is case sensitive. -syn case match - -" Very simple highlighting for comments, clause heads and -" character codes. It respects prolog strings and atoms. - -syn region prologCComment start=+/\*+ end=+\*/+ -syn match prologComment +%.*+ - -syn keyword prologKeyword module meta_predicate multifile dynamic -syn match prologCharCode +0'\\\=.+ -syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+ -syn region prologClauseHead start=+^[a-z][^(]*(+ skip=+\.[^ ]+ end=+:-\|\.$\|\.[ ]\|-->+ contains=prologComment,prologCComment,prologString - -if !exists("prolog_highlighting_clean") - - " some keywords - " some common predicates are also highlighted as keywords - " is there a better solution? - syn keyword prologKeyword abolish current_output peek_code - syn keyword prologKeyword append current_predicate put_byte - syn keyword prologKeyword arg current_prolog_flag put_char - syn keyword prologKeyword asserta fail put_code - syn keyword prologKeyword assertz findall read - syn keyword prologKeyword at_end_of_stream float read_term - syn keyword prologKeyword atom flush_output repeat - syn keyword prologKeyword atom_chars functor retract - syn keyword prologKeyword atom_codes get_byte set_input - syn keyword prologKeyword atom_concat get_char set_output - syn keyword prologKeyword atom_length get_code set_prolog_flag - syn keyword prologKeyword atomic halt set_stream_position - syn keyword prologKeyword bagof integer setof - syn keyword prologKeyword call is stream_property - syn keyword prologKeyword catch nl sub_atom - syn keyword prologKeyword char_code nonvar throw - syn keyword prologKeyword char_conversion number true - syn keyword prologKeyword clause number_chars unify_with_occurs_check - syn keyword prologKeyword close number_codes var - syn keyword prologKeyword compound once write - syn keyword prologKeyword copy_term op write_canonical - syn keyword prologKeyword current_char_conversion open write_term - syn keyword prologKeyword current_input peek_byte writeq - syn keyword prologKeyword current_op peek_char - - syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|=" - syn match prologAsIs "===\|\\===\|<=\|=>" - - syn match prologNumber "\<[0123456789]*\>'\@!" - syn match prologCommentError "\*/" - syn match prologSpecialCharacter ";" - syn match prologSpecialCharacter "!" - syn match prologQuestion "?-.*\." contains=prologNumber - - -endif - -syn sync maxlines=50 - - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_prolog_syn_inits") - if version < 508 - let did_prolog_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " The default highlighting. - HiLink prologComment Comment - HiLink prologCComment Comment - HiLink prologCharCode Special - - if exists ("prolog_highlighting_clean") - - HiLink prologKeyword Statement - HiLink prologClauseHead Statement - - else - - HiLink prologKeyword Keyword - HiLink prologClauseHead Constant - HiLink prologQuestion PreProc - HiLink prologSpecialCharacter Special - HiLink prologNumber Number - HiLink prologAsIs Normal - HiLink prologCommentError Error - HiLink prologAtom String - HiLink prologString String - HiLink prologOperator Operator - - endif - - delcommand HiLink -endif - -let b:current_syntax = "prolog" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/python.vim b/share/vim/vim73/syntax/python.vim deleted file mode 100644 index d5907432..00000000 --- a/share/vim/vim73/syntax/python.vim +++ /dev/null @@ -1,295 +0,0 @@ -" Vim syntax file -" Language: Python -" Maintainer: Neil Schemenauer -" Last Change: 2009-10-13 -" Credits: Zvezdan Petkovic -" Neil Schemenauer -" Dmitry Vasiliev -" -" This version is a major rewrite by Zvezdan Petkovic. -" -" - introduced highlighting of doctests -" - updated keywords, built-ins, and exceptions -" - corrected regular expressions for -" -" * functions -" * decorators -" * strings -" * escapes -" * numbers -" * space error -" -" - corrected synchronization -" - more highlighting is ON by default, except -" - space error highlighting is OFF by default -" -" Optional highlighting can be controlled using these variables. -" -" let python_no_builtin_highlight = 1 -" let python_no_doctest_code_highlight = 1 -" let python_no_doctest_highlight = 1 -" let python_no_exception_highlight = 1 -" let python_no_number_highlight = 1 -" let python_space_error_highlight = 1 -" -" All the options above can be switched on together. -" -" let python_highlight_all = 1 -" - -" For version 5.x: Clear all syntax items. -" For version 6.x: Quit when a syntax file was already loaded. -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Keep Python keywords in alphabetical order inside groups for easy -" comparison with the table in the 'Python Language Reference' -" http://docs.python.org/reference/lexical_analysis.html#keywords. -" Groups are in the order presented in NAMING CONVENTIONS in syntax.txt. -" Exceptions come last at the end of each group (class and def below). -" -" Keywords 'with' and 'as' are new in Python 2.6 -" (use 'from __future__ import with_statement' in Python 2.5). -" -" Some compromises had to be made to support both Python 3.0 and 2.6. -" We include Python 3.0 features, but when a definition is duplicated, -" the last definition takes precedence. -" -" - 'False', 'None', and 'True' are keywords in Python 3.0 but they are -" built-ins in 2.6 and will be highlighted as built-ins below. -" - 'exec' is a built-in in Python 3.0 and will be highlighted as -" built-in below. -" - 'nonlocal' is a keyword in Python 3.0 and will be highlighted. -" - 'print' is a built-in in Python 3.0 and will be highlighted as -" built-in below (use 'from __future__ import print_function' in 2.6) -" -syn keyword pythonStatement False, None, True -syn keyword pythonStatement as assert break continue del exec global -syn keyword pythonStatement lambda nonlocal pass print return with yield -syn keyword pythonStatement class def nextgroup=pythonFunction skipwhite -syn keyword pythonConditional elif else if -syn keyword pythonRepeat for while -syn keyword pythonOperator and in is not or -syn keyword pythonException except finally raise try -syn keyword pythonInclude from import - -" Decorators (new in Python 2.4) -syn match pythonDecorator "@" display nextgroup=pythonFunction skipwhite -" The zero-length non-grouping match before the function name is -" extremely important in pythonFunction. Without it, everything is -" interpreted as a function inside the contained environment of -" doctests. -" A dot must be allowed because of @MyClass.myfunc decorators. -syn match pythonFunction - \ "\%(\%(def\s\|class\s\|@\)\s*\)\@<=\h\%(\w\|\.\)*" contained - -syn match pythonComment "#.*$" contains=pythonTodo,@Spell -syn keyword pythonTodo FIXME NOTE NOTES TODO XXX contained - -" Triple-quoted strings can contain doctests. -syn region pythonString - \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" - \ contains=pythonEscape,@Spell -syn region pythonString - \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend - \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell -syn region pythonRawString - \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" - \ contains=@Spell -syn region pythonRawString - \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend - \ contains=pythonSpaceError,pythonDoctest,@Spell - -syn match pythonEscape +\\[abfnrtv'"\\]+ contained -syn match pythonEscape "\\\o\{1,3}" contained -syn match pythonEscape "\\x\x\{2}" contained -syn match pythonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained -" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/ -syn match pythonEscape "\\N{\a\+\%(\s\a\+\)*}" contained -syn match pythonEscape "\\$" - -if exists("python_highlight_all") - if exists("python_no_builtin_highlight") - unlet python_no_builtin_highlight - endif - if exists("python_no_doctest_code_highlight") - unlet python_no_doctest_code_highlight - endif - if exists("python_no_doctest_highlight") - unlet python_no_doctest_highlight - endif - if exists("python_no_exception_highlight") - unlet python_no_exception_highlight - endif - if exists("python_no_number_highlight") - unlet python_no_number_highlight - endif - let python_space_error_highlight = 1 -endif - -" It is very important to understand all details before changing the -" regular expressions below or their order. -" The word boundaries are *not* the floating-point number boundaries -" because of a possible leading or trailing decimal point. -" The expressions below ensure that all valid number literals are -" highlighted, and invalid number literals are not. For example, -" -" - a decimal point in '4.' at the end of a line is highlighted, -" - a second dot in 1.0.0 is not highlighted, -" - 08 is not highlighted, -" - 08e0 or 08j are highlighted, -" -" and so on, as specified in the 'Python Language Reference'. -" http://docs.python.org/reference/lexical_analysis.html#numeric-literals -if !exists("python_no_number_highlight") - " numbers (including longs and complex) - syn match pythonNumber "\<0[oO]\=\o\+[Ll]\=\>" - syn match pythonNumber "\<0[xX]\x\+[Ll]\=\>" - syn match pythonNumber "\<0[bB][01]\+[Ll]\=\>" - syn match pythonNumber "\<\%([1-9]\d*\|0\)[Ll]\=\>" - syn match pythonNumber "\<\d\+[jJ]\>" - syn match pythonNumber "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" - syn match pythonNumber - \ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@=" - syn match pythonNumber - \ "\%(^\|\W\)\@<=\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>" -endif - -" Group the built-ins in the order in the 'Python Library Reference' for -" easier comparison. -" http://docs.python.org/library/constants.html -" http://docs.python.org/library/functions.html -" http://docs.python.org/library/functions.html#non-essential-built-in-functions -" Python built-in functions are in alphabetical order. -if !exists("python_no_builtin_highlight") - " built-in constants - " 'False', 'True', and 'None' are also reserved words in Python 3.0 - syn keyword pythonBuiltin False True None - syn keyword pythonBuiltin NotImplemented Ellipsis __debug__ - " built-in functions - syn keyword pythonBuiltin abs all any bin bool chr classmethod - syn keyword pythonBuiltin compile complex delattr dict dir divmod - syn keyword pythonBuiltin enumerate eval filter float format - syn keyword pythonBuiltin frozenset getattr globals hasattr hash - syn keyword pythonBuiltin help hex id input int isinstance - syn keyword pythonBuiltin issubclass iter len list locals map max - syn keyword pythonBuiltin min next object oct open ord pow print - syn keyword pythonBuiltin property range repr reversed round set - syn keyword pythonBuiltin setattr slice sorted staticmethod str - syn keyword pythonBuiltin sum super tuple type vars zip __import__ - " Python 2.6 only - syn keyword pythonBuiltin basestring callable cmp execfile file - syn keyword pythonBuiltin long raw_input reduce reload unichr - syn keyword pythonBuiltin unicode xrange - " Python 3.0 only - syn keyword pythonBuiltin ascii bytearray bytes exec memoryview - " non-essential built-in functions; Python 2.6 only - syn keyword pythonBuiltin apply buffer coerce intern -endif - -" From the 'Python Library Reference' class hierarchy at the bottom. -" http://docs.python.org/library/exceptions.html -if !exists("python_no_exception_highlight") - " builtin base exceptions (only used as base classes for other exceptions) - syn keyword pythonExceptions BaseException Exception - syn keyword pythonExceptions ArithmeticError EnvironmentError - syn keyword pythonExceptions LookupError - " builtin base exception removed in Python 3.0 - syn keyword pythonExceptions StandardError - " builtin exceptions (actually raised) - syn keyword pythonExceptions AssertionError AttributeError BufferError - syn keyword pythonExceptions EOFError FloatingPointError GeneratorExit - syn keyword pythonExceptions IOError ImportError IndentationError - syn keyword pythonExceptions IndexError KeyError KeyboardInterrupt - syn keyword pythonExceptions MemoryError NameError NotImplementedError - syn keyword pythonExceptions OSError OverflowError ReferenceError - syn keyword pythonExceptions RuntimeError StopIteration SyntaxError - syn keyword pythonExceptions SystemError SystemExit TabError TypeError - syn keyword pythonExceptions UnboundLocalError UnicodeError - syn keyword pythonExceptions UnicodeDecodeError UnicodeEncodeError - syn keyword pythonExceptions UnicodeTranslateError ValueError VMSError - syn keyword pythonExceptions WindowsError ZeroDivisionError - " builtin warnings - syn keyword pythonExceptions BytesWarning DeprecationWarning FutureWarning - syn keyword pythonExceptions ImportWarning PendingDeprecationWarning - syn keyword pythonExceptions RuntimeWarning SyntaxWarning UnicodeWarning - syn keyword pythonExceptions UserWarning Warning -endif - -if exists("python_space_error_highlight") - " trailing whitespace - syn match pythonSpaceError display excludenl "\s\+$" - " mixed tabs and spaces - syn match pythonSpaceError display " \+\t" - syn match pythonSpaceError display "\t\+ " -endif - -" Do not spell doctests inside strings. -" Notice that the end of a string, either ''', or """, will end the contained -" doctest too. Thus, we do *not* need to have it as an end pattern. -if !exists("python_no_doctest_highlight") - if !exists("python_no_doctest_code_higlight") - syn region pythonDoctest - \ start="^\s*>>>\s" end="^\s*$" - \ contained contains=ALLBUT,pythonDoctest,@Spell - syn region pythonDoctestValue - \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$" - \ contained - else - syn region pythonDoctest - \ start="^\s*>>>" end="^\s*$" - \ contained contains=@NoSpell - endif -endif - -" Sync at the beginning of class, function, or method definition. -syn sync match pythonSync grouphere NONE "^\s*\%(def\|class\)\s\+\h\w*\s*(" - -if version >= 508 || !exists("did_python_syn_inits") - if version <= 508 - let did_python_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " The default highlight links. Can be overridden later. - HiLink pythonStatement Statement - HiLink pythonConditional Conditional - HiLink pythonRepeat Repeat - HiLink pythonOperator Operator - HiLink pythonException Exception - HiLink pythonInclude Include - HiLink pythonDecorator Define - HiLink pythonFunction Function - HiLink pythonComment Comment - HiLink pythonTodo Todo - HiLink pythonString String - HiLink pythonRawString String - HiLink pythonEscape Special - if !exists("python_no_number_highlight") - HiLink pythonNumber Number - endif - if !exists("python_no_builtin_highlight") - HiLink pythonBuiltin Function - endif - if !exists("python_no_exception_highlight") - HiLink pythonExceptions Structure - endif - if exists("python_space_error_highlight") - HiLink pythonSpaceError Error - endif - if !exists("python_no_doctest_highlight") - HiLink pythonDoctest Special - HiLink pythonDoctestValue Define - endif - - delcommand HiLink -endif - -let b:current_syntax = "python" - -" vim:set sw=2 sts=2 ts=8 noet: diff --git a/share/vim/vim73/syntax/r.vim b/share/vim/vim73/syntax/r.vim deleted file mode 100644 index f3e730ef..00000000 --- a/share/vim/vim73/syntax/r.vim +++ /dev/null @@ -1,111 +0,0 @@ -" Vim syntax file -" Language: R (GNU S) -" Maintainer: Vaidotas Zemlys -" Last Change: 2006 Apr 30 -" Filenames: *.R *.Rout *.r *.Rhistory *.Rt *.Rout.save *.Rout.fail -" URL: http://uosis.mif.vu.lt/~zemlys/vim-syntax/r.vim - -" First maintainer Tom Payne -" Modified to make syntax less colourful and added the highlighting of -" R assignment arrow - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if version >= 600 - setlocal iskeyword=@,48-57,_,. -else - set iskeyword=@,48-57,_,. -endif - -syn case match - -" Comment -syn match rComment /\#.*/ - -" Constant -" string enclosed in double quotes -syn region rString start=/"/ skip=/\\\\\|\\"/ end=/"/ -" string enclosed in single quotes -syn region rString start=/'/ skip=/\\\\\|\\'/ end=/'/ -" number with no fractional part or exponent -syn match rNumber /\d\+/ -" floating point number with integer and fractional parts and optional exponent -syn match rFloat /\d\+\.\d*\([Ee][-+]\=\d\+\)\=/ -" floating point number with no integer part and optional exponent -syn match rFloat /\.\d\+\([Ee][-+]\=\d\+\)\=/ -" floating point number with no fractional part and optional exponent -syn match rFloat /\d\+[Ee][-+]\=\d\+/ - -" Identifier -" identifier with leading letter and optional following keyword characters -syn match rIdentifier /\a\k*/ -" identifier with leading period, one or more digits, and at least one non-digit keyword character -syn match rIdentifier /\.\d*\K\k*/ - -" Statement -syn keyword rStatement break next return -syn keyword rConditional if else -syn keyword rRepeat for in repeat while - -" Constant -syn keyword rConstant LETTERS letters month.ab month.name pi -syn keyword rConstant NULL -syn keyword rBoolean FALSE TRUE -syn keyword rNumber NA -syn match rArrow /<\{1,2}-/ - -" Type -syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame - -" Special -syn match rDelimiter /[,;:]/ - -" Error -syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError -syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError -syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError -syn match rError /[)\]}]/ -syn match rBraceError /[)}]/ contained -syn match rCurlyError /[)\]]/ contained -syn match rParenError /[\]}]/ contained - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_r_syn_inits") - if version < 508 - let did_r_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - HiLink rComment Comment - HiLink rConstant Constant - HiLink rString String - HiLink rNumber Number - HiLink rBoolean Boolean - HiLink rFloat Float - HiLink rStatement Statement - HiLink rConditional Conditional - HiLink rRepeat Repeat - HiLink rIdentifier Normal - HiLink rArrow Statement - HiLink rType Type - HiLink rDelimiter Delimiter - HiLink rError Error - HiLink rBraceError Error - HiLink rCurlyError Error - HiLink rParenError Error - delcommand HiLink -endif - -let b:current_syntax="r" - -" vim: ts=8 sw=2 - diff --git a/share/vim/vim73/syntax/ratpoison.vim b/share/vim/vim73/syntax/ratpoison.vim deleted file mode 100644 index b1475600..00000000 --- a/share/vim/vim73/syntax/ratpoison.vim +++ /dev/null @@ -1,272 +0,0 @@ -" Vim syntax file -" Language: Ratpoison configuration/commands file ( /etc/ratpoisonrc ~/.ratpoisonrc ) -" Maintainer: Doug Kearns -" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/syntax/ratpoison.vim -" Last Change: 2005 Oct 06 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn match ratpoisonComment "^\s*#.*$" contains=ratpoisonTodo - -syn keyword ratpoisonTodo TODO NOTE FIXME XXX contained - -syn case ignore -syn keyword ratpoisonBooleanArg on off contained -syn case match - -syn keyword ratpoisonCommandArg abort addhook alias banish chdir contained -syn keyword ratpoisonCommandArg clrunmanaged cnext colon compat cother contained -syn keyword ratpoisonCommandArg cprev curframe dedicate definekey delete contained -syn keyword ratpoisonCommandArg delkmap describekey echo escape exec contained -syn keyword ratpoisonCommandArg fdump focus focusdown focuslast focusleft contained -syn keyword ratpoisonCommandArg focusprev focusright focusup frestore fselect contained -syn keyword ratpoisonCommandArg gdelete getenv getsel gmerge gmove contained -syn keyword ratpoisonCommandArg gnew gnewbg gnext gprev gravity contained -syn keyword ratpoisonCommandArg groups gselect help hsplit inext contained -syn keyword ratpoisonCommandArg info iother iprev kill lastmsg contained -syn keyword ratpoisonCommandArg license link listhook meta msgwait contained -syn keyword ratpoisonCommandArg newkmap newwm next nextscreen number contained -syn keyword ratpoisonCommandArg only other prev prevscreen prompt contained -syn keyword ratpoisonCommandArg putsel quit ratclick rathold ratrelwarp contained -syn keyword ratpoisonCommandArg ratwarp readkey redisplay redo remhook contained -syn keyword ratpoisonCommandArg remove resize restart rudeness sdump contained -syn keyword ratpoisonCommandArg select set setenv sfdump shrink contained -syn keyword ratpoisonCommandArg source sselect startup_message time title contained -syn keyword ratpoisonCommandArg tmpwm unalias undefinekey undo unmanage contained -syn keyword ratpoisonCommandArg unsetenv verbexec version vsplit warp contained -syn keyword ratpoisonCommandArg windows contained - -syn match ratpoisonGravityArg "\<\(n\|north\)\>" contained -syn match ratpoisonGravityArg "\<\(nw\|northwest\)\>" contained -syn match ratpoisonGravityArg "\<\(ne\|northeast\)\>" contained -syn match ratpoisonGravityArg "\<\(w\|west\)\>" contained -syn match ratpoisonGravityArg "\<\(c\|center\)\>" contained -syn match ratpoisonGravityArg "\<\(e\|east\)\>" contained -syn match ratpoisonGravityArg "\<\(s\|south\)\>" contained -syn match ratpoisonGravityArg "\<\(sw\|southwest\)\>" contained -syn match ratpoisonGravityArg "\<\(se\|southeast\)\>" contained -syn case match - -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(F[1-9][0-9]\=\|\(\a\|\d\)\)\>" contained nextgroup=ratpoisonCommandArg skipwhite - -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(space\|exclam\|quotedbl\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(numbersign\|dollar\|percent\|ampersand\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(apostrophe\|quoteright\|parenleft\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(parenright\|asterisk\|plus\|comma\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(minus\|period\|slash\|colon\|semicolon\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(less\|equal\|greater\|question\|at\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(bracketleft\|backslash\|bracketright\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(asciicircum\|underscore\|grave\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(quoteleft\|braceleft\|bar\|braceright\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(asciitilde\)\>" contained nextgroup=ratpoisonCommandArg skipwhite - -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(BackSpace\|Tab\|Linefeed\|Clear\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Return\|Pause\|Scroll_Lock\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Sys_Req\|Escape\|Delete\)\>" contained nextgroup=ratpoisonCommandArg skipwhite - -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Home\|Left\|Up\|Right\|Down\|Prior\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Page_Up\|Next\|Page_Down\|End\|Begin\)\>" contained nextgroup=ratpoisonCommandArg skipwhite - -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Select\|Print\|Execute\|Insert\|Undo\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Redo\|Menu\|Find\|Cancel\|Help\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Break\|Mode_switch\|script_switch\|Num_Lock\)\>" contained nextgroup=ratpoisonCommandArg skipwhite - -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Space\|Tab\|Enter\|F[1234]\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Home\|Left\|Up\|Right\|Down\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Prior\|Page_Up\|Next\|Page_Down\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(End\|Begin\|Insert\|Delete\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Equal\|Multiply\|Add\|Separator\)\>" contained nextgroup=ratpoisonCommandArg skipwhite -syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Subtract\|Decimal\|Divide\|\d\)\>" contained nextgroup=ratpoisonCommandArg skipwhite - -syn match ratpoisonHookArg "\<\(key\|switchwin\|switchframe\|switchgroup\|quit\|restart\)\>" contained - -syn match ratpoisonNumberArg "\<\d\+\>" contained nextgroup=ratpoisonNumberArg skipwhite - -syn keyword ratpoisonSetArg barborder contained nextgroup=ratpoisonNumberArg -syn keyword ratpoisonSetArg bargravity contained nextgroup=ratpoisonGravityArg -syn keyword ratpoisonSetArg barpadding contained nextgroup=ratpoisonNumberArg -syn keyword ratpoisonSetArg bgcolor -syn keyword ratpoisonSetArg border contained nextgroup=ratpoisonNumberArg -syn keyword ratpoisonSetArg fgcolor -syn keyword ratpoisonSetArg font -syn keyword ratpoisonSetArg framesels -syn keyword ratpoisonSetArg inputwidth contained nextgroup=ratpoisonNumberArg -syn keyword ratpoisonSetArg maxsizegravity contained nextgroup=ratpoisonGravityArg -syn keyword ratpoisonSetArg padding contained nextgroup=ratpoisonNumberArg -syn keyword ratpoisonSetArg resizeunit contained nextgroup=ratpoisonNumberArg -syn keyword ratpoisonSetArg transgravity contained nextgroup=ratpoisonGravityArg -syn keyword ratpoisonSetArg waitcursor contained nextgroup=ratpoisonNumberArg -syn keyword ratpoisonSetArg winfmt contained nextgroup=ratpoisonWinFmtArg -syn keyword ratpoisonSetArg wingravity contained nextgroup=ratpoisonGravityArg -syn keyword ratpoisonSetArg winliststyle contained nextgroup=ratpoisonWinListArg -syn keyword ratpoisonSetArg winname contained nextgroup=ratpoisonWinNameArg - -syn match ratpoisonWinFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite - -syn match ratpoisonWinListArg "\<\(row\|column\)\>" contained - -syn match ratpoisonWinNameArg "\<\(name\|title\|class\)\>" contained - -syn match ratpoisonDefCommand "^\s*set\s*" nextgroup=ratpoisonSetArg -syn match ratpoisonDefCommand "^\s*defbarborder\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonDefCommand "^\s*defbargravity\s*" nextgroup=ratpoisonGravityArg -syn match ratpoisonDefCommand "^\s*defbarpadding\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonDefCommand "^\s*defbgcolor\s*" -syn match ratpoisonDefCommand "^\s*defborder\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonDefCommand "^\s*deffgcolor\s*" -syn match ratpoisonDefCommand "^\s*deffont\s*" -syn match ratpoisonDefCommand "^\s*defframesels\s*" -syn match ratpoisonDefCommand "^\s*definputwidth\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonDefCommand "^\s*defmaxsizegravity\s*" nextgroup=ratpoisonGravityArg -syn match ratpoisonDefCommand "^\s*defpadding\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonDefCommand "^\s*defresizeunit\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonDefCommand "^\s*deftransgravity\s*" nextgroup=ratpoisonGravityArg -syn match ratpoisonDefCommand "^\s*defwaitcursor\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonDefCommand "^\s*defwinfmt\s*" nextgroup=ratpoisonWinFmtArg -syn match ratpoisonDefCommand "^\s*defwingravity\s*" nextgroup=ratpoisonGravityArg -syn match ratpoisonDefCommand "^\s*defwinliststyle\s*" nextgroup=ratpoisonWinListArg -syn match ratpoisonDefCommand "^\s*defwinname\s*" nextgroup=ratpoisonWinNameArg -syn match ratpoisonDefCommand "^\s*msgwait\s*" nextgroup=ratpoisonNumberArg - -syn match ratpoisonStringCommand "^\s*\zsaddhook\ze\s*" nextgroup=ratpoisonHookArg -syn match ratpoisonStringCommand "^\s*\zsalias\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsbind\ze\s*" nextgroup=ratpoisonKeySeqArg -syn match ratpoisonStringCommand "^\s*\zschdir\ze\s*" -syn match ratpoisonStringCommand "^\s*\zscolon\ze\s*" nextgroup=ratpoisonCommandArg -syn match ratpoisonStringCommand "^\s*\zsdedicate\ze\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonStringCommand "^\s*\zsdefinekey\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsdelkmap\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsdescribekey\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsecho\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsescape\ze\s*" nextgroup=ratpoisonKeySeqArg -syn match ratpoisonStringCommand "^\s*\zsexec\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsfdump\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsfrestore\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsgdelete\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsgetenv\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsgravity\ze\s*" nextgroup=ratpoisonGravityArg -syn match ratpoisonStringCommand "^\s*\zsgselect\ze\s*" -syn match ratpoisonStringCommand "^\s*\zslink\ze\s*" nextgroup=ratpoisonKeySeqArg -syn match ratpoisonStringCommand "^\s*\zslisthook\ze\s*" nextgroup=ratpoisonHookArg -syn match ratpoisonStringCommand "^\s*\zsnewkmap\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsnewwm\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsnumber\ze\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonStringCommand "^\s*\zsprompt\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsratwarp\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsratrelwarp\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsratclick\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsrathold\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsreadkey\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsremhook\ze\s*" nextgroup=ratpoisonHookArg -syn match ratpoisonStringCommand "^\s*\zsresize\ze\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonStringCommand "^\s*\zsrudeness\ze\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonStringCommand "^\s*\zsselect\ze\s*" nextgroup=ratpoisonNumberArg -syn match ratpoisonStringCommand "^\s*\zssetenv\ze\s*" -syn match ratpoisonStringCommand "^\s*\zssource\ze\s*" -syn match ratpoisonStringCommand "^\s*\zssselect\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsstartup_message\ze\s*" nextgroup=ratpoisonBooleanArg -syn match ratpoisonStringCommand "^\s*\zstitle\ze\s*" -syn match ratpoisonStringCommand "^\s*\zstmpwm\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsunalias\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsunbind\ze\s*" nextgroup=ratpoisonKeySeqArg -syn match ratpoisonStringCommand "^\s*\zsundefinekey\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsunmanage\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsunsetenv\ze\s*" -syn match ratpoisonStringCommand "^\s*\zsverbexec\ze\s*" -syn match ratpoisonStringCommand "^\s*\zswarp\ze\s*" nextgroup=ratpoisonBooleanArg - -syn match ratpoisonVoidCommand "^\s*\zsabort\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsbanish\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsclrunmanaged\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zscnext\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zscompat\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zscother\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zscprev\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zscurframe\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsdelete\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsfocusdown\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsfocuslast\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsfocusleft\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsfocusprev\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsfocusright\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsfocusup\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsfocus\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsfselect\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsgetsel\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsgmerge\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsgmove\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsgnewbg\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsgnew\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsgnext\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsgprev\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsgroups\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zshelp\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zshsplit\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsinext\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsinfo\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsiother\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsiprev\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zskill\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zslastmsg\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zslicense\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsmeta\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsnextscreen\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsnext\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsonly\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsother\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsprevscreen\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsprev\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsputsel\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsquit\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsredisplay\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsredo\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsremove\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsrestart\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zssdump\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zssfdump\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsshrink\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zssplit\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zstime\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsundo\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsversion\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zsvsplit\ze\s*$" -syn match ratpoisonVoidCommand "^\s*\zswindows\ze\s*$" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_ratpoison_syn_inits") - if version < 508 - let did_ratpoison_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink ratpoisonBooleanArg Boolean - HiLink ratpoisonCommandArg Keyword - HiLink ratpoisonComment Comment - HiLink ratpoisonDefCommand Identifier - HiLink ratpoisonGravityArg Constant - HiLink ratpoisonKeySeqArg Special - HiLink ratpoisonNumberArg Number - HiLink ratpoisonSetArg Keyword - HiLink ratpoisonStringCommand Identifier - HiLink ratpoisonTodo Todo - HiLink ratpoisonVoidCommand Identifier - HiLink ratpoisonWinFmtArg Special - HiLink ratpoisonWinNameArg Constant - HiLink ratpoisonWinListArg Constant - - delcommand HiLink -endif - -let b:current_syntax = "ratpoison" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/rcs.vim b/share/vim/vim73/syntax/rcs.vim deleted file mode 100644 index 04a2cce9..00000000 --- a/share/vim/vim73/syntax/rcs.vim +++ /dev/null @@ -1,76 +0,0 @@ -" Vim syntax file -" Language: RCS file -" Maintainer: Dmitry Vasiliev -" URL: http://www.hlabs.spb.ru/vim/rcs.vim -" Revision: $Id: rcs.vim,v 1.2 2006/03/27 16:41:00 vimboss Exp $ -" Filenames: *,v -" Version: 1.11 - -" Options: -" rcs_folding = 1 For folding strings - -" For version 5.x: Clear all syntax items. -" For version 6.x: Quit when a syntax file was already loaded. -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" RCS file must end with a newline. -syn match rcsEOFError ".\%$" containedin=ALL - -" Keywords. -syn keyword rcsKeyword head branch access symbols locks strict -syn keyword rcsKeyword comment expand date author state branches -syn keyword rcsKeyword next desc log -syn keyword rcsKeyword text nextgroup=rcsTextStr skipwhite skipempty - -" Revision numbers and dates. -syn match rcsNumber "\<[0-9.]\+\>" display - -" Strings. -if exists("rcs_folding") && has("folding") - " Folded strings. - syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" fold contains=rcsSpecial - syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" fold contained contains=rcsSpecial,rcsDiffLines -else - syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" contains=rcsSpecial - syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" contained contains=rcsSpecial,rcsDiffLines -endif -syn match rcsSpecial "@@" contained -syn match rcsDiffLines "[da]\d\+ \d\+$" contained - -" Synchronization. -syn sync clear -if exists("rcs_folding") && has("folding") - syn sync fromstart -else - " We have incorrect folding if following sync patterns is turned on. - syn sync match rcsSync grouphere rcsString "[0-9.]\+\(\s\|\n\)\+log\(\s\|\n\)\+@"me=e-1 - syn sync match rcsSync grouphere rcsTextStr "@\(\s\|\n\)\+text\(\s\|\n\)\+@"me=e-1 -endif - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already. -" For version 5.8 and later: only when an item doesn't have highlighting yet. -if version >= 508 || !exists("did_rcs_syn_inits") - if version <= 508 - let did_rcs_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink rcsKeyword Keyword - HiLink rcsNumber Identifier - HiLink rcsString String - HiLink rcsTextStr String - HiLink rcsSpecial Special - HiLink rcsDiffLines Special - HiLink rcsEOFError Error - - delcommand HiLink -endif - -let b:current_syntax = "rcs" diff --git a/share/vim/vim73/syntax/readline.vim b/share/vim/vim73/syntax/readline.vim deleted file mode 100644 index 91094c79..00000000 --- a/share/vim/vim73/syntax/readline.vim +++ /dev/null @@ -1,176 +0,0 @@ -" Vim syntax file -" Language: readline(3) configuration file -" Maintainer: Nikolai Weibull -" Latest Revision: 2009-05-25 -" readline_has_bash - if defined add support for bash specific -" settings/functions - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -setlocal iskeyword+=- - -syn keyword readlineTodo contained TODO FIXME XXX NOTE - -syn region readlineComment display oneline start='^\s*#' end='$' - \ contains=readlineTodo,@Spell - -syn match readlineString '^\s*[A-Za-z-]\+:'me=e-1 contains=readlineKeys -syn region readlineString display oneline start=+"+ skip=+\\\\\|\\"+ - \ end=+"+ contains=readlineKeysTwo - -syn case ignore -syn keyword readlineKeys contained Control Meta Del Esc Escape LFD - \ Newline Ret Return Rubout Space Spc Tab -syn case match - -syn match readlineKeysTwo contained display - \ +\\\([CM]-\|[e\\"'abdfnrtv]\|\o\{3}\|x\x\{3}\)+ - -syn match readlineKeymaps contained display - \ 'emacs\(-standard\|-meta\|-ctlx\)\=' -syn match readlineKeymaps contained display - \ 'vi\(-move\|-command\|-insert\)\=' - -syn keyword readlineBellStyles contained audible visible none - -syn match readlineNumber contained display '\<\d\+\>' - -syn case ignore -syn keyword readlineBoolean contained on off -syn case match - -syn keyword readlineIfOps contained mode term - -syn region readlineConditional display oneline transparent - \ matchgroup=readlineConditional - \ start='^\s*$if' end="$" - \ contains=readlineIfOps,readlineKeymaps -syn match readlineConditional display '^\s*$\(else\|endif\)\>' - -syn match readlineInclude display '^\s*$include\>' - -syn region readlineSet display oneline transparent - \ matchgroup=readlineKeyword start='^\s*set\>' - \ end="$"me=e-1 contains=readlineNumber, - \ readlineBoolean,readlineKeymaps, - \ readlineBellStyles,readlineSettings - -syn keyword readlineSettings contained bell-style comment-begin - \ completion-ignore-case completion-query-items - \ convert-meta disable-completion editing-mode - \ enable-keypad expand-tilde - \ horizontal-scroll-mode mark-directories - \ keymap mark-modified-lines meta-flag - \ input-meta output-meta - \ print-completions-horizontally - \ show-all-if-ambiguous visible-stats - \ prefer-visible-bell blink-matching-paren - \ match-hidden-files history-preserve-point - \ isearch-terminators - -syn region readlineBinding display oneline transparent - \ matchgroup=readlineKeyword start=':' end='$' - \ contains=readlineKeys,readlineFunctions - -syn keyword readlineFunctions contained display - \ beginning-of-line end-of-line forward-char - \ backward-char forward-word backward-word - \ clear-screen redraw-current-line - \ accept-line previous-history - \ next-history beginning-of-history - \ end-of-history reverse-search-history - \ forward-search-history - \ non-incremental-reverse-search-history - \ non-incremental-forward-search-history - \ history-search-forward - \ history-search-backward - \ yank-nth-arg yank-last-arg - \ delete-char backward-delete-char - \ forward-backward-delete-char quoted-insert - \ tab-insert self-insert transpose-chars - \ transpose-words upcase-word downcase-word - \ capitalize-word overwrite-mode kill-line - \ backward-kill-line unix-line-discard - \ kill-whole-line kill-word backward-kill-word - \ unix-word-rubout unix-filename-rubout - \ delete-horizontal-space kill-region - \ copy-region-as-kill copy-backward-word - \ copy-forward-word yank yank-pop - \ digit-argument universal-argument complete - \ possible-completions insert-completions - \ menu-complete delete-char-or-list - \ start-kbd-macro end-kbd-macro - \ call-last-kbd-macro re-read-init-file - \ abort do-uppercase-version prefix-meta - \ undo revert-line tilde-expand set-mark - \ exchange-point-and-mark character-search - \ character-search-backward insert-comment - \ dump-functions dump-variables dump-macros - \ emacs-editing-mode vi-editing-mode - \ vi-complete vi-char-search vi-redo - \ vi-search vi-arg-digit vi-append-eol - \ vi-prev-word vi-change-to vi-delete-to - \ vi-end-word vi-fetch-history vi-insert-beg - \ vi-search-again vi-put vi-replace - \ vi-subst vi-yank-to vi-first-print - \ vi-yank-arg vi-goto-mark vi-append-mode - \ vi-insertion-mode prev-history vi-set-mark - \ vi-search-again vi-put vi-change-char - \ vi-subst vi-delete vi-yank-to - \ vi-column vi-change-case vi-overstrike - \ vi-overstrike-delete do-lowercase-version - \ delete-char-or-list tty-status - \ arrow-key-prefix vi-back-to-indent vi-bword - \ vi-bWord vi-eword vi-eWord vi-fword vi-fWord - \ vi-next-word - \ vi-movement-mode - -if exists("readline_has_bash") - syn keyword readlineFunctions contained - \ shell-expand-line history-expand-line - \ magic-space alias-expand-line - \ history-and-alias-expand-line - \ insert-last-argument operate-and-get-next - \ forward-backward-delete-char - \ delete-char-or-list complete-filename - \ possible-filename-completions - \ complete-username - \ possible-username-completions - \ complete-variable - \ possible-variable-completions - \ complete-hostname - \ possible-hostname-completions - \ complete-command - \ possible-command-completions - \ dynamic-complete-history - \ complete-into-braces - \ glob-expand-word glob-list-expansions - \ display-shell-version glob-complete-word - \ edit-and-execute-command -endif - -hi def link readlineComment Comment -hi def link readlineTodo Todo -hi def link readlineString String -hi def link readlineKeys SpecialChar -hi def link readlineKeysTwo SpecialChar -hi def link readlineKeymaps Constant -hi def link readlineBellStyles Constant -hi def link readlineNumber Number -hi def link readlineBoolean Boolean -hi def link readlineIfOps Type -hi def link readlineConditional Conditional -hi def link readlineInclude Include -hi def link readlineKeyword Keyword -hi def link readlineSettings Type -hi def link readlineFunctions Type - -let b:current_syntax = "readline" - -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/share/vim/vim73/syntax/resolv.vim b/share/vim/vim73/syntax/resolv.vim deleted file mode 100644 index 6ec42d27..00000000 --- a/share/vim/vim73/syntax/resolv.vim +++ /dev/null @@ -1,88 +0,0 @@ -" Vim syntax file -" Language: resolver configuration file -" Maintainer: David Ne\v{c}as (Yeti) -" Original Maintaner: Radu Dineiu -" License: This file can be redistribued and/or modified under the same terms -" as Vim itself. -" URL: http://trific.ath.cx/Ftp/vim/syntax/resolv.vim -" Last Change: 2006-04-16 - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Errors, comments and operators -syn match resolvError /./ -syn match resolvComment /\s*[#;].*$/ -syn match resolvOperator /[\/:]/ contained - -" IP -syn cluster resolvIPCluster contains=resolvIPError,resolvIPSpecial -syn match resolvIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained -syn match resolvIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained - -" General -syn match resolvIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@resolvIPCluster -syn match resolvIPNetmask contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?/ contains=resolvOperator,@resolvIPCluster -syn match resolvHostname contained /\w\{-}\.[-0-9A-Za-z_\.]*/ - -" Particular -syn match resolvIPNameserver contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\s\|$\)\)\+/ contains=@resolvIPCluster -syn match resolvHostnameSearch contained /\%(\%([-0-9A-Za-z_]\+\.\)*[-0-9A-Za-z_]\+\.\?\%(\s\|$\)\)\+/ -syn match resolvIPNetmaskSortList contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?\%(\s\|$\)\)\+/ contains=resolvOperator,@resolvIPCluster - -" Identifiers -syn match resolvNameserver /^\s*nameserver\>/ nextgroup=resolvIPNameserver skipwhite -syn match resolvLwserver /^\s*lwserver\>/ nextgroup=resolvIPNameserver skipwhite -syn match resolvDomain /^\s*domain\>/ nextgroup=resolvHostname skipwhite -syn match resolvSearch /^\s*search\>/ nextgroup=resolvHostnameSearch skipwhite -syn match resolvSortList /^\s*sortlist\>/ nextgroup=resolvIPNetmaskSortList skipwhite -syn match resolvOptions /^\s*options\>/ nextgroup=resolvOption skipwhite - -" Options -" FIXME: The manual page and the source code do not exactly agree on the set -" of allowed options -syn match resolvOption /\<\%(debug\|no_tld_query\|rotate\|no-check-names\|inet6\)\>/ contained nextgroup=resolvOption skipwhite -syn match resolvOption /\<\%(ndots\|timeout\|attempts\):\d\+\>/ contained contains=resolvOperator nextgroup=resolvOption skipwhite - -" Additional errors -syn match resolvError /^search .\{257,}/ - -if version >= 508 || !exists("did_config_syntax_inits") - if version < 508 - let did_config_syntax_inits = 1 - command! -nargs=+ HiLink hi link - else - command! -nargs=+ HiLink hi def link - endif - - HiLink resolvIP Number - HiLink resolvIPNetmask Number - HiLink resolvHostname String - HiLink resolvOption String - - HiLink resolvIPNameserver Number - HiLink resolvHostnameSearch String - HiLink resolvIPNetmaskSortList Number - - HiLink resolvNameServer Identifier - HiLink resolvLwserver Identifier - HiLink resolvDomain Identifier - HiLink resolvSearch Identifier - HiLink resolvSortList Identifier - HiLink resolvOptions Identifier - - HiLink resolvComment Comment - HiLink resolvOperator Operator - HiLink resolvError Error - HiLink resolvIPError Error - HiLink resolvIPSpecial Special - - delcommand HiLink -endif - -let b:current_syntax = "resolv" - -" vim: ts=8 ft=vim diff --git a/share/vim/vim73/syntax/reva.vim b/share/vim/vim73/syntax/reva.vim deleted file mode 100644 index 7e11ffe2..00000000 --- a/share/vim/vim73/syntax/reva.vim +++ /dev/null @@ -1,191 +0,0 @@ -" Vim syntax file -" Language: Reva Forth -" Version: 7.1 -" Last Change: 2008/01/11 -" Maintainer: Ron Aaron -" URL: http://ronware.org/reva/ -" Filetypes: *.rf *.frt -" NOTE: You should also have the ftplugin/reva.vim file to set 'isk' - -" For version 5.x: Clear all syntax items and don't load -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear - echo "Reva syntax file requires version 6.0 or later of vim!" - finish -elseif exists("b:current_syntax") - finish -endif - -syn clear - -" Synchronization method -syn sync ccomment -syn sync maxlines=100 - - -syn case ignore -" Some special, non-FORTH keywords -"syn keyword revaTodo contained todo fixme bugbug todo: bugbug: note: -syn match revaTodo contained '\(todo\|fixme\|bugbug\|note\)[:]*' -syn match revaTodo contained 'copyright\(\s(c)\)\=\(\s[0-9]\{2,4}\)\=' - -syn match revaHelpDesc '\S.*' contained -syn match revaHelpStuff '\<\(def\|stack\|ctx\|ver\|os\|related\):\s.*' -syn region revaHelpStuff start='\' end='^\S' contains=revaHelpDesc -syn region revaEOF start='\<|||\>' end='{$}' contains=revaHelpStuff - - -syn case match -" basic mathematical and logical operators -syn keyword revaoperators + - * / mod /mod negate abs min max umin umax -syn keyword revaoperators and or xor not invert 1+ 1- -syn keyword revaoperators m+ */ */mod m* um* m*/ um/mod fm/mod sm/rem -syn keyword revaoperators d+ d- dnegate dabs dmin dmax > < = >> << u< <> - - -" stack manipulations -syn keyword revastack drop nip dup over tuck swap rot -rot ?dup pick roll -syn keyword revastack 2drop 2nip 2dup 2over 2swap 2rot 3drop -syn keyword revastack >r r> r@ rdrop -" syn keyword revastack sp@ sp! rp@ rp! - -" address operations -syn keyword revamemory @ ! +! c@ c! 2@ 2! align aligned allot allocate here free resize -syn keyword revaadrarith chars char+ cells cell+ cell cell- 2cell+ 2cell- 3cell+ 4cell+ -syn keyword revamemblks move fill - -" conditionals -syn keyword revacond if else then =if >if if if0 ;; catch throw - -" iterations -syn keyword revaloop while repeat until again -syn keyword revaloop do loop i j leave unloop skip more - -" new words -syn match revaColonDef '\ immediate -syn keyword revadefine compile literal ' ['] - -" Built in words -com! -nargs=+ Builtin syn keyword revaBuiltin -Builtin execute ahead interp bye >body here pad words make -Builtin accept close cr creat delete ekey emit fsize ioerr key? -Builtin mtime open/r open/rw read rename seek space spaces stat -Builtin tell type type_ write (seek) (argv) (save) 0; 0drop; -Builtin >class >lz >name >xt alias alias: appname argc asciiz, asciizl, -Builtin body> clamp depth disassemble findprev fnvhash getenv here, -Builtin iterate last! last@ later link lz> lzmax os parse/ peek -Builtin peek-n pop prior push put rp@ rpick save setenv slurp -Builtin stack-empty? stack-iterate stack-size stack: THROW_BADFUNC -Builtin THROW_BADLIB THROW_GENERIC used xt>size z, -Builtin +lplace +place -chop /char /string bounds c+lplace c+place -Builtin chop cmp cmpi count lc lcount lplace place quote rsplit search split -Builtin zcount zt \\char -Builtin chdir g32 k32 u32 getcwd getpid hinst osname stdin stdout -Builtin (-lib) (bye) (call) (else) (find) (func) (here) (if (lib) (s0) (s^) -Builtin (to~) (while) >in >rel ?literal appstart cold compiling? context? d0 default_class -Builtin defer? dict dolstr dostr find-word h0 if) interp isa onexit -Builtin onstartup pdoes pop>ebx prompt rel> rp0 s0 src srcstr state str0 then,> then> tib -Builtin tp vector vector! word? xt? .ver revaver revaver# && '' 'constant 'context -Builtin 'create 'defer 'does 'forth 'inline 'macro 'macront 'notail 'value 'variable -Builtin (.r) (context) (create) (header) (hide) (inline) (p.r) (words~) (xfind) -Builtin ++ -- , -2drop -2nip -link -swap . .2x .classes .contexts .funcs .libs .needs .r -Builtin .rs .x 00; 0do 0if 1, 2, 3, 2* 2/ 2constant 2variable 3dup 4dup ;then >base >defer -Builtin >rr ? ?do @execute @rem appdir argv as back base base! between chain cleanup-libs -Builtin cmove> context?? ctrl-c ctx>name data: defer: defer@def dictgone do_cr eleave -Builtin endcase endof eval exception exec false find func: header heapgone help help/ -Builtin hex# hide inline{ last lastxt lib libdir literal, makeexename mnotail ms ms@ -Builtin newclass noop nosavedict notail nul of off on p: padchar parse parseln -Builtin parsews rangeof rdepth remains reset reva revaused rol8 rr> scratch setclass sp -Builtin strof super> temp time&date true turnkey? undo vfunc: w! w@ -Builtin xchg xchg2 xfind xt>name xwords { {{ }} } _+ _1+ _1- pathsep case \|| -" p[ [''] [ ['] - - -" debugging -syn keyword revadebug .s dump see - -" basic character operations -" syn keyword revaCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY -" syn keyword revaCharOps KEY? TIB CR -" syn match revaCharOps '\d >digit digit> >single >double >number >float - -" contexts -syn keyword revavocs forth macro inline -syn keyword revavocs context: -syn match revavocs /\<\~[^~ ]*/ -syn match revavocs /[^~ ]*\~\>/ - -" numbers -syn keyword revamath decimal hex base binary octal -syn match revainteger '\<-\=[0-9.]*[0-9.]\+\>' -" recognize hex and binary numbers, the '$' and '%' notation is for greva -syn match revainteger '\<\$\x*\x\+\>' " *1* --- dont't mess -syn match revainteger '\<\x*\d\x*\>' " *2* --- this order! -syn match revainteger '\<%[0-1]*[0-1]\+\>' -syn match revainteger "\<'.\>" - -" Strings -" syn region revaString start=+\.\?\"+ end=+"+ end=+$+ -syn region revaString start=/"/ skip=/\\"/ end=/"/ - -" Comments -syn region revaComment start='\\S\s' end='.*' contains=revaTodo -syn match revaComment '\.(\s[^)]\{-})' contains=revaTodo -syn region revaComment start='(\s' skip='\\)' end=')' contains=revaTodo -syn match revaComment '(\s[^\-]*\-\-[^\-]\{-})' contains=revaTodo -syn match revaComment '\<|\s.*$' contains=revaTodo -syn match revaColonDef '\<:m\?\s*[^ \t]\+\>' contains=revaComment - -" Include files -syn match revaInclude '\<\(include\|needs\)\s\+\S\+' - - -" Define the default highlighting. -if !exists("did_reva_syntax_inits") - let did_reva_syntax_inits=1 - " The default methods for highlighting. Can be overriden later. - hi def link revaEOF cIf0 - hi def link revaHelpStuff special - hi def link revaHelpDesc Comment - hi def link revaTodo Todo - hi def link revaOperators Operator - hi def link revaMath Number - hi def link revaInteger Number - hi def link revaStack Special - hi def link revaFStack Special - hi def link revaSP Special - hi def link revaMemory Operator - hi def link revaAdrArith Function - hi def link revaMemBlks Function - hi def link revaCond Conditional - hi def link revaLoop Repeat - hi def link revaColonDef Define - hi def link revaEndOfColonDef Define - hi def link revaDefine Define - hi def link revaDebug Debug - hi def link revaCharOps Character - hi def link revaConversion String - hi def link revaForth Statement - hi def link revaVocs Statement - hi def link revaString String - hi def link revaComment Comment - hi def link revaClassDef Define - hi def link revaEndOfClassDef Define - hi def link revaObjectDef Define - hi def link revaEndOfObjectDef Define - hi def link revaInclude Include - hi def link revaBuiltin Keyword -endif - -let b:current_syntax = "reva" - -" vim: ts=8:sw=4:nocindent:smartindent: diff --git a/share/vim/vim73/syntax/rexx.vim b/share/vim/vim73/syntax/rexx.vim deleted file mode 100644 index b4d07323..00000000 --- a/share/vim/vim73/syntax/rexx.vim +++ /dev/null @@ -1,298 +0,0 @@ -" Vim syntax file -" Language: Rexx -" Maintainer: Thomas Geulig -" Last Change: 2005 Dez 9, added some -coloring, -" line comments, do *over*, messages, directives, -" highlighting classes, methods, routines and requires -" 2007 Oct 17, added support for new ooRexx 3.2 features -" Rony G. Flatscher -" -" URL: http://www.geulig.de/vim/rexx.vim -" -" Special Thanks to Dan Sharp and Rony G. Flatscher -" for comments and additions - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case ignore - -" add to valid identifier chars -setlocal iskeyword+=. -setlocal iskeyword+=! -setlocal iskeyword+=? - -" ---rgf, position important: must be before comments etc. ! -syn match rexxOperator "[=|\/\\\+\*\[\],;:<>&\~%\-]" - -" rgf syn match rexxIdentifier "\<[a-zA-Z\!\?_]\([a-zA-Z0-9._?!]\)*\>" -syn match rexxIdentifier "\<\K\k*\>" -syn match rexxEnvironmentSymbol "\<\.\k\+\>" - -" A Keyword is the first symbol in a clause. A clause begins at the start -" of a line or after a semicolon. THEN, ELSE, OTHERWISE, and colons are always -" followed by an implied semicolon. -syn match rexxClause "\(^\|;\|:\|then \|else \|when \|otherwise \)\s*\S*" contains=ALLBUT,rexxParse2,rexxRaise2,rexxForward2 - -" Considered keywords when used together in a phrase and begin a clause -syn match rexxParse "\\|version\)\>" containedin=rexxClause contains=rexxParse2 -syn match rexxParse2 "\" containedin=rexxParse - -syn match rexxKeyword contained "\" -syn match rexxKeyword contained "\<\(address\|trace\)\( value\)\?\>" -syn match rexxKeyword contained "\" - -syn match rexxKeyword contained "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\(\s\+forever\)\?\>" -syn match rexxKeyword contained "\\s*\(strict\s*\)\?\" - -" Another keyword phrase, separated to aid highlighting in rexxFunction -syn match rexxRegularCallSignal contained "\<\(call\|signal\)\s\(\s*on\>\|\s*off\>\)\@!\(\k\+\ze\|\ze(\)\(\s*\|;\|$\|(\)" -syn region rexxLabel contained start="\<\(call\|signal\)\>\s*\zs\(\k*\|(\)" end="\ze\(\s*\|;\|$\|(\)" containedin=rexxRegularCallSignal - -syn match rexxExceptionHandling contained "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>.*\(;\|$\)" - -" hilite label given after keyword "name" -syn match rexxLabel "name\s\+\zs\k\+\ze" containedin=rexxExceptionHandling -" hilite condition name (serves as label) -syn match rexxLabel "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>\s*\zs\k\+\ze\s*\(;\|$\)" containedin=rexxExceptionHandling -" user exception handling, hilite user defined name -syn region rexxLabel contained start="user\s\+\zs\k" end="\ze\(\s\|;\|$\)" containedin=rexxExceptionHandling - -" Considered keywords when they begin a clause -syn match rexxKeywordStatements "\<\(arg\|catch\|do\|drop\|end\|exit\|expose\|finally\|forward\|if\|interpret\|iterate\|leave\|loop\|nop\)\>" -syn match rexxKeywordStatements "\<\(options\|pull\|push\|queue\|raise\|reply\|return\|say\|select\|trace\)\>" - -" Conditional keywords starting a new statement -syn match rexxConditional "\<\(then\|else\|when\|otherwise\)\(\s*\|;\|\_$\|\)\>" contains=rexxKeywordStatements - -" Conditional phrases -syn match rexxLoopKeywords "\<\(to\|by\|for\|until\|while\|over\)\>" containedin=doLoopSelectLabelRegion - -" must be after Conditional phrases! -syn match doLoopSelectLabelRegion "\<\(do\|loop\|select\)\>\s\+\(label\s\+\)\?\(\s\+\k\+\s\+\zs\\)\?\k*\(\s\+forever\)\?\(\s\|;\|$\)" - -" color label's name -syn match rexxLabel2 "\<\(do\|loop\|select\)\>\s\+label\s\+\zs\k*\ze" containedin=doLoopSelectLabelRegion - -" make sure control variable is normal -syn match rexxControlVariable "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\s\+\zs.*\ze\s\+\" containedin=doLoopSelectLabelRegion - -" make sure control variable assignment is normal -syn match rexxStartValueAssignment "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\s\+\zs.*\ze\(=.*\)\?\s\+\" containedin=doLoopSelectLabelRegion - -" highlight label name -syn match endIterateLeaveLabelRegion "\<\(end\|leave\|iterate\)\>\(\s\+\K\k*\)" contains=rexxLabel2 -syn match rexxLabel2 "\<\(end\|leave\|iterate\)\>\s\+\zs\k*\ze" containedin=endIterateLeaveLabelRegion - -" Guard statement -syn match rexxGuard "\(^\|;\|:\)\s*\\s\+\<\(on\|off\)\>" - -" Trace statement -syn match rexxTrace "\(^\|;\|:\)\s*\\s\+\<\K\k*\>" - -" Raise statement -syn match rexxRaise "\(^\|;\|:\)\s\+\\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\?" contains=rexxRaise2 -syn match rexxRaise2 "\<\(additional\|array\|description\|exit\|propagate\|return\)\>" containedin=rexxRaise - -" Forward statement -syn match rexxForward "\(^\|;\|:\)\\s*" contains=rexxForward2 -syn match rexxForward2 "\<\(arguments\|array\|continue\|message\|class\|to\)\>" contained - -" Functions/Procedures -syn match rexxFunction "\<\<[a-zA-Z\!\?_]\k*\>("me=e-1 -syn match rexxFunction "[()]" - -" String constants -syn region rexxString start=+"+ skip=+""+ end=+"\(x\|b\)\?+ oneline -syn region rexxString start=+'+ skip=+''+ end=+'\(x\|b\)\?+ oneline - -syn region rexxParen transparent start='(' end=')' contains=ALLBUT,rexxParenError,rexxTodo,rexxLabel,rexxKeyword -" Catch errors caused by wrong parenthesis -syn match rexxParenError ")" -syn match rexxInParen "[\\[\\]{}]" - -" Comments -syn region rexxComment start="/\*" end="\*/" contains=rexxTodo,rexxComment -syn match rexxCommentError "\*/" -syn region rexxLineComment start="--" end="\_$" oneline - -" Highlight User Labels -" check for labels between comments, labels stated in a statement in the middle of a line -syn match rexxLabel "\(\_^\|;\)\s*\(\/\*.*\*\/\)*\s*\k\+\s*\(\/\*.*\*\/\)*\s*:"me=e-1 contains=rexxTodo,rexxComment - -syn keyword rexxTodo contained TODO FIXME XXX - -" ooRexx messages -syn region rexxMessageOperator start="\(\~\|\~\~\)" end="\(\S\|\s\)"me=e-1 -syn match rexxMessage "\(\~\|\~\~\)\s*\<\.*[a-zA-Z]\([a-zA-Z0-9._?!]\)*\>" contains=rexxMessageOperator - -" line continuations, take care of (line-)comments after it -syn match rexxLineContinue ",\ze\s*\(--.*\|\/\*.*\)*$" - -" the following is necessary, otherwise three consecutive dashes will cause it to highlight the first one -syn match rexxLineContinue "-\ze-\@!\s*\(--.*\|\s*\/\*.*\)\?$" - -" Special Variables -syn keyword rexxSpecialVariable sigl rc result self super -syn keyword rexxSpecialVariable .environment .error .input .local .methods .output .rs .stderr .stdin .stdout .stdque - -" Constants -syn keyword rexxConst .true .false .nil .endOfLine .line - -syn match rexxNumber "\(-\|+\)\?\s*\zs\<\(\d\+\.\?\|\d*\.\d\+\(E\(+\|-\)\d\{2,2}\)\?\)\?\>" - -" ooRexx builtin classes (as of version 3.2.0, fall 2007), first define dot to be o.k. in keywords -syn keyword rexxBuiltinClass .Alarm .ArgUtil .Array .Bag .CaselessColumnComparator -syn keyword rexxBuiltinClass .CaselessComparator .CaselessDescendingComparator .CircularQueue -syn keyword rexxBuiltinClass .Class .Collection .ColumnComparator .Comparable .Comparator -syn keyword rexxBuiltinClass .DateTime .DescendingComparator .Directory .InputOutputStream -syn keyword rexxBuiltinClass .InputStream .InvertingComparator .List .MapCollection -syn keyword rexxBuiltinClass .Message .Method .Monitor .MutableBuffer .Object -syn keyword rexxBuiltinClass .OrderedCollection .OutputStream .Properties .Queue -syn keyword rexxBuiltinClass .Relation .RexxQueue .Set .SetCollection .Stem .Stream -syn keyword rexxBuiltinClass .StreamSupplier .String .Supplier .Table .TimeSpan - -" Windows-only classes -syn keyword rexxBuiltinClass .AdvancedControls .AnimatedButton .BaseDialog .ButtonControl -syn keyword rexxBuiltinClass .CategoryDialog .CheckBox .CheckList .ComboBox .DialogControl -syn keyword rexxBuiltinClass .DialogExtensions .DlgArea .DlgAreaU .DynamicDialog -syn keyword rexxBuiltinClass .EditControl .InputBox .IntegerBox .ListBox .ListChoice -syn keyword rexxBuiltinClass .ListControl .MenuObject .MessageExtensions .MultiInputBox -syn keyword rexxBuiltinClass .MultiListChoice .PasswordBox .PlainBaseDialog .PlainUserDialog -syn keyword rexxBuiltinClass .ProgressBar .ProgressIndicator .PropertySheet .RadioButton -syn keyword rexxBuiltinClass .RcDialog .ResDialog .ScrollBar .SingleSelection .SliderControl -syn keyword rexxBuiltinClass .StateIndicator .StaticControl .TabControl .TimedMessage -syn keyword rexxBuiltinClass .TreeControl .UserDialog .VirtualKeyCodes .WindowBase -syn keyword rexxBuiltinClass .WindowExtensions .WindowObject .WindowsClassesBase .WindowsClipboard -syn keyword rexxBuiltinClass .WindowsEventLog .WindowsManager .WindowsProgramManager .WindowsRegistry - -" ooRexx directives, ---rgf location important, otherwise directives in top of file not matched! -syn region rexxClassDirective start="::\s*class\s*"ms=e+1 end="\ze\(\s\|;\|$\)" -syn region rexxMethodDirective start="::\s*method\s*"ms=e+1 end="\ze\(\s\|;\|$\)" -syn region rexxRequiresDirective start="::\s*requires\s*"ms=e+1 end="\ze\(\s\|;\|$\)" -syn region rexxRoutineDirective start="::\s*routine\s*"ms=e+1 end="\ze\(\s\|;\|$\)" -syn region rexxAttributeDirective start="::\s*attribute\s*"ms=e+1 end="\ze\(\s\|;\|$\)" - -syn region rexxDirective start="\(^\|;\)\s*::\s*\w\+" end="\($\|;\)" contains=rexxString,rexxComment,rexxLineComment,rexxClassDirective,rexxMethodDirective,rexxRoutineDirective,rexxRequiresDirective,rexxAttributeDirective keepend - -syn region rexxVariable start="\zs\<\(\.\)\@!\K\k\+\>\ze\s*\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)" end="\(\_$\|.\)"me=e-1 -syn match rexxVariable "\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)\s*\zs\K\k*\ze" - -" rgf, 2007-07-22: unfortunately, the entire region is colored (not only the -" patterns), hence useless (vim 7.0)! (syntax-docs hint that that should work) -" attempt: just colorize the parenthesis in matching colors, keep content -" transparent to keep the formatting already done to it! -" syn region par1 matchgroup=par1 start="(" matchgroup=par1 end=")" transparent contains=par2 -" syn region par2 matchgroup=par2 start="(" matchgroup=par2 end=")" transparent contains=par3 contained -" syn region par3 matchgroup=par3 start="(" matchgroup=par3 end=")" transparent contains=par4 contained -" syn region par4 matchgroup=par4 start="(" matchgroup=par4 end=")" transparent contains=par5 contained -" syn region par5 matchgroup=par5 start="(" matchgroup=par5 end=")" transparent contains=par1 contained - -" this will colorize the entire region, removing any colorizing already done! -" syn region par1 matchgroup=par1 start="(" end=")" contains=par2 -" syn region par2 matchgroup=par2 start="(" end=")" contains=par3 contained -" syn region par3 matchgroup=par3 start="(" end=")" contains=par4 contained -" syn region par4 matchgroup=par4 start="(" end=")" contains=par5 contained -" syn region par5 matchgroup=par5 start="(" end=")" contains=par1 contained - -hi par1 ctermfg=red guifg=red -hi par2 ctermfg=blue guifg=blue -hi par3 ctermfg=darkgreen guifg=darkgreen -hi par4 ctermfg=darkyellow guifg=darkyellow -hi par5 ctermfg=darkgrey guifg=darkgrey - -" line continuation (trailing comma or single dash) -syn sync linecont "\(,\|-\ze-\@!\)\ze\s*\(--.*\|\/\*.*\)*$" - -" if !exists("rexx_minlines") -" let rexx_minlines = 500 -" endif -" exec "syn sync ccomment rexxComment minlines=" . rexx_minlines - -" always scan from start, PCs are powerful enough for that in 2007 ! -exec "syn sync fromstart" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_rexx_syn_inits") - if version < 508 - let did_rexx_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " make binary and hex strings stand out - hi rexxStringConstant term=bold,underline ctermfg=5 cterm=bold guifg=darkMagenta gui=bold - - HiLink rexxLabel2 Function - HiLink doLoopSelectLabelRegion rexxKeyword - HiLink endIterateLeaveLabelRegion rexxKeyword - HiLink rexxLoopKeywords rexxKeyword " Todo - - HiLink rexxNumber Normal -" HiLink rexxIdentifier DiffChange - - HiLink rexxRegularCallSignal Statement - HiLink rexxExceptionHandling Statement - - HiLink rexxLabel Function - HiLink rexxCharacter Character - HiLink rexxParenError rexxError - HiLink rexxInParen rexxError - HiLink rexxCommentError rexxError - HiLink rexxError Error - HiLink rexxKeyword Statement - HiLink rexxKeywordStatements Statement - - HiLink rexxFunction Function - HiLink rexxString String - HiLink rexxComment Comment - HiLink rexxTodo Todo - HiLink rexxSpecialVariable Special - HiLink rexxConditional rexxKeyword - - HiLink rexxOperator Operator - HiLink rexxMessageOperator rexxOperator - HiLink rexxLineComment Comment - - HiLink rexxLineContinue WildMenu - - HiLink rexxDirective rexxKeyword - HiLink rexxClassDirective Type - HiLink rexxMethodDirective rexxFunction - HiLink rexxAttributeDirective rexxFunction - HiLink rexxRequiresDirective Include - HiLink rexxRoutineDirective rexxFunction - - HiLink rexxConst Constant - HiLink rexxTypeSpecifier Type - HiLink rexxBuiltinClass rexxTypeSpecifier - - HiLink rexxEnvironmentSymbol rexxConst - HiLink rexxMessage rexxFunction - - HiLink rexxParse rexxKeyword - HiLink rexxParse2 rexxParse - - HiLink rexxGuard rexxKeyword - HiLink rexxTrace rexxKeyword - - HiLink rexxRaise rexxKeyword - HiLink rexxRaise2 rexxRaise - - HiLink rexxForward rexxKeyword - HiLink rexxForward2 rexxForward - - delcommand HiLink -endif - -let b:current_syntax = "rexx" - -"vim: ts=8 diff --git a/share/vim/vim73/syntax/rhelp.vim b/share/vim/vim73/syntax/rhelp.vim deleted file mode 100644 index 98e5bc0c..00000000 --- a/share/vim/vim73/syntax/rhelp.vim +++ /dev/null @@ -1,212 +0,0 @@ -" Vim syntax file -" Language: R Help File -" Maintainer: Johannes Ranke -" Last Change: 2010 Apr 22 -" Version: 0.7.3 -" SVN: $Id: rhelp.vim 88 2010-04-22 19:37:09Z ranke $ -" Remarks: - Now includes R syntax highlighting in the appropriate -" sections if an r.vim file is in the same directory or in the -" default debian location. -" - There is no Latex markup in equations -" - Thanks to Will Gray for finding and fixing a bug -" - No support for \if, \ifelse and \out as I don't understand -" them and have no examples at hand (help welcome). -" - No support for \var tag within quoted string (dito) - -" Version Clears: {{{1 -" For version 5.x: Clear all syntax items -" For version 6.x and 7.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case match - -" R help identifiers {{{ -syn region rhelpIdentifier matchgroup=rhelpSection start="\\name{" end="}" -syn region rhelpIdentifier matchgroup=rhelpSection start="\\alias{" end="}" -syn region rhelpIdentifier matchgroup=rhelpSection start="\\pkg{" end="}" -syn region rhelpIdentifier matchgroup=rhelpSection start="\\item{" end="}" contained contains=rhelpDots -syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end=/}/ contained - -" Highlighting of R code using an existing r.vim syntax file if available {{{1 -syn include @R syntax/r.vim -syn match rhelpDots "\\dots" containedin=@R -syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpSection -syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpIdentifier,rhelpS4method -syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end=/}/ contains=@R -syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end=/}/ contains=@R contained -syn region rhelpRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpLink contained -syn region rhelpS4method matchgroup=Delimiter start="\\S4method{.*}(" matchgroup=Delimiter transparent end=/)/ contains=@R,rhelpDots contained -syn region rhelpSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter transparent end=/}/ contains=@R - -" Strings {{{1 -syn region rhelpString start=/"/ end=/"/ - -" Special characters ( \$ \& \% \# \{ \} \_) {{{1 -syn match rhelpSpecialChar "\\[$&%#{}_]" - -" Special Delimiters {{{1 -syn match rhelpDelimiter "\\cr" -syn match rhelpDelimiter "\\tab " - -" Keywords {{{1 -syn match rhelpKeyword "\\R" -syn match rhelpKeyword "\\ldots" -syn match rhelpKeyword "--" -syn match rhelpKeyword "---" -syn match rhelpKeyword "<" -syn match rhelpKeyword ">" -syn match rhelpKeyword "\\ge" -syn match rhelpKeyword "\\le" -syn match rhelpKeyword "\\alpha" -syn match rhelpKeyword "\\beta" -syn match rhelpKeyword "\\gamma" -syn match rhelpKeyword "\\delta" -syn match rhelpKeyword "\\epsilon" -syn match rhelpKeyword "\\zeta" -syn match rhelpKeyword "\\eta" -syn match rhelpKeyword "\\theta" -syn match rhelpKeyword "\\iota" -syn match rhelpKeyword "\\kappa" -syn match rhelpKeyword "\\lambda" -syn match rhelpKeyword "\\mu" -syn match rhelpKeyword "\\nu" -syn match rhelpKeyword "\\xi" -syn match rhelpKeyword "\\omicron" -syn match rhelpKeyword "\\pi" -syn match rhelpKeyword "\\rho" -syn match rhelpKeyword "\\sigma" -syn match rhelpKeyword "\\tau" -syn match rhelpKeyword "\\upsilon" -syn match rhelpKeyword "\\phi" -syn match rhelpKeyword "\\chi" -syn match rhelpKeyword "\\psi" -syn match rhelpKeyword "\\omega" -syn match rhelpKeyword "\\Alpha" -syn match rhelpKeyword "\\Beta" -syn match rhelpKeyword "\\Gamma" -syn match rhelpKeyword "\\Delta" -syn match rhelpKeyword "\\Epsilon" -syn match rhelpKeyword "\\Zeta" -syn match rhelpKeyword "\\Eta" -syn match rhelpKeyword "\\Theta" -syn match rhelpKeyword "\\Iota" -syn match rhelpKeyword "\\Kappa" -syn match rhelpKeyword "\\Lambda" -syn match rhelpKeyword "\\Mu" -syn match rhelpKeyword "\\Nu" -syn match rhelpKeyword "\\Xi" -syn match rhelpKeyword "\\Omicron" -syn match rhelpKeyword "\\Pi" -syn match rhelpKeyword "\\Rho" -syn match rhelpKeyword "\\Sigma" -syn match rhelpKeyword "\\Tau" -syn match rhelpKeyword "\\Upsilon" -syn match rhelpKeyword "\\Phi" -syn match rhelpKeyword "\\Chi" -syn match rhelpKeyword "\\Psi" -syn match rhelpKeyword "\\Omega" - -" Links {{{1 -syn region rhelpLink matchgroup=rhelpSection start="\\link{" end="}" contained keepend -syn region rhelpLink matchgroup=rhelpSection start="\\link\[.\{-}\]{" end="}" contained keepend -syn region rhelpLink matchgroup=rhelpSection start="\\linkS4class{" end="}" contained keepend - -" Type Styles {{{1 -syn match rhelpType "\\emph\>" -syn match rhelpType "\\strong\>" -syn match rhelpType "\\bold\>" -syn match rhelpType "\\sQuote\>" -syn match rhelpType "\\dQuote\>" -syn match rhelpType "\\preformatted\>" -syn match rhelpType "\\kbd\>" -syn match rhelpType "\\samp\>" -syn match rhelpType "\\eqn\>" -syn match rhelpType "\\deqn\>" -syn match rhelpType "\\file\>" -syn match rhelpType "\\email\>" -syn match rhelpType "\\url\>" -syn match rhelpType "\\var\>" -syn match rhelpType "\\env\>" -syn match rhelpType "\\option\>" -syn match rhelpType "\\command\>" -syn match rhelpType "\\dfn\>" -syn match rhelpType "\\cite\>" -syn match rhelpType "\\acronym\>" - -" rhelp sections {{{1 -syn match rhelpSection "\\encoding\>" -syn match rhelpSection "\\title\>" -syn match rhelpSection "\\description\>" -syn match rhelpSection "\\concept\>" -syn match rhelpSection "\\arguments\>" -syn match rhelpSection "\\details\>" -syn match rhelpSection "\\value\>" -syn match rhelpSection "\\references\>" -syn match rhelpSection "\\note\>" -syn match rhelpSection "\\author\>" -syn match rhelpSection "\\seealso\>" -syn match rhelpSection "\\keyword\>" -syn match rhelpSection "\\docType\>" -syn match rhelpSection "\\format\>" -syn match rhelpSection "\\source\>" -syn match rhelpSection "\\itemize\>" -syn match rhelpSection "\\describe\>" -syn match rhelpSection "\\enumerate\>" -syn match rhelpSection "\\item " -syn match rhelpSection "\\item$" -syn match rhelpSection "\\tabular{[lcr]*}" -syn match rhelpSection "\\dontrun\>" -syn match rhelpSection "\\dontshow\>" -syn match rhelpSection "\\testonly\>" -syn match rhelpSection "\\donttest\>" - -" Freely named Sections {{{1 -syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end=/}/ -syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end=/}/ - -" R help file comments {{{1 -syn match rhelpComment /%.*$/ contained - -" Error {{{1 -syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpCurlyError -syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpParenError -syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rhelpError,rhelpCurlyError,rhelpParenError -syn match rhelpError /[)\]}]/ -syn match rhelpBraceError /[)}]/ contained -syn match rhelpCurlyError /[)\]]/ contained -syn match rhelpParenError /[\]}]/ contained - -" Define the default highlighting {{{1 -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_rhelp_syntax_inits") - if version < 508 - let did_rhelp_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - HiLink rhelpIdentifier Identifier - HiLink rhelpString String - HiLink rhelpKeyword Keyword - HiLink rhelpDots Keyword - HiLink rhelpLink Underlined - HiLink rhelpType Type - HiLink rhelpSection PreCondit - HiLink rhelpError Error - HiLink rhelpBraceError Error - HiLink rhelpCurlyError Error - HiLink rhelpParenError Error - HiLink rhelpDelimiter Delimiter - HiLink rhelpComment Comment - HiLink rhelpRComment Comment - HiLink rhelpSpecialChar SpecialChar - delcommand HiLink -endif - -let b:current_syntax = "rhelp" -" vim: foldmethod=marker: diff --git a/share/vim/vim73/syntax/rpl.vim b/share/vim/vim73/syntax/rpl.vim deleted file mode 100644 index bc50475e..00000000 --- a/share/vim/vim73/syntax/rpl.vim +++ /dev/null @@ -1,491 +0,0 @@ -" Vim syntax file -" Language: RPL/2 -" Version: 0.15.15 against RPL/2 version 4.00pre7i -" Last Change: 2003 august 24 -" Maintainer: Joël BERTRAND -" URL: http://www.makalis.fr/~bertrand/rpl2/download/vim/indent/rpl.vim -" Credits: Nothing - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Keyword characters (not used) -" set iskeyword=33-127 - -" Case sensitive -syntax case match - -" Constants -syntax match rplConstant "\(^\|\s\+\)\(e\|i\)\ze\($\|\s\+\)" - -" Any binary number -syntax match rplBinaryError "\(^\|\s\+\)#\s*\S\+b\ze" -syntax match rplBinary "\(^\|\s\+\)#\s*[01]\+b\ze\($\|\s\+\)" -syntax match rplOctalError "\(^\|\s\+\)#\s*\S\+o\ze" -syntax match rplOctal "\(^\|\s\+\)#\s*\o\+o\ze\($\|\s\+\)" -syntax match rplDecimalError "\(^\|\s\+\)#\s*\S\+d\ze" -syntax match rplDecimal "\(^\|\s\+\)#\s*\d\+d\ze\($\|\s\+\)" -syntax match rplHexadecimalError "\(^\|\s\+\)#\s*\S\+h\ze" -syntax match rplHexadecimal "\(^\|\s\+\)#\s*\x\+h\ze\($\|\s\+\)" - -" Case unsensitive -syntax case ignore - -syntax match rplControl "\(^\|\s\+\)abort\ze\($\|\s\+\)" -syntax match rplControl "\(^\|\s\+\)kill\ze\($\|\s\+\)" -syntax match rplControl "\(^\|\s\+\)cont\ze\($\|\s\+\)" -syntax match rplControl "\(^\|\s\+\)halt\ze\($\|\s\+\)" -syntax match rplControl "\(^\|\s\+\)cmlf\ze\($\|\s\+\)" -syntax match rplControl "\(^\|\s\+\)sst\ze\($\|\s\+\)" - -syntax match rplConstant "\(^\|\s\+\)pi\ze\($\|\s\+\)" - -syntax match rplStatement "\(^\|\s\+\)return\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)last\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)syzeval\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)wait\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)type\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)kind\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)eval\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)use\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)remove\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)external\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)dup\([2n]\|\)\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)drop\([2n]\|\)\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)depth\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)roll\(d\|\)\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)pick\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)rot\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)swap\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)over\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)clear\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)warranty\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)copyright\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)convert\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)date\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)time\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)mem\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)clmf\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)->num\ze\($\|\s\+\)" -syntax match rplStatement "\(^\|\s\+\)help\ze\($\|\s\+\)" - -syntax match rplStorage "\(^\|\s\+\)get\(i\|r\|c\|\)\ze\($\|\s\+\)" -syntax match rplStorage "\(^\|\s\+\)put\(i\|r\|c\|\)\ze\($\|\s\+\)" -syntax match rplStorage "\(^\|\s\+\)rcl\ze\($\|\s\+\)" -syntax match rplStorage "\(^\|\s\+\)purge\ze\($\|\s\+\)" -syntax match rplStorage "\(^\|\s\+\)sinv\ze\($\|\s\+\)" -syntax match rplStorage "\(^\|\s\+\)sneg\ze\($\|\s\+\)" -syntax match rplStorage "\(^\|\s\+\)sconj\ze\($\|\s\+\)" -syntax match rplStorage "\(^\|\s\+\)steq\ze\($\|\s\+\)" -syntax match rplStorage "\(^\|\s\+\)rceq\ze\($\|\s\+\)" -syntax match rplStorage "\(^\|\s\+\)vars\ze\($\|\s\+\)" -syntax match rplStorage "\(^\|\s\+\)clusr\ze\($\|\s\+\)" -syntax match rplStorage "\(^\|\s\+\)sto\([+-/\*]\|\)\ze\($\|\s\+\)" - -syntax match rplAlgConditional "\(^\|\s\+\)ift\(e\|\)\ze\($\|\s\+\)" - -syntax match rplOperator "\(^\|\s\+\)and\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)\(x\|\)or\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)not\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)same\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)==\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)<=\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)=<\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)=>\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)>=\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)<>\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)>\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)<\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)[+-]\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)[/\*]\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)\^\ze\($\|\s\+\)" -syntax match rplOperator "\(^\|\s\+\)\*\*\ze\($\|\s\+\)" - -syntax match rplBoolean "\(^\|\s\+\)true\ze\($\|\s\+\)" -syntax match rplBoolean "\(^\|\s\+\)false\ze\($\|\s\+\)" - -syntax match rplReadWrite "\(^\|\s\+\)store\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)recall\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)\(\|wf\|un\)lock\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)open\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)close\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)delete\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)create\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)format\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)rewind\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)backspace\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)\(\|re\)write\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)read\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)inquire\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)sync\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)append\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)suppress\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)seek\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)pr\(1\|int\|st\|stc\|lcd\|var\|usr\|md\)\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)paper\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)cr\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)erase\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)disp\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)input\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)prompt\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)key\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)cllcd\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)\(\|re\)draw\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)drax\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)indep\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)depnd\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)res\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)axes\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)label\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)pmin\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)pmax\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)centr\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)persist\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)title\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)\(slice\|auto\|log\|\)scale\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)eyept\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)\(p\|s\)par\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)function\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)polar\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)scatter\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)plotter\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)wireframe\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)parametric\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)slice\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)\*w\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)\*h\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)\*d\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)\*s\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)->lcd\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)lcd->\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)edit\ze\($\|\s\+\)" -syntax match rplReadWrite "\(^\|\s\+\)visit\ze\($\|\s\+\)" - -syntax match rplIntrinsic "\(^\|\s\+\)abs\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)arg\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)conj\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)re\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)im\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)mant\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)xpon\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)ceil\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)fact\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)fp\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)floor\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)inv\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)ip\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)max\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)min\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)mod\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)neg\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)relax\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)sign\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)sq\(\|rt\)\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)xroot\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)cos\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)sin\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)tan\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)tg\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)a\(\|rc\)cos\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)a\(\|rc\)sin\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)atan\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)arctg\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)cosh\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)sinh\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)tanh\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|arg\)th\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)arg[cst]h\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)log\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)ln\(\|1\)\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)exp\(\|m\)\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)trn\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)con\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)idn\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)rdm\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)rsd\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)cnrm\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)cross\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)d[eo]t\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)[cr]swp\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)rci\(j\|\)\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(in\|de\)cr\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)bessel\ze\($\|\s\+\)" - -syntax match rplIntrinsic "\(^\|\s\+\)\(\|g\)egvl\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|g\)\(\|l\|r\)egv\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)rnrm\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(std\|fix\|sci\|eng\)\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(rad\|deg\)\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|n\)rand\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)rdz\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|i\)fft\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(dec\|bin\|oct\|hex\)\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)rclf\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)stof\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)[cs]f\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)chr\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)num\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)pos\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)sub\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)size\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(st\|rc\)ws\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(r\|s\)\(r\|l\)\(\|b\)\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)as\(r\|l\)\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(int\|der\)\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)stos\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|r\)cls\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)drws\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)scls\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)ns\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)tot\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)mean\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)sdev\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)var\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)maxs\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)mins\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)cov\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)cols\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)s\(x\(\|y\|2\)\|y\(\|2\)\)\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(x\|y\)col\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)corr\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)utp[cfnt]\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)comb\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)perm\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)lu\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)[lu]chol\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)schur\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)%\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)%ch\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)%t\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)hms->\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)->hms\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)hms+\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)hms-\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)d->r\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)r->d\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)b->r\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)r->b\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)c->r\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)r->c\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)r->p\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)p->r\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)str->\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)->str\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)array->\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)->array\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)list->\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)->list\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)s+\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)s-\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)col-\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)col+\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)row-\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)row+\ze\($\|\s\+\)" -syntax match rplIntrinsic "\(^\|\s\+\)->q\ze\($\|\s\+\)" - -syntax match rplObsolete "\(^\|\s\+\)arry->\ze\($\|\s\+\)"hs=e-5 -syntax match rplObsolete "\(^\|\s\+\)->arry\ze\($\|\s\+\)"hs=e-5 - -" Conditional structures -syntax match rplConditionalError "\(^\|\s\+\)case\ze\($\|\s\+\)"hs=e-3 -syntax match rplConditionalError "\(^\|\s\+\)then\ze\($\|\s\+\)"hs=e-3 -syntax match rplConditionalError "\(^\|\s\+\)else\ze\($\|\s\+\)"hs=e-3 -syntax match rplConditionalError "\(^\|\s\+\)elseif\ze\($\|\s\+\)"hs=e-5 -syntax match rplConditionalError "\(^\|\s\+\)end\ze\($\|\s\+\)"hs=e-2 -syntax match rplConditionalError "\(^\|\s\+\)\(step\|next\)\ze\($\|\s\+\)"hs=e-3 -syntax match rplConditionalError "\(^\|\s\+\)until\ze\($\|\s\+\)"hs=e-4 -syntax match rplConditionalError "\(^\|\s\+\)repeat\ze\($\|\s\+\)"hs=e-5 -syntax match rplConditionalError "\(^\|\s\+\)default\ze\($\|\s\+\)"hs=e-6 - -" FOR/(CYCLE)/(EXIT)/NEXT -" FOR/(CYCLE)/(EXIT)/STEP -" START/(CYCLE)/(EXIT)/NEXT -" START/(CYCLE)/(EXIT)/STEP -syntax match rplCycle "\(^\|\s\+\)\(cycle\|exit\)\ze\($\|\s\+\)" -syntax region rplForNext matchgroup=rplRepeat start="\(^\|\s\+\)\(for\|start\)\ze\($\|\s\+\)" end="\(^\|\s\+\)\(next\|step\)\ze\($\|\s\+\)" contains=ALL keepend extend - -" ELSEIF/END -syntax region rplElseifEnd matchgroup=rplConditional start="\(^\|\s\+\)elseif\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd keepend - -" ELSE/END -syntax region rplElseEnd matchgroup=rplConditional start="\(^\|\s\+\)else\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd,rplThenEnd,rplElseifEnd keepend - -" THEN/END -syntax region rplThenEnd matchgroup=rplConditional start="\(^\|\s\+\)then\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained containedin=rplIfEnd contains=ALLBUT,rplThenEnd keepend - -" IF/END -syntax region rplIfEnd matchgroup=rplConditional start="\(^\|\s\+\)if\(err\|\)\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplElseEnd,rplElseifEnd keepend extend -" if end is accepted ! -" select end too ! - -" CASE/THEN -syntax region rplCaseThen matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)then\ze\($\|\s\+\)" contains=ALLBUT,rplCaseThen,rplCaseEnd,rplThenEnd keepend extend contained containedin=rplCaseEnd - -" CASE/END -syntax region rplCaseEnd matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplCaseEnd,rplThenEnd,rplElseEnd keepend extend contained containedin=rplSelectEnd - -" DEFAULT/END -syntax region rplDefaultEnd matchgroup=rplConditional start="\(^\|\s\+\)default\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplDefaultEnd keepend contained containedin=rplSelectEnd - -" SELECT/END -syntax region rplSelectEnd matchgroup=rplConditional start="\(^\|\s\+\)select\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplThenEnd keepend extend -" select end is accepted ! - -" DO/UNTIL/END -syntax region rplUntilEnd matchgroup=rplConditional start="\(^\|\s\+\)until\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplUntilEnd contained containedin=rplDoUntil extend keepend -syntax region rplDoUntil matchgroup=rplConditional start="\(^\|\s\+\)do\ze\($\|\s\+\)" end="\(^\|\s\+\)until\ze\($\|\s\+\)" contains=ALL keepend extend - -" WHILE/REPEAT/END -syntax region rplRepeatEnd matchgroup=rplConditional start="\(^\|\s\+\)repeat\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplRepeatEnd contained containedin=rplWhileRepeat extend keepend -syntax region rplWhileRepeat matchgroup=rplConditional start="\(^\|\s\+\)while\ze\($\|\s\+\)" end="\(^\|\s\+\)repeat\ze\($\|\s\+\)" contains=ALL keepend extend - -" Comments -syntax match rplCommentError "\*/" -syntax region rplCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1 -syntax region rplCommentLine start="\(^\|\s\+\)//\ze" skip="\\$" end="$" contains=NONE keepend extend -syntax region rplComment start="\(^\|\s\+\)/\*\ze" end="\*/" contains=rplCommentString keepend extend - -" Catch errors caused by too many right parentheses -syntax region rplParen transparent start="(" end=")" contains=ALLBUT,rplParenError,rplComplex,rplIncluded keepend extend -syntax match rplParenError ")" - -" Subroutines -" Catch errors caused by too many right '>>' -syntax match rplSubError "\(^\|\s\+\)>>\ze\($\|\s\+\)"hs=e-1 -syntax region rplSub matchgroup=rplSubDelimitor start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageSub keepend extend - -" Expressions -syntax region rplExpr start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError - -" Local variables -syntax match rplStorageError "\(^\|\s\+\)->\ze\($\|\s\+\)"hs=e-1 -syntax region rplStorageSub matchgroup=rplStorage start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageExpr contained containedin=rplLocalStorage keepend extend -syntax region rplStorageExpr matchgroup=rplStorage start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError extend contained containedin=rplLocalStorage -syntax region rplLocalStorage matchgroup=rplStorage start="\(^\|\s\+\)->\ze\($\|\s\+\)" end="\(^\|\s\+\)\(<<\ze\($\|\s\+\)\|'\)" contains=rplStorageSub,rplStorageExpr,rplComment,rplCommentLine keepend extend - -" Catch errors caused by too many right brackets -syntax match rplArrayError "\]" -syntax match rplArray "\]" contained containedin=rplArray -syntax region rplArray matchgroup=rplArray start="\[" end="\]" contains=ALLBUT,rplArrayError keepend extend - -" Catch errors caused by too many right '}' -syntax match rplListError "}" -syntax match rplList "}" contained containedin=rplList -syntax region rplList matchgroup=rplList start="{" end="}" contains=ALLBUT,rplListError,rplIncluded keepend extend - -" cpp is used by RPL/2 -syntax match rplPreProc "\_^#\s*\(define\|undef\)\>" -syntax match rplPreProc "\_^#\s*\(warning\|error\)\>" -syntax match rplPreCondit "\_^#\s*\(if\|ifdef\|ifndef\|elif\|else\|endif\)\>" -syntax match rplIncluded contained "\<<\s*\S*\s*>\>" -syntax match rplInclude "\_^#\s*include\>\s*["<]" contains=rplIncluded,rplString -"syntax match rplExecPath "\%^\_^#!\s*\S*" -syntax match rplExecPath "\%^\_^#!\p*\_$" - -" Any integer -syntax match rplInteger "\(^\|\s\+\)[-+]\=\d\+\ze\($\|\s\+\)" - -" Floating point number -" [S][ip].[fp] -syntax match rplFloat "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\(\d*\)\=\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign -" [S]ip[.fp]E[S]exp -syntax match rplFloat "\(^\|\s\+\)[-+]\=\d\+\([\.,]\d*\)\=[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign -" [S].fpE[S]exp -syntax match rplFloat "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\d\+[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign -syntax match rplPoint "\<[\.,]\>" -syntax match rplSign "\<[+-]\>" - -" Complex number -" (x,y) -syntax match rplComplex "\(^\|\s\+\)([-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=\s*,\s*[-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)" -" (x.y) -syntax match rplComplex "\(^\|\s\+\)([-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=\s*\.\s*[-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)" - -" Strings -syntax match rplStringGuilles "\\\"" -syntax match rplStringAntislash "\\\\" -syntax region rplString start=+\(^\|\s\+\)"+ end=+"\ze\($\|\s\+\)+ contains=rplStringGuilles,rplStringAntislash - -syntax match rplTab "\t" transparent - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_rpl_syntax_inits") - if version < 508 - let did_rpl_syntax_inits = 1 - command -nargs=+ HiLink highlight link - else - command -nargs=+ HiLink highlight default link - endif - - " The default highlighting. - - HiLink rplControl Statement - HiLink rplStatement Statement - HiLink rplAlgConditional Conditional - HiLink rplConditional Repeat - HiLink rplConditionalError Error - HiLink rplRepeat Repeat - HiLink rplCycle Repeat - HiLink rplUntil Repeat - HiLink rplIntrinsic Special - HiLink rplStorage StorageClass - HiLink rplStorageExpr StorageClass - HiLink rplStorageError Error - HiLink rplReadWrite rplIntrinsic - - HiLink rplOperator Operator - - HiLink rplList Special - HiLink rplArray Special - HiLink rplConstant Identifier - HiLink rplExpr Type - - HiLink rplString String - HiLink rplStringGuilles String - HiLink rplStringAntislash String - - HiLink rplBinary Boolean - HiLink rplOctal Boolean - HiLink rplDecimal Boolean - HiLink rplHexadecimal Boolean - HiLink rplInteger Number - HiLink rplFloat Float - HiLink rplComplex Float - HiLink rplBoolean Identifier - - HiLink rplObsolete Todo - - HiLink rplPreCondit PreCondit - HiLink rplInclude Include - HiLink rplIncluded rplString - HiLink rplInclude Include - HiLink rplExecPath Include - HiLink rplPreProc PreProc - HiLink rplComment Comment - HiLink rplCommentLine Comment - HiLink rplCommentString Comment - HiLink rplSubDelimitor rplStorage - HiLink rplCommentError Error - HiLink rplParenError Error - HiLink rplSubError Error - HiLink rplArrayError Error - HiLink rplListError Error - HiLink rplTab Error - HiLink rplBinaryError Error - HiLink rplOctalError Error - HiLink rplDecimalError Error - HiLink rplHexadecimalError Error - - delcommand HiLink -endif - -let b:current_syntax = "rpl" - -" vim: ts=8 tw=132 diff --git a/share/vim/vim73/syntax/rst.vim b/share/vim/vim73/syntax/rst.vim deleted file mode 100644 index acb56163..00000000 --- a/share/vim/vim73/syntax/rst.vim +++ /dev/null @@ -1,175 +0,0 @@ -" Vim syntax file -" Language: reStructuredText documentation format -" Maintainer: Nikolai Weibull -" Latest Revision: 2010-01-23 - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -syn case ignore - -syn match rstSections "^\%(\([=`:.'"~^_*+#-]\)\1\+\n\)\=.\+\n\([=`:.'"~^_*+#-]\)\2\+$" - -syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/ - -syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis, - \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference, - \ rstInlineInternalTargets,rstFootnoteReference,rstHyperlinkReference - -syn region rstLiteralBlock matchgroup=rstDelimiter - \ start='::\_s*\n\ze\z(\s\+\)' skip='^$' end='^\z1\@!' - \ contains=@NoSpell - -syn region rstQuotedLiteralBlock matchgroup=rstDelimiter - \ start="::\_s*\n\ze\z([!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]\)" - \ end='^\z1\@!' contains=@NoSpell - -syn region rstDoctestBlock oneline display matchgroup=rstDelimiter - \ start='^>>>\s' end='^$' - -syn region rstTable transparent start='^\n\s*+[-=+]\+' end='^$' - \ contains=rstTableLines,@rstCruft -syn match rstTableLines contained display '|\|+\%(=\+\|-\+\)\=' - -syn region rstSimpleTable transparent - \ start='^\n\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$' - \ end='^$' - \ contains=rstSimpleTableLines,@rstCruft -syn match rstSimpleTableLines contained display - \ '^\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$' -syn match rstSimpleTableLines contained display - \ '^\%(\s*\)\@>\%(\%(-\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(-\+\)\@>\%(\s*\)\@>\)\+\)\@>$' - -syn cluster rstDirectives contains=rstFootnote,rstCitation, - \ rstHyperlinkTarget,rstExDirective - -syn match rstExplicitMarkup '^\.\.\_s' - \ nextgroup=@rstDirectives,rstComment,rstSubstitutionDefinition - -let s:ReferenceName = '[[:alnum:]]\+\%([_.-][[:alnum:]]\+\)*' - -syn keyword rstTodo contained FIXME TODO XXX NOTE - -execute 'syn region rstComment contained' . - \ ' start=/.*/' - \ ' end=/^\s\@!/ contains=rstTodo' - -execute 'syn region rstFootnote contained matchgroup=rstDirective' . - \ ' start=+\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]\_s+' . - \ ' skip=+^$+' . - \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell' - -execute 'syn region rstCitation contained matchgroup=rstDirective' . - \ ' start=+\[' . s:ReferenceName . '\]\_s+' . - \ ' skip=+^$+' . - \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell' - -syn region rstHyperlinkTarget contained matchgroup=rstDirective - \ start='_\%(_\|[^:\\]*\%(\\.[^:\\]*\)*\):\_s' skip=+^$+ end=+^\s\@!+ - -syn region rstHyperlinkTarget contained matchgroup=rstDirective - \ start='_`[^`\\]*\%(\\.[^`\\]*\)*`:\_s' skip=+^$+ end=+^\s\@!+ - -syn region rstHyperlinkTarget matchgroup=rstDirective - \ start=+^__\_s+ skip=+^$+ end=+^\s\@!+ - -execute 'syn region rstExDirective contained matchgroup=rstDirective' . - \ ' start=+' . s:ReferenceName . '::\_s+' . - \ ' skip=+^$+' . - \ ' end=+^\s\@!+ contains=@rstCruft' - -execute 'syn match rstSubstitutionDefinition contained' . - \ ' /|' . s:ReferenceName . '|\_s\+/ nextgroup=@rstDirectives' - -function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_right) - execute 'syn region rst' . a:name . - \ ' start=+' . a:char_left . '\zs' . a:start . - \ '\ze[^[:space:]' . a:char_right . a:start[strlen(a:start) - 1] . ']+' . - \ a:middle . - \ ' end=+\S' . a:end . '\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+' -endfunction - -function! s:DefineInlineMarkup(name, start, middle, end) - let middle = a:middle != "" ? - \ (' skip=+\\\\\|\\' . a:middle . '+') : - \ "" - - call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, "'", "'") - call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '"', '"') - call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '(', ')') - call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\[', '\]') - call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '{', '}') - call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '<', '>') - - call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\%(^\|\s\|[/:]\)', '') - - execute 'syn match rst' . a:name . - \ ' +\%(^\|\s\|[''"([{/:.,;!?\\-]\)+' - - execute 'hi def link rst' . a:name . 'Delimiter' . ' rst' . a:name -endfunction - -call s:DefineInlineMarkup('Emphasis', '\*', '\*', '\*') -call s:DefineInlineMarkup('StrongEmphasis', '\*\*', '\*', '\*\*') -call s:DefineInlineMarkup('InterpretedTextOrHyperlinkReference', '`', '`', '`_\{0,2}') -call s:DefineInlineMarkup('InlineLiteral', '``', "", '``') -call s:DefineInlineMarkup('SubstitutionReference', '|', '|', '|_\{0,2}') -call s:DefineInlineMarkup('InlineInternalTargets', '_`', '`', '`') - -" TODO: Can’t remember why these two can’t be defined like the ones above. -execute 'syn match rstFootnoteReference contains=@NoSpell' . - \ ' +\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]_+' - -execute 'syn match rstCitationReference contains=@NoSpell' . - \ ' +\[' . s:ReferenceName . '\]_\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+' - -execute 'syn match rstHyperlinkReference' . - \ ' /\<' . s:ReferenceName . '__\=\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)/' - -syn match rstStandaloneHyperlink contains=@NoSpell - \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]" - -" TODO: Use better syncing. I don’t know the specifics of syncing well enough, -" though. -syn sync minlines=50 linebreaks=1 - -hi def link rstTodo Todo -hi def link rstComment Comment -hi def link rstSections Type -hi def link rstTransition Type -hi def link rstLiteralBlock String -hi def link rstQuotedLiteralBlock String -hi def link rstDoctestBlock PreProc -hi def link rstTableLines rstDelimiter -hi def link rstSimpleTableLines rstTableLines -hi def link rstExplicitMarkup rstDirective -hi def link rstDirective Keyword -hi def link rstFootnote String -hi def link rstCitation String -hi def link rstHyperlinkTarget String -hi def link rstExDirective String -hi def link rstSubstitutionDefinition rstDirective -hi def link rstDelimiter Delimiter -" TODO: I dunno... -hi def rstEmphasis term=italic cterm=italic gui=italic -hi def link rstStrongEmphasis Special -"term=bold cterm=bold gui=bold -hi def link rstInterpretedTextOrHyperlinkReference Identifier -hi def link rstInlineLiteral String -hi def link rstSubstitutionReference PreProc -hi def link rstInlineInternalTargets Identifier -hi def link rstFootnoteReference Identifier -hi def link rstCitationReference Identifier -hi def link rstHyperLinkReference Identifier -hi def link rstStandaloneHyperlink Identifier - -let b:current_syntax = "rst" - -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/share/vim/vim73/syntax/ruby.vim b/share/vim/vim73/syntax/ruby.vim deleted file mode 100644 index e3aee120..00000000 --- a/share/vim/vim73/syntax/ruby.vim +++ /dev/null @@ -1,370 +0,0 @@ -" Vim syntax file -" Language: Ruby -" Maintainer: Doug Kearns -" Last Change: 2009 Dec 2 -" URL: http://vim-ruby.rubyforge.org -" Anon CVS: See above site -" Release Coordinator: Doug Kearns -" ---------------------------------------------------------------------------- -" -" Previous Maintainer: Mirko Nasato -" Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN) -" ---------------------------------------------------------------------------- - -if exists("b:current_syntax") - finish -endif - -if has("folding") && exists("ruby_fold") - setlocal foldmethod=syntax -endif - -syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo - -if exists("ruby_space_errors") - if !exists("ruby_no_trail_space_error") - syn match rubySpaceError display excludenl "\s\+$" - endif - if !exists("ruby_no_tab_space_error") - syn match rubySpaceError display " \+\t"me=e-1 - endif -endif - -" Operators -if exists("ruby_operators") - syn match rubyOperator "\%([~!^&|*/%+-]\|\%(class\s*\)\@\|<=\|\%(<\|\>\|>=\|=\@\|\*\*\|\.\.\.\|\.\.\|::\)" - syn match rubyPseudoOperator "\%(-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!=\)" - syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop -endif - -" Expression Substitution and Backslash Notation -syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display -syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display -syn match rubyQuoteEscape "\\[\\']" contained display - -syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop -syn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable -syn match rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained -syn match rubyInterpolation "#\$\%(-\w\|\W\)" display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable -syn match rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)" display contained -syn region rubyNoInterpolation start="\\#{" end="}" contained -syn match rubyNoInterpolation "\\#{" display contained -syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained -syn match rubyNoInterpolation "\\#\$\W" display contained - -syn match rubyDelimEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE - -syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained -syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained -syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained -syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained - -" These are mostly Oniguruma ready -syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained -syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial -syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline -syn match rubyRegexpCharClass "\\[DdHhSsWw]" contained display -syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained -syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained -syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display -syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display -syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display -syn match rubyRegexpDot "\." contained display -syn match rubyRegexpSpecial "|" contained display -syn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display -syn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display -syn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display -syn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display -syn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display - -syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape -syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets -syn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment - -" Numbers and ASCII Codes -syn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@" display -syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display -syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display -syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display -syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@" display -syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@" display - -" Identifiers -syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent -syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent - -syn match rubyConstant "\%(\%([.@$]\@\|::\)\@=\%(\s*(\)\@!" -syn match rubyClassVariable "@@\h\w*" display -syn match rubyInstanceVariable "@\h\w*" display -syn match rubyGlobalVariable "$\%(\h\w*\|-.\)" -syn match rubySymbol "[]})\"':]\@\|<=\|<\|===\|==\|=\~\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" -syn match rubySymbol "[]})\"':]\@_,;:!?/.'"@$*\&+0]\)" -syn match rubySymbol "[]})\"':]\@\@!\)\=" -syn match rubySymbol "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1 -syn match rubySymbol "[]})\"':]\@\|{\)\s*\)\@<=|" end="|" oneline display contains=rubyBlockParameter - -syn match rubyInvalidVariable "$[^ A-Za-z_-]" -syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~1-9]# -syn match rubyPredefinedVariable "$_\>" display -syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display -syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display -syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display -syn match rubyPredefinedConstant "\%(\%(\.\@\%(\s*(\)\@!" -syn match rubyPredefinedConstant "\%(\%(\.\@\%(\s*(\)\@!" -syn match rubyPredefinedConstant "\%(\%(\.\@\%(\s*(\)\@!" -"Obsolete Global Constants -"syn match rubyPredefinedConstant "\%(::\)\=\zs\%(PLATFORM\|RELEASE_DATE\|VERSION\)\>" -"syn match rubyPredefinedConstant "\%(::\)\=\zs\%(NotImplementError\)\>" - -" Normal Regular Expression -syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,[>]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial keepend fold -syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold - -" Generalized Regular Expression -syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold -syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold -syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold -syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold -syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold - -" Normal String and Shell Command Output -syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold -syn region rubyString matchgroup=rubyStringDelimiter start="'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold -syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold - -" Generalized Single Quoted String, Symbol and Array of Strings -syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape -syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape -syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape -syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape -syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold -syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape -syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape -syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape -syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape - -" Generalized Double Quoted String and Array of Strings and Shell Command Output -" Note: %= is not matched here as the beginning of a double quoted string -syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold - -" Here Document -syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@>\|[<>]=\=\|<=>\|===\|==\|=\~\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration - -syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter - -" Keywords -" Note: the following keywords have already been defined: -" begin case class def do end for if module unless until while -syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!" -syn match rubyOperator "\[?!]\@!" -syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!" -syn match rubyPseudoVariable "\<\%(nil\|self\|__FILE__\|__LINE__\)\>[?!]\@!" -syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!" - -" Expensive Mode - match 'end' with the appropriate opening keyword for syntax -" based folding and special highlighting of module/class/method definitions -if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive") - syn match rubyDefine "\" nextgroup=rubyAliasDeclaration skipwhite skipnl - syn match rubyDefine "\" nextgroup=rubyMethodDeclaration skipwhite skipnl - syn match rubyDefine "\" nextgroup=rubyFunction skipwhite skipnl - syn match rubyClass "\" nextgroup=rubyClassDeclaration skipwhite skipnl - syn match rubyModule "\" nextgroup=rubyModuleDeclaration skipwhite skipnl - - syn region rubyMethodBlock start="\" matchgroup=rubyDefine end="\%(\" contains=ALLBUT,@rubyNotTop fold - syn region rubyBlock start="\" matchgroup=rubyClass end="\" contains=ALLBUT,@rubyNotTop fold - syn region rubyBlock start="\" matchgroup=rubyModule end="\" contains=ALLBUT,@rubyNotTop fold - - " modifiers - syn match rubyConditionalModifier "\<\%(if\|unless\)\>" display - syn match rubyRepeatModifier "\<\%(while\|until\)\>" display - - syn region rubyDoBlock matchgroup=rubyControl start="\" end="\" contains=ALLBUT,@rubyNotTop fold - " curly bracket block or hash literal - syn region rubyCurlyBlock start="{" end="}" contains=ALLBUT,@rubyNotTop fold - syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@" end="\" contains=ALLBUT,@rubyNotTop fold - syn region rubyCaseExpression matchgroup=rubyConditional start="\" end="\" contains=ALLBUT,@rubyNotTop fold - syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" end="\" contains=ALLBUT,@rubyNotTop fold - - syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression - syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression - - syn match rubyExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression - syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock - - " statements with optional 'do' - syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" matchgroup=rubyOptionalDo end="\%(\\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop - syn region rubyRepeatExpression start="\[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" matchgroup=rubyRepeat end="\" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold - - if !exists("ruby_minlines") - let ruby_minlines = 50 - endif - exec "syn sync minlines=" . ruby_minlines - -else - syn match rubyControl "\[?!]\@!" nextgroup=rubyMethodDeclaration skipwhite skipnl - syn match rubyControl "\[?!]\@!" nextgroup=rubyClassDeclaration skipwhite skipnl - syn match rubyControl "\[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl - syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!" - syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!" -endif - -" Special Methods -if !exists("ruby_no_special_methods") - syn keyword rubyAccess public protected private module_function - " attr is a common variable name - syn match rubyAttribute "\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!" - syn keyword rubyAttribute attr_accessor attr_reader attr_writer - syn match rubyControl "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>[?!]\@!\)" - syn keyword rubyEval eval class_eval instance_eval module_eval - syn keyword rubyException raise fail catch throw - " false positive with 'include?' - syn match rubyInclude "\[?!]\@!" - syn keyword rubyInclude autoload extend load require - syn keyword rubyKeyword callcc caller lambda proc -endif - -" Comments and Documentation -syn match rubySharpBang "\%^#!.*" display -syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE XXX contained -syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell -if !exists("ruby_no_comment_fold") - syn region rubyMultilineComment start="\%(\%(^\s*#.*\n\)\@" transparent contains=NONE -syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE -syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE -syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE - -syn match rubyKeywordAsMethod "\<\%(alias\|begin\|case\|class\|def\|do\|end\)[?!]" transparent contains=NONE -syn match rubyKeywordAsMethod "\<\%(if\|module\|undef\|unless\|until\|while\)[?!]" transparent contains=NONE - -syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE -syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE -syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE -syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE -syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE -syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE - -" __END__ Directive -syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold - -hi def link rubyClass rubyDefine -hi def link rubyModule rubyDefine -hi def link rubyMethodExceptional rubyDefine -hi def link rubyDefine Define -hi def link rubyFunction Function -hi def link rubyConditional Conditional -hi def link rubyConditionalModifier rubyConditional -hi def link rubyExceptional rubyConditional -hi def link rubyRepeat Repeat -hi def link rubyRepeatModifier rubyRepeat -hi def link rubyOptionalDo rubyRepeat -hi def link rubyControl Statement -hi def link rubyInclude Include -hi def link rubyInteger Number -hi def link rubyASCIICode Character -hi def link rubyFloat Float -hi def link rubyBoolean Boolean -hi def link rubyException Exception -if !exists("ruby_no_identifiers") - hi def link rubyIdentifier Identifier -else - hi def link rubyIdentifier NONE -endif -hi def link rubyClassVariable rubyIdentifier -hi def link rubyConstant Type -hi def link rubyGlobalVariable rubyIdentifier -hi def link rubyBlockParameter rubyIdentifier -hi def link rubyInstanceVariable rubyIdentifier -hi def link rubyPredefinedIdentifier rubyIdentifier -hi def link rubyPredefinedConstant rubyPredefinedIdentifier -hi def link rubyPredefinedVariable rubyPredefinedIdentifier -hi def link rubySymbol Constant -hi def link rubyKeyword Keyword -hi def link rubyOperator Operator -hi def link rubyPseudoOperator rubyOperator -hi def link rubyBeginEnd Statement -hi def link rubyAccess Statement -hi def link rubyAttribute Statement -hi def link rubyEval Statement -hi def link rubyPseudoVariable Constant - -hi def link rubyComment Comment -hi def link rubyData Comment -hi def link rubyDataDirective Delimiter -hi def link rubyDocumentation Comment -hi def link rubyTodo Todo - -hi def link rubyQuoteEscape rubyStringEscape -hi def link rubyStringEscape Special -hi def link rubyInterpolationDelimiter Delimiter -hi def link rubyNoInterpolation rubyString -hi def link rubySharpBang PreProc -hi def link rubyRegexpDelimiter rubyStringDelimiter -hi def link rubySymbolDelimiter rubyStringDelimiter -hi def link rubyStringDelimiter Delimiter -hi def link rubyString String -hi def link rubyRegexpEscape rubyRegexpSpecial -hi def link rubyRegexpQuantifier rubyRegexpSpecial -hi def link rubyRegexpAnchor rubyRegexpSpecial -hi def link rubyRegexpDot rubyRegexpCharClass -hi def link rubyRegexpCharClass rubyRegexpSpecial -hi def link rubyRegexpSpecial Special -hi def link rubyRegexpComment Comment -hi def link rubyRegexp rubyString - -hi def link rubyInvalidVariable Error -hi def link rubyError Error -hi def link rubySpaceError rubyError - -let b:current_syntax = "ruby" - -" vim: nowrap sw=2 sts=2 ts=8 noet: diff --git a/share/vim/vim73/syntax/sas.vim b/share/vim/vim73/syntax/sas.vim deleted file mode 100644 index 976dca26..00000000 --- a/share/vim/vim73/syntax/sas.vim +++ /dev/null @@ -1,291 +0,0 @@ -" Vim syntax file -" Language: SAS -" Maintainer: James Kidd -" Last Change: 18 Jul 2008 by Paulo Tanimoto -" Fixed comments with * taking multiple lines. -" Fixed highlighting of macro keywords. -" Added words to cases that didn't fit anywhere. -" 02 Jun 2003 -" Added highlighting for additional keywords and such; -" Attempted to match SAS default syntax colors; -" Changed syncing so it doesn't lose colors on large blocks; -" Much thanks to Bob Heckel for knowledgeable tweaking. -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case ignore - -syn region sasString start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn region sasString start=+'+ skip=+\\\\\|\\"+ end=+'+ - -" Want region from 'cards;' to ';' to be captured (Bob Heckel) -syn region sasCards start="^\s*CARDS.*" end="^\s*;\s*$" -syn region sasCards start="^\s*DATALINES.*" end="^\s*;\s*$" - -syn match sasNumber "-\=\<\d*\.\=[0-9_]\>" - -" Block comment -syn region sasComment start="/\*" end="\*/" contains=sasTodo - -" Ignore misleading //JCL SYNTAX... (Bob Heckel) -syn region sasComment start="[^/][^/]/\*" end="\*/" contains=sasTodo - -" Previous code for comments was written by Bob Heckel -" Comments with * may take multiple lines (Paulo Tanimoto) -syn region sasComment start=";\s*\*"hs=s+1 end=";" contains=sasTodo - -" Comments with * starting after a semicolon (Paulo Tanimoto) -syn region sasComment start="^\s*\*" end=";" contains=sasTodo - -" This line defines macro variables in code. HiLink at end of file -" defines the color scheme. Begin region with ampersand and end with -" any non-word character offset by -1; put ampersand in the skip list -" just in case it is used to concatenate macro variable values. - -" Thanks to ronald höllwarth for this fix to an intra-versioning -" problem with this little feature - -if version < 600 - syn region sasMacroVar start="\&" skip="[_&]" end="\W"he=e-1 -else " for the older Vim's just do it their way ... - syn region sasMacroVar start="&" skip="[_&]" end="\W"he=e-1 -endif - - -" I dont think specific PROCs need to be listed if use this line (Bob Heckel). -syn match sasProc "^\s*PROC \w\+" -syn keyword sasStep RUN QUIT DATA - - -" Base SAS Procs - version 8.1 - -syn keyword sasConditional DO ELSE END IF THEN UNTIL WHILE - -syn keyword sasStatement ABORT ARRAY ATTRIB BY CALL CARDS CARDS4 CATNAME -syn keyword sasStatement CONTINUE DATALINES DATALINES4 DELETE DISPLAY -syn keyword sasStatement DM DROP ENDSAS ERROR FILE FILENAME FOOTNOTE -syn keyword sasStatement FORMAT GOTO INFILE INFORMAT INPUT KEEP -syn keyword sasStatement LABEL LEAVE LENGTH LIBNAME LINK LIST LOSTCARD -syn keyword sasStatement MERGE MISSING MODIFY OPTIONS OUTPUT PAGE -syn keyword sasStatement PUT REDIRECT REMOVE RENAME REPLACE RETAIN -syn keyword sasStatement RETURN SELECT SET SKIP STARTSAS STOP TITLE -syn keyword sasStatement UPDATE WAITSAS WHERE WINDOW X SYSTASK - -" Keywords that are used in Proc SQL -" I left them as statements because SAS's enhanced editor highlights -" them the same as normal statements used in data steps (Jim Kidd) - -syn keyword sasStatement ADD AND ALTER AS CASCADE CHECK CREATE -syn keyword sasStatement DELETE DESCRIBE DISTINCT DROP FOREIGN -syn keyword sasStatement FROM GROUP HAVING INDEX INSERT INTO IN -syn keyword sasStatement KEY LIKE MESSAGE MODIFY MSGTYPE NOT -syn keyword sasStatement NULL ON OR ORDER PRIMARY REFERENCES -syn keyword sasStatement RESET RESTRICT SELECT SET TABLE -syn keyword sasStatement UNIQUE UPDATE VALIDATE VIEW WHERE - -" Match declarations have to appear one per line (Paulo Tanimoto) -syn match sasStatement "FOOTNOTE\d" -syn match sasStatement "TITLE\d" - -" Match declarations have to appear one per line (Paulo Tanimoto) -syn match sasMacro "%BQUOTE" -syn match sasMacro "%NRBQUOTE" -syn match sasMacro "%CMPRES" -syn match sasMacro "%QCMPRES" -syn match sasMacro "%COMPSTOR" -syn match sasMacro "%DATATYP" -syn match sasMacro "%DISPLAY" -syn match sasMacro "%DO" -syn match sasMacro "%ELSE" -syn match sasMacro "%END" -syn match sasMacro "%EVAL" -syn match sasMacro "%GLOBAL" -syn match sasMacro "%GOTO" -syn match sasMacro "%IF" -syn match sasMacro "%INDEX" -syn match sasMacro "%INPUT" -syn match sasMacro "%KEYDEF" -syn match sasMacro "%LABEL" -syn match sasMacro "%LEFT" -syn match sasMacro "%LENGTH" -syn match sasMacro "%LET" -syn match sasMacro "%LOCAL" -syn match sasMacro "%LOWCASE" -syn match sasMacro "%MACRO" -syn match sasMacro "%MEND" -syn match sasMacro "%NRBQUOTE" -syn match sasMacro "%NRQUOTE" -syn match sasMacro "%NRSTR" -syn match sasMacro "%PUT" -syn match sasMacro "%QCMPRES" -syn match sasMacro "%QLEFT" -syn match sasMacro "%QLOWCASE" -syn match sasMacro "%QSCAN" -syn match sasMacro "%QSUBSTR" -syn match sasMacro "%QSYSFUNC" -syn match sasMacro "%QTRIM" -syn match sasMacro "%QUOTE" -syn match sasMacro "%QUPCASE" -syn match sasMacro "%SCAN" -syn match sasMacro "%STR" -syn match sasMacro "%SUBSTR" -syn match sasMacro "%SUPERQ" -syn match sasMacro "%SYSCALL" -syn match sasMacro "%SYSEVALF" -syn match sasMacro "%SYSEXEC" -syn match sasMacro "%SYSFUNC" -syn match sasMacro "%SYSGET" -syn match sasMacro "%SYSLPUT" -syn match sasMacro "%SYSPROD" -syn match sasMacro "%SYSRC" -syn match sasMacro "%SYSRPUT" -syn match sasMacro "%THEN" -syn match sasMacro "%TO" -syn match sasMacro "%TRIM" -syn match sasMacro "%UNQUOTE" -syn match sasMacro "%UNTIL" -syn match sasMacro "%UPCASE" -syn match sasMacro "%VERIFY" -syn match sasMacro "%WHILE" -syn match sasMacro "%WINDOW" - -" SAS Functions - -syn keyword sasFunction ABS ADDR AIRY ARCOS ARSIN ATAN ATTRC ATTRN -syn keyword sasFunction BAND BETAINV BLSHIFT BNOT BOR BRSHIFT BXOR -syn keyword sasFunction BYTE CDF CEIL CEXIST CINV CLOSE CNONCT COLLATE -syn keyword sasFunction COMPBL COMPOUND COMPRESS COS COSH CSS CUROBS -syn keyword sasFunction CV DACCDB DACCDBSL DACCSL DACCSYD DACCTAB -syn keyword sasFunction DAIRY DATE DATEJUL DATEPART DATETIME DAY -syn keyword sasFunction DCLOSE DEPDB DEPDBSL DEPDBSL DEPSL DEPSL -syn keyword sasFunction DEPSYD DEPSYD DEPTAB DEPTAB DEQUOTE DHMS -syn keyword sasFunction DIF DIGAMMA DIM DINFO DNUM DOPEN DOPTNAME -syn keyword sasFunction DOPTNUM DREAD DROPNOTE DSNAME ERF ERFC EXIST -syn keyword sasFunction EXP FAPPEND FCLOSE FCOL FDELETE FETCH FETCHOBS -syn keyword sasFunction FEXIST FGET FILEEXIST FILENAME FILEREF FINFO -syn keyword sasFunction FINV FIPNAME FIPNAMEL FIPSTATE FLOOR FNONCT -syn keyword sasFunction FNOTE FOPEN FOPTNAME FOPTNUM FPOINT FPOS -syn keyword sasFunction FPUT FREAD FREWIND FRLEN FSEP FUZZ FWRITE -syn keyword sasFunction GAMINV GAMMA GETOPTION GETVARC GETVARN HBOUND -syn keyword sasFunction HMS HOSTHELP HOUR IBESSEL INDEX INDEXC -syn keyword sasFunction INDEXW INPUT INPUTC INPUTN INT INTCK INTNX -syn keyword sasFunction INTRR IRR JBESSEL JULDATE KURTOSIS LAG LBOUND -syn keyword sasFunction LEFT LENGTH LGAMMA LIBNAME LIBREF LOG LOG10 -syn keyword sasFunction LOG2 LOGPDF LOGPMF LOGSDF LOWCASE MAX MDY -syn keyword sasFunction MEAN MIN MINUTE MOD MONTH MOPEN MORT N -syn keyword sasFunction NETPV NMISS NORMAL NOTE NPV OPEN ORDINAL -syn keyword sasFunction PATHNAME PDF PEEK PEEKC PMF POINT POISSON POKE -syn keyword sasFunction PROBBETA PROBBNML PROBCHI PROBF PROBGAM -syn keyword sasFunction PROBHYPR PROBIT PROBNEGB PROBNORM PROBT PUT -syn keyword sasFunction PUTC PUTN QTR QUOTE RANBIN RANCAU RANEXP -syn keyword sasFunction RANGAM RANGE RANK RANNOR RANPOI RANTBL RANTRI -syn keyword sasFunction RANUNI REPEAT RESOLVE REVERSE REWIND RIGHT -syn keyword sasFunction ROUND SAVING SCAN SDF SECOND SIGN SIN SINH -syn keyword sasFunction SKEWNESS SOUNDEX SPEDIS SQRT STD STDERR STFIPS -syn keyword sasFunction STNAME STNAMEL SUBSTR SUM SYMGET SYSGET SYSMSG -syn keyword sasFunction SYSPROD SYSRC SYSTEM TAN TANH TIME TIMEPART -syn keyword sasFunction TINV TNONCT TODAY TRANSLATE TRANWRD TRIGAMMA -syn keyword sasFunction TRIM TRIMN TRUNC UNIFORM UPCASE USS VAR -syn keyword sasFunction VARFMT VARINFMT VARLABEL VARLEN VARNAME -syn keyword sasFunction VARNUM VARRAY VARRAYX VARTYPE VERIFY VFORMAT -syn keyword sasFunction VFORMATD VFORMATDX VFORMATN VFORMATNX VFORMATW -syn keyword sasFunction VFORMATWX VFORMATX VINARRAY VINARRAYX VINFORMAT -syn keyword sasFunction VINFORMATD VINFORMATDX VINFORMATN VINFORMATNX -syn keyword sasFunction VINFORMATW VINFORMATWX VINFORMATX VLABEL -syn keyword sasFunction VLABELX VLENGTH VLENGTHX VNAME VNAMEX VTYPE -syn keyword sasFunction VTYPEX WEEKDAY YEAR YYQ ZIPFIPS ZIPNAME ZIPNAMEL -syn keyword sasFunction ZIPSTATE - -" Handy settings for using vim with log files -syn keyword sasLogMsg NOTE -syn keyword sasWarnMsg WARNING -syn keyword sasErrMsg ERROR - -" Always contained in a comment (Bob Heckel) -syn keyword sasTodo TODO TBD FIXME contained - -" These don't fit anywhere else (Bob Heckel). -" Added others that were missing. -syn match sasUnderscore "_ALL_" -syn match sasUnderscore "_AUTOMATIC_" -syn match sasUnderscore "_CHARACTER_" -syn match sasUnderscore "_INFILE_" -syn match sasUnderscore "_N_" -syn match sasUnderscore "_NAME_" -syn match sasUnderscore "_NULL_" -syn match sasUnderscore "_NUMERIC_" -syn match sasUnderscore "_USER_" -syn match sasUnderscore "_WEBOUT_" - -" End of SAS Functions - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet - -if version >= 508 || !exists("did_sas_syntax_inits") - if version < 508 - let did_sas_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " Default sas enhanced editor color syntax - hi sComment term=bold cterm=NONE ctermfg=Green ctermbg=Black gui=NONE guifg=DarkGreen guibg=White - hi sCard term=bold cterm=NONE ctermfg=Black ctermbg=Yellow gui=NONE guifg=Black guibg=LightYellow - hi sDate_Time term=NONE cterm=bold ctermfg=Green ctermbg=Black gui=bold guifg=SeaGreen guibg=White - hi sKeyword term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=NONE guifg=Blue guibg=White - hi sFmtInfmt term=NONE cterm=NONE ctermfg=LightGreen ctermbg=Black gui=NONE guifg=SeaGreen guibg=White - hi sString term=NONE cterm=NONE ctermfg=Magenta ctermbg=Black gui=NONE guifg=Purple guibg=White - hi sText term=NONE cterm=NONE ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White - hi sNumber term=NONE cterm=bold ctermfg=Green ctermbg=Black gui=bold guifg=SeaGreen guibg=White - hi sProc term=NONE cterm=bold ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White - hi sSection term=NONE cterm=bold ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White - hi mDefine term=NONE cterm=bold ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White - hi mKeyword term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=NONE guifg=Blue guibg=White - hi mReference term=NONE cterm=bold ctermfg=White ctermbg=Black gui=bold guifg=Blue guibg=White - hi mSection term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White - hi mText term=NONE cterm=NONE ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White - -" Colors that closely match SAS log colors for default color scheme - hi lError term=NONE cterm=NONE ctermfg=Red ctermbg=Black gui=none guifg=Red guibg=White - hi lWarning term=NONE cterm=NONE ctermfg=Green ctermbg=Black gui=none guifg=Green guibg=White - hi lNote term=NONE cterm=NONE ctermfg=Cyan ctermbg=Black gui=none guifg=Blue guibg=White - - - " Special hilighting for the SAS proc section - - HiLink sasComment sComment - HiLink sasConditional sKeyword - HiLink sasStep sSection - HiLink sasFunction sKeyword - HiLink sasMacro mKeyword - HiLink sasMacroVar NonText - HiLink sasNumber sNumber - HiLink sasStatement sKeyword - HiLink sasString sString - HiLink sasProc sProc - " (Bob Heckel) - HiLink sasTodo Todo - HiLink sasErrMsg lError - HiLink sasWarnMsg lWarning - HiLink sasLogMsg lNote - HiLink sasCards sCard - " (Bob Heckel) - HiLink sasUnderscore PreProc - delcommand HiLink -endif - -" Syncronize from beginning to keep large blocks from losing -" syntax coloring while moving through code. -syn sync fromstart - -let b:current_syntax = "sas" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/sass.vim b/share/vim/vim73/syntax/sass.vim deleted file mode 100644 index aa5f5e95..00000000 --- a/share/vim/vim73/syntax/sass.vim +++ /dev/null @@ -1,90 +0,0 @@ -" Vim syntax file -" Language: Sass -" Maintainer: Tim Pope -" Filenames: *.sass -" Last Change: 2010 Aug 9 - -if exists("b:current_syntax") - finish -endif - -runtime! syntax/css.vim - -syn case ignore - -syn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp -syn cluster sassCssAttributes contains=css.*Attr,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp - -syn region sassDefinition matchgroup=cssBraces start="{" end="}" contains=TOP - -syn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition -syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute -syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute -syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation -syn match sassDefault "!default\>" contained -syn match sassVariable "!\%(important\>\|default\>\)\@![[:alnum:]_-]\+" -syn match sassVariable "$[[:alnum:]_-]\+" -syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite -syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite - -syn match sassFunction "\<\%(rgb\|rgba\|red\|green\|blue\|mix\)\>(\@=" contained -syn match sassFunction "\<\%(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\|lighten\|darken\|saturate\|desaturate\|grayscale\|complement\)\>(\@=" contained -syn match sassFunction "\<\%(alpha\|opacity\|rgba\|opacify\|fade-in\|transparentize\|fade-out\)\>(\@=" contained -syn match sassFunction "\<\%(unquote\|quote\)\>(\@=" contained -syn match sassFunction "\<\%(percentage\|round\|ceil\|floor\|abs\)\>(\@=" contained -syn match sassFunction "\<\%(type-of\|unit\|unitless\|comparable\)\>(\@=" contained - -syn region sassInterpolation matchgroup=sassInterpolationDelimiter start="#{" end="}" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,sassProperty - -syn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute -syn match sassMixin "^=" nextgroup=sassMixinName -syn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName skipwhite -syn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName -syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite -syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend" - -syn match sassEscape "^\s*\zs\\" -syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId -syn match sassId "[[:alnum:]_-]\+" contained -syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass -syn match sassClass "[[:alnum:]_-]\+" contained -syn match sassAmpersand "&" - -" TODO: Attribute namespaces -" TODO: Arithmetic (including strings and concatenation) - -syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssURL,cssUnicodeEscape,cssMediaType -syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction -syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction -syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction -syn keyword sassFor from to through contained - -syn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained -syn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell -syn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell - -hi def link sassCssComment sassComment -hi def link sassComment Comment -hi def link sassDefault cssImportant -hi def link sassVariable Identifier -hi def link sassFunction Function -hi def link sassMixing PreProc -hi def link sassMixin PreProc -hi def link sassExtend PreProc -hi def link sassTodo Todo -hi def link sassInclude Include -hi def link sassDebug sassControl -hi def link sassWarn sassControl -hi def link sassControl PreProc -hi def link sassFor PreProc -hi def link sassEscape Special -hi def link sassIdChar Special -hi def link sassClassChar Special -hi def link sassInterpolationDelimiter Delimiter -hi def link sassAmpersand Character -hi def link sassId Identifier -hi def link sassClass Type - -let b:current_syntax = "sass" - -" vim:set sw=2: diff --git a/share/vim/vim73/syntax/scheme.vim b/share/vim/vim73/syntax/scheme.vim deleted file mode 100644 index f9870344..00000000 --- a/share/vim/vim73/syntax/scheme.vim +++ /dev/null @@ -1,324 +0,0 @@ -" Vim syntax file -" Language: Scheme (R5RS + some R6RS extras) -" Last Change: 2009 Nov 27 -" Maintainer: Sergey Khorev -" Original author: Dirk van Deun - -" This script incorrectly recognizes some junk input as numerals: -" parsing the complete system of Scheme numerals using the pattern -" language is practically impossible: I did a lax approximation. - -" MzScheme extensions can be activated with setting is_mzscheme variable - -" Suggestions and bug reports are solicited by the author. - -" Initializing: - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case ignore - -" Fascist highlighting: everything that doesn't fit the rules is an error... - -syn match schemeError ![^ \t()\[\]";]*! -syn match schemeError ")" - -" Quoted and backquoted stuff - -syn region schemeQuoted matchgroup=Delimiter start="['`]" end=![ \t()\[\]";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc - -syn region schemeQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc -syn region schemeQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc - -syn region schemeStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc -syn region schemeStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc - -" Popular Scheme extension: -" using [] as well as () -syn region schemeStrucRestricted matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc -syn region schemeStrucRestricted matchgroup=Delimiter start="#\[" matchgroup=Delimiter end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc - -syn region schemeUnquote matchgroup=Delimiter start="," end=![ \t\[\]()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc -syn region schemeUnquote matchgroup=Delimiter start=",@" end=![ \t\[\]()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc - -syn region schemeUnquote matchgroup=Delimiter start=",(" end=")" contains=ALL -syn region schemeUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALL - -syn region schemeUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc -syn region schemeUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc - -syn region schemeUnquote matchgroup=Delimiter start=",\[" end="\]" contains=ALL -syn region schemeUnquote matchgroup=Delimiter start=",@\[" end="\]" contains=ALL - -syn region schemeUnquote matchgroup=Delimiter start=",#\[" end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc -syn region schemeUnquote matchgroup=Delimiter start=",@#\[" end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc - -" R5RS Scheme Functions and Syntax: - -if version < 600 - set iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_ -else - setlocal iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_ -endif - -syn keyword schemeSyntax lambda and or if cond case define let let* letrec -syn keyword schemeSyntax begin do delay set! else => -syn keyword schemeSyntax quote quasiquote unquote unquote-splicing -syn keyword schemeSyntax define-syntax let-syntax letrec-syntax syntax-rules -" R6RS -syn keyword schemeSyntax define-record-type fields protocol - -syn keyword schemeFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car! -syn keyword schemeFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr -syn keyword schemeFunc cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr -syn keyword schemeFunc cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr -syn keyword schemeFunc cddaar cddadr cdddar cddddr null? list? list length -syn keyword schemeFunc append reverse list-ref memq memv member assq assv assoc -syn keyword schemeFunc symbol? symbol->string string->symbol number? complex? -syn keyword schemeFunc real? rational? integer? exact? inexact? = < > <= >= -syn keyword schemeFunc zero? positive? negative? odd? even? max min + * - / abs -syn keyword schemeFunc quotient remainder modulo gcd lcm numerator denominator -syn keyword schemeFunc floor ceiling truncate round rationalize exp log sin cos -syn keyword schemeFunc tan asin acos atan sqrt expt make-rectangular make-polar -syn keyword schemeFunc real-part imag-part magnitude angle exact->inexact -syn keyword schemeFunc inexact->exact number->string string->number char=? -syn keyword schemeFunc char-ci=? char? char-ci>? char<=? -syn keyword schemeFunc char-ci<=? char>=? char-ci>=? char-alphabetic? char? -syn keyword schemeFunc char-numeric? char-whitespace? char-upper-case? -syn keyword schemeFunc char-lower-case? -syn keyword schemeFunc char->integer integer->char char-upcase char-downcase -syn keyword schemeFunc string? make-string string string-length string-ref -syn keyword schemeFunc string-set! string=? string-ci=? string? string-ci>? string<=? string-ci<=? string>=? -syn keyword schemeFunc string-ci>=? substring string-append vector? make-vector -syn keyword schemeFunc vector vector-length vector-ref vector-set! procedure? -syn keyword schemeFunc apply map for-each call-with-current-continuation -syn keyword schemeFunc call-with-input-file call-with-output-file input-port? -syn keyword schemeFunc output-port? current-input-port current-output-port -syn keyword schemeFunc open-input-file open-output-file close-input-port -syn keyword schemeFunc close-output-port eof-object? read read-char peek-char -syn keyword schemeFunc write display newline write-char call/cc -syn keyword schemeFunc list-tail string->list list->string string-copy -syn keyword schemeFunc string-fill! vector->list list->vector vector-fill! -syn keyword schemeFunc force with-input-from-file with-output-to-file -syn keyword schemeFunc char-ready? load transcript-on transcript-off eval -syn keyword schemeFunc dynamic-wind port? values call-with-values -syn keyword schemeFunc scheme-report-environment null-environment -syn keyword schemeFunc interaction-environment -" R6RS -syn keyword schemeFunc make-eq-hashtable make-eqv-hashtable make-hashtable -syn keyword schemeFunc hashtable? hashtable-size hashtable-ref hashtable-set! -syn keyword schemeFunc hashtable-delete! hashtable-contains? hashtable-update! -syn keyword schemeFunc hashtable-copy hashtable-clear! hashtable-keys -syn keyword schemeFunc hashtable-entries hashtable-equivalence-function hashtable-hash-function -syn keyword schemeFunc hashtable-mutable? equal-hash string-hash string-ci-hash symbol-hash -syn keyword schemeFunc find for-all exists filter partition fold-left fold-right -syn keyword schemeFunc remp remove remv remq memp assp cons* - -" ... so that a single + or -, inside a quoted context, would not be -" interpreted as a number (outside such contexts, it's a schemeFunc) - -syn match schemeDelimiter !\.[ \t\[\]()";]!me=e-1 -syn match schemeDelimiter !\.$! -" ... and a single dot is not a number but a delimiter - -" This keeps all other stuff unhighlighted, except *stuff* and : - -syn match schemeOther ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*, -syn match schemeError ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, - -syn match schemeOther "\.\.\." -syn match schemeError !\.\.\.[^ \t\[\]()";]\+! -" ... a special identifier - -syn match schemeConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*[ \t\[\]()";],me=e-1 -syn match schemeConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*$, -syn match schemeError ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, - -syn match schemeConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1 -syn match schemeConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$, -syn match schemeError ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, - -" Non-quoted lists, and strings: - -syn region schemeStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL -syn region schemeStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL - -syn region schemeStruc matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=ALL -syn region schemeStruc matchgroup=Delimiter start="#\[" matchgroup=Delimiter end="\]" contains=ALL - -" Simple literals: -syn region schemeString start=+\%(\\\)\@?^_~0-9+.@#%]\+" - " anything limited by |'s is identifier - syn match schemeOther "|[^|]\+|" - - syn match schemeCharacter "#\\\%(return\|tab\)" - - " Modules require stmt - syn keyword schemeExtSyntax module require dynamic-require lib prefix all-except prefix-all-except rename - " modules provide stmt - syn keyword schemeExtSyntax provide struct all-from all-from-except all-defined all-defined-except - " Other from MzScheme - syn keyword schemeExtSyntax with-handlers when unless instantiate define-struct case-lambda syntax-case - syn keyword schemeExtSyntax free-identifier=? bound-identifier=? module-identifier=? syntax-object->datum - syn keyword schemeExtSyntax datum->syntax-object - syn keyword schemeExtSyntax let-values let*-values letrec-values set!-values fluid-let parameterize begin0 - syn keyword schemeExtSyntax error raise opt-lambda define-values unit unit/sig define-signature - syn keyword schemeExtSyntax invoke-unit/sig define-values/invoke-unit/sig compound-unit/sig import export - syn keyword schemeExtSyntax link syntax quasisyntax unsyntax with-syntax - - syn keyword schemeExtFunc format system-type current-extension-compiler current-extension-linker - syn keyword schemeExtFunc use-standard-linker use-standard-compiler - syn keyword schemeExtFunc find-executable-path append-object-suffix append-extension-suffix - syn keyword schemeExtFunc current-library-collection-paths current-extension-compiler-flags make-parameter - syn keyword schemeExtFunc current-directory build-path normalize-path current-extension-linker-flags - syn keyword schemeExtFunc file-exists? directory-exists? delete-directory/files delete-directory delete-file - syn keyword schemeExtFunc system compile-file system-library-subpath getenv putenv current-standard-link-libraries - syn keyword schemeExtFunc remove* file-size find-files fold-files directory-list shell-execute split-path - syn keyword schemeExtFunc current-error-port process/ports process printf fprintf open-input-string open-output-string - syn keyword schemeExtFunc get-output-string - " exceptions - syn keyword schemeExtFunc exn exn:application:arity exn:application:continuation exn:application:fprintf:mismatch - syn keyword schemeExtFunc exn:application:mismatch exn:application:type exn:application:mismatch exn:break exn:i/o:filesystem exn:i/o:port - syn keyword schemeExtFunc exn:i/o:port:closed exn:i/o:tcp exn:i/o:udp exn:misc exn:misc:application exn:misc:unsupported exn:module exn:read - syn keyword schemeExtFunc exn:read:non-char exn:special-comment exn:syntax exn:thread exn:user exn:variable exn:application:mismatch - syn keyword schemeExtFunc exn? exn:application:arity? exn:application:continuation? exn:application:fprintf:mismatch? exn:application:mismatch? - syn keyword schemeExtFunc exn:application:type? exn:application:mismatch? exn:break? exn:i/o:filesystem? exn:i/o:port? exn:i/o:port:closed? - syn keyword schemeExtFunc exn:i/o:tcp? exn:i/o:udp? exn:misc? exn:misc:application? exn:misc:unsupported? exn:module? exn:read? exn:read:non-char? - syn keyword schemeExtFunc exn:special-comment? exn:syntax? exn:thread? exn:user? exn:variable? exn:application:mismatch? - " Command-line parsing - syn keyword schemeExtFunc command-line current-command-line-arguments once-any help-labels multi once-each - - " syntax quoting, unquoting and quasiquotation - syn region schemeUnquote matchgroup=Delimiter start="#," end=![ \t\[\]()";]!me=e-1 contains=ALL - syn region schemeUnquote matchgroup=Delimiter start="#,@" end=![ \t\[\]()";]!me=e-1 contains=ALL - syn region schemeUnquote matchgroup=Delimiter start="#,(" end=")" contains=ALL - syn region schemeUnquote matchgroup=Delimiter start="#,@(" end=")" contains=ALL - syn region schemeUnquote matchgroup=Delimiter start="#,\[" end="\]" contains=ALL - syn region schemeUnquote matchgroup=Delimiter start="#,@\[" end="\]" contains=ALL - syn region schemeQuoted matchgroup=Delimiter start="#['`]" end=![ \t()\[\]";]!me=e-1 contains=ALL - syn region schemeQuoted matchgroup=Delimiter start="#['`](" matchgroup=Delimiter end=")" contains=ALL -endif - - -if exists("b:is_chicken") || exists("is_chicken") - " multiline comment - syntax region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment - - syn match schemeOther "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" - syn match schemeExtSyntax "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" - - syn keyword schemeExtSyntax unit uses declare hide foreign-declare foreign-parse foreign-parse/spec - syn keyword schemeExtSyntax foreign-lambda foreign-lambda* define-external define-macro load-library - syn keyword schemeExtSyntax let-values let*-values letrec-values ->string require-extension - syn keyword schemeExtSyntax let-optionals let-optionals* define-foreign-variable define-record - syn keyword schemeExtSyntax pointer tag-pointer tagged-pointer? define-foreign-type - syn keyword schemeExtSyntax require require-for-syntax cond-expand and-let* receive argc+argv - syn keyword schemeExtSyntax fixnum? fx= fx> fx< fx>= fx<= fxmin fxmax - syn keyword schemeExtFunc ##core#inline ##sys#error ##sys#update-errno - - " here-string - syn region schemeString start=+#<<\s*\z(.*\)+ end=+^\z1$+ - - if filereadable(expand(":p:h")."/cpp.vim") - unlet! b:current_syntax - syn include @ChickenC :p:h/cpp.vim - syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-declare "+ end=+")\@=+ contains=@ChickenC - syn region ChickenC matchgroup=schemeComment start=+foreign-declare\s*#<<\z(.*\)$+hs=s+15 end=+^\z1$+ contains=@ChickenC - syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse "+ end=+")\@=+ contains=@ChickenC - syn region ChickenC matchgroup=schemeComment start=+foreign-parse\s*#<<\z(.*\)$+hs=s+13 end=+^\z1$+ contains=@ChickenC - syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse/spec "+ end=+")\@=+ contains=@ChickenC - syn region ChickenC matchgroup=schemeComment start=+foreign-parse/spec\s*#<<\z(.*\)$+hs=s+18 end=+^\z1$+ contains=@ChickenC - syn region ChickenC matchgroup=schemeComment start=+#>+ end=+<#+ contains=@ChickenC - syn region ChickenC matchgroup=schemeComment start=+#>?+ end=+<#+ contains=@ChickenC - syn region ChickenC matchgroup=schemeComment start=+#>!+ end=+<#+ contains=@ChickenC - syn region ChickenC matchgroup=schemeComment start=+#>\$+ end=+<#+ contains=@ChickenC - syn region ChickenC matchgroup=schemeComment start=+#>%+ end=+<#+ contains=@ChickenC - endif - - " suggested by Alex Queiroz - syn match schemeExtSyntax "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" - syn region schemeString start=+#<#\s*\z(.*\)+ end=+^\z1$+ -endif - -" Synchronization and the wrapping up... - -syn sync match matchPlace grouphere NONE "^[^ \t]" -" ... i.e. synchronize on a line that starts at the left margin - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_scheme_syntax_inits") - if version < 508 - let did_scheme_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink schemeSyntax Statement - HiLink schemeFunc Function - - HiLink schemeString String - HiLink schemeCharacter Character - HiLink schemeNumber Number - HiLink schemeBoolean Boolean - - HiLink schemeDelimiter Delimiter - HiLink schemeConstant Constant - - HiLink schemeComment Comment - HiLink schemeMultilineComment Comment - HiLink schemeError Error - - HiLink schemeExtSyntax Type - HiLink schemeExtFunc PreProc - delcommand HiLink -endif - -let b:current_syntax = "scheme" diff --git a/share/vim/vim73/syntax/sd.vim b/share/vim/vim73/syntax/sd.vim deleted file mode 100644 index bb201ca0..00000000 --- a/share/vim/vim73/syntax/sd.vim +++ /dev/null @@ -1,75 +0,0 @@ -" Language: streaming descriptor file -" Maintainer: Puria Nafisi Azizi (pna) -" License: This file can be redistribued and/or modified under the same terms -" as Vim itself. -" URL: http://netstudent.polito.it/vim_syntax/ -" Last Change: 2006-09-27 - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Always ignore case -syn case ignore - -" Comments -syn match sdComment /\s*[#;].*$/ - -" IP Adresses -syn cluster sdIPCluster contains=sdIPError,sdIPSpecial -syn match sdIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained -syn match sdIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained -syn match sdIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@sdIPCluster - -" Statements -syn keyword sdStatement AGGREGATE AUDIO_CHANNELS -syn keyword sdStatement BYTE_PER_PCKT BIT_PER_SAMPLE BITRATE -syn keyword sdStatement CLOCK_RATE CODING_TYPE CREATOR -syn match sdStatement /^\s*CODING_TYPE\>/ nextgroup=sdCoding skipwhite -syn match sdStatement /^\s*ENCODING_NAME\>/ nextgroup=sdEncoding skipwhite -syn keyword sdStatement FILE_NAME FRAME_LEN FRAME_RATE FORCE_FRAME_RATE -syn keyword sdStatement LICENSE -syn match sdStatement /^\s*MEDIA_SOURCE\>/ nextgroup=sdSource skipwhite -syn match sdStatement /^\s*MULTICAST\>/ nextgroup=sdIP skipwhite -syn keyword sdStatement PAYLOAD_TYPE PKT_LEN PRIORITY -syn keyword sdStatement SAMPLE_RATE -syn keyword sdStatement TITLE TWIN -syn keyword sdStatement VERIFY - -" Known Options -syn keyword sdEncoding H26L MPV MP2T MP4V-ES -syn keyword sdCoding FRAME SAMPLE -syn keyword sdSource STORED LIVE - -"Specials -syn keyword sdSpecial TRUE FALSE NULL -syn keyword sdDelimiter STREAM STREAM_END -syn match sdError /^search .\{257,}/ - -if version >= 508 || !exists("did_config_syntax_inits") - if version < 508 - let did_config_syntax_inits = 1 - command! -nargs=+ HiLink hi link - else - command! -nargs=+ HiLink hi def link - endif - - HiLink sdIP Number - HiLink sdHostname Type - HiLink sdEncoding Identifier - HiLink sdCoding Identifier - HiLink sdSource Identifier - HiLink sdComment Comment - HiLink sdIPError Error - HiLink sdError Error - HiLink sdStatement Statement - HiLink sdIPSpecial Special - HiLink sdSpecial Special - HiLink sdDelimiter Delimiter - - delcommand HiLink -endif - -let b:current_syntax = "sd" diff --git a/share/vim/vim73/syntax/sdl.vim b/share/vim/vim73/syntax/sdl.vim deleted file mode 100644 index d0165e76..00000000 --- a/share/vim/vim73/syntax/sdl.vim +++ /dev/null @@ -1,167 +0,0 @@ -" Vim syntax file -" Language: SDL -" Maintainer: Michael Piefel -" Last Change: 2 May 2001 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if !exists("sdl_2000") - syntax case ignore -endif - -" A bunch of useful SDL keywords -syn keyword sdlStatement task else nextstate -syn keyword sdlStatement in out with from interface -syn keyword sdlStatement to via env and use -syn keyword sdlStatement process procedure block system service type -syn keyword sdlStatement endprocess endprocedure endblock endsystem -syn keyword sdlStatement package endpackage connection endconnection -syn keyword sdlStatement channel endchannel connect -syn keyword sdlStatement synonym dcl signal gate timer signallist signalset -syn keyword sdlStatement create output set reset call -syn keyword sdlStatement operators literals -syn keyword sdlStatement active alternative any as atleast constants -syn keyword sdlStatement default endalternative endmacro endoperator -syn keyword sdlStatement endselect endsubstructure external -syn keyword sdlStatement if then fi for import macro macrodefinition -syn keyword sdlStatement macroid mod nameclass nodelay not operator or -syn keyword sdlStatement parent provided referenced rem -syn keyword sdlStatement select spelling substructure xor -syn keyword sdlNewState state endstate -syn keyword sdlInput input start stop return none save priority -syn keyword sdlConditional decision enddecision join -syn keyword sdlVirtual virtual redefined finalized adding inherits -syn keyword sdlExported remote exported export - -if !exists("sdl_no_96") - syn keyword sdlStatement all axioms constant endgenerator endrefinement endservice - syn keyword sdlStatement error fpar generator literal map noequality ordering - syn keyword sdlStatement refinement returns revealed reverse service signalroute - syn keyword sdlStatement view viewed - syn keyword sdlExported imported -endif - -if exists("sdl_2000") - syn keyword sdlStatement abstract aggregation association break choice composition - syn keyword sdlStatement continue endmethod handle method - syn keyword sdlStatement ordered private protected public - syn keyword sdlException exceptionhandler endexceptionhandler onexception - syn keyword sdlException catch new raise - " The same in uppercase - syn keyword sdlStatement TASK ELSE NEXTSTATE - syn keyword sdlStatement IN OUT WITH FROM INTERFACE - syn keyword sdlStatement TO VIA ENV AND USE - syn keyword sdlStatement PROCESS PROCEDURE BLOCK SYSTEM SERVICE TYPE - syn keyword sdlStatement ENDPROCESS ENDPROCEDURE ENDBLOCK ENDSYSTEM - syn keyword sdlStatement PACKAGE ENDPACKAGE CONNECTION ENDCONNECTION - syn keyword sdlStatement CHANNEL ENDCHANNEL CONNECT - syn keyword sdlStatement SYNONYM DCL SIGNAL GATE TIMER SIGNALLIST SIGNALSET - syn keyword sdlStatement CREATE OUTPUT SET RESET CALL - syn keyword sdlStatement OPERATORS LITERALS - syn keyword sdlStatement ACTIVE ALTERNATIVE ANY AS ATLEAST CONSTANTS - syn keyword sdlStatement DEFAULT ENDALTERNATIVE ENDMACRO ENDOPERATOR - syn keyword sdlStatement ENDSELECT ENDSUBSTRUCTURE EXTERNAL - syn keyword sdlStatement IF THEN FI FOR IMPORT MACRO MACRODEFINITION - syn keyword sdlStatement MACROID MOD NAMECLASS NODELAY NOT OPERATOR OR - syn keyword sdlStatement PARENT PROVIDED REFERENCED REM - syn keyword sdlStatement SELECT SPELLING SUBSTRUCTURE XOR - syn keyword sdlNewState STATE ENDSTATE - syn keyword sdlInput INPUT START STOP RETURN NONE SAVE PRIORITY - syn keyword sdlConditional DECISION ENDDECISION JOIN - syn keyword sdlVirtual VIRTUAL REDEFINED FINALIZED ADDING INHERITS - syn keyword sdlExported REMOTE EXPORTED EXPORT - - syn keyword sdlStatement ABSTRACT AGGREGATION ASSOCIATION BREAK CHOICE COMPOSITION - syn keyword sdlStatement CONTINUE ENDMETHOD ENDOBJECT ENDVALUE HANDLE METHOD OBJECT - syn keyword sdlStatement ORDERED PRIVATE PROTECTED PUBLIC - syn keyword sdlException EXCEPTIONHANDLER ENDEXCEPTIONHANDLER ONEXCEPTION - syn keyword sdlException CATCH NEW RAISE -endif - -" String and Character contstants -" Highlight special characters (those which have a backslash) differently -syn match sdlSpecial contained "\\\d\d\d\|\\." -syn region sdlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial -syn region sdlString start=+'+ skip=+''+ end=+'+ - -" No, this doesn't happen, I just wanted to scare you. SDL really allows all -" these characters for identifiers; fortunately, keywords manage without them. -" set iskeyword=@,48-57,_,192-214,216-246,248-255,- - -syn region sdlComment start="/\*" end="\*/" -syn region sdlComment start="comment" end=";" -syn region sdlComment start="--" end="--\|$" -syn match sdlCommentError "\*/" - -syn keyword sdlOperator present -syn keyword sdlType integer real natural duration pid boolean time -syn keyword sdlType character charstring ia5string -syn keyword sdlType self now sender offspring -syn keyword sdlStructure asntype endasntype syntype endsyntype struct - -if !exists("sdl_no_96") - syn keyword sdlStructure newtype endnewtype -endif - -if exists("sdl_2000") - syn keyword sdlStructure object endobject value endvalue - " The same in uppercase - syn keyword sdlStructure OBJECT ENDOBJECT VALUE ENDVALUE - syn keyword sdlOperator PRESENT - syn keyword sdlType INTEGER NATURAL DURATION PID BOOLEAN TIME - syn keyword sdlType CHARSTRING IA5STRING - syn keyword sdlType SELF NOW SENDER OFFSPRING - syn keyword sdlStructure ASNTYPE ENDASNTYPE SYNTYPE ENDSYNTYPE STRUCT -endif - -" ASN.1 in SDL -syn case match -syn keyword sdlType SET OF BOOLEAN INTEGER REAL BIT OCTET -syn keyword sdlType SEQUENCE CHOICE -syn keyword sdlType STRING OBJECT IDENTIFIER NULL - -syn sync ccomment sdlComment - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_sdl_syn_inits") - if version < 508 - let did_sdl_syn_inits = 1 - command -nargs=+ HiLink hi link - command -nargs=+ Hi hi - else - command -nargs=+ HiLink hi def link - command -nargs=+ Hi hi def - endif - - HiLink sdlException Label - HiLink sdlConditional sdlStatement - HiLink sdlVirtual sdlStatement - HiLink sdlExported sdlFlag - HiLink sdlCommentError sdlError - HiLink sdlOperator Operator - HiLink sdlStructure sdlType - Hi sdlStatement term=bold ctermfg=4 guifg=Blue - Hi sdlFlag term=bold ctermfg=4 guifg=Blue gui=italic - Hi sdlNewState term=italic ctermfg=2 guifg=Magenta gui=underline - Hi sdlInput term=bold guifg=Red - HiLink sdlType Type - HiLink sdlString String - HiLink sdlComment Comment - HiLink sdlSpecial Special - HiLink sdlError Error - - delcommand HiLink - delcommand Hi -endif - -let b:current_syntax = "sdl" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/sendpr.vim b/share/vim/vim73/syntax/sendpr.vim deleted file mode 100644 index 28a26e68..00000000 --- a/share/vim/vim73/syntax/sendpr.vim +++ /dev/null @@ -1,32 +0,0 @@ -" Vim syntax file -" Language: FreeBSD send-pr file -" Maintainer: Hendrik Scholz -" Last Change: 2002 Mar 21 -" -" http://raisdorf.net/files/misc/send-pr.vim - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn match sendprComment /^SEND-PR:/ -" email address -syn match sendprType /<[a-zA-Z0-9\-\_\.]*@[a-zA-Z0-9\-\_\.]*>/ -" ^> lines -syn match sendprString /^>[a-zA-Z\-]*:/ -syn region sendprLabel start="\[" end="\]" -syn match sendprString /^To:/ -syn match sendprString /^From:/ -syn match sendprString /^Reply-To:/ -syn match sendprString /^Cc:/ -syn match sendprString /^X-send-pr-version:/ -syn match sendprString /^X-GNATS-Notify:/ - -hi def link sendprComment Comment -hi def link sendprType Type -hi def link sendprString String -hi def link sendprLabel Label diff --git a/share/vim/vim73/syntax/sgmldecl.vim b/share/vim/vim73/syntax/sgmldecl.vim deleted file mode 100644 index 6a69fc5d..00000000 --- a/share/vim/vim73/syntax/sgmldecl.vim +++ /dev/null @@ -1,79 +0,0 @@ -" Vim syntax file -" Language: SGML (SGML Declaration ) -" Last Change: jueves, 28 de diciembre de 2000, 13:51:44 CLST -" Maintainer: "Daniel A. Molina W." -" You can modify and maintain this file, in other case send comments -" the maintainer email address. - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case ignore - -syn region sgmldeclDeclBlock transparent start=++ -syn region sgmldeclTagBlock transparent start=+<+ end=+>+ - \ contains=ALLBUT, - \ @sgmlTagError,@sgmlErrInTag -syn region sgmldeclComment contained start=+--+ end=+--+ - -syn keyword sgmldeclDeclKeys SGML CHARSET CAPACITY SCOPE SYNTAX - \ FEATURES - -syn keyword sgmldeclTypes BASESET DESCSET DOCUMENT NAMING DELIM - \ NAMES QUANTITY SHUNCHAR DOCTYPE - \ ELEMENT ENTITY ATTLIST NOTATION - \ TYPE - -syn keyword sgmldeclStatem CONTROLS FUNCTION NAMECASE MINIMIZE - \ LINK OTHER APPINFO REF ENTITIES - -syn keyword sgmldeclVariables TOTALCAP GRPCAP ENTCAP DATATAG OMITTAG RANK - \ SIMPLE IMPLICIT EXPLICIT CONCUR SUBDOC FORMAL ATTCAP - \ ATTCHCAP AVGRPCAP ELEMCAP ENTCHCAP IDCAP IDREFCAP - \ SHORTTAG - -syn match sgmldeclNConst contained +[0-9]\++ - -syn region sgmldeclString contained start=+"+ end=+"+ - -syn keyword sgmldeclBool YES NO - -syn keyword sgmldeclSpecial SHORTREF SGMLREF UNUSED NONE GENERAL - \ SEEALSO ANY - -syn sync lines=250 - - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_sgmldecl_syntax_init") - if version < 508 - let did_sgmldecl_syntax_init = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink sgmldeclDeclKeys Keyword - HiLink sgmldeclTypes Type - HiLink sgmldeclConst Constant - HiLink sgmldeclNConst Constant - HiLink sgmldeclString String - HiLink sgmldeclDeclBlock Normal - HiLink sgmldeclBool Boolean - HiLink sgmldeclSpecial Special - HiLink sgmldeclComment Comment - HiLink sgmldeclStatem Statement - HiLink sgmldeclVariables Type - - delcommand HiLink -endif - -let b:current_syntax = "sgmldecl" -" vim:set tw=78 ts=4: diff --git a/share/vim/vim73/syntax/sgmllnx.vim b/share/vim/vim73/syntax/sgmllnx.vim deleted file mode 100644 index 99e6ea2a..00000000 --- a/share/vim/vim73/syntax/sgmllnx.vim +++ /dev/null @@ -1,68 +0,0 @@ -" Vim syntax file -" Language: SGML-linuxdoc (supported by old sgmltools-1.x) -" (for more information, visit www.sgmltools.org) -" Maintainer: SungHyun Nam -" Last Change: 2008 Sep 17 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case ignore - -" tags -syn region sgmllnxEndTag start=++ contains=sgmllnxTagN,sgmllnxTagError -syn region sgmllnxTag start=+<[^/]+ end=+>+ contains=sgmllnxTagN,sgmllnxTagError -syn match sgmllnxTagN contained +<\s*[-a-zA-Z0-9]\++ms=s+1 contains=sgmllnxTagName -syn match sgmllnxTagN contained ++ -syn region sgmllnxDocType start=++ - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_sgmllnx_syn_inits") - if version < 508 - let did_sgmllnx_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink sgmllnxTag2 Function - HiLink sgmllnxTagN2 Function - HiLink sgmllnxTag Special - HiLink sgmllnxEndTag Special - HiLink sgmllnxParen Special - HiLink sgmllnxEntity Type - HiLink sgmllnxDocEnt Type - HiLink sgmllnxTagName Statement - HiLink sgmllnxComment Comment - HiLink sgmllnxSpecial Special - HiLink sgmllnxDocType PreProc - HiLink sgmllnxTagError Error - - delcommand HiLink -endif - -let b:current_syntax = "sgmllnx" - -" vim:set tw=78 ts=8 sts=2 sw=2 noet: diff --git a/share/vim/vim73/syntax/sh.vim b/share/vim/vim73/syntax/sh.vim deleted file mode 100644 index 26df32d4..00000000 --- a/share/vim/vim73/syntax/sh.vim +++ /dev/null @@ -1,605 +0,0 @@ -" Vim syntax file -" Language: shell (sh) Korn shell (ksh) bash (sh) -" Maintainer: Dr. Charles E. Campbell, Jr. -" Previous Maintainer: Lennart Schultz -" Last Change: Aug 04, 2010 -" Version: 114 -" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax -" For options and settings, please use: :help ft-sh-syntax -" This file includes many ideas from ?ric Brunet (eric.brunet@ens.fr) - -" For version 5.x: Clear all syntax items {{{1 -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" handling /bin/sh with is_kornshell/is_sh {{{1 -" b:is_sh is set when "#! /bin/sh" is found; -" However, it often is just a masquerade by bash (typically Linux) -" or kornshell (typically workstations with Posix "sh"). -" So, when the user sets "is_bash" or "is_kornshell", -" a b:is_sh is converted into b:is_bash/b:is_kornshell, -" respectively. -if !exists("b:is_kornshell") && !exists("b:is_bash") - if exists("g:is_posix") && !exists("g:is_kornshell") - let g:is_kornshell= g:is_posix - endif - if exists("g:is_kornshell") - let b:is_kornshell= 1 - if exists("b:is_sh") - unlet b:is_sh - endif - elseif exists("g:is_bash") - let b:is_bash= 1 - if exists("b:is_sh") - unlet b:is_sh - endif - else - let b:is_sh= 1 - endif -endif - -" set up default g:sh_fold_enabled {{{1 -if !exists("g:sh_fold_enabled") - let g:sh_fold_enabled= 0 -elseif g:sh_fold_enabled != 0 && !has("folding") - let g:sh_fold_enabled= 0 - echomsg "Ignoring g:sh_fold_enabled=".g:sh_fold_enabled."; need to re-compile vim for +fold support" -endif -if !exists("s:sh_fold_functions") - let s:sh_fold_functions = 1 -endif -if !exists("s:sh_fold_heredoc") - let s:sh_fold_heredoc = 2 -endif -if !exists("s:sh_fold_ifdofor") - let s:sh_fold_ifdofor = 4 -endif -if g:sh_fold_enabled && &fdm == "manual" - setlocal fdm=syntax -endif - -" sh syntax is case sensitive {{{1 -syn case match - -" Clusters: contains=@... clusters {{{1 -"================================== -syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK -if exists("b:is_kornshell") - syn cluster ErrorList add=shDTestError -endif -syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shDeref,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement -syn cluster shArithList contains=@shArithParenList,shParenError -syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange -syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq -syn cluster shColonList contains=@shCaseList -syn cluster shCommandSubList contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shExDoubleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest,shCtrlSeq,shSpecial -syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial -syn cluster shDblQuoteList contains=shCommandSub,shDeref,shDerefSimple,shPosnParm,shCtrlSeq,shSpecial -syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPPS -syn cluster shDerefVarList contains=shDerefOp,shDerefVarArray,shDerefOpError -syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote -syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq -syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest -syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq -if exists("b:is_kornshell") || exists("b:is_bash") - syn cluster shFunctionList add=shRepeat - syn cluster shFunctionList add=shDblBrace,shDblParen -endif -syn cluster shHereBeginList contains=@shCommandSubList -syn cluster shHereList contains=shBeginHere,shHerePayload -syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload -syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial -syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest,@shErrorList,shSet -syn cluster shSubShList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator -syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shExDoubleQuote,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shTestOpr,shTest,shCtrlSeq - -" Echo: {{{1 -" ==== -" This one is needed INSIDE a CommandSub, so that `echo bla` be correct -syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment -syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment -syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]' - -" This must be after the strings, so that ... \" will be correct -syn region shEmbeddedEcho contained matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shExDoubleQuote,shDoubleQuote,shCharClass,shCtrlSeq - -" Alias: {{{1 -" ===== -if exists("b:is_kornshell") || exists("b:is_bash") - syn match shStatement "\" - syn region shAlias matchgroup=shStatement start="\\s\+\(\w\+\)\@=" skip="\\$" end="\>\|`" - syn region shAlias matchgroup=shStatement start="\\s\+\(\w\+=\)\@=" skip="\\$" end="=" -endif - -" Error Codes: {{{1 -" ============ -syn match shDoError "\" -syn match shIfError "\" -syn match shInError "\" -syn match shCaseError ";;" -syn match shEsacError "\" -syn match shCurlyError "}" -syn match shParenError ")" -syn match shOK '\.\(done\|fi\|in\|esac\)' -if exists("b:is_kornshell") - syn match shDTestError "]]" -endif -syn match shTestError "]" - -" Options: {{{1 -" ==================== -syn match shOption "\s\zs[-+][-_a-zA-Z0-9]\+\>" -syn match shOption "\s\zs--[^ \t$`'"|]\+" - -" File Redirection Highlighted As Operators: {{{1 -"=========================================== -syn match shRedir "\d\=>\(&[-0-9]\)\=" -syn match shRedir "\d\=>>-\=" -syn match shRedir "\d\=<\(&[-0-9]\)\=" -syn match shRedir "\d<<-\=" - -" Operators: {{{1 -" ========== -syn match shOperator "<<\|>>" contained -syn match shOperator "[!&;|]" contained -syn match shOperator "\[[[^:]\|\]]" contained -syn match shOperator "!\==" skipwhite nextgroup=shPattern -syn match shPattern "\<\S\+\())\)\@=" contained contains=shExSingleQuote,shSingleQuote,shExDoubleQuote,shDoubleQuote,shDeref - -" Subshells: {{{1 -" ========== -syn region shExpr transparent matchgroup=shExprRegion start="{" end="}" contains=@shExprList2 nextgroup=shMoreSpecial -syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")" contains=@shSubShList nextgroup=shMoreSpecial - -" Tests: {{{1 -"======= -syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial -syn region shTest transparent matchgroup=shStatement start="\=\|!=\|==\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]" -syn match shTestOpr contained '=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern -syn match shTestPattern contained '\w\+' -syn match shTestDoubleQuote contained '"[^"]*"' -syn match shTestSingleQuote contained '\\.' -syn match shTestSingleQuote contained "'[^']*'" -if exists("b:is_kornshell") || exists("b:is_bash") - syn region shDblBrace matchgroup=Delimiter start="\[\[" skip=+\\\\\|\\$+ end="\]\]" contains=@shTestList - syn region shDblParen matchgroup=Delimiter start="((" skip=+\\\\\|\\$+ end="))" contains=@shTestList -endif - -" Character Class In Range: {{{1 -" ========================= -syn match shCharClass contained "\[:\(backspace\|escape\|return\|xdigit\|alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|tab\):\]" - -" Loops: do, if, while, until {{{1 -" ====== -if (g:sh_fold_enabled % (s:sh_fold_ifdofor * 2))/s:sh_fold_ifdofor - syn region shDo fold transparent matchgroup=shConditional start="\" matchgroup=shConditional end="\" contains=@shLoopList - syn region shIf fold transparent matchgroup=shConditional start="\#\=" -syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained -if exists("b:is_bash") - syn match shSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained -endif -if exists("b:is_bash") - syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial - syn region shExDoubleQuote matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,shSpecial -else - syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial - syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial -endif -syn region shSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=@Spell -syn region shDoubleQuote matchgroup=shQuote start=+"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell -syn match shStringSpecial "[^[:print:] \t]" contained -syn match shStringSpecial "\%(\\\\\)*\\[\\"'`$()#]" -syn match shSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial -syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]" -syn match shMoreSpecial "\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial contained - -" Comments: {{{1 -"========== -syn cluster shCommentGroup contains=shTodo,@Spell -syn keyword shTodo contained COMBAK FIXME TODO XXX -syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup -syn match shComment "\s\zs#.*$" contains=@shCommentGroup -syn match shQuickComment contained "#.*$" - -" Here Documents: {{{1 -" ========================================= -if version < 600 - syn region shHereDoc matchgroup=shRedir start="<<\s*\**END[a-zA-Z_0-9]*\**" matchgroup=shRedir end="^END[a-zA-Z_0-9]*$" contains=@shDblQuoteList - syn region shHereDoc matchgroup=shRedir start="<<-\s*\**END[a-zA-Z_0-9]*\**" matchgroup=shRedir end="^\s*END[a-zA-Z_0-9]*$" contains=@shDblQuoteList - syn region shHereDoc matchgroup=shRedir start="<<\s*\**EOF\**" matchgroup=shRedir end="^EOF$" contains=@shDblQuoteList - syn region shHereDoc matchgroup=shRedir start="<<-\s*\**EOF\**" matchgroup=shRedir end="^\s*EOF$" contains=@shDblQuoteList - syn region shHereDoc matchgroup=shRedir start="<<\s*\**\.\**" matchgroup=shRedir end="^\.$" contains=@shDblQuoteList - syn region shHereDoc matchgroup=shRedir start="<<-\s*\**\.\**" matchgroup=shRedir end="^\s*\.$" contains=@shDblQuoteList - -elseif (g:sh_fold_enabled % (s:sh_fold_heredoc * 2))/s:sh_fold_heredoc - syn region shHereDoc matchgroup=shRedir fold start="<<\s*\z(\S*\)" matchgroup=shRedir end="^\z1\s*$" contains=@shDblQuoteList - syn region shHereDoc matchgroup=shRedir fold start="<<\s*\"\z(\S*\)\"" matchgroup=shRedir end="^\z1\s*$" - syn region shHereDoc matchgroup=shRedir fold start="<<\s*'\z(\S*\)'" matchgroup=shRedir end="^\z1\s*$" - syn region shHereDoc matchgroup=shRedir fold start="<<-\s*\z(\S*\)" matchgroup=shRedir end="^\s*\z1\s*$" contains=@shDblQuoteList - syn region shHereDoc matchgroup=shRedir fold start="<<-\s*\"\z(\S*\)\"" matchgroup=shRedir end="^\s*\z1\s*$" - syn region shHereDoc matchgroup=shRedir fold start="<<-\s*'\z(\S*\)'" matchgroup=shRedir end="^\s*\z1\s*$" - syn region shHereDoc matchgroup=shRedir fold start="<<\s*\\\_$\_s*\z(\S*\)" matchgroup=shRedir end="^\z1\s*$" - syn region shHereDoc matchgroup=shRedir fold start="<<\s*\\\_$\_s*\"\z(\S*\)\"" matchgroup=shRedir end="^\z1\s*$" - syn region shHereDoc matchgroup=shRedir fold start="<<-\s*\\\_$\_s*'\z(\S*\)'" matchgroup=shRedir end="^\s*\z1\s*$" - syn region shHereDoc matchgroup=shRedir fold start="<<-\s*\\\_$\_s*\z(\S*\)" matchgroup=shRedir end="^\s*\z1\s*$" - syn region shHereDoc matchgroup=shRedir fold start="<<-\s*\\\_$\_s*\"\z(\S*\)\"" matchgroup=shRedir end="^\s*\z1\s*$" - syn region shHereDoc matchgroup=shRedir fold start="<<\s*\\\_$\_s*'\z(\S*\)'" matchgroup=shRedir end="^\z1\s*$" - syn region shHereDoc matchgroup=shRedir fold start="<<\\\z(\S*\)" matchgroup=shRedir end="^\z1\s*$" - -else - syn region shHereDoc matchgroup=shRedir start="<<\s*\\\=\z(\S*\)" matchgroup=shRedir end="^\z1\s*$" contains=@shDblQuoteList - syn region shHereDoc matchgroup=shRedir start="<<\s*\"\z(\S*\)\"" matchgroup=shRedir end="^\z1\s*$" - syn region shHereDoc matchgroup=shRedir start="<<-\s*\z(\S*\)" matchgroup=shRedir end="^\s*\z1\s*$" contains=@shDblQuoteList - syn region shHereDoc matchgroup=shRedir start="<<-\s*'\z(\S*\)'" matchgroup=shRedir end="^\s*\z1\s*$" - syn region shHereDoc matchgroup=shRedir start="<<\s*'\z(\S*\)'" matchgroup=shRedir end="^\z1\s*$" - syn region shHereDoc matchgroup=shRedir start="<<-\s*\"\z(\S*\)\"" matchgroup=shRedir end="^\s*\z1\s*$" - syn region shHereDoc matchgroup=shRedir start="<<\s*\\\_$\_s*\z(\S*\)" matchgroup=shRedir end="^\z1\s*$" - syn region shHereDoc matchgroup=shRedir start="<<-\s*\\\_$\_s*\z(\S*\)" matchgroup=shRedir end="^\s*\z1\s*$" - syn region shHereDoc matchgroup=shRedir start="<<-\s*\\\_$\_s*'\z(\S*\)'" matchgroup=shRedir end="^\s*\z1\s*$" - syn region shHereDoc matchgroup=shRedir start="<<\s*\\\_$\_s*'\z(\S*\)'" matchgroup=shRedir end="^\z1\s*$" - syn region shHereDoc matchgroup=shRedir start="<<\s*\\\_$\_s*\"\z(\S*\)\"" matchgroup=shRedir end="^\z1\s*$" - syn region shHereDoc matchgroup=shRedir start="<<-\s*\\\_$\_s*\"\z(\S*\)\"" matchgroup=shRedir end="^\s*\z1\s*$" - syn region shHereDoc matchgroup=shRedir start="<<\\\z(\S*\)" matchgroup=shRedir end="^\z1\s*$" -endif - -" Here Strings: {{{1 -" ============= -if exists("b:is_bash") - syn match shRedir "<<<" -endif - -" Identifiers: {{{1 -"============= -syn match shSetOption "\s\zs[-+][a-zA-Z0-9]\+\>" contained -syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shSetIdentifier -syn match shSetIdentifier "=" contained nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shSingleQuote,shExSingleQuote -if exists("b:is_bash") - syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList - syn region shSetList oneline matchgroup=shSet start="\\ze[^/]" end="\ze[;|)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList -elseif exists("b:is_kornshell") - syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList - syn region shSetList oneline matchgroup=shSet start="\\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList -else - syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList -endif - -" Functions: {{{1 -if !exists("g:is_posix") - syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo -endif - -if exists("b:is_bash") - if (g:sh_fold_enabled % (s:sh_fold_functions * 2))/s:sh_fold_functions - syn region shFunctionOne fold matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment - syn region shFunctionTwo fold matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment - else - syn region shFunctionOne matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList - syn region shFunctionTwo matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained - endif -else - if (g:sh_fold_enabled % (s:sh_fold_functions * 2))/s:sh_fold_functions - syn region shFunctionOne fold matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment - syn region shFunctionTwo fold matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment - else - syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList - syn region shFunctionTwo matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained - endif -endif - -" Parameter Dereferencing: {{{1 -" ======================== -syn match shDerefSimple "\$\%(\h\w*\|\d\)" -syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray -syn match shDerefWordError "[^}$[]" contained -syn match shDerefSimple "\$[-#*@!?]" -syn match shDerefSimple "\$\$" -if exists("b:is_bash") || exists("b:is_kornshell") - syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList - syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList -endif - -" bash: ${!prefix*} and ${#parameter}: {{{1 -" ==================================== -if exists("b:is_bash") - syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOp - syn match shDerefVar contained "{\@<=!\w\+" nextgroup=@shDerefVarList -endif - -syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOpError -syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp -syn match shDerefVar contained "{\@<=\w\+" nextgroup=@shDerefVarList - -" sh ksh bash : ${var[... ]...} array reference: {{{1 -syn region shDerefVarArray contained matchgroup=shDeref start="\[" end="]" contains=@shCommandSubList nextgroup=shDerefOp,shDerefOpError - -" Special ${parameter OPERATOR word} handling: {{{1 -" sh ksh bash : ${parameter:-word} word is default value -" sh ksh bash : ${parameter:=word} assign word as default value -" sh ksh bash : ${parameter:?word} display word if parameter is null -" sh ksh bash : ${parameter:+word} use word if parameter is not null, otherwise nothing -" ksh bash : ${parameter#pattern} remove small left pattern -" ksh bash : ${parameter##pattern} remove large left pattern -" ksh bash : ${parameter%pattern} remove small right pattern -" ksh bash : ${parameter%%pattern} remove large right pattern -syn cluster shDerefPatternList contains=shDerefPattern,shDerefString -syn match shDerefOpError contained ":[[:punct:]]" -syn match shDerefOp contained ":\=[-=?]" nextgroup=@shDerefPatternList -syn match shDerefOp contained ":\=+" nextgroup=@shDerefPatternList -if exists("b:is_bash") || exists("b:is_kornshell") - syn match shDerefOp contained "#\{1,2}" nextgroup=@shDerefPatternList - syn match shDerefOp contained "%\{1,2}" nextgroup=@shDerefPatternList - syn match shDerefPattern contained "[^{}]\+" contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern - syn region shDerefPattern contained start="{" end="}" contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern - syn match shDerefEscape contained '\%(\\\\\)*\\.' -endif -syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@" -syn sync match shCaseEsacSync groupthere shCaseEsac "\" -syn sync match shDoSync grouphere shDo "\" -syn sync match shDoSync groupthere shDo "\" -syn sync match shForSync grouphere shFor "\" -syn sync match shForSync groupthere shFor "\" -syn sync match shIfSync grouphere shIf "\" -syn sync match shIfSync groupthere shIf "\" -syn sync match shUntilSync grouphere shRepeat "\" -syn sync match shWhileSync grouphere shRepeat "\" - -" Default Highlighting: {{{1 -" ===================== -hi def link shArithRegion shShellVariables -hi def link shBeginHere shRedir -hi def link shCaseBar shConditional -hi def link shCaseCommandSub shCommandSub -hi def link shCaseDoubleQuote shDoubleQuote -hi def link shCaseIn shConditional -hi def link shQuote shOperator -hi def link shCaseSingleQuote shSingleQuote -hi def link shCaseStart shConditional -hi def link shCmdSubRegion shShellVariables -hi def link shColon shComment -hi def link shDerefOp shOperator -hi def link shDerefPOL shDerefOp -hi def link shDerefPPS shDerefOp -hi def link shDeref shShellVariables -hi def link shDerefDelim shOperator -hi def link shDerefSimple shDeref -hi def link shDerefSpecial shDeref -hi def link shDerefString shDoubleQuote -hi def link shDerefVar shDeref -hi def link shDoubleQuote shString -hi def link shEcho shString -hi def link shEchoDelim shOperator -hi def link shEchoQuote shString -hi def link shEmbeddedEcho shString -hi def link shEscape shCommandSub -hi def link shExDoubleQuote shDoubleQuote -hi def link shExSingleQuote shSingleQuote -hi def link shFunction Function -hi def link shHereDoc shString -hi def link shHerePayload shHereDoc -hi def link shLoop shStatement -hi def link shMoreSpecial shSpecial -hi def link shOption shCommandSub -hi def link shPattern shString -hi def link shParen shArithmetic -hi def link shPosnParm shShellVariables -hi def link shQuickComment shComment -hi def link shRange shOperator -hi def link shRedir shOperator -hi def link shSetListDelim shOperator -hi def link shSetOption shOption -hi def link shSingleQuote shString -hi def link shSource shOperator -hi def link shStringSpecial shSpecial -hi def link shSubShRegion shOperator -hi def link shTestOpr shConditional -hi def link shTestPattern shString -hi def link shTestDoubleQuote shString -hi def link shTestSingleQuote shString -hi def link shVariable shSetList -hi def link shWrapLineOperator shOperator - -if exists("b:is_bash") - hi def link bashAdminStatement shStatement - hi def link bashSpecialVariables shShellVariables - hi def link bashStatement shStatement - hi def link shFunctionParen Delimiter - hi def link shFunctionDelim Delimiter -endif -if exists("b:is_kornshell") - hi def link kshSpecialVariables shShellVariables - hi def link kshStatement shStatement - hi def link shFunctionParen Delimiter -endif - -hi def link shCaseError Error -hi def link shCondError Error -hi def link shCurlyError Error -hi def link shDerefError Error -hi def link shDerefOpError Error -hi def link shDerefWordError Error -hi def link shDoError Error -hi def link shEsacError Error -hi def link shIfError Error -hi def link shInError Error -hi def link shParenError Error -hi def link shTestError Error -if exists("b:is_kornshell") - hi def link shDTestError Error -endif - -hi def link shArithmetic Special -hi def link shCharClass Identifier -hi def link shSnglCase Statement -hi def link shCommandSub Special -hi def link shComment Comment -hi def link shConditional Conditional -hi def link shCtrlSeq Special -hi def link shExprRegion Delimiter -hi def link shFunctionKey Function -hi def link shFunctionName Function -hi def link shNumber Number -hi def link shOperator Operator -hi def link shRepeat Repeat -hi def link shSet Statement -hi def link shSetList Identifier -hi def link shShellVariables PreProc -hi def link shSpecial Special -hi def link shStatement Statement -hi def link shString String -hi def link shTodo Todo -hi def link shAlias Identifier - -" Set Current Syntax: {{{1 -" =================== -if exists("b:is_bash") - let b:current_syntax = "bash" -elseif exists("b:is_kornshell") - let b:current_syntax = "ksh" -else - let b:current_syntax = "sh" -endif - -" vim: ts=16 fdm=marker diff --git a/share/vim/vim73/syntax/sisu.vim b/share/vim/vim73/syntax/sisu.vim deleted file mode 100644 index 6944782f..00000000 --- a/share/vim/vim73/syntax/sisu.vim +++ /dev/null @@ -1,204 +0,0 @@ -"SiSU Vim syntax file -"SiSU Maintainer: Ralph Amissah -"SiSU Markup: SiSU (sisu-2.0.1, 2010-03-17) -"(originally looked at Ruby Vim by Mirko Nasato) - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -else -endif - -" Errors: -syn match sisu_error contains=sisu_link,sisu_error_wspace "" - -" Markers Identifiers: -if !exists("sisu_no_identifiers") - syn match sisu_mark_endnote "\~^" - syn match sisu_break contains=@NoSpell "
\|
" - syn match sisu_control contains=@NoSpell "<:p[bn]>" - syn match sisu_marktail "[~-]#" - syn match sisu_control "\"" - syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" - syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" - syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+" - syn match sisu_link " \*\~\S\+" - syn match sisu_action "^<:insert\d\+>" - syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^._-]\+\.ss[it]$" - syn match sisu_require contains=@NoSpell "^<<{[a-zA-Z0-9^._-]\+\.ss[it]}$" - syn match sisu_structure "^:A\~$" - syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|note\):\s" "group=sisu_header_content - syn match sisu_sub_header_creator "^\s\+:\(author\|translator\|illustrator\|photographer\|audio\|digitized_by\|prepared_by\):\s" - syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|audio\|digitization\|license\|all\):\s" "access_rights license - syn match sisu_sub_header_classify "^\s\+:\(type\|subject\|topic_register\|keywords\|coverage\|relation\|format\|identifier\|isbn\|dewey\|loc\|pg\):\s" - syn match sisu_sub_header_dates "^\s\+:\(published\|available\|created\|issued\|valid\|modified\|added_to_site\|translated\|original_publication\):\s" - syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|institution\|nationality\|source\):\s" - syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|italics\|bold\|skin\|stamp\|promo\|ad\|manpage\):\s" - syn match sisu_sub_header_notes "^\s\+:\(comment\|abstract\|description\|history\|prefix\|prefix_[ab]\):\s" - syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]" - syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]" - syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]" - syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]" - syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1" - syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+" - syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1" - syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+" -endif - -"URLs Numbers And ASCII Codes: -syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" -syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)" - -"Tuned Error: (is error if not already matched) -syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" -syn match sisu_error contains=sisu_error "]" - -"Simple Paired Enclosed Markup: -"url/link -syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" -"header -syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_dates matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_source matchgroup=sisu_header start="^[@]source:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" -"headings -syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$" -"grouped text -syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table" -syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$" -syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\(alt\|group\|poem\){" end="^}\(alt\|group\|poem\)" -syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code" -"endnotes -syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" -syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" -syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$" -"links and images -syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|\.\./\)\S\+" oneline -syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline -syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline -"some line operations -syn region sisu_control contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_control start="\(\(^\| \)!_ \|<:b>\)" end="$" -syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$" -syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" -"font face curly brackets -"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline -syn region sisu_index matchgroup=sisu_index_block start="^={" end="}" -syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" -syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" -syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" -syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/" -syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" -syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" -syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," -syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" -syn region sisu_html contains=sisu_error contains=sisu_strikeout matchgroup=sisu_contain start="" end="" oneline -"single words bold italicise etc. "workon -syn region sisu_control contains=sisu_error matchgroup=sisu_control start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline -syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline -"misc -syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline - -"Expensive Mode: -if !exists("sisu_no_expensive") -else " not Expensive - syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline -endif " Expensive? - -"Headers And Headings: (Document Instructions) -syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" -syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" - -"Errors: -syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]" -syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" -syn match sisu_error_wspace contains=sisu_error_wspace " \s*$" -syn match sisu_error contains=sisu_error_wspace "\t\+" -syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+" -syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]" -syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$" -syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$" -syn match sisu_error contains=sisu_error "\s\+.{{" -syn match sisu_error contains=sisu_error "^\~\s*$" -syn match sisu_error contains=sisu_error "^0\~.*" -syn match sisu_error contains=sisu_error "^[1-9]\~\s*$" -syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$" -syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]" -syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*" -syn match sisu_error contains=sisu_error "{\~^\S\+" -syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]" -syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']" -syn match sisu_error contains=sisu_error "
" -"errors for filetype sisu, though not error in 'metaverse': -syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>" -syn match sisu_error "/\?<\([biu]\)>[^()]\{-}\n$" - -"Error Exceptions: -syn match sisu_control "\n$" "contains=ALL -syn match sisu_control " //" -syn match sisu_error "%{" -syn match sisu_error "
_\?https\?:\S\+\|_\?https\?:\S\+
" -syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]" -syn match sisu_comment "^%\{1,2\}.\+" - -"Definitions Default Highlighting: -hi def link sisu_normal Normal -hi def link sisu_header PreProc -hi def link sisu_header_content Normal -hi def link sisu_sub_header_title Statement -hi def link sisu_sub_header_creator Statement -hi def link sisu_sub_header_rights Statement -hi def link sisu_sub_header_classify Statement -hi def link sisu_sub_header_dates Statement -hi def link sisu_sub_header_make Statement -hi def link sisu_sub_header_links Statement -hi def link sisu_sub_header_publisher Statement -hi def link sisu_sub_header_notes Statement -hi def link sisu_sub_header_original Statement -hi def link sisu_sub_header_source Statement -hi def link sisu_heading Title -hi def link sisu_structure Operator -hi def link sisu_contain Include -hi def link sisu_mark_endnote Include -hi def link sisu_require NonText -hi def link sisu_link NonText -hi def link sisu_linked String -hi def link sisu_fontface Include -hi def link sisu_strikeout DiffDelete -hi def link sisu_content_alt Special -hi def link sisu_sem_content SpecialKey -hi def link sisu_sem_block Special -hi def link sisu_sem_marker Visual -"hi def link sisu_sem_marker Structure -hi def link sisu_sem_marker_block MatchParen -hi def link sisu_sem_ex_marker FoldColumn -hi def link sisu_sem_ex_marker_block Folded -hi def link sisu_sem_ex_content Comment -"hi def link sisu_sem_ex_content SpecialKey -hi def link sisu_sem_ex_block Comment -hi def link sisu_index SpecialKey -hi def link sisu_index_block Visual -hi def link sisu_content_endnote Special -hi def link sisu_control Define -hi def link sisu_ocn Include -hi def link sisu_number Number -hi def link sisu_identifier Function -hi def link sisu_underline Underlined -hi def link sisu_markpara Include -hi def link sisu_marktail Include -hi def link sisu_mark Identifier -hi def link sisu_break Structure -hi def link sisu_html Type -hi def link sisu_action Identifier -hi def link sisu_comment Comment -hi def link sisu_error_sem_marker Error -hi def link sisu_error_wspace Error -hi def link sisu_error Error -let b:current_syntax = "sisu" diff --git a/share/vim/vim73/syntax/slice.vim b/share/vim/vim73/syntax/slice.vim deleted file mode 100644 index 8a4d6751..00000000 --- a/share/vim/vim73/syntax/slice.vim +++ /dev/null @@ -1,90 +0,0 @@ -" Vim syntax file -" Language: Slice (ZeroC's Specification Language for Ice) -" Maintainer: Morel Bodin -" Last Change: 2005 Dec 03 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" The Slice keywords - -syn keyword sliceType bool byte double float int long short string void -syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws -syn keyword sliceConstruct class enum exception dictionary interface module LocalObject Object sequence struct -syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws -syn keyword sliceBoolean false true - -" Include directives -syn match sliceIncluded display contained "<[^>]*>" -syn match sliceInclude display "^\s*#\s*include\>\s*["<]" contains=sliceIncluded - -" Double-include guards -syn region sliceGuard start="^#\(define\|ifndef\|endif\)" end="$" - -" Strings and characters -syn region sliceString start=+"+ end=+"+ - -" Numbers (shamelessly ripped from c.vim, only slightly modified) -"integer number, or floating point number without a dot and with "f". -syn case ignore -syn match sliceNumbers display transparent "\<\d\|\.\d" contains=sliceNumber,sliceFloat,sliceOctal -syn match sliceNumber display contained "\d\+" -"hex number -syn match sliceNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" -" Flag the first zero of an octal number as something special -syn match sliceOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=sliceOctalZero -syn match sliceOctalZero display contained "\<0" -syn match sliceFloat display contained "\d\+f" -"floating point number, with dot, optional exponent -syn match sliceFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" -"floating point number, starting with a dot, optional exponent -syn match sliceFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" -"floating point number, without dot, with exponent -syn match sliceFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" -" flag an octal number with wrong digits -syn case match - - -" Comments -syn region sliceComment start="/\*" end="\*/" -syn match sliceComment "//.*" - -syn sync ccomment sliceComment - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_slice_syn_inits") - if version < 508 - let did_slice_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink sliceComment Comment - HiLink sliceConstruct Keyword - HiLink sliceType Type - HiLink sliceString String - HiLink sliceIncluded String - HiLink sliceQualifier Keyword - HiLink sliceInclude Include - HiLink sliceGuard PreProc - HiLink sliceBoolean Boolean - HiLink sliceFloat Number - HiLink sliceNumber Number - HiLink sliceOctal Number - HiLink sliceOctalZero Special - HiLink sliceNumberError Special - - delcommand HiLink -endif - -let b:current_syntax = "slice" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/smil.vim b/share/vim/vim73/syntax/smil.vim deleted file mode 100644 index 0b53d8ec..00000000 --- a/share/vim/vim73/syntax/smil.vim +++ /dev/null @@ -1,154 +0,0 @@ -" Vim syntax file -" Language: SMIL (Synchronized Multimedia Integration Language) -" Maintainer: Herve Foucher -" URL: http://www.helio.org/vim/syntax/smil.vim -" Last Change: 2003 May 11 - -" To learn more about SMIL, please refer to http://www.w3.org/AudioVideo/ -" and to http://www.helio.org/products/smil/tutorial/ - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" SMIL is case sensitive -syn case match - -" illegal characters -syn match smilError "[<>&]" -syn match smilError "[()&]" - -if !exists("main_syntax") - let main_syntax = 'smil' -endif - -" tags -syn match smilSpecial contained "\\\d\d\d\|\\." -syn match smilSpecial contained "(" -syn match smilSpecial contained "id(" -syn match smilSpecial contained ")" -syn keyword smilSpecial contained remove freeze true false on off overdub caption new pause replace -syn keyword smilSpecial contained first last -syn keyword smilSpecial contained fill meet slice scroll hidden -syn region smilString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=smilSpecial -syn region smilString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=smilSpecial -syn match smilValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 -syn region smilEndTag start=++ contains=smilTagN,smilTagError -syn region smilTag start=+<[^/]+ end=+>+ contains=smilTagN,smilString,smilArg,smilValue,smilTagError,smilEvent,smilCssDefinition -syn match smilTagN contained +<\s*[-a-zA-Z0-9]\++ms=s+1 contains=smilTagName,smilSpecialTagName -syn match smilTagN contained +]<"ms=s+1 - -" tag names -syn keyword smilTagName contained smil head body anchor a switch region layout meta -syn match smilTagName contained "root-layout" -syn keyword smilTagName contained par seq -syn keyword smilTagName contained animation video img audio ref text textstream -syn match smilTagName contained "\<\(head\|body\)\>" - - -" legal arg names -syn keyword smilArg contained dur begin end href target id coords show title abstract author copyright alt -syn keyword smilArg contained left top width height fit src name content fill longdesc repeat type -syn match smilArg contained "z-index" -syn match smilArg contained " end-sync" -syn match smilArg contained " region" -syn match smilArg contained "background-color" -syn match smilArg contained "system-bitrate" -syn match smilArg contained "system-captions" -syn match smilArg contained "system-overdub-or-caption" -syn match smilArg contained "system-language" -syn match smilArg contained "system-required" -syn match smilArg contained "system-screen-depth" -syn match smilArg contained "system-screen-size" -syn match smilArg contained "clip-begin" -syn match smilArg contained "clip-end" -syn match smilArg contained "skip-content" - - -" SMIL Boston ext. -" This are new SMIL functionnalities seen on www.w3.org on August 3rd 1999 - -" Animation -syn keyword smilTagName contained animate set move -syn keyword smilArg contained calcMode from to by additive values origin path -syn keyword smilArg contained accumulate hold attribute -syn match smilArg contained "xml:link" -syn keyword smilSpecial contained discrete linear spline parent layout -syn keyword smilSpecial contained top left simple - -" Linking -syn keyword smilTagName contained area -syn keyword smilArg contained actuate behavior inline sourceVolume -syn keyword smilArg contained destinationVolume destinationPlaystate tabindex -syn keyword smilArg contained class style lang dir onclick ondblclick onmousedown onmouseup onmouseover onmousemove onmouseout onkeypress onkeydown onkeyup shape nohref accesskey onfocus onblur -syn keyword smilSpecial contained play pause stop rect circ poly child par seq - -" Media Object -syn keyword smilTagName contained rtpmap -syn keyword smilArg contained port transport encoding payload clipBegin clipEnd -syn match smilArg contained "fmt-list" - -" Timing and Synchronization -syn keyword smilTagName contained excl -syn keyword smilArg contained beginEvent endEvent eventRestart endSync repeatCount repeatDur -syn keyword smilArg contained syncBehavior syncTolerance -syn keyword smilSpecial contained canSlip locked - -" special characters -syn match smilSpecialChar "&[^;]*;" - -if exists("smil_wrong_comments") - syn region smilComment start=++ -else - syn region smilComment start=++ contains=smilCommentPart,smilCommentError - syn match smilCommentError contained "[^>+ - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_smil_syntax_inits") - if version < 508 - let did_smil_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink smilTag Function - HiLink smilEndTag Identifier - HiLink smilArg Type - HiLink smilTagName smilStatement - HiLink smilSpecialTagName Exception - HiLink smilValue Value - HiLink smilSpecialChar Special - - HiLink smilSpecial Special - HiLink smilSpecialChar Special - HiLink smilString String - HiLink smilStatement Statement - HiLink smilComment Comment - HiLink smilCommentPart Comment - HiLink smilPreProc PreProc - HiLink smilValue String - HiLink smilCommentError smilError - HiLink smilTagError smilError - HiLink smilError Error - - delcommand HiLink -endif - -let b:current_syntax = "smil" - -if main_syntax == 'smil' - unlet main_syntax -endif - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/snnspat.vim b/share/vim/vim73/syntax/snnspat.vim deleted file mode 100644 index 3c07fad1..00000000 --- a/share/vim/vim73/syntax/snnspat.vim +++ /dev/null @@ -1,68 +0,0 @@ -" Vim syntax file -" Language: SNNS pattern file -" Maintainer: Davide Alberani -" Last Change: 28 Apr 2001 -" Version: 0.2 -" URL: http://digilander.iol.it/alberanid/vim/syntax/snnspat.vim -" -" SNNS http://www-ra.informatik.uni-tuebingen.de/SNNS/ -" is a simulator for neural networks. - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - - -" anything that isn't part of the header, a comment or a number -" is wrong -syn match snnspatError ".*" -" hoping that matches any kind of notation... -syn match snnspatAccepted "\([-+]\=\(\d\+\.\|\.\)\=\d\+\([Ee][-+]\=\d\+\)\=\)" -syn match snnspatAccepted "\s" -syn match snnspatBrac "\[\s*\d\+\(\s\|\d\)*\]" contains=snnspatNumbers - -" the accepted fields in the header -syn match snnspatNoHeader "No\. of patterns\s*:\s*" contained -syn match snnspatNoHeader "No\. of input units\s*:\s*" contained -syn match snnspatNoHeader "No\. of output units\s*:\s*" contained -syn match snnspatNoHeader "No\. of variable input dimensions\s*:\s*" contained -syn match snnspatNoHeader "No\. of variable output dimensions\s*:\s*" contained -syn match snnspatNoHeader "Maximum input dimensions\s*:\s*" contained -syn match snnspatNoHeader "Maximum output dimensions\s*:\s*" contained -syn match snnspatGen "generated at.*" contained contains=snnspatNumbers -syn match snnspatGen "SNNS pattern definition file [Vv]\d\.\d" contained contains=snnspatNumbers - -" the header, what is not an accepted field, is an error -syn region snnspatHeader start="^SNNS" end="^\s*[-+\.]\=[0-9#]"me=e-2 contains=snnspatNoHeader,snnspatNumbers,snnspatGen,snnspatBrac - -" numbers inside the header -syn match snnspatNumbers "\d" contained -syn match snnspatComment "#.*$" contains=snnspatTodo -syn keyword snnspatTodo TODO XXX FIXME contained - -if version >= 508 || !exists("did_snnspat_syn_inits") - if version < 508 - let did_snnspat_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink snnspatGen Statement - HiLink snnspatHeader Error - HiLink snnspatNoHeader Define - HiLink snnspatNumbers Number - HiLink snnspatComment Comment - HiLink snnspatError Error - HiLink snnspatTodo Todo - HiLink snnspatAccepted NONE - HiLink snnspatBrac NONE - - delcommand HiLink -endif - -let b:current_syntax = "snnspat" - -" vim: ts=8 sw=2 diff --git a/share/vim/vim73/syntax/spice.vim b/share/vim/vim73/syntax/spice.vim deleted file mode 100644 index ee1433ea..00000000 --- a/share/vim/vim73/syntax/spice.vim +++ /dev/null @@ -1,87 +0,0 @@ -" Vim syntax file -" Language: Spice circuit simulator input netlist -" Maintainer: Noam Halevy -" Last Change: 12/08/99 -" -" This is based on sh.vim by Lennart Schultz -" but greatly simplified - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" spice syntax is case INsensitive -syn case ignore - -syn keyword spiceTodo contained TODO - -syn match spiceComment "^ \=\*.*$" -syn match spiceComment "\$.*$" - -" Numbers, all with engineering suffixes and optional units -"========================================================== -"floating point number, with dot, optional exponent -syn match spiceNumber "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" -"floating point number, starting with a dot, optional exponent -syn match spiceNumber "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" -"integer number with optional exponent -syn match spiceNumber "\<[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" - -" Misc -"===== -syn match spiceWrapLineOperator "\\$" -syn match spiceWrapLineOperator "^+" - -syn match spiceStatement "^ \=\.\I\+" - -" Matching pairs of parentheses -"========================================== -syn region spiceParen transparent matchgroup=spiceOperator start="(" end=")" contains=ALLBUT,spiceParenError -syn region spiceSinglequote matchgroup=spiceOperator start=+'+ end=+'+ - -" Errors -"======= -syn match spiceParenError ")" - -" Syncs -" ===== -syn sync minlines=50 - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_spice_syntax_inits") - if version < 508 - let did_spice_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink spiceTodo Todo - HiLink spiceWrapLineOperator spiceOperator - HiLink spiceSinglequote spiceExpr - HiLink spiceExpr Function - HiLink spiceParenError Error - HiLink spiceStatement Statement - HiLink spiceNumber Number - HiLink spiceComment Comment - HiLink spiceOperator Operator - - delcommand HiLink -endif - -let b:current_syntax = "spice" - -" insert the following to $VIM/syntax/scripts.vim -" to autodetect HSpice netlists and text listing output: -" -" " Spice netlists and text listings -" elseif getline(1) =~ 'spice\>' || getline("$") =~ '^\.end' -" so :p:h/spice.vim - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/spup.vim b/share/vim/vim73/syntax/spup.vim deleted file mode 100644 index af577374..00000000 --- a/share/vim/vim73/syntax/spup.vim +++ /dev/null @@ -1,277 +0,0 @@ -" Vim syntax file -" Language: Speedup, plant simulator from AspenTech -" Maintainer: Stefan.Schwarzer -" URL: http://www.ndh.net/home/sschwarzer/download/spup.vim -" Last Change: 2003 May 11 -" Filename: spup.vim - -" Bugs -" - in the appropriate sections keywords are always highlighted -" even if they are not used with the appropriate meaning; -" example: in -" MODEL demonstration -" TYPE -" *area AS area -" both "area" are highlighted as spupType. -" -" If you encounter problems or have questions or suggestions, mail me - -" Remove old syntax stuff -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" don't hightlight several keywords like subsections -"let strict_subsections = 1 - -" highlight types usually found in DECLARE section -if !exists("hightlight_types") - let highlight_types = 1 -endif - -" one line comment syntax (# comments) -" 1. allow appended code after comment, do not complain -" 2. show code beginnig with the second # as an error -" 3. show whole lines with more than one # as an error -if !exists("oneline_comments") - let oneline_comments = 2 -endif - -" Speedup SECTION regions -syn case ignore -syn region spupCdi matchgroup=spupSection start="^CDI" end="^\*\*\*\*" contains=spupCdiSubs,@spupOrdinary -syn region spupConditions matchgroup=spupSection start="^CONDITIONS" end="^\*\*\*\*" contains=spupConditionsSubs,@spupOrdinary,spupConditional,spupOperator,spupCode -syn region spupDeclare matchgroup=spupSection start="^DECLARE" end="^\*\*\*\*" contains=spupDeclareSubs,@spupOrdinary,spupTypes,spupCode -syn region spupEstimation matchgroup=spupSection start="^ESTIMATION" end="^\*\*\*\*" contains=spupEstimationSubs,@spupOrdinary -syn region spupExternal matchgroup=spupSection start="^EXTERNAL" end="^\*\*\*\*" contains=spupExternalSubs,@spupOrdinary -syn region spupFlowsheet matchgroup=spupSection start="^FLOWSHEET" end="^\*\*\*\*" contains=spupFlowsheetSubs,@spupOrdinary,spupStreams,@spupTextproc -syn region spupFunction matchgroup=spupSection start="^FUNCTION" end="^\*\*\*\*" contains=spupFunctionSubs,@spupOrdinary,spupHelp,spupCode,spupTypes -syn region spupGlobal matchgroup=spupSection start="^GLOBAL" end="^\*\*\*\*" contains=spupGlobalSubs,@spupOrdinary -syn region spupHomotopy matchgroup=spupSection start="^HOMOTOPY" end="^\*\*\*\*" contains=spupHomotopySubs,@spupOrdinary -syn region spupMacro matchgroup=spupSection start="^MACRO" end="^\*\*\*\*" contains=spupMacroSubs,@spupOrdinary,@spupTextproc,spupTypes,spupStreams,spupOperator -syn region spupModel matchgroup=spupSection start="^MODEL" end="^\*\*\*\*" contains=spupModelSubs,@spupOrdinary,spupConditional,spupOperator,spupTypes,spupStreams,@spupTextproc,spupHelp -syn region spupOperation matchgroup=spupSection start="^OPERATION" end="^\*\*\*\*" contains=spupOperationSubs,@spupOrdinary,@spupTextproc -syn region spupOptions matchgroup=spupSection start="^OPTIONS" end="^\*\*\*\*" contains=spupOptionsSubs,@spupOrdinary -syn region spupProcedure matchgroup=spupSection start="^PROCEDURE" end="^\*\*\*\*" contains=spupProcedureSubs,@spupOrdinary,spupHelp,spupCode,spupTypes -syn region spupProfiles matchgroup=spupSection start="^PROFILES" end="^\*\*\*\*" contains=@spupOrdinary,@spupTextproc -syn region spupReport matchgroup=spupSection start="^REPORT" end="^\*\*\*\*" contains=spupReportSubs,@spupOrdinary,spupHelp,@spupTextproc -syn region spupTitle matchgroup=spupSection start="^TITLE" end="^\*\*\*\*" contains=spupTitleSubs,spupComment,spupConstant,spupError -syn region spupUnit matchgroup=spupSection start="^UNIT" end="^\*\*\*\*" contains=spupUnitSubs,@spupOrdinary - -" Subsections -syn keyword spupCdiSubs INPUT FREE OUTPUT LINEARTIME MINNONZERO CALCULATE FILES SCALING contained -syn keyword spupDeclareSubs TYPE STREAM contained -syn keyword spupEstimationSubs ESTIMATE SSEXP DYNEXP RESULT contained -syn keyword spupExternalSubs TRANSMIT RECEIVE contained -syn keyword spupFlowsheetSubs STREAM contained -syn keyword spupFunctionSubs INPUT OUTPUT contained -syn keyword spupGlobalSubs VARIABLES MAXIMIZE MINIMIZE CONSTRAINT contained -syn keyword spupHomotopySubs VARY OPTIONS contained -syn keyword spupMacroSubs MODEL FLOWSHEET contained -syn keyword spupModelSubs CATEGORY SET TYPE STREAM EQUATION PROCEDURE contained -syn keyword spupOperationSubs SET PRESET INITIAL SSTATE FREE contained -syn keyword spupOptionsSubs ROUTINES TRANSLATE EXECUTION contained -syn keyword spupProcedureSubs INPUT OUTPUT SPACE PRECALL POSTCALL DERIVATIVE STREAM contained -" no subsections for Profiles -syn keyword spupReportSubs SET INITIAL FIELDS FIELDMARK DISPLAY WITHIN contained -syn keyword spupUnitSubs ROUTINES SET contained - -" additional keywords for subsections -if !exists( "strict_subsections" ) - syn keyword spupConditionsSubs STOP PRINT contained - syn keyword spupDeclareSubs UNIT SET COMPONENTS THERMO OPTIONS contained - syn keyword spupEstimationSubs VARY MEASURE INITIAL contained - syn keyword spupFlowsheetSubs TYPE FEED PRODUCT INPUT OUTPUT CONNECTION OF IS contained - syn keyword spupMacroSubs CONNECTION STREAM SET INPUT OUTPUT OF IS FEED PRODUCT TYPE contained - syn keyword spupModelSubs AS ARRAY OF INPUT OUTPUT CONNECTION contained - syn keyword spupOperationSubs WITHIN contained - syn keyword spupReportSubs LEFT RIGHT CENTER CENTRE UOM TIME DATE VERSION RELDATE contained - syn keyword spupUnitSubs IS A contained -endif - -" Speedup data types -if exists( "highlight_types" ) - syn keyword spupTypes act_coeff_liq area coefficient concentration contained - syn keyword spupTypes control_signal cond_liq cond_vap cp_mass_liq contained - syn keyword spupTypes cp_mol_liq cp_mol_vap cv_mol_liq cv_mol_vap contained - syn keyword spupTypes diffus_liq diffus_vap delta_p dens_mass contained - syn keyword spupTypes dens_mass_sol dens_mass_liq dens_mass_vap dens_mol contained - syn keyword spupTypes dens_mol_sol dens_mol_liq dens_mol_vap enthflow contained - syn keyword spupTypes enth_mass enth_mass_liq enth_mass_vap enth_mol contained - syn keyword spupTypes enth_mol_sol enth_mol_liq enth_mol_vap entr_mol contained - syn keyword spupTypes entr_mol_sol entr_mol_liq entr_mol_vap fraction contained - syn keyword spupTypes flow_mass flow_mass_liq flow_mass_vap flow_mol contained - syn keyword spupTypes flow_mol_vap flow_mol_liq flow_vol flow_vol_vap contained - syn keyword spupTypes flow_vol_liq fuga_vap fuga_liq fuga_sol contained - syn keyword spupTypes gibb_mol_sol heat_react heat_trans_coeff contained - syn keyword spupTypes holdup_heat holdup_heat_liq holdup_heat_vap contained - syn keyword spupTypes holdup_mass holdup_mass_liq holdup_mass_vap contained - syn keyword spupTypes holdup_mol holdup_mol_liq holdup_mol_vap k_value contained - syn keyword spupTypes length length_delta length_short liqfraction contained - syn keyword spupTypes liqmassfraction mass massfraction molefraction contained - syn keyword spupTypes molweight moment_inertia negative notype percent contained - syn keyword spupTypes positive pressure press_diff press_drop press_rise contained - syn keyword spupTypes ratio reaction reaction_mass rotation surf_tens contained - syn keyword spupTypes temperature temperature_abs temp_diff temp_drop contained - syn keyword spupTypes temp_rise time vapfraction vapmassfraction contained - syn keyword spupTypes velocity visc_liq visc_vap volume zmom_rate contained - syn keyword spupTypes seg_rate smom_rate tmom_rate zmom_mass seg_mass contained - syn keyword spupTypes smom_mass tmom_mass zmom_holdup seg_holdup contained - syn keyword spupTypes smom_holdup tmom_holdup contained -endif - -" stream types -syn keyword spupStreams mainstream vapour liquid contained - -" "conditional" keywords -syn keyword spupConditional IF THEN ELSE ENDIF contained -" Operators, symbols etc. -syn keyword spupOperator AND OR NOT contained -syn match spupSymbol "[,\-+=:;*/\"<>@%()]" contained -syn match spupSpecial "[&\$?]" contained -" Surprisingly, Speedup allows no unary + instead of the - -syn match spupError "[(=+\-*/]\s*+\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained -syn match spupError "[(=+\-*/]\s*+\d\+\.\([ed][+-]\=\d\+\)\=\>"lc=1 contained -syn match spupError "[(=+\-*/]\s*+\d*\.\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained -" String -syn region spupString start=+"+ end=+"+ oneline contained -syn region spupString start=+'+ end=+'+ oneline contained -" Identifier -syn match spupIdentifier "\<[a-z][a-z0-9_]*\>" contained -" Textprocessor directives -syn match spupTextprocGeneric "?[a-z][a-z0-9_]*\>" contained -syn region spupTextprocError matchgroup=spupTextprocGeneric start="?ERROR" end="?END"he=s-1 contained -" Number, without decimal point -syn match spupNumber "-\=\d\+\([ed][+-]\=\d\+\)\=" contained -" Number, allows 1. before exponent -syn match spupNumber "-\=\d\+\.\([ed][+-]\=\d\+\)\=" contained -" Number allows .1 before exponent -syn match spupNumber "-\=\d*\.\d\+\([ed][+-]\=\d\+\)\=" contained -" Help subsections -syn region spupHelp start="^HELP"hs=e+1 end="^\$ENDHELP"he=s-1 contained -" Fortran code -syn region spupCode start="^CODE"hs=e+1 end="^\$ENDCODE"he=s-1 contained -" oneline comments -if oneline_comments > 3 - oneline_comments = 2 " default -endif -if oneline_comments == 1 - syn match spupComment "#[^#]*#\=" -elseif oneline_comments == 2 - syn match spupError "#.*$" - syn match spupComment "#[^#]*" nextgroup=spupError -elseif oneline_comments == 3 - syn match spupComment "#[^#]*" - syn match spupError "#[^#]*#.*" -endif -" multiline comments -syn match spupOpenBrace "{" contained -syn match spupError "}" -syn region spupComment matchgroup=spupComment2 start="{" end="}" keepend contains=spupOpenBrace - -syn cluster spupOrdinary contains=spupNumber,spupIdentifier,spupSymbol -syn cluster spupOrdinary add=spupError,spupString,spupComment -syn cluster spupTextproc contains=spupTextprocGeneric,spupTextprocError - -" define syncronizing; especially OPERATION sections can become very large -syn sync clear -syn sync minlines=100 -syn sync maxlines=500 - -syn sync match spupSyncOperation grouphere spupOperation "^OPERATION" -syn sync match spupSyncCdi grouphere spupCdi "^CDI" -syn sync match spupSyncConditions grouphere spupConditions "^CONDITIONS" -syn sync match spupSyncDeclare grouphere spupDeclare "^DECLARE" -syn sync match spupSyncEstimation grouphere spupEstimation "^ESTIMATION" -syn sync match spupSyncExternal grouphere spupExternal "^EXTERNAL" -syn sync match spupSyncFlowsheet grouphere spupFlowsheet "^FLOWSHEET" -syn sync match spupSyncFunction grouphere spupFunction "^FUNCTION" -syn sync match spupSyncGlobal grouphere spupGlobal "^GLOBAL" -syn sync match spupSyncHomotopy grouphere spupHomotopy "^HOMOTOPY" -syn sync match spupSyncMacro grouphere spupMacro "^MACRO" -syn sync match spupSyncModel grouphere spupModel "^MODEL" -syn sync match spupSyncOperation grouphere spupOperation "^OPERATION" -syn sync match spupSyncOptions grouphere spupOptions "^OPTIONS" -syn sync match spupSyncProcedure grouphere spupProcedure "^PROCEDURE" -syn sync match spupSyncProfiles grouphere spupProfiles "^PROFILES" -syn sync match spupSyncReport grouphere spupReport "^REPORT" -syn sync match spupSyncTitle grouphere spupTitle "^TITLE" -syn sync match spupSyncUnit grouphere spupUnit "^UNIT" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_spup_syn_inits") - if version < 508 - let did_spup_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink spupCdi spupSection - HiLink spupConditions spupSection - HiLink spupDeclare spupSection - HiLink spupEstimation spupSection - HiLink spupExternal spupSection - HiLink spupFlowsheet spupSection - HiLink spupFunction spupSection - HiLink spupGlobal spupSection - HiLink spupHomotopy spupSection - HiLink spupMacro spupSection - HiLink spupModel spupSection - HiLink spupOperation spupSection - HiLink spupOptions spupSection - HiLink spupProcedure spupSection - HiLink spupProfiles spupSection - HiLink spupReport spupSection - HiLink spupTitle spupConstant " this is correct, truly ;) - HiLink spupUnit spupSection - - HiLink spupCdiSubs spupSubs - HiLink spupConditionsSubs spupSubs - HiLink spupDeclareSubs spupSubs - HiLink spupEstimationSubs spupSubs - HiLink spupExternalSubs spupSubs - HiLink spupFlowsheetSubs spupSubs - HiLink spupFunctionSubs spupSubs - HiLink spupHomotopySubs spupSubs - HiLink spupMacroSubs spupSubs - HiLink spupModelSubs spupSubs - HiLink spupOperationSubs spupSubs - HiLink spupOptionsSubs spupSubs - HiLink spupProcedureSubs spupSubs - HiLink spupReportSubs spupSubs - HiLink spupUnitSubs spupSubs - - HiLink spupCode Normal - HiLink spupComment Comment - HiLink spupComment2 spupComment - HiLink spupConditional Statement - HiLink spupConstant Constant - HiLink spupError Error - HiLink spupHelp Normal - HiLink spupIdentifier Identifier - HiLink spupNumber Constant - HiLink spupOperator Special - HiLink spupOpenBrace spupError - HiLink spupSection Statement - HiLink spupSpecial spupTextprocGeneric - HiLink spupStreams Type - HiLink spupString Constant - HiLink spupSubs Statement - HiLink spupSymbol Special - HiLink spupTextprocError Normal - HiLink spupTextprocGeneric PreProc - HiLink spupTypes Type - - delcommand HiLink -endif - -let b:current_syntax = "spup" - -" vim:ts=4 diff --git a/share/vim/vim73/syntax/sqlanywhere.vim b/share/vim/vim73/syntax/sqlanywhere.vim deleted file mode 100644 index 5abab381..00000000 --- a/share/vim/vim73/syntax/sqlanywhere.vim +++ /dev/null @@ -1,686 +0,0 @@ - -" Vim syntax file -" Language: SQL, Adaptive Server Anywhere -" Maintainer: David Fishburn -" Last Change: 2009 Mar 15 -" Version: 11.0.1 - -" Description: Updated to Adaptive Server Anywhere 11.0.1 -" Updated to Adaptive Server Anywhere 10.0.1 -" Updated to Adaptive Server Anywhere 9.0.2 -" Updated to Adaptive Server Anywhere 9.0.1 -" Updated to Adaptive Server Anywhere 9.0.0 -" -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case ignore - -" The SQL reserved words, defined as keywords. - -syn keyword sqlSpecial false null true - -" common functions -syn keyword sqlFunction count sum avg min max debug_eng isnull -syn keyword sqlFunction greater lesser argn string ymd todate -syn keyword sqlFunction totimestamp date today now utc_now -syn keyword sqlFunction number identity years months weeks days -syn keyword sqlFunction hours minutes seconds second minute hour -syn keyword sqlFunction day month year dow date_format substr -syn keyword sqlFunction substring byte_substr length byte_length -syn keyword sqlFunction datalength ifnull evaluate list -syn keyword sqlFunction soundex similar difference like_start -syn keyword sqlFunction like_end regexp_compile -syn keyword sqlFunction regexp_compile_patindex remainder abs -syn keyword sqlFunction graphical_plan plan explanation ulplan -syn keyword sqlFunction graphical_ulplan long_ulplan -syn keyword sqlFunction short_ulplan rewrite watcomsql -syn keyword sqlFunction transactsql dialect estimate -syn keyword sqlFunction estimate_source index_estimate -syn keyword sqlFunction experience_estimate traceback wsql_state -syn keyword sqlFunction lang_message dateadd datediff datepart -syn keyword sqlFunction datename dayname monthname quarter -syn keyword sqlFunction tsequal hextoint inttohex rand textptr -syn keyword sqlFunction rowid grouping stddev variance rank -syn keyword sqlFunction dense_rank density percent_rank user_name -syn keyword sqlFunction user_id str stuff char_length nullif -syn keyword sqlFunction sortkey compare ts_index_statistics -syn keyword sqlFunction ts_table_statistics isdate isnumeric -syn keyword sqlFunction get_identity lookup newid uuidtostr -syn keyword sqlFunction strtouuid varexists - -" 9.0.1 functions -syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot -syn keyword sqlFunction char_length coalesce dateformat datetime degrees exp -syn keyword sqlFunction floor getdate insertstr -syn keyword sqlFunction log log10 lower mod pi power -syn keyword sqlFunction property radians replicate round sign sin -syn keyword sqlFunction sqldialect tan truncate truncnum -syn keyword sqlFunction base64_encode base64_decode -syn keyword sqlFunction hash compress decompress encrypt decrypt - -" 11.0.1 functions -syn keyword sqlFunction connection_extended_property text_handle_vector_match -syn keyword sqlFunction read_client_file write_client_file - -" string functions -syn keyword sqlFunction ascii char left ltrim repeat -syn keyword sqlFunction space right rtrim trim lcase ucase -syn keyword sqlFunction locate charindex patindex replace -syn keyword sqlFunction errormsg csconvert - -" property functions -syn keyword sqlFunction db_id db_name property_name -syn keyword sqlFunction property_description property_number -syn keyword sqlFunction next_connection next_database property -syn keyword sqlFunction connection_property db_property db_extended_property -syn keyword sqlFunction event_parmeter event_condition event_condition_name - -" sa_ procedures -syn keyword sqlFunction sa_add_index_consultant_analysis -syn keyword sqlFunction sa_add_workload_query -syn keyword sqlFunction sa_app_deregister -syn keyword sqlFunction sa_app_get_infoStr -syn keyword sqlFunction sa_app_get_status -syn keyword sqlFunction sa_app_register -syn keyword sqlFunction sa_app_registration_unlock -syn keyword sqlFunction sa_app_set_infoStr -syn keyword sqlFunction sa_audit_string -syn keyword sqlFunction sa_check_commit -syn keyword sqlFunction sa_checkpoint_execute -syn keyword sqlFunction sa_conn_activity -syn keyword sqlFunction sa_conn_compression_info -syn keyword sqlFunction sa_conn_deregister -syn keyword sqlFunction sa_conn_info -syn keyword sqlFunction sa_conn_properties -syn keyword sqlFunction sa_conn_properties_by_conn -syn keyword sqlFunction sa_conn_properties_by_name -syn keyword sqlFunction sa_conn_register -syn keyword sqlFunction sa_conn_set_status -syn keyword sqlFunction sa_create_analysis_from_query -syn keyword sqlFunction sa_db_info -syn keyword sqlFunction sa_db_properties -syn keyword sqlFunction sa_disable_auditing_type -syn keyword sqlFunction sa_disable_index -syn keyword sqlFunction sa_disk_free_space -syn keyword sqlFunction sa_enable_auditing_type -syn keyword sqlFunction sa_enable_index -syn keyword sqlFunction sa_end_forward_to -syn keyword sqlFunction sa_eng_properties -syn keyword sqlFunction sa_event_schedules -syn keyword sqlFunction sa_exec_script -syn keyword sqlFunction sa_flush_cache -syn keyword sqlFunction sa_flush_statistics -syn keyword sqlFunction sa_forward_to -syn keyword sqlFunction sa_get_dtt -syn keyword sqlFunction sa_get_histogram -syn keyword sqlFunction sa_get_request_profile -syn keyword sqlFunction sa_get_request_profile_sub -syn keyword sqlFunction sa_get_request_times -syn keyword sqlFunction sa_get_server_messages -syn keyword sqlFunction sa_get_simulated_scale_factors -syn keyword sqlFunction sa_get_workload_capture_status -syn keyword sqlFunction sa_index_density -syn keyword sqlFunction sa_index_levels -syn keyword sqlFunction sa_index_statistics -syn keyword sqlFunction sa_internal_alter_index_ability -syn keyword sqlFunction sa_internal_create_analysis_from_query -syn keyword sqlFunction sa_internal_disk_free_space -syn keyword sqlFunction sa_internal_get_dtt -syn keyword sqlFunction sa_internal_get_histogram -syn keyword sqlFunction sa_internal_get_request_times -syn keyword sqlFunction sa_internal_get_simulated_scale_factors -syn keyword sqlFunction sa_internal_get_workload_capture_status -syn keyword sqlFunction sa_internal_index_density -syn keyword sqlFunction sa_internal_index_levels -syn keyword sqlFunction sa_internal_index_statistics -syn keyword sqlFunction sa_internal_java_loaded_classes -syn keyword sqlFunction sa_internal_locks -syn keyword sqlFunction sa_internal_pause_workload_capture -syn keyword sqlFunction sa_internal_procedure_profile -syn keyword sqlFunction sa_internal_procedure_profile_summary -syn keyword sqlFunction sa_internal_read_backup_history -syn keyword sqlFunction sa_internal_recommend_indexes -syn keyword sqlFunction sa_internal_reset_identity -syn keyword sqlFunction sa_internal_resume_workload_capture -syn keyword sqlFunction sa_internal_start_workload_capture -syn keyword sqlFunction sa_internal_stop_index_consultant -syn keyword sqlFunction sa_internal_stop_workload_capture -syn keyword sqlFunction sa_internal_table_fragmentation -syn keyword sqlFunction sa_internal_table_page_usage -syn keyword sqlFunction sa_internal_table_stats -syn keyword sqlFunction sa_internal_virtual_sysindex -syn keyword sqlFunction sa_internal_virtual_sysixcol -syn keyword sqlFunction sa_java_loaded_classes -syn keyword sqlFunction sa_jdk_version -syn keyword sqlFunction sa_locks -syn keyword sqlFunction sa_make_object -syn keyword sqlFunction sa_pause_workload_capture -syn keyword sqlFunction sa_proc_debug_attach_to_connection -syn keyword sqlFunction sa_proc_debug_connect -syn keyword sqlFunction sa_proc_debug_detach_from_connection -syn keyword sqlFunction sa_proc_debug_disconnect -syn keyword sqlFunction sa_proc_debug_get_connection_name -syn keyword sqlFunction sa_proc_debug_release_connection -syn keyword sqlFunction sa_proc_debug_request -syn keyword sqlFunction sa_proc_debug_version -syn keyword sqlFunction sa_proc_debug_wait_for_connection -syn keyword sqlFunction sa_procedure_profile -syn keyword sqlFunction sa_procedure_profile_summary -syn keyword sqlFunction sa_read_backup_history -syn keyword sqlFunction sa_recommend_indexes -syn keyword sqlFunction sa_recompile_views -syn keyword sqlFunction sa_remove_index_consultant_analysis -syn keyword sqlFunction sa_remove_index_consultant_workload -syn keyword sqlFunction sa_reset_identity -syn keyword sqlFunction sa_resume_workload_capture -syn keyword sqlFunction sa_server_option -syn keyword sqlFunction sa_set_simulated_scale_factor -syn keyword sqlFunction sa_setremoteuser -syn keyword sqlFunction sa_setsubscription -syn keyword sqlFunction sa_start_recording_commits -syn keyword sqlFunction sa_start_workload_capture -syn keyword sqlFunction sa_statement_text -syn keyword sqlFunction sa_stop_index_consultant -syn keyword sqlFunction sa_stop_recording_commits -syn keyword sqlFunction sa_stop_workload_capture -syn keyword sqlFunction sa_sync -syn keyword sqlFunction sa_sync_sub -syn keyword sqlFunction sa_table_fragmentation -syn keyword sqlFunction sa_table_page_usage -syn keyword sqlFunction sa_table_stats -syn keyword sqlFunction sa_update_index_consultant_workload -syn keyword sqlFunction sa_validate -syn keyword sqlFunction sa_virtual_sysindex -syn keyword sqlFunction sa_virtual_sysixcol - -" sp_ procedures -syn keyword sqlFunction sp_addalias -syn keyword sqlFunction sp_addauditrecord -syn keyword sqlFunction sp_adddumpdevice -syn keyword sqlFunction sp_addgroup -syn keyword sqlFunction sp_addlanguage -syn keyword sqlFunction sp_addlogin -syn keyword sqlFunction sp_addmessage -syn keyword sqlFunction sp_addremotelogin -syn keyword sqlFunction sp_addsegment -syn keyword sqlFunction sp_addserver -syn keyword sqlFunction sp_addthreshold -syn keyword sqlFunction sp_addtype -syn keyword sqlFunction sp_adduser -syn keyword sqlFunction sp_auditdatabase -syn keyword sqlFunction sp_auditlogin -syn keyword sqlFunction sp_auditobject -syn keyword sqlFunction sp_auditoption -syn keyword sqlFunction sp_auditsproc -syn keyword sqlFunction sp_bindefault -syn keyword sqlFunction sp_bindmsg -syn keyword sqlFunction sp_bindrule -syn keyword sqlFunction sp_changedbowner -syn keyword sqlFunction sp_changegroup -syn keyword sqlFunction sp_checknames -syn keyword sqlFunction sp_checkperms -syn keyword sqlFunction sp_checkreswords -syn keyword sqlFunction sp_clearstats -syn keyword sqlFunction sp_column_privileges -syn keyword sqlFunction sp_columns -syn keyword sqlFunction sp_commonkey -syn keyword sqlFunction sp_configure -syn keyword sqlFunction sp_cursorinfo -syn keyword sqlFunction sp_databases -syn keyword sqlFunction sp_datatype_info -syn keyword sqlFunction sp_dboption -syn keyword sqlFunction sp_dbremap -syn keyword sqlFunction sp_depends -syn keyword sqlFunction sp_diskdefault -syn keyword sqlFunction sp_displaylogin -syn keyword sqlFunction sp_dropalias -syn keyword sqlFunction sp_dropdevice -syn keyword sqlFunction sp_dropgroup -syn keyword sqlFunction sp_dropkey -syn keyword sqlFunction sp_droplanguage -syn keyword sqlFunction sp_droplogin -syn keyword sqlFunction sp_dropmessage -syn keyword sqlFunction sp_dropremotelogin -syn keyword sqlFunction sp_dropsegment -syn keyword sqlFunction sp_dropserver -syn keyword sqlFunction sp_dropthreshold -syn keyword sqlFunction sp_droptype -syn keyword sqlFunction sp_dropuser -syn keyword sqlFunction sp_estspace -syn keyword sqlFunction sp_extendsegment -syn keyword sqlFunction sp_fkeys -syn keyword sqlFunction sp_foreignkey -syn keyword sqlFunction sp_getmessage -syn keyword sqlFunction sp_help -syn keyword sqlFunction sp_helpconstraint -syn keyword sqlFunction sp_helpdb -syn keyword sqlFunction sp_helpdevice -syn keyword sqlFunction sp_helpgroup -syn keyword sqlFunction sp_helpindex -syn keyword sqlFunction sp_helpjoins -syn keyword sqlFunction sp_helpkey -syn keyword sqlFunction sp_helplanguage -syn keyword sqlFunction sp_helplog -syn keyword sqlFunction sp_helpprotect -syn keyword sqlFunction sp_helpremotelogin -syn keyword sqlFunction sp_helpsegment -syn keyword sqlFunction sp_helpserver -syn keyword sqlFunction sp_helpsort -syn keyword sqlFunction sp_helptext -syn keyword sqlFunction sp_helpthreshold -syn keyword sqlFunction sp_helpuser -syn keyword sqlFunction sp_indsuspect -syn keyword sqlFunction sp_lock -syn keyword sqlFunction sp_locklogin -syn keyword sqlFunction sp_logdevice -syn keyword sqlFunction sp_login_environment -syn keyword sqlFunction sp_modifylogin -syn keyword sqlFunction sp_modifythreshold -syn keyword sqlFunction sp_monitor -syn keyword sqlFunction sp_password -syn keyword sqlFunction sp_pkeys -syn keyword sqlFunction sp_placeobject -syn keyword sqlFunction sp_primarykey -syn keyword sqlFunction sp_procxmode -syn keyword sqlFunction sp_recompile -syn keyword sqlFunction sp_remap -syn keyword sqlFunction sp_remote_columns -syn keyword sqlFunction sp_remote_exported_keys -syn keyword sqlFunction sp_remote_imported_keys -syn keyword sqlFunction sp_remote_pcols -syn keyword sqlFunction sp_remote_primary_keys -syn keyword sqlFunction sp_remote_procedures -syn keyword sqlFunction sp_remote_tables -syn keyword sqlFunction sp_remoteoption -syn keyword sqlFunction sp_rename -syn keyword sqlFunction sp_renamedb -syn keyword sqlFunction sp_reportstats -syn keyword sqlFunction sp_reset_tsql_environment -syn keyword sqlFunction sp_role -syn keyword sqlFunction sp_server_info -syn keyword sqlFunction sp_servercaps -syn keyword sqlFunction sp_serverinfo -syn keyword sqlFunction sp_serveroption -syn keyword sqlFunction sp_setlangalias -syn keyword sqlFunction sp_setreplicate -syn keyword sqlFunction sp_setrepproc -syn keyword sqlFunction sp_setreptable -syn keyword sqlFunction sp_spaceused -syn keyword sqlFunction sp_special_columns -syn keyword sqlFunction sp_sproc_columns -syn keyword sqlFunction sp_statistics -syn keyword sqlFunction sp_stored_procedures -syn keyword sqlFunction sp_syntax -syn keyword sqlFunction sp_table_privileges -syn keyword sqlFunction sp_tables -syn keyword sqlFunction sp_tsql_environment -syn keyword sqlFunction sp_tsql_feature_not_supported -syn keyword sqlFunction sp_unbindefault -syn keyword sqlFunction sp_unbindmsg -syn keyword sqlFunction sp_unbindrule -syn keyword sqlFunction sp_volchanged -syn keyword sqlFunction sp_who -syn keyword sqlFunction xp_scanf -syn keyword sqlFunction xp_sprintf - -" server functions -syn keyword sqlFunction col_length -syn keyword sqlFunction col_name -syn keyword sqlFunction index_col -syn keyword sqlFunction object_id -syn keyword sqlFunction object_name -syn keyword sqlFunction proc_role -syn keyword sqlFunction show_role -syn keyword sqlFunction xp_cmdshell -syn keyword sqlFunction xp_msver -syn keyword sqlFunction xp_read_file -syn keyword sqlFunction xp_real_cmdshell -syn keyword sqlFunction xp_real_read_file -syn keyword sqlFunction xp_real_sendmail -syn keyword sqlFunction xp_real_startmail -syn keyword sqlFunction xp_real_startsmtp -syn keyword sqlFunction xp_real_stopmail -syn keyword sqlFunction xp_real_stopsmtp -syn keyword sqlFunction xp_real_write_file -syn keyword sqlFunction xp_scanf -syn keyword sqlFunction xp_sendmail -syn keyword sqlFunction xp_sprintf -syn keyword sqlFunction xp_startmail -syn keyword sqlFunction xp_startsmtp -syn keyword sqlFunction xp_stopmail -syn keyword sqlFunction xp_stopsmtp -syn keyword sqlFunction xp_write_file - -" http functions -syn keyword sqlFunction http_header http_variable -syn keyword sqlFunction next_http_header next_http_variable -syn keyword sqlFunction sa_set_http_header sa_set_http_option -syn keyword sqlFunction sa_http_variable_info sa_http_header_info - -" http functions 9.0.1 -syn keyword sqlFunction http_encode http_decode -syn keyword sqlFunction html_encode html_decode - -" keywords -syn keyword sqlKeyword absolute accent action active add address aes_decrypt -syn keyword sqlKeyword after aggregate algorithm allow_dup_row allowed -syn keyword sqlKeyword alter and ansi_substring any as append apply asc ascii ase -syn keyword sqlKeyword assign at atan2 atomic attach attended audit authorization -syn keyword sqlKeyword autoincrement autostop batch bcp before -syn keyword sqlKeyword between bit_and bit_length bit_or bit_substr bit_xor -syn keyword sqlKeyword blank blanks block -syn keyword sqlKeyword both bottom unbounded break breaker bufferpool -syn keyword sqlKeyword build bulk by byte bytes cache calibrate calibration -syn keyword sqlKeyword cancel capability cascade cast -syn keyword sqlKeyword catalog ceil changes char char_convert check checksum -syn keyword sqlKeyword class classes client cmp -syn keyword sqlKeyword cluster clustered collation -syn keyword sqlKeyword column columns -syn keyword sqlKeyword command comment committed comparisons -syn keyword sqlKeyword compatible component compressed compute computes -syn keyword sqlKeyword concat configuration confirm conflict connection -syn keyword sqlKeyword console consolidate consolidated -syn keyword sqlKeyword constraint constraints content continue -syn keyword sqlKeyword convert coordinator copy count count_set_bits -syn keyword sqlKeyword crc createtime cross cube cume_dist -syn keyword sqlKeyword current cursor data data database -syn keyword sqlKeyword current_timestamp current_user -syn keyword sqlKeyword databases datatype dba dbfile -syn keyword sqlKeyword dbspace dbspaces dbspacename debug decoupled -syn keyword sqlKeyword decrypted default defaults default_dbspace deferred -syn keyword sqlKeyword definer definition -syn keyword sqlKeyword delay deleting delimited dependencies desc -syn keyword sqlKeyword description detach deterministic directory -syn keyword sqlKeyword disable disabled distinct do domain download duplicate -syn keyword sqlKeyword dsetpass dttm dynamic each editproc ejb -syn keyword sqlKeyword else elseif empty enable encapsulated encrypted end -syn keyword sqlKeyword encoding endif engine environment erase error escape escapes event -syn keyword sqlKeyword event_parameter every except exception exclude excluded exclusive exec -syn keyword sqlKeyword existing exists expanded expiry express exprtype extended_property -syn keyword sqlKeyword external externlogin factor failover false -syn keyword sqlKeyword fastfirstrow fieldproc file files filler -syn keyword sqlKeyword fillfactor finish first first_keyword first_value -syn keyword sqlKeyword following force foreign format forxml forxml_sep fp frame -syn keyword sqlKeyword freepage french fresh full function gb get_bit go global -syn keyword sqlKeyword group handler hash having header hexadecimal -syn keyword sqlKeyword hidden high history hg hng hold holdlock host -syn keyword sqlKeyword hours http_body http_session_timeout id identified identity ignore -syn keyword sqlKeyword ignore_dup_key ignore_dup_row immediate -syn keyword sqlKeyword in inactiv inactive inactivity included incremental -syn keyword sqlKeyword index index_enabled index_lparen indexonly info -syn keyword sqlKeyword inline inner inout insensitive inserting -syn keyword sqlKeyword instead integrated -syn keyword sqlKeyword internal intersection into introduced invoker iq is isolation -syn keyword sqlKeyword jar java java_location java_main_userid java_vm_options -syn keyword sqlKeyword jconnect jdk join kb key keep kerberos language last -syn keyword sqlKeyword last_keyword last_value lateral ld left len lf ln level like -syn keyword sqlKeyword limit local location log -syn keyword sqlKeyword logging login logscan long low lru main manual mark -syn keyword sqlKeyword match matched materialized max maximum mb membership -syn keyword sqlKeyword merge metadata methods minimum minutes mirror mode modify monitor move mru -syn keyword sqlKeyword multiplex name named national native natural new next no -syn keyword sqlKeyword noholdlock nolock nonclustered none not -syn keyword sqlKeyword notify null nullable_constant nulls object oem_string of off offline -syn keyword sqlKeyword old on online only openstring optimization optimizer option -syn keyword sqlKeyword or order others out outer over -syn keyword sqlKeyword package packetsize padding page pages -syn keyword sqlKeyword paglock parallel part partial partition partitions partner password path -syn keyword sqlKeyword pctfree plan policy populate port postfilter preceding precision -syn keyword sqlKeyword prefetch prefilter prefix preserve preview primary -syn keyword sqlKeyword prior priority priqty private privileges procedure profile -syn keyword sqlKeyword property_is_cumulative property_is_numeric public publication publish publisher -syn keyword sqlKeyword quiesce quote quotes range readclientfile readcommitted reader readfile readonly -syn keyword sqlKeyword readpast readuncommitted readwrite rebuild -syn keyword sqlKeyword received recompile recover recursive references -syn keyword sqlKeyword referencing refresh regex regexp regexp_substr relative relocate -syn keyword sqlKeyword rename repeatable repeatableread -syn keyword sqlKeyword replicate request_timeout required rereceive resend reserve reset -syn keyword sqlKeyword resizing resolve resource respect -syn keyword sqlKeyword restrict result retain -syn keyword sqlKeyword returns reverse right role -syn keyword sqlKeyword rollup root row row_number rowlock rows save -syn keyword sqlKeyword sa_index_hash sa_internal_fk_verify sa_internal_termbreak -syn keyword sqlKeyword sa_order_preserving_hash sa_order_preserving_hash_big sa_order_preserving_hash_prefix -syn keyword sqlKeyword schedule schema scope scripted scroll seconds secqty security -syn keyword sqlKeyword send sensitive sent serializable -syn keyword sqlKeyword server server session set_bit set_bits sets -syn keyword sqlKeyword share simple since site size skip -syn keyword sqlKeyword snapshot soapheader soap_header split some sorted_data -syn keyword sqlKeyword sqlcode sqlid sqlflagger sqlstate sqrt square -syn keyword sqlKeyword stacker stale statement statistics status stddev_pop stddev_samp -syn keyword sqlKeyword stemmer stogroup stoplist store -syn keyword sqlKeyword strip stripesizekb striping subpages subscribe subscription -syn keyword sqlKeyword subtransaction suser_id suser_name synchronization -syn keyword sqlKeyword syntax_error table tablock -syn keyword sqlKeyword tablockx tb temp template temporary term then -syn keyword sqlKeyword ties timezone to to_char to_nchar top traced_plan tracing -syn keyword sqlKeyword transfer transaction transactional tries true -syn keyword sqlKeyword tsequal type tune uncommitted unconditionally -syn keyword sqlKeyword unenforced unicode unique union unistr unknown unlimited unload -syn keyword sqlKeyword unpartition unquiesce updatetime updating updlock upgrade upload -syn keyword sqlKeyword upper use user -syn keyword sqlKeyword using utc utilities validproc -syn keyword sqlKeyword value values varchar variable -syn keyword sqlKeyword varying var_pop var_samp vcat verify versions view virtual wait -syn keyword sqlKeyword warning wd web when where window with with_auto -syn keyword sqlKeyword with_auto with_cube with_rollup without -syn keyword sqlKeyword with_lparen within word work workload write writefile -syn keyword sqlKeyword writeclientfile writer writers writeserver xlock zeros -" XML function support -syn keyword sqlFunction openxml xmlelement xmlforest xmlgen xmlconcat xmlagg -syn keyword sqlFunction xmlattributes -syn keyword sqlKeyword raw auto elements explicit -" HTTP support -syn keyword sqlKeyword authorization secure url service next_soap_header -" HTTP 9.0.2 new procedure keywords -syn keyword sqlKeyword namespace certificate clientport proxy -" OLAP support 9.0.0 -syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept -syn keyword sqlKeyword regr_count regr_r2 regr_avgx regr_avgy -syn keyword sqlKeyword regr_sxx regr_syy regr_sxy - -" Alternate keywords -syn keyword sqlKeyword character dec options proc reference -syn keyword sqlKeyword subtrans tran syn keyword - - -syn keyword sqlOperator in any some all between exists -syn keyword sqlOperator like escape not is and or -syn keyword sqlOperator intersect minus -syn keyword sqlOperator prior distinct - -syn keyword sqlStatement allocate alter backup begin call case -syn keyword sqlStatement checkpoint clear close commit configure connect -syn keyword sqlStatement create deallocate declare delete describe -syn keyword sqlStatement disconnect drop execute exit explain fetch -syn keyword sqlStatement for forward from get goto grant help if include -syn keyword sqlStatement input insert install leave load lock loop -syn keyword sqlStatement message open output parameter parameters passthrough -syn keyword sqlStatement prepare print put raiserror read readtext release -syn keyword sqlStatement remote remove reorganize resignal restore resume -syn keyword sqlStatement return revoke rollback savepoint select -syn keyword sqlStatement set setuser signal start stop synchronize -syn keyword sqlStatement system trigger truncate unload update -syn keyword sqlStatement validate waitfor whenever while writetext - - -syn keyword sqlType char long varchar text -syn keyword sqlType bigint decimal double float int integer numeric -syn keyword sqlType smallint tinyint real -syn keyword sqlType money smallmoney -syn keyword sqlType bit -syn keyword sqlType date datetime smalldate time timestamp -syn keyword sqlType binary image varbinary uniqueidentifier -syn keyword sqlType xml unsigned -" New types 10.0.0 -syn keyword sqlType varbit nchar nvarchar - -syn keyword sqlOption Allow_nulls_by_default -syn keyword sqlOption Allow_read_client_file -syn keyword sqlOption Allow_snapshot_isolation -syn keyword sqlOption Allow_write_client_file -syn keyword sqlOption Ansi_blanks -syn keyword sqlOption Ansi_close_cursors_on_rollback -syn keyword sqlOption Ansi_permissions -syn keyword sqlOption Ansi_substring -syn keyword sqlOption Ansi_update_constraints -syn keyword sqlOption Ansinull -syn keyword sqlOption Auditing -syn keyword sqlOption Auditing_options -syn keyword sqlOption Background_priority -syn keyword sqlOption Blocking -syn keyword sqlOption Blocking_timeout -syn keyword sqlOption Chained -syn keyword sqlOption Checkpoint_time -syn keyword sqlOption Cis_option -syn keyword sqlOption Cis_rowset_size -syn keyword sqlOption Close_on_endtrans -syn keyword sqlOption Collect_statistics_on_dml_updates -syn keyword sqlOption Conn_auditing -syn keyword sqlOption Connection_authentication -syn keyword sqlOption Continue_after_raiserror -syn keyword sqlOption Conversion_error -syn keyword sqlOption Cooperative_commit_timeout -syn keyword sqlOption Cooperative_commits -syn keyword sqlOption Database_authentication -syn keyword sqlOption Date_format -syn keyword sqlOption Date_order -syn keyword sqlOption Debug_messages -syn keyword sqlOption Dedicated_task -syn keyword sqlOption Default_dbspace -syn keyword sqlOption Default_timestamp_increment -syn keyword sqlOption Delayed_commit_timeout -syn keyword sqlOption Delayed_commits -syn keyword sqlOption Escape_character -syn keyword sqlOption Exclude_operators -syn keyword sqlOption Extended_join_syntax -syn keyword sqlOption Fire_triggers -syn keyword sqlOption First_day_of_week -syn keyword sqlOption For_xml_null_treatment -syn keyword sqlOption Force_view_creation -syn keyword sqlOption Global_database_id -syn keyword sqlOption Http_session_timeout -syn keyword sqlOption Integrated_server_name -syn keyword sqlOption Isolation_level -syn keyword sqlOption Java_location -syn keyword sqlOption Java_main_userid -syn keyword sqlOption Java_vm_options -syn keyword sqlOption Lock_rejected_rows -syn keyword sqlOption Log_deadlocks -syn keyword sqlOption Login_mode -syn keyword sqlOption Login_procedure -syn keyword sqlOption Materialized_view_optimization -syn keyword sqlOption Max_client_statements_cached -syn keyword sqlOption Max_cursor_count -syn keyword sqlOption Max_hash_size -syn keyword sqlOption Max_plans_cached -syn keyword sqlOption Max_priority -syn keyword sqlOption Max_query_tasks -syn keyword sqlOption Max_recursive_iterations -syn keyword sqlOption Max_statement_count -syn keyword sqlOption Max_temp_space -syn keyword sqlOption Min_password_length -syn keyword sqlOption Nearest_century -syn keyword sqlOption Non_keywords -syn keyword sqlOption Odbc_describe_binary_as_varbinary -syn keyword sqlOption Odbc_distinguish_char_and_varchar -syn keyword sqlOption Oem_string -syn keyword sqlOption On_charset_conversion_failure -syn keyword sqlOption On_tsql_error -syn keyword sqlOption Optimization_goal -syn keyword sqlOption Optimization_level -syn keyword sqlOption Optimization_workload -syn keyword sqlOption Pinned_cursor_percent_of_cache -syn keyword sqlOption Post_login_procedure -syn keyword sqlOption Precision -syn keyword sqlOption Prefetch -syn keyword sqlOption Preserve_source_format -syn keyword sqlOption Prevent_article_pkey_update -syn keyword sqlOption Priority -syn keyword sqlOption Query_mem_timeout -syn keyword sqlOption Quoted_identifier -syn keyword sqlOption Read_past_deleted -syn keyword sqlOption Recovery_time -syn keyword sqlOption Remote_idle_timeout -syn keyword sqlOption Replicate_all -syn keyword sqlOption Request_timeout -syn keyword sqlOption Return_date_time_as_string -syn keyword sqlOption Rollback_on_deadlock -syn keyword sqlOption Row_counts -syn keyword sqlOption Scale -syn keyword sqlOption Secure_feature_key -syn keyword sqlOption Sort_collation -syn keyword sqlOption Sql_flagger_error_level -syn keyword sqlOption Sql_flagger_warning_level -syn keyword sqlOption String_rtruncation -syn keyword sqlOption Subsume_row_locks -syn keyword sqlOption Suppress_tds_debugging -syn keyword sqlOption Synchronize_mirror_on_commit -syn keyword sqlOption Tds_empty_string_is_null -syn keyword sqlOption Temp_space_limit_check -syn keyword sqlOption Time_format -syn keyword sqlOption Time_zone_adjustment -syn keyword sqlOption Timestamp_format -syn keyword sqlOption Truncate_timestamp_values -syn keyword sqlOption Tsql_outer_joins -syn keyword sqlOption Tsql_variables -syn keyword sqlOption Updatable_statement_isolation -syn keyword sqlOption Update_statistics -syn keyword sqlOption Upgrade_database_capability -syn keyword sqlOption User_estimates -syn keyword sqlOption Verify_password_function -syn keyword sqlOption Wait_for_commit -syn keyword sqlOption Webservice_namespace_host - -" Strings and characters: -syn region sqlString start=+"+ end=+"+ contains=@Spell -syn region sqlString start=+'+ end=+'+ contains=@Spell - -" Numbers: -syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" - -" Comments: -syn region sqlDashComment start=/--/ end=/$/ contains=@Spell -syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell -syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell -syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell -syn sync ccomment sqlComment -syn sync ccomment sqlDashComment -syn sync ccomment sqlSlashComment - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_sql_syn_inits") - if version < 508 - let did_sql_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi link - endif - - HiLink sqlDashComment Comment - HiLink sqlSlashComment Comment - HiLink sqlMultiComment Comment - HiLink sqlNumber Number - HiLink sqlOperator Operator - HiLink sqlSpecial Special - HiLink sqlKeyword Keyword - HiLink sqlStatement Statement - HiLink sqlString String - HiLink sqlType Type - HiLink sqlFunction Function - HiLink sqlOption PreProc - - delcommand HiLink -endif - -let b:current_syntax = "sqlanywhere" - -" vim:sw=4: diff --git a/share/vim/vim73/syntax/sqr.vim b/share/vim/vim73/syntax/sqr.vim deleted file mode 100644 index 87494477..00000000 --- a/share/vim/vim73/syntax/sqr.vim +++ /dev/null @@ -1,295 +0,0 @@ -" Vim syntax file -" Language: Structured Query Report Writer (SQR) -" Maintainer: Nathan Stratton Treadway (nathanst at ontko dot com) -" URL: http://www.ontko.com/sqr/#editor_config_files -" -" Modification History: -" 2002-Apr-12: Updated for SQR v6.x -" 2002-Jul-30: Added { and } to iskeyword definition -" 2003-Oct-15: Allow "." in variable names -" highlight entire open '... literal when it contains -" "''" inside it (e.g. "'I can''t say" is treated -" as one open string, not one terminated and one open) -" {} variables can occur inside of '...' literals -" -" Thanks to the previous maintainer of this file, Jeff Lanzarotta: -" http://lanzarotta.tripod.com/vim.html -" jefflanzarotta at yahoo dot com - -" For version 5.x, clear all syntax items. -" For version 6.x, quit when a syntax file was already loaded. -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if version >= 600 - setlocal iskeyword=@,48-57,_,-,#,$,{,} -else - set iskeyword=@,48-57,_,-,#,$,{,} -endif - -syn case ignore - -" BEGIN GENERATED SECTION ============================================ - -" Generated by generate_vim_syntax.sqr at 2002/04/11 13:04 -" (based on the UltraEdit syntax file for SQR 6.1.4 -" found at http://www.ontko.com/sqr/#editor_config_files ) - -syn keyword sqrSection begin-footing begin-heading begin-procedure -syn keyword sqrSection begin-program begin-report begin-setup -syn keyword sqrSection end-footing end-heading end-procedure -syn keyword sqrSection end-program end-report end-setup - -syn keyword sqrParagraph alter-color-map alter-conection -syn keyword sqrParagraph alter-locale alter-printer alter-report -syn keyword sqrParagraph begin-document begin-execute begin-select -syn keyword sqrParagraph begin-sql declare-chart declare-image -syn keyword sqrParagraph declare-color-map declare-conection -syn keyword sqrParagraph declare-layout declare-printer -syn keyword sqrParagraph declare-report declare-procedure -syn keyword sqrParagraph declare-toc declare-variable end-declare -syn keyword sqrParagraph end-document end-select exit-select end-sql -syn keyword sqrParagraph load-lookup - -syn keyword sqrReserved #current-column #current-date #current-line -syn keyword sqrReserved #end-file #page-count #return-status -syn keyword sqrReserved #sql-count #sql-status #sqr-max-columns -syn keyword sqrReserved #sqr-max-lines #sqr-pid #sqr-toc-level -syn keyword sqrReserved #sqr-toc-page $sqr-database {sqr-database} -syn keyword sqrReserved $sqr-dbcs {sqr-dbcs} $sqr-encoding -syn keyword sqrReserved {sqr-encoding} $sqr-encoding-console -syn keyword sqrReserved {sqr-encoding-console} -syn keyword sqrReserved $sqr-encoding-database -syn keyword sqrReserved {sqr-encoding-database} -syn keyword sqrReserved $sqr-encoding-file-input -syn keyword sqrReserved {sqr-encoding-file-input} -syn keyword sqrReserved $sqr-encoding-file-output -syn keyword sqrReserved {sqr-encoding-file-output} -syn keyword sqrReserved $sqr-encoding-report-input -syn keyword sqrReserved {sqr-encoding-report-input} -syn keyword sqrReserved $sqr-encoding-report-output -syn keyword sqrReserved {sqr-encoding-report-output} -syn keyword sqrReserved $sqr-encoding-source {sqr-encoding-source} -syn keyword sqrReserved $sql-error $sqr-hostname {sqr-hostname} -syn keyword sqrReserved $sqr-locale $sqr-platform {sqr-platform} -syn keyword sqrReserved $sqr-program $sqr-report $sqr-toc-text -syn keyword sqrReserved $sqr-ver $username - -syn keyword sqrPreProc #define #else #end-if #endif #if #ifdef -syn keyword sqrPreProc #ifndef #include - -syn keyword sqrCommand add array-add array-divide array-multiply -syn keyword sqrCommand array-subtract ask break call clear-array -syn keyword sqrCommand close columns commit concat connect -syn keyword sqrCommand create-array create-color-palette date-time -syn keyword sqrCommand display divide do dollar-symbol else encode -syn keyword sqrCommand end-evaluate end-if end-while evaluate -syn keyword sqrCommand execute extract find get get-color goto -syn keyword sqrCommand graphic if input last-page let lookup -syn keyword sqrCommand lowercase mbtosbs money-symbol move -syn keyword sqrCommand multiply new-page new-report next-column -syn keyword sqrCommand next-listing no-formfeed open page-number -syn keyword sqrCommand page-size position print print-bar-code -syn keyword sqrCommand print-chart print-direct print-image -syn keyword sqrCommand printer-deinit printer-init put read -syn keyword sqrCommand rollback security set-color set-delay-print -syn keyword sqrCommand set-generations set-levels set-members -syn keyword sqrCommand sbtombs show stop string subtract toc-entry -syn keyword sqrCommand unstring uppercase use use-column -syn keyword sqrCommand use-printer-type use-procedure use-report -syn keyword sqrCommand while write - -syn keyword sqrParam 3d-effects after after-bold after-page -syn keyword sqrParam after-report after-toc and as at-end before -syn keyword sqrParam background batch-mode beep before-bold -syn keyword sqrParam before-page before-report before-toc blink -syn keyword sqrParam bold border bottom-margin box break by -syn keyword sqrParam caption center char char-size char-width -syn keyword sqrParam chars-inch chart-size checksum cl -syn keyword sqrParam clear-line clear-screen color color-palette -syn keyword sqrParam cs color_ data-array -syn keyword sqrParam data-array-column-count -syn keyword sqrParam data-array-column-labels -syn keyword sqrParam data-array-row-count data-labels date -syn keyword sqrParam date-edit-mask date-seperator -syn keyword sqrParam day-of-week-case day-of-week-full -syn keyword sqrParam day-of-week-short decimal decimal-seperator -syn keyword sqrParam default-numeric delay distinct dot-leader -syn keyword sqrParam edit-option-ad edit-option-am -syn keyword sqrParam edit-option-bc edit-option-na -syn keyword sqrParam edit-option-pm encoding entry erase-page -syn keyword sqrParam extent field fill fixed fixed_nolf float -syn keyword sqrParam font font-style font-type footing -syn keyword sqrParam footing-size foreground for-append -syn keyword sqrParam for-reading for-reports for-tocs -syn keyword sqrParam for-writing format formfeed from goto-top -syn keyword sqrParam group having heading heading-size height -syn keyword sqrParam horz-line image-size in indentation -syn keyword sqrParam init-string input-date-edit-mask insert -syn keyword sqrParam integer into item-color item-size key -syn keyword sqrParam layout left-margin legend legend-placement -syn keyword sqrParam legend-presentation legend-title level -syn keyword sqrParam line-height line-size line-width lines-inch -syn keyword sqrParam local locale loops max-columns max-lines -syn keyword sqrParam maxlen money money-edit-mask money-sign -syn keyword sqrParam money-sign-location months-case months-full -syn keyword sqrParam months-short name need newline newpage -syn keyword sqrParam no-advance nolf noline noprompt normal not -syn keyword sqrParam nowait number number-edit-mask on-break -syn keyword sqrParam on-error or order orientation page-depth -syn keyword sqrParam paper-size pie-segment-explode -syn keyword sqrParam pie-segment-percent-display -syn keyword sqrParam pie-segment-quantity-display pitch -syn keyword sqrParam point-markers point-size printer -syn keyword sqrParam printer-type quiet record reset-string -syn keyword sqrParam return_value reverse right-margin rows save -syn keyword sqrParam select size skip skiplines sort source -syn keyword sqrParam sqr-database sqr-platform startup-file -syn keyword sqrParam status stop sub-title symbol-set system -syn keyword sqrParam table text thousand-seperator -syn keyword sqrParam time-seperator times title to toc -syn keyword sqrParam top-margin type underline update using -syn keyword sqrParam value vary vert-line wait warn when -syn keyword sqrParam when-other where with x-axis-grid -syn keyword sqrParam x-axis-label x-axis-major-increment -syn keyword sqrParam x-axis-major-tick-marks x-axis-max-value -syn keyword sqrParam x-axis-min-value x-axis-minor-increment -syn keyword sqrParam x-axis-minor-tick-marks x-axis-rotate -syn keyword sqrParam x-axis-scale x-axis-tick-mark-placement xor -syn keyword sqrParam y-axis-grid y-axis-label -syn keyword sqrParam y-axis-major-increment -syn keyword sqrParam y-axis-major-tick-marks y-axis-max-value -syn keyword sqrParam y-axis-min-value y-axis-minor-increment -syn keyword sqrParam y-axis-minor-tick-marks y-axis-scale -syn keyword sqrParam y-axis-tick-mark-placement y2-type -syn keyword sqrParam y2-data-array y2-data-array-row-count -syn keyword sqrParam y2-data-array-column-count -syn keyword sqrParam y2-data-array-column-labels -syn keyword sqrParam y2-axis-color-palette y2-axis-label -syn keyword sqrParam y2-axis-major-increment -syn keyword sqrParam y2-axis-major-tick-marks y2-axis-max-value -syn keyword sqrParam y2-axis-min-value y2-axis-minor-increment -syn keyword sqrParam y2-axis-minor-tick-marks y2-axis-scale - -syn keyword sqrFunction abs acos asin atan array ascii asciic ceil -syn keyword sqrFunction cos cosh chr cond deg delete dateadd -syn keyword sqrFunction datediff datenow datetostr e10 exp edit -syn keyword sqrFunction exists floor getenv instr instrb isblank -syn keyword sqrFunction isnull log log10 length lengthb lengthp -syn keyword sqrFunction lengtht lower lpad ltrim mod nvl power rad -syn keyword sqrFunction round range replace roman rpad rtrim rename -syn keyword sqrFunction sign sin sinh sqrt substr substrb substrp -syn keyword sqrFunction substrt strtodate tan tanh trunc to_char -syn keyword sqrFunction to_multi_byte to_number to_single_byte -syn keyword sqrFunction transform translate unicode upper wrapdepth - -" END GENERATED SECTION ============================================== - -" Variables -syn match sqrVariable /\(\$\|#\|&\)\(\k\|\.\)*/ - - -" Debug compiler directives -syn match sqrPreProc /\s*#debug\a\=\(\s\|$\)/ -syn match sqrSubstVar /{\k*}/ - - -" Strings -" Note: if an undoubled ! is found, this is not a valid string -" (SQR will treat the end of the line as a comment) -syn match sqrString /'\(!!\|[^!']\)*'/ contains=sqrSubstVar -syn match sqrStrOpen /'\(!!\|''\|[^!']\)*$/ -" If we find a ' followed by an unmatched ! before a matching ', -" flag the error. -syn match sqrError /'\(!!\|[^'!]\)*![^!]/me=e-1 -syn match sqrError /'\(!!\|[^'!]\)*!$/ - -" Numbers: -syn match sqrNumber /-\=\<\d*\.\=[0-9_]\>/ - - - -" Comments: -" Handle comments that start with "!=" specially; they are only valid -" in the first column of the source line. Also, "!!" is only treated -" as a start-comment if there is only whitespace ahead of it on the line. - -syn keyword sqrTodo TODO FIXME XXX DEBUG NOTE ### -syn match sqrTodo /???/ - -if version >= 600 - " See also the sqrString section above for handling of ! characters - " inside of strings. (Those patterns override the ones below.) - syn match sqrComment /!\@= 508 || !exists("did_sqr_syn_inits") - if version < 508 - let did_sqr_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink sqrSection Statement - HiLink sqrParagraph Statement - HiLink sqrReserved Statement - HiLink sqrParameter Statement - HiLink sqrPreProc PreProc - HiLink sqrSubstVar PreProc - HiLink sqrCommand Statement - HiLink sqrParam Type - HiLink sqrFunction Special - - HiLink sqrString String - HiLink sqrStrOpen Todo - HiLink sqrNumber Number - HiLink sqrVariable Identifier - - HiLink sqrComment Comment - HiLink sqrTodo Todo - HiLink sqrError Error - - delcommand HiLink -endif - -let b:current_syntax = "sqr" - -" vim: ts=8 sw=2 diff --git a/share/vim/vim73/syntax/sshconfig.vim b/share/vim/vim73/syntax/sshconfig.vim deleted file mode 100644 index 45947f20..00000000 --- a/share/vim/vim73/syntax/sshconfig.vim +++ /dev/null @@ -1,116 +0,0 @@ -" Vim syntax file -" Language: OpenSSH client configuration file (ssh_config) -" Maintainer: David Necas (Yeti) -" Last Change: 2009-07-09 - -" Setup -if version >= 600 - if exists("b:current_syntax") - finish - endif -else - syntax clear -endif - -if version >= 600 - setlocal iskeyword=_,-,a-z,A-Z,48-57 -else - set iskeyword=_,-,a-z,A-Z,48-57 -endif - -syn case ignore - -" Comments -syn match sshconfigComment "#.*$" contains=sshconfigTodo -syn keyword sshconfigTodo TODO FIXME NOT contained - -" Constants -syn keyword sshconfigYesNo yes no ask -syn keyword sshconfigYesNo any auto -syn keyword sshconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc -syn keyword sshconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr -syn keyword sshconfigCipher arcfour arcfour128 arcfour256 cast128-cbc -syn keyword sshconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96 -syn keyword sshconfigMAC hmac-md5-96 -syn match sshconfigMAC "\" -syn keyword sshconfigHostKeyAlg ssh-rsa ssh-dss -syn keyword sshconfigPreferredAuth hostbased publickey password -syn keyword sshconfigPreferredAuth keyboard-interactive -syn keyword sshconfigLogLevel QUIET FATAL ERROR INFO VERBOSE -syn keyword sshconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3 -syn keyword sshconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1 -syn keyword sshconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 -syn match sshconfigVar "%[rhpldun]\>" -syn match sshconfigSpecial "[*?]" -syn match sshconfigNumber "\d\+" -syn match sshconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>" -syn match sshconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>" -syn match sshconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}[:/]\d\+\>" - -" Keywords -syn keyword sshconfigHostSect Host -syn keyword sshconfigKeyword AddressFamily -syn keyword sshconfigKeyword BatchMode BindAddress -syn keyword sshconfigKeyword ChallengeResponseAuthentication CheckHostIP -syn keyword sshconfigKeyword Cipher Ciphers ClearAllForwardings -syn keyword sshconfigKeyword Compression CompressionLevel ConnectTimeout -syn keyword sshconfigKeyword ConnectionAttempts ControlMaster -syn keyword sshconfigKeyword ControlPath DynamicForward -syn keyword sshconfigKeyword EnableSSHKeysign EscapeChar ExitOnForwardFailure -syn keyword sshconfigKeyword ForwardAgent ForwardX11 -syn keyword sshconfigKeyword ForwardX11Trusted -syn keyword sshconfigKeyword GSSAPIAuthentication -syn keyword sshconfigKeyword GSSAPIDelegateCredentials GatewayPorts -syn keyword sshconfigKeyword GlobalKnownHostsFile -syn keyword sshconfigKeyword HostKeyAlgorithms HashKnownHosts -syn keyword sshconfigKeyword HostKeyAlias HostName HostbasedAuthentication -syn keyword sshconfigKeyword IdentitiesOnly IdentityFile -syn keyword sshconfigKeyword KbdInteractiveAuthentication KbdInteractiveDevices -syn keyword sshconfigKeyword LocalCommand LocalForward LogLevel -syn keyword sshconfigKeyword MACs -syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost -syn keyword sshconfigKeyword NumberOfPasswordPrompts -syn keyword sshconfigKeyword PasswordAuthentication PermitLocalCommand -syn keyword sshconfigKeyword Port PreferredAuthentications Protocol -syn keyword sshconfigKeyword ProxyCommand PubkeyAuthentication -syn keyword sshconfigKeyword PermitLocalCommand -syn keyword sshconfigKeyword RSAAuthentication RemoteForward RekeyLimit -syn keyword sshconfigKeyword RhostsRSAAuthentication -syn keyword sshconfigKeyword SendEnv ServerAliveCountMax ServerAliveInterval -syn keyword sshconfigKeyword SmartcardDevice StrictHostKeyChecking -syn keyword sshconfigKeyword Tunnel TunnelDevice -syn keyword sshconfigKeyword TCPKeepAlive UsePrivilegedPort User -syn keyword sshconfigKeyword UserKnownHostsFile -syn keyword sshconfigKeyword VerifyHostKeyDNS VisualHostKey -syn keyword sshconfigKeyword XAuthLocation - -" Define the default highlighting -if version >= 508 || !exists("did_sshconfig_syntax_inits") - if version < 508 - let did_sshconfig_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink sshconfigComment Comment - HiLink sshconfigTodo Todo - HiLink sshconfigHostPort sshconfigConstant - HiLink sshconfigNumber sshconfigConstant - HiLink sshconfigConstant Constant - HiLink sshconfigYesNo sshconfigEnum - HiLink sshconfigCipher sshconfigEnum - HiLink sshconfigMAC sshconfigEnum - HiLink sshconfigHostKeyAlg sshconfigEnum - HiLink sshconfigLogLevel sshconfigEnum - HiLink sshconfigSysLogFacility sshconfigEnum - HiLink sshconfigPreferredAuth sshconfigEnum - HiLink sshconfigVar sshconfigEnum - HiLink sshconfigEnum Identifier - HiLink sshconfigSpecial Special - HiLink sshconfigKeyword Keyword - HiLink sshconfigHostSect Type - delcommand HiLink -endif - -let b:current_syntax = "sshconfig" diff --git a/share/vim/vim73/syntax/sshdconfig.vim b/share/vim/vim73/syntax/sshdconfig.vim deleted file mode 100644 index 97ee8f87..00000000 --- a/share/vim/vim73/syntax/sshdconfig.vim +++ /dev/null @@ -1,111 +0,0 @@ -" Vim syntax file -" Language: OpenSSH server configuration file (sshd_config) -" Maintainer: David Necas (Yeti) -" Last Change: 2009-07-09 - -" Setup -if version >= 600 - if exists("b:current_syntax") - finish - endif -else - syntax clear -endif - -if version >= 600 - setlocal iskeyword=_,-,a-z,A-Z,48-57 -else - set iskeyword=_,-,a-z,A-Z,48-57 -endif - -syn case ignore - -" Comments -syn match sshdconfigComment "#.*$" contains=sshdconfigTodo -syn keyword sshdconfigTodo TODO FIXME NOT contained - -" Constants -syn keyword sshdconfigYesNo yes no none -syn keyword sshdconfigAddressFamily any inet inet6 -syn keyword sshdconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc -syn keyword sshdconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr -syn keyword sshdconfigCipher arcfour arcfour128 arcfour256 cast128-cbc -syn keyword sshdconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96 -syn keyword sshdconfigMAC hmac-md5-96 -syn match sshdconfigMAC "\" -syn keyword sshdconfigRootLogin without-password forced-commands-only -syn keyword sshdconfigLogLevel QUIET FATAL ERROR INFO VERBOSE -syn keyword sshdconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3 -syn keyword sshdconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1 -syn keyword sshdconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 -syn match sshdconfigSpecial "[*?]" -syn match sshdconfigNumber "\d\+" -syn match sshdconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>" -syn match sshdconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>" -" FIXME: this matches quite a few things which are NOT valid IPv6 addresses -syn match sshdconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}:\d\+\>" -syn match sshdconfigTime "\<\(\d\+[sSmMhHdDwW]\)\+\>" - -" Keywords -syn keyword sshdconfigMatch Host User Group Address -syn keyword sshdconfigKeyword AcceptEnv AddressFamily AllowAgentForwarding -syn keyword sshdconfigKeyword AllowGroups AllowTcpForwarding -syn keyword sshdconfigKeyword AllowUsers AuthorizedKeysFile -syn keyword sshdconfigKeyword Banner -syn keyword sshdconfigKeyword ChallengeResponseAuthentication ChrootDirectory -syn keyword sshdconfigKeyword Ciphers ClientAliveCountMax -syn keyword sshdconfigKeyword ClientAliveInterval Compression -syn keyword sshdconfigKeyword DenyGroups DenyUsers -syn keyword sshdconfigKeyword ForceCommand -syn keyword sshdconfigKeyword GatewayPorts GSSAPIAuthentication -syn keyword sshdconfigKeyword GSSAPICleanupCredentials -syn keyword sshdconfigKeyword HostbasedAuthentication HostKey -syn keyword sshdconfigKeyword IgnoreRhosts IgnoreUserKnownHosts -syn keyword sshdconfigKeyword KerberosAuthentication KerberosGetAFSToken -syn keyword sshdconfigKeyword KerberosOrLocalPasswd KerberosTicketCleanup -syn keyword sshdconfigKeyword KeyRegenerationInterval -syn keyword sshdconfigKeyword ListenAddress LoginGraceTime LogLevel -syn keyword sshdconfigKeyword MACs Match MaxAuthTries MaxSessions MaxStartups -syn keyword sshdconfigKeyword PasswordAuthentication PermitEmptyPasswords -syn keyword sshdconfigKeyword PermitRootLogin PermitOpen PermitTunnel -syn keyword sshdconfigKeyword PermitUserEnvironment PidFile Port -syn keyword sshdconfigKeyword PrintLastLog PrintMotd Protocol -syn keyword sshdconfigKeyword PubkeyAuthentication -syn keyword sshdconfigKeyword RhostsRSAAuthentication RSAAuthentication -syn keyword sshdconfigKeyword ServerKeyBits ShowPatchLevel StrictModes -syn keyword sshdconfigKeyword Subsystem SyslogFacility -syn keyword sshdconfigKeyword TCPKeepAlive -syn keyword sshdconfigKeyword UseDNS UseLogin UsePAM UsePrivilegeSeparation -syn keyword sshdconfigKeyword X11DisplayOffset X11Forwarding -syn keyword sshdconfigKeyword X11UseLocalhost XAuthLocation - -" Define the default highlighting -if version >= 508 || !exists("did_sshdconfig_syntax_inits") - if version < 508 - let did_sshdconfig_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink sshdconfigComment Comment - HiLink sshdconfigTodo Todo - HiLink sshdconfigHostPort sshdconfigConstant - HiLink sshdconfigTime sshdconfigConstant - HiLink sshdconfigNumber sshdconfigConstant - HiLink sshdconfigConstant Constant - HiLink sshdconfigYesNo sshdconfigEnum - HiLink sshdconfigAddressFamily sshdconfigEnum - HiLink sshdconfigCipher sshdconfigEnum - HiLink sshdconfigMAC sshdconfigEnum - HiLink sshdconfigRootLogin sshdconfigEnum - HiLink sshdconfigLogLevel sshdconfigEnum - HiLink sshdconfigSysLogFacility sshdconfigEnum - HiLink sshdconfigEnum Function - HiLink sshdconfigSpecial Special - HiLink sshdconfigKeyword Keyword - HiLink sshdconfigMatch Type - delcommand HiLink -endif - -let b:current_syntax = "sshdconfig" diff --git a/share/vim/vim73/syntax/st.vim b/share/vim/vim73/syntax/st.vim deleted file mode 100644 index d629eb4e..00000000 --- a/share/vim/vim73/syntax/st.vim +++ /dev/null @@ -1,102 +0,0 @@ -" Vim syntax file -" Language: Smalltalk -" Maintainer: Arndt Hesse -" Last Change: 2001 May 09 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" some Smalltalk keywords and standard methods -syn keyword stKeyword super self class true false new not -syn keyword stKeyword notNil isNil inspect out nil -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" -syn match stMethod "\:" - -" the block of local variables of a method -syn region stLocalVariables start="^[ \t]*|" end="|" - -" the Smalltalk comment -syn region stComment start="\"" end="\"" - -" the Smalltalk strings and single characters -syn region stString start='\'' skip="''" end='\'' -syn match stCharacter "$." - -syn case ignore - -" the symols prefixed by a '#' -syn match stSymbol "\(#\<[a-z_][a-z0-9_]*\>\)" -syn match stSymbol "\(#'[^']*'\)" - -" the variables in a statement block for loops -syn match stBlockVariable "\(:[ \t]*\<[a-z_][a-z0-9_]*\>[ \t]*\)\+|" contained - -" some representations of numbers -syn match stNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" -syn match stFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" -syn match stFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" - -syn case match - -" a try to higlight paren mismatches -syn region stParen transparent start='(' end=')' contains=ALLBUT,stParenError -syn match stParenError ")" -syn region stBlock transparent start='\[' end='\]' contains=ALLBUT,stBlockError -syn match stBlockError "\]" -syn region stSet transparent start='{' end='}' contains=ALLBUT,stSetError -syn match stSetError "}" - -hi link stParenError stError -hi link stSetError stError -hi link stBlockError stError - -" synchronization for syntax analysis -syn sync minlines=50 - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_st_syntax_inits") - if version < 508 - let did_st_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink stKeyword Statement - HiLink stMethod Statement - HiLink stComment Comment - HiLink stCharacter Constant - HiLink stString Constant - HiLink stSymbol Special - HiLink stNumber Type - HiLink stFloat Type - HiLink stError Error - HiLink stLocalVariables Identifier - HiLink stBlockVariable Identifier - - delcommand HiLink -endif - -let b:current_syntax = "st" diff --git a/share/vim/vim73/syntax/sudoers.vim b/share/vim/vim73/syntax/sudoers.vim deleted file mode 100644 index 1bcd03f9..00000000 --- a/share/vim/vim73/syntax/sudoers.vim +++ /dev/null @@ -1,266 +0,0 @@ -" Vim syntax file -" Language: sudoers(5) configuration files -" Maintainer: Nikolai Weibull -" Latest Revision: 2007-08-02 - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -" TODO: instead of 'skipnl', we would like to match a specific group that would -" match \\$ and then continue with the nextgroup, actually, the skipnl doesn't -" work... -" TODO: treat 'ALL' like a special (yay, a bundle of new rules!!!) - -syn match sudoersUserSpec '^' nextgroup=@sudoersUserInSpec skipwhite - -syn match sudoersSpecEquals contained '=' nextgroup=@sudoersCmndSpecList skipwhite - -syn cluster sudoersCmndSpecList contains=sudoersUserRunasBegin,sudoersPASSWD,@sudoersCmndInSpec - -syn keyword sudoersTodo contained TODO FIXME XXX NOTE - -syn region sudoersComment display oneline start='#' end='$' contains=sudoersTodo - -syn keyword sudoersAlias User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl -syn keyword sudoersAlias Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl -syn keyword sudoersAlias Cmnd_Alias nextgroup=sudoersCmndAlias skipwhite skipnl - -syn match sudoersUserAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersUserAliasEquals skipwhite skipnl -syn match sudoersUserNameInList contained '\<\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl -syn match sudoersUIDInList contained '#\d\+\>' nextgroup=@sudoersUserList skipwhite skipnl -syn match sudoersGroupInList contained '%\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl -syn match sudoersUserNetgroupInList contained '+\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl -syn match sudoersUserAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserList skipwhite skipnl - -syn match sudoersUserName contained '\<\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl -syn match sudoersUID contained '#\d\+\>' nextgroup=@sudoersParameter skipwhite skipnl -syn match sudoersGroup contained '%\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl -syn match sudoersUserNetgroup contained '+\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl -syn match sudoersUserAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl - -syn match sudoersUserNameInSpec contained '\<\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl -syn match sudoersUIDInSpec contained '#\d\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl -syn match sudoersGroupInSpec contained '%\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl -syn match sudoersUserNetgroupInSpec contained '+\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl -syn match sudoersUserAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserSpec skipwhite skipnl - -syn match sudoersUserNameInRunas contained '\<\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl -syn match sudoersUIDInRunas contained '#\d\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl -syn match sudoersGroupInRunas contained '%\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl -syn match sudoersUserNetgroupInRunas contained '+\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl -syn match sudoersUserAliasInRunas contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserRunas skipwhite skipnl - -syn match sudoersHostAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersHostAliasEquals skipwhite skipnl -syn match sudoersHostNameInList contained '\<\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl -syn match sudoersIPAddrInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostList skipwhite skipnl -syn match sudoersNetworkInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostList skipwhite skipnl -syn match sudoersHostNetgroupInList contained '+\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl -syn match sudoersHostAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostList skipwhite skipnl - -syn match sudoersHostName contained '\<\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl -syn match sudoersIPAddr contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersParameter skipwhite skipnl -syn match sudoersNetwork contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersParameter skipwhite skipnl -syn match sudoersHostNetgroup contained '+\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl -syn match sudoersHostAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl - -syn match sudoersHostNameInSpec contained '\<\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl -syn match sudoersIPAddrInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostSpec skipwhite skipnl -syn match sudoersNetworkInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostSpec skipwhite skipnl -syn match sudoersHostNetgroupInSpec contained '+\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl -syn match sudoersHostAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostSpec skipwhite skipnl - -syn match sudoersCmndAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersCmndAliasEquals skipwhite skipnl -syn match sudoersCmndNameInList contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndList,sudoersCommandEmpty,sudoersCommandArgs skipwhite -syn match sudoersCmndAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersCmndList skipwhite skipnl - -syn match sudoersCmndNameInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndSpec,sudoersCommandEmptyInSpec,sudoersCommandArgsInSpec skipwhite -syn match sudoersCmndAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersCmndSpec skipwhite skipnl - -syn match sudoersUserAliasEquals contained '=' nextgroup=@sudoersUserInList skipwhite skipnl -syn match sudoersUserListComma contained ',' nextgroup=@sudoersUserInList skipwhite skipnl -syn match sudoersUserListColon contained ':' nextgroup=sudoersUserAlias skipwhite skipnl -syn cluster sudoersUserList contains=sudoersUserListComma,sudoersUserListColon - -syn match sudoersUserSpecComma contained ',' nextgroup=@sudoersUserInSpec skipwhite skipnl -syn cluster sudoersUserSpec contains=sudoersUserSpecComma,@sudoersHostInSpec - -syn match sudoersUserRunasBegin contained '(' nextgroup=@sudoersUserInRunas skipwhite skipnl -syn match sudoersUserRunasComma contained ',' nextgroup=@sudoersUserInRunas skipwhite skipnl -syn match sudoersUserRunasEnd contained ')' nextgroup=sudoersPASSWD,@sudoersCmndInSpec skipwhite skipnl -syn cluster sudoersUserRunas contains=sudoersUserRunasComma,@sudoersUserInRunas,sudoersUserRunasEnd - - -syn match sudoersHostAliasEquals contained '=' nextgroup=@sudoersHostInList skipwhite skipnl -syn match sudoersHostListComma contained ',' nextgroup=@sudoersHostInList skipwhite skipnl -syn match sudoersHostListColon contained ':' nextgroup=sudoersHostAlias skipwhite skipnl -syn cluster sudoersHostList contains=sudoersHostListComma,sudoersHostListColon - -syn match sudoersHostSpecComma contained ',' nextgroup=@sudoersHostInSpec skipwhite skipnl -syn cluster sudoersHostSpec contains=sudoersHostSpecComma,sudoersSpecEquals - - -syn match sudoersCmndAliasEquals contained '=' nextgroup=@sudoersCmndInList skipwhite skipnl -syn match sudoersCmndListComma contained ',' nextgroup=@sudoersCmndInList skipwhite skipnl -syn match sudoersCmndListColon contained ':' nextgroup=sudoersCmndAlias skipwhite skipnl -syn cluster sudoersCmndList contains=sudoersCmndListComma,sudoersCmndListColon - -syn match sudoersCmndSpecComma contained ',' nextgroup=@sudoersCmndSpecList skipwhite skipnl -syn match sudoersCmndSpecColon contained ':' nextgroup=@sudoersUserInSpec skipwhite skipnl -syn cluster sudoersCmndSpec contains=sudoersCmndSpecComma,sudoersCmndSpecColon - -syn cluster sudoersUserInList contains=sudoersUserNegationInList,sudoersUserNameInList,sudoersUIDInList,sudoersGroupInList,sudoersUserNetgroupInList,sudoersUserAliasInList -syn cluster sudoersHostInList contains=sudoersHostNegationInList,sudoersHostNameInList,sudoersIPAddrInList,sudoersNetworkInList,sudoersHostNetgroupInList,sudoersHostAliasInList -syn cluster sudoersCmndInList contains=sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList - -syn cluster sudoersUser contains=sudoersUserNegation,sudoersUserName,sudoersUID,sudoersGroup,sudoersUserNetgroup,sudoersUserAliasRef -syn cluster sudoersHost contains=sudoersHostNegation,sudoersHostName,sudoersIPAddr,sudoersNetwork,sudoersHostNetgroup,sudoersHostAliasRef - -syn cluster sudoersUserInSpec contains=sudoersUserNegationInSpec,sudoersUserNameInSpec,sudoersUIDInSpec,sudoersGroupInSpec,sudoersUserNetgroupInSpec,sudoersUserAliasInSpec -syn cluster sudoersHostInSpec contains=sudoersHostNegationInSpec,sudoersHostNameInSpec,sudoersIPAddrInSpec,sudoersNetworkInSpec,sudoersHostNetgroupInSpec,sudoersHostAliasInSpec -syn cluster sudoersUserInRunas contains=sudoersUserNegationInRunas,sudoersUserNameInRunas,sudoersUIDInRunas,sudoersGroupInRunas,sudoersUserNetgroupInRunas,sudoersUserAliasInRunas -syn cluster sudoersCmndInSpec contains=sudoersCmndNegationInSpec,sudoersCmndNameInSpec,sudoersCmndAliasInSpec - -syn match sudoersUserNegationInList contained '!\+' nextgroup=@sudoersUserInList skipwhite skipnl -syn match sudoersHostNegationInList contained '!\+' nextgroup=@sudoersHostInList skipwhite skipnl -syn match sudoersCmndNegationInList contained '!\+' nextgroup=@sudoersCmndInList skipwhite skipnl - -syn match sudoersUserNegation contained '!\+' nextgroup=@sudoersUser skipwhite skipnl -syn match sudoersHostNegation contained '!\+' nextgroup=@sudoersHost skipwhite skipnl - -syn match sudoersUserNegationInSpec contained '!\+' nextgroup=@sudoersUserInSpec skipwhite skipnl -syn match sudoersHostNegationInSpec contained '!\+' nextgroup=@sudoersHostInSpec skipwhite skipnl -syn match sudoersUserNegationInRunas contained '!\+' nextgroup=@sudoersUserInRunas skipwhite skipnl -syn match sudoersCmndNegationInSpec contained '!\+' nextgroup=@sudoersCmndInSpec skipwhite skipnl - -syn match sudoersCommandArgs contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgs,@sudoersCmndList skipwhite -syn match sudoersCommandEmpty contained '""' nextgroup=@sudoersCmndList skipwhite skipnl - -syn match sudoersCommandArgsInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgsInSpec,@sudoersCmndSpec skipwhite -syn match sudoersCommandEmptyInSpec contained '""' nextgroup=@sudoersCmndSpec skipwhite skipnl - -syn keyword sudoersDefaultEntry Defaults nextgroup=sudoersDefaultTypeAt,sudoersDefaultTypeColon,sudoersDefaultTypeGreaterThan,@sudoersParameter skipwhite skipnl -syn match sudoersDefaultTypeAt contained '@' nextgroup=@sudoersHost skipwhite skipnl -syn match sudoersDefaultTypeColon contained ':' nextgroup=@sudoersUser skipwhite skipnl -syn match sudoersDefaultTypeGreaterThan contained '>' nextgroup=@sudoersUser skipwhite skipnl - -" TODO: could also deal with special characters here -syn match sudoersBooleanParameter contained '!' nextgroup=sudoersBooleanParameter skipwhite skipnl -syn keyword sudoersBooleanParameter contained long_opt_prompt ignore_dot mail_always mail_badpass mail_no_user mail_no_perms tty_tickets lecture authenticate root_sudo log_host log_year shell_noargs set_home always_set_home path_info preserve_groups fqdn insults requiretty env_editor rootpw runaspw targetpw set_logname stay_setuid env_reset use_loginclass nextgroup=sudoersParameterListComma skipwhite skipnl -syn keyword sudoersIntegerParameter contained passwd_tries loglinelen timestamp_timeout passwd_timeout umask nextgroup=sudoersIntegerParameterEquals skipwhite skipnl -syn keyword sudoersStringParameter contained mailsub badpass_message timestampdir timestampowner passprompt runas_default syslog_goodpri syslog_badpri editor logfile syslog mailerpath mailerflags mailto exempt_group verifypw listpw nextgroup=sudoersStringParameterEquals skipwhite skipnl -syn keyword sudoersListParameter contained env_check env_delete env_keep nextgroup=sudoersListParameterEquals skipwhite skipnl - -syn match sudoersParameterListComma contained ',' nextgroup=@sudoersParameter skipwhite skipnl - -syn cluster sudoersParameter contains=sudoersBooleanParameter,sudoersIntegerParameter,sudoersStringParameter,sudoersListParameter - -syn match sudoersIntegerParameterEquals contained '[+-]\==' nextgroup=sudoersIntegerValue skipwhite skipnl -syn match sudoersStringParameterEquals contained '[+-]\==' nextgroup=sudoersStringValue skipwhite skipnl -syn match sudoersListParameterEquals contained '[+-]\==' nextgroup=sudoersListValue skipwhite skipnl - -syn match sudoersIntegerValue contained '\d\+' nextgroup=sudoersParameterListComma skipwhite skipnl -syn match sudoersStringValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl -syn region sudoersStringValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl -syn match sudoersListValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl -syn region sudoersListValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl - -syn match sudoersPASSWD contained '\%(NO\)\=PASSWD:' nextgroup=@sudoersCmndInSpec skipwhite - -hi def link sudoersSpecEquals Operator -hi def link sudoersTodo Todo -hi def link sudoersComment Comment -hi def link sudoersAlias Keyword -hi def link sudoersUserAlias Identifier -hi def link sudoersUserNameInList String -hi def link sudoersUIDInList Number -hi def link sudoersGroupInList PreProc -hi def link sudoersUserNetgroupInList PreProc -hi def link sudoersUserAliasInList PreProc -hi def link sudoersUserName String -hi def link sudoersUID Number -hi def link sudoersGroup PreProc -hi def link sudoersUserNetgroup PreProc -hi def link sudoersUserAliasRef PreProc -hi def link sudoersUserNameInSpec String -hi def link sudoersUIDInSpec Number -hi def link sudoersGroupInSpec PreProc -hi def link sudoersUserNetgroupInSpec PreProc -hi def link sudoersUserAliasInSpec PreProc -hi def link sudoersUserNameInRunas String -hi def link sudoersUIDInRunas Number -hi def link sudoersGroupInRunas PreProc -hi def link sudoersUserNetgroupInRunas PreProc -hi def link sudoersUserAliasInRunas PreProc -hi def link sudoersHostAlias Identifier -hi def link sudoersHostNameInList String -hi def link sudoersIPAddrInList Number -hi def link sudoersNetworkInList Number -hi def link sudoersHostNetgroupInList PreProc -hi def link sudoersHostAliasInList PreProc -hi def link sudoersHostName String -hi def link sudoersIPAddr Number -hi def link sudoersNetwork Number -hi def link sudoersHostNetgroup PreProc -hi def link sudoersHostAliasRef PreProc -hi def link sudoersHostNameInSpec String -hi def link sudoersIPAddrInSpec Number -hi def link sudoersNetworkInSpec Number -hi def link sudoersHostNetgroupInSpec PreProc -hi def link sudoersHostAliasInSpec PreProc -hi def link sudoersCmndAlias Identifier -hi def link sudoersCmndNameInList String -hi def link sudoersCmndAliasInList PreProc -hi def link sudoersCmndNameInSpec String -hi def link sudoersCmndAliasInSpec PreProc -hi def link sudoersUserAliasEquals Operator -hi def link sudoersUserListComma Delimiter -hi def link sudoersUserListColon Delimiter -hi def link sudoersUserSpecComma Delimiter -hi def link sudoersUserRunasBegin Delimiter -hi def link sudoersUserRunasComma Delimiter -hi def link sudoersUserRunasEnd Delimiter -hi def link sudoersHostAliasEquals Operator -hi def link sudoersHostListComma Delimiter -hi def link sudoersHostListColon Delimiter -hi def link sudoersHostSpecComma Delimiter -hi def link sudoersCmndAliasEquals Operator -hi def link sudoersCmndListComma Delimiter -hi def link sudoersCmndListColon Delimiter -hi def link sudoersCmndSpecComma Delimiter -hi def link sudoersCmndSpecColon Delimiter -hi def link sudoersUserNegationInList Operator -hi def link sudoersHostNegationInList Operator -hi def link sudoersCmndNegationInList Operator -hi def link sudoersUserNegation Operator -hi def link sudoersHostNegation Operator -hi def link sudoersUserNegationInSpec Operator -hi def link sudoersHostNegationInSpec Operator -hi def link sudoersUserNegationInRunas Operator -hi def link sudoersCmndNegationInSpec Operator -hi def link sudoersCommandArgs String -hi def link sudoersCommandEmpty Special -hi def link sudoersDefaultEntry Keyword -hi def link sudoersDefaultTypeAt Special -hi def link sudoersDefaultTypeColon Special -hi def link sudoersDefaultTypeGreaterThan Special -hi def link sudoersBooleanParameter Identifier -hi def link sudoersIntegerParameter Identifier -hi def link sudoersStringParameter Identifier -hi def link sudoersListParameter Identifier -hi def link sudoersParameterListComma Delimiter -hi def link sudoersIntegerParameterEquals Operator -hi def link sudoersStringParameterEquals Operator -hi def link sudoersListParameterEquals Operator -hi def link sudoersIntegerValue Number -hi def link sudoersStringValue String -hi def link sudoersListValue String -hi def link sudoersPASSWD Special - -let b:current_syntax = "sudoers" - -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/share/vim/vim73/syntax/svn.vim b/share/vim/vim73/syntax/svn.vim deleted file mode 100644 index 0cd770a2..00000000 --- a/share/vim/vim73/syntax/svn.vim +++ /dev/null @@ -1,51 +0,0 @@ -" Vim syntax file -" Language: Subversion (svn) commit file -" Maintainer: Dmitry Vasiliev -" URL: http://www.hlabs.spb.ru/vim/svn.vim -" Revision: $Id: svn.vim 683 2008-07-30 11:52:38Z hdima $ -" Filenames: svn-commit*.tmp -" Version: 1.6 - -" Contributors: -" Stefano Zacchiroli -" A. S. Budden - -" For version 5.x: Clear all syntax items. -" For version 6.x: Quit when a syntax file was already loaded. -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn region svnRegion start="^--.*--$" end="\%$" contains=ALL contains=@NoSpell -syn match svnRemoved "^D .*$" contained -syn match svnAdded "^A[ M] .*$" contained -syn match svnModified "^M[ M] .*$" contained -syn match svnProperty "^_M .*$" contained - -" Synchronization. -syn sync clear -syn sync match svnSync grouphere svnRegion "^--.*--$"me=s-1 - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already. -" For version 5.8 and later: only when an item doesn't have highlighting yet. -if version >= 508 || !exists("did_svn_syn_inits") - if version <= 508 - let did_svn_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink svnRegion Comment - HiLink svnRemoved Constant - HiLink svnAdded Identifier - HiLink svnModified Special - HiLink svnProperty Special - - delcommand HiLink -endif - -let b:current_syntax = "svn" diff --git a/share/vim/vim73/syntax/synload.vim b/share/vim/vim73/syntax/synload.vim deleted file mode 100644 index 178595cb..00000000 --- a/share/vim/vim73/syntax/synload.vim +++ /dev/null @@ -1,76 +0,0 @@ -" Vim syntax support file -" Maintainer: Bram Moolenaar -" Last Change: 2010 Aug 08 - -" This file sets up for syntax highlighting. -" It is loaded from "syntax.vim" and "manual.vim". -" 1. Set the default highlight groups. -" 2. Install Syntax autocommands for all the available syntax files. - -if !has("syntax") - finish -endif - -" let others know that syntax has been switched on -let syntax_on = 1 - -" Set the default highlighting colors. Use a color scheme if specified. -if exists("colors_name") - exe "colors " . colors_name -else - runtime! syntax/syncolor.vim -endif - -" Line continuation is used here, remove 'C' from 'cpoptions' -let s:cpo_save = &cpo -set cpo&vim - -" First remove all old syntax autocommands. -au! Syntax - -au Syntax * call s:SynSet() - -fun! s:SynSet() - " clear syntax for :set syntax=OFF and any syntax name that doesn't exist - syn clear - if exists("b:current_syntax") - unlet b:current_syntax - endif - - let s = expand("") - if s == "ON" - " :set syntax=ON - if &filetype == "" - echohl ErrorMsg - echo "filetype unknown" - echohl None - endif - let s = &filetype - endif - - if s != "" - " Load the syntax file(s). When there are several, separated by dots, - " load each in sequence. - for name in split(s, '\.') - exe "runtime! syntax/" . name . ".vim syntax/" . name . "/*.vim" - endfor - endif -endfun - - -" Handle adding doxygen to other languages (C, C++, C#, IDL) -au Syntax c,cpp,cs,idl - \ if (exists('b:load_doxygen_syntax') && b:load_doxygen_syntax) - \ || (exists('g:load_doxygen_syntax') && g:load_doxygen_syntax) - \ | runtime! syntax/doxygen.vim - \ | endif - - -" Source the user-specified syntax highlighting file -if exists("mysyntaxfile") && filereadable(expand(mysyntaxfile)) - execute "source " . mysyntaxfile -endif - -" Restore 'cpoptions' -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/share/vim/vim73/syntax/sysctl.vim b/share/vim/vim73/syntax/sysctl.vim deleted file mode 100644 index d16d458a..00000000 --- a/share/vim/vim73/syntax/sysctl.vim +++ /dev/null @@ -1,39 +0,0 @@ -" Vim syntax file -" Language: sysctl.conf(5) configuration file -" Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -syn match sysctlBegin display '^' - \ nextgroup=sysctlToken,sysctlComment skipwhite - -syn match sysctlToken contained display '\S\+' - \ nextgroup=sysctlTokenEq skipwhite - -syn match sysctlTokenEq contained display '=' nextgroup=sysctlValue skipwhite - -syn region sysctlValue contained display oneline - \ matchgroup=sysctlValue start='\S' - \ matchgroup=Normal end='\s*$' - -syn keyword sysctlTodo contained TODO FIXME XXX NOTE - -syn region sysctlComment display oneline start='^\s*[#;]' end='$' - \ contains=sysctlTodo,@Spell - -hi def link sysctlTodo Todo -hi def link sysctlComment Comment -hi def link sysctlToken Identifier -hi def link sysctlTokenEq Operator -hi def link sysctlValue String - -let b:current_syntax = "sysctl" - -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/share/vim/vim73/syntax/taskdata.vim b/share/vim/vim73/syntax/taskdata.vim deleted file mode 100644 index 79186e0a..00000000 --- a/share/vim/vim73/syntax/taskdata.vim +++ /dev/null @@ -1,43 +0,0 @@ -" Vim syntax file -" Language: task data -" Maintainer: John Florian -" Updated: Wed Jul 8 19:46:20 EDT 2009 - - -" For version 5.x: Clear all syntax items. -" For version 6.x: Quit when a syntax file was already loaded. -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Key Names for values. -syn keyword taskdataKey description due end entry imask mask parent -syn keyword taskdataKey priority project recur start status tags uuid -syn match taskdataKey "annotation_\d\+" -syn match taskdataUndo "^time.*$" -syn match taskdataUndo "^\(old \|new \|---\)" - -" Values associated with key names. -" -" Strings -syn region taskdataString matchgroup=Normal start=+"+ end=+"+ - \ contains=taskdataEncoded,taskdataUUID,@Spell -" -" Special Embedded Characters (e.g., ",") -syn match taskdataEncoded "&\a\+;" contained -" UUIDs -syn match taskdataUUID "\x\{8}-\(\x\{4}-\)\{3}\x\{12}" contained - - -" The default methods for highlighting. Can be overridden later. -hi def link taskdataEncoded Function -hi def link taskdataKey Statement -hi def link taskdataString String -hi def link taskdataUUID Special -hi def link taskdataUndo Type - -let b:current_syntax = "taskdata" - -" vim:noexpandtab diff --git a/share/vim/vim73/syntax/taskedit.vim b/share/vim/vim73/syntax/taskedit.vim deleted file mode 100644 index c7e0ea75..00000000 --- a/share/vim/vim73/syntax/taskedit.vim +++ /dev/null @@ -1,35 +0,0 @@ -" Vim syntax file -" Language: support for 'task 42 edit' -" Maintainer: John Florian -" Updated: Wed Jul 8 19:46:32 EDT 2009 - - -" For version 5.x: Clear all syntax items. -" For version 6.x: Quit when a syntax file was already loaded. -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn match taskeditHeading "^\s*#\s*Name\s\+Editable details\s*$" contained -syn match taskeditHeading "^\s*#\s*-\+\s\+-\+\s*$" contained -syn match taskeditReadOnly "^\s*#\s*\(UU\)\?ID:.*$" contained -syn match taskeditReadOnly "^\s*#\s*Status:.*$" contained -syn match taskeditReadOnly "^\s*#\s*i\?Mask:.*$" contained -syn match taskeditKey "^ *.\{-}:" nextgroup=taskeditString -syn match taskeditComment "^\s*#.*$" - \ contains=taskeditReadOnly,taskeditHeading -syn match taskeditString ".*$" contained contains=@Spell - - -" The default methods for highlighting. Can be overridden later. -hi def link taskeditComment Comment -hi def link taskeditHeading Function -hi def link taskeditKey Statement -hi def link taskeditReadOnly Special -hi def link taskeditString String - -let b:current_syntax = "taskedit" - -" vim:noexpandtab diff --git a/share/vim/vim73/syntax/tasm.vim b/share/vim/vim73/syntax/tasm.vim deleted file mode 100644 index 1cfc1218..00000000 --- a/share/vim/vim73/syntax/tasm.vim +++ /dev/null @@ -1,122 +0,0 @@ -" Vim syntax file -" Language: TASM: turbo assembler by Borland -" Maintaner: FooLman of United Force -" Last change: 22 aug 2000 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case ignore -syn match tasmLabel "^[\ \t]*[@a-z_$][a-z0-9_$@]*\ *:" -syn keyword tasmDirective ALIAS ALIGN ARG ASSUME %BIN CATSRT CODESEG -syn match tasmDirective "\<\(byte\|word\|dword\|qword\)\ ptr\>" -" CALL extended syntax -syn keyword tasmDirective COMM %CONDS CONST %CREF %CREFALL %CREFREF -syn keyword tasmDirective %CREFUREF %CTLS DATASEG DB DD %DEPTH DF DISPLAY -syn keyword tasmDirective DOSSEG DP DQ DT DW ELSE EMUL END ENDIF -" IF XXXX -syn keyword tasmDirective ENDM ENDP ENDS ENUM EQU ERR EVEN EVENDATA EXITCODE -syn keyword tasmDirective EXITM EXTRN FARDATA FASTIMUL FLIPFLAG GETFIELD GLOBAL -syn keyword tasmDirective GOTO GROUP IDEAL %INCL INCLUDE INCLUDELIB INSTR IRP -"JMP -syn keyword tasmDirective IRPC JUMPS LABEL LARGESTACK %LINUM %LIST LOCAL -syn keyword tasmDirective LOCALS MACRO %MACS MASKFLAG MASM MASM51 MODEL -syn keyword tasmDirective MULTERRS NAME %NEWPAGE %NOCONDS %NOCREF %NOCTLS -syn keyword tasmDirective NOEMUL %NOINCL NOJUMPS %NOLIST NOLOCALS %NOMACS -syn keyword tasmDirective NOMASM51 NOMULTERRS NOSMART %NOSYMS %NOTRUNC NOWARN -syn keyword tasmDirective %PAGESIZE %PCNT PNO87 %POPLCTL POPSTATE PROC PROCDESC -syn keyword tasmDirective PROCTYPE PUBLIC PUBLICDLL PURGE %PUSHCTL PUSHSTATE -"rept, ret -syn keyword tasmDirective QUIRKS RADIX RECORD RETCODE SEGMENT SETFIELD -syn keyword tasmDirective SETFLAG SIZESTR SMALLSTACK SMART STACK STARTUPCODE -syn keyword tasmDirective STRUC SUBSTR %SUBTTL %SYMS TABLE %TABSIZE TBLINIT -syn keyword tasmDirective TBLINST TBLPTR TESTFLAG %TEXT %TITLE %TRUNC TYPEDEF -syn keyword tasmDirective UDATASEG UFARDATA UNION USES VERSION WAR WHILE ?DEBUG - -syn keyword tasmInstruction AAA AAD AAM AAS ADC ADD AND ARPL BOUND BSF BSR -syn keyword tasmInstruction BSWAP BT BTC BTR BTS CALL CBW CLC CLD CLI CLTS -syn keyword tasmInstruction CMC CMP CMPXCHG CMPXCHG8B CPUID CWD CDQ CWDE -syn keyword tasmInstruction DAA DAS DEC DIV ENTER RETN RETF F2XM1 -syn keyword tasmCoprocInstr FABS FADD FADDP FBLD FBSTP FCHG FCOM FCOM2 FCOMI -syn keyword tasmCoprocInstr FCOMIP FCOMP FCOMP3 FCOMP5 FCOMPP FCOS FDECSTP -syn keyword tasmCoprocInstr FDISI FDIV FDIVP FDIVR FENI FFREE FFREEP FIADD -syn keyword tasmCoprocInstr FICOM FICOMP FIDIV FIDIVR FILD FIMUL FINIT FINCSTP -syn keyword tasmCoprocInstr FIST FISTP FISUB FISUBR FLD FLD1 FLDCW FLDENV -syn keyword tasmCoprocInstr FLDL2E FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP -syn keyword tasmCoprocInstr FNCLEX FNINIT FNOP FNSAVE FNSTCW FNSTENV FNSTSW -syn keyword tasmCoprocInstr FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSCALE -syn keyword tasmCoprocInstr FSETPM FSIN FSINCOM FSQRT FST FSTP FSTP1 FSTP8 -syn keyword tasmCoprocInstr FSTP9 FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI -syn keyword tasmCoprocInstr FUCOMPP FWAIT FXAM FXCH FXCH4 FXCH7 FXTRACT FYL2X -syn keyword tasmCoprocInstr FYL2XP1 FSTCW FCHS FSINCOS -syn keyword tasmInstruction IDIV IMUL IN INC INT INTO INVD INVLPG IRET JMP -syn keyword tasmInstruction LAHF LAR LDS LEA LEAVE LES LFS LGDT LGS LIDT LLDT -syn keyword tasmInstruction LMSW LOCK LODSB LSL LSS LTR MOV MOVSX MOVZX MUL -syn keyword tasmInstruction NEG NOP NOT OR OUT POP POPA POPAD POPF POPFD PUSH -syn keyword tasmInstruction PUSHA PUSHAD PUSHF PUSHFD RCL RCR RDMSR RDPMC RDTSC -syn keyword tasmInstruction REP RET ROL ROR RSM SAHF SAR SBB SGDT SHL SAL SHLD -syn keyword tasmInstruction SHR SHRD SIDT SMSW STC STD STI STR SUB TEST VERR -syn keyword tasmInstruction VERW WBINVD WRMSR XADD XCHG XLAT XOR -syn keyword tasmMMXinst EMMS MOVD MOVQ PACKSSDW PACKSSWB PACKUSWB PADDB -syn keyword tasmMMXinst PADDD PADDSB PADDSB PADDSW PADDUSB PADDUSW PADDW -syn keyword tasmMMXinst PAND PANDN PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD -syn keyword tasmMMXinst PCMPGTW PMADDWD PMULHW PMULLW POR PSLLD PSLLQ -syn keyword tasmMMXinst PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD -syn keyword tasmMMXinst PSUBSB PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW -syn keyword tasmMMXinst PUNPCKHBQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD -syn keyword tasmMMXinst PXOR -"FCMOV -syn match tasmInstruction "\<\(CMPS\|MOVS\|OUTS\|SCAS\|STOS\|LODS\|INS\)[BWD]" -syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABCGLESXZ]\>" -syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABGL]E\>" -syn match tasmInstruction "\<\(LOOP\|REP\)N\=[EZ]\=\>" -syn match tasmRegister "\<[A-D][LH]\>" -syn match tasmRegister "\" -syn match tasmRegister "\<[C-GS]S\>" -syn region tasmComment start=";" end="$" -"HACK! comment ? ... selection -syn region tasmComment start="comment \+\$" end="\$" -syn region tasmComment start="comment \+\~" end="\~" -syn region tasmComment start="comment \+#" end="#" -syn region tasmString start="'" end="'" -syn region tasmString start='"' end='"' - -syn match tasmDec "\<-\=[0-9]\+\.\=[0-9]*\>" -syn match tasmHex "\<[0-9][0-9A-F]*H\>" -syn match tasmOct "\<[0-7]\+O\>" -syn match tasmBin "\<[01]\+B\>" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_tasm_syntax_inits") - if version < 508 - let did_tasm_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink tasmString String - HiLink tasmDec Number - HiLink tasmHex Number - HiLink tasmOct Number - HiLink tasmBin Number - HiLink tasmInstruction Keyword - HiLink tasmCoprocInstr Keyword - HiLink tasmMMXInst Keyword - HiLink tasmDirective PreProc - HiLink tasmRegister Identifier - HiLink tasmProctype PreProc - HiLink tasmComment Comment - HiLink tasmLabel Label - - delcommand HiLink -endif - -let b:curret_syntax = "tasm" diff --git a/share/vim/vim73/syntax/tex.vim b/share/vim/vim73/syntax/tex.vim deleted file mode 100644 index 5e6fc7f1..00000000 --- a/share/vim/vim73/syntax/tex.vim +++ /dev/null @@ -1,1094 +0,0 @@ -" Vim syntax file -" Language: TeX -" Maintainer: Dr. Charles E. Campbell, Jr. -" Last Change: Aug 12, 2010 -" Version: 57 -" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax -" -" Notes: {{{1 -" -" 1. If you have a \begin{verbatim} that appears to overrun its boundaries, -" use %stopzone. -" -" 2. Run-on equations ($..$ and $$..$$, particularly) can also be stopped -" by suitable use of %stopzone. -" -" 3. If you have a slow computer, you may wish to modify -" -" syn sync maxlines=200 -" syn sync minlines=50 -" -" to values that are more to your liking. -" -" 4. There is no match-syncing for $...$ and $$...$$; hence large -" equation blocks constructed that way may exhibit syncing problems. -" (there's no difference between begin/end patterns) -" -" 5. If you have the variable "g:tex_no_error" defined then none of the -" lexical error-checking will be done. -" -" ie. let g:tex_no_error=1 - -" Version Clears: {{{1 -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif -scriptencoding utf-8 - -" Define the default highlighting. {{{1 -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_tex_syntax_inits") - let did_tex_syntax_inits = 1 - if version < 508 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif -endif -if exists("g:tex_tex") && !exists("g:tex_no_error") - let g:tex_no_error= 1 -endif - -" let user determine which classes of concealment will be supported -" a=accents/ligatures d=delimiters m=math symbols g=Greek s=superscripts/subscripts -if !exists("g:tex_conceal") - let s:tex_conceal= 'admgs' -else - let s:tex_conceal= g:tex_conceal -endif - -" Determine whether or not to use "*.sty" mode {{{1 -" The user may override the normal determination by setting -" g:tex_stylish to 1 (for "*.sty" mode) -" or to 0 else (normal "*.tex" mode) -" or on a buffer-by-buffer basis with b:tex_stylish -let b:extfname=expand("%:e") -if exists("g:tex_stylish") - let b:tex_stylish= g:tex_stylish -elseif !exists("b:tex_stylish") - if b:extfname == "sty" || b:extfname == "cls" || b:extfname == "clo" || b:extfname == "dtx" || b:extfname == "ltx" - let b:tex_stylish= 1 - else - let b:tex_stylish= 0 - endif -endif - -" handle folding {{{1 -if !exists("g:tex_fold_enabled") - let g:tex_fold_enabled= 0 -elseif g:tex_fold_enabled && !has("folding") - let g:tex_fold_enabled= 0 - echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support" -endif -if g:tex_fold_enabled && &fdm == "manual" - setl fdm=syntax -endif - -" (La)TeX keywords: only use the letters a-zA-Z {{{1 -" but _ is the only one that causes problems. -if version < 600 - set isk-=_ - if b:tex_stylish - set isk+=@ - endif -else - setlocal isk-=_ - if b:tex_stylish - setlocal isk+=@ - endif -endif - -" Clusters: {{{1 -" -------- -syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSectionMarker,texSectionName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle -if !exists("g:tex_no_error") - syn cluster texCmdGroup add=texMathError -endif -syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement -syn cluster texFoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texSectionMarker,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract -syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,@Spell -syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,@Spell,texStyleMatcher -syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter -if !exists("tex_no_math") - syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ - syn cluster texMatchGroup add=@texMathZones - syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2 - syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone - syn cluster texMathZoneGroup contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle - if !exists("g:tex_no_error") - syn cluster texMathMatchGroup add=texMathError - syn cluster texMathZoneGroup add=texMathError - endif - syn cluster texMathZoneGroup add=@NoSpell - " following used in the \part \chapter \section \subsection \subsubsection - " \paragraph \subparagraph \author \title highlighting - syn cluster texDocGroup contains=texPartZone,@texPartGroup - syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone - syn cluster texChapterGroup contains=texSectionZone,texParaZone - syn cluster texSectionGroup contains=texSubSectionZone,texParaZone - syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone - syn cluster texSubSubSectionGroup contains=texParaZone - syn cluster texParaGroup contains=texSubParaZone - if has("conceal") && &enc == 'utf-8' - syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol - syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol - endif -endif - -" Try to flag {} and () mismatches: {{{1 -if !exists("g:tex_no_error") - syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup,texError - syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup,texError -else - syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup - syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup -endif -syn region texParen start="(" end=")" contains=@texMatchGroup,@Spell -if !exists("g:tex_no_error") - syn match texError "[}\])]" -endif -if !exists("tex_no_math") - if !exists("g:tex_no_error") - syn match texMathError "}" contained - endif - syn region texMathMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup -endif - -" TeX/LaTeX keywords: {{{1 -" Instead of trying to be All Knowing, I just match \..alphameric.. -" Note that *.tex files may not have "@" in their \commands -if exists("g:tex_tex") || b:tex_stylish - syn match texStatement "\\[a-zA-Z@]\+" -else - syn match texStatement "\\\a\+" - if !exists("g:tex_no_error") - syn match texError "\\\a*@[a-zA-Z@]*" - endif -endif - -" TeX/LaTeX delimiters: {{{1 -syn match texDelimiter "&" -syn match texDelimiter "\\\\" - -" Tex/Latex Options: {{{1 -syn match texOption "[^\\]\zs#\d\+\|^#\d\+" - -" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1 -if b:tex_stylish - syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 - syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 -else - syn match texAccent "\\[bcdvuH]\A"me=e-1 - syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1 -endif -syn match texAccent "\\[bcdvuH]$" -syn match texAccent +\\[=^.\~"`']+ -syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+ -syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$" - -" \begin{}/\end{} section markers: {{{1 -syn match texSectionMarker "\\begin\>\|\\end\>" nextgroup=texSectionName -syn region texSectionName matchgroup=Delimiter start="{" end="}" contained nextgroup=texSectionModifier contains=texComment -syn region texSectionModifier matchgroup=Delimiter start="\[" end="]" contained contains=texComment - -" \documentclass, \documentstyle, \usepackage: {{{1 -syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texSectionName,texDocTypeArgs -syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texSectionName contains=texComment - -" Preamble syntax-based folding support: {{{1 -if g:tex_fold_enabled && has("folding") - syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texMatchGroup -endif - -" TeX input: {{{1 -syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement -syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt -syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt -syn match texInputCurlies "[{}]" contained -syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained contains=texComment - -" Type Styles (LaTeX 2.09): {{{1 -syn match texTypeStyle "\\rm\>" -syn match texTypeStyle "\\em\>" -syn match texTypeStyle "\\bf\>" -syn match texTypeStyle "\\it\>" -syn match texTypeStyle "\\sl\>" -syn match texTypeStyle "\\sf\>" -syn match texTypeStyle "\\sc\>" -syn match texTypeStyle "\\tt\>" - -" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1 -syn match texTypeStyle "\\textbf\>" -syn match texTypeStyle "\\textit\>" -syn match texTypeStyle "\\textmd\>" -syn match texTypeStyle "\\textrm\>" -syn match texTypeStyle "\\textsc\>" -syn match texTypeStyle "\\textsf\>" -syn match texTypeStyle "\\textsl\>" -syn match texTypeStyle "\\texttt\>" -syn match texTypeStyle "\\textup\>" -syn match texTypeStyle "\\emph\>" - -syn match texTypeStyle "\\mathbb\>" -syn match texTypeStyle "\\mathbf\>" -syn match texTypeStyle "\\mathcal\>" -syn match texTypeStyle "\\mathfrak\>" -syn match texTypeStyle "\\mathit\>" -syn match texTypeStyle "\\mathnormal\>" -syn match texTypeStyle "\\mathrm\>" -syn match texTypeStyle "\\mathsf\>" -syn match texTypeStyle "\\mathtt\>" - -syn match texTypeStyle "\\rmfamily\>" -syn match texTypeStyle "\\sffamily\>" -syn match texTypeStyle "\\ttfamily\>" - -syn match texTypeStyle "\\itshape\>" -syn match texTypeStyle "\\scshape\>" -syn match texTypeStyle "\\slshape\>" -syn match texTypeStyle "\\upshape\>" - -syn match texTypeStyle "\\bfseries\>" -syn match texTypeStyle "\\mdseries\>" - -" Some type sizes: {{{1 -syn match texTypeSize "\\tiny\>" -syn match texTypeSize "\\scriptsize\>" -syn match texTypeSize "\\footnotesize\>" -syn match texTypeSize "\\small\>" -syn match texTypeSize "\\normalsize\>" -syn match texTypeSize "\\large\>" -syn match texTypeSize "\\Large\>" -syn match texTypeSize "\\LARGE\>" -syn match texTypeSize "\\huge\>" -syn match texTypeSize "\\Huge\>" - -" Spacecodes (TeX'isms): {{{1 -" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x -syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar -syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained - -" Sections, subsections, etc: {{{1 -if g:tex_fold_enabled && has("folding") - syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup,@Spell - syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texPartGroup,@Spell - syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texChapterGroup,@Spell - syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSectionGroup,@Spell - syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSectionGroup,@Spell - syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSubSectionGroup,@Spell - syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texParaGroup,@Spell - syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@Spell - syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' fold contains=@texFoldGroup,@Spell - syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup,@Spell -else - syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell - syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell - syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell - syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell - syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell - syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell - syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup,@Spell - syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@Spell - syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell - syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell -endif - -" Bad Math (mismatched): {{{1 -if !exists("tex_no_math") - syn match texBadMath "\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|subequations\|smallmatrix\|xxalignat\)\s*}" - syn match texBadMath "\\end\s*{\s*\(align\|alignat\|displaymath\|displaymath\|eqnarray\|equation\|flalign\|gather\|math\|multline\|xalignat\)\*\=\s*}" - syn match texBadMath "\\[\])]" -endif - -" Math Zones: {{{1 -if !exists("tex_no_math") - " TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2 - " Starred forms are created if starform is true. Starred - " forms have syntax group and synchronization groups with a - " "S" appended. Handles: cluster, syntax, sync, and HiLink. - fun! TexNewMathZone(sfx,mathzone,starform) - let grpname = "texMathZone".a:sfx - let syncname = "texSyncMathZone".a:sfx - if g:tex_fold_enabled - let foldcmd= " fold" - else - let foldcmd= "" - endif - exe "syn cluster texMathZones add=".grpname - exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd - exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' - exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' - exe 'hi def link '.grpname.' texMath' - if a:starform - let grpname = "texMathZone".a:sfx.'S' - let syncname = "texSyncMathZone".a:sfx.'S' - exe "syn cluster texMathZones add=".grpname - exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd - exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' - exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' - exe 'hi def link '.grpname.' texMath' - endif - endfun - - " Standard Math Zones: {{{2 - call TexNewMathZone("A","align",1) - call TexNewMathZone("B","alignat",1) - call TexNewMathZone("C","displaymath",1) - call TexNewMathZone("D","eqnarray",1) - call TexNewMathZone("E","equation",1) - call TexNewMathZone("F","flalign",1) - call TexNewMathZone("G","gather",1) - call TexNewMathZone("H","math",1) - call TexNewMathZone("I","multline",1) - call TexNewMathZone("J","subequations",0) - call TexNewMathZone("K","xalignat",1) - call TexNewMathZone("L","xxalignat",0) - - " Inline Math Zones: {{{2 - if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'd' - syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup - syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup - syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup - syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" concealends keepend contains=@texMathZoneGroup - else - syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup - syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup - syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup - syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup - endif - syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup - - syn match texMathOper "[_^=]" contained - - " Text Inside Math Zones: {{{2 - syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell - - " \left..something.. and \right..something.. support: {{{2 - syn match texMathDelimBad contained "\S" - if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'm' - syn match texMathDelim contained "\\left\\{\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={ - syn match texMathDelim contained "\\right\\}\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=} - else - syn match texMathDelim contained "\\\(left\|right\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad - endif - syn match texMathDelim contained "\\\([bB]igg\=[lr]\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad - syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>" - syn match texMathDelim contained "\\lefteqn\>" - syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad - syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]" - syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow - syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow - syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow - syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow - syn keyword texMathDelimKey contained lbrace lvert rfloor -endif - -" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1 -syn match texSpecialChar "\\[$&%#{}_]" -if b:tex_stylish - syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1 -else - syn match texSpecialChar "\\[SP@]\A"me=e-1 -endif -syn match texSpecialChar "\\\\" -if !exists("tex_no_math") - syn match texOnlyMath "[_^]" -endif -syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S" - -" Comments: {{{1 -" Normal TeX LaTeX : %.... -" Documented TeX Format: ^^A... -and- leading %s (only) -if !exists("g:tex_comment_nospell") || !g:tex_comment_nospell - syn cluster texCommentGroup contains=texTodo,@Spell -else - syn cluster texCommentGroup contains=texTodo,@NoSpell -endif -syn case ignore -syn keyword texTodo contained combak fixme todo xxx -syn case match -if b:extfname == "dtx" - syn match texComment "\^\^A.*$" contains=@texCommentGroup - syn match texComment "^%\+" contains=@texCommentGroup -else - if g:tex_fold_enabled - " allows syntax-folding of 2 or more contiguous comment lines - " single-line comments are not folded - syn match texComment "%.*$" contains=@texCommentGroup - syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' fold - else - syn match texComment "%.*$" contains=@texCommentGroup - endif -endif - -" Separate lines used for verb` and verb# so that the end conditions {{{1 -" will appropriately terminate. -" If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there. -if exists("g:tex_verbspell") && g:tex_verbspell - syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell - " listings package: - syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" contains=@Spell - " moreverb package: - syn region texZone start="\\begin{verbatimtab}" end="\\end{verbatimtab}\|%stopzone\>" contains=@Spell - syn region texZone start="\\begin{verbatimwrite}" end="\\end{verbatimwrite}\|%stopzone\>" contains=@Spell - syn region texZone start="\\begin{boxedverbatim}" end="\\end{boxedverbatim}\|%stopzone\>" contains=@Spell - if version < 600 - syn region texZone start="\\verb\*\=`" end="`\|%stopzone\>" contains=@Spell - syn region texZone start="\\verb\*\=#" end="#\|%stopzone\>" contains=@Spell - else - if b:tex_stylish - syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell - else - syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" contains=@Spell - endif - endif -else - syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" - " listings package: - syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" - " moreverb package: - syn region texZone start="\\begin{verbatimtab}" end="\\end{verbatimtab}\|%stopzone\>" - syn region texZone start="\\begin{verbatimwrite}" end="\\end{verbatimwrite}\|%stopzone\>" - syn region texZone start="\\begin{boxedverbatim}" end="\\end{boxedverbatim}\|%stopzone\>" - if version < 600 - syn region texZone start="\\verb\*\=`" end="`\|%stopzone\>" - syn region texZone start="\\verb\*\=#" end="#\|%stopzone\>" - else - if b:tex_stylish - syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" - else - syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" - endif - endif -endif - -" Tex Reference Zones: {{{1 -syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup -syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup -syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup -syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup -syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup -syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup -syn match texRefZone '\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite -syn region texRefOption contained matchgroup=Delimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite -syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite - -" Handle newcommand, newenvironment : {{{1 -syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl -syn region texCmdName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl -syn region texCmdArgs contained matchgroup=Delimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl -syn region texCmdBody contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=Delimiter end="}" contains=@texCmdGroup -syn match texNewEnv "\\newenvironment\>" nextgroup=texEnvName skipwhite skipnl -syn region texEnvName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl -syn region texEnvBgn contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup -syn region texEnvEnd contained matchgroup=Delimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup - -" Definitions/Commands: {{{1 -syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl -if b:tex_stylish - syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl - syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl -else - syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl - syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl -endif -syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl -syn match texDefParm contained "#\d\+" - -" TeX Lengths: {{{1 -syn match texLength "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>" - -" TeX String Delimiters: {{{1 -syn match texString "\(``\|''\|,,\)" - -" makeatletter -- makeatother sections -if !exists("g:tex_no_error") - syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained - syn match texStyleStatement "\\[a-zA-Z@]\+" contained - syn region texStyleMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained - syn region texStyleMatcher matchgroup=Delimiter start="\[" end="]" contains=@texStyleGroup,texError contained -endif - -" Conceal mode support (supports set cole=2) {{{1 -if has("conceal") && &enc == 'utf-8' - - " Math Symbols {{{2 - " (many of these symbols were contributed by Björn Winckler) - if s:tex_conceal =~ 'm' - let s:texMathList=[ - \ ['angle' , '∠'], - \ ['approx' , '≈'], - \ ['ast' , '∗'], - \ ['asymp' , '≍'], - \ ['backepsilon' , '∍'], - \ ['backsimeq' , '≃'], - \ ['barwedge' , '⊼'], - \ ['because' , '∵'], - \ ['between' , '≬'], - \ ['bigcap' , '∩'], - \ ['bigcup' , '∪'], - \ ['bigodot' , '⊙'], - \ ['bigoplus' , '⊕'], - \ ['bigotimes' , '⊗'], - \ ['bigsqcup' , '⊔'], - \ ['bigtriangledown', '∇'], - \ ['bigvee' , '⋁'], - \ ['bigwedge' , '⋀'], - \ ['blacksquare' , '∎'], - \ ['bot' , '⊥'], - \ ['boxdot' , '⊡'], - \ ['boxminus' , '⊟'], - \ ['boxplus' , '⊞'], - \ ['boxtimes' , '⊠'], - \ ['bumpeq' , '≏'], - \ ['Bumpeq' , '≎'], - \ ['cap' , '∩'], - \ ['Cap' , '⋒'], - \ ['cdot' , '·'], - \ ['cdots' , '⋯'], - \ ['circ' , '∘'], - \ ['circeq' , '≗'], - \ ['circlearrowleft', '↺'], - \ ['circlearrowright', '↻'], - \ ['circledast' , '⊛'], - \ ['circledcirc' , '⊚'], - \ ['complement' , '∁'], - \ ['cong' , '≅'], - \ ['coprod' , '∐'], - \ ['cup' , '∪'], - \ ['Cup' , '⋓'], - \ ['curlyeqprec' , '⋞'], - \ ['curlyeqsucc' , '⋟'], - \ ['curlyvee' , '⋎'], - \ ['curlywedge' , '⋏'], - \ ['dashv' , '⊣'], - \ ['diamond' , '⋄'], - \ ['div' , '÷'], - \ ['doteq' , '≐'], - \ ['doteqdot' , '≑'], - \ ['dotplus' , '∔'], - \ ['dotsb' , '⋯'], - \ ['dotsc' , '…'], - \ ['dots' , '…'], - \ ['dotsi' , '⋯'], - \ ['dotso' , '…'], - \ ['doublebarwedge' , '⩞'], - \ ['downarrow' , '↓'], - \ ['Downarrow' , '⇓'], - \ ['emptyset' , '∅'], - \ ['eqcirc' , '≖'], - \ ['eqsim' , '≂'], - \ ['eqslantgtr' , '⪖'], - \ ['eqslantless' , '⪕'], - \ ['equiv' , '≡'], - \ ['exists' , '∃'], - \ ['fallingdotseq' , '≒'], - \ ['forall' , '∀'], - \ ['ge' , '≥'], - \ ['geq' , '≥'], - \ ['geqq' , '≧'], - \ ['gets' , '←'], - \ ['gneqq' , '≩'], - \ ['gtrdot' , '⋗'], - \ ['gtreqless' , '⋛'], - \ ['gtrless' , '≷'], - \ ['gtrsim' , '≳'], - \ ['hookleftarrow' , '↩'], - \ ['hookrightarrow' , '↪'], - \ ['iiint' , '∭'], - \ ['iint' , '∬'], - \ ['Im' , 'ℑ'], - \ ['in' , '∈'], - \ ['infty' , '∞'], - \ ['int' , '∫'], - \ ['lceil' , '⌈'], - \ ['ldots' , '…'], - \ ['le' , '≤'], - \ ['leftarrow' , '⟵'], - \ ['Leftarrow' , '⟸'], - \ ['leftarrowtail' , '↢'], - \ ['left(' , '('], - \ ['left\[' , '['], - \ ['left\\{' , '{'], - \ ['Leftrightarrow' , '⇔'], - \ ['leftrightsquigarrow', '↭'], - \ ['leftthreetimes' , '⋋'], - \ ['leq' , '≤'], - \ ['leqq' , '≦'], - \ ['lessdot' , '⋖'], - \ ['lesseqgtr' , '⋚'], - \ ['lesssim' , '≲'], - \ ['lfloor' , '⌊'], - \ ['lneqq' , '≨'], - \ ['ltimes' , '⋉'], - \ ['mapsto' , '↦'], - \ ['measuredangle' , '∡'], - \ ['mid' , '∣'], - \ ['mp' , '∓'], - \ ['nabla' , '∇'], - \ ['ncong' , '≇'], - \ ['nearrow' , '↗'], - \ ['ne' , '≠'], - \ ['neg' , '¬'], - \ ['neq' , '≠'], - \ ['nexists' , '∄'], - \ ['ngeq' , '≱'], - \ ['ngeqq' , '≱'], - \ ['ngtr' , '≯'], - \ ['ni' , '∋'], - \ ['nleftarrow' , '↚'], - \ ['nLeftarrow' , '⇍'], - \ ['nLeftrightarrow', '⇎'], - \ ['nleq' , '≰'], - \ ['nleqq' , '≰'], - \ ['nless' , '≮'], - \ ['nmid' , '∤'], - \ ['notin' , '∉'], - \ ['nprec' , '⊀'], - \ ['nrightarrow' , '↛'], - \ ['nRightarrow' , '⇏'], - \ ['nsim' , '≁'], - \ ['nsucc' , '⊁'], - \ ['ntriangleleft' , '⋪'], - \ ['ntrianglelefteq', '⋬'], - \ ['ntriangleright' , '⋫'], - \ ['ntrianglerighteq', '⋭'], - \ ['nvdash' , '⊬'], - \ ['nvDash' , '⊭'], - \ ['nVdash' , '⊮'], - \ ['nwarrow' , '↖'], - \ ['odot' , '⊙'], - \ ['oint' , '∮'], - \ ['ominus' , '⊖'], - \ ['oplus' , '⊕'], - \ ['oslash' , '⊘'], - \ ['otimes' , '⊗'], - \ ['owns' , '∋'], - \ ['partial' , '∂'], - \ ['perp' , '⊥'], - \ ['pitchfork' , '⋔'], - \ ['pm' , '±'], - \ ['precapprox' , '⪷'], - \ ['prec' , '≺'], - \ ['preccurlyeq' , '≼'], - \ ['preceq' , '⪯'], - \ ['precnapprox' , '⪹'], - \ ['precneqq' , '⪵'], - \ ['precsim' , '≾'], - \ ['prod' , '∏'], - \ ['propto' , '∝'], - \ ['rceil' , '⌉'], - \ ['Re' , 'ℜ'], - \ ['rfloor' , '⌋'], - \ ['rightarrow' , '⟶'], - \ ['Rightarrow' , '⟹'], - \ ['rightarrowtail' , '↣'], - \ ['right)' , ')'], - \ ['right]' , ']'], - \ ['right\\}' , '}'], - \ ['rightsquigarrow', '↝'], - \ ['rightthreetimes', '⋌'], - \ ['risingdotseq' , '≓'], - \ ['rtimes' , '⋊'], - \ ['searrow' , '↘'], - \ ['setminus' , '∖'], - \ ['sim' , '∼'], - \ ['sphericalangle' , '∢'], - \ ['sqcap' , '⊓'], - \ ['sqcup' , '⊔'], - \ ['sqsubset' , '⊏'], - \ ['sqsubseteq' , '⊑'], - \ ['sqsupset' , '⊐'], - \ ['sqsupseteq' , '⊒'], - \ ['subset' , '⊂'], - \ ['Subset' , '⋐'], - \ ['subseteq' , '⊆'], - \ ['subseteqq' , '⫅'], - \ ['subsetneq' , '⊊'], - \ ['subsetneqq' , '⫋'], - \ ['succapprox' , '⪸'], - \ ['succ' , '≻'], - \ ['succcurlyeq' , '≽'], - \ ['succeq' , '⪰'], - \ ['succnapprox' , '⪺'], - \ ['succneqq' , '⪶'], - \ ['succsim' , '≿'], - \ ['sum' , '∑'], - \ ['Supset' , '⋑'], - \ ['supseteq' , '⊇'], - \ ['supseteqq' , '⫆'], - \ ['supsetneq' , '⊋'], - \ ['supsetneqq' , '⫌'], - \ ['surd' , '√'], - \ ['swarrow' , '↙'], - \ ['therefore' , '∴'], - \ ['times' , '×'], - \ ['to' , '→'], - \ ['top' , '⊤'], - \ ['triangleleft' , '⊲'], - \ ['trianglelefteq' , '⊴'], - \ ['triangleq' , '≜'], - \ ['triangleright' , '⊳'], - \ ['trianglerighteq', '⊵'], - \ ['twoheadleftarrow', '↞'], - \ ['twoheadrightarrow', '↠'], - \ ['uparrow' , '↑'], - \ ['Uparrow' , '⇑'], - \ ['updownarrow' , '↕'], - \ ['Updownarrow' , '⇕'], - \ ['varnothing' , '∅'], - \ ['vartriangle' , '∆'], - \ ['vdash' , '⊢'], - \ ['vDash' , '⊨'], - \ ['Vdash' , '⊩'], - \ ['vdots' , '⋮'], - \ ['veebar' , '⊻'], - \ ['vee' , '∨'], - \ ['Vvdash' , '⊪'], - \ ['wedge' , '∧'], - \ ['wr' , '≀']] - for texmath in s:texMathList - exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1] - endfor - - if &ambw == "double" - syn match texMathSymbol '\\gg\>' contained conceal cchar=≫ - syn match texMathSymbol '\\ll\>' contained conceal cchar=≪ - else - syn match texMathSymbol '\\gg\>' contained conceal cchar=⟫ - syn match texMathSymbol '\\ll\>' contained conceal cchar=⟪ - endif - endif - - " Greek {{{2 - if s:tex_conceal =~ 'g' - fun! s:Greek(group,pat,cchar) - exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar - endfun - call s:Greek('texGreek','\\alpha\>' ,'α') - call s:Greek('texGreek','\\beta\>' ,'β') - call s:Greek('texGreek','\\gamma\>' ,'γ') - call s:Greek('texGreek','\\delta\>' ,'δ') - call s:Greek('texGreek','\\epsilon\>' ,'ϵ') - call s:Greek('texGreek','\\varepsilon\>' ,'ε') - call s:Greek('texGreek','\\zeta\>' ,'ζ') - call s:Greek('texGreek','\\eta\>' ,'η') - call s:Greek('texGreek','\\theta\>' ,'θ') - call s:Greek('texGreek','\\vartheta\>' ,'ϑ') - call s:Greek('texGreek','\\kappa\>' ,'κ') - call s:Greek('texGreek','\\lambda\>' ,'λ') - call s:Greek('texGreek','\\mu\>' ,'μ') - call s:Greek('texGreek','\\nu\>' ,'ν') - call s:Greek('texGreek','\\xi\>' ,'ξ') - call s:Greek('texGreek','\\pi\>' ,'π') - call s:Greek('texGreek','\\varpi\>' ,'ϖ') - call s:Greek('texGreek','\\rho\>' ,'ρ') - call s:Greek('texGreek','\\varrho\>' ,'ϱ') - call s:Greek('texGreek','\\sigma\>' ,'σ') - call s:Greek('texGreek','\\varsigma\>' ,'ς') - call s:Greek('texGreek','\\tau\>' ,'τ') - call s:Greek('texGreek','\\upsilon\>' ,'υ') - call s:Greek('texGreek','\\phi\>' ,'φ') - call s:Greek('texGreek','\\varphi\>' ,'ϕ') - call s:Greek('texGreek','\\chi\>' ,'χ') - call s:Greek('texGreek','\\psi\>' ,'ψ') - call s:Greek('texGreek','\\omega\>' ,'ω') - call s:Greek('texGreek','\\Gamma\>' ,'Γ') - call s:Greek('texGreek','\\Delta\>' ,'Δ') - call s:Greek('texGreek','\\Theta\>' ,'Θ') - call s:Greek('texGreek','\\Lambda\>' ,'Λ') - call s:Greek('texGreek','\\Xi\>' ,'Χ') - call s:Greek('texGreek','\\Pi\>' ,'Π') - call s:Greek('texGreek','\\Sigma\>' ,'Σ') - call s:Greek('texGreek','\\Upsilon\>' ,'Υ') - call s:Greek('texGreek','\\Phi\>' ,'Φ') - call s:Greek('texGreek','\\Psi\>' ,'Ψ') - call s:Greek('texGreek','\\Omega\>' ,'Ω') - delfun s:Greek - endif - - " Superscripts/Subscripts {{{2 - if s:tex_conceal =~ 's' - syn region texSuperscript matchgroup=Delimiter start='\^{' end='}' contained concealends contains=texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher - syn region texSubscript matchgroup=Delimiter start='_{' end='}' contained concealends contains=texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher - fun! s:SuperSub(group,leader,pat,cchar) - exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar - exe 'syn match '.a:group."s '".a:pat."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s' - endfun - call s:SuperSub('texSuperscript','\^','0','⁰') - call s:SuperSub('texSuperscript','\^','1','¹') - call s:SuperSub('texSuperscript','\^','2','²') - call s:SuperSub('texSuperscript','\^','3','³') - call s:SuperSub('texSuperscript','\^','4','⁴') - call s:SuperSub('texSuperscript','\^','5','⁵') - call s:SuperSub('texSuperscript','\^','6','⁶') - call s:SuperSub('texSuperscript','\^','7','⁷') - call s:SuperSub('texSuperscript','\^','8','⁸') - call s:SuperSub('texSuperscript','\^','9','⁹') - call s:SuperSub('texSuperscript','\^','a','ᵃ') - call s:SuperSub('texSuperscript','\^','b','ᵇ') - call s:SuperSub('texSuperscript','\^','c','ᶜ') - call s:SuperSub('texSuperscript','\^','d','ᵈ') - call s:SuperSub('texSuperscript','\^','e','ᵉ') - call s:SuperSub('texSuperscript','\^','f','ᶠ') - call s:SuperSub('texSuperscript','\^','g','ᵍ') - call s:SuperSub('texSuperscript','\^','h','ʰ') - call s:SuperSub('texSuperscript','\^','i','ⁱ') - call s:SuperSub('texSuperscript','\^','j','ʲ') - call s:SuperSub('texSuperscript','\^','k','ᵏ') - call s:SuperSub('texSuperscript','\^','l','ˡ') - call s:SuperSub('texSuperscript','\^','m','ᵐ') - call s:SuperSub('texSuperscript','\^','n','ⁿ') - call s:SuperSub('texSuperscript','\^','o','ᵒ') - call s:SuperSub('texSuperscript','\^','p','ᵖ') - call s:SuperSub('texSuperscript','\^','r','ʳ') - call s:SuperSub('texSuperscript','\^','s','ˢ') - call s:SuperSub('texSuperscript','\^','t','ᵗ') - call s:SuperSub('texSuperscript','\^','u','ᵘ') - call s:SuperSub('texSuperscript','\^','v','ᵛ') - call s:SuperSub('texSuperscript','\^','w','ʷ') - call s:SuperSub('texSuperscript','\^','x','ˣ') - call s:SuperSub('texSuperscript','\^','y','ʸ') - call s:SuperSub('texSuperscript','\^','z','ᶻ') - call s:SuperSub('texSuperscript','\^','A','ᴬ') - call s:SuperSub('texSuperscript','\^','B','ᴮ') - call s:SuperSub('texSuperscript','\^','D','ᴰ') - call s:SuperSub('texSuperscript','\^','E','ᴱ') - call s:SuperSub('texSuperscript','\^','G','ᴳ') - call s:SuperSub('texSuperscript','\^','H','ᴴ') - call s:SuperSub('texSuperscript','\^','I','ᴵ') - call s:SuperSub('texSuperscript','\^','J','ᴶ') - call s:SuperSub('texSuperscript','\^','K','ᴷ') - call s:SuperSub('texSuperscript','\^','L','ᴸ') - call s:SuperSub('texSuperscript','\^','M','ᴹ') - call s:SuperSub('texSuperscript','\^','N','ᴺ') - call s:SuperSub('texSuperscript','\^','O','ᴼ') - call s:SuperSub('texSuperscript','\^','P','ᴾ') - call s:SuperSub('texSuperscript','\^','R','ᴿ') - call s:SuperSub('texSuperscript','\^','T','ᵀ') - call s:SuperSub('texSuperscript','\^','U','ᵁ') - call s:SuperSub('texSuperscript','\^','W','ᵂ') - call s:SuperSub('texSuperscript','\^','+','⁺') - call s:SuperSub('texSuperscript','\^','-','⁻') - call s:SuperSub('texSuperscript','\^','<','˂') - call s:SuperSub('texSuperscript','\^','>','˃') - call s:SuperSub('texSuperscript','\^','/','ˊ') - call s:SuperSub('texSuperscript','\^','(','⁽') - call s:SuperSub('texSuperscript','\^',')','⁾') - call s:SuperSub('texSuperscript','\^','\.','˙') - call s:SuperSub('texSuperscript','\^','=','˭') - call s:SuperSub('texSubscript','_','0','₀') - call s:SuperSub('texSubscript','_','1','₁') - call s:SuperSub('texSubscript','_','2','₂') - call s:SuperSub('texSubscript','_','3','₃') - call s:SuperSub('texSubscript','_','4','₄') - call s:SuperSub('texSubscript','_','5','₅') - call s:SuperSub('texSubscript','_','6','₆') - call s:SuperSub('texSubscript','_','7','₇') - call s:SuperSub('texSubscript','_','8','₈') - call s:SuperSub('texSubscript','_','9','₉') - call s:SuperSub('texSubscript','_','a','ₐ') - call s:SuperSub('texSubscript','_','e','ₑ') - call s:SuperSub('texSubscript','_','i','ᵢ') - call s:SuperSub('texSubscript','_','o','ₒ') - call s:SuperSub('texSubscript','_','u','ᵤ') - call s:SuperSub('texSubscript','_','+','₊') - call s:SuperSub('texSubscript','_','-','₋') - call s:SuperSub('texSubscript','_','/','ˏ') - call s:SuperSub('texSubscript','_','(','₍') - call s:SuperSub('texSubscript','_',')','₎') - call s:SuperSub('texSubscript','_','\.','‸') - call s:SuperSub('texSubscript','_','r','ᵣ') - call s:SuperSub('texSubscript','_','v','ᵥ') - call s:SuperSub('texSubscript','_','x','ₓ') - call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ') - call s:SuperSub('texSubscript','_','\\delta\>','ᵨ') - call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ') - call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ') - call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ') - delfun s:SuperSub - endif - - " Accented characters: {{{2 - if s:tex_conceal =~ 'a' - if b:tex_stylish - syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 - syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 - else - fun! s:Accents(chr,...) - let i= 1 - for accent in ["`","\\'","^",'"','\~','\.',"c","H","k","r","u","v"] - if i > a:0 - break - endif - if strlen(a:{i}) == 0 || a:{i} == ' ' || a:{i} == '?' - let i= i + 1 - continue - endif - if accent =~ '\a' - exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i} - else - exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i} - endif - let i= i + 1 - endfor - endfun - " \` \' \^ \" \~ \. \c \H \k \r \u \v - call s:Accents('a','à','á','â','ä','ã',' ',' ',' ','ą','å','ă','ă') - call s:Accents('A','À','Á','Â','Ä','Ã',' ',' ',' ','Ą','Å','Ă','Ă') - call s:Accents('c',' ','ć','ĉ',' ',' ','ċ','ç',' ',' ',' ',' ','č') - call s:Accents('C',' ','Ć','Ĉ',' ',' ','Ċ','Ç',' ',' ',' ',' ','Č') - call s:Accents('d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ď') - call s:Accents('D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ď') - call s:Accents('e','è','é','ê','ë','ẽ','ė','ȩ',' ','ę',' ','ĕ','ě') - call s:Accents('E','È','É','Ê','Ë','Ẽ','Ė','Ȩ',' ','Ę',' ','Ĕ','Ě') - call s:Accents('g',' ',' ',' ',' ',' ','ġ','ģ',' ',' ',' ','ğ',' ') - call s:Accents('G',' ',' ',' ',' ',' ','Ġ','Ģ',' ',' ',' ','Ğ',' ') - call s:Accents('i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ','ĭ',' ') - call s:Accents('I','Ì','Í','Î','Ï','Ĩ','İ',' ',' ',' ',' ','Ĭ',' ') - call s:Accents('l',' ','ĺ','ľ',' ',' ',' ','ļ',' ',' ',' ',' ','ľ') - call s:Accents('L',' ','Ĺ','Ľ',' ',' ',' ','Ļ',' ',' ',' ',' ','Ľ') - call s:Accents('n',' ','ń',' ',' ','ñ',' ','ņ',' ',' ',' ',' ','ň') - call s:Accents('N',' ','Ń',' ',' ','Ñ',' ','Ņ',' ',' ',' ',' ','Ň') - call s:Accents('o','ò','ó','ô','ö','õ','ȯ',' ','ő','ǫ',' ','ŏ',' ') - call s:Accents('O','Ò','Ó','Ô','Ö','Õ','Ȯ',' ','Ő','Ǫ',' ','Ŏ',' ') - call s:Accents('r',' ','ŕ',' ',' ',' ',' ','ŗ',' ',' ',' ',' ','ř') - call s:Accents('R',' ','Ŕ',' ',' ',' ',' ','Ŗ',' ',' ',' ',' ','Ř') - call s:Accents('s',' ','ś','ŝ',' ',' ',' ','ş',' ',' ',' ',' ','š') - call s:Accents('S',' ','Ś','Ŝ',' ',' ',' ','Ş',' ',' ',' ',' ','Š') - call s:Accents('t',' ',' ',' ',' ',' ',' ','ţ',' ',' ',' ',' ','ť') - call s:Accents('T',' ',' ',' ',' ',' ',' ','Ţ',' ',' ',' ',' ','Ť') - call s:Accents('u','ù','ú','û','ü','ũ',' ',' ','ű',' ','ů','ŭ',' ') - call s:Accents('U','Ù','Ú','Û','Ü','Ũ',' ',' ','Ű',' ','Ů','Ŭ',' ') - call s:Accents('w',' ',' ','ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ') - call s:Accents('W',' ',' ','Ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ') - call s:Accents('y','ỳ','ý','ŷ','ÿ','ỹ',' ',' ',' ',' ',' ',' ',' ') - call s:Accents('Y','Ỳ','Ý','Ŷ','Ÿ','Ỹ',' ',' ',' ',' ',' ',' ',' ') - call s:Accents('z',' ','ź',' ',' ',' ','ż',' ',' ',' ',' ',' ','ž') - call s:Accents('Z',' ','Ź',' ',' ',' ','Ż',' ',' ',' ',' ',' ','Ž') - call s:Accents('\\i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ','ĭ',' ') - " \` \' \^ \" \~ \. \c \H \k \r \u \v - delfun s:Accents - syn match texAccent '\\aa\>' conceal cchar=å - syn match texAccent '\\AA\>' conceal cchar=Å - syn match texAccent '\\o\>' conceal cchar=ø - syn match texAccent '\\O\>' conceal cchar=Ø - syn match texLigature '\\AE\>' conceal cchar=Æ - syn match texLigature '\\ae\>' conceal cchar=æ - syn match texLigature '\\oe\>' conceal cchar=œ - syn match texLigature '\\OE\>' conceal cchar=Œ - syn match texLigature '\\ss\>' conceal cchar=ß - endif - endif -endif - -" --------------------------------------------------------------------- -" LaTeX synchronization: {{{1 -syn sync maxlines=200 -syn sync minlines=50 - -syn sync match texSyncStop groupthere NONE "%stopzone\>" - -" Synchronization: {{{1 -" The $..$ and $$..$$ make for impossible sync patterns -" (one can't tell if a "$$" starts or stops a math zone by itself) -" The following grouptheres coupled with minlines above -" help improve the odds of good syncing. -if !exists("tex_no_math") - syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}" - syn sync match texSyncMathZoneA groupthere NONE "\\end{center}" - syn sync match texSyncMathZoneA groupthere NONE "\\end{description}" - syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}" - syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}" - syn sync match texSyncMathZoneA groupthere NONE "\\end{table}" - syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}" - syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>" -endif - -" --------------------------------------------------------------------- -" Highlighting: {{{1 -if did_tex_syntax_inits == 1 - let did_tex_syntax_inits= 2 - " TeX highlighting groups which should share similar highlighting - if !exists("g:tex_no_error") - if !exists("tex_no_math") - HiLink texBadMath texError - HiLink texMathDelimBad texError - HiLink texMathError texError - if !b:tex_stylish - HiLink texOnlyMath texError - endif - endif - HiLink texError Error - endif - - HiLink texCite texRefZone - HiLink texDefCmd texDef - HiLink texDefName texDef - HiLink texDocType texCmdName - HiLink texDocTypeArgs texCmdArgs - HiLink texInputFileOpt texCmdArgs - HiLink texInputCurlies texDelimiter - HiLink texLigature texSpecialChar - if !exists("tex_no_math") - HiLink texMathDelimSet1 texMathDelim - HiLink texMathDelimSet2 texMathDelim - HiLink texMathDelimKey texMathDelim - HiLink texMathMatcher texMath - HiLink texAccent texStatement - HiLink texGreek texStatement - HiLink texSuperscript texStatement - HiLink texSubscript texStatement - HiLink texMathSymbol texStatement - HiLink texMathZoneV texMath - HiLink texMathZoneW texMath - HiLink texMathZoneX texMath - HiLink texMathZoneY texMath - HiLink texMathZoneV texMath - HiLink texMathZoneZ texMath - endif - HiLink texSectionMarker texCmdName - HiLink texSectionName texSection - HiLink texSpaceCode texStatement - HiLink texStyleStatement texStatement - HiLink texTypeSize texType - HiLink texTypeStyle texType - - " Basic TeX highlighting groups - HiLink texCmdArgs Number - HiLink texCmdName Statement - HiLink texComment Comment - HiLink texDef Statement - HiLink texDefParm Special - HiLink texDelimiter Delimiter - HiLink texInput Special - HiLink texInputFile Special - HiLink texLength Number - HiLink texMath Special - HiLink texMathDelim Statement - HiLink texMathOper Operator - HiLink texNewCmd Statement - HiLink texNewEnv Statement - HiLink texOption Number - HiLink texRefZone Special - HiLink texSection PreCondit - HiLink texSpaceCodeChar Special - HiLink texSpecialChar SpecialChar - HiLink texStatement Statement - HiLink texString String - HiLink texTodo Todo - HiLink texType Type - HiLink texZone PreCondit - - delcommand HiLink -endif - -" Current Syntax: {{{1 -unlet b:extfname -let b:current_syntax = "tex" -" vim: ts=8 fdm=marker diff --git a/share/vim/vim73/syntax/tidy.vim b/share/vim/vim73/syntax/tidy.vim deleted file mode 100644 index b23dc3ae..00000000 --- a/share/vim/vim73/syntax/tidy.vim +++ /dev/null @@ -1,162 +0,0 @@ -" Vim syntax file -" Language: HMTL Tidy configuration file ( /etc/tidyrc ~/.tidyrc ) -" Maintainer: Doug Kearns -" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/syntax/tidy.vim -" Last Change: 2005 Oct 06 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if version < 600 - set iskeyword=@,48-57,- -else - setlocal iskeyword=@,48-57,- -endif - -syn match tidyComment "^\s*//.*$" contains=tidyTodo -syn match tidyComment "^\s*#.*$" contains=tidyTodo -syn keyword tidyTodo TODO NOTE FIXME XXX contained - -syn match tidyAssignment "^[a-z0-9-]\+:\s*.*$" contains=tidyOption,@tidyValue,tidyDelimiter -syn match tidyDelimiter ":" contained - -syn match tidyNewTagAssignment "^new-\l\+-tags:\s*.*$" contains=tidyNewTagOption,tidyNewTagDelimiter,tidyNewTagValue,tidyDelimiter -syn match tidyNewTagDelimiter "," contained -syn match tidyNewTagValue "\<\w\+\>" contained - -syn case ignore -syn keyword tidyBoolean t[rue] f[alse] y[es] n[o] contained -syn case match -syn match tidyDoctype "\" contained -" NOTE: use match rather than keyword here so that tidyEncoding 'raw' does not -" always have precedence over tidyOption 'raw' -syn match tidyEncoding "\<\(ascii\|latin0\|latin1\|raw\|utf8\|iso2022\|mac\|utf16le\|utf16be\|utf16\|win1252\|ibm858\|big5\|shiftjis\)\>" contained -syn match tidyNewline "\<\(LF\|CRLF\|CR\)\>" -syn match tidyNumber "\<\d\+\>" contained -syn match tidyRepeat "\" contained -syn region tidyString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained oneline -syn region tidyString start=+'+ skip=+\\\\\|\\'+ end=+'+ contained oneline -syn cluster tidyValue contains=tidyBoolean,tidyDoctype,tidyEncoding,tidyNewline,tidyNumber,tidyRepeat,tidyString - -syn match tidyOption "^accessibility-check" contained -syn match tidyOption "^add-xml-decl" contained -syn match tidyOption "^add-xml-pi" contained -syn match tidyOption "^add-xml-space" contained -syn match tidyOption "^alt-text" contained -syn match tidyOption "^ascii-chars" contained -syn match tidyOption "^assume-xml-procins" contained -syn match tidyOption "^bare" contained -syn match tidyOption "^break-before-br" contained -syn match tidyOption "^char-encoding" contained -syn match tidyOption "^clean" contained -syn match tidyOption "^css-prefix" contained -syn match tidyOption "^doctype" contained -syn match tidyOption "^doctype-mode" contained -syn match tidyOption "^drop-empty-paras" contained -syn match tidyOption "^drop-font-tags" contained -syn match tidyOption "^drop-proprietary-attributes" contained -syn match tidyOption "^enclose-block-text" contained -syn match tidyOption "^enclose-text" contained -syn match tidyOption "^error-file" contained -syn match tidyOption "^escape-cdata" contained -syn match tidyOption "^fix-backslash" contained -syn match tidyOption "^fix-bad-comments" contained -syn match tidyOption "^fix-uri" contained -syn match tidyOption "^force-output" contained -syn match tidyOption "^gnu-emacs" contained -syn match tidyOption "^gnu-emacs-file" contained -syn match tidyOption "^hide-comments" contained -syn match tidyOption "^hide-endtags" contained -syn match tidyOption "^indent" contained -syn match tidyOption "^indent-attributes" contained -syn match tidyOption "^indent-cdata" contained -syn match tidyOption "^indent-spaces" contained -syn match tidyOption "^input-encoding" contained -syn match tidyOption "^input-xml" contained -syn match tidyOption "^join-classes" contained -syn match tidyOption "^join-styles" contained -syn match tidyOption "^keep-time" contained -syn match tidyOption "^language" contained -syn match tidyOption "^literal-attributes" contained -syn match tidyOption "^logical-emphasis" contained -syn match tidyOption "^lower-literals" contained -syn match tidyOption "^markup" contained -syn match tidyOption "^merge-divs" contained -syn match tidyOption "^ncr" contained -syn match tidyOption "^newline" contained -syn match tidyOption "^numeric-entities" contained -syn match tidyOption "^output-bom" contained -syn match tidyOption "^output-encoding" contained -syn match tidyOption "^output-file" contained -syn match tidyOption "^output-html" contained -syn match tidyOption "^output-xhtml" contained -syn match tidyOption "^output-xml" contained -syn match tidyOption "^punctuation-wrap" contained -syn match tidyOption "^quiet" contained -syn match tidyOption "^quote-ampersand" contained -syn match tidyOption "^quote-marks" contained -syn match tidyOption "^quote-nbsp" contained -syn match tidyOption "^raw" contained -syn match tidyOption "^repeated-attributes" contained -syn match tidyOption "^replace-color" contained -syn match tidyOption "^show-body-only" contained -syn match tidyOption "^show-errors" contained -syn match tidyOption "^show-warnings" contained -syn match tidyOption "^slide-style" contained -syn match tidyOption "^split" contained -syn match tidyOption "^tab-size" contained -syn match tidyOption "^tidy-mark" contained -syn match tidyOption "^uppercase-attributes" contained -syn match tidyOption "^uppercase-tags" contained -syn match tidyOption "^word-2000" contained -syn match tidyOption "^wrap" contained -syn match tidyOption "^wrap-asp" contained -syn match tidyOption "^wrap-attributes" contained -syn match tidyOption "^wrap-jste" contained -syn match tidyOption "^wrap-php" contained -syn match tidyOption "^wrap-script-literals" contained -syn match tidyOption "^wrap-sections" contained -syn match tidyOption "^write-back" contained -syn match tidyOption "^vertical-space" contained -syn match tidyNewTagOption "^new-blocklevel-tags" contained -syn match tidyNewTagOption "^new-empty-tags" contained -syn match tidyNewTagOption "^new-inline-tags" contained -syn match tidyNewTagOption "^new-pre-tags" contained - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_tidy_syn_inits") - if version < 508 - let did_tidy_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink tidyBoolean Boolean - HiLink tidyComment Comment - HiLink tidyDelimiter Special - HiLink tidyDoctype Constant - HiLink tidyEncoding Constant - HiLink tidyNewline Constant - HiLink tidyNewTagDelimiter Special - HiLink tidyNewTagOption Identifier - HiLink tidyNewTagValue Constant - HiLink tidyNumber Number - HiLink tidyOption Identifier - HiLink tidyRepeat Constant - HiLink tidyString String - HiLink tidyTodo Todo - - delcommand HiLink -endif - -let b:current_syntax = "tidy" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/tsalt.vim b/share/vim/vim73/syntax/tsalt.vim deleted file mode 100644 index 56f17558..00000000 --- a/share/vim/vim73/syntax/tsalt.vim +++ /dev/null @@ -1,214 +0,0 @@ -" Vim syntax file -" Language: Telix (Modem Comm Program) SALT Script -" Maintainer: Sean M. McKee -" Last Change: 2001 May 09 -" Version Info: @(#)tsalt.vim 1.5 97/12/16 08:11:15 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" turn case matching off -syn case ignore - -"FUNCTIONS -" Character Handling Functions -syn keyword tsaltFunction IsAscii IsAlNum IsAlpha IsCntrl IsDigit -syn keyword tsaltFunction IsLower IsUpper ToLower ToUpper - -" Connect Device Operations -syn keyword tsaltFunction Carrier cInp_Cnt cGetC cGetCT cPutC cPutN -syn keyword tsaltFunction cPutS cPutS_TR FlushBuf Get_Baud -syn keyword tsaltFunction Get_DataB Get_Port Get_StopB Hangup -syn keyword tsaltFunction KillConnectDevice MakeConnectDevice -syn keyword tsaltFunction Send_Brk Set_ConnectDevice Set_Port - -" File Input/Output Operations -syn keyword tsaltFunction fClearErr fClose fDelete fError fEOF fFlush -syn keyword tsaltFunction fGetC fGetS FileAttr FileFind FileSize -syn keyword tsaltFunction FileTime fnStrip fOpen fPutC fPutS fRead -syn keyword tsaltFunction fRename fSeek fTell fWrite - -" File Transfers and Logs -syn keyword tsaltFunction Capture Capture_Stat Printer Receive Send -syn keyword tsaltFunction Set_DefProt UsageLog Usage_Stat UStamp - -" Input String Matching -syn keyword tsaltFunction Track Track_AddChr Track_Free Track_Hit -syn keyword tsaltFunction WaitFor - -" Keyboard Operations -syn keyword tsaltFunction InKey InKeyW KeyGet KeyLoad KeySave KeySet - -" Miscellaneous Functions -syn keyword tsaltFunction ChatMode Dos Dial DosFunction ExitTelix -syn keyword tsaltFunction GetEnv GetFon HelpScreen LoadFon NewDir -syn keyword tsaltFunction Randon Redial RedirectDOS Run -syn keyword tsaltFunction Set_Terminal Show_Directory TelixVersion -syn keyword tsaltFunction Terminal TransTab Update_Term - -" Script Management -syn keyword tsaltFunction ArgCount Call CallD CompileScript GetRunPath -syn keyword tsaltFunction Is_Loaded Load_Scr ScriptVersion -syn keyword tsaltFunction TelixForWindows Unload_Scr - -" Sound Functions -syn keyword tsaltFunction Alarm PlayWave Tone - -" String Handling -syn keyword tsaltFunction CopyChrs CopyStr DelChrs GetS GetSXY -syn keyword tsaltFunction InputBox InsChrs ItoS SetChr StoI StrCat -syn keyword tsaltFunction StrChr StrCompI StrLen StrLower StrMaxLen -syn keyword tsaltFunction StrPos StrPosI StrUpper SubChr SubChrs -syn keyword tsaltFunction SubStr - -" Time, Date, and Timer Operations -syn keyword tsaltFunction CurTime Date Delay Delay_Scr Get_OnlineTime -syn keyword tsaltFunction tDay tHour tMin tMonth tSec tYear Time -syn keyword tsaltFunction Time_Up Timer_Free Time_Restart -syn keyword tsaltFunction Time_Start Time_Total - -" Video Operations -syn keyword tsaltFunction Box CNewLine Cursor_OnOff Clear_Scr -syn keyword tsaltFunction GetTermHeight GetTermWidth GetX GetY -syn keyword tsaltFunction GotoXY MsgBox NewLine PrintC PrintC_Trm -syn keyword tsaltFunction PrintN PrintN_Trm PrintS PrintS_Trm -syn keyword tsaltFunction PrintSC PRintSC_Trm -syn keyword tsaltFunction PStrA PStrAXY Scroll Status_Wind vGetChr -syn keyword tsaltFunction vGetChrs vGetChrsA vPutChr vPutChrs -syn keyword tsaltFunction vPutChrsA vRstrArea vSaveArea - -" Dynamic Data Exchange (DDE) Operations -syn keyword tsaltFunction DDEExecute DDEInitate DDEPoke DDERequest -syn keyword tsaltFunction DDETerminate DDETerminateAll -"END FUNCTIONS - -"PREDEFINED VARAIABLES -syn keyword tsaltSysVar _add_lf _alarm_on _answerback_str _asc_rcrtrans -syn keyword tsaltSysVar _asc_remabort _asc_rlftrans _asc_scpacing -syn keyword tsaltSysVar _asc_scrtrans _asc_secho _asc_slpacing -syn keyword tsaltSysVar _asc_spacechr _asc_striph _back_color -syn keyword tsaltSysVar _capture_fname _connect_str _dest_bs -syn keyword tsaltSysVar _dial_pause _dial_time _dial_post -syn keyword tsaltSysVar _dial_pref1 _dial_pref2 _dial_pref3 -syn keyword tsaltSysVar _dial_pref4 _dir_prog _down_dir -syn keyword tsaltSysVar _entry_bbstype _entry_comment _entry_enum -syn keyword tsaltSysVar _entry_name _entry_num _entry_logonname -syn keyword tsaltSysVar _entry_pass _fore_color _image_file -syn keyword tsaltSysVar _local_echo _mdm_hang_str _mdm_init_str -syn keyword tsaltSysVar _no_connect1 _no_connect2 _no_connect3 -syn keyword tsaltSysVar _no_connect4 _no_connect5 _redial_stop -syn keyword tsaltSysVar _scr_chk_key _script_dir _sound_on -syn keyword tsaltSysVar _strip_high _swap_bs _telix_dir _up_dir -syn keyword tsaltSysVar _usage_fname _zmodauto _zmod_rcrash -syn keyword tsaltSysVar _zmod_scrash -"END PREDEFINED VARAIABLES - -"TYPE -syn keyword tsaltType str int -"END TYPE - -"KEYWORDS -syn keyword tsaltStatement goto break return continue -syn keyword tsaltConditional if then else -syn keyword tsaltRepeat while for do -"END KEYWORDS - -syn keyword tsaltTodo contained TODO - -" the rest is pretty close to C ----------------------------------------- - -" String and Character constants -" Highlight special characters (those which have a backslash) differently -syn match tsaltSpecial contained "\^\d\d\d\|\^." -syn region tsaltString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tsaltSpecial -syn match tsaltCharacter "'[^\\]'" -syn match tsaltSpecialCharacter "'\\.'" - -"catch errors caused by wrong parenthesis -syn region tsaltParen transparent start='(' end=')' contains=ALLBUT,tsaltParenError,tsaltIncluded,tsaltSpecial,tsaltTodo -syn match tsaltParenError ")" -syn match tsaltInParen contained "[{}]" - -hi link tsaltParenError tsaltError -hi link tsaltInParen tsaltError - -"integer number, or floating point number without a dot and with "f". -syn match tsaltNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" -"floating point number, with dot, optional exponent -syn match tsaltFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" -"floating point number, starting with a dot, optional exponent -syn match tsaltFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" -"floating point number, without dot, with exponent -syn match tsaltFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" -"hex number -syn match tsaltNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>" -"syn match cIdentifier "\<[a-z_][a-z0-9_]*\>" - -syn region tsaltComment start="/\*" end="\*/" contains=cTodo -syn match tsaltComment "//.*" contains=cTodo -syn match tsaltCommentError "\*/" - -syn region tsaltPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tsaltComment,tsaltString,tsaltCharacter,tsaltNumber,tsaltCommentError -syn region tsaltIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn match tsaltIncluded contained "<[^>]*>" -syn match tsaltInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=tsaltIncluded -"syn match TelixSalyLineSkip "\\$" -syn region tsaltDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tsaltPreCondit,tsaltIncluded,tsaltInclude,tsaltDefine,tsaltInParen -syn region tsaltPreProc start="^[ \t]*#[ \t]*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tsaltPreCondit,tsaltIncluded,tsaltInclude,tsaltDefine,tsaltInParen - -" Highlight User Labels -syn region tsaltMulti transparent start='?' end=':' contains=ALLBUT,tsaltIncluded,tsaltSpecial,tsaltTodo - -syn sync ccomment tsaltComment - - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_tsalt_syntax_inits") - if version < 508 - let did_tsalt_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink tsaltFunction Statement - HiLink tsaltSysVar Type - "HiLink tsaltLibFunc UserDefFunc - "HiLink tsaltConstants Type - "HiLink tsaltFuncArg Type - "HiLink tsaltOperator Operator - "HiLink tsaltLabel Label - "HiLink tsaltUserLabel Label - HiLink tsaltConditional Conditional - HiLink tsaltRepeat Repeat - HiLink tsaltCharacter SpecialChar - HiLink tsaltSpecialCharacter SpecialChar - HiLink tsaltNumber Number - HiLink tsaltFloat Float - HiLink tsaltCommentError tsaltError - HiLink tsaltInclude Include - HiLink tsaltPreProc PreProc - HiLink tsaltDefine Macro - HiLink tsaltIncluded tsaltString - HiLink tsaltError Error - HiLink tsaltStatement Statement - HiLink tsaltPreCondit PreCondit - HiLink tsaltType Type - HiLink tsaltString String - HiLink tsaltComment Comment - HiLink tsaltSpecial Special - HiLink tsaltTodo Todo - - delcommand HiLink -endif - -let b:current_syntax = "tsalt" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/uil.vim b/share/vim/vim73/syntax/uil.vim deleted file mode 100644 index a4399844..00000000 --- a/share/vim/vim73/syntax/uil.vim +++ /dev/null @@ -1,86 +0,0 @@ -" Vim syntax file -" Language: Motif UIL (User Interface Language) -" Maintainer: Thomas Koehler -" Last Change: 2009 Dec 04 -" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/uil.vim - - -" Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" A bunch of useful keywords -syn keyword uilType arguments callbacks color -syn keyword uilType compound_string controls end -syn keyword uilType exported file include -syn keyword uilType module object procedure -syn keyword uilType user_defined xbitmapfile - -syn keyword uilTodo contained TODO - -" String and Character contstants -" Highlight special characters (those which have a backslash) differently -syn match uilSpecial contained "\\\d\d\d\|\\." -syn region uilString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=uilSpecial -syn match uilCharacter "'[^\\]'" -syn region uilString start=+'+ skip=+\\\\\|\\"+ end=+'+ contains=uilSpecial -syn match uilSpecialCharacter "'\\.'" -syn match uilSpecialStatement "Xm[^ =(){}]*" -syn match uilSpecialFunction "MrmNcreateCallback" -syn match uilRessource "XmN[^ =(){}]*" - -syn match uilNumber "-\=\<\d*\.\=\d\+\(e\=f\=\|[uU]\=[lL]\=\)\>" -syn match uilNumber "0[xX][0-9a-fA-F]\+\>" - -syn region uilComment start="/\*" end="\*/" contains=uilTodo -syn match uilComment "!.*" contains=uilTodo -syn match uilCommentError "\*/" - -syn region uilPreCondit start="^#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=uilComment,uilString,uilCharacter,uilNumber,uilCommentError -syn match uilIncluded contained "<[^>]*>" -syn match uilInclude "^#\s*include\s\+." contains=uilString,uilIncluded -syn match uilLineSkip "\\$" -syn region uilDefine start="^#\s*\(define\>\|undef\>\)" end="$" contains=uilLineSkip,uilComment,uilString,uilCharacter,uilNumber,uilCommentError - -syn sync ccomment uilComment - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_uil_syn_inits") - if version < 508 - let did_uil_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " The default highlighting. - HiLink uilCharacter uilString - HiLink uilSpecialCharacter uilSpecial - HiLink uilNumber uilString - HiLink uilCommentError uilError - HiLink uilInclude uilPreCondit - HiLink uilDefine uilPreCondit - HiLink uilIncluded uilString - HiLink uilSpecialFunction uilRessource - HiLink uilRessource Identifier - HiLink uilSpecialStatement Keyword - HiLink uilError Error - HiLink uilPreCondit PreCondit - HiLink uilType Type - HiLink uilString String - HiLink uilComment Comment - HiLink uilSpecial Special - HiLink uilTodo Todo - - delcommand HiLink -endif - - -let b:current_syntax = "uil" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/valgrind.vim b/share/vim/vim73/syntax/valgrind.vim deleted file mode 100644 index f23b7924..00000000 --- a/share/vim/vim73/syntax/valgrind.vim +++ /dev/null @@ -1,99 +0,0 @@ -" Vim syntax file -" Language: Valgrind Memory Debugger Output -" Maintainer: Roger Luethi -" Program URL: http://devel-home.kde.org/~sewardj/ -" Last Change: 2002 Apr 07 -" -" Notes: mostly based on strace.vim and xml.vim - -" Quit when a syntax file was already loaded -if exists("b:current_syntax") - finish -endif - -syn case match -syn sync minlines=50 - -syn match valgrindSpecLine "^[+-]\{2}\d\+[+-]\{2}.*$" - -syn region valgrindRegion - \ start=+^==\z(\d\+\)== \w.*$+ - \ skip=+^==\z1==\( \| .*\)$+ - \ end=+^+ - \ fold - \ keepend - \ contains=valgrindPidChunk,valgrindLine - -syn region valgrindPidChunk - \ start=+\(^==\)\@<=+ - \ end=+\(==\)\@=+ - \ contained - \ contains=valgrindPid0,valgrindPid1,valgrindPid2,valgrindPid3,valgrindPid4,valgrindPid5,valgrindPid6,valgrindPid7,valgrindPid8,valgrindPid9 - \ keepend - -syn match valgrindPid0 "\d\+0=" contained -syn match valgrindPid1 "\d\+1=" contained -syn match valgrindPid2 "\d\+2=" contained -syn match valgrindPid3 "\d\+3=" contained -syn match valgrindPid4 "\d\+4=" contained -syn match valgrindPid5 "\d\+5=" contained -syn match valgrindPid6 "\d\+6=" contained -syn match valgrindPid7 "\d\+7=" contained -syn match valgrindPid8 "\d\+8=" contained -syn match valgrindPid9 "\d\+9=" contained - -syn region valgrindLine - \ start=+\(^==\d\+== \)\@<=+ - \ end=+$+ - \ keepend - \ contained - \ contains=valgrindOptions,valgrindMsg,valgrindLoc - -syn match valgrindOptions "[ ]\{3}-.*$" contained - -syn match valgrindMsg "\S.*$" contained - \ contains=valgrindError,valgrindNote,valgrindSummary -syn match valgrindError "\(Invalid\|\d\+ errors\|.* definitely lost\).*$" contained -syn match valgrindNote ".*still reachable.*" contained -syn match valgrindSummary ".*SUMMARY:" contained - -syn match valgrindLoc "\s\+\(by\|at\|Address\).*$" contained - \ contains=valgrindAt,valgrindAddr,valgrindFunc,valgrindBin,valgrindSrc -syn match valgrindAt "at\s\@=" contained -syn match valgrindAddr "\(\W\)\@<=0x\x\+" contained -syn match valgrindFunc "\(: \)\@<=\w\+" contained -syn match valgrindBin "\((\(with\|\)in \)\@<=\S\+\()\)\@=" contained -syn match valgrindSrc "\((\)\@<=.*:\d\+\()\)\@=" contained - -" Define the default highlighting - -hi def link valgrindSpecLine Type -"hi def link valgrindRegion Special - -hi def link valgrindPid0 Special -hi def link valgrindPid1 Comment -hi def link valgrindPid2 Type -hi def link valgrindPid3 Constant -hi def link valgrindPid4 Number -hi def link valgrindPid5 Identifier -hi def link valgrindPid6 Statement -hi def link valgrindPid7 Error -hi def link valgrindPid8 LineNr -hi def link valgrindPid9 Normal -"hi def link valgrindLine Special - -hi def link valgrindOptions Type -"hi def link valgrindMsg Special -"hi def link valgrindLoc Special - -hi def link valgrindError Special -hi def link valgrindNote Comment -hi def link valgrindSummary Type - -hi def link valgrindAt Special -hi def link valgrindAddr Number -hi def link valgrindFunc Type -hi def link valgrindBin Comment -hi def link valgrindSrc Statement - -let b:current_syntax = "valgrind" diff --git a/share/vim/vim73/syntax/verilog.vim b/share/vim/vim73/syntax/verilog.vim deleted file mode 100644 index 01f312f9..00000000 --- a/share/vim/vim73/syntax/verilog.vim +++ /dev/null @@ -1,134 +0,0 @@ -" Vim syntax file -" Language: Verilog -" Maintainer: Mun Johl -" Last Update: Fri Oct 13 11:44:32 PDT 2006 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Set the local value of the 'iskeyword' option -if version >= 600 - setlocal iskeyword=@,48-57,_,192-255 -else - set iskeyword=@,48-57,_,192-255 -endif - -" A bunch of useful Verilog keywords - -syn keyword verilogStatement always and assign automatic buf -syn keyword verilogStatement bufif0 bufif1 cell cmos -syn keyword verilogStatement config deassign defparam design -syn keyword verilogStatement disable edge endconfig -syn keyword verilogStatement endfunction endgenerate endmodule -syn keyword verilogStatement endprimitive endspecify endtable endtask -syn keyword verilogStatement event force function -syn keyword verilogStatement generate genvar highz0 highz1 ifnone -syn keyword verilogStatement incdir include initial inout input -syn keyword verilogStatement instance integer large liblist -syn keyword verilogStatement library localparam macromodule medium -syn keyword verilogStatement module nand negedge nmos nor -syn keyword verilogStatement noshowcancelled not notif0 notif1 or -syn keyword verilogStatement output parameter pmos posedge primitive -syn keyword verilogStatement pull0 pull1 pulldown pullup -syn keyword verilogStatement pulsestyle_onevent pulsestyle_ondetect -syn keyword verilogStatement rcmos real realtime reg release -syn keyword verilogStatement rnmos rpmos rtran rtranif0 rtranif1 -syn keyword verilogStatement scalared showcancelled signed small -syn keyword verilogStatement specify specparam strong0 strong1 -syn keyword verilogStatement supply0 supply1 table task time tran -syn keyword verilogStatement tranif0 tranif1 tri tri0 tri1 triand -syn keyword verilogStatement trior trireg unsigned use vectored wait -syn keyword verilogStatement wand weak0 weak1 wire wor xnor xor -syn keyword verilogLabel begin end fork join -syn keyword verilogConditional if else case casex casez default endcase -syn keyword verilogRepeat forever repeat while for - -syn keyword verilogTodo contained TODO - -syn match verilogOperator "[&|~>" -syn match verilogGlobal "`celldefine" -syn match verilogGlobal "`default_nettype" -syn match verilogGlobal "`define" -syn match verilogGlobal "`else" -syn match verilogGlobal "`elsif" -syn match verilogGlobal "`endcelldefine" -syn match verilogGlobal "`endif" -syn match verilogGlobal "`ifdef" -syn match verilogGlobal "`ifndef" -syn match verilogGlobal "`include" -syn match verilogGlobal "`line" -syn match verilogGlobal "`nounconnected_drive" -syn match verilogGlobal "`resetall" -syn match verilogGlobal "`timescale" -syn match verilogGlobal "`unconnected_drive" -syn match verilogGlobal "`undef" -syn match verilogGlobal "$[a-zA-Z0-9_]\+\>" - -syn match verilogConstant "\<[A-Z][A-Z0-9_]\+\>" - -syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[bB]\s*[0-1_xXzZ?]\+\>" -syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[oO]\s*[0-7_xXzZ?]\+\>" -syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[dD]\s*[0-9_xXzZ?]\+\>" -syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[hH]\s*[0-9a-fA-F_xXzZ?]\+\>" -syn match verilogNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>" - -syn region verilogString start=+"+ skip=+\\"+ end=+"+ contains=verilogEscape,@Spell -syn match verilogEscape +\\[nt"\\]+ contained -syn match verilogEscape "\\\o\o\=\o\=" contained - -" Directives -syn match verilogDirective "//\s*synopsys\>.*$" -syn region verilogDirective start="/\*\s*synopsys\>" end="\*/" -syn region verilogDirective start="//\s*synopsys dc_script_begin\>" end="//\s*synopsys dc_script_end\>" - -syn match verilogDirective "//\s*\$s\>.*$" -syn region verilogDirective start="/\*\s*\$s\>" end="\*/" -syn region verilogDirective start="//\s*\$s dc_script_begin\>" end="//\s*\$s dc_script_end\>" - -"Modify the following as needed. The trade-off is performance versus -"functionality. -syn sync minlines=50 - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_verilog_syn_inits") - if version < 508 - let did_verilog_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " The default highlighting. - HiLink verilogCharacter Character - HiLink verilogConditional Conditional - HiLink verilogRepeat Repeat - HiLink verilogString String - HiLink verilogTodo Todo - HiLink verilogComment Comment - HiLink verilogConstant Constant - HiLink verilogLabel Label - HiLink verilogNumber Number - HiLink verilogOperator Special - HiLink verilogStatement Statement - HiLink verilogGlobal Define - HiLink verilogDirective SpecialComment - HiLink verilogEscape Special - - delcommand HiLink -endif - -let b:current_syntax = "verilog" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/vhdl.vim b/share/vim/vim73/syntax/vhdl.vim deleted file mode 100644 index 4ac3b6d8..00000000 --- a/share/vim/vim73/syntax/vhdl.vim +++ /dev/null @@ -1,184 +0,0 @@ -" Vim syntax file -" Language: VHDL -" Maintainer: Czo -" Credits: Stephan Hegel -" $Id: vhdl.vim,v 1.1 2004/06/13 15:34:56 vimboss Exp $ - -" VHSIC Hardware Description Language -" Very High Scale Integrated Circuit - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" This is not VHDL. I use the C-Preprocessor cpp to generate different binaries -" from one VHDL source file. Unfortunately there is no preprocessor for VHDL -" available. If you don't like this, please remove the following lines. -syn match cDefine "^#ifdef[ ]\+[A-Za-z_]\+" -syn match cDefine "^#endif" - -" case is not significant -syn case ignore - -" VHDL keywords -syn keyword vhdlStatement access after alias all assert -syn keyword vhdlStatement architecture array attribute -syn keyword vhdlStatement begin block body buffer bus -syn keyword vhdlStatement case component configuration constant -syn keyword vhdlStatement disconnect downto -syn keyword vhdlStatement elsif end entity exit -syn keyword vhdlStatement file for function -syn keyword vhdlStatement generate generic group guarded -syn keyword vhdlStatement impure in inertial inout is -syn keyword vhdlStatement label library linkage literal loop -syn keyword vhdlStatement map -syn keyword vhdlStatement new next null -syn keyword vhdlStatement of on open others out -syn keyword vhdlStatement package port postponed procedure process pure -syn keyword vhdlStatement range record register reject report return -syn keyword vhdlStatement select severity signal shared -syn keyword vhdlStatement subtype -syn keyword vhdlStatement then to transport type -syn keyword vhdlStatement unaffected units until use -syn keyword vhdlStatement variable wait when while with -syn keyword vhdlStatement note warning error failure - -" Special match for "if" and "else" since "else if" shouldn't be highlighted. -" The right keyword is "elsif" -syn match vhdlStatement "\<\(if\|else\)\>" -syn match vhdlNone "\$" -syn match vhdlNone "\\s" - -" Predifined VHDL types -syn keyword vhdlType bit bit_vector -syn keyword vhdlType character boolean integer real time -syn keyword vhdlType string severity_level -" Predifined standard ieee VHDL types -syn keyword vhdlType positive natural signed unsigned -syn keyword vhdlType line text -syn keyword vhdlType std_logic std_logic_vector -syn keyword vhdlType std_ulogic std_ulogic_vector -" Predefined non standard VHDL types for Mentor Graphics Sys1076/QuickHDL -syn keyword vhdlType qsim_state qsim_state_vector -syn keyword vhdlType qsim_12state qsim_12state_vector -syn keyword vhdlType qsim_strength -" Predefined non standard VHDL types for Alliance VLSI CAD -syn keyword vhdlType mux_bit mux_vector reg_bit reg_vector wor_bit wor_vector - -" array attributes -syn match vhdlAttribute "\'high" -syn match vhdlAttribute "\'left" -syn match vhdlAttribute "\'length" -syn match vhdlAttribute "\'low" -syn match vhdlAttribute "\'range" -syn match vhdlAttribute "\'reverse_range" -syn match vhdlAttribute "\'right" -syn match vhdlAttribute "\'ascending" -" block attributes -syn match vhdlAttribute "\'behaviour" -syn match vhdlAttribute "\'structure" -syn match vhdlAttribute "\'simple_name" -syn match vhdlAttribute "\'instance_name" -syn match vhdlAttribute "\'path_name" -syn match vhdlAttribute "\'foreign" -" signal attribute -syn match vhdlAttribute "\'active" -syn match vhdlAttribute "\'delayed" -syn match vhdlAttribute "\'event" -syn match vhdlAttribute "\'last_active" -syn match vhdlAttribute "\'last_event" -syn match vhdlAttribute "\'last_value" -syn match vhdlAttribute "\'quiet" -syn match vhdlAttribute "\'stable" -syn match vhdlAttribute "\'transaction" -syn match vhdlAttribute "\'driving" -syn match vhdlAttribute "\'driving_value" -" type attributes -syn match vhdlAttribute "\'base" -syn match vhdlAttribute "\'high" -syn match vhdlAttribute "\'left" -syn match vhdlAttribute "\'leftof" -syn match vhdlAttribute "\'low" -syn match vhdlAttribute "\'pos" -syn match vhdlAttribute "\'pred" -syn match vhdlAttribute "\'rightof" -syn match vhdlAttribute "\'succ" -syn match vhdlAttribute "\'val" -syn match vhdlAttribute "\'image" -syn match vhdlAttribute "\'value" - -syn keyword vhdlBoolean true false - -" for this vector values case is significant -syn case match -" Values for standard VHDL types -syn match vhdlVector "\'[0L1HXWZU\-\?]\'" -" Values for non standard VHDL types qsim_12state for Mentor Graphics Sys1076/QuickHDL -syn keyword vhdlVector S0S S1S SXS S0R S1R SXR S0Z S1Z SXZ S0I S1I SXI -syn case ignore - -syn match vhdlVector "B\"[01_]\+\"" -syn match vhdlVector "O\"[0-7_]\+\"" -syn match vhdlVector "X\"[0-9a-f_]\+\"" -syn match vhdlCharacter "'.'" -syn region vhdlString start=+"+ end=+"+ - -" floating numbers -syn match vhdlNumber "-\=\<\d\+\.\d\+\(E[+\-]\=\d\+\)\>" -syn match vhdlNumber "-\=\<\d\+\.\d\+\>" -syn match vhdlNumber "0*2#[01_]\+\.[01_]\+#\(E[+\-]\=\d\+\)\=" -syn match vhdlNumber "0*16#[0-9a-f_]\+\.[0-9a-f_]\+#\(E[+\-]\=\d\+\)\=" -" integer numbers -syn match vhdlNumber "-\=\<\d\+\(E[+\-]\=\d\+\)\>" -syn match vhdlNumber "-\=\<\d\+\>" -syn match vhdlNumber "0*2#[01_]\+#\(E[+\-]\=\d\+\)\=" -syn match vhdlNumber "0*16#[0-9a-f_]\+#\(E[+\-]\=\d\+\)\=" -" operators -syn keyword vhdlOperator and nand or nor xor xnor -syn keyword vhdlOperator rol ror sla sll sra srl -syn keyword vhdlOperator mod rem abs not -syn match vhdlOperator "[&><=:+\-*\/|]" -syn match vhdlSpecial "[().,;]" -" time -syn match vhdlTime "\<\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>" -syn match vhdlTime "\<\d\+\.\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>" - -syn match vhdlComment "--.*$" -" syn match vhdlGlobal "[\'$#~!%@?\^\[\]{}\\]" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_vhdl_syntax_inits") - if version < 508 - let did_vhdl_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink cDefine PreProc - HiLink vhdlSpecial Special - HiLink vhdlStatement Statement - HiLink vhdlCharacter String - HiLink vhdlString String - HiLink vhdlVector String - HiLink vhdlBoolean String - HiLink vhdlComment Comment - HiLink vhdlNumber String - HiLink vhdlTime String - HiLink vhdlType Type - HiLink vhdlOperator Type - HiLink vhdlGlobal Error - HiLink vhdlAttribute Type - - delcommand HiLink -endif - -let b:current_syntax = "vhdl" - -" vim: ts=8 diff --git a/share/vim/vim73/syntax/vim.vim b/share/vim/vim73/syntax/vim.vim deleted file mode 100644 index d94d1801..00000000 --- a/share/vim/vim73/syntax/vim.vim +++ /dev/null @@ -1,870 +0,0 @@ -" Vim syntax file -" Language: Vim 7.3 script -" Maintainer: Dr. Charles E. Campbell, Jr. -" Last Change: August 04, 2010 -" Version: 7.3-04 -" Automatically generated keyword lists: {{{1 - -" Quit when a syntax file was already loaded {{{2 -if exists("b:current_syntax") - finish -endif - -" vimTodo: contains common special-notices for comments {{{2 -" Use the vimCommentGroup cluster to add your own. -syn keyword vimTodo contained COMBAK FIXME TODO XXX -syn cluster vimCommentGroup contains=vimTodo,@Spell - -" regular vim commands {{{2 -syn keyword vimCommand contained abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] endt[ry] exi[t] fina[lly] fix[del] foldd[oopen] go[to] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] l[ist] lmak[e] lN[ext] loc[kmarks] lpf[ile] lt[ag] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] new noh[lsearch] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] rundo san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] sme sni[ff] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] uns[ilent] vert[ical] vi[sual] wa[ll] winp[os] wp[revious] ws[verb] xa[ll] xmenu xnoremenu -syn keyword vimCommand contained abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endw[hile] f[ile] fin[d] fo[ld] foldo[pen] gr[ep] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] ll lmapc[lear] lnf[ile] lockv[ar] lp[revious] lua lvimgrepa[dd] marks mks[ession] mod[e] nbc[lose] n[ext] nu[mber] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] smenu sno[magic] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] up[date] vie[w] vmapc[lear] wh[ile] win[size] wq wundo x[it] XMLent xunme -syn keyword vimCommand contained al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] ene[w] files fini[sh] foldc[lose] for grepa[dd] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] lla[st] lnew[er] lNf[ile] lol[der] lr[ewind] luado lw[indow] mat[ch] mksp[ell] m[ove] nb[key] N[ext] ol[dfiles] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] sn[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] verb[ose] vim[grep] vne[w] winc[md] wn[ext] wqa[ll] wv[iminfo] xmapc[lear] XMLns xunmenu -syn keyword vimCommand contained arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ex filetype fir[st] folddoc[losed] fu[nction] ha[rdcopy] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lli[st] lne[xt] lo[adview] lop[en] ls luafile mak[e] menut[ranslate] mkvie[w] mzf[ile] nbs[tart] nmapc[lear] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sN[ext] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] ve[rsion] vimgrepa[dd] vs[plit] windo wN[ext] w[rite] X xme xnoreme y[ank] -syn keyword vimCommand contained argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif] -syn match vimCommand contained "\
'^ - are used to follow the directory changes during the make process, - providing in the part, a relative (if possible) directory - path to the erroneous file. - - -1) GCC: - Recognized lines are of the format: - - ^In file included from ::^ - Line following this one is used as - is always 'e' (error) - is always '0' - - - ^::^ - is always 'e' (error) - is always '0' - - -2) AIX: - Recognized lines are of the format: - - ^"", line .: <> () ", - - -3) HPUX: - Recognized lines are of the format: - - ^cc: "", line : : ^ - is always '0' - - -4) SOLARIS: - Recognized lines are of the format: - - ^"", line : warning: ^ - This assumes is "W" - is always '0' - - - ^"", line : ^ - This assumes is "E" - is always '0' - - -5) ATT / NCR: - Recognized lines are of the format: - - ^ "",L/C<>:^ - or - - ^ "",L/C:^ - Following lines beginning with a pipe (|) are continuation - lines, and are therefore appended to the - - - ^ "",L:^ - is '0' - Following lines beginning with a pipe (|) are continuation - lines, and are therefore appended to the - - -6) SGI-IRIX: - Recognized lines are of the format: - - ^cfe: : : : ^ - or - ^cfe: : , line : ^ - Following lines beginning with a dash (-) are "column-bar" - that end with a caret in the column of the error. These lines - are analyzed to generate the . diff --git a/share/vim/vim73/tools/efm_perl.pl b/share/vim/vim73/tools/efm_perl.pl deleted file mode 100644 index 570d6e76..00000000 --- a/share/vim/vim73/tools/efm_perl.pl +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/perl -w - -# vimparse.pl - Reformats the error messages of the Perl interpreter for use -# with the quickfix mode of Vim -# -# Copyright (©) 2001 by Jörg Ziefle -# You may use and distribute this software under the same terms as Perl itself. -# -# Usage: put one of the two configurations below in your ~/.vimrc (without the -# description and '# ') and enjoy (be sure to adjust the paths to vimparse.pl -# before): -# -# Program is run interactively with 'perl -w': -# -# set makeprg=$HOME/bin/vimparse.pl\ %\ $* -# set errorformat=%f:%l:%m -# -# Program is only compiled with 'perl -wc': -# -# set makeprg=$HOME/bin/vimparse.pl\ -c\ %\ $* -# set errorformat=%f:%l:%m -# -# Usage: -# vimparse.pl [-c] [-f ] [programargs] -# -# -c compile only, don't run (perl -wc) -# -f write errors to -# -# Example usages: -# * From the command line: -# vimparse.pl program.pl -# -# vimparse.pl -c -f errorfile program.pl -# Then run vim -q errorfile to edit the errors with Vim. -# -# * From Vim: -# Edit in Vim (and save, if you don't have autowrite on), then -# type ':mak' or ':mak args' (args being the program arguments) -# to error check. -# -# Version history: -# 0.2 (04/12/2001): -# * First public version (sent to Bram) -# * -c command line option for compiling only -# * grammatical fix: 'There was 1 error.' -# * bug fix for multiple arguments -# * more error checks -# * documentation (top of file, &usage) -# * minor code clean ups -# 0.1 (02/02/2001): -# * Initial version -# * Basic functionality -# -# Todo: -# * test on more systems -# * use portable way to determine the location of perl ('use Config') -# * include option that shows perldiag messages for each error -# * allow to pass in program by STDIN -# * more intuitive behaviour if no error is found (show message) -# -# Tested under SunOS 5.7 with Perl 5.6.0. Let me know if it's not working for -# you. - -use strict; -use Getopt::Std; - -use vars qw/$opt_c $opt_f $opt_h/; # needed for Getopt in combination with use strict 'vars' - -use constant VERSION => 0.2; - -getopts('cf:h'); - -&usage if $opt_h; # not necessarily needed, but good for further extension - -if (defined $opt_f) { - - open FILE, "> $opt_f" or do { - warn "Couldn't open $opt_f: $!. Using STDOUT instead.\n"; - undef $opt_f; - }; - -}; - -my $handle = (defined $opt_f ? \*FILE : \*STDOUT); - -(my $file = shift) or &usage; # display usage if no filename is supplied -my $args = (@ARGV ? ' ' . join ' ', @ARGV : ''); - -my @lines = `perl @{[defined $opt_c ? '-c ' : '' ]} -w "$file$args" 2>&1`; - -my $errors = 0; -foreach my $line (@lines) { - - chomp($line); - my ($file, $lineno, $message, $rest); - - if ($line =~ /^(.*)\sat\s(.*)\sline\s(\d+)(\.|,\snear\s\".*\")$/) { - - ($message, $file, $lineno, $rest) = ($1, $2, $3, $4); - $errors++; - $message .= $rest if ($rest =~ s/^,//); - print $handle "$file:$lineno:$message\n"; - - } else { next }; - -} - -if (defined $opt_f) { - - my $msg; - if ($errors == 1) { - - $msg = "There was 1 error.\n"; - - } else { - - $msg = "There were $errors errors.\n"; - - }; - - print STDOUT $msg; - close FILE; - unlink $opt_f unless $errors; - -}; - -sub usage { - - (local $0 = $0) =~ s/^.*\/([^\/]+)$/$1/; # remove path from name of program - print<] [programargs] - - -c compile only, don't run (executes 'perl -wc') - -f write errors to - -Examples: - * At the command line: - $0 program.pl - Displays output on STDOUT. - - $0 -c -f errorfile program.pl - Then run 'vim -q errorfile' to edit the errors with Vim. - - * In Vim: - Edit in Vim (and save, if you don't have autowrite on), then - type ':mak' or ':mak args' (args being the program arguments) - to error check. -EOT - - exit 0; - -}; diff --git a/share/vim/vim73/tools/vim_vs_net.cmd b/share/vim/vim73/tools/vim_vs_net.cmd deleted file mode 100644 index 6307d95a..00000000 --- a/share/vim/vim73/tools/vim_vs_net.cmd +++ /dev/null @@ -1,24 +0,0 @@ -@rem -@rem To use this with Visual Studio .Net -@rem Tools->External Tools... -@rem Add -@rem Title - Vim -@rem Command - d:\files\util\vim_vs_net.cmd -@rem Arguments - +$(CurLine) $(ItemPath) -@rem Init Dir - Empty -@rem -@rem Coutesy of Brian Sturk -@rem -@rem --remote-silent +%1 is a command +954, move ahead 954 lines -@rem --remote-silent %2 full path to file -@rem In Vim -@rem :h --remote-silent for mor details -@rem -@rem --servername VS_NET -@rem This will create a new instance of vim called VS_NET. So if you -open -@rem multiple files from VS, they will use the same instance of Vim. -@rem This allows you to have multiple copies of Vim running, but you can -@rem control which one has VS files in it. -@rem -start /b gvim.exe --servername VS_NET --remote-silent "%1" "%2" diff --git a/share/vim/vim73/tutor/Makefile b/share/vim/vim73/tutor/Makefile deleted file mode 100644 index 7f4df75e..00000000 --- a/share/vim/vim73/tutor/Makefile +++ /dev/null @@ -1,96 +0,0 @@ -# Makefile for the Vim tutor. -# -# The Japanese tutor exists in three encodings. Use the UTF-8 version as the -# original and create the others with conversion. -# -# Similarly for Russian and Korean - -all: tutor.utf-8 \ - tutor.bj \ - tutor.ca.utf-8 \ - tutor.de.utf-8 \ - tutor.el tutor.el.cp737 \ - tutor.eo \ - tutor.es.utf-8 \ - tutor.fr.utf-8 \ - tutor.hr tutor.hr.cp1250 \ - tutor.hu tutor.hu.cp1250 \ - tutor.it.utf-8 \ - tutor.ja.sjis tutor.ja.euc \ - tutor.ko.euc \ - tutor.no.utf-8 \ - tutor.nb \ - tutor.nb.utf-8 \ - tutor.ru tutor.ru.cp1251 \ - tutor.sv.utf-8 \ - tutor.zh.utf-8 - -tutor.utf-8: tutor - iconv -f ISO-8859-1 -t UTF-8 tutor > tutor.utf-8 - -tutor.bj: tutor.bj.utf-8 - iconv -f UTF-8 -t ISO-8859-1 tutor.bj.utf-8 > tutor.bj - -tutor.ca.utf-8: tutor.ca - iconv -f ISO-8859-1 -t UTF-8 tutor.ca > tutor.ca.utf-8 - -tutor.eo: tutor.eo.utf-8 - iconv -f UTF-8 -t ISO-8859-3 tutor.eo.utf-8 > tutor.eo - -tutor.de.utf-8: tutor.de - iconv -f ISO-8859-1 -t UTF-8 tutor.de > tutor.de.utf-8 - -tutor.el: tutor.el.utf-8 - iconv -f UTF-8 -t ISO-8859-7 tutor.el.utf-8 > tutor.el - -tutor.el.cp737: tutor.el.utf-8 - iconv -f UTF-8 -t cp737 tutor.el.utf-8 > tutor.el.cp737 - -tutor.es.utf-8: tutor.es - iconv -f ISO-8859-1 -t UTF-8 tutor.es > tutor.es.utf-8 - -tutor.fr.utf-8: tutor.fr - iconv -f ISO-8859-1 -t UTF-8 tutor.fr > tutor.fr.utf-8 - -tutor.hu: tutor.hu.utf-8 - iconv -f UTF-8 -t ISO-8859-2 tutor.hu.utf-8 > tutor.hu - -tutor.hu.cp1250: tutor.hu.utf-8 - iconv -f UTF-8 -t cp1250 tutor.hu.utf-8 > tutor.hu.cp1250 - -tutor.hr: tutor.hr.utf-8 - iconv -f UTF-8 -t ISO-8859-2 tutor.hr.utf-8 > tutor.hr - -tutor.hr.cp1250: tutor.hr.utf-8 - iconv -f UTF-8 -t cp1250 tutor.hr.utf-8 > tutor.hr.cp1250 - -tutor.ja.sjis: tutor.ja.utf-8 - nkf -WXs tutor.ja.utf-8 > tutor.ja.sjis - -tutor.ja.euc: tutor.ja.utf-8 - nkf -WXe tutor.ja.utf-8 > tutor.ja.euc - -tutor.ko.euc: tutor.ko.utf-8 - iconv -f UTF-8 -t EUC-KR tutor.ko.utf-8 > tutor.ko.euc - -tutor.no.utf-8: tutor.no - iconv -f ISO-8859-1 -t UTF-8 tutor.no > tutor.no.utf-8 - -# nb is an alias for no -tutor.nb: tutor.no - cp tutor.no tutor.nb - -tutor.nb.utf-8: tutor.no.utf-8 - cp tutor.no.utf-8 tutor.nb.utf-8 - -tutor.ru: tutor.ru.utf-8 - iconv -f UTF-8 -t KOI8-R tutor.ru.utf-8 > tutor.ru - -tutor.ru.cp1251: tutor.ru.utf-8 - iconv -f UTF-8 -t cp1251 tutor.ru.utf-8 > tutor.ru.cp1251 - -tutor.sv.utf-8: tutor.sv - iconv -f ISO-8859-1 -t UTF-8 tutor.sv > tutor.sv.utf-8 - -tutor.zh.utf-8: tutor.zh.big5 - iconv -f BIG-5 -t UTF-8 tutor.zh.big5 > tutor.zh.utf-8 diff --git a/share/vim/vim73/tutor/tutor b/share/vim/vim73/tutor/tutor deleted file mode 100644 index daf42b6b..00000000 --- a/share/vim/vim73/tutor/tutor +++ /dev/null @@ -1,970 +0,0 @@ -=============================================================================== -= W e l c o m e t o t h e V I M T u t o r - Version 1.7 = -=============================================================================== - - Vim is a very powerful editor that has many commands, too many to - explain in a tutor such as this. This tutor is designed to describe - enough of the commands that you will be able to easily use Vim as - an all-purpose editor. - - The approximate time required to complete the tutor is 25-30 minutes, - depending upon how much time is spent with experimentation. - - ATTENTION: - The commands in the lessons will modify the text. Make a copy of this - file to practise on (if you started "vimtutor" this is already a copy). - - It is important to remember that this tutor is set up to teach by - use. That means that you need to execute the commands to learn them - properly. If you only read the text, you will forget the commands! - - Now, make sure that your Shift-Lock key is NOT depressed and press - the j key enough times to move the cursor so that Lesson 1.1 - completely fills the screen. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.1: MOVING THE CURSOR - - - ** To move the cursor, press the h,j,k,l keys as indicated. ** - ^ - k Hint: The h key is at the left and moves left. - < h l > The l key is at the right and moves right. - j The j key looks like a down arrow. - v - 1. Move the cursor around the screen until you are comfortable. - - 2. Hold down the down key (j) until it repeats. - Now you know how to move to the next lesson. - - 3. Using the down key, move to Lesson 1.2. - -NOTE: If you are ever unsure about something you typed, press to place - you in Normal mode. Then retype the command you wanted. - -NOTE: The cursor keys should also work. But using hjkl you will be able to - move around much faster, once you get used to it. Really! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.2: EXITING VIM - - - !! NOTE: Before executing any of the steps below, read this entire lesson!! - - 1. Press the key (to make sure you are in Normal mode). - - 2. Type: :q! . - This exits the editor, DISCARDING any changes you have made. - - 3. When you see the shell prompt, type the command that got you into this - tutor. That would be: vimtutor - - 4. If you have these steps memorized and are confident, execute steps - 1 through 3 to exit and re-enter the editor. - -NOTE: :q! discards any changes you made. In a few lessons you - will learn how to save the changes to a file. - - 5. Move the cursor down to Lesson 1.3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.3: TEXT EDITING - DELETION - - - ** Press x to delete the character under the cursor. ** - - 1. Move the cursor to the line below marked --->. - - 2. To fix the errors, move the cursor until it is on top of the - character to be deleted. - - 3. Press the x key to delete the unwanted character. - - 4. Repeat steps 2 through 4 until the sentence is correct. - ----> The ccow jumpedd ovverr thhe mooon. - - 5. Now that the line is correct, go on to Lesson 1.4. - -NOTE: As you go through this tutor, do not try to memorize, learn by usage. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.4: TEXT EDITING - INSERTION - - - ** Press i to insert text. ** - - 1. Move the cursor to the first line below marked --->. - - 2. To make the first line the same as the second, move the cursor on top - of the first character AFTER where the text is to be inserted. - - 3. Press i and type in the necessary additions. - - 4. As each error is fixed press to return to Normal mode. - Repeat steps 2 through 4 to correct the sentence. - ----> There is text misng this . ----> There is some text missing from this line. - - 5. When you are comfortable inserting text move to lesson 1.5. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.5: TEXT EDITING - APPENDING - - - ** Press A to append text. ** - - 1. Move the cursor to the first line below marked --->. - It does not matter on what character the cursor is in that line. - - 2. Press A and type in the necessary additions. - - 3. As the text has been appended press to return to Normal mode. - - 4. Move the cursor to the second line marked ---> and repeat - steps 2 and 3 to correct this sentence. - ----> There is some text missing from th - There is some text missing from this line. ----> There is also some text miss - There is also some text missing here. - - 5. When you are comfortable appending text move to lesson 1.6. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.6: EDITING A FILE - - ** Use :wq to save a file and exit. ** - - !! NOTE: Before executing any of the steps below, read this entire lesson!! - - 1. Exit this tutor as you did in lesson 1.2: :q! - Or, if you have access to another terminal, do the following there. - - 2. At the shell prompt type this command: vim tutor - 'vim' is the command to start the Vim editor, 'tutor' is the name of the - file you wish to edit. Use a file that may be changed. - - 3. Insert and delete text as you learned in the previous lessons. - - 4. Save the file with changes and exit Vim with: :wq - - 5. If you have quit vimtutor in step 1 restart the vimtutor and move down to - the following summary. - - 6. After reading the above steps and understanding them: do it. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1 SUMMARY - - - 1. The cursor is moved using either the arrow keys or the hjkl keys. - h (left) j (down) k (up) l (right) - - 2. To start Vim from the shell prompt type: vim FILENAME - - 3. To exit Vim type: :q! to trash all changes. - OR type: :wq to save the changes. - - 4. To delete the character at the cursor type: x - - 5. To insert or append text type: - i type inserted text insert before the cursor - A type appended text append after the line - -NOTE: Pressing will place you in Normal mode or will cancel - an unwanted and partially completed command. - -Now continue with Lesson 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.1: DELETION COMMANDS - - - ** Type dw to delete a word. ** - - 1. Press to make sure you are in Normal mode. - - 2. Move the cursor to the line below marked --->. - - 3. Move the cursor to the beginning of a word that needs to be deleted. - - 4. Type dw to make the word disappear. - - NOTE: The letter d will appear on the last line of the screen as you type - it. Vim is waiting for you to type w . If you see another character - than d you typed something wrong; press and start over. - ----> There are a some words fun that don't belong paper in this sentence. - - 5. Repeat steps 3 and 4 until the sentence is correct and go to Lesson 2.2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.2: MORE DELETION COMMANDS - - - ** Type d$ to delete to the end of the line. ** - - 1. Press to make sure you are in Normal mode. - - 2. Move the cursor to the line below marked --->. - - 3. Move the cursor to the end of the correct line (AFTER the first . ). - - 4. Type d$ to delete to the end of the line. - ----> Somebody typed the end of this line twice. end of this line twice. - - - 5. Move on to Lesson 2.3 to understand what is happening. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: ON OPERATORS AND MOTIONS - - - Many commands that change text are made from an operator and a motion. - The format for a delete command with the d delete operator is as follows: - - d motion - - Where: - d - is the delete operator. - motion - is what the operator will operate on (listed below). - - A short list of motions: - w - until the start of the next word, EXCLUDING its first character. - e - to the end of the current word, INCLUDING the last character. - $ - to the end of the line, INCLUDING the last character. - - Thus typing de will delete from the cursor to the end of the word. - -NOTE: Pressing just the motion while in Normal mode without an operator will - move the cursor as specified. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.4: USING A COUNT FOR A MOTION - - - ** Typing a number before a motion repeats it that many times. ** - - 1. Move the cursor to the start of the line marked ---> below. - - 2. Type 2w to move the cursor two words forward. - - 3. Type 3e to move the cursor to the end of the third word forward. - - 4. Type 0 (zero) to move to the start of the line. - - 5. Repeat steps 2 and 3 with different numbers. - ----> This is just a line with words you can move around in. - - 6. Move on to Lesson 2.5. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.5: USING A COUNT TO DELETE MORE - - - ** Typing a number with an operator repeats it that many times. ** - - In the combination of the delete operator and a motion mentioned above you - insert a count before the motion to delete more: - d number motion - - 1. Move the cursor to the first UPPER CASE word in the line marked --->. - - 2. Type d2w to delete the two UPPER CASE words - - 3. Repeat steps 1 and 2 with a different count to delete the consecutive - UPPER CASE words with one command - ----> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.6: OPERATING ON LINES - - - ** Type dd to delete a whole line. ** - - Due to the frequency of whole line deletion, the designers of Vi decided - it would be easier to simply type two d's to delete a line. - - 1. Move the cursor to the second line in the phrase below. - 2. Type dd to delete the line. - 3. Now move to the fourth line. - 4. Type 2dd to delete two lines. - ----> 1) Roses are red, ----> 2) Mud is fun, ----> 3) Violets are blue, ----> 4) I have a car, ----> 5) Clocks tell time, ----> 6) Sugar is sweet ----> 7) And so are you. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.7: THE UNDO COMMAND - - - ** Press u to undo the last commands, U to fix a whole line. ** - - 1. Move the cursor to the line below marked ---> and place it on the - first error. - 2. Type x to delete the first unwanted character. - 3. Now type u to undo the last command executed. - 4. This time fix all the errors on the line using the x command. - 5. Now type a capital U to return the line to its original state. - 6. Now type u a few times to undo the U and preceding commands. - 7. Now type CTRL-R (keeping CTRL key pressed while hitting R) a few times - to redo the commands (undo the undo's). - ----> Fiix the errors oon thhis line and reeplace them witth undo. - - 8. These are very useful commands. Now move on to the Lesson 2 Summary. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2 SUMMARY - - - 1. To delete from the cursor up to the next word type: dw - 2. To delete from the cursor to the end of a line type: d$ - 3. To delete a whole line type: dd - - 4. To repeat a motion prepend it with a number: 2w - 5. The format for a change command is: - operator [number] motion - where: - operator - is what to do, such as d for delete - [number] - is an optional count to repeat the motion - motion - moves over the text to operate on, such as w (word), - $ (to the end of line), etc. - - 6. To move to the start of the line use a zero: 0 - - 7. To undo previous actions, type: u (lowercase u) - To undo all the changes on a line, type: U (capital U) - To undo the undo's, type: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.1: THE PUT COMMAND - - - ** Type p to put previously deleted text after the cursor. ** - - 1. Move the cursor to the first ---> line below. - - 2. Type dd to delete the line and store it in a Vim register. - - 3. Move the cursor to the c) line, ABOVE where the deleted line should go. - - 4. Type p to put the line below the cursor. - - 5. Repeat steps 2 through 4 to put all the lines in correct order. - ----> d) Can you learn too? ----> b) Violets are blue, ----> c) Intelligence is learned, ----> a) Roses are red, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.2: THE REPLACE COMMAND - - - ** Type rx to replace the character at the cursor with x . ** - - 1. Move the cursor to the first line below marked --->. - - 2. Move the cursor so that it is on top of the first error. - - 3. Type r and then the character which should be there. - - 4. Repeat steps 2 and 3 until the first line is equal to the second one. - ----> Whan this lime was tuoed in, someone presswd some wrojg keys! ----> When this line was typed in, someone pressed some wrong keys! - - 5. Now move on to Lesson 3.3. - -NOTE: Remember that you should be learning by doing, not memorization. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.3: THE CHANGE OPERATOR - - - ** To change until the end of a word, type ce . ** - - 1. Move the cursor to the first line below marked --->. - - 2. Place the cursor on the u in lubw. - - 3. Type ce and the correct word (in this case, type ine ). - - 4. Press and move to the next character that needs to be changed. - - 5. Repeat steps 3 and 4 until the first sentence is the same as the second. - ----> This lubw has a few wptfd that mrrf changing usf the change operator. ----> This line has a few words that need changing using the change operator. - -Notice that ce deletes the word and places you in Insert mode. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.4: MORE CHANGES USING c - - - ** The change operator is used with the same motions as delete. ** - - 1. The change operator works in the same way as delete. The format is: - - c [number] motion - - 2. The motions are the same, such as w (word) and $ (end of line). - - 3. Move to the first line below marked --->. - - 4. Move the cursor to the first error. - - 5. Type c$ and type the rest of the line like the second and press . - ----> The end of this line needs some help to make it like the second. ----> The end of this line needs to be corrected using the c$ command. - -NOTE: You can use the Backspace key to correct mistakes while typing. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3 SUMMARY - - - 1. To put back text that has just been deleted, type p . This puts the - deleted text AFTER the cursor (if a line was deleted it will go on the - line below the cursor). - - 2. To replace the character under the cursor, type r and then the - character you want to have there. - - 3. The change operator allows you to change from the cursor to where the - motion takes you. eg. Type ce to change from the cursor to the end of - the word, c$ to change to the end of a line. - - 4. The format for change is: - - c [number] motion - -Now go on to the next lesson. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.1: CURSOR LOCATION AND FILE STATUS - - ** Type CTRL-G to show your location in the file and the file status. - Type G to move to a line in the file. ** - - NOTE: Read this entire lesson before executing any of the steps!! - - 1. Hold down the Ctrl key and press g . We call this CTRL-G. - A message will appear at the bottom of the page with the filename and the - position in the file. Remember the line number for Step 3. - -NOTE: You may see the cursor position in the lower right corner of the screen - This happens when the 'ruler' option is set (see :help 'ruler' ) - - 2. Press G to move you to the bottom of the file. - Type gg to move you to the start of the file. - - 3. Type the number of the line you were on and then G . This will - return you to the line you were on when you first pressed CTRL-G. - - 4. If you feel confident to do this, execute steps 1 through 3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.2: THE SEARCH COMMAND - - - ** Type / followed by a phrase to search for the phrase. ** - - 1. In Normal mode type the / character. Notice that it and the cursor - appear at the bottom of the screen as with the : command. - - 2. Now type 'errroor' . This is the word you want to search for. - - 3. To search for the same phrase again, simply type n . - To search for the same phrase in the opposite direction, type N . - - 4. To search for a phrase in the backward direction, use ? instead of / . - - 5. To go back to where you came from press CTRL-O (Keep Ctrl down while - pressing the letter o). Repeat to go back further. CTRL-I goes forward. - ----> "errroor" is not the way to spell error; errroor is an error. -NOTE: When the search reaches the end of the file it will continue at the - start, unless the 'wrapscan' option has been reset. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.3: MATCHING PARENTHESES SEARCH - - - ** Type % to find a matching ),], or } . ** - - 1. Place the cursor on any (, [, or { in the line below marked --->. - - 2. Now type the % character. - - 3. The cursor will move to the matching parenthesis or bracket. - - 4. Type % to move the cursor to the other matching bracket. - - 5. Move the cursor to another (,),[,],{ or } and see what % does. - ----> This ( is a test line with ('s, ['s ] and {'s } in it. )) - - -NOTE: This is very useful in debugging a program with unmatched parentheses! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.4: THE SUBSTITUTE COMMAND - - - ** Type :s/old/new/g to substitute 'new' for 'old'. ** - - 1. Move the cursor to the line below marked --->. - - 2. Type :s/thee/the . Note that this command only changes the - first occurrence of "thee" in the line. - - 3. Now type :s/thee/the/g . Adding the g flag means to substitute - globally in the line, change all occurrences of "thee" in the line. - ----> thee best time to see thee flowers is in thee spring. - - 4. To change every occurrence of a character string between two lines, - type :#,#s/old/new/g where #,# are the line numbers of the range - of lines where the substitution is to be done. - Type :%s/old/new/g to change every occurrence in the whole file. - Type :%s/old/new/gc to find every occurrence in the whole file, - with a prompt whether to substitute or not. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4 SUMMARY - - - 1. CTRL-G displays your location in the file and the file status. - G moves to the end of the file. - number G moves to that line number. - gg moves to the first line. - - 2. Typing / followed by a phrase searches FORWARD for the phrase. - Typing ? followed by a phrase searches BACKWARD for the phrase. - After a search type n to find the next occurrence in the same direction - or N to search in the opposite direction. - CTRL-O takes you back to older positions, CTRL-I to newer positions. - - 3. Typing % while the cursor is on a (,),[,],{, or } goes to its match. - - 4. To substitute new for the first old in a line type :s/old/new - To substitute new for all 'old's on a line type :s/old/new/g - To substitute phrases between two line #'s type :#,#s/old/new/g - To substitute all occurrences in the file type :%s/old/new/g - To ask for confirmation each time add 'c' :%s/old/new/gc - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.1: HOW TO EXECUTE AN EXTERNAL COMMAND - - - ** Type :! followed by an external command to execute that command. ** - - 1. Type the familiar command : to set the cursor at the bottom of the - screen. This allows you to enter a command-line command. - - 2. Now type the ! (exclamation point) character. This allows you to - execute any external shell command. - - 3. As an example type ls following the ! and then hit . This - will show you a listing of your directory, just as if you were at the - shell prompt. Or use :!dir if ls doesn't work. - -NOTE: It is possible to execute any external command this way, also with - arguments. - -NOTE: All : commands must be finished by hitting - From here on we will not always mention it. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.2: MORE ON WRITING FILES - - - ** To save the changes made to the text, type :w FILENAME. ** - - 1. Type :!dir or :!ls to get a listing of your directory. - You already know you must hit after this. - - 2. Choose a filename that does not exist yet, such as TEST. - - 3. Now type: :w TEST (where TEST is the filename you chose.) - - 4. This saves the whole file (the Vim Tutor) under the name TEST. - To verify this, type :!dir or :!ls again to see your directory. - -NOTE: If you were to exit Vim and start it again with vim TEST , the file - would be an exact copy of the tutor when you saved it. - - 5. Now remove the file by typing (MS-DOS): :!del TEST - or (Unix): :!rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.3: SELECTING TEXT TO WRITE - - - ** To save part of the file, type v motion :w FILENAME ** - - 1. Move the cursor to this line. - - 2. Press v and move the cursor to the fifth item below. Notice that the - text is highlighted. - - 3. Press the : character. At the bottom of the screen :'<,'> will appear. - - 4. Type w TEST , where TEST is a filename that does not exist yet. Verify - that you see :'<,'>w TEST before you press . - - 5. Vim will write the selected lines to the file TEST. Use :!dir or !ls - to see it. Do not remove it yet! We will use it in the next lesson. - -NOTE: Pressing v starts Visual selection. You can move the cursor around - to make the selection bigger or smaller. Then you can use an operator - to do something with the text. For example, d deletes the text. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.4: RETRIEVING AND MERGING FILES - - - ** To insert the contents of a file, type :r FILENAME ** - - 1. Place the cursor just above this line. - -NOTE: After executing Step 2 you will see text from Lesson 5.3. Then move - DOWN to see this lesson again. - - 2. Now retrieve your TEST file using the command :r TEST where TEST is - the name of the file you used. - The file you retrieve is placed below the cursor line. - - 3. To verify that a file was retrieved, cursor back and notice that there - are now two copies of Lesson 5.3, the original and the file version. - -NOTE: You can also read the output of an external command. For example, - :r !ls reads the output of the ls command and puts it below the - cursor. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5 SUMMARY - - - 1. :!command executes an external command. - - Some useful examples are: - (MS-DOS) (Unix) - :!dir :!ls - shows a directory listing. - :!del FILENAME :!rm FILENAME - removes file FILENAME. - - 2. :w FILENAME writes the current Vim file to disk with name FILENAME. - - 3. v motion :w FILENAME saves the Visually selected lines in file - FILENAME. - - 4. :r FILENAME retrieves disk file FILENAME and puts it below the - cursor position. - - 5. :r !dir reads the output of the dir command and puts it below the - cursor position. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.1: THE OPEN COMMAND - - - ** Type o to open a line below the cursor and place you in Insert mode. ** - - 1. Move the cursor to the line below marked --->. - - 2. Type the lowercase letter o to open up a line BELOW the cursor and place - you in Insert mode. - - 3. Now type some text and press to exit Insert mode. - ----> After typing o the cursor is placed on the open line in Insert mode. - - 4. To open up a line ABOVE the cursor, simply type a capital O , rather - than a lowercase o. Try this on the line below. - ----> Open up a line above this by typing O while the cursor is on this line. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.2: THE APPEND COMMAND - - - ** Type a to insert text AFTER the cursor. ** - - 1. Move the cursor to the start of the line below marked --->. - - 2. Press e until the cursor is on the end of li . - - 3. Type an a (lowercase) to append text AFTER the cursor. - - 4. Complete the word like the line below it. Press to exit Insert - mode. - - 5. Use e to move to the next incomplete word and repeat steps 3 and 4. - ----> This li will allow you to pract appendi text to a line. ----> This line will allow you to practice appending text to a line. - -NOTE: a, i and A all go to the same Insert mode, the only difference is where - the characters are inserted. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.3: ANOTHER WAY TO REPLACE - - - ** Type a capital R to replace more than one character. ** - - 1. Move the cursor to the first line below marked --->. Move the cursor to - the beginning of the first xxx . - - 2. Now press R and type the number below it in the second line, so that it - replaces the xxx . - - 3. Press to leave Replace mode. Notice that the rest of the line - remains unmodified. - - 4. Repeat the steps to replace the remaining xxx. - ----> Adding 123 to xxx gives you xxx. ----> Adding 123 to 456 gives you 579. - -NOTE: Replace mode is like Insert mode, but every typed character deletes an - existing character. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.4: COPY AND PASTE TEXT - - - ** Use the y operator to copy text and p to paste it ** - - 1. Go to the line marked with ---> below and place the cursor after "a)". - - 2. Start Visual mode with v and move the cursor to just before "first". - - 3. Type y to yank (copy) the highlighted text. - - 4. Move the cursor to the end of the next line: j$ - - 5. Type p to put (paste) the text. Then type: a second . - - 6. Use Visual mode to select " item.", yank it with y , move to the end of - the next line with j$ and put the text there with p . - ----> a) this is the first item. - b) - - NOTE: you can also use y as an operator; yw yanks one word. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.5: SET OPTION - - - ** Set an option so a search or substitute ignores case ** - - 1. Search for 'ignore' by entering: /ignore - Repeat several times by pressing n . - - 2. Set the 'ic' (Ignore case) option by entering: :set ic - - 3. Now search for 'ignore' again by pressing n - Notice that Ignore and IGNORE are now also found. - - 4. Set the 'hlsearch' and 'incsearch' options: :set hls is - - 5. Now type the search command again and see what happens: /ignore - - 6. To disable ignoring case enter: :set noic - -NOTE: To remove the highlighting of matches enter: :nohlsearch -NOTE: If you want to ignore case for just one search command, use \c - in the phrase: /ignore\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6 SUMMARY - - 1. Type o to open a line BELOW the cursor and start Insert mode. - Type O to open a line ABOVE the cursor. - - 2. Type a to insert text AFTER the cursor. - Type A to insert text after the end of the line. - - 3. The e command moves to the end of a word. - - 4. The y operator yanks (copies) text, p puts (pastes) it. - - 5. Typing a capital R enters Replace mode until is pressed. - - 6. Typing ":set xxx" sets the option "xxx". Some options are: - 'ic' 'ignorecase' ignore upper/lower case when searching - 'is' 'incsearch' show partial matches for a search phrase - 'hls' 'hlsearch' highlight all matching phrases - You can either use the long or the short option name. - - 7. Prepend "no" to switch an option off: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.1: GETTING HELP - - - ** Use the on-line help system ** - - Vim has a comprehensive on-line help system. To get started, try one of - these three: - - press the key (if you have one) - - press the key (if you have one) - - type :help - - Read the text in the help window to find out how the help works. - Type CTRL-W CTRL-W to jump from one window to another. - Type :q to close the help window. - - You can find help on just about any subject, by giving an argument to the - ":help" command. Try these (don't forget pressing ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.2: CREATE A STARTUP SCRIPT - - - ** Enable Vim features ** - - Vim has many more features than Vi, but most of them are disabled by - default. To start using more features you have to create a "vimrc" file. - - 1. Start editing the "vimrc" file. This depends on your system: - :e ~/.vimrc for Unix - :e $VIM/_vimrc for MS-Windows - - 2. Now read the example "vimrc" file contents: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Write the file with: - :w - - The next time you start Vim it will use syntax highlighting. - You can add all your preferred settings to this "vimrc" file. - For more information type :help vimrc-intro - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.3: COMPLETION - - - ** Command line completion with CTRL-D and ** - - 1. Make sure Vim is not in compatible mode: :set nocp - - 2. Look what files exist in the directory: :!ls or :!dir - - 3. Type the start of a command: :e - - 4. Press CTRL-D and Vim will show a list of commands that start with "e". - - 5. Press and Vim will complete the command name to ":edit". - - 6. Now add a space and the start of an existing file name: :edit FIL - - 7. Press . Vim will complete the name (if it is unique). - -NOTE: Completion works for many commands. Just try pressing CTRL-D and - . It is especially useful for :help . - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7 SUMMARY - - - 1. Type :help or press or to open a help window. - - 2. Type :help cmd to find help on cmd . - - 3. Type CTRL-W CTRL-W to jump to another window - - 4. Type :q to close the help window - - 5. Create a vimrc startup script to keep your preferred settings. - - 6. When typing a : command, press CTRL-D to see possible completions. - Press to use one completion. - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - This concludes the Vim Tutor. It was intended to give a brief overview of - the Vim editor, just enough to allow you to use the editor fairly easily. - It is far from complete as Vim has many many more commands. Read the user - manual next: ":help user-manual". - - For further reading and studying, this book is recommended: - Vim - Vi Improved - by Steve Oualline - Publisher: New Riders - The first book completely dedicated to Vim. Especially useful for beginners. - There are many examples and pictures. - See http://iccf-holland.org/click5.html - - This book is older and more about Vi than Vim, but also recommended: - Learning the Vi Editor - by Linda Lamb - Publisher: O'Reilly & Associates Inc. - It is a good book to get to know almost anything you want to do with Vi. - The sixth edition also includes information on Vim. - - This tutorial was written by Michael C. Pierce and Robert K. Ware, - Colorado School of Mines using ideas supplied by Charles Smith, - Colorado State University. E-mail: bware@mines.colorado.edu. - - Modified for Vim by Bram Moolenaar. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.bj b/share/vim/vim73/tutor/tutor.bj deleted file mode 100644 index 642a8f30..00000000 --- a/share/vim/vim73/tutor/tutor.bj +++ /dev/null @@ -1,987 +0,0 @@ -=============================================================================== -= G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7D = -=============================================================================== - - Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z - vil, däß myn s allsand in aynn Schainer wie dönn daader unterbräng. Der - Schainer ist yso aufbaut, däß yr halt netty die Befelh allsand bringt, wost - brauchst, däßst mit iem für s Eerste wirklich öbbs anfangen kanst. - Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; dös haisst, - wennst di nit grooß mit n Pröbln und Tüftln aufhaltst. - - OBACHT: - Die Faudungen, wost daader finddst, gaand istig s Gwort öndern. Dösswögn - machst eyn n Böstn glei ayn Aamum von derer Dautticht daader. Haast alsnan - dös Gwort daader mit n Befelh "vimtutor bj" ausherlaassn, ist s ee schoon - ayn Aamum. - Mir kan s nit oft gnueg sagn, däß der Schainer daader istig gan n Üebn - ghoert. Also muesst schoon aau die Befelh ausfüern, wennst ys gscheid ler- - nen willst. Mit n Lösn yllain ist s +nit taan! - - Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest - glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich), hinst däßst - de gantze Letzn 1.1 auf n Bildschirm haast. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.1: MIT N MÖRKL UMAYNANDFARN - -** Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt. ** - ^ Ayn Öslsbrugg: - k De Tastn h ist winster und +geet aau gan winster. - < h l > S l leit zesm und richtt si gan zesm. - j S j kan myn wie aynn Pfeil gan unt seghn. - v Mit n k kimmst gan n KOPF. - 1. Ietz ruedertst ainfach mit n Mörkl auf n Bildschirm umaynand, hinst däßst - di sicher füelst. - 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso - kimmst gan dyr naehstn Letzn. - - 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2. - -Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft - zipfst ; naacherd bist wider ganz gwon in dyr Befelhs-Artweis. - - - Nöbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter. Aber - hjkl seind z haissn s Wimm-Urgstain; und de "Hörtn" seind ganz dyr- - für, däß myn bei +dene bleibt. Pröblt s ainfach aus! -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.2: ÖNN WIMM AUSSCHALTTN - - - ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÜERST, LIS LIEBER ZEERST DE GANTZE LET- - ZN! - - 1. Druck d -Tastn, dyrmitst aau gwiß in dyr Befelhs-Artweis bist. - - 2. Demmlt :q! . - Daa dyrmit benddst ys Blat und verwirffst allss, wasst öbbenn göndert - haast. - - 3. Balst önn Eingib seghst, gib dö Faudung ein, wo di zo dönn Schainer brun- - gen haat, also vimtutor bj . - - 4. Also, wenn ietz allsse sitzt, naacherd füerst d Schritt 1 hinst 3 aus, mit - wasst ys Blat verlaasst und aft wider einhinkimmst. - -Anmörkung: Mit :q! verwirffst allss, wasst göndert older enther gschribn - haast. In aynn Öttlych Letznen lernst acht, wiest dös allss in ayner - Dautticht speichertst. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.3: GWORT BARECHTN - LÖSCHN - - - ** Druck x , dyrmitst dös Zaichen unter n Mörkl löschst. ** - - 1. Bewög di mit n Mörkl auf de mit ---> angmörkte Zeil unt. - - 2. Zo n Faeler Verbössern farst mit n Mörkl netty auf dös Zaichen, dös wo - glöscht ghoert. - - 3. Druck de Tastn x , däßst dös überflüssige Zaichen löschst. - - 4. Ietz tuest so lang weiter mit 2 hinst 4, hinst däß dyr Saz stimmt. - ----> De Kkuue sprangg übber nn Maanad. - - 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter. - -Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn, - allss auswendig z lernen; nän, lern ainfach mit n Anwenddn! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.4: GWORT BARECHTN - EINFÜEGN - - - ** Druck i , dyrmitst öbbs einfüegst. ** - - 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil, wo mit ---> angeet. - - 2. Dyrmitst de eerste Zeil wie de zwaitte machst, bewög önn Mörkl auf dös - eerste Zaichen NAACH derer Stöll, daa wo s Gwort eingfüegt werdn sollt. - - 3. Druck i und gib dös ein, was abgeet. - - 4. Wenn ieweils ayn Faeler verweitert ist, aft druck ; und dyrmit kimmst - gan dyr Befelhsartweis zrugg. - So, und ietz tuest ainfach yso weiter, hinst däß dyr Saz stimmt. - ----> Daader gt dd öbbs b. ----> Daader geet diend öbbs ab. - - 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.5: GWORT BARECHTN - ANFÜEGN - - - ** Druck A gan n Gwort Anfüegn. ** - - 1. Gee mit n Mörkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat. - Daa ist s gleich, wo gnaun dyr Mörkl in derer Zeil steet. - - 2. Demmlt A und gib de entspröchetn Ergöntzungen ein. - - 3. Wennst mit n Anfüegn förtig bist, aft druckst , däßst wider eyn de - Befelhsartweis zruggkimmst. - - 4. So, und ietz geest aft non gan dyr zwaittn mit ---> angmörktn Zeil; und - daadl machst ys netty yso. - ----> In derer Zeil gee - In derer Zeil geet ayn Weeng ayn Gwort ab. ----> Aau daader stee - Aau daader steet öbbs Unvollstöndigs. - - 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.6: AYN DAUTTICHT BARECHTN - - - ** Mit :wq speichertst ayn Dautticht und verlaasst önn Wimm ganz. ** - - !! OBACHT: Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze - Letzn durch!! - - 1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! ! - - 2. Gib dö Faudung eyn n Eingib ein: vim Schainer . 'vim' ruefft s Blat - auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit - haast also ayn Dautticht, dö wost barechtn kanst. - - 3. Ietz füegst öbbs ein older löschst öbbs, wiest ys in de vorignen Letznen - glernt haast. - - 4. Speichert de gönderte Dautticht und verlaaß önn Wimm mit :wq . - - 5. Schmeiß önn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung. - - 6. Aft däßst de obignen Schritt glösn und käppt haast, kanst ys durchfüern. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 1 - - - 1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert. - h (winst) j (ab) k (auf) l (zes) - - 2. Um önn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT . - - 3. Willst önn Wimm verlaassn und aau allss verwerffen, aft gibst ein: - :q! . - Gan n Verlaassn und Speichern aber zipfst :wq . - - 4. Willst dös Zaichen löschn, daa wo dyr Mörkl drauf ist, demmltst x . - - 5. Willst öbbs vor n Mörkl eingöbn, zipfst i und drafter . - Mechst ys aber eyn s Zeilnend anhinhöngen, benutzt ys A . - Und ainfach naach n Mörkl füegst ys mit a ein . - -Anmörkung: Druckst , kimmst eyn de Befelhsartweis zrugg older brichst ayn - Faudung ab, dö wo dyr schiefgangen ist. - - Ietz tue mit dyr Letzn 2 weiter. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.1.: LÖSHFAUDUNGEN - - - ** Demmlt dw , dyrmitst ayn Wort löschst ** - - 1. Druck , dyrmit s aau gwiß ist, däßst in dyr Befelhsartweis bist. - - 2. Bewög önn Mörkl zo dyr mit ---> angmörktn Zeil unt. - - 3. Und daa geest ietz auf n Anfang von aynn Wort, dös wo glöscht ghoert. - - 4. Zipf dw , däßst dös gantze Wort löschst. - - Nöbnbei: Dyr Buechstabn d erscheint auf dyr lösstn Zeil von n Bildschirm, - sobaldst n eingibst. Dyr Wimm wartt ietz drauf, däß öbbs kimmt, al- - so daader ayn w . Seghst freilich öbbs Anderts wie ayn d , - naacherd haast öbbs Falschs demmlt. Druck aft und pröblt - s non aynmaal. ----> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin. - - 5. Äfert d Schritt 3 und 4, hinst däß dyr Saz pässt, und gee aft gan dyr - Letzn 2.2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN - - - ** Gib d$ ein, däßst hinst eyn s Zeilnend löschst. ** - - 1. Druck , dyrmitst aau gwiß in dyr Befelhsartweis bist. - - 2. Bewög önn Mörkl hinst eyn de mit ---> angmörkte Zeil untn. - - 3. Gee mit n Mörkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn . . - - 4. Zipf d$ , däßst hinst eyn s End von dyr Zeil löschst. - ----> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn. - - - 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.3: PFEMERER UND WOLENDER - - - Vil Faudungen, wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo- - lend zamm. Bal i also öbbs löschn will, schreib i ainsting d und aft s "Wo- - lend", dös haisst also, "wolend", "wohin" däß i will - older was i halt gnaun - löschn will. - - - - - - - Daader also, was i wie löschn kan: - w - hinst eyn n Anfang von n naehstn Wort AANE dönn sein eersts Zaichen. - e - gan n End von n ietzundn Wort MIT dönn seinn lösstn Zaichen. - $ - zo n End von dyr Zeil MIT derer irn lösstn Zaichen. - - Also löscht de Tastnfolg de umbb n Mörkl hinst eyn s Wortend. -Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mörkl - entspröchet weiter. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN - - - ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel halt widerholt. ** - - 1. Bewög önn Mörkl gan n Anfang von dyr Zeil mit ---> dyrvor unt. - - 2. Zipf 2w , däßst mit n Mörkl zwai Wörter weitergeest. - - 3. Zipf 3e , däßst mit n Mörkl auf s End von n drittn Wort kimmst. - - 4. Zipf 0 (aynn Nuller), däßst eyn n Anfang von dyr Zeil hinkimmst. - - 5. Widerhol d Schritt 2 und 3 mit verschaidne Zöler. - - ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern. - - 6. Gee weiter gan dyr Letzn 2.5. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN - - - ** Ayn Zal vor aynn Pfemerer äfert dönn um seln Werd. ** - - Also, i mecht löschn, und zwaar öbbs Bestimmts, und dös so und so oft: Daa - dyrzue benutz i aynn Zöler: - d Zöler Wolend (also önn Bewögungsschrit) - - 1. Bewög önn Mörkl gan n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an- - gmörktn Zeil. - - 2. Demmlt d2w , dyrmitst de ganz grooßgschribnen Wörter löschst. - - 3. Äfert d Schritt 1 und 2 mit dönn entspröchetn Zöler, dyrmitst de drauf- - folgetn ganz großgschribnen Wörter mit ayner ainzignen Faudung löschst: - - ----> Dö ABC DE Zeil FGHI JK LMN OP mit Wörter ist Q RS TUV ietz berichtigt. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.6: ARECHTN AUF ZEILN - - - ** Zipf dd , um ayn gantze Zeil z löschn. ** - - Weil s gro oft vürkimmt, däß myn gantze Zeiln löscht, kaamend schoon d Ent- - wickler von n Urwimm daa drauf, däß myn ainfach dd gan dönn Zwök schreibt. - - - 1. Bewög önn Mörkl gan dyr zwaittn Zeil in n untignen "Gedicht". - 2. Zipf dd , um dö Zeil z löschn. - 3. Ietz bewögst di gan dyr viertn Zeil. - 4. Zipf 2dd , um zwo Zeiln zo n Löschn. - ----> 1) Roosn seind root; ----> 2) Drunter ist s Koot. ----> 3) Veigerln seind blau. ----> 4) Umgrabn tuet s d Sau. ----> 5) D Ur sait de Zeit, ----> 6) Sait, däß s mi freut, ----> 7) Dirndl, dein Gschau. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN) - - - ** Zipf u , dyrmitst de lösstn Faudungen ruggltst ** - ** older U , um ayn gantze Zeil widerherzstölln. ** - - 1. Bewög önn Mörkl gan dyr mit ---> angmörktn Zeil unt und gee dyrmit auf n - eerstn Faeler. - 2. Zipf x , däßst dös eerste z vile Zaichen löschst. - 3. Ietz demmlt u , dyrmitst de lösste Faudung ruggltst. - 4. Ietz behöb allsand Faeler auf dyr Zeil mit dyr Hilf von n Befelh x . - 5. Aft gibst ayn U (grooß) ein, däßst de Zeil wider yso hinbringst, wie s - gwösn ist. - 6. So, und ietz demmltst so oft u , hinst däßst s U und de andern Fau- - dungen rugggöngig gmacht haast. - 7. Und ietzet widerum schreibst so oft r , hinst däßst allsand Be- - felh widerhergstöllt, z haissn allsse rugg-grugglt haast (also d Rugggön- - gigmachungen rugggöngig gmacht). ----> Beerichtig d Faeller voon dehrer Zeiil und sttöll s mitt n Ruggruggln wi- - der her. - 8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter. - Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 2 - - - 1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf: dw - 2. Um umbb n Mörkl hinst eyn s End von dyr Zeil zo n Löschn, demmlt d$ - 3. Dyrmitst ayn gantze Zeil löschst, gib ein: dd - 4. Mechst ayn Bewögung, ayn "Wolend", öfters, stöll de entspröchete Zal dyr- - vor: 3dw older aau: d3w - 5. Dyr Pfueg für ayn Önderungsfaudung lautt yso: - Pfemerer [Zal] Bewögungsschrit (Wolend) - Und dös haisst: - Dyr PFEMERER gibt an, WAS taan ghoert, öbbenn d = löschn (»delete«). - [ZAL] - Ayn Zal KAN myn angöbn, wenn myn halt ayn Wolend öfter habn will. - S WOLEND, also dyr Schrit WOHIN, besagt, auf was i aushin will, öbbenn - auf ayn Wort ( w ), s End von dyr Zeil ( $ ) und so weiter. - - 6. Däßst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller: 0 - - 7. Um öbbs Vorigs wider z ruggln, gib ein: u (klain also) - Um allsand Önderungen in ayner Zeil z ruggln, haast: U (also grooß) - Um "rugg-z-ruggln", also allss wider herzstölln, zipf: r - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.1: ANFÜEGN (»put«) - - - ** Zipf p , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. ** - - 1. Bewög önn Mörkl gan dyr eerstn untignen Zeil mit ---> dyrvor. - - 2. Zipf dd , um sele Zeil z löschn und dyrmit in aynn Wimm-"Roster" zo n - speichern. - - 3. Bewög önn Mörkl gan dyr Zeil c), ÜBER derer, daa wo de glöschte Zeil ein- - hinkemmen sollt. - - 4. So, und ietz gibst ainfach p ein, und schoon haast dö Zeil unter derer - mit n Mörkl drinn. - 5. Äfert d Schritt 2 hinst 4, hinst däßst allsand Zeiln yso naachynaynand - haast, wie s hinghoernd. - ----> d) Kanst du dös aau? ----> b) Veigerln seind blau. ----> c) Bedachtn kan myn lernen. ----> a) Roosn seind root. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.2: ERSÖTZN (»replace«) - - - ** Zipf rx , um dös Zaichen unter n Mörkl durch x z ersötzn. ** - - 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil mit ---> dyrvor. - - 2. Bewög önn Mörkl, hinst däß yr auf n eerstn Faeler steet. - - 3. Zipf r und drafter dös Zaichen, wo dyrfür daa hinghoert. - - 4. Widerhol d Schritt 2 und 3, hinst däßst de eerste Zeil gmaeß dyr zwaittn - berichtigt haast: ----> Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft! ----> Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft! - - 5. Ietz tue mit dyr Letzn 3.3 weiter. - -Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn - mit n Auswendiglernen! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.3: ÖNDERN (»change«) - - - ** Um hinst eyn s Wortend z öndern, zipf ce . ** - - 1. Gee mit n Mörkl auf de eerste mit ---> angmörkte Zeil. - - 2. Ietz farst netty auf s "s" von Wstwr hin. - - 3. Zipf ce ein und aft d Wortberichtigung, daader also örter . - - 4. Druck und bewög önn Mörkl gan n naehstn Zaichen, wo göndert ghoert. - - 5. Äfert d Schritt 3 und 4, hinst däß dyr eerste Saz wie dyr zwaitte ist. - ----> Ainige Wstwr von derer Zlww ghhnnd mit n Öndern-Pfemerer gaauu. ----> Ainige Wörter von derer Zeil ghoernd mit n Öndern-Pfemerer göndert. - -ce löscht also s Wort und schlaaufft di eyn d Eingaab-Artweis. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.4.: NON MEERER ÖNDERUNGEN PFELFS c - - - ** D Löshfaudung c arechtt mit de nömlichnen Wolender wie dö mit d ** - - 1. Dyr Önder-Pfemerer arechtt anleich wie d Löshfaudung mit d , und zwaar - yso: - c [Zal] Bewögungsschritt (Wolend) - - 2. D Wolender seind de gleichn, öbbenn w für Wort und $ für s Zeilnend. - - - 3. Bewög di zo dyr eerstn untignen Zeil mit ---> . - - 4. Ietz geest auf dönn eerstn Faeler. - - 5. Zipf c$ , gib önn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft - . ----> S End von derer Zeil sollt an de zwaitte daader anglichen werdn. ----> S End von derer Zeil sollt mit n Befelh c$ berichtigt werdn. - -Denk allweil dran, däßst iederzeit mit dyr Ruggtastn Faeler ausbössern kanst. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 3 - - - 1. Um ayn vorher glöschts Gwort anzfüegn, zipf p . Daa dyrmit werd dös - gantze Gwort NAACH n Mörkl angfüegt. Wenn s ayn gantze Zeil gwösn ist, - werd dö sel als de Zeil unterhalb n Mörkl eingfüegt. - - 2. Um dös Zaichen unter n Mörkl, also wo dyr Mörkl ist, z ersötzn, zipf r - und aft dös Zaichen, wost daadl habn willst. - - 3. Dyr Önderungspfemerer ( c = »change«) laasst ainn umbb n Mörkl hinst eyn s - End von n Wolend öndern. Zipf ce , dyrmitst umbb n Mörkl hinst eyn s End - von n Wort öndertst, und c$ hinst eyn s End von dyr Zeil. - - 4. Für d Önderung lautt dyr Pfueg: - - c [Zal] Wolend - -Ietz tue mit dyr naehstn Letzn weiter. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND - -** Demmlt g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. ** - ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. ** - -Anmörkung: Lis dö gantze Letzn daader durch, ee wennst iewign öbbs unternimmst! - - 1. Druck g . Auf dös hin erscheint auf derer Seitt ganz unt ayn Dar- - standsmeldung mit n Dauttichtnam und n Befand innerhalb dyr Dautticht. - Mörk dyr de Zeilnnummer für n Schrit 3. - -Anmörkung: Müglicherweis seghst aau önn Mörklbefand in n zesmen untern Bild- - schirmögg. Aft ist s "Lindl" (»ruler«) eingstöllt; schau dyrzue mit - n Befelh :help 'ruler' naach. - 2. Druck G , um an s End von dyr Dautticht z kemmen. - gg gibst ein, däßst gan n Anfang von dyr Dautticht aufhinkimmst. - - 3. Gib d Nummer von derer Zeil ein, daa wost vorher warst, und aft non G . - Dös bringt di zrugg gan seler Zeil, daa wost stuenddst, wiest dös eerste - Maal g gadruckst. - - 4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.2: DYR BEFELH ZO N SUECHEN - - - ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. ** - - 1. Du gibst also in dyr Befelhsartweis s Zaichen / ein. Dös sel wie aau dyr - Mörkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung : . - - 2. Ietz zipf 'Faeeler' . Netty um dös 'Faeeler' willst ietz suechen. - - 3. Willst um gnaun dönn Ausdruk weitersuechen, zipf ainfach n (wie »next«). - Willst hinzrugg suechen, aft gibst N ein. - - 4. Um von Haus aus zruggaus z suechen, nimm ? statt / her. - - 5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, druck o, und dös - öfter, wennst weiter zrugg willst. Mit i widerum kimmst vorwärts. - ----> Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler - -Anmörkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi- - der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wär auf aus. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.3: DE GÖGNKLAMMERN FINDDN - - - ** Zipf % , um de entspröchete Klammer ) , ] older } z finddn. ** - - 1. Sötz önn Mörkl auf iewign aine von dene drei Klammern ( , [ older { - in dyr untignen Zeil, wo mit ---> angmörkt ist. - - 2. Ietzet zipf s Zaichen % . - - 3. Dyr Mörkl geet ietz auf de pässete schliessete Klammer. - - 4. Ietz demmlt % , und dyrmit kimmst gan dyr öffneretn Klammer zrugg. - - 5. Sötz önn Mörkl auf ayn anderne Klammer von ({[]}) und pröblt % aus. - ----> Dös ( ist blooß ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. )) - -Anmörkung: Um dö Müglichkeit gaast bsunders froo sein, wennst aynmaal in aynn - Spaichgwort verzweiflt ayn faelete Gögnklammer suechst! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«) - - - ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Ersötzn. ** - - 1. Gee mit n Mörkl zo dyr unt steehetn mit ---> angmörktn Zeil. - - 2. Zipf :s/dee/de . Der Befelh ersötzt alsnan grad dös +eerste "dee", - wo vürkimmt. - - 3. Ietz pröblt s mit :s/dee/de/g . Dös zuesötzliche g ("Pflok" nennt myn - öbbs Sölchers) bewirkt, däß allss, was dyrmit kennzaichnet ist, innerhalb - von dyr ainn Zeil ersötzt werd. - ----> Dee schoenste Zeit, däß myn dee Blüemln anschaut, ist dee schoene Lan- - gesszeit. - 4. Um ietz allsand Suechbegriff innerhalb von zwo Zeiln zo n Öndern, zipf - :#,#s/alt/neu/g , wobei # ieweils für de eerste und lösste Zeil von dönn - Pfraich steet. - :%s/alt/neu/g zipfst, däßst d Vürkemmen in dyr gantzn Dautticht öndertst. - Mit :%s/alt/neu/gc finddst allsand Vürkemmen in dyr gsamtn Dautticht; - daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 4 - - 1. g zaigt dönn ietzundn Dauttichtbefand und önn Darstand dyrvon an. - G bringt di an s End von dyr Dautticht. - G bringt di gan dyr entspröchetn Zeilnnummer. - gg bringt di zo dyr eerstn Zeil. - - 2. D Eingaab von / mit aynn Ausdruk suecht VÜRSHLING um dönn Ausdruk. - Gibst ? und aynn Suechbegrif ein, suecht s um dönn ÄRSHLING. - Zipf naach ayner Suech n ; naacherd werd in de gleiche Richtung weiter- - gsuecht. Mit N geet s umkeerter weiter. - o bringt di zo ölterne Befändd zrugg, i zo neuerne. - - 3. D Eingaab von % , wenn dyr Mörkl auf ainer von dene Klammern steet: ({[ - )]} , bringt di zo dyr Gögnklammer. - - 4. Um dös eerste Vürkemmen von "alt" in ayner Zeil durch "neu" z ersötzn, - zipf :s/alt/neu . - Um allsand in ayner Zeil z ersötzn, zipf :s/alt/neu/g . - Mechst allss in zwo Zeiln ersötzn, demmlt zo n Beispil :5,6s/alt/neu/g . - Mechst allss in dyr gantzn Dautticht ersötzn, gib ein: :%s/alt/neu/g . - Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÜERN - - - ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach :! ein. ** - - 1. Zipf dönn bekanntn Befelh : , dyrmitst mit n Mörkl auf n Bildschirm - ganz abhin kimmst. Draufhin kanst aynn gwonen Gfäßbefelh eingöbn. - - 2. Zeerst kimmt aber non ayn Ruefzaichen ! . Und ietz haast de Müglich- - keit, ayn beliebige ausserige Gfäßfaudung auszfüern. - - 3. Als Beispil zipf :!ls ; und schoon haast ayn Auflistung von deinn - Verzaichniss, netty wie wennst ganz gwon in n Eingib wärst. Geet ls - aus iewign aynn Grund nit, aft pröblt s mit :!dir . - -Also non aynmaal: Mit dönn Angang kan ayn iede beliebige ausserige Faudung aus- - gfüert werdn, aau mit Auerwerdd. - -Und wolgmörkt: Allsand Befelh, wo mit : angeend, müessend mit bstö- - tigt werdn. Dös dyrsagn myr vürbaß niemer. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.2: NON MEERER DRÜBER, WIE MYN DAUTTICHTN SCHREIBT - - - ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM. ** - - 1. Zipf :!dir older :!ls , däßst dyr ayn Auflistung von deinn Verzaich- - niss ausherlaasst. Däßst dyrnaach eingöbn muesst, waisst ee schoon. - - 2. Suech dyr aynn Dauttichtnam aus, dönn wo s non nit geit, öbbenn POCH. - - 3. Ietz demmlt: :w POCH (also mit POCH als dönn neuen Dauttichtnam). - - 4. Dös speichert ietz de gantze Dautticht, also önn Wimmschainer, unter dönn - Nam POCH. Dös kanst leicht überprüeffen, indem däßst ainfach :!ls older - :!dir zipfst und dyrmit deinn Verzaichnissinhalt seghst. - -Anmörkung: Stigst ietz aus n Wimm aus und gännst n aft wider mit vim POCH , - naacherd wär dö Dautticht ayn gnaune Aamum von n Schainer dyrselbn, - wiest n gspeichert haast. - - 5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit :!del POCH - beziehungsweis bei aynn Ainslgebäu mit :!rm POCH . -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN - -** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT ** - - 1. Ruck önn Mörkl auf netty dö Zeil daader. - - 2. Demmlt v und gee mit n Mörkl auf dönn fümftn Auflistungspunt untet. Du - seghst glei, däß s Gwort vürherghöbt erscheint. - - 3. Druck s Zaichen : . Ganz unt auf n Bildschirm erscheint :'<,'> . - - 4. Zipf w POCH , wobei s dönn Dauttichtnam POCH non nit geit. Vergwiß di, - däßst dös :'<,'>w POCH aau +seghst, ee wennst druckst. - - 5. Dyr Wimm schreibt de ausgwaltn Zeil eyn de Dautticht POCH einhin. Benutz - :!dir older :!ls , däßst dös überprüeffst. Lösh s fein nit öbbenn! Mir - brauchend s nömlich für de naehste Letzn. - -Anmörkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um- - aynandfarn, um d Auswal z veröndern. Drafter kan myn mit yn aynn - Pfemerer mit dönn Gwort öbbs machen. Zo n Beispil löscht d dös - Gwort. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN - - - ** Um önn Inhalt von ayner Dautticht einzlösn, zipf :r DAUTTICHTNAM ** - - 1. Sötz önn Mörkl über dö Zeil daader. - -OBACHT: Aft däßst önn Schrit 2 ausgfüert haast, seghst auf aynmaal öbbs aus - dyr Letzn 5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi- - derfinddst. - 2. Ietz lis dein Dautticht POCH ein, indem däßst d Faudung :r POCH aus- - füerst, wobei wie gsait POCH für dönn von dir ausgsuechtn Dauttichtnam - steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt. - - 3. Um zo n Überprüeffen, ob de Dautticht aau gwiß einglösn ist, gee zrugg; - und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 5.3. geit, s - Urniss und de eingfüegte Dauttichtfassung. - -Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei- - spil list :r !ls d Ausgaab von dyr Faudung ls ein und füegt s - unterhalb n Mörkl ein. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 5 - - - 1. :!FAUDUNG füert aynn ausserignen Befelh aus. - - Daader ayn Öttlych gwänddte Beispiler: - (Fenstl) (Ainsl - Leinsl) - :!dir :!ls - listt s Verzaichniss auf. - :!del DAUTTICHT :!rm DAUTTICHT - verweitert sele Dautticht. - - 2. :w DAUTTICHT speichert de ietzunde Wimmdautticht unter dönn besagtn Nam. - - 3. v WOLEND :w DAUTTICHTNAM schreibt de sichtisch ausgwaltn Zeiln eyn de - Dautticht mit seln Nam. - - 4. :r DAUTTICHTNAM ladt sele Dautticht und füegt s unterhalb n Mörklbefand - ein. - - 5. :r !dir list d Ausgaab von dyr Faudung dir und füegt s unterhalb n - Mörklbefand ein. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.1: ZEIL ÖFFNEN (»open«) - - - ** Zipf o, um ayn Zeil unterhalb n Mörkl z öffnen und eyn d ** - ** Einfüegartweis z kemmen. ** - - 1. Bewög önn Mörkl zo dyr eerstn mit ---> angmörktn Zeil unt. - - 2. Zipf o (klain), um ayn Zeil UNTERHALB n Mörkl z öffnen und mit dyr Ein- - füegartweis weiterztuen. - - 3. Ietz zipf ayn Weeng ayn Gwort und druck , um d Einfüegartweis z ver- - laassn. ----> Mit o werd dyr Mörkl auf de offene Zeil in dyr Einfüegartweis gsötzt. - - 4. Um ayn Zeil OBERHALB n Mörkl aufzmachen, gib ainfach aynn groosss O statt - yn aynn klainen ein. Versuech dös auf dyr untignen Zeil. - ----> Öffnet ayn Zeil über derer daader mit O , wenn dyr Mörkl auf derer Zeil - ist. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.2: GWORT ANFÜEGN (»append«) - - - ** Zipf a , um öbbs NAACH n Mörkl einzfüegn. ** - - 1. Bewög önn Mörkl gan n Anfang von dyr eerstn Üebungszeil mit ---> unt. - - 2. Druck e , hinst däß dyr Mörkl an n End von Zei steet. - - 3. Zipf ayn klains a , um öbbs NAACH n Mörkl anzfüegn. - - 4. Vergöntz dös Wort wie in dyr Zeil drunter. Druck , um d Schreib-Art- - weis z verlaassn. - - 5. Bewög di mit e zo n naehstn ungantzn Wort und widerhol d Schritt 3 und - 4. - ----> Dö Ze biett ayn Glögn , ayn Gwort in ayner Zeil anzfü. ----> Dö Zeil biett ayn Glögnet, ayn Gwort in ayner Zeil anzfüegn. - -Anmörkung: a , i und A bringend ainn gleichermaaßn eyn d Einfüegartweis; - dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«) - - - ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z ersötzn. ** - - 1. Bewög önn Mörkl zo dyr eerstn untignen, mit ---> angmörktn Zeil. - Gee mit n Mörkl gan n Anfang von n eerstn xxx . - - 2. Ietz druck R und zipf sele Zal, wo drunter in dyr zwaittn Zeil steet, - yso däß de sel s xxx ersötzt. - - 3. Druck , um d Ersötzungsartweis z verlaassn. Du gspannst, däß dyr - Rest von dyr Zeil unveröndert bleibt. - - 4. Äfert die Schritt, um dös überblibne xxx z ersötzn. - ----> S Zunddn von 123 zo xxx ergibt xxx. ----> S Zunddn von 123 zo 456 ergibt 579. - -Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis, aber ayn ieds eindem- - mlte Zaichen löscht ayn vorhanddns. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.4: GWORT AAMEN UND EINFÜEGN - - ** Benutz önn Pfemerer y , um öbbs z aamen, und p , um öbbs einzfüegn. ** - - 1. Gee zo dyr mit ---> angmörktn Zeil unt und sötz önn Mörkl hinter "a)". - - 2. Ginn d Sichtisch-Artweis mit v und bewög önn Mörkl gnaun vor "eerste". - - 3. Zipf y , um dönn vürherghöbtn Tail z aamen. - - 4. Bewög önn Mörkl gan n End von dyr naehstn Zeil: j$ - - 5. Demmlt p , um dös Gwort einzfüegn, und aft: a zwaitte . - - 6. Benutz d Sichtischartweis, um " Eintrag." auszwaln, aam s pfelfs y, be- - wög di gan n End von dyr naehstn Zeil mit j$ und füeg s Gwort dortn mit - p an. - ----> a) dös ist dyr eerste Eintrag. - b) - -Anmörkung: Du kanst y aau als Pfemerer verwenddn; yw aamt ain Wort. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.5: SCHALTTER SÖTZN - -** Sötz aynn Schaltter yso, däß ayn Suech older Ersötzung Grooß- und Klain- ** - ** schreibung übergeet. ** - - 1. Suech um 'übergee", indem däßst /übergee eingibst. - Widerhol d Suech ayn Öttlych Maal, indem däßst de Tastn n druckst. - - 2. Sötz de Zwisl - önn Schaltter - 'ic' (»ignore case«), indem däßst :set ic - eingibst. - 3. Ietz suech wider um 'übergee' und tue aau wider mit n weiter. Daa fallt - dyr auf, däß ietz öbbenn aau Übergee und ÜBERGEE hergeet. - - 4. Sötz de Zwisln 'hlsearch' und 'incsearch' pfelfs: :set hls is - - 5. Widerhol d Suech und bobacht, was ietz gschieght: /übergee - - 6. Däßst grooß und klain wider gwon unterscheidst, zipf: :set noic - -Anmörkung: Mechst de Tröffer niemer vürherghöbt seghn, gib ein: :nohlsearch -Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \c - in n Suechausdruk: /übergee\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 6 - - 1. Zipf o , um ayn Zeil UNTERHALB n Mörkl z öffnen und d Einfüegartweis z - ginnen. - Zipf O , um ayn Zeil OBERHALB n Mörkl z öffnen. - - 2. Zipf a , um NAACH n Mörkl ayn Gwort einzfüegn. - Zipf A , um ayn Gwort naach n Zeilnend anzfüegn. - - 3. D Faudung e bringt di gan n End von aynn Wort. - - 4. Dyr Pfemerer y (»yank«) aamt öbbs, p (»put«) füegt dös ein. - - 5. Ayn groosss R geet eyn d Ersötzungsartweis, hinst däß myn druckt. - - 6. D Eingaab von ":set xxx" sötzt de Zwisl "xxx". Ayn Öttlych Zwisln seind: - 'ic' 'ignorecase' Grooß/klain wurst bei ayner Suech - 'is' 'incsearch' Zaig aau schoon ayn Tailüberainstimmung - 'hls' 'hlsearch' Höb allsand pässetn Ausdrück vürher - Dyr Schaltternam kan in dyr Kurz- older Langform angöbn werdn. - - 7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst: :set noic -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.1: AYN HILFGWORT AUFRUEFFEN - - - ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung" ** - - Eyn n Wimm ist ayn ausfüerliche "Gebrauchsanweisung" einbaut. Für s Eerste - pröblt ainfach ains von dene dreu aus: - - Druck d -Tastn, wennst öbbenn aine haast. - - Druck de Tastn , fallsst ys haast. - - Zipf :help - - Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie dös mit dyr Hilf geet. - Demmlt w w , um von ainn Fenster zo n andern zo n Springen. - Demmlt :q , um s Hilffenster zo n Schliessn. - - Du kanst zo so guet wie allssand ayn Hilf finddn, indem däßst yn dyr Faudung - :help aynn Auerwerd naachstöllst und istig nit vergisst. Pröblt dös: - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF - - - ** Mutz önn Wimm mit de einbautn Faehigkeitn auf ** - - Dyr Wimm besitzt ayn Wösn Schäftungen, wo über n Urwimm aushingeend, aber de - meerern dyrvon seind in dyr Vorgaab ausgschaltt. Dyrmitst meerer aus n Wimm - ausherholst, erstöllst ayn "vimrc"-Dautticht. - - 1. Lög ayn "vimrc"-Dautticht an; dös geet ie naach Betribsgebäu verschidn: - :e ~/.vimrc für s Ainsl - :e $VIM/_vimrc bei n Fenstl - - 2. Ietz lis önn Inhalt von dyr Beispil-"vimrc"-Dautticht ein: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Speichert de Dautticht mit: - :w - - 4. Bei n naehstn Gin von n Wimm ist aft d Füegnussvürherhöbung zuegschaltt. - Du kanst dyr allss eyn dö Dautticht einhinschreibn, wasst bständig habn - willst. Meerer dyrzue erfarst unter: :help vimrc-intro -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.3: VERGÖNTZN - - - ** Befelhszeilnvergöntzung mit d und ** - - 1. Vergwiß di, däß dyr Wimm nit auf n Urwimm-"Glais" fart: :set nocp - - 2. Schaug naach, wölcherne Dauttichtn däß s in n Verzaichniss geit: :!ls - older :!dir - 3. Zipf önn Anfang von ayner Faudung: :e - - 4. Druck d , und dyr Wimm zaigt ayn Listn von Faudungen, wo mit "e" - angeend. - 5. Druck , und dyr Wimm vervollstöndigt önn Faudungsnam zo ":edit". - - 6. Füeg ayn Laerzaichen und önn Anfang von ayner besteehetn Dautticht an: - :edit DAU - - 7. Druck . Dyr Wimm vergöntzt önn Nam, dös haisst, wenn yr aindeuttig - ist. -Anmörkung: D Vergöntzung geit s für aynn Hauffen Faudungen. Versuech ainfach - d und . Bsunders nützlich ist dös bei :help . -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 7 - - - 1. Zipf :help older druck older , um ayn Hilffenster z öffnen. - - 2. Zipf :help FAUDUNG , um auf ayn Hilf gan aynn Befelh z kemmen. - - 3. Zipf w w , um zo n andern Fenster z springen. - - 4. Zipf :q , um s Hilffenster z schliessn. - - 5. Erstöll ayn vimrc-Ginschripf zuer Sicherung von deine Mötzneinstöllungen. - - 6. Druck d, aft däßst naach : mit ayner Faudung angfangt haast, dyr- - mitst mügliche Vergöntzungen anzaigt kriegst. - Druck für ain Vervollstöndigung yllain. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Dös wär ietzet s End von n Wimmschainer. Gangen ist s daa drum, aynn kurtzn - und bündignen Überblik über s Blat WIMM z lifern, netty vil gnueg, däß myn - für s Eerste wirklich öbbs dyrmit anfangen kan. Dyrmit ist s aber auf kain - Weitn non nit taan; dyr Wimm haat schoon non vil meerer auf Lager. Lis als - Naehsts aynmaal s Benutzerhandbuech: :help user-manual . - - Zo n Weiterlösn und Weiterlernen wör dös Buech daader zo n Empfelhen: - Vim - Vi Improved - von n OUALLINE Steve - Verlaag: New Riders - Dös ist dös eerste Buech, wo ganz yn n Wimm gwidmt ist, netty dös Grechte für - Anfönger. Es haat ayn Wösn Beispiler und aau Bilder drinn. - See http://iccf-holland.org/click5.html - - Dös folgete Buech ist schoon ölter und meerer über n Urwimm als wie über n - Wimm, aber aau zo n Empfelhen: Textbearbeitung mit dem vi-Editor - von dyr - LAMB Linda und n ROBBINS Arnold - Verlaag O'Reilly - Buechlaittzal (ISBN): - 3897211262 - In dönn Buech kan myn fast allss finddn, was myn mit n Urwimm angeen mecht. - De söxte Ausgaab enthaltt aau schoon öbbs über n Wimm. - Als ietzunde Bezugniss für d Fassung 6.2 und ayn pfrenge Einfüerung dient - dös folgete Buech: - vim ge-packt von n WOBST Reinhard - mitp-Verlaag, Buechlaittzal 3-8266-1425-9 - Trotz dyr recht pfrengen Darstöllung ist s durch seine viln nützlichnen Bei- - spiler aau für Einsteiger grad grecht. Probhaeupster und de Beispilschripfer - seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html - - Verfasst habnd dönn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr - Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwürff, wo - dyr SMITH Charles von dyr Kolraader Allschuel (Colorado State University) - zuer Verfüegung gstöllt haat. Gundpost: bware@mines.colorado.edu. - Für n Wimm haat n dyr MOOLENAAR Bram barechtt. - De bairische Übersötzung stammt von n HELL Sepp 2009. Sein Gundpostbrächt ist - sturmibund@t-online.de - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - - - - diff --git a/share/vim/vim73/tutor/tutor.bj.utf-8 b/share/vim/vim73/tutor/tutor.bj.utf-8 deleted file mode 100644 index 80c3aded..00000000 --- a/share/vim/vim73/tutor/tutor.bj.utf-8 +++ /dev/null @@ -1,987 +0,0 @@ -=============================================================================== -= G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7D = -=============================================================================== - - Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z - vil, däß myn s allsand in aynn Schainer wie dönn daader unterbräng. Der - Schainer ist yso aufbaut, däß yr halt netty die Befelh allsand bringt, wost - brauchst, däßst mit iem für s Eerste wirklich öbbs anfangen kanst. - Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; dös haisst, - wennst di nit grooß mit n Pröbln und Tüftln aufhaltst. - - OBACHT: - Die Faudungen, wost daader finddst, gaand istig s Gwort öndern. Dösswögn - machst eyn n Böstn glei ayn Aamum von derer Dautticht daader. Haast alsnan - dös Gwort daader mit n Befelh "vimtutor bj" ausherlaassn, ist s ee schoon - ayn Aamum. - Mir kan s nit oft gnueg sagn, däß der Schainer daader istig gan n Üebn - ghoert. Also muesst schoon aau die Befelh ausfüern, wennst ys gscheid ler- - nen willst. Mit n Lösn yllain ist s +nit taan! - - Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest - glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich), hinst däßst - de gantze Letzn 1.1 auf n Bildschirm haast. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.1: MIT N MÖRKL UMAYNANDFARN - -** Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt. ** - ^ Ayn Öslsbrugg: - k De Tastn h ist winster und +geet aau gan winster. - < h l > S l leit zesm und richtt si gan zesm. - j S j kan myn wie aynn Pfeil gan unt seghn. - v Mit n k kimmst gan n KOPF. - 1. Ietz ruedertst ainfach mit n Mörkl auf n Bildschirm umaynand, hinst däßst - di sicher füelst. - 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso - kimmst gan dyr naehstn Letzn. - - 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2. - -Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft - zipfst ; naacherd bist wider ganz gwon in dyr Befelhs-Artweis. - - - Nöbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter. Aber - hjkl seind z haissn s Wimm-Urgstain; und de "Hörtn" seind ganz dyr- - für, däß myn bei +dene bleibt. Pröblt s ainfach aus! -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.2: ÖNN WIMM AUSSCHALTTN - - - ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÜERST, LIS LIEBER ZEERST DE GANTZE LET- - ZN! - - 1. Druck d -Tastn, dyrmitst aau gwiß in dyr Befelhs-Artweis bist. - - 2. Demmlt :q! . - Daa dyrmit benddst ys Blat und verwirffst allss, wasst öbbenn göndert - haast. - - 3. Balst önn Eingib seghst, gib dö Faudung ein, wo di zo dönn Schainer brun- - gen haat, also vimtutor bj . - - 4. Also, wenn ietz allsse sitzt, naacherd füerst d Schritt 1 hinst 3 aus, mit - wasst ys Blat verlaasst und aft wider einhinkimmst. - -Anmörkung: Mit :q! verwirffst allss, wasst göndert older enther gschribn - haast. In aynn Öttlych Letznen lernst acht, wiest dös allss in ayner - Dautticht speichertst. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.3: GWORT BARECHTN - LÖSCHN - - - ** Druck x , dyrmitst dös Zaichen unter n Mörkl löschst. ** - - 1. Bewög di mit n Mörkl auf de mit ---> angmörkte Zeil unt. - - 2. Zo n Faeler Verbössern farst mit n Mörkl netty auf dös Zaichen, dös wo - glöscht ghoert. - - 3. Druck de Tastn x , däßst dös überflüssige Zaichen löschst. - - 4. Ietz tuest so lang weiter mit 2 hinst 4, hinst däß dyr Saz stimmt. - ----> De Kkuue sprangg übber nn Maanad. - - 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter. - -Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn, - allss auswendig z lernen; nän, lern ainfach mit n Anwenddn! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.4: GWORT BARECHTN - EINFÜEGN - - - ** Druck i , dyrmitst öbbs einfüegst. ** - - 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil, wo mit ---> angeet. - - 2. Dyrmitst de eerste Zeil wie de zwaitte machst, bewög önn Mörkl auf dös - eerste Zaichen NAACH derer Stöll, daa wo s Gwort eingfüegt werdn sollt. - - 3. Druck i und gib dös ein, was abgeet. - - 4. Wenn ieweils ayn Faeler verweitert ist, aft druck ; und dyrmit kimmst - gan dyr Befelhsartweis zrugg. - So, und ietz tuest ainfach yso weiter, hinst däß dyr Saz stimmt. - ----> Daader gt dd öbbs b. ----> Daader geet diend öbbs ab. - - 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.5: GWORT BARECHTN - ANFÜEGN - - - ** Druck A gan n Gwort Anfüegn. ** - - 1. Gee mit n Mörkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat. - Daa ist s gleich, wo gnaun dyr Mörkl in derer Zeil steet. - - 2. Demmlt A und gib de entspröchetn Ergöntzungen ein. - - 3. Wennst mit n Anfüegn förtig bist, aft druckst , däßst wider eyn de - Befelhsartweis zruggkimmst. - - 4. So, und ietz geest aft non gan dyr zwaittn mit ---> angmörktn Zeil; und - daadl machst ys netty yso. - ----> In derer Zeil gee - In derer Zeil geet ayn Weeng ayn Gwort ab. ----> Aau daader stee - Aau daader steet öbbs Unvollstöndigs. - - 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 1.6: AYN DAUTTICHT BARECHTN - - - ** Mit :wq speichertst ayn Dautticht und verlaasst önn Wimm ganz. ** - - !! OBACHT: Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze - Letzn durch!! - - 1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! ! - - 2. Gib dö Faudung eyn n Eingib ein: vim Schainer . 'vim' ruefft s Blat - auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit - haast also ayn Dautticht, dö wost barechtn kanst. - - 3. Ietz füegst öbbs ein older löschst öbbs, wiest ys in de vorignen Letznen - glernt haast. - - 4. Speichert de gönderte Dautticht und verlaaß önn Wimm mit :wq . - - 5. Schmeiß önn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung. - - 6. Aft däßst de obignen Schritt glösn und käppt haast, kanst ys durchfüern. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 1 - - - 1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert. - h (winst) j (ab) k (auf) l (zes) - - 2. Um önn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT . - - 3. Willst önn Wimm verlaassn und aau allss verwerffen, aft gibst ein: - :q! . - Gan n Verlaassn und Speichern aber zipfst :wq . - - 4. Willst dös Zaichen löschn, daa wo dyr Mörkl drauf ist, demmltst x . - - 5. Willst öbbs vor n Mörkl eingöbn, zipfst i und drafter . - Mechst ys aber eyn s Zeilnend anhinhöngen, benutzt ys A . - Und ainfach naach n Mörkl füegst ys mit a ein . - -Anmörkung: Druckst , kimmst eyn de Befelhsartweis zrugg older brichst ayn - Faudung ab, dö wo dyr schiefgangen ist. - - Ietz tue mit dyr Letzn 2 weiter. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.1.: LÖSHFAUDUNGEN - - - ** Demmlt dw , dyrmitst ayn Wort löschst ** - - 1. Druck , dyrmit s aau gwiß ist, däßst in dyr Befelhsartweis bist. - - 2. Bewög önn Mörkl zo dyr mit ---> angmörktn Zeil unt. - - 3. Und daa geest ietz auf n Anfang von aynn Wort, dös wo glöscht ghoert. - - 4. Zipf dw , däßst dös gantze Wort löschst. - - Nöbnbei: Dyr Buechstabn d erscheint auf dyr lösstn Zeil von n Bildschirm, - sobaldst n eingibst. Dyr Wimm wartt ietz drauf, däß öbbs kimmt, al- - so daader ayn w . Seghst freilich öbbs Anderts wie ayn d , - naacherd haast öbbs Falschs demmlt. Druck aft und pröblt - s non aynmaal. ----> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin. - - 5. Äfert d Schritt 3 und 4, hinst däß dyr Saz pässt, und gee aft gan dyr - Letzn 2.2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN - - - ** Gib d$ ein, däßst hinst eyn s Zeilnend löschst. ** - - 1. Druck , dyrmitst aau gwiß in dyr Befelhsartweis bist. - - 2. Bewög önn Mörkl hinst eyn de mit ---> angmörkte Zeil untn. - - 3. Gee mit n Mörkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn . . - - 4. Zipf d$ , däßst hinst eyn s End von dyr Zeil löschst. - ----> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn. - - - 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.3: PFEMERER UND WOLENDER - - - Vil Faudungen, wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo- - lend zamm. Bal i also öbbs löschn will, schreib i ainsting d und aft s "Wo- - lend", dös haisst also, "wolend", "wohin" däß i will - older was i halt gnaun - löschn will. - - - - - - - Daader also, was i wie löschn kan: - w - hinst eyn n Anfang von n naehstn Wort AANE dönn sein eersts Zaichen. - e - gan n End von n ietzundn Wort MIT dönn seinn lösstn Zaichen. - $ - zo n End von dyr Zeil MIT derer irn lösstn Zaichen. - - Also löscht de Tastnfolg de umbb n Mörkl hinst eyn s Wortend. -Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mörkl - entspröchet weiter. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN - - - ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel halt widerholt. ** - - 1. Bewög önn Mörkl gan n Anfang von dyr Zeil mit ---> dyrvor unt. - - 2. Zipf 2w , däßst mit n Mörkl zwai Wörter weitergeest. - - 3. Zipf 3e , däßst mit n Mörkl auf s End von n drittn Wort kimmst. - - 4. Zipf 0 (aynn Nuller), däßst eyn n Anfang von dyr Zeil hinkimmst. - - 5. Widerhol d Schritt 2 und 3 mit verschaidne Zöler. - - ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern. - - 6. Gee weiter gan dyr Letzn 2.5. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN - - - ** Ayn Zal vor aynn Pfemerer äfert dönn um seln Werd. ** - - Also, i mecht löschn, und zwaar öbbs Bestimmts, und dös so und so oft: Daa - dyrzue benutz i aynn Zöler: - d Zöler Wolend (also önn Bewögungsschrit) - - 1. Bewög önn Mörkl gan n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an- - gmörktn Zeil. - - 2. Demmlt d2w , dyrmitst de ganz grooßgschribnen Wörter löschst. - - 3. Äfert d Schritt 1 und 2 mit dönn entspröchetn Zöler, dyrmitst de drauf- - folgetn ganz großgschribnen Wörter mit ayner ainzignen Faudung löschst: - - ----> Dö ABC DE Zeil FGHI JK LMN OP mit Wörter ist Q RS TUV ietz berichtigt. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.6: ARECHTN AUF ZEILN - - - ** Zipf dd , um ayn gantze Zeil z löschn. ** - - Weil s gro oft vürkimmt, däß myn gantze Zeiln löscht, kaamend schoon d Ent- - wickler von n Urwimm daa drauf, däß myn ainfach dd gan dönn Zwök schreibt. - - - 1. Bewög önn Mörkl gan dyr zwaittn Zeil in n untignen "Gedicht". - 2. Zipf dd , um dö Zeil z löschn. - 3. Ietz bewögst di gan dyr viertn Zeil. - 4. Zipf 2dd , um zwo Zeiln zo n Löschn. - ----> 1) Roosn seind root; ----> 2) Drunter ist s Koot. ----> 3) Veigerln seind blau. ----> 4) Umgrabn tuet s d Sau. ----> 5) D Ur sait de Zeit, ----> 6) Sait, däß s mi freut, ----> 7) Dirndl, dein Gschau. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN) - - - ** Zipf u , dyrmitst de lösstn Faudungen ruggltst ** - ** older U , um ayn gantze Zeil widerherzstölln. ** - - 1. Bewög önn Mörkl gan dyr mit ---> angmörktn Zeil unt und gee dyrmit auf n - eerstn Faeler. - 2. Zipf x , däßst dös eerste z vile Zaichen löschst. - 3. Ietz demmlt u , dyrmitst de lösste Faudung ruggltst. - 4. Ietz behöb allsand Faeler auf dyr Zeil mit dyr Hilf von n Befelh x . - 5. Aft gibst ayn U (grooß) ein, däßst de Zeil wider yso hinbringst, wie s - gwösn ist. - 6. So, und ietz demmltst so oft u , hinst däßst s U und de andern Fau- - dungen rugggöngig gmacht haast. - 7. Und ietzet widerum schreibst so oft r , hinst däßst allsand Be- - felh widerhergstöllt, z haissn allsse rugg-grugglt haast (also d Rugggön- - gigmachungen rugggöngig gmacht). ----> Beerichtig d Faeller voon dehrer Zeiil und sttöll s mitt n Ruggruggln wi- - der her. - 8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter. - Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 2 - - - 1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf: dw - 2. Um umbb n Mörkl hinst eyn s End von dyr Zeil zo n Löschn, demmlt d$ - 3. Dyrmitst ayn gantze Zeil löschst, gib ein: dd - 4. Mechst ayn Bewögung, ayn "Wolend", öfters, stöll de entspröchete Zal dyr- - vor: 3dw older aau: d3w - 5. Dyr Pfueg für ayn Önderungsfaudung lautt yso: - Pfemerer [Zal] Bewögungsschrit (Wolend) - Und dös haisst: - Dyr PFEMERER gibt an, WAS taan ghoert, öbbenn d = löschn (»delete«). - [ZAL] - Ayn Zal KAN myn angöbn, wenn myn halt ayn Wolend öfter habn will. - S WOLEND, also dyr Schrit WOHIN, besagt, auf was i aushin will, öbbenn - auf ayn Wort ( w ), s End von dyr Zeil ( $ ) und so weiter. - - 6. Däßst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller: 0 - - 7. Um öbbs Vorigs wider z ruggln, gib ein: u (klain also) - Um allsand Önderungen in ayner Zeil z ruggln, haast: U (also grooß) - Um "rugg-z-ruggln", also allss wider herzstölln, zipf: r - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.1: ANFÜEGN (»put«) - - - ** Zipf p , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. ** - - 1. Bewög önn Mörkl gan dyr eerstn untignen Zeil mit ---> dyrvor. - - 2. Zipf dd , um sele Zeil z löschn und dyrmit in aynn Wimm-"Roster" zo n - speichern. - - 3. Bewög önn Mörkl gan dyr Zeil c), ÜBER derer, daa wo de glöschte Zeil ein- - hinkemmen sollt. - - 4. So, und ietz gibst ainfach p ein, und schoon haast dö Zeil unter derer - mit n Mörkl drinn. - 5. Äfert d Schritt 2 hinst 4, hinst däßst allsand Zeiln yso naachynaynand - haast, wie s hinghoernd. - ----> d) Kanst du dös aau? ----> b) Veigerln seind blau. ----> c) Bedachtn kan myn lernen. ----> a) Roosn seind root. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.2: ERSÖTZN (»replace«) - - - ** Zipf rx , um dös Zaichen unter n Mörkl durch x z ersötzn. ** - - 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil mit ---> dyrvor. - - 2. Bewög önn Mörkl, hinst däß yr auf n eerstn Faeler steet. - - 3. Zipf r und drafter dös Zaichen, wo dyrfür daa hinghoert. - - 4. Widerhol d Schritt 2 und 3, hinst däßst de eerste Zeil gmaeß dyr zwaittn - berichtigt haast: ----> Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft! ----> Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft! - - 5. Ietz tue mit dyr Letzn 3.3 weiter. - -Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn - mit n Auswendiglernen! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.3: ÖNDERN (»change«) - - - ** Um hinst eyn s Wortend z öndern, zipf ce . ** - - 1. Gee mit n Mörkl auf de eerste mit ---> angmörkte Zeil. - - 2. Ietz farst netty auf s "s" von Wstwr hin. - - 3. Zipf ce ein und aft d Wortberichtigung, daader also örter . - - 4. Druck und bewög önn Mörkl gan n naehstn Zaichen, wo göndert ghoert. - - 5. Äfert d Schritt 3 und 4, hinst däß dyr eerste Saz wie dyr zwaitte ist. - ----> Ainige Wstwr von derer Zlww ghhnnd mit n Öndern-Pfemerer gaauu. ----> Ainige Wörter von derer Zeil ghoernd mit n Öndern-Pfemerer göndert. - -ce löscht also s Wort und schlaaufft di eyn d Eingaab-Artweis. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 3.4.: NON MEERER ÖNDERUNGEN PFELFS c - - - ** D Löshfaudung c arechtt mit de nömlichnen Wolender wie dö mit d ** - - 1. Dyr Önder-Pfemerer arechtt anleich wie d Löshfaudung mit d , und zwaar - yso: - c [Zal] Bewögungsschritt (Wolend) - - 2. D Wolender seind de gleichn, öbbenn w für Wort und $ für s Zeilnend. - - - 3. Bewög di zo dyr eerstn untignen Zeil mit ---> . - - 4. Ietz geest auf dönn eerstn Faeler. - - 5. Zipf c$ , gib önn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft - . ----> S End von derer Zeil sollt an de zwaitte daader anglichen werdn. ----> S End von derer Zeil sollt mit n Befelh c$ berichtigt werdn. - -Denk allweil dran, däßst iederzeit mit dyr Ruggtastn Faeler ausbössern kanst. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 3 - - - 1. Um ayn vorher glöschts Gwort anzfüegn, zipf p . Daa dyrmit werd dös - gantze Gwort NAACH n Mörkl angfüegt. Wenn s ayn gantze Zeil gwösn ist, - werd dö sel als de Zeil unterhalb n Mörkl eingfüegt. - - 2. Um dös Zaichen unter n Mörkl, also wo dyr Mörkl ist, z ersötzn, zipf r - und aft dös Zaichen, wost daadl habn willst. - - 3. Dyr Önderungspfemerer ( c = »change«) laasst ainn umbb n Mörkl hinst eyn s - End von n Wolend öndern. Zipf ce , dyrmitst umbb n Mörkl hinst eyn s End - von n Wort öndertst, und c$ hinst eyn s End von dyr Zeil. - - 4. Für d Önderung lautt dyr Pfueg: - - c [Zal] Wolend - -Ietz tue mit dyr naehstn Letzn weiter. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND - -** Demmlt g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. ** - ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. ** - -Anmörkung: Lis dö gantze Letzn daader durch, ee wennst iewign öbbs unternimmst! - - 1. Druck g . Auf dös hin erscheint auf derer Seitt ganz unt ayn Dar- - standsmeldung mit n Dauttichtnam und n Befand innerhalb dyr Dautticht. - Mörk dyr de Zeilnnummer für n Schrit 3. - -Anmörkung: Müglicherweis seghst aau önn Mörklbefand in n zesmen untern Bild- - schirmögg. Aft ist s "Lindl" (»ruler«) eingstöllt; schau dyrzue mit - n Befelh :help 'ruler' naach. - 2. Druck G , um an s End von dyr Dautticht z kemmen. - gg gibst ein, däßst gan n Anfang von dyr Dautticht aufhinkimmst. - - 3. Gib d Nummer von derer Zeil ein, daa wost vorher warst, und aft non G . - Dös bringt di zrugg gan seler Zeil, daa wost stuenddst, wiest dös eerste - Maal g gadruckst. - - 4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.2: DYR BEFELH ZO N SUECHEN - - - ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. ** - - 1. Du gibst also in dyr Befelhsartweis s Zaichen / ein. Dös sel wie aau dyr - Mörkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung : . - - 2. Ietz zipf 'Faeeler' . Netty um dös 'Faeeler' willst ietz suechen. - - 3. Willst um gnaun dönn Ausdruk weitersuechen, zipf ainfach n (wie »next«). - Willst hinzrugg suechen, aft gibst N ein. - - 4. Um von Haus aus zruggaus z suechen, nimm ? statt / her. - - 5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, druck o, und dös - öfter, wennst weiter zrugg willst. Mit i widerum kimmst vorwärts. - ----> Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler - -Anmörkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi- - der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wär auf aus. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.3: DE GÖGNKLAMMERN FINDDN - - - ** Zipf % , um de entspröchete Klammer ) , ] older } z finddn. ** - - 1. Sötz önn Mörkl auf iewign aine von dene drei Klammern ( , [ older { - in dyr untignen Zeil, wo mit ---> angmörkt ist. - - 2. Ietzet zipf s Zaichen % . - - 3. Dyr Mörkl geet ietz auf de pässete schliessete Klammer. - - 4. Ietz demmlt % , und dyrmit kimmst gan dyr öffneretn Klammer zrugg. - - 5. Sötz önn Mörkl auf ayn anderne Klammer von ({[]}) und pröblt % aus. - ----> Dös ( ist blooß ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. )) - -Anmörkung: Um dö Müglichkeit gaast bsunders froo sein, wennst aynmaal in aynn - Spaichgwort verzweiflt ayn faelete Gögnklammer suechst! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«) - - - ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Ersötzn. ** - - 1. Gee mit n Mörkl zo dyr unt steehetn mit ---> angmörktn Zeil. - - 2. Zipf :s/dee/de . Der Befelh ersötzt alsnan grad dös +eerste "dee", - wo vürkimmt. - - 3. Ietz pröblt s mit :s/dee/de/g . Dös zuesötzliche g ("Pflok" nennt myn - öbbs Sölchers) bewirkt, däß allss, was dyrmit kennzaichnet ist, innerhalb - von dyr ainn Zeil ersötzt werd. - ----> Dee schoenste Zeit, däß myn dee Blüemln anschaut, ist dee schoene Lan- - gesszeit. - 4. Um ietz allsand Suechbegriff innerhalb von zwo Zeiln zo n Öndern, zipf - :#,#s/alt/neu/g , wobei # ieweils für de eerste und lösste Zeil von dönn - Pfraich steet. - :%s/alt/neu/g zipfst, däßst d Vürkemmen in dyr gantzn Dautticht öndertst. - Mit :%s/alt/neu/gc finddst allsand Vürkemmen in dyr gsamtn Dautticht; - daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 4 - - 1. g zaigt dönn ietzundn Dauttichtbefand und önn Darstand dyrvon an. - G bringt di an s End von dyr Dautticht. - G bringt di gan dyr entspröchetn Zeilnnummer. - gg bringt di zo dyr eerstn Zeil. - - 2. D Eingaab von / mit aynn Ausdruk suecht VÜRSHLING um dönn Ausdruk. - Gibst ? und aynn Suechbegrif ein, suecht s um dönn ÄRSHLING. - Zipf naach ayner Suech n ; naacherd werd in de gleiche Richtung weiter- - gsuecht. Mit N geet s umkeerter weiter. - o bringt di zo ölterne Befändd zrugg, i zo neuerne. - - 3. D Eingaab von % , wenn dyr Mörkl auf ainer von dene Klammern steet: ({[ - )]} , bringt di zo dyr Gögnklammer. - - 4. Um dös eerste Vürkemmen von "alt" in ayner Zeil durch "neu" z ersötzn, - zipf :s/alt/neu . - Um allsand in ayner Zeil z ersötzn, zipf :s/alt/neu/g . - Mechst allss in zwo Zeiln ersötzn, demmlt zo n Beispil :5,6s/alt/neu/g . - Mechst allss in dyr gantzn Dautticht ersötzn, gib ein: :%s/alt/neu/g . - Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÜERN - - - ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach :! ein. ** - - 1. Zipf dönn bekanntn Befelh : , dyrmitst mit n Mörkl auf n Bildschirm - ganz abhin kimmst. Draufhin kanst aynn gwonen Gfäßbefelh eingöbn. - - 2. Zeerst kimmt aber non ayn Ruefzaichen ! . Und ietz haast de Müglich- - keit, ayn beliebige ausserige Gfäßfaudung auszfüern. - - 3. Als Beispil zipf :!ls ; und schoon haast ayn Auflistung von deinn - Verzaichniss, netty wie wennst ganz gwon in n Eingib wärst. Geet ls - aus iewign aynn Grund nit, aft pröblt s mit :!dir . - -Also non aynmaal: Mit dönn Angang kan ayn iede beliebige ausserige Faudung aus- - gfüert werdn, aau mit Auerwerdd. - -Und wolgmörkt: Allsand Befelh, wo mit : angeend, müessend mit bstö- - tigt werdn. Dös dyrsagn myr vürbaß niemer. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.2: NON MEERER DRÜBER, WIE MYN DAUTTICHTN SCHREIBT - - - ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM. ** - - 1. Zipf :!dir older :!ls , däßst dyr ayn Auflistung von deinn Verzaich- - niss ausherlaasst. Däßst dyrnaach eingöbn muesst, waisst ee schoon. - - 2. Suech dyr aynn Dauttichtnam aus, dönn wo s non nit geit, öbbenn POCH. - - 3. Ietz demmlt: :w POCH (also mit POCH als dönn neuen Dauttichtnam). - - 4. Dös speichert ietz de gantze Dautticht, also önn Wimmschainer, unter dönn - Nam POCH. Dös kanst leicht überprüeffen, indem däßst ainfach :!ls older - :!dir zipfst und dyrmit deinn Verzaichnissinhalt seghst. - -Anmörkung: Stigst ietz aus n Wimm aus und gännst n aft wider mit vim POCH , - naacherd wär dö Dautticht ayn gnaune Aamum von n Schainer dyrselbn, - wiest n gspeichert haast. - - 5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit :!del POCH - beziehungsweis bei aynn Ainslgebäu mit :!rm POCH . -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN - -** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT ** - - 1. Ruck önn Mörkl auf netty dö Zeil daader. - - 2. Demmlt v und gee mit n Mörkl auf dönn fümftn Auflistungspunt untet. Du - seghst glei, däß s Gwort vürherghöbt erscheint. - - 3. Druck s Zaichen : . Ganz unt auf n Bildschirm erscheint :'<,'> . - - 4. Zipf w POCH , wobei s dönn Dauttichtnam POCH non nit geit. Vergwiß di, - däßst dös :'<,'>w POCH aau +seghst, ee wennst druckst. - - 5. Dyr Wimm schreibt de ausgwaltn Zeil eyn de Dautticht POCH einhin. Benutz - :!dir older :!ls , däßst dös überprüeffst. Lösh s fein nit öbbenn! Mir - brauchend s nömlich für de naehste Letzn. - -Anmörkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um- - aynandfarn, um d Auswal z veröndern. Drafter kan myn mit yn aynn - Pfemerer mit dönn Gwort öbbs machen. Zo n Beispil löscht d dös - Gwort. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN - - - ** Um önn Inhalt von ayner Dautticht einzlösn, zipf :r DAUTTICHTNAM ** - - 1. Sötz önn Mörkl über dö Zeil daader. - -OBACHT: Aft däßst önn Schrit 2 ausgfüert haast, seghst auf aynmaal öbbs aus - dyr Letzn 5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi- - derfinddst. - 2. Ietz lis dein Dautticht POCH ein, indem däßst d Faudung :r POCH aus- - füerst, wobei wie gsait POCH für dönn von dir ausgsuechtn Dauttichtnam - steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt. - - 3. Um zo n Überprüeffen, ob de Dautticht aau gwiß einglösn ist, gee zrugg; - und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 5.3. geit, s - Urniss und de eingfüegte Dauttichtfassung. - -Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei- - spil list :r !ls d Ausgaab von dyr Faudung ls ein und füegt s - unterhalb n Mörkl ein. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 5 - - - 1. :!FAUDUNG füert aynn ausserignen Befelh aus. - - Daader ayn Öttlych gwänddte Beispiler: - (Fenstl) (Ainsl - Leinsl) - :!dir :!ls - listt s Verzaichniss auf. - :!del DAUTTICHT :!rm DAUTTICHT - verweitert sele Dautticht. - - 2. :w DAUTTICHT speichert de ietzunde Wimmdautticht unter dönn besagtn Nam. - - 3. v WOLEND :w DAUTTICHTNAM schreibt de sichtisch ausgwaltn Zeiln eyn de - Dautticht mit seln Nam. - - 4. :r DAUTTICHTNAM ladt sele Dautticht und füegt s unterhalb n Mörklbefand - ein. - - 5. :r !dir list d Ausgaab von dyr Faudung dir und füegt s unterhalb n - Mörklbefand ein. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.1: ZEIL ÖFFNEN (»open«) - - - ** Zipf o, um ayn Zeil unterhalb n Mörkl z öffnen und eyn d ** - ** Einfüegartweis z kemmen. ** - - 1. Bewög önn Mörkl zo dyr eerstn mit ---> angmörktn Zeil unt. - - 2. Zipf o (klain), um ayn Zeil UNTERHALB n Mörkl z öffnen und mit dyr Ein- - füegartweis weiterztuen. - - 3. Ietz zipf ayn Weeng ayn Gwort und druck , um d Einfüegartweis z ver- - laassn. ----> Mit o werd dyr Mörkl auf de offene Zeil in dyr Einfüegartweis gsötzt. - - 4. Um ayn Zeil OBERHALB n Mörkl aufzmachen, gib ainfach aynn groosss O statt - yn aynn klainen ein. Versuech dös auf dyr untignen Zeil. - ----> Öffnet ayn Zeil über derer daader mit O , wenn dyr Mörkl auf derer Zeil - ist. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.2: GWORT ANFÜEGN (»append«) - - - ** Zipf a , um öbbs NAACH n Mörkl einzfüegn. ** - - 1. Bewög önn Mörkl gan n Anfang von dyr eerstn Üebungszeil mit ---> unt. - - 2. Druck e , hinst däß dyr Mörkl an n End von Zei steet. - - 3. Zipf ayn klains a , um öbbs NAACH n Mörkl anzfüegn. - - 4. Vergöntz dös Wort wie in dyr Zeil drunter. Druck , um d Schreib-Art- - weis z verlaassn. - - 5. Bewög di mit e zo n naehstn ungantzn Wort und widerhol d Schritt 3 und - 4. - ----> Dö Ze biett ayn Glögn , ayn Gwort in ayner Zeil anzfü. ----> Dö Zeil biett ayn Glögnet, ayn Gwort in ayner Zeil anzfüegn. - -Anmörkung: a , i und A bringend ainn gleichermaaßn eyn d Einfüegartweis; - dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«) - - - ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z ersötzn. ** - - 1. Bewög önn Mörkl zo dyr eerstn untignen, mit ---> angmörktn Zeil. - Gee mit n Mörkl gan n Anfang von n eerstn xxx . - - 2. Ietz druck R und zipf sele Zal, wo drunter in dyr zwaittn Zeil steet, - yso däß de sel s xxx ersötzt. - - 3. Druck , um d Ersötzungsartweis z verlaassn. Du gspannst, däß dyr - Rest von dyr Zeil unveröndert bleibt. - - 4. Äfert die Schritt, um dös überblibne xxx z ersötzn. - ----> S Zunddn von 123 zo xxx ergibt xxx. ----> S Zunddn von 123 zo 456 ergibt 579. - -Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis, aber ayn ieds eindem- - mlte Zaichen löscht ayn vorhanddns. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.4: GWORT AAMEN UND EINFÜEGN - - ** Benutz önn Pfemerer y , um öbbs z aamen, und p , um öbbs einzfüegn. ** - - 1. Gee zo dyr mit ---> angmörktn Zeil unt und sötz önn Mörkl hinter "a)". - - 2. Ginn d Sichtisch-Artweis mit v und bewög önn Mörkl gnaun vor "eerste". - - 3. Zipf y , um dönn vürherghöbtn Tail z aamen. - - 4. Bewög önn Mörkl gan n End von dyr naehstn Zeil: j$ - - 5. Demmlt p , um dös Gwort einzfüegn, und aft: a zwaitte . - - 6. Benutz d Sichtischartweis, um " Eintrag." auszwaln, aam s pfelfs y, be- - wög di gan n End von dyr naehstn Zeil mit j$ und füeg s Gwort dortn mit - p an. - ----> a) dös ist dyr eerste Eintrag. - b) - -Anmörkung: Du kanst y aau als Pfemerer verwenddn; yw aamt ain Wort. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 6.5: SCHALTTER SÖTZN - -** Sötz aynn Schaltter yso, däß ayn Suech older Ersötzung Grooß- und Klain- ** - ** schreibung übergeet. ** - - 1. Suech um 'übergee", indem däßst /übergee eingibst. - Widerhol d Suech ayn Öttlych Maal, indem däßst de Tastn n druckst. - - 2. Sötz de Zwisl - önn Schaltter - 'ic' (»ignore case«), indem däßst :set ic - eingibst. - 3. Ietz suech wider um 'übergee' und tue aau wider mit n weiter. Daa fallt - dyr auf, däß ietz öbbenn aau Übergee und ÜBERGEE hergeet. - - 4. Sötz de Zwisln 'hlsearch' und 'incsearch' pfelfs: :set hls is - - 5. Widerhol d Suech und bobacht, was ietz gschieght: /übergee - - 6. Däßst grooß und klain wider gwon unterscheidst, zipf: :set noic - -Anmörkung: Mechst de Tröffer niemer vürherghöbt seghn, gib ein: :nohlsearch -Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \c - in n Suechausdruk: /übergee\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 6 - - 1. Zipf o , um ayn Zeil UNTERHALB n Mörkl z öffnen und d Einfüegartweis z - ginnen. - Zipf O , um ayn Zeil OBERHALB n Mörkl z öffnen. - - 2. Zipf a , um NAACH n Mörkl ayn Gwort einzfüegn. - Zipf A , um ayn Gwort naach n Zeilnend anzfüegn. - - 3. D Faudung e bringt di gan n End von aynn Wort. - - 4. Dyr Pfemerer y (»yank«) aamt öbbs, p (»put«) füegt dös ein. - - 5. Ayn groosss R geet eyn d Ersötzungsartweis, hinst däß myn druckt. - - 6. D Eingaab von ":set xxx" sötzt de Zwisl "xxx". Ayn Öttlych Zwisln seind: - 'ic' 'ignorecase' Grooß/klain wurst bei ayner Suech - 'is' 'incsearch' Zaig aau schoon ayn Tailüberainstimmung - 'hls' 'hlsearch' Höb allsand pässetn Ausdrück vürher - Dyr Schaltternam kan in dyr Kurz- older Langform angöbn werdn. - - 7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst: :set noic -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.1: AYN HILFGWORT AUFRUEFFEN - - - ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung" ** - - Eyn n Wimm ist ayn ausfüerliche "Gebrauchsanweisung" einbaut. Für s Eerste - pröblt ainfach ains von dene dreu aus: - - Druck d -Tastn, wennst öbbenn aine haast. - - Druck de Tastn , fallsst ys haast. - - Zipf :help - - Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie dös mit dyr Hilf geet. - Demmlt w w , um von ainn Fenster zo n andern zo n Springen. - Demmlt :q , um s Hilffenster zo n Schliessn. - - Du kanst zo so guet wie allssand ayn Hilf finddn, indem däßst yn dyr Faudung - :help aynn Auerwerd naachstöllst und istig nit vergisst. Pröblt dös: - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF - - - ** Mutz önn Wimm mit de einbautn Faehigkeitn auf ** - - Dyr Wimm besitzt ayn Wösn Schäftungen, wo über n Urwimm aushingeend, aber de - meerern dyrvon seind in dyr Vorgaab ausgschaltt. Dyrmitst meerer aus n Wimm - ausherholst, erstöllst ayn "vimrc"-Dautticht. - - 1. Lög ayn "vimrc"-Dautticht an; dös geet ie naach Betribsgebäu verschidn: - :e ~/.vimrc für s Ainsl - :e $VIM/_vimrc bei n Fenstl - - 2. Ietz lis önn Inhalt von dyr Beispil-"vimrc"-Dautticht ein: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Speichert de Dautticht mit: - :w - - 4. Bei n naehstn Gin von n Wimm ist aft d Füegnussvürherhöbung zuegschaltt. - Du kanst dyr allss eyn dö Dautticht einhinschreibn, wasst bständig habn - willst. Meerer dyrzue erfarst unter: :help vimrc-intro -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Letzn 7.3: VERGÖNTZN - - - ** Befelhszeilnvergöntzung mit d und ** - - 1. Vergwiß di, däß dyr Wimm nit auf n Urwimm-"Glais" fart: :set nocp - - 2. Schaug naach, wölcherne Dauttichtn däß s in n Verzaichniss geit: :!ls - older :!dir - 3. Zipf önn Anfang von ayner Faudung: :e - - 4. Druck d , und dyr Wimm zaigt ayn Listn von Faudungen, wo mit "e" - angeend. - 5. Druck , und dyr Wimm vervollstöndigt önn Faudungsnam zo ":edit". - - 6. Füeg ayn Laerzaichen und önn Anfang von ayner besteehetn Dautticht an: - :edit DAU - - 7. Druck . Dyr Wimm vergöntzt önn Nam, dös haisst, wenn yr aindeuttig - ist. -Anmörkung: D Vergöntzung geit s für aynn Hauffen Faudungen. Versuech ainfach - d und . Bsunders nützlich ist dös bei :help . -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZAMMENFASSUNG VON DYR LETZN 7 - - - 1. Zipf :help older druck older , um ayn Hilffenster z öffnen. - - 2. Zipf :help FAUDUNG , um auf ayn Hilf gan aynn Befelh z kemmen. - - 3. Zipf w w , um zo n andern Fenster z springen. - - 4. Zipf :q , um s Hilffenster z schliessn. - - 5. Erstöll ayn vimrc-Ginschripf zuer Sicherung von deine Mötzneinstöllungen. - - 6. Druck d, aft däßst naach : mit ayner Faudung angfangt haast, dyr- - mitst mügliche Vergöntzungen anzaigt kriegst. - Druck für ain Vervollstöndigung yllain. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Dös wär ietzet s End von n Wimmschainer. Gangen ist s daa drum, aynn kurtzn - und bündignen Überblik über s Blat WIMM z lifern, netty vil gnueg, däß myn - für s Eerste wirklich öbbs dyrmit anfangen kan. Dyrmit ist s aber auf kain - Weitn non nit taan; dyr Wimm haat schoon non vil meerer auf Lager. Lis als - Naehsts aynmaal s Benutzerhandbuech: :help user-manual . - - Zo n Weiterlösn und Weiterlernen wör dös Buech daader zo n Empfelhen: - Vim - Vi Improved - von n OUALLINE Steve - Verlaag: New Riders - Dös ist dös eerste Buech, wo ganz yn n Wimm gwidmt ist, netty dös Grechte für - Anfönger. Es haat ayn Wösn Beispiler und aau Bilder drinn. - See http://iccf-holland.org/click5.html - - Dös folgete Buech ist schoon ölter und meerer über n Urwimm als wie über n - Wimm, aber aau zo n Empfelhen: Textbearbeitung mit dem vi-Editor - von dyr - LAMB Linda und n ROBBINS Arnold - Verlaag O'Reilly - Buechlaittzal (ISBN): - 3897211262 - In dönn Buech kan myn fast allss finddn, was myn mit n Urwimm angeen mecht. - De söxte Ausgaab enthaltt aau schoon öbbs über n Wimm. - Als ietzunde Bezugniss für d Fassung 6.2 und ayn pfrenge Einfüerung dient - dös folgete Buech: - vim ge-packt von n WOBST Reinhard - mitp-Verlaag, Buechlaittzal 3-8266-1425-9 - Trotz dyr recht pfrengen Darstöllung ist s durch seine viln nützlichnen Bei- - spiler aau für Einsteiger grad grecht. Probhaeupster und de Beispilschripfer - seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html - - Verfasst habnd dönn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr - Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwürff, wo - dyr SMITH Charles von dyr Kolraader Allschuel (Colorado State University) - zuer Verfüegung gstöllt haat. Gundpost: bware@mines.colorado.edu. - Für n Wimm haat n dyr MOOLENAAR Bram barechtt. - De bairische Übersötzung stammt von n HELL Sepp 2009. Sein Gundpostbrächt ist - sturmibund@t-online.de - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - - - - diff --git a/share/vim/vim73/tutor/tutor.de b/share/vim/vim73/tutor/tutor.de deleted file mode 100644 index 7438c96b..00000000 --- a/share/vim/vim73/tutor/tutor.de +++ /dev/null @@ -1,980 +0,0 @@ -=============================================================================== -= W i l l k o m m e n im V I M T u t o r - Version 1.7D = -=============================================================================== - - Vim ist ein sehr mächtiger Editor, der viele Befehle bereitstellt; zu viele, - um alle in einem Tutor wie diesem zu erklären. Dieser Tutor ist so - gestaltet, um genug Befehle vorzustellen, dass Du die Fähigkeit erlangst, - Vim mit Leichtigkeit als einen Allzweck-Editor zu benutzen. - Die Zeit für das Durcharbeiten dieses Tutors beträgt ca. 25-30 Minuten, - abhängig davon, wie viel Zeit Du mit Experimentieren verbringst. - - ACHTUNG: - Die in den Lektionen angewendeten Kommandos werden den Text modifizieren. - Erstelle eine Kopie dieser Datei, in der Du üben willst (falls Du "vimtutor" - aufgerufen hast, ist dies bereits eine Kopie). - - Es ist wichtig, sich zu vergegenwärtigen, dass dieser Tutor für das Anwenden - konzipiert ist. Das bedeutet, dass Du die Befehle ausführen musst, um sie - richtig zu lernen. Wenn Du nur den Text liest, vergisst Du die Befehle! - - Jetzt stelle sicher, dass Deine Umstelltaste NICHT gedrückt ist und betätige - die j Taste genügend Male, um den Cursor nach unten zu bewegen, so dass - Lektion 1.1 den Bildschirm vollkommen ausfüllt. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.1: BEWEGEN DES CURSORS - - ** Um den Cursor zu bewegen, drücke die h,j,k,l Tasten wie unten gezeigt. ** - ^ Hilfestellung: - k Die h Taste befindet sich links und bewegt nach links. - < h l > Die l Taste liegt rechts und bewegt nach rechts. - j Die j Taste ähnelt einem Pfeil nach unten. - v - 1. Bewege den Cursor auf dem Bildschirm umher, bis Du Dich sicher fühlst. - - 2. Halte die Nach-Unten-Taste (j) gedrückt, bis sie sich wiederholt. - Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst. - - 3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.2 zu bewegen. - -Bemerkung: Immer, wenn Du Dir unsicher bist über das, was Du getippt hast, - drücke , um Dich in den Normalmodus zu begeben. - Dann gib das gewünschte Kommando noch einmal ein. - -Bemerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du - hjkl benutzt, wirst Du in der Lage sein, Dich sehr viel schneller - umherzubewegen, wenn Du Dich einmal daran gewöhnt hast. Wirklich! -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.2: VIM BEENDEN - - - !! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies - diese gesamte Lektion!! - - 1. Drücke die Taste (um sicherzustellen, dass Du im Normalmodus bist). - - 2. Tippe: :q! . - Dies beendet den Editor und VERWIRFT alle Änderungen, die Du gemacht hast. - - 3. Wenn Du die Eingabeaufforderung siehst, gib das Kommando ein, das Dich zu - diesem Tutor geführt hat. Dies wäre: vimtutor - - 4. Wenn Du Dir diese Schritte eingeprägt hast und Du Dich sicher fühlst, - führe Schritte 1 bis 3 aus, um den Editor zu verlassen und wieder - hineinzugelangen. - -Bemerkung: :q! verwirft alle Änderungen, die Du gemacht hast. In - einigen Lektionen lernst Du , die Änderungen in einer Datei zu speichern. - - 5. Bewege den Cursor abwärts zu Lektion 1.3. - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.3: TEXT EDITIEREN - LÖSCHEN - - - ** Drücke x um das Zeichen unter dem Cursor zu löschen. ** - - 1. Bewege den Cursor zu der mit ---> markierten Zeile unten. - - 2. Um die Fehler zu beheben, bewege den Cursor, bis er auf dem Zeichen steht, - das gelöscht werden soll. - - 3. Drücke die x Taste, um das überflüssige Zeichen zu löschen. - - 4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist. - ----> Die Kkuh sprangg übber deen Moond. - - 5. Wenn nun die Zeile korrekt ist, gehe weiter zur Lektion 1.4. - -Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu - lernen, lerne vielmehr durch Anwenden. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.4: TEXT EDITIEREN - EINFÜGEN - - - ** Drücke i , um Text einzufügen. ** - - 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. - - 2. Um die erste Zeile mit der zweiten gleichzumachen, bewege den Cursor auf - das erste Zeichen NACH der Stelle, wo der Text eingefügt werden soll. - - 3. Drücke i und gib die notwendigen Ergänzungen ein. - - 4. Wenn jeweils ein Fehler beseitigt ist, drücke , um zum Normalmodus - zurückzukehren. - Wiederhole die Schritte 2 bis 4, um den Satz zu korrigieren. - ----> In dieser ft etwas . ----> In dieser Zeile fehlt etwas Text. - - 5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.5: TEXT EDITIEREN - ANFÜGEN - - - ** Drücke A , um Text anzufügen. ** - - 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. - Es ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht. - - 2. Drücke A und gib die nötigen Ergänzungen ein. - - 3. Wenn das Anfügen abgeschlossen ist, drücke , um in den Normalmodus - zurückzukehren. - - 4. Bewege den Cursor zur zweiten mit ---> markierten Zeile und wiederhole - die Schritte 2 und 3, um den Satz zu korrigieren. - ----> In dieser Zeile feh - In dieser Zeile fehlt etwas Text. ----> Auch hier steh - Auch hier steht etwas Unvollständiges. - - 5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.6. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.6: EINE DATEI EDITIEREN - - - ** Benutze :wq , um eine Datei zu speichern und Vim zu verlassen. ** - - !! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies - diese gesamte Lektion!! - - 1. Verlasse den Editor so wie in Lektion 1.2: :q! - - 2. Gib dieses Kommando in die Eingabeaufforderung ein: vim tutor - 'vim' ist der Aufruf des Editors, 'tutor' ist die zu editierende Datei. - Benutze eine Datei, die geändert werden kann. - - 3. Füge Text ein oder lösche ihn, wie Du in den vorigen Lektionen gelernt - hast. - - 4. Speichere die geänderte Datei und verlasse Vim mit: :wq - - 5. Starte den vimtutor neu und bewege Dich zu der folgenden Zusammenfassung. - - 6. Nachdem Du obige Schritte gelesen und verstanden hast, führe sie durch. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 1 - - - 1. Der Cursor wird mit den Pfeiltasten oder den Tasten hjkl bewegt. - h (links) j (unten) k (aufwärts) l (rechts) - - 2. Um Vim von der Eingabeaufforderung auszuführen, tippe: vim DATEI - - 3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe: - :q! . - ODER tippe: :wq , um die Änderungen zu speichern. - - 4. Um das Zeichen unter dem Cursor zu löschen, tippe: x - - 5. Um Text einzufügen oder anzufügen, tippe: - i Einzufügenden Text eingeben Einfügen vor dem Cursor - A Anzufügenden Text eingeben Anfügen nach dem Zeilendene - -Bemerkung: Drücken von bringt Dich in den Normalmodus oder bricht ein - ungewolltes, erst teilweise eingegebenes Kommando ab. - - Nun fahre mit Lektion 2 fort. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.1: LÖSCHKOMMANDOS - - - ** Tippe dw , um ein Wort zu löschen. ** - - 1. Drücke um sicherzustellen, dass Du im Normalmodus bist. - - 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. - - 3. Bewege den Cursor zum Anfang eines Wortes, das gelöscht werden soll. - - 4. Tippe dw , um das Wort zu entfernen. - - Bemerkung: Der Buchstabe d erscheint auf der letzten Zeile des Bildschirms, - wenn Du ihn eingibst. Vim wartet darauf, daß Du w eingibst. Wenn Du - ein anderes Zeichen als d siehst, hast Du etwas falsches getippt; - drücke und beginne neu. - ----> Einige Wörter lustig gehören nicht Papier in diesen Satz. - - 5. Wiederhole die Schritte 3 und 4, bis der Satz korrekt ist und gehe - danach zur Lektion 2.2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.2: WEITERE LÖSCHKOMMANDOS - - - ** Tippe d$ , um bis zum Ende der Zeile zu löschen. ** - - 1. Drücke , um sicherzustellen, dass Du im Normalmodus bist. - - 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. - - 3. Bewege den Cursor zum Ende der korrekten Zeile (NACH dem ersten . ). - - 4. Tippe d$ , um bis zum Ende der Zeile zu löschen. - ----> Jemand hat das Ende der Zeile doppelt eingegeben. doppelt eingegeben. - - - 5. Gehe weiter zur Lektion 2.3 , um zu verstehen, was hierbei passiert. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.3: ÜBER OPERATOREN UND BEWEGUNGSZÜGE - - - Viele Kommandos, die Text ändern, setzen sich aus einem Operator und einer - Bewegung zusammen. Das Format für ein Löschkommando mit dem Löschoperator d - lautet wie folgt: - - d Bewegung - - wobei: - d - der Löschoperator - Bewegung - worauf der Löschoperator angewandt wird (unten aufgelistet). - - Eine kleine Auflistung von Bewegungen: - w - bis zum Beginn des nächsten Wortes OHNE dessen erstes Zeichen. - e - zum Ende des aktuellen Wortes MIT dessen letztem Zeichen. - $ - zum Ende der Zeile MIT dem letzen Zeichen. - - Dementsprechend löscht die Eingabe von de vom Cursor an bis zum Wortende. - -Bemerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den - Cursor entsprechend. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.4: ANWENDUNG EINES ZÄHLERS FÜR EINEN BEWEGUNGSSCHRITT - - - ** Die Eingabe einer Zahl vor einem Bewegungsschritt wiederholt diesen. ** - - 1. Bewege den Cursor zum Beginn der mit ---> markierten Zeile unten. - - 2. Tippe 2w , um den Cursor zwei Wörter vorwärts zu bewegen. - - 3. Tippe 3e , um den Cursor zum Ende des dritten Wortes zu bewegen. - - 4. Tippe 0 (Null) , um zum Anfang der Zeile zu gelangen. - - 5. Wiederhole Schritte 2 und 3 mit verschiedenen Zählern. - - ---> Dies ist nur eine Zeile aus Wörten um sich darin herumzubewegen. - - 6. Gehe weiter zu Lektion 2.5. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.5: ANWENDUNG EINES ZÄHLERS FÜR MEHRERE LÖSCHVORGÄNGE - - - ** Die Eingabe einer Zahl mit einem Operator wiederholt diesen mehrfach. ** - - Für die Kombination des Löschoperators und einem Bewegungsschritt (siehe - oben) stellt man dem Bewegungsschritt einen Zähler voran, um mehr zu löschen: - d Nummer Bewegungsschritt - - 1. Bewege den Cursor zum ersten Wort in GROSSBUCHSTABEN in der mit ---> - markieren Zeile. - - 2. Tippe d2w , um die zwei Wörter in GROSSBUCHSTABEN zu löschen. - - 3. Wiederhole Schritte 1 und 2 mit einem anderen Zähler, um die - darauffolgenden Wörter in GROSSBUCHSTABEN mit einem einzigen Kommando - zu löschen. - ----> Diese ABC DE Zeile FGHI JK LMN OP mit Wörtern ist Q RS TUV bereinigt. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.6: ARBEITEN AUF ZEILEN - - - ** Tippe dd , um eine ganze Zeile zu löschen. ** - - Wegen der Häufigkeit, dass man ganze Zeilen löscht, kamen die Entwickler von - Vi darauf, dass es leichter wäre, einfach zwei d's einzugeben, um eine Zeile - zu löschen. - - 1. Bewege den Cursor zur zweiten Zeile in der unten stehenden Redewendung. - 2. Tippe dd , um die Zeile zu löschen. - 3. Nun bewege Dich zur vierten Zeile. - 4. Tippe 2dd , um zwei Zeilen zu löschen. - ----> 1) Rosen sind rot, ----> 2) Matsch ist lustig, ----> 3) Veilchen sind blau, ----> 4) Ich habe ein Auto, ----> 5) Die Uhr sagt die Zeit, ----> 6) Zucker ist süß, ----> 7) So wie Du auch. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.7: RÜCKGÄNGIG MACHEN (UNDO) - - - ** Tippe u , um die letzten Kommandos rückgängig zu machen ** - ** oder U um eine ganze Zeile wiederherzustellen. ** - - 1. Bewege den Cursor zu der mit ---> markierten Zeile unten - und setze ihn auf den ersten Fehler. - 2. Tippe x , um das erste unerwünschte Zeichen zu löschen. - 3. Nun tippe u um das soeben ausgeführte Kommando rückgängig zu machen. - 4. Jetzt behebe alle Fehler auf der Zeile mit Hilfe des x Kommandos. - 5. Nun tippe ein großes U , um die Zeile in ihren Ursprungszustand - wiederherzustellen. - 6. Nun tippe u einige Male, um das U und die vorhergehenden Kommandos - rückgängig zu machen. - 7. Nun tippe CTRL-R (halte CTRL gedrückt und drücke R) mehrere Male, um die - Kommandos wiederherzustellen (die Rückgängigmachungen rückgängig machen). - ----> Beehebe die Fehller diesser Zeile und sttelle sie mitt 'undo' wieder her. - - 8. Dies sind sehr nützliche Kommandos. - Nun gehe weiter zur Zusammenfassung von Lektion 2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 2 - - - 1. Um vom Cursor bis zum nächsten Wort zu löschen, tippe: dw - 2. Um vom Cursor bis zum Ende einer Zeile zu löschen, tippe: d$ - 3. Um eine ganze Zeile zu löschen, tippe: dd - - 4. Um eine Bewegung zu wiederholen, stelle eine Nummer voran: 2w - 5. Das Format für ein Änderungskommando ist: - Operator [Anzahl] Bewegungsschritt - wobei: - Operator - gibt an, was getan werden soll, zum Beispiel d für delete - [Anzahl] - ein optionaler Zähler, um den Bewegungsschritt zu wiederholen - Bewegungsschritt - Bewegung über den zu ändernden Text, so wie - w (Wort), $ (zum Ende der Zeile), etc. - - 6. Um Dich zum Anfang der Zeile zu begeben, benutze die Null: 0 - - 7. Um vorherige Aktionen rückgängig zu machen, tippe: u (kleines u) - Um alle Änderungen auf einer Zeile rückgängig zu machen: U (großes U) - Um die Rückgängigmachungen rückgängig zu machen, tippe: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.1: ANFÜGEN (PUT) - - - ** Tippe p , um vorher gelöschten Text nach dem Cursor anzufügen. ** - - 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. - - 2. Tippe dd , um die Zeile zu löschen und sie in eimem Vim-Register zu - speichern. - - 3. Bewege den Cursor zur Zeile c), ÜBER derjenigen, wo die gelöschte Zeile - platziert werden soll. - - 4. Tippe p , um die Zeile unterhalb des Cursors zu platzieren. - - 5. Wiederhole die Schritte 2 bis 4, um alle Zeilen in die richtige - Reihenfolge zu bringen. - ----> d) Kannst Du das auch? ----> b) Veilchen sind blau, ----> c) Intelligenz ist erlernbar, ----> a) Rosen sind rot, -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.2: ERSETZEN (REPLACE) - - - ** Tippe rx , um das Zeichen unter dem Cursor durch x zu ersetzen. ** - - 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. - - 2. Bewege den Cursor, bis er sich auf dem ersten Fehler befindet. - - 3. Tippe r und anschließend das Zeichen, welches dort stehen sollte. - - 4. Wiederhole Schritte 2 und 3, bis die erste Zeile gleich der zweiten ist. - ----> Als diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt! ----> Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt! - - 5. Nun fahre fort mit Lektion 3.2. - -Bemerkung: Erinnere Dich, dass Du durch Anwenden lernen solltest, nicht durch - Auswendiglernen. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.3: ÄNDERN (CHANGE) - - - ** Um eine Änderung bis zum Wortende durchzuführen, tippe ce . ** - - 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. - - 2. Platziere den Cursor auf das s von Wstwr. - - 3. Tippe ce und die Wortkorrektur ein (in diesem Fall tippe örter ). - - 4. Drücke und bewege den Cursor zum nächsten zu ändernden Zeichen. - - 5. Wiederhole Schritte 3 und 4 bis der erste Satz gleich dem zweiten ist. - ----> Einige Wstwr dieser Zlaww lasdjlaf mit dem Ändern-Operator gaaauu werden. ----> Einige Wörter dieser Zeile sollen mit dem Ändern-Operator geändert werden. - -Bemerke, dass ce das Wort löscht und Dich in den Eingabemodus versetzt. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.4: MEHR ÄNDERUNGEN MITTELS c - - - ** Das change-Kommando arbeitet mit denselben Bewegungen wie delete. ** - - 1. Der change Operator arbeitet in gleicher Weise wie delete. Das Format ist: - - c [Anzahl] Bewegungsschritt - - 2. Die Bewegungsschritte sind die gleichen , so wie w (Wort) und $ - (Zeilenende). - - 3. Bewege Dich zur ersten unten stehenden mit ---> markierten Zeile. - - 4. Bewege den Cursor zum ersten Fehler. - - 5. Tippe c$ , gib den Rest der Zeile wie in der zweiten ein, drücke . - ----> Das Ende dieser Zeile soll an die zweite Zeile angeglichen werden. ----> Das Ende dieser Zeile soll mit dem c$ Kommando korrigiert werden. - -Bemerkung: Du kannst die Rücktaste benutzen, um Tippfehler zu korrigieren. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 3 - - - 1. Um einen vorher gelöschten Text anzufügen, tippe p . Dies fügt den - gelöschten Text NACH dem Cursor an (wenn eine ganze Zeile gelöscht wurde, - wird diese in die Zeile unter dem Cursor eingefügt). - - 2. Um das Zeichen unter dem Cursor zu ersetzen, tippe r und das an dieser - Stelle gewünschte Zeichen. - - 3. Der Änderungs- (change) Operator erlaubt, vom Cursor bis zum Ende des - Bewegungsschrittes zu ändern. Tippe ce , um eine Änderung vom Cursor bis - zum Ende des Wortes vorzunehmen; c$ bis zum Ende einer Zeile. - - 4. Das Format für change ist: - - c [Anzahl] Bewegungsschritt - - Nun fahre mit der nächsten Lektion fort. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.1: CURSORPOSITION UND DATEISTATUS - - ** Tippe CTRL-G , um Deine Dateiposition sowie den Dateistatus anzuzeigen. ** - ** Tippe G , um Dich zu einer Zeile in der Datei zu begeben. ** - -Bemerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!! - - 1. Halte die Ctrl Taste unten und drücke g . Dies nennen wir wir CTRL-G. - Eine Statusmeldung am Fuß der Seite erscheint mit dem Dateinamen und der - Position innerhalb der Datei. Merke Dir die Zeilennummer für Schritt 3. - -Bemerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten - Bildschirmecke. Dies ist Folge der 'ruler' Option (siehe :help 'ruler') - - 2. Drücke G , um Dich zum Ende der Datei zu begeben. - Tippe gg , um Dich zum Anfang der Datei zu begeben. - - 3. Gib die Nummer der Zeile ein, auf der Du vorher warst, gefolgt von G . - Dies bringt Dich zurück zu der Zeile, auf der Du gestanden hast, als Du - das erste Mal CTRL-G gedrückt hast. - - 4. Wenn Du Dich sicher genug fühlst, führe die Schritte 1 bis 3 aus. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.2: DAS SUCHEN - KOMMANDO - - - ** Tippe / gefolgt von einem Ausdruck, um nach dem Ausdruck zu suchen. ** - - 1. Im Normalmodus, tippe das / Zeichen. Bemerke, dass das / und der - Cursor am Fuß des Schirms erscheinen, so wie beim : Kommando. - - 2. Nun tippe 'Fehhler' . Dies ist das Wort, nach dem Du suchen willst. - - 3. Um nach demselben Ausdruck weiterzusuchen, tippe einfach n (für next). - Um nach demselben Ausdruck in der Gegenrichtung zu suchen, tippe N . - - 4. Um nach einem Ausdruck rückwärts zu suchen , benutze ? statt / . - - 5. Um dahin zurückzukehren, von wo Du gekommen bist, drücke CTRL-O (Halte - Ctrl unten und drücke den Buchstaben o). Wiederhole dies, um weiter - zurückzugehen. CTRL-I bringt dich vorwärts. - ----> Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler -Bemerkung: Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang - fortgesetzt, es sei denn, die 'wrapscan' Option wurde abgeschaltet. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.3: PASSENDE KLAMMERN FINDEN - - - ** Tippe % , um eine korrespondierende Klammer ),], oder } zu finden. ** - - 1. Platziere den Cursor auf irgendeines der Zeichen (, [, oder { in der unten - stehenden Zeile, die mit ---> markiert ist. - - 2. Nun tippe das % Zeichen. - - 3. Der Cursor bewegt sich zur passenden gegenüberliegenden Klammer. - - 4. Tippe % , um den Cursor zur anderen passenden Klammer zu bewegen. - - 5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere % aus. - ----> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern } darin. )) - -Bemerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem - Programmtext, in dem passende Klammern fehlen! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE) - - - ** Tippe :s/alt/neu/g , um 'alt' durch 'neu' zu ersetzen. ** - - 1. Bewege den Cursor zu der unten stehenden mit ---> markierten Zeile. - - 2. Tippe :s/diee/die . Bemerke, dass der Befehl nur das erste - Vorkommen von "diee" ersetzt. - - 3. Nun tippe :s/diee/die/g . Das Zufügen des Flags g bedeutet, eine - globale Ersetzung über die Zeile durchzuführen, was alle Vorkommen von - "diee" auf der Zeile ersetzt. - ----> diee schönste Zeit, um diee Blumen anzuschauen, ist diee Frühlingszeit. - - 4. Um alle Vorkommen einer Zeichenkette innerhalb zweier Zeilen zu ändern, - tippe :#,#s/alt/neu/g wobei #,# die Zeilennummern des Zeilenbereiches - sind, in dem die Ersetzung durchgeführt werden soll. - Tippe :%s/alt/neu/g um alle Vorkommen in der gesamten Datei zu ändern. - Tippe :%s/alt/neu/gc um alle Vorkommen in der gesamten Datei zu finden - mit einem Fragedialog, ob ersetzt werden soll oder nicht. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 4 - - 1. CTRL-G zeigt die aktuelle Dateiposition sowie den Dateistatus. - G bringt Dich zum Ende der Datei. - Nummer G bringt Dich zur entsprechenden Zeilennummer. - gg bringt Dich zur ersten Zeile. - - 2. Die Eingabe von / plus einem Ausdruck sucht VORWÄRTS nach dem Ausdruck. - Die Eingabe von ? plus einem Ausdruck sucht RÜCKWÄRTS nach dem Ausdruck. - Tippe nach einer Suche n , um das nächste Vorkommen in der gleichen - Richtung zu finden; oder N , um in der Gegenrichtung zu suchen. - CTRL-O bringt Dich zurück zu älteren Positionen, CTRL-I zu neueren. - - 3. Die Eingabe von % , wenn der Cursor sich auf (,),[,],{, oder } - befindet, bringt Dich zur Gegenklammer. - - 4. Um das erste Vorkommen von "alt" in einer Zeile durch "neu" zu ersetzen, - tippe :s/alt/neu - Um alle Vorkommen von "alt" in der Zeile ersetzen, tippe :s/alt/neu/g - Um Ausdrücke innerhalb zweier Zeilennummern zu ersetzen, :#,#s/alt/neu/g - Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g - Für eine jedmalige Bestätigung, addiere 'c' (confirm) :%s/alt/neu/gc -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.1: AUSFÜHREN EINES EXTERNEN KOMMANDOS - - - ** Gib :! , gefolgt von einem externen Kommando ein, um es auszuführen. ** - - 1. Tippe das vertraute Kommando : , um den Cursor auf den Fuß des Schirms - zu setzen. Dies erlaubt Dir, ein Kommandozeilen-Kommando einzugeben. - - 2. Nun tippe ein ! (Ausrufezeichen). Dies ermöglicht Dir, ein beliebiges, - externes Shellkommando auszuführen. - - 3. Als Beispiel tippe ls nach dem ! und drücke . Dies zeigt - eine Auflistung Deines Verzeichnisses; genauso, als wenn Du auf der - Eingabeaufforderung wärst. Oder verwende :!dir , falls ls nicht geht. - -Bemerkung: Mit dieser Methode kann jedes beliebige externe Kommando - ausgeführt werden, auch mit Argumenten. - -Bemerkung: Alle : Kommandos müssen durch Eingabe von - abgeschlossen werden. Von jetzt an erwähnen wir dies nicht jedesmal. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.2: MEHR ÜBER DAS SCHREIBEN VON DATEIEN - - -** Um am Text durchgeführte Änderungen zu speichern, tippe :w DATEINAME. ** - - 1. Tippe :!dir oder :!ls , um eine Auflistung Deines Verzeichnisses zu - erhalten. Du weißt nun bereits, dass Du danach eingeben musst. - - 2. Wähle einen Dateinamen, der noch nicht existiert, z.B. TEST. - - 3. Nun tippe: :w TEST (wobei TEST der gewählte Dateiname ist). - - 4. Dies speichert die ganze Datei (den Vim Tutor) unter dem Namen TEST. - Um dies zu überprüfen, tippe nochmals :!ls bzw. !dir, um Deinen - Verzeichnisinhalt zu sehen. - -Bemerkung: Würdest Du Vim jetzt beenden und danach wieder mit vim TEST - starten, dann wäre diese Datei eine exakte Kopie des Tutors zu dem - Zeitpunkt, als Du ihn gespeichert hast. - - 5. Nun entferne die Datei durch Eingabe von (MS-DOS): :!del TEST - oder (Unix): :!rm TEST -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN - -** Um einen Abschnitt der Datei zu speichern, tippe v Bewegung :w DATEI ** - - 1. Bewege den Cursor zu dieser Zeile. - - 2. Tippe v und bewege den Cursor zum fünften Auflistungspunkt unten. - Bemerke, daß der Text hervorgehoben wird. - - 3. Drücke das Zeichen : . Am Fuß des Schirms erscheint :'<,'> . - - 4. Tippe w TEST , wobei TEST ein noch nicht vorhandener Dateiname ist. - Vergewissere Dich, daß Du :'<,'>w TEST siehst, bevor Du Enter drückst. - - 5. Vim schreibt die ausgewählten Zeilen in die Datei TEST. Benutze :!dir - oder :!ls , um sie zu sehen. Lösche sie noch nicht! Wir werden sie in - der nächsten Lektion benutzen. - -Bemerkung: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor - umherbewegen, um die Auswahl größer oder kleiner zu machen. Anschließend - kann man einen Operator anwenden, um mit dem Text etwas zu tun. Zum - Beispiel löscht d den Text. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.4: EINLESEN UND ZUSAMMENFÜHREN VON DATEIEN - - - ** Um den Inhalt einer Datei einzulesen, tippe :r DATEINAME ** - - 1. Platziere den Cursor überhalb dieser Zeile. - -BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 - sehen. Dann bewege Dich wieder ABWÄRTS, um diese Lektion wiederzusehen. - - 2. Nun lies Deine Datei TEST ein indem Du das Kommando :r TEST ausführst, - wobei TEST der von Dir verwendete Dateiname ist. - Die eingelesene Datei wird unterhalb der Cursorzeile eingefügt. - - 3. Um zu überprüfen, dass die Datei eingelesen wurde, gehe zurück und siehe, - dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und die - eingefügte Dateiversion. - -Bemerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum - Beispiel liest :r !ls die Ausgabe des Kommandos ls ein und platziert - sie unterhalb des Cursors. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 5 - - - 1. :!Kommando führt ein externes Kommando aus. - - Einige nützliche Beispiele sind - (MS-DOS) (Unix) - :!dir :!ls - zeigt eine Verzeichnisauflistung. - :!del DATEINAME :!rm DATEINAME - entfernt Datei DATEINAME. - - 2. :w DATEINAME speichert die aktuelle Vim-Datei unter dem Namen DATEINAME. - - 3. v Bewegung :w DATEINAME schreibt die Visuell ausgewählten Zeilen in - die Datei DATEINAME. - - 4. :r DATEINAME lädt die Datei DATEINAME und fügt sie unterhalb der - Cursorposition ein. - - 5. :r !dir liest die Ausgabe des Kommandos dir und fügt sie unterhalb der - Cursorposition ein. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.1: ZEILEN ÖFFNEN (OPEN) - - - ** Tippe o , um eine Zeile unterhalb des Cursors zu öffnen und Dich in ** - ** den Einfügemodus zu begeben. ** - - 1. Bewege den Cursor zu der ersten mit ---> markierten Zeile unten. - - 2. Tippe o (klein geschrieben), um eine Zeile UNTERHALB des Cursos zu öffnen - und Dich in den Einfügemodus zu begeben. - - 3. Nun tippe etwas Text und drücke , um den Einfügemodus zu verlassen. - ----> Mit o wird der Cursor auf der offenen Zeile im Einfügemodus platziert. - - 4. Um eine Zeile ÜBERHALB des Cursos aufzumachen, gib einfach ein großes O - statt einem kleinen o ein. Versuche dies auf der unten stehenden Zeile. - ----> Öffne eine Zeile über dieser mit O , wenn der Cursor auf dieser Zeile ist. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.2: TEXT ANFÜGEN (APPEND) - - - ** Tippe a , um Text NACH dem Cursor einzufügen. ** - - 1. Bewege den Cursor zum Anfang der ersten Übungszeile mit ---> unten. - - 2. Drücke e , bis der Cursor am Ende von Zei steht. - - 3. Tippe ein kleines a , um Text NACH dem Cursor anzufügen. - - 4. Vervollständige das Wort so wie in der Zeile darunter. Drücke , - um den Einfügemodus zu verlassen. - - 5. Bewege Dich mit e zum nächsten unvollständigen Wort und wiederhole - Schritte 3 und 4. - ----> Diese Zei bietet Gelegen , Text in einer Zeile anzufü. ----> Diese Zeile bietet Gelegenheit, Text in einer Zeile anzufügen. - -Bemerkung: a, i und A gehen alle gleichermaßen in den Einfügemodus; der - einzige Unterschied ist, wo die Zeichen eingefügt werden. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.3: EINE ANDERE ART DES ERSETZENS (REPLACE) - - - ** Tippe ein großes R , um mehr als ein Zeichen zu ersetzen. ** - - 1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile. - Bewege den Cursor zum Anfang des ersten xxx . - - 2. Nun drücke R und tippe die Nummer, die darunter in der zweiten Zeile - steht, so das diese das xxx ersetzt. - - 3. Drücke , um den Ersetzungsmodus zu verlassen. Bemerke, daß der Rest - der Zeile unverändert bleibt. - - 4. Wiederhole die Schritte, um das verbliebene xxx zu ersetzen. - ----> Das Addieren von 123 zu xxx ergibt xxx. ----> Das Addieren von 123 zu 456 ergibt 579. - -Bemerkung: Der Ersetzungsmodus ist wie der Einfügemodus, aber jedes eingetippte - Zeichen löscht ein vorhandenes Zeichen. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.4: TEXT KOPIEREN UND EINFÜGEN - - ** Benutze den y Operator, um Text zu kopieren; p , um ihn einzufügen ** - - 1. Gehe zu der mit ---> markierten Zeile unten, setze den Cursor hinter "a)". - - 2. Starte den Visuellen Modus mit v , bewege den Cursor genau vor "erste". - - 3. Tippe y , um den hervorgehoben Text zu kopieren. - - 4. Bewege den Cursor zum Ende der nächsten Zeile: j$ - - 5. Tippe p , um den Text einzufügen und anschließend: a zweite . - - 6. Benutze den Visuellen Modus, um " Eintrag." auszuwählen, kopiere mittels - y , bewege Dich zum Ende der nächsten Zeile mit j$ und füge den Text - dort mit p an. - ----> a) dies ist der erste Eintrag. - b) - -Bemerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.5: OPTIONEN SETZEN - - ** Setze eine Option so, dass eine Suche oder eine Ersetzung Groß- ** - ** und Kleinschreibung ignoriert ** - - 1. Suche nach 'ignoriere', indem Du /ignoriere eingibst. - Wiederhole die Suche einige Male, indem Du die n - Taste drückst. - - 2. Setze die 'ic' (Ignore case) - Option, indem Du :set ic eingibst. - - 3. Nun suche wieder nach 'ignoriere', indem Du n tippst. - Bemerke, daß jetzt Ignoriere und auch IGNORIERE gefunden wird. - - 4. Setze die 'hlsearch' und 'incsearch' - Optionen: :set hls is - - 5. Wiederhole die Suche und beobachte, was passiert: /ignoriere - - 6. Um das Ignorieren von Groß/Kleinschreibung abzuschalten, tippe: :set noic - -Bemerkung: Um die Hervorhebung der Treffer zu enfernen, gib ein: :nohlsearch -Bemerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze - \c im Suchausdruck: /ignoriere\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 6 - - 1. Tippe o , um eine Zeile UNTER dem Cursor zu öffnen und den Einfügemodus - zu starten. - Tippe O , um eine Zeile ÜBER dem Cursor zu öffnen. - - 2. Tippe a , um Text NACH dem Cursor anzufügen. - Tippe A , um Text nach dem Zeilenende anzufügen. - - 3. Das Kommando e bringt Dich zum Ende eines Wortes. - - 4. Der Operator y (yank) kopiert Text, p (put) fügt ihn ein. - - 5. Ein großes R geht in den Ersetzungsmodus bis zum Drücken von . - - 6. Die Eingabe von ":set xxx" setzt die Option "xxx". Einige Optionen sind: - 'ic' 'ignorecase' Ignoriere Groß/Kleinschreibung bei einer Suche - 'is' 'incsearch' Zeige Teilübereinstimmungen für einen Suchausdruck - 'hls' 'hlsearch' Hebe alle passenden Ausdrücke hervor - Der Optionsname kann in der Kurz- oder der Langform angegeben werden. - - 7. Stelle einer Option "no" voran, um sie abzuschalten: :set noic -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.1 : AUFRUFEN VON HILFE - - - ** Nutze das eingebaute Hilfesystem ** - - Vim besitzt ein umfassendes eingebautes Hilfesystem. Für den Anfang probiere - eins der drei folgenden Dinge aus: - - Drücke die - Taste (falls Du eine besitzt) - - Drücke die Taste (falls Du eine besitzt) - - Tippe :help - - Lies den Text im Hilfefenster, um zu verstehen wie die Hilfe funktioniert. - Tippe CTRL-W CTRL-W , um von einem Fenster zum anderen zu springen. - Tippe :q , um das Hilfefenster zu schließen. - - Du kannst Hilfe zu praktisch jedem Thema finden, indem Du dem ":help"- - Kommando ein Argument gibst. Probiere folgendes ( nicht vergessen): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.2: ERSTELLE EIN START-SKRIPT - - - ** Aktiviere die eingebauten Funktionalitäten von Vim ** - - Vim besitzt viele Funktionalitäten, die über Vi hinausgehen, aber die meisten - von ihnen sind standardmäßig deaktiviert. Um mehr Funktionalitäten zu nutzen, - musst Du eine "vimrc" - Datei erstellen. - - 1. Starte das Editieren der "vimrc"-Datei, abhängig von Deinem System: - :e ~/.vimrc für Unix - :e $VIM/_vimrc für MS-Windows - - 2. Nun lies den Inhalt der Beispiel-"vimrc"-Datei ein: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Speichere die Datei mit: - :w - - Beim nächsten Start von Vim wird die Syntaxhervorhebung aktiviert sein. - Du kannst all Deine bevorzugten Optionen zu dieser "vimrc"-Datei zufügen. - Für mehr Informationen tippe :help vimrc-intro -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.3: VERVOLLSTÄNDIGEN - - - ** Kommandozeilenvervollständigung mit CTRL-D and ** - - 1. Stelle sicher, daß Vim nicht im vi-Kompatibilitätsmodus ist: :set nocp - - 2. Siehe nach, welche Dateien im Verzeichnis existieren: :!ls oder :dir - - 3. Tippe den Beginn eines Komandos: :e - - 4. Drücke CTRL-D und Vim zeigt eine Liste mit "e" beginnender Kommandos. - - 5. Drücke und Vim vervollständigt den Kommandonamen zu ":edit". - - 6. Nun füge ein Leerzeichen und den Beginn einer existierenden Datei an: - :edit DAT - - 7. Drücke . Vim vervollständigt den Namen (falls er eindeutig ist). - -Bemerkung: Vervollständigung funktioniert für viele Kommandos. Versuche - einfach CTRL-D und . Dies ist insbesondere nützlich für :help . -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 7 - - - 1. Tippe :help oder drücke oder , um ein Hilfefenster zu öffnen. - - 2. Tippe :help Kommando , um Hilfe über Kommando zu erhalten. - - 3. Tippe CTRL-W CTRL-W , um zum anderen Fenster zu springen. - - 4. Tippe :q , um das Hilfefenster zu schließen. - - 5. Erstelle ein vimrc - Startskript zur Sicherung bevorzugter Einstellungen. - - 6. Drücke CTRL-D nach dem Tippen eines Kommandos : , um mögliche - Vervollständigungen zu sehen. - Drücke für eine einzige Vervollständigung. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Damit ist der Vim Tutor beendet. Die Intention war, einen kurzen und - bündigen Überblick über den Vim Editor zu liefern; gerade genug, um relativ - leicht mit ihm umgehen zu können. Der Vim Tutor hat nicht den geringsten - Anspruch auf Vollständigkeit; Vim hat noch weitaus mehr Kommandos. Lies als - nächstes das User Manual: ":help user-manual". - - Für weiteres Lesen und Lernen ist folgendes Buch empfohlen : - Vim - Vi Improved - von Steve Oualline - Verlag: New Riders - Das erste Buch, welches durchgängig Vim gewidmet ist. Besonders nützlich - für Anfänger. Viele Beispiele und Bilder sind enthalten. - Siehe http://iccf-holland.org/click5.html - - Folgendes Buch ist älter und mehr über Vi als Vim, aber auch empfehlenswert: - Textbearbeitung mit dem vi-Editor - von Linda Lamb und Arnold Robbins - Verlag O'Reilly - ISBN: 3897211262 - In diesem Buch kann man fast alles finden, was man mit Vi tun möchte. - Die sechste Ausgabe enthält auch Informationen über Vim. - - Als aktuelle Referenz für Version 6.2 und knappe Einführung dient das - folgende Buch: - vim ge-packt von Reinhard Wobst - mitp-Verlag, ISBN 3-8266-1425-9 - Trotz der kompakten Darstellung ist es durch viele nützliche Beispiele auch - für Einsteiger empfehlenswert. Probekapitel und die Beispielskripte sind - online erhältlich. Siehe http://iccf-holland.org/click5.html - - Dieses Tutorial wurde geschrieben von Michael C. Pierce and Robert K. Ware, - Colorado School of Mines. Es benutzt Ideen, die Charles Smith, Colorado State - University, zur Verfügung stellte. E-mail: bware@mines.colorado.edu. - - Bearbeitet für Vim von Bram Moolenaar. - Deutsche Übersetzung von Joachim Hofmann 2007. E-mail: Joachim.Hof@gmx.de - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.de.utf-8 b/share/vim/vim73/tutor/tutor.de.utf-8 deleted file mode 100644 index 7b39abed..00000000 --- a/share/vim/vim73/tutor/tutor.de.utf-8 +++ /dev/null @@ -1,980 +0,0 @@ -=============================================================================== -= W i l l k o m m e n im V I M T u t o r - Version 1.7D = -=============================================================================== - - Vim ist ein sehr mächtiger Editor, der viele Befehle bereitstellt; zu viele, - um alle in einem Tutor wie diesem zu erklären. Dieser Tutor ist so - gestaltet, um genug Befehle vorzustellen, dass Du die Fähigkeit erlangst, - Vim mit Leichtigkeit als einen Allzweck-Editor zu benutzen. - Die Zeit für das Durcharbeiten dieses Tutors beträgt ca. 25-30 Minuten, - abhängig davon, wie viel Zeit Du mit Experimentieren verbringst. - - ACHTUNG: - Die in den Lektionen angewendeten Kommandos werden den Text modifizieren. - Erstelle eine Kopie dieser Datei, in der Du üben willst (falls Du "vimtutor" - aufgerufen hast, ist dies bereits eine Kopie). - - Es ist wichtig, sich zu vergegenwärtigen, dass dieser Tutor für das Anwenden - konzipiert ist. Das bedeutet, dass Du die Befehle ausführen musst, um sie - richtig zu lernen. Wenn Du nur den Text liest, vergisst Du die Befehle! - - Jetzt stelle sicher, dass Deine Umstelltaste NICHT gedrückt ist und betätige - die j Taste genügend Male, um den Cursor nach unten zu bewegen, so dass - Lektion 1.1 den Bildschirm vollkommen ausfüllt. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.1: BEWEGEN DES CURSORS - - ** Um den Cursor zu bewegen, drücke die h,j,k,l Tasten wie unten gezeigt. ** - ^ Hilfestellung: - k Die h Taste befindet sich links und bewegt nach links. - < h l > Die l Taste liegt rechts und bewegt nach rechts. - j Die j Taste ähnelt einem Pfeil nach unten. - v - 1. Bewege den Cursor auf dem Bildschirm umher, bis Du Dich sicher fühlst. - - 2. Halte die Nach-Unten-Taste (j) gedrückt, bis sie sich wiederholt. - Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst. - - 3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.2 zu bewegen. - -Bemerkung: Immer, wenn Du Dir unsicher bist über das, was Du getippt hast, - drücke , um Dich in den Normalmodus zu begeben. - Dann gib das gewünschte Kommando noch einmal ein. - -Bemerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du - hjkl benutzt, wirst Du in der Lage sein, Dich sehr viel schneller - umherzubewegen, wenn Du Dich einmal daran gewöhnt hast. Wirklich! -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.2: VIM BEENDEN - - - !! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies - diese gesamte Lektion!! - - 1. Drücke die Taste (um sicherzustellen, dass Du im Normalmodus bist). - - 2. Tippe: :q! . - Dies beendet den Editor und VERWIRFT alle Änderungen, die Du gemacht hast. - - 3. Wenn Du die Eingabeaufforderung siehst, gib das Kommando ein, das Dich zu - diesem Tutor geführt hat. Dies wäre: vimtutor - - 4. Wenn Du Dir diese Schritte eingeprägt hast und Du Dich sicher fühlst, - führe Schritte 1 bis 3 aus, um den Editor zu verlassen und wieder - hineinzugelangen. - -Bemerkung: :q! verwirft alle Änderungen, die Du gemacht hast. In - einigen Lektionen lernst Du , die Änderungen in einer Datei zu speichern. - - 5. Bewege den Cursor abwärts zu Lektion 1.3. - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.3: TEXT EDITIEREN - LÖSCHEN - - - ** Drücke x um das Zeichen unter dem Cursor zu löschen. ** - - 1. Bewege den Cursor zu der mit ---> markierten Zeile unten. - - 2. Um die Fehler zu beheben, bewege den Cursor, bis er auf dem Zeichen steht, - das gelöscht werden soll. - - 3. Drücke die x Taste, um das überflüssige Zeichen zu löschen. - - 4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist. - ----> Die Kkuh sprangg übber deen Moond. - - 5. Wenn nun die Zeile korrekt ist, gehe weiter zur Lektion 1.4. - -Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu - lernen, lerne vielmehr durch Anwenden. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.4: TEXT EDITIEREN - EINFÜGEN - - - ** Drücke i , um Text einzufügen. ** - - 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. - - 2. Um die erste Zeile mit der zweiten gleichzumachen, bewege den Cursor auf - das erste Zeichen NACH der Stelle, wo der Text eingefügt werden soll. - - 3. Drücke i und gib die notwendigen Ergänzungen ein. - - 4. Wenn jeweils ein Fehler beseitigt ist, drücke , um zum Normalmodus - zurückzukehren. - Wiederhole die Schritte 2 bis 4, um den Satz zu korrigieren. - ----> In dieser ft etwas . ----> In dieser Zeile fehlt etwas Text. - - 5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.5: TEXT EDITIEREN - ANFÜGEN - - - ** Drücke A , um Text anzufügen. ** - - 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. - Es ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht. - - 2. Drücke A und gib die nötigen Ergänzungen ein. - - 3. Wenn das Anfügen abgeschlossen ist, drücke , um in den Normalmodus - zurückzukehren. - - 4. Bewege den Cursor zur zweiten mit ---> markierten Zeile und wiederhole - die Schritte 2 und 3, um den Satz zu korrigieren. - ----> In dieser Zeile feh - In dieser Zeile fehlt etwas Text. ----> Auch hier steh - Auch hier steht etwas Unvollständiges. - - 5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.6. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 1.6: EINE DATEI EDITIEREN - - - ** Benutze :wq , um eine Datei zu speichern und Vim zu verlassen. ** - - !! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies - diese gesamte Lektion!! - - 1. Verlasse den Editor so wie in Lektion 1.2: :q! - - 2. Gib dieses Kommando in die Eingabeaufforderung ein: vim tutor - 'vim' ist der Aufruf des Editors, 'tutor' ist die zu editierende Datei. - Benutze eine Datei, die geändert werden kann. - - 3. Füge Text ein oder lösche ihn, wie Du in den vorigen Lektionen gelernt - hast. - - 4. Speichere die geänderte Datei und verlasse Vim mit: :wq - - 5. Starte den vimtutor neu und bewege Dich zu der folgenden Zusammenfassung. - - 6. Nachdem Du obige Schritte gelesen und verstanden hast, führe sie durch. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 1 - - - 1. Der Cursor wird mit den Pfeiltasten oder den Tasten hjkl bewegt. - h (links) j (unten) k (aufwärts) l (rechts) - - 2. Um Vim von der Eingabeaufforderung auszuführen, tippe: vim DATEI - - 3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe: - :q! . - ODER tippe: :wq , um die Änderungen zu speichern. - - 4. Um das Zeichen unter dem Cursor zu löschen, tippe: x - - 5. Um Text einzufügen oder anzufügen, tippe: - i Einzufügenden Text eingeben Einfügen vor dem Cursor - A Anzufügenden Text eingeben Anfügen nach dem Zeilendene - -Bemerkung: Drücken von bringt Dich in den Normalmodus oder bricht ein - ungewolltes, erst teilweise eingegebenes Kommando ab. - - Nun fahre mit Lektion 2 fort. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.1: LÖSCHKOMMANDOS - - - ** Tippe dw , um ein Wort zu löschen. ** - - 1. Drücke um sicherzustellen, dass Du im Normalmodus bist. - - 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. - - 3. Bewege den Cursor zum Anfang eines Wortes, das gelöscht werden soll. - - 4. Tippe dw , um das Wort zu entfernen. - - Bemerkung: Der Buchstabe d erscheint auf der letzten Zeile des Bildschirms, - wenn Du ihn eingibst. Vim wartet darauf, daß Du w eingibst. Wenn Du - ein anderes Zeichen als d siehst, hast Du etwas falsches getippt; - drücke und beginne neu. - ----> Einige Wörter lustig gehören nicht Papier in diesen Satz. - - 5. Wiederhole die Schritte 3 und 4, bis der Satz korrekt ist und gehe - danach zur Lektion 2.2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.2: WEITERE LÖSCHKOMMANDOS - - - ** Tippe d$ , um bis zum Ende der Zeile zu löschen. ** - - 1. Drücke , um sicherzustellen, dass Du im Normalmodus bist. - - 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. - - 3. Bewege den Cursor zum Ende der korrekten Zeile (NACH dem ersten . ). - - 4. Tippe d$ , um bis zum Ende der Zeile zu löschen. - ----> Jemand hat das Ende der Zeile doppelt eingegeben. doppelt eingegeben. - - - 5. Gehe weiter zur Lektion 2.3 , um zu verstehen, was hierbei passiert. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.3: ÜBER OPERATOREN UND BEWEGUNGSZÜGE - - - Viele Kommandos, die Text ändern, setzen sich aus einem Operator und einer - Bewegung zusammen. Das Format für ein Löschkommando mit dem Löschoperator d - lautet wie folgt: - - d Bewegung - - wobei: - d - der Löschoperator - Bewegung - worauf der Löschoperator angewandt wird (unten aufgelistet). - - Eine kleine Auflistung von Bewegungen: - w - bis zum Beginn des nächsten Wortes OHNE dessen erstes Zeichen. - e - zum Ende des aktuellen Wortes MIT dessen letztem Zeichen. - $ - zum Ende der Zeile MIT dem letzen Zeichen. - - Dementsprechend löscht die Eingabe von de vom Cursor an bis zum Wortende. - -Bemerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den - Cursor entsprechend. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.4: ANWENDUNG EINES ZÄHLERS FÜR EINEN BEWEGUNGSSCHRITT - - - ** Die Eingabe einer Zahl vor einem Bewegungsschritt wiederholt diesen. ** - - 1. Bewege den Cursor zum Beginn der mit ---> markierten Zeile unten. - - 2. Tippe 2w , um den Cursor zwei Wörter vorwärts zu bewegen. - - 3. Tippe 3e , um den Cursor zum Ende des dritten Wortes zu bewegen. - - 4. Tippe 0 (Null) , um zum Anfang der Zeile zu gelangen. - - 5. Wiederhole Schritte 2 und 3 mit verschiedenen Zählern. - - ---> Dies ist nur eine Zeile aus Wörten um sich darin herumzubewegen. - - 6. Gehe weiter zu Lektion 2.5. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.5: ANWENDUNG EINES ZÄHLERS FÜR MEHRERE LÖSCHVORGÄNGE - - - ** Die Eingabe einer Zahl mit einem Operator wiederholt diesen mehrfach. ** - - Für die Kombination des Löschoperators und einem Bewegungsschritt (siehe - oben) stellt man dem Bewegungsschritt einen Zähler voran, um mehr zu löschen: - d Nummer Bewegungsschritt - - 1. Bewege den Cursor zum ersten Wort in GROSSBUCHSTABEN in der mit ---> - markieren Zeile. - - 2. Tippe d2w , um die zwei Wörter in GROSSBUCHSTABEN zu löschen. - - 3. Wiederhole Schritte 1 und 2 mit einem anderen Zähler, um die - darauffolgenden Wörter in GROSSBUCHSTABEN mit einem einzigen Kommando - zu löschen. - ----> Diese ABC DE Zeile FGHI JK LMN OP mit Wörtern ist Q RS TUV bereinigt. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.6: ARBEITEN AUF ZEILEN - - - ** Tippe dd , um eine ganze Zeile zu löschen. ** - - Wegen der Häufigkeit, dass man ganze Zeilen löscht, kamen die Entwickler von - Vi darauf, dass es leichter wäre, einfach zwei d's einzugeben, um eine Zeile - zu löschen. - - 1. Bewege den Cursor zur zweiten Zeile in der unten stehenden Redewendung. - 2. Tippe dd , um die Zeile zu löschen. - 3. Nun bewege Dich zur vierten Zeile. - 4. Tippe 2dd , um zwei Zeilen zu löschen. - ----> 1) Rosen sind rot, ----> 2) Matsch ist lustig, ----> 3) Veilchen sind blau, ----> 4) Ich habe ein Auto, ----> 5) Die Uhr sagt die Zeit, ----> 6) Zucker ist süß, ----> 7) So wie Du auch. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 2.7: RÜCKGÄNGIG MACHEN (UNDO) - - - ** Tippe u , um die letzten Kommandos rückgängig zu machen ** - ** oder U um eine ganze Zeile wiederherzustellen. ** - - 1. Bewege den Cursor zu der mit ---> markierten Zeile unten - und setze ihn auf den ersten Fehler. - 2. Tippe x , um das erste unerwünschte Zeichen zu löschen. - 3. Nun tippe u um das soeben ausgeführte Kommando rückgängig zu machen. - 4. Jetzt behebe alle Fehler auf der Zeile mit Hilfe des x Kommandos. - 5. Nun tippe ein großes U , um die Zeile in ihren Ursprungszustand - wiederherzustellen. - 6. Nun tippe u einige Male, um das U und die vorhergehenden Kommandos - rückgängig zu machen. - 7. Nun tippe CTRL-R (halte CTRL gedrückt und drücke R) mehrere Male, um die - Kommandos wiederherzustellen (die Rückgängigmachungen rückgängig machen). - ----> Beehebe die Fehller diesser Zeile und sttelle sie mitt 'undo' wieder her. - - 8. Dies sind sehr nützliche Kommandos. - Nun gehe weiter zur Zusammenfassung von Lektion 2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 2 - - - 1. Um vom Cursor bis zum nächsten Wort zu löschen, tippe: dw - 2. Um vom Cursor bis zum Ende einer Zeile zu löschen, tippe: d$ - 3. Um eine ganze Zeile zu löschen, tippe: dd - - 4. Um eine Bewegung zu wiederholen, stelle eine Nummer voran: 2w - 5. Das Format für ein Änderungskommando ist: - Operator [Anzahl] Bewegungsschritt - wobei: - Operator - gibt an, was getan werden soll, zum Beispiel d für delete - [Anzahl] - ein optionaler Zähler, um den Bewegungsschritt zu wiederholen - Bewegungsschritt - Bewegung über den zu ändernden Text, so wie - w (Wort), $ (zum Ende der Zeile), etc. - - 6. Um Dich zum Anfang der Zeile zu begeben, benutze die Null: 0 - - 7. Um vorherige Aktionen rückgängig zu machen, tippe: u (kleines u) - Um alle Änderungen auf einer Zeile rückgängig zu machen: U (großes U) - Um die Rückgängigmachungen rückgängig zu machen, tippe: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.1: ANFÜGEN (PUT) - - - ** Tippe p , um vorher gelöschten Text nach dem Cursor anzufügen. ** - - 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. - - 2. Tippe dd , um die Zeile zu löschen und sie in eimem Vim-Register zu - speichern. - - 3. Bewege den Cursor zur Zeile c), ÜBER derjenigen, wo die gelöschte Zeile - platziert werden soll. - - 4. Tippe p , um die Zeile unterhalb des Cursors zu platzieren. - - 5. Wiederhole die Schritte 2 bis 4, um alle Zeilen in die richtige - Reihenfolge zu bringen. - ----> d) Kannst Du das auch? ----> b) Veilchen sind blau, ----> c) Intelligenz ist erlernbar, ----> a) Rosen sind rot, -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.2: ERSETZEN (REPLACE) - - - ** Tippe rx , um das Zeichen unter dem Cursor durch x zu ersetzen. ** - - 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. - - 2. Bewege den Cursor, bis er sich auf dem ersten Fehler befindet. - - 3. Tippe r und anschließend das Zeichen, welches dort stehen sollte. - - 4. Wiederhole Schritte 2 und 3, bis die erste Zeile gleich der zweiten ist. - ----> Als diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt! ----> Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt! - - 5. Nun fahre fort mit Lektion 3.2. - -Bemerkung: Erinnere Dich, dass Du durch Anwenden lernen solltest, nicht durch - Auswendiglernen. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.3: ÄNDERN (CHANGE) - - - ** Um eine Änderung bis zum Wortende durchzuführen, tippe ce . ** - - 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. - - 2. Platziere den Cursor auf das s von Wstwr. - - 3. Tippe ce und die Wortkorrektur ein (in diesem Fall tippe örter ). - - 4. Drücke und bewege den Cursor zum nächsten zu ändernden Zeichen. - - 5. Wiederhole Schritte 3 und 4 bis der erste Satz gleich dem zweiten ist. - ----> Einige Wstwr dieser Zlaww lasdjlaf mit dem Ändern-Operator gaaauu werden. ----> Einige Wörter dieser Zeile sollen mit dem Ändern-Operator geändert werden. - -Bemerke, dass ce das Wort löscht und Dich in den Eingabemodus versetzt. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 3.4: MEHR ÄNDERUNGEN MITTELS c - - - ** Das change-Kommando arbeitet mit denselben Bewegungen wie delete. ** - - 1. Der change Operator arbeitet in gleicher Weise wie delete. Das Format ist: - - c [Anzahl] Bewegungsschritt - - 2. Die Bewegungsschritte sind die gleichen , so wie w (Wort) und $ - (Zeilenende). - - 3. Bewege Dich zur ersten unten stehenden mit ---> markierten Zeile. - - 4. Bewege den Cursor zum ersten Fehler. - - 5. Tippe c$ , gib den Rest der Zeile wie in der zweiten ein, drücke . - ----> Das Ende dieser Zeile soll an die zweite Zeile angeglichen werden. ----> Das Ende dieser Zeile soll mit dem c$ Kommando korrigiert werden. - -Bemerkung: Du kannst die Rücktaste benutzen, um Tippfehler zu korrigieren. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 3 - - - 1. Um einen vorher gelöschten Text anzufügen, tippe p . Dies fügt den - gelöschten Text NACH dem Cursor an (wenn eine ganze Zeile gelöscht wurde, - wird diese in die Zeile unter dem Cursor eingefügt). - - 2. Um das Zeichen unter dem Cursor zu ersetzen, tippe r und das an dieser - Stelle gewünschte Zeichen. - - 3. Der Änderungs- (change) Operator erlaubt, vom Cursor bis zum Ende des - Bewegungsschrittes zu ändern. Tippe ce , um eine Änderung vom Cursor bis - zum Ende des Wortes vorzunehmen; c$ bis zum Ende einer Zeile. - - 4. Das Format für change ist: - - c [Anzahl] Bewegungsschritt - - Nun fahre mit der nächsten Lektion fort. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.1: CURSORPOSITION UND DATEISTATUS - - ** Tippe CTRL-G , um Deine Dateiposition sowie den Dateistatus anzuzeigen. ** - ** Tippe G , um Dich zu einer Zeile in der Datei zu begeben. ** - -Bemerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!! - - 1. Halte die Ctrl Taste unten und drücke g . Dies nennen wir wir CTRL-G. - Eine Statusmeldung am Fuß der Seite erscheint mit dem Dateinamen und der - Position innerhalb der Datei. Merke Dir die Zeilennummer für Schritt 3. - -Bemerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten - Bildschirmecke. Dies ist Folge der 'ruler' Option (siehe :help 'ruler') - - 2. Drücke G , um Dich zum Ende der Datei zu begeben. - Tippe gg , um Dich zum Anfang der Datei zu begeben. - - 3. Gib die Nummer der Zeile ein, auf der Du vorher warst, gefolgt von G . - Dies bringt Dich zurück zu der Zeile, auf der Du gestanden hast, als Du - das erste Mal CTRL-G gedrückt hast. - - 4. Wenn Du Dich sicher genug fühlst, führe die Schritte 1 bis 3 aus. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.2: DAS SUCHEN - KOMMANDO - - - ** Tippe / gefolgt von einem Ausdruck, um nach dem Ausdruck zu suchen. ** - - 1. Im Normalmodus, tippe das / Zeichen. Bemerke, dass das / und der - Cursor am Fuß des Schirms erscheinen, so wie beim : Kommando. - - 2. Nun tippe 'Fehhler' . Dies ist das Wort, nach dem Du suchen willst. - - 3. Um nach demselben Ausdruck weiterzusuchen, tippe einfach n (für next). - Um nach demselben Ausdruck in der Gegenrichtung zu suchen, tippe N . - - 4. Um nach einem Ausdruck rückwärts zu suchen , benutze ? statt / . - - 5. Um dahin zurückzukehren, von wo Du gekommen bist, drücke CTRL-O (Halte - Ctrl unten und drücke den Buchstaben o). Wiederhole dies, um weiter - zurückzugehen. CTRL-I bringt dich vorwärts. - ----> Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler -Bemerkung: Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang - fortgesetzt, es sei denn, die 'wrapscan' Option wurde abgeschaltet. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.3: PASSENDE KLAMMERN FINDEN - - - ** Tippe % , um eine korrespondierende Klammer ),], oder } zu finden. ** - - 1. Platziere den Cursor auf irgendeines der Zeichen (, [, oder { in der unten - stehenden Zeile, die mit ---> markiert ist. - - 2. Nun tippe das % Zeichen. - - 3. Der Cursor bewegt sich zur passenden gegenüberliegenden Klammer. - - 4. Tippe % , um den Cursor zur anderen passenden Klammer zu bewegen. - - 5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere % aus. - ----> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern } darin. )) - -Bemerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem - Programmtext, in dem passende Klammern fehlen! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE) - - - ** Tippe :s/alt/neu/g , um 'alt' durch 'neu' zu ersetzen. ** - - 1. Bewege den Cursor zu der unten stehenden mit ---> markierten Zeile. - - 2. Tippe :s/diee/die . Bemerke, dass der Befehl nur das erste - Vorkommen von "diee" ersetzt. - - 3. Nun tippe :s/diee/die/g . Das Zufügen des Flags g bedeutet, eine - globale Ersetzung über die Zeile durchzuführen, was alle Vorkommen von - "diee" auf der Zeile ersetzt. - ----> diee schönste Zeit, um diee Blumen anzuschauen, ist diee Frühlingszeit. - - 4. Um alle Vorkommen einer Zeichenkette innerhalb zweier Zeilen zu ändern, - tippe :#,#s/alt/neu/g wobei #,# die Zeilennummern des Zeilenbereiches - sind, in dem die Ersetzung durchgeführt werden soll. - Tippe :%s/alt/neu/g um alle Vorkommen in der gesamten Datei zu ändern. - Tippe :%s/alt/neu/gc um alle Vorkommen in der gesamten Datei zu finden - mit einem Fragedialog, ob ersetzt werden soll oder nicht. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 4 - - 1. CTRL-G zeigt die aktuelle Dateiposition sowie den Dateistatus. - G bringt Dich zum Ende der Datei. - Nummer G bringt Dich zur entsprechenden Zeilennummer. - gg bringt Dich zur ersten Zeile. - - 2. Die Eingabe von / plus einem Ausdruck sucht VORWÄRTS nach dem Ausdruck. - Die Eingabe von ? plus einem Ausdruck sucht RÜCKWÄRTS nach dem Ausdruck. - Tippe nach einer Suche n , um das nächste Vorkommen in der gleichen - Richtung zu finden; oder N , um in der Gegenrichtung zu suchen. - CTRL-O bringt Dich zurück zu älteren Positionen, CTRL-I zu neueren. - - 3. Die Eingabe von % , wenn der Cursor sich auf (,),[,],{, oder } - befindet, bringt Dich zur Gegenklammer. - - 4. Um das erste Vorkommen von "alt" in einer Zeile durch "neu" zu ersetzen, - tippe :s/alt/neu - Um alle Vorkommen von "alt" in der Zeile ersetzen, tippe :s/alt/neu/g - Um Ausdrücke innerhalb zweier Zeilennummern zu ersetzen, :#,#s/alt/neu/g - Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g - Für eine jedmalige Bestätigung, addiere 'c' (confirm) :%s/alt/neu/gc -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.1: AUSFÜHREN EINES EXTERNEN KOMMANDOS - - - ** Gib :! , gefolgt von einem externen Kommando ein, um es auszuführen. ** - - 1. Tippe das vertraute Kommando : , um den Cursor auf den Fuß des Schirms - zu setzen. Dies erlaubt Dir, ein Kommandozeilen-Kommando einzugeben. - - 2. Nun tippe ein ! (Ausrufezeichen). Dies ermöglicht Dir, ein beliebiges, - externes Shellkommando auszuführen. - - 3. Als Beispiel tippe ls nach dem ! und drücke . Dies zeigt - eine Auflistung Deines Verzeichnisses; genauso, als wenn Du auf der - Eingabeaufforderung wärst. Oder verwende :!dir , falls ls nicht geht. - -Bemerkung: Mit dieser Methode kann jedes beliebige externe Kommando - ausgeführt werden, auch mit Argumenten. - -Bemerkung: Alle : Kommandos müssen durch Eingabe von - abgeschlossen werden. Von jetzt an erwähnen wir dies nicht jedesmal. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.2: MEHR ÜBER DAS SCHREIBEN VON DATEIEN - - -** Um am Text durchgeführte Änderungen zu speichern, tippe :w DATEINAME. ** - - 1. Tippe :!dir oder :!ls , um eine Auflistung Deines Verzeichnisses zu - erhalten. Du weißt nun bereits, dass Du danach eingeben musst. - - 2. Wähle einen Dateinamen, der noch nicht existiert, z.B. TEST. - - 3. Nun tippe: :w TEST (wobei TEST der gewählte Dateiname ist). - - 4. Dies speichert die ganze Datei (den Vim Tutor) unter dem Namen TEST. - Um dies zu überprüfen, tippe nochmals :!ls bzw. !dir, um Deinen - Verzeichnisinhalt zu sehen. - -Bemerkung: Würdest Du Vim jetzt beenden und danach wieder mit vim TEST - starten, dann wäre diese Datei eine exakte Kopie des Tutors zu dem - Zeitpunkt, als Du ihn gespeichert hast. - - 5. Nun entferne die Datei durch Eingabe von (MS-DOS): :!del TEST - oder (Unix): :!rm TEST -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN - -** Um einen Abschnitt der Datei zu speichern, tippe v Bewegung :w DATEI ** - - 1. Bewege den Cursor zu dieser Zeile. - - 2. Tippe v und bewege den Cursor zum fünften Auflistungspunkt unten. - Bemerke, daß der Text hervorgehoben wird. - - 3. Drücke das Zeichen : . Am Fuß des Schirms erscheint :'<,'> . - - 4. Tippe w TEST , wobei TEST ein noch nicht vorhandener Dateiname ist. - Vergewissere Dich, daß Du :'<,'>w TEST siehst, bevor Du Enter drückst. - - 5. Vim schreibt die ausgewählten Zeilen in die Datei TEST. Benutze :!dir - oder :!ls , um sie zu sehen. Lösche sie noch nicht! Wir werden sie in - der nächsten Lektion benutzen. - -Bemerkung: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor - umherbewegen, um die Auswahl größer oder kleiner zu machen. Anschließend - kann man einen Operator anwenden, um mit dem Text etwas zu tun. Zum - Beispiel löscht d den Text. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 5.4: EINLESEN UND ZUSAMMENFÜHREN VON DATEIEN - - - ** Um den Inhalt einer Datei einzulesen, tippe :r DATEINAME ** - - 1. Platziere den Cursor überhalb dieser Zeile. - -BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 - sehen. Dann bewege Dich wieder ABWÄRTS, um diese Lektion wiederzusehen. - - 2. Nun lies Deine Datei TEST ein indem Du das Kommando :r TEST ausführst, - wobei TEST der von Dir verwendete Dateiname ist. - Die eingelesene Datei wird unterhalb der Cursorzeile eingefügt. - - 3. Um zu überprüfen, dass die Datei eingelesen wurde, gehe zurück und siehe, - dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und die - eingefügte Dateiversion. - -Bemerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum - Beispiel liest :r !ls die Ausgabe des Kommandos ls ein und platziert - sie unterhalb des Cursors. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 5 - - - 1. :!Kommando führt ein externes Kommando aus. - - Einige nützliche Beispiele sind - (MS-DOS) (Unix) - :!dir :!ls - zeigt eine Verzeichnisauflistung. - :!del DATEINAME :!rm DATEINAME - entfernt Datei DATEINAME. - - 2. :w DATEINAME speichert die aktuelle Vim-Datei unter dem Namen DATEINAME. - - 3. v Bewegung :w DATEINAME schreibt die Visuell ausgewählten Zeilen in - die Datei DATEINAME. - - 4. :r DATEINAME lädt die Datei DATEINAME und fügt sie unterhalb der - Cursorposition ein. - - 5. :r !dir liest die Ausgabe des Kommandos dir und fügt sie unterhalb der - Cursorposition ein. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.1: ZEILEN ÖFFNEN (OPEN) - - - ** Tippe o , um eine Zeile unterhalb des Cursors zu öffnen und Dich in ** - ** den Einfügemodus zu begeben. ** - - 1. Bewege den Cursor zu der ersten mit ---> markierten Zeile unten. - - 2. Tippe o (klein geschrieben), um eine Zeile UNTERHALB des Cursos zu öffnen - und Dich in den Einfügemodus zu begeben. - - 3. Nun tippe etwas Text und drücke , um den Einfügemodus zu verlassen. - ----> Mit o wird der Cursor auf der offenen Zeile im Einfügemodus platziert. - - 4. Um eine Zeile ÜBERHALB des Cursos aufzumachen, gib einfach ein großes O - statt einem kleinen o ein. Versuche dies auf der unten stehenden Zeile. - ----> Öffne eine Zeile über dieser mit O , wenn der Cursor auf dieser Zeile ist. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.2: TEXT ANFÜGEN (APPEND) - - - ** Tippe a , um Text NACH dem Cursor einzufügen. ** - - 1. Bewege den Cursor zum Anfang der ersten Übungszeile mit ---> unten. - - 2. Drücke e , bis der Cursor am Ende von Zei steht. - - 3. Tippe ein kleines a , um Text NACH dem Cursor anzufügen. - - 4. Vervollständige das Wort so wie in der Zeile darunter. Drücke , - um den Einfügemodus zu verlassen. - - 5. Bewege Dich mit e zum nächsten unvollständigen Wort und wiederhole - Schritte 3 und 4. - ----> Diese Zei bietet Gelegen , Text in einer Zeile anzufü. ----> Diese Zeile bietet Gelegenheit, Text in einer Zeile anzufügen. - -Bemerkung: a, i und A gehen alle gleichermaßen in den Einfügemodus; der - einzige Unterschied ist, wo die Zeichen eingefügt werden. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.3: EINE ANDERE ART DES ERSETZENS (REPLACE) - - - ** Tippe ein großes R , um mehr als ein Zeichen zu ersetzen. ** - - 1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile. - Bewege den Cursor zum Anfang des ersten xxx . - - 2. Nun drücke R und tippe die Nummer, die darunter in der zweiten Zeile - steht, so das diese das xxx ersetzt. - - 3. Drücke , um den Ersetzungsmodus zu verlassen. Bemerke, daß der Rest - der Zeile unverändert bleibt. - - 4. Wiederhole die Schritte, um das verbliebene xxx zu ersetzen. - ----> Das Addieren von 123 zu xxx ergibt xxx. ----> Das Addieren von 123 zu 456 ergibt 579. - -Bemerkung: Der Ersetzungsmodus ist wie der Einfügemodus, aber jedes eingetippte - Zeichen löscht ein vorhandenes Zeichen. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.4: TEXT KOPIEREN UND EINFÜGEN - - ** Benutze den y Operator, um Text zu kopieren; p , um ihn einzufügen ** - - 1. Gehe zu der mit ---> markierten Zeile unten, setze den Cursor hinter "a)". - - 2. Starte den Visuellen Modus mit v , bewege den Cursor genau vor "erste". - - 3. Tippe y , um den hervorgehoben Text zu kopieren. - - 4. Bewege den Cursor zum Ende der nächsten Zeile: j$ - - 5. Tippe p , um den Text einzufügen und anschließend: a zweite . - - 6. Benutze den Visuellen Modus, um " Eintrag." auszuwählen, kopiere mittels - y , bewege Dich zum Ende der nächsten Zeile mit j$ und füge den Text - dort mit p an. - ----> a) dies ist der erste Eintrag. - b) - -Bemerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.5: OPTIONEN SETZEN - - ** Setze eine Option so, dass eine Suche oder eine Ersetzung Groß- ** - ** und Kleinschreibung ignoriert ** - - 1. Suche nach 'ignoriere', indem Du /ignoriere eingibst. - Wiederhole die Suche einige Male, indem Du die n - Taste drückst. - - 2. Setze die 'ic' (Ignore case) - Option, indem Du :set ic eingibst. - - 3. Nun suche wieder nach 'ignoriere', indem Du n tippst. - Bemerke, daß jetzt Ignoriere und auch IGNORIERE gefunden wird. - - 4. Setze die 'hlsearch' und 'incsearch' - Optionen: :set hls is - - 5. Wiederhole die Suche und beobachte, was passiert: /ignoriere - - 6. Um das Ignorieren von Groß/Kleinschreibung abzuschalten, tippe: :set noic - -Bemerkung: Um die Hervorhebung der Treffer zu enfernen, gib ein: :nohlsearch -Bemerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze - \c im Suchausdruck: /ignoriere\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 6 - - 1. Tippe o , um eine Zeile UNTER dem Cursor zu öffnen und den Einfügemodus - zu starten. - Tippe O , um eine Zeile ÜBER dem Cursor zu öffnen. - - 2. Tippe a , um Text NACH dem Cursor anzufügen. - Tippe A , um Text nach dem Zeilenende anzufügen. - - 3. Das Kommando e bringt Dich zum Ende eines Wortes. - - 4. Der Operator y (yank) kopiert Text, p (put) fügt ihn ein. - - 5. Ein großes R geht in den Ersetzungsmodus bis zum Drücken von . - - 6. Die Eingabe von ":set xxx" setzt die Option "xxx". Einige Optionen sind: - 'ic' 'ignorecase' Ignoriere Groß/Kleinschreibung bei einer Suche - 'is' 'incsearch' Zeige Teilübereinstimmungen für einen Suchausdruck - 'hls' 'hlsearch' Hebe alle passenden Ausdrücke hervor - Der Optionsname kann in der Kurz- oder der Langform angegeben werden. - - 7. Stelle einer Option "no" voran, um sie abzuschalten: :set noic -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.1 : AUFRUFEN VON HILFE - - - ** Nutze das eingebaute Hilfesystem ** - - Vim besitzt ein umfassendes eingebautes Hilfesystem. Für den Anfang probiere - eins der drei folgenden Dinge aus: - - Drücke die - Taste (falls Du eine besitzt) - - Drücke die Taste (falls Du eine besitzt) - - Tippe :help - - Lies den Text im Hilfefenster, um zu verstehen wie die Hilfe funktioniert. - Tippe CTRL-W CTRL-W , um von einem Fenster zum anderen zu springen. - Tippe :q , um das Hilfefenster zu schließen. - - Du kannst Hilfe zu praktisch jedem Thema finden, indem Du dem ":help"- - Kommando ein Argument gibst. Probiere folgendes ( nicht vergessen): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.2: ERSTELLE EIN START-SKRIPT - - - ** Aktiviere die eingebauten Funktionalitäten von Vim ** - - Vim besitzt viele Funktionalitäten, die über Vi hinausgehen, aber die meisten - von ihnen sind standardmäßig deaktiviert. Um mehr Funktionalitäten zu nutzen, - musst Du eine "vimrc" - Datei erstellen. - - 1. Starte das Editieren der "vimrc"-Datei, abhängig von Deinem System: - :e ~/.vimrc für Unix - :e $VIM/_vimrc für MS-Windows - - 2. Nun lies den Inhalt der Beispiel-"vimrc"-Datei ein: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Speichere die Datei mit: - :w - - Beim nächsten Start von Vim wird die Syntaxhervorhebung aktiviert sein. - Du kannst all Deine bevorzugten Optionen zu dieser "vimrc"-Datei zufügen. - Für mehr Informationen tippe :help vimrc-intro -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 7.3: VERVOLLSTÄNDIGEN - - - ** Kommandozeilenvervollständigung mit CTRL-D and ** - - 1. Stelle sicher, daß Vim nicht im vi-Kompatibilitätsmodus ist: :set nocp - - 2. Siehe nach, welche Dateien im Verzeichnis existieren: :!ls oder :dir - - 3. Tippe den Beginn eines Komandos: :e - - 4. Drücke CTRL-D und Vim zeigt eine Liste mit "e" beginnender Kommandos. - - 5. Drücke und Vim vervollständigt den Kommandonamen zu ":edit". - - 6. Nun füge ein Leerzeichen und den Beginn einer existierenden Datei an: - :edit DAT - - 7. Drücke . Vim vervollständigt den Namen (falls er eindeutig ist). - -Bemerkung: Vervollständigung funktioniert für viele Kommandos. Versuche - einfach CTRL-D und . Dies ist insbesondere nützlich für :help . -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZUSAMMENFASSUNG VON LEKTION 7 - - - 1. Tippe :help oder drücke oder , um ein Hilfefenster zu öffnen. - - 2. Tippe :help Kommando , um Hilfe über Kommando zu erhalten. - - 3. Tippe CTRL-W CTRL-W , um zum anderen Fenster zu springen. - - 4. Tippe :q , um das Hilfefenster zu schließen. - - 5. Erstelle ein vimrc - Startskript zur Sicherung bevorzugter Einstellungen. - - 6. Drücke CTRL-D nach dem Tippen eines Kommandos : , um mögliche - Vervollständigungen zu sehen. - Drücke für eine einzige Vervollständigung. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Damit ist der Vim Tutor beendet. Die Intention war, einen kurzen und - bündigen Überblick über den Vim Editor zu liefern; gerade genug, um relativ - leicht mit ihm umgehen zu können. Der Vim Tutor hat nicht den geringsten - Anspruch auf Vollständigkeit; Vim hat noch weitaus mehr Kommandos. Lies als - nächstes das User Manual: ":help user-manual". - - Für weiteres Lesen und Lernen ist folgendes Buch empfohlen : - Vim - Vi Improved - von Steve Oualline - Verlag: New Riders - Das erste Buch, welches durchgängig Vim gewidmet ist. Besonders nützlich - für Anfänger. Viele Beispiele und Bilder sind enthalten. - Siehe http://iccf-holland.org/click5.html - - Folgendes Buch ist älter und mehr über Vi als Vim, aber auch empfehlenswert: - Textbearbeitung mit dem vi-Editor - von Linda Lamb und Arnold Robbins - Verlag O'Reilly - ISBN: 3897211262 - In diesem Buch kann man fast alles finden, was man mit Vi tun möchte. - Die sechste Ausgabe enthält auch Informationen über Vim. - - Als aktuelle Referenz für Version 6.2 und knappe Einführung dient das - folgende Buch: - vim ge-packt von Reinhard Wobst - mitp-Verlag, ISBN 3-8266-1425-9 - Trotz der kompakten Darstellung ist es durch viele nützliche Beispiele auch - für Einsteiger empfehlenswert. Probekapitel und die Beispielskripte sind - online erhältlich. Siehe http://iccf-holland.org/click5.html - - Dieses Tutorial wurde geschrieben von Michael C. Pierce and Robert K. Ware, - Colorado School of Mines. Es benutzt Ideen, die Charles Smith, Colorado State - University, zur Verfügung stellte. E-mail: bware@mines.colorado.edu. - - Bearbeitet für Vim von Bram Moolenaar. - Deutsche Übersetzung von Joachim Hofmann 2007. E-mail: Joachim.Hof@gmx.de - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.eo b/share/vim/vim73/tutor/tutor.eo deleted file mode 100644 index 958d393d..00000000 --- a/share/vim/vim73/tutor/tutor.eo +++ /dev/null @@ -1,991 +0,0 @@ -============================================================================== -= B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.3 = -============================================================================== - - Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili - por æion klarigi en instruilo kiel æi tiu. Æi tiu instruilo estas - fasonita por priskribi sufiæajn komandojn, por ke vi kapablu uzi Vim - kun sufiæa facileco. - - La tempo bezonata por plenumi la kurson estas 25-30 minutoj, kaj dependas - de kiom da tempo estas uzata por eksperimenti. - - ATENTU: - La komandoj en la lecionoj þanøos la tekston. Kopiu tiun æi dosieron - por ekzerci vin (se vi lanæis "vimtutor", tiam estas jam kopio). - - Gravas memori, ke æi tiu instruilo estas organizata por instrui per - la uzo. Tio signifas, ke vi devas plenumi la komandojn por bone lerni - ilin. Se vi nur legas la tekston, vi forgesos la komandojn! - - Nun, certigu, ke la majuskla baskulo NE estas en reøimo majuskla, - kaj premu la klavon j sufiæe da fojoj por movi la kursoron, kaj por - ke la leciono 1.1 plenigu la ekranon. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.1: MOVI LA KURSORON - - - ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. ** - ^ - k Konsilo: La klavo h estas la plej liva kaj movas liven. - < h l > La klavo l estas la plej dekstra kaj movas dekstren. - j La klavo j aspektas kiel malsuprena sago. - v - 1. Movu la kursoron sur la ekrano øis kiam vi sentas vin komforta. - - 2. Premu la klavon (j) øis kiam øi ripetas. - Vi nun scias, kiel moviøi al la sekvanta leciono - - 3. Uzante la malsuprenan klavon, moviøu al la leciono 1.2. - -RIMARKO: Se vi dubas pri tio, kion vi premis, premu por reiri al - la normala reøimo. Tiam repremu la deziratan komandon. - -RIMARKO: La klavoj de la kursoro devus ankaý funkcii. Sed uzante hjkl, - vi kapablos moviøi pli rapide post kiam vi kutimiøos. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.2: ELIRI EL VIM - - - !! RIMARKO: Antaý ol plenumi iujn subajn paþojn ajn, legu la tutan lecionon!! - - 1. Premu la klavon (por certigi, ke vi estas en normala reøimo). - - 2. Tajpu: :q! . - Tio eliras el la rekdaktilo, SEN konservi la þanøojn, kiujn vi faris. - - 3. Kiam vi vidas la þelinviton, tajpu la komandon kiun vi uzis por eniri - en æi tiu instruilo. Tio estus: vimtutor - - 4. Se vi memoris tiujn paþojn kaj sentas vin memfida, plenumu la paþojn - 1 øis 3 por eliri kaj reeniri la redaktilon. - -RIMARKO: :q! eliras sen konservi la þanøojn, kiujn vi faris. - Post kelkaj lecionoj, vi lernos kiel konservi la þanøojn al dosiero. - - 5. Movu la kursoron suben øis la leciono 1.3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.3: REDAKTO DE TEKSTO - FORVIÞO - - - ** Premu x por forviþi la signon sub la kursoro. ** - - 1. Movu la kursoron al la suba linio markita per --->. - - 2. Por korekti la erarojn, movu la kursoron øis kiam øi estas sur la - forviþenda signo. - - 3. Premu la klavon x por forviþi la nedeziratan signon. - - 4. Ripetu paþojn 2 øis 4 øis kiam la frazo estas øusta. - - ----> La boovinno saaltiss ssur laa luuno. - - 5. Post kiam la linio estas øusta, iru al la leciono 1.4 - -RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.4: REDAKTO DE TEKSTO - ENMETO - - - ** Premu i por enmeti tekston. ** - - 1. Movu la kursoron al la unua suba linio markita per --->. - - 2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan - signon post kie la teksto estas enmetenda. - - 3. Premu i kaj tajpu la bezonatajn aldonojn. - - 4. Premu kiam la eraroj estas korektitaj por reiri al la normala - reøimo. Ripetu la paþojn 2 øis 4 por korekti la frazon. - ----> Mank en æi linio. ----> Mankas tekston en æi tiu linio. - - 5. Kiam vi sentas vin komforta pri enmeto de teksto, moviøu al la - leciono 1.5. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.5: REDAKTO DE TEKSTO - POSTALDONO - - - ** Premu A por postaldoni tekston. ** - - 1. Movu la kursoron al la unua suba linio markita per --->. - Ne gravas sur kiu signo estas la kursoro. - - 2. Premu majusklan A kaj tajpu la bezonatajn aldonojn. - - 3. Post kiam la teksto estas aldonita, premu por reiri al la normala - reøimo. - - 4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la - paþojn 2 kaj 3 por korekti la frazon. - ----> Mankas teksto el ti - Mankas teksto el tiu linio. ----> Mankas ankaý teks - Mankas ankaý teksto æi tie. - - 5 Kiam vi sentas vin komforta pri postaldono de teksto, moviøu al la - leciono 1.6 - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.6: REDAKTI DOSIERON - - ** Uzu :wq por konservi dosieron kaj eliri. ** - - !! RIMARKO: Antaý ol plenumi iun suban paþon ajn, legu la tutan lecionon!! - - 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q! - Aý, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie. - - 2. Æe la þelinvito, tajpu æi tiun komandon: vim tutor - 'vim' estas la komando por lanæi la redaktilon Vim, 'tutor' estas la - dosiernomo de la dosiero, kiun vi volas redakti. Uzu dosieron, kiu - þanøeblas. - - 3. Enmetu kaj forviþu tekston, kiel vi lernis en la antaýaj lecionoj. - - 4. Konservu la dosieron kun þanøoj kaj eliru el Vim per: :wq - - 5. Se vi eliris la instruilon vimtutor en paþo 1, restartu la intruilon - vimtutor kaj moviøu suben al la sekvanta resumo. - - 6. Post kiam vi legis la suprajn paþojn, kaj komprenis ilin: faru ilin. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1 RESUMO - - - 1. La kursoro moviøas aý per la sagoklavoj, aý per la klavoj hjkl. - h (liven) j (suben) k (supren) l (dekstren) - - 2. Por lanæi Vim el la þelinvito, tajpu: vim DOSIERNOMO - - 3. Por eliri el Vim, tajpu: :q! por rezigni la þanøojn - - 4. Por forviþi la signojn æe la pozicio de la kursoro, tajpu: x - - 5. Por enmeti aý postaldoni tekston, tajpu: - i tajpu enmetendan tekston - enmetas tekston antaý la kursoro - - A tajpu la postaldonendan tekston - postaldonas post la kursoro - -RIMARKO: Premo de iras al la normala reøimo, aý rezignas la - nedeziratan aý parte plenumita komando. - -Nun daýrigu al la leciono 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.1: KOMANDOJ DE FORVIÞO - - - ** Tajpu dw por forviþi vorton. ** - - 1. Premu por certigi, ke vi estas en normala reøimo. - - 2. Movu la kursoron al la linio markita per --->. - - 3. Movu la kursoron al la komenco de vorto, kiu forviþendas. - - 4. Tajpu dw por forviþi la vorton. - - RIMARKO: La litero d aperos en la lasta linio sur la ekrano kiam vi - tajpas øin. Vim atendas øis kiam vi tajpas w . Se vi vidas - alian signon ol d vi tajpis ion mise; premu kaj - rekomencu. - ----> Estas iuj vortoj kiuj Zamenhof ne devus esti akuzativo en æi tiu frazo. - - 5. Ripetu paþojn 3 kaj 4 øis kiam la frazo estas øusta kaj moviøu al la - leciono 2.2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.2: PLIAJ KOMANDOJ DE FORVIÞO - - - ** Tajpu d$ por forviþi la finon de la linio. ** - - 1. Premu por certigi, ke vi estas en normala reøimo. - - 2. Movu la kursoron sur la suban linion markita per --->. - - 3. Movu la kursoron æe la fino de la øusta linio (POST la unua . ). - - 4. Tajpu d$ por forivþi øis la fino de la linio. - ----> Iu tajpis la finon de æi tiu linio dufoje. fino de æi tiu linio dufoje. - - - 5. Moviøu al la leciono 2.3 por kompreni kio okazas. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ - - - Multaj komandoj, kiuj þanøas la tekston, estas faritaj de operatoro kaj - movo. La formato de komando de forviþo per la operatoro de forviþo d - estas kiel sekvas: - - d movo - - Kie: - d - estas la operatoro de movo - movo - estas tio, pri kio la operatoro operacios (listigita sube) - - Mallonga listo de movoj: - w - øis la komenco de la sekvanta vorto, krom øia unua signo. - e - øis la fino de la nuna vorto, krom la lasta signo. - $ - øis la fino de la linio, krom la lasta signo. - - Do tajpo de 'de' forviþos ekde la kursoro øis la fino de la vorto. - -RIMARKO: Premo de nur la movo en Normala reøimo sen operatoro movos - la kursoron kiel specifite. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.4: UZI NOMBRON POR MOVO - - ** Tajpo de nombro antaý movo ripetas øin laýfoje. ** - - 1. Movu la kursoron æe la komenco de la suba linio markita per --->. - - 2. Tajpu 2w por movi la kursoron je du vortoj antaýen. - - 3. Tajpu 3e por movi la kursoron æe la fino de la tria vorto antaýen. - - 4. Tajpu 0 (nul) por moviøi æe la komenco de la linio. - - - 5. Ripetu paþojn 2 øis 3 kun malsamaj nombroj. - ----> Tio estas nur linio kun vortoj, kie vi povas moviøi. - - 6. Moviøu al la leciono 2.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.5: UZI NOMBRON POR FORVIÞI PLI - - - ** Tajpo de nombro kun operatoro ripetas øin laýfoje. ** - - En la kombina¼o de la operatoro de forviþo, kaj movo kiel menciita - æi-supre, eblas aldoni nombron antaý la movo por pli forviþi: - d nombro movo - - 1. Movu la kursoron æe la unua MAJUSKLA vorto en la linio markita per --->. - - 2. Tajpu d2w por forviþi la du MAJUSKLAJN vortojn - - 3. Ripetu paþojn 1 øis 2 per malsama nombro por forviþi la sinsekvajn - MAJUSKLAJN vortojn per unu komando - ----> Tiu AB CDE linio FGHI JK LMN OP de vortoj estas Q RS TUV purigita. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.6: OPERACII SUR LINIOJ - - - ** Tajpu dd por forviþi tutan linion. ** - - Pro la ofteco de forviþo de tuta linio, la verkisto de Vi decidis, ke - estus pli facile simple tajpi du d-ojn por forviþi linion. - - 1. Movu la kursoron sur la duan linion en la suba frazo. - 2. Tajpu dd por forviþi la linion. - 3. Nun moviøu al la kvara linio. - 4. Tajpu 2dd por forviþi du liniojn. - ----> 1) Rozoj estas ruøaj, ----> 2) Þlimo estas amuza, ----> 3) Violoj estas bluaj, ----> 4) Mi havas aýton, ----> 5) Horloøoj diras kioma horo estas, ----> 6) Sukero estas dolæa, ----> 7) Kaj tiel vi estas. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.7: LA KOMANDO DE MALFARO - - - ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. ** - - 1. Movu la kursoron æe la suba linio markita per ---> kaj metu øin sur - la unuan eraron. - 2. Tajpu x por forviþi la unuan nedeziratan signon. - 3. Nun tajpu u por malfari la lastan plenumitan komandon. - 4. Æi-foje, riparu æiujn erarojn en la linio kaj øia originala stato. - 5. Nun tajpu majusklan U por igi la linion al øia antaýa stato. - 6. Nun tajpu u kelkfoje por malfari la U kaj antaýajn komandojn. - 7. Nun tajpu CTRL-R (premante la CTRL klavon dum vi premas R) kelkfoje - por refari la komandojn (malfari la malfarojn). - ----> Koorektii la erarojn sur tiuu æi liniio kaj remettu illlin per malfaro. - - 8. Tiuj estas tre utilaj komandoj. Nun moviøu al la leciono 2 RESUMO. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2 RESUMO - - - 1. Por forviþi ekde la kursoro øis la sekvanta vorto, tajpu: dw - 2. Por forviþi ekde la kursoro øis la fino de la linio, tajpu: d$ - 3. Por forviþi tutan linion, tajpu: dd - - 4. Por ripeti movon, antaýmetu nombron: 2w - 5. La formato de þanøa komando estas: - operatoro [nombro] movo - - kie: - operatoro - estas tio, kio farendas, kiel d por forviþi - [nombro] - estas opcia nombro por ripeti la movon - movo - movas sur la teksto por operacii, kiel ekzemple w (vorto), - $ (øis fino de linio), ktp. - - 6. Por moviøi al la komenco de la linio, uzu nul: 0 - - 7. Por malfari antaýajn agojn, tajpu: u (minuskla u) - Por malfari æiujn þanøojn sur la linio, tajpu: U (majuskla U) - Por refari la malfarojn, tajpu: CTRL-R - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3.1 LA KOMANDO DE METO - - - ** Tajpu p por meti tekston forviþitan antaýe post la kursoro. ** - - 1. Movu la kursoron æe la unua ---> suba linio. - - 2. Tajpu dd por forviþi la linion kaj konservi øin ene de reøistro de Vim. - - 3. Movu la kursoron æe la linio c), SUPER kie la forviþita linio devus esti. - - 4. Tajpu p por meti la linion sub la kursoron. - - 5. Ripetu la paþojn 2 øis 4 por meti æiujn liniojn en la øusta ordo. - ----> d) Æu ankaý vi povas lerni? ----> b) Violoj estas bluaj, ----> c) Inteligenteco lerneblas, ----> a) Rozoj estas ruøaj, - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3.2 LA KOMANDO DE ANSTATAÝIGO - - - ** Tajpu rx por anstataýigi la signon æe la kursoro per x . ** - - - 1. Movu la kursoron æe la unua suba linio markita per --->. - - 2. Movu la kursoron øis la unua eraro. - - 3. Tajpu r kaj la signon, kiu devus esti tie. - - 4. Ripetu paþojn 2 kaj 3 øis kiam la unua linio egalas la duan. - ----> Kiem tiu lanio estis tajpita, iu pramis la naøuftajn klovojn! ----> Kiam tiu linio estis tajpita, iu premis la neøustajn klavojn! - - 5. Nun moviøu al la leciono 3.3. - -RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3.3 LA OPERATORO DE ÞANØO - - - ** Por þanøi øis la fino de la vorto, tajpu ce . ** - - 1. Movu la kursoron æe la unua suba linio markita per --->. - - 2. Metu la kursoron sur la d en lduzw - - 3. Tajpu ce kaj la øustan vorton (en tiu æi kazo, tajpu inio ). - - 4. Premu kaj moviøu al la sekvanta signo, kiu bezonas þanøon. - - 5. Ripetu la paþojn 3 kaj 4 øis kiam la unua frazo egalas la duan. - ----> Tiu lduzw havas kelkajn vortojn, kiii bezas þanøon per la þanøooto. ----> Tiu linio havas kelkajn vortojn, kiuj bezonas þanøon per la þanøoperatoro. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3.4 PLIAJ ÞANØOJ PER c - - - ** La operatoro de þanøo uzeblas kun la sama movo kiel forviþo. ** - - 1. La operatoro de þanøo funkcias sammaniere kiel forviþo. La formato estas: - - c [nombro] movo - - 2. La movoj estas samaj, kiel ekzemple w (vorto) kaj $ (fino de linio). - - 3. Moviøu æe la unua suba linio markita per --->. - - 4. Movu la kursoron al la unua eraro. - - 5. Tajpu c$ kaj tajpu la reston de la linio kiel la dua kaj premu . - ----> La fino de æi tiu linio bezonas helpon por igi øin same kiel la dua. ----> La fino de æi tiu linio bezonas korektojn per uzo de la komando c$ - -RIMARKO: Vi povas uzi la klavon Retropaþo por korekti erarojn dum vi tajpas. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3 RESUMO - - - 1. Por remeti tekston, kiun vi ¼us forviþis, tajpu p. Tio metas la - forviþitan tekston POST la kursoro (se linio estis forviþita, øi - iros en la linion sub la kursoro). - - 2. Por anstataýigi la signon sub la kursoro, tajpu r kaj tiam la signon - kion vi deziras havi tie. - - 3. La operatoro de þanøo ebligas al vi þanøi ekde la kursoro, øis kie - la movo iras. Ekz. tajpu ce por þanøi ekde la kursoro øis la fino - de la vorto, c$ por þanøi øis la fino de la linio. - - 4. La formato de þanøo estas: - - c [nombro] movo - -Nun daýrigu al la sekvanta leciono. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO - - - ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton. - Tajpu G por moviøi al linio en la dosiero. ** - - RIMARKO: Legu la tutan lecionon antaý ol plenumi iun paþon ajn!! - - 1. Premu la klavon Ctrl kaj premu g . Oni nomas tion CTRL-G. - Mesaøo aperos æe la suba parto de la paøo kun la dosiernomo kaj la - pozicio en la dosiero. Memoru la numeron de la linio por paþo 3. - - RIMARKO: Vi eble vidas la pozicion de la kursoro æe la suba dekstra - angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas - þaltita (vidu :help 'ruler') - - 2. Premu G por moviøi æe la subo de la dosiero. - Tajpu gg por moviøi æe la komenco de la dosiero. - - 3. Tajpu la numeron de la linio kie vi estis kaj poste G . Tio removos - vin al la linio, kie vi estis kiam vi unue premis CTRL-G. - - 4. Se vi sentas vin komforta, plenumu paþojn 1 øis 3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.2 LA KOMANDO DE SERÆO - - - ** Tajpu / kaj poste frazon por seræi la frazon. ** - - 1. En normala reøimo, tajpu la / signon. Rimarku, ke øi kaj la kursoro - aperas æe la suba parto de la ekrano kiel por la : komando. - - 2. Nun tajpu 'errarro' . - Tio estas la vorto, kion vi volas seræi. - - 3. Por seræi la saman frazon denove, simple tajpu n . - Por seræi la saman frazon denove en la retrodirekto, tajpu N . - - 4. Por seræi frazon en la retrodirekto, uzu ? anstataý / . - - 5. Por reiri tien, el kie vi venis, premu CTRL-O (Premu Ctrl kaj o - literon o). Ripetu por pli retroiri. CTRL-I iras antaýen. - ----> "errarro" ne estas maniero por literumi eraro; errarro estas eraro. - -RIMARKO: Kiam la seræo atingas la finon de la dosiero, øi daýras æe la - komenco, krom se la agordo 'wrapscan' estas malþaltita. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.3 SERÆO DE KONGRUAJ KRAMPOJ - - - ** Tajpu % por trovi kongruan ), ] aý } ** - - 1. Poziciu la kursoron sur iun (, [ aý { en la linio markita per --->. - - 2. Nun tajpu la % signon. - - 3. La kursoro moviøas al la kongrua krampo. - - 4. Tajpu % por movi la kursoron al la alia kongrua krampo. - - 5. Movu la kursoron al la alia (, ), [, ], {, } kaj observu tion, - kion % faras. - ----> Æi tiu ( estas testa linio kun (-oj, [-oj, ]-oj kaj {-oj, }-oj en øi. )) - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.4 LA KOMANDO DE ANSTATAýIGO - - - ** Tajpu :s/malnova/nova/g por anstataýigi 'nova' per 'malnova'. ** - - 1. Movu la kursoron al la suba linio markita per --->. - - 2. Tajpu :s/laa/la . Rimarku, ke la komando þanøas nur la - unuan okaza¼on de "laa" en la linio. - - 3. Nun tajpu :s/laa/la/g . Aldono de g opcio signifas mallokan - anstataýigon en la linio. Øi þanøas æiujn okaza¼ojn de "laa" en la - linio. - ----> laa plej bona tempo por vidi florojn estas en laa printempo. - - 4. Por þanøi æiujn okaza¼ojn de iu æena signo inter du linioj, - tajpu :#,#s/malnova/nova/g kie #,# estas la numeroj de linioj de la - intervalo de la linioj kie la anstataýigo - okazos. - Tajpu :%s/malnova/nova/g por þanøi æiujn okaza¼ojn en la tuta - dosiero. - Tajpu :s/malnova/nova/gc por trovi æiujn okaza¼ojn en la tuta - dosiero, kun invitilo æu anstataýigi - aý ne. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4 RESUMO - - 1. CTRL-G vidigas vian pozicion en la dosiero kaj la staton de la dosiero. - G movas la kursoron al la fino de la dosiero. - numero G movas la kursoron al numero de tiu linio. - gg movas la kursoron al la unua linio. - - 2. Tajpo de / kaj frazon seræas la frazon antaýen. - Tajpo de ? kaj frazon seræas la frazon malantaýen. - Post seræo, tajpu n por trovi la sekvantan okaza¼on en la sama direkto aý - N por seræi en la mala direkto. - CTRL-O movas vin al la antaýaj pozicioj, CTRL-I al la novaj pozicioj. - - 3. Tajpo de % kiam la kursoro estas sur (,),[,],{ aý } moviøas al øia - kongruo. - - 4. Por anstataýigi 'nova' en la unua 'malnova' en linio :s/malnova/nova - Por anstataýigi 'nova' en æiuj 'malnova'-oj en linio :s/malnova/nova/g - Por anstataýigi frazon inter du #-aj linioj :#,#s/malnova/nova/g - Por anstataýigi æiujn okaza¼ojn en la dosiero :%s/malnova/nova/g - Por demandi konfirmon æiu-foje, aldonu 'c' :%s/malnova/nova/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON - - - ** Tajpu :! sekvata de ekstera komando por plenumi la komandon. ** - - 1. Tajpu la konatan komandon : por pozicii la kursoron æe la suba parto - de la ekrano. Tio ebligas tajpadon de komando en komanda linio. - - 2. Nun tajpu la ! (krisigno) signon. Tio ebligas al vi plenumi iun - eksteran þelan komandon ajn. - - 3. Ekzemple, tajpu ls post ! kaj tajpu . Tio listigos la - enhavon de la dosierujo, same kiel se vi estis en þela invito. - Aý uzu :!dir se ls ne funkcias. - -RIMARKO: Eblas plenumi iun eksteran komandon ajn tiamaniere, ankaý kun - argumentoj. - -RIMARKO: Æiuj : komandoj devas finiøi per tajpo de - Ekde nun, ni ne plu mencios tion. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.2 PLI PRI KONSERVO DE DOSIERO - - - ** Por konservi la faritajn þanøojn en la teksto, tajpu :w DOSIERNOMO. ** - - 1. Tajpu !dir aý !ls por akiri liston de via dosierujo. - Vi jam scias, ke vi devas tajpi post tio. - - 2. Elektu dosieron, kiu ne jam ekzistas, kiel ekzemple TESTO. - - 3. Nun tajpu: :w TESTO (kie TESTO estas la elektita dosiernomo) - - 4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO. - Por kontroli tion, tajpu :!dir aý !ls denove por vidigi vian - dosierujon. - -RIMARKO: Se vi volus eliri el Vim kaj restartigi øin denove per vim TESTO, - la dosiero estus precize same kiel kopio de la instruilo kiam vi - konservis øin. - - 5. Nun forviþu la dosieron tajpante (MS-DOS): :!del TESTO - aý (UNIKSO): :!rm TESTO - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.3 APARTIGI KONSERVENDAN TESTON - - - ** Por konservi parton de la dosiero, tajpu v movo :w DOSIERNOMO ** - - 1. Movu la kursoron al tiu linio. - - 2. Premu v kaj movu la kursoron al la kvina suba ero. Rimarku, ke la - teksto emfaziøas. - - 3. Premu la : signon. Æe la fino de la ekrano :'<,'> aperos. - - 4. Tajpu w TESTO , kie TESTO estas dosiernomo, kiu ne jam ekzistas. - Kontrolu, ke vi vidas :'<,'>w TESTO antaý premi . - - 5. Vim konservos la apartigitajn liniojn al la dosiero TESTO. Uzu :dir - aý :!ls por vidigi øin. Ne forviþu øin. Ni uzos øin en la sekvanta - leciono. - -RIMARKO: Premo de v komencas Viduman apartigon. Vi povas movi la kursoron - por pligrandigi aý malpligrandigi la apartigon. Tiam vi povas uzi - operatoron por plenumi ion kun la teksto. Ekzemple, d forviþas - la tekston. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN - - - ** Por enmeti la enhavon de dosiero, tajpu :r DOSIERNOMON ** - - 1. Movu la kursoron ¼us super æi tiu linio. - -RIMARKO: Post plenumo de paþo 2, vi vidos tekston el la leciono 5.3. Tiam - moviøu SUBEN por vidi tiun lecionon denove. - - 2. Nun akiru vian dosieron TESTO uzante la komandon :r TESTO kie TESTO - estas la nomo de la dosiero, kiun vi uzis. - La dosiero, kion vi akiras, estas metita sub la linio de la kursoro. - - 3. Por kontroli, æu la dosiero akiriøis, retromovu la kursoron kaj rimarku, - ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem - de la dosiero. - -RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, - :r !ls legas la eliron de la komando ls kaj metas øin sub la - kursoron. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5 RESUMO - - - 1. :!komando plenumas eksteran komandon. - - Iuj utilaj ekzemploj estas: - (MS-DOS) (UNIKSO) - :!dir :!ls - listigas dosierujon - :!del DOSIERNOMO :!rm DOSIERNOMO - forviþas la dosieron DOSIERNOMO - - 2. :w DOSIERNOMO konservas la nunan dosieron de Vim al disko kun la - nomo DOSIERNOMO. - - 3. v movo :w DOSIERNOMO konservas la Viduman apartigon de linioj en - dosiero DOSIERNOMO. - - 4. :r DOSIERNOMO akiras la dosieron DOSIERNOMO el la disko kaj metas - øin sub la pozicion de la kursoro. - - 5. :r !dir legas la eligon de la komando dir kaj metas øin sub la - pozicion de la kursoro. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.1 LA KOMANDO DE MALFERMO - - - ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan reøimon. ** - - 1. Movu la kursoron al la suba linio markita per --->. - - 2. Tajpu la minusklan literon o por malfermi linion SUB la kursoro kaj - eniri la Enmetan reøimon. - - 3. Nun tajpu tekston kaj premu por eliri la Enmetan reøimon. - ----> Post tajpo de o la kursoro moviøas al la malfermata linio en - Enmeta reøimo. - - 4. Por malfermi linion SUPER la kursoro, nur tajpu majusklan O , - anstataý minusklan o. Provu tion per la suba linio. - ----> Malfermu linion SUPER tiu tajpante O dum la kursoro estas sur tiu linio. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.2 LA KOMANDO DE POSTALDONO - - - ** Tajpu a por enmeti POST la kursoro. ** - - 1. Movu la kursoron æe la komenco de la linio markita per --->. - - 2. Premu e øis kiam la kursoro estas æe la fino de li. - - 3. Tajpu a (minuskle) por aldoni tekston POST la kursoro. - - 4. Kompletigu la vorton same kiel la linio sub øi. Premu por - eliri la Enmetan reøimon. - - 5. Uzu e por moviøi al la sekvanta nekompleta vorto kaj ripetu - paþojn 3 kaj 4. - ----> Æi tiu lin ebligos vin ekz vin postal tekston al linio. ----> Æi tiu linio ebligos vin ekzerci vin postaldoni tekston al linio. - -RIMARKO: Æiu a, i kaj A iras al la sama Enmeta reøimo, la nura malsamo - estas tie, kie la signoj estas enmetitaj. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.3 ALIA MANIERO POR ANSTATAÝIGI - - - ** Tajpu majusklan R por anstataýigi pli ol unu signo. ** - - 1. Movu la kursoron al la unua suba linio markita per --->. Movu la - kursoron al la komenco de la unua xxx . - - 2. Nun premu R kaj tajpu la nombron sub øi en la dua linio, por ke øi - anstataýigu la xxx . - - 3. Premu por foriri la Anstataýigan reøimon. Rimarku, ke la cetera - parto de la linio restas neþanøata. - - 4. Ripetu la paþojn por anstataýigi la restantajn xxx. - ----> Aldono de 123 al xxx donas al vi xxx. ----> Aldono de 123 al 456 donas al vi 579. - -RIMARKO: Anstataýiga reøimo estas same kiel Enmeta reøimo, sed æiu signo - tajpita forviþas ekzistan signon. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.4 KOPII KAJ ALGLUI TEKSTON - - - ** Uzu la y operatoron por kopii tekston, kaj p por alglui øin ** - - - 1. Iru al la linio markita per ---> sube kaj poziciu la kursoron post "a)". - - 2. Komencu la Viduman reøimon per v kaj movu la kursoron ¼us antaý "unua". - - 3. Tajpu y por kopii la emfazitan tekston. - - 4. Movu la kursoron æe la fino de la linio: j$ - - 5. Tajpu p por alglui la tekston. Tiam tajpu: a dua . - - 6. Uzu Viduman reøimon por apartigi " ero.", kopiu øin per y , moviøu - æe la fino de la sekvanta linio per j$ kaj algluu la tekston tie - per p . - ----> a) tio estas la unua ero. - b) - -RIMARKO: vi povas ankaý uzi y kiel operatoro; yw kopias unu vorton. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.5 AGORDI OPCION - - - ** Agordu opcion por ke seræo aý anstataýigo ignoru usklecon ** - - 1. Seræu 'ignori' per tajpo de /ignori - Ripetu plurfoje premante n . - - 2. Þaltu la opcion 'ic' (ignori usklecon) per: :set ic - - 3. Nun seræu 'ignori' denove premante n - Rimarku, ke Ignori kaj IGNORI estas nun troveblas. - - 4. Þaltu la opciojn 'hlsearch' kaj 'incsearch': :set hls is - - 5. Nun retajpu la seræan komandon kaj vidu kio okazas: /ignore - - 6. Por malþalti ignoron de uskleco: :set noic - -RIMARKO: Por forigi emfazon de kongruo, tajpu: :nohlsearch -RIMARKO: Se vi deziras ignori usklecon por nur unu seræa komando, uzu \c - en la frazo: /ignore\c - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6 RESUMO - - 1. Tajpu o por malfermi linion SUB la kursoro kaj eki en Enmeta reøimo. - 1. Tajpu O por malfermi linion SUPER la kursoro. - - 2. Tajpu a por enmeti tekston POST la kursoro. - Tajpu A por enmeti tekston post la fino de la linio. - - 3. La e komando movas la kursoron al la fino de vorto. - - 4. la y operatoro kopias tekston, p algluas øin. - - 5. Tajpo de majuskla R eniras la Anstataýigan reøimon øis kiam - estas premita. - - 6. Tajpo de ":set xxx" þaltas la opcion "xxx". Iuj opcioj estas: - 'ic' 'ignorecase' ignori usklecon dum seræo - 'is' 'incsearch' montru partan kongruon dum seræo - 'hls' 'hlsearch' emfazas æiujn kongruajn frazojn - Vi povas uzi aý la longan, aý la mallongan nomon de opcio. - - 7. Antaýaldonu "no" por malþalti la opcion: :set noic - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.1 AKIRI HELPON - - - ** Uzu la helpan sistemon ** - - Vim havas ampleksan helpan sistemon. Por komenciøi, provu unu el la tiuj - tri: - - premu la klavon (se vi havas øin) - - premu la klavon (se vi havas øin) - - tajpu :help - - Legu la tekston en la helpfenestro por trovi kiel helpo funkcias. - Tajpu CTRL-W CTRL-W por salti de unu fenestro al la alia. - Tajpu :q por fermi la helpan fenestron. - - Vi povas trovi helpon pri io ajn aldonante argumenton al la komando - ":help". Provu tiujn (ne forgesu premi ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.2 KREI STARTAN SKRIPTON - - - ** Ebligu kapablojn de Vim ** - - Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaýlte - malþaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc". - - 1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo: - :e ~/.vimrc por Unikso - :e $VIM/_vimrc por MS-Vindozo - - 2. Nun legu la enhavon de la ekzempla "vimrc" - :r $VIMRUNTIME/vimrc_example.vim - - 3. Konservu la dosieron per: - :w - - La sekvantan fojon, kiam vi lanæas Vim, øi uzos sintaksan emfazon. - Vi povas aldoni æiujn viajn preferatajn agordojn al tiu dosiero "vimrc". - Por pli da informoj, tajpu :help vimrc-intro - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.3 KOMPLETIGO - - - ** Kompletigo de komanda linio per CTRL-D kaj ** - - 1. Certigu ke Vim estas en kongrua reøimo: :set nocp - - 2. Rigardu tiujn dosierojn, kiuj ekzistas en la dosierujo: :!ls aý :!dir - - 3. Tajpu la komencon de komando: :e - - 4. Premu CTRL-D kaj Vim montros liston de komandoj, kiuj komencas per "e". - - 5. Premu kaj Vim kompletigos la nomon de la komando al ":edit". - - 6. Nun aldonu spaceton kaj la komencon de ekzistanta nomo: :edit DOSI - - 7. Premu . Vim kompletigos la nomon (se øi estas unika) - -RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj - . Estas aparte utila por :help . - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7 RESUMO - - - 1. Tajpu :help aý premu por malfermi helpan fenestron. - - 2. Tajpu :help kmd por trovi helpon pri kmd. - - 3. Tajpu CTRL-W CTRL-W por salti al alia fenestro. - - 4. Tajpu :q to fermi la helpan fenestron. - - 5. Kreu komencan skripton vimrc por konservi viajn agordojn. - - 6. Kiam vi tajpas : komandon, premu CTRL-D por vidi æiujn kompleteblojn. - Premu por uzi unu kompletigon. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Tio konkludas la instruilon de Vim. Øi celis doni mallongan superrigardon - de la redaktilo Vim, nur tion kio sufiæas por ebligi al vi facilan uzon de - la redaktilo. Estas nepre nekompleta, æar Vim havas multajn multajn pliajn - komandojn. Legu la manlibron: ":help user-manual". - - Tiu instruilo estis verkita de Michael C. Pierce kaj Robert K. Ware, - el la Koloradia Lernejo de Minejoj (Colorado School of Mines) uzante - ideojn provizitajn de Charles Smith el la Stata Universitato de Koloradio - (Colorado State University) - - Retpoþto: bware@mines.colorado.edu. - - Modifita por Vim de Bram Moolenaar. - - Tradukita en Esperanto de Dominique Pellé, 2008-04-01 - Retpoþto: dominique.pelle@gmail.com - Lasta þanøo: 2010-05-23 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.eo.utf-8 b/share/vim/vim73/tutor/tutor.eo.utf-8 deleted file mode 100644 index febf2f98..00000000 --- a/share/vim/vim73/tutor/tutor.eo.utf-8 +++ /dev/null @@ -1,991 +0,0 @@ -============================================================================== -= B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.3 = -============================================================================== - - Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili - por ĉion klarigi en instruilo kiel ĉi tiu. Ĉi tiu instruilo estas - fasonita por priskribi sufiĉajn komandojn, por ke vi kapablu uzi Vim - kun sufiĉa facileco. - - La tempo bezonata por plenumi la kurson estas 25-30 minutoj, kaj dependas - de kiom da tempo estas uzata por eksperimenti. - - ATENTU: - La komandoj en la lecionoj ŝanĝos la tekston. Kopiu tiun ĉi dosieron - por ekzerci vin (se vi lanĉis "vimtutor", tiam estas jam kopio). - - Gravas memori, ke ĉi tiu instruilo estas organizata por instrui per - la uzo. Tio signifas, ke vi devas plenumi la komandojn por bone lerni - ilin. Se vi nur legas la tekston, vi forgesos la komandojn! - - Nun, certigu, ke la majuskla baskulo NE estas en reĝimo majuskla, - kaj premu la klavon j sufiĉe da fojoj por movi la kursoron, kaj por - ke la leciono 1.1 plenigu la ekranon. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.1: MOVI LA KURSORON - - - ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. ** - ^ - k Konsilo: La klavo h estas la plej liva kaj movas liven. - < h l > La klavo l estas la plej dekstra kaj movas dekstren. - j La klavo j aspektas kiel malsuprena sago. - v - 1. Movu la kursoron sur la ekrano ĝis kiam vi sentas vin komforta. - - 2. Premu la klavon (j) ĝis kiam ĝi ripetas. - Vi nun scias, kiel moviĝi al la sekvanta leciono - - 3. Uzante la malsuprenan klavon, moviĝu al la leciono 1.2. - -RIMARKO: Se vi dubas pri tio, kion vi premis, premu por reiri al - la normala reĝimo. Tiam repremu la deziratan komandon. - -RIMARKO: La klavoj de la kursoro devus ankaŭ funkcii. Sed uzante hjkl, - vi kapablos moviĝi pli rapide post kiam vi kutimiĝos. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.2: ELIRI EL VIM - - - !! RIMARKO: Antaŭ ol plenumi iujn subajn paŝojn ajn, legu la tutan lecionon!! - - 1. Premu la klavon (por certigi, ke vi estas en normala reĝimo). - - 2. Tajpu: :q! . - Tio eliras el la rekdaktilo, SEN konservi la ŝanĝojn, kiujn vi faris. - - 3. Kiam vi vidas la ŝelinviton, tajpu la komandon kiun vi uzis por eniri - en ĉi tiu instruilo. Tio estus: vimtutor - - 4. Se vi memoris tiujn paŝojn kaj sentas vin memfida, plenumu la paŝojn - 1 ĝis 3 por eliri kaj reeniri la redaktilon. - -RIMARKO: :q! eliras sen konservi la ŝanĝojn, kiujn vi faris. - Post kelkaj lecionoj, vi lernos kiel konservi la ŝanĝojn al dosiero. - - 5. Movu la kursoron suben ĝis la leciono 1.3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.3: REDAKTO DE TEKSTO - FORVIŜO - - - ** Premu x por forviŝi la signon sub la kursoro. ** - - 1. Movu la kursoron al la suba linio markita per --->. - - 2. Por korekti la erarojn, movu la kursoron ĝis kiam ĝi estas sur la - forviŝenda signo. - - 3. Premu la klavon x por forviŝi la nedeziratan signon. - - 4. Ripetu paŝojn 2 ĝis 4 ĝis kiam la frazo estas ĝusta. - - ----> La boovinno saaltiss ssur laa luuno. - - 5. Post kiam la linio estas ĝusta, iru al la leciono 1.4 - -RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.4: REDAKTO DE TEKSTO - ENMETO - - - ** Premu i por enmeti tekston. ** - - 1. Movu la kursoron al la unua suba linio markita per --->. - - 2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan - signon post kie la teksto estas enmetenda. - - 3. Premu i kaj tajpu la bezonatajn aldonojn. - - 4. Premu kiam la eraroj estas korektitaj por reiri al la normala - reĝimo. Ripetu la paŝojn 2 ĝis 4 por korekti la frazon. - ----> Mank en ĉi linio. ----> Mankas tekston en ĉi tiu linio. - - 5. Kiam vi sentas vin komforta pri enmeto de teksto, moviĝu al la - leciono 1.5. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.5: REDAKTO DE TEKSTO - POSTALDONO - - - ** Premu A por postaldoni tekston. ** - - 1. Movu la kursoron al la unua suba linio markita per --->. - Ne gravas sur kiu signo estas la kursoro. - - 2. Premu majusklan A kaj tajpu la bezonatajn aldonojn. - - 3. Post kiam la teksto estas aldonita, premu por reiri al la normala - reĝimo. - - 4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la - paŝojn 2 kaj 3 por korekti la frazon. - ----> Mankas teksto el ti - Mankas teksto el tiu linio. ----> Mankas ankaŭ teks - Mankas ankaŭ teksto ĉi tie. - - 5 Kiam vi sentas vin komforta pri postaldono de teksto, moviĝu al la - leciono 1.6 - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1.6: REDAKTI DOSIERON - - ** Uzu :wq por konservi dosieron kaj eliri. ** - - !! RIMARKO: Antaŭ ol plenumi iun suban paŝon ajn, legu la tutan lecionon!! - - 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q! - Aŭ, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie. - - 2. Ĉe la ŝelinvito, tajpu ĉi tiun komandon: vim tutor - 'vim' estas la komando por lanĉi la redaktilon Vim, 'tutor' estas la - dosiernomo de la dosiero, kiun vi volas redakti. Uzu dosieron, kiu - ŝanĝeblas. - - 3. Enmetu kaj forviŝu tekston, kiel vi lernis en la antaŭaj lecionoj. - - 4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per: :wq - - 5. Se vi eliris la instruilon vimtutor en paŝo 1, restartu la intruilon - vimtutor kaj moviĝu suben al la sekvanta resumo. - - 6. Post kiam vi legis la suprajn paŝojn, kaj komprenis ilin: faru ilin. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 1 RESUMO - - - 1. La kursoro moviĝas aŭ per la sagoklavoj, aŭ per la klavoj hjkl. - h (liven) j (suben) k (supren) l (dekstren) - - 2. Por lanĉi Vim el la ŝelinvito, tajpu: vim DOSIERNOMO - - 3. Por eliri el Vim, tajpu: :q! por rezigni la ŝanĝojn - - 4. Por forviŝi la signojn ĉe la pozicio de la kursoro, tajpu: x - - 5. Por enmeti aŭ postaldoni tekston, tajpu: - i tajpu enmetendan tekston - enmetas tekston antaŭ la kursoro - - A tajpu la postaldonendan tekston - postaldonas post la kursoro - -RIMARKO: Premo de iras al la normala reĝimo, aŭ rezignas la - nedeziratan aŭ parte plenumita komando. - -Nun daŭrigu al la leciono 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.1: KOMANDOJ DE FORVIŜO - - - ** Tajpu dw por forviŝi vorton. ** - - 1. Premu por certigi, ke vi estas en normala reĝimo. - - 2. Movu la kursoron al la linio markita per --->. - - 3. Movu la kursoron al la komenco de vorto, kiu forviŝendas. - - 4. Tajpu dw por forviŝi la vorton. - - RIMARKO: La litero d aperos en la lasta linio sur la ekrano kiam vi - tajpas ĝin. Vim atendas ĝis kiam vi tajpas w . Se vi vidas - alian signon ol d vi tajpis ion mise; premu kaj - rekomencu. - ----> Estas iuj vortoj kiuj Zamenhof ne devus esti akuzativo en ĉi tiu frazo. - - 5. Ripetu paŝojn 3 kaj 4 ĝis kiam la frazo estas ĝusta kaj moviĝu al la - leciono 2.2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.2: PLIAJ KOMANDOJ DE FORVIŜO - - - ** Tajpu d$ por forviŝi la finon de la linio. ** - - 1. Premu por certigi, ke vi estas en normala reĝimo. - - 2. Movu la kursoron sur la suban linion markita per --->. - - 3. Movu la kursoron ĉe la fino de la ĝusta linio (POST la unua . ). - - 4. Tajpu d$ por forivŝi ĝis la fino de la linio. - ----> Iu tajpis la finon de ĉi tiu linio dufoje. fino de ĉi tiu linio dufoje. - - - 5. Moviĝu al la leciono 2.3 por kompreni kio okazas. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ - - - Multaj komandoj, kiuj ŝanĝas la tekston, estas faritaj de operatoro kaj - movo. La formato de komando de forviŝo per la operatoro de forviŝo d - estas kiel sekvas: - - d movo - - Kie: - d - estas la operatoro de movo - movo - estas tio, pri kio la operatoro operacios (listigita sube) - - Mallonga listo de movoj: - w - ĝis la komenco de la sekvanta vorto, krom ĝia unua signo. - e - ĝis la fino de la nuna vorto, krom la lasta signo. - $ - ĝis la fino de la linio, krom la lasta signo. - - Do tajpo de 'de' forviŝos ekde la kursoro ĝis la fino de la vorto. - -RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos - la kursoron kiel specifite. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.4: UZI NOMBRON POR MOVO - - ** Tajpo de nombro antaŭ movo ripetas ĝin laŭfoje. ** - - 1. Movu la kursoron ĉe la komenco de la suba linio markita per --->. - - 2. Tajpu 2w por movi la kursoron je du vortoj antaŭen. - - 3. Tajpu 3e por movi la kursoron ĉe la fino de la tria vorto antaŭen. - - 4. Tajpu 0 (nul) por moviĝi ĉe la komenco de la linio. - - - 5. Ripetu paŝojn 2 ĝis 3 kun malsamaj nombroj. - ----> Tio estas nur linio kun vortoj, kie vi povas moviĝi. - - 6. Moviĝu al la leciono 2.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.5: UZI NOMBRON POR FORVIŜI PLI - - - ** Tajpo de nombro kun operatoro ripetas ĝin laŭfoje. ** - - En la kombinaĵo de la operatoro de forviŝo, kaj movo kiel menciita - ĉi-supre, eblas aldoni nombron antaŭ la movo por pli forviŝi: - d nombro movo - - 1. Movu la kursoron ĉe la unua MAJUSKLA vorto en la linio markita per --->. - - 2. Tajpu d2w por forviŝi la du MAJUSKLAJN vortojn - - 3. Ripetu paŝojn 1 ĝis 2 per malsama nombro por forviŝi la sinsekvajn - MAJUSKLAJN vortojn per unu komando - ----> Tiu AB CDE linio FGHI JK LMN OP de vortoj estas Q RS TUV purigita. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.6: OPERACII SUR LINIOJ - - - ** Tajpu dd por forviŝi tutan linion. ** - - Pro la ofteco de forviŝo de tuta linio, la verkisto de Vi decidis, ke - estus pli facile simple tajpi du d-ojn por forviŝi linion. - - 1. Movu la kursoron sur la duan linion en la suba frazo. - 2. Tajpu dd por forviŝi la linion. - 3. Nun moviĝu al la kvara linio. - 4. Tajpu 2dd por forviŝi du liniojn. - ----> 1) Rozoj estas ruĝaj, ----> 2) Ŝlimo estas amuza, ----> 3) Violoj estas bluaj, ----> 4) Mi havas aŭton, ----> 5) Horloĝoj diras kioma horo estas, ----> 6) Sukero estas dolĉa, ----> 7) Kaj tiel vi estas. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2.7: LA KOMANDO DE MALFARO - - - ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. ** - - 1. Movu la kursoron ĉe la suba linio markita per ---> kaj metu ĝin sur - la unuan eraron. - 2. Tajpu x por forviŝi la unuan nedeziratan signon. - 3. Nun tajpu u por malfari la lastan plenumitan komandon. - 4. Ĉi-foje, riparu ĉiujn erarojn en la linio kaj ĝia originala stato. - 5. Nun tajpu majusklan U por igi la linion al ĝia antaŭa stato. - 6. Nun tajpu u kelkfoje por malfari la U kaj antaŭajn komandojn. - 7. Nun tajpu CTRL-R (premante la CTRL klavon dum vi premas R) kelkfoje - por refari la komandojn (malfari la malfarojn). - ----> Koorektii la erarojn sur tiuu ĉi liniio kaj remettu illlin per malfaro. - - 8. Tiuj estas tre utilaj komandoj. Nun moviĝu al la leciono 2 RESUMO. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 2 RESUMO - - - 1. Por forviŝi ekde la kursoro ĝis la sekvanta vorto, tajpu: dw - 2. Por forviŝi ekde la kursoro ĝis la fino de la linio, tajpu: d$ - 3. Por forviŝi tutan linion, tajpu: dd - - 4. Por ripeti movon, antaŭmetu nombron: 2w - 5. La formato de ŝanĝa komando estas: - operatoro [nombro] movo - - kie: - operatoro - estas tio, kio farendas, kiel d por forviŝi - [nombro] - estas opcia nombro por ripeti la movon - movo - movas sur la teksto por operacii, kiel ekzemple w (vorto), - $ (ĝis fino de linio), ktp. - - 6. Por moviĝi al la komenco de la linio, uzu nul: 0 - - 7. Por malfari antaŭajn agojn, tajpu: u (minuskla u) - Por malfari ĉiujn ŝanĝojn sur la linio, tajpu: U (majuskla U) - Por refari la malfarojn, tajpu: CTRL-R - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3.1 LA KOMANDO DE METO - - - ** Tajpu p por meti tekston forviŝitan antaŭe post la kursoro. ** - - 1. Movu la kursoron ĉe la unua ---> suba linio. - - 2. Tajpu dd por forviŝi la linion kaj konservi ĝin ene de reĝistro de Vim. - - 3. Movu la kursoron ĉe la linio c), SUPER kie la forviŝita linio devus esti. - - 4. Tajpu p por meti la linion sub la kursoron. - - 5. Ripetu la paŝojn 2 ĝis 4 por meti ĉiujn liniojn en la ĝusta ordo. - ----> d) Ĉu ankaŭ vi povas lerni? ----> b) Violoj estas bluaj, ----> c) Inteligenteco lerneblas, ----> a) Rozoj estas ruĝaj, - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3.2 LA KOMANDO DE ANSTATAŬIGO - - - ** Tajpu rx por anstataŭigi la signon ĉe la kursoro per x . ** - - - 1. Movu la kursoron ĉe la unua suba linio markita per --->. - - 2. Movu la kursoron ĝis la unua eraro. - - 3. Tajpu r kaj la signon, kiu devus esti tie. - - 4. Ripetu paŝojn 2 kaj 3 ĝis kiam la unua linio egalas la duan. - ----> Kiem tiu lanio estis tajpita, iu pramis la naĝuftajn klovojn! ----> Kiam tiu linio estis tajpita, iu premis la neĝustajn klavojn! - - 5. Nun moviĝu al la leciono 3.3. - -RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3.3 LA OPERATORO DE ŜANĜO - - - ** Por ŝanĝi ĝis la fino de la vorto, tajpu ce . ** - - 1. Movu la kursoron ĉe la unua suba linio markita per --->. - - 2. Metu la kursoron sur la d en lduzw - - 3. Tajpu ce kaj la ĝustan vorton (en tiu ĉi kazo, tajpu inio ). - - 4. Premu kaj moviĝu al la sekvanta signo, kiu bezonas ŝanĝon. - - 5. Ripetu la paŝojn 3 kaj 4 ĝis kiam la unua frazo egalas la duan. - ----> Tiu lduzw havas kelkajn vortojn, kiii bezas ŝanĝon per la ŝanĝooto. ----> Tiu linio havas kelkajn vortojn, kiuj bezonas ŝanĝon per la ŝanĝoperatoro. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3.4 PLIAJ ŜANĜOJ PER c - - - ** La operatoro de ŝanĝo uzeblas kun la sama movo kiel forviŝo. ** - - 1. La operatoro de ŝanĝo funkcias sammaniere kiel forviŝo. La formato estas: - - c [nombro] movo - - 2. La movoj estas samaj, kiel ekzemple w (vorto) kaj $ (fino de linio). - - 3. Moviĝu ĉe la unua suba linio markita per --->. - - 4. Movu la kursoron al la unua eraro. - - 5. Tajpu c$ kaj tajpu la reston de la linio kiel la dua kaj premu . - ----> La fino de ĉi tiu linio bezonas helpon por igi ĝin same kiel la dua. ----> La fino de ĉi tiu linio bezonas korektojn per uzo de la komando c$ - -RIMARKO: Vi povas uzi la klavon Retropaŝo por korekti erarojn dum vi tajpas. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 3 RESUMO - - - 1. Por remeti tekston, kiun vi ĵus forviŝis, tajpu p. Tio metas la - forviŝitan tekston POST la kursoro (se linio estis forviŝita, ĝi - iros en la linion sub la kursoro). - - 2. Por anstataŭigi la signon sub la kursoro, tajpu r kaj tiam la signon - kion vi deziras havi tie. - - 3. La operatoro de ŝanĝo ebligas al vi ŝanĝi ekde la kursoro, ĝis kie - la movo iras. Ekz. tajpu ce por ŝanĝi ekde la kursoro ĝis la fino - de la vorto, c$ por ŝanĝi ĝis la fino de la linio. - - 4. La formato de ŝanĝo estas: - - c [nombro] movo - -Nun daŭrigu al la sekvanta leciono. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO - - - ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton. - Tajpu G por moviĝi al linio en la dosiero. ** - - RIMARKO: Legu la tutan lecionon antaŭ ol plenumi iun paŝon ajn!! - - 1. Premu la klavon Ctrl kaj premu g . Oni nomas tion CTRL-G. - Mesaĝo aperos ĉe la suba parto de la paĝo kun la dosiernomo kaj la - pozicio en la dosiero. Memoru la numeron de la linio por paŝo 3. - - RIMARKO: Vi eble vidas la pozicion de la kursoro ĉe la suba dekstra - angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas - ŝaltita (vidu :help 'ruler') - - 2. Premu G por moviĝi ĉe la subo de la dosiero. - Tajpu gg por moviĝi ĉe la komenco de la dosiero. - - 3. Tajpu la numeron de la linio kie vi estis kaj poste G . Tio removos - vin al la linio, kie vi estis kiam vi unue premis CTRL-G. - - 4. Se vi sentas vin komforta, plenumu paŝojn 1 ĝis 3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.2 LA KOMANDO DE SERĈO - - - ** Tajpu / kaj poste frazon por serĉi la frazon. ** - - 1. En normala reĝimo, tajpu la / signon. Rimarku, ke ĝi kaj la kursoro - aperas ĉe la suba parto de la ekrano kiel por la : komando. - - 2. Nun tajpu 'errarro' . - Tio estas la vorto, kion vi volas serĉi. - - 3. Por serĉi la saman frazon denove, simple tajpu n . - Por serĉi la saman frazon denove en la retrodirekto, tajpu N . - - 4. Por serĉi frazon en la retrodirekto, uzu ? anstataŭ / . - - 5. Por reiri tien, el kie vi venis, premu CTRL-O (Premu Ctrl kaj o - literon o). Ripetu por pli retroiri. CTRL-I iras antaŭen. - ----> "errarro" ne estas maniero por literumi eraro; errarro estas eraro. - -RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la - komenco, krom se la agordo 'wrapscan' estas malŝaltita. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.3 SERĈO DE KONGRUAJ KRAMPOJ - - - ** Tajpu % por trovi kongruan ), ] aŭ } ** - - 1. Poziciu la kursoron sur iun (, [ aŭ { en la linio markita per --->. - - 2. Nun tajpu la % signon. - - 3. La kursoro moviĝas al la kongrua krampo. - - 4. Tajpu % por movi la kursoron al la alia kongrua krampo. - - 5. Movu la kursoron al la alia (, ), [, ], {, } kaj observu tion, - kion % faras. - ----> Ĉi tiu ( estas testa linio kun (-oj, [-oj, ]-oj kaj {-oj, }-oj en ĝi. )) - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4.4 LA KOMANDO DE ANSTATAŭIGO - - - ** Tajpu :s/malnova/nova/g por anstataŭigi 'nova' per 'malnova'. ** - - 1. Movu la kursoron al la suba linio markita per --->. - - 2. Tajpu :s/laa/la . Rimarku, ke la komando ŝanĝas nur la - unuan okazaĵon de "laa" en la linio. - - 3. Nun tajpu :s/laa/la/g . Aldono de g opcio signifas mallokan - anstataŭigon en la linio. Ĝi ŝanĝas ĉiujn okazaĵojn de "laa" en la - linio. - ----> laa plej bona tempo por vidi florojn estas en laa printempo. - - 4. Por ŝanĝi ĉiujn okazaĵojn de iu ĉena signo inter du linioj, - tajpu :#,#s/malnova/nova/g kie #,# estas la numeroj de linioj de la - intervalo de la linioj kie la anstataŭigo - okazos. - Tajpu :%s/malnova/nova/g por ŝanĝi ĉiujn okazaĵojn en la tuta - dosiero. - Tajpu :s/malnova/nova/gc por trovi ĉiujn okazaĵojn en la tuta - dosiero, kun invitilo ĉu anstataŭigi - aŭ ne. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 4 RESUMO - - 1. CTRL-G vidigas vian pozicion en la dosiero kaj la staton de la dosiero. - G movas la kursoron al la fino de la dosiero. - numero G movas la kursoron al numero de tiu linio. - gg movas la kursoron al la unua linio. - - 2. Tajpo de / kaj frazon serĉas la frazon antaŭen. - Tajpo de ? kaj frazon serĉas la frazon malantaŭen. - Post serĉo, tajpu n por trovi la sekvantan okazaĵon en la sama direkto aŭ - N por serĉi en la mala direkto. - CTRL-O movas vin al la antaŭaj pozicioj, CTRL-I al la novaj pozicioj. - - 3. Tajpo de % kiam la kursoro estas sur (,),[,],{ aŭ } moviĝas al ĝia - kongruo. - - 4. Por anstataŭigi 'nova' en la unua 'malnova' en linio :s/malnova/nova - Por anstataŭigi 'nova' en ĉiuj 'malnova'-oj en linio :s/malnova/nova/g - Por anstataŭigi frazon inter du #-aj linioj :#,#s/malnova/nova/g - Por anstataŭigi ĉiujn okazaĵojn en la dosiero :%s/malnova/nova/g - Por demandi konfirmon ĉiu-foje, aldonu 'c' :%s/malnova/nova/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON - - - ** Tajpu :! sekvata de ekstera komando por plenumi la komandon. ** - - 1. Tajpu la konatan komandon : por pozicii la kursoron ĉe la suba parto - de la ekrano. Tio ebligas tajpadon de komando en komanda linio. - - 2. Nun tajpu la ! (krisigno) signon. Tio ebligas al vi plenumi iun - eksteran ŝelan komandon ajn. - - 3. Ekzemple, tajpu ls post ! kaj tajpu . Tio listigos la - enhavon de la dosierujo, same kiel se vi estis en ŝela invito. - Aŭ uzu :!dir se ls ne funkcias. - -RIMARKO: Eblas plenumi iun eksteran komandon ajn tiamaniere, ankaŭ kun - argumentoj. - -RIMARKO: Ĉiuj : komandoj devas finiĝi per tajpo de - Ekde nun, ni ne plu mencios tion. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.2 PLI PRI KONSERVO DE DOSIERO - - - ** Por konservi la faritajn ŝanĝojn en la teksto, tajpu :w DOSIERNOMO. ** - - 1. Tajpu !dir aŭ !ls por akiri liston de via dosierujo. - Vi jam scias, ke vi devas tajpi post tio. - - 2. Elektu dosieron, kiu ne jam ekzistas, kiel ekzemple TESTO. - - 3. Nun tajpu: :w TESTO (kie TESTO estas la elektita dosiernomo) - - 4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO. - Por kontroli tion, tajpu :!dir aŭ !ls denove por vidigi vian - dosierujon. - -RIMARKO: Se vi volus eliri el Vim kaj restartigi ĝin denove per vim TESTO, - la dosiero estus precize same kiel kopio de la instruilo kiam vi - konservis ĝin. - - 5. Nun forviŝu la dosieron tajpante (MS-DOS): :!del TESTO - aŭ (UNIKSO): :!rm TESTO - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.3 APARTIGI KONSERVENDAN TESTON - - - ** Por konservi parton de la dosiero, tajpu v movo :w DOSIERNOMO ** - - 1. Movu la kursoron al tiu linio. - - 2. Premu v kaj movu la kursoron al la kvina suba ero. Rimarku, ke la - teksto emfaziĝas. - - 3. Premu la : signon. Ĉe la fino de la ekrano :'<,'> aperos. - - 4. Tajpu w TESTO , kie TESTO estas dosiernomo, kiu ne jam ekzistas. - Kontrolu, ke vi vidas :'<,'>w TESTO antaŭ premi . - - 5. Vim konservos la apartigitajn liniojn al la dosiero TESTO. Uzu :dir - aŭ :!ls por vidigi ĝin. Ne forviŝu ĝin. Ni uzos ĝin en la sekvanta - leciono. - -RIMARKO: Premo de v komencas Viduman apartigon. Vi povas movi la kursoron - por pligrandigi aŭ malpligrandigi la apartigon. Tiam vi povas uzi - operatoron por plenumi ion kun la teksto. Ekzemple, d forviŝas - la tekston. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN - - - ** Por enmeti la enhavon de dosiero, tajpu :r DOSIERNOMON ** - - 1. Movu la kursoron ĵus super ĉi tiu linio. - -RIMARKO: Post plenumo de paŝo 2, vi vidos tekston el la leciono 5.3. Tiam - moviĝu SUBEN por vidi tiun lecionon denove. - - 2. Nun akiru vian dosieron TESTO uzante la komandon :r TESTO kie TESTO - estas la nomo de la dosiero, kiun vi uzis. - La dosiero, kion vi akiras, estas metita sub la linio de la kursoro. - - 3. Por kontroli, ĉu la dosiero akiriĝis, retromovu la kursoron kaj rimarku, - ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem - de la dosiero. - -RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, - :r !ls legas la eliron de la komando ls kaj metas ĝin sub la - kursoron. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 5 RESUMO - - - 1. :!komando plenumas eksteran komandon. - - Iuj utilaj ekzemploj estas: - (MS-DOS) (UNIKSO) - :!dir :!ls - listigas dosierujon - :!del DOSIERNOMO :!rm DOSIERNOMO - forviŝas la dosieron DOSIERNOMO - - 2. :w DOSIERNOMO konservas la nunan dosieron de Vim al disko kun la - nomo DOSIERNOMO. - - 3. v movo :w DOSIERNOMO konservas la Viduman apartigon de linioj en - dosiero DOSIERNOMO. - - 4. :r DOSIERNOMO akiras la dosieron DOSIERNOMO el la disko kaj metas - ĝin sub la pozicion de la kursoro. - - 5. :r !dir legas la eligon de la komando dir kaj metas ĝin sub la - pozicion de la kursoro. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.1 LA KOMANDO DE MALFERMO - - - ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan reĝimon. ** - - 1. Movu la kursoron al la suba linio markita per --->. - - 2. Tajpu la minusklan literon o por malfermi linion SUB la kursoro kaj - eniri la Enmetan reĝimon. - - 3. Nun tajpu tekston kaj premu por eliri la Enmetan reĝimon. - ----> Post tajpo de o la kursoro moviĝas al la malfermata linio en - Enmeta reĝimo. - - 4. Por malfermi linion SUPER la kursoro, nur tajpu majusklan O , - anstataŭ minusklan o. Provu tion per la suba linio. - ----> Malfermu linion SUPER tiu tajpante O dum la kursoro estas sur tiu linio. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.2 LA KOMANDO DE POSTALDONO - - - ** Tajpu a por enmeti POST la kursoro. ** - - 1. Movu la kursoron ĉe la komenco de la linio markita per --->. - - 2. Premu e ĝis kiam la kursoro estas ĉe la fino de li. - - 3. Tajpu a (minuskle) por aldoni tekston POST la kursoro. - - 4. Kompletigu la vorton same kiel la linio sub ĝi. Premu por - eliri la Enmetan reĝimon. - - 5. Uzu e por moviĝi al la sekvanta nekompleta vorto kaj ripetu - paŝojn 3 kaj 4. - ----> Ĉi tiu lin ebligos vin ekz vin postal tekston al linio. ----> Ĉi tiu linio ebligos vin ekzerci vin postaldoni tekston al linio. - -RIMARKO: Ĉiu a, i kaj A iras al la sama Enmeta reĝimo, la nura malsamo - estas tie, kie la signoj estas enmetitaj. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.3 ALIA MANIERO POR ANSTATAŬIGI - - - ** Tajpu majusklan R por anstataŭigi pli ol unu signo. ** - - 1. Movu la kursoron al la unua suba linio markita per --->. Movu la - kursoron al la komenco de la unua xxx . - - 2. Nun premu R kaj tajpu la nombron sub ĝi en la dua linio, por ke ĝi - anstataŭigu la xxx . - - 3. Premu por foriri la Anstataŭigan reĝimon. Rimarku, ke la cetera - parto de la linio restas neŝanĝata. - - 4. Ripetu la paŝojn por anstataŭigi la restantajn xxx. - ----> Aldono de 123 al xxx donas al vi xxx. ----> Aldono de 123 al 456 donas al vi 579. - -RIMARKO: Anstataŭiga reĝimo estas same kiel Enmeta reĝimo, sed ĉiu signo - tajpita forviŝas ekzistan signon. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.4 KOPII KAJ ALGLUI TEKSTON - - - ** Uzu la y operatoron por kopii tekston, kaj p por alglui ĝin ** - - - 1. Iru al la linio markita per ---> sube kaj poziciu la kursoron post "a)". - - 2. Komencu la Viduman reĝimon per v kaj movu la kursoron ĵus antaŭ "unua". - - 3. Tajpu y por kopii la emfazitan tekston. - - 4. Movu la kursoron ĉe la fino de la linio: j$ - - 5. Tajpu p por alglui la tekston. Tiam tajpu: a dua . - - 6. Uzu Viduman reĝimon por apartigi " ero.", kopiu ĝin per y , moviĝu - ĉe la fino de la sekvanta linio per j$ kaj algluu la tekston tie - per p . - ----> a) tio estas la unua ero. - b) - -RIMARKO: vi povas ankaŭ uzi y kiel operatoro; yw kopias unu vorton. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6.5 AGORDI OPCION - - - ** Agordu opcion por ke serĉo aŭ anstataŭigo ignoru usklecon ** - - 1. Serĉu 'ignori' per tajpo de /ignori - Ripetu plurfoje premante n . - - 2. Ŝaltu la opcion 'ic' (ignori usklecon) per: :set ic - - 3. Nun serĉu 'ignori' denove premante n - Rimarku, ke Ignori kaj IGNORI estas nun troveblas. - - 4. Ŝaltu la opciojn 'hlsearch' kaj 'incsearch': :set hls is - - 5. Nun retajpu la serĉan komandon kaj vidu kio okazas: /ignore - - 6. Por malŝalti ignoron de uskleco: :set noic - -RIMARKO: Por forigi emfazon de kongruo, tajpu: :nohlsearch -RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c - en la frazo: /ignore\c - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 6 RESUMO - - 1. Tajpu o por malfermi linion SUB la kursoro kaj eki en Enmeta reĝimo. - 1. Tajpu O por malfermi linion SUPER la kursoro. - - 2. Tajpu a por enmeti tekston POST la kursoro. - Tajpu A por enmeti tekston post la fino de la linio. - - 3. La e komando movas la kursoron al la fino de vorto. - - 4. la y operatoro kopias tekston, p algluas ĝin. - - 5. Tajpo de majuskla R eniras la Anstataŭigan reĝimon ĝis kiam - estas premita. - - 6. Tajpo de ":set xxx" ŝaltas la opcion "xxx". Iuj opcioj estas: - 'ic' 'ignorecase' ignori usklecon dum serĉo - 'is' 'incsearch' montru partan kongruon dum serĉo - 'hls' 'hlsearch' emfazas ĉiujn kongruajn frazojn - Vi povas uzi aŭ la longan, aŭ la mallongan nomon de opcio. - - 7. Antaŭaldonu "no" por malŝalti la opcion: :set noic - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.1 AKIRI HELPON - - - ** Uzu la helpan sistemon ** - - Vim havas ampleksan helpan sistemon. Por komenciĝi, provu unu el la tiuj - tri: - - premu la klavon (se vi havas ĝin) - - premu la klavon (se vi havas ĝin) - - tajpu :help - - Legu la tekston en la helpfenestro por trovi kiel helpo funkcias. - Tajpu CTRL-W CTRL-W por salti de unu fenestro al la alia. - Tajpu :q por fermi la helpan fenestron. - - Vi povas trovi helpon pri io ajn aldonante argumenton al la komando - ":help". Provu tiujn (ne forgesu premi ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.2 KREI STARTAN SKRIPTON - - - ** Ebligu kapablojn de Vim ** - - Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaŭlte - malŝaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc". - - 1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo: - :e ~/.vimrc por Unikso - :e $VIM/_vimrc por MS-Vindozo - - 2. Nun legu la enhavon de la ekzempla "vimrc" - :r $VIMRUNTIME/vimrc_example.vim - - 3. Konservu la dosieron per: - :w - - La sekvantan fojon, kiam vi lanĉas Vim, ĝi uzos sintaksan emfazon. - Vi povas aldoni ĉiujn viajn preferatajn agordojn al tiu dosiero "vimrc". - Por pli da informoj, tajpu :help vimrc-intro - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7.3 KOMPLETIGO - - - ** Kompletigo de komanda linio per CTRL-D kaj ** - - 1. Certigu ke Vim estas en kongrua reĝimo: :set nocp - - 2. Rigardu tiujn dosierojn, kiuj ekzistas en la dosierujo: :!ls aŭ :!dir - - 3. Tajpu la komencon de komando: :e - - 4. Premu CTRL-D kaj Vim montros liston de komandoj, kiuj komencas per "e". - - 5. Premu kaj Vim kompletigos la nomon de la komando al ":edit". - - 6. Nun aldonu spaceton kaj la komencon de ekzistanta nomo: :edit DOSI - - 7. Premu . Vim kompletigos la nomon (se ĝi estas unika) - -RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj - . Estas aparte utila por :help . - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leciono 7 RESUMO - - - 1. Tajpu :help aŭ premu por malfermi helpan fenestron. - - 2. Tajpu :help kmd por trovi helpon pri kmd. - - 3. Tajpu CTRL-W CTRL-W por salti al alia fenestro. - - 4. Tajpu :q to fermi la helpan fenestron. - - 5. Kreu komencan skripton vimrc por konservi viajn agordojn. - - 6. Kiam vi tajpas : komandon, premu CTRL-D por vidi ĉiujn kompleteblojn. - Premu por uzi unu kompletigon. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Tio konkludas la instruilon de Vim. Ĝi celis doni mallongan superrigardon - de la redaktilo Vim, nur tion kio sufiĉas por ebligi al vi facilan uzon de - la redaktilo. Estas nepre nekompleta, ĉar Vim havas multajn multajn pliajn - komandojn. Legu la manlibron: ":help user-manual". - - Tiu instruilo estis verkita de Michael C. Pierce kaj Robert K. Ware, - el la Koloradia Lernejo de Minejoj (Colorado School of Mines) uzante - ideojn provizitajn de Charles Smith el la Stata Universitato de Koloradio - (Colorado State University) - - Retpoŝto: bware@mines.colorado.edu. - - Modifita por Vim de Bram Moolenaar. - - Tradukita en Esperanto de Dominique Pellé, 2008-04-01 - Retpoŝto: dominique.pelle@gmail.com - Lasta ŝanĝo: 2010-05-23 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.fr b/share/vim/vim73/tutor/tutor.fr deleted file mode 100644 index abb53d18..00000000 --- a/share/vim/vim73/tutor/tutor.fr +++ /dev/null @@ -1,1038 +0,0 @@ -=============================================================================== -= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.2 = -=============================================================================== - - Vim est un éditeur très puissant qui a trop de commandes pour pouvoir - toutes les expliquer dans un cours comme celui-ci, qui est conçu pour en - décrire suffisamment afin de vous permettre d'utiliser simplement Vim. - - Le temps requis pour suivre ce cours est d'environ 25 à 30 minutes, selon - le temps que vous passerez à expérimenter. - - ATTENTION : - Les commandes utilisées dans les leçons modifieront le texte. Faites une - copie de ce fichier afin de vous entraîner dessus (si vous avez lancé - "vimtutor" ceci est déjà une copie). - - Il est important de garder en tête que ce cours est conçu pour apprendre - par la pratique. Cela signifie que vous devez exécuter les commandes - pour les apprendre correctement. Si vous vous contentez de lire le texte, - vous oublierez les commandes ! - - Maintenant, vérifiez que votre clavier n'est PAS verrouillé en - majuscules, et appuyez la touche j le nombre de fois suffisant pour - que la Leçon 1.1 remplisse complètement l'écran. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.1 : DÉPLACEMENT DU CURSEUR - - - ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. ** - ^ - k Astuce : La touche h est à gauche et déplace à gauche. - < h l > La touche l est à droite et déplace à droite. - j La touche j ressemble à une flèche vers le bas. - v - 1. Déplacez le curseur sur l'écran jusqu'à vous sentir à l'aise. - - 2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète. - Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante. - - 3. En utilisant la touche Bas, allez à la Leçon 1.2. - -NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap> - pour revenir en mode Normal. Puis retapez la commande que vous vouliez. - -NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant - hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que - vous aurez pris l'habitude. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.2 : SORTIR DE VIM - - - !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !! - - 1. Appuyez la touche <Échap> (pour être sûr d'être en mode Normal). - - 2. Tapez : :q! - Ceci quitte l'éditeur SANS enregistrer les changements que vous avez - faits. - - 3. Lorsque l'invite du shell vous sera présentée, tapez la commande qui - vous a mené dans ce tutoriel. Cela pourrait être : vimtutor - - 4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes - 1 à 3 pour sortir puis rentrer dans l'éditeur. - -NOTE : :q! annule tous les changements que vous avez fait. Dans - quelques leçons, vous apprendrez à enregistrer les changements. - - 5. Déplacez le curseur à la Leçon 1.3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT - - - ** Appuyez x pour effacer le caractère sous le curseur. ** - - 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - - 2. Pour corriger les erreurs, déplacez le curseur jusqu'à ce qu'il soit - sur un caractère à effacer. - - 3. Appuyez la touche x pour effacer le caractère redondant. - - 4. Répétez les étapes 2 à 4 jusqu'à ce que la phrase soit correcte. - ----> La vvache à sautéé au-ddessus dde la luune. - - 5. Maintenant que la ligne est correcte, passez à la Leçon 1.4. - -NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par - la pratique. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.4 : ÉDITION DE TEXTE - INSERTION - - - ** Appuyez i pour insérer du texte. ** - - 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. - - 2. Pour rendre la première ligne identique à la seconde, mettez le curseur - sur le premier caractère APRÈS l'endroit où insérer le texte. - - 3. Appuyez i et tapez les caractères qui manquent. - - 4. Une fois qu'une erreur est corrigée, appuyez <Échap> pour revenir en mode - Normal. Répétez les étapes 2 à 4 pour corriger la phrase. - ----> Il mnqe caractères cette . ----> Il manque des caractères dans cette ligne. - - 5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez à la - Leçon 1.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.5 : ÉDITION DE TEXTE - AJOUTER - - - ** Appuyez A pour ajouter du text. ** - - 1. Déplacez le curseur sur la première ligne ci-dessous marquée --->. - Peu importe sur quel caractère se trouve le curseur sur cette ligne. - - 2. Appuyez A et tapez les ajouts nécessaires. - - 3. Quand le texte a été ajouté, appuyez <Échap> pour revenir en mode - Normal. - - 4. Déplacez le curseur sur la seconde ligne marquée ---> et répétez les - étapes 2 et 3 pour corriger la phrase. - ----> Il manque du texte à partir de cet - Il manque du texte à partir de cette ligne. ----> Il manque aussi du te - Il manque aussi du texte ici. - - 5. Quand vous vous sentez suffisamment à l'aise pour ajouter du texte, - allez à la Leçon 1.6. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.6 : ÉDITER UN FICHIER - - - ** Utilisez :wq pour enregistrer un fichier et sortir. ** - -!! NOTE : Lisez toute la leçon avant d'exécuter les instructions ci-dessous !! - - 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.2 : :q! - Ou, si vous avez accès à un autre terminal, exécutez y les actions - qui suivent. - - 2. À l'invite du shell, tapez cette commande : vim tutor - 'vim' est la commande pour démarrer l'éditeur Vim, 'tutor' est le - nom du fichier que vous souhaitez éditer. Utilisez un fichier qui peut - être modifié. - - 3. Insérez et effacez du texte comme vous l'avez appris dans les leçons - précédentes. - - 4. Enregistrez le fichier avec les changements et sortez de Vim avec : - :wq - - 5. Si vous avez quitté vimtutor à l'étape 1, recommencez vimtutor et - déplacez-vous en bas vers le résumé suivant. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 1 - - - 1. Le curseur se déplace avec les touches fléchées ou les touches hjkl. - h (gauche) j (bas) k (haut) l (droite) - - 2. Pour démarrer Vim à l'invite du shell tapez : vim FICHIER - - 3. Pour quitter Vim tapez : <Échap> :q! pour perdre tous les - changements. - OU tapez : <Échap> :wq pour enregistrer les - changements. - - 4. Pour effacer un caractère sous le curseur tapez : x - - 5. Pour insérer ou ajouter du texte tapez : - i tapez le texte à insérer avant le curseur <Échap> - A tapez le texte à ajouter après le curseur <Échap> - -NOTE : Appuyer <Échap> vous place en mode Normal ou annule une commande - partiellement tapée dont vous ne voulez plus. - -Passez maintenant à la leçon 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.1 : COMMANDES D'EFFACEMENT - - - ** Tapez dw pour effacer un mot. ** - - 1. Appuyez <Échap> pour être sûr d'être en mode Normal. - - 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - - 3. Placez le curseur sur le début d'un mot qui a besoin d'être effacé. - - 4. Tapez dw pour faire disparaître ce mot. - -NOTE : La lettre d apparaîtra sur la dernière ligne de l'écran lors de - votre frappe. Vim attend que vous tapiez w . Si vous voyez un autre - caractère que d vous avez tapé autre chose ; appuyez <Échap> et - recommencez. - ----> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne. - - 5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez - à la Leçon 2.2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS - - - ** Tapez d$ pour effacer jusqu'à la fin de la ligne. ** - - 1. Appuyez <Échap> pour être sûr d'être en mode Normal. - - 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - - 3. Déplacez le curseur jusqu'à la fin de la ligne correcte (APRÈS le - premier . ). - - 4. Tapez d$ pour effacer jusqu'à la fin de la ligne. - ----> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois. - - 5. Allez à la Leçon 2.3 pour comprendre ce qui se passe. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS - - - Plusieurs commandes qui changent le texte sont constituées d'un opérateur - et d'un mouvement. Le format pour une commande d'effacement avec l'opérateur - d d'effacement est le suivant : - - d mouvement - - Où : - d - est l'opérateur d'effacement - mouvement - est le mouvement sur lequel agit l'opérateur (listés - ci-dessous) - - Une courte liste de mouvements : - w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère. - e - jusqu'à la fin du mot courant, en EXCLUANT son denier caractère. - $ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère. - - Ainsi, taper de va effacer depuis le curseur jusqu'à la fin du mot. - -NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le - curseur comme indiqué. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT - - - ** Taper un nombre avant un mouvement le répète autant de fois. ** - - 1. Déplacez le curseur au début de la ligne marquée ---> ci-dessous. - - 2. Tapez 2w pour déplacer le curseur de 2 mots vers l'avant. - - 3. Tapez 3e pour déplacer le curseur à la fin du troisième mot vers - l'avant. - - 4. Tapez 0 (zéro) pour déplacer au début de la ligne. - - 5. Répétez les étapes 2 et 3 avec des quantificateurs différents. - ----> Ceci est juste une ligne avec des mots où vous pouvez vous déplacer. - - 6. Déplacez-vous à la Leçon 2.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS - - - ** Taper un nombre avec un opérateur le répète autant de fois. ** - - Outre la combinaison de l'opérateur d'effacement avec un déplacement - mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur) - pour effacez encore plus : - d nombre déplacement - - 1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne - marquée --->. - - 2. Tapez d2w pour effacer les deux mots en MAJUSCULES. - - 3. Répétez les étapes 1 et 2 avec des quantificateurs différents pour - effacer les mots suivants en MAJUSCULES à l'aide d'une commande. - ----> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoyée. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.6 : OPÉREZ SUR DES LIGNES - - - ** Tapez dd pour effacer une ligne complète. ** - - Vu le nombre de fois où l'on efface des lignes complètes, les concepteurs - de Vi ont décidé qu'il serait plus facile de taper simplement deux d - pour effacer une ligne. - - 1. Placez le curseur sur la seconde ligne de la phrase ci-dessous. - 2. Tapez dd pour effacer la ligne. - 3. Maintenant allez à la quatrième ligne. - 4. Tapez 2dd pour effacer deux lignes. - ----> 1) Les roses sont rouges, ----> 2) La boue c'est drôle, ----> 3) Les violettes sont bleues, ----> 4) J'ai une voiture, ----> 5) Les horloges donnent l'heure, ----> 6) Le sucre est doux ----> 7) Tout comme vous. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.7 : L'ANNULATION - - - ** Tapez u pour annuler les dernières commandes. ** - ** Tapez U pour récupérer toute une ligne. ** - - 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous et placez-le sur - la première erreur. - 2. Tapez x pour effacer le premier caractère redondant. - 3. Puis tapez u pour annuler la dernière commande exécutée. - 4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande x . - 5. Puis tapez un U majuscule pour remettre la ligne dans son état initial. - 6. Puis tapez u deux-trois fois pour annuler le U et les commandes - précédentes. - 7. Maintenant tapez CTRL-R (maintenez la touche CTRL enfoncée pendant que - vous appuyez R) deux-trois fois pour refaire les commandes (annuler - les annulations). - ----> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'. - - 8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la - Leçon 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 2 - - - 1. Pour effacer du curseur jusqu'au mot suivant tapez : dw - - 2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez : d$ - - 3. Pour effacer toute une ligne tapez : dd - - 4. Pour répéter un déplacement ajoutez un quantificateur : 2w - - 5. Le format d'une commande de changement est : - - opérateur [nombre] déplacement - - Où : - opérateur - est ce qu'il faut faire, comme d pour effacer. - [nombre] - un quantificateur optionnel pour répéter le déplacement. - déplacement - déplace le long du texte à opérer, tel que w (mot), - $ (jusqu'à la fin de ligne), etc. - - 6. Pour se déplacer au début de ligne, utilisez un zéro : 0 - - 5. Pour annuler des actions précédentes, tapez : u (u minuscule) - Pour annuler tous les changements sur une ligne tapez : U (U majuscule) - Pour annuler l'annulation tapez : CTRL-R - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.1 : LE COLLAGE - - - ** Tapez p pour placer après le curseur ce qui vient d'être effacé. ** - - 1. Placez le curseur sur la première ligne ci-dessous marquée --->. - - 2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim. - - 3. Déplacez le curseur sur la ligne c) au-dessus où vous voulez remettre la - ligne effacée. - - 4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur. - - 5. Répétez les étapes 2 à 4 pour mettre toutes les lignes dans le bon ordre. - ----> d) Et vous, qu'apprenez-vous ? ----> b) Les violettes sont bleues, ----> c) L'intelligence s'apprend, ----> a) Les roses sont rouges, - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.2 : LA COMMANDE DE REMPLACEMENT - - - ** Tapez rx pour remplacer un caractère sous le curseur par x . ** - - 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. - - 2. Placez le curseur de manière à ce qu'il surplombe la première erreur. - - 3. Tapez r suivi du caractère qui doit corriger l'erreur. - - 4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit égale - à la seconde. - ----> Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe ! ----> Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe ! - - 5. Maintenant, allez à la Leçon 3.3. - -NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par - mémorisation. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.3 : L'OPÉRATEUR DE CHANGEMENT - - - ** Pour changer jusqu'à la fin d'un mot, tapez ce .** - - 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. - - 2. Placez le curseur sur le u de luhko. - - 3. Tapez ce et corrigez le mot (dans notre cas, tapez 'igne'.) - - 4. Appuyez <Échap> et placez-vous sur le prochain caractère qui doit - être changé). - - 5. Répétez les étapes 3 et 4 jusqu'à ce que la première phrase soit - identique à la seconde. - ----> Cette luhko contient quelques myqa qui ont ricne d'être chantufip. ----> Cette ligne contient quelques mots qui ont besoin d'être changés. - -Notez que ce efface le mot et vous place ensuite en mode Insertion. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c - - - ** L'opérateur de changement fonctionne avec les mêmes déplacements - que l'effacement. ** - - 1. L'opérateur de changement fonctionne de la même manière que - l'effacement. Le format est : - - c [nombre] déplacement - - 2. Les déplacements sont identiques : w (mot) et $ (fin de ligne). - - 3. Déplacez-vous sur la première ligne marquée ---> ci-dessous. - - 4. Placez le curseur sur la première erreur. - - 5. Tapez c$ et tapez le reste de la ligne afin qu'elle soit identique - à la seconde ligne, puis tapez <Échap>. - ----> La fin de cette ligne doit être rendue identique à la seconde. ----> La fin de cette ligne doit être corrigée avec la commande c$ . - -NOTE : Vous pouvez utiliser la touche Retour Arrière pour corriger les - erreurs lorsque vous tapez. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 3 - - - 1. Pour remettre le texte qui a déjà été effacé, tapez p . Cela Place le - texte effacé APRÈS le curseur (si une ligne complète a été effacée, elle - sera placée sous la ligne du curseur). - - 2. Pour remplacer le caractère sous le curseur, tapez r suivi du caractère - qui remplacera l'original. - - 3. L'opérateur de changement vous permet de changer depuis la position du - curseur jusqu'où le déplacement vous amène. Par exemple, tapez ce - pour changer du curseur jusqu'à la fin du mot, c$ pour changer jusqu'à - la fin d'une ligne. - - 4. Le format pour le changement est : - - c [nombre] déplacement - -Passez maintenant à la leçon suivante. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER - - - ** Tapez CTRL-G pour afficher votre position dans le fichier et son état. - Tapez G pour vous rendre à une ligne donnée du fichier. ** - -NOTE : Lisez toute cette leçon avant d'effectuer l'une des étapes !! - - 1. Maintenez enfoncée la touche CTRL et appuyez sur g . On appelle cela - CTRL-G. Une ligne d'état va apparaître en bas de l'écran avec le nom - du fichier et le numéro de la ligne où vous êtes. Notez ce numéro, il - servira lors de l'étape 3. - -NOTE : Vous pouvez peut-être voir le curseur en bas à droite de l'écran. - Ceci arrive quand l'option 'ruler' est activée (voir :help 'ruler') - - 2. Tapez G pour vous déplacer à la fin du fichier. - Tapez gg pour vous déplacer au début du fichier. - - 3. Tapez le numéro de la ligne où vous étiez suivi de G . Cela vous - ramènera à la ligne où vous étiez au départ quand vous aviez appuyé - CTRL-G. - - 4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.2 : LA RECHERCHE - - - ** Tapez / suivi d'un texte pour rechercher ce texte. ** - - 1. Tapez le caractère / en mode Normal. Notez que celui-ci et le curseur - apparaissent en bas de l'écran, comme lorsque l'on utilise : . - - 2. Puis tapez 'errreuur' . C'est le mot que vous voulez rechercher. - - 3. Pour rechercher à nouveau le même texte, tapez simplement n . - Pour rechercher le même texte dans la direction opposée, tapez N . - - 4. Pour rechercher une phrase dans la direction opposée, utilisez ? - au lieu de / . - ----> erreur ne s'écrit pas "errreuur" ; errreuur est une erreur. - -NOTE : Quand la recherche atteint la fin du fichier, elle reprend au début - sauf si l'option 'wrapscan' est déactivée. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES - - - ** Tapez % pour trouver des ), ] ou } correspondants. ** - - 1. Placez le curseur sur l'un des (, [ ou { de la ligne marquée ---> - ci-dessous. - - 2. Puis tapez le caractère % . - - 3. Le curseur se déplacera sur la parenthèse out crochet correspondant. - - 4. Tapez % pour replacer le curseur sur la parenthèse ou crochet - correspondant. - - 5. Déplacez le curseur sur un autre (,),[,],{ ou } et regardez ce que - fait % . - ----> Voici ( une ligne de test contenant des (, des [ ] et des { } )). - -NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qui - contient des parenthèses déséquilibrées ! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.4 : LA COMMANDE DE SUBSTITUTION - - - ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** - - 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - - 2. Tapez :s/lee/le . Notez que cette commande change seulement la - première occurrence de "lee" dans la ligne. - - 3. Puis tapez :s/lee/le/g . L'ajout du drapeau g ordonne de faire une - substitution globale sur la ligne, et change toutes les occurrences de - "lee" sur la ligne. - ----> lee meilleur moment pour regarder lees fleurs est pendant lee printemps. - - 4. Pour changer toutes les occurrences d'un texte, entre deux lignes, - tapez :#,#s/ancien/nouveau/g où #,# sont les numéros de lignes de la - plage où la substitution doit être faite. - Tapez :%s/ancien/nouveau/g pour changer toutes les occurrences dans - tout le fichier. - Tapez :%s/ancien/nouveau/gc pour trouver toutes les occurrences dans - tout le fichier avec une invite pour - confirmer ou infirmer chaque substitution. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 4 - - - 1. CTRL-G affiche la position dans le fichier et l'état de celui-ci. - G déplace à la fin du fichier. - nombre G déplace au numéro de ligne. - gg déplace à la première ligne. - - 2. Taper / suivi d'un texte recherche ce texte vers l'AVANT. - Taper ? suivi d'un texte recherche ce texte vers l'ARRIÈRE. - Après une recherche tapez n pour trouver l'occurrence suivante dans la - même direction ou Maj-N pour rechercher dans la direction opposée. - - 3. Taper % lorsque le curseur est sur (, ), [, ], { ou } déplace - celui-ci sur le caractère correspondant. - - 4. Pour remplacer le premier aa par bb sur une ligne tapez :s/aa/bb - Pour remplacer tous les aa par bb sur une ligne tapez :s/aa/bb/g - Pour remplacer du texte entre deux numéros de ligne tapez :#,#s/aa/bb/g - Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g - Pour demander une confirmation à chaque fois ajoutez 'c' :%s/aa/bb/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE - - - ** Tapez :! suivi d'une commande externe pour exécuter cette commande. ** - - 1. Tapez le : familier pour mettre le curseur en bas de l'écran. Cela vous - permet de saisir une commande. - - 2. Puis tapez un ! (point d'exclamation). Cela vous permet d'exécuter - n'importe quelle commande valide pour votre interpréteur (shell). - - 3. Par exemple, tapez ls après le ! et appuyez . Ceci affichera - la liste des fichiers du répertoire courant, comme si vous aviez tapé la - commande à l'invite du shell. Utilisez :!dir si :!ls ne marche pas. - -NOTE : Il est possible d'exécuter n'importe quelle commande externe de cette - manière, avec ou sans argument. - -NOTE : Toutes les commandes : doivent finir par la frappe de . - À partir de maintenant, nous ne le mentionnerons plus. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS - - - ** Pour enregistrer les changements faits au texte, tapez :w FICHIER . ** - - 1. Tapez :!dir ou :!ls pour avoir la liste des fichiers dans le - répertoire courant. Vous savez déjà qu'il faut appuyer après - cela. - - 2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST. - - 3. Puis tapez :w TEST (où TEST est le nom que vous avez choisi). - - 4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST. - Pour le vérifier, tapez :!dir ou :!ls de nouveau pour revisualiser - votre répertoire. - -NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST, - celui-ci sera une copie exacte de ce cours au moment où vous l'avez - enregistré. - - 5. Maintenant, effacez le fichier en tapant (MS-DOS) : :!del TEST - ou (Unix) : :!rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.3 : SÉLECTION DU TEXTE À ENREGISTRER - - - ** Pour enregistrer une portion du fichier, - tapez : v déplacement :w FICHIER ** - - 1. Déplacez le curseur sur cette ligne. - - 2. Appuyez v et déplacez le curseur vers la cinquième ligne plus bas. - Remarquez que le texte est en surbrillance. - - 3. Appuyez : . En bas de l'écran :'<,'> va apparaître. - - 4. Tapez w TEST , où TEST est un nom de fichier qui n'existe pas. - Vérifiez que vous voyez :'<,'>w TEST avant de d'appuyer sur Entrée. - - 5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST. - Utilisez :!dir ou !ls pour le voir. Ne l'effacez pas encore ! - Nous allons l'utiliser dans la leçon suivante. - -NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le - curseur pour agrandir ou rétrécir la sélection. Puis vous pouvez - utiliser un opérateur pour faire quelque chose sur le texte. Par - exemple, d efface le texte. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS - - - ** Pour insérer le contenu d'un fichier, tapez :r FICHIER ** - - 1. Placez le curseur juste au-dessus de cette ligne. - -NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3. - Puis déplacez vous vers le bas pour voir cette leçon à nouveau. - - 2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST - où TEST est le nom de votre fichier. - Le fichier que vous récupérez est placé au-dessous de la ligne du curseur. - - 4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez - qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle - contenue dans le fichier. - -NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, - :r !ls lit la sortie de la commande ls et la place sous la ligne du - curseur. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 5 - - - 1. :!commande exécute une commande externe. - - Quelques exemples pratiques : - (MS-DOS) (Unix) - :!dir :!ls affiche le contenu du répertoire courant. - :!del FICHIER :!rm FICHIER efface FICHIER. - - 2. :w FICHIER enregistre le fichier Vim courant sur le disque avec pour - nom FICHIER. - - 3. v déplacement :w FICHIER sauvegarde les lignes de la sélection Visuelle - dans le fichier FICHIER. - - 4. :r FICHIER récupère le contenu du fichier FICHIER et l'insère sous la - position du curseur. - - 5. :r !dir lit la sortie de la commande dir et l'insère sous la position - du curseur. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.1 : LA COMMANDE D'OUVERTURE - - -** Tapez o pour ouvrir une ligne sous le curseur et y aller en Insertion. ** - - 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - - 2. Tapez la lettre o minuscule pour ouvrir une ligne SOUS le curseur et - vous y placer en mode Insertion. - - 3. Puis tapez du texte et appuyez <Échap> pour sortir du mode Insertion. - ----> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. - - 4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un O - majuscule, plutôt qu'un o minuscule. Faites un essai sur la ligne - ci-dessous. - ----> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.2 : LA COMMANDE D'AJOUT - - - ** Tapez a pour insérer du texte APRÈS le curseur. ** - - 1. Placez le curseur au début de la ligne marquée ---> ci-dessous. - - 2. Appuyez e jusqu'à ce que le curseur soit sur la fin de li . - - 3. Appuyez a (minuscule) pour ajouter du texte APRÈS le curseur. - - 4. Complétez le mot comme dans la ligne dessous. Appuyez <Échap> pour - sortir du mode Insertion. - - 5. Utilisez e pour vous déplacer vers le mot incomplet suivant et - répétez les étapes 3 et 4. - ----> Cette li vous perm de pratiq l'ajout de t dans une ligne. ----> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne. - -NOTE : a, i, A vont tous dans le même mode Insertion, la seule différence - est l'endroit où les caractères sont insérés. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.3 : UNE AUTRE MANIÈRE DE REMPLACER - - - ** Tapez un R majuscule pour remplacer plus d'un caractère. ** - - 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. - Déplacez le curseur sur le début du premier xxx . - - 2. Appuyez maintenant R et tapez le nombre dessous dans la deuxième ligne, - de manière à remplacer le xxx . - - 3. Appuyez <Échap> pour quitter le mode Remplacement. Notez que le reste de - la ligne demeure inchangé. - - 4. Répétez les étapes pour remplacer les xxx restants. - - ----> L'ajout de 123 à xxx donne xxx. ----> L'ajout de 123 à 456 donne 579. - -NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les - caractères tapés effacent un caractère existant. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.4 : COPIER ET COLLER DU TEXTE - - - ** Utilisez l'opérateur y pour copier du texte et p pour le coller ** - - 1. Allez à la ligne marquée ---> ci-dessous et placez le curseur après "a)". - - 2. Démarrez le mode Visuel avec v et déplacez le curseur juste devant - "premier". - - 3. Tapez y pour copier le texte en surbrillance. - - 4. Déplacez le curseur à la fin de la ligne suivante : j$ - - 5. Tapez p pour coller le texte. Puis tapez : un second <Échap> . - - 6. Utilisez le mode Visuel pour sélectionner "élément", copiez le avec y , - déplacez vous à la fin de la ligne suivant avec j$ et collez le texte - à cet endroit avec p . - ----> a) ceci est le premier élément. - b) - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.4 : RÉGLAGE DES OPTIONS - - - ** Réglons une option afin que la recherche et la substitution ignore la - casse des caractères. ** - - 1. Recherchez 'ignore' en tapant : /ignore - Répétez ceci plusieurs fois en utilisant la touche n . - - 2. Activez l'option 'ic' (ignorer casse) en tapant :set ic . - - 3. Puis cherchez 'ignore' de nouveau en utilisant n . - Remarquez que Ignore et IGNORE sont maintenant aussi trouvés. - - 4. Activez les options 'hlsearch' et 'incsearch' avec :set hls is . - - 5. Puis recommencez une recherche, et faites bien attention à ce qui se - produit : /ignore - - 6. Pour désactiver 'ignorer casse', entrez : :set noic - -NOTE : Pour enlever la surbrillance des résultats, entrez : :nohlsearch - -NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez - \c dans la phrase : /ignore\c - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 6 - - - 1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion. - Taper O ouvre une ligne au-DESSUS du curseur. - - 2. Taper a pour insérer du texte APRÈS le curseur. - Taper A pour insérer du texte après la fin de ligne. - - 3. Taper e déplace à la fin du mot. - - 4. Taper y copie du texte, p le colle. - - 5. Taper R majuscule active le mode Remplacement jusqu'à ce qu' <Échap> - soit appuyé. - - 6. Taper ":set xxx" active l'option "xxx". Quelques options sont : - 'ic' 'ingnorecase' pour ignorer la casse lors des recherches. - 'is' 'incsearch' pour montrer les appariements partiels. - 'hls' 'hlsearch' pour mettre en surbrillance les appariements. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 7.1 : OBTENIR DE L'AIDE - - - ** Utiliser le système d'aide en ligne. ** - - Vim a un système complet d'aide en ligne. Pour y accéder, essayez l'une de - ces trois méthodes : - - appuyez la touche (si vous en avez une) - - appuyez la touche (si vous en avez une) - - tapez :help - - - Lisez le texte dans la fenêtre d'aide pour savoir comment fonctionne l'aide. - Tapez CTRL-W CTRL-W pour sauter d'une fenêtre à l'autre. - Tapez :q pour fermer la fenêtre d'aide. - - Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant - des arguments à la commande :help . Essayez par exemple (n'oubliez pas - d'appuyer sur ) : - - :help w - :help c_CTRL-D - :help c_ ** - - 1. Mettez Vim soit en mode non compatible : set nocp - - 2. Regardez quels fichiers existent dans le répertoire : !ls ou !dir - - 3. Tapez le début d'une commande : :e - - 4. Appuyez CTRL-D et Vim affichera une liste de commandes qui commencent - par "e". - - 5. Appuyez et Vim complétera le nom de la commande : ":edit" - - 6. Ajoutez maintenant un espace et le début d'un fichier existant : - :edit FIC - - 7 Appuyez . Vim va compléter le nom (s'il est unique). - -NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez - d'appuyer CTRL-D et . C'est utile en particulier pour :help . - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 7 - - - 1. Tapez :help ou appuyez ou pour ouvrir la fenêtre d'aide. - - 2. Tapez :help cmd pour trouver l'aide sur cmd . - - 3. Tapez CTRL-W CTRL-W pour sauter à une autre fenêtre. - - 4. Tapez :q pour fermer la fenêtre d'aide. - - 5. Créez un script de démarrage vimrc pour conserver vos réglages préférés. - - 6. Quand vous tapez une commande : appuyez CTRL-D pour voir les - complètements possibles. Appuyez pour utiliser un complètement. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de - l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur - relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup - beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en - anglais : :help user-manual . - - Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en - français. Il parle plus de Vi que de Vim, mais pourra vous être utile. - L'éditeur Vi - Collection Précis et concis - par Arnold Robbins - Éditeur : O'Reilly France - ISBN : 2-84177-102-4 - - Deux livres en anglais sont également mentionnés dans la version originale - de ce tutoriel, dont un qui traite spécifiquement de Vim. Merci de vous y - référer si vous êtes intéressés. - - Ce tutoriel a été écrit par Michael C. Pierce et Robert K. Ware de l'École - des Mines du Colorado et reprend des idées fournies par Charles Smith, - Université d'État du Colorado. E-mail : bware@mines.colorado.edu. - - Modifié pour Vim par Bram Moolenar. - Traduit en Français par Adrien Beau, en avril 2001. - Dernières mises à jour par Dominique Pellé. - - E-mail : dominique.pelle@gmail.com - Last Change : 2010 May 23 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.fr.utf-8 b/share/vim/vim73/tutor/tutor.fr.utf-8 deleted file mode 100644 index 24d8bfa0..00000000 --- a/share/vim/vim73/tutor/tutor.fr.utf-8 +++ /dev/null @@ -1,1038 +0,0 @@ -=============================================================================== -= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.2 = -=============================================================================== - - Vim est un éditeur très puissant qui a trop de commandes pour pouvoir - toutes les expliquer dans un cours comme celui-ci, qui est conçu pour en - décrire suffisamment afin de vous permettre d'utiliser simplement Vim. - - Le temps requis pour suivre ce cours est d'environ 25 à 30 minutes, selon - le temps que vous passerez à expérimenter. - - ATTENTION : - Les commandes utilisées dans les leçons modifieront le texte. Faites une - copie de ce fichier afin de vous entraîner dessus (si vous avez lancé - "vimtutor" ceci est déjà une copie). - - Il est important de garder en tête que ce cours est conçu pour apprendre - par la pratique. Cela signifie que vous devez exécuter les commandes - pour les apprendre correctement. Si vous vous contentez de lire le texte, - vous oublierez les commandes ! - - Maintenant, vérifiez que votre clavier n'est PAS verrouillé en - majuscules, et appuyez la touche j le nombre de fois suffisant pour - que la Leçon 1.1 remplisse complètement l'écran. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.1 : DÉPLACEMENT DU CURSEUR - - - ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. ** - ^ - k Astuce : La touche h est à gauche et déplace à gauche. - < h l > La touche l est à droite et déplace à droite. - j La touche j ressemble à une flèche vers le bas. - v - 1. Déplacez le curseur sur l'écran jusqu'à vous sentir à l'aise. - - 2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète. - Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante. - - 3. En utilisant la touche Bas, allez à la Leçon 1.2. - -NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap> - pour revenir en mode Normal. Puis retapez la commande que vous vouliez. - -NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant - hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que - vous aurez pris l'habitude. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.2 : SORTIR DE VIM - - - !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !! - - 1. Appuyez la touche <Échap> (pour être sûr d'être en mode Normal). - - 2. Tapez : :q! - Ceci quitte l'éditeur SANS enregistrer les changements que vous avez - faits. - - 3. Lorsque l'invite du shell vous sera présentée, tapez la commande qui - vous a mené dans ce tutoriel. Cela pourrait être : vimtutor - - 4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes - 1 à 3 pour sortir puis rentrer dans l'éditeur. - -NOTE : :q! annule tous les changements que vous avez fait. Dans - quelques leçons, vous apprendrez à enregistrer les changements. - - 5. Déplacez le curseur à la Leçon 1.3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT - - - ** Appuyez x pour effacer le caractère sous le curseur. ** - - 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - - 2. Pour corriger les erreurs, déplacez le curseur jusqu'à ce qu'il soit - sur un caractère à effacer. - - 3. Appuyez la touche x pour effacer le caractère redondant. - - 4. Répétez les étapes 2 à 4 jusqu'à ce que la phrase soit correcte. - ----> La vvache à sautéé au-ddessus dde la luune. - - 5. Maintenant que la ligne est correcte, passez à la Leçon 1.4. - -NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par - la pratique. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.4 : ÉDITION DE TEXTE - INSERTION - - - ** Appuyez i pour insérer du texte. ** - - 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. - - 2. Pour rendre la première ligne identique à la seconde, mettez le curseur - sur le premier caractère APRÈS l'endroit où insérer le texte. - - 3. Appuyez i et tapez les caractères qui manquent. - - 4. Une fois qu'une erreur est corrigée, appuyez <Échap> pour revenir en mode - Normal. Répétez les étapes 2 à 4 pour corriger la phrase. - ----> Il mnqe caractères cette . ----> Il manque des caractères dans cette ligne. - - 5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez à la - Leçon 1.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.5 : ÉDITION DE TEXTE - AJOUTER - - - ** Appuyez A pour ajouter du text. ** - - 1. Déplacez le curseur sur la première ligne ci-dessous marquée --->. - Peu importe sur quel caractère se trouve le curseur sur cette ligne. - - 2. Appuyez A et tapez les ajouts nécessaires. - - 3. Quand le texte a été ajouté, appuyez <Échap> pour revenir en mode - Normal. - - 4. Déplacez le curseur sur la seconde ligne marquée ---> et répétez les - étapes 2 et 3 pour corriger la phrase. - ----> Il manque du texte à partir de cet - Il manque du texte à partir de cette ligne. ----> Il manque aussi du te - Il manque aussi du texte ici. - - 5. Quand vous vous sentez suffisamment à l'aise pour ajouter du texte, - allez à la Leçon 1.6. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.6 : ÉDITER UN FICHIER - - - ** Utilisez :wq pour enregistrer un fichier et sortir. ** - -!! NOTE : Lisez toute la leçon avant d'exécuter les instructions ci-dessous !! - - 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.2 : :q! - Ou, si vous avez accès à un autre terminal, exécutez y les actions - qui suivent. - - 2. À l'invite du shell, tapez cette commande : vim tutor - 'vim' est la commande pour démarrer l'éditeur Vim, 'tutor' est le - nom du fichier que vous souhaitez éditer. Utilisez un fichier qui peut - être modifié. - - 3. Insérez et effacez du texte comme vous l'avez appris dans les leçons - précédentes. - - 4. Enregistrez le fichier avec les changements et sortez de Vim avec : - :wq - - 5. Si vous avez quitté vimtutor à l'étape 1, recommencez vimtutor et - déplacez-vous en bas vers le résumé suivant. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 1 - - - 1. Le curseur se déplace avec les touches fléchées ou les touches hjkl. - h (gauche) j (bas) k (haut) l (droite) - - 2. Pour démarrer Vim à l'invite du shell tapez : vim FICHIER - - 3. Pour quitter Vim tapez : <Échap> :q! pour perdre tous les - changements. - OU tapez : <Échap> :wq pour enregistrer les - changements. - - 4. Pour effacer un caractère sous le curseur tapez : x - - 5. Pour insérer ou ajouter du texte tapez : - i tapez le texte à insérer avant le curseur <Échap> - A tapez le texte à ajouter après le curseur <Échap> - -NOTE : Appuyer <Échap> vous place en mode Normal ou annule une commande - partiellement tapée dont vous ne voulez plus. - -Passez maintenant à la leçon 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.1 : COMMANDES D'EFFACEMENT - - - ** Tapez dw pour effacer un mot. ** - - 1. Appuyez <Échap> pour être sûr d'être en mode Normal. - - 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - - 3. Placez le curseur sur le début d'un mot qui a besoin d'être effacé. - - 4. Tapez dw pour faire disparaître ce mot. - -NOTE : La lettre d apparaîtra sur la dernière ligne de l'écran lors de - votre frappe. Vim attend que vous tapiez w . Si vous voyez un autre - caractère que d vous avez tapé autre chose ; appuyez <Échap> et - recommencez. - ----> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne. - - 5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez - à la Leçon 2.2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS - - - ** Tapez d$ pour effacer jusqu'à la fin de la ligne. ** - - 1. Appuyez <Échap> pour être sûr d'être en mode Normal. - - 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - - 3. Déplacez le curseur jusqu'à la fin de la ligne correcte (APRÈS le - premier . ). - - 4. Tapez d$ pour effacer jusqu'à la fin de la ligne. - ----> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois. - - 5. Allez à la Leçon 2.3 pour comprendre ce qui se passe. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS - - - Plusieurs commandes qui changent le texte sont constituées d'un opérateur - et d'un mouvement. Le format pour une commande d'effacement avec l'opérateur - d d'effacement est le suivant : - - d mouvement - - Où : - d - est l'opérateur d'effacement - mouvement - est le mouvement sur lequel agit l'opérateur (listés - ci-dessous) - - Une courte liste de mouvements : - w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère. - e - jusqu'à la fin du mot courant, en EXCLUANT son denier caractère. - $ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère. - - Ainsi, taper de va effacer depuis le curseur jusqu'à la fin du mot. - -NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le - curseur comme indiqué. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT - - - ** Taper un nombre avant un mouvement le répète autant de fois. ** - - 1. Déplacez le curseur au début de la ligne marquée ---> ci-dessous. - - 2. Tapez 2w pour déplacer le curseur de 2 mots vers l'avant. - - 3. Tapez 3e pour déplacer le curseur à la fin du troisième mot vers - l'avant. - - 4. Tapez 0 (zéro) pour déplacer au début de la ligne. - - 5. Répétez les étapes 2 et 3 avec des quantificateurs différents. - ----> Ceci est juste une ligne avec des mots où vous pouvez vous déplacer. - - 6. Déplacez-vous à la Leçon 2.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS - - - ** Taper un nombre avec un opérateur le répète autant de fois. ** - - Outre la combinaison de l'opérateur d'effacement avec un déplacement - mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur) - pour effacez encore plus : - d nombre déplacement - - 1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne - marquée --->. - - 2. Tapez d2w pour effacer les deux mots en MAJUSCULES. - - 3. Répétez les étapes 1 et 2 avec des quantificateurs différents pour - effacer les mots suivants en MAJUSCULES à l'aide d'une commande. - ----> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoyée. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.6 : OPÉREZ SUR DES LIGNES - - - ** Tapez dd pour effacer une ligne complète. ** - - Vu le nombre de fois où l'on efface des lignes complètes, les concepteurs - de Vi ont décidé qu'il serait plus facile de taper simplement deux d - pour effacer une ligne. - - 1. Placez le curseur sur la seconde ligne de la phrase ci-dessous. - 2. Tapez dd pour effacer la ligne. - 3. Maintenant allez à la quatrième ligne. - 4. Tapez 2dd pour effacer deux lignes. - ----> 1) Les roses sont rouges, ----> 2) La boue c'est drôle, ----> 3) Les violettes sont bleues, ----> 4) J'ai une voiture, ----> 5) Les horloges donnent l'heure, ----> 6) Le sucre est doux ----> 7) Tout comme vous. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.7 : L'ANNULATION - - - ** Tapez u pour annuler les dernières commandes. ** - ** Tapez U pour récupérer toute une ligne. ** - - 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous et placez-le sur - la première erreur. - 2. Tapez x pour effacer le premier caractère redondant. - 3. Puis tapez u pour annuler la dernière commande exécutée. - 4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande x . - 5. Puis tapez un U majuscule pour remettre la ligne dans son état initial. - 6. Puis tapez u deux-trois fois pour annuler le U et les commandes - précédentes. - 7. Maintenant tapez CTRL-R (maintenez la touche CTRL enfoncée pendant que - vous appuyez R) deux-trois fois pour refaire les commandes (annuler - les annulations). - ----> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'. - - 8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la - Leçon 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 2 - - - 1. Pour effacer du curseur jusqu'au mot suivant tapez : dw - - 2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez : d$ - - 3. Pour effacer toute une ligne tapez : dd - - 4. Pour répéter un déplacement ajoutez un quantificateur : 2w - - 5. Le format d'une commande de changement est : - - opérateur [nombre] déplacement - - Où : - opérateur - est ce qu'il faut faire, comme d pour effacer. - [nombre] - un quantificateur optionnel pour répéter le déplacement. - déplacement - déplace le long du texte à opérer, tel que w (mot), - $ (jusqu'à la fin de ligne), etc. - - 6. Pour se déplacer au début de ligne, utilisez un zéro : 0 - - 5. Pour annuler des actions précédentes, tapez : u (u minuscule) - Pour annuler tous les changements sur une ligne tapez : U (U majuscule) - Pour annuler l'annulation tapez : CTRL-R - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.1 : LE COLLAGE - - - ** Tapez p pour placer après le curseur ce qui vient d'être effacé. ** - - 1. Placez le curseur sur la première ligne ci-dessous marquée --->. - - 2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim. - - 3. Déplacez le curseur sur la ligne c) au-dessus où vous voulez remettre la - ligne effacée. - - 4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur. - - 5. Répétez les étapes 2 à 4 pour mettre toutes les lignes dans le bon ordre. - ----> d) Et vous, qu'apprenez-vous ? ----> b) Les violettes sont bleues, ----> c) L'intelligence s'apprend, ----> a) Les roses sont rouges, - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.2 : LA COMMANDE DE REMPLACEMENT - - - ** Tapez rx pour remplacer un caractère sous le curseur par x . ** - - 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. - - 2. Placez le curseur de manière à ce qu'il surplombe la première erreur. - - 3. Tapez r suivi du caractère qui doit corriger l'erreur. - - 4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit égale - à la seconde. - ----> Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe ! ----> Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe ! - - 5. Maintenant, allez à la Leçon 3.3. - -NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par - mémorisation. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.3 : L'OPÉRATEUR DE CHANGEMENT - - - ** Pour changer jusqu'à la fin d'un mot, tapez ce .** - - 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. - - 2. Placez le curseur sur le u de luhko. - - 3. Tapez ce et corrigez le mot (dans notre cas, tapez 'igne'.) - - 4. Appuyez <Échap> et placez-vous sur le prochain caractère qui doit - être changé). - - 5. Répétez les étapes 3 et 4 jusqu'à ce que la première phrase soit - identique à la seconde. - ----> Cette luhko contient quelques myqa qui ont ricne d'être chantufip. ----> Cette ligne contient quelques mots qui ont besoin d'être changés. - -Notez que ce efface le mot et vous place ensuite en mode Insertion. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c - - - ** L'opérateur de changement fonctionne avec les mêmes déplacements - que l'effacement. ** - - 1. L'opérateur de changement fonctionne de la même manière que - l'effacement. Le format est : - - c [nombre] déplacement - - 2. Les déplacements sont identiques : w (mot) et $ (fin de ligne). - - 3. Déplacez-vous sur la première ligne marquée ---> ci-dessous. - - 4. Placez le curseur sur la première erreur. - - 5. Tapez c$ et tapez le reste de la ligne afin qu'elle soit identique - à la seconde ligne, puis tapez <Échap>. - ----> La fin de cette ligne doit être rendue identique à la seconde. ----> La fin de cette ligne doit être corrigée avec la commande c$ . - -NOTE : Vous pouvez utiliser la touche Retour Arrière pour corriger les - erreurs lorsque vous tapez. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 3 - - - 1. Pour remettre le texte qui a déjà été effacé, tapez p . Cela Place le - texte effacé APRÈS le curseur (si une ligne complète a été effacée, elle - sera placée sous la ligne du curseur). - - 2. Pour remplacer le caractère sous le curseur, tapez r suivi du caractère - qui remplacera l'original. - - 3. L'opérateur de changement vous permet de changer depuis la position du - curseur jusqu'où le déplacement vous amène. Par exemple, tapez ce - pour changer du curseur jusqu'à la fin du mot, c$ pour changer jusqu'à - la fin d'une ligne. - - 4. Le format pour le changement est : - - c [nombre] déplacement - -Passez maintenant à la leçon suivante. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER - - - ** Tapez CTRL-G pour afficher votre position dans le fichier et son état. - Tapez G pour vous rendre à une ligne donnée du fichier. ** - -NOTE : Lisez toute cette leçon avant d'effectuer l'une des étapes !! - - 1. Maintenez enfoncée la touche CTRL et appuyez sur g . On appelle cela - CTRL-G. Une ligne d'état va apparaître en bas de l'écran avec le nom - du fichier et le numéro de la ligne où vous êtes. Notez ce numéro, il - servira lors de l'étape 3. - -NOTE : Vous pouvez peut-être voir le curseur en bas à droite de l'écran. - Ceci arrive quand l'option 'ruler' est activée (voir :help 'ruler') - - 2. Tapez G pour vous déplacer à la fin du fichier. - Tapez gg pour vous déplacer au début du fichier. - - 3. Tapez le numéro de la ligne où vous étiez suivi de G . Cela vous - ramènera à la ligne où vous étiez au départ quand vous aviez appuyé - CTRL-G. - - 4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.2 : LA RECHERCHE - - - ** Tapez / suivi d'un texte pour rechercher ce texte. ** - - 1. Tapez le caractère / en mode Normal. Notez que celui-ci et le curseur - apparaissent en bas de l'écran, comme lorsque l'on utilise : . - - 2. Puis tapez 'errreuur' . C'est le mot que vous voulez rechercher. - - 3. Pour rechercher à nouveau le même texte, tapez simplement n . - Pour rechercher le même texte dans la direction opposée, tapez N . - - 4. Pour rechercher une phrase dans la direction opposée, utilisez ? - au lieu de / . - ----> erreur ne s'écrit pas "errreuur" ; errreuur est une erreur. - -NOTE : Quand la recherche atteint la fin du fichier, elle reprend au début - sauf si l'option 'wrapscan' est déactivée. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES - - - ** Tapez % pour trouver des ), ] ou } correspondants. ** - - 1. Placez le curseur sur l'un des (, [ ou { de la ligne marquée ---> - ci-dessous. - - 2. Puis tapez le caractère % . - - 3. Le curseur se déplacera sur la parenthèse out crochet correspondant. - - 4. Tapez % pour replacer le curseur sur la parenthèse ou crochet - correspondant. - - 5. Déplacez le curseur sur un autre (,),[,],{ ou } et regardez ce que - fait % . - ----> Voici ( une ligne de test contenant des (, des [ ] et des { } )). - -NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qui - contient des parenthèses déséquilibrées ! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.4 : LA COMMANDE DE SUBSTITUTION - - - ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** - - 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - - 2. Tapez :s/lee/le . Notez que cette commande change seulement la - première occurrence de "lee" dans la ligne. - - 3. Puis tapez :s/lee/le/g . L'ajout du drapeau g ordonne de faire une - substitution globale sur la ligne, et change toutes les occurrences de - "lee" sur la ligne. - ----> lee meilleur moment pour regarder lees fleurs est pendant lee printemps. - - 4. Pour changer toutes les occurrences d'un texte, entre deux lignes, - tapez :#,#s/ancien/nouveau/g où #,# sont les numéros de lignes de la - plage où la substitution doit être faite. - Tapez :%s/ancien/nouveau/g pour changer toutes les occurrences dans - tout le fichier. - Tapez :%s/ancien/nouveau/gc pour trouver toutes les occurrences dans - tout le fichier avec une invite pour - confirmer ou infirmer chaque substitution. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 4 - - - 1. CTRL-G affiche la position dans le fichier et l'état de celui-ci. - G déplace à la fin du fichier. - nombre G déplace au numéro de ligne. - gg déplace à la première ligne. - - 2. Taper / suivi d'un texte recherche ce texte vers l'AVANT. - Taper ? suivi d'un texte recherche ce texte vers l'ARRIÈRE. - Après une recherche tapez n pour trouver l'occurrence suivante dans la - même direction ou Maj-N pour rechercher dans la direction opposée. - - 3. Taper % lorsque le curseur est sur (, ), [, ], { ou } déplace - celui-ci sur le caractère correspondant. - - 4. Pour remplacer le premier aa par bb sur une ligne tapez :s/aa/bb - Pour remplacer tous les aa par bb sur une ligne tapez :s/aa/bb/g - Pour remplacer du texte entre deux numéros de ligne tapez :#,#s/aa/bb/g - Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g - Pour demander une confirmation à chaque fois ajoutez 'c' :%s/aa/bb/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE - - - ** Tapez :! suivi d'une commande externe pour exécuter cette commande. ** - - 1. Tapez le : familier pour mettre le curseur en bas de l'écran. Cela vous - permet de saisir une commande. - - 2. Puis tapez un ! (point d'exclamation). Cela vous permet d'exécuter - n'importe quelle commande valide pour votre interpréteur (shell). - - 3. Par exemple, tapez ls après le ! et appuyez . Ceci affichera - la liste des fichiers du répertoire courant, comme si vous aviez tapé la - commande à l'invite du shell. Utilisez :!dir si :!ls ne marche pas. - -NOTE : Il est possible d'exécuter n'importe quelle commande externe de cette - manière, avec ou sans argument. - -NOTE : Toutes les commandes : doivent finir par la frappe de . - À partir de maintenant, nous ne le mentionnerons plus. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS - - - ** Pour enregistrer les changements faits au texte, tapez :w FICHIER . ** - - 1. Tapez :!dir ou :!ls pour avoir la liste des fichiers dans le - répertoire courant. Vous savez déjà qu'il faut appuyer après - cela. - - 2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST. - - 3. Puis tapez :w TEST (où TEST est le nom que vous avez choisi). - - 4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST. - Pour le vérifier, tapez :!dir ou :!ls de nouveau pour revisualiser - votre répertoire. - -NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST, - celui-ci sera une copie exacte de ce cours au moment où vous l'avez - enregistré. - - 5. Maintenant, effacez le fichier en tapant (MS-DOS) : :!del TEST - ou (Unix) : :!rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.3 : SÉLECTION DU TEXTE À ENREGISTRER - - - ** Pour enregistrer une portion du fichier, - tapez : v déplacement :w FICHIER ** - - 1. Déplacez le curseur sur cette ligne. - - 2. Appuyez v et déplacez le curseur vers la cinquième ligne plus bas. - Remarquez que le texte est en surbrillance. - - 3. Appuyez : . En bas de l'écran :'<,'> va apparaître. - - 4. Tapez w TEST , où TEST est un nom de fichier qui n'existe pas. - Vérifiez que vous voyez :'<,'>w TEST avant de d'appuyer sur Entrée. - - 5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST. - Utilisez :!dir ou !ls pour le voir. Ne l'effacez pas encore ! - Nous allons l'utiliser dans la leçon suivante. - -NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le - curseur pour agrandir ou rétrécir la sélection. Puis vous pouvez - utiliser un opérateur pour faire quelque chose sur le texte. Par - exemple, d efface le texte. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS - - - ** Pour insérer le contenu d'un fichier, tapez :r FICHIER ** - - 1. Placez le curseur juste au-dessus de cette ligne. - -NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3. - Puis déplacez vous vers le bas pour voir cette leçon à nouveau. - - 2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST - où TEST est le nom de votre fichier. - Le fichier que vous récupérez est placé au-dessous de la ligne du curseur. - - 4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez - qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle - contenue dans le fichier. - -NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, - :r !ls lit la sortie de la commande ls et la place sous la ligne du - curseur. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 5 - - - 1. :!commande exécute une commande externe. - - Quelques exemples pratiques : - (MS-DOS) (Unix) - :!dir :!ls affiche le contenu du répertoire courant. - :!del FICHIER :!rm FICHIER efface FICHIER. - - 2. :w FICHIER enregistre le fichier Vim courant sur le disque avec pour - nom FICHIER. - - 3. v déplacement :w FICHIER sauvegarde les lignes de la sélection Visuelle - dans le fichier FICHIER. - - 4. :r FICHIER récupère le contenu du fichier FICHIER et l'insère sous la - position du curseur. - - 5. :r !dir lit la sortie de la commande dir et l'insère sous la position - du curseur. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.1 : LA COMMANDE D'OUVERTURE - - -** Tapez o pour ouvrir une ligne sous le curseur et y aller en Insertion. ** - - 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - - 2. Tapez la lettre o minuscule pour ouvrir une ligne SOUS le curseur et - vous y placer en mode Insertion. - - 3. Puis tapez du texte et appuyez <Échap> pour sortir du mode Insertion. - ----> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. - - 4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un O - majuscule, plutôt qu'un o minuscule. Faites un essai sur la ligne - ci-dessous. - ----> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.2 : LA COMMANDE D'AJOUT - - - ** Tapez a pour insérer du texte APRÈS le curseur. ** - - 1. Placez le curseur au début de la ligne marquée ---> ci-dessous. - - 2. Appuyez e jusqu'à ce que le curseur soit sur la fin de li . - - 3. Appuyez a (minuscule) pour ajouter du texte APRÈS le curseur. - - 4. Complétez le mot comme dans la ligne dessous. Appuyez <Échap> pour - sortir du mode Insertion. - - 5. Utilisez e pour vous déplacer vers le mot incomplet suivant et - répétez les étapes 3 et 4. - ----> Cette li vous perm de pratiq l'ajout de t dans une ligne. ----> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne. - -NOTE : a, i, A vont tous dans le même mode Insertion, la seule différence - est l'endroit où les caractères sont insérés. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.3 : UNE AUTRE MANIÈRE DE REMPLACER - - - ** Tapez un R majuscule pour remplacer plus d'un caractère. ** - - 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. - Déplacez le curseur sur le début du premier xxx . - - 2. Appuyez maintenant R et tapez le nombre dessous dans la deuxième ligne, - de manière à remplacer le xxx . - - 3. Appuyez <Échap> pour quitter le mode Remplacement. Notez que le reste de - la ligne demeure inchangé. - - 4. Répétez les étapes pour remplacer les xxx restants. - - ----> L'ajout de 123 à xxx donne xxx. ----> L'ajout de 123 à 456 donne 579. - -NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les - caractères tapés effacent un caractère existant. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.4 : COPIER ET COLLER DU TEXTE - - - ** Utilisez l'opérateur y pour copier du texte et p pour le coller ** - - 1. Allez à la ligne marquée ---> ci-dessous et placez le curseur après "a)". - - 2. Démarrez le mode Visuel avec v et déplacez le curseur juste devant - "premier". - - 3. Tapez y pour copier le texte en surbrillance. - - 4. Déplacez le curseur à la fin de la ligne suivante : j$ - - 5. Tapez p pour coller le texte. Puis tapez : un second <Échap> . - - 6. Utilisez le mode Visuel pour sélectionner "élément", copiez le avec y , - déplacez vous à la fin de la ligne suivant avec j$ et collez le texte - à cet endroit avec p . - ----> a) ceci est le premier élément. - b) - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.4 : RÉGLAGE DES OPTIONS - - - ** Réglons une option afin que la recherche et la substitution ignore la - casse des caractères. ** - - 1. Recherchez 'ignore' en tapant : /ignore - Répétez ceci plusieurs fois en utilisant la touche n . - - 2. Activez l'option 'ic' (ignorer casse) en tapant :set ic . - - 3. Puis cherchez 'ignore' de nouveau en utilisant n . - Remarquez que Ignore et IGNORE sont maintenant aussi trouvés. - - 4. Activez les options 'hlsearch' et 'incsearch' avec :set hls is . - - 5. Puis recommencez une recherche, et faites bien attention à ce qui se - produit : /ignore - - 6. Pour désactiver 'ignorer casse', entrez : :set noic - -NOTE : Pour enlever la surbrillance des résultats, entrez : :nohlsearch - -NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez - \c dans la phrase : /ignore\c - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 6 - - - 1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion. - Taper O ouvre une ligne au-DESSUS du curseur. - - 2. Taper a pour insérer du texte APRÈS le curseur. - Taper A pour insérer du texte après la fin de ligne. - - 3. Taper e déplace à la fin du mot. - - 4. Taper y copie du texte, p le colle. - - 5. Taper R majuscule active le mode Remplacement jusqu'à ce qu' <Échap> - soit appuyé. - - 6. Taper ":set xxx" active l'option "xxx". Quelques options sont : - 'ic' 'ingnorecase' pour ignorer la casse lors des recherches. - 'is' 'incsearch' pour montrer les appariements partiels. - 'hls' 'hlsearch' pour mettre en surbrillance les appariements. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 7.1 : OBTENIR DE L'AIDE - - - ** Utiliser le système d'aide en ligne. ** - - Vim a un système complet d'aide en ligne. Pour y accéder, essayez l'une de - ces trois méthodes : - - appuyez la touche (si vous en avez une) - - appuyez la touche (si vous en avez une) - - tapez :help - - - Lisez le texte dans la fenêtre d'aide pour savoir comment fonctionne l'aide. - Tapez CTRL-W CTRL-W pour sauter d'une fenêtre à l'autre. - Tapez :q pour fermer la fenêtre d'aide. - - Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant - des arguments à la commande :help . Essayez par exemple (n'oubliez pas - d'appuyer sur ) : - - :help w - :help c_CTRL-D - :help c_ ** - - 1. Mettez Vim soit en mode non compatible : set nocp - - 2. Regardez quels fichiers existent dans le répertoire : !ls ou !dir - - 3. Tapez le début d'une commande : :e - - 4. Appuyez CTRL-D et Vim affichera une liste de commandes qui commencent - par "e". - - 5. Appuyez et Vim complétera le nom de la commande : ":edit" - - 6. Ajoutez maintenant un espace et le début d'un fichier existant : - :edit FIC - - 7 Appuyez . Vim va compléter le nom (s'il est unique). - -NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez - d'appuyer CTRL-D et . C'est utile en particulier pour :help . - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 7 - - - 1. Tapez :help ou appuyez ou pour ouvrir la fenêtre d'aide. - - 2. Tapez :help cmd pour trouver l'aide sur cmd . - - 3. Tapez CTRL-W CTRL-W pour sauter à une autre fenêtre. - - 4. Tapez :q pour fermer la fenêtre d'aide. - - 5. Créez un script de démarrage vimrc pour conserver vos réglages préférés. - - 6. Quand vous tapez une commande : appuyez CTRL-D pour voir les - complètements possibles. Appuyez pour utiliser un complètement. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de - l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur - relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup - beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en - anglais : :help user-manual . - - Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en - français. Il parle plus de Vi que de Vim, mais pourra vous être utile. - L'éditeur Vi - Collection Précis et concis - par Arnold Robbins - Éditeur : O'Reilly France - ISBN : 2-84177-102-4 - - Deux livres en anglais sont également mentionnés dans la version originale - de ce tutoriel, dont un qui traite spécifiquement de Vim. Merci de vous y - référer si vous êtes intéressés. - - Ce tutoriel a été écrit par Michael C. Pierce et Robert K. Ware de l'École - des Mines du Colorado et reprend des idées fournies par Charles Smith, - Université d'État du Colorado. E-mail : bware@mines.colorado.edu. - - Modifié pour Vim par Bram Moolenar. - Traduit en Français par Adrien Beau, en avril 2001. - Dernières mises à jour par Dominique Pellé. - - E-mail : dominique.pelle@gmail.com - Last Change : 2010 May 23 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.hr b/share/vim/vim73/tutor/tutor.hr deleted file mode 100644 index f1d346c2..00000000 --- a/share/vim/vim73/tutor/tutor.hr +++ /dev/null @@ -1,972 +0,0 @@ -=============================================================================== -= D o b r o d o ¹ l i u VIM p r i r u è n i k - Verzija 1.7 = -=============================================================================== - - Vim je vrlo moæan editor koji ima mnogo naredbi, previ¹e da bi ih - se svih ovdje spomenulo. Namjena priruènika je objasniti dovoljno - naredbi kako bi poèetnici znatno lak¹e koristili ovaj svestran editor. - - Pribli¾no vrijeme potrebno za uspje¹an zavr¹etak priruènika je oko - 30 minuta a ovisi o tome koliko æe te vremena odvojiti za vje¾banje. - - UPOZORENJE: - Naredbe u ovom priruèniku æe promijeniti ovaj tekst. - Napravite kopiju ove datoteke kako bi ste na istoj vje¾bali - (ako ste pokrenuli "vimtutor" ovo je veæ kopija). - - Vrlo je va¾no primijetiti da je ovaj priruènik namijenjen za vje¾banje. - Preciznije, morate izvr¹iti naredbe u Vim-u kako bi ste iste nauèili - pravilno koristiti. Ako samo èitate tekst, zaboraviti æe te naredbe! - - Ako je CapsLock ukljuèen ISKLJUÈITE ga. Pritiskajte tipku j kako - bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.1: POMICANJE KURSORA - - - ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano ** - ^ - k Savjet: h tipka je lijevo i pomièe kursor lijevo. - < h l > l tipka je desno i pomièe kursor desno. - j j izgleda kao strelica usmjerena dolje. - v - 1. Pomièite kursor po ekranu dok se ne naviknete na kori¹tenje. - - 2. Dr¾ite tipku (j) pritisnutom. - Sada znate kako doæi do sljedeæe lekcije. - - 3. Koristeæi tipku j prijeðite na sljedeæu lekciju 1.2. - -NAPOMENA: Ako niste sigurni ¹to ste zapravo pritisnuli uvijek koristite - tipku kako bi pre¹li u Normal mod i onda poku¹ajte ponovno. - -NAPOMENA: Kursorske tipke rade isto. Kori¹tenje hjkl tipaka je znatno - br¾e, nakon ¹to se jednom naviknete na njihovo kori¹tenje. Stvarno! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.2: IZLAZ IZ VIM-a - - - !! UPOZORENJE: Prije izvoðenja bilo kojeg koraka, - proèitajte cijelu lekciju!! - - 1. Pritisnite tipku (Vim je sada u Normal modu). - - 2. Otipkajte: :q! . - Izlaz iz editora, GUBE se sve napravljene promjene. - - 3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula - ovaj priruènik: vimtutor - - 4. Ako ste upamtili ove korake, izvr¹ite ih redom od 1 do 3 - kako bi ponovno pokrenuli editor. - -NAPOMENA: :q! poni¹tava sve promjene koje ste napravili. - U sljedeæim lekcijama nauèit æe te kako promjene saèuvati. - - 5. Pomaknite kursor na Lekciju 1.3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.3: PROMJENA TEKSTA - BRISANJE - - - ** Pritisnite x za brisanje znaka pod kursorom. ** - - 1. Pomaknite kursor na liniju oznaèenu s --->. - - 2. Kako bi ste ispravili pogre¹ke, pomièite kursor dok se - ne bude nalazio na slovu kojeg trebate izbrisati. - - 3. Pritisnite tipku x kako bi uklonili ne¾eljeno slovo. - - 4. Ponovite korake od 2 do 4 dok ne ispravite sve pogre¹ke. - ----> KKKravaa jee presskoèila mmjeseccc. - - 5. Nakon ¹to ispravite liniju, prijeðite na lekciju 1.4. - -NAPOMENA: Koristeæi ovaj priruènik ne poku¹avajte pamtiti - veæ uèite primjenom. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE - - - ** Pritisnite i za ubacivanje teksta ispred kursora. ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - - 2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite - kursor na prvi znak POSLIJE kojeg æe te utipkati potreban tekst. - - 3. Pritisnite i te utipkajte potrebne nadopune. - - 4. Nakon ¹to ispravite pogre¹ku pritisnite kako bi vratili Vim - u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogre¹ke. - ----> Nedje no teka od v lin. ----> Nedostaje ne¹to teksta od ove linije. - - 5. Prijeðite na sljedeæu lekciju. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE - - - ** Pritisnite A za dodavanje teksta. ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - Nije va¾no na kojem se slovu nalazi kursor na toj liniji. - - 2. Pritisnite A i napravite potrebne promjene. - - 3. Nakon ¹to ste dodali tekst, pritisnite - za povratak u Normal mod. - - 4. Pomaknite kursor na drugu liniju oznaèenu s ---> - i ponovite korake 2 i 3 dok ne popravite tekst. - ----> Ima ne¹to teksta koji nedostaje n - Ima ne¹to teksta koji nedostaje na ovoj liniji. ----> Ima ne¹to teksta koji ne - Ima ne¹to teksta koji nedostaje ba¹ ovdje. - - 5. Prijeðite na lekciju 1.6. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.6: PROMJENA DATOTEKE - - - ** Koristite :wq za spremanje teksta i napu¹tanje Vim-a. ** - - !! UPOZORENJE: Prije izvr¹avanja bilo kojeg koraka, proèitajte lekciju!! - - 1. Izaðite iz programa kao sto ste napravili u lekciji 1.2: :q! - - 2. Iz ljuske utipkajte sljedeæu naredbu: vim tutor - 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju - ¾elite ureðivati. Koristite datoteku koju imate ovlasti mijenjati. - - 3. Ubacite i izbri¹ite tekst kao ¹to ste to napravili u lekcijama prije. - - 4. Saèuvajte promjenjeni tekst i izaðite iz Vim-a: :wq - - 5. Ponovno pokrenite vimtutor i nastavite èitati sa¾etak koji sljedi. - - 6. Nakon sto proèitate gornje korake i u potpunosti ih razumijete: - izvr¹ite ih. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1 SA®ETAK - - - 1. Kursor se pomièe strelicama ili pomoæu hjkl tipaka. - h (lijevo) j (dolje) k (gore) l (desno) - - 2. Pokretanje Vim-a iz ljuske: vim IME_DATOTEKE - - 3. Izlaz: :q! sve promjene su izgubljene. - ILI: :wq promjene su saèuvane. - - 4. Brisanje znaka na kojem se nalazi kursor: x - - 5. Ubacivanja ili dodavanje teksta: - i utipkajte tekst unos ispred kursora - A utipkajte tekst dodavanje na kraju linije - -NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i - prekida ne¾eljenu ili djelomièno zavr¹enu naredbu. - -Nastavite èitati Lekciju 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.1: NAREDBE BRISANJA - - - ** Tipkajte dw za brisanje rijeèi. ** - - 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. - - 2. Pomaknite kursor na liniju oznaèenu s --->. - - 3. Pomaknite kursor na poèetak rijeèi koju treba izbrisati. - - 4. Otipkajte dw kako bi uklonili rijeè. - -NAPOMENA: Vim æe prikazati slovo d na zadnjoj liniji kad ga otipkate. - Vim èeka da otipkate w . Ako je prikazano neko drugo slovo, - krivo ste otipkali; pritisnite i poku¹ajte ponovno. - ----> Neke rijeèi smije¹no ne pripadaju na papir ovoj reèenici. - - 5. Ponovite korake 3 i 4 dok ne ispravite reèenicu; - prijeðite na Lekciju 2.2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.2: JO© BRISANJA - - - ** Otipkajte d$ za brisanje znakova do kraja linije. ** - - 1. Pritisnite kako bi bili - sigurni da je Vim u Normal modu. - - 2. Pomaknite kursor na liniju oznaèenu s --->. - - 3. Pomaknite kursor do kraja ispravne reèenice - (POSLJE prve . ). - - 4. Otipkajte d$ - kako bi izbrisali sve znakove do kraja linije. - ----> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. - - 5. Prijeðite na Lekciju 2.3 za bolje obja¹njenje. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA - - - Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. - Oblik naredbe brisanja sa d operatorom je sljedeæi: - - d pokret - - Pri èemu je: - d - operator brisanja. - pokret - ono na èemu æe se operacija izvr¹avati (navedeno u nastavku). - - Kratka lista pokreta: - w - sve do poèetka sljedeæe rijeèi, NE UKLJUÈUJUÆI prvo slovo. - e - sve do kraja trenutaène rijeèi, UKLJUÈUJUÆI zadnje slovo. - $ - sve do kraje linije, UKLJUÈUJUÆI zadnje slovo. - - Tipkanjem de æe se brisati od kursora do kraja rijeèi. - -NAPOMENA: Pritiskajuæi samo pokrete dok ste u Normal modu bez operatora æe - pomicati kursor kao ¹to je navedeno. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.4: KORI©TENJE BROJANJA ZA POKRETE - - - ** Tipkanjem nekog broja prije pokreta, pokret se izvr¹ava toliko puta. ** - - 1. Pomaknite kursor na liniju oznaèenu s --->. - - 2. Otipkajte 2w da pomaknete kursor dvije rijeèi naprijed. - - 3. Otipkajte 3e da pomaknete kursor na kraj treæe rijeèi naprijed. - - 4. Otipkajte 0 (nulu) da pomaknete kursor na poèetak linije. - - 5. Ponovite korake 2 i 3 s nekim drugim brojevima. - ----> Reèenica sa rijeèima po kojoj mo¾ete pomicati kursor. - - 6. Prijeðite na Lekciju 2.5. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.5: KORI©TENJE BROJANJA ZA VEÆE BRISANJE - - - ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** - - U kombinaciji operatora brisanja i pokreta spomenutih iznad - ubacujete broj prije pokreta kako bi izbrisali vi¹e znakova: - - d broj pokret - - 1. Pomaknite kursor na prvo slovo u rijeèi sa VELIKIM SLOVIMA - oznaèenu s --->. - - 2. Otipkajte 2dw da izbri¹ete dvije rijeèi sa VELIKIM SLOVIMA - - 3. Ponovite korake 1 i 2 sa razlièitim brojevima da izbri¹ete - uzastopne rijeèi sa VELIKIM SLOVIMA sa samo jednom naredbom. - ----> ova ABCÈÆ DÐE linija FGHI JK LMN OP rijeèi je RS© TUVZ® popravljena. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.6: OPERIRANJE NAD LINIJAMA - - - ** Otipkajte dd za brisanje cijele linije. ** - - Zbog uèestalosti brisanja cijelih linija, dizajneri Vi-a su odluèili da - je lak¹e brisati linije tipkanjem d dvaput. - - 1. Pomaknite kursor na drugu liniju u donjoj kitici. - 2. Otipkajte dd kako bi izbrisali liniju. - 3. Pomaknite kursor na èetvrtu liniju. - 4. Otipkajte 2dd kako bi izbrisali dvije linije. - ----> 1) Ru¾e su crvene, ----> 2) Pla¾a je super, ----> 3) Ljubice su plave, ----> 4) Imam auto, ----> 5) Satovi ukazuju vrijeme, ----> 6) ©eæer je sladak ----> 7) Kao i ti. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.7: NAREDBA PONI©TENJA - - - ** Pritisnite u za poni¹tenje zadnje naredbe, U za cijelu liniju. ** - - 1. Pomaknite kursor na liniju oznaèenu s ---> i postavite kursor na prvu - pogre¹ku. - 2. Otipkajte x kako bi izbrisali prvi ne¾eljeni znak. - 3. Otipkajte u kako bi poni¹tili zadnju izvr¹enu naredbu. - 4. Ovaj put ispravite sve pogre¹ke na liniji koristeæi x naredbu. - 5. Sada utipkajte veliko U kako bi poni¹tili sve promjene - na liniji, vraæajuæi je u prija¹nje stanje. - 6. Sada utipkajte u nekoliko puta kako bi poni¹tili U - i prija¹nje naredbe. - 7. Sada utipkajte CTRL-R (dr¾eæi CTRL tipku pritisnutom dok - ne pritisnete R) nekoliko puta kako bi vratili promjene - (poni¹tili poni¹tenja). - ----> Poopravite pogre¹ke nna ovvoj liniji ii pooni¹titeee ih. - - 8. Vrlo korisne naredbe. Prijeðite na sa¾etak Lekcije 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2 SA®ETAK - - - 1. Brisanje od kursora do sljedeæe rijeèi: dw - 2. Brisanje od kursora do kraja linije: d$ - 3. Brisanje cijele linije: dd - - 4. Za ponavljanje pokreta prethodite mu broj: 2w - 5. Oblik naredbe mijenjanja: - operator [broj] pokret - gdje je: - operator - ¹to napraviti, npr. d za brisanje - [broj] - neobavezan broj ponavljanja pokreta - pokret - kretanje po tekstu po kojem se operira, - kao ¹to je: w (rijeè), $ (kraj linije), itd. - - 6. Postavljanje kursora na poèetak linije: 0 - - 7. Za poni¹tenje prethodnih promjena, pritisnite: u (malo u) - Za poni¹tenje svih promjena na liniji, pritisnite: U (veliko U) - Za vraæanja promjena, utipkajte: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.1: NAREDBA POSTAVI - - - ** p za unos prethodno izbrisanog teksta iza kursora. ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - - 2. Otipkajte dd kako bi izbrisali liniju i spremili je u Vim registar. - - 3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti. - - 4. Otipkajte p kako bi postavili liniju ispod kursora. - - 5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom - rasporedu. - ----> d) Mo¾e¹ li i ti nauèiti? ----> b) Ljubice su plave, ----> c) Inteligencija je nauèena, ----> a) Ru¾e su crvene, - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.2: NAREDBA PROMJENE - - - ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - - 2. Pomaknite kursor tako da se nalazi na prvoj pogre¹ci. - - 3. Otipkajte r i nakon toga ispravan znak na tom mjestu. - - 4. Ponovite korake 2 i 3 sve dok prva - linije ne bude istovjetna drugoj. - ----> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! ----> Kada je ova linija tipkana, netko je pritiskao krive tipke! - - 5. Prijeðite na Lekciju 3.2. - -NAPOMENA: Prisjetite da trebate uèiti vje¾banjem, ne pamæenjem. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.3: OPERATOR MIJENJANJA - - - ** Za mijenjanje do kraja rijeèi, istipkajte ce . ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - - 2. Postavite kursor na a u lackmb. - - 3. Otipkajte ce i ispravite rijeè (u ovom sluèaju otipkajte inija ). - - 4. Pritisnite i pomaknite kursor na sljedeæi znak - kojeg je potrebno ispraviti. - - 5. Ponovite korake 3 i 4 sve dok prva reèenica ne postane istovjetna - drugoj. - ----> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz. ----> Ova linija ima nekoliko rijeèi koje treba mijenjati. - -Primijetite da ce bri¹e rijeè i postavlja Vim u Insert mod. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.4: JO© MIJENJANJA KORI©TENJEM c - - - ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** - - 1. Operator mijenjanja se koristi na isti naèin kao i operator brisanja: - - c [broj] pokret - - 2. Pokreti su isti, npr: w (rijeè) i $ (kraj linije). - - 3. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - - 4. Pomaknite kursor na prvu pogre¹ku. - - 5. Otipkajte c$ i utipkajte ostatak linije tako da bude istovjetna - drugoj te pritisnite . - ----> Kraj ove linije treba pomoæ tako da izgleda kao linija ispod. ----> Kraj ove linije treba ispraviti kori¹tenjem c$ naredbe. - -NAPOMENA: Mo¾ete koristiti Backspace za ispravljanje gre¹aka. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3 SA®ETAK - - - 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo - postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se - postavlja na liniju ispod kursora). - - 2. Za promjenu znaka na kojem se nalazi kursor, pritisnite r i nakon toga - ¾eljeni znak. - - 3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do - koje dovede pokret. tj. Otipkajte ce za mijenjanje od kursora do kraja - rijeèi, c$ za mijenjanje od kursora do kraja linije. - - 4. Oblik naredbe mijenjanja: - - c [broj] pokret - -Prijeðite na sljedeæu lekciju. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE - - ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. - Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** - -NAPOMENA: Proèitajte cijelu lekciju prije izvr¹enja bilo kojeg koraka!! - - 1. Dr¾ite Ctrl tipku pritisnutom i pritisnite g . Ukratko: CTRL-G. - Vim æe ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom - kursora u datoteci. Zapamtite broj linije za 3. korak. - -NAPOMENA: Mo¾ete vidjeti poziciju kursora u donjem desnom kutu ako - je postavka 'ruler' aktivirana (obja¹njeno u 6. lekciji). - - 2. Pritisnite G za pomicanje kursora na kraj datoteke. - Otipkajte gg za pomicanje kursora na poèetak datoteke. - - 3. Otipkajte broj linije na kojoj ste bili maloprije i zatim G . Kursor - æe se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G. - - 4. Ako ste spremni, izvr¹ite korake od 1 do 3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.2: NAREDBE TRA®ENJA - - ** Otipkajte / i nakon toga izraz kojeg ¾elite tra¾iti. ** - - 1. U Normal modu otipkajte / znak. Primijetite da se znak - pojavio zajedno sa kursorom na dnu ekrana kao kod : naredbe. - - 2. Sada otipkajte 'grrrre¹ka' . To je rijeè koju zapravo tra¾ite. - - 3. Za ponovno tra¾enje istog izraza, otipkajte n . - Za tra¾enje istog izraza ali u suprotnom smjeru, otipkajte N . - - 4. Za tra¾enje izraza unatrag, koristite ? umjesto / . - - 5. Za povratak na prethodnu poziciju koristite CTRL-O (dr¾ite Ctrl - pritisnutim dok ne pritisnete tipku o). Ponavljajte sve dok se ne - vratite na poèetak. CTRL-I slièno kao CTRL-O ali u suprotnom smjeru. - ----> "pogrrrre¹ka" je pogre¹no; umjesto pogrrrre¹ka treba stajati pogre¹ka. - -NAPOMENA: Ako se tra¾enjem doðe do kraja datoteke nastavit æe se od njenog - poèetka osim ako je postavka 'wrapscan' deaktivirana. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.3: TRA®ENJE PRIPADAJUÆE ZAGRADE - - - ** Otipkajte % za pronalazak pripadajuæe ), ] ili } . ** - - 1. Postavite kursor na bilo koju od ( , [ ili { - otvorenih zagrada u liniji oznaèenoj s --->. - - 2. Otipkajte znak % . - - 3. Kursor æe se pomaknuti na pripadajuæu zatvorenu zagradu. - - 4. Otipkajte % kako bi pomakli kursor na drugu pripadajuæu zagradu. - - 5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite % naredbu. - ----> Linija ( testiranja obiènih ( [ uglatih ] i { vitièastih } zagrada.)) - - -NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajuæim zagradama! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.4: NAREDBE ZAMIJENE - - - ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** - - 1. Pomaknite kursor na liniju oznaèenu s --->. - - 2. Otipkajte :s/cvræè/cvrè . Primjetite da ova naredba zamjenjuje - samo prvi "cvræè" u liniji. - - 3. Otipkajte :s/cvræè/cvrè/g . Dodavanje g stavke znaèi da æe se naredba - izvr¹iti na cijeloj liniji, zamjenjivanjem svih "cvræè" u liniji. - ----> i cvræèi cvræèi cvræèak na èvoru crne smrèe. - - 4. Za zamjenu svih izraza u rasponu dviju linija, - otipkajte :#,#s/staro/novo/g #,# su brojevi linije datoteke na kojima - te izmeðu njih æe se izvr¹iti zamjena. - Otipkajte :%s/staro/novo/g za zamjenu svih izraza u cijeloj datoteci. - Otipkajte :%s/staro/novo/gc za pronalazak svakog izraza u datoteci i - potvrdu zamjene. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4 SA®ETAK - - - 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. - G postavlja kursor na zadnju liniju datoteke. - broj G postavlja kursor na broj liniju. - gg postavlja kursor na prvu liniju. - - 2. Tipkanje / sa izrazom tra¾i UNAPRIJED taj izraz. - Tipkanje ? sa izrazom tra¾i UNATRAG taj izraz. - Nakon naredbe tra¾enja koristite n za pronalazak izraza u istom - smjeru, i N za pronalazak istog izraza ali u suprotnom smjeru. - CTRL-O vraæa kursor na prethodnu poziciju, CTRL-I na sljedeæu poziciju. - - 3. Tipkanje % dok je kursor na zagradi pomièe ga na pripadajuæu zagradu. - - 4. Za zamjenu prvog izraza staro za izraz novo :s/staro/novo - Za zamjenu svih izraza staro na cijeloj liniji :s/staro/novo/g - Za zamjenu svih izraza staro u rasponu linija #,# :#,#s/staro/novo/g - Za zamjenu u cijeloj datoteci :%s/staro/novo/g - Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.1: IZVR©AVANJE VANJSKIH NAREDBI - - - ** Otipkajte :! sa vanjskom naredbom koju ¾elite izvr¹iti. ** - - 1. Otipkajte poznatu naredbu : kako bi kursor premjestili na dno - ekrana. Time omoguæavate unos naredbe u naredbenoj liniji. - - 2. Otipkajte znak ! (uskliènik). Tako omoguæavate - izvr¹avanje naredbe vanjske ljuske. - - 3. Kao primjer otipkajte ls nakon ! te pritisnite . - Ovo æe prikazati sadr¾aj direktorija, kao da ste u ljusci. - Koristite :!dir ako :!ls ne radi. - -NAPOMENA: Moguæe je izvr¹avati bilo koju vanjsku naredbu na ovaj naèin, - zajedno sa njenim argumentima. - -NAPOMENA: Sve : naredbe se izvr¹avaju nakon ¹to pritisnete - U daljnjem tekstu to neæe uvijek biti napomenuto. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.2: VI©E O SPREMANJU DATOTEKA - - ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** - - 1. Otipkajte :!dir ili :!ls za pregled direktorija. - Veæ znate da morate pritisnuti na kraju tipkanja. - - 2. Izaberite ime datoteke koja jo¹ ne postoji, npr. TEST. - - 3. Otipkajte: :w TEST (gdje je TEST ime koje ste prethodno odabrali.) - - 4. Time æe te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST. - Za provjeru, otipkajte ponovno :!dir ili :!ls - za pregled direktorija. - -NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , - datoteka bi bila potpuna kopija ove datoteke u trenutku - kada ste je spremili. - - 5. Izbri¹ite datoteku tako da otipkate (MS-DOS): :!del TEST - ili (Unix): :!rm TEST - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.3: SPREMANJE OZNAÈENOG TEKSTA - - - ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** - - 1. Pomaknite kursor na ovu liniju. - - 2. Pritisnite v i pomaknite kursor pet linija ispod ove. - Primijetite promjenu, oznaèeni tekst se razlikuje od obiènog. - - 3. Pritisnite : znak. Na dnu ekrana pojavit æe se :'<,'> . - - 4. Otipkajte w TEST , pritom je TEST ime datoteke koja jo¹ ne postoji. - Provjerite da zaista pi¹e :'<,'>w TEST - prije nego ¹to pritisnite . - - 5. Vim æe spremiti oznaèeni tekst u TEST. Provjerite sa :!dir ili !ls . - Nemojte je jo¹ brisati! Koristiti æe te je u sljedeæoj lekciji. - -NAPOMENA: Tipka v zapoèinje Vizualno oznaèavanje. Mo¾ete pomicati kursor - unaokolo kako bi mijenjali velièinu oznaèenog teksta. Mo¾ete - koristiti i operatore. Npr, d æe izbrisati oznaèeni tekst. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.4: UÈITAVANJE DATOTEKA - - - ** Za ubacivanje sadr¾aja datoteke, otipkajte :r IME_DATOTEKE ** - - 1. Postavite kursor iznad ove linije. - -NAPOMENA: Nakon ¹to izvr¹ite 2. korak vidjeti æe te tekst iz Lekcije 5.3. - Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. - - 2. Uèitajte va¹u TEST datoteku koristeæi naredbu :r TEST - gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji. - Sadr¾aj uèitane datoteke je ubaèen liniju ispod kursora. - - 3. Kako bi provjerili da je datoteka uèitana, vratite kursor unatrag i - primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. - -NAPOMENA: Mo¾ete takoðer uèitati ispis vanjske naredbe. Npr, :r !ls - æe uèitati ispis ls naredbe i postaviti ispis liniju ispod - kursora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5 SA®ETAK - - - 1. :!naredba izvr¹ava vanjsku naredbu. - - Korisni primjeri: - (MS-DOS) (Unix) - :!dir :!ls - pregled direktorija. - :!del DATOTEKA :!rm DATOTEKA - bri¹e datoteku DATOTEKA. - - 2. :w DATOTEKA zapisuje trenutaènu datoteku na disk sa imenom DATOTEKA. - - 3. v pokret :w IME_DATOTEKE sprema vizualno oznaèene linije u - datoteku IME_DATOTEKE. - - 4. :r IME_DATOTEKE uèitava datoteku IME_DATOTEKE sa diska i stavlja - njen sadr¾aj liniju ispod kursora. - - 5. :r !dir uèitava ispis naredbe dir i postavlja sadr¾aj ispisa liniju - ispod kursora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.1: NAREDBA OTVORI - - - ** Pritisnite o kako bi otvorili liniju ispod kursora - i pre¹li u Insert mod. ** - - 1. Pomaknite kursor na sljedeæu liniju oznaèenu s --->. - - 2. Otipkajte malo o kako bi otvorili novu liniju ISPOD kursora - i pre¹li u Insert mod. - - 3. Otipkajte ne¹to teksta i nakon toga pritisnite - kako bi napustili Insert mod. - ----> Nakon ¹to pritisnete o kursor æe preæi u novu liniju u Insert mod. - - 4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O , - Poku¹ajte na donjoj liniji oznaèenoj s --->. - ----> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.2: NAREDBA DODAJ - - - ** Otipkajte a za dodavanje teksta IZA kursora. ** - - 1. Pomaknite kursor na poèetak sljedeæe linije oznaèene s --->. - - 2. Tipkajte e dok se kursor ne nalazi na kraju li . - - 3. Otipkajte a (malo) kako bi dodali tekst IZA kursora. - - 4. Dopunite rijeè kao ¹to je na liniji ispod. - Pritisnite za izlaz iz Insert moda. - - 5. Sa e prijeðite na sljedeæu nepotpunu rijeè i ponovite korake 3 i 4. - ----> Ova li omoguæava vje dodav teksta nekoj liniji. ----> Ova linija omoguæava vje¾banje dodavanja teksta nekoj liniji. - -NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina - razlika je u poziciji od koje æe se tekst ubacivati. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.3: DRUGI NAÈIN MIJENJANJA - - - ** Otipkajte veliko R kako bi zamijelili vi¹e od jednog znaka. ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - Pomaknite kursor na poèetak prvog xxx . - - 2. Pritisnite R i otipkajte broj koji je liniju ispod, - tako da zamijeni xxx . - - 3. Pritisnite za izlaz iz Replace moda. - Primijetite da je ostatak linije ostao nepromjenjen. - - 5. Ponovite korake kako bi zamijenili preostali xxx. - ----> Zbrajanje: 123 plus xxx je xxx. ----> Zbrajanje: 123 plus 456 je 579. - -NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, - svaki otipkani znak bri¹e veæ postojeæi. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA - - - ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** - - 1. Pomaknite kursor na liniju s ---> i postavite kursor nakon "a)". - - 2. Pokrenite Visual mod sa v i pomaknite kursor sve do ispred "prva". - - 3. Pritisnite y kako bi kopirali oznaèeni tekst. - - 4. Pomaknite kursor do kraja sljedeæe linije: j$ - - 5. Pritisnite p kako bi zalijepili tekst. Onda utipkajte: druga . - - 6. Koristite Visual mod kako bi oznaèili " linija.", kopirajte: y , kursor - postavite na kraj sljedeæe linije: j$ i ondje zalijepite tekst: p . - ----> a) ovo je prva linija. - b) - -NAPOMENA: mo¾ete koristiti y kao operator; yw kopira jednu rijeè. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.5: MIJENJANJE POSTAVKI - - - ** Postavka: naredbe tra¾enja i zamijene ne razlikuju VELIKA i mala slova ** - - 1. Potra¾ite 'razlika' tipkanjem: /razlika - Nekoliko puta ponovite pritiskanjem n . - - 2. Aktivirajte 'ic' (Ignore case) postavku: :set ic - - 3. Ponovno potra¾ite 'razlika' tipkanjem n - Primijetite da su sada i RAZLIKA i Razlika pronaðeni. - - 4. Aktivirajte 'hlsearch' i 'incsearch' postavke: :set hls is - - 5. Otipkajte naredbu tra¾enja i primijetite razlike: /razlika - - 6. Za deaktiviranje ic postavke koristite: :set noic - -NAPOMENA: Za neoznaèavanje pronaðenih izraza otipkajte: :nohlsearch -NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi - koristite \c u izrazu: /razlika\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6 SA®ETAK - - 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. - Pritisnite O za otvaranje linije IZNAD kursora. - - 2. Pritisnite a za unos teksta IZA kursora. - Pritisnite A za unos teksta na kraju linije. - - 3. Naredba e pomièe kursor na kraj rijeèi. - - 4. Operator y kopira tekst, p ga lijepi. - - 5. Tipkanjem velikog R Vim prelazi u Replace mod dok ne pritisnete . - - 6. Tipkanjem ":set xxx" aktivira postavku "xxx". Neke postavke su: - 'ic' 'ignorecase' ne razlikuje velika/mala slova pri tra¾enju - 'is' 'incsearch' tra¾i nedovr¹ene izraze - 'hls' 'hlsearch' oznaèi sve pronaðene izraze - Mo¾ete koristite dugo ili kratko ime postavke. - - 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.1: DOBIVANJE POMOÆI - - - ** Koristite on-line sustav pomoæi ** - - Vim ima detaljan on-line sustav pomoæi. - Za poèetak, poku¹ajte jedno od sljedeæeg: - - pritisnite tipku (ako je va¹a tipkovnica ima) - - pritisnite tipku (ako je va¹a tipkovnica ima) - - utipkajte :help - - Proèitajte tekst u prozoru pomoæi kako bi ste se znali slu¾iti istom. - Tipkanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. - Otipkajte :q kako bi zatvorili prozor pomoæi. - - Pronaæi æe te pomoæ o bilo kojoj temi, tako da dodate upit samoj - ":help" naredbi. Poku¹ajte (ne zaboravite pritisnuti ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.2: PRAVLJENJE SKRIPTE - - - ** Aktivirajte Vim moguænosti ** - - Vim ima mnogo vi¹e alata od Vi-ja, ali veæina njih nije aktivirana. - Kako bi mogli koristiti vi¹e moguænosti napravite "vimrc" datoteku. - - 1. Uredite "vimrc" datoteku. Ovo ovisi o va¹em sistemu: - :e ~/.vimrc za Unix - :e $VIM/_vimrc za MS-Windows - - 2. Sada uèitajte primjer sadr¾aja "vimrc" datoteke: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Saèuvajte datoteku sa: - :w - - Sljedeæeg puta kada pokrenete Vim, bojanje sintakse teksta biti æe - aktivirano. Sve va¹e postavke mo¾ete dodati u "vimrc" datoteku. - Za vi¹e informacija otipkajte :help vimrc-intro - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.3: AUTOMATSKO DOVR©AVANJE - - - ** Dovr¹avanje iz naredbene linije pomoæu CTRL-D i ** - - 1. Provjerite da Vim nije u Vi modu: :set nocp - - 2. Pogledajte koje datoteke postoje u direktoriju: :!ls or :!dir - - 3. Otipkajte poèetak naredbe: :e - - 4. Tipkajte CTRL-D i prikazati æe se lista naredbi koje zapoèinju sa "e". - - 5. Pritisnite i Vim æe dopuniti unos u naredbu ":edit". - - 6. Dodajte razmak i poèetak datoteke: :edit FIL - - 7. Pritisnite . Vim æe nadopuniti ime datoteke (ako je jedinstveno). - -NAPOMENA: Moguæe je dopuniti mnoge naredbe. Koristite CTRL-D i . - Naroèito je korisno za :help naredbe. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7 SA®ETAK - - - 1. Otipkajte :help ili pritisnite ili za pomoæ. - - 2. Otipkajte :help naredba kako bi dobili pomoæ za naredba . - - 3. Otipkajte CTRL-W CTRL-W za prelazak u drugi prozor - - 4. Otipkajte :q kako bi zatvorili prozor pomoæi - - 5. Napravite vimrc skriptu za podizanje kako bi u nju spremali - va¹e omiljene postavke. - - 6. Kada tipkate naredbu koja zapoèinje sa : - pritisnite CTRL-D kako bi vidjeli moguæe valjane vrijednosti. - Pritisnite kako bi odabrali jednu od njih. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Kraj. Cilj priruènika je da poka¾e kratak pregled Vim editora, tek toliko - da omoguæi njegovo kori¹tenje. Priruènik nije potpun jer Vim ima mnogo vi¹e - naredbi. Za vi¹e informacija: ":help user-manual". - - Za èitanje i kori¹tenje, preporuèamo: - Vim - Vi Improved - by Steve Oualline - Izdavaè: New Riders - Prva knjiga potpuno posveæena Vim-u. Vrlo korisna za poèetnike. - Sa mnogo primjera i slika. - Posjetite http://iccf-holland.org/click5.html - - Sljedeæa knjiga je ne¹to starija i vi¹e o Vi-u nego o Vim-u, preporuèamo: - Learning the Vi Editor - by Linda Lamb - Izdavaè: O'Reilly & Associates Inc. - Solidna knjiga, mo¾ete saznati skoro sve ¹to mo¾ete napraviti - u Vi-u. ©esto izdanje ima ne¹to informacija i o Vim-u. - - Ovaj priruènik su napisali: Michael C. Pierce i Robert K. Ware, - Colorado School of Mines koristeæi ideje Charles Smith, - Colorado State University. E-po¹ta: bware@mines.colorado.edu. - - Naknadne promjene napravio je Bram Moolenaar. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Preveo na hrvatski: Paul B. Mahol - Preinaka 1.42, Lipanj 2008 - - diff --git a/share/vim/vim73/tutor/tutor.hr.cp1250 b/share/vim/vim73/tutor/tutor.hr.cp1250 deleted file mode 100644 index 92771ab2..00000000 --- a/share/vim/vim73/tutor/tutor.hr.cp1250 +++ /dev/null @@ -1,972 +0,0 @@ -=============================================================================== -= D o b r o d o š l i u VIM p r i r u è n i k - Verzija 1.7 = -=============================================================================== - - Vim je vrlo moæan editor koji ima mnogo naredbi, previše da bi ih - se svih ovdje spomenulo. Namjena priruènika je objasniti dovoljno - naredbi kako bi poèetnici znatno lakše koristili ovaj svestran editor. - - Približno vrijeme potrebno za uspješan završetak priruènika je oko - 30 minuta a ovisi o tome koliko æe te vremena odvojiti za vježbanje. - - UPOZORENJE: - Naredbe u ovom priruèniku æe promijeniti ovaj tekst. - Napravite kopiju ove datoteke kako bi ste na istoj vježbali - (ako ste pokrenuli "vimtutor" ovo je veæ kopija). - - Vrlo je važno primijetiti da je ovaj priruènik namijenjen za vježbanje. - Preciznije, morate izvršiti naredbe u Vim-u kako bi ste iste nauèili - pravilno koristiti. Ako samo èitate tekst, zaboraviti æe te naredbe! - - Ako je CapsLock ukljuèen ISKLJUÈITE ga. Pritiskajte tipku j kako - bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.1: POMICANJE KURSORA - - - ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano ** - ^ - k Savjet: h tipka je lijevo i pomièe kursor lijevo. - < h l > l tipka je desno i pomièe kursor desno. - j j izgleda kao strelica usmjerena dolje. - v - 1. Pomièite kursor po ekranu dok se ne naviknete na korištenje. - - 2. Držite tipku (j) pritisnutom. - Sada znate kako doæi do sljedeæe lekcije. - - 3. Koristeæi tipku j prijeðite na sljedeæu lekciju 1.2. - -NAPOMENA: Ako niste sigurni što ste zapravo pritisnuli uvijek koristite - tipku kako bi prešli u Normal mod i onda pokušajte ponovno. - -NAPOMENA: Kursorske tipke rade isto. Korištenje hjkl tipaka je znatno - brže, nakon što se jednom naviknete na njihovo korištenje. Stvarno! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.2: IZLAZ IZ VIM-a - - - !! UPOZORENJE: Prije izvoðenja bilo kojeg koraka, - proèitajte cijelu lekciju!! - - 1. Pritisnite tipku (Vim je sada u Normal modu). - - 2. Otipkajte: :q! . - Izlaz iz editora, GUBE se sve napravljene promjene. - - 3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula - ovaj priruènik: vimtutor - - 4. Ako ste upamtili ove korake, izvršite ih redom od 1 do 3 - kako bi ponovno pokrenuli editor. - -NAPOMENA: :q! poništava sve promjene koje ste napravili. - U sljedeæim lekcijama nauèit æe te kako promjene saèuvati. - - 5. Pomaknite kursor na Lekciju 1.3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.3: PROMJENA TEKSTA - BRISANJE - - - ** Pritisnite x za brisanje znaka pod kursorom. ** - - 1. Pomaknite kursor na liniju oznaèenu s --->. - - 2. Kako bi ste ispravili pogreške, pomièite kursor dok se - ne bude nalazio na slovu kojeg trebate izbrisati. - - 3. Pritisnite tipku x kako bi uklonili neželjeno slovo. - - 4. Ponovite korake od 2 do 4 dok ne ispravite sve pogreške. - ----> KKKravaa jee presskoèila mmjeseccc. - - 5. Nakon što ispravite liniju, prijeðite na lekciju 1.4. - -NAPOMENA: Koristeæi ovaj priruènik ne pokušavajte pamtiti - veæ uèite primjenom. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE - - - ** Pritisnite i za ubacivanje teksta ispred kursora. ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - - 2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite - kursor na prvi znak POSLIJE kojeg æe te utipkati potreban tekst. - - 3. Pritisnite i te utipkajte potrebne nadopune. - - 4. Nakon što ispravite pogrešku pritisnite kako bi vratili Vim - u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogreške. - ----> Nedje no teka od v lin. ----> Nedostaje nešto teksta od ove linije. - - 5. Prijeðite na sljedeæu lekciju. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE - - - ** Pritisnite A za dodavanje teksta. ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - Nije važno na kojem se slovu nalazi kursor na toj liniji. - - 2. Pritisnite A i napravite potrebne promjene. - - 3. Nakon što ste dodali tekst, pritisnite - za povratak u Normal mod. - - 4. Pomaknite kursor na drugu liniju oznaèenu s ---> - i ponovite korake 2 i 3 dok ne popravite tekst. - ----> Ima nešto teksta koji nedostaje n - Ima nešto teksta koji nedostaje na ovoj liniji. ----> Ima nešto teksta koji ne - Ima nešto teksta koji nedostaje baš ovdje. - - 5. Prijeðite na lekciju 1.6. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.6: PROMJENA DATOTEKE - - - ** Koristite :wq za spremanje teksta i napuštanje Vim-a. ** - - !! UPOZORENJE: Prije izvršavanja bilo kojeg koraka, proèitajte lekciju!! - - 1. Izaðite iz programa kao sto ste napravili u lekciji 1.2: :q! - - 2. Iz ljuske utipkajte sljedeæu naredbu: vim tutor - 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju - želite ureðivati. Koristite datoteku koju imate ovlasti mijenjati. - - 3. Ubacite i izbrišite tekst kao što ste to napravili u lekcijama prije. - - 4. Saèuvajte promjenjeni tekst i izaðite iz Vim-a: :wq - - 5. Ponovno pokrenite vimtutor i nastavite èitati sažetak koji sljedi. - - 6. Nakon sto proèitate gornje korake i u potpunosti ih razumijete: - izvršite ih. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1 SAŽETAK - - - 1. Kursor se pomièe strelicama ili pomoæu hjkl tipaka. - h (lijevo) j (dolje) k (gore) l (desno) - - 2. Pokretanje Vim-a iz ljuske: vim IME_DATOTEKE - - 3. Izlaz: :q! sve promjene su izgubljene. - ILI: :wq promjene su saèuvane. - - 4. Brisanje znaka na kojem se nalazi kursor: x - - 5. Ubacivanja ili dodavanje teksta: - i utipkajte tekst unos ispred kursora - A utipkajte tekst dodavanje na kraju linije - -NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i - prekida neželjenu ili djelomièno završenu naredbu. - -Nastavite èitati Lekciju 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.1: NAREDBE BRISANJA - - - ** Tipkajte dw za brisanje rijeèi. ** - - 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. - - 2. Pomaknite kursor na liniju oznaèenu s --->. - - 3. Pomaknite kursor na poèetak rijeèi koju treba izbrisati. - - 4. Otipkajte dw kako bi uklonili rijeè. - -NAPOMENA: Vim æe prikazati slovo d na zadnjoj liniji kad ga otipkate. - Vim èeka da otipkate w . Ako je prikazano neko drugo slovo, - krivo ste otipkali; pritisnite i pokušajte ponovno. - ----> Neke rijeèi smiješno ne pripadaju na papir ovoj reèenici. - - 5. Ponovite korake 3 i 4 dok ne ispravite reèenicu; - prijeðite na Lekciju 2.2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.2: JOŠ BRISANJA - - - ** Otipkajte d$ za brisanje znakova do kraja linije. ** - - 1. Pritisnite kako bi bili - sigurni da je Vim u Normal modu. - - 2. Pomaknite kursor na liniju oznaèenu s --->. - - 3. Pomaknite kursor do kraja ispravne reèenice - (POSLJE prve . ). - - 4. Otipkajte d$ - kako bi izbrisali sve znakove do kraja linije. - ----> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. - - 5. Prijeðite na Lekciju 2.3 za bolje objašnjenje. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA - - - Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. - Oblik naredbe brisanja sa d operatorom je sljedeæi: - - d pokret - - Pri èemu je: - d - operator brisanja. - pokret - ono na èemu æe se operacija izvršavati (navedeno u nastavku). - - Kratka lista pokreta: - w - sve do poèetka sljedeæe rijeèi, NE UKLJUÈUJUÆI prvo slovo. - e - sve do kraja trenutaène rijeèi, UKLJUÈUJUÆI zadnje slovo. - $ - sve do kraje linije, UKLJUÈUJUÆI zadnje slovo. - - Tipkanjem de æe se brisati od kursora do kraja rijeèi. - -NAPOMENA: Pritiskajuæi samo pokrete dok ste u Normal modu bez operatora æe - pomicati kursor kao što je navedeno. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.4: KORIŠTENJE BROJANJA ZA POKRETE - - - ** Tipkanjem nekog broja prije pokreta, pokret se izvršava toliko puta. ** - - 1. Pomaknite kursor na liniju oznaèenu s --->. - - 2. Otipkajte 2w da pomaknete kursor dvije rijeèi naprijed. - - 3. Otipkajte 3e da pomaknete kursor na kraj treæe rijeèi naprijed. - - 4. Otipkajte 0 (nulu) da pomaknete kursor na poèetak linije. - - 5. Ponovite korake 2 i 3 s nekim drugim brojevima. - ----> Reèenica sa rijeèima po kojoj možete pomicati kursor. - - 6. Prijeðite na Lekciju 2.5. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.5: KORIŠTENJE BROJANJA ZA VEÆE BRISANJE - - - ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** - - U kombinaciji operatora brisanja i pokreta spomenutih iznad - ubacujete broj prije pokreta kako bi izbrisali više znakova: - - d broj pokret - - 1. Pomaknite kursor na prvo slovo u rijeèi sa VELIKIM SLOVIMA - oznaèenu s --->. - - 2. Otipkajte 2dw da izbrišete dvije rijeèi sa VELIKIM SLOVIMA - - 3. Ponovite korake 1 i 2 sa razlièitim brojevima da izbrišete - uzastopne rijeèi sa VELIKIM SLOVIMA sa samo jednom naredbom. - ----> ova ABCÈÆ DÐE linija FGHI JK LMN OP rijeèi je RSŠ TUVZŽ popravljena. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.6: OPERIRANJE NAD LINIJAMA - - - ** Otipkajte dd za brisanje cijele linije. ** - - Zbog uèestalosti brisanja cijelih linija, dizajneri Vi-a su odluèili da - je lakše brisati linije tipkanjem d dvaput. - - 1. Pomaknite kursor na drugu liniju u donjoj kitici. - 2. Otipkajte dd kako bi izbrisali liniju. - 3. Pomaknite kursor na èetvrtu liniju. - 4. Otipkajte 2dd kako bi izbrisali dvije linije. - ----> 1) Ruže su crvene, ----> 2) Plaža je super, ----> 3) Ljubice su plave, ----> 4) Imam auto, ----> 5) Satovi ukazuju vrijeme, ----> 6) Šeæer je sladak ----> 7) Kao i ti. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.7: NAREDBA PONIŠTENJA - - - ** Pritisnite u za poništenje zadnje naredbe, U za cijelu liniju. ** - - 1. Pomaknite kursor na liniju oznaèenu s ---> i postavite kursor na prvu - pogrešku. - 2. Otipkajte x kako bi izbrisali prvi neželjeni znak. - 3. Otipkajte u kako bi poništili zadnju izvršenu naredbu. - 4. Ovaj put ispravite sve pogreške na liniji koristeæi x naredbu. - 5. Sada utipkajte veliko U kako bi poništili sve promjene - na liniji, vraæajuæi je u prijašnje stanje. - 6. Sada utipkajte u nekoliko puta kako bi poništili U - i prijašnje naredbe. - 7. Sada utipkajte CTRL-R (držeæi CTRL tipku pritisnutom dok - ne pritisnete R) nekoliko puta kako bi vratili promjene - (poništili poništenja). - ----> Poopravite pogreške nna ovvoj liniji ii pooništiteee ih. - - 8. Vrlo korisne naredbe. Prijeðite na sažetak Lekcije 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2 SAŽETAK - - - 1. Brisanje od kursora do sljedeæe rijeèi: dw - 2. Brisanje od kursora do kraja linije: d$ - 3. Brisanje cijele linije: dd - - 4. Za ponavljanje pokreta prethodite mu broj: 2w - 5. Oblik naredbe mijenjanja: - operator [broj] pokret - gdje je: - operator - što napraviti, npr. d za brisanje - [broj] - neobavezan broj ponavljanja pokreta - pokret - kretanje po tekstu po kojem se operira, - kao što je: w (rijeè), $ (kraj linije), itd. - - 6. Postavljanje kursora na poèetak linije: 0 - - 7. Za poništenje prethodnih promjena, pritisnite: u (malo u) - Za poništenje svih promjena na liniji, pritisnite: U (veliko U) - Za vraæanja promjena, utipkajte: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.1: NAREDBA POSTAVI - - - ** p za unos prethodno izbrisanog teksta iza kursora. ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - - 2. Otipkajte dd kako bi izbrisali liniju i spremili je u Vim registar. - - 3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti. - - 4. Otipkajte p kako bi postavili liniju ispod kursora. - - 5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom - rasporedu. - ----> d) Možeš li i ti nauèiti? ----> b) Ljubice su plave, ----> c) Inteligencija je nauèena, ----> a) Ruže su crvene, - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.2: NAREDBA PROMJENE - - - ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - - 2. Pomaknite kursor tako da se nalazi na prvoj pogrešci. - - 3. Otipkajte r i nakon toga ispravan znak na tom mjestu. - - 4. Ponovite korake 2 i 3 sve dok prva - linije ne bude istovjetna drugoj. - ----> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! ----> Kada je ova linija tipkana, netko je pritiskao krive tipke! - - 5. Prijeðite na Lekciju 3.2. - -NAPOMENA: Prisjetite da trebate uèiti vježbanjem, ne pamæenjem. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.3: OPERATOR MIJENJANJA - - - ** Za mijenjanje do kraja rijeèi, istipkajte ce . ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - - 2. Postavite kursor na a u lackmb. - - 3. Otipkajte ce i ispravite rijeè (u ovom sluèaju otipkajte inija ). - - 4. Pritisnite i pomaknite kursor na sljedeæi znak - kojeg je potrebno ispraviti. - - 5. Ponovite korake 3 i 4 sve dok prva reèenica ne postane istovjetna - drugoj. - ----> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz. ----> Ova linija ima nekoliko rijeèi koje treba mijenjati. - -Primijetite da ce briše rijeè i postavlja Vim u Insert mod. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.4: JOŠ MIJENJANJA KORIŠTENJEM c - - - ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** - - 1. Operator mijenjanja se koristi na isti naèin kao i operator brisanja: - - c [broj] pokret - - 2. Pokreti su isti, npr: w (rijeè) i $ (kraj linije). - - 3. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - - 4. Pomaknite kursor na prvu pogrešku. - - 5. Otipkajte c$ i utipkajte ostatak linije tako da bude istovjetna - drugoj te pritisnite . - ----> Kraj ove linije treba pomoæ tako da izgleda kao linija ispod. ----> Kraj ove linije treba ispraviti korištenjem c$ naredbe. - -NAPOMENA: Možete koristiti Backspace za ispravljanje grešaka. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3 SAŽETAK - - - 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo - postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se - postavlja na liniju ispod kursora). - - 2. Za promjenu znaka na kojem se nalazi kursor, pritisnite r i nakon toga - željeni znak. - - 3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do - koje dovede pokret. tj. Otipkajte ce za mijenjanje od kursora do kraja - rijeèi, c$ za mijenjanje od kursora do kraja linije. - - 4. Oblik naredbe mijenjanja: - - c [broj] pokret - -Prijeðite na sljedeæu lekciju. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE - - ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. - Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** - -NAPOMENA: Proèitajte cijelu lekciju prije izvršenja bilo kojeg koraka!! - - 1. Držite Ctrl tipku pritisnutom i pritisnite g . Ukratko: CTRL-G. - Vim æe ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom - kursora u datoteci. Zapamtite broj linije za 3. korak. - -NAPOMENA: Možete vidjeti poziciju kursora u donjem desnom kutu ako - je postavka 'ruler' aktivirana (objašnjeno u 6. lekciji). - - 2. Pritisnite G za pomicanje kursora na kraj datoteke. - Otipkajte gg za pomicanje kursora na poèetak datoteke. - - 3. Otipkajte broj linije na kojoj ste bili maloprije i zatim G . Kursor - æe se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G. - - 4. Ako ste spremni, izvršite korake od 1 do 3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.2: NAREDBE TRAŽENJA - - ** Otipkajte / i nakon toga izraz kojeg želite tražiti. ** - - 1. U Normal modu otipkajte / znak. Primijetite da se znak - pojavio zajedno sa kursorom na dnu ekrana kao kod : naredbe. - - 2. Sada otipkajte 'grrrreška' . To je rijeè koju zapravo tražite. - - 3. Za ponovno traženje istog izraza, otipkajte n . - Za traženje istog izraza ali u suprotnom smjeru, otipkajte N . - - 4. Za traženje izraza unatrag, koristite ? umjesto / . - - 5. Za povratak na prethodnu poziciju koristite CTRL-O (držite Ctrl - pritisnutim dok ne pritisnete tipku o). Ponavljajte sve dok se ne - vratite na poèetak. CTRL-I slièno kao CTRL-O ali u suprotnom smjeru. - ----> "pogrrrreška" je pogrešno; umjesto pogrrrreška treba stajati pogreška. - -NAPOMENA: Ako se traženjem doðe do kraja datoteke nastavit æe se od njenog - poèetka osim ako je postavka 'wrapscan' deaktivirana. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.3: TRAŽENJE PRIPADAJUÆE ZAGRADE - - - ** Otipkajte % za pronalazak pripadajuæe ), ] ili } . ** - - 1. Postavite kursor na bilo koju od ( , [ ili { - otvorenih zagrada u liniji oznaèenoj s --->. - - 2. Otipkajte znak % . - - 3. Kursor æe se pomaknuti na pripadajuæu zatvorenu zagradu. - - 4. Otipkajte % kako bi pomakli kursor na drugu pripadajuæu zagradu. - - 5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite % naredbu. - ----> Linija ( testiranja obiènih ( [ uglatih ] i { vitièastih } zagrada.)) - - -NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajuæim zagradama! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.4: NAREDBE ZAMIJENE - - - ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** - - 1. Pomaknite kursor na liniju oznaèenu s --->. - - 2. Otipkajte :s/cvræè/cvrè . Primjetite da ova naredba zamjenjuje - samo prvi "cvræè" u liniji. - - 3. Otipkajte :s/cvræè/cvrè/g . Dodavanje g stavke znaèi da æe se naredba - izvršiti na cijeloj liniji, zamjenjivanjem svih "cvræè" u liniji. - ----> i cvræèi cvræèi cvræèak na èvoru crne smrèe. - - 4. Za zamjenu svih izraza u rasponu dviju linija, - otipkajte :#,#s/staro/novo/g #,# su brojevi linije datoteke na kojima - te izmeðu njih æe se izvršiti zamjena. - Otipkajte :%s/staro/novo/g za zamjenu svih izraza u cijeloj datoteci. - Otipkajte :%s/staro/novo/gc za pronalazak svakog izraza u datoteci i - potvrdu zamjene. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4 SAŽETAK - - - 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. - G postavlja kursor na zadnju liniju datoteke. - broj G postavlja kursor na broj liniju. - gg postavlja kursor na prvu liniju. - - 2. Tipkanje / sa izrazom traži UNAPRIJED taj izraz. - Tipkanje ? sa izrazom traži UNATRAG taj izraz. - Nakon naredbe traženja koristite n za pronalazak izraza u istom - smjeru, i N za pronalazak istog izraza ali u suprotnom smjeru. - CTRL-O vraæa kursor na prethodnu poziciju, CTRL-I na sljedeæu poziciju. - - 3. Tipkanje % dok je kursor na zagradi pomièe ga na pripadajuæu zagradu. - - 4. Za zamjenu prvog izraza staro za izraz novo :s/staro/novo - Za zamjenu svih izraza staro na cijeloj liniji :s/staro/novo/g - Za zamjenu svih izraza staro u rasponu linija #,# :#,#s/staro/novo/g - Za zamjenu u cijeloj datoteci :%s/staro/novo/g - Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.1: IZVRŠAVANJE VANJSKIH NAREDBI - - - ** Otipkajte :! sa vanjskom naredbom koju želite izvršiti. ** - - 1. Otipkajte poznatu naredbu : kako bi kursor premjestili na dno - ekrana. Time omoguæavate unos naredbe u naredbenoj liniji. - - 2. Otipkajte znak ! (uskliènik). Tako omoguæavate - izvršavanje naredbe vanjske ljuske. - - 3. Kao primjer otipkajte ls nakon ! te pritisnite . - Ovo æe prikazati sadržaj direktorija, kao da ste u ljusci. - Koristite :!dir ako :!ls ne radi. - -NAPOMENA: Moguæe je izvršavati bilo koju vanjsku naredbu na ovaj naèin, - zajedno sa njenim argumentima. - -NAPOMENA: Sve : naredbe se izvršavaju nakon što pritisnete - U daljnjem tekstu to neæe uvijek biti napomenuto. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.2: VIŠE O SPREMANJU DATOTEKA - - ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** - - 1. Otipkajte :!dir ili :!ls za pregled direktorija. - Veæ znate da morate pritisnuti na kraju tipkanja. - - 2. Izaberite ime datoteke koja još ne postoji, npr. TEST. - - 3. Otipkajte: :w TEST (gdje je TEST ime koje ste prethodno odabrali.) - - 4. Time æe te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST. - Za provjeru, otipkajte ponovno :!dir ili :!ls - za pregled direktorija. - -NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , - datoteka bi bila potpuna kopija ove datoteke u trenutku - kada ste je spremili. - - 5. Izbrišite datoteku tako da otipkate (MS-DOS): :!del TEST - ili (Unix): :!rm TEST - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.3: SPREMANJE OZNAÈENOG TEKSTA - - - ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** - - 1. Pomaknite kursor na ovu liniju. - - 2. Pritisnite v i pomaknite kursor pet linija ispod ove. - Primijetite promjenu, oznaèeni tekst se razlikuje od obiènog. - - 3. Pritisnite : znak. Na dnu ekrana pojavit æe se :'<,'> . - - 4. Otipkajte w TEST , pritom je TEST ime datoteke koja još ne postoji. - Provjerite da zaista piše :'<,'>w TEST - prije nego što pritisnite . - - 5. Vim æe spremiti oznaèeni tekst u TEST. Provjerite sa :!dir ili !ls . - Nemojte je još brisati! Koristiti æe te je u sljedeæoj lekciji. - -NAPOMENA: Tipka v zapoèinje Vizualno oznaèavanje. Možete pomicati kursor - unaokolo kako bi mijenjali velièinu oznaèenog teksta. Možete - koristiti i operatore. Npr, d æe izbrisati oznaèeni tekst. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.4: UÈITAVANJE DATOTEKA - - - ** Za ubacivanje sadržaja datoteke, otipkajte :r IME_DATOTEKE ** - - 1. Postavite kursor iznad ove linije. - -NAPOMENA: Nakon što izvršite 2. korak vidjeti æe te tekst iz Lekcije 5.3. - Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. - - 2. Uèitajte vašu TEST datoteku koristeæi naredbu :r TEST - gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji. - Sadržaj uèitane datoteke je ubaèen liniju ispod kursora. - - 3. Kako bi provjerili da je datoteka uèitana, vratite kursor unatrag i - primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. - -NAPOMENA: Možete takoðer uèitati ispis vanjske naredbe. Npr, :r !ls - æe uèitati ispis ls naredbe i postaviti ispis liniju ispod - kursora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5 SAŽETAK - - - 1. :!naredba izvršava vanjsku naredbu. - - Korisni primjeri: - (MS-DOS) (Unix) - :!dir :!ls - pregled direktorija. - :!del DATOTEKA :!rm DATOTEKA - briše datoteku DATOTEKA. - - 2. :w DATOTEKA zapisuje trenutaènu datoteku na disk sa imenom DATOTEKA. - - 3. v pokret :w IME_DATOTEKE sprema vizualno oznaèene linije u - datoteku IME_DATOTEKE. - - 4. :r IME_DATOTEKE uèitava datoteku IME_DATOTEKE sa diska i stavlja - njen sadržaj liniju ispod kursora. - - 5. :r !dir uèitava ispis naredbe dir i postavlja sadržaj ispisa liniju - ispod kursora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.1: NAREDBA OTVORI - - - ** Pritisnite o kako bi otvorili liniju ispod kursora - i prešli u Insert mod. ** - - 1. Pomaknite kursor na sljedeæu liniju oznaèenu s --->. - - 2. Otipkajte malo o kako bi otvorili novu liniju ISPOD kursora - i prešli u Insert mod. - - 3. Otipkajte nešto teksta i nakon toga pritisnite - kako bi napustili Insert mod. - ----> Nakon što pritisnete o kursor æe preæi u novu liniju u Insert mod. - - 4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O , - Pokušajte na donjoj liniji oznaèenoj s --->. - ----> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.2: NAREDBA DODAJ - - - ** Otipkajte a za dodavanje teksta IZA kursora. ** - - 1. Pomaknite kursor na poèetak sljedeæe linije oznaèene s --->. - - 2. Tipkajte e dok se kursor ne nalazi na kraju li . - - 3. Otipkajte a (malo) kako bi dodali tekst IZA kursora. - - 4. Dopunite rijeè kao što je na liniji ispod. - Pritisnite za izlaz iz Insert moda. - - 5. Sa e prijeðite na sljedeæu nepotpunu rijeè i ponovite korake 3 i 4. - ----> Ova li omoguæava vje dodav teksta nekoj liniji. ----> Ova linija omoguæava vježbanje dodavanja teksta nekoj liniji. - -NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina - razlika je u poziciji od koje æe se tekst ubacivati. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.3: DRUGI NAÈIN MIJENJANJA - - - ** Otipkajte veliko R kako bi zamijelili više od jednog znaka. ** - - 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. - Pomaknite kursor na poèetak prvog xxx . - - 2. Pritisnite R i otipkajte broj koji je liniju ispod, - tako da zamijeni xxx . - - 3. Pritisnite za izlaz iz Replace moda. - Primijetite da je ostatak linije ostao nepromjenjen. - - 5. Ponovite korake kako bi zamijenili preostali xxx. - ----> Zbrajanje: 123 plus xxx je xxx. ----> Zbrajanje: 123 plus 456 je 579. - -NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, - svaki otipkani znak briše veæ postojeæi. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA - - - ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** - - 1. Pomaknite kursor na liniju s ---> i postavite kursor nakon "a)". - - 2. Pokrenite Visual mod sa v i pomaknite kursor sve do ispred "prva". - - 3. Pritisnite y kako bi kopirali oznaèeni tekst. - - 4. Pomaknite kursor do kraja sljedeæe linije: j$ - - 5. Pritisnite p kako bi zalijepili tekst. Onda utipkajte: druga . - - 6. Koristite Visual mod kako bi oznaèili " linija.", kopirajte: y , kursor - postavite na kraj sljedeæe linije: j$ i ondje zalijepite tekst: p . - ----> a) ovo je prva linija. - b) - -NAPOMENA: možete koristiti y kao operator; yw kopira jednu rijeè. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.5: MIJENJANJE POSTAVKI - - - ** Postavka: naredbe traženja i zamijene ne razlikuju VELIKA i mala slova ** - - 1. Potražite 'razlika' tipkanjem: /razlika - Nekoliko puta ponovite pritiskanjem n . - - 2. Aktivirajte 'ic' (Ignore case) postavku: :set ic - - 3. Ponovno potražite 'razlika' tipkanjem n - Primijetite da su sada i RAZLIKA i Razlika pronaðeni. - - 4. Aktivirajte 'hlsearch' i 'incsearch' postavke: :set hls is - - 5. Otipkajte naredbu traženja i primijetite razlike: /razlika - - 6. Za deaktiviranje ic postavke koristite: :set noic - -NAPOMENA: Za neoznaèavanje pronaðenih izraza otipkajte: :nohlsearch -NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi - koristite \c u izrazu: /razlika\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6 SAŽETAK - - 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. - Pritisnite O za otvaranje linije IZNAD kursora. - - 2. Pritisnite a za unos teksta IZA kursora. - Pritisnite A za unos teksta na kraju linije. - - 3. Naredba e pomièe kursor na kraj rijeèi. - - 4. Operator y kopira tekst, p ga lijepi. - - 5. Tipkanjem velikog R Vim prelazi u Replace mod dok ne pritisnete . - - 6. Tipkanjem ":set xxx" aktivira postavku "xxx". Neke postavke su: - 'ic' 'ignorecase' ne razlikuje velika/mala slova pri traženju - 'is' 'incsearch' traži nedovršene izraze - 'hls' 'hlsearch' oznaèi sve pronaðene izraze - Možete koristite dugo ili kratko ime postavke. - - 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.1: DOBIVANJE POMOÆI - - - ** Koristite on-line sustav pomoæi ** - - Vim ima detaljan on-line sustav pomoæi. - Za poèetak, pokušajte jedno od sljedeæeg: - - pritisnite tipku (ako je vaša tipkovnica ima) - - pritisnite tipku (ako je vaša tipkovnica ima) - - utipkajte :help - - Proèitajte tekst u prozoru pomoæi kako bi ste se znali služiti istom. - Tipkanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. - Otipkajte :q kako bi zatvorili prozor pomoæi. - - Pronaæi æe te pomoæ o bilo kojoj temi, tako da dodate upit samoj - ":help" naredbi. Pokušajte (ne zaboravite pritisnuti ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.2: PRAVLJENJE SKRIPTE - - - ** Aktivirajte Vim moguænosti ** - - Vim ima mnogo više alata od Vi-ja, ali veæina njih nije aktivirana. - Kako bi mogli koristiti više moguænosti napravite "vimrc" datoteku. - - 1. Uredite "vimrc" datoteku. Ovo ovisi o vašem sistemu: - :e ~/.vimrc za Unix - :e $VIM/_vimrc za MS-Windows - - 2. Sada uèitajte primjer sadržaja "vimrc" datoteke: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Saèuvajte datoteku sa: - :w - - Sljedeæeg puta kada pokrenete Vim, bojanje sintakse teksta biti æe - aktivirano. Sve vaše postavke možete dodati u "vimrc" datoteku. - Za više informacija otipkajte :help vimrc-intro - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.3: AUTOMATSKO DOVRŠAVANJE - - - ** Dovršavanje iz naredbene linije pomoæu CTRL-D i ** - - 1. Provjerite da Vim nije u Vi modu: :set nocp - - 2. Pogledajte koje datoteke postoje u direktoriju: :!ls or :!dir - - 3. Otipkajte poèetak naredbe: :e - - 4. Tipkajte CTRL-D i prikazati æe se lista naredbi koje zapoèinju sa "e". - - 5. Pritisnite i Vim æe dopuniti unos u naredbu ":edit". - - 6. Dodajte razmak i poèetak datoteke: :edit FIL - - 7. Pritisnite . Vim æe nadopuniti ime datoteke (ako je jedinstveno). - -NAPOMENA: Moguæe je dopuniti mnoge naredbe. Koristite CTRL-D i . - Naroèito je korisno za :help naredbe. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7 SAŽETAK - - - 1. Otipkajte :help ili pritisnite ili za pomoæ. - - 2. Otipkajte :help naredba kako bi dobili pomoæ za naredba . - - 3. Otipkajte CTRL-W CTRL-W za prelazak u drugi prozor - - 4. Otipkajte :q kako bi zatvorili prozor pomoæi - - 5. Napravite vimrc skriptu za podizanje kako bi u nju spremali - vaše omiljene postavke. - - 6. Kada tipkate naredbu koja zapoèinje sa : - pritisnite CTRL-D kako bi vidjeli moguæe valjane vrijednosti. - Pritisnite kako bi odabrali jednu od njih. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Kraj. Cilj priruènika je da pokaže kratak pregled Vim editora, tek toliko - da omoguæi njegovo korištenje. Priruènik nije potpun jer Vim ima mnogo više - naredbi. Za više informacija: ":help user-manual". - - Za èitanje i korištenje, preporuèamo: - Vim - Vi Improved - by Steve Oualline - Izdavaè: New Riders - Prva knjiga potpuno posveæena Vim-u. Vrlo korisna za poèetnike. - Sa mnogo primjera i slika. - Posjetite http://iccf-holland.org/click5.html - - Sljedeæa knjiga je nešto starija i više o Vi-u nego o Vim-u, preporuèamo: - Learning the Vi Editor - by Linda Lamb - Izdavaè: O'Reilly & Associates Inc. - Solidna knjiga, možete saznati skoro sve što možete napraviti - u Vi-u. Šesto izdanje ima nešto informacija i o Vim-u. - - Ovaj priruènik su napisali: Michael C. Pierce i Robert K. Ware, - Colorado School of Mines koristeæi ideje Charles Smith, - Colorado State University. E-pošta: bware@mines.colorado.edu. - - Naknadne promjene napravio je Bram Moolenaar. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Preveo na hrvatski: Paul B. Mahol - Preinaka 1.42, Lipanj 2008 - - diff --git a/share/vim/vim73/tutor/tutor.hr.utf-8 b/share/vim/vim73/tutor/tutor.hr.utf-8 deleted file mode 100644 index 396bdfeb..00000000 --- a/share/vim/vim73/tutor/tutor.hr.utf-8 +++ /dev/null @@ -1,972 +0,0 @@ -=============================================================================== -= D o b r o d o š l i u VIM p r i r u č n i k - Verzija 1.7 = -=============================================================================== - - Vim je vrlo moćan editor koji ima mnogo naredbi, previše da bi ih - se svih ovdje spomenulo. Namjena priručnika je objasniti dovoljno - naredbi kako bi početnici znatno lakše koristili ovaj svestran editor. - - Približno vrijeme potrebno za uspješan završetak priručnika je oko - 30 minuta a ovisi o tome koliko će te vremena odvojiti za vježbanje. - - UPOZORENJE: - Naredbe u ovom priručniku će promijeniti ovaj tekst. - Napravite kopiju ove datoteke kako bi ste na istoj vježbali - (ako ste pokrenuli "vimtutor" ovo je već kopija). - - Vrlo je važno primijetiti da je ovaj priručnik namijenjen za vježbanje. - Preciznije, morate izvršiti naredbe u Vim-u kako bi ste iste naučili - pravilno koristiti. Ako samo čitate tekst, zaboraviti će te naredbe! - - Ako je CapsLock uključen ISKLJUČITE ga. Pritiskajte tipku j kako - bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.1: POMICANJE KURSORA - - - ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano ** - ^ - k Savjet: h tipka je lijevo i pomiče kursor lijevo. - < h l > l tipka je desno i pomiče kursor desno. - j j izgleda kao strelica usmjerena dolje. - v - 1. Pomičite kursor po ekranu dok se ne naviknete na korištenje. - - 2. Držite tipku (j) pritisnutom. - Sada znate kako doći do sljedeće lekcije. - - 3. Koristeći tipku j prijeđite na sljedeću lekciju 1.2. - -NAPOMENA: Ako niste sigurni što ste zapravo pritisnuli uvijek koristite - tipku kako bi prešli u Normal mod i onda pokušajte ponovno. - -NAPOMENA: Kursorske tipke rade isto. Korištenje hjkl tipaka je znatno - brže, nakon što se jednom naviknete na njihovo korištenje. Stvarno! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.2: IZLAZ IZ VIM-a - - - !! UPOZORENJE: Prije izvođenja bilo kojeg koraka, - pročitajte cijelu lekciju!! - - 1. Pritisnite tipku (Vim je sada u Normal modu). - - 2. Otipkajte: :q! . - Izlaz iz editora, GUBE se sve napravljene promjene. - - 3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula - ovaj priručnik: vimtutor - - 4. Ako ste upamtili ove korake, izvršite ih redom od 1 do 3 - kako bi ponovno pokrenuli editor. - -NAPOMENA: :q! poništava sve promjene koje ste napravili. - U sljedećim lekcijama naučit će te kako promjene sačuvati. - - 5. Pomaknite kursor na Lekciju 1.3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.3: PROMJENA TEKSTA - BRISANJE - - - ** Pritisnite x za brisanje znaka pod kursorom. ** - - 1. Pomaknite kursor na liniju označenu s --->. - - 2. Kako bi ste ispravili pogreške, pomičite kursor dok se - ne bude nalazio na slovu kojeg trebate izbrisati. - - 3. Pritisnite tipku x kako bi uklonili neželjeno slovo. - - 4. Ponovite korake od 2 do 4 dok ne ispravite sve pogreške. - ----> KKKravaa jee presskočila mmjeseccc. - - 5. Nakon što ispravite liniju, prijeđite na lekciju 1.4. - -NAPOMENA: Koristeći ovaj priručnik ne pokušavajte pamtiti - već učite primjenom. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE - - - ** Pritisnite i za ubacivanje teksta ispred kursora. ** - - 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. - - 2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite - kursor na prvi znak POSLIJE kojeg će te utipkati potreban tekst. - - 3. Pritisnite i te utipkajte potrebne nadopune. - - 4. Nakon što ispravite pogrešku pritisnite kako bi vratili Vim - u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogreške. - ----> Nedje no teka od v lin. ----> Nedostaje nešto teksta od ove linije. - - 5. Prijeđite na sljedeću lekciju. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE - - - ** Pritisnite A za dodavanje teksta. ** - - 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. - Nije važno na kojem se slovu nalazi kursor na toj liniji. - - 2. Pritisnite A i napravite potrebne promjene. - - 3. Nakon što ste dodali tekst, pritisnite - za povratak u Normal mod. - - 4. Pomaknite kursor na drugu liniju označenu s ---> - i ponovite korake 2 i 3 dok ne popravite tekst. - ----> Ima nešto teksta koji nedostaje n - Ima nešto teksta koji nedostaje na ovoj liniji. ----> Ima nešto teksta koji ne - Ima nešto teksta koji nedostaje baš ovdje. - - 5. Prijeđite na lekciju 1.6. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1.6: PROMJENA DATOTEKE - - - ** Koristite :wq za spremanje teksta i napuštanje Vim-a. ** - - !! UPOZORENJE: Prije izvršavanja bilo kojeg koraka, pročitajte lekciju!! - - 1. Izađite iz programa kao sto ste napravili u lekciji 1.2: :q! - - 2. Iz ljuske utipkajte sljedeću naredbu: vim tutor - 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju - želite uređivati. Koristite datoteku koju imate ovlasti mijenjati. - - 3. Ubacite i izbrišite tekst kao što ste to napravili u lekcijama prije. - - 4. Sačuvajte promjenjeni tekst i izađite iz Vim-a: :wq - - 5. Ponovno pokrenite vimtutor i nastavite čitati sažetak koji sljedi. - - 6. Nakon sto pročitate gornje korake i u potpunosti ih razumijete: - izvršite ih. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 1 SAŽETAK - - - 1. Kursor se pomiče strelicama ili pomoću hjkl tipaka. - h (lijevo) j (dolje) k (gore) l (desno) - - 2. Pokretanje Vim-a iz ljuske: vim IME_DATOTEKE - - 3. Izlaz: :q! sve promjene su izgubljene. - ILI: :wq promjene su sačuvane. - - 4. Brisanje znaka na kojem se nalazi kursor: x - - 5. Ubacivanja ili dodavanje teksta: - i utipkajte tekst unos ispred kursora - A utipkajte tekst dodavanje na kraju linije - -NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i - prekida neželjenu ili djelomično završenu naredbu. - -Nastavite čitati Lekciju 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.1: NAREDBE BRISANJA - - - ** Tipkajte dw za brisanje riječi. ** - - 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. - - 2. Pomaknite kursor na liniju označenu s --->. - - 3. Pomaknite kursor na početak riječi koju treba izbrisati. - - 4. Otipkajte dw kako bi uklonili riječ. - -NAPOMENA: Vim će prikazati slovo d na zadnjoj liniji kad ga otipkate. - Vim čeka da otipkate w . Ako je prikazano neko drugo slovo, - krivo ste otipkali; pritisnite i pokušajte ponovno. - ----> Neke riječi smiješno ne pripadaju na papir ovoj rečenici. - - 5. Ponovite korake 3 i 4 dok ne ispravite rečenicu; - prijeđite na Lekciju 2.2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.2: JOŠ BRISANJA - - - ** Otipkajte d$ za brisanje znakova do kraja linije. ** - - 1. Pritisnite kako bi bili - sigurni da je Vim u Normal modu. - - 2. Pomaknite kursor na liniju označenu s --->. - - 3. Pomaknite kursor do kraja ispravne rečenice - (POSLJE prve . ). - - 4. Otipkajte d$ - kako bi izbrisali sve znakove do kraja linije. - ----> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. - - 5. Prijeđite na Lekciju 2.3 za bolje objašnjenje. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA - - - Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. - Oblik naredbe brisanja sa d operatorom je sljedeći: - - d pokret - - Pri čemu je: - d - operator brisanja. - pokret - ono na čemu će se operacija izvršavati (navedeno u nastavku). - - Kratka lista pokreta: - w - sve do početka sljedeće riječi, NE UKLJUČUJUĆI prvo slovo. - e - sve do kraja trenutačne riječi, UKLJUČUJUĆI zadnje slovo. - $ - sve do kraje linije, UKLJUČUJUĆI zadnje slovo. - - Tipkanjem de će se brisati od kursora do kraja riječi. - -NAPOMENA: Pritiskajući samo pokrete dok ste u Normal modu bez operatora će - pomicati kursor kao što je navedeno. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.4: KORIŠTENJE BROJANJA ZA POKRETE - - - ** Tipkanjem nekog broja prije pokreta, pokret se izvršava toliko puta. ** - - 1. Pomaknite kursor na liniju označenu s --->. - - 2. Otipkajte 2w da pomaknete kursor dvije riječi naprijed. - - 3. Otipkajte 3e da pomaknete kursor na kraj treće riječi naprijed. - - 4. Otipkajte 0 (nulu) da pomaknete kursor na početak linije. - - 5. Ponovite korake 2 i 3 s nekim drugim brojevima. - ----> Rečenica sa riječima po kojoj možete pomicati kursor. - - 6. Prijeđite na Lekciju 2.5. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.5: KORIŠTENJE BROJANJA ZA VEĆE BRISANJE - - - ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** - - U kombinaciji operatora brisanja i pokreta spomenutih iznad - ubacujete broj prije pokreta kako bi izbrisali više znakova: - - d broj pokret - - 1. Pomaknite kursor na prvo slovo u riječi sa VELIKIM SLOVIMA - označenu s --->. - - 2. Otipkajte 2dw da izbrišete dvije riječi sa VELIKIM SLOVIMA - - 3. Ponovite korake 1 i 2 sa različitim brojevima da izbrišete - uzastopne riječi sa VELIKIM SLOVIMA sa samo jednom naredbom. - ----> ova ABCČĆ DĐE linija FGHI JK LMN OP riječi je RSŠ TUVZŽ popravljena. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.6: OPERIRANJE NAD LINIJAMA - - - ** Otipkajte dd za brisanje cijele linije. ** - - Zbog učestalosti brisanja cijelih linija, dizajneri Vi-a su odlučili da - je lakše brisati linije tipkanjem d dvaput. - - 1. Pomaknite kursor na drugu liniju u donjoj kitici. - 2. Otipkajte dd kako bi izbrisali liniju. - 3. Pomaknite kursor na četvrtu liniju. - 4. Otipkajte 2dd kako bi izbrisali dvije linije. - ----> 1) Ruže su crvene, ----> 2) Plaža je super, ----> 3) Ljubice su plave, ----> 4) Imam auto, ----> 5) Satovi ukazuju vrijeme, ----> 6) Šećer je sladak ----> 7) Kao i ti. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2.7: NAREDBA PONIŠTENJA - - - ** Pritisnite u za poništenje zadnje naredbe, U za cijelu liniju. ** - - 1. Pomaknite kursor na liniju označenu s ---> i postavite kursor na prvu - pogrešku. - 2. Otipkajte x kako bi izbrisali prvi neželjeni znak. - 3. Otipkajte u kako bi poništili zadnju izvršenu naredbu. - 4. Ovaj put ispravite sve pogreške na liniji koristeći x naredbu. - 5. Sada utipkajte veliko U kako bi poništili sve promjene - na liniji, vraćajući je u prijašnje stanje. - 6. Sada utipkajte u nekoliko puta kako bi poništili U - i prijašnje naredbe. - 7. Sada utipkajte CTRL-R (držeći CTRL tipku pritisnutom dok - ne pritisnete R) nekoliko puta kako bi vratili promjene - (poništili poništenja). - ----> Poopravite pogreške nna ovvoj liniji ii pooništiteee ih. - - 8. Vrlo korisne naredbe. Prijeđite na sažetak Lekcije 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 2 SAŽETAK - - - 1. Brisanje od kursora do sljedeće riječi: dw - 2. Brisanje od kursora do kraja linije: d$ - 3. Brisanje cijele linije: dd - - 4. Za ponavljanje pokreta prethodite mu broj: 2w - 5. Oblik naredbe mijenjanja: - operator [broj] pokret - gdje je: - operator - što napraviti, npr. d za brisanje - [broj] - neobavezan broj ponavljanja pokreta - pokret - kretanje po tekstu po kojem se operira, - kao što je: w (riječ), $ (kraj linije), itd. - - 6. Postavljanje kursora na početak linije: 0 - - 7. Za poništenje prethodnih promjena, pritisnite: u (malo u) - Za poništenje svih promjena na liniji, pritisnite: U (veliko U) - Za vraćanja promjena, utipkajte: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.1: NAREDBA POSTAVI - - - ** p za unos prethodno izbrisanog teksta iza kursora. ** - - 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. - - 2. Otipkajte dd kako bi izbrisali liniju i spremili je u Vim registar. - - 3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti. - - 4. Otipkajte p kako bi postavili liniju ispod kursora. - - 5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom - rasporedu. - ----> d) Možeš li i ti naučiti? ----> b) Ljubice su plave, ----> c) Inteligencija je naučena, ----> a) Ruže su crvene, - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.2: NAREDBA PROMJENE - - - ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** - - 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. - - 2. Pomaknite kursor tako da se nalazi na prvoj pogrešci. - - 3. Otipkajte r i nakon toga ispravan znak na tom mjestu. - - 4. Ponovite korake 2 i 3 sve dok prva - linije ne bude istovjetna drugoj. - ----> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! ----> Kada je ova linija tipkana, netko je pritiskao krive tipke! - - 5. Prijeđite na Lekciju 3.2. - -NAPOMENA: Prisjetite da trebate učiti vježbanjem, ne pamćenjem. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.3: OPERATOR MIJENJANJA - - - ** Za mijenjanje do kraja riječi, istipkajte ce . ** - - 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. - - 2. Postavite kursor na a u lackmb. - - 3. Otipkajte ce i ispravite riječ (u ovom slučaju otipkajte inija ). - - 4. Pritisnite i pomaknite kursor na sljedeći znak - kojeg je potrebno ispraviti. - - 5. Ponovite korake 3 i 4 sve dok prva rečenica ne postane istovjetna - drugoj. - ----> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz. ----> Ova linija ima nekoliko riječi koje treba mijenjati. - -Primijetite da ce briše riječ i postavlja Vim u Insert mod. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3.4: JOŠ MIJENJANJA KORIŠTENJEM c - - - ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** - - 1. Operator mijenjanja se koristi na isti način kao i operator brisanja: - - c [broj] pokret - - 2. Pokreti su isti, npr: w (riječ) i $ (kraj linije). - - 3. Pomaknite kursor na prvu sljedeću liniju označenu s --->. - - 4. Pomaknite kursor na prvu pogrešku. - - 5. Otipkajte c$ i utipkajte ostatak linije tako da bude istovjetna - drugoj te pritisnite . - ----> Kraj ove linije treba pomoć tako da izgleda kao linija ispod. ----> Kraj ove linije treba ispraviti korištenjem c$ naredbe. - -NAPOMENA: Možete koristiti Backspace za ispravljanje grešaka. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 3 SAŽETAK - - - 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo - postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se - postavlja na liniju ispod kursora). - - 2. Za promjenu znaka na kojem se nalazi kursor, pritisnite r i nakon toga - željeni znak. - - 3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do - koje dovede pokret. tj. Otipkajte ce za mijenjanje od kursora do kraja - riječi, c$ za mijenjanje od kursora do kraja linije. - - 4. Oblik naredbe mijenjanja: - - c [broj] pokret - -Prijeđite na sljedeću lekciju. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE - - ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. - Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** - -NAPOMENA: Pročitajte cijelu lekciju prije izvršenja bilo kojeg koraka!! - - 1. Držite Ctrl tipku pritisnutom i pritisnite g . Ukratko: CTRL-G. - Vim će ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom - kursora u datoteci. Zapamtite broj linije za 3. korak. - -NAPOMENA: Možete vidjeti poziciju kursora u donjem desnom kutu ako - je postavka 'ruler' aktivirana (objašnjeno u 6. lekciji). - - 2. Pritisnite G za pomicanje kursora na kraj datoteke. - Otipkajte gg za pomicanje kursora na početak datoteke. - - 3. Otipkajte broj linije na kojoj ste bili maloprije i zatim G . Kursor - će se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G. - - 4. Ako ste spremni, izvršite korake od 1 do 3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.2: NAREDBE TRAŽENJA - - ** Otipkajte / i nakon toga izraz kojeg želite tražiti. ** - - 1. U Normal modu otipkajte / znak. Primijetite da se znak - pojavio zajedno sa kursorom na dnu ekrana kao kod : naredbe. - - 2. Sada otipkajte 'grrrreška' . To je riječ koju zapravo tražite. - - 3. Za ponovno traženje istog izraza, otipkajte n . - Za traženje istog izraza ali u suprotnom smjeru, otipkajte N . - - 4. Za traženje izraza unatrag, koristite ? umjesto / . - - 5. Za povratak na prethodnu poziciju koristite CTRL-O (držite Ctrl - pritisnutim dok ne pritisnete tipku o). Ponavljajte sve dok se ne - vratite na početak. CTRL-I slično kao CTRL-O ali u suprotnom smjeru. - ----> "pogrrrreška" je pogrešno; umjesto pogrrrreška treba stajati pogreška. - -NAPOMENA: Ako se traženjem dođe do kraja datoteke nastavit će se od njenog - početka osim ako je postavka 'wrapscan' deaktivirana. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.3: TRAŽENJE PRIPADAJUĆE ZAGRADE - - - ** Otipkajte % za pronalazak pripadajuće ), ] ili } . ** - - 1. Postavite kursor na bilo koju od ( , [ ili { - otvorenih zagrada u liniji označenoj s --->. - - 2. Otipkajte znak % . - - 3. Kursor će se pomaknuti na pripadajuću zatvorenu zagradu. - - 4. Otipkajte % kako bi pomakli kursor na drugu pripadajuću zagradu. - - 5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite % naredbu. - ----> Linija ( testiranja običnih ( [ uglatih ] i { vitičastih } zagrada.)) - - -NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajućim zagradama! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4.4: NAREDBE ZAMIJENE - - - ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** - - 1. Pomaknite kursor na liniju označenu s --->. - - 2. Otipkajte :s/cvrćč/cvrč . Primjetite da ova naredba zamjenjuje - samo prvi "cvrćč" u liniji. - - 3. Otipkajte :s/cvrćč/cvrč/g . Dodavanje g stavke znači da će se naredba - izvršiti na cijeloj liniji, zamjenjivanjem svih "cvrćč" u liniji. - ----> i cvrćči cvrćči cvrćčak na čvoru crne smrče. - - 4. Za zamjenu svih izraza u rasponu dviju linija, - otipkajte :#,#s/staro/novo/g #,# su brojevi linije datoteke na kojima - te između njih će se izvršiti zamjena. - Otipkajte :%s/staro/novo/g za zamjenu svih izraza u cijeloj datoteci. - Otipkajte :%s/staro/novo/gc za pronalazak svakog izraza u datoteci i - potvrdu zamjene. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 4 SAŽETAK - - - 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. - G postavlja kursor na zadnju liniju datoteke. - broj G postavlja kursor na broj liniju. - gg postavlja kursor na prvu liniju. - - 2. Tipkanje / sa izrazom traži UNAPRIJED taj izraz. - Tipkanje ? sa izrazom traži UNATRAG taj izraz. - Nakon naredbe traženja koristite n za pronalazak izraza u istom - smjeru, i N za pronalazak istog izraza ali u suprotnom smjeru. - CTRL-O vraća kursor na prethodnu poziciju, CTRL-I na sljedeću poziciju. - - 3. Tipkanje % dok je kursor na zagradi pomiče ga na pripadajuću zagradu. - - 4. Za zamjenu prvog izraza staro za izraz novo :s/staro/novo - Za zamjenu svih izraza staro na cijeloj liniji :s/staro/novo/g - Za zamjenu svih izraza staro u rasponu linija #,# :#,#s/staro/novo/g - Za zamjenu u cijeloj datoteci :%s/staro/novo/g - Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.1: IZVRŠAVANJE VANJSKIH NAREDBI - - - ** Otipkajte :! sa vanjskom naredbom koju želite izvršiti. ** - - 1. Otipkajte poznatu naredbu : kako bi kursor premjestili na dno - ekrana. Time omogućavate unos naredbe u naredbenoj liniji. - - 2. Otipkajte znak ! (uskličnik). Tako omogućavate - izvršavanje naredbe vanjske ljuske. - - 3. Kao primjer otipkajte ls nakon ! te pritisnite . - Ovo će prikazati sadržaj direktorija, kao da ste u ljusci. - Koristite :!dir ako :!ls ne radi. - -NAPOMENA: Moguće je izvršavati bilo koju vanjsku naredbu na ovaj način, - zajedno sa njenim argumentima. - -NAPOMENA: Sve : naredbe se izvršavaju nakon što pritisnete - U daljnjem tekstu to neće uvijek biti napomenuto. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.2: VIŠE O SPREMANJU DATOTEKA - - ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** - - 1. Otipkajte :!dir ili :!ls za pregled direktorija. - Već znate da morate pritisnuti na kraju tipkanja. - - 2. Izaberite ime datoteke koja još ne postoji, npr. TEST. - - 3. Otipkajte: :w TEST (gdje je TEST ime koje ste prethodno odabrali.) - - 4. Time će te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST. - Za provjeru, otipkajte ponovno :!dir ili :!ls - za pregled direktorija. - -NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , - datoteka bi bila potpuna kopija ove datoteke u trenutku - kada ste je spremili. - - 5. Izbrišite datoteku tako da otipkate (MS-DOS): :!del TEST - ili (Unix): :!rm TEST - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.3: SPREMANJE OZNAČENOG TEKSTA - - - ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** - - 1. Pomaknite kursor na ovu liniju. - - 2. Pritisnite v i pomaknite kursor pet linija ispod ove. - Primijetite promjenu, označeni tekst se razlikuje od običnog. - - 3. Pritisnite : znak. Na dnu ekrana pojavit će se :'<,'> . - - 4. Otipkajte w TEST , pritom je TEST ime datoteke koja još ne postoji. - Provjerite da zaista piše :'<,'>w TEST - prije nego što pritisnite . - - 5. Vim će spremiti označeni tekst u TEST. Provjerite sa :!dir ili !ls . - Nemojte je još brisati! Koristiti će te je u sljedećoj lekciji. - -NAPOMENA: Tipka v započinje Vizualno označavanje. Možete pomicati kursor - unaokolo kako bi mijenjali veličinu označenog teksta. Možete - koristiti i operatore. Npr, d će izbrisati označeni tekst. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5.4: UČITAVANJE DATOTEKA - - - ** Za ubacivanje sadržaja datoteke, otipkajte :r IME_DATOTEKE ** - - 1. Postavite kursor iznad ove linije. - -NAPOMENA: Nakon što izvršite 2. korak vidjeti će te tekst iz Lekcije 5.3. - Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. - - 2. Učitajte vašu TEST datoteku koristeći naredbu :r TEST - gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji. - Sadržaj učitane datoteke je ubačen liniju ispod kursora. - - 3. Kako bi provjerili da je datoteka učitana, vratite kursor unatrag i - primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. - -NAPOMENA: Možete također učitati ispis vanjske naredbe. Npr, :r !ls - će učitati ispis ls naredbe i postaviti ispis liniju ispod - kursora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 5 SAŽETAK - - - 1. :!naredba izvršava vanjsku naredbu. - - Korisni primjeri: - (MS-DOS) (Unix) - :!dir :!ls - pregled direktorija. - :!del DATOTEKA :!rm DATOTEKA - briše datoteku DATOTEKA. - - 2. :w DATOTEKA zapisuje trenutačnu datoteku na disk sa imenom DATOTEKA. - - 3. v pokret :w IME_DATOTEKE sprema vizualno označene linije u - datoteku IME_DATOTEKE. - - 4. :r IME_DATOTEKE učitava datoteku IME_DATOTEKE sa diska i stavlja - njen sadržaj liniju ispod kursora. - - 5. :r !dir učitava ispis naredbe dir i postavlja sadržaj ispisa liniju - ispod kursora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.1: NAREDBA OTVORI - - - ** Pritisnite o kako bi otvorili liniju ispod kursora - i prešli u Insert mod. ** - - 1. Pomaknite kursor na sljedeću liniju označenu s --->. - - 2. Otipkajte malo o kako bi otvorili novu liniju ISPOD kursora - i prešli u Insert mod. - - 3. Otipkajte nešto teksta i nakon toga pritisnite - kako bi napustili Insert mod. - ----> Nakon što pritisnete o kursor će preći u novu liniju u Insert mod. - - 4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O , - Pokušajte na donjoj liniji označenoj s --->. - ----> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.2: NAREDBA DODAJ - - - ** Otipkajte a za dodavanje teksta IZA kursora. ** - - 1. Pomaknite kursor na početak sljedeće linije označene s --->. - - 2. Tipkajte e dok se kursor ne nalazi na kraju li . - - 3. Otipkajte a (malo) kako bi dodali tekst IZA kursora. - - 4. Dopunite riječ kao što je na liniji ispod. - Pritisnite za izlaz iz Insert moda. - - 5. Sa e prijeđite na sljedeću nepotpunu riječ i ponovite korake 3 i 4. - ----> Ova li omogućava vje dodav teksta nekoj liniji. ----> Ova linija omogućava vježbanje dodavanja teksta nekoj liniji. - -NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina - razlika je u poziciji od koje će se tekst ubacivati. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.3: DRUGI NAČIN MIJENJANJA - - - ** Otipkajte veliko R kako bi zamijelili više od jednog znaka. ** - - 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. - Pomaknite kursor na početak prvog xxx . - - 2. Pritisnite R i otipkajte broj koji je liniju ispod, - tako da zamijeni xxx . - - 3. Pritisnite za izlaz iz Replace moda. - Primijetite da je ostatak linije ostao nepromjenjen. - - 5. Ponovite korake kako bi zamijenili preostali xxx. - ----> Zbrajanje: 123 plus xxx je xxx. ----> Zbrajanje: 123 plus 456 je 579. - -NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, - svaki otipkani znak briše već postojeći. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA - - - ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** - - 1. Pomaknite kursor na liniju s ---> i postavite kursor nakon "a)". - - 2. Pokrenite Visual mod sa v i pomaknite kursor sve do ispred "prva". - - 3. Pritisnite y kako bi kopirali označeni tekst. - - 4. Pomaknite kursor do kraja sljedeće linije: j$ - - 5. Pritisnite p kako bi zalijepili tekst. Onda utipkajte: druga . - - 6. Koristite Visual mod kako bi označili " linija.", kopirajte: y , kursor - postavite na kraj sljedeće linije: j$ i ondje zalijepite tekst: p . - ----> a) ovo je prva linija. - b) - -NAPOMENA: možete koristiti y kao operator; yw kopira jednu riječ. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6.5: MIJENJANJE POSTAVKI - - - ** Postavka: naredbe traženja i zamijene ne razlikuju VELIKA i mala slova ** - - 1. Potražite 'razlika' tipkanjem: /razlika - Nekoliko puta ponovite pritiskanjem n . - - 2. Aktivirajte 'ic' (Ignore case) postavku: :set ic - - 3. Ponovno potražite 'razlika' tipkanjem n - Primijetite da su sada i RAZLIKA i Razlika pronađeni. - - 4. Aktivirajte 'hlsearch' i 'incsearch' postavke: :set hls is - - 5. Otipkajte naredbu traženja i primijetite razlike: /razlika - - 6. Za deaktiviranje ic postavke koristite: :set noic - -NAPOMENA: Za neoznačavanje pronađenih izraza otipkajte: :nohlsearch -NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi - koristite \c u izrazu: /razlika\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 6 SAŽETAK - - 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. - Pritisnite O za otvaranje linije IZNAD kursora. - - 2. Pritisnite a za unos teksta IZA kursora. - Pritisnite A za unos teksta na kraju linije. - - 3. Naredba e pomiče kursor na kraj riječi. - - 4. Operator y kopira tekst, p ga lijepi. - - 5. Tipkanjem velikog R Vim prelazi u Replace mod dok ne pritisnete . - - 6. Tipkanjem ":set xxx" aktivira postavku "xxx". Neke postavke su: - 'ic' 'ignorecase' ne razlikuje velika/mala slova pri traženju - 'is' 'incsearch' traži nedovršene izraze - 'hls' 'hlsearch' označi sve pronađene izraze - Možete koristite dugo ili kratko ime postavke. - - 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.1: DOBIVANJE POMOĆI - - - ** Koristite on-line sustav pomoći ** - - Vim ima detaljan on-line sustav pomoći. - Za početak, pokušajte jedno od sljedećeg: - - pritisnite tipku (ako je vaša tipkovnica ima) - - pritisnite tipku (ako je vaša tipkovnica ima) - - utipkajte :help - - Pročitajte tekst u prozoru pomoći kako bi ste se znali služiti istom. - Tipkanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. - Otipkajte :q kako bi zatvorili prozor pomoći. - - Pronaći će te pomoć o bilo kojoj temi, tako da dodate upit samoj - ":help" naredbi. Pokušajte (ne zaboravite pritisnuti ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.2: PRAVLJENJE SKRIPTE - - - ** Aktivirajte Vim mogućnosti ** - - Vim ima mnogo više alata od Vi-ja, ali većina njih nije aktivirana. - Kako bi mogli koristiti više mogućnosti napravite "vimrc" datoteku. - - 1. Uredite "vimrc" datoteku. Ovo ovisi o vašem sistemu: - :e ~/.vimrc za Unix - :e $VIM/_vimrc za MS-Windows - - 2. Sada učitajte primjer sadržaja "vimrc" datoteke: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Sačuvajte datoteku sa: - :w - - Sljedećeg puta kada pokrenete Vim, bojanje sintakse teksta biti će - aktivirano. Sve vaše postavke možete dodati u "vimrc" datoteku. - Za više informacija otipkajte :help vimrc-intro - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7.3: AUTOMATSKO DOVRŠAVANJE - - - ** Dovršavanje iz naredbene linije pomoću CTRL-D i ** - - 1. Provjerite da Vim nije u Vi modu: :set nocp - - 2. Pogledajte koje datoteke postoje u direktoriju: :!ls or :!dir - - 3. Otipkajte početak naredbe: :e - - 4. Tipkajte CTRL-D i prikazati će se lista naredbi koje započinju sa "e". - - 5. Pritisnite i Vim će dopuniti unos u naredbu ":edit". - - 6. Dodajte razmak i početak datoteke: :edit FIL - - 7. Pritisnite . Vim će nadopuniti ime datoteke (ako je jedinstveno). - -NAPOMENA: Moguće je dopuniti mnoge naredbe. Koristite CTRL-D i . - Naročito je korisno za :help naredbe. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcija 7 SAŽETAK - - - 1. Otipkajte :help ili pritisnite ili za pomoć. - - 2. Otipkajte :help naredba kako bi dobili pomoć za naredba . - - 3. Otipkajte CTRL-W CTRL-W za prelazak u drugi prozor - - 4. Otipkajte :q kako bi zatvorili prozor pomoći - - 5. Napravite vimrc skriptu za podizanje kako bi u nju spremali - vaše omiljene postavke. - - 6. Kada tipkate naredbu koja započinje sa : - pritisnite CTRL-D kako bi vidjeli moguće valjane vrijednosti. - Pritisnite kako bi odabrali jednu od njih. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Kraj. Cilj priručnika je da pokaže kratak pregled Vim editora, tek toliko - da omogući njegovo korištenje. Priručnik nije potpun jer Vim ima mnogo više - naredbi. Za više informacija: ":help user-manual". - - Za čitanje i korištenje, preporučamo: - Vim - Vi Improved - by Steve Oualline - Izdavač: New Riders - Prva knjiga potpuno posvećena Vim-u. Vrlo korisna za početnike. - Sa mnogo primjera i slika. - Posjetite http://iccf-holland.org/click5.html - - Sljedeća knjiga je nešto starija i više o Vi-u nego o Vim-u, preporučamo: - Learning the Vi Editor - by Linda Lamb - Izdavač: O'Reilly & Associates Inc. - Solidna knjiga, možete saznati skoro sve što možete napraviti - u Vi-u. Šesto izdanje ima nešto informacija i o Vim-u. - - Ovaj priručnik su napisali: Michael C. Pierce i Robert K. Ware, - Colorado School of Mines koristeći ideje Charles Smith, - Colorado State University. E-pošta: bware@mines.colorado.edu. - - Naknadne promjene napravio je Bram Moolenaar. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Preveo na hrvatski: Paul B. Mahol - Preinaka 1.42, Lipanj 2008 - - diff --git a/share/vim/vim73/tutor/tutor.hu b/share/vim/vim73/tutor/tutor.hu deleted file mode 100644 index 6fb32709..00000000 --- a/share/vim/vim73/tutor/tutor.hu +++ /dev/null @@ -1,830 +0,0 @@ -=============================================================================== -== Ü d v ö z ö l j ü k a V I M - o k t a t ó b a n - 1.5-ös verzió == -=============================================================================== - - A Vim egy nagyon hatékony szerkesztõ, amelnyek rengeteg utasítása - van, túl sok, hogy egy ilyen oktatóban (tutorban), mint az itteni - mindet elmagyarázzuk. Ez az oktató arra törekszik, hogy annyit - elmagyarázzon, amennyi elég, hogy könnyedén használjuk a Vim-et, az - általános célú szövegszerkesztõt. - - A feladatok megoldásához 25-30 perc szükséges attól függõen, - mennyit töltünk a kisérletezéssel. - - A leckében szereplõ utasítások módosítani fogják a szövegek. - Készítsen másolatot errõl a fájlról, ha gyakorolni akar. - (Ha "vimtutor"-ral indította, akkor ez már egy másolat.) - - Fontos megérteni, hogy ez az oktató cselekedve taníttat. - Ez azt jelenti, hogy Önnek ajánlott végrehajtania az utasításokat, - hogy megfelelõen megtanulja azokat. Ha csak olvassa, elfelejti! - - Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és - Nyomja meg megfelelõ számúszor a j gombot, hogy az 1.1-es - lecke teljesen a képernyõn legyen! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.1. lecke: A KURZOR MOZGATÁSA - - - ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. ** - ^ - k Tipp: A h billentyû van balra, és balra mozgat - < h l > A l billentyû van jobbra, és jobbra mozgat - j A j billentyû olyan, mint egy lefele nyíl - v - 1. Mozgassa a kurzort körbe az ablakban, amíg hozzá nem szokik! - - 2. Tartsa lenyomva a lefelét (j), akkor ismétlõdik! ----> Most tudja, hogyan mehet a következõ leckére. - - 3. A lefelé gomb használatával menjen a 1.2. leckére! - -Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy - normál módba kerüljön, és ismételje meg a parancsot! - -Megj: A kurzor gomboknak is mûködniük kell, de a hjkl használatával - sokkal gyorsabban tud, mozogni, ha hozzászokik. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.2. lecke: BE ÉS KILÉPÉS A VIMBÕL - - - !! MEGJ: Mielõtt végrehajtja az alábbi lépéseket, olvassa végig a leckét !! - - 1. Nyomja meg az gombot (hogy biztosan normál módban legyen). - - 2. Írja: :q! . - ----> Ezzel kilép a szerkesztõbõl a változások MENTÉSE NÉLKÜL. - Ha menteni szeretné a változásokat és kilépni, írja: - :wq - - 3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe az - oktatóba hozza: - Ez valószínûleg: vimtutor - Normális esetben ezt írná: vim tutor.hu - ----> 'vim' jelenti a vimbe belépést, 'tutor.hu' a fájl, amit szerkeszteni kíván. - - 4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket - 1-tõl 3-ig, hogy kilépjen és visszatérjen a szerkesztõbe. Azután - menjen az 1.3. leckére. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS - - -** Normál módban nyomjon x-et, hogy a kurzor alatti karaktert törölje. ** - - 1. Mozgassa a kurzort a ---> kezdetû sorra! - - 2. A hibák kijavításához mozgassa a kurzort amíg a törlendõ karakter - fölé nem ér. - - 3. Nyomja meg az x gombot, hogy törölje a nemkívánt karaktert. - - 4. Ismételje a 2, 3, 4-es lépéseket, hogy kijavítsa a mondatot. - ----> ÕÕszi éjjjell izziik aa galaggonya rruuhája. - - 5. Ha a sor helyes, ugorjon a 1.4. leckére. - -MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS - - - ** Normál módban i megnyomásával lehet beilleszteni. ** - - 1. Az alábbi elsõ ---> kezdetû sorra menjen. - - 2. Ahhoz, hogy az elsõt azonossá tegye a másodikkal, mozgassa a kurzort - az elsõ karakterre, amely UTÁN szöveget kell beszúrni. - - 3. Nyomjon i-t és írja be a megfelelõ szöveget. - - 4. Amikor mindent beírt, nyomjon -et, hogy Normál módba visszatérjen. - Ismételje a 2 és 4 közötti lépéseket, hogy kijavítsa a mondatot. - ----> Az átható soól hizik pár ész. ----> Az itt látható sorból hiányzik pár rész. - - 5. Ha már begyakorolta a beszúrást, menjen az alábbi összefoglalóra. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1. LECKE ÖSSZEFOGLALÓJA - - - 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. - h (balra) j (le) k (fel) l (jobbra) - - 2. A Vimbe (a $ prompttól) így léphet be: vim FILENAME - - 3. A Vimbõl így léphet ki: :q! a változtatások eldobásával. - vagy így: :wq a változások mentésével. - - 4. A kurzor alatti karakter törlése normál módban: x - - 5. Szöveg beszúrása a kurzor után normál módban: - i gépelje be a szöveget - -MEGJ: Az megnyomása normál módba viszi, vagy megszakít egy nem befejezett - részben befejezett parancsot. - -Most folytassuk a 2. leckével! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.1. lecke: TÖRLÕ UTASÍTÁSOK - - - ** dw töröl a szó végéig. ** - - 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! - - 2. Mozgassa a kurzort a ---> kezdetû sorra! - - 3. Mozgassa a kurzort arra annak a szónak az elejére, amit törölni szeretne. - Törölje az állatokat a mondatból. - - 4. A szó törléséhez írja: dw - - MEGJ: Ha rosszul kezdte az utasítást csak nyomjon gombot - a megszakításához. - ----> Pár szó kutya nem uhu illik pingvin a mondatba tehén. - - 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.2. lecke: MÉG TÖBB TÖRLÕ UTASÍTÁS - - - ** d$ beírásával a sor végéig törölhet. ** - - 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! - - 2. Mozgassa a kurzort a ---> kezdetû sorra! - - 3. Mozgassa a kurzort a helyes sor végére (az elsõ . UTÁN)! - - 4. d$ begépeléséveltörölje a sor végét! - ----> Valaki a sor végét kétszer gépelte be. kétszer gépelte be. - - - 5. Menjen a 2.3. leckére, hogy megértse mi történt! - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.3. lecke: UTASÍTÁSOKRÓL ÉS OBJEKTUMOKRÓL - - - A d (delete=törlés) utasítás formája a következõ: - - [szám] d objektum VAGY d [szám] objektum - Ahol: - szám - hányszor hajtódjon végre a parancs (elhagyható, alapérték=1). - d - a törlés (delete) utasítás. - objektum - amin a parancsnak teljesülnie kell (alább listázva). - - Objektumok rövid listája: - w - a kurzortól a szó végéig, beleértve a szóközt. - e - a kurzortól a szó végéig, NEM beleértve a szóközt. - $ - a kurzortól a sor végéig. - -MEGJ: Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül - a kurzor oda kerül, amit az objektumlista megad. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.4. lecke: EGY KIVÉTEL A 'PARANCSOBJEKTUM' ALÓL - - - ** dd beírásával törölheti az egész sort. ** - - A teljes sor törlésének gyakorisága miatt a Vi tervezõi elhatározták, - hogy könnyebb lenne csupán a d-t kétszer megnyomni, hogy egy sort töröljünk. - - 1. Mozgassa a kurzort az alábbi kifejezések második sorára! - 2. dd begépelésével törölje a sort! - 3. Menjen a 4. (eredetileg 5.) sorra! - 4. 2dd (ugyebár szám-utasítás-objektum) begépelésével töröljön két sort! - - 1) Alvó szegek a jéghideg homokban, - 2) - kezdi a költõ - - 3) Plakátmagányban ázó éjjelek. - 4) Pingvinek ne féljetek, - 5) Távolról egy vaku villant, - 6) Égve hagytad a folyosón a villanyt. - 7) Ma ontják véremet. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS - - -** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. ** - - 1. Menjünk az alábbi ---> kezdetû sor elsõ hibájára! - 2. x lenyomásával törölje az elsõ felesleges karaktert! - 3. u megnyomásával vonja vissza az utolsónak végrehajtott utasítást! - 4. Másodjára javítson ki minden hibát a sorben az x utasítással! - 5. Most nagy U -val állítsa vissza a sor eredeti állapotát! - 6. Nyomja meg az u gombot párszor, hogy az U és sz elõzõ utasításokat - visszaállítsa! - 7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a - visszavont parancsokat (redo)! - ----> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. - - 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2. LECKE ÖSSZEFOGLALÓJA - - - 1. Törlés a kurzortól a szó végéig: dw - - 2. Törlés a kurzortól a sor végéig: d$ - - 3. Egész sor törlése: dd - - 4. Egy utasítás alakja normál módban: - - [szám] utasítás objektum VAGY utasítás [szám] objektum - ahol: - szám - hányszor ismételjük a parancsot - utasítás - mit tegyünk, pl. d a törléskor - objektum - mire hasson az utasítás, például w (szó=word), - $ (a sor végéig), stb. - - 5. Az elõzõ tett visszavonása (undo): u (kis u) - A sor összes változásának visszavonása: U (nagy U) - Visszavonások visszavonása: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.1. lecke: A BEILLESZTÉS (PUT) PARANCS - - - ** p leütésével az utolsónak töröltet a kurzor után illeszhetjük. ** - - 1. Mozgassuk a kurzort az alábbi sorok elsõ sorára. - - 2. dd leütésével töröljük a sort és eltérolódik a Vim pufferében. - - 3. Mozgassuk a kurzort azelõtt a sor ELÕTTI sorba, ahová mozgatni - szeretnénk a törölt sort. - - 4. Normál módban írjunk p betût a törölt sor beillesztéséhez. - - 5. Folytassuk a 2-4. utasításokkal hogy a helyes sorrendet kapjuk. - - d) Can you learn too? - b) Violets are blue, - c) Intelligence is learned, - a) Roses are red, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS - - -** r és a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. ** - - 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! - - 2. Mozgassuk a kurzort az elsõ hiba fölé! - - 3. r majd a kívánt karakter leütésével változtassuk meg a hibásat! - - 4. A 2. és 3. lépésekkel javítsuk az összes hibát! - ----> Whan this lime was tuoed in, someone presswd some wrojg keys! ----> When this line was typed in, someone pressed some wrong keys! - - 5. Menjünk a 3.2. leckére! - -MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.3. lecke: A CSERE (CHANGE) PARANCS - - - ** A szó egy részének megváltoztatásához írjuk: cw . ** - - 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! - - 2. Vigye a kurzort a Ezen szó z betûje fölé! - - 3. cw és a helyes szórész (itt 'bben') beírásával javítsa a szót! - - 4. lenyomása után a következõ hibára ugorjon (az elsõ cserélendõ - karakterre)! - - 5. A 3. és 4. lépések ismétlésével az elsõ mondatot tegye a másodikkal - azonossá! - ----> Ezen a sorrrrr pár szóra meg kell változzanak a change utaskírésõ. ----> Ebben a sorban pár szót meg kell változtatni a change utasítással. - -Vegyük észre, hogy a cw nem csak a szót írja át, hanem beszúró -(insert) módba vált. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.4. lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL - - - ** A c utasítás használható ugyanazokkal az objektumokkal mint a törlés ** - - 1. A change utasítás a törléssel azonosan viselkedik. A forma: - - [szám] c objektum OR c [szám] objektum - - 2. Az objektumok is azonosak, pl. w (szó), $ (sorvég), stb. - - 3. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! - - 4. Menjünk az elsõ hibára! - - 5. c$ begépelésével a sorvégeket tegyük azonossá és nyomjunk -et! - ----> Ennek a sornak a vége kiigazításra szorul, hogy megegyezzen a másodikkal. ----> Ennek a sornak a vége a c$ paranccsal változtatható meg. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3. LECKE ÖSSZEFOGLALÓJA - - - 1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget - a kurzor UTÁN helyezi (ha sor került törlésre, a kurzor allatti sorba). - - 2. A kurzor alatti karakter átírásához az r-et és azt a karaktert - nyomjuk, amellyel az eredetit felül szeretnénk írni. - - 3. A változtatás (c) utasítás a karaktertõl az objektum végéig - változtatja meg az objektumot. Például a cw a kurzortól a szó végéig, - a c$ a sor végéig. - - 4. A változtatás formátuma: - - [szám] c objektum VAGY c [szám] objektum - -Ugorjunk a következõ leckére! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.1. lecke: HELY ÉS FÁJLÁLLAPOT - - - ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát. - SHIFT-G leütésével a fájl adott sorára ugorhatunk. ** - - Megj: Olvassuk el az egész leckét a lépések végrehajtása elõtt!! - - 1. Tartsuk nyomva a Ctrl gombot és nyomjunk g-t. Az állapotsor - megjelenik a lap alján a fájlnévvel és az aktuális sor sorszámával. - Jegyezzük meg a sorszámot a 3. lépéshez! - - 2. Nyomjunk Shift-G-t a lap aljára ugráshoz! - - 3. Üssük be az eredeti sor számát, majd üssünk shift-G-t! Ezzel - visszajutunk az eredeti sorra ahol Ctrl-g-t nyomtunk. - (A beírt szám NEM fog megjelenni a képernyõn.) - - 4. Ha megjegyezte a feladatot, hajtsa végre az 1-3. lépéseket! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.2. lecke: A KERESÉS (SEARCH) PARANCS - - - ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. ** - - 1. Normál módban üssünk / karaktert! Ez és a kurzor megjelenik - a képernyõ alján, ahogy a : utasítás is. - - 2. Írjuk be: 'hiibaa' ! Ez az a szó amit keresünk. - - 3. A kifejezés újabb kereséséhez üssük le egyszerûen: n . - A kifejezés ellenkezõ irányban történõ kereséséhez ezt üssük be: Shift-N . - - 4. Ha visszafelé szeretne keresni, akkor ? kell a ! helyett. - ----> "hiibaa" nem a helyes módja a hiba leírásának; a hiibaa egy hiba. - -Megj: Ha a keresés eléri a fájl végét, akkor az elején kezdi. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.3. lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE - - - ** % leütésével megtaláljuk a ),], vagy } párját. ** - - 1. Helyezze a kurzort valamelyik (, [, vagy { zárójelre a ---> kezdetû - sorban! - - 2. Üssön % karaktert! - - 3. A kurzor a zárójel párjára fog ugrani. - - 4. % leütésével visszaugrik az eredeti zárójelre. - ----> Ez ( egy tesztsor (-ekkel, [-ekkel ] és {-ekkel } a sorban. )) - -Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a - zárójelek nem párosak! - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA - - - ** :s/új/régi/g begépelésével az 'új'-ra cseréljük a 'régi'-t. ** - - 1. Menjünk a ---> kezdetû sorra! - - 2. Írjuk be: :s/eggy/egy . Ekkor csak az elsõ változik meg a - sorban. - - 3. Most ezt írjuk: :s/eggy/egg/g amely globálisan helyettesít - a sorban, azaz minden elõfordulást. - Ez a sorban minden elõfordulást helyettesít. - ----> eggy heggy meggy, szembe jön eggy másik heggy. - - 4. Két sor között a karaktersor minden elõfordulásának helyettesítése: - :#,#s/régi/új/g ahol #,# a két sor sorszáma. - :%s/régi/új/g a fájlbeli összes elõfordulás helyettesítése. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4. LECKE ÖSSZEFOGLALÓJA - - - 1. Ctrl-g kiírja az kurzor helyét a fájlban és a fájl állapotát. - Shift-G a fájl végére megy, gg az elejére. Egy szám után - Shift-G az adott számú sorra ugrik. - - 2. / után egy kifejezés ELÕREFELE keresi a kifejezést. - 2. ? után egy kifejezés VISSZAFELE keresi a kifejezést. - Egy keresés után az n a következõ elõfordulást keresi azonos irányban - Shift-N az ellenkezõ irányban keres. - - 3. % begépelésével, ha (,),[,],{, vagy } karakteren vagyunk a zárójel - párjára ugrik. - - 4. az elsõ régi helyettesítése újjal a sorban :s/régi/új - az összes régi helyettesítése újjal a sorban :s/régi/új/g - két sor közötti kifejezésekre :#,#s/régi/új/g - # helyén az aktuális sor (.) és az utolsó ($) is állhat :.,$/régi/új/g - A fájlbeli összes elõfordulás helyettesítése :%s/régi/új/g - Mindenkori megerõsítésre vár 'c' hatására :%s/régi/új/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.1. lecke: KÜLSÕ PARANCS VÉGREHAJTÁSA - - - ** :! után külsõ parancsot írva végrehajtódik a parancs. ** - - 1. Írjuk be az ismerõs : parancsot, hogy a kurzort a képernyõ aljára - helyezzük. Ez lehetõvé teszi egy parancs beírását. - - 2. ! (felkiáltójel) beírásával tegyük lehetõvé külsõ héj (shell)-parancs - végrehajtását. - - 3. Írjunk például ls parancsot a ! után majd üssünk -t. Ez ki - fogja listázni a könyvtárunkat ugyanúgy, mintha a shell promptnál - lennénk. Vagy írja ezt :!dir ha az ls nem mûködik. - -Megj: Ilymódon bármely külsõ utasítás végrehajtható. - -Megj: Minden : parancs után -t kell ütni. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.2. lecke: BÕVEBBEN A FÁJLOK ÍRÁSÁRÓL - - - ** A fájlok változásait így írhatjuk ki :w FÁJLNÉV. ** - - 1. :!dir vagy :!ls beírásával listázzuk a könyvtárunkat! - Ön már tudja, hogy -t kell ütnie utána. - - 2. Válasszon egy fájlnevet, amely még nem létezik pl. TESZT! - - 3. Írja: :w TESZT (ahol TESZT a választott fájlnév)! - - 4. Ez elmenti a teljes fájlt (a Vim oktatóját) TESZT néven. - Ellenõrzésképp írjuk ismét :!dir hogy lássuk a könyvtárat! - (Felfelé gombbal : után az elõzõ utasítások visszahozhatóak.) - -Megj: Ha Ön kilépne a Vimbõl és és visszatérne a TESZT fájlnévvel, akkor a - fájl az oktató mentéskori pontos másolata lenne. - - 5. Távolítsa el a fájlt (MS-DOS): :!del TESZT - vagy (Unix): :!rm TESZT - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.3. lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA - - - ** A fájl egy részének kiírásához írja :#,# w FÁJLNÉV ** - - 1. :!dir vagy :!ls beírásával listázza a könyvtárat, és válasszon egy - megfelelõ fájlnevet, pl. TESZT. - - 2. Mozgassa a kurzort ennek az oldalnak a tetejére, és nyomjon - Ctrl-g-t, hogy megtudja a sorszámot. JEGYEZZE MEG A SZÁMOT! - - 3. Most menjen a lap aljára, és üsse be ismét: Ctrl-g. EZT A SZÁMOT - IS JEGYEZZE MEG! - - 4. Ha csak ezt a részét szeretné menteni a fájlnak, írja :#,# w TESZT - ahol #,# a két sorszám, amit megjegyzett, TESZT az Ön fájlneve. - - 5. Ismét nézze meg, hogy a fájl ott van (:!dir) de NE törölje. - - 6. Vimben létezik egy másik lehetõség: nyomja meg a Shift-V gombpárt - az elsõ menteni kívánt soron, majd menjen le az utolsóra, ezután - írja :w TESZT2 Ekkor a TESZT2 fájlba kerül a kijelölt rész. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.4. lecke: RETRIEVING AND MERGING FILES - - - ** Egy fájl tartalmának beillesztéséhez írja :r FÁJLNÉV ** - - 1. :!dir beírásával nézze meg, hogy az Ön TESZT fájlja létezik még. - - 2. Helyezze a kurzort ennek az oldalnak a tetejére. - -MEGJ: A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva - keresse meg ismét ezt a leckét. - - 3. Most szúrja be a TESZT nevû fájlt a :r TESZT paranccsal, ahol - TESZT az Ön fájljénak a neve. - -MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. - - 4. Hogy ellenõrizzük, hogy a fájlt tényleg beillsztettük, menjen - vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti - mellett a fájlból bemásolt is ott van. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5. LECKE ÖSSZEFOGLALÓJA - - - 1. :!parancs végrehajt egy külsõ utasítást. - - Pár hasznos példa: - (MS-DOS) (Unix) - :!dir :!ls - könyvtárlista kiírása. - :!del FÁJLNÉV :!rm FÁJLNÉV - FÁJLNÉV nevû fájl törlése. - - 2. :w FÁJLNÉV kiírja a jelenlegi Vim-fájlt a lemezre FÁJNÉV néven. - - 3. :#,#w FÁJLNÉV kiírja a két sorszám (#) közötti sorokat FÁJLNÉV-be - Másik lehetõség, hogy a kezdõsornál Ctrl-v-t nyom lemegy az utolsó - sorra, majd ezt üti be :w FÁJLNÉV - - 4. :r FÁJLNÉV beolvassa a FÁJLNÉV fájlt és behelyezi a jelenlegi fájlba - a kurzorpozició utáni sorba. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.1. lecke: A MEGNYITÁS (OPEN) PARANCS - - -** o beírásával nyithat egy új sort a kurzor alatt és válthat beszúró módba ** - - 1. Mozgassuk a kurzort a ---> kezdetû sorra. - - 2. o (kicsi) beírásával nyisson egy sort a kurzor ALATT! Ekkor - automatikusan beszúró (insert) módba kerül. - - 3. Másolja le a ---> jelû sort és megnyomásával lépjen ki - a beszúró módból. - ----> Az o lenyomása után a kurzor a következõ sor elején áll beszúró módban. - - 4. A kurzor FELETTI for megnyitásához egyzserûen a nagy O betût írjon -kicsi helyett. Próbálja ki a következõ soron! -Nyisson egy új sort efelett Shift-O megnyomásával, mialatt a kurzor -ezen a soron áll. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.2. lecke: AZ APPEND PARANCS - - - ** a lenyomásával a kuror UTÁN szúrhatunk szöveget. ** - - 1. Mozgassuk a kurzort a következõ ---> kezdetû sor végére úgy, - hogy normál módban $ ír be. - - 2. a (kicsi) leütésével szöveget szúrhat be AMöGÉ a karakter mögé, - amelyen a kurzor áll. - (A nagy A az egész sor végére írja a szöveget.) - -Megj: A Vimben a sor legvégére is lehet állni, azonba ez elõdjében - a Vi-ban nem lehetséges, ezért abban az a nélkül elég körülményes - a sor végéhez szöveget írni. - - 3. Egészítse ki az elsõ sort. Vegye észre, hogy az a utasítás (append) - teljesen egyezik az i-vel (insert) csupán a beszúrt szöveg helye - különbözik. - ----> Ez a sor lehetõvé teszi Önnek, hogy gyakorolja ----> Ez a sor lehetõvé teszi Önnek, hogy gyakorolja a sor végére beillesztést. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.3. lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA - - - ** Nagy R beírásával írhat felül több mint egy karaktert. ** - - 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! - - 2. Helyezze a kurzort az elsõ szó elejére amely eltér a második - ---> kezdetû sor tartalmától (a 'az utolsóval' résztõl). - - 3. Nyomjon R karaktert és írja ét a szöveg maradékát az elsõ sorban - úgy, hogy a két sor egyezõ legyen. - ----> Az elsõ sort tegye azonossá az utolsóval: használja a gombokat. ----> Az elsõ sort tegye azonossá a másodikkal: írjon R-t és az új szöveget. - - 4. Jegyezzük meg, ha -et nyomok, akkor a változatlanuk hagyott - szövegek változatlanok maradnak. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.4. lecke: BEÁLLÍTÁSOK - -** Állítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetûktõl ** - - 1. Keressük meg az 'ignore'-t az beírva: - /ignore - Ezt ismételjük többször az n billentyûvel - - 2. Állítsuk be az 'ic' (Ignore case) lehetõséget így: - :set ic - - 3. Most keressünk ismét az 'ignore'-ra n-nel - Ismételjük meg többször a keresést: n - - 4. Állítsuk be a 'hlsearch' és 'incsearch' lehetõségeket: - :set hls is - - 5. Most ismét írjuk be a keresõparancsot, és lássuk mi történik: - /ignore - - 6. A kiemelést szüntessük meg alábbi utasítások egyikével: - :set nohls vagy :nohlsearch -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6. LECKE ÖSSZEFOGLALÓJA - - - 1. o beírásával új sort nyitunk meg a sor ALATT és a kurzor az új - sorban lesz beszúrás-módban. - Nagy O a sor FELETT nyit új sort, és oda kerül a kurzor. - - 2. a beírásával az aktuális karaktertõl UTÁN (jobbra) szúrhatunk be szöveget. - Nagy A automatikusan a sor legvégéhez adja hozzá a szöveget. - - 3. A nagy R beütésével átíró (replace) módba kerülünk lenyomásáig. - - 4. ":set xxx" beírásával az "xxx" opció állítható be. - - - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7. lecke: AZ ON-LINE SÚGÓ PARANCSAI - - - ** Az online súgórendszer használata ** - - A Vim részletes súgóval rendelkezik. Induláshoz a következõk egyikét - tegye: - - nyomja meg a gombot (ha van ilyen) - - nyomja meg az gombot (ha van ilyen) - - írja be: :help - - :q beírásával zárhatja be a súgóablakot. - - Majdnem minden témakörrõl találhat súgót, argumentum megadásával - ":help" utasítás . Próbálja az alábbiakat ki (-t ne felejtsük): - - :help w - :help c_, 2006-2008 - diff --git a/share/vim/vim73/tutor/tutor.hu.cp1250 b/share/vim/vim73/tutor/tutor.hu.cp1250 deleted file mode 100644 index 6fb32709..00000000 --- a/share/vim/vim73/tutor/tutor.hu.cp1250 +++ /dev/null @@ -1,830 +0,0 @@ -=============================================================================== -== Ü d v ö z ö l j ü k a V I M - o k t a t ó b a n - 1.5-ös verzió == -=============================================================================== - - A Vim egy nagyon hatékony szerkesztõ, amelnyek rengeteg utasítása - van, túl sok, hogy egy ilyen oktatóban (tutorban), mint az itteni - mindet elmagyarázzuk. Ez az oktató arra törekszik, hogy annyit - elmagyarázzon, amennyi elég, hogy könnyedén használjuk a Vim-et, az - általános célú szövegszerkesztõt. - - A feladatok megoldásához 25-30 perc szükséges attól függõen, - mennyit töltünk a kisérletezéssel. - - A leckében szereplõ utasítások módosítani fogják a szövegek. - Készítsen másolatot errõl a fájlról, ha gyakorolni akar. - (Ha "vimtutor"-ral indította, akkor ez már egy másolat.) - - Fontos megérteni, hogy ez az oktató cselekedve taníttat. - Ez azt jelenti, hogy Önnek ajánlott végrehajtania az utasításokat, - hogy megfelelõen megtanulja azokat. Ha csak olvassa, elfelejti! - - Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és - Nyomja meg megfelelõ számúszor a j gombot, hogy az 1.1-es - lecke teljesen a képernyõn legyen! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.1. lecke: A KURZOR MOZGATÁSA - - - ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. ** - ^ - k Tipp: A h billentyû van balra, és balra mozgat - < h l > A l billentyû van jobbra, és jobbra mozgat - j A j billentyû olyan, mint egy lefele nyíl - v - 1. Mozgassa a kurzort körbe az ablakban, amíg hozzá nem szokik! - - 2. Tartsa lenyomva a lefelét (j), akkor ismétlõdik! ----> Most tudja, hogyan mehet a következõ leckére. - - 3. A lefelé gomb használatával menjen a 1.2. leckére! - -Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy - normál módba kerüljön, és ismételje meg a parancsot! - -Megj: A kurzor gomboknak is mûködniük kell, de a hjkl használatával - sokkal gyorsabban tud, mozogni, ha hozzászokik. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.2. lecke: BE ÉS KILÉPÉS A VIMBÕL - - - !! MEGJ: Mielõtt végrehajtja az alábbi lépéseket, olvassa végig a leckét !! - - 1. Nyomja meg az gombot (hogy biztosan normál módban legyen). - - 2. Írja: :q! . - ----> Ezzel kilép a szerkesztõbõl a változások MENTÉSE NÉLKÜL. - Ha menteni szeretné a változásokat és kilépni, írja: - :wq - - 3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe az - oktatóba hozza: - Ez valószínûleg: vimtutor - Normális esetben ezt írná: vim tutor.hu - ----> 'vim' jelenti a vimbe belépést, 'tutor.hu' a fájl, amit szerkeszteni kíván. - - 4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket - 1-tõl 3-ig, hogy kilépjen és visszatérjen a szerkesztõbe. Azután - menjen az 1.3. leckére. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS - - -** Normál módban nyomjon x-et, hogy a kurzor alatti karaktert törölje. ** - - 1. Mozgassa a kurzort a ---> kezdetû sorra! - - 2. A hibák kijavításához mozgassa a kurzort amíg a törlendõ karakter - fölé nem ér. - - 3. Nyomja meg az x gombot, hogy törölje a nemkívánt karaktert. - - 4. Ismételje a 2, 3, 4-es lépéseket, hogy kijavítsa a mondatot. - ----> ÕÕszi éjjjell izziik aa galaggonya rruuhája. - - 5. Ha a sor helyes, ugorjon a 1.4. leckére. - -MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS - - - ** Normál módban i megnyomásával lehet beilleszteni. ** - - 1. Az alábbi elsõ ---> kezdetû sorra menjen. - - 2. Ahhoz, hogy az elsõt azonossá tegye a másodikkal, mozgassa a kurzort - az elsõ karakterre, amely UTÁN szöveget kell beszúrni. - - 3. Nyomjon i-t és írja be a megfelelõ szöveget. - - 4. Amikor mindent beírt, nyomjon -et, hogy Normál módba visszatérjen. - Ismételje a 2 és 4 közötti lépéseket, hogy kijavítsa a mondatot. - ----> Az átható soól hizik pár ész. ----> Az itt látható sorból hiányzik pár rész. - - 5. Ha már begyakorolta a beszúrást, menjen az alábbi összefoglalóra. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1. LECKE ÖSSZEFOGLALÓJA - - - 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. - h (balra) j (le) k (fel) l (jobbra) - - 2. A Vimbe (a $ prompttól) így léphet be: vim FILENAME - - 3. A Vimbõl így léphet ki: :q! a változtatások eldobásával. - vagy így: :wq a változások mentésével. - - 4. A kurzor alatti karakter törlése normál módban: x - - 5. Szöveg beszúrása a kurzor után normál módban: - i gépelje be a szöveget - -MEGJ: Az megnyomása normál módba viszi, vagy megszakít egy nem befejezett - részben befejezett parancsot. - -Most folytassuk a 2. leckével! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.1. lecke: TÖRLÕ UTASÍTÁSOK - - - ** dw töröl a szó végéig. ** - - 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! - - 2. Mozgassa a kurzort a ---> kezdetû sorra! - - 3. Mozgassa a kurzort arra annak a szónak az elejére, amit törölni szeretne. - Törölje az állatokat a mondatból. - - 4. A szó törléséhez írja: dw - - MEGJ: Ha rosszul kezdte az utasítást csak nyomjon gombot - a megszakításához. - ----> Pár szó kutya nem uhu illik pingvin a mondatba tehén. - - 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.2. lecke: MÉG TÖBB TÖRLÕ UTASÍTÁS - - - ** d$ beírásával a sor végéig törölhet. ** - - 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! - - 2. Mozgassa a kurzort a ---> kezdetû sorra! - - 3. Mozgassa a kurzort a helyes sor végére (az elsõ . UTÁN)! - - 4. d$ begépeléséveltörölje a sor végét! - ----> Valaki a sor végét kétszer gépelte be. kétszer gépelte be. - - - 5. Menjen a 2.3. leckére, hogy megértse mi történt! - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.3. lecke: UTASÍTÁSOKRÓL ÉS OBJEKTUMOKRÓL - - - A d (delete=törlés) utasítás formája a következõ: - - [szám] d objektum VAGY d [szám] objektum - Ahol: - szám - hányszor hajtódjon végre a parancs (elhagyható, alapérték=1). - d - a törlés (delete) utasítás. - objektum - amin a parancsnak teljesülnie kell (alább listázva). - - Objektumok rövid listája: - w - a kurzortól a szó végéig, beleértve a szóközt. - e - a kurzortól a szó végéig, NEM beleértve a szóközt. - $ - a kurzortól a sor végéig. - -MEGJ: Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül - a kurzor oda kerül, amit az objektumlista megad. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.4. lecke: EGY KIVÉTEL A 'PARANCSOBJEKTUM' ALÓL - - - ** dd beírásával törölheti az egész sort. ** - - A teljes sor törlésének gyakorisága miatt a Vi tervezõi elhatározták, - hogy könnyebb lenne csupán a d-t kétszer megnyomni, hogy egy sort töröljünk. - - 1. Mozgassa a kurzort az alábbi kifejezések második sorára! - 2. dd begépelésével törölje a sort! - 3. Menjen a 4. (eredetileg 5.) sorra! - 4. 2dd (ugyebár szám-utasítás-objektum) begépelésével töröljön két sort! - - 1) Alvó szegek a jéghideg homokban, - 2) - kezdi a költõ - - 3) Plakátmagányban ázó éjjelek. - 4) Pingvinek ne féljetek, - 5) Távolról egy vaku villant, - 6) Égve hagytad a folyosón a villanyt. - 7) Ma ontják véremet. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS - - -** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. ** - - 1. Menjünk az alábbi ---> kezdetû sor elsõ hibájára! - 2. x lenyomásával törölje az elsõ felesleges karaktert! - 3. u megnyomásával vonja vissza az utolsónak végrehajtott utasítást! - 4. Másodjára javítson ki minden hibát a sorben az x utasítással! - 5. Most nagy U -val állítsa vissza a sor eredeti állapotát! - 6. Nyomja meg az u gombot párszor, hogy az U és sz elõzõ utasításokat - visszaállítsa! - 7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a - visszavont parancsokat (redo)! - ----> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. - - 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2. LECKE ÖSSZEFOGLALÓJA - - - 1. Törlés a kurzortól a szó végéig: dw - - 2. Törlés a kurzortól a sor végéig: d$ - - 3. Egész sor törlése: dd - - 4. Egy utasítás alakja normál módban: - - [szám] utasítás objektum VAGY utasítás [szám] objektum - ahol: - szám - hányszor ismételjük a parancsot - utasítás - mit tegyünk, pl. d a törléskor - objektum - mire hasson az utasítás, például w (szó=word), - $ (a sor végéig), stb. - - 5. Az elõzõ tett visszavonása (undo): u (kis u) - A sor összes változásának visszavonása: U (nagy U) - Visszavonások visszavonása: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.1. lecke: A BEILLESZTÉS (PUT) PARANCS - - - ** p leütésével az utolsónak töröltet a kurzor után illeszhetjük. ** - - 1. Mozgassuk a kurzort az alábbi sorok elsõ sorára. - - 2. dd leütésével töröljük a sort és eltérolódik a Vim pufferében. - - 3. Mozgassuk a kurzort azelõtt a sor ELÕTTI sorba, ahová mozgatni - szeretnénk a törölt sort. - - 4. Normál módban írjunk p betût a törölt sor beillesztéséhez. - - 5. Folytassuk a 2-4. utasításokkal hogy a helyes sorrendet kapjuk. - - d) Can you learn too? - b) Violets are blue, - c) Intelligence is learned, - a) Roses are red, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS - - -** r és a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. ** - - 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! - - 2. Mozgassuk a kurzort az elsõ hiba fölé! - - 3. r majd a kívánt karakter leütésével változtassuk meg a hibásat! - - 4. A 2. és 3. lépésekkel javítsuk az összes hibát! - ----> Whan this lime was tuoed in, someone presswd some wrojg keys! ----> When this line was typed in, someone pressed some wrong keys! - - 5. Menjünk a 3.2. leckére! - -MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.3. lecke: A CSERE (CHANGE) PARANCS - - - ** A szó egy részének megváltoztatásához írjuk: cw . ** - - 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! - - 2. Vigye a kurzort a Ezen szó z betûje fölé! - - 3. cw és a helyes szórész (itt 'bben') beírásával javítsa a szót! - - 4. lenyomása után a következõ hibára ugorjon (az elsõ cserélendõ - karakterre)! - - 5. A 3. és 4. lépések ismétlésével az elsõ mondatot tegye a másodikkal - azonossá! - ----> Ezen a sorrrrr pár szóra meg kell változzanak a change utaskírésõ. ----> Ebben a sorban pár szót meg kell változtatni a change utasítással. - -Vegyük észre, hogy a cw nem csak a szót írja át, hanem beszúró -(insert) módba vált. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.4. lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL - - - ** A c utasítás használható ugyanazokkal az objektumokkal mint a törlés ** - - 1. A change utasítás a törléssel azonosan viselkedik. A forma: - - [szám] c objektum OR c [szám] objektum - - 2. Az objektumok is azonosak, pl. w (szó), $ (sorvég), stb. - - 3. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! - - 4. Menjünk az elsõ hibára! - - 5. c$ begépelésével a sorvégeket tegyük azonossá és nyomjunk -et! - ----> Ennek a sornak a vége kiigazításra szorul, hogy megegyezzen a másodikkal. ----> Ennek a sornak a vége a c$ paranccsal változtatható meg. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3. LECKE ÖSSZEFOGLALÓJA - - - 1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget - a kurzor UTÁN helyezi (ha sor került törlésre, a kurzor allatti sorba). - - 2. A kurzor alatti karakter átírásához az r-et és azt a karaktert - nyomjuk, amellyel az eredetit felül szeretnénk írni. - - 3. A változtatás (c) utasítás a karaktertõl az objektum végéig - változtatja meg az objektumot. Például a cw a kurzortól a szó végéig, - a c$ a sor végéig. - - 4. A változtatás formátuma: - - [szám] c objektum VAGY c [szám] objektum - -Ugorjunk a következõ leckére! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.1. lecke: HELY ÉS FÁJLÁLLAPOT - - - ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát. - SHIFT-G leütésével a fájl adott sorára ugorhatunk. ** - - Megj: Olvassuk el az egész leckét a lépések végrehajtása elõtt!! - - 1. Tartsuk nyomva a Ctrl gombot és nyomjunk g-t. Az állapotsor - megjelenik a lap alján a fájlnévvel és az aktuális sor sorszámával. - Jegyezzük meg a sorszámot a 3. lépéshez! - - 2. Nyomjunk Shift-G-t a lap aljára ugráshoz! - - 3. Üssük be az eredeti sor számát, majd üssünk shift-G-t! Ezzel - visszajutunk az eredeti sorra ahol Ctrl-g-t nyomtunk. - (A beírt szám NEM fog megjelenni a képernyõn.) - - 4. Ha megjegyezte a feladatot, hajtsa végre az 1-3. lépéseket! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.2. lecke: A KERESÉS (SEARCH) PARANCS - - - ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. ** - - 1. Normál módban üssünk / karaktert! Ez és a kurzor megjelenik - a képernyõ alján, ahogy a : utasítás is. - - 2. Írjuk be: 'hiibaa' ! Ez az a szó amit keresünk. - - 3. A kifejezés újabb kereséséhez üssük le egyszerûen: n . - A kifejezés ellenkezõ irányban történõ kereséséhez ezt üssük be: Shift-N . - - 4. Ha visszafelé szeretne keresni, akkor ? kell a ! helyett. - ----> "hiibaa" nem a helyes módja a hiba leírásának; a hiibaa egy hiba. - -Megj: Ha a keresés eléri a fájl végét, akkor az elején kezdi. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.3. lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE - - - ** % leütésével megtaláljuk a ),], vagy } párját. ** - - 1. Helyezze a kurzort valamelyik (, [, vagy { zárójelre a ---> kezdetû - sorban! - - 2. Üssön % karaktert! - - 3. A kurzor a zárójel párjára fog ugrani. - - 4. % leütésével visszaugrik az eredeti zárójelre. - ----> Ez ( egy tesztsor (-ekkel, [-ekkel ] és {-ekkel } a sorban. )) - -Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a - zárójelek nem párosak! - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA - - - ** :s/új/régi/g begépelésével az 'új'-ra cseréljük a 'régi'-t. ** - - 1. Menjünk a ---> kezdetû sorra! - - 2. Írjuk be: :s/eggy/egy . Ekkor csak az elsõ változik meg a - sorban. - - 3. Most ezt írjuk: :s/eggy/egg/g amely globálisan helyettesít - a sorban, azaz minden elõfordulást. - Ez a sorban minden elõfordulást helyettesít. - ----> eggy heggy meggy, szembe jön eggy másik heggy. - - 4. Két sor között a karaktersor minden elõfordulásának helyettesítése: - :#,#s/régi/új/g ahol #,# a két sor sorszáma. - :%s/régi/új/g a fájlbeli összes elõfordulás helyettesítése. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4. LECKE ÖSSZEFOGLALÓJA - - - 1. Ctrl-g kiírja az kurzor helyét a fájlban és a fájl állapotát. - Shift-G a fájl végére megy, gg az elejére. Egy szám után - Shift-G az adott számú sorra ugrik. - - 2. / után egy kifejezés ELÕREFELE keresi a kifejezést. - 2. ? után egy kifejezés VISSZAFELE keresi a kifejezést. - Egy keresés után az n a következõ elõfordulást keresi azonos irányban - Shift-N az ellenkezõ irányban keres. - - 3. % begépelésével, ha (,),[,],{, vagy } karakteren vagyunk a zárójel - párjára ugrik. - - 4. az elsõ régi helyettesítése újjal a sorban :s/régi/új - az összes régi helyettesítése újjal a sorban :s/régi/új/g - két sor közötti kifejezésekre :#,#s/régi/új/g - # helyén az aktuális sor (.) és az utolsó ($) is állhat :.,$/régi/új/g - A fájlbeli összes elõfordulás helyettesítése :%s/régi/új/g - Mindenkori megerõsítésre vár 'c' hatására :%s/régi/új/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.1. lecke: KÜLSÕ PARANCS VÉGREHAJTÁSA - - - ** :! után külsõ parancsot írva végrehajtódik a parancs. ** - - 1. Írjuk be az ismerõs : parancsot, hogy a kurzort a képernyõ aljára - helyezzük. Ez lehetõvé teszi egy parancs beírását. - - 2. ! (felkiáltójel) beírásával tegyük lehetõvé külsõ héj (shell)-parancs - végrehajtását. - - 3. Írjunk például ls parancsot a ! után majd üssünk -t. Ez ki - fogja listázni a könyvtárunkat ugyanúgy, mintha a shell promptnál - lennénk. Vagy írja ezt :!dir ha az ls nem mûködik. - -Megj: Ilymódon bármely külsõ utasítás végrehajtható. - -Megj: Minden : parancs után -t kell ütni. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.2. lecke: BÕVEBBEN A FÁJLOK ÍRÁSÁRÓL - - - ** A fájlok változásait így írhatjuk ki :w FÁJLNÉV. ** - - 1. :!dir vagy :!ls beírásával listázzuk a könyvtárunkat! - Ön már tudja, hogy -t kell ütnie utána. - - 2. Válasszon egy fájlnevet, amely még nem létezik pl. TESZT! - - 3. Írja: :w TESZT (ahol TESZT a választott fájlnév)! - - 4. Ez elmenti a teljes fájlt (a Vim oktatóját) TESZT néven. - Ellenõrzésképp írjuk ismét :!dir hogy lássuk a könyvtárat! - (Felfelé gombbal : után az elõzõ utasítások visszahozhatóak.) - -Megj: Ha Ön kilépne a Vimbõl és és visszatérne a TESZT fájlnévvel, akkor a - fájl az oktató mentéskori pontos másolata lenne. - - 5. Távolítsa el a fájlt (MS-DOS): :!del TESZT - vagy (Unix): :!rm TESZT - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.3. lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA - - - ** A fájl egy részének kiírásához írja :#,# w FÁJLNÉV ** - - 1. :!dir vagy :!ls beírásával listázza a könyvtárat, és válasszon egy - megfelelõ fájlnevet, pl. TESZT. - - 2. Mozgassa a kurzort ennek az oldalnak a tetejére, és nyomjon - Ctrl-g-t, hogy megtudja a sorszámot. JEGYEZZE MEG A SZÁMOT! - - 3. Most menjen a lap aljára, és üsse be ismét: Ctrl-g. EZT A SZÁMOT - IS JEGYEZZE MEG! - - 4. Ha csak ezt a részét szeretné menteni a fájlnak, írja :#,# w TESZT - ahol #,# a két sorszám, amit megjegyzett, TESZT az Ön fájlneve. - - 5. Ismét nézze meg, hogy a fájl ott van (:!dir) de NE törölje. - - 6. Vimben létezik egy másik lehetõség: nyomja meg a Shift-V gombpárt - az elsõ menteni kívánt soron, majd menjen le az utolsóra, ezután - írja :w TESZT2 Ekkor a TESZT2 fájlba kerül a kijelölt rész. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.4. lecke: RETRIEVING AND MERGING FILES - - - ** Egy fájl tartalmának beillesztéséhez írja :r FÁJLNÉV ** - - 1. :!dir beírásával nézze meg, hogy az Ön TESZT fájlja létezik még. - - 2. Helyezze a kurzort ennek az oldalnak a tetejére. - -MEGJ: A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva - keresse meg ismét ezt a leckét. - - 3. Most szúrja be a TESZT nevû fájlt a :r TESZT paranccsal, ahol - TESZT az Ön fájljénak a neve. - -MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. - - 4. Hogy ellenõrizzük, hogy a fájlt tényleg beillsztettük, menjen - vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti - mellett a fájlból bemásolt is ott van. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5. LECKE ÖSSZEFOGLALÓJA - - - 1. :!parancs végrehajt egy külsõ utasítást. - - Pár hasznos példa: - (MS-DOS) (Unix) - :!dir :!ls - könyvtárlista kiírása. - :!del FÁJLNÉV :!rm FÁJLNÉV - FÁJLNÉV nevû fájl törlése. - - 2. :w FÁJLNÉV kiírja a jelenlegi Vim-fájlt a lemezre FÁJNÉV néven. - - 3. :#,#w FÁJLNÉV kiírja a két sorszám (#) közötti sorokat FÁJLNÉV-be - Másik lehetõség, hogy a kezdõsornál Ctrl-v-t nyom lemegy az utolsó - sorra, majd ezt üti be :w FÁJLNÉV - - 4. :r FÁJLNÉV beolvassa a FÁJLNÉV fájlt és behelyezi a jelenlegi fájlba - a kurzorpozició utáni sorba. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.1. lecke: A MEGNYITÁS (OPEN) PARANCS - - -** o beírásával nyithat egy új sort a kurzor alatt és válthat beszúró módba ** - - 1. Mozgassuk a kurzort a ---> kezdetû sorra. - - 2. o (kicsi) beírásával nyisson egy sort a kurzor ALATT! Ekkor - automatikusan beszúró (insert) módba kerül. - - 3. Másolja le a ---> jelû sort és megnyomásával lépjen ki - a beszúró módból. - ----> Az o lenyomása után a kurzor a következõ sor elején áll beszúró módban. - - 4. A kurzor FELETTI for megnyitásához egyzserûen a nagy O betût írjon -kicsi helyett. Próbálja ki a következõ soron! -Nyisson egy új sort efelett Shift-O megnyomásával, mialatt a kurzor -ezen a soron áll. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.2. lecke: AZ APPEND PARANCS - - - ** a lenyomásával a kuror UTÁN szúrhatunk szöveget. ** - - 1. Mozgassuk a kurzort a következõ ---> kezdetû sor végére úgy, - hogy normál módban $ ír be. - - 2. a (kicsi) leütésével szöveget szúrhat be AMöGÉ a karakter mögé, - amelyen a kurzor áll. - (A nagy A az egész sor végére írja a szöveget.) - -Megj: A Vimben a sor legvégére is lehet állni, azonba ez elõdjében - a Vi-ban nem lehetséges, ezért abban az a nélkül elég körülményes - a sor végéhez szöveget írni. - - 3. Egészítse ki az elsõ sort. Vegye észre, hogy az a utasítás (append) - teljesen egyezik az i-vel (insert) csupán a beszúrt szöveg helye - különbözik. - ----> Ez a sor lehetõvé teszi Önnek, hogy gyakorolja ----> Ez a sor lehetõvé teszi Önnek, hogy gyakorolja a sor végére beillesztést. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.3. lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA - - - ** Nagy R beírásával írhat felül több mint egy karaktert. ** - - 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! - - 2. Helyezze a kurzort az elsõ szó elejére amely eltér a második - ---> kezdetû sor tartalmától (a 'az utolsóval' résztõl). - - 3. Nyomjon R karaktert és írja ét a szöveg maradékát az elsõ sorban - úgy, hogy a két sor egyezõ legyen. - ----> Az elsõ sort tegye azonossá az utolsóval: használja a gombokat. ----> Az elsõ sort tegye azonossá a másodikkal: írjon R-t és az új szöveget. - - 4. Jegyezzük meg, ha -et nyomok, akkor a változatlanuk hagyott - szövegek változatlanok maradnak. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.4. lecke: BEÁLLÍTÁSOK - -** Állítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetûktõl ** - - 1. Keressük meg az 'ignore'-t az beírva: - /ignore - Ezt ismételjük többször az n billentyûvel - - 2. Állítsuk be az 'ic' (Ignore case) lehetõséget így: - :set ic - - 3. Most keressünk ismét az 'ignore'-ra n-nel - Ismételjük meg többször a keresést: n - - 4. Állítsuk be a 'hlsearch' és 'incsearch' lehetõségeket: - :set hls is - - 5. Most ismét írjuk be a keresõparancsot, és lássuk mi történik: - /ignore - - 6. A kiemelést szüntessük meg alábbi utasítások egyikével: - :set nohls vagy :nohlsearch -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6. LECKE ÖSSZEFOGLALÓJA - - - 1. o beírásával új sort nyitunk meg a sor ALATT és a kurzor az új - sorban lesz beszúrás-módban. - Nagy O a sor FELETT nyit új sort, és oda kerül a kurzor. - - 2. a beírásával az aktuális karaktertõl UTÁN (jobbra) szúrhatunk be szöveget. - Nagy A automatikusan a sor legvégéhez adja hozzá a szöveget. - - 3. A nagy R beütésével átíró (replace) módba kerülünk lenyomásáig. - - 4. ":set xxx" beírásával az "xxx" opció állítható be. - - - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7. lecke: AZ ON-LINE SÚGÓ PARANCSAI - - - ** Az online súgórendszer használata ** - - A Vim részletes súgóval rendelkezik. Induláshoz a következõk egyikét - tegye: - - nyomja meg a gombot (ha van ilyen) - - nyomja meg az gombot (ha van ilyen) - - írja be: :help - - :q beírásával zárhatja be a súgóablakot. - - Majdnem minden témakörrõl találhat súgót, argumentum megadásával - ":help" utasítás . Próbálja az alábbiakat ki (-t ne felejtsük): - - :help w - :help c_, 2006-2008 - diff --git a/share/vim/vim73/tutor/tutor.hu.utf-8 b/share/vim/vim73/tutor/tutor.hu.utf-8 deleted file mode 100644 index ec486d91..00000000 --- a/share/vim/vim73/tutor/tutor.hu.utf-8 +++ /dev/null @@ -1,830 +0,0 @@ -=============================================================================== -== Ü d v ö z ö l j ü k a V I M - o k t a t ó b a n - 1.5-ös verzió == -=============================================================================== - - A Vim egy nagyon hatékony szerkesztő, amelnyek rengeteg utasítása - van, túl sok, hogy egy ilyen oktatóban (tutorban), mint az itteni - mindet elmagyarázzuk. Ez az oktató arra törekszik, hogy annyit - elmagyarázzon, amennyi elég, hogy könnyedén használjuk a Vim-et, az - általános célú szövegszerkesztőt. - - A feladatok megoldásához 25-30 perc szükséges attól függően, - mennyit töltünk a kisérletezéssel. - - A leckében szereplő utasítások módosítani fogják a szövegek. - Készítsen másolatot erről a fájlról, ha gyakorolni akar. - (Ha "vimtutor"-ral indította, akkor ez már egy másolat.) - - Fontos megérteni, hogy ez az oktató cselekedve taníttat. - Ez azt jelenti, hogy Önnek ajánlott végrehajtania az utasításokat, - hogy megfelelően megtanulja azokat. Ha csak olvassa, elfelejti! - - Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és - Nyomja meg megfelelő számúszor a j gombot, hogy az 1.1-es - lecke teljesen a képernyőn legyen! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.1. lecke: A KURZOR MOZGATÁSA - - - ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. ** - ^ - k Tipp: A h billentyű van balra, és balra mozgat - < h l > A l billentyű van jobbra, és jobbra mozgat - j A j billentyű olyan, mint egy lefele nyíl - v - 1. Mozgassa a kurzort körbe az ablakban, amíg hozzá nem szokik! - - 2. Tartsa lenyomva a lefelét (j), akkor ismétlődik! ----> Most tudja, hogyan mehet a következő leckére. - - 3. A lefelé gomb használatával menjen a 1.2. leckére! - -Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy - normál módba kerüljön, és ismételje meg a parancsot! - -Megj: A kurzor gomboknak is működniük kell, de a hjkl használatával - sokkal gyorsabban tud, mozogni, ha hozzászokik. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.2. lecke: BE ÉS KILÉPÉS A VIMBŐL - - - !! MEGJ: Mielőtt végrehajtja az alábbi lépéseket, olvassa végig a leckét !! - - 1. Nyomja meg az gombot (hogy biztosan normál módban legyen). - - 2. Írja: :q! . - ----> Ezzel kilép a szerkesztőből a változások MENTÉSE NÉLKÜL. - Ha menteni szeretné a változásokat és kilépni, írja: - :wq - - 3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe az - oktatóba hozza: - Ez valószínűleg: vimtutor - Normális esetben ezt írná: vim tutor.hu - ----> 'vim' jelenti a vimbe belépést, 'tutor.hu' a fájl, amit szerkeszteni kíván. - - 4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket - 1-től 3-ig, hogy kilépjen és visszatérjen a szerkesztőbe. Azután - menjen az 1.3. leckére. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS - - -** Normál módban nyomjon x-et, hogy a kurzor alatti karaktert törölje. ** - - 1. Mozgassa a kurzort a ---> kezdetű sorra! - - 2. A hibák kijavításához mozgassa a kurzort amíg a törlendő karakter - fölé nem ér. - - 3. Nyomja meg az x gombot, hogy törölje a nemkívánt karaktert. - - 4. Ismételje a 2, 3, 4-es lépéseket, hogy kijavítsa a mondatot. - ----> ŐŐszi éjjjell izziik aa galaggonya rruuhája. - - 5. Ha a sor helyes, ugorjon a 1.4. leckére. - -MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS - - - ** Normál módban i megnyomásával lehet beilleszteni. ** - - 1. Az alábbi első ---> kezdetű sorra menjen. - - 2. Ahhoz, hogy az elsőt azonossá tegye a másodikkal, mozgassa a kurzort - az első karakterre, amely UTÁN szöveget kell beszúrni. - - 3. Nyomjon i-t és írja be a megfelelő szöveget. - - 4. Amikor mindent beírt, nyomjon -et, hogy Normál módba visszatérjen. - Ismételje a 2 és 4 közötti lépéseket, hogy kijavítsa a mondatot. - ----> Az átható soól hizik pár ész. ----> Az itt látható sorból hiányzik pár rész. - - 5. Ha már begyakorolta a beszúrást, menjen az alábbi összefoglalóra. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1. LECKE ÖSSZEFOGLALÓJA - - - 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. - h (balra) j (le) k (fel) l (jobbra) - - 2. A Vimbe (a $ prompttól) így léphet be: vim FILENAME - - 3. A Vimből így léphet ki: :q! a változtatások eldobásával. - vagy így: :wq a változások mentésével. - - 4. A kurzor alatti karakter törlése normál módban: x - - 5. Szöveg beszúrása a kurzor után normál módban: - i gépelje be a szöveget - -MEGJ: Az megnyomása normál módba viszi, vagy megszakít egy nem befejezett - részben befejezett parancsot. - -Most folytassuk a 2. leckével! - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.1. lecke: TÖRLŐ UTASÍTÁSOK - - - ** dw töröl a szó végéig. ** - - 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! - - 2. Mozgassa a kurzort a ---> kezdetű sorra! - - 3. Mozgassa a kurzort arra annak a szónak az elejére, amit törölni szeretne. - Törölje az állatokat a mondatból. - - 4. A szó törléséhez írja: dw - - MEGJ: Ha rosszul kezdte az utasítást csak nyomjon gombot - a megszakításához. - ----> Pár szó kutya nem uhu illik pingvin a mondatba tehén. - - 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.2. lecke: MÉG TÖBB TÖRLŐ UTASÍTÁS - - - ** d$ beírásával a sor végéig törölhet. ** - - 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! - - 2. Mozgassa a kurzort a ---> kezdetű sorra! - - 3. Mozgassa a kurzort a helyes sor végére (az első . UTÁN)! - - 4. d$ begépeléséveltörölje a sor végét! - ----> Valaki a sor végét kétszer gépelte be. kétszer gépelte be. - - - 5. Menjen a 2.3. leckére, hogy megértse mi történt! - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.3. lecke: UTASÍTÁSOKRÓL ÉS OBJEKTUMOKRÓL - - - A d (delete=törlés) utasítás formája a következő: - - [szám] d objektum VAGY d [szám] objektum - Ahol: - szám - hányszor hajtódjon végre a parancs (elhagyható, alapérték=1). - d - a törlés (delete) utasítás. - objektum - amin a parancsnak teljesülnie kell (alább listázva). - - Objektumok rövid listája: - w - a kurzortól a szó végéig, beleértve a szóközt. - e - a kurzortól a szó végéig, NEM beleértve a szóközt. - $ - a kurzortól a sor végéig. - -MEGJ: Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül - a kurzor oda kerül, amit az objektumlista megad. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.4. lecke: EGY KIVÉTEL A 'PARANCSOBJEKTUM' ALÓL - - - ** dd beírásával törölheti az egész sort. ** - - A teljes sor törlésének gyakorisága miatt a Vi tervezői elhatározták, - hogy könnyebb lenne csupán a d-t kétszer megnyomni, hogy egy sort töröljünk. - - 1. Mozgassa a kurzort az alábbi kifejezések második sorára! - 2. dd begépelésével törölje a sort! - 3. Menjen a 4. (eredetileg 5.) sorra! - 4. 2dd (ugyebár szám-utasítás-objektum) begépelésével töröljön két sort! - - 1) Alvó szegek a jéghideg homokban, - 2) - kezdi a költő - - 3) Plakátmagányban ázó éjjelek. - 4) Pingvinek ne féljetek, - 5) Távolról egy vaku villant, - 6) Égve hagytad a folyosón a villanyt. - 7) Ma ontják véremet. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS - - -** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. ** - - 1. Menjünk az alábbi ---> kezdetű sor első hibájára! - 2. x lenyomásával törölje az első felesleges karaktert! - 3. u megnyomásával vonja vissza az utolsónak végrehajtott utasítást! - 4. Másodjára javítson ki minden hibát a sorben az x utasítással! - 5. Most nagy U -val állítsa vissza a sor eredeti állapotát! - 6. Nyomja meg az u gombot párszor, hogy az U és sz előző utasításokat - visszaállítsa! - 7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a - visszavont parancsokat (redo)! - ----> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. - - 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2. LECKE ÖSSZEFOGLALÓJA - - - 1. Törlés a kurzortól a szó végéig: dw - - 2. Törlés a kurzortól a sor végéig: d$ - - 3. Egész sor törlése: dd - - 4. Egy utasítás alakja normál módban: - - [szám] utasítás objektum VAGY utasítás [szám] objektum - ahol: - szám - hányszor ismételjük a parancsot - utasítás - mit tegyünk, pl. d a törléskor - objektum - mire hasson az utasítás, például w (szó=word), - $ (a sor végéig), stb. - - 5. Az előző tett visszavonása (undo): u (kis u) - A sor összes változásának visszavonása: U (nagy U) - Visszavonások visszavonása: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.1. lecke: A BEILLESZTÉS (PUT) PARANCS - - - ** p leütésével az utolsónak töröltet a kurzor után illeszhetjük. ** - - 1. Mozgassuk a kurzort az alábbi sorok első sorára. - - 2. dd leütésével töröljük a sort és eltérolódik a Vim pufferében. - - 3. Mozgassuk a kurzort azelőtt a sor ELŐTTI sorba, ahová mozgatni - szeretnénk a törölt sort. - - 4. Normál módban írjunk p betűt a törölt sor beillesztéséhez. - - 5. Folytassuk a 2-4. utasításokkal hogy a helyes sorrendet kapjuk. - - d) Can you learn too? - b) Violets are blue, - c) Intelligence is learned, - a) Roses are red, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS - - -** r és a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. ** - - 1. Mozgassuk a kurzort az első ---> kezdetű sorra! - - 2. Mozgassuk a kurzort az első hiba fölé! - - 3. r majd a kívánt karakter leütésével változtassuk meg a hibásat! - - 4. A 2. és 3. lépésekkel javítsuk az összes hibát! - ----> Whan this lime was tuoed in, someone presswd some wrojg keys! ----> When this line was typed in, someone pressed some wrong keys! - - 5. Menjünk a 3.2. leckére! - -MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.3. lecke: A CSERE (CHANGE) PARANCS - - - ** A szó egy részének megváltoztatásához írjuk: cw . ** - - 1. Mozgassuk a kurzort az első ---> kezdetű sorra! - - 2. Vigye a kurzort a Ezen szó z betűje fölé! - - 3. cw és a helyes szórész (itt 'bben') beírásával javítsa a szót! - - 4. lenyomása után a következő hibára ugorjon (az első cserélendő - karakterre)! - - 5. A 3. és 4. lépések ismétlésével az első mondatot tegye a másodikkal - azonossá! - ----> Ezen a sorrrrr pár szóra meg kell változzanak a change utaskíréső. ----> Ebben a sorban pár szót meg kell változtatni a change utasítással. - -Vegyük észre, hogy a cw nem csak a szót írja át, hanem beszúró -(insert) módba vált. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.4. lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL - - - ** A c utasítás használható ugyanazokkal az objektumokkal mint a törlés ** - - 1. A change utasítás a törléssel azonosan viselkedik. A forma: - - [szám] c objektum OR c [szám] objektum - - 2. Az objektumok is azonosak, pl. w (szó), $ (sorvég), stb. - - 3. Mozgassuk a kurzort az első ---> kezdetű sorra! - - 4. Menjünk az első hibára! - - 5. c$ begépelésével a sorvégeket tegyük azonossá és nyomjunk -et! - ----> Ennek a sornak a vége kiigazításra szorul, hogy megegyezzen a másodikkal. ----> Ennek a sornak a vége a c$ paranccsal változtatható meg. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3. LECKE ÖSSZEFOGLALÓJA - - - 1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget - a kurzor UTÁN helyezi (ha sor került törlésre, a kurzor allatti sorba). - - 2. A kurzor alatti karakter átírásához az r-et és azt a karaktert - nyomjuk, amellyel az eredetit felül szeretnénk írni. - - 3. A változtatás (c) utasítás a karaktertől az objektum végéig - változtatja meg az objektumot. Például a cw a kurzortól a szó végéig, - a c$ a sor végéig. - - 4. A változtatás formátuma: - - [szám] c objektum VAGY c [szám] objektum - -Ugorjunk a következő leckére! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.1. lecke: HELY ÉS FÁJLÁLLAPOT - - - ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát. - SHIFT-G leütésével a fájl adott sorára ugorhatunk. ** - - Megj: Olvassuk el az egész leckét a lépések végrehajtása előtt!! - - 1. Tartsuk nyomva a Ctrl gombot és nyomjunk g-t. Az állapotsor - megjelenik a lap alján a fájlnévvel és az aktuális sor sorszámával. - Jegyezzük meg a sorszámot a 3. lépéshez! - - 2. Nyomjunk Shift-G-t a lap aljára ugráshoz! - - 3. Üssük be az eredeti sor számát, majd üssünk shift-G-t! Ezzel - visszajutunk az eredeti sorra ahol Ctrl-g-t nyomtunk. - (A beírt szám NEM fog megjelenni a képernyőn.) - - 4. Ha megjegyezte a feladatot, hajtsa végre az 1-3. lépéseket! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.2. lecke: A KERESÉS (SEARCH) PARANCS - - - ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. ** - - 1. Normál módban üssünk / karaktert! Ez és a kurzor megjelenik - a képernyő alján, ahogy a : utasítás is. - - 2. Írjuk be: 'hiibaa' ! Ez az a szó amit keresünk. - - 3. A kifejezés újabb kereséséhez üssük le egyszerűen: n . - A kifejezés ellenkező irányban történő kereséséhez ezt üssük be: Shift-N . - - 4. Ha visszafelé szeretne keresni, akkor ? kell a ! helyett. - ----> "hiibaa" nem a helyes módja a hiba leírásának; a hiibaa egy hiba. - -Megj: Ha a keresés eléri a fájl végét, akkor az elején kezdi. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.3. lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE - - - ** % leütésével megtaláljuk a ),], vagy } párját. ** - - 1. Helyezze a kurzort valamelyik (, [, vagy { zárójelre a ---> kezdetű - sorban! - - 2. Üssön % karaktert! - - 3. A kurzor a zárójel párjára fog ugrani. - - 4. % leütésével visszaugrik az eredeti zárójelre. - ----> Ez ( egy tesztsor (-ekkel, [-ekkel ] és {-ekkel } a sorban. )) - -Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a - zárójelek nem párosak! - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA - - - ** :s/új/régi/g begépelésével az 'új'-ra cseréljük a 'régi'-t. ** - - 1. Menjünk a ---> kezdetű sorra! - - 2. Írjuk be: :s/eggy/egy . Ekkor csak az első változik meg a - sorban. - - 3. Most ezt írjuk: :s/eggy/egg/g amely globálisan helyettesít - a sorban, azaz minden előfordulást. - Ez a sorban minden előfordulást helyettesít. - ----> eggy heggy meggy, szembe jön eggy másik heggy. - - 4. Két sor között a karaktersor minden előfordulásának helyettesítése: - :#,#s/régi/új/g ahol #,# a két sor sorszáma. - :%s/régi/új/g a fájlbeli összes előfordulás helyettesítése. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4. LECKE ÖSSZEFOGLALÓJA - - - 1. Ctrl-g kiírja az kurzor helyét a fájlban és a fájl állapotát. - Shift-G a fájl végére megy, gg az elejére. Egy szám után - Shift-G az adott számú sorra ugrik. - - 2. / után egy kifejezés ELŐREFELE keresi a kifejezést. - 2. ? után egy kifejezés VISSZAFELE keresi a kifejezést. - Egy keresés után az n a következő előfordulást keresi azonos irányban - Shift-N az ellenkező irányban keres. - - 3. % begépelésével, ha (,),[,],{, vagy } karakteren vagyunk a zárójel - párjára ugrik. - - 4. az első régi helyettesítése újjal a sorban :s/régi/új - az összes régi helyettesítése újjal a sorban :s/régi/új/g - két sor közötti kifejezésekre :#,#s/régi/új/g - # helyén az aktuális sor (.) és az utolsó ($) is állhat :.,$/régi/új/g - A fájlbeli összes előfordulás helyettesítése :%s/régi/új/g - Mindenkori megerősítésre vár 'c' hatására :%s/régi/új/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.1. lecke: KÜLSŐ PARANCS VÉGREHAJTÁSA - - - ** :! után külső parancsot írva végrehajtódik a parancs. ** - - 1. Írjuk be az ismerős : parancsot, hogy a kurzort a képernyő aljára - helyezzük. Ez lehetővé teszi egy parancs beírását. - - 2. ! (felkiáltójel) beírásával tegyük lehetővé külső héj (shell)-parancs - végrehajtását. - - 3. Írjunk például ls parancsot a ! után majd üssünk -t. Ez ki - fogja listázni a könyvtárunkat ugyanúgy, mintha a shell promptnál - lennénk. Vagy írja ezt :!dir ha az ls nem működik. - -Megj: Ilymódon bármely külső utasítás végrehajtható. - -Megj: Minden : parancs után -t kell ütni. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.2. lecke: BŐVEBBEN A FÁJLOK ÍRÁSÁRÓL - - - ** A fájlok változásait így írhatjuk ki :w FÁJLNÉV. ** - - 1. :!dir vagy :!ls beírásával listázzuk a könyvtárunkat! - Ön már tudja, hogy -t kell ütnie utána. - - 2. Válasszon egy fájlnevet, amely még nem létezik pl. TESZT! - - 3. Írja: :w TESZT (ahol TESZT a választott fájlnév)! - - 4. Ez elmenti a teljes fájlt (a Vim oktatóját) TESZT néven. - Ellenőrzésképp írjuk ismét :!dir hogy lássuk a könyvtárat! - (Felfelé gombbal : után az előző utasítások visszahozhatóak.) - -Megj: Ha Ön kilépne a Vimből és és visszatérne a TESZT fájlnévvel, akkor a - fájl az oktató mentéskori pontos másolata lenne. - - 5. Távolítsa el a fájlt (MS-DOS): :!del TESZT - vagy (Unix): :!rm TESZT - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.3. lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA - - - ** A fájl egy részének kiírásához írja :#,# w FÁJLNÉV ** - - 1. :!dir vagy :!ls beírásával listázza a könyvtárat, és válasszon egy - megfelelő fájlnevet, pl. TESZT. - - 2. Mozgassa a kurzort ennek az oldalnak a tetejére, és nyomjon - Ctrl-g-t, hogy megtudja a sorszámot. JEGYEZZE MEG A SZÁMOT! - - 3. Most menjen a lap aljára, és üsse be ismét: Ctrl-g. EZT A SZÁMOT - IS JEGYEZZE MEG! - - 4. Ha csak ezt a részét szeretné menteni a fájlnak, írja :#,# w TESZT - ahol #,# a két sorszám, amit megjegyzett, TESZT az Ön fájlneve. - - 5. Ismét nézze meg, hogy a fájl ott van (:!dir) de NE törölje. - - 6. Vimben létezik egy másik lehetőség: nyomja meg a Shift-V gombpárt - az első menteni kívánt soron, majd menjen le az utolsóra, ezután - írja :w TESZT2 Ekkor a TESZT2 fájlba kerül a kijelölt rész. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.4. lecke: RETRIEVING AND MERGING FILES - - - ** Egy fájl tartalmának beillesztéséhez írja :r FÁJLNÉV ** - - 1. :!dir beírásával nézze meg, hogy az Ön TESZT fájlja létezik még. - - 2. Helyezze a kurzort ennek az oldalnak a tetejére. - -MEGJ: A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva - keresse meg ismét ezt a leckét. - - 3. Most szúrja be a TESZT nevű fájlt a :r TESZT paranccsal, ahol - TESZT az Ön fájljénak a neve. - -MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. - - 4. Hogy ellenőrizzük, hogy a fájlt tényleg beillsztettük, menjen - vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti - mellett a fájlból bemásolt is ott van. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5. LECKE ÖSSZEFOGLALÓJA - - - 1. :!parancs végrehajt egy külső utasítást. - - Pár hasznos példa: - (MS-DOS) (Unix) - :!dir :!ls - könyvtárlista kiírása. - :!del FÁJLNÉV :!rm FÁJLNÉV - FÁJLNÉV nevű fájl törlése. - - 2. :w FÁJLNÉV kiírja a jelenlegi Vim-fájlt a lemezre FÁJNÉV néven. - - 3. :#,#w FÁJLNÉV kiírja a két sorszám (#) közötti sorokat FÁJLNÉV-be - Másik lehetőség, hogy a kezdősornál Ctrl-v-t nyom lemegy az utolsó - sorra, majd ezt üti be :w FÁJLNÉV - - 4. :r FÁJLNÉV beolvassa a FÁJLNÉV fájlt és behelyezi a jelenlegi fájlba - a kurzorpozició utáni sorba. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.1. lecke: A MEGNYITÁS (OPEN) PARANCS - - -** o beírásával nyithat egy új sort a kurzor alatt és válthat beszúró módba ** - - 1. Mozgassuk a kurzort a ---> kezdetű sorra. - - 2. o (kicsi) beírásával nyisson egy sort a kurzor ALATT! Ekkor - automatikusan beszúró (insert) módba kerül. - - 3. Másolja le a ---> jelű sort és megnyomásával lépjen ki - a beszúró módból. - ----> Az o lenyomása után a kurzor a következő sor elején áll beszúró módban. - - 4. A kurzor FELETTI for megnyitásához egyzserűen a nagy O betűt írjon -kicsi helyett. Próbálja ki a következő soron! -Nyisson egy új sort efelett Shift-O megnyomásával, mialatt a kurzor -ezen a soron áll. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.2. lecke: AZ APPEND PARANCS - - - ** a lenyomásával a kuror UTÁN szúrhatunk szöveget. ** - - 1. Mozgassuk a kurzort a következő ---> kezdetű sor végére úgy, - hogy normál módban $ ír be. - - 2. a (kicsi) leütésével szöveget szúrhat be AMöGÉ a karakter mögé, - amelyen a kurzor áll. - (A nagy A az egész sor végére írja a szöveget.) - -Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében - a Vi-ban nem lehetséges, ezért abban az a nélkül elég körülményes - a sor végéhez szöveget írni. - - 3. Egészítse ki az első sort. Vegye észre, hogy az a utasítás (append) - teljesen egyezik az i-vel (insert) csupán a beszúrt szöveg helye - különbözik. - ----> Ez a sor lehetővé teszi Önnek, hogy gyakorolja ----> Ez a sor lehetővé teszi Önnek, hogy gyakorolja a sor végére beillesztést. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.3. lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA - - - ** Nagy R beírásával írhat felül több mint egy karaktert. ** - - 1. Mozgassuk a kurzort az első ---> kezdetű sorra! - - 2. Helyezze a kurzort az első szó elejére amely eltér a második - ---> kezdetű sor tartalmától (a 'az utolsóval' résztől). - - 3. Nyomjon R karaktert és írja ét a szöveg maradékát az első sorban - úgy, hogy a két sor egyező legyen. - ----> Az első sort tegye azonossá az utolsóval: használja a gombokat. ----> Az első sort tegye azonossá a másodikkal: írjon R-t és az új szöveget. - - 4. Jegyezzük meg, ha -et nyomok, akkor a változatlanuk hagyott - szövegek változatlanok maradnak. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.4. lecke: BEÁLLÍTÁSOK - -** Állítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetűktől ** - - 1. Keressük meg az 'ignore'-t az beírva: - /ignore - Ezt ismételjük többször az n billentyűvel - - 2. Állítsuk be az 'ic' (Ignore case) lehetőséget így: - :set ic - - 3. Most keressünk ismét az 'ignore'-ra n-nel - Ismételjük meg többször a keresést: n - - 4. Állítsuk be a 'hlsearch' és 'incsearch' lehetőségeket: - :set hls is - - 5. Most ismét írjuk be a keresőparancsot, és lássuk mi történik: - /ignore - - 6. A kiemelést szüntessük meg alábbi utasítások egyikével: - :set nohls vagy :nohlsearch -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6. LECKE ÖSSZEFOGLALÓJA - - - 1. o beírásával új sort nyitunk meg a sor ALATT és a kurzor az új - sorban lesz beszúrás-módban. - Nagy O a sor FELETT nyit új sort, és oda kerül a kurzor. - - 2. a beírásával az aktuális karaktertől UTÁN (jobbra) szúrhatunk be szöveget. - Nagy A automatikusan a sor legvégéhez adja hozzá a szöveget. - - 3. A nagy R beütésével átíró (replace) módba kerülünk lenyomásáig. - - 4. ":set xxx" beírásával az "xxx" opció állítható be. - - - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7. lecke: AZ ON-LINE SÚGÓ PARANCSAI - - - ** Az online súgórendszer használata ** - - A Vim részletes súgóval rendelkezik. Induláshoz a következők egyikét - tegye: - - nyomja meg a gombot (ha van ilyen) - - nyomja meg az gombot (ha van ilyen) - - írja be: :help - - :q beírásával zárhatja be a súgóablakot. - - Majdnem minden témakörről találhat súgót, argumentum megadásával - ":help" utasítás . Próbálja az alábbiakat ki (-t ne felejtsük): - - :help w - :help c_, 2006-2008 - diff --git a/share/vim/vim73/tutor/tutor.ja.euc b/share/vim/vim73/tutor/tutor.ja.euc deleted file mode 100644 index 51343934..00000000 --- a/share/vim/vim73/tutor/tutor.ja.euc +++ /dev/null @@ -1,975 +0,0 @@ -=============================================================================== -= V I M ¶µ ËÜ (¥Á¥å¡¼¥È¥ê¥¢¥ë) ¤Ø ¤è ¤¦ ¤³ ¤½ - Version 1.7 = -=============================================================================== - - Vim ¤Ï¡¢¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ÇÀâÌÀ¤¹¤ë¤Ë¤Ï¿¤¹¤®¤ëÄø¤Î¥³¥Þ¥ó¥É¤òÈ÷¤¨¤¿Èó¾ï - ¤Ë¶¯ÎϤʥ¨¥Ç¥£¥¿¡¼¤Ç¤¹¡£¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ï¡¢¤¢¤Ê¤¿¤¬ Vim ¤òËüǽ¥¨¥Ç¥£ - ¥¿¡¼¤È¤·¤Æ»È¤¤¤³¤Ê¤»¤ë¤è¤¦¤Ë¤Ê¤ë¤Î¤Ë½½Ê¬¤Ê¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤ÆÀâÌÀ¤ò¤¹¤ë¤è¤¦ - ¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ - - ¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò´°Î»¤¹¤ë¤Î¤ËɬÍפʻþ´Ö¤Ï¡¢³Ð¤¨¤¿¥³¥Þ¥ó¥É¤ò»î¤¹¤Î¤Ë¤É¤ì¤À - ¤±»þ´Ö¤ò»È¤¦¤Î¤«¤Ë¤â¤è¤ê¤Þ¤¹¤¬¡¢¤ª¤è¤½25¤«¤é30ʬ¤Ç¤¹¡£ - - ATTENTION: - °Ê²¼¤ÎÎý½¬ÍÑ¥³¥Þ¥ó¥É¤Ë¤Ï¤³¤Îʸ¾Ï¤òÊѹ¹¤¹¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£Îý½¬¤ò»Ï¤á¤ëÁ° - ¤Ë¥³¥Ô¡¼¤òºîÀ®¤·¤Þ¤·¤ç¤¦("vimtutor"¤·¤¿¤Ê¤é¤Ð¡¢´û¤Ë¥³¥Ô¡¼¤µ¤ì¤Æ¤¤¤Þ¤¹)¡£ - - ¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤¬¡¢»È¤¦¤³¤È¤Ç³Ð¤¨¤é¤ì¤ë»ÅÁȤߤˤʤäƤ¤¤ë¤³¤È¤ò¡¢¿´¤· - ¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Àµ¤·¤¯³Ø½¬¤¹¤ë¤Ë¤Ï¥³¥Þ¥ó¥É¤ò¼ÂºÝ¤Ë»î¤µ¤Ê¤±¤ì¤Ð - ¤Ê¤é¤Ê¤¤¤Î¤Ç¤¹¡£Ê¸¾Ï¤òÆɤó¤À¤À¤±¤Ê¤é¤Ð¡¢¤­¤Ã¤È˺¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹!¡£ - - ¤µ¤¡¡¢Caps¥í¥Ã¥¯(Shift-Lock)¥­¡¼¤¬²¡¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤·¤¿¸å¡¢²èÌÌ¤Ë - ¥ì¥Ã¥¹¥ó1.1 ¤¬Á´Éôɽ¼¨¤µ¤ì¤ë¤È¤³¤í¤Þ¤Ç¡¢j ¥­¡¼¤ò²¡¤·¤Æ¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ - ¤·¤ç¤¦¡£ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.1: ¥«¡¼¥½¥ë¤Î°ÜÆ° - - - ** ¥«¡¼¥½¥ë¤ò°ÜÆ°¤¹¤ë¤Ë¤Ï¡¢¼¨¤µ¤ì¤ëÍÍ¤Ë h,j,k,l ¤ò²¡¤·¤Þ¤¹ ** - ^ - k ¥Ò¥ó¥È: h ¥­¡¼¤Ïº¸Êý¸þ¤Ë°ÜÆ°¤·¤Þ¤¹¡£ - < h l > l ¥­¡¼¤Ï±¦Êý¸þ¤Ë°ÜÆ°¤·¤Þ¤¹¡£ - j j ¥­¡¼¤Ï²¼Ìð°õ¥­¡¼¤Î¤è¤¦¤Ê¥­¡¼¤Ç¤¹¡£ - v - 1. °ÜÆ°¤Ë´·¤ì¤ë¤Þ¤Ç¡¢¥¹¥¯¥ê¡¼¥ó¤Ç¥«¡¼¥½¥ë°ÜÆ°¤µ¤»¤Þ¤·¤ç¤¦¡£ - - 2. ²¼¤Ø¤Î¥­¡¼(j)¤ò²¡¤·¤Ä¤Å¤±¤ë¤È¡¢Ï¢Â³¤·¤Æ°ÜÆ°¤Ç¤­¤Þ¤¹¡£ - ¤³¤ì¤Ç¼¡¤Î¥ì¥Ã¥¹¥ó¤Ë°ÜÆ°¤¹¤ëÊýË¡¤¬¤ï¤«¤ê¤Þ¤·¤¿¤Í¡£ - - 3. ²¼¤Ø¤Î¥­¡¼¤ò»È¤Ã¤Æ¡¢¥ì¥Ã¥¹¥ó1.2 ¤Ë°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - -Note: ²¿¤ò¥¿¥¤¥×¤·¤Æ¤¤¤ë¤«È½¤é¤Ê¤¯¤Ê¤Ã¤¿¤é¡¢¤ò²¡¤·¤Æ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤· - ¤Þ¤¹¡£¤½¤ì¤«¤éÆþÎϤ·¤è¤¦¤È¤·¤Æ¤¤¤¿¥³¥Þ¥ó¥É¤òºÆÆþÎϤ·¤Þ¤·¤ç¤¦¡£ - -Note: ¥«¡¼¥½¥ë¥­¡¼¤Ç¤â°ÜÆ°¤Ç¤­¤Þ¤¹¡£¤·¤«¤· hjkl ¤Ë°ìÅÙ´·¤ì¤Æ¤·¤Þ¤¨¤Ð¡¢¤Ï¤ë¤« - ¤Ë®¤¯°ÜÆ°¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤Ç¤·¤ç¤¦¡£¤¤¤ä¥Þ¥¸¤Ç! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.2: VIM ¤Îµ¯Æ°¤È½ªÎ» - - - !! NOTE: °Ê²¼¤Î¤¢¤é¤æ¤ë¥¹¥Æ¥Ã¥×¤ò¹Ô¤¦Á°¤Ë¡¢¤³¤Î¥ì¥Ã¥¹¥ó¤òÆɤߤޤ·¤ç¤¦!! - - 1. ¥­¡¼¤ò²¡¤·¤Þ¤·¤ç¤¦¡£(³Î¼Â¤Ë¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤¹¤ë¤¿¤á) - - 2. ¼¡¤Î¤è¤¦¤Ë¥¿¥¤¥×: :q! - ¤³¤ì¤Ë¤è¤êÊÔ½¸¤·¤¿ÆâÍƤòÊݸ¤»¤º¤Ë¥¨¥Ç¥£¥¿¤¬½ªÎ»¤·¤Þ¤¹¡£ - - 3. ¥·¥§¥ë¥×¥í¥ó¥×¥È¤¬½Ð¤Æ¤­¤¿¤é¡¢¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò»Ï¤á¤ë°Ù¤Ë¤Ë¥³¥Þ¥ó¥É - ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ - ¤½¤Î¥³¥Þ¥ó¥É¤Ï: vimtutor - - 4. ¤³¤ì¤Þ¤Ç¤Î¥¹¥Æ¥Ã¥×¤ò³Ð¤¨¼«¿®¤¬¤Ä¤¤¤¿¤Ê¤é¤Ð¡¢¥¹¥Æ¥Ã¥× 1 ¤«¤é 3 ¤Þ¤Ç¤ò¼Â - ºÝ¤Ë»î¤·¤Æ¡¢Vim ¤ò1ÅÙ½ªÎ»¤·¤Æ¤«¤éºÆ¤Óµ¯Æ°¤·¤Þ¤·¤ç¤¦¡£ - -NOTE: :q! ¤ÏÁ´¤Æ¤ÎÊѹ¹¤òÇË´þ¤·¤Þ¤¹¡£¥ì¥Ã¥¹¥ó¤Ë¤ÆÊѹ¹¤ò¥Õ¥¡¥¤¥ë¤ËÊÝ - ¸¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤âÊÙ¶¯¤·¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£ - - 5. 1.3¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤µ¤»¤Þ¤·¤ç¤¦¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.3: ¥Æ¥­¥¹¥ÈÊÔ½¸ - ºï½ü - - - ** ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤Æ¥«¡¼¥½¥ë¤Î²¼¤Îʸ»ú¤òºï½ü¤¹¤ë¤Ë¤Ï x ¤ò²¡¤·¤Þ¤¹ ** - - 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 2. ´Ö°ã¤¤¤ò½¤Àµ¤¹¤ë¤¿¤á¤Ë¡¢ºï½ü¤¹¤ëºÇ½é¤Îʸ»ú¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ - - 3. ÉÔɬÍפÊʸ»ú¤ò x ¤ò²¡¤·¤Æºï½ü¤·¤Þ¤·¤ç¤¦¡£ - - 4. ʸ¤¬Àµ¤·¤¯¤Ê¤ë¤Þ¤Ç ¥¹¥Æ¥Ã¥× 2 ¤«¤é 4 ¤ò·«¤êÊÖ¤·¤Þ¤·¤ç¤¦¡£ - ----> ¤½¤Î ¤¦¤¦¤µ¤® ¤Ï ¤Ä¤Ä¤­¤­ ¤ò ¤³¤¨¤¨¤Æ¤Æ ¤È¤Ó¤Ï¤Í¤¿¤¿ - - 5. ¹Ô¤¬Àµ¤·¤¯¤Ê¤Ã¤¿¤é¡¢¥ì¥Ã¥¹¥ó 1.4 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ - -NOTE: Á´¤Æ¤Î¥ì¥Ã¥¹¥ó¤òÄ̤¸¤Æ¡¢³Ð¤¨¤è¤¦¤È¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¼ÂºÝ¤Ë¤ä¤Ã¤Æ¤ß¤Þ¤·¤ç¤¦¡£ - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.4: ¥Æ¥­¥¹¥ÈÊÔ½¸ - ÁÞÆþ - - - ** ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤Æ¥Æ¥­¥¹¥È¤òÁÞÆþ¤¹¤ë¤Ë¤Ï i ¤ò²¡¤·¤Þ¤¹ ** - - 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿ºÇ½é¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 2. 1¹ÔÌܤò2¹ÔÌܤÈƱ¤¸Íͤˤ¹¤ë¤¿¤á¤Ë¡¢¥Æ¥­¥¹¥È¤òÁÞÆþ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤°ÌÃÖ - ¤Î¼¡¤Îʸ»ú¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ - - 3. i ¥­¡¼¤ò²¡¤·¤Æ¤«¤é¡¢Äɲä¬É¬ÍפÊʸ»ú¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - - 4. ´Ö°ã¤¤¤ò½¤Àµ¤·¤¿¤é ¤ò²¡¤·¤Æ¥³¥Þ¥ó¥É¥â¡¼¥É¤ËÌá¤ê¡¢Àµ¤·¤¤Ê¸¤Ë¤Ê¤ëÍÍ - ¤Ë¥¹¥Æ¥Ã¥× 2 ¤«¤é 4 ¤ò·«¤êÊÖ¤·¤Þ¤·¤ç¤¦¡£ - ----> ¤³¤Î ¤Ë¤Ï ­¤ê¤Ê¤¤ ¥Æ¥­¥¹¥È ¤¢¤ë¡£ ----> ¤³¤Î ¹Ô ¤Ë¤Ï ´ö¤Ä¤« ­¤ê¤Ê¤¤ ¥Æ¥­¥¹¥È ¤¬ ¤¢¤ë¡£ - - 5. ÁÞÆþ¤ÎÊýË¡¤¬¤ï¤«¤Ã¤¿¤é²¼¤Î¥ì¥Ã¥¹¥ó1¤ÎÍ×Ìó¤ò¸«¤Þ¤·¤ç¤¦¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.5: ¥Æ¥­¥¹¥ÈÊÔ½¸ - Äɲà - - - ** ¥Æ¥­¥¹¥ÈÄɲ乤ë¤Ë¤Ï A ¤ò²¡¤·¤Þ¤·¤ç¤¦ ** - - 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿ºÇ½é¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - ¥«¡¼¥½¥ë¤¬¤½¤Îʸ»ú¾å¤Ë¤¢¤Ã¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ - - 2. Äɲä¬É¬Íפʾì½ê¤Ç A ¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - - 3. ¥Æ¥­¥¹¥È¤òÄɲä·½ª¤¨¤¿¤é¡¢ ¤ò²¡¤·¤Æ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤ËÌá¤ê¤Þ¤·¤ç¤¦¡£ - - 4. 2¹ÔÌܤΠ---> ¤È¼¨¤µ¤ì¤¿¾ì½ê¤Ø°ÜÆ°¤·¡¢¥¹¥Æ¥Ã¥× 2 ¤«¤é 3 ·«¤êÊÖ¤·¤Æʸˡ¤ò - ½¤Àµ¤·¤Þ¤·¤ç¤¦¡£ - ----> ¤³¤³¤Ë¤Ï´Ö°ã¤Ã¤¿¥Æ¥­¥¹¥È¤¬¤¢¤ê - ¤³¤³¤Ë¤Ï´Ö°ã¤Ã¤¿¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤¹¡£ ----> ¤³¤³¤Ë¤â´Ö°ã¤Ã¤¿¥Æ¥­¥¹ - ¤³¤³¤Ë¤â´Ö°ã¤Ã¤¿¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤¹¡£ - - 5. ¥Æ¥­¥¹¥È¤ÎÄɲ䬷ڲ÷¤Ë¤Ê¤Ã¤Æ¤­¤¿¤é¥ì¥Ã¥¹¥ó 1.6 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1.6: ¥Õ¥¡¥¤¥ë¤ÎÊÔ½¸ - - - ** ¥Õ¥¡¥¤¥ë¤òÊݸ¤·¤Æ½ªÎ»¤¹¤ë¤Ë¤Ï :wq ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** - - !! NOTE: °Ê²¼¤Î¥¹¥Æ¥Ã¥×¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¡¢¤Þ¤ºÁ´ÂΤòÆɤó¤Ç¤¯¤À¤µ¤¤!! - - 1. ¥ì¥Ã¥¹¥ó 1.2 ¤Ç¤ä¤Ã¤¿¤è¤¦¤Ë :q! ¤ò¥¿¥¤¥×¤·¤Æ¡¢¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò½ªÎ» - ¤·¤Þ¤¹¡£ - - 2. ¥·¥§¥ë¥×¥í¥ó¥×¥È¤Ç¤³¤Î¥³¥Þ¥ó¥É¤ò¥¿¥¤¥×¤·¤Þ¤¹: vim tutor - 'vim'¤¬ Vim ¥¨¥Ç¥£¥¿¤òµ¯Æ°¤¹¤ë¥³¥Þ¥ó¥É¡¢'tutor' ¤ÏÊÔ½¸¤·¤¿¤¤¥Õ¥¡¥¤¥ë¤Î - ̾Á°¤Ç¤¹¡£Êѹ¹¤·¤Æ¤â¤è¤¤¥Õ¥¡¥¤¥ë¤ò»È¤¤¤Þ¤·¤ç¤¦¡£ - - 3. Á°¤Î¥ì¥Ã¥¹¥ó¤Ç³Ø¤ó¤À¤è¤¦¤Ë¡¢¥Æ¥­¥¹¥È¤òÁÞÆþ¡¢ºï½ü¤·¤Þ¤¹¡£ - - 4. Êѹ¹¤ò¥Õ¥¡¥¤¥ë¤ËÊݸ¤·¤Þ¤¹: :wq - - 5. vimtutor ¤òºÆÅÙµ¯Æ°¤·¡¢°Ê²¼¤ÎÍ×Ìó¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ - - 6. °Ê¾å¤Î¥¹¥Æ¥Ã¥×¤òÆɤó¤ÇÍý²ò¤·¤¿¾å¤Ç¤³¤ì¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 1 Í×Ìó - - - 1. ¥«¡¼¥½¥ë¤ÏÌð°õ¥­¡¼¤â¤·¤¯¤Ï hjkl ¥­¡¼¤Ç°ÜÆ°¤·¤Þ¤¹¡£ - h (º¸) j (²¼) k (¾å) l (±¦) - - 2. Vim ¤òµ¯Æ°¤¹¤ë¤Ë¤Ï¥×¥í¥ó¥×¥È¤«¤é vim ¥Õ¥¡¥¤¥ë̾ ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ - - 3. Vim ¤ò½ªÎ»¤¹¤ë¤Ë¤Ï :q! ¤È¥¿¥¤¥×¤·¤Þ¤¹(Êѹ¹¤òÇË´þ)¡£ - ¤â¤·¤¯¤Ï :wq ¤È¥¿¥¤¥×¤·¤Þ¤¹(Êѹ¹¤òÊݸ)¡£ - - 4. ¥«¡¼¥½¥ë¤Î²¼¤Îʸ»ú¤òºï½ü¤¹¤ë¤Ë¤Ï¡¢¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç x ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ - - 5. ¥«¡¼¥½¥ë¤Î°ÌÃÖ¤Ëʸ»ú¤òÁÞÆþ¤¹¤ë¤Ë¤Ï¡¢¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç i ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ - i ¥Æ¥­¥¹¥È¤Î¥¿¥¤¥× ¥«¡¼¥½¥ë°ÌÃÖ¤ËÄɲà - A ¥Æ¥­¥¹¥È¤ÎÄɲà ¹ÔËö¤ËÄɲà - -NOTE: ¥­¡¼¤ò²¡¤¹¤È¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë°Ü¹Ô¤·¤Þ¤¹¡£¤½¤ÎºÝ¡¢´Ö°ã¤Ã¤¿¤êÆþÎÏÅÓ - Ãæ¤Î¥³¥Þ¥ó¥É¤ò¼è¤ê¾Ã¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ - -¤µ¤Æ¡¢Â³¤±¤Æ¥ì¥Ã¥¹¥ó 2 ¤ò»Ï¤á¤Þ¤·¤ç¤¦¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.1: ºï½ü¥³¥Þ¥ó¥É - - - ** ñ¸ì¤ÎËöÈø¤Þ¤Ç¤òºï½ü¤¹¤ë¤Ë¤Ï dw ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦ ** - - 1. ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç¤¢¤ë¤³¤È¤ò³Îǧ¤¹¤ë¤¿¤á¤Ë ¤ò²¡¤·¤Þ¤·¤ç¤¦¡£ - - 2. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 3. ¾Ã¤·¤¿¤¤Ã±¸ì¤ÎÀèƬ¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 4. ñ¸ì¤òºï½ü¤¹¤ë¤¿¤á¤Ë dw ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - - NOTE: ¥¿¥¤¥×¤¹¤ë¤È¡¢dw ¤È¤¤¤¦Ê¸»ú¤¬¥¹¥¯¥ê¡¼¥ó¤ÎºÇ²¼¹Ô¤Ë¸½¤ï¤ì¤Þ¤¹¡£ - ¥¿¥¤¥×¤ò´Ö°ã¤Ã¤Æ¤·¤Þ¤Ã¤¿»þ¤Ë¤Ï ¤ò²¡¤·¤Æ¤ä¤êľ¤·¤Þ¤·¤ç¤¦¡£ - ----> ¤³¤Î ʸ »æ ¤Ë¤Ï ¤¤¤¯¤Ä¤«¤Î ¤¿¤Î¤·¤¤ ɬÍפΤʤ¤ ñ¸ì ¤¬ ´Þ¤Þ¤ì¤Æ ¤¤¤Þ¤¹¡£ - - 5. 3 ¤«¤é 4 ¤Þ¤Ç¤òʸ¤¬Àµ¤·¤¯¤Ê¤ë¤Þ¤Ç·«¤êÊÖ¤·¡¢¥ì¥Ã¥¹¥ó 2.2 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.2: ¤½¤Î¾¤Îºï½ü¥³¥Þ¥ó¥É - - - ** ¹Ô¤ÎËöÈø¤Þ¤Ç¤òºï½ü¤¹¤ë¤Ë¤Ï d$ ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦ ** - - 1. ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç¤¢¤ë¤³¤È¤ò³Îǧ¤¹¤ë¤Î¤Ë ¤ò²¡¤·¤Þ¤·¤ç¤¦¡£ - - 2. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 3. Àµ¤·¤¤Ê¸¤ÎËöÈø¤Ø¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦(ºÇ½é¤Î . ¤Î¸å¤Ç¤¹)¡£ - - 4. ¹ÔËö¤Þ¤Çºï½ü¤¹¤ë¤Î¤Ë d$ ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - ----> 狼¤¬¤³¤Î¹Ô¤ÎºÇ¸å¤ò2ÅÙ¥¿¥¤¥×¤·¤Þ¤·¤¿¡£ 2ÅÙ¥¿¥¤¥×¤·¤Þ¤·¤¿¡£ - - - 5. ¤É¤¦¤¤¤¦¤³¤È¤«Íý²ò¤¹¤ë¤¿¤á¤Ë¡¢¥ì¥Ã¥¹¥ó 2.3 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.3: ¥ª¥Ú¥ì¡¼¥¿¤È¥â¡¼¥·¥ç¥ó - - - ¿¤¯¤Î¥³¥Þ¥ó¥É¤Ï¥ª¥Ú¥ì¡¼¥¿¤È¥â¡¼¥·¥ç¥ó¤«¤é¥Æ¥­¥¹¥È¤ËÊѹ¹¤ò²Ã¤Þ¤¹¡£ - ºï½ü¥³¥Þ¥ó¥É d ¤Î¥ª¥Ú¥ì¡¼¥¿¤Ï¼¡¤ÎÍͤˤʤäƤ¤¤Þ¤¹: - - d ¥â¡¼¥·¥ç¥ó - - ¤½¤ì¤¾¤ì: - d - ºï½ü¥³¥Þ¥ó¥É¡£ - ¥â¡¼¥·¥ç¥ó - ²¿¤ËÂФ·¤ÆƯ¤­¤«¤±¤ë¤«(°Ê²¼¤Ëµó¤²¤Þ¤¹)¡£ - - ¥ª¥Ú¥ì¡¼¥¿¤Î°ìÉô°ìÍ÷: - w - ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¶õÇò¤ò´Þ¤àñ¸ì¤ÎËöÈø¤Þ¤Ç¡£ - e - ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¶õÇò¤ò´Þ¤Þ¤Ê¤¤Ã±¸ì¤ÎËöÈø¤Þ¤Ç¡£ - $ - ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¹ÔËö¤Þ¤Ç¡£ - - ¤Ä¤Þ¤ê de ¤È¥¿¥¤¥×¤¹¤ë¤È¡¢¥«¡¼¥½¥ë°ÌÃÖ¤«¤éñ¸ì¤Î½ª¤ï¤ê¤Þ¤Ç¤òºï½ü¤·¤Þ¤¹¡£ - -NOTE: ËÁ¸±¤·¤¿¤¤¿Í¤Ï¡¢¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤Æ¥³¥Þ¥ó¥É¤Ê¤·¤Ë¥â¡¼¥·¥ç¥ó¤ò²¡¤·¤Æ - ¤ß¤Þ¤·¤ç¤¦¡£¥«¡¼¥½¥ë¤¬ÌÜŪ¸ì°ìÍ÷¤Ç¼¨¤µ¤ì¤ë°ÌÃ֤˰ÜÆ°¤¹¤ë¤Ï¤º¤Ç¤¹¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.4: ¥â¡¼¥·¥ç¥ó¤Ë¥«¥¦¥ó¥È¤ò»ÈÍѤ¹¤ë - - - ** ²¿²ó¤â¹Ô¤¤¤¿¤¤·«¤êÊÖ¤·¤Î¥â¡¼¥·¥ç¥ó¤ÎÁ°¤Ë¿ôÃͤò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** - - 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤ÎÀèƬ¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ - - 2. 2dw ¤ò¥¿¥¤¥×¤·¤Æñ¸ì2¤Äʬ°ÜÆ°¤·¤Þ¤¹¡£ - - 3. 3e ¤ò¥¿¥¤¥×¤·¤Æ3¤ÄÌܤÎñ¸ì¤Î½ªÃ¼¤Ë°ÜÆ°¤·¤Þ¤¹¡£ - - 4. 0 (¥¼¥í)¤ò¥¿¥¤¥×¤·¤Æ¹ÔƬ¤Ë°ÜÆ°¤·¤Þ¤¹¡£ - - 5. ¥¹¥Æ¥Ã¥× 2 ¤È 3 ¤ò°ã¤¦¿ôÃͤȻȤäƷ«¤êÊÖ¤·¤Þ¤¹¡£ - ----> This is just a line with words you can move around in. - - 6. ¥ì¥Ã¥¹¥ó 2.5 ¤Ë¿Ê¤ß¤Þ¤·¤ç¤¦¡£ - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.5: ¤è¤ê¿¤¯¤òºï½ü¤¹¤ë¤¿¤á¤Ë¥«¥¦¥ó¥È¤ò»ÈÍѤ¹¤ë - - - ** ¥ª¥Ú¥ì¡¼¥¿¤È¥«¥¦¥ó¥È¤ò¥¿¥¤¥×¤¹¤ë¤È¡¢¤½¤ÎÁàºî¤¬Ê£¿ô²ó·«¤êÊÖ¤µ¤ì¤Þ¤¹¡£ ** - - ´û½Ò¤Îºï½ü¤Î¥ª¥Ú¥ì¡¼¥¿¤È¥â¡¼¥·¥ç¥ó¤ÎÁȤ߹ç¤ï¤»¤Ë¥«¥¦¥ó¥È¤òÄɲ乤뤳¤È¤Ç¡¢ - ¤è¤ê¿¤¯¤Îºï½ü¤¬¹Ô¤¨¤Þ¤¹: - d ¿ôÃÍ ¥â¡¼¥·¥ç¥ó - - 1. ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Î¹ÔƬÉôʬ¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 2. UPPER CASE ¤Îñ¸ì2¤Ä¤ò 2dw ¤È¥¿¥¤¥×¤·¤Æºï½ü¤·¤Þ¤¹¡£ - - 3. UPPER CASE ¤È¤¤¤¦Ï¢Â³¤·¤¿Ã±¸ì¤ò¡¢1¤Ä¤Î¥³¥Þ¥ó¥É¤È°Û¤Ê¤ë¥«¥¦¥ó¥È¤ò»ØÄꤷ¡¢ - ¥¹¥Æ¥Ã¥× 1 ¤È 2 ¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ - ----> ¤³¤ÎABC DE¹Ô¤ÎFGHI JK LMN OPñ¸ì¤ÏQ RS TUVåºÎï¤Ë¤Ê¤Ã¤¿¡£ - -NOTE: ¥ª¥Ú¥ì¡¼¥¿ d ¤È¥â¡¼¥·¥ç¥ó¤Î´Ö¤Ë¥«¥¦¥ó¥È¤ò»È¤Ã¤¿¾ì¹ç¡¢¥ª¥Ú¥ì¡¼¥¿¤Î¤Ê¤¤ - ¾ì¹ç¤Î¥â¡¼¥·¥ç¥ó¤Î¤è¤¦¤ËÆ°ºî¤·¤Þ¤¹¡£ - Îã: 3dw ¤È d3w ¤ÏƱÅù¤Ç¡¢3w ¤òºï½ü¤·¤Þ¤¹¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.6: ¹Ô¤ÎÁàºî - - - ** ¹ÔÁ´ÂΤòºï½ü¤¹¤ë¤Ë¤Ï dd ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** - - ¹ÔÁ´ÂΤòºï½ü¤¹¤ëÉÑÅÙ¤¬Â¿¤¤¤Î¤Ç¡¢Vi¤Î¥Ç¥¶¥¤¥Ê¡¼¤Ï¹Ô¤Îºï½ü¤ò d ¤Î2²ó¥¿¥¤¥×¤È - ¤¤¤¦´Êñ¤Ê¤â¤Î¤Ë·è¤á¤Þ¤·¤¿¡£ - - 1. °Ê²¼¤Î¶ç¤Î2¹ÔÌܤ˥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ - 2. dd ¤È¥¿¥¤¥×¤·¤Æ¹Ô¤òºï½ü¤·¤Þ¤¹¡£ - 3. ¤µ¤é¤Ë4¹ÔÌܤ˰ÜÆ°¤·¤Þ¤¹¡£ - 4. 2dd ¤È¥¿¥¤¥×¤·¤Æ2¹Ô¤òºï½ü¤·¤Þ¤¹¡£ - ----> 1) ¥Ð¥é¤ÏÀÖ¤¤¡¢ ----> 2) ¤Ä¤Þ¤é¤Ê¤¤¤â¤Î¤Ï³Ú¤·¤¤¡¢ ----> 3) ¥¹¥ß¥ì¤ÏÀĤ¤¡¢ ----> 4) »ä¤Ï¼Ö¤ò¤â¤Ã¤Æ¤¤¤ë¡¢ ----> 5) »þ·×¤¬»þ¹ï¤ò¹ð¤²¤ë¡¢ ----> 6) º½Åü¤Ï´Å¤¤ ----> 7) ¥ª¥Þ¥¨¥â¥Ê¡¼ - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2.7: ¤ä¤êľ¤·¥³¥Þ¥ó¥É - - - ** ºÇ¸å¤Î¥³¥Þ¥ó¥É¤ò¼è¤ê¾Ã¤¹¤Ë¤Ï u ¤ò²¡¤·¤Þ¤¹¡£U ¤Ï¹ÔÁ´ÂΤμè¾Ã¤Ç¤¹¡£ ** - - 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¡¢ºÇ½é¤Î´Ö°ã¤¤¤Ë¥«¡¼¥½ - ¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - 2. x ¤ò¥¿¥¤¥×¤·¤Æ¤¤¤é¤Ê¤¤ÀèƬ¤Îʸ»ú¤òºï½ü¤·¤Þ¤·¤ç¤¦¡£ - 3. ¤µ¤¡¡¢u ¤ò¥¿¥¤¥×¤·¤ÆºÇ¸å¤Ë¼Â¹Ô¤·¤¿¥³¥Þ¥ó¥É¤ò¼è¤ê¾Ã¤·¤Þ¤·¤ç¤¦¡£ - 4. º£Å٤ϡ¢x ¤ò»ÈÍѤ·¤Æ¸í¤ê¤òÁ´¤Æ½¤Àµ¤·¤Þ¤·¤ç¤¦¡£ - 5. Âçʸ»ú¤Î U ¤ò¥¿¥¤¥×¤·¤Æ¡¢¹Ô¤ò¸µ¤Î¾õÂÖ¤ËÌᤷ¤Þ¤·¤ç¤¦¡£ - 6. u ¤ò¥¿¥¤¥×¤·¤ÆľÁ°¤Î U ¥³¥Þ¥ó¥É¤ò¼è¾Ã¤·¤Þ¤·¤ç¤¦¡£ - 7. ¤Ç¤Ï¥³¥Þ¥ó¥É¤òºÆ¼Â¹Ô¤¹¤ë¤Î¤Ë CTRL-R (CTRL ¤ò²¡¤·¤¿¤Þ¤Þ R ¤òÂǤÄ)¤ò¿ô²ó - ¥¿¥¤¥×¤·¤Æ¤ß¤Þ¤·¤ç¤¦(¼è¾Ã¤Î¼è¾Ã)¡£ - ----> ¤³¤Î¤Î¹Ô¤Î¤Î´Ö°ã¤¤¤ò½¤Àµ¡¹¤·¡¢¸å¤Ç¤½¤ì¤é¤Î½¤Àµ¤ò¤ò¼è¾Ã¤·¤Þ¤Þ¤¹¤¹¡£ - - 8. ¤³¤ì¤Ï¤È¤Æ¤âÊØÍø¤Ê¥³¥Þ¥ó¥É¤Ç¤¹¡£¤µ¤¡¥ì¥Ã¥¹¥ó 2 Í×Ìó¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 2 Í×Ìó - - - 1. ¥«¡¼¥½¥ë°ÌÃÖ¤«¤éñ¸ì¤ÎËöÈø¤Þ¤Ç¤òºï½ü¤¹¤ë¤Ë¤Ï dw ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ - 2. ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¹Ô¤ÎËöÈø¤Þ¤Ç¤òºï½ü¤¹¤ë¤Ë¤Ï d$ ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ - 3. ¹ÔÁ´ÂΤòºï½ü¤¹¤ë¤Ë¤Ï dd ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ - - 4. ¥â¡¼¥·¥ç¥ó¤ò·«¤êÊÖ¤¹¤Ë¤Ï¿ôÃͤòÉÕÍ¿¤·¤Þ¤¹: 2w - 5. Êѹ¹¤ËÍѤ¤¤ë¥³¥Þ¥ó¥É¤Î·Á¼°¤Ï - ¥ª¥Ú¥ì¡¼¥¿ [¿ôÃÍ] ¥â¡¼¥·¥ç¥ó - - ¤½¤ì¤¾¤ì: - ¥ª¥Ú¥ì¡¼¥¿ - ºï½ü d ¤ÎÎà¤Ç²¿¤ò¤¹¤ë¤«¡£ - ¿ôÃÍ - ¤½¤Î¥³¥Þ¥ó¥É¤ò²¿²ó·«¤êÊÖ¤¹¤«¡£ - ¥â¡¼¥·¥ç¥ó - w (ñ¸ì)¤ä $ (¹ÔËö)¤Ê¤É¤ÎÎà¤Ç¡¢¥Æ¥­¥¹¥È¤Î²¿¤ËÂФ·¤ÆƯ¤­¤« - ¤±¤ë¤«¡£ - - 6. ¹Ô¤ÎÀèƬ¤Ë°ÜÆ°¤¹¤ë¤Ë¤Ï¥¼¥í¤ò»ÈÍѤ·¤Þ¤¹: 0 - - 7. Á°²ó¤ÎÆ°ºî¤ò¼è¾Ã¤¹: u (¾®Ê¸»ú u) - ¹ÔÁ´ÂΤÎÊѹ¹¤ò¼è¾Ã¤¹: U (Âçʸ»ú U) - ¼è¾Ã¤·¤Î¼è¾Ã¤·: CTRL-R -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 3.1: Ž¤êÉÕ¤±¥³¥Þ¥ó¥É - - - ** ºÇ¸å¤Ëºï½ü¤µ¤ì¤¿¹Ô¤ò¥«¡¼¥½¥ë¤Î¸å¤ËŽ¤êÉÕ¤±¤ë¤Ë¤Ï p ¤ò¥¿¥¤¥×¤·¤Þ¤¹ ** - - 1. °Ê²¼¤ÎÃÊÍî¤ÎºÇ½é¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 2. dd ¤È¥¿¥¤¥×¤·¤Æ¹Ô¤òºï½ü¤·¡¢Vim ¤Î¥Ð¥Ã¥Õ¥¡¤Ë³ÊǼ¤·¤Þ¤·¤ç¤¦¡£ - - 3. ºï½ü¤·¤¿¹Ô¤¬ËÜÍ褢¤ë¤Ù¤­°ÌÃ֤ξå¤Î¹Ô¤Þ¤Ç¡¢¥«¡¼¥½¥ë¤ò°ÜÆ°¤µ¤»¤Þ¤·¤ç¤¦¡£ - - 4. ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç p ¤ò¥¿¥¤¥×¤·¤Æ³ÊǼ¤·¤¿¹Ô¤ò²èÌ̤ËÌᤷ¤Þ¤¹¡£ - - 5. ½çÈÖ¤¬Àµ¤·¤¯¤Ê¤ëÍͤ˥¹¥Æ¥Ã¥× 2 ¤«¤é 4 ¤ò·«¤êÊÖ¤·¤Þ¤·¤ç¤¦¡£ - - d) µ®Êý¤â³Ø¤Ö¤³¤È¤¬¤Ç¤­¤ë? - b) ¥¹¥ß¥ì¤ÏÀĤ¤¡¢ - c) ÃηäȤϳؤ֤â¤Î¡¢ - a) ¥Ð¥é¤ÏÀÖ¤¤¡¢ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 3.2: ÃÖ¤­´¹¤¨¥³¥Þ¥ó¥É - - - ** ¥«¡¼¥½¥ë¤Î²¼¤Îʸ»ú¤òÃÖ¤­´¹¤¨¤ë¤Ë¤Ï r ¤ò¥¿¥¤¥×¤·¤Þ¤¹ ** - - 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿ºÇ½é¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 2. ºÇ½é¤Î´Ö°ã¤¤¤ÎÀèƬ¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 3. r ¤È¥¿¥¤¥×¤·¡¢´Ö°ã¤Ã¤Æ¤¤¤ëʸ»ú¤òÃÖ¤­´¹¤¨¤ë¡¢Àµ¤·¤¤Ê¸»ú¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - - 4. ºÇ½é¤Î¹Ô¤¬Àµ¤·¤¯¤Ê¤ë¤Þ¤Ç¥¹¥Æ¥Ã¥× 2 ¤«¤é 3 ¤ò·«¤êÊÖ¤·¤Þ¤·¤ç¤¦¡£ - ----> ¤³¤Î¹ç¤ò¿ÍÎϤ·¤¿»þ¤Í¡¢¤½¤Î¿Í¤Ï´ö¤Ä¤«Ìä°ã¤Ã¤¿¥­¡¼¤ò²¡¤·¤â¤·¤¿! ----> ¤³¤Î¹Ô¤òÆþÎϤ·¤¿»þ¤Ë¡¢¤½¤Î¿Í¤Ï´ö¤Ä¤«´Ö°ã¤Ã¤¿¥­¡¼¤ò²¡¤·¤Þ¤·¤¿! - - 5. ¤µ¤¡¡¢¥ì¥Ã¥¹¥ó 3.2 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ - -NOTE: ¼ÂºÝ¤Ë»î¤·¤Þ¤·¤ç¤¦¡£·è¤·¤Æ³Ð¤¨¤ë¤À¤±¤Ë¤Ï¤·¤Ê¤¤¤³¤È¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 3.3: Êѹ¹¥³¥Þ¥ó¥É - - - ** ñ¸ì¤Î°ìÉô¡¢¤â¤·¤¯¤ÏÁ´ÂΤòÊѹ¹¤¹¤ë¤Ë¤Ï cw ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** - - 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿ºÇ½é¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 2. lubw ¤Î u ¤Î°ÌÃ֤˥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 3. cw ¤È¥¿¥¤¥×¤·¡¢Àµ¤·¤¤Ã±¸ì¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦(¤³¤Î¾ì¹ç 'ine' ¤È¥¿¥¤¥×)¡£ - - 4. ¼¡¤Î´Ö°ã¤¤(Êѹ¹¤¹¤Ù¤­Ê¸»ú¤ÎÀèƬ)¤Ë°ÜÆ°¤¹¤ë¤¿¤á¤Ë ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ - - 5. ºÇ½é¤Î¹Ô¤¬¼¡¤Î¹Ô¤ÎÍͤˤʤë¤Þ¤Ç¥¹¥Æ¥Ã¥× 3 ¤È 4 ¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ - ----> This lubw has a few wptfd that mrrf changing usf the change command. ----> This line has a few words that need changing using the change command. - -cw ¤Ïñ¸ì¤òÊѹ¹¤¹¤ë¤À¤±¤Ç¤Ê¤¯¡¢ÁÞÆþ¤â¹Ô¤¨¤ë¤³¤È¤ËÃí°Õ¤·¤Þ¤·¤ç¤¦¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 3.4: c ¤ò»ÈÍѤ·¤¿¤½¤Î¾¤ÎÊѹ¹ - - - ** Êѹ¹¥³¥Þ¥ó¥É¤Ï¡¢ºï½ü¥³¥Þ¥ó¥É¤ÈƱ¤¸Íͤ˥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ·¤Þ¤¹ ** - - 1. Êѹ¹¥³¥Þ¥ó¥É¤Ï¡¢ºï½ü¥³¥Þ¥ó¥É¤ÈƱ¤¸¤è¤¦¤ÊÆ°ºî¤ò¤·¤Þ¤¹¡£¤½¤Î·Á¼°¤Ï - - c [¿ôÃÍ] ¥â¡¼¥·¥ç¥ó - - 2. ¥ª¥Ö¥¸¥§¥¯¥È¤âƱ¤¸¤Ç¡¢w ¤Ïñ¸ì¡¢ $ ¤Ï¹ÔËö¤Ê¤É¤È¤¤¤Ã¤¿¤â¤Î¤Ç¤¹¡£ - - 3. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 4. ºÇ½é¤Î´Ö°ã¤¤¤Ø¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 5. c$ ¤È¥¿¥¤¥×¤·¤Æ¹Ô¤Î»Ä¤ê¤ò£²¹ÔÌܤÎÍͤˤ·¡¢ ¤ò²¡¤·¤Þ¤·¤ç¤¦¡£ - ----> The end of this line needs some help to make it like the second. ----> The end of this line needs to be corrected using the c$ command. - -NOTE: ¥¿¥¤¥×Ãæ¤Î´Ö°ã¤¤¤Ï¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹¥­¡¼¤ò»È¤Ã¤Æľ¤¹¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 3 Í×Ìó - - - 1. ´û¤Ëºï½ü¤µ¤ì¤¿¥Æ¥­¥¹¥È¤òºÆÇÛÃÖ¤¹¤ë¤Ë¤Ï¡¢p ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£¤³¤ì¤Ïºï½ü¤µ - ¤ì¤¿¥Æ¥­¥¹¥È¤ò¥«¡¼¥½¥ë¤Î¸å¤ËÁÞÆþ¤·¤Þ¤¹(¹Ôñ°Ì¤Çºï½ü¤µ¤ì¤¿¤Î¤Ê¤é¤Ð¡¢¥«¡¼ - ¥½¥ë¤Î¤¢¤ë¼¡¤Î¹Ô¤ËÁÞÆþ¤µ¤ì¤Þ¤¹)¡£ - - 2. ¥«¡¼¥½¥ë¤Î²¼¤Îʸ»ú¤òÃÖ¤­´¹¤¨¤ë¤Ë¤Ï¡¢r ¤ò¥¿¥¤¥×¤·¤¿¸å¡¢¤½¤ì¤òÃÖ¤­´¹¤¨¤ë - ʸ»ú¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ - - 3. Êѹ¹¥³¥Þ¥ó¥É¤Ç¤Ï¥«¡¼¥½¥ë°ÌÃÖ¤«¤éÆÃÄê¤Î¥â¡¼¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤ë½ªÃ¼¤Þ¤Ç¤òÊÑ - ¹¹¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£Î㤨¤Ð cw ¤Ê¤é¤Ð¥«¡¼¥½¥ë°ÌÃÖ¤«¤éñ¸ì¤Î½ª¤ï¤ê¤Þ¤Ç¡¢ - c$ ¤Ê¤é¤Ð¹Ô¤Î½ª¤ï¤ê¤Þ¤Ç¤òÊѹ¹¤·¤Þ¤¹¡£ - - 4. Êѹ¹¥³¥Þ¥ó¥É¤Î·Á¼°¤Ï - - c [¿ôÃÍ] ¥â¡¼¥·¥ç¥ó - -¤µ¤¡¡¢¼¡¤Î¥ì¥Ã¥¹¥ó¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 4.1: °ÌÃ֤ȥե¡¥¤¥ë¤Î¾ðÊó - - ** ¥Õ¥¡¥¤¥ëÆâ¤Ç¤Î°ÌÃ֤ȥե¡¥¤¥ë¤Î¾õÂÖ¤òɽ¼¨¤¹¤ë¤Ë¤Ï CTRL-G ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ - ¥Õ¥¡¥¤¥ëÆâ¤Î¤¢¤ë¹Ô¤Ë°ÜÆ°¤¹¤ë¤Ë¤Ï G ¤ò¥¿¥¤¥×¤·¤Þ¤¹ ** - - NOTE: ¥¹¥Æ¥Ã¥×¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¡¢¤³¤Î¥ì¥Ã¥¹¥óÁ´¤Æ¤ËÌܤòÄ̤·¤Þ¤·¤ç¤¦!! - - 1. CTRL ¤ò²¡¤·¤¿¤Þ¤Þ g ¤ò²¡¤·¤Þ¤·¤ç¤¦¡£¤³¤ÎÁàºî¤ò CTRL-G ¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£ - ¥Ú¡¼¥¸¤Î°ìÈÖ²¼¤Ë¥Õ¥¡¥¤¥ë̾¤È¹ÔÈֹ椬ɽ¼¨¤µ¤ì¤ë¤Ï¤º¤Ç¤¹¡£ ¥¹¥Æ¥Ã¥× 3¤Î¤¿¤á - ¤Ë¹ÔÈÖ¹æ¤ò³Ð¤¨¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£ - -NOTE: ²èÌ̤ᦲ¼¶ù¤Ë¥«¡¼¥½¥ë¤Î°ÌÃÖ¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤³¤ì¤Ï - 'ruler' ¥ª¥×¥·¥ç¥ó(¥ì¥Ã¥¹¥ó6¤ÇÀâÌÀ)¤òÀßÄꤹ¤ë¤³¤È¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£ - - 2. ºÇ²¼¹Ô¤Ë°ÜÆ°¤¹¤ë¤¿¤á¤Ë G ¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - ¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤Ë°ÜÆ°¤¹¤ë¤Ë¤Ï gg ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - - 3. Àè¤Û¤É¤Î¹Ô¤ÎÈÖ¹æ¤ò¥¿¥¤¥×¤· G ¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ºÇ½é¤Ë CTRL-G ¤ò²¡¤·¤¿¹Ô - ¤ËÌá¤Ã¤ÆÍè¤ë¤Ï¤º¤Ç¤¹¡£ - - 4. ¼«¿®¤¬»ý¤Æ¤¿¤é¥¹¥Æ¥Ã¥× 1 ¤«¤é 3 ¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 4.2: ¸¡º÷¥³¥Þ¥ó¥É - - - ** ¸ì¶ç¤ò¸¡º÷¤¹¤ë¤Ë¤Ï / ¤È¡¢Á°Êý¸¡º÷¤¹¤ë¸ì¶ç¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£** - - 1. ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç / ¤È¤¤¤¦Ê¸»ú¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£²èÌÌ°ìÈÖ²¼¤Ë : ¥³¥Þ¥ó¥É¤È - Ʊ¤¸ÍÍ¤Ë / ¤¬¸½¤ì¤ë¤³¤È¤Ëµ¤¤Å¤¯¤Ç¤·¤ç¤¦¡£ - - 2. ¤Ç¤Ï¡¢'errroor' ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£¤³¤ì¤¬¸¡º÷¤·¤¿¤¤Ã±¸ì¤Ç¤¹¡£ - - 3. Ʊ¤¸¸ì¤ò¤â¤¦°ìÅÙ¸¡º÷¤¹¤ë¤È¤­¤Ï ñ¤Ë n ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ - µÕÊý¸þ¤Ë¸ì¶ç¤ò¸¡º÷¤¹¤ë¤È¤­¤Ï N ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ - - 4. µÕÊý¸þ¤Ë¸ì¶ç¤ò¸¡º÷¤¹¤ë¾ì¹ç¤Ï¡¢/ ¤ÎÂå¤ï¤ê¤Ë ? ¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£ - - 5. ¸µ¤Î¾ì½ê¤ËÌá¤ë¤Ë¤Ï CTRL-O (Ctrl ¤ò²¡¤·Â³¤±¤Ê¤¬¤é o ʸ»ú¥¿¥¤¥×)¤ò¥¿¥¤¥×¤· - ¤Þ¤¹¡£¤µ¤é¤ËÌá¤ë¤Ë¤Ï¤³¤ì¤ò·«¤êÊÖ¤·¤Þ¤¹¡£CTRL-I ¤ÏÁ°Êý¸þ¤Ç¤¹¡£ - -Note: "errroor" ¤Ï error ¤È¥¹¥Ú¥ë¤¬°ã¤¤¤Þ¤¹; errroor ¤Ï¤¤¤ï¤æ¤ë error ¤Ç¤¹¡£ -Note: ¸¡º÷¤¬¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤Ë㤹¤ë¤È¡¢¥ª¥×¥·¥ç¥ó 'wrapscan' ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë - ¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤«¤é¸¡º÷¤ò³¹Ô¤·¤Þ¤¹¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 4.3: Âбþ¤¹¤ë³ç¸Ì¤ò¸¡º÷ - - - ** Âбþ¤¹¤ë ),] ¤ä } ¤ò¸¡º÷¤¹¤ë¤Ë¤Ï % ¤ò¥¿¥¤¥×¤·¤Þ¤¹ ** - - 1. ²¼¤Î ---> ¤Ç¼¨¤µ¤ì¤¿¹Ô¤Ç (,[ ¤« { ¤Î¤É¤ì¤«¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 2. ¤½¤³¤Ç % ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - - 3. ¥«¡¼¥½¥ë¤ÏÂбþ¤¹¤ë³ç¸Ì¤Ë°ÜÆ°¤¹¤ë¤Ï¤º¤Ç¤¹¡£ - - 4. ºÇ½é¤Î³ç¸Ì¤Ë°ÜÆ°¤¹¤ë¤Ë¤Ï % ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - - 5. ¾¤Î (,),[,],{ or } ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¡¢% ¤¬²¿¤ò¤·¤Æ¤¤¤ë¤«³Îǧ¤·¤Þ¤·¤ç¤¦¡£ - ----> This ( is a test line with ('s, ['s ] and {'s } in it. )) - - -NOTE: ¤³¤Îµ¡Ç½¤Ï³ç¸Ì¤¬°ìÃפ·¤Æ¤¤¤Ê¤¤¥×¥í¥°¥é¥à¤ò¥Ç¥Ð¥Ã¥°¤¹¤ë¤Î¤Ë¤È¤Æ¤âÌòΩ¤Á - ¤Þ¤¹¡£ - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 4.4: ´Ö°ã¤¤¤òÊѹ¹¤¹¤ëÊýË¡ - - - ** 'old' ¤ò 'new' ¤ËÃÖ´¹¤¹¤ë¤Ë¤Ï :s/old/new/g ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** - - 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 2. :s/thee/the ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï¤½¤Î¹Ô¤ÇºÇ½é¤Ë¸« - ¤Ä¤«¤Ã¤¿¤â¤Î¤Ë¤À¤±¹Ô¤Ê¤ï¤ì¤ë¤³¤È¤Ëµ¤¤ò¤Ä¤±¤Þ¤·¤ç¤¦¡£ - - 3. ¤Ç¤Ï :s/thee/the/g ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£¹ÔÁ´ÂΤòÃÖ´¹¤¹¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ - ¤³¤ÎÊѹ¹¤Ï¤½¤Î¹Ô¤Ç¸«¤Ä¤«¤Ã¤¿Á´¤Æ¤Î²Õ½ê¤ËÂФ·¤Æ¹Ô¤Ê¤ï¤ì¤Þ¤¹¡£ - ----> thee best time to see thee flowers is in thee spring. - - 4. Ê£¿ô¹Ô¤«¤é¸«¤Ä¤«¤ëʸ»ú¤òÊѹ¹¤¹¤ë¤Ë¤Ï - :#,#s/old/new/g #,# ¤Ë¤ÏÃÖ¤­´¹¤¨¤ëÈϰϤγ«»Ï¤È½ªÎ»¤Î¹ÔÈÖ¹æ¤ò»ØÄꤷ¤Þ - ¤¹¡£ - :%s/old/new/g ¥Õ¥¡¥¤¥ëÁ´ÂΤǸ«¤Ä¤«¤ë¤â¤Î¤ËÂФ·¤ÆÊѹ¹¤¹¤ë¡£ - :%s/old/new/gc ¥Õ¥¡¥¤¥ëÁ´ÂΤǸ«¤Ä¤«¤ë¤â¤Î¤ËÂФ·¤Æ¡¢1¤Ä1¤Ä³Îǧ¤ò¤È¤ê¤Ê - ¤¬¤éÊѹ¹¤¹¤ë¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 4 Í×Ìó - - - 1. CTRL-G ¤Ï¥Õ¥¡¥¤¥ë¤Ç¤Î°ÌÃ֤ȥե¡¥¤¥ë¤Î¾ÜºÙ¤òɽ¼¨¤·¤Þ¤¹¡£ - G ¤Ï¥Õ¥¡¥¤¥ë¤ÎºÇ²¼¹Ô¤Ë°ÜÆ°¤·¤Þ¤¹¡£ - ¿ôÃÍ G ¤Ï¤½¤Î¹Ô¤Ë°ÜÆ°¤·¤Þ¤¹¡£ - gg ¤ÏÀèƬ¹Ô¤Ë°ÜÆ°¤·¤Þ¤¹¡£ - - 2. / ¤Î¸å¤Ë¸ì¶ç¤ò¥¿¥¤¥×¤¹¤ë¤ÈÁ°Êý¤Ë¸ì¶ç¤ò¸¡º÷¤·¤Þ¤¹¡£ - ? ¤Î¸å¤Ë¸ì¶ç¤ò¥¿¥¤¥×¤¹¤ë¤È¸åÊý¤Ë¸ì¶ç¤ò¸¡º÷¤·¤Þ¤¹¡£ - ¸¡º÷¤Î¸å¤Î n ¤ÏƱ¤¸Êý¸þ¤Î¼¡¤Î¸¡º÷¤ò¡¢N ¤ÏµÕÊý¸þ¤Î¸¡º÷¤ò¤·¤Þ¤¹¡£ - CTRL-O ¤Ï¾ì½ê¤òÁ°¤Ë°Ü¤·¡¢CTRL-I ¤Ï¾ì½ê¤ò¼¡¤Ë°ÜÆ°¤·¤Þ¤¹¡£ - - 3. (,),[,],{, ¤â¤·¤¯¤Ï } ¾å¤Ë¥«¡¼¥½¥ë¤¬¤¢¤ë¾õÂÖ¤Ç % ¤ò¥¿¥¤¥×¤¹¤ë¤ÈÂФˤʤëʸ - »ú¤Ø°ÜÆ°¤·¤Þ¤¹¡£ - - 4. ¸½ºß¹Ô¤ÎºÇ½é¤Î old ¤ò new ¤ËÃÖ´¹¤¹¤ë¡£ :s/old/new - ¸½ºß¹Ô¤ÎÁ´¤Æ¤Î old ¤ò new ¤ËÃÖ´¹¤¹¤ë¡£ :s/old/new/g - 2¤Ä¤Î # ´Ö¤Ç¸ì¶ç¤òÃÖ´¹¤¹¤ë¡£ :#,#s/old/new/g - ¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÎÁ´¤Æ¤Î¸¡º÷¸ì¶ç¤òÃÖ´¹¤¹¤ë¡£ :%s/old/new/g - 'c' ¤ò²Ã¤¨¤ë¤ÈÃÖ´¹¤ÎÅ٤˳Îǧ¤òµá¤á¤ë¡£ :%s/old/new/gc - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 5.1: ³°Éô¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ëÊýË¡ - - - ** :! ¤Î¸å¤Ë¼Â¹Ô¤¹¤ë³°Éô¥³¥Þ¥ó¥É¤ò¥¿¥¤¥×¤·¤Þ¤¹ ** - - 1. ²èÌ̤κDz¼Éô¤Ë¥«¡¼¥½¥ë¤¬°ÜÆ°¤¹¤ë¤è¤¦¡¢´·¤ì¿Æ¤·¤ó¤À : ¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - ¤³¤ì¤Ç¥³¥Þ¥ó¥É¤¬¥¿¥¤¥×¤Ç¤­¤ëÍͤˤʤê¤Þ¤¹¡£ - - 2. ¤³¤³¤Ç ! ¤È¤¤¤¦Ê¸»ú(´¶Ã²Éä)¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - ¤³¤ì¤Ç³°Éô¥·¥§¥ë¥³¥Þ¥ó¥É¤¬¼Â¹Ô¤Ç¤­¤ëÍͤˤʤê¤Þ¤¹¡£ - - 3. Îã¤È¤·¤Æ ! ¤Ë³¤±¤Æ ls ¤È¥¿¥¤¥×¤· ¤ò²¡¤·¤Þ¤·¤ç¤¦¡£ - ¥·¥§¥ë¥×¥í¥ó¥×¥È¤Î¤è¤¦¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤Î°ìÍ÷¤¬É½¼¨¤µ¤ì¤ë¤Ï¤º¤Ç¤¹¡£ - ¤â¤·¤¯¤Ï ls ¤¬Æ°¤«¤Ê¤¤¤Ê¤é¤Ð :!dir ¤ò»ÈÍѤ·¤Þ¤·¤ç¤¦¡£ - -Note: ¤³¤ÎÊýË¡¤Ë¤è¤Ã¤Æ¤¢¤é¤æ¤ë¥³¥Þ¥ó¥É¤¬¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤â¤Á¤í¤ó°ú¿ô - ¤âÍ¿¤¨¤é¤ì¤Þ¤¹¡£ - -Note: Á´¤Æ¤Î : ¥³¥Þ¥ó¥É¤Ï ¤ò²¡¤·¤Æ½ªÎ»¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ - °Ê¹ß¤Ç¤Ï¤³¤Î¤³¤È¤Ë¸ÀµÚ¤·¤Þ¤»¤ó¡£ - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 5.2: ¤½¤Î¾¤Î¥Õ¥¡¥¤¥ë¤Ø½ñ¤­¹þ¤ß - - - ** ¥Õ¥¡¥¤¥ë¤ØÊѹ¹¤òÊݸ¤¹¤ë¤Ë¤Ï :w ¥Õ¥¡¥¤¥ë̾ ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** - - 1. ¥Ç¥£¥ì¥¯¥È¥ê¤Î°ìÍ÷¤òÆÀ¤ë¤¿¤á¤Ë :!dir ¤â¤·¤¯¤Ï :!ls ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ - ¤³¤Î¤¢¤È ¤ò²¡¤¹¤Î¤Ï´û¤Ë¤´Â¸ÃΤǤ¹¤Í¡£ - - 2. TEST ¤Î¤è¤¦¤Ë¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë̵¤¤¥Õ¥¡¥¤¥ë̾¤ò°ì¤ÄÁª¤Ó¤Þ¤¹¡£ - - 3. ¤Ç¤Ï :w TEST ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦ (TEST ¤Ï¡¢Áª¤ó¤À¥Õ¥¡¥¤¥ë̾¤Ç¤¹)¡£ - - 4. ¤³¤ì¤Ë¤è¤ê¥Õ¥¡¥¤¥ëÁ´ÂΤ¬ TEST ¤È¤¤¤¦Ì¾Á°¤ÇÊݸ¤µ¤ì¤Þ¤¹¡£ - ¤â¤¦°ìÅÙ :!dir ¤â¤·¤¯¤Ï !ls ¤È¥¿¥¤¥×¤·¤Æ³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£ - -Note: ¤³¤³¤Ç Vim ¤ò½ªÎ»¤·¡¢¥Õ¥¡¥¤¥ë̾ TEST ¤È¶¦¤Ëµ¯Æ°¤¹¤ë¤È¡¢Êݸ¤·¤¿»þ¤Î - ¥Á¥å¡¼¥È¥ê¥¢¥ë¤ÎÊ£À½¤¬¤Ç¤­¾å¤¬¤ë¤Ï¤º¤Ç¤¹¡£ - - 5. ¤µ¤é¤Ë¡¢¼¡¤Î¤è¤¦¤Ë¥¿¥¤¥×¤·¤Æ¥Õ¥¡¥¤¥ë¤ò¾Ã¤·¤Þ¤·¤ç¤¦(MS-DOS): :!del TEST - ¤â¤·¤¯¤Ï(Unix): :!rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 5.3: ÁªÂò¤·¤¿½ñ¤­¹þ¤ß - - -** ¥Õ¥¡¥¤¥ë¤Î°ÌÃÖ¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢v ¥â¡¼¥·¥ç¥ó¤È :w FILENAME ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** - - 1. ¤³¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ - - 2. v ¤ò²¡¤·¡¢°Ê²¼¤ÎÂè5¹àÌܤ˥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£¥Æ¥­¥¹¥È¤¬¶¯Ä´É½¼¨¤µ¤ì¤ë¤Î - ¤ËÃíÌܤ·¤Æ²¼¤µ¤¤¡£ - - 3. ʸ»ú : ¤ò²¡¤¹¤È¡¢²èÌ̤κDz¼Éô¤Ë :'<,'> ¤¬¸½¤ì¤Þ¤¹¡£ - - 4. w TEST (TESET ¤Ï¸ºß¤·¤Ê¤¤¥Õ¥¡¥¤¥ë̾)¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ - Enter ¤ò²¡¤¹Á°¤Ë :'<,'>w TEST ¤È¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Æ²¼¤µ¤¤¡£ - - 5. Vim ¤Ï TEST ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ËÁªÂò¤µ¤ì¤¿¹Ô¤ò½ñ¤­¹þ¤à¤Ç¤·¤ç¤¦¡£ - !dir ¤â¤·¤¯¤Ï !ls ¤Ç¤½¤ì¤ò³Îǧ¤·¤Þ¤¹¡£ - ¤½¤ì¤Ïºï½ü¤·¤Ê¤¤¤Ç¤ª¤¤¤Æ²¼¤µ¤¤¡£¼¡¤Î¥ì¥Ã¥¹¥ó¤Ç»ÈÍѤ·¤Þ¤¹¡£ - -NOTE: v ¤ò²¡¤¹¤È¡¢Visual ÁªÂò¤¬»Ï¤Þ¤ê¤Þ¤¹¡£¥«¡¼¥½¥ë¤òÆ°¤«¤¹¤³¤È¤Ç¡¢ÁªÂòÈϰϤò - Â礭¤¯¤â¾®¤µ¤¯¤â¤Ç¤­¤Þ¤¹¡£¤µ¤é¤Ë¡¢¤½¤ÎÁªÂòÈϰϤËÂФ·¤Æ¥ª¥Ú¥ì¡¼¥¿¤òŬÍÑ - ¤­¤Þ¤¹¡£Î㤨¤Ð d ¤Ï¥Æ¥­¥¹¥È¤òºï½ü¤·¤Þ¤¹¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 5.4: ¥Õ¥¡¥¤¥ë¤Î¼è¹þ¤È¹çÊ» - - - ** ¥Õ¥¡¥¤¥ë¤ÎÃæ¿È¤òÁÞÆþ¤¹¤ë¤Ë¤Ï :r ¥Õ¥¡¥¤¥ë̾ ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** - - 1. ¥«¡¼¥½¥ë¤ò°Ê²¼¤Î¹Ô¤Ë¹ç¤ï¤»¤Þ¤¹¡£ - -NOTE: ¥¹¥Æ¥Ã¥× 2 ¤Î¼Â¹Ô¸å¡¢¥ì¥Ã¥¹¥ó 5.3 ¤Î¥Æ¥­¥¹¥È¤¬¸½¤ì¤Þ¤¹¡£²¼¤Ë²¼¤¬¤Ã¤Æ¤³ - ¤Î¥ì¥Ã¥¹¥ó¤Ë°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 2. ¤Ç¤Ï TEST ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò :r TEST ¤È¤¤¤¦¥³¥Þ¥ó¥É¤ÇÆɤ߹þ¤ß¤Þ¤·¤ç¤¦¡£ - ¤³¤³¤Ç¤¤¤¦ TEST ¤Ï»È¤¦¥Õ¥¡¥¤¥ë¤Î̾Á°¤Î¤³¤È¤Ç¤¹¡£ - Æɤ߹þ¤Þ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï¡¢¥«¡¼¥½¥ë¹Ô¤Î²¼¤Ë¤¢¤ê¤Þ¤¹¡£ - - 3. ¼è¹þ¤ó¤À¥Õ¥¡¥¤¥ë¤ò³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¥«¡¼¥½¥ë¤òÌ᤹¤È¡¢¥ì¥Ã¥¹¥ó5.3 ¤Î - ¥ª¥ê¥¸¥Ê¥ë¤È¥Õ¥¡¥¤¥ë¤Ë¤è¤ë¤â¤Î¤Î2¤Ä¤¬¤¢¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£ - -NOTE: ³°Éô¥³¥Þ¥ó¥É¤Î½ÐÎϤòÆɤ߹þ¤à¤³¤È¤â½ÐÍè¤Þ¤¹¡£Î㤨¤Ð¡¢ - :r !ls ¤Ï ls ¥³¥Þ¥ó¥É¤Î½ÐÎϤò¥«¡¼¥½¥ë°Ê²¼¤ËÆɤ߹þ¤ß¤Þ¤¹¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 5 Í×Ìó - - - 1. :!command ¤Ë¤è¤Ã¤Æ ³°Éô¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ - - ¤è¤¯»È¤¦Îã: - (MS-DOS) (Unix) - :!dir :!ls - ¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î°ìÍ÷¤ò¸«¤ë¡£ - :!del FILENAME :!rm FILENAME - ¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë¡£ - - 2. :w ¥Õ¥¡¥¤¥ë̾ ¤Ë¤è¤Ã¤Æ¥Õ¥¡¥¤¥ë̾¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬¥Ç¥£¥¹¥¯¤Ë½ñ¤­¹þ¤Þ¤ì¤ë¡£ - - 3. v ¥â¡¼¥·¥ç¥ó¤Ç :w FILENAME ¤È¤¹¤ë¤È¡¢¥Ó¥¸¥å¥¢¥ëÁªÂò¹Ô¤¬¥Õ¥¡¥¤¥ë¤ËÊݸ¤µ - ¤ì¤ë¡£ - - 4. :r ¥Õ¥¡¥¤¥ë̾ ¤Ë¤è¤ê¥Õ¥¡¥¤¥ë̾¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬¥Ç¥£¥¹¥¯¤è¤ê¼è¹þ¤Þ¤ì¡¢ - ¥«¡¼¥½¥ë°ÌÃ֤β¼¤ËÁÞÆþ¤µ¤ì¤ë¡£ - - 5. :r !dir ¤Ï dir ¥³¥Þ¥ó¥É¤Î½ÐÎϤò¥«¡¼¥½¥ë°ÌÃְʲ¼¤ËÆɤ߹þ¤à¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6.1: ¥ª¡¼¥×¥ó¥³¥Þ¥ó¥É - - - ** o ¤ò¥¿¥¤¥×¤¹¤ë¤È¡¢¥«¡¼¥½¥ë¤Î²¼¤Î¹Ô¤¬³«¤­¡¢ÁÞÆþ¥â¡¼¥É¤ËÆþ¤ê¤Þ¤¹ ** - - 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 2. o (¾®Ê¸»ú) ¤ò¥¿¥¤¥×¤·¤Æ¡¢¥«¡¼¥½¥ë¤Î²¼¤Î¹Ô¤ò³«¤­¡¢ÁÞÆþ¥â¡¼¥É¤ËÆþ¤ê¤Þ¤¹¡£ - - 3. ¤µ¤é¤ËÁÞÆþ¥â¡¼¥É¤ò½ªÎ»¤¹¤ë°Ù¤Ë ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ - ----> o ¤ò¥¿¥¤¥×¤¹¤ë¤È¥«¡¼¥½¥ë¤Ï³«¤¤¤¿¹Ô¤Ø°ÜÆ°¤·ÁÞÆþ¥â¡¼¥É¤ËÆþ¤ê¤Þ¤¹¡£ - - 4. ¥«¡¼¥½¥ë¤Î¾å¤Î¹Ô¤ËÁÞÆþ¤¹¤ë¤Ë¤Ï¡¢¾®Ê¸»ú¤Î o ¤Ç¤Ï¤Ê¤¯¡¢Ã±½ã¤ËÂçʸ»ú¤Î O - ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£¼¡¤Î¹Ô¤Ç»î¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£ - ----> ¤³¤Î¹Ô¤Î¾å¤ØÁÞÆþ¤¹¤ë¤Ë¤Ï¡¢¤³¤Î¹Ô¤Ø¥«¡¼¥½¥ë¤òÃÖ¤¤¤Æ O ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6.2: Äɲå³¥Þ¥ó¥É - - - ** ¥«¡¼¥½¥ë¤Î¼¡¤Î°ÌÃÖ¤«¤é¥Æ¥­¥¹¥È¤òÄɲ乤ë¤Ë¤Ï a ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** - - 1. ¥«¡¼¥½¥ë¤ò ---> ¤Ç¼¨¤µ¤ì¤¿¹Ô¤Ø°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ - - 2. e ¤ò²¡¤·¤Æ li ¤Î½ªÃ¼Éô¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ - - 3. ¥«¡¼¥½¥ë¤Î¸å¤í¤Ë¥Æ¥­¥¹¥È¤òÄɲ乤뤿¤á¤Ë a (¾®Ê¸»ú) ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ - - 4. ¤½¤Î²¼¤Î¹Ô¤Î¤Î¤è¤¦¤Êñ¸ì¤Ë´°À®¤µ¤»¤Þ¤¹¡£ÁÞÆþ¥â¡¼¥É¤òÈ´¤±¤ë°Ù¤Ë ¤Ë²¡ - ¤·¤Þ¤¹¡£ - - 5. e ¤ò»È¤Ã¤Æ¼¡¤ÎÉÔ´°Á´¤Êñ¸ì¤Ø°ÜÆ°¤·¡¢¥¹¥Æ¥Ã¥× 3 ¤È 4 ¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ - ----> This li will allow you to pract appendi text to a line. ----> This line will allow you to practice appending text to a line. - -Note: a, i ¤È A ¤ÏƱ¤¸ÁÞÆþ¥â¡¼¥É¤Ø°Ü¤ê¤Þ¤¹¤¬¡¢Ê¸»ú¤¬ÁÞÆþ¤µ¤ì¤ë°ÌÃÖ¤À¤±¤¬°Û¤Ê¤ê - ¤Þ¤¹¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6.3: ¤½¤Î¾¤ÎÃÖ´¹ÊýË¡ - - - ** 1ʸ»ú°Ê¾å¤òÃÖ¤­´¹¤¨¤ë¤Ë¤ÏÂçʸ»ú¤Î R ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦ ** - - 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ºÇ½é¤Î xxx ¤ÎÀèƬ¤Ë°ÜÆ°¤· - ¤Þ¤¹¡£ - - 2. R ¤ò²¡¤·¤Æ¡¢2¹ÔÌܤοôÃͤò¥¿¥¤¥×¤¹¤ë¤³¤È¤Ç¡¢xxx ¤¬ÃÖ´¹¤µ¤ì¤Þ¤¹¡£ - - 3. ÃÖ´¹¥â¡¼¥É¤òÈ´¤±¤ë¤Ë¤Ï ¤ò²¡¤·¤Þ¤¹¡£¹Ô¤Î»Ä¤ê¤¬Êѹ¹¤µ¤ì¤Æ¤¤¤Ê¤¤¤Þ¤Þ¤Ë - ¤Ê¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ - - 5. »Ä¤Ã¤¿ xxx ¤ò¥¹¥Æ¥Ã¥×¤ò·«¤êÊÖ¤·¤ÆÃÖ´¹¤·¤Þ¤·¤ç¤¦¡£ - ----> Adding 123 to xxx gives you xxx. ----> Adding 123 to 456 gives you 579. - -NOTE: ÃÖ´¹¥â¡¼¥É¤ÏÁÞÆþ¥â¡¼¥É¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢Á´¤Æ¤Î¥¿¥¤¥×¤µ¤ì¤¿Ê¸»ú¤Ï´û¸¤Îʸ»ú - ¤òºï½ü¤·¤Þ¤¹¡£ - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6.4: ¥Æ¥­¥¹¥È¤Î¥³¥Ô¡¼¤È¥Ú¡¼¥¹¥È - - - ** ¥Æ¥­¥¹¥È¤Î¥³¥Ô¡¼¤Ë¤Ï¥ª¥Ú¥ì¡¼¥¿ y ¤ò¡¢¥Ú¡¼¥¹¥È¤Ë¤Ï p ¤ò»È¤¤¤Þ¤¹ ** - - 1. ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ø°ÜÆ°¤·¡¢¥«¡¼¥½¥ë¤ò "a)" ¤Î¸å¤ËÃÖ¤¤¤Æ¤ª¤­¤Þ¤¹¡£ - - 2. v ¤Ç¥Ó¥¸¥å¥¢¥ë¥â¡¼¥É¤ò³«»Ï¤·¡¢"first"¤Î¼êÁ°¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ - - 3. y ¤ò¥¿¥¤¥×¤·¤Æ¶¯Ä´É½¼¨¤µ¤ì¤¿¥Æ¥­¥¹¥È¤ò yank (¥³¥Ô¡¼)¤·¤Þ¤¹¡£ - - 4. ¼¡¤Î¹Ô¤Î¹ÔËö¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹: j$ - - 5. p ¤ò²¡¤·¤ÆŽ¤êÉÕ¤±(put)¤Æ¤«¤é¡¢¼¡¤ò¥¿¥¤¥×¤·¤Þ¤¹: a second - - 6. ¥Ó¥¸¥å¥¢¥ë¥â¡¼¥É¤Ç " item." ¤òÁªÂò¤·¡¢y ¤Ç¥ä¥ó¥¯¡¢¼¡¤Î¹Ô¤Î¹ÔËö¤Þ¤Ç j$ ¤Ç - °ÜÆ°¤·¡¢ p ¤Ç¥Æ¥­¥¹¥È¤ò¤½¤³¤Ë put ¤·¤Þ¤¹¡£ - ----> a) this is the first item. - b) - - Note: ñ¸ì¤ò1¤Ä yank ¤¹¤ë¤Î¤Ë y ¤ò¥ª¥Ú¥ì¡¼¥¿¤È¤·¤Æ yw ¤È¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6.5: ¥ª¥×¥·¥ç¥ó¤ÎÀßÄê - - - ** ¸¡º÷¤äÃÖ´¹¤ÎºÝ¤ËÂçʸ»ú/¾®Ê¸»ú¤ò̵»ë¤¹¤ë¤Ë¤Ï¡¢¥ª¥×¥·¥ç¥ó¤òÀßÄꤷ¤Þ¤¹ ** - - 1. ¼¡¤ÎÍͤËÆþÎϤ·¤Æ 'ignore' ¤ò¸¡º÷¤·¤Þ¤·¤ç¤¦: /ignore - n ¤ò²¡¤·¤Æ²¿ÅÙ¤«¸¡º÷¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ - - 2. ¼¡¤ÎÍͤËÆþÎϤ·¤Æ 'ic' (Ignore Case ¤Îά) ¥ª¥×¥·¥ç¥ó¤òÀßÄꤷ¤Þ¤¹: :set ic - - 3. ¤Ç¤Ï n ¤Ë¤è¤Ã¤Æ¤â¤¦1ÅÙ 'ignore' ¤ò¸¡º÷¤·¤Þ¤¹¡£ - n ¤ò²¡¤·¤Æ¤µ¤é¤Ë¿ô²ó¸¡º÷¤ò·«¤êÊÖ¤·¤Þ¤·¤ç¤¦¡£ - - 4. 'hlsearch' ¤È 'incsearch' ¥ª¥×¥·¥ç¥ó¤òÀßÄꤷ¤Þ¤·¤ç¤¦: :set hls is - - 5. ¸¡º÷¥³¥Þ¥ó¥É¤òºÆÆþÎϤ·¤Æ¡¢²¿¤¬µ¯¤³¤ë¤«¸«¤Æ¤ß¤Þ¤·¤ç¤¦: /ignore - - 6. Âçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤ò̵¸ú¤Ë¤¹¤ë¤Ë¤Ï¼¡¤ÎÍͤËÆþÎϤ·¤Þ¤¹: :set noic - -Note: ¥Þ¥Ã¥Á¤Î¶¯Ä´É½¼¨¤ò¤ä¤á¤ë¤Ë¤Ï¼¡¤ÎÍͤËÆþÎϤ·¤Þ¤¹: :nohlsearch -Note: 1¤Ä¤Î¸¡º÷¥³¥Þ¥ó¥É¤À¤±Âçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤ò¤ä¤á¤¿¤¤¤Ê¤é¤Ð¡¢¥Õ¥ì¡¼¥º¤Ë \c - ¤ò»ÈÍѤ·¤Þ¤¹: /ignore\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 6 Í×Ìó - - 1. o ¤ò¥¿¥¤¥×¤¹¤ë¤È¥«¡¼¥½¥ë¤Î²¼¤Î¹Ô¤ò³«¤±¤Æ¡¢¤½¤³¤ÇÁÞÆþ¥â¡¼¥É¤Ë¤Ê¤ë¡£ - O (Âçʸ»ú) ¤ò¥¿¥¤¥×¤¹¤ë¤È¥«¡¼¥½¥ë¤Î¾å¤Î¹Ô¤ÇÁÞÆþ¥â¡¼¥É¤Ë¤Ê¤ë¡£ - - 2. ¥«¡¼¥½¥ë¾å¤Îʸ»ú¤Î¼¡¤«¤é¥Æ¥­¥¹¥È¤òÄɲ乤ë¤Ë¤Ï a ¤È¥¿¥¤¥×¤¹¤ë¡£ - ¹ÔËö¤Ë¼«Æ°¤Ç¥Æ¥­¥¹¥È¤òÁÞÆþ¤¹¤ë¤Ë¤ÏÂçʸ»ú A ¤ò¥¿¥¤¥×¤¹¤ë¡£ - - 3. e ¥³¥Þ¥ó¥É¤Ïñ¸ì¤Î½ªÃ¼Éô¥«¡¼¥½¥ë¤ò°ÜÆ°¤¹¤ë¡£ - - 4. y ¥ª¥Ú¥ì¡¼¥¿¤Ï¥Æ¥­¥¹¥È¤ò yank (¥³¥Ô¡¼)¤·¡¢p ¤Ï¤½¤ì¤ò put (¥Ú¡¼¥¹¥È)¤¹¤ë¡£ - - 5. Âçʸ»ú¤Î R ¤ò¥¿¥¤¥×¤¹¤ë¤ÈÃÖ´¹¥â¡¼¥É¤ËÆþ¤ê¡¢¤ò²¡¤¹¤ÈÈ´¤±¤ë¡£ - - 6. ":set xxx" ¤È¥¿¥¤¥×¤¹¤ë¤È¥ª¥×¥·¥ç¥ó "xxx" ¤¬ÀßÄꤵ¤ì¤ë¡£ - 'ic' 'ignorecase' ¸¡º÷»þ¤ËÂçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤·¤Ê¤¤ - 'is' 'incsearch' ¸¡º÷¥Õ¥ì¡¼¥º¤ËÉôʬ¥Þ¥Ã¥Á¤·¤Æ¤¤¤ëÉôʬ¤òɽ¼¨¤¹¤ë - 'hls' 'hlsearch' ¥Þ¥Ã¥Á¤¹¤ë¤¹¤Ù¤ò¶¯Ä´É½¼¨¤¹¤ë - Ť¤Êý¡¢Ã»¤¤Êý¡¢¤É¤Á¤é¤Î¥ª¥×¥·¥ç¥ó̾¤Ç¤â»ÈÍѤǤ­¤Þ¤¹¡£ - - 7. "no" ¤òÉÕÍ¿¤·¡¢¥ª¥×¥·¥ç¥ó¤ò̵¸ú¤Ë¤·¤Þ¤¹: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 7.1: ¥ª¥ó¥é¥¤¥ó¥Ø¥ë¥×¥³¥Þ¥ó¥É - - - ** ¥ª¥ó¥é¥¤¥ó¥Ø¥ë¥×¤ò»ÈÍѤ·¤Þ¤·¤ç¤¦ ** - - Vim ¤Ë¤Ï¹­ÈϤˤ錄¤ë¥ª¥ó¥é¥¤¥ó¥Ø¥ë¥×¥·¥¹¥Æ¥à¤¬¤¢¤ê¤Þ¤¹¡£ - ¥Ø¥ë¥×¤ò³«»Ï¤¹¤ë¤Ë¤Ï¡¢¤³¤ì¤é3¤Ä¤Î¤É¤ì¤«1¤Ä¤ò»î¤·¤Æ¤ß¤Þ¤·¤ç¤¦: - - ¥Ø¥ë¥×¥­¡¼ ¤ò²¡¤¹(¤â¤·¤¢¤ë¤Ê¤é¤Ð)¡£ - - ¥­¡¼¤ò²¡¤¹(¤â¤·¤¢¤ë¤Ê¤é¤Ð)¡£ - - :help ¤È¥¿¥¤¥×¤¹¤ë¡£ - - ¥Ø¥ë¥×¥¦¥£¥ó¥É¥¦¤Î¥Æ¥­¥¹¥È¤òÆɤà¤È¡¢¥Ø¥ë¥×¤ÎÆ°ºî¤¬Íý²ò¤Ç¤­¤Þ¤¹¡£ - CTRL-W CTRL-W ¤È¥¿¥¤¥×¤¹¤ë¤È ¥Ø¥ë¥×¥¦¥£¥ó¥É¥¦¤Ø¥¸¥ã¥ó¥×¤·¤Þ¤¹¡£ - :q ¤È¥¿¥¤¥×¤¹¤ë¤È ¥Ø¥ë¥×¥¦¥£¥ó¥É¥¦¤¬ÊĤ¸¤é¤ì¤Þ¤¹¡£ - - ":help" ¥³¥Þ¥ó¥É¤Ë°ú¿ô¤òÍ¿¤¨¤ë¤³¤È¤Ë¤è¤ê¡¢¤¢¤é¤æ¤ëÂê̾¤Î¥Ø¥ë¥×¤ò¸«¤Ä¤±¤ë¤³¤È - ¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤é¤ò»î¤·¤Æ¤ß¤Þ¤·¤ç¤¦( ¤ò¥¿¥¤¥×¤·Ëº¤ì¤Ê¤¤¤è¤¦¤Ë): - - :help w - :help c_ ¤Ç¥³¥Þ¥ó¥É¥é¥¤¥ó¤òÊä´°¤¹¤ë ** - - 1. ¥³¥ó¥Ñ¥Á¥â¡¼¥É¤Ç¤Ê¤¤¤³¤È¤ò³Îǧ¤·¤Þ¤¹: :set nocp - - 2. ¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ëºß¤ë¥Õ¥¡¥¤¥ë¤ò :!ls ¤« :!dir ¤Ç³Îǧ¤·¤Þ¤¹¡£ - - 3. ¥³¥Þ¥ó¥É¤Î³«»Ï¤ò¥¿¥¤¥×¤·¤Þ¤¹: :e - - 4. CTRL-D ¤ò²¡¤¹¤È Vim ¤Ï "e" ¤«¤é»Ï¤Þ¤ë¥³¥Þ¥ó¥É¤Î°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£ - - 5. ¤ò²¡¤¹¤È Vim ¤Ï ":edit" ¤È¤¤¤¦¥³¥Þ¥ó¥É̾¤òÊä´°¤·¤Þ¤¹¡£ - - 6. ¤µ¤é¤Ë¶õÇò¤È¡¢´û¸¤Î¥Õ¥¡¥¤¥ë̾¤Î»Ï¤Þ¤ê¤ò²Ã¤¨¤Þ¤¹: :edit FIL - - 7. ¤ò²¡¤¹¤È Vim ¤Ï̾Á°¤òÊä´°¤·¤Þ¤¹¡£(¤â¤·°ì¤Ä¤·¤«Ìµ¤«¤Ã¤¿¾ì¹ç) - -NOTE: Êä´°¤Ï¿¤¯¤Î¥³¥Þ¥ó¥É¤ÇÆ°ºî¤·¤Þ¤¹¡£¤½¤·¤Æ CTRL-D ¤È ²¡¤·¤Æ¤ß¤Æ¤¯¤À - ¤µ¤¤¡£ÆÃ¤Ë :help ¤ÎºÝ¤ËÌòΩ¤Á¤Þ¤¹¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ¥ì¥Ã¥¹¥ó 7 Í×Ìó - - - 1. ¥Ø¥ë¥×¥¦¥£¥ó¥É¥¦¤ò³«¤¯¤Ë¤Ï :help ¤È¤¹¤ë¤« ¤â¤·¤¯¤Ï ¤ò²¡¤¹¡£ - - 2. ¥³¥Þ¥ó¥É(cmd)¤Î¥Ø¥ë¥×¤ò¸¡º÷¤¹¤ë¤Ë¤Ï :help cmd ¤È¥¿¥¤¥×¤¹¤ë¡£ - - 3. Ê̤Υ¦¥£¥ó¥É¥¦¤Ø¥¸¥ã¥ó¥×¤¹¤ë¤Ë¤Ï CTRL-W CTRL-W ¤È¥¿¥¤¥×¤¹¤ë¡£ - - 4. ¥Ø¥ë¥×¥¦¥£¥ó¥É¥¦¤òÊĤ¸¤ë¤Ë¤Ï :q ¤È¥¿¥¤¥×¤¹¤ë¡£ - - 5. ¤ª¹¥¤ß¤ÎÀßÄê¤òÊÝ¤Ä¤Ë¤Ï vimrc µ¯Æ°¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë¡£ - - 6. : command ¤Ç²Äǽ¤ÊÊä´°¤ò¸«¤ë¤Ë¤Ï CTRL-D ¤ò¥¿¥¤¥×¤¹¤ë¡£ - Êä´°¤ò»ÈÍѤ¹¤ë¤Ë¤Ï ¤ò²¡¤¹¡£ - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - ¤³¤ì¤Ë¤Æ Vim ¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò½ª¤ï¤ê¤Þ¤¹¡£¥¨¥Ç¥£¥¿¤ò´Êñ¤Ë¡¢¤·¤«¤â½¼Ê¬¤Ë - »È¤¦¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤È¡¢Vim ¤Î»ý¤Ä³µÇ°¤ÎÍ×ÅÀ¤Î¤ß¤òÅÁ¤¨¤è¤¦¤È¤·¤Þ¤·¤¿¡£ - Vim ¤Ë¤Ï¤µ¤é¤Ë¿¤¯¤Î¥³¥Þ¥ó¥É¤¬¤¢¤ê¡¢¤³¤³¤ÇÁ´¤Æ¤òÀâÌÀ¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ - °Ê¹ß¤Ï¥æ¡¼¥¶¥Þ¥Ë¥å¥¢¥ë¤ò»²¾È¤¯¤À¤µ¤¤: "help :user-manual" - - ¤³¤ì°Ê¸å¤Î³Ø½¬¤Î¤¿¤á¤Ë¡¢¼¡¤ÎËܤò¿äÁ¦¤·¤Þ¤¹¡£ - Vim - Vi Improved - by Steve Oualline - ½ÐÈǼÒ: New Riders - ºÇ½é¤ÎËܤϴ°Á´¤Ë Vim ¤Î¤¿¤á¤Ë½ñ¤«¤ì¤Þ¤·¤¿¡£¤È¤ê¤ï¤±½é¿´¼Ô¤Ë¤Ï¤ª¾©¤á¤Ç¤¹¡£ - ¿¤¯¤ÎÎãÂê¤ä¿ÞÈǤ¬·ÇºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ - ¼¡¤ÎURL¤ò»²¾È¤·¤Æ²¼¤µ¤¤ http://iccf-holland.org/click5.html - - ¼¡¤Ï Vim ¤è¤ê¤â Vi ¤Ë¤Ä¤¤¤Æ½ñ¤«¤ì¤¿¸Å¤¤ËܤǤ¹¤¬¿äÁ¦¤·¤Þ¤¹: - Learning the Vi Editor - by Linda Lamb - ½ÐÈǼÒ: O'Reilly & Associates Inc. - Vi ¤Ç¤ä¤ê¤¿¤¤¤È»×¤¦¤³¤È¤Û¤ÜÁ´¤Æ¤òÃΤ뤳¤È¤¬¤Ç¤­¤ëÎɽñ¤Ç¤¹¡£ - Âè6ÈǤǤϡ¢Vim ¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤â´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ - - ¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ï Colorado State University ¤Î Charles Smith ¤Î¥¢¥¤¥Ç¥¢ - ¤ò´ð¤Ë¡¢Colorado School of Mines ¤Î Michael C. Pierce ¤È Robert K. Ware ¤Î - ξ̾¤Ë¤è¤Ã¤Æ½ñ¤«¤ì¤Þ¤·¤¿¡£ E-mail: bware@mines.colorado.edu. - - Modified for Vim by Bram Moolenaar. - - ÆüËܸìÌõ ¾¾ËÜ ÂÙ¹° - ´Æ½¤ ¼²¬ ÂÀϺ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - vi:set ts=8 sts=4 sw=4 tw=78: diff --git a/share/vim/vim73/tutor/tutor.ja.sjis b/share/vim/vim73/tutor/tutor.ja.sjis deleted file mode 100644 index 7be2120a..00000000 --- a/share/vim/vim73/tutor/tutor.ja.sjis +++ /dev/null @@ -1,975 +0,0 @@ -=============================================================================== -= V I M ‹³ –{ (ƒ`ƒ…�[ƒgƒŠƒAƒ‹) ‚Ö ‚æ ‚¤ ‚± ‚» - Version 1.7 = -=============================================================================== - - Vim ‚Í�A‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚Å�à–¾‚·‚é‚É‚Í‘½‚·‚¬‚é’ö‚̃Rƒ}ƒ“ƒh‚ð”õ‚¦‚½”ñ�í - ‚É‹­—͂ȃGƒfƒBƒ^�[‚Å‚·�B‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚Í�A‚ ‚È‚½‚ª Vim ‚𖜔\ƒGƒfƒB - ƒ^�[‚Æ‚µ‚ÄŽg‚¢‚±‚È‚¹‚é‚悤‚É‚È‚é‚Ì‚É�\•ª‚ȃRƒ}ƒ“ƒh‚ɂ‚¢‚Ä�à–¾‚ð‚·‚é‚悤 - ‚È‚Á‚Ä‚¢‚Ü‚·�B - - ƒ`ƒ…�[ƒgƒŠƒAƒ‹‚ðŠ®—¹‚·‚é‚Ì‚É•K—v‚ÈŽžŠÔ‚Í�AŠo‚¦‚½ƒRƒ}ƒ“ƒh‚ðŽŽ‚·‚̂ɂǂꂾ - ‚¯ŽžŠÔ‚ðŽg‚¤‚Ì‚©‚É‚à‚æ‚è‚Ü‚·‚ª�A‚¨‚æ‚»25‚©‚ç30•ª‚Å‚·�B - - ATTENTION: - ˆÈ‰º‚Ì—û�K—pƒRƒ}ƒ“ƒh‚É‚Í‚±‚Ì•¶�Í‚ð•Ï�X‚·‚é‚à‚Ì‚à‚ ‚è‚Ü‚·�B—û�K‚ðŽn‚ß‚é‘O - ‚ɃRƒs�[‚ð�ì�¬‚µ‚Ü‚µ‚傤("vimtutor"‚µ‚½‚È‚ç‚Î�AŠù‚ɃRƒs�[‚³‚ê‚Ä‚¢‚Ü‚·)�B - - ‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚ª�AŽg‚¤‚±‚Æ‚ÅŠo‚¦‚ç‚ê‚éŽd‘g‚Ý‚É‚È‚Á‚Ä‚¢‚邱‚Æ‚ð�A�S‚µ - ‚Ä‚¨‚©‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ�B�³‚µ‚­Šw�K‚·‚é‚ɂ̓Rƒ}ƒ“ƒh‚ðŽÀ�Û‚ÉŽŽ‚³‚È‚¯‚ê‚Î - ‚È‚ç‚È‚¢‚Ì‚Å‚·�B•¶�Í‚ð“Ç‚ñ‚¾‚¾‚¯‚È‚ç‚Î�A‚«‚Á‚Æ–Y‚ê‚Ä‚µ‚Ü‚¢‚Ü‚·!�B - - ‚³‚Ÿ�ACapsƒ�ƒbƒN(Shift-Lock)ƒL�[‚ª‰Ÿ‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚ðŠm”F‚µ‚½Œã�A‰æ–Ê‚É - ƒŒƒbƒXƒ“1.1 ‚ª‘S•”•\Ž¦‚³‚ê‚é‚Æ‚±‚ë‚Ü‚Å�Aj ƒL�[‚ð‰Ÿ‚µ‚ăJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü - ‚µ‚傤�B -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.1: ƒJ�[ƒ\ƒ‹‚̈ړ® - - - ** ƒJ�[ƒ\ƒ‹‚ðˆÚ“®‚·‚é‚É‚Í�AŽ¦‚³‚ê‚é—l‚É h,j,k,l ‚ð‰Ÿ‚µ‚Ü‚· ** - ^ - k ƒqƒ“ƒg: h ƒL�[‚Í�¶•ûŒü‚Ɉړ®‚µ‚Ü‚·�B - < h l > l ƒL�[‚͉E•ûŒü‚Ɉړ®‚µ‚Ü‚·�B - j j ƒL�[‚͉º–îˆóƒL�[‚̂悤‚ȃL�[‚Å‚·�B - v - 1. ˆÚ“®‚ÉŠµ‚ê‚é‚Ü‚Å�AƒXƒNƒŠ�[ƒ“‚ŃJ�[ƒ\ƒ‹ˆÚ“®‚³‚¹‚Ü‚µ‚傤�B - - 2. ‰º‚ւ̃L�[(j)‚ð‰Ÿ‚µ‚‚¯‚é‚Æ�A˜A‘±‚µ‚Ĉړ®‚Å‚«‚Ü‚·�B - ‚±‚ê‚ÅŽŸ‚̃ŒƒbƒXƒ“‚Ɉړ®‚·‚é•û–@‚ª‚í‚©‚è‚Ü‚µ‚½‚Ë�B - - 3. ‰º‚ւ̃L�[‚ðŽg‚Á‚Ä�AƒŒƒbƒXƒ“1.2 ‚Ɉړ®‚µ‚Ü‚µ‚傤�B - -Note: ‰½‚ðƒ^ƒCƒv‚µ‚Ä‚¢‚é‚©”»‚ç‚È‚­‚È‚Á‚½‚ç�A‚ð‰Ÿ‚µ‚ăm�[ƒ}ƒ‹ƒ‚�[ƒh‚É‚µ - ‚Ü‚·�B‚»‚ê‚©‚ç“ü—Í‚µ‚悤‚Æ‚µ‚Ä‚¢‚½ƒRƒ}ƒ“ƒh‚ð�Ä“ü—Í‚µ‚Ü‚µ‚傤�B - -Note: ƒJ�[ƒ\ƒ‹ƒL�[‚Å‚àˆÚ“®‚Å‚«‚Ü‚·�B‚µ‚©‚µ hjkl ‚Ɉê“xŠµ‚ê‚Ä‚µ‚Ü‚¦‚Î�A‚Í‚é‚© - ‚É‘¬‚­ˆÚ“®‚·‚邱‚Æ‚ª‚Å‚«‚é‚Å‚µ‚傤�B‚¢‚âƒ}ƒW‚Å! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.2: VIM ‚Ì‹N“®‚Æ�I—¹ - - - !! NOTE: ˆÈ‰º‚Ì‚ ‚ç‚ä‚éƒXƒeƒbƒv‚ð�s‚¤‘O‚É�A‚±‚̃ŒƒbƒXƒ“‚ð“Ç‚Ý‚Ü‚µ‚傤!! - - 1. ƒL�[‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B(ŠmŽÀ‚Ƀm�[ƒ}ƒ‹ƒ‚�[ƒh‚É‚·‚邽‚ß) - - 2. ŽŸ‚̂悤‚Ƀ^ƒCƒv: :q! - ‚±‚ê‚É‚æ‚è•Ò�W‚µ‚½“à—e‚ð•Û‘¶‚¹‚¸‚ɃGƒfƒBƒ^‚ª�I—¹‚µ‚Ü‚·�B - - 3. ƒVƒFƒ‹ƒvƒ�ƒ“ƒvƒg‚ª�o‚Ä‚«‚½‚ç�A‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚ðŽn‚ß‚éˆ×‚ɂɃRƒ}ƒ“ƒh - ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B - ‚»‚̃Rƒ}ƒ“ƒh‚Í: vimtutor - - 4. ‚±‚ê‚܂ł̃Xƒeƒbƒv‚ðŠo‚¦Ž©�M‚ª‚‚¢‚½‚È‚ç‚Î�AƒXƒeƒbƒv 1 ‚©‚ç 3 ‚Ü‚Å‚ðŽÀ - �Û‚ÉŽŽ‚µ‚Ä�AVim ‚ð1“x�I—¹‚µ‚Ä‚©‚ç�Ä‚Ñ‹N“®‚µ‚Ü‚µ‚傤�B - -NOTE: :q! ‚Í‘S‚Ä‚Ì•Ï�X‚ð”jŠü‚µ‚Ü‚·�BƒŒƒbƒXƒ“‚É‚Ä•Ï�X‚ðƒtƒ@ƒCƒ‹‚É•Û - ‘¶‚·‚é•û–@‚ɂ‚¢‚Ä‚à•×‹­‚µ‚Ä‚¢‚«‚Ü‚µ‚傤�B - - 5. 1.3‚܂ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚³‚¹‚Ü‚µ‚傤�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.3: ƒeƒLƒXƒg•Ò�W - �í�œ - - - ** ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚ɂăJ�[ƒ\ƒ‹‚̉º‚Ì•¶Žš‚ð�í�œ‚·‚é‚É‚Í x ‚ð‰Ÿ‚µ‚Ü‚· ** - - 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 2. ŠÔˆá‚¢‚ð�C�³‚·‚邽‚ß‚É�A�í�œ‚·‚é�Å�‰‚Ì•¶Žš‚܂ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B - - 3. •s•K—v‚È•¶Žš‚ð x ‚ð‰Ÿ‚µ‚Ä�í�œ‚µ‚Ü‚µ‚傤�B - - 4. •¶‚ª�³‚µ‚­‚È‚é‚Ü‚Å ƒXƒeƒbƒv 2 ‚©‚ç 4 ‚ðŒJ‚è•Ô‚µ‚Ü‚µ‚傤�B - ----> ‚»‚Ì ‚¤‚¤‚³‚¬ ‚Í ‚‚‚«‚« ‚ð ‚±‚¦‚¦‚Ä‚Ä ‚Æ‚Ñ‚Í‚Ë‚½‚½ - - 5. �s‚ª�³‚µ‚­‚È‚Á‚½‚ç�AƒŒƒbƒXƒ“ 1.4 ‚Ö�i‚Ý‚Ü‚µ‚傤�B - -NOTE: ‘S‚ẴŒƒbƒXƒ“‚ð’Ê‚¶‚Ä�AŠo‚¦‚悤‚Æ‚·‚é‚Ì‚Å‚Í‚È‚­ŽÀ�Û‚É‚â‚Á‚Ä‚Ý‚Ü‚µ‚傤�B - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.4: ƒeƒLƒXƒg•Ò�W - ‘}“ü - - - ** ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚ɂăeƒLƒXƒg‚ð‘}“ü‚·‚é‚É‚Í i ‚ð‰Ÿ‚µ‚Ü‚· ** - - 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�Å�‰‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 2. 1�s–Ú‚ð2�s–Ú‚Æ“¯‚¶—l‚É‚·‚邽‚ß‚É�AƒeƒLƒXƒg‚ð‘}“ü‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢ˆÊ’u - ‚ÌŽŸ‚Ì•¶Žš‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B - - 3. i ƒL�[‚ð‰Ÿ‚µ‚Ä‚©‚ç�A’ljÁ‚ª•K—v‚È•¶Žš‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B - - 4. ŠÔˆá‚¢‚ð�C�³‚µ‚½‚ç ‚ð‰Ÿ‚µ‚ăRƒ}ƒ“ƒhƒ‚�[ƒh‚É–ß‚è�A�³‚µ‚¢•¶‚É‚È‚é—l - ‚ɃXƒeƒbƒv 2 ‚©‚ç 4 ‚ðŒJ‚è•Ô‚µ‚Ü‚µ‚傤�B - ----> ‚±‚Ì ‚É‚Í ‘«‚è‚È‚¢ ƒeƒLƒXƒg ‚ ‚é�B ----> ‚±‚Ì �s ‚É‚Í Šô‚‚© ‘«‚è‚È‚¢ ƒeƒLƒXƒg ‚ª ‚ ‚é�B - - 5. ‘}“ü‚Ì•û–@‚ª‚í‚©‚Á‚½‚牺‚̃ŒƒbƒXƒ“1‚Ì—v–ñ‚ðŒ©‚Ü‚µ‚傤�B - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.5: ƒeƒLƒXƒg•Ò�W - ’ljÁ - - - ** ƒeƒLƒXƒg’ljÁ‚·‚é‚É‚Í A ‚ð‰Ÿ‚µ‚Ü‚µ‚傤 ** - - 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�Å�‰‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - ƒJ�[ƒ\ƒ‹‚ª‚»‚Ì•¶Žš�ã‚É‚ ‚Á‚Ä‚à‚©‚Ü‚¢‚Ü‚¹‚ñ�B - - 2. ’ljÁ‚ª•K—v‚È�ê�Š‚Å A ‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B - - 3. ƒeƒLƒXƒg‚ð’ljÁ‚µ�I‚¦‚½‚ç�A ‚ð‰Ÿ‚µ‚ăm�[ƒ}ƒ‹ƒ‚�[ƒh‚É–ß‚è‚Ü‚µ‚傤�B - - 4. 2�s–Ú‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�ê�Š‚ÖˆÚ“®‚µ�AƒXƒeƒbƒv 2 ‚©‚ç 3 ŒJ‚è•Ô‚µ‚Ä•¶–@‚ð - �C�³‚µ‚Ü‚µ‚傤�B - ----> ‚±‚±‚É‚ÍŠÔˆá‚Á‚½ƒeƒLƒXƒg‚ª‚ ‚è - ‚±‚±‚É‚ÍŠÔˆá‚Á‚½ƒeƒLƒXƒg‚ª‚ ‚è‚Ü‚·�B ----> ‚±‚±‚É‚àŠÔˆá‚Á‚½ƒeƒLƒX - ‚±‚±‚É‚àŠÔˆá‚Á‚½ƒeƒLƒXƒg‚ª‚ ‚è‚Ü‚·�B - - 5. ƒeƒLƒXƒg‚̒ljÁ‚ªŒy‰õ‚É‚È‚Á‚Ä‚«‚½‚烌ƒbƒXƒ“ 1.6 ‚Ö�i‚Ý‚Ü‚µ‚傤�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1.6: ƒtƒ@ƒCƒ‹‚Ì•Ò�W - - - ** ƒtƒ@ƒCƒ‹‚ð•Û‘¶‚µ‚Ä�I—¹‚·‚é‚É‚Í :wq ‚ƃ^ƒCƒv‚µ‚Ü‚· ** - - !! NOTE: ˆÈ‰º‚̃Xƒeƒbƒv‚ðŽÀ�s‚·‚é‘O‚É�A‚Ü‚¸‘S‘Ì‚ð“Ç‚ñ‚Å‚­‚¾‚³‚¢!! - - 1. ƒŒƒbƒXƒ“ 1.2 ‚Å‚â‚Á‚½‚悤‚É :q! ‚ðƒ^ƒCƒv‚µ‚Ä�A‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚ð�I—¹ - ‚µ‚Ü‚·�B - - 2. ƒVƒFƒ‹ƒvƒ�ƒ“ƒvƒg‚Å‚±‚̃Rƒ}ƒ“ƒh‚ðƒ^ƒCƒv‚µ‚Ü‚·: vim tutor - 'vim'‚ª Vim ƒGƒfƒBƒ^‚ð‹N“®‚·‚éƒRƒ}ƒ“ƒh�A'tutor' ‚Í•Ò�W‚µ‚½‚¢ƒtƒ@ƒCƒ‹‚Ì - –¼‘O‚Å‚·�B•Ï�X‚µ‚Ä‚à‚æ‚¢ƒtƒ@ƒCƒ‹‚ðŽg‚¢‚Ü‚µ‚傤�B - - 3. ‘O‚̃ŒƒbƒXƒ“‚ÅŠw‚ñ‚¾‚悤‚É�AƒeƒLƒXƒg‚ð‘}“ü�A�í�œ‚µ‚Ü‚·�B - - 4. •Ï�X‚ðƒtƒ@ƒCƒ‹‚É•Û‘¶‚µ‚Ü‚·: :wq - - 5. vimtutor ‚ð�Ä“x‹N“®‚µ�AˆÈ‰º‚Ì—v–ñ‚Ö�i‚Ý‚Ü‚µ‚傤�B - - 6. ˆÈ�ã‚̃Xƒeƒbƒv‚ð“Ç‚ñ‚Å—�‰ð‚µ‚½�ã‚Å‚±‚ê‚ðŽÀ�s‚µ‚Ü‚µ‚傤�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 1 —v–ñ - - - 1. ƒJ�[ƒ\ƒ‹‚Í–îˆóƒL�[‚à‚µ‚­‚Í hjkl ƒL�[‚ňړ®‚µ‚Ü‚·�B - h (�¶) j (‰º) k (�ã) l (‰E) - - 2. Vim ‚ð‹N“®‚·‚é‚ɂ̓vƒ�ƒ“ƒvƒg‚©‚ç vim ƒtƒ@ƒCƒ‹–¼ ‚ƃ^ƒCƒv‚µ‚Ü‚·�B - - 3. Vim ‚ð�I—¹‚·‚é‚É‚Í :q! ‚ƃ^ƒCƒv‚µ‚Ü‚·(•Ï�X‚ð”jŠü)�B - ‚à‚µ‚­‚Í :wq ‚ƃ^ƒCƒv‚µ‚Ü‚·(•Ï�X‚ð•Û‘¶)�B - - 4. ƒJ�[ƒ\ƒ‹‚̉º‚Ì•¶Žš‚ð�í�œ‚·‚é‚É‚Í�Aƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å x ‚ƃ^ƒCƒv‚µ‚Ü‚·�B - - 5. ƒJ�[ƒ\ƒ‹‚̈ʒu‚É•¶Žš‚ð‘}“ü‚·‚é‚É‚Í�Aƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å i ‚ƃ^ƒCƒv‚µ‚Ü‚·�B - i ƒeƒLƒXƒg‚̃^ƒCƒv ƒJ�[ƒ\ƒ‹ˆÊ’u‚ɒljÁ - A ƒeƒLƒXƒg‚̒ljÁ �s––‚ɒljÁ - -NOTE: ƒL�[‚ð‰Ÿ‚·‚ƃm�[ƒ}ƒ‹ƒ‚�[ƒh‚ɈÚ�s‚µ‚Ü‚·�B‚»‚Ì�Û�AŠÔˆá‚Á‚½‚è“ü—Í“r - ’†‚̃Rƒ}ƒ“ƒh‚ðŽæ‚è�Á‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·�B - -‚³‚Ä�A‘±‚¯‚ăŒƒbƒXƒ“ 2 ‚ðŽn‚ß‚Ü‚µ‚傤�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.1: �í�œƒRƒ}ƒ“ƒh - - - ** ’PŒê‚Ì––”ö‚Ü‚Å‚ð�í�œ‚·‚é‚É‚Í dw ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤 ** - - 1. ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å‚ ‚邱‚Æ‚ðŠm”F‚·‚邽‚ß‚É ‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B - - 2. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 3. �Á‚µ‚½‚¢’PŒê‚Ì�擪‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 4. ’PŒê‚ð�í�œ‚·‚邽‚ß‚É dw ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B - - NOTE: ƒ^ƒCƒv‚·‚é‚Æ�Adw ‚Æ‚¢‚¤•¶Žš‚ªƒXƒNƒŠ�[ƒ“‚Ì�ʼnº�s‚ÉŒ»‚í‚ê‚Ü‚·�B - ƒ^ƒCƒv‚ðŠÔˆá‚Á‚Ä‚µ‚Ü‚Á‚½Žž‚É‚Í ‚ð‰Ÿ‚µ‚Ä‚â‚è’¼‚µ‚Ü‚µ‚傤�B - ----> ‚±‚Ì •¶ Ž† ‚É‚Í ‚¢‚­‚‚©‚Ì ‚½‚Ì‚µ‚¢ •K—v‚Ì‚È‚¢ ’PŒê ‚ª ŠÜ‚Ü‚ê‚Ä ‚¢‚Ü‚·�B - - 5. 3 ‚©‚ç 4 ‚܂ł𕶂ª�³‚µ‚­‚È‚é‚Ü‚ÅŒJ‚è•Ô‚µ�AƒŒƒbƒXƒ“ 2.2 ‚Ö�i‚Ý‚Ü‚µ‚傤�B - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.2: ‚»‚Ì‘¼‚Ì�í�œƒRƒ}ƒ“ƒh - - - ** �s‚Ì––”ö‚Ü‚Å‚ð�í�œ‚·‚é‚É‚Í d$ ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤 ** - - 1. ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å‚ ‚邱‚Æ‚ðŠm”F‚·‚é‚Ì‚É ‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B - - 2. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 3. �³‚µ‚¢•¶‚Ì––”ö‚ÖƒJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤(�Å�‰‚Ì . ‚ÌŒã‚Å‚·)�B - - 4. �s––‚Ü‚Å�í�œ‚·‚é‚Ì‚É d$ ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B - ----> ’N‚©‚ª‚±‚Ì�s‚Ì�ÅŒã‚ð2“xƒ^ƒCƒv‚µ‚Ü‚µ‚½�B 2“xƒ^ƒCƒv‚µ‚Ü‚µ‚½�B - - - 5. ‚Ç‚¤‚¢‚¤‚±‚Æ‚©—�‰ð‚·‚邽‚ß‚É�AƒŒƒbƒXƒ“ 2.3 ‚Ö�i‚Ý‚Ü‚µ‚傤�B - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.3: ƒIƒyƒŒ�[ƒ^‚ƃ‚�[ƒVƒ‡ƒ“ - - - ‘½‚­‚̃Rƒ}ƒ“ƒh‚̓IƒyƒŒ�[ƒ^‚ƃ‚�[ƒVƒ‡ƒ“‚©‚çƒeƒLƒXƒg‚É•Ï�X‚ð‰Á‚Ü‚·�B - �í�œƒRƒ}ƒ“ƒh d ‚̃IƒyƒŒ�[ƒ^‚ÍŽŸ‚Ì—l‚É‚È‚Á‚Ä‚¢‚Ü‚·: - - d ƒ‚�[ƒVƒ‡ƒ“ - - ‚»‚ꂼ‚ê: - d - �í�œƒRƒ}ƒ“ƒh�B - ƒ‚�[ƒVƒ‡ƒ“ - ‰½‚ɑ΂µ‚Ä“­‚«‚©‚¯‚é‚©(ˆÈ‰º‚É‹“‚°‚Ü‚·)�B - - ƒIƒyƒŒ�[ƒ^‚̈ꕔˆê——: - w - ƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç‹ó”’‚ðŠÜ‚Þ’PŒê‚Ì––”ö‚Ü‚Å�B - e - ƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç‹ó”’‚ðŠÜ‚Ü‚È‚¢’PŒê‚Ì––”ö‚Ü‚Å�B - $ - ƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç�s––‚Ü‚Å�B - - ‚‚܂è de ‚ƃ^ƒCƒv‚·‚é‚Æ�AƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç’PŒê‚Ì�I‚í‚è‚Ü‚Å‚ð�í�œ‚µ‚Ü‚·�B - -NOTE: –`Œ¯‚µ‚½‚¢�l‚Í�Aƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚ɂăRƒ}ƒ“ƒh‚È‚µ‚Ƀ‚�[ƒVƒ‡ƒ“‚ð‰Ÿ‚µ‚Ä - ‚Ý‚Ü‚µ‚傤�BƒJ�[ƒ\ƒ‹‚ª–Ú“IŒêˆê——‚ÅŽ¦‚³‚ê‚éˆÊ’u‚Ɉړ®‚·‚é‚Í‚¸‚Å‚·�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.4: ƒ‚�[ƒVƒ‡ƒ“‚ɃJƒEƒ“ƒg‚ðŽg—p‚·‚é - - - ** ‰½‰ñ‚à�s‚¢‚½‚¢ŒJ‚è•Ô‚µ‚̃‚�[ƒVƒ‡ƒ“‚Ì‘O‚É�”’l‚ðƒ^ƒCƒv‚µ‚Ü‚·�B ** - - 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚Ì�擪‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B - - 2. 2dw ‚ðƒ^ƒCƒv‚µ‚Ä’PŒê2‚•ªˆÚ“®‚µ‚Ü‚·�B - - 3. 3e ‚ðƒ^ƒCƒv‚µ‚Ä3‚–ڂ̒PŒê‚Ì�I’[‚Ɉړ®‚µ‚Ü‚·�B - - 4. 0 (ƒ[ƒ�)‚ðƒ^ƒCƒv‚µ‚Ä�s“ª‚Ɉړ®‚µ‚Ü‚·�B - - 5. ƒXƒeƒbƒv 2 ‚Æ 3 ‚ðˆá‚¤�”’l‚ÆŽg‚Á‚ÄŒJ‚è•Ô‚µ‚Ü‚·�B - ----> This is just a line with words you can move around in. - - 6. ƒŒƒbƒXƒ“ 2.5 ‚É�i‚Ý‚Ü‚µ‚傤�B - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.5: ‚æ‚葽‚­‚ð�í�œ‚·‚邽‚߂ɃJƒEƒ“ƒg‚ðŽg—p‚·‚é - - - ** ƒIƒyƒŒ�[ƒ^‚ƃJƒEƒ“ƒg‚ðƒ^ƒCƒv‚·‚é‚Æ�A‚»‚Ì‘€�삪•¡�”‰ñŒJ‚è•Ô‚³‚ê‚Ü‚·�B ** - - Šù�q‚Ì�í�œ‚̃IƒyƒŒ�[ƒ^‚ƃ‚�[ƒVƒ‡ƒ“‚Ì‘g‚Ý�‡‚킹‚ɃJƒEƒ“ƒg‚ð’ljÁ‚·‚邱‚Æ‚Å�A - ‚æ‚葽‚­‚Ì�í�œ‚ª�s‚¦‚Ü‚·: - d �”’l ƒ‚�[ƒVƒ‡ƒ“ - - 1. ---> ‚ÆŽ¦‚³‚ꂽ�s‚Ì�s“ª•”•ª‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 2. UPPER CASE ‚Ì’PŒê2‚‚ð 2dw ‚ƃ^ƒCƒv‚µ‚Ä�í�œ‚µ‚Ü‚·�B - - 3. UPPER CASE ‚Æ‚¢‚¤˜A‘±‚µ‚½’PŒê‚ð�A1‚‚̃Rƒ}ƒ“ƒh‚ƈقȂéƒJƒEƒ“ƒg‚ðŽw’肵�A - ƒXƒeƒbƒv 1 ‚Æ 2 ‚ðŒJ‚è•Ô‚µ‚Ü‚·�B - ----> ‚±‚ÌABC DE�s‚ÌFGHI JK LMN OP’PŒê‚ÍQ RS TUVãY—í‚É‚È‚Á‚½�B - -NOTE: ƒIƒyƒŒ�[ƒ^ d ‚ƃ‚�[ƒVƒ‡ƒ“‚̊ԂɃJƒEƒ“ƒg‚ðŽg‚Á‚½�ê�‡�AƒIƒyƒŒ�[ƒ^‚Ì‚È‚¢ - �ê�‡‚̃‚�[ƒVƒ‡ƒ“‚̂悤‚É“®�삵‚Ü‚·�B - —á: 3dw ‚Æ d3w ‚Í“¯“™‚Å�A3w ‚ð�í�œ‚µ‚Ü‚·�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.6: �s‚Ì‘€�ì - - - ** �s‘S‘Ì‚ð�í�œ‚·‚é‚É‚Í dd ‚ƃ^ƒCƒv‚µ‚Ü‚· ** - - �s‘S‘Ì‚ð�í�œ‚·‚é•p“x‚ª‘½‚¢‚Ì‚Å�AVi‚̃fƒUƒCƒi�[‚Í�s‚Ì�í�œ‚ð d ‚Ì2‰ñƒ^ƒCƒv‚Æ - ‚¢‚¤ŠÈ’P‚È‚à‚Ì‚ÉŒˆ‚ß‚Ü‚µ‚½�B - - 1. ˆÈ‰º‚Ì‹å‚Ì2�s–ڂɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B - 2. dd ‚ƃ^ƒCƒv‚µ‚Ä�s‚ð�í�œ‚µ‚Ü‚·�B - 3. ‚³‚ç‚É4�s–ڂɈړ®‚µ‚Ü‚·�B - 4. 2dd ‚ƃ^ƒCƒv‚µ‚Ä2�s‚ð�í�œ‚µ‚Ü‚·�B - ----> 1) ƒoƒ‰‚Í�Ô‚¢�A ----> 2) ‚‚܂ç‚È‚¢‚à‚Ì‚ÍŠy‚µ‚¢�A ----> 3) ƒXƒ~ƒŒ‚Í�‚¢�A ----> 4) Ž„‚ÍŽÔ‚ð‚à‚Á‚Ä‚¢‚é�A ----> 5) ŽžŒv‚ªŽž��‚ð��‚°‚é�A ----> 6) �»“œ‚͊¢ ----> 7) ƒIƒ}ƒGƒ‚ƒi�[ - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2.7: ‚â‚è’¼‚µƒRƒ}ƒ“ƒh - - - ** �ÅŒã‚̃Rƒ}ƒ“ƒh‚ðŽæ‚è�Á‚·‚É‚Í u ‚ð‰Ÿ‚µ‚Ü‚·�BU ‚Í�s‘S‘Ì‚ÌŽæ�Á‚Å‚·�B ** - - 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ�A�Å�‰‚̊ԈႢ‚ɃJ�[ƒ\ - ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - 2. x ‚ðƒ^ƒCƒv‚µ‚Ä‚¢‚ç‚È‚¢�擪‚Ì•¶Žš‚ð�í�œ‚µ‚Ü‚µ‚傤�B - 3. ‚³‚Ÿ�Au ‚ðƒ^ƒCƒv‚µ‚Ä�ÅŒã‚ÉŽÀ�s‚µ‚½ƒRƒ}ƒ“ƒh‚ðŽæ‚è�Á‚µ‚Ü‚µ‚傤�B - 4. �¡“x‚Í�Ax ‚ðŽg—p‚µ‚ÄŒë‚è‚ð‘S‚Ä�C�³‚µ‚Ü‚µ‚傤�B - 5. ‘啶Žš‚Ì U ‚ðƒ^ƒCƒv‚µ‚Ä�A�s‚ðŒ³‚Ì�ó‘Ô‚É–ß‚µ‚Ü‚µ‚傤�B - 6. u ‚ðƒ^ƒCƒv‚µ‚Ä’¼‘O‚Ì U ƒRƒ}ƒ“ƒh‚ðŽæ�Á‚µ‚Ü‚µ‚傤�B - 7. ‚ł̓Rƒ}ƒ“ƒh‚ð�ÄŽÀ�s‚·‚é‚Ì‚É CTRL-R (CTRL ‚ð‰Ÿ‚µ‚½‚Ü‚Ü R ‚ð‘Å‚Â)‚ð�”‰ñ - ƒ^ƒCƒv‚µ‚Ä‚Ý‚Ü‚µ‚傤(Žæ�Á‚ÌŽæ�Á)�B - ----> ‚±‚Ì‚Ì�s‚̂̊ԈႢ‚ð�C�³�X‚µ�AŒã‚Å‚»‚ê‚ç‚Ì�C�³‚ð‚ðŽæ�Á‚µ‚Ü‚Ü‚·‚·�B - - 8. ‚±‚ê‚Í‚Æ‚Ä‚à•Ö—˜‚ȃRƒ}ƒ“ƒh‚Å‚·�B‚³‚ŸƒŒƒbƒXƒ“ 2 —v–ñ‚Ö�i‚Ý‚Ü‚µ‚傤�B - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 2 —v–ñ - - - 1. ƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç’PŒê‚Ì––”ö‚Ü‚Å‚ð�í�œ‚·‚é‚É‚Í dw ‚ƃ^ƒCƒv‚µ‚Ü‚·�B - 2. ƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç�s‚Ì––”ö‚Ü‚Å‚ð�í�œ‚·‚é‚É‚Í d$ ‚ƃ^ƒCƒv‚µ‚Ü‚·�B - 3. �s‘S‘Ì‚ð�í�œ‚·‚é‚É‚Í dd ‚ƃ^ƒCƒv‚µ‚Ü‚·�B - - 4. ƒ‚�[ƒVƒ‡ƒ“‚ðŒJ‚è•Ô‚·‚É‚Í�”’l‚ð•t—^‚µ‚Ü‚·: 2w - 5. •Ï�X‚É—p‚¢‚éƒRƒ}ƒ“ƒh‚ÌŒ`Ž®‚Í - ƒIƒyƒŒ�[ƒ^ [�”’l] ƒ‚�[ƒVƒ‡ƒ“ - - ‚»‚ꂼ‚ê: - ƒIƒyƒŒ�[ƒ^ - �í�œ d ‚̗ނʼn½‚ð‚·‚é‚©�B - �”’l - ‚»‚̃Rƒ}ƒ“ƒh‚ð‰½‰ñŒJ‚è•Ô‚·‚©�B - ƒ‚�[ƒVƒ‡ƒ“ - w (’PŒê)‚â $ (�s––)‚È‚Ç‚Ì—Þ‚Å�AƒeƒLƒXƒg‚̉½‚ɑ΂µ‚Ä“­‚«‚© - ‚¯‚é‚©�B - - 6. �s‚Ì�擪‚Ɉړ®‚·‚é‚ɂ̓[ƒ�‚ðŽg—p‚µ‚Ü‚·: 0 - - 7. ‘O‰ñ‚Ì“®�ì‚ðŽæ�Á‚·: u (�¬•¶Žš u) - �s‘S‘Ì‚Ì•Ï�X‚ðŽæ�Á‚·: U (‘啶Žš U) - Žæ�Á‚µ‚ÌŽæ�Á‚µ: CTRL-R -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 3.1: “\‚è•t‚¯ƒRƒ}ƒ“ƒh - - - ** �ÅŒã‚É�í�œ‚³‚ꂽ�s‚ðƒJ�[ƒ\ƒ‹‚ÌŒã‚É“\‚è•t‚¯‚é‚É‚Í p ‚ðƒ^ƒCƒv‚µ‚Ü‚· ** - - 1. ˆÈ‰º‚Ì’i—Ž‚Ì�Å�‰‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 2. dd ‚ƃ^ƒCƒv‚µ‚Ä�s‚ð�í�œ‚µ�AVim ‚̃oƒbƒtƒ@‚ÉŠi”[‚µ‚Ü‚µ‚傤�B - - 3. �í�œ‚µ‚½�s‚ª–{—ˆ‚ ‚é‚ׂ«ˆÊ’u‚Ì�ã‚Ì�s‚Ü‚Å�AƒJ�[ƒ\ƒ‹‚ðˆÚ“®‚³‚¹‚Ü‚µ‚傤�B - - 4. ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å p ‚ðƒ^ƒCƒv‚µ‚ÄŠi”[‚µ‚½�s‚ð‰æ–Ê‚É–ß‚µ‚Ü‚·�B - - 5. �‡”Ô‚ª�³‚µ‚­‚È‚é—l‚ɃXƒeƒbƒv 2 ‚©‚ç 4 ‚ðŒJ‚è•Ô‚µ‚Ü‚µ‚傤�B - - d) ‹M•û‚àŠw‚Ô‚±‚Æ‚ª‚Å‚«‚é? - b) ƒXƒ~ƒŒ‚Í�‚¢�A - c) ’mŒb‚Æ‚ÍŠw‚Ô‚à‚Ì�A - a) ƒoƒ‰‚Í�Ô‚¢�A - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 3.2: ’u‚«Š·‚¦ƒRƒ}ƒ“ƒh - - - ** ƒJ�[ƒ\ƒ‹‚̉º‚Ì•¶Žš‚ð’u‚«Š·‚¦‚é‚É‚Í r ‚ðƒ^ƒCƒv‚µ‚Ü‚· ** - - 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�Å�‰‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 2. �Å�‰‚̊ԈႢ‚Ì�擪‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 3. r ‚ƃ^ƒCƒv‚µ�AŠÔˆá‚Á‚Ä‚¢‚镶Žš‚ð’u‚«Š·‚¦‚é�A�³‚µ‚¢•¶Žš‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B - - 4. �Å�‰‚Ì�s‚ª�³‚µ‚­‚È‚é‚܂ŃXƒeƒbƒv 2 ‚©‚ç 3 ‚ðŒJ‚è•Ô‚µ‚Ü‚µ‚傤�B - ----> ‚±‚Ì�‡‚ð�l—Í‚µ‚½Žž‚Ë�A‚»‚Ì�l‚ÍŠô‚‚©–âˆá‚Á‚½ƒL�[‚ð‰Ÿ‚µ‚à‚µ‚½! ----> ‚±‚Ì�s‚ð“ü—Í‚µ‚½Žž‚É�A‚»‚Ì�l‚ÍŠô‚‚©ŠÔˆá‚Á‚½ƒL�[‚ð‰Ÿ‚µ‚Ü‚µ‚½! - - 5. ‚³‚Ÿ�AƒŒƒbƒXƒ“ 3.2 ‚Ö�i‚Ý‚Ü‚µ‚傤�B - -NOTE: ŽÀ�Û‚ÉŽŽ‚µ‚Ü‚µ‚傤�BŒˆ‚µ‚ÄŠo‚¦‚邾‚¯‚É‚Í‚µ‚È‚¢‚±‚Æ�B - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 3.3: •Ï�XƒRƒ}ƒ“ƒh - - - ** ’PŒê‚̈ꕔ�A‚à‚µ‚­‚Í‘S‘Ì‚ð•Ï�X‚·‚é‚É‚Í cw ‚ƃ^ƒCƒv‚µ‚Ü‚· ** - - 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�Å�‰‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 2. lubw ‚Ì u ‚̈ʒu‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 3. cw ‚ƃ^ƒCƒv‚µ�A�³‚µ‚¢’PŒê‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤(‚±‚Ì�ê�‡ 'ine' ‚ƃ^ƒCƒv)�B - - 4. ŽŸ‚̊ԈႢ(•Ï�X‚·‚ׂ«•¶Žš‚Ì�擪)‚Ɉړ®‚·‚邽‚ß‚É ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B - - 5. �Å�‰‚Ì�s‚ªŽŸ‚Ì�s‚Ì—l‚É‚È‚é‚܂ŃXƒeƒbƒv 3 ‚Æ 4 ‚ðŒJ‚è•Ô‚µ‚Ü‚·�B - ----> This lubw has a few wptfd that mrrf changing usf the change command. ----> This line has a few words that need changing using the change command. - -cw ‚Í’PŒê‚ð•Ï�X‚·‚邾‚¯‚Å‚È‚­�A‘}“ü‚à�s‚¦‚邱‚Æ‚É’�ˆÓ‚µ‚Ü‚µ‚傤�B - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 3.4: c ‚ðŽg—p‚µ‚½‚»‚Ì‘¼‚Ì•Ï�X - - - ** •Ï�XƒRƒ}ƒ“ƒh‚Í�A�í�œƒRƒ}ƒ“ƒh‚Æ“¯‚¶—l‚ɃIƒuƒWƒFƒNƒg‚ðŽg—p‚µ‚Ü‚· ** - - 1. •Ï�XƒRƒ}ƒ“ƒh‚Í�A�í�œƒRƒ}ƒ“ƒh‚Æ“¯‚¶‚悤‚È“®�ì‚ð‚µ‚Ü‚·�B‚»‚ÌŒ`Ž®‚Í - - c [�”’l] ƒ‚�[ƒVƒ‡ƒ“ - - 2. ƒIƒuƒWƒFƒNƒg‚à“¯‚¶‚Å�Aw ‚Í’PŒê�A $ ‚Í�s––‚È‚Ç‚Æ‚¢‚Á‚½‚à‚Ì‚Å‚·�B - - 3. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 4. �Å�‰‚̊ԈႢ‚ÖƒJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 5. c$ ‚ƃ^ƒCƒv‚µ‚Ä�s‚ÌŽc‚è‚ð‚Q�s–Ú‚Ì—l‚É‚µ�A ‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B - ----> The end of this line needs some help to make it like the second. ----> The end of this line needs to be corrected using the c$ command. - -NOTE: ƒ^ƒCƒv’†‚̊ԈႢ‚̓oƒbƒNƒXƒy�[ƒXƒL�[‚ðŽg‚Á‚Ä’¼‚·‚±‚Æ‚à‚Å‚«‚Ü‚·�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 3 —v–ñ - - - 1. Šù‚É�í�œ‚³‚ꂽƒeƒLƒXƒg‚ð�Ä”z’u‚·‚é‚É‚Í�Ap ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B‚±‚ê‚Í�í�œ‚³ - ‚ꂽƒeƒLƒXƒg‚ðƒJ�[ƒ\ƒ‹‚ÌŒã‚É‘}“ü‚µ‚Ü‚·(�s’PˆÊ‚Å�í�œ‚³‚ꂽ‚Ì‚È‚ç‚Î�AƒJ�[ - ƒ\ƒ‹‚Ì‚ ‚鎟‚Ì�s‚É‘}“ü‚³‚ê‚Ü‚·)�B - - 2. ƒJ�[ƒ\ƒ‹‚̉º‚Ì•¶Žš‚ð’u‚«Š·‚¦‚é‚É‚Í�Ar ‚ðƒ^ƒCƒv‚µ‚½Œã�A‚»‚ê‚ð’u‚«Š·‚¦‚é - •¶Žš‚ðƒ^ƒCƒv‚µ‚Ü‚·�B - - 3. •Ï�XƒRƒ}ƒ“ƒh‚ł̓J�[ƒ\ƒ‹ˆÊ’u‚©‚ç“Á’è‚̃‚�[ƒVƒ‡ƒ“‚ÅŽw’肳‚ê‚é�I’[‚Ü‚Å‚ð•Ï - �X‚·‚邱‚Æ‚ª‰Â”\‚Å‚·�B—Ⴆ‚Î cw ‚È‚ç‚΃J�[ƒ\ƒ‹ˆÊ’u‚©‚ç’PŒê‚Ì�I‚í‚è‚Ü‚Å�A - c$ ‚È‚ç‚Î�s‚Ì�I‚í‚è‚Ü‚Å‚ð•Ï�X‚µ‚Ü‚·�B - - 4. •Ï�XƒRƒ}ƒ“ƒh‚ÌŒ`Ž®‚Í - - c [�”’l] ƒ‚�[ƒVƒ‡ƒ“ - -‚³‚Ÿ�AŽŸ‚̃ŒƒbƒXƒ“‚Ö�i‚Ý‚Ü‚µ‚傤�B - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 4.1: ˆÊ’u‚ƃtƒ@ƒCƒ‹‚Ì�î•ñ - - ** ƒtƒ@ƒCƒ‹“à‚ł̈ʒu‚ƃtƒ@ƒCƒ‹‚Ì�ó‘Ô‚ð•\Ž¦‚·‚é‚É‚Í CTRL-G ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B - ƒtƒ@ƒCƒ‹“à‚Ì‚ ‚é�s‚Ɉړ®‚·‚é‚É‚Í G ‚ðƒ^ƒCƒv‚µ‚Ü‚· ** - - NOTE: ƒXƒeƒbƒv‚ðŽÀ�s‚·‚é‘O‚É�A‚±‚̃ŒƒbƒXƒ“‘S‚Ä‚É–Ú‚ð’Ê‚µ‚Ü‚µ‚傤!! - - 1. CTRL ‚ð‰Ÿ‚µ‚½‚Ü‚Ü g ‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B‚±‚Ì‘€�ì‚ð CTRL-G ‚ƌĂñ‚Å‚¢‚Ü‚·�B - ƒy�[ƒW‚̈ê”Ô‰º‚Ƀtƒ@ƒCƒ‹–¼‚Æ�s”Ô�†‚ª•\Ž¦‚³‚ê‚é‚Í‚¸‚Å‚·�B ƒXƒeƒbƒv 3‚Ì‚½‚ß - ‚É�s”Ô�†‚ðŠo‚¦‚Ä‚¨‚«‚Ü‚µ‚傤�B - -NOTE: ‰æ–ʂ̉E‰º‹÷‚ɃJ�[ƒ\ƒ‹‚̈ʒu‚ª•\Ž¦‚³‚ê‚Ä‚¢‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ�B‚±‚ê‚Í - 'ruler' ƒIƒvƒVƒ‡ƒ“(ƒŒƒbƒXƒ“6‚Å�à–¾)‚ð�Ý’è‚·‚邱‚Æ‚Å•\Ž¦‚³‚ê‚Ü‚·�B - - 2. �ʼnº�s‚Ɉړ®‚·‚邽‚ß‚É G ‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B - ƒtƒ@ƒCƒ‹‚Ì�擪‚Ɉړ®‚·‚é‚É‚Í gg ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B - - 3. �æ‚Ù‚Ç‚Ì�s‚Ì”Ô�†‚ðƒ^ƒCƒv‚µ G ‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B�Å�‰‚É CTRL-G ‚ð‰Ÿ‚µ‚½�s - ‚É–ß‚Á‚Ä—ˆ‚é‚Í‚¸‚Å‚·�B - - 4. Ž©�M‚ªŽ�‚Ä‚½‚çƒXƒeƒbƒv 1 ‚©‚ç 3 ‚ðŽÀ�s‚µ‚Ü‚µ‚傤�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 4.2: ŒŸ�õƒRƒ}ƒ“ƒh - - - ** Œê‹å‚ðŒŸ�õ‚·‚é‚É‚Í / ‚Æ�A‘O•ûŒŸ�õ‚·‚éŒê‹å‚ðƒ^ƒCƒv‚µ‚Ü‚·�B** - - 1. ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å / ‚Æ‚¢‚¤•¶Žš‚ðƒ^ƒCƒv‚µ‚Ü‚·�B‰æ–ʈê”Ô‰º‚É : ƒRƒ}ƒ“ƒh‚Æ - “¯‚¶—l‚É / ‚ªŒ»‚ê‚邱‚Æ‚É‹C‚­‚Å‚µ‚傤�B - - 2. ‚Å‚Í�A'errroor' ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B‚±‚ꂪŒŸ�õ‚µ‚½‚¢’PŒê‚Å‚·�B - - 3. “¯‚¶Œê‚ð‚à‚¤ˆê“xŒŸ�õ‚·‚é‚Æ‚«‚Í ’P‚É n ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B - ‹t•ûŒü‚ÉŒê‹å‚ðŒŸ�õ‚·‚é‚Æ‚«‚Í N ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B - - 4. ‹t•ûŒü‚ÉŒê‹å‚ðŒŸ�õ‚·‚é�ê�‡‚Í�A/ ‚Ì‘ã‚í‚è‚É ? ƒRƒ}ƒ“ƒh‚ðŽg—p‚µ‚Ü‚·�B - - 5. Œ³‚Ì�ê�Š‚É–ß‚é‚É‚Í CTRL-O (Ctrl ‚ð‰Ÿ‚µ‘±‚¯‚È‚ª‚ç o •¶Žšƒ^ƒCƒv)‚ðƒ^ƒCƒv‚µ - ‚Ü‚·�B‚³‚ç‚É–ß‚é‚É‚Í‚±‚ê‚ðŒJ‚è•Ô‚µ‚Ü‚·�BCTRL-I ‚Í‘O•ûŒü‚Å‚·�B - -Note: "errroor" ‚Í error ‚ƃXƒyƒ‹‚ªˆá‚¢‚Ü‚·; errroor ‚Í‚¢‚í‚ä‚é error ‚Å‚·�B -Note: ŒŸ�õ‚ªƒtƒ@ƒCƒ‹‚Ì�I‚í‚è‚É’B‚·‚é‚Æ�AƒIƒvƒVƒ‡ƒ“ 'wrapscan' ‚ª�ݒ肳‚ê‚Ä‚¢‚é - �ê�‡‚Í�Aƒtƒ@ƒCƒ‹‚Ì�擪‚©‚猟�õ‚ð‘±�s‚µ‚Ü‚·�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 4.3: ‘Ήž‚·‚銇ŒÊ‚ðŒŸ�õ - - - ** ‘Ήž‚·‚é ),] ‚â } ‚ðŒŸ�õ‚·‚é‚É‚Í % ‚ðƒ^ƒCƒv‚µ‚Ü‚· ** - - 1. ‰º‚Ì ---> ‚ÅŽ¦‚³‚ꂽ�s‚Å (,[ ‚© { ‚Ì‚Ç‚ê‚©‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 2. ‚»‚±‚Å % ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B - - 3. ƒJ�[ƒ\ƒ‹‚͑Ήž‚·‚銇ŒÊ‚Ɉړ®‚·‚é‚Í‚¸‚Å‚·�B - - 4. �Å�‰‚ÌŠ‡ŒÊ‚Ɉړ®‚·‚é‚É‚Í % ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B - - 5. ‘¼‚Ì (,),[,],{ or } ‚ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ�A% ‚ª‰½‚ð‚µ‚Ä‚¢‚é‚©Šm”F‚µ‚Ü‚µ‚傤�B - ----> This ( is a test line with ('s, ['s ] and {'s } in it. )) - - -NOTE: ‚±‚Ì‹@”\‚ÍŠ‡ŒÊ‚ªˆê’v‚µ‚Ä‚¢‚È‚¢ƒvƒ�ƒOƒ‰ƒ€‚ðƒfƒoƒbƒO‚·‚é‚Ì‚É‚Æ‚Ä‚à–𗧂¿ - ‚Ü‚·�B - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 4.4: ŠÔˆá‚¢‚ð•Ï�X‚·‚é•û–@ - - - ** 'old' ‚ð 'new' ‚É’uŠ·‚·‚é‚É‚Í :s/old/new/g ‚ƃ^ƒCƒv‚µ‚Ü‚· ** - - 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 2. :s/thee/the ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B‚±‚̃Rƒ}ƒ“ƒh‚Í‚»‚Ì�s‚Å�Å�‰‚ÉŒ© - ‚‚©‚Á‚½‚à‚Ì‚É‚¾‚¯�s‚È‚í‚ê‚邱‚Æ‚É‹C‚ð‚‚¯‚Ü‚µ‚傤�B - - 3. ‚Å‚Í :s/thee/the/g ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B�s‘S‘Ì‚ð’uŠ·‚·‚邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·�B - ‚±‚Ì•Ï�X‚Í‚»‚Ì�s‚ÅŒ©‚‚©‚Á‚½‘S‚ẲÓ�Š‚ɑ΂µ‚Ä�s‚È‚í‚ê‚Ü‚·�B - ----> thee best time to see thee flowers is in thee spring. - - 4. •¡�”�s‚©‚猩‚‚©‚镶Žš‚ð•Ï�X‚·‚é‚É‚Í - :#,#s/old/new/g #,# ‚É‚Í’u‚«Š·‚¦‚é”͈͂̊JŽn‚Æ�I—¹‚Ì�s”Ô�†‚ðŽw’肵‚Ü - ‚·�B - :%s/old/new/g ƒtƒ@ƒCƒ‹‘S‘Ì‚ÅŒ©‚‚©‚é‚à‚̂ɑ΂µ‚Ä•Ï�X‚·‚é�B - :%s/old/new/gc ƒtƒ@ƒCƒ‹‘S‘Ì‚ÅŒ©‚‚©‚é‚à‚̂ɑ΂µ‚Ä�A1‚Â1‚Šm”F‚ð‚Æ‚è‚È - ‚ª‚ç•Ï�X‚·‚é�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 4 —v–ñ - - - 1. CTRL-G ‚̓tƒ@ƒCƒ‹‚ł̈ʒu‚ƃtƒ@ƒCƒ‹‚Ì�Ú�ׂð•\Ž¦‚µ‚Ü‚·�B - G ‚̓tƒ@ƒCƒ‹‚Ì�ʼnº�s‚Ɉړ®‚µ‚Ü‚·�B - �”’l G ‚Í‚»‚Ì�s‚Ɉړ®‚µ‚Ü‚·�B - gg ‚Í�擪�s‚Ɉړ®‚µ‚Ü‚·�B - - 2. / ‚ÌŒã‚ÉŒê‹å‚ðƒ^ƒCƒv‚·‚é‚Æ‘O•û‚ÉŒê‹å‚ðŒŸ�õ‚µ‚Ü‚·�B - ? ‚ÌŒã‚ÉŒê‹å‚ðƒ^ƒCƒv‚·‚é‚ÆŒã•û‚ÉŒê‹å‚ðŒŸ�õ‚µ‚Ü‚·�B - ŒŸ�õ‚ÌŒã‚Ì n ‚Í“¯‚¶•ûŒü‚ÌŽŸ‚ÌŒŸ�õ‚ð�AN ‚Í‹t•ûŒü‚ÌŒŸ�õ‚ð‚µ‚Ü‚·�B - CTRL-O ‚Í�ê�Š‚ð‘O‚Ɉڂµ�ACTRL-I ‚Í�ê�Š‚ðŽŸ‚ÉˆÚ“®‚µ‚Ü‚·�B - - 3. (,),[,],{, ‚à‚µ‚­‚Í } �ã‚ɃJ�[ƒ\ƒ‹‚ª‚ ‚é�ó‘Ô‚Å % ‚ðƒ^ƒCƒv‚·‚é‚Ƒ΂ɂȂ镶 - Žš‚ÖˆÚ“®‚µ‚Ü‚·�B - - 4. Œ»�Ý�s‚Ì�Å�‰‚Ì old ‚ð new ‚É’uŠ·‚·‚é�B :s/old/new - Œ»�Ý�s‚Ì‘S‚Ä‚Ì old ‚ð new ‚É’uŠ·‚·‚é�B :s/old/new/g - 2‚Â‚Ì # ŠÔ‚ÅŒê‹å‚ð’uŠ·‚·‚é�B :#,#s/old/new/g - ƒtƒ@ƒCƒ‹‚Ì’†‚Ì‘S‚Ä‚ÌŒŸ�õŒê‹å‚ð’uŠ·‚·‚é�B :%s/old/new/g - 'c' ‚ð‰Á‚¦‚é‚Æ’uŠ·‚Ì“x‚ÉŠm”F‚ð‹�‚ß‚é�B :%s/old/new/gc - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 5.1: ŠO•”ƒRƒ}ƒ“ƒh‚ðŽÀ�s‚·‚é•û–@ - - - ** :! ‚ÌŒã‚ÉŽÀ�s‚·‚éŠO•”ƒRƒ}ƒ“ƒh‚ðƒ^ƒCƒv‚µ‚Ü‚· ** - - 1. ‰æ–Ê‚Ì�ʼnº•”‚ɃJ�[ƒ\ƒ‹‚ªˆÚ“®‚·‚é‚悤�AŠµ‚ê�e‚µ‚ñ‚¾ : ‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B - ‚±‚ê‚ŃRƒ}ƒ“ƒh‚ªƒ^ƒCƒv‚Å‚«‚é—l‚É‚È‚è‚Ü‚·�B - - 2. ‚±‚±‚Å ! ‚Æ‚¢‚¤•¶Žš(Š´’Q•„)‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B - ‚±‚ê‚ÅŠO•”ƒVƒFƒ‹ƒRƒ}ƒ“ƒh‚ªŽÀ�s‚Å‚«‚é—l‚É‚È‚è‚Ü‚·�B - - 3. —á‚Æ‚µ‚Ä ! ‚É‘±‚¯‚Ä ls ‚ƃ^ƒCƒv‚µ ‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B - ƒVƒFƒ‹ƒvƒ�ƒ“ƒvƒg‚̂悤‚ɃfƒBƒŒƒNƒgƒŠ‚̈ꗗ‚ª•\Ž¦‚³‚ê‚é‚Í‚¸‚Å‚·�B - ‚à‚µ‚­‚Í ls ‚ª“®‚©‚È‚¢‚È‚ç‚Î :!dir ‚ðŽg—p‚µ‚Ü‚µ‚傤�B - -Note: ‚±‚Ì•û–@‚É‚æ‚Á‚Ä‚ ‚ç‚ä‚éƒRƒ}ƒ“ƒh‚ªŽÀ�s‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B‚à‚¿‚ë‚ñˆø�” - ‚à—^‚¦‚ç‚ê‚Ü‚·�B - -Note: ‘S‚Ä‚Ì : ƒRƒ}ƒ“ƒh‚Í ‚ð‰Ÿ‚µ‚Ä�I—¹‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ�B - ˆÈ�~‚Å‚Í‚±‚Ì‚±‚Æ‚ÉŒ¾‹y‚µ‚Ü‚¹‚ñ�B - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 5.2: ‚»‚Ì‘¼‚̃tƒ@ƒCƒ‹‚Ö�‘‚«�ž‚Ý - - - ** ƒtƒ@ƒCƒ‹‚Ö•Ï�X‚ð•Û‘¶‚·‚é‚É‚Í :w ƒtƒ@ƒCƒ‹–¼ ‚ƃ^ƒCƒv‚µ‚Ü‚· ** - - 1. ƒfƒBƒŒƒNƒgƒŠ‚̈ꗗ‚𓾂邽‚ß‚É :!dir ‚à‚µ‚­‚Í :!ls ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B - ‚±‚Ì‚ ‚Æ ‚ð‰Ÿ‚·‚Ì‚ÍŠù‚É‚²‘¶’m‚Å‚·‚Ë�B - - 2. TEST ‚̂悤‚É�A‚»‚̃fƒBƒŒƒNƒgƒŠ‚É–³‚¢ƒtƒ@ƒCƒ‹–¼‚ðˆê‚‘I‚Ñ‚Ü‚·�B - - 3. ‚Å‚Í :w TEST ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤 (TEST ‚Í�A‘I‚ñ‚¾ƒtƒ@ƒCƒ‹–¼‚Å‚·)�B - - 4. ‚±‚ê‚É‚æ‚èƒtƒ@ƒCƒ‹‘S‘Ì‚ª TEST ‚Æ‚¢‚¤–¼‘O‚Å•Û‘¶‚³‚ê‚Ü‚·�B - ‚à‚¤ˆê“x :!dir ‚à‚µ‚­‚Í !ls ‚ƃ^ƒCƒv‚µ‚ÄŠm”F‚µ‚Ä‚Ý‚Ü‚µ‚傤�B - -Note: ‚±‚±‚Å Vim ‚ð�I—¹‚µ�Aƒtƒ@ƒCƒ‹–¼ TEST ‚Æ‹¤‚É‹N“®‚·‚é‚Æ�A•Û‘¶‚µ‚½Žž‚Ì - ƒ`ƒ…�[ƒgƒŠƒAƒ‹‚Ì•¡�»‚ª‚Å‚«�オ‚é‚Í‚¸‚Å‚·�B - - 5. ‚³‚ç‚É�AŽŸ‚̂悤‚Ƀ^ƒCƒv‚µ‚ătƒ@ƒCƒ‹‚ð�Á‚µ‚Ü‚µ‚傤(MS-DOS): :!del TEST - ‚à‚µ‚­‚Í(Unix): :!rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 5.3: ‘I‘ð‚µ‚½�‘‚«�ž‚Ý - - -** ƒtƒ@ƒCƒ‹‚̈ʒu‚ð•Û‘¶‚·‚é‚É‚Í�Av ƒ‚�[ƒVƒ‡ƒ“‚Æ :w FILENAME ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B ** - - 1. ‚±‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B - - 2. v ‚ð‰Ÿ‚µ�AˆÈ‰º‚Ì‘æ5�€–ڂɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�BƒeƒLƒXƒg‚ª‹­’²•\Ž¦‚³‚ê‚é‚Ì - ‚É’�–Ú‚µ‚ĉº‚³‚¢�B - - 3. •¶Žš : ‚ð‰Ÿ‚·‚Æ�A‰æ–Ê‚Ì�ʼnº•”‚É :'<,'> ‚ªŒ»‚ê‚Ü‚·�B - - 4. w TEST (TESET ‚Í‘¶�Ý‚µ‚È‚¢ƒtƒ@ƒCƒ‹–¼)‚ðƒ^ƒCƒv‚µ‚Ü‚·�B - Enter ‚ð‰Ÿ‚·‘O‚É :'<,'>w TEST ‚Æ‚È‚Á‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚ĉº‚³‚¢�B - - 5. Vim ‚Í TEST ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚É‘I‘ð‚³‚ê‚½�s‚ð�‘‚«�ž‚Þ‚Å‚µ‚傤�B - !dir ‚à‚µ‚­‚Í !ls ‚Å‚»‚ê‚ðŠm”F‚µ‚Ü‚·�B - ‚»‚ê‚Í�í�œ‚µ‚È‚¢‚Å‚¨‚¢‚ĉº‚³‚¢�BŽŸ‚̃ŒƒbƒXƒ“‚ÅŽg—p‚µ‚Ü‚·�B - -NOTE: v ‚ð‰Ÿ‚·‚Æ�AVisual ‘I‘ð‚ªŽn‚Ü‚è‚Ü‚·�BƒJ�[ƒ\ƒ‹‚ð“®‚©‚·‚±‚Æ‚Å�A‘I‘ð”͈͂ð - ‘å‚«‚­‚à�¬‚³‚­‚à‚Å‚«‚Ü‚·�B‚³‚ç‚É�A‚»‚Ì‘I‘ð”͈͂ɑ΂µ‚ăIƒyƒŒ�[ƒ^‚ð“K—p - ‚«‚Ü‚·�B—Ⴆ‚Î d ‚̓eƒLƒXƒg‚ð�í�œ‚µ‚Ü‚·�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 5.4: ƒtƒ@ƒCƒ‹‚ÌŽæ�ž‚Æ�‡•¹ - - - ** ƒtƒ@ƒCƒ‹‚Ì’†�g‚ð‘}“ü‚·‚é‚É‚Í :r ƒtƒ@ƒCƒ‹–¼ ‚ƃ^ƒCƒv‚µ‚Ü‚· ** - - 1. ƒJ�[ƒ\ƒ‹‚ðˆÈ‰º‚Ì�s‚É�‡‚킹‚Ü‚·�B - -NOTE: ƒXƒeƒbƒv 2 ‚ÌŽÀ�sŒã�AƒŒƒbƒXƒ“ 5.3 ‚̃eƒLƒXƒg‚ªŒ»‚ê‚Ü‚·�B‰º‚ɉº‚ª‚Á‚Ä‚± - ‚̃ŒƒbƒXƒ“‚Ɉړ®‚µ‚Ü‚µ‚傤�B - - 2. ‚Å‚Í TEST ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ð :r TEST ‚Æ‚¢‚¤ƒRƒ}ƒ“ƒh‚Å“Ç‚Ý�ž‚Ý‚Ü‚µ‚傤�B - ‚±‚±‚Å‚¢‚¤ TEST ‚ÍŽg‚¤ƒtƒ@ƒCƒ‹‚Ì–¼‘O‚Ì‚±‚Æ‚Å‚·�B - “Ç‚Ý�ž‚܂ꂽƒtƒ@ƒCƒ‹‚Í�AƒJ�[ƒ\ƒ‹�s‚̉º‚É‚ ‚è‚Ü‚·�B - - 3. Žæ�ž‚ñ‚¾ƒtƒ@ƒCƒ‹‚ðŠm”F‚µ‚Ä‚Ý‚Ü‚µ‚傤�BƒJ�[ƒ\ƒ‹‚ð–ß‚·‚Æ�AƒŒƒbƒXƒ“5.3 ‚Ì - ƒIƒŠƒWƒiƒ‹‚ƃtƒ@ƒCƒ‹‚É‚æ‚é‚à‚Ì‚Ì2‚‚ª‚ ‚邱‚Æ‚ª‚í‚©‚è‚Ü‚·�B - -NOTE: ŠO•”ƒRƒ}ƒ“ƒh‚Ì�o—Í‚ð“Ç‚Ý�ž‚Þ‚±‚Æ‚à�o—ˆ‚Ü‚·�B—Ⴆ‚Î�A - :r !ls ‚Í ls ƒRƒ}ƒ“ƒh‚Ì�o—Í‚ðƒJ�[ƒ\ƒ‹ˆÈ‰º‚É“Ç‚Ý�ž‚Ý‚Ü‚·�B - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 5 —v–ñ - - - 1. :!command ‚É‚æ‚Á‚Ä ŠO•”ƒRƒ}ƒ“ƒh‚ðŽÀ�s‚µ‚Ü‚·�B - - ‚æ‚­Žg‚¤—á: - (MS-DOS) (Unix) - :!dir :!ls - ƒfƒBƒŒƒNƒgƒŠ“à‚̈ꗗ‚ðŒ©‚é�B - :!del FILENAME :!rm FILENAME - ƒtƒ@ƒCƒ‹‚ð�í�œ‚·‚é�B - - 2. :w ƒtƒ@ƒCƒ‹–¼ ‚É‚æ‚Á‚ătƒ@ƒCƒ‹–¼‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ªƒfƒBƒXƒN‚É�‘‚«�ž‚Ü‚ê‚é�B - - 3. v ƒ‚�[ƒVƒ‡ƒ“‚Å :w FILENAME ‚Æ‚·‚é‚Æ�AƒrƒWƒ…ƒAƒ‹‘I‘ð�s‚ªƒtƒ@ƒCƒ‹‚É•Û‘¶‚³ - ‚ê‚é�B - - 4. :r ƒtƒ@ƒCƒ‹–¼ ‚É‚æ‚èƒtƒ@ƒCƒ‹–¼‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ªƒfƒBƒXƒN‚æ‚èŽæ�ž‚Ü‚ê�A - ƒJ�[ƒ\ƒ‹ˆÊ’u‚̉º‚É‘}“ü‚³‚ê‚é�B - - 5. :r !dir ‚Í dir ƒRƒ}ƒ“ƒh‚Ì�o—Í‚ðƒJ�[ƒ\ƒ‹ˆÊ’uˆÈ‰º‚É“Ç‚Ý�ž‚Þ�B - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6.1: ƒI�[ƒvƒ“ƒRƒ}ƒ“ƒh - - - ** o ‚ðƒ^ƒCƒv‚·‚é‚Æ�AƒJ�[ƒ\ƒ‹‚̉º‚Ì�s‚ªŠJ‚«�A‘}“üƒ‚�[ƒh‚É“ü‚è‚Ü‚· ** - - 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B - - 2. o (�¬•¶Žš) ‚ðƒ^ƒCƒv‚µ‚Ä�AƒJ�[ƒ\ƒ‹‚̉º‚Ì�s‚ðŠJ‚«�A‘}“üƒ‚�[ƒh‚É“ü‚è‚Ü‚·�B - - 3. ‚³‚ç‚É‘}“üƒ‚�[ƒh‚ð�I—¹‚·‚éˆ×‚É ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B - ----> o ‚ðƒ^ƒCƒv‚·‚é‚ƃJ�[ƒ\ƒ‹‚ÍŠJ‚¢‚½�s‚ÖˆÚ“®‚µ‘}“üƒ‚�[ƒh‚É“ü‚è‚Ü‚·�B - - 4. ƒJ�[ƒ\ƒ‹‚Ì�ã‚Ì�s‚É‘}“ü‚·‚é‚É‚Í�A�¬•¶Žš‚Ì o ‚Å‚Í‚È‚­�A’P�ƒ‚ɑ啶Žš‚Ì O - ‚ðƒ^ƒCƒv‚µ‚Ü‚·�BŽŸ‚Ì�s‚ÅŽŽ‚µ‚Ä‚Ý‚Ü‚µ‚傤�B - ----> ‚±‚Ì�s‚Ì�ã‚Ö‘}“ü‚·‚é‚É‚Í�A‚±‚Ì�s‚ÖƒJ�[ƒ\ƒ‹‚ð’u‚¢‚Ä O ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6.2: ’ljÁƒRƒ}ƒ“ƒh - - - ** ƒJ�[ƒ\ƒ‹‚ÌŽŸ‚̈ʒu‚©‚çƒeƒLƒXƒg‚ð’ljÁ‚·‚é‚É‚Í a ‚ƃ^ƒCƒv‚µ‚Ü‚· ** - - 1. ƒJ�[ƒ\ƒ‹‚ð ---> ‚ÅŽ¦‚³‚ꂽ�s‚ÖˆÚ“®‚µ‚Ü‚µ‚傤�B - - 2. e ‚ð‰Ÿ‚µ‚Ä li ‚Ì�I’[•”‚܂ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B - - 3. ƒJ�[ƒ\ƒ‹‚ÌŒã‚ë‚ɃeƒLƒXƒg‚ð’ljÁ‚·‚邽‚ß‚É a (�¬•¶Žš) ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B - - 4. ‚»‚̉º‚Ì�s‚̂̂悤‚È’PŒê‚ÉŠ®�¬‚³‚¹‚Ü‚·�B‘}“üƒ‚�[ƒh‚𔲂¯‚éˆ×‚É ‚ɉŸ - ‚µ‚Ü‚·�B - - 5. e ‚ðŽg‚Á‚ÄŽŸ‚Ì•sŠ®‘S‚È’PŒê‚ÖˆÚ“®‚µ�AƒXƒeƒbƒv 3 ‚Æ 4 ‚ðŒJ‚è•Ô‚µ‚Ü‚·�B - ----> This li will allow you to pract appendi text to a line. ----> This line will allow you to practice appending text to a line. - -Note: a, i ‚Æ A ‚Í“¯‚¶‘}“üƒ‚�[ƒh‚ÖˆÚ‚è‚Ü‚·‚ª�A•¶Žš‚ª‘}“ü‚³‚ê‚éˆÊ’u‚¾‚¯‚ªˆÙ‚È‚è - ‚Ü‚·�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6.3: ‚»‚Ì‘¼‚Ì’uŠ·•û–@ - - - ** 1•¶ŽšˆÈ�ã‚ð’u‚«Š·‚¦‚é‚ɂ͑啶Žš‚Ì R ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤 ** - - 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B�Å�‰‚Ì xxx ‚Ì�擪‚Ɉړ®‚µ - ‚Ü‚·�B - - 2. R ‚ð‰Ÿ‚µ‚Ä�A2�s–Ú‚Ì�”’l‚ðƒ^ƒCƒv‚·‚邱‚Æ‚Å�Axxx ‚ª’uŠ·‚³‚ê‚Ü‚·�B - - 3. ’uŠ·ƒ‚�[ƒh‚𔲂¯‚é‚É‚Í ‚ð‰Ÿ‚µ‚Ü‚·�B�s‚ÌŽc‚肪•Ï�X‚³‚ê‚Ä‚¢‚È‚¢‚Ü‚Ü‚É - ‚Ȃ邱‚Æ‚É’�ˆÓ‚µ‚Ä‚­‚¾‚³‚¢�B - - 5. Žc‚Á‚½ xxx ‚ðƒXƒeƒbƒv‚ðŒJ‚è•Ô‚µ‚Ä’uŠ·‚µ‚Ü‚µ‚傤�B - ----> Adding 123 to xxx gives you xxx. ----> Adding 123 to 456 gives you 579. - -NOTE: ’uŠ·ƒ‚�[ƒh‚Í‘}“üƒ‚�[ƒh‚ÉŽ—‚Ä‚¢‚Ü‚·‚ª�A‘S‚Ẵ^ƒCƒv‚³‚ꂽ•¶Žš‚ÍŠù‘¶‚Ì•¶Žš - ‚ð�í�œ‚µ‚Ü‚·�B - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6.4: ƒeƒLƒXƒg‚̃Rƒs�[‚ƃy�[ƒXƒg - - - ** ƒeƒLƒXƒg‚̃Rƒs�[‚ɂ̓IƒyƒŒ�[ƒ^ y ‚ð�Aƒy�[ƒXƒg‚É‚Í p ‚ðŽg‚¢‚Ü‚· ** - - 1. ---> ‚ÆŽ¦‚³‚ꂽ�s‚ÖˆÚ“®‚µ�AƒJ�[ƒ\ƒ‹‚ð "a)" ‚ÌŒã‚É’u‚¢‚Ä‚¨‚«‚Ü‚·�B - - 2. v ‚ŃrƒWƒ…ƒAƒ‹ƒ‚�[ƒh‚ðŠJŽn‚µ�A"first"‚ÌŽè‘O‚܂ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B - - 3. y ‚ðƒ^ƒCƒv‚µ‚Ä‹­’²•\Ž¦‚³‚ꂽƒeƒLƒXƒg‚ð yank (ƒRƒs�[)‚µ‚Ü‚·�B - - 4. ŽŸ‚Ì�s‚Ì�s––‚܂ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·: j$ - - 5. p ‚ð‰Ÿ‚µ‚Ä“\‚è•t‚¯(put)‚Ä‚©‚ç�AŽŸ‚ðƒ^ƒCƒv‚µ‚Ü‚·: a second - - 6. ƒrƒWƒ…ƒAƒ‹ƒ‚�[ƒh‚Å " item." ‚ð‘I‘ð‚µ�Ay ‚Ń„ƒ“ƒN�AŽŸ‚Ì�s‚Ì�s––‚Ü‚Å j$ ‚Å - ˆÚ“®‚µ�A p ‚ŃeƒLƒXƒg‚ð‚»‚±‚É put ‚µ‚Ü‚·�B - ----> a) this is the first item. - b) - - Note: ’PŒê‚ð1‚ yank ‚·‚é‚Ì‚É y ‚ðƒIƒyƒŒ�[ƒ^‚Æ‚µ‚Ä yw ‚Æ‚·‚邱‚Æ‚à�o—ˆ‚Ü‚·�B -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6.5: ƒIƒvƒVƒ‡ƒ“‚Ì�Ý’è - - - ** ŒŸ�õ‚â’uŠ·‚Ì�ۂɑ啶Žš/�¬•¶Žš‚𖳎‹‚·‚é‚É‚Í�AƒIƒvƒVƒ‡ƒ“‚ð�ݒ肵‚Ü‚· ** - - 1. ŽŸ‚Ì—l‚É“ü—Í‚µ‚Ä 'ignore' ‚ðŒŸ�õ‚µ‚Ü‚µ‚傤: /ignore - n ‚ð‰Ÿ‚µ‚ĉ½“x‚©ŒŸ�õ‚ðŒJ‚è•Ô‚µ‚Ü‚·�B - - 2. ŽŸ‚Ì—l‚É“ü—Í‚µ‚Ä 'ic' (Ignore Case ‚Ì—ª) ƒIƒvƒVƒ‡ƒ“‚ð�ݒ肵‚Ü‚·: :set ic - - 3. ‚Å‚Í n ‚É‚æ‚Á‚Ä‚à‚¤1“x 'ignore' ‚ðŒŸ�õ‚µ‚Ü‚·�B - n ‚ð‰Ÿ‚µ‚Ä‚³‚ç‚É�”‰ñŒŸ�õ‚ðŒJ‚è•Ô‚µ‚Ü‚µ‚傤�B - - 4. 'hlsearch' ‚Æ 'incsearch' ƒIƒvƒVƒ‡ƒ“‚ð�ݒ肵‚Ü‚µ‚傤: :set hls is - - 5. ŒŸ�õƒRƒ}ƒ“ƒh‚ð�Ä“ü—Í‚µ‚Ä�A‰½‚ª‹N‚±‚é‚©Œ©‚Ä‚Ý‚Ü‚µ‚傤: /ignore - - 6. ‘啶Žš�¬•¶Žš‚Ì‹æ•Ê‚𖳌ø‚É‚·‚é‚É‚ÍŽŸ‚Ì—l‚É“ü—Í‚µ‚Ü‚·: :set noic - -Note: ƒ}ƒbƒ`‚Ì‹­’²•\Ž¦‚ð‚â‚ß‚é‚É‚ÍŽŸ‚Ì—l‚É“ü—Í‚µ‚Ü‚·: :nohlsearch -Note: 1‚‚̌Ÿ�õƒRƒ}ƒ“ƒh‚¾‚¯‘啶Žš�¬•¶Žš‚Ì‹æ•Ê‚ð‚â‚ß‚½‚¢‚È‚ç‚Î�AƒtƒŒ�[ƒY‚É \c - ‚ðŽg—p‚µ‚Ü‚·: /ignore\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 6 —v–ñ - - 1. o ‚ðƒ^ƒCƒv‚·‚é‚ƃJ�[ƒ\ƒ‹‚̉º‚Ì�s‚ðŠJ‚¯‚Ä�A‚»‚±‚Å‘}“üƒ‚�[ƒh‚É‚È‚é�B - O (‘啶Žš) ‚ðƒ^ƒCƒv‚·‚é‚ƃJ�[ƒ\ƒ‹‚Ì�ã‚Ì�s‚Å‘}“üƒ‚�[ƒh‚É‚È‚é�B - - 2. ƒJ�[ƒ\ƒ‹�ã‚Ì•¶Žš‚ÌŽŸ‚©‚çƒeƒLƒXƒg‚ð’ljÁ‚·‚é‚É‚Í a ‚ƃ^ƒCƒv‚·‚é�B - �s––‚ÉŽ©“®‚ŃeƒLƒXƒg‚ð‘}“ü‚·‚é‚ɂ͑啶Žš A ‚ðƒ^ƒCƒv‚·‚é�B - - 3. e ƒRƒ}ƒ“ƒh‚Í’PŒê‚Ì�I’[•”ƒJ�[ƒ\ƒ‹‚ðˆÚ“®‚·‚é�B - - 4. y ƒIƒyƒŒ�[ƒ^‚̓eƒLƒXƒg‚ð yank (ƒRƒs�[)‚µ�Ap ‚Í‚»‚ê‚ð put (ƒy�[ƒXƒg)‚·‚é�B - - 5. ‘啶Žš‚Ì R ‚ðƒ^ƒCƒv‚·‚é‚Æ’uŠ·ƒ‚�[ƒh‚É“ü‚è�A‚ð‰Ÿ‚·‚Æ”²‚¯‚é�B - - 6. ":set xxx" ‚ƃ^ƒCƒv‚·‚é‚ƃIƒvƒVƒ‡ƒ“ "xxx" ‚ª�ݒ肳‚ê‚é�B - 'ic' 'ignorecase' ŒŸ�õŽž‚ɑ啶Žš�¬•¶Žš‚Ì‹æ•Ê‚µ‚È‚¢ - 'is' 'incsearch' ŒŸ�õƒtƒŒ�[ƒY‚É•”•ªƒ}ƒbƒ`‚µ‚Ä‚¢‚é•”•ª‚ð•\Ž¦‚·‚é - 'hls' 'hlsearch' ƒ}ƒbƒ`‚·‚é‚·‚×‚ð‹­’²•\Ž¦‚·‚é - ’·‚¢•û�A’Z‚¢•û�A‚Ç‚¿‚ç‚̃IƒvƒVƒ‡ƒ“–¼‚Å‚àŽg—p‚Å‚«‚Ü‚·�B - - 7. "no" ‚ð•t—^‚µ�AƒIƒvƒVƒ‡ƒ“‚𖳌ø‚É‚µ‚Ü‚·: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 7.1: ƒIƒ“ƒ‰ƒCƒ“ƒwƒ‹ƒvƒRƒ}ƒ“ƒh - - - ** ƒIƒ“ƒ‰ƒCƒ“ƒwƒ‹ƒv‚ðŽg—p‚µ‚Ü‚µ‚傤 ** - - Vim ‚É‚Í�L”͂ɂ킽‚éƒIƒ“ƒ‰ƒCƒ“ƒwƒ‹ƒvƒVƒXƒeƒ€‚ª‚ ‚è‚Ü‚·�B - ƒwƒ‹ƒv‚ðŠJŽn‚·‚é‚É‚Í�A‚±‚ê‚ç3‚‚̂ǂꂩ1‚Â‚ðŽŽ‚µ‚Ä‚Ý‚Ü‚µ‚傤: - - ƒwƒ‹ƒvƒL�[ ‚ð‰Ÿ‚·(‚à‚µ‚ ‚é‚È‚ç‚Î)�B - - ƒL�[‚ð‰Ÿ‚·(‚à‚µ‚ ‚é‚È‚ç‚Î)�B - - :help ‚ƃ^ƒCƒv‚·‚é�B - - ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚̃eƒLƒXƒg‚ð“Ç‚Þ‚Æ�Aƒwƒ‹ƒv‚Ì“®�삪—�‰ð‚Å‚«‚Ü‚·�B - CTRL-W CTRL-W ‚ƃ^ƒCƒv‚·‚é‚Æ ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ÖƒWƒƒƒ“ƒv‚µ‚Ü‚·�B - :q ‚ƃ^ƒCƒv‚·‚é‚Æ ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ª•Â‚¶‚ç‚ê‚Ü‚·�B - - ":help" ƒRƒ}ƒ“ƒh‚Ɉø�”‚ð—^‚¦‚邱‚Æ‚É‚æ‚è�A‚ ‚ç‚ä‚é‘è–¼‚̃wƒ‹ƒv‚ðŒ©‚Â‚¯‚邱‚Æ - ‚ª‚Å‚«‚Ü‚·�B‚±‚ê‚ç‚ðŽŽ‚µ‚Ä‚Ý‚Ü‚µ‚傤( ‚ðƒ^ƒCƒv‚µ–Y‚ê‚È‚¢‚悤‚É): - - :help w - :help c_ ‚ŃRƒ}ƒ“ƒhƒ‰ƒCƒ“‚ð•âŠ®‚·‚é ** - - 1. ƒRƒ“ƒpƒ`ƒ‚�[ƒh‚Å‚È‚¢‚±‚Æ‚ðŠm”F‚µ‚Ü‚·: :set nocp - - 2. Œ»�݂̃fƒBƒŒƒNƒgƒŠ‚É�Ý‚éƒtƒ@ƒCƒ‹‚ð :!ls ‚© :!dir ‚ÅŠm”F‚µ‚Ü‚·�B - - 3. ƒRƒ}ƒ“ƒh‚ÌŠJŽn‚ðƒ^ƒCƒv‚µ‚Ü‚·: :e - - 4. CTRL-D ‚ð‰Ÿ‚·‚Æ Vim ‚Í "e" ‚©‚çŽn‚Ü‚éƒRƒ}ƒ“ƒh‚̈ꗗ‚ð•\Ž¦‚µ‚Ü‚·�B - - 5. ‚ð‰Ÿ‚·‚Æ Vim ‚Í ":edit" ‚Æ‚¢‚¤ƒRƒ}ƒ“ƒh–¼‚ð•âŠ®‚µ‚Ü‚·�B - - 6. ‚³‚ç‚É‹ó”’‚Æ�AŠù‘¶‚̃tƒ@ƒCƒ‹–¼‚ÌŽn‚Ü‚è‚ð‰Á‚¦‚Ü‚·: :edit FIL - - 7. ‚ð‰Ÿ‚·‚Æ Vim ‚Í–¼‘O‚ð•âŠ®‚µ‚Ü‚·�B(‚à‚µˆê‚‚µ‚©–³‚©‚Á‚½�ê�‡) - -NOTE: •âŠ®‚Í‘½‚­‚̃Rƒ}ƒ“ƒh‚Å“®�삵‚Ü‚·�B‚»‚µ‚Ä CTRL-D ‚Æ ‰Ÿ‚µ‚Ä‚Ý‚Ä‚­‚¾ - ‚³‚¢�B“Á‚É :help ‚Ì�ۂɖ𗧂¿‚Ü‚·�B - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ƒŒƒbƒXƒ“ 7 —v–ñ - - - 1. ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ðŠJ‚­‚É‚Í :help ‚Æ‚·‚é‚© ‚à‚µ‚­‚Í ‚ð‰Ÿ‚·�B - - 2. ƒRƒ}ƒ“ƒh(cmd)‚̃wƒ‹ƒv‚ðŒŸ�õ‚·‚é‚É‚Í :help cmd ‚ƃ^ƒCƒv‚·‚é�B - - 3. •Ê‚̃EƒBƒ“ƒhƒE‚ÖƒWƒƒƒ“ƒv‚·‚é‚É‚Í CTRL-W CTRL-W ‚ƃ^ƒCƒv‚·‚é�B - - 4. ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ð•Â‚¶‚é‚É‚Í :q ‚ƃ^ƒCƒv‚·‚é�B - - 5. ‚¨�D‚Ý‚Ì�Ý’è‚ð•Û‚Â‚É‚Í vimrc ‹N“®ƒXƒNƒŠƒvƒg‚ð�ì�¬‚·‚é�B - - 6. : command ‚ʼn”\‚ȕ⊮‚ðŒ©‚é‚É‚Í CTRL-D ‚ðƒ^ƒCƒv‚·‚é�B - •âŠ®‚ðŽg—p‚·‚é‚É‚Í ‚ð‰Ÿ‚·�B - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - ‚±‚ê‚É‚Ä Vim ‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚ð�I‚í‚è‚Ü‚·�BƒGƒfƒBƒ^‚ðŠÈ’P‚É�A‚µ‚©‚à�[•ª‚É - Žg‚¤‚±‚Æ‚ª‚Å‚«‚é‚悤‚É‚Æ�AVim ‚ÌŽ�‚ŠT”O‚Ì—v“_‚Ì‚Ý‚ð“`‚¦‚悤‚Æ‚µ‚Ü‚µ‚½�B - Vim ‚É‚Í‚³‚ç‚É‘½‚­‚̃Rƒ}ƒ“ƒh‚ª‚ ‚è�A‚±‚±‚Å‘S‚Ä‚ð�à–¾‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñ�B - ˆÈ�~‚̓†�[ƒUƒ}ƒjƒ…ƒAƒ‹‚ðŽQ�Æ‚­‚¾‚³‚¢: "help :user-manual" - - ‚±‚êˆÈŒã‚ÌŠw�K‚Ì‚½‚ß‚É�AŽŸ‚Ì–{‚ð�„‘E‚µ‚Ü‚·�B - Vim - Vi Improved - by Steve Oualline - �o”ÅŽÐ: New Riders - �Å�‰‚Ì–{‚ÍŠ®‘S‚É Vim ‚Ì‚½‚ß‚É�‘‚©‚ê‚Ü‚µ‚½�B‚Æ‚è‚킯�‰�SŽÒ‚É‚Í‚¨�§‚ß‚Å‚·�B - ‘½‚­‚Ì—á‘è‚â�}”Å‚ªŒf�Ú‚³‚ê‚Ä‚¢‚Ü‚·�B - ŽŸ‚ÌURL‚ðŽQ�Æ‚µ‚ĉº‚³‚¢ http://iccf-holland.org/click5.html - - ŽŸ‚Í Vim ‚æ‚è‚à Vi ‚ɂ‚¢‚Ä�‘‚©‚ꂽŒÃ‚¢–{‚Å‚·‚ª�„‘E‚µ‚Ü‚·: - Learning the Vi Editor - by Linda Lamb - �o”ÅŽÐ: O'Reilly & Associates Inc. - Vi ‚Å‚â‚肽‚¢‚ÆŽv‚¤‚±‚Æ‚Ù‚Ú‘S‚Ä‚ð’m‚邱‚Æ‚ª‚Å‚«‚é—Ç�‘‚Å‚·�B - ‘æ6”Å‚Å‚Í�AVim ‚ɂ‚¢‚Ä‚Ì�î•ñ‚àŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·�B - - ‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚Í Colorado State University ‚Ì Charles Smith ‚̃AƒCƒfƒA - ‚ðŠî‚É�AColorado School of Mines ‚Ì Michael C. Pierce ‚Æ Robert K. Ware ‚Ì - —¼–¼‚É‚æ‚Á‚Ä�‘‚©‚ê‚Ü‚µ‚½�B E-mail: bware@mines.colorado.edu. - - Modified for Vim by Bram Moolenaar. - - “ú–{Œê–ó �¼–{ ‘×�O - ŠÄ�C ‘º‰ª ‘¾˜Y - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - vi:set ts=8 sts=4 sw=4 tw=78: diff --git a/share/vim/vim73/tutor/tutor.ja.utf-8 b/share/vim/vim73/tutor/tutor.ja.utf-8 deleted file mode 100644 index 95e108ef..00000000 --- a/share/vim/vim73/tutor/tutor.ja.utf-8 +++ /dev/null @@ -1,975 +0,0 @@ -=============================================================================== -= V I M 教 本 (チュートリアル) へ よ う こ そ - Version 1.7 = -=============================================================================== - - Vim は、このチュートリアルで説明するには多すぎる程のコマンドを備えた非常 - に強力なエディターです。このチュートリアルは、あなたが Vim を万能エディ - ターとして使いこなせるようになるのに十分なコマンドについて説明をするよう - なっています。 - - チュートリアルを完了するのに必要な時間は、覚えたコマンドを試すのにどれだ - け時間を使うのかにもよりますが、およそ25から30分です。 - - ATTENTION: - 以下の練習用コマンドにはこの文章を変更するものもあります。練習を始める前 - にコピーを作成しましょう("vimtutor"したならば、既にコピーされています)。 - - このチュートリアルが、使うことで覚えられる仕組みになっていることを、心し - ておかなければなりません。正しく学習するにはコマンドを実際に試さなければ - ならないのです。文章を読んだだけならば、きっと忘れてしまいます!。 - - さぁ、Capsロック(Shift-Lock)キーが押されていないことを確認した後、画面に - レッスン1.1 が全部表示されるところまで、j キーを押してカーソルを移動しま - しょう。 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.1: カーソルの移動 - - - ** カーソルを移動するには、示される様に h,j,k,l を押します ** - ^ - k ヒント: h キーは左方向に移動します。 - < h l > l キーは右方向に移動します。 - j j キーは下矢印キーのようなキーです。 - v - 1. 移動に慣れるまで、スクリーンでカーソル移動させましょう。 - - 2. 下へのキー(j)を押しつづけると、連続して移動できます。 - これで次のレッスンに移動する方法がわかりましたね。 - - 3. 下へのキーを使って、レッスン1.2 に移動しましょう。 - -Note: 何をタイプしているか判らなくなったら、を押してノーマルモードにし - ます。それから入力しようとしていたコマンドを再入力しましょう。 - -Note: カーソルキーでも移動できます。しかし hjkl に一度慣れてしまえば、はるか - に速く移動することができるでしょう。いやマジで! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.2: VIM の起動と終了 - - - !! NOTE: 以下のあらゆるステップを行う前に、このレッスンを読みましょう!! - - 1. キーを押しましょう。(確実にノーマルモードにするため) - - 2. 次のようにタイプ: :q! - これにより編集した内容を保存せずにエディタが終了します。 - - 3. シェルプロンプトが出てきたら、このチュートリアルを始める為ににコマンド - をタイプします。 - そのコマンドは: vimtutor - - 4. これまでのステップを覚え自信がついたならば、ステップ 1 から 3 までを実 - 際に試して、Vim を1度終了してから再び起動しましょう。 - -NOTE: :q! は全ての変更を破棄します。レッスンにて変更をファイルに保 - 存する方法についても勉強していきましょう。 - - 5. 1.3までカーソルを移動させましょう。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.3: テキスト編集 - 削除 - - - ** ノーマルモードにてカーソルの下の文字を削除するには x を押します ** - - 1. 以下の ---> と示された行にカーソルを移動しましょう。 - - 2. 間違いを修正するために、削除する最初の文字までカーソルを移動します。 - - 3. 不必要な文字を x を押して削除しましょう。 - - 4. 文が正しくなるまで ステップ 2 から 4 を繰り返しましょう。 - ----> その ううさぎ は つつきき を こええてて とびはねたた - - 5. 行が正しくなったら、レッスン 1.4 へ進みましょう。 - -NOTE: 全てのレッスンを通じて、覚えようとするのではなく実際にやってみましょう。 - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.4: テキスト編集 - 挿入 - - - ** ノーマルモードにてテキストを挿入するには i を押します ** - - 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 - - 2. 1行目を2行目と同じ様にするために、テキストを挿入しなければならない位置 - の次の文字にカーソルを移動します。 - - 3. i キーを押してから、追加が必要な文字をタイプしましょう。 - - 4. 間違いを修正したら を押してコマンドモードに戻り、正しい文になる様 - にステップ 2 から 4 を繰り返しましょう。 - ----> この には 足りない テキスト ある。 ----> この 行 には 幾つか 足りない テキスト が ある。 - - 5. 挿入の方法がわかったら下のレッスン1の要約を見ましょう。 - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.5: テキスト編集 - 追加 - - - ** テキスト追加するには A を押しましょう ** - - 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 - カーソルがその文字上にあってもかまいません。 - - 2. 追加が必要な場所で A をタイプしましょう。 - - 3. テキストを追加し終えたら、 を押してノーマルモードに戻りましょう。 - - 4. 2行目の ---> と示された場所へ移動し、ステップ 2 から 3 繰り返して文法を - 修正しましょう。 - ----> ここには間違ったテキストがあり - ここには間違ったテキストがあります。 ----> ここにも間違ったテキス - ここにも間違ったテキストがあります。 - - 5. テキストの追加が軽快になってきたらレッスン 1.6 へ進みましょう。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1.6: ファイルの編集 - - - ** ファイルを保存して終了するには :wq とタイプします ** - - !! NOTE: 以下のステップを実行する前に、まず全体を読んでください!! - - 1. レッスン 1.2 でやったように :q! をタイプして、このチュートリアルを終了 - します。 - - 2. シェルプロンプトでこのコマンドをタイプします: vim tutor - 'vim'が Vim エディタを起動するコマンド、'tutor' は編集したいファイルの - 名前です。変更してもよいファイルを使いましょう。 - - 3. 前のレッスンで学んだように、テキストを挿入、削除します。 - - 4. 変更をファイルに保存します: :wq - - 5. vimtutor を再度起動し、以下の要約へ進みましょう。 - - 6. 以上のステップを読んで理解した上でこれを実行しましょう。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 1 要約 - - - 1. カーソルは矢印キーもしくは hjkl キーで移動します。 - h (左) j (下) k (上) l (右) - - 2. Vim を起動するにはプロンプトから vim ファイル名 とタイプします。 - - 3. Vim を終了するには :q! とタイプします(変更を破棄)。 - もしくは :wq とタイプします(変更を保存)。 - - 4. カーソルの下の文字を削除するには、ノーマルモードで x とタイプします。 - - 5. カーソルの位置に文字を挿入するには、ノーマルモードで i とタイプします。 - i テキストのタイプ カーソル位置に追加 - A テキストの追加 行末に追加 - -NOTE: キーを押すとノーマルモードに移行します。その際、間違ったり入力途 - 中のコマンドを取り消すことができます。 - -さて、続けてレッスン 2 を始めましょう。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.1: 削除コマンド - - - ** 単語の末尾までを削除するには dw とタイプしましょう ** - - 1. ノーマルモードであることを確認するために を押しましょう。 - - 2. 以下の ---> と示された行にカーソルを移動しましょう。 - - 3. 消したい単語の先頭にカーソルを移動しましょう。 - - 4. 単語を削除するために dw とタイプしましょう。 - - NOTE: タイプすると、dw という文字がスクリーンの最下行に現われます。 - タイプを間違ってしまった時には を押してやり直しましょう。 - ----> この 文 紙 には いくつかの たのしい 必要のない 単語 が 含まれて います。 - - 5. 3 から 4 までを文が正しくなるまで繰り返し、レッスン 2.2 へ進みましょう。 - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.2: その他の削除コマンド - - - ** 行の末尾までを削除するには d$ とタイプしましょう ** - - 1. ノーマルモードであることを確認するのに を押しましょう。 - - 2. 以下の ---> と示された行にカーソルを移動しましょう。 - - 3. 正しい文の末尾へカーソルを移動しましょう(最初の . の後です)。 - - 4. 行末まで削除するのに d$ とタイプしましょう。 - ----> 誰かがこの行の最後を2度タイプしました。 2度タイプしました。 - - - 5. どういうことか理解するために、レッスン 2.3 へ進みましょう。 - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.3: オペレータとモーション - - - 多くのコマンドはオペレータとモーションからテキストに変更を加ます。 - 削除コマンド d のオペレータは次の様になっています: - - d モーション - - それぞれ: - d - 削除コマンド。 - モーション - 何に対して働きかけるか(以下に挙げます)。 - - オペレータの一部一覧: - w - カーソル位置から空白を含む単語の末尾まで。 - e - カーソル位置から空白を含まない単語の末尾まで。 - $ - カーソル位置から行末まで。 - - つまり de とタイプすると、カーソル位置から単語の終わりまでを削除します。 - -NOTE: 冒険したい人は、ノーマルモードにてコマンドなしにモーションを押して - みましょう。カーソルが目的語一覧で示される位置に移動するはずです。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.4: モーションにカウントを使用する - - - ** 何回も行いたい繰り返しのモーションの前に数値をタイプします。 ** - - 1. 以下の ---> と示された行の先頭にカーソルを移動します。 - - 2. 2dw をタイプして単語2つ分移動します。 - - 3. 3e をタイプして3つ目の単語の終端に移動します。 - - 4. 0 (ゼロ)をタイプして行頭に移動します。 - - 5. ステップ 2 と 3 を違う数値と使って繰り返します。 - ----> This is just a line with words you can move around in. - - 6. レッスン 2.5 に進みましょう。 - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.5: より多くを削除するためにカウントを使用する - - - ** オペレータとカウントをタイプすると、その操作が複数回繰り返されます。 ** - - 既述の削除のオペレータとモーションの組み合わせにカウントを追加することで、 - より多くの削除が行えます: - d 数値 モーション - - 1. ---> と示された行の行頭部分にカーソルを移動しましょう。 - - 2. UPPER CASE の単語2つを 2dw とタイプして削除します。 - - 3. UPPER CASE という連続した単語を、1つのコマンドと異なるカウントを指定し、 - ステップ 1 と 2 を繰り返します。 - ----> このABC DE行のFGHI JK LMN OP単語はQ RS TUV綺麗になった。 - -NOTE: オペレータ d とモーションの間にカウントを使った場合、オペレータのない - 場合のモーションのように動作します。 - 例: 3dw と d3w は同等で、3w を削除します。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.6: 行の操作 - - - ** 行全体を削除するには dd とタイプします ** - - 行全体を削除する頻度が多いので、Viのデザイナーは行の削除を d の2回タイプと - いう簡単なものに決めました。 - - 1. 以下の句の2行目にカーソルを移動します。 - 2. dd とタイプして行を削除します。 - 3. さらに4行目に移動します。 - 4. 2dd とタイプして2行を削除します。 - ----> 1) バラは赤い、 ----> 2) つまらないものは楽しい、 ----> 3) スミレは青い、 ----> 4) 私は車をもっている、 ----> 5) 時計が時刻を告げる、 ----> 6) 砂糖は甘い ----> 7) オマエモナー - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2.7: やり直しコマンド - - - ** 最後のコマンドを取り消すには u を押します。U は行全体の取消です。 ** - - 1. 以下の ---> と示された行にカーソルを移動し、最初の間違いにカーソ - ルを移動しましょう。 - 2. x をタイプしていらない先頭の文字を削除しましょう。 - 3. さぁ、u をタイプして最後に実行したコマンドを取り消しましょう。 - 4. 今度は、x を使用して誤りを全て修正しましょう。 - 5. 大文字の U をタイプして、行を元の状態に戻しましょう。 - 6. u をタイプして直前の U コマンドを取消しましょう。 - 7. ではコマンドを再実行するのに CTRL-R (CTRL を押したまま R を打つ)を数回 - タイプしてみましょう(取消の取消)。 - ----> このの行のの間違いを修正々し、後でそれらの修正をを取消しまますす。 - - 8. これはとても便利なコマンドです。さぁレッスン 2 要約へ進みましょう。 - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 2 要約 - - - 1. カーソル位置から単語の末尾までを削除するには dw とタイプします。 - 2. カーソル位置から行の末尾までを削除するには d$ とタイプします。 - 3. 行全体を削除するには dd とタイプします。 - - 4. モーションを繰り返すには数値を付与します: 2w - 5. 変更に用いるコマンドの形式は - オペレータ [数値] モーション - - それぞれ: - オペレータ - 削除 d の類で何をするか。 - 数値 - そのコマンドを何回繰り返すか。 - モーション - w (単語)や $ (行末)などの類で、テキストの何に対して働きか - けるか。 - - 6. 行の先頭に移動するにはゼロを使用します: 0 - - 7. 前回の動作を取消す: u (小文字 u) - 行全体の変更を取消す: U (大文字 U) - 取消しの取消し: CTRL-R -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 3.1: 貼り付けコマンド - - - ** 最後に削除された行をカーソルの後に貼り付けるには p をタイプします ** - - 1. 以下の段落の最初の行にカーソルを移動しましょう。 - - 2. dd とタイプして行を削除し、Vim のバッファに格納しましょう。 - - 3. 削除した行が本来あるべき位置の上の行まで、カーソルを移動させましょう。 - - 4. ノーマルモードで p をタイプして格納した行を画面に戻します。 - - 5. 順番が正しくなる様にステップ 2 から 4 を繰り返しましょう。 - - d) 貴方も学ぶことができる? - b) スミレは青い、 - c) 知恵とは学ぶもの、 - a) バラは赤い、 - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 3.2: 置き換えコマンド - - - ** カーソルの下の文字を置き換えるには r をタイプします ** - - 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 - - 2. 最初の間違いの先頭にカーソルを移動しましょう。 - - 3. r とタイプし、間違っている文字を置き換える、正しい文字をタイプしましょう。 - - 4. 最初の行が正しくなるまでステップ 2 から 3 を繰り返しましょう。 - ----> この合を人力した時ね、その人は幾つか問違ったキーを押しもした! ----> この行を入力した時に、その人は幾つか間違ったキーを押しました! - - 5. さぁ、レッスン 3.2 へ進みましょう。 - -NOTE: 実際に試しましょう。決して覚えるだけにはしないこと。 - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 3.3: 変更コマンド - - - ** 単語の一部、もしくは全体を変更するには cw とタイプします ** - - 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 - - 2. lubw の u の位置にカーソルを移動しましょう。 - - 3. cw とタイプし、正しい単語をタイプしましょう(この場合 'ine' とタイプ)。 - - 4. 次の間違い(変更すべき文字の先頭)に移動するために をタイプします。 - - 5. 最初の行が次の行の様になるまでステップ 3 と 4 を繰り返します。 - ----> This lubw has a few wptfd that mrrf changing usf the change command. ----> This line has a few words that need changing using the change command. - -cw は単語を変更するだけでなく、挿入も行えることに注意しましょう。 - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 3.4: c を使用したその他の変更 - - - ** 変更コマンドは、削除コマンドと同じ様にオブジェクトを使用します ** - - 1. 変更コマンドは、削除コマンドと同じような動作をします。その形式は - - c [数値] モーション - - 2. オブジェクトも同じで、w は単語、 $ は行末などといったものです。 - - 3. 以下の ---> と示された行にカーソルを移動しましょう。 - - 4. 最初の間違いへカーソルを移動しましょう。 - - 5. c$ とタイプして行の残りを2行目の様にし、 を押しましょう。 - ----> The end of this line needs some help to make it like the second. ----> The end of this line needs to be corrected using the c$ command. - -NOTE: タイプ中の間違いはバックスペースキーを使って直すこともできます。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 3 要約 - - - 1. 既に削除されたテキストを再配置するには、p をタイプします。これは削除さ - れたテキストをカーソルの後に挿入します(行単位で削除されたのならば、カー - ソルのある次の行に挿入されます)。 - - 2. カーソルの下の文字を置き換えるには、r をタイプした後、それを置き換える - 文字をタイプします。 - - 3. 変更コマンドではカーソル位置から特定のモーションで指定される終端までを変 - 更することが可能です。例えば cw ならばカーソル位置から単語の終わりまで、 - c$ ならば行の終わりまでを変更します。 - - 4. 変更コマンドの形式は - - c [数値] モーション - -さぁ、次のレッスンへ進みましょう。 - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 4.1: 位置とファイルの情報 - - ** ファイル内での位置とファイルの状態を表示するには CTRL-G をタイプします。 - ファイル内のある行に移動するには G をタイプします ** - - NOTE: ステップを実行する前に、このレッスン全てに目を通しましょう!! - - 1. CTRL を押したまま g を押しましょう。この操作を CTRL-G と呼んでいます。 - ページの一番下にファイル名と行番号が表示されるはずです。 ステップ 3のため - に行番号を覚えておきましょう。 - -NOTE: 画面の右下隅にカーソルの位置が表示されているかもしれません。これは - 'ruler' オプション(レッスン6で説明)を設定することで表示されます。 - - 2. 最下行に移動するために G をタイプしましょう。 - ファイルの先頭に移動するには gg とタイプしましょう。 - - 3. 先ほどの行の番号をタイプし G をタイプしましょう。最初に CTRL-G を押した行 - に戻って来るはずです。 - - 4. 自信が持てたらステップ 1 から 3 を実行しましょう。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 4.2: 検索コマンド - - - ** 語句を検索するには / と、前方検索する語句をタイプします。** - - 1. ノーマルモードで / という文字をタイプします。画面一番下に : コマンドと - 同じ様に / が現れることに気づくでしょう。 - - 2. では、'errroor' とタイプしましょう。これが検索したい単語です。 - - 3. 同じ語をもう一度検索するときは 単に n をタイプします。 - 逆方向に語句を検索するときは N をタイプします。 - - 4. 逆方向に語句を検索する場合は、/ の代わりに ? コマンドを使用します。 - - 5. 元の場所に戻るには CTRL-O (Ctrl を押し続けながら o 文字タイプ)をタイプし - ます。さらに戻るにはこれを繰り返します。CTRL-I は前方向です。 - -Note: "errroor" は error とスペルが違います; errroor はいわゆる error です。 -Note: 検索がファイルの終わりに達すると、オプション 'wrapscan' が設定されている - 場合は、ファイルの先頭から検索を続行します。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 4.3: 対応する括弧を検索 - - - ** 対応する ),] や } を検索するには % をタイプします ** - - 1. 下の ---> で示された行で (,[ か { のどれかにカーソルを移動しましょう。 - - 2. そこで % とタイプしましょう。 - - 3. カーソルは対応する括弧に移動するはずです。 - - 4. 最初の括弧に移動するには % とタイプしましょう。 - - 5. 他の (,),[,],{ or } でカーソルを移動し、% が何をしているか確認しましょう。 - ----> This ( is a test line with ('s, ['s ] and {'s } in it. )) - - -NOTE: この機能は括弧が一致していないプログラムをデバッグするのにとても役立ち - ます。 - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 4.4: 間違いを変更する方法 - - - ** 'old' を 'new' に置換するには :s/old/new/g とタイプします ** - - 1. 以下の ---> と示された行にカーソルを移動しましょう。 - - 2. :s/thee/the とタイプしましょう。このコマンドはその行で最初に見 - つかったものにだけ行なわれることに気をつけましょう。 - - 3. では :s/thee/the/g とタイプしましょう。行全体を置換することを意味します。 - この変更はその行で見つかった全ての箇所に対して行なわれます。 - ----> thee best time to see thee flowers is in thee spring. - - 4. 複数行から見つかる文字を変更するには - :#,#s/old/new/g #,# には置き換える範囲の開始と終了の行番号を指定しま - す。 - :%s/old/new/g ファイル全体で見つかるものに対して変更する。 - :%s/old/new/gc ファイル全体で見つかるものに対して、1つ1つ確認をとりな - がら変更する。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 4 要約 - - - 1. CTRL-G はファイルでの位置とファイルの詳細を表示します。 - G はファイルの最下行に移動します。 - 数値 G はその行に移動します。 - gg は先頭行に移動します。 - - 2. / の後に語句をタイプすると前方に語句を検索します。 - ? の後に語句をタイプすると後方に語句を検索します。 - 検索の後の n は同じ方向の次の検索を、N は逆方向の検索をします。 - CTRL-O は場所を前に移し、CTRL-I は場所を次に移動します。 - - 3. (,),[,],{, もしくは } 上にカーソルがある状態で % をタイプすると対になる文 - 字へ移動します。 - - 4. 現在行の最初の old を new に置換する。 :s/old/new - 現在行の全ての old を new に置換する。 :s/old/new/g - 2つの # 間で語句を置換する。 :#,#s/old/new/g - ファイルの中の全ての検索語句を置換する。 :%s/old/new/g - 'c' を加えると置換の度に確認を求める。 :%s/old/new/gc - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 5.1: 外部コマンドを実行する方法 - - - ** :! の後に実行する外部コマンドをタイプします ** - - 1. 画面の最下部にカーソルが移動するよう、慣れ親しんだ : をタイプしましょう。 - これでコマンドがタイプできる様になります。 - - 2. ここで ! という文字(感嘆符)をタイプしましょう。 - これで外部シェルコマンドが実行できる様になります。 - - 3. 例として ! に続けて ls とタイプし を押しましょう。 - シェルプロンプトのようにディレクトリの一覧が表示されるはずです。 - もしくは ls が動かないならば :!dir を使用しましょう。 - -Note: この方法によってあらゆるコマンドが実行することができます。もちろん引数 - も与えられます。 - -Note: 全ての : コマンドは を押して終了しなければなりません。 - 以降ではこのことに言及しません。 - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 5.2: その他のファイルへ書き込み - - - ** ファイルへ変更を保存するには :w ファイル名 とタイプします ** - - 1. ディレクトリの一覧を得るために :!dir もしくは :!ls とタイプしましょう。 - このあと を押すのは既にご存知ですね。 - - 2. TEST のように、そのディレクトリに無いファイル名を一つ選びます。 - - 3. では :w TEST とタイプしましょう (TEST は、選んだファイル名です)。 - - 4. これによりファイル全体が TEST という名前で保存されます。 - もう一度 :!dir もしくは !ls とタイプして確認してみましょう。 - -Note: ここで Vim を終了し、ファイル名 TEST と共に起動すると、保存した時の - チュートリアルの複製ができ上がるはずです。 - - 5. さらに、次のようにタイプしてファイルを消しましょう(MS-DOS): :!del TEST - もしくは(Unix): :!rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 5.3: 選択した書き込み - - -** ファイルの位置を保存するには、v モーションと :w FILENAME をタイプします。 ** - - 1. この行にカーソルを移動します。 - - 2. v を押し、以下の第5項目にカーソルを移動します。テキストが強調表示されるの - に注目して下さい。 - - 3. 文字 : を押すと、画面の最下部に :'<,'> が現れます。 - - 4. w TEST (TESET は存在しないファイル名)をタイプします。 - Enter を押す前に :'<,'>w TEST となっていることを確認して下さい。 - - 5. Vim は TEST というファイルに選択された行を書き込むでしょう。 - !dir もしくは !ls でそれを確認します。 - それは削除しないでおいて下さい。次のレッスンで使用します。 - -NOTE: v を押すと、Visual 選択が始まります。カーソルを動かすことで、選択範囲を - 大きくも小さくもできます。さらに、その選択範囲に対してオペレータを適用 - きます。例えば d はテキストを削除します。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 5.4: ファイルの取込と合併 - - - ** ファイルの中身を挿入するには :r ファイル名 とタイプします ** - - 1. カーソルを以下の行に合わせます。 - -NOTE: ステップ 2 の実行後、レッスン 5.3 のテキストが現れます。下に下がってこ - のレッスンに移動しましょう。 - - 2. では TEST というファイルを :r TEST というコマンドで読み込みましょう。 - ここでいう TEST は使うファイルの名前のことです。 - 読み込まれたファイルは、カーソル行の下にあります。 - - 3. 取込んだファイルを確認してみましょう。カーソルを戻すと、レッスン5.3 の - オリジナルとファイルによるものの2つがあることがわかります。 - -NOTE: 外部コマンドの出力を読み込むことも出来ます。例えば、 - :r !ls は ls コマンドの出力をカーソル以下に読み込みます。 - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 5 要約 - - - 1. :!command によって 外部コマンドを実行します。 - - よく使う例: - (MS-DOS) (Unix) - :!dir :!ls - ディレクトリ内の一覧を見る。 - :!del FILENAME :!rm FILENAME - ファイルを削除する。 - - 2. :w ファイル名 によってファイル名というファイルがディスクに書き込まれる。 - - 3. v モーションで :w FILENAME とすると、ビジュアル選択行がファイルに保存さ - れる。 - - 4. :r ファイル名 によりファイル名というファイルがディスクより取込まれ、 - カーソル位置の下に挿入される。 - - 5. :r !dir は dir コマンドの出力をカーソル位置以下に読み込む。 - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.1: オープンコマンド - - - ** o をタイプすると、カーソルの下の行が開き、挿入モードに入ります ** - - 1. 以下の ---> と示された行にカーソルを移動しましょう。 - - 2. o (小文字) をタイプして、カーソルの下の行を開き、挿入モードに入ります。 - - 3. さらに挿入モードを終了する為に をタイプします。 - ----> o をタイプするとカーソルは開いた行へ移動し挿入モードに入ります。 - - 4. カーソルの上の行に挿入するには、小文字の o ではなく、単純に大文字の O - をタイプします。次の行で試してみましょう。 - ----> この行の上へ挿入するには、この行へカーソルを置いて O をタイプします。 - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.2: 追加コマンド - - - ** カーソルの次の位置からテキストを追加するには a とタイプします ** - - 1. カーソルを ---> で示された行へ移動しましょう。 - - 2. e を押して li の終端部までカーソルを移動します。 - - 3. カーソルの後ろにテキストを追加するために a (小文字) をタイプします。 - - 4. その下の行ののような単語に完成させます。挿入モードを抜ける為に に押 - します。 - - 5. e を使って次の不完全な単語へ移動し、ステップ 3 と 4 を繰り返します。 - ----> This li will allow you to pract appendi text to a line. ----> This line will allow you to practice appending text to a line. - -Note: a, i と A は同じ挿入モードへ移りますが、文字が挿入される位置だけが異なり - ます。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.3: その他の置換方法 - - - ** 1文字以上を置き換えるには大文字の R とタイプしましょう ** - - 1. 以下の ---> と示された行にカーソルを移動します。最初の xxx の先頭に移動し - ます。 - - 2. R を押して、2行目の数値をタイプすることで、xxx が置換されます。 - - 3. 置換モードを抜けるには を押します。行の残りが変更されていないままに - なることに注意してください。 - - 5. 残った xxx をステップを繰り返して置換しましょう。 - ----> Adding 123 to xxx gives you xxx. ----> Adding 123 to 456 gives you 579. - -NOTE: 置換モードは挿入モードに似ていますが、全てのタイプされた文字は既存の文字 - を削除します。 - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.4: テキストのコピーとペースト - - - ** テキストのコピーにはオペレータ y を、ペーストには p を使います ** - - 1. ---> と示された行へ移動し、カーソルを "a)" の後に置いておきます。 - - 2. v でビジュアルモードを開始し、"first"の手前までカーソルを移動します。 - - 3. y をタイプして強調表示されたテキストを yank (コピー)します。 - - 4. 次の行の行末までカーソルを移動します: j$ - - 5. p を押して貼り付け(put)てから、次をタイプします: a second - - 6. ビジュアルモードで " item." を選択し、y でヤンク、次の行の行末まで j$ で - 移動し、 p でテキストをそこに put します。 - ----> a) this is the first item. - b) - - Note: 単語を1つ yank するのに y をオペレータとして yw とすることも出来ます。 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6.5: オプションの設定 - - - ** 検索や置換の際に大文字/小文字を無視するには、オプションを設定します ** - - 1. 次の様に入力して 'ignore' を検索しましょう: /ignore - n を押して何度か検索を繰り返します。 - - 2. 次の様に入力して 'ic' (Ignore Case の略) オプションを設定します: :set ic - - 3. では n によってもう1度 'ignore' を検索します。 - n を押してさらに数回検索を繰り返しましょう。 - - 4. 'hlsearch' と 'incsearch' オプションを設定しましょう: :set hls is - - 5. 検索コマンドを再入力して、何が起こるか見てみましょう: /ignore - - 6. 大文字小文字の区別を無効にするには次の様に入力します: :set noic - -Note: マッチの強調表示をやめるには次の様に入力します: :nohlsearch -Note: 1つの検索コマンドだけ大文字小文字の区別をやめたいならば、フレーズに \c - を使用します: /ignore\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 6 要約 - - 1. o をタイプするとカーソルの下の行を開けて、そこで挿入モードになる。 - O (大文字) をタイプするとカーソルの上の行で挿入モードになる。 - - 2. カーソル上の文字の次からテキストを追加するには a とタイプする。 - 行末に自動でテキストを挿入するには大文字 A をタイプする。 - - 3. e コマンドは単語の終端部カーソルを移動する。 - - 4. y オペレータはテキストを yank (コピー)し、p はそれを put (ペースト)する。 - - 5. 大文字の R をタイプすると置換モードに入り、を押すと抜ける。 - - 6. ":set xxx" とタイプするとオプション "xxx" が設定される。 - 'ic' 'ignorecase' 検索時に大文字小文字の区別しない - 'is' 'incsearch' 検索フレーズに部分マッチしている部分を表示する - 'hls' 'hlsearch' マッチするすべを強調表示する - 長い方、短い方、どちらのオプション名でも使用できます。 - - 7. "no" を付与し、オプションを無効にします: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 7.1: オンラインヘルプコマンド - - - ** オンラインヘルプを使用しましょう ** - - Vim には広範にわたるオンラインヘルプシステムがあります。 - ヘルプを開始するには、これら3つのどれか1つを試してみましょう: - - ヘルプキー を押す(もしあるならば)。 - - キーを押す(もしあるならば)。 - - :help とタイプする。 - - ヘルプウィンドウのテキストを読むと、ヘルプの動作が理解できます。 - CTRL-W CTRL-W とタイプすると ヘルプウィンドウへジャンプします。 - :q とタイプすると ヘルプウィンドウが閉じられます。 - - ":help" コマンドに引数を与えることにより、あらゆる題名のヘルプを見つけること - ができます。これらを試してみましょう( をタイプし忘れないように): - - :help w - :help c_ でコマンドラインを補完する ** - - 1. コンパチモードでないことを確認します: :set nocp - - 2. 現在のディレクトリに在るファイルを :!ls か :!dir で確認します。 - - 3. コマンドの開始をタイプします: :e - - 4. CTRL-D を押すと Vim は "e" から始まるコマンドの一覧を表示します。 - - 5. を押すと Vim は ":edit" というコマンド名を補完します。 - - 6. さらに空白と、既存のファイル名の始まりを加えます: :edit FIL - - 7. を押すと Vim は名前を補完します。(もし一つしか無かった場合) - -NOTE: 補完は多くのコマンドで動作します。そして CTRL-D と 押してみてくだ - さい。特に :help の際に役立ちます。 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - レッスン 7 要約 - - - 1. ヘルプウィンドウを開くには :help とするか もしくは を押す。 - - 2. コマンド(cmd)のヘルプを検索するには :help cmd とタイプする。 - - 3. 別のウィンドウへジャンプするには CTRL-W CTRL-W とタイプする。 - - 4. ヘルプウィンドウを閉じるには :q とタイプする。 - - 5. お好みの設定を保つには vimrc 起動スクリプトを作成する。 - - 6. : command で可能な補完を見るには CTRL-D をタイプする。 - 補完を使用するには を押す。 - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - これにて Vim のチュートリアルを終わります。エディタを簡単に、しかも充分に - 使うことができるようにと、Vim の持つ概念の要点のみを伝えようとしました。 - Vim にはさらに多くのコマンドがあり、ここで全てを説明することはできません。 - 以降はユーザマニュアルを参照ください: "help :user-manual" - - これ以後の学習のために、次の本を推薦します。 - Vim - Vi Improved - by Steve Oualline - 出版社: New Riders - 最初の本は完全に Vim のために書かれました。とりわけ初心者にはお奨めです。 - 多くの例題や図版が掲載されています。 - 次のURLを参照して下さい http://iccf-holland.org/click5.html - - 次は Vim よりも Vi について書かれた古い本ですが推薦します: - Learning the Vi Editor - by Linda Lamb - 出版社: O'Reilly & Associates Inc. - Vi でやりたいと思うことほぼ全てを知ることができる良書です。 - 第6版では、Vim についての情報も含まれています。 - - このチュートリアルは Colorado State University の Charles Smith のアイデア - を基に、Colorado School of Mines の Michael C. Pierce と Robert K. Ware の - 両名によって書かれました。 E-mail: bware@mines.colorado.edu. - - Modified for Vim by Bram Moolenaar. - - 日本語訳 松本 泰弘 - 監修 村岡 太郎 - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - vi:set ts=8 sts=4 sw=4 tw=78: diff --git a/share/vim/vim73/tutor/tutor.ko.euc b/share/vim/vim73/tutor/tutor.ko.euc deleted file mode 100644 index ddfc5ac8..00000000 --- a/share/vim/vim73/tutor/tutor.ko.euc +++ /dev/null @@ -1,812 +0,0 @@ -=============================================================================== -= ºö ±æÀâÀÌ (VIM Tutor) ¿¡ ¿À½Å °ÍÀ» ȯ¿µÇÕ´Ï´Ù - Version 1.5 = -=============================================================================== - - ºö(Vim)Àº ÀÌ ±æÀâÀÌ¿¡¼­ ´Ù ¼³¸íÇÒ ¼ö ¾øÀ» ¸¸Å­ ¸¹Àº ¸í·ÉÀ» °¡Áø - ¸Å¿ì °­·ÂÇÑ ÆíÁý±âÀÔ´Ï´Ù. ÀÌ ±æÀâÀÌ´Â ºöÀ» ½±°Ô ÀüõÈÄ ÆíÁý±â·Î »ç¿ëÇÒ - ¼ö ÀÖµµ·Ï ÃæºÐÇÑ ¸í·É¿¡ ´ëÇØ ¼³¸íÇÏ°í ÀÖ½À´Ï´Ù. - - ÀÌ ±æÀâÀ̸¦ ¶¼´Â µ¥¿¡´Â ½Ç½ÀÇÏ´Â µ¥¿¡ ¾ó¸¶³ª ½Ã°£À» ¾²´Â °¡¿¡ µû¶ó¼­ - 25-30 ºÐ Á¤µµ°¡ °É¸³´Ï´Ù. - - ÀÌ ¿¬½À¿¡ Æ÷ÇÔµÈ ¸í·ÉÀº ³»¿ëÀ» °íĨ´Ï´Ù. ÀÌ ÆÄÀÏÀÇ º¹»çº»À» ¸¸µé¾î¼­ - ¿¬½ÀÇϼ¼¿ä. (vimtutor ¸¦ ÅëÇØ ½ÃÀÛÇß´Ù¸é, ÀÌ¹Ì º¹»çº»À» »ç¿ëÇÏ´Â - ÁßÀÔ´Ï´Ù.) - - Áß¿äÇÑ °ÍÀº, ÀÌ ±æÀâÀÌ°¡ Á÷Á¢ ½áº¸¸é¼­ ¹è¿ìµµ·Ï °í·ÁµÇ¾î ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. - ¸í·ÉÀ» Á¦´ë·Î ÀÍÈ÷·Á¸é, Á÷Á¢ ½ÇÇàÇغ¸´Â °ÍÀÌ ÇÊ¿äÇÕ´Ï´Ù. ³»¿ëÀ» Àд - °Í¸¸À¸·Î´Â, ¸í·ÉÀ» Àؾî¹ö¸®°Ô µÉ °ÍÀÔ´Ï´Ù. - - ÀÚ ÀÌÁ¦, Caps Lock(Shift-Lock) Å°°¡ ´­·ÁÀÖÁö ¾ÊÀºÁö È®ÀÎÇغ¸½Ã°í, j Å°¸¦ - ÃæºÐÈ÷ ´­·¯¼­ Lesson 1.1ÀÌ È­¸é¿¡ °¡µæ Â÷µµ·Ï ¿òÁ÷¿©º¾½Ã´Ù. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.1: Ä¿¼­ ¿òÁ÷À̱â - - ** Ä¿¼­¸¦ ¿òÁ÷ÀÌ·Á¸é, Ç¥½ÃµÈ ´ë·Î h,j,k,l Å°¸¦ ´©¸£½Ê½Ã¿À. ** - ^ - k ÈùÆ®: h Å°´Â ¿ÞÂÊ¿¡ ÀÖÀ¸¸ç, ¿ÞÂÊÀ¸·Î ¿òÁ÷ÀÔ´Ï´Ù. - < h l > l Å°´Â ¿À¸¥ÂÊ¿¡ ÀÖÀ¸¸ç, ¿À¸¥ÂÊÀ¸·Î - j ¿òÁ÷ÀÔ´Ï´Ù. - v j Å°´Â ¾Æ·¡¹æÇâ È­»ìǥó·³ »ý°å½À´Ï´Ù. - - 1. Àͼ÷ÇØÁú ¶§±îÁö Ä¿¼­¸¦ ½ºÅ©¸° »ó¿¡¼­ ¿òÁ÷¿© º¸½Ê½Ã¿À. - - 2. ¾Æ·¡ ¹æÇâÅ° (j)¸¦ ¹Ýº¹ÀÔ·ÂÀÌ µÉ ¶§±îÁö ´©¸£°í °è½Ê½Ã¿À. ----> ÀÌÁ¦ ´ÙÀ½ lessonÀ¸·Î °¡´Â ¹æ¹ýÀ» ¾Ë°Ô µÇ¾ú½À´Ï´Ù. - - 3. ¾Æ·¡ ¹æÇâÅ°¸¦ ÀÌ¿ëÇÏ¿©, Lesson 1.2 ·Î °¡½Ê½Ã¿À. - -Âü°í: ¿øÇÏÁö ¾Ê´Â ¹«¾ð°¡°¡ ÀÔ·ÂÀÌ µÇ¾ú´Ù¸é, ¸¦ ´­·¯¼­, ¸í·É ¸ðµå·Î - µ¹¾Æ°¡½Ê½Ã¿À. ±× ÈÄ¿¡ ¿øÇÏ´Â ¸í·ÉÀ» ´Ù½Ã ÀÔ·ÂÇϽʽÿÀ. - -Âü°í: Ä¿¼­Å° ¶ÇÇÑ ÀÛµ¿ÇÒ °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ hjkl¿¡ Àͼ÷ÇØÁö¸é, Ä¿¼­Å°º¸´Ù - ÈξÀ ºü¸£°Ô À̵¿ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.2: ºöÀ» ½ÃÀÛÇÏ°í ³¡³»±â - - - !! ÁÖÀÇ: ¾Æ·¡ ÀÖ´Â ´Ü°è¸¦ ½ÇÇàÇϱâ Àü¿¡, ÀÌ lesson Àüü¸¦ ÀÐÀ¸½Ê½Ã¿À!! - - 1. Å°¸¦ ´­·¯¼­ È®½ÇÇÏ°Ô ¸í·É ¸ðµå·Î ºüÁ® ³ª¿É´Ï´Ù. - - 2. ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù: :q! - ----> ÀÌ·¸°Ô Çϸé, ¹Ù²ï ³»¿ëÀ» *ÀúÀåÇÏÁö ¾Ê°í* ÆíÁý±â¸¦ ºüÁ®³ª°©´Ï´Ù. - ÀúÀåÇÑ ÈÄ ºüÁ®³ª°¡·Á¸é ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù: - :wq - - 3. ½© ÇÁ·ÒÇÁÆ®°¡ º¸Àδٸé, ´Ù½Ã ±æÀâÀÌ·Î µ¹¾Æ¿À±â À§ÇØ ´ÙÀ½°ú °°ÀÌ - ÀÔ·ÂÇÕ´Ï´Ù. - vimtutor - ¶Ç´Â ´ÙÀ½°ú °°À» ¼öµµ ÀÖ½À´Ï´Ù. - vim tutor.ko - ----> 'vim' Àº ºö ÆíÁý±â·Î µé¾î°¡´Â °ÍÀ» ¶æÇϸç, 'tutor.ko'´Â ÆíÁýÇÏ·Á´Â - ÆÄÀÏÀ» ¶æÇÕ´Ï´Ù. - - 4. À§¿¡¼­ À̾߱âÇÑ ´Ü°è¸¦ ±â¾ïÇÏ¿´À¸¸ç, È®½ÅÀÌ ¼­¸é, 1¿¡¼­ 3±îÁö¸¦ - ¼öÇàÇÏ¿© ÆíÁý±â¸¦ ³ª°¬´Ù°¡ ´Ù½Ã µé¾î¿Íº¸½Ê½Ã¿À. ±× ÈÄ Ä¿¼­¸¦ ¾Æ·¡·Î - ¿òÁ÷¿© Lesson 1.3 À¸·Î °¡½Ê½Ã¿À. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.3: ÅؽºÆ® ÆíÁý - Áö¿ì±â - - -** ¸í·É ¸ðµå¿¡¼­ x ¸¦ ´©¸£¸é Ä¿¼­°¡ À§Ä¡ÇÑ °÷ÀÇ ±ÛÀÚ¸¦ Áö¿ï ¼ö ÀÖ½À´Ï´Ù. ** - - 1. ----> ·Î Ç¥½ÃµÈ °÷À¸·Î Ä¿¼­¸¦ ¿Å°Üº¸½Ê½Ã¿À. - - 2. ¿ÀŸ¸¦ ¼öÁ¤Çϱâ À§ÇØ, Ä¿¼­¸¦ Áö¿ï ±ÛÀÚ À§·Î ¿òÁ÷¿© º¸½Ê½Ã¿À. - - 3. x Å°¸¦ ´­·¯¼­ Áö¿ö¾ßÇÒ ±ÛÀÚ¸¦ Áö¿ì½Ê½Ã¿À. - - 4. 2¿¡¼­ 4±îÁö¸¦ ¹Ýº¹ÇÏ¿© ¹®ÀåÀÌ ¿Ã¹Ù¸£°Ô µÇµµ·Ï ÇÏ¿© º¸½Ê½Ã¿À. - ----> The ccow jumpedd ovverr thhe mooon. - - 5. ¹®ÀåÀÌ Á¤È®ÇØÁ³´Ù¸é, Lesson 1.4·Î °¡½Ê½Ã¿À. - -ÁÖÀÇ: ÀÌ ±æÀâÀ̸¦ º¸¸é¼­ ¿Ü¿ì·Á°í ÇÏÁö¸»°í, Á÷Á¢ »ç¿ëÇغ¸¸é¼­ ÀÍÈ÷±æ - ¹Ù¶ø´Ï´Ù. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.4: ÅؽºÆ® ÆíÁý - »ðÀÔ (INSERTION) - - - ** ¸í·É ¸ðµå¿¡¼­ i ¸¦ ´©¸£¸é ÅؽºÆ®¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. ** - - 1. Ä¿¼­¸¦ ù¹ø° ---> ·Î Ç¥½ÃµÈ ÁÙ·Î ¿òÁ÷ÀÔ´Ï´Ù. - - 2. ù¹ø° ÁÙÀ» µÎ¹ø° ÁÙ°ú ¶È°°ÀÌ ¸¸µé°ÍÀÔ´Ï´Ù. ÅؽºÆ®°¡ µé¾î°¡¾ßÇÒ - °÷ ´ÙÀ½ºÎÅÍ Ã¹¹ø° ±ÛÀÚ À§¿¡ Ä¿¼­¸¦ ¿Å°Ü ³õ½À´Ï´Ù. - - 3. i Å°¸¦ ´©¸¥ ÈÄ, ÇÊ¿äÇÑ ³»¿ëÀ» ÀÔ·ÂÇÕ´Ï´Ù. - - 4. ¼öÁ¤ÇÑ ÈÄ¿¡´Â ¸¦ ´­·¯¼­ ¸í·É ¸ðµå·Î µ¹¾Æ°©´Ï´Ù. - ¹®ÀåÀ» ¿Ã¹Ù¸£°Ô ¸¸µé±â À§ÇØ 2¿¡¼­ 4ÀÇ °úÁ¤À» ¹Ýº¹ÇÕ´Ï´Ù. - ----> There is text misng this . ----> There is some text missing from this line. - - 5. ÅؽºÆ®¸¦ »ðÀÔÇÏ´Â µ¥¿¡ Àͼ÷ÇØÁ³´Ù¸é, ¿ä¾àÀ» ºÁÁֽʽÿÀ. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 1 ¿ä¾à - - - 1. Ä¿¼­¸¦ ¿òÁ÷ÀÏ ¶§¿¡´Â È­»ìÇ¥ Å°³ª hjkl Å°¸¦ ÀÌ¿ëÇÕ´Ï´Ù. - h (¿ÞÂÊ) j (¾Æ·¡) k (À§) l (¿À¸¥ÂÊ) - - 2. ½© ÇÁ·ÒÇÁÆ®¿¡¼­ ºöÀ» ½ÃÀÛÇÏ·Á¸é vim FILENAME - - 3. ¼öÁ¤ÇÑ ³»¿ëÀ» ¹«½ÃÇÑ Ã¤·Î ºö¿¡¼­ ºüÁ®³ª°¡·Á¸é :q! - ÀúÀåÇÑ ÈÄ ºö¿¡¼­ ºüÁ®³ª°¡·Á¸é :wq - - 4. ¸í·É ¸ðµå¿¡¼­ Ä¿¼­°¡ À§Ä¡ÇÑ °÷ÀÇ ±ÛÀÚ¸¦ Áö¿ì·Á¸é x ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. - - 5. ¸í·É ¸ðµå¿¡¼­ Ä¿¼­°¡ À§Ä¡ÇÑ °÷¿¡ ÅؽºÆ®¸¦ »ðÀÔÇÏ·Á¸é - i ¸¦ ´©¸¥ ÈÄ ÅؽºÆ®¸¦ ÀÔ·ÂÇÏ°í ¸¦ ´©¸¨´Ï´Ù. - -Âü°í: ´Â ¸í·É ¸ðµå·Î µ¹¾Æ°¡´Â µ¥ ¾²¸ç, ¿øÄ¡ ¾Ê´Â ¸í·ÉÀ̳ª ¿ÏÀüÈ÷ ÀԷµÇÁö - ¾ÊÀº ¸í·ÉÀ» Ãë¼ÒÇÏ´Â µ¥¿¡µµ ¾¹´Ï´Ù. - -±×·³ Lesson 2¸¦ ½ÃÀÛÇսôÙ. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.1: »èÁ¦(DELETION) ¸í·É - - - ** ÇÑ ´Ü¾î¸¦ ³¡±îÁö Áö¿ì·Á¸é dw ¶ó°í Ä¡¸é µË´Ï´Ù. ** - - 1. Å°¸¦ ´­·¯¼­ È®½ÇÇÏ°Ô ¸í·É ¸ðµå·Î ºüÁ® ³ª¿É´Ï´Ù. - - 2. ¾Æ·¡¿¡ ---> ·Î Ç¥½ÃµÈ ÁÙ ±îÁö Ä¿¼­¸¦ ¿Å±é´Ï´Ù. - - 3. Áö¿ö¾ßÇÒ ´Ü¾îÀÇ Ã³À½À¸·Î Ä¿¼­¸¦ ¿Å±é´Ï´Ù. - - 4. dw ¶ó°í Ãļ­ ±× ´Ü¾î¸¦ Áö¿ó´Ï´Ù. - - ÁÖÀÇ: À§¿¡¼­ ¸»ÇÑ´ë·Î Çϸé È­¸éÀÇ ¸¶Áö¸· ÁÙ¿¡ dw ¶ó´Â ±ÛÀÚ°¡ Ç¥½ÃµË´Ï´Ù. - À߸ø ÃÆ´Ù¸é, ¸¦ ´­·¯¼­ ´Ù½Ã ½ÃÀÛÇϽʽÿÀ. - ----> There are a some words fun that don't belong paper in this sentence. - - 5. 3, 4¹ø °úÁ¤À» ´Ù½Ã ÇÏ¿© ¹®ÀåÀ» Á¤È®ÇÏ°Ô ¸¸µç µÚ Lesson 2.2·Î °¡½Ê½Ã¿À. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.2: ´Ù¸¥ »èÁ¦ ¸í·É - - ** d$ ¶ó°í Ä¡¸é ±× ÁÙ ³¡±îÁö Áö¿öÁý´Ï´Ù. ** - - 1. Å°¸¦ ´­·¯¼­ È®½ÇÇÏ°Ô ¸í·É ¸ðµå·Î ºüÁ® ³ª¿É´Ï´Ù. - - 2. ¾Æ·¡¿¡ ---> ·Î Ç¥½ÃµÈ ÁÙ ±îÁö Ä¿¼­¸¦ ¿Å±é´Ï´Ù. - - 3. ¿Ã¹Ù¸¥ ÁÙÀÇ ³¡À¸·Î Ä¿¼­¸¦ ¿Å±é´Ï´Ù. (ù¹ø°·Î ³ª¿À´Â . ´ÙÀ½ÀÔ´Ï´Ù.) - - 4. d$ ¶ó°í Ãļ­ ÁÙ ³¡±îÁö Áö¿ó´Ï´Ù. - ----> Somebody typed the end of this line twice. end of this line twice. - - - 5. ¾î¶² ÀÏÀÌ ÀϾ´ÂÁö ÀÌÇØÇϱâ À§ÇØ Lesson 2.3 À¸·Î °¡½Ê½Ã¿À. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: ¸í·É°ú Àû¿ë ´ë»ó¿¡ ´ëÇØ - - - »èÁ¦ ¸í·É dÀÇ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù. - - [Ƚ¼ö] d ´ë»ó ¶Ç´Â d [Ƚ¼ö] ´ë»ó - ¿©±â¼­ - Ƚ¼ö - ¸í·ÉÀ» ¸î ¹ø ¼öÇàÇÒ Áö (¿É¼Ç, ±âº»°ª=1). - d - Áö¿ì´Â ¸í·É - ´ë»ó - ¾Æ·¡¿¡ Á¦½ÃµÈ ´ë»ó¿¡ ´ëÇØ ¸í·ÉÀ» ¼öÇà - - Àû¿ë °¡´ÉÇÑ ´ë»óÀÇ Á¾·ù: - w - Ä¿¼­¿¡¼­ ±× ´Ü¾îÀÇ ³¡±îÁö (°ø¹é Æ÷ÇÔ.) - e - Ä¿¼­¿¡¼­ ±× ´Ü¾îÀÇ ³¡±îÁö (°ø¹éÀ» Æ÷ÇÔÇÏÁö ¾ÊÀ½.) - $ - Ä¿¼­¿¡¼­ ±× ÁÙÀÇ ³¡±îÁö - -Âü°í: È£±â½ÉÀÌ ÀÖ´Ù¸é, ¸í·É ¸ðµå¿¡¼­ ¸í·É ¾øÀÌ ´ë»óÀ» ÀÔ·ÂÇغ¸½Ê½Ã¿À. - À§¿¡¼­ À̾߱âÇÑ ´ë»óÀÇ ¸ñ·Ï¿¡ µû¶ó Ä¿¼­°¡ ¿òÁ÷ÀÌ°Ô µË´Ï´Ù. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.4: '¸í·É-´ë»ó' ¿¡ ´ëÇÑ ¿¹¿Ü - - - ** dd ¶ó°í Ä¡¸é ÁÙ Àüü¸¦ Áö¿ó´Ï´Ù. ** - - ÁÙ Àüü¸¦ Áö¿ì´Â ÀÏÀÌ Àæ±â ¶§¹®¿¡, Vi¸¦ µðÀÚÀÎ ÇÑ »ç¶÷µéÀº, °£´ÜÈ÷ d¸¦ - µÎ¹ø ¿¬´Þ¾Æ Ä¡¸é ÇÑ ÁÙÀ» Áö¿ï ¼ö ÀÖµµ·Ï ÇÏ¿´½À´Ï´Ù. - - 1. Ä¿¼­¸¦ ¾Æ·¡ ³ª¿Â ´Ü¶ôÀÇ µÎ¹ø° ÁÙ·Î °¡Á®°¡½Ê½Ã¿À. - 2. dd ¸¦ ÀÔ·ÂÇÏ¿© ±× ÁÙÀ» Áö¿ì½Ê½Ã¿À. - 3. ±×·± ´ÙÀ½ ³×¹ø° ÁÙ·Î °¡½Ê½Ã¿À. - 4. 2dd ¶ó°í ÀÔ·ÂÇÏ¿© µÎÁÙÀ» Áö¿ó´Ï´Ù. ( Ƚ¼ö-¸í·É-´ë»óÀ» ±â¾ïÇϼ¼¿ä. ) - - 1) Roses are red, - 2) Mud is fun, - 3) Violets are blue, - 4) I have a car, - 5) Clocks tell time, - 6) Sugar is sweet - 7) And so are you. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.5: Ãë¼Ò(UNDO) ¸í·É - - - ** u ¸¦ ´©¸£¸é ¸¶Áö¸· ¸í·ÉÀÌ Ãë¼ÒµÇ¸ç, U ´Â ÁÙ Àüü¸¦ ¼öÁ¤ÇÕ´Ï´Ù. ** - - 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ÁÙ·Î À̵¿ÇÑ ÈÄ Ã¹¹ø° À߸øµÈ ºÎºÐ À§·Î ¿Å±é´Ï´Ù. - 2. x ¸¦ ÀÔ·ÂÇÏ¿© ù¹ø° À߸øµÈ ±ÛÀÚ¸¦ Áö¿ó´Ï´Ù. - 3. ±×·³ ÀÌÁ¦ u ¸¦ ÀÔ·ÂÇÏ¿© ¸¶Áö¸·À¸·Î ¼öÇàµÈ ¸í·ÉÀ» Ãë¼ÒÇÕ´Ï´Ù. - 4. À̹ø¿¡´Â x ¸í·ÉÀ» ÀÌ¿ëÇÏ¿© ±× ÁÙÀÇ ¸ðµç ¿¡·¯¸¦ ¼öÁ¤Çغ¾½Ã´Ù. - 5. ´ë¹®ÀÚ U ¸¦ ´­·¯¼­ ±× ÁÙÀ» ¿ø·¡ »óÅ·Πµ¹·Á³õ¾Æ º¸½Ê½Ã¿À. - 6. À̹ø¿¡´Â u ¸¦ ¸î ¹ø ´­·¯¼­ U ¿Í ÀÌÀü ¸í·ÉÀ» Ãë¼ÒÇغ¾½Ã´Ù. - 7. CTRL-R (CTRL Å°¸¦ ´©¸¥ »óÅ¿¡¼­ RÀ» ´©¸£´Â °Í) À» ¸î ¹ø ´­·¯¼­ - ¸í·ÉÀ» ´Ù½Ã ½ÇÇàÇغ¾½Ã´Ù. (Ãë¼ÒÇÑ °ÍÀ» Ãë¼ÒÇÔ.) - ----> Fiix the errors oon thhis line and reeplace them witth undo. - - 8. ÀÌ ¸í·ÉÀº ¸Å¿ì À¯¿ëÇÕ´Ï´Ù. ±×·³ Lesson 2 ¿ä¾àÀ¸·Î ³Ñ¾î°¡µµ·Ï ÇսôÙ. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 2 ¿ä¾à - - - 1. Ä¿¼­°¡ À§Ä¡ÇÑ °÷ºÎÅÍ ´Ü¾îÀÇ ³¡±îÁö Áö¿ì·Á¸é: dw - - 2. Ä¿¼­°¡ À§Ä¡ÇÑ °÷ºÎÅÍ ÁÙ ³¡±îÁö Áö¿ì·Á¸é: d$ - - 3. ÁÙ Àüü¸¦ Áö¿ì·Á¸é: dd - - 4. ¸í·É ¸ðµå¿¡¼­ ³»¸®´Â ¸í·ÉÀÇ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù: - - [Ƚ¼ö] ¸í·É ´ë»ó ¶Ç´Â ¸í·É [Ƚ¼ö] ´ë»ó - ¿©±â¼­: - Ƚ¼ö - ±× ¸í·ÉÀ» ¸î ¹ø ¹Ýº¹ÇÒ °ÍÀΰ¡ - ¸í·É - ¾î¶² ¸í·ÉÀ» ³»¸± °ÍÀΰ¡ ( ¿¹¸¦ µé¾î, »èÁ¦ÀÎ °æ¿ì´Â d ) - ´ë»ó - ¸í·ÉÀÌ µ¿ÀÛÇÒ ´ë»ó, ¿¹¸¦ µé¾î w (´Ü¾î), $ (ÁÙÀÇ ³¡) µî. - - 5. ÀÌÀü ÇൿÀ» Ãë¼ÒÇÏ·Á¸é: u (¼Ò¹®ÀÚ u) - ÇÑ ÁÙ¿¡¼­ ¼öÁ¤ÇÑ °ÍÀ» ¸ðµÎ Ãë¼ÒÇÏ·Á¸é: U (´ë¹®ÀÚ U) - Ãë¼ÒÇÑ °ÍÀ» ´Ù½Ã ½ÇÇàÇÏ·Á¸é: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.1: ºÙÀ̱â(PUT) ¸í·É - - - ** p ¸¦ ÀÔ·ÂÇÏ¿© ¸¶Áö¸·À¸·Î Áö¿î ³»¿ëÀ» Ä¿¼­ µÚ¿¡ ºÙÀÔ´Ï´Ù. ** - - 1. ¾Æ·¡¿¡ ÀÖ´Â ¹®´ÜÀÇ Ã¹ ÁÙ·Î Ä¿¼­¸¦ ¿òÁ÷À̽ʽÿÀ. - - 2. dd ¸¦ ÀÔ·ÂÇÏ¿© ±× ÁÙÀ» Áö¿ö¼­ ºöÀÇ ¹öÆÛ¿¡ ÀúÀåÇÕ´Ï´Ù. - - 3. ¾Æ±î Áö¿î ÁÙÀÌ °¡¾ßÇÒ À§Ä¡ÀÇ *À­ÁÙ·Î* Ä¿¼­¸¦ ¿Å±é´Ï´Ù. - - 4. ¸í·É ¸ðµå¿¡¼­, p ¸¦ ÀÔ·ÂÇÏ¿© ±× ÁÙÀ» Á¦´ë·Î µÈ ÀÚ¸®·Î ¿Å±é´Ï´Ù. - - 5. 2¿¡¼­ 4¸¦ ¹Ýº¹ÇÏ¿© ¸ðµç ÁÙÀÇ ¼ø¼­¸¦ ¹Ù·Î ÀâÀ¸½Ê½Ã¿À. - - d) Can you learn too? - b) Violets are blue, - c) Intelligence is learned, - a) Roses are red, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.2: ġȯ(REPLACE) ¸í·É - - - ** Ä¿¼­ ¾Æ·¡ÀÇ ±ÛÀÚ Çϳª¸¦ ¹Ù²Ù·Á¸é, r À» ´©¸¥ ÈÄ ¹Ù²Ü ±ÛÀÚ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. ** - - 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ù ÁÙ·Î ¿Å±é´Ï´Ù. - - 2. Ä¿¼­¸¦ À߸øµÈ ù ºÎºÐÀ¸·Î ¿Å±é´Ï´Ù. - - 3. r À» ´©¸¥ ÈÄ, À߸øµÈ ºÎºÐÀ» °íÃÄ ¾µ ±ÛÀÚ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. - - 4. 2¿¡¼­ 3ÀÇ °úÁ¤À» ¹Ýº¹ÇÏ¿©, ù ÁÙÀÇ ¿À·ù¸¦ ¼öÁ¤ÇϽʽÿÀ. - ----> Whan this lime was tuoed in, someone presswd some wrojg keys! ----> When this line was typed in, someone pressed some wrong keys! - - 5. Lesson 3.2 ·Î À̵¿ÇսôÙ. - -ÁÖÀÇ: ¿Ü¿ìÁö ¸»°í, Á÷Á¢ Çغ¸¸é¼­ ÀÍÇô¾ß ÇÑ´Ù´Â °ÍÀ» ÀØÁö ¸¶½Ê½Ã¿À. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.3: º¯È¯(CHANGE) ¸í·É - - - ** ÇÑ ´Ü¾îÀÇ ÀϺγª Àüü¸¦ ¹Ù²Ù·Á¸é, cw ¸¦ Ä¡½Ê½Ã¿À. ** - - 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ùÁÙ·Î ¿Å±é´Ï´Ù. - - 2. Ä¿¼­¸¦ lubw ¿¡¼­ u À§¿¡ ¿Ã·Á³õ½À´Ï´Ù. - - 3. cw ¶ó°í ¸í·ÉÇÑ ÈÄ ´Ü¾î¸¦ Á¤È®ÇÏ°Ô ¼öÁ¤ÇÕ´Ï´Ù. (ÀÌ °æ¿ì, 'ine' ¸¦ Ĩ´Ï´Ù.) - - 4. ¸¦ ´©¸¥ ÈÄ ´ÙÀ½ ¿¡·¯·Î °©´Ï´Ù (¼öÁ¤µÇ¾î¾ßÇÒ Ã¹ ±ÛÀÚ·Î °©´Ï´Ù.) - - 5. 3¿¡¼­ 4ÀÇ °úÁ¤À» ¹Ýº¹ÇÏ¿© ù¹ø° ¹®ÀåÀ» µÎ¹ø° ¹®Àå°ú °°µµ·Ï ¸¸µì´Ï´Ù. - ----> This lubw has a few wptfd that mrrf changing usf the change command. ----> This line has a few words that need changing using the change command. - -cw ´Â ´Ü¾î¸¦ ġȯÇÏ´Â °Í »Ó¸¸ ¾Æ´Ï¶ó, ³»¿ëÀ» »ðÀÔÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù´Â °Í¿¡ -ÁÖÀÇÇսôÙ. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.4: c ¸¦ ÀÌ¿ëÇÑ ´Ù¸¥ º¯È¯ ¸í·É - - - ** º¯È¯ ¸í·ÉÀº »èÁ¦ÇÒ ¶§ ÀÌ¿ëÇÑ ´ë»ó¿¡ ´ëÇØ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ** - - 1. º¯È¯ ¸í·ÉÀº »èÁ¦¿Í µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î µ¿ÀÛÇÕ´Ï´Ù. Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù: - - [Ƚ¼ö] c ´ë»ó ¶Ç´Â c [Ƚ¼ö] ´ë»ó - - 2. Àû¿ë °¡´ÉÇÑ ´ë»ó ¿ª½Ã °°½À´Ï´Ù. w (´Ü¾î), $ (ÁÙÀÇ ³¡) µîÀÌ ÀÖ½À´Ï´Ù. - - 3. ---> ·Î Ç¥½ÃµÈ ùÁÙ·Î À̵¿ÇÕ´Ï´Ù. - - 4. ù ¿¡·¯ À§·Î Ä¿¼­¸¦ ¿Å±é´Ï´Ù. - - 5. c$ ¸¦ ÀÔ·ÂÇÏ¿©, ±× ÁÙÀÇ ³ª¸ÓÁö°¡ µÎ¹ø° ÁÙó·³ µÇµµ·Ï ¼öÁ¤ÇÑ ÈÄ ¸¦ - ´©¸£½Ê½Ã¿À. - ----> The end of this line needs some help to make it like the second. ----> The end of this line needs to be corrected using the c$ command. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 3 ¿ä¾à - - - 1. ÀÌ¹Ì Áö¿î ³»¿ëÀ» µÇµ¹¸®·Á¸é, p ¸¦ ´©¸£½Ê½Ã¿À. ÀÌ ¸í·ÉÀº Ä¿¼­ *´ÙÀ½¿¡* - Áö¿öÁø ³»¿ëÀ» ºÙÀÔ´Ï´Ù(PUT). (ÇÑ ÁÙÀ» Áö¿î °æ¿ì¿¡´Â Ä¿¼­ ´ÙÀ½ ÁÙ¿¡ - Áö¿öÁø ³»¿ëÀÌ ºÙ½À´Ï´Ù.) - - 2. Ä¿¼­ ¾Æ·¡ÀÇ ±ÛÀÚ¸¦ ġȯÇÏ·Á¸é(REPLACE), r À» ´©¸¥ ÈÄ ¿ø·¡ ±ÛÀÚ ´ë½Å - ¹Ù²Ù¾î ³ÖÀ» ±ÛÀÚ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. - - 3. º¯È¯ ¸í·É(CHANGE)Àº Ä¿¼­¿¡¼­ ºÎÅÍ ÁöÁ¤ÇÑ ´ë»óÀÇ ³¡±îÁö ¹Ù²Ü ¼ö ÀÖ´Â - ¸í·ÉÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, Ä¿¼­ À§Ä¡¿¡¼­ ´Ü¾îÀÇ ³¡±îÁö ¹Ù²Ù·Á¸é, cw ¸¦ - ÀÔ·ÂÇÏ¸é µÇ¸ç, c$ ´Â ÁÙ ³¡±îÁö ¹Ù²Ù´Â µ¥ ¾²ÀÔ´Ï´Ù. - - 4. º¯È¯ ¸í·ÉÀÇ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù: - - [Ƚ¼ö] c ´ë»ó ¶Ç´Â c [Ƚ¼ö] ´ë»ó - -°è¼ÓÇؼ­ ´ÙÀ½ Lesson À» ÁøÇàÇսôÙ. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.1: À§Ä¡¿Í ÆÄÀÏÀÇ »óÅ - - - ** CTRL-g ¸¦ ´©¸£¸é ÆÄÀÏ ³»¿¡¼­ÀÇ ÇöÀç À§Ä¡¿Í ÆÄÀÏÀÇ »óŸ¦ º¼ ¼ö ÀÖ½À´Ï´Ù. - SHIFT-G ¸¦ ´©¸£¸é ÆÄÀÏ ³»ÀÇ ÁÙ·Î À̵¿ÇÕ´Ï´Ù. ** - - ÁÖÀÇ: ¾Æ·¡ÀÇ ´Ü°è¸¦ µû¶óÇϱâ Àü¿¡, ÀÌ Lesson Àüü¸¦ ¸ÕÀú ÀÐÀ¸½Ê½Ã¿À. - - 1. CTRL Å°¸¦ ´©¸¥ »óÅ¿¡¼­ g ¸¦ ´©¸¨´Ï´Ù. ÆÄÀÏ À̸§°ú ÇöÀç À§Ä¡ÇÑ ÁÙÀÌ - Ç¥½ÃµÈ »óÅÂÁÙÀÌ È­¸é ¾Æ·¡¿¡ Ç¥½ÃµÉ °ÍÀÔ´Ï´Ù. 3¹ø° ´Ü°è¸¦ À§ÇØ ±× - ÁÙ ¹øÈ£¸¦ ±â¾ïÇÏ°í °è½Ê½Ã¿À. - - 2. SHIFT-G ¸¦ ´©¸£¸é ÆÄÀÏÀÇ ¸¶Áö¸·À¸·Î À̵¿ÇÕ´Ï´Ù. - - 3. ¾Æ±î ±â¾ïÇß´ø ÁÙ ¹øÈ£¸¦ ÀÔ·ÂÇÑ ÈÄ SHIFT-G ¸¦ ´©¸£½Ê½Ã¿À. ÀÌ·¸°Ô Çϸé - óÀ½¿¡ CTRL-g ¸¦ ´­·¶´ø Àå¼Ò·Î µÇµ¹¾Æ°¡°Ô µÉ °ÍÀÔ´Ï´Ù. - (¹øÈ£¸¦ ÀÔ·ÂÇÒ ¶§, ÀÌ°ÍÀº È­¸é¿¡ Ç¥½ÃµÇÁö ¾Ê½À´Ï´Ù.) - - 4. ÀÚ½ÅÀÌ »ý°å´Ù¸é, 1¿¡¼­ 3±îÁö¸¦ ½ÇÇàÇغ¸½Ê½Ã¿À. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.2: ã±â ¸í·É - - - ** / ¸¦ ´©¸¥ ÈÄ °Ë»öÇÒ ¹®±¸¸¦ ÀÔ·ÂÇϽʽÿÀ. ** - - 1. ¸í·É ¸ðµå¿¡¼­ / ¸¦ ÀÔ·ÂÇϽʽÿÀ. : ¸í·É¿¡¼­¿Í ¸¶Âù°¡Áö·Î, È­¸é ¾Æ·¡¿¡ - / ¿Í Ä¿¼­°¡ Ç¥½ÃµÉ °ÍÀÔ´Ï´Ù. - - 2. 'errroor' ¶ó°í Ä£ ÈÄ ¸¦ Ä¡½Ê½Ã¿À. ÀÌ ´Ü¾î¸¦ ãÀ¸·Á°í ÇÕ´Ï´Ù. - - 3. °°Àº ¹®±¸¸¦ ´Ù½Ã ãÀ¸·Á¸é, °£´ÜÈ÷ n À» ÀÔ·ÂÇϽʽÿÀ. - °°Àº ¹®±¸¸¦ ¹Ý´ë ¹æÇâÀ¸·Î ãÀ¸·Á¸é, Shift-N À» ÀÔ·ÂÇϽʽÿÀ. - - 4. ¹®±¸¸¦ ¿ª¹æÇâÀ¸·Î ãÀ¸·Á¸é, / ´ë½Å ? ¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù. - ----> "errroor" is not the way to spell error; errroor is an error. - -Âü°í: ã´Â Áß¿¡ ÆÄÀÏÀÇ ³¡¿¡ ´Ù´Ù¸£°Ô µÇ¸é, ÆÄÀÏÀÇ Ã³À½ºÎÅÍ ´Ù½Ã ã°Ô µË´Ï´Ù. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.3: °ýÈ£ÀÇ Â¦ ã±â - - - ** % ¸¦ ´­·¯¼­ ), ], } ÀÇ Â¦À» ã½À´Ï´Ù. ** - - 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ÁÙÀÇ (, [, { Áß Çϳª¿¡ °¡Á®´Ù ³õ½À´Ï´Ù. - - 2. % ¸¦ ÀÔ·ÂÇØ º¾½Ã´Ù. - - 3. Ä¿¼­°¡ ¦ÀÌ ¸Â´Â °ýÈ£·Î À̵¿ÇÒ °ÍÀÔ´Ï´Ù. - - 4. % ¸¦ ÀÔ·ÂÇÏ¿©, ÀÌÀü °ýÈ£·Î µÇµ¹¾Æ ¿É½Ã´Ù. - ----> This ( is a test line with ('s, ['s ] and {'s } in it. )) - -Âü°í: ¦ÀÌ ¸ÂÁö ¾Ê´Â °ýÈ£°¡ ÀÖ´Â ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ ¶§¿¡ ¸Å¿ì À¯¿ëÇÕ´Ï´Ù! - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.4: ¿¡·¯¸¦ ¼öÁ¤ÇÏ´Â ¹æ¹ý - - - ** :s/old/new/g Çϸé 'old' ¸¦ 'new' ·Î ġȯ(SUBTITUTE)ÇÕ´Ï´Ù. ** - - 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ÁÙ¿¡ °¡Á®´Ù ³õ½À´Ï´Ù. - - 2. :s/thee/the ¸¦ ÀÔ·ÂÇÑ ÈÄ ¸¦ Ĩ´Ï´Ù. ÀÌ ¸í·ÉÀº ±× ÁÙ¿¡¼­ - óÀ½À¸·Î ¹ß°ßµÈ °Í¸¸ ¹Ù²Û´Ù´Â °Í¿¡ ÁÖÀÇÇϽʽÿÀ. - - 3. À̹ø¿¡´Â :s/thee/the/g ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. ÀÌ´Â ±× ÁÙ Àüü(globally)¸¦ - ġȯÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. - ----> thee best time to see thee flowers is in thee spring. - - 4. µÎ ÁÙ »çÀÌÀÇ ¸ðµç ¹®ÀÚ¿­¿¡ ´ëÇØ Ä¡È¯ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù, - :#,#s/old/new/g #,# ´Â µÎ ÁÙÀÇ ÁÙ¹øÈ£¸¦ ¶æÇÕ´Ï´Ù. - :%s/old/new/g ÆÄÀÏ Àüü¿¡¼­ ¹ß°ßµÈ ¸ðµç °ÍÀ» ġȯÇÏ´Â °æ¿ìÀÔ´Ï´Ù. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 4 ¿ä¾à - - - 1. CTRL-g ´Â ÆÄÀÏÀÇ »óÅÂ¿Í ÆÄÀÏ ³»¿¡¼­ÀÇ ÇöÀç À§Ä¡¸¦ Ç¥½ÃÇÕ´Ï´Ù. - SHIFT-G ´Â ÆÄÀÏÀÇ ³¡À¸·Î À̵¿ÇÕ´Ï´Ù. ÁÙ¹øÈ£¸¦ ÀÔ·ÂÇÑ ÈÄ SHIFT-G¸¦ - ÀÔ·ÂÇϸé, ±× ÁÙ·Î À̵¿ÇÕ´Ï´Ù. - - 2. / ¸¦ ÀÔ·ÂÇÑ ÈÄ ¹®±¸¸¦ ÀÔ·ÂÇÏ¸é ±× ¹®±¸¸¦ ¾Æ·§¹æÇâÀ¸·Î ã½À´Ï´Ù. - ? ¸¦ ÀÔ·ÂÇÑ ÈÄ ¹®±¸¸¦ ÀÔ·ÂÇϸé À­¹æÇâÀ¸·Î ã½À´Ï´Ù. - °Ë»ö ÈÄ, n À» ÀÔ·ÂÇÏ¸é °°Àº ¹æÇâÀ¸·Î ´ÙÀ½ ¹®±¸¸¦ ãÀ¸¸ç, - Shift-N À» ÀÔ·ÂÇÏ¸é ¹Ý´ë ¹æÇâÀ¸·Î ã½À´Ï´Ù. - - 3. Ä¿¼­°¡ (,),[,],{,} À§¿¡ ÀÖÀ» ¶§¿¡ % ¸¦ ÀÔ·ÂÇÏ¸é »óÀÀÇϴ ¦À» - ã¾Æ°©´Ï´Ù. - - 4. ¾î¶² ÁÙ¿¡ óÀ½ µîÀåÇÏ´Â old¸¦ new·Î ¹Ù²Ù·Á¸é :s/old/new - ÇÑ ÁÙ¿¡ µîÀåÇÏ´Â ¸ðµç old¸¦ new·Î ¹Ù²Ù·Á¸é :s/old/new/g - µÎ ÁÙ #,# »çÀÌ¿¡¼­ ġȯÀ» ÇÏ·Á¸é :#,#s/old/new/g - ÆÄÀÏ ³»ÀÇ ¸ðµç ¹®±¸¸¦ ġȯÇÏ·Á¸é :%s/old/new/g - ¹Ù²Ü ¶§¸¶´Ù È®ÀÎÀ» °ÅÄ¡·Á¸é 'c'¸¦ ºÙ¿©¼­ :%s/old/new/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.1: ¿ÜºÎ ¸í·É ½ÇÇàÇÏ´Â ¹æ¹ý - - - ** :! À» ÀÔ·ÂÇÑ ÈÄ ½ÇÇàÇÏ·Á´Â ¸í·ÉÀ» ÀÔ·ÂÇϽʽÿÀ. ** - - 1. Ä£¼÷ÇÑ ¸í·ÉÀÎ : ¸¦ ÀÔ·ÂÇϸé Ä¿¼­°¡ È­¸é ¾Æ·¡·Î À̵¿ÇÕ´Ï´Ù. ¸í·ÉÀ» - ÀÔ·ÂÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. - - 2. ÀÌÁ¦ ! (´À³¦Ç¥) ¸¦ ÀÔ·ÂÇϽʽÿÀ. ÀÌ·¸°Ô ÇÏ¸é ¿ÜºÎ ½© ¸í·ÉÀ» ½ÇÇàÇÒ - ¼ö ÀÖ½À´Ï´Ù. - - 3. ½ÃÇè»ï¾Æ ! ´ÙÀ½¿¡ ls ¸¦ ÀÔ·ÂÇÑ ÈÄ ¸¦ Ãĺ¸½Ê½Ã¿À. ½© ÇÁ·ÒÇÁÆ® - ¿¡¼­Ã³·³ µð·ºÅ丮ÀÇ ¸ñ·ÏÀÌ Ãâ·ÂµÉ °ÍÀÔ´Ï´Ù. ls °¡ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù¸é - :!dir À» ½ÃµµÇØ º¸½Ê½Ã¿À. - -Âü°í: ¾î¶² ¿ÜºÎ ¸í·Éµµ ÀÌ ¹æ¹ýÀ¸·Î ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. - -Âü°í: ¸ðµç : ¸í·ÉÀº ¸¦ ÃÄ¾ß ¸¶¹«¸® µË´Ï´Ù. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.2: º¸´Ù ÀÚ¼¼ÇÑ ÆÄÀÏ ÀúÀå - - - ** ¼öÁ¤µÈ ³»¿ëÀ» ÆÄÀÏ·Î ÀúÀåÇÏ·Á¸é, :w FILENAME ÇϽʽÿÀ. ** - - 1. :!dir ¶Ç´Â :!ls ¸¦ ÀÔ·ÂÇÏ¿© µð·ºÅ丮ÀÇ ¸®½ºÆ®¸¦ ¾ò¾î¿É´Ï´Ù. - À§ÀÇ ¸í·É ÈÄ ¸¦ ÃľßÇÑ´Ù´Â °ÍÀº ÀÌ¹Ì ¾Ë°í ÀÖÀ» °ÍÀÔ´Ï´Ù. - - 2. TEST ó·³ Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏ À̸§À» Çϳª °í¸£½Ê½Ã¿À. - - 3. ÀÌÁ¦ :w TEST ¶ó°í ÀÔ·ÂÇϽʽÿÀ. (TEST´Â ´ç½ÅÀÌ ¼±ÅÃÇÑ ÆÄÀÏ À̸§ÀÔ´Ï´Ù.) - - 4. ÀÌ·¸°Ô ÇÏ¸é ºö ±æÀâÀÌ ÆÄÀÏ Àüü¸¦ TEST¶ó´Â À̸§À¸·Î ÀúÀåÇÕ´Ï´Ù. - È®ÀÎÇÏ·Á¸é, :!dir À» ´Ù½Ã ÀÔ·ÂÇÏ¿©, µð·ºÅ丮¸¦ »ìÆ캸½Ê½Ã¿À. - -Âü°í: ºöÀ» Á¾·áÇÑ ÈÄ, ºöÀ» ´Ù½Ã ½ÇÇàÇÏ¿© TEST¶ó´Â ÆÄÀÏÀ» ¿­¸é, ±× ÆÄÀÏÀº - ÀúÀåÇßÀ» ¶§¿Í ¿Ïº®È÷ °°Àº º¹»çº»ÀÏ °ÍÀÔ´Ï´Ù. - - 5. ÀÌÁ¦ ±× ÆÄÀÏÀ» Áö¿ó½Ã´Ù. - (MS-DOS¿¡¼­): !del TEST - (Unix¿¡¼­): !rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.3: ¼±ÅÃÀûÀ¸·Î ÀúÀåÇÏ´Â ¸í·É - - - ** ÆÄÀÏÀÇ ÀϺθ¦ ÀúÀåÇÏ·Á¸é, :#,# w FILENAME ÇϽʽÿÀ. ** - - 1. ´Ù½Ã Çѹø, :!dir À̳ª !ls ¸¦ ÀÔ·ÂÇÏ¿© µð·ºÅ丮ÀÇ ¸ñ·ÏÀ» ¹Þ¾Æ¿Â ÈÄ - TEST °°Àº ÀûÇÕÇÑ À̸§À» ¼±ÅÃÇÕ´Ï´Ù. - - 2. Ä¿¼­¸¦ ÀÌ ÆäÀÌÁöÀÇ Ã³À½À¸·Î ¿Å±ä ÈÄ, Ctrl-g ¸¦ ÀÔ·ÂÇÏ¿© ±× ÁÙÀÇ ÁÙ¹øÈ£¸¦ - ¾Ë¾Æ³À´Ï´Ù. ÀÌ ¹øÈ£¸¦ ±â¾ïÇϽʽÿÀ! - - 3. ÀÌÁ¦ ÀÌ ÆäÀÌÁöÀÇ ¸¶Áö¸·À¸·Î °¡¼­ Ctrl-g ¸¦ ´Ù½Ã ÀÔ·ÂÇϽʽÿÀ. ÀÌ ÁÙÀÇ - ÁÙ¹øÈ£ ¶ÇÇÑ ±â¾ïÇϽʽÿÀ! - - 4. ¾î¶² ¼½¼Ç¸¸ ÆÄÀÏ·Î ÀúÀåÇÏ·Á¸é, :#,# w TEST ¸¦ ÀÔ·ÂÇÏ¸é µË´Ï´Ù. ÀÌ ¶§ - #,# ´Â ¾Æ±î ±â¾ïÇß´ø ½ÃÀÛ°ú ³¡ ÁÙ¹øÈ£ ÀÔ´Ï´Ù. TEST´Â ÆÄÀÏ À̸§ÀÔ´Ï´Ù. - - 5. :!dir À» ÀÌ¿ëÇÏ¿© ÆÄÀÏÀÌ ¸¸µé¾îÁ³´ÂÁö È®ÀÎÇϽʽÿÀ. Áö¿ìÁö´Â ¸¶½Ê½Ã¿À. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.4: ÆÄÀÏ ÀоîµéÀ̱â, ÇÕÄ¡±â - - - ** ¾î¶² ÆÄÀÏÀÇ ³»¿ëÀ» »ðÀÔÇÏ·Á¸é, :r FILENAME ÇϽʽÿÀ ** - - 1. :!dir À» ÀÔ·ÂÇÏ¿© ¾Æ±î ¸¸µç TEST ÆÄÀÏÀÌ ±×´ë·Î ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ. - - 2. Ä¿¼­¸¦ ÀÌ ÆäÀÌÁöÀÇ Ã³À½À¸·Î ¿òÁ÷À̽ʽÿÀ. - -ÁÖÀÇ: 3¹ø° ´Ü°è¸¦ ½ÇÇàÇϸé, Lesson 5.3 À» º¸°Ô µÉ °ÍÀÔ´Ï´Ù. ±×·¸°Ô µÇ¸é - ÀÌ lessonÀ¸·Î ´Ù½Ã ³»·Á¿À½Ê½Ã¿À. - - 3. ÀÌÁ¦ TEST ÆÄÀÏÀ» ÀоîµéÀԽôÙ. :r TEST ¸í·ÉÀ» »ç¿ëÇϽʽÿÀ. TEST ´Â - ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù. - -Âü°í: ÀоîµéÀÎ ÆÄÀÏÀº Ä¿¼­°¡ À§Ä¡ÇÑ ÁöÁ¡¿¡¼­ºÎÅÍ ³õÀÌ°Ô µË´Ï´Ù. - - 4. ÆÄÀÏÀÌ Àоîµé¿©Áø °ÍÀ» È®ÀÎÇϱâ À§ÇØ, µÚ·Î À̵¿Çؼ­ ±âÁ¸ ¹öÀü°ú ÆÄÀÏ¿¡¼­ - ÀоîµéÀÎ ¹öÀü, ÀÌ·¸°Ô Lesson 5.3 ÀÌ µÎ¹ø ¹Ýº¹µÇ¾úÀ½À» È®ÀÎÇϽʽÿÀ. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 5 ¿ä¾à - - - 1. :!command ¸¦ ÀÌ¿ëÇÏ¿© ¿ÜºÎ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù. - - À¯¿ëÇÑ ¿¹: - (MS-DOS) (Unix) - :!dir :!ls - µð·ºÅ丮ÀÇ ¸ñ·ÏÀ» º¸¿©ÁØ´Ù. - :!del FILENAME :!rm FILENAME - FILENAMEÀ̶ó´Â ÆÄÀÏÀ» Áö¿î´Ù. - - 2. :w FILENAME Çϸé ÇöÀç ºö¿¡¼­ »ç¿ëÇÏ´Â ÆÄÀÏÀ» FILENAMEÀ̶ó´Â À̸§À¸·Î - µð½ºÅ©¿¡ ÀúÀåÇÕ´Ï´Ù. - - 3. :#,#w FILENAME Çϸé #ºÎÅÍ #±îÁöÀÇ ÁÙÀ» FILENAMEÀ̶ó´Â ÆÄÀÏ·Î ÀúÀåÇÕ´Ï´Ù. - - 4. :r FILENAME Àº µð½ºÅ©¿¡¼­ FILENAMEÀ̶ó´Â ÆÄÀÏÀ» ºÒ·¯µé¿©¼­ Ä¿¼­ À§Ä¡ - µÚ¿¡ ÇöÀç ÆÄÀÏÀ» Áý¾î³Ö½À´Ï´Ù. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.1: »õ ÁÙ ¿­±â(OPEN) ¸í·É - - - ** o ¸¦ ´©¸£¸é Ä¿¼­ ¾Æ·¡¿¡ ÁÙÀ» ¸¸µé°í ÆíÁý ¸ðµå°¡ µË´Ï´Ù. ** - - 1. ¾Æ·¡¿¡ ---> ·Î Ç¥½ÃµÈ ÁÙ·Î Ä¿¼­¸¦ ¿Å±â½Ê½Ã¿À. - - 2. o (¼Ò¹®ÀÚ)¸¦ Ãļ­ Ä¿¼­ *¾Æ·¡¿¡* ÁÙÀ» Çϳª ¿©½Ê½Ã¿À. ÆíÁý ¸ðµå°¡ µË´Ï´Ù. - Insert mode. - - 3. ---> ·Î Ç¥½ÃµÈ ÁÙÀ» º¹»çÇÑ ÈÄ ¸¦ ´­·¯¼­ ÆíÁý ¸ðµå¿¡¼­ ³ª¿À½Ê½Ã¿À. - ----> After typing o the cursor is placed on the open line in Insert mode. - - 4. Ä¿¼­ *À§¿¡* ÁÙÀ» Çϳª ¸¸µå·Á¸é, ¼Ò¹®ÀÚ o ´ë½Å ´ë¹®ÀÚ O ¸¦ Ä¡¸é µË´Ï´Ù. - ¾Æ·¡ ÀÖ´Â ÁÙ¿¡ ´ëÇØ ÀÌ ¸í·ÉÀ» ³»·Áº¸½Ê½Ã¿À. -Open up a line above this by typing Shift-O while the cursor is on this line. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.2: Ãß°¡(APPEND) ¸í·É - - - ** a ¸¦ ´©¸£¸é Ä¿¼­ *´ÙÀ½¿¡* ±ÛÀ» ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. ** - - 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ù¹ø° ÁÙÀÇ ³¡À¸·Î ¿Å±é´Ï´Ù. ¸í·É ¸ðµå¿¡¼­ - $ ¸¦ ÀÌ¿ëÇϽʽÿÀ. - - 2. ¼Ò¹®ÀÚ a ¸¦ Ä¿¼­ ¾Æ·¡ ±ÛÀÚ *´ÙÀ½*¿¡ ±ÛÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. - (´ë¹®ÀÚ A´Â ±× ÁÙÀÇ ³¡¿¡ Ãß°¡ÇÕ´Ï´Ù.) - -Âü°í: ±×·¸°Ô ÇÏ½Ã¸é °íÀÛ ÁÙÀÇ ³¡¿¡ Ãß°¡¸¦ Çϱâ À§ÇØ i¸¦ ´©¸£°í, Ä¿¼­ ¾Æ·¡¿¡ - ÀÖ´ø ±ÛÀÚ¸¦ ¹Ýº¹ÇÏ°í, ±ÛÀ» ³¢¿ö³Ö°í, ¸¦ ´­·¯ ¸í·É ¸ðµå·Î µ¹¾Æ¿Í¼­, - Ä¿¼­¸¦ ¿À¸¥ÂÊÀ¸·Î ¿Å±â°í ¸¶Áö¸·À¸·Î x±îÁö ´­·¯¾ß ÇÏ´Â ¹ø°Å·Î¿òÀ» ÇÇÇÏ½Ç - ¼ö ÀÖ½À´Ï´Ù. - - 3. ÀÌÁ¦ ù ÁÙÀ» ¿Ï¼ºÇϽʽÿÀ. Ãß°¡ ¸í·ÉÀº ÅؽºÆ®°¡ ÀԷµǴ À§Ä¡ ¿Ü¿¡´Â - ÆíÁý ¸ðµå¿Í ¿ÏÀüÈ÷ °°´Ù´Â °ÍÀ» À¯³äÇϽʽÿÀ. - ----> This line will allow you to practice ----> This line will allow you to practice appending text to the end of a line. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.3: ġȯ(REPLACE) ÀÇ ´Ù¸¥ ¹öÀü - - - ** ´ë¹®ÀÚ R À» ÀÔ·ÂÇϸé Çϳª ÀÌ»óÀÇ ±ÛÀÚ¸¦ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ** - - 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ù¹ø° ÁÙ·Î ¿Å±â½Ê½Ã¿À. - - 2. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ µÎ¹ø° ÁÙ°ú ´Ù¸¥ ù¹ø° ´Ü¾î À§·Î ¿Å±â½Ê½Ã¿À. - ('last' ÀÔ´Ï´Ù.) - - 3. R À» ÀÔ·ÂÇÑ ÈÄ Ã¹¹ø° ÁÙÀÇ ¿¹Àü ÅؽºÆ® À§¿¡ »õ·Î¿î ±ÛÀ» ÀÔ·ÂÇÏ¿© - ³ª¸ÓÁö ³»¿ëÀÌ µÎ¹ø° ÁÙ°ú °°¾ÆÁöµµ·Ï ¹Ù²ß½Ã´Ù. - ----> To make the first line the same as the last on this page use the keys. ----> To make the first line the same as the second, type R and the new text. - - 4. ¸¦ ´­·¯¼­ ³ª°¡¸é, ¹Ù²îÁö ¾ÊÀº ÅؽºÆ®´Â ±×´ë·Î ³²°Ô µË´Ï´Ù. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.4: ¿É¼Ç ¼³Á¤(SET) - - ** ã±â³ª ¹Ù²Ù±â¿¡¼­ ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ¾ø¾Ö±â À§ÇØ ¿É¼ÇÀ» ¼³Á¤ÇÕ´Ï´Ù ** - - 1. ´ÙÀ½À» ÀÔ·ÂÇÏ¿© 'ignore' ¸¦ ãÀ¸½Ê½Ã¿À: - /ignore - n Å°¸¦ ÀÌ¿ëÇÏ¿© ¿©·¯¹ø ¹Ýº¹ÇϽʽÿÀ. - - 2. 'ic' (´ë¼Ò¹®ÀÚ ±¸º° ¾ÈÇÔ, Ignore case) ¿É¼ÇÀ» ¼³Á¤ÇϽʽÿÀ: - :set ic - - 3. n Å°¸¦ ´­·¯¼­ 'ignore' ¸¦ ´Ù½Ã ã¾Æº¸½Ê½Ã¿À. - n Å°¸¦ °è¼Ó ´­·¯¼­ ¿©·¯¹ø ãÀ¸½Ê½Ã¿À. - - 4. 'hlsearch' ¿Í 'incsearch' ¿É¼ÇÀ» ¼³Á¤ÇսôÙ. - :set hls is - - 5. ã±â ¸í·ÉÀ» ´Ù½Ã ÀÔ·ÂÇÏ¿©, ¾î¶² ÀÏÀÌ ÀϾ´ÂÁö È®ÀÎÇØ º¸½Ê½Ã¿À: - /ignore - - 6. ãÀº ³»¿ëÀÌ °­Á¶(HIGHLIGHT)µÈ °ÍÀ» ¾ø¾Ö·Á¸é, ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù: - :nohlsearch -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 6 ¿ä¾à - - - 1. o ¸¦ ÀÔ·ÂÇϸé Ä¿¼­ *¾Æ·¡¿¡* ÇÑ ÁÙÀÌ ¿­¸®¸ç, Ä¿¼­´Â ÆíÁý ¸ðµå·Î - ¿­¸° ÁÙ À§¿¡ À§Ä¡ÇÏ°Ô µË´Ï´Ù. - ´ë¹®ÀÚ O ¸¦ ÀÔ·ÂÇϸé Ä¿¼­°¡ ÀÖ´Â ÁÙÀÇ *À§·Î* »õ ÁÙÀ» ¿­°Ô µË´Ï´Ù. - - 2. a ¸¦ ÀÔ·ÂÇϸé Ä¿¼­ *´ÙÀ½¿¡* ±ÛÀ» ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. - ´ë¹®ÀÚ A ¸¦ ÀÔ·ÂÇϸé ÀÚµ¿À¸·Î ±× ÁÙÀÇ ³¡¿¡ ±ÛÀÚ¸¦ Ãß°¡ÇÏ°Ô µË´Ï´Ù. - - 3. ´ë¹®ÀÚ R À» ÀÔ·ÂÇÏ¸é ¸¦ ´­·¯¼­ ³ª°¡±â Àü±îÁö ¹Ù²Ù±â ¸ðµå°¡ µË´Ï´Ù. - - 4. ":set xxx" ¸¦ Çϸé "xxx" ¿É¼ÇÀÌ ¼³Á¤µË´Ï´Ù. - - - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 7: ¿Â¶óÀÎ µµ¿ò¸» ¸í·É - - - ** ¿Â¶óÀÎ µµ¿ò¸» ½Ã½ºÅÛ »ç¿ëÇϱâ ** - - ºöÀº Æø ³ÐÀº ¿Â¶óÀÎ µµ¿ò¸» ½Ã½ºÅÛÀ» Á¦°øÇÕ´Ï´Ù. µµ¿ò¸»À» º¸·Á¸é, - ´ÙÀ½ ¼¼°¡Áö Áß Çϳª¸¦ ½ÃµµÇغ¸½Ê½Ã¿À: - - Å°¸¦ ´©¸¥´Ù. (Å°°¡ ÀÖ´Â °æ¿ì) - - Å°¸¦ ´©¸¥´Ù. (Å°°¡ ÀÖ´Â °æ¿ì) - - :help ¶ó°í ÀÔ·ÂÇÑ´Ù. - - µµ¿ò¸» âÀ» ´ÝÀ¸·Á¸é :q ¶ó°í ÀÔ·ÂÇϽʽÿÀ. - - ":help" ¶ó´Â ¸í·É¿¡ ÀÎÀÚ¸¦ ÁÖ¸é ¾î¶² ÁÖÁ¦¿¡ °üÇÑ µµ¿ò¸»À» ãÀ» ¼ö ÀÖ½À´Ï´Ù. - ´ÙÀ½ ¸í·ÉÀ» ³»·Á º¸½Ê½Ã¿À. ( Å°¸¦ ´©¸£´Â °ÍÀ» ÀØÁö ¸¶½Ê½Ã¿À.) - - :help w - :help c_ l 키는 오른쪽에 있으며, 오른쪽으로 - j 움직입니다. - v j 키는 아래방향 화살표처럼 생겼습니다. - - 1. 익숙해질 때까지 커서를 스크린 상에서 움직여 보십시오. - - 2. 아래 방향키 (j)를 반복입력이 될 때까지 누르고 계십시오. ----> 이제 다음 lesson으로 가는 방법을 알게 되었습니다. - - 3. 아래 방향키를 이용하여, Lesson 1.2 로 가십시오. - -참고: 원하지 않는 무언가가 입력이 되었다면, 를 눌러서, 명령 모드로 - 돌아가십시오. 그 후에 원하는 명령을 다시 입력하십시오. - -참고: 커서키 또한 작동할 것입니다. 하지만 hjkl에 익숙해지면, 커서키보다 - 훨씬 빠르게 이동할 수 있을 것입니다. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.2: 빔을 시작하고 끝내기 - - - !! 주의: 아래 있는 단계를 실행하기 전에, 이 lesson 전체를 읽으십시오!! - - 1. 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다. - - 2. 다음과 같이 입력합니다: :q! - ----> 이렇게 하면, 바뀐 내용을 *저장하지 않고* 편집기를 빠져나갑니다. - 저장한 후 빠져나가려면 다음과 같이 입력합니다: - :wq - - 3. 쉘 프롬프트가 보인다면, 다시 길잡이로 돌아오기 위해 다음과 같이 - 입력합니다. - vimtutor - 또는 다음과 같을 수도 있습니다. - vim tutor.ko - ----> 'vim' 은 빔 편집기로 들어가는 것을 뜻하며, 'tutor.ko'는 편집하려는 - 파일을 뜻합니다. - - 4. 위에서 이야기한 단계를 기억하였으며, 확신이 서면, 1에서 3까지를 - 수행하여 편집기를 나갔다가 다시 들어와보십시오. 그 후 커서를 아래로 - 움직여 Lesson 1.3 으로 가십시오. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.3: 텍스트 편집 - 지우기 - - -** 명령 모드에서 x 를 누르면 커서가 위치한 곳의 글자를 지울 수 있습니다. ** - - 1. ----> 로 표시된 곳으로 커서를 옮겨보십시오. - - 2. 오타를 수정하기 위해, 커서를 지울 글자 위로 움직여 보십시오. - - 3. x 키를 눌러서 지워야할 글자를 지우십시오. - - 4. 2에서 4까지를 반복하여 문장이 올바르게 되도록 하여 보십시오. - ----> The ccow jumpedd ovverr thhe mooon. - - 5. 문장이 정확해졌다면, Lesson 1.4로 가십시오. - -주의: 이 길잡이를 보면서 외우려고 하지말고, 직접 사용해보면서 익히길 - 바랍니다. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.4: 텍스트 편집 - 삽입 (INSERTION) - - - ** 명령 모드에서 i 를 누르면 텍스트를 입력할 수 있습니다. ** - - 1. 커서를 첫번째 ---> 로 표시된 줄로 움직입니다. - - 2. 첫번째 줄을 두번째 줄과 똑같이 만들것입니다. 텍스트가 들어가야할 - 곳 다음부터 첫번째 글자 위에 커서를 옮겨 놓습니다. - - 3. i 키를 누른 후, 필요한 내용을 입력합니다. - - 4. 수정한 후에는 를 눌러서 명령 모드로 돌아갑니다. - 문장을 올바르게 만들기 위해 2에서 4의 과정을 반복합니다. - ----> There is text misng this . ----> There is some text missing from this line. - - 5. 텍스트를 삽입하는 데에 익숙해졌다면, 요약을 봐주십시오. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 1 요약 - - - 1. 커서를 움직일 때에는 화살표 키나 hjkl 키를 이용합니다. - h (왼쪽) j (아래) k (위) l (오른쪽) - - 2. 쉘 프롬프트에서 빔을 시작하려면 vim FILENAME - - 3. 수정한 내용을 무시한 채로 빔에서 빠져나가려면 :q! - 저장한 후 빔에서 빠져나가려면 :wq - - 4. 명령 모드에서 커서가 위치한 곳의 글자를 지우려면 x 를 입력합니다. - - 5. 명령 모드에서 커서가 위치한 곳에 텍스트를 삽입하려면 - i 를 누른 후 텍스트를 입력하고 를 누릅니다. - -참고: 는 명령 모드로 돌아가는 데 쓰며, 원치 않는 명령이나 완전히 입력되지 - 않은 명령을 취소하는 데에도 씁니다. - -그럼 Lesson 2를 시작합시다. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.1: 삭제(DELETION) 명령 - - - ** 한 단어를 끝까지 지우려면 dw 라고 치면 됩니다. ** - - 1. 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다. - - 2. 아래에 ---> 로 표시된 줄 까지 커서를 옮깁니다. - - 3. 지워야할 단어의 처음으로 커서를 옮깁니다. - - 4. dw 라고 쳐서 그 단어를 지웁니다. - - 주의: 위에서 말한대로 하면 화면의 마지막 줄에 dw 라는 글자가 표시됩니다. - 잘못 쳤다면, 를 눌러서 다시 시작하십시오. - ----> There are a some words fun that don't belong paper in this sentence. - - 5. 3, 4번 과정을 다시 하여 문장을 정확하게 만든 뒤 Lesson 2.2로 가십시오. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.2: 다른 삭제 명령 - - ** d$ 라고 치면 그 줄 끝까지 지워집니다. ** - - 1. 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다. - - 2. 아래에 ---> 로 표시된 줄 까지 커서를 옮깁니다. - - 3. 올바른 줄의 끝으로 커서를 옮깁니다. (첫번째로 나오는 . 다음입니다.) - - 4. d$ 라고 쳐서 줄 끝까지 지웁니다. - ----> Somebody typed the end of this line twice. end of this line twice. - - - 5. 어떤 일이 일어났는지 이해하기 위해 Lesson 2.3 으로 가십시오. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: 명령과 적용 대상에 대해 - - - 삭제 명령 d의 형식은 다음과 같습니다. - - [횟수] d 대상 또는 d [횟수] 대상 - 여기서 - 횟수 - 명령을 몇 번 수행할 지 (옵션, 기본값=1). - d - 지우는 명령 - 대상 - 아래에 제시된 대상에 대해 명령을 수행 - - 적용 가능한 대상의 종류: - w - 커서에서 그 단어의 끝까지 (공백 포함.) - e - 커서에서 그 단어의 끝까지 (공백을 포함하지 않음.) - $ - 커서에서 그 줄의 끝까지 - -참고: 호기심이 있다면, 명령 모드에서 명령 없이 대상을 입력해보십시오. - 위에서 이야기한 대상의 목록에 따라 커서가 움직이게 됩니다. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.4: '명령-대상' 에 대한 예외 - - - ** dd 라고 치면 줄 전체를 지웁니다. ** - - 줄 전체를 지우는 일이 잦기 때문에, Vi를 디자인 한 사람들은, 간단히 d를 - 두번 연달아 치면 한 줄을 지울 수 있도록 하였습니다. - - 1. 커서를 아래 나온 단락의 두번째 줄로 가져가십시오. - 2. dd 를 입력하여 그 줄을 지우십시오. - 3. 그런 다음 네번째 줄로 가십시오. - 4. 2dd 라고 입력하여 두줄을 지웁니다. ( 횟수-명령-대상을 기억하세요. ) - - 1) Roses are red, - 2) Mud is fun, - 3) Violets are blue, - 4) I have a car, - 5) Clocks tell time, - 6) Sugar is sweet - 7) And so are you. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.5: 취소(UNDO) 명령 - - - ** u 를 누르면 마지막 명령이 취소되며, U 는 줄 전체를 수정합니다. ** - - 1. 커서를 ---> 로 표시된 줄로 이동한 후 첫번째 잘못된 부분 위로 옮깁니다. - 2. x 를 입력하여 첫번째 잘못된 글자를 지웁니다. - 3. 그럼 이제 u 를 입력하여 마지막으로 수행된 명령을 취소합니다. - 4. 이번에는 x 명령을 이용하여 그 줄의 모든 에러를 수정해봅시다. - 5. 대문자 U 를 눌러서 그 줄을 원래 상태로 돌려놓아 보십시오. - 6. 이번에는 u 를 몇 번 눌러서 U 와 이전 명령을 취소해봅시다. - 7. CTRL-R (CTRL 키를 누른 상태에서 R을 누르는 것) 을 몇 번 눌러서 - 명령을 다시 실행해봅시다. (취소한 것을 취소함.) - ----> Fiix the errors oon thhis line and reeplace them witth undo. - - 8. 이 명령은 매우 유용합니다. 그럼 Lesson 2 요약으로 넘어가도록 합시다. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 2 요약 - - - 1. 커서가 위치한 곳부터 단어의 끝까지 지우려면: dw - - 2. 커서가 위치한 곳부터 줄 끝까지 지우려면: d$ - - 3. 줄 전체를 지우려면: dd - - 4. 명령 모드에서 내리는 명령의 형식은 다음과 같습니다: - - [횟수] 명령 대상 또는 명령 [횟수] 대상 - 여기서: - 횟수 - 그 명령을 몇 번 반복할 것인가 - 명령 - 어떤 명령을 내릴 것인가 ( 예를 들어, 삭제인 경우는 d ) - 대상 - 명령이 동작할 대상, 예를 들어 w (단어), $ (줄의 끝) 등. - - 5. 이전 행동을 취소하려면: u (소문자 u) - 한 줄에서 수정한 것을 모두 취소하려면: U (대문자 U) - 취소한 것을 다시 실행하려면: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.1: 붙이기(PUT) 명령 - - - ** p 를 입력하여 마지막으로 지운 내용을 커서 뒤에 붙입니다. ** - - 1. 아래에 있는 문단의 첫 줄로 커서를 움직이십시오. - - 2. dd 를 입력하여 그 줄을 지워서 빔의 버퍼에 저장합니다. - - 3. 아까 지운 줄이 가야할 위치의 *윗줄로* 커서를 옮깁니다. - - 4. 명령 모드에서, p 를 입력하여 그 줄을 제대로 된 자리로 옮깁니다. - - 5. 2에서 4를 반복하여 모든 줄의 순서를 바로 잡으십시오. - - d) Can you learn too? - b) Violets are blue, - c) Intelligence is learned, - a) Roses are red, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.2: 치환(REPLACE) 명령 - - - ** 커서 아래의 글자 하나를 바꾸려면, r 을 누른 후 바꿀 글자를 입력합니다. ** - - 1. 커서를 ---> 로 표시된 첫 줄로 옮깁니다. - - 2. 커서를 잘못된 첫 부분으로 옮깁니다. - - 3. r 을 누른 후, 잘못된 부분을 고쳐 쓸 글자를 입력합니다. - - 4. 2에서 3의 과정을 반복하여, 첫 줄의 오류를 수정하십시오. - ----> Whan this lime was tuoed in, someone presswd some wrojg keys! ----> When this line was typed in, someone pressed some wrong keys! - - 5. Lesson 3.2 로 이동합시다. - -주의: 외우지 말고, 직접 해보면서 익혀야 한다는 것을 잊지 마십시오. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.3: 변환(CHANGE) 명령 - - - ** 한 단어의 일부나 전체를 바꾸려면, cw 를 치십시오. ** - - 1. 커서를 ---> 로 표시된 첫줄로 옮깁니다. - - 2. 커서를 lubw 에서 u 위에 올려놓습니다. - - 3. cw 라고 명령한 후 단어를 정확하게 수정합니다. (이 경우, 'ine' 를 칩니다.) - - 4. 를 누른 후 다음 에러로 갑니다 (수정되어야할 첫 글자로 갑니다.) - - 5. 3에서 4의 과정을 반복하여 첫번째 문장을 두번째 문장과 같도록 만듭니다. - ----> This lubw has a few wptfd that mrrf changing usf the change command. ----> This line has a few words that need changing using the change command. - -cw 는 단어를 치환하는 것 뿐만 아니라, 내용을 삽입할 수 있도록 한다는 것에 -주의합시다. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.4: c 를 이용한 다른 변환 명령 - - - ** 변환 명령은 삭제할 때 이용한 대상에 대해 적용할 수 있습니다. ** - - 1. 변환 명령은 삭제와 동일한 방식으로 동작합니다. 형식은 다음과 같습니다: - - [횟수] c 대상 또는 c [횟수] 대상 - - 2. 적용 가능한 대상 역시 같습니다. w (단어), $ (줄의 끝) 등이 있습니다. - - 3. ---> 로 표시된 첫줄로 이동합니다. - - 4. 첫 에러 위로 커서를 옮깁니다. - - 5. c$ 를 입력하여, 그 줄의 나머지가 두번째 줄처럼 되도록 수정한 후 를 - 누르십시오. - ----> The end of this line needs some help to make it like the second. ----> The end of this line needs to be corrected using the c$ command. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 3 요약 - - - 1. 이미 지운 내용을 되돌리려면, p 를 누르십시오. 이 명령은 커서 *다음에* - 지워진 내용을 붙입니다(PUT). (한 줄을 지운 경우에는 커서 다음 줄에 - 지워진 내용이 붙습니다.) - - 2. 커서 아래의 글자를 치환하려면(REPLACE), r 을 누른 후 원래 글자 대신 - 바꾸어 넣을 글자를 입력합니다. - - 3. 변환 명령(CHANGE)은 커서에서 부터 지정한 대상의 끝까지 바꿀 수 있는 - 명령입니다. 예를 들어, 커서 위치에서 단어의 끝까지 바꾸려면, cw 를 - 입력하면 되며, c$ 는 줄 끝까지 바꾸는 데 쓰입니다. - - 4. 변환 명령의 형식은 다음과 같습니다: - - [횟수] c 대상 또는 c [횟수] 대상 - -계속해서 다음 Lesson 을 진행합시다. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.1: 위치와 파일의 상태 - - - ** CTRL-g 를 누르면 파일 내에서의 현재 위치와 파일의 상태를 볼 수 있습니다. - SHIFT-G 를 누르면 파일 내의 줄로 이동합니다. ** - - 주의: 아래의 단계를 따라하기 전에, 이 Lesson 전체를 먼저 읽으십시오. - - 1. CTRL 키를 누른 상태에서 g 를 누릅니다. 파일 이름과 현재 위치한 줄이 - 표시된 상태줄이 화면 아래에 표시될 것입니다. 3번째 단계를 위해 그 - 줄 번호를 기억하고 계십시오. - - 2. SHIFT-G 를 누르면 파일의 마지막으로 이동합니다. - - 3. 아까 기억했던 줄 번호를 입력한 후 SHIFT-G 를 누르십시오. 이렇게 하면 - 처음에 CTRL-g 를 눌렀던 장소로 되돌아가게 될 것입니다. - (번호를 입력할 때, 이것은 화면에 표시되지 않습니다.) - - 4. 자신이 생겼다면, 1에서 3까지를 실행해보십시오. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.2: 찾기 명령 - - - ** / 를 누른 후 검색할 문구를 입력하십시오. ** - - 1. 명령 모드에서 / 를 입력하십시오. : 명령에서와 마찬가지로, 화면 아래에 - / 와 커서가 표시될 것입니다. - - 2. 'errroor' 라고 친 후 를 치십시오. 이 단어를 찾으려고 합니다. - - 3. 같은 문구를 다시 찾으려면, 간단히 n 을 입력하십시오. - 같은 문구를 반대 방향으로 찾으려면, Shift-N 을 입력하십시오. - - 4. 문구를 역방향으로 찾으려면, / 대신 ? 를 이용하면 됩니다. - ----> "errroor" is not the way to spell error; errroor is an error. - -참고: 찾는 중에 파일의 끝에 다다르게 되면, 파일의 처음부터 다시 찾게 됩니다. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.3: 괄호의 짝 찾기 - - - ** % 를 눌러서 ), ], } 의 짝을 찾습니다. ** - - 1. 커서를 ---> 로 표시된 줄의 (, [, { 중 하나에 가져다 놓습니다. - - 2. % 를 입력해 봅시다. - - 3. 커서가 짝이 맞는 괄호로 이동할 것입니다. - - 4. % 를 입력하여, 이전 괄호로 되돌아 옵시다. - ----> This ( is a test line with ('s, ['s ] and {'s } in it. )) - -참고: 짝이 맞지 않는 괄호가 있는 프로그램을 디버깅할 때에 매우 유용합니다! - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.4: 에러를 수정하는 방법 - - - ** :s/old/new/g 하면 'old' 를 'new' 로 치환(SUBTITUTE)합니다. ** - - 1. 커서를 ---> 로 표시된 줄에 가져다 놓습니다. - - 2. :s/thee/the 를 입력한 후 를 칩니다. 이 명령은 그 줄에서 - 처음으로 발견된 것만 바꾼다는 것에 주의하십시오. - - 3. 이번에는 :s/thee/the/g 를 입력합니다. 이는 그 줄 전체(globally)를 - 치환한다는 것을 의미합니다. - ----> thee best time to see thee flowers is in thee spring. - - 4. 두 줄 사이의 모든 문자열에 대해 치환하려면 다음과 같이 합니다, - :#,#s/old/new/g #,# 는 두 줄의 줄번호를 뜻합니다. - :%s/old/new/g 파일 전체에서 발견된 모든 것을 치환하는 경우입니다. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 4 요약 - - - 1. CTRL-g 는 파일의 상태와 파일 내에서의 현재 위치를 표시합니다. - SHIFT-G 는 파일의 끝으로 이동합니다. 줄번호를 입력한 후 SHIFT-G를 - 입력하면, 그 줄로 이동합니다. - - 2. / 를 입력한 후 문구를 입력하면 그 문구를 아랫방향으로 찾습니다. - ? 를 입력한 후 문구를 입력하면 윗방향으로 찾습니다. - 검색 후, n 을 입력하면 같은 방향으로 다음 문구를 찾으며, - Shift-N 을 입력하면 반대 방향으로 찾습니다. - - 3. 커서가 (,),[,],{,} 위에 있을 때에 % 를 입력하면 상응하는 짝을 - 찾아갑니다. - - 4. 어떤 줄에 처음 등장하는 old를 new로 바꾸려면 :s/old/new - 한 줄에 등장하는 모든 old를 new로 바꾸려면 :s/old/new/g - 두 줄 #,# 사이에서 치환을 하려면 :#,#s/old/new/g - 파일 내의 모든 문구를 치환하려면 :%s/old/new/g - 바꿀 때마다 확인을 거치려면 'c'를 붙여서 :%s/old/new/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.1: 외부 명령 실행하는 방법 - - - ** :! 을 입력한 후 실행하려는 명령을 입력하십시오. ** - - 1. 친숙한 명령인 : 를 입력하면 커서가 화면 아래로 이동합니다. 명령을 - 입력할 수 있게 됩니다. - - 2. 이제 ! (느낌표) 를 입력하십시오. 이렇게 하면 외부 쉘 명령을 실행할 - 수 있습니다. - - 3. 시험삼아 ! 다음에 ls 를 입력한 후 를 쳐보십시오. 쉘 프롬프트 - 에서처럼 디렉토리의 목록이 출력될 것입니다. ls 가 동작하지 않는다면 - :!dir 을 시도해 보십시오. - -참고: 어떤 외부 명령도 이 방법으로 실행할 수 있습니다. - -참고: 모든 : 명령은 를 쳐야 마무리 됩니다. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.2: 보다 자세한 파일 저장 - - - ** 수정된 내용을 파일로 저장하려면, :w FILENAME 하십시오. ** - - 1. :!dir 또는 :!ls 를 입력하여 디렉토리의 리스트를 얻어옵니다. - 위의 명령 후 를 쳐야한다는 것은 이미 알고 있을 것입니다. - - 2. TEST 처럼 존재하지 않는 파일 이름을 하나 고르십시오. - - 3. 이제 :w TEST 라고 입력하십시오. (TEST는 당신이 선택한 파일 이름입니다.) - - 4. 이렇게 하면 빔 길잡이 파일 전체를 TEST라는 이름으로 저장합니다. - 확인하려면, :!dir 을 다시 입력하여, 디렉토리를 살펴보십시오. - -참고: 빔을 종료한 후, 빔을 다시 실행하여 TEST라는 파일을 열면, 그 파일은 - 저장했을 때와 완벽히 같은 복사본일 것입니다. - - 5. 이제 그 파일을 지웁시다. - (MS-DOS에서): !del TEST - (Unix에서): !rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.3: 선택적으로 저장하는 명령 - - - ** 파일의 일부를 저장하려면, :#,# w FILENAME 하십시오. ** - - 1. 다시 한번, :!dir 이나 !ls 를 입력하여 디렉토리의 목록을 받아온 후 - TEST 같은 적합한 이름을 선택합니다. - - 2. 커서를 이 페이지의 처음으로 옮긴 후, Ctrl-g 를 입력하여 그 줄의 줄번호를 - 알아냅니다. 이 번호를 기억하십시오! - - 3. 이제 이 페이지의 마지막으로 가서 Ctrl-g 를 다시 입력하십시오. 이 줄의 - 줄번호 또한 기억하십시오! - - 4. 어떤 섹션만 파일로 저장하려면, :#,# w TEST 를 입력하면 됩니다. 이 때 - #,# 는 아까 기억했던 시작과 끝 줄번호 입니다. TEST는 파일 이름입니다. - - 5. :!dir 을 이용하여 파일이 만들어졌는지 확인하십시오. 지우지는 마십시오. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.4: 파일 읽어들이기, 합치기 - - - ** 어떤 파일의 내용을 삽입하려면, :r FILENAME 하십시오 ** - - 1. :!dir 을 입력하여 아까 만든 TEST 파일이 그대로 있는지 확인하십시오. - - 2. 커서를 이 페이지의 처음으로 움직이십시오. - -주의: 3번째 단계를 실행하면, Lesson 5.3 을 보게 될 것입니다. 그렇게 되면 - 이 lesson으로 다시 내려오십시오. - - 3. 이제 TEST 파일을 읽어들입시다. :r TEST 명령을 사용하십시오. TEST 는 - 파일의 이름입니다. - -참고: 읽어들인 파일은 커서가 위치한 지점에서부터 놓이게 됩니다. - - 4. 파일이 읽어들여진 것을 확인하기 위해, 뒤로 이동해서 기존 버전과 파일에서 - 읽어들인 버전, 이렇게 Lesson 5.3 이 두번 반복되었음을 확인하십시오. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 5 요약 - - - 1. :!command 를 이용하여 외부 명령을 실행합니다. - - 유용한 예: - (MS-DOS) (Unix) - :!dir :!ls - 디렉토리의 목록을 보여준다. - :!del FILENAME :!rm FILENAME - FILENAME이라는 파일을 지운다. - - 2. :w FILENAME 하면 현재 빔에서 사용하는 파일을 FILENAME이라는 이름으로 - 디스크에 저장합니다. - - 3. :#,#w FILENAME 하면 #부터 #까지의 줄을 FILENAME이라는 파일로 저장합니다. - - 4. :r FILENAME 은 디스크에서 FILENAME이라는 파일을 불러들여서 커서 위치 - 뒤에 현재 파일을 집어넣습니다. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.1: 새 줄 열기(OPEN) 명령 - - - ** o 를 누르면 커서 아래에 줄을 만들고 편집 모드가 됩니다. ** - - 1. 아래에 ---> 로 표시된 줄로 커서를 옮기십시오. - - 2. o (소문자)를 쳐서 커서 *아래에* 줄을 하나 여십시오. 편집 모드가 됩니다. - Insert mode. - - 3. ---> 로 표시된 줄을 복사한 후 를 눌러서 편집 모드에서 나오십시오. - ----> After typing o the cursor is placed on the open line in Insert mode. - - 4. 커서 *위에* 줄을 하나 만드려면, 소문자 o 대신 대문자 O 를 치면 됩니다. - 아래 있는 줄에 대해 이 명령을 내려보십시오. -Open up a line above this by typing Shift-O while the cursor is on this line. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.2: 추가(APPEND) 명령 - - - ** a 를 누르면 커서 *다음에* 글을 입력할 수 있습니다. ** - - 1. 커서를 ---> 로 표시된 첫번째 줄의 끝으로 옮깁니다. 명령 모드에서 - $ 를 이용하십시오. - - 2. 소문자 a 를 커서 아래 글자 *다음*에 글을 추가할 수 있습니다. - (대문자 A는 그 줄의 끝에 추가합니다.) - -참고: 그렇게 하시면 고작 줄의 끝에 추가를 하기 위해 i를 누르고, 커서 아래에 - 있던 글자를 반복하고, 글을 끼워넣고, 를 눌러 명령 모드로 돌아와서, - 커서를 오른쪽으로 옮기고 마지막으로 x까지 눌러야 하는 번거로움을 피하실 - 수 있습니다. - - 3. 이제 첫 줄을 완성하십시오. 추가 명령은 텍스트가 입력되는 위치 외에는 - 편집 모드와 완전히 같다는 것을 유념하십시오. - ----> This line will allow you to practice ----> This line will allow you to practice appending text to the end of a line. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.3: 치환(REPLACE) 의 다른 버전 - - - ** 대문자 R 을 입력하면 하나 이상의 글자를 바꿀 수 있습니다. ** - - 1. 커서를 ---> 로 표시된 첫번째 줄로 옮기십시오. - - 2. 커서를 ---> 로 표시된 두번째 줄과 다른 첫번째 단어 위로 옮기십시오. - ('last' 입니다.) - - 3. R 을 입력한 후 첫번째 줄의 예전 텍스트 위에 새로운 글을 입력하여 - 나머지 내용이 두번째 줄과 같아지도록 바꿉시다. - ----> To make the first line the same as the last on this page use the keys. ----> To make the first line the same as the second, type R and the new text. - - 4. 를 눌러서 나가면, 바뀌지 않은 텍스트는 그대로 남게 됩니다. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.4: 옵션 설정(SET) - - ** 찾기나 바꾸기에서 대소문자 구분을 없애기 위해 옵션을 설정합니다 ** - - 1. 다음을 입력하여 'ignore' 를 찾으십시오: - /ignore - n 키를 이용하여 여러번 반복하십시오. - - 2. 'ic' (대소문자 구별 안함, Ignore case) 옵션을 설정하십시오: - :set ic - - 3. n 키를 눌러서 'ignore' 를 다시 찾아보십시오. - n 키를 계속 눌러서 여러번 찾으십시오. - - 4. 'hlsearch' 와 'incsearch' 옵션을 설정합시다. - :set hls is - - 5. 찾기 명령을 다시 입력하여, 어떤 일이 일어나는지 확인해 보십시오: - /ignore - - 6. 찾은 내용이 강조(HIGHLIGHT)된 것을 없애려면, 다음과 같이 입력합니다: - :nohlsearch -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 6 요약 - - - 1. o 를 입력하면 커서 *아래에* 한 줄이 열리며, 커서는 편집 모드로 - 열린 줄 위에 위치하게 됩니다. - 대문자 O 를 입력하면 커서가 있는 줄의 *위로* 새 줄을 열게 됩니다. - - 2. a 를 입력하면 커서 *다음에* 글을 입력할 수 있습니다. - 대문자 A 를 입력하면 자동으로 그 줄의 끝에 글자를 추가하게 됩니다. - - 3. 대문자 R 을 입력하면 를 눌러서 나가기 전까지 바꾸기 모드가 됩니다. - - 4. ":set xxx" 를 하면 "xxx" 옵션이 설정됩니다. - - - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LESSON 7: 온라인 도움말 명령 - - - ** 온라인 도움말 시스템 사용하기 ** - - 빔은 폭 넓은 온라인 도움말 시스템을 제공합니다. 도움말을 보려면, - 다음 세가지 중 하나를 시도해보십시오: - - 키를 누른다. (키가 있는 경우) - - 키를 누른다. (키가 있는 경우) - - :help 라고 입력한다. - - 도움말 창을 닫으려면 :q 라고 입력하십시오. - - ":help" 라는 명령에 인자를 주면 어떤 주제에 관한 도움말을 찾을 수 있습니다. - 다음 명령을 내려 보십시오. ( 키를 누르는 것을 잊지 마십시오.) - - :help w - :help c_ l-tasten er til høyre og flytter til høyre. - j j-tasten ser ut som en pil som peker nedover. - v - 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. - - 2. Hold inne nedovertasten (j) til den repeterer. - Nå vet du hvordan du beveger deg til neste leksjon. - - 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. - -Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til - normalmodus. Skriv deretter kommandoen du ønsket på nytt. - -Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til - å bevege markøren mye raskere når du er blitt vant til det. Helt sant! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.2: AVSLUTTE VIM - - - !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! - - 1. Trykk -tasten (for å forsikre deg om at du er i normalmodus). - - 2. Skriv: :q! . - Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. - - 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne - innføringen. Den er: vimtutor - - 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å - avslutte og starte editoren på nytt. - -MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen - få leksjoner vil du lære hvordan du lagrer forandringene til en fil. - - 5. Flytt markøren ned til leksjon 1.3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.3: REDIGERING AV TEKST -- SLETTING - - - ** Trykk x for å slette tegnet under markøren. ** - - 1. Flytt markøren til den første linjen merket med --->. - - 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som - skal slettes. - - 3. Trykk tasten x for å slette det uønskede tegnet. - - 4. Repeter punkt 2 til 4 til setningen er lik den som er under. - ----> Hessstennnn brrråsnudddde ii gaaata. ----> Hesten bråsnudde i gata. - - 5. Nå som linjen er korrekt, gå til leksjon 1.4. - -MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men - bruk dem helt til de sitter. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING - - - ** Trykk i for å sette inn tekst. ** - - 1. Flytt markøren til den første linjen som er merket med --->. - - 2. For å gjøre den første linjen lik den andre, flytt markøren til den står - på tegnet ETTER posisjonen der teksten skal settes inn. - - 3. Trykk i og skriv inn teksten som mangler. - - 4. Etterhvert som hver feil er fikset, trykk for å returnere til - normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. - ----> Det er tkst som mnglr . ----> Det er ganske mye tekst som mangler her. - - 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen - nedenfor. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL - - - ** Trykk A for å legge til tekst. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. - Det har ikke noe å si hvor markøren er plassert på den linjen. - - 2. Trykk A og skriv inn det som skal legges til. - - 3. Når teksten er lagt til, trykk for å returnere til normalmodusen. - - 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og - 3 for å reparere denne setningen. - ----> Det mangler noe tekst p - Det mangler noe tekst på denne linjen. ----> Det mangler også litt tek - Det mangler også litt tekst på denne linjen. - - 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.6: REDIGERE EN FIL - - - ** Bruk :wq for å lagre en fil og avslutte. ** - - !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! - - 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! - - 2. Skriv denne kommandoen på kommandolinja: vim tutor - «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila - som du vil redigere. Bruk en fil som kan forandres. - - 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. - - 4. Lagre filen med forandringene og avslutt Vim med: :wq - - 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. - - 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 1 - - - 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. - h (venstre) j (ned) k (opp) l (høyre) - - 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN - - 3. For å avslutte Vim, skriv: :q! for å forkaste endringer. - ELLER skriv: :wq for å lagre forandringene. - - 4. For å slette tegnet under markøren, trykk: x - - 5. For å sette inn eller legge til tekst, trykk: - i skriv innsatt tekst sett inn før markøren - A skriv tillagt tekst legg til på slutten av linjen - -MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket - og delvis fullført kommando. - - Nå kan du gå videre til leksjon 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.1: SLETTEKOMMANDOER - - - ** Trykk dw for å slette et ord. ** - - 1. Trykk for å være sikker på at du er i normalmodus. - - 2. Flytt markøren til den første linjen nedenfor merket --->. - - 3. Flytt markøren til begynnelsen av ordet som skal slettes. - - 4. Trykk dw og ordet vil forsvinne. - -MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når - du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet - tegn enn d har du skrevet noe feil; trykk og start på nytt. - ----> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. ----> Det er tre ord som ikke hører hjemme i denne setningen. - - 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå - deretter til leksjon 2.2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.2: FLERE SLETTEKOMMANDOER - - - ** Trykk d$ for å slette til slutten av linjen. ** - - 1. Trykk for å være sikker på at du er i normalmodus. - - 2. Flytt markøren til linjen nedenfor merket --->. - - 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). - - 4. Trykk d$ for å slette alt til slutten av linjen. - ----> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. - - 5. Gå til leksjon 2.3 for å forstå hva som skjer. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.3: OM OPERATORER OG BEVEGELSER - - - Mange kommandoer som forandrer teksten er laget ut i fra en operator og en - bevegelse. Formatet for en slettekommando med sletteoperatoren d er: - - d bevegelse - - Der: - d - er sletteoperatoren. - bevegelse - er hva operatoren vil opere på (listet nedenfor). - - En kort liste med bevegelser: - w - til starten av det neste ordet, UNNTATT det første tegnet. - e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. - $ - til slutten av linjen, INKLUDERT det siste tegnet. - - Ved å skrive de vil altså alt fra markøren til slutten av ordet bli - slettet. - -MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil - markøren flyttes som spesifisert. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE - - - ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** - - 1. Flytt markøren til starten av linjen markert ---> nedenfor. - - 2. Skriv 2w for å flytte markøren to ord framover. - - 3. Skriv 3e for å flytte markøren framover til slutten av det tredje - ordet. - - 4. Skriv 0 (null) for å flytte til starten av linjen. - - 5. Repeter steg 2 og 3 med forskjellige tall. - ----> Dette er en linje med noen ord som du kan bevege deg rundt på. - - 6. Gå videre til leksjon 2.5. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER - - - ** Et tall sammen med en operator repeterer den så mange ganger. ** - - I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du - inn antall før bevegelsen for å slette mer: - d nummer bevegelse - - 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert - med --->. - - 2. Skriv 2dw for å slette de to ordene med store bokstaver. - - 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende - ordene som har store bokstaver. - ----> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. - -MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å - bruke bevegelsen uten en operator. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.6: OPERERE PÅ LINJER - - - ** Trykk dd for å slette en hel linje. ** - - På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at - det vil være lettere å rett og slett trykke to d-er for å slette en linje. - - 1. Flytt markøren til den andre linjen i verset nedenfor. - 2. Trykk dd å slette linjen. - 3. Flytt deretter til den fjerde linjen. - 4. Trykk 2dd for å slette to linjer. - ----> 1) Roser er røde, ----> 2) Gjørme er gøy, ----> 3) Fioler er blå, ----> 4) Jeg har en bil, ----> 5) Klokker viser tiden, ----> 6) Druer er søte ----> 7) Og du er likeså. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.7: ANGRE-KOMMANDOEN - - - ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** - - 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den - første feilen. - 2. Trykk x for å slette det første uønskede tegnet. - 3. Trykk så u for å angre den siste utførte kommandoen. - 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . - 5. Trykk nå en stor U for å sette linjen tilbake til det den var - originalt. - 6. Trykk u noen ganger for å angre U og foregående kommandoer. - 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen - ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). - ----> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. - - 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av - leksjon 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 2 - - - 1. For å slette fra markøren fram til det neste ordet, trykk: dw - 2. For å slette fra markøren til slutten av en linje, trykk: d$ - 3. For å slette en hel linje, trykk: dd - - 4. For å repetere en bevegelse, sett et nummer foran: 2w - 5. Formatet for en forandringskommando er: - operator [nummer] bevegelse - der: - operator - hva som skal gjøres, f.eks. d for å slette - [nummer] - et valgfritt antall for å repetere bevegelsen - bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), - $ (til slutten av linjen) og så videre. - - 6. For å gå til starten av en linje, bruk en null: 0 - - 7. For å angre tidligere endringer, skriv: u (liten u) - For å angre alle forandringer på en linje, skriv: U (stor U) - For å omgjøre angringen, trykk: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.1: «LIM INN»-KOMMANDOEN - - - ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** - - 1. Flytt markøren til den første linjen med ---> nedenfor. - - 2. Trykk dd for å slette linjen og lagre den i et Vim-register. - - 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. - - 4. Trykk p for å legge linjen under markøren. - - 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. - ----> d) Kan du også lære? ----> b) Fioler er blå, ----> c) Intelligens må læres, ----> a) Roser er røde, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.2: «ERSTATT»-KOMMANDOEN - - - ** Trykk rx for å erstatte tegnet under markøren med x. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. - - 2. Flytt markøren så den står oppå den første feilen. - - 3. Trykk r og deretter tegnet som skal være der. - - 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. - ----> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! ----> Da denne linjen ble skrevet, var det noen som trykket feile taster! - - 5. Gå videre til leksjon 3.2. - -MERK: Husk at du bør lære ved å BRUKE, ikke pugge. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.3: «FORANDRE»-OPERATOREN - - - ** For å forandre til slutten av et ord, trykk ce . ** - - 1. Flytt markøren til den første linjen nedenfor som er merket --->. - - 2. Plasser markøren på u i «lubjwr». - - 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). - - 4. Trykk og gå til det neste tegnet som skal forandres. - - 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. - ----> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. ----> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. - -Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c - - - ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** - - 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: - - c [nummer] bevegelse - - 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en - linje). - - 3. Gå til den første linjen nedenfor som er merket --->. - - 4. Flytt markøren til den første feilen. - - 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . - ----> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. ----> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. - -MERK: Du kan bruke slettetasten for å rette feil mens du skriver. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 3 - - - 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette - limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet - vil den bli limt inn på linjen under markøren). - - 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som - du vil ha der. - - 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen - tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten - av ordet, c$ for å forandre til slutten av linjen. - - 4. Formatet for «forandre» er: - - c [nummer] bevegelse - -Nå kan du gå til neste leksjon. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS - - ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. - Trykk G for å gå til en spesifikk linje i filen. ** - - Merk: Les hele leksjonen før du utfører noen av punktene! - - 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding - vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i - filen. Husk linjenummeret for bruk i steg 3. - -Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette - skjer når «ruler»-valget er satt (forklart i leksjon 6). - - 2. Trykk G for å gå til bunnen av filen. - Skriv gg for å gå til begynnelsen av filen. - - 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg - tilbake til linjen du var på da du først trykket CTRL-G. - - 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.2: SØKEKOMMANDOEN - - ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** - - 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og - markøren kommer til syne på bunnen av skjermen i likhet med - «:»-kommandoene. - - 2. Skriv «feeeiil» og trykk . Dette er teksten du vil lete etter. - - 3. For å finne neste forekomst av søkestrengen, trykk n . - For å lete etter samme søketeksten i motsatt retning, trykk N . - - 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . - - 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens - du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I - går framover. - ----> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. -Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt - hvis «wrapscan»-valget er resatt. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.3: FINN SAMSVARENDE PARENTESER - - - ** Trykk % for å finne en samsvarende ), ] eller } . ** - - 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. - - 2. Trykk % . - - 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. - - 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. - - 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. - ----> Dette ( er en testlinje med (, [ ] og { } i den )). - -Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert - antall parenteser! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.4: ERSTATT-KOMMANDOEN - - - ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** - - 1. Flytt markøren til linjen nedenfor som er merket med --->. - - 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare - forandrer den første forekomsten av «deen» på linjen. - - 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global - erstatning på linjen og erstatter alle forekomster av «deen» på linjen. - ----> deen som kan kaste deen tyngste steinen lengst er deen beste - - 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, - skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for - linjeområdet erstatningen skal gjøres. - Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. - Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og - deretter spørre om teksten skal erstattes eller - ikke. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 4 - - - 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. - G går til slutten av filen. - nummer G går til det linjenummeret. - gg går til den første linjen. - - 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. - Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. - Etter et søk kan du trykke n for å finne neste forekomst i den samme - retningen eller N for å lete i motsatt retning. - CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. - - 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den - som samsvarer. - - 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny - Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g - Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g - Erstatte alle forekomster i en fil: :%s/gammel/ny/g - For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO - - - ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** - - 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av - skjermen. Dette lar deg skrive en kommandolinjekommando. - - 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst - ekstern kommando. - - 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil - nå få en liste over filene i katalogen, akkurat som om du hadde kjørt - kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis - «ls» ikke virker. - -MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med - parametere. - -MERK: Alle «:»-kommandoer må avsluttes med . Fra dette punktet er det - ikke alltid vi nevner det. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.2: MER OM LAGRING AV FILER - - - ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** - - 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du - vet allerede at du må trykke etter dette. - - 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . - - 3. Skriv :w TEST (der TEST er filnavnet du velger). - - 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å - sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av - katalogen. - -Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», - ville filen vært en eksakt kopi av innføringen da du lagret den. - - 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende - operativsystem, eller :!del TEST hvis du bruker MS-DOS. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES - - - ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** - - 1. Flytt markøren til denne linjen. - - 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke - til at teksten blir markert. - - 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. - - 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller - at du ser :'<,'>w TEST før du trykker Enter. - - 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller !ls - for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. - -MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for - å gjøre det valgte området større eller mindre. Deretter kan du bruke en - operator for å gjøre noe med teksten. For eksempel sletter d teksten. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER - - - ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** - - 1. Plasser markøren like over denne linjen. - -MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter - NED for å se denne leksjonen igjen. - - 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på - filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. - - 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av - leksjon 5.3, originalen og denne versjonen. - -MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls - leser utdataene av ls-kommandoen og legger dem nedenfor markøren. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 5 - - - 1. :!kommando utfører en ekstern kommandio. - - Noen nyttige eksempler er: - (MS-DOS) (Unix) - :!dir :!ls - List filene i katalogen. - :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. - - 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . - - 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen - FILNAVN. - - 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. - - 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor - markørposisjonen. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN - - - ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til - innsettingsmodus ** - - 1. Flytt markøren til linjen nedenfor merket --->. - - 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i - innsettingsmodus. - - 3. Skriv litt tekst og trykk for å gå ut av innsettingsmodusen. - ----> Etter at o er skrevet blir markøren plassert på den tomme linjen. - - 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O - istedenfor en liten o . Prøv dette på linjen nedenfor. - ----> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.2: «LEGG TIL»-KOMMANDOEN - - - ** Skriv a for å legge til tekst ETTER markøren. ** - - 1. Flytt markøren til starten av linjen merket ---> nedenfor. - - 2. Trykk e til markøren er på slutten av «li». - - 3. Trykk a (liten a) for å legge til tekst ETTER markøren. - - 4. Fullfør ordet sånn som på linjen nedenfor. Trykk for å gå ut av - innsettingsmodusen. - - 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og - 4. - ----> Denne li lar deg øve på å leg til tek på en linje. ----> Denne linjen lar deg øve på å legge til tekst på en linje. - -Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste - forskjellen er hvor tegnene blir satt inn. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ - - - ** Skriv en stor R for å erstatte mer enn ett tegn. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren - til begynnelsen av den første «xxx»-en. - - 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så - det erstatter xxx. - - 3. Trykk for å gå ut av erstatningsmodusen. Legg merke til at resten - av linjen forblir uforandret. - - 4. Repeter stegene for å erstatte den gjenværende xxx. - ----> Ved å legge 123 til xxx får vi xxx. ----> Ved å legge 123 til 456 får vi 579. - -MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives - erstatter et eksisterende tegn. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.4: KOPIERE OG LIME INN TEKST - - - ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** - - 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». - - 2. Gå inn i visuell modus med v og flytt markøren til like før «første». - - 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. - - 4. Flytt markøren til slutten av den neste linjen: j$ - - 5. Trykk p for å lime inn teksten. Trykk deretter: a andre . - - 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til - slutten av den neste linjen med j$ og legg inn teksten der med p . - ----> a) Dette er det første valget. - b) - -Merk: Du kan også bruke y som en operator; yw kopierer ett ord. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.5: SETT VALG - - - ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** - - 1. Let etter «ignore» ved å skrive: /ignore - Repeter flere ganger ved å trykke n . - - 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic - - 3. Søk etter «ignore» igjen ved å trykke n . - Legg merke til at både «Ignore» og «IGNORE» blir funnet. - - 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is - - 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore - - 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic - -Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch -Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk - \c i uttrykket: /ignore\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 6 - - 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i - innsettingsmodus. - Trykk O for å åpne en linje OVER markøren. - - 2. Skriv a for å sette inn tekst ETTER markøren. - Skriv A for å sette inn tekst etter slutten av linjen. - - 3. Kommandoen e går til slutten av et ord. - - 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. - - 5. Ved å trykke R går du inn i erstatningsmodus helt til trykkes. - - 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: - «ic» «ignorecase» ignorer store/små bokstaver under søk - «is» «incsearch» vis delvise treff for en søketekst - «hls» «hlsearch» uthev alle søketreff - - 7. Legg til «no» foran valget for å slå det av: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.1: FÅ HJELP - - - ** Bruk det innebygde hjelpesystemet. ** - - Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av - disse måtene: - - Trykk Hjelp-tasten (hvis du har en) - - Trykk F1-tasten (hvis du har en) - - Skriv :help - - Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. - Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet - Skriv :q for å lukke hjelpevinduet. - - Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til - «:help»-kommandoen. Prøv disse (ikke glem å trykke ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.2: LAG ET OPPSTARTSSKRIPT - - - ** Slå på funksjoner i Vim ** - - Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av - som standard. For å begynne å bruke flere funksjoner må du lage en - «vimrc»-fil. - - 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: - :e ~/.vimrc for Unix - :e $VIM/_vimrc for MS Windows - - 2. Les inn eksempelfilen for «vimrc»: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Lagre filen med: - :w - - Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til - alle dine foretrukne oppsett i denne «vimrc»-filen. - For mer informasjon, skriv :help vimrc-intro -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.3: FULLFØRING - - - ** Kommandolinjefullføring med CTRL-D og ** - - 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp - - 2. Se hvilke filer som er i katalogen: :!ls eller :!dir - - 3. Skriv starten på en kommando: :e - - 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med - «e». - - 5. Trykk og Vim vil fullføre kommandonavnet til «:edit». - - 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL - - 7. Trykk . Vim vil fullføre navnet (hvis det er unikt). - -MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og - . Det er spesielt nyttig for bruk sammen med :help . -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 7 - - - 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. - - 2. Skriv :help kommando for å få hjelp om kommando . - - 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. - - 4. Trykk :q for å lukke hjelpevinduet. - - 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. - - 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige - fullføringer. Trykk for å bruke en fullføring. - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Her slutter innføringen i Vim. Den var ment som en rask oversikt over - editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på - langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen - ved å skrive :help user-manual . - - For videre lesing og studier, kan denne boken anbefales: - «Vim - Vi Improved» av Steve Oualline - Utgiver: New Riders - Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for - nybegynnere. Inneholder mange eksempler og illustrasjoner. - Se http://iccf-holland.org/click5.html - - Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: - «Learning the Vi Editor» av Linda Lamb - Utgiver: O'Reilly & Associates Inc. - Det er en god bok for å få vite omtrent hva som helst om Vi. - Den sjette utgaven inneholder også informasjon om Vim. - - Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, - Colorado School of Mines med idéer av Charles Smith, Colorado State - University. E-mail: bware@mines.colorado.edu . - - Modifisert for Vim av Bram Moolenaar. - Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org - Id: tutor.no 406 2007-03-18 22:48:36Z sunny - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -vim: set ts=8 : diff --git a/share/vim/vim73/tutor/tutor.nb.utf-8 b/share/vim/vim73/tutor/tutor.nb.utf-8 deleted file mode 100644 index a7826b78..00000000 --- a/share/vim/vim73/tutor/tutor.nb.utf-8 +++ /dev/null @@ -1,973 +0,0 @@ -=============================================================================== -= V e l k o m m e n t i l i n n f ø r i n g e n i V i m -- Ver. 1.7 = -=============================================================================== - - Vim er en meget kraftig editor med mange kommandoer, alt for mange til å - kunne gå gjennom alle i en innføring som denne. Den er beregnet på å - sette deg inn i bruken av nok kommandoer så du vil være i stand til lett - å kunne bruke Vim som en editor til alle formål. - - Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30 - minutter, avhengig av hvor mye tid du bruker til eksperimentering. - - MERK: - Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne - filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er - dette allerede en kopi). - - Det er viktig å huske at denne innføringen er beregnet på læring gjennom - bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig. - Hvis du bare leser teksten, vil du glemme kommandoene! - - Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for - å flytte markøren helt til leksjon 1.1 fyller skjermen. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.1: FLYTTING AV MARKØREN - - - ** For å flytte markøren, trykk tastene h, j, k, l som vist. ** - ^ - k Tips: h-tasten er til venstre og flytter til venstre. - < h l > l-tasten er til høyre og flytter til høyre. - j j-tasten ser ut som en pil som peker nedover. - v - 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. - - 2. Hold inne nedovertasten (j) til den repeterer. - Nå vet du hvordan du beveger deg til neste leksjon. - - 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. - -Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til - normalmodus. Skriv deretter kommandoen du ønsket på nytt. - -Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til - å bevege markøren mye raskere når du er blitt vant til det. Helt sant! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.2: AVSLUTTE VIM - - - !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! - - 1. Trykk -tasten (for å forsikre deg om at du er i normalmodus). - - 2. Skriv: :q! . - Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. - - 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne - innføringen. Den er: vimtutor - - 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å - avslutte og starte editoren på nytt. - -MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen - få leksjoner vil du lære hvordan du lagrer forandringene til en fil. - - 5. Flytt markøren ned til leksjon 1.3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.3: REDIGERING AV TEKST -- SLETTING - - - ** Trykk x for å slette tegnet under markøren. ** - - 1. Flytt markøren til den første linjen merket med --->. - - 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som - skal slettes. - - 3. Trykk tasten x for å slette det uønskede tegnet. - - 4. Repeter punkt 2 til 4 til setningen er lik den som er under. - ----> Hessstennnn brrråsnudddde ii gaaata. ----> Hesten bråsnudde i gata. - - 5. Nå som linjen er korrekt, gå til leksjon 1.4. - -MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men - bruk dem helt til de sitter. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING - - - ** Trykk i for å sette inn tekst. ** - - 1. Flytt markøren til den første linjen som er merket med --->. - - 2. For å gjøre den første linjen lik den andre, flytt markøren til den står - på tegnet ETTER posisjonen der teksten skal settes inn. - - 3. Trykk i og skriv inn teksten som mangler. - - 4. Etterhvert som hver feil er fikset, trykk for å returnere til - normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. - ----> Det er tkst som mnglr . ----> Det er ganske mye tekst som mangler her. - - 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen - nedenfor. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL - - - ** Trykk A for å legge til tekst. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. - Det har ikke noe å si hvor markøren er plassert på den linjen. - - 2. Trykk A og skriv inn det som skal legges til. - - 3. Når teksten er lagt til, trykk for å returnere til normalmodusen. - - 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og - 3 for å reparere denne setningen. - ----> Det mangler noe tekst p - Det mangler noe tekst på denne linjen. ----> Det mangler også litt tek - Det mangler også litt tekst på denne linjen. - - 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.6: REDIGERE EN FIL - - - ** Bruk :wq for å lagre en fil og avslutte. ** - - !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! - - 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! - - 2. Skriv denne kommandoen på kommandolinja: vim tutor - «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila - som du vil redigere. Bruk en fil som kan forandres. - - 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. - - 4. Lagre filen med forandringene og avslutt Vim med: :wq - - 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. - - 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 1 - - - 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. - h (venstre) j (ned) k (opp) l (høyre) - - 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN - - 3. For å avslutte Vim, skriv: :q! for å forkaste endringer. - ELLER skriv: :wq for å lagre forandringene. - - 4. For å slette tegnet under markøren, trykk: x - - 5. For å sette inn eller legge til tekst, trykk: - i skriv innsatt tekst sett inn før markøren - A skriv tillagt tekst legg til på slutten av linjen - -MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket - og delvis fullført kommando. - - Nå kan du gå videre til leksjon 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.1: SLETTEKOMMANDOER - - - ** Trykk dw for å slette et ord. ** - - 1. Trykk for å være sikker på at du er i normalmodus. - - 2. Flytt markøren til den første linjen nedenfor merket --->. - - 3. Flytt markøren til begynnelsen av ordet som skal slettes. - - 4. Trykk dw og ordet vil forsvinne. - -MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når - du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet - tegn enn d har du skrevet noe feil; trykk og start på nytt. - ----> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. ----> Det er tre ord som ikke hører hjemme i denne setningen. - - 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå - deretter til leksjon 2.2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.2: FLERE SLETTEKOMMANDOER - - - ** Trykk d$ for å slette til slutten av linjen. ** - - 1. Trykk for å være sikker på at du er i normalmodus. - - 2. Flytt markøren til linjen nedenfor merket --->. - - 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). - - 4. Trykk d$ for å slette alt til slutten av linjen. - ----> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. - - 5. Gå til leksjon 2.3 for å forstå hva som skjer. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.3: OM OPERATORER OG BEVEGELSER - - - Mange kommandoer som forandrer teksten er laget ut i fra en operator og en - bevegelse. Formatet for en slettekommando med sletteoperatoren d er: - - d bevegelse - - Der: - d - er sletteoperatoren. - bevegelse - er hva operatoren vil opere på (listet nedenfor). - - En kort liste med bevegelser: - w - til starten av det neste ordet, UNNTATT det første tegnet. - e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. - $ - til slutten av linjen, INKLUDERT det siste tegnet. - - Ved å skrive de vil altså alt fra markøren til slutten av ordet bli - slettet. - -MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil - markøren flyttes som spesifisert. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE - - - ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** - - 1. Flytt markøren til starten av linjen markert ---> nedenfor. - - 2. Skriv 2w for å flytte markøren to ord framover. - - 3. Skriv 3e for å flytte markøren framover til slutten av det tredje - ordet. - - 4. Skriv 0 (null) for å flytte til starten av linjen. - - 5. Repeter steg 2 og 3 med forskjellige tall. - ----> Dette er en linje med noen ord som du kan bevege deg rundt på. - - 6. Gå videre til leksjon 2.5. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER - - - ** Et tall sammen med en operator repeterer den så mange ganger. ** - - I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du - inn antall før bevegelsen for å slette mer: - d nummer bevegelse - - 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert - med --->. - - 2. Skriv 2dw for å slette de to ordene med store bokstaver. - - 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende - ordene som har store bokstaver. - ----> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. - -MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å - bruke bevegelsen uten en operator. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.6: OPERERE PÅ LINJER - - - ** Trykk dd for å slette en hel linje. ** - - På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at - det vil være lettere å rett og slett trykke to d-er for å slette en linje. - - 1. Flytt markøren til den andre linjen i verset nedenfor. - 2. Trykk dd å slette linjen. - 3. Flytt deretter til den fjerde linjen. - 4. Trykk 2dd for å slette to linjer. - ----> 1) Roser er røde, ----> 2) Gjørme er gøy, ----> 3) Fioler er blå, ----> 4) Jeg har en bil, ----> 5) Klokker viser tiden, ----> 6) Druer er søte ----> 7) Og du er likeså. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.7: ANGRE-KOMMANDOEN - - - ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** - - 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den - første feilen. - 2. Trykk x for å slette det første uønskede tegnet. - 3. Trykk så u for å angre den siste utførte kommandoen. - 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . - 5. Trykk nå en stor U for å sette linjen tilbake til det den var - originalt. - 6. Trykk u noen ganger for å angre U og foregående kommandoer. - 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen - ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). - ----> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. - - 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av - leksjon 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 2 - - - 1. For å slette fra markøren fram til det neste ordet, trykk: dw - 2. For å slette fra markøren til slutten av en linje, trykk: d$ - 3. For å slette en hel linje, trykk: dd - - 4. For å repetere en bevegelse, sett et nummer foran: 2w - 5. Formatet for en forandringskommando er: - operator [nummer] bevegelse - der: - operator - hva som skal gjøres, f.eks. d for å slette - [nummer] - et valgfritt antall for å repetere bevegelsen - bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), - $ (til slutten av linjen) og så videre. - - 6. For å gå til starten av en linje, bruk en null: 0 - - 7. For å angre tidligere endringer, skriv: u (liten u) - For å angre alle forandringer på en linje, skriv: U (stor U) - For å omgjøre angringen, trykk: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.1: «LIM INN»-KOMMANDOEN - - - ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** - - 1. Flytt markøren til den første linjen med ---> nedenfor. - - 2. Trykk dd for å slette linjen og lagre den i et Vim-register. - - 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. - - 4. Trykk p for å legge linjen under markøren. - - 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. - ----> d) Kan du også lære? ----> b) Fioler er blå, ----> c) Intelligens må læres, ----> a) Roser er røde, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.2: «ERSTATT»-KOMMANDOEN - - - ** Trykk rx for å erstatte tegnet under markøren med x. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. - - 2. Flytt markøren så den står oppå den første feilen. - - 3. Trykk r og deretter tegnet som skal være der. - - 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. - ----> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! ----> Da denne linjen ble skrevet, var det noen som trykket feile taster! - - 5. Gå videre til leksjon 3.2. - -MERK: Husk at du bør lære ved å BRUKE, ikke pugge. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.3: «FORANDRE»-OPERATOREN - - - ** For å forandre til slutten av et ord, trykk ce . ** - - 1. Flytt markøren til den første linjen nedenfor som er merket --->. - - 2. Plasser markøren på u i «lubjwr». - - 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). - - 4. Trykk og gå til det neste tegnet som skal forandres. - - 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. - ----> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. ----> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. - -Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c - - - ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** - - 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: - - c [nummer] bevegelse - - 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en - linje). - - 3. Gå til den første linjen nedenfor som er merket --->. - - 4. Flytt markøren til den første feilen. - - 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . - ----> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. ----> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. - -MERK: Du kan bruke slettetasten for å rette feil mens du skriver. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 3 - - - 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette - limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet - vil den bli limt inn på linjen under markøren). - - 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som - du vil ha der. - - 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen - tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten - av ordet, c$ for å forandre til slutten av linjen. - - 4. Formatet for «forandre» er: - - c [nummer] bevegelse - -Nå kan du gå til neste leksjon. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS - - ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. - Trykk G for å gå til en spesifikk linje i filen. ** - - Merk: Les hele leksjonen før du utfører noen av punktene! - - 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding - vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i - filen. Husk linjenummeret for bruk i steg 3. - -Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette - skjer når «ruler»-valget er satt (forklart i leksjon 6). - - 2. Trykk G for å gå til bunnen av filen. - Skriv gg for å gå til begynnelsen av filen. - - 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg - tilbake til linjen du var på da du først trykket CTRL-G. - - 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.2: SØKEKOMMANDOEN - - ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** - - 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og - markøren kommer til syne på bunnen av skjermen i likhet med - «:»-kommandoene. - - 2. Skriv «feeeiil» og trykk . Dette er teksten du vil lete etter. - - 3. For å finne neste forekomst av søkestrengen, trykk n . - For å lete etter samme søketeksten i motsatt retning, trykk N . - - 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . - - 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens - du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I - går framover. - ----> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. -Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt - hvis «wrapscan»-valget er resatt. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.3: FINN SAMSVARENDE PARENTESER - - - ** Trykk % for å finne en samsvarende ), ] eller } . ** - - 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. - - 2. Trykk % . - - 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. - - 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. - - 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. - ----> Dette ( er en testlinje med (, [ ] og { } i den )). - -Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert - antall parenteser! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.4: ERSTATT-KOMMANDOEN - - - ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** - - 1. Flytt markøren til linjen nedenfor som er merket med --->. - - 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare - forandrer den første forekomsten av «deen» på linjen. - - 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global - erstatning på linjen og erstatter alle forekomster av «deen» på linjen. - ----> deen som kan kaste deen tyngste steinen lengst er deen beste - - 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, - skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for - linjeområdet erstatningen skal gjøres. - Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. - Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og - deretter spørre om teksten skal erstattes eller - ikke. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 4 - - - 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. - G går til slutten av filen. - nummer G går til det linjenummeret. - gg går til den første linjen. - - 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. - Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. - Etter et søk kan du trykke n for å finne neste forekomst i den samme - retningen eller N for å lete i motsatt retning. - CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. - - 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den - som samsvarer. - - 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny - Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g - Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g - Erstatte alle forekomster i en fil: :%s/gammel/ny/g - For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO - - - ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** - - 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av - skjermen. Dette lar deg skrive en kommandolinjekommando. - - 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst - ekstern kommando. - - 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil - nå få en liste over filene i katalogen, akkurat som om du hadde kjørt - kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis - «ls» ikke virker. - -MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med - parametere. - -MERK: Alle «:»-kommandoer må avsluttes med . Fra dette punktet er det - ikke alltid vi nevner det. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.2: MER OM LAGRING AV FILER - - - ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** - - 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du - vet allerede at du må trykke etter dette. - - 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . - - 3. Skriv :w TEST (der TEST er filnavnet du velger). - - 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å - sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av - katalogen. - -Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», - ville filen vært en eksakt kopi av innføringen da du lagret den. - - 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende - operativsystem, eller :!del TEST hvis du bruker MS-DOS. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES - - - ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** - - 1. Flytt markøren til denne linjen. - - 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke - til at teksten blir markert. - - 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. - - 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller - at du ser :'<,'>w TEST før du trykker Enter. - - 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller !ls - for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. - -MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for - å gjøre det valgte området større eller mindre. Deretter kan du bruke en - operator for å gjøre noe med teksten. For eksempel sletter d teksten. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER - - - ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** - - 1. Plasser markøren like over denne linjen. - -MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter - NED for å se denne leksjonen igjen. - - 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på - filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. - - 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av - leksjon 5.3, originalen og denne versjonen. - -MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls - leser utdataene av ls-kommandoen og legger dem nedenfor markøren. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 5 - - - 1. :!kommando utfører en ekstern kommandio. - - Noen nyttige eksempler er: - (MS-DOS) (Unix) - :!dir :!ls - List filene i katalogen. - :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. - - 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . - - 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen - FILNAVN. - - 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. - - 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor - markørposisjonen. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN - - - ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til - innsettingsmodus ** - - 1. Flytt markøren til linjen nedenfor merket --->. - - 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i - innsettingsmodus. - - 3. Skriv litt tekst og trykk for å gå ut av innsettingsmodusen. - ----> Etter at o er skrevet blir markøren plassert på den tomme linjen. - - 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O - istedenfor en liten o . Prøv dette på linjen nedenfor. - ----> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.2: «LEGG TIL»-KOMMANDOEN - - - ** Skriv a for å legge til tekst ETTER markøren. ** - - 1. Flytt markøren til starten av linjen merket ---> nedenfor. - - 2. Trykk e til markøren er på slutten av «li». - - 3. Trykk a (liten a) for å legge til tekst ETTER markøren. - - 4. Fullfør ordet sånn som på linjen nedenfor. Trykk for å gå ut av - innsettingsmodusen. - - 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og - 4. - ----> Denne li lar deg øve på å leg til tek på en linje. ----> Denne linjen lar deg øve på å legge til tekst på en linje. - -Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste - forskjellen er hvor tegnene blir satt inn. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ - - - ** Skriv en stor R for å erstatte mer enn ett tegn. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren - til begynnelsen av den første «xxx»-en. - - 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så - det erstatter xxx. - - 3. Trykk for å gå ut av erstatningsmodusen. Legg merke til at resten - av linjen forblir uforandret. - - 4. Repeter stegene for å erstatte den gjenværende xxx. - ----> Ved å legge 123 til xxx får vi xxx. ----> Ved å legge 123 til 456 får vi 579. - -MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives - erstatter et eksisterende tegn. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.4: KOPIERE OG LIME INN TEKST - - - ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** - - 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». - - 2. Gå inn i visuell modus med v og flytt markøren til like før «første». - - 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. - - 4. Flytt markøren til slutten av den neste linjen: j$ - - 5. Trykk p for å lime inn teksten. Trykk deretter: a andre . - - 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til - slutten av den neste linjen med j$ og legg inn teksten der med p . - ----> a) Dette er det første valget. - b) - -Merk: Du kan også bruke y som en operator; yw kopierer ett ord. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.5: SETT VALG - - - ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** - - 1. Let etter «ignore» ved å skrive: /ignore - Repeter flere ganger ved å trykke n . - - 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic - - 3. Søk etter «ignore» igjen ved å trykke n . - Legg merke til at både «Ignore» og «IGNORE» blir funnet. - - 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is - - 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore - - 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic - -Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch -Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk - \c i uttrykket: /ignore\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 6 - - 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i - innsettingsmodus. - Trykk O for å åpne en linje OVER markøren. - - 2. Skriv a for å sette inn tekst ETTER markøren. - Skriv A for å sette inn tekst etter slutten av linjen. - - 3. Kommandoen e går til slutten av et ord. - - 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. - - 5. Ved å trykke R går du inn i erstatningsmodus helt til trykkes. - - 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: - «ic» «ignorecase» ignorer store/små bokstaver under søk - «is» «incsearch» vis delvise treff for en søketekst - «hls» «hlsearch» uthev alle søketreff - - 7. Legg til «no» foran valget for å slå det av: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.1: FÅ HJELP - - - ** Bruk det innebygde hjelpesystemet. ** - - Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av - disse måtene: - - Trykk Hjelp-tasten (hvis du har en) - - Trykk F1-tasten (hvis du har en) - - Skriv :help - - Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. - Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet - Skriv :q for å lukke hjelpevinduet. - - Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til - «:help»-kommandoen. Prøv disse (ikke glem å trykke ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.2: LAG ET OPPSTARTSSKRIPT - - - ** Slå på funksjoner i Vim ** - - Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av - som standard. For å begynne å bruke flere funksjoner må du lage en - «vimrc»-fil. - - 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: - :e ~/.vimrc for Unix - :e $VIM/_vimrc for MS Windows - - 2. Les inn eksempelfilen for «vimrc»: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Lagre filen med: - :w - - Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til - alle dine foretrukne oppsett i denne «vimrc»-filen. - For mer informasjon, skriv :help vimrc-intro -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.3: FULLFØRING - - - ** Kommandolinjefullføring med CTRL-D og ** - - 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp - - 2. Se hvilke filer som er i katalogen: :!ls eller :!dir - - 3. Skriv starten på en kommando: :e - - 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med - «e». - - 5. Trykk og Vim vil fullføre kommandonavnet til «:edit». - - 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL - - 7. Trykk . Vim vil fullføre navnet (hvis det er unikt). - -MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og - . Det er spesielt nyttig for bruk sammen med :help . -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 7 - - - 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. - - 2. Skriv :help kommando for å få hjelp om kommando . - - 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. - - 4. Trykk :q for å lukke hjelpevinduet. - - 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. - - 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige - fullføringer. Trykk for å bruke en fullføring. - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Her slutter innføringen i Vim. Den var ment som en rask oversikt over - editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på - langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen - ved å skrive :help user-manual . - - For videre lesing og studier, kan denne boken anbefales: - «Vim - Vi Improved» av Steve Oualline - Utgiver: New Riders - Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for - nybegynnere. Inneholder mange eksempler og illustrasjoner. - Se http://iccf-holland.org/click5.html - - Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: - «Learning the Vi Editor» av Linda Lamb - Utgiver: O'Reilly & Associates Inc. - Det er en god bok for å få vite omtrent hva som helst om Vi. - Den sjette utgaven inneholder også informasjon om Vim. - - Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, - Colorado School of Mines med idéer av Charles Smith, Colorado State - University. E-mail: bware@mines.colorado.edu . - - Modifisert for Vim av Bram Moolenaar. - Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org - Id: tutor.no 406 2007-03-18 22:48:36Z sunny - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -vim: set ts=8 : diff --git a/share/vim/vim73/tutor/tutor.no b/share/vim/vim73/tutor/tutor.no deleted file mode 100644 index 17178df7..00000000 --- a/share/vim/vim73/tutor/tutor.no +++ /dev/null @@ -1,973 +0,0 @@ -=============================================================================== -= V e l k o m m e n t i l i n n f ø r i n g e n i V i m -- Ver. 1.7 = -=============================================================================== - - Vim er en meget kraftig editor med mange kommandoer, alt for mange til å - kunne gå gjennom alle i en innføring som denne. Den er beregnet på å - sette deg inn i bruken av nok kommandoer så du vil være i stand til lett - å kunne bruke Vim som en editor til alle formål. - - Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30 - minutter, avhengig av hvor mye tid du bruker til eksperimentering. - - MERK: - Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne - filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er - dette allerede en kopi). - - Det er viktig å huske at denne innføringen er beregnet på læring gjennom - bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig. - Hvis du bare leser teksten, vil du glemme kommandoene! - - Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for - å flytte markøren helt til leksjon 1.1 fyller skjermen. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.1: FLYTTING AV MARKØREN - - - ** For å flytte markøren, trykk tastene h, j, k, l som vist. ** - ^ - k Tips: h-tasten er til venstre og flytter til venstre. - < h l > l-tasten er til høyre og flytter til høyre. - j j-tasten ser ut som en pil som peker nedover. - v - 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. - - 2. Hold inne nedovertasten (j) til den repeterer. - Nå vet du hvordan du beveger deg til neste leksjon. - - 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. - -Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til - normalmodus. Skriv deretter kommandoen du ønsket på nytt. - -Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til - å bevege markøren mye raskere når du er blitt vant til det. Helt sant! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.2: AVSLUTTE VIM - - - !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! - - 1. Trykk -tasten (for å forsikre deg om at du er i normalmodus). - - 2. Skriv: :q! . - Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. - - 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne - innføringen. Den er: vimtutor - - 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å - avslutte og starte editoren på nytt. - -MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen - få leksjoner vil du lære hvordan du lagrer forandringene til en fil. - - 5. Flytt markøren ned til leksjon 1.3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.3: REDIGERING AV TEKST -- SLETTING - - - ** Trykk x for å slette tegnet under markøren. ** - - 1. Flytt markøren til den første linjen merket med --->. - - 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som - skal slettes. - - 3. Trykk tasten x for å slette det uønskede tegnet. - - 4. Repeter punkt 2 til 4 til setningen er lik den som er under. - ----> Hessstennnn brrråsnudddde ii gaaata. ----> Hesten bråsnudde i gata. - - 5. Nå som linjen er korrekt, gå til leksjon 1.4. - -MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men - bruk dem helt til de sitter. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING - - - ** Trykk i for å sette inn tekst. ** - - 1. Flytt markøren til den første linjen som er merket med --->. - - 2. For å gjøre den første linjen lik den andre, flytt markøren til den står - på tegnet ETTER posisjonen der teksten skal settes inn. - - 3. Trykk i og skriv inn teksten som mangler. - - 4. Etterhvert som hver feil er fikset, trykk for å returnere til - normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. - ----> Det er tkst som mnglr . ----> Det er ganske mye tekst som mangler her. - - 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen - nedenfor. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL - - - ** Trykk A for å legge til tekst. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. - Det har ikke noe å si hvor markøren er plassert på den linjen. - - 2. Trykk A og skriv inn det som skal legges til. - - 3. Når teksten er lagt til, trykk for å returnere til normalmodusen. - - 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og - 3 for å reparere denne setningen. - ----> Det mangler noe tekst p - Det mangler noe tekst på denne linjen. ----> Det mangler også litt tek - Det mangler også litt tekst på denne linjen. - - 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.6: REDIGERE EN FIL - - - ** Bruk :wq for å lagre en fil og avslutte. ** - - !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! - - 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! - - 2. Skriv denne kommandoen på kommandolinja: vim tutor - «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila - som du vil redigere. Bruk en fil som kan forandres. - - 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. - - 4. Lagre filen med forandringene og avslutt Vim med: :wq - - 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. - - 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 1 - - - 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. - h (venstre) j (ned) k (opp) l (høyre) - - 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN - - 3. For å avslutte Vim, skriv: :q! for å forkaste endringer. - ELLER skriv: :wq for å lagre forandringene. - - 4. For å slette tegnet under markøren, trykk: x - - 5. For å sette inn eller legge til tekst, trykk: - i skriv innsatt tekst sett inn før markøren - A skriv tillagt tekst legg til på slutten av linjen - -MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket - og delvis fullført kommando. - - Nå kan du gå videre til leksjon 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.1: SLETTEKOMMANDOER - - - ** Trykk dw for å slette et ord. ** - - 1. Trykk for å være sikker på at du er i normalmodus. - - 2. Flytt markøren til den første linjen nedenfor merket --->. - - 3. Flytt markøren til begynnelsen av ordet som skal slettes. - - 4. Trykk dw og ordet vil forsvinne. - -MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når - du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet - tegn enn d har du skrevet noe feil; trykk og start på nytt. - ----> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. ----> Det er tre ord som ikke hører hjemme i denne setningen. - - 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå - deretter til leksjon 2.2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.2: FLERE SLETTEKOMMANDOER - - - ** Trykk d$ for å slette til slutten av linjen. ** - - 1. Trykk for å være sikker på at du er i normalmodus. - - 2. Flytt markøren til linjen nedenfor merket --->. - - 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). - - 4. Trykk d$ for å slette alt til slutten av linjen. - ----> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. - - 5. Gå til leksjon 2.3 for å forstå hva som skjer. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.3: OM OPERATORER OG BEVEGELSER - - - Mange kommandoer som forandrer teksten er laget ut i fra en operator og en - bevegelse. Formatet for en slettekommando med sletteoperatoren d er: - - d bevegelse - - Der: - d - er sletteoperatoren. - bevegelse - er hva operatoren vil opere på (listet nedenfor). - - En kort liste med bevegelser: - w - til starten av det neste ordet, UNNTATT det første tegnet. - e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. - $ - til slutten av linjen, INKLUDERT det siste tegnet. - - Ved å skrive de vil altså alt fra markøren til slutten av ordet bli - slettet. - -MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil - markøren flyttes som spesifisert. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE - - - ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** - - 1. Flytt markøren til starten av linjen markert ---> nedenfor. - - 2. Skriv 2w for å flytte markøren to ord framover. - - 3. Skriv 3e for å flytte markøren framover til slutten av det tredje - ordet. - - 4. Skriv 0 (null) for å flytte til starten av linjen. - - 5. Repeter steg 2 og 3 med forskjellige tall. - ----> Dette er en linje med noen ord som du kan bevege deg rundt på. - - 6. Gå videre til leksjon 2.5. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER - - - ** Et tall sammen med en operator repeterer den så mange ganger. ** - - I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du - inn antall før bevegelsen for å slette mer: - d nummer bevegelse - - 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert - med --->. - - 2. Skriv 2dw for å slette de to ordene med store bokstaver. - - 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende - ordene som har store bokstaver. - ----> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. - -MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å - bruke bevegelsen uten en operator. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.6: OPERERE PÅ LINJER - - - ** Trykk dd for å slette en hel linje. ** - - På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at - det vil være lettere å rett og slett trykke to d-er for å slette en linje. - - 1. Flytt markøren til den andre linjen i verset nedenfor. - 2. Trykk dd å slette linjen. - 3. Flytt deretter til den fjerde linjen. - 4. Trykk 2dd for å slette to linjer. - ----> 1) Roser er røde, ----> 2) Gjørme er gøy, ----> 3) Fioler er blå, ----> 4) Jeg har en bil, ----> 5) Klokker viser tiden, ----> 6) Druer er søte ----> 7) Og du er likeså. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.7: ANGRE-KOMMANDOEN - - - ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** - - 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den - første feilen. - 2. Trykk x for å slette det første uønskede tegnet. - 3. Trykk så u for å angre den siste utførte kommandoen. - 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . - 5. Trykk nå en stor U for å sette linjen tilbake til det den var - originalt. - 6. Trykk u noen ganger for å angre U og foregående kommandoer. - 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen - ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). - ----> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. - - 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av - leksjon 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 2 - - - 1. For å slette fra markøren fram til det neste ordet, trykk: dw - 2. For å slette fra markøren til slutten av en linje, trykk: d$ - 3. For å slette en hel linje, trykk: dd - - 4. For å repetere en bevegelse, sett et nummer foran: 2w - 5. Formatet for en forandringskommando er: - operator [nummer] bevegelse - der: - operator - hva som skal gjøres, f.eks. d for å slette - [nummer] - et valgfritt antall for å repetere bevegelsen - bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), - $ (til slutten av linjen) og så videre. - - 6. For å gå til starten av en linje, bruk en null: 0 - - 7. For å angre tidligere endringer, skriv: u (liten u) - For å angre alle forandringer på en linje, skriv: U (stor U) - For å omgjøre angringen, trykk: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.1: «LIM INN»-KOMMANDOEN - - - ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** - - 1. Flytt markøren til den første linjen med ---> nedenfor. - - 2. Trykk dd for å slette linjen og lagre den i et Vim-register. - - 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. - - 4. Trykk p for å legge linjen under markøren. - - 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. - ----> d) Kan du også lære? ----> b) Fioler er blå, ----> c) Intelligens må læres, ----> a) Roser er røde, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.2: «ERSTATT»-KOMMANDOEN - - - ** Trykk rx for å erstatte tegnet under markøren med x. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. - - 2. Flytt markøren så den står oppå den første feilen. - - 3. Trykk r og deretter tegnet som skal være der. - - 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. - ----> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! ----> Da denne linjen ble skrevet, var det noen som trykket feile taster! - - 5. Gå videre til leksjon 3.2. - -MERK: Husk at du bør lære ved å BRUKE, ikke pugge. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.3: «FORANDRE»-OPERATOREN - - - ** For å forandre til slutten av et ord, trykk ce . ** - - 1. Flytt markøren til den første linjen nedenfor som er merket --->. - - 2. Plasser markøren på u i «lubjwr». - - 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). - - 4. Trykk og gå til det neste tegnet som skal forandres. - - 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. - ----> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. ----> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. - -Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c - - - ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** - - 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: - - c [nummer] bevegelse - - 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en - linje). - - 3. Gå til den første linjen nedenfor som er merket --->. - - 4. Flytt markøren til den første feilen. - - 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . - ----> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. ----> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. - -MERK: Du kan bruke slettetasten for å rette feil mens du skriver. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 3 - - - 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette - limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet - vil den bli limt inn på linjen under markøren). - - 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som - du vil ha der. - - 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen - tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten - av ordet, c$ for å forandre til slutten av linjen. - - 4. Formatet for «forandre» er: - - c [nummer] bevegelse - -Nå kan du gå til neste leksjon. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS - - ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. - Trykk G for å gå til en spesifikk linje i filen. ** - - Merk: Les hele leksjonen før du utfører noen av punktene! - - 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding - vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i - filen. Husk linjenummeret for bruk i steg 3. - -Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette - skjer når «ruler»-valget er satt (forklart i leksjon 6). - - 2. Trykk G for å gå til bunnen av filen. - Skriv gg for å gå til begynnelsen av filen. - - 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg - tilbake til linjen du var på da du først trykket CTRL-G. - - 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.2: SØKEKOMMANDOEN - - ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** - - 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og - markøren kommer til syne på bunnen av skjermen i likhet med - «:»-kommandoene. - - 2. Skriv «feeeiil» og trykk . Dette er teksten du vil lete etter. - - 3. For å finne neste forekomst av søkestrengen, trykk n . - For å lete etter samme søketeksten i motsatt retning, trykk N . - - 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . - - 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens - du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I - går framover. - ----> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. -Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt - hvis «wrapscan»-valget er resatt. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.3: FINN SAMSVARENDE PARENTESER - - - ** Trykk % for å finne en samsvarende ), ] eller } . ** - - 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. - - 2. Trykk % . - - 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. - - 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. - - 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. - ----> Dette ( er en testlinje med (, [ ] og { } i den )). - -Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert - antall parenteser! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.4: ERSTATT-KOMMANDOEN - - - ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** - - 1. Flytt markøren til linjen nedenfor som er merket med --->. - - 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare - forandrer den første forekomsten av «deen» på linjen. - - 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global - erstatning på linjen og erstatter alle forekomster av «deen» på linjen. - ----> deen som kan kaste deen tyngste steinen lengst er deen beste - - 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, - skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for - linjeområdet erstatningen skal gjøres. - Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. - Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og - deretter spørre om teksten skal erstattes eller - ikke. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 4 - - - 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. - G går til slutten av filen. - nummer G går til det linjenummeret. - gg går til den første linjen. - - 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. - Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. - Etter et søk kan du trykke n for å finne neste forekomst i den samme - retningen eller N for å lete i motsatt retning. - CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. - - 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den - som samsvarer. - - 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny - Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g - Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g - Erstatte alle forekomster i en fil: :%s/gammel/ny/g - For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO - - - ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** - - 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av - skjermen. Dette lar deg skrive en kommandolinjekommando. - - 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst - ekstern kommando. - - 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil - nå få en liste over filene i katalogen, akkurat som om du hadde kjørt - kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis - «ls» ikke virker. - -MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med - parametere. - -MERK: Alle «:»-kommandoer må avsluttes med . Fra dette punktet er det - ikke alltid vi nevner det. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.2: MER OM LAGRING AV FILER - - - ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** - - 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du - vet allerede at du må trykke etter dette. - - 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . - - 3. Skriv :w TEST (der TEST er filnavnet du velger). - - 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å - sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av - katalogen. - -Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», - ville filen vært en eksakt kopi av innføringen da du lagret den. - - 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende - operativsystem, eller :!del TEST hvis du bruker MS-DOS. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES - - - ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** - - 1. Flytt markøren til denne linjen. - - 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke - til at teksten blir markert. - - 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. - - 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller - at du ser :'<,'>w TEST før du trykker Enter. - - 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller !ls - for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. - -MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for - å gjøre det valgte området større eller mindre. Deretter kan du bruke en - operator for å gjøre noe med teksten. For eksempel sletter d teksten. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER - - - ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** - - 1. Plasser markøren like over denne linjen. - -MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter - NED for å se denne leksjonen igjen. - - 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på - filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. - - 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av - leksjon 5.3, originalen og denne versjonen. - -MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls - leser utdataene av ls-kommandoen og legger dem nedenfor markøren. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 5 - - - 1. :!kommando utfører en ekstern kommandio. - - Noen nyttige eksempler er: - (MS-DOS) (Unix) - :!dir :!ls - List filene i katalogen. - :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. - - 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . - - 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen - FILNAVN. - - 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. - - 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor - markørposisjonen. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN - - - ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til - innsettingsmodus ** - - 1. Flytt markøren til linjen nedenfor merket --->. - - 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i - innsettingsmodus. - - 3. Skriv litt tekst og trykk for å gå ut av innsettingsmodusen. - ----> Etter at o er skrevet blir markøren plassert på den tomme linjen. - - 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O - istedenfor en liten o . Prøv dette på linjen nedenfor. - ----> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.2: «LEGG TIL»-KOMMANDOEN - - - ** Skriv a for å legge til tekst ETTER markøren. ** - - 1. Flytt markøren til starten av linjen merket ---> nedenfor. - - 2. Trykk e til markøren er på slutten av «li». - - 3. Trykk a (liten a) for å legge til tekst ETTER markøren. - - 4. Fullfør ordet sånn som på linjen nedenfor. Trykk for å gå ut av - innsettingsmodusen. - - 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og - 4. - ----> Denne li lar deg øve på å leg til tek på en linje. ----> Denne linjen lar deg øve på å legge til tekst på en linje. - -Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste - forskjellen er hvor tegnene blir satt inn. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ - - - ** Skriv en stor R for å erstatte mer enn ett tegn. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren - til begynnelsen av den første «xxx»-en. - - 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så - det erstatter xxx. - - 3. Trykk for å gå ut av erstatningsmodusen. Legg merke til at resten - av linjen forblir uforandret. - - 4. Repeter stegene for å erstatte den gjenværende xxx. - ----> Ved å legge 123 til xxx får vi xxx. ----> Ved å legge 123 til 456 får vi 579. - -MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives - erstatter et eksisterende tegn. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.4: KOPIERE OG LIME INN TEKST - - - ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** - - 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». - - 2. Gå inn i visuell modus med v og flytt markøren til like før «første». - - 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. - - 4. Flytt markøren til slutten av den neste linjen: j$ - - 5. Trykk p for å lime inn teksten. Trykk deretter: a andre . - - 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til - slutten av den neste linjen med j$ og legg inn teksten der med p . - ----> a) Dette er det første valget. - b) - -Merk: Du kan også bruke y som en operator; yw kopierer ett ord. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.5: SETT VALG - - - ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** - - 1. Let etter «ignore» ved å skrive: /ignore - Repeter flere ganger ved å trykke n . - - 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic - - 3. Søk etter «ignore» igjen ved å trykke n . - Legg merke til at både «Ignore» og «IGNORE» blir funnet. - - 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is - - 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore - - 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic - -Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch -Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk - \c i uttrykket: /ignore\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 6 - - 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i - innsettingsmodus. - Trykk O for å åpne en linje OVER markøren. - - 2. Skriv a for å sette inn tekst ETTER markøren. - Skriv A for å sette inn tekst etter slutten av linjen. - - 3. Kommandoen e går til slutten av et ord. - - 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. - - 5. Ved å trykke R går du inn i erstatningsmodus helt til trykkes. - - 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: - «ic» «ignorecase» ignorer store/små bokstaver under søk - «is» «incsearch» vis delvise treff for en søketekst - «hls» «hlsearch» uthev alle søketreff - - 7. Legg til «no» foran valget for å slå det av: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.1: FÅ HJELP - - - ** Bruk det innebygde hjelpesystemet. ** - - Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av - disse måtene: - - Trykk Hjelp-tasten (hvis du har en) - - Trykk F1-tasten (hvis du har en) - - Skriv :help - - Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. - Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet - Skriv :q for å lukke hjelpevinduet. - - Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til - «:help»-kommandoen. Prøv disse (ikke glem å trykke ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.2: LAG ET OPPSTARTSSKRIPT - - - ** Slå på funksjoner i Vim ** - - Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av - som standard. For å begynne å bruke flere funksjoner må du lage en - «vimrc»-fil. - - 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: - :e ~/.vimrc for Unix - :e $VIM/_vimrc for MS Windows - - 2. Les inn eksempelfilen for «vimrc»: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Lagre filen med: - :w - - Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til - alle dine foretrukne oppsett i denne «vimrc»-filen. - For mer informasjon, skriv :help vimrc-intro -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.3: FULLFØRING - - - ** Kommandolinjefullføring med CTRL-D og ** - - 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp - - 2. Se hvilke filer som er i katalogen: :!ls eller :!dir - - 3. Skriv starten på en kommando: :e - - 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med - «e». - - 5. Trykk og Vim vil fullføre kommandonavnet til «:edit». - - 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL - - 7. Trykk . Vim vil fullføre navnet (hvis det er unikt). - -MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og - . Det er spesielt nyttig for bruk sammen med :help . -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 7 - - - 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. - - 2. Skriv :help kommando for å få hjelp om kommando . - - 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. - - 4. Trykk :q for å lukke hjelpevinduet. - - 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. - - 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige - fullføringer. Trykk for å bruke en fullføring. - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Her slutter innføringen i Vim. Den var ment som en rask oversikt over - editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på - langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen - ved å skrive :help user-manual . - - For videre lesing og studier, kan denne boken anbefales: - «Vim - Vi Improved» av Steve Oualline - Utgiver: New Riders - Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for - nybegynnere. Inneholder mange eksempler og illustrasjoner. - Se http://iccf-holland.org/click5.html - - Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: - «Learning the Vi Editor» av Linda Lamb - Utgiver: O'Reilly & Associates Inc. - Det er en god bok for å få vite omtrent hva som helst om Vi. - Den sjette utgaven inneholder også informasjon om Vim. - - Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, - Colorado School of Mines med idéer av Charles Smith, Colorado State - University. E-mail: bware@mines.colorado.edu . - - Modifisert for Vim av Bram Moolenaar. - Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org - Id: tutor.no 406 2007-03-18 22:48:36Z sunny - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -vim: set ts=8 : diff --git a/share/vim/vim73/tutor/tutor.no.utf-8 b/share/vim/vim73/tutor/tutor.no.utf-8 deleted file mode 100644 index a7826b78..00000000 --- a/share/vim/vim73/tutor/tutor.no.utf-8 +++ /dev/null @@ -1,973 +0,0 @@ -=============================================================================== -= V e l k o m m e n t i l i n n f ø r i n g e n i V i m -- Ver. 1.7 = -=============================================================================== - - Vim er en meget kraftig editor med mange kommandoer, alt for mange til å - kunne gå gjennom alle i en innføring som denne. Den er beregnet på å - sette deg inn i bruken av nok kommandoer så du vil være i stand til lett - å kunne bruke Vim som en editor til alle formål. - - Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30 - minutter, avhengig av hvor mye tid du bruker til eksperimentering. - - MERK: - Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne - filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er - dette allerede en kopi). - - Det er viktig å huske at denne innføringen er beregnet på læring gjennom - bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig. - Hvis du bare leser teksten, vil du glemme kommandoene! - - Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for - å flytte markøren helt til leksjon 1.1 fyller skjermen. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.1: FLYTTING AV MARKØREN - - - ** For å flytte markøren, trykk tastene h, j, k, l som vist. ** - ^ - k Tips: h-tasten er til venstre og flytter til venstre. - < h l > l-tasten er til høyre og flytter til høyre. - j j-tasten ser ut som en pil som peker nedover. - v - 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. - - 2. Hold inne nedovertasten (j) til den repeterer. - Nå vet du hvordan du beveger deg til neste leksjon. - - 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. - -Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til - normalmodus. Skriv deretter kommandoen du ønsket på nytt. - -Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til - å bevege markøren mye raskere når du er blitt vant til det. Helt sant! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.2: AVSLUTTE VIM - - - !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! - - 1. Trykk -tasten (for å forsikre deg om at du er i normalmodus). - - 2. Skriv: :q! . - Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. - - 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne - innføringen. Den er: vimtutor - - 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å - avslutte og starte editoren på nytt. - -MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen - få leksjoner vil du lære hvordan du lagrer forandringene til en fil. - - 5. Flytt markøren ned til leksjon 1.3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.3: REDIGERING AV TEKST -- SLETTING - - - ** Trykk x for å slette tegnet under markøren. ** - - 1. Flytt markøren til den første linjen merket med --->. - - 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som - skal slettes. - - 3. Trykk tasten x for å slette det uønskede tegnet. - - 4. Repeter punkt 2 til 4 til setningen er lik den som er under. - ----> Hessstennnn brrråsnudddde ii gaaata. ----> Hesten bråsnudde i gata. - - 5. Nå som linjen er korrekt, gå til leksjon 1.4. - -MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men - bruk dem helt til de sitter. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING - - - ** Trykk i for å sette inn tekst. ** - - 1. Flytt markøren til den første linjen som er merket med --->. - - 2. For å gjøre den første linjen lik den andre, flytt markøren til den står - på tegnet ETTER posisjonen der teksten skal settes inn. - - 3. Trykk i og skriv inn teksten som mangler. - - 4. Etterhvert som hver feil er fikset, trykk for å returnere til - normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. - ----> Det er tkst som mnglr . ----> Det er ganske mye tekst som mangler her. - - 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen - nedenfor. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL - - - ** Trykk A for å legge til tekst. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. - Det har ikke noe å si hvor markøren er plassert på den linjen. - - 2. Trykk A og skriv inn det som skal legges til. - - 3. Når teksten er lagt til, trykk for å returnere til normalmodusen. - - 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og - 3 for å reparere denne setningen. - ----> Det mangler noe tekst p - Det mangler noe tekst på denne linjen. ----> Det mangler også litt tek - Det mangler også litt tekst på denne linjen. - - 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 1.6: REDIGERE EN FIL - - - ** Bruk :wq for å lagre en fil og avslutte. ** - - !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! - - 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! - - 2. Skriv denne kommandoen på kommandolinja: vim tutor - «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila - som du vil redigere. Bruk en fil som kan forandres. - - 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. - - 4. Lagre filen med forandringene og avslutt Vim med: :wq - - 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. - - 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 1 - - - 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. - h (venstre) j (ned) k (opp) l (høyre) - - 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN - - 3. For å avslutte Vim, skriv: :q! for å forkaste endringer. - ELLER skriv: :wq for å lagre forandringene. - - 4. For å slette tegnet under markøren, trykk: x - - 5. For å sette inn eller legge til tekst, trykk: - i skriv innsatt tekst sett inn før markøren - A skriv tillagt tekst legg til på slutten av linjen - -MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket - og delvis fullført kommando. - - Nå kan du gå videre til leksjon 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.1: SLETTEKOMMANDOER - - - ** Trykk dw for å slette et ord. ** - - 1. Trykk for å være sikker på at du er i normalmodus. - - 2. Flytt markøren til den første linjen nedenfor merket --->. - - 3. Flytt markøren til begynnelsen av ordet som skal slettes. - - 4. Trykk dw og ordet vil forsvinne. - -MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når - du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet - tegn enn d har du skrevet noe feil; trykk og start på nytt. - ----> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. ----> Det er tre ord som ikke hører hjemme i denne setningen. - - 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå - deretter til leksjon 2.2. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.2: FLERE SLETTEKOMMANDOER - - - ** Trykk d$ for å slette til slutten av linjen. ** - - 1. Trykk for å være sikker på at du er i normalmodus. - - 2. Flytt markøren til linjen nedenfor merket --->. - - 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). - - 4. Trykk d$ for å slette alt til slutten av linjen. - ----> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. - - 5. Gå til leksjon 2.3 for å forstå hva som skjer. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.3: OM OPERATORER OG BEVEGELSER - - - Mange kommandoer som forandrer teksten er laget ut i fra en operator og en - bevegelse. Formatet for en slettekommando med sletteoperatoren d er: - - d bevegelse - - Der: - d - er sletteoperatoren. - bevegelse - er hva operatoren vil opere på (listet nedenfor). - - En kort liste med bevegelser: - w - til starten av det neste ordet, UNNTATT det første tegnet. - e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. - $ - til slutten av linjen, INKLUDERT det siste tegnet. - - Ved å skrive de vil altså alt fra markøren til slutten av ordet bli - slettet. - -MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil - markøren flyttes som spesifisert. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE - - - ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** - - 1. Flytt markøren til starten av linjen markert ---> nedenfor. - - 2. Skriv 2w for å flytte markøren to ord framover. - - 3. Skriv 3e for å flytte markøren framover til slutten av det tredje - ordet. - - 4. Skriv 0 (null) for å flytte til starten av linjen. - - 5. Repeter steg 2 og 3 med forskjellige tall. - ----> Dette er en linje med noen ord som du kan bevege deg rundt på. - - 6. Gå videre til leksjon 2.5. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER - - - ** Et tall sammen med en operator repeterer den så mange ganger. ** - - I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du - inn antall før bevegelsen for å slette mer: - d nummer bevegelse - - 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert - med --->. - - 2. Skriv 2dw for å slette de to ordene med store bokstaver. - - 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende - ordene som har store bokstaver. - ----> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. - -MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å - bruke bevegelsen uten en operator. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.6: OPERERE PÅ LINJER - - - ** Trykk dd for å slette en hel linje. ** - - På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at - det vil være lettere å rett og slett trykke to d-er for å slette en linje. - - 1. Flytt markøren til den andre linjen i verset nedenfor. - 2. Trykk dd å slette linjen. - 3. Flytt deretter til den fjerde linjen. - 4. Trykk 2dd for å slette to linjer. - ----> 1) Roser er røde, ----> 2) Gjørme er gøy, ----> 3) Fioler er blå, ----> 4) Jeg har en bil, ----> 5) Klokker viser tiden, ----> 6) Druer er søte ----> 7) Og du er likeså. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 2.7: ANGRE-KOMMANDOEN - - - ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** - - 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den - første feilen. - 2. Trykk x for å slette det første uønskede tegnet. - 3. Trykk så u for å angre den siste utførte kommandoen. - 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . - 5. Trykk nå en stor U for å sette linjen tilbake til det den var - originalt. - 6. Trykk u noen ganger for å angre U og foregående kommandoer. - 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen - ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). - ----> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. - - 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av - leksjon 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 2 - - - 1. For å slette fra markøren fram til det neste ordet, trykk: dw - 2. For å slette fra markøren til slutten av en linje, trykk: d$ - 3. For å slette en hel linje, trykk: dd - - 4. For å repetere en bevegelse, sett et nummer foran: 2w - 5. Formatet for en forandringskommando er: - operator [nummer] bevegelse - der: - operator - hva som skal gjøres, f.eks. d for å slette - [nummer] - et valgfritt antall for å repetere bevegelsen - bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), - $ (til slutten av linjen) og så videre. - - 6. For å gå til starten av en linje, bruk en null: 0 - - 7. For å angre tidligere endringer, skriv: u (liten u) - For å angre alle forandringer på en linje, skriv: U (stor U) - For å omgjøre angringen, trykk: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.1: «LIM INN»-KOMMANDOEN - - - ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** - - 1. Flytt markøren til den første linjen med ---> nedenfor. - - 2. Trykk dd for å slette linjen og lagre den i et Vim-register. - - 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. - - 4. Trykk p for å legge linjen under markøren. - - 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. - ----> d) Kan du også lære? ----> b) Fioler er blå, ----> c) Intelligens må læres, ----> a) Roser er røde, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.2: «ERSTATT»-KOMMANDOEN - - - ** Trykk rx for å erstatte tegnet under markøren med x. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. - - 2. Flytt markøren så den står oppå den første feilen. - - 3. Trykk r og deretter tegnet som skal være der. - - 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. - ----> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! ----> Da denne linjen ble skrevet, var det noen som trykket feile taster! - - 5. Gå videre til leksjon 3.2. - -MERK: Husk at du bør lære ved å BRUKE, ikke pugge. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.3: «FORANDRE»-OPERATOREN - - - ** For å forandre til slutten av et ord, trykk ce . ** - - 1. Flytt markøren til den første linjen nedenfor som er merket --->. - - 2. Plasser markøren på u i «lubjwr». - - 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). - - 4. Trykk og gå til det neste tegnet som skal forandres. - - 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. - ----> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. ----> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. - -Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c - - - ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** - - 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: - - c [nummer] bevegelse - - 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en - linje). - - 3. Gå til den første linjen nedenfor som er merket --->. - - 4. Flytt markøren til den første feilen. - - 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . - ----> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. ----> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. - -MERK: Du kan bruke slettetasten for å rette feil mens du skriver. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 3 - - - 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette - limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet - vil den bli limt inn på linjen under markøren). - - 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som - du vil ha der. - - 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen - tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten - av ordet, c$ for å forandre til slutten av linjen. - - 4. Formatet for «forandre» er: - - c [nummer] bevegelse - -Nå kan du gå til neste leksjon. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS - - ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. - Trykk G for å gå til en spesifikk linje i filen. ** - - Merk: Les hele leksjonen før du utfører noen av punktene! - - 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding - vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i - filen. Husk linjenummeret for bruk i steg 3. - -Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette - skjer når «ruler»-valget er satt (forklart i leksjon 6). - - 2. Trykk G for å gå til bunnen av filen. - Skriv gg for å gå til begynnelsen av filen. - - 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg - tilbake til linjen du var på da du først trykket CTRL-G. - - 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.2: SØKEKOMMANDOEN - - ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** - - 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og - markøren kommer til syne på bunnen av skjermen i likhet med - «:»-kommandoene. - - 2. Skriv «feeeiil» og trykk . Dette er teksten du vil lete etter. - - 3. For å finne neste forekomst av søkestrengen, trykk n . - For å lete etter samme søketeksten i motsatt retning, trykk N . - - 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . - - 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens - du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I - går framover. - ----> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. -Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt - hvis «wrapscan»-valget er resatt. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.3: FINN SAMSVARENDE PARENTESER - - - ** Trykk % for å finne en samsvarende ), ] eller } . ** - - 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. - - 2. Trykk % . - - 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. - - 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. - - 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. - ----> Dette ( er en testlinje med (, [ ] og { } i den )). - -Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert - antall parenteser! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 4.4: ERSTATT-KOMMANDOEN - - - ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** - - 1. Flytt markøren til linjen nedenfor som er merket med --->. - - 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare - forandrer den første forekomsten av «deen» på linjen. - - 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global - erstatning på linjen og erstatter alle forekomster av «deen» på linjen. - ----> deen som kan kaste deen tyngste steinen lengst er deen beste - - 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, - skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for - linjeområdet erstatningen skal gjøres. - Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. - Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og - deretter spørre om teksten skal erstattes eller - ikke. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 4 - - - 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. - G går til slutten av filen. - nummer G går til det linjenummeret. - gg går til den første linjen. - - 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. - Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. - Etter et søk kan du trykke n for å finne neste forekomst i den samme - retningen eller N for å lete i motsatt retning. - CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. - - 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den - som samsvarer. - - 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny - Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g - Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g - Erstatte alle forekomster i en fil: :%s/gammel/ny/g - For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO - - - ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** - - 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av - skjermen. Dette lar deg skrive en kommandolinjekommando. - - 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst - ekstern kommando. - - 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil - nå få en liste over filene i katalogen, akkurat som om du hadde kjørt - kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis - «ls» ikke virker. - -MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med - parametere. - -MERK: Alle «:»-kommandoer må avsluttes med . Fra dette punktet er det - ikke alltid vi nevner det. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.2: MER OM LAGRING AV FILER - - - ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** - - 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du - vet allerede at du må trykke etter dette. - - 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . - - 3. Skriv :w TEST (der TEST er filnavnet du velger). - - 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å - sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av - katalogen. - -Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», - ville filen vært en eksakt kopi av innføringen da du lagret den. - - 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende - operativsystem, eller :!del TEST hvis du bruker MS-DOS. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES - - - ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** - - 1. Flytt markøren til denne linjen. - - 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke - til at teksten blir markert. - - 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. - - 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller - at du ser :'<,'>w TEST før du trykker Enter. - - 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller !ls - for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. - -MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for - å gjøre det valgte området større eller mindre. Deretter kan du bruke en - operator for å gjøre noe med teksten. For eksempel sletter d teksten. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER - - - ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** - - 1. Plasser markøren like over denne linjen. - -MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter - NED for å se denne leksjonen igjen. - - 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på - filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. - - 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av - leksjon 5.3, originalen og denne versjonen. - -MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls - leser utdataene av ls-kommandoen og legger dem nedenfor markøren. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 5 - - - 1. :!kommando utfører en ekstern kommandio. - - Noen nyttige eksempler er: - (MS-DOS) (Unix) - :!dir :!ls - List filene i katalogen. - :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. - - 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . - - 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen - FILNAVN. - - 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. - - 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor - markørposisjonen. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN - - - ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til - innsettingsmodus ** - - 1. Flytt markøren til linjen nedenfor merket --->. - - 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i - innsettingsmodus. - - 3. Skriv litt tekst og trykk for å gå ut av innsettingsmodusen. - ----> Etter at o er skrevet blir markøren plassert på den tomme linjen. - - 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O - istedenfor en liten o . Prøv dette på linjen nedenfor. - ----> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.2: «LEGG TIL»-KOMMANDOEN - - - ** Skriv a for å legge til tekst ETTER markøren. ** - - 1. Flytt markøren til starten av linjen merket ---> nedenfor. - - 2. Trykk e til markøren er på slutten av «li». - - 3. Trykk a (liten a) for å legge til tekst ETTER markøren. - - 4. Fullfør ordet sånn som på linjen nedenfor. Trykk for å gå ut av - innsettingsmodusen. - - 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og - 4. - ----> Denne li lar deg øve på å leg til tek på en linje. ----> Denne linjen lar deg øve på å legge til tekst på en linje. - -Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste - forskjellen er hvor tegnene blir satt inn. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ - - - ** Skriv en stor R for å erstatte mer enn ett tegn. ** - - 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren - til begynnelsen av den første «xxx»-en. - - 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så - det erstatter xxx. - - 3. Trykk for å gå ut av erstatningsmodusen. Legg merke til at resten - av linjen forblir uforandret. - - 4. Repeter stegene for å erstatte den gjenværende xxx. - ----> Ved å legge 123 til xxx får vi xxx. ----> Ved å legge 123 til 456 får vi 579. - -MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives - erstatter et eksisterende tegn. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.4: KOPIERE OG LIME INN TEKST - - - ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** - - 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». - - 2. Gå inn i visuell modus med v og flytt markøren til like før «første». - - 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. - - 4. Flytt markøren til slutten av den neste linjen: j$ - - 5. Trykk p for å lime inn teksten. Trykk deretter: a andre . - - 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til - slutten av den neste linjen med j$ og legg inn teksten der med p . - ----> a) Dette er det første valget. - b) - -Merk: Du kan også bruke y som en operator; yw kopierer ett ord. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 6.5: SETT VALG - - - ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** - - 1. Let etter «ignore» ved å skrive: /ignore - Repeter flere ganger ved å trykke n . - - 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic - - 3. Søk etter «ignore» igjen ved å trykke n . - Legg merke til at både «Ignore» og «IGNORE» blir funnet. - - 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is - - 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore - - 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic - -Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch -Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk - \c i uttrykket: /ignore\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 6 - - 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i - innsettingsmodus. - Trykk O for å åpne en linje OVER markøren. - - 2. Skriv a for å sette inn tekst ETTER markøren. - Skriv A for å sette inn tekst etter slutten av linjen. - - 3. Kommandoen e går til slutten av et ord. - - 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. - - 5. Ved å trykke R går du inn i erstatningsmodus helt til trykkes. - - 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: - «ic» «ignorecase» ignorer store/små bokstaver under søk - «is» «incsearch» vis delvise treff for en søketekst - «hls» «hlsearch» uthev alle søketreff - - 7. Legg til «no» foran valget for å slå det av: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.1: FÅ HJELP - - - ** Bruk det innebygde hjelpesystemet. ** - - Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av - disse måtene: - - Trykk Hjelp-tasten (hvis du har en) - - Trykk F1-tasten (hvis du har en) - - Skriv :help - - Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. - Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet - Skriv :q for å lukke hjelpevinduet. - - Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til - «:help»-kommandoen. Prøv disse (ikke glem å trykke ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.2: LAG ET OPPSTARTSSKRIPT - - - ** Slå på funksjoner i Vim ** - - Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av - som standard. For å begynne å bruke flere funksjoner må du lage en - «vimrc»-fil. - - 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: - :e ~/.vimrc for Unix - :e $VIM/_vimrc for MS Windows - - 2. Les inn eksempelfilen for «vimrc»: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Lagre filen med: - :w - - Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til - alle dine foretrukne oppsett i denne «vimrc»-filen. - For mer informasjon, skriv :help vimrc-intro -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leksjon 7.3: FULLFØRING - - - ** Kommandolinjefullføring med CTRL-D og ** - - 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp - - 2. Se hvilke filer som er i katalogen: :!ls eller :!dir - - 3. Skriv starten på en kommando: :e - - 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med - «e». - - 5. Trykk og Vim vil fullføre kommandonavnet til «:edit». - - 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL - - 7. Trykk . Vim vil fullføre navnet (hvis det er unikt). - -MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og - . Det er spesielt nyttig for bruk sammen med :help . -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - OPPSUMMERING AV LEKSJON 7 - - - 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. - - 2. Skriv :help kommando for å få hjelp om kommando . - - 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. - - 4. Trykk :q for å lukke hjelpevinduet. - - 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. - - 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige - fullføringer. Trykk for å bruke en fullføring. - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Her slutter innføringen i Vim. Den var ment som en rask oversikt over - editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på - langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen - ved å skrive :help user-manual . - - For videre lesing og studier, kan denne boken anbefales: - «Vim - Vi Improved» av Steve Oualline - Utgiver: New Riders - Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for - nybegynnere. Inneholder mange eksempler og illustrasjoner. - Se http://iccf-holland.org/click5.html - - Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: - «Learning the Vi Editor» av Linda Lamb - Utgiver: O'Reilly & Associates Inc. - Det er en god bok for å få vite omtrent hva som helst om Vi. - Den sjette utgaven inneholder også informasjon om Vim. - - Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, - Colorado School of Mines med idéer av Charles Smith, Colorado State - University. E-mail: bware@mines.colorado.edu . - - Modifisert for Vim av Bram Moolenaar. - Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org - Id: tutor.no 406 2007-03-18 22:48:36Z sunny - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -vim: set ts=8 : diff --git a/share/vim/vim73/tutor/tutor.sk b/share/vim/vim73/tutor/tutor.sk deleted file mode 100644 index 2291aad6..00000000 --- a/share/vim/vim73/tutor/tutor.sk +++ /dev/null @@ -1,1008 +0,0 @@ -=============================================================================== -= V i t a j t e v o V I M T u t o r i a l i - Verzia 1.7 = -=============================================================================== - - Vim je veµmi výkonný editor, ktorý má príli¾ veµa príkazov na to aby - mohli byt v¹etky popísané vo výuke akou je táto. Táto výuka - popisuje dostatoèné mno¾stvo príkazov nato aby bolo mo¾né pou¾íva» - Vim ako viacúèelový editor. - - Pribli¾ný èas potrebný na prebratie tejto výuky je 25-30 minút, - závisí na tom, koµko je stráveného èasu s preskú¹avaním. - - UPOZORNENIE: - Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby - sa mohlo precvièova» na òom (pri ¹tarte "vimtutor" je toto kópia). - - Je dôle¾ité zapamäta» si, ¾e táto výuka je vytvorená pre výuku - pou¾ívaním. To znamená, ¾e je potrebné si príkazy vyskú¹a», aby bolo - uèenie správne. Ak len èitas text, príkazy zabudne¹! - - Presvedè sa, ¾e Shift-Lock NIEJE stlaèený a stlaèt klávesu - j niekoµko krát, aby sa kurzor posunul natoµko, ¾e lekcia 1.1 - celkom zaplní obrazovku. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.1: POHYB KURZOROM - - - ** Pre pohyb kurzorum stlaè klávesy h,j,k,l ako je znázornené. ** - ^ - k Funkcia: Klávesa h je naµavo a vykoná pohyb doµava. - < h l > Klávesa l je napravo a vykoná pohyb doprava. - j Klávesa j vyzerá ako ¹ípka dole - v - 1. Pohybuj kurzorom po obrazovke, kým si na to nezvykne¹. - - 2. Dr¾ stlaèenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. ----> Teraz sa u¾ vie¹ pohybova» na nasledujúcu lekciu. - - 3. Pou¾itím klávesy pre pohyb dole prejdi na Lekciu 1.2. - -Poznámka: Ak si niesi istý tým èo si napísal, stlaè - na prechod do normálneho módu. - -Poznámka: Kurzorové klávesy sú tie¾ funkèné. Ale pou¾ívaním hjkl sa bude¹ - schopný pohybova» rýchlej¹ie, keï si zvykne¹ ich pou¾íva». Naozaj! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 1.2: ZATVÁRANIE VIMU - - - !! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú túto lekciu !! - - 1. Stlaè klávesu (aby si sa uèite nachádzal v normálnom móde) - - 2. Napí¹: :q! . - Tým ukonèí¹ prácu s editorom BEZ ulo¾enia zmien, ktoré si vykonal. - - 3. Keï sa dostane¹ na príkazový riadok, napí¹ príkaz, ktorým sa dostane¹ - spe» do tejto výuky. To mô¾e by»: vimtutor - - 4. Ak si si tieto kroky spoµahlivo zapamätal, vykonaj kroky 1 a¾ 3, pre - ukonèenie a znovu spustenie editora. - -POZNÁMKA: :q! neulo¾í zmeny, ktoré si vykonal. O niekoµko lekcií - sa nauèí¹ ako ulo¾i» zmeny do súboru - - 5. presuò kurzor dole na lekciu 1.3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.3: EDITÁCIA TEXTU - MAZANIE - - -** Stlaèenie klávesy x v normálnom móde zma¾e znak na mieste kurzora. ** - - 1. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou --->. - - 2. Aby si mohol odstráni» chyby, pohybuj kurzorom kým neprejde na znak, - ktorý chce¹ zmaza». - - 3. Stlaè klávesu x aby sa zmazal nechcený znak. - - 4. Zopakuj kroky 2 a¾ 4 a¾ kým veta nieje správna. - ----> Kraava skooèilla ccezz mesiiac. - - 5. Ak je veta správna, prejdi na lekciu 1.4. - -POZNÁMKA: Neskú¹aj si zapamäta» obsah tejto výuky, ale sa uè pou¾ívaním. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.4: EDITÁCIA TEXTU - VKLADANIE - - - ** Stlaèenie klávesy i umo¾òuje vkladanie textu. ** - - 1. Presuò kurzor ni¾¹ie na prvý riadok za znaèku --->. - - 2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok, - presuò kurzor na prvý znak za misto, kde má by» text vlo¾ený. - - 3. Stlaè klávesu i a napí¹ potrebný text. - - 4. Po opravení ka¾dej chyby, stlaè pre návrat do normálneho módu. - Zopakuj kroky 2 a¾ 4 kým nieje veta správna. - ----> Tu je text chýbajúci tejto. ----> Tu je nejaký text chýbajúci od tejto èiary. - - 5. Keï sa dostatoène nauèí¹ vklada» text, prejdi na nasledujúce zhrnutie. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.5: EDITÁCIA TEXTU - PRIDÁVANIE - - - ** Stlaèenie klávesy A umo¾òuje pridáva» text. ** - - 1. Presuò kurozr ni¾¹ie na prvý riadok za znaèkou --->. - Nezále¾í na tom, na ktorom znaku sa kurzor v tom riadku nachádza. - - 2. Stlaè klávesu A a napí¹ potrebný text. - - 3. Po pridaní textu stlaè klávesu pre návrat do Normálneho módu. - - 4. Presuò kurozr na druhý riadok oznaèený ---> a zopakuj - kroky 2 a 3 kým nieje veta správna. - ----> Tu je nejaký text chýbajúci o - Tu je nejaký text chýbajúci od tiaµto. ----> Tu tie¾ chýba nej - Tu tie¾ chýba nejaký text. - - 5. Keï sa dostatoène nauèí¹ pridáva» text, prejdi na lekciu 1.6. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.6: EDITÁCIA SÚBORU - - - ** Napísaním :wq sa súbor ulo¾í a zavrie ** - -!! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú lekciu!! - -1. Opusti túto výuku, ako si to urobil v lekcii 1.2: :q! - -2. Do príkazového riadku napí¹ príkaz: vim tutor - 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, - ktorý chce¹ editova». Pou¾i taký súbor, ktorý mô¾e¹ meni». - -3. Vlo¾ a zma¾ text tak, ako si sa nauèil v predo¹lých lekciach. - -4. Ulo¾ súbor so zmenami a opusti Vim príkazom: :wq - -5. Re¹tartuj vimtutor a presuò sa dole na nasledujúce zhrnutie. - -6. Urob tak po preèítaní predo¹lých krokov a porozumeniu im. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZHRNUTIE LEKCIE 1 - - - 1. Kurzor sa pohybuje pou¾itím kláves so ¹ípkami alebo klávesmi hjkl. - h (do lava) j (dole) k (hore) l (doprava) - - 2. Pre spustenie Vimu (z príkazového riadku) napí¹: vim FILENAME - - 3. Na ukonèenie Vimu napí¹: :q! pre zru¹enie v¹etkých zmien - alebo napí¹: :wq pre ulo¾enie zmien. - - 4. Na zmazanie znaku na mieste kurzora napí¹: x - - 5. Pre vlo¾enie textu na mieste kurzora v normálnom móde napí¹: - i napí¹ vkladaný text vkladanie pred kurzor - A napí¹ pridávaný text vkladanie za riadok - -POZNÁMKA: Stlaèenie »a premiestní do normálneho módu alebo zru¹í - nejaký nechcený a èiastoène dokonèený príkaz. - -Teraz pokraèuj lekciou 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.1: Mazacie príkazy - - - ** Napísanie príkazu dw zma¾e znaky do konca slova. ** - -1. Stlaè aby si bol bezpeène v normálnom móde. - -2. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou --->. - -3. Presuò kurzor na zaèiatok slova, ktoré je potrebné zmaza». - -4. Napí¹ dw aby slovo zmizlo. - -POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keï ho - napí¹e¹. Vim na teba poèká, aby si mohol napísa» - písmeno w. Ak vidí¹ nieèo iné ako d , tak si napísal - nesprávny znak; stlaè a zaèni znova. - ----> Tu je niekoµko slov zábava, ktoré nie patria list do tejto vety. - -5. Zopakuj kroky 3 a¾ 4 kým veta nieje správna a prejdi na lekciu 2.2. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.2: VIAC MAZACÍCH PRÍKAZOV - - - ** Napísanie príkazu d$ zma¾e znaky do konca riadku ** - -1. Stlaè aby si bol bezpeène v normálnom móde. - -2. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou --->. - -3. Presuò kurzor na koniec správnej vety (ZA prvú bodku). - -4. Napí¹ d$ aby sa zmazali znaky do konca riadku. - ----> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. - - -5. Prejdi na lekciu 2.3 pre pochopenie toho èo sa stalo. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.3: OPERÁTORY A POHYBY - - Veµa príkazov, ktoré menia text sú odvodené od operátorov a pohybov. - Formát pre príkaz mazania klávesou d je nasledovný: - - d pohyb - - kde: - d - je mazací operátor - pohyb - je to èo operátor vykonáva (vypísané ni¾¹ie) - - Krátky list pohybov: - w - do zaèiatku ïal¹ieho slova, okrem jeho prvého písmena. - e - do konca teraj¹ieho slova, vrátane posledného znaku. - $ - do konca riadku, vrátane posledného znaku - - Tak¾e napísaním de sa zma¾e v¹etko od kurzora do konca slova. - -POZNÁMKA: Stlaèením iba pohybu v normálnom móde bez operátora - sa presunie kurzor tak ako je to ¹pecivikované. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.4: Pou¾itie viacnásobného pohybu - - - ** Napísaním èísla pred pohyb ho zopakuje zadný poèet krát ** - - 1. Presuò kurozr ni¾¹ie na zaèiatok riadku oznaèeného --->. - - 2. Napí¹ 2w a kurozr sa presunie o dve slová vpred. - - 3. Napí¹ 3e a kurozr sa presunie vpred na koniec tretieho slova. - - 4. Napí¹ 0 (nula) a kurozr sa presunie na zaèiatok riadku. - - 5. Zopakuj kroky 2 a 3 s rôznymi èíslami. - ----> Toto je riadok so slovami po kotrých sa mô¾ete pohybova». - - 6. Prejdi na lekciu 2.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.5: POU®ITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE - - - ** Napísanie èísla spolu s operátorom ho zopakuje zadaný poèet krát ** - - V kombinácii operátorov mazania a pohybu spomínaného vy¹¹ie vlo¾ poèet - pred pohyb pre docielenie hromadného mazania: - d èíslo pohyb - - 1. Presuò kurzor na prvé slovo písané VE¥KÝMI PÍSMENAMI - v riadku oznaèenom --->. - - 2. Napí¹ 2dw a zma¾e¹ dve slová písané VE¥KÝMI PÍSMENAMI - - 3. Zopakuj kroky 1 a 2 s pou¾itím rôzneho èísla tak aby si zmazal slová - písané veµkými písmenami jedným príkazom. - ----> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. - -POZNÁMKA: Èíslo medzi operátorom d a pohybom funguje podobne ako pri - pou¾ití s pohybom bez operátora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.6: OPERÁCIE S RIADKAMI - - - ** Napísanie príkazu dd zma¾e celý riadok. ** - -Vzhµadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, -¾e bude jednoduch¹ie maza» celý riadok napísaním dvoch písmen d. - -1. Presuò kurzor na druhý riadok v texte na spodu. -2. Napí¹ dd aby si zmazal riadok. -3. Prejdi na ¹tvrtý riadok. -4. Napí¹ 2dd aby si zmazal dva riadky. - - 1) Ru¾e sú èervené, - 2) Blato je zábavné, - 3) Fialky sú modré, - 4) Mám auto, - 5) Hodinky ukazujú èas, - 6) Cukor je sladký, - 7) A to si ty. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.7: PRÍKAZ UNDO - - -** Stlaè u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** - -1. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou ---> a premiestni ho na - prvú chybu. -2. Napí¹ x pre zmazanie prvého nechceného riadku. -3. Teraz napí¹ u èím vrátí¹ spä» posledne vykonaný príkaz. -4. Teraz oprav v¹etky chyby na riadku pou¾itím príkazu x . -5. Teraz napí¹ veµké U èím vrátí¹ riadok do pôvodného stavu. -6. Teraz napí¹ u niekoµko krát, èím vrátí¹ spä» príkaz U. -7. Teraz napí¹ CTRL-R (dr¾ klávesu CTRL stlaèenú kým stláèa¹ R) niekoµko - krát, èím vrátí¹ spä» predtým vrátené príkazy (undo z undo). - ----> Opprav chybby nna toomto riadku a zmeeò ich pommocou undo. - - 8. Tieto príkazy sú èasto pou¾ívané. Teraz prejdi na zhrnutie lekcie 2. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 2 ZHRNUTIE - - - 1. Pre zmazanie znakov od kurzora do konca slova napí¹: dw - - 2. Pre zmazanie znakov od kurzora do konca riadku napí¹: d$ - - 3. Pre zmazanie celého riadku napí¹: dd - - 4. Pre zopakovanie pohybu, napí¹ pred neho èíslo: 2w - - 5. Formát pre píkaz: - - operátor [èíslo] pohyb - kde: - operátor - èo treba robi», napríklad d pre zmazanie - [èíslo] - je voliteµný poèet pre opakovanie pohybu - pohyb - pohyb po texte vzhµadom na operátor, napríklad w (slovo), - $ (do konca riadku), atï. - - 6. Pre pohyb na zaèiatok riadku pou¾i nulu: 0 - - 7. Pre vrátenie spä» predo¹lej operácie napí¹: u (malé u) - Pre vrátenie v¹etkých úprav na riadku napí¹: U (veµké U) - Pre vrátenie vrátených úprav napí¹: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.1: PRÍKAZ VLO®I« - - - ** Napísanie príkazu p vlo¾í psledný výmaz za kurzor. ** - - 1. Presuò kurzor ni¾¹ie na prvý riadok textu. - - 2. Napí¹ dd èím zma¾e¹ riadok a ulo¾í¹ ho do buffera editora Vim. - - 3. Presuò kurzor vy¹¹ie tam, kam zmazaný riadok patrí. - - 4. Ak napí¹e¹ v normálnom móde p zmazaný riadk sa vlo¾í. - - 5. Zopakuj kroky 2 a¾ 4, kým riadky niesú v správnom poradí. - ----> d) Tie¾ sa doká¾e¹ vzdeláva»? ----> b) Fialky sú modré, ----> c) Inteligencia sa vzdeláva, ----> a) Ru¾e sú èervené, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.2: PRÍKAZ NAHRADENIA - - - ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** - - 1. Presuò kurzor ni¾¹ie na prví riadok textu oznaèeného znaèkou --->. - - 2. Presuò kurzor na zaèiatok prvej chyby. - - 3. napí¹ r a potom znak, ktorý tam má by». - - 4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým. - ----> Kaï bol tento riasok píaaný, niekro stla¹il nesprábne klávesy! ----> Keï bol tento riadok písaný, niekto stlaèil nesprávne klávesy! - - 5. Teraz prejdi na lekciu 3.2. - -POZNÁMKA: Pamätaj si, ¾e nauèi» sa mô¾e¹ len pou¾ívanim, nie pamätaním. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.3. PRÍKAZ ÚPRAVY - - - ** Ak chce¹ zmeni» èas» slova do konca slova, napí¹ ce . ** - - 1. Presuò kurzor ni¾¹ie na prvý riadok oznaèený znaèkou --->. - - 2. Umiestni kurzor na písmeno o v slove rosfpl. - - 3. Napí¹ ce a oprav slovo (v tomto prípade napí¹ 'iadok'.) - - 4. Stlaè a prejdi na ïal¹í znak, ktorý treba zmeni». - - 5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá. - ----> Tento rosfpl má niekoµko skic, ktoré je pirewvbí zmeni» piy»uèán príkazu. ----> Tento riadok má niekoµko slov, ktoré je potrebné zmeni» pou¾itím príkazu. - -Poznámka, ¾e ce zma¾e slovo a nastaví vkladací mód. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.4: VIAC ZMIEN POU®ITÍM c - - - ** Príkaz pre úpravy sa pou¾íva s rovnakými pohybmi ako pre mazanie ** - - 1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je: - - c [èíslo] pohyb - - 2. Pohyby sú rovnaké, ako napríklad w (slovo) a $ (koniec riadku). - - 3. Presuò kurzor ni¾¹ie na prvý riadok oznaèený znaèkou --->. - - 4. Presuò kurzor na prvú chybu. - - 5. napí¹ c$ aby si mohol upravi» zvy¹ok riadku podµa druhého - a stlaè . - ----> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. ----> Koniec tohto riadku potrebuje opravi» pou¾itím príkazu c$ . - -POZNÁMKA: Mô¾e¹ pou¾i» klávesu backspace na úpravu zmien poèas písania. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 3 ZHRNUTIE - - - 1. Na vlo¾enie textu, ktorý u¾ bol zmazaný, napí¹ p . To vlo¾í zmazaný - text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom). - - 2. Pre naradenie znaku na mieste kurzora, napí¹ r a potom znak, ktorý - nahradí pôvodný znak. - - 3. Príkaz na upravenie umo¾òuje zmeni» od kurzora a¾ po miesto, ktoré - urèuje pohyb. napr. Napí¹ ce èím zmní¹ text od pozície - kurzora do konca slova, c$ zmení text do konca riadku. - - 4. Formát pre nahradenie je: - - c [èíslo] pohyb - - -Teraz prejdi na nalsedujúcu lekciu. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.1: POZÍCIA A STATUS SÚBORU - - - ** Stlaè CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. - Napí¹ G pre presun na riadok v súbore. ** - - Poznámka: Preèítaj si celú túto lekciu skôr ako zaène¹ vykonáva» kroky!! - - 1. Dr¾ stlaèenú klávesu Ctrl a stlaè g . Toto nazývame CTRL-G. - Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou - v súbore. Zapamätajsi si èíslo riadku pre pou¾itie v kroku 3. - - 2. Stlaè G èím sa dostane¹ na spodok súboru. - Napí¹ gg èím sa dostane¹ na zaèiatok súboru. - - 3. Napí¹ èíslo riadku na ktorom si sa nachádzal a stlaè G. To »a - vráti na riadok, na ktorom si prvý krát stlaèil CTRL-G. - - 4. Ak sa cítí¹ schopný vykona» teto kroky, vykonaj kroky 1 a¾ 3. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.2: PRÍKAZ VYH¥ADÁVANIA - - - ** Napí¹ / nasledované re»azcom pre vyhµadanie príslu¹ného re»azca. ** - - 1. Napí¹ znak / v normálnom móde. Poznámka, ¾e tento znak sa spolu - s kurzorom zobrazí v dolnej èasti obrazovky s : príkazom. - - 2. Teraz napí¹ 'errroor' . To je slovo, ktoré chce¹ vyhµada». - - 3. Pre vyhµadanie ïal¹ieho výskytu rovnakého re»azca, stlaè jednoducho n. - Pre vyhµadanie ïal¹ieho výskytu rovnakého re»azca opaèným smerom, - N. - - 4. Ak chce¹ vyhµada» re»azec v spätnom smere, pou¾í príkaz ? miesto - príkazu /. - - 5. Pre návrat na miesto z ktorého si pri¹iel stlaè CTRL-O (dr¾ stlaèenú - klávesu Ctrl poèas stlaèenia klávesy o). Zopakuj pre ïal¹í návrat - spä». CTRL-I ide vpred. - -POZNÁMKA: "errroor" nieje spôsob hláskovania error; errroor je error. -POZNÁMKA: Keï vyhµadávanie dosiahne koniec tohto súboru, bude pokraèova» na - zaèiatku, dokiaµ nieje resetované nastavenie 'wrapscan' . - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.3: VYH¥ADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK - - - ** Napí¹ % pre vyhµadanie príslu¹ného znaku ),], alebo } . ** - - 1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku ni¾¹ie - oznaèeného znaèkou --->. - - 2. Teraz napí¹ znak % . - - 3. Kurzor sa premiestni na zodpovedajúcu zátvorku. - - 4. Napí¹ % pre presun kurzoru spä» na otvárajúcu zátvorku. - - 5. Presuò kurzor na iný zo znakov (,),[,],{ alebo } a v¹imni si - èo % vykonáva. - ----> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. )) - -Poznámka: Toto je veµmi výhodné pou¾í» pri ladení programu s chýbajúcimi - uzatvárajúcimi zátvorkami! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.4: PRÍKAZ NAHRADENIA - - - ** Napí¹ :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** - - 1. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou --->. - - 2. Napí¹ :s/thee/the . Poznamka, ¾e tento príkaz zmení len prvý - výskyt "thee" v riadku. - - 3. Teraz napí¹ :s/thee/the/g èo znamená celkové nahradenie v riadku. - Toto nahradí v¹etky výskyty v riadku. - ----> Thee best time to see thee flowers in thee spring. - - 4. Pre zmenu v¹etkých výskytov daného re»azca medzi dvomi ridakami, - napí¹ :#,#s/starý/nový/g kde #,# sú èísla dvoch riadkov, v rozsahu - ktorých sa nahradenie vykoná. - napí¹ :%s/starý/nový/g pre zmenu v¹etkých výskytov v celom riadku - napí¹ :%s/starý/nový/gc nájde v¹etky výskyty v celom súbore, - s otázkou èi nahradi» alebo nie - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 4 ZHRNUTIE - - - 1. CTRL-g vypí¹e tvoju pozíciu v súbore a status súboru. - G »a premiestni na koniec riadku. - èíslo G »a premiestni na riadok s èíslom. - gg »a presunie na prvý riadok - - 2. Napísanie / nasledované re»azcom vyhµadá re»azec smerom DOPREDU. - Napísanie ? nasledované re»azcom vyhµada re»azec smerom DOZADU. - Napísanie n po vyhµadávaní, vyhµadá nasledujúci výskyt re»azca - v rovnakom smere, prièom N vyhµadá v opaènom smere. - CTRL-O »a vráti spä» na star¹iu pozíciu, CTRL-I na nov¹iu pozíciu. - - 3. Napísanie % keï kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu - párnu zátvorku. - - 4. Pre nahradenie nového za prvý starý v riadku napí¹ :s/starý/nový - Pre nahradenie nového za v¹etky staré v riadku napí¹ :s/starý/nový/g - Pre nahradenie re»azcov medzi dvoma riadkami 3 napí¹ :#,#/starý/nový/g - Pre nahradenie v¹etkých výskytov v súbore napí¹ :%s/starý/nový/g - Pre potvrdenie ka¾dého nahradenia pridaj 'c' :%s/starý/nový/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.1 AKO SPUSTI« VONKAJ©Í PRÍKAZ - - - ** Napí¹ príkaz :! nasledovaný vonkaj¹ím príkazom pre spustenie príkazu ** - - 1. Napí¹ obvyklý píkaz : ktorý nastaví kurzor na spodok obrazovky. - To umo¾ní napísa» príkaz. - - 2. Teraz napí¹ ! (výkrièník). To umo¾ní spusti» hociaký vonkaj¹í príkaz - z príkazového riadku. - - 3. Ako príklad napí¹ ls za ! a stlaè . Tento príkaz - zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku. - Alebo pou¾i :!dir ak ls nefunguje. - -Poznámka: Takto je mo¾né spusti» hociaký vonkaj¹í príkaz s argumentami. -Poznámka: V¹etky príkazy : musia by» dokonèené stlaèením - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.2: VIAC O UKLADANÍ SÚBOROV - - - ** Pre ulo¾enie zmien v súbore, napí¹ :w FILENAME. ** - - 1. Napí¹ :!dir alebo :!ls pre výpis aktuálneho adresára. - U¾ vie¹, ¾e musí¹ za týmto stlaèi» . - - 2. Vyber názov súboru, ktorý e¹te neexistuje, ako napr. TEST. - - 3. Teraz napí¹: :w TEST (kde TEST je názov vybratého súboru.) - - 4. To ulo¾í celý súbor (Vim Tutor) pod názovm TEST. - Pre overenie napí¹ :!dir , èím zobrazí¹ obsah adresára. - -Poznámka: ¾e ak ukonèí¹ prácu s editorom Vim a znovu ho spustí¹ príkazom - vim TEST, súbor bude kópia výuky, keï si ho ulo¾il. - - 5. Teraz odstráò súbor napísaním (MS-DOS): :!del TEST - alebo (Unix): :!rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.3 VÝBER TEXTU PRE ULO®ENIE - - - ** Pre ulo¾enie èasti súboru, napí¹ v pohyb :w FILENAME ** - - 1. Presuò kurozr na tento riadok. - - 2. Stlaè v a presuò kurozr na piatu polo¾ku dole. Poznámka, ¾e - tento text je vyznaèený (highlighted). - - 3. Stlaè klávesu : . V spodnej èasti okna sa objaví :'<,'>. - - 4. Napí¹ w TEST , kde TEST je meno súboru, ktorý zatial neexistuje. - Skontroluj, e vidí¹ :'<,'>w TEST predtým ne¾ stlaèí¹ Enter. - - 5. Vim zapí¹e oznaèené riadky do súboru TEST. Pou¾i :!dir alebo !ls - pre overenie. Zatial ho e¹te nema¾! Pou¾ijeme ho v ïal¹ej lekcii. - -POZNÁMKA: Stlaèením klávesy v sa spustí vizuálne oznaèovanie. - Mô¾e¹ pohybova» kurzorom pre upresnenie vyznaèeného textu. - Potom mô¾e¹ pou¾i» operátor pre vykonanie nejakej akcie - s textom. Napríklad d zma¾e vyznaèený text. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.4: VÝBER A ZLUÈOVANIE SÚBOROV - - - ** Pre vlo¾enie obsahu súboru, napí¹ :r FILENAME ** - - 1. Premiestni kurzor nad tento riadok. - -POZNÁMKA: Po vykonaní kroku 2 uvidí¹ text z lekcie 5.3. Potom sa presuò - dole, aby si videl túto lekciu. - - 3. Teraz vlo¾ súbor TEST pou¾itím príkazu :r TEST kde TEST je názov - súboru. Súbor, ktorý si pou¾il je umiestnený pod riadkom s kurzorom. - -POZNÁMKA: Mô¾e¹ tie¾ naèíta» výstup vonkaj¹ieho príkazu. Napríklad :r !ls - naèíta výstup príkazu ls a umiestni ho za pozíciu kurzora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 5 ZHRNUTIE - - - 1. :!príkaz spustí vonkaj¹í príkaz. - - Niektoré vyu¾iteµné príklady sú: - (MS_DOS) (UNIX) - :!dir :!ls - zobrazí obsah adresára - :!del FILENAME :!rm FILENAME - odstráni súbor FILENAME - - 2. :w FILENAME ulo¾í aktuálny súbor na disk pod menom FILENAME. - - 3. v pohyb :w FILENAME ulo¾í vizuálne oznaèené riadky do - súboru FILENAME. - - 4. :r FILENAME vyberie z disku súbor FILENAME a vlo¾í ho do aktuálneho - súboru za pozíciou kurzora. - - 5. :r !dir naèíta výstup z príkazu dir a vlo¾í ho za pozíciu kurzora. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.1: PRÍKAZ OTVORI« - - -** Napí¹ o pre vlo¾enie riadku pod kurzor a prepnutie do vkladacieho módu ** - - 1. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou --->. - - 2. Napí¹ o (malé písmeno) pre vlo¾enie èistého riadku pod kurzorm - a prepnutie do vkladacieho módu. - - 3. Teraz skopíruj riadok oznaèený ---> a stlaè pre ukonèenie - vkladacieho módu. - ----> Po napísaní o sa kurzor premiestní na vlo¾ený riadok do vkladacieho - módu. - - 4. Pre otvorenie riadku nad kurzorom, jednotucho napí¹ veµké O , - namiesto malého o. Vyskú¹aj si to na riadku dole. - ----> Vlo¾ riadok nad týmto napísaním O, keï kurzor je na tomto riadku. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.2: PRÍKAZ PRIDA« - - - ** Napí¹ a pre vlo¾enie textu ZA kurzor. ** - - 1. Presuò kurzor ni¾¹ie na koniec prvého riadku oznaèeného znaèkou ---> - - 2. Stlaè klávesu e dokiaµ kurozr nieje na konci riadku. - - 3. Napí¹ a (malé písmeno) pre pridanie textu ZA kurzorom. - - 4. Dokonèí slovo tak ako je to v druhom riadku. Stla¹ pre - opustenie vkladacieho módu. - - 5. Pou¾i e na presun na ïal¹ie nedokonèené slovo a zopakuj kroky 3 a 4. - ----> Tento ri ti dovoµuje nácv priávan testu na koniec riadku. ----> Tento riadok ti dovoµuje nácvik pridávania textu na koniec riadku. - -POZNÁMKA: a, i, A ¹tartujú rovnaký vkladací mód, jediný rozidel je, kde - sa znaky vkladajú. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.3: INÝ SPOSOB NAHRADZOVANIA - - - ** Napí¹ veµké R pre nahradenie viac ako jedného znaku. ** - - 1. Presuò kurzor ni¾¹ie na prvý riadok oznaèený znaèkou --->. Premiestni - kurzor na zaèiatok prvého výskytu xxx. - - 2. Teraz napí¹ R a napí¹ èíslo uvedené v druhom riadku, tak¾e - sa ním nahradí pôvodné xxx. - - 3. Stlaè pre opustenie nahradzovacieho módu. Poznámka, ¾e zvy¹ok - riadku zostane nezmenený. - - 4. Zopakuj tieto kroky pre nahradenie zvy¹ných xxx. - ----> Pridaním 123 ku xxx dostane¹ xxx. ----> Pridaním 123 ku 456 dostane¹ 579. - -POZNÁMKA: Nahradzovací mód je ako vkladací mód, ale ka¾dý napísaný znak - zma¾e existujúci znak. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Lekcia 6.4: Copy Paste textu - - ** pou¾í operátor y pre copy textku a p pre jeho paste ** - - 1. Choï ni¾¹ie na riadok oznaèený ---> a umiestni kurozr za "a)". - - 2. Na¹tartuj vizuálny mód pou¾itím v a presuò kurozr pred "first". - - 3. Napí¹ y pre vystrihnutie (copy) oznaèeného textu. - - 4. Presuò kurozr na koniec ïal¹ieho riadku: j$ - - 5. Napí¹ p pre vlo¾nie (paste) textu. Potom napí¹: a druha . - - 6. Pou¾i vizuálny mód pre oznaèenie "polo¾ka.", vystrihni to - pou¾itím y, presuò sa na koniec nasledujúceho riadku pou¾itím j$ - a vlo¾ sem text pou¾itím p. - ----> a) toto je prvá polo¾ka ----> b) - -POZNÁMKA: Mô¾e¹ pou¾i» tie¾ y ako operátor; yw vystrihne jedno slovo. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.5: NASTAVENIE MO®NOSTÍ - - -** Nastav mo¾nosti, tak¾e vyhµadávanie alebo nahradzovanie ignoruje - rozli¹ovanie ** - - - 1. Vyhµadaj re»azec 'ignore' napísaním: - /ignore - Zopakuj vyhµadávanie niekoµko krát stlaèením klávesy n . - - 2. Nastav mo¾nos» 'ic' (Ignore case) napísaním príkazu: - :set ic - - 3. Teraz vyhµadaj re»azec 'ingore' znova stlaèením klávesy n - Poznámka, ¾e teraz sú vyhµadané aj Ignore a IGNORE. - - 4. Nastav mo¾nos»i 'hlsearch' a 'incsearch': - :set hls is - - 5. Teraz spusti vyhµadávací príkaz znovu, a pozri èo sa stalo: - /ignore - - 6. Pre opetovné zapnutie rozly¹ovania veµkých a malých písmen - napí¹: :set noic - -POZNÁMKA: Na odstránenie zvýraznenia výrazov napí¹: :nohlsearch -POZNÁMKA: Ak chce¹ nerozly¹ova» veµkos» písmen len pre jedno - pou¾itie vyhµadávacieho príkazu, pou¾i \c: /ignore\c - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 6 ZHRNUTIE - - - 1. Napí¹ o pre otvorenie riadku pod kurzorom a ¹tart vkladacieho módu. - Napí¹ O pre otvorenie riadku nad kurzorom. - - 2. Napí¹ a pre vkladanie textu ZA kurzor. - Napí¹ A pre vkladanie textu za koncom riadku. - - 3. Príkaz e presunie kurozr na koniec slova - - 4. Operátor y vystrihne (skopíruje) text, p ho vlo¾í. - - 5. Napísanie veµkého R prepne do nahradzovacieho módu, kým nieje - stlaèené . - - 6. Napísanie ":set xxx" nastaví mo¾nos» "xxx". Niektoré nastavenia sú: - 'ic' 'ignorecase' ignoruje veµké a malé písmená poèas vyhµadávania. - 'is' 'incsearch' zobrazuje èiastoèné re»azce vyhµadávaného re»azca. - 'hls' 'hlsearch' vyznaèí v¹etky vyhµadávané re»azce. - Mô¾e¹ pou¾i» hociktorý z dlhých a krátkych názvov mo¾ností. - - 7. Vlo¾ "no" pred nastavenie pre jeho vypnutie: :set noic - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.1: ZÍSKANIE NÁPOVEDY - - - ** Pou¾ívaj on-line systém nápovedy ** - - Vim má obsiahly on-line systém nápovedy. Pre od¹tartovanie, vyskú¹aj jeden - z týchto troch: - - stlaè klávesu (ak nejakú má¹) - - stlaè klávesu (ak nejakú má¹) - - napí¹ :help - - Èítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. - Napí¹ CTRL-W CTRL-W pre skok z jedného okna do druhého. - Napí¹ :q èím zatvorí¹ okno nápovedy. - - Mô¾e¹ nájs» help ku hociakej téme pridaním argumentu ku príkazu ":help". - Vyskú¹aj tieto (nezabudni stlaèi» ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.2: VYTVORENIE ©TARTOVACIEHO SKRIPTU - - ** Zapni funkcie editora Vim ** - - Vim má omnoho viac funkcii ne¾ Vi, ale veè¹ina z nich je implicitne - vypnutá. Pre pou¾ívanie viac Vim funkcii vytvor "vimrc" súbor. - - 1. Zaèni editova» "vimrc" súbor, to závisí na pou¾itom systéme: - :e ~/.vimrc pre Unix - :e $VIM/_vimrc pre MS-Windows - - 2. Teraz si preèítaj text príkladu "vimrc" súboru: - - :r $VIMRUNTIME/vimrc_example.vim - - 3. Ulo¾ súbor: - :w - - Pri nasledujúcom ¹tarte editora Vim sa pou¾ije zvýrazòovanie syntaxe. - Do "vimrc" súboru mô¾e¹ prida» v¹etky svoje uprednostòované nastavenia. - Pre viac informácii napí¹ :help vimrc-intro - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - LEKCIA 7.3 DOKONÈENIE - - ** Dokonèi príkaz na príkazovom riadku pou¾itím CTRL-D a ** - - 1. Uisti sa, ¾e Vim nieje v kompatibilnom móde: :set nocp - - 2. Pozri sa aké súbory sa nachádzajú v adresári: :!ls alebo :!dir - - 3. Napí¹ zaèiatok príkazu: :e - - 4. Stlaè CTRL-D a Vim zobrazí zoznam príkazov zaèínajúcich "e". - - 5. Stlaè a Vim dokonèí meno príkazu na ":edit". - - 6. Teraz pridaj medzerník a zaèiatok mena existujúceho súboru: - :edit FIL - - 7. Stlaè . Vim dokonèí meno (ak je jedineèné). - -POZNÁMKA: Dokonèovanie funguje pre veµa príkazov. Vyskú¹aj stlaèenie - CTRL-D a . ©peciálne je to u¾itoèné pre príkaz :help. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - LEKCIA 7 ZHRNUTIE - - 1. Napí¹ :help alebo stlaè alebo pre otvorenie okna nápovedy. - - 2. Napí¹ :help príkaz pre vyhµadanie nápovedy ku príkazu príkaz. - - 3. Napí¹ CTRL-W CTRL-W na preskoèenie do iného okna. - - 4. Napí¹ :q pre zatvorenie okna nápovedy - - 5. Vytvor ¹tartovací skript vimrc pre udr¾anie uprednostòovaných nastavení. - - 6. Poèas písania príkazu : stlaè CTRL-D pre zobrazenie dokonèení. - Stlaè pre pou¾itie jedného z dokonèení. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - - Toto vymedzuje výuku Vimu. Toto je urèené pre strucný prehµad o editore - Vim, úplne postaèujúce pre µahké a obstojné pou¾ívanie tohto editora. - Táto výuka je ïaleko od kompletnosti, preto¾e Vim má omnoho viacej príkazov. - Ako ïal¹ie si preèítaj u¾ívatµský manuál: ":help user-manual". - - Pre ïal¹ie èítanie a ¹túdium je odporúèaná kniha: - Vim - Vi Improved - od Steve Oualline - Vydavateµ: New Riders - Prvá kniha urèená pre Vim. ©peciálne vhodná pre zaèiatoèníkov. - Obsahuje mno¾stvo príkladov a obrázkov. - Pozri na http://iccf-holland.org/click5.html - - Táto kniha je star¹ia a je viac o Vi ako o Vim, ale je tie¾ odporúèaná: - Learning the Vi Editor - od Linda Lamb - Vydavateµ: O'Reilly & Associates Inc. - Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi. - ©ieste vydanie obsahuje tie¾ informácie o editore Vim. - - Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware, - Colorado School of Mines s pou¾itím my¹lienok dodanými od Charles Smith, - Colorado State University. E-mail: bware@mines.colorado.edu. - - Modifikované pre Vim od Bram Moolenaar. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Preklad do Slovenèiny: ¥ubo¹ Èelko - e-mail: celbos@inmail.sk - Last Change: 2006 Apr 18 - encoding: iso8859-2 diff --git a/share/vim/vim73/tutor/tutor.sk.cp1250 b/share/vim/vim73/tutor/tutor.sk.cp1250 deleted file mode 100644 index f32c9b12..00000000 --- a/share/vim/vim73/tutor/tutor.sk.cp1250 +++ /dev/null @@ -1,1008 +0,0 @@ -=============================================================================== -= V i t a j t e v o V I M T u t o r i a l i - Verzia 1.7 = -=============================================================================== - - Vim je ve¾mi výkonný editor, ktorý má príliž ve¾a príkazov na to aby - mohli byt všetky popísané vo výuke akou je táto. Táto výuka - popisuje dostatoèné množstvo príkazov nato aby bolo možné používa� - Vim ako viacúèelový editor. - - Približný èas potrebný na prebratie tejto výuky je 25-30 minút, - závisí na tom, ko¾ko je stráveného èasu s preskúšavaním. - - UPOZORNENIE: - Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby - sa mohlo precvièova� na òom (pri štarte "vimtutor" je toto kópia). - - Je dôležité zapamäta� si, že táto výuka je vytvorená pre výuku - používaním. To znamená, že je potrebné si príkazy vyskúša�, aby bolo - uèenie správne. Ak len èitas text, príkazy zabudneš! - - Presvedè sa, že Shift-Lock NIEJE stlaèený a stlaèt klávesu - j nieko¾ko krát, aby sa kurzor posunul nato¾ko, že lekcia 1.1 - celkom zaplní obrazovku. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.1: POHYB KURZOROM - - - ** Pre pohyb kurzorum stlaè klávesy h,j,k,l ako je znázornené. ** - ^ - k Funkcia: Klávesa h je na¾avo a vykoná pohyb do¾ava. - < h l > Klávesa l je napravo a vykoná pohyb doprava. - j Klávesa j vyzerá ako šípka dole - v - 1. Pohybuj kurzorom po obrazovke, kým si na to nezvykneš. - - 2. Drž stlaèenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. ----> Teraz sa už vieš pohybova� na nasledujúcu lekciu. - - 3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.2. - -Poznámka: Ak si niesi istý tým èo si napísal, stlaè - na prechod do normálneho módu. - -Poznámka: Kurzorové klávesy sú tiež funkèné. Ale používaním hjkl sa budeš - schopný pohybova� rýchlejšie, keï si zvykneš ich používa�. Naozaj! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 1.2: ZATVÁRANIE VIMU - - - !! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú túto lekciu !! - - 1. Stlaè klávesu (aby si sa uèite nachádzal v normálnom móde) - - 2. Napíš: :q! . - Tým ukonèíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal. - - 3. Keï sa dostaneš na príkazový riadok, napíš príkaz, ktorým sa dostaneš - spe� do tejto výuky. To môže by�: vimtutor - - 4. Ak si si tieto kroky spo¾ahlivo zapamätal, vykonaj kroky 1 až 3, pre - ukonèenie a znovu spustenie editora. - -POZNÁMKA: :q! neuloží zmeny, ktoré si vykonal. O nieko¾ko lekcií - sa nauèíš ako uloži� zmeny do súboru - - 5. presuò kurzor dole na lekciu 1.3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.3: EDITÁCIA TEXTU - MAZANIE - - -** Stlaèenie klávesy x v normálnom móde zmaže znak na mieste kurzora. ** - - 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - - 2. Aby si mohol odstráni� chyby, pohybuj kurzorom kým neprejde na znak, - ktorý chceš zmaza�. - - 3. Stlaè klávesu x aby sa zmazal nechcený znak. - - 4. Zopakuj kroky 2 až 4 až kým veta nieje správna. - ----> Kraava skooèilla ccezz mesiiac. - - 5. Ak je veta správna, prejdi na lekciu 1.4. - -POZNÁMKA: Neskúšaj si zapamäta� obsah tejto výuky, ale sa uè používaním. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.4: EDITÁCIA TEXTU - VKLADANIE - - - ** Stlaèenie klávesy i umožòuje vkladanie textu. ** - - 1. Presuò kurzor nižšie na prvý riadok za znaèku --->. - - 2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok, - presuò kurzor na prvý znak za misto, kde má by� text vložený. - - 3. Stlaè klávesu i a napíš potrebný text. - - 4. Po opravení každej chyby, stlaè pre návrat do normálneho módu. - Zopakuj kroky 2 až 4 kým nieje veta správna. - ----> Tu je text chýbajúci tejto. ----> Tu je nejaký text chýbajúci od tejto èiary. - - 5. Keï sa dostatoène nauèíš vklada� text, prejdi na nasledujúce zhrnutie. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.5: EDITÁCIA TEXTU - PRIDÁVANIE - - - ** Stlaèenie klávesy A umožòuje pridáva� text. ** - - 1. Presuò kurozr nižšie na prvý riadok za znaèkou --->. - Nezáleží na tom, na ktorom znaku sa kurzor v tom riadku nachádza. - - 2. Stlaè klávesu A a napíš potrebný text. - - 3. Po pridaní textu stlaè klávesu pre návrat do Normálneho módu. - - 4. Presuò kurozr na druhý riadok oznaèený ---> a zopakuj - kroky 2 a 3 kým nieje veta správna. - ----> Tu je nejaký text chýbajúci o - Tu je nejaký text chýbajúci od tia¾to. ----> Tu tiež chýba nej - Tu tiež chýba nejaký text. - - 5. Keï sa dostatoène nauèíš pridáva� text, prejdi na lekciu 1.6. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.6: EDITÁCIA SÚBORU - - - ** Napísaním :wq sa súbor uloží a zavrie ** - -!! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú lekciu!! - -1. Opusti túto výuku, ako si to urobil v lekcii 1.2: :q! - -2. Do príkazového riadku napíš príkaz: vim tutor - 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, - ktorý chceš editova�. Použi taký súbor, ktorý môžeš meni�. - -3. Vlož a zmaž text tak, ako si sa nauèil v predošlých lekciach. - -4. Ulož súbor so zmenami a opusti Vim príkazom: :wq - -5. Reštartuj vimtutor a presuò sa dole na nasledujúce zhrnutie. - -6. Urob tak po preèítaní predošlých krokov a porozumeniu im. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZHRNUTIE LEKCIE 1 - - - 1. Kurzor sa pohybuje použitím kláves so šípkami alebo klávesmi hjkl. - h (do lava) j (dole) k (hore) l (doprava) - - 2. Pre spustenie Vimu (z príkazového riadku) napíš: vim FILENAME - - 3. Na ukonèenie Vimu napíš: :q! pre zrušenie všetkých zmien - alebo napíš: :wq pre uloženie zmien. - - 4. Na zmazanie znaku na mieste kurzora napíš: x - - 5. Pre vloženie textu na mieste kurzora v normálnom móde napíš: - i napíš vkladaný text vkladanie pred kurzor - A napíš pridávaný text vkladanie za riadok - -POZNÁMKA: Stlaèenie �a premiestní do normálneho módu alebo zruší - nejaký nechcený a èiastoène dokonèený príkaz. - -Teraz pokraèuj lekciou 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.1: Mazacie príkazy - - - ** Napísanie príkazu dw zmaže znaky do konca slova. ** - -1. Stlaè aby si bol bezpeène v normálnom móde. - -2. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - -3. Presuò kurzor na zaèiatok slova, ktoré je potrebné zmaza�. - -4. Napíš dw aby slovo zmizlo. - -POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keï ho - napíšeš. Vim na teba poèká, aby si mohol napísa� - písmeno w. Ak vidíš nieèo iné ako d , tak si napísal - nesprávny znak; stlaè a zaèni znova. - ----> Tu je nieko¾ko slov zábava, ktoré nie patria list do tejto vety. - -5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 2.2. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.2: VIAC MAZACÍCH PRÍKAZOV - - - ** Napísanie príkazu d$ zmaže znaky do konca riadku ** - -1. Stlaè aby si bol bezpeène v normálnom móde. - -2. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - -3. Presuò kurzor na koniec správnej vety (ZA prvú bodku). - -4. Napíš d$ aby sa zmazali znaky do konca riadku. - ----> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. - - -5. Prejdi na lekciu 2.3 pre pochopenie toho èo sa stalo. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.3: OPERÁTORY A POHYBY - - Ve¾a príkazov, ktoré menia text sú odvodené od operátorov a pohybov. - Formát pre príkaz mazania klávesou d je nasledovný: - - d pohyb - - kde: - d - je mazací operátor - pohyb - je to èo operátor vykonáva (vypísané nižšie) - - Krátky list pohybov: - w - do zaèiatku ïalšieho slova, okrem jeho prvého písmena. - e - do konca terajšieho slova, vrátane posledného znaku. - $ - do konca riadku, vrátane posledného znaku - - Takže napísaním de sa zmaže všetko od kurzora do konca slova. - -POZNÁMKA: Stlaèením iba pohybu v normálnom móde bez operátora - sa presunie kurzor tak ako je to špecivikované. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.4: Použitie viacnásobného pohybu - - - ** Napísaním èísla pred pohyb ho zopakuje zadný poèet krát ** - - 1. Presuò kurozr nižšie na zaèiatok riadku oznaèeného --->. - - 2. Napíš 2w a kurozr sa presunie o dve slová vpred. - - 3. Napíš 3e a kurozr sa presunie vpred na koniec tretieho slova. - - 4. Napíš 0 (nula) a kurozr sa presunie na zaèiatok riadku. - - 5. Zopakuj kroky 2 a 3 s rôznymi èíslami. - ----> Toto je riadok so slovami po kotrých sa môžete pohybova�. - - 6. Prejdi na lekciu 2.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.5: POUŽITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE - - - ** Napísanie èísla spolu s operátorom ho zopakuje zadaný poèet krát ** - - V kombinácii operátorov mazania a pohybu spomínaného vyššie vlož poèet - pred pohyb pre docielenie hromadného mazania: - d èíslo pohyb - - 1. Presuò kurzor na prvé slovo písané VE¼KÝMI PÍSMENAMI - v riadku oznaèenom --->. - - 2. Napíš 2dw a zmažeš dve slová písané VE¼KÝMI PÍSMENAMI - - 3. Zopakuj kroky 1 a 2 s použitím rôzneho èísla tak aby si zmazal slová - písané ve¾kými písmenami jedným príkazom. - ----> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. - -POZNÁMKA: Èíslo medzi operátorom d a pohybom funguje podobne ako pri - použití s pohybom bez operátora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.6: OPERÁCIE S RIADKAMI - - - ** Napísanie príkazu dd zmaže celý riadok. ** - -Vzh¾adom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, -že bude jednoduchšie maza� celý riadok napísaním dvoch písmen d. - -1. Presuò kurzor na druhý riadok v texte na spodu. -2. Napíš dd aby si zmazal riadok. -3. Prejdi na štvrtý riadok. -4. Napíš 2dd aby si zmazal dva riadky. - - 1) Ruže sú èervené, - 2) Blato je zábavné, - 3) Fialky sú modré, - 4) Mám auto, - 5) Hodinky ukazujú èas, - 6) Cukor je sladký, - 7) A to si ty. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.7: PRÍKAZ UNDO - - -** Stlaè u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** - -1. Presuò kurzor nižšie na riadok oznaèený znaèkou ---> a premiestni ho na - prvú chybu. -2. Napíš x pre zmazanie prvého nechceného riadku. -3. Teraz napíš u èím vrátíš spä� posledne vykonaný príkaz. -4. Teraz oprav všetky chyby na riadku použitím príkazu x . -5. Teraz napíš ve¾ké U èím vrátíš riadok do pôvodného stavu. -6. Teraz napíš u nieko¾ko krát, èím vrátíš spä� príkaz U. -7. Teraz napíš CTRL-R (drž klávesu CTRL stlaèenú kým stláèaš R) nieko¾ko - krát, èím vrátíš spä� predtým vrátené príkazy (undo z undo). - ----> Opprav chybby nna toomto riadku a zmeeò ich pommocou undo. - - 8. Tieto príkazy sú èasto používané. Teraz prejdi na zhrnutie lekcie 2. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 2 ZHRNUTIE - - - 1. Pre zmazanie znakov od kurzora do konca slova napíš: dw - - 2. Pre zmazanie znakov od kurzora do konca riadku napíš: d$ - - 3. Pre zmazanie celého riadku napíš: dd - - 4. Pre zopakovanie pohybu, napíš pred neho èíslo: 2w - - 5. Formát pre píkaz: - - operátor [èíslo] pohyb - kde: - operátor - èo treba robi�, napríklad d pre zmazanie - [èíslo] - je volite¾ný poèet pre opakovanie pohybu - pohyb - pohyb po texte vzh¾adom na operátor, napríklad w (slovo), - $ (do konca riadku), atï. - - 6. Pre pohyb na zaèiatok riadku použi nulu: 0 - - 7. Pre vrátenie spä� predošlej operácie napíš: u (malé u) - Pre vrátenie všetkých úprav na riadku napíš: U (ve¾ké U) - Pre vrátenie vrátených úprav napíš: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.1: PRÍKAZ VLOŽI� - - - ** Napísanie príkazu p vloží psledný výmaz za kurzor. ** - - 1. Presuò kurzor nižšie na prvý riadok textu. - - 2. Napíš dd èím zmažeš riadok a uložíš ho do buffera editora Vim. - - 3. Presuò kurzor vyššie tam, kam zmazaný riadok patrí. - - 4. Ak napíšeš v normálnom móde p zmazaný riadk sa vloží. - - 5. Zopakuj kroky 2 až 4, kým riadky niesú v správnom poradí. - ----> d) Tiež sa dokážeš vzdeláva�? ----> b) Fialky sú modré, ----> c) Inteligencia sa vzdeláva, ----> a) Ruže sú èervené, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.2: PRÍKAZ NAHRADENIA - - - ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** - - 1. Presuò kurzor nižšie na prví riadok textu oznaèeného znaèkou --->. - - 2. Presuò kurzor na zaèiatok prvej chyby. - - 3. napíš r a potom znak, ktorý tam má by�. - - 4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým. - ----> Kaï bol tento riasok píaaný, niekro stlašil nesprábne klávesy! ----> Keï bol tento riadok písaný, niekto stlaèil nesprávne klávesy! - - 5. Teraz prejdi na lekciu 3.2. - -POZNÁMKA: Pamätaj si, že nauèi� sa môžeš len používanim, nie pamätaním. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.3. PRÍKAZ ÚPRAVY - - - ** Ak chceš zmeni� èas� slova do konca slova, napíš ce . ** - - 1. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. - - 2. Umiestni kurzor na písmeno o v slove rosfpl. - - 3. Napíš ce a oprav slovo (v tomto prípade napíš 'iadok'.) - - 4. Stlaè a prejdi na ïalší znak, ktorý treba zmeni�. - - 5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá. - ----> Tento rosfpl má nieko¾ko skic, ktoré je pirewvbí zmeni� piy�uèán príkazu. ----> Tento riadok má nieko¾ko slov, ktoré je potrebné zmeni� použitím príkazu. - -Poznámka, že ce zmaže slovo a nastaví vkladací mód. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.4: VIAC ZMIEN POUŽITÍM c - - - ** Príkaz pre úpravy sa používa s rovnakými pohybmi ako pre mazanie ** - - 1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je: - - c [èíslo] pohyb - - 2. Pohyby sú rovnaké, ako napríklad w (slovo) a $ (koniec riadku). - - 3. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. - - 4. Presuò kurzor na prvú chybu. - - 5. napíš c$ aby si mohol upravi� zvyšok riadku pod¾a druhého - a stlaè . - ----> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. ----> Koniec tohto riadku potrebuje opravi� použitím príkazu c$ . - -POZNÁMKA: Môžeš použi� klávesu backspace na úpravu zmien poèas písania. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 3 ZHRNUTIE - - - 1. Na vloženie textu, ktorý už bol zmazaný, napíš p . To vloží zmazaný - text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom). - - 2. Pre naradenie znaku na mieste kurzora, napíš r a potom znak, ktorý - nahradí pôvodný znak. - - 3. Príkaz na upravenie umožòuje zmeni� od kurzora až po miesto, ktoré - urèuje pohyb. napr. Napíš ce èím zmníš text od pozície - kurzora do konca slova, c$ zmení text do konca riadku. - - 4. Formát pre nahradenie je: - - c [èíslo] pohyb - - -Teraz prejdi na nalsedujúcu lekciu. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.1: POZÍCIA A STATUS SÚBORU - - - ** Stlaè CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. - Napíš G pre presun na riadok v súbore. ** - - Poznámka: Preèítaj si celú túto lekciu skôr ako zaèneš vykonáva� kroky!! - - 1. Drž stlaèenú klávesu Ctrl a stlaè g . Toto nazývame CTRL-G. - Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou - v súbore. Zapamätajsi si èíslo riadku pre použitie v kroku 3. - - 2. Stlaè G èím sa dostaneš na spodok súboru. - Napíš gg èím sa dostaneš na zaèiatok súboru. - - 3. Napíš èíslo riadku na ktorom si sa nachádzal a stlaè G. To �a - vráti na riadok, na ktorom si prvý krát stlaèil CTRL-G. - - 4. Ak sa cítíš schopný vykona� teto kroky, vykonaj kroky 1 až 3. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.2: PRÍKAZ VYH¼ADÁVANIA - - - ** Napíš / nasledované re�azcom pre vyh¾adanie príslušného re�azca. ** - - 1. Napíš znak / v normálnom móde. Poznámka, že tento znak sa spolu - s kurzorom zobrazí v dolnej èasti obrazovky s : príkazom. - - 2. Teraz napíš 'errroor' . To je slovo, ktoré chceš vyh¾ada�. - - 3. Pre vyh¾adanie ïalšieho výskytu rovnakého re�azca, stlaè jednoducho n. - Pre vyh¾adanie ïalšieho výskytu rovnakého re�azca opaèným smerom, - N. - - 4. Ak chceš vyh¾ada� re�azec v spätnom smere, použí príkaz ? miesto - príkazu /. - - 5. Pre návrat na miesto z ktorého si prišiel stlaè CTRL-O (drž stlaèenú - klávesu Ctrl poèas stlaèenia klávesy o). Zopakuj pre ïalší návrat - spä�. CTRL-I ide vpred. - -POZNÁMKA: "errroor" nieje spôsob hláskovania error; errroor je error. -POZNÁMKA: Keï vyh¾adávanie dosiahne koniec tohto súboru, bude pokraèova� na - zaèiatku, dokia¾ nieje resetované nastavenie 'wrapscan' . - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.3: VYH¼ADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK - - - ** Napíš % pre vyh¾adanie príslušného znaku ),], alebo } . ** - - 1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku nižšie - oznaèeného znaèkou --->. - - 2. Teraz napíš znak % . - - 3. Kurzor sa premiestni na zodpovedajúcu zátvorku. - - 4. Napíš % pre presun kurzoru spä� na otvárajúcu zátvorku. - - 5. Presuò kurzor na iný zo znakov (,),[,],{ alebo } a všimni si - èo % vykonáva. - ----> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. )) - -Poznámka: Toto je ve¾mi výhodné použí� pri ladení programu s chýbajúcimi - uzatvárajúcimi zátvorkami! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.4: PRÍKAZ NAHRADENIA - - - ** Napíš :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** - - 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - - 2. Napíš :s/thee/the . Poznamka, že tento príkaz zmení len prvý - výskyt "thee" v riadku. - - 3. Teraz napíš :s/thee/the/g èo znamená celkové nahradenie v riadku. - Toto nahradí všetky výskyty v riadku. - ----> Thee best time to see thee flowers in thee spring. - - 4. Pre zmenu všetkých výskytov daného re�azca medzi dvomi ridakami, - napíš :#,#s/starý/nový/g kde #,# sú èísla dvoch riadkov, v rozsahu - ktorých sa nahradenie vykoná. - napíš :%s/starý/nový/g pre zmenu všetkých výskytov v celom riadku - napíš :%s/starý/nový/gc nájde všetky výskyty v celom súbore, - s otázkou èi nahradi� alebo nie - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 4 ZHRNUTIE - - - 1. CTRL-g vypíše tvoju pozíciu v súbore a status súboru. - G �a premiestni na koniec riadku. - èíslo G �a premiestni na riadok s èíslom. - gg �a presunie na prvý riadok - - 2. Napísanie / nasledované re�azcom vyh¾adá re�azec smerom DOPREDU. - Napísanie ? nasledované re�azcom vyh¾ada re�azec smerom DOZADU. - Napísanie n po vyh¾adávaní, vyh¾adá nasledujúci výskyt re�azca - v rovnakom smere, prièom N vyh¾adá v opaènom smere. - CTRL-O �a vráti spä� na staršiu pozíciu, CTRL-I na novšiu pozíciu. - - 3. Napísanie % keï kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu - párnu zátvorku. - - 4. Pre nahradenie nového za prvý starý v riadku napíš :s/starý/nový - Pre nahradenie nového za všetky staré v riadku napíš :s/starý/nový/g - Pre nahradenie re�azcov medzi dvoma riadkami 3 napíš :#,#/starý/nový/g - Pre nahradenie všetkých výskytov v súbore napíš :%s/starý/nový/g - Pre potvrdenie každého nahradenia pridaj 'c' :%s/starý/nový/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.1 AKO SPUSTI� VONKAJŠÍ PRÍKAZ - - - ** Napíš príkaz :! nasledovaný vonkajším príkazom pre spustenie príkazu ** - - 1. Napíš obvyklý píkaz : ktorý nastaví kurzor na spodok obrazovky. - To umožní napísa� príkaz. - - 2. Teraz napíš ! (výkrièník). To umožní spusti� hociaký vonkajší príkaz - z príkazového riadku. - - 3. Ako príklad napíš ls za ! a stlaè . Tento príkaz - zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku. - Alebo použi :!dir ak ls nefunguje. - -Poznámka: Takto je možné spusti� hociaký vonkajší príkaz s argumentami. -Poznámka: Všetky príkazy : musia by� dokonèené stlaèením - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.2: VIAC O UKLADANÍ SÚBOROV - - - ** Pre uloženie zmien v súbore, napíš :w FILENAME. ** - - 1. Napíš :!dir alebo :!ls pre výpis aktuálneho adresára. - Už vieš, že musíš za týmto stlaèi� . - - 2. Vyber názov súboru, ktorý ešte neexistuje, ako napr. TEST. - - 3. Teraz napíš: :w TEST (kde TEST je názov vybratého súboru.) - - 4. To uloží celý súbor (Vim Tutor) pod názovm TEST. - Pre overenie napíš :!dir , èím zobrazíš obsah adresára. - -Poznámka: že ak ukonèíš prácu s editorom Vim a znovu ho spustíš príkazom - vim TEST, súbor bude kópia výuky, keï si ho uložil. - - 5. Teraz odstráò súbor napísaním (MS-DOS): :!del TEST - alebo (Unix): :!rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.3 VÝBER TEXTU PRE ULOŽENIE - - - ** Pre uloženie èasti súboru, napíš v pohyb :w FILENAME ** - - 1. Presuò kurozr na tento riadok. - - 2. Stlaè v a presuò kurozr na piatu položku dole. Poznámka, že - tento text je vyznaèený (highlighted). - - 3. Stlaè klávesu : . V spodnej èasti okna sa objaví :'<,'>. - - 4. Napíš w TEST , kde TEST je meno súboru, ktorý zatial neexistuje. - Skontroluj, e vidíš :'<,'>w TEST predtým než stlaèíš Enter. - - 5. Vim zapíše oznaèené riadky do súboru TEST. Použi :!dir alebo !ls - pre overenie. Zatial ho ešte nemaž! Použijeme ho v ïalšej lekcii. - -POZNÁMKA: Stlaèením klávesy v sa spustí vizuálne oznaèovanie. - Môžeš pohybova� kurzorom pre upresnenie vyznaèeného textu. - Potom môžeš použi� operátor pre vykonanie nejakej akcie - s textom. Napríklad d zmaže vyznaèený text. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.4: VÝBER A ZLUÈOVANIE SÚBOROV - - - ** Pre vloženie obsahu súboru, napíš :r FILENAME ** - - 1. Premiestni kurzor nad tento riadok. - -POZNÁMKA: Po vykonaní kroku 2 uvidíš text z lekcie 5.3. Potom sa presuò - dole, aby si videl túto lekciu. - - 3. Teraz vlož súbor TEST použitím príkazu :r TEST kde TEST je názov - súboru. Súbor, ktorý si použil je umiestnený pod riadkom s kurzorom. - -POZNÁMKA: Môžeš tiež naèíta� výstup vonkajšieho príkazu. Napríklad :r !ls - naèíta výstup príkazu ls a umiestni ho za pozíciu kurzora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 5 ZHRNUTIE - - - 1. :!príkaz spustí vonkajší príkaz. - - Niektoré využite¾né príklady sú: - (MS_DOS) (UNIX) - :!dir :!ls - zobrazí obsah adresára - :!del FILENAME :!rm FILENAME - odstráni súbor FILENAME - - 2. :w FILENAME uloží aktuálny súbor na disk pod menom FILENAME. - - 3. v pohyb :w FILENAME uloží vizuálne oznaèené riadky do - súboru FILENAME. - - 4. :r FILENAME vyberie z disku súbor FILENAME a vloží ho do aktuálneho - súboru za pozíciou kurzora. - - 5. :r !dir naèíta výstup z príkazu dir a vloží ho za pozíciu kurzora. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.1: PRÍKAZ OTVORI� - - -** Napíš o pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu ** - - 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. - - 2. Napíš o (malé písmeno) pre vloženie èistého riadku pod kurzorm - a prepnutie do vkladacieho módu. - - 3. Teraz skopíruj riadok oznaèený ---> a stlaè pre ukonèenie - vkladacieho módu. - ----> Po napísaní o sa kurzor premiestní na vložený riadok do vkladacieho - módu. - - 4. Pre otvorenie riadku nad kurzorom, jednotucho napíš ve¾ké O , - namiesto malého o. Vyskúšaj si to na riadku dole. - ----> Vlož riadok nad týmto napísaním O, keï kurzor je na tomto riadku. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.2: PRÍKAZ PRIDA� - - - ** Napíš a pre vloženie textu ZA kurzor. ** - - 1. Presuò kurzor nižšie na koniec prvého riadku oznaèeného znaèkou ---> - - 2. Stlaè klávesu e dokia¾ kurozr nieje na konci riadku. - - 3. Napíš a (malé písmeno) pre pridanie textu ZA kurzorom. - - 4. Dokonèí slovo tak ako je to v druhom riadku. Stlaš pre - opustenie vkladacieho módu. - - 5. Použi e na presun na ïalšie nedokonèené slovo a zopakuj kroky 3 a 4. - ----> Tento ri ti dovo¾uje nácv priávan testu na koniec riadku. ----> Tento riadok ti dovo¾uje nácvik pridávania textu na koniec riadku. - -POZNÁMKA: a, i, A štartujú rovnaký vkladací mód, jediný rozidel je, kde - sa znaky vkladajú. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.3: INÝ SPOSOB NAHRADZOVANIA - - - ** Napíš ve¾ké R pre nahradenie viac ako jedného znaku. ** - - 1. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. Premiestni - kurzor na zaèiatok prvého výskytu xxx. - - 2. Teraz napíš R a napíš èíslo uvedené v druhom riadku, takže - sa ním nahradí pôvodné xxx. - - 3. Stlaè pre opustenie nahradzovacieho módu. Poznámka, že zvyšok - riadku zostane nezmenený. - - 4. Zopakuj tieto kroky pre nahradenie zvyšných xxx. - ----> Pridaním 123 ku xxx dostaneš xxx. ----> Pridaním 123 ku 456 dostaneš 579. - -POZNÁMKA: Nahradzovací mód je ako vkladací mód, ale každý napísaný znak - zmaže existujúci znak. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Lekcia 6.4: Copy Paste textu - - ** použí operátor y pre copy textku a p pre jeho paste ** - - 1. Choï nižšie na riadok oznaèený ---> a umiestni kurozr za "a)". - - 2. Naštartuj vizuálny mód použitím v a presuò kurozr pred "first". - - 3. Napíš y pre vystrihnutie (copy) oznaèeného textu. - - 4. Presuò kurozr na koniec ïalšieho riadku: j$ - - 5. Napíš p pre vložnie (paste) textu. Potom napíš: a druha . - - 6. Použi vizuálny mód pre oznaèenie "položka.", vystrihni to - použitím y, presuò sa na koniec nasledujúceho riadku použitím j$ - a vlož sem text použitím p. - ----> a) toto je prvá položka ----> b) - -POZNÁMKA: Môžeš použi� tiež y ako operátor; yw vystrihne jedno slovo. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.5: NASTAVENIE MOŽNOSTÍ - - -** Nastav možnosti, takže vyh¾adávanie alebo nahradzovanie ignoruje - rozlišovanie ** - - - 1. Vyh¾adaj re�azec 'ignore' napísaním: - /ignore - Zopakuj vyh¾adávanie nieko¾ko krát stlaèením klávesy n . - - 2. Nastav možnos� 'ic' (Ignore case) napísaním príkazu: - :set ic - - 3. Teraz vyh¾adaj re�azec 'ingore' znova stlaèením klávesy n - Poznámka, že teraz sú vyh¾adané aj Ignore a IGNORE. - - 4. Nastav možnos�i 'hlsearch' a 'incsearch': - :set hls is - - 5. Teraz spusti vyh¾adávací príkaz znovu, a pozri èo sa stalo: - /ignore - - 6. Pre opetovné zapnutie rozlyšovania ve¾kých a malých písmen - napíš: :set noic - -POZNÁMKA: Na odstránenie zvýraznenia výrazov napíš: :nohlsearch -POZNÁMKA: Ak chceš nerozlyšova� ve¾kos� písmen len pre jedno - použitie vyh¾adávacieho príkazu, použi \c: /ignore\c - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 6 ZHRNUTIE - - - 1. Napíš o pre otvorenie riadku pod kurzorom a štart vkladacieho módu. - Napíš O pre otvorenie riadku nad kurzorom. - - 2. Napíš a pre vkladanie textu ZA kurzor. - Napíš A pre vkladanie textu za koncom riadku. - - 3. Príkaz e presunie kurozr na koniec slova - - 4. Operátor y vystrihne (skopíruje) text, p ho vloží. - - 5. Napísanie ve¾kého R prepne do nahradzovacieho módu, kým nieje - stlaèené . - - 6. Napísanie ":set xxx" nastaví možnos� "xxx". Niektoré nastavenia sú: - 'ic' 'ignorecase' ignoruje ve¾ké a malé písmená poèas vyh¾adávania. - 'is' 'incsearch' zobrazuje èiastoèné re�azce vyh¾adávaného re�azca. - 'hls' 'hlsearch' vyznaèí všetky vyh¾adávané re�azce. - Môžeš použi� hociktorý z dlhých a krátkych názvov možností. - - 7. Vlož "no" pred nastavenie pre jeho vypnutie: :set noic - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.1: ZÍSKANIE NÁPOVEDY - - - ** Používaj on-line systém nápovedy ** - - Vim má obsiahly on-line systém nápovedy. Pre odštartovanie, vyskúšaj jeden - z týchto troch: - - stlaè klávesu (ak nejakú máš) - - stlaè klávesu (ak nejakú máš) - - napíš :help - - Èítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. - Napíš CTRL-W CTRL-W pre skok z jedného okna do druhého. - Napíš :q èím zatvoríš okno nápovedy. - - Môžeš nájs� help ku hociakej téme pridaním argumentu ku príkazu ":help". - Vyskúšaj tieto (nezabudni stlaèi� ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.2: VYTVORENIE ŠTARTOVACIEHO SKRIPTU - - ** Zapni funkcie editora Vim ** - - Vim má omnoho viac funkcii než Vi, ale veèšina z nich je implicitne - vypnutá. Pre používanie viac Vim funkcii vytvor "vimrc" súbor. - - 1. Zaèni editova� "vimrc" súbor, to závisí na použitom systéme: - :e ~/.vimrc pre Unix - :e $VIM/_vimrc pre MS-Windows - - 2. Teraz si preèítaj text príkladu "vimrc" súboru: - - :r $VIMRUNTIME/vimrc_example.vim - - 3. Ulož súbor: - :w - - Pri nasledujúcom štarte editora Vim sa použije zvýrazòovanie syntaxe. - Do "vimrc" súboru môžeš prida� všetky svoje uprednostòované nastavenia. - Pre viac informácii napíš :help vimrc-intro - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - LEKCIA 7.3 DOKONÈENIE - - ** Dokonèi príkaz na príkazovom riadku použitím CTRL-D a ** - - 1. Uisti sa, že Vim nieje v kompatibilnom móde: :set nocp - - 2. Pozri sa aké súbory sa nachádzajú v adresári: :!ls alebo :!dir - - 3. Napíš zaèiatok príkazu: :e - - 4. Stlaè CTRL-D a Vim zobrazí zoznam príkazov zaèínajúcich "e". - - 5. Stlaè a Vim dokonèí meno príkazu na ":edit". - - 6. Teraz pridaj medzerník a zaèiatok mena existujúceho súboru: - :edit FIL - - 7. Stlaè . Vim dokonèí meno (ak je jedineèné). - -POZNÁMKA: Dokonèovanie funguje pre ve¾a príkazov. Vyskúšaj stlaèenie - CTRL-D a . Špeciálne je to užitoèné pre príkaz :help. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - LEKCIA 7 ZHRNUTIE - - 1. Napíš :help alebo stlaè alebo pre otvorenie okna nápovedy. - - 2. Napíš :help príkaz pre vyh¾adanie nápovedy ku príkazu príkaz. - - 3. Napíš CTRL-W CTRL-W na preskoèenie do iného okna. - - 4. Napíš :q pre zatvorenie okna nápovedy - - 5. Vytvor štartovací skript vimrc pre udržanie uprednostòovaných nastavení. - - 6. Poèas písania príkazu : stlaè CTRL-D pre zobrazenie dokonèení. - Stlaè pre použitie jedného z dokonèení. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - - Toto vymedzuje výuku Vimu. Toto je urèené pre strucný preh¾ad o editore - Vim, úplne postaèujúce pre ¾ahké a obstojné používanie tohto editora. - Táto výuka je ïaleko od kompletnosti, pretože Vim má omnoho viacej príkazov. - Ako ïalšie si preèítaj užívat¾ský manuál: ":help user-manual". - - Pre ïalšie èítanie a štúdium je odporúèaná kniha: - Vim - Vi Improved - od Steve Oualline - Vydavate¾: New Riders - Prvá kniha urèená pre Vim. Špeciálne vhodná pre zaèiatoèníkov. - Obsahuje množstvo príkladov a obrázkov. - Pozri na http://iccf-holland.org/click5.html - - Táto kniha je staršia a je viac o Vi ako o Vim, ale je tiež odporúèaná: - Learning the Vi Editor - od Linda Lamb - Vydavate¾: O'Reilly & Associates Inc. - Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi. - Šieste vydanie obsahuje tiež informácie o editore Vim. - - Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware, - Colorado School of Mines s použitím myšlienok dodanými od Charles Smith, - Colorado State University. E-mail: bware@mines.colorado.edu. - - Modifikované pre Vim od Bram Moolenaar. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Preklad do Slovenèiny: ¼uboš Èelko - e-mail: celbos@inmail.sk - Last Change: 2006 Apr 18 - encoding: cp1250 diff --git a/share/vim/vim73/tutor/tutor.sk.utf-8 b/share/vim/vim73/tutor/tutor.sk.utf-8 deleted file mode 100644 index c4e0c4f5..00000000 --- a/share/vim/vim73/tutor/tutor.sk.utf-8 +++ /dev/null @@ -1,1008 +0,0 @@ -=============================================================================== -= V i t a j t e v o V I M T u t o r i a l i - Verzia 1.7 = -=============================================================================== - - Vim je veľmi výkonný editor, ktorý má príliž veľa príkazov na to aby - mohli byt všetky popísané vo výuke akou je táto. Táto výuka - popisuje dostatočné množstvo príkazov nato aby bolo možné používať - Vim ako viacúčelový editor. - - Približný čas potrebný na prebratie tejto výuky je 25-30 minút, - závisí na tom, koľko je stráveného času s preskúšavaním. - - UPOZORNENIE: - Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby - sa mohlo precvičovať na ňom (pri štarte "vimtutor" je toto kópia). - - Je dôležité zapamätať si, že táto výuka je vytvorená pre výuku - používaním. To znamená, že je potrebné si príkazy vyskúšať, aby bolo - učenie správne. Ak len čitas text, príkazy zabudneš! - - Presvedč sa, že Shift-Lock NIEJE stlačený a stlačt klávesu - j niekoľko krát, aby sa kurzor posunul natoľko, že lekcia 1.1 - celkom zaplní obrazovku. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.1: POHYB KURZOROM - - - ** Pre pohyb kurzorum stlač klávesy h,j,k,l ako je znázornené. ** - ^ - k Funkcia: Klávesa h je naľavo a vykoná pohyb doľava. - < h l > Klávesa l je napravo a vykoná pohyb doprava. - j Klávesa j vyzerá ako šípka dole - v - 1. Pohybuj kurzorom po obrazovke, kým si na to nezvykneš. - - 2. Drž stlačenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. ----> Teraz sa už vieš pohybovať na nasledujúcu lekciu. - - 3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.2. - -Poznámka: Ak si niesi istý tým čo si napísal, stlač - na prechod do normálneho módu. - -Poznámka: Kurzorové klávesy sú tiež funkčné. Ale používaním hjkl sa budeš - schopný pohybovať rýchlejšie, keď si zvykneš ich používať. Naozaj! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 1.2: ZATVÁRANIE VIMU - - - !! POZNÁMKA: Pred vykonaním týchto krokov si prečítaj celú túto lekciu !! - - 1. Stlač klávesu (aby si sa učite nachádzal v normálnom móde) - - 2. Napíš: :q! . - Tým ukončíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal. - - 3. Keď sa dostaneš na príkazový riadok, napíš príkaz, ktorým sa dostaneš - speť do tejto výuky. To môže byť: vimtutor - - 4. Ak si si tieto kroky spoľahlivo zapamätal, vykonaj kroky 1 až 3, pre - ukončenie a znovu spustenie editora. - -POZNÁMKA: :q! neuloží zmeny, ktoré si vykonal. O niekoľko lekcií - sa naučíš ako uložiť zmeny do súboru - - 5. presuň kurzor dole na lekciu 1.3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.3: EDITÁCIA TEXTU - MAZANIE - - -** Stlačenie klávesy x v normálnom móde zmaže znak na mieste kurzora. ** - - 1. Presuň kurzor nižšie na riadok označený značkou --->. - - 2. Aby si mohol odstrániť chyby, pohybuj kurzorom kým neprejde na znak, - ktorý chceš zmazať. - - 3. Stlač klávesu x aby sa zmazal nechcený znak. - - 4. Zopakuj kroky 2 až 4 až kým veta nieje správna. - ----> Kraava skoočilla ccezz mesiiac. - - 5. Ak je veta správna, prejdi na lekciu 1.4. - -POZNÁMKA: Neskúšaj si zapamätať obsah tejto výuky, ale sa uč používaním. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.4: EDITÁCIA TEXTU - VKLADANIE - - - ** Stlačenie klávesy i umožňuje vkladanie textu. ** - - 1. Presuň kurzor nižšie na prvý riadok za značku --->. - - 2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok, - presuň kurzor na prvý znak za misto, kde má byť text vložený. - - 3. Stlač klávesu i a napíš potrebný text. - - 4. Po opravení každej chyby, stlač pre návrat do normálneho módu. - Zopakuj kroky 2 až 4 kým nieje veta správna. - ----> Tu je text chýbajúci tejto. ----> Tu je nejaký text chýbajúci od tejto čiary. - - 5. Keď sa dostatočne naučíš vkladať text, prejdi na nasledujúce zhrnutie. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.5: EDITÁCIA TEXTU - PRIDÁVANIE - - - ** Stlačenie klávesy A umožňuje pridávať text. ** - - 1. Presuň kurozr nižšie na prvý riadok za značkou --->. - Nezáleží na tom, na ktorom znaku sa kurzor v tom riadku nachádza. - - 2. Stlač klávesu A a napíš potrebný text. - - 3. Po pridaní textu stlač klávesu pre návrat do Normálneho módu. - - 4. Presuň kurozr na druhý riadok označený ---> a zopakuj - kroky 2 a 3 kým nieje veta správna. - ----> Tu je nejaký text chýbajúci o - Tu je nejaký text chýbajúci od tiaľto. ----> Tu tiež chýba nej - Tu tiež chýba nejaký text. - - 5. Keď sa dostatočne naučíš pridávať text, prejdi na lekciu 1.6. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 1.6: EDITÁCIA SÚBORU - - - ** Napísaním :wq sa súbor uloží a zavrie ** - -!! POZNÁMKA: Pred vykonaním týchto krokov si prečítaj celú lekciu!! - -1. Opusti túto výuku, ako si to urobil v lekcii 1.2: :q! - -2. Do príkazového riadku napíš príkaz: vim tutor - 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, - ktorý chceš editovať. Použi taký súbor, ktorý môžeš meniť. - -3. Vlož a zmaž text tak, ako si sa naučil v predošlých lekciach. - -4. Ulož súbor so zmenami a opusti Vim príkazom: :wq - -5. Reštartuj vimtutor a presuň sa dole na nasledujúce zhrnutie. - -6. Urob tak po prečítaní predošlých krokov a porozumeniu im. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ZHRNUTIE LEKCIE 1 - - - 1. Kurzor sa pohybuje použitím kláves so šípkami alebo klávesmi hjkl. - h (do lava) j (dole) k (hore) l (doprava) - - 2. Pre spustenie Vimu (z príkazového riadku) napíš: vim FILENAME - - 3. Na ukončenie Vimu napíš: :q! pre zrušenie všetkých zmien - alebo napíš: :wq pre uloženie zmien. - - 4. Na zmazanie znaku na mieste kurzora napíš: x - - 5. Pre vloženie textu na mieste kurzora v normálnom móde napíš: - i napíš vkladaný text vkladanie pred kurzor - A napíš pridávaný text vkladanie za riadok - -POZNÁMKA: Stlačenie ťa premiestní do normálneho módu alebo zruší - nejaký nechcený a čiastočne dokončený príkaz. - -Teraz pokračuj lekciou 2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.1: Mazacie príkazy - - - ** Napísanie príkazu dw zmaže znaky do konca slova. ** - -1. Stlač aby si bol bezpečne v normálnom móde. - -2. Presuň kurzor nižšie na riadok označený značkou --->. - -3. Presuň kurzor na začiatok slova, ktoré je potrebné zmazať. - -4. Napíš dw aby slovo zmizlo. - -POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keď ho - napíšeš. Vim na teba počká, aby si mohol napísať - písmeno w. Ak vidíš niečo iné ako d , tak si napísal - nesprávny znak; stlač a začni znova. - ----> Tu je niekoľko slov zábava, ktoré nie patria list do tejto vety. - -5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 2.2. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.2: VIAC MAZACÍCH PRÍKAZOV - - - ** Napísanie príkazu d$ zmaže znaky do konca riadku ** - -1. Stlač aby si bol bezpečne v normálnom móde. - -2. Presuň kurzor nižšie na riadok označený značkou --->. - -3. Presuň kurzor na koniec správnej vety (ZA prvú bodku). - -4. Napíš d$ aby sa zmazali znaky do konca riadku. - ----> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. - - -5. Prejdi na lekciu 2.3 pre pochopenie toho čo sa stalo. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.3: OPERÁTORY A POHYBY - - Veľa príkazov, ktoré menia text sú odvodené od operátorov a pohybov. - Formát pre príkaz mazania klávesou d je nasledovný: - - d pohyb - - kde: - d - je mazací operátor - pohyb - je to čo operátor vykonáva (vypísané nižšie) - - Krátky list pohybov: - w - do začiatku ďalšieho slova, okrem jeho prvého písmena. - e - do konca terajšieho slova, vrátane posledného znaku. - $ - do konca riadku, vrátane posledného znaku - - Takže napísaním de sa zmaže všetko od kurzora do konca slova. - -POZNÁMKA: Stlačením iba pohybu v normálnom móde bez operátora - sa presunie kurzor tak ako je to špecivikované. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.4: Použitie viacnásobného pohybu - - - ** Napísaním čísla pred pohyb ho zopakuje zadný počet krát ** - - 1. Presuň kurozr nižšie na začiatok riadku označeného --->. - - 2. Napíš 2w a kurozr sa presunie o dve slová vpred. - - 3. Napíš 3e a kurozr sa presunie vpred na koniec tretieho slova. - - 4. Napíš 0 (nula) a kurozr sa presunie na začiatok riadku. - - 5. Zopakuj kroky 2 a 3 s rôznymi číslami. - ----> Toto je riadok so slovami po kotrých sa môžete pohybovať. - - 6. Prejdi na lekciu 2.5. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.5: POUŽITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE - - - ** Napísanie čísla spolu s operátorom ho zopakuje zadaný počet krát ** - - V kombinácii operátorov mazania a pohybu spomínaného vyššie vlož počet - pred pohyb pre docielenie hromadného mazania: - d číslo pohyb - - 1. Presuň kurzor na prvé slovo písané VEĽKÝMI PÍSMENAMI - v riadku označenom --->. - - 2. Napíš 2dw a zmažeš dve slová písané VEĽKÝMI PÍSMENAMI - - 3. Zopakuj kroky 1 a 2 s použitím rôzneho čísla tak aby si zmazal slová - písané veľkými písmenami jedným príkazom. - ----> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. - -POZNÁMKA: Číslo medzi operátorom d a pohybom funguje podobne ako pri - použití s pohybom bez operátora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.6: OPERÁCIE S RIADKAMI - - - ** Napísanie príkazu dd zmaže celý riadok. ** - -Vzhľadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, -že bude jednoduchšie mazať celý riadok napísaním dvoch písmen d. - -1. Presuň kurzor na druhý riadok v texte na spodu. -2. Napíš dd aby si zmazal riadok. -3. Prejdi na štvrtý riadok. -4. Napíš 2dd aby si zmazal dva riadky. - - 1) Ruže sú červené, - 2) Blato je zábavné, - 3) Fialky sú modré, - 4) Mám auto, - 5) Hodinky ukazujú čas, - 6) Cukor je sladký, - 7) A to si ty. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 2.7: PRÍKAZ UNDO - - -** Stlač u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** - -1. Presuň kurzor nižšie na riadok označený značkou ---> a premiestni ho na - prvú chybu. -2. Napíš x pre zmazanie prvého nechceného riadku. -3. Teraz napíš u čím vrátíš späť posledne vykonaný príkaz. -4. Teraz oprav všetky chyby na riadku použitím príkazu x . -5. Teraz napíš veľké U čím vrátíš riadok do pôvodného stavu. -6. Teraz napíš u niekoľko krát, čím vrátíš späť príkaz U. -7. Teraz napíš CTRL-R (drž klávesu CTRL stlačenú kým stláčaš R) niekoľko - krát, čím vrátíš späť predtým vrátené príkazy (undo z undo). - ----> Opprav chybby nna toomto riadku a zmeeň ich pommocou undo. - - 8. Tieto príkazy sú často používané. Teraz prejdi na zhrnutie lekcie 2. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 2 ZHRNUTIE - - - 1. Pre zmazanie znakov od kurzora do konca slova napíš: dw - - 2. Pre zmazanie znakov od kurzora do konca riadku napíš: d$ - - 3. Pre zmazanie celého riadku napíš: dd - - 4. Pre zopakovanie pohybu, napíš pred neho číslo: 2w - - 5. Formát pre píkaz: - - operátor [číslo] pohyb - kde: - operátor - čo treba robiť, napríklad d pre zmazanie - [číslo] - je voliteľný počet pre opakovanie pohybu - pohyb - pohyb po texte vzhľadom na operátor, napríklad w (slovo), - $ (do konca riadku), atď. - - 6. Pre pohyb na začiatok riadku použi nulu: 0 - - 7. Pre vrátenie späť predošlej operácie napíš: u (malé u) - Pre vrátenie všetkých úprav na riadku napíš: U (veľké U) - Pre vrátenie vrátených úprav napíš: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.1: PRÍKAZ VLOŽIŤ - - - ** Napísanie príkazu p vloží psledný výmaz za kurzor. ** - - 1. Presuň kurzor nižšie na prvý riadok textu. - - 2. Napíš dd čím zmažeš riadok a uložíš ho do buffera editora Vim. - - 3. Presuň kurzor vyššie tam, kam zmazaný riadok patrí. - - 4. Ak napíšeš v normálnom móde p zmazaný riadk sa vloží. - - 5. Zopakuj kroky 2 až 4, kým riadky niesú v správnom poradí. - ----> d) Tiež sa dokážeš vzdelávať? ----> b) Fialky sú modré, ----> c) Inteligencia sa vzdeláva, ----> a) Ruže sú červené, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.2: PRÍKAZ NAHRADENIA - - - ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** - - 1. Presuň kurzor nižšie na prví riadok textu označeného značkou --->. - - 2. Presuň kurzor na začiatok prvej chyby. - - 3. napíš r a potom znak, ktorý tam má byť. - - 4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým. - ----> Kaď bol tento riasok píaaný, niekro stlašil nesprábne klávesy! ----> Keď bol tento riadok písaný, niekto stlačil nesprávne klávesy! - - 5. Teraz prejdi na lekciu 3.2. - -POZNÁMKA: Pamätaj si, že naučiť sa môžeš len používanim, nie pamätaním. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.3. PRÍKAZ ÚPRAVY - - - ** Ak chceš zmeniť časť slova do konca slova, napíš ce . ** - - 1. Presuň kurzor nižšie na prvý riadok označený značkou --->. - - 2. Umiestni kurzor na písmeno o v slove rosfpl. - - 3. Napíš ce a oprav slovo (v tomto prípade napíš 'iadok'.) - - 4. Stlač a prejdi na ďalší znak, ktorý treba zmeniť. - - 5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá. - ----> Tento rosfpl má niekoľko skic, ktoré je pirewvbí zmeniť piyťučán príkazu. ----> Tento riadok má niekoľko slov, ktoré je potrebné zmeniť použitím príkazu. - -Poznámka, že ce zmaže slovo a nastaví vkladací mód. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 3.4: VIAC ZMIEN POUŽITÍM c - - - ** Príkaz pre úpravy sa používa s rovnakými pohybmi ako pre mazanie ** - - 1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je: - - c [číslo] pohyb - - 2. Pohyby sú rovnaké, ako napríklad w (slovo) a $ (koniec riadku). - - 3. Presuň kurzor nižšie na prvý riadok označený značkou --->. - - 4. Presuň kurzor na prvú chybu. - - 5. napíš c$ aby si mohol upraviť zvyšok riadku podľa druhého - a stlač . - ----> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. ----> Koniec tohto riadku potrebuje opraviť použitím príkazu c$ . - -POZNÁMKA: Môžeš použiť klávesu backspace na úpravu zmien počas písania. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 3 ZHRNUTIE - - - 1. Na vloženie textu, ktorý už bol zmazaný, napíš p . To vloží zmazaný - text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom). - - 2. Pre naradenie znaku na mieste kurzora, napíš r a potom znak, ktorý - nahradí pôvodný znak. - - 3. Príkaz na upravenie umožňuje zmeniť od kurzora až po miesto, ktoré - určuje pohyb. napr. Napíš ce čím zmníš text od pozície - kurzora do konca slova, c$ zmení text do konca riadku. - - 4. Formát pre nahradenie je: - - c [číslo] pohyb - - -Teraz prejdi na nalsedujúcu lekciu. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.1: POZÍCIA A STATUS SÚBORU - - - ** Stlač CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. - Napíš G pre presun na riadok v súbore. ** - - Poznámka: Prečítaj si celú túto lekciu skôr ako začneš vykonávať kroky!! - - 1. Drž stlačenú klávesu Ctrl a stlač g . Toto nazývame CTRL-G. - Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou - v súbore. Zapamätajsi si číslo riadku pre použitie v kroku 3. - - 2. Stlač G čím sa dostaneš na spodok súboru. - Napíš gg čím sa dostaneš na začiatok súboru. - - 3. Napíš číslo riadku na ktorom si sa nachádzal a stlač G. To ťa - vráti na riadok, na ktorom si prvý krát stlačil CTRL-G. - - 4. Ak sa cítíš schopný vykonať teto kroky, vykonaj kroky 1 až 3. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.2: PRÍKAZ VYHĽADÁVANIA - - - ** Napíš / nasledované reťazcom pre vyhľadanie príslušného reťazca. ** - - 1. Napíš znak / v normálnom móde. Poznámka, že tento znak sa spolu - s kurzorom zobrazí v dolnej časti obrazovky s : príkazom. - - 2. Teraz napíš 'errroor' . To je slovo, ktoré chceš vyhľadať. - - 3. Pre vyhľadanie ďalšieho výskytu rovnakého reťazca, stlač jednoducho n. - Pre vyhľadanie ďalšieho výskytu rovnakého reťazca opačným smerom, - N. - - 4. Ak chceš vyhľadať reťazec v spätnom smere, použí príkaz ? miesto - príkazu /. - - 5. Pre návrat na miesto z ktorého si prišiel stlač CTRL-O (drž stlačenú - klávesu Ctrl počas stlačenia klávesy o). Zopakuj pre ďalší návrat - späť. CTRL-I ide vpred. - -POZNÁMKA: "errroor" nieje spôsob hláskovania error; errroor je error. -POZNÁMKA: Keď vyhľadávanie dosiahne koniec tohto súboru, bude pokračovať na - začiatku, dokiaľ nieje resetované nastavenie 'wrapscan' . - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.3: VYHĽADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK - - - ** Napíš % pre vyhľadanie príslušného znaku ),], alebo } . ** - - 1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku nižšie - označeného značkou --->. - - 2. Teraz napíš znak % . - - 3. Kurzor sa premiestni na zodpovedajúcu zátvorku. - - 4. Napíš % pre presun kurzoru späť na otvárajúcu zátvorku. - - 5. Presuň kurzor na iný zo znakov (,),[,],{ alebo } a všimni si - čo % vykonáva. - ----> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. )) - -Poznámka: Toto je veľmi výhodné použíť pri ladení programu s chýbajúcimi - uzatvárajúcimi zátvorkami! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 4.4: PRÍKAZ NAHRADENIA - - - ** Napíš :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** - - 1. Presuň kurzor nižšie na riadok označený značkou --->. - - 2. Napíš :s/thee/the . Poznamka, že tento príkaz zmení len prvý - výskyt "thee" v riadku. - - 3. Teraz napíš :s/thee/the/g čo znamená celkové nahradenie v riadku. - Toto nahradí všetky výskyty v riadku. - ----> Thee best time to see thee flowers in thee spring. - - 4. Pre zmenu všetkých výskytov daného reťazca medzi dvomi ridakami, - napíš :#,#s/starý/nový/g kde #,# sú čísla dvoch riadkov, v rozsahu - ktorých sa nahradenie vykoná. - napíš :%s/starý/nový/g pre zmenu všetkých výskytov v celom riadku - napíš :%s/starý/nový/gc nájde všetky výskyty v celom súbore, - s otázkou či nahradiť alebo nie - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 4 ZHRNUTIE - - - 1. CTRL-g vypíše tvoju pozíciu v súbore a status súboru. - G ťa premiestni na koniec riadku. - číslo G ťa premiestni na riadok s číslom. - gg ťa presunie na prvý riadok - - 2. Napísanie / nasledované reťazcom vyhľadá reťazec smerom DOPREDU. - Napísanie ? nasledované reťazcom vyhľada reťazec smerom DOZADU. - Napísanie n po vyhľadávaní, vyhľadá nasledujúci výskyt reťazca - v rovnakom smere, pričom N vyhľadá v opačnom smere. - CTRL-O ťa vráti späť na staršiu pozíciu, CTRL-I na novšiu pozíciu. - - 3. Napísanie % keď kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu - párnu zátvorku. - - 4. Pre nahradenie nového za prvý starý v riadku napíš :s/starý/nový - Pre nahradenie nového za všetky staré v riadku napíš :s/starý/nový/g - Pre nahradenie reťazcov medzi dvoma riadkami 3 napíš :#,#/starý/nový/g - Pre nahradenie všetkých výskytov v súbore napíš :%s/starý/nový/g - Pre potvrdenie každého nahradenia pridaj 'c' :%s/starý/nový/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.1 AKO SPUSTIŤ VONKAJŠÍ PRÍKAZ - - - ** Napíš príkaz :! nasledovaný vonkajším príkazom pre spustenie príkazu ** - - 1. Napíš obvyklý píkaz : ktorý nastaví kurzor na spodok obrazovky. - To umožní napísať príkaz. - - 2. Teraz napíš ! (výkričník). To umožní spustiť hociaký vonkajší príkaz - z príkazového riadku. - - 3. Ako príklad napíš ls za ! a stlač . Tento príkaz - zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku. - Alebo použi :!dir ak ls nefunguje. - -Poznámka: Takto je možné spustiť hociaký vonkajší príkaz s argumentami. -Poznámka: Všetky príkazy : musia byť dokončené stlačením - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.2: VIAC O UKLADANÍ SÚBOROV - - - ** Pre uloženie zmien v súbore, napíš :w FILENAME. ** - - 1. Napíš :!dir alebo :!ls pre výpis aktuálneho adresára. - Už vieš, že musíš za týmto stlačiť . - - 2. Vyber názov súboru, ktorý ešte neexistuje, ako napr. TEST. - - 3. Teraz napíš: :w TEST (kde TEST je názov vybratého súboru.) - - 4. To uloží celý súbor (Vim Tutor) pod názovm TEST. - Pre overenie napíš :!dir , čím zobrazíš obsah adresára. - -Poznámka: že ak ukončíš prácu s editorom Vim a znovu ho spustíš príkazom - vim TEST, súbor bude kópia výuky, keď si ho uložil. - - 5. Teraz odstráň súbor napísaním (MS-DOS): :!del TEST - alebo (Unix): :!rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.3 VÝBER TEXTU PRE ULOŽENIE - - - ** Pre uloženie časti súboru, napíš v pohyb :w FILENAME ** - - 1. Presuň kurozr na tento riadok. - - 2. Stlač v a presuň kurozr na piatu položku dole. Poznámka, že - tento text je vyznačený (highlighted). - - 3. Stlač klávesu : . V spodnej časti okna sa objaví :'<,'>. - - 4. Napíš w TEST , kde TEST je meno súboru, ktorý zatial neexistuje. - Skontroluj, e vidíš :'<,'>w TEST predtým než stlačíš Enter. - - 5. Vim zapíše označené riadky do súboru TEST. Použi :!dir alebo !ls - pre overenie. Zatial ho ešte nemaž! Použijeme ho v ďalšej lekcii. - -POZNÁMKA: Stlačením klávesy v sa spustí vizuálne označovanie. - Môžeš pohybovať kurzorom pre upresnenie vyznačeného textu. - Potom môžeš použiť operátor pre vykonanie nejakej akcie - s textom. Napríklad d zmaže vyznačený text. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 5.4: VÝBER A ZLUČOVANIE SÚBOROV - - - ** Pre vloženie obsahu súboru, napíš :r FILENAME ** - - 1. Premiestni kurzor nad tento riadok. - -POZNÁMKA: Po vykonaní kroku 2 uvidíš text z lekcie 5.3. Potom sa presuň - dole, aby si videl túto lekciu. - - 3. Teraz vlož súbor TEST použitím príkazu :r TEST kde TEST je názov - súboru. Súbor, ktorý si použil je umiestnený pod riadkom s kurzorom. - -POZNÁMKA: Môžeš tiež načítať výstup vonkajšieho príkazu. Napríklad :r !ls - načíta výstup príkazu ls a umiestni ho za pozíciu kurzora. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 5 ZHRNUTIE - - - 1. :!príkaz spustí vonkajší príkaz. - - Niektoré využiteľné príklady sú: - (MS_DOS) (UNIX) - :!dir :!ls - zobrazí obsah adresára - :!del FILENAME :!rm FILENAME - odstráni súbor FILENAME - - 2. :w FILENAME uloží aktuálny súbor na disk pod menom FILENAME. - - 3. v pohyb :w FILENAME uloží vizuálne označené riadky do - súboru FILENAME. - - 4. :r FILENAME vyberie z disku súbor FILENAME a vloží ho do aktuálneho - súboru za pozíciou kurzora. - - 5. :r !dir načíta výstup z príkazu dir a vloží ho za pozíciu kurzora. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.1: PRÍKAZ OTVORIŤ - - -** Napíš o pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu ** - - 1. Presuň kurzor nižšie na riadok označený značkou --->. - - 2. Napíš o (malé písmeno) pre vloženie čistého riadku pod kurzorm - a prepnutie do vkladacieho módu. - - 3. Teraz skopíruj riadok označený ---> a stlač pre ukončenie - vkladacieho módu. - ----> Po napísaní o sa kurzor premiestní na vložený riadok do vkladacieho - módu. - - 4. Pre otvorenie riadku nad kurzorom, jednotucho napíš veľké O , - namiesto malého o. Vyskúšaj si to na riadku dole. - ----> Vlož riadok nad týmto napísaním O, keď kurzor je na tomto riadku. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.2: PRÍKAZ PRIDAŤ - - - ** Napíš a pre vloženie textu ZA kurzor. ** - - 1. Presuň kurzor nižšie na koniec prvého riadku označeného značkou ---> - - 2. Stlač klávesu e dokiaľ kurozr nieje na konci riadku. - - 3. Napíš a (malé písmeno) pre pridanie textu ZA kurzorom. - - 4. Dokončí slovo tak ako je to v druhom riadku. Stlaš pre - opustenie vkladacieho módu. - - 5. Použi e na presun na ďalšie nedokončené slovo a zopakuj kroky 3 a 4. - ----> Tento ri ti dovoľuje nácv priávan testu na koniec riadku. ----> Tento riadok ti dovoľuje nácvik pridávania textu na koniec riadku. - -POZNÁMKA: a, i, A štartujú rovnaký vkladací mód, jediný rozidel je, kde - sa znaky vkladajú. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.3: INÝ SPOSOB NAHRADZOVANIA - - - ** Napíš veľké R pre nahradenie viac ako jedného znaku. ** - - 1. Presuň kurzor nižšie na prvý riadok označený značkou --->. Premiestni - kurzor na začiatok prvého výskytu xxx. - - 2. Teraz napíš R a napíš číslo uvedené v druhom riadku, takže - sa ním nahradí pôvodné xxx. - - 3. Stlač pre opustenie nahradzovacieho módu. Poznámka, že zvyšok - riadku zostane nezmenený. - - 4. Zopakuj tieto kroky pre nahradenie zvyšných xxx. - ----> Pridaním 123 ku xxx dostaneš xxx. ----> Pridaním 123 ku 456 dostaneš 579. - -POZNÁMKA: Nahradzovací mód je ako vkladací mód, ale každý napísaný znak - zmaže existujúci znak. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Lekcia 6.4: Copy Paste textu - - ** použí operátor y pre copy textku a p pre jeho paste ** - - 1. Choď nižšie na riadok označený ---> a umiestni kurozr za "a)". - - 2. Naštartuj vizuálny mód použitím v a presuň kurozr pred "first". - - 3. Napíš y pre vystrihnutie (copy) označeného textu. - - 4. Presuň kurozr na koniec ďalšieho riadku: j$ - - 5. Napíš p pre vložnie (paste) textu. Potom napíš: a druha . - - 6. Použi vizuálny mód pre označenie "položka.", vystrihni to - použitím y, presuň sa na koniec nasledujúceho riadku použitím j$ - a vlož sem text použitím p. - ----> a) toto je prvá položka ----> b) - -POZNÁMKA: Môžeš použiť tiež y ako operátor; yw vystrihne jedno slovo. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcia 6.5: NASTAVENIE MOŽNOSTÍ - - -** Nastav možnosti, takže vyhľadávanie alebo nahradzovanie ignoruje - rozlišovanie ** - - - 1. Vyhľadaj reťazec 'ignore' napísaním: - /ignore - Zopakuj vyhľadávanie niekoľko krát stlačením klávesy n . - - 2. Nastav možnosť 'ic' (Ignore case) napísaním príkazu: - :set ic - - 3. Teraz vyhľadaj reťazec 'ingore' znova stlačením klávesy n - Poznámka, že teraz sú vyhľadané aj Ignore a IGNORE. - - 4. Nastav možnosťi 'hlsearch' a 'incsearch': - :set hls is - - 5. Teraz spusti vyhľadávací príkaz znovu, a pozri čo sa stalo: - /ignore - - 6. Pre opetovné zapnutie rozlyšovania veľkých a malých písmen - napíš: :set noic - -POZNÁMKA: Na odstránenie zvýraznenia výrazov napíš: :nohlsearch -POZNÁMKA: Ak chceš nerozlyšovať veľkosť písmen len pre jedno - použitie vyhľadávacieho príkazu, použi \c: /ignore\c - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 6 ZHRNUTIE - - - 1. Napíš o pre otvorenie riadku pod kurzorom a štart vkladacieho módu. - Napíš O pre otvorenie riadku nad kurzorom. - - 2. Napíš a pre vkladanie textu ZA kurzor. - Napíš A pre vkladanie textu za koncom riadku. - - 3. Príkaz e presunie kurozr na koniec slova - - 4. Operátor y vystrihne (skopíruje) text, p ho vloží. - - 5. Napísanie veľkého R prepne do nahradzovacieho módu, kým nieje - stlačené . - - 6. Napísanie ":set xxx" nastaví možnosť "xxx". Niektoré nastavenia sú: - 'ic' 'ignorecase' ignoruje veľké a malé písmená počas vyhľadávania. - 'is' 'incsearch' zobrazuje čiastočné reťazce vyhľadávaného reťazca. - 'hls' 'hlsearch' vyznačí všetky vyhľadávané reťazce. - Môžeš použiť hociktorý z dlhých a krátkych názvov možností. - - 7. Vlož "no" pred nastavenie pre jeho vypnutie: :set noic - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.1: ZÍSKANIE NÁPOVEDY - - - ** Používaj on-line systém nápovedy ** - - Vim má obsiahly on-line systém nápovedy. Pre odštartovanie, vyskúšaj jeden - z týchto troch: - - stlač klávesu (ak nejakú máš) - - stlač klávesu (ak nejakú máš) - - napíš :help - - Čítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. - Napíš CTRL-W CTRL-W pre skok z jedného okna do druhého. - Napíš :q čím zatvoríš okno nápovedy. - - Môžeš nájsť help ku hociakej téme pridaním argumentu ku príkazu ":help". - Vyskúšaj tieto (nezabudni stlačiť ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCIA 7.2: VYTVORENIE ŠTARTOVACIEHO SKRIPTU - - ** Zapni funkcie editora Vim ** - - Vim má omnoho viac funkcii než Vi, ale večšina z nich je implicitne - vypnutá. Pre používanie viac Vim funkcii vytvor "vimrc" súbor. - - 1. Začni editovať "vimrc" súbor, to závisí na použitom systéme: - :e ~/.vimrc pre Unix - :e $VIM/_vimrc pre MS-Windows - - 2. Teraz si prečítaj text príkladu "vimrc" súboru: - - :r $VIMRUNTIME/vimrc_example.vim - - 3. Ulož súbor: - :w - - Pri nasledujúcom štarte editora Vim sa použije zvýrazňovanie syntaxe. - Do "vimrc" súboru môžeš pridať všetky svoje uprednostňované nastavenia. - Pre viac informácii napíš :help vimrc-intro - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - LEKCIA 7.3 DOKONČENIE - - ** Dokonči príkaz na príkazovom riadku použitím CTRL-D a ** - - 1. Uisti sa, že Vim nieje v kompatibilnom móde: :set nocp - - 2. Pozri sa aké súbory sa nachádzajú v adresári: :!ls alebo :!dir - - 3. Napíš začiatok príkazu: :e - - 4. Stlač CTRL-D a Vim zobrazí zoznam príkazov začínajúcich "e". - - 5. Stlač a Vim dokončí meno príkazu na ":edit". - - 6. Teraz pridaj medzerník a začiatok mena existujúceho súboru: - :edit FIL - - 7. Stlač . Vim dokončí meno (ak je jedinečné). - -POZNÁMKA: Dokončovanie funguje pre veľa príkazov. Vyskúšaj stlačenie - CTRL-D a . Špeciálne je to užitočné pre príkaz :help. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - LEKCIA 7 ZHRNUTIE - - 1. Napíš :help alebo stlač alebo pre otvorenie okna nápovedy. - - 2. Napíš :help príkaz pre vyhľadanie nápovedy ku príkazu príkaz. - - 3. Napíš CTRL-W CTRL-W na preskočenie do iného okna. - - 4. Napíš :q pre zatvorenie okna nápovedy - - 5. Vytvor štartovací skript vimrc pre udržanie uprednostňovaných nastavení. - - 6. Počas písania príkazu : stlač CTRL-D pre zobrazenie dokončení. - Stlač pre použitie jedného z dokončení. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - - Toto vymedzuje výuku Vimu. Toto je určené pre strucný prehľad o editore - Vim, úplne postačujúce pre ľahké a obstojné používanie tohto editora. - Táto výuka je ďaleko od kompletnosti, pretože Vim má omnoho viacej príkazov. - Ako ďalšie si prečítaj užívatľský manuál: ":help user-manual". - - Pre ďalšie čítanie a štúdium je odporúčaná kniha: - Vim - Vi Improved - od Steve Oualline - Vydavateľ: New Riders - Prvá kniha určená pre Vim. Špeciálne vhodná pre začiatočníkov. - Obsahuje množstvo príkladov a obrázkov. - Pozri na http://iccf-holland.org/click5.html - - Táto kniha je staršia a je viac o Vi ako o Vim, ale je tiež odporúčaná: - Learning the Vi Editor - od Linda Lamb - Vydavateľ: O'Reilly & Associates Inc. - Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi. - Šieste vydanie obsahuje tiež informácie o editore Vim. - - Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware, - Colorado School of Mines s použitím myšlienok dodanými od Charles Smith, - Colorado State University. E-mail: bware@mines.colorado.edu. - - Modifikované pre Vim od Bram Moolenaar. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Preklad do Slovenčiny: Ľuboš Čelko - e-mail: celbos@inmail.sk - Last Change: 2006 Apr 18 - encoding: iso8859-2 diff --git a/share/vim/vim73/tutor/tutor.utf-8 b/share/vim/vim73/tutor/tutor.utf-8 deleted file mode 100644 index daf42b6b..00000000 --- a/share/vim/vim73/tutor/tutor.utf-8 +++ /dev/null @@ -1,970 +0,0 @@ -=============================================================================== -= W e l c o m e t o t h e V I M T u t o r - Version 1.7 = -=============================================================================== - - Vim is a very powerful editor that has many commands, too many to - explain in a tutor such as this. This tutor is designed to describe - enough of the commands that you will be able to easily use Vim as - an all-purpose editor. - - The approximate time required to complete the tutor is 25-30 minutes, - depending upon how much time is spent with experimentation. - - ATTENTION: - The commands in the lessons will modify the text. Make a copy of this - file to practise on (if you started "vimtutor" this is already a copy). - - It is important to remember that this tutor is set up to teach by - use. That means that you need to execute the commands to learn them - properly. If you only read the text, you will forget the commands! - - Now, make sure that your Shift-Lock key is NOT depressed and press - the j key enough times to move the cursor so that Lesson 1.1 - completely fills the screen. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.1: MOVING THE CURSOR - - - ** To move the cursor, press the h,j,k,l keys as indicated. ** - ^ - k Hint: The h key is at the left and moves left. - < h l > The l key is at the right and moves right. - j The j key looks like a down arrow. - v - 1. Move the cursor around the screen until you are comfortable. - - 2. Hold down the down key (j) until it repeats. - Now you know how to move to the next lesson. - - 3. Using the down key, move to Lesson 1.2. - -NOTE: If you are ever unsure about something you typed, press to place - you in Normal mode. Then retype the command you wanted. - -NOTE: The cursor keys should also work. But using hjkl you will be able to - move around much faster, once you get used to it. Really! - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.2: EXITING VIM - - - !! NOTE: Before executing any of the steps below, read this entire lesson!! - - 1. Press the key (to make sure you are in Normal mode). - - 2. Type: :q! . - This exits the editor, DISCARDING any changes you have made. - - 3. When you see the shell prompt, type the command that got you into this - tutor. That would be: vimtutor - - 4. If you have these steps memorized and are confident, execute steps - 1 through 3 to exit and re-enter the editor. - -NOTE: :q! discards any changes you made. In a few lessons you - will learn how to save the changes to a file. - - 5. Move the cursor down to Lesson 1.3. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.3: TEXT EDITING - DELETION - - - ** Press x to delete the character under the cursor. ** - - 1. Move the cursor to the line below marked --->. - - 2. To fix the errors, move the cursor until it is on top of the - character to be deleted. - - 3. Press the x key to delete the unwanted character. - - 4. Repeat steps 2 through 4 until the sentence is correct. - ----> The ccow jumpedd ovverr thhe mooon. - - 5. Now that the line is correct, go on to Lesson 1.4. - -NOTE: As you go through this tutor, do not try to memorize, learn by usage. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.4: TEXT EDITING - INSERTION - - - ** Press i to insert text. ** - - 1. Move the cursor to the first line below marked --->. - - 2. To make the first line the same as the second, move the cursor on top - of the first character AFTER where the text is to be inserted. - - 3. Press i and type in the necessary additions. - - 4. As each error is fixed press to return to Normal mode. - Repeat steps 2 through 4 to correct the sentence. - ----> There is text misng this . ----> There is some text missing from this line. - - 5. When you are comfortable inserting text move to lesson 1.5. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.5: TEXT EDITING - APPENDING - - - ** Press A to append text. ** - - 1. Move the cursor to the first line below marked --->. - It does not matter on what character the cursor is in that line. - - 2. Press A and type in the necessary additions. - - 3. As the text has been appended press to return to Normal mode. - - 4. Move the cursor to the second line marked ---> and repeat - steps 2 and 3 to correct this sentence. - ----> There is some text missing from th - There is some text missing from this line. ----> There is also some text miss - There is also some text missing here. - - 5. When you are comfortable appending text move to lesson 1.6. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1.6: EDITING A FILE - - ** Use :wq to save a file and exit. ** - - !! NOTE: Before executing any of the steps below, read this entire lesson!! - - 1. Exit this tutor as you did in lesson 1.2: :q! - Or, if you have access to another terminal, do the following there. - - 2. At the shell prompt type this command: vim tutor - 'vim' is the command to start the Vim editor, 'tutor' is the name of the - file you wish to edit. Use a file that may be changed. - - 3. Insert and delete text as you learned in the previous lessons. - - 4. Save the file with changes and exit Vim with: :wq - - 5. If you have quit vimtutor in step 1 restart the vimtutor and move down to - the following summary. - - 6. After reading the above steps and understanding them: do it. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 1 SUMMARY - - - 1. The cursor is moved using either the arrow keys or the hjkl keys. - h (left) j (down) k (up) l (right) - - 2. To start Vim from the shell prompt type: vim FILENAME - - 3. To exit Vim type: :q! to trash all changes. - OR type: :wq to save the changes. - - 4. To delete the character at the cursor type: x - - 5. To insert or append text type: - i type inserted text insert before the cursor - A type appended text append after the line - -NOTE: Pressing will place you in Normal mode or will cancel - an unwanted and partially completed command. - -Now continue with Lesson 2. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.1: DELETION COMMANDS - - - ** Type dw to delete a word. ** - - 1. Press to make sure you are in Normal mode. - - 2. Move the cursor to the line below marked --->. - - 3. Move the cursor to the beginning of a word that needs to be deleted. - - 4. Type dw to make the word disappear. - - NOTE: The letter d will appear on the last line of the screen as you type - it. Vim is waiting for you to type w . If you see another character - than d you typed something wrong; press and start over. - ----> There are a some words fun that don't belong paper in this sentence. - - 5. Repeat steps 3 and 4 until the sentence is correct and go to Lesson 2.2. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.2: MORE DELETION COMMANDS - - - ** Type d$ to delete to the end of the line. ** - - 1. Press to make sure you are in Normal mode. - - 2. Move the cursor to the line below marked --->. - - 3. Move the cursor to the end of the correct line (AFTER the first . ). - - 4. Type d$ to delete to the end of the line. - ----> Somebody typed the end of this line twice. end of this line twice. - - - 5. Move on to Lesson 2.3 to understand what is happening. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.3: ON OPERATORS AND MOTIONS - - - Many commands that change text are made from an operator and a motion. - The format for a delete command with the d delete operator is as follows: - - d motion - - Where: - d - is the delete operator. - motion - is what the operator will operate on (listed below). - - A short list of motions: - w - until the start of the next word, EXCLUDING its first character. - e - to the end of the current word, INCLUDING the last character. - $ - to the end of the line, INCLUDING the last character. - - Thus typing de will delete from the cursor to the end of the word. - -NOTE: Pressing just the motion while in Normal mode without an operator will - move the cursor as specified. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.4: USING A COUNT FOR A MOTION - - - ** Typing a number before a motion repeats it that many times. ** - - 1. Move the cursor to the start of the line marked ---> below. - - 2. Type 2w to move the cursor two words forward. - - 3. Type 3e to move the cursor to the end of the third word forward. - - 4. Type 0 (zero) to move to the start of the line. - - 5. Repeat steps 2 and 3 with different numbers. - ----> This is just a line with words you can move around in. - - 6. Move on to Lesson 2.5. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.5: USING A COUNT TO DELETE MORE - - - ** Typing a number with an operator repeats it that many times. ** - - In the combination of the delete operator and a motion mentioned above you - insert a count before the motion to delete more: - d number motion - - 1. Move the cursor to the first UPPER CASE word in the line marked --->. - - 2. Type d2w to delete the two UPPER CASE words - - 3. Repeat steps 1 and 2 with a different count to delete the consecutive - UPPER CASE words with one command - ----> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.6: OPERATING ON LINES - - - ** Type dd to delete a whole line. ** - - Due to the frequency of whole line deletion, the designers of Vi decided - it would be easier to simply type two d's to delete a line. - - 1. Move the cursor to the second line in the phrase below. - 2. Type dd to delete the line. - 3. Now move to the fourth line. - 4. Type 2dd to delete two lines. - ----> 1) Roses are red, ----> 2) Mud is fun, ----> 3) Violets are blue, ----> 4) I have a car, ----> 5) Clocks tell time, ----> 6) Sugar is sweet ----> 7) And so are you. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2.7: THE UNDO COMMAND - - - ** Press u to undo the last commands, U to fix a whole line. ** - - 1. Move the cursor to the line below marked ---> and place it on the - first error. - 2. Type x to delete the first unwanted character. - 3. Now type u to undo the last command executed. - 4. This time fix all the errors on the line using the x command. - 5. Now type a capital U to return the line to its original state. - 6. Now type u a few times to undo the U and preceding commands. - 7. Now type CTRL-R (keeping CTRL key pressed while hitting R) a few times - to redo the commands (undo the undo's). - ----> Fiix the errors oon thhis line and reeplace them witth undo. - - 8. These are very useful commands. Now move on to the Lesson 2 Summary. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 2 SUMMARY - - - 1. To delete from the cursor up to the next word type: dw - 2. To delete from the cursor to the end of a line type: d$ - 3. To delete a whole line type: dd - - 4. To repeat a motion prepend it with a number: 2w - 5. The format for a change command is: - operator [number] motion - where: - operator - is what to do, such as d for delete - [number] - is an optional count to repeat the motion - motion - moves over the text to operate on, such as w (word), - $ (to the end of line), etc. - - 6. To move to the start of the line use a zero: 0 - - 7. To undo previous actions, type: u (lowercase u) - To undo all the changes on a line, type: U (capital U) - To undo the undo's, type: CTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.1: THE PUT COMMAND - - - ** Type p to put previously deleted text after the cursor. ** - - 1. Move the cursor to the first ---> line below. - - 2. Type dd to delete the line and store it in a Vim register. - - 3. Move the cursor to the c) line, ABOVE where the deleted line should go. - - 4. Type p to put the line below the cursor. - - 5. Repeat steps 2 through 4 to put all the lines in correct order. - ----> d) Can you learn too? ----> b) Violets are blue, ----> c) Intelligence is learned, ----> a) Roses are red, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.2: THE REPLACE COMMAND - - - ** Type rx to replace the character at the cursor with x . ** - - 1. Move the cursor to the first line below marked --->. - - 2. Move the cursor so that it is on top of the first error. - - 3. Type r and then the character which should be there. - - 4. Repeat steps 2 and 3 until the first line is equal to the second one. - ----> Whan this lime was tuoed in, someone presswd some wrojg keys! ----> When this line was typed in, someone pressed some wrong keys! - - 5. Now move on to Lesson 3.3. - -NOTE: Remember that you should be learning by doing, not memorization. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.3: THE CHANGE OPERATOR - - - ** To change until the end of a word, type ce . ** - - 1. Move the cursor to the first line below marked --->. - - 2. Place the cursor on the u in lubw. - - 3. Type ce and the correct word (in this case, type ine ). - - 4. Press and move to the next character that needs to be changed. - - 5. Repeat steps 3 and 4 until the first sentence is the same as the second. - ----> This lubw has a few wptfd that mrrf changing usf the change operator. ----> This line has a few words that need changing using the change operator. - -Notice that ce deletes the word and places you in Insert mode. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3.4: MORE CHANGES USING c - - - ** The change operator is used with the same motions as delete. ** - - 1. The change operator works in the same way as delete. The format is: - - c [number] motion - - 2. The motions are the same, such as w (word) and $ (end of line). - - 3. Move to the first line below marked --->. - - 4. Move the cursor to the first error. - - 5. Type c$ and type the rest of the line like the second and press . - ----> The end of this line needs some help to make it like the second. ----> The end of this line needs to be corrected using the c$ command. - -NOTE: You can use the Backspace key to correct mistakes while typing. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 3 SUMMARY - - - 1. To put back text that has just been deleted, type p . This puts the - deleted text AFTER the cursor (if a line was deleted it will go on the - line below the cursor). - - 2. To replace the character under the cursor, type r and then the - character you want to have there. - - 3. The change operator allows you to change from the cursor to where the - motion takes you. eg. Type ce to change from the cursor to the end of - the word, c$ to change to the end of a line. - - 4. The format for change is: - - c [number] motion - -Now go on to the next lesson. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.1: CURSOR LOCATION AND FILE STATUS - - ** Type CTRL-G to show your location in the file and the file status. - Type G to move to a line in the file. ** - - NOTE: Read this entire lesson before executing any of the steps!! - - 1. Hold down the Ctrl key and press g . We call this CTRL-G. - A message will appear at the bottom of the page with the filename and the - position in the file. Remember the line number for Step 3. - -NOTE: You may see the cursor position in the lower right corner of the screen - This happens when the 'ruler' option is set (see :help 'ruler' ) - - 2. Press G to move you to the bottom of the file. - Type gg to move you to the start of the file. - - 3. Type the number of the line you were on and then G . This will - return you to the line you were on when you first pressed CTRL-G. - - 4. If you feel confident to do this, execute steps 1 through 3. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.2: THE SEARCH COMMAND - - - ** Type / followed by a phrase to search for the phrase. ** - - 1. In Normal mode type the / character. Notice that it and the cursor - appear at the bottom of the screen as with the : command. - - 2. Now type 'errroor' . This is the word you want to search for. - - 3. To search for the same phrase again, simply type n . - To search for the same phrase in the opposite direction, type N . - - 4. To search for a phrase in the backward direction, use ? instead of / . - - 5. To go back to where you came from press CTRL-O (Keep Ctrl down while - pressing the letter o). Repeat to go back further. CTRL-I goes forward. - ----> "errroor" is not the way to spell error; errroor is an error. -NOTE: When the search reaches the end of the file it will continue at the - start, unless the 'wrapscan' option has been reset. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.3: MATCHING PARENTHESES SEARCH - - - ** Type % to find a matching ),], or } . ** - - 1. Place the cursor on any (, [, or { in the line below marked --->. - - 2. Now type the % character. - - 3. The cursor will move to the matching parenthesis or bracket. - - 4. Type % to move the cursor to the other matching bracket. - - 5. Move the cursor to another (,),[,],{ or } and see what % does. - ----> This ( is a test line with ('s, ['s ] and {'s } in it. )) - - -NOTE: This is very useful in debugging a program with unmatched parentheses! - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4.4: THE SUBSTITUTE COMMAND - - - ** Type :s/old/new/g to substitute 'new' for 'old'. ** - - 1. Move the cursor to the line below marked --->. - - 2. Type :s/thee/the . Note that this command only changes the - first occurrence of "thee" in the line. - - 3. Now type :s/thee/the/g . Adding the g flag means to substitute - globally in the line, change all occurrences of "thee" in the line. - ----> thee best time to see thee flowers is in thee spring. - - 4. To change every occurrence of a character string between two lines, - type :#,#s/old/new/g where #,# are the line numbers of the range - of lines where the substitution is to be done. - Type :%s/old/new/g to change every occurrence in the whole file. - Type :%s/old/new/gc to find every occurrence in the whole file, - with a prompt whether to substitute or not. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 4 SUMMARY - - - 1. CTRL-G displays your location in the file and the file status. - G moves to the end of the file. - number G moves to that line number. - gg moves to the first line. - - 2. Typing / followed by a phrase searches FORWARD for the phrase. - Typing ? followed by a phrase searches BACKWARD for the phrase. - After a search type n to find the next occurrence in the same direction - or N to search in the opposite direction. - CTRL-O takes you back to older positions, CTRL-I to newer positions. - - 3. Typing % while the cursor is on a (,),[,],{, or } goes to its match. - - 4. To substitute new for the first old in a line type :s/old/new - To substitute new for all 'old's on a line type :s/old/new/g - To substitute phrases between two line #'s type :#,#s/old/new/g - To substitute all occurrences in the file type :%s/old/new/g - To ask for confirmation each time add 'c' :%s/old/new/gc - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.1: HOW TO EXECUTE AN EXTERNAL COMMAND - - - ** Type :! followed by an external command to execute that command. ** - - 1. Type the familiar command : to set the cursor at the bottom of the - screen. This allows you to enter a command-line command. - - 2. Now type the ! (exclamation point) character. This allows you to - execute any external shell command. - - 3. As an example type ls following the ! and then hit . This - will show you a listing of your directory, just as if you were at the - shell prompt. Or use :!dir if ls doesn't work. - -NOTE: It is possible to execute any external command this way, also with - arguments. - -NOTE: All : commands must be finished by hitting - From here on we will not always mention it. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.2: MORE ON WRITING FILES - - - ** To save the changes made to the text, type :w FILENAME. ** - - 1. Type :!dir or :!ls to get a listing of your directory. - You already know you must hit after this. - - 2. Choose a filename that does not exist yet, such as TEST. - - 3. Now type: :w TEST (where TEST is the filename you chose.) - - 4. This saves the whole file (the Vim Tutor) under the name TEST. - To verify this, type :!dir or :!ls again to see your directory. - -NOTE: If you were to exit Vim and start it again with vim TEST , the file - would be an exact copy of the tutor when you saved it. - - 5. Now remove the file by typing (MS-DOS): :!del TEST - or (Unix): :!rm TEST - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.3: SELECTING TEXT TO WRITE - - - ** To save part of the file, type v motion :w FILENAME ** - - 1. Move the cursor to this line. - - 2. Press v and move the cursor to the fifth item below. Notice that the - text is highlighted. - - 3. Press the : character. At the bottom of the screen :'<,'> will appear. - - 4. Type w TEST , where TEST is a filename that does not exist yet. Verify - that you see :'<,'>w TEST before you press . - - 5. Vim will write the selected lines to the file TEST. Use :!dir or !ls - to see it. Do not remove it yet! We will use it in the next lesson. - -NOTE: Pressing v starts Visual selection. You can move the cursor around - to make the selection bigger or smaller. Then you can use an operator - to do something with the text. For example, d deletes the text. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5.4: RETRIEVING AND MERGING FILES - - - ** To insert the contents of a file, type :r FILENAME ** - - 1. Place the cursor just above this line. - -NOTE: After executing Step 2 you will see text from Lesson 5.3. Then move - DOWN to see this lesson again. - - 2. Now retrieve your TEST file using the command :r TEST where TEST is - the name of the file you used. - The file you retrieve is placed below the cursor line. - - 3. To verify that a file was retrieved, cursor back and notice that there - are now two copies of Lesson 5.3, the original and the file version. - -NOTE: You can also read the output of an external command. For example, - :r !ls reads the output of the ls command and puts it below the - cursor. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 5 SUMMARY - - - 1. :!command executes an external command. - - Some useful examples are: - (MS-DOS) (Unix) - :!dir :!ls - shows a directory listing. - :!del FILENAME :!rm FILENAME - removes file FILENAME. - - 2. :w FILENAME writes the current Vim file to disk with name FILENAME. - - 3. v motion :w FILENAME saves the Visually selected lines in file - FILENAME. - - 4. :r FILENAME retrieves disk file FILENAME and puts it below the - cursor position. - - 5. :r !dir reads the output of the dir command and puts it below the - cursor position. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.1: THE OPEN COMMAND - - - ** Type o to open a line below the cursor and place you in Insert mode. ** - - 1. Move the cursor to the line below marked --->. - - 2. Type the lowercase letter o to open up a line BELOW the cursor and place - you in Insert mode. - - 3. Now type some text and press to exit Insert mode. - ----> After typing o the cursor is placed on the open line in Insert mode. - - 4. To open up a line ABOVE the cursor, simply type a capital O , rather - than a lowercase o. Try this on the line below. - ----> Open up a line above this by typing O while the cursor is on this line. - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.2: THE APPEND COMMAND - - - ** Type a to insert text AFTER the cursor. ** - - 1. Move the cursor to the start of the line below marked --->. - - 2. Press e until the cursor is on the end of li . - - 3. Type an a (lowercase) to append text AFTER the cursor. - - 4. Complete the word like the line below it. Press to exit Insert - mode. - - 5. Use e to move to the next incomplete word and repeat steps 3 and 4. - ----> This li will allow you to pract appendi text to a line. ----> This line will allow you to practice appending text to a line. - -NOTE: a, i and A all go to the same Insert mode, the only difference is where - the characters are inserted. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.3: ANOTHER WAY TO REPLACE - - - ** Type a capital R to replace more than one character. ** - - 1. Move the cursor to the first line below marked --->. Move the cursor to - the beginning of the first xxx . - - 2. Now press R and type the number below it in the second line, so that it - replaces the xxx . - - 3. Press to leave Replace mode. Notice that the rest of the line - remains unmodified. - - 4. Repeat the steps to replace the remaining xxx. - ----> Adding 123 to xxx gives you xxx. ----> Adding 123 to 456 gives you 579. - -NOTE: Replace mode is like Insert mode, but every typed character deletes an - existing character. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.4: COPY AND PASTE TEXT - - - ** Use the y operator to copy text and p to paste it ** - - 1. Go to the line marked with ---> below and place the cursor after "a)". - - 2. Start Visual mode with v and move the cursor to just before "first". - - 3. Type y to yank (copy) the highlighted text. - - 4. Move the cursor to the end of the next line: j$ - - 5. Type p to put (paste) the text. Then type: a second . - - 6. Use Visual mode to select " item.", yank it with y , move to the end of - the next line with j$ and put the text there with p . - ----> a) this is the first item. - b) - - NOTE: you can also use y as an operator; yw yanks one word. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6.5: SET OPTION - - - ** Set an option so a search or substitute ignores case ** - - 1. Search for 'ignore' by entering: /ignore - Repeat several times by pressing n . - - 2. Set the 'ic' (Ignore case) option by entering: :set ic - - 3. Now search for 'ignore' again by pressing n - Notice that Ignore and IGNORE are now also found. - - 4. Set the 'hlsearch' and 'incsearch' options: :set hls is - - 5. Now type the search command again and see what happens: /ignore - - 6. To disable ignoring case enter: :set noic - -NOTE: To remove the highlighting of matches enter: :nohlsearch -NOTE: If you want to ignore case for just one search command, use \c - in the phrase: /ignore\c -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 6 SUMMARY - - 1. Type o to open a line BELOW the cursor and start Insert mode. - Type O to open a line ABOVE the cursor. - - 2. Type a to insert text AFTER the cursor. - Type A to insert text after the end of the line. - - 3. The e command moves to the end of a word. - - 4. The y operator yanks (copies) text, p puts (pastes) it. - - 5. Typing a capital R enters Replace mode until is pressed. - - 6. Typing ":set xxx" sets the option "xxx". Some options are: - 'ic' 'ignorecase' ignore upper/lower case when searching - 'is' 'incsearch' show partial matches for a search phrase - 'hls' 'hlsearch' highlight all matching phrases - You can either use the long or the short option name. - - 7. Prepend "no" to switch an option off: :set noic - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.1: GETTING HELP - - - ** Use the on-line help system ** - - Vim has a comprehensive on-line help system. To get started, try one of - these three: - - press the key (if you have one) - - press the key (if you have one) - - type :help - - Read the text in the help window to find out how the help works. - Type CTRL-W CTRL-W to jump from one window to another. - Type :q to close the help window. - - You can find help on just about any subject, by giving an argument to the - ":help" command. Try these (don't forget pressing ): - - :help w - :help c_CTRL-D - :help insert-index - :help user-manual -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.2: CREATE A STARTUP SCRIPT - - - ** Enable Vim features ** - - Vim has many more features than Vi, but most of them are disabled by - default. To start using more features you have to create a "vimrc" file. - - 1. Start editing the "vimrc" file. This depends on your system: - :e ~/.vimrc for Unix - :e $VIM/_vimrc for MS-Windows - - 2. Now read the example "vimrc" file contents: - :r $VIMRUNTIME/vimrc_example.vim - - 3. Write the file with: - :w - - The next time you start Vim it will use syntax highlighting. - You can add all your preferred settings to this "vimrc" file. - For more information type :help vimrc-intro - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7.3: COMPLETION - - - ** Command line completion with CTRL-D and ** - - 1. Make sure Vim is not in compatible mode: :set nocp - - 2. Look what files exist in the directory: :!ls or :!dir - - 3. Type the start of a command: :e - - 4. Press CTRL-D and Vim will show a list of commands that start with "e". - - 5. Press and Vim will complete the command name to ":edit". - - 6. Now add a space and the start of an existing file name: :edit FIL - - 7. Press . Vim will complete the name (if it is unique). - -NOTE: Completion works for many commands. Just try pressing CTRL-D and - . It is especially useful for :help . - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lesson 7 SUMMARY - - - 1. Type :help or press or to open a help window. - - 2. Type :help cmd to find help on cmd . - - 3. Type CTRL-W CTRL-W to jump to another window - - 4. Type :q to close the help window - - 5. Create a vimrc startup script to keep your preferred settings. - - 6. When typing a : command, press CTRL-D to see possible completions. - Press to use one completion. - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - This concludes the Vim Tutor. It was intended to give a brief overview of - the Vim editor, just enough to allow you to use the editor fairly easily. - It is far from complete as Vim has many many more commands. Read the user - manual next: ":help user-manual". - - For further reading and studying, this book is recommended: - Vim - Vi Improved - by Steve Oualline - Publisher: New Riders - The first book completely dedicated to Vim. Especially useful for beginners. - There are many examples and pictures. - See http://iccf-holland.org/click5.html - - This book is older and more about Vi than Vim, but also recommended: - Learning the Vi Editor - by Linda Lamb - Publisher: O'Reilly & Associates Inc. - It is a good book to get to know almost anything you want to do with Vi. - The sixth edition also includes information on Vim. - - This tutorial was written by Michael C. Pierce and Robert K. Ware, - Colorado School of Mines using ideas supplied by Charles Smith, - Colorado State University. E-mail: bware@mines.colorado.edu. - - Modified for Vim by Bram Moolenaar. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.vim b/share/vim/vim73/tutor/tutor.vim deleted file mode 100644 index 11584d5b..00000000 --- a/share/vim/vim73/tutor/tutor.vim +++ /dev/null @@ -1,183 +0,0 @@ -" Vim tutor support file -" Author: Eduardo F. Amatria -" Maintainer: Bram Moolenaar -" Last Change: 2008 Jul 21 - -" This Vim script is used for detecting if a translation of the -" tutor file exist, i.e., a tutor.xx file, where xx is the language. -" If the translation does not exist, or no extension is given, -" it defaults to the english version. - -" It is invoked by the vimtutor shell script. - -" 1. Build the extension of the file, if any: -let s:ext = "" -if strlen($xx) > 1 - let s:ext = "." . $xx -else - let s:lang = "" - " Check that a potential value has at least two letters. - " Ignore "1043" and "C". - if exists("v:lang") && v:lang =~ '\a\a' - let s:lang = v:lang - elseif $LC_ALL =~ '\a\a' - let s:lang = $LC_ALL - elseif $LANG =~ '\a\a' - let s:lang = $LANG - endif - if s:lang != "" - " Remove "@euro" (ignoring case), it may be at the end - let s:lang = substitute(s:lang, '\c@euro', '', '') - " On MS-Windows it may be German_Germany.1252 or Polish_Poland.1250. How - " about other languages? - if s:lang =~ "German" - let s:ext = ".de" - elseif s:lang =~ "Polish" - let s:ext = ".pl" - elseif s:lang =~ "Slovak" - let s:ext = ".sk" - elseif s:lang =~ "Czech" - let s:ext = ".cs" - elseif s:lang =~ "Dutch" - let s:ext = ".nl" - else - let s:ext = "." . strpart(s:lang, 0, 2) - endif - endif -endif - -" Somehow ".ge" (Germany) is sometimes used for ".de" (Deutsch). -if s:ext =~? '\.ge' - let s:ext = ".de" -endif - -if s:ext =~? '\.en' - let s:ext = "" -endif - -" The japanese tutor is available in two encodings, guess which one to use -" The "sjis" one is actually "cp932", it doesn't matter for this text. -if s:ext =~? '\.ja' - if &enc =~ "euc" - let s:ext = ".ja.euc" - elseif &enc != "utf-8" - let s:ext = ".ja.sjis" - endif -endif - -" The korean tutor is available in two encodings, guess which one to use -if s:ext =~? '\.ko' - if &enc != "utf-8" - let s:ext = ".ko.euc" - endif -endif - -" The Chinese tutor is available in two encodings, guess which one to use -" This segment is from the above lines and modified by -" Mendel L Chan for Chinese vim tutorial -if s:ext =~? '\.zh' - if &enc =~ 'big5\|cp950' - let s:ext = ".zh.big5" - elseif &enc != 'utf-8' - let s:ext = ".zh.euc" - endif -endif - -" The Polish tutor is available in two encodings, guess which one to use. -if s:ext =~? '\.pl' - if &enc =~ 1250 - let s:ext = ".pl.cp1250" - endif -endif - -" The Turkish tutor is available in two encodings, guess which one to use -if s:ext =~? '\.tr' - if &enc == "iso-8859-9" - let s:ext = ".tr.iso9" - endif -endif - -" The Greek tutor is available in three encodings, guess what to use. -" We used ".gr" (Greece) instead of ".el" (Greek); accept both. -if s:ext =~? '\.gr\|\.el' - if &enc == "iso-8859-7" - let s:ext = ".el" - elseif &enc == "utf-8" - let s:ext = ".el.utf-8" - elseif &enc =~ 737 - let s:ext = ".el.cp737" - endif -endif - -" The Slovak tutor is available in three encodings, guess which one to use -if s:ext =~? '\.sk' - if &enc =~ 1250 - let s:ext = ".sk.cp1250" - endif -endif - -" The Czech tutor is available in three encodings, guess which one to use -if s:ext =~? '\.cs' - if &enc =~ 1250 - let s:ext = ".cs.cp1250" - endif -endif - -" The Russian tutor is available in three encodings, guess which one to use. -if s:ext =~? '\.ru' - if &enc =~ '1251' - let s:ext = '.ru.cp1251' - elseif &enc =~ 'koi8' - let s:ext = '.ru' - endif -endif - -" The Hungarian tutor is available in three encodings, guess which one to use. -if s:ext =~? '\.hu' - if &enc =~ 1250 - let s:ext = ".hu.cp1250" - elseif &enc =~ 'iso-8859-2' - let s:ext = '.hu' - endif -endif - -" The Croatian tutor is available in three encodings, guess which one to use. -if s:ext =~? '\.hr' - if &enc =~ 1250 - let s:ext = ".hr.cp1250" - elseif &enc =~ 'iso-8859-2' - let s:ext = '.hr' - endif -endif - -" Esperanto is only available in utf-8 -if s:ext =~? '\.eo' - let s:ext = ".eo.utf-8" -endif -" Vietnamese is only available in utf-8 -if s:ext =~? '\.vi' - let s:ext = ".vi.utf-8" -endif - -" If 'encoding' is utf-8 s:ext must end in utf-8. -if &enc == 'utf-8' && s:ext !~ '\.utf-8' - let s:ext .= '.utf-8' -endif - -" 2. Build the name of the file: -let s:tutorfile = "/tutor/tutor" -let s:tutorxx = $VIMRUNTIME . s:tutorfile . s:ext - -" 3. Finding the file: -if filereadable(s:tutorxx) - let $TUTOR = s:tutorxx -else - let $TUTOR = $VIMRUNTIME . s:tutorfile - echo "The file " . s:tutorxx . " does not exist.\n" - echo "Copying English version: " . $TUTOR - 4sleep -endif - -" 4. Making the copy and exiting Vim: -e $TUTOR -wq! $TUTORCOPY diff --git a/share/vim/vim73/tutor/tutor.zh.euc b/share/vim/vim73/tutor/tutor.zh.euc deleted file mode 100644 index 7f80f690..00000000 --- a/share/vim/vim73/tutor/tutor.zh.euc +++ /dev/null @@ -1,851 +0,0 @@ -=============================================================================== -= »¶ Ó­ ÔÄ ¶Á ¡¶ V I M ½Ì ³Ì ¡· ¡ª¡ª °æ±¾ 1.5 = -=============================================================================== - vim ÊÇÒ»¸ö¾ßÓкܶàÃüÁîµÄ¹¦Äܷdz£Ç¿´óµÄ±à¼­Æ÷¡£ÏÞÓÚƪ·ù£¬ÔÚ±¾½Ì³Ìµ±ÖÐ - ¾Í²»Ïêϸ½éÉÜÁË¡£±¾½Ì³ÌµÄÉè¼ÆÄ¿±êÊǽ²ÊöһЩ±ØÒªµÄ»ù±¾ÃüÁ¶øÕÆÎÕºÃÕâ - ЩÃüÁÄú¾ÍÄܹ»ºÜÈÝÒ×½«vimµ±×÷Ò»¸öͨÓõÄÍòÄܱ༭Æ÷À´Ê¹ÓÃÁË¡£ - - Íê³É±¾½Ì³ÌµÄÄÚÈÝ´óÔ¼ÐèÒª25-30·ÖÖÓ£¬È¡¾öÓÚÄúѵÁ·µÄʱ¼ä¡£ - - ÿһ½ÚµÄÃüÁî²Ù×÷½«»á¸ü¸Ä±¾ÎÄ¡£ÍƼöÄú¸´ÖƱ¾ÎĵÄÒ»¸ö¸±±¾£¬È»ºóÔÚ¸±±¾ÉÏ - ½øÐÐѵÁ·(Èç¹ûÄúÊÇͨ¹ý"vimtutor"À´Æô¶¯½Ì³ÌµÄ£¬ÄÇô±¾ÎľÍÒѾ­ÊǸ±±¾ÁË)¡£ - - ÇмÇÒ»µã¡Ã±¾½Ì³ÌµÄÉè¼Æ˼·ÊÇÔÚʹÓÃÖнøÐÐѧϰµÄ¡£Ò²¾ÍÊÇ˵£¬ÄúÐèҪͨ¹ý - Ö´ÐÐÃüÁîÀ´Ñ§Ï°ËüÃDZ¾ÉíµÄÕýÈ·Ó÷¨¡£Èç¹ûÄúÖ»ÊÇÔĶÁ¶ø²»²Ù×÷£¬ÄÇôÄú¿ÉÄÜ - »áºÜ¿ìÒÅÍüÕâЩÃüÁîµÄ£¡ - - ºÃÁË£¬ÏÖÔÚÇëÈ·¶¨ÄúµÄShift-Lock(´óСдËø¶¨¼ü)»¹Ã»Óа´Ï£¬È»ºó°´¼üÅÌÉÏ - µÄ×Öĸ¼ü j ×ã¹»¶àµÄ´ÎÊýÀ´Òƶ¯¹â±ê£¬Ö±µ½µÚÒ»½ÚµÄÄÚÈÝÄܹ»ÍêÈ«³äÂúÆÁÄ»¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÒ»½²µÚÒ»½Ú¡ÃÒƶ¯¹â±ê - - - ¡ù¡ù ÒªÒƶ¯¹â±ê£¬ÇëÒÀÕÕ˵Ã÷·Ö±ð°´Ï h¡¢j¡¢k¡¢l ¼ü¡£ ¡ù¡ù - - ^ - k Ìáʾ¡Ã h µÄ¼üλÓÚ×ó±ß£¬Ã¿´Î°´Ï¾ͻáÏò×óÒƶ¯¡£ - < h l > l µÄ¼üλÓÚÓұߣ¬Ã¿´Î°´Ï¾ͻáÏòÓÒÒƶ¯¡£ - j j ¼ü¿´ÆðÀ´ºÜÏóÒ»Ö§¼â¶Ë·½Ïò³¯ÏµļýÍ·¡£ - v - - 1. ÇëËæÒâÔÚÆÁÄ»ÄÚÒƶ¯¹â±ê£¬Ö±ÖÁÄú¾õµÃÊæ·þΪֹ¡£ - - 2. °´ÏÂÏÂÐмü(j)£¬Ö±µ½³öÏÖ¹â±êÖظ´ÏÂÐС£ - ----> ÏÖÔÚÄúÓ¦¸ÃÒѾ­Ñ§»áÈçºÎÒƶ¯µ½ÏÂÒ»½²°É¡£ - - 3. ÏÖÔÚÇëʹÓÃÏÂÐмü£¬½«¹â±êÒƶ¯µ½µÚ¶þ½²¡£ - -Ìáʾ¡ÃÈç¹ûÄú²»¸ÒÈ·¶¨ÄúËù°´ÏµÄ×Öĸ£¬Ç밴ϼü»Øµ½Õý³£(Normal)ģʽ¡£ - È»ºóÔٴδӼüÅÌÊäÈëÄúÏëÒªµÄÃüÁî¡£ - -Ìáʾ¡Ã¹â±ê¼üÓ¦µ±Ò²ÄÜÕý³£¹¤×÷µÄ¡£µ«ÊÇʹÓÃhjkl¼ü£¬ÔÚÏ°¹ßÖ®ºóÄú¾ÍÄܹ»¿ìËÙ - µØÔÚÆÁÄ»ÄÚËÄ´¦Òƶ¯¹â±êÁË¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÒ»½²µÚ¶þ½Ú¡ÃVIMµÄ½øÈëºÍÍ˳ö - - - !! ÌرðÌáʾ¡Ã¾´ÇëÔĶÁÍêÕû±¾Ò»½ÚµÄÄÚÈÝ£¬È»ºó²ÅÄÜÖ´ÐÐÒÔÏÂËù½²½âµÄÃüÁî¡£ - - 1. Çë°´¼ü(ÕâÊÇΪÁËÈ·±£Äú´¦ÔÚÕý³£Ä£Ê½)¡£ - - 2. È»ºóÊäÈë¡Ã :q! <»Ø³µ> - ----> ÕâÖÖ·½Ê½µÄÍ˳ö±à¼­Æ÷¾ø²»»á±£´æÄú½øÈë±à¼­Æ÷ÒÔÀ´Ëù×öµÄ¸Ä¶¯¡£ - Èç¹ûÄúÏë±£´æ¸ü¸ÄÔÙÍ˳ö£¬ÇëÊäÈë¡Ã - :wq <»Ø³µ> - - 3. Èç¹ûÄú¿´µ½ÁËÃüÁîÐÐÌáʾ·û£¬ÇëÊäÈëÄܹ»´øÄú»Øµ½±¾½Ì³ÌµÄÃüÁÄǾÍÊÇ¡Ã - - vimtutor <»Ø³µ> - - ͨ³£Çé¿öÏÂÄúÒ²¿ÉÒÔÓÃÕâÖÖ·½Ê½¡Ã - - vim tutor <»Ø³µ> - ----> ÕâÀïµÄ 'vim' ±íʾ½øÈëvim±à¼­Æ÷£¬¶ø 'tutor'ÔòÊÇÄú×¼±¸Òª±à¼­µÄÎļþ¡£ - - 4. Èç¹ûÄú×ÔÐÅÒѾ­ÀÎÀμÇסÁËÕâЩ²½ÖèµÄ»°£¬Çë´Ó²½Öè1Ö´Ðе½²½Öè3Í˳ö£¬È» - ºóÔٴνøÈë±à¼­Æ÷¡£½Ó׎«¹â±êÒƶ¯µ½µÚÒ»½²µÚÈý½ÚÀ´¼ÌÐøÎÒÃǵĽ̳̽²½â¡£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÒ»½²µÚÈý½Ú¡ÃÎı¾±à¼­Ö®É¾³ý - - - ** ÔÚÕý³£(Normal)ģʽÏ£¬¿ÉÒÔ°´Ï x ¼üÀ´É¾³ý¹â±êËùÔÚλÖõÄ×Ö·û¡£** - - 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐС£ - - 2. ΪÁËÐÞÕýÊäÈë´íÎó£¬Ç뽫¹â±êÒÆÖÁ×¼±¸É¾³ýµÄ×Ö·ûµÄλÖô¦¡£ - - 3. È»ºó°´Ï x ¼ü½«´íÎó×Ö·ûɾ³ýµô¡£ - - 4. Öظ´²½Öè2µ½²½Öè4£¬Ö±µ½¾ä×ÓÐÞÕýΪֹ¡£ - ----> The ccow jumpedd ovverr thhe mooon. - - 5. ºÃÁË£¬¸ÃÐÐÒѾ­ÐÞÕýÁË£¬ÏÂÒ»½ÚÄÚÈÝÊǵÚÒ»½²µÚËĽڡ£ - -ÌرðÌáʾ¡ÃÔÚÄúä¯ÀÀ±¾½Ì³Ìʱ£¬²»ÒªÇ¿ÐмÇÒä¡£¼Çסһµã¡ÃÔÚʹÓÃÖÐѧϰ¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÒ»½²µÚËĽڡÃÎı¾±à¼­Ö®²åÈë - - - ** ÔÚÕý³£Ä£Ê½Ï£¬¿ÉÒÔ°´Ï i ¼üÀ´²åÈëÎı¾¡£** - - 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐС£ - - 2. ΪÁËʹµÃµÚÒ»ÐÐÄÚÈÝÀ×ͬÓÚµÚ¶þÐУ¬Ç뽫¹â±êÒÆÖÁÎı¾µÚÒ»¸ö×Ö·û×¼±¸²åÈë - µÄλÖᣠ- - 3. È»ºó°´Ï i ¼ü£¬½Ó×ÅÊäÈë±ØÒªµÄÎı¾×Ö·û¡£ - - 4. ËùÓÐÎı¾¶¼ÐÞÕýÍê±Ï£¬Çë°´Ï ¼ü·µ»ØÕý³£Ä£Ê½¡£ - Öظ´²½Öè2ÖÁ²½Öè4ÒÔ±ãÐÞÕý¾ä×Ó¡£ - ----> There is text misng this . ----> There is some text missing from this line. - - 5. Èç¹ûÄú¶ÔÎı¾²åÈë²Ù×÷ÒѾ­ºÜÂúÒ⣬Çë½Ó×ÅÔĶÁÏÂÃæµÄС½á¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÒ»½²Ð¡½á - - - 1. ¹â±êÔÚÆÁÄ»Îı¾ÖеÄÒƶ¯¼È¿ÉÒÔÓüýÍ·¼ü£¬Ò²¿ÉÒÔʹÓà hjkl ×Öĸ¼ü¡£ - h (×óÒÆ) j (ÏÂÐÐ) k (ÉÏÐÐ) l (ÓÒÒÆ) - - 2. Óû½øÈëvim±à¼­Æ÷(´ÓÃüÁîÐÐÌáʾ·û)£¬ÇëÊäÈë¡Ãvim ÎļþÃû <»Ø³µ> - - 3. ÓûÍ˳övim±à¼­Æ÷£¬ÇëÊäÈëÒÔÏÂÃüÁî·ÅÆúËùÓÐÐ޸ġà - - :q! <»Ø³µ> - - »òÕßÊäÈëÒÔÏÂÃüÁî±£´æËùÓÐÐ޸ġà - - :wq <»Ø³µ> - - 4. ÔÚÕý³£Ä£Ê½ÏÂɾ³ý¹â±êËùÔÚλÖõÄ×Ö·û£¬Çë°´¡Ã x - - 5. ÔÚÕý³£Ä£Ê½ÏÂÒªÔÚ¹â±êËùÔÚλÖÿªÊ¼²åÈëÎı¾£¬Çë°´¡Ã - - i ÊäÈë±ØÒªÎı¾ - -ÌرðÌáʾ¡Ã°´Ï ¼ü»á´øÄú»Øµ½Õý³£Ä£Ê½»òÕßÈ¡ÏûÒ»¸ö²»ÆÚÍû»òÕß²¿·ÖÍê³É -µÄÃüÁî¡£ - -ºÃÁË£¬µÚÒ»½²µ½´Ë½áÊø¡£ÏÂÃæ½ÓÏÂÀ´¼ÌÐøµÚ¶þ½²µÄÄÚÈÝ¡£ - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚ¶þ½²µÚÒ»½Ú¡Ãɾ³ýÀàÃüÁî - - - ** ÊäÈë dw ¿ÉÒÔ´Ó¹â±ê´¦É¾³ýÖÁÒ»¸öµ¥×Ö/µ¥´ÊµÄĩβ¡£** - - 1. Çë°´Ï ¼üÈ·±£Äú´¦ÓÚÕý³£Ä£Ê½¡£ - - 2. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐС£ - - 3. Ç뽫¹â±êÒÆÖÁ×¼±¸ÒªÉ¾³ýµÄµ¥´ÊµÄ¿ªÊ¼¡£ - - 4. ½Ó×ÅÊäÈë dw ɾ³ýµô¸Ãµ¥´Ê¡£ - - ÌرðÌáʾ¡ÃÄúËùÊäÈëµÄ dw »áÔÚÄúÊäÈëµÄͬʱ³öÏÖÔÚÆÁÄ»µÄ×îºóÒ»ÐС£Èç¹ûÄúÊä - ÈëÓÐÎó£¬Çë°´Ï ¼üÈ¡Ïû£¬È»ºóÖØÐÂÔÙÀ´¡£ - ----> There are a some words fun that don't belong paper in this sentence. - - 5. Öظ´²½Öè3ÖÁ²½Öè4£¬Ö±ÖÁ¾ä×ÓÐÞÕýÍê±Ï¡£½Ó׿ÌÐøµÚ¶þ½²µÚ¶þ½ÚÄÚÈÝ¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚ¶þ½²µÚ¶þ½Ú¡ÃÆäËûɾ³ýÀàÃüÁî - - - ** ÊäÈë d$ ´Óµ±Ç°¹â±êɾ³ýµ½ÐÐÄ©¡£** - - 1. Çë°´Ï ¼üÈ·±£Äú´¦ÓÚÕý³£Ä£Ê½¡£ - - 2. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐС£ - - 3. Ç뽫¹â±êÒƶ¯µ½¸ÃÐеÄβ²¿(Ò²¾ÍÊÇÔÚµÚÒ»¸öµãºÅ¡®.¡¯ºóÃæ)¡£ - - 4. È»ºóÊäÈë d$ ´Ó¹â±ê´¦É¾ÖÁµ±Ç°ÐÐβ²¿¡£ - ----> Somebody typed the end of this line twice. end of this line twice. - - - 5. Çë¼ÌÐøѧϰµÚ¶þ½²µÚÈý½Ú¾ÍÖªµÀÊÇÔõô»ØÊÂÁË¡£ - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚ¶þ½²µÚÈý½Ú¡Ã¹ØÓÚÃüÁîºÍ¶ÔÏó - - - ɾ³ýÃüÁî d µÄ¸ñʽÈçÏ¡à - - [number] d object »òÕß d [number] object - - ÆäÒâÈçÏ¡à - number - ´ú±íÖ´ÐÐÃüÁîµÄ´ÎÊý(¿ÉÑ¡ÏȱʡÉèÖÃΪ 1 )¡£ - d - ´ú±íɾ³ý¡£ - object - ´ú±íÃüÁîËùÒª²Ù×÷µÄ¶ÔÏó(ÏÂÃæÓÐÏà¹Ø½éÉÜ)¡£ - - Ò»¸ö¼ò¶ÌµÄ¶ÔÏóÁбí¡Ã - w - ´Óµ±Ç°¹â±êµ±Ç°Î»ÖÃÖ±µ½µ¥×Ö/µ¥´Êĩ⣬°üÀ¨¿Õ¸ñ¡£ - e - ´Óµ±Ç°¹â±êµ±Ç°Î»ÖÃÖ±µ½µ¥×Ö/µ¥´Êĩ⣬µ«ÊÇ *²»* °üÀ¨¿Õ¸ñ¡£ - $ - ´Óµ±Ç°¹â±êµ±Ç°Î»ÖÃÖ±µ½µ±Ç°ÐÐÄ©¡£ - -ÌرðÌáʾ¡Ã - ¶ÔÓÚÓÂÓÚ̽Ë÷Õߣ¬ÇëÔÚÕý³£Ä£Ê½ÏÂÃæ½ö°´´ú±íÏàÓ¦¶ÔÏóµÄ¼ü¶ø²»Ê¹ÓÃÃüÁÔò - ½«¿´µ½¹â±êµÄÒƶ¯ÕýÈçÉÏÃæµÄ¶ÔÏóÁбíËù´ú±íµÄÒ»Ñù¡£ - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚ¶þ½²µÚËĽڡöÔÏóÃüÁîµÄÌØÊâÇé¿ö - - - ** ÊäÈë dd ¿ÉÒÔɾ³ýÕûÒ»¸öµ±Ç°ÐС£ ** - - ¼øÓÚÕûÐÐɾ³ýµÄ¸ßƵ¶È£¬VIM µÄÉè¼ÆÕß¾ö¶¨Òª¼ò»¯ÕûÐÐɾ³ý£¬½öÐèÒªÔÚͬһÐÐÉÏ - »÷´òÁ½´Î d ¾Í¿ÉÒÔɾ³ýµô¹â±êËùÔÚµÄÕûÐÐÁË¡£ - - 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæµÄ¶Ì¾ä¶ÎÂäÖеĵڶþÐС£ - 2. ÊäÈë dd ɾ³ý¸ÃÐС£ - 3. È»ºóÒƶ¯µ½µÚËÄÐС£ - 4. ½Ó×ÅÊäÈë 2dd (»¹¼ÇµÃÇ°Ãæ½²¹ýµÄ number-command-object Âð£¿) ɾ³ýÁ½ÐС£ - - 1) Roses are red, - 2) Mud is fun, - 3) Violets are blue, - 4) I have a car, - 5) Clocks tell time, - 6) Sugar is sweet - 7) And so are you. - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚ¶þ½²µÚÎå½Ú¡Ã³·ÏûÀàÃüÁî - - - ** ÊäÈë u À´³·Ïû×îºóÖ´ÐеÄÃüÁÊäÈë U À´ÐÞÕýÕûÐС£** - - 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐУ¬²¢½«ÆäÖÃÓÚµÚÒ»¸ö´íÎó - ´¦¡£ - 2. ÊäÈë x ɾ³ýµÚÒ»¸ö²»Ïë±£ÁôµÄ×Öĸ¡£ - 3. È»ºóÊäÈë u ³·Ïû×îºóÖ´ÐеÄ(Ò»´Î)ÃüÁî¡£ - 4. Õâ´ÎҪʹÓà x ÐÞÕý±¾ÐеÄËùÓдíÎó¡£ - 5. ÏÖÔÚÊäÈëÒ»¸ö´óдµÄ U £¬»Ö¸´µ½¸ÃÐеÄԭʼ״̬¡£ - 6. ½Ó×Ŷà´ÎÊäÈë u ÒÔ³·Ïû U ÒÔ¼°¸üÇ°µÄÃüÁî¡£ - 7. È»ºó¶à´ÎÊäÈë CTRL-R (ÏÈ°´Ï CTRL ¼ü²»·Å¿ª£¬½Ó×ÅÊäÈë R ¼ü) £¬ÕâÑù¾Í - ¿ÉÒÔÖ´Ðлָ´ÃüÁҲ¾ÍÊdz·Ïûµô³·ÏûÃüÁî¡£ - ----> Fiix the errors oon thhis line and reeplace them witth undo. - - 8. ÕâЩ¶¼ÊǷdz£ÓÐÓõÄÃüÁî¡£ÏÂÃæÊǵڶþ½²µÄС½áÁË¡£ - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚ¶þ½²Ð¡½á - - - 1. Óû´Óµ±Ç°¹â±êɾ³ýÖÁµ¥×Ö/µ¥´Êĩ⣬ÇëÊäÈë¡Ãdw - - 2. Óû´Óµ±Ç°¹â±êɾ³ýÖÁµ±Ç°ÐÐĩ⣬ÇëÊäÈë¡Ãd$ - - 3. Óûɾ³ýÕûÐУ¬ÇëÊäÈë¡Ãdd - - 4. ÔÚÕý³£Ä£Ê½ÏÂÒ»¸öÃüÁîµÄ¸ñʽÊÇ¡Ã - - [number] command object »òÕß command [number] object - ÆäÒâÊÇ¡Ã - number - ´ú±íµÄÊÇÃüÁîÖ´ÐеĴÎÊý - command - ´ú±íÒª×öµÄÊÂÇ飬±ÈÈç d ´ú±íɾ³ý - object - ´ú±íÒª²Ù×÷µÄ¶ÔÏ󣬱ÈÈç w ´ú±íµ¥×Ö/µ¥´Ê£¬$ ´ú±íµ½ÐÐÄ©µÈµÈ¡£ - $ (to the end of line), etc. - - 5. Óû³·ÏûÒÔÇ°µÄ²Ù×÷£¬ÇëÊäÈë¡Ãu (СдµÄu) - Óû³·ÏûÔÚÒ»ÐÐÖÐËù×öµÄ¸Ä¶¯£¬ÇëÊäÈë¡ÃU (´óдµÄU) - Óû³·ÏûÒÔÇ°µÄ³·ÏûÃüÁ»Ö¸´ÒÔÇ°µÄ²Ù×÷½á¹û£¬ÇëÊäÈë¡ÃCTRL-R - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÈý½²µÚÒ»½Ú¡ÃÖÃÈëÀàÃüÁî - - - ** ÊäÈë p ½«×îºóÒ»´Îɾ³ýµÄÄÚÈÝÖÃÈë¹â±êÖ®ºó ** - - 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæʾ·¶¶ÎÂäµÄÊ×ÐС£ - - 2. ÊäÈë dd ½«¸ÃÐÐɾ³ý£¬ÕâÑù»á½«¸ÃÐб£´æµ½vimµÄ»º³åÇøÖС£ - - 3. ½Ó׎«¹â±êÒƶ¯µ½×¼±¸ÖÃÈëµÄλÖõÄÉÏ·½¡£¼Çס¡ÃÊÇÉÏ·½Å¶¡£ - - 4. È»ºóÔÚÕý³£Ä£Ê½ÏÂ(¼ü½øÈë)£¬ÊäÈë p ½«¸ÃÐÐÕ³ÌùÖÃÈë¡£ - - 5. Öظ´²½Öè2ÖÁ²½Öè4£¬½«ËùÓеÄÐÐÒÀÐò·ÅÖõ½ÕýÈ·µÄλÖÃÉÏ¡£ - - d) Can you learn too? - b) Violets are blue, - c) Intelligence is learned, - a) Roses are red, - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÈý½²µÚ¶þ½Ú¡ÃÌæ»»ÀàÃüÁî - - - ** ÊäÈë r ºÍÒ»¸ö×Ö·ûÌæ»»¹â±êËùÔÚλÖõÄ×Ö·û¡£** - - 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐС£ - - 2. ÇëÒƶ¯¹â±êµ½µÚÒ»¸ö´íÎóµÄÊʵ±Î»Öᣠ- - 3. ½Ó×ÅÊäÈë r £¬ÕâÑù¾ÍÄܽ«´íÎóÌæ»»µôÁË¡£ - - 4. Öظ´²½Öè2ºÍ²½Öè3£¬Ö±µ½µÚÒ»ÐÐÒѾ­ÐÞ¸ÄÍê±Ï¡£ - ----> Whan this lime was tuoed in, someone presswd some wrojg keys! ----> When this line was typed in, someone pressed some wrong keys! - - 5. È»ºóÎÒÃǼÌÐøѧУµÚÈý½²µÚÈý½Ú¡£ - -ÌرðÌáʾ¡ÃÇмÇÄúÒªÔÚʹÓÃÖÐѧϰ£¬¶ø²»ÊÇÔÚ¼ÇÒäÖÐѧϰ¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÈý½²µÚÈý½Ú¡Ã¸ü¸ÄÀàÃüÁî - - - ** Òª¸Ä±äÒ»¸öµ¥×Ö/µ¥´ÊµÄ²¿·Ö»òÕßÈ«²¿£¬ÇëÊäÈë cw ** - - 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐС£ - - 2. ½Ó×Űѹâ±ê·ÅÔÚµ¥´Ê lubw µÄ×Öĸ u µÄλÖÃÄÇÀï¡£ - - 3. È»ºóÊäÈë cw ¾Í¿ÉÒÔÐÞÕý¸Ãµ¥´ÊÁË(ÔÚ±¾ÀýÕâÀïÊÇÊäÈë ine ¡£) - - 4. ×îºó°´ ¼ü£¬È»ºó¹â±ê¶¨Î»µ½ÏÂÒ»¸ö´íÎóµÚÒ»¸ö×¼±¸¸ü¸ÄµÄ×Öĸ´¦¡£ - - 5. Öظ´²½Öè3ºÍ²½Öè4£¬Ö±µ½µÚÒ»¸ö¾ä×ÓÍêÈ«À×ͬµÚ¶þ¸ö¾ä×Ó¡£ - ----> This lubw has a few wptfd that mrrf changing usf the change command. ----> This line has a few words that need changing using the change command. - -Ìáʾ¡ÃÇë×¢Òâ cw ÃüÁî²»½ö½öÊÇÌæ»»ÁËÒ»¸öµ¥´Ê£¬Ò²ÈÃÄú½øÈëÎı¾²åÈë״̬ÁË¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÈý½²µÚËĽڡÃʹÓÃcÖ¸ÁîµÄÆäËû¸ü¸ÄÀàÃüÁî - - - ** ¸ü¸ÄÀàÖ¸Áî¿ÉÒÔʹÓÃͬɾ³ýÀàÃüÁîËùʹÓõĶÔÏó²ÎÊý¡£** - - 1. ¸ü¸ÄÀàÖ¸ÁîµÄ¹¤×÷·½Ê½¸úɾ³ýÀàÃüÁîÊÇÒ»Öµġ£²Ù×÷¸ñʽÊÇ¡Ã - - [number] c object »òÕß c [number] object - - 2. ¶ÔÏó²ÎÊýÒ²ÊÇÒ»ÑùµÄ£¬±ÈÈç w ´ú±íµ¥×Ö/µ¥´Ê£¬$´ú±íÐÐÄ©µÈµÈ¡£ - - 3. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐС£ - - 4. ½Ó׎«¹â±êÒƶ¯µ½µÚÒ»¸ö´íÎ󴦡£ - - 5. È»ºóÊäÈë c$ ʹµÃ¸ÃÐÐʣϵIJ¿·Ö¸üÕýµÃͬµÚ¶þÐÐÒ»Ñù¡£×îºó°´ ¼ü¡£ - ----> The end of this line needs some help to make it like the second. ----> The end of this line needs to be corrected using the c$ command. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÈý½²Ð¡½á - - - 1. ÒªÖØÐÂÖÃÈëÒѾ­É¾³ýµÄÎı¾ÄÚÈÝ£¬ÇëÊäÈëСд×Öĸ p¡£¸Ã²Ù×÷¿ÉÒÔ½«ÒÑɾ³ý - µÄÎı¾ÄÚÈÝÖÃÓÚ¹â±êÖ®ºó¡£Èç¹û×îºóÒ»´Îɾ³ýµÄÊÇÒ»¸öÕûÐУ¬ÄÇô¸ÃÐн«Öà - ÓÚµ±Ç°¹â±êËùÔÚÐеÄÏÂÒ»ÐС£ - - 2. ÒªÌæ»»¹â±êËùÔÚλÖõÄ×Ö·û£¬ÇëÊäÈëСдµÄ r ºÍÒªÌæ»»µôԭλÖÃ×Ö·ûµÄÐÂ×Ö - ·û¼´¿É¡£ - - 3. ¸ü¸ÄÀàÃüÁîÔÊÐíÄú¸Ä±äÖ¸¶¨µÄ¶ÔÏ󣬴ӵ±Ç°¹â±êËùÔÚλÖÃÖ±µ½¶ÔÏóµÄĩβ¡£ - ±ÈÈçÊäÈë cw ¿ÉÒÔÌæ»»µ±Ç°¹â±êµ½µ¥´ÊµÄĩβµÄÄÚÈÝ£»ÊäÈë c$ ¿ÉÒÔÌæ»»µ± - Ç°¹â±êµ½ÐÐÄ©µÄÄÚÈÝ¡£ - - 4. ¸ü¸ÄÀàÃüÁîµÄ¸ñʽÊÇ¡Ã - - [number] c object »òÕß c [number] object - -ÏÂÃæÎÒÃǼÌÐøѧϰÏÂÒ»½²¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚËĽ²µÚÒ»½Ú¡Ã¶¨Î»¼°Îļþ״̬ - - - ** ÊäÈë CTRL-g ÏÔʾµ±Ç°±à¼­ÎļþÖе±Ç°¹â±êËùÔÚÐÐλÖÃÒÔ¼°Îļþ״̬ÐÅÏ¢¡£ - ÊäÈë SHIFT-G ÔòÖ±½ÓÌøתµ½ÎļþÖеÄijһָ¶¨ÐС£** - - Ìáʾ¡ÃÇмÇÒªÏÈͨ¶Á±¾½ÚÄÚÈÝ£¬Ö®ºó²Å¿ÉÒÔÖ´ÐÐÒÔϲ½Öè!!! - - 1. °´Ï CTRL ¼ü²»·Å¿ªÈ»ºó°´ g ¼ü¡£È»ºó¾Í»á¿´µ½Ò³Ãæ×îµ×²¿³öÏÖÒ»¸ö״̬ÐÅ - Ï¢ÐУ¬ÏÔʾµÄÄÚÈÝÊǵ±Ç°±à¼­µÄÎļþÃûºÍÎļþµÄ×ÜÐÐÊý¡£Çë¼Çס²½Öè3µÄÐкš£ - - 2. °´Ï SHIFT-G ¼ü¿ÉÒÔʹµÃµ±Ç°¹â±êÖ±½ÓÌøתµ½Îļþ×îºóÒ»ÐС£ - - 3. ÊäÈëÄúÔøÍ£ÁôµÄÐкţ¬È»ºó°´Ï SHIFT-G¡£ÕâÑù¾Í¿ÉÒÔ·µ»Øµ½ÄúµÚÒ»´Î°´Ï - CTRL-g ʱËùÔÚµÄÐкÃÁË¡£×¢Òâ¡ÃÊäÈëÐкÅʱ£¬ÐкÅÊDz»»áÔÚÆÁÄ»ÉÏÏÔʾ³öÀ´ - µÄ¡£ - - 4. Èç¹ûÔ¸Ò⣬Äú¿ÉÒÔ¼ÌÐøÖ´Ðв½Öè1ÖÁ²½ÖèÈý¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚËĽ²µÚ¶þ½Ú¡ÃËÑË÷ÀàÃüÁî - - - ** ÊäÈë / ÒÔ¼°Î²ËæµÄ×Ö·û´®¿ÉÒÔÓÃÒÔÔÚµ±Ç°ÎļþÖвéÕÒ¸Ã×Ö·û´®¡£** - - 1. ÔÚÕý³£Ä£Ê½ÏÂÊäÈë / ×Ö·û¡£Äú´Ëʱ»á×¢Òâµ½¸Ã×Ö·ûºÍ¹â±ê¶¼»á³öÏÖÔÚÆÁÄ»µ× - ²¿£¬Õâ¸ú : ÃüÁîÊÇÒ»ÑùµÄ¡£ - - 2. ½Ó×ÅÊäÈë errroor <»Ø³µ>¡£ÄǸöerrroor¾ÍÊÇÄúÒª²éÕÒµÄ×Ö·û´®¡£ - - 3. Òª²éÕÒͬÉÏÒ»´ÎµÄ×Ö·û´®£¬Ö»ÐèÒª°´ n ¼ü¡£ÒªÏòÏà·´·½Ïò²éÕÒͬÉÏÒ»´ÎµÄ×Ö - ·û´®£¬ÇëÊäÈë Shift-N ¼´¿É¡£ - - 4. Èç¹ûÄúÏëÄæÏò²éÕÒ×Ö·û´®£¬ÇëʹÓà ? ´úÌæ / ½øÐС£ - ----> When the search reaches the end of the file it will continue at the start. - - "errroor" is not the way to spell error; errroor is an error. - - Ìáʾ¡ÃÈç¹û²éÕÒÒѾ­µ½´ïÎļþĩ⣬²éÕÒ»á×Ô¶¯´ÓÎļþÍ·²¿¼ÌÐø²éÕÒ¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚËĽ²µÚÈý½Ú¡ÃÅä¶ÔÀ¨ºÅµÄ²éÕÒ - - - ** °´ % ¿ÉÒÔ²éÕÒÅä¶ÔµÄÀ¨ºÅ )¡¢]¡¢}¡£** - - 1. °Ñ¹â±ê·ÅÔÚ±¾½ÚÏÂÃæ±ê¼ÇÓÐ --> ÄÇÒ»ÐÐÖеÄÈκÎÒ»¸ö (¡¢[ »ò { ´¦¡£ - - 2. ½Ó×Å°´ % ×Ö·û¡£ - - 3. ´Ëʱ¹â±êµÄλÖÃÓ¦µ±ÊÇÔÚÅä¶ÔµÄÀ¨ºÅ´¦¡£ - - 4. Ôٴΰ´ % ¾Í¿ÉÒÔÌø»ØÅä¶ÔµÄµÚÒ»¸öÀ¨ºÅ´¦¡£ - ----> This ( is a test line with ('s, ['s ] and {'s } in it. )) - -Ìáʾ¡ÃÔÚ³ÌÐòµ÷ÊÔʱ£¬Õâ¸ö¹¦ÄÜÓÃÀ´²éÕÒ²»Åä¶ÔµÄÀ¨ºÅÊǺÜÓÐÓõġ£ - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚËĽ²µÚËĽڡÃÐÞÕý´íÎóµÄ·½·¨Ö®Ò» - - - ** ÊäÈë :s/old/new/g ¿ÉÒÔÌæ»» old Ϊ new¡£** - - 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐС£ - - 2. ÊäÈë :s/thee/the <»Ø³µ> ¡£Çë×¢Òâ¸ÃÃüÁîÖ»¸Ä±ä¹â±êËùÔÚÐеĵÚÒ»¸öÆ¥Åä - ´®¡£ - - 3. ÊäÈë :s/thee/the/g ÔòÊÇÌ滻ȫÐеÄÆ¥Åä´®¡£ - ----> the best time to see thee flowers is in thee spring. - - 4. ÒªÌæ»»Á½ÐÐÖ®¼ä³öÏÖµÄÿ¸öÆ¥Åä´®£¬ÇëÊäÈë :#,#s/old/new/g (#,#´ú±íµÄÊÇ - Á½ÐеÄÐкÅ)¡£ÊäÈë :%s/old/new/g ÔòÊÇÌæ»»Õû¸öÎļþÖеÄÿ¸öÆ¥Åä´®¡£ - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚËĽ²Ð¡½á - - - 1. Ctrl-g ÓÃÓÚÏÔʾµ±Ç°¹â±êËùÔÚλÖúÍÎļþ״̬ÐÅÏ¢¡£Shift-G ÓÃÓÚ½«¹â±êÌø - תÖÁÎļþ×îºóÒ»ÐС£ÏÈÇÃÈëÒ»¸öÐкÅÈ»ºó°´ Shift-G ÔòÊǽ«¹â±êÒƶ¯ÖÁ¸ÃÐÐ - ºÅ´ú±íµÄÐС£ - - 2. ÊäÈë / È»ºó½ôËæÒ»¸ö×Ö·û´®ÊÇÔòÊÇÔÚµ±Ç°Ëù±à¼­µÄÎĵµÖÐÏòºó²éÕÒ¸Ã×Ö·û´®¡£ - ÊäÈëÎʺŠ? È»ºó½ôËæÒ»¸ö×Ö·û´®ÊÇÔòÊÇÔÚµ±Ç°Ëù±à¼­µÄÎĵµÖÐÏòÇ°²éÕÒ¸Ã×Ö - ·û´®¡£Íê³ÉÒ»´Î²éÕÒÖ®ºó°´ n ¼üÔòÊÇÖظ´ÉÏÒ»´ÎµÄÃüÁ¿ÉÔÚͬһ·½ÏòÉϲé - ÕÒÏÂÒ»¸ö×Ö·û´®ËùÔÚ£»»òÕß°´ Shift-N ÏòÏà·´·½Ïò²éÕÒϸÃ×Ö·û´®ËùÔÚ¡£ - - 3. Èç¹û¹â±êµ±Ç°Î»ÖÃÊÇÀ¨ºÅ(¡¢)¡¢[¡¢]¡¢{¡¢}£¬°´ % ¿ÉÒÔ½«¹â±êÒƶ¯µ½Åä¶ÔµÄ - À¨ºÅÉÏ¡£ - - 4. ÔÚÒ»ÐÐÄÚÌ滻ͷһ¸ö×Ö·û´® old ΪеÄ×Ö·û´® new£¬ÇëÊäÈë :s/old/new - ÔÚÒ»ÐÐÄÚÌæ»»ËùÓеÄ×Ö·û´® old ΪеÄ×Ö·û´® new£¬ÇëÊäÈë :s/old/new/g - ÔÚÁ½ÐÐÄÚÌæ»»ËùÓеÄ×Ö·û´® old ΪеÄ×Ö·û´® new£¬ÇëÊäÈë :#,#s/old/new/g - ÔÚÎļþÄÚÌæ»»ËùÓеÄ×Ö·û´® old ΪеÄ×Ö·û´® new£¬ÇëÊäÈë :%s/old/new/g - ½øÐÐÈ«ÎÄÌ滻ʱѯÎÊÓû§È·ÈÏÿ¸öÌæ»»ÐèÌí¼Ó c Ñ¡ÏÇëÊäÈë :%s/old/new/gc - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÎå½²µÚÒ»½Ú¡ÃÔÚ VIM ÄÚÖ´ÐÐÍⲿÃüÁîµÄ·½·¨ - - - ** ÊäÈë :! È»ºó½ôËæÖøÊäÈëÒ»¸öÍⲿÃüÁî¿ÉÒÔÖ´ÐиÃÍⲿÃüÁî¡£** - - 1. °´ÏÂÎÒÃÇËùÊìϤµÄ : ÃüÁîÉèÖùâ±êµ½ÆÁÄ»µ×²¿¡£ÕâÑù¾Í¿ÉÒÔÈÃÄúÊäÈëÃüÁîÁË¡£ - - 2. ½Ó×ÅÊäÈë¸Ð̾ºÅ ! Õâ¸ö×Ö·û£¬ÕâÑù¾ÍÔÊÐíÄúÖ´ÐÐÍⲿµÄ shell ÃüÁîÁË¡£ - - 3. ÎÒÃÇÒÔ ls ÃüÁîΪÀý¡£ÊäÈë !ls <»Ø³µ> ¡£¸ÃÃüÁî¾Í»áÁоٳöÄúµ±Ç°Ä¿Â¼µÄ - ÄÚÈÝ£¬¾ÍÈçͬÄúÔÚÃüÁîÐÐÌáʾ·ûÏÂÊäÈë ls ÃüÁîµÄ½á¹ûÒ»Ñù¡£Èç¹û !ls ûÆð - ×÷Óã¬Äú¿ÉÒÔÊÔÊÔ :!dir ¿´¿´¡£ - ----> Ìáʾ¡Ã ËùÓеÄÍⲿÃüÁ¿ÉÒÔÒÔÕâÖÖ·½Ê½Ö´ÐС£ - ----> Ìáʾ¡Ã ËùÓÐµÄ : ÃüÁ±ØÐëÒÔ <»Ø³µ> ¸æÖÕ¡£ - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÎå½²µÚ¶þ½Ú¡Ã¹ØÓÚ±£´æÎļþµÄ¸ü¶àÐÅÏ¢ - - - ** Òª½«¶ÔÎļþµÄ¸Ä¶¯±£´æµ½ÎļþÖУ¬ÇëÊäÈë :w FILENAME ¡£** - - 1. ÊäÈë :!dir »òÕß :!ls »ñÖªµ±Ç°Ä¿Â¼µÄÄÚÈÝ¡£ÄúÓ¦µ±ÒÑÖªµÀ×îºó»¹µÃÇà - <»Ø³µ> °É¡£ - - 2. Ñ¡ÔñÒ»¸öÉÐδ´æÔÚÎļþÃû£¬±ÈÈç TEST ¡£ - - 3. ½Ó×ÅÊäÈë :w TEST (´Ë´¦ TEST ÊÇÄúËùÑ¡ÔñµÄÎļþÃû¡£) - - 4. ¸ÃÃüÁî»áÒÔ TEST ΪÎļþÃû±£´æÕû¸öÎļþ (VIM ½Ì³Ì)¡£ÎªÁËÈ·±£ÕýÈ·±£´æ£¬ - ÇëÔÙ´ÎÊäÈë :!dir ²é¿´ÄúµÄĿ¼ÁбíÄÚÈÝ¡£ - ----> Çë×¢Òâ¡ÃÈç¹ûÄúÍ˳ö VIM È»ºóÔÚÒÔÎļþÃû TEST Ϊ²ÎÊý½øÈ룬ÄÇô¸ÃÎļþÄÚ - ÈÝÓ¦¸ÃͬÄú±£´æʱµÄÎļþÄÚÈÝÊÇÍêÈ«Ò»ÑùµÄ¡£ - - 5. ÏÖÔÚÄú¿ÉÒÔͨ¹ýÊäÈë :!rm TEST À´É¾³ý TEST ÎļþÁË¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÎå½²µÚÈý½Ú¡ÃÒ»¸ö¾ßÓÐÑ¡ÔñÐԵı£´æÃüÁî - - - ** Òª±£´æÎļþµÄ²¿·ÖÄÚÈÝ£¬ÇëÊäÈë :#,# w FILENAME ** - - 1. ÔÙÀ´Ö´ÐÐÒ»´Î :!dir »òÕß :!ls »ñÖªµ±Ç°Ä¿Â¼µÄÄÚÈÝ£¬È»ºóÑ¡ÔñÒ»¸öºÏÊ浀 - ²»ÖØÃûµÄÎļþÃû£¬±ÈÈç TEST ¡£ - - 2. ½Ó׎«¹â±êÒƶ¯ÖÁ±¾Ò³µÄ×¶Ë£¬È»ºó°´ CTRL-g ÕÒµ½¸ÃÐеÄÐкš£±ðÍüÁË - ÐкÅŶ¡£ - - 3. ½Ó×Űѹâ±êÒƶ¯ÖÁ±¾Ò³µÄ×îµ×¶Ë£¬ÔÙ°´Ò»´Î CTRL-g ¡£Ò²±ðÍüÁËÕâ¸öÐкÃŶ¡£ - - 4. ΪÁËÖ»±£´æÎÄÕµÄij¸ö²¿·Ö£¬ÇëÊäÈë :#,# w TEST ¡£ÕâÀïµÄ #,# ¾ÍÊÇÉÏÃæ - ÒªÇóÄú¼ÇסµÄÐкÅ(¶¥¶ËÐкÅ,µ×¶ËÐкÅ)£¬¶ø TEST ¾ÍÊÇÑ¡¶¨µÄÎļþÃû¡£ - - 5. ×îºó£¬Óà :!dir È·ÈÏÎļþÊÇ·ñÕýÈ·±£´æ¡£µ«ÊÇÕâ´ÎÏȱðɾ³ýµô¡£ - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÎå½²µÚËĽڡÃÌáÈ¡ºÍºÏ²¢Îļþ - - - ** ÒªÏòµ±Ç°ÎļþÖвåÈëÁíÍâµÄÎļþµÄÄÚÈÝ£¬ÇëÊäÈë :r FILENAME ** - - 1. Çë¼üÈë :!dir È·ÈÏÄúÇ°Ãæ´´½¨µÄ TEST Îļþ»¹ÔÚ¡£ - - 2. È»ºó½«¹â±êÒƶ¯ÖÁµ±Ç°Ò³ÃæµÄ¶¥¶Ë¡£ - -ÌرðÌáʾ¡Ã Ö´Ðв½Öè3Ö®ºóÄú½«¿´µ½µÚÎå½²µÚÈý½Ú£¬Çë½ìʱÔÙÍùÏÂÒƶ¯»Øµ½ÕâÀïÀ´¡£ - - 3. ½Ó×Åͨ¹ý :r TEST ½«Ç°Ãæ´´½¨µÄÃûΪ TEST µÄÎļþÌáÈ¡½øÀ´¡£ - -ÌرðÌáʾ¡ÃÄúËùÌáÈ¡½øÀ´µÄÎļþ½«´Ó¹â±êËùÔÚλÖô¦¿ªÊ¼ÖÃÈë¡£ - - 4. ΪÁËÈ·ÈÏÎļþÒѾ­ÌáÈ¡³É¹¦£¬Òƶ¯¹â±ê»Øµ½Ô­À´µÄλÖþͿÉÒÔ×¢ÒâÓÐÁ½·ÝµÚ - Îå½²µÚÈý½Ú£¬Ò»·ÝÊÇÔ­±¾£¬ÁíÍâÒ»·ÝÊÇÀ´×ÔÎļþµÄ¸±±¾¡£ - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÎ彲С½á - - - 1. :!command ÓÃÓÚÖ´ÐÐÒ»¸öÍⲿÃüÁî command¡£ - - Ç뿴һЩʵ¼ÊÀý×Ó¡Ã - :!dir - ÓÃÓÚÏÔʾµ±Ç°Ä¿Â¼µÄÄÚÈÝ¡£ - :!rm FILENAME - ÓÃÓÚɾ³ýÃûΪ FILENAME µÄÎļþ¡£ - - 2. :w FILENAME ¿É½«µ±Ç° VIM ÖÐÕýÔڱ༭µÄÎļþ±£´æµ½ÃûΪ FILENAME µÄÎÄ - ¼þÖС£ - - 3. :#,#w FILENAME ¿É½«µ±Ç°±à¼­ÎļþµÚ # ÐÐÖÁµÚ # ÐеÄÄÚÈݱ£´æµ½Îļþ - FILENAME ÖС£ - - 4. :r FILENAME ¿ÉÌáÈ¡´ÅÅÌÎļþ FILENAME ²¢½«Æä²åÈëµ½µ±Ç°ÎļþµÄ¹â±êλÖà - ºóÃæ¡£ - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÁù½²µÚÒ»½Ú¡Ã´ò¿ªÀàÃüÁî - - - ** ÊäÈë o ½«ÔÚ¹â±êµÄÏ·½´ò¿ªÐµÄÒ»Ðв¢½øÈë²åÈëģʽ¡£** - - 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐС£ - - 2. ½Ó×ÅÊäÈëСдµÄ o ÔÚ¹â±ê *Ï·½* ´ò¿ªÐµÄÒ»Ðв¢½øÈë²åÈëģʽ¡£ - - 3. È»ºó¸´ÖƱê¼ÇÓÐ ---> µÄÐв¢°´ ¼üÍ˳ö²åÈëģʽ¶ø½øÈëÕý³£Ä£Ê½¡£ - ----> After typing o the cursor is placed on the open line in Insert mode. - - 4. ΪÁËÔÚ¹â±ê *ÉÏ·½* ´ò¿ªÐµÄÒ»ÐУ¬Ö»ÐèÒªÊäÈë´óдµÄ O ¶ø²»ÊÇСдµÄ o - ¾Í¿ÉÒÔÁË¡£ÇëÔÚÏÂÐвâÊÔһϰɡ£µ±¹â±ê´¦ÔÚÔÚ¸ÃÐÐÉÏʱ£¬°´ Shift-O¿ÉÒÔ - ÔÚ¸ÃÐÐÉÏ·½Ð¿ªÒ»ÐС£ - -Open up a line above this by typing Shift-O while the cursor is on this line. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÁù½²µÚ¶þ½Ú¡Ã¹â±êºó²åÈëÀàÃüÁî - - - ** ÊäÈë a ½«¿ÉÔÚ¹â±êÖ®ºó²åÈëÎı¾¡£ ** - - 1. ÇëÔÚÕý³£Ä£Ê½ÏÂͨ¹ýÊäÈë $ ½«¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐÐ - µÄĩβ¡£ - - 2. ½Ó×ÅÊäÈëСдµÄ a Ôò¿ÉÔÚ¹â±êÖ®ºó²åÈëÎı¾ÁË¡£´óдµÄ A Ôò¿ÉÒÔÖ±½ÓÔÚÐÐ - Ä©²åÈëÎı¾¡£ - -Ìáʾ¡ÃÊäÈë´óд A µÄ²Ù×÷·½·¨¿ÉÒÔÔÚÐÐÄ©²åÈëÎı¾£¬±ÜÃâÁËÊäÈë i£¬¹â±ê¶¨Î»µ½ - ×îºóÒ»¸ö×Ö·û£¬ÊäÈëµÄÎı¾£¬ »Ø¸´Õý³£Ä£Ê½£¬¼ýÍ·ÓÒ¼üÒƶ¯¹â±êÒÔ¼° - x ɾ³ýµ±Ç°¹â±êËùÔÚλÖÃ×Ö·ûµÈµÈÖî¶à·±ÔӵIJÙ×÷¡£ - - 3. ²Ù×÷Ö®ºóµÚÒ»ÐоͿÉÒÔ²¹³äÍêÕûÁË¡£Çë×¢Òâ¹â±êºó²åÈëÎı¾Óë²åÈëģʽÊÇ»ù - ±¾ÍêÈ«Ò»Öµģ¬Ö»ÊÇÎı¾²åÈëµÄλÖö¨Î»ÉÔÓв»Í¬°ÕÁË¡£ - ----> This line will allow you to practice ----> This line will allow you to practice appending text to the end of a line. - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÁù½²µÚÈý½Ú¡ÃÁíÍâÒ»¸öÖû»ÀàÃüÁîµÄ°æ±¾ - - - ** ÊäÈë´óдµÄ R ¿ÉÁ¬ÐøÌæ»»¶à¸ö×Ö·û¡£** - - 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐС£ - - 2. Òƶ¯¹â±êµ½µÚÒ»ÐÐÖв»Í¬ÓÚ±êÓÐ ---> µÄµÚ¶þÐеĵÚÒ»¸öµ¥´ÊµÄ¿ªÊ¼£¬¼´µ¥ - ´Ê last ´¦¡£ - - 3. È»ºóÊäÈë´óдµÄ R ¿ªÊ¼°ÑµÚÒ»ÐÐÖеIJ»Í¬ÓÚµÚ¶þÐеÄÊ£Óà×Ö·ûÖðÒ»ÊäÈ룬¾Í - ¿ÉÒÔÈ«²¿Ìæ»»µôÔ­ÓеÄ×Ö·û¶øʹµÃµÚÒ»ÐÐÍêÈ«À×ͬµÚ¶þÐÐÁË¡£ - ----> To make the first line the same as the last on this page use the keys. ----> To make the first line the same as the second, type R and the new text. - - 4. Çë×¢Òâ¡ÃÈç¹ûÄú°´ Í˳öÖû»Ä£Ê½»Ø¸´Õý³£Ä£Ê½£¬ÉÐδÌæ»»µÄÎı¾½«ÈÔ - È»±£³ÖÔ­×´¡£ - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÁù½²µÚËĽڡÃÉèÖÃÀàÃüÁîµÄÑ¡Ïî - - - ** ÉèÖÿÉʹ²éÕÒ»òÕßÌæ»»¿ÉºöÂÔ´óСдµÄÑ¡Ïî ** - - - 1. Òª²éÕÒµ¥´Ê ignore ¿ÉÔÚÕý³£Ä£Ê½ÏÂÊäÈë /ignore ¡£ÒªÖظ´²éÕҸôʣ¬¿ÉÒÔ - Öظ´°´ n ¼ü¡£ - - 2. È»ºóÉèÖà ic Ñ¡Ïî(ic¾ÍÊÇÓ¢ÎĺöÂÔ´óСдIgnore CaseµÄÊ××ÖĸËõд´Ê)£¬¼´ - ÊäÈë¡Ã - :set ic - - 3. ÏÖÔÚ¿ÉÒÔͨ¹ý¼üÈë n ¼üÔٴβéÕÒµ¥´Ê ignore¡£Öظ´²éÕÒ¿ÉÒÔÖظ´¼üÈë n ¼ü¡£ - - 4. È»ºóÉèÖà hlsearch ºÍ incsearch ÕâÁ½¸öÑ¡ÏÊäÈëÒÔÏÂÄÚÈÝ¡Ã - :set hls is - - 5. ÏÖÔÚ¿ÉÒÔÔÙ´ÎÊäÈë²éÕÒÃüÁ¿´¿´»áÓÐʲôЧ¹û¡Ã - /ignore - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÁù½²Ð¡½á - - - 1. ÊäÈëСдµÄ o ¿ÉÒÔÔÚ¹â±êÏ·½´ò¿ªÐµÄÒ»Ðв¢½«¹â±êÖÃÓÚпªµÄÐÐÊ×£¬½øÈë - ²åÈëģʽ¡£ - ÊäÈë´óдµÄ O ¿ÉÒÔÔÚ¹â±êÉÏ·½´ò¿ªÐµÄÒ»Ðв¢½«¹â±êÖÃÓÚпªµÄÐÐÊ×£¬½øÈë - ²åÈëģʽ¡£ - - 2. ÊäÈëСдµÄ a ¿ÉÒÔÔÚ¹â±êËùÔÚλÖÃÖ®ºó²åÈëÎı¾¡£ - ÊäÈë´óдµÄ A ¿ÉÒÔÔÚ¹â±êËùÔÚÐеÄÐÐÄ©Ö®ºó²åÈëÎı¾¡£ - - 3. ÊäÈë´óдµÄ R ½«½øÈëÌ滻ģʽ£¬Ö±ÖÁ°´ ¼üÍ˳öÌ滻ģʽ¶ø½øÈëÕý³£ - ģʽ¡£ - - 4. ÊäÈë :set xxx ¿ÉÒÔÉèÖà xxx Ñ¡Ïî¡£ - - - - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚÆß½²¡ÃÔÚÏß°ïÖúÃüÁî - - ** ʹÓÃÔÚÏß°ïÖúϵͳ ** - - Vim ÓµÓÐÒ»¸öϸÖÂÈ«ÃæµÄÔÚÏß°ïÖúϵͳ¡£ÒªÆô¶¯¸Ã°ïÖúϵͳ£¬ÇëÑ¡ÔñÈçÏÂÈýÖÖ·½ - ·¨Ö®Ò»¡Ã - - °´Ï ¼ü (Èç¹û¼üÅÌÉÏÓеĻ°) - - °´Ï ¼ü (Èç¹û¼üÅÌÉÏÓеĻ°) - - ÊäÈë :help <»Ø³µ> - - ÊäÈë :q <»Ø³µ> ¿ÉÒԹرհïÖú´°¿Ú¡£ - - Ìṩһ¸öÕýÈ·µÄ²ÎÊý¸ø":help"ÃüÁÄú¿ÉÒÔÕÒµ½¹ØÓÚ¸ÃÖ÷ÌâµÄ°ïÖú¡£ÇëÊÔÑéÒÔ - ϲÎÊý(¿É±ðÍüÁË°´»Ø³µ¼üŶ¡£:)¡Ã - - :help w <»Ø³µ> - :help c_ - :help insert-index <»Ø³µ> - :help user-manual <»Ø³µ> - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - µÚ°Ë½²¡Ã´´½¨Ò»¸öÆô¶¯½Å±¾ - - ** ÆôÓÃvimµÄ¹¦ÄÜ ** - - VimµÄ¹¦ÄÜÌØÐÔÒª±Èvi¶àµÃ¶à£¬µ«´ó²¿·Ö¹¦Äܶ¼Ã»ÓÐȱʡ¼¤»î¡£ÎªÁËÆô¶¯¸ü¶àµÄ - ¹¦ÄÜ£¬ÄúµÃ´´½¨Ò»¸övimrcÎļþ¡£ - - 1. ¿ªÊ¼±à¼­vimrcÎļþ£¬ÕâÈ¡¾öÓÚÄúËùʹÓõIJÙ×÷ϵͳ¡Ã - - :edit ~/.vimrc ÕâÊÇUnixϵͳËùʹÓõÄÃüÁî - :edit $VIM/_vimrc ÕâÊÇWindowsϵͳËùʹÓõÄÃüÁî - - 2. ½Ó×ŵ¼Èëvimrc·¶ÀýÎļþ¡Ã - - :read $VIMRUNTIME/vimrc_example.vim - - 3. ±£´æÎļþ£¬ÃüÁîΪ¡Ã - - :write - - ÔÚÏ´ÎÄúÆô¶¯vimµÄʱºò£¬±à¼­Æ÷¾Í»áÓÐÁËÓï·¨¸ßÁÁµÄ¹¦ÄÜ¡£Äú¿ÉÒÔ¼ÌÐø°ÑÄúϲ - »¶µÄÆäËü¹¦ÄÜÉèÖÃÌí¼Óµ½Õâ¸övimrcÎļþÖС£ - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - vim ½Ì³Ìµ½´Ë½áÊø¡£±¾½Ì³ÌÖ»ÊÇΪÁ˼òÃ÷µØ½éÉÜÒ»ÏÂvim±à¼­Æ÷£¬µ«ÒÑ×ãÒÔÈÃÄú - ºÜÈÝÒ×ѧ»áʹÓñ¾±à¼­Æ÷ÁË¡£ÎãÓ¹ÖÊÒÉ£¬vim»¹ÓкܶàºÜ¶àµÄÃüÁ±¾½Ì³ÌËù½é - ÉܵĻ¹²îµÃÔ¶ÖøÄØ¡£ËùÒÔÄúÒª¾«Í¨µÄ»°£¬»¹Íû¼ÌÐøŬÁ¦Å¶¡£ÏÂÒ»²½Äú¿ÉÒÔÔĶÁ - vimÊֲᣬʹÓõÄÃüÁîÊÇ¡Ã - :help user-manual - - ΪÁ˸ü½øÒ»²½µÄ²Î¿¼ºÍѧϰ£¬ÒÔÏÂÕâ±¾ÊéÖµµÃÍƼö¡Ã - - Vim - Vi Improved - ×÷Õß¡ÃSteve Oualline - ³ö°æÉç¡ÃNew Riders - - ÕâÊǵÚÒ»±¾ÍêÈ«½²½âvimµÄÊé¼®¡£¶ÔÓÚ³õѧÕßÌرðÓÐÓá£ÆäÖл¹°üº¬ÓдóÁ¿ÊµÀý - ºÍͼʾ¡£ÓûÖªÏêÇ飬Çë·ÃÎÊ http://iccf-holland.org/click5.html - - ÒÔÏÂÕâ±¾Êé±È½ÏÀÏÁ˶øÇÒÄÚÈÝÖ÷ÒªÊÇvi¶ø²»ÊÇvim£¬µ«ÊÇÒ²ÖµµÃÍƼö¡Ã - - Learning the Vi Editor - ×÷Õß¡ÃLinda Lamb - ³ö°æÉç¡ÃO'Reilly & Associates Inc. - - ÕâÊÇÒ»±¾²»´íµÄÊ飬ͨ¹ýËüÄú¼¸ºõÄܹ»Á˽⵽ȫ²¿viÄܹ»×öµ½µÄÊÂÇé¡£´ËÊéµÄµÚ - Áù¸ö°æ±¾Ò²°üº¬ÁËһЩ¹ØÓÚvimµÄÐÅÏ¢¡£ - - ±¾½Ì³ÌÊÇÓÉÀ´×ÔCalorado School of MineseµÄMichael C. Pierce¡¢Robert K. - Ware Ëù±àдµÄ£¬ÆäÖÐÀ´×ÔColorado State UniversityµÄCharles SmithÌṩÁË - ºÜ¶à´´Òâ¡£±àÕßͨÐŵØÖ·ÊÇ¡Ã - - bware@mines.colorado.edu - - ±¾½Ì³ÌÒÑÓÉBram MoolenaarרΪvim½øÐÐÐÞ¶©¡£ - - - - ÒëÖÆÕ߸½ÑÔ¡Ã - =========== - ¼òÌåÖÐÎĽ̷̳­Òë°æÖ®ÒëÖÆÕßΪÁº²ýÌ© £¬»¹ÓÐ - ÁíÍâÒ»¸öÁªÏµµØÖ·¡Ãlinuxrat@gnuchina.org¡£ - - ·±ÌåÖÐÎĽ̳ÌÊÇ´Ó¼òÌåÖÐÎĽ̷̳­Òë°æʹÓà Debian GNU/Linux ÖÐÎÄÏîĿС - ×éµÄÓÚ¹ã»ÔÏÈÉú±àдµÄÖÐÎĺº×ÖתÂëÆ÷ autoconvert ת»»¶ø³ÉµÄ£¬²¢¶Ôת - »»µÄ½á¹û×öÁËһЩϸ½ÚµÄ¸Ä¶¯¡£ - - ±ä¸ü¼Ç¼¡Ã - ========= - 2002Äê08ÔÂ30ÈÕ Áº²ýÌ© - ¸Ðл RMS@SMTH µÄÖ¸Õý£¬½«¶à´¦´íÎóÐÞÕý¡£ - - 2002Äê04ÔÂ22ÈÕ Áº²ýÌ© - ¸Ðл xuandong@sh163.net µÄÖ¸Õý£¬½«Á½´¦´í±ð×ÖÐÞÕý¡£ - - 2002Äê03ÔÂ18ÈÕ Áº²ýÌ© - ¸ù¾ÝBram MolenaarÏÈÉúÔÚ2002Äê03ÔÂ16ÈÕµÄÀ´ÐÅÒªÇ󣬽«vimtutor1.4ÖÐÒë - °æÉý¼¶µ½vimtutor1.5¡£ - - 2001Äê11ÔÂ15ÈÕ Áº²ýÌ© - ½«vimtutor1.4ÖÐÒë°æÌá½»¸øBram MolenaarºÍSven Guckes¡£ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/vim.exe b/share/vim/vim73/vim.exe deleted file mode 100644 index 41943d45d757390b968641bed818da07ec63593a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 1855488 zcwX$idw5jU^*?+jncOFw0Eq+|G|H$!!6u5zNYFq6MvNLIYLsZPRZ45D5zb)L5P~y< zIXO&B6)&x}1+~^HwtSINK#_z%0$wVjLKG3SigOr{$R&h8GVl7Vz0b@9(f0NIKJWAU zyCS}e{sieesiyu{qwuBXSsiq{j1+(7hN|s`<{F6yz7G0)MTe@ zqjZv@l-S~xPxGHIvD)3OsIe)wn6Zj;C}n0T%1hMOAj(Lie+5Goh7Qj$0&bfke)+Fp zI47=mXYsfcC0mrme`%sfniBmtT>0`$`pF%xypW{)|Mqu*c2~7VzXcB#_Rfe5huHb^7&z_Cv z<`?O|(k$gve|2c@SE4<}4dF;Ri+-H_%NHoQ)bH$Bzo2Kv9pO+(rr*imEvNk7zyBlu zZq&c>?90?|>oz7O=IzkkCk!R8%TUJumPq9O!ts9knKkWAa9F$DnMgl*TlF%hJ>WfK zsN(6iX%G6EwE;3KwB_{>{plSBHFI0HzVEj6c4hn`YC>Co|CI5M<6%Yr+@|qycsp%8 zQBJdaBQ*pb$m`NI>LXkB@oVbiWtkP)68!!6C#i7oec9_O0H+sG`OedaD!wk&JBNS> zwC>JS%u0HqVku~|najL$x@a@k*Q|PPh-8Phm{*7tdRfhFmQeX;sl0i1q+F!8hmn&) zIsTPEr2ma`B|fKm_BpAvl2)JuzUs(SJp1f{i+5!zfm{NqeNs1{kyyR|d80E#a` zmQj$a+ns?!!-vYUo}Okc=j1Y_DDxhb38pqh{{>#-dgw_{3tamdf&XP^;2io5=*U4E ziAyZ_mN4Md(!hmDiryNyor>sL&Oq1pOhuq2s>?JKtO$c;77*^5nEnz81;A@4qlhvB ztNJLzzv7%QeIh?5lK*sczLC0&-sxZ67W&+;orAPyr7<2s-+_Aw|3>N-8kKLemWSEN zzEug_OkmzXm_4hVpiHGVfN;uoOj#nmPNH(C656u4mGxq9FWTGOO6}f!(^MnVNWN%z z0b$^x)FR;Fv-x`nMy2JOG<{dgflOn}KNgo&D6wPKE~Z>{W#}S$D#z1tysM~C^1i)j zcrj}JD^l~lQ`GDY*F0v`JakcN$&c={^hftu_M`hO|IvL`{OCTX|L8vN{Ly{R{Ly_@ z{^&ldesrJOkM6VjNB3FtBl|QiuA{uX&-AzF|C{RuWv^L(;JR7iUbDizW{J9=U6krY zuZjAF({BG+tACDiBQdaNU%FA`90g54z$nJW*;K|D??f*$)DEC055dWGV@$>!-P zP`&jKXWMcg<#$)wJl*uJ0q@%LOrz47TVFC{&W&1g6B0gEQoZk&Cs`9 z7+W8k`$(j7?N+_L&=s6rA;*7kUE;4jE?YjWL5Hi+JK0Cu554T$Uwfv0z|&h$b5`DF{a>CvSLmC5 zceJ;`J~)@BXM*d!d4XFQ`!kx>p}Qlw<1C_niuFpG@fxR{Cb<9#wfCdJWEyi@|st(>A36Q-;Tb2mHuwa{xfXvzTfNVRaEa8r21 zuDC_f8}mW1eZ}rZ%1c+oRA%DWuQ}8GG&TA`y(94IQD%zF=P}9jkp4Vd6v%qa$||<9 zO02B=t*lZjtIW!(u(HantO_e@f|WJh%DU6aI>*YIX=PPfSt(Xlm6fGgS)E-ntJ=z{ zv9dn0vg)iX$l<*GVe}s$EOW_MM9D0FdIGU^rtWwG6Go5e^!Ngh*c?L>pEW*2)oS0F z;$Vp^o>brLazGL+t1*oa$_lA>6d7JUZZ*)mvxu%Bv!8dJ z4{{$`4Kl&I`32(oB}HGDTGj)z*jpS*%RdC&Ms@6iBh(_j$Vi@ z-yKLURI@vS22s@yp{2G*o2YvufcS`UEf(hVhR{`Y1MroOEt2Q25 zOCKmYyeQIP8g&@Y{SArqHxMR)o+hwD{RRn1qU$fIZE{eJ>%XsiM{o$iD*8_q{TGzc zv#pgz0k{)++;vY6R8TxAm}wL^D1V?U&3%NGb7`VcU~h#EK4tkdQ9g;wQ^EgOuGCI2 zD54zvrxGV@k95)-nTF=fT9QeCTlKVy=7YQDxd#U)xIU=K^rsKeOYNeiOrzB9dcQW{ z`e5!i{`AwV_wInS?OdPK#z(!^0x17hO~CcZyntRT3kQSmLuZvabGctv(=vymXcy}I zODMenj7F^CkTN?_{&I{?`lEq4xd~t?!qI;yjh{fVEKR~FhX$WZgC9e<8cRUryS8Xf zn1nD5QU7)5whGdfWEy6_n@sg`rZMdmIrAxh>?+E~J2RFtr7bsqUw#bt*3yp+eS4Gf z5`nou>cM2iSm-RJa=y)~HkGDG91##aQIG_3DhNi*O`%?&PPwv9KIdy#d2gc*@L<7f_z<=`@YkO zwB~OBwpcVV%UF3w`$D1M7s5NZn0cv7yRymnqXhh70Fa{y0DgXGpkgeLlpY@(3j5P2 zcVJXRWr{8HD83-lWGH6YYAs6Dl!q2K8m|dtVoHsQZI3kols->VpH7K=&dC+exye zyyjp>lNhH)9spsT@SSb^UJf)9VX|^hcdT{+@z4yw#ArPRk&a==>DxNYj?qscd4zmz zw`(@>dGK?90I?;DZ9kohjSz)ir$X9J(ct0Wt5)3?xGvQYJy4$lz6xhHw9~vd(;yn| zHZqhQ6+qcYBX#k15*in8=^z$crv(Q94uY}Zg(NvY-!iSs3hwu)P4&z$-)h8~G#PzKWHAqC;@;sNY;GVBcz*MJ zJ0!#Nu)Z-2mWG?PFVTmx7I<)X7=wkx2e4BE1 zfgXPiVI$2Z#GwOL4smiKnjreHB;z-=DT?9QXJavxW_SYPi6vn+LC@rDXL1gl7MG&1 z7eV~DcdT7P?VAGkp~hM2*^m#OHdDqscud1V8s?Y8)H0_PNU-qUn>bW4Z>6fzM$}vN zZS2R)tR@pFDLCD@NAc~~ZgII2i7qE$aNdm=+>MH!W=sNE#2Yu-N!9p5WMABviNNeK z1vqn;_(JZRjKXStlA_;T-9CwR0ab|AXWGL?5do5K<5+W6VE6Sj?Hhf~q#Lrdow_@b z8cE<#G|81~90vTUNomy4%l=7lg6#eU*{Dl%aob>3QQus!1uX9aZTNjT0*ChbZEr|v zRedNyX`hsd2F*KZ%mlw)SZ$6)92PCwoeajAnW|NtT5jK&04qGpJdcX8&&*O{N_v>T zCuUMPR-%EGjOHxThXS7^(jd)7ORr8KY28{kmZ&8*7p;Sv<+3e{KX#h6h9O3{zcdsj?MpnZegSD&uTt4at zC~@PuQPG+1*Zfms8wz7Rf&BcKISm9_e$Z%`8e7+MnRedzb?D&HKiJUCTOKplb1Z32 zx_IkdMsMqSE?0fOA+Q@_z0K}qv);yhL-6Ha<~{}%IWpY=q&q<;u~g5unfN!vtGCjRtuGkoSImh5O682W?a*8B(K!&>U6Ly=~cLdHdI01~l0vn$)Lg z-qgoh#*!zdWv#m+8imn$?rf@G1WL$8E+L@orw#;NFn4P)nzk4PbLT_+oJN^XT$RpI zfx+Q%`Eo++!Q?y-q)^RKdIk^!q@d&km!-B!1kcp<`a-pNyf7C`fX#cf<_vwW-Wl+a z+euP6CNDHubdc#fH1~6=aEWWz+za)Nk=?G2n$vw{z2}fsVk$a06HS zcFfzc1icnNkN-Uz9E?^{b_c{bD#^sE6I5AbEOL7BSmrFFxAo%f7$YOAgBf6~a8c@@ z3XC)ola05;kpSNPha@FB2bGvUJ}6;MDgh_`G>+$WtgpE?RcJ#haKjCm&D3c7M7E5bp3<#8XQEz__@yub{dAW)sC? zxR`dXSeS%-UV3*X8_5`5=cXY{O~s(5%Ro(3<PN0<&akn zBVw(>(k~bMSGJjlnq(P2xmL!s(oDrXo%o6d0JEytRpBhCJ)PPsfzWBQr`c$l1{fJ2 z0HV8cDpz4V3E&vcaSW&GJqt}xdw=s1b2icr-$O+fB=bW_Em&k!zG{zAal$$H1{<`Vj*n+ z^Q332P4!+)LYD}yh~z^fV`l(KgT~iTvFZ^aZm^GoMOxmD`F)E!L1B9^5rh@B@f(F1 zr=%`Fliu$}O2iv}53<(IW5VP)KSTH&G|w5Xr;+LYmPH(amU?HV(iDiDFa!XOC9!k5 zWwylcA)EYVpa*I_YP1nk+`cVP6?&HA*6dbTEDwp z5V|XdL9M{MLmS0A2fYiWHjC0Fx{x)V4V7%*op+H#@sO!T8v9Q)E9R4ZY@hVnRNr+% zNSDHWJ+6e?7>}Xrf5PZaB9R&*kp%R7&+;^e_j()i$|&L>#qSW5d~MqI2U`Z4MK)nW zgKt#tC71%@olfQ*siYC-fOaE~wx3O`L_!A9M)7a2vSZw(s6Uqm7p5E*aptc>C2KE6Gg4yJaUb@h&rrGJ3ZtE+rhp!TTw)te4BWKg7Fh_Bga0L%AamrPSRyEu+Iu5mJRua z#lpi&7OQIP*HVd9x1_NPss)T#q~9RBP9LXVE=wW)5F1=!+4))FV20)#YusC;SCZ(U z8C-r)QLZ`v-V)nJBf&_VaQ>q&VY)Zh-UIctgr4X37EDx?dE@;>uPT0foj>1)0r|^P z6}?-3|93}^5p7lqKd=JW(S+4CU=1Q-S#ll9Uy`bQ&d{;1i~6W4O=jFE5Y0a-iP zJfn#mxEz}LvalO`EwwWi)`?EDDBCgLq7lx3KUNwp7u<$)c_iJ|B;st92}FcTopt!} zIv3JU-Pp5L?^{Ui*Oxd; z{VSY3@d|L6@Aoy%Xs4rrWMI)oR5%GET2 zE6miFRp3e5%T3cMF+q+wMD6Lj%wNaAhHZ;gs1T^hRp!(*2br51;=#G2$RQFl4`#TA zJt->rbOJ|g8~;S(9_Qtx+V~hHNKF=#D0>C~i>Z^eq<7|Zf%1~k#3v)yyF?@EqyHc* zEO~l?&x5gWK1?!L zA(U@Yu#63BESO{@d)BA9KE6M$z|}VIU|a0v)VZX_wn7`whc;PX*uTgx81f6RrlR4}m#Jsd>eh?hQi zSa%r@cIyw=JuTe#LF(JaeNW)Nc?ToaiIFHEN~%Fu9kF0lL%h_Fn**?B*^jx+JD>?8 z6$#W+(06>8z6AjXm$t>89jSGaJi=eFA*#_bf`&}BS#YiiGC*f6TnL6DFVT@3*}&K#wzfttHwD~ZTu`QibDd4VWELP zVydMqko29T6lY2ZZJmJe=mUx}vNigZU>aMSYgg?@#Fs1-sFofyL?bjkJk*$cn*MUZ zFev1==YeNwoQY5(6CfIfA0~6IV`Qhl+D6dNEMOm348!o+IS@!G7rj;e!-+zQ36D#e zz|JSZbpErV_h+3i;OCR0TRmUIx(?2X(GOyNj-5s?y9sBbW;8WaI7{m@3nu8TBagd2 znAJ%WHOjS3^}epK$5M4Zjo|8$A5c>mLQ61)o}m0&{*9+a^rSsVX!^E+6jJ@$^*hyn zeoVt+^|L24kwX4}MC|cIbHy!RfJvK-G}|XS34qx#dZMQ}&DH7NZ$5nj+p{>_L}CsM zhKQ3CZ6iBun_OPzH+8``$Aw4f>rxxPpl8n;ECOOx?Q( zaZvsn&_J$l=LOA|#bz>Q)fJL@;{~g77%z%d%|0sYkBIAeZl;k+gz*Q(v4~`4Y$K)V zd%K(9sc}{&sgF*GiAaN!y0C}4fcDgzD!!}Wbm|lgN_J!A_p}lhZbe^piWaT}*i&M{ zwnB`w0U-9s2JoFY8mZD?gEau$oBOeiMc8GeJ3|?ViS=lL@9rWiU)X1(sR45urR%C~ zXR5wYU975`P@zmNKhhs|qY$>{H^u^68r+mrDrxo}358&`2|w;mG93dGhB;VB^r%db z3{Z0YLZ(drM4MD~9&<$9v2t}m9^o}_Gb|P9u2rEsi6i}4JLbOK%MuKKkm9RSsl|a_ z;?TdPvWhMjLbVDJi=BA2N$1#pQQ%Bc#`=0*VklA@pGqTkkhYG0KY^#WQ>p5(@CuHN z60VmMVT^1i+?89n6S_WDielFrqM=9so*I^n?sc*Ob!A$CEC)aBx!<6z;5*hZ&E@2? zsf}L|Jd)hwRqy+R2_no76;M5sd)f@*E#fFo4`r{25!Aka99Y!b7|XUeP-%|rH}}#4 zeB_+2euVzyECtp!V1~9WO^l*-GY+#}2eJdU)cV&3un{&>^}pNA+PVIs*sx^QKOQM! z#|W6TpHJ$+)`L+teM7>yNALFMk8>TJmF&MMH1ZRDi$8xb4W`mX1FAjCFHD%0&&jq( z0oOy%XPrKy$!7Dkkp1F53WIJM^(hf4<*vl#6!!u1@@`Pv=8)5W0xJpQ8S^34JD(7n zx8Jg`;+SO4SiQNN2>~^>huw^BhG=Ja4a-5^<}7 zsUWg~DNUY08fD%B`8zg_Y|!d%U#NPoSqi}#rjn(HcwQjQNmHR0e?@MH^cz#*^+#|P z=6oUI{WERm^L?ZPy0|k^#ylKJu&&-n&Qi{i=KRP{{AC%|Rx|xTcp@r!m4fD@C~)4s zOaNWv`e?S3IF~^alB|9boK(D+Br{xl@83IFsI<@f7mvo_)@n5N-9QISR#-T(BTbwz_piyY)j3(lqTdVAe@P43 zry1OY2tJPH2-qa$d49K0s1=$}zm$zd9N*x1J*S>ji-?#}Qs-9M<(ezC|Ja$lTcIfM z$C?-z14YmTJ4iRxxyaRvAAl{6(OQJX>@^TtL={c@98~Z!Ma#%*_H33+d6nnbM0LS+ zl(QU5dN?~3I!XUTOkts!g{GDT*knjT!#zc+H!m3v*YSo)l7PL4clZm_U2W z-(dZBlj_}`#FkVc+Fj_Jn80|QAdpe*7XgYkx75h<#VPD&QQ$#wJzzdIUowbyn>`Y)jV$1N1PtMMo`?Y}R^ zB`oZ@LnojrRk_N4z0D;Y_L@$ZM^YTODVMhu*v|Hs!k1wxyrH+gG)Ct7OKtKs6;jTZ zw!P-Wv4cuIYR4Fn4##1zc}~caksYzZAe1B#_{m?Am43UV{WU2eHWaEcGC7`yRPT}m zw!kZWJJkAhas8Ywm`>(^gJR{MsP?DNh-kM10pqpU2&0Gqh}a7QwZOYZT23}c%t~VQ zyRS*V)0nGZgZLFd2~&;8ewXAKC%+rzst0ZF%}AzJ=|xvTqK#O*NcD}gu`yGB5&d?> zrR%pSX>JEm=NlaVQrxk|q)dO2&4!-B{oK{dV-frr4M2&=K=Z1vHNk=*y2wZoCQgjz zWZ-&~GjRWB0~s%e$!Kp7Tur2jA1i|NAMG;po~|fOA$>!Hkj$6&heFl>2Ux>XeWx>! znFS|7iRIkoMaDIm@PwIJNuwh|$Q(pj5Pv^IQy&LXz0NYK;8|P7?WB6fr`1=07xu@)(gCxI z5)r9UVSytC@M#YZz_Y3(6|>1FOJ(63RPXInc=a1%A5(uAoQI=`P#}kwSBVIp3!IAh z`f*_`*sR=Kgs4qM=U!gSiYA`PJz-W~HGT*g{tRM1foL1L+4H$QuUW!)jk>7WZ!abO z>hpBRsSAe1o$Q1#v~v!LX;Mxi($9{`(JvJuq^vJIda}&35_v9KerPVT4uv62?qCDk z`#duQzdE{|gdS1TlFt2NwY2u%y!LO$cCzrx)%D>C(nzeMdMfh1Lv4RQ$Y}e^iEtQ+ zZHE!6_ftD;2klna4arRtVL0?5M7Ax;Oc>$*dgOX(s<(T`fZ^HUeRd36J95!<#YY*+ zQL>E2Am#$O8@8LJ2eQlb?F)sPEP|GTL`o3ggi4&-!|rw!iH8aF2o3L|Uubx5E*8bI z=|4X1G|E50R`-BS(MC}DYQ>#Y*E34>z8%m0R2@dG(W`9o6+vN}q80|s&q*8WLA?k1 zR7RZqg*MnpH71FGSZp_D6@yR~7NRrA@fydz(4C;oYBu3+5nZtZ?T!!T>D~ISi4DTh zuFpjAx%vK|*<6QaeHFZ@O&JYms`fm7GkXLVMj7{4((G#Zi6@v_cRWd5@U;RhJGxz3 zd{%y})tT!3Sm6kFrQ*J)5DXAJjf_awwmF0ACx&gq*g}1~x7oeN5JAD2wIj$FbhX`| z5*#+836Gt#2f`$5C?az+mSL$0SaW0ksheGg>bCe?!ZX_1a) zg|fT42SbGF1qwRmem@N^2!-d}znAJdgg<^)x`T~3b4oXh+wkzL@$$e_A8+Im_D66S zb;!X@F~q{~7`dx2_Z^jZY~c%4VtGNgWfVn2L$$YVYXp$X#!TJFzxDsOX%^W z$ zg`B?WBW{J~3q>4DVny0Dp$v!4r*$el-N|g$c<)5StUHw#h=ug|pTqF=%+dp4iC6z^ zisI>xK?OJFq!L&Nm!D7NS06f+^7xu8iPfE_%6WG`Gy-pVPM1cUc}W+JjhYilVXoeN zs!C5&rFI{yK=GRIN%0HKXZb(OgNwxSW0_D?HiJrYJ(d!pyt$DEp10X_ia;ONefP{$ z`c4y`J(YdXPtiRAH}AN4;%KC?t=B5EVZ^0JuNeWVLd-ty8)I#X_>@p`$?O=g(?n5$*9eq(iFwKl&EC& zrc=S592B-jX-RM?iIWqNHJ@nZ4Y7b%zGFnMxCTOqD?f{w{rjTk{9k1hg6ol zbe|aBxT$G;Vis$9`?5$CXA7qt+w%x-+F8a8CBCiNPb|={v!}p6fNR?<>&eq~S&=gf z8nq&~*lXwdy0p+F2LX>W64suw zw<&ErE)PPfgpVqtAPY9xUu;VFpw0TV$-Ml0>%WA(HUNimC_Uw0CmCz+f1F7k2&c-N zC0&KZ1*#XqbRE_NjaOif`u3~7+v(M61mBI>cI?u`>b>WoBHPfdo-YzS>+cvh98;ot ze{Qq(XfDGJETgd8)h70I>TNXH`PrC=*8#k3XtQVcjh^OgqtaQTS2~^KpJZc;JHdgS zSoyj*GMNT-2boemLdcZ;vDn!q!GG>48fRNLx$7=PS&O4JBRA>+!g~fX+Uyr*PcHT~ z*Cx*I`-Upl1}tc?jo!Gr8m8NMHp>&kalZ_G6V9uj9zy63dq*z!lFms;WUc*z;!$=gghPcR9-7M=9Q5jA*C*~HdYf^3CUMr>`7PWb`DFgdeCXiN=dxepNo*#oZ^D_2 zwz~Hrk>cb6t9^bOAD^HZvae52g4a{qmyig^Gp^0{ZPw19P7fG2CAzk2>3Vn2?%IMg zuzX%AxE*VmA9Lq!kN&RT$K9jJjX7X2(zo{kg56($RjVC>p!A2w*p%>&D1)PnL7X$h zEeqn1Wr;KMd(Wv}Vx3bR&HH_6+*u@deVg4edCeA&cs3+XGiMa1C{(tzEcgY%iGyH? z(^wWIia05sX{|cdnbx0*Gp+tx97e1@F+K3KgACtPr4#$xwbK}?_5wZ^FWS^wf*%-D z?P7*YGXo_l4n>yY-Sq7RPMcL&^!GX+i(TTk?zO-IaRG6Dkx|2osowv=>LR$-sG@^y@s2xuM^qIA)Slh0=D*&lssTJDXcDtW|MRgOV|d@A z5hhywHj#ej5SvK7W}nr_Mj`iDH&>AQFTz0}ZLHt( zr9%j<->e>>_&oucn$D@0Wa}5_JmZ@hsbwZ{ZIkiaEtK(EfibxF@ z?4Z;JS@KTK+ayyrajHPpE9O*{OkKvQ`hg-fic?K8bvmUC&qA5XjB_aMoWdW$A>ViZ z6Ls#C?d|2%KH2l9oO(m1{>7;fsdr@R1x{^|sV6!0p-k0t>S@{EgPeL+ zrYbqLSf+00)C)3I%Bh!RY9gnW$~06$<#_ zT{PMS*73xgKPNEwSybJaP1;`@XvFJ<)y7Sv?zFFhZ^`}E=p4;WCr{q&i}0!5x`w&= zQz;poU&nK~cVf`3z#VK4u?z?sI|bb)k@_mu;>B47NSHKN{(u@m!f~ zo{Gqd56mE4Y!X2_Fsd^?tdIwpdlbl8xrZL{Emy1i+oNshMH^rp%2j=k_D9>Wxm3IS z``gEkpTIi@BJB?_7ew0E=2F{70!zP+Lspe#x4tj&wRCLed?EJ{J}T?}EE?Nu-bzy1`5IQw9=rBaB3UVlc0QM(cz#j5t|=_( z^PPcxFOsdaoZw=UE%*vrD879Nx1^jsLe^)gybH6meK987Fk*_Umi>*LR>LG5MsNh!y$alc29Gv_4I;x53@Tsi15rueE7KEI{ZhpeLkEc)jJP%#>7lxN;(?$z7stfyHoE7oYhJg zC@dmlT^#KuFJ+LwG^9^0qDB&}L(ycC9yX?yV4ENIZws2$3ybu?(GJh<7+a@hu%FQz zKI@^aceQG%79IVA>FCa{n2uhe9;qXHF*RY4R28?ocpq<1;X}$Wr9KBpXhyHs$okkX1jQ%n($Y5iH4+w52nQTVtZnAT(a&6M45HzPlZ1dtq zMdVo0IlWS=GzE^Yk5^7rBvuwN*9YTC&ODDcgMa6<<9siVF`qqm27;WD#8uK#B6*^XCIkI)DB`2ckCr>*vp(u$}7s`AasX|M_#V!z*Z?(G+$5 z+t@)_dX`TV}fx$^^J3jrf8x+u<_d&|LgEmT7Pgni{xojcb9C!ag7Xv_TGbLSYZ zLyq@_`F!p?JACfkdm&b;2BO(dfLQD7c{a;}+aW{Q1`PXWMdE&eYHPg7a&$SQiK-IvSO7t97tv(1?H7MO#saqe$uI!pAaiBZ0+zEh9(8?i(Ys7&SaaHr{G^(s48 zDNWSN9b~YauTOGVmGk!F&Y8jUTF{TalPbI>dfHDt?F%lViUr}zZwBcP<0(=%*nnR7 zN*#IW&Wu+EDuF*=Bkm?ZWj>QF&WB-n#8~89q40XhGWscStyg`+zy=FB-N0v?_R&-R z2-Rn^SuxF*STZhhA_f6vyi{Q|>3t79?~R<%RxSOe#c|9AQ#tk#HrH#`GO^g5Tf(sg z*{OAM`=__loCoG_0GN`t4ctnBdk>D1Oxyo}8p1USHO?%%@E43XcrPDW2`ZV`DS2I< z-jM43o5F0JjcEHbR1vmvZy&vnVW8`AQ)$0`gc&`v+#F`P>>?Cpju7M>_9gHucbhWc z1oR(Yi)V@ltuIC>tX*FpbqAlnB)N~qm*aX%efZ88ZiSW6n-+6oAIGS*l8>?^3&1}g zjB(o3#&4202}*!m@;jrF_jN1FBAyHW}mT9``M#0LK{CLBkEUh6s`GVTcb7x2%Uy`56<9VVg*Sa`IpKzA1b*rROD9Ft(3=%j zL#hvxiqXAwgyf&F2*(LQiMt2C7cAKtz^aOB?XD0n*@a46Kw zwFwjH+UZuSmjNDn06;H8wkAWShnpo5>=mvn;|biv-ch)gIflWW~H#oHAw}S#~%@F?aA5sydfbT?B$~ znveH#&n#3MsRWan*?YpeTd0I&-*ltWc_$T`$(SU!k>prlXfo;SRuIus*s|J3q}Zo? zcjxH=xj2D3Af4oSr`QnKmT=aUToF(-uMjIU(_>|8c=^f-u{;BZ>(b^-C2-SFamxBJ z(4N?{ai@3pRdu&t{f-V1;fH4<)on9)??x70t z&TxQpW2E^s?N(rN?<}zaab8dm(!=39_{KZ?WBl1Q$x=#J zrO)rf!DY1(=U$CehH>ONoIxgs=>Ro=M#tbnhn7&B9%$)4V`Mw7nhojgT@$b;5tlw0 zqYJiIuyo%B>5+%2_x@7g`F3a20uV1y!B>ff24|qD;0#R2SuYMCC4SO2zuGzd$)hMG zq_>Rxc>b}S)Wy78BAfdVL+yyMG?2K5CD(WuJN=Buu*nZmqi5)M&2!=mb{b?UZYWCh zdw5wYyw}fNlZ@*;#$r%9AY1ejy|}p33p)n?vyDm6FMEwt5WgqKVY)P&%$vUD^##VK z-@ejsuk)w#iEw?(?~b}8?z|fW!Z=GvU4B3e^vR9M{a}8s6ELHmH^MTra7I*YQazj@NxY&e+Pqckl!7}G-lfgu})`q=7rlczu-F#=-u(i(gc>) zPUds7{si`~*`4VTSlYv-%o@?QF_KE$7fsCKHpf#C^!R@!D}jpZ9sQ-+RdTHtHpFD3 zI`hgkjLEnBjucm)R>k~U6Ln{1nIOb{575-_l;bOinenU2yJoacAa}uEoL~;_wZ?sI zG-Tg_=#`b!$kU7u%e1$aidRMTRfoRr6MaRmJ&oo)1YH_7krzSC{S@tz+59@`24dG& z`RWDYl%K?M48-e2{!vm>C3Y$dnaEA(eRySa&(7Q73aZ|Zg@jm4_G#eNSW9XFZw*lVk63Zl zEsrKB!MFJCgvX6*uok$`Gq=b#Z-H^69U6E8f$Ev7kR-b=6j>8_>rj$d6ZwYXj7~|Q#BE$0_q!pqW zdU?KHSfCHb^Ady^^uqE2jyF&{^}B=}XpfN$|HwN76obZH<}B7rt)x(hl)- zT5BHrZAv6udHOR5j+d$;l}0IqaSF@YJvk}T77_s&Id==h8~*uDfN|%x|L*}tv~#R5 ziGS~zmjqL`JPOI7086C-xSNDwN1@IqWB zmrFm6=h)vNP{w)hb7akn&%y}rag_8;fb*P;GapNa&MMu11mJ3-ewrN}sDUH+jNL-9HieW;Yki01}Hys!9 zs<428;Zd3iy^^n*A~K8+^_Rav;Rb}{nb#f%UI1L?p%YREM1w*mcCqAxjzITP>Ng3> zPjK!69Cn*p0`;@jOrh>exQYm1zQS)x@y24+$%ut^1pd5-FWjjn_yX6zcv_hFsLNF; zkXc7hQ_NpL!2cJhO5aYX+T9zaf@vzAp&qQ=D(|D4Z~i5tvN%V#m0(EyN?zR=8l-0}$4lM6hF1CkV0aPbk!|rx;9=QUIqZD~f`qc~?jD*VpS6~| z;F$r+{EfVpJIWcTrj$f!J{9{9J@HD$aO%m$RosmxF3+;=*})CXWK~AjW2&Q(nLn|! zF3>W_oEdo1b$i+{Ag=4{6i`(7&YPRI#fm#`u+Jx;JzA z?05}#Mn#vJC`&a&m0E*R?F^_rviFDA5MCdb64|!@%~}p3*kcp5k0ZPTB{?`v z?(>_<`%ffiUB3rQ1H51`c@M`R$Kd(*4rtC2$#c~CPjpfKo_`Qt3QLT~*__y_IfQQF z+oo7{?o;`u!GPdp4qom5iW|~cyh6(T7VKY_v6i_4bB zyO;xwlxGb&@gziDukdCWFAR6A3iy}uB@N(&FI))`PxQzRdH6O$)dguHN7>w8t6UcRq?con?Fxe>E|6%C;e?0`a;(dXs9K5BNu?3F^6bV3H?k$^BX%^3A!-Q=9kP8( z8^uw%Z-l9pE=h&InS$6@L?wf9i6fJ&y{-3K8dN)A%r1rbD_04=H~OW814V()9 z+P&y|>*p!#jNF76+hY2!spab!kmY?xQ!LuiW6&DN32|cjmmZ#HUnT&SSX@AD5pqY_ z+z;i2`1Cm5R?%A%#zI~fl6S}szaoWd{uE{2i;C-dT9SeG!(AzIVN09$<{GE9F4TVL z&sKn4if5;%nRjSRdo@!rFJv1jdLDn}AyQ5OEwjieapstCsV#s%+MQytgo`Fz8_d*C z&AqW3yYkFIB4n7-$467R7!}a=5nDQe$R|XxAncHk`C)GqA6AmQ3Ec6dpxck3zv4F4 z--4MSdu{qhBJ==Rx@60KUeReR!SySte8KDAH@(imrA5bDjA-J^B z)0;FeZY?%u8^b$E)$sb%KW*VKBHu#!OL^jA+Fz6T_mN*IV$*aYoG>Pc3g^$jJZotj zAmxp_QX&FdiyLCaH7-G0k+vjjFFuNIxJRNTjs6FMNMcB%C*+UCBPbtsn+?o>*q-;(o>2iX69R(|ObwJ zXTzt&PN=$?{OOkow;i)nH6%rGb*kQf*x3qP1G{fz542aAvm`L=m*7_e%X9L^D%2?h zk_p)rJ5%}tKBJumIP&D9%e8m^P)ze$8PoJM#~2N4`Q{l79L8M3VNCMsUZA0@v%;8S zIhq4<{>K?1>n+{7^q1sDWsI$_;8nOAVoyRVfXg18tt>$a%dG8qDU-uF*Yt_KWGgNv z@vu?#kMConKas!ZLhmb!lQE@TC&d0$-?CnOjU-Gd#4}CX1qXXqD~coqn>#UYzxmT% z#Kgz%?uc9=Oj7N;uNqIu3J@t8*j`M zj!VY9AlZsAeVu@l@^@Y)8vPK^H{ykgy;A5I~Be-Ni@ zUcuQs#_3kocagwpo6da`th;*{mUSG@y}4KV>}khE6gs?_QpR!ZArXCJ3fO(2sw_b> z99!_T#}L1pzc_J{;1HyHzG7}Z{yidPG(-yDA@<#h7}LqgZM?Z1iakML#r}f1?1XgUjRLlyUw951c+AZr8t|V`!jt!Io`n*u zzDoKbFvyxJ3FI!~!?z{=vczZ2#R#GciA9ySIyt;s68;WRKcV%fk9jGw#LPY(y_e7^ zwEJ-AiblD5qrBGMm8oS1j+3txSYr%iDt+_rB)A>fyg_PbYm&k~TIYRsCAclJR|0!S zi^P5jtnt^4RounacUL;XyU5Pz2!~~)Uzpd-VM!~zhYoKeeDweL8)?~2MW~?Mzt9A< z8?T5^v{nJ72wz|CMfB`}nHX+%pYZM%D^X6jymL5ri>k;N(eJin!MGHUjr6GBT_QZp zQu9|rr?JmsOA~hRlaTr|Q0|-HBC?gq_}Z|Eo$7_IR;}JBwv#b`Bd|;^Ext$RI6FGb z)%;8{TguMu(WfOimI3erj_tyUv~#`*FRMv!Iyu7!syIX4Mz&+_n0Q{wJU+7BN8!uv9@;`;2+LgKgmOQ z+5)Moj$?D~2aS5h>}L0wa#Ki+jYAoOj8ePt*rzdkDTwNOML>~@Z8-e#vr85X#J3(S zq`&fDg2J0Gi4NlS$<;=42YeXT7mr$NoIDY{Co=GpWfB-=uSD_s>XGzzDVmm29z-AplEd(qXfCBSS0?%poyU7vT;nxcWD1l?E5Qx>1 z#0Bof#RXwHxO=8#gSzS(rFuYrX2AVR{|${ZLyT;WM_h_W&ikURJ*$IET=73c>{}HZ zB3&Q2zcn7RLxN(X7l*!N>~8NlGVW#6kCFQ+cyHKf{@e?hj4vXU!Jm8CDj1|a^0^oO zTFOOsUMp+_Ti?Z5R;a94+y3|CiBZLFc+k$YXA z)MT0W#R6_uuy%wfoks6JP#bTB5#JHm^r6)lzW(yDfN6@r7e9NZ7as!({~HMrd^29L zP%!OXfl2HUljl+8nZXjEq_KWlzF|d&0v4B&iXh^GTwKimjxWo zK>7I*67sHb86EKXYuSXHy&kYweNG37?VyPm(9RL4E4(ew>I<;&0I~2{#z*#z4=%62FhJ^{C5F zquUJa5^WZvIo10!o5ba~w7E|IoQQUkd*tn(BuP%7)VQ>oUBba@pD1+TMAm`E#VoPN zHQK9)8>=|h6u5V@L=|Y@zaT=~w-uQ2M!ejiV?HL<(E{sM@F9h(EzW*{-eX3ejrz_- zcuFo9`gW|QbWPulai0jRVN}kU|CMo~o}G=L{CPw!4o6R*5QO#_@1eZ=C`W>yGzz zX}9Ec3G;odhBMHb{BSwV#kuc@v+AN*)i;^?=PwA74NJ(Cu$rrmL`@+fFguyto+`{9 zB@#;b3sHZ-^BD(E!}D+7goFq-SmNifGDI=&4MpuKDIuLcopk!0G=G);N#Rjq_hF7F zWD|Q;J)s!Y`x7_`wA~^n)2;&BKa(lIC zCKWG?3~aCpD8BbzW+cR_1UD?og0DjuzmN5)>8*X-(0y(fU* zu6Z9?8SZ#jhr3O0MTG;1b&B@A)6ssfT}zSLbW9vaYOBB+YHax6y2js0UBzvMv_yOe zrzqAE$zNNG(j(#{REYsUm6#b`uwHD7oPr-{;!6qEnY#rxapumr8uw~GdcTc5{lw_y zqSN1!ZdLGd=rn@$2R$vest*SJIDw@m*+&r;h}mH}7!JN|TQDH%VXvhkC&B%9-`+5ltpmK`EEWJYf? zox)IP_)t{cZ==uVBryc+hDG)wz{jk>QKxhN&P=~Z+^Zt6B0X2R`|1Pp#a?VOFc%@h z-W+6l;p zcN6Y_JV5Wh^raXr4ds_6h&8wyqeQkvA&FgL)9Eu}(ICA~>_G7Kh}UOX?FE-#3)0?+ zk-ZJ-37(L1tnIlr_zgApVPqQREdkB1vR~WWD?*JQ@8@avevX>qY4VK6JdrqE!m~tu z_A#o;smc6vqCV!#P2MA#yr)-cBP=wKD}Ii-_C%Cgv~29qi6M%-Fv0gM0yU9u+_|@k zFQ(=Cy4>wc-r@5pT5i~MP6;}t-K_n@wFP%=m{lC-(%&`1-SKU09aU%w>9|QRSzr=F4a3-9oo}|{O-8c z$Y!SM+tbH)|K$>T`4|Na#L@>wK|%2Gu;6>fQ*Eb0E3NYG29(A6V`Picn>|c{k44!x zpqeutvq#Cl)yE^>?RxdNIPZv3bAy7me4>$SPGuy0^xJSts<#T2NuKOK9zJ_Z^)f^~ zo({8>puJA@UUr;;o@vvvh$J)5i56C$=`1Qf6W{GR+)t3L7kTS@!Z%L4m!F>m>0V_U+I)12 zXLq99FwG$zQhqp!p3uPinSRe?3mvyv}u7HB5%tK=81i3`Bqi;uP3`iJ$2y`48DEKX^|%W zZPAUZs$AP-c%5I0VTEsDvPI2;vB-)0br6N=>I#L5-Oq%mcdH}qDcoz14+LPGEr_#; zWJ8*Ft2WoOH|0CWE=h7r9*Ao@4cLz0`f zHGD8Dym%#keV73 zO==Tk*pM$EL-6M@Om(-N8$}ld7Cy(Z1c{X z49r@Wq8N9V0Ohm$_)t|2_4Bnu_o~*Z%(NnE+!}kuq>l@*mD))Bldi* zjL6jYn_ezbV*ZM4Q}gOx-Xvm)w`ex9rcmiWg@X^GVicaO9xtaJ%@w`4`qwGH3rJjK zu0Fv%fceD&(F!MIoq0_U56yi+Em)=VyfeEwHhvK8PmY?Ca(1 z_$Ms0U04l-?sKD+N++K_Gv|aGxRHundP?f)^>NXwMKe?SHS<@|%uj`FP$2QcYQEweGkk zSKqv$dS~Fab>I0?_h+^L);oMVYI9w?=8obob*BfNO|Ij$XNVH`PIqhVAiX1y9j=Tx z?arvLbc?k#@4w;{v!{>kMQh9j%X!QaDeZBG7lgkFn~3N`I0hOv@-KTm%2G)QUSQen zXOoR$#cGC;vGfK z>EX|ZXY+l1s&9s!+i~)@84J?J<4zpadl$VO|CEhS=L+T+6ivn0ooVl2n-F`?e>6l1>P^vYzj0uQY}Oc#F1YD+XgU_l zX0_wEW7&QiwIAHo)D@RW?_%8JjH%kV4Ds>r2SYH{RUf{eN2N@62=~W|a?^}L`H^t< z|Dc6Gz<;>9GWP13Mn*HeJwIc2r?h5EoLPZCTsH)~n>lhljU&tTevK+%pw`o=)!<@I znu$D5KhVyNC$*z4%$2|m6+Vpk7`BCt@Mo|`Zyh4PkR91L3KP<$(Udm^fw-f*uZwg* z4$bbU;C%!KuCh@Zud>O8pqlxx(RFQ6cIRI~avT3BHt#P1gYtyeo@tTe#n*(tW}Vs| z{+hMlx+CzuaRkHMyY-{K{q6)_jMerSeC&g$=TkZDK7{zJuWAo6ao-N^$8i880N~0b zd&6=dSUUbaFhmKwxG~ClyqTH^jJhIGekePPBPLbEP~IP6ebIV2h6}iAuOwtRgXv9J zSc9xFrX>>0d9EXKM~e^mK7OeN%v-RzvM& z{NN{~G3SBdUkzc4YceKX&#=BGy&h74B~CQ|^ByQO^2z8yW{(ne-xY4Pa&?doG#(X6 zqA!Y)8Hu>|euR)~Vql+rD%{g^qarZ!o5emmHkc0x@n%eipjpmYa0w&B(xkjG<$`@f zlxqbd%!3$qDeMwwSjhOEIUcc4%|Bo%LGHT^ER72rWMR>{D>&qo!q(by`|nM0ir#19 z6iK9*nbarm=@`RW?P5sS2m+15ELakTxP8%K;7fQ#d^n+q4f4Xoy0Nq6s0f4&gky*lp6+?`Qq`4pb)@?}yAxWme~Iu2YqK;ozX#h}=fu&g z8BMZKOCZj(+lIR}sLXiAONOtxc4#;|9@&0*cXU*H4QX{f*;*X=u5Nol@Y^O{2jus{ zqrE?MMpJ>6m~#YHqFr5?=AW_!un+W4`IF~Z+?*uO-U*(bxH-1gg5c+}UGG+RQcx{m z_c&2D_HC<`r=_SXw~AKokHvSjMMFnqL;Ja&dk2^I1advyNn!!Qg3n*N1+$syFZ~nB zr+ESs@HLTe8Ec&3F}eo^)9F3+oLUey=mY)A3<_c$v99Md?KD{^oeF6x;H~SaaDP<* z+xN@pI#IZzQuHR39IfWMo@C+;DrdoQqx?uZxV*xdPtN~n)q5%Q^)^e8-~-cqj^#)m zN1DhR#Wl|U;w^R9>io0~-$~K8Va}WVC7ZTPYM3OxIGr$Ozkblr$OrAx;tiPbW9k1< z*dI3XBLge1=aK#yOD^CbDrKiqL-kEZJ2<2eLy|j2PZ6J5zl~{PtezM&8?Lq0mpEhV zj*V5lcat=$JLV$CEyTOm$N2VZ8S2Voo=~~!g|+1gRjXbQ9d(lnTNRsU8mPMe0r3R{ z^$|!+u}K;q+v1MIiDNY33tR3%2j>v zZD_>iKK6tBvuq6$ZI%=f)`pnflKM%&CDBhV=J^+V&;Ydo42{TD?eL1+uN*tlYgGJH~$K455bQ+_@cx> zrwx)IOqY@S<4=dAy{{%yX&7ABGujGCdk&pxPvG*5RyZ4ODP+H;Lm z7FwI#qlMTRWMq6vHX6=`QLl^1$!YRzaI~I{On|Y6BpRjZpV|F;hw}fjz2=;g+QWwy ztoG8lJ-$;P?Ug}_o?&G0*7D12T8Tw1P&bPo%H(r%;qE4i?#>8z*G8@H9(k*RYu&qV z6q+vhj<^R7_a5*b^+D=C{~zYw1w5+i>K~q4?g=MAfG7c@j+&UDi3ZJ(pn(L48Z?zy zP@_ewh#D2)3}OvQaAqVYhk@}@wboXtR&BLPwWSfX1R@FGEr1tUVAOqL_#S0ilaZq8~+6i4hcin{{n_O zUr*hChQVRM@XmaJ*BY2zGuxwPBKE|B;Z(eDR{`2WEsn@Hz+LvEsWwTXU|m{IWNMxo z==P?dG0=u~;fp;xF4dOX5u6fP{ORh;3aUYDuG7Ms#x} zWonXX@7nI`xlY~RT;U$wQQ7Pa==4PAk}8R zwQch4cJs?uUw0J-w_RE%V&dL=jldp=1~ z8oZn)n)iV=&(8!~T>4eoaHDt@lM68xm-P%eFVvc)nMwk?SCGt@BVmHCG9KA}f5~&WdSw z9;Ms6N-7BA-*NkV6Ym(ZJd8G7=d&n7^+c(jx%s8Kr7VWZkzzh^ujHtq@ zrqTl0mB832_G-$FFh20TP%HJkl&>B_hTGW1d%SreLmkF zq%99&YiUlO%wF8#W3I}+-pQKX4SG6STO>}mQ%)P+Xg6?C14Osvz* z3SZ#Ov`|8|W(70SA*&fZy>gGPvhT$@Kl?fi0I^3^_8$$EVc>85U^~rBr=AoTg#tMQ zlv9XV`F&93$3T@Yq2gQ;tfy2C#haB!>%fjHdfb?CGgygQ%4Xp;Px_;CNq?hU+Sr^T zgi=&tj1&sAL>UW;H_2cf<)-ny#h+pePPUuFy+Rc9S3ox|O_g*3RydVF!r2_&N$BBe z&hF4GyP_feX^RX+5e`0$GrxwyIp(j^~O8FRP#<< z3)VWpo~#c`=X-AIDtWuJMNPBWh-c6?c(;C-_wPy-SaEEhbBviNjLEva?a zC`(hEd{|jS4G(hi#!<&g3l4P|IN~tB`tLN0EL-N_DrYbZuK|m}hk=4%{>Y#YJUmg* zYS7-unZ!iZLT!(m0!?RrRz8^>pssh&PqnBFrhSxa2FV0Jr~U6eHjx}J+$q<-3io2DGw^i*`-@|9_&KsZyO(f=V$u|1No69A>WZQW$7|t{zzlP zNR##{fhX;_^3%*dtpZP>p){6VJa#3({s)E3;UJkKhhz@qx|WcLTCz+EMM?3X#Sn7V2EsB!LhOy*iO$`BA=~FW&tf^v+(>XN8&uWgGv1 z_+7r!*K_?n+4?Z91g0vo(0emPAvk`Y6_Sjrnuha&CJ$ls-d>iAdbUf-^sU_~Mc4Bt1$8K&Oj zQ*FlmQZG&POj+rO6%dVEdYP@L!=60n zR=8Z&D&(38ymK@fo#KnSl)!Vaw2OO5o*)Vt?M#;Ox~2HeeQ z&Op88fa2mh+VtC7;!DSP;|ZS01aP>ZG--afu@pC9@3c1&ldAafqSX-;lkGy0qC9{z z3VqDuf~5_B-xV728efM4E7iD>%1my$$mYe?P4F9;M={gN)bnYtuMzblkSK`=gRg>b zI%G2tZ(7g@kOXwg2n%ic47~8Nr{CA?##N{eD+~95cxB;mT+%%KRSq$N**&rfVv zXU1$;F8Vjovwg0$VU^H^rTDKs6pdP&mP>3}#$?!GjqUnSP)%b!0{eCgTVx_F#bPh0 zGWRdBb$nyAQK?0TSUegh>A1LTVFD}4{cB*kW-4c9i99nNQjvE}N8F%qDbtE&k-x2p zG75N8V=Och-dFFk_1i-~$z2<)UgSAEch8$Qo(L80MV(P=PkoH{)Z=#Vp%M`^A3JP= z1uk0AjtXL7wjKT=i6I|K6V`vL~z<-B7*IQm~ImV zw8yIHj291CXl}?Dz|$CK5%i3u#xEn^ypBm`JV=zzY8iIXYry+;5Ui9G1mShUpZdzm8!cok~}N)zvd}voCY$Kg;8*ku-#bB zOr+%K6hF)av6r_u9VSllLuU*ZH<3BXo4^1{Rh<&}H?xvkK#Iy~7piM2A$Iacrws9d z-S|>*KBp``)yW=vs+Fa%O!4)Y%w!EUo$TL8%;X`HnWS(2+s*9D9s&1POWY#8VY^~r zeuAZ}VwUnO=oDsP&n`Qjr>r8Ll4>0%j2LT3aJ$mtDNiza%D>qevKio-)c=B~BxWg= zpz&>rV>yRP>yS%ItL}h@{^yQn4grkAAP)_ zA$h@dmkWlnN51bC?|yi_F+PWW2K?meSbj2%>mc6nkFrd|<+1#vKCD@24*D3%dclJ6 zkia+f|G-dAWj^*l^OF+eCNp`mMEO09Re6j>kGP*O>8G3`e=lrjuyGB$wnHV3ZAk?@|4x+5>qYX zXC_4is{R8H_Y?bGKOSzup@H1=TE~EW_doN~Rq9!>`)({l&FvFIU8VRR>#-PW zhQZ{i8+({Jt2!~#(hm(l8nMD3%5mcBI2J=a-9C_^-ZqeFYwzJTX%;_Viz$AFy-(Zq z6UF^K{h88}jZ&sp1Lnxw|HP9nXW;=e_FaqX{Exh$((_;QhI4TXrG>A1c(Q>WHCN}Ib zm1SR;Jmm!gdCGGRN>u-pCe28-xX$*-2EkwclK4x(e|~thkN>egIIhU#{(qh~QAN+*ZL`VGfz5`{=*V{WLJ8WhHlpgdUZa8h*$^&rQ*Ad^~JJ2>D zTfq+5nEG%>eCeVim~)MnuEGK0>jTWlw(%jc;_FGeNAHHiKXx2orTJXMrZ79+9=N=~*TIZ;+t$4QP=@n~~^Jy~Cy^OyMArbk*j;_H3w zO~?1ux)Jx<9Vs?k(GEZh_FA&BLhR+f_5!08*q}-t!h73v10fn>Y}xy}#kw`xG88;9 zyUX7l&k=~HtW=i1M5xKDb7whg-C3f*A5lP_)_J>>m4~gviX>mOQCapX zm013g@JJZoGrK9wTHQ-iJ8K1{HxI+#j<~30R!XSHi-bc*)a1F-gy^==7RCqlqEbCX{S-qw_ACs>>IHjpyE*Lr|{9%3Lwn)Rf4bAp^nk^#@xy9x83`1 zjs1gU5wXe)=gdn*G#h#)8k!k-k9c2`gm>z_BqEL)wPi@NW(txy-ZO`v47Id}jg(37e<(0YWmvi+m!sM;)Y( zuDR*3|@1gSsFKoJX2nv)EJPE>MCm2qCus$Ix1b_KkKda(>9HQcYUUU2Ict zCNwuQn)k}1M|($!>MmA-IC;?y_sRR24#`>vOC2oB`C> zRyV2{ziKlKFx2hQXygyLA6+A{55LRiC<9a;=T>;PM|+<^){;tbBA&hSrf}h&K8t(m7x%0!rKV@f%IaEu2?q>U10%7SPA*vT(A`m2oA!PA< zcR2Mf&<17YB%4@J#yDZiVDI2dDIq~ea>U+QO>~VXup3FV!KTAzFj@Lza&7!dt_|Kw8%FUs3P|4%d8(w`e_hu*RxYu>~AHs1uH(p zI59BO8^EVvSe?GlEKs9;v4rq5n5$=5^7 z#+OW1Sf23hPT+fbu%q_;TX_JkujqC@Td+EVYvel1ReBqi`Z(N|^UZ^Dwf zTdcJiQ~<_?`F40onV}(|<4o8(1S`g3ub8RX<*A?2RFb5QajI_E64q)3Wg2f-1a&9 zyQ+Z}Y9CcpACh3yYWB#|5C~qqI}>|V?q+S1A&*(bSg=$@v}&2TJU7rgVZ>Uzt-Y*y z!64K8$_Q^_cW~5PhT?xxXrI{E`6_I8d^4PoB`?9`ScG=l&gQ}hwjM3z{iZ+fRD)iL?DWVKY_I`?dxxDr1yC;ap^!Y=H| zm?k>qE##oMP;T0a%|sK$pxe_Esl|K?f&}pM1jkI>fh@+NBy3%cE-Gi5>uDczoHkFD zJEwj|;TAyV6t$Pqe(BUE+2kFFQY}8PgVq{CFAj~_8xaQx&L7y-MGQPIz`cje<`kFe zqr*})#F@i@Kf-yovd>uF*B8*t4^~In56rT8F~rK49gVqHsBXy@IUO2W; zo^12CskOAdWKr)ksAg@y))Pj&MM}#I!bu0EZKt#qVu#KIm+t9WSWBZ!>l=4zGCZ3b zYV}b}{Yq|D8+6#%^o4MasT=jo9#A*htLayF{j-FlzPcNqL_L`cBsYD z;_nGz@pnYqmfHo#)a@2rSOJm|Oh15mn8`Fp96C}BF8{^_XDKT;Dk~RBLT#4M=JIR7 z7iL~-e7rA;K)~7jGWq6I+pLhh+n~yxjFujsmdU=PSb~!3=?9KP)1v)RxUL>;Qu7*# zS8X&*FXjCR{V~ay--#2ho-dKGN+2Pc`>{Eee+k75X8(FkWs1wc zWx*I_ z)E85>c_^m0qDAl0K4~{}++59YhmUg4B5zn*F3XwU+N7M>Dsd9|t&~ZZ*!mO$O5pbc z^WkVFfM}($91iql`fVzV>=7qVstUrnTcqsoVO@c;q=-JMrvs{Wn@Rpp%>ny<3QFvS z{D0^Y&n6`R$!86-LUE86EF29oaisXUJqPQiL)07X8Zl_x=#m>#MHGuH9?QaRb}!9z zm%kXV2>vBD4rr~rf^j+A@Y$g2|Nr}#=6rvmG5zxYi!r^b>nF$byZ8TZjcM!5eq)Nk z{39nBD|-j%>jOKK=3O>3kWIJLpLz@BvGl0s-?JiZG5*?G@i#^{jEb`gpxg9*EHvB= zMTmcG6v0^`OBX+XQa?TXKv<;`QfPn64(?d=IpAd^v!_z_sLwk8 z7(F2_fBuEOw&??O`$a#k+mGnb z#Xrir_<~5M(9uU85xV)vCLD$YYI|c;x}RJnRk{da^;)uVG3J!KU)W#r7^LCK;age8 zD!w}kX3#t83lW#EI0o&j>Mt0)3CQoP9mCj5zilO=CD~ zmaH+&<8=F0OZ(kOWfn!n5#GhTER>~iqG~CyFQUYb3ilbMGS|{>sM~t_j!Pa;VUANh z9chW?5em|P(;D}g%@yvmh>TX#vWZjux(DM+?QiFBRXhq4KA0EN#D zUI73|0+t29pf0z)ZXYm<7enQUx!*U7A7Cxy6q?w>Aem=%RK(dXVjwAx6*=mA#(_F0 zYMgTv^g#NZh(Y@U@cm0@G~lu}6s#_YU2_jCIm+jT#^R%VpR79eauWMs>~}wDeC+)x zH|{5$((iuK6inscEyfCBM`E*L=5ORXDm;{S8ZZv^i%+P7Re*=c~g? zsteTglIkKg1L(jZj0)jl19J|~F@(JPNii-7ZVr#^-~RV~c%^r&M>Cgm&sOKEDBOe#?Pm-9oB z2u}u@HDZnkh9fQ+c1nk8`gLyN1U`c@Nw0X=rET`Db?G&_%f8N2<5nBSX!Y)Vt&Y#E z%Je$78q!Bn{#W#h)n>L28^6WvNBUR*pN0Cg4Cgf0r6nU8TlA^g}{XdOz1Veris*=S~iKn-hZ| zISACtE++i6B;xOaa=x&w5Y}Zyk&Ia(xEnbGnu3;8XYnTQj45To{EJ$yg5Q#=?l?>$ zm%0!5Sr52CcX+6%vLr#!v4Wi_sho#egn%fB!(&r*rB2=*UBIXM;J_W)2cs51CD#65Kdmp?oce_Epuu!r3 zXkYy8G{)qvc*Q>sJLDmUhzp~Aq_u~H@ct+jX&DX+49G>L*&?168GA z)9Jkl#)(Veq6G#MnhbyWd@-Dh(@2Tzq>mE|h}+jFTzbDaEti zJIH=She=N!e6gmKH0!|0Wa=YeqE}ypS&>BO2&G`hGu^IVj|J% zTcR=YbSVK*CVftk@6>amV3>{CtK8V@U}!9jjv6_*`>BQ z^2;FGPYBPWIBRk{L1Sso2`E6YDw-3~oxj`$4KZ}5IFT#`P09-2bejmojio-0x;hyI z%A@*R4HL`?vMo9VYP=uV(JNlyDzCXsY#0q8+Aum%2Os$E6YG+3&ZkLzx^Iw|t=fCb z=j@h;da(0a1zJ(qrftTO+5a+#v9=ksLwon&hxBxi(@OR6O*=^h+6 zk-D6_0&SxFaMyIFEqwMl92(qp5=N5}cN1R2$9^8qFR#x|iP6%DTfRk^shU*}tws6FC- z8VOaQ#K1;xmb@_;tZ2^HHcj*$cB!xGiM}?(=G#Yuc^7>Pzj;3Uf4+&{@5K9G#QSV| zzX|WZ6Yq62EH^>2O~ZwYI`?eoe(X*gkLMu=12YG}1fO)TvO!OVk+_i1LoC)!pgnEp zE6f%t{*#^JfV(rsvuM1ScOJ~IhVwIRl`0I+<}mk8h3B0wf`xL0_3qg`=2nG2I)1Xk zGE_L`_zF*>BwC&5)@+&uH-&#A_6*k)v>?sH)6fEk-gY>-)|uQxjyJ(}aR^Za3j4tY z@nAi(v`^Puk|(2EA9&8Y4MosmapGb%wh!)%!X-v4W1>QD(Sgzfv3X! zrrtdhKET#t&l-?Jhwe4J9@c1!eR z+r)2{{OuQAR)-w}pJmD1CbN5!+>OIC--w5N5w~G;S4eBJ7j?22VYjt&rQf zJTa%f^)3_29QY7{{a=4*=j#72K}+Lmo_xHzI^L!~%&=yFZqEq6Gs1*d7gtIGFHqqr zQ2{Mqzram)B271;g1=v&$Y6R+O|mykox^~@9Jd)arC3w5>ZTNH5|z<&%o+|c74-Gk z)w#YNhj)Hw9NzKI*mP9d{mqd*nTcd;F8F^CRx2}UkGt5gfo~d^*Z7C9rx7H}q5hJM zCDPD>@jm2ULCVydAjJ?dx}DHIKQGop^O-rxHUSbism{0_`D6?e#IJvI1?>M4x$RbN z-nOE+%fYXlZ`v_FQ>pIP)atX6ZN`15R**EQOi;PGoFi7cL#A`Zh#T8)-R|m%M#Y?( z;kMSVym2!1Tm^Jt4p#6P@mvdT_k$boGof6&)1mp@h*Cu~6l)0A86II*=8$aG?s8~L z+&F*_vR%p?Y&qt-4?e<#4omsN^WvG?585GH`#D{>SiEOraEZva#EoN>pr3!x{SW>c zMO=`Xx=4cSLlO_+Wg3Ilbod4}x#{pPiGeG(`M_)KLPb}^4gP?o`oAn|>^!#61YT-t1iDVRBdV8wxj@9<5E zKL?2-H(>DFZ0we3ssK|3Q=?bB2m#FRZnE)xyP3+;iybTj){_Xgz^0Cg%+f1fb|JsB zVyP>5g$n_E^XM_J;-4<Y%>-4Gt#1sm5Ip;o zV3(br>(N}G+xuu?o2*}ZFY+8o!c(Z(1+?LLA};Myjicu-;<{gkVFUs6C;+m6`ADyM z%@qp}_0LJ9y`6_2HWc}NB>Z>h^^x!g>DgFCv(p-?N5oK3KI4@r?EcJwHcnwRA2myW ztC1kU7a}mN5%2{>xN5>}-V~vOsZo7eCg6SzSdGW*0OVR#$fZBYBc;{8;GzkR-K$^u4R&37U+XXN;#Kk!%XLs($~W8Gn_TQ zcVVM(Qq6faFVlZQQ_bUqy%+GCL8AIh)=AKKJi_$T`wz;$Kx@ZPp=x98(HOKGKZ7^D z%xiiECM^feW`y{;Yfe~`RPgYYdb*S)AM~oo--u1vqN$rEK`b2Gm z4)*68Dp#tDd^%!4FA+sH=dm@JvJ@f1bg|l)Lo-imha{cdvFp`wn(D zhMTgX!<}M?c!;;r%#Vtmb_z1V$z4#~O>`Smj`96KA_haLMSRYyVbjwpjVOq&uJ(a}F=)x@|BFyx8Z0cy~M<7cjiZkDbfd(OwCb$Q8G1Otty#Xpk7`wwMa;-%7 z^?al({W)|GT?P(P3cC%&SL65zth^ORknrQm+WANuy8w*5Ubr#x_gR)LZjHN|5M86E zad)oH@oZQ8ODKQI&j>NU8Zu0ce|aJ{0z=}vzhl-F?kRB zI-R~=m#_r~!^i&k^q;vQimB)Sa05fAxc&^tR>p8vVSkJ;&enPzK!X0cl6JuvlCv4h;dF2c%z;mWx>}uSZCDpVn zz*?46(}=)JUx1jCzGG2!itm_R zy^Zz>%>KjLHm&{gd%s3Iy2H~>oouIRl%@VTY+I8k{i)B$kP+UcDoiw1Qv15Ap;OzW zJ8*(9D^yb3>S{=&?SbCC`*p&U)*gA5WWP;#_O#bO%A>bm+ZI`3uGzP~HyKy}t@z=> zunz%@kurqJ%`!@(jOtUOCaS@c3$&)h;uC6jVH?*XBh~xcZKiyftXJoFHYxsH=*D6D zNn0kaf&NIJlka&?@jq|Fl?pYEW8Ud=3Xt|x|Fj~cJrL(X=2}?R~O@&3CC3_ z1O2&J2RoAX0W_u`<-X@RP(LPkm&-|h8AUoau728b(6c5ts-zm6W&!TO9$ZkoOx;gm3rOd8G3!I%X3Uj;)WUa!zBP90Mjps#d>)ajedUaI?sp7GHk$3qE6bK724z~ zCUyevKo}u<*<0=CpNWz}*=|?-6OgHNTuHsVR2`Cs zX+}WXw`$i{ar7#le-o?F<_LNfZV>)J+zGqlH6F(k&-10n1eQ6&uO-SYN{bhU={`|s zS?)TsoeJZh$6{=(pN!En1D0xH;cN8s1M8OqUHsn4QJ`YCwe|^ z%r2Qj^!WlTh&ePF#_|JAhGKpwQcvkq@0U$I*dFQ`lporPdFb5Z_J=d6(DV`T{} zt2~`b5O?PwA1$>r?~t!g?4ocrImxP*RE!Bp4;*Rd(?D&S|;e;ZGGPz z^81wqgedx+h3~WbzB|>CqI{7kpN;Q7H@_2o@Dg<$siSk1IeeXLS_ZOUb)j|fsSFVb zQuNz1VYydk7Y&~wN{LHoqTw{VXfs>v^|&G+$`^_9*(fi~i~N|WxRnw$F5x+0P1#~G zhw}Ab7hHj_kX@N_M7XkC3>r?jk?H0~~?Ws9`j4aS#jTSa^XBA0~( z-*AA_1n2NITOSY=53%*Aw6d>5hU-QM+6)|7I;s}!|WJr<;S1o)4gP;-3LRDVkpG^a9tDXd^2fx?uVkLFCtn+jtbb+>pte85F z9T9aVQk`c~of5vkSWEtUTB{fYWPa<5cw6K(di%(v8+9U37oUfzHB$OPkk%rSc(IKg z{DkDC+Mv8=uj4qoJV!mRq?~BRElETw%86$Dj2~!QEujb8N7L_szCDXb&<5XIb>>+k zlZr)euuK)@J9rl({~O#8%;cPKiS?3@z3be?on|ayTui>ktqW}u1oT2g;K=Z;#~zW5 z?FViY!I!u*U~z%l7(#+mmMk0CCL%IY>1-x2b%{}8*Nf^ah?gjEs_tSUC%;~&eYEH+ z@TuCm-2G-n!OsDSKnmEie402;sl%&sXFx`zB{rOEu6PA1hzw`NW3CbcN4-LKYM*h~ z^}y8x1m!yk$BcT#G8g*cr2HPCooE=Ok8QnMXni32pl|COi~{bNF)<2z+bTlH&vIyV z<7r9Tr(`hBCxNt3LZ*F6rjA>UvkPeHQbLw}N*3dAZV_J$D$ll0$tI8zFehrJrr=u5 z5#ySu>HDYvN3b)fe-bEVSp;gVjy%;}>Ul}xwFXCCd>?FU93zzAd!ZlZSH}T^*eG+U z&fHDnWK|ao4RJ+7ndL8_>rZ@v(pC=@{%PQ{N<<*4Yg*ov~9)6-|Aq(@eNFG>~%Ep2@hhM z>o!Io>o?z)Af~Rf%8f`x*;*CU=0Fmdn7|ZNKOrBFYn_s+PQn%Qz%jgfd1zXM|E&sa zVnOzUMsxw2xT2S*I?J;vOB~9wn{obv;#U=kFX_(mZ2p1>q11FmnI`Vo@!?(J9+L&7 z-c<;zk20#cLfBv+N@P|L78VumYT-(%hSYduHp$cwAfcE3@wJ;mBLarFuu^i)#ba?IkMIRcAK#Hpur8Q zIyLOh3D!2dwD&`LJWaJy;*y#X2fF0;bR~F3EDS^K-^n zaT8OJb(+^z(j_0w=gSX^J)_tddz4FLL36z8Fn0q}T$`O}+eN$r7?%=0JgO-jvS0e5fh`*c%Au7W=wIfQGHMjc_>4}9UP2#p`JH&!T6HAg&u3H zr|s<ETS(SQbbK z(!gTuGkEOdqPA#dx;6X};|pP^P$2{b#a{ztO-po6%fz58okXw3nuDAtgGI!TyTuFh z)0^ZAkN=zErGmet9%U^$wBfY;EPly&n=;9}eh7mjG*vmCP3lB_M!sjeS^_oEezizn zP~WM!M2}SWo{bC2>E-YU?)R?agcU_)f>tu!+g*tstTTdbD3HP$_PZZIe&wwB8 zjJZNAP305+1+ymt8Y_x=vI`~(7yfRLO%stQb^F!L`ho&N z`X+sLk>?w=op4`9c!z`gt7#`Y_a|{*mYZUWJi>g*m*`Sze4H)Pbiz>xmmQ!9b+e_c z|4fX*HggQLc6}^x@eCt>+SLEc$Y1qaLOwUB$N#s;KY5!#{>e|A0Qol*GxBfkhu(<- zy(I#@MFPE;+E)>JXA^pFC-heQBzkw9B^t_+00a)CTPkA<=a0Jx=h}&J{?0xU8{ZTN z-z^Zn!}OcnBwXv2ng(1))2MeHruo))c;i#1x`_gTE1Bam5mzrsl7d)i(bwygV({|2Xb8ns1S?0QhLH^qi#VXMD z69wkpd|OAEi?atPdr-t5V!8THJ`PycJl@W`{7jrN720LUZoRq&@30+_t_MW5zO_!m z24CqsX%_P>IO-dvtrNLA&Bl|__?* z$9U{d!bq@lLiz*1-ATIebl}ob-QguPM+x9k4_|Us{As;>*)yEJMMUjIR7IYU;qSy& zTN?gSJmBEP|LHODESu2msM9~kiGesPpVmOuIczxN|GPMMy#Q%V_BfmI>@m}~nVe|G z6VMM)p2Ymvv)Ox`$yO%gF0r4>FcI)&mw~`JG;nMgxF3e3^i>E>2W?KW?v->-X2eVTGLv+gcSe() zapIF_oBB?;nV2C>#7#5m;a}t1RQ`zAdUc0m_i6nJR@vOy@;BpLh_;#sSA zd(yo>>doSONR7yiSRWEY1S4X9|3d8V{}%iEN0j?UC=%d12xR5~8(-GFd7VZa@12w=H=t5 zKpj>xuSiX2#qn1XQ5d&!22Y5A-d*~5#&gu09QiP$H>MI!-qjy7^=6%>K8{G&J$usm z_w9F?nx0$2yoCC;J_Y)?xAZAOA4fUv2uGtOQ>qrOAXtZJQ>r4*2gM!6%FXe%2vLB@ zH~suDnDCzo`11&U#s3^YoL3-}TGS7D&W*lo@9RrpTW5uj@!!8!A6vajjl7My!~I&T zFFsCRNkBdIt?1W*cer0utbSbq-DPaQe*JY{zb-KQB}5XH_42LEkqW;rC@`ao`uhr{ zGegT)_uC>J)_KM9t}n$&Knu1mzKzI&Ctqq^J&h zrO13-`X~VvMk%dB`|QAT%3~Go5z0eri>urt)PJtIhH7Hp`dUZ-Z{8unIf*Tmh*68! zybnB0dDi?Ax#Lch+wE(M6RmCvyH;%Z4}OLW5D znmNdye4_kCzP4nMKauiB1wA9un9rW1XgySFY>Nm@AK}n|GCZ{AzMtx?5&((vwIzx= z)2W2?iLQlxJ2QPfnTj92$vk{ylRW%{kgx^S(*v-^NYC0&_LbU7mNH`n0ORmWH+%{r0FYg?{@bY{tJs z6{g;Nxv*E~6(9+9(YRET_E`6a`;M_@h1U3ipOh2g=Sgf4b5dF=Q{;?T+yaeX48}iN z%oxv-7{6WYDFCvL$bwPKQ=EOxO1@7|V{Vtp^PC*dKDD@{k|yz&G~gwbw7%cx2U_1d zlerIb#>DQER~${Uc&<)U6E1E1hBl3}DS_`XVEYt*V~U{b_oP4}mQGC04&Sjml)x8+ z3US*1&r-yJPy!k?1U`A6ihDTu(&Agci^}kMB^Ue4amB9WVg*()$*A3iVh*#|{Nsv^ zM6nq~ICTC?ve0G!5lJzva!K62_N|tMb|o<`Lj8D#@*_z$*ju=wHJ2F_97`EeMHc8o@d*<(UX;xuJcgwAMR%rz*qW9 z0;a2M$kA^3u@&gV3MJOk6dNTF>@xFObE4cXYf14D`e*=hj?3uR6B0fFD|&pP99(7l$7%WAQCWzm2kuYWtv; zqqY1co*k6Uz-ZVDhzVuv;a_;&c;Z2GwUj<8IK(LDdjU+S6#oTK)0ng{5=#qD`7+(4 zeOm?XdnbnWow`%dzE(`O#qmu0A}`YT2kXazEv^7-9GuK^@X)J*y&plV!yM0Q98oWQ z7{@bE7}hX?vU5My%iMNc%gn%;+mrOUq|Tk81n);i)m>4z2YA%0R=Y$v7qNWursUYA zJ~9_qcX5GksS+oqfT!N=R{VFz376Q=>q6C;N8EgF7FSm`O_lWbEw#~MG?KG7-b!GF_iz}ZF)&caZAo&=;<%&!ar#_hyC zYGEM<3zC{YCqmZ^f4POx;GM9REz{m5!d?}b6qG(Erwpvq)1xeX&a6}3F|_x{TA^^R zY2jM$x5bc$3PBz&I8UgqubCk)l`rocXci&(+A@0&^4(UL#GTz#m|}}U)xAgY!`6YZ z;wyG20a!i7>~$cy;r!Ah$XMb$Q01GxaA;ZVq;o!jsZwJn z6)*t3&W>|>+)b=gRATJ33Kt~vZUkQ+`dD7Hw0(Yumg?L^ksNKaUY$?k)O2l= zURmJTto};d?7>D2yE=V-D(h-&eYn(zdp3JF1@@>L^m3OzEyE6H%!#HNW0osH<{ZS; zdjAAd#^?0%M15Lj|Ewie*5TZ+cX7yf%%S@9@>G3VR{y+8U$uZOaFgIEeaD=N9}`9| zhmlJEGCQ0J68=D0RNOSKIX8vL18#dOe%P}BGg~0F9x*lx{l4~D;SPyh|FfokT)NGq zY8rv#O0$iJpOFTbdUb~9BW2k<7<1IPE0kq#Q{_$+t)PZ`iNwkFnu<~RK;KKkmjbj4ry+BHa`dh;w`>)PJ)EGIZM=2 z)sNx&bU!f}E#1^(+CJIOuiPt@WnIwsV?*6T%h{lk;ePDNv-|t8YOJOUR*c0uuP_FQ zGexXVd!0Mm_?@MjFx7di#xuSWxXyz?fa=aL?m2Ac6W?z+Y@W{-Yjuygj47g?yecBH zYd!BaEY;o(W)#w}R2aWK+=r&D8;9GBiHAhlGIxnx35@AsM%E?tk_3ONbT|!@Q&Sf+ z!L8q#Za6r8M&ZUzsdO|N4>OlLR~!(*hDv(~ae?M!7%k$Iqksj$D}NL(EFn&kFDwcc z|0oUN*4%;Dix2i~SeXR$Ima+3t)*bb$V;{7-19ESy!_pHS+0se_&0`U~Go^VWnm;dpY;GbiT zKPGtCH^`=mUQDuyl6*uUs?N8bVvh+9tP#fq2Nn?#lN^>3fa5$<3!?a+!EP~B>xm?W zgdXiA=+S(w+!ZD8E$A82ymmDl4tmV2+6bjKy(&C(faAXq=X!Z65qF) zZAVz=qWE7%)uukFkMApWhtJv}^e*?U7BcW@lt=1b+J#Q(4ZTnIa?(da_woYxKm@^o z{sq1O%>$4HIdCcCIjs0cqsayNV9D{S@GCg7_`2)yC|{iFJlg4>E_q_>EA-_CK_FX|%ATSs^~oTu)QLbOc`(aZz84 zg~D2I;K|BdTCv8B$Jm8K*#1uvwKuaQ$gx3a#i_mK627h1T*5PZrNv-m1#=LQKM9TF zA1r&>F)Ijjyti~W5u=9t*>HZ=8He-_2snL39pvdyEu`x$4YvpD-9rj@gml-Zn!LCE zk(|Y&<)|93CfQ zap3H!SMr&&IvEQB@C@h3 zxj^9lC;UPcA6wFBKd@(4p6Tg&U|acYhq{k+B=ZNKl*rTtjuunj#N%O2Z&)gSH!?6YyCWadaFIx!uGg|cB2zo0 zZP)gOFMuG_t|rqkZo8I!T6;cKf1r=BK0gT`JG`GqJ`aj>$|9}946!vxAI111w(cux zb~O~G`sFTc$#6%yybO^YhP~B%wJmqMXPvSHi8KRewZu19xQDb%w$snh4w56Xt2H##9k6^S#})!2>r zx*WHOLy~Y?muwSDdo+ED+#ixq1`WYp;3^( zIL;_Br-6K_^TLXyp+lA7;!0u-lmL98>BEo`bbW}0=!`?VEmiK(&588)6gc^u?V6}@ z9^Po6RX-9>$+GXEkLkgyV?KV+|6}Kau^;~t^HI*NjA&ddHo&+x`WycFpAu;I ziKcN<8j^fHBh|)0+k#3Q`3AbZm!Y2LPfxY=D>oYDItG@TA}+YBBO3AJA)KxHk?5Z{OWPZHv#$!)I9nO0B@oVIJq+Tbl=Y#|@~pYF zwsy-$IN{=>;H`G;{VVRxGvKqg^lY`d^c=OS)UA$(EhZ5`XSo@%;L0nMW?TrF+!9}U zt(r4`OX>CMh|&giOlhrm%kqCwrZGu`7hjKke)}XU-Pz%+EswPJ|MDk&Sm+0)qEAKM z4r!)S!C-Zi#Dw2_4mUo*(g=+W)ezs3I=nfhe4=NacOM^-=XM3_6QV(Nc=QTIQw4pZ ze9jIhj$-@n&6+%6J)hlpYxS09JZ^tQC5VdU(kf4$6%w6PM^b;A4mElAb~u|l%I&=!<&GJ?b|?D( zB_<%KduaK$?8RM;cgE$+qtVnMoeb;xmI>&2!Rk+ZhpXqG9ISrIclaa`JXHB-Xn)}~ zHbb|;RypeabsMebQ0rL&-eC1>zQgwUgoJ9f+}BgCUgYb!M)ml576_98U(em@*70D+ z)#CAA;HPjrygR99i#F~#OIg{JcHT8aNcL_cc$Af)G4!?^FTn~&6nJgT7HzejD}Gnq zXR}#3o@x)Z=F9IT@;m&zMLrF+o+IDq}Gk56v-BA+nU-toVn}_?M0ocaTa;#XZr|@rwUOSSapLhtN(~ zA}=xc;jD31h`k#p5N(8n2M3t9L`7ipI(Y}VH8ag7PRT=4S`r8l4sWI}Ve@4O0pLvw zci`LgqIAo2d(+{I<}YhH{EK^9s8t0j-2G)9(RUi;PDezeo;`w|vWHB<1@&0G+s(D5 z_;Jg8(HmUKZimtbJ}#u8K%L}2k*~NfpM&#(e~5e((hjgSE$0D`=M#BuRs!)+X-(%_ zkm*#G9;B@%JZm)k*@7-V{Yz|AydJO24Au-i>giGfTYGt9O9TrEI_)aBhKYFI7i{1c zcnz}9FPQH^d(gMb_Qny8&_EnFU~!>T_O+$STs9{vl=`nM5$~B%-uj@R2v2!Qq(SKx zUN;I=Na~RZ=lV-apii!GMw`Y_JLk|#Q@yj79#5yo4o7yZh*Ke&^PfT~;d`hmtCJlS z>Cth*EXdJo;y-|!=D}asBQAO`*FF<&Ti+oDr}QH4_ad#S_S=NZRX^47qzvNQcJn-Vqzy=Vo~i|F26%x%KxQ!A8)fs&hqoo88!_k=9E1-gh9b-8rXr}`QyBHH@D|$HAt~Ayl5vYQdCInru zJ~?XK(kpRQIx@+|7-9L4@g+nYfj&Zrvl<6YSsr>+e9*;`m{Ox{CDCn$_G2VbJK#~> z)$`6|;RR8uTyC!TnJyf?GM{$~M~b6F?-n=|(NP{gk!B#jz?^epCP9IOEc*rzJt_B} zdxUT3V4PCya-0Z!O*kOULe2N>l;dPf>t&l+IlRhB+A%biBFh+Ji)CD?m;x73P_VS%~L%RKfHC}bU!63CN3 z9bx0o=w9IvD#5MA0An_+F4kml2*l#1+$kuEd_;kUY~A!84(yLl+{fEiBCYn?+5anbD9GtVr%{ zDjumOL(7uM^>h#h#0&ha^rf43b1FpaBz^3+@(S`$LYi|d+7q!*Fk+{Ogt) zk^o0Uemg4!B(0d2U^A)&FMuL%h$6#LWQAFT`1q!aTuNX%Huod;#)pil7`y&46zT`{ z8mC94KH`C8u`=N^A0)vk`(*k`h)g6TrgyhH)MR~_Z7)j-UNOBpCyJ{Z6Zz=3yWL4$ zpXe4HPQ11~oHyKD2)@ri|9&AAGYYN@L3cT%QrEWzi2-k zFZoiwjPL1cxGI=2l-A=|&${~SP)b0pP0Y|IW~0QHV^ZXKk{TC&dRdA&tk7Dp-R2lH z3+*#K){Nclc02)2+Ap8Be-DQb?IdYu4Tbb zi^_SJ?VI06Q7#a9m#O_W17;AoPnc!jE-Nu|d5o1MXJF{Nn0OAvnUCr<1+5H{2^($$ z4m|A(FF|X^elJe-7TI{)&th%YaTsdPPk}!L_`Hb=H!SUkp&+08_s7xgPR7yD<8kyd z#};0)SS(BgAs2N;mIV8Jr4z=or1-`(dv8y?O`wwat%j;Q^uYOS#4d=WS)uUsCBto%LRMc>u#d3B*9CnY8Nx01AHzci z3!A!$OQX?evghIMPVEE2{<3L2Cadk<;d1>x)ARs7`yUX-t>N!)WP(2u1b;^%J;&u! zc|IkEnN)a(jJlnJcy1q2o7TFs9Oi8k_ z%C_On6vpY5TbQtX5cx;=iV-Qc@SlI+Re8lAz8k1V)>wCUWo$*N@CHa7)5coM6hc_A3H^$Bzhn6j(aMZ)a*Hs9y_xB_j>`)5gpPlz57Y`OHH@DK zs%I8FP-~s$P+I^hJhUuLP?z8WbNY40sd6x-R&I!=I-_w^I47A&cm|}*Z8nQ*F;)yF z%vNWJ8XLo(5XTw$7_u-yh2155fP~cW!~;Btihr;jDyk&K4^Q}_Yw&r|fC>uH{q#3P z_u)z^oMILevD&EEa$BFol&Mv-?+$8SM?{9|O!l?PJPR~Z;kQ!tTTqP#$@7@>ZJ$nEqj*lmpH!q)}eYL}tncY#5Y46*q zDx?XRoHVD|l5AqxfJPYQP^)yL$~JD6ZFoc*fv3^Nr2wOZBxmDSy|I4RB;i&3d3LBN zUqF0F-!Z$gbR@kK2Ru>;7y5X}5740o!DD5e6G@pB`fIc~vCOkgRcK2%aA`~G2!8eM z(}X-C&R)ZlhrrNLtZ2oL^EwtU(EC>~CAsEGmV1-{>N^d&?Gc9qZ1NEUbeySP;h;^KD%Oio(E#NtBx zu;X*R)9m4B-d`VzzXnTFun&$N5w?QHhS0~H>v8OK)3pip(2{UFkzTuS?45g^{BtZ* z=YrZcvt;6m!oZ)d^8=QjMbAdI$^9oF!{>JU&Sp*;F!mpJR^rWCT`Jq;l!4LrCB2sJ zL^Wj6D21!35PO~(cwuX^jOi@gX*SluWhKPE6u(E*^qY&ib2YMlESsGJozsQ6H_$m= z(x1-T)F9`o>%2$}Ch&z{oXHDx{#gxP=;EVEp)~v@$pB_mL&WR{Q3tbjjIO;jtF>BJFz-76!9l6#wAG*qXSi5k89TToNvzDR~s{6HFO=}kQnsc$W{z^l&56y zcte$fU-Nh2|I~*f+LS_5Pnfuv_MLm4l&f?T zW-z1~79KiS<2WEL5m3f|aNiU-F~Ce$&XlqOwH~L|fux2TYen2t@r4|RI%~=IY;efF znBFYNx4ODP;1_>6@@$XNZ~Ph=Vkf1&s)`=hytGtcs?M)pd+^oUwx z=C+$TTR;dAiO!skyD3ZI^H**L%PKX5NGh3z8F4VTmxr)fE?@6o&EvwFw0z+oI)@GS}2c<*N# zD~9s@#XOYnNAep#$Ty<27?4D~d&A)M0y`evFMKGF`2r;i36+Wdbn^PAOckttI6MSv z3tPg;EIVq)w2~U<@5P+mqBlAC-B5f>{aev|f8q{K^N+0(=^|dm=4>J?d7>#K@Ep3!Q%pH<;ITG0{zma6?>nGo^@|@_*XE^CcMFPK_+t!W8I3666~hDs=xU%!UCm-5dDP zC5FIrY>uYEwNtYQC0RSH|80l3|LZX12Y9W~9w(4B#%4l_j28?tiv|#%h@SNnW2{Fn zPcX*j=;ay4*etw-NFBXAg?MEa0sU5rv*TnDL~ zSJ}Eu^1W7e?TAmQ;Su7{52^N=7pa|dEYt{K$eu?H4u|AUb2|qdz0sKopupS@3YeaY z`}#(-(DNxcPR~0-=?;#xb+bDq3Ibznik`yJ-p1HGD?#9dlgmh7Z*EbOqt^OB2g)It z|F9MJ?atK}d1co81(7y}doW|Tb|O~y`X~kod++&0ZWs#Gx-s;Gt?w-VQtLX~#~bjp z5w>w7o2?w{)X-2tk$I0aluLX*mCiZ8E2C(IFB|K7g@Evc}p)Dd~#xYCM1w6Q2djc)k)NnfKq7=IBnf^6cp!?LIuO z{*S(DO^?{R^WW&FS@ELKo%cD8KWQhK;xVRYg<7jq&BAS1N$s2%uFDH{*Dm7IsAx}E z!fS?Afcu=72{IK_>dE9A-?WvL_iP;F^i8&RtizlBFD_dVKO$qVQ}HsWX=?QnNhOkI~FU) z7(+cI{gYT(YPh-6RsKIo$YvE~12eQU3L~&He{m=U;o2F@dZdT%qyEsBL@qlRCv9Jw zQ8I+S46kI_Lto~YA!-z0-*l183yrqDDHXe-@t#@PVQ;N%kB2{XgvYn6y0Bbl^!WB@r4YAVG4L6%0=r~WN9tkrV4GVn%unlK%e9Te&`T?r z>S*U0?#Y5Q;YibGRj1=9-09_rUpv2H(li$LG8(3ciJg)dy3sf1hjd3d|Xm7QG^6#E%ElKGOK@F!~l*VOX@hoJlxwn(-4N%|3AdA**^ zV=SMdyQi>Cw?eY_z#=YMr`;Z3uAM({9tI#@ajG;oh%segDgYk_Zd-s#Udohhfij3m zPN3DN*BT~^89Ql(QhBZ9` z%k|ql;a4R+MU&Jrnl=?%?=b4I#CkSNDB(uN3Bto1X)(R`4H3_#-60Vd^0WPHk$C3c zZe*8Q6FBT`;nLtb?ThBbZydt9_HJABEBKC4{7#V8!H1s~EqF7PUNKqU)lS3C5OTPY zJ$R>RIy58Vgk{|elPV$Y!lmJRCf1vuf1awC=Pb=s%+!~&W2d?{nWlP!(w9Vp@Jq0z zRy!SsLxMJOId?}+=-Qix@5%t8=aLa|&?p`Fe+fj6pLO|)_`W0Uh)R-#ooLEa5HtM; zVkuX|A4|6gEcy19`DifHvOr{(|LO3PHoin-a0atr{EvwKNgy0I{knL~J2;$l;n?Yy zPpqFmDk5uxR|u0zsrG|0D8_7=b-E7QO!@Rr=Z}eu39j-VxIpLUgcp;&DYfI05wMj| zn~=g1!m)QgM|*5ATVZW9vvsXNXCF0)qf_Sd6I6!D?9TgNjzmQ8`s~g(SL6C= zzK-w2^}~F9|EsvJ6YqSC>p9|`jz~nCLC@#Y->LNX5&C=6#Cnd~4YX&7qg~b4mn6|2 zZID`rzDp3#s|In7wIq!%L%2kkgBofAL^~6-lj;MVnOqB_vllz8L|jQ{FD;!Os3GJG zm{=c0X?oTkrv`si5GjV>N}Akf<$kSpqzTgdWuP-r`z+9zp{)*dCTY!q&RlJ2pfgol zjLsIJuh-G|e*>La+H--iP&feM+fzE90;XtRV-5=;YN&~&`oJPY58|bf>kY&^b z=&vM^r}Cme+l>oiqZGPc=O~3sBWzb{PY?&b)de8ff%bI&8tPCDA~zLvss>Nyi%d0` z%NM5bBd5TRcd_gZ;v8)tRk^K7`$2llUF(g*W2V2b%b#7fnPB zp+1B40sqQXL;u9DSNIo+83FwIw`?n24Iz(!b+7!Lp@y!*?>X{!k{W`Y*P7ZLwar)P z&5ofQwyK`i;hZ=K>LAq8fvCs!nPihoC)&O+kFakr)4XvnP7cU=)<>{aH<{1;NHW-$`_c}#Rfi(l%jU^HlQ6N& z)=@aU=J~{(3I-s{$z;y@T!0#hMLa-w4{8&N&~M4;NW`@~YQ<>wRe1|$Z5l}5*n(jJ zLdGgRzFk#WVXsr~r64a&8Ra`ron}6;L5P#z+tV6|!;_UB3%F6Qx10ZKjYJ$k;%Ix} zPJr(0jYNBR3i{^RKi1HF>m#9SazoAXYvXEJ9p0Yp12{^cU z6hUBxg}NuEy8kdur1r+{!@A`6e%$wq_abcUqtUCaa7>7mAq^B2-0e6XJIur5+faQ% zISF<)g*=Az`TM#YPJ$O^ZDyxJJv~``fbBs`_y%nI`ZBX?Pg>7u+vYZ8KaH9438XmN zy%hA6X#MFVG8QF5M6Jr@!xFIhTj^c4uEFc39hY{PF92r;ztlgKDP>%0a4%AyWDlDr z^j3t`3rp+tESIqVP+QZ`*7nEQ$$O$Ph-K`ZA{?XVsE7{7@fSDZi`T>#$2n4YR>K6A z+N#q9tcpf>?mD+w=E4n%w=<&ZtJdFa+|1A$SlFuXv5yFXhnFG`d30v%witf zbARgnR1Qbe(wY;8OtXcDYozedFia@rq3>PJByvb&K044%^Zp`HK|LPQ-|0dIIvC}g zQ|4RN$~iWnG|ShF&@KTyoFQQ57ck@4CV8XqKEt>kapQw#UM~7IivtFpEmcFekzmT! zm|)YLQaLNlDoRA;f?9VPWQ~*7V;VvpEYGr)$mGX`^Y$rG8ToJ z*C6!Rw!D-cXd|K&i`2~l!tSJ%WYc{d->}ctjvuztS5HK709_hTu z*J0kfCrNmAIRC4&H`IHOSl0Rqugq*sQ>@tnh~lct7LIQp~kGUYxzqcgxKy3N#sRRv}kuy-2zZi~Tm* zr8t|l`It1@*{$_82JtI9HLk+}#6u#4hGL=AWt2DKDw0^rI)}Y`EkzDACEmes|1pv- zjqwx_U#K2$+>})`h?U~=^e)VEBzDnFJJJ~AL+9YvE9*p*P4O}joO=dtJ|b_%7vVts z#1GJ@8&_BR1G;hPZeB}P%QZ_R6ft7dF+4vF$<883v4doHi3RV+P>ZL3i!uhn|jWDD_!BjPc)uc zKhxTO&@KEPjMJo_j*3T#BjJ^I3-&vtx1>xnveX5W2r0~qX*8A_IOX1g6mUp?5hv_* z&x6(_^Cl?aXGk&PNftpfD%Z#T z(jyb|QO8v@&d2trLB%eAs4b$t+^mbr8Wp~^cl9@0!znbi(g+8OeC?9KB3yiX9GCGZ z_pO~Z##$A}b}(BFeUgNfBQvRN|qnKwg0U+veonkYW`t39R}@4 zb=LerdkbW(qotfb(Uytiq9nMm%-4|oZ`~<#C^`GPb|u|u#HICtcorp1R(&VuRKReo z3Ai4kSLRr+i5y6htWP8ivz|B@OEYS5DoC_>o{(+Lu@+&$?oOr;ysGmSX7C}rQwW{D z6T5FKvS&a02JY|lt40kU+`>WJRd`Us$R1Hc?{(UG@^p`^ODczA4*iKVZ#SNW6YC?x zJ*CJno2MP9=}6V~G!JK*Wei6gRe`U0R*FrE^gBJ)Ej%`TkNHrWSPov+rRqJX&1U6v zOW&SRKf%p09K!0D|i zM+hpyK;2kA4r!-xDfD9nt#o_4Sf|DxsY4Y9Qh!nxprSiLWNxd?&;&8LAT1=~ZJSs|~O5C6}LhhA%mO_ffh8 zQ(cH#{5k9$(g$?15#NYg#z=OoPN8>NM|$J5e;Xs&>UA~U2;X1doR~M&X4xsuRl-!; zq5vBW7w7(j;tLY*>7p^>qRzvh%c2^JC_&Ab)@7NbB8!xM3+1UDiXu1OV z__3c@!duKY*V4_xmhdySjkkgKR+IlSqr@W=stfE$Qvb-FWJVh;OuT!4=xO4ey-bnX zTZ|Fm=yIB#8hpm2JwXYvgSm5Ay#sTv>=){|Cl7azzc04)EgpDZ<@zk^Znt9QCY8u zKGI`Ni-`RFoHikEN3vpF7U`j9Oju3ZKP?jDk3$;DYlsG2PXj|e@JaeOE>$#HM@@k$ z?-WNzM4=m-&oDVFY!Ts9^o6&%hO4y#up&z8j0v23AU{T{&O3~X?%wWDQTWS$jgI~U z8ME^S>=6O)in`$GcoLQuyW{gt=`l|D;!}zL%p31FBxub9$ z(k?Dss%LrOu`|!wl7ZGdjrh=}`UAQHRo)!xabz5NJcSyFryB;6TZ%xkh+20neE#4N zVol#VBVF|VY^FBIJ|g9C*!x(CgL38jQeCix*W3<^)|bxS%9zOP8Fd60 zz5PlyJtC3+JB|@HPuVJ#8}yA)fe6vld_5W>mt4}tB4t>Lq&|4?Llacx-%hG3hEV0DqV%)PV` zYcmGNG~)ZXYKFeX4xecn9bRi>gOmctu7<1d%c@C21?G`gz?X=Da{_fj#(aYC5Nx&3 z{fA&hq+M`-lXTG(qswE=RKWp?9m}qV$fJ9b=R9F7I%9r&kaWIp?xi znm7J%sWGzI@z>DXg654rjOL9NH19T#zInjzK!j+|Jii>$#Vsn8KYvU%NU$ZuQwBP*$zmi5Xw)k<{4y za?o$lx5-iZwq9KTBK9lv?Hh%47?3zbmlHs|(AW@SXMVLw?59tN_wu<+LbuFWekn#OvwMbNB=a2oL#8% z;{hvJd+X_@xwg?JXOoDWg=f7<2%h5$-{o=azf~VaB0}CO8tJD8DON9%Qk`L;eukNb;nRF6BO(APhu!mew1RZRUC?S?6)>gH~wi8tSt)6 z+nfbXU(TnRKM(tmD*<#XH->I4Wbl!yz_kr ziH7}T=O$bHO)BT6yk&iwgd}&0FRg12!MuTc*3?MUZ-V-8*|6$`*7;K#rU=VaYM^tb z8sz+jgC?_o#9tV*4|*AHzPm~s@9+%;8doRj{MR`j6zIIm|1kiF+$lDasmppZHCBVQ zO4KH+qq1r_GI)FBxm1IB@YfqtI8xQ9PJp=7i?TB z&%s;yFwLRDA|s7%dWi{|3z zx`6?(i6fxa+M+k9BRK82TzD^BnM3HnirA22rk2ut znjL&0iD?L{^@C3);IjX$*ur}^a1pogkI8tjka6q+|vUC=~N%vUzq!yE7Mb!xqQ6CmJ!og@T&oi}RmLA-e{kvsFd z_vA^r1qssl8Ay=r>r1hTI2Ft!kPPZhLt9lzZ0O9HSZ`iLP3Zge&2rj&LV|D%jtX;D zQ21fmY!Q&N4b_{sy$2N>a}B{)?wr~Rof;pV7^q1({nq!XPF%hIpg4tgUp(}+FKAw=??sdMz+pD)Z5;Jv2%ixzAv}OCipBwQcZ;pa2ML=4 z7`OH(8;GG6?WQ8ai|XsmYtZt`?@EZl*3A%m&K6rqmoo={o2HBcc$`I`1-R=}ePd{y z=G8axIXnk_I>Q$IDasbMRa92jJApnYqI~*NeUoEo>HkYZixj}j2Qnqia<=bS0B$#t zKH5h^u#axWa<{!B$NjKNj{BbuCRLJ9s?Pf;KE~1Si|2ia??V~!y!?eNMmBf?SBF}Z zs@R)Ni_=%?<9ZrezWxq}2cu>dqyynmYouAXY6A$h%AkurAJeBkhJJ8;jWR)9zt|7v zi-+?*p1rk(Zq37T1<#5TW~)ORh4A>s|I%VCIe#?z)cp4G)F^qAY>Le+*k;8dyG^;G zhTaFlAkmFKo&J<60###uuDOhwE&dbD!WKf21&c%^z>ffP2**+EH?&P=;B$$*C(ahg z+j_r1-ha@0;SZdoqsZfHuMSa+x+~zIUq`BzRR}&~7TN7=tP$<}SGLpK*@G+Jvj|y> z_Sy26bM84+@6chxZ0cmjNY=S+7o8fsobBKCClll+gT*JoOQK#5 zkM;PWXdDB6PZz(z-xeAFw$DblT6QK=)%28?Tx$K3uIEP8Cun@{g^q=*pXiQv`ZfUREcv7W|X z6t~Z51O^vItp6P1A`4<8sMImEIXBHmFO@k#m~^U`l(ZN&7_9X((2x6n&dzhIT>HS3B)d_DlB z#$%-LGRCv7Xml?fVhYX2oWHFW6uJ+M*vjnU2iM`jN8&;7m39GC2I9-@`~sKbZImxu zeaP{YWR>%JE@H-71|0>cW#s`bAC2Ms=Tl%LmD|P|R+Xuk*S*QSfVN61ZG@0J_8tNTQ50+W43ZG9o!c!N& zK>#>YKt>=&g7A$5cH~5elSjq6zwVCC3ypm;AL1FpB|utSJdK=XIOA%#*$%(Tf3tKV z6|fUYOLN>{#~JnP_*&;rcN||@34L#U_gJb@Z+_@bQ=&b8x2tE*7mJ?V(Vj70>fAYN zsDDXpdBXlX%T%?014$^3I8Trk!k-$A6c%sauQhQK~JgbC-=cG7#JQ}E(> z)Ftgx@4V5dR#b^wIG)|WPMs$0cw>AXQCAMgHDpe%FYgn_yJX!fBtA2L;uiA)72XMP z^xg#hGA{{_;|LfR(a&)PLd;S*>>(qL`QJEWM1pesRMly&!AlD$)a&h1uPaLbx>lsNgznyb}#w#VMRm ztC^KS^SGBf@cpFTk2HIs{+N`V8~Xw$Qchp)#G504kVokXyH=oG|Fg}BTjbjJ7(Q$S zqw{$Dx6=Sej@@+(n zZ^b-{NiY2<4MDCi(=_T|iL;)8HKoOx0t^|=&d_B)r74Y!D@`J$q%BVv?AA2Xw?#eV zVhqy0j-C9vSYD{)yn~XaD42;fvH`j^Y}!epxLrqRc6-p&t|$unp#?C@L+!G)7_X z*2ijvkIU?$FD-G2oT1K>MtVXY;9)%;mT?6l=kc@A$NvzIy|Is9iax$XJkF1O{95$! znc{Il?BlnikF)484Z8BM+Ygb#r#HubvpD*2OOuON59i$vd-OMYWIYSI5eYA`eUeq) zYmA}wKM9ich|3Pqd9Xc09M_xYVukg3M9)?^q(J`+`oW7X7VNKY07?T2wFz(X0#Ijb zze;fY zSD#}il-kHawM0)kZWmJJP5hR&(MWg!KfmfNvTGfSSVRyo`g+zk^+sPoTqs}vJbaFrTRu;Wa5xjQ3CbpSfY#IRcJVt1KEj8UN70_Gdl>ZD&R4a_ z9_2WUa(Va-TfmiOA8Rs zCF1j4%V_Auqi`m?zy2|GZ8>yaj7I-B`ilQsXagy%-7pO3K2tx$Skh302WMy46WjKA zX#03)fxnMEc`hIOze7noJJ0QkWLEJ$`!LOs>uI_gO*ez)Hbsxg!e_vTp5RQoA#*2@ zsxM-~mTB3%MhR|9Jp4E34+x(O{if`NL-UeHbKR!{cj@Qp?E@3>W=RKp-}it&*;w-h zjOKV>cM3tERA_N{1#FA7rcbJ3jloBVu%6m2^5^9n39kXG5;Mh;cXe^tb^!@c`92!j zT>}j4oq_;C!mA_R;ygx57d5A!r;H3NPw?%p`pK9OgZqr}UcEbf4CWxPc6KkYs~67m z?NaMf*~B8C?LSK(wleaty*t($unG{4xEk<2?)27qjC#^unj(X z-8zC~)mef6MZ)LSbB+W^ej}K^CC-ngP@vgeAP%Hw61t5j;=}>k*}6Eb&+Y1#zFE{T zI=^N{hN8WCSaX*=7)`klemPK5LlQQrr2~#;vF>_BgH>QMiA&e@lQE{d`|$>tz#>mc zCL|!OPjh0XEe6vgCXbpIB>fs(2R@1DZ5I(1jaTQrtU`sRUIOjZSmseM*HDK~9>qKR zdRTNOQV+;bOM;VcdreKk49v`dWA(r zCm1mizf#Z{92YT$@^ZIoy^P!fxm!4YnX|Np8_O3?omf9y=gaxMYdQ+Feei|vtm!z7 zbRO8%bD8fOz!3D>4%;7t)P`ep?HLvJ{|6J@i^@+MZ4is6xPoP!P@;nKJR@p|{RBpd zB8YH>@j43_ty*StBJS~1v4ZZJ?TpE#zR%U*tV~QEcVgbi-VS(uT|YwSD}tHk7HFHP z2E*XZ9H59(yizR|1&uPi=91dp^7}F3V=2L3(0mrr4=C zx~K;CCD`ky$bDjcE^VK-&IQ|Xn&8ptQO2%@j;4hYnfDP>Rh;I}v_jBNaZfv{I1S|$ zKnToZ(wSNQV1F6pI``DGytu{m}$dePUcZL!Xju)9*AkM%zx z_c(~v2Fh`sgg=0f!kPm3i-46@H~YqIW=enaJ8} z@qfg;$SCJZUR#o4cV=_qkg2v!ztmoBrL>W0ed1vIP8E@!swnB<@fwxmfH$i!;_;Or zm8Yh%d1__sS?LU0rgp(4#$qEa{VAoXN<;Z~Vh=S-8>{p5`#VwqTI2zkqh4*Zz zCp2Jmc(L4-#R44tKb?S6_r^i?g<)?Z3x1Wi${30jDr^a-kMxmfTzx(v+<8XA6U}A6 zJak}-z;X>iZ&~*>*N3sWUH8z!hU%S$HD|X(*_sctOkE3fEG_vgE{nZ@r`P* zjG8OHUJVBE_ewSRPyE%?pq?RSvR&luONqi-DDprvv+Z@55euRu*;!IdQV@s^YiB#3 zv$P(B90_{B=ald1L$@93P>Xm3{Ngjfp-*8RE&C+YA*RJ?X}1KL zZnfzt9NpMH_7anjJe{MX?1ui5mW_nH!;@hjLW9=YwrD<4$T!T12ELxciFTwNIUS!G z-Q5v=#bLSCFOT#j@S)>Ho#|sc`0NFtW}DWgC9Qw_gqB!hO5nLV0fo zM!_N)B&WMHaxwg#2WUZB=+`We7MCO~vPv;0C5q)R4pNc~ZBrPw*L#aH|j~jJ|CT;>=^xkaPIaR@NvO#PoMMZz3DSFMOAv@KzBIip7=*HC10# z*g|Bjl$2%Ej2r3uwi*fY%l_Ez;j&+1`#fNZ?Xy^JpKoU^GA1+j!OYA`(OFfrfm#m; zJ0k{$?Vq6reTlXWrRIwadEDhwQRI8d4}-bzrzS0aSL7H|J;o(j_Lyp`NU^OF;{pxW zIi_i_d3_}eKGM|;U%r9Z>dGv5$+QEI0Wp2!c%qv}g-;`#$V6uSCVzjC{EA~##c7A? z9jJ!3nP-KE{%ueJw?F1mtbqrlpD-2?_>{@{G_EQdS7xmMcZQvt4se@By7sfFi8#?` z{Tzw#s)!w7ugW^LE&xSOtjzjwT0Pd~Jj9s(v2`h2B^Jf?qga$CXHnjB7DZCEf6t&r z`P#a>hx9J`8$G3?mDHeq&j$yR92euQS0*m_ajf z4qb;XvOy6FTcZ3EA6|q&7rY3kR0`y(FTfMs?7JY2`ypV~8@%#l8iMaL64_E9vW1g; zOSDvd=}34?{QLE^20o%wnc%2=@kvam%ZbidM9*z`%1t2XM z!ieqiVC#SyJPHtN;y3&mNbSzH=lDB97E*UZJKwLYiEK65FATDsSc{bll0 zI|}u*hOo(K{wP;*fmTXmMWo<3DMS3W$d~YZtjK5W+sW!)DXsO8@KT8}eL$G39U!Ur z%`}Lnm{Js{rTdm@$%U=f_r!6;vBee~HD#ve7;|ERqAFx2R@`pc4Skmfc5wnmb`gz?$K+e0E?gqU=vxX?(u&kI zfgfB}xd>X}!B|M~CzkojZoxtR46U&{d|Z9Z$_QyYSH6*rH)yR+xtDp2l?VsqxdYT- z7bcL+FkL&p;+ROy!Bp)81pK;JBpj1B(tZ>u+43c5QD`o`udf}@{VvvGz((JfRmmSH zxZK2t1&On|HUNn}*7}kD{4NmK+70tHb5i|d-3^{*Jx53%=!jQCI7n+{`FBmmqX(Oa+4FcvK#RI;w5 z_i3$0?Z9Uamm|fcfZE4Sf+;`nNyNHLjDk&!Xa_Pd7w#hDTOZW`kEHz#IODgpzaMW* zRbp*jP%^CEh#?{fVSdeQq{V+U)APZ#qg;&cupTzHyQb=x?$flh(ELqkUdGH)tAovX zk3tEjP6qpr<$mX9rPOqstEJX-oS=rz?nZQxCvPM_vIYtV#NXSa^A)BY7)3rHa2>`4 z|2{iv>b4HhR}nWxW<6~=BzaNnJ`w3rk&g^BCfI-c6Xr@?{sf0p2|^eY%}r>=EHC&U zS2Q?mph$MRwr%Z__Tx`jYx67~NB`GT1!F`uUs>{Fi-TaIS%0c+T93A0ZDPK*VJs>3 zDDJPG!%fvUn7iMKM8e1nc0B*vFREVG}Cre+(U#12hqJX1r1#Wku#E6J(ydBEGGi zWWStaHf6?y*Sz=CVc|9WbuE2uKKnF$Dp61jWl#+535peWjg1Axnfe}c`*~Yi6buqGAPv8dU_$A1!vULewUbFQnVTF7B z2YQFo;2QBn!83~ZthE|?gzm$~bD|K0#wTDq-%U5gA#OD|gRXV)VYYPUd?lSZw4DFq z=C!5Pr9Vi*bOLENRy)yMCvUdd=N&G5r8XR*(UvyiU*Cqil4ah==EOsC$C~cbli8K+ zKg-~?53SQS+U3YUi|%Y3z*((GHBzRXv`+dSwh01U&TBlR>48pn16h^eup z8+aG)3k7hqy%#iuMT%n#Q-g(xj0GjAhpj}9Z4Lu`pBbA8VmgjJC?eo&7;Fm1Pw$O( zo>f>Z9Tr%E!xj~W7$aK}K7_l$j_%_~^b#x_&F?>Pta+5h34abv>=i}Wglfh2)G&&G z)0B!?dJ*FVO*dZTCxxv}%LTD5A20m+3GTux6r=1-#*ihGd$AnOJ!%!kgf{^{weWY% zs9R3`Ek^qIwQNQ$rI|kNikT_W4?5$S4xweTcd!%*gg_t1AR7WBK=u?-MF90yNqiqt zKal=`U4>t$z`-}~IP^9yDU(;4Q_D~AjQ?V{52I8-;=E2PW3rgyu{qRIk4Un33?G2iuKz9*KbJJzeOj*g2Mr!nFQx^j!qY z0#eHV3rI{x-3P5t&ADls+Xie9hq27nx20nB&Y(8TZxBx_`|M@pvJ;YMZ#_8vWX@Mm z3edfJQ$J-?k>)K{7c_S<8zeM1$q*>Us4nmi@49c~MJ=O6E$m_@F%G^{UF<1(VaH=> z4m#4$Z|UdkkFdRE+zLeA!L%Auqq%=CG#bBqG|zIYl}(T8MJZk+T)^9Lk%$xiplNz% zIN7xy5hy1_;}=l}VU{JmYa>LH8zqxDpm zFf5&Mw{$gCe~Kx6e3*mjsJq$0v|ToKYZvPpj?%>&#o77^wF?DpAS9em5@wWK?!@dL z<@d0^Kp@fjos&c*?)8d8Vz5s@*lLDN&`vjmqhFXa7YN{?D(*riYPw92^up796w4C0 zfJ1DVxTS!9wo>wCNlkzG`=^5{#sQqHAE+S4c@1Bvi`~WN=}dy#edeBautR> z!pWt^S%m_?nI|etX(j$=)Jpt^had`W+sOSue40}3f5uoKUaIgG4<|Lhn>SLiqTX{g z>L9N?HAlMA7E8E7C}gw%yp%J`J@t)AJ&CqWhm%vXOaak zRPXsqVl;2;O>~Eg519E$qIApOUD8XS9~9B*7lB?aGX`<+_fBn$=xI@`D63pzi?V!M zJJ~L-K(g%5i7~S5?uTM!S(M>Q(sRd6l@>CgFk&`5V@a71?C|JZL7Dyz?gF6@4%b%p zkwW%u*Z{S~%>lrdds~;Ks6n7~;NujXp980G!#uY&Q@o5j9c-M;G(k5|A)|6H@%oN@ z^=>HEh3jnm-S$^vVryk92rFs4W-64twbHI8gP!fUJDGJiONu)gLb4GR>kA|1k^}~G z5C?|jD}$s&bdr>aa;31BErmU|5cbs24UmV-M-rrXCW;}Eh{kz616$ji$%c-CJhsh6 zz0w>5TT|4~P#Ae##>EM6&K{LcKQ7M?bOI+}ge@7z%ca&mnar#Dag?`Lc{5}A`^93} zYarOW`oq2maMmzH06-l7uurt9L8Ck3RK+wZpxe$a`E z76&!1e=H^Dv@#Nr$P2Dr_YoJhgQ> z-7KP;&(crO6mB}yd!!FSBjLkqyGWh4F%h})hKdst1zvN_B_fXXxSzT?#PHoj zC7KU@1T8@QMFH&XVF;jlYg9Mhy^!9$kRbVe?Hw*rfyT8@=f6aK^9StJ-B29^2Wd<< zrNM8Pjp*(t?<6#8;&h%nUr19LVOT?tw*X4b%7o$-rE!XE?k9HG(c1<$WnNF;TAePA zYr%BZ#=++`6vARbIALPFzDeIdc6x91tFMYSD?GcV{ZJL#Jtl2D-#$~K7IkaUka zZ1IB$#20{Z2h-KyV%o&D!+%DA%H8k4XMeDl8d?A>nIIOh?yFQq0Jd3g*GtfcZ;!el z4F5;sYDw3K;pOuR#O{D=ALi6KG6pAbo2Nc{_%{W(ebTzKi#NbWd8(i=&-iA5r&?<;^!7ORIY|f#$AD9-?dx<=6NF@?a4!Lrd6h97{1Sy7tBI zCCIg(2gZ2pAR8&fDw zD5W1r0f~7Y5t|1yMEd2!VoX9BoE&&~2|ax8+(I^JjsDl=QKVqewdrSW>gogR8VPp& zY*UtSR=qJIKhPfW_cktJKh}5j%(u~R6*l45=XjGnZ>#7kFoP&dZ|j4ffv@-Ih&uwgj9I@$TWxar z^g-J}@ybUCD67H0z&V>iiN!*fjaWoJv~9lfqWnr1UpafpKHJ7)v{J;9y!WeHy=gy8 zoMI&*Dd*AdwffUP&ysZg5DRxE<4=W+G1g~Ywv4X^&)kP=p@yBZ&k+xT$MUsM5ngXY z8p(a^P|Jty3V_`38tJY}oejG0=V;k*VPpp%=Zv3+1?s%;c7oD?t3Z3V8a%@#xXY=q zv?b8pfxH7_7ieuGOIV{pdy(Z%Y;#%nrrAz>_oSb8efNdxyzgL{!;#`;;Z&l5ZC|;% zr=L<=Hniu5db7S~K)bz|*U`tmW!mT1#G|Zf2N>o!U1`=f#84sk&%YsGvdP^{yv_FX z_Dqsnmd0P+j4!P!Y`7R)TJWmP2d-!n!8B8E>cfJLIN&G%kkQ80=k-4e8q6S~U4-%- z@b{G$vT>ytIAqM=sIHr$QC%?Zj_VQCWqwI8w=>FfvZ9-^LQT`txm_Q1a90|yHzSTA zQXh5Jv!Zd>z~;C144T->yUxaEqAO1y60YJGXY>&(Yn_CXQ7bbUYgvYJnemB?r_@X8 zmp0{#(mbn(koLVZXpYu%o$S*3-+tzCsNE2g&o{TVS5&j|%#YQqoT%m{fKZHku0Ga3 zcT$W~O4P5>H<)7|iS)>o+hQ(uQr$#P!md(cPr|l5kQx(@V`Q_LWSw@A@D;JOfIW;M z)Xrg9onvy$n+<}dsA;L)#8o1YkJo*la8_MRC>5T~XFsfSB3yHGg6zUpXw!!GR>XlH zG`gr4?w!4hJwH>U2Z7)g5T470P2mu9Uypnu`XtPPxw9Ttxxp{94QjP0eQI2iqH~hL z9P{mYNYBhSkxy|%N^GlEff(Nx5)s04#JO92nNu$IRu<`gwoRecSJhT|k73JMjy&DA zqHM@9iY&rpF04nP7nnIhEn1m*;6Jvrou{8T&bhL?B!yny3uo7gy3W@ujJDx_-$@s} zb8a+s(Liy~_?)^F=2-E(ym)E*OU}_`Ezz6%qSX)q8n;39gZ5O z0LLFSfz*!L5@^5bjsb!0!J0SFeU)~+a~xrXi!GgET}hKcKnuz8wk050JT||&H&qGz zn4pF(j2AaLb|)#bKLP~pbNV(U27DeU@y;WB4tyRN_#je(7@2{0A0&|+cZ~Y+E{0?f zi8TUYgc9m6aP$Gnp*$ySJq)|QpY6tJjuy3UM>lf1s-f3lqUz2Qr4It#scI0VyAMko zJvqT)%UMN>msx@Onmuxe|Dh@ys2>A{XL!~T!e zk}IZV&=Qu*Tt!%`?{PkUDPq=*c{nl%$!9S}_$J%*{*}(9#DnK{I~8x#&>3*U4C0XS zo&FPL-hECpvPumhDkz#`Ka|Apz5)j?0UM|B^?mckdCx*w>^p>SQ-s&8{BZOiGco5AHwe4ZK{!ZrX=FzBp6?l#dl^I7huo@$4zk3PK$SPib>i>uV&@;JwYrMYW9sM!zx z5qcSqyRK7%-^8&2BnMDK8GC)QH(z}#VIW|=c1?H0RmRCtyu?j&)O$|D8=WK;6%gLA zsy}!l#}v^wWm#w8qvPoYueVVq${#*HUv84|ap0tdO*K^sXVIqpLgv^(Gx10SM^yUu zZApst9_;nCqfmEVoy&Yz6F!OKgzqH*hS1sx1Z$#&8{8s?)%DNQm$QW}$Q-S62FDy* z=&cQUA62A34aH|sYq64x3DhkYF=Sjg+mNr(p#L^qIIo|EVk2(D58fx-m)bAYojY1m z&Gg9G{+-P+t|9pU98?g#A#Rp>y>(6+R}QK^v9=Uo%X2LaC)Df9%jc&dx-7BgV5&cP zOsHwr4iZtK-KycE{y?9`FZ=7B9h)?@6anu!uBEibIpIDN>*tS&IK8Hf(M^5%1$TxG zdN{yT=e^j$3+o-DzEzQRR*{=2ZRmjx7Vel_l-$p6i1K4{vAbwyi~KvCGCgd~D64pXSCYb`*N8 zz#+Ia3E<|jcSR!XU=eo1`<$<8FU5fJtx;We4pPDA^cDJ7`ubmTx66BQw=Bus{(MC4 zcJATaZTXO2a<{G{a5p=<#tknC-u5Kc(9OJU)&Kvz%?XI*^JB5h4QX@gja+_Ab5D}Y zt;3M}_5#V=a;+W&+s@DUf8uQ~IlS$K7~W=_c{p!-+my*iwS6*3^Tyy_fJSyv?p|Az7O&9YbjQHk_!I;ZbU+gZ-<_ z+Iq0O-91>__IR7MZI5AX8*JA0smY?xo;ZCpS8m%Q!g=HKUS8(0k`2&3BS9sgKGygBVP0J3u|3IHd;B6<)JR)zKa75m=L0>kOc-w?O%G>@{_e-p=ylv=)|>Hy?uJm!%O>R1=v5f(r2$&tKSjiOMxbV74$n(^%Zy91Y|Fzf zrK0O_K)e`kq5X%|^G2(bn+c~0*dW$0lDOz@45f+wH7^B`To!TjEjMo2b=gNBR+s%O z&VzCvHBioe%L8=vd-d5*XwHN%Fz-1G+5N0=MTJn?CD3`S8Vq1)Hx3d*b00pmMRB0t zu|snfu3U_*frqxF%E#-5S|(!MP)X#7>$W6zaKROs!~l-#__# zSBVgt4d&iMBDEhL)|(f_i8VuXka@4a$HJY9={!7}B?g>fG_RnBtlDl-n~3o-;c-!` zhTE3;6{nBmU7BN#y^D*`=h%I1bBVqnFqkJ}FVoxq{kWU9(_e7eSw+pS>Sq5Sqex8; z6cN(Eh38}{7Lw2X#yh9toxSMg`Wj5ud`F8;3_UHU+u;S=Kv?8a4L>Mz#|gh&oEj{F zSk`{DdOywy)RrmIOc*~Ri->ue2-Gc#tL|-jE=$D`u?=<|aE#!^nK*t;P$)3{U)lDj z8qjEPpsTT-nzsN4q>2h#NO&p;r`6kc2H0X#a~m<^Wij9SmQ`)^EmP}G7GiS&OIw`G zkb~Gz7PADYy=R@=Ff8RtE;k!`mwq=?(Jw<$-%c2RQnHknK2~fe&npn`n``hdNK+J3 znmZgv20x71@-bM#`*GaOk;r>}`74!N?pwptx(%GHq&qN|x%IwbgHzE;#Mqxy6x6@0~z1Qj44*L5V{oPJ~5j6FU ztaa|v`U1I;-O?DuCSj5+zmdoZfxBVwdSPrl_C}U87_k~NrcRK?WR`nnTmCUz|9eRS ze0?pz#LjFr_(CG0=?=ja*V#uaRTrcp0HgCLHF!LNE>OE0?=~l*6&(Kx=WuLbV^iFq}(!-FP)_bL=nUyM@f zi!i>|%~6|rq4$eq*x4`{b~adso#o50vpgAg=8Ef2DLVKdb5W1U);5|g6Kl?nAYLMTam@oWDXO|6C z{OO}=v(B2Ia8|I%znkOmifupC3Rhdrxr#sAg3VXtoNMMZcW(&%zyC3!GoF?t$DGvS zL`sL(!)h+*$^A`Bw!}Ab=BUKA65A|4=on{>Z;r##p3hTAP=lwz$$QV7G!eI?H z)nFRUgl>DxWw)o;zV1srHN}~<6x(^yN2|flv30UNyqwx`fljv?Y~nrn<_CZP;2r2p zqxDr#6oHo-R))iA(aMRmAg|XR*@Ix7x;>=_@ND0RF$iEJ*r+i8oxM7f17LqV6pboe zJe-qJv#OdWx{b$OFm#GV~=FB21WP1x9V1c!=>TLk&K} z@2%qZ($&!W&U-jbYjt!Yzc_)aL6KYPPppc{^%3W^)OpBS>{<)bwPj|ih~BmC?x8b- zmhG{2iC7nIpHERf+zCF-FQ+W0?(`|o%T=aOL4UJ8(a+F?L7mv zqJdrJ=8p;G&vZWKGnc5W8tBXwb#Mcn)6~%NL-q^snMD$nkPI@bo$U42PLVZHcJKdB z^AV!DMP=T6Em=3s+esOTxY4-vWQW}&ytLLo5yE#fsb*Fm zns?#4!A)lE4w8sXXJCA&^QMl7!0Wxd&IGe`=LHBj*7^KGFE#iKzo4q2pPadK#`t{b za6_>vL##Ut! zVx*xJ^xGQUCC?;t=njMB2&eq);I>EZw2^2y@RZqd9_eg@Nf8|)GD^U{s4y#wa-Uyr zW+&_?b@CA_#qPT~wo+`A%R6CqpWPfAW)~#}=A+lJWFQNcP4W2JW=#=civzlKj=?hz z{v(A&-l!AtiGN1p1J6DZCduEw79Tk4-_R^cT+S16WLtQ_qCAXd1j01-vfS(W!Q5r-)b#ZP2CkGlDMSzn@m}|sKoOxuaVl$@7 ztfFyVuU1Ox@fNm?UD8lCkD+u-b0V%{`$UJ^3K2(V7XWeU$f35%IB&lHZKE`Ywtj*3 zz1^b!zqG1XBdOVr`XmJOo93stV)x)N+6dRyA_p53$0Ti}q_cByc4gp*GPYGgBBrjt zxglN5#X3DAWA^efvmM6}4EmF>ZRJN~ezpY02Kn7n^qtivrMVVEqnRF?vh}yN{kv;pXmKwEP|r_6>>x;bH-V6xtj% z5V9Ev>$IuA1B4d_WjexWOV9zr@4|rbWLJuS!O~Gjg2BQC&idcf0|qxbFxY!b4;ajG z&Ulr1Jz}zx%8beiQgU*BYb!{QY%Y*zU1;0e0YG z-&(b9Aw3#F7x%zchVNu}+K4P;1Y40$50JXBZ+jXJ33yPMd#k-RzDZ^NR9LZnl@(fs zG$EL$WM?{9sRsXvmw$Uv`WEyg=HhUV`PcJOoga2w3SNKxXPolYX4c|Nby<&W;GCpq z;6;4A|L>R}XM>j$_N}eHN?&W`Mp&fcHQO?udBFyA*`yvzHded?$DFyEgnTrcKZiub zM6s6Ws+4OlPeh*YVcbplU+RMQ=@#|z4*jwDs;n(sSq3A#y}G}F^>TGx1EZ^(*JE`n zv#5!JF>2jD3BP~u7ssC2zJW)0F2GfpC38vLG@BN2(6%&IW_H>O2w#A&@<@w#?NKm7 z2;Qj%AN>7Ay!g~3apc9C>u+&NXDoT z1GH|5M1Am&0>&?j1EWFj0!92sm-FOh!%9N7#=+B~c?~Z+npU!m4G{hjM#(T-Mf_Rz z8BTwik^6-Z1j|8f?{fmTX`ol1gvuJTKSH+w#}FW)i$z8Yed|K&d@q+fr{ z5ry;%uK67yz2KT73+aLP`FQJ8ZHm0QU7IMcE>VLc+|C<+QG-)RUR`wb8COJ&)n#lr zKLM~CIZPTj^qA@&N8sZHc=^@~5*72xqDaEyjae(Xz67`ObGO`8>wZTipJD)c_l+f z*)QQF5u@*qX^Je!S&1y3YA}QTm}d>lR?O!~S`3uP%D|tc;qzhBY%mu)SEbHXnHXAx z@ekC%!yjQAh!>ukYhT&^deR|w+V|{@O9I(fEHC#mvInyVL=8SpqiW!zu{eKQvYioF z4bJ5}7sgQjpw-{c$mI`O{BC;BRSM88Bu;6jPs(=0h}TQ$pT6%V$!zJ@rz$-|w$Iny z1@NHI_FH=;aLXwuD09ctUr+{+hBEwSWwo%iRusl4sIBl$(ks0Ah8vK<;=i8I13FSD zj4Rw}WMe&`&7PVFySqOlRt7ZxHw9co^AO-da)ooB3{7D9{2#o)d*se)O&q?5-T1qb z>AQ!_B(~P9Pqs~S<&#KIk*at7LKov%U!nkgh$j>+WE!FdZ^(cR(KNmVuic*}teNJc zf3?q?K3MM(fj&3j?C!iLT_W;tF1kGD8>c{NnJyYMN+DDfo6SEaiQF&R&-$|F#HP7& zmF*xtcLU4cgf6e9z#7Sc4v|>7{5jm0anx!M<}_?OIOrXt`41Nh_xukEtd0u_NXcs5 z*NUUudH5KHZ>hTABgQZs?6s4-c*A%v+J_aiy%EbjbQ`F$!(=Zk`9@BP0@gx|` zLa${g&e^QcS42caj-bkvo+xD7eh2^+-17jsD5~&QsQ0YtCHxibFR`OLRH;h)=C>S} z;SmEnf$f_g$3^X%AH+%f=9_VRhE?C(oR}eL9dVqJAB9og&8GewHCT^)lf_>1qY@g` zvOs%ZH8>O}GuwNs!2;yOl+iBv0z($D@ir1$FRoYgeA{v9j@@t06s&ubHgI-l%L5qL z;tbdj*Q7BJYjNkz48FcE67eU#hg(KT-aKB^b7(f7;FYB*_~_x3Xm)^C_)cH`R5bj8 zc*@6B?o9!1&hCuo11q0p;@$VT%Xof1F$;HU-F)ZYxbqUfGc%Lh_!sW{GaGlF@I(h% z&0p<0+Rpc*2K`4dG>staS9vt5eqyyA=hgBLhz5k6LSU#30F~{6x$rlbJFn#v;{6I& zu^{m8&4d(8B87h}MxMvQnP*oLF}mSzBsM?}ps_ze`y@^568vWqi}V=wZVY8he5+RB zByb)f3jzMJ=wH4ulozqpf1J!D>6oT5ue5V{xD`0xhBK9tWCbr^vz|@bIccDfqnLxm zGA>SR2bpNvo0%fg!@TPPB>MfY=^vD;=$pdN=^L!=uu`9YN3?>M!Kotb6BOqV*ku~F zM{kHt!xp-?ml9)W(l=X4h~d~zv~%cco|hVWAkL8tiB`nfdwzmvyvda*1e9U?lU0ONfH!naLIlH zO<61}n)@ffT+c%GPVJ=MRxST^d?xm^QL<78Av;TDYDuTW4xhDanZS6i%Z`I%& z`VlGj7=swyNnZbg_)Wc#D0p^nzCc_evpJQZCJI{BkqjUZuGS z>2W;HTK&k;4 ztWZ0*JJ6S;SSN_3os{_nQRM4ydB7xo@7gm zl}c1%v{oJ9GvVwzQiJa>6Y8s_20DAIp?7HKo0D3QM?`q{H(Bp?N_!;hL*`5x+Gj$? zX-+J#smXJ#h{N3dcOj*;91!UXSrDXEY{b^2?IML*^U}8n(>8rhx_`-PiDdW3JB&TA zs2)m3wbz_`h2uLM=P z2KcOtA`z<}=T{GKE$BSU{5k66tJ;>RSkq(jmu0fcQRgT|_ z014|uhD%|SdBG)M2r+R#O`DPq3rPyJ_YxT&1MSI#dvK++s|0Pti2gs)-UK{~D(fGv zPCB6z0u>;EpaG+{3KEehD1i>fBtVo15h9|*ZA4^7R7R=+WoztiO{HvU6?YwtxQ;lY z2=%+P` zBAEP@GW!`{g7D4J1MEw0OE$r_-K&iM-SLuxO`m{ zEdM(TcvY;6d5Dhpz(vAoUs=0#lX>R*O!zXBrPHq@b)Z`BffN7HEo+GypQp}!o=@7h z5a*(Gl}@w4NrzxQ3~gYF8o2ckZ0i@a#elF5=7#suEfYdD2qRp8#mDb~&eJZLN3}2R zLNq06?2X5XD}DG8f;Ds1wJ!Vq_-T2Lt+wmbb}RCdBhquL;AA6e-Q&dJ(Qm-l2JVMA zbrRrTT$VR0!(RedH$}U^jIh@8|K=@ci{0N;X9~~dp15Vs8FF&0upg!*UD4SYeE*at z?Ea$7z<<`2$v8^M1(Fj{5~6>RhMSj+r*-}7pKK%QDXy+kgJImY{?yBuu%|z;1PC^r z>h+993`{Y9Q$rJwuXu(DI;i1VRZu zgy)OS&QPNF124@v`ps$#{qbY$xQ=LH!JYIWI`vp0(9N`C2~YNkA|qxnxB?l6Q^FF6 z7SW0Ov2+^@<_ZJ#>gha&U;-;XOZE zFXDYj_jh^!>91W|$NC3g8<&7QkEQGb`-#Z1BkZuXm@S`TMS`@#%lc+zDcUP1RDEub zq`Ly=TRygGp#9-^;sPk2CzbXK;;jfI;V8@FyKBtVS#1@L8(`t$I~EZx9*On68`c7& zUFgc9gD1NA^RPqzILNm8ReFxJH8itV0_+GMyuF_z2`s@{MEEkjzGC;hii!3i^3Ez4N&@5;r_Sd(5$iXZ#Ax_+g?8(cwD@ zRSk_xQ*&Wmc4&PxlfyU((9h!;@@6EI0uf-rxu(-L1Pfk9Jy}9IlsP4qosAkup?)U` zkaJ2bC88Qw(h*!g#7G)a6SSfwa8RL_5BP@O7PhFcmZ<(XMm zyF}m@#BCR*B+0k*a^@S+)o2zv4FeS+01!<7V-26tXYf+p38f4> zOHrF|u;Qynov>&j1h*e6bo4YeFp8&V4zFAnHPDG)W5Do7bJgIvd#r`bQUiMtC+8ua zkPpFkFV01m{(2)VP~^mpK3Upo@}f6ki{+{)Yn{roK#UL`QXQ2VTe2`B*i5H$%f;QDF`4d)$+wu;W!%VobT72yoOC!FvpYqhe(sZFx4qg;vT6p<7v`iVFizVO+hLnrDpwstUcPh|&aUg-#1=Pd5 zF}e{Hne8X0D=cveluAhYA4IGdtJn~~UnM4}91`T6129Nvm5AA0!v`U@3|_MLRO|K{ z!JFA~nZ>AB!3XVydz}`pO{9!3mW-6;@m!SUi=P7g@QP(z#Z&pu->FxpqgOSuS8qW> z`B{6W%Ymw6cED*h04dM>_|tSHG09ZJgx?wHUI);@bxEE355cT6VhN z^0MEt4BfR0)VXgnCOcgX+#44*r@2vj4e}&w$Pr zyOzW`vJ`XY3$)MPKB%Ja??usUwi?*H2OWQnnVt4(;PXAw zJhTI4i1uv}e91ivi17nhu#NfoZLQk`HkgeQ00ua4q%QvtFXDgmqZX(h|Dw0DMQXZs zo&RVXHTV*VB<9qP+0ygLT)8$~5tAS4u@QeVFrSyhW?7kuo+a@>K}brLcFuBzZiB8aAoMyP`J&A` z7z$VjL@+>g?id!(#GMA$H78_}PjMLk>_d$Ms71d8f^*@5- ze|{z}``5o&${98A(NWIGl)D@m|3{Q0;Z7@*B7E?C`e1hYmb>*L7lxpx4U;EL!AyML zA-+%hO#*{|aV^YP)qq=E)7k@guXl=|%|b~<|n{P~O3jrMBLq?hOtriRtO zF&I1c;e`z%v`hUZY!9LJ_Ltz8U%59wc6I}jLe+6S7Y{VQ9i;Ly&)n7n=*YVTYHz`= z&1;;G2ix4D7bK=6a|_FOz+ckmX9lWeSvbA;%F_8=%*V3xaiq>W(b`zO)eI4%J_+?n zdygN$*LhDT;SW8~dIk?_=NMtA-3ErM>95wse6L8Xf*M#r3s*TGZv+>Q^0j++XlMAFy;?7S^WW6q3x_R0{z)LRyMDG3 z7Hr~#8-C^q=A>&TJ;ZPX)Cd1T1te+9F%LZ zq#1zB`}{d#^zc#(4c*H=2WfT++Y8DcDIa=?y5+D-9*2P{;1y!MbdCLR2Xvd6r-z zNdh!?4sCmq2=n@dCyLH@ZKajD`m_wItB+pRR*7B*&B7s!>{fa;kE}?ZbTzON4oG6+ zh4(nkS=}?xV9N!V-Ns&k=#wxG*uH{wMZrt(a^9u!WLNXE(6I~4dDnHs^X@^^g)I1( zmDwEIC6FSITx@Y{=j}>h!DD|DpnWIw;tzJsAik9S%WU_jx1lN(XNM`Qtq9F6zQm5(Ok!H}DoQZlyo}%#hY$!EGyoxk`YmRMwdFW1{IA&W<+v)Y#Ow2i zeQuH$+%RkDm3noa)$wxbxOGulni;wX4c+L?G&lCjQ0BufO>*c0J$1c-`c;E4p+fO8 zE3biXo2hVDnR7~*_Qh-5RgPwTNM7_e$U%pCQi&hf8SPZ0U!gum=N^gM#>y9yG!hyD z1M^%@G7AyCL1c1+N6I{$3b479X36LVQ^x3~*eUpt9XHtg$m)UrKlqV5T2#t188QQ5 zK|%fomgUV(Pqwq6_TMLV*vuT1ZUqv(7e_AkA^r|R$`A;KHr$(YZb|pq$%)Ql{ z&HPqe6GDWGrH2M0dAhV*Xb=dlr`Hj#}uonDDEC4QT?UeVS&S5Ip$6O}UGexg+rgQpK2?YWWKD!{DlD9uoY1vk$c;A7@S zxwpObWi5S)ZKt+5Nux5hW{tf zcfH14D_d6e2+e70t*Kc(Krn?B*K=eXz80+-b=112IacslRuz$)6Nm5ZDTWW*&Xd^o z9{XQ0D%=xeT|$%N^}`Y|b=p=^3lsJI!N%FYT0_PCToVSi6AE>lM@CM#HaHY;`xMsD zxuj_+n}*L@&=Nl>>wE41vTA&7JOWc^p$&Td% z=W!*od-(=tXlJJVGm6+Q% zu)uqvJkv0*qGnQM>*A+8PC1JMqQQ+b(}u;X+||@hbt*N3rVLy`ceztv#*tRW1lP>+ zgmT&@-RWqZg`xhQEuED_lrvg~F&ybEDEeMylsS7AjCqo&hHju#e`AgrES6s-s~#`SiIlR!j?i=7 zx5;?ayy6_nd$K$e6+C-C7Pf?_6zH)JC9TuwXxDw>?079FTP8dfMb&dzbP{1nY^!za zFolJI|Lp(LO!&5*a)gANMY5+44!8%O&g@!mLwqi6wcjQLY5w2d0K)~?B+Q*iTvYUh z4K}T>DAVPIPJ@s$NMFo}9TI2m=6)CJcE7eH`$q25GTO$`=RmvP?q^$z;9CVFDZVf= zI{c_*6Z2H92+laSH_mdOf^-)>`-nwBBKI?PN0C8P#ApYQE?%ZSJdNJ;FM2jP_S62F z82u|g(%=kg$+Kd77|&_2Q?Qx|Hh z5(OzU(~U}J=*D>Q#+hxY9~tGv8)qEWHx_T4)eiO_S2%|iZ=Bt%Z`7%t%DmV-$}=g; zv2U6ldj>XKd%rwf{N=2V3|Gfp-%t)g3<*xd4 zk3+lAlcKfpix^bK5EpfIAH>F8Qas--H%Qno<7Kfyg!aV=pJUrN9(|2$p4w5k#fB;| z>w}GU)ei_m%f~2t!#3i}saxIZQ#>ToJwZvH6v9RT8kD7uc0)(szM4Bq!{I1uOx#Kw zBw%aPO5o?O1|Fv(C6EcV@g)j`TK119QPP}7_<$f13tQM6sr%j0SH+WP|1y>@lj7GJ3*3#0#mZH<3mbaStj@<9xbxMD zV#~xK;mHDa>v$Sp6Z$#5)??**iF-JOpp5*?`UOPjcUrm2zfw_oUvz9b*w9!=bN7vP z3G+lDFpY19yVvb%5JoYGa@ErWdBMHtpv#}m71#2;>fqY>K2UIbQg&c&Pp>65FCc=w zSBPR$&*xU%!cd3rkEMOmzgLC(W`a$3&rd@YDJ{qxk`#@4I(?*|<>d~cvFf=M*VV#m zKn9#lP2`On=zPlVIK<$Q&C#4{2iH8Ydz*TyR<=-08yF6`EoUL>Veuw4h)XT%+XmKX z1+wwFtn5&^BQ6SwDGRK{dKx0ACGEvd%nv1&>TlFZs;@6P+`dPq6~z-SSNbYgrCv82 z7kefx?u>q!0vraW0T#5=;d6-(yT2#)Xj7~By;O4{1Ir2N`X=_W4kuN64pmFZBjdKe zeKsK|Hw1)8T6pGl3e;&-U%|3%siFK;nADyt3_nmK`abf!On7-*0<|yA29>K zB&P>Ad;bs($KGHY@zTE6C;5;b`rTzW1A4%f`>0P>`060&Iyl%NFp)9MWsHFv_`^2> z*ZeIWOB)~duW%XVL@BhKl0M%MzusGo6gDLd|dd<^$#OR4L-KfYV@eRS(K z-}b>p8+^w~)p^U4veSGJ+ceFkv`!WnU0`GTX{(g04Ca*zsvd?ZuUs11k zW=(agiyDnwj-ffgp>+o!0;o~TZ@W6v6nVSB*F&t4k;~yVJF4$H%lz9?r~|*EzyK7W zW-jOg>g)XyX=lr{u3eH0dOxu7_C&BJLzE=;WTLwY^z4@7xY}m@CU)t$1y|{Cpe3SJ zqHIHqu~~$}{~57FU`ii3 zjBlc@HH6YgFLO1e5U)B>#6psASL-gYY=`;&Z2z(@5TDP#MBbm>3BVsJ?SKhN6 zq-qjs^UeKdWb!2*p}%K=hCWBcdOq^VfcGxF9~y|g9N~uWFZOOIDNZQRIFY2T2mQYt z^f$rbd`zoRhP3vuy)3Lx4K!*c`qo&-u#69hSnvoqsh#IJPYt|=ooEGQ-(p9HOl0$Z zhyESwDgBC5H7Q48Kc9Cg?x)>52#k`Egj7Xg_gG-sdeBar$4)=GM0|I5hfZ_Gr-=#^X_(IP)_l^vKC zH9B=klDdAGu7ok$Ir<9UG{*pMm(ZjX{UTrg+r8ZukK@J7VVR6}0KsH@N2ZFXx4t8q2qw8WFr}8>rf5(5j@+UK>iOG5 z@71i#pmhkR)zGewPNNZc&erbNPm_kWrQTY_{M&|fh3`7mItg|pYcbO0cx4sdk2yA# z@5p2|co{^nhk`80JbV$o3`|@7;B|^R_gpYMxtkt@xP1RHe`9_W{EVzY4YZ+`wER?@ z0}ugkc=20kgT_UFZjoxEv~l>hu|+C`(hfiav{KM|i5|D1!ykMpJM2xzJm#+u-QMpv zJ%V=eI$$ej6c;ysl+4XTyj0*C6_+L zC02``X_o$qO}ng&KzxYHH!#)v3#Dx(67K)KkN-%<)UV8|m@H{m#!LIhnnam?ls8@~ zs|ky=Gm&P)1*I9IvM5O(on^zu5LTkZ=A6{+;{>EE*e1qGd7!T}XBSCSRUBe=&dFpQ z_#S7F%yyoq_tA$q^~prfvf%DuU&M}PCC$d8elg{V3}Fl!+lYCcvva$`;?n{A%yTy@ zAd=JWn{xyNb2ft0aGSKF^8mf)=Vv0KG^>HB6g-NsX{a{`*5MQuB&74{v@?fbInO{` z7BqmirN%Mma`txpmDqz1#X5ga%(9&=T(mj%l9UyUi6q1B(r#-wKmb>qww+*Q$`ry6 zdhP)M!;_8NJve$^A4?C1s$E3+$2bWO9hh^JE8eN|=g{PpCy;>DIftRPm@?E3i;s9` z2c(Ly;Q%!>A0>+#MXOWm87?`aXfjmh(wB3dm_d6gdlzljSstG@+~TEf`Hcm^KK}ll zv_j(oWZ+PWMUDEGB6|P$NJYDN55<_iG8p$}7&j7q(+Xu>R$~#xGivzA@x;UoQbMCr ztvNjKYiA|aV01%Ps*Xmbe|l&GRoE%sQ;B^n<7yQW6qPni@bM{ZKDe#Ekon5_1V6A7 zOV^yjlzx3E2k|;+pCA;lF}Vt2)%$>m>D9rw)-iRu<#)uyr6x1Ym|k7i*bK2+g=999j+sA^D_h5T4U+}bt9s4=+Qd8YqJ ziyDB@F}?#<^b0UDgM+viO8L;gylpH99&9;xTn$`9J>x42NjAWl-NJPCj&5~}Lh2}& zINl!9KpZlk3h_g77XL~dQDRpA{;6&~H*S!5j_{-h83gjLjc?|(UpD6HX6 zE=5{~mG;<4b)ue6ZfZ4{ms|MEB_BH>`n=GAp{dd?%xzW7$F$oSW^mirGR`8jM0>JV zBrS_r2yUYyaTiC=W8$QwLE zJ9&4YKF2S#Jl$GvtF3ZdwZ*n-hw4IESNJ@kSE#U}wU;}~YWqLzp6~2_MQ@Kw-5u!F zDlu&l;SJ|s)(&jsFTFAaV?XW_FJ>`Q%;L+eN~2y5`S%zo=TiLu|A@hQH#sv$25qD|rFmr`TvByLuSU;{r z+giLr+pKRg&k^gBZ}j_t$UE)#hu=cRRsK~OM#)Y}B0QW{Uc7&1XT$k|zcIra(cgb! zA>&sO4A0w+a%6yCD{73L6)xVd^}~z4$>!6k$o-pAlu98{&}gX99CLpT15=LGS4*lO znuqR~w+_lwD!uPD;Kj&Acfc*{S@)OD|AG6auZ}%ew3(I1mW)|I)Muk_fZ{!~zO2P> z-s0&zh2co@;M6+t06yjcBpzi}+_Q%0R)pCPv>~p_5QJ$45vBwW&m2u9?UPt+ai6J# z__v28%TpQqj=nRSl=~1Lri72hnnLpI2~e+5KhvNzkG;J(n+Qtmb#XS6wu!J(>{&Zs z74oe{z6a;DfXmcQ<0D8)<}RthzcR4%MFNCpf960hdyli&oMsGl#@3s+A5O&z?UO7a zYB8@}%^X(jT}uxTs&QwT@Esch*hJ*+YPA;z@h#4#aCz7UnQ z6-i@S8e;ut(Hi;&n#t1UKzY`*GmDMtl0OyDCqCb+5a)XY``SROwh*+qk}2GH%xcf8 z1{-Im9NMIpyTrZ9k#d)SXnJW%O@~VIr!8Z}N1`F8sx1gJ{*{F*ARn7IziOFSaqNRK zpl((yW{K~miSI9;_?>lRwQe_#MfW@?05E&A6Gw~u?r*+c>*Q}P)=n$+H(#Oc@i&jq zVzJcl!ano)GqBL&%M}=8Sg*--TKmk9e8yT>574jPK~;GC$WQd!QpGtov+moimr1=S z^<8h)edn{SblcHr69Zb9n8E_Zx_nekEBsTAt zMn69JKIlCwwhC}Mq{bNKvZnal??Fnn1;!Ll@SyezeZ&sIm)BRpiPgIv5|=x~-pJp_ zmM7g6W>mYla~;8EkEWg_&Pcdljfr=7(Bn|3J_Wao+)qy)w;Ff=Q`Rqh0HzW6%TRX# zpF^hMFHQnlX}uyzcHON1tH>1o;?#jqjtDEdHbPUxmFip-xcXaBgMInfd;#Z7`=XV+ zAAR>BO3oyDZpc9@^bfQq0Dn_!VZl2G`f;bUDX;*Gb>h~G*gIUNRFuhsDZ)ZF+G|xT z{GZCXs9ezo>T;{>OfOvoYdPlpKJ66(I0h=$*cDPQYCPxmDSWOA9VCg#gYTut4>4rXaHR9@hlUZ8mUGR^r=UP6>jFd{tKXC#^RbbTdP z(FeOM73cVHsLEZ-HhGK~3(fV-)Y9@$c^}{OKH!)Ny%z{lHp5-(&?2GAxc_j<)E6W@ zevZhAd3+C|$x5B6RTm*LGtkWFq!4h2J)Sd_;jk?xCsOJX`h_g1XDt9PfG+N<$Pnb+ ztd0^zk4(*ynh55i_;{Di<=PiX#<@RA`EWHwqn6Kk1&^3-uFK4n;vJXeX`LI#9RehC z#=fKfZ&>$w&D)!z#3J&XvyY((ZlNjFVLtJ@12tzR-Q#oyCwX`I2Bmn-(2#83tn3u; z*3jqz->iZZZD3KHX0?!Jf=N50mXR)Aju~#3AvG{Eu0~mV;!>egEF`FiJ!{F>$k6N6P26XO7Qt8t^&fgwUOu=ByLQvD07Em3SJy#5RTG83W-u&P#Z` zm%n6>NgH++P}<5?9KoNTxfDY6_6bh7a{fsTuxc!CZ1k0Z3H_%2jd@R_i^D6uB)WYB zpz+5$F2y(9;}aL%hRQj*^mp&@`9%-l(!n3NNJP#GZkW}h=%7)aZ#Wks%Oc7$qwr1U+ZVW~)0d&F8~KKad{%$5k#?_0gC2|xtDbYi zSdeLogLgCEl-f-ZJD(n(>CHwlb5vOaw6D_Wt6`VHOh(4&1Khov86;wRl-YP&&2C`z<92Xu2Pb?HQpno1oB z9U%Hym+w?clR9eQHmb_p*4wGH#%&&w@v33cX>pYerN4+NZm5=)$dTo0tD6Kv6WxV; z1Jz43JuEU3KR@6AI}zfhb13Ygh??xM-CH>9SR}3P0bwu@p?a*RX6s3)O^Y^LQLO^K z9BfR~88$>+5d9|)cOTZJBu+Eb;4pftt95r>4E~_0!r57AN>2$Je_@Y zn+|QNt0?TO)9*6VRacSKxv3(j)tU_IWvvPOV{T-K+XSoJFb5)4>-vI#ZcytA!Bl{W zt8n)q`M}MbyyotKy_27k3j>=9zJ8XGwnZhrNzGLna8g;kLc5L+$jgk*p(Tce0h(wzcDrXiiquK{!)*5jQ+btUilh(>qDsFKY%^L z$AG`3?3n{i-5lZ395|E45S?+{;`_mR?ka4r*t%Pd2v~ZG1bw61i@xh%OZ)H<%*rNc zKIJu!>f9a3P?A08Iu1*Xz{ABWX0(fS86Pe$?uM+hvM~HZD{=d$H-_ieGKAwnrxC=t zt@8E1P}u(wK55(ErYJ;vlXPDCXQBXd66_zLpQE+SoUaBU5)MWkEmt9p z&$KN1+pU?m1O6&vp73M7ek0Du)(d-Cm|EzZk%_P5193r+1973%%ObCs603e}KiE)zugc#>8EjIPV(vxPYewoy<>OPnj#D z$)(_1c8GY4pF@^?L8vqfy^N`u;7akhjUPS9XLaosr7N(n*r1&|=LieF-IG6G`R{b@ zVn;`&V%v$dR?}S7U#Mv=yj>VO>`-J@o7c`ZQV*6o9a^T5%a=uM@U|z3X1WWPxiNh* z&)C5_uINHX?2nLbTL$sixY+Q+B79(4ZIC*5K|^&=_$G#iSmWTO`}->?itdLUc>^-) zTodLfFuh|)sI$_?`NZLxvn*n+7>2sr#G9Rguw-vCh zQAy%eLPJ>Mt$iz9iKM^qfJ2Eq@SGz4>62YescB8+j+CbIZ2IjWp%;1yCwt79GeuuV z7`Y24b6?Z-`+=_X@ax!&z6G+X`S={FhD^#5#I6PDEI~B!O}vUQ0gCvnmZ9DlpM-B& zXfP(aE9V^lQh^C``xK7vd;B7TyHJJFQBSuuB|^7;9YC2tc=d6TdY}wa16MkreNz`5 z@yE~A?(oOm@~*#li5hr?A3T!0%SK-2#IvM#Zu~qofSaTJ@fm7hG-?JaL_(~bAh(s-<+ZSAzDA1=^3M$(=9I8n>;AHH2{ zQ=hG`h26*@ARBv@k>@|!h{WJw#k8L5m!Hpubr2&ftFp(JG9YD6!-(a=i zosH4X(De?gNL^IsppJC|{%Jl-%k?+cYFFytCx7(*CQhg8J4K5a9tU+)gZssSlM^BZ zfaJ-2!eMqZRCG5wEtKzHp5hyzX#dhjJ7W)18}vy`p?1}W=&jzlzSpo%Fq& zTg6lnLO9R6$8H%O!Nw3L&6jVQV}^Em1aaz!WYuR!pKGyIXm1v6h%KNhqp`n5+zZ+}Lpz%`cn&5XA3SdJr7-^Np*2C(%!8EOEUjpD89{kX_QpXKzgj?0h% z+Sexs--|6v;58Pm*Ah40*ZlNdfiy?H40%m+0p$#NndPSf>Y4fOoBYhTu-{JtkpH+t zyTyMzRh#BN?o3vw+Jmo-|ajCDG<;9ps5^O)5RVWZo_)K%a- zSWIbWkXU92orGPrr9+%zS9xM}A7gH!wQ=a!Y&kz7ZAyA^?OKnfQkSEtl#th?Y-1FN zdN(~quZB$}EJ=9SNtPtxWQ$7R35)K+^M#<3aA$w3g*ELZ8#rBP$;at=^gzXFPsN91 z3A@gwau;F!4BXDpC%9``fh95S=??ifJ1B3WwqX$8^3KR4riI|8JUgj-B7@!?J62eZ z#-0{-kd_{_l?{>A%d^|_Je*JSkk)D*&OB)z;_0nzYFf?3cjJ?7E-WhH8|YMn5W$Se zE*v_*+D`psi2K8P0Qh%&B?6q_hA^oGRD+)=keFy9^Mkv*_Z82|QUmiTNk2l6H++o+ zdEX15;vwAJ4s@Od;gRM+P&yK1tp1*=-=zkimNW)C^`TDvLi$B+;eJ0k! z5MhIv?SA-sR{hI)JINN-d5>h^?z#b|d{(}qUD5|3=@6lGJEVu`1xOcQP^R|>7*JzmAf ztVa(pXmlmo!0XFS?Y3(W#|9 z#r~~v4>Eh9N!V-6v~;^}*&HG4kZ+LUeKPg{pDooQk*y3w*;;GfT)$wYr5@LtR` z67yPMu3N|W@78)k6)*UXbe+-@+oSmktz`Cj{^r5nulZ)q*b{<35%tS6a%40MVjKL; zS8HAU&DVP0SdwBjzl5dJ8}NidvZbX}zG$>RU&eTeA-b z`-=<}n(l)d3{x}Aj$faogMIcZp@U^>DI#I>^PpUwmO({%S-+x{@%2yEZC>*Mk%^CO znpj1hxS4kHIO?VcMMzL~*z4YGzWN1v5*nKAn@#IIs%Qf*0AW!NE|m{%*7~(F3A=)I zy)<@K^a8(DNu9yIggG>u4OS(swa2m}fWExur#SYlC%6k*bMM!(lo=XY;G0cA(1sX_ z2Lb1Djom-l=MB+u)Deuz4GG5bjOb(jv{ph=hWW)toG=E7WRlyF0P{mH52C@wiaUjdc z_xBSTVx8t7nW=YJx)|BD2@_6D*KBS8l}6kZiH@ zMy!d;aIHLA!Y((UY2ar+>#cecD|e2+aa_?F{fK$n_dH>_gyr3O!g;3m2DZDG_CeNJ z!$fy=Xs~R?T+P^@77q!pjCkmp0^dvmuX zoAiA}@lauUti$+lu{rf@@YfNN`V=jnDG!0D{vq45{ls>6Ax}E>zh}=wXicAHo4wcr zrUDZ;V^H@#3m!D7Q?ZTqn$;3*nndH#i2R80$fED!DPMELyVZ`?xUXo8hjaExkeizBP3#u5#zk{74ws zOnU*uAe56DdqU3r4C0-_N`hzlTSWGDBxrgq-XiqYmk@wm zrZ~qj*8Z||HPJCXWzd`Uzv?ZvWUN1Zxk{zImE~SzJ3UO)xAe93N64LJA^Sd2X}$f} zNRY+WIYYKD8|@E$PcQb7kSawyn*YkhF>f20-ROoysO&igObN^b#o0hsI8>RZSGvlI zzn?wPsCe?2e_FokjfE=v>Xm(Bzfe2Neo0B~h61P>qZ;M_ldq?SO8GAJoM+ON$k04i zq&@haBL0Pj=IKLSO>NSehB{K3hGx@m2SxOvT<4$SA7{T}&xyrH)w*xC7XI(67z>Vz zlraYYLV8qzRXE#&;qenhL$idHfNlYedFd))-3u3Wni5Zac3^{cr@oAU6=yZ^rT9~{ zE7qIv(2>j4zzPKpEu+PqiM}J9)xa`(2!}3raOtZZRJ=rA#?CL$Sxi~uJ94X*qu&1v z=bxws-r|QT-p@fPi{i1BCp1N%E4udFN=8EG8`5BJ&JF~DBbdx4*yNa4yiqCyj9xS$ z3)Ewr4URUy=Wi)h1IIwDT1wO)JXT{rp>1(#OIaK^jqpo-sl#vf@nlRn10R<%iw$GV zFu!u%&YTzYIV7)a4i~q?p~WvmrYl6DJuTK9$}{w@jojBkDRN0g?P4Z1aT&V88k%kqQ)ylIh#jN7v;s>&*vAjJ*3Q9oh6JMvcQ;NdNPVRRJ*e~ zrY%btnsm}!vQkz|td6}BHYyRVArMO8V{hOS!qc7PWAW2ax{4T%gaVMHKY}Fb20B8< zc0}YRw1s&JY3?ytlK9FDPJ{Ld?_)bZFrHp{#)ME~gK^<7l5HgWI=UMeWlvJ!4e@av| zA=+2)g%<3Ux}w+N?k)MQe`@~N$h-G0Iog5ZycBggrFi4)$a5XNriG`IS>$=Y;Y#S} zH!X>}=(XjTw4?pJl?Zh7pY}eXOxup(-ZXZEH>|RYkMzeiYR8iMx>%vLj=m|rRTt}US&d*YJSOBB5{OdL+ydw-N zEtvy)^!l>ho)qoxo^(xXS?zsg@%6>*#gQeonJlJ`q%{=TX#SWtT9Lf+(Bd$oH8^-76E5h&M4XdhdKWDJ3WkR2S zaxXkqAF7i2u>B|M!)3A$T5s9D_Z+M3f|J|+=@7U5PV9bGOUHDcqEf&>M5@Gqf*uw7 zC>c!5R}V=hdK!B~eezJT z$EjHF-n}s@=4#s0sBC|&TiW21zf{1sSl2oBy3){$X-;EO4oLIq$?MwQfs4MiiBWKt z;fC$tUK&&8n5T7=>Q-)Qw%9)L0rfHfyl8 zt{%IQsBGjXH1c0YxBpLG?Z;wz*a9zZKiVOl@c*bH!Q^J@$2cjqn@=xgrD2A}#fHtZ zImP=2ReP4c$Mk&==Mx2Od}tQzU={B<35ua$EUHeC`k!%PQVW zt=uHmj)AVfY3bv|QY<5(YzbhNdjH)1Jf8%7M|4vttb8ImaL35{nutG9*1`8JtdwLFX!nD zh{RE)9SO&Zakk{m&alp8wJE)R7{x&$|PQ{Fv`>LIXJiyFDP0!a_7E;3yuJUQbp zSxO?qc+nSHx7F`MCNEk89rH4Hu?aI~MSD8=^kw;{!l@<}{19Rr@iU3@-7qbeiz8+R>wcbp?3CkgV>UGdX02=dVpT#@sES|#?7&?^#XX0uwr+#wGAEt^Z0!cqqAoB_Rmxtw4Q=xN+FhM%sIFbjG!XZfAl6T&3|-&H)Dv%J!^yi z=-JvnRKo7;%cYfpPnJl%*8Sg1dEfu zp*Y<%?!+D2fsm*cw9`6SOyA4bBfOMwDb)w+)2*X79E|em9ao@L51)3GRdDT|3~?m6 z$~ux9%rvCmCsx3MMS6dn0Zwf zV;(gKMbgJl6TCI0r%<1!okF;ODXMBZMBIX~nt1x(jJ&=U zY}FU1I@5hta=y=8hH=1W%)*IZt#-j|JD+My@0Et$7&!XCX6Z53)+5b;^R2!%BF|i! zQc@yiJO`o&UH%=H$FR7Rj4i}r)-2JM8jOoYn#gWP2d()JN$EKBN1CE9k5rs|$Dl*x zn!uFGBM#!eeIf^rsP;`1P(e!N52J)z+ol82jx(gNc>5-1Ove#&yFH}2t6A=Tk0swR zvYlGkCQ<%zP(}6%&2Wz!pP*qL;%5=ZTk>^UYNnOdyV=f!GtLzLa5E!xp@3P+G<;VJ z>yB#N7n!@?5sC)kjiPuv799j*5`)@FmeJRnS6CYHiLsx;C!L+#(efY9TB`Z1C7;*C zz!}NxccfHB^H5&dDfw7L0LyPl=e}Hww#b#}B#tF(tV68}m%dgEe=*Q6i)XDZLeTo4 z^rxy|e=1Avfo9)?%l1$SZmVb9mZta7dq?#vONnxC`~M}GbVL6HJn%TAnhHQ zW-jFNmAEtKhdPA2e!Q_&O*AI%cXTr2E`L)RiuHS`GjFP0*CuJ5ksWn^BI|xg)Sbyu zlGt7cUpL6Fckx&4LZoeyY1fN1xNSOrm1#pn+WAE5y2cZiPi*`=Q{2g8`;a|QfZ$+!Cdf zel9Cf`p{2JiBdp6*OVYgwsz5C=Kxwk7tY!CN;EU-Xok&bg`^!9@r8>ILSX+fyf_mj zz6neAs1kT)@ezDm9$p;B?}w-8^Sl4zKKD-U@WC$JVLsbT)D^M(Vd+h@{TahoMe7Q0 z`IiLrQBA3iki`(wY`-XKEyVN6)$GZGlZrmvLWO{bh;@dYco%I}B*9DUReKx_T?epo z#FJ?Mr?-SmgQ&)0A@Zzob>|+ab&y|Zu~jN-wj9o|Wxj(I?lT-(dOh*Qb=kfd?(WLH zZRn+>uG*o#U*qn6aCxbgMG1rIs#9b_0VjCss#9e`HYZRKr%Z5JMbcz~(<+iK6H=@q zZ8*XIvqNhminy%VZ?&epXU>dE7-V~a#1{W~0k3EGWNG2P9H$+WI4=oyHiui`wbvFT z@Y=e?8K=T)XfIJ<$^t19SNR4iUNtG;B5c^f2>j5*>x=+;tsVU7Tg?mjHf;@>+jC22 zse}GV%DHdZHijf467K@lXa$NAmtx`6gKtV?IIX^o=NzrK=WOkKk4HP#!mxi`0<|M? z^A*JKOtbk5Aqs}$X-beI2(#G|K`IUtYyv2?4+1k2wHoP4#bGo&&=Tf?63@;79jdUP z%=ZaTqkqY57!Q4$NRvVW;Say2qBV9t16hV?E$(2p=EjQLSI~T~?j49VrhahY(L& zJ^eb#yj(9TNEbE+$u_5wHqLOD(y~^7su3${p8rn?ONC-}o6S5?Ly>j7*nBXFMor%l>&P2 z6B<%r7K!&BM!@~D!XfD8F&fQKK~TEZ(MY#8u4cwefp2UmC)!2NYhrMYsf5>?>@)2?c`za{Sd zReV^B52%bb4RpN|-GwBRWEK;S6OMw0Tq=vrz3WhhmF8mfQ^CENkt)A8JuSlaI%t+0 zM|mFj9MYaWneW^~88&vZX7t=<*0|0v=JC=H{Lfj5brvE#HWMN!VV&5R;_q>O=^?BK zzM$1=VW#3dTfoK~TX1&U#V)(?x4zF%lB(voJ8~ce`2N9iW>hZe1)ma{R&|jxg+)YJ zekOIkJlaL@u$X&V7Z_`}qf01FUBtm;tWi~S=HHLAs;vi@^Da8#EF{)LtdjQ+9AJ9{ zZ^bSyY|YQBLsb_YjNVAEyaS_W92d5DmXB=$k&Jwm_uPPFdQ{fnl5s?nQ>%{VfJ%`R zQXo98Qa@+AHnE+TCdaQxRKNd~1fJS_EW?goVU! zl=k<-#GCDy=&5*xmhbp6_9A@|bMJ3<%u07O;ryjOJ@yitwNPG@@;ZKG)sCe9qXo~L zjI(#V%yV%%CY4pr82il3lX3Ttr=H8#UQW#Ac{MHZQ_ZE?I-Tt=6A1RUmnF(37y)2i zShSgh!+hbNy_4pm+z?;9e;A1OK87mddmJRnCShd9sr%M8sc+AY?s&>|_P0(ynKx>h zFL)zlPT#{ofyZH8a+Fi>MgpEIq%T%wc71iW?}$Si<2#a~^(s0j$lPR6Ww8~+>FnP# zY*tIkIL6g{{{&Fs z0EixP7=g}m7|F5~^1a6SyqoZ>?#@tRUxbrr)&izk#&d%D*qT~F#7y(imn@Od6qxbK z(BN!y#!F(qtd{$w`T+swb~7Ly(QhT`_A-k9J1P z@jkDoc)!q>`+s&KlJW-s&n^Dt>2;&>P=U5ox^8lx+ufTk3OKYkWjgob&uQt3-H7+u zNZJJY6>3Z2f7@!`*@(8A*fyyz^88<{E)rYa+GG8)bc^%c_5x?gqa})eV`s9?N1NpD zPsz4i#9oafpzRLRy@nU!!djCLQ7kRXSw*{`9*t`*VGgfdV2cy>`A*Vt%8Ylp51)Qq zKv`m|!j{BRA^MhYTli7l^`}dIU!FIK{%x`2L-IU`*kt2oorUORSI}H`8*rkF@=ek4 zx{G+dD+x~|p>$app2*To5w zJSw~EWy?pQRPy8Iq4~l`!8&vq^$#BK77X<0Z>g-|p0*ArY2bzXiLb?=6(6z+e*RV# zlI*BS_%$pg0`2WCDNZX|3;f?C_B@5GD9k;jAUKBBZYiWkgxUbAsNTfQ6haoW*5>u+ zxijNz*=$CVY*rz#PoP_C*({V~Pg=JSHxoO$#{E0C`6J_~N#b6sh%QkK;ieH8r6ulUf5|+Oj~(j6-_sI(c&mat z2Sb%heTTbFIh&nn{^D=$G$p&Jk)|gJ=;Q97hX5LUufMS%wh7!k%Y8KG`4@KL@iUz< zGnCdPdEa$6W6ugw1KYFu>`>WKPuHoJsEaoEmlyaE9~{TeumlX;$q%=y0l1G8ZD9W$ zdA1(CgrBKY?6VO2oFvW_sUMpPI|)@KeXB2bh*7BzTu$FTcd7FliTC^5D&v%8UPhVA z;;mxW3hQG3;WYJuHJG3BG+EVy@6xNMTn*yaswrF6bUkYN6Si4bLEy4r|yR4F9*iv~xi`F7!RL(PQs$0E$iQ72kDWidM)vf7tt9PH$Pp$Sfi_2Y9s%u&I@{ z+K0BB$h$+(Dfk|-r@^TjotoU}6lxR{q)|J=D6Nt7$@Kl2k*rl>URYv_R%!obPC6`L z0gX{2(i8U?3I)0~Ll&;FyBe{Aa?)>dg^h1wl6$gVq$1%Ng{}!PaT`H@X+k1N zaS~5CCnq+9xf%Or(%f86m`)6r<|WH09mD(E%|6HifveI@!!Pf2OIFxq3zgUwVX5!^ z8r83Viqmk!1HbfT$s|P{PuX&(bKP;|eIEXWf-h!0!*lMN9jwwp*rFt*B*`#zkWYNe~i0XlJF~nKjLOkwZrB#(Fc{9z zbDRaE`F>$0tRV3k+(1LhQ-f{s99IM1DvEHwv%D=GJkJHXB1$lvVJ z+WVU`wG4lAwi*Opx8UXK#~BpwL+0<&h0<|0UsrEXE`N(l4Lq#CW3*_4y-{Q=J)(dd z)9|DvpsJ3vY2iqNhILHX7kJ{6%%qmToyQ{P1Ga#Cy=dM$rxb5h^oD)}r-?Zfo~=_D z9~W)rTc4u1Q7|H6-X!KLJ`2a)+@93s$}k}24bLz`*uh2#w(siJrR)rjI-XYpF6VltN$G8oS zG`q!Umxy&L>NJ68fd(UKfuJxQfUY84@Ju!WPQpF&UL{=V-5N=&lldhrvhkp`7Q-Hs zlKWr_r4u z@FuEBxS?Dd7pmizQB>Xx_lv(Bt25C7H89elShgl`W|!6^!yd851p9V`mDSFrHTGm` zlW;fHaOV~JaA$DMwEK+qb&kvR_N7`@8FG2I6m5v5hj}a{eTq;VU5p{lN)bAz4!FZe zZ&ET#^>qIcq6mBq1g`G$7j2;BFAHb_ zHzdVm;_p7|dyV+cm*BC>j;Kf4)o|V#%3I2F!`>S_6uz2N6v`J$@^2nbUQ4XuQ}?+< z8(_;B3Nk2b^v~mV{1FcXQqz2#VJ)ZVAnk*iCM89m}3T{aeq5`2?xFaY3a@8gLADl`~?8p%Bk0Ki()QJI`aN|PG=~6iB7&V zN09ziqVcy|k)MV4x|E`WvB`vUB`WMbR|qrp0_VFpQja_ZyT~VX=L75Enb4cKhJE^> zSPt<-BOJO}mr_>mp!CxyeVwPB_jgM5&30sJJ=H}Q#dqhsbfrmzzP9vZ6M2nCr~z09GWn$exgSZU4_l|Xl;~Yz zS<4?e(M#~o(|EXn6XT%B00=gXBg}M310-r?MmOzj`?jh0X=bUHhm3=z{0@jx1j4i?3Ex#X!x_f*D0HB2>`dPPoDT+pKKVI7#Yx0V}{5W6kaUK<2O z4zYbzcXPhMJk!&HA$U~K*{_pzg=Wqp7Htz62#dr|Ff2{^a)s@fwJjE{pIEeu$p?V? zg3r=KjGv`OZl4E9!izh)Hb$hGUeTK1E@7RVrOQjCFoZ`ortu!#yAVgbxOyB%ywkB= z()!j}oJW*RWC(1_DU7c#)p%;tLz9^(Im%@O3+Ev9f-1#%c=tqd;4hv=V zXUFn%%97u+xoNP%C%KM|SlAhRJ>2*k4#`)Ej!LINA*b?2k?cmD6Y9O8JW}LnS z!V=u%YN^UvAr1dbgw}xdC=LIb`#^)I<aQuqZW6k2C+?H?4B%rns-#&bkJzFP=wuIja`!%LGHq~d> z)wtCrDQ0al2Zb1M4rlY=eDm8U!1EdD^;K@QE-RI&Rhn-=s@4|n2GYO8xX(qLc~Pqa zmiET=E;|dx2ctr@E+;jqoQSO`Fy6utY>#1wghePY7eB!~^`M z`sF>y@B>NMSmh^d9P|}S_d<-pC2s6j!gpL)aT(M_liK-PX3g%^z>wJA;k}CYzM&8p zPO{uI*7{p+(pLLh252bbZ#i3Af|I<*PGswz$hNORma!7BUhJnq7}+<4_R>3vJ9jGF zY<3R6Tm#Vy*yxys>NfZ?*mKsy{DMHOAXMdw1Iy~46~X_q_{V$P`fmMCj@ShjVCx$h z41V9@ca!Zq5Gr>t?WCr!3bXCZ(E3ia(0NU%GH~)C5jYtRwaiZRg~Mr%srKm%BXC-B zdMjQwt20`wuW;wp(b~@*qaPo}_lGi0W#KBvoVHFlZcz7g)W8>FKk%2bH`q2Qr;KU2 zG$efMLfL|T+^Toh>p<_NJvTuY=vdGCE}9wL0oPZWAE&5p|LfvhyI5EO<;<7_GNbpQ zTyDLn_zxj4a9a}--Fxc|F6B1*6d}k~4jdtQ)UPzMgZ*nOMNP?@AXke&sk~!G%FbQW_!kp@baD;goRmf7o|-XVdgzEMM!#EvocHE z2)sfVk|BmHpw9NU!TxxfnwhS>LNk#^qjP!2YEOH5YmZY?b4c!3?>WyqN6)c!WNw-Y&Vw=Z@?H9g;q4gfipG-Kht-x{RV(wtr5XM-6A3e3igZ*gT zD|`Vr8_G}To@`ExA{?6R@J)9p+D4gG`5>@5Kps{j7WE{DeEo(AE!#9~-|(4Q!-`y7j&z)79WaC<#83bOaf(>6Cj&6kmqA z|3B8g1-^+Y`#(w3Higy+Qm{&as!_{Qwbh~xEl}FhR;-GGicmpaWKpY&GC@{L8%&~1 zhd_08S6y+%*Xru7Z)NcXA`R%Gh%XTFvFe%_5fm-u)%?%*+&hy=i^%@```M+Lnfo~R z-gECg?-P&6v+)D%Z79{JsweyRR4Tz0Hc&7gb+CWW@oF9&aft3$vaV!fv<96>o36_E zSM5x%fLiPO{r&{!JE~NFTj5bJtTjR$f;vg0h#W>;!47`MCoDGP1w`E)kMzJNM0y5C`AxZ?H=gd}vUOA=JqCC|ksr9M zT;>PH{iM6cYi>FxvxS5H4>qQ$gtY)Fay}=KlaGDI1JMe>IOr3~#%mMGsA>*}T`_cQeY-feGwLWQ7$vam>pl`oF%XA+! zbF~c@!CgGzdE2es+)mwKZ@si%=wl|yMkDb@+r{uWw0P`@1m|L7977+AP`**dE*yG4 z+jt6_AC>Plk6sJjX`X&|p;lk0*A~)4hJJRDR$rtKfv10Hqput^RhpL3R_zkQ>>C!C za`Jv5)ru^mn~6&MHYe>#pIOFzp`I*lm!>gp^92QrN_3OlPR{fr2h;8WykqOa)9S#%#weEZ`iIpe~!Cz zmD4w(bCum!5%}DJDEc+R7RqZ>?Ke>@fp?!+f_LuAva!gP`kzGo^G1>6n&Iy2$8T&D zL;lv}DbCK)B z=q3?%3d$oK1+P9wL{jkHJLPtOE#be|NFqYhSF!UU>Ut1&t+($;hbyFA_v43Q3oqq4 z)Eqm@{`-#v#imuX97!1+?rkn7x?vj*(ImG7mR3R*LS)5=D2D&y3ye`?wA9Xn0E*W1 z9$A$Z?}I%uhr4){0z45vWw?%@Ez@NjhuXi=Qe4F6l+&|2MLzoKZ(TN-SJCjBexGLl zK(qbrpTum>JDX=3KF1-;tX}b~WmeS|36%ET&WEIp2v62uZ|gBxGM~LUUiI_jIKSI{ zpmB1OJ?1+SyxE+<_Auv&N*(8im$?kzK6xfaq*dg(4TSP1T4MNYYq?g&c~EoXGiSEb zi%X2a4;Kbj(=q6z<%lil7J(nm3fFFb_11EkJ9y{AzPBxTTXBL$cby}$7yynzy9KR* z-%l(hZeUyM0|H(K=36RioOyf>Y43(-JHu7|j9qrldBz4Uk{i@xd}=>OoSVzL#6dD) zX_jfn*z3BuM_w0KrMYbJb=LS3Z5b8m>ck4C?*zRC%;Z4jl{(Lg7pQ#nhCc}2|L-=d ztzl|N*KJlkk2*IZfG)vW0#}sD#$uQ zTa*wYToW7A#TkVkzFNu&FOo7ZB?Jl~aZa{g=O!St z=)ZUC*Jo=V(Y`1o&a((kDl}K&X$kEUoV8js-p8EJ9Iu<^vybND`SgBB*X`kS&1}>* z(NY!a$R%3`U#|ikqN!%f)TmdP(-M(6Qr>?;I8>ek2a|*3Nul;;XjQHbhci*>(yLrr z9(tgLWhidr)3hZa4 zwtkua%f_VVD53A8a}rXLeG9y`CPE@sCTx2;>=692#9Y7Hro{rEy92xJM{X?MxZt(Q zbfgNgAGxl0-GWs%df2t5(gsf^FBK<_F2~ezH#*QtM7lAC@9{wGEolQ5icK8lpxPN? z)TK&@8M|oUv#dZ@mhhqy>0;}Fw`F=g*!X(A9=vn|t{`oZ2scG<>8D@(Y@n~r@YjJG zB>gUkNV5X!GLL@eGEs~Kd(EEguu5fBk4vPsWX`5w#6O z$4!gAd~HI6W=ZD2P@NeKi`|Bu@m^6P#gWGo#vvr;zA{~tJ@fh%_a=cGK>K$L69^Rm-*i1 zNr-=w9CQ4Gp0G6raPu%++7J6!0N()SzuGO#EbiFHF&83+Gj4+?o4tz*qNnUj2|67% z{YlOIrG^Jf^lcw2>N2GXQFJOl`*t9QY23(R`X3{QX>rLqnKe6?2o9KD87WK~dZsWv z=B*rC{84?pE51IQj9)Bsp+uzZxp5w@`8&%Ws}6P+vd0k4L9xLXHnV&~J&cZL-T$#e zm?8DG*pC~^sUNRNNMpo4RK<)8@~90*&C5sHn3`nGqGpLJOt*3wgr*y}9gbV9ER<-O zR?-Eq?z@s|`J5!qG}eY|ttfDT_0KwNeX~ zMQBpQ^rW%xau+Z*G~kjxoW8_137vqj_Y-j%3|p*HV?|DVltDk^kXFPvE_<5Y-tDK3 zCL{uT9CI@QY_f%~rt$5V;RA%3##p_QNuSQ{!);cwN=i1i-zBVf@mjCVwtRV?zQi9A zv{Z^^g#7-TrDl&$che_MQPG~{s~b6gix~eSJpSp2G=Au@M_E~tWvxQhU!aaORsFg3 zzCQ601S@p?CrVwvK?j#?l;VELhSwi)n9bDve?%b1KW$I)qQyX!l1e&-=%TqeH`Lim zEhD~Wali;R`-6~2#LtF6f)J^ETO!d}=XMgWPfzP_rO|b^zSE9|DygB!IELNeTqG^f zNH6urJ+txWS%9F(a(zHlxhmAL3h z?6YitjSBfrRi2+>59~cjq&f}kZ6S&XKUO*duQ>vH%Y27x<7{nx&?!zls-mvfR89xv z(a|7_44bC7h+@%4r}*v%J%03x*dY2M0b4)q!?v0Mwu+HT=s(n4Tf+dmfA=gUv;ked z=8(ncBIZ`VxrQU}c)Y9UHfX!3HxG2Z9M9jr+WX0z5k`iQe%CXm9A`?Sw}h(&_GU7% zC9-az&UOE8*SfV$!!vNzqbmmvrT2&+fa~_0vt&1ig=OA=)P5eF%i&y(GbGL*|7ZLd! zCEK0N$%aKzpOiF&S?{=P{$@{2i?9O*n$287B+NLbPusE`C7rSKZV|7#NG~Z##P6f~ z8rHdv_)Xlq(XbP~k~vT|)<_*vv|xr4WB$8Pq!86`AI)JiV;qX_Uz~+y#tY3$E#Ktd zU8Y__g^TH=ZK4(D=umVl6)t!kNG+}iw4Y0DKPQOs@d;MmKv5%_B8=gnX9dxvi7LIi!F z#9ZA)-a-n=Hh~AbfRAUivK;Bi#;+-h;5|;(7@hV!E*k5)4)CYAUP+wJo z3K7!8TN2jkFL4$B?#os1kpA7*DWO-yoO$$OJu_UBk%(uu`^!#J)9byPuJ5FhO7K!J zXq)Ed4BMe)ntg@GJG3{9iE(Lb{mnTx>bQkF&Y_Mk_uVI&^?ow

SWIJ%!p$}PU-B2ll0#IWG7rKBi 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 v$>Ug&1kWTw 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

#nVGI$%4IixbEa6f&;x!Nn{K}fo=%H*0Mn)V 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 z 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

$ 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 U0^Aoo-7m>_FoLqwx@B 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%0D=$c(=hLkYUoi1OI>+J-pXhh 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�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 ?HPgljwx`l`*-dK5N?H#JCss zjq9^=lJ!{uOJajfsy`ig%cJ@_)E)^hA6^rOnvZShO7mT%&9Q3sddP+cwcH@H4w==< z`7||oQR`Te7v6_Y&QhpDBSZgnR7>A9ABz)eSDL&*>1JnAs@%|J7pm-%$1vo%_iCAw zp&Y(8J(aDs&U3xr6&&2WfIaBc#5<$^-Y@aCpZ2lEc+ZKulY9_+>tlw|M|Dnc{r{WqV}{X3%m3Pk zqdZA$JgSe`|6v@@{V4i4JEad(K9!wS+C1JPpwE1|CQDrFMeqpq=_$sqG_i6-B-?OE z9cNd|XQ+>2tF(TCD4!5u)jMRZasZZFo;q=+>q}`t15yX#J`Gqt%zEFa@q*1&j*ZJn z(t_8qwY1iqS+s+-jo(9t0pN4Xx?^Mf?b#)72ziMqD^GoJ3HD!`@(ljQ9)wnaHbYQc zPH=~Oje_qf&K!2DCmL1}=>zZC(N1!jYxUe5>*ubBG#~L^6+g!Vfgc9R?k<9JZiezO z(wN$?yE5?HvhPK8B+FqjDFAmTz#7dAsr8vi(X4_Kxg_5X^|li$?V>4?Z=`lm`(EAe{aJeewO8xIC!hrosb{F|vHa z#V_0ldmf^r`T#UV&qwe%+WvfN>eQyt zP8FR*#NraSLChG7>~z{>niQLo0Rgn!1Jho48Di{~R~RqjUghbIDdjclAP%;(UTS&{ zq-MG?;Niv`>(}9Op&uz1*U2*=YTUu)Sf!F8XQ(v~RVou%8UYK^3OsOlSk?Ax8tY$d zOH6-<8fQKn9$1GaEvNHXxm_K==J7UZ{%4FpsRb5d!{K2)tEbmSk8yR><_KFkU=Us! zVfNne{lc1CVeXb%5TOMo?{YUD+$?u=5k;93Rf*bRYCMP+kOAbAE~k#2uAb zb&{3w8iRb4m={9)BrIV{l@`D(!hs-kE5!b*bM$M(+B(7(FD<}JMe3;RBY+EX@|X%Z zHC#uZgqSQsjQ$f0tmRbzMqiAUIiw9UBh1j+&hk-q;faY+JderL%ME)C!J4C$^;`0P z^026@#DaxhJk`UZk633aUkYT5b9`vi$0E{W`dGMys*5L^H?YS9pOpd=Xr+{lBQO!F zOq$;e`Nwt3YKD@oM*1YmbD;@sgB?lVjMA?BZ+^F;1zZC zNbruZ;9uHQ2R8bfaPW(dN?E7G8(I)%O0V-kRp1TrdbUQ?EM=fteMGui>|#=;7zej4_0li-M)c_ zZA#5@?Gg7$ly$W3cgJU@Zi0G;BeQugX2J7To*O5^ZQ_KbE_nyNpHBz-Icl{XFM<{cBVZ4Ni|Co^Qjm?; zb$HfAR3_c)`eN2-R*HsLanJ9t(D`)=f#W`j&V;T_^`9wUM1N8s6g4dkmVcSZk(R&AyBl5%_9YBfW#ah*89-QurvSeOg!NTRlC7bH8Pk~xWAzyufseFt6Cd$Ms>CYx~sv;)H6lYm@49D40t~Fv^z&%C8 zy1+~tu`WzKJ68FOM?^#mJrNN@X&d^D|B$18_Q$wr?OLP!u=hoIZX$L@!yN0aQULdg zlodn2Rlf9hrPrl%oa2u}@e0zTbcB-r);6NjIYjoNPzDvk)!>g8C0f0Vqb%PBmNZ5z z%Bl3t5A`N>?(+kU-!H^1WMvF1Xa2c}!IlEBU+L2f*^)ArqLe7}kXfc*OoUy0GLh$_ zyyyeaSC@>Jg2kYtL9EOZ?j-e5c1_EPJidKjERz2b{o_x!##Q=MVg=zd^20>hc8{zV zxe0aleMtXYo>~VQ_QrrR-2lUUl)H>iqk(YX{GaPk3M4b~- z>r6+TS-sXdw2g{4q0Y~?lsf03&c(gfS%o?^sPkrO9sG&(r#eNQ#7S~ONm)%MK{TQA z38;K`YGvqsBWr7{mU4d&B-9*VtNyR#I~$d(H_i`x92|YbgRtfnbp(RWHiDVX%u(tvgr5JWh>4 zbZAUG2GPzjA_h?j#~`YW#~`|`IuV0tD!$We9-LwU9@!TbQU_vsVPC?KNz50%oPQ1B zJ(Y0|FG(AC+vV6FL%fzs!`4`uV-8$Ti{Wi@5=6U{Fybt6 z^r&y?OliS>f01t&?@*)c>Ug^%6h#XORfK~@V7*TH3mS4RtBu6XU&3)-o1`Cc}Ld&Su*R3JyVF~iElzdl2&zU>&K7L%V%)8nt{Uq-JH=~dtU(+ z+Wp-Z*H7^Fg?)3IpvDn+MxY%5cZA&#CEo74A(231_iyu*4C1Muj|ipQu+41v)#xk! zsHbEw$B%qjvrmr4kCdNKv%GzAC#uShpakgv!QoXs8SK%58_!rD{W#z&25}X4#Pp`Y zl&lqB(e_)K?Sd&xbG6t^Y~?_ZV*H z4>&T0TTv_V-Dg^p0=dQe|5NmvZS+f@Q0Rg-*Lh9H30XEFG(gKoH-S+Cw3#O!4ceL1 zey^}Snt3E_Pz<2EF&=8}VB^X^O%RJxe}?`yc=NpGTb4gr6F6mv4L8;G)P?!|ehxuB zoT2u`G6WZLtNNHE=2j<=kY~* zb|eYqLS}yLA}X4ktRX&UtN&uF?-un+3kTclV`ar+--e5>lY*zx;wo>>fE&dK=!yg) z^bjK=c&LYsHlL-8_g`t^#;u3?QaMI&YJV7gA7h@U_p@2>KC8H+kf0CLw;1&~W_dW> zPU8hC!s!nB;^1fR@R`hb^N1yiJmqRIQNkDQvjp>g6dR<+e{iU87j+DuOulk#{AGCn zu7Q}ESwMg5c42hJkLIiZ?e@1?5om0E(Uxc*;^o~#{n{93OSczVS zxC^Afd+9jQhunE`p}VhK;P1J(zK=gL++A@`RuQdNK$wK{m^0|yKH1`53*U#a&3&j9 zySu>GrW8K~u;E+QlfFO3Pf7UKI->vbug!~Y@~^c<*ZbGnqo4cNW<^)i@$v=jUTZ_W zm3T1_3x^|k-}ukt1)qSK6gy{+1)WcI`@0YYvYHt!N%^P zqy?PE8|3o+Cq_BBXmxq-QuR{IoU+DtYd~rOp~ea-)zbk(bIe3?^L|HPlAW; zQVw5s-#1EEFy^})iuJJlpS7C}3D5q|+->3$*v9jO`Ea?f0IvFqkhsKri+SbqrN>ly z6R0n#C9!A07OZa)-8Wd7ujr=T*LAq|Bw8pm-y7-dtz90|GS_ICYt{SQ1kg`$>4WV= zqi_krsn|6DNDUN%d;Z6<@M;TKP9?NQPOp<2ru*ozl zRgUwoa-2WWpv6MCs+(2>+vw+X=AD?43WaF97r9zuLQ^*w#qNr8c0c#$zsrv3~fV-$vP-B$k<&C{e=KNb63 zV@-P2N%r>S?U6dE+JkE`P0!i4n}GQF9KMNdAYD#@Flj%xE!emm>zaUm zwv7)r*d62Wa4*vqvG$6ddbq!^zfxARd$Wf|uW=`5r9a9&wMO>CHJsh9etBsbYlkxoB0=<=`+k7nub4@fxKHI{f9lp2 zL6kCMVi{r0u|{hM#Bza(VaaAwinhZ3DORrAbrC`9E)$<&oQv%d$a^Vd*e%&J+X|DM z02huCkuH$09nGf#cQh$0hoIN5pC$Z-o*Bzj)Lw7N%U8S;;!P$ne;a6l^3oJ97Ah~E zmY9B_&xTEsHHn@iSQ;%t>O&l zorRdaaLBp!umhqo`*2rHYY>B@d4d~9Ej&Y>V&@PZ?lsutaGSYLxE~!jlcmW(LoO)o ztI~1!co#i(JDoPgcPl-y{Ea0aOTBk53eMSXoCR&4XNl%Pog z?z}z=sjHs0wK)szo2 znW8rmB6uzs*?CaBE7g9eVqJiuto($V+4i#ql#lR%4hx;E2 z`76en3>K7oM61z0Ot8MX*(j2DD5{8&9UqZ>oy@*5oPES#*+GIg%_T|>#zn8}Z-&<}8ZVrQ`R+fa|INl?~!RTG$K2ikIJ>L+Po861E zCSkV(wPn3IuT1Q?yaL4w&-+n0YmI3DlC?6AS(Ty3!X^`Qd9g{L?NmFXa$Mf_y?&CF z0T=s?OBPa);yInWl&C&C4{aI;`*VHGNkKZ5mADhay4gz;<-L$J#rKeuC1Ag$zk57{ zi(lM7YN&2t|IDCQYN<`X^VERBW1F)_ZoLbnnn(n3dNUANO`rzQf};bgv#@MaoFao& z=!&Q{JMhDE#3_b}s2=D&tu?c_L83n@TFZ>q_n+C1ntMM)Y1a9Bp9D}9*q|yc7SYK| zU^-Q3FZGw%i-mmgzz^au;*m6x#)fHg?Kp^kmJ6oHf@zhaq#eK4a#5Bhe#b@ABmL2* zoZfSb;>ATj{R13%OLpazAhRpJ+s(XFio^Vzaed}bkJGA-Mr<~N|4@8E^J&vbsNB;U z3$d)`;n*U=#?)=XhMqtsu@aBs>M*uO&T)%L-Bf>eq;O3SW!?v2bgEe`gqBV#G zIAVnlUfGRv9)xh4N#8yBRk%3nVvCq3NWK!HkfJPE6(ejGV2hg7;yGz0eo7m$|3_-& ziW$n%jmpX$j*W` zZg&sQ!%Uh7{V3%cvqw6Sge(^b=*;J*>8rarn=dk5*xvFA;3Z8oUAKrBoYu{U1hsz1 zD&j|gdTFCy^HuOt@1`Z691TzU--RCyYdjbR$caRvKkgEg{u@&?!| zdZ9@E`cSkY`H6$H)N={ zS6!+l0%g$l%=4VE2|H+7n!F^}<@hOgU0e&VJ~YX$(fxqyT0#G+Xm<6Jpji3kT@_&C z?0mBjR8?JT=Ud*i{c9X1SBv4+!VXpizctlL-#zYSqM^CrhOXicxSOb#`-xrX*X-wj zN#i?VOxJl)%l_>U{a+$|dKYyIhLqi#Y_6hc$VjmeECOcg&klZwnz{zG;HDayi@StT znCj&r=sErNJ|LQkFBt%F+fPN4K`gyifK*E|>UVL=-;Qa0H<2!bJ<~D14Vv?B9+E z5dXj&*(vVf{VFt5nQ*{_w8H|}pONKoiLw8NnYNT) z!5TuHX#iU)fDQJQ^s0VtK%T!)>GK@FU0HI%B$V2$BcO^`cUY)sO>PG5J9De|owJ?e_jM>hNbXaKm%5swQC!q&@ zO$;iKwL3W6yvcL&j)irasFqEnszO4yi8jy$Gt00322lz=+s81r*(?jyC)Jgu78f|> zWCh>kRWai+$gD{lltp@Q7RU#Fp2$)mR#6>6wvReWwr$U z{Ue0tt7(F0Z63Y4+gK|0R6sm=BsNI}^#1l&s1t!7=dr6#1r?8aIut5aye%fdqT{!D z>6_xH3UW^~b22%z1v9^{C3F+p(7Vzq*}o*Vx52cf5Lc%aSv{>*niZ+nw<(Q#`qcts zkX5@5i~B`p3DTHi)UZ>y7Wz#Gb#lDuI7Vpd&W{nAx^rR#a#3Il9}JFYLgFfmNZgFy3`1}CJu5hI zaI)Rg!W!M|-y)^}mgW*F?k_g;`3ZOjnj+pG3F7Ra;1}JY^>Dh+LJlDL=qnoE@E;2m z5S-o{Dxfq-Ke+C+{^-E3I9Oi~=k}|IMty~VR`amgsd$IQh($TxF)e%p6s6Qh88 zlIkAyr20`X5od+#(8hJ1U@-}jbr)KMsRC9=-hfSETtrP^GL^;fy5rhT)Gfo}Mw>Yf zq5+COA9FjArC5zk%B;T+HnXoS&0J5j{uhou`IU*Kb@o~4!;3t(X7Q|kyg83hD-?^6 z>=9ID9YX2GjD^Dl8gSsP^SVQxK0=td;IlyCP6!_q7zjAX-`y=hF~fa6gW<(@3osP0 z=I>=#^FG-D@peI78IccwsM#^qJ}y`jAa6v3*CG-RZf4Ud|RAH8al_QD5XK zW%y{MDen&HkI^nR@(NmHovo1`G_6BWVK#fOY*N1%ql-fxgnGY0+!@|ACIFQ(z7z`1 zH^)K4nxBbDLbH`>b}>hSZd!-H!}_;S`36_Th^;9E`k})7D;v|bXf$)Uyl2@37#I=i z5dbGF#HATR+)@v#jM%Mp@n{Yvlc`=}4EMM6g(#*H68aawQIM^n1z<2No+(Ok4RNEz zQu!oXY&tTKB-yFG;Ir6>#SCHNEk->*j5n0)0;Z*71Wwyg(k-LWAk9@3c9`-n*s- zFHaR?WCVf_BbsOtS~Wg%?3MoIh!crt%(yCxdz;NlPXS5x$~J2$cP|HP16E6ay@#PL z8>Ie&QBjLlA=EbPj#Ty{;N2Z=FmQ?&d(e*hsGizZcK0IXq`9L+*Y&qf@oC|!Qq!cR z(E9v$gycwi<*g-_q2rX;586n|v*5Hm(~;-jr)2Mk3b8FH>s8bBb-m)gQ|&=MbKV3! zn~G?2FllTx=G?do?ODYUvRrYsLlFo}gIk&w=#bK>+bN!n@Uh6(v^*P7LmH0kXkwa^ z9vN9n?S+~RSu`6C#SN1Ej<74-Q zPJf1}K6#>dhx==_t=^iOm*$$37fm1aOO6!C6`G!>kb3K#aw3-=1!DtZr*$a?6ZV_rQ z&+!<=`v5--bHfvJMom?0z6^CmUGOJgO|s3*q0FzP#Gh+Ej)n{G=8;6E{g+D$g77jCr(Q=9Lo4o9o&5!4bfv$^Fe>6YjY zaZZGj4nB4D{X@WViZ(!dohmq!+5ZK|&e2m96EZ^jWN@=A~O=jr#_d#C(|Lq79v(&z*kHOcDg!G}9l@`Pw z35`flZ!+#$(}ej8#8)^C_ZP;9nb{#ufYa8*8|%_8&Uk&eC9K~elI?4T8Oa~YAkpm0-Ar~L<0VOF*&K<@f z^`zSmNK7ct)nD(z9(3IV{0SOBZNJp7Z7a2{v98~xNZ#}zF5`Z>zuF&dNo`$qb!XU5 z2AtQwz*oO;E)F7)8c1D1BrzP8iUyHF>^}+I{@FCQUkci zzZcXy9JlXJ)L{&BLq``+@*c6(sCXQTZzM2J(#hCxPR6QSwX!#_qL0k00!L7@bt}I4Sp$>5LfoU<%_>a} z=9t7VUGldIzmW(KaOw!twzisLvxsU-dCFwoa{0@)Z>@#)>CmyvkRNBt-`V(uQBp@- zL`I_DH2KS#)+U3I-Tadfnij*VvBX|YSgDMb?y=(`dD?xISwxnlyid!#hhzA}0^F%Z z%2z#7gu-D4fa!pR<*T2uhZu8+F)QKBF=q*D2%x5$@+1E2wo)J0uO~oQ4P3#b!rMhX zSr6ruaj2dO0)qan4>8&Y+g@`EE{hRd;);zEy}tJr!N?Qc_=I}v=_AsJh&r_RILZjz zk}j;PUFBNgiaBb5O|4ilhY~T#fisX8Ly5VdyBDKatoKoQlXoLcRB0V1N_@m0@S8f> z8Ukb4E?oE`HeM>IVBVSCp@9oRa5~3W6!>k|KTDoI zi{isglYl8CJo@3DNOz(AdYj@~4KfkqDYn}5H+T=OM<>={qwDZ{&XMJ+ZwBrj6Yw0j z%BYA-#rB+%0u|pgrU>k#`*&3U2=u!IUr<4_OFRouSM6r(Z9x~-e|RKfg~9U>D;N!z zZ>#(EEP<)?|ALy7N5UL;DtMM4k)biY(r`go!5jj}!Y;61$9%YNYDf##?fi^eI=&l2 zOdEMqBqs?tF-O6P{zokbM1!f^9_;$E$0LG-y zz%%JGd)S-gK6hs*YBFl(gApn@Nr-U5N#>E}7~OMI69lAlsmUtZ8M82yd-@I;169Xc z4dn92Lrg`78>q7?#TRlt@N+mRt6lFqC7Y5vW+<8>RMrYJ?cHvFbWvW6cTYv_udjyp z-(Q^LzlCIzhH-{t@)*ANuE=3+=v6=0CH)@3cN`oP+Fx@Kw7(;dmM$%1ca#vW*x2Rb z4?`lr(ThN-flNPT6EQ5uS+yqaKpEeZE@N3_1ZyVPe!*T1trHfm_8Ty(P@>V>49KDM zJClB4&XB2 z;~i`aZt5pncm5wb_5a({hice!N4WC{$*Diw_kZgA|3@=Auxt0BYx{Z`gRm0AVDC`EkTR^7eXCeBy-*Z(lr zPnmv$(N!I1q>pTj^qI++8(^G&Cj4Ggf_761NbO@L79N-(8ynB$ietr$!Lt}6Ue6V; zP4ab^cwH)APuaTr(=P)NUw9vA7Zyug@em8eaR)r_;i6)-4%YxRxr7bo(MNp_^8syA z1AZD=xbW9Z7N#0K_Shmlo@eXVswOp}7qPr2=krNSa9|j* zNz%3BB&+roy5qM#2={~?BoJz=dBe2vRwMr6WzNK#t$_int|ZQkZ>m5RW^>plWu;nS zPSQp*jj1pv&<3fdU#qr)CrWjhOX;yeJQmYqlXy%fh{fuw)n*%^i=?(iVRXUOQqH9! zXGv%gdfUAz(>26X5AU*;njh0#aiK-*FJErNxvTqc#DDyi)}kOv&VnjTdyXl$h-H8E z4~N3B?A>QZJU?lhdvCzzd)F^qJ;{-F#)o}*Bl?JqBdW=0>& ze18Y^4&O1IMeIF0_EKZ9T=VeWn{6okUDHI}Gp*X6ga>r^<+VWN0#Xu8r+)iHcOr{~ z@qM^m=-W{kw11%tUhHwenI~m@6UK_T3FE zMrIg?yocGO1?M~G@Mg#XG~?j8KLhi;NuY9id`W&Ku49=@T^`A}!WihLtZx5W9=9Rj zE#5ECDgsKt53_%%ASi)A=?_AIb$Fj( zyV$RkT()93+5A1tSq|$zOiZUSN)&iOysnV1PnZNIF76ZO5lap;ql0=70|b|%{MTFb zi9))^h`TqM-4{oY8IvdKk!PD(6&dpXdK*pKl3x&RzZQ{bi-c{o2C4wWGMl)Ijq*PD zG_;d!5B$5Ui$+$7c)Zru2}~K;u%d$G#TDFH`hp>7Vqt*@!+mJV7MQ~KXESR7_>58g zJSysiXT$k`l3PX?)>C}V6KpK->y4?ZRFi-9KA)gvRH_qg&CEhfw6a8fV=`muiOk{s zNQEms#9^_cn=JSoGxey!AW*~}<+bkya)}%1v zWM}@gP;s@JfNPC|flaUdBo4xC#&iH?e)0NGA$EbGc;BGRwLK!F+6(mTIgqNJ1GSP` zZUx}1q;LM4CG4{Qn7o@6FW-S3%W+e?-9>c-t9$gcJ{WQuF%dbU*VP0A3BNb-5y@n9 z0_WgZI>)6+CmsG~y=NC;rahFSW&jUrrD6%Njzf zQ5DZ_;Q@{Jw1@fSR3okEL|2G$It}cK6YLUZ`)U00ZMPB!2Y)2S6eOV(brOkIdZyt! z9;WSkN+6Yo`>nsHISTR-`;5PCc%B)niw{I+EvKx3M<0=hfRd;7tI2`nYHBEO2lD&@ zIHsvuP|_ugah8FtC49N$ued9_!8m*Fk4w@GPUOzd1vox$<>DanZS0rgs@*L zJP=YNG3izpFlcfhq}bzKU`~+4c3q6%GcEv)Tc3J#nrSso+l4g+Xpz<+`fxS82-_{yuNkUv@Ow2EAlBr4B8 zJ4O9p|A+oFb4N^+6kX>P$kBHxL~Yu5MQ!q4Q=2q)HReg8gJ;h=X{=6t5?Gfj&QN^! zn|X8c#EHY5h6ts4*s5+jw!^&LsG%a2*6UGjmuB)ki_x1oR&6oHr7mtjJ^9N&$Nd)k zZ$zo(?kqM$q?ewjo-Ag8it~oYw5(3RrT1I0p6IJnhog)p|6FU$Bi55^~N={C+Wo>0msV;+ZaOyO;mhe5hqY{<#=)aSo4T^oZ`(lN6~3@ z5w;pT{yIAui~RHGKqHq? z)A|wBFccPYqzFdfn9+-%sP?S)ORiSBI*j8f*>fFqoCnFNDv88Etc6RsMyEN%D zjz*))zJH0h8n++q3hCzvYrPcNyb9w4>kCK4J>#nN@|L<>gJtsjbpGzT0pH$~-%3PY zUs9AIWI_kU&TTKnuqPQ8$So zhJ4DQjm=!%&z7Gf2Xv2OW%1c}%Ua48Tv59G@%xebz|4g=AHj$z}+r^cqb2 zGB$Ki80S=c7ZE8@KLo!4NAx@@e@UxT-5wm?q-A;Z^4cF@?dOgycC=L=VzG9kgZK=k zaT}~&A{7>HNN=~f z3Eya2s#An-G!3@Lo%`6_}n(3gppCT zJ*j)5)#AF8)7)?v#TPo-CgdT#Z2~KZwfTse;0;-Xu9!fbfWF3IQG5>)5~}n(ltNQK z3y2SUGO%zO?hE)t{TC+svuRJn%2ylsvt>*3{7ax;S6~Z zkdOWl1@dhLe9xtsH(o)Z^F=%m_?hD1`2Rg8ZLzD#?xys(+tL z;H>!8^2ZKGui}3T7M8C{8m*rmTN?hypFbloS)s5(`o z-^JevK2oCL!@nQp2l%s7mYfMvRFphmwSD}VHn~<*tP-X|;(0nzM-Rn0w zsydWL*p<@+=r0JF-BD#z8sFz{Hhq)$);+;$ReX2RTnS-Gpru`b1eJLB3#ZbcpW=D! zE*NKZKP*B*Ofry4e}s}w2u0s2h*$=Lh_w_d3%_+EB6(cTkvy(9B6(b&s$OG6^0?lv zUX!l5OF(WBf4TM=rxD3xLWzjK+z+{_GWbi?Md4r@$$Xh6+#UbyEo>j6mx2E0bEfKk z88X`R(U4#!hz;l3Zo~pU=G-hQX9b-pv*o)8}XWWnyF2N$xf1g zwtY4&S^{yBC45ve6(M%uM7E5CBjPD5C}l=KsbzqwK=BVU;;aP zB&HUThYETlmu{h}4F`H(7&sbLvwLVHo+<4Ly^C$v3NqzhYTSk$dX}UhT0w?3HB$hI z1dhp0^*upCv=K~SrWTG@`N<$DTbZOxc8bmsuw)pR4rXNrrkicg^jB<=`vPaiKNB*l z0R928ml1)Ex5$W51yM}F4`#s>;C$MM7!@5WD%WBf5GyLo2QVKoE?q6iLzt`rP=;)3 zMg<>GzjL^U=r^ zABVI5*@)!&BCL}-CyEYV1}d2op~Jt$`y8gjd0{%7>G)v&F9g{fA5C{N9ed_q#H95K z`b>m6Q}JCW33Zp^PXVDmgXt_0XG;5(AkMu?18(H0z3j}Q$uWoMMmRQ-|Nf9Rn#t+zs=7hkEolCP$v;Y z*M&$0a+Unolu#lrEv!0Am|@hPO;hHod7C9qpl zy#J7Vcd->|4p}ZsmaDa#hQ|qSPsRikcWC7Y)eoRRf-Svf)2bMc6A8+hKU)0|8Se!i zFHWL;y-_`4BvyYLm;|peayQdl<-ZoD?M^eB7v>NO%$=I7G~Uq{A>bh0#1n;yb~O>x z>eGpK2@&mt2+{t-Lt&!rV_&oX1NPWv{-3ai08$Q42UudaX`8UccS^o`rcEuk>L2h~ zUZz@gN`Iw~dGDDWYWYEZK9?qUpS6Z7v>KhkXaHf$53hxqoz{Cm{*X~Cqge#SyNotZO*QQucXC_or*DdzCL($qk9Kqirg*n2Il?Ws#da8}B}6D` zM}lWEI5#vcuMt^ss_OUJp>Idq-@Vg?ePVcIDC8a*9Ql2*;Q9pEFT)W$F;)s;z+u`v z$T{9W0s|9)!j_#!d9^w|9Nj8)AtTT`u;^MMNU=5=LnJKW&yO=WeQq{Ps14ILoH)gd z*~3Omv>u*zVcT{PY<`sD;*gA`p5fj@qs}I55!YQ5o8=Jnubi1XwNXw#IlG z^tB0XA}$a~3}Yvx~&W&lV1 zj{?_Vc5h_SpBKBk>YQdY?AW+)cs`cYHH2pS9~^xCbVx=J0BjS9&&Apb>x%tW0lwT8 z7^;{Gd-4BGbDCGY;m4RZ>p9pTQhSi#CTDt-PQ&?Xw`2y_It zjw9aV2b($q-O!4iYT{acC{zHTZHU~(59YM zIXu-*!ZS3jPM(U>&J5oUw?f-vyIGvP?F6bC%X8W7y7K4o^5!qYc$u;BS;ts@6iSRA zV+8;69HUa-?gfg!L15Jcd*Hy2U7_ZNM@2R7zSl#Ok2hXdLbCY!SNhtFiHO<)R3CHF zd8GuoF)YmM3wos9D@|#9mG&G@v-%9^aMlhEQQP$MBe2j2)K>9|?-+}@11XDl2w89vr6+`)_cIQV#H2Jz6OwS}%0vDkEym zX=SaaF;xFjfgh6Xf!0tLoR^hYqmee)Fyv#uCjw-L_6!)!jGr0Jih-j!LgOjDG87Wy z5c`DZ0-HY2gEM1M%YZVeR|*a57U4uDuZ>&KSK{@C^4t-EtGK(HVE&VCxdB78UVye3 zn*J_IsKmq+o*j~Q51|oB>P@C&y9BP#-)7x2s0=J9i7V4?EP?m6{p|Mmc;MN5$(rfY zyIG%|hrA^{VcqSb93F;iMsdHTx`c8B#=vFjWz4^}D~;#i({HEuQ|);z^l`k(9|AoA zns?sldhi6U;pkAEv=t!?@@R`;dB6-zIc5uoKx#Jys{?=|2hgq{0qV zK!I8)P=f~9l>kXkKM>+GfUF%^yY)|xGwCnZ1f&t42OADkjMon4JvbanUn?Z8Z0a_# zc@G^j?4P~%=grJQt`Kjy4ntsJF-0+-xGfM!x>f95)GKW?!x>c-uC9#}ioyfssUCM)0M`QaDq!aG}*nSaYMCB7CSrui3BcT`5IUz$NJS`HQLqZxS z*hK=y^MOnD-qMkHXgFFHA)P$Xc`FXCW4eDYq?(gS>0_~Lg0ldyoM zANYw@L4*xzo5=J`-vX!8Lax&ic}z=r)zySW@a%~1deceH6Fqz}MpcYa1fe0uGgk~v zX@pNlRlMlU^xR!!#a;WpLF$VY8&Ay=dk!ox@Act{BHi}BH8f?v!5pxH0xjJXBb z8QLGCgja@(X3-w4`BLuS<>;Vz(J$!h2b)B+_uHy3BpfX>`U~7(F!!@_+jqi>`m3(c|154GRw_4D*~C6S)lJ%nPq_gSaa!C((8oxzeJdfkmcXA6QD^wLq?z-z zxb~qAxX=WjFcv9AD*tF>IY+m9Z&VcoThk87V|FV1VZYNI>vmsD)u_P^3A+m)vu3)- ziTZz@i){KZT9@M*Vo;inU-aaIwI_f5!0E~{%O*XVS-=Q@))0GJVFgzt@t zZpo18uD!VhR@eFS6M~;n8lKOpw#m5dN7PSpCt2NVVap$YBP`7W?l3nNgO*i?m{$(G zGd~mxKCL|gRy3FS7WaP7@gYj%{g9HTrEplBSuM%_!Wi&!DYL5Wspa|$F_N7mEZ_W$ z#Uynp?w7S9n>N)(+h!__<|&d@pU@I{W-}aGB6pwF;3`aQO71bi9tH8%lC=^)yKZbp z#qxeYain6!2Xig0C_$T=K$TAeeur;Va9jv*^B*=cn;L0Xe6K_`^6k@6jlc(@R+OYo zO)?sRgAz2dweLS}M2_Uvs74kh>ua$R&I9D=wg zO`Do#G?FhH8T+3%B1cjX)yRSWifRPHq*i3trrM20cAXN9u*dHItPweqQ|3q`zUW4L z+(^1MHJuunf=1@bMrK7CNi`bbTiwPjU#+6i4n@wosJh2Q*FA=6@XWTSBzq2*6H!VP z(X2!i=(;z|Ch1_WL#W5hJ-HUe*Cis3q-a^%AIcniUF$)j_Mc>xk#`poZ?I~Ut&VMq z_afQRjY!?9csW?fW!%r#c`|0h7Ec@@Q}Z+z%P<#Q3y>xFX#-z;_I$Tw@ZXP4m81Gs zI5qCn>8a0zQ?D5$^^tJu(m_&h4yW!OB=xFr>IJ>0r~V?GdeD16W6WK{)dmQGhk97ki~n!Y+3YHck^ z%WtW>$@KA$>UQXCz8hjPZ8&cArw*w-2{A-zETg=&Cj&4KS^{>*pFK*e1+V4kSZH(X zQvA1~vQIVy&o_Va@k#TSO5M((R7a21pLa!VNYnv0$tuZ&wIS5A00Bty@T9%POcMcc z#&F89@zTe@Yx*Cy@IhANIrLF`hO_JzUX!(FUXpLU7UuS->yC{|!!~hll5y2|#iadh z1&03{RQow{O|`1J+K~l!Wtl3j-u4AAB_3$i^Cm=a?^Qg1=T5ldD;*yxp10|RO`J54 z_7wF5uB!R-&eck-j?WivRX@UacK}{aaE~`@huHa*D!jnczslTos95pN!=R6%AMPKq z3ojvtP|O@V@LiWdPwyaRp|~DRQ^GF+dU*$vqd(4sh1af@C!s|+(5!5B)}g^#9_I*V zLUy=PnF%4b7Oe67;o_Ww5Jtm&2?m%+?x`OS_}M=OhqFC9{#Q5~jjnm#LDy)wZ-euA zf|rK|`x4$JSse}B9i?GutaO{gqEJ>yTfqszk?MB!bL~tNx!)p+e5f>3;_+2nZuYgi zzgCZ3`VLM^93L(CSp7WsF->R^mTD0nZ+@iD;veDTYhoYsyaWm{1=idmtJ3%oW-(5U zAw-s~Ee1mcMrp}5p3nsss9jkk+fU%@N?YIV2~G5DNzPq|Y}LA)e0XhI#Ntkz`Zj(; zivXs~q3dwHsfpYDDhnUt$V5!lYsTI;xNqSeHxSrs*t}pOL$Nr@it;NkX1lskND(G= z=QGFpV9t{f1=c=zEW>duLiG5p>;2Y8WuRb;;+!wK*sCGHlIwD z2mQpL)@VUt9 zeOJV8H!9LE?BiK1#6;odQ6T<4xRPa<7mg6+0g7nXWp`?ip~Ys2bsC{I9ur=vkDobq z0xMNWIK0sAls-F@#$c~;jy3=&!Wu6aDhR;%=&REKL(6A*D5Q9SOnI04OU(k<96J}5 z0ULgdDJih3U#K6c?>jawJVS>gm?mwa75#(`Si8y>av!D)?~@QRG8$L7hC%ZaGu7(Y zUOgmm8|;cU1zvr;GbFEED!x=20hiD(4xQe=(`3E3_ZzaFmdIV->e{O#w6kNody)1O z%QUq*(+yP+zr3)$jSOS`@!H%ak*1HyVe``6Z-W!M*piB)eBP`=qFQ0ZD5E(;I<6cam@qZPh| z_;7hz*}rHaTsI)cvo=uzu_XsEkxt3@Rok;?B{(YR*XgNt*l7U&6&GRl@*1L;y%HNt zhWduOn<#g&r#+cCzihC5nZ=PAr)^7y^|dIg*KAp$aZaP%SfyP{MqJ2s0=dA5~ns8lAGZ0v;DKcn)5~ z+jR?yJs%Q^2&NJ$Yf}TT0I8`S+E?NJr8tvmG=pqa*qtG)Fxtzr2j*@*8d5jb{nBFLGJ3&mbdzid>@Y1C4oC{7?KNLGfjKoca2df=MgM~i*R$d zD-pkrTL{XNtpq$LX_;`JM{4Bi1mG;3tkpnet9tFnO}qii1nf7lp~q7DDbaSa>_ZZM zsRM{o7-is5XlJO;ya2`>3obEN*vrk&v1=9mT7qfMMn%6s#0dm^j@blI(C=UbKZs(l z%w8;E1O{K*6#vr}X{VF5J2+8b{5?Ad!T1K+oXq+o)WD_GJ>w`OxIbYMNwzTp_nqO}QT0oI z#uUhppZSwtM`!Q&gs+5u3+%Ytb)+ z@a+L5;#G#LR1HiWOt=Ia2fX6HA*7G!#u;1SdmX&gF7(ayOUWQRc<`>+KV<1aoB+_now#{Kha6!>j+$XXMc(l z!D{+N(0a)0F~Kvmf>Rj#-dB1;MLcBBrgBGXb-;9Gb?QK(9R-$zC;q zI{tlB+>3scLi)SXemroW#El6?yXbhj_A_?77U_tgVoquDD`k;R*Uu&SOH=Z;-IdmDv+lT zv{H6Hw_AVfnd|Xmio)h-Q&ikxh(3g@tzIkj-TA^!R35zA}fiU{}jS6 zt=&%JPiHZom^{svn+QB1d>I%!D4E)VngN{}a6+V-PCFs0F@*S!>C?bdqD}KFwM5LB zZ|mU4L~I5`*~aLw{Kgr98huWb{~2vzWO2SIGFIQ~*yR3FJs#Xu*(A@2^m*ZB)OgK& zyZh+^w!S#{f_}X5e>)HIi}(gaOcI)rPfls`=E!p{FSX*s0lI_t08y|$Z2dkydlP3? zpVLcIljmS+vrA&-mKA6mZ}{_UPTf@5B-TmYq<%!C{||(utP4$o%bN0PS4c#aftb-I zjX02!^Qs6)0QSIHpX51^S<@3g&#g{OBGOh<6*7x8D^h=_-e_e47`#^iO!eay);gJUTAP1wv=Ahn1FL6;VC`o^^MI0w*XX_@3YJvy@6Km)fd+qJE&Q zwPy-Io^e z3dIX@q_)aQzqPuP4WAwrK*p!h^=GR`+XlEH_meb(I3Tn(P*`*Y&uyy7z1%eyUXZc) zZ8Rn7ruroB4%b-Ppis11xoX!g|5S6o;BV}4txVX0t(b2y)t}|v;eOw13{X2%}IJCu440TsRg9eX^xO-8%N!tJ_5 zyLsF$v%*bO*xTY-Ps34sm(hnj`bBVC|6B{T!;Wek+>X#&)E8KS@eGFM*7`UZFeycJ zq)g-ZJp=`N+42YmhQVFb=YjbH4~q(?g}|=}v&7wzBA=q%q-X~)SrGkYfyp%>* z;ug6)yexWyz&SOKSO_EC*T+^tGsQe<>~~-B9-yyz=8-M_idYMc8M;PH))3GiA`FW6 zafh0cXUxg_)Z*uIJ zdzs<;?au!KDsYcBhW3@ezz8`Y&9SxzKk$Vf%69B=O`jWAvmkW2Yu?W;))E>V$+4-_ z`9Bf&SATYE+|PCJy`N4{!|0$=2iwxRvxCoR9G1@|TCu9Z;D5DFFkKD~h6WmZWpZ$_ zoGD*B&mY3D_U{9YXc+aO{(6#9^mC~THStyGgj#gJIL?c2jfrFd6*yEyWo#FoK0qU!N zF%Z_JB8&h#@}tpYjOp-a4?#tT-w+@V+cKm>26;g+K6R6B6R=B@k;2w1?9hAh>s=wOfHk4-ze_~4AW5R8 zwCT%1mQ$wb$KL6R;JXqkI$gt!X_tK_78X7m#T+ir zsAwacyAgz*_LIdT3`9xViD9qdYso?^6TASBaU^6P9p4}D{L6&fru1(%;731=y zgWD3hCa(?8e`IC|N7XD(l<|L`6x%V7wWEvU)+k;$1j2RAO#)ZZ{OKF%adk3RqV7BT zs(vfI6KrA~0vT)gPEfxqLq^()M>#F*C@W+24PoAh@|+-29jLkLP$;sheneRcCW0?} z{s8f1w_z+J=748SUgT5@62hxgCMGDJR!A~AVsyx4B$mvxu#Mz&7qJE=*KL2C+v>Cm z?5=-`vy3)XSe*tgKu%h^ZLbcfPS_bmb(#nE8`{prE}IdHR~w73{?vbBpfRJlyVBwF z7uzwfMe0}q`y#)Ddqabmqcu5)n?%@-y29bC=*_04k`toYq<>7|Aeq?&*o|kHSznmL zhfi4{9ia?`J{-#sNc{t4eIgkLaGoUmuVD>T1Q#Wlja3p}IDcB5X5wbyBMPorGjWcP z1fQRPXbjp(U1&~f7c6n_gObMahierN)sQR zO!RC@Ey6j@f>O~p0&T=IvYv+_B)^Lp^ji@J$TVgpH)BwM!GVb_m_7w!!ZC?9yHa28vL&%^&J7G~3zO>9B2K(OSbG9-g^&{~< z9Xn%2)F$+=uqVKRg`hjbEB0u=WUn1wdN8kvgC}Rp0|EAGRtQ(y%Z|QG+k>g= z7Pepj`1KQ0u2viDi07*EE!%I4M_@ zoW+_9n`Z+=WTD-5|&*}<$3*L;aVpTb@F0r+iI^xIjZc)6W&cm%%dwKW>x#GRR!d*adZraQB){_X~F4V!cR5q=tq#=vjF>E}v_E|wBM~&kAC<^oD7STU0 zZnePSat}4GUDnizb5Zx|HTO_8!GD1>Tk{gT(%dZP{qHZaYtk}Q{ueyceB;K=6Z9N4 zJ+$>o1Sc`0O@wEWla|h@&+*2@`TsEA)&+l{3e&;)cVJYrX_49$-=9sqnCbrH)miQ8 zcJ)h@Z92y%Y1zxPIPiP^BC8}`guv~Ak+h-I-%Om~*#vWcd+sIGJ4kxQ{hhbELY_^@ zxfS*q?jRs*tuuPp zWb_TuKTq%8!}ksB-bZ>xh*icjiSs=-tD86$&AJ?uTtqDv<^HC+UC#?4N?#-;11XN* zENs^=V7>tTZew_5lAh7a7hntsLAVb`1HURu7LQ^UC?9KVQl1Qhi0>M9)VW!L1c34z z8^J78%dK8}AvT_t-*kXE`?#zY-wyY=2-t0M5BIDUO)0*Pk@6s&YD%$2p?VxjmC$73 zt@ei+6K?>iAu42;h{WjeuN6C{nnZMh{I*EM$8wp|2;tKvV*SX+mrT+vzj4wPfw-)8 z|55>o#9jL*C)3`1-ozLqU3)MANaGvg>OA?SyV&&Lvt*v5wOpk|P_;QcE*vBQul(M| z?Kow}X3JmWq^(%~@(EmE?*pCC5wnx4Cf=XnW42wuL5bVF6?|zBR#egC)cd@JVYHAY zd!~%E{)Lq*X%%Un)}%Hmu2CB6&m?cVGwvjJ;&;MkAzdp? zCbotfE}nt;ze1tL58zsdDO|DIQLvIq31o zt+=e_V|T49n3KWs|7w^CLS$*13`I(FFq2yz%9BuI5(W=1+qj2p8MALV@1qQ=p~mqm z#rqaXG3qw|IE!PW^60dr$QGgwR$!RQU%KQ4Fj^6pJrnJ=C38C1-ps(YbHecGeV~^m z7%-iIDJKtv^xJyHea|qwe09vspvowc-j@a$UcS=b?`65Dw%T5PDWJ7+iaf8ufmmxq9+ z({uBKU9CI|$OD$VdA}}CjK$ny+{Yg44nm*Pyp?MsJ_ms64(QeVdnrkG~}H9!u9I&cH(b8DO=R(HPvcEQ#l(nIlmW z@0$7;eGA`ZyKe@nzjqkZMjHs6W;QVKn|BE(uJEgo)h@x#r(%-U+S9EJnRbC(H(P~e z%A7>8(*Qev9V$Q*AR!LH5Jhnc;*YUje(Eqz7c#V$t1vdm7o8-iZ1j9%HmKF+=a|gf zsT0}gMAlG_PnT1tZ(ndL6~6}^}LSf#l<-= z_zwhz$?;p&4f`$nN}iXcOlYWE#lQpG)eRf;^Zi!y$H&dENh#qLZxNm&@S<*{hf=E; zkV&qpVK;J^=5ZkMn>D*b+UB_@X`&8Hb-p67CF^zrI%A1WocmEV&!ZaI+<@9f&ju=W zZRG&iPORNrk-1C^0zH#O0Rf6_c#p$B#}-MCM#qQgQCp&TBt*Rk zkUg6q8z3;=W&l{y1LD5&{o+cUT@LmIC2B4phc)qB0M=n?x0I0|%6)o*u~kl@p%2jD zeyBvK0&g^Rh79`L5-0IbFpbGaF?M9a5C-+ktZ=q1alAc>Y2cUP3g|Wd6$jU%R7_>l zH5#k)9hDZ7R>Tdge1PM1COqQ=?w*?{nog4mT4@fL|N+cpqU*5^{jYq@RrMykmLT{kyzk;rJBo4}|1EOop!;{nRSbz$dkTe~J;~be4bUnRrE1LWPr$^1*#Mq|&pFimR23Y6%b!o1O}<`8z8r()E)+ z3IFa+L(60m{LOT%Ldze4T-?t3I0$A>&?4q#C|)f= zteT^*xQEe5ipMC8%Z3WFPjzQU(;>a{n9yko)yf!->5$iCmOu}uu=6t ziA`%TMf%gnq66>{^ucex@mk8jST?keHbXYYpQipRzBjU+)A;OjVGgv8Cd%$I3NUu^q z37%Wo6bMyzhN#GGF|vrK-Abi?sl{m4bS)|OZ1)~)YNH#Vk<^oI_X#-HP!Fy4AD-+A z=~r|E9;(r&^_thqTB{TOWa{5i?q7Wa`j=hnRJo@i0x3PNJG?5b%zxnN(zT4&{S!wp z-U^?|VARANC)h)PU^jB2UKg4*^_3}FZ)0m=_2uv)m3zEvUp4XQFcgm@rDoFM8MUBa(e z)Y*$)AX*esALiIA>>c(qb3b__aPvOKm~0;fmr*n<{qas=fMsy(CV~8%B(9^nFE1qE z!W=bTV2Q93;f%x^NG$LcWo(o3u!(7OxqKvv7FZI4rE#lQ`AYRk0VjC`doHcWdSM-+% z(|KsuB33d%?@DlV-~GgfMsVEc`(AV<2W<2zo`Zc|2%n@7XyvpHG3isV*!@Jtr}u5UB9c7ZN4(Y*z}d3;7UT@DL^a-@ma*# zN>3-weU+6P!*YRZn19k=YEF!t7vl+}qlMY_9Q6Ylc17^F%F1mti>37yu_pf`e^F0R?GKJqR_>;GDjoBMyO2Z`?=hMw zCrMyAiuWKr)+fiwZfvB|9zAVf1@qQZ1)gA=ggCKZXGgSN6~}r)a{eIew2hk~1rxj8(7|#|Kdi+>!Sss2TCVf`6U}NI znA<2+8*)c--R>oQw-5BWNf zB()lXg&p&rKRYH@s5TVOG=dId-WA`JSRM(-s3UHJ=V`@F;My@SitpF4FoqHgy8f*2 zkH9JuaUqoRyQWzpL{-?+qp;sPRF4I;g9B#GP<^#(YU?qF)GRjJ68EmqweOJ2OG?9}r44me)2-3k!F-Lg-ZdeK_|O7~UhcEwOcP z4>1|)q4As#7>bSS zVk1%lz-38!L_#=&uRn%OWUj6~fu1OjHpNJUWfdZbCfwNu-f8FpdsU2quh+T^bZ_W) z1=@e}U??P1gC+JkzOC*8Z3OGbcesZd=)?Uh4eH9G8N}1` zj!}H~=&(n35APO-LTQTcb2(jkq6<_J^B|XLUE%5ag~n3JbbKG7bw!Iax{Fp)S@Lvm z7|smUgj_yWNa#V1W2nC-w0E23p~3&d-n+*~Rb74Ka|?u!aDpTdC6TD35(y>IL^CAO zNCHHR8Z}zfc&nIFp-Sb9qK0H}W;7>^JR^wnaoz63o`qXHTt7Um*G46pu%LCi!34ALYw9d|O!p z8#hnAolyv@{;`5bL2dl|8980Dk9!lNUg2FZF3g_+m2ghzjL|5pt{3v>T#_$Jl#VqT z$O7mz2}|3+q-X^M#o`ptII+{#eG_G)s9HueWrKLoxOupeRS^g)1{a~F#o;lwYOz86(XzCYUpcWJDLsS-~v6yFvORm8)whdD9$ z^X2pSOb7TgEDKf4EbU6_7@JGHX=nf!7^B(N!05HXcujkpfvLg3DW=88RFZa~dx-Bx zDCT`UNaNgOS&QcQhJmQs=(H-(v?7o;f$1!kd*|(D{`ZWeShJ2j6sg~YUi}aeK@=OFr z#B!7i0LIa4V^y5arSn8-F88JN_~nwL<-8#~Y?Q7{O)O!*07VOJ+6V)|&Z(KaiKeo#8;K-xdNfE;O^_h5h-aLx0U@NI~9&RcCHZM7-JR+Hz7do4d-b0f8W@GtUwEDXHR zK>+*i1M?Zd==4Rq4|qtv2>T8J*jyd=o)?&DZ7i`;Q<(^Gn94|DvQ_?VWQhrhxGHUy za1g`PU^T6Lf=A_=Ozous^Ud29hYx=mh=GIJ&KN^Qm_K0}Fb{z;=WK8{0Yrlr=odN> z=Bq!^`4;(dSyFKXgZ>#cI%{0LP-AO_(o7btDIf>j};4XL+NX z6&7XA3WyZ8LfKh1e;8y5Uzd%sYvr4mLZLH>kiM1$g7o36mPnuSg`&}-eg+0O3-0xJ9GgUoHjjwSStH;iGztkn0oO<)~^dBvVO zs=z_P4fc=Eq@a-jmjHWyT#iHUaKbJRy|@LOoXR>KHw=<1pk`D>jgGT5#6goSDwLCFzf+qz-I?i2b|C$g*-^VJX_&Z8iTjZA-2t(w1e)T zom2x!%e6^d)f2co&b42jqihv(C;g$!IZ1k?wV=W|NnTf!DX%RWCbtC2cY2Q8bg#2$ zvYer84aWuP;g)H{we$CT_A3X9#@&-ZZBau-C+sZg0n~%~MFJv!Ti-v`*Hi8E%<^rnAuh;ElN1D8#Iz)A(1(xwqOz5^Fx_K;v zV44=hz%Y-Eh&iFh@u5+d+E`W7QI?WtnWBoT;4#VY+y)hve2@|vD4DY4(+02^r|YVa zO0w3Qb4zU}rUe`cv;i-de#EY{n$QvisVp0nzZTDPQ$*d!?leq3==T=mcb4%x+xV?Ae#?ws)~)95HQ-Bj zR=Dn-DUSl8+i?LC@}bd@ux%97f-2h!NxqARa@*OhU)f^qh|5)<4d%v>jMaR&^?{rJ z)5wUN&ceR^5}PG=2La5Z?cxB(J+2A!z$(PWGL3Ih@iW4`y=)!R>^mI z^lhk|W;_j(M;K4TB|mbkG>B;dtz>;O>Lkf_9-;%IKb`{GV<+Q;G43%+0>iN~KDuOt z(4R==ZTbwl&@IP%*Jm~(CyjJ2wxgPgDiz#~jtHuYowISaRlyNd=MFQ7m7y*fu?5El zzO#~9qG#pai$lf8{z|_*0XQM}j8}z2EHFBxs!BvvIZaQYZ3iwA%n7X`KE3b_Zbk}# z02yZ8*hYlh`@%`3-VTTBDb7(R6X2k8sw0PXdKx{2?i0~z)69Mv?GXIkHXVv-_ZmU~ zTqf^a+9s8*zPi%`iBEH%98VJ-WSwE2P035R)T=oV#<;Kkdtz}aS*MwvFrCP~lgH&< z=P0CSY3XE;fYhhNq_NnwW@;CDflf9ftI?*ynJ^za(qb3n?Ge#smwew2jl2z$e4C?h z!zJJIu(~K_u&O1n3M|HXIX$TycS7=AKjb(NTmhdkO_ym1?AwY|mveu(WGw~es~4QQ2c z<@~P^M!aydG%wGuG{7=(5_YZWzhdd#@p016ZQ z^qofdlt2)l+_Y*98={qF8~N#{O7$OpOu|)A!8KS z#;1*{J9>`@96p(*wVO^K8I zqwRxf(~<<7f6)%hojRV2{zi5PXgr|ajnNgxVNrok{n-jk>vl&(J1$B!knSrnF99w zx4&i8z$kI`M_`^682&f(=((`aeNy0BYvVL)pnQ|(NWwkO6kQ}g)fsbE4}Am(^rI!h zGIBB%>lk9u@({kY7>mNn$IqCbWCW?XjAmH=K{rv!yPP00~c*13aly1tr>--6Fy) zpQh1VWX(S$PDH4>g^wT7o59Lyb={E~3D1;hr|?Y+($Zci&6q+`SC9UHE~bBc5PDqN zCKfqe74f?o0h+D~XLfypif}WH;HRT|f6-d7+bp#Z&y?T8G2%@&NNE$q!4g`rhgq01 z09lKT&;zn$ZDfSmGqN5+-gq3(Hmz;Aj=(StR>HOX72DTaT(S%EoX{E9@!pmsc$ZxGX3RtU_(9)6JwoLlJeirhTZXX?E|nGtOgsyeJR3{Ka4?A^%>3U@ z>(Y%CY{K+GLNwNvSCqx@GgG-hCJH>A*%h-4rH(<%P>tH&a8?f!Cw%L1l(8ds12r&n z7}M->`UySJs>7(8b9K9iLHSIN4X03NPghgn)@byUsZ0YkXi}N@d9*tn_65#y>7HOwD~s6zpe=)21bpiH$lD? zYR#=Jnr@FnuM6X_C2G$!dtNy%rsqp-(VmZ@p0k@Y6(5?`MOfC;J50pM@$^n6ZVw%6 z_ic7R+OSdiTsa6TGD!y#Lo<@J6jyVpPdO{8zm20<&wQDU^~^+`YzRpqe002;pdYLtw1}?VW>+OLO6Sf4XkO*NBr=l(LQ5Fr$z65`Jx@ zPX|r^eAcT)SIUozISIM|@{L0%+n3M*cVIH9TVGS&&=VtRLXp%lAmUFXp{9ic0kN9`8UczSBKD1 zD(z_O8L9&y_6KBI{nlX6s9R=&Mt(+@9)1XOP->+e!V7s)!PQpxlhl@bSxwN`ki19Y zGsGS#adoAkT6o$hH%b0iD6N$5B{qBhKzf(1t&jO|M|upDztt%hwb^CQa^vAVUi-zKXn_+EMplueiIi%vkIIx>ip!0hjakmWC zQ(MWeP)2|uUx`23RrHM+lyX<66u5(^rgk$`6crab4d2M74~=c}20^;kMt{WJR(Bc^ zuZl^K(jMGzwg5k{jTY^*@6huld-sdXItkKEvjoPD%7;rQcHst8pK&$iCO);# z?bd$QWgh281q|&8>Om-f4r}^xkF@UtTq+z=y(C7DyPS6F8(&Cj-~(o+AXm>rq>q=Ln%VsEHfx0O}XO&eE6XtnBiLzFIt! zZ<2ht&Wnas34U~NNTaeOy{6MreQgJErlnb17WMVn5kYA+e)vMVDsf=ECEsSTS34^M zrMl-02WobTdjmUs>D*4P9`fE1W~o`uWMvP{Ggj%%d0|#-FE&s`?yuM~#p$K#hPjH< zm4ro*mVoLAt^mqdM=~=U7wlpv#X`{5U`pM-sLx~JPU43-8 z)r7pKO{8zW4MgvU(^?-PwD326AiU577nZj0NuECXx)vCukG`(%hqc-%z8&swwHNyt z;V`pZExLLn={TB{n+_a|Xizv;CMK9Tdsf$&qV>vx-iWgRRwH{|IC5g4eY7Wv_@%}$hrp*O z>*GLmmbFwh;yHTzQlzEh;nN~SS@h)80LklZbBNVNaK&D~jdcYUY zoc(ME_iSdob|)+$SRdfuA>U!>{COi0fUe7B?d;Wt)Sb#wH=^^>;=o1b*vS!7qk&`K zeg$4vj7}c4U1w0hI2#aD!+k!?))50+&C}EZPDiJXQ+Q_*>y3Z_1f`W zdUR~sbdjeaD$~Z&xY8V(Mcc4jj|x2bXVH#DXcrjwB+tLOfm$^m)`!p- zG+Fj?10L=q(nWXKx|yGl!4la9l_|1=-F$yg136%8VAZ5yfPDtd(DzW$24J&)< zVy(inz&Mp>!SJP4QY`}QW`_Q2j!-~q1~C`BH<9L^^BJ9T|B&&eU+&cng?x_Y?iTmy z5nNg%e*zQ$5nU$%-`n3sZLVGaJ-B`8=B`?Y-jjug+9v=!{c?J zR;kM&*IiWW@DQKB7nLh*hc~zOjynx9e)gO;K_+}QAUKr}TnYGr3e#Np#K?E{E>WkU zt_sLG9F53zP+D@P%~&1|5+OD0qi4p`e1fxhI5+nzhk6MPnJbh{KY|nAJrdb-DZE64 z|NeOT_olr*Hk(cIeQIGakd>r7aZNZ zx%_iOw=Ne$uU?ph*5q7Z)?Xc9t;m_7?cIkW0kI_sU<+=rZDgfN0>Xn~8yd8EXv86)7MR||L98+RmqX1hAn`H{ zMo4z?qRkS5*gqm|^BJn)mGu7FgSz%1B&h`wgMPGoL(k|EO=dIvG!l?q3Pj%Y*s(c3 zI~_TN7Mi1HhwNj22-!E!HC=7G`&jdd10=Ym#aqntC1EQ?07}pE<2)BmmI1CfT|#Bp z*x+%VxSFHD76;}5^~J}D32|tKBhlD%n4-TIPFG?~PU6P1ll4n*J1|;&j8C+3I{1Z; zy$s9umq!TZwe=iZ6h9Jj$GKkwKURyplf(#-C6u%T2vVMG)U6z7NY*~-{ZUs}Cj{$A-VV;ShCk72I%PRcq}CyoIDi9ofjR>ELtTmh|Ej zLXGa7=-wsh-)by@wwR>u(8ksSV(yfgDayPwgU<-M?l`LY|7nyc)zzTry=ze z`uzHP@4ox4vi`QNPAhBmcW4OcomE>D)`XyBNdD`Dp>s^6{H#!H2+uyDMkg2KT^Rcu0X!$ zxP?#R!t$*s*t(mN9x;oJq?DETBkoRJiCGID46ekCgu}s=7|hBBwUspTa^T5qgy+6&^{@r~uy$(LK@Zs2~}UOQ;>Oyz>^ zPR`=~41E#B2L+Oq8^X^8qA{YMa(bwWKrJy5MI;;L@tLwo>Sm4?zm6%E7#{nD%UC~* z`3)hlC^j(|O+*Z5$DG*2`IoWles&`t3#0<}KT!^bFQopg8f~$N!-ygOm1yMHn~WXo04)7=w^6P_}w|GUf5!o?-GCfy=FMCQ;t@_9V!|ygj2O zKR6@*UiY$9*xcbqg0OQOAKn{moMD9$Ba4zf_uGg$#)W^LBS$6Q40?FWBPJmo2!Q}T zQRTo+B5eMm0dDzM%06YQDsH~?v6ZQi2>hGnco;za*~;W9-DF=@U2;e_1{LaEbV$bm zF2>`}(arclm<~#HF5+pZHX~(IUmIvx2x@1M)xh1h#u+yHkb?o-_rr#HOq6#(^4+Mz zYsfiXmwc0~m^DNcT0v}j>sRsCjfb}vTmPz4+9)gAGc>@GNy}m#wzsE99_Q_;md^nl z@e+p5hGwKJ@Q=hU1c>vX~hg1tx3AK%`UAtm(@&S z{v`h!(2|MyW95~av{p#cIrL@8P@J5Lfvfr0XaTOM0K_V{g(fwRW4)GmJCX~_oH+}p zHWJVjjCOz5c)69Py47}l3^CrXyDOD_(b)awK;+0kZf=Yh&kZwd=zl(*2|YGkZr3I; ze26wm;w*gGwDFFf-gfk$PCI5S+T7NAP>(c3FxBDEY6T1a4Uks>W!2{EvA!el;AgB1 zsAFkAZv9I_L{?K7d2gQTC*fLE6o<2}Fi*R>W<4o)1o2~9WgsWLrAm+3Q`T2g@ zW<0s})lF8D7?P%0mA2Ne9D$UP%E8uMjzId!Z(>yt!=^;}LR=u|ZAlDX~HtBkh&E%l%BVDR!(NXI5^`Tb;4k*iaGlDI#G z`S`rByh+SLnuFll&{&{YXdc(={xFi>XlZyDDbqXn#}ciib~Su4cuMdu>e0KzxVL}> zFI9Mq07ei`j&^00>nS$xuDi`hv*Pxh3RM_@XMF;DIigu7odblnq6)N}`r5w<3y{OBNs}s1)5{I2BT1BH{G8$~GI7cs7FZt3)^eZZq zhXF&`Yym)3TU0HRX_`OvIx~T7nPMT9rLD8;anhO!{km8ye^d@X&yr z_ZAITlZwvuT3PO)Dm}fIiukgPmsoLv`T-xD_DQ}84j2R+7H4CgUSg_0wXy4$w4$|j zXM7+f`S2%LvJWP3ELe_d7%u>`96IdP20vDY7j`XMV|=Lu6ypEB@b=bFd;>tR z_kiSs=+jY_cdMtNs_52+vcy}VI3j>53sgC8?I916`mKy zM8=y=;{k_ck9dAjYek{p$?Sqr#6*JnJlkZQ#+<`M8!?D|a6joNbKdHqKfgHIQ02T0 zGX{^W)ed9E@WLhwYm6^^aP=0SUco3qP37AvHoGrupxMIYXrBw(Utz_zD#P9nR6FN_ zhW+U&P54;N^%P`Fz9l$+S+8pc2e^y3(nu=d>Oq?j+*O4!7Cp76;W|s8C`akz5!F$4 zf{?()8;gcX4|n4jjMim(VXbqf6!;c=NDtAGK=lwzPZ^D>IxGdJ11)k6zGHfRk86TE z%y9-vkH+kJVv&kM&!=Ixk|a~)Ua#zjJ$U0tYLLTvK=s56eGgS5pVt{<@5&_-*?pi$lTrbqz0C^ zT+CjftR53^ z%bZ5QmZH#>(FX9YVRvh1wU!L4&AY6cr%xAtUdY|U+#Z*BbdH!@?T-TaR5YfX(@@2; zRR&;iAR2PD)^9=VSmNT#pOk#K>YMnm)qv$yhRTg&N-%Vt>pQVK|%D>mbGDI2Webf*f%Dkb|q!olwq!k;y z+G$EsaA&opxnw)x*rIc&&(-Secm_^vqaFi3D}dsXM+-^!P0=Ll9K%3gJV_50_J{ zvd65J_G|7$0WU`%<()mibzdp@>jijZH>M;Lc$CrOOl=0ICilyQEAL0?+qjjVG~5mZ zTh>1B7X!W0{T2;PRC4M79Iq7`u040Nx5qBuqkP`_-H>TYtCC+i`g)6!@h#k}rUD`~(7Qas35uf8L>iW69mjdkO$n-i++@R9Vj8ops3iJx>Z>bl(~G zsbBExC>wqsyVbjM=xQutH$7Y3!)fpWbtY2#Pb7I`A| zAxlX`a_H?$E9J4!BU=u;+T`)gc=N7J)Xu-aN;oDkMQ=v2@O#7?Szb1+=G;$G7RV9Q zwzn8xhSw)_auVoAsC9?M=uTZi=v8`Y#Ue&hLiU3Uu0=IYSiPOPQ}F0U=Mw2#&fccPlXJ;>N;bZNAj)D!7IGy2lp zC3@jLRpF$jeP*w2MX$Qd4pC$7)0?;$8jEK8StJ|!)Kp|weU2E+}A9$h|bJH{CmV*xv+?u0WdRmXJ_3<~z?C~$Ns`!-7I6UE>A)%JM zLVIJyl@{ZkM#$c&=`S;Tcm_D4oMZu-sB@@fT#gP>K-mMveQ(CIsly-%vH#ICuLUWJN(`5G2w|pZ%?v3 z$=fqhJ|FF0>L9r@O|^S_B=^^yr4BT0es_mVJqRVBrto`^*GnDfLb#R3sa*_xrg2YE z=dp_9Sr@Pt)Y*Bg68X{#gaz_iI|t~gbzFWzEGjMX!TKDqCTd4kNhEn4`^U zlnj36)3GA(%6{O9{KbAgGg-4X(m+8f3-%x|C#bMCJ;9TowtuK zcdvCiBSxSp#&v`Kmb$;9;_ykqhN=upDV}kuZBeXSk&_w3$fYKU~j**uQLMGL)d^St5(H4Wc^%i`6{UQ-(%WK|;g}ID3=Cab5%it+u zF5yH@(0Ltw4$WQ`7NJYhk=x%bpWHaww^<%F=-$9fyhn2Gk>2uAfyPw)r5qyz)T5eU zLvrb~#?d9d&F(`g?oLDS0^lESPqpO#et`9jJZwf-Ec)U4I1Hqxz2Qw`FPzgU^Sn{f-_&!cL7VpZziywZxi8~@!&Rj*;v2U=*VfH( zDs5Pp#u6K|V_KhJ`e$`A%4Usy$5dNkc#FU5B_UnV_-gu^hrsce!iN0|@czf=S+-?p>IM%7-b{cjCYNf+eT(o@)s5`li_T^di@m?J_ql8y^bvu4v$?Yb3Lyg#JJ7Jq1^zV?C zd>7lPFU8)+3B8k+AIArLBo%P5%Q~;3~x{lyIGPJg+@ zf}3LtWoLTbXzm!jW)hxs!U4-S6&o5JPSiJtCRS?c=S7?Q^NqJw~V3YSX}Mu1K;QeHHjQvu)g|-hZpl3 zFM}dK{@AmN8>43zizdgMU5poJ7aa@#kIpW}8)p{+0W0akb=q?aZ;l*}o0=)_ge5d$ zheYXVjtIbqy9A>{U>3KoR(8g79ZHXdo^bYn*BcT!wSlg52&-!^0sL zmoKLW63;7eoF_f_tOdt^x}YZojVBdUooAIEM4S~|J3=LK1eY%Ptb)R2Lm5(*wohdT zLWgw=9%!f?OsWq)H^UoB_J)%St7y0(Y8|Go4R)^D)=+9yad+XRIRDR6=ErxIvd+sp zV8aDvxdZ1&zW0nxR>D(lP8QAEbi&21T4%PjbPC80`qs-G2tO0__Ff?Q-hmWeI9BMj z8cVH3H^_-aH_GuvS4jRB1zE|NcHG-;Rk(aQ#Bx0Du#uoK7Hc8-5_uia=LV}b2Sls) z0{J$eMs)!n9p6?E10C7iWw8d1PdeQK3B2tY;q8 z!%+d0ty%BW_Rf?1m16hil{2-f9X!h64p1x}r2lMVZfKZ!jb$VB$z@}7$v<*{eI!hN zLA#IGykO&{R?m?eBp9IB4+ap|X`iYZi`{q6HW>WTOMf% zu1Qz+6Sn;hRz884@3Q4`Ux<;f9tVXmMi6Q6{;clfsvSrTj85Cows zX~ui;z)*{&K2=T43+F0eh+r)1K;QMYp=YiM6L17%%LpI)xQ*=%g`6pa(GS&^7HdkB&Z~NABTG z#R=A;UII3YJaJJkVq3^((l2d(IitHRS-$eEU!fDrYJ!Gc)}KY=FCWh?YoX}CXWIR` z=^7Y(UIeG`mD4Bf7xbsQEnZF#2JD6ON{!L3kWZrDA@rN@)}2T>jZ)sq#M2necLY`p z+qZJsSC@MGZ0;-m13R{*MA(6}pLT>06=s-9$>l~V_c&hdnqX5c^N#X9bCR~D9?`?i z!Q)q2S7LxkFf@S>O!(zU|EOE#JUvqc^e*ZZaP6TQ=?tyd3C z`leS`Q@O#-?l>{-9HWUp^+%fcF)-g#47PiL;c#NkWOR0_`(tOPslcdtD$L~J8u!3OKa$^m6y(UJZ1Vg4loZA?)P zD_e`sbbm#!MYH7F>NASYl&>tBAYZ()Gnsjm9D^ch%Zcz8{mT7q;96_oUaP3)?$>LA z9ahWA4__Lb7olQGl^&a&8x5-+)-$>B@FL1DteBOaHz6wKZaxf7C$W+KM{Jo_!j}2) zx5`JYd+n01h89qK`C8f5`n^5iShHzo);cBRZ86N5bwX#6Orltz>;((u>I_WJ`7>KI z@0ENLj#rVgJFATw9%Iy$c!HWn8#Uov@5gIOHEP;u`SF@kjGF#=!kR`IH7z?qO>FSI zSAM{#1vbwqk8JviB;<{lAQ(Ka!XJ*4n#gbUi{y=oO(L;rIX8$&<8ify5vTg9f(f2IWTbR7EWu(-YJ|H0z_ zURbP9KJxYstxNJ2mOcs|6H!bq7h$IVV*deLerLetH3BX#R}RI%rQ};mi&B4P z(V3FZ4Ncz!$#)}`iD8tO+u3mUGt`2-$n-Js>-?VVb&ppB3fm?cTldjb+YkOx~}s zsdwr1u57~xrUEx@ORo(11vw9`#7}5*vE%y1ZlL7(~jB405}X?-h~Jess5|8T(=3ajQ~#W4H2N14e$VuF*zaQ%+o0s!`XOC#oyOs4L;b zb&WFW+IzfBZ`O5^QP<|^o{#M5o}aR(UpdO_<5^(6LGt_Qg(HTrwpCbJWznWzvnAQE z1c(B0ngHT7$$tfmoX?NohBuFzxM7LF4G#<4;9=aL-2;U?rjzdqU<|?9A4U?|Ogv%a z8tm*DRcK{8Xo=)6L|3o225z*nMmPdefTjo(amzSxdf$LEPC-AoGe~(gHU(Yd{vqXw z*c9}ZyNnc1YzlhMLm(t|N8~F;!o#7jRgte46%UQRUKsg`5%MtU>-fl5jFyK?Ur&mB z9lU-CF{}59c0S^mVyn@P*0Shj1pN1Kp{XVui|YRzW=R{ZRgY~ zXL3`uQ0KTM)6fcfhQ#(DEa7JMM)S>#&~tgN z0Fm(6V{`yF3Os)8VE*E+`ds2Kt|R{9k_hg89??KE79SF(X?*FDVS=M=*xaiJ37>Bn z#B)3s#pmI-YJxF*hS%gX7$jqG)F56Xop4n8kMJ6}lIlP58jsqKx623f8V?+=q95=Y zH=m#;lh>Gf!kSE8BkKe;nY@N{!kSE8m*+$P z=otR=Isrdd4Thhe*Pjfk^)>SV?$ns2Ur%r%`96(h3a;J_LN6exeq*m_XD~02Ls`N* zeuO7I5uEJ#DLm<$KY=H0{YgCOZ+`+$dfN$WGU4Q|6VznF$;BtE$%K=UC#cDUli|^t z{(ErJE#M@wpT80B0uN~0Ba{jD=}aHA08SJ!^O_e=m|yKaJTZy7tKTG1u-p+O>V|%k zL|xf$lBntZCW$JJ)Q4-UL>pH|2ptSMMa^IgMQi6p2whf$_>GGY#MB7!8!m8@;d5K< z%p?j7%a8F*M_*#n914P2jo8C6 z!d5ca3Z!qaF>}{HVvL!;{fA-9jDz=IoMkqHvmtTWK`~BhB;N=8h&U#`wWvfo)T?`o zKc#{;`Hs-U0!svoOdA9jz-FPPPK&TlNT>POEbRC~37d31cFk?p$eJIH zt~ug$gvK6>U31s@wB{eqp<##ToN&!Ec+Gc6zV?_kpO1r(&F|8ho5wrRHGlHo|D84e z%o$zt@i^a8Qhyxwd;T5+`{BPEuy1zi7iS=#8)Ti(6>rlTNk4!MY9MIFgk!kaFc>a^ z?-5+|T}yD`6mT*9_cTE@iw48RBONq&{}_UcS?>tA=mu#1@@r~y&p;F|deeRY7n9y& zxG-(Bs-3r}N#%TmOiVj3dAc!2gN+abQa5e3@j%e>U#S>nJg!dqReQplTKC*-h<)#!*q@c=~MgbIe!b9o07Pv~q;`sM8Cg?S+$R*!7xY1~Wf3JIwS(9UMP3MfHnmnQ<(}#TIe`xqh zN)JC7wSAA+OHsSpYXclU-^a0>NhXKU`+tB@*XcAR6$cLM#P?u0aFwNguMxH&W7rnN zn5;j3VdWD^Z)d!EFU;3>HnFWf?fwUhyNqG4kE}Ov)`&BECaP72;0B9$+zY=!@-3o9 z79D|+ndEzLDBnwXAxwk97XZIG0&KNHbNgEhwgvnXB%j|R7JmdPfE}Az0Xzi#8}3_w z_~V8O=Y{GJ_RLk*HIz9oium!LW0<8V)lR1phDBpdaB{qR*yNd3$yZ1#!^SGx>cf-> zj{~?His%(80-~fiLv`B-Kf^l~_K=z2A&$bleVT(^(8WEp+;6jw{%Xp+rhKHKk`Xby zam9LPTnWh(S5Shm>x1>)%|L7`im#@RB5Xlh?gr&ErBCUs2^O5&!D~nI=su8ueE5IqPzvK672vVxGQ~TJHETpf7eAx z9v<V$Zr@=QK24o**+z8H(4jqtBNY0yNbD#zgKZ6n z0_Rcfp;i9Y#J)$@Hf= zO;lZ?Ryv4uPgIO}o(4=tVACRSYCf8{@#y!4nNUfQQQqAGG}f~|#56F7+lRT0L0C6P zdtZw`N@-zr0Z_jGras&b-zR9Z{ID6wv}C_A3ukYN0dD^p{l{^$TDJM1t_>41g;+S? z3T;at>@54#c@DPeCtiX!zIum4vmRw!54RHwhk&PYjg?kU?+x+@Pw$QLFi-CllK&Td zBH*+wPj~=fR4-#xZBTp5la+1L!->Jhp@F-s%J=jkt7xoyf8)@i8zf&JRa|tV)Pd_Kf*`M)gSd8tK#R-1>ezpxdzxz z%v|HYVWRG6?Tzpn4|c%(PfJExM+KnqMOc4%=i+3d1KP-F=Ne{oHy0NK`EJ6m3oIZXqX{Hm&|0@@$xw-gayc&A^PYz5DjI9$ZP_FyD7giM-!}_bv3^ zB*?#PQ`#vh2i&dJe2ClRi4Olh=-rc;yBQ{^iP~=t(%ukp<}z3t$SR!BWZd(29GBT8 z&sZY)3k-5^FZn#NHr%DUCBKMvfZn(*?tt}$bUrCg!O1);5df9AK z?9je$axYy8vXsm=|oK~=j=bwd%eN^ddeQ7_qt)5uA27??Uw0YjwU_9lo1w|*~A9<>cJozF|4aQSVXWaAr2wA$R%g?bziL-Ikc#Anf z&TB$VSsVQ=b)|)I&-kh>wP!?1HTgJg!8kP)DXxtRCp6ij5ZVPSh#J5 zlFFHLTNV`~Sf(zKEcmAudiU}>t_zI%xZ`{*6E4Q;L?i|rlW6Z14V^fPcC*N5GkncGqmY)rH@3@<5lb-E9!4ren;;w(-0rfnRyeYxGeJut=LYQJ}A zpw!`NyXS3Xp!GYOvJXz3G_UfRxh-nqgG!>e#I^74Lv|66$dLu-zjdxo`EQ~)e0vf6({?<>nhY#B;>Y)!gp4>r-ymEJZRm2$rwRJaxqx3x1)gd3$P4zjMa49<=VlGW5_d0}ep zfhoEXH#VB~%n#B;>|yk?>6sl6nl^5yzgNx5B6^F^baMW{+wx?!BvY+SBSB-2I!Y~1 zbiG}>i`vY3TN$O6q^ad;#I|k5_f2(Sj%W9dTH+M_jFfyu9j%r-C`V%WulSDV`lqRi z(PkCya5%vFR#k-O^uG&Q&LPipcdUf+O{w~EDF=x8f$zW9{X5*Fh#i*Hr1kJd-{7ue zr6I{^e#0Ic`n=`wlK*jfVYRJ1g;ln4p-`XZ3H9kjp*}rJOj;Ha29)9hh9(sQx@s#`Dg!Cp_mmg%NZb_zwm=+lxj&oo$)t%n=tQJ>$ z?bzHMVwfwTxzk3oZv28N-|OLjMEppW1^4MnyZJVQ3O1v%aEJNn4=ek0KK-v5q?;^r z&Q`(i!%=LOdakO%37+~j{P0HgYT3GxlS<3zrwHnqFR7})TxU`E4gpg|orc#d_6At_ zhQkMSrPDPaEnXoeKgC#tWX=_HH;^hWGv!j<{rg1N(@`!GeULS4phUD;_Z#(h5P%3o zes^qj$F8+m-Cz5~MGnBP)Oq;Hxi(7vXDG{r`4z`@dE#E9%Yn-TKaYe46 z6PQAHVJ`Nd=U3liZBt9-tRCsbj(`JrAv;%B|Gv!1aejxYrPWrr`lVZ0%mr z*VwhJptVdzv>-SSHX(oz^{k*XZlm8s^B)>d-R+t31U0{56_jprk~-0cr@d~wcULbF zgH;g%vC7QvkP{12XN|rd$|&lJ!q3gO(4X%1c=;N&IJk<5w||Zm4vmYsX33vK+sC^r zS@P#N;HT?s5MshNR`U{*l39f`Mrp~1pyyb`n7Qz8UOp0P>1-&&;+za$Eudk#$>x% zrKRBEOS0BCV?;_SGN?0T_NA;Pt1p;HpOAq)bbLo;6N)tfLm1QiIT;d`8N74k8L#bRR<}E(werT}_%fL!=UEx=P zg>hI{$v=h~&`uY8EatJ69z{4NX(`{qnD6oNGW&jkx8eqRv*-OmT9G$|B2hMWh=^>$mVi6fbm(nDLkvP?|^A}$=c@N%`hf+J~A`c%K}20KzTg(lbaQT@4r z$}-bfkk_oF3^U#G4bYPOjJPYHQ!OtOXuUAO{YWgCs<<+GZ%O>~z2a^G?=7`U)XLd2 z%z*%)0nBQHz}S-S5O!XBFZ<)K1qCTxeBDa>V=_i}VYol1VbaeWRP)UE48hyOwyR;QPhDAUWBRuS4teM8d;7zKoCv&B5+ zZtybbTck%@?dIzLu}$ko`D$7kLKf};4yrJ#6Gt!>tp>P*wurWqIzu~ej9R>%{h8~M z)CDPOe4$J7oo^Fp6Hvz5LS?=72=uSU)JZ;zEjqq4Fh0zKb|>=CR(X@Rl+Iyg!ror1 zv;;a-b#{dr9>e#nrn}ZHTriz@vJt?(hqt>rrKL}q#K9!%VmCRAU3CAhea1~CGb>b) zg3lMAvi5}%C+Q_f%H0ueFfQ;Zo1s*eb(U1{gzwPqWIo8CKxG_i__qBt@txXlD23L6 zG4z7J{xkbIB9gQ4@-)ex2I&r5Uj zOXMQ^eAZ=$qI=ui@MD(qg@Q%MBsv(g*|iZg%b~KN-Dq#Tk`#{^Bt-p`V#hAtq?yf@ zU6A`K9*W!^w$*rYIPXIJzubRF582vrw^~T7A|zmSBJSrR!P*ZAn4~lFe$oCuyqfz= za~@%k$`$~MFzn_8E0rnesWz7i6fP)}{D_gZ=$6`g%A@@YGsN2pyb|vv+InMMZxh5y zD>m4Pk`@wim6lqle(m9-Mp%dNH_&f}y4KR5Up&~OL(BR1O%dPFa>M7_WO3hpV?VZj zMf!0sl^bZavLonC=XL4A-@OSUl8Rf8+v|jil`%HUZ$`AWMO28hWo>8K4JXJfReF)j z(39ga^mEFoY-cy&82{rUwKN&#rs^orgV_9MQ-0OXl~NwGm2{{Jnl`j^33%#vtef zAyZi*{HWP3m}*Zk>aoc~jX0Ms)}_?%cd;6!R-@0XYcSUC<&{0Wj!~cLR3{U9_*5q% z?jUTBDU*@^zE3%ScBpGz4^%1Xq59_;>!o{ptSFPsF$-G6+yb!grkxjhVtkJtnQ?qw zfUiD$MNuk+z1wm?9MDdp44(AZlfS<_!I81dqe7Av4|^idd&P6QidauQx*X^2nN^pfChZjGO2h`G!;HwnA%U`)St{dD!cI1S zFfhVj^&Va1v>Hod+`9ua!PIgwp~IT?F>;m9QuC9yfk$?qo7=65i^EvHOLQF3)eKJC z;T|F)K;W<{et%aa9z;Mi9d8^9A#yl>^H5PzlayGmu5euQgS2t{%CRSnt^E*-qt1XcRIRBZo2(sov;)4qUlw zqx(-r1@1L~1!QvVmbZmpGwjlpEiTp(N=p##)WymtX$h<)iLdktE{Q`0Cb964vWTRJ zhlC)>_Xp$$g*l=h`=rrvN>QftFyfh-TrHxNAwIM6dHCF5piU2DPi~xQL9TBpbtSS8 zBbP2qO+f+l7qP{MOBoNO;a>*ylE^P#e7%H@9_Ev zI8I@H(irLE%Ma;U?MS7{wI_a1=Venk&UreQS1DQfTst%niLY7Bn2Ivw3B<($3L`Rw z@6BP{COgZTc)f|=7~$ZnTJxl(SKDB=G#{z~dT;#_m+RyZ6af?*3F^cKgC|Kvj?|#o zTN33h@)X5ey&qdRP8V(Gk_ptj^difqB|vC_6i>hrjBw_(Z~Lr##&3G3= zMlDTqumqDwJGev@N-2Z}Ee9qjtaXkTha}+NCNfr=>&!MZrM)7=m5_rW@Vw6G3n743r(_(7TQ(K^0+zB1_ zgwkkVVINjFk+N&E+y|Kf-M64)JLP~;~^cZ-{*2a{P z4Od&e?KUc1-xi$Cqg;%=jbX?S(5M*qd&`_T4qgU7^bcwhuK~0%bDd?8u`OLNz;`9R z4Y*WfzKa-ozdXc`Q*gHbgy6wT8dHWej4EZTU@?_aU@hvUv1+RY?5pA~V`tb)IL*XB zzMHYG=Ip4B9FTm>kQ6Am!(aXhscFnS&6^Tdy->l+x62aXv!Tt?ZWtPjzIs)8NLQ^`=ySAE-yieQR zr6cBTg=Qas4+wv4pD>pvF+O&h?KCm=INo4}zV`MNR*N;Pz1`0N+=>DzIR-9_&#-p9&I*dB3Y4RvsM{URE2_! ziL^&q7h&@H>eUYaX7>=)E@EzR93yo0(_xWGQ%W5oPLat!Cshd@q5o{Aho;u$WO@^k zeXPRQS82lg+3!69rsYaxAuIbbyH z+U`ztG2s`s=n-CYf{7~y5hvOZ%Z!GGb;aQR7hZI<2v4{)ii5YHx_K?A>HUrjH zVJg{GR@wFzz8-w8Mwz&b9t_a5@?GM@Sf$pessEr4Q)(3ct?~BS?pZ*&@M00nYfba- zzs9aYMTJS|)k2ral**G#3O-)VU}Ti22GSEewP{4SQv(&&0qfi0_{M}8o+Fv=IHJ|L zEj7*H)3leV`oKJ0bAivAscY~jq1LVPWc0z^h;0TnJBNP-hxKvpW@5|#Yai4s=E*!K z^5zN8g523gIsT3v*z`oC<4sTT<70rH*HZD_tXg_44rvj2Qb>~1sRc@T!kkPa7q_zV znaIR;8WU@>`nla20^$a9_Yx|+LhO(KEVh2~eGIzLtOFePk?|yO;>Khm4y7#ME$Rc5 z$w?8t$4ev^MUayApIe$2+fsPtAl-zxGi@f3nQCvpUGm8W7_NnlnBW|?NCDiniPMeC z7zvBhaVdaUv?diT`ZHv%!nkKKZN9ssXp=yDqtz0HK8P*vP(Ny#1km*m0>2qNuJ;=7 zH5r&@xuP(GfvqS4Z0DN5HbIC%YU1O8q6DyTneH?L*qAr`A-vJj|6VL6wt;JV?I>yK zFtoL`ewefv`WW!?uO%U`>wPJZ1zvaJV+LRSO9#}Hl!@5SL;}UoKlT&OLBNa1ki<|* zYMPA^*`$ZqamL(A+F3$35}2ZEh$9!c9;X7zKLtCsig6;ZR3TfNNIsP(pE1a0_pqiO zfAt_8-tvQy^|YA=a;)3n$&>sK4zO>B9}(ulU(^J-OB{ei;T%dnRw*WCbMa$_JbA!o z3|4xrn5SbvTHHu5Z+#nrP^;2Qo9rL7Ny00<{Wc>$Y!uL3+oeFz#)2v!a3ae$bDim~ z&!okWnCnN-^e*kiVh6fxLh6)!cR|pgT-J42pJjdK?I+py4I8t3={3z*vB1T;*v>Ud z(qlZs#h6#C~2@b!UPqknjwGbj-+J>nPyb+7*jxesf1hwHtEE7=?B{j4bAIP`;Kx?sE=?US+d8L@;%!yI0 zMZ4ttD8jLrMOZP;zSz*-DcN}Ze7G@Qz%P>`k8Q>sY|JX+=K9& zT843kAijU({)aXkWeD!JN=s|#Q3~9GvGI5rNVUgtW@G4B3!W0kb?bNo#3Bve6WX^& z1-Ri3GR-H>(hOOPCv(|e`u;e5cb^={9*GMBTKA5#)6b@U*LTw5bI=z7(nN9vK&JwP zv~xtiP4B6fp5%Ktvj+D;y9Z}R=1v5dI?*12D;(2V5IF6!zTFLmN$AHr{Ih^h#{&eR>s~5^`gF7CD@M_O)`xWl z<|1ck+gH1F^#%vdSApk3_fl0*&Pu))EK%zu9Pb#FEHf(Urb;5o-o@5v4<9pfd`LOi z8OQY)CQ9;;)%8e`&X@y;r;P&5(E>aZesSJ#yduvTMdncvj$F<>d?viAIR-3h0SsBL zXRp|Jj&O~btLz+9Sxq}5G4{?OWK zfnpF;#8k1RG_5F9?rKm7kKIKs*M<13?~2xHt5tk}pi+661$-eYp!lkfx|fxQB!qYN zKi@g$-o2Xywf+BopP!$Px+1U22OyD_g%3 zCV-v#Et%ogz}I>fN&O8s>DPK-qn_sgQ{iw`@e?XUYgztJ8tU{*J;5fI|KpjL=~rgy zo?n_PTFRapu7&4)ybrpf^@@AWlY9epMRXX;OwnQdzJc~@uYnhFs73CF_UcW6PmL>u zd`7A9J)-{&7A_hw9-7S&)|hgLJFKvupL%g*+VzoUZeu~7D0PzF)4LTaV11U>h?-&z zn@CIII!EBTmtK}lf2>&KF5kaXj(nbam?N8i84>5YTz5ffPwwkNybZqw)9JahX&ldP1G|%ImHGFarxL>qG}lYBBh9a=SZLF8)ZTW zV^Qq0Bg93z!f3+}HCY%7zYCCf_fQydY9=8q3`VM_YilXFhklzIVmI3|uBU2lRC|sJ zXdfW1!#57bRVncHnu8(4`Qj+X=W8vASf4uxwA}IkX4_YBlB}dc`dWQ6yf8|`I~pqF zLpy;B3wOj%6>ov-uKQ8y*Rz@v6@Dt#aEe)|UsQUTtPELC^r&yg{&IJ7!ko{OzizSY zu~_rf9{)Q^=zPK~DLA2XfMWPPt~369jQ1Cp?~GjgTGsDtw(6s#vGADbb3FHZoH}St ztrqSFVm*o$M_dIt`7bV@mL5 zl(w$0Rghz3rmx^t+`%P5|0@zam%sy_aOsX;4E&V2*#?(Y!mfOQJ^BLpFNHTYd<$A* zuXJ`*$cqI+?52>%RRZr!Zba{h+o4~b1t%$v4&dNJ@B5P|Z6b|9e!i*aVtg=RED`0N zv~wKz-{9C9kqU&LpCp%phnf>Mlr}O>ANpi38zhaeu!S-jM{4}X_-C7(+rQWV;p>h# zi$z=o{ba~rpS1C%_X0)|UtL>u4b|Y+geNy1*uiGO##MDlTWHE7`B-g6FS##0z;fb? ztEQvOWTB_>Fh{E0S7}HbgJ$o<*Ki@LupAHeOaQ)~1W-+m_#dyBr|3*}jhKbE^w)il z0o!wYJssj&{WI7`4*mA#8!=UY3c3z<+;_iiVL?vkH-MfNOElATM6G$f1<$4={ZXX3 z^7TiYjtFeJTh(eD>q3kye!qpq$hqqq1^#iakJyobc9dw(ah&$1PUL#_ zLB1{4S}jaHclf5cgm);MP?k*GLF_H$L$FIm0Cc~?T?EgWxSLtH1G~@s%>=Qn%xPlx zaDS02-?(z|>4GaF$^hNBP!(Eafv$6A`p!H@o!V6CI+G>Lt?Lg$^7|WZZ2jAjltTHS zo$|Mw)FQl@=2MTVi-m=gsbNHiFm;gM^o8`OESL!9p6`qO=RK;keeQaUPtdd2NM7fm z7On>S53X?mLDc9p3F6!PWlyi;SFZ<}6WUs_UqnR}eiexXtVp@jl)Jz)Kmko@=g6%^ z6phfH6Lp*uxUr$B%q8ENEZo7bHrRT66g|F4Jywg5st&Xe$30aRU!3d2byB<_Ee_jb zWds$KPj5;;!+aiI{eVy)9!`wEL-S)Fcj1o0UB=EfVRsk2m1Z&eSnLgyX6{2^a-h39n=^cP2bmK(k_zS7#vC8yiaGuYA`ua)dGfoGorR^)n_Ak&N}@D zS9n+81+=vJ{50ww!_=?9q~4_ zBi{PA!`ruQ{JShV=jmP!{?EjsJa6T#R$rJSw2?afs%(P$I{m5~`g4k&mR{j1ORw+@ zs&H!GBiUkYy@%yI5*soA7gM~)oK#@_tI@+LP zyY6+0oX9=C$Iv03^;^20zCWq?aD;4!zW2sr8xGms@`6qX;6=y=lU99T_*!>EEm@{xVI@P^2EyU&E(! zG_W!cUbZW1)a7f3*!l6j=09nc5QCT(pS9qGx)_{cFzzGG^yObl<%&i}Tq~lG*c`kI zS8JbX>*8LP%dE zvwiwo%rtY1m|WZe`TG-r_5xbAvk*|R5ZCGpw9n$@(2H}H$!aOL`t)I0x+|Oapi*CK zc647trVub6M_UqAe$`jdFl#t*rB%r$#9N$J)u@c3GG)!a1lBS{U$b-VgSfLIQhNN( zi!~{Wq?w%;qw`v`^Vw@SlvaT>KUGq?e~K?(3IEN(sLvZtU6D|(3o=N0AJcgL5^a`t zyA`0=hAtZaCEhwpZv@SPSY}pfEAZ_+8{#?Sd}lw%$l6#BE~RNBv$WeX^}g_o(|Tyo z47Ui4NBcm}GD_ho!)-aI5ScR3vfe>okz1Ydzr+5vdyvYPK=acnm0>nruCWqWJSc@& ztsT4Fl%|Bo!`#!b51u zCwf{GPJ@vQD<)F!jJq4F{QDcG5`Oa=PK~%O0A^2loA5t2OZU9UGeYuj)?I81`_R8% zSrj{(NTkE>MfH_w`^v>Ns~V5785bOIEW~g`W;l(PP5s8fH1Tmu!oby|!q!Ir?!e1) zXNu*ogzrPm5-6y592Nc>R;&0y=qNL8;yXbx{iQwdcsiQ0nY^ntCt^3e0rd;4k@ql@ z$>`z&Xr)$@&2Np@BAiq@)OX?w+R%blVw9vKn+r@t89|~`gda7D$THXZpQoMcZ2T%* z%`X?@7=*p##$^=IZge`&_v>jaD2~f;L~bh5K5l+8a%&NZjdji@{0Odg4*};5yu}YG zgF~&H0(~~2o)uXI9;>}Ow`q#WYl$Jv^i|G{BH@Kh;x9Rr0zN<98>w*0t79WP{tY6g zi?+c(%%R+|P%wc?|4^?I!f7?(4Z+Z2=`S0J*z$Kw0~UH8L!7**2lKe`B&hTlA%7z8 zPPPhdQTyYRA6)!7YGi~wnBW3zS#K<+-?8`$d+f6i+qSAXVc-g7v^<*^d^yVp9NDh0 z)p!z6*q=-AH%?1=mC*~b;6bOd z2&+Jw;L*0T6H*dbj=ioA^=akVv4W+lGA!j;ZzGF)3{Xt23QO(=pp!;aZxYX&NqD&-AH;xq9klCc8_rWd-}1ekThu z#6vdIyhJm=bQnh&Z_6)mvevRpC%op7#u^xr8Wg=hxOha=3h)25L`N#S)p_N!AF*g@kK5A%fpIX;|w;X0i2d});)6wfkcrbA@|I~91p_F zCNrtDTB8}Xp?Zb8re4k#&ZPjj&cjcdhn}Dx@SuAL^te`ghnotl0M|j;53vu=17UG{ zfu#g{9uXcjr2ZBB6*os;L7@>@*iTCqVIaz1h=q~zn@=0vZ3&#Ds@-vcPzkMeG3^!; z8!J;nO~Nz4t1P-Bjnlo9UaTzIgmE%Y)qB*^#B zZ*s$4G*@~PXyqQgoUM#`z;6uR9jBl;ko6Ae2zJNG89Xy(e%!SR1v4C`6>>p07h8ON z7<4)nq-M3j(#*_rz@&%*(t$JodvRX;K%3}9zbuQr<;09ibK^De@IH>TAOw#-nC=`(%#p{WQMl{_W2J5y2giS zO~O=n03PM~P`6g@#=kY0(V^m0@lToBXt#eE)Hx-z8&iQp&~&ZZrM;^yL$4**c$Dz! zHr_kDC0Aqx+=PGJ8xGHAV?}Iz3*}WYnf{4AV|WeD^9ruuEg7Aq4(5EdH-?LD34A4# zDTex+`^+;8YzH@;BJJyE@D&;^ZIlc9UU`=B3HGoQvV9bnlq%WJ!KB5-u=lVJZ9dWl z3EIu)qLRYl1_0sGxJ&v81U#~M4i^pmkyE3{)x@Toy;*RbSb~iTd$>5j154jlniBF2giI8G4eX)Ze22NfCeaj!cLW|Q+`^3t^TpI}g`aoQN`XpG+8S3D z{n^3%*|*1hJDHEj^)Wa;{f#*FHel0X83dSU2TNGxy+)sxZRN!-c&Irs+W)x{zEN=R zvQzBJ!kF8d6W06C+JYR>UHtCGq=>~XmW{DJ56X7V6zyD<(oVPAV3mr9d&BU-z}64| z?w4*8`@?UaWBIa&xB_gHL4wR!zsY_t*cc?vTFf?53|#8q4ozl>CMyxEi(69eS^We) zWOE3X3CmvuuTR>>xGaajG2`D<`X*uyd-h;%JyEOV z%N%ujIf8hEhC!YoD4%=gAfF`+#_x4=zfK6|o`<}%br!b@*oE^ARd$v`|T1wteXgvoa#0wIIyh6dXDZjoF^L_ z#V$SPgbAH=HlI3+uT0XaaYh26n}JwI!xE~NKfu0Pr`|%v7ZS^z2zmbbZamx-V7PIy zuh!}FtOLt!T?K`uN$jM}aR~9B8oKYk7IBDQ$+6n&0D9WuJ$&k=gx(T1b-1%x_|tT%+2{AA2HPrpyW9_=1 zS1C3>3xwOKsninH?MhsAFV8%60(Q;LpXnqrTd)b7GNqkk70vmnqUlyq?@txoeouQ4 zeeFP8-l0T(yAtX?K=5nR=-YfKA%6)(BFJvOCs;U|Cr`}0Ov>P9HJ-_h{&7B^ z5_(ja-}zz|sloQ;vH4obR0zSh+%5c+-V#^;yev7T>t(64A)y{|cZ(u&!XO+tQ zky34UnWfx6Qfm8MDRW1qv+UU`%|>qW=@as-g5}$~MoNzqF;BUIA}Y zT5z3v?h&>`KFNK*h#*b+gK+Dynwf{a(GJqxcXp0|+wSZf0l&RdV)ezD-1?l9*6Z7~ zKKMAT=N_l^j62(*cV4Jni(fakFR`Fqi8YN9!g+VJ%Nek^!@~Mc+Hn``v9wMXtXG)2 z?CoCK*rDC0(oz>pDduC0F9mirDCs9K0IGA?{&b3Wnk2?_mNSZn!$SE3S{hqX{p9z+|p*l!jb(n!hYQu3!Tg5Urr}% zbfpr;d;4t_*P`O5-MAtIxcHmxJFP&cZy)Rk|1Xen|G|#%_eRFHgGm9$noo(P$L^r1 zXlu3E_eW{#;I=HhO#GXb(5NohDX{r;jg|@L@^QY>;7ngBNt9=G;kHVJ%Ltzr*VF!5 z5)?+wYcrU1ic{-Tgz$&0!{~H3=05xH%=+O6W#x7h@5&csyUS{{YwR8};+_ z>pkIJ4X6GpQi>LEPV_52C*tGcv;R)p+8$SUmvv5b^54ZdQD6FtGX||W{u(JGJ{^ac zlz!xCTAqs_2XK@vbHA@LSY+|-9n^fW&8mW(Mz7BmB4#m8eMsln>8P>V{P=Y)d z7iVI_c&z7A3f%Y3dRmTkKaEvou`M5KTS<;#b;KIi_Sh3nlLtYt@Pa{=+%3lyw8ljR zN`i7+!S>@qZQ4~z(r8?15)H-rP1!Up)p{3d6%mCa`FK~G#DRvBFV(APP`tPP?nxTd zE>}FJHS;URl!N5al#Fe-ivD6!<1eF0Ol#4TIOIuA>q&B2i;b5K+eY<{fTC2)7F68Q zl3<5XQGt@Xk2flD1duvgrTR3C>I(e?rU7eI@jkXO-T7A@6Vs{~&g{R6;oS099*#Hu znrQ<8u<|>eqswapHGeh7s3Y{ogNLm6Q2AOD@yGY{%fNFpVt8Yx9XIX^d(~=uk)T-a z;#(GhOk=$R_MN_37HtBQu-|0PuQ-y-d5wd86EaH%h-Xg)Q@)Pm64)Se^gn_&2d41j za!H)5mOSu;Bv67nd-hk*x@6AmCs=UH#sp5s_Y`7{yHq^$loMY968`lQ7QssQM8MBG zl-^ff6}gxYt?}ZLT-%&SIRGwTTi6BoDMGXsCd_*i@EcWqW%{G$g`Te*<{s9qa3ihr z^n;z_baw}w?mG@nm)UUo;QxTfF^?Y)j~6_i#N(jHg)=+>YQtl{$1Topj!>Lk&xgT> zx-XOXHR4NJ?8v$@l?!4s=r{wtlQW|oN2yzILjS+u~K zZg4uP)d2Ofz0+RK@5*M@B8RBX&MGECKY5IiTZD5=+)^N}oC%a(NNwtO@PH7ooCKFz z5s&`wRAKIV4BzxcVrwN_{pt6a*lW0jIC;LNYT*Ja$MYu@xRK=oyF+#^N$oP)grp1qD)H7;(mp z5eZAop8Yt#|7s5-iYB}cc7Fdo1`wD6gkA?6t_ToxvA5shei(Dcnl|%5$GQg+=G(e1 zUrQ3`Q5?>bfnJ``5&y<*Z2~!01&K@IPFyA+V5>mL_cA`IX3_P)WS}Q^S5mBm76Wgl zy6{he-Ncy^LfCu)VW!sv!9)xiTKAjg-%oq!*HPxFl7iopnPv= z6D{2{54T-{2OY{CXF9=@zD!S+LV@Y?*qgKl-@g~%qiD;iaVQH8q;u~J_N0rV)grqZ z-=*Ta65j>lyA0nx@tuS3Z1G)-Z@2g!&*kUv_c&U`QRy&Ot?`Opa2}+&bY*!#nU)@@ za>A=>K08`gxXdE#Vb)h!o>s2)tyZt6oYD2GMP~ijM0)&(SkcjaiR0pX>~*xT&pf&> ziFEyFlE9Vl*ftwMO*<;E`1v25j`+R!s+`NPmr}R0M@KTe1UoKbm%i)KzG6b*q{Qwj5ZHEM(d=S6y?C3Qm@7oMVsWxmiNucPBR z>Xk?OvEq1&kUaWi=c}xxHVIh{$Vz!v9Hnt zG{|7oJvRaKpb`p5%6nH7A&qp#$|(IsNAc&e&9KL7Xrhz(X8wx*fG4cj$dXq!*!4XR z(dIRirbP)oF9fnYoB+d5(pm+icQq0d&E^M(a{fZUaoJ#kep@z)AH!*%JXgO37N}E4 zOBZC?BS-7QOxOFaTYZ@ ztjnksVEW%aNW8PlVK$58uh@vu?A#!{6*nOZ=S`fo99i#CmeEI2;e~ZLYPp3DmUf{-a4&=+DGyC=|?4ge5h@UZ#LW0GL0{VlaBaV?K1i%?7uU4 zgHQf;8#5$9T{V;FWl**Ax6}f&BI64E%z9-L``uNG&#*V%lVAh1XhH^}~}J z%RoxKwEk_G(Hk2JaUR~Rj0r~shN6>bTiAxLv$@ws(NFw7B>e-KuSCuJ7%Cz6bFAYF z2?ax7PFKRXQfFiA;6|}?pJ|cuC7!?{p8f?tCf)oD%agZKW(6OlyvCoI_*}}LZnhKi zr>AgNcy+@-vuU~aeDseNzO<->ad(8>wMv0 zZe5_AM4aF}JlH{trNHPKS;yz+Z8X0DtK{68yh$S9{Ra%WH{kAAs&y%hr(m z6^D`h2$H`%D8*#P!4L9B;TABR?#dgxn3H?{u8H&VE#N@znGHXy%i7tlH_#}Utlt391x57 z@I-j>81W`JKGx%7tSWhEc z^c3h%k&Yo+dA@<@8H^nmmrwbg*u;)D^NBC^?jnWoV+ZRt`A#K-I}Wjt>yw9&=KeMH zujc-RXP|iR!Y0=IjE(>@6}Ve9Q5)-`X6mpNI2j3b+Q`fxJD@MR*S063irl=i(QF0Z zhJMV!G%#^^VQailo&={~p9SXd$-UwpV;k*H+Av-cA5nW%?8D9O-os>soE$#^9~E zT(-u!fk|d~0kzEcYv-=zyR~422ZO8G3g0+EUamz^ak0yGx3>97!Ja{{!4(|KO`V z>rk>>QabbWu`cR);>?~APj7rEcU0lTxbJXidBH??C3HUe`2Y+MPm_s}`6uM4x9Zos zNJ!GBBji`QUQiX8GSKPYuY@zGSn!Z@_Fn@lXlf?zX_Xudy%>)##74agfA2u18S=-Z z%?)bmVklPbDD2LwwV1ZVB5a8T`hDg#voq7}d!p$ltY}e}!*cc1nM>1x?4xIP*zGEP zqx|=Y-43x}Ngrqaingzi`yJfP^$B9XJJZGc-8znPK>OVXN+{Cleup^gjmZsf6j9=R zUv}8=5W~sb@N@@nc%x)Q2DT4OFgHE@0+Qxv$2B3I1%d!(3 zSSSRzJqvly>#7}yuZ-|pV%E0z;X-TMV;4Df1aEuT%Nmng9RtNy-Ke}@XIzsIe$~nS z?|iZUjbaY}>=#T2qvSmDtVk>`Ml@J`iZ34*{{GX21+)BUx!}lbZD$i|Z*6EM80=<$3<+UEA$~`JL>7`5kt_-_qQ2OB_Nm8ti-*tPs0kh1dlv zc-d=TbhZzk{u{9mLL3tBn$_o!`mhK$Z)06_>@N8~%3c}B&e-b)$zBUDPqNqi&e$tP z!x10#rA)xBN@yvm@`A_42Q*q26c&un;ElF`Hri~!_toniH`*?bm>VsEIZ4l&!WvZngh>SZ=lII4W5*jJDac8|4-H z^xLv<$bHiyvCrQ392M<~=9jv}He1jT7#16QRdS1MVm{sbIgT0qBA#8q*64ihXKjsV zPL*5ZE=Q6w9(bsQw`<9i{`+mo3V|jTec{&~mjWNk6C(4YRlM#u*P#XRH)u{LOLIqQgAhS>U+ebq_d>e1Bg&V)B*d%OUf-i^^y3@s_{I$L!C2|?m5Ox8) zo$|pv4P;Mu>9=|G>$#BuXhglp>EEq{e`7Y1&Mel&aWW$3vK1eIm7@`2&ETq6NbDIn%xvry zv$1#*B5EvW0E2eNcr?bKjh3MO291q%>BNd|%M2%|G5_$$xD%ZI!%FxUXspetEIt+C zp2H^#lXFqYSeFv+b%c)yb7J4WVp6rZqsM%zFC-u>OVW8&wwA74gUj@#q}=A}PJbo8 zy#qbmE>-ytupC`VdWJ~IJ0K;WNk#dHt9hQIB%D)MFYim(5Y=>YeQqHlbJc<;&N2`P%JH}kEsAL+=!`%=aKhf4{ zn~fXV;IE*B-!=26yOhv)9N*%mq{c`4M*o9o!gbVEWH5^C<0&pYYHQj@KjKex(4KCq zg7#$Gu^$x>Hk`K1BADyLe*jIaGdvQGm+YNvCJ>AzM^WbrdncFB4|bnY!iSF7%43km zcSsrUE;&&NKME^Zy~o&t3BAc(QmBM=B;D#U1a+Qa#|qwn$x?{}BI&$jsqbYHbS8bQyQH@g{uoKqJ;qZ}}pWH4!7u=`HWAblCEWC#Jq~sIIFey z@v6*1yav%|zIiF(N-aCW87WVo>@`+dv^&n{vBuF~jKkksJyBcZTw9IO1G8dA@$1B}cStt!AEiS)3zTBWYEG z45Xsn&&JjTY+e;HStfW&?&nBi{k0L znWue(_mnh`FLu_p7@-DIH7?WwE&PyWnu3>CLDrzMJo+nwf|9s<@^yz3&Y3emtymW^4(oNSb~$DHl$`-^3hCcQ0yPXvyP-G_pFhS z(>{JM79?IBf5nOgm36$q6ebW;1YXgE}W({OVH#pK*0U#=CW` zwhgL!xH%|wG7U(*^3@F}jJV2;dTzdm_&n(}YsXs~8SW$a#yS zEfq(8YFZ#57{8?nUd41#kxCad$f98!!>m8(;eu6652t`03KPaw`vg+aZo>pV+9-V$ zPh5+b?^QhC-?b%uMst>|KVbrI1P3n^cT!HX%TX7fN*hK&+f~8?E<{@3k|Oih%^AG9 zzfY;q>r`&#a7yAKFDGW6ZY8dhTuA$ZZ}*zPeR?wI_ODUy$jP)K_5|3|Xc@Kf+S$}X zVe2Z?Y}5?x3vpM=s_v83XPunhv+V0yyfWTfS~=onYCO%*yUf3KwpIUWTYV%BCU{~eQyW!!&a&0NsAaEIOd=Pum%IQae;B}c z@c$Qh_`XX!Jp6M&5`N+X+F*ZF34eop8a0{h6__Et$&X&6S?`v1+1H_IBlnbs+ zL#W%=jwMT+iW2`gmMqa7C2p{lNYFN9)E=|P~!2U z$r3$K;&-+Zcca9(qxQZ|IV$_=XDfF-%DIlV>+6{#$r6{K#DhoL_4R98iL+2*)De4M zCmfM|^|X~s(4J%*J>0IZCk`h|e1;Nt*-E%k;&NMw*HEJJu)VKdhh<+GwsLo)T+5+$ zeLZw2S>jJ9vG7p4`TCWu#HA=vddS{amqW6zV+U>HN4f70+RJS{Aj`dTz&3u`iHz4p zLf8LdwL06gzl*Z5T75r*jXc_(jihHMx#8(1H*7f3hNYxnacOerRKiX%k<2Fl)t?5k zS73Y3PxA4f6o9@IWy#P!9;A_)iLZ zTX}+HZ}{=-36h5~ce`yrUOhY_9Ix&?A&K#a4TRQ0>TPJ(lfs|InS5uYjqkigyO(ic z3V-^+VQS<5;WhM;$ky%nPD6Ew6IYN5y8CXt1#W;{Tjua zFg^Wi1N+(30b3Ak9C|-4v_L7Hy7QKD_rYkZWG??0@LS~77bOf*xR z>p*ZNY_TDob~|49AdNcsfkS-HDR!!Z^l4t)S%gll9oF{7o+orT*XcKBhg$=?;$OEWb1UVBwDVeOHXtdje9{0S9G#xfiESbM^rA zzyNJ%9kq#fM4GheZt=9|P*tmNi8%Cl>bQSoT0;AiEJk(C(wgEQK-cT%*a2%1DgF1Z zRhI7?xR=^6n~T5DI3n;*Q6zYw!z>YB$1w(6OOOupyMJ?_YrJ=(f351)f$&yBAhj(J zO=U+V%bpZGZC(Qj@#{+5^@y}a)Im^M#% zZ3ntX`Ag2p5~iKifpnUxYPFlSCU~Co%R26v-G=U@)vp|d&JY1 z|DgKCP!UD;^TO3ckIJLm#ZqVdUa6fbKh)cZS;Sk*6Doc zUKrjL7#HszG2fp$)xSaA@6QVSp#Rc8&C`&sP4oDtRW^L3O{)~0f5G_r*VW>hs#U0D zTIH+^Dl}R0tdFUU{qZl*uFDs{FJivGxG?iV+8kiN<;N6}U!ASr3g7B`Dt!vg;63Y# zYkf-KQ+>Qwzlqq4a?e`QnD1F#yf&}_k3AB<*}%MsdU=J$*_RL29_0i%J&%hO_z>s` z#!r_%C)3U3lo{`VX;d@(H7;6{W=ujo2x|~_jxE1$NksV<{xj|G$+t7+%Z9qfOThcK z>)Cpl2NfTniXs;TP6-RF1pK;{erb<#$4_pg54FGc2~R`wXtizyc4cV;_kWOtR0Z3AwpN9sfE=yL6P<4oUUdHJ@=K2} zPBx;xT3a$Eb5^(b?U!0Fb81gM;c&tTvJFoFH+-l8 z#Z3Dc*n*shX`C^lCBai<;B-~vLC0UkIRuq>86~cy62Z3;MzN5ACN8!fx>SYN`&XOx zae@A#z*!Nq0Kr>ry2h`Ph4zs^)M$?-iaUIu%D?tIOsno?bMO@&r^DuF-?LP&^{2}OOH|Ql9xsiV^&WHZ)xZgsXX7g=F6Viwg(O*v|u%*Ya{ET z6%)}PF8z%~t=ITrfrJuZA{`M@?O_hozyknU`|m_Gjnm}2Yjumi5O>(f=%F9~AVF0WDi*&Y^m$odqoEZJz{Qk&_!^&0q3%g{0WEv6e*q z?Ii!O_=PxOa+OJs!aoP7C*HzMfq+{>{1CaSs73hM#C~18lg~uJGmv&RalA450qhLc z%R2HXJhP`5#-fe<-gZj-UfCRb5p|~~!OevqgXAf+FV^TYeQ920*E}-V{4ji za{m%-G9@2)6WmI~pGK87%)Bn*5##!tTkdH2d~!TfggboTMbk<1FUTF|s~tg{YMi!R zi)+WU1KQSj*U6yUhI|a=yKDHym(?QAR4uhOMH~c=d=WmZf%mj^@!r@6WhZZk&4*71jk|zQbWU;24ZOC#p5s50qyl_)tpcz;S^|saR0QaT}LfZKxG^T+m+o z$FN|6wfF^riNHmKdtYPlTVg?%U`>`@w6K3uS9WWq*LarvrFTaD=!_KoJ>G@#=u@w*Pp?)r zMH{47*J-_iYtyv8)M_xA8Ek@!`=@48gcd89 z<)idrwOVi1T%>e^6S zxTA0jJhrr*2zWHPG4gtD7KG}TPr{#-UB$RVoQN}PO^W7A5wt-hL*_;Fg5bIwf+gF( z5N*$1u6?A3%X&G)16|UrwRN6+ezCZ1m;Vd~0Z7#kNWga~Y;ZmE+|BezxGtN68 z;w92>{&3ELq+bRnR*FKInTHaFQ_QpA1+>d;gHTMJ#!j2sA|qsM2d?HEXKy-kBNdx3 z_omQF5ai3J>`83E6pmS-KQ-=2x2&I3E)YMjDx4oi2p0$oz@vVq<&rs+}D8A!GNRL@aaoo)fX@jvG#2d|G5mmXPRU%yDVEpDNdO|i}D_Y^|*b3sR zPrwpFlYfPDCR>O}(iZSk4fW^?d6E|JznBG&FE*i&rYaZJl9x1S4j@Iu9=*Z5O3E&< zWH7EW#8~qLXOh6C?j)MR(P5$)x~U!lIEqD|cP%66##rtIwhrOj;7X12Y}ENU}Lw3&rAln_c&+r6yO$HeGS z+D)b1B)R<7$ql;yH(a>|9PaoFR13S6_9oFBw{?C>&$2C)@i%JG$&Fm*0xC1PLx1|T zDdE;mI~w0oA_#zeGp8fQn_lM)?^3UXi=sMBpM^*S6@;%j7dzB* z^=k=ffgbTelN%Xf>S=5VhZ`SA$Mm5$<^Gaed}>^uolUaFYW;@n@UFn$b)4QX4k6hu zv=Jb4wvvEPUCBk2@U8Sa{$9y6pZZivEhUWi(BtbVC-6pGM}hhFsfiIZl&FM~51%tf zFrGCt#)%Ab5gOCXj1rMyE_tJDzZ+Wv(!ERC*?fidlRWxk? zqwo+=`V`+Jb}kQO#r@)p=}rEv4w4?-?>!iU&V8Pq%TDGy)Q{QK6t3m6XyBvPN?)B* z37?zBZ=c9G0+Sn=M!xn_H%hQ3jY+C5_@#?bmmerJMx^1Ma^%+uepdid5#Y+4rCo&s zh5-jQM`|-1{#vd}aA}{JUhaXnsgANd9l-rk0Jr_sT2h_0&$VqrdHI{#v|^%2iOLk^ z&v=UZt~JG@e0l2A+BkMU&o^xwlOb38(4%bl;|F5wbd8J5+UE$uW46N~L^&znN9_*hv`#? ziQ+R15%Kd(JQVK0O#x+j7r^t;{fyihnjG08yvU_2ugnFMuvkrkb*i~s+$%=p`#Cdn z+s+XVydw>~902QJsWAWozQn@PhhxyqR4vUoJ;4V0(zESO6ZO6M3e+pG9WLRatPXUo zFn-75Fz+-t*BNq+f}Z$dH(`8Y+{g4Jr|<*@UkP~=Sfu{Xm7trxh>m)4vm4b9CGByu zlJ3?Cx{JR{7|8=s(cgTKlJWjA>n%8+Fc3`}CGL%k&yL-7**=V_80sSI1oVwC0=U{! zz$U(0Vau6^Ta9c}FxOzuQ4EX{zB0{`3=~S8ini;rW9L)bl;Aa2Ti(t9HSc*3&XwCIYS#z^57HjTYu?W0#W@cdB zfzolJ;pGrqSbN373?$yd%8X#FmB|MfYL@NiW)LUHMta~hFlX{u`iilLm$xLYRv=!< zAki=U&b<_{@b@plr>1zJ1>l-`X$2bQP% z{v24;Y+z&iBL^)n2NMqx7R$aX;!<2AKK{+>#oCpV^mJ|b zG)q=0^~Fv*cqkFQ-8_ELyQB}Fl0Ljn>!J^@Pam#2)90>7i(*k-I<2Hf;8l{&5z%|5 z-kVlpJ@!i>z>cTE1mf>uE!As%IRgG9`W~;}3Mgg}6o_aP=&D~it)wrL$|P-gM}Y1; z@Z$h+lb7M3bUdzp)h5`3Zpxesoq;g5Ia5pRIB>hRnO_-D1(c%*%3I>Eg6^?D3OH-o zdBF~6tsTzV&fqj!e*#X#TVM%RydNpx9B;xoNlWe6f^(XHv(ygfGzn*oj_~|;IBV>1 z)^rBv(4T^n-wOaf@p`NY=O`1-S}nC>3(h(LXMr8gItgbPcH|T|%j|HLbq41H`+pLj z1p=Q1Hhh+vaMoz49b0ft6maI*;hZSpETZqc6gZ3Qa29n2=MODEiO)QN&paDG3rsl6 zwA79*ILAq?6?<-wT8=Llu#S_k;)#zOuA+oA!99H?!?B)*Pb*1R^L51b?PP%uZ3izm zMgMn#UsK~U5AXma!L5V?Vh1eJ+5r;A`>7KCYN;<1zk69b5T6b{P))ES0woSMJo-&O z5(#GLRlu{C;J(7dvsbGE+*L`qi+nMync$vp!QC~zYD#)loz_*as!y*Hc=iZ9dw^#I zIR#)Qo_$(s#}=N8g%9g$ja2{m?|@@$uV^k?|ApQFTDZPss)g4)ZE8oH?%J1vQz)@{ z=~JhqPpv~U+Al1e!Y5X}20#F=dv)=IO174zeZ*Z+Qo4o%-Uev+n`yhOgfCzGWC2&c zmacuQ?bHs&2EZ8~I=uSKoQs@+uc@Uj*5@3cUwLWb*K+VKk(m)dk^y8$G$p7bxY-l=3fj~2b@)?{W(6E zTB?tAYc+2Am(+#+TDiDicyWt)YsXl8_8!FWF4Ts3;$KHIfDQb|E*+HK3x`9)vZy|_ z7k>?{v6E|jDSPC`m)hh$_5$yv&zs~-iU)Iwol58ckSNSigpGm5bs4OS=u1%&-YIW8 zOoLRmD5Qjjh}XN^dbyA4dn_`4xtuB1 zwy=}#EEHxijETEG#pn)3eLwfTLkV+)HT189e!wTg@Fl^Zo+bM4Ys?Tj12?FIu7~%< z_SlQZ7>=FswW63?#EWA%pQrr0IA7gul(4^0K=i!`U98}~X=i9TX7wFN?R&J@x777z z-|LQX-{-gMJIk104p<3YD&XrQ`rm2%1zB9ITl_8opN{!ID&d<7Aa2D(4lwq>){(@G z=a^)uO6Vhe4j1rU>{O=;Wab(_92M|2a-A(S_hLL8a;HknJ&k8Tr*nDZQ8AbC2TdH_ zY2om8${#IZjQ_)&JG|(gq)kNUlKowtNWtH16Mtil+VNL$lyTE~#KNC!_aqEYjzI~R zCg;U@tn+y}F=bwQhUQX1_GjiZDNh?7H%TyVG|*4-akcuFH!L-v%jrLAChcR-rk{Yy-Y8IBh*RSzCkrp zV>ah-Z*)a@+kBvT=uJ3=UEfff8b6D(!JpYEU`eKF#4LSrGqUT@UFfoi>hApJq_U z5gI}Kc?*_jDe2Wi5;rTfCYFaL0OIa(P2z8^sEfmfOELZmx4&uDH}Nf#i9drmIUFd7V9cRXedGNj@XwF!I>_bjMKYC(Z>4`1V87Bf znJ8FD)r`L<&ye5)ytSmp9XKU^^W;XtYv7i`EwRToSvN+m_V}l})d_k9Nx6Y9I=S4W zgtpQ~5Ijs=ei&^cD>3<6bl`jb1G9R8x)B+#uobtK!mSN`qE?Uxp!Ddmgynk*n-14i zNj8MMO6wa{cNHe$xtOymxAV_r?Dw7FHH&OLSUQX%hM2D_FeIu zZoYP4U{u>Mh#>SgDT{YQ%198A{V@%(fT-WT+Cl%ehBR$6!PF0urL)|fI#TfO!d9)8 zG^AD;%AZ=}Cjphv0}kFmcr|0(8z6=b#h8iQ-c%xIL$q5vaHoIUESL7?z+(fW&OOQI zcT)4Xpw#RUr zw=f~7=*6mFTbdHO0(42BRSC6-AkSe7An@w;$CSl@ec+qc+S&*pz_l2Nnsz|kC0Jiz zodrZg4o&UA_mWUxF?@DJu2(y78;$_D`2Egk`{K_bWC#ui8V9~<>}7obNITqc9Hcd% zrCl88ocbtC@JPe3a2mfqX8J!DVh`2c8Mxo*CgcW?4@ZTp@VrVz6S3*hM1sEt^@BfS z`Z!;{b1mh@9z4pWK-f4qFn-6SSOMvV zOI~Y~jxySFhy?SAA{PDS7=wO4{TZQl=UZ9E1ALV_^|GK5V!|j)7zp)f(lx?w z8mAt!V%OlU!A1_j)TeEOdWC+omk+Gf@3p4*e*H$DK5GgIt$jeMYaB@loA0~r)0&9} zZgcZI*EJE}h|a#agfAzmvuN~liqlk|wl4lDwMvV1T_Z>5#2repGWS~YDwEqXD*8fn z7`uD;o7L&WEJxU9e-kve%d_-hQ__dkY31%%?|n1{>X)t7O`i?l97>3HP1}2)-h5zR z!nhbcUtU+P#bT}RQlVi}9LXUWgQy|O9YMLR^b-bAA{@N z#!Ao`?iI4HmzDf@8`cIpR~Bw5VP8s`5i2{GYPUA^mpZ3ie@Q#O{<5G>$V@*=e@W}8 zzbxhYt;f+{(mLobvcHb{OIk<$Wlo*Y13Kt0Y5%+avZ7AP*q!PxX`SjXjdi9B+ll^? z)=_`CzfQiZN zUX!KWl&y`)7Oy?0YggoGBXX#o(MT|9YiR!=#2!e31)0?XOWOv(Ad_khnfjk{@C#3H z>NB#nhHU*0+4>9*t=4ockV8|b-|W+G&P17UD08D*t8;79GPNo<0^XsXHY}6MX$1I< zIocm`w9z@T(dPlo=xlw&6n)wh?WQSOHGO2ISJ!Ey-TH_u{njbzx7KMh-1@EcdR@Kt z$9k>4KD}Pm8eDpLeR{d74Rx7@3lNr9~cF_&v$@ zXLtx<+ElNxiDeA7h8nf}tq);`^!k)I2F74pxi>|*v$K#8~;kX|!|a1*-|FJVcv*8Lb- z^AWVYmVV{4mxtPC$>wcbtJ{(}Ewv8+_Su(cx%kp@IbvZ30+ZlB(=Gn3Pk`8B_@Y^J z(P+*^7NlbKq=SbaK_I;2Dt#WW_?v~lBG#Shae)$ArMO?TuixQ>F_ZUszPaSzL>lrY z-kB)zMW@j-VV*sFCt{59K@TnLPurm9=2*TtmA;9zphO4{1oVCui?p0&g(x7!j zO$-_gZ9`cA-y7{Sn&)dFvmcDTOuEa!bl~#smd(nwPtm~`S zxSji?Os*Y@74J?YI0iZM$MJv+kA}q0OzLg?!UHrk_inlWs0GfpfxE-44SB3L6ugS7 zbNcmeZRfy!{>`(Z_KKv#?y~4d34i0@=NKw|r37ZNq@iM>p;AFZu`ig0N{=_c;#P_6 zNQgrh`%(ozTd|=!N?X)%ijXqtdg<}9qlW|Kz`mg5cxj?SY z`mZ&yf8mK0p;(~W;5p)f9}HY4m91Eh6^Of|+<`|qqT-$`sf3@1%opQCBD|c&yVZV4 zjq#J%{br68_2iNf>NTvb(IU?=$%Kd~JAz2BPk%<7?JWQ9ganUgyv7?`pLg}TYPGjO z$Q9CNuqFOlyR$-$i{4HR-x9xfa-%tnN<4zK&bSb~g4sa3iUsy#1S|_AM4X!l;=y`@H!9W2EGjr`IPFWiI?jH zEpK>&ndo~;BpYl(PR`5AF*#ze0}uQ6HKb|#oZGam2R zoboA6q}&)T{`sqWwMcM@WlrD>$~v6jA5Vxq4U~v($f@o8DPJw&`841DgZ)U9Eb=p7nmUda|H2xV^R8zTz*n ziveUr+e}*y?78E7K65|3(g0G z?%_;sr^QrVdy{vuI=IG%c2nxYE(?Z{(C*TPx%4WxHq0#^-ke}oN=GH!p-_h}>`$Ft z>B6%_SMp)-rP$KCM{2UQ4Kdi=^xhq zu`9tJv(0`UIv@Rbf3hD04zT+1qM!HMI`)HCL=eYCAr-+)^P}(SY>IAnvYo}JgOTZ(z8?JZ@H42bJ$_E?1n!Mai68k85hnE#FJi%){Y^)IYuL4- z+6%_oA3%0p;M9lnJqDnhF&aZ^rV}^d;ScKY?}i9JQMzxikOD; z7{%(ZI>PZQ8`4^#fO5|YHI=82;R*keQakjD%@f${VPR9f8WhmOq5$<=FxVb?h55UO zDYRp+#UkphmHSfDywoKn#@`g*+4OC!VA&ZX6L}919U}b>PQRSXWZS;;+eG<1eW+Kf z@$qics1MD?_lIrP*-eg!e}JIf`ZQ=|s-U!NeRy{4W3jqo??cZo^~Ju;B`oqfsuFXZ ztq;qNy_8^d#hyW_d|&Jhl;WA-?0aPP9Wwi|T=A^h{rFqti#4LSSRju(K!@4w+8-+$ z7%3aLHnsgCnVm1Q%Vhh-odVlMmWFtQ(tT1JLl|#le<8D*b3|kD90BatIU*{@jvUJe zB^mFkmX*^y zzG4!#oKXvR!m-^eVqi_kX-UQ#*U#qNU-cCPo7{TsGB*T8w#rsy$M7nPUg3?o(K2GA zP)!l)ELypYZ!8NP!dxl~3h_MFD+o$f$&7w1FB9R2Gt#z9-aEt%V<*?gz2e3id7a~n zrjWbaM3c5Bz6j-*+C`F#eNy=U@%HBNQ55O__)Ic^fCD{h(C7w@I_oA1nn?JVk)R<7 z5FuiapdbNV7h`mzqV_;Ugy765O*4>P(e+%7;IW>p>j55^fFytimmCYa;z>8d5fTXD zO8=hsQ`Iw*pzePE`Q`P3ny#*{fBsn)Nk4IFa@HelyT>737ckYf<<3(rGL+)v#F=ZDs{Z-`QQA_cxx zN^l8CVIOX=xZ1gaDnnQjcXW@(YdY9FVLC`3=~t&x5fApnDWEMwARK(Z#zzg_g0264 z-d6uC8na_QrA7wV`iT2ff)}0CT5^1A@V?T4lu*wI@hJO=uz2)iRza|QYZ}wfe>)w~ zI3BE{LreXkZ(JoW<`pfCt9EXpR+8lsz0+ClO%@7^D}``#9V;vlgG#am)0}X>s%4wX z8#*}7DIfLsML+ek-WH8^>TYN>?>p2Hvr*ty-~{5RMs)a)%GpXbQ^i?G@9Qwj9f=dG z&D;5$hq7G4ZHgF6z3^UV??-_Q$$Y&^9cPcNcCH88&VsC3kw-YQ8s@d;Cf*yxXjrGr zu~;!4zDiHTV&yUIW`4Pr-9?okj6hC;>E#lpPsC<#O0{!K98CY{Q@zO#y5P(qh2=Y$ z4gYk-aqaDSF3!Mwrl&tYOToQ)E`k@vHAi1FB+;H!5f9Je?kf79>bx$lwG z1;d7-kBnmX0h{Y&B)6?Q)e|3|kJb`R^Yh28HnKH#oc3BmNFIH;%+Du1Z;tx{+F zGLBu%h{B4$%LMjrV(cB25XIhqx@;V4Hd>Fx$I^vpDvhIM#PH{>PWY481%D#7wfaE* z?XNcPVHpLxVAJU%F>cwfq7Bs(Da2azD8W~Mdo2zUD?iysE1%$m_0PV(!D^^Ih6*^b zB9ZSke2@W!*h5i3Re94Qd7`b}zfENpi8*mQizL*P;QB7>J|hOXP-5KN!>qZAMwQ7p z`fKws*jX;;Ssf+jcoWa@8L^|l*@>|=|EHsIYd*44&cTQ9;Et})5;+Id0W<&P`G_l< zY`!CC0V3V-HPm6mq{Vv0ZDZHj>-Z?I!#@0?gobr>wR0^T7R_r;*lRwne6l%-%L|zN zDIvDTn~g<}L{Q8@ABx<-M=|R@<80~N+#M6$EN4nCE#T_vn?osD2 ztP-1cWc@1bxcVg8ar}5^+VOwRDDA*@73=$l?VV_cq!DjPS~k%c!;|bbV2Su{n-OS_ z8EdhQnHqPS(-}q+`P)IxPKfMg92+3VQselwu?+1p7PUl-V-1hvQAczf`yKJ)XgwT1 zjt}KH{uNu({}yYSI$~BzeW?8|GOyMiq97mk zoZZG{Zab+=21J=V%w@+pIUgoKZRROQxhc_Z{&6cB_Rf6nXxzgGqBM@-l>Db7&W59t z4WqVVE<9qd(F?rV27Po2A}!a}T;WtNm5=_Gru=H2$&K29%njOFd4l-1a-1)p-6i(RDq$r{tLR=A#(gWVTbtlZ-gD9){GT+@er4^j-2slb)m3~ zblGNsuvlQ#1_25?^f;j}zQeL?eeq4=94T!fyW>Tni$J?G^10O2D!~Gab;=itc6XcQ zmau<>Ken)c+26^VcWaKd$4o+S&f`jj#W!{o^S5j4$1&MI2u# zYgTWI%9F*ZLkQ;1?}$o{*>14ZrJf#@{~4~1u5#tyk5DiCb-8kB6JLUcSaRQ=b907ZYMH>Tz{nJJusdS4XH^VhvCr zKUtsR(T5`zYnpy-s(yExKFO7B+B3F~J z%<}6TKe62PTpEk^C5`4R8aW3vtEd%zwRzIL6Cly{A?gRjgxZ(p*UW!gl=|3Q6tDrIu) z9ICe%YuTu#dd&%vH;6NgSXgh4=6#6}ODj${7eZgu$U~~t_OZPWi?$;!g42547a(XwhAl%UxV5dMHT}J)>UqrKKJ&>AmVRjk>8xmpk4;+c9Y^d; zne(jr!|MY(;nthX9)cY3b3jkSie7MVx^KIBmbN~URO?%*dc?g6F`N^D71e$ENIF2O zyL?}&eYDjm+o+0L0sMy|8)*E4My3eemT$Yim-(y%wrSc50@frw!MBazm#8I(NSoJt z5Rz2J#+6~d(~KW+nFnOdXn_DLOztWH_o2g<-O%` zTMYwA#U;vx)RXb5k&;`It!^-{NX0}all4R_UC zMaVrb!4Zw{A=L-a;$YQ50(`w&8|{W9e2A;YN5#JrdGo&W3l^DGCmftfO_9P?1G^GEV`s}?v9A(L!AVERVU2u#tpp(^;UZI+zZ{&vMbh-! z)6vJVZXvCQgjfl_lEC`_8^E3cfh-Yl<1n_RdTgU=0%86zaU8)=$EI_EEztr>a0}&Y zIN*Bq3Cw?egO1Niha8T;R~QA~g90Auap3ETI`2+Bxmz!avMgZ|o%2xVj7c3)0Hn!o z@vfZYGsYarxIzekKM|q*55J(U@c7lubDYe3(f{QRk*>qm2;j_xu-B_y$*e*6227#qk**Lpqh8a&r0e zP<|wOnl8@q=$99LRN0O{nAX7^&)^yrLGNM}7)BcE9P5hD`r;5D%rPMx<*62g9PuH| z^Q|u5HydAnPKB>`#b<@_{R3WeOh>2w8^)5)PipIrhZxf4r6+_O2gXQ2Fh6Fi;Jf4J zYRcz4mh?_@buMbS1`xI=P#9n1n%>GQmhX;OhH z`a9m&9ej`)M`f3YvWNtbH#dPeKp37!AfmTZe5I3>;Kg(f$AeZn zIodONE~nn+8OuInG|7YInd+_5rc8-1GmguQKS)fx=pxLoV(}f!r{6nbb*xr`2|c;l zai~eV2X;H<+7LuAtE^N)>jnMEN3AxsqclsV{bYJGQtpb-U%{b-*3~14Ty;iZCc>^^ zBj9TN_W^PADeg?wTTWlIIF{b1&@yqm!A-pxVu%1Uj${51AaMfMMZ6}2$*H70ffYrV zh;7ErG`CKbz+K|a&BXe`)f!V%sgev+1|`cdnm*-qoeiCuey_)FAH6ppuo$_KQ7(tY z9WxR9J+M|(@X+J5+Z1^xXM^5l1ny6D_yMt-VVx3oXX)$)QJ}5Xwmf+lvAnA_xSMb1 zZ-V1Vmz;5CrF~BKEfLw_&$)efGw~D&JxqJU4++AnW2jh(mpG znRjwxnRf;OCCj;<4iMf<@zvyT4v&Y!Sff1-F87s_KhDsvOGnTF?EVflM13#g?d2IK zPf!_c4g{!DdRE$pMW)RCKB$N5t|IRphWOzdC_qDpiYE zdBejZR^9+%1bYhZIgk!g%rLBei>G}L)m06le=d7!nKM8~2HoUUcZn17MR&K=vAGxX zMZ5G)304b2ULySWOU&2sVw_i;GO6WK(Q>JIxBbO1(SDg|zs$Vc{-QrluJ00o0}7b! zLd84|SD1w0DFm9}n=(ZSeMk>+fn5YH=Na!k$~`G3bedwX;X!?19pd+7Zxq)xgYD+1 z8uTyh_MC*@h*h7*)AJAEdXXn)IG1J^xeq7t4CnF;-<-rVoGWLTisS&5lHw-WlO!jZ zYsu%Oq68B~E%{u_S1zt4U(}LCMY1Tj$;Gu~aV?bsXR|~tHZ__ca5jT$86t9{rQ!ksYb9b{ zEilR}Fv<&DP7}BkrHtQoFfL0Aaq$^q*+rTd!wOHXVLN>h`3PwKzUj3jCjL$kSUX~i zd0R(}WM2ChK{7?NZp?g?JYAk}GI>&h7YQC!kf>w7NTT+|lc-OAkwm>6Poe_9NTR03 zlc?d&Um{UgIO9mv+0J+pl?$Yinyy@~qB({%*zzULd>X?UJ%%&)**J5zjWZRDGik30 zoT&q~*H#F}I?#E0+x5{}VSNX{=uITZUW`~R^!t9u-E*Rc5|kjAYr{O|7ee;}Jb78- zNp)<($BJ3b6|(PY*dh9QnJ33RquTID>a9urZ#aQFh?X4IP5p?SCMs35BhmSbHUauGIbw7{` zOU;smfR@d7n-DI<|LT5Pa3C?o4_;LGn$rDB02&Y2J5V{t(QXc2Y98!kGv z2&Z&Y-b&)xT%oO}eqp6#HiG)F_>o7t@fgDB$`6J?YxFSQ)tF6^x%cgKP3n&?mVv%e~`1 z?!xU&rE{yG`sFkf$N_$h+tUs(uh(v<#MC;=y;Yf21pTS0ky=_euQ!R4*~jR|q-3;| zy*KhV$ULZf-Klv>m>P}{xTD^GWlqI zE2^=n`CmFwbKp>hq~_SC#tUkmWgKr5)EvQ3#a@LO&x&lN?$L1m@hwbcv+Dstf!E=F zsdkqP#%paA-=Q+=TkcL)_8P(6oyxhJU!vTGK)W-r8Kaea=BdhCt4`)HKay1VVpdsY zZch{eHZx-UWjHMr05yk3>3WvY{o5#A&(f#5Bwf#nr|WV9wu!c+>!tB@y;RUrn`leA zUJ_5&OGGU;(Ux?*IG(N-i&|`=E$MnuJY6s9%$P{Jo*PfsC1a8wN7wUXbRDbm4yNrm z*$L9#;E0m;IS$8f()FSjC0z%MnXd1T(sf=;|BrM%OBqUaD7o9}civ=bZpG4P7L_bPSqU)uiH>JNo*RxKd>-$fp>&*U+KM^JH z8J2nh)`BxYsBW1R$3W8=>}AYd37Y0Tx-uVz1%j^gH!2@7Ej1L@K1 zXyyWWfoc^04^`ruM2!7r`oRnQ;0vPgLCTQ3fjvaA8-VDC3Wmo1|qKQDLy>MhnMBPM;v| z2pOrK${{`>>1PL^$jVxI^X>28T(MGlZ%5?ycs)-koA|TS!X_d>Sby-BcdDoPRuJ># zgoH)UPl+T#77p>C|98IibWAQz(N_A_s=M_eDcWcJLfusXd(kq&?m23L@a(=S-dLjC zn;N-@%5<_Ph*~UMO-*HfeiKvnz=E z+}}`38;)=cK~OUEf>mKUl^9gzEmIc2?uk~}{ME=UbvbuSnT-xn>TBQg5=wW+X*DSyjszveX#F~BB`Ws76}e1+yeJ6N~;Y6s&UE6d;KzTlXC9pbn# z{653mN$tW`yiFS*Xpv!4H z@C>wU|6mh}9yyt4iR~e{KZCY)wTCdGb{6W>tl#Hyr*G@3Q-2&X1bs?+Cv?kX-PJGI zuiP$>WsvGkRR{BkRV;qP$V&CTsC+IkY6;Zy&r3dXa;<-`-SYm>0Pr0L`# z&!^58Miyr8h)5TwELs)9UE&Wm2-NQ+E?>2^>)5exoQ%Tu2+gb$R@8KN zj)hj)&!JT^oGWxFcZQ@GvpSegpfq3r(^=CJxG#IiOD`D=7i`qkG#i%9#h znTc2jmU+B`{asC6^}~ z-~={4^pC(ii{%I70oa=$x07H!7vxtMa zfY%x=CZP_&zXOO$?hnN2#|aS-u?I&isC*C>r{%%S%vH`qu@QhEUiu9)BY@UhL~!lc zII%+84EHyPC=;1O>>I(yw|izXsspStR{?|K#qXe8Uw_R&;l*iQYuPkW9UutH`B8fK z;ifox$TL|xjKld5eLEoMl|R`ZqeYKw>Pm~?3ROE?u1{@k=63Xq*)V)Bd=QP`!Z-p2qOuDl=)|O#C5+HJrt`w1x+1hYpdfZ%Vj4-kaDr=%smM3&`7AI;Dsk02`0UTfR3H^%N>^qr~p zjPXEliRU<_!##RRmR{&Fwu4neNPo&H%HpdE)-@20O>pCi#U1|5a)4@9v6{{O{qgpJ`GJ7N2ED=nFW4<811YX-$+n?~ZQ-b%ZqcQMa_FLe6d{GR%cRVA& z8|Po%Xu~(^j~Dq@R8Q8=#d@+W+B$n>*E=|JPY9_lFRAyfSAt(Bu-5Fq-XpnZ>puG; zO#f--dMC%a$>+#FE9t?v(tm(M?td(S`CqS=d^)beQ_WdU+>0RUyHD0I3x{cn@NMB__B=T+gTk4*;Bf9COM! zB;Dgq(cHKFIfy)SLjTLPnQ-kf=5E<%;SBga9x{^+(Nt57-N&XR_rt;|RPVnU{-{)T zH=ar>=`^vI0|WH5!-A?K(Vrhg@91peD^=;GjGdyMZ@lqNho$#@eh)j(BpK6x+GWlD z6j&3r&q(na{fJIPzM}Q%_8QN8Vu=n#-Xy%6BRE1_(17vo@7HcED&0vtEZ!hz@2*y> zDG5(0C`ahIYVqbno#T z-1EyGDQ8u7Q_{|mKtoCFU@r?SWPgX*#^TREhUE`~nFN=LXdt>AUZi0^{IQMdeJwc$^ z-ZEGbyIZ@9zu1pgx5!I#)n0mGvhFYv=3v+FF7LSFz7a+05$RitEmb{(NMxI!BqCR(YFs9lG*M&RL$H%&2n~lD zC7iSLVaZ12YU-(fbii_|mBgaX-$T{t19|M-sAS)Om7u0-jc_V)M0!-z7WlRj`_{;& zZLM0Oc249<+!bRi{h^ip%xoX5xUm@Xj$57HF+Av7A?jd@TD?De?Dc0%9LUp-_%)d3 z+be}jS*2V0_l;JyQdf4HcF$xg2^w&H<%Zqba;w1Ez%S{Q!N((V_-0&@w; zA?1ts6I+=qkU=0h<{G0x;7a6aTW0@kp?B0yw4%pWn1?z({^(hfJa2Iin5q9LNs zRMPn1Aah6;)_HkH_WP;l)}zrV7)5qvEsI+~kHlh0#DaeY2-V^6Un}UdgH7&Mb_Kww zp-}*wDgaOwAOMJaF~s1-IqhbByd$E~?-?U!cPM{wIMfS)rEh5~m-4E2=F{F)2a%-z zkm%CZh8DI3Tgh!dEK+~7dB4ETQM0y1{w@s5we7wJRRR3!RXX+Q3BCsZ!C~q!ZG*O5 zPlz1&ue1@(m9$${C)$Y2%PCXa#5Yq38d;?Wy+I6(Z}rPng5N-A#0L?bcXVwVgrvKL zlp_Z)(ie&^zE6M-NeL=05I-CM+C*JWwVM!U4GU9p7N}t;xCE7rQK|h6O87iHu!Z)PirU5^??@+890HbbH!kuPG0>{K zxezt2OXPFJ>td*saX&2LaFK&Fjw3QOk6&t|-P(|3t=J8KTtI`d^G77h&!ba^*vWZH z@C2rgxv#kidGLUuk6?5+sRxTUbD@{f3oyh}l;z1Zl3;x|hwUy7S-!D^P6EroaY93< zHECN~Uz}Uw9XY3`R+`e3FC=r~Xn@#E1-xYRVwh?K`}V-r;Q=SusDC7eXDPvZx^X|b zyVV};23QnBITXyKlZrMiRUek74Nuc%rs>1^ZW#1gtHz}xSs3@9672wgHQ1lD5dOyz z9&Fr|$vmz+RCh+QBP#6*Zs^AR-_&F&meqz%rkzyU7(G|7U+>Obp&7=cYTjX^`P$Gb z1QHpJIJEuf{lgEi)H)wko)72bq1AjCnL$m`&@w1XqII$o@+E_(6biq`s0mjlkWXR&amkC4DTrw;bG+izWf(p<8u1;8wCAv!Z*=FOGmrSGvAcfu8dg2PuSDa5lK-s| z{I5PNRU6JBJf-_jb(%IU%|yUf;&FIMEff`RRNWH&7a?2LyKN8ZMMmd(iFEwiVe76g z6?}*ULM81RG%L&5MXHS$TMqD5%+b2)nzxiY79l32@jad5jETXv_}8&;k)|%riNCxr za;tA+J#=1RoR6UHwOVt7ajvs@L%VtDamLdJRIMFZ?UZ%!u&}M)LL5?b!wD@w#FYm< z=3kD$zl_cTZpG)iK1LOHiRT^kpJL+713o3kq=a!|{(6P1S^fJnzLWA3Y1IRC| zjP8*1^3bbPrjmeOH3gu-ESjhB+>WUn zK|LBv*>YOV*A8186DkXPLnG$ky7bswze^dg6Ih`aa2#H9ahtr0nTg2bc>U$caZn$C zS2coysl98pAt~%`O#C`{C39UHqtBBwX}}*Iw&gD|Ca`G;ACfgb@tgY(#bQau)FDY= z>!+uitJ?Tb`jZsSQdzMMfZ526V)mg!a=wyjuYKr#c)o!dMT}uv0>9X3wX~t^96Oty z5kjcaODij6sVemj0Fk0)!x%S>TDnuzDRvjRT@|>S3PksLRA&Dpww|kV=)%IkwcrZl zQ;x}4o%^fNC9~4v>)By;Qp<$w+rMze4@aYSD#&xNu$cI@v+y4H>$N+DgDp0MQ~IWE z;(Ec9Qy~P1dYW<&AMN63 zd^CSLy+S}U_=F09mOd=cm_%J^8pe%x6{*O@#Fyiq-eSea;ga$If(0#c8QWOf&-R>< zH^0*;)Y%n%GV_8PqWBaV|O;%{fOw2$CcFbDG;r~Rs*Nz-UnST%m zg5pZ-xcPXwI&<5ThdaVWPL|F8AY>++jK`Pnv$S@|OgvK78tpCE(;-#pZRN#D*cW5H zU2q*ig3s{O<$3Uq3s^J;xPJ0YEZmjk3elIRWnWbErQqbg++g>m=Sh7La?>Q1*#op* zzCoGzXx~aDxEallb4#N?X4PQ31fB*utWxY;W0K(#yHWZw-p3)p@8ihiy(j~b$wzZA z^V9Jfk)~5cn1e)ZbQ(NN$GEk^WNjRuF9YcMjmhA<5J^2%8wdKFPA8OV=&CElJ%bvbMoioZT8r_GsM7D_@Zuw@ z0@JJMK!QsgnhFFnI>KXJ?XvfpksfP^i!BTR367l&+-Vd1hg425JVMP?;zvy-(}o-%0B#VAC;QCQn>K5g80p|k46bY zMXho9TP@K$Bkwl$3RxUqZog3thaXH4a^pZ_iny8mMV_Wud_6&yh@A>Fx%Kkp81#ii zNioTVu0cax>P3jO_v)J#N7{SgO`&^w@AFpT>X$R|iuHvKLW737{aa{sVNz+&g!oBe=tV`3P-aWNU4xO-0m70FSMcZTU3r=AmzQ z>VHm)|2DEhzcan&m{UEY=2(LNU7D7EMiR7d^obltB(fML6ScY@rhpf5JOjU5+fDq2 zej{QVwCQ7AiDRbd&n>2*CEhf}w|$mNI}}+5dk?M8OpxcU;)FP6;*=uKGR`T67UFc(t&@1eN_KigwqZc)hncgWp5X zY+EWA8{bwX_yav=w-Ki~xlOGm#<0n$k+sS!17wr zr|f#)2I_mgKV^wizYg)N_D2b!y2;0b_J5||;IVh|u(JFK&;l+a*ilCu%|uwTBk-^iLI4l;vg4>MCOq@>fsC_je9dYPYW#Q0V)MEuW{VR3RG=IeXePUT{HFmZ{F2!oOY9szMsHv8Mnmrk%L9N$tN7v~3r0daov zJ?vA!EYJug1T$Z*B*21SoW`D_EG8qxN(krZ>>aEkTxm{Z{UBF4DUa68MRb6W`{Qtz zj4VWZ)? z&=Y((&!ZV(2^LQv0r#@?1fcy0iPB%3@d6+7`Pkpfq>~_QlLR+$r<*p0D}1ZebM-I^ z5SIK*D-=~+Pz0MG|5m#O-J`KOs!1Bsnty~mf^SHPEXR&N+^vLQ8>$_po&LOXsNF() z?B{Pj;GKVNfOmdHxES$W*B`dUl+pvH9*KuAEh8LqUbg3mwyS16%XffgIa`ntbaZ+l z8!v?}vTRG5(N@fcfR4-Hbcrw)MR%jL*luLw+(l8GqvKH;?SQ@YzDq;pyswOP#_6)* zO5h&UR~V_mflQl0XSGChWbC7RBtSHi!0Poy)Un!btp81FiChbjp4k7sP?s|3iN~8k zty${xOv{9UhWaRhqbjymXaur#bH^jBgQRX=q;vcaHHA(WU-JfWH8l<5xz}GIy0e8C zV=9>@o)#AXN@^|}&M;3os$F0o6qwop(Q!Vq*QE>H^isP<_07m>qLzn5ogXZ5MwZ%$ zDc<}zKYs8cn3*pkBF1V))b=hJ*(?1A*l@h=_$6$8b@D)82txlW&#dLb&NxaecVhjt zSxM~=OJO+mwM0;VwFtBVR%S$n6v0bp`}p{vX8Kb7d!_B@Pf>9%c)`PR2SL0c{|4L- z1Z>le(!^Y)_Z-BxnW)$61s>LeUnBM4L#e()_QJF4TK1kL?Fuv)jyG7nxR=s?@(iNi zjcS@WMVej*Pc75O~P^`$CG}5!E&)4xu z5Jy~}+z3GeeP{b)V9e&OK0~ z+qOc4cY6etCBEni{a#O~jlRDW-%q8ptonOjH-eE$2uE!X`PP!ru6?cQyCT3CDkFXs zG2Z+i*%`tnl&$GM^424H#>;#E>)zF%ghB5Ul+frnY#s=j_Md=tr4n32Kb85Ai3hAo zLbh&rJO|6yx>pIV>W;@jE<8?Cg6AjE})&sY>W;wAY`_6!t2i zx9KBe*}8+0Ow&ZWt`a7bcMIk-wDuHMG);yr+GNxae6uI2IztJ**b^J~GW1tF-16q( z4NXP8t-EfW23>>k;|lJm0%Nwy`Y$z@2doRC*twqZg@Of35L3HTSoUf+J7sU{|Q((D8bWF z=Yn^+k`iUXj2`$g;=$elYnTYZ8K7g_8od{TWQ`JfE|Ig8;3T*BB$(UF;aKkCA&gW) zpDS_uOm(G@f(&BRQy+@5#|yoP&}biN&s}2K$6UT0?cY?RUhLLJxFz}cm@>4|cy}LR{16PqW`j<g421D&*VAjri9MH_Sl!F3O80# z*|1nN++)Z;i7pdVU{yn;>=xtp3l3Ouoj_uY-_52oON2ECieipde$;A3vI%ESBc@E? z3?qk!2oB?+oBlV#pC81ozK{sK;heSCs-68Q*0b0{XIqawZCOh2IFF%#P>yoK$eAjB zKZ@TY#BZ8SB{b?p{CFTM)>@ck8peLhio5_ErejeKL*W|6;YmvHat6muO7LC&F;NM1 zV}A#IAlKBUgtnuK?>;-ogruE1uJ!%uk@9$+t1n6nn0(0M2zh9yN(rvxj*sVY-y!bW zQx*`%V~GfLa*ghnn))EXxdc2zfBp#N>LZHQC&3MHubV4uS*CLUMzjNasktuei#7R~M4LkOHG<#h#k(Op|H zGPGk>3vE9C!9L4%)BHkctF>g;8)xmKPu4@2Vco3+8yLT?VI;px2^E9mjLzLT^o{X* z0;f6SsAbKz-dzr?+0Im5Ph#A87Pxa7+cd-o*U#WdCH725bAJ?es9s?dA8PE7eVK@t zMckLk;({n;UQrVIQlSL@4nqs;HYM~g_(uqHHYJ36SVjK6vMk7_;Pd*wnm_!{+kU2Z61V@0(I}JEfIs`UPO5;Yr6=NY!2<7R`AM z7J2+x@a4p;;xtRYJEqevcZ6E1{REf0bcU63- z`~l>5?E-`_LLITr;RaaaJo=I+Y@tpi9z7N}A4hR&bgquuw@WS;r-kBnD@yQCd(}_$ z?G48yCuk1lX`ikHajA^5;5(l7Y9+J^ddFz>u&s~d+?C)!%z zmfW73R)#h`S++FYLqsDFky@*~CBVGRC_gJzdl2E$^YjN1n!Y>zEYa>x(;rCY$V4b| zw_BrHsl^-k>d<{t2564h5&!WGvH?@o}un8D=N?5W?cGN z>@53Q#SzQwb|elN?>ve-*jF){zXUWlrV*O|KqylO_X-qggopkgq4y40*Qq0v1^?hZ zrc?=)v{|;eMP)r=EuYtkUi}s5!e`eARb1am$nxs_#N^FxkKa6ZQJ0K;pB{|Tz)5o; zNNQ(2a~zXe0WNi_!z?(2mC#@HDhp=vCULP6`s7fQJ*@;cap^p&;_P;tdCRZNY)0#; z$WCm>_r$9GjdzwrB{ZA9HmW{lI6MhB?3_w)*nv1X)+tIbg+5T`?LbU(kL4|Br6+x1UPBpy6SU90h?6tD&>p}bZRasC!ZClMJE zBj;nPSw9p-M^&I>uO`Y?d7h>y!8yEv-=l|U8KKU995(9wl>oukQ-Lp&&Cgq` zll^rrpuq}-^I2lpxT1kk;$1qEn9mcu0>_+6@OkQ~d47v!yW&Ofl#27qmyD)IK6jEe z+8kw(*A8xKq^*uvI0A-_wDRc)hX|UzIlEi!$<+!{jP3tw#cIYp8BaZLSSGMVOl$ON zXY*A!xeB|*K>#ov?1WX!xh+vdxsK0$pfB2bb7?1_8ov62*2mz-O@zPy;7wXLW-86% z2yq>j0MJXQ>)xuwdn+|Mc->c(cweP9#jW34op`T`kfmd)Va8PIGJBynLSg;n5nBLM z=x!<$78ooIF;$qOad>cTc)E$JFvR`P7xBeld};aUbg0_z#ZE-~k=*BSOw$Td#h}ca zQJVHeVMMbNU8tX_9%R6+HKh??aZBRaBf7Y6Z)(a+U(19-rCEx z2h+`TWrZ+rlaX2KRVcj(=BZ^gI@ua`mbNh{O^3oXY{^b(NlI? z*mL#sMb3>&EuV^Dm{e?(4OJN$;1$L<`fv zJ1<`o_cpfRz9^y%-iH4N{&>cXaABnX@rPar^&3k-@*&S^PgKvPifS*7-~8XWr^SjD zu0t)bq1O9wt%$$bAFa@L7hf7DZHDiCKkD-Q=fNyJ=vdA?!GY|0a0PI!y?=%6g?9_J z4Jo{oD7RM&T0G)Xv0sgQfN4pFb^vxqs6bnLcq2b$pt7*qvjcln1}dbpFsl5Ss?-`Z z5eP4XwY9i66thH4KYl+!Z`^l6@S#SDLcZHrY0 z)7C(J0-pDkx5SE%KdJb?sCbjKi)YmwEiuR)npt@(vF0MwfdFnfPl8W9%_S#NJ1oEz zXy~SixWidKD9IK)2J3VlsybDNg%<{?3I-)aeSn}FveGxIWlaPtuc+(l#9rwApk5q) zF8r8K=YoD47nHX|m#|&Kf(b1k$?SmqhY8$G+&r2^73R`{N~d?d@NU}oURSOlX&AEAsge@}u#1SZLQN}zKTWro$a z!bY)P-OTS@Pch0+3#+Eap$t9${(fH7Z`yhGHq?vqwMKfguM_Go{AORN^#3 z$$T3n=_8DH>NNyF`p|xnq4&xEp2Z8n4~d3$!jW)M?~c&Mnc3NEw5=7jzUHat7uV!o zs;1HZ?jgP-{>{E-<>9-jwz-~~qx7=oXgQr- z=sBMQoU#26XvUyESouo$U5BJRx~rCs|9EB72E7+kq&4a-OeI3~vy@0dMJ+#wci~dn zn#4ObLwEfJShDPuR;z9slQQ)yo!?T`c=H^+i8Qbu{zAJD@*jBxUiPRDe@#i-qQ8EW z#O;^JTXlQFCLP2c9X2Ez+g8e#tFaR&c5sXE)DO#lkb$|PVcV3yH$SZ3iiOX3KGTG?oxI{ z_?3!xop+wxPVbzZ-lZL3FKX7rjey8nQs8u+ZwY|3m9b*j1yah1_S}h;F@q z5`|snh9ybrgq0$OO5J*~E6#_thCUDsLpZIb;fKWRdOA0SM>zGoZbY~ew6%fy4Bs~Y z-U=)y#2<@NapR;m_FhetuNT+6X66IgZP`1rt;l6!zCGfA$nGD|;!*|PEP~y{yXeLkasV?pp~JM|{9DckW`D1UvY zT|049ixt@*b)Q-zy&szueZSH^qJIm@F}tA$c1yz8pFbe_+C=k{W4v}R0fZG8*jE@1 z#MDi^S1@-^-rmBu{hnCdYDrZi_wBB%_&(fsdyD;6@HI2Ued*ZC=xCg~EQc4UcDVIb z`~#q%eVFO9vfC;MJ=2L%g3khHhFw<>?@YwDObO0M(PSb%!^P*r z0!b4(YBdXh=T$bYjox(Bm!ED^4W@doRPd9nGt+MC*^Uca9g26}+yZ#FPNNa5PIZ;A6wu1$ifkzq0TTM5o=nNx;?qW0T z<9FK|ySzAsIbLULmrWd1`B0T$FYlA=02Y&|O-BED48sYNL#n!RGON}O6XRok&4sk zp;8Iq))Dw**BU~Qgu5h{qBGI&DsTk|#CZsk8g}(q#Pi@<-LNw;+9UL)bPB<5)uOMM zma8A~!e_`gG??c)8#b8ACmVe0mHD^8`lfz}^2velOwj0X%3s4}n;lIFyi*j2Gru?- zH5H_YM4WRAM3B1zak?!?7l~ISeDn>cWaWq5-F+qAezRWYfcWeq6Fnx^h}4tlIQf_i zVvF}+I`b|f_Ipp7))Z*B#6_d5E~HW3k%>1nFKQ`P+-vlBy}6xt5Db{l;nE!M@Oxm7 z7$D|uR^5rIYAWP0nnzE-!-d;62SYtU^-ZAqZU_v`sfRq7U&9!9A3Ll_?^aLD<1Eb1f?MYs9CIwePY%K8IdquF}W2 z^+8m3YBrzL`iWxb9X%nApC>CDi>JCA7gaK$pCPdB`P-=d0m~3b>XXZ;OzTVjIaE<@ zr%paMoW>$M6S~jhIp^JJ`Z%#WiHLaFdn3==_ck_an}s1>#9^OtBp-dX*2`EcM5O2x z7^0i*qzU8`;>Xd_O?K%LZ(1G0r(XE$d=i6CQ;Oal*^fB*AdzPC8CYnq-N6U+9mE3s znW)C^^=omVSbj{fRtKM;Mce3!or)I0QHC(by1_+^<|AGGifn@}8hQC;@vsRDYl&J? zgHIsbgTWyD!UB8T!ZcQfR>FP9h_|%S&REwGi?!sDVeGt3-JliICb_cfXA{}J%gKIR zi}n!AaFKk^m`@3Y*=+72SV2{|3%xmE(Bm+k*)8-2`8@3M^ zHHQJ~*#sk4M`UqDtzF_7S;8SoC{0P|0H_<^W@8rv%AnZ4r*W}`q8Q7G$}Ed*vI2XG zXl}~t@FLLeRByfSblN#}R|xYM__RojCD5LrPJ>*cC-A9=`3!w9vj>(k|9L>M7qbWT z*=+%zLrwB+QU5e7KhTijYoD>tx5d9Y)TVyAbTM^1@+#~|1j?v?U*@47*=@Ry5CI>B zhv`FHfd*We9uW=IhG%%wmgnb|JC^luz|}!7T9{_{0gMsoc->_JWwB5Q2X<0djMW#m zSWEGXtw*!l*hL~7ySube+Y0OzT&bitsp(Og2W1=~f5PqJKzfH$5IP(NKtOKceD%Uc zM{KQ7_JBLE8B*_uWVdO}Q9DCPj#AV00#~tCK-@yLNAIb;=NzK-47B(3e;Zj}i`G7^ zg!so&S47NOyIT8byzO?mj1s8bx~^|Optsrz9R`x%YG>Q5B_D>JYvF9Io%+c}f)mG- z(6$gMNnl(r(mX5_A`b9?wx6Xs+r@0^GtP3+y!6x#@X5BUr-eQiFQM(N5it3kWfR}> zR2Sl>cH(D28wAJN&ue^G!QeW5?odbGrK&rxTurWd(0PTwl;*HX7_rQuBIatb=AzTl zmhbkcrx=TGBQQJU?7k9P;c|2S%dA#RFdUqjg37qnUtcCRrAz2*^Dfv>uzj4iC2r20 z+eFOTT=4%uC9Dp7EO+$psScwTb&fU2naTh-{zNQ;S;UB);oR0F zXl1_G#`6WwlP?&oPGLlv@&#X%pDq%?VC6G|C2jj`ZlKe6cAdw=HP005i(`!SVcM{9 z=9$?$Y;`IwDlYW(#fw>yDECL^G*zepvmwBKhVDdnei$71Ig0=5vPbcsgPV5VjkzV-Qu#!|3)|FY+yA$|r5U!^(Wz`%@7( zVJY*j;>^9_vNz;hxz~f0$AuJnFYdq^|0q#yv+?us_~>SH6T_wJYmW9%9!6Y$Q?Z2Y zkr7*U^5oWZ{6O4iwZ;!UyAG%P|fw*NGtF!cE<-JpfXvu-2S1Q2;)VV=b-YjL_PYxTW zI+eel*-r;>VFjUre+@AVkiFzne~hz$W^HN@+&dYX0UTjAo#^XXooSkc?#I(xEqmz< zh5m*JS)a#REqO?jA~ey766(Yd+E|9*7&-?$oqm?`USgqkR-pY#CG-c(df64R%}1H@ z1Ik1`A+87v+i`CZ$P=u!L_;T`n{oC(Z1u`b z-Q}6n<%k+?*6wPt!tbzEv~8FA#|wl?_C=_e_A0>_UAzx*Wna9)s+D|H*Xrt09qqD1 zP+d&x%iI8su(z!8Mwk-6AM`?p_j^aP!!g*Aj~(iJ7k<{z&(H$Ymg8kDNEv;-%~-RS zhh0Q%6*GyR;VmLS?}Wl4=!FkIb`AP@+##dC1ikGJ@n;_-X^02K5R<8UD249PPgp^s zhp+z*TZjijujt6c5mbEQihYtSKe=Cgf)7^2f#}tj8AN%=KRc;2i0Y>NEH<69er~aB z$x9w5cOM1erg7X6Ai#YecR*E#wK7pUm@iLv&s5bc$qy*IkH7k`L- z@uyguCDAIaXj{{hi4-VuPqW`*Qn$S%v@J?7%VqDpE~uJtTT&jFENqkY1BA+@V3N%* zH0xMMYPP*i?ia@Dy{z>9rH)wFB|ewJ*1wz8ZLP$d}QwAxmS znDuesgMT>7;TYW{gH6$lRWylcAP!h1@N7!cY+-|-OH>e6S~SZ)3KaIzNhZB1?v?|Y zrg%i^amHa;lPy`SiWxjSeI~FZLu+DK5vAC;pp~JzmQt9^J(U<6_d@R;d|v9NU)+IG z4|NQF{utg;s_Hs`Iys*^?2w3JaLBR{c4 z65E_C0@3uGI8HjYRimcwuNP|A7v{I}Wp2oO9KTD5Di9p!&c{A6`%}<7vHv&O@vWW| zw#H2|x{!I^30qH7k`sS6?@qYGfsR;ao!04HWCFe0AY_#Nx%+#SP)`9qCPQ|g5~v^O z=h1MiZ~MY>n~dvTMQtZ`G0<=dO3qlstG5_R%8$ibuhmRZBwTh%2OM;vj5|`Uguq)i zCh#f$YoOYg0piR#X+Sw&ONIJAy-^Ty`*~qsF|!;mFGg0;d1Hzp2rFCC2>3iRARY!E zj&1>phHi7(PP~{{Un}iJ9YV44qx^CZvSr#iy6>`LeJSC&B;YB*PdYf? z4FJX;)$A#qHJ-}9*CFv@eJ7Y~8qcKnV5iK#mbO?X7#O=N(N?!WJSg~WCAbFMGa!H0 z&jdnfZf)Rvthb6N-*GTmbGpNELmW(&oeqhw+7Ty1D3MAozdOb;Rn#`@WP^nB>Oi)+ zgv?Ru7}?U|^Nu~wd3-JWHCU_SBJki4rw}{%kQdd%z<(MCidvgud9<=;5$79@hg!;W zM7asQQnkFNShc0Fr&lsAoDv!=p}$&zsvdT*gcfE$so6Us*@&C;EDveX?d z5ID1QE@`nMb3l#r&=ST#TSwMh#?(}N=EZM$UQvRNvoM_x6YCI__oJSfyparQ z{$AtS((rZ*egi(#_F7HS2(y4{rO8D2@lJ=$%5e@pY^r0rz8Qr#E9gzv11e_M$imwO zmegzue3~)A{8q$b!bKwdyzUU_jPc6%md(s(AjY<>n=4{7rXt$d%jbH+1?%&Ym51TK zrYzrB3rm%{{I3OxZkh?!QZPH}wD1(?+_A?^m>6x2>eqs!<&(% z4)5fi%#y1czX$~a?*cIXB^sx6J%s$t@2*ILD&4Xe2Vzbfzx_s&CFCJhfK%%WIp1k^RYH-Gke<4mx$9 zn8QcQ;7$^w2a#v^n_PT@tud-bf4@7t%!oYXHo0&#auoPh%s806qp2u*6DO2U4qGSd z+^$~%{^oZeAO*~QoFeE;md!GrA^ULCm@d+-Ze>hlAp$jSe8%QJn-gQjI*UnZne7-O zkSvnuh{;1K|AMhB_k-Tab+&Bp?&~=3UtO2g;WEyD8fC^@CpONfyT$5@Ei$k18I=`6 z$lD1@pPWxsvzDawB_)I#zR>or5HELeS3GQ?Qsy{`@?eJ=kSM`!5!hg%h-EVmIHKbU zOrj63;$vKsNhjUm-5k-_wzmi!Z(dDqmJ%E*4gx?N~m6-_1io8F!B%}H~2{R z7*La*j$sCT0;02AD>xhxECi7O%e=XI%3SL5{M($dNsin_xW4=r4Ehv6WPj^o>eFOY zw@yGPg_vNE4yABWOddLOAag1?K+Zcxi-}ti6#UZ%lmZwMSlsd;_d`k;vW{?xcQQ%Z|rDFtS4!^$i7_G|bd0pM#8ugdTW!EliGhR7R-y#9%C>ncN# zr7Q`R&g&~@E-mu;*T%1}%foC>%oig!v3Wi(oPf_6D90V`zqC-m9Ajm4UMQ1w+)s{$ z68tH;P-yKmaK!dJs-?`i0T(+%T`sYl@1Y$Gu3xMsZ38wH4QGlCw8-*>yn=rhaefJv zI4taOFRtkoKrZY=I(Q7}to+nKp}k5PCB~`w0L_qrpYHdYan>Z*1JK`=oVLE5vJAu$_Je+YkW-7*|xo zNRSJx%&lRs0}1Oa3H~x;%0}kPYwe}=3rOBme8b4S!P#M%ZHH-vOW++~;C;b{%K33d z%LKa2-I;6A4gX`3j|g^%1^X+gCQesZ{~GUYSKFS+Yvrx zWT9s_%;EuN42-cf`ZGMP&<^#_(YdCsLP~`wR>VIXXm|g(r8SzyqzN($c zXu+n%L9W4k1inEW3xeb0D$8LZFZC13t9FcW7 zvN#aQpHHwsSZ_VR4q-$k&xFrWU>rS}Zv5;6YXA_JP<{1Sd@|*=lRakGtN?%J(?^-Q z6#iv=j5Zb7wCT_f2c#V;e66UPEP@~oHRco0kI*<@KfUG(htLVv)o&5h8@3TqdV`A@ z_5L7^;k+8?8tSvxgzs?%W)Nvq6SM=cd2ENxBXJba$Lk~05O4e>iyQh|+Wm53;=gU> z*p&|&r){Az_h%z++IadWz;$uA@J1fOn}@!1NiS>)>SayRFGw#;v-co-!C)y10Kd?2 z!ZKIUKx&KCOlq>n$?uQ_Ls-3{_VexcYh0y zH*B20nO4zcOX#5X{9l}6CmLSn(R_}hBSt@mM^9kAO~?a&3j)CG7fzgD4`PH*V}AlX ztcst@T_6c8l@roo7_h>AwO{wpUfX`PS=z6Dh_b&vHvM!lx>H-k74WY?uW%Mxw&59s zPD6}j36F$!f{Kp+X(Zc@i;-N9N-yi^WE*|(BG^V-R@8^!2V|@`VReej6CE;)%exL4 zHoJkm?vB`y_wkT5$4MNz(f?|jJBJBfr*m64rMG^HJ{UGeVVBRh;=ZboHM0*bu>}1T zXG4w8;ZJOIrsor;?2iXzcKz%JJYPB-GH9}W;hNTLtZKG8*}i%^A@H;-g+M^Q|BbWg zk#7&gN(x`vZku@V*VWcqzhB*bq66uaZX#`$sYB+wWU9)vTBd0-O_Awj`CXNK{#vHb z$oyKF?vd#{nbyd3j!c6xT`bcQSx>1<$I0{w`F@E^n`PQhzJEnN7u)U1{37}Mqf95u z{GIaoX8D{W)8jIKn|w~U;U&`=`+J!#mT9^CZlMhiyB?W-D)Z}Qx?bk5w%^P2bD6#_ z(}OZCv*9DtR9R1@eD=!cTA6-j!(BdqBvZFc-;wX@WopQDh7Er^Up~*Vzmw@w`Tlu( ze(d>|X;7x0%k)RPAM(3b7~mQ3?xx=_|% zZo^-u<79ra-JhN!t(U1P(;AtMlj%a4J}=W5GOd+qnoRR#nl95+nO4d4Bbk=TG)tyA zGWE*z8JU*I^mUouEYlR324(t=Oka^{sZ3omb;~qaru}5PSf)#5x2ISwpnm^2hw;?;yR7jO*ez*r7QJ#rdgkkCA^Z&O@E?pU55I>G<@aOj+G*p` zej=9C1wLpZZxoA=8419bc3D*+-bYfzXZmQD?hG^}JL&kG@0fiAZ|~hr2W$C<{yy`} zIBn%Xha=rl`s_2~p3UC&5BwH)=4RI`FJK#mT@p8?ywKL@6mea(^}mPCzJmJFJe8~;au6;(P-1aFt+sDj9+_V{=F5Cexj-ySNZ=NGTB zc7pHLegcPbGkBh>F%=Wv!k(?XUyp5jdp;Drh(%Ef|>kE0}?C4I&1uEMKUTZ|VFlAMbMW z8PC|_1JP&0W1m}=PU(^%+Sb-r!$Uv$XQtM)yq=1-E(TwgPvu8ffHMRCLba4SU^j3T zvEIpdDh0j_vwKZL*{shJ2S$MO{EgcGJz^v?fwwNmQu^t0c%PLgvQ@H5Gz8> zhv7@8h(0iuTuFG#Kf|TPTA!59;4fIB^+}~4i!d|cTMrVCv<7y1sG+}C(lwc;$K3m35ik9+CsXR?QNGM}tx zcyq%ugewk<2g6P#=R^usmkPhYd@bRZ zU+69Jluq{k*erJ-QfqQUmmT{9UkI3 zt~JmY&4kt$wSHdh8>5{n(IJ;gu5f9Jo==^B2r{|^IwYRnlz>$ty1#cR&Pgka zwFL1)0$$Q@5E7RzBw?QLq;ngNCHcm=X5?zEfuHdZ=x|c?fgKjXMjPje^oXyzHPoi| zjkbs1X*SNMu$+;=;$kSl%CAbe8-dpr=Ul7 zcvxsoKf{G|WTm&M%5!wY49xJR(E)EoXoV7bA;DoQ!xxHIW%es=W@K8emZY+k1B7P;mhRG<)OVz?D?RCdJ3p;=&MsjGv1FueBoFK z;6^f(c}WR8vgn8wTw<|uh%%BnW8OnT>Q=%-1eGX__uMJyFParmy34rYlpY=c_7CUs zE8P2vtDoS*pF=Ar7b{=PmbwjdAELj7ggRliY|-t)@9 zgh%HyB|{h+W{C=xrpp5VA9wE^7S$2A5atXQyuqVW6PbIu|r@p+#3{`YcS`q_JW zy=Uf}nK>2vY3J!{)iLEAa|Pv5YE_~tQu`T84*D!GR#utQ2T-E1s8jkdwTLQ$y^qx>dU2{Ns9NP+ zbG6R`lf1IhiVY}`fVcJatm?Jy{1%Q09`K8{c3iX`rWKiv^bVpse(FN!`y0KpG}aES zV}9uHtFg9|P+phlk>9bs5xQa#TC}zcZ(n_t`b5Q=ZbGk=v5;=OWtM8%P(ape`|$mR zUE{5rkJ=TKJsNFSPjdy@Tc+N^?DZg~}aG=b?u0TDVj%#Pad@Y~a2&hJd%uRBrzp}1h zc7SfYRMt7qaaHnPlr)emPNGhkCG*gT4{LnwDz3+Z{9@{z5o%o_#b)8Kp>Wh&c_3dCA7LQl1fub~MtAB}h=D~wXj zNP67vBRM3mC$|{PoU?zoI<2fVfOegiCG#;4LP%>^7WdI_1VVA9w_sBo;WnsxMf2)a z>?e({d>POXFp^jGiWXrgiQE%!*-M$Vf+bzkudEA_971-2U#W!dz2RFK^(f;_Rq5ld^Pa;{o z>@8FOZW{4tLeq28&gBo38tA^jwuRDIs@OeEq0BjnsUNC~xVrTY|PrsFX)E=L<2SIqMZ!x%H??KEW7;vV@Ufd)_JhKUg(FTv%ZOALTjBhi0cO zeQfs1Ng>=hN6W9kGp*s_2Tu7A8axZ`nd+o{)0EZ}Btrv?|{YICp6DMLY^T#xYOYJ{H!{7-|5Yh78-V){Ry8S8Fm=bM1&iRy+`o$6HXOBMf- z;cQzK?+$I6UhGwrnX_tUMo)CU3RS0|Rau0!Fylu7jYCI7MJL9gLs^IMH?Vr-0d<@o z(2`YdyxL#vTqSG`mn=GHL`{X=!i)(j-?3Hv#|$Nlx>L_LNwm*?0+p6ZxVP$9H&%MK znlZE=#gYaZVZP5MTl@jvX(r5(113vs`lWzF6Mp^UWuQE6L`xuBVF_dj7q;}`UF~nA zI@|ba>@ZZp-3RoElnZ`1iqH4-V$6SRw?%~QSE20%^M~2ARjVO^uI+^cDr64(r3j3* zevAkC9BaQ$x+AZ0GbpD_W0C5pWYP4dY;PcKLss$E*;4+F`|2)n;NNds%PJmH=!FO- zF_*sdXLk{c241W06ze`(E)279qr4@us}hc6NOHRIZzFSGHDhH@b+H%Sg>w!>KjJ+p zQlUJk+AyQ3HAkZPo;uNhYnWsDsOe~TfRg`iw$xL}>n`&-e+s`ul0}-9bfJe@?PVf4 zaH6zAamUN9@GD956$e1eSjud`On z_jzQ2)QPAl_asWkBfX`oFr&`5LI$y54}qFIz%^*hz5GwMJpX|d%rP}@h?30DgO}`9 zSPZbnltEqMSZ=+LXGuOjb@Cf z(G(o%%0he0q}h4N6>Xl!yDbS%aHQ6PVzQTARtVPK6 zV&T#Y51KEE{b{8l_<1h^_@?haES!e0DSFJlZy-$yk&i4B6W{C~RE0w-y9hHd<2iH- z1!kbTMHG}9=I28cIsb@zPKgjNbLCNaP3K**ct$;c=0PJ?@riQN(x+5~HKDc@-8@^P zFUkGs1)DO*_@UJ%YS+FH7Ti!&iQ3QTZr!>B%&WMKCUHa6bFCwuBL1Y!!<0=@RQu2hb4-x zK^I@wBB%+n07=efebSC&Q6%MMWUVL34WnD~>m|8?d>RAF9+jQslfA&1jIN-O`0Tai zm_nrlQixVpgw$$jira9GwEa6plL^#dj+w7m(MWQ**PmFc_HBYZWLwE>EQN@dr z+*P&glg}!;x1X)A158M_%z4!~gxuSDEPZT>$NRJ@7DfZw09d3)`KB*v)3c#QOC)#W zcS&y0ROHL5NSLXi8L>8l8IGzQ?IF9?f+-hvkoSBGe&8eJQrv>$bo=i1wBVJ?wiYZ| z2K?Hdf^+sZkZ4XlVTq?$57Gl9;l=}W3TkK-Ry}o(lY}-*P4Cku{PQV^=52L-ef162 zSQSVV>0ivowD*MXvNsgUa(*SnW=+DF8%d?cj}gL}RNZhWl2W%fgllN;+HctNvPOkv zXUZ(MFw56MeF$yz5Jv;wjoW;~6dF*(Yt{{^p&0THezXAy)as^oDqT9xzpv!iS!n> z^K1C>#K3Yz8(KpxUArB{gX+_L-dJ3b(w314@(Vn zTa@~CY$$wXO;bs(_k#xA%?cw%Yxm$?q?Y`154wXZ_mPO#Qswt=-YPF!Ety|QcZ+Z3 zJ3iB=p~lKvHJC2zD^KVNacr=aiH5$pQhn`j%jN_BST@tsviFzG z-sMd^utfd;x@xw2D6E_L0BH5hyyspMJRls^7Gd`3T-Q*I{AxKzSS=rweqgn%J&XDg zEZEajR5crh6fzS{!&4}s$~x<`f)9Up8tRMgkTj!r0hlXlXFqOu>hLR8tmr8k&vvf- z(+^4h64cRkBUXS2hdp$A_x!`IK=(w+M`mJmPR&0MzHan_oTE+9DT72oBhvV&3S`k5 zY2QAg)~apxf-0-olZGatTQZ4T2nwC{`nh8is$QjAe&z9TH`dBENVc|+cG>Z3y8DuR z_Q4n72~HS$YDLK`yrqu>Q);TOT;I+T874Cm%ICd&QHI!?0O3TGcGx2p;BRoT4|Xm=75csEgeKIau%?N|ZNBqsiIT4HQR^v-#2$(& zwnWj*8Tf}2&b$_utl~8?1*v=&=V}y!OrsqSpnqr}{1? zJ`{m=)N5XUDeFWX3Y52ul?AP}Ui7JpcQSqNuSge$kRr*N0`|N)_b{naJ}tSra~&8m zoU<_D7oJJyuB>6lnsm?i#T62)rd3DPbi&e_UwO1-PXzZ-k|c|!^6Hr_9N3kQYWQrd zz=b-dRiq?$5PjGq6M3d@an$S7WrVh84a+O4IbKlRLxr(e(A_L4-=QN4npFF&x}gx+ zGgf$8#+N=d4Pm4^?rlO4p1-Obwd3xy7QjX)LD_7oW^GO=^kU#JOFch*)Y8i?p~dnF zzfqg@X(@~b%G>6OHtdvT=`D40!xJ8oTrInPk=-1iTgQs{6fvV!jb}WpxHMrM>QxPI zY=q471H0C=nvU7$8`U?=A^1C6_yXRdsxWv$@q!%t8-P6{$`rZ<(w3a)5T@doo)Cvw0!w*Ivc}=pLB!&8In^tKhh~ z##1EZb6+<;(X3$YU$XB4EaCSL@DJZ7pu^I4%=oRh($f>Tip(zbe%pYqhNEusWzI*pVp1v!?cqO&>n{9j>4 zCjM$tdGzi+iw}X{-%JrzoVi?I&w@Za@Q{99XR+gb3&pw0of`2Rjrb@fl3GepXO_5s zgw3xng}kztxHPA!P%`HRSThd!M?U9t*5#A73Ym`ODh9o|SC8n}mlMpUe;-cg`h57^E!DRr+g`D^{WREK zmTWsMs)L<@=$t-3;M3t7qqYdf?pi(n&bhOi-aGqp%A;cE3GAh^S=MIw>1!RCPCZ)e>`xbscwqRI z>@EwYKdDJjEs6Mh#wl)DYbY}j%v(c7+F)d&DzUq$q7%nqtdU4n?UlzV(N6N+ zs%ATaw)_Zi(`-SnZhmGQ9Ip*Vo1tmzNXh3Igit=ijI zS!AO8%UokUUlGq9*4w?bs(r6Nsr6K^F!6vt!zz_XZBJ*SAz*HrS62GS`M&%H({3+S z{T1SRUJsekAQ_@VWrr+2mFwLSWAKDY&!~|7I%xt#bRQP}orO zFowENk21C@N$;x}YoZY^XNfd1(*!m(Y1H18TCwuJSS@naOE+}Bno(s}Fn(h3cuZkW zh$c3=mk|Ma(9uMC;!RCuc|Ci@n!_%<%v=Q&u2Opk+;2(Mbe(s4_bV!j{=S_ZD`B1F>gtmZp zY&;<S|2{il=JbULmHgWsNQ&CbtzSHGI|u4JzEZ+1Mq@L8huhN%C8z_}fq4*T?*x zy9rF?SgYuY6!ddVJe!TtHpr~pH)=;V-IE-=p?qeJNgpPS%G%~CJ;|bV)Fv-FKhBt} ztZYH%ibUo#ugvO7={;3xUSVma;SIK5bTExyb}yYDPuEvxyrG?RV&)Wy6I<1k-htCc zhEM6`x^5CzPJ3gKAW}TaBeG&PpL>jzeG7GaiYtBDyMX^Ee|y;#22ZW7Ad35{l9uF$ z5{;rWLSjb0(RiDZ`@BNtvh*H#B-a#R>3ze?w1U(HtV>8k`Oy$TgM*oF|Eq3%yMS4) z>bQpgq99d@s;DQLG5<^f>nf_b!iOe`ru1yVn5s>hTcC(#ucUHMs!mICsdQETCd$_$ z#BP92QlOXnP&G=dI;QeBP9KE|v(zZh)v__$K&7X8T6l-%;6J~Cb8F1Qt%_7Ns&?uL zLI-WMe^zqf)Ny~-XiD!R$k8Tj(We4A%TTD7If! zb=j&6_5H-KP!&x3=-p!C^qmycO=UB_*?CHK>v`oAs7@5q{GZyLnNY&) z+EheCpEEX6RTtJbp{p6_>Txe)=bG%1%6rg-N{z{WNzNQohY0gorVo(-t747!gTfj;Sb79R0Qd3Hfm=yC`P#@tUyr-3i@T2nAhVhcrp#c=|vsDo@iQWN zUSdT0kSfHOX+EgLj`(3Lmh35%>?swM6l#q%ZkBN>cU4VcrEyO>Xdx;qtT5JyMXICo z{vel?IWg^*A)DZlA zK6n-VmDls%zT4-#=&qA6iAt1N(sZ5Fv1Yh| z>O}Q@)rrCybGwrlURxERm$L~r*qMqSM+8<^Aw@drQ6oZdc)&htj8W==W)GE zvIi)O4JC*4`Rle#WPaXMugVI#xzV5^8tHMaQx#>EdpkeMYEAR15|(#madYQKvmaZ% zP(7ma6^Hb_;aBjrmjy)=Eg8HAsfyBXzVpb|OOz2Ao1iFU4jP(A3-97~ykbwrH9q_r zz8tfTiZwL-;yYMp7#LU;(MJ#`8e3f{ywwENnp==k1V|1;yRmS=(f#! zi&RZnIge-a4TKlQX5J<=j~QC{x`{@yRCfZP^Zd%@jV3);w7Tm|g=E5Bm1W5cH1thKW7Q2z5}l7__l5qh(YWoQ^gAD)?nZO+_PG}o&-k5s z_M*yrbfn+d^*0uyHNy7b}uP-LAU-XE@S>`;;VdXklm41 zJk!e&3wvwK2QAE}n=0=}{0nc14NFu_`DhL{o?nr^p~L&%Q`@*9`HUXXzHP?8FUzG( zxfHZy0o!ptLFTjs;T_|(JuJ+oR~^@9^$ihyefkp`t14UKx0592ce1DytJ@;257}K& zG^swp%JFYer8`kH2dPpd3)=9g^pxV9h2r`&n2z2r4`-uv?J)4NsSc?Pj}+MggzIWTclV+ zBZ$Udq|(z~6BcC@$ziO3w3T!@fIgKo%ahikzTx3r!}w%fu?0#=Xe4S*vYX5Ek+qfN z4Ay7q@L+qdWokW5yx!bQJ==7%cjqPfBOJ21SuHtR1(l~v*u+g=^Dq&W+g+3FMzee* z*AB*du*~sh{durReX@FnKq$ zdPWxsK?_in)ykR>NzNhG-cuzxyZCP8p`t6UI-{MpM{UU1qx_}~_nou-HZ@rCRcOZ4 zR~j(c??SDzw%ME-dJmlXfQ|H)s$+K7Ft(%A&_pr6wn3+9=7I`PJXO|8B{`O~Xxd$n zSB7RQ**%w%sJta9y=7R0iF+w2Xm&V=W(<}pV~o&asw4-C3TyQ+g;b3-F1*{sijIx= zsGaD5jVYC5KE1C{^Un=ToI?yG`K$C<=kn2&qf|XY>K@(av z$Jy^a<4!Q1(@rD)%uf^MUDens{Z9;Idev7&$d2|lJ(8%?UIi*%>(P#-H^TdIYG`v` z*-CO9U?&KQ``TXgEKSI~J(wH@ z`sh3{oeHB#5goX)JT4NZQ-Q+tLuI@-iu6D@qGXS)H5qzZ`l1fzD^|5sO%>HO?BjpF zs9wHepD1setL|fvxxnUQRTwjJjpi$4L3DnM%kE4qPvc$3<`T4@g7@F#pzvm(A+_f) zD-oebY3K0=b1YS_t=Q2SG%xs@^a$E+0z2hq$xmv{w4>h&TaI4wm$R~)z8>r4u<{wM)}m-xoCE;hL``k zg!bgOTbZyniXq2!sKK1s)Ci^8>2KK^zeV(6D3#)!m!fL+Xsh}S%UK8u(&_{|)lA>T zq5JSGDX~Mf%t0XAydg|Kga%wqpIn8`YxP!`cbOTMEB_Q}Tht4sg)(ZPWp;u5Bdxu( zA4U5qt@W}{H1+8#v~T&h`XRY575UmKzMOs3q5$U_Nv;c3^K0c_=Bii!=%tbz`hWue zaw-g+ie*;yrtx5bztN*q$3j)5h|O5CyM^7wN~63IQH@ug80yogZSKkRs`2~>fg0A= z;(cq~CvZ%$Vr5NF`78F+vwLPb;`hGII?IZ6?@XD&zF%Nfp@!+0cXOipo`J%-TsMIc z!hHZ9f;?BCgFtJ+K2xBrz#74Rg1`-e`A$LJD=Gg1RfFihrk0m3gPS(m?|({V2nViz|OjR6$Jmk z3EZM9Z^8bEt{enj7wm88%2OAgAU_xAA()2<@)%uybmbz*K7wp1utYF-667<293seb z1sVtx3zP}mE|3%Wn=V{kcmnfFF zL-nEXe`sNMVau+YUtN>G?YHM<$C8KJZtwjfyVn%oC0YAc%&~srzha%NI&tZaJ5NOh z?cOZPy&_GBP6!%3ZGGLC@3IGd{(P}wdCM`o7sQz_t<{nXjN{6rP&P6Q;(gl?cIKT#-dhcE)nWhs}tQn?Yg}%!}NEHVRi?v_S=>j zF(D%SSx#d>@i(R+$!5iPm8`{Y0h^;t4<_LTxq`AEB;uwuM@Q|BUc$suF5Ojd~xlFDe?Wnu2}vk`C@(l z5t|cRJWl?@b!OX;D%X8q^{&nC68mJ`bkR0v_pztq@>+S%@37!e{?0WizQy0?%sw8@v>t`-Cftf8M_bOO8jzP(*p7C;EjbxBGz~mt)4J3S~jJ_ zwv^iVU7?BYmA^Q*O?fcV)qKR8B70DT&)LtZ#?W z8%`HU6eoP0C$+eEt+w>ng9S6fo7+cpJjSiNJVS2nQP*?Lo?wQ(Vk`Li)!z@TpZJ<&C@n}^YS`ZwOq1x z;@05K#f#&YJ~@A3YvG0+X5IVs%V^)~P@PTs{dMMgYRQ?ke^w|`c3pn9#cahL)wx^2 z8+Puw)%NW?*CSbF8@67I`*u>hCK=1;nxviiJj0}8w^-@cdkbFg%6Q=wcKrN+Z)%OU zovmD}a-UV&$@B7%?5;oAwCc%C+%ZkMpNsFl?bhDWD+k8Ny8dcd)n#dP_@*Cjj#YUV zX3hy6SN84r+0vuG{;4-zzn603`Q=gZ9Zt0N9GVt%%Eo`k(2XXuMsg!MnOcQ@J$SU_ z@*l@m9+>`JL?2FZZ{DtyeFo;*PNSzj_~NN)S#xEF$A05A{_-D-r(Pahy`tHw zi|bz4Ry@AvWHY?*lb%%zq~(FVDpPZgY3D~zJkwQg@YHz2laKego0xs+wk~zb)SLlx z;uqXmJF-dWsy&X)LN;~IY34rRryFw~_{?6k_i4M)j#pi_w=@c=5}S9fs^7usb$ns; z(=Uo$ZewODdmij&c>Pt|r59fI+nAN+Z@*0B|DyZ6KmT;OeznNaVfwBUKbAlH+Aq>) zV=Mg1`#m!$XX|vaQ zM%I@y`Suy3wyCxqFwgk>^@8~=D{B?7An{e5*seSL2cMMs0HfN2Q|CpKW zuNo*0e7)vC{_J5|mj^Q+yzY{FEza98`eJd+5r4DJj}6L9?Hygc%iHZMl6enb*Ji|# z*xq{FvXJsWT-vU#xj8L7$j3ReXEn*OuMG~-d*r>iuQi2leSPP}0k}L&S`t4hBE=7`eMm z+v?=Ht(9@+#rK!{9=NMKG3$p5j&pvttj`xcF1IiKeq7?A+-_rH^}gC1FZur5BiH5q zu5F$DxOYy!1sz(1tz5Bo(!%T&)yp@`9u)O;o?}gh&D}32eg3fZyf*Retnvo5x@>;$ z__~`nzF4tuOy>7FFGfepyLYNDR<8WQuc%{X^BrfyZ2N}(5m2_+((XXgSm*$rBsLW*OCwKS6RG55X>~*WHyL9)RN51zrZ(45}oOrDy`1EV9=U&Hm?Vs|v zi)(OflWu1{SI_8r<@oU21ylTo{Sgv1Z_v|qQRn@7X~wTr=Dk_J`*>lo%yiCYiqi=# zKF#sZ{pGV!+~M(t-vo5ns`xp|gljdwM{kYSnENlnjohDa?Gl+fxW{Kz^8TLLpKG2x zm~{D?Yxl&ljyJL*6pv2-_%zoe**@c3&fI1{tPZK^5Ps!x#egr%A~*e*u(7DA(a|@X z#pAA@YB9I(OrO;`4!*@rCSQ7ca&^~MrPtD~oy`k3o^f^3WDoDjcViun9KGV?K5cc4 zas2?4)`UF^NbmskJg8DA^S zJQeh!dF_`w>aJ`V<>70wJYb)TOKA8)jZ(U2HfKQtu31bm=-SYo^b5_rYRlOtDSJd3>lo)MZ zw6jgC)%LgbE(FJIGo5$g)UD+`rr!R{y?;~-nQQl74?Sx2?Jv12TJF1-ZzR8AS^cez zZ)Tg4x6Ae{k207YQ}yD^Un%Q{guM=!z0l(AH^p5w?$11<{hKT5`>xoWoZ{m6w&r=n z^)?%7$}86e-tM%b<<#VB#^JM$Ia*Ina{VpVLR?XD{dh~OC+q9EGoMMEceQvZNvK^j zD{j^7Yv)>=U%GbvMANdoer@;5wvHchc*e3>m6u(o@9697IAd(gXJG~VDko{C~aD|s&cx2x(hZjE| z6ZGxd@~2LZ70-(fsumW%iVIaN+HoTMY5LAz%ij1!_NttjbF+(jMyn|~ca~3Dx@c^& zU+Urp}{Rp1ZSd938iM^7aW{ zj_ZRxEasOUT6ti_H;Yvrhp1CjGA8e^>H!)xO9A+}y+#WXQpU0M9?=p}9sI$C_$yP3HUCI4*r9{k&+&%=_nN zx!1;=>o&svP;f@}-Q64f23Zv+gx(04d#`PbvB6K@%6>^Ie`}MQ5ZA4lVROH)ca#_S z#+<*AIOeAl($3}8hsJwo#&nt^x_D;)-JMgjr+i!PTR+ytr}+T)OJ{c;*l_N?e1A^N z>z~@hY5Y^%4oCm7^5W`G`h|7MDEcWiI_RaQWh=$#w&VYr)=pmY$?VW=2B$qd&fM7< zG{x_tL(Vo+k)?S1?Jh1~E#J9jZ_|La$>-*~4o;cBSvp`?myV(u3%SM55vGyX2Y>!o zpBXOu5BBtRxb2*`cG!$_BleuM?{{*a`P%Fgoo~IoaQr}VYti}Rn<~}~S-7O**9U`t zJALD7iPP2QmwFdF>rWoI^jMbND@|~ppKt9MySmzC{|oQ>4ws&;@-4Hl?*8TB-f!-i zPJ6Rd($jR=%E-_Ed|kO}_qnk#8;UM$*w==;xnBFK z-J!K#1;%JI?d_MFueteI>8(BvYfHO6ou=|sH1Cw}uzr|y+M%OY?57uN)(p7Wx8I7D z{wXc)b$N1E5_UE4&!tzcc0E5M>Rd{;``Ngk&Du5TV*U2$#l<-*y4SuO{jA4}9@FiA zup6-9bG@@?Mn%o5+On%MecYD=+a;e#yO{S`)E75OhWt9O(~^)tlTpW}9Xx*QUUQR~ z_DxG}`+hy^Y4O|8O(!|YhNwG-d+vXE@!)_a32mlz*AxGeb^i43KC7mmEpTrgT6))` zUBto7PE}j|d#;i??VEniulne^Z5a^}>C&LO)45kP6`yW@wP|MdrdNRziUK<1e_E^e z$CP5xtJ{^A6KZ~2vi8P=A8dLW4qkK5pvXQlXwUdN8RzcaTs-=oyx1i*GA%75MIQ5^ z=L7%SUs`0Mg8fKMj7&&YWGc9=gI>?6xbN|jlZUuE8Ao*gk^7`m>ZlL-7YY9w%X-2; z`U?u@INCH28o=9yj^XWmL3(=c8^+PcDmmW~9Q$gA=P-_=SDapf9M_B(%F%Z?xB$4L zeGP$re0ZZE(`GC`KmPNd-XqzW9WFGO<604ia2%a>@(HB9Q=lEk(Ww+4dyZ>E?9Xv+ zi4Gh`TX}*IFP-}d9m{d;C_P>r*Pg-+;y5#shjUy9vWGc6LH70LINF5nhxBy@{lPBa zNU$py4w{qu5V}hh;YV>?4~h@zqs@7q3c8P#GcZamnpAID7qt=u{86VL*jNbJUO z5uhbF3+x7F5v@3m4kuU)=D2JM7v({(GDAG+0#=k4;+Y3}q1@+F{GbvXg8a~Fk06u_ zZDR?A`vsIAq?b;N2Y_@oBVZ`U(L<+EkUynxedxt4i29@>G9yvG8uE|wTtq~9(l%co zlnb3=3_*F*mncGDPhaW^LpYy<-ms?=FT+Q39Bly&_2;-RD1MM`?hJ)HI@RS5cPmH+ z>FupI;#)~F@=51jf?@s*g^zk!4SGUeL-~ULwO}{6Uq}8>&fk(d^bmTN;hoNLbe?By zEXUD1elOJL4-~F1$NdOexNzJCa+kt!8$p{$j@tyfxpCZP3LoW4CthuAIF2>}jGWAI z^j$NHB#zq#`XC?M!9KA68MH@wegXS~bQQgY1;^3B?BO#wjxMihzKbfPw9w4Gz>4OjbA=6>o!3c*oFnFSU6c7bVa>CV|9u&3`Y4}m>x z#~1>8`tp+x@=X^m1tC8ASYR;R(^ZVYa9>Jm{oo21 z4u54t_@l3qhQr@ABHYs%p|LP82gA^=Z-8lO9Cs6pguh!v*xx3?-yI_2yGw+BI=vK$ zdi|4#c5n}jM*jZ-W8uGo2>)6l{NE?SAAQz30rqrvRs!rF5@G*{2>Zui4Dw$ECL_Kl zU<%wnCBi+u1Wtkb=S0}QAj02E&<3m~8TqdP)8X$G5&m8i;jfkmcW=NMFnP`21*5@cBqJU=Eg20OlH3>i zmSm7V-{y^eK&R-U!Iq#8*b0mRB_t#L^cpw@Yz_J%9c{o^ur0|*2OUX^1?gk7z6iG+ z$zXeukuEcm!44!N+>RuJ^d&ieq>DbOIvMOjGQ#OfGDy3H{1FZv1ey$XBN_GDon){F z7yy5?{Wc!#Nixz&+r{HS3vdYPh4w=vfL0_U-MvW$`;d%ytVsrKNJcvQk_`4E8S&bZ z4BC+lJ!((#6!cYaDB^Vhr+@>%VMy0Na4P6XoXT{0JKO(+Q}UH zY$%yS&kX~EQ4WD%3P_&|4MsW8*MCw#+OrYd9XgF;CPZzZWBnRagt>Cn@BP^iDdYTAQ_AV!(bi-DnQyq z76$VelEGM#Q9f}bgY<#BaMXJ|m<}e8jC|5pcGAJABqN`RB!fvL+oEhp22)5zzEepC zr;&_yAtxD314kp>3NQmq2gicb!5Lr%$>_)Qt=@6S?+kDzIFn@5>nxJNERvD_*(8J6 zV6ZdBJun4aM>58PZ%IzTxJTj3G0stXV84yh18%2qkZ;;-G!xtn`eK~l19~FdvtT56 z4jclW2NOWLb2k{gK;eTIDO|9W!UcaL{}}&okbm$d$&S#=B!jm}#(d!p$>3ekAMyVI zP6q!Z8R6U`8T<k*m56w*5mB$@pl46an=pa(1@pkMpb8uU zehLPI`CvG>2pkPA1{09qC7@?-%#T1X@H5aK{2cTFmr=Oja&R2@1%(fO2?l^)Q9R%Z za2QBm5Dx@bg2O@DY83>21A2q2DLvpCFa%r+js(|%q2PKj4E&DL3w{s!fj@v_z#qX8 z;0DSExDgx*ZURSvbd5|T^0x(y1-F7Tz@I3;;5INF`QA?M;QnVY3j76}4DJA9z@6kD z+y%}AcT+gv9xxuHgTM*kui#X0AD9U42a~`9U@}PCf}%nC>S79b7)%8VKsi_l_Qrgn z2uy=q3@X4Qluqy{7zZ8$GeO$ZISo7kW`HNbDc~t^I(VAmK|arrfAB211J8jL(4X|( zKx?oJ3`03wrTD;W;BfFdr5`K@hk-XJf8b3p1iVG*2X9k&2=_U~5BUW+1oKf57EnGg z*8}}QeQ*f$u9(cxzMGH?eb5vf3pN9X!kqyaI27YN7z8#4!%!|Qz+sS$z)^75io!vE zl7OCrFusFcU~94m+fck;eXZUBM9092^Ns!BDUpr5EfDhJ!soKajq76#(`Gy}@2Yq{D*zftJK*jPKwe^yl8- zSh(v0_JnLr=|lP15V79rOZ3F}4o1SAEf@vbfzv^Ia56}jra=nck!K43iP3r2%} zM5M!?{DA>PoI0Np6QT`zZQu;7n4<};16hw?fT~PY59vMOTL^vZU-(V=2 z!+jW;qy2=FjB#fag$s@*|8O^k@;L=%P5A@IQTpM2JUA6HT@W`N?j}+=(A$&1v1sQ} z6b={-27^<;6mTl&2g)hmU>Z0IR8TlzI_M3~rTl~QK!4J|lx}b-=-CJ3Sre2YcmebW zFM>W`DHs6$295?Vf#bl-;27|CFbwIw0uF^-1`b2|uM#0&0|UY9;P9Swmlp{61{ehS zCK2*2FciEE`hs`B5ZK=(LjHr|MLd5J(J$|TBVhg)II<6Y%@_W$4$xA1Am0bAL8GQ< zQ(z}>FlY`2pnki7kyvkbCu0571Iz$rBqN-j;0(yUNQOTPFbcE;6`V!ql3 zoDA6-jE8IkWSGU9zgD6&~GSw+Mk${An)I0YO+`38rAF5ob* zI~WKK0*8bBz#z~93sbDJPY;ZdG9XL4-;~}|2f2tz?;1kdu zd`jVf&p-$8IXD1(0S*LTf{tJ{=mge)&fqK13-cAduBazaAM~08eNQsj4D_LO92i6E zIFe!BieykiGUms|B!jI%Ke+1(#)0ObKjyzua5C5p41jreFdpndGUlzlNCquPMmUxv zgI3@$v^!gHDriSC;&mVy8~_G_E?^?)3J!-mcQ6SYOfs!&NCrK@AkYU)27O6}zW|cK zAz%otGr&|@XOIkcqeuovgCoH)pd1`aGW<;>8Jq-$!aM>@10%sOa0;jZr;-eJ$s~g* z;3%vYvcT!!Y;bfp=p8TvoJTU!F`r~mNixbQhh#99WQ4nbWN;xk2K*Gv1l1(NT|UX6 z1{@3XMc@o@F*wd0dJUWjE+rZ1T1GOs9E=CQp!CB3mlO}?wO^5ca0TdTkM#l=39biy z!F^yXxSwR?>j25%L2wAnPk;&FNiY~Z2d04M!Eo>%m=69$=|wp_rTD;SB*XkA$zV0f z2)Bl0@D=Eaa-s*Q)}RP(4tRIYt@ZXjQcP2!P7p7o0q_-V72y72p48(kfi1kzlurJsV zbVj;6f!$%>nF#YPpbOZQ>@m+U2m4XKBGP<@{G&d5f;~|$wv;Y}V-MPc{V5-y1DV7B z05S&$k~!!IdP5&Lfo{l$Gw2SwP`qPMhLldk=T7lK5BY$$q^Cd!Pyr4A)4_q@bkGsZ z0G+^0N;fzI>;ujOZNORJATSHG1ZRU*U^bWx&Y^fP&d;TEgYzie;CxCqsHFJ89Eu;z zrTD=G6hF9-;s^66eo#g6gP&6Tpqk?Q6mPT>w5@2&Z<>H9erOk95bB{F7=n3rdvIhX>JJP>yO4rmG>(G77#Dkio^aO( zv_pFd1?|Bwk_Yh5H0{ArVE+NUj&K0!`#p98`93lL97nPf=0)TVoIvK_C!ixZk?co8 zKT&ui`DdQ}!6*t3j3)PB3^;Hk|4h>nj02s($)GbB4@QpUpJ_&cQz-x7R0>~?c0u8T z($9;mi3x9|g{&@WEN28`|L#&<6jO5}~&~ zBTmOUnCu}h1H*lwzeq;Cm4Jg_evt_IH_*?Mtv?g=(>o!D;*KNrj?%RXGQRwGjDA)lU3BAz~w6#RP zCL+GBYF1M3Pa&{4LXBMz<9*RVU8bwaYqDBN4wVp zN1@&5gZ)vDVj{}32@!3*DG~W<20BnXCc@s32>a$l*tY;<(9evBD4&*~59C%v$PzL~ zInfFF7_`^cWDdCv7>NGX7EFhG6C#x_7!J7|5psJnhkG+3{C6O8$Q_B0J5he%zB3W- zyHLI$ONo$skU8ATh;ZMN%pqG6A@`wlp?s`~D4%|mKFGF2$o(l^$PPrvjubCsCn985 z3Ky~)5%ORPm+F}qz^~E#kk4tL7bpkAyf8jd{=pow2lK#0FdrNVE&=;uJX;F7fS-Yb z!Oy`sa4i@Nt|Rvt2figD-|LAOPrf6LML!@S9X}AEcYY)ePq-R>~jx(Jz#5a0eIy``wg&*zW;-FwPwSV_<)f>`|TtWRLPKB>O0iJ4VdlxZ{*x z#D5C3#rSoa2)%QTh;i*a5&r3_Q(MGyfzks#bp;#}jrA_*hjrQ=&uq$Ybe(FMm-g5;*K{wD3@q2*7kxnl#8s!*4guh54>M4o{eG^UY5MKfj zr!kP*gEpWP9D;Z_=x%HDBN5ma)U)Mvu|5&9 z80<~`5Of8b(%cMe2D)LKXb!rAEl5U~MkIqRZF$|?%9hv75?fyP8{6`_zcn}r_0)!l z@Y<3+{F#tFXi75lT|1J&_Mi>)cxTWP^9D~a67&LxfZkvN=mUm>zF<1&2l|5kU@RB_ z27^Pu6mTdwH4^;-oD2q%jCs>=k`wqj&{Wi0Fv(yD$+1}Pk_?U{8SN&NWH8K@_LcDO zMrMMeNT%mNB!go}MmS?h2FH<%aK@7iP9PcKd_pof5mX?YNni{ZK{CRLBpHk%8SN;V zi11>_9E>Fy;l+^*P9_=Q#ghysfXN7N3K8Kp)NN zTQC7!4-Nsp1Jl9p!Eo>gFc$m~^c_goLZdFgjbJdi2^@y>Z3g|pEhHnITS*3gA{pu0 zMl!gaWTgLRlEGg{Mm~0s4DJL&5za1f9JrfggtLcakgmTEML55b4DKTt;p`_FJU}wS zIY=^i2n<6whe02(fMkSINHSPNGU}_Ci13b(Ie3(0gm;W&@Hoi`?*z%bHsCv%)#qq4wi$%5zh@G!o5jEIJb!Kcbf=zcfhe|XLpHk{|6D}@h1`P?-9{{ z|02SD1vnD!v_yn^p9puAM1=c*2zL*`(Fpeu5$+!o;l7FpcTb3L_Y@35J9-9=LO9RC zVet2Y=*w|0$sGQxiSS=Tg#TAW_0pkb8#8j{;m;^Qh z<3Iy21~dc}U~@1TYyl>MM&M+yB{&sq1;&FCa0+M)P6JzmnP3}mCgwYB!D!F~Oao0p zIqch!J=mV?K{K)kJAjd3M=%BK1jd4$$sGCaN-}6pGRjFx?!ay&V_wjm?71w3j4-v_EIWnY2WD?C?EmV|@Bd0o<@bAK_vQC{ z+1c^?ys`%i`?n&5{aX`-eOuYWzOC-UzAX=a-P@&gnd;Lh5c07!hWjm z!hR|bem_-ggs^{VqOfnOyRdI6LfAJok>4+soGt8+iV*fkO%(P;W%K)@(j$cZPZRll zPcypn`#{YZZ+Khob1 zAL(!Ff9wyscD?5#{T=>~>D2i<^^x)Y_8;TZxhwxje--~RojQMyJ~F_;LP> z0zWQ)CLbA}x!~{r`ls{P<0Ji9d}RLYJ~Dr9|IwfB&;KLS8Tyg_CViy8DIe)i@gK`Y z=Wfn_^r!n%|3`m1cgy~xKi%J&|L9NWZu3X_+x{QxLHD=sBmEuyNPp))GJh-mKQ6v2 zLVUXM;=lfhxqtd?Z06a>JfM+zz3|8V?T<_v=i%SNH~SZ}&W+5lL~RKF?|(Y?GI`bC7@oCh#Ys&HUK>wyUvMVqh&Q;-GJpRqazkqhbxh(wK zi+_pjhjX{^Z&{b&4Qn#pzow>d2@Rxgs`(Ozm8xp7P1*NwLWa zsXTUCdV(D0AO7>TLogGhY4IuPi80csSZQ2JVq!{0EPl_B_Oq4_mZr$1z5XZvh;T^q z^vJ}77-|jCe2Q$Sc}O!7l4DXbT%~T_Bi*I3nX%F7ir6%3sdw1OKpSr<(nh;a|K~qn zJNtLpOiocqBZcI}$y1ULraZde^n@gNG>bc3E~jkAB*-b%ipa^*wAe^_bUZ?#av7eG zmX?q_S?Us-9Fq{o`3|(TecwT1snAl$c)&l6U8FtX!>*A{Y-TD2 zlaP`u*bRJVCyz{?97`cJG838um7a^Vd(X7)(u6c=B-K!Cv?7IyyZ=C>ComyO9x0z8 zjYjPX`IAzC!G|Tisrw(=M}NK_Q0t}Uk(d%01Kq?2M=5l0aQdKqTzYb}0(l{a9}3^j z8MPiMpDK-yBz4DUi?#0L^rWa*Ip=F{E4ZNW(_$6x`?p8K^Nvg=yQIjevC`;xDkk&- zi=-5^!i31E#8?X|m6SL%Nqf|DXtX>b6)ge!71fBAkRpwVjZK9m>KmFjGLcoe0)3S= zF?$DQoR%IP4@D3qkDZw=}~El1O+q|)aT^%#7KFgMi1u>|C-$YA^ZXFd-%6N9h~@VvL4h> zSLhnLYDh_+950opq$K?_e0vAfadHZU3;hubZI3o6hw5M%k71pTVz6h;&;m6nkJYsu zq20r_zs`1YtOAvjl-j85VC|r@PDzbTZtx0=0Xho=8q+w;clqa=V1_&akwSMy$4V0; z(-cBK_;+>JpW0M9RKYv_)Ss%HbvP#7>z*fYgNuc*crDVE%APiq>-mJu=`~XX_(+J#9*;GY* zKhaGM5V8;|#$R4(zO#&vl{Z!g=%3C^<;J1`K_kafA{7(?OK^H>s%~cG{BBfBi+QrcjHZ78I63sxNtlbUZbwMshU6eh>WN?Aii$|KQ* zSSy4@c=FWblnmq_qZrj#LxrJ%Q8F?T5@Vtx3vh*8AT#;t`SUOoXy$X zLWlUcvuZ^HiKI%zFbl`YG#LFeXM%r+#ufigX`>xR$3g+1Wejv0@b`IGBmL2TASyXk zP%s!;)BYcO?*bo1k+qFi02L4wk^l*)G)PQ<1d?!%T*4$lP%Z%iA_;^^W|E9dW`>yw zNfZSE6$J$al&eHVM8#cHR8&@j%PNW}x?WguS432Fz2Ie6yw3NWI;S%|$pm~azxVt9 zzW>|sq)zoyRb5?m>eQvXYoKL*rL9bL=5j~xV~}NUP)t4C zZMYnY$KiClDq(t?O9JE1p)vr4*3#&R8;~94gr;I%ADRZWoXF~(oD|R_mT2Rh#)ssn z!WA?MCg!K=;&yqes6H^NuuUu|m^l7-#^=C|lR&C!f)kl`dP-?RO&OfytTl&^JydAf zfkkVKX=BG5M;04z99X;G_{XBni;lP^L_P{?aZ}OBpW9)<}d6Nr_H$FIEELv>vRS)bp z4lKIM`1_)@8#gIF*ChSs)&UV~F=68nM9VJ|}_%0_{iALe9}%Bm}z7P=NL#8D!yUkC96) ze%k9}p2bglQPfEMn*iFA;#v!TeGG$mdaq;=F%0q(e>48jZ$^=P z0HB|UUuNNNi(!y|BK#|2804q-UPxb8il5$pxjlwq#$Oe~AU~zQI)*`hdN1bA7zX+O z3jbX(4D!?aGHYWPW_lZA7-slQF%0t4do-J4804pVs)M{GCR`r02gg?7--G{w7>1et zgE0(~-yXv-`9H)kOrG}g_@jk?6n`Fz;cL-*Jdell{vPJ_X>X6GBs{&}LqF58JBHVX ziQgN;AfDp!XE!U?#LB6v1zlmX(;lGXH{W(nj z-!Tm0Hv>OF{z3fvfRm6fY!MD`v|tc_9nb@EriIUH!63d*Z>272!7%ebyaj{&Gl3D1 zM~FWK;YYP#nBj9;Fvvd~$c3CM{ygw`Eg0m#6#mhWCs^|1gK_n@4EyJ`WSHsG9wRr3 zpO!&suMyf`gt#QddyFg>K3nl#BP)a-sd$f(ds>F=1MT(ku*Ls+O9sWKcd2NvimxpB zp}i))7k)4B1LPkp`TMaYgZw`NKSBP8Fb}Rl~ z-@N`Uke{>o>sv7>{qx}81Nnf3KM1+!8DW10Octxsbn;HN)S1 zA%oH%bu<*JgZ!I?Z`}>~@5b^;gh_yWfyJK!xu3;91oB9We+=aD7XOuyi@S09m7r!D?xAU`YqC*j`>nLzjV1F#SBe&HX2|5eDZTKGed z|7J<=J;;Z}zY+f9kUz8VpF{qq_~{2dzJUBix3GSkg#4rM3*r9>^3UR51phCPf3aMj zzNsXT|31`5Z^*sHKk5Ut;qLssCHbF$KNE7M_^Ep78%f%OjnYT8tHs?J#OpHY3H|TM zd>25aqW??{>&xs^h8eyjl|lYC?}S3MZ(OPPyL=N0(f9KX@h5_(eaC2TFH?UiQyIh` zdpi`O{kJ^gZ;9|;$X@Y(2;K+TC;p@G(>_^Msr;TArFR|V1(M%A;1@zZYPsG&A%AJ{ zXKz(%*4D7U1hU)WUkLe5i@(PMD31ri{!GXoi@z4~H5UK14=^adzf{2nL%z|%FMEJt zmS^`6>~V-WgUY{Ej7kQ`p90u{t0nFc#CbyTzKIn7(-!c1^K?Vb0V#UG-u626ws z$M8OFE#w^S(MBLS0iZqF23vUAdu@!xPkW$MTl};)*L4>E0>}#_y|;cteL!9){y!tk zV#qgG!Y_rqJcj#U^4|gZ4hc`k8pvzJPi3(#hGFvSA+Hzzecf*LVnf4)81q6Tk`*R$bT39QGoUq``W_O_~Bbidf!3*&XOMO`Sqja zet(ACtwlKgMG*R1{KFs+%=AV=&Thf_H4@_i8{|t{gv)a*`@&5|m--1E@K0p=ZD)ILQu7!N9 z_&-JXg^(AwV12t7=axcVDm?jbhJ3U5p9OA#yiD$&era?$=IxMgl=0j_ z_-ijfA9Mk8t!_cxUBDp!C+8yEg}ncX8Gi%h4Klv_3vds~7M}JTIZMVPG#+jbxueBz zKu)&!(;*MG__HDBS^SeAU(t=zC;x27(LbZ3zN7(jbaEa=YhPr$zf@)F_cIEb;^ zXEJ{K1pai4b!Mf8^}`O?o*EACgzOam+ZZpEK`s;jA^2&(B6n(7A823Ed8uK2zaH{O z7XAy!Us?S0l2TF{U%w9JGYVs=;;mu66mq4-e?8>8EdGlyHtP34*xw(r*W$k#@_dVb z0py!3{^gLDKM=m(Q6Z&fgu?AJ1!Jp;GQK)Qyoy|3vW~CLYWW{uZ~E_EU$Ty;zDEcC zzw1r^yWaG_>rL$cm$3yhw?Em)qlXbjA=Nhj^S;s?|{zr_5J`F{VhiJTD9S?mD zG+xiLj(=#pWF7xdf6;io%R2t45By$JmOZ9U97zWMp1|6L#Z-}SNoZ?BJ? zcNXL91f|Xe&PJf~fZjk~;3~jN5ixKJeE|H%_z`LT4Ez?NYpLcB6r>ke47+kOa64?t zpMd8Ddw>^!y})09mjvz4gua}~d#KJjQ}#jy-T~eR{s9~VJ_U{gp95b49nNB;1D63? zfgQj100)3~1u^ZA zJ}?5v1x5p7fXjgKz*JxwPy&(3~(7R9=JkK0+a%afW^Qog4cn!fOiCkfDeFgf$xBfa~T7GEZ|aL0`RC{C-5}z zEU+8c2OIzr(1|7j0|kQxLj@y%k-%JF32-BD6R;Av3s?v223{2Ofe{@6Oarb2W&yK- z62JkJ1C_vBAP6i1ZUt5d)&rY>;y6ZZXQkqSOke;o8JGh2fdKF%@K@mP0AN^3O0LD;4fz}K+B-vCE2cMbu)(|Hfab-;SS3!Cc) z<^$IPCxCCr4sTFdn!@utV?|uoHL+*abWXJP+&mc?SS)uAwU)|Qn0Xn40I<(?EszuoNvS^7f=cKfop(8zzx7M;341kY@ z8o`H(e_M%gT=9M&Unu_Fq!R+#`{O&szkNjS9sMHsO+e3U2pt4*g02Gk?H>Bwo<0J4 zmP5~Qh6qN+@bBN`3g}r5J;NCsU-=(47fT7=inIm{ja8U53;4Q&Bfpe0KP>G9OZ&i{EjUlmLC{gqML>JJ(tfTN36cb~rz`E(+E+k( zwbH(YUsc*umG)CzBUmT6 zU+}zu_Ch7hmi5qo_T+so>30O^Hy>zk%N0qyXXTnC-m8-KsieIrX}?L@QPk#&ifaSNasBz?@Z^t`$FlwXBq8@PWx2d2CM|00_uT}fD^!lC^y=p z>(WgAy~p3E9Q&hQ#>1VU)N*tzD}fh*+2~v61GHJzedsK9051ajfuE`K_z~AdN6;R| zKM_a=CIbaP8BhVt0b)=$vqQ9|P3!)O7xIAiKn9QvjG=RwS^cV4`dY$m*`)X=#Fe$V zj-1jO$8^W2QDevYBVJX1_@+X&1K4>}^zUJJ;rw#|{r1j@Lq+=BLJPkK+DEvWOKPEqtpA4?Z zjQ?)a>lcG_oB2D^l=p$VM(*#(r_67^K74=Ifm=%aa_Eed-}VJzei^tsmU8*-__S&I zYrxe}{G~B!_6g>mmJEVNyweWv~d=Bcc z)e;o#$4&Eh4E&d;DBly{ejq*`Z3y*qR(2%+Gq{#FN5;46SDTypS}~oJnvVEwvLm9a zbHR54S~*&%gU2|3U2YENF9mWY@y+CK2sj(iu2p+gg!EfvN8Vo^xQRM{?N$D|BGo!O zGJli7&5-!B5x-@l_%p#d>H14xSEYVjmi+ZX+0MV2>L*6k9cO-lgv|G2&zd^_-uTduz!@;k!&z@L*H znf_sL$Ak}pKNtLGmiTAfQmD?mh3|iM6#a<>cRtX}{{XJCeTy+{ZWK`V}qE*K+z}aBjZjVF}!o%eZ_OfmkNfwD{d~%Df6qZaAorjBepCH>6Wsff{}W#~P5%hEujTsn?=zX!!W+-b?*Cdl_o{uV|l|83wNTh9Gk{@YFawFO zdi_1%4lL*Xp-$qzVY&W0kUx_8tBZ2|GT85pOLYGpb42Wu*D_Z71aVJLeDq%h=syy& zBkjZYbgf&#!~Pxou&MoM39j9(tluY)zr;r6e;&9lx61e>ivC>yE?MH&$@ro7t>O3s zA&Hh?-^=&*pNtgcP+}px@C&=A_b}0YVh<_pC z@37QQPjH8C;PI0o@!y1>Ku0?Gp%lMWx|)vq>)z=4!@!NcjrFTu@_(7-`qLrLx{d4S z#Ai+K&knBqw&v~YRp5fRasPJWNYnDI0k`l`4t%_YKXV1fCo5Qg7mEJIuL!4~ z3wivC@b%9{{7DwR2y!{`(C?kluM4sx>t_zQTH;%`P;0>(;OE1?K+;$Y_x2TRpErW< z27Zkt{q2yST*2)(`|YOn|1`MgS8)4@cDw*?{|at@z9{znHE{2&XkP#R2JV=YPkX7q zm?wjIRuEbxXK> z>t%kJdb`E`-hpec0?=HU!*XRng+)yGZKKNnm_;SWZc-zS3WLA)E|n<)Cb zdP%r`W*=(GU%ZNWY91@!ZF>J1;D@c^`(OEa)A%F7jb9Zxf3(J*46bNZ^X+FgxT{XV zd%#t%;`*yY`|pt*$zKC*iSS#%U(|?S3U1{pwjb#z-_B@%t5=2dw*~SJ;kP0F#o3Yh ze*)a|QvUf-?*9dF2Uf9t+m84>8^wPU+}~I6{ALIEB=AQq*Z+aiUd{Kv3w&~RWcp`- zYrmSWUms@tAn{qUisJ;J#SR z^Y0yBHod>E!Tlulmmj75{tE7_HR16EJ?pU^XRqOF(fqq!=HH1Hz61EKK#OL!(df1& z+`jjsd{eU{`JUkWu95Mp*vA2D!uL0Qp~RQ`DI+reg=-5{%37}fgKvp_TN{p_33Nw0vx9!}(kJeN%o6_=#(|{){N~I|W>!@CRYP&qV#svRuCuvS%%~uY;kSd^CHzXU&&Msx*j>?9 zcAN3d`9bS2|2((@!Y}-?Y5Wd||Av`=Grpw*dmG#b!uuq?RewIRlz+72IQZ|(@|W`Y z!BT!_t%Lnp$Mc(gDBr%>eBP|XIB*xNG~j5rpJ@?H1%V> z#eS?e^S@9X`LJpJT;QuD{*m{Z=C20aBFVoI<@v;o;8w2Z{$*j5^_^AV)~@IEBZcet zhke^%$=_zke^}4`>mii?fNT|UJPPjl^{ij{(!aH{@P7vP2E~u(^{03vGXC4(K9v0D zf7UdApMd**edPGgdi)5k<%Z_@HsIofub1>YZwRNK47tDNTdN&1e!0ZLkB3}ziu6ms zc}~Fx!Ck+B+vn^k{r`;{!unhHb<_UoR`7RikoiND@z;8ATQ{)&y^s1Cn61=4iXV&6}KZ+W-0 zk7G@*e9q#tGdIS1V3ck}pe<(EzGe*(A}lK#qXo92HOxC-HYQJ(M50T-0?+eazi8gNVQ z=K0maDE9YeaI2+!(xd42T~t2Ak3;*4GXHuA+~apQKYrK+?ggnI^<~reFM@kh_#-Ia z!P$}g+u;6T@=@&HQE*?~&Gz9q;*V$)|J%DyZU28Ud9jc5ZlLvOu^HoYpj|G;jObr3 z$%f8sw)C%%Gl27#v{Jv|`opp#>wh4)k;LzX2l0o4w^`=*IpFd)ll{c_M)a@1lKz#D z9h;?mqm+L+IKS}iqu9TB;1+F`@{jU-`$llLZ)W>$Kz}btkIerXaCdKJ`;;#08~0f9 z_Z;L`HuL!S3*7(6?8x}9fqR#(kMzF>KPo%&`iH?C+syWJhv@Iqmi67^;J%gXAN;&& z`}#NKr4IFv`ZV%+`Dz$KJpJY&EH{gA4&PGJl3@QJ^}ZQS$|R17jCnz4@bHG@1=b7 z`iR7zYTf`QWDC!}XK>P1E!X!8w53GsEYs`E!8_$o1>x{y(*pUp2S|Ky&)J z7~HaZc>FnA>Tji`eC~j};U2Ev_Rx>f*(&1L4DKPhzVS}e`g;W2F5wr7eQKW^=AQ-k zl9_+$Klg=c^$NJRh4)GNb?1foL*R}Gelezxe(l!f8=|Dw3} zN&k7MY5He?Ykyz!^Y?0uedF)r{2z?c|8xe|UHG~v<=Ycn#(mtslij$`h>SlF+$am* ztr4FGZnC65JBodo2Cl^9ql{n6z4 zxE1$_{flD%@3=3le+LgY<=2A0$BZAvK5hZG<31UmMHwGF4(>V0pAqHx;~u$wD@Q9; z^slD%|DuJT9);g;;de)|uLmvst|2n+vxl>5)I z@LxpX$5{9iQTXu|J|W8WCtG+&6#fbezcLD6WZ`>8;q4ZFVHCd1!jFr>&#~}hqVPTo ze=^GbS6TR9qVQK+cq2;s3oN`Z3ctj{4~fFxY~cq);cv6>t)uX(EPT5t{8|g25{2Jn z;g3bR|9dU`ktqBF7XEk?e!GRQiE{l%E&Ti_{F4@bNfiEB3%@i9UvJ^_qws&R@G1)b ziiK|#g+JZ#I^rLaG>&fJ?@DgP_~#SI-)%X4Ix+Vbsy0A-pfk`7NCgG}LxGXNr2u{B zG#+jNPzcz8iu+HW{z&9yF2Yp<*8mHFr2wt5)4cq4$ZLU3lGeR+Es-f6@s!36IY(oZ zU@@n?3+J8#UJ!1dT*pj{zEgTtLtW!B6XB*>GRN`CPaM;EsX&Cfspw z%{)XqmiEe5Yk`%(Y9M4e%yo`XqvI?UUIY0)bn4$nSp67ZdmY@RaPNmp@g9MDJ=`bY zQUXuIT?qFDxb*z#Ww?*QJqVY+XMY#&S8$KQy%FwbaPNWpHQYzx{u}NhxWB-q&l=U^ z&^ri~rnFvd+sc)|c6e`le3^9jtC04j%>v(h|8 z%Ht0@OB~*sD!nWcic%hCTKyUmr{K)<3)O$^pmfel=JyHGt1w==$NF^;&Ydh&^MM_} zA)wulxKCgSunSN>LAQVkU^%esr$}A;0{-)VhMoaSfmea}Utp(zwZIXe=dbVs^MM_} z7l83wq4EKHfrL<@asw-Yy#Qtk`rlqa#T2O_KoF>pDN>D(6FAqiMUk2gtOX7MJzK&L ztOgDO@vVwf0Z;>M0geE4{rEGAlmplav^uj$r2s|1THpjwa8{984(tVfIg9f^M?@W? zfY1LY>uyK5q`VjZ(^5w5F)uv3NY}%^J}=boRaC%Ff{)y6%<;&@{C&aM{M)TJliyHk z4Y@copf$Oz)cUiV-aj1`9g6ffUtYLf;m(Dd1h*D$Z@BZ}_JMmnTw2<>5iWhPyc90! z{Vj0Mfx8^;xo~fTOUq#^;hqn7E!;J?ghK1d-4F_GBzILPbT_%ThC+34TmBph-AnFI zq0kn%f8QSpZH0UI&QNF@g?lX&dWhTuq0n}6Uk!!+KrX`VAorC}=rM9%4uy7-yDt=a zlH8Xurw*%Y+xUq6R4(t zM%+}mbbq8j{ouadrmCZ`{-D%_pz~D@8e>*-Y3R#y-$widY?w&{uBz$ zh~@g98O!x=kLCJz#&Z3;V!8e+W4Zq4#&Z2v#d7`E#&Z2%8_V^7eJt1a4Y6F`x5RRN zuZZRPULDKzy)KsP`|en-@B3o8zPH74eLoV*_5B#-7x{ZCmh1P~SgyzVSgyyv#Bx2q z63g}cI$YZGi3_)*Q5To=do^ZGcppG)GnJ>3*1?J17i)2(sbo>sDk7N6}EsopO!{owl{vnRr)1z_Ro_5A@J9{dQ+ubv9T(1M$b3Ohk zj_Y+#9P80v;<&!|$FUy09>?|kb{w~}zs0fL{CgbR%@5;IcLuJ<3} zSPzJ&`u{bK>!18o|E=P={>g9lt5pAOZD0k>B?_p@p7 zr`HFvvqR$9&R!DF`Z0q14~6w)6!{+%eSzK0jsJgFZ^-UmO82`h6uK-vtVd*j$J6-- zLZSTlrh4@R?sE#xKY?)5$i@9#N$&1YsEAx#r?BU2A3oJ z#c=ODjovo4R}pq!?0tj%hhEghvz~2@XFb~<&wBP)JnPx6c-FJ$;#tr3#e zFrM}7op{!>_v2a5j*^S?j+2Y@z9JXteNQgZ`-xnnr#iw#dS{Z0^xBd8TqqRVk@YB{ zBkR!x9a)chbY#6r?#TL)+L84oqa*9dppL93S>z(!5gl1yY~&){(G-3Yj|1trtRvU= z#Ex8#lRI)bPVE>jSJH!79l8GP9l72e9l4%e9l4$>JBI6pj=3FwzaEi2sqWZRpPCy_ znBxRfe@>?ljmHDs;4Z@T47j(zr7eu^fJ^h)yWpn7T?aQq{QcqH4VS(#d=TycxH~(t zem&ih_3OEgtY3fb$ojPpZcCK+0dis2-Xa(Ec$i$Y+oR;7UOprDFVGKip-115`{z*T zWJlJ|UpumXp3#Z*^PEnspB+1~eqPXt^)smx>t|Xg*3W^RSU-n%V*SkP#QHhD6YJ+x zI*)wK?8M_pJKXmW&((?bZf+;mw;H%lfL{Q&Wql}gBe~CqLd!a_9^OGb^0SW4zkv2c z?jG2~POP8XJF$K~-ih_|nNF;q&v#<|+}nxu^W{#gpRbXNeEpTuLHt9V!sFI8uVb9r ziQCnuowyx+-HF@L51qIjg*tINI;%6cqw~l`dY#EdxpyNM^^i<1>}5Z4VJ`=h3wt?| zT-eJ?$wfI#Bp3Gb3UXmDi^+w(EGPFd^h4z0{;J8{fpQ`j`M!zVKVW=M?jxblU7fjI zZ0`J@A79hB;K9y3-+iJp_scJK=6?Cr&TL=b?9AhX!=0ONKc=0w&aaMkjvR-Reg3c7 z;l}Nb+S&2W+|Fp8P3`Qf&fLz(Pwnjc&fLygBov)?+)m?*_6SGgi_Qr=zPK=f#}!El z+ISJf;{0ZECY7=-I zu`q$h5jQ39IO4Vh9!IQ6;Bmyp1Rh7+m%!tQhZ1-k@n`~%BX%Y5IO6#P9!I>Gz~hJm z3EU3fO5k>QIDy;S2MOG+K1twq^<@I<)%OXkS3f1NUWF1^uUaLtUbRVNz3Pz2deteB z?e2we2g6NH_pa2XCmw8Rf(*B z-bB{FAlzPXYZF-yuS;ZoU7X1Jx-^mX?$$)s!#m(6z`YADeH*qZk@fAqMAo-$iL7Uj zB(k18naFzfY$A_a|D4EneqSQn`2&gEUfxXP_VR8b>*M>0tdB<%Ss#xlvOa#9$olwg zBJ1NXiEQ`J?8184t_$mBhc2v_ow~4IcJ0D;-{``2|Kcue?^C<5{m<;edOM^G>+Q%c zthb}dk8$z%F08)=e>&Zp`c28GshugYxJA9PFp&oXVi}HRE?iq;x zW>@a_-s{T!-qEhy@BOnY_j~{9%Kcu<`P}cdB^UYpY225`H}0b{bIxGvSc^NMws8wn9od9Ge_PK`hE2r zyN7;=-RpCDj4F@AYm~X%PW==0)qYpd?3NTs|t zU1bk0QU!xKoy?3P)$_CIDhU75!E6ifg`2W>x_SWay%KIC;_li%T|Eu|emVCh-06p= zt3z<#lyhIh4gP7m`X27rgPYH5v_t1TTd86FuT%r!e+}*3{Jl0h>h`k@CcAcRv#B(H zxLqaXrB@XP`a0ZhReagJ;>pf(S0L#0=eX^GfKwNG-jMzoSw=}&@f>GuvCHEMrt~sO z?QXZzVN|<<6^66Y7pygW2w&~>J5*9;4WeYAS_2jK%z=Z9pfeCO%Iv682N8p_44d0q zUFHf@7$vUqer{JVh}w2~94eo*d6{%4uMw>UN z3cNlPgd>T@M`fdfrSqn_$IbD0Czja!lPktlURirZ_4v8IeEWoJE>iZ=V3plnTw3KX zsVYBg>m#+$w0+8s|^8LrqiZh{|JX+7GvNR5@@%ya*aIxSoX=l= zd1ScIW!Y-)Wh~!v*{QGn_p#Y(3ovi&sjvUrm~3@;3}62RxHEuDfPY^azP=gHdi`(n z*!^>EwsK6#R+jeg_wH3Gya#DXsQmOgR=#doYp-8O^sGG_gnwe#)At^4I#xgJL zBDKY#{j-emUcb`_R-m_58uu&Ce6qFyTKf&~c#{fMM0&>obLX3$e?SE<({r*Z7NAzN(+hTM{^E(Ah1XRD8I z4!e0n2R4+uHf+HPS3qCZu)C?SY7J)%aui^j*wAgk6nabTL8p{;Dr^{)yf;{Zgiu3$ zVI9!VH4Sg~)HcLH%GA+uSgAuP=x`m14h%s)3y`?ep!|8Yt!fBH{GbT^ad@2ptwcKa z#1C%BOS#u5an^c0s3$wh+DrmrhD3%bBb_UA`7MF+h78sDq(0hd;GRpJoJuKFvz+_y zl5jRs><)*~-3WSh9r|4kXD`y{^oHwHdE8!mqm1MY%owOI!Y2YoHQhFcr0!&3#-OG& zOtdqoy9o*~xM_fDmk;ITtqMY8C5H`3COI0yHk@k+Wu|NiWS(jW6HeR`Dtxl7DjY}E z@A7)Ie$Q0F?z%efy%_YNzj~JP4FDZ36%gQTUSIu!(dc3~5sKKgv)it$O7Z%N&RXn?S{+jvMUbkT3 z^@|oSx#7l}mfn2JvgNnlwqoV&cdS~y=FYp;u3Nuh*aI0V`{Sp^X_JkQ>XhokLIo|ZnM`mh0~Q!?%2_ziznt6jGZ`Pic)DVL#34fX(cX? z-CqmIZYWq`^i>TV9rdHtx*yAEtDVfY%C9m?X{t|y*04dNKEsen3_5I#lXXu!?D zmm(Bcx=27(d0ZGg4;>Pjgw6nLhp$TSf|NIOkmj{b*IZ@8fPf6G*c_d2RpzMFL)Acu zx6kkjuV4A}a3RfW=sPin@!$jb9u#>|4kuToYzJ#$!eHu3gDT76wO1LDC#lDwVFZPB z!*rwT4LWOrS?GlA0jF|RSD+9Sa^SiejNPr!2?W8pRhifAK<{5w>B&-ggK2;Rd(FM4 zm{ga?yibSj^SEcUm$;p}JTlVLPaQ{x$*>Nbg4N+J!5T6Zy`?8PXke^fZ6M231Q@WO z)564rQsHhKA~7P zM22yt{tanS@=-%o+C7*lnDv{c>sP59HH=dp!Lw$hg+6qu9+YHJkA`_%rQK&HXEy@g zDt{^RN)<{qfRf77b2eIcRdqtEDRA0<#s;8j@i80BrWsIfflGAHS;{{g7K-L9xsH-byiX)axkB01TSG@mx>t&|EEO z@TyMANI~9UYUum+>+87ci<{tMdh4oucykW zb=b?C2JS_vn6q1k;##z7b5`ee=eF+FDgyX93$v) z9KaZDP7fpL(Lxv4%Oi=ILgd>q$wNOEboxC}E^OpF%V@caPDQY}Cf}eWk^JT6g-z{_ zqzlaZ%JEjhf;-Zh-q|z>qF}c5v;!G&HY%K{a+QhD!ANGJFjGj!Nt**z<>iVOx3_W?)74D=QQ&`-^?`*m+@V5(0u z(V*9hJUe}Q3Yb#m>4gdJ9HrMb24|uJngY$}cS)dqwS_&0Ls}VLe9aspg1a<%ifgwOy zF^zI`Fx7sfO{D?TfeN4oSPG08N#V5R(gC-?ud;0_UXTvt0`KGeR1b|VJXChLmuYr) zl^)bk895!Y(hV-WU?B79c{(IDZK>-0MVuB)AB{PXo7 z%ZNBb=8B3fC0UEbr~#x>>h;y4SajaAF10B)P$Sq5)B|q;MxQGxY?2h4cQ2(av@OvBNq*7(C3VNykpoeAoHue2Po4T?QzKC+}P?U2f_5!;^-T`a@ zhE16;c?6Z^kns4&ZdHj1Rh1%)>pSToH4(CZ;#zOiOXC{aC+ z_OU(5wE5L_IbKa2FjT6csMqO}hS^PjbHy&ppz$p3Iozii zrFz8?Jx+;}hQoR=Hdc2nJRH^fROWZmC3+(VIxv6QXsf5 zf^hM~IViWxfmCiDZ9Oo`4q)6sZmHXaQ724B4TTvz*cwJpPcUkw0`VKvh1IH_x{fjj zoW>S8Tmf`=wPXkianCc=HTZk2!p$a?D`#niSL}kWoMBhnRQqcg3do)hJ;S*rK--Iq za<{hx-MM+aKvr8ddfY_SJt@!z|J8)4K$2iNiThmC_$QrT~F)RhoGye{~Ht3>c`f9vB`M z3KB+87oywg(f88+KAYNoPZ;l8qN+>O zFl|{!sJua>3VF0pZ9WOPrioPZp0}xOz%d}V-lh_O<&agqZnpy)Y&S0thP4s~ z5_6j&dcGQ{!Vt}5vUnCr1KptCj=`kTV^G{3OmwAJx7#LyVfU9;RZ>gotI+dhWT4ZS z$OCCT9;$Q&0_La~ESWj(d}O$-iRvtr3bmh%{)j%>v(^_jWYtLFDZoW!$s*1m z3N0bHJXPdF{m{UEZ0-o9tvZ4i(;W>C-;rt1%$wDV(?LvLy;bEE4F$yy2OEXWOgC-! zFuH_gW?brb`OpE&T87y-XX^UpTccWPNKZdE@KyyaJpf1AeG>WttOgbW2Z4ZB+d*n( zDEBGwX=7`rg?2MN^Rek5S~n>0(t{mOZTMy=FBt65*oId|u6FvpbaF7Agq5JjvQ!2R zo4u>kO@&~Hz(43&xr|S$ZE#08Olm#hVV2;a2Zn@u!d6o>5mCx_Ov;^}r zmxGKnRL8(*e2XZvz9jq5k8a;*5iiIHs;*@9c*myvCG$o19 zcvfL*AA`cCz4@RBhdy;Yn-ODfl{e_*HZzD8AyIRgUTf)UINGbNJh;--qVn`&XYj{r^sE z_#eDhG>l#Y9bJEF{PnI#+!f{Ae>YC9i!PrEA6de^2KnjJ#M{z{Um^ah*EPL9Y|DV~ zL(72ENKQ)T2gcgUkUnSd0=*tAn>Jl*v<@~-KZd1nnc+6*^*R0gRFK->IP*F4;Qj-n zq-B|4=oG_#jx(sabgcn#{r*wXHYY%QN9>`n1DZ=y!f3nFXDjsh;T*LTr~*oWiNG)* zZX4q}$VY*AVB9p+VpFn`4Lhbcej|BgGIe?B zR(s^8r9@AYZkWQMZgQ*8<>^Q8b6{2*h3lc8hYZfljAGxSrPsfS?XuKP^0jQiD(yb% z8C>q5p83f%tr(+u^n*Bo@(qs}T^@(CCOj2od)*(`F=q%IC_sI_y}?{l8kREX;qvs5 z0?I-y>8C8t8lPVkr6dK4DvNp*%{Qeerz|AWr3d{DdSd2|U(Se7DU4*$>lS9sG%BkC zdNjjt1n4o&P-dhL4wxzERSg=04YiCt_29Lkw+>_xKcq3Quc7Bctg9F;*nO@b=48kf z4cY8^45yWW2f8KP_YJ1@YpQv89CFGu8|s_Z5~fAO!KKQePQie@4oAH+)j-4`lj9Du z#MSdD4A2|i-_hX$&R{XCL_jYI<9xNBf`AF^!m?ay<%v2aHfWCHWW$x|m3jD;6%8)=Pm1_Dy!QvF&x zL}3tSi23ZanJ}rB%v3WmhAnop`UarC!7Mc|OS$QpZvP?XQ&Tr)%>yu1s(_X% zoNjk9kH6_Huws;MfV6^EUCD)6t%MQtc|EAeGX3n+jUrd>(qfwPs8VX(G|lkSa*Wd- zET+ZTh!a6CM=W-EM4;D$Sn@clMbZ!PODi2Hcx}S9ZDL~%-6hvyM{WaJbUWuc-MB?> zxy});(Nku)W_L|An9t6 zpOWaZQlruq32Pp z$Iqa4onbXq5se;4&+$5b_=P|k6FSWY=uL)QY7B=T8WEnlM(J^^fot^j$*wn8!J88YS=oI)QXZ&ODgALdYRH+V?6`ok2krbP zQ|K)1t^a6>Dn`8Uh;;I-%ivLzfDJKA|X9Ggy>3b(3z=MB1oc4 z(dv;Zb-LU#Uq>KPf=qI06hf_AC%vT+(95;d-W)nS`64{D25NeOdJ)&- zpo$__FNso_2dTgy&>#@4nhlF&Ps{psnp%Dj$L&Q`TSU{!=;mq)P_-&Id0{*J`t6N! zyT8Oy za#6Kf=_=f2U~hm6Nm_^=uJgkL{_Akr-QM!>;{|1XaHJX@6N%)6K@3Wlpj-iD8ujai zX>tYlfu-URz*Xo=lvY_9@E4m_z^~j+4}E2#+p@THRxcOR%X8G&Aq9MrUtKo3Dk+yh z2ED!EBTye$NqqygW6N6)R5mQ=01%|Ha&3Er)i7HDX}frd63kQNpQx3ECCg$1~21sa-GfSXpJp*;nx z?J3aEa`f0s%u~Px+fBBKdM2PkFPh^I?vRWTzs6Hycjz~Tv`5}`fXD5^-?dSr(lNIo8bLuw4iXXo@xRzIpCLE=}HuwFvIBrsS7 zB@EPh&_4BFdk|WnC5cz-L61}Fw9^_tJZR?7>_9C#%u0o_@xi1@4{Camdy%-;4BE?i zpaVg|c?cDXo{MQUp)aQtJ#nu_4-xcMq4%e`4*p}fqqLEukM6YAl7MQ`Bfl!7I?v_T z4+EgyRd%;-CAcp4+z^O@Q{g0YMUqws&KdraQGv3UB7KrXGMN`s=5lLz;HMfL$1!$^ ziBZZZu&FOZKG7#feFM2g3#C@~&Qbpod3SD(`ei)7v(j#mO~p)LxhLe-BqMI?{2X=8 z1Wsp1YL1E(IUjQ837pQxk{opb)CC z+th54a}nk$k=sKKTEfpKxdn$`WQM`{Wg@5J{2Iwae9)#gk=zpZ8?vc;%`p9P)B|$A z(~-{|a{kaJo7yFEYm`sDgqc6proJ97c^I6d4oLbZ?Kbs}gntY2M-qM`qK68R<621>QPpFKuBq^j5;`9+{(t%Xx+K9mYzTqa4QMa~ml@`CpOG z_kINVEEM^R0+grZVdpWM@=5rWMK)Cb-ofmjvYPsGRTlhE07b>7Q(yqfUyv8`la+ zm~lgL)R~jSJ|KL1l95jR4K~$z66dEK~Gi`6S8btu{4B!ViFs1tgulNN2$$){~9PZEC56cSBw+ za>YiQx?keDH`~-Ba;@OwHuZ$aD+4z5Cka0W@?J|iFI&=iQ?9!Z<@4rHzQ96EcJ!B$&%d@=zmT#=!1fEAqw>IqD{nj}OmLcSxGEVJA15=QDCtoybceZ=KBLKOJrSp~+kh z1t{A`MIHwEnaNykL6lp)$U9;GUzT)I4x-FO{sK1t9}=br;Xf5Q7xFhEr$YWo!na1B z_?uZiQ*5fm6uxfu67+XdSckKR*wi^wKMBegVjyj`&!=K+PN1a!|*V^K- zsS66EPeeVY6tG?;givk;qLcU8)G!HuA}dGb7D)d82>T#meyK%SNtk_$bCkV+%VFmS zun7`ASYuOuNk9F!95ugy$0P}mZ%(#%Ro62>uV``3CCbAlxqgG3ve|f~F zHcaL68FvQSyU6j?Hnmg2?1i1*GnI9tU>y2lNxwDp^G%UYV4U`j$SWZqmhkVREgv(( z54Ne#L>{u%roJ)b-epri%DpT_ng3$mFLb-bG`Sayh0YRrCBnC#Cc4@#M~301x1Q0jczVmqFiTcEIp?`Kd3+^adO#>^ zX#5RIgO8SoXa$tt7L&=QD)ra;g7ak2Q&u`l=;Im|0~L0?xJm0ov?R)363S;+0p+Z; zmj;UI+ZuY}L(747rT-SonnM|;)-GPU#2x4bFj|ldd-PnK=I=DQre!r+T;w&TVp#~i zs)}a*$UJ{Rrk}287k5?SciQLBnh{Md<%KQ1L_{A6Rn9S=)$p=rF)udjX9SiPX07ke z(uAMA`WX)8QEtmek9#m1_XLY+X3Xn7DE7JXwYKup#FyTflSdi46ay9BYN}PU67(la z0os{F1uFHcyLzQdKlZ5d$$A4ldgA32{bdrrz)Q3GV*VCYizqUB`!@*Hp)&K9T;(i9 zz3TlB6mHO;CQnNO+E?7*o9C+3xu7RcyfQ*F`zl&^&@#>L#o;@jC!Ypkj*e<7_t4rP ziMot2Z+CdB13Yanv6s%N@~P;@!x&H2K;IVtHvwya2LPIrJ`T4Ycm+5Fd<=XA{2TZc zXyurp&I7sv7Xy8O0RYYKM#3EfOa%&o3ZM$O23QO%1J(ie0uKT-7JL*gjq#p^yB9bB zya~JydQK2bKb>fOP=%8Fg?U2A%<4 z1YQN+1C9eHfS-Uf%Vwx^fJC4NkOm9_MwGF=%**KC?6dcc<=RFKj<9X|JI$thRqQU; z&#k5p%3eJ6COiTMzIvJ>8fp+}gOnp;zdYwi>u6`tD;2ElC zRXQw{vH4jmH4az~Dmi{p-4&qk52*AUMoF!atXq%y;UmZIk3NUG1oKMPuZPW@CJc|W zx?x|9fZp!}*Yj7}-D$kmug^GZ(qMk%4A~wEYtWqyS4IluFHq(4={K=^DTD4G=lTAJ zs|gb)?7_KXGxbBgL%L7WC)R6FHr9c}V3OkKH^esK7 zJ-AW!#^!QYZt$njhTi|CPak^iWMDeKc5XKs9+l|ydJ~rs-kV3C>>EVCSIxRJF#Nrj z-Uls-$3F6vgX$T6X``RRTdFHLjrw5v*d&8?AfPn*TVD~fCPQtVlF1u1Sid7yLxU2n zDEi$J^Xn0Qtwp~!MO|T)y_`$KXw&u_r9W)pybiFwLx)_*C+hNfZBn2g0(LJh7pVIBuTlH?MIwd*U4&x1c(4ms63#hm5;L~8B z^tYIS-YV7l3JXf3UvC|dKOuLcd-PIV%8>7BGmM6{d}^k+G13e3DF?|`9z_N7%KIQ`v0)1&6i61`+d1Gymvz1wz*!T)>{ST zrj6vx9gARh8J|W1=KFB; z1}sLBBh@g*V0M+1o>>ENVky1#nUvn&t43&&xdGsWiX?_u2~s~c%nh&E8IfC8sVj7` z(z8FziFB}$+(z|xLr$*1>WDxbyYa>;k=}+aQ_Odh%n$qY&TL!ao)n-IFvfp6S5@sgJ*?q=Z=BzY-OuEz zx@S1ug}@TX6~MS>!eQQjI(%L8e8n?O(`pX;Brc_4%KI$x|1|!)%kcNYye^epbqNMB zl|E|c4exkzLx@n)peV130$hSCL znK#&Qf9CC3?ry#+N@{vv=HZ$%L%FMQFMuDY0&0M3fCa!J;D+i`-`_IuD}XzJb->-g zR^X4oQ@|czZ*}Cn-aO3xa#b2lN5h{hr-d7-a(d>u{9cc4u;%&#fBR^d?@U&rWnwN8 zkoT(fl37xJhxr}CAdIQA_+5Fkcj65Syj4N{l?=MKM%!E|+G}*6Wv@|Q-_V2LfD^qq zy+)jB%o?vd(UOKwsa3;HJq^Q48t-U3ma5tqQFyvm!)TQPC;L&WxCL5hOwMWu(~y-s zk2V&O`71*GVA;0(LPeDtF4N%hL8eyuw^)#mp==~W+;n88z4-WFMpZIUw5`wnu` zM@IUxl<{0=NmaSt(xI|GR{|NyxJtqt7#h2v}rPFQ<5}&Khn}pW+usy$;>b_Y0^@lC?E1(Xzx0F>s`_2ibUUJ~U?{Fy875hKpnZjPz$%_LA4UoLC}SVCB;12wJs_ zAv&aTDbaO~wF<+i0^+l$k{%?MSsD;MHq~T~W}r&9fa`5XhPTU81-1k2M>^mH$JR(! zQBff}PRP_snHS?6P=)%-_SEo8HPx-JZE7OY>{+_BcD`q+YN~CS@6=S5R8Q?yYp z2+N4$`CbSF;^^~uRX3sr)9whW;aFdwlSIN16^)Sd=pw0DFY0y}#(Gse6xrzQR&o6I zA+hj0zESmd$Gj*fkm&7JRJjLezX_;UZSGoM*W#EZyum(5!Eo71ZvUDuT%#_!c#YZ$ zTmgIv_#E(g;3nV};6C6X;4xqy@Dy+W_;=txfY*Ru0Ed9z0e=Aw10ye4qs9Oy0jB^H zfzyG>Kn_q0lmWHCd|<^Tb{oC9-fo{gWhL&^3z{2yX4h6X>D}lJhIm3Ts7HkM4yc|u z?ZWA&?~`u6%vO_CwT~9#)_|^Dw4|OWWfsu5re2#OFA(9mG?L>Fn>ENsmBsFatG#_g z_9{AiDa)x|u5-1XIbD9v^7iaJIlT`86Q=v zzwH*-8rZ%3}py!^Mm2N%CJ7%QDa}rt6 zI!KRd`Um30wENdJeM{5B!13!mPB=(@KVVNr(YC-)FHb(l10lWriNBW@(0&y$cGI=BEmpftNPPZMx7O zU5pN;JHwgncZK3ZNqI_UqEQ^gIsJqu^p9{w&7C@Fc1?B8#gpy5Utv~*N^vML)`qyN zLS%w~)`jR@+tcaWI5DE{M9q%{0#x?n1w3Cz#d(ri)X<<7wWz#E7!`;8PAr)rr1D3- z^=PQKGbpSq9ssMv(B9`m%QR9a8M%Ygkq|My5m7M@4muMVA(hc=CDLJAfthy7=8$Zn zm7g{=1l#F5N*rSoKCM9U9#TDL;p{D?Avky0IQ?cC`YCiNrrxwukYzhJyLgJVG5nTSVDC<3k>*M{jS)-rCL$fV=rWo!GwUo2 zq$me9=8;St24Rc$e2~suokuC|deI;L~wBo}GV`=f{E%YXALU#pgU!CrCT(rHQ>THRbNt1X9=F zesQGil{-0?+Ci!d!x3{Be^gspy6cq1b}NpsYk$L*5;drO>T+d~dNyu{X}poay|LKJ{hWtsXTV`28({7r*RLcL5gyYk_LuL?C-|wVIT3PF{X> z4Tdvnk_ts9lOLnL2|Ew|2dz(6bq?M5;(%wOO`Lf+GWj#Z@2h-kApm%Sk zQF?j}W%fZ}=7XcXyI-fhD_b_b4muhr|9ux_VFHa)CIt6z==GjG^#+h*y0ygEo(xI_Efrr$?;-nHwoq3RDpdigNJknSGgSo6*Y z0p&Z-Ok<6lo;r5s#R`m5bDRV62AhK`q_K${4o4~*f|1_1>k27hK`+zRi=S&1S$TOm z@~wU<&j(DSYrZv|i4yr#W%}BZoLn@xHQFKHxq_Ir`;ECo=0O z=0hD2fO1&_*T*NF)zqj97I!o#{Q(aC*2v6D4S$#{5mE{QlUSg$#+f3jQP&;vsBixY z{g*d9YVND4ckNU`edDI)PU~KYB8k<+la_2f|=;5xm zP5FqOnW7s|c`9hlrpMNqCQEa?y~qSI`4eVkpQ(puiJ9Ss{Y~A|pZY;v_S*0#_09-g zTV!O!LNv6cDMr@ZT^Q*oWXF-e!fK=J-qAJ7dX#0&Zo#Ntvt2IRZAcq2o>-pnzU%Rc`&Z;OX=EARqn&?zc)EiX1C*}B}@RPnyG9zUZ4_xzb#CRfgNIbHh zbbi2*oOr~kjN(DlJjhS@D6`1yVvFu)OE5N8nJV~Z%LcJLdqSZqnw75$8_yL;U7dvr zA`5kj=#j}g!cJ9JR(=7h@Z5YwRf(K!#WK0sx%t-Y*;a0@m6L<`I*knOD7WP0PJuu* z)uS-cTBhn9}Aaz0XA$YbovWNML)8`k?$*(m0y(APx&>ALP*ArUbH;2 zm9N{IEPH7LLS|?>(=y}-<-yrTu9W;JIdHa_FO{F04LS$GC zc>jc>LyYE9Xo0nCj?}vf^_C;nv_y>}ZEB(Yg}ld*{NxWIinK8e^E(N+@JnmdSkP5h ztl>RcpTPYj(5pbt0{uMb*`POp(w6ldpr?WE2BihW_k)fH{T3+g>G}aEt+71(i8boO zpiknS_IW)AdZHqoHfwm_*lVC40(}#dbRzx^l=g}J3Dg1|0Huk-F<)Mz#(;hZ^c2vO zK~Dxf^ULm-R>WwuR~g;{7N?1@|7JUhCb>s z!+Ek@pD_xGK(@I-ZA4#YJ&@Q{Hlw^?| zSwT!;;?a_x)-0)EzQ zY1cwvoti|eM&s?@y-~k6AsR19^&rs*Zwl||kb{Mo>y;qZg=OnpBEterB-vg z&F_U~JNh;*{j4j$l9KeO5Q;=*48tAK}*{tf4tmn~D-h zj7~ZuiHJf{NBKe}syFQ98SesC&A($8Ts#=oX~|J>4=oAc~mD8N-`(HPy43gU3k`Zl{$Y;dXgT z;dasBOnp`kd)Nt$WSFp>kYOjsIVLE~I@=jJ(-gy~Na@YIVM&^>&WD`5&YqD7J&HI! zM?{211QFY_h~uvGfM7{njMy&rg>@H+H9e@PL@*kNh4?}$AhV(c5`i$0l8Id3@{ zLp7e@LM<$PMAsU$15BwpiRwsGS;vLT580v|9Zhg?jwU#RMiXIq==zY*IVhTt#W{*9 z-e?~THYKP!jBXOYHkD};qGfExEeBnwzP*4hTFI!7rp`bS#TYAl#x>^c(?s-BID>WK zSnqBuKr=3KEQQjck^zWb;||)si7(_Z2!|rZ+B9PJ_CZryCZ|N)>F&fSh}0SPV&r7+ zgpuA(oVz=5-M5KL=O*s!gOA7zyNK?nCJPhuq9C z-)U=cyFBh!EvrvTutwr!amlRl2B3txZz89 zb-e-xVb`N#qMY7LW1f;pbqnsr@D!nRG&oziv7$wU(RUao%pOZj+7vP_*#%U^4^>M27*);%l$olDV zKl$751hb$0@3({5?}V^lLfEfExQVneZ&o>~TFq89YOdn2wsIxDN?knU_-zBmc>dmc zHS&~V)d~LUOFe2-{x}r_AN@S|5#!Xv8`h`=^&WK@2BAyAA8PTa5gw&BLuULp7OK&k z#;L6aAHI2wdVP*Zopk9a^=TSIj`pa}EmrDU@C!zH)XB9<-3-2bmPcIyH*W*qG}EJQ zeQcE4e4T6eGK0SpGF_D(b=(g|sc(Sab634mBPOc7;H$TJ)R??+JPs#*0>b>L4iCkJ z#-{yWfL+f>^#u6^ek8(w0Q|Pyb2%>0fge}epl-QzoO%)bD=a@ky#n4k&!e`%%@d7u z_!XIxJBZ6~!N2`^;ok=T#OKBRcfsGH`Fz9fsO@eTPTKCeGXeb83mQ0HXMlg}!;=2l z;P-t*_#*I!#|WS0xH(Q$!u;*!b5#b+=Wch?wqd&)mllT~saAqtu&G|vjV@N_5r4Rq z!{ayj?(J@Vh;MiE!xnPCWU=}v!u&}J+w{e1+gPQp*-mF)1zf{V_WiWqduZQFK8FDjM%ENn)?8;zX)Z3dKa~b%x-#@~BHjj8}gn-c!%% zNpqjo*VU`D(O!(a-L2DTF7%B}l7?epUSHCn&PIE268ODg@pl6F)>A#qp9%gMv=?LG z?_}_a8|pdyQ%N4~)Iw%D_$}b;z|R6d5&TZ%+j@gvY{;wuKV_+;70t;W%B)vo@V?H2 zc~`g|?`xt8fLEKSeVnMy2Vc;%SbYxFOT^&&z%Q$(c5S@6(BNr)*ZMTvguh#1e#<<> z7yPHdA78bY+m6qZJ4=yg5SN?5pE06Q<&Ks);d}cLUxc$BWx3!^54*F2;&Phgw>`J( zwjTAyeYd-1@Y}b$b^AW>O-m$>kKgX*!>4a|^XGH7yLHryx4U)SYqz^~)EkD(?+w2O z44LD0px*fPN`5aV?r`1z=nmK4Gj_Q3#^fEYJB2&kdSeFo;+yb}Mn_c@_&5G4_4!=z z$0JQXiZuD#^=|uHWwgbm20st-uXG`AjBZu)cNlfD!7l^9Tj#6Q;P*|HxVP_c+n4Sg zZo9K_hua=qvcoOEm+x@f!O!e)+oNj@{>B|{n|SLEw_d$thubDL8sXmq^Te!res}lo zaNEiUcerik!#mu%`uj%M_8Vb-!HCN%JKTKxON0O24mVH!#c=bm!DsAr+s)&5y7}S6 zoo=2vb*H#_68t*TkjdHUrg_0mw~Z?^%&WjZ+UMc$*MVPFjld)S{N8xiEim6UtzKP$ zvbn-=XWdS>jq@39_85F(ryG|o;P*a=b`xG)3jRv?dpZ2Ne5aJto#3z1{FlIgVW*pK zzew)Pk#xJ=;P2V#ws+s$>DG1M+Ud6M-`(lv;eAG0U4ONt)fl+{L!F+K&OfGfc&Cxm z_C@f;y&g4s?l}HNMCIi;l)IN>L7r!nAX_y!;V-e?~dw!1pi`C@^;oPNuQla^J%->G${pt&204lQE$)G=9i&4o~?NbgGck^ zPBZvWq15w>cNzVnU2gu_u*+nt|s;7*wJ!6Fbr$#tm z0sqco=~Ml}kpHbA^A7lNSsqaad50T@C#?T-XVE@(PpZ_zx(>vlutE`xu-;J;(o zeH?r%!e951V)YcIXS3wPAKl@W@qfR=&BOm`n7?Z9zcyrk5B`i!85jJC(){ZZws#$V zoEo_s{S%)@tv{t)9S^?R=izcR4t$Tfc?A0r=Cw-|H2-S>Wq6KYh2|zs2|h z{M8#gT!+sEf7uu7RUhh*2Jrj-P5NEUyWM`#vfXYwa?mIjYhd1wF~Vn&Z`*gfaqQgf z=9BPlH@%JWl+xyJb91G6#3dc%1m38}9tp zu={87>krab9C;^X{#eg-(TBmGf%cdBW2b@NzTU%q?6bhXu?}H|%v8sGoGLf?*>}42 zSlyj&`Y!~(f1SMR);lFVY5YRp>&G=+W>>AwKXE zmv}gx&%e{C1MhU}nN4@Pb;u=my7lno+TT%#`&EWJ+YEQUWZ1m}{NYLTekZE0fq&=A z==UCPso&h>#_>LwKe~9i`Xut0Yst4v9eCu6qzFKvcTgR@y z%dKNOjW9&+a^v1he(5@d)??iJljU6RT@3Rx)<_=vPNE&^G00b9yfYny0)}dbgV=D-F9|qd#0@m@hE+R`3PQGG<(6xWD#p_x<|8 z`&Up}q0It6_bM5u#K0fATKEg^cKZxh-tFd@&yhO?(&xPHZnyt=>)n!p+Z3KZt>m&C)N#Cg!9?{PBX4~FZg;Hxq{08_Znw|* zg2BHA{;hf$cfWbJTi$td~lCF=P*izv|lygV|(1b=qB)cQ3rk&ZP_Jz+_vn>J??zP)lN8-x^|D7 zCfDzA(`~zvCc6xodkpi3jP!ZbNS`P6*mGaw)YByMU23CS)u~sZO-I-kAwMkM>h?u{ zw8w5|i+SBvG`j)v1alKZPXj*#ehd5=cnA0kaM?W@9=hj&4Lf#z z^|r6=*l^p1`*wfhfvVDmT*^*M*eU>wD>x^URSWbEJ##3`&_E{OQYqS(5-hn=R!1>Hn7lP z6X5gcQl+fC?0CL1d}rHQ7y1lRYfu&JIMQF*GhNC0ROtKN^eWnGeS}bU-0JcANh5NY zKZs|Oj+S_D52^QwyU|otvP!VZS*)hDq`9F|9#-PV>VzB>aBQX;U6pX^cgq{p{G*_F z#nGRy8s>TRFwdLtoYZl65WfOLF&^nISi7!4WgP|gpZCF@FE|GKcxR+9$4+O?7<8aB|NERW(a#vjYZ9gfNa+v0hVm(Qvw8w;UX_YMQlfoehK+ns} z=aMWUK?#EhS5!H1JR&h>n!&Ua0^uQ@lAOhdN^saMl`vBwPjObA9&b7qoh~b*5hVs`w9iZorx}ztt=_g`;D{;EzYTOi~XOHJz2Gx$+b>}WmQ;vLdE+!RJ8=U#;RWCZO65)a8(U1 zD{9i8c#TJ*nn&Iv*t5TdmdgnTlh(U_4q30 zX|F;5oO1%4uv}H+1$1(WbMg|KyXP>ews0g639VCYjbTTxBI~OQ zac$Jrf?KQ0%$V*cHL&v*`gPc`p48KuuZf5HC0wH?X(`zbfgR!*rRt+7z^}7Hd2xq zZ-@`4FlDLs;^K$5W4_5F`ox|xQWt5fVdQ;VT5l_@Y7{rnueQ%|a8g|Nai&Tqs4fU z3%M8+*4h5R#A%G2b1TSsQF|7Qo63$=TT7sibHO@c>l>GN>Xt29vU;8Bpk2jnoI@y? z+k>5uX?0FvvFZcipq$%<5`w%ml|tMaON;g}I`gSdY}w}r@R2#3bJ0v^QvY5b6(pLF zdwuc3_DB!wZqC)p%o2f~sH>R}J#c%`Wu3$7aT>jHd7j9%I=sOUA2F%qBmpYEq&GS$ zhe4(YbNuM+C)Y(DezC8;VSA6`B<=`N7|YRLAX-WkAup+L7%>+q)wX02DU8==&9`YShbg4I*7G=)&6*DW`L$lKJDZdr3PxKAzSI+5~evX=b zbXtV;sMCgxfK!JgNU^bfyb0MYPqC{rmZ_)EK0wJ($!_&|Y0NKP!E zwtPCIcsE42V2|oHR-P(q|5;J=uohv@IdgxzOvG5C1v_^ z4xRc)rA8W^b;@e<;v!pd5r3%>fs(lk3;cHP`=tBmEX#NK$fE<<)dGD}W< zLwdlSn5&swt)v|89G>CIQtf6}Y+gO#p)379;}LQW&Hm9DR{`!1E)BqeDn4!wPK(lR zRu4=wA4PO-NXfANNkvMphSHLE&v1IAxLq=s+ZBe}%@H|gqT~JhQ8AbwWkZHvS_7^V z{krp-?m^C?b2D>TCkR=!Pc2dCQ`Y+ZMC#Z&aWWJlj`g4rLv~n$g3ZVH`GTO|kHQG9 zDL@<6!Jz1B!v5HOR!!@A9M*PDcP@xsF8k5Jtqg`8zrj1Muhcu$iRIlbHeTi0_;vbZ)fMb}|!BN^6*L)5yJx8IQCDB#`N@eJhfG)SA)$lK8*V){lzgqOF}90>QevI_IX zbbfb3upgo2K$!Ok#1af16NrB_v`M9F{@|pv?eUGoK<;^;9yuW#rN+{z$OM}06NG38 z;-rpyN4EOBQIDM4tk2e1=53dVfRR`%!x+iVE5t7e#G?_!Qjs=j8u5rc7?HOba^EQp zPEo+qCA^iBhbu??7QQTVc8fJ_ds)5*240qLe&Ltpo8#t}<-6kLFN=~_Z@etJJ08*ZKYUqqfjkdNb8s(%(mdOnFN>~@KfSEKN&ZZ9cx3)e zbby?y?z1x>eu z(j4SHpfvyZ2q?`xJ_Snijt74xI!t~KN^^Zl&@(_!cx8<`6LjJ$qWfgZE28_P@D=n^{@^Mf)2lm=mM7PP8K=VNF0Idam0F*jR-vOm> zt51MV1N{kT0qCosg`ochO5Xtf3_2b3xL4OGQqDF3lx9VWeqcm+yXg8y}OW@9w+xpwzcwO@R@!D^qH9tl={n(wyrVoW$r}5^9!)5ze4+I@r zt)>+gW|!Hsa~2uHPjswixaWiDF$g`Ak)J(_kxNE0OGfhqWpseFwxc_e!`R8@6N(D} zR$pPOA#@b}c}RgnBOdR!yQldC3#-Y1OWD%n|8X@4;ol4_=rPf3k6}3#WbHFK4 zK^DoO&mXiaR9TMeR<%Tw&Ya=R-DE_cCu&6h6Rgd4ozuFU307OX+wR~QjA&jLC(&eUK#_X>ec6t7|-{W&T!;)N(>=Nvgi;VgQF4-`j&ZA z2T4P{>6pB5o?j7bVo+ROscOBA!6mUp5!B03Z=6m-C@n?D(b1h}TTxs8xQfm*%TfpW z=#$lgNDmU{Kriv0upjL6R@T&3CWU^@efZ?5>cCH6zDXT;0mQEkyvSrC2|2|}HNSy+ zf1FUNe^=}K)%xE5hO{r;pcydleM8!XE&Bcwntoc-Yc;ih9i1xbQ^Bz6=~496e8vpp z!wY=@q$w9Vn%$3)8BM*)d=D9x81uc69yGzEu7JMkwZtevsqpK`CDtVYOS~PK9M&hy zSb5q0>}(p&MxvYO9$o!xzo?$*!plRcY1L=ZWLKd0SmJ_SV&b^wZI9@l|KPtz>9Q67 zbLEcy)Yh%)(MKNz*{YHoHlP8+f0B%oDmhnfl4QWYB>%G+-z8a=o@30=wchLZ%V~N? z{_0O}RMkK^PykE;&H%;(Cjg^>!>2W>w}C^z>%c+ad0@YReFh!|?g#b&JAhk&D6kE< z8tBrvOq>4;$Br!;360_8j|NKrgJvxEi<&*a9Sg5a0*a z0?U9VpdP3O%7Fr43UCH69{AenN8$vSj{**Ze;YUiybc@$o(J{=`+$cjPo4#LfD?dG zz~M7t2RH=04jcrY2lfN|fQNzmfjz(u;1*yTa5Zolumwl}A;1r;1(pH7J>y6;!Mq-* z2Fif~Uf-qwfb~_pl`xclO^Ow%dc@ ztwGFQKZ^WtcyS2xyh%dO0NrnxA2i~AZNv@xU`kqx*r~z%9Tvz?El<|64)(fhf=gYyegP)n|+U@aY)Le7`pT7mgjJn#O?>r!=aOz+Waes^0;>0A2!~oh)VPanMJA`+z&O*{z`0 z0apQ+0)0Ra-~(0zivSOB4p0K*0%vNw9|0W;B(oaTAA#RwiTSHpZuxxy{L}jW`=AeL z{vObsz|H#pTF_4d7Xfi?76e_d`Q@6PYq(vj`I(@TfsYx_{wGif|4ztlRCiP;;2B^auou_^Y|k0o&Ni4|32XtPhKwKlDxe9N3zP$SfCWqh#%bB-f&Ir2 zHWT|aefSt;2eW6}C4c92t12r?Wj5R29C(7Figcd$ScP3#nMz@3xR#bLw$xPl{FWkv zB{fxs=IN=tkdQ{>x%pd27p&zNZ=)fsJO zyF{L+1*y;ulTWliCwimqq;N10$9RVyt1Yy~BSgdN0Il2!V+Nqoh8vn^z|2Q%oHL z`?)G44nfcgQB~Y(uzK4Y0YW0nrTI2v&C=0Q_pLevg6agIQ`={P484{e=FMe z7L-q-z%{@YpbJru@AS#T_Ic&~Pb zbML*T!?A?vXm-=xICn{-`Z?$!&|d&A11|v20AZjL@B!gnQ z_$sgqxD|KOPG#kH{Fe*WrBC`{_B1fBz)1RewS0`~yBfG+{tfUAI?!JUtTZqj@dv=cZFSPnF4^E%KfphP22 zoBs>Pjb!pQo0h=8KmB%3SKZ#K~Ja4T;z6G8D z?gzF5R|EZkf92qITVY-eBBEcd;$)-hLh%!n`%j zyeRGdgtYrNgQ@pVq}|)@4n=pR$zPUs-=20qH|_qcwEM$dsrNrkyWg93|JCl)`>WFK zgK78k)9$m=?nkEGzdA%Z+w{Aj>;0%R0*&fpz{B9b1k43425v%lHv?@zHE<^IZYSz% z;8EZ<;NyS~s0XrvF~F}n@GgKmflmY7z&F<)iA69k22KI~8~#5B+z(s_Yy?&Ue?>T6 z0`3dJJ>VtaS>SQt5nx(RqnZSq3Y-Xx1pWf^-vPe>p2GcOz&C-f0=EM<0iOdd2QCCI z06Kwnz>6D>#8Q|y0&{>Fz*TVfQlJm$0d57Z1AL*u!+AKHOzn3C@ z|8K%SI$rzI==%ZL9iKq?O}O-E7(WPxvooA~!^!+TV2Aa_je=3}zdvlZ2gCNhBhB^< zVs@<9*FU)VGur$W&_jmI+lF7QX?AxH;@16!*)5u%xJl??+@GNNXj&Y$;QmTr8}K6T z_kz9-`WCSL0@wvz1v5Xe4|t|e{67f#1~3Kg76aA50$|xD@qgTA@qZ66YV(odJ);-q zy)Hc(&KLy4*%{8g;bi_Eu*3Sj&F>ADYHR>b)7UVC>|o~4YV-e1Fys4=z_V%e{eZ%^ z@4`m)E#O{Y7jO&kdEiQb>YR%~6Ttbv25q(ivm{<;O_5cnl<5co0h z1n?c;{w-qnF3|13^}yA@$F+ICri3tfzrJ4s+N${m&}yJm-{*mz1&jwWwV49_lMd%0 zO<%jvb^Arl9{{Zcii~If6PR)#eFIjRnS5Ycm7)W^tu|*-!8%%B(#BhHi;C9iMHaMz z!r~nwd`3Jy&5P%=%B)DNN~yxsH5sxahPMW|+DPadb78_tcspG=c9;F?>k7mI{4hv* zEIN1xq$<3?YUBO!B(p9>o;Cx?>IW7;d}{3|RPj2K!osm*$1b7`RBVAyLDYMF`M6$q z51CL92Hw!vvGoyAIzuP2!}XA#^gqT`;YPT!BFGzbth`XLJ3tG3vhr1701rIsop>!tALF{ zfjHiSDqI4&C0Ykcnp=TB?bjNXi6>$~*5zSJ(Gis-RoDZWW>vV&Z0)=r?NRfod8JvGKtR>vWx6klJD->TLtwQ9zCv<@rB#A*-F8am5XKS8O* zi6zb#`V7m1*p}+cwk%pOs0w7ulpag1YMpl|jJ%Xi@|j~iyc=;#?l{lyk-7atrzxFeMyak ztBZ|GAm_yxFKx7{*`!9~^bHjaFDuC4V~%51u)~T*kYb{s$+lZ4+a(=a7M0BcOH`Gx zsyQzlg53l+XT01`yXd;n=QaGbYDw9c4jJV|eoA>(Y7WG*i!`*b#tLfwcn4gHTOTA) zrdud>ZS3H>HtpoPp@T`)o?T9@XdtHZuai#n&a1lvo8nZhIJ_*9G?Lk<7#+K`|5R^e z9qZZX4fWElVYxrzHIaSZNXW{YL*kA+qtj<~P3$O9F|FzjffE4R9+_L!bk#vmM5ec+ ze(n+NU4{!HBx%T%a&MHDyGo+jIafch5_AM?YD*(>Y(L0VDXk(lYF55A>((M|s0zEN z<7MHMkp7dgyhjq1ekf|?QQyY)B|kNNwa%ikTHaP+WNNx~Z-n0@sE0gx;>W$-~VanAhNdkTC%6p`Mc1!fukyurBoOC<<`o>08`}zO3 z@Pof|n3LBFeG~KrU>~qon_YT+s%#kd71uSY4J9oPKxVH3jDWrXdzFAQ%d-Tq+aIoBQC-bDR;H0Yn<#;>(ITi}06J*T{>OU)Zw z=JQ(f+7O)^Pfc%UARNGGL+eI}t2zbYCCgiuH8ztL`spEWxRVt-^Fi~dD+38QnNky{ zROe0`fsQyGv!HT8b1khOqdh>alD~?F9)Yl^81zaLNEHQzIaB#U!DxE~V>|M#H>ztL z%hwg~b)#(!hJ%T?Rg&70DQ*^(ZWR@^l&Z?&#zFMI6=B4gYG5skZ3>FkLtBw4M>4c2 z)0PZ4YQtSu_;_;~{HZ{{Lc&C;yH5Q?XU%^VeO3;}JEqOfE68{5a+Hi*Q)T0rpK`qZh@MMJvXD;D#(PL?ufBZ%Gp20E0F8=q`>F7^NwN4q2f)ELX+JkZ|h90kQaJm0NeaTQH z5>4%|k>dKSEh+)?_DCWTK~e@f5-P^INGo~Jn&m~qsOpO$-u~Wb2pK&Zi6vrG!lGVu zB}pZHh&HmEA8F^2nWFwlM*yW$tF5**xZ62hEsKz94~(UFg2*iZ_LPvV5mp92YQ8tt zPW@IH3Z*-SpW|NEG@UqE1y)v}Qw*}G_m!1W46+Pw8@2vs+k{@cdSY6edIfj~IJuxr z6$24~ej_y0F;M&We$7AV{czO&{r_@5RQ%1~aA`K2+sA7DLGOp7_V53f`{Ck0oSgl; z`rX0JKR<-|jcMk$q}^{%yWf#^zk3LGhx*;0CciiB{^7LyN7L^2rQJV~cE3OE{+YD< z=hNZ=~HH8YVs7#`8Y{f7Wt;(e!Vie*)go_kY#&aGHCzDy7_- zTsoMF)Lv)S$Z-YPy{f<>nas(~VK5lV_jqI7a`;s+tb1mI9uYG(+cy@@jLr6EszQA( zK%vUidf<8TkrX)boV&{QS=nXqat8TZ?x#Sgi%B0|_OBb&XMn%FDfC#e_cz1K42B!E zz5e%U|ASza_OlXnBEVX|D6wgDfv#tnRkpzWKliK{^5OQ`yj$EewzBCZ%)@q_@*4+NA zAo`<8W@eSO($FPs3X#6FS>;2!LA_TJnIQ)V4CVr!BF)-)7dB}Wrd~VU7`nJTWpr*s zG{WbfX;Jil`eG5JZ7GI&e9{=8isF4yy3A229}H>ZGDdDHPiOJ`OzQqyWktoVTpN!P zX#UNfxx(Xh#&drpV23V3@3A{zPZrv7AywHCtA#)CWV*ih@E0r&z-rG@6^5}CrpHMvlck++@vQVLfwzcO zG_UIoBZtu2PVt03hSTvFtcyTu`goD(PQY(*Z!l3n^Ji7X3TZV! zW{yYBPutYz#f|>*nwcX?yscm&Glx<*GpCmH4H|BzyG!*`p^-~7xgI1vmd@xgo>rDr z(Ts)aS7i&;PbwCwCxGjL=Wu_t`cvvxQa8#Cj(tFfoUsz41s&;Xos^g>9+hts@S5{feS+4|r2+{Fk!T20{P6u@Kgx2>){p;DZI4{4- zst@|<+f!#Cq1`N=Glyj9{6e0Wb0_khVFlBr>I`iu}2LNNLL|2MJ#|h9Dm0Vad@Rmd-hPI+oL`aMj>;1obo;zX49;8Jvc2 z)IIu%J}6h&@2J9k?iu#?b0f?}50aT3J+B;R_uLp)3@@4LkGx{yEx;GRbh;={kqp@4je0;)~O2mRY|UIk`k~GBWy{Idht8 zTUJ|5jV+#~R&(RhrKBbaret8%En42P%v!l*k(ha!TbHf2<~1#NJ@;An1`MiY;b!%aEELN)6f3sr@t z=~yy|c^GD&Pcwh_{)Otb`-T5EO;3YNcw;<5=R(oX&U@*3@Mw9GerF8xe7N6m?hp4n zc{qV%{83J#S`_(6SxZ}M>pau_)6cKcpEIXZ-())XR{fE_Fow$0d#86-p-CyQE~t_t zzEBFi$O}CClvc^>c@(N~vg1|AFEh$XpPuxSV}VW#$DApe-0XO+l74Y{$X}&YTg&pM zCOYC#c`B*z=CO}5YzRfXiIgvNvXHDJFJBd9Q=fV!9fsgQ@g`pyNHnh2l-}uU;DU`T{jPyGiGwtDMz=cxFyZBy%bCgK}y^q0F56V4SuSSbS4QvpylU zxR;LKjf7nb_7mGcIh`Up{j!z2sh*Z)o+UKq;q}?}stoEA=-D8ZsZPwaR8uW=@|x|{ zhV9#xjuQ+@V@doH1cdrmJ~@Ky;ESk?tKYTaja=E!s1|pJtpVa@!HWpiL>0ix*;2NHl3k7MOoceA(5gz`^d5J!LxAA;F$aE1fG~l~-Vqsy-Eu`INf`%Nh%x z#%8K$Z#$x(qBM-+LqPDpH_~zpnh{ibX+5o9NkA%|i1nfkMDyIEdc*NxCvDr&1i3`f zDTWHYW^{?@G+>2T!J&{BZ(#O07haT=tGJF=!48$DTP^d9vOTlj&L?-_z?pgZTc+lgA@i#d^=$|GGE%RpDvzKxI z6K(cG&_{r;13Q76fNS)#%Ru{qkiPe&xw8`YE!u2e+Ot{uz7TXJ4Jn=Bew{sD_VQph zV(+C=DsNGnGJiZ0SRd_;cde(45kTeOkHi(7rmlLtKGo5oJTuB?9C_vp9h;eQ1`>=a z2RVkOe3mO04a9uNO%BOrmWGfX>8!G;j=keX=e z-x6N>*AKIPHtc89elcz+Q4OW4p-eTDtA-h>p+YsxR1KA?VHO@019)Bnff7iRK%@jR zB@ilsR0+gNAXf^xQgR1!rI0IyTq)#AAy*2yQplA;t_*TzkSik(Ay)>uGRT!du5702 zM_Bq1n0|z&AHktr6zJ>uBlb`pM0IPP4*gQyeC_A!X1;pDe$`Eve!6U?3!P|%xD(;% zcWZ-g!z9!Tmz&XP1E~*g45Iq$Zbsu8qyss-qp*s(Xg& zu29`GRd=Q8o~6(pH&b5&uQnk}eZVKo!g#wdt+duuSb7s_TuU?a^)YWJGfVJVy;?x? z5NQtj{h@$Z6`m~!Yg^$rEHccp2y?c?QeI)YvMUe>Aw`TkP8Z`|GK*ord5GO+QRd*p zsuJ;URSA2xs>JqbRjGbZDi2ES2lb>*zoj>%mbNTG54N}SD1`?S<@3W{ivpAfzm#bNt#a4bQ^(a$84agzH^GP#N9Bgy1NL?2Ej zKS31ke2U}_B$L+=eL9)^0@3}+zajd~Wb$`JA513yK=grR^3O!?PbU9H^uA;= zN%R}Zdz`-mc4A18`*eUd2B^=YC=*Jp?#KF<+Fy8b&+r0ahWMYIMNA&Zj_45~q?n1sIx)b?{ z=#FIaw?uDGCf_0Ym1I(_0KETqtQBq_IU{G*+>(r( z;<=?6Q%mNSXG|@fJ0oLi+1!eZspZ}E8B=F;H)TwnId|r$fmL&7W=x$mcUH#K;k3o-^KH8f@n zWHl_z7?|8}ZpOfrhNg^x?1tuyft-exjDg&SMHvHm4Xqgi`3;LR2BtPF$>^RpP~oKi z@%U?2k;fDGfCWRb_iHQK)(o9fg&u*B37=WgZlGe8X)nq zM*8e0;|CuGQ#9@B3ZV}bqOnW~f3S?R8|{&v0(QPYkLwGx2u%p6mgP+at}nYh>jaE?eQU zGhMdQW!-2 z&U|-_i7(6~(WlyjoimWz%Q1@ZMQ6%&CYe;uDCTP^U&Vx;R#vciMG0T|X+;@dS*D_b zue0bnvmDo1Wu<&2^I7F&K8sy0DYZ$7kTN0VLS_i55HeFpB~8S{B0b(PqUS5@K@HFq zEo6gAb=*3%VW_}f#~5?#`ZlM&yUO6NH~8BOeviR_)8M~n@J}23iw6I?!M|njhYkL3 zYr*TW@9`U4^OFt!5y;rX*s|<_k3c4ERNwe;ND=%|8hFHXY^%aPeyXRXps}{Be-! z(fktdam_CSze)2e!C#{J)!;AJ{95o=X?`8}Yc+o!_!~689{iUy?*)Im=G(#Fsrdl- zdo+JO_y>&mep~aq!9S+?2f#mW#PMlu_cgqb=QaOx@Goip7vNvh{4c@(TJygG|CZ+8 z0RLyr{~G+entv1gXfJquSp7*}HxEoOcyBl!Gzz}7Or=7~grKZ!iUmV7)va|BbjAXK zZq>!Ab3|r_O7zCMX@ZV#E9eAvKO_@f-k=!G6jCW<7F8vcH0?>vFI6X{d})`eMN?hn zP%}=~cDn*<*Tzy2mGed0)U;e|mPtQANLi_Nz-G$qDvcScLa6GXN~E*BTTumq>I?N6 zP0kil-PTK&cvldux~}R_)6J+TE+H1RU1xh~SxG6~pw2tr8$}J$9f<|JDjM@C+CC9L zYnbo``|yA!djY9el=FMbCw<{RYO4G?zxyTMoCHeqS0D9DIX(-Nz87VK(l?`Npftx- z3QDhjmZr6S8Iv#2bdg`i-pfEg1lk6A0%*Hm#@<0tIu<<)dJ5=9O)u2+U)1y!O@FQBey{0YL22&tT~L~% z%m}pc+~pWeGeK#t@+43?7k<2^XKI=S`Z3S~(9=LmHJurdIfmJq)`Qa8gM|U{uQee4 zt@_GoJVhU)R*3ec}kU=%hs_!Tpoka2<8>hff}%s!pDb>*Xh3j_bm4i^h#m ze;fBVT)iLZ`p5{?Ga)=-gxWe`E3($j6K(x@$?PK95m9>i5m%$$g;^&v~C z6Rccogvzt>!B4e{z)!cPgDc#w*a6OzqfGe^MGR}x%t9XPe#&3k0T|67txy83)fV;go38=Ecn7m_C@N2t@17Ov+c=i=Iy3?%KEUVfPxROYF?Q&~Sr$@&&5?`v0N z7fp?WtgR+yZH?X-LO=TU+i&kr%BKIqY+4mf-=S#LbAmVK%W6GeZ!8{(sW`3raXynJ zY?Wzx<&vvDA-B39w?-9BQSNF*W_$DZ_;d)H7%;DihRCITtlHu z6>J>quOFo@%$quWau3FM`9dL~@Lct)3nnS$si;7z%W_HHYv-gmo|INuwFy}_0>fdsc9!>CWj@;fBK};}IlphE%B#vRxUlM?g0`x41=UqG>Wq>W^@GAxkXfci`m^_ocZyS~jb9cY zDf>b3A8BrWy*QN;?0CQ5IBqlCx&-|B#(nt^aU_bIKss)wUpzgBYLi)9n*?cf25pUt zrPe6;Z4IY>Q#XGjpG+ocj+Ev_X-<^pL1_+@=09ofljc2X&XeXdX)crIIcbiQ<}+z7 zljbpL4wL3DY3_35t;uA%AEECyGo_k!)GvjnzS-O#p$uXaME$c3pKfLe>Z9#>Rb;52 zR{yk^k8$KjsN=vF9~K$vs~xUuVV?SFd)^guUQGOw@Kkr(VW2vE?SBY=q9Zec>vZDh zDyiE?DRGnP_=jH;bLzkC{dciTeYo8^4AgJC@jT(F@1_QtIfB#=v*R+su)D(GHyZq@ zK>v@0r#_dRR@Cp3bWq&q8kG>9`dgB2vfgvU{$@_IGlBghTR047fnWAF3D4QeO$Q5j z>t*3liK!P)lK9fzjCY(rNDZt+6MLrui^mE~J$jt%aNiph%Z4?Hy_28?Y zBJ*T2-{D87sfL@==%Uk~zO!GW-*usqG$)?=ihC*iBjnq9Q<>PMKI3Jd5r65Mx}E-| z2480I2rPfxepC2lUlb+;}Ttw3d-@QZ7iPr2{TZ}7BWUBanUhqB``Leb~l-Q_LpCM`zU zeuBK~pyB@cWJ%XW-OA3}2)mLpNb)_v{Xdob5LR}YD-}_0n$tcRJIya3`D}5YD*4@$ zTDYDgorZRrQ(w{!XD|5TNn*E8xpC=NZaUL83Ol}=f$|Saye=dIF8j$OeK)@HYO#Bf zV?IJ%jO(~@V)u6C<|}G54t`f;s0}%&-xswb!b^K1{JY#19r})z`If=|*x;Wv_=gPs z8H4|k!5=XArwx9;!9Qj2y9|D(!S68m+YSCJ|A)Odfs^a1&cu)81zQ-f2!zEJ^R%?J zbXD)0N{iJ?wbWK`>P3>RmfN+w>MnO}u2jK5E4wlWXM2BCO8RX2*U&i z2tx?8g#lxN0ka#2am*Tr&HwK^_r9uErIuu8W_~mCAFBI%_uTc}d*9uca{~0+12p

^%(gFCi@~&#$GMcN_X)y7^7K>&qkR=8M1kgJCPt#009!n_IZ;@+=M zb3fS7>vS*Jr@5b8_?(Fk_mqA50c+0w^P+e9=IeBS`kpUX_p4RkvN@EGtt;D^A!06zhK z4s6)!OxTMCWa7b_c+!8UcS6kNJo0?$;N3sNovd;vLCWgrh62bR@Ee?H^wad_`8V{Tn2ClF4gsPF(9tOF*; z^2KDWNgvN#{tx)?$0T~K5JeC-UcRC!91Pnd{nphU4XVa~{sIP1+dpG+-T-%S=BOv^ z`^H8v8q*6}m13utw76Vx<8`uO3z=s?i5R89C|ixvY?OUegy;F~N=BjRE~fKkFSBAU zB>Tk_Zq}{8=;BK*ea2;%Z+PYv&wBQAuH5+CUwPj1fAs|~e9?=qx_Z+~{+(UOc$WA_ zaBFVeu=IE9v39xVL!v4+`NIG?+`ykx3JOy_?rUGtn ze;WS&SK=Lr#}=*@n3DkJQfik^Q^6O5Gtvi)icdCEg zspPs-1MB9N*3BKL3A~t1rI#}~GK=W!ijY0V>|(4~aH10vV-r%&v6)B;d5wD7k_X6a zM&|i&mlK(C(v7e)Z4aFG=PGC{!2-Ou!Q(tFHCRe49?cA+uN{l`6({BoWv^d3wls1} zVLUea(ycrT(;BJrD$%Q_G;E7F zER&IvW!1_XEv{D*N+1zk2y9?ixsM-5Qpqg2zbdC+Xk1BUi%`=5^jVta$X+Vt=8QK~ zN}hy|U^YbdWa*T14a_(1GZz`%Tr!=K=9yjBo;baCzs9v~cV#V*tbeyNTHAGPR&NfO z)oQwHGv|RSr|bRr!>$KmY>&qh3*~~lT-vTTkhT|i8-iCbpf9@Srnue|3S1nLXb-PF z_vdq|Ogd4rOOVP}g5`BPvxDEu;~E3pcAm#AlAW<`=OVlgQuJoEH%Z2dTma|#Iqygy zDII6u8zFWglp5Ci+fpjIh84n$>uE$+nXbM4D@TPq^pP&C*5lKRrl?k zc*l0$xyr^0+Yz+SfUa81eO9%Wy$b#G)cA=mmx{5f2Vba>=VsHIJ$etlDV9u1(^9;= z;H8r%OVe7dI@hXJeikH{1?^oClXUbOx0KUGSMNB|qT2}L(QAO3+0_dvrs!FYROAl~ zFWy`dp{LT)7;cfcH=o(N|HR4AZIzZHcC0j&AM<*LB-R`6OY|oP+-PcW?ofK@=Ia&? zXNI#QsNRL~TZ$9jWU0KkbZq(f$_?8#H|z>G?%lujrKhiHo@tU&qL{y>Z7~yX&5rct zLa`;uEpk7f&-tRvHiZPAEt6^HrjIgs)-jYBSxr^8ZBXdV@Jh`OX7Xqye6GOysROpd ztlH7WIi*9CR$4)7wOBq+sp$W*7;I5#i zu;O%9CuQc%S~s*UKp!z`+5o?#N3`v=O>ZubGK7zmTZCg}f>jfa?2Bx^W-qPKmYUD5 z91py5fy}JQ8WHbkv1c;vl`IurqEfrKy?3n%;#xlTMKrKAB4w-RK8d3&hh#pK3CZ5j z{*asqoeT*^-DsX?$Hyjzjw3Jg=&~mdMTdu_e{5uOJlZc)BjW=@6S7M}G8G*eryjL& z0p)Hv>t;*&lBJ}7K(Ef)>slkjQ_+bLDaF(1yYwnCI;;d+=7P+{TYFmC zTkIh4_g7&(mQ z=2YkDO{%yjrr(wLf~6Aq!U}W=4aAx;E^$7ZLW#&sDO*ql&8$>2dRh4)?8#ni=V+aBrt#kS2187tCL_$r?*TN*fgh3Er@9DFg znolQ@84{nTh8?_)P^sbShQv#HFPJ%;K>X77N@Qrkbqg^skxrvXNhl-tt zUkMDLLcC%e(p$x$WIlvmG~{9Ek(jSaevm|*4d1-0gN%eWn`mWx{nEVXc*L|~TtxEQ zvjkpeyFd~mUTdUzS122g>gTF|7LLkpfAi z$`u1-7--aWH&+hXc9s59>0%ZRNopBURahb`UxlrT&2Ieu4ShBI^d;Ou&)g9kihFnECWmXtN4D1!us;1wN80!CUe%3CulUwoBS!Wx+47v+pS2yEE(P>~yFyj@#?icto!j~f!DBZ-kN@``njq><#I zEI+x>mqeANhMyye8p|OtVw+6Q6=P`Tl6aGUi2N>7W-aHSC%hXkdSu4K?gKapRVgTN+YZ)G%WVD^86A=cLoXDXq1PfNDrY zDh?x6Qxc~eGN<8CTrZ(bg1aF2lxX_ra%h6ZOu# zn-6Md(}&Mg)tNb&HgBntR3<8tf?qaVk<%fbwm_XuEwJHBEl5f)#HKL8gN3;tkV;sc zDP5^#LbaC9laeeHElS#SZB>n_(iKY2rEmu6sTny*qtv|gr7sQLdh4xHJ@>&gD4evZ zNjhf+Y1BY1p_^A)Z!)Bkc`?fjp?S2A3^8PH)rb6Q7V=!Q)bk-!Dh#xedG)P4u2acU zMS~$+U?n@nPoP@A%}C{Cv4pYfE!LbJNP+pCDQI1qNzOE$m^m3~+Ij0t$vFuV>yRZi zg{<{f_z^vs^RJ-HB}J=?9@yoX-Gcpub10&L5(Gk3^4Uf~qCglO~{K( zmSUx{N1M=OKr`Bp5zkRnwMoi<36&yKoHB(LBZjY9=%^(|$0kEd5qlDkZ#fn@md+%} ztSpp@46=?TLxW26Yc&k@MksE#H<=9eE2TUx+|Yn(%w_h_lxj59`y-R6n$~YP(r^0Q zP#^Oslj(~kL*s_*j}<}_hMb5M-O#Y1b-Ea8jErm7yU(bTZYH#B$#|?7I&SExc?|tS zyCPGuxMs*!pQ8I&Uo(j2D6~1!uf^6ztjTKCTOP5@_*VF`Dslj-%xhyczhDSbK*m&a z5;`Nb!xPgUDaRL7v^2)zC1nD`Q37-ecwo?^eGMp~z+%I<4wO(xl3tew0oXTy!0=EP z`KVU9(tsINZAcLAG7WsMUXZU1Nvqes0i-`%tQ#w)b1AfHnuuIVOr(^{NIHu!RnRY0 zsmxBALo=bKP#Ck6#!x7;$$llIuJe(+8nwqv=5&2AQ#o(%%-g;+}hP0 zYHRBVx3%jG$6evzwCaX)A)QX#j7f&h2|T&kQywG>7zJ^z!ucUIV*Rqw!iO>^4ecV3 zWb{D|x$b4MpfM@d>Ld7&nb@fn%pHrEnq*GtVN%0NDHAV>=@#^OX^ z@aO@DJLO!+40NdI^&#{MrOlxXrccRO2!n0q5{^m}O7Q{g;sYgzWA9{sm-QbuvY%)d zAmPl{QQQSN36)v;!W^H`CnC5In{y3W#Mi>)f*RwN6gz3Ei>OA)d>F%FgqV%zGaj|5 z!8#iWnpH{mMNo8mGo)obq@BK@7U7M2*hAVBdm&9e6PYy}8r-n1{+PJdnNiMLy&1X7 zx7HgXH*X0U8$K69mG_r(WK#u&%O7FOj47lM;zDXTohy_}Ve;J!n<{IJ*}aFARc=)a zdpDM~1}fz;T*}w@viTfVA)jb2{I7=gfK2ewQlpi`V5DeL>uWTkMOVis#>UsEjRx(d zIRyz@ix3+loA^-K^Qmk(h4K?#GVORMM$YRYpP`uzCzCIE0dkk2V+pbb#E7*{s|8Q_ zOli^8@li-?Ubvj&9G;C;I3K^6n-P^|Ysp}Qhp}^Hn@WQ7rNE)T#Mo*s&8sb#*QPL! zN-4>@nJp+O%1x*cOCywQ!3&Vizx%NoUbL_0!H-NR8kjYVg;*5 zYnsj4H5!bYSe#*iS7yy@&g^bv(LkaQBQguR-pK`>te2IJE*`lLweiu}(jt|$r);J| z!zWq{BLPEOa9J8v|m`7)$n>R2uqjai;Cq)|+U zC?(lbn4RQGtq6`ogJ&qSl9MYhNj{rP>!df2Nw1D@`AE9D zgog+%O7OHjG*+QZ-cv3K$$OPCe?CP)bj6qsGd(5Q9uAEUkB^TZ86S71#t)4T4~-Xw z3qz$sAyY^f;sqi5eb+oo`8lpD6&MV@ymndzin;T*SfoJ7j);6AhFN|{d}i!+)?G-8 zouu1QTVZkDH?d2qg~cV&;%pOHU?SC^GW{uV`eTf21o%|meH^bAFkbD?qrG*Dv!m`( zWWKe<*jj0Q1*LGA8k1sPY#(M6EiV}PLd*5VMc0;xA__!N7oaf2C!;yG zH7K@Llwy$*8g)Iem^ShVjby@1Rl`;DVkRMWv{5W`R$eR{!p<&=<&@7#PrqET#B+Ws zda`*jomGZ>A&$Unb#^>nYtyW2x}jRn#*nMwQkB36GH$gLIV9fAR+qtVgI5R5+o)R*7X!Ot_=g@R+9#d4a4IyUlm8%J$%+Sk2mRfTyqh5x4nYt6|e?>H{ zWLg%>ErhHb$`C?Jri(fs_Cg$^gsfvs9OGm_z?L~jzVt>Ksd*yDF=L*S=7iCs3c0f1 z&{`ru-eR;xU5-@JaGmlz8;CB5VrE;gTGn04ou+2l4<(%{nRQsNXmqC4@Rkf$LNYh! z3_rKb?I>erL{{ghSu*1$FJ4rgZm%Sicf zLrrAH9wOgy7{qU`IOLWlW_?0N<0h6%Db?sAfwzQ^bfp(%6I7f6N42vhySRieeiVxM zpM+n;7E`W|l+Y~ud5A2;=Z)JYp%hoG*=&{)ea-pJkd!E6bxs{fQ!~ksuSbfJ+a;*F z$)OM3Q(-er9dFKJl&Wk0_==>p@RXL7HifmcBxserShn0L9<+D`jQmC%A=F|g7~yqw0^HOEaMYEv;L zDn-(a4@mG~i+2gt6gsVyP=#wqtjT5F*HEo~!*VjE8ne_T<&5f(xfp;+8SYh{hf1)K za>8o0FF-W?)!oIoS0hS((LB*#@@07x}xGmhG(= zNA2xw33;t8q4`j;HxerLMPO4bm17y*;8^5axiZ1kRYXgc+A;20YHj0lcNd=+cle@8II}BPhYD;OUZh9=uQ-fOO>r=jgDS}I>CF-+P57~KZU>#)Dfz_m!jC@}{ z&`Mzx4F{@2PY)U~(7iLWX@*8>DQ0N9JBG@uT8t%QuuMv6wzrRuK|Y4@V9lM4qYlj` zXp12b9yCK1m1g_%d`wd7kvfV8OZ99r#z!2F0fv&Kj})B@MfsqQ1qQW1vka*$9cTHD ztZIvV&^AXiR>0YbAwKwyNjjcHrI=-fnDrP9*4J4!C$lA*mC}q0DOTp$MfzYPGP_8N zMVcKO=Yw&XWXMrImT7UrAwDK5yKGY3Wm`czs+|?)w;ArAsfJ61MrXxF;}aF~91&@c z?Dx!iUdb;izN!lj+S$vT9*IEnYC2$7_XbVRZz_%5H}M-&&t79iZz^0|7Q47Cl|3B0 zK%@)HI%MGjhPKIN4)yanS7#nN_!pYQGKKjV>$oKIWlmGjx@sk_@KDtQWIBjpTc>>w z$2M%usd6mDDJd(j|K(nQNE$1LH+kHvSWtWZl6Pm;MB09D>GFfzzgGo7CC3DaY zxre4LXIinGzZsk`s#ZxpkP?6BE`Hao>-jnyw`=((ZXS;>73eyFg3tZ~Wuq8NXZ)=` z_L}H6wAEm?iyWiasb1X&_fHIX&h*q^xF_T!^Uih^5AV+i_UR!B9?g;m|6}c4!-#B? z0qK<~z2$UNhV*t3Pk))nHlv=K18aJ=M>*OWLFRfyTr5YV{G5(s=F27W`8T|&`(tHF zLV-`+z}X;AOpVLKKoU4&k+hhZX;N0G5oEA489VBtN)9^voNLlv>U53Zd+UZ4u=kyw z=CVoEr$mY_Crp&SxZ_wl*WSh+Z>Q){2Qq5Pl`_iliDT_qcDTtrIi=6)ks!Auzx@63 z_f&rVF)GWCzlnzf&?K>(MUPJj^?T@G55~ErJx!cP?2-Pl(V@|8ayU9M8XazLYZ@3H zmV<7oAB`_YL&wZSALX^*Key0E-9&83++aY%k#jTf#{yjSci3G~$HTD|jNd5gv{yDf z>#}F?8mf%_+W1q#&lb;(ZLq)Y_HnuDcB6mnwsHB)ZHE4kRbL0y1Cqe>ZEJ_~+qYKf z+iqRk%~Qoqb^b$7GrY@g9Y62)y(*vv!8HKh?c*I&-ks!~M&2*H#hUZJDeqD8ek1Q1 z7Ogq&p7MV2O=9jHde)q0e0kTB3r@U)ShD84lgfLSyaUPmh-GVjK+GLX-iPD{{h~Ez zE6)3vyc@}Tic8j<_g2~R^YAL~EG}Df-eG0K%R7@y(~33ceOBJt6A5p<&#f7 z`Rl-M0IvaFYRz8-`VQdLz@5N0YtB2bABLXs_z2W%tU2$$eiZt@13m_9w&uL)_1~a> z1@Lj8!J6|f?B7Gr{Q3mc?be*V)jvSb{Q4x+t=61(VLt^u^J^9A4r|V@eIN8^fKLNk ztU2$<-VZ(V@iS1v)|~fcKMVcmfCqpkYtFl~pNIZI;0r*=ng@UU<_p$*v<_Koeq9}I zw&vY+xXGITBi{8z;342kK+Kwd8T40xhk>sGacllH&|e3>0ellkSo3dz{xm;{4vn~3_K2e4@g<_?}PpU@I&B7z??PzG3b8*o&f$8n78IX0sT|p zXTZ;av^D?5lhq&n&ABB#a!~D>wW|(j&F}s1L8<=v^>Q!Ni=qAl)XRQ;z4$-gN8>@s zk?7=P@4+ZOTZ7l!ki@^VEYlJ{=gx6C{hD!k$E(kehhA;mUC8bGfu;;b&*NMO9mve} z<(Cc3nYSJ?y>{2O6F1?hgR$-Ql$kPv;aSq2mXOa<#)=Mb{0%K%@QddkwKV5n^%Ucd z25%?%*ldtp5^W>T|KOQ#4x)_AWXsH-E4Eb=!~=fn&WR(kWKnaL+rjj*oAg#ZIp=Th z-;B#J@TUJ-ix?KtSp5fqXdBO?Yi8=nce|MB3ok9@^=6(GEo#K}z)O$y z;>&AjFlU&%THC9~dkZ#9Ce^q&{@?IDKQ=Be`$#R8VOChfd@amdcjH!lA=KVc%U$XcVJoRgXp|_O&dxbhNZUKdTme zj!sog5A`06&T{mFG(kHU?VXxM8hx9C(Wxnni+t_ySby(uboLPR1J@%)L;V34>bHNg zABpsJBYoFT)oNykMxp`Vbvg{RjyhqkF+1TUC!FPy-oA8uPnQ!u7Q;*?Jl5`nQ~7L~ z8>%SXVPB9hwC-Hk>^6tZe1}YaewjDt%p1oE=N-zDLW|{uGyWJAB<9#fCFYW8Rb$D; zSiz8J&61fppG=gD4`2FjID=uW38S1&TBcokh^&}LM*|Jlf$c;*UNZCY_`ErMX@1f6 zo+=L|ouP-E?e+-scKq3}2jg5(D1Vu!YGsiR7>K|9YC0q?YbvMZ>SByz_pim# z1w+%y=&ZRtDb5bP;%5b+?vx!3=H72|Coh3T^m4cG;smGDx1@ORu(DXf(T0_Ro#^Gg|!@L)E(uM<;QamDRVkh8rqTs zo5u*_&4(X%is*A-;)%+3>~0Il&}(RDNSJUA$iM-Z+#5o<1ZQ#7b`%}-qsc`6|a z5^LVoG_#|$T$(w3?X}A@J9$@x#}3g9@YJPbe8Q^S#>oU|?Sp&TDaMRKW;wjbR#Ta- z3PjSZ2o3uC^g$Wo6>&o5Fh)k7=I#2dyw@ihl3G^v24-ZlG|e;$&!S2bzKxs+J548d z1;#OKM>c=pgwCZJpk}O^uqx*ryP#&RJC6B7P&t=shPr6odDcGKX>Ms-*~5B>q7qiXCatg#$`sz z)0ttH?40B;<45G9=fEGH$Ii#=o`Re6;e7AE{VDj*1KYAkq$~4p!*`#88z0BdVSZ1p zN`Dsgi(C;@K;9)X`PLH#)Jq<2If1^#mJfA4#LiT{7&Iv~cOXXK>W z@q(&ba8MJuQZWNnWg|k><7rTNx3maVXRcJsxdc@`-U}5&9<^WgJ(gl|Jk5}u;rq7} zL7RhE5fwjo_sfsS+dvp9m04y@O+s4 zJ=6(cfcU*5^3yjRk#7JW0p0=J3fu^E11|)=_q#{re&A1lI{_CM1bXg5-UHu%^AY(B z@TWlI%m4S`@!x-H=y-}?n5Td5!l1iNZ@n<+?xsJuFzD`~yDp5`r-=LBVsN4S`#&9d zq+tv4=PyxipLpXDxf|#}IotvDvu`*e`%rhH?dmt4-5r|CG_-Fkkf{`zN7%2Bj? z?HD0GU4fNNwtEidY)B?~yvVy&QLjFIL>`3N@kxA-`wZmvbwzr_E$ zV0qZ{Ao^zDnfF)m-OtzR|8Ky5K%7sn5%0fxpi1BP;Mw-R-wTC*A-6$u(!0KSMBelH ze;c0o#)aMZc=GFOn-2%xzXx=*Gth6H-HspNf(UxANj;)#RvAst_R^-Nrd!!(v;>wB z4O@d{-`e9A4!O{HhC}2o=-UGNh6I8S`bSqt&Mm=(NslINTq4wi-0)`{wFiyZ;n1+7 z){sV>wMIM9Rg;O?xLLGPZe(N}cCNLZuU%55&jjet1nAEO=r0E7hXVAM0`wyR`q2R0 zSS959Mk39Ezc}9ZgGaAJ3hv!)eo{!+!I<9@PobWsY&p`0J1Npj>pL7f0(8he_@ zBZdo*;V`Fn8kFZ-(M?dI7x!$WVOJ*URIUaD@BRetEpVGAq+G;~PDICtd;6o}1c;;2 ziAfMcqm$8zDRFj~W3D?v72QGxb8M1}Rr-(-HfE1-a+3&AqZ_?P24XTg9POWS44YvG z?>#~JU}FY2<#)tT!`DtC^RE zZ#{8i^U3`)r?<_Vrt!Z0Gb&p^CGRxQX`MUR&m<5s9qb3SWsjs&mieKZksUivoP6o6 zd-sEQ>8+SUG>8%Asf%x%3v?gcsB8jeMdHqASQOxlKwtEBE3c#c#yGaNye z!^>Ud-?o9dy?+Dq)p2(8TIORWG<+9lbZp8Q9Ge~;kfKcTltxP&k=wT*>Pwmw_x(Al(S=gXJo@|=t|*aSlPUJCT)Hn2V1#K8WQ#| zlhlrPvK;qH=@QSbNYmzPiJd36Y!`iKT-&P?Jo{p^N2b{advvzed_G-rrpCsVkz~GH zGT)RNYv!B=+;-Nu?Hik#8XGx>b8cIzpDr>~w7ZSluieh{Zg1Z1*s;m>J$hc6QgB6L zaqjovnZ&<~{}le`@IR0LH2!bK{{sFq_|M`$hyOhO3;5^pIT`%y2^s#ZX(QvY?w;1J zc&aDW(wa!Qv5r>!wItonWXx@AYip0Uw6u4%#@csxwRU&Mb|>N;tu3ikS8J-RrKPnq zru$}X9X-jeSXXPZt);8IC*I?BCR*CMcDJ`A+TE^}_T91e_JrHfxx1?)m1=A4>P~g> zY0aNHhXaH^j) zWUi#?#Uy)4fQRfOmcwcjZ?P4549qLf>HD}2F*T1mm(08V9%z06)o#IcVonpBRV%W( zC$B$r5*3?}lXKmq@@!N}grCn|rcV z_ly*4s42IMeKj_4i@Y-9WMy^cuzg}PQyc4OHy4tW6?uSPs4}D~BFd#D*Ui~%wylSL z2h<7WUgGF&L2bQE{ut&(Nt2^a&8mxCh-vVe@XxGn+;!q4#|(p+SjB(L=ew$dd&`vG z=9s@OlT!C**`t5E@kW);Mn3w|Oup9noVO2FTdN61?lKMim?4mhuij2D=NIt)q;iW- zIy)MY4GlXTUK&p8feo3kxmV@ig<|?C^G0B0Qv*$24PnD`m}_ z%jd$qll?p?*Ai%Lx#eZvbyQ7V%}>tii9%@+&>`EGkT6O5Bvs}fA-I3k_PrBAUxM@3lk zZD)N$@7!Oo^6jd%+?OQ-t>>w>RD5sYSYu1j^A?ld-Q707c+|yT$5t+-=G3o$ip(*$`Xum9Te#|L zg!qTlG$P8i+%Fd~-mR{w)RWOE8656CsI1OK&%wnCX7$1^!-kDFzakx;qphNisnBJ^ z(E1$Zd1Pqd*x1B?Oif%bhoj@t*E=Ai(da<$;NZ}4=^vWtpB^DKIyO0d@L+UuN^Sec zM#gpgJvKUg{m^Jd>k|`WV^bB);Mhdp(10dN26QZp_?&HNqdPu$+-$C7V=K;FdJ%1C z5y?m9dgV;1E(w))j7KL%hNjN(j;iJV&^t8r#%da;hk2GA-(UUK7~5}jc6J9{VN&mF z`3XjPkJpD~jV~D5$k6Cn@qpO{{Y_p!tZ%LNYs}B>{ZO?3u61Y3Of z@v+IN@v%{*Wpa>-AJ7pQ=X{1WkY8Q+9-j|V(pFU?9^&i>RQopLZmmk$t2VKWmp39{ zRM<@KK=VZJM6~&EG&;_VYOYki=3qr@uGGJ^QZLu@LQ7>Pbv@g*(KQ@~rA3;oRnq`^k>31RtHLjyjLpZc{SLaiFG}x zS-aQ87VQm~rt^5CWQt~$D^TM}vlChA=LU1u&nuG=eMq2#@1&wFXswo&;cV{&5f#70 zi|GOeqNCaojhmG}9X0W_%Ahqj$G&kYUqUBpCovea=;$k=C1|wP(3i>(2q2v}X;`ZFM%qOSiPT=FfrS7!+umCgQp2W1A0R;31;qDOV z9PnYdxhFdm}y;PZLSEh%hqN@c^Zus^InIiiFTJh4v8co_V z+?YN|%b>qawr1n^mT&Vw33vJi%~|@&Hep~0i-s}epk-u(${qv1j~joy{}F80>s;#6 zYgxsA7d3xG9-%*OT-LuYI1>`-G48mQgvy%GS{rn66YN_>a(Tl-T$vbW$deItYO0rEEhsvm*BOJ1=8bA3>Tqg8u_w`vme%TS zBpLr@$?LItkl*Gp+##P1#)@(BdNVDUT^v>yrF_9Kr-nzLjJ8u=hrfCgE6$a}rb2Qo*EcR(Y&boLGp_f1bx zLH{t$8}?JZL!;3FA!`t%LiUYv;I+pQwC-qOGmeBDvR5>;?Iq&m1MceG7#hI2S%Wk7 zj$yN6vR=hVi3XbW_DR;=C-YF}p%$SQp=J{MBp$JA`m;6(OZ5iJ%geIQFo`lOH-x3p45ul!rd+=-0uS*|D?%v>Z1Qt6!JP!mn8DK#ROQDteKOiM`V zr4oMAZgU?)>t#h2kP4b08x{YOifB-JR7|OolDWK1mA$Go>RdMDT(;S9F4HnbflifP zKUo?2R+vz0KTtwT950tlr%nD+qhk{z9QZ}Mc)V*mAZn>*yr$9cJFa7`YaTVLbvEs} zMbyGG*Bq65o+d8aeqlHNJMjtNqI1OY7i*ZEsnh=}@Iy=gGk|sq?MUTA`MFrriolJP zJ?7@}<+=GvlYnv3mPpkv%d2Cq9MeyGpiErQ2i&6!nYYi!^xhszjTdt2T-y~n2?`if zzFQvKBcrA3`6P@yzOOF0PTy71wGqdG-x?yRsVWw$|#((5rS<52T(|Dq6byL$Y;w z+R{y8twXu6>rp#j1Y1fs2JC8q-X7F3!Hm6V2=}|IcigLOpFgiedmofz=f}gm8dKRq zDe&%g$^_FePLxj4a7|})hdMftu5L5?QvyzJt#mt%(aj*6aWtDOwyzEh|3`YK`VSqP z7@HoK=;(k<9v&KJ@IBQ`-M(*oAT7Jk)&AIlRb`dbx^LC@dSz}t8y7YX=0kM%1kMw0 zKWW~?FHAkc=?{CQ74}2EY#@%$jdjJD;YVgg&)IWsv@@6gj0m|vkmgEY&~eqBiF4a| zBt#8rN~dfd+yi6|Q!6MdC#Jt-qYqn7ABZU{bgVm7HWaMOIyki#r3 zlkJrpW>O+%xMbI_Vmcr3N0Zf$>y(zrz*s-AOhgZI!?=GqiYYn*>^Qr<@%;1!e?4M& z;joQn;Uk|B@)Y5|2Jd8&KMe0~a;==6xoFCHDDQ3ZZYFv0=)7FaUC%)=Jaotxhdgk| z+lLuX{ygNN!-)lX!f+jm=cKs*MJ6I#%j4N8o~7O zEQ@DaJO}XkL)8D)djHETp0M!W|9uO-n>=^;Ztmmo-ER}~?uW&^`>SH!{Y`oL?{~!T z7@D&1-#=l&_w)Pl{rrY}KY1L_mk%k-_JF>^Sz(%YtEcpDuK?ej;0HG>PJsWM{FI6FES+edSqob9tIsmRB1&K`kObnxNROs^H1 zV|;MzX`L%cw{|>gh4a+A!^`=BDlTn=^rJ~t%1%v$LV?%R7zLshvabzEKXw}(n>2nZ1M^^H>kJt}t&y1hm1;)SzPcJz_3Kq~%@|2lKF|5%TaoEg36S;1 z24se#QWffR!O!cv#Y8;wlyj{jrfH2*;kOvU0-;~ASeL=oa#Yk2qj9e7hZXH~j?lFs zs4sXZ|E7WPB|oiIubxr>EPLmwOvqx>hE&4S8G*@sYh!{lqkb#FY3-2wcFWPll}fp& zP7;m({#fBW{{5^*0G0X}2*HLyc~R#H#I}_-oPaJ6)MQ20)SBNBL9s!$LHK<{T^L$+ z&-v;)qe@wKGiOiBYRmg%MVi=CERZbsWM*>?=fNBZ6p>2As?xyDQ_8BXG^@AxLc`9{ z-q#f??S0oOSEgIW&qy9SM`)TwYh^%v9tNy!m`14AzaiYUgOsXpv;TQv+WB@(fv!uO zSQ%{fU%0;B1ocvt)^;v$=Pj;M74UYh?y@GZN)4&&K!c&{D95(ZYgW898dP0fSi8;y zT-Rq9enE+E=V>nLD&X#xs^6y)&03!UNpcr%CIec1r(s%Maq5pED>+dg-HHQ~*}=r? z>G*N9ljn$r|FJB2-afGA>!z#+{LbGG*3@%5RF(7eh1F4UeIW|=Wf$lV&mD*j;c4`R z7i_f7+fLV1%W9^bzYjfc_j!T-^ZZ@s1^UgW(q%rqKJ$Y8Wo_HzH#=wbk-;(^(4Mc) zt8d!Y>hvzy=LPGj?exyuN1at!12wF!p8ECYg8kF^!dxS~3-(PP%NwD7bmpk6d-Q}{JaSYz zE}M~_FHOt6-#H;SeSKQ?LjQZ~kIEer z0R1VbS3td=?#GVGE1~~5-ZOx3Iv$#q>!9Aga8zDq!|{I%=eF;ddq#=={Mf=_H(HwV zCg%<&2U3GME@jEj;For}(b80`H$9Xab)(4vp@AFC3>yQXPd8c^ccZyc*t*f>&=aNlZEkEZ*hXgr77_y7Y?U~3gha=*YMtGdWfM_jNE8; zq%dBZTDe~44i+c!W98|>`1~O^%8&v^rKyTxav(j#w`GQ7z3`SA%#US;5jm5zM86y5 z-PAg*Nq{#A<3vAiuNEij@WF}N&Bl5z_RcwW>0XABiYk(0;Q#0h#2hbMz z^kpJxOLOh;c1zz5{HE^)f!^)YaP*g!<~s1lEbRba^xeSXQJ;pz4}2P)*KhFYi{(Y2 zpJ{d5K>KUSouJoSdKmOYmQJEf&jT5t0F;1b;56V%s?X<)d`Zfs;V}U#bVWt8B;8zw z@=Pf9mizrigo&+XD*mLoabI}rfi0)E-^lyO|M8iATaAZ;AdsLni3u7_-@ zXE#%67j0u@Z;RY1)tOI(uf0|rUTc;Oj=!*5mhck!f-6lYZre4pP4G{-gMquBm54G*etQz_XeU#Gn7!_$7f(x- z6GUczY=dl`o$5U}YZaa#o}C<2!j7!JU;$5p#L}l#SWB)WbA3tLU;TqTi+VWC1@|p_q0UsygJmHds!y4$8WIE9Knl z-)No4*m+>moK_k`!l=1|^drf0Y1t-4lZ5ln|BHxNeULU8LP$K=iHkI6Qu z>n+~CzDh?sdE_$|su|h1K z&ZJ8#&Xz=WOZA*nPdrV2%enS8x$1O7GAnyCrTwyZa%f<`-W=XLtinp|f zE$uyfI`>Fxi*zV)mt1v1l&dYRpT#XD*{&a3cmA84-o;otqlc#KTPvBtU4JwkYz6&e zids_h&UV?3kmybdI%ra1V+(Ov7(oB^@8zzMilDz@8ZDtGSID}CB>vY+YZu9ld^{I@ z&L#3}c@8=#V||hQiu|_xmfR`7DQ}av%3I_QuRyu8^+g3VmrR!EYZ>9TIdT6DOYZ)4Sb zUr5+sG>lGl-?67dGpW66PX_{AJtV8+vU*rnM`YEL)sn34k=4Djx=&X3%j&hVdO%it zWwlRM`(<@NR$nQruaea%S)G>Eqq2HTR*%c-^|E?{te%k78Cg9ktG_O*cgX65tWL`6 zL0KJ>)g!Vxgc^v?dU{xEBA+8l@rmf2z8P2qjspCwr(0XwRAIbNYvND0wW+3yUmRZJ z`b_az`OK%02d5{2Xw|qVs~?rs`(*X+W%VCq^*OToVOd?0)lbQ4Syo47^*UMYmeqfh z)i2BH*JSluvihj3J|?T*m(?H3>Q7|#7qVDtZ);&zGEyhnw2Za3wCypUp|z#er|^OC zY}04EK0EZ;sn2eG_ULmrpKUGrR9|iCzD?b?sr$AreX9F5b>FTo+co@lb>D8>E2-h~ zp=KHcLl|2C5WBHFfQ%j+L3%pTCgOu2@2_uYbnq`%P03Z$a@8T4O^yL=vaIbyr5+VQ zUfVi<)jm}-SM8UpPPXomXFzG&1GAnz>a4`LRLT7bymD7BAANlE^TBf3x`(Dz`i#+;6MRh43U(%Yt=ewY4y$%rwcDyaR^4sXwic_}aN4Z@HtYWe($-H~msM>L zdv+Z%3iDIx?uyMIln!e%sM(-4Ha1<>h96-UzrrqlhF$y)yGHoPX?B^w{1{rlZ8qlZ zHpcBXI_=hdyN!8=HSe(I9lp5@r^BYE!$!KpMzO<&-)Z05Y2VXn!|Sx+b=vScZFrqF zyiOZlr-qkCzu`AsyPH?|p_*4TRn+W5!8x(7EdzsnUGw@RjgQf0n(#fUw6T2}Z*PLf z@m4FhDOZYnJ;tww1xO1n`yjM8b8E~8ivJx1BBN^6Tz zOen1;lvWc;s|lsmgwkq4X*Hp=nowFzC~YQ`HWNyl38l@1(q>}at}eBFb#$3@v={~U zNjF}elN0^XlXwi^(K}44ceo)5bwD)(MuRSHvO*kHs=v3-s)I(IwE9V-9~;MGSi@#W zM~C>J_UI%YBcw(q_~_$T#>yVAbg8fI2hkVWS*3$_+*t?>!iu9=F86*s)PM ztQZ~+n2wB1Yl%8MKCDIQ@W{}pAqIwy4h^W)$n@~k(D?B6=515a33WdJP~GusX`(+)Gs4l~0JGrJBWvy$a3<*6yZ7Cj(TVY-se70RU$CsZYKPjCZo zV_=YMMS77fiDRUu>N!w1iIKVI-l7t_X*rL8C_`6OFSh7PEW@*j(Qe+Y!TdLWb3UD` za8a>`f$imb%FxBcVYhLp2Y;PJzE~_5O44vB(l8Qfm=wJi=JKK~2KsY(Y3PDML$@wt zI1YJy$*5r$%pt#qiJv{IozUfN&vEoBV&KQ9CPjr<=(1bLNtmEoZqZK>S;owLvVIZ-(M%B3xNEs&(eyU9B}Os^6-tCKc{d zjYz6m>CB>4Pn%@}b#_YdP4$d)F6`zK#T6|(8VE0pRE^F`Kf>&?WkH=MU3Kd7_o*;= zf;%2h&hhqYtd!=Qx;CtN3d$n9ij=aw#p=e}GE*xgezb zGv=nejdI}HONJYkqox$_+P25k@2PMqV4+@$>87UrCFawaWYNt@ADW;nxykSdK2NJ7 zT$EU5LvgcA7AV8Es3u8w(aq!wJo3F+(ustM^5PU@J7E+_ zXK18Q)Z5@Nc6PL3nD6wK=bYBgkltX|Z!qZ=oVMMLTDEpXT6ag?;QMou}lY+8|L0mpJ>n_GJ&=pa` zU1@Ce*Mhlx;z=VnZ)WqU6faIUCeRRY->fl_NwY6;i^wF^8S&sCvq@(1tTM>1YUjDm zU(sofHdgK`HTwJ9joQsELN&WtjS1bTr@URC_U2=>NTy?%{2bnrBb`d|snTdX2`Aw? z?8X!1^U&yKV+n7T+eM(6&_;I|HMCTWk%BU7*mX){Du&Mu1(gU9oaJU1b-83fm&wPF z49iPH!l`_oqsB%nBe*%al9MpIs&Zyl2jtS2Midv-qS0{T#mfsZrsw7|a!9kqFb0-J za^5vWI?hFV5;<4zdXw}De(uv7@)AkX)qVO2XUa$sI}JP+JnpE3Zihj~ zTg+iqY({3e$Udtd86!m#QDdeoio@AcUSi&b=Wxy~#a(nwNLdLMd5<}zOYV)#9h<4) zf?Gty3#>aH#~V86g>l|1d5K~g6M{x7;1-5OBQY~vSV0$&^VN1~tO%ZLEV>z;qBItH zekkLnN)j%X<15mL;PRP_DIC1Zi0r@!rC74L6!vmjFm$?uak~Z*;G-P&%DLI4d~v~> z&m+(6b@4_Nm05%tE3OzC-+I<=ABL&Nz+%?iRS%aEs5d2ie0?433wkwn)p!xhLq2{p zI$cD|2*wO!43&w;P+r(`%vR(lH=+)eJYGuxnMPb=XvU3($Ax^=7FzUDruz6ioTYII z?X6{SptLCkwsQx;F)%x#GK$GEr3$kyhnLe?JQ(X)o$iH~3)$JF_BL7j7v4G}cc2Y< z9q=~boxpzvJ_>va_#*Hv;77nk+h=4Wa22o(2mu|y0bm5U9+(BvKn_?0UIyF&ydJn4 zcqi~a;3L2%fX@J51Reo?46NIMHVt?&umxxYI)H0|!@x8!3nYP?fim!N;MKtI0`CU? z3b+@z5BMVRZQ#EHzW_GuoRMDvt_HRNVW1m002~I604ISYa0{>uyb^dF@HXI`z+VC% z0qzGr4?GM!2K*FQziURG3A`9+0NQ{Ea1a;=ZU9n10ayWE1-uq`Bk=ZJ)pH5{FWN)C z89t+dp@E3bA9wh-bLY^CaO7A*^Q4kH^$IY$(bk>x%3IX~HGAE>{eijv?tgojtr}*` zPESj*1vh8Hwc|c=#^v0&qq}DFx3a6xzE;~^x-ol_=F|XhaqAH+$MgvjX>OLt%#1XJ zB6~R2fcy5!{H>TTDG$wAzgZ(x?z{+ z?6CPv=_QV^HPACs`b+Qt37ZGX7Swy(93tsj5Lc6YW8ZmlP3JDzmaXlR3-GYyzIP%-aU&ZZ5@{$L@EDvweVZpF83>#Fee_Sa|5D(Kpb z@3kyG_Dch~JjpGl?6i?T)*3#%z+&c_*4hG5FfMx-ko9~X2>B&FN2`4j7IAzzU z5Fg`gHjoN;*-h9bI$Mw0gW-CG*ixn5At4E_O)sq-7TTtykt=NL{|jbXjJ6YU5J{WESW^4gV2sEYh6La`r3^RzYM zbAj>0x1ter)}Y7Hc)rlsMeKe>w2l1Ea(TyZ@{M2&hHeA7rR)|dFGBqNk z3v`-1ZnrnhN!fmx;|K1xrgbMQ>91SA{nKHR|I(gbXojN^tI(^zZT{29#bX{n29)l%qf3v8ZNPryX z21YCp7i}(`t(KYGgv;ih8)7xl#iVk{1Qs;KZ=9?OwF#bxPEAjY@(>=!%>K%C1a2Ew7T42@&bO2qzGrDJ_2WkY^+jI7Op#Hbt9R0D{TqAl+jz(GpnqTbM+fTM_tfblb^3c3-uC^?#wX!&$H|F4R!kG)a#{Ie|eq#hC2N- z>-1OD>3>yf_5OMKiu*dff5zU|OWm)jsoDI`B@*F|rjDkT=1e*cjWugV0Zygon$zt) zUCoJ=Ir6Rzd-G%i7-o&duwPo7Yp!v&RL%<*U9vh|v;$DxX#U zY;YXj@1;+<&c1yP)qHBl?5us!tnso_!(Ss5^_NY1+NW%(j|ZEP^SxSsVYnC`>g&J$ z;KzPG(L9DRlGhLKD^PYCdH;}45apgwxK0ORL4{nqzf^x?f%{Peioash;XaW*dG=c(f9g!QwZ81)A~ zspg&eJ$|iGw;eF*^+rAL+eW?PBSyXX2~}@@MN==;GtW(^`ijrLNmch#pQ7r_-o2iz zmL6F=)J^pd-|*rr)C1pqOUoZZeeFv=`oRaFc3ktLg)92y_J_MyKGNGScR%>bV;zhA z^6}BR?BD)LzwCS6P2V{F)&2u_zHfQcd!9cq{?A`~;2SSKJn;I@ja+))bZ-2axn?eBco=eGWMX!pK%{&3*u&-tUaKX}uf_g(gZ6Ak_OKTYnq^y7ZBc=pe} z{{^{A-uJ%u|IXl#{`K1LTr}1*(zdDPUk@$4?1sG`^8Wpo#-3k3m-njJ3l%Trrlhy8 ze;}&uz@NSMYtfJV`I(J>-7I(i{YB6H>fMLCe(=}s>c&6*0NT>)9_jw{>Q6T8c;wR? zU-#?pYx~}Jj-C9#Z$B&A@So0X{JnQwCS6x;yy<Z#s`g(pUcB=h2q7wEV&ClUM)x z-F?tMYV;3}oiX+g8olFuceCohWb_9fpH2SS_*GZF?J~Tt`HiFZw7h-k=WjT(@s9@N z-m%Z0iGQ!_-iu!K_A?t_b{*_b^uIi|{lCc4&9Lt@_HLd2-oy7k`nvA>H~yD5%1v*2 z>ELj@&OTA6m%hvuzwvixHvaybp?_fds~3;2f28l~`#1hg2>J1@eQ$r&znu8;se|`# zeEA>1{tGWW^P26)2CwRc{>?`J>N@@Hd%pkE$G?8nm9Mx1@!fy)i39ceZ@%uHufP1h zjqm&wao+R!H^ndiifO&?HJ@s5U7h~YI{hVe`e)SXKep>H9{t-Eg#S-4JMm}F{JT2+ zN9*(-sndVBPXD)c`g`m2SN`T#*S%)s{*A9ZDK}kq$?wd4W$f|Q;xF#s`0Ia!{Fv{) z@9{5u=huuTKAXo&KNe^pDl)|EW&@Xr2B$b^1r@^xvw}f3r?6&#%>gqt5>8b^5Q> z>Aza1zrRlZ={o(HI{n-0^Se&Ju0Fo?`u_uepOj4%`n^|gk~5cVk_Q83pM=>%Fnc6m zwqw&K`7X@%uB)1T<0YHqz@?kyhwB6G{@o^d;u)Ky<)W(DgU%-DxC~)lTs3;&H-sLfG%JFm;i19a=>Zew}Af$ychT|@Q=VFz@^XH zB-?-%U@tHV+yoSW+kw{ucLVPRJ^*|Sco6t5@H60f&qg|c0pK`L0PXy( zV_?H`HpxqXy}&SVBTxeF0NxFJ5I6&T4fsB={>n}AtH3TG0$c~&0L%l6z$<_^1MdRf z4}2DQ6!;17?2Vhm0eXN#z!Y#3kO3BfJAu1_4*(AUj{@>s#1GgDTn8Kn3cww}JAl6e zJ_|estp63n4QK)efuleMco}dv@Gjtkz$byP0Z#zWe%>Yt0mIL$ez)VG<3I)|0k;8n z0Ivt$47>yQQ{er;y}%~}ejfn+E#Sw%rO(H=0ImUAfCw-Ei~`4jIFJFBf!l#Qf!_u0 z2L1y0An@M_=< zz*~TK0DlU+7x)|CW56o#0PtntTfk$$6Ttcxpo{}o16zPyKnJiNI0Q@pGe8Q+0E@uw zz#YJAfj0y10R9a40Ps=Z6TtnzL%=tH?*cytf1mM0>^=yfz!Ypz*~WP zfDZ%r1K$Fk05-fB-vrnJbOD3F4L}aK9k>&C3vdtcH^3_JFz^fDxmO{bKnE}gOaTSp zHsH5_w*vP7p9CHR9s_;>JQr>77N7&T4!8lx0IvXk3;4sUtLgb=8~DpM@Rx1iFWbP% zxB7pq4g8TDbW4<5F&fLdz2xRW=G_CCxu`PSaFbE9?|h|<^SBo*dS$Eh>$cTEe=o)U zDLt6am4rym1{{etlms|E+^9K>#f_Nb(1`RhIseNVMA-okF2Aku`&`Z z>$tnoTgqp9x!%{ON40o4f!vmjZqjuZxW?DdJ<>z5T#_6|{2WYY@Bt16bjOe{MmL`3 zUfi^=Gh2>$%Yx0@e%_x*#4?k1Ya?sTO_;fW?wH&rdN{S-i@Zgm%juF0Ti(sv2AO_y zMBIq@>h%Swi2TXfwiS^`y>bt)2H1@F3#B!^@>fc$kg;mMIQEhh-IR;e_Z5CN+A-qWPgqN{_!E6x_eA%v&GK) z3CHAn)&wc3)P*OFnI@7UUc4@#*CR_Bm^?dRu7yc9223UsMu&eYPn==uq?r+vHzI!9p!0)eiVCc51+Xn_KRn|LatapoR1}KEk$np>U#a~n!KIsNAiodtqN7> zW752Sq?{Q@FN(B~Dy8|_sr<2Y(q(HS1MA1pp4yK;#Dm(sGQD1Ri>=_rSPq>Bv)e7o z(X(s@$)&~3C069*dM2|rq*&0*wtyn>HB77R;;YtA{(tRVYiwLc6+UrZhl{P z^*m%X^9Emi#H|}W$Vm<2o)~t7&H!t+E!9d_IhFTCdRywKOTYTshI9*r;gyTJImcI$iV zsYvS&Og&tl5e2ciW@Sqq__&r|HWS5c)~A1(Nj;9H*zK< zOccubVmLtA(GnWiq}Q}M+TFr?6tip0Vb4a?ruJ^yAT-uZ()%@>OGt*?%nXK4e9MEb zVdeiFy3?~h(GBG4q9EE%ZXrlls|&P?++rZ3iM`}X*sbJp=T$yM{UmFwFtTuiY*lx* z93ol%PSfPhWr9Mcx)5Hd zu!W5(o>SQwU`WVK`@Sn{g6JM{(*bXjp!-l7-r_^({oQP(QifGL-7L=~K!xJ**&O`> zP%&WWR}{*<3<&*;EFSJ~+=6!;?FjrJqp95GxTO=Kv(t|2l_i-^Iid~M3vy~9RCioo zBRt|n`nU*~2aWi$(qA0tM3ny~dAJ~{+nH82LqE1*APzeqG`GT8$BDU*>#`iNmcNBNC3?=%@%g?!9t z><`2D$u&7^9mh>BSDaZy zc%Lbcx*sy7Y$-E?dU{wOw!KFglG~adV~CgF&^L^4SGk@yzBflt7@KW+(r~u9&Htu3 z$w$qh1*!1%8~V0E0VJ940@BO+E&!U7Ri{e^f;GGJeZvbb)6n-*hAZkKzoEUSO<B`ad)+zrawyz3#6Ws(SdI|3)F?f7$3xN}}HxHnrdLdxl#^ zP32Ff>dpGlCB0;3(UqgZ>2C&Kdnv&`1mZlt!cdW|`fAMjbZ#+H=F@RAkn&E@qA>&C zelzGDE*D}HL$M+Bq&HB>pE|-T9EN#|OQt#k3mM>BXZG=di`p$rdXpYB*28zlR#M(v zw!$3|xcY>0m~(9@AJAFSU~^L%4I@2&VO(Z*qv0G>c94ysQRP|JotCPJ@u=!EnET`u zm9Zev=Rkoby#=Mx7ip*v_`ISdnp2!7xkfFP_7j*j@dimg+kZrK|D>f@G4!m=VeKAU zo~Hm(Y=B;rnM4t7q7E4Uthkjvl;#tBU(xw)aH8t@q0B2nE9N;x>6z)hGOE>MFNdO$ zDQ8Q^*C8%5Vxn=TsW?o=KNMl2#$yq#;_2fU^))l5Q?2GnZ$zI&sA@dY)gowNe(!g9 zly@MzAkkCl1&@2lhn$0H-*&wSL!8GQ8-E}7)!%Ur26@{ROONY^opC@^QEUC8 zGl~W+s+Q**9sx#q`K=S~trlg2vK*tVE)~&B2rFjO0sl<#cg*+8(^l0@fh$6dyAXl06ZqxG!>Iz#!O z!Iw>LhdyQ|`54q9Ox|Xa&}Prs25mro;pwJ zGaIDKq?Jwh=N-OdaE!)j1oO*D%r{fCpY~yFc9h!qcYlPqGzI7&)pvH&i@Ll=9{!Lj-70m%r=}&S)zsq;lki$vS|a|X zm;b2IP>(+ixgT*efvx>(2@$x60dBokCwyu^JL_|l5DXu|7yV>=O+SLy=M3PxBYe>Z zR3EC7#UTNa`LXz7dtE+Zc-^Ojs3XK{b(2gc``6$-Ks!2B5aY~nj`4ZUlQ48789&W= z5(bN}ScZP(_Z!O4W99js%Fu7q^Ap0*6Q=Jcg`q#fg@Gbm8De;o!Qx5L3-GqOrk$8q z1}P30+F38Qxb<2xv7-9w`b_U!hQ9>77Q0fFVWurx9=Nw#Ka}MxE05*tYU4CHZMJi6OA-{>`4VmR z)czAY4{f?%QfY?`a>Vw!diW4*G=;6Ky90zeb6kb5K9QAUfJ%Jbtnt;r_}Z zB*E{5d9t5aS>)RHlq@>En`S8=G*8*cEy@eM_ z)4dMoGkhSG5{WLc25wOu>grOA+f!)*TX?s?6irC$JB(I%0;!JjZ-CNL-wv3c3#~6- z;rK1GQ{g%%^m*|;%W0+6_X6|t5lLVI`LEb~-wwYB?QywsazF82;pwFt;cgaxSoSa6 z3Vk}zw?`%NMe7U5O&VBMWKTg-3A!5seoE@Y178*?={3zCrMDq|m>zQls5j1sFZ%T4 zW@eR>Kz=xt3aBh=8kG0I4ZuwTpGS-Y@-;1W;mLi@dueM-{*+BQl6w=q8*z5YyAPP+ zy%M$!+Hyn(Rf$)Y+Ko!5y&zZY_25f^mKTmeDdU2aB99RP?-5&1OVGn`JE6^+X%EWL zhg5szuIgS%HIQYkb-Z;Q-&#$+mL7+!G|u~a%i>>-*ebP@WymbTkJtT{*2}T3`1ODO1!?V5 A&Hw-a diff --git a/share/vim/vim73/vimlogo.eps b/share/vim/vim73/vimlogo.eps deleted file mode 100644 index 309afb3a..00000000 --- a/share/vim/vim73/vimlogo.eps +++ /dev/null @@ -1,791 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%BoundingBox: 147 74 429 356 -%%LanguageLevel: 1 -%%Creator: CorelDRAW 11 -%%Title: vimlogo.eps -%%CreationDate: Mon Feb 02 14:35:16 2004 -%%DocumentProcessColors: Cyan Yellow Black -%%DocumentSuppliedResources: (atend) -%%EndComments -%%BeginProlog -/AutoFlatness false def -/AutoSteps 0 def -/CMYKMarks true def -/UseLevel 1 def -%Build: CorelDRAW 11 Version 11.633 -%Color profile: Generic offset separations profile -/CorelIsEPS true def -%%BeginResource: procset wCorel11Dict 11.0 0 -/wCorel11Dict 300 dict def wCorel11Dict begin -% Copyright (c)1992-2002 Corel Corporation -% All rights reserved. v11.0 r0.0 -/bd{bind def}bind def/ld{load def}bd/xd{exch def}bd/_ null def/rp{{pop}repeat} -bd/@cp/closepath ld/@gs/gsave ld/@gr/grestore ld/@np/newpath ld/Tl/translate ld -/$sv 0 def/@sv{/$sv save def}bd/@rs{$sv restore}bd/spg/showpage ld/showpage{} -bd currentscreen/@dsp xd/$dsp/@dsp def/$dsa xd/$dsf xd/$sdf false def/$SDF -false def/$Scra 0 def/SetScr/setscreen ld/@ss{2 index 0 eq{$dsf 3 1 roll 4 -1 -roll pop}if exch $Scra add exch load SetScr}bd/SepMode_5 where{pop}{/SepMode_5 -0 def}ifelse/CorelIsSeps where{pop}{/CorelIsSeps false def}ifelse -/CorelIsInRIPSeps where{pop}{/CorelIsInRIPSeps false def}ifelse/CorelIsEPS -where{pop}{/CorelIsEPS false def}ifelse/CurrentInkName_5 where{pop} -{/CurrentInkName_5(Composite)def}ifelse/$ink_5 where{pop}{/$ink_5 -1 def} -ifelse/$c 0 def/$m 0 def/$y 0 def/$k 0 def/$t 1 def/$n _ def/$o 0 def/$fil 0 -def/$C 0 def/$M 0 def/$Y 0 def/$K 0 def/$T 1 def/$N _ def/$O 0 def/$PF false -def/s1c 0 def/s1m 0 def/s1y 0 def/s1k 0 def/s1t 0 def/s1n _ def/$bkg false def -/SK 0 def/SM 0 def/SY 0 def/SC 0 def/$op false def matrix currentmatrix/$ctm xd -/$ptm matrix def/$ttm matrix def/$stm matrix def/$ffpnt true def -/CorelDrawReencodeVect[16#0/grave 16#5/breve 16#6/dotaccent 16#8/ring -16#A/hungarumlaut 16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle -16#60/grave 16#7C/bar -16#82/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl -16#88/circumflex/perthousand/Scaron/guilsinglleft/OE -16#91/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash -16#98/tilde/trademark/scaron/guilsinglright/oe 16#9F/Ydieresis -16#A1/exclamdown/cent/sterling/currency/yen/brokenbar/section -16#a8/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/minus/registered/macron -16#b0/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered -16#b8/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown -16#c0/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla -16#c8/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis -16#d0/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply -16#d8/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls -16#e0/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla -16#e8/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis -16#f0/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide -16#f8/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def -/L2?/languagelevel where{pop languagelevel 2 ge}{false}ifelse def/Comp?{ -/LumSepsDict where{pop false}{/AldusSepsDict where{pop false}{1 0 0 0 @gs -setcmykcolor currentcmykcolor @gr add add add 0 ne 0 1 0 0 @gs setcmykcolor -currentcmykcolor @gr add add add 0 ne 0 0 1 0 @gs setcmykcolor currentcmykcolor -@gr add add add 0 ne 0 0 0 1 @gs setcmykcolor currentcmykcolor @gr add add add -0 ne and and and}ifelse}ifelse}bd/@PL{/LV where{pop LV 2 ge L2? not and{@np -/Courier findfont 12 scalefont setfont 72 144 m -(The PostScript level set in the Corel application is higher than)show 72 132 m -(the PostScript level of this device. Change the PS Level in the Corel)show 72 -120 m(application to Level 1 by selecting the PostScript tab in the print)show -72 108 m(dialog, and selecting Level 1 from the Compatibility drop down list.) -show flush spg quit}if}if}bd/@BeginSysCorelDict{systemdict/Corel30Dict known -{systemdict/Corel30Dict get exec}if systemdict/CorelLexDict known{1 systemdict -/CorelLexDict get exec}if}bd/@EndSysCorelDict{systemdict/Corel30Dict known -{end}if/EndCorelLexDict where{pop EndCorelLexDict}if}bd AutoFlatness{/@ifl{dup -currentflat exch sub 10 gt{ -([Error: PathTooComplex; OffendingCommand: AnyPaintingOperator]\n)print flush -@np exit}{currentflat 2 add setflat}ifelse}bd/@fill/fill ld/fill{currentflat{ -{@fill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@eofill/eofill ld/eofill -{currentflat{{@eofill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@clip -/clip ld/clip{currentflat{{@clip}stopped{@ifl}{exit}ifelse}bind loop setflat} -bd/@eoclip/eoclip ld/eoclip{currentflat{{@eoclip}stopped{@ifl}{exit}ifelse} -bind loop setflat}bd/@stroke/stroke ld/stroke{currentflat{{@stroke}stopped -{@ifl}{exit}ifelse}bind loop setflat}bd}if L2?{/@ssa{true setstrokeadjust}bd}{ -/@ssa{}bd}ifelse/d/setdash ld/j/setlinejoin ld/J/setlinecap ld/M/setmiterlimit -ld/w/setlinewidth ld/O{/$o xd}bd/R{/$O xd}bd/W/eoclip ld/c/curveto ld/C/c ld/l -/lineto ld/L/l ld/rl/rlineto ld/m/moveto ld/n/newpath ld/N/newpath ld/P{11 rp} -bd/u{}bd/U{}bd/A{pop}bd/q/@gs ld/Q/@gr ld/&{}bd/@j{@sv @np}bd/@J{@rs}bd/g{1 -exch sub/$k xd/$c 0 def/$m 0 def/$y 0 def/$t 1 def/$n _ def/$fil 0 def}bd/G{1 -sub neg/$K xd _ 1 0 0 0/$C xd/$M xd/$Y xd/$T xd/$N xd}bd/k{1 index type -/stringtype eq{/$t xd/$n xd}{/$t 0 def/$n _ def}ifelse/$k xd/$y xd/$m xd/$c xd -/$fil 0 def}bd/K{1 index type/stringtype eq{/$T xd/$N xd}{/$T 0 def/$N _ def} -ifelse/$K xd/$Y xd/$M xd/$C xd}bd/x/k ld/X/K ld/sf{1 index type/stringtype eq{ -/s1t xd/s1n xd}{/s1t 0 def/s1n _ def}ifelse/s1k xd/s1y xd/s1m xd/s1c xd}bd/i{ -dup 0 ne{setflat}{pop}ifelse}bd/v{4 -2 roll 2 copy 6 -2 roll c}bd/V/v ld/y{2 -copy c}bd/Y/y ld/@w{matrix rotate/$ptm xd matrix scale $ptm dup concatmatrix -/$ptm xd 1 eq{$ptm exch dup concatmatrix/$ptm xd}if 1 w}bd/@g{1 eq dup/$sdf xd -{/$scp xd/$sca xd/$scf xd}if}bd/@G{1 eq dup/$SDF xd{/$SCP xd/$SCA xd/$SCF xd} -if}bd/@D{2 index 0 eq{$dsf 3 1 roll 4 -1 roll pop}if 3 copy exch $Scra add exch -load SetScr/$dsp xd/$dsa xd/$dsf xd}bd/$ngx{$SDF{$SCF SepMode_5 0 eq{$SCA} -{$dsa}ifelse $SCP @ss}if}bd/@MN{2 copy le{pop}{exch pop}ifelse}bd/@MX{2 copy ge -{pop}{exch pop}ifelse}bd/InRange{3 -1 roll @MN @MX}bd/@sqr{dup 0 rl dup 0 exch -rl neg 0 rl @cp}bd/currentscale{1 0 dtransform matrix defaultmatrix idtransform -dup mul exch dup mul add sqrt 0 1 dtransform matrix defaultmatrix idtransform -dup mul exch dup mul add sqrt}bd/@unscale{}bd/wDstChck{2 1 roll dup 3 -1 roll -eq{1 add}if}bd/@dot{dup mul exch dup mul add 1 exch sub}bd/@lin{exch pop abs 1 -exch sub}bd/cmyk2rgb{3{dup 5 -1 roll add 1 exch sub dup 0 lt{pop 0}if exch} -repeat pop}bd/rgb2cmyk{3{1 exch sub 3 1 roll}repeat 3 copy @MN @MN 3{dup 5 -1 -roll sub neg exch}repeat}bd/rgb2g{2 index .299 mul 2 index .587 mul add 1 index -.114 mul add 4 1 roll pop pop pop}bd/WaldoColor_5 where{pop}{/SetRgb -/setrgbcolor ld/GetRgb/currentrgbcolor ld/SetGry/setgray ld/GetGry/currentgray -ld/SetRgb2 systemdict/setrgbcolor get def/GetRgb2 systemdict/currentrgbcolor -get def/SetHsb systemdict/sethsbcolor get def/GetHsb systemdict -/currenthsbcolor get def/rgb2hsb{SetRgb2 GetHsb}bd/hsb2rgb{3 -1 roll dup floor -sub 3 1 roll SetHsb GetRgb2}bd/setcmykcolor where{pop/LumSepsDict where{pop -/SetCmyk_5{LumSepsDict/setcmykcolor get exec}def}{/AldusSepsDict where{pop -/SetCmyk_5{AldusSepsDict/setcmykcolor get exec}def}{/SetCmyk_5/setcmykcolor ld -}ifelse}ifelse}{/SetCmyk_5{cmyk2rgb SetRgb}bd}ifelse/currentcmykcolor where{ -pop/GetCmyk/currentcmykcolor ld}{/GetCmyk{GetRgb rgb2cmyk}bd}ifelse -/setoverprint where{pop}{/setoverprint{/$op xd}bd}ifelse/currentoverprint where -{pop}{/currentoverprint{$op}bd}ifelse/@tc_5{5 -1 roll dup 1 ge{pop}{4{dup 6 -1 -roll mul exch}repeat pop}ifelse}bd/@trp{exch pop 5 1 roll @tc_5}bd -/setprocesscolor_5{SepMode_5 0 eq{SetCmyk_5}{0 4 $ink_5 sub index exch pop 5 1 -roll pop pop pop pop SepsColor true eq{$ink_5 3 gt{1 sub neg SetGry}{0 0 0 4 -$ink_5 roll SetCmyk_5}ifelse}{1 sub neg SetGry}ifelse}ifelse}bd -/findcmykcustomcolor where{pop}{/findcmykcustomcolor{5 array astore}bd}ifelse -/Corelsetcustomcolor_exists false def/setcustomcolor where{pop -/Corelsetcustomcolor_exists true def}if CorelIsSeps true eq CorelIsInRIPSeps -false eq and{/Corelsetcustomcolor_exists false def}if -Corelsetcustomcolor_exists false eq{/setcustomcolor{exch aload pop SepMode_5 0 -eq{pop @tc_5 setprocesscolor_5}{CurrentInkName_5 eq{4 index}{0}ifelse 6 1 roll -5 rp 1 sub neg SetGry}ifelse}bd}if/@scc_5{dup type/booleantype eq{dup -currentoverprint ne{setoverprint}{pop}ifelse}{1 eq setoverprint}ifelse dup _ eq -{pop setprocesscolor_5 pop}{findcmykcustomcolor exch setcustomcolor}ifelse -SepMode_5 0 eq{true}{GetGry 1 eq currentoverprint and not}ifelse}bd/colorimage -where{pop/ColorImage{colorimage}def}{/ColorImage{/ncolors xd/$multi xd $multi -true eq{ncolors 3 eq{/daqB xd/daqG xd/daqR xd pop pop exch pop abs{daqR pop -daqG pop daqB pop}repeat}{/daqK xd/daqY xd/daqM xd/daqC xd pop pop exch pop abs -{daqC pop daqM pop daqY pop daqK pop}repeat}ifelse}{/dataaq xd{dataaq ncolors -dup 3 eq{/$dat xd 0 1 $dat length 3 div 1 sub{dup 3 mul $dat 1 index get 255 -div $dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div rgb2g 255 mul -cvi exch pop $dat 3 1 roll put}for $dat 0 $dat length 3 idiv getinterval pop}{ -4 eq{/$dat xd 0 1 $dat length 4 div 1 sub{dup 4 mul $dat 1 index get 255 div -$dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div $dat 4 index 3 -add get 255 div cmyk2rgb rgb2g 255 mul cvi exch pop $dat 3 1 roll put}for $dat -0 $dat length ncolors idiv getinterval}if}ifelse}image}ifelse}bd}ifelse -/setcmykcolor{1 5 1 roll _ currentoverprint @scc_5/$ffpnt xd}bd -/currentcmykcolor{GetCmyk}bd/setrgbcolor{rgb2cmyk setcmykcolor}bd -/currentrgbcolor{currentcmykcolor cmyk2rgb}bd/sethsbcolor{hsb2rgb setrgbcolor} -bd/currenthsbcolor{currentrgbcolor rgb2hsb}bd/setgray{dup dup setrgbcolor}bd -/currentgray{currentrgbcolor rgb2g}bd/InsideDCS false def/IMAGE/image ld/image -{InsideDCS{IMAGE}{/EPSDict where{pop SepMode_5 0 eq{IMAGE}{dup type/dicttype eq -{dup/ImageType get 1 ne{IMAGE}{dup dup/BitsPerComponent get 8 eq exch -/BitsPerComponent get 1 eq or currentcolorspace 0 get/DeviceGray eq and{ -CurrentInkName_5(Black)eq{IMAGE}{dup/DataSource get/TCC xd/Height get abs{TCC -pop}repeat}ifelse}{IMAGE}ifelse}ifelse}{2 index 1 ne{CurrentInkName_5(Black)eq -{IMAGE}{/TCC xd pop pop exch pop abs{TCC pop}repeat}ifelse}{IMAGE}ifelse} -ifelse}ifelse}{IMAGE}ifelse}ifelse}bd}ifelse/WaldoColor_5 true def/$fm 0 def -/wfill{1 $fm eq{fill}{eofill}ifelse}bd/@Pf{@sv SepMode_5 0 eq $Psc 0 ne or -$ink_5 3 eq or{0 J 0 j[]0 d $t $c $m $y $k $n $o @scc_5 pop $ctm setmatrix 72 -1000 div dup matrix scale dup concat dup Bburx exch Bbury exch itransform -ceiling cvi/Bbury xd ceiling cvi/Bburx xd Bbllx exch Bblly exch itransform -floor cvi/Bblly xd floor cvi/Bbllx xd $Prm aload pop $Psn load exec}{1 SetGry -wfill}ifelse @rs @np}bd/F{matrix currentmatrix $sdf{$scf $sca $scp @ss}if $fil -1 eq{CorelPtrnDoFill}{$fil 2 eq{@ff}{$fil 3 eq{@Pf}{$fil 4 eq -{CorelShfillDoFill}{$t $c $m $y $k $n $o @scc_5{wfill}{@np}ifelse}ifelse} -ifelse}ifelse}ifelse $sdf{$dsf $dsa $dsp @ss}if setmatrix}bd/f{@cp F}bd/S{ -matrix currentmatrix $ctm setmatrix $SDF{$SCF $SCA $SCP @ss}if $T $C $M $Y $K -$N $O @scc_5{matrix currentmatrix $ptm concat stroke setmatrix}{@np}ifelse $SDF -{$dsf $dsa $dsp @ss}if setmatrix}bd/s{@cp S}bd/B{@gs F @gr S}bd/b{@cp B}bd/_E{ -5 array astore exch cvlit xd}bd/@cc{currentfile $dat readhexstring pop}bd/@sm{ -/$ctm $ctm currentmatrix def}bd/@E{/Bbury xd/Bburx xd/Bblly xd/Bbllx xd}bd/@c{ -@cp}bd/@P{/$fil 3 def/$Psn xd/$Psc xd array astore/$Prm xd}bd/tcc{@cc}def/@B{ -@gs S @gr F}bd/@b{@cp @B}bd/@sep{CurrentInkName_5(Composite)eq{/$ink_5 -1 def} -{CurrentInkName_5(Cyan)eq{/$ink_5 0 def}{CurrentInkName_5(Magenta)eq{/$ink_5 1 -def}{CurrentInkName_5(Yellow)eq{/$ink_5 2 def}{CurrentInkName_5(Black)eq -{/$ink_5 3 def}{/$ink_5 4 def}ifelse}ifelse}ifelse}ifelse}ifelse}bd/@whi{@gs --72000 dup m -72000 72000 l 72000 dup l 72000 -72000 l @cp 1 SetGry fill @gr} -bd/@neg{[{1 exch sub}/exec cvx currenttransfer/exec cvx]cvx settransfer @whi} -bd/deflevel 0 def/@sax{/deflevel deflevel 1 add def}bd/@eax{/deflevel deflevel -dup 0 gt{1 sub}if def deflevel 0 gt{/eax load}{eax}ifelse}bd/eax{{exec}forall} -bd/@rax{deflevel 0 eq{@rs @sv}if}bd systemdict/pdfmark known not{/pdfmark -/cleartomark ld}if/wclip{1 $fm eq{clip}{eoclip}ifelse}bd -% Copyright (c)1992-2002 Corel Corporation -% All rights reserved. v11.0 r0.0 -/@ii{concat 3 index 3 index m 3 index 1 index l 2 copy l 1 index 3 index l 3 -index 3 index l clip pop pop pop pop}bd/@i{@sm @gs @ii 6 index 1 ne{/$frg true -def pop pop}{1 eq{s1t s1c s1m s1y s1k s1n $O @scc_5/$frg xd}{/$frg false def} -ifelse 1 eq{@gs $ctm setmatrix F @gr}if}ifelse @np/$ury xd/$urx xd/$lly xd -/$llx xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul 8 div ceiling cvi string -def $bkg $frg or{$SDF{$SCF $SCA $SCP @ss}if $llx $lly Tl $urx $llx sub $ury -$lly sub scale $bkg{$t $c $m $y $k $n $o @scc_5 pop}if $wid $hei abs $bts 1 eq -{$bkg}{$bts}ifelse[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]/tcc load $bts -1 eq{imagemask}{image}ifelse $SDF{$dsf $dsa $dsp @ss}if}{$hei abs{tcc pop} -repeat}ifelse @gr $ctm setmatrix}bd/@I{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd -/$llx xd/$ncl xd/$bts xd/$hei xd/$wid xd $ngx $llx $lly Tl $urx $llx sub $ury -$lly sub scale $wid $hei abs $bts[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse -]$msimage false eq $ncl 1 eq or{/$dat $wid $bts mul $ncl mul 8 div ceiling cvi -string def/@cc load false $ncl ColorImage}{$wid $bts mul 8 div ceiling cvi $ncl -3 eq{dup dup/$dat1 exch string def/$dat2 exch string def/$dat3 exch string def -/@cc1 load/@cc2 load/@cc3 load}{dup dup dup/$dat1 exch string def/$dat2 exch -string def/$dat3 exch string def/$dat4 exch string def/@cc1 load/@cc2 load -/@cc3 load/@cc4 load}ifelse true $ncl ColorImage}ifelse $SDF{$dsf $dsa $dsp -@ss}if @gr $ctm setmatrix}bd/@cc1{currentfile $dat1 readhexstring pop}bd/@cc2{ -currentfile $dat2 readhexstring pop}bd/@cc3{currentfile $dat3 readhexstring pop -}bd/@cc4{currentfile $dat4 readhexstring pop}bd/$msimage false def/COMP 0 def -/MaskedImage false def L2?{/@I_2{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd/$llx -xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul $ncl mul 8 div ceiling -cvi string def $ngx $ncl 1 eq{/DeviceGray}{$ncl 3 eq{/DeviceRGB}{/DeviceCMYK} -ifelse}ifelse setcolorspace $llx $lly Tl $urx $llx sub $ury $lly sub scale 8 -dict begin/ImageType 1 def/Width $wid def/Height $hei abs def/BitsPerComponent -$bts def/Decode $ncl 1 eq{[0 1]}{$ncl 3 eq{[0 1 0 1 0 1]}{[0 1 0 1 0 1 0 1]} -ifelse}ifelse def/ImageMatrix[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]def -/DataSource currentfile/ASCII85Decode filter COMP 1 eq{/DCTDecode filter}{COMP -2 eq{/RunLengthDecode filter}if}ifelse def currentdict end image $SDF{$dsf $dsa -$dsp @ss}if @gr $ctm setmatrix}bd}{/@I_2{}bd}ifelse/@I_3{@sm @gs @ii @np/$ury -xd/$urx xd/$lly xd/$llx xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul -$ncl mul 8 div ceiling cvi string def $ngx $ncl 1 eq{/DeviceGray}{$ncl 3 eq -{/DeviceRGB}{/DeviceCMYK}ifelse}ifelse setcolorspace $llx $lly Tl $urx $llx sub -$ury $lly sub scale/ImageDataDict 8 dict def ImageDataDict begin/ImageType 1 -def/Width $wid def/Height $hei abs def/BitsPerComponent $bts def/Decode $ncl 1 -eq{[0 1]}{$ncl 3 eq{[0 1 0 1 0 1]}{[0 1 0 1 0 1 0 1]}ifelse}ifelse def -/ImageMatrix[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]def/DataSource -currentfile/ASCII85Decode filter COMP 1 eq{/DCTDecode filter}{COMP 2 eq{ -/RunLengthDecode filter}if}ifelse def end/MaskedImageDict 7 dict def -MaskedImageDict begin/ImageType 3 def/InterleaveType 3 def/MaskDict -ImageMaskDict def/DataDict ImageDataDict def end MaskedImageDict image $SDF -{$dsf $dsa $dsp @ss}if @gr $ctm setmatrix}bd/@SetMask{/$mbts xd/$mhei xd/$mwid -xd/ImageMaskDict 8 dict def ImageMaskDict begin/ImageType 1 def/Width $mwid def -/Height $mhei abs def/BitsPerComponent $mbts def/DataSource maskstream def -/ImageMatrix[$mwid 0 0 $mhei neg 0 $mhei 0 gt{$mhei}{0}ifelse]def/Decode[1 0] -def end}bd/@daq{dup type/arraytype eq{{}forall}if}bd/@BMP{/@cc xd UseLevel 3 eq -MaskedImage true eq and{7 -2 roll pop pop @I_3}{12 index 1 gt UseLevel 2 eq -UseLevel 3 eq or and{7 -2 roll pop pop @I_2}{11 index 1 eq{12 -1 roll pop @i}{ -7 -2 roll pop pop @I}ifelse}ifelse}ifelse}bd -% Copyright (c)1992-2002 Corel Corporation -% All rights reserved. v11.0 r0.0 -/@p{/$fil 1 def 1 eq dup/$vectpat xd{/$pfrg true def}{@gs $t $c $m $y $k $n $o -@scc_5/$pfrg xd @gr}ifelse/$pm xd/$psy xd/$psx xd/$pyf xd/$pxf xd/$pn xd}bd -/CorelPtrnDoFill{@gs $ctm setmatrix $pm concat CorelPtrnSetBBox wclip @sv Bburx -Bbury $pm itransform/$tury xd/$turx xd Bbllx Bblly $pm itransform/$tlly xd -/$tllx xd newpath $tllx $tlly m $tllx $tury l $turx $tury l $turx $tlly l $tllx -$tlly m @cp pathbbox @rs/$tury xd/$turx xd/$tlly xd/$tllx xd/$wid $turx $tllx -sub def/$hei $tury $tlly sub def @gs $vectpat{1 0 0 0 0 _ $o @scc_5{wfill}if}{ -$t $c $m $y $k $n $o @scc_5{SepMode_5 0 eq $pfrg or{$tllx $tlly Tl $wid $hei -scale <00> 8 1 false[8 0 0 1 0 0]{}imagemask}{/$bkg true def}ifelse}if}ifelse -@gr $wid 0 gt $hei 0 gt and{$pn cvlit load aload pop/$pd xd 3 -1 roll sub -/$phei xd exch sub/$pwid xd $wid $pwid div ceiling 1 add/$tlx xd $hei $phei div -ceiling 1 add/$tly xd currentdict/CorelPtrnL2Pattern known $psy 0 eq and $psx 0 -eq and{CorelPtrnL2Pattern}{$psx 0 eq{CorelPtrnTileVeritcal}{CorelPtrnTileHoriz -}ifelse}ifelse}if @gr @np/$bkg false def}bd/CorelPtrnSetBBox{pathbbox/$ury xd -/$urx xd/$lly xd/$llx xd}bd/CorelPtrnSetFirstTile{$tllx $pxf add dup $tllx gt -{$pwid sub}if/$tx xd $tury $pyf sub dup $tury lt{$phei add}if/$ty xd}bd/p{/$pm -xd 7 rp/$pyf xd/$pxf xd/$pn xd/$fil 1 def}bd/CorelPtrnDraw{@ep}bd -/CorelPtrnPutTile{@sv/$in true def 2 copy dup $lly le{/$in false def}if $phei -sub $ury ge{/$in false def}if dup $urx ge{/$in false def}if $pwid add $llx le{ -/$in false def}if $in{@np 2 copy m $pwid 0 rl 0 $phei neg rl $pwid neg 0 rl 0 -$phei rl clip @np $pn cvlit load aload pop 7 -1 roll 5 index sub 7 -1 roll 3 -index sub Tl matrix currentmatrix/$ctm xd CorelPtrnDraw pop pop pop pop}{pop -pop}ifelse @rs}bd/CorelPtrnTileHoriz{CorelPtrnSetFirstTile 0 1 $tly 1 sub{dup -$psx mul $tx add{dup $llx gt{$pwid sub}{exit}ifelse}loop exch $phei mul $ty -exch sub 0 1 $tlx 1 sub{$pwid mul 3 copy 3 -1 roll add exch CorelPtrnPutTile -pop}for pop pop}for}bd/CorelPtrnTileVeritcal{CorelPtrnSetFirstTile 0 1 $tlx 1 -sub{dup $pwid mul $tx add exch $psy mul $ty exch sub{dup $ury lt{$phei add} -{exit}ifelse}loop 0 1 $tly 1 sub{$phei mul 3 copy sub CorelPtrnPutTile pop}for -pop pop}for}bd L2? UseLevel 2 ge and{/CorelPtrnL2Pattern{@sv[$pn cvlit load -aload pop pop]$pwid $phei $pn cvlit load aload pop pop pop pop pathbbox pop pop -2 index sub exch 3 index sub 4 -2 roll pop pop exch matrix identmatrix -translate/PatternMatrix xd/PatternYStep xd/PatternXStep xd/PatternBBox xd -currentdict/PatternMainDict xd <> -PatternMatrix makepattern setpattern fill @rs}def}if -end -%%EndResource -%%EndProlog -%%BeginSetup -wCorel11Dict begin -@BeginSysCorelDict -2.6131 setmiterlimit -1.00 setflat -/$fst 128 def -%%EndSetup - -%%Page: 1 1 -%LogicalPage: 1 -%%BeginPageSetup -@sv -@sm -@sv -%%EndPageSetup -@rax %Note: Object -147.81600 74.66400 428.47200 355.32000 @E - 0 O 0 @g -0.00 0.00 0.00 1.00 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -428.47200 216.43200 m -286.70400 355.32000 L -147.81600 213.62400 L -286.70400 74.66400 L -428.47200 216.43200 L -@c -B - -@rax %Note: Object -286.70400 80.35200 422.78400 216.43200 @E - 0 O 0 @g -0.60 0.00 0.40 0.58 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -414.28800 216.43200 m -422.78400 216.43200 L -286.70400 80.35200 L -286.70400 88.84800 L -414.28800 216.43200 L -@c -B - -@rax %Note: Object -153.50400 80.35200 286.70400 213.62400 @E - 0 O 0 @g -0.60 0.00 0.40 0.51 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -153.50400 213.62400 m -162.00000 213.62400 L -286.70400 88.84800 L -286.70400 80.35200 L -153.50400 213.62400 L -@c -B - -@rax %Note: Object -153.50400 213.62400 286.70400 349.63200 @E - 0 O 0 @g -0.60 0.00 0.40 0.00 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -286.70400 341.20800 m -286.70400 349.63200 L -153.50400 213.62400 L -162.00000 213.62400 L -286.70400 341.20800 L -@c -B - -@rax %Note: Object -286.70400 216.43200 422.78400 349.63200 @E - 0 O 0 @g -0.73 0.00 0.99 0.00 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -286.70400 349.63200 m -286.70400 341.20800 L -414.28800 216.43200 L -422.78400 216.43200 L -286.70400 349.63200 L -@c -B - -@rax %Note: Object -162.00000 88.84800 414.28800 341.20800 @E - 0 O 0 @g -0.60 0.00 0.40 0.40 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -286.70400 88.84800 m -414.28800 216.43200 L -286.70400 341.20800 L -162.00000 213.62400 L -286.70400 88.84800 L -@c -B - -@rax %Note: Object -165.81600 103.03200 423.72000 344.01600 @E - 0 O 0 @g -0.00 0.00 0.00 1.00 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -313.20000 312.84000 m -321.69600 304.27200 L -321.69600 304.27200 L -263.08800 244.80000 L -263.08800 304.27200 L -268.77600 304.27200 L -277.27200 312.84000 L -277.27200 335.44800 L -268.77600 344.01600 L -174.31200 344.01600 L -165.81600 335.44800 L -165.81600 312.84000 L -174.31200 304.27200 L -180.93600 304.27200 L -180.93600 111.52800 L -191.30400 103.03200 L -220.60800 103.03200 L -423.72000 312.84000 L -423.72000 335.44800 L -415.22400 344.01600 L -322.63200 344.01600 L -313.20000 335.44800 L -313.20000 312.84000 L -@c -B - -@rax %Note: Object -171.43200 309.96000 271.58400 338.40000 @E - 0 O 0 @g -0.00 0.00 0.00 0.00 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -177.12000 309.96000 m -171.43200 315.64800 L -171.43200 332.64000 L -177.12000 338.32800 L -265.96800 338.40000 L -271.58400 332.64000 L -265.96800 329.90400 L -263.08800 332.64000 L -177.12000 318.52800 L -177.12000 309.96000 L -@c -B - -@rax %Note: Object -187.48800 108.72000 194.11200 315.64800 @E - 0 O 0 @g -0.00 0.00 0.00 0.00 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -194.11200 108.72000 m -187.48800 114.40800 L -187.48800 310.03200 L -194.11200 315.64800 L -194.11200 108.72000 L -@c -B - -@rax %Note: Object -247.03200 207.93600 341.56800 315.64800 @E - 0 O 0 @g -0.00 0.00 0.00 0.00 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -335.88000 309.96000 m -341.56800 315.64800 L -341.56800 304.27200 L -247.03200 207.93600 L -257.47200 230.61600 L -335.88000 309.96000 L -@c -B - -@rax %Note: Object -177.12000 309.96000 196.05600 321.33600 @E - 0 O 0 @g -0.00 0.00 0.00 0.50 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -196.05600 318.45600 m -194.11200 315.64800 L -187.48800 309.96000 L -177.12000 309.96000 L -177.12000 321.33600 L -196.05600 318.45600 L -@c -B - -@rax %Note: Object -247.03200 208.00800 271.58400 332.64000 @E - 0 O 0 @g -0.00 0.00 0.00 0.50 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -257.47200 309.96000 m -257.47200 230.61600 L -247.03200 208.00800 L -247.03200 315.72000 L -263.08800 315.72000 L -265.96800 318.52800 L -263.08800 332.64000 L -271.58400 332.64000 L -271.58400 315.64800 L -265.96800 309.96000 L -257.47200 309.96000 L -@c -B - -@rax %Note: Object -318.88800 309.96000 418.10400 338.32800 @E - 0 O 0 @g -0.00 0.00 0.00 0.00 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -324.50400 309.96000 m -318.88800 315.64800 L -318.88800 332.64000 L -325.44000 338.32800 L -411.48000 338.32800 L -418.10400 332.64000 L -408.60000 324.14400 L -324.50400 318.52800 L -324.50400 309.96000 L -@c -B - -@rax %Note: Object -194.11200 108.72000 418.10400 332.64000 @E - 0 O 0 @g -0.00 0.00 0.00 0.50 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -418.10400 315.64800 m -218.66400 108.72000 L -194.11200 108.72000 L -194.11200 117.21600 L -212.11200 117.21600 L -411.48000 321.33600 L -408.60000 332.64000 L -418.10400 332.64000 L -418.10400 315.64800 L -@c -B - -@rax %Note: Object -324.50400 309.96000 343.44000 321.33600 @E - 0 O 0 @g -0.00 0.00 0.00 0.50 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -343.44000 318.45600 m -341.49600 315.64800 L -335.88000 309.96000 L -324.50400 309.96000 L -324.50400 321.33600 L -343.44000 318.45600 L -@c -B - -@rax %Note: Object -177.12000 114.40800 412.41600 332.71200 @E - 0 O 0 @g -0.00 0.00 0.00 0.20 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -247.03200 208.00800 m -247.03200 315.72000 L -263.08800 315.72000 L -265.96800 318.52800 L -265.96800 329.90400 L -263.08800 332.71200 L -179.92800 332.71200 L -177.12000 329.90400 L -177.12000 318.52800 L -179.92800 315.72000 L -194.11200 315.72000 L -194.11200 117.21600 L -197.78400 114.40800 L -213.98400 114.40800 L -412.41600 321.33600 L -412.41600 329.47200 L -409.53600 332.71200 L -327.38400 332.71200 L -324.50400 329.90400 L -324.50400 318.45600 L -327.38400 315.64800 L -341.56800 315.64800 L -341.56800 304.27200 L -247.03200 208.00800 L -@c -B - -@rax %Note: Object -292.89600 185.18400 326.95200 213.55200 @E - 0 O 0 @g -0.00 0.00 0.00 1.00 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -298.58400 207.86400 m -305.20800 213.55200 L -322.20000 213.55200 L -326.95200 207.86400 L -321.26400 190.87200 L -314.71200 185.18400 L -297.72000 185.18400 L -292.89600 190.87200 L -298.58400 207.86400 L -@c -B - -@rax %Note: Object -304.27200 114.33600 424.22400 182.37600 @E - 0 O 0 @g -0.00 0.00 0.00 1.00 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -304.27200 114.33600 m -321.33600 165.31200 L -315.64800 165.31200 L -321.33600 182.37600 L -346.75200 182.37600 L -352.44000 176.68800 L -356.25600 176.68800 L -361.87200 182.37600 L -380.80800 182.37600 L -386.49600 176.68800 L -390.24000 176.68800 L -395.92800 182.37600 L -416.66400 182.37600 L -424.22400 171.00000 L -411.84000 130.68000 L -417.45600 130.68000 L -411.98400 114.33600 L -377.92800 114.33600 L -391.24800 154.00800 L -382.75200 154.00800 L -374.90400 130.82400 L -380.52000 130.82400 L -375.19200 114.33600 L -341.13600 114.33600 L -354.38400 154.00800 L -345.88800 154.00800 L -337.96800 130.68000 L -343.65600 130.68000 L -338.32800 114.33600 L -304.27200 114.33600 L -@c -B - -@rax %Note: Object -311.83200 120.02400 418.46400 176.68800 @E - 0 O 0 @g -0.00 0.00 0.00 0.20 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -414.07200 176.68800 m -418.46400 170.42400 L -404.49600 125.64000 L -410.11200 125.64000 L -408.24000 120.02400 L -385.56000 120.02400 L -398.80800 159.69600 L -378.93600 159.69600 L -367.63200 125.64000 L -373.24800 125.64000 L -371.37600 120.02400 L -348.69600 120.02400 L -361.94400 159.69600 L -342.07200 159.69600 L -330.76800 125.64000 L -336.45600 125.64000 L -334.51200 120.02400 L -311.83200 120.02400 L -328.89600 171.00000 L -323.20800 171.00000 L -325.08000 176.68800 L -345.88800 176.68800 L -351.57600 171.00000 L -357.19200 171.00000 L -362.88000 176.68800 L -379.87200 176.68800 L -385.56000 171.00000 L -391.24800 171.00000 L -396.93600 176.68800 L -414.07200 176.68800 L -@c -B - -@rax %Note: Object -267.40800 114.33600 318.45600 182.37600 @E - 0 O 0 @g -0.00 0.00 0.00 1.00 k -/$fm 0 def -318.45600 182.37600 m -301.10400 130.75200 L -307.00800 130.75200 L -301.39200 114.33600 L -267.40800 114.33600 L -284.40000 165.31200 L -278.71200 165.31200 L -318.45600 182.37600 L -@c -278.71200 165.31200 m -284.40000 182.37600 L -318.45600 182.37600 L -@c -F - -@rax %Note: Object -267.40800 114.33600 318.45600 182.37600 @E -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -318.45600 182.37600 m -301.10400 130.75200 L -307.00800 130.75200 L -301.39200 114.33600 L -267.40800 114.33600 L -284.40000 165.31200 L -278.71200 165.31200 L -@c -278.71200 165.31200 m -284.40000 182.37600 L -318.45600 182.37600 L -@c -S - -@rax %Note: Object -274.96800 120.02400 310.89600 176.68800 @E - 0 O 0 @g -0.00 0.00 0.00 0.20 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -297.64800 120.02400 m -299.52000 125.64000 L -293.83200 125.64000 L -310.89600 176.68800 L -287.28000 176.68800 L -285.33600 171.00000 L -291.96000 171.00000 L -274.96800 120.02400 L -297.64800 120.02400 L -@c -B - -@rax %Note: Object -299.52000 190.87200 320.32800 207.86400 @E - 0 O 0 @g -0.00 0.00 0.00 0.20 k -0 J 0 j [] 0 d 0 R 0 @G -0.00 0.00 0.00 1.00 K -0 0.21600 0.21600 0.00000 @w -/$fm 0 def -316.51200 193.68000 m -320.32800 205.05600 L -318.45600 207.86400 L -307.08000 207.86400 L -303.33600 205.05600 L -299.52000 193.68000 L -301.46400 190.87200 L -312.84000 190.87200 L -316.51200 193.68000 L -@c -B - -%%PageTrailer -@rs -@rs -%%Trailer -@EndSysCorelDict -end -%%DocumentSuppliedResources: procset wCorel11Dict 11.0 0 -%%EOF diff --git a/share/vim/vim73/vimrc_example.vim b/share/vim/vim73/vimrc_example.vim deleted file mode 100644 index b35100c1..00000000 --- a/share/vim/vim73/vimrc_example.vim +++ /dev/null @@ -1,96 +0,0 @@ -" An example for a vimrc file. -" -" Maintainer: Bram Moolenaar -" Last change: 2008 Dec 17 -" -" To use it, copy it to -" for Unix and OS/2: ~/.vimrc -" for Amiga: s:.vimrc -" for MS-DOS and Win32: $VIM\_vimrc -" for OpenVMS: sys$login:.vimrc - -" When started as "evim", evim.vim will already have done these settings. -if v:progname =~? "evim" - finish -endif - -" Use Vim settings, rather than Vi settings (much better!). -" This must be first, because it changes other options as a side effect. -set nocompatible - -" allow backspacing over everything in insert mode -set backspace=indent,eol,start - -if has("vms") - set nobackup " do not keep a backup file, use versions instead -else - set backup " keep a backup file -endif -set history=50 " keep 50 lines of command line history -set ruler " show the cursor position all the time -set showcmd " display incomplete commands -set incsearch " do incremental searching - -" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries -" let &guioptions = substitute(&guioptions, "t", "", "g") - -" Don't use Ex mode, use Q for formatting -map Q gq - -" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo, -" so that you can undo CTRL-U after inserting a line break. -inoremap u - -" In many terminal emulators the mouse works just fine, thus enable it. -if has('mouse') - set mouse=a -endif - -" Switch syntax highlighting on, when the terminal has colors -" Also switch on highlighting the last used search pattern. -if &t_Co > 2 || has("gui_running") - syntax on - set hlsearch -endif - -" Only do this part when compiled with support for autocommands. -if has("autocmd") - - " Enable file type detection. - " Use the default filetype settings, so that mail gets 'tw' set to 72, - " 'cindent' is on in C files, etc. - " Also load indent files, to automatically do language-dependent indenting. - filetype plugin indent on - - " Put these in an autocmd group, so that we can delete them easily. - augroup vimrcEx - au! - - " For all text files set 'textwidth' to 78 characters. - autocmd FileType text setlocal textwidth=78 - - " When editing a file, always jump to the last known cursor position. - " Don't do it when the position is invalid or when inside an event handler - " (happens when dropping a file on gvim). - " Also don't do it when the mark is in the first line, that is the default - " position when opening a file. - autocmd BufReadPost * - \ if line("'\"") > 1 && line("'\"") <= line("$") | - \ exe "normal! g`\"" | - \ endif - - augroup END - -else - - set autoindent " always set autoindenting on - -endif " has("autocmd") - -" Convenient command to see the difference between the current buffer and the -" file it was loaded from, thus the changes you made. -" Only define it when not defined already. -if !exists(":DiffOrig") - command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis - \ | wincmd p | diffthis -endif diff --git a/share/vim/vim73/autoload/README.txt b/share/vim/vim74/autoload/README.txt similarity index 100% rename from share/vim/vim73/autoload/README.txt rename to share/vim/vim74/autoload/README.txt diff --git a/share/vim/vim74/autoload/ada.vim b/share/vim/vim74/autoload/ada.vim new file mode 100644 index 00000000..1f8234a5 --- /dev/null +++ b/share/vim/vim74/autoload/ada.vim @@ -0,0 +1,635 @@ +"------------------------------------------------------------------------------ +" Description: Perform Ada specific completion & tagging. +" Language: Ada (2005) +" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $ +" Maintainer: Martin Krischik +" Taylor Venable +" Neil Bird +" Ned Okie +" $Author: krischik $ +" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ +" Version: 4.6 +" $Revision: 887 $ +" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $ +" History: 24.05.2006 MK Unified Headers +" 26.05.2006 MK ' should not be in iskeyword. +" 16.07.2006 MK Ada-Mode as vim-ball +" 02.10.2006 MK Better folding. +" 15.10.2006 MK Bram's suggestion for runtime integration +" 05.11.2006 MK Bram suggested not to use include protection for +" autoload +" 05.11.2006 MK Bram suggested to save on spaces +" 08.07.2007 TV fix mapleader problems. +" 09.05.2007 MK Session just won't work no matter how much +" tweaking is done +" 19.09.2007 NO still some mapleader problems +" Help Page: ft-ada-functions +"------------------------------------------------------------------------------ + +if version < 700 + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" Section: Constants {{{1 +" +let g:ada#DotWordRegex = '\a\w*\(\_s*\.\_s*\a\w*\)*' +let g:ada#WordRegex = '\a\w*' +let g:ada#Comment = "\\v^(\"[^\"]*\"|'.'|[^\"']){-}\\zs\\s*--.*" +let g:ada#Keywords = [] + +" Section: g:ada#Keywords {{{1 +" +" Section: add Ada keywords {{{2 +" +for Item in ['abort', 'else', 'new', 'return', 'abs', 'elsif', 'not', 'reverse', 'abstract', 'end', 'null', 'accept', 'entry', 'select', 'access', 'exception', 'of', 'separate', 'aliased', 'exit', 'or', 'subtype', 'all', 'others', 'synchronized', 'and', 'for', 'out', 'array', 'function', 'overriding', 'tagged', 'at', 'task', 'generic', 'package', 'terminate', 'begin', 'goto', 'pragma', 'then', 'body', 'private', 'type', 'if', 'procedure', 'case', 'in', 'protected', 'until', 'constant', 'interface', 'use', 'is', 'raise', 'declare', 'range', 'when', 'delay', 'limited', 'record', 'while', 'delta', 'loop', 'rem', 'with', 'digits', 'renames', 'do', 'mod', 'requeue', 'xor'] + let g:ada#Keywords += [{ + \ 'word': Item, + \ 'menu': 'keyword', + \ 'info': 'Ada keyword.', + \ 'kind': 'k', + \ 'icase': 1}] +endfor + +" Section: GNAT Project Files {{{3 +" +if exists ('g:ada_with_gnat_project_files') + for Item in ['project'] + let g:ada#Keywords += [{ + \ 'word': Item, + \ 'menu': 'keyword', + \ 'info': 'GNAT projectfile keyword.', + \ 'kind': 'k', + \ 'icase': 1}] + endfor +endif + +" Section: add standart exception {{{2 +" +for Item in ['Constraint_Error', 'Program_Error', 'Storage_Error', 'Tasking_Error', 'Status_Error', 'Mode_Error', 'Name_Error', 'Use_Error', 'Device_Error', 'End_Error', 'Data_Error', 'Layout_Error', 'Length_Error', 'Pattern_Error', 'Index_Error', 'Translation_Error', 'Time_Error', 'Argument_Error', 'Tag_Error', 'Picture_Error', 'Terminator_Error', 'Conversion_Error', 'Pointer_Error', 'Dereference_Error', 'Update_Error'] + let g:ada#Keywords += [{ + \ 'word': Item, + \ 'menu': 'exception', + \ 'info': 'Ada standart exception.', + \ 'kind': 'x', + \ 'icase': 1}] +endfor + +" Section: add GNAT exception {{{3 +" +if exists ('g:ada_gnat_extensions') + for Item in ['Assert_Failure'] + let g:ada#Keywords += [{ + \ 'word': Item, + \ 'menu': 'exception', + \ 'info': 'GNAT exception.', + \ 'kind': 'x', + \ 'icase': 1}] + endfor +endif + +" Section: add Ada buildin types {{{2 +" +for Item in ['Boolean', 'Integer', 'Natural', 'Positive', 'Float', 'Character', 'Wide_Character', 'Wide_Wide_Character', 'String', 'Wide_String', 'Wide_Wide_String', 'Duration'] + let g:ada#Keywords += [{ + \ 'word': Item, + \ 'menu': 'type', + \ 'info': 'Ada buildin type.', + \ 'kind': 't', + \ 'icase': 1}] +endfor + +" Section: add GNAT buildin types {{{3 +" +if exists ('g:ada_gnat_extensions') + for Item in ['Short_Integer', 'Short_Short_Integer', 'Long_Integer', 'Long_Long_Integer', 'Short_Float', 'Short_Short_Float', 'Long_Float', 'Long_Long_Float'] + let g:ada#Keywords += [{ + \ 'word': Item, + \ 'menu': 'type', + \ 'info': 'GNAT buildin type.', + \ 'kind': 't', + \ 'icase': 1}] + endfor +endif + +" Section: add Ada Attributes {{{2 +" +for Item in ['''Access', '''Address', '''Adjacent', '''Aft', '''Alignment', '''Base', '''Bit_Order', '''Body_Version', '''Callable', '''Caller', '''Ceiling', '''Class', '''Component_Size', '''Compose', '''Constrained', '''Copy_Sign', '''Count', '''Definite', '''Delta', '''Denorm', '''Digits', '''Emax', '''Exponent', '''External_Tag', '''Epsilon', '''First', '''First_Bit', '''Floor', '''Fore', '''Fraction', '''Identity', '''Image', '''Input', '''Large', '''Last', '''Last_Bit', '''Leading_Part', '''Length', '''Machine', '''Machine_Emax', '''Machine_Emin', '''Machine_Mantissa', '''Machine_Overflows', '''Machine_Radix', '''Machine_Rounding', '''Machine_Rounds', '''Mantissa', '''Max', '''Max_Size_In_Storage_Elements', '''Min', '''Mod', '''Model', '''Model_Emin', '''Model_Epsilon', '''Model_Mantissa', '''Model_Small', '''Modulus', '''Output', '''Partition_ID', '''Pos', '''Position', '''Pred', '''Priority', '''Range', '''Read', '''Remainder', '''Round', '''Rounding', '''Safe_Emax', '''Safe_First', '''Safe_Large', '''Safe_Last', '''Safe_Small', '''Scale', '''Scaling', '''Signed_Zeros', '''Size', '''Small', '''Storage_Pool', '''Storage_Size', '''Stream_Size', '''Succ', '''Tag', '''Terminated', '''Truncation', '''Unbiased_Rounding', '''Unchecked_Access', '''Val', '''Valid', '''Value', '''Version', '''Wide_Image', '''Wide_Value', '''Wide_Wide_Image', '''Wide_Wide_Value', '''Wide_Wide_Width', '''Wide_Width', '''Width', '''Write'] + let g:ada#Keywords += [{ + \ 'word': Item, + \ 'menu': 'attribute', + \ 'info': 'Ada attribute.', + \ 'kind': 'a', + \ 'icase': 1}] +endfor + +" Section: add GNAT Attributes {{{3 +" +if exists ('g:ada_gnat_extensions') + for Item in ['''Abort_Signal', '''Address_Size', '''Asm_Input', '''Asm_Output', '''AST_Entry', '''Bit', '''Bit_Position', '''Code_Address', '''Default_Bit_Order', '''Elaborated', '''Elab_Body', '''Elab_Spec', '''Emax', '''Enum_Rep', '''Epsilon', '''Fixed_Value', '''Has_Access_Values', '''Has_Discriminants', '''Img', '''Integer_Value', '''Machine_Size', '''Max_Interrupt_Priority', '''Max_Priority', '''Maximum_Alignment', '''Mechanism_Code', '''Null_Parameter', '''Object_Size', '''Passed_By_Reference', '''Range_Length', '''Storage_Unit', '''Target_Name', '''Tick', '''To_Address', '''Type_Class', '''UET_Address', '''Unconstrained_Array', '''Universal_Literal_String', '''Unrestricted_Access', '''VADS_Size', '''Value_Size', '''Wchar_T_Size', '''Word_Size'] + let g:ada#Keywords += [{ + \ 'word': Item, + \ 'menu': 'attribute', + \ 'info': 'GNAT attribute.', + \ 'kind': 'a', + \ 'icase': 1}] + endfor +endif + +" Section: add Ada Pragmas {{{2 +" +for Item in ['All_Calls_Remote', 'Assert', 'Assertion_Policy', 'Asynchronous', 'Atomic', 'Atomic_Components', 'Attach_Handler', 'Controlled', 'Convention', 'Detect_Blocking', 'Discard_Names', 'Elaborate', 'Elaborate_All', 'Elaborate_Body', 'Export', 'Import', 'Inline', 'Inspection_Point', 'Interface (Obsolescent)', 'Interrupt_Handler', 'Interrupt_Priority', 'Linker_Options', 'List', 'Locking_Policy', 'Memory_Size (Obsolescent)', 'No_Return', 'Normalize_Scalars', 'Optimize', 'Pack', 'Page', 'Partition_Elaboration_Policy', 'Preelaborable_Initialization', 'Preelaborate', 'Priority', 'Priority_Specific_Dispatching', 'Profile', 'Pure', 'Queueing_Policy', 'Relative_Deadline', 'Remote_Call_Interface', 'Remote_Types', 'Restrictions', 'Reviewable', 'Shared (Obsolescent)', 'Shared_Passive', 'Storage_Size', 'Storage_Unit (Obsolescent)', 'Suppress', 'System_Name (Obsolescent)', 'Task_Dispatching_Policy', 'Unchecked_Union', 'Unsuppress', 'Volatile', 'Volatile_Components'] + let g:ada#Keywords += [{ + \ 'word': Item, + \ 'menu': 'pragma', + \ 'info': 'Ada pragma.', + \ 'kind': 'p', + \ 'icase': 1}] +endfor + +" Section: add GNAT Pragmas {{{3 +" +if exists ('g:ada_gnat_extensions') + for Item in ['Abort_Defer', 'Ada_83', 'Ada_95', 'Ada_05', 'Annotate', 'Ast_Entry', 'C_Pass_By_Copy', 'Comment', 'Common_Object', 'Compile_Time_Warning', 'Complex_Representation', 'Component_Alignment', 'Convention_Identifier', 'CPP_Class', 'CPP_Constructor', 'CPP_Virtual', 'CPP_Vtable', 'Debug', 'Elaboration_Checks', 'Eliminate', 'Export_Exception', 'Export_Function', 'Export_Object', 'Export_Procedure', 'Export_Value', 'Export_Valued_Procedure', 'Extend_System', 'External', 'External_Name_Casing', 'Finalize_Storage_Only', 'Float_Representation', 'Ident', 'Import_Exception', 'Import_Function', 'Import_Object', 'Import_Procedure', 'Import_Valued_Procedure', 'Initialize_Scalars', 'Inline_Always', 'Inline_Generic', 'Interface_Name', 'Interrupt_State', 'Keep_Names', 'License', 'Link_With', 'Linker_Alias', 'Linker_Section', 'Long_Float', 'Machine_Attribute', 'Main_Storage', 'Obsolescent', 'Passive', 'Polling', 'Profile_Warnings', 'Propagate_Exceptions', 'Psect_Object', 'Pure_Function', 'Restriction_Warnings', 'Source_File_Name', 'Source_File_Name_Project', 'Source_Reference', 'Stream_Convert', 'Style_Checks', 'Subtitle', 'Suppress_All', 'Suppress_Exception_Locations', 'Suppress_Initialization', 'Task_Info', 'Task_Name', 'Task_Storage', 'Thread_Body', 'Time_Slice', 'Title', 'Unimplemented_Unit', 'Universal_Data', 'Unreferenced', 'Unreserve_All_Interrupts', 'Use_VADS_Size', 'Validity_Checks', 'Warnings', 'Weak_External'] + let g:ada#Keywords += [{ + \ 'word': Item, + \ 'menu': 'pragma', + \ 'info': 'GNAT pragma.', + \ 'kind': 'p', + \ 'icase': 1}] + endfor +endif +" 1}}} + +" Section: g:ada#Ctags_Kinds {{{1 +" +let g:ada#Ctags_Kinds = { + \ 'P': ["packspec", "package specifications"], + \ 'p': ["package", "packages"], + \ 'T': ["typespec", "type specifications"], + \ 't': ["type", "types"], + \ 'U': ["subspec", "subtype specifications"], + \ 'u': ["subtype", "subtypes"], + \ 'c': ["component", "record type components"], + \ 'l': ["literal", "enum type literals"], + \ 'V': ["varspec", "variable specifications"], + \ 'v': ["variable", "variables"], + \ 'f': ["formal", "generic formal parameters"], + \ 'n': ["constant", "constants"], + \ 'x': ["exception", "user defined exceptions"], + \ 'R': ["subprogspec", "subprogram specifications"], + \ 'r': ["subprogram", "subprograms"], + \ 'K': ["taskspec", "task specifications"], + \ 'k': ["task", "tasks"], + \ 'O': ["protectspec", "protected data specifications"], + \ 'o': ["protected", "protected data"], + \ 'E': ["entryspec", "task/protected data entry specifications"], + \ 'e': ["entry", "task/protected data entries"], + \ 'b': ["label", "labels"], + \ 'i': ["identifier", "loop/declare identifiers"], + \ 'a': ["autovar", "automatic variables"], + \ 'y': ["annon", "loops and blocks with no identifier"]} + +" Section: ada#Word (...) {{{1 +" +" Extract current Ada word across multiple lines +" AdaWord ([line, column])\ +" +function ada#Word (...) + if a:0 > 1 + let l:Line_Nr = a:1 + let l:Column_Nr = a:2 - 1 + else + let l:Line_Nr = line('.') + let l:Column_Nr = col('.') - 1 + endif + + let l:Line = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' ) + + " Cope with tag searching for items in comments; if we are, don't loop + " backards looking for previous lines + if l:Column_Nr > strlen(l:Line) + " We were in a comment + let l:Line = getline(l:Line_Nr) + let l:Search_Prev_Lines = 0 + else + let l:Search_Prev_Lines = 1 + endif + + " Go backwards until we find a match (Ada ID) that *doesn't* include our + " location - i.e., the previous ID. This is because the current 'correct' + " match will toggle matching/not matching as we traverse characters + " backwards. Thus, we have to find the previous unrelated match, exclude + " it, then use the next full match (ours). + " Remember to convert vim column 'l:Column_Nr' [1..n] to string offset [0..(n-1)] + " ... but start, here, one after the required char. + let l:New_Column = l:Column_Nr + 1 + while 1 + let l:New_Column = l:New_Column - 1 + if l:New_Column < 0 + " Have to include previous l:Line from file + let l:Line_Nr = l:Line_Nr - 1 + if l:Line_Nr < 1 || !l:Search_Prev_Lines + " Start of file or matching in a comment + let l:Line_Nr = 1 + let l:New_Column = 0 + let l:Our_Match = match (l:Line, g:ada#WordRegex ) + break + endif + " Get previous l:Line, and prepend it to our search string + let l:New_Line = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' ) + let l:New_Column = strlen (l:New_Line) - 1 + let l:Column_Nr = l:Column_Nr + l:New_Column + let l:Line = l:New_Line . l:Line + endif + " Check to see if this is a match excluding 'us' + let l:Match_End = l:New_Column + + \ matchend (strpart (l:Line,l:New_Column), g:ada#WordRegex ) - 1 + if l:Match_End >= l:New_Column && + \ l:Match_End < l:Column_Nr + " Yes + let l:Our_Match = l:Match_End+1 + + \ match (strpart (l:Line,l:Match_End+1), g:ada#WordRegex ) + break + endif + endwhile + + " Got anything? + if l:Our_Match < 0 + return '' + else + let l:Line = strpart (l:Line, l:Our_Match) + endif + + " Now simply add further lines until the match gets no bigger + let l:Match_String = matchstr (l:Line, g:ada#WordRegex) + let l:Last_Line = line ('$') + let l:Line_Nr = line ('.') + 1 + while l:Line_Nr <= l:Last_Line + let l:Last_Match = l:Match_String + let l:Line = l:Line . + \ substitute (getline (l:Line_Nr), g:ada#Comment, '', '') + let l:Match_String = matchstr (l:Line, g:ada#WordRegex) + if l:Match_String == l:Last_Match + break + endif + endwhile + + " Strip whitespace & return + return substitute (l:Match_String, '\s\+', '', 'g') +endfunction ada#Word + +" Section: ada#List_Tag (...) {{{1 +" +" List tags in quickfix window +" +function ada#List_Tag (...) + if a:0 > 1 + let l:Tag_Word = ada#Word (a:1, a:2) + elseif a:0 > 0 + let l:Tag_Word = a:1 + else + let l:Tag_Word = ada#Word () + endif + + echo "Searching for" l:Tag_Word + + let l:Pattern = '^' . l:Tag_Word . '$' + let l:Tag_List = taglist (l:Pattern) + let l:Error_List = [] + " + " add symbols + " + for Tag_Item in l:Tag_List + if l:Tag_Item['kind'] == '' + let l:Tag_Item['kind'] = 's' + endif + + let l:Error_List += [ + \ l:Tag_Item['filename'] . '|' . + \ l:Tag_Item['cmd'] . '|' . + \ l:Tag_Item['kind'] . "\t" . + \ l:Tag_Item['name'] ] + endfor + set errorformat=%f\|%l\|%m + cexpr l:Error_List + cwindow +endfunction ada#List_Tag + +" Section: ada#Jump_Tag (Word, Mode) {{{1 +" +" Word tag - include '.' and if Ada make uppercase +" +function ada#Jump_Tag (Word, Mode) + if a:Word == '' + " Get current word + let l:Word = ada#Word() + if l:Word == '' + throw "NOT_FOUND: no identifier found." + endif + else + let l:Word = a:Word + endif + + echo "Searching for " . l:Word + + try + execute a:Mode l:Word + catch /.*:E426:.*/ + let ignorecase = &ignorecase + set ignorecase + execute a:Mode l:Word + let &ignorecase = ignorecase + endtry + + return +endfunction ada#Jump_Tag + +" Section: ada#Insert_Backspace () {{{1 +" +" Backspace at end of line after auto-inserted commentstring '-- ' wipes it +" +function ada#Insert_Backspace () + let l:Line = getline ('.') + if col ('.') > strlen (l:Line) && + \ match (l:Line, '-- $') != -1 && + \ match (&comments,'--') != -1 + return "\\\" + else + return "\" + endif + + return +endfunction ada#InsertBackspace + +" Section: Insert Completions {{{1 +" +" Section: ada#User_Complete(findstart, base) {{{2 +" +" This function is used for the 'complete' option. +" +function! ada#User_Complete(findstart, base) + if a:findstart == 1 + " + " locate the start of the word + " + let line = getline ('.') + let start = col ('.') - 1 + while start > 0 && line[start - 1] =~ '\i\|''' + let start -= 1 + endwhile + return start + else + " + " look up matches + " + let l:Pattern = '^' . a:base . '.*$' + " + " add keywords + " + for Tag_Item in g:ada#Keywords + if l:Tag_Item['word'] =~? l:Pattern + if complete_add (l:Tag_Item) == 0 + return [] + endif + if complete_check () + return [] + endif + endif + endfor + return [] + endif +endfunction ada#User_Complete + +" Section: ada#Completion (cmd) {{{2 +" +" Word completion (^N/^R/^X^]) - force '.' inclusion +function ada#Completion (cmd) + set iskeyword+=46 + return a:cmd . "\=ada#Completion_End ()\" +endfunction ada#Completion + +" Section: ada#Completion_End () {{{2 +" +function ada#Completion_End () + set iskeyword-=46 + return '' +endfunction ada#Completion_End + +" Section: ada#Create_Tags {{{1 +" +function ada#Create_Tags (option) + if a:option == 'file' + let l:Filename = fnamemodify (bufname ('%'), ':p') + elseif a:option == 'dir' + let l:Filename = + \ fnamemodify (bufname ('%'), ':p:h') . "*.ada " . + \ fnamemodify (bufname ('%'), ':p:h') . "*.adb " . + \ fnamemodify (bufname ('%'), ':p:h') . "*.ads" + else + let l:Filename = a:option + endif + execute '!ctags --excmd=number ' . l:Filename +endfunction ada#Create_Tags + +" Section: ada#Switch_Session {{{1 +" +function ada#Switch_Session (New_Session) + " + " you should not save to much date into the seession since they will + " be sourced + " + let l:sessionoptions=&sessionoptions + + try + set sessionoptions=buffers,curdir,folds,globals,resize,slash,tabpages,tabpages,unix,winpos,winsize + + if a:New_Session != v:this_session + " + " We actualy got a new session - otherwise there + " is nothing to do. + " + if strlen (v:this_session) > 0 + execute 'mksession! ' . v:this_session + endif + + let v:this_session = a:New_Session + + "if filereadable (v:this_session) + "execute 'source ' . v:this_session + "endif + + augroup ada_session + autocmd! + autocmd VimLeavePre * execute 'mksession! ' . v:this_session + augroup END + + "if exists ("g:Tlist_Auto_Open") && g:Tlist_Auto_Open + "TlistOpen + "endif + + endif + finally + let &sessionoptions=l:sessionoptions + endtry + + return +endfunction ada#Switch_Session + +" Section: GNAT Pretty Printer folding {{{1 +" +if exists('g:ada_folding') && g:ada_folding[0] == 'g' + " + " Lines consisting only of ')' ';' are due to a gnat pretty bug and + " have the same level as the line above (can't happen in the first + " line). + " + let s:Fold_Collate = '^\([;)]*$\|' + + " + " some lone statements are folded with the line above + " + if stridx (g:ada_folding, 'i') >= 0 + let s:Fold_Collate .= '\s\+\$\|' + endif + if stridx (g:ada_folding, 'b') >= 0 + let s:Fold_Collate .= '\s\+\$\|' + endif + if stridx (g:ada_folding, 'p') >= 0 + let s:Fold_Collate .= '\s\+\$\|' + endif + if stridx (g:ada_folding, 'x') >= 0 + let s:Fold_Collate .= '\s\+\$\|' + endif + + " We also handle empty lines and + " comments here. + let s:Fold_Collate .= '--\)' + + function ada#Pretty_Print_Folding (Line) " {{{2 + let l:Text = getline (a:Line) + + if l:Text =~ s:Fold_Collate + " + " fold with line above + " + let l:Level = "=" + elseif l:Text =~ '^\s\+(' + " + " gnat outdents a line which stards with a ( by one characters so + " that parameters which follow are aligned. + " + let l:Level = (indent (a:Line) + 1) / &shiftwidth + else + let l:Level = indent (a:Line) / &shiftwidth + endif + + return l:Level + endfunction ada#Pretty_Print_Folding " }}}2 +endif + +" Section: Options and Menus {{{1 +" +" Section: ada#Switch_Syntax_Options {{{2 +" +function ada#Switch_Syntax_Option (option) + syntax off + if exists ('g:ada_' . a:option) + unlet g:ada_{a:option} + echo a:option . 'now off' + else + let g:ada_{a:option}=1 + echo a:option . 'now on' + endif + syntax on +endfunction ada#Switch_Syntax_Option + +" Section: ada#Map_Menu {{{2 +" +function ada#Map_Menu (Text, Keys, Command) + if a:Keys[0] == ':' + execute + \ "50amenu " . + \ "Ada." . escape(a:Text, ' ') . + \ "" . a:Keys . + \ " :" . a:Command . "" + execute + \ "command -buffer " . + \ a:Keys[1:] . + \" :" . a:Command . "" + elseif a:Keys[0] == '<' + execute + \ "50amenu " . + \ "Ada." . escape(a:Text, ' ') . + \ "" . a:Keys . + \ " :" . a:Command . "" + execute + \ "nnoremap " . + \ a:Keys . + \" :" . a:Command . "" + execute + \ "inoremap " . + \ a:Keys . + \" :" . a:Command . "" + else + if exists("g:mapleader") + let l:leader = g:mapleader + else + let l:leader = '\' + endif + execute + \ "50amenu " . + \ "Ada." . escape(a:Text, ' ') . + \ "" . escape(l:leader . "a" . a:Keys , '\') . + \ " :" . a:Command . "" + execute + \ "nnoremap " . + \ escape(l:leader . "a" . a:Keys , '\') . + \" :" . a:Command + execute + \ "inoremap " . + \ escape(l:leader . "a" . a:Keys , '\') . + \" :" . a:Command + endif + return +endfunction + +" Section: ada#Map_Popup {{{2 +" +function ada#Map_Popup (Text, Keys, Command) + if exists("g:mapleader") + let l:leader = g:mapleader + else + let l:leader = '\' + endif + execute + \ "50amenu " . + \ "PopUp." . escape(a:Text, ' ') . + \ "" . escape(l:leader . "a" . a:Keys , '\') . + \ " :" . a:Command . "" + + call ada#Map_Menu (a:Text, a:Keys, a:Command) + return +endfunction ada#Map_Popup + +" }}}1 + +lockvar g:ada#WordRegex +lockvar g:ada#DotWordRegex +lockvar g:ada#Comment +lockvar! g:ada#Keywords +lockvar! g:ada#Ctags_Kinds + +let &cpo = s:keepcpo +unlet s:keepcpo + +finish " 1}}} + +"------------------------------------------------------------------------------ +" Copyright (C) 2006 Martin Krischik +" +" Vim is Charityware - see ":help license" or uganda.txt for licence details. +"------------------------------------------------------------------------------ +" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab +" vim: foldmethod=marker diff --git a/share/vim/vim73/autoload/adacomplete.vim b/share/vim/vim74/autoload/adacomplete.vim similarity index 100% rename from share/vim/vim73/autoload/adacomplete.vim rename to share/vim/vim74/autoload/adacomplete.vim diff --git a/share/vim/vim74/autoload/ccomplete.vim b/share/vim/vim74/autoload/ccomplete.vim new file mode 100644 index 00000000..d5bfa076 --- /dev/null +++ b/share/vim/vim74/autoload/ccomplete.vim @@ -0,0 +1,610 @@ +" Vim completion script +" Language: C +" Maintainer: Bram Moolenaar +" Last Change: 2012 Jun 20 + +let s:cpo_save = &cpo +set cpo&vim + +" 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 + + " init cache for vimgrep to empty + let s:grepCache = {} + + " 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 stridx(strpart(line, 0, col), ';') != -1 + " Handle multiple declarations on the same line. + let col2 = col - 1 + while line[col2] != ';' + let col2 -= 1 + endwhile + let line = strpart(line, col2 + 1) + let col -= col2 + endif + if stridx(strpart(line, 0, col), ',') != -1 + " Handle multiple declarations on the same line in a function + " declaration. + let col2 = col - 1 + while line[col2] != ',' + let col2 -= 1 + endwhile + if strpart(line, col2 + 1, col - col2 - 1) =~ ' *[^ ][^ ]* *[^ ]' + let line = strpart(line, col2 + 1) + let col -= col2 + endif + endif + if len(items) == 1 + " Completing one word and it's a local variable: May add '[', '.' or + " '->'. + let match = items[0] + let kind = 'v' + if match(line, '\<' . match . '\s*\[') > 0 + let match .= '[' + else + let res = s:Nextitem(strpart(line, 0, col), [''], 0, 1) + 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' : '', 'kind' : kind, 'info' : line}] + else + " Completing "var.", "var.something", etc. + let res = s:Nextitem(strpart(line, 0, col), items[1:], 0, 1) + endif + endif + + if len(items) == 1 + " Only one part, no "." or "->": complete from tags file. + let tags = taglist('^' . base) + + " Remove members, these can't appear without something in front. + call filter(tags, 'has_key(v:val, "kind") ? v:val["kind"] != "m" : 1') + + " Remove static matches in other files. + call filter(tags, '!has_key(v:val, "static") || !v:val["static"] || bufnr("%") == bufnr(v:val["filename"])') + + call extend(res, map(tags, 's:Tag2item(v:val)')) + endif + + if len(res) == 0 + " Find the variable in the tags file(s) + let diclist = taglist('^' . items[0] . '$') + + " Remove members, these can't appear without something in front. + call filter(diclist, 'has_key(v:val, "kind") ? v:val["kind"] != "m" : 1') + + let res = [] + for i in range(len(diclist)) + " New ctags has the "typeref" field. Patched version has "typename". + if has_key(diclist[i], 'typename') + call extend(res, s:StructMembers(diclist[i]['typename'], items[1:], 1)) + elseif has_key(diclist[i], 'typeref') + call extend(res, s:StructMembers(diclist[i]['typeref'], items[1:], 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, 1)) + 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, 1) + 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)) > 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 res = {'match': a:val['name']} + + let res['extra'] = s:Tagcmd2extra(a:val['cmd'], a:val['name'], a:val['filename']) + + let s = s:Dict2info(a:val) + if s != '' + let res['info'] = s + endif + + let res['tagline'] = '' + if has_key(a:val, "kind") + let kind = a:val['kind'] + let res['kind'] = kind + if kind == 'v' + let res['tagline'] = "\t" . a:val['cmd'] + let res['dict'] = a:val + elseif kind == 'f' + let res['match'] = a:val['name'] . '(' + endif + endif + + return res +endfunction + +" Use all the items in dictionary for the "info" entry. +function! s:Dict2info(dict) + let info = '' + for k in sort(keys(a:dict)) + let info .= k . repeat(' ', 10 - len(k)) + if k == 'cmd' + let info .= substitute(matchstr(a:dict['cmd'], '/^\s*\zs.*\ze$/'), '\\\(.\)', '\1', 'g') + else + let info .= a:dict[k] + endif + let info .= "\n" + endfor + return info +endfunc + +" Parse a tag line and return a dictionary with items like taglist() +function! s:ParseTagline(line) + let l = split(a:line, "\t") + let d = {} + if len(l) >= 3 + let d['name'] = l[0] + let d['filename'] = l[1] + let d['cmd'] = l[2] + let n = 2 + if l[2] =~ '^/' + " Find end of cmd, it may contain Tabs. + while n < len(l) && l[n] !~ '/;"$' + let n += 1 + let d['cmd'] .= " " . l[n] + endwhile + endif + for i in range(n + 1, len(l) - 1) + if l[i] == 'file:' + let d['static'] = 1 + elseif l[i] !~ ':' + let d['kind'] = l[i] + else + let d[matchstr(l[i], '[^:]*')] = matchstr(l[i], ':\zs.*') + endif + endfor + endif + + return d +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 add = s:GetAddition(line, a:val['match'], [a:val], a:brackets == '') + let res = {'word': a:val['match'] . a:brackets . add } + + if has_key(a:val, 'info') + " Use info from Tag2item(). + let res['info'] = a:val['info'] + else + " Parse the tag line and add each part to the "info" entry. + let s = s:Dict2info(s:ParseTagline(line)) + if s != '' + let res['info'] = s + endif + endif + + if has_key(a:val, 'kind') + let res['kind'] = a:val['kind'] + elseif add == '(' + let res['kind'] = 'f' + else + let s = matchstr(line, '\t\(kind:\)\=\zs\S\ze\(\t\|$\)') + if s != '' + let res['kind'] = s + endif + endif + + if has_key(a:val, 'extra') + let res['menu'] = a:val['extra'] + return res + endif + + " Isolate the command after the tag and filename. + let s = matchstr(line, '[^\t]*\t[^\t]*\t\zs\(/^.*$/\|[^\t]*\)\ze\(;"\t\|\t\|$\)') + if s != '' + let res['menu'] = s:Tagcmd2extra(s, a:val['match'], matchstr(line, '[^\t]*\t\zs[^\t]*\ze\t')) + endif + return res +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, '^/^\s*\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, all) + + " 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)) + + " Skip tokens starting with a non-ID character. + if tokens[tidx] !~ '^\h' + continue + endif + + " Recognize "struct foobar" and "union foobar". + " Also do "class foobar" when it's C++ after all (doesn't work very well + " though). + if (tokens[tidx] == 'struct' || tokens[tidx] == 'union' || tokens[tidx] == 'class') && tidx + 1 < len(tokens) + let res = s:StructMembers(tokens[tidx] . ':' . tokens[tidx + 1], a:items, a:all) + 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)) + let item = diclist[tagidx] + + " New ctags has the "typeref" field. Patched version has "typename". + if has_key(item, 'typeref') + call extend(res, s:StructMembers(item['typeref'], a:items, a:all)) + continue + endif + if has_key(item, 'typename') + call extend(res, s:StructMembers(item['typename'], a:items, a:all)) + continue + endif + + " Only handle typedefs here. + if item['kind'] != 't' + continue + endif + + " Skip matches local to another file. + if has_key(item, 'static') && item['static'] && bufnr('%') != bufnr(item['filename']) + continue + endif + + " For old ctags we recognize "typedef struct aaa" and + " "typedef union bbb" in the tags file command. + let cmd = item['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' || cmdtokens[0] == 'class' + 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, a:all)) + endif + elseif a:depth < 10 + " Could be "typedef other_T some_T". + call extend(res, s:Nextitem(cmdtokens[0], a:items, a:depth + 1, a:all)) + 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. +" When "all" is non-zero find all, otherwise just return 1 if there is any +" member. +function! s:StructMembers(typename, items, all) + " Todo: What about local structures? + let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")')) + if fnames == '' + return [] + endif + + let typename = a:typename + let qflist = [] + let cached = 0 + if a:all == 0 + let n = '1' " stop at first found match + if has_key(s:grepCache, a:typename) + let qflist = s:grepCache[a:typename] + let cached = 1 + endif + else + let n = '' + endif + if !cached + while 1 + exe 'silent! keepj noautocmd ' . n . '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 + + if a:all == 0 + " Store the result to be able to use it again later. + let s:grepCache[a:typename] = qflist + endif + endif + + " Put matching members in matches[]. + let matches = [] + for l in qflist + let memb = matchstr(l['text'], '[^\t]*') + if memb =~ '^' . a:items[0] + " Skip matches local to another file. + if match(l['text'], "\tfile:") < 0 || bufnr('%') == bufnr(matchstr(l['text'], '\t\zs[^\t]*')) + let item = {'match': memb, 'tagline': l['text']} + + " Add the kind of item. + let s = matchstr(l['text'], '\t\(kind:\)\=\zs\S\ze\(\t\|$\)') + if s != '' + let item['kind'] = s + if s == 'f' + let item['match'] = memb . '(' + endif + endif + + call add(matches, item) + endif + 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 :], a:all) + endif + + " Failed to find anything. + return [] +endfunction + +" For matching members, find matches for following items. +" When "all" is non-zero find all, otherwise just return 1 if there is any +" member. +function! s:SearchMembers(matches, items, all) + 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'] + elseif has_key(a:matches[i].dict, 'typeref') + let typename = a:matches[i].dict['typeref'] + endif + let line = "\t" . a:matches[i].dict['cmd'] + else + let line = a:matches[i]['tagline'] + let e = matchend(line, '\ttypename:') + if e < 0 + let e = matchend(line, '\ttyperef:') + endif + if e > 0 + " Use typename field + let typename = matchstr(line, '[^\t]*', e) + endif + endif + + if typename != '' + call extend(res, s:StructMembers(typename, a:items, a:all)) + 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, a:all)) + endif + endif + endif + if a:all == 0 && len(res) > 0 + break + endif + endfor + return res +endfunc + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim74/autoload/clojurecomplete.vim b/share/vim/vim74/autoload/clojurecomplete.vim new file mode 100644 index 00000000..704ea074 --- /dev/null +++ b/share/vim/vim74/autoload/clojurecomplete.vim @@ -0,0 +1,20 @@ +" Vim completion script +" Language: Clojure +" Maintainer: Sung Pae +" URL: https://github.com/guns/vim-clojure-static +" License: Same as Vim +" Last Change: 05 February 2013 + +" Special forms and public vars in clojure.core +" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-002/vim_clojure_static.clj +" Clojure 1.5.0-RC6 +let s:words = ["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-readably*","*read-eval*","*read-whitelist*","*source-path*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods",".","..","/","<","<=","=","==",">",">=","EMPTY-NODE","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc!","assoc","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","booleans","bound-fn","bound-fn*","bound?","butlast","byte","byte-array","bytes","case","cast","catch","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","concat","cond","cond->","cond->>","condp","conj!","conj","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","def","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj!","disj","dissoc!","dissoc","distinct","distinct?","do","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","doubles","drop","drop-last","drop-while","empty","empty?","ensure","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","finally","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","hash","hash-combine","hash-map","hash-set","identical?","identity","if","if-let","if-not","ifn?","import","in-ns","inc","inc'","init-proxy","instance?","int","int-array","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mod","monitor-enter","monitor-exit","munge","name","namespace","namespace-munge","neg?","new","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop!","pop","pop-thread-bindings","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","quot","quote","rand","rand-int","rand-nth","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","realized?","recur","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seque","sequence","sequential?","set!","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","slurp","some","some->","some->>","some-fn","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","symbol","symbol?","sync","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","throw","time","to-array","to-array-2d","trampoline","transient","tree-seq","true?","try","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","update-in","update-proxy","use","val","vals","var","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","when","when-first","when-let","when-not","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"] + +" Simple word completion omnifunc +function! clojurecomplete#Complete(findstart, base) + if a:findstart + return searchpos('\<', 'bnW', line('.'))[1] - 1 + else + return { 'words': filter(copy(s:words), 'v:val =~ "\\V\\^' . a:base . '"') } + endif +endfunction diff --git a/share/vim/vim73/autoload/csscomplete.vim b/share/vim/vim74/autoload/csscomplete.vim similarity index 100% rename from share/vim/vim73/autoload/csscomplete.vim rename to share/vim/vim74/autoload/csscomplete.vim diff --git a/share/vim/vim73/autoload/decada.vim b/share/vim/vim74/autoload/decada.vim similarity index 100% rename from share/vim/vim73/autoload/decada.vim rename to share/vim/vim74/autoload/decada.vim diff --git a/share/vim/vim74/autoload/getscript.vim b/share/vim/vim74/autoload/getscript.vim new file mode 100644 index 00000000..6b74d37d --- /dev/null +++ b/share/vim/vim74/autoload/getscript.vim @@ -0,0 +1,667 @@ +" --------------------------------------------------------------------- +" getscript.vim +" Author: Charles E. Campbell +" Date: Apr 17, 2013 +" Version: 35 +" Installing: :help glvs-install +" Usage: :help glvs +" +" GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim +"redraw!|call inputsave()|call input("Press to continue")|call inputrestore() +" --------------------------------------------------------------------- +" Initialization: {{{1 +" if you're sourcing this file, surely you can't be +" expecting vim to be in its vi-compatible mode! +if exists("g:loaded_getscript") + finish +endif +let g:loaded_getscript= "v35" +if &cp + echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)" + finish +endif +if v:version < 702 + echohl WarningMsg + echo "***warning*** this version of getscript needs vim 7.2" + echohl Normal + finish +endif +let s:keepcpo = &cpo +set cpo&vim +"DechoTabOn + +" --------------------------- +" Global Variables: {{{1 +" --------------------------- +" Cygwin Detection ------- {{{2 +if !exists("g:getscript_cygwin") + if has("win32") || has("win95") || has("win64") || has("win16") + if &shell =~ '\%(\\|\\)\%(\.exe\)\=$' + let g:getscript_cygwin= 1 + else + let g:getscript_cygwin= 0 + endif + else + let g:getscript_cygwin= 0 + endif +endif + +" wget vs curl {{{2 +if !exists("g:GetLatestVimScripts_wget") + if executable("wget") + let g:GetLatestVimScripts_wget= "wget" + elseif executable("curl") + let g:GetLatestVimScripts_wget= "curl" + else + let g:GetLatestVimScripts_wget = 'echo "GetLatestVimScripts needs wget or curl"' + let g:GetLatestVimScripts_options = "" + endif +endif + +" options that wget and curl require: +if !exists("g:GetLatestVimScripts_options") + if g:GetLatestVimScripts_wget == "wget" + let g:GetLatestVimScripts_options= "-q -O" + elseif g:GetLatestVimScripts_wget == "curl" + let g:GetLatestVimScripts_options= "-s -O" + else + let g:GetLatestVimScripts_options= "" + endif +endif + +" by default, allow autoinstall lines to work +if !exists("g:GetLatestVimScripts_allowautoinstall") + let g:GetLatestVimScripts_allowautoinstall= 1 +endif + +" set up default scriptaddr address +if !exists("g:GetLatestVimScripts_scriptaddr") + let g:GetLatestVimScripts_scriptaddr = 'http://vim.sourceforge.net/script.php?script_id=' +endif + +"" For debugging: +"let g:GetLatestVimScripts_wget = "echo" +"let g:GetLatestVimScripts_options = "options" + +" --------------------------------------------------------------------- +" Check If AutoInstall Capable: {{{1 +let s:autoinstall= "" +if g:GetLatestVimScripts_allowautoinstall + + if (has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")) && &shell != "bash" + " windows (but not cygwin/bash) + let s:dotvim= "vimfiles" + if !exists("g:GetLatestVimScripts_mv") + let g:GetLatestVimScripts_mv= "ren" + endif + + else + " unix + let s:dotvim= ".vim" + if !exists("g:GetLatestVimScripts_mv") + let g:GetLatestVimScripts_mv= "mv" + endif + endif + + if exists("g:GetLatestVimScripts_autoinstalldir") && isdirectory(g:GetLatestVimScripts_autoinstalldir) + let s:autoinstall= g:GetLatestVimScripts_autoinstalldir" + elseif exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim) + let s:autoinstall= $HOME."/".s:dotvim + endif +" call Decho("s:autoinstall<".s:autoinstall.">") +"else "Decho +" call Decho("g:GetLatestVimScripts_allowautoinstall=".g:GetLatestVimScripts_allowautoinstall.": :AutoInstall: disabled") +endif + +" --------------------------------------------------------------------- +" Public Interface: {{{1 +com! -nargs=0 GetLatestVimScripts call getscript#GetLatestVimScripts() +com! -nargs=0 GetScript call getscript#GetLatestVimScripts() +silent! com -nargs=0 GLVS call getscript#GetLatestVimScripts() + +" --------------------------------------------------------------------- +" GetLatestVimScripts: this function gets the latest versions of {{{1 +" scripts based on the list in +" (first dir in runtimepath)/GetLatest/GetLatestVimScripts.dat +fun! getscript#GetLatestVimScripts() +" call Dfunc("GetLatestVimScripts() autoinstall<".s:autoinstall.">") + +" insure that wget is executable + if executable(g:GetLatestVimScripts_wget) != 1 + echoerr "GetLatestVimScripts needs ".g:GetLatestVimScripts_wget." which apparently is not available on your system" +" call Dret("GetLatestVimScripts : wget not executable/availble") + return + endif + + " insure that fnameescape() is available + if !exists("*fnameescape") + echoerr "GetLatestVimScripts needs fnameescape() (provided by 7.1.299 or later)" + return + endif + + " Find the .../GetLatest subdirectory under the runtimepath + for datadir in split(&rtp,',') + [''] + if isdirectory(datadir."/GetLatest") +" call Decho("found directory<".datadir.">") + let datadir= datadir . "/GetLatest" + break + endif + if filereadable(datadir."GetLatestVimScripts.dat") +" call Decho("found ".datadir."/GetLatestVimScripts.dat") + break + endif + endfor + + " Sanity checks: readability and writability + if datadir == "" + echoerr 'Missing "GetLatest/" on your runtimepath - see :help glvs-dist-install' +" call Dret("GetLatestVimScripts : unable to find a GetLatest subdirectory") + return + endif + if filewritable(datadir) != 2 + echoerr "(getLatestVimScripts) Your ".datadir." isn't writable" +" call Dret("GetLatestVimScripts : non-writable directory<".datadir.">") + return + endif + let datafile= datadir."/GetLatestVimScripts.dat" + if !filereadable(datafile) + echoerr "Your data file<".datafile."> isn't readable" +" call Dret("GetLatestVimScripts : non-readable datafile<".datafile.">") + return + endif + if !filewritable(datafile) + echoerr "Your data file<".datafile."> isn't writable" +" call Dret("GetLatestVimScripts : non-writable datafile<".datafile.">") + return + endif + " -------------------- + " Passed sanity checks + " -------------------- + +" call Decho("datadir <".datadir.">") +" call Decho("datafile <".datafile.">") + + " don't let any event handlers interfere (like winmanager's, taglist's, etc) + let eikeep = &ei + let hlskeep = &hls + let acdkeep = &acd + set ei=all hls&vim noacd + + " Edit the datafile (ie. GetLatestVimScripts.dat): + " 1. record current directory (origdir), + " 2. change directory to datadir, + " 3. split window + " 4. edit datafile + let origdir= getcwd() +" call Decho("exe cd ".fnameescape(substitute(datadir,'\','/','ge'))) + exe "cd ".fnameescape(substitute(datadir,'\','/','ge')) + split +" call Decho("exe e ".fnameescape(substitute(datafile,'\','/','ge'))) + exe "e ".fnameescape(substitute(datafile,'\','/','ge')) + res 1000 + let s:downloads = 0 + let s:downerrors= 0 + + " Check on dependencies mentioned in plugins +" call Decho(" ") +" call Decho("searching plugins for GetLatestVimScripts dependencies") + let lastline = line("$") +" call Decho("lastline#".lastline) + let firstdir = substitute(&rtp,',.*$','','') + let plugins = split(globpath(firstdir,"plugin/*.vim"),'\n') + let plugins = plugins + split(globpath(firstdir,"AsNeeded/*.vim"),'\n') + let foundscript = 0 + + " this loop updates the GetLatestVimScripts.dat file + " with dependencies explicitly mentioned in the plugins + " via GetLatestVimScripts: ... lines + " It reads the plugin script at the end of the GetLatestVimScripts.dat + " file, examines it, and then removes it. + for plugin in plugins +" call Decho(" ") +" call Decho("plugin<".plugin.">") + + " read plugin in + " evidently a :r creates a new buffer (the "#" buffer) that is subsequently unused -- bwiping it + $ +" call Decho(".dependency checking<".plugin."> line$=".line("$")) +" call Decho("..exe silent r ".fnameescape(plugin)) + exe "silent r ".fnameescape(plugin) + exe "silent bwipe ".bufnr("#") + + while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0 + let depscript = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e') + let depscriptid = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\(\d\+\)\s\+.*$','\1','') + let llp1 = lastline+1 +" call Decho("..depscript<".depscript.">") + + " found a "GetLatestVimScripts: # #" line in the script; + " check if its already in the datafile by searching backwards from llp1, + " the (prior to reading in the plugin script) last line plus one of the GetLatestVimScripts.dat file, + " for the script-id with no wrapping allowed. + let curline = line(".") + let noai_script = substitute(depscript,'\s*:AutoInstall:\s*','','e') + exe llp1 + let srchline = search('^\s*'.depscriptid.'\s\+\d\+\s\+.*$','bW') + if srchline == 0 + " this second search is taken when, for example, a 0 0 scriptname is to be skipped over + let srchline= search('\<'.noai_script.'\>','bW') + endif +" call Decho("..noai_script<".noai_script."> depscriptid#".depscriptid." srchline#".srchline." curline#".line(".")." lastline#".lastline) + + if srchline == 0 + " found a new script to permanently include in the datafile + let keep_rega = @a + let @a = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','') + echomsg "Appending <".@a."> to ".datafile." for ".depscript +" call Decho("..Appending <".@a."> to ".datafile." for ".depscript) + exe lastline."put a" + let @a = keep_rega + let lastline = llp1 + let curline = curline + 1 + let foundscript = foundscript + 1 +" else " Decho +" call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")") + endif + + let curline = curline + 1 + exe curline + endwhile + + " llp1: last line plus one + let llp1= lastline + 1 +" call Decho(".deleting lines: ".llp1.",$d") + exe "silent! ".llp1.",$d" + endfor +" call Decho("--- end dependency checking loop --- foundscript=".foundscript) +" call Decho(" ") +" call Dredir("BUFFER TEST (GetLatestVimScripts 1)","ls!") + + if foundscript == 0 + setlocal nomod + endif + + " -------------------------------------------------------------------- + " Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat + " -------------------------------------------------------------------- +" call Decho("begin: checking out-of-date scripts using datafile<".datafile.">") + setlocal lz + 1 +" /^-----/,$g/^\s*\d/call Decho(getline(".")) + 1 + /^-----/,$g/^\s*\d/call s:GetOneScript() +" call Decho("--- end out-of-date checking --- ") + + " Final report (an echomsg) + try + silent! ?^-------? + catch /^Vim\%((\a\+)\)\=:E114/ +" call Dret("GetLatestVimScripts : nothing done!") + return + endtry + exe "norm! kz\" + redraw! + let s:msg = "" + if s:downloads == 1 + let s:msg = "Downloaded one updated script to <".datadir.">" + elseif s:downloads == 2 + let s:msg= "Downloaded two updated scripts to <".datadir.">" + elseif s:downloads > 1 + let s:msg= "Downloaded ".s:downloads." updated scripts to <".datadir.">" + else + let s:msg= "Everything was already current" + endif + if s:downerrors > 0 + let s:msg= s:msg." (".s:downerrors." downloading errors)" + endif + echomsg s:msg + " save the file + if &mod + silent! w! + endif + q! + + " restore events and current directory + exe "cd ".fnameescape(substitute(origdir,'\','/','ge')) + let &ei = eikeep + let &hls = hlskeep + let &acd = acdkeep + setlocal nolz +" call Dredir("BUFFER TEST (GetLatestVimScripts 2)","ls!") +" call Dret("GetLatestVimScripts : did ".s:downloads." downloads") +endfun + +" --------------------------------------------------------------------- +" GetOneScript: (Get Latest Vim Script) this function operates {{{1 +" on the current line, interpreting two numbers and text as +" ScriptID, SourceID, and Filename. +" It downloads any scripts that have newer versions from vim.sourceforge.net. +fun! s:GetOneScript(...) +" call Dfunc("GetOneScript()") + + " set options to allow progress to be shown on screen + let rega= @a + let t_ti= &t_ti + let t_te= &t_te + let rs = &rs + set t_ti= t_te= nors + + " put current line on top-of-screen and interpret it into + " a script identifer : used to obtain webpage + " source identifier : used to identify current version + " and an associated comment: used to report on what's being considered + if a:0 >= 3 + let scriptid = a:1 + let srcid = a:2 + let fname = a:3 + let cmmnt = "" +" call Decho("scriptid<".scriptid.">") +" call Decho("srcid <".srcid.">") +" call Decho("fname <".fname.">") + else + let curline = getline(".") + if curline =~ '^\s*#' + let @a= rega +" call Dret("GetOneScript : skipping a pure comment line") + return + endif + let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)\(\s*#.*\)\=$' + try + let scriptid = substitute(curline,parsepat,'\1','e') + catch /^Vim\%((\a\+)\)\=:E486/ + let scriptid= 0 + endtry + try + let srcid = substitute(curline,parsepat,'\2','e') + catch /^Vim\%((\a\+)\)\=:E486/ + let srcid= 0 + endtry + try + let fname= substitute(curline,parsepat,'\3','e') + catch /^Vim\%((\a\+)\)\=:E486/ + let fname= "" + endtry + try + let cmmnt= substitute(curline,parsepat,'\4','e') + catch /^Vim\%((\a\+)\)\=:E486/ + let cmmnt= "" + endtry +" call Decho("curline <".curline.">") +" call Decho("parsepat<".parsepat.">") +" call Decho("scriptid<".scriptid.">") +" call Decho("srcid <".srcid.">") +" call Decho("fname <".fname.">") + endif + + " plugin author protection from downloading his/her own scripts atop their latest work + if scriptid == 0 || srcid == 0 + " When looking for :AutoInstall: lines, skip scripts that have 0 0 scriptname + let @a= rega +" call Dret("GetOneScript : skipping a scriptid==srcid==0 line") + return + endif + + let doautoinstall= 0 + if fname =~ ":AutoInstall:" +" call Decho("case AutoInstall: fname<".fname.">") + let aicmmnt= substitute(fname,'\s\+:AutoInstall:\s\+',' ','') +" call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall) + if s:autoinstall != "" + let doautoinstall = g:GetLatestVimScripts_allowautoinstall + endif + else + let aicmmnt= fname + endif +" call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall) + + exe "norm z\" + redraw! +" call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid) + echo 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid + + " grab a copy of the plugin's vim.sourceforge.net webpage + let scriptaddr = g:GetLatestVimScripts_scriptaddr.scriptid + let tmpfile = tempname() + let v:errmsg = "" + + " make up to three tries at downloading the description + let itry= 1 + while itry <= 3 +" call Decho(".try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr) + if has("win32") || has("win16") || has("win95") +" call Decho(".new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile).' '.shellescape(scriptaddr)."|bw!") + new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile).' '.shellescape(scriptaddr)|bw! + else +" call Decho(".exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile)." ".shellescape(scriptaddr)) + exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile)." ".shellescape(scriptaddr) + endif + if itry == 1 + exe "silent vsplit ".fnameescape(tmpfile) + else + silent! e % + endif + setlocal bh=wipe + + " find the latest source-id in the plugin's webpage + silent! 1 + let findpkg= search('Click on the package to download','W') + if findpkg > 0 + break + endif + let itry= itry + 1 + endwhile +" call Decho(" --- end downloading tries while loop --- itry=".itry) + + " testing: did finding "Click on the package..." fail? + if findpkg == 0 || itry >= 4 + silent q! + call delete(tmpfile) + " restore options + let &t_ti = t_ti + let &t_te = t_te + let &rs = rs + let s:downerrors = s:downerrors + 1 +" call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">") + echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">" +" call Dret("GetOneScript : srch for /Click on the package/ failed") + let @a= rega + return + endif +" call Decho('found "Click on the package to download"') + + let findsrcid= search('src_id=','W') + if findsrcid == 0 + silent q! + call delete(tmpfile) + " restore options + let &t_ti = t_ti + let &t_te = t_te + let &rs = rs + let s:downerrors = s:downerrors + 1 +" call Decho("***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">") + echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">" + let @a= rega +" call Dret("GetOneScript : srch for /src_id/ failed") + return + endif +" call Decho('found "src_id=" in description page') + + let srcidpat = '^\s*\([^<]\+\)<.*$' + let latestsrcid= substitute(getline("."),srcidpat,'\1','') + let sname = substitute(getline("."),srcidpat,'\2','') " script name actually downloaded +" call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> sname<".sname.">") + silent q! + call delete(tmpfile) + + " convert the strings-of-numbers into numbers + let srcid = srcid + 0 + let latestsrcid = latestsrcid + 0 +" call Decho("srcid=".srcid." latestsrcid=".latestsrcid." sname<".sname.">") + + " has the plugin's most-recent srcid increased, which indicates that it has been updated + if latestsrcid > srcid +" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."]: need to update <".sname.">") + + let s:downloads= s:downloads + 1 + if sname == bufname("%") + " GetLatestVimScript has to be careful about downloading itself + let sname= "NEW_".sname + endif + + " ----------------------------------------------------------------------------- + " the plugin has been updated since we last obtained it, so download a new copy + " ----------------------------------------------------------------------------- +" call Decho(".downloading new <".sname.">") + echomsg ".downloading new <".sname.">" + if has("win32") || has("win16") || has("win95") +" call Decho(".new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='.latestsrcid)."|q") + new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='.latestsrcid)|q + else +" call Decho(".exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id=')) + exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id=').latestsrcid + endif + + " -------------------------------------------------------------------------- + " AutoInstall: only if doautoinstall has been requested by the plugin itself + " -------------------------------------------------------------------------- +" call Decho("checking if plugin requested autoinstall: doautoinstall=".doautoinstall) + if doautoinstall +" call Decho(" ") +" call Decho("Autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname)) + if filereadable(sname) +" call Decho("<".sname."> is readable") +" call Decho("exe silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall)) + exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall) + let curdir = fnameescape(substitute(getcwd(),'\','/','ge')) + let installdir= curdir."/Installed" + if !isdirectory(installdir) + call mkdir(installdir) + endif +" call Decho("curdir<".curdir."> installdir<".installdir.">") +" call Decho("exe cd ".fnameescape(s:autoinstall)) + exe "cd ".fnameescape(s:autoinstall) + + " determine target directory for moves + let firstdir= substitute(&rtp,',.*$','','') + let pname = substitute(sname,'\..*','.vim','') +" call Decho("determine tgtdir: is <".firstdir.'/AsNeeded/'.pname." readable?") + if filereadable(firstdir.'/AsNeeded/'.pname) + let tgtdir= "AsNeeded" + else + let tgtdir= "plugin" + endif +" call Decho("tgtdir<".tgtdir."> pname<".pname.">") + + " decompress + if sname =~ '\.bz2$' +" call Decho("decompress: attempt to bunzip2 ".sname) + exe "sil !bunzip2 ".shellescape(sname) + let sname= substitute(sname,'\.bz2$','','') +" call Decho("decompress: new sname<".sname."> after bunzip2") + elseif sname =~ '\.gz$' +" call Decho("decompress: attempt to gunzip ".sname) + exe "sil !gunzip ".shellescape(sname) + let sname= substitute(sname,'\.gz$','','') +" call Decho("decompress: new sname<".sname."> after gunzip") + elseif sname =~ '\.xz$' +" call Decho("decompress: attempt to unxz ".sname) + exe "sil !unxz ".shellescape(sname) + let sname= substitute(sname,'\.xz$','','') +" call Decho("decompress: new sname<".sname."> after unxz") + else +" call Decho("no decompression needed") + endif + + " distribute archive(.zip, .tar, .vba, ...) contents + if sname =~ '\.zip$' +" call Decho("dearchive: attempt to unzip ".sname) + exe "silent !unzip -o ".shellescape(sname) + elseif sname =~ '\.tar$' +" call Decho("dearchive: attempt to untar ".sname) + exe "silent !tar -xvf ".shellescape(sname) + elseif sname =~ '\.tgz$' +" call Decho("dearchive: attempt to untar+gunzip ".sname) + exe "silent !tar -zxvf ".shellescape(sname) + elseif sname =~ '\.taz$' +" call Decho("dearchive: attempt to untar+uncompress ".sname) + exe "silent !tar -Zxvf ".shellescape(sname) + elseif sname =~ '\.tbz$' +" call Decho("dearchive: attempt to untar+bunzip2 ".sname) + exe "silent !tar -jxvf ".shellescape(sname) + elseif sname =~ '\.txz$' +" call Decho("dearchive: attempt to untar+xz ".sname) + exe "silent !tar -Jxvf ".shellescape(sname) + elseif sname =~ '\.vba$' +" call Decho("dearchive: attempt to handle a vimball: ".sname) + silent 1split + if exists("g:vimball_home") + let oldvimballhome= g:vimball_home + endif + let g:vimball_home= s:autoinstall + exe "silent e ".fnameescape(sname) + silent so % + silent q + if exists("oldvimballhome") + let g:vimball_home= oldvimballhome + else + unlet g:vimball_home + endif + else +" call Decho("no dearchiving needed") + endif + + " --------------------------------------------- + " move plugin to plugin/ or AsNeeded/ directory + " --------------------------------------------- + if sname =~ '.vim$' +" call Decho("dearchive: attempt to simply move ".sname." to ".tgtdir) + exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".tgtdir + else +" call Decho("dearchive: move <".sname."> to installdir<".installdir.">") + exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".installdir + endif + if tgtdir != "plugin" +" call Decho("exe silent !".g:GetLatestVimScripts_mv." plugin/".shellescape(pname)." ".tgtdir) + exe "silent !".g:GetLatestVimScripts_mv." plugin/".shellescape(pname)." ".tgtdir + endif + + " helptags step + let docdir= substitute(&rtp,',.*','','e')."/doc" +" call Decho("helptags: docdir<".docdir.">") + exe "helptags ".fnameescape(docdir) + exe "cd ".fnameescape(curdir) + endif + if fname !~ ':AutoInstall:' + let modline=scriptid." ".latestsrcid." :AutoInstall: ".fname.cmmnt + else + let modline=scriptid." ".latestsrcid." ".fname.cmmnt + endif + else + let modline=scriptid." ".latestsrcid." ".fname.cmmnt + endif + + " update the data in the file + call setline(line("."),modline) +" call Decho("update data in ".expand("%")."#".line(".").": modline<".modline.">") +" else " Decho +" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."], no need to update") + endif + + " restore options + let &t_ti = t_ti + let &t_te = t_te + let &rs = rs + let @a = rega +" call Dredir("BUFFER TEST (GetOneScript)","ls!") + +" call Dret("GetOneScript") +endfun + +" --------------------------------------------------------------------- +" Restore Options: {{{1 +let &cpo= s:keepcpo +unlet s:keepcpo + +" --------------------------------------------------------------------- +" Modelines: {{{1 +" vim: ts=8 sts=2 fdm=marker nowrap diff --git a/share/vim/vim73/autoload/gnat.vim b/share/vim/vim74/autoload/gnat.vim similarity index 100% rename from share/vim/vim73/autoload/gnat.vim rename to share/vim/vim74/autoload/gnat.vim diff --git a/share/vim/vim73/autoload/gzip.vim b/share/vim/vim74/autoload/gzip.vim similarity index 100% rename from share/vim/vim73/autoload/gzip.vim rename to share/vim/vim74/autoload/gzip.vim diff --git a/share/vim/vim74/autoload/htmlcomplete.vim b/share/vim/vim74/autoload/htmlcomplete.vim new file mode 100644 index 00000000..b2f1aeeb --- /dev/null +++ b/share/vim/vim74/autoload/htmlcomplete.vim @@ -0,0 +1,766 @@ +" Vim completion script +" Language: HTML and XHTML +" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) +" Last Change: 2011 Apr 28 + +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 ') + if style_start > 0 && style_end > 0 + let buf_styles = getline(style_start + 1, style_end - 1) + for a_style in buf_styles + if index(style, a_style) == -1 + if diff_style_start == 0 + if a_style =~ '\\_s\+.*id='oneCharWidth'.*\_s\+.*id='oneInputWidth'.*\_s\+.*id='oneEmWidth'\)\?\zs/d_ + $ + ??,$d_ + let temp = getline(1,'$') + " clean out id on the main content container because we already set it on + " the table + let temp[0] = substitute(temp[0], " id='vimCodeElement[^']*'", "", "") + " undo deletion of start and end part + " so we can later save the file as valid html + " TODO: restore using grabbed lines if undolevel is 1? + normal! 2u + if s:settings.use_css + call add(html, '

') + elseif s:settings.use_xhtml + call add(html, '
') + else + call add(html, '
') + endif + let html += temp + call add(html, '
') + + " Close this buffer + " TODO: the comment above says we're going to allow saving the file + " later...but here we discard it? + quit! + endfor + + let html[body_line_num] = body_line + + call add(html, '') + call add(html, '') + call add(html, s:body_end_line) + call add(html, '') + + " The generated HTML is admittedly ugly and takes a LONG time to fold. + " Make sure the user doesn't do syntax folding when loading a generated file, + " using a modeline. + call add(html, '') + + let i = 1 + let name = "Diff" . (s:settings.use_xhtml ? ".xhtml" : ".html") + " Find an unused file name if current file name is already in use + while filereadable(name) + let name = substitute(name, '\d*\.x\?html$', '', '') . i . '.' . fnamemodify(copy(name), ":t:e") + let i += 1 + endwhile + exe "topleft new " . name + setlocal modifiable + + " just in case some user autocmd creates content in the new buffer, make sure + " it is empty before proceeding + %d + + " set the fileencoding to match the charset we'll be using + let &l:fileencoding=s:settings.vim_encoding + + " According to http://www.w3.org/TR/html4/charset.html#doc-char-set, the byte + " order mark is highly recommend on the web when using multibyte encodings. But, + " it is not a good idea to include it on UTF-8 files. Otherwise, let Vim + " determine when it is actually inserted. + if s:settings.vim_encoding == 'utf-8' + setlocal nobomb + else + setlocal bomb + endif + + call append(0, html) + + if len(style) > 0 + 1 + let style_start = search('^')-1 + + " add required javascript in reverse order so we can just call append again + " and again without adjusting {{{ + + " insert script closing tag + call append(style_start, [ + \ '', + \ s:settings.use_xhtml ? '//]]>' : '-->', + \ "" + \ ]) + + " insert script which corrects the size of small input elements in + " prevent_copy mode. See 2html.vim for details on why this is needed and how + " it works. + if !empty(s:settings.prevent_copy) + call append(style_start, [ + \ '', + \ '/* simulate a "ch" unit by asking the browser how big a zero character is */', + \ 'function FixCharWidth() {', + \ ' /* get the hidden element which gives the width of a single character */', + \ ' var goodWidth = document.getElementById("oneCharWidth").clientWidth;', + \ ' /* get all input elements, we''ll filter on class later */', + \ ' var inputTags = document.getElementsByTagName("input");', + \ ' var ratio = 5;', + \ ' var inputWidth = document.getElementById("oneInputWidth").clientWidth;', + \ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;', + \ ' if (inputWidth > goodWidth) {', + \ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {', + \ ' ratio += 5;', + \ ' }', + \ ' document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;', + \ ' }', + \ '}' + \ ]) + endif + " + " insert javascript to get IDs from line numbers, and to open a fold before + " jumping to any lines contained therein + call append(style_start, [ + \ " /* Always jump to new location even if the line was hidden inside a fold, or", + \ " * we corrected the raw number to a line ID.", + \ " */", + \ " if (lineElem) {", + \ " lineElem.scrollIntoView(true);", + \ " }", + \ " return true;", + \ "}", + \ "if ('onhashchange' in window) {", + \ " window.onhashchange = JumpToLine;", + \ "}" + \ ]) + if s:settings.dynamic_folds + call append(style_start, [ + \ "", + \ " /* navigate upwards in the DOM tree to open all folds containing the line */", + \ " var node = lineElem;", + \ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')", + \ " {", + \ " if (node.className == 'closed-fold')", + \ " {", + \ " /* toggle open the fold ID (remove window ID) */", + \ " toggleFold(node.id.substr(4));", + \ " }", + \ " node = node.parentNode;", + \ " }", + \ ]) + endif + call append(style_start, [ + \ "", + \ "/* function to open any folds containing a jumped-to line before jumping to it */", + \ "function JumpToLine()", + \ "{", + \ " var lineNum;", + \ " lineNum = window.location.hash;", + \ " lineNum = lineNum.substr(1); /* strip off '#' */", + \ "", + \ " if (lineNum.indexOf('L') == -1) {", + \ " lineNum = 'L'+lineNum;", + \ " }", + \ " if (lineNum.indexOf('W') == -1) {", + \ " lineNum = 'W1'+lineNum;", + \ " }", + \ " lineElem = document.getElementById(lineNum);" + \ ]) + + " Insert javascript to toggle matching folds open and closed in all windows, + " if dynamic folding is active. + if s:settings.dynamic_folds + call append(style_start, [ + \ " function toggleFold(objID)", + \ " {", + \ " for (win_num = 1; win_num <= ".len(a:buf_list)."; win_num++)", + \ " {", + \ " var fold;", + \ ' fold = document.getElementById("win"+win_num+objID);', + \ " if(fold.className == 'closed-fold')", + \ " {", + \ " fold.className = 'open-fold';", + \ " }", + \ " else if (fold.className == 'open-fold')", + \ " {", + \ " fold.className = 'closed-fold';", + \ " }", + \ " }", + \ " }", + \ ]) + endif + + " insert script tag; javascript is always needed for the line number + " normalization for URL hashes + call append(style_start, [ + \ " + +See |mysyntaxfile-add| for installing script languages permanently. + + +APACHE *apache.vim* *ft-apache-syntax* + +The apache syntax file provides syntax highlighting depending on Apache HTTP +server version, by default for 1.3.x. Set "apache_version" to Apache version +(as a string) to get highlighting for another version. Example: > + + :let apache_version = "2.0" +< + + *asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k* +ASSEMBLY *ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax* + *ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim* + +Files matching "*.i" could be Progress or Assembly. If the automatic detection +doesn't work for you, or you don't edit Progress at all, use this in your +startup vimrc: > + :let filetype_i = "asm" +Replace "asm" with the type of assembly you use. + +There are many types of assembly languages that all use the same file name +extensions. Therefore you will have to select the type yourself, or add a +line in the assembly file that Vim will recognize. Currently these syntax +files are included: + asm GNU assembly (the default) + asm68k Motorola 680x0 assembly + asmh8300 Hitachi H-8300 version of GNU assembly + ia64 Intel Itanium 64 + fasm Flat assembly (http://flatassembler.net) + masm Microsoft assembly (probably works for any 80x86) + nasm Netwide assembly + tasm Turbo Assembly (with opcodes 80x86 up to Pentium, and + MMX) + pic PIC assembly (currently for PIC16F84) + +The most flexible is to add a line in your assembly file containing: > + asmsyntax=nasm +Replace "nasm" with the name of the real assembly syntax. This line must be +one of the first five lines in the file. No non-white text must be +immediately before or after this text. Note that specifying asmsyntax=foo is +equivalent to setting ft=foo in a |modeline|, and that in case of a conflict +between the two settings the one from the modeline will take precedence (in +particular, if you have ft=asm in the modeline, you will get the GNU syntax +highlighting regardless of what is specified as asmsyntax). + +The syntax type can always be overruled for a specific buffer by setting the +b:asmsyntax variable: > + :let b:asmsyntax = "nasm" + +If b:asmsyntax is not set, either automatically or by hand, then the value of +the global variable asmsyntax is used. This can be seen as a default assembly +language: > + :let asmsyntax = "nasm" + +As a last resort, if nothing is defined, the "asm" syntax is used. + + +Netwide assembler (nasm.vim) optional highlighting ~ + +To enable a feature: > + :let {variable}=1|set syntax=nasm +To disable a feature: > + :unlet {variable} |set syntax=nasm + +Variable Highlight ~ +nasm_loose_syntax unofficial parser allowed syntax not as Error + (parser dependent; not recommended) +nasm_ctx_outside_macro contexts outside macro not as Error +nasm_no_warn potentially risky syntax not as ToDo + + +ASPPERL and ASPVBS *ft-aspperl-syntax* *ft-aspvbs-syntax* + +*.asp and *.asa files could be either Perl or Visual Basic script. Since it's +hard to detect this you can set two global variables to tell Vim what you are +using. For Perl script use: > + :let g:filetype_asa = "aspperl" + :let g:filetype_asp = "aspperl" +For Visual Basic use: > + :let g:filetype_asa = "aspvbs" + :let g:filetype_asp = "aspvbs" + + +BAAN *baan.vim* *baan-syntax* + +The baan.vim gives syntax support for BaanC of release BaanIV upto SSA ERP LN +for both 3 GL and 4 GL programming. Large number of standard defines/constants +are supported. + +Some special violation of coding standards will be signalled when one specify +in ones |.vimrc|: > + let baan_code_stds=1 + +*baan-folding* + +Syntax folding can be enabled at various levels through the variables +mentioned below (Set those in your |.vimrc|). The more complex folding on +source blocks and SQL can be CPU intensive. + +To allow any folding and enable folding at function level use: > + let baan_fold=1 +Folding can be enabled at source block level as if, while, for ,... The +indentation preceding the begin/end keywords has to match (spaces are not +considered equal to a tab). > + let baan_fold_block=1 +Folding can be enabled for embedded SQL blocks as SELECT, SELECTDO, +SELECTEMPTY, ... The indentation preceding the begin/end keywords has to +match (spaces are not considered equal to a tab). > + let baan_fold_sql=1 +Note: Block folding can result in many small folds. It is suggested to |:set| +the options 'foldminlines' and 'foldnestmax' in |.vimrc| or use |:setlocal| in +.../after/syntax/baan.vim (see |after-directory|). Eg: > + set foldminlines=5 + set foldnestmax=6 + + +BASIC *basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax* + +Both Visual Basic and "normal" basic use the extension ".bas". To detect +which one should be used, Vim checks for the string "VB_Name" in the first +five lines of the file. If it is not found, filetype will be "basic", +otherwise "vb". Files with the ".frm" extension will always be seen as Visual +Basic. + + +C *c.vim* *ft-c-syntax* + +A few things in C highlighting are optional. To enable them assign any value +to the respective variable. Example: > + :let c_comment_strings = 1 +To disable them use ":unlet". Example: > + :unlet c_comment_strings + +Variable Highlight ~ +c_gnu GNU gcc specific items +c_comment_strings strings and numbers inside a comment +c_space_errors trailing white space and spaces before a +c_no_trail_space_error ... but no trailing spaces +c_no_tab_space_error ... but no spaces before a +c_no_bracket_error don't highlight {}; inside [] as errors +c_no_curly_error don't highlight {}; inside [] and () as errors; + except { and } in first column +c_curly_error highlight a missing }; this forces syncing from the + start of the file, can be slow +c_no_ansi don't do standard ANSI types and constants +c_ansi_typedefs ... but do standard ANSI types +c_ansi_constants ... but do standard ANSI constants +c_no_utf don't highlight \u and \U in strings +c_syntax_for_h for *.h files use C syntax instead of C++ and use objc + syntax instead of objcpp +c_no_if0 don't highlight "#if 0" blocks as comments +c_no_cformat don't highlight %-formats in strings +c_no_c99 don't highlight C99 standard items +c_no_c11 don't highlight C11 standard items + +When 'foldmethod' is set to "syntax" then /* */ comments and { } blocks will +become a fold. If you don't want comments to become a fold use: > + :let c_no_comment_fold = 1 +"#if 0" blocks are also folded, unless: > + :let c_no_if0_fold = 1 + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "c_minlines" internal variable +to a larger number: > + :let c_minlines = 100 +This will make the syntax synchronization start 100 lines before the first +displayed line. The default value is 50 (15 when c_no_if0 is set). The +disadvantage of using a larger number is that redrawing can become slow. + +When using the "#if 0" / "#endif" comment highlighting, notice that this only +works when the "#if 0" is within "c_minlines" from the top of the window. If +you have a long "#if 0" construct it will not be highlighted correctly. + +To match extra items in comments, use the cCommentGroup cluster. +Example: > + :au Syntax c call MyCadd() + :function MyCadd() + : syn keyword cMyItem contained Ni + : syn cluster cCommentGroup add=cMyItem + : hi link cMyItem Title + :endfun + +ANSI constants will be highlighted with the "cConstant" group. This includes +"NULL", "SIG_IGN" and others. But not "TRUE", for example, because this is +not in the ANSI standard. If you find this confusing, remove the cConstant +highlighting: > + :hi link cConstant NONE + +If you see '{' and '}' highlighted as an error where they are OK, reset the +highlighting for cErrInParen and cErrInBracket. + +If you want to use folding in your C files, you can add these lines in a file +in the "after" directory in 'runtimepath'. For Unix this would be +~/.vim/after/syntax/c.vim. > + syn sync fromstart + set foldmethod=syntax + +CH *ch.vim* *ft-ch-syntax* + +C/C++ interpreter. Ch has similar syntax highlighting to C and builds upon +the C syntax file. See |c.vim| for all the settings that are available for C. + +By setting a variable you can tell Vim to use Ch syntax for *.h files, instead +of C or C++: > + :let ch_syntax_for_h = 1 + + +CHILL *chill.vim* *ft-chill-syntax* + +Chill syntax highlighting is similar to C. See |c.vim| for all the settings +that are available. Additionally there is: + +chill_space_errors like c_space_errors +chill_comment_string like c_comment_strings +chill_minlines like c_minlines + + +CHANGELOG *changelog.vim* *ft-changelog-syntax* + +ChangeLog supports highlighting spaces at the start of a line. +If you do not like this, add following line to your .vimrc: > + let g:changelog_spacing_errors = 0 +This works the next time you edit a changelog file. You can also use +"b:changelog_spacing_errors" to set this per buffer (before loading the syntax +file). + +You can change the highlighting used, e.g., to flag the spaces as an error: > + :hi link ChangelogError Error +Or to avoid the highlighting: > + :hi link ChangelogError NONE +This works immediately. + + +COBOL *cobol.vim* *ft-cobol-syntax* + +COBOL highlighting has different needs for legacy code than it does for fresh +development. This is due to differences in what is being done (maintenance +versus development) and other factors. To enable legacy code highlighting, +add this line to your .vimrc: > + :let cobol_legacy_code = 1 +To disable it again, use this: > + :unlet cobol_legacy_code + + +COLD FUSION *coldfusion.vim* *ft-coldfusion-syntax* + +The ColdFusion has its own version of HTML comments. To turn on ColdFusion +comment highlighting, add the following line to your startup file: > + + :let html_wrong_comments = 1 + +The ColdFusion syntax file is based on the HTML syntax file. + + +CPP *cpp.vim* *ft-cpp-syntax* + +Most of things are same as |ft-c-syntax|. + +Variable Highlight ~ +cpp_no_c11 don't highlight C++11 standard items + + +CSH *csh.vim* *ft-csh-syntax* + +This covers the shell named "csh". Note that on some systems tcsh is actually +used. + +Detecting whether a file is csh or tcsh is notoriously hard. Some systems +symlink /bin/csh to /bin/tcsh, making it almost impossible to distinguish +between csh and tcsh. In case VIM guesses wrong you can set the +"filetype_csh" variable. For using csh: *g:filetype_csh* +> + :let g:filetype_csh = "csh" + +For using tcsh: > + + :let g:filetype_csh = "tcsh" + +Any script with a tcsh extension or a standard tcsh filename (.tcshrc, +tcsh.tcshrc, tcsh.login) will have filetype tcsh. All other tcsh/csh scripts +will be classified as tcsh, UNLESS the "filetype_csh" variable exists. If the +"filetype_csh" variable exists, the filetype will be set to the value of the +variable. + + +CYNLIB *cynlib.vim* *ft-cynlib-syntax* + +Cynlib files are C++ files that use the Cynlib class library to enable +hardware modelling and simulation using C++. Typically Cynlib files have a .cc +or a .cpp extension, which makes it very difficult to distinguish them from a +normal C++ file. Thus, to enable Cynlib highlighting for .cc files, add this +line to your .vimrc file: > + + :let cynlib_cyntax_for_cc=1 + +Similarly for cpp files (this extension is only usually used in Windows) > + + :let cynlib_cyntax_for_cpp=1 + +To disable these again, use this: > + + :unlet cynlib_cyntax_for_cc + :unlet cynlib_cyntax_for_cpp +< + +CWEB *cweb.vim* *ft-cweb-syntax* + +Files matching "*.w" could be Progress or cweb. If the automatic detection +doesn't work for you, or you don't edit Progress at all, use this in your +startup vimrc: > + :let filetype_w = "cweb" + + +DESKTOP *desktop.vim* *ft-desktop-syntax* + +Primary goal of this syntax file is to highlight .desktop and .directory files +according to freedesktop.org standard: +http://standards.freedesktop.org/desktop-entry-spec/latest/ +But actually almost none implements this standard fully. Thus it will +highlight all Unix ini files. But you can force strict highlighting according +to standard by placing this in your vimrc file: > + :let enforce_freedesktop_standard = 1 + + +DIRCOLORS *dircolors.vim* *ft-dircolors-syntax* + +The dircolors utility highlighting definition has one option. It exists to +provide compatibility with the Slackware GNU/Linux distributions version of +the command. It adds a few keywords that are generally ignored by most +versions. On Slackware systems, however, the utility accepts the keywords and +uses them for processing. To enable the Slackware keywords add the following +line to your startup file: > + let dircolors_is_slackware = 1 + + +DOCBOOK *docbk.vim* *ft-docbk-syntax* *docbook* +DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax* +DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax* + +There are two types of DocBook files: SGML and XML. To specify what type you +are using the "b:docbk_type" variable should be set. Vim does this for you +automatically if it can recognize the type. When Vim can't guess it the type +defaults to XML. +You can set the type manually: > + :let docbk_type = "sgml" +or: > + :let docbk_type = "xml" +You need to do this before loading the syntax file, which is complicated. +Simpler is setting the filetype to "docbkxml" or "docbksgml": > + :set filetype=docbksgml +or: > + :set filetype=docbkxml + +You can specify the DocBook version: > + :let docbk_ver = 3 +When not set 4 is used. + + +DOSBATCH *dosbatch.vim* *ft-dosbatch-syntax* + +There is one option with highlighting DOS batch files. This covers new +extensions to the Command Interpreter introduced with Windows 2000 and +is controlled by the variable dosbatch_cmdextversion. For Windows NT +this should have the value 1, and for Windows 2000 it should be 2. +Select the version you want with the following line: > + + :let dosbatch_cmdextversion = 1 + +If this variable is not defined it defaults to a value of 2 to support +Windows 2000. + +A second option covers whether *.btm files should be detected as type +"dosbatch" (MS-DOS batch files) or type "btm" (4DOS batch files). The latter +is used by default. You may select the former with the following line: > + + :let g:dosbatch_syntax_for_btm = 1 + +If this variable is undefined or zero, btm syntax is selected. + + +DOXYGEN *doxygen.vim* *doxygen-syntax* + +Doxygen generates code documentation using a special documentation format +(similar to Javadoc). This syntax script adds doxygen highlighting to c, cpp, +idl and php files, and should also work with java. + +There are a few of ways to turn on doxygen formatting. It can be done +explicitly or in a modeline by appending '.doxygen' to the syntax of the file. +Example: > + :set syntax=c.doxygen +or > + // vim:syntax=c.doxygen + +It can also be done automatically for C, C++, C#, IDL and PHP files by setting +the global or buffer-local variable load_doxygen_syntax. This is done by +adding the following to your .vimrc. > + :let g:load_doxygen_syntax=1 + +There are a couple of variables that have an effect on syntax highlighting, and +are to do with non-standard highlighting options. + +Variable Default Effect ~ +g:doxygen_enhanced_color +g:doxygen_enhanced_colour 0 Use non-standard highlighting for + doxygen comments. + +doxygen_my_rendering 0 Disable rendering of HTML bold, italic + and html_my_rendering underline. + +doxygen_javadoc_autobrief 1 Set to 0 to disable javadoc autobrief + colour highlighting. + +doxygen_end_punctuation '[.]' Set to regexp match for the ending + punctuation of brief + +There are also some hilight groups worth mentioning as they can be useful in +configuration. + +Highlight Effect ~ +doxygenErrorComment The colour of an end-comment when missing + punctuation in a code, verbatim or dot section +doxygenLinkError The colour of an end-comment when missing the + \endlink from a \link section. + + +DTD *dtd.vim* *ft-dtd-syntax* + +The DTD syntax highlighting is case sensitive by default. To disable +case-sensitive highlighting, add the following line to your startup file: > + + :let dtd_ignore_case=1 + +The DTD syntax file will highlight unknown tags as errors. If +this is annoying, it can be turned off by setting: > + + :let dtd_no_tag_errors=1 + +before sourcing the dtd.vim syntax file. +Parameter entity names are highlighted in the definition using the +'Type' highlighting group and 'Comment' for punctuation and '%'. +Parameter entity instances are highlighted using the 'Constant' +highlighting group and the 'Type' highlighting group for the +delimiters % and ;. This can be turned off by setting: > + + :let dtd_no_param_entities=1 + +The DTD syntax file is also included by xml.vim to highlight included dtd's. + + +EIFFEL *eiffel.vim* *ft-eiffel-syntax* + +While Eiffel is not case-sensitive, its style guidelines are, and the +syntax highlighting file encourages their use. This also allows to +highlight class names differently. If you want to disable case-sensitive +highlighting, add the following line to your startup file: > + + :let eiffel_ignore_case=1 + +Case still matters for class names and TODO marks in comments. + +Conversely, for even stricter checks, add one of the following lines: > + + :let eiffel_strict=1 + :let eiffel_pedantic=1 + +Setting eiffel_strict will only catch improper capitalization for the +five predefined words "Current", "Void", "Result", "Precursor", and +"NONE", to warn against their accidental use as feature or class names. + +Setting eiffel_pedantic will enforce adherence to the Eiffel style +guidelines fairly rigorously (like arbitrary mixes of upper- and +lowercase letters as well as outdated ways to capitalize keywords). + +If you want to use the lower-case version of "Current", "Void", +"Result", and "Precursor", you can use > + + :let eiffel_lower_case_predef=1 + +instead of completely turning case-sensitive highlighting off. + +Support for ISE's proposed new creation syntax that is already +experimentally handled by some compilers can be enabled by: > + + :let eiffel_ise=1 + +Finally, some vendors support hexadecimal constants. To handle them, add > + + :let eiffel_hex_constants=1 + +to your startup file. + + +ERLANG *erlang.vim* *ft-erlang-syntax* + +Erlang is a functional programming language developed by Ericsson. Files with +the following extensions are recognized as Erlang files: erl, hrl, yaws. + +The BIFs (built-in functions) are highlighted by default. To disable this, +put the following line in your vimrc: > + + :let g:erlang_highlight_bifs = 0 + +To enable highlighting some special atoms, put this in your vimrc: > + + :let g:erlang_highlight_special_atoms = 1 + + +FLEXWIKI *flexwiki.vim* *ft-flexwiki-syntax* + +FlexWiki is an ASP.NET-based wiki package available at http://www.flexwiki.com +NOTE: this site currently doesn't work, on Wikipedia is mentioned that +development stopped in 2009. + +Syntax highlighting is available for the most common elements of FlexWiki +syntax. The associated ftplugin script sets some buffer-local options to make +editing FlexWiki pages more convenient. FlexWiki considers a newline as the +start of a new paragraph, so the ftplugin sets 'tw'=0 (unlimited line length), +'wrap' (wrap long lines instead of using horizontal scrolling), 'linebreak' +(to wrap at a character in 'breakat' instead of at the last char on screen), +and so on. It also includes some keymaps that are disabled by default. + +If you want to enable the keymaps that make "j" and "k" and the cursor keys +move up and down by display lines, add this to your .vimrc: > + :let flexwiki_maps = 1 + + +FORM *form.vim* *ft-form-syntax* + +The coloring scheme for syntax elements in the FORM file uses the default +modes Conditional, Number, Statement, Comment, PreProc, Type, and String, +following the language specifications in 'Symbolic Manipulation with FORM' by +J.A.M. Vermaseren, CAN, Netherlands, 1991. + +If you want include your own changes to the default colors, you have to +redefine the following syntax groups: + + - formConditional + - formNumber + - formStatement + - formHeaderStatement + - formComment + - formPreProc + - formDirective + - formType + - formString + +Note that the form.vim syntax file implements FORM preprocessor commands and +directives per default in the same syntax group. + +A predefined enhanced color mode for FORM is available to distinguish between +header statements and statements in the body of a FORM program. To activate +this mode define the following variable in your vimrc file > + + :let form_enhanced_color=1 + +The enhanced mode also takes advantage of additional color features for a dark +gvim display. Here, statements are colored LightYellow instead of Yellow, and +conditionals are LightBlue for better distinction. + + +FORTRAN *fortran.vim* *ft-fortran-syntax* + +Default highlighting and dialect ~ +Highlighting appropriate for Fortran 2008 is used by default. This choice +should be appropriate for most users most of the time because Fortran 2008 is +almost a superset of previous versions (Fortran 2003, 95, 90, and 77). + +Fortran source code form ~ +Fortran code can be in either fixed or free source form. Note that the +syntax highlighting will not be correct if the form is incorrectly set. + +When you create a new fortran file, the syntax script assumes fixed source +form. If you always use free source form, then > + :let fortran_free_source=1 +in your .vimrc prior to the :syntax on command. If you always use fixed source +form, then > + :let fortran_fixed_source=1 +in your .vimrc prior to the :syntax on command. + +If the form of the source code depends upon the file extension, then it is +most convenient to set fortran_free_source in a ftplugin file. For more +information on ftplugin files, see |ftplugin|. For example, if all your +fortran files with an .f90 extension are written in free source form and the +rest in fixed source form, add the following code to your ftplugin file > + let s:extfname = expand("%:e") + if s:extfname ==? "f90" + let fortran_free_source=1 + unlet! fortran_fixed_source + else + let fortran_fixed_source=1 + unlet! fortran_free_source + endif +Note that this will work only if the "filetype plugin indent on" command +precedes the "syntax on" command in your .vimrc file. + +When you edit an existing fortran file, the syntax script will assume free +source form if the fortran_free_source variable has been set, and assumes +fixed source form if the fortran_fixed_source variable has been set. If +neither of these variables have been set, the syntax script attempts to +determine which source form has been used by examining the first five columns +of the first 250 lines of your file. If no signs of free source form are +detected, then the file is assumed to be in fixed source form. The algorithm +should work in the vast majority of cases. In some cases, such as a file that +begins with 250 or more full-line comments, the script may incorrectly decide +that the fortran code is in fixed form. If that happens, just add a +non-comment statement beginning anywhere in the first five columns of the +first twenty five lines, save (:w) and then reload (:e!) the file. + +Tabs in fortran files ~ +Tabs are not recognized by the Fortran standards. Tabs are not a good idea in +fixed format fortran source code which requires fixed column boundaries. +Therefore, tabs are marked as errors. Nevertheless, some programmers like +using tabs. If your fortran files contain tabs, then you should set the +variable fortran_have_tabs in your .vimrc with a command such as > + :let fortran_have_tabs=1 +placed prior to the :syntax on command. Unfortunately, the use of tabs will +mean that the syntax file will not be able to detect incorrect margins. + +Syntax folding of fortran files ~ +If you wish to use foldmethod=syntax, then you must first set the variable +fortran_fold with a command such as > + :let fortran_fold=1 +to instruct the syntax script to define fold regions for program units, that +is main programs starting with a program statement, subroutines, function +subprograms, block data subprograms, interface blocks, and modules. If you +also set the variable fortran_fold_conditionals with a command such as > + :let fortran_fold_conditionals=1 +then fold regions will also be defined for do loops, if blocks, and select +case constructs. If you also set the variable +fortran_fold_multilinecomments with a command such as > + :let fortran_fold_multilinecomments=1 +then fold regions will also be defined for three or more consecutive comment +lines. Note that defining fold regions can be slow for large files. + +If fortran_fold, and possibly fortran_fold_conditionals and/or +fortran_fold_multilinecomments, have been set, then vim will fold your file if +you set foldmethod=syntax. Comments or blank lines placed between two program +units are not folded because they are seen as not belonging to any program +unit. + +More precise fortran syntax ~ +If you set the variable fortran_more_precise with a command such as > + :let fortran_more_precise=1 +then the syntax coloring will be more precise but slower. In particular, +statement labels used in do, goto and arithmetic if statements will be +recognized, as will construct names at the end of a do, if, select or forall +construct. + +Non-default fortran dialects ~ +The syntax script supports two Fortran dialects: f08 and F. You will probably +find the default highlighting (f08) satisfactory. A few legacy constructs +deleted or declared obsolescent in the 2008 standard are highlighted as todo +items. + +If you use F, the advantage of setting the dialect appropriately is that +other legacy features excluded from F will be highlighted as todo items and +that free source form will be assumed. + +The dialect can be selected in various ways. If all your fortran files use +the same dialect, set the global variable fortran_dialect in your .vimrc prior +to your syntax on statement. The case-sensitive, permissible values of +fortran_dialect are "f08" or "F". Invalid values of fortran_dialect are +ignored. + +If the dialect depends upon the file extension, then it is most convenient to +set a buffer-local variable in a ftplugin file. For more information on +ftplugin files, see |ftplugin|. For example, if all your fortran files with +an .f90 extension are written in the F subset, your ftplugin file should +contain the code > + let s:extfname = expand("%:e") + if s:extfname ==? "f90" + let b:fortran_dialect="F" + else + unlet! b:fortran_dialect + endif +Note that this will work only if the "filetype plugin indent on" command +precedes the "syntax on" command in your .vimrc file. + +Finer control is necessary if the file extension does not uniquely identify +the dialect. You can override the default dialect, on a file-by-file basis, +by including a comment with the directive "fortran_dialect=xx" (where xx=F or +f08) in one of the first three lines in your file. For example, your older .f +files may be legacy code but your newer ones may be F codes, and you would +identify the latter by including in the first three lines of those files a +Fortran comment of the form > + ! fortran_dialect=F + +For previous versions of the syntax, you may have set fortran_dialect to the +now-obsolete values "f77", "f90", "f95", or "elf". Such settings will be +silently handled as "f08". Users of "elf" may wish to experiment with "F" +instead. + +The syntax/fortran.vim script contains embedded comments that tell you how to +comment and/or uncomment some lines to (a) activate recognition of some +non-standard, vendor-supplied intrinsics and (b) to prevent features deleted +or declared obsolescent in the 2008 standard from being highlighted as todo +items. + +Limitations ~ +Parenthesis checking does not catch too few closing parentheses. Hollerith +strings are not recognized. Some keywords may be highlighted incorrectly +because Fortran90 has no reserved words. + +For further information related to fortran, see |ft-fortran-indent| and +|ft-fortran-plugin|. + + +FVWM CONFIGURATION FILES *fvwm.vim* *ft-fvwm-syntax* + +In order for Vim to recognize Fvwm configuration files that do not match +the patterns *fvwmrc* or *fvwm2rc* , you must put additional patterns +appropriate to your system in your myfiletypes.vim file. For these +patterns, you must set the variable "b:fvwm_version" to the major version +number of Fvwm, and the 'filetype' option to fvwm. + +For example, to make Vim identify all files in /etc/X11/fvwm2/ +as Fvwm2 configuration files, add the following: > + + :au! BufNewFile,BufRead /etc/X11/fvwm2/* let b:fvwm_version = 2 | + \ set filetype=fvwm + +If you'd like Vim to highlight all valid color names, tell it where to +find the color database (rgb.txt) on your system. Do this by setting +"rgb_file" to its location. Assuming your color database is located +in /usr/X11/lib/X11/, you should add the line > + + :let rgb_file = "/usr/X11/lib/X11/rgb.txt" + +to your .vimrc file. + + +GSP *gsp.vim* *ft-gsp-syntax* + +The default coloring style for GSP pages is defined by |html.vim|, and +the coloring for java code (within java tags or inline between backticks) +is defined by |java.vim|. The following HTML groups defined in |html.vim| +are redefined to incorporate and highlight inline java code: + + htmlString + htmlValue + htmlEndTag + htmlTag + htmlTagN + +Highlighting should look fine most of the places where you'd see inline +java code, but in some special cases it may not. To add another HTML +group where you will have inline java code where it does not highlight +correctly, just copy the line you want from |html.vim| and add gspJava +to the contains clause. + +The backticks for inline java are highlighted according to the htmlError +group to make them easier to see. + + +GROFF *groff.vim* *ft-groff-syntax* + +The groff syntax file is a wrapper for |nroff.vim|, see the notes +under that heading for examples of use and configuration. The purpose +of this wrapper is to set up groff syntax extensions by setting the +filetype from a |modeline| or in a personal filetype definitions file +(see |filetype.txt|). + + +HASKELL *haskell.vim* *lhaskell.vim* *ft-haskell-syntax* + +The Haskell syntax files support plain Haskell code as well as literate +Haskell code, the latter in both Bird style and TeX style. The Haskell +syntax highlighting will also highlight C preprocessor directives. + +If you want to highlight delimiter characters (useful if you have a +light-coloured background), add to your .vimrc: > + :let hs_highlight_delimiters = 1 +To treat True and False as keywords as opposed to ordinary identifiers, +add: > + :let hs_highlight_boolean = 1 +To also treat the names of primitive types as keywords: > + :let hs_highlight_types = 1 +And to treat the names of even more relatively common types as keywords: > + :let hs_highlight_more_types = 1 +If you want to highlight the names of debugging functions, put in +your .vimrc: > + :let hs_highlight_debug = 1 + +The Haskell syntax highlighting also highlights C preprocessor +directives, and flags lines that start with # but are not valid +directives as erroneous. This interferes with Haskell's syntax for +operators, as they may start with #. If you want to highlight those +as operators as opposed to errors, put in your .vimrc: > + :let hs_allow_hash_operator = 1 + +The syntax highlighting for literate Haskell code will try to +automatically guess whether your literate Haskell code contains +TeX markup or not, and correspondingly highlight TeX constructs +or nothing at all. You can override this globally by putting +in your .vimrc > + :let lhs_markup = none +for no highlighting at all, or > + :let lhs_markup = tex +to force the highlighting to always try to highlight TeX markup. +For more flexibility, you may also use buffer local versions of +this variable, so e.g. > + :let b:lhs_markup = tex +will force TeX highlighting for a particular buffer. It has to be +set before turning syntax highlighting on for the buffer or +loading a file. + + +HTML *html.vim* *ft-html-syntax* + +The coloring scheme for tags in the HTML file works as follows. + +The <> of opening tags are colored differently than the of a closing tag. +This is on purpose! For opening tags the 'Function' color is used, while for +closing tags the 'Type' color is used (See syntax.vim to check how those are +defined for you) + +Known tag names are colored the same way as statements in C. Unknown tag +names are colored with the same color as the <> or respectively which +makes it easy to spot errors + +Note that the same is true for argument (or attribute) names. Known attribute +names are colored differently than unknown ones. + +Some HTML tags are used to change the rendering of text. The following tags +are recognized by the html.vim syntax coloring file and change the way normal +text is shown: ( is used as an alias for , +while as an alias for ),

-

, , and <A>, but +only if used as a link (that is, it must include a href as in +<A href="somefile.html">). + +If you want to change how such text is rendered, you must redefine the +following syntax groups: + + - htmlBold + - htmlBoldUnderline + - htmlBoldUnderlineItalic + - htmlUnderline + - htmlUnderlineItalic + - htmlItalic + - htmlTitle for titles + - htmlH1 - htmlH6 for headings + +To make this redefinition work you must redefine them all with the exception +of the last two (htmlTitle and htmlH[1-6], which are optional) and define the +following variable in your vimrc (this is due to the order in which the files +are read during initialization) > + :let html_my_rendering=1 + +If you'd like to see an example download mysyntax.vim at +http://www.fleiner.com/vim/download.html + +You can also disable this rendering by adding the following line to your +vimrc file: > + :let html_no_rendering=1 + +HTML comments are rather special (see an HTML reference document for the +details), and the syntax coloring scheme will highlight all errors. +However, if you prefer to use the wrong style (starts with <!-- and +ends with --!>) you can define > + :let html_wrong_comments=1 + +JavaScript and Visual Basic embedded inside HTML documents are highlighted as +'Special' with statements, comments, strings and so on colored as in standard +programming languages. Note that only JavaScript and Visual Basic are currently +supported, no other scripting language has been added yet. + +Embedded and inlined cascading style sheets (CSS) are highlighted too. + +There are several html preprocessor languages out there. html.vim has been +written such that it should be trivial to include it. To do so add the +following two lines to the syntax coloring file for that language +(the example comes from the asp.vim file): + + runtime! syntax/html.vim + syn cluster htmlPreproc add=asp + +Now you just need to make sure that you add all regions that contain +the preprocessor language to the cluster htmlPreproc. + + +HTML/OS (by Aestiva) *htmlos.vim* *ft-htmlos-syntax* + +The coloring scheme for HTML/OS works as follows: + +Functions and variable names are the same color by default, because VIM +doesn't specify different colors for Functions and Identifiers. To change +this (which is recommended if you want function names to be recognizable in a +different color) you need to add the following line to either your ~/.vimrc: > + :hi Function term=underline cterm=bold ctermfg=LightGray + +Of course, the ctermfg can be a different color if you choose. + +Another issues that HTML/OS runs into is that there is no special filetype to +signify that it is a file with HTML/OS coding. You can change this by opening +a file and turning on HTML/OS syntax by doing the following: > + :set syntax=htmlos + +Lastly, it should be noted that the opening and closing characters to begin a +block of HTML/OS code can either be << or [[ and >> or ]], respectively. + + +IA64 *ia64.vim* *intel-itanium* *ft-ia64-syntax* + +Highlighting for the Intel Itanium 64 assembly language. See |asm.vim| for +how to recognize this filetype. + +To have *.inc files be recognized as IA64, add this to your .vimrc file: > + :let g:filetype_inc = "ia64" + + +INFORM *inform.vim* *ft-inform-syntax* + +Inform highlighting includes symbols provided by the Inform Library, as +most programs make extensive use of it. If do not wish Library symbols +to be highlighted add this to your vim startup: > + :let inform_highlight_simple=1 + +By default it is assumed that Inform programs are Z-machine targeted, +and highlights Z-machine assembly language symbols appropriately. If +you intend your program to be targeted to a Glulx/Glk environment you +need to add this to your startup sequence: > + :let inform_highlight_glulx=1 + +This will highlight Glulx opcodes instead, and also adds glk() to the +set of highlighted system functions. + +The Inform compiler will flag certain obsolete keywords as errors when +it encounters them. These keywords are normally highlighted as errors +by Vim. To prevent such error highlighting, you must add this to your +startup sequence: > + :let inform_suppress_obsolete=1 + +By default, the language features highlighted conform to Compiler +version 6.30 and Library version 6.11. If you are using an older +Inform development environment, you may with to add this to your +startup sequence: > + :let inform_highlight_old=1 + +IDL *idl.vim* *idl-syntax* + +IDL (Interface Definition Language) files are used to define RPC calls. In +Microsoft land, this is also used for defining COM interfaces and calls. + +IDL's structure is simple enough to permit a full grammar based approach to +rather than using a few heuristics. The result is large and somewhat +repetitive but seems to work. + +There are some Microsoft extensions to idl files that are here. Some of them +are disabled by defining idl_no_ms_extensions. + +The more complex of the extensions are disabled by defining idl_no_extensions. + +Variable Effect ~ + +idl_no_ms_extensions Disable some of the Microsoft specific + extensions +idl_no_extensions Disable complex extensions +idlsyntax_showerror Show IDL errors (can be rather intrusive, but + quite helpful) +idlsyntax_showerror_soft Use softer colours by default for errors + + +JAVA *java.vim* *ft-java-syntax* + +The java.vim syntax highlighting file offers several options: + +In Java 1.0.2 it was never possible to have braces inside parens, so this was +flagged as an error. Since Java 1.1 this is possible (with anonymous +classes), and therefore is no longer marked as an error. If you prefer the old +way, put the following line into your vim startup file: > + :let java_mark_braces_in_parens_as_errors=1 + +All identifiers in java.lang.* are always visible in all classes. To +highlight them use: > + :let java_highlight_java_lang_ids=1 + +You can also highlight identifiers of most standard Java packages if you +download the javaid.vim script at http://www.fleiner.com/vim/download.html. +If you prefer to only highlight identifiers of a certain package, say java.io +use the following: > + :let java_highlight_java_io=1 +Check the javaid.vim file for a list of all the packages that are supported. + +Function names are not highlighted, as the way to find functions depends on +how you write Java code. The syntax file knows two possible ways to highlight +functions: + +If you write function declarations that are always indented by either +a tab, 8 spaces or 2 spaces you may want to set > + :let java_highlight_functions="indent" +However, if you follow the Java guidelines about how functions and classes are +supposed to be named (with respect to upper and lowercase), use > + :let java_highlight_functions="style" +If both options do not work for you, but you would still want function +declarations to be highlighted create your own definitions by changing the +definitions in java.vim or by creating your own java.vim which includes the +original one and then adds the code to highlight functions. + +In Java 1.1 the functions System.out.println() and System.err.println() should +only be used for debugging. Therefore it is possible to highlight debugging +statements differently. To do this you must add the following definition in +your startup file: > + :let java_highlight_debug=1 +The result will be that those statements are highlighted as 'Special' +characters. If you prefer to have them highlighted differently you must define +new highlightings for the following groups.: + Debug, DebugSpecial, DebugString, DebugBoolean, DebugType +which are used for the statement itself, special characters used in debug +strings, strings, boolean constants and types (this, super) respectively. I +have opted to chose another background for those statements. + +Javadoc is a program that takes special comments out of Java program files and +creates HTML pages. The standard configuration will highlight this HTML code +similarly to HTML files (see |html.vim|). You can even add Javascript +and CSS inside this code (see below). There are four differences however: + 1. The title (all characters up to the first '.' which is followed by + some white space or up to the first '@') is colored differently (to change + the color change the group CommentTitle). + 2. The text is colored as 'Comment'. + 3. HTML comments are colored as 'Special' + 4. The special Javadoc tags (@see, @param, ...) are highlighted as specials + and the argument (for @see, @param, @exception) as Function. +To turn this feature off add the following line to your startup file: > + :let java_ignore_javadoc=1 + +If you use the special Javadoc comment highlighting described above you +can also turn on special highlighting for Javascript, visual basic +scripts and embedded CSS (stylesheets). This makes only sense if you +actually have Javadoc comments that include either Javascript or embedded +CSS. The options to use are > + :let java_javascript=1 + :let java_css=1 + :let java_vb=1 + +In order to highlight nested parens with different colors define colors +for javaParen, javaParen1 and javaParen2, for example with > + :hi link javaParen Comment +or > + :hi javaParen ctermfg=blue guifg=#0000ff + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "java_minlines" internal variable +to a larger number: > + :let java_minlines = 50 +This will make the syntax synchronization start 50 lines before the first +displayed line. The default value is 10. The disadvantage of using a larger +number is that redrawing can become slow. + + +LACE *lace.vim* *ft-lace-syntax* + +Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the +style guide lines are not. If you prefer case insensitive highlighting, just +define the vim variable 'lace_case_insensitive' in your startup file: > + :let lace_case_insensitive=1 + + +LEX *lex.vim* *ft-lex-syntax* + +Lex uses brute-force synchronizing as the "^%%$" section delimiter +gives no clue as to what section follows. Consequently, the value for > + :syn sync minlines=300 +may be changed by the user if s/he is experiencing synchronization +difficulties (such as may happen with large lex files). + + +LIFELINES *lifelines.vim* *ft-lifelines-syntax* + +To highlight deprecated functions as errors, add in your .vimrc: > + + :let g:lifelines_deprecated = 1 +< + +LISP *lisp.vim* *ft-lisp-syntax* + +The lisp syntax highlighting provides two options: > + + g:lisp_instring : if it exists, then "(...)" strings are highlighted + as if the contents of the string were lisp. + Useful for AutoLisp. + g:lisp_rainbow : if it exists and is nonzero, then differing levels + of parenthesization will receive different + highlighting. +< +The g:lisp_rainbow option provides 10 levels of individual colorization for +the parentheses and backquoted parentheses. Because of the quantity of +colorization levels, unlike non-rainbow highlighting, the rainbow mode +specifies its highlighting using ctermfg and guifg, thereby bypassing the +usual colorscheme control using standard highlighting groups. The actual +highlighting used depends on the dark/bright setting (see |'bg'|). + + +LITE *lite.vim* *ft-lite-syntax* + +There are two options for the lite syntax highlighting. + +If you like SQL syntax highlighting inside Strings, use this: > + + :let lite_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "lite_minlines" to the value you desire. Example: > + + :let lite_minlines = 200 + + +LPC *lpc.vim* *ft-lpc-syntax* + +LPC stands for a simple, memory-efficient language: Lars Pensj| C. The +file name of LPC is usually *.c. Recognizing these files as LPC would bother +users writing only C programs. If you want to use LPC syntax in Vim, you +should set a variable in your .vimrc file: > + + :let lpc_syntax_for_c = 1 + +If it doesn't work properly for some particular C or LPC files, use a +modeline. For a LPC file: + + // vim:set ft=lpc: + +For a C file that is recognized as LPC: + + // vim:set ft=c: + +If you don't want to set the variable, use the modeline in EVERY LPC file. + +There are several implementations for LPC, we intend to support most widely +used ones. Here the default LPC syntax is for MudOS series, for MudOS v22 +and before, you should turn off the sensible modifiers, and this will also +asserts the new efuns after v22 to be invalid, don't set this variable when +you are using the latest version of MudOS: > + + :let lpc_pre_v22 = 1 + +For LpMud 3.2 series of LPC: > + + :let lpc_compat_32 = 1 + +For LPC4 series of LPC: > + + :let lpc_use_lpc4_syntax = 1 + +For uLPC series of LPC: +uLPC has been developed to Pike, so you should use Pike syntax +instead, and the name of your source file should be *.pike + + +LUA *lua.vim* *ft-lua-syntax* + +The Lua syntax file can be used for versions 4.0, 5.0, 5.1 and 5.2 (5.2 is +the default). You can select one of these versions using the global variables +lua_version and lua_subversion. For example, to activate Lua +5.1 syntax highlighting, set the variables like this: + + :let lua_version = 5 + :let lua_subversion = 1 + + +MAIL *mail.vim* *ft-mail.vim* + +Vim highlights all the standard elements of an email (headers, signatures, +quoted text and URLs / email addresses). In keeping with standard conventions, +signatures begin in a line containing only "--" followed optionally by +whitespaces and end with a newline. + +Vim treats lines beginning with ']', '}', '|', '>' or a word followed by '>' +as quoted text. However Vim highlights headers and signatures in quoted text +only if the text is quoted with '>' (optionally followed by one space). + +By default mail.vim synchronises syntax to 100 lines before the first +displayed line. If you have a slow machine, and generally deal with emails +with short headers, you can change this to a smaller value: > + + :let mail_minlines = 30 + + +MAKE *make.vim* *ft-make-syntax* + +In makefiles, commands are usually highlighted to make it easy for you to spot +errors. However, this may be too much coloring for you. You can turn this +feature off by using: > + + :let make_no_commands = 1 + + +MAPLE *maple.vim* *ft-maple-syntax* + +Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language +supports many packages of functions which are selectively loaded by the user. +The standard set of packages' functions as supplied in Maple V release 4 may be +highlighted at the user's discretion. Users may place in their .vimrc file: > + + :let mvpkg_all= 1 + +to get all package functions highlighted, or users may select any subset by +choosing a variable/package from the table below and setting that variable to +1, also in their .vimrc file (prior to sourcing +$VIMRUNTIME/syntax/syntax.vim). + + Table of Maple V Package Function Selectors > + mv_DEtools mv_genfunc mv_networks mv_process + mv_Galois mv_geometry mv_numapprox mv_simplex + mv_GaussInt mv_grobner mv_numtheory mv_stats + mv_LREtools mv_group mv_orthopoly mv_student + mv_combinat mv_inttrans mv_padic mv_sumtools + mv_combstruct mv_liesymm mv_plots mv_tensor + mv_difforms mv_linalg mv_plottools mv_totorder + mv_finance mv_logic mv_powseries + + +MATHEMATICA *mma.vim* *ft-mma-syntax* *ft-mathematica-syntax* + +Empty *.m files will automatically be presumed to be Matlab files unless you +have the following in your .vimrc: > + + let filetype_m = "mma" + + +MOO *moo.vim* *ft-moo-syntax* + +If you use C-style comments inside expressions and find it mangles your +highlighting, you may want to use extended (slow!) matches for C-style +comments: > + + :let moo_extended_cstyle_comments = 1 + +To disable highlighting of pronoun substitution patterns inside strings: > + + :let moo_no_pronoun_sub = 1 + +To disable highlighting of the regular expression operator '%|', and matching +'%(' and '%)' inside strings: > + + :let moo_no_regexp = 1 + +Unmatched double quotes can be recognized and highlighted as errors: > + + :let moo_unmatched_quotes = 1 + +To highlight builtin properties (.name, .location, .programmer etc.): > + + :let moo_builtin_properties = 1 + +Unknown builtin functions can be recognized and highlighted as errors. If you +use this option, add your own extensions to the mooKnownBuiltinFunction group. +To enable this option: > + + :let moo_unknown_builtin_functions = 1 + +An example of adding sprintf() to the list of known builtin functions: > + + :syn keyword mooKnownBuiltinFunction sprintf contained + + +MSQL *msql.vim* *ft-msql-syntax* + +There are two options for the msql syntax highlighting. + +If you like SQL syntax highlighting inside Strings, use this: > + + :let msql_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "msql_minlines" to the value you desire. Example: > + + :let msql_minlines = 200 + + +NCF *ncf.vim* *ft-ncf-syntax* + +There is one option for NCF syntax highlighting. + +If you want to have unrecognized (by ncf.vim) statements highlighted as +errors, use this: > + + :let ncf_highlight_unknowns = 1 + +If you don't want to highlight these errors, leave it unset. + + +NROFF *nroff.vim* *ft-nroff-syntax* + +The nroff syntax file works with AT&T n/troff out of the box. You need to +activate the GNU groff extra features included in the syntax file before you +can use them. + +For example, Linux and BSD distributions use groff as their default text +processing package. In order to activate the extra syntax highlighting +features for groff, add the following option to your start-up files: > + + :let b:nroff_is_groff = 1 + +Groff is different from the old AT&T n/troff that you may still find in +Solaris. Groff macro and request names can be longer than 2 characters and +there are extensions to the language primitives. For example, in AT&T troff +you access the year as a 2-digit number with the request \(yr. In groff you +can use the same request, recognized for compatibility, or you can use groff's +native syntax, \[yr]. Furthermore, you can use a 4-digit year directly: +\[year]. Macro requests can be longer than 2 characters, for example, GNU mm +accepts the requests ".VERBON" and ".VERBOFF" for creating verbatim +environments. + +In order to obtain the best formatted output g/troff can give you, you should +follow a few simple rules about spacing and punctuation. + +1. Do not leave empty spaces at the end of lines. + +2. Leave one space and one space only after an end-of-sentence period, + exclamation mark, etc. + +3. For reasons stated below, it is best to follow all period marks with a + carriage return. + +The reason behind these unusual tips is that g/n/troff have a line breaking +algorithm that can be easily upset if you don't follow the rules given above. + +Unlike TeX, troff fills text line-by-line, not paragraph-by-paragraph and, +furthermore, it does not have a concept of glue or stretch, all horizontal and +vertical space input will be output as is. + +Therefore, you should be careful about not using more space between sentences +than you intend to have in your final document. For this reason, the common +practice is to insert a carriage return immediately after all punctuation +marks. If you want to have "even" text in your final processed output, you +need to maintain regular spacing in the input text. To mark both trailing +spaces and two or more spaces after a punctuation as an error, use: > + + :let nroff_space_errors = 1 + +Another technique to detect extra spacing and other errors that will interfere +with the correct typesetting of your file, is to define an eye-catching +highlighting definition for the syntax groups "nroffDefinition" and +"nroffDefSpecial" in your configuration files. For example: > + + hi def nroffDefinition term=italic cterm=italic gui=reverse + hi def nroffDefSpecial term=italic,bold cterm=italic,bold + \ gui=reverse,bold + +If you want to navigate preprocessor entries in your source file as easily as +with section markers, you can activate the following option in your .vimrc +file: > + + let b:preprocs_as_sections = 1 + +As well, the syntax file adds an extra paragraph marker for the extended +paragraph macro (.XP) in the ms package. + +Finally, there is a |groff.vim| syntax file that can be used for enabling +groff syntax highlighting either on a file basis or globally by default. + + +OCAML *ocaml.vim* *ft-ocaml-syntax* + +The OCaml syntax file handles files having the following prefixes: .ml, +.mli, .mll and .mly. By setting the following variable > + + :let ocaml_revised = 1 + +you can switch from standard OCaml-syntax to revised syntax as supported +by the camlp4 preprocessor. Setting the variable > + + :let ocaml_noend_error = 1 + +prevents highlighting of "end" as error, which is useful when sources +contain very long structures that Vim does not synchronize anymore. + + +PAPP *papp.vim* *ft-papp-syntax* + +The PApp syntax file handles .papp files and, to a lesser extend, .pxml +and .pxsl files which are all a mixture of perl/xml/html/other using xml +as the top-level file format. By default everything inside phtml or pxml +sections is treated as a string with embedded preprocessor commands. If +you set the variable: > + + :let papp_include_html=1 + +in your startup file it will try to syntax-hilight html code inside phtml +sections, but this is relatively slow and much too colourful to be able to +edit sensibly. ;) + +The newest version of the papp.vim syntax file can usually be found at +http://papp.plan9.de. + + +PASCAL *pascal.vim* *ft-pascal-syntax* + +Files matching "*.p" could be Progress or Pascal. If the automatic detection +doesn't work for you, or you don't edit Progress at all, use this in your +startup vimrc: > + + :let filetype_p = "pascal" + +The Pascal syntax file has been extended to take into account some extensions +provided by Turbo Pascal, Free Pascal Compiler and GNU Pascal Compiler. +Delphi keywords are also supported. By default, Turbo Pascal 7.0 features are +enabled. If you prefer to stick with the standard Pascal keywords, add the +following line to your startup file: > + + :let pascal_traditional=1 + +To switch on Delphi specific constructions (such as one-line comments, +keywords, etc): > + + :let pascal_delphi=1 + + +The option pascal_symbol_operator controls whether symbol operators such as +, +*, .., etc. are displayed using the Operator color or not. To colorize symbol +operators, add the following line to your startup file: > + + :let pascal_symbol_operator=1 + +Some functions are highlighted by default. To switch it off: > + + :let pascal_no_functions=1 + +Furthermore, there are specific variables for some compilers. Besides +pascal_delphi, there are pascal_gpc and pascal_fpc. Default extensions try to +match Turbo Pascal. > + + :let pascal_gpc=1 + +or > + + :let pascal_fpc=1 + +To ensure that strings are defined on a single line, you can define the +pascal_one_line_string variable. > + + :let pascal_one_line_string=1 + +If you dislike <Tab> chars, you can set the pascal_no_tabs variable. Tabs +will be highlighted as Error. > + + :let pascal_no_tabs=1 + + + +PERL *perl.vim* *ft-perl-syntax* + +There are a number of possible options to the perl syntax highlighting. + +Inline POD highlighting is now turned on by default. If you don't wish +to have the added complexity of highlighting POD embedded within Perl +files, you may set the 'perl_include_pod' option to 0: > + + :let perl_include_pod = 0 + +The reduce the complexity of parsing (and increase performance) you can switch +off two elements in the parsing of variable names and contents. > + +To handle package references in variable and function names not differently +from the rest of the name (like 'PkgName::' in '$PkgName::VarName'): > + + :let perl_no_scope_in_variables = 1 + +(In Vim 6.x it was the other way around: "perl_want_scope_in_variables" +enabled it.) + +If you do not want complex things like '@{${"foo"}}' to be parsed: > + + :let perl_no_extended_vars = 1 + +(In Vim 6.x it was the other way around: "perl_extended_vars" enabled it.) + +The coloring strings can be changed. By default strings and qq friends will be +highlighted like the first line. If you set the variable +perl_string_as_statement, it will be highlighted as in the second line. + + "hello world!"; qq|hello world|; + ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N (unlet perl_string_as_statement) + S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^SN (let perl_string_as_statement) + +(^ = perlString, S = perlStatement, N = None at all) + +The syncing has 3 options. The first two switch off some triggering of +synchronization and should only be needed in case it fails to work properly. +If while scrolling all of a sudden the whole screen changes color completely +then you should try and switch off one of those. Let me know if you can figure +out the line that causes the mistake. + +One triggers on "^\s*sub\s*" and the other on "^[$@%]" more or less. > + + :let perl_no_sync_on_sub + :let perl_no_sync_on_global_var + +Below you can set the maximum distance VIM should look for starting points for +its attempts in syntax highlighting. > + + :let perl_sync_dist = 100 + +If you want to use folding with perl, set perl_fold: > + + :let perl_fold = 1 + +If you want to fold blocks in if statements, etc. as well set the following: > + + :let perl_fold_blocks = 1 + +Subroutines are folded by default if 'perl_fold' is set. If you do not want +this, you can set 'perl_nofold_subs': > + + :let perl_nofold_subs = 1 + +Anonymous subroutines are not folded by default; you may enable their folding +via 'perl_fold_anonymous_subs': > + + :let perl_fold_anonymous_subs = 1 + +Packages are also folded by default if 'perl_fold' is set. To disable this +behavior, set 'perl_nofold_packages': > + + :let perl_nofold_packages = 1 + +PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* + +[note: previously this was called "php3", but since it now also supports php4 +it has been renamed to "php"] + +There are the following options for the php syntax highlighting. + +If you like SQL syntax highlighting inside Strings: > + + let php_sql_query = 1 + +For highlighting the Baselib methods: > + + let php_baselib = 1 + +Enable HTML syntax highlighting inside strings: > + + let php_htmlInStrings = 1 + +Using the old colorstyle: > + + let php_oldStyle = 1 + +Enable highlighting ASP-style short tags: > + + let php_asp_tags = 1 + +Disable short tags: > + + let php_noShortTags = 1 + +For highlighting parent error ] or ): > + + let php_parent_error_close = 1 + +For skipping a php end tag, if there exists an open ( or [ without a closing +one: > + + let php_parent_error_open = 1 + +Enable folding for classes and functions: > + + let php_folding = 1 + +Selecting syncing method: > + + let php_sync_method = x + +x = -1 to sync by search (default), +x > 0 to sync at least x lines backwards, +x = 0 to sync from start. + + +PLAINTEX *plaintex.vim* *ft-plaintex-syntax* + +TeX is a typesetting language, and plaintex is the file type for the "plain" +variant of TeX. If you never want your *.tex files recognized as plain TeX, +see |ft-tex-plugin|. + +This syntax file has the option > + + let g:plaintex_delimiters = 1 + +if you want to highlight brackets "[]" and braces "{}". + + +PPWIZARD *ppwiz.vim* *ft-ppwiz-syntax* + +PPWizard is a preprocessor for HTML and OS/2 INF files + +This syntax file has the options: + +- ppwiz_highlight_defs : determines highlighting mode for PPWizard's + definitions. Possible values are + + ppwiz_highlight_defs = 1 : PPWizard #define statements retain the + colors of their contents (e.g. PPWizard macros and variables) + + ppwiz_highlight_defs = 2 : preprocessor #define and #evaluate + statements are shown in a single color with the exception of line + continuation symbols + + The default setting for ppwiz_highlight_defs is 1. + +- ppwiz_with_html : If the value is 1 (the default), highlight literal + HTML code; if 0, treat HTML code like ordinary text. + + +PHTML *phtml.vim* *ft-phtml-syntax* + +There are two options for the phtml syntax highlighting. + +If you like SQL syntax highlighting inside Strings, use this: > + + :let phtml_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "phtml_minlines" to the value you desire. Example: > + + :let phtml_minlines = 200 + + +POSTSCRIPT *postscr.vim* *ft-postscr-syntax* + +There are several options when it comes to highlighting PostScript. + +First which version of the PostScript language to highlight. There are +currently three defined language versions, or levels. Level 1 is the original +and base version, and includes all extensions prior to the release of level 2. +Level 2 is the most common version around, and includes its own set of +extensions prior to the release of level 3. Level 3 is currently the highest +level supported. You select which level of the PostScript language you want +highlighted by defining the postscr_level variable as follows: > + + :let postscr_level=2 + +If this variable is not defined it defaults to 2 (level 2) since this is +the most prevalent version currently. + +Note, not all PS interpreters will support all language features for a +particular language level. In particular the %!PS-Adobe-3.0 at the start of +PS files does NOT mean the PostScript present is level 3 PostScript! + +If you are working with Display PostScript, you can include highlighting of +Display PS language features by defining the postscr_display variable as +follows: > + + :let postscr_display=1 + +If you are working with Ghostscript, you can include highlighting of +Ghostscript specific language features by defining the variable +postscr_ghostscript as follows: > + + :let postscr_ghostscript=1 + +PostScript is a large language, with many predefined elements. While it +useful to have all these elements highlighted, on slower machines this can +cause Vim to slow down. In an attempt to be machine friendly font names and +character encodings are not highlighted by default. Unless you are working +explicitly with either of these this should be ok. If you want them to be +highlighted you should set one or both of the following variables: > + + :let postscr_fonts=1 + :let postscr_encodings=1 + +There is a stylistic option to the highlighting of and, or, and not. In +PostScript the function of these operators depends on the types of their +operands - if the operands are booleans then they are the logical operators, +if they are integers then they are binary operators. As binary and logical +operators can be highlighted differently they have to be highlighted one way +or the other. By default they are treated as logical operators. They can be +highlighted as binary operators by defining the variable +postscr_andornot_binary as follows: > + + :let postscr_andornot_binary=1 +< + + *ptcap.vim* *ft-printcap-syntax* +PRINTCAP + TERMCAP *ft-ptcap-syntax* *ft-termcap-syntax* + +This syntax file applies to the printcap and termcap databases. + +In order for Vim to recognize printcap/termcap files that do not match +the patterns *printcap*, or *termcap*, you must put additional patterns +appropriate to your system in your |myfiletypefile| file. For these +patterns, you must set the variable "b:ptcap_type" to either "print" or +"term", and then the 'filetype' option to ptcap. + +For example, to make Vim identify all files in /etc/termcaps/ as termcap +files, add the following: > + + :au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" | + \ set filetype=ptcap + +If you notice highlighting errors while scrolling backwards, which +are fixed when redrawing with CTRL-L, try setting the "ptcap_minlines" +internal variable to a larger number: > + + :let ptcap_minlines = 50 + +(The default is 20 lines.) + + +PROGRESS *progress.vim* *ft-progress-syntax* + +Files matching "*.w" could be Progress or cweb. If the automatic detection +doesn't work for you, or you don't edit cweb at all, use this in your +startup vimrc: > + :let filetype_w = "progress" +The same happens for "*.i", which could be assembly, and "*.p", which could be +Pascal. Use this if you don't use assembly and Pascal: > + :let filetype_i = "progress" + :let filetype_p = "progress" + + +PYTHON *python.vim* *ft-python-syntax* + +There are six options to control Python syntax highlighting. + +For highlighted numbers: > + :let python_no_number_highlight = 1 + +For highlighted builtin functions: > + :let python_no_builtin_highlight = 1 + +For highlighted standard exceptions: > + :let python_no_exception_highlight = 1 + +For highlighted doctests and code inside: > + :let python_no_doctest_highlight = 1 +or > + :let python_no_doctest_code_highlight = 1 +(first option implies second one). + +For highlighted trailing whitespace and mix of spaces and tabs: > + :let python_space_error_highlight = 1 + +If you want all possible Python highlighting (the same as setting the +preceding last option and unsetting all other ones): > + :let python_highlight_all = 1 + +Note: only existence of these options matter, not their value. You can replace + 1 above with anything. + + +QUAKE *quake.vim* *ft-quake-syntax* + +The Quake syntax definition should work for most any FPS (First Person +Shooter) based on one of the Quake engines. However, the command names vary +a bit between the three games (Quake, Quake 2, and Quake 3 Arena) so the +syntax definition checks for the existence of three global variables to allow +users to specify what commands are legal in their files. The three variables +can be set for the following effects: + +set to highlight commands only available in Quake: > + :let quake_is_quake1 = 1 + +set to highlight commands only available in Quake 2: > + :let quake_is_quake2 = 1 + +set to highlight commands only available in Quake 3 Arena: > + :let quake_is_quake3 = 1 + +Any combination of these three variables is legal, but might highlight more +commands than are actually available to you by the game. + + +READLINE *readline.vim* *ft-readline-syntax* + +The readline library is primarily used by the BASH shell, which adds quite a +few commands and options to the ones already available. To highlight these +items as well you can add the following to your |vimrc| or just type it in the +command line before loading a file with the readline syntax: > + let readline_has_bash = 1 + +This will add highlighting for the commands that BASH (version 2.05a and +later, and part earlier) adds. + + +RESTRUCTURED TEXT *rst.vim* *ft-rst-syntax* + +You may set what syntax definitions should be used for code blocks via + let rst_syntax_code_list = ['vim', 'lisp', ...] + + +REXX *rexx.vim* *ft-rexx-syntax* + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "rexx_minlines" internal variable +to a larger number: > + :let rexx_minlines = 50 +This will make the syntax synchronization start 50 lines before the first +displayed line. The default value is 10. The disadvantage of using a larger +number is that redrawing can become slow. + +Vim tries to guess what type a ".r" file is. If it can't be detected (from +comment lines), the default is "r". To make the default rexx add this line to +your .vimrc: *g:filetype_r* +> + :let g:filetype_r = "r" + + +RUBY *ruby.vim* *ft-ruby-syntax* + +There are a number of options to the Ruby syntax highlighting. + +By default, the "end" keyword is colorized according to the opening statement +of the block it closes. While useful, this feature can be expensive; if you +experience slow redrawing (or you are on a terminal with poor color support) +you may want to turn it off by defining the "ruby_no_expensive" variable: > + + :let ruby_no_expensive = 1 +< +In this case the same color will be used for all control keywords. + +If you do want this feature enabled, but notice highlighting errors while +scrolling backwards, which are fixed when redrawing with CTRL-L, try setting +the "ruby_minlines" variable to a value larger than 50: > + + :let ruby_minlines = 100 +< +Ideally, this value should be a number of lines large enough to embrace your +largest class or module. + +Highlighting of special identifiers can be disabled by removing the +rubyIdentifier highlighting: > + + :hi link rubyIdentifier NONE +< +This will prevent highlighting of special identifiers like "ConstantName", +"$global_var", "@@class_var", "@instance_var", "| block_param |", and +":symbol". + +Significant methods of Kernel, Module and Object are highlighted by default. +This can be disabled by defining "ruby_no_special_methods": > + + :let ruby_no_special_methods = 1 +< +This will prevent highlighting of important methods such as "require", "attr", +"private", "raise" and "proc". + +Ruby operators can be highlighted. This is enabled by defining +"ruby_operators": > + + :let ruby_operators = 1 +< +Whitespace errors can be highlighted by defining "ruby_space_errors": > + + :let ruby_space_errors = 1 +< +This will highlight trailing whitespace and tabs preceded by a space character +as errors. This can be refined by defining "ruby_no_trail_space_error" and +"ruby_no_tab_space_error" which will ignore trailing whitespace and tabs after +spaces respectively. + +Folding can be enabled by defining "ruby_fold": > + + :let ruby_fold = 1 +< +This will set the 'foldmethod' option to "syntax" and allow folding of +classes, modules, methods, code blocks, heredocs and comments. + +Folding of multiline comments can be disabled by defining +"ruby_no_comment_fold": > + + :let ruby_no_comment_fold = 1 +< + +SCHEME *scheme.vim* *ft-scheme-syntax* + +By default only R5RS keywords are highlighted and properly indented. + +MzScheme-specific stuff will be used if b:is_mzscheme or g:is_mzscheme +variables are defined. + +Also scheme.vim supports keywords of the Chicken Scheme->C compiler. Define +b:is_chicken or g:is_chicken, if you need them. + + +SDL *sdl.vim* *ft-sdl-syntax* + +The SDL highlighting probably misses a few keywords, but SDL has so many +of them it's almost impossibly to cope. + +The new standard, SDL-2000, specifies that all identifiers are +case-sensitive (which was not so before), and that all keywords can be +used either completely lowercase or completely uppercase. To have the +highlighting reflect this, you can set the following variable: > + :let sdl_2000=1 + +This also sets many new keywords. If you want to disable the old +keywords, which is probably a good idea, use: > + :let SDL_no_96=1 + + +The indentation is probably also incomplete, but right now I am very +satisfied with it for my own projects. + + +SED *sed.vim* *ft-sed-syntax* + +To make tabs stand out from regular blanks (accomplished by using Todo +highlighting on the tabs), define "highlight_sedtabs" by putting > + + :let highlight_sedtabs = 1 + +in the vimrc file. (This special highlighting only applies for tabs +inside search patterns, replacement texts, addresses or text included +by an Append/Change/Insert command.) If you enable this option, it is +also a good idea to set the tab width to one character; by doing that, +you can easily count the number of tabs in a string. + +Bugs: + + The transform command (y) is treated exactly like the substitute + command. This means that, as far as this syntax file is concerned, + transform accepts the same flags as substitute, which is wrong. + (Transform accepts no flags.) I tolerate this bug because the + involved commands need very complex treatment (95 patterns, one for + each plausible pattern delimiter). + + +SGML *sgml.vim* *ft-sgml-syntax* + +The coloring scheme for tags in the SGML file works as follows. + +The <> of opening tags are colored differently than the </> of a closing tag. +This is on purpose! For opening tags the 'Function' color is used, while for +closing tags the 'Type' color is used (See syntax.vim to check how those are +defined for you) + +Known tag names are colored the same way as statements in C. Unknown tag +names are not colored which makes it easy to spot errors. + +Note that the same is true for argument (or attribute) names. Known attribute +names are colored differently than unknown ones. + +Some SGML tags are used to change the rendering of text. The following tags +are recognized by the sgml.vim syntax coloring file and change the way normal +text is shown: <varname> <emphasis> <command> <function> <literal> +<replaceable> <ulink> and <link>. + +If you want to change how such text is rendered, you must redefine the +following syntax groups: + + - sgmlBold + - sgmlBoldItalic + - sgmlUnderline + - sgmlItalic + - sgmlLink for links + +To make this redefinition work you must redefine them all and define the +following variable in your vimrc (this is due to the order in which the files +are read during initialization) > + let sgml_my_rendering=1 + +You can also disable this rendering by adding the following line to your +vimrc file: > + let sgml_no_rendering=1 + +(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>) + + +SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax* + +This covers the "normal" Unix (Bourne) sh, bash and the Korn shell. + +Vim attempts to determine which shell type is in use by specifying that +various filenames are of specific types: > + + ksh : .kshrc* *.ksh + bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash +< +If none of these cases pertain, then the first line of the file is examined +(ex. /bin/sh /bin/ksh /bin/bash). If the first line specifies a shelltype, +then that shelltype is used. However some files (ex. .profile) are known to +be shell files but the type is not apparent. Furthermore, on many systems +sh is symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (Posix). + +One may specify a global default by instantiating one of the following three +variables in your <.vimrc>: + + ksh: > + let g:is_kornshell = 1 +< posix: (using this is the same as setting is_kornshell to 1) > + let g:is_posix = 1 +< bash: > + let g:is_bash = 1 +< sh: (default) Bourne shell > + let g:is_sh = 1 + +If there's no "#! ..." line, and the user hasn't availed himself/herself of a +default sh.vim syntax setting as just shown, then syntax/sh.vim will assume +the Bourne shell syntax. No need to quote RFCs or market penetration +statistics in error reports, please -- just select the default version of the +sh your system uses in your <.vimrc>. + +The syntax/sh.vim file provides several levels of syntax-based folding: > + + let g:sh_fold_enabled= 0 (default, no syntax folding) + let g:sh_fold_enabled= 1 (enable function folding) + let g:sh_fold_enabled= 2 (enable heredoc folding) + let g:sh_fold_enabled= 4 (enable if/do/for folding) +> +then various syntax items (HereDocuments and function bodies) become +syntax-foldable (see |:syn-fold|). You also may add these together +to get multiple types of folding: > + + let g:sh_fold_enabled= 3 (enables function and heredoc folding) + +If you notice highlighting errors while scrolling backwards which are fixed +when one redraws with CTRL-L, try setting the "sh_minlines" internal variable +to a larger number. Example: > + + let sh_minlines = 500 + +This will make syntax synchronization start 500 lines before the first +displayed line. The default value is 200. The disadvantage of using a larger +number is that redrawing can become slow. + +If you don't have much to synchronize on, displaying can be very slow. To +reduce this, the "sh_maxlines" internal variable can be set. Example: > + + let sh_maxlines = 100 +< +The default is to use the twice sh_minlines. Set it to a smaller number to +speed up displaying. The disadvantage is that highlight errors may appear. + + *g:sh_isk* *g:sh_noisk* +The shell languages appear to let "." be part of words, commands, etc; +consequently it should be in the isk for sh.vim. As of v116 of syntax/sh.vim, +syntax/sh.vim will append the "." to |'iskeyword'| by default; you may control +this behavior with: > + let g:sh_isk = '..whatever characters you want as part of iskeyword' + let g:sh_noisk= 1 " otherwise, if this exists, the isk will NOT chg +< + *sh-embed* *sh-awk* + Sh: EMBEDDING LANGUAGES~ + +You may wish to embed languages into sh. I'll give an example courtesy of +Lorance Stinson on how to do this with awk as an example. Put the following +file into $HOME/.vim/after/syntax/sh/awkembed.vim: > + + " AWK Embedding: {{{1 + " ============== + " Shamelessly ripped from aspperl.vim by Aaron Hope. + if exists("b:current_syntax") + unlet b:current_syntax + endif + syn include @AWKScript syntax/awk.vim + syn region AWKScriptCode matchgroup=AWKCommand start=+[=\\]\@<!'+ skip=+\\'+ end=+'+ contains=@AWKScript contained + syn region AWKScriptEmbedded matchgroup=AWKCommand start=+\<awk\>+ skip=+\\$+ end=+[=\\]\@<!'+me=e-1 contains=@shIdList,@shExprList2 nextgroup=AWKScriptCode + syn cluster shCommandSubList add=AWKScriptEmbedded + hi def link AWKCommand Type +< +This code will then let the awk code in the single quotes: > + awk '...awk code here...' +be highlighted using the awk highlighting syntax. Clearly this may be +extended to other languages. + + +SPEEDUP *spup.vim* *ft-spup-syntax* +(AspenTech plant simulator) + +The Speedup syntax file has some options: + +- strict_subsections : If this variable is defined, only keywords for + sections and subsections will be highlighted as statements but not + other keywords (like WITHIN in the OPERATION section). + +- highlight_types : Definition of this variable causes stream types + like temperature or pressure to be highlighted as Type, not as a + plain Identifier. Included are the types that are usually found in + the DECLARE section; if you defined own types, you have to include + them in the syntax file. + +- oneline_comments : this value ranges from 1 to 3 and determines the + highlighting of # style comments. + + oneline_comments = 1 : allow normal Speedup code after an even + number of #s. + + oneline_comments = 2 : show code starting with the second # as + error. This is the default setting. + + oneline_comments = 3 : show the whole line as error if it contains + more than one #. + +Since especially OPERATION sections tend to become very large due to +PRESETting variables, syncing may be critical. If your computer is +fast enough, you can increase minlines and/or maxlines near the end of +the syntax file. + + +SQL *sql.vim* *ft-sql-syntax* + *sqlinformix.vim* *ft-sqlinformix-syntax* + *sqlanywhere.vim* *ft-sqlanywhere-syntax* + +While there is an ANSI standard for SQL, most database engines add their own +custom extensions. Vim currently supports the Oracle and Informix dialects of +SQL. Vim assumes "*.sql" files are Oracle SQL by default. + +Vim currently has SQL support for a variety of different vendors via syntax +scripts. You can change Vim's default from Oracle to any of the current SQL +supported types. You can also easily alter the SQL dialect being used on a +buffer by buffer basis. + +For more detailed instructions see |ft_sql.txt|. + + +TCSH *tcsh.vim* *ft-tcsh-syntax* + +This covers the shell named "tcsh". It is a superset of csh. See |csh.vim| +for how the filetype is detected. + +Tcsh does not allow \" in strings unless the "backslash_quote" shell variable +is set. If you want VIM to assume that no backslash quote constructs exist add +this line to your .vimrc: > + + :let tcsh_backslash_quote = 0 + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "tcsh_minlines" internal variable +to a larger number: > + + :let tcsh_minlines = 1000 + +This will make the syntax synchronization start 1000 lines before the first +displayed line. If you set "tcsh_minlines" to "fromstart", then +synchronization is done from the start of the file. The default value for +tcsh_minlines is 100. The disadvantage of using a larger number is that +redrawing can become slow. + + +TEX *tex.vim* *ft-tex-syntax* *latex-syntax* + + Tex Contents~ + Tex: Want Syntax Folding? |tex-folding| + Tex: No Spell Checking Wanted |g:tex_nospell| + Tex: Don't Want Spell Checking In Comments? |tex-nospell| + Tex: Want Spell Checking in Verbatim Zones? |tex-verb| + Tex: Run-on Comments or MathZones |tex-runon| + Tex: Slow Syntax Highlighting? |tex-slow| + Tex: Want To Highlight More Commands? |tex-morecommands| + Tex: Excessive Error Highlighting? |tex-error| + Tex: Need a new Math Group? |tex-math| + Tex: Starting a New Style? |tex-style| + Tex: Taking Advantage of Conceal Mode |tex-conceal| + Tex: Selective Conceal Mode |g:tex_conceal| + Tex: Controlling iskeyword |g:tex_isk| + + *tex-folding* *g:tex_fold_enabled* + Tex: Want Syntax Folding? ~ + +As of version 28 of <syntax/tex.vim>, syntax-based folding of parts, chapters, +sections, subsections, etc are supported. Put > + let g:tex_fold_enabled=1 +in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a +modeline at the end of your LaTeX file: > + % vim: fdm=syntax +If your system becomes too slow, then you might wish to look into > + https://vimhelp.appspot.com/vim_faq.txt.html#faq-29.7 +< + *g:tex_nospell* + Tex: No Spell Checking Wanted~ + +If you don't want spell checking anywhere in your LaTeX document, put > + let g:tex_nospell=1 +into your .vimrc. If you merely wish to suppress spell checking inside +comments only, see |g:tex_comment_nospell|. + + *tex-nospell* *g:tex_comment_nospell* + Tex: Don't Want Spell Checking In Comments? ~ + +Some folks like to include things like source code in comments and so would +prefer that spell checking be disabled in comments in LaTeX files. To do +this, put the following in your <.vimrc>: > + let g:tex_comment_nospell= 1 +If you want to suppress spell checking everywhere inside your LaTeX document, +see |g:tex_nospell|. + + *tex-verb* *g:tex_verbspell* + Tex: Want Spell Checking in Verbatim Zones?~ + +Often verbatim regions are used for things like source code; seldom does +one want source code spell-checked. However, for those of you who do +want your verbatim zones spell-checked, put the following in your <.vimrc>: > + let g:tex_verbspell= 1 +< + *tex-runon* *tex-stopzone* + Tex: Run-on Comments or MathZones ~ + +The <syntax/tex.vim> highlighting supports TeX, LaTeX, and some AmsTeX. The +highlighting supports three primary zones/regions: normal, texZone, and +texMathZone. Although considerable effort has been made to have these zones +terminate properly, zones delineated by $..$ and $$..$$ cannot be synchronized +as there's no difference between start and end patterns. Consequently, a +special "TeX comment" has been provided > + %stopzone +which will forcibly terminate the highlighting of either a texZone or a +texMathZone. + + *tex-slow* *tex-sync* + Tex: Slow Syntax Highlighting? ~ + +If you have a slow computer, you may wish to reduce the values for > + :syn sync maxlines=200 + :syn sync minlines=50 +(especially the latter). If your computer is fast, you may wish to +increase them. This primarily affects synchronizing (i.e. just what group, +if any, is the text at the top of the screen supposed to be in?). + +Another cause of slow highlighting is due to syntax-driven folding; see +|tex-folding| for a way around this. + + *g:tex_fast* + +Finally, if syntax highlighting is still too slow, you may set > + + :let g:tex_fast= "" + +in your .vimrc. Used this way, the g:tex_fast variable causes the syntax +highlighting script to avoid defining any regions and associated +synchronization. The result will be much faster syntax highlighting; the +price: you will no longer have as much highlighting or any syntax-based +folding, and you will be missing syntax-based error checking. + +You may decide that some syntax is acceptable; you may use the following table +selectively to enable just some syntax highlighting: > + + b : allow bold and italic syntax + c : allow texComment syntax + m : allow texMatcher syntax (ie. {...} and [...]) + M : allow texMath syntax + p : allow parts, chapter, section, etc syntax + r : allow texRefZone syntax (nocite, bibliography, label, pageref, eqref) + s : allow superscript/subscript regions + S : allow texStyle syntax + v : allow verbatim syntax + V : allow texNewEnv and texNewCmd syntax +< +As an example, let g:tex_fast= "M" will allow math-associated highlighting +but suppress all the other region-based syntax highlighting. + + *tex-morecommands* *tex-package* + Tex: Want To Highlight More Commands? ~ + +LaTeX is a programmable language, and so there are thousands of packages full +of specialized LaTeX commands, syntax, and fonts. If you're using such a +package you'll often wish that the distributed syntax/tex.vim would support +it. However, clearly this is impractical. So please consider using the +techniques in |mysyntaxfile-add| to extend or modify the highlighting provided +by syntax/tex.vim. Please consider uploading any extensions that you write, +which typically would go in $HOME/after/syntax/tex/[pkgname].vim, to +http://vim.sf.net/. + + *tex-error* *g:tex_no_error* + Tex: Excessive Error Highlighting? ~ + +The <tex.vim> supports lexical error checking of various sorts. Thus, +although the error checking is ofttimes very useful, it can indicate +errors where none actually are. If this proves to be a problem for you, +you may put in your <.vimrc> the following statement: > + let g:tex_no_error=1 +and all error checking by <syntax/tex.vim> will be suppressed. + + *tex-math* + Tex: Need a new Math Group? ~ + +If you want to include a new math group in your LaTeX, the following +code shows you an example as to how you might do so: > + call TexNewMathZone(sfx,mathzone,starform) +You'll want to provide the new math group with a unique suffix +(currently, A-L and V-Z are taken by <syntax/tex.vim> itself). +As an example, consider how eqnarray is set up by <syntax/tex.vim>: > + call TexNewMathZone("D","eqnarray",1) +You'll need to change "mathzone" to the name of your new math group, +and then to the call to it in .vim/after/syntax/tex.vim. +The "starform" variable, if true, implies that your new math group +has a starred form (ie. eqnarray*). + + *tex-style* *b:tex_stylish* + Tex: Starting a New Style? ~ + +One may use "\makeatletter" in *.tex files, thereby making the use of "@" in +commands available. However, since the *.tex file doesn't have one of the +following suffices: sty cls clo dtx ltx, the syntax highlighting will flag +such use of @ as an error. To solve this: > + + :let b:tex_stylish = 1 + :set ft=tex + +Putting "let g:tex_stylish=1" into your <.vimrc> will make <syntax/tex.vim> +always accept such use of @. + + *tex-cchar* *tex-cole* *tex-conceal* + Tex: Taking Advantage of Conceal Mode~ + +If you have |'conceallevel'| set to 2 and if your encoding is utf-8, then a +number of character sequences can be translated into appropriate utf-8 glyphs, +including various accented characters, Greek characters in MathZones, and +superscripts and subscripts in MathZones. Not all characters can be made into +superscripts or subscripts; the constraint is due to what utf-8 supports. +In fact, only a few characters are supported as subscripts. + +One way to use this is to have vertically split windows (see |CTRL-W_v|); one +with |'conceallevel'| at 0 and the other at 2; and both using |'scrollbind'|. + + *g:tex_conceal* + Tex: Selective Conceal Mode~ + +You may selectively use conceal mode by setting g:tex_conceal in your +<.vimrc>. By default, g:tex_conceal is set to "admgs" to enable concealment +for the following sets of characters: > + + a = accents/ligatures + b = bold and italic + d = delimiters + m = math symbols + g = Greek + s = superscripts/subscripts +< +By leaving one or more of these out, the associated conceal-character +substitution will not be made. + + *g:tex_isk* *g:tex_stylish* + Tex: Controlling iskeyword~ + +Normally, LaTeX keywords support 0-9, a-z, A-z, and 192-255 only. Latex +keywords don't support the underscore - except when in *.sty files. The +syntax highlighting script handles this with the following logic: + + * If g:tex_stylish exists and is 1 + then the file will be treated as a "sty" file, so the "_" + will be allowed as part of keywords + (irregardless of g:tex_isk) + * Else if the file's suffix is sty, cls, clo, dtx, or ltx, + then the file will be treated as a "sty" file, so the "_" + will be allowed as part of keywords + (irregardless of g:tex_isk) + + * If g:tex_isk exists, then it will be used for the local 'iskeyword' + * Else the local 'iskeyword' will be set to 48-57,a-z,A-Z,192-255 + + +TF *tf.vim* *ft-tf-syntax* + +There is one option for the tf syntax highlighting. + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "tf_minlines" to the value you desire. Example: > + + :let tf_minlines = your choice +< +VIM *vim.vim* *ft-vim-syntax* + *g:vimsyn_minlines* *g:vimsyn_maxlines* +There is a trade-off between more accurate syntax highlighting versus screen +updating speed. To improve accuracy, you may wish to increase the +g:vimsyn_minlines variable. The g:vimsyn_maxlines variable may be used to +improve screen updating rates (see |:syn-sync| for more on this). > + + g:vimsyn_minlines : used to set synchronization minlines + g:vimsyn_maxlines : used to set synchronization maxlines +< + (g:vim_minlines and g:vim_maxlines are deprecated variants of + these two options) + + *g:vimsyn_embed* +The g:vimsyn_embed option allows users to select what, if any, types of +embedded script highlighting they wish to have. > + + g:vimsyn_embed == 0 : don't embed any scripts + g:vimsyn_embed =~ 'm' : embed mzscheme (but only if vim supports it) + g:vimsyn_embed =~ 'p' : embed perl (but only if vim supports it) + g:vimsyn_embed =~ 'P' : embed python (but only if vim supports it) + g:vimsyn_embed =~ 'r' : embed ruby (but only if vim supports it) + g:vimsyn_embed =~ 't' : embed tcl (but only if vim supports it) +< +By default, g:vimsyn_embed is "mpPr"; ie. syntax/vim.vim will support +highlighting mzscheme, perl, python, and ruby by default. Vim's has("tcl") +test appears to hang vim when tcl is not truly available. Thus, by default, +tcl is not supported for embedding (but those of you who like tcl embedded in +their vim syntax highlighting can simply include it in the g:vimembedscript +option). + *g:vimsyn_folding* + +Some folding is now supported with syntax/vim.vim: > + + g:vimsyn_folding == 0 or doesn't exist: no syntax-based folding + g:vimsyn_folding =~ 'a' : augroups + g:vimsyn_folding =~ 'f' : fold functions + g:vimsyn_folding =~ 'm' : fold mzscheme script + g:vimsyn_folding =~ 'p' : fold perl script + g:vimsyn_folding =~ 'P' : fold python script + g:vimsyn_folding =~ 'r' : fold ruby script + g:vimsyn_folding =~ 't' : fold tcl script +< + *g:vimsyn_noerror* +Not all error highlighting that syntax/vim.vim does may be correct; VimL is a +difficult language to highlight correctly. A way to suppress error +highlighting is to put the following line in your |vimrc|: > + + let g:vimsyn_noerror = 1 +< + + +XF86CONFIG *xf86conf.vim* *ft-xf86conf-syntax* + +The syntax of XF86Config file differs in XFree86 v3.x and v4.x. Both +variants are supported. Automatic detection is used, but is far from perfect. +You may need to specify the version manually. Set the variable +xf86conf_xfree86_version to 3 or 4 according to your XFree86 version in +your .vimrc. Example: > + :let xf86conf_xfree86_version=3 +When using a mix of versions, set the b:xf86conf_xfree86_version variable. + +Note that spaces and underscores in option names are not supported. Use +"SyncOnGreen" instead of "__s yn con gr_e_e_n" if you want the option name +highlighted. + + +XML *xml.vim* *ft-xml-syntax* + +Xml namespaces are highlighted by default. This can be inhibited by +setting a global variable: > + + :let g:xml_namespace_transparent=1 +< + *xml-folding* +The xml syntax file provides syntax |folding| (see |:syn-fold|) between +start and end tags. This can be turned on by > + + :let g:xml_syntax_folding = 1 + :set foldmethod=syntax + +Note: syntax folding might slow down syntax highlighting significantly, +especially for large files. + + +X Pixmaps (XPM) *xpm.vim* *ft-xpm-syntax* + +xpm.vim creates its syntax items dynamically based upon the contents of the +XPM file. Thus if you make changes e.g. in the color specification strings, +you have to source it again e.g. with ":set syn=xpm". + +To copy a pixel with one of the colors, yank a "pixel" with "yl" and insert it +somewhere else with "P". + +Do you want to draw with the mouse? Try the following: > + :function! GetPixel() + : let c = getline(".")[col(".") - 1] + : echo c + : exe "noremap <LeftMouse> <LeftMouse>r".c + : exe "noremap <LeftDrag> <LeftMouse>r".c + :endfunction + :noremap <RightMouse> <LeftMouse>:call GetPixel()<CR> + :set guicursor=n:hor20 " to see the color beneath the cursor +This turns the right button into a pipette and the left button into a pen. +It will work with XPM files that have one character per pixel only and you +must not click outside of the pixel strings, but feel free to improve it. + +It will look much better with a font in a quadratic cell size, e.g. for X: > + :set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-* + +============================================================================== +5. Defining a syntax *:syn-define* *E410* + +Vim understands three types of syntax items: + +1. Keyword + It can only contain keyword characters, according to the 'iskeyword' + option. It cannot contain other syntax items. It will only match with a + complete word (there are no keyword characters before or after the match). + The keyword "if" would match in "if(a=b)", but not in "ifdef x", because + "(" is not a keyword character and "d" is. + +2. Match + This is a match with a single regexp pattern. + +3. Region + This starts at a match of the "start" regexp pattern and ends with a match + with the "end" regexp pattern. Any other text can appear in between. A + "skip" regexp pattern can be used to avoid matching the "end" pattern. + +Several syntax ITEMs can be put into one syntax GROUP. For a syntax group +you can give highlighting attributes. For example, you could have an item +to define a "/* .. */" comment and another one that defines a "// .." comment, +and put them both in the "Comment" group. You can then specify that a +"Comment" will be in bold font and have a blue color. You are free to make +one highlight group for one syntax item, or put all items into one group. +This depends on how you want to specify your highlighting attributes. Putting +each item in its own group results in having to specify the highlighting +for a lot of groups. + +Note that a syntax group and a highlight group are similar. For a highlight +group you will have given highlight attributes. These attributes will be used +for the syntax group with the same name. + +In case more than one item matches at the same position, the one that was +defined LAST wins. Thus you can override previously defined syntax items by +using an item that matches the same text. But a keyword always goes before a +match or region. And a keyword with matching case always goes before a +keyword with ignoring case. + + +PRIORITY *:syn-priority* + +When several syntax items may match, these rules are used: + +1. When multiple Match or Region items start in the same position, the item + defined last has priority. +2. A Keyword has priority over Match and Region items. +3. An item that starts in an earlier position has priority over items that + start in later positions. + + +DEFINING CASE *:syn-case* *E390* + +:sy[ntax] case [match | ignore] + This defines if the following ":syntax" commands will work with + matching case, when using "match", or with ignoring case, when using + "ignore". Note that any items before this are not affected, and all + items until the next ":syntax case" command are affected. + + +SPELL CHECKING *:syn-spell* + +:sy[ntax] spell [toplevel | notoplevel | default] + This defines where spell checking is to be done for text that is not + in a syntax item: + + toplevel: Text is spell checked. + notoplevel: Text is not spell checked. + default: When there is a @Spell cluster no spell checking. + + For text in syntax items use the @Spell and @NoSpell clusters + |spell-syntax|. When there is no @Spell and no @NoSpell cluster then + spell checking is done for "default" and "toplevel". + + To activate spell checking the 'spell' option must be set. + + +DEFINING KEYWORDS *:syn-keyword* + +:sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}] + + This defines a number of keywords. + + {group-name} Is a syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + {keyword} .. Is a list of keywords which are part of this group. + + Example: > + :syntax keyword Type int long char +< + The {options} can be given anywhere in the line. They will apply to + all keywords given, also for options that come after a keyword. + These examples do exactly the same: > + :syntax keyword Type contained int long char + :syntax keyword Type int long contained char + :syntax keyword Type int long char contained +< *E789* + When you have a keyword with an optional tail, like Ex commands in + Vim, you can put the optional characters inside [], to define all the + variations at once: > + :syntax keyword vimCommand ab[breviate] n[ext] +< + Don't forget that a keyword can only be recognized if all the + characters are included in the 'iskeyword' option. If one character + isn't, the keyword will never be recognized. + Multi-byte characters can also be used. These do not have to be in + 'iskeyword'. + + A keyword always has higher priority than a match or region, the + keyword is used if more than one item matches. Keywords do not nest + and a keyword can't contain anything else. + + Note that when you have a keyword that is the same as an option (even + one that isn't allowed here), you can not use it. Use a match + instead. + + The maximum length of a keyword is 80 characters. + + The same keyword can be defined multiple times, when its containment + differs. For example, you can define the keyword once not contained + and use one highlight group, and once contained, and use a different + highlight group. Example: > + :syn keyword vimCommand tag + :syn keyword vimSetting contained tag +< When finding "tag" outside of any syntax item, the "vimCommand" + highlight group is used. When finding "tag" in a syntax item that + contains "vimSetting", the "vimSetting" group is used. + + +DEFINING MATCHES *:syn-match* + +:sy[ntax] match {group-name} [{options}] [excludenl] {pattern} [{options}] + + This defines one match. + + {group-name} A syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + [excludenl] Don't make a pattern with the end-of-line "$" + extend a containing match or region. Must be + given before the pattern. |:syn-excludenl| + {pattern} The search pattern that defines the match. + See |:syn-pattern| below. + Note that the pattern may match more than one + line, which makes the match depend on where + Vim starts searching for the pattern. You + need to make sure syncing takes care of this. + + Example (match a character constant): > + :syntax match Character /'.'/hs=s+1,he=e-1 +< + +DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* + *E398* *E399* +:sy[ntax] region {group-name} [{options}] + [matchgroup={group-name}] + [keepend] + [extend] + [excludenl] + start={start_pattern} .. + [skip={skip_pattern}] + end={end_pattern} .. + [{options}] + + This defines one region. It may span several lines. + + {group-name} A syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + [matchgroup={group-name}] The syntax group to use for the following + start or end pattern matches only. Not used + for the text in between the matched start and + end patterns. Use NONE to reset to not using + a different group for the start or end match. + See |:syn-matchgroup|. + keepend Don't allow contained matches to go past a + match with the end pattern. See + |:syn-keepend|. + extend Override a "keepend" for an item this region + is contained in. See |:syn-extend|. + excludenl Don't make a pattern with the end-of-line "$" + extend a containing match or item. Only + useful for end patterns. Must be given before + the patterns it applies to. |:syn-excludenl| + start={start_pattern} The search pattern that defines the start of + the region. See |:syn-pattern| below. + skip={skip_pattern} The search pattern that defines text inside + the region where not to look for the end + pattern. See |:syn-pattern| below. + end={end_pattern} The search pattern that defines the end of + the region. See |:syn-pattern| below. + + Example: > + :syntax region String start=+"+ skip=+\\"+ end=+"+ +< + The start/skip/end patterns and the options can be given in any order. + There can be zero or one skip pattern. There must be one or more + start and end patterns. This means that you can omit the skip + pattern, but you must give at least one start and one end pattern. It + is allowed to have white space before and after the equal sign + (although it mostly looks better without white space). + + When more than one start pattern is given, a match with one of these + is sufficient. This means there is an OR relation between the start + patterns. The last one that matches is used. The same is true for + the end patterns. + + The search for the end pattern starts right after the start pattern. + Offsets are not used for this. This implies that the match for the + end pattern will never overlap with the start pattern. + + The skip and end pattern can match across line breaks, but since the + search for the pattern can start in any line it often does not do what + you want. The skip pattern doesn't avoid a match of an end pattern in + the next line. Use single-line patterns to avoid trouble. + + Note: The decision to start a region is only based on a matching start + pattern. There is no check for a matching end pattern. This does NOT + work: > + :syn region First start="(" end=":" + :syn region Second start="(" end=";" +< The Second always matches before the First (last defined pattern has + higher priority). The Second region then continues until the next + ';', no matter if there is a ':' before it. Using a match does work: > + :syn match First "(\_.\{-}:" + :syn match Second "(\_.\{-};" +< This pattern matches any character or line break with "\_." and + repeats that with "\{-}" (repeat as few as possible). + + *:syn-keepend* + By default, a contained match can obscure a match for the end pattern. + This is useful for nesting. For example, a region that starts with + "{" and ends with "}", can contain another region. An encountered "}" + will then end the contained region, but not the outer region: + { starts outer "{}" region + { starts contained "{}" region + } ends contained "{}" region + } ends outer "{} region + If you don't want this, the "keepend" argument will make the matching + of an end pattern of the outer region also end any contained item. + This makes it impossible to nest the same region, but allows for + contained items to highlight parts of the end pattern, without causing + that to skip the match with the end pattern. Example: > + :syn match vimComment +"[^"]\+$+ + :syn region vimCommand start="set" end="$" contains=vimComment keepend +< The "keepend" makes the vimCommand always end at the end of the line, + even though the contained vimComment includes a match with the <EOL>. + + When "keepend" is not used, a match with an end pattern is retried + after each contained match. When "keepend" is included, the first + encountered match with an end pattern is used, truncating any + contained matches. + *:syn-extend* + The "keepend" behavior can be changed by using the "extend" argument. + When an item with "extend" is contained in an item that uses + "keepend", the "keepend" is ignored and the containing region will be + extended. + This can be used to have some contained items extend a region while + others don't. Example: > + + :syn region htmlRef start=+<a>+ end=+</a>+ keepend contains=htmlItem,htmlScript + :syn match htmlItem +<[^>]*>+ contained + :syn region htmlScript start=+<script+ end=+</script[^>]*>+ contained extend + +< Here the htmlItem item does not make the htmlRef item continue + further, it is only used to highlight the <> items. The htmlScript + item does extend the htmlRef item. + + Another example: > + :syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend +< This defines a region with "keepend", so that its end cannot be + changed by contained items, like when the "</a>" is matched to + highlight it differently. But when the xmlFold region is nested (it + includes itself), the "extend" applies, so that the "</a>" of a nested + region only ends that region, and not the one it is contained in. + + *:syn-excludenl* + When a pattern for a match or end pattern of a region includes a '$' + to match the end-of-line, it will make a region item that it is + contained in continue on the next line. For example, a match with + "\\$" (backslash at the end of the line) can make a region continue + that would normally stop at the end of the line. This is the default + behavior. If this is not wanted, there are two ways to avoid it: + 1. Use "keepend" for the containing item. This will keep all + contained matches from extending the match or region. It can be + used when all contained items must not extend the containing item. + 2. Use "excludenl" in the contained item. This will keep that match + from extending the containing match or region. It can be used if + only some contained items must not extend the containing item. + "excludenl" must be given before the pattern it applies to. + + *:syn-matchgroup* + "matchgroup" can be used to highlight the start and/or end pattern + differently than the body of the region. Example: > + :syntax region String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+ +< This will highlight the quotes with the "Quote" group, and the text in + between with the "String" group. + The "matchgroup" is used for all start and end patterns that follow, + until the next "matchgroup". Use "matchgroup=NONE" to go back to not + using a matchgroup. + + In a start or end pattern that is highlighted with "matchgroup" the + contained items of the region are not used. This can be used to avoid + that a contained item matches in the start or end pattern match. When + using "transparent", this does not apply to a start or end pattern + match that is highlighted with "matchgroup". + + Here is an example, which highlights three levels of parentheses in + different colors: > + :sy region par1 matchgroup=par1 start=/(/ end=/)/ contains=par2 + :sy region par2 matchgroup=par2 start=/(/ end=/)/ contains=par3 contained + :sy region par3 matchgroup=par3 start=/(/ end=/)/ contains=par1 contained + :hi par1 ctermfg=red guifg=red + :hi par2 ctermfg=blue guifg=blue + :hi par3 ctermfg=darkgreen guifg=darkgreen +< + *E849* +The maximum number of syntax groups is 19999. + +============================================================================== +6. :syntax arguments *:syn-arguments* + +The :syntax commands that define syntax items take a number of arguments. +The common ones are explained here. The arguments may be given in any order +and may be mixed with patterns. + +Not all commands accept all arguments. This table shows which arguments +can not be used for all commands: + *E395* + contains oneline fold display extend concealends~ +:syntax keyword - - - - - - +:syntax match yes - yes yes yes - +:syntax region yes yes yes yes yes yes + +These arguments can be used for all three commands: + conceal + cchar + contained + containedin + nextgroup + transparent + skipwhite + skipnl + skipempty + +conceal *conceal* *:syn-conceal* + +When the "conceal" argument is given, the item is marked as concealable. +Whether or not it is actually concealed depends on the value of the +'conceallevel' option. The 'concealcursor' option is used to decide whether +concealable items in the current line are displayed unconcealed to be able to +edit the line. + +concealends *:syn-concealends* + +When the "concealends" argument is given, the start and end matches of +the region, but not the contents of the region, are marked as concealable. +Whether or not they are actually concealed depends on the setting on the +'conceallevel' option. The ends of a region can only be concealed separately +in this way when they have their own highlighting via "matchgroup" + +cchar *:syn-cchar* + *E844* +The "cchar" argument defines the character shown in place of the item +when it is concealed (setting "cchar" only makes sense when the conceal +argument is given.) If "cchar" is not set then the default conceal +character defined in the 'listchars' option is used. The character cannot be +a control character such as Tab. Example: > + :syntax match Entity "&" conceal cchar=& +See |hl-Conceal| for highlighting. + +contained *:syn-contained* + +When the "contained" argument is given, this item will not be recognized at +the top level, but only when it is mentioned in the "contains" field of +another match. Example: > + :syntax keyword Todo TODO contained + :syntax match Comment "//.*" contains=Todo + + +display *:syn-display* + +If the "display" argument is given, this item will be skipped when the +detected highlighting will not be displayed. This will speed up highlighting, +by skipping this item when only finding the syntax state for the text that is +to be displayed. + +Generally, you can use "display" for match and region items that meet these +conditions: +- The item does not continue past the end of a line. Example for C: A region + for a "/*" comment can't contain "display", because it continues on the next + line. +- The item does not contain items that continue past the end of the line or + make it continue on the next line. +- The item does not change the size of any item it is contained in. Example + for C: A match with "\\$" in a preprocessor match can't have "display", + because it may make that preprocessor match shorter. +- The item does not allow other items to match that didn't match otherwise, + and that item may extend the match too far. Example for C: A match for a + "//" comment can't use "display", because a "/*" inside that comment would + match then and start a comment which extends past the end of the line. + +Examples, for the C language, where "display" can be used: +- match with a number +- match with a label + + +transparent *:syn-transparent* + +If the "transparent" argument is given, this item will not be highlighted +itself, but will take the highlighting of the item it is contained in. This +is useful for syntax items that don't need any highlighting but are used +only to skip over a part of the text. + +The "contains=" argument is also inherited from the item it is contained in, +unless a "contains" argument is given for the transparent item itself. To +avoid that unwanted items are contained, use "contains=NONE". Example, which +highlights words in strings, but makes an exception for "vim": > + :syn match myString /'[^']*'/ contains=myWord,myVim + :syn match myWord /\<[a-z]*\>/ contained + :syn match myVim /\<vim\>/ transparent contained contains=NONE + :hi link myString String + :hi link myWord Comment +Since the "myVim" match comes after "myWord" it is the preferred match (last +match in the same position overrules an earlier one). The "transparent" +argument makes the "myVim" match use the same highlighting as "myString". But +it does not contain anything. If the "contains=NONE" argument would be left +out, then "myVim" would use the contains argument from myString and allow +"myWord" to be contained, which will be highlighted as a Constant. This +happens because a contained match doesn't match inside itself in the same +position, thus the "myVim" match doesn't overrule the "myWord" match here. + +When you look at the colored text, it is like looking at layers of contained +items. The contained item is on top of the item it is contained in, thus you +see the contained item. When a contained item is transparent, you can look +through, thus you see the item it is contained in. In a picture: + + look from here + + | | | | | | + V V V V V V + + xxxx yyy more contained items + .................... contained item (transparent) + ============================= first item + +The 'x', 'y' and '=' represent a highlighted syntax item. The '.' represent a +transparent group. + +What you see is: + + =======xxxx=======yyy======== + +Thus you look through the transparent "....". + + +oneline *:syn-oneline* + +The "oneline" argument indicates that the region does not cross a line +boundary. It must match completely in the current line. However, when the +region has a contained item that does cross a line boundary, it continues on +the next line anyway. A contained item can be used to recognize a line +continuation pattern. But the "end" pattern must still match in the first +line, otherwise the region doesn't even start. + +When the start pattern includes a "\n" to match an end-of-line, the end +pattern must be found in the same line as where the start pattern ends. The +end pattern may also include an end-of-line. Thus the "oneline" argument +means that the end of the start pattern and the start of the end pattern must +be within one line. This can't be changed by a skip pattern that matches a +line break. + + +fold *:syn-fold* + +The "fold" argument makes the fold level increase by one for this item. +Example: > + :syn region myFold start="{" end="}" transparent fold + :syn sync fromstart + :set foldmethod=syntax +This will make each {} block form one fold. + +The fold will start on the line where the item starts, and end where the item +ends. If the start and end are within the same line, there is no fold. +The 'foldnestmax' option limits the nesting of syntax folds. +{not available when Vim was compiled without |+folding| feature} + + + *:syn-contains* *E405* *E406* *E407* *E408* *E409* +contains={groupname},.. + +The "contains" argument is followed by a list of syntax group names. These +groups will be allowed to begin inside the item (they may extend past the +containing group's end). This allows for recursive nesting of matches and +regions. If there is no "contains" argument, no groups will be contained in +this item. The group names do not need to be defined before they can be used +here. + +contains=ALL + If the only item in the contains list is "ALL", then all + groups will be accepted inside the item. + +contains=ALLBUT,{group-name},.. + If the first item in the contains list is "ALLBUT", then all + groups will be accepted inside the item, except the ones that + are listed. Example: > + :syntax region Block start="{" end="}" ... contains=ALLBUT,Function + +contains=TOP + If the first item in the contains list is "TOP", then all + groups will be accepted that don't have the "contained" + argument. +contains=TOP,{group-name},.. + Like "TOP", but excluding the groups that are listed. + +contains=CONTAINED + If the first item in the contains list is "CONTAINED", then + all groups will be accepted that have the "contained" + argument. +contains=CONTAINED,{group-name},.. + Like "CONTAINED", but excluding the groups that are + listed. + + +The {group-name} in the "contains" list can be a pattern. All group names +that match the pattern will be included (or excluded, if "ALLBUT" is used). +The pattern cannot contain white space or a ','. Example: > + ... contains=Comment.*,Keyw[0-3] +The matching will be done at moment the syntax command is executed. Groups +that are defined later will not be matched. Also, if the current syntax +command defines a new group, it is not matched. Be careful: When putting +syntax commands in a file you can't rely on groups NOT being defined, because +the file may have been sourced before, and ":syn clear" doesn't remove the +group names. + +The contained groups will also match in the start and end patterns of a +region. If this is not wanted, the "matchgroup" argument can be used +|:syn-matchgroup|. The "ms=" and "me=" offsets can be used to change the +region where contained items do match. Note that this may also limit the +area that is highlighted + + +containedin={groupname}... *:syn-containedin* + +The "containedin" argument is followed by a list of syntax group names. The +item will be allowed to begin inside these groups. This works as if the +containing item has a "contains=" argument that includes this item. + +The {groupname}... can be used just like for "contains", as explained above. + +This is useful when adding a syntax item afterwards. An item can be told to +be included inside an already existing item, without changing the definition +of that item. For example, to highlight a word in a C comment after loading +the C syntax: > + :syn keyword myword HELP containedin=cComment contained +Note that "contained" is also used, to avoid that the item matches at the top +level. + +Matches for "containedin" are added to the other places where the item can +appear. A "contains" argument may also be added as usual. Don't forget that +keywords never contain another item, thus adding them to "containedin" won't +work. + + +nextgroup={groupname},.. *:syn-nextgroup* + +The "nextgroup" argument is followed by a list of syntax group names, +separated by commas (just like with "contains", so you can also use patterns). + +If the "nextgroup" argument is given, the mentioned syntax groups will be +tried for a match, after the match or region ends. If none of the groups have +a match, highlighting continues normally. If there is a match, this group +will be used, even when it is not mentioned in the "contains" field of the +current group. This is like giving the mentioned group priority over all +other groups. Example: > + :syntax match ccFoobar "Foo.\{-}Bar" contains=ccFoo + :syntax match ccFoo "Foo" contained nextgroup=ccFiller + :syntax region ccFiller start="." matchgroup=ccBar end="Bar" contained + +This will highlight "Foo" and "Bar" differently, and only when there is a +"Bar" after "Foo". In the text line below, "f" shows where ccFoo is used for +highlighting, and "bbb" where ccBar is used. > + + Foo asdfasd Bar asdf Foo asdf Bar asdf + fff bbb fff bbb + +Note the use of ".\{-}" to skip as little as possible until the next Bar. +when ".*" would be used, the "asdf" in between "Bar" and "Foo" would be +highlighted according to the "ccFoobar" group, because the ccFooBar match +would include the first "Foo" and the last "Bar" in the line (see |pattern|). + + +skipwhite *:syn-skipwhite* +skipnl *:syn-skipnl* +skipempty *:syn-skipempty* + +These arguments are only used in combination with "nextgroup". They can be +used to allow the next group to match after skipping some text: + skipwhite skip over space and tab characters + skipnl skip over the end of a line + skipempty skip over empty lines (implies a "skipnl") + +When "skipwhite" is present, the white space is only skipped if there is no +next group that matches the white space. + +When "skipnl" is present, the match with nextgroup may be found in the next +line. This only happens when the current item ends at the end of the current +line! When "skipnl" is not present, the nextgroup will only be found after +the current item in the same line. + +When skipping text while looking for a next group, the matches for other +groups are ignored. Only when no next group matches, other items are tried +for a match again. This means that matching a next group and skipping white +space and <EOL>s has a higher priority than other items. + +Example: > + :syn match ifstart "\<if.*" nextgroup=ifline skipwhite skipempty + :syn match ifline "[^ \t].*" nextgroup=ifline skipwhite skipempty contained + :syn match ifline "endif" contained +Note that the "[^ \t].*" match matches all non-white text. Thus it would also +match "endif". Therefore the "endif" match is put last, so that it takes +precedence. +Note that this example doesn't work for nested "if"s. You need to add +"contains" arguments to make that work (omitted for simplicity of the +example). + +IMPLICIT CONCEAL *:syn-conceal-implicit* + +:sy[ntax] conceal [on|off] + This defines if the following ":syntax" commands will define keywords, + matches or regions with the "conceal" flag set. After ":syn conceal + on", all subsequent ":syn keyword", ":syn match" or ":syn region" + defined will have the "conceal" flag set implicitly. ":syn conceal + off" returns to the normal state where the "conceal" flag must be + given explicitly. + +============================================================================== +7. Syntax patterns *:syn-pattern* *E401* *E402* + +In the syntax commands, a pattern must be surrounded by two identical +characters. This is like it works for the ":s" command. The most common to +use is the double quote. But if the pattern contains a double quote, you can +use another character that is not used in the pattern. Examples: > + :syntax region Comment start="/\*" end="\*/" + :syntax region String start=+"+ end=+"+ skip=+\\"+ + +See |pattern| for the explanation of what a pattern is. Syntax patterns are +always interpreted like the 'magic' option is set, no matter what the actual +value of 'magic' is. And the patterns are interpreted like the 'l' flag is +not included in 'cpoptions'. This was done to make syntax files portable and +independent of 'compatible' and 'magic' settings. + +Try to avoid patterns that can match an empty string, such as "[a-z]*". +This slows down the highlighting a lot, because it matches everywhere. + + *:syn-pattern-offset* +The pattern can be followed by a character offset. This can be used to +change the highlighted part, and to change the text area included in the +match or region (which only matters when trying to match other items). Both +are relative to the matched pattern. The character offset for a skip +pattern can be used to tell where to continue looking for an end pattern. + +The offset takes the form of "{what}={offset}" +The {what} can be one of seven strings: + +ms Match Start offset for the start of the matched text +me Match End offset for the end of the matched text +hs Highlight Start offset for where the highlighting starts +he Highlight End offset for where the highlighting ends +rs Region Start offset for where the body of a region starts +re Region End offset for where the body of a region ends +lc Leading Context offset past "leading context" of pattern + +The {offset} can be: + +s start of the matched pattern +s+{nr} start of the matched pattern plus {nr} chars to the right +s-{nr} start of the matched pattern plus {nr} chars to the left +e end of the matched pattern +e+{nr} end of the matched pattern plus {nr} chars to the right +e-{nr} end of the matched pattern plus {nr} chars to the left +{nr} (for "lc" only): start matching {nr} chars right of the start + +Examples: "ms=s+1", "hs=e-2", "lc=3". + +Although all offsets are accepted after any pattern, they are not always +meaningful. This table shows which offsets are actually used: + + ms me hs he rs re lc ~ +match item yes yes yes yes - - yes +region item start yes - yes - yes - yes +region item skip - yes - - - - yes +region item end - yes - yes - yes yes + +Offsets can be concatenated, with a ',' in between. Example: > + :syn match String /"[^"]*"/hs=s+1,he=e-1 +< + some "string" text + ^^^^^^ highlighted + +Notes: +- There must be no white space between the pattern and the character + offset(s). +- The highlighted area will never be outside of the matched text. +- A negative offset for an end pattern may not always work, because the end + pattern may be detected when the highlighting should already have stopped. +- Before Vim 7.2 the offsets were counted in bytes instead of characters. + This didn't work well for multi-byte characters, so it was changed with the + Vim 7.2 release. +- The start of a match cannot be in a line other than where the pattern + matched. This doesn't work: "a\nb"ms=e. You can make the highlighting + start in another line, this does work: "a\nb"hs=e. + +Example (match a comment but don't highlight the /* and */): > + :syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1 +< + /* this is a comment */ + ^^^^^^^^^^^^^^^^^^^ highlighted + +A more complicated Example: > + :syn region Exa matchgroup=Foo start="foo"hs=s+2,rs=e+2 matchgroup=Bar end="bar"me=e-1,he=e-1,re=s-1 +< + abcfoostringbarabc + mmmmmmmmmmm match + sssrrreee highlight start/region/end ("Foo", "Exa" and "Bar") + +Leading context *:syn-lc* *:syn-leading* *:syn-context* + +Note: This is an obsolete feature, only included for backwards compatibility +with previous Vim versions. It's now recommended to use the |/\@<=| construct +in the pattern. + +The "lc" offset specifies leading context -- a part of the pattern that must +be present, but is not considered part of the match. An offset of "lc=n" will +cause Vim to step back n columns before attempting the pattern match, allowing +characters which have already been matched in previous patterns to also be +used as leading context for this match. This can be used, for instance, to +specify that an "escaping" character must not precede the match: > + + :syn match ZNoBackslash "[^\\]z"ms=s+1 + :syn match WNoBackslash "[^\\]w"lc=1 + :syn match Underline "_\+" +< + ___zzzz ___wwww + ^^^ ^^^ matches Underline + ^ ^ matches ZNoBackslash + ^^^^ matches WNoBackslash + +The "ms" offset is automatically set to the same value as the "lc" offset, +unless you set "ms" explicitly. + + +Multi-line patterns *:syn-multi-line* + +The patterns can include "\n" to match an end-of-line. Mostly this works as +expected, but there are a few exceptions. + +When using a start pattern with an offset, the start of the match is not +allowed to start in a following line. The highlighting can start in a +following line though. Using the "\zs" item also requires that the start of +the match doesn't move to another line. + +The skip pattern can include the "\n", but the search for an end pattern will +continue in the first character of the next line, also when that character is +matched by the skip pattern. This is because redrawing may start in any line +halfway a region and there is no check if the skip pattern started in a +previous line. For example, if the skip pattern is "a\nb" and an end pattern +is "b", the end pattern does match in the second line of this: > + x x a + b x x +Generally this means that the skip pattern should not match any characters +after the "\n". + + +External matches *:syn-ext-match* + +These extra regular expression items are available in region patterns: + + */\z(* */\z(\)* *E50* *E52* *E879* + \z(\) Marks the sub-expression as "external", meaning that it can be + accessed from another pattern match. Currently only usable in + defining a syntax region start pattern. + + */\z1* */\z2* */\z3* */\z4* */\z5* + \z1 ... \z9 */\z6* */\z7* */\z8* */\z9* *E66* *E67* + Matches the same string that was matched by the corresponding + sub-expression in a previous start pattern match. + +Sometimes the start and end patterns of a region need to share a common +sub-expression. A common example is the "here" document in Perl and many Unix +shells. This effect can be achieved with the "\z" special regular expression +items, which marks a sub-expression as "external", in the sense that it can be +referenced from outside the pattern in which it is defined. The here-document +example, for instance, can be done like this: > + :syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$" + +As can be seen here, the \z actually does double duty. In the start pattern, +it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it +changes the \1 back-reference into an external reference referring to the +first external sub-expression in the start pattern. External references can +also be used in skip patterns: > + :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1" + +Note that normal and external sub-expressions are completely orthogonal and +indexed separately; for instance, if the pattern "\z(..\)\(..\)" is applied +to the string "aabb", then \1 will refer to "bb" and \z1 will refer to "aa". +Note also that external sub-expressions cannot be accessed as back-references +within the same pattern like normal sub-expressions. If you want to use one +sub-expression as both a normal and an external sub-expression, you can nest +the two, as in "\(\z(...\)\)". + +Note that only matches within a single line can be used. Multi-line matches +cannot be referred to. + +============================================================================== +8. Syntax clusters *:syn-cluster* *E400* + +:sy[ntax] cluster {cluster-name} [contains={group-name}..] + [add={group-name}..] + [remove={group-name}..] + +This command allows you to cluster a list of syntax groups together under a +single name. + + contains={group-name}.. + The cluster is set to the specified list of groups. + add={group-name}.. + The specified groups are added to the cluster. + remove={group-name}.. + The specified groups are removed from the cluster. + +A cluster so defined may be referred to in a contains=.., containedin=.., +nextgroup=.., add=.. or remove=.. list with a "@" prefix. You can also use +this notation to implicitly declare a cluster before specifying its contents. + +Example: > + :syntax match Thing "# [^#]\+ #" contains=@ThingMembers + :syntax cluster ThingMembers contains=ThingMember1,ThingMember2 + +As the previous example suggests, modifications to a cluster are effectively +retroactive; the membership of the cluster is checked at the last minute, so +to speak: > + :syntax keyword A aaa + :syntax keyword B bbb + :syntax cluster AandB contains=A + :syntax match Stuff "( aaa bbb )" contains=@AandB + :syntax cluster AandB add=B " now both keywords are matched in Stuff + +This also has implications for nested clusters: > + :syntax keyword A aaa + :syntax keyword B bbb + :syntax cluster SmallGroup contains=B + :syntax cluster BigGroup contains=A,@SmallGroup + :syntax match Stuff "( aaa bbb )" contains=@BigGroup + :syntax cluster BigGroup remove=B " no effect, since B isn't in BigGroup + :syntax cluster SmallGroup remove=B " now bbb isn't matched within Stuff +< + *E848* +The maximum number of clusters is 9767. + +============================================================================== +9. Including syntax files *:syn-include* *E397* + +It is often useful for one language's syntax file to include a syntax file for +a related language. Depending on the exact relationship, this can be done in +two different ways: + + - If top-level syntax items in the included syntax file are to be + allowed at the top level in the including syntax, you can simply use + the |:runtime| command: > + + " In cpp.vim: + :runtime! syntax/c.vim + :unlet b:current_syntax + +< - If top-level syntax items in the included syntax file are to be + contained within a region in the including syntax, you can use the + ":syntax include" command: + +:sy[ntax] include [@{grouplist-name}] {file-name} + + All syntax items declared in the included file will have the + "contained" flag added. In addition, if a group list is specified, + all top-level syntax items in the included file will be added to + that list. > + + " In perl.vim: + :syntax include @Pod <sfile>:p:h/pod.vim + :syntax region perlPOD start="^=head" end="^=cut" contains=@Pod +< + When {file-name} is an absolute path (starts with "/", "c:", "$VAR" + or "<sfile>") that file is sourced. When it is a relative path + (e.g., "syntax/pod.vim") the file is searched for in 'runtimepath'. + All matching files are loaded. Using a relative path is + recommended, because it allows a user to replace the included file + with his own version, without replacing the file that does the ":syn + include". + + *E847* +The maximum number of includes is 999. + +============================================================================== +10. Synchronizing *:syn-sync* *E403* *E404* + +Vim wants to be able to start redrawing in any position in the document. To +make this possible it needs to know the syntax state at the position where +redrawing starts. + +:sy[ntax] sync [ccomment [group-name] | minlines={N} | ...] + +There are four ways to synchronize: +1. Always parse from the start of the file. + |:syn-sync-first| +2. Based on C-style comments. Vim understands how C-comments work and can + figure out if the current line starts inside or outside a comment. + |:syn-sync-second| +3. Jumping back a certain number of lines and start parsing there. + |:syn-sync-third| +4. Searching backwards in the text for a pattern to sync on. + |:syn-sync-fourth| + + *:syn-sync-maxlines* *:syn-sync-minlines* +For the last three methods, the line range where the parsing can start is +limited by "minlines" and "maxlines". + +If the "minlines={N}" argument is given, the parsing always starts at least +that many lines backwards. This can be used if the parsing may take a few +lines before it's correct, or when it's not possible to use syncing. + +If the "maxlines={N}" argument is given, the number of lines that are searched +for a comment or syncing pattern is restricted to N lines backwards (after +adding "minlines"). This is useful if you have few things to sync on and a +slow machine. Example: > + :syntax sync ccomment maxlines=500 +< + *:syn-sync-linebreaks* +When using a pattern that matches multiple lines, a change in one line may +cause a pattern to no longer match in a previous line. This means has to +start above where the change was made. How many lines can be specified with +the "linebreaks" argument. For example, when a pattern may include one line +break use this: > + :syntax sync linebreaks=1 +The result is that redrawing always starts at least one line before where a +change was made. The default value for "linebreaks" is zero. Usually the +value for "minlines" is bigger than "linebreaks". + + +First syncing method: *:syn-sync-first* +> + :syntax sync fromstart + +The file will be parsed from the start. This makes syntax highlighting +accurate, but can be slow for long files. Vim caches previously parsed text, +so that it's only slow when parsing the text for the first time. However, +when making changes some part of the text needs to be parsed again (worst +case: to the end of the file). + +Using "fromstart" is equivalent to using "minlines" with a very large number. + + +Second syncing method: *:syn-sync-second* *:syn-sync-ccomment* + +For the second method, only the "ccomment" argument needs to be given. +Example: > + :syntax sync ccomment + +When Vim finds that the line where displaying starts is inside a C-style +comment, the last region syntax item with the group-name "Comment" will be +used. This requires that there is a region with the group-name "Comment"! +An alternate group name can be specified, for example: > + :syntax sync ccomment javaComment +This means that the last item specified with "syn region javaComment" will be +used for the detected C comment region. This only works properly if that +region does have a start pattern "\/*" and an end pattern "*\/". + +The "maxlines" argument can be used to restrict the search to a number of +lines. The "minlines" argument can be used to at least start a number of +lines back (e.g., for when there is some construct that only takes a few +lines, but it hard to sync on). + +Note: Syncing on a C comment doesn't work properly when strings are used +that cross a line and contain a "*/". Since letting strings cross a line +is a bad programming habit (many compilers give a warning message), and the +chance of a "*/" appearing inside a comment is very small, this restriction +is hardly ever noticed. + + +Third syncing method: *:syn-sync-third* + +For the third method, only the "minlines={N}" argument needs to be given. +Vim will subtract {N} from the line number and start parsing there. This +means {N} extra lines need to be parsed, which makes this method a bit slower. +Example: > + :syntax sync minlines=50 + +"lines" is equivalent to "minlines" (used by older versions). + + +Fourth syncing method: *:syn-sync-fourth* + +The idea is to synchronize on the end of a few specific regions, called a +sync pattern. Only regions can cross lines, so when we find the end of some +region, we might be able to know in which syntax item we are. The search +starts in the line just above the one where redrawing starts. From there +the search continues backwards in the file. + +This works just like the non-syncing syntax items. You can use contained +matches, nextgroup, etc. But there are a few differences: +- Keywords cannot be used. +- The syntax items with the "sync" keyword form a completely separated group + of syntax items. You can't mix syncing groups and non-syncing groups. +- The matching works backwards in the buffer (line by line), instead of + forwards. +- A line continuation pattern can be given. It is used to decide which group + of lines need to be searched like they were one line. This means that the + search for a match with the specified items starts in the first of the + consecutive that contain the continuation pattern. +- When using "nextgroup" or "contains", this only works within one line (or + group of continued lines). +- When using a region, it must start and end in the same line (or group of + continued lines). Otherwise the end is assumed to be at the end of the + line (or group of continued lines). +- When a match with a sync pattern is found, the rest of the line (or group of + continued lines) is searched for another match. The last match is used. + This is used when a line can contain both the start end the end of a region + (e.g., in a C-comment like /* this */, the last "*/" is used). + +There are two ways how a match with a sync pattern can be used: +1. Parsing for highlighting starts where redrawing starts (and where the + search for the sync pattern started). The syntax group that is expected + to be valid there must be specified. This works well when the regions + that cross lines cannot contain other regions. +2. Parsing for highlighting continues just after the match. The syntax group + that is expected to be present just after the match must be specified. + This can be used when the previous method doesn't work well. It's much + slower, because more text needs to be parsed. +Both types of sync patterns can be used at the same time. + +Besides the sync patterns, other matches and regions can be specified, to +avoid finding unwanted matches. + +[The reason that the sync patterns are given separately, is that mostly the +search for the sync point can be much simpler than figuring out the +highlighting. The reduced number of patterns means it will go (much) +faster.] + + *syn-sync-grouphere* *E393* *E394* + :syntax sync match {sync-group-name} grouphere {group-name} "pattern" .. + + Define a match that is used for syncing. {group-name} is the + name of a syntax group that follows just after the match. Parsing + of the text for highlighting starts just after the match. A region + must exist for this {group-name}. The first one defined will be used. + "NONE" can be used for when there is no syntax group after the match. + + *syn-sync-groupthere* + :syntax sync match {sync-group-name} groupthere {group-name} "pattern" .. + + Like "grouphere", but {group-name} is the name of a syntax group that + is to be used at the start of the line where searching for the sync + point started. The text between the match and the start of the sync + pattern searching is assumed not to change the syntax highlighting. + For example, in C you could search backwards for "/*" and "*/". If + "/*" is found first, you know that you are inside a comment, so the + "groupthere" is "cComment". If "*/" is found first, you know that you + are not in a comment, so the "groupthere" is "NONE". (in practice + it's a bit more complicated, because the "/*" and "*/" could appear + inside a string. That's left as an exercise to the reader...). + + :syntax sync match .. + :syntax sync region .. + + Without a "groupthere" argument. Define a region or match that is + skipped while searching for a sync point. + + *syn-sync-linecont* + :syntax sync linecont {pattern} + + When {pattern} matches in a line, it is considered to continue in + the next line. This means that the search for a sync point will + consider the lines to be concatenated. + +If the "maxlines={N}" argument is given too, the number of lines that are +searched for a match is restricted to N. This is useful if you have very +few things to sync on and a slow machine. Example: > + :syntax sync maxlines=100 + +You can clear all sync settings with: > + :syntax sync clear + +You can clear specific sync patterns with: > + :syntax sync clear {sync-group-name} .. + +============================================================================== +11. Listing syntax items *:syntax* *:sy* *:syn* *:syn-list* + +This command lists all the syntax items: > + + :sy[ntax] [list] + +To show the syntax items for one syntax group: > + + :sy[ntax] list {group-name} + +To list the syntax groups in one cluster: *E392* > + + :sy[ntax] list @{cluster-name} + +See above for other arguments for the ":syntax" command. + +Note that the ":syntax" command can be abbreviated to ":sy", although ":syn" +is mostly used, because it looks better. + +============================================================================== +12. Highlight command *:highlight* *:hi* *E28* *E411* *E415* + +There are three types of highlight groups: +- The ones used for specific languages. For these the name starts with the + name of the language. Many of these don't have any attributes, but are + linked to a group of the second type. +- The ones used for all syntax languages. +- The ones used for the 'highlight' option. + *hitest.vim* +You can see all the groups currently active with this command: > + :so $VIMRUNTIME/syntax/hitest.vim +This will open a new window containing all highlight group names, displayed +in their own color. + + *:colo* *:colorscheme* *E185* +:colo[rscheme] Output the name of the currently active color scheme. + This is basically the same as > + :echo g:colors_name +< In case g:colors_name has not been defined :colo will + output "default". When compiled without the |+eval| + feature it will output "unknown". + +:colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' + for the file "colors/{name}.vim". The first one that + is found is loaded. + To see the name of the currently active color scheme: > + :colo +< The name is also stored in the g:colors_name variable. + Doesn't work recursively, thus you can't use + ":colorscheme" in a color scheme script. + After the color scheme has been loaded the + |ColorScheme| autocommand event is triggered. + For info about writing a colorscheme file: > + :edit $VIMRUNTIME/colors/README.txt + +:hi[ghlight] List all the current highlight groups that have + attributes set. + +:hi[ghlight] {group-name} + List one highlight group. + +:hi[ghlight] clear Reset all highlighting to the defaults. Removes all + highlighting for groups added by the user! + Uses the current value of 'background' to decide which + default colors to use. + +:hi[ghlight] clear {group-name} +:hi[ghlight] {group-name} NONE + Disable the highlighting for one highlight group. It + is _not_ set back to the default colors. + +:hi[ghlight] [default] {group-name} {key}={arg} .. + Add a highlight group, or change the highlighting for + an existing group. + See |highlight-args| for the {key}={arg} arguments. + See |:highlight-default| for the optional [default] + argument. + +Normally a highlight group is added once when starting up. This sets the +default values for the highlighting. After that, you can use additional +highlight commands to change the arguments that you want to set to non-default +values. The value "NONE" can be used to switch the value off or go back to +the default value. + +A simple way to change colors is with the |:colorscheme| command. This loads +a file with ":highlight" commands such as this: > + + :hi Comment gui=bold + +Note that all settings that are not included remain the same, only the +specified field is used, and settings are merged with previous ones. So, the +result is like this single command has been used: > + :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold +< + *:highlight-verbose* +When listing a highlight group and 'verbose' is non-zero, the listing will +also tell where it was last set. Example: > + :verbose hi Comment +< Comment xxx term=bold ctermfg=4 guifg=Blue ~ + Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~ + +When ":hi clear" is used then the script where this command is used will be +mentioned for the default values. See |:verbose-cmd| for more information. + + *highlight-args* *E416* *E417* *E423* +There are three types of terminals for highlighting: +term a normal terminal (vt100, xterm) +cterm a color terminal (MS-DOS console, color-xterm, these have the "Co" + termcap entry) +gui the GUI + +For each type the highlighting can be given. This makes it possible to use +the same syntax file on all terminals, and use the optimal highlighting. + +1. highlight arguments for normal terminals + + *bold* *underline* *undercurl* + *inverse* *italic* *standout* +term={attr-list} *attr-list* *highlight-term* *E418* + attr-list is a comma separated list (without spaces) of the + following items (in any order): + bold + underline + undercurl not always available + reverse + inverse same as reverse + italic + standout + NONE no attributes used (used to reset it) + + Note that "bold" can be used here and by using a bold font. They + have the same effect. + "undercurl" is a curly underline. When "undercurl" is not possible + then "underline" is used. In general "undercurl" is only available in + the GUI. The color is set with |highlight-guisp|. + +start={term-list} *highlight-start* *E422* +stop={term-list} *term-list* *highlight-stop* + These lists of terminal codes can be used to get + non-standard attributes on a terminal. + + The escape sequence specified with the "start" argument + is written before the characters in the highlighted + area. It can be anything that you want to send to the + terminal to highlight this area. The escape sequence + specified with the "stop" argument is written after the + highlighted area. This should undo the "start" argument. + Otherwise the screen will look messed up. + + The {term-list} can have two forms: + + 1. A string with escape sequences. + This is any string of characters, except that it can't start with + "t_" and blanks are not allowed. The <> notation is recognized + here, so you can use things like "<Esc>" and "<Space>". Example: + start=<Esc>[27h;<Esc>[<Space>r; + + 2. A list of terminal codes. + Each terminal code has the form "t_xx", where "xx" is the name of + the termcap entry. The codes have to be separated with commas. + White space is not allowed. Example: + start=t_C1,t_BL + The terminal codes must exist for this to work. + + +2. highlight arguments for color terminals + +cterm={attr-list} *highlight-cterm* + See above for the description of {attr-list} |attr-list|. + The "cterm" argument is likely to be different from "term", when + colors are used. For example, in a normal terminal comments could + be underlined, in a color terminal they can be made Blue. + Note: Many terminals (e.g., DOS console) can't mix these attributes + with coloring. Use only one of "cterm=" OR "ctermfg=" OR "ctermbg=". + +ctermfg={color-nr} *highlight-ctermfg* *E421* +ctermbg={color-nr} *highlight-ctermbg* + The {color-nr} argument is a color number. Its range is zero to + (not including) the number given by the termcap entry "Co". + The actual color with this number depends on the type of terminal + and its settings. Sometimes the color also depends on the settings of + "cterm". For example, on some systems "cterm=bold ctermfg=3" gives + another color, on others you just get color 3. + + For an xterm this depends on your resources, and is a bit + unpredictable. See your xterm documentation for the defaults. The + colors for a color-xterm can be changed from the .Xdefaults file. + Unfortunately this means that it's not possible to get the same colors + for each user. See |xterm-color| for info about color xterms. + + The MSDOS standard colors are fixed (in a console window), so these + have been used for the names. But the meaning of color names in X11 + are fixed, so these color settings have been used, to make the + highlighting settings portable (complicated, isn't it?). The + following names are recognized, with the color number used: + + *cterm-colors* + NR-16 NR-8 COLOR NAME ~ + 0 0 Black + 1 4 DarkBlue + 2 2 DarkGreen + 3 6 DarkCyan + 4 1 DarkRed + 5 5 DarkMagenta + 6 3 Brown, DarkYellow + 7 7 LightGray, LightGrey, Gray, Grey + 8 0* DarkGray, DarkGrey + 9 4* Blue, LightBlue + 10 2* Green, LightGreen + 11 6* Cyan, LightCyan + 12 1* Red, LightRed + 13 5* Magenta, LightMagenta + 14 3* Yellow, LightYellow + 15 7* White + + The number under "NR-16" is used for 16-color terminals ('t_Co' + greater than or equal to 16). The number under "NR-8" is used for + 8-color terminals ('t_Co' less than 16). The '*' indicates that the + bold attribute is set for ctermfg. In many 8-color terminals (e.g., + "linux"), this causes the bright colors to appear. This doesn't work + for background colors! Without the '*' the bold attribute is removed. + If you want to set the bold attribute in a different way, put a + "cterm=" argument AFTER the "ctermfg=" or "ctermbg=" argument. Or use + a number instead of a color name. + + The case of the color names is ignored. + Note that for 16 color ansi style terminals (including xterms), the + numbers in the NR-8 column is used. Here '*' means 'add 8' so that Blue + is 12, DarkGray is 8 etc. + + Note that for some color terminals these names may result in the wrong + colors! + + *:hi-normal-cterm* + When setting the "ctermfg" or "ctermbg" colors for the Normal group, + these will become the colors used for the non-highlighted text. + Example: > + :highlight Normal ctermfg=grey ctermbg=darkblue +< When setting the "ctermbg" color for the Normal group, the + 'background' option will be adjusted automatically. This causes the + highlight groups that depend on 'background' to change! This means + you should set the colors for Normal first, before setting other + colors. + When a colorscheme is being used, changing 'background' causes it to + be reloaded, which may reset all colors (including Normal). First + delete the "g:colors_name" variable when you don't want this. + + When you have set "ctermfg" or "ctermbg" for the Normal group, Vim + needs to reset the color when exiting. This is done with the "op" + termcap entry |t_op|. If this doesn't work correctly, try setting the + 't_op' option in your .vimrc. + *E419* *E420* + When Vim knows the normal foreground and background colors, "fg" and + "bg" can be used as color names. This only works after setting the + colors for the Normal group and for the MS-DOS console. Example, for + reverse video: > + :highlight Visual ctermfg=bg ctermbg=fg +< Note that the colors are used that are valid at the moment this + command are given. If the Normal group colors are changed later, the + "fg" and "bg" colors will not be adjusted. + + +3. highlight arguments for the GUI + +gui={attr-list} *highlight-gui* + These give the attributes to use in the GUI mode. + See |attr-list| for a description. + Note that "bold" can be used here and by using a bold font. They + have the same effect. + Note that the attributes are ignored for the "Normal" group. + +font={font-name} *highlight-font* + font-name is the name of a font, as it is used on the system Vim + runs on. For X11 this is a complicated name, for example: > + font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1 +< + The font-name "NONE" can be used to revert to the default font. + When setting the font for the "Normal" group, this becomes the default + font (until the 'guifont' option is changed; the last one set is + used). + The following only works with Motif and Athena, not with other GUIs: + When setting the font for the "Menu" group, the menus will be changed. + When setting the font for the "Tooltip" group, the tooltips will be + changed. + All fonts used, except for Menu and Tooltip, should be of the same + character size as the default font! Otherwise redrawing problems will + occur. + +guifg={color-name} *highlight-guifg* +guibg={color-name} *highlight-guibg* +guisp={color-name} *highlight-guisp* + These give the foreground (guifg), background (guibg) and special + (guisp) color to use in the GUI. "guisp" is used for undercurl. + There are a few special names: + NONE no color (transparent) + bg use normal background color + background use normal background color + fg use normal foreground color + foreground use normal foreground color + To use a color name with an embedded space or other special character, + put it in single quotes. The single quote cannot be used then. + Example: > + :hi comment guifg='salmon pink' +< + *gui-colors* + Suggested color names (these are available on most systems): + Red LightRed DarkRed + Green LightGreen DarkGreen SeaGreen + Blue LightBlue DarkBlue SlateBlue + Cyan LightCyan DarkCyan + Magenta LightMagenta DarkMagenta + Yellow LightYellow Brown DarkYellow + Gray LightGray DarkGray + Black White + Orange Purple Violet + + In the Win32 GUI version, additional system colors are available. See + |win32-colors|. + + You can also specify a color by its Red, Green and Blue values. + The format is "#rrggbb", where + "rr" is the Red value + "gg" is the Green value + "bb" is the Blue value + All values are hexadecimal, range from "00" to "ff". Examples: > + :highlight Comment guifg=#11f0c3 guibg=#ff00ff +< + *highlight-groups* *highlight-default* +These are the default highlighting groups. These groups are used by the +'highlight' option default. Note that the highlighting depends on the value +of 'background'. You can see the current settings with the ":highlight" +command. + *hl-ColorColumn* +ColorColumn used for the columns set with 'colorcolumn' + *hl-Conceal* +Conceal placeholder characters substituted for concealed + text (see 'conceallevel') + *hl-Cursor* +Cursor the character under the cursor + *hl-CursorIM* +CursorIM like Cursor, but used when in IME mode |CursorIM| + *hl-CursorColumn* +CursorColumn the screen column that the cursor is in when 'cursorcolumn' is + set + *hl-CursorLine* +CursorLine the screen line that the cursor is in when 'cursorline' is + set + *hl-Directory* +Directory directory names (and other special names in listings) + *hl-DiffAdd* +DiffAdd diff mode: Added line |diff.txt| + *hl-DiffChange* +DiffChange diff mode: Changed line |diff.txt| + *hl-DiffDelete* +DiffDelete diff mode: Deleted line |diff.txt| + *hl-DiffText* +DiffText diff mode: Changed text within a changed line |diff.txt| + *hl-ErrorMsg* +ErrorMsg error messages on the command line + *hl-VertSplit* +VertSplit the column separating vertically split windows + *hl-Folded* +Folded line used for closed folds + *hl-FoldColumn* +FoldColumn 'foldcolumn' + *hl-SignColumn* +SignColumn column where |signs| are displayed + *hl-IncSearch* +IncSearch 'incsearch' highlighting; also used for the text replaced with + ":s///c" + *hl-LineNr* +LineNr Line number for ":number" and ":#" commands, and when 'number' + or 'relativenumber' option is set. + *hl-CursorLineNr* +CursorLineNr Like LineNr when 'cursorline' or 'relativenumber' is set for + the cursor line. + *hl-MatchParen* +MatchParen The character under the cursor or just before it, if it + is a paired bracket, and its match. |pi_paren.txt| + + *hl-ModeMsg* +ModeMsg 'showmode' message (e.g., "-- INSERT --") + *hl-MoreMsg* +MoreMsg |more-prompt| + *hl-NonText* +NonText '~' and '@' at the end of the window, characters from + 'showbreak' and other characters that do not really exist in + the text (e.g., ">" displayed when a double-wide character + doesn't fit at the end of the line). + *hl-Normal* +Normal normal text + *hl-Pmenu* +Pmenu Popup menu: normal item. + *hl-PmenuSel* +PmenuSel Popup menu: selected item. + *hl-PmenuSbar* +PmenuSbar Popup menu: scrollbar. + *hl-PmenuThumb* +PmenuThumb Popup menu: Thumb of the scrollbar. + *hl-Question* +Question |hit-enter| prompt and yes/no questions + *hl-Search* +Search Last search pattern highlighting (see 'hlsearch'). + Also used for highlighting the current line in the quickfix + window and similar items that need to stand out. + *hl-SpecialKey* +SpecialKey Meta and special keys listed with ":map", also for text used + to show unprintable characters in the text, 'listchars'. + Generally: text that is displayed differently from what it + really is. + *hl-SpellBad* +SpellBad Word that is not recognized by the spellchecker. |spell| + This will be combined with the highlighting used otherwise. + *hl-SpellCap* +SpellCap Word that should start with a capital. |spell| + This will be combined with the highlighting used otherwise. + *hl-SpellLocal* +SpellLocal Word that is recognized by the spellchecker as one that is + used in another region. |spell| + This will be combined with the highlighting used otherwise. + *hl-SpellRare* +SpellRare Word that is recognized by the spellchecker as one that is + hardly ever used. |spell| + This will be combined with the highlighting used otherwise. + *hl-StatusLine* +StatusLine status line of current window + *hl-StatusLineNC* +StatusLineNC status lines of not-current windows + Note: if this is equal to "StatusLine" Vim will use "^^^" in + the status line of the current window. + *hl-TabLine* +TabLine tab pages line, not active tab page label + *hl-TabLineFill* +TabLineFill tab pages line, where there are no labels + *hl-TabLineSel* +TabLineSel tab pages line, active tab page label + *hl-Title* +Title titles for output from ":set all", ":autocmd" etc. + *hl-Visual* +Visual Visual mode selection + *hl-VisualNOS* +VisualNOS Visual mode selection when vim is "Not Owning the Selection". + Only X11 Gui's |gui-x11| and |xterm-clipboard| supports this. + *hl-WarningMsg* +WarningMsg warning messages + *hl-WildMenu* +WildMenu current match in 'wildmenu' completion + + *hl-User1* *hl-User1..9* *hl-User9* +The 'statusline' syntax allows the use of 9 different highlights in the +statusline and ruler (via 'rulerformat'). The names are User1 to User9. + +For the GUI you can use the following groups to set the colors for the menu, +scrollbars and tooltips. They don't have defaults. This doesn't work for the +Win32 GUI. Only three highlight arguments have any effect here: font, guibg, +and guifg. + + *hl-Menu* +Menu Current font, background and foreground colors of the menus. + Also used for the toolbar. + Applicable highlight arguments: font, guibg, guifg. + + NOTE: For Motif and Athena the font argument actually + specifies a fontset at all times, no matter if 'guifontset' is + empty, and as such it is tied to the current |:language| when + set. + + *hl-Scrollbar* +Scrollbar Current background and foreground of the main window's + scrollbars. + Applicable highlight arguments: guibg, guifg. + + *hl-Tooltip* +Tooltip Current font, background and foreground of the tooltips. + Applicable highlight arguments: font, guibg, guifg. + + NOTE: For Motif and Athena the font argument actually + specifies a fontset at all times, no matter if 'guifontset' is + empty, and as such it is tied to the current |:language| when + set. + +============================================================================== +13. Linking groups *:hi-link* *:highlight-link* *E412* *E413* + +When you want to use the same highlighting for several syntax groups, you +can do this more easily by linking the groups into one common highlight +group, and give the color attributes only for that group. + +To set a link: + + :hi[ghlight][!] [default] link {from-group} {to-group} + +To remove a link: + + :hi[ghlight][!] [default] link {from-group} NONE + +Notes: *E414* +- If the {from-group} and/or {to-group} doesn't exist, it is created. You + don't get an error message for a non-existing group. +- As soon as you use a ":highlight" command for a linked group, the link is + removed. +- If there are already highlight settings for the {from-group}, the link is + not made, unless the '!' is given. For a ":highlight link" command in a + sourced file, you don't get an error message. This can be used to skip + links for groups that already have settings. + + *:hi-default* *:highlight-default* +The [default] argument is used for setting the default highlighting for a +group. If highlighting has already been specified for the group the command +will be ignored. Also when there is an existing link. + +Using [default] is especially useful to overrule the highlighting of a +specific syntax file. For example, the C syntax file contains: > + :highlight default link cComment Comment +If you like Question highlighting for C comments, put this in your vimrc file: > + :highlight link cComment Question +Without the "default" in the C syntax file, the highlighting would be +overruled when the syntax file is loaded. + +============================================================================== +14. Cleaning up *:syn-clear* *E391* + +If you want to clear the syntax stuff for the current buffer, you can use this +command: > + :syntax clear + +This command should be used when you want to switch off syntax highlighting, +or when you want to switch to using another syntax. It's normally not needed +in a syntax file itself, because syntax is cleared by the autocommands that +load the syntax file. +The command also deletes the "b:current_syntax" variable, since no syntax is +loaded after this command. + +If you want to disable syntax highlighting for all buffers, you need to remove +the autocommands that load the syntax files: > + :syntax off + +What this command actually does, is executing the command > + :source $VIMRUNTIME/syntax/nosyntax.vim +See the "nosyntax.vim" file for details. Note that for this to work +$VIMRUNTIME must be valid. See |$VIMRUNTIME|. + +To clean up specific syntax groups for the current buffer: > + :syntax clear {group-name} .. +This removes all patterns and keywords for {group-name}. + +To clean up specific syntax group lists for the current buffer: > + :syntax clear @{grouplist-name} .. +This sets {grouplist-name}'s contents to an empty list. + + *:syntax-reset* *:syn-reset* +If you have changed the colors and messed them up, use this command to get the +defaults back: > + + :syntax reset + +This doesn't change the colors for the 'highlight' option. + +Note that the syntax colors that you set in your vimrc file will also be reset +back to their Vim default. +Note that if you are using a color scheme, the colors defined by the color +scheme for syntax highlighting will be lost. + +What this actually does is: > + + let g:syntax_cmd = "reset" + runtime! syntax/syncolor.vim + +Note that this uses the 'runtimepath' option. + + *syncolor* +If you want to use different colors for syntax highlighting, you can add a Vim +script file to set these colors. Put this file in a directory in +'runtimepath' which comes after $VIMRUNTIME, so that your settings overrule +the default colors. This way these colors will be used after the ":syntax +reset" command. + +For Unix you can use the file ~/.vim/after/syntax/syncolor.vim. Example: > + + if &background == "light" + highlight comment ctermfg=darkgreen guifg=darkgreen + else + highlight comment ctermfg=green guifg=green + endif + + *E679* +Do make sure this syncolor.vim script does not use a "syntax on", set the +'background' option or uses a "colorscheme" command, because it results in an +endless loop. + +Note that when a color scheme is used, there might be some confusion whether +your defined colors are to be used or the colors from the scheme. This +depends on the color scheme file. See |:colorscheme|. + + *syntax_cmd* +The "syntax_cmd" variable is set to one of these values when the +syntax/syncolor.vim files are loaded: + "on" ":syntax on" command. Highlight colors are overruled but + links are kept + "enable" ":syntax enable" command. Only define colors for groups that + don't have highlighting yet. Use ":syntax default". + "reset" ":syntax reset" command or loading a color scheme. Define all + the colors. + "skip" Don't define colors. Used to skip the default settings when a + syncolor.vim file earlier in 'runtimepath' has already set + them. + +============================================================================== +15. Highlighting tags *tag-highlight* + +If you want to highlight all the tags in your file, you can use the following +mappings. + + <F11> -- Generate tags.vim file, and highlight tags. + <F12> -- Just highlight tags based on existing tags.vim file. +> + :map <F11> :sp tags<CR>:%s/^\([^ :]*:\)\=\([^ ]*\).*/syntax keyword Tag \2/<CR>:wq! tags.vim<CR>/^<CR><F12> + :map <F12> :so tags.vim<CR> + +WARNING: The longer the tags file, the slower this will be, and the more +memory Vim will consume. + +Only highlighting typedefs, unions and structs can be done too. For this you +must use Exuberant ctags (found at http://ctags.sf.net). + +Put these lines in your Makefile: + +# Make a highlight file for types. Requires Exuberant ctags and awk +types: types.vim +types.vim: *.[ch] + ctags --c-kinds=gstu -o- *.[ch] |\ + awk 'BEGIN{printf("syntax keyword Type\t")}\ + {printf("%s ", $$1)}END{print ""}' > $@ + +And put these lines in your .vimrc: > + + " load the types.vim highlighting file, if it exists + autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim' + autocmd BufRead,BufNewFile *.[ch] if filereadable(fname) + autocmd BufRead,BufNewFile *.[ch] exe 'so ' . fname + autocmd BufRead,BufNewFile *.[ch] endif + +============================================================================== +16. Window-local syntax *:ownsyntax* + +Normally all windows on a buffer share the same syntax settings. It is +possible, however, to set a particular window on a file to have its own +private syntax setting. A possible example would be to edit LaTeX source +with conventional highlighting in one window, while seeing the same source +highlighted differently (so as to hide control sequences and indicate bold, +italic etc regions) in another. The 'scrollbind' option is useful here. + +To set the current window to have the syntax "foo", separately from all other +windows on the buffer: > + :ownsyntax foo +< *w:current_syntax* +This will set the "w:current_syntax" variable to "foo". The value of +"b:current_syntax" does not change. This is implemented by saving and +restoring "b:current_syntax", since the syntax files do set +"b:current_syntax". The value set by the syntax file is assigned to +"w:current_syntax". + +Once a window has its own syntax, syntax commands executed from other windows +on the same buffer (including :syntax clear) have no effect. Conversely, +syntax commands executed from that window do not affect other windows on the +same buffer. + +A window with its own syntax reverts to normal behavior when another buffer +is loaded into that window or the file is reloaded. +When splitting the window, the new window will use the original syntax. + +============================================================================== +17. Color xterms *xterm-color* *color-xterm* + +Most color xterms have only eight colors. If you don't get colors with the +default setup, it should work with these lines in your .vimrc: > + :if &term =~ "xterm" + : if has("terminfo") + : set t_Co=8 + : set t_Sf=<Esc>[3%p1%dm + : set t_Sb=<Esc>[4%p1%dm + : else + : set t_Co=8 + : set t_Sf=<Esc>[3%dm + : set t_Sb=<Esc>[4%dm + : endif + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + +You might want to change the first "if" to match the name of your terminal, +e.g. "dtterm" instead of "xterm". + +Note: Do these settings BEFORE doing ":syntax on". Otherwise the colors may +be wrong. + *xiterm* *rxvt* +The above settings have been mentioned to work for xiterm and rxvt too. +But for using 16 colors in an rxvt these should work with terminfo: > + :set t_AB=<Esc>[%?%p1%{8}%<%t25;%p1%{40}%+%e5;%p1%{32}%+%;%dm + :set t_AF=<Esc>[%?%p1%{8}%<%t22;%p1%{30}%+%e1;%p1%{22}%+%;%dm +< + *colortest.vim* +To test your color setup, a file has been included in the Vim distribution. +To use it, execute this command: > + :runtime syntax/colortest.vim + +Some versions of xterm (and other terminals, like the Linux console) can +output lighter foreground colors, even though the number of colors is defined +at 8. Therefore Vim sets the "cterm=bold" attribute for light foreground +colors, when 't_Co' is 8. + + *xfree-xterm* +To get 16 colors or more, get the newest xterm version (which should be +included with XFree86 3.3 and later). You can also find the latest version +at: > + http://invisible-island.net/xterm/xterm.html +Here is a good way to configure it. This uses 88 colors and enables the +termcap-query feature, which allows Vim to ask the xterm how many colors it +supports. > + ./configure --disable-bold-color --enable-88-color --enable-tcap-query +If you only get 8 colors, check the xterm compilation settings. +(Also see |UTF8-xterm| for using this xterm with UTF-8 character encoding). + +This xterm should work with these lines in your .vimrc (for 16 colors): > + :if has("terminfo") + : set t_Co=16 + : set t_AB=<Esc>[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm + : set t_AF=<Esc>[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm + :else + : set t_Co=16 + : set t_Sf=<Esc>[3%dm + : set t_Sb=<Esc>[4%dm + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + +Without |+terminfo|, Vim will recognize these settings, and automatically +translate cterm colors of 8 and above to "<Esc>[9%dm" and "<Esc>[10%dm". +Colors above 16 are also translated automatically. + +For 256 colors this has been reported to work: > + + :set t_AB=<Esc>[48;5;%dm + :set t_AF=<Esc>[38;5;%dm + +Or just set the TERM environment variable to "xterm-color" or "xterm-16color" +and try if that works. + +You probably want to use these X resources (in your ~/.Xdefaults file): + XTerm*color0: #000000 + XTerm*color1: #c00000 + XTerm*color2: #008000 + XTerm*color3: #808000 + XTerm*color4: #0000c0 + XTerm*color5: #c000c0 + XTerm*color6: #008080 + XTerm*color7: #c0c0c0 + XTerm*color8: #808080 + XTerm*color9: #ff6060 + XTerm*color10: #00ff00 + XTerm*color11: #ffff00 + XTerm*color12: #8080ff + XTerm*color13: #ff40ff + XTerm*color14: #00ffff + XTerm*color15: #ffffff + Xterm*cursorColor: Black + +[Note: The cursorColor is required to work around a bug, which changes the +cursor color to the color of the last drawn text. This has been fixed by a +newer version of xterm, but not everybody is using it yet.] + +To get these right away, reload the .Xdefaults file to the X Option database +Manager (you only need to do this when you just changed the .Xdefaults file): > + xrdb -merge ~/.Xdefaults +< + *xterm-blink* *xterm-blinking-cursor* +To make the cursor blink in an xterm, see tools/blink.c. Or use Thomas +Dickey's xterm above patchlevel 107 (see above for where to get it), with +these resources: + XTerm*cursorBlink: on + XTerm*cursorOnTime: 400 + XTerm*cursorOffTime: 250 + XTerm*cursorColor: White + + *hpterm-color* +These settings work (more or less) for an hpterm, which only supports 8 +foreground colors: > + :if has("terminfo") + : set t_Co=8 + : set t_Sf=<Esc>[&v%p1%dS + : set t_Sb=<Esc>[&v7S + :else + : set t_Co=8 + : set t_Sf=<Esc>[&v%dS + : set t_Sb=<Esc>[&v7S + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + + *Eterm* *enlightened-terminal* +These settings have been reported to work for the Enlightened terminal +emulator, or Eterm. They might work for all xterm-like terminals that use the +bold attribute to get bright colors. Add an ":if" like above when needed. > + :set t_Co=16 + :set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m + :set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m +< + *TTpro-telnet* +These settings should work for TTpro telnet. Tera Term Pro is a freeware / +open-source program for MS-Windows. > + set t_Co=16 + set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{32}%+5;%;%dm + set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{22}%+1;%;%dm +Also make sure TTpro's Setup / Window / Full Color is enabled, and make sure +that Setup / Font / Enable Bold is NOT enabled. +(info provided by John Love-Jensen <eljay@Adobe.COM>) + + +============================================================================== +18. When syntax is slow *:syntime* + +This is aimed at authors of a syntax file. + +If your syntax causes redrawing to be slow, here are a few hints on making it +faster. To see slowness switch on some features that usually interfere, such +as 'relativenumber' and |folding|. + +Note: this is only available when compiled with the |+profile| feature. +You many need to build Vim with "huge" features. + +To find out what patterns are consuming most time, get an overview with this +sequence: > + :syntime on + [ redraw the text at least once with CTRL-L ] + :syntime report + +This will display a list of syntax patterns that were used, sorted by the time +it took to match them against the text. + +:syntime on Start measuring syntax times. This will add some + overhead to compute the time spent on syntax pattern + matching. + +:syntime off Stop measuring syntax times. + +:syntime clear Set all the counters to zero, restart measuring. + +:syntime report Show the syntax items used since ":syntime on" in the + current window. Use a wider display to see more of + the output. + + The list is sorted by total time. The columns are: + TOTAL Total time in seconds spent on + matching this pattern. + COUNT Number of times the pattern was used. + MATCH Number of times the pattern actually + matched + SLOWEST The longest time for one try. + AVERAGE The average time for one try. + NAME Name of the syntax item. Note that + this is not unique. + PATTERN The pattern being used. + +Pattern matching gets slow when it has to try many alternatives. Try to +include as much literal text as possible to reduce the number of ways a +pattern does NOT match. + +When using the "\@<=" and "\@<!" items, add a maximum size to avoid trying at +all positions in the current and previous line. For example, if the item is +literal text specify the size of that text (in bytes): + +"<\@<=span" Matches "span" in "<span". This tries matching with "<" in + many places. +"<\@1<=span" Matches the same, but only tries one byte before "span". + + + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/tabpage.txt b/share/vim/vim74/doc/tabpage.txt new file mode 100644 index 00000000..3c7ad9fe --- /dev/null +++ b/share/vim/vim74/doc/tabpage.txt @@ -0,0 +1,392 @@ +*tabpage.txt* For Vim version 7.4. Last change: 2012 Aug 08 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Editing with windows in multiple tab pages. *tab-page* *tabpage* + +The commands which have been added to use multiple tab pages are explained +here. Additionally, there are explanations for commands that work differently +when used in combination with more than one tab page. + +1. Introduction |tab-page-intro| +2. Commands |tab-page-commands| +3. Other items |tab-page-other| +4. Setting 'tabline' |setting-tabline| +5. Setting 'guitablabel' |setting-guitablabel| + +{Vi does not have any of these commands} +{not able to use multiple tab pages when the |+windows| feature was disabled +at compile time} + +============================================================================== +1. Introduction *tab-page-intro* + +A tab page holds one or more windows. You can easily switch between tab +pages, so that you have several collections of windows to work on different +things. + +Usually you will see a list of labels at the top of the Vim window, one for +each tab page. With the mouse you can click on the label to jump to that tab +page. There are other ways to move between tab pages, see below. + +Most commands work only in the current tab page. That includes the |CTRL-W| +commands, |:windo|, |:all| and |:ball| (when not using the |:tab| modifier). +The commands that are aware of other tab pages than the current one are +mentioned below. + +Tabs are also a nice way to edit a buffer temporarily without changing the +current window layout. Open a new tab page, do whatever you want to do and +close the tab page. + +============================================================================== +2. Commands *tab-page-commands* + +OPENING A NEW TAB PAGE: + +When starting Vim "vim -p filename ..." opens each file argument in a separate +tab page (up to 'tabpagemax'). See |-p| + +A double click with the mouse in the non-GUI tab pages line opens a new, empty +tab page. It is placed left of the position of the click. The first click +may select another tab page first, causing an extra screen update. + +This also works in a few GUI versions, esp. Win32 and Motif. But only when +clicking right of the labels. + +In the GUI tab pages line you can use the right mouse button to open menu. +|tabline-menu|. + +:[count]tabe[dit] *:tabe* *:tabedit* *:tabnew* +:[count]tabnew + Open a new tab page with an empty window, after the current + tab page. For [count] see |:tab| below. + +:[count]tabe[dit] [++opt] [+cmd] {file} +:[count]tabnew [++opt] [+cmd] {file} + Open a new tab page and edit {file}, like with |:edit|. + For [count] see |:tab| below. + +:[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* + Open a new tab page and edit {file} in 'path', like with + |:find|. For [count] see |:tab| below. + {not available when the |+file_in_path| feature was disabled + at compile time} + +:[count]tab {cmd} *:tab* + Execute {cmd} and when it opens a new window open a new tab + page instead. Doesn't work for |:diffsplit|, |:diffpatch|, + |:execute| and |:normal|. + When [count] is omitted the tab page appears after the current + one. + When [count] is specified the new tab page comes after tab + page [count]. Use ":0tab cmd" to get the new tab page as the + first one. + Examples: > + :tab split " opens current buffer in new tab page + :tab help gt " opens tab page with help for "gt" + +CTRL-W gf Open a new tab page and edit the file name under the cursor. + See |CTRL-W_gf|. + +CTRL-W gF Open a new tab page and edit the file name under the cursor + and jump to the line number following the file name. + See |CTRL-W_gF|. + +CLOSING A TAB PAGE: + +Closing the last window of a tab page closes the tab page too, unless there is +only one tab page. + +Using the mouse: If the tab page line is displayed you can click in the "X" at +the top right to close the current tab page. A custom |'tabline'| may show +something else. + + *:tabc* *:tabclose* +:tabc[lose][!] Close current tab page. + This command fails when: + - There is only one tab page on the screen. *E784* + - When 'hidden' is not set, [!] is not used, a buffer has + changes, and there is no other window on this buffer. + Changes to the buffer are not written and won't get lost, so + this is a "safe" command. + +:tabc[lose][!] {count} + Close tab page {count}. Fails in the same way as `:tabclose` + above. + + *:tabo* *:tabonly* +:tabo[nly][!] Close all other tab pages. + When the 'hidden' option is set, all buffers in closed windows + become hidden. + When 'hidden' is not set, and the 'autowrite' option is set, + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is + given, then they become hidden. But modified buffers are + never abandoned, so changes cannot get lost. + + +SWITCHING TO ANOTHER TAB PAGE: + +Using the mouse: If the tab page line is displayed you can click in a tab page +label to switch to that tab page. Click where there is no label to go to the +next tab page. |'tabline'| + +:tabn[ext] *:tabn* *:tabnext* *gt* +<C-PageDown> *CTRL-<PageDown>* *<C-PageDown>* +gt *i_CTRL-<PageDown>* *i_<C-PageDown>* + Go to the next tab page. Wraps around from the last to the + first one. + +:tabn[ext] {count} +{count}<C-PageDown> +{count}gt Go to tab page {count}. The first tab page has number one. + + +:tabp[revious] *:tabp* *:tabprevious* *gT* *:tabN* +:tabN[ext] *:tabNext* *CTRL-<PageUp>* +<C-PageUp> *<C-PageUp>* *i_CTRL-<PageUp>* *i_<C-PageUp>* +gT Go to the previous tab page. Wraps around from the first one + to the last one. + +:tabp[revious] {count} +:tabN[ext] {count} +{count}<C-PageUp> +{count}gT Go {count} tab pages back. Wraps around from the first one + to the last one. + +:tabr[ewind] *:tabfir* *:tabfirst* *:tabr* *:tabrewind* +:tabfir[st] Go to the first tab page. + + *:tabl* *:tablast* +:tabl[ast] Go to the last tab page. + + +Other commands: + *:tabs* +:tabs List the tab pages and the windows they contain. + Shows a ">" for the current window. + Shows a "+" for modified buffers. + + +REORDERING TAB PAGES: + +:tabm[ove] [N] *:tabm* *:tabmove* +:[N]tabm[ove] + Move the current tab page to after tab page N. Use zero to + make the current tab page the first one. Without N the tab + page is made the last one. + +:tabm[ove] +[N] +:tabm[ove] -[N] + Move the current tab page N places to the right (with +) or to + the left (with -). + +Note that although it is possible to move a tab behind the N-th one by using +:Ntabmove, it is impossible to move it by N places by using :+Ntabmove. For +clarification what +N means in this context see |[range]|. + + +LOOPING OVER TAB PAGES: + + *:tabd* *:tabdo* +:tabd[o] {cmd} Execute {cmd} in each tab page. + It works like doing this: > + :tabfirst + :{cmd} + :tabnext + :{cmd} + etc. +< This only operates in the current window of each tab page. + When an error is detected on one tab page, further tab pages + will not be visited. + The last tab page (or where an error occurred) becomes the + current tab page. + {cmd} can contain '|' to concatenate several commands. + {cmd} must not open or close tab pages or reorder them. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + Also see |:windo|, |:argdo| and |:bufdo|. + +============================================================================== +3. Other items *tab-page-other* + + *tabline-menu* +The GUI tab pages line has a popup menu. It is accessed with a right click. +The entries are: + Close Close the tab page under the mouse pointer. The + current one if there is no label under the mouse + pointer. + New Tab Open a tab page, editing an empty buffer. It appears + to the left of the mouse pointer. + Open Tab... Like "New Tab" and additionally use a file selector to + select a file to edit. + +Diff mode works per tab page. You can see the diffs between several files +within one tab page. Other tab pages can show differences between other +files. + +Variables local to a tab page start with "t:". |tabpage-variable| + +Currently there is only one option local to a tab page: 'cmdheight'. + +The TabLeave and TabEnter autocommand events can be used to do something when +switching from one tab page to another. The exact order depends on what you +are doing. When creating a new tab page this works as if you create a new +window on the same buffer and then edit another buffer. Thus ":tabnew" +triggers: + WinLeave leave current window + TabLeave leave current tab page + TabEnter enter new tab page + WinEnter enter window in new tab page + BufLeave leave current buffer + BufEnter enter new empty buffer + +When switching to another tab page the order is: + BufLeave + WinLeave + TabLeave + TabEnter + WinEnter + BufEnter + +============================================================================== +4. Setting 'tabline' *setting-tabline* + +The 'tabline' option specifies what the line with tab pages labels looks like. +It is only used when there is no GUI tab line. + +You can use the 'showtabline' option to specify when you want the line with +tab page labels to appear: never, when there is more than one tab page or +always. + +The highlighting of the tab pages line is set with the groups TabLine +TabLineSel and TabLineFill. |hl-TabLine| |hl-TabLineSel| |hl-TabLineFill| + +A "+" will be shown for a tab page that has a modified window. The number of +windows in a tabpage is also shown. Thus "3+" means three windows and one of +them has a modified buffer. + +The 'tabline' option allows you to define your preferred way to tab pages +labels. This isn't easy, thus an example will be given here. + +For basics see the 'statusline' option. The same items can be used in the +'tabline' option. Additionally, the |tabpagebuflist()|, |tabpagenr()| and +|tabpagewinnr()| functions are useful. + +Since the number of tab labels will vary, you need to use an expression for +the whole option. Something like: > + :set tabline=%!MyTabLine() + +Then define the MyTabLine() function to list all the tab pages labels. A +convenient method is to split it in two parts: First go over all the tab +pages and define labels for them. Then get the label for each tab page. > + + function MyTabLine() + let s = '' + for i in range(tabpagenr('$')) + " select the highlighting + if i + 1 == tabpagenr() + let s .= '%#TabLineSel#' + else + let s .= '%#TabLine#' + endif + + " set the tab page number (for mouse clicks) + let s .= '%' . (i + 1) . 'T' + + " the label is made by MyTabLabel() + let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' + endfor + + " after the last tab fill with TabLineFill and reset tab page nr + let s .= '%#TabLineFill#%T' + + " right-align the label to close the current tab page + if tabpagenr('$') > 1 + let s .= '%=%#TabLine#%999Xclose' + endif + + return s + endfunction + +Now the MyTabLabel() function is called for each tab page to get its label. > + + function MyTabLabel(n) + let buflist = tabpagebuflist(a:n) + let winnr = tabpagewinnr(a:n) + return bufname(buflist[winnr - 1]) + endfunction + +This is just a simplistic example that results in a tab pages line that +resembles the default, but without adding a + for a modified buffer or +truncating the names. You will want to reduce the width of labels in a +clever way when there is not enough room. Check the 'columns' option for the +space available. + +============================================================================== +5. Setting 'guitablabel' *setting-guitablabel* + +When the GUI tab pages line is displayed, 'guitablabel' can be used to +specify the label to display for each tab page. Unlike 'tabline', which +specifies the whole tab pages line at once, 'guitablabel' is used for each +label separately. + +'guitabtooltip' is very similar and is used for the tooltip of the same label. +This only appears when the mouse pointer hovers over the label, thus it +usually is longer. Only supported on some systems though. + +See the 'statusline' option for the format of the value. + +The "%N" item can be used for the current tab page number. The |v:lnum| +variable is also set to this number when the option is evaluated. +The items that use a file name refer to the current window of the tab page. + +Note that syntax highlighting is not used for the option. The %T and %X +items are also ignored. + +A simple example that puts the tab page number and the buffer name in the +label: > + :set guitablabel=%N\ %f + +An example that resembles the default 'guitablabel': Show the number of +windows in the tab page and a '+' if there is a modified buffer: > + + function GuiTabLabel() + let label = '' + let bufnrlist = tabpagebuflist(v:lnum) + + " Add '+' if one of the buffers in the tab page is modified + for bufnr in bufnrlist + if getbufvar(bufnr, "&modified") + let label = '+' + break + endif + endfor + + " Append the number of windows in the tab page if more than one + let wincount = tabpagewinnr(v:lnum, '$') + if wincount > 1 + let label .= wincount + endif + if label != '' + let label .= ' ' + endif + + " Append the buffer name + return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) + endfunction + + set guitablabel=%{GuiTabLabel()} + +Note that the function must be defined before setting the option, otherwise +you get an error message for the function not being known. + +If you want to fall back to the default label, return an empty string. + +If you want to show something specific for a tab page, you might want to use a +tab page local variable. |t:var| + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/tags b/share/vim/vim74/doc/tags new file mode 100644 index 00000000..b7e16df2 --- /dev/null +++ b/share/vim/vim74/doc/tags @@ -0,0 +1,8858 @@ +! change.txt /*!* +!! change.txt /*!!* +# pattern.txt /*#* +$ motion.txt /*$* +$HOME options.txt /*$HOME* +$HOME-use version5.txt /*$HOME-use* +$MYGVIMRC gui.txt /*$MYGVIMRC* +$MYVIMRC starting.txt /*$MYVIMRC* +$VIM starting.txt /*$VIM* +$VIM-use version5.txt /*$VIM-use* +$VIMRUNTIME starting.txt /*$VIMRUNTIME* +% motion.txt /*%* +%:. cmdline.txt /*%:.* +%:8 cmdline.txt /*%:8* +%:e cmdline.txt /*%:e* +%:gs cmdline.txt /*%:gs* +%:h cmdline.txt /*%:h* +%:p cmdline.txt /*%:p* +%:r cmdline.txt /*%:r* +%:s cmdline.txt /*%:s* +%:t cmdline.txt /*%:t* +%:~ cmdline.txt /*%:~* +& change.txt /*&* +' motion.txt /*'* +'' motion.txt /*''* +'( motion.txt /*'(* +') motion.txt /*')* +'. motion.txt /*'.* +'0 motion.txt /*'0* +'< motion.txt /*'<* +'> motion.txt /*'>* +'A motion.txt /*'A* +'[ motion.txt /*'[* +'] motion.txt /*']* +'^ motion.txt /*'^* +'a motion.txt /*'a* +'acd' options.txt /*'acd'* +'ai' options.txt /*'ai'* +'akm' options.txt /*'akm'* +'al' options.txt /*'al'* +'aleph' options.txt /*'aleph'* +'allowrevins' options.txt /*'allowrevins'* +'altkeymap' options.txt /*'altkeymap'* +'ambiwidth' options.txt /*'ambiwidth'* +'ambw' options.txt /*'ambw'* +'anti' options.txt /*'anti'* +'antialias' options.txt /*'antialias'* +'ap' vi_diff.txt /*'ap'* +'ar' options.txt /*'ar'* +'arab' options.txt /*'arab'* +'arabic' options.txt /*'arabic'* +'arabicshape' options.txt /*'arabicshape'* +'ari' options.txt /*'ari'* +'arshape' options.txt /*'arshape'* +'as' todo.txt /*'as'* +'autochdir' options.txt /*'autochdir'* +'autoindent' options.txt /*'autoindent'* +'autoprint' vi_diff.txt /*'autoprint'* +'autoread' options.txt /*'autoread'* +'autosave' todo.txt /*'autosave'* +'autowrite' options.txt /*'autowrite'* +'autowriteall' options.txt /*'autowriteall'* +'aw' options.txt /*'aw'* +'awa' options.txt /*'awa'* +'background' options.txt /*'background'* +'backspace' options.txt /*'backspace'* +'backup' options.txt /*'backup'* +'backupcopy' options.txt /*'backupcopy'* +'backupdir' options.txt /*'backupdir'* +'backupext' options.txt /*'backupext'* +'backupskip' options.txt /*'backupskip'* +'balloondelay' options.txt /*'balloondelay'* +'ballooneval' options.txt /*'ballooneval'* +'balloonexpr' options.txt /*'balloonexpr'* +'bdir' options.txt /*'bdir'* +'bdlay' options.txt /*'bdlay'* +'beautify' vi_diff.txt /*'beautify'* +'beval' options.txt /*'beval'* +'bex' options.txt /*'bex'* +'bexpr' options.txt /*'bexpr'* +'bf' vi_diff.txt /*'bf'* +'bg' options.txt /*'bg'* +'bh' options.txt /*'bh'* +'bin' options.txt /*'bin'* +'binary' options.txt /*'binary'* +'biosk' options.txt /*'biosk'* +'bioskey' options.txt /*'bioskey'* +'bk' options.txt /*'bk'* +'bkc' options.txt /*'bkc'* +'bl' options.txt /*'bl'* +'bomb' options.txt /*'bomb'* +'breakat' options.txt /*'breakat'* +'brk' options.txt /*'brk'* +'browsedir' options.txt /*'browsedir'* +'bs' options.txt /*'bs'* +'bsdir' options.txt /*'bsdir'* +'bsk' options.txt /*'bsk'* +'bt' options.txt /*'bt'* +'bufhidden' options.txt /*'bufhidden'* +'buflisted' options.txt /*'buflisted'* +'buftype' options.txt /*'buftype'* +'casemap' options.txt /*'casemap'* +'cb' options.txt /*'cb'* +'cc' options.txt /*'cc'* +'ccv' options.txt /*'ccv'* +'cd' options.txt /*'cd'* +'cdpath' options.txt /*'cdpath'* +'cedit' options.txt /*'cedit'* +'cf' options.txt /*'cf'* +'cfu' options.txt /*'cfu'* +'ch' options.txt /*'ch'* +'character' intro.txt /*'character'* +'charconvert' options.txt /*'charconvert'* +'ci' options.txt /*'ci'* +'cin' options.txt /*'cin'* +'cindent' options.txt /*'cindent'* +'cink' options.txt /*'cink'* +'cinkeys' options.txt /*'cinkeys'* +'cino' options.txt /*'cino'* +'cinoptions' options.txt /*'cinoptions'* +'cinw' options.txt /*'cinw'* +'cinwords' options.txt /*'cinwords'* +'clipboard' options.txt /*'clipboard'* +'cm' options.txt /*'cm'* +'cmdheight' options.txt /*'cmdheight'* +'cmdwinheight' options.txt /*'cmdwinheight'* +'cmp' options.txt /*'cmp'* +'cms' options.txt /*'cms'* +'co' options.txt /*'co'* +'cocu' options.txt /*'cocu'* +'cole' options.txt /*'cole'* +'colorcolumn' options.txt /*'colorcolumn'* +'columns' options.txt /*'columns'* +'com' options.txt /*'com'* +'comments' options.txt /*'comments'* +'commentstring' options.txt /*'commentstring'* +'compatible' options.txt /*'compatible'* +'complete' options.txt /*'complete'* +'completefunc' options.txt /*'completefunc'* +'completeopt' options.txt /*'completeopt'* +'concealcursor' options.txt /*'concealcursor'* +'conceallevel' options.txt /*'conceallevel'* +'confirm' options.txt /*'confirm'* +'consk' options.txt /*'consk'* +'conskey' options.txt /*'conskey'* +'copyindent' options.txt /*'copyindent'* +'cot' options.txt /*'cot'* +'cp' options.txt /*'cp'* +'cpo' options.txt /*'cpo'* +'cpoptions' options.txt /*'cpoptions'* +'cpt' options.txt /*'cpt'* +'crb' options.txt /*'crb'* +'cryptmethod' options.txt /*'cryptmethod'* +'cscopepathcomp' options.txt /*'cscopepathcomp'* +'cscopeprg' options.txt /*'cscopeprg'* +'cscopequickfix' options.txt /*'cscopequickfix'* +'cscoperelative' options.txt /*'cscoperelative'* +'cscopetag' options.txt /*'cscopetag'* +'cscopetagorder' options.txt /*'cscopetagorder'* +'cscopeverbose' options.txt /*'cscopeverbose'* +'cspc' options.txt /*'cspc'* +'csprg' options.txt /*'csprg'* +'csqf' options.txt /*'csqf'* +'csre' options.txt /*'csre'* +'cst' options.txt /*'cst'* +'csto' options.txt /*'csto'* +'csverb' options.txt /*'csverb'* +'cuc' options.txt /*'cuc'* +'cul' options.txt /*'cul'* +'cursorbind' options.txt /*'cursorbind'* +'cursorcolumn' options.txt /*'cursorcolumn'* +'cursorline' options.txt /*'cursorline'* +'cwh' options.txt /*'cwh'* +'debug' options.txt /*'debug'* +'deco' options.txt /*'deco'* +'def' options.txt /*'def'* +'define' options.txt /*'define'* +'delcombine' options.txt /*'delcombine'* +'dex' options.txt /*'dex'* +'dg' options.txt /*'dg'* +'dict' options.txt /*'dict'* +'dictionary' options.txt /*'dictionary'* +'diff' options.txt /*'diff'* +'diffexpr' options.txt /*'diffexpr'* +'diffopt' options.txt /*'diffopt'* +'digraph' options.txt /*'digraph'* +'dip' options.txt /*'dip'* +'dir' options.txt /*'dir'* +'directory' options.txt /*'directory'* +'display' options.txt /*'display'* +'dy' options.txt /*'dy'* +'ea' options.txt /*'ea'* +'ead' options.txt /*'ead'* +'eadirection' options.txt /*'eadirection'* +'eb' options.txt /*'eb'* +'ed' options.txt /*'ed'* +'edcompatible' options.txt /*'edcompatible'* +'ef' options.txt /*'ef'* +'efm' options.txt /*'efm'* +'ei' options.txt /*'ei'* +'ek' options.txt /*'ek'* +'enc' options.txt /*'enc'* +'encoding' options.txt /*'encoding'* +'endofline' options.txt /*'endofline'* +'eol' options.txt /*'eol'* +'ep' options.txt /*'ep'* +'equalalways' options.txt /*'equalalways'* +'equalprg' options.txt /*'equalprg'* +'errorbells' options.txt /*'errorbells'* +'errorfile' options.txt /*'errorfile'* +'errorformat' options.txt /*'errorformat'* +'esckeys' options.txt /*'esckeys'* +'et' options.txt /*'et'* +'eventignore' options.txt /*'eventignore'* +'ex' options.txt /*'ex'* +'expandtab' options.txt /*'expandtab'* +'exrc' options.txt /*'exrc'* +'fcl' options.txt /*'fcl'* +'fcs' options.txt /*'fcs'* +'fdc' options.txt /*'fdc'* +'fde' options.txt /*'fde'* +'fdi' options.txt /*'fdi'* +'fdl' options.txt /*'fdl'* +'fdls' options.txt /*'fdls'* +'fdm' options.txt /*'fdm'* +'fdn' options.txt /*'fdn'* +'fdo' options.txt /*'fdo'* +'fdt' options.txt /*'fdt'* +'fe' options.txt /*'fe'* +'fen' options.txt /*'fen'* +'fenc' options.txt /*'fenc'* +'fencs' options.txt /*'fencs'* +'fex' options.txt /*'fex'* +'ff' options.txt /*'ff'* +'ffs' options.txt /*'ffs'* +'fic' options.txt /*'fic'* +'fileencoding' options.txt /*'fileencoding'* +'fileencodings' options.txt /*'fileencodings'* +'fileformat' options.txt /*'fileformat'* +'fileformats' options.txt /*'fileformats'* +'fileignorecase' options.txt /*'fileignorecase'* +'filetype' options.txt /*'filetype'* +'fillchars' options.txt /*'fillchars'* +'fk' options.txt /*'fk'* +'fkmap' options.txt /*'fkmap'* +'fl' vi_diff.txt /*'fl'* +'flash' vi_diff.txt /*'flash'* +'flp' options.txt /*'flp'* +'fml' options.txt /*'fml'* +'fmr' options.txt /*'fmr'* +'fo' options.txt /*'fo'* +'foldclose' options.txt /*'foldclose'* +'foldcolumn' options.txt /*'foldcolumn'* +'foldenable' options.txt /*'foldenable'* +'foldexpr' options.txt /*'foldexpr'* +'foldignore' options.txt /*'foldignore'* +'foldlevel' options.txt /*'foldlevel'* +'foldlevelstart' options.txt /*'foldlevelstart'* +'foldmarker' options.txt /*'foldmarker'* +'foldmethod' options.txt /*'foldmethod'* +'foldminlines' options.txt /*'foldminlines'* +'foldnestmax' options.txt /*'foldnestmax'* +'foldopen' options.txt /*'foldopen'* +'foldtext' options.txt /*'foldtext'* +'formatexpr' options.txt /*'formatexpr'* +'formatlistpat' options.txt /*'formatlistpat'* +'formatoptions' options.txt /*'formatoptions'* +'formatprg' options.txt /*'formatprg'* +'fp' options.txt /*'fp'* +'fs' options.txt /*'fs'* +'fsync' options.txt /*'fsync'* +'ft' options.txt /*'ft'* +'gcr' options.txt /*'gcr'* +'gd' options.txt /*'gd'* +'gdefault' options.txt /*'gdefault'* +'gfm' options.txt /*'gfm'* +'gfn' options.txt /*'gfn'* +'gfs' options.txt /*'gfs'* +'gfw' options.txt /*'gfw'* +'ghr' options.txt /*'ghr'* +'go' options.txt /*'go'* +'go-A' options.txt /*'go-A'* +'go-F' options.txt /*'go-F'* +'go-L' options.txt /*'go-L'* +'go-M' options.txt /*'go-M'* +'go-P' options.txt /*'go-P'* +'go-R' options.txt /*'go-R'* +'go-T' options.txt /*'go-T'* +'go-a' options.txt /*'go-a'* +'go-b' options.txt /*'go-b'* +'go-c' options.txt /*'go-c'* +'go-e' options.txt /*'go-e'* +'go-f' options.txt /*'go-f'* +'go-g' options.txt /*'go-g'* +'go-h' options.txt /*'go-h'* +'go-i' options.txt /*'go-i'* +'go-l' options.txt /*'go-l'* +'go-m' options.txt /*'go-m'* +'go-p' options.txt /*'go-p'* +'go-r' options.txt /*'go-r'* +'go-t' options.txt /*'go-t'* +'go-v' options.txt /*'go-v'* +'gp' options.txt /*'gp'* +'gr' vi_diff.txt /*'gr'* +'graphic' vi_diff.txt /*'graphic'* +'grepformat' options.txt /*'grepformat'* +'grepprg' options.txt /*'grepprg'* +'gtl' options.txt /*'gtl'* +'gtt' options.txt /*'gtt'* +'guicursor' options.txt /*'guicursor'* +'guifont' options.txt /*'guifont'* +'guifontset' options.txt /*'guifontset'* +'guifontwide' options.txt /*'guifontwide'* +'guiheadroom' options.txt /*'guiheadroom'* +'guioptions' options.txt /*'guioptions'* +'guipty' options.txt /*'guipty'* +'guitablabel' options.txt /*'guitablabel'* +'guitabtooltip' options.txt /*'guitabtooltip'* +'hardtabs' vi_diff.txt /*'hardtabs'* +'helpfile' options.txt /*'helpfile'* +'helpheight' options.txt /*'helpheight'* +'helplang' options.txt /*'helplang'* +'hf' options.txt /*'hf'* +'hh' options.txt /*'hh'* +'hi' options.txt /*'hi'* +'hid' options.txt /*'hid'* +'hidden' options.txt /*'hidden'* +'highlight' options.txt /*'highlight'* +'history' options.txt /*'history'* +'hk' options.txt /*'hk'* +'hkmap' options.txt /*'hkmap'* +'hkmapp' options.txt /*'hkmapp'* +'hkp' options.txt /*'hkp'* +'hl' options.txt /*'hl'* +'hlg' options.txt /*'hlg'* +'hls' options.txt /*'hls'* +'hlsearch' options.txt /*'hlsearch'* +'ht' vi_diff.txt /*'ht'* +'ic' options.txt /*'ic'* +'icon' options.txt /*'icon'* +'iconstring' options.txt /*'iconstring'* +'ignorecase' options.txt /*'ignorecase'* +'im' options.txt /*'im'* +'imactivatefunc' options.txt /*'imactivatefunc'* +'imactivatekey' options.txt /*'imactivatekey'* +'imaf' options.txt /*'imaf'* +'imak' options.txt /*'imak'* +'imc' options.txt /*'imc'* +'imcmdline' options.txt /*'imcmdline'* +'imd' options.txt /*'imd'* +'imdisable' options.txt /*'imdisable'* +'imi' options.txt /*'imi'* +'iminsert' options.txt /*'iminsert'* +'ims' options.txt /*'ims'* +'imsearch' options.txt /*'imsearch'* +'imsf' options.txt /*'imsf'* +'imstatusfunc' options.txt /*'imstatusfunc'* +'inc' options.txt /*'inc'* +'include' options.txt /*'include'* +'includeexpr' options.txt /*'includeexpr'* +'incsearch' options.txt /*'incsearch'* +'inde' options.txt /*'inde'* +'indentexpr' options.txt /*'indentexpr'* +'indentkeys' options.txt /*'indentkeys'* +'indk' options.txt /*'indk'* +'inex' options.txt /*'inex'* +'inf' options.txt /*'inf'* +'infercase' options.txt /*'infercase'* +'insertmode' options.txt /*'insertmode'* +'is' options.txt /*'is'* +'isf' options.txt /*'isf'* +'isfname' options.txt /*'isfname'* +'isi' options.txt /*'isi'* +'isident' options.txt /*'isident'* +'isk' options.txt /*'isk'* +'iskeyword' options.txt /*'iskeyword'* +'isp' options.txt /*'isp'* +'isprint' options.txt /*'isprint'* +'joinspaces' options.txt /*'joinspaces'* +'js' options.txt /*'js'* +'key' options.txt /*'key'* +'keymap' options.txt /*'keymap'* +'keymodel' options.txt /*'keymodel'* +'keywordprg' options.txt /*'keywordprg'* +'km' options.txt /*'km'* +'kmp' options.txt /*'kmp'* +'kp' options.txt /*'kp'* +'langmap' options.txt /*'langmap'* +'langmenu' options.txt /*'langmenu'* +'laststatus' options.txt /*'laststatus'* +'lazyredraw' options.txt /*'lazyredraw'* +'lbr' options.txt /*'lbr'* +'lcs' options.txt /*'lcs'* +'linebreak' options.txt /*'linebreak'* +'lines' options.txt /*'lines'* +'linespace' options.txt /*'linespace'* +'lisp' options.txt /*'lisp'* +'lispwords' options.txt /*'lispwords'* +'list' options.txt /*'list'* +'listchars' options.txt /*'listchars'* +'lm' options.txt /*'lm'* +'lmap' options.txt /*'lmap'* +'loadplugins' options.txt /*'loadplugins'* +'lpl' options.txt /*'lpl'* +'ls' options.txt /*'ls'* +'lsp' options.txt /*'lsp'* +'lw' options.txt /*'lw'* +'lz' options.txt /*'lz'* +'ma' options.txt /*'ma'* +'macatsui' options.txt /*'macatsui'* +'magic' options.txt /*'magic'* +'makeef' options.txt /*'makeef'* +'makeprg' options.txt /*'makeprg'* +'mat' options.txt /*'mat'* +'matchpairs' options.txt /*'matchpairs'* +'matchtime' options.txt /*'matchtime'* +'maxcombine' options.txt /*'maxcombine'* +'maxfuncdepth' options.txt /*'maxfuncdepth'* +'maxmapdepth' options.txt /*'maxmapdepth'* +'maxmem' options.txt /*'maxmem'* +'maxmempattern' options.txt /*'maxmempattern'* +'maxmemtot' options.txt /*'maxmemtot'* +'mco' options.txt /*'mco'* +'mef' options.txt /*'mef'* +'menuitems' options.txt /*'menuitems'* +'mesg' vi_diff.txt /*'mesg'* +'mfd' options.txt /*'mfd'* +'mh' options.txt /*'mh'* +'mis' options.txt /*'mis'* +'mkspellmem' options.txt /*'mkspellmem'* +'ml' options.txt /*'ml'* +'mls' options.txt /*'mls'* +'mm' options.txt /*'mm'* +'mmd' options.txt /*'mmd'* +'mmp' options.txt /*'mmp'* +'mmt' options.txt /*'mmt'* +'mod' options.txt /*'mod'* +'modeline' options.txt /*'modeline'* +'modelines' options.txt /*'modelines'* +'modifiable' options.txt /*'modifiable'* +'modified' options.txt /*'modified'* +'more' options.txt /*'more'* +'mouse' options.txt /*'mouse'* +'mousef' options.txt /*'mousef'* +'mousefocus' options.txt /*'mousefocus'* +'mousehide' options.txt /*'mousehide'* +'mousem' options.txt /*'mousem'* +'mousemodel' options.txt /*'mousemodel'* +'mouses' options.txt /*'mouses'* +'mouseshape' options.txt /*'mouseshape'* +'mouset' options.txt /*'mouset'* +'mousetime' options.txt /*'mousetime'* +'mp' options.txt /*'mp'* +'mps' options.txt /*'mps'* +'msm' options.txt /*'msm'* +'mzq' options.txt /*'mzq'* +'mzquantum' options.txt /*'mzquantum'* +'nf' options.txt /*'nf'* +'noacd' options.txt /*'noacd'* +'noai' options.txt /*'noai'* +'noakm' options.txt /*'noakm'* +'noallowrevins' options.txt /*'noallowrevins'* +'noaltkeymap' options.txt /*'noaltkeymap'* +'noanti' options.txt /*'noanti'* +'noantialias' options.txt /*'noantialias'* +'noar' options.txt /*'noar'* +'noarab' options.txt /*'noarab'* +'noarabic' options.txt /*'noarabic'* +'noarabicshape' options.txt /*'noarabicshape'* +'noari' options.txt /*'noari'* +'noarshape' options.txt /*'noarshape'* +'noas' todo.txt /*'noas'* +'noautochdir' options.txt /*'noautochdir'* +'noautoindent' options.txt /*'noautoindent'* +'noautoread' options.txt /*'noautoread'* +'noautosave' todo.txt /*'noautosave'* +'noautowrite' options.txt /*'noautowrite'* +'noautowriteall' options.txt /*'noautowriteall'* +'noaw' options.txt /*'noaw'* +'noawa' options.txt /*'noawa'* +'nobackup' options.txt /*'nobackup'* +'noballooneval' options.txt /*'noballooneval'* +'nobeval' options.txt /*'nobeval'* +'nobin' options.txt /*'nobin'* +'nobinary' options.txt /*'nobinary'* +'nobiosk' options.txt /*'nobiosk'* +'nobioskey' options.txt /*'nobioskey'* +'nobk' options.txt /*'nobk'* +'nobl' options.txt /*'nobl'* +'nobomb' options.txt /*'nobomb'* +'nobuflisted' options.txt /*'nobuflisted'* +'nocf' options.txt /*'nocf'* +'noci' options.txt /*'noci'* +'nocin' options.txt /*'nocin'* +'nocindent' options.txt /*'nocindent'* +'nocompatible' options.txt /*'nocompatible'* +'noconfirm' options.txt /*'noconfirm'* +'noconsk' options.txt /*'noconsk'* +'noconskey' options.txt /*'noconskey'* +'nocopyindent' options.txt /*'nocopyindent'* +'nocp' options.txt /*'nocp'* +'nocrb' options.txt /*'nocrb'* +'nocscoperelative' options.txt /*'nocscoperelative'* +'nocscopetag' options.txt /*'nocscopetag'* +'nocscopeverbose' options.txt /*'nocscopeverbose'* +'nocsre' options.txt /*'nocsre'* +'nocst' options.txt /*'nocst'* +'nocsverb' options.txt /*'nocsverb'* +'nocuc' options.txt /*'nocuc'* +'nocul' options.txt /*'nocul'* +'nocursorbind' options.txt /*'nocursorbind'* +'nocursorcolumn' options.txt /*'nocursorcolumn'* +'nocursorline' options.txt /*'nocursorline'* +'nodeco' options.txt /*'nodeco'* +'nodelcombine' options.txt /*'nodelcombine'* +'nodg' options.txt /*'nodg'* +'nodiff' options.txt /*'nodiff'* +'nodigraph' options.txt /*'nodigraph'* +'noea' options.txt /*'noea'* +'noeb' options.txt /*'noeb'* +'noed' options.txt /*'noed'* +'noedcompatible' options.txt /*'noedcompatible'* +'noek' options.txt /*'noek'* +'noendofline' options.txt /*'noendofline'* +'noeol' options.txt /*'noeol'* +'noequalalways' options.txt /*'noequalalways'* +'noerrorbells' options.txt /*'noerrorbells'* +'noesckeys' options.txt /*'noesckeys'* +'noet' options.txt /*'noet'* +'noex' options.txt /*'noex'* +'noexpandtab' options.txt /*'noexpandtab'* +'noexrc' options.txt /*'noexrc'* +'nofen' options.txt /*'nofen'* +'nofic' options.txt /*'nofic'* +'nofileignorecase' options.txt /*'nofileignorecase'* +'nofk' options.txt /*'nofk'* +'nofkmap' options.txt /*'nofkmap'* +'nofoldenable' options.txt /*'nofoldenable'* +'nogd' options.txt /*'nogd'* +'nogdefault' options.txt /*'nogdefault'* +'noguipty' options.txt /*'noguipty'* +'nohid' options.txt /*'nohid'* +'nohidden' options.txt /*'nohidden'* +'nohk' options.txt /*'nohk'* +'nohkmap' options.txt /*'nohkmap'* +'nohkmapp' options.txt /*'nohkmapp'* +'nohkp' options.txt /*'nohkp'* +'nohls' options.txt /*'nohls'* +'nohlsearch' options.txt /*'nohlsearch'* +'noic' options.txt /*'noic'* +'noicon' options.txt /*'noicon'* +'noignorecase' options.txt /*'noignorecase'* +'noim' options.txt /*'noim'* +'noimc' options.txt /*'noimc'* +'noimcmdline' options.txt /*'noimcmdline'* +'noimd' options.txt /*'noimd'* +'noimdisable' options.txt /*'noimdisable'* +'noincsearch' options.txt /*'noincsearch'* +'noinf' options.txt /*'noinf'* +'noinfercase' options.txt /*'noinfercase'* +'noinsertmode' options.txt /*'noinsertmode'* +'nois' options.txt /*'nois'* +'nojoinspaces' options.txt /*'nojoinspaces'* +'nojs' options.txt /*'nojs'* +'nolazyredraw' options.txt /*'nolazyredraw'* +'nolbr' options.txt /*'nolbr'* +'nolinebreak' options.txt /*'nolinebreak'* +'nolisp' options.txt /*'nolisp'* +'nolist' options.txt /*'nolist'* +'noloadplugins' options.txt /*'noloadplugins'* +'nolpl' options.txt /*'nolpl'* +'nolz' options.txt /*'nolz'* +'noma' options.txt /*'noma'* +'nomacatsui' options.txt /*'nomacatsui'* +'nomagic' options.txt /*'nomagic'* +'nomh' options.txt /*'nomh'* +'noml' options.txt /*'noml'* +'nomod' options.txt /*'nomod'* +'nomodeline' options.txt /*'nomodeline'* +'nomodifiable' options.txt /*'nomodifiable'* +'nomodified' options.txt /*'nomodified'* +'nomore' options.txt /*'nomore'* +'nomousef' options.txt /*'nomousef'* +'nomousefocus' options.txt /*'nomousefocus'* +'nomousehide' options.txt /*'nomousehide'* +'nonu' options.txt /*'nonu'* +'nonumber' options.txt /*'nonumber'* +'noodev' options.txt /*'noodev'* +'noopendevice' options.txt /*'noopendevice'* +'nopaste' options.txt /*'nopaste'* +'nopi' options.txt /*'nopi'* +'nopreserveindent' options.txt /*'nopreserveindent'* +'nopreviewwindow' options.txt /*'nopreviewwindow'* +'noprompt' options.txt /*'noprompt'* +'nopvw' options.txt /*'nopvw'* +'noreadonly' options.txt /*'noreadonly'* +'norelativenumber' options.txt /*'norelativenumber'* +'noremap' options.txt /*'noremap'* +'norestorescreen' options.txt /*'norestorescreen'* +'norevins' options.txt /*'norevins'* +'nori' options.txt /*'nori'* +'norightleft' options.txt /*'norightleft'* +'norl' options.txt /*'norl'* +'nornu' options.txt /*'nornu'* +'noro' options.txt /*'noro'* +'nors' options.txt /*'nors'* +'noru' options.txt /*'noru'* +'noruler' options.txt /*'noruler'* +'nosb' options.txt /*'nosb'* +'nosc' options.txt /*'nosc'* +'noscb' options.txt /*'noscb'* +'noscrollbind' options.txt /*'noscrollbind'* +'noscs' options.txt /*'noscs'* +'nosecure' options.txt /*'nosecure'* +'nosft' options.txt /*'nosft'* +'noshellslash' options.txt /*'noshellslash'* +'noshelltemp' options.txt /*'noshelltemp'* +'noshiftround' options.txt /*'noshiftround'* +'noshortname' options.txt /*'noshortname'* +'noshowcmd' options.txt /*'noshowcmd'* +'noshowfulltag' options.txt /*'noshowfulltag'* +'noshowmatch' options.txt /*'noshowmatch'* +'noshowmode' options.txt /*'noshowmode'* +'nosi' options.txt /*'nosi'* +'nosm' options.txt /*'nosm'* +'nosmartcase' options.txt /*'nosmartcase'* +'nosmartindent' options.txt /*'nosmartindent'* +'nosmarttab' options.txt /*'nosmarttab'* +'nosmd' options.txt /*'nosmd'* +'nosn' options.txt /*'nosn'* +'nosol' options.txt /*'nosol'* +'nospell' options.txt /*'nospell'* +'nosplitbelow' options.txt /*'nosplitbelow'* +'nosplitright' options.txt /*'nosplitright'* +'nospr' options.txt /*'nospr'* +'nosr' options.txt /*'nosr'* +'nossl' options.txt /*'nossl'* +'nosta' options.txt /*'nosta'* +'nostartofline' options.txt /*'nostartofline'* +'nostmp' options.txt /*'nostmp'* +'noswapfile' options.txt /*'noswapfile'* +'noswf' options.txt /*'noswf'* +'nota' options.txt /*'nota'* +'notagbsearch' options.txt /*'notagbsearch'* +'notagrelative' options.txt /*'notagrelative'* +'notagstack' options.txt /*'notagstack'* +'notbi' options.txt /*'notbi'* +'notbidi' options.txt /*'notbidi'* +'notbs' options.txt /*'notbs'* +'notermbidi' options.txt /*'notermbidi'* +'noterse' options.txt /*'noterse'* +'notextauto' options.txt /*'notextauto'* +'notextmode' options.txt /*'notextmode'* +'notf' options.txt /*'notf'* +'notgst' options.txt /*'notgst'* +'notildeop' options.txt /*'notildeop'* +'notimeout' options.txt /*'notimeout'* +'notitle' options.txt /*'notitle'* +'noto' options.txt /*'noto'* +'notop' options.txt /*'notop'* +'notr' options.txt /*'notr'* +'nottimeout' options.txt /*'nottimeout'* +'nottybuiltin' options.txt /*'nottybuiltin'* +'nottyfast' options.txt /*'nottyfast'* +'notx' options.txt /*'notx'* +'noudf' options.txt /*'noudf'* +'noundofile' options.txt /*'noundofile'* +'novb' options.txt /*'novb'* +'novice' vi_diff.txt /*'novice'* +'novisualbell' options.txt /*'novisualbell'* +'nowa' options.txt /*'nowa'* +'nowarn' options.txt /*'nowarn'* +'nowb' options.txt /*'nowb'* +'noweirdinvert' options.txt /*'noweirdinvert'* +'nowfh' options.txt /*'nowfh'* +'nowfw' options.txt /*'nowfw'* +'nowic' options.txt /*'nowic'* +'nowildignorecase' options.txt /*'nowildignorecase'* +'nowildmenu' options.txt /*'nowildmenu'* +'nowinfixheight' options.txt /*'nowinfixheight'* +'nowinfixwidth' options.txt /*'nowinfixwidth'* +'nowiv' options.txt /*'nowiv'* +'nowmnu' options.txt /*'nowmnu'* +'nowrap' options.txt /*'nowrap'* +'nowrapscan' options.txt /*'nowrapscan'* +'nowrite' options.txt /*'nowrite'* +'nowriteany' options.txt /*'nowriteany'* +'nowritebackup' options.txt /*'nowritebackup'* +'nows' options.txt /*'nows'* +'nrformats' options.txt /*'nrformats'* +'nu' options.txt /*'nu'* +'number' options.txt /*'number'* +'numberwidth' options.txt /*'numberwidth'* +'nuw' options.txt /*'nuw'* +'odev' options.txt /*'odev'* +'oft' options.txt /*'oft'* +'ofu' options.txt /*'ofu'* +'omnifunc' options.txt /*'omnifunc'* +'op' vi_diff.txt /*'op'* +'open' vi_diff.txt /*'open'* +'opendevice' options.txt /*'opendevice'* +'operatorfunc' options.txt /*'operatorfunc'* +'opfunc' options.txt /*'opfunc'* +'optimize' vi_diff.txt /*'optimize'* +'option' intro.txt /*'option'* +'osfiletype' options.txt /*'osfiletype'* +'pa' options.txt /*'pa'* +'para' options.txt /*'para'* +'paragraphs' options.txt /*'paragraphs'* +'paste' options.txt /*'paste'* +'pastetoggle' options.txt /*'pastetoggle'* +'patchexpr' options.txt /*'patchexpr'* +'patchmode' options.txt /*'patchmode'* +'path' options.txt /*'path'* +'pdev' options.txt /*'pdev'* +'penc' options.txt /*'penc'* +'pex' options.txt /*'pex'* +'pexpr' options.txt /*'pexpr'* +'pfn' options.txt /*'pfn'* +'ph' options.txt /*'ph'* +'pheader' options.txt /*'pheader'* +'pi' options.txt /*'pi'* +'pm' options.txt /*'pm'* +'pmbcs' options.txt /*'pmbcs'* +'pmbfn' options.txt /*'pmbfn'* +'popt' options.txt /*'popt'* +'preserveindent' options.txt /*'preserveindent'* +'previewheight' options.txt /*'previewheight'* +'previewwindow' options.txt /*'previewwindow'* +'printdevice' options.txt /*'printdevice'* +'printencoding' options.txt /*'printencoding'* +'printexpr' options.txt /*'printexpr'* +'printfont' options.txt /*'printfont'* +'printheader' options.txt /*'printheader'* +'printmbcharset' options.txt /*'printmbcharset'* +'printmbfont' options.txt /*'printmbfont'* +'printoptions' options.txt /*'printoptions'* +'prompt' options.txt /*'prompt'* +'pt' options.txt /*'pt'* +'pumheight' options.txt /*'pumheight'* +'pvh' options.txt /*'pvh'* +'pvw' options.txt /*'pvw'* +'qe' options.txt /*'qe'* +'quote motion.txt /*'quote* +'quoteescape' options.txt /*'quoteescape'* +'rdt' options.txt /*'rdt'* +'re' options.txt /*'re'* +'readonly' options.txt /*'readonly'* +'redraw' vi_diff.txt /*'redraw'* +'redrawtime' options.txt /*'redrawtime'* +'regexpengine' options.txt /*'regexpengine'* +'relativenumber' options.txt /*'relativenumber'* +'remap' options.txt /*'remap'* +'report' options.txt /*'report'* +'restorescreen' options.txt /*'restorescreen'* +'revins' options.txt /*'revins'* +'ri' options.txt /*'ri'* +'rightleft' options.txt /*'rightleft'* +'rightleftcmd' options.txt /*'rightleftcmd'* +'rl' options.txt /*'rl'* +'rlc' options.txt /*'rlc'* +'rnu' options.txt /*'rnu'* +'ro' options.txt /*'ro'* +'rs' options.txt /*'rs'* +'rtp' options.txt /*'rtp'* +'ru' options.txt /*'ru'* +'ruf' options.txt /*'ruf'* +'ruler' options.txt /*'ruler'* +'rulerformat' options.txt /*'rulerformat'* +'runtimepath' options.txt /*'runtimepath'* +'sb' options.txt /*'sb'* +'sbo' options.txt /*'sbo'* +'sbr' options.txt /*'sbr'* +'sc' options.txt /*'sc'* +'scb' options.txt /*'scb'* +'scr' options.txt /*'scr'* +'scroll' options.txt /*'scroll'* +'scrollbind' options.txt /*'scrollbind'* +'scrolljump' options.txt /*'scrolljump'* +'scrolloff' options.txt /*'scrolloff'* +'scrollopt' options.txt /*'scrollopt'* +'scs' options.txt /*'scs'* +'sect' options.txt /*'sect'* +'sections' options.txt /*'sections'* +'secure' options.txt /*'secure'* +'sel' options.txt /*'sel'* +'selection' options.txt /*'selection'* +'selectmode' options.txt /*'selectmode'* +'sessionoptions' options.txt /*'sessionoptions'* +'sft' options.txt /*'sft'* +'sh' options.txt /*'sh'* +'shcf' options.txt /*'shcf'* +'shell' options.txt /*'shell'* +'shellcmdflag' options.txt /*'shellcmdflag'* +'shellpipe' options.txt /*'shellpipe'* +'shellquote' options.txt /*'shellquote'* +'shellredir' options.txt /*'shellredir'* +'shellslash' options.txt /*'shellslash'* +'shelltemp' options.txt /*'shelltemp'* +'shelltype' options.txt /*'shelltype'* +'shellxescape' options.txt /*'shellxescape'* +'shellxquote' options.txt /*'shellxquote'* +'shiftround' options.txt /*'shiftround'* +'shiftwidth' options.txt /*'shiftwidth'* +'shm' options.txt /*'shm'* +'shortmess' options.txt /*'shortmess'* +'shortname' options.txt /*'shortname'* +'showbreak' options.txt /*'showbreak'* +'showcmd' options.txt /*'showcmd'* +'showfulltag' options.txt /*'showfulltag'* +'showmatch' options.txt /*'showmatch'* +'showmode' options.txt /*'showmode'* +'showtabline' options.txt /*'showtabline'* +'shq' options.txt /*'shq'* +'si' options.txt /*'si'* +'sidescroll' options.txt /*'sidescroll'* +'sidescrolloff' options.txt /*'sidescrolloff'* +'siso' options.txt /*'siso'* +'sj' options.txt /*'sj'* +'slm' options.txt /*'slm'* +'slow' vi_diff.txt /*'slow'* +'slowopen' vi_diff.txt /*'slowopen'* +'sm' options.txt /*'sm'* +'smartcase' options.txt /*'smartcase'* +'smartindent' options.txt /*'smartindent'* +'smarttab' options.txt /*'smarttab'* +'smc' options.txt /*'smc'* +'smd' options.txt /*'smd'* +'sn' options.txt /*'sn'* +'so' options.txt /*'so'* +'softtabstop' options.txt /*'softtabstop'* +'sol' options.txt /*'sol'* +'sourceany' vi_diff.txt /*'sourceany'* +'sp' options.txt /*'sp'* +'spc' options.txt /*'spc'* +'spell' options.txt /*'spell'* +'spellcapcheck' options.txt /*'spellcapcheck'* +'spellfile' options.txt /*'spellfile'* +'spelllang' options.txt /*'spelllang'* +'spellsuggest' options.txt /*'spellsuggest'* +'spf' options.txt /*'spf'* +'spl' options.txt /*'spl'* +'splitbelow' options.txt /*'splitbelow'* +'splitright' options.txt /*'splitright'* +'spr' options.txt /*'spr'* +'sps' options.txt /*'sps'* +'sr' options.txt /*'sr'* +'srr' options.txt /*'srr'* +'ss' options.txt /*'ss'* +'ssl' options.txt /*'ssl'* +'ssop' options.txt /*'ssop'* +'st' options.txt /*'st'* +'sta' options.txt /*'sta'* +'stal' options.txt /*'stal'* +'startofline' options.txt /*'startofline'* +'statusline' options.txt /*'statusline'* +'stl' options.txt /*'stl'* +'stmp' options.txt /*'stmp'* +'sts' options.txt /*'sts'* +'su' options.txt /*'su'* +'sua' options.txt /*'sua'* +'suffixes' options.txt /*'suffixes'* +'suffixesadd' options.txt /*'suffixesadd'* +'sw' options.txt /*'sw'* +'swapfile' options.txt /*'swapfile'* +'swapsync' options.txt /*'swapsync'* +'swb' options.txt /*'swb'* +'swf' options.txt /*'swf'* +'switchbuf' options.txt /*'switchbuf'* +'sws' options.txt /*'sws'* +'sxe' options.txt /*'sxe'* +'sxq' options.txt /*'sxq'* +'syn' options.txt /*'syn'* +'synmaxcol' options.txt /*'synmaxcol'* +'syntax' options.txt /*'syntax'* +'t_#2' term.txt /*'t_#2'* +'t_#4' term.txt /*'t_#4'* +'t_%1' term.txt /*'t_%1'* +'t_%i' term.txt /*'t_%i'* +'t_&8' term.txt /*'t_&8'* +'t_@7' term.txt /*'t_@7'* +'t_AB' term.txt /*'t_AB'* +'t_AF' term.txt /*'t_AF'* +'t_AL' term.txt /*'t_AL'* +'t_CS' term.txt /*'t_CS'* +'t_CV' term.txt /*'t_CV'* +'t_Ce' term.txt /*'t_Ce'* +'t_Co' term.txt /*'t_Co'* +'t_Cs' term.txt /*'t_Cs'* +'t_DL' term.txt /*'t_DL'* +'t_EI' term.txt /*'t_EI'* +'t_F1' term.txt /*'t_F1'* +'t_F2' term.txt /*'t_F2'* +'t_F3' term.txt /*'t_F3'* +'t_F4' term.txt /*'t_F4'* +'t_F5' term.txt /*'t_F5'* +'t_F6' term.txt /*'t_F6'* +'t_F7' term.txt /*'t_F7'* +'t_F8' term.txt /*'t_F8'* +'t_F9' term.txt /*'t_F9'* +'t_IE' term.txt /*'t_IE'* +'t_IS' term.txt /*'t_IS'* +'t_K1' term.txt /*'t_K1'* +'t_K3' term.txt /*'t_K3'* +'t_K4' term.txt /*'t_K4'* +'t_K5' term.txt /*'t_K5'* +'t_K6' term.txt /*'t_K6'* +'t_K7' term.txt /*'t_K7'* +'t_K8' term.txt /*'t_K8'* +'t_K9' term.txt /*'t_K9'* +'t_KA' term.txt /*'t_KA'* +'t_KB' term.txt /*'t_KB'* +'t_KC' term.txt /*'t_KC'* +'t_KD' term.txt /*'t_KD'* +'t_KE' term.txt /*'t_KE'* +'t_KF' term.txt /*'t_KF'* +'t_KG' term.txt /*'t_KG'* +'t_KH' term.txt /*'t_KH'* +'t_KI' term.txt /*'t_KI'* +'t_KJ' term.txt /*'t_KJ'* +'t_KK' term.txt /*'t_KK'* +'t_KL' term.txt /*'t_KL'* +'t_RI' term.txt /*'t_RI'* +'t_RV' term.txt /*'t_RV'* +'t_SI' term.txt /*'t_SI'* +'t_Sb' term.txt /*'t_Sb'* +'t_Sf' term.txt /*'t_Sf'* +'t_WP' term.txt /*'t_WP'* +'t_WS' term.txt /*'t_WS'* +'t_ZH' term.txt /*'t_ZH'* +'t_ZR' term.txt /*'t_ZR'* +'t_al' term.txt /*'t_al'* +'t_bc' term.txt /*'t_bc'* +'t_cd' term.txt /*'t_cd'* +'t_ce' term.txt /*'t_ce'* +'t_cl' term.txt /*'t_cl'* +'t_cm' term.txt /*'t_cm'* +'t_cs' term.txt /*'t_cs'* +'t_da' term.txt /*'t_da'* +'t_db' term.txt /*'t_db'* +'t_dl' term.txt /*'t_dl'* +'t_fs' term.txt /*'t_fs'* +'t_k1' term.txt /*'t_k1'* +'t_k2' term.txt /*'t_k2'* +'t_k3' term.txt /*'t_k3'* +'t_k4' term.txt /*'t_k4'* +'t_k5' term.txt /*'t_k5'* +'t_k6' term.txt /*'t_k6'* +'t_k7' term.txt /*'t_k7'* +'t_k8' term.txt /*'t_k8'* +'t_k9' term.txt /*'t_k9'* +'t_k;' term.txt /*'t_k;'* +'t_kB' term.txt /*'t_kB'* +'t_kD' term.txt /*'t_kD'* +'t_kI' term.txt /*'t_kI'* +'t_kN' term.txt /*'t_kN'* +'t_kP' term.txt /*'t_kP'* +'t_kb' term.txt /*'t_kb'* +'t_kd' term.txt /*'t_kd'* +'t_ke' term.txt /*'t_ke'* +'t_kh' term.txt /*'t_kh'* +'t_kl' term.txt /*'t_kl'* +'t_kr' term.txt /*'t_kr'* +'t_ks' term.txt /*'t_ks'* +'t_ku' term.txt /*'t_ku'* +'t_le' term.txt /*'t_le'* +'t_mb' term.txt /*'t_mb'* +'t_md' term.txt /*'t_md'* +'t_me' term.txt /*'t_me'* +'t_mr' term.txt /*'t_mr'* +'t_ms' term.txt /*'t_ms'* +'t_nd' term.txt /*'t_nd'* +'t_op' term.txt /*'t_op'* +'t_se' term.txt /*'t_se'* +'t_so' term.txt /*'t_so'* +'t_sr' term.txt /*'t_sr'* +'t_star7' term.txt /*'t_star7'* +'t_te' term.txt /*'t_te'* +'t_ti' term.txt /*'t_ti'* +'t_ts' term.txt /*'t_ts'* +'t_u7' term.txt /*'t_u7'* +'t_ue' term.txt /*'t_ue'* +'t_us' term.txt /*'t_us'* +'t_ut' term.txt /*'t_ut'* +'t_vb' term.txt /*'t_vb'* +'t_ve' term.txt /*'t_ve'* +'t_vi' term.txt /*'t_vi'* +'t_vs' term.txt /*'t_vs'* +'t_xs' term.txt /*'t_xs'* +'ta' options.txt /*'ta'* +'tabline' options.txt /*'tabline'* +'tabpagemax' options.txt /*'tabpagemax'* +'tabstop' options.txt /*'tabstop'* +'tag' options.txt /*'tag'* +'tagbsearch' options.txt /*'tagbsearch'* +'taglength' options.txt /*'taglength'* +'tagrelative' options.txt /*'tagrelative'* +'tags' options.txt /*'tags'* +'tagstack' options.txt /*'tagstack'* +'tal' options.txt /*'tal'* +'tb' options.txt /*'tb'* +'tbi' options.txt /*'tbi'* +'tbidi' options.txt /*'tbidi'* +'tbis' options.txt /*'tbis'* +'tbs' options.txt /*'tbs'* +'tenc' options.txt /*'tenc'* +'term' options.txt /*'term'* +'termbidi' options.txt /*'termbidi'* +'termencoding' options.txt /*'termencoding'* +'terse' options.txt /*'terse'* +'textauto' options.txt /*'textauto'* +'textmode' options.txt /*'textmode'* +'textwidth' options.txt /*'textwidth'* +'tf' options.txt /*'tf'* +'tgst' options.txt /*'tgst'* +'thesaurus' options.txt /*'thesaurus'* +'tildeop' options.txt /*'tildeop'* +'timeout' options.txt /*'timeout'* +'timeoutlen' options.txt /*'timeoutlen'* +'title' options.txt /*'title'* +'titlelen' options.txt /*'titlelen'* +'titleold' options.txt /*'titleold'* +'titlestring' options.txt /*'titlestring'* +'tl' options.txt /*'tl'* +'tm' options.txt /*'tm'* +'to' options.txt /*'to'* +'toolbar' options.txt /*'toolbar'* +'toolbariconsize' options.txt /*'toolbariconsize'* +'top' options.txt /*'top'* +'tpm' options.txt /*'tpm'* +'tr' options.txt /*'tr'* +'ts' options.txt /*'ts'* +'tsl' options.txt /*'tsl'* +'tsr' options.txt /*'tsr'* +'ttimeout' options.txt /*'ttimeout'* +'ttimeoutlen' options.txt /*'ttimeoutlen'* +'ttm' options.txt /*'ttm'* +'tty' options.txt /*'tty'* +'ttybuiltin' options.txt /*'ttybuiltin'* +'ttyfast' options.txt /*'ttyfast'* +'ttym' options.txt /*'ttym'* +'ttymouse' options.txt /*'ttymouse'* +'ttyscroll' options.txt /*'ttyscroll'* +'ttytype' options.txt /*'ttytype'* +'tw' options.txt /*'tw'* +'tx' options.txt /*'tx'* +'uc' options.txt /*'uc'* +'udf' options.txt /*'udf'* +'udir' options.txt /*'udir'* +'ul' options.txt /*'ul'* +'undodir' options.txt /*'undodir'* +'undofile' options.txt /*'undofile'* +'undolevels' options.txt /*'undolevels'* +'undoreload' options.txt /*'undoreload'* +'updatecount' options.txt /*'updatecount'* +'updatetime' options.txt /*'updatetime'* +'ur' options.txt /*'ur'* +'ut' options.txt /*'ut'* +'vb' options.txt /*'vb'* +'vbs' options.txt /*'vbs'* +'vdir' options.txt /*'vdir'* +'ve' options.txt /*'ve'* +'verbose' options.txt /*'verbose'* +'verbosefile' options.txt /*'verbosefile'* +'vfile' options.txt /*'vfile'* +'vi' options.txt /*'vi'* +'viewdir' options.txt /*'viewdir'* +'viewoptions' options.txt /*'viewoptions'* +'viminfo' options.txt /*'viminfo'* +'virtualedit' options.txt /*'virtualedit'* +'visualbell' options.txt /*'visualbell'* +'vop' options.txt /*'vop'* +'w1200' vi_diff.txt /*'w1200'* +'w300' vi_diff.txt /*'w300'* +'w9600' vi_diff.txt /*'w9600'* +'wa' options.txt /*'wa'* +'wak' options.txt /*'wak'* +'warn' options.txt /*'warn'* +'wb' options.txt /*'wb'* +'wc' options.txt /*'wc'* +'wcm' options.txt /*'wcm'* +'wd' options.txt /*'wd'* +'weirdinvert' options.txt /*'weirdinvert'* +'wfh' options.txt /*'wfh'* +'wfw' options.txt /*'wfw'* +'wh' options.txt /*'wh'* +'whichwrap' options.txt /*'whichwrap'* +'wi' options.txt /*'wi'* +'wic' options.txt /*'wic'* +'wig' options.txt /*'wig'* +'wildchar' options.txt /*'wildchar'* +'wildcharm' options.txt /*'wildcharm'* +'wildignore' options.txt /*'wildignore'* +'wildignorecase' options.txt /*'wildignorecase'* +'wildmenu' options.txt /*'wildmenu'* +'wildmode' options.txt /*'wildmode'* +'wildoptions' options.txt /*'wildoptions'* +'wim' options.txt /*'wim'* +'winaltkeys' options.txt /*'winaltkeys'* +'window' options.txt /*'window'* +'winfixheight' options.txt /*'winfixheight'* +'winfixwidth' options.txt /*'winfixwidth'* +'winheight' options.txt /*'winheight'* +'winminheight' options.txt /*'winminheight'* +'winminwidth' options.txt /*'winminwidth'* +'winwidth' options.txt /*'winwidth'* +'wiv' options.txt /*'wiv'* +'wiw' options.txt /*'wiw'* +'wm' options.txt /*'wm'* +'wmh' options.txt /*'wmh'* +'wmnu' options.txt /*'wmnu'* +'wmw' options.txt /*'wmw'* +'wop' options.txt /*'wop'* +'wrap' options.txt /*'wrap'* +'wrapmargin' options.txt /*'wrapmargin'* +'wrapscan' options.txt /*'wrapscan'* +'write' options.txt /*'write'* +'writeany' options.txt /*'writeany'* +'writebackup' options.txt /*'writebackup'* +'writedelay' options.txt /*'writedelay'* +'ws' options.txt /*'ws'* +'ww' options.txt /*'ww'* +'{ motion.txt /*'{* +'} motion.txt /*'}* +( motion.txt /*(* +) motion.txt /*)* ++ motion.txt /*+* +++bad editing.txt /*++bad* +++bin editing.txt /*++bin* +++builtin_terms various.txt /*++builtin_terms* +++edit editing.txt /*++edit* +++enc editing.txt /*++enc* +++ff editing.txt /*++ff* +++nobin editing.txt /*++nobin* +++opt editing.txt /*++opt* ++ARP various.txt /*+ARP* ++GUI_Athena various.txt /*+GUI_Athena* ++GUI_GTK various.txt /*+GUI_GTK* ++GUI_Motif various.txt /*+GUI_Motif* ++GUI_Photon various.txt /*+GUI_Photon* ++GUI_neXtaw various.txt /*+GUI_neXtaw* ++X11 various.txt /*+X11* ++arabic various.txt /*+arabic* ++autocmd various.txt /*+autocmd* ++balloon_eval various.txt /*+balloon_eval* ++browse various.txt /*+browse* ++builtin_terms various.txt /*+builtin_terms* ++byte_offset various.txt /*+byte_offset* ++cindent various.txt /*+cindent* ++clientserver various.txt /*+clientserver* ++clipboard various.txt /*+clipboard* ++cmd editing.txt /*+cmd* ++cmdline_compl various.txt /*+cmdline_compl* ++cmdline_hist various.txt /*+cmdline_hist* ++cmdline_info various.txt /*+cmdline_info* ++comments various.txt /*+comments* ++conceal various.txt /*+conceal* ++cryptv various.txt /*+cryptv* ++cscope various.txt /*+cscope* ++cursorbind various.txt /*+cursorbind* ++cursorshape various.txt /*+cursorshape* ++debug various.txt /*+debug* ++dialog_con various.txt /*+dialog_con* ++dialog_con_gui various.txt /*+dialog_con_gui* ++dialog_gui various.txt /*+dialog_gui* ++diff various.txt /*+diff* ++digraphs various.txt /*+digraphs* ++dnd various.txt /*+dnd* ++emacs_tags various.txt /*+emacs_tags* ++eval various.txt /*+eval* ++ex_extra various.txt /*+ex_extra* ++extra_search various.txt /*+extra_search* ++farsi various.txt /*+farsi* ++feature-list various.txt /*+feature-list* ++file_in_path various.txt /*+file_in_path* ++find_in_path various.txt /*+find_in_path* ++float various.txt /*+float* ++folding various.txt /*+folding* ++footer various.txt /*+footer* ++fork various.txt /*+fork* ++gettext various.txt /*+gettext* ++hangul_input various.txt /*+hangul_input* ++iconv various.txt /*+iconv* ++iconv/dyn various.txt /*+iconv\/dyn* ++insert_expand various.txt /*+insert_expand* ++jumplist various.txt /*+jumplist* ++keymap various.txt /*+keymap* ++langmap various.txt /*+langmap* ++libcall various.txt /*+libcall* ++linebreak various.txt /*+linebreak* ++lispindent various.txt /*+lispindent* ++listcmds various.txt /*+listcmds* ++localmap various.txt /*+localmap* ++lua various.txt /*+lua* ++lua/dyn various.txt /*+lua\/dyn* ++menu various.txt /*+menu* ++mksession various.txt /*+mksession* ++modify_fname various.txt /*+modify_fname* ++mouse various.txt /*+mouse* ++mouse_dec various.txt /*+mouse_dec* ++mouse_gpm various.txt /*+mouse_gpm* ++mouse_netterm various.txt /*+mouse_netterm* ++mouse_pterm various.txt /*+mouse_pterm* ++mouse_sgr various.txt /*+mouse_sgr* ++mouse_sysmouse various.txt /*+mouse_sysmouse* ++mouse_urxvt various.txt /*+mouse_urxvt* ++mouse_xterm various.txt /*+mouse_xterm* ++mouseshape various.txt /*+mouseshape* ++multi_byte various.txt /*+multi_byte* ++multi_byte_ime various.txt /*+multi_byte_ime* ++multi_lang various.txt /*+multi_lang* ++mzscheme various.txt /*+mzscheme* ++mzscheme/dyn various.txt /*+mzscheme\/dyn* ++netbeans_intg various.txt /*+netbeans_intg* ++ole various.txt /*+ole* ++path_extra various.txt /*+path_extra* ++perl various.txt /*+perl* ++perl/dyn various.txt /*+perl\/dyn* ++persistent_undo various.txt /*+persistent_undo* ++postscript various.txt /*+postscript* ++printer various.txt /*+printer* ++profile various.txt /*+profile* ++python various.txt /*+python* ++python/dyn various.txt /*+python\/dyn* ++python3 various.txt /*+python3* ++python3/dyn various.txt /*+python3\/dyn* ++quickfix various.txt /*+quickfix* ++reltime various.txt /*+reltime* ++rightleft various.txt /*+rightleft* ++ruby various.txt /*+ruby* ++ruby/dyn various.txt /*+ruby\/dyn* ++scrollbind various.txt /*+scrollbind* ++signs various.txt /*+signs* ++smartindent various.txt /*+smartindent* ++sniff various.txt /*+sniff* ++startuptime various.txt /*+startuptime* ++statusline various.txt /*+statusline* ++sun_workshop various.txt /*+sun_workshop* ++syntax various.txt /*+syntax* ++system() various.txt /*+system()* ++tag_any_white various.txt /*+tag_any_white* ++tag_binary various.txt /*+tag_binary* ++tag_old_static various.txt /*+tag_old_static* ++tcl various.txt /*+tcl* ++tcl/dyn various.txt /*+tcl\/dyn* ++terminfo various.txt /*+terminfo* ++termresponse various.txt /*+termresponse* ++textobjects various.txt /*+textobjects* ++tgetent various.txt /*+tgetent* ++title various.txt /*+title* ++toolbar various.txt /*+toolbar* ++user_commands various.txt /*+user_commands* ++vertsplit various.txt /*+vertsplit* ++viminfo various.txt /*+viminfo* ++virtualedit various.txt /*+virtualedit* ++visual various.txt /*+visual* ++visualextra various.txt /*+visualextra* ++vreplace various.txt /*+vreplace* ++wildignore various.txt /*+wildignore* ++wildmenu various.txt /*+wildmenu* ++windows various.txt /*+windows* ++writebackup various.txt /*+writebackup* ++xfontset various.txt /*+xfontset* ++xim various.txt /*+xim* ++xpm_w32 various.txt /*+xpm_w32* ++xsmp various.txt /*+xsmp* ++xsmp_interact various.txt /*+xsmp_interact* ++xterm_clipboard various.txt /*+xterm_clipboard* ++xterm_save various.txt /*+xterm_save* +, motion.txt /*,* +- motion.txt /*-* +-+ starting.txt /*-+* +-+/ starting.txt /*-+\/* +-+c starting.txt /*-+c* +-+reverse gui_x11.txt /*-+reverse* +-+rv gui_x11.txt /*-+rv* +-- starting.txt /*--* +--- starting.txt /*---* +--cmd starting.txt /*--cmd* +--echo-wid starting.txt /*--echo-wid* +--help starting.txt /*--help* +--literal starting.txt /*--literal* +--nofork starting.txt /*--nofork* +--noplugin starting.txt /*--noplugin* +--remote remote.txt /*--remote* +--remote-expr remote.txt /*--remote-expr* +--remote-send remote.txt /*--remote-send* +--remote-silent remote.txt /*--remote-silent* +--remote-tab remote.txt /*--remote-tab* +--remote-tab-silent remote.txt /*--remote-tab-silent* +--remote-tab-wait remote.txt /*--remote-tab-wait* +--remote-tab-wait-silent remote.txt /*--remote-tab-wait-silent* +--remote-wait remote.txt /*--remote-wait* +--remote-wait-silent remote.txt /*--remote-wait-silent* +--role starting.txt /*--role* +--serverlist remote.txt /*--serverlist* +--servername remote.txt /*--servername* +--socketid starting.txt /*--socketid* +--startuptime starting.txt /*--startuptime* +--version starting.txt /*--version* +--windowid starting.txt /*--windowid* +-A starting.txt /*-A* +-C starting.txt /*-C* +-D starting.txt /*-D* +-E starting.txt /*-E* +-F starting.txt /*-F* +-H starting.txt /*-H* +-L starting.txt /*-L* +-M starting.txt /*-M* +-N starting.txt /*-N* +-O starting.txt /*-O* +-P starting.txt /*-P* +-R starting.txt /*-R* +-S starting.txt /*-S* +-T starting.txt /*-T* +-U starting.txt /*-U* +-V starting.txt /*-V* +-W starting.txt /*-W* +-X starting.txt /*-X* +-Z starting.txt /*-Z* +-b starting.txt /*-b* +-background gui_x11.txt /*-background* +-bg gui_x11.txt /*-bg* +-boldfont gui_x11.txt /*-boldfont* +-borderwidth gui_x11.txt /*-borderwidth* +-bw gui_x11.txt /*-bw* +-c starting.txt /*-c* +-d starting.txt /*-d* +-dev starting.txt /*-dev* +-display gui_x11.txt /*-display* +-e starting.txt /*-e* +-f starting.txt /*-f* +-fg gui_x11.txt /*-fg* +-file starting.txt /*-file* +-fn gui_x11.txt /*-fn* +-font gui_x11.txt /*-font* +-foreground gui_x11.txt /*-foreground* +-g starting.txt /*-g* +-geom gui_x11.txt /*-geom* +-geometry gui_x11.txt /*-geometry* +-geometry-example gui_x11.txt /*-geometry-example* +-gui gui_x11.txt /*-gui* +-h starting.txt /*-h* +-i starting.txt /*-i* +-iconic gui_x11.txt /*-iconic* +-italicfont gui_x11.txt /*-italicfont* +-l starting.txt /*-l* +-m starting.txt /*-m* +-menufont gui_x11.txt /*-menufont* +-menufontset gui_x11.txt /*-menufontset* +-menuheight gui_x11.txt /*-menuheight* +-mf gui_x11.txt /*-mf* +-mh gui_x11.txt /*-mh* +-n starting.txt /*-n* +-nb starting.txt /*-nb* +-o starting.txt /*-o* +-p starting.txt /*-p* +-q starting.txt /*-q* +-qf starting.txt /*-qf* +-r starting.txt /*-r* +-register if_ole.txt /*-register* +-reverse gui_x11.txt /*-reverse* +-rv gui_x11.txt /*-rv* +-s starting.txt /*-s* +-s-ex starting.txt /*-s-ex* +-scrollbarwidth gui_x11.txt /*-scrollbarwidth* +-silent if_ole.txt /*-silent* +-sw gui_x11.txt /*-sw* +-t starting.txt /*-t* +-tag starting.txt /*-tag* +-u starting.txt /*-u* +-ul gui_x11.txt /*-ul* +-unregister if_ole.txt /*-unregister* +-v starting.txt /*-v* +-vim starting.txt /*-vim* +-w starting.txt /*-w* +-w_nr starting.txt /*-w_nr* +-x starting.txt /*-x* +-xrm gui_x11.txt /*-xrm* +-y starting.txt /*-y* +. repeat.txt /*.* +... eval.txt /*...* +.Xdefaults gui_x11.txt /*.Xdefaults* +.aff spell.txt /*.aff* +.dic spell.txt /*.dic* +.exrc starting.txt /*.exrc* +.gvimrc gui.txt /*.gvimrc* +.vimrc starting.txt /*.vimrc* +/ pattern.txt /*\/* +/$ pattern.txt /*\/$* +/. pattern.txt /*\/.* +// version7.txt /*\/\/* +//; pattern.txt /*\/\/;* +/<CR> pattern.txt /*\/<CR>* +/[[. pattern.txt /*\/[[.* +/[[= pattern.txt /*\/[[=* +/[\n] pattern.txt /*\/[\\n]* +/[] pattern.txt /*\/[]* +/\ pattern.txt /*\/\\* +/\$ pattern.txt /*\/\\$* +/\%# pattern.txt /*\/\\%#* +/\%#= pattern.txt /*\/\\%#=* +/\%$ pattern.txt /*\/\\%$* +/\%'m pattern.txt /*\/\\%'m* +/\%( pattern.txt /*\/\\%(* +/\%(\) pattern.txt /*\/\\%(\\)* +/\%<'m pattern.txt /*\/\\%<'m* +/\%<c pattern.txt /*\/\\%<c* +/\%<l pattern.txt /*\/\\%<l* +/\%<v pattern.txt /*\/\\%<v* +/\%>'m pattern.txt /*\/\\%>'m* +/\%>c pattern.txt /*\/\\%>c* +/\%>l pattern.txt /*\/\\%>l* +/\%>v pattern.txt /*\/\\%>v* +/\%U pattern.txt /*\/\\%U* +/\%V pattern.txt /*\/\\%V* +/\%[] pattern.txt /*\/\\%[]* +/\%^ pattern.txt /*\/\\%^* +/\%c pattern.txt /*\/\\%c* +/\%d pattern.txt /*\/\\%d* +/\%l pattern.txt /*\/\\%l* +/\%o pattern.txt /*\/\\%o* +/\%u pattern.txt /*\/\\%u* +/\%v pattern.txt /*\/\\%v* +/\%x pattern.txt /*\/\\%x* +/\& pattern.txt /*\/\\&* +/\( pattern.txt /*\/\\(* +/\(\) pattern.txt /*\/\\(\\)* +/\) pattern.txt /*\/\\)* +/\+ pattern.txt /*\/\\+* +/\. pattern.txt /*\/\\.* +/\1 pattern.txt /*\/\\1* +/\2 pattern.txt /*\/\\2* +/\3 pattern.txt /*\/\\3* +/\9 pattern.txt /*\/\\9* +/\< pattern.txt /*\/\\<* +/\= pattern.txt /*\/\\=* +/\> pattern.txt /*\/\\>* +/\? pattern.txt /*\/\\?* +/\@! pattern.txt /*\/\\@!* +/\@<! pattern.txt /*\/\\@<!* +/\@<= pattern.txt /*\/\\@<=* +/\@= pattern.txt /*\/\\@=* +/\@> pattern.txt /*\/\\@>* +/\A pattern.txt /*\/\\A* +/\C pattern.txt /*\/\\C* +/\D pattern.txt /*\/\\D* +/\F pattern.txt /*\/\\F* +/\H pattern.txt /*\/\\H* +/\I pattern.txt /*\/\\I* +/\K pattern.txt /*\/\\K* +/\L pattern.txt /*\/\\L* +/\M pattern.txt /*\/\\M* +/\O pattern.txt /*\/\\O* +/\P pattern.txt /*\/\\P* +/\S pattern.txt /*\/\\S* +/\U pattern.txt /*\/\\U* +/\V pattern.txt /*\/\\V* +/\W pattern.txt /*\/\\W* +/\X pattern.txt /*\/\\X* +/\Z pattern.txt /*\/\\Z* +/\[] pattern.txt /*\/\\[]* +/\\ pattern.txt /*\/\\\\* +/\] pattern.txt /*\/\\]* +/\^ pattern.txt /*\/\\^* +/\_ pattern.txt /*\/\\_* +/\_$ pattern.txt /*\/\\_$* +/\_. pattern.txt /*\/\\_.* +/\_A pattern.txt /*\/\\_A* +/\_D pattern.txt /*\/\\_D* +/\_F pattern.txt /*\/\\_F* +/\_H pattern.txt /*\/\\_H* +/\_I pattern.txt /*\/\\_I* +/\_K pattern.txt /*\/\\_K* +/\_L pattern.txt /*\/\\_L* +/\_O pattern.txt /*\/\\_O* +/\_P pattern.txt /*\/\\_P* +/\_S pattern.txt /*\/\\_S* +/\_U pattern.txt /*\/\\_U* +/\_W pattern.txt /*\/\\_W* +/\_X pattern.txt /*\/\\_X* +/\_[] pattern.txt /*\/\\_[]* +/\_^ pattern.txt /*\/\\_^* +/\_a pattern.txt /*\/\\_a* +/\_d pattern.txt /*\/\\_d* +/\_f pattern.txt /*\/\\_f* +/\_h pattern.txt /*\/\\_h* +/\_i pattern.txt /*\/\\_i* +/\_k pattern.txt /*\/\\_k* +/\_l pattern.txt /*\/\\_l* +/\_o pattern.txt /*\/\\_o* +/\_p pattern.txt /*\/\\_p* +/\_s pattern.txt /*\/\\_s* +/\_u pattern.txt /*\/\\_u* +/\_w pattern.txt /*\/\\_w* +/\_x pattern.txt /*\/\\_x* +/\a pattern.txt /*\/\\a* +/\b pattern.txt /*\/\\b* +/\bar pattern.txt /*\/\\bar* +/\c pattern.txt /*\/\\c* +/\d pattern.txt /*\/\\d* +/\e pattern.txt /*\/\\e* +/\f pattern.txt /*\/\\f* +/\h pattern.txt /*\/\\h* +/\i pattern.txt /*\/\\i* +/\k pattern.txt /*\/\\k* +/\l pattern.txt /*\/\\l* +/\m pattern.txt /*\/\\m* +/\n pattern.txt /*\/\\n* +/\o pattern.txt /*\/\\o* +/\p pattern.txt /*\/\\p* +/\r pattern.txt /*\/\\r* +/\s pattern.txt /*\/\\s* +/\star pattern.txt /*\/\\star* +/\t pattern.txt /*\/\\t* +/\u pattern.txt /*\/\\u* +/\v pattern.txt /*\/\\v* +/\w pattern.txt /*\/\\w* +/\x pattern.txt /*\/\\x* +/\z( syntax.txt /*\/\\z(* +/\z(\) syntax.txt /*\/\\z(\\)* +/\z1 syntax.txt /*\/\\z1* +/\z2 syntax.txt /*\/\\z2* +/\z3 syntax.txt /*\/\\z3* +/\z4 syntax.txt /*\/\\z4* +/\z5 syntax.txt /*\/\\z5* +/\z6 syntax.txt /*\/\\z6* +/\z7 syntax.txt /*\/\\z7* +/\z8 syntax.txt /*\/\\z8* +/\z9 syntax.txt /*\/\\z9* +/\ze pattern.txt /*\/\\ze* +/\zs pattern.txt /*\/\\zs* +/\{ pattern.txt /*\/\\{* +/\{- pattern.txt /*\/\\{-* +/\~ pattern.txt /*\/\\~* +/^ pattern.txt /*\/^* +/atom pattern.txt /*\/atom* +/bar pattern.txt /*\/bar* +/branch pattern.txt /*\/branch* +/character-classes pattern.txt /*\/character-classes* +/collection pattern.txt /*\/collection* +/concat pattern.txt /*\/concat* +/dyn various.txt /*\/dyn* +/ignorecase pattern.txt /*\/ignorecase* +/magic pattern.txt /*\/magic* +/multi pattern.txt /*\/multi* +/ordinary-atom pattern.txt /*\/ordinary-atom* +/pattern pattern.txt /*\/pattern* +/piece pattern.txt /*\/piece* +/star pattern.txt /*\/star* +/zero-width pattern.txt /*\/zero-width* +/~ pattern.txt /*\/~* +0 motion.txt /*0* +01.1 usr_01.txt /*01.1* +01.2 usr_01.txt /*01.2* +01.3 usr_01.txt /*01.3* +01.4 usr_01.txt /*01.4* +02.1 usr_02.txt /*02.1* +02.2 usr_02.txt /*02.2* +02.3 usr_02.txt /*02.3* +02.4 usr_02.txt /*02.4* +02.5 usr_02.txt /*02.5* +02.6 usr_02.txt /*02.6* +02.7 usr_02.txt /*02.7* +02.8 usr_02.txt /*02.8* +03.1 usr_03.txt /*03.1* +03.10 usr_03.txt /*03.10* +03.2 usr_03.txt /*03.2* +03.3 usr_03.txt /*03.3* +03.4 usr_03.txt /*03.4* +03.5 usr_03.txt /*03.5* +03.6 usr_03.txt /*03.6* +03.7 usr_03.txt /*03.7* +03.8 usr_03.txt /*03.8* +03.9 usr_03.txt /*03.9* +04.1 usr_04.txt /*04.1* +04.10 usr_04.txt /*04.10* +04.2 usr_04.txt /*04.2* +04.3 usr_04.txt /*04.3* +04.4 usr_04.txt /*04.4* +04.5 usr_04.txt /*04.5* +04.6 usr_04.txt /*04.6* +04.7 usr_04.txt /*04.7* +04.8 usr_04.txt /*04.8* +04.9 usr_04.txt /*04.9* +05.1 usr_05.txt /*05.1* +05.2 usr_05.txt /*05.2* +05.3 usr_05.txt /*05.3* +05.4 usr_05.txt /*05.4* +05.5 usr_05.txt /*05.5* +05.6 usr_05.txt /*05.6* +05.7 usr_05.txt /*05.7* +06.1 usr_06.txt /*06.1* +06.2 usr_06.txt /*06.2* +06.3 usr_06.txt /*06.3* +06.4 usr_06.txt /*06.4* +06.5 usr_06.txt /*06.5* +06.6 usr_06.txt /*06.6* +07.1 usr_07.txt /*07.1* +07.2 usr_07.txt /*07.2* +07.3 usr_07.txt /*07.3* +07.4 usr_07.txt /*07.4* +07.5 usr_07.txt /*07.5* +07.6 usr_07.txt /*07.6* +07.7 usr_07.txt /*07.7* +08.1 usr_08.txt /*08.1* +08.2 usr_08.txt /*08.2* +08.3 usr_08.txt /*08.3* +08.4 usr_08.txt /*08.4* +08.5 usr_08.txt /*08.5* +08.6 usr_08.txt /*08.6* +08.7 usr_08.txt /*08.7* +08.8 usr_08.txt /*08.8* +08.9 usr_08.txt /*08.9* +09.1 usr_09.txt /*09.1* +09.2 usr_09.txt /*09.2* +09.3 usr_09.txt /*09.3* +09.4 usr_09.txt /*09.4* +10.1 usr_10.txt /*10.1* +10.2 usr_10.txt /*10.2* +10.3 usr_10.txt /*10.3* +10.4 usr_10.txt /*10.4* +10.5 usr_10.txt /*10.5* +10.6 usr_10.txt /*10.6* +10.7 usr_10.txt /*10.7* +10.8 usr_10.txt /*10.8* +10.9 usr_10.txt /*10.9* +11.1 usr_11.txt /*11.1* +11.2 usr_11.txt /*11.2* +11.3 usr_11.txt /*11.3* +11.4 usr_11.txt /*11.4* +12.1 usr_12.txt /*12.1* +12.2 usr_12.txt /*12.2* +12.3 usr_12.txt /*12.3* +12.4 usr_12.txt /*12.4* +12.5 usr_12.txt /*12.5* +12.6 usr_12.txt /*12.6* +12.7 usr_12.txt /*12.7* +12.8 usr_12.txt /*12.8* +1gD pattern.txt /*1gD* +1gd pattern.txt /*1gd* +20.1 usr_20.txt /*20.1* +20.2 usr_20.txt /*20.2* +20.3 usr_20.txt /*20.3* +20.4 usr_20.txt /*20.4* +20.5 usr_20.txt /*20.5* +21.1 usr_21.txt /*21.1* +21.2 usr_21.txt /*21.2* +21.3 usr_21.txt /*21.3* +21.4 usr_21.txt /*21.4* +21.5 usr_21.txt /*21.5* +21.6 usr_21.txt /*21.6* +22.1 usr_22.txt /*22.1* +22.2 usr_22.txt /*22.2* +22.3 usr_22.txt /*22.3* +22.4 usr_22.txt /*22.4* +23.1 usr_23.txt /*23.1* +23.2 usr_23.txt /*23.2* +23.3 usr_23.txt /*23.3* +23.4 usr_23.txt /*23.4* +23.5 usr_23.txt /*23.5* +24.1 usr_24.txt /*24.1* +24.10 usr_24.txt /*24.10* +24.2 usr_24.txt /*24.2* +24.3 usr_24.txt /*24.3* +24.4 usr_24.txt /*24.4* +24.5 usr_24.txt /*24.5* +24.6 usr_24.txt /*24.6* +24.7 usr_24.txt /*24.7* +24.8 usr_24.txt /*24.8* +24.9 usr_24.txt /*24.9* +25.1 usr_25.txt /*25.1* +25.2 usr_25.txt /*25.2* +25.3 usr_25.txt /*25.3* +25.4 usr_25.txt /*25.4* +25.5 usr_25.txt /*25.5* +26.1 usr_26.txt /*26.1* +26.2 usr_26.txt /*26.2* +26.3 usr_26.txt /*26.3* +26.4 usr_26.txt /*26.4* +27.1 usr_27.txt /*27.1* +27.2 usr_27.txt /*27.2* +27.3 usr_27.txt /*27.3* +27.4 usr_27.txt /*27.4* +27.5 usr_27.txt /*27.5* +27.6 usr_27.txt /*27.6* +27.7 usr_27.txt /*27.7* +27.8 usr_27.txt /*27.8* +27.9 usr_27.txt /*27.9* +28.1 usr_28.txt /*28.1* +28.10 usr_28.txt /*28.10* +28.2 usr_28.txt /*28.2* +28.3 usr_28.txt /*28.3* +28.4 usr_28.txt /*28.4* +28.5 usr_28.txt /*28.5* +28.6 usr_28.txt /*28.6* +28.7 usr_28.txt /*28.7* +28.8 usr_28.txt /*28.8* +28.9 usr_28.txt /*28.9* +29.1 usr_29.txt /*29.1* +29.2 usr_29.txt /*29.2* +29.3 usr_29.txt /*29.3* +29.4 usr_29.txt /*29.4* +29.5 usr_29.txt /*29.5* +2html.vim syntax.txt /*2html.vim* +30.1 usr_30.txt /*30.1* +30.2 usr_30.txt /*30.2* +30.3 usr_30.txt /*30.3* +30.4 usr_30.txt /*30.4* +30.5 usr_30.txt /*30.5* +30.6 usr_30.txt /*30.6* +31.1 usr_31.txt /*31.1* +31.2 usr_31.txt /*31.2* +31.3 usr_31.txt /*31.3* +31.4 usr_31.txt /*31.4* +31.5 usr_31.txt /*31.5* +32.1 usr_32.txt /*32.1* +32.2 usr_32.txt /*32.2* +32.3 usr_32.txt /*32.3* +32.4 usr_32.txt /*32.4* +40.1 usr_40.txt /*40.1* +40.2 usr_40.txt /*40.2* +40.3 usr_40.txt /*40.3* +41.1 usr_41.txt /*41.1* +41.10 usr_41.txt /*41.10* +41.11 usr_41.txt /*41.11* +41.12 usr_41.txt /*41.12* +41.13 usr_41.txt /*41.13* +41.14 usr_41.txt /*41.14* +41.15 usr_41.txt /*41.15* +41.16 usr_41.txt /*41.16* +41.2 usr_41.txt /*41.2* +41.3 usr_41.txt /*41.3* +41.4 usr_41.txt /*41.4* +41.5 usr_41.txt /*41.5* +41.6 usr_41.txt /*41.6* +41.7 usr_41.txt /*41.7* +41.8 usr_41.txt /*41.8* +41.9 usr_41.txt /*41.9* +42 usr_42.txt /*42* +42.1 usr_42.txt /*42.1* +42.2 usr_42.txt /*42.2* +42.3 usr_42.txt /*42.3* +42.4 usr_42.txt /*42.4* +43.1 usr_43.txt /*43.1* +43.2 usr_43.txt /*43.2* +44.1 usr_44.txt /*44.1* +44.10 usr_44.txt /*44.10* +44.11 usr_44.txt /*44.11* +44.12 usr_44.txt /*44.12* +44.2 usr_44.txt /*44.2* +44.3 usr_44.txt /*44.3* +44.4 usr_44.txt /*44.4* +44.5 usr_44.txt /*44.5* +44.6 usr_44.txt /*44.6* +44.7 usr_44.txt /*44.7* +44.8 usr_44.txt /*44.8* +44.9 usr_44.txt /*44.9* +45.1 usr_45.txt /*45.1* +45.2 usr_45.txt /*45.2* +45.3 usr_45.txt /*45.3* +45.4 usr_45.txt /*45.4* +45.5 usr_45.txt /*45.5* +8g8 various.txt /*8g8* +90.1 usr_90.txt /*90.1* +90.2 usr_90.txt /*90.2* +90.3 usr_90.txt /*90.3* +90.4 usr_90.txt /*90.4* +90.5 usr_90.txt /*90.5* +: cmdline.txt /*:* +:! various.txt /*:!* +:!! various.txt /*:!!* +:!cmd various.txt /*:!cmd* +:!start os_win32.txt /*:!start* +:# various.txt /*:#* +:#! various.txt /*:#!* +:$ cmdline.txt /*:$* +:% cmdline.txt /*:%* +:& change.txt /*:&* +:' cmdline.txt /*:'* +:, cmdline.txt /*:,* +:. cmdline.txt /*:.* +:/ cmdline.txt /*:\/* +:0file editing.txt /*:0file* +:2match pattern.txt /*:2match* +:3match pattern.txt /*:3match* +::. cmdline.txt /*::.* +::8 cmdline.txt /*::8* +::e cmdline.txt /*::e* +::gs cmdline.txt /*::gs* +::h cmdline.txt /*::h* +::p cmdline.txt /*::p* +::r cmdline.txt /*::r* +::s cmdline.txt /*::s* +::t cmdline.txt /*::t* +::~ cmdline.txt /*::~* +:; cmdline.txt /*:;* +:< change.txt /*:<* +:<abuf> cmdline.txt /*:<abuf>* +:<afile> cmdline.txt /*:<afile>* +:<amatch> cmdline.txt /*:<amatch>* +:<cWORD> cmdline.txt /*:<cWORD>* +:<cfile> cmdline.txt /*:<cfile>* +:<cword> cmdline.txt /*:<cword>* +:<sfile> cmdline.txt /*:<sfile>* +:= various.txt /*:=* +:> change.txt /*:>* +:? cmdline.txt /*:?* +:@ repeat.txt /*:@* +:@: repeat.txt /*:@:* +:@@ repeat.txt /*:@@* +:AdaLines ft_ada.txt /*:AdaLines* +:AdaRainbow ft_ada.txt /*:AdaRainbow* +:AdaSpaces ft_ada.txt /*:AdaSpaces* +:AdaTagDir ft_ada.txt /*:AdaTagDir* +:AdaTagFile ft_ada.txt /*:AdaTagFile* +:AdaTypes ft_ada.txt /*:AdaTypes* +:CompilerSet usr_41.txt /*:CompilerSet* +:DiffOrig diff.txt /*:DiffOrig* +:DoMatchParen pi_paren.txt /*:DoMatchParen* +:Explore pi_netrw.txt /*:Explore* +:GLVS pi_getscript.txt /*:GLVS* +:GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat* +:GnatFind ft_ada.txt /*:GnatFind* +:GnatPretty ft_ada.txt /*:GnatPretty* +:GnatTags ft_ada.txt /*:GnatTags* +:Hexplore pi_netrw.txt /*:Hexplore* +:Man filetype.txt /*:Man* +:MkVimball pi_vimball.txt /*:MkVimball* +:N editing.txt /*:N* +:NetrwClean pi_netrw.txt /*:NetrwClean* +:Nexplore pi_netrw.txt /*:Nexplore* +:Next editing.txt /*:Next* +:NoMatchParen pi_paren.txt /*:NoMatchParen* +:Nr pi_netrw.txt /*:Nr* +:Nread pi_netrw.txt /*:Nread* +:Ns pi_netrw.txt /*:Ns* +:Nsource pi_netrw.txt /*:Nsource* +:Nw pi_netrw.txt /*:Nw* +:Nwrite pi_netrw.txt /*:Nwrite* +:P various.txt /*:P* +:Pexplore pi_netrw.txt /*:Pexplore* +:Print various.txt /*:Print* +:Rexplore pi_netrw.txt /*:Rexplore* +:RmVimball pi_vimball.txt /*:RmVimball* +:Sexplore pi_netrw.txt /*:Sexplore* +:TOhtml syntax.txt /*:TOhtml* +:TarDiff pi_tar.txt /*:TarDiff* +:Texplore pi_netrw.txt /*:Texplore* +:UseVimball pi_vimball.txt /*:UseVimball* +:Vexplore pi_netrw.txt /*:Vexplore* +:VimballList pi_vimball.txt /*:VimballList* +:Vimuntar pi_tar.txt /*:Vimuntar* +:X editing.txt /*:X* +:XMLent insert.txt /*:XMLent* +:XMLns insert.txt /*:XMLns* +:[range] motion.txt /*:[range]* +:\bar cmdline.txt /*:\\bar* +:_! cmdline.txt /*:_!* +:_# cmdline.txt /*:_#* +:_## cmdline.txt /*:_##* +:_#0 cmdline.txt /*:_#0* +:_#< cmdline.txt /*:_#<* +:_#n cmdline.txt /*:_#n* +:_% cmdline.txt /*:_%* +:_%: cmdline.txt /*:_%:* +:_%< cmdline.txt /*:_%<* +:a insert.txt /*:a* +:ab map.txt /*:ab* +:abbreviate map.txt /*:abbreviate* +:abbreviate-<buffer> map.txt /*:abbreviate-<buffer>* +:abbreviate-local map.txt /*:abbreviate-local* +:abbreviate-verbose map.txt /*:abbreviate-verbose* +:abc map.txt /*:abc* +:abclear map.txt /*:abclear* +:abo windows.txt /*:abo* +:aboveleft windows.txt /*:aboveleft* +:al windows.txt /*:al* +:all windows.txt /*:all* +:am gui.txt /*:am* +:amenu gui.txt /*:amenu* +:an gui.txt /*:an* +:anoremenu gui.txt /*:anoremenu* +:append insert.txt /*:append* +:ar editing.txt /*:ar* +:arga editing.txt /*:arga* +:argadd editing.txt /*:argadd* +:argd editing.txt /*:argd* +:argdelete editing.txt /*:argdelete* +:argdo editing.txt /*:argdo* +:arge editing.txt /*:arge* +:argedit editing.txt /*:argedit* +:argglobal editing.txt /*:argglobal* +:arglocal editing.txt /*:arglocal* +:args editing.txt /*:args* +:args_f editing.txt /*:args_f* +:args_f! editing.txt /*:args_f!* +:argu editing.txt /*:argu* +:argument editing.txt /*:argument* +:as various.txt /*:as* +:ascii various.txt /*:ascii* +:au autocmd.txt /*:au* +:aug autocmd.txt /*:aug* +:augroup autocmd.txt /*:augroup* +:augroup-delete autocmd.txt /*:augroup-delete* +:aun gui.txt /*:aun* +:aunmenu gui.txt /*:aunmenu* +:autocmd autocmd.txt /*:autocmd* +:autocmd-verbose autocmd.txt /*:autocmd-verbose* +:b windows.txt /*:b* +:bN windows.txt /*:bN* +:bNext windows.txt /*:bNext* +:ba windows.txt /*:ba* +:bad windows.txt /*:bad* +:badd windows.txt /*:badd* +:ball windows.txt /*:ball* +:bar cmdline.txt /*:bar* +:bd windows.txt /*:bd* +:bdel windows.txt /*:bdel* +:bdelete windows.txt /*:bdelete* +:be gui.txt /*:be* +:behave gui.txt /*:behave* +:bel windows.txt /*:bel* +:belowright windows.txt /*:belowright* +:bf windows.txt /*:bf* +:bfirst windows.txt /*:bfirst* +:bl windows.txt /*:bl* +:blast windows.txt /*:blast* +:bm windows.txt /*:bm* +:bmodified windows.txt /*:bmodified* +:bn windows.txt /*:bn* +:bnext windows.txt /*:bnext* +:botright windows.txt /*:botright* +:bp windows.txt /*:bp* +:bprevious windows.txt /*:bprevious* +:br windows.txt /*:br* +:brea eval.txt /*:brea* +:break eval.txt /*:break* +:breaka repeat.txt /*:breaka* +:breakadd repeat.txt /*:breakadd* +:breakd repeat.txt /*:breakd* +:breakdel repeat.txt /*:breakdel* +:breakl repeat.txt /*:breakl* +:breaklist repeat.txt /*:breaklist* +:brewind windows.txt /*:brewind* +:bro editing.txt /*:bro* +:browse editing.txt /*:browse* +:browse-set options.txt /*:browse-set* +:bu windows.txt /*:bu* +:buf windows.txt /*:buf* +:bufdo windows.txt /*:bufdo* +:buffer windows.txt /*:buffer* +:buffer-! windows.txt /*:buffer-!* +:buffers windows.txt /*:buffers* +:bun windows.txt /*:bun* +:bunload windows.txt /*:bunload* +:bw windows.txt /*:bw* +:bwipe windows.txt /*:bwipe* +:bwipeout windows.txt /*:bwipeout* +:c change.txt /*:c* +:cN quickfix.txt /*:cN* +:cNext quickfix.txt /*:cNext* +:cNf quickfix.txt /*:cNf* +:cNfile quickfix.txt /*:cNfile* +:ca map.txt /*:ca* +:cabbrev map.txt /*:cabbrev* +:cabc map.txt /*:cabc* +:cabclear map.txt /*:cabclear* +:cad quickfix.txt /*:cad* +:caddb quickfix.txt /*:caddb* +:caddbuffer quickfix.txt /*:caddbuffer* +:caddexpr quickfix.txt /*:caddexpr* +:caddf quickfix.txt /*:caddf* +:caddfile quickfix.txt /*:caddfile* +:cal eval.txt /*:cal* +:call eval.txt /*:call* +:cat eval.txt /*:cat* +:catch eval.txt /*:catch* +:cb quickfix.txt /*:cb* +:cbuffer quickfix.txt /*:cbuffer* +:cc quickfix.txt /*:cc* +:ccl quickfix.txt /*:ccl* +:cclose quickfix.txt /*:cclose* +:cd editing.txt /*:cd* +:cd- editing.txt /*:cd-* +:ce change.txt /*:ce* +:center change.txt /*:center* +:cex quickfix.txt /*:cex* +:cexpr quickfix.txt /*:cexpr* +:cf quickfix.txt /*:cf* +:cfile quickfix.txt /*:cfile* +:cfir quickfix.txt /*:cfir* +:cfirst quickfix.txt /*:cfirst* +:cg quickfix.txt /*:cg* +:cgetb quickfix.txt /*:cgetb* +:cgetbuffer quickfix.txt /*:cgetbuffer* +:cgete quickfix.txt /*:cgete* +:cgetexpr quickfix.txt /*:cgetexpr* +:cgetfile quickfix.txt /*:cgetfile* +:ch change.txt /*:ch* +:change change.txt /*:change* +:changes motion.txt /*:changes* +:chd editing.txt /*:chd* +:chdir editing.txt /*:chdir* +:che tagsrch.txt /*:che* +:checkpath tagsrch.txt /*:checkpath* +:checkt editing.txt /*:checkt* +:checktime editing.txt /*:checktime* +:cl quickfix.txt /*:cl* +:cla quickfix.txt /*:cla* +:clast quickfix.txt /*:clast* +:clist quickfix.txt /*:clist* +:clo windows.txt /*:clo* +:close windows.txt /*:close* +:cm map.txt /*:cm* +:cmap map.txt /*:cmap* +:cmap_l map.txt /*:cmap_l* +:cmapc map.txt /*:cmapc* +:cmapclear map.txt /*:cmapclear* +:cme gui.txt /*:cme* +:cmenu gui.txt /*:cmenu* +:cn quickfix.txt /*:cn* +:cnew quickfix.txt /*:cnew* +:cnewer quickfix.txt /*:cnewer* +:cnext quickfix.txt /*:cnext* +:cnf quickfix.txt /*:cnf* +:cnfile quickfix.txt /*:cnfile* +:cno map.txt /*:cno* +:cnorea map.txt /*:cnorea* +:cnoreabbrev map.txt /*:cnoreabbrev* +:cnoremap map.txt /*:cnoremap* +:cnoreme gui.txt /*:cnoreme* +:cnoremenu gui.txt /*:cnoremenu* +:co change.txt /*:co* +:col quickfix.txt /*:col* +:colder quickfix.txt /*:colder* +:colo syntax.txt /*:colo* +:colorscheme syntax.txt /*:colorscheme* +:com map.txt /*:com* +:comc map.txt /*:comc* +:comclear map.txt /*:comclear* +:command map.txt /*:command* +:command-bang map.txt /*:command-bang* +:command-bar map.txt /*:command-bar* +:command-buffer map.txt /*:command-buffer* +:command-complete map.txt /*:command-complete* +:command-completion map.txt /*:command-completion* +:command-completion-custom map.txt /*:command-completion-custom* +:command-completion-customlist map.txt /*:command-completion-customlist* +:command-count map.txt /*:command-count* +:command-nargs map.txt /*:command-nargs* +:command-range map.txt /*:command-range* +:command-register map.txt /*:command-register* +:command-verbose map.txt /*:command-verbose* +:comment cmdline.txt /*:comment* +:comp quickfix.txt /*:comp* +:compiler quickfix.txt /*:compiler* +:con eval.txt /*:con* +:conf editing.txt /*:conf* +:confirm editing.txt /*:confirm* +:continue eval.txt /*:continue* +:cope quickfix.txt /*:cope* +:copen quickfix.txt /*:copen* +:copy change.txt /*:copy* +:cp quickfix.txt /*:cp* +:cpf quickfix.txt /*:cpf* +:cpfile quickfix.txt /*:cpfile* +:cprevious quickfix.txt /*:cprevious* +:cq quickfix.txt /*:cq* +:cquit quickfix.txt /*:cquit* +:cr quickfix.txt /*:cr* +:crewind quickfix.txt /*:crewind* +:cs if_cscop.txt /*:cs* +:cscope if_cscop.txt /*:cscope* +:cstag if_cscop.txt /*:cstag* +:cu map.txt /*:cu* +:cuna map.txt /*:cuna* +:cunabbrev map.txt /*:cunabbrev* +:cunmap map.txt /*:cunmap* +:cunme gui.txt /*:cunme* +:cunmenu gui.txt /*:cunmenu* +:cw quickfix.txt /*:cw* +:cwindow quickfix.txt /*:cwindow* +:d change.txt /*:d* +:de change.txt /*:de* +:debug repeat.txt /*:debug* +:debug-name repeat.txt /*:debug-name* +:debugg repeat.txt /*:debugg* +:debuggreedy repeat.txt /*:debuggreedy* +:del change.txt /*:del* +:delc map.txt /*:delc* +:delcommand map.txt /*:delcommand* +:delcr todo.txt /*:delcr* +:delete change.txt /*:delete* +:delf eval.txt /*:delf* +:delfunction eval.txt /*:delfunction* +:delm motion.txt /*:delm* +:delmarks motion.txt /*:delmarks* +:di change.txt /*:di* +:diffg diff.txt /*:diffg* +:diffget diff.txt /*:diffget* +:diffo diff.txt /*:diffo* +:diffoff diff.txt /*:diffoff* +:diffp diff.txt /*:diffp* +:diffpatch diff.txt /*:diffpatch* +:diffpu diff.txt /*:diffpu* +:diffput diff.txt /*:diffput* +:diffs diff.txt /*:diffs* +:diffsplit diff.txt /*:diffsplit* +:difft diff.txt /*:difft* +:diffthis diff.txt /*:diffthis* +:diffu diff.txt /*:diffu* +:diffupdate diff.txt /*:diffupdate* +:dig digraph.txt /*:dig* +:digraphs digraph.txt /*:digraphs* +:display change.txt /*:display* +:dj tagsrch.txt /*:dj* +:djump tagsrch.txt /*:djump* +:dl change.txt /*:dl* +:dli tagsrch.txt /*:dli* +:dlist tagsrch.txt /*:dlist* +:do autocmd.txt /*:do* +:doau autocmd.txt /*:doau* +:doautoa autocmd.txt /*:doautoa* +:doautoall autocmd.txt /*:doautoall* +:doautocmd autocmd.txt /*:doautocmd* +:dp change.txt /*:dp* +:dr windows.txt /*:dr* +:drop windows.txt /*:drop* +:ds tagsrch.txt /*:ds* +:dsearch tagsrch.txt /*:dsearch* +:dsp tagsrch.txt /*:dsp* +:dsplit tagsrch.txt /*:dsplit* +:e editing.txt /*:e* +:ea undo.txt /*:ea* +:earlier undo.txt /*:earlier* +:ec eval.txt /*:ec* +:echo eval.txt /*:echo* +:echo-redraw eval.txt /*:echo-redraw* +:echoe eval.txt /*:echoe* +:echoerr eval.txt /*:echoerr* +:echoh eval.txt /*:echoh* +:echohl eval.txt /*:echohl* +:echom eval.txt /*:echom* +:echomsg eval.txt /*:echomsg* +:echon eval.txt /*:echon* +:edit editing.txt /*:edit* +:edit! editing.txt /*:edit!* +:edit!_f editing.txt /*:edit!_f* +:edit_f editing.txt /*:edit_f* +:el eval.txt /*:el* +:else eval.txt /*:else* +:elsei eval.txt /*:elsei* +:elseif eval.txt /*:elseif* +:em gui.txt /*:em* +:emenu gui.txt /*:emenu* +:en eval.txt /*:en* +:endf eval.txt /*:endf* +:endfo eval.txt /*:endfo* +:endfor eval.txt /*:endfor* +:endfunction eval.txt /*:endfunction* +:endif eval.txt /*:endif* +:endt eval.txt /*:endt* +:endtry eval.txt /*:endtry* +:endw eval.txt /*:endw* +:endwhile eval.txt /*:endwhile* +:ene editing.txt /*:ene* +:ene! editing.txt /*:ene!* +:enew editing.txt /*:enew* +:enew! editing.txt /*:enew!* +:ex editing.txt /*:ex* +:exe eval.txt /*:exe* +:exe-comment eval.txt /*:exe-comment* +:execute eval.txt /*:execute* +:exi editing.txt /*:exi* +:exit editing.txt /*:exit* +:exu helphelp.txt /*:exu* +:exusage helphelp.txt /*:exusage* +:f editing.txt /*:f* +:fi editing.txt /*:fi* +:file editing.txt /*:file* +:file_f editing.txt /*:file_f* +:filename editing.txt /*:filename* +:files windows.txt /*:files* +:filet filetype.txt /*:filet* +:filetype filetype.txt /*:filetype* +:filetype-indent-off filetype.txt /*:filetype-indent-off* +:filetype-indent-on filetype.txt /*:filetype-indent-on* +:filetype-off filetype.txt /*:filetype-off* +:filetype-overview filetype.txt /*:filetype-overview* +:filetype-plugin-off filetype.txt /*:filetype-plugin-off* +:filetype-plugin-on filetype.txt /*:filetype-plugin-on* +:fin editing.txt /*:fin* +:fina eval.txt /*:fina* +:finally eval.txt /*:finally* +:find editing.txt /*:find* +:fini repeat.txt /*:fini* +:finish repeat.txt /*:finish* +:fir editing.txt /*:fir* +:first editing.txt /*:first* +:fix options.txt /*:fix* +:fixdel options.txt /*:fixdel* +:fo fold.txt /*:fo* +:fold fold.txt /*:fold* +:foldc fold.txt /*:foldc* +:foldclose fold.txt /*:foldclose* +:foldd fold.txt /*:foldd* +:folddoc fold.txt /*:folddoc* +:folddoclosed fold.txt /*:folddoclosed* +:folddoopen fold.txt /*:folddoopen* +:foldo fold.txt /*:foldo* +:foldopen fold.txt /*:foldopen* +:for eval.txt /*:for* +:fu eval.txt /*:fu* +:function eval.txt /*:function* +:function-verbose eval.txt /*:function-verbose* +:g repeat.txt /*:g* +:global repeat.txt /*:global* +:go motion.txt /*:go* +:goto motion.txt /*:goto* +:gr quickfix.txt /*:gr* +:grep quickfix.txt /*:grep* +:grepa quickfix.txt /*:grepa* +:grepadd quickfix.txt /*:grepadd* +:gu gui_x11.txt /*:gu* +:gui gui_x11.txt /*:gui* +:gv gui_x11.txt /*:gv* +:gvim gui_x11.txt /*:gvim* +:h helphelp.txt /*:h* +:ha print.txt /*:ha* +:hardcopy print.txt /*:hardcopy* +:help helphelp.txt /*:help* +:helpf helphelp.txt /*:helpf* +:helpfind helphelp.txt /*:helpfind* +:helpg helphelp.txt /*:helpg* +:helpgrep helphelp.txt /*:helpgrep* +:helpt helphelp.txt /*:helpt* +:helptags helphelp.txt /*:helptags* +:hi syntax.txt /*:hi* +:hi-default syntax.txt /*:hi-default* +:hi-link syntax.txt /*:hi-link* +:hi-normal syntax.txt /*:hi-normal* +:hi-normal-cterm syntax.txt /*:hi-normal-cterm* +:hide windows.txt /*:hide* +:highlight syntax.txt /*:highlight* +:highlight-default syntax.txt /*:highlight-default* +:highlight-link syntax.txt /*:highlight-link* +:highlight-normal syntax.txt /*:highlight-normal* +:highlight-verbose syntax.txt /*:highlight-verbose* +:his cmdline.txt /*:his* +:history cmdline.txt /*:history* +:history-indexing cmdline.txt /*:history-indexing* +:i insert.txt /*:i* +:ia map.txt /*:ia* +:iabbrev map.txt /*:iabbrev* +:iabc map.txt /*:iabc* +:iabclear map.txt /*:iabclear* +:if eval.txt /*:if* +:ij tagsrch.txt /*:ij* +:ijump tagsrch.txt /*:ijump* +:il tagsrch.txt /*:il* +:ilist tagsrch.txt /*:ilist* +:im map.txt /*:im* +:imap map.txt /*:imap* +:imap_l map.txt /*:imap_l* +:imapc map.txt /*:imapc* +:imapclear map.txt /*:imapclear* +:ime gui.txt /*:ime* +:imenu gui.txt /*:imenu* +:in insert.txt /*:in* +:index index.txt /*:index* +:ino map.txt /*:ino* +:inorea map.txt /*:inorea* +:inoreabbrev map.txt /*:inoreabbrev* +:inoremap map.txt /*:inoremap* +:inoreme gui.txt /*:inoreme* +:inoremenu gui.txt /*:inoremenu* +:insert insert.txt /*:insert* +:intro starting.txt /*:intro* +:is tagsrch.txt /*:is* +:isearch tagsrch.txt /*:isearch* +:isp tagsrch.txt /*:isp* +:isplit tagsrch.txt /*:isplit* +:iu map.txt /*:iu* +:iuna map.txt /*:iuna* +:iunabbrev map.txt /*:iunabbrev* +:iunmap map.txt /*:iunmap* +:iunme gui.txt /*:iunme* +:iunmenu gui.txt /*:iunmenu* +:j change.txt /*:j* +:join change.txt /*:join* +:ju motion.txt /*:ju* +:jumps motion.txt /*:jumps* +:k motion.txt /*:k* +:kee motion.txt /*:kee* +:keepa editing.txt /*:keepa* +:keepalt editing.txt /*:keepalt* +:keepj motion.txt /*:keepj* +:keepjumps motion.txt /*:keepjumps* +:keepmarks motion.txt /*:keepmarks* +:l various.txt /*:l* +:lN quickfix.txt /*:lN* +:lNext quickfix.txt /*:lNext* +:lNf quickfix.txt /*:lNf* +:lNfile quickfix.txt /*:lNfile* +:la editing.txt /*:la* +:lad quickfix.txt /*:lad* +:laddb quickfix.txt /*:laddb* +:laddbuffer quickfix.txt /*:laddbuffer* +:laddexpr quickfix.txt /*:laddexpr* +:laddf quickfix.txt /*:laddf* +:laddfile quickfix.txt /*:laddfile* +:lan mlang.txt /*:lan* +:lang mlang.txt /*:lang* +:language mlang.txt /*:language* +:last editing.txt /*:last* +:lat undo.txt /*:lat* +:later undo.txt /*:later* +:lb quickfix.txt /*:lb* +:lbuffer quickfix.txt /*:lbuffer* +:lc editing.txt /*:lc* +:lcd editing.txt /*:lcd* +:lch editing.txt /*:lch* +:lchdir editing.txt /*:lchdir* +:lcl quickfix.txt /*:lcl* +:lclose quickfix.txt /*:lclose* +:lcs if_cscop.txt /*:lcs* +:lcscope if_cscop.txt /*:lcscope* +:le change.txt /*:le* +:left change.txt /*:left* +:lefta windows.txt /*:lefta* +:leftabove windows.txt /*:leftabove* +:let eval.txt /*:let* +:let+= eval.txt /*:let+=* +:let-$ eval.txt /*:let-$* +:let-& eval.txt /*:let-&* +:let-= eval.txt /*:let-=* +:let-@ eval.txt /*:let-@* +:let-environment eval.txt /*:let-environment* +:let-option eval.txt /*:let-option* +:let-register eval.txt /*:let-register* +:let-unpack eval.txt /*:let-unpack* +:let.= eval.txt /*:let.=* +:lex quickfix.txt /*:lex* +:lexpr quickfix.txt /*:lexpr* +:lf quickfix.txt /*:lf* +:lfile quickfix.txt /*:lfile* +:lfir quickfix.txt /*:lfir* +:lfirst quickfix.txt /*:lfirst* +:lg quickfix.txt /*:lg* +:lgetb quickfix.txt /*:lgetb* +:lgetbuffer quickfix.txt /*:lgetbuffer* +:lgete quickfix.txt /*:lgete* +:lgetexpr quickfix.txt /*:lgetexpr* +:lgetfile quickfix.txt /*:lgetfile* +:lgr quickfix.txt /*:lgr* +:lgrep quickfix.txt /*:lgrep* +:lgrepa quickfix.txt /*:lgrepa* +:lgrepadd quickfix.txt /*:lgrepadd* +:lh helphelp.txt /*:lh* +:lhelpgrep helphelp.txt /*:lhelpgrep* +:list various.txt /*:list* +:ll quickfix.txt /*:ll* +:lla quickfix.txt /*:lla* +:llast quickfix.txt /*:llast* +:lli quickfix.txt /*:lli* +:llist quickfix.txt /*:llist* +:lm map.txt /*:lm* +:lmak quickfix.txt /*:lmak* +:lmake quickfix.txt /*:lmake* +:lmap map.txt /*:lmap* +:lmap_l map.txt /*:lmap_l* +:lmapc map.txt /*:lmapc* +:lmapclear map.txt /*:lmapclear* +:ln map.txt /*:ln* +:lne quickfix.txt /*:lne* +:lnew quickfix.txt /*:lnew* +:lnewer quickfix.txt /*:lnewer* +:lnext quickfix.txt /*:lnext* +:lnf quickfix.txt /*:lnf* +:lnfile quickfix.txt /*:lnfile* +:lnoremap map.txt /*:lnoremap* +:lo starting.txt /*:lo* +:loadk mbyte.txt /*:loadk* +:loadkeymap mbyte.txt /*:loadkeymap* +:loadview starting.txt /*:loadview* +:loc motion.txt /*:loc* +:lockmarks motion.txt /*:lockmarks* +:lockv eval.txt /*:lockv* +:lockvar eval.txt /*:lockvar* +:lol quickfix.txt /*:lol* +:lolder quickfix.txt /*:lolder* +:lop quickfix.txt /*:lop* +:lopen quickfix.txt /*:lopen* +:lp quickfix.txt /*:lp* +:lpf quickfix.txt /*:lpf* +:lpfile quickfix.txt /*:lpfile* +:lprevious quickfix.txt /*:lprevious* +:lr quickfix.txt /*:lr* +:lrewind quickfix.txt /*:lrewind* +:ls windows.txt /*:ls* +:lt tagsrch.txt /*:lt* +:ltag tagsrch.txt /*:ltag* +:lu map.txt /*:lu* +:lua if_lua.txt /*:lua* +:luado if_lua.txt /*:luado* +:luafile if_lua.txt /*:luafile* +:lunmap map.txt /*:lunmap* +:lv quickfix.txt /*:lv* +:lvimgrep quickfix.txt /*:lvimgrep* +:lvimgrepa quickfix.txt /*:lvimgrepa* +:lvimgrepadd quickfix.txt /*:lvimgrepadd* +:lw quickfix.txt /*:lw* +:lwindow quickfix.txt /*:lwindow* +:m change.txt /*:m* +:ma motion.txt /*:ma* +:mak quickfix.txt /*:mak* +:make quickfix.txt /*:make* +:make_makeprg quickfix.txt /*:make_makeprg* +:map map.txt /*:map* +:map! map.txt /*:map!* +:map-<buffer> map.txt /*:map-<buffer>* +:map-<expr> map.txt /*:map-<expr>* +:map-<nowait> map.txt /*:map-<nowait>* +:map-<script> map.txt /*:map-<script>* +:map-<silent> map.txt /*:map-<silent>* +:map-<special> map.txt /*:map-<special>* +:map-<unique> map.txt /*:map-<unique>* +:map-alt-keys map.txt /*:map-alt-keys* +:map-arguments map.txt /*:map-arguments* +:map-commands map.txt /*:map-commands* +:map-expression map.txt /*:map-expression* +:map-local map.txt /*:map-local* +:map-modes map.txt /*:map-modes* +:map-nowait map.txt /*:map-nowait* +:map-operator map.txt /*:map-operator* +:map-script map.txt /*:map-script* +:map-silent map.txt /*:map-silent* +:map-special map.txt /*:map-special* +:map-special-chars map.txt /*:map-special-chars* +:map-special-keys map.txt /*:map-special-keys* +:map-undo map.txt /*:map-undo* +:map-verbose map.txt /*:map-verbose* +:map_l map.txt /*:map_l* +:map_l! map.txt /*:map_l!* +:mapc map.txt /*:mapc* +:mapc! map.txt /*:mapc!* +:mapclear map.txt /*:mapclear* +:mapclear! map.txt /*:mapclear!* +:mark motion.txt /*:mark* +:marks motion.txt /*:marks* +:mat pattern.txt /*:mat* +:match pattern.txt /*:match* +:me gui.txt /*:me* +:menu gui.txt /*:menu* +:menu-<script> gui.txt /*:menu-<script>* +:menu-<silent> gui.txt /*:menu-<silent>* +:menu-<special> gui.txt /*:menu-<special>* +:menu-disable gui.txt /*:menu-disable* +:menu-enable gui.txt /*:menu-enable* +:menu-script gui.txt /*:menu-script* +:menu-silent gui.txt /*:menu-silent* +:menu-special gui.txt /*:menu-special* +:menut mlang.txt /*:menut* +:menutrans mlang.txt /*:menutrans* +:menutranslate mlang.txt /*:menutranslate* +:mes message.txt /*:mes* +:messages message.txt /*:messages* +:mk starting.txt /*:mk* +:mkexrc starting.txt /*:mkexrc* +:mks starting.txt /*:mks* +:mksession starting.txt /*:mksession* +:mksp spell.txt /*:mksp* +:mkspell spell.txt /*:mkspell* +:mkv starting.txt /*:mkv* +:mkvie starting.txt /*:mkvie* +:mkview starting.txt /*:mkview* +:mkvimrc starting.txt /*:mkvimrc* +:mo change.txt /*:mo* +:mod term.txt /*:mod* +:mode term.txt /*:mode* +:move change.txt /*:move* +:mz if_mzsch.txt /*:mz* +:mzf if_mzsch.txt /*:mzf* +:mzfile if_mzsch.txt /*:mzfile* +:mzscheme if_mzsch.txt /*:mzscheme* +:n editing.txt /*:n* +:nbclose netbeans.txt /*:nbclose* +:nbkey netbeans.txt /*:nbkey* +:nbstart netbeans.txt /*:nbstart* +:ne editing.txt /*:ne* +:new windows.txt /*:new* +:next editing.txt /*:next* +:next_f editing.txt /*:next_f* +:nm map.txt /*:nm* +:nmap map.txt /*:nmap* +:nmap_l map.txt /*:nmap_l* +:nmapc map.txt /*:nmapc* +:nmapclear map.txt /*:nmapclear* +:nme gui.txt /*:nme* +:nmenu gui.txt /*:nmenu* +:nn map.txt /*:nn* +:nnoremap map.txt /*:nnoremap* +:nnoreme gui.txt /*:nnoreme* +:nnoremenu gui.txt /*:nnoremenu* +:no map.txt /*:no* +:no! map.txt /*:no!* +:noa autocmd.txt /*:noa* +:noautocmd autocmd.txt /*:noautocmd* +:noh pattern.txt /*:noh* +:nohlsearch pattern.txt /*:nohlsearch* +:norea map.txt /*:norea* +:noreabbrev map.txt /*:noreabbrev* +:noremap map.txt /*:noremap* +:noremap! map.txt /*:noremap!* +:noreme gui.txt /*:noreme* +:noremenu gui.txt /*:noremenu* +:norm various.txt /*:norm* +:normal various.txt /*:normal* +:normal-range various.txt /*:normal-range* +:nu various.txt /*:nu* +:number various.txt /*:number* +:nun map.txt /*:nun* +:nunmap map.txt /*:nunmap* +:nunme gui.txt /*:nunme* +:nunmenu gui.txt /*:nunmenu* +:o vi_diff.txt /*:o* +:ol starting.txt /*:ol* +:oldfiles starting.txt /*:oldfiles* +:om map.txt /*:om* +:omap map.txt /*:omap* +:omap_l map.txt /*:omap_l* +:omapc map.txt /*:omapc* +:omapclear map.txt /*:omapclear* +:ome gui.txt /*:ome* +:omenu gui.txt /*:omenu* +:on windows.txt /*:on* +:only windows.txt /*:only* +:ono map.txt /*:ono* +:onoremap map.txt /*:onoremap* +:onoreme gui.txt /*:onoreme* +:onoremenu gui.txt /*:onoremenu* +:op vi_diff.txt /*:op* +:open vi_diff.txt /*:open* +:opt options.txt /*:opt* +:options options.txt /*:options* +:ou map.txt /*:ou* +:ounmap map.txt /*:ounmap* +:ounme gui.txt /*:ounme* +:ounmenu gui.txt /*:ounmenu* +:ownsyntax syntax.txt /*:ownsyntax* +:p various.txt /*:p* +:pc windows.txt /*:pc* +:pclose windows.txt /*:pclose* +:pe if_perl.txt /*:pe* +:ped windows.txt /*:ped* +:pedit windows.txt /*:pedit* +:perl if_perl.txt /*:perl* +:perld if_perl.txt /*:perld* +:perldo if_perl.txt /*:perldo* +:po tagsrch.txt /*:po* +:pop tagsrch.txt /*:pop* +:popu gui.txt /*:popu* +:popup gui.txt /*:popup* +:pp windows.txt /*:pp* +:ppop windows.txt /*:ppop* +:pr various.txt /*:pr* +:pre recover.txt /*:pre* +:preserve recover.txt /*:preserve* +:prev editing.txt /*:prev* +:previous editing.txt /*:previous* +:print various.txt /*:print* +:pro change.txt /*:pro* +:prof repeat.txt /*:prof* +:profd repeat.txt /*:profd* +:profdel repeat.txt /*:profdel* +:profile repeat.txt /*:profile* +:promptfind change.txt /*:promptfind* +:promptr change.txt /*:promptr* +:promptrepl change.txt /*:promptrepl* +:ps windows.txt /*:ps* +:psearch windows.txt /*:psearch* +:ptN tagsrch.txt /*:ptN* +:ptNext tagsrch.txt /*:ptNext* +:pta windows.txt /*:pta* +:ptag windows.txt /*:ptag* +:ptf tagsrch.txt /*:ptf* +:ptfirst tagsrch.txt /*:ptfirst* +:ptj tagsrch.txt /*:ptj* +:ptjump tagsrch.txt /*:ptjump* +:ptl tagsrch.txt /*:ptl* +:ptlast tagsrch.txt /*:ptlast* +:ptn tagsrch.txt /*:ptn* +:ptnext tagsrch.txt /*:ptnext* +:ptp tagsrch.txt /*:ptp* +:ptprevious tagsrch.txt /*:ptprevious* +:ptr tagsrch.txt /*:ptr* +:ptrewind tagsrch.txt /*:ptrewind* +:pts tagsrch.txt /*:pts* +:ptselect tagsrch.txt /*:ptselect* +:pu change.txt /*:pu* +:put change.txt /*:put* +:pw editing.txt /*:pw* +:pwd editing.txt /*:pwd* +:py if_pyth.txt /*:py* +:py3 if_pyth.txt /*:py3* +:py3do if_pyth.txt /*:py3do* +:py3file if_pyth.txt /*:py3file* +:pydo if_pyth.txt /*:pydo* +:pyf if_pyth.txt /*:pyf* +:pyfile if_pyth.txt /*:pyfile* +:python if_pyth.txt /*:python* +:python3 if_pyth.txt /*:python3* +:q editing.txt /*:q* +:qa editing.txt /*:qa* +:qall editing.txt /*:qall* +:quit editing.txt /*:quit* +:quita editing.txt /*:quita* +:quitall editing.txt /*:quitall* +:quote cmdline.txt /*:quote* +:r insert.txt /*:r* +:r! insert.txt /*:r!* +:range cmdline.txt /*:range* +:range! change.txt /*:range!* +:re insert.txt /*:re* +:read insert.txt /*:read* +:read! insert.txt /*:read!* +:rec recover.txt /*:rec* +:recover recover.txt /*:recover* +:recover-crypt recover.txt /*:recover-crypt* +:red undo.txt /*:red* +:redi various.txt /*:redi* +:redir various.txt /*:redir* +:redo undo.txt /*:redo* +:redr various.txt /*:redr* +:redraw various.txt /*:redraw* +:redraws various.txt /*:redraws* +:redrawstatus various.txt /*:redrawstatus* +:reg change.txt /*:reg* +:registers change.txt /*:registers* +:res windows.txt /*:res* +:resize windows.txt /*:resize* +:ret change.txt /*:ret* +:retab change.txt /*:retab* +:retab! change.txt /*:retab!* +:retu eval.txt /*:retu* +:return eval.txt /*:return* +:rew editing.txt /*:rew* +:rewind editing.txt /*:rewind* +:ri change.txt /*:ri* +:right change.txt /*:right* +:rightb windows.txt /*:rightb* +:rightbelow windows.txt /*:rightbelow* +:ru repeat.txt /*:ru* +:rub if_ruby.txt /*:rub* +:ruby if_ruby.txt /*:ruby* +:rubyd if_ruby.txt /*:rubyd* +:rubydo if_ruby.txt /*:rubydo* +:rubyf if_ruby.txt /*:rubyf* +:rubyfile if_ruby.txt /*:rubyfile* +:rundo undo.txt /*:rundo* +:runtime repeat.txt /*:runtime* +:rv starting.txt /*:rv* +:rviminfo starting.txt /*:rviminfo* +:s change.txt /*:s* +:s% change.txt /*:s%* +:sN windows.txt /*:sN* +:sNext windows.txt /*:sNext* +:s\= change.txt /*:s\\=* +:s_c change.txt /*:s_c* +:s_flags change.txt /*:s_flags* +:sa windows.txt /*:sa* +:sal windows.txt /*:sal* +:sall windows.txt /*:sall* +:san eval.txt /*:san* +:sandbox eval.txt /*:sandbox* +:sargument windows.txt /*:sargument* +:sav editing.txt /*:sav* +:saveas editing.txt /*:saveas* +:sb windows.txt /*:sb* +:sbN windows.txt /*:sbN* +:sbNext windows.txt /*:sbNext* +:sba windows.txt /*:sba* +:sball windows.txt /*:sball* +:sbf windows.txt /*:sbf* +:sbfirst windows.txt /*:sbfirst* +:sbl windows.txt /*:sbl* +:sblast windows.txt /*:sblast* +:sbm windows.txt /*:sbm* +:sbmodified windows.txt /*:sbmodified* +:sbn windows.txt /*:sbn* +:sbnext windows.txt /*:sbnext* +:sbp windows.txt /*:sbp* +:sbprevious windows.txt /*:sbprevious* +:sbr windows.txt /*:sbr* +:sbrewind windows.txt /*:sbrewind* +:sbuffer windows.txt /*:sbuffer* +:scrip repeat.txt /*:scrip* +:scripte repeat.txt /*:scripte* +:scriptencoding repeat.txt /*:scriptencoding* +:scriptnames repeat.txt /*:scriptnames* +:scs if_cscop.txt /*:scs* +:scscope if_cscop.txt /*:scscope* +:se options.txt /*:se* +:search-args tagsrch.txt /*:search-args* +:set options.txt /*:set* +:set+= options.txt /*:set+=* +:set-! options.txt /*:set-!* +:set-& options.txt /*:set-&* +:set-&vi options.txt /*:set-&vi* +:set-&vim options.txt /*:set-&vim* +:set-= options.txt /*:set-=* +:set-args options.txt /*:set-args* +:set-browse options.txt /*:set-browse* +:set-default options.txt /*:set-default* +:set-inv options.txt /*:set-inv* +:set-termcap options.txt /*:set-termcap* +:set-verbose options.txt /*:set-verbose* +:set^= options.txt /*:set^=* +:set_env options.txt /*:set_env* +:setf options.txt /*:setf* +:setfiletype options.txt /*:setfiletype* +:setg options.txt /*:setg* +:setglobal options.txt /*:setglobal* +:setl options.txt /*:setl* +:setlocal options.txt /*:setlocal* +:sf windows.txt /*:sf* +:sfind windows.txt /*:sfind* +:sfir windows.txt /*:sfir* +:sfirst windows.txt /*:sfirst* +:sh various.txt /*:sh* +:shell various.txt /*:shell* +:si gui_w32.txt /*:si* +:sig sign.txt /*:sig* +:sign sign.txt /*:sign* +:sign-define sign.txt /*:sign-define* +:sign-fname sign.txt /*:sign-fname* +:sign-jump sign.txt /*:sign-jump* +:sign-list sign.txt /*:sign-list* +:sign-place sign.txt /*:sign-place* +:sign-undefine sign.txt /*:sign-undefine* +:sign-unplace sign.txt /*:sign-unplace* +:sil various.txt /*:sil* +:silent various.txt /*:silent* +:simalt gui_w32.txt /*:simalt* +:sl various.txt /*:sl* +:sla windows.txt /*:sla* +:slast windows.txt /*:slast* +:sleep various.txt /*:sleep* +:sm change.txt /*:sm* +:smagic change.txt /*:smagic* +:smap map.txt /*:smap* +:smap_l map.txt /*:smap_l* +:smapc map.txt /*:smapc* +:smapclear map.txt /*:smapclear* +:sme gui.txt /*:sme* +:smenu gui.txt /*:smenu* +:sn windows.txt /*:sn* +:snext windows.txt /*:snext* +:sni if_sniff.txt /*:sni* +:sniff if_sniff.txt /*:sniff* +:sno change.txt /*:sno* +:snomagic change.txt /*:snomagic* +:snor map.txt /*:snor* +:snoremap map.txt /*:snoremap* +:snoreme gui.txt /*:snoreme* +:snoremenu gui.txt /*:snoremenu* +:so repeat.txt /*:so* +:sor change.txt /*:sor* +:sort change.txt /*:sort* +:source repeat.txt /*:source* +:source_crnl repeat.txt /*:source_crnl* +:sp windows.txt /*:sp* +:spe spell.txt /*:spe* +:spelld spell.txt /*:spelld* +:spelldump spell.txt /*:spelldump* +:spellgood spell.txt /*:spellgood* +:spelli spell.txt /*:spelli* +:spellinfo spell.txt /*:spellinfo* +:spellr spell.txt /*:spellr* +:spellrepall spell.txt /*:spellrepall* +:spellu spell.txt /*:spellu* +:spellundo spell.txt /*:spellundo* +:spellw spell.txt /*:spellw* +:spellwrong spell.txt /*:spellwrong* +:split windows.txt /*:split* +:split_f windows.txt /*:split_f* +:spr windows.txt /*:spr* +:sprevious windows.txt /*:sprevious* +:sre windows.txt /*:sre* +:srewind windows.txt /*:srewind* +:st starting.txt /*:st* +:sta windows.txt /*:sta* +:stag windows.txt /*:stag* +:star repeat.txt /*:star* +:start insert.txt /*:start* +:startgreplace insert.txt /*:startgreplace* +:startinsert insert.txt /*:startinsert* +:startreplace insert.txt /*:startreplace* +:stj tagsrch.txt /*:stj* +:stjump tagsrch.txt /*:stjump* +:stop starting.txt /*:stop* +:stopi insert.txt /*:stopi* +:stopinsert insert.txt /*:stopinsert* +:sts tagsrch.txt /*:sts* +:stselect tagsrch.txt /*:stselect* +:su change.txt /*:su* +:substitute change.txt /*:substitute* +:sun windows.txt /*:sun* +:sunhide windows.txt /*:sunhide* +:sunm map.txt /*:sunm* +:sunmap map.txt /*:sunmap* +:sunme gui.txt /*:sunme* +:sunmenu gui.txt /*:sunmenu* +:sus starting.txt /*:sus* +:suspend starting.txt /*:suspend* +:sv windows.txt /*:sv* +:sview windows.txt /*:sview* +:sw recover.txt /*:sw* +:swapname recover.txt /*:swapname* +:sy syntax.txt /*:sy* +:syn syntax.txt /*:syn* +:syn-arguments syntax.txt /*:syn-arguments* +:syn-case syntax.txt /*:syn-case* +:syn-cchar syntax.txt /*:syn-cchar* +:syn-clear syntax.txt /*:syn-clear* +:syn-cluster syntax.txt /*:syn-cluster* +:syn-conceal syntax.txt /*:syn-conceal* +:syn-conceal-implicit syntax.txt /*:syn-conceal-implicit* +:syn-concealends syntax.txt /*:syn-concealends* +:syn-contained syntax.txt /*:syn-contained* +:syn-containedin syntax.txt /*:syn-containedin* +:syn-contains syntax.txt /*:syn-contains* +:syn-context syntax.txt /*:syn-context* +:syn-default-override usr_06.txt /*:syn-default-override* +:syn-define syntax.txt /*:syn-define* +:syn-display syntax.txt /*:syn-display* +:syn-enable syntax.txt /*:syn-enable* +:syn-end syntax.txt /*:syn-end* +:syn-excludenl syntax.txt /*:syn-excludenl* +:syn-ext-match syntax.txt /*:syn-ext-match* +:syn-extend syntax.txt /*:syn-extend* +:syn-file-remarks syntax.txt /*:syn-file-remarks* +:syn-files syntax.txt /*:syn-files* +:syn-fold syntax.txt /*:syn-fold* +:syn-include syntax.txt /*:syn-include* +:syn-keepend syntax.txt /*:syn-keepend* +:syn-keyword syntax.txt /*:syn-keyword* +:syn-lc syntax.txt /*:syn-lc* +:syn-leading syntax.txt /*:syn-leading* +:syn-list syntax.txt /*:syn-list* +:syn-manual usr_06.txt /*:syn-manual* +:syn-match syntax.txt /*:syn-match* +:syn-matchgroup syntax.txt /*:syn-matchgroup* +:syn-multi-line syntax.txt /*:syn-multi-line* +:syn-nextgroup syntax.txt /*:syn-nextgroup* +:syn-off usr_06.txt /*:syn-off* +:syn-on syntax.txt /*:syn-on* +:syn-oneline syntax.txt /*:syn-oneline* +:syn-pattern syntax.txt /*:syn-pattern* +:syn-pattern-offset syntax.txt /*:syn-pattern-offset* +:syn-priority syntax.txt /*:syn-priority* +:syn-qstart syntax.txt /*:syn-qstart* +:syn-region syntax.txt /*:syn-region* +:syn-reset syntax.txt /*:syn-reset* +:syn-skip syntax.txt /*:syn-skip* +:syn-skipempty syntax.txt /*:syn-skipempty* +:syn-skipnl syntax.txt /*:syn-skipnl* +:syn-skipwhite syntax.txt /*:syn-skipwhite* +:syn-spell syntax.txt /*:syn-spell* +:syn-start syntax.txt /*:syn-start* +:syn-sync syntax.txt /*:syn-sync* +:syn-sync-ccomment syntax.txt /*:syn-sync-ccomment* +:syn-sync-first syntax.txt /*:syn-sync-first* +:syn-sync-fourth syntax.txt /*:syn-sync-fourth* +:syn-sync-linebreaks syntax.txt /*:syn-sync-linebreaks* +:syn-sync-maxlines syntax.txt /*:syn-sync-maxlines* +:syn-sync-minlines syntax.txt /*:syn-sync-minlines* +:syn-sync-second syntax.txt /*:syn-sync-second* +:syn-sync-third syntax.txt /*:syn-sync-third* +:syn-transparent syntax.txt /*:syn-transparent* +:sync scroll.txt /*:sync* +:syncbind scroll.txt /*:syncbind* +:syntax syntax.txt /*:syntax* +:syntax-enable syntax.txt /*:syntax-enable* +:syntax-on syntax.txt /*:syntax-on* +:syntax-reset syntax.txt /*:syntax-reset* +:syntime syntax.txt /*:syntime* +:t change.txt /*:t* +:tN tagsrch.txt /*:tN* +:tNext tagsrch.txt /*:tNext* +:ta tagsrch.txt /*:ta* +:tab tabpage.txt /*:tab* +:tabN tabpage.txt /*:tabN* +:tabNext tabpage.txt /*:tabNext* +:tabc tabpage.txt /*:tabc* +:tabclose tabpage.txt /*:tabclose* +:tabd tabpage.txt /*:tabd* +:tabdo tabpage.txt /*:tabdo* +:tabe tabpage.txt /*:tabe* +:tabedit tabpage.txt /*:tabedit* +:tabf tabpage.txt /*:tabf* +:tabfind tabpage.txt /*:tabfind* +:tabfir tabpage.txt /*:tabfir* +:tabfirst tabpage.txt /*:tabfirst* +:tabl tabpage.txt /*:tabl* +:tablast tabpage.txt /*:tablast* +:tabm tabpage.txt /*:tabm* +:tabmove tabpage.txt /*:tabmove* +:tabn tabpage.txt /*:tabn* +:tabnew tabpage.txt /*:tabnew* +:tabnext tabpage.txt /*:tabnext* +:tabo tabpage.txt /*:tabo* +:tabonly tabpage.txt /*:tabonly* +:tabp tabpage.txt /*:tabp* +:tabprevious tabpage.txt /*:tabprevious* +:tabr tabpage.txt /*:tabr* +:tabrewind tabpage.txt /*:tabrewind* +:tabs tabpage.txt /*:tabs* +:tag tagsrch.txt /*:tag* +:tags tagsrch.txt /*:tags* +:tc if_tcl.txt /*:tc* +:tcl if_tcl.txt /*:tcl* +:tcld if_tcl.txt /*:tcld* +:tcldo if_tcl.txt /*:tcldo* +:tclf if_tcl.txt /*:tclf* +:tclfile if_tcl.txt /*:tclfile* +:te gui_w32.txt /*:te* +:tearoff gui_w32.txt /*:tearoff* +:tf tagsrch.txt /*:tf* +:tfirst tagsrch.txt /*:tfirst* +:th eval.txt /*:th* +:throw eval.txt /*:throw* +:tj tagsrch.txt /*:tj* +:tjump tagsrch.txt /*:tjump* +:tl tagsrch.txt /*:tl* +:tlast tagsrch.txt /*:tlast* +:tm gui.txt /*:tm* +:tmenu gui.txt /*:tmenu* +:tn tagsrch.txt /*:tn* +:tnext tagsrch.txt /*:tnext* +:topleft windows.txt /*:topleft* +:tp tagsrch.txt /*:tp* +:tprevious tagsrch.txt /*:tprevious* +:tr tagsrch.txt /*:tr* +:trewind tagsrch.txt /*:trewind* +:try eval.txt /*:try* +:ts tagsrch.txt /*:ts* +:tselect tagsrch.txt /*:tselect* +:tu gui.txt /*:tu* +:tunmenu gui.txt /*:tunmenu* +:u undo.txt /*:u* +:un undo.txt /*:un* +:una map.txt /*:una* +:unabbreviate map.txt /*:unabbreviate* +:undo undo.txt /*:undo* +:undoj undo.txt /*:undoj* +:undojoin undo.txt /*:undojoin* +:undol undo.txt /*:undol* +:undolist undo.txt /*:undolist* +:unh windows.txt /*:unh* +:unhide windows.txt /*:unhide* +:unl eval.txt /*:unl* +:unlet eval.txt /*:unlet* +:unlo eval.txt /*:unlo* +:unlockvar eval.txt /*:unlockvar* +:unm map.txt /*:unm* +:unm! map.txt /*:unm!* +:unmap map.txt /*:unmap* +:unmap! map.txt /*:unmap!* +:unme gui.txt /*:unme* +:unmenu gui.txt /*:unmenu* +:unmenu-all gui.txt /*:unmenu-all* +:uns various.txt /*:uns* +:unsilent various.txt /*:unsilent* +:up editing.txt /*:up* +:update editing.txt /*:update* +:v repeat.txt /*:v* +:ve various.txt /*:ve* +:verb various.txt /*:verb* +:verbose various.txt /*:verbose* +:verbose-cmd various.txt /*:verbose-cmd* +:version various.txt /*:version* +:vert windows.txt /*:vert* +:vertical windows.txt /*:vertical* +:vertical-resize windows.txt /*:vertical-resize* +:vglobal repeat.txt /*:vglobal* +:vi editing.txt /*:vi* +:vie editing.txt /*:vie* +:view editing.txt /*:view* +:vim quickfix.txt /*:vim* +:vimgrep quickfix.txt /*:vimgrep* +:vimgrepa quickfix.txt /*:vimgrepa* +:vimgrepadd quickfix.txt /*:vimgrepadd* +:visual editing.txt /*:visual* +:visual_example visual.txt /*:visual_example* +:viu helphelp.txt /*:viu* +:viusage helphelp.txt /*:viusage* +:vm map.txt /*:vm* +:vmap map.txt /*:vmap* +:vmap_l map.txt /*:vmap_l* +:vmapc map.txt /*:vmapc* +:vmapclear map.txt /*:vmapclear* +:vme gui.txt /*:vme* +:vmenu gui.txt /*:vmenu* +:vn map.txt /*:vn* +:vne windows.txt /*:vne* +:vnew windows.txt /*:vnew* +:vnoremap map.txt /*:vnoremap* +:vnoreme gui.txt /*:vnoreme* +:vnoremenu gui.txt /*:vnoremenu* +:vs windows.txt /*:vs* +:vsplit windows.txt /*:vsplit* +:vu map.txt /*:vu* +:vunmap map.txt /*:vunmap* +:vunme gui.txt /*:vunme* +:vunmenu gui.txt /*:vunmenu* +:w editing.txt /*:w* +:w! editing.txt /*:w!* +:wN editing.txt /*:wN* +:wNext editing.txt /*:wNext* +:w_a editing.txt /*:w_a* +:w_c editing.txt /*:w_c* +:w_f editing.txt /*:w_f* +:wa editing.txt /*:wa* +:wall editing.txt /*:wall* +:wh eval.txt /*:wh* +:while eval.txt /*:while* +:win gui.txt /*:win* +:winc windows.txt /*:winc* +:wincmd windows.txt /*:wincmd* +:windo windows.txt /*:windo* +:winp gui.txt /*:winp* +:winpos gui.txt /*:winpos* +:winsize gui.txt /*:winsize* +:wn editing.txt /*:wn* +:wnext editing.txt /*:wnext* +:wp editing.txt /*:wp* +:wprevious editing.txt /*:wprevious* +:wq editing.txt /*:wq* +:wqa editing.txt /*:wqa* +:wqall editing.txt /*:wqall* +:write editing.txt /*:write* +:write_a editing.txt /*:write_a* +:write_c editing.txt /*:write_c* +:write_f editing.txt /*:write_f* +:ws workshop.txt /*:ws* +:wsverb workshop.txt /*:wsverb* +:wundo undo.txt /*:wundo* +:wv starting.txt /*:wv* +:wviminfo starting.txt /*:wviminfo* +:x editing.txt /*:x* +:xa editing.txt /*:xa* +:xall editing.txt /*:xall* +:xit editing.txt /*:xit* +:xm map.txt /*:xm* +:xmap map.txt /*:xmap* +:xmap_l map.txt /*:xmap_l* +:xmapc map.txt /*:xmapc* +:xmapclear map.txt /*:xmapclear* +:xme gui.txt /*:xme* +:xmenu gui.txt /*:xmenu* +:xn map.txt /*:xn* +:xnoremap map.txt /*:xnoremap* +:xnoreme gui.txt /*:xnoreme* +:xnoremenu gui.txt /*:xnoremenu* +:xu map.txt /*:xu* +:xunmap map.txt /*:xunmap* +:xunme gui.txt /*:xunme* +:xunmenu gui.txt /*:xunmenu* +:y change.txt /*:y* +:yank change.txt /*:yank* +:z various.txt /*:z* +:z# various.txt /*:z#* +:~ change.txt /*:~* +; motion.txt /*;* +< change.txt /*<* +<2-LeftMouse> term.txt /*<2-LeftMouse>* +<3-LeftMouse> term.txt /*<3-LeftMouse>* +<4-LeftMouse> term.txt /*<4-LeftMouse>* +<< change.txt /*<<* +<> intro.txt /*<>* +<A- intro.txt /*<A-* +<A-LeftMouse> term.txt /*<A-LeftMouse>* +<A-RightMouse> term.txt /*<A-RightMouse>* +<BS> motion.txt /*<BS>* +<Bar> intro.txt /*<Bar>* +<Bslash> intro.txt /*<Bslash>* +<C- intro.txt /*<C-* +<C-Del> os_dos.txt /*<C-Del>* +<C-End> motion.txt /*<C-End>* +<C-Home> motion.txt /*<C-Home>* +<C-Insert> os_dos.txt /*<C-Insert>* +<C-Left> motion.txt /*<C-Left>* +<C-LeftMouse> tagsrch.txt /*<C-LeftMouse>* +<C-PageDown> tabpage.txt /*<C-PageDown>* +<C-PageUp> tabpage.txt /*<C-PageUp>* +<C-Right> motion.txt /*<C-Right>* +<C-RightMouse> tagsrch.txt /*<C-RightMouse>* +<C-ScrollWheelDown> scroll.txt /*<C-ScrollWheelDown>* +<C-ScrollWheelLeft> scroll.txt /*<C-ScrollWheelLeft>* +<C-ScrollWheelRight> scroll.txt /*<C-ScrollWheelRight>* +<C-ScrollWheelUp> scroll.txt /*<C-ScrollWheelUp>* +<CR> motion.txt /*<CR>* +<CSI> intro.txt /*<CSI>* +<Char-> map.txt /*<Char->* +<Char> map.txt /*<Char>* +<D- intro.txt /*<D-* +<Del> change.txt /*<Del>* +<Down> motion.txt /*<Down>* +<Drop> change.txt /*<Drop>* +<EOL> intro.txt /*<EOL>* +<End> motion.txt /*<End>* +<Enter> intro.txt /*<Enter>* +<Esc> intro.txt /*<Esc>* +<F10> term.txt /*<F10>* +<F11> term.txt /*<F11>* +<F12> term.txt /*<F12>* +<F13> term.txt /*<F13>* +<F14> term.txt /*<F14>* +<F15> term.txt /*<F15>* +<F16> term.txt /*<F16>* +<F17> term.txt /*<F17>* +<F18> term.txt /*<F18>* +<F19> term.txt /*<F19>* +<F1> helphelp.txt /*<F1>* +<F2> term.txt /*<F2>* +<F3> term.txt /*<F3>* +<F4> term.txt /*<F4>* +<F5> term.txt /*<F5>* +<F6> term.txt /*<F6>* +<F7> term.txt /*<F7>* +<F8> term.txt /*<F8>* +<F9> term.txt /*<F9>* +<Help> helphelp.txt /*<Help>* +<Home> motion.txt /*<Home>* +<Insert> insert.txt /*<Insert>* +<Leader> map.txt /*<Leader>* +<Left> motion.txt /*<Left>* +<LeftDrag> term.txt /*<LeftDrag>* +<LeftMouse> visual.txt /*<LeftMouse>* +<LeftRelease> visual.txt /*<LeftRelease>* +<LocalLeader> map.txt /*<LocalLeader>* +<M- intro.txt /*<M-* +<MiddleDrag> term.txt /*<MiddleDrag>* +<MiddleMouse> change.txt /*<MiddleMouse>* +<MiddleRelease> term.txt /*<MiddleRelease>* +<Mouse> term.txt /*<Mouse>* +<MouseDown> scroll.txt /*<MouseDown>* +<MouseUp> scroll.txt /*<MouseUp>* +<NL> motion.txt /*<NL>* +<Nop> map.txt /*<Nop>* +<Nul> intro.txt /*<Nul>* +<PageDown> scroll.txt /*<PageDown>* +<PageUp> scroll.txt /*<PageUp>* +<Plug> map.txt /*<Plug>* +<Return> intro.txt /*<Return>* +<Right> motion.txt /*<Right>* +<RightDrag> term.txt /*<RightDrag>* +<RightMouse> visual.txt /*<RightMouse>* +<RightRelease> term.txt /*<RightRelease>* +<S- intro.txt /*<S-* +<S-Del> os_dos.txt /*<S-Del>* +<S-Down> scroll.txt /*<S-Down>* +<S-End> term.txt /*<S-End>* +<S-F10> term.txt /*<S-F10>* +<S-F11> term.txt /*<S-F11>* +<S-F12> term.txt /*<S-F12>* +<S-F1> intro.txt /*<S-F1>* +<S-F2> term.txt /*<S-F2>* +<S-F3> term.txt /*<S-F3>* +<S-F4> term.txt /*<S-F4>* +<S-F5> term.txt /*<S-F5>* +<S-F6> term.txt /*<S-F6>* +<S-F7> term.txt /*<S-F7>* +<S-F8> term.txt /*<S-F8>* +<S-F9> term.txt /*<S-F9>* +<S-Home> term.txt /*<S-Home>* +<S-Insert> os_dos.txt /*<S-Insert>* +<S-Left> motion.txt /*<S-Left>* +<S-LeftMouse> term.txt /*<S-LeftMouse>* +<S-Right> motion.txt /*<S-Right>* +<S-RightMouse> term.txt /*<S-RightMouse>* +<S-ScrollWheelDown> scroll.txt /*<S-ScrollWheelDown>* +<S-ScrollWheelLeft> scroll.txt /*<S-ScrollWheelLeft>* +<S-ScrollWheelRight> scroll.txt /*<S-ScrollWheelRight>* +<S-ScrollWheelUp> scroll.txt /*<S-ScrollWheelUp>* +<S-Tab> term.txt /*<S-Tab>* +<S-Up> scroll.txt /*<S-Up>* +<S-xF1> term.txt /*<S-xF1>* +<S-xF2> term.txt /*<S-xF2>* +<S-xF3> term.txt /*<S-xF3>* +<S-xF4> term.txt /*<S-xF4>* +<SID> map.txt /*<SID>* +<SNR> map.txt /*<SNR>* +<ScrollWheelDown> scroll.txt /*<ScrollWheelDown>* +<ScrollWheelLeft> scroll.txt /*<ScrollWheelLeft>* +<ScrollWheelRight> scroll.txt /*<ScrollWheelRight>* +<ScrollWheelUp> scroll.txt /*<ScrollWheelUp>* +<Space> motion.txt /*<Space>* +<Tab> motion.txt /*<Tab>* +<Undo> undo.txt /*<Undo>* +<Up> motion.txt /*<Up>* +<abuf> cmdline.txt /*<abuf>* +<afile> cmdline.txt /*<afile>* +<amatch> cmdline.txt /*<amatch>* +<args> map.txt /*<args>* +<bang> map.txt /*<bang>* +<buffer=N> autocmd.txt /*<buffer=N>* +<buffer=abuf> autocmd.txt /*<buffer=abuf>* +<cfile> cmdline.txt /*<cfile>* +<character> intro.txt /*<character>* +<count> map.txt /*<count>* +<f-args> map.txt /*<f-args>* +<k0> term.txt /*<k0>* +<k1> term.txt /*<k1>* +<k2> term.txt /*<k2>* +<k3> term.txt /*<k3>* +<k4> term.txt /*<k4>* +<k5> term.txt /*<k5>* +<k6> term.txt /*<k6>* +<k7> term.txt /*<k7>* +<k8> term.txt /*<k8>* +<k9> term.txt /*<k9>* +<kDivide> term.txt /*<kDivide>* +<kEnd> motion.txt /*<kEnd>* +<kEnter> term.txt /*<kEnter>* +<kHome> motion.txt /*<kHome>* +<kMinus> term.txt /*<kMinus>* +<kMultiply> term.txt /*<kMultiply>* +<kPageDown> scroll.txt /*<kPageDown>* +<kPageUp> scroll.txt /*<kPageUp>* +<kPlus> term.txt /*<kPlus>* +<kPoint> term.txt /*<kPoint>* +<line1> map.txt /*<line1>* +<line2> map.txt /*<line2>* +<lt> intro.txt /*<lt>* +<nomodeline> autocmd.txt /*<nomodeline>* +<q-args> map.txt /*<q-args>* +<reg> map.txt /*<reg>* +<register> map.txt /*<register>* +<sfile> cmdline.txt /*<sfile>* +<slnum> cmdline.txt /*<slnum>* +<xCSI> intro.txt /*<xCSI>* +<xDown> term.txt /*<xDown>* +<xEnd> term.txt /*<xEnd>* +<xEnd>-xterm term.txt /*<xEnd>-xterm* +<xF1> term.txt /*<xF1>* +<xF1>-xterm term.txt /*<xF1>-xterm* +<xF2> term.txt /*<xF2>* +<xF2>-xterm term.txt /*<xF2>-xterm* +<xF3> term.txt /*<xF3>* +<xF3>-xterm term.txt /*<xF3>-xterm* +<xF4> term.txt /*<xF4>* +<xF4>-xterm term.txt /*<xF4>-xterm* +<xHome> term.txt /*<xHome>* +<xHome>-xterm term.txt /*<xHome>-xterm* +<xLeft> term.txt /*<xLeft>* +<xRight> term.txt /*<xRight>* +<xUp> term.txt /*<xUp>* += change.txt /*=* +== change.txt /*==* +> change.txt /*>* +>> change.txt /*>>* +>cont repeat.txt /*>cont* +>finish repeat.txt /*>finish* +>interrupt repeat.txt /*>interrupt* +>next repeat.txt /*>next* +>quit repeat.txt /*>quit* +>step repeat.txt /*>step* +? pattern.txt /*?* +?<CR> pattern.txt /*?<CR>* +@ repeat.txt /*@* +@/ change.txt /*@\/* +@: repeat.txt /*@:* +@= change.txt /*@=* +@@ repeat.txt /*@@* +@r eval.txt /*@r* +A insert.txt /*A* +ACL editing.txt /*ACL* +ATTENTION usr_11.txt /*ATTENTION* +Abbreviations map.txt /*Abbreviations* +Aleph options.txt /*Aleph* +Amiga os_amiga.txt /*Amiga* +Arabic arabic.txt /*Arabic* +Atari os_mint.txt /*Atari* +Athena gui_x11.txt /*Athena* +B motion.txt /*B* +BeBox os_beos.txt /*BeBox* +BeOS os_beos.txt /*BeOS* +Bram intro.txt /*Bram* +BufAdd autocmd.txt /*BufAdd* +BufCreate autocmd.txt /*BufCreate* +BufDelete autocmd.txt /*BufDelete* +BufEnter autocmd.txt /*BufEnter* +BufFilePost autocmd.txt /*BufFilePost* +BufFilePre autocmd.txt /*BufFilePre* +BufHidden autocmd.txt /*BufHidden* +BufLeave autocmd.txt /*BufLeave* +BufNew autocmd.txt /*BufNew* +BufNewFile autocmd.txt /*BufNewFile* +BufRead autocmd.txt /*BufRead* +BufReadCmd autocmd.txt /*BufReadCmd* +BufReadPost autocmd.txt /*BufReadPost* +BufReadPre autocmd.txt /*BufReadPre* +BufUnload autocmd.txt /*BufUnload* +BufWinEnter autocmd.txt /*BufWinEnter* +BufWinLeave autocmd.txt /*BufWinLeave* +BufWipeout autocmd.txt /*BufWipeout* +BufWrite autocmd.txt /*BufWrite* +BufWriteCmd autocmd.txt /*BufWriteCmd* +BufWritePost autocmd.txt /*BufWritePost* +BufWritePre autocmd.txt /*BufWritePre* +C change.txt /*C* +C-editing tips.txt /*C-editing* +C-indenting indent.txt /*C-indenting* +COMSPEC starting.txt /*COMSPEC* +CR-used-for-NL pattern.txt /*CR-used-for-NL* +CTRL-6 editing.txt /*CTRL-6* +CTRL-<PageDown> tabpage.txt /*CTRL-<PageDown>* +CTRL-<PageUp> tabpage.txt /*CTRL-<PageUp>* +CTRL-A change.txt /*CTRL-A* +CTRL-B scroll.txt /*CTRL-B* +CTRL-C pattern.txt /*CTRL-C* +CTRL-D scroll.txt /*CTRL-D* +CTRL-E scroll.txt /*CTRL-E* +CTRL-F scroll.txt /*CTRL-F* +CTRL-G editing.txt /*CTRL-G* +CTRL-H motion.txt /*CTRL-H* +CTRL-I motion.txt /*CTRL-I* +CTRL-J motion.txt /*CTRL-J* +CTRL-L various.txt /*CTRL-L* +CTRL-M motion.txt /*CTRL-M* +CTRL-N motion.txt /*CTRL-N* +CTRL-O motion.txt /*CTRL-O* +CTRL-P motion.txt /*CTRL-P* +CTRL-Q gui_w32.txt /*CTRL-Q* +CTRL-R undo.txt /*CTRL-R* +CTRL-T tagsrch.txt /*CTRL-T* +CTRL-U scroll.txt /*CTRL-U* +CTRL-U-changed version6.txt /*CTRL-U-changed* +CTRL-V visual.txt /*CTRL-V* +CTRL-V-alternative gui_w32.txt /*CTRL-V-alternative* +CTRL-W index.txt /*CTRL-W* +CTRL-W_+ windows.txt /*CTRL-W_+* +CTRL-W_- windows.txt /*CTRL-W_-* +CTRL-W_< windows.txt /*CTRL-W_<* +CTRL-W_<BS> windows.txt /*CTRL-W_<BS>* +CTRL-W_<CR> quickfix.txt /*CTRL-W_<CR>* +CTRL-W_<Down> windows.txt /*CTRL-W_<Down>* +CTRL-W_<Enter> quickfix.txt /*CTRL-W_<Enter>* +CTRL-W_<Left> windows.txt /*CTRL-W_<Left>* +CTRL-W_<Right> windows.txt /*CTRL-W_<Right>* +CTRL-W_<Up> windows.txt /*CTRL-W_<Up>* +CTRL-W_= windows.txt /*CTRL-W_=* +CTRL-W_> windows.txt /*CTRL-W_>* +CTRL-W_CTRL-B windows.txt /*CTRL-W_CTRL-B* +CTRL-W_CTRL-C windows.txt /*CTRL-W_CTRL-C* +CTRL-W_CTRL-D tagsrch.txt /*CTRL-W_CTRL-D* +CTRL-W_CTRL-F windows.txt /*CTRL-W_CTRL-F* +CTRL-W_CTRL-H windows.txt /*CTRL-W_CTRL-H* +CTRL-W_CTRL-I tagsrch.txt /*CTRL-W_CTRL-I* +CTRL-W_CTRL-J windows.txt /*CTRL-W_CTRL-J* +CTRL-W_CTRL-K windows.txt /*CTRL-W_CTRL-K* +CTRL-W_CTRL-L windows.txt /*CTRL-W_CTRL-L* +CTRL-W_CTRL-N windows.txt /*CTRL-W_CTRL-N* +CTRL-W_CTRL-O windows.txt /*CTRL-W_CTRL-O* +CTRL-W_CTRL-P windows.txt /*CTRL-W_CTRL-P* +CTRL-W_CTRL-Q windows.txt /*CTRL-W_CTRL-Q* +CTRL-W_CTRL-R windows.txt /*CTRL-W_CTRL-R* +CTRL-W_CTRL-S windows.txt /*CTRL-W_CTRL-S* +CTRL-W_CTRL-T windows.txt /*CTRL-W_CTRL-T* +CTRL-W_CTRL-V windows.txt /*CTRL-W_CTRL-V* +CTRL-W_CTRL-W windows.txt /*CTRL-W_CTRL-W* +CTRL-W_CTRL-X windows.txt /*CTRL-W_CTRL-X* +CTRL-W_CTRL-Z windows.txt /*CTRL-W_CTRL-Z* +CTRL-W_CTRL-] windows.txt /*CTRL-W_CTRL-]* +CTRL-W_CTRL-^ windows.txt /*CTRL-W_CTRL-^* +CTRL-W_CTRL-_ windows.txt /*CTRL-W_CTRL-_* +CTRL-W_F windows.txt /*CTRL-W_F* +CTRL-W_H windows.txt /*CTRL-W_H* +CTRL-W_J windows.txt /*CTRL-W_J* +CTRL-W_K windows.txt /*CTRL-W_K* +CTRL-W_L windows.txt /*CTRL-W_L* +CTRL-W_P windows.txt /*CTRL-W_P* +CTRL-W_R windows.txt /*CTRL-W_R* +CTRL-W_S windows.txt /*CTRL-W_S* +CTRL-W_T windows.txt /*CTRL-W_T* +CTRL-W_W windows.txt /*CTRL-W_W* +CTRL-W_] windows.txt /*CTRL-W_]* +CTRL-W_^ windows.txt /*CTRL-W_^* +CTRL-W__ windows.txt /*CTRL-W__* +CTRL-W_b windows.txt /*CTRL-W_b* +CTRL-W_bar windows.txt /*CTRL-W_bar* +CTRL-W_c windows.txt /*CTRL-W_c* +CTRL-W_d tagsrch.txt /*CTRL-W_d* +CTRL-W_f windows.txt /*CTRL-W_f* +CTRL-W_gF windows.txt /*CTRL-W_gF* +CTRL-W_g] windows.txt /*CTRL-W_g]* +CTRL-W_g_CTRL-] windows.txt /*CTRL-W_g_CTRL-]* +CTRL-W_gf windows.txt /*CTRL-W_gf* +CTRL-W_g} windows.txt /*CTRL-W_g}* +CTRL-W_h windows.txt /*CTRL-W_h* +CTRL-W_i tagsrch.txt /*CTRL-W_i* +CTRL-W_j windows.txt /*CTRL-W_j* +CTRL-W_k windows.txt /*CTRL-W_k* +CTRL-W_l windows.txt /*CTRL-W_l* +CTRL-W_n windows.txt /*CTRL-W_n* +CTRL-W_o windows.txt /*CTRL-W_o* +CTRL-W_p windows.txt /*CTRL-W_p* +CTRL-W_q windows.txt /*CTRL-W_q* +CTRL-W_r windows.txt /*CTRL-W_r* +CTRL-W_s windows.txt /*CTRL-W_s* +CTRL-W_t windows.txt /*CTRL-W_t* +CTRL-W_v windows.txt /*CTRL-W_v* +CTRL-W_w windows.txt /*CTRL-W_w* +CTRL-W_x windows.txt /*CTRL-W_x* +CTRL-W_z windows.txt /*CTRL-W_z* +CTRL-W_} windows.txt /*CTRL-W_}* +CTRL-X change.txt /*CTRL-X* +CTRL-Y scroll.txt /*CTRL-Y* +CTRL-Z starting.txt /*CTRL-Z* +CTRL-\_CTRL-G intro.txt /*CTRL-\\_CTRL-G* +CTRL-\_CTRL-N intro.txt /*CTRL-\\_CTRL-N* +CTRL-] tagsrch.txt /*CTRL-]* +CTRL-^ editing.txt /*CTRL-^* +CTRL-{char} intro.txt /*CTRL-{char}* +Chinese mbyte.txt /*Chinese* +Cmd-event autocmd.txt /*Cmd-event* +Cmdline cmdline.txt /*Cmdline* +Cmdline-mode cmdline.txt /*Cmdline-mode* +CmdwinEnter autocmd.txt /*CmdwinEnter* +CmdwinLeave autocmd.txt /*CmdwinLeave* +ColorScheme autocmd.txt /*ColorScheme* +Command-line cmdline.txt /*Command-line* +Command-line-mode cmdline.txt /*Command-line-mode* +CompleteDone autocmd.txt /*CompleteDone* +Contents quickref.txt /*Contents* +Cscope if_cscop.txt /*Cscope* +CursorHold autocmd.txt /*CursorHold* +CursorHold-example windows.txt /*CursorHold-example* +CursorHoldI autocmd.txt /*CursorHoldI* +CursorIM mbyte.txt /*CursorIM* +CursorMoved autocmd.txt /*CursorMoved* +CursorMovedI autocmd.txt /*CursorMovedI* +D change.txt /*D* +DOS os_dos.txt /*DOS* +DOS-format editing.txt /*DOS-format* +DOS-format-write editing.txt /*DOS-format-write* +DPMI os_msdos.txt /*DPMI* +Dictionaries eval.txt /*Dictionaries* +Dictionary eval.txt /*Dictionary* +Dictionary-function eval.txt /*Dictionary-function* +Digraphs digraph.txt /*Digraphs* +E motion.txt /*E* +E10 message.txt /*E10* +E100 diff.txt /*E100* +E101 diff.txt /*E101* +E102 diff.txt /*E102* +E103 diff.txt /*E103* +E104 digraph.txt /*E104* +E105 mbyte.txt /*E105* +E107 eval.txt /*E107* +E108 eval.txt /*E108* +E109 eval.txt /*E109* +E11 cmdline.txt /*E11* +E110 eval.txt /*E110* +E111 eval.txt /*E111* +E112 eval.txt /*E112* +E113 eval.txt /*E113* +E114 eval.txt /*E114* +E115 eval.txt /*E115* +E116 eval.txt /*E116* +E117 eval.txt /*E117* +E118 eval.txt /*E118* +E119 eval.txt /*E119* +E12 message.txt /*E12* +E120 eval.txt /*E120* +E121 eval.txt /*E121* +E122 eval.txt /*E122* +E123 eval.txt /*E123* +E124 eval.txt /*E124* +E125 eval.txt /*E125* +E126 eval.txt /*E126* +E127 eval.txt /*E127* +E128 eval.txt /*E128* +E129 eval.txt /*E129* +E13 message.txt /*E13* +E130 eval.txt /*E130* +E131 eval.txt /*E131* +E132 eval.txt /*E132* +E133 eval.txt /*E133* +E134 change.txt /*E134* +E135 autocmd.txt /*E135* +E136 starting.txt /*E136* +E137 starting.txt /*E137* +E138 starting.txt /*E138* +E139 message.txt /*E139* +E14 cmdline.txt /*E14* +E140 message.txt /*E140* +E141 message.txt /*E141* +E142 message.txt /*E142* +E143 autocmd.txt /*E143* +E144 various.txt /*E144* +E145 starting.txt /*E145* +E146 change.txt /*E146* +E147 repeat.txt /*E147* +E148 repeat.txt /*E148* +E149 helphelp.txt /*E149* +E15 eval.txt /*E15* +E150 helphelp.txt /*E150* +E151 helphelp.txt /*E151* +E152 helphelp.txt /*E152* +E153 helphelp.txt /*E153* +E154 helphelp.txt /*E154* +E155 sign.txt /*E155* +E156 sign.txt /*E156* +E157 sign.txt /*E157* +E158 sign.txt /*E158* +E159 sign.txt /*E159* +E16 cmdline.txt /*E16* +E160 sign.txt /*E160* +E161 repeat.txt /*E161* +E162 message.txt /*E162* +E163 editing.txt /*E163* +E164 editing.txt /*E164* +E165 editing.txt /*E165* +E166 message.txt /*E166* +E167 repeat.txt /*E167* +E168 repeat.txt /*E168* +E169 message.txt /*E169* +E17 message.txt /*E17* +E170 eval.txt /*E170* +E171 eval.txt /*E171* +E172 message.txt /*E172* +E173 message.txt /*E173* +E174 map.txt /*E174* +E175 map.txt /*E175* +E176 map.txt /*E176* +E177 map.txt /*E177* +E178 map.txt /*E178* +E179 map.txt /*E179* +E18 eval.txt /*E18* +E180 map.txt /*E180* +E181 map.txt /*E181* +E182 map.txt /*E182* +E183 map.txt /*E183* +E184 map.txt /*E184* +E185 syntax.txt /*E185* +E186 editing.txt /*E186* +E187 editing.txt /*E187* +E188 gui.txt /*E188* +E189 message.txt /*E189* +E19 message.txt /*E19* +E190 message.txt /*E190* +E191 motion.txt /*E191* +E192 message.txt /*E192* +E193 eval.txt /*E193* +E194 message.txt /*E194* +E195 starting.txt /*E195* +E196 various.txt /*E196* +E197 mlang.txt /*E197* +E198 options.txt /*E198* +E199 cmdline.txt /*E199* +E20 motion.txt /*E20* +E200 autocmd.txt /*E200* +E201 autocmd.txt /*E201* +E202 options.txt /*E202* +E203 autocmd.txt /*E203* +E204 autocmd.txt /*E204* +E205 if_pyth.txt /*E205* +E206 options.txt /*E206* +E207 editing.txt /*E207* +E208 message.txt /*E208* +E209 message.txt /*E209* +E21 options.txt /*E21* +E210 message.txt /*E210* +E211 message.txt /*E211* +E212 message.txt /*E212* +E213 options.txt /*E213* +E214 options.txt /*E214* +E215 autocmd.txt /*E215* +E216 autocmd.txt /*E216* +E217 autocmd.txt /*E217* +E218 autocmd.txt /*E218* +E219 message.txt /*E219* +E22 message.txt /*E22* +E220 message.txt /*E220* +E222 message.txt /*E222* +E223 options.txt /*E223* +E224 map.txt /*E224* +E225 map.txt /*E225* +E226 map.txt /*E226* +E227 map.txt /*E227* +E228 message.txt /*E228* +E229 gui.txt /*E229* +E23 message.txt /*E23* +E230 starting.txt /*E230* +E231 options.txt /*E231* +E232 message.txt /*E232* +E233 gui.txt /*E233* +E234 options.txt /*E234* +E235 options.txt /*E235* +E236 options.txt /*E236* +E237 print.txt /*E237* +E238 print.txt /*E238* +E239 sign.txt /*E239* +E24 message.txt /*E24* +E240 remote.txt /*E240* +E241 eval.txt /*E241* +E243 if_ole.txt /*E243* +E244 options.txt /*E244* +E245 options.txt /*E245* +E246 autocmd.txt /*E246* +E247 remote.txt /*E247* +E248 remote.txt /*E248* +E25 message.txt /*E25* +E250 options.txt /*E250* +E251 remote.txt /*E251* +E252 options.txt /*E252* +E253 mbyte.txt /*E253* +E254 message.txt /*E254* +E255 sign.txt /*E255* +E256 message.txt /*E256* +E257 if_cscop.txt /*E257* +E258 remote.txt /*E258* +E259 if_cscop.txt /*E259* +E26 rileft.txt /*E26* +E261 if_cscop.txt /*E261* +E262 if_cscop.txt /*E262* +E263 if_pyth.txt /*E263* +E264 if_pyth.txt /*E264* +E265 if_ruby.txt /*E265* +E266 if_ruby.txt /*E266* +E267 if_ruby.txt /*E267* +E268 if_ruby.txt /*E268* +E269 if_ruby.txt /*E269* +E27 farsi.txt /*E27* +E270 if_ruby.txt /*E270* +E271 if_ruby.txt /*E271* +E272 if_ruby.txt /*E272* +E273 if_ruby.txt /*E273* +E274 if_sniff.txt /*E274* +E275 if_sniff.txt /*E275* +E276 if_sniff.txt /*E276* +E277 remote.txt /*E277* +E278 if_sniff.txt /*E278* +E279 if_sniff.txt /*E279* +E28 syntax.txt /*E28* +E280 if_tcl.txt /*E280* +E281 if_tcl.txt /*E281* +E282 starting.txt /*E282* +E283 motion.txt /*E283* +E284 mbyte.txt /*E284* +E285 mbyte.txt /*E285* +E286 mbyte.txt /*E286* +E287 mbyte.txt /*E287* +E288 mbyte.txt /*E288* +E289 mbyte.txt /*E289* +E29 change.txt /*E29* +E293 message.txt /*E293* +E294 message.txt /*E294* +E295 message.txt /*E295* +E296 message.txt /*E296* +E297 message.txt /*E297* +E298 message.txt /*E298* +E299 if_perl.txt /*E299* +E30 change.txt /*E30* +E300 message.txt /*E300* +E301 message.txt /*E301* +E302 message.txt /*E302* +E303 message.txt /*E303* +E304 message.txt /*E304* +E305 recover.txt /*E305* +E306 recover.txt /*E306* +E307 recover.txt /*E307* +E308 recover.txt /*E308* +E309 recover.txt /*E309* +E31 message.txt /*E31* +E310 recover.txt /*E310* +E311 recover.txt /*E311* +E312 recover.txt /*E312* +E313 recover.txt /*E313* +E314 recover.txt /*E314* +E315 message.txt /*E315* +E316 message.txt /*E316* +E317 message.txt /*E317* +E318 message.txt /*E318* +E319 message.txt /*E319* +E32 message.txt /*E32* +E320 message.txt /*E320* +E321 editing.txt /*E321* +E322 message.txt /*E322* +E323 message.txt /*E323* +E324 print.txt /*E324* +E325 usr_11.txt /*E325* +E326 recover.txt /*E326* +E327 gui.txt /*E327* +E328 gui.txt /*E328* +E329 gui.txt /*E329* +E33 message.txt /*E33* +E330 gui.txt /*E330* +E331 gui.txt /*E331* +E332 gui.txt /*E332* +E333 gui.txt /*E333* +E334 gui.txt /*E334* +E335 gui.txt /*E335* +E336 gui.txt /*E336* +E337 gui.txt /*E337* +E338 editing.txt /*E338* +E339 message.txt /*E339* +E34 various.txt /*E34* +E340 vi_diff.txt /*E340* +E341 message.txt /*E341* +E342 message.txt /*E342* +E343 options.txt /*E343* +E344 options.txt /*E344* +E345 options.txt /*E345* +E346 options.txt /*E346* +E347 options.txt /*E347* +E348 pattern.txt /*E348* +E349 pattern.txt /*E349* +E35 message.txt /*E35* +E350 fold.txt /*E350* +E351 fold.txt /*E351* +E352 fold.txt /*E352* +E353 change.txt /*E353* +E354 change.txt /*E354* +E355 options.txt /*E355* +E356 message.txt /*E356* +E357 options.txt /*E357* +E358 options.txt /*E358* +E359 term.txt /*E359* +E36 windows.txt /*E36* +E360 various.txt /*E360* +E362 term.txt /*E362* +E363 options.txt /*E363* +E364 eval.txt /*E364* +E365 print.txt /*E365* +E367 autocmd.txt /*E367* +E368 eval.txt /*E368* +E369 pattern.txt /*E369* +E37 message.txt /*E37* +E370 various.txt /*E370* +E371 various.txt /*E371* +E372 quickfix.txt /*E372* +E373 quickfix.txt /*E373* +E374 quickfix.txt /*E374* +E375 quickfix.txt /*E375* +E376 quickfix.txt /*E376* +E377 quickfix.txt /*E377* +E378 quickfix.txt /*E378* +E379 quickfix.txt /*E379* +E38 message.txt /*E38* +E380 quickfix.txt /*E380* +E381 quickfix.txt /*E381* +E382 options.txt /*E382* +E383 pattern.txt /*E383* +E384 options.txt /*E384* +E385 options.txt /*E385* +E386 pattern.txt /*E386* +E387 tagsrch.txt /*E387* +E388 tagsrch.txt /*E388* +E389 tagsrch.txt /*E389* +E39 digraph.txt /*E39* +E390 syntax.txt /*E390* +E391 syntax.txt /*E391* +E392 syntax.txt /*E392* +E393 syntax.txt /*E393* +E394 syntax.txt /*E394* +E395 syntax.txt /*E395* +E397 syntax.txt /*E397* +E398 syntax.txt /*E398* +E399 syntax.txt /*E399* +E40 message.txt /*E40* +E400 syntax.txt /*E400* +E401 syntax.txt /*E401* +E402 syntax.txt /*E402* +E403 syntax.txt /*E403* +E404 syntax.txt /*E404* +E405 syntax.txt /*E405* +E406 syntax.txt /*E406* +E407 syntax.txt /*E407* +E408 syntax.txt /*E408* +E409 syntax.txt /*E409* +E41 message.txt /*E41* +E410 syntax.txt /*E410* +E411 syntax.txt /*E411* +E412 syntax.txt /*E412* +E413 syntax.txt /*E413* +E414 syntax.txt /*E414* +E415 syntax.txt /*E415* +E416 syntax.txt /*E416* +E417 syntax.txt /*E417* +E418 syntax.txt /*E418* +E419 syntax.txt /*E419* +E42 quickfix.txt /*E42* +E420 syntax.txt /*E420* +E421 syntax.txt /*E421* +E422 syntax.txt /*E422* +E423 syntax.txt /*E423* +E424 message.txt /*E424* +E425 tagsrch.txt /*E425* +E426 tagsrch.txt /*E426* +E427 tagsrch.txt /*E427* +E428 tagsrch.txt /*E428* +E429 tagsrch.txt /*E429* +E43 message.txt /*E43* +E430 tagsrch.txt /*E430* +E431 tagsrch.txt /*E431* +E432 message.txt /*E432* +E433 options.txt /*E433* +E434 tagsrch.txt /*E434* +E435 tagsrch.txt /*E435* +E436 term.txt /*E436* +E437 term.txt /*E437* +E438 message.txt /*E438* +E439 message.txt /*E439* +E44 message.txt /*E44* +E440 message.txt /*E440* +E441 windows.txt /*E441* +E442 windows.txt /*E442* +E443 windows.txt /*E443* +E444 windows.txt /*E444* +E445 windows.txt /*E445* +E446 editing.txt /*E446* +E447 editing.txt /*E447* +E448 various.txt /*E448* +E449 eval.txt /*E449* +E45 message.txt /*E45* +E450 os_msdos.txt /*E450* +E451 os_msdos.txt /*E451* +E452 os_msdos.txt /*E452* +E453 os_msdos.txt /*E453* +E454 os_msdos.txt /*E454* +E455 print.txt /*E455* +E456 print.txt /*E456* +E457 print.txt /*E457* +E458 message.txt /*E458* +E459 message.txt /*E459* +E46 message.txt /*E46* +E460 message.txt /*E460* +E461 eval.txt /*E461* +E462 editing.txt /*E462* +E463 netbeans.txt /*E463* +E464 message.txt /*E464* +E465 gui.txt /*E465* +E466 gui.txt /*E466* +E467 map.txt /*E467* +E468 map.txt /*E468* +E469 if_cscop.txt /*E469* +E47 message.txt /*E47* +E470 change.txt /*E470* +E471 message.txt /*E471* +E472 editing.txt /*E472* +E473 message.txt /*E473* +E474 message.txt /*E474* +E475 message.txt /*E475* +E476 pattern.txt /*E476* +E477 message.txt /*E477* +E478 message.txt /*E478* +E479 editing.txt /*E479* +E48 eval.txt /*E48* +E480 editing.txt /*E480* +E481 message.txt /*E481* +E482 message.txt /*E482* +E483 message.txt /*E483* +E484 message.txt /*E484* +E485 message.txt /*E485* +E486 pattern.txt /*E486* +E487 options.txt /*E487* +E488 message.txt /*E488* +E49 message.txt /*E49* +E490 fold.txt /*E490* +E492 message.txt /*E492* +E493 cmdline.txt /*E493* +E494 editing.txt /*E494* +E495 cmdline.txt /*E495* +E496 cmdline.txt /*E496* +E497 cmdline.txt /*E497* +E498 cmdline.txt /*E498* +E499 cmdline.txt /*E499* +E50 syntax.txt /*E50* +E500 cmdline.txt /*E500* +E501 intro.txt /*E501* +E502 editing.txt /*E502* +E503 editing.txt /*E503* +E504 editing.txt /*E504* +E505 editing.txt /*E505* +E506 editing.txt /*E506* +E507 editing.txt /*E507* +E508 editing.txt /*E508* +E509 editing.txt /*E509* +E51 pattern.txt /*E51* +E510 editing.txt /*E510* +E511 netbeans.txt /*E511* +E512 editing.txt /*E512* +E513 options.txt /*E513* +E514 editing.txt /*E514* +E515 windows.txt /*E515* +E516 windows.txt /*E516* +E517 windows.txt /*E517* +E518 options.txt /*E518* +E519 options.txt /*E519* +E52 syntax.txt /*E52* +E520 options.txt /*E520* +E521 options.txt /*E521* +E522 options.txt /*E522* +E523 options.txt /*E523* +E524 options.txt /*E524* +E525 options.txt /*E525* +E526 options.txt /*E526* +E527 options.txt /*E527* +E528 options.txt /*E528* +E529 options.txt /*E529* +E53 pattern.txt /*E53* +E530 options.txt /*E530* +E531 options.txt /*E531* +E532 netbeans.txt /*E532* +E533 options.txt /*E533* +E534 options.txt /*E534* +E535 options.txt /*E535* +E536 options.txt /*E536* +E537 options.txt /*E537* +E538 options.txt /*E538* +E539 options.txt /*E539* +E54 pattern.txt /*E54* +E540 options.txt /*E540* +E541 options.txt /*E541* +E542 options.txt /*E542* +E543 options.txt /*E543* +E544 options.txt /*E544* +E545 options.txt /*E545* +E546 options.txt /*E546* +E547 options.txt /*E547* +E548 options.txt /*E548* +E549 options.txt /*E549* +E55 pattern.txt /*E55* +E550 options.txt /*E550* +E551 options.txt /*E551* +E552 options.txt /*E552* +E553 quickfix.txt /*E553* +E554 pattern.txt /*E554* +E555 tagsrch.txt /*E555* +E556 tagsrch.txt /*E556* +E557 term.txt /*E557* +E558 term.txt /*E558* +E559 term.txt /*E559* +E56 pattern.txt /*E56* +E560 if_cscop.txt /*E560* +E561 if_cscop.txt /*E561* +E562 if_cscop.txt /*E562* +E563 if_cscop.txt /*E563* +E564 if_cscop.txt /*E564* +E566 if_cscop.txt /*E566* +E567 if_cscop.txt /*E567* +E568 if_cscop.txt /*E568* +E569 if_cscop.txt /*E569* +E57 pattern.txt /*E57* +E570 message.txt /*E570* +E571 if_tcl.txt /*E571* +E572 if_tcl.txt /*E572* +E573 remote.txt /*E573* +E574 starting.txt /*E574* +E575 starting.txt /*E575* +E576 starting.txt /*E576* +E577 starting.txt /*E577* +E578 editing.txt /*E578* +E579 eval.txt /*E579* +E58 pattern.txt /*E58* +E580 eval.txt /*E580* +E581 eval.txt /*E581* +E582 eval.txt /*E582* +E583 eval.txt /*E583* +E584 eval.txt /*E584* +E585 eval.txt /*E585* +E586 eval.txt /*E586* +E587 eval.txt /*E587* +E588 eval.txt /*E588* +E589 options.txt /*E589* +E59 pattern.txt /*E59* +E590 options.txt /*E590* +E591 options.txt /*E591* +E592 options.txt /*E592* +E593 options.txt /*E593* +E594 options.txt /*E594* +E595 options.txt /*E595* +E596 options.txt /*E596* +E597 options.txt /*E597* +E598 options.txt /*E598* +E599 options.txt /*E599* +E60 pattern.txt /*E60* +E600 eval.txt /*E600* +E601 eval.txt /*E601* +E602 eval.txt /*E602* +E603 eval.txt /*E603* +E604 eval.txt /*E604* +E605 eval.txt /*E605* +E606 eval.txt /*E606* +E607 eval.txt /*E607* +E608 eval.txt /*E608* +E609 if_cscop.txt /*E609* +E61 pattern.txt /*E61* +E612 sign.txt /*E612* +E613 print.txt /*E613* +E614 editing.txt /*E614* +E615 editing.txt /*E615* +E616 editing.txt /*E616* +E617 options.txt /*E617* +E618 print.txt /*E618* +E619 print.txt /*E619* +E62 pattern.txt /*E62* +E620 print.txt /*E620* +E621 print.txt /*E621* +E622 if_cscop.txt /*E622* +E623 if_cscop.txt /*E623* +E624 print.txt /*E624* +E625 if_cscop.txt /*E625* +E626 if_cscop.txt /*E626* +E627 netbeans.txt /*E627* +E628 netbeans.txt /*E628* +E629 netbeans.txt /*E629* +E63 pattern.txt /*E63* +E630 netbeans.txt /*E630* +E631 netbeans.txt /*E631* +E632 netbeans.txt /*E632* +E633 netbeans.txt /*E633* +E634 netbeans.txt /*E634* +E635 netbeans.txt /*E635* +E636 netbeans.txt /*E636* +E637 netbeans.txt /*E637* +E638 netbeans.txt /*E638* +E639 netbeans.txt /*E639* +E64 pattern.txt /*E64* +E640 netbeans.txt /*E640* +E641 netbeans.txt /*E641* +E642 netbeans.txt /*E642* +E643 netbeans.txt /*E643* +E644 netbeans.txt /*E644* +E645 netbeans.txt /*E645* +E646 netbeans.txt /*E646* +E647 netbeans.txt /*E647* +E648 netbeans.txt /*E648* +E649 netbeans.txt /*E649* +E65 pattern.txt /*E65* +E650 netbeans.txt /*E650* +E651 netbeans.txt /*E651* +E652 netbeans.txt /*E652* +E653 netbeans.txt /*E653* +E654 netbeans.txt /*E654* +E655 eval.txt /*E655* +E656 netbeans.txt /*E656* +E657 netbeans.txt /*E657* +E658 netbeans.txt /*E658* +E659 if_pyth.txt /*E659* +E66 syntax.txt /*E66* +E660 netbeans.txt /*E660* +E661 helphelp.txt /*E661* +E662 motion.txt /*E662* +E663 motion.txt /*E663* +E664 motion.txt /*E664* +E665 gui_x11.txt /*E665* +E666 quickfix.txt /*E666* +E667 editing.txt /*E667* +E668 netbeans.txt /*E668* +E669 syntax.txt /*E669* +E67 syntax.txt /*E67* +E670 helphelp.txt /*E670* +E671 starting.txt /*E671* +E672 starting.txt /*E672* +E673 print.txt /*E673* +E674 print.txt /*E674* +E675 print.txt /*E675* +E676 options.txt /*E676* +E677 eval.txt /*E677* +E678 pattern.txt /*E678* +E679 syntax.txt /*E679* +E68 pattern.txt /*E68* +E680 autocmd.txt /*E680* +E681 quickfix.txt /*E681* +E682 quickfix.txt /*E682* +E683 quickfix.txt /*E683* +E684 eval.txt /*E684* +E685 message.txt /*E685* +E686 eval.txt /*E686* +E687 eval.txt /*E687* +E688 eval.txt /*E688* +E689 eval.txt /*E689* +E69 pattern.txt /*E69* +E690 eval.txt /*E690* +E691 eval.txt /*E691* +E692 eval.txt /*E692* +E693 eval.txt /*E693* +E694 eval.txt /*E694* +E695 eval.txt /*E695* +E696 eval.txt /*E696* +E697 eval.txt /*E697* +E698 eval.txt /*E698* +E699 eval.txt /*E699* +E70 pattern.txt /*E70* +E700 eval.txt /*E700* +E701 eval.txt /*E701* +E702 eval.txt /*E702* +E703 eval.txt /*E703* +E704 eval.txt /*E704* +E705 eval.txt /*E705* +E706 eval.txt /*E706* +E707 eval.txt /*E707* +E708 eval.txt /*E708* +E709 eval.txt /*E709* +E71 pattern.txt /*E71* +E710 eval.txt /*E710* +E711 eval.txt /*E711* +E712 eval.txt /*E712* +E713 eval.txt /*E713* +E714 eval.txt /*E714* +E715 eval.txt /*E715* +E716 eval.txt /*E716* +E717 eval.txt /*E717* +E718 eval.txt /*E718* +E719 eval.txt /*E719* +E72 message.txt /*E72* +E720 eval.txt /*E720* +E721 eval.txt /*E721* +E722 eval.txt /*E722* +E723 eval.txt /*E723* +E724 eval.txt /*E724* +E725 eval.txt /*E725* +E726 eval.txt /*E726* +E727 eval.txt /*E727* +E728 eval.txt /*E728* +E729 eval.txt /*E729* +E73 tagsrch.txt /*E73* +E730 eval.txt /*E730* +E731 eval.txt /*E731* +E732 eval.txt /*E732* +E733 eval.txt /*E733* +E734 eval.txt /*E734* +E735 eval.txt /*E735* +E736 eval.txt /*E736* +E737 eval.txt /*E737* +E738 eval.txt /*E738* +E739 eval.txt /*E739* +E74 message.txt /*E74* +E740 eval.txt /*E740* +E741 eval.txt /*E741* +E742 eval.txt /*E742* +E743 eval.txt /*E743* +E744 netbeans.txt /*E744* +E745 eval.txt /*E745* +E746 eval.txt /*E746* +E747 editing.txt /*E747* +E748 repeat.txt /*E748* +E749 various.txt /*E749* +E75 vi_diff.txt /*E75* +E750 repeat.txt /*E750* +E751 spell.txt /*E751* +E752 spell.txt /*E752* +E753 spell.txt /*E753* +E754 spell.txt /*E754* +E755 spell.txt /*E755* +E756 spell.txt /*E756* +E757 options.txt /*E757* +E758 spell.txt /*E758* +E759 spell.txt /*E759* +E76 pattern.txt /*E76* +E760 spell.txt /*E760* +E761 spell.txt /*E761* +E762 spell.txt /*E762* +E763 spell.txt /*E763* +E764 options.txt /*E764* +E765 options.txt /*E765* +E766 eval.txt /*E766* +E767 eval.txt /*E767* +E768 message.txt /*E768* +E769 pattern.txt /*E769* +E77 message.txt /*E77* +E770 spell.txt /*E770* +E771 spell.txt /*E771* +E772 spell.txt /*E772* +E773 recover.txt /*E773* +E774 map.txt /*E774* +E775 map.txt /*E775* +E776 quickfix.txt /*E776* +E777 quickfix.txt /*E777* +E778 spell.txt /*E778* +E779 spell.txt /*E779* +E78 motion.txt /*E78* +E780 spell.txt /*E780* +E781 spell.txt /*E781* +E782 spell.txt /*E782* +E783 spell.txt /*E783* +E784 tabpage.txt /*E784* +E785 eval.txt /*E785* +E786 eval.txt /*E786* +E787 diff.txt /*E787* +E788 autocmd.txt /*E788* +E789 syntax.txt /*E789* +E79 message.txt /*E79* +E790 undo.txt /*E790* +E791 mbyte.txt /*E791* +E792 gui.txt /*E792* +E793 diff.txt /*E793* +E794 eval.txt /*E794* +E795 eval.txt /*E795* +E796 editing.txt /*E796* +E797 spell.txt /*E797* +E798 eval.txt /*E798* +E799 eval.txt /*E799* +E80 message.txt /*E80* +E800 arabic.txt /*E800* +E801 eval.txt /*E801* +E802 eval.txt /*E802* +E803 eval.txt /*E803* +E804 eval.txt /*E804* +E805 eval.txt /*E805* +E806 eval.txt /*E806* +E807 eval.txt /*E807* +E808 eval.txt /*E808* +E809 cmdline.txt /*E809* +E81 map.txt /*E81* +E810 diff.txt /*E810* +E811 autocmd.txt /*E811* +E812 autocmd.txt /*E812* +E813 editing.txt /*E813* +E814 editing.txt /*E814* +E815 if_mzsch.txt /*E815* +E816 diff.txt /*E816* +E817 editing.txt /*E817* +E818 editing.txt /*E818* +E819 editing.txt /*E819* +E82 message.txt /*E82* +E820 editing.txt /*E820* +E821 options.txt /*E821* +E822 undo.txt /*E822* +E823 undo.txt /*E823* +E824 undo.txt /*E824* +E825 undo.txt /*E825* +E826 undo.txt /*E826* +E827 undo.txt /*E827* +E828 undo.txt /*E828* +E829 undo.txt /*E829* +E83 message.txt /*E83* +E830 undo.txt /*E830* +E831 editing.txt /*E831* +E832 undo.txt /*E832* +E833 editing.txt /*E833* +E834 options.txt /*E834* +E835 options.txt /*E835* +E836 if_pyth.txt /*E836* +E837 if_pyth.txt /*E837* +E838 netbeans.txt /*E838* +E839 insert.txt /*E839* +E84 windows.txt /*E84* +E840 insert.txt /*E840* +E841 map.txt /*E841* +E842 cmdline.txt /*E842* +E843 editing.txt /*E843* +E844 syntax.txt /*E844* +E845 spell.txt /*E845* +E846 options.txt /*E846* +E847 syntax.txt /*E847* +E848 syntax.txt /*E848* +E849 syntax.txt /*E849* +E85 options.txt /*E85* +E850 change.txt /*E850* +E851 gui_x11.txt /*E851* +E852 gui_x11.txt /*E852* +E853 eval.txt /*E853* +E854 options.txt /*E854* +E855 autocmd.txt /*E855* +E858 eval.txt /*E858* +E859 eval.txt /*E859* +E86 windows.txt /*E86* +E860 eval.txt /*E860* +E862 eval.txt /*E862* +E863 if_pyth.txt /*E863* +E864 pattern.txt /*E864* +E865 pattern.txt /*E865* +E866 pattern.txt /*E866* +E867 pattern.txt /*E867* +E868 pattern.txt /*E868* +E869 pattern.txt /*E869* +E87 windows.txt /*E87* +E870 pattern.txt /*E870* +E871 pattern.txt /*E871* +E872 pattern.txt /*E872* +E873 pattern.txt /*E873* +E874 pattern.txt /*E874* +E875 pattern.txt /*E875* +E876 pattern.txt /*E876* +E877 pattern.txt /*E877* +E878 pattern.txt /*E878* +E879 syntax.txt /*E879* +E88 windows.txt /*E88* +E880 if_pyth.txt /*E880* +E89 message.txt /*E89* +E90 message.txt /*E90* +E91 options.txt /*E91* +E92 message.txt /*E92* +E93 windows.txt /*E93* +E94 windows.txt /*E94* +E95 message.txt /*E95* +E96 diff.txt /*E96* +E97 diff.txt /*E97* +E98 diff.txt /*E98* +E99 diff.txt /*E99* +EX intro.txt /*EX* +EXINIT starting.txt /*EXINIT* +Elvis intro.txt /*Elvis* +EncodingChanged autocmd.txt /*EncodingChanged* +Eterm syntax.txt /*Eterm* +Ex intro.txt /*Ex* +Ex-mode intro.txt /*Ex-mode* +Exuberant_ctags tagsrch.txt /*Exuberant_ctags* +F motion.txt /*F* +FAQ intro.txt /*FAQ* +Farsi farsi.txt /*Farsi* +FileAppendCmd autocmd.txt /*FileAppendCmd* +FileAppendPost autocmd.txt /*FileAppendPost* +FileAppendPre autocmd.txt /*FileAppendPre* +FileChangedRO autocmd.txt /*FileChangedRO* +FileChangedShell autocmd.txt /*FileChangedShell* +FileChangedShellPost autocmd.txt /*FileChangedShellPost* +FileEncoding autocmd.txt /*FileEncoding* +FileReadCmd autocmd.txt /*FileReadCmd* +FileReadPost autocmd.txt /*FileReadPost* +FileReadPre autocmd.txt /*FileReadPre* +FileType autocmd.txt /*FileType* +FileWriteCmd autocmd.txt /*FileWriteCmd* +FileWritePost autocmd.txt /*FileWritePost* +FileWritePre autocmd.txt /*FileWritePre* +FilterReadPost autocmd.txt /*FilterReadPost* +FilterReadPre autocmd.txt /*FilterReadPre* +FilterWritePost autocmd.txt /*FilterWritePost* +FilterWritePre autocmd.txt /*FilterWritePre* +Float eval.txt /*Float* +FocusGained autocmd.txt /*FocusGained* +FocusLost autocmd.txt /*FocusLost* +Folding fold.txt /*Folding* +FuncUndefined autocmd.txt /*FuncUndefined* +Funcref eval.txt /*Funcref* +G motion.txt /*G* +GNOME gui_x11.txt /*GNOME* +GTK gui_x11.txt /*GTK* +GTK+ gui_x11.txt /*GTK+* +GUI gui.txt /*GUI* +GUI-X11 gui_x11.txt /*GUI-X11* +GUIEnter autocmd.txt /*GUIEnter* +GUIFailed autocmd.txt /*GUIFailed* +GetLatestVimScripts pi_getscript.txt /*GetLatestVimScripts* +GetLatestVimScripts-copyright pi_getscript.txt /*GetLatestVimScripts-copyright* +GetLatestVimScripts_dat pi_getscript.txt /*GetLatestVimScripts_dat* +Gnome gui_x11.txt /*Gnome* +H motion.txt /*H* +I insert.txt /*I* +ICCF uganda.txt /*ICCF* +IM-server mbyte.txt /*IM-server* +IME mbyte.txt /*IME* +Insert insert.txt /*Insert* +Insert-mode insert.txt /*Insert-mode* +InsertChange autocmd.txt /*InsertChange* +InsertCharPre autocmd.txt /*InsertCharPre* +InsertEnter autocmd.txt /*InsertEnter* +InsertLeave autocmd.txt /*InsertLeave* +J change.txt /*J* +Japanese mbyte.txt /*Japanese* +K various.txt /*K* +KDE gui_x11.txt /*KDE* +KVim gui_x11.txt /*KVim* +Kibaale uganda.txt /*Kibaale* +Korean mbyte.txt /*Korean* +L motion.txt /*L* +Linux-backspace options.txt /*Linux-backspace* +List eval.txt /*List* +Lists eval.txt /*Lists* +Lua if_lua.txt /*Lua* +M motion.txt /*M* +MDI starting.txt /*MDI* +MS-DOS os_msdos.txt /*MS-DOS* +MS-Windows os_win32.txt /*MS-Windows* +MSDOS os_msdos.txt /*MSDOS* +MSVisualStudio if_ole.txt /*MSVisualStudio* +MVS os_390.txt /*MVS* +Mac os_mac.txt /*Mac* +Mac-format editing.txt /*Mac-format* +Mac-format-write editing.txt /*Mac-format-write* +Macintosh os_mac.txt /*Macintosh* +Mark motion.txt /*Mark* +MenuPopup autocmd.txt /*MenuPopup* +MiNT os_mint.txt /*MiNT* +Moolenaar intro.txt /*Moolenaar* +MorphOS os_amiga.txt /*MorphOS* +Motif gui_x11.txt /*Motif* +Myspell spell.txt /*Myspell* +MzScheme if_mzsch.txt /*MzScheme* +N pattern.txt /*N* +N% motion.txt /*N%* +N: cmdline.txt /*N:* +N<Del> various.txt /*N<Del>* +NFA pattern.txt /*NFA* +NL-used-for-Nul pattern.txt /*NL-used-for-Nul* +NetBSD-backspace options.txt /*NetBSD-backspace* +NetUserPass() pi_netrw.txt /*NetUserPass()* +Normal intro.txt /*Normal* +Normal-mode intro.txt /*Normal-mode* +Number eval.txt /*Number* +Nvi intro.txt /*Nvi* +O insert.txt /*O* +OS/2 os_os2.txt /*OS\/2* +OS2 os_os2.txt /*OS2* +OS390 os_390.txt /*OS390* +OS390-Motif os_390.txt /*OS390-Motif* +OS390-PuTTY os_390.txt /*OS390-PuTTY* +OS390-bugs os_390.txt /*OS390-bugs* +OS390-has-ebcdic os_390.txt /*OS390-has-ebcdic* +OS390-limitations os_390.txt /*OS390-limitations* +OS390-open-source os_390.txt /*OS390-open-source* +OffTheSpot mbyte.txt /*OffTheSpot* +OnTheSpot mbyte.txt /*OnTheSpot* +Operator-pending intro.txt /*Operator-pending* +Operator-pending-mode intro.txt /*Operator-pending-mode* +OverTheSpot mbyte.txt /*OverTheSpot* +P change.txt /*P* +PATHEXT eval.txt /*PATHEXT* +Pattern pattern.txt /*Pattern* +Perl if_perl.txt /*Perl* +Posix intro.txt /*Posix* +Python if_pyth.txt /*Python* +Q intro.txt /*Q* +Q-command-changed version5.txt /*Q-command-changed* +QNX os_qnx.txt /*QNX* +Q_ab quickref.txt /*Q_ab* +Q_ac quickref.txt /*Q_ac* +Q_ai quickref.txt /*Q_ai* +Q_bu quickref.txt /*Q_bu* +Q_ce quickref.txt /*Q_ce* +Q_ch quickref.txt /*Q_ch* +Q_cm quickref.txt /*Q_cm* +Q_co quickref.txt /*Q_co* +Q_ct help.txt /*Q_ct* +Q_de quickref.txt /*Q_de* +Q_di quickref.txt /*Q_di* +Q_ed quickref.txt /*Q_ed* +Q_et quickref.txt /*Q_et* +Q_ex quickref.txt /*Q_ex* +Q_fl quickref.txt /*Q_fl* +Q_fo quickref.txt /*Q_fo* +Q_gu quickref.txt /*Q_gu* +Q_in quickref.txt /*Q_in* +Q_km quickref.txt /*Q_km* +Q_lr quickref.txt /*Q_lr* +Q_ma quickref.txt /*Q_ma* +Q_op quickref.txt /*Q_op* +Q_pa quickref.txt /*Q_pa* +Q_qf quickref.txt /*Q_qf* +Q_ra quickref.txt /*Q_ra* +Q_re quickref.txt /*Q_re* +Q_sc quickref.txt /*Q_sc* +Q_si quickref.txt /*Q_si* +Q_ss quickref.txt /*Q_ss* +Q_st quickref.txt /*Q_st* +Q_sy quickref.txt /*Q_sy* +Q_ta quickref.txt /*Q_ta* +Q_tm quickref.txt /*Q_tm* +Q_to quickref.txt /*Q_to* +Q_ud quickref.txt /*Q_ud* +Q_ur quickref.txt /*Q_ur* +Q_vc quickref.txt /*Q_vc* +Q_vi quickref.txt /*Q_vi* +Q_vm quickref.txt /*Q_vm* +Q_wi quickref.txt /*Q_wi* +Q_wq quickref.txt /*Q_wq* +QuickFixCmdPost autocmd.txt /*QuickFixCmdPost* +QuickFixCmdPost-example quickfix.txt /*QuickFixCmdPost-example* +QuickFixCmdPre autocmd.txt /*QuickFixCmdPre* +Quickfix quickfix.txt /*Quickfix* +QuitPre autocmd.txt /*QuitPre* +R change.txt /*R* +RISC-OS os_risc.txt /*RISC-OS* +RISCOS os_risc.txt /*RISCOS* +RemoteReply autocmd.txt /*RemoteReply* +Replace insert.txt /*Replace* +Replace-mode insert.txt /*Replace-mode* +Root mbyte.txt /*Root* +Ruby if_ruby.txt /*Ruby* +Russian russian.txt /*Russian* +S change.txt /*S* +SHELL starting.txt /*SHELL* +SQLGetType ft_sql.txt /*SQLGetType* +SQLSetType ft_sql.txt /*SQLSetType* +Select visual.txt /*Select* +Select-mode visual.txt /*Select-mode* +Select-mode-mapping visual.txt /*Select-mode-mapping* +Session starting.txt /*Session* +SessionLoad-variable starting.txt /*SessionLoad-variable* +SessionLoadPost autocmd.txt /*SessionLoadPost* +ShellCmdPost autocmd.txt /*ShellCmdPost* +ShellFilterPost autocmd.txt /*ShellFilterPost* +SourceCmd autocmd.txt /*SourceCmd* +SourcePre autocmd.txt /*SourcePre* +SpellFileMissing autocmd.txt /*SpellFileMissing* +StdinReadPost autocmd.txt /*StdinReadPost* +StdinReadPre autocmd.txt /*StdinReadPre* +SwapExists autocmd.txt /*SwapExists* +Syntax autocmd.txt /*Syntax* +T motion.txt /*T* +TCL if_tcl.txt /*TCL* +TERM starting.txt /*TERM* +TOhtml-encoding syntax.txt /*TOhtml-encoding* +TOhtml-encoding-detect syntax.txt /*TOhtml-encoding-detect* +TOhtml-performance syntax.txt /*TOhtml-performance* +TOhtml-uncopyable-text syntax.txt /*TOhtml-uncopyable-text* +TOhtml-wrap-text syntax.txt /*TOhtml-wrap-text* +TSQL ft_sql.txt /*TSQL* +TTpro-telnet syntax.txt /*TTpro-telnet* +Tab intro.txt /*Tab* +TabEnter autocmd.txt /*TabEnter* +TabLeave autocmd.txt /*TabLeave* +Tcl if_tcl.txt /*Tcl* +TermChanged autocmd.txt /*TermChanged* +TermResponse autocmd.txt /*TermResponse* +TextChanged autocmd.txt /*TextChanged* +TextChangedI autocmd.txt /*TextChangedI* +Transact-SQL ft_sql.txt /*Transact-SQL* +U undo.txt /*U* +UTF-8 mbyte.txt /*UTF-8* +UTF8-xterm mbyte.txt /*UTF8-xterm* +Uganda uganda.txt /*Uganda* +Unicode mbyte.txt /*Unicode* +Unix os_unix.txt /*Unix* +Unix-format editing.txt /*Unix-format* +Unix-format-write editing.txt /*Unix-format-write* +User autocmd.txt /*User* +UserGettingBored autocmd.txt /*UserGettingBored* +V visual.txt /*V* +VIMINIT starting.txt /*VIMINIT* +VMS os_vms.txt /*VMS* +Vi intro.txt /*Vi* +View starting.txt /*View* +VimEnter autocmd.txt /*VimEnter* +VimLeave autocmd.txt /*VimLeave* +VimLeavePre autocmd.txt /*VimLeavePre* +VimResized autocmd.txt /*VimResized* +Vimball-copyright pi_vimball.txt /*Vimball-copyright* +Virtual-Replace-mode insert.txt /*Virtual-Replace-mode* +VisVim if_ole.txt /*VisVim* +Visual visual.txt /*Visual* +Visual-mode visual.txt /*Visual-mode* +W motion.txt /*W* +W10 message.txt /*W10* +W11 message.txt /*W11* +W12 message.txt /*W12* +W13 message.txt /*W13* +W14 message.txt /*W14* +W15 repeat.txt /*W15* +W16 message.txt /*W16* +W17 arabic.txt /*W17* +W18 syntax.txt /*W18* +WORD motion.txt /*WORD* +WWW intro.txt /*WWW* +Win32 os_win32.txt /*Win32* +WinEnter autocmd.txt /*WinEnter* +WinLeave autocmd.txt /*WinLeave* +X change.txt /*X* +X11 options.txt /*X11* +X11-icon gui_x11.txt /*X11-icon* +X11_mouse_shapes gui_x11.txt /*X11_mouse_shapes* +X1Drag term.txt /*X1Drag* +X1Mouse term.txt /*X1Mouse* +X1Release term.txt /*X1Release* +X2Drag term.txt /*X2Drag* +X2Mouse term.txt /*X2Mouse* +X2Release term.txt /*X2Release* +XIM mbyte.txt /*XIM* +XLFD mbyte.txt /*XLFD* +Y change.txt /*Y* +Y2K intro.txt /*Y2K* +ZQ editing.txt /*ZQ* +ZZ editing.txt /*ZZ* +[ index.txt /*[* +[# motion.txt /*[#* +[' motion.txt /*['* +[( motion.txt /*[(* +[++opt] editing.txt /*[++opt]* +[+cmd] editing.txt /*[+cmd]* +[..] pattern.txt /*[..]* +[/ motion.txt /*[\/* +[:alnum:] pattern.txt /*[:alnum:]* +[:alpha:] pattern.txt /*[:alpha:]* +[:backspace:] pattern.txt /*[:backspace:]* +[:blank:] pattern.txt /*[:blank:]* +[:cntrl:] pattern.txt /*[:cntrl:]* +[:digit:] pattern.txt /*[:digit:]* +[:escape:] pattern.txt /*[:escape:]* +[:graph:] pattern.txt /*[:graph:]* +[:lower:] pattern.txt /*[:lower:]* +[:print:] pattern.txt /*[:print:]* +[:punct:] pattern.txt /*[:punct:]* +[:return:] pattern.txt /*[:return:]* +[:space:] pattern.txt /*[:space:]* +[:tab:] pattern.txt /*[:tab:]* +[:upper:] pattern.txt /*[:upper:]* +[:xdigit:] pattern.txt /*[:xdigit:]* +[<MiddleMouse> change.txt /*[<MiddleMouse>* +[==] pattern.txt /*[==]* +[D tagsrch.txt /*[D* +[I tagsrch.txt /*[I* +[M motion.txt /*[M* +[P change.txt /*[P* +[S spell.txt /*[S* +[[ motion.txt /*[[* +[] motion.txt /*[]* +[_CTRL-D tagsrch.txt /*[_CTRL-D* +[_CTRL-I tagsrch.txt /*[_CTRL-I* +[` motion.txt /*[`* +[c diff.txt /*[c* +[count] intro.txt /*[count]* +[d tagsrch.txt /*[d* +[f editing.txt /*[f* +[i tagsrch.txt /*[i* +[m motion.txt /*[m* +[p change.txt /*[p* +[pattern] pattern.txt /*[pattern]* +[quotex] intro.txt /*[quotex]* +[range] cmdline.txt /*[range]* +[s spell.txt /*[s* +[star motion.txt /*[star* +[z fold.txt /*[z* +[{ motion.txt /*[{* +\0 change.txt /*\\0* +] index.txt /*]* +]# motion.txt /*]#* +]' motion.txt /*]'* +]) motion.txt /*])* +]/ motion.txt /*]\/* +]<MiddleMouse> change.txt /*]<MiddleMouse>* +]D tagsrch.txt /*]D* +]I tagsrch.txt /*]I* +]M motion.txt /*]M* +]P change.txt /*]P* +]S spell.txt /*]S* +][ motion.txt /*][* +]] motion.txt /*]]* +]_CTRL-D tagsrch.txt /*]_CTRL-D* +]_CTRL-I tagsrch.txt /*]_CTRL-I* +]` motion.txt /*]`* +]c diff.txt /*]c* +]d tagsrch.txt /*]d* +]f editing.txt /*]f* +]i tagsrch.txt /*]i* +]m motion.txt /*]m* +]p change.txt /*]p* +]s spell.txt /*]s* +]star motion.txt /*]star* +]z fold.txt /*]z* +]} motion.txt /*]}* +^ motion.txt /*^* +_ motion.txt /*_* +_exrc starting.txt /*_exrc* +_gvimrc gui.txt /*_gvimrc* +_vimrc starting.txt /*_vimrc* +` motion.txt /*`* +`( motion.txt /*`(* +`) motion.txt /*`)* +`-expansion editing.txt /*`-expansion* +`. motion.txt /*`.* +`0 motion.txt /*`0* +`< motion.txt /*`<* +`= editing.txt /*`=* +`> motion.txt /*`>* +`A motion.txt /*`A* +`[ motion.txt /*`[* +`] motion.txt /*`]* +`^ motion.txt /*`^* +`` motion.txt /*``* +`a motion.txt /*`a* +`quote motion.txt /*`quote* +`{ motion.txt /*`{* +`} motion.txt /*`}* +a insert.txt /*a* +a' motion.txt /*a'* +a( motion.txt /*a(* +a) motion.txt /*a)* +a4 print.txt /*a4* +a:0 eval.txt /*a:0* +a:000 eval.txt /*a:000* +a:1 eval.txt /*a:1* +a:firstline eval.txt /*a:firstline* +a:lastline eval.txt /*a:lastline* +a:var eval.txt /*a:var* +a< motion.txt /*a<* +a> motion.txt /*a>* +aB motion.txt /*aB* +aW motion.txt /*aW* +a[ motion.txt /*a[* +a] motion.txt /*a]* +a` motion.txt /*a`* +ab motion.txt /*ab* +abandon editing.txt /*abandon* +abbreviations map.txt /*abbreviations* +abel.vim syntax.txt /*abel.vim* +abs() eval.txt /*abs()* +acos() eval.txt /*acos()* +active-buffer windows.txt /*active-buffer* +ada#Create_Tags() ft_ada.txt /*ada#Create_Tags()* +ada#Jump_Tag() ft_ada.txt /*ada#Jump_Tag()* +ada#Listtags() ft_ada.txt /*ada#Listtags()* +ada#Switch_Syntax_Option() ft_ada.txt /*ada#Switch_Syntax_Option()* +ada#Word() ft_ada.txt /*ada#Word()* +ada-compiler ft_ada.txt /*ada-compiler* +ada-ctags ft_ada.txt /*ada-ctags* +ada-extra-plugins ft_ada.txt /*ada-extra-plugins* +ada-reference ft_ada.txt /*ada-reference* +ada.vim ft_ada.txt /*ada.vim* +add() eval.txt /*add()* +add-filetype-plugin usr_05.txt /*add-filetype-plugin* +add-global-plugin usr_05.txt /*add-global-plugin* +add-local-help usr_05.txt /*add-local-help* +add-option-flags options.txt /*add-option-flags* +add-plugin usr_05.txt /*add-plugin* +added-5.1 version5.txt /*added-5.1* +added-5.2 version5.txt /*added-5.2* +added-5.3 version5.txt /*added-5.3* +added-5.4 version5.txt /*added-5.4* +added-5.5 version5.txt /*added-5.5* +added-5.6 version5.txt /*added-5.6* +added-5.7 version5.txt /*added-5.7* +added-5.8 version5.txt /*added-5.8* +added-6.1 version6.txt /*added-6.1* +added-6.2 version6.txt /*added-6.2* +added-6.3 version6.txt /*added-6.3* +added-6.4 version6.txt /*added-6.4* +added-7.1 version7.txt /*added-7.1* +added-7.2 version7.txt /*added-7.2* +added-7.3 version7.txt /*added-7.3* +added-7.4 version7.txt /*added-7.4* +added-BeOS version5.txt /*added-BeOS* +added-Mac version5.txt /*added-Mac* +added-VMS version5.txt /*added-VMS* +added-cmdline-args version5.txt /*added-cmdline-args* +added-options version5.txt /*added-options* +added-regexp version5.txt /*added-regexp* +added-various version5.txt /*added-various* +added-win32-GUI version5.txt /*added-win32-GUI* +aff-dic-format spell.txt /*aff-dic-format* +after-directory options.txt /*after-directory* +aleph options.txt /*aleph* +alt intro.txt /*alt* +alt-input debugger.txt /*alt-input* +alternate-file editing.txt /*alternate-file* +amiga-window starting.txt /*amiga-window* +and() eval.txt /*and()* +anonymous-function eval.txt /*anonymous-function* +ant.vim syntax.txt /*ant.vim* +ap motion.txt /*ap* +apache.vim syntax.txt /*apache.vim* +append() eval.txt /*append()* +aquote motion.txt /*aquote* +arabic.txt arabic.txt /*arabic.txt* +arabicfonts arabic.txt /*arabicfonts* +arabickeymap arabic.txt /*arabickeymap* +arg-functions usr_41.txt /*arg-functions* +argc() eval.txt /*argc()* +argidx() eval.txt /*argidx()* +arglist editing.txt /*arglist* +arglist-position editing.txt /*arglist-position* +arglist-quit usr_07.txt /*arglist-quit* +argument-list editing.txt /*argument-list* +argv() eval.txt /*argv()* +as motion.txt /*as* +asin() eval.txt /*asin()* +asm.vim syntax.txt /*asm.vim* +asm68k syntax.txt /*asm68k* +asmh8300.vim syntax.txt /*asmh8300.vim* +at motion.txt /*at* +atan() eval.txt /*atan()* +atan2() eval.txt /*atan2()* +athena-intellimouse gui.txt /*athena-intellimouse* +attr-list syntax.txt /*attr-list* +author intro.txt /*author* +auto-format change.txt /*auto-format* +auto-setting options.txt /*auto-setting* +auto-shortname editing.txt /*auto-shortname* +autocmd-<> tips.txt /*autocmd-<>* +autocmd-buffer-local autocmd.txt /*autocmd-buffer-local* +autocmd-buflocal autocmd.txt /*autocmd-buflocal* +autocmd-changes autocmd.txt /*autocmd-changes* +autocmd-define autocmd.txt /*autocmd-define* +autocmd-disable autocmd.txt /*autocmd-disable* +autocmd-events autocmd.txt /*autocmd-events* +autocmd-events-abc autocmd.txt /*autocmd-events-abc* +autocmd-execute autocmd.txt /*autocmd-execute* +autocmd-groups autocmd.txt /*autocmd-groups* +autocmd-intro autocmd.txt /*autocmd-intro* +autocmd-list autocmd.txt /*autocmd-list* +autocmd-nested autocmd.txt /*autocmd-nested* +autocmd-osfiletypes filetype.txt /*autocmd-osfiletypes* +autocmd-patterns autocmd.txt /*autocmd-patterns* +autocmd-remove autocmd.txt /*autocmd-remove* +autocmd-searchpat autocmd.txt /*autocmd-searchpat* +autocmd-use autocmd.txt /*autocmd-use* +autocmd.txt autocmd.txt /*autocmd.txt* +autocmds-kept version5.txt /*autocmds-kept* +autocommand autocmd.txt /*autocommand* +autocommand-events autocmd.txt /*autocommand-events* +autocommand-pattern autocmd.txt /*autocommand-pattern* +autoformat change.txt /*autoformat* +autoload eval.txt /*autoload* +autoload-functions eval.txt /*autoload-functions* +avoid-hit-enter version5.txt /*avoid-hit-enter* +aw motion.txt /*aw* +a{ motion.txt /*a{* +a} motion.txt /*a}* +b motion.txt /*b* +b: eval.txt /*b:* +b:changedtick eval.txt /*b:changedtick* +b:changelog_name filetype.txt /*b:changelog_name* +b:current_syntax-variable syntax.txt /*b:current_syntax-variable* +b:netrw_lastfile pi_netrw.txt /*b:netrw_lastfile* +b:tex_stylish syntax.txt /*b:tex_stylish* +b:var eval.txt /*b:var* +baan-folding syntax.txt /*baan-folding* +baan-syntax syntax.txt /*baan-syntax* +baan.vim syntax.txt /*baan.vim* +backslash intro.txt /*backslash* +backspace intro.txt /*backspace* +backspace-delete version4.txt /*backspace-delete* +backtick-expansion editing.txt /*backtick-expansion* +backup editing.txt /*backup* +backup-changed version4.txt /*backup-changed* +backup-extension version4.txt /*backup-extension* +backup-table editing.txt /*backup-table* +balloon-eval debugger.txt /*balloon-eval* +bar motion.txt /*bar* +bars help.txt /*bars* +base_font_name_list mbyte.txt /*base_font_name_list* +basic.vim syntax.txt /*basic.vim* +beep options.txt /*beep* +beos-colors os_beos.txt /*beos-colors* +beos-compiling os_beos.txt /*beos-compiling* +beos-dragndrop os_beos.txt /*beos-dragndrop* +beos-fonts os_beos.txt /*beos-fonts* +beos-general os_beos.txt /*beos-general* +beos-gui os_beos.txt /*beos-gui* +beos-launch os_beos.txt /*beos-launch* +beos-meta os_beos.txt /*beos-meta* +beos-mouse os_beos.txt /*beos-mouse* +beos-perl os_beos.txt /*beos-perl* +beos-timeout os_beos.txt /*beos-timeout* +beos-unicode os_beos.txt /*beos-unicode* +beos-utf8 os_beos.txt /*beos-utf8* +beos-vimdir os_beos.txt /*beos-vimdir* +better-python-interface version7.txt /*better-python-interface* +beval_bufnr-variable eval.txt /*beval_bufnr-variable* +beval_col-variable eval.txt /*beval_col-variable* +beval_lnum-variable eval.txt /*beval_lnum-variable* +beval_text-variable eval.txt /*beval_text-variable* +beval_winnr-variable eval.txt /*beval_winnr-variable* +bitwise-function usr_41.txt /*bitwise-function* +blockwise-examples visual.txt /*blockwise-examples* +blockwise-operators visual.txt /*blockwise-operators* +blockwise-register change.txt /*blockwise-register* +blockwise-visual visual.txt /*blockwise-visual* +blowfish options.txt /*blowfish* +bold syntax.txt /*bold* +bom-bytes mbyte.txt /*bom-bytes* +book intro.txt /*book* +bookmark usr_03.txt /*bookmark* +boolean options.txt /*boolean* +break-finally eval.txt /*break-finally* +browse() eval.txt /*browse()* +browsedir() eval.txt /*browsedir()* +browsefilter editing.txt /*browsefilter* +bufexists() eval.txt /*bufexists()* +buffer-functions usr_41.txt /*buffer-functions* +buffer-hidden windows.txt /*buffer-hidden* +buffer-list windows.txt /*buffer-list* +buffer-variable eval.txt /*buffer-variable* +buffer-write editing.txt /*buffer-write* +buffer_exists() eval.txt /*buffer_exists()* +buffer_name() eval.txt /*buffer_name()* +buffer_number() eval.txt /*buffer_number()* +buffers windows.txt /*buffers* +buffers-menu gui.txt /*buffers-menu* +buflisted() eval.txt /*buflisted()* +bufloaded() eval.txt /*bufloaded()* +bufname() eval.txt /*bufname()* +bufnr() eval.txt /*bufnr()* +bufwinnr() eval.txt /*bufwinnr()* +bug-fixes-5 version5.txt /*bug-fixes-5* +bug-fixes-6 version6.txt /*bug-fixes-6* +bug-fixes-7 version7.txt /*bug-fixes-7* +bug-reports intro.txt /*bug-reports* +bugreport.vim intro.txt /*bugreport.vim* +bugs intro.txt /*bugs* +builtin-terms term.txt /*builtin-terms* +builtin-tools gui.txt /*builtin-tools* +builtin_terms term.txt /*builtin_terms* +byte-count editing.txt /*byte-count* +byte2line() eval.txt /*byte2line()* +byteidx() eval.txt /*byteidx()* +bzip2 pi_gzip.txt /*bzip2* +c change.txt /*c* +c.vim syntax.txt /*c.vim* +cW change.txt /*cW* +c_# cmdline.txt /*c_#* +c_## cmdline.txt /*c_##* +c_#< cmdline.txt /*c_#<* +c_#n cmdline.txt /*c_#n* +c_% cmdline.txt /*c_%* +c_<BS> cmdline.txt /*c_<BS>* +c_<C-Left> cmdline.txt /*c_<C-Left>* +c_<C-R> cmdline.txt /*c_<C-R>* +c_<C-R>_<C-A> cmdline.txt /*c_<C-R>_<C-A>* +c_<C-R>_<C-F> cmdline.txt /*c_<C-R>_<C-F>* +c_<C-R>_<C-O> cmdline.txt /*c_<C-R>_<C-O>* +c_<C-R>_<C-P> cmdline.txt /*c_<C-R>_<C-P>* +c_<C-R>_<C-R> cmdline.txt /*c_<C-R>_<C-R>* +c_<C-R>_<C-W> cmdline.txt /*c_<C-R>_<C-W>* +c_<C-Right> cmdline.txt /*c_<C-Right>* +c_<CR> cmdline.txt /*c_<CR>* +c_<Del> cmdline.txt /*c_<Del>* +c_<Down> cmdline.txt /*c_<Down>* +c_<End> cmdline.txt /*c_<End>* +c_<Esc> cmdline.txt /*c_<Esc>* +c_<Home> cmdline.txt /*c_<Home>* +c_<Insert> cmdline.txt /*c_<Insert>* +c_<Left> cmdline.txt /*c_<Left>* +c_<LeftMouse> cmdline.txt /*c_<LeftMouse>* +c_<NL> cmdline.txt /*c_<NL>* +c_<PageDown> cmdline.txt /*c_<PageDown>* +c_<PageUp> cmdline.txt /*c_<PageUp>* +c_<Right> cmdline.txt /*c_<Right>* +c_<S-Down> cmdline.txt /*c_<S-Down>* +c_<S-Left> cmdline.txt /*c_<S-Left>* +c_<S-Right> cmdline.txt /*c_<S-Right>* +c_<S-Tab> cmdline.txt /*c_<S-Tab>* +c_<S-Up> cmdline.txt /*c_<S-Up>* +c_<Tab> cmdline.txt /*c_<Tab>* +c_<Up> cmdline.txt /*c_<Up>* +c_BS cmdline.txt /*c_BS* +c_CR cmdline.txt /*c_CR* +c_CTRL-A cmdline.txt /*c_CTRL-A* +c_CTRL-B cmdline.txt /*c_CTRL-B* +c_CTRL-C cmdline.txt /*c_CTRL-C* +c_CTRL-D cmdline.txt /*c_CTRL-D* +c_CTRL-E cmdline.txt /*c_CTRL-E* +c_CTRL-F cmdline.txt /*c_CTRL-F* +c_CTRL-H cmdline.txt /*c_CTRL-H* +c_CTRL-I cmdline.txt /*c_CTRL-I* +c_CTRL-J cmdline.txt /*c_CTRL-J* +c_CTRL-K cmdline.txt /*c_CTRL-K* +c_CTRL-L cmdline.txt /*c_CTRL-L* +c_CTRL-N cmdline.txt /*c_CTRL-N* +c_CTRL-P cmdline.txt /*c_CTRL-P* +c_CTRL-Q cmdline.txt /*c_CTRL-Q* +c_CTRL-R cmdline.txt /*c_CTRL-R* +c_CTRL-R_= cmdline.txt /*c_CTRL-R_=* +c_CTRL-R_CTRL-A cmdline.txt /*c_CTRL-R_CTRL-A* +c_CTRL-R_CTRL-F cmdline.txt /*c_CTRL-R_CTRL-F* +c_CTRL-R_CTRL-O cmdline.txt /*c_CTRL-R_CTRL-O* +c_CTRL-R_CTRL-P cmdline.txt /*c_CTRL-R_CTRL-P* +c_CTRL-R_CTRL-R cmdline.txt /*c_CTRL-R_CTRL-R* +c_CTRL-R_CTRL-W cmdline.txt /*c_CTRL-R_CTRL-W* +c_CTRL-U cmdline.txt /*c_CTRL-U* +c_CTRL-V cmdline.txt /*c_CTRL-V* +c_CTRL-W cmdline.txt /*c_CTRL-W* +c_CTRL-Y cmdline.txt /*c_CTRL-Y* +c_CTRL-\_CTRL-G intro.txt /*c_CTRL-\\_CTRL-G* +c_CTRL-\_CTRL-N intro.txt /*c_CTRL-\\_CTRL-N* +c_CTRL-\_e cmdline.txt /*c_CTRL-\\_e* +c_CTRL-] cmdline.txt /*c_CTRL-]* +c_CTRL-^ cmdline.txt /*c_CTRL-^* +c_CTRL-_ cmdline.txt /*c_CTRL-_* +c_Del cmdline.txt /*c_Del* +c_Down cmdline.txt /*c_Down* +c_End cmdline.txt /*c_End* +c_Esc cmdline.txt /*c_Esc* +c_Home cmdline.txt /*c_Home* +c_Insert cmdline.txt /*c_Insert* +c_Left cmdline.txt /*c_Left* +c_Right cmdline.txt /*c_Right* +c_Up cmdline.txt /*c_Up* +c_digraph cmdline.txt /*c_digraph* +c_wildchar cmdline.txt /*c_wildchar* +call() eval.txt /*call()* +carriage-return intro.txt /*carriage-return* +case change.txt /*case* +catch-all eval.txt /*catch-all* +catch-errors eval.txt /*catch-errors* +catch-interrupt eval.txt /*catch-interrupt* +catch-order eval.txt /*catch-order* +catch-text eval.txt /*catch-text* +cc change.txt /*cc* +ceil() eval.txt /*ceil()* +ch.vim syntax.txt /*ch.vim* +change-list-jumps motion.txt /*change-list-jumps* +change-name tips.txt /*change-name* +change-tabs change.txt /*change-tabs* +change.txt change.txt /*change.txt* +changed-5.1 version5.txt /*changed-5.1* +changed-5.2 version5.txt /*changed-5.2* +changed-5.3 version5.txt /*changed-5.3* +changed-5.4 version5.txt /*changed-5.4* +changed-5.5 version5.txt /*changed-5.5* +changed-5.6 version5.txt /*changed-5.6* +changed-5.7 version5.txt /*changed-5.7* +changed-5.8 version5.txt /*changed-5.8* +changed-6.1 version6.txt /*changed-6.1* +changed-6.2 version6.txt /*changed-6.2* +changed-6.3 version6.txt /*changed-6.3* +changed-6.4 version6.txt /*changed-6.4* +changed-7.1 version7.txt /*changed-7.1* +changed-7.2 version7.txt /*changed-7.2* +changed-7.3 version7.txt /*changed-7.3* +changed-7.4 version7.txt /*changed-7.4* +changelist motion.txt /*changelist* +changelog.vim syntax.txt /*changelog.vim* +changenr() eval.txt /*changenr()* +changetick eval.txt /*changetick* +changing change.txt /*changing* +char-variable eval.txt /*char-variable* +char2nr() eval.txt /*char2nr()* +characterwise motion.txt /*characterwise* +characterwise-register change.txt /*characterwise-register* +characterwise-visual visual.txt /*characterwise-visual* +charconvert_from-variable eval.txt /*charconvert_from-variable* +charconvert_to-variable eval.txt /*charconvert_to-variable* +charity uganda.txt /*charity* +charset mbyte.txt /*charset* +charset-conversion mbyte.txt /*charset-conversion* +chill.vim syntax.txt /*chill.vim* +cindent() eval.txt /*cindent()* +cinkeys-format indent.txt /*cinkeys-format* +cino-# indent.txt /*cino-#* +cino-( indent.txt /*cino-(* +cino-) indent.txt /*cino-)* +cino-+ indent.txt /*cino-+* +cino-/ indent.txt /*cino-\/* +cino-: indent.txt /*cino-:* +cino-= indent.txt /*cino-=* +cino-> indent.txt /*cino->* +cino-C indent.txt /*cino-C* +cino-J indent.txt /*cino-J* +cino-L indent.txt /*cino-L* +cino-M indent.txt /*cino-M* +cino-N indent.txt /*cino-N* +cino-U indent.txt /*cino-U* +cino-W indent.txt /*cino-W* +cino-^ indent.txt /*cino-^* +cino-b indent.txt /*cino-b* +cino-c indent.txt /*cino-c* +cino-e indent.txt /*cino-e* +cino-f indent.txt /*cino-f* +cino-g indent.txt /*cino-g* +cino-h indent.txt /*cino-h* +cino-i indent.txt /*cino-i* +cino-j indent.txt /*cino-j* +cino-k indent.txt /*cino-k* +cino-l indent.txt /*cino-l* +cino-m indent.txt /*cino-m* +cino-n indent.txt /*cino-n* +cino-p indent.txt /*cino-p* +cino-star indent.txt /*cino-star* +cino-t indent.txt /*cino-t* +cino-u indent.txt /*cino-u* +cino-w indent.txt /*cino-w* +cino-{ indent.txt /*cino-{* +cino-} indent.txt /*cino-}* +cinoptions-values indent.txt /*cinoptions-values* +clear-undo undo.txt /*clear-undo* +clearmatches() eval.txt /*clearmatches()* +client-server remote.txt /*client-server* +clientserver remote.txt /*clientserver* +clipboard gui.txt /*clipboard* +clipboard-autoselect options.txt /*clipboard-autoselect* +clipboard-autoselectml options.txt /*clipboard-autoselectml* +clipboard-autoselectplus options.txt /*clipboard-autoselectplus* +clipboard-exclude options.txt /*clipboard-exclude* +clipboard-html options.txt /*clipboard-html* +clipboard-unnamed options.txt /*clipboard-unnamed* +clipboard-unnamedplus options.txt /*clipboard-unnamedplus* +clojure-indent indent.txt /*clojure-indent* +cmdarg-variable eval.txt /*cmdarg-variable* +cmdbang-variable eval.txt /*cmdbang-variable* +cmdline-arguments vi_diff.txt /*cmdline-arguments* +cmdline-changed version5.txt /*cmdline-changed* +cmdline-completion cmdline.txt /*cmdline-completion* +cmdline-editing cmdline.txt /*cmdline-editing* +cmdline-history cmdline.txt /*cmdline-history* +cmdline-lines cmdline.txt /*cmdline-lines* +cmdline-ranges cmdline.txt /*cmdline-ranges* +cmdline-special cmdline.txt /*cmdline-special* +cmdline-too-long cmdline.txt /*cmdline-too-long* +cmdline-window cmdline.txt /*cmdline-window* +cmdline.txt cmdline.txt /*cmdline.txt* +cmdwin cmdline.txt /*cmdwin* +cmdwin-char cmdline.txt /*cmdwin-char* +cobol.vim syntax.txt /*cobol.vim* +codeset mbyte.txt /*codeset* +coding-style develop.txt /*coding-style* +col() eval.txt /*col()* +coldfusion.vim syntax.txt /*coldfusion.vim* +collapse tips.txt /*collapse* +color-xterm syntax.txt /*color-xterm* +coloring syntax.txt /*coloring* +colortest.vim syntax.txt /*colortest.vim* +command-line-functions usr_41.txt /*command-line-functions* +command-line-window cmdline.txt /*command-line-window* +command-mode intro.txt /*command-mode* +compatible-default starting.txt /*compatible-default* +compile-changes-5 version5.txt /*compile-changes-5* +compile-changes-6 version6.txt /*compile-changes-6* +compile-changes-7 version7.txt /*compile-changes-7* +compiler-compaqada ft_ada.txt /*compiler-compaqada* +compiler-decada ft_ada.txt /*compiler-decada* +compiler-gcc quickfix.txt /*compiler-gcc* +compiler-gnat ft_ada.txt /*compiler-gnat* +compiler-hpada ft_ada.txt /*compiler-hpada* +compiler-manx quickfix.txt /*compiler-manx* +compiler-perl quickfix.txt /*compiler-perl* +compiler-pyunit quickfix.txt /*compiler-pyunit* +compiler-select quickfix.txt /*compiler-select* +compiler-tex quickfix.txt /*compiler-tex* +compiler-vaxada ft_ada.txt /*compiler-vaxada* +compl-current insert.txt /*compl-current* +compl-define insert.txt /*compl-define* +compl-dictionary insert.txt /*compl-dictionary* +compl-filename insert.txt /*compl-filename* +compl-function insert.txt /*compl-function* +compl-generic insert.txt /*compl-generic* +compl-keyword insert.txt /*compl-keyword* +compl-omni insert.txt /*compl-omni* +compl-omni-filetypes insert.txt /*compl-omni-filetypes* +compl-spelling insert.txt /*compl-spelling* +compl-tag insert.txt /*compl-tag* +compl-vim insert.txt /*compl-vim* +compl-whole-line insert.txt /*compl-whole-line* +complete() eval.txt /*complete()* +complete-functions insert.txt /*complete-functions* +complete-items insert.txt /*complete-items* +complete_CTRL-E insert.txt /*complete_CTRL-E* +complete_CTRL-Y insert.txt /*complete_CTRL-Y* +complete_add() eval.txt /*complete_add()* +complete_check() eval.txt /*complete_check()* +completion-functions usr_41.txt /*completion-functions* +complex-change change.txt /*complex-change* +complex-repeat repeat.txt /*complex-repeat* +compress pi_gzip.txt /*compress* +conceal syntax.txt /*conceal* +confirm() eval.txt /*confirm()* +connection-refused message.txt /*connection-refused* +console-menus gui.txt /*console-menus* +control intro.txt /*control* +conversion-server mbyte.txt /*conversion-server* +convert-to-HTML syntax.txt /*convert-to-HTML* +convert-to-XHTML syntax.txt /*convert-to-XHTML* +convert-to-XML syntax.txt /*convert-to-XML* +copy() eval.txt /*copy()* +copy-diffs diff.txt /*copy-diffs* +copy-move change.txt /*copy-move* +copying uganda.txt /*copying* +copyright uganda.txt /*copyright* +cos() eval.txt /*cos()* +cosh() eval.txt /*cosh()* +count intro.txt /*count* +count() eval.txt /*count()* +count-bytes tips.txt /*count-bytes* +count-items tips.txt /*count-items* +count-variable eval.txt /*count-variable* +count1-variable eval.txt /*count1-variable* +cp-default version5.txt /*cp-default* +cpo-! options.txt /*cpo-!* +cpo-# options.txt /*cpo-#* +cpo-$ options.txt /*cpo-$* +cpo-% options.txt /*cpo-%* +cpo-& options.txt /*cpo-&* +cpo-+ options.txt /*cpo-+* +cpo-- options.txt /*cpo--* +cpo-. options.txt /*cpo-.* +cpo-/ options.txt /*cpo-\/* +cpo-; options.txt /*cpo-;* +cpo-< options.txt /*cpo-<* +cpo-> options.txt /*cpo->* +cpo-A options.txt /*cpo-A* +cpo-B options.txt /*cpo-B* +cpo-C options.txt /*cpo-C* +cpo-D options.txt /*cpo-D* +cpo-E options.txt /*cpo-E* +cpo-F options.txt /*cpo-F* +cpo-H options.txt /*cpo-H* +cpo-I options.txt /*cpo-I* +cpo-J options.txt /*cpo-J* +cpo-K options.txt /*cpo-K* +cpo-L options.txt /*cpo-L* +cpo-M options.txt /*cpo-M* +cpo-O options.txt /*cpo-O* +cpo-P options.txt /*cpo-P* +cpo-R options.txt /*cpo-R* +cpo-S options.txt /*cpo-S* +cpo-W options.txt /*cpo-W* +cpo-X options.txt /*cpo-X* +cpo-Z options.txt /*cpo-Z* +cpo-\ options.txt /*cpo-\\* +cpo-a options.txt /*cpo-a* +cpo-b options.txt /*cpo-b* +cpo-bar options.txt /*cpo-bar* +cpo-c options.txt /*cpo-c* +cpo-d options.txt /*cpo-d* +cpo-e options.txt /*cpo-e* +cpo-f options.txt /*cpo-f* +cpo-g options.txt /*cpo-g* +cpo-i options.txt /*cpo-i* +cpo-j options.txt /*cpo-j* +cpo-k options.txt /*cpo-k* +cpo-l options.txt /*cpo-l* +cpo-m options.txt /*cpo-m* +cpo-n options.txt /*cpo-n* +cpo-o options.txt /*cpo-o* +cpo-p options.txt /*cpo-p* +cpo-q options.txt /*cpo-q* +cpo-r options.txt /*cpo-r* +cpo-s options.txt /*cpo-s* +cpo-star options.txt /*cpo-star* +cpo-t options.txt /*cpo-t* +cpo-u options.txt /*cpo-u* +cpo-v options.txt /*cpo-v* +cpo-w options.txt /*cpo-w* +cpo-x options.txt /*cpo-x* +cpo-y options.txt /*cpo-y* +cpo-{ options.txt /*cpo-{* +cpp.vim syntax.txt /*cpp.vim* +crash-recovery recover.txt /*crash-recovery* +creating-menus gui.txt /*creating-menus* +credits intro.txt /*credits* +crontab options.txt /*crontab* +cs-find if_cscop.txt /*cs-find* +cs7-problem term.txt /*cs7-problem* +cscope if_cscop.txt /*cscope* +cscope-commands if_cscop.txt /*cscope-commands* +cscope-find if_cscop.txt /*cscope-find* +cscope-howtouse if_cscop.txt /*cscope-howtouse* +cscope-info if_cscop.txt /*cscope-info* +cscope-intro if_cscop.txt /*cscope-intro* +cscope-limitations if_cscop.txt /*cscope-limitations* +cscope-options if_cscop.txt /*cscope-options* +cscope-suggestions if_cscop.txt /*cscope-suggestions* +cscope-win32 if_cscop.txt /*cscope-win32* +cscope_connection() eval.txt /*cscope_connection()* +cscopepathcomp if_cscop.txt /*cscopepathcomp* +cscopeprg if_cscop.txt /*cscopeprg* +cscopequickfix if_cscop.txt /*cscopequickfix* +cscoperelative if_cscop.txt /*cscoperelative* +cscopetag if_cscop.txt /*cscopetag* +cscopetagorder if_cscop.txt /*cscopetagorder* +cscopeverbose if_cscop.txt /*cscopeverbose* +csh.vim syntax.txt /*csh.vim* +cspc if_cscop.txt /*cspc* +csprg if_cscop.txt /*csprg* +csqf if_cscop.txt /*csqf* +csre if_cscop.txt /*csre* +cst if_cscop.txt /*cst* +csto if_cscop.txt /*csto* +csverb if_cscop.txt /*csverb* +ctags tagsrch.txt /*ctags* +ctags-gone version6.txt /*ctags-gone* +cterm-colors syntax.txt /*cterm-colors* +ctrl intro.txt /*ctrl* +ctype-variable eval.txt /*ctype-variable* +curly-braces-function-names eval.txt /*curly-braces-function-names* +curly-braces-names eval.txt /*curly-braces-names* +curpos-visual version6.txt /*curpos-visual* +current-directory editing.txt /*current-directory* +current-file editing.txt /*current-file* +current_compiler quickfix.txt /*current_compiler* +cursor() eval.txt /*cursor()* +cursor-blinking options.txt /*cursor-blinking* +cursor-down intro.txt /*cursor-down* +cursor-functions usr_41.txt /*cursor-functions* +cursor-left intro.txt /*cursor-left* +cursor-motions motion.txt /*cursor-motions* +cursor-position pattern.txt /*cursor-position* +cursor-right intro.txt /*cursor-right* +cursor-up intro.txt /*cursor-up* +cursor_down intro.txt /*cursor_down* +cursor_left intro.txt /*cursor_left* +cursor_right intro.txt /*cursor_right* +cursor_up intro.txt /*cursor_up* +cw change.txt /*cw* +cweb.vim syntax.txt /*cweb.vim* +cynlib.vim syntax.txt /*cynlib.vim* +d change.txt /*d* +daB motion.txt /*daB* +daW motion.txt /*daW* +dab motion.txt /*dab* +dap motion.txt /*dap* +das motion.txt /*das* +date-functions usr_41.txt /*date-functions* +dav pi_netrw.txt /*dav* +davs pi_netrw.txt /*davs* +daw motion.txt /*daw* +dd change.txt /*dd* +debug-gcc debug.txt /*debug-gcc* +debug-highlight debugger.txt /*debug-highlight* +debug-leaks debug.txt /*debug-leaks* +debug-minidump debug.txt /*debug-minidump* +debug-mode repeat.txt /*debug-mode* +debug-scripts repeat.txt /*debug-scripts* +debug-signs debugger.txt /*debug-signs* +debug-vim debug.txt /*debug-vim* +debug-vs2005 debug.txt /*debug-vs2005* +debug-win32 debug.txt /*debug-win32* +debug-windbg debug.txt /*debug-windbg* +debug.txt debug.txt /*debug.txt* +debugger-compilation debugger.txt /*debugger-compilation* +debugger-features debugger.txt /*debugger-features* +debugger-integration debugger.txt /*debugger-integration* +debugger-support debugger.txt /*debugger-support* +debugger.txt debugger.txt /*debugger.txt* +dec-mouse options.txt /*dec-mouse* +decada_members ft_ada.txt /*decada_members* +deepcopy() eval.txt /*deepcopy()* +definition-search tagsrch.txt /*definition-search* +definitions intro.txt /*definitions* +delete() eval.txt /*delete()* +delete-insert change.txt /*delete-insert* +delete-menus gui.txt /*delete-menus* +deleting change.txt /*deleting* +design-assumptions develop.txt /*design-assumptions* +design-compatible develop.txt /*design-compatible* +design-decisions develop.txt /*design-decisions* +design-documented develop.txt /*design-documented* +design-flexible develop.txt /*design-flexible* +design-goals develop.txt /*design-goals* +design-improved develop.txt /*design-improved* +design-maintain develop.txt /*design-maintain* +design-multi-platform develop.txt /*design-multi-platform* +design-not develop.txt /*design-not* +design-speed-size develop.txt /*design-speed-size* +desktop.vim syntax.txt /*desktop.vim* +develop-spell develop.txt /*develop-spell* +develop-spell-suggestions develop.txt /*develop-spell-suggestions* +develop.txt develop.txt /*develop.txt* +development develop.txt /*development* +dgn motion.txt /*dgn* +dh change.txt /*dh* +diB motion.txt /*diB* +diW motion.txt /*diW* +dialog gui_w32.txt /*dialog* +dialogs-added version5.txt /*dialogs-added* +dib motion.txt /*dib* +dict-functions usr_41.txt /*dict-functions* +dict-identity eval.txt /*dict-identity* +dict-modification eval.txt /*dict-modification* +did_filetype() eval.txt /*did_filetype()* +diff diff.txt /*diff* +diff-diffexpr diff.txt /*diff-diffexpr* +diff-mode diff.txt /*diff-mode* +diff-options diff.txt /*diff-options* +diff-original-file diff.txt /*diff-original-file* +diff-patchexpr diff.txt /*diff-patchexpr* +diff.txt diff.txt /*diff.txt* +diff_filler() eval.txt /*diff_filler()* +diff_hlID() eval.txt /*diff_hlID()* +digraph digraph.txt /*digraph* +digraph-arg change.txt /*digraph-arg* +digraph-encoding digraph.txt /*digraph-encoding* +digraph-table digraph.txt /*digraph-table* +digraph-table-mbyte digraph.txt /*digraph-table-mbyte* +digraph.txt digraph.txt /*digraph.txt* +digraphs digraph.txt /*digraphs* +digraphs-changed version6.txt /*digraphs-changed* +digraphs-default digraph.txt /*digraphs-default* +digraphs-define digraph.txt /*digraphs-define* +digraphs-use digraph.txt /*digraphs-use* +dip motion.txt /*dip* +dircolors.vim syntax.txt /*dircolors.vim* +dis motion.txt /*dis* +disable-menus gui.txt /*disable-menus* +discard editing.txt /*discard* +distribute-script usr_41.txt /*distribute-script* +distribution intro.txt /*distribution* +diw motion.txt /*diw* +dl change.txt /*dl* +do diff.txt /*do* +doc-file-list help.txt /*doc-file-list* +docbk.vim syntax.txt /*docbk.vim* +docbksgml.vim syntax.txt /*docbksgml.vim* +docbkxml.vim syntax.txt /*docbkxml.vim* +docbook syntax.txt /*docbook* +documentation-6 version6.txt /*documentation-6* +donate uganda.txt /*donate* +dos os_dos.txt /*dos* +dos-:cd os_dos.txt /*dos-:cd* +dos-CTRL-Break os_dos.txt /*dos-CTRL-Break* +dos-backslash os_dos.txt /*dos-backslash* +dos-colors os_dos.txt /*dos-colors* +dos-file-formats os_dos.txt /*dos-file-formats* +dos-locations os_dos.txt /*dos-locations* +dos-shell os_dos.txt /*dos-shell* +dos-standard-mappings os_dos.txt /*dos-standard-mappings* +dos-temp-files os_dos.txt /*dos-temp-files* +dos16 os_msdos.txt /*dos16* +dos32 os_msdos.txt /*dos32* +dosbatch.vim syntax.txt /*dosbatch.vim* +double-click term.txt /*double-click* +download intro.txt /*download* +doxygen-syntax syntax.txt /*doxygen-syntax* +doxygen.vim syntax.txt /*doxygen.vim* +dp diff.txt /*dp* +drag-n-drop gui.txt /*drag-n-drop* +drag-n-drop-win32 gui_w32.txt /*drag-n-drop-win32* +drag-status-line term.txt /*drag-status-line* +dtd.vim syntax.txt /*dtd.vim* +dtd2vim insert.txt /*dtd2vim* +dying-variable eval.txt /*dying-variable* +e motion.txt /*e* +easy starting.txt /*easy* +edit-a-file editing.txt /*edit-a-file* +edit-binary editing.txt /*edit-binary* +edit-dialogs editing.txt /*edit-dialogs* +edit-files editing.txt /*edit-files* +edit-intro editing.txt /*edit-intro* +edit-no-break usr_25.txt /*edit-no-break* +editing.txt editing.txt /*editing.txt* +efm-%> quickfix.txt /*efm-%>* +efm-entries quickfix.txt /*efm-entries* +efm-ignore quickfix.txt /*efm-ignore* +eiffel.vim syntax.txt /*eiffel.vim* +emacs-keys tips.txt /*emacs-keys* +emacs-tags tagsrch.txt /*emacs-tags* +emacs_tags tagsrch.txt /*emacs_tags* +empty() eval.txt /*empty()* +encoding-names mbyte.txt /*encoding-names* +encoding-table mbyte.txt /*encoding-table* +encoding-values mbyte.txt /*encoding-values* +encryption editing.txt /*encryption* +end intro.txt /*end* +end-of-file pattern.txt /*end-of-file* +enlightened-terminal syntax.txt /*enlightened-terminal* +erlang.vim syntax.txt /*erlang.vim* +errmsg-variable eval.txt /*errmsg-variable* +error-file-format quickfix.txt /*error-file-format* +error-messages message.txt /*error-messages* +errorformat quickfix.txt /*errorformat* +errorformat-Jikes quickfix.txt /*errorformat-Jikes* +errorformat-LaTeX quickfix.txt /*errorformat-LaTeX* +errorformat-Perl quickfix.txt /*errorformat-Perl* +errorformat-ant quickfix.txt /*errorformat-ant* +errorformat-changed version4.txt /*errorformat-changed* +errorformat-jade quickfix.txt /*errorformat-jade* +errorformat-javac quickfix.txt /*errorformat-javac* +errorformat-multi-line quickfix.txt /*errorformat-multi-line* +errorformat-separate-filename quickfix.txt /*errorformat-separate-filename* +errorformats quickfix.txt /*errorformats* +errors message.txt /*errors* +escape intro.txt /*escape* +escape() eval.txt /*escape()* +escape-bar version4.txt /*escape-bar* +eval eval.txt /*eval* +eval() eval.txt /*eval()* +eval-examples eval.txt /*eval-examples* +eval-sandbox eval.txt /*eval-sandbox* +eval.txt eval.txt /*eval.txt* +eventhandler() eval.txt /*eventhandler()* +eview starting.txt /*eview* +evim starting.txt /*evim* +evim-keys starting.txt /*evim-keys* +evim.vim starting.txt /*evim.vim* +ex starting.txt /*ex* +ex-cmd-index index.txt /*ex-cmd-index* +ex-edit-index index.txt /*ex-edit-index* +ex-flags cmdline.txt /*ex-flags* +ex: options.txt /*ex:* +except-autocmd eval.txt /*except-autocmd* +except-autocmd-Cmd eval.txt /*except-autocmd-Cmd* +except-autocmd-Post eval.txt /*except-autocmd-Post* +except-autocmd-Pre eval.txt /*except-autocmd-Pre* +except-autocmd-ill eval.txt /*except-autocmd-ill* +except-compat eval.txt /*except-compat* +except-examine eval.txt /*except-examine* +except-from-finally eval.txt /*except-from-finally* +except-hier-param eval.txt /*except-hier-param* +except-several-errors eval.txt /*except-several-errors* +except-single-line eval.txt /*except-single-line* +except-syntax-err eval.txt /*except-syntax-err* +except-syntax-error eval.txt /*except-syntax-error* +exception-handling eval.txt /*exception-handling* +exception-variable eval.txt /*exception-variable* +exclusive motion.txt /*exclusive* +exclusive-linewise motion.txt /*exclusive-linewise* +executable() eval.txt /*executable()* +execute-menus gui.txt /*execute-menus* +exim starting.txt /*exim* +exists() eval.txt /*exists()* +exp() eval.txt /*exp()* +expand() eval.txt /*expand()* +expand-env options.txt /*expand-env* +expand-environment-var options.txt /*expand-environment-var* +expr eval.txt /*expr* +expr-! eval.txt /*expr-!* +expr-!= eval.txt /*expr-!=* +expr-!=# eval.txt /*expr-!=#* +expr-!=? eval.txt /*expr-!=?* +expr-!~ eval.txt /*expr-!~* +expr-!~# eval.txt /*expr-!~#* +expr-!~? eval.txt /*expr-!~?* +expr-% eval.txt /*expr-%* +expr-&& eval.txt /*expr-&&* +expr-' eval.txt /*expr-'* +expr-+ eval.txt /*expr-+* +expr-- eval.txt /*expr--* +expr-. eval.txt /*expr-.* +expr-/ eval.txt /*expr-\/* +expr-< eval.txt /*expr-<* +expr-<# eval.txt /*expr-<#* +expr-<= eval.txt /*expr-<=* +expr-<=# eval.txt /*expr-<=#* +expr-<=? eval.txt /*expr-<=?* +expr-<? eval.txt /*expr-<?* +expr-== eval.txt /*expr-==* +expr-==# eval.txt /*expr-==#* +expr-==? eval.txt /*expr-==?* +expr-=~ eval.txt /*expr-=~* +expr-=~# eval.txt /*expr-=~#* +expr-=~? eval.txt /*expr-=~?* +expr-> eval.txt /*expr->* +expr-># eval.txt /*expr->#* +expr->= eval.txt /*expr->=* +expr->=# eval.txt /*expr->=#* +expr->=? eval.txt /*expr->=?* +expr->? eval.txt /*expr->?* +expr-[:] eval.txt /*expr-[:]* +expr-[] eval.txt /*expr-[]* +expr-barbar eval.txt /*expr-barbar* +expr-entry eval.txt /*expr-entry* +expr-env eval.txt /*expr-env* +expr-env-expand eval.txt /*expr-env-expand* +expr-function eval.txt /*expr-function* +expr-is eval.txt /*expr-is* +expr-is# eval.txt /*expr-is#* +expr-is? eval.txt /*expr-is?* +expr-isnot eval.txt /*expr-isnot* +expr-isnot# eval.txt /*expr-isnot#* +expr-isnot? eval.txt /*expr-isnot?* +expr-nesting eval.txt /*expr-nesting* +expr-number eval.txt /*expr-number* +expr-option eval.txt /*expr-option* +expr-quote eval.txt /*expr-quote* +expr-register eval.txt /*expr-register* +expr-star eval.txt /*expr-star* +expr-string eval.txt /*expr-string* +expr-unary-+ eval.txt /*expr-unary-+* +expr-unary-- eval.txt /*expr-unary--* +expr-variable eval.txt /*expr-variable* +expr1 eval.txt /*expr1* +expr2 eval.txt /*expr2* +expr3 eval.txt /*expr3* +expr4 eval.txt /*expr4* +expr5 eval.txt /*expr5* +expr6 eval.txt /*expr6* +expr7 eval.txt /*expr7* +expr8 eval.txt /*expr8* +expr9 eval.txt /*expr9* +expression eval.txt /*expression* +expression-commands eval.txt /*expression-commands* +expression-syntax eval.txt /*expression-syntax* +exrc starting.txt /*exrc* +extend() eval.txt /*extend()* +extension-removal cmdline.txt /*extension-removal* +extensions-improvements todo.txt /*extensions-improvements* +f motion.txt /*f* +faq intro.txt /*faq* +farsi farsi.txt /*farsi* +farsi.txt farsi.txt /*farsi.txt* +fasm.vim syntax.txt /*fasm.vim* +fcs_choice-variable eval.txt /*fcs_choice-variable* +fcs_reason-variable eval.txt /*fcs_reason-variable* +feature-list eval.txt /*feature-list* +feedkeys() eval.txt /*feedkeys()* +fetch pi_netrw.txt /*fetch* +file-browser-5.2 version5.txt /*file-browser-5.2* +file-formats editing.txt /*file-formats* +file-functions usr_41.txt /*file-functions* +file-pattern autocmd.txt /*file-pattern* +file-read insert.txt /*file-read* +file-searching editing.txt /*file-searching* +file-type filetype.txt /*file-type* +file-types filetype.txt /*file-types* +file_readable() eval.txt /*file_readable()* +fileencoding-changed version6.txt /*fileencoding-changed* +filename-backslash cmdline.txt /*filename-backslash* +filename-modifiers cmdline.txt /*filename-modifiers* +filereadable() eval.txt /*filereadable()* +filetype filetype.txt /*filetype* +filetype-detect filetype.txt /*filetype-detect* +filetype-ignore filetype.txt /*filetype-ignore* +filetype-overrule filetype.txt /*filetype-overrule* +filetype-plugin usr_43.txt /*filetype-plugin* +filetype-plugins filetype.txt /*filetype-plugins* +filetype.txt filetype.txt /*filetype.txt* +filetypedetect-changed version6.txt /*filetypedetect-changed* +filetypes filetype.txt /*filetypes* +filewritable() eval.txt /*filewritable()* +filter change.txt /*filter* +filter() eval.txt /*filter()* +find-manpage usr_12.txt /*find-manpage* +find-replace usr_10.txt /*find-replace* +finddir() eval.txt /*finddir()* +findfile() eval.txt /*findfile()* +fixed-5.1 version5.txt /*fixed-5.1* +fixed-5.2 version5.txt /*fixed-5.2* +fixed-5.3 version5.txt /*fixed-5.3* +fixed-5.4 version5.txt /*fixed-5.4* +fixed-5.5 version5.txt /*fixed-5.5* +fixed-5.6 version5.txt /*fixed-5.6* +fixed-5.7 version5.txt /*fixed-5.7* +fixed-5.8 version5.txt /*fixed-5.8* +fixed-6.1 version6.txt /*fixed-6.1* +fixed-6.2 version6.txt /*fixed-6.2* +fixed-6.3 version6.txt /*fixed-6.3* +fixed-6.4 version6.txt /*fixed-6.4* +fixed-7.1 version7.txt /*fixed-7.1* +fixed-7.2 version7.txt /*fixed-7.2* +fixed-7.3 version7.txt /*fixed-7.3* +fixed-7.4 version7.txt /*fixed-7.4* +flexwiki.vim syntax.txt /*flexwiki.vim* +float-e eval.txt /*float-e* +float-functions usr_41.txt /*float-functions* +float-pi eval.txt /*float-pi* +float2nr() eval.txt /*float2nr()* +floating-point-format eval.txt /*floating-point-format* +floating-point-precision eval.txt /*floating-point-precision* +floor() eval.txt /*floor()* +fmod() eval.txt /*fmod()* +fname_diff-variable eval.txt /*fname_diff-variable* +fname_in-variable eval.txt /*fname_in-variable* +fname_new-variable eval.txt /*fname_new-variable* +fname_out-variable eval.txt /*fname_out-variable* +fnameescape() eval.txt /*fnameescape()* +fnamemodify() eval.txt /*fnamemodify()* +fo-table change.txt /*fo-table* +fold-behavior fold.txt /*fold-behavior* +fold-colors fold.txt /*fold-colors* +fold-commands fold.txt /*fold-commands* +fold-create-marker fold.txt /*fold-create-marker* +fold-delete-marker fold.txt /*fold-delete-marker* +fold-diff fold.txt /*fold-diff* +fold-expr fold.txt /*fold-expr* +fold-foldcolumn fold.txt /*fold-foldcolumn* +fold-foldlevel fold.txt /*fold-foldlevel* +fold-foldtext fold.txt /*fold-foldtext* +fold-indent fold.txt /*fold-indent* +fold-manual fold.txt /*fold-manual* +fold-marker fold.txt /*fold-marker* +fold-methods fold.txt /*fold-methods* +fold-options fold.txt /*fold-options* +fold-syntax fold.txt /*fold-syntax* +fold.txt fold.txt /*fold.txt* +foldclosed() eval.txt /*foldclosed()* +foldclosedend() eval.txt /*foldclosedend()* +folddashes-variable eval.txt /*folddashes-variable* +foldend-variable eval.txt /*foldend-variable* +folding fold.txt /*folding* +folding-functions usr_41.txt /*folding-functions* +foldlevel() eval.txt /*foldlevel()* +foldlevel-variable eval.txt /*foldlevel-variable* +folds fold.txt /*folds* +foldstart-variable eval.txt /*foldstart-variable* +foldtext() eval.txt /*foldtext()* +foldtextresult() eval.txt /*foldtextresult()* +font-sizes gui_x11.txt /*font-sizes* +fontset mbyte.txt /*fontset* +foreground() eval.txt /*foreground()* +fork os_unix.txt /*fork* +form.vim syntax.txt /*form.vim* +format-bullet-list tips.txt /*format-bullet-list* +format-comments change.txt /*format-comments* +formatting change.txt /*formatting* +formfeed intro.txt /*formfeed* +fortran.vim syntax.txt /*fortran.vim* +friendship intro.txt /*friendship* +frombook usr_01.txt /*frombook* +ft-abel-syntax syntax.txt /*ft-abel-syntax* +ft-ada-commands ft_ada.txt /*ft-ada-commands* +ft-ada-constants ft_ada.txt /*ft-ada-constants* +ft-ada-functions ft_ada.txt /*ft-ada-functions* +ft-ada-indent ft_ada.txt /*ft-ada-indent* +ft-ada-omni ft_ada.txt /*ft-ada-omni* +ft-ada-options ft_ada.txt /*ft-ada-options* +ft-ada-plugin ft_ada.txt /*ft-ada-plugin* +ft-ada-syntax ft_ada.txt /*ft-ada-syntax* +ft-ada-variables ft_ada.txt /*ft-ada-variables* +ft-ant-syntax syntax.txt /*ft-ant-syntax* +ft-apache-syntax syntax.txt /*ft-apache-syntax* +ft-asm-syntax syntax.txt /*ft-asm-syntax* +ft-asm68k-syntax syntax.txt /*ft-asm68k-syntax* +ft-asmh8300-syntax syntax.txt /*ft-asmh8300-syntax* +ft-aspperl-syntax syntax.txt /*ft-aspperl-syntax* +ft-aspvbs-syntax syntax.txt /*ft-aspvbs-syntax* +ft-bash-syntax syntax.txt /*ft-bash-syntax* +ft-basic-syntax syntax.txt /*ft-basic-syntax* +ft-c-omni insert.txt /*ft-c-omni* +ft-c-syntax syntax.txt /*ft-c-syntax* +ft-ch-syntax syntax.txt /*ft-ch-syntax* +ft-changelog-plugin filetype.txt /*ft-changelog-plugin* +ft-changelog-syntax syntax.txt /*ft-changelog-syntax* +ft-chill-syntax syntax.txt /*ft-chill-syntax* +ft-clojure-indent indent.txt /*ft-clojure-indent* +ft-cobol-syntax syntax.txt /*ft-cobol-syntax* +ft-coldfusion-syntax syntax.txt /*ft-coldfusion-syntax* +ft-cpp-syntax syntax.txt /*ft-cpp-syntax* +ft-csh-syntax syntax.txt /*ft-csh-syntax* +ft-css-omni insert.txt /*ft-css-omni* +ft-cweb-syntax syntax.txt /*ft-cweb-syntax* +ft-cynlib-syntax syntax.txt /*ft-cynlib-syntax* +ft-desktop-syntax syntax.txt /*ft-desktop-syntax* +ft-dircolors-syntax syntax.txt /*ft-dircolors-syntax* +ft-docbk-syntax syntax.txt /*ft-docbk-syntax* +ft-docbksgml-syntax syntax.txt /*ft-docbksgml-syntax* +ft-docbkxml-syntax syntax.txt /*ft-docbkxml-syntax* +ft-dosbatch-syntax syntax.txt /*ft-dosbatch-syntax* +ft-dtd-syntax syntax.txt /*ft-dtd-syntax* +ft-eiffel-syntax syntax.txt /*ft-eiffel-syntax* +ft-erlang-syntax syntax.txt /*ft-erlang-syntax* +ft-flexwiki-syntax syntax.txt /*ft-flexwiki-syntax* +ft-form-syntax syntax.txt /*ft-form-syntax* +ft-fortran-indent indent.txt /*ft-fortran-indent* +ft-fortran-plugin filetype.txt /*ft-fortran-plugin* +ft-fortran-syntax syntax.txt /*ft-fortran-syntax* +ft-fvwm-syntax syntax.txt /*ft-fvwm-syntax* +ft-gitcommit-plugin filetype.txt /*ft-gitcommit-plugin* +ft-groff-syntax syntax.txt /*ft-groff-syntax* +ft-gsp-syntax syntax.txt /*ft-gsp-syntax* +ft-haskell-syntax syntax.txt /*ft-haskell-syntax* +ft-html-indent indent.txt /*ft-html-indent* +ft-html-omni insert.txt /*ft-html-omni* +ft-html-syntax syntax.txt /*ft-html-syntax* +ft-htmlos-syntax syntax.txt /*ft-htmlos-syntax* +ft-ia64-syntax syntax.txt /*ft-ia64-syntax* +ft-inform-syntax syntax.txt /*ft-inform-syntax* +ft-java-syntax syntax.txt /*ft-java-syntax* +ft-javascript-omni insert.txt /*ft-javascript-omni* +ft-ksh-syntax syntax.txt /*ft-ksh-syntax* +ft-lace-syntax syntax.txt /*ft-lace-syntax* +ft-lex-syntax syntax.txt /*ft-lex-syntax* +ft-lifelines-syntax syntax.txt /*ft-lifelines-syntax* +ft-lisp-syntax syntax.txt /*ft-lisp-syntax* +ft-lite-syntax syntax.txt /*ft-lite-syntax* +ft-lpc-syntax syntax.txt /*ft-lpc-syntax* +ft-lua-syntax syntax.txt /*ft-lua-syntax* +ft-mail-plugin filetype.txt /*ft-mail-plugin* +ft-mail.vim syntax.txt /*ft-mail.vim* +ft-make-syntax syntax.txt /*ft-make-syntax* +ft-man-plugin filetype.txt /*ft-man-plugin* +ft-maple-syntax syntax.txt /*ft-maple-syntax* +ft-masm-syntax syntax.txt /*ft-masm-syntax* +ft-mathematica-syntax syntax.txt /*ft-mathematica-syntax* +ft-mma-syntax syntax.txt /*ft-mma-syntax* +ft-moo-syntax syntax.txt /*ft-moo-syntax* +ft-msql-syntax syntax.txt /*ft-msql-syntax* +ft-nasm-syntax syntax.txt /*ft-nasm-syntax* +ft-ncf-syntax syntax.txt /*ft-ncf-syntax* +ft-nroff-syntax syntax.txt /*ft-nroff-syntax* +ft-ocaml-syntax syntax.txt /*ft-ocaml-syntax* +ft-papp-syntax syntax.txt /*ft-papp-syntax* +ft-pascal-syntax syntax.txt /*ft-pascal-syntax* +ft-pdf-plugin filetype.txt /*ft-pdf-plugin* +ft-perl-syntax syntax.txt /*ft-perl-syntax* +ft-php-indent indent.txt /*ft-php-indent* +ft-php-omni insert.txt /*ft-php-omni* +ft-php-syntax syntax.txt /*ft-php-syntax* +ft-php3-syntax syntax.txt /*ft-php3-syntax* +ft-phtml-syntax syntax.txt /*ft-phtml-syntax* +ft-plaintex-syntax syntax.txt /*ft-plaintex-syntax* +ft-postscr-syntax syntax.txt /*ft-postscr-syntax* +ft-ppwiz-syntax syntax.txt /*ft-ppwiz-syntax* +ft-printcap-syntax syntax.txt /*ft-printcap-syntax* +ft-progress-syntax syntax.txt /*ft-progress-syntax* +ft-ptcap-syntax syntax.txt /*ft-ptcap-syntax* +ft-python-indent indent.txt /*ft-python-indent* +ft-python-syntax syntax.txt /*ft-python-syntax* +ft-quake-syntax syntax.txt /*ft-quake-syntax* +ft-r-indent indent.txt /*ft-r-indent* +ft-readline-syntax syntax.txt /*ft-readline-syntax* +ft-rexx-syntax syntax.txt /*ft-rexx-syntax* +ft-rst-syntax syntax.txt /*ft-rst-syntax* +ft-ruby-omni insert.txt /*ft-ruby-omni* +ft-ruby-syntax syntax.txt /*ft-ruby-syntax* +ft-scheme-syntax syntax.txt /*ft-scheme-syntax* +ft-sdl-syntax syntax.txt /*ft-sdl-syntax* +ft-sed-syntax syntax.txt /*ft-sed-syntax* +ft-sgml-syntax syntax.txt /*ft-sgml-syntax* +ft-sh-indent indent.txt /*ft-sh-indent* +ft-sh-syntax syntax.txt /*ft-sh-syntax* +ft-spec-plugin filetype.txt /*ft-spec-plugin* +ft-spup-syntax syntax.txt /*ft-spup-syntax* +ft-sql filetype.txt /*ft-sql* +ft-sql-omni insert.txt /*ft-sql-omni* +ft-sql-syntax syntax.txt /*ft-sql-syntax* +ft-sqlanywhere-syntax syntax.txt /*ft-sqlanywhere-syntax* +ft-sqlinformix-syntax syntax.txt /*ft-sqlinformix-syntax* +ft-syntax-omni insert.txt /*ft-syntax-omni* +ft-tcsh-syntax syntax.txt /*ft-tcsh-syntax* +ft-termcap-syntax syntax.txt /*ft-termcap-syntax* +ft-tex-plugin filetype.txt /*ft-tex-plugin* +ft-tex-syntax syntax.txt /*ft-tex-syntax* +ft-tf-syntax syntax.txt /*ft-tf-syntax* +ft-vb-syntax syntax.txt /*ft-vb-syntax* +ft-verilog-indent indent.txt /*ft-verilog-indent* +ft-vhdl-indent indent.txt /*ft-vhdl-indent* +ft-vim-indent indent.txt /*ft-vim-indent* +ft-vim-syntax syntax.txt /*ft-vim-syntax* +ft-xf86conf-syntax syntax.txt /*ft-xf86conf-syntax* +ft-xhtml-omni insert.txt /*ft-xhtml-omni* +ft-xml-omni insert.txt /*ft-xml-omni* +ft-xml-syntax syntax.txt /*ft-xml-syntax* +ft-xpm-syntax syntax.txt /*ft-xpm-syntax* +ft_ada.txt ft_ada.txt /*ft_ada.txt* +ft_sql.txt ft_sql.txt /*ft_sql.txt* +ftdetect filetype.txt /*ftdetect* +ftp pi_netrw.txt /*ftp* +ftplugin usr_41.txt /*ftplugin* +ftplugin-docs filetype.txt /*ftplugin-docs* +ftplugin-name usr_05.txt /*ftplugin-name* +ftplugin-overrule filetype.txt /*ftplugin-overrule* +ftplugin-special usr_41.txt /*ftplugin-special* +ftplugins usr_05.txt /*ftplugins* +function() eval.txt /*function()* +function-argument eval.txt /*function-argument* +function-key intro.txt /*function-key* +function-list usr_41.txt /*function-list* +function-range-example eval.txt /*function-range-example* +function-search-undo eval.txt /*function-search-undo* +function_key intro.txt /*function_key* +functions eval.txt /*functions* +fvwm.vim syntax.txt /*fvwm.vim* +fvwm2rc syntax.txt /*fvwm2rc* +fvwmrc syntax.txt /*fvwmrc* +g index.txt /*g* +g# pattern.txt /*g#* +g$ motion.txt /*g$* +g& change.txt /*g&* +g' motion.txt /*g'* +g'a motion.txt /*g'a* +g+ undo.txt /*g+* +g, motion.txt /*g,* +g- undo.txt /*g-* +g0 motion.txt /*g0* +g8 various.txt /*g8* +g: eval.txt /*g:* +g:NetrwTopLvlMenu pi_netrw.txt /*g:NetrwTopLvlMenu* +g:Netrw_corehandler pi_netrw.txt /*g:Netrw_corehandler* +g:Netrw_funcref pi_netrw.txt /*g:Netrw_funcref* +g:ada#Comment ft_ada.txt /*g:ada#Comment* +g:ada#Ctags_Kinds ft_ada.txt /*g:ada#Ctags_Kinds* +g:ada#DotWordRegex ft_ada.txt /*g:ada#DotWordRegex* +g:ada#Keywords ft_ada.txt /*g:ada#Keywords* +g:ada#WordRegex ft_ada.txt /*g:ada#WordRegex* +g:ada_abbrev ft_ada.txt /*g:ada_abbrev* +g:ada_all_tab_usage ft_ada.txt /*g:ada_all_tab_usage* +g:ada_begin_preproc ft_ada.txt /*g:ada_begin_preproc* +g:ada_default_compiler ft_ada.txt /*g:ada_default_compiler* +g:ada_extended_completion ft_ada.txt /*g:ada_extended_completion* +g:ada_extended_tagging ft_ada.txt /*g:ada_extended_tagging* +g:ada_folding ft_ada.txt /*g:ada_folding* +g:ada_gnat_extensions ft_ada.txt /*g:ada_gnat_extensions* +g:ada_line_errors ft_ada.txt /*g:ada_line_errors* +g:ada_no_tab_space_error ft_ada.txt /*g:ada_no_tab_space_error* +g:ada_no_trail_space_error ft_ada.txt /*g:ada_no_trail_space_error* +g:ada_omni_with_keywords ft_ada.txt /*g:ada_omni_with_keywords* +g:ada_rainbow_color ft_ada.txt /*g:ada_rainbow_color* +g:ada_space_errors ft_ada.txt /*g:ada_space_errors* +g:ada_standard_types ft_ada.txt /*g:ada_standard_types* +g:ada_with_gnat_project_files ft_ada.txt /*g:ada_with_gnat_project_files* +g:ada_withuse_ordinary ft_ada.txt /*g:ada_withuse_ordinary* +g:clojure_align_multiline_strings indent.txt /*g:clojure_align_multiline_strings* +g:clojure_fuzzy_indent indent.txt /*g:clojure_fuzzy_indent* +g:clojure_fuzzy_indent_blacklist indent.txt /*g:clojure_fuzzy_indent_blacklist* +g:clojure_fuzzy_indent_patterns indent.txt /*g:clojure_fuzzy_indent_patterns* +g:clojure_maxlines indent.txt /*g:clojure_maxlines* +g:clojure_special_indent_words indent.txt /*g:clojure_special_indent_words* +g:colors_name options.txt /*g:colors_name* +g:decada ft_ada.txt /*g:decada* +g:decada.Error_Format ft_ada.txt /*g:decada.Error_Format* +g:decada.Make() ft_ada.txt /*g:decada.Make()* +g:decada.Make_Command ft_ada.txt /*g:decada.Make_Command* +g:decada.Unit_Name() ft_ada.txt /*g:decada.Unit_Name()* +g:filetype_csh syntax.txt /*g:filetype_csh* +g:filetype_r syntax.txt /*g:filetype_r* +g:gnat ft_ada.txt /*g:gnat* +g:gnat.Error_Format ft_ada.txt /*g:gnat.Error_Format* +g:gnat.Find() ft_ada.txt /*g:gnat.Find()* +g:gnat.Find_Program ft_ada.txt /*g:gnat.Find_Program* +g:gnat.Make() ft_ada.txt /*g:gnat.Make()* +g:gnat.Make_Command ft_ada.txt /*g:gnat.Make_Command* +g:gnat.Pretty() ft_ada.txt /*g:gnat.Pretty()* +g:gnat.Pretty_Program ft_ada.txt /*g:gnat.Pretty_Program* +g:gnat.Project_File ft_ada.txt /*g:gnat.Project_File* +g:gnat.Set_Project_File() ft_ada.txt /*g:gnat.Set_Project_File()* +g:gnat.Tags() ft_ada.txt /*g:gnat.Tags()* +g:gnat.Tags_Command ft_ada.txt /*g:gnat.Tags_Command* +g:html_charset_override syntax.txt /*g:html_charset_override* +g:html_diff_one_file syntax.txt /*g:html_diff_one_file* +g:html_dynamic_folds syntax.txt /*g:html_dynamic_folds* +g:html_encoding_override syntax.txt /*g:html_encoding_override* +g:html_end_line syntax.txt /*g:html_end_line* +g:html_expand_tabs syntax.txt /*g:html_expand_tabs* +g:html_hover_unfold syntax.txt /*g:html_hover_unfold* +g:html_id_expr syntax.txt /*g:html_id_expr* +g:html_ignore_conceal syntax.txt /*g:html_ignore_conceal* +g:html_ignore_folding syntax.txt /*g:html_ignore_folding* +g:html_line_ids syntax.txt /*g:html_line_ids* +g:html_no_foldcolumn syntax.txt /*g:html_no_foldcolumn* +g:html_no_invalid syntax.txt /*g:html_no_invalid* +g:html_no_pre syntax.txt /*g:html_no_pre* +g:html_no_progress syntax.txt /*g:html_no_progress* +g:html_number_lines syntax.txt /*g:html_number_lines* +g:html_pre_wrap syntax.txt /*g:html_pre_wrap* +g:html_prevent_copy syntax.txt /*g:html_prevent_copy* +g:html_start_line syntax.txt /*g:html_start_line* +g:html_use_css syntax.txt /*g:html_use_css* +g:html_use_encoding syntax.txt /*g:html_use_encoding* +g:html_use_xhtml syntax.txt /*g:html_use_xhtml* +g:html_whole_filler syntax.txt /*g:html_whole_filler* +g:netrw_alto pi_netrw.txt /*g:netrw_alto* +g:netrw_altv pi_netrw.txt /*g:netrw_altv* +g:netrw_banner pi_netrw.txt /*g:netrw_banner* +g:netrw_bannerbackslash pi_netrw.txt /*g:netrw_bannerbackslash* +g:netrw_browse_split pi_netrw.txt /*g:netrw_browse_split* +g:netrw_browsex_viewer pi_netrw.txt /*g:netrw_browsex_viewer* +g:netrw_bufsettings pi_netrw.txt /*g:netrw_bufsettings* +g:netrw_chgperm pi_netrw.txt /*g:netrw_chgperm* +g:netrw_chgwin pi_netrw.txt /*g:netrw_chgwin* +g:netrw_compress pi_netrw.txt /*g:netrw_compress* +g:netrw_ctags pi_netrw.txt /*g:netrw_ctags* +g:netrw_cursor pi_netrw.txt /*g:netrw_cursor* +g:netrw_cygwin pi_netrw.txt /*g:netrw_cygwin* +g:netrw_dav_cmd pi_netrw.txt /*g:netrw_dav_cmd* +g:netrw_decompress pi_netrw.txt /*g:netrw_decompress* +g:netrw_dirhistmax pi_netrw.txt /*g:netrw_dirhistmax* +g:netrw_dynamic_maxfilenamelen pi_netrw.txt /*g:netrw_dynamic_maxfilenamelen* +g:netrw_errorlvl pi_netrw.txt /*g:netrw_errorlvl* +g:netrw_fastbrowse pi_netrw.txt /*g:netrw_fastbrowse* +g:netrw_fetch_cmd pi_netrw.txt /*g:netrw_fetch_cmd* +g:netrw_fname_escape pi_netrw.txt /*g:netrw_fname_escape* +g:netrw_ftp pi_netrw.txt /*g:netrw_ftp* +g:netrw_ftp_browse_reject pi_netrw.txt /*g:netrw_ftp_browse_reject* +g:netrw_ftp_cmd pi_netrw.txt /*g:netrw_ftp_cmd* +g:netrw_ftp_list_cmd pi_netrw.txt /*g:netrw_ftp_list_cmd* +g:netrw_ftp_options pi_netrw.txt /*g:netrw_ftp_options* +g:netrw_ftp_sizelist_cmd pi_netrw.txt /*g:netrw_ftp_sizelist_cmd* +g:netrw_ftp_timelist_cmd pi_netrw.txt /*g:netrw_ftp_timelist_cmd* +g:netrw_ftpextracmd pi_netrw.txt /*g:netrw_ftpextracmd* +g:netrw_ftpmode pi_netrw.txt /*g:netrw_ftpmode* +g:netrw_glob_escape pi_netrw.txt /*g:netrw_glob_escape* +g:netrw_hide pi_netrw.txt /*g:netrw_hide* +g:netrw_home pi_netrw.txt /*g:netrw_home* +g:netrw_http_cmd pi_netrw.txt /*g:netrw_http_cmd* +g:netrw_http_xcmd pi_netrw.txt /*g:netrw_http_xcmd* +g:netrw_ignorenetrc pi_netrw.txt /*g:netrw_ignorenetrc* +g:netrw_keepdir pi_netrw.txt /*g:netrw_keepdir* +g:netrw_list_cmd pi_netrw.txt /*g:netrw_list_cmd* +g:netrw_list_hide pi_netrw.txt /*g:netrw_list_hide* +g:netrw_liststyle pi_netrw.txt /*g:netrw_liststyle* +g:netrw_localcopycmd pi_netrw.txt /*g:netrw_localcopycmd* +g:netrw_localmkdir pi_netrw.txt /*g:netrw_localmkdir* +g:netrw_localmovecmd pi_netrw.txt /*g:netrw_localmovecmd* +g:netrw_localrmdir pi_netrw.txt /*g:netrw_localrmdir* +g:netrw_maxfilenamelen pi_netrw.txt /*g:netrw_maxfilenamelen* +g:netrw_menu pi_netrw.txt /*g:netrw_menu* +g:netrw_mkdir_cmd pi_netrw.txt /*g:netrw_mkdir_cmd* +g:netrw_mousemaps pi_netrw.txt /*g:netrw_mousemaps* +g:netrw_nobeval pi_netrw.txt /*g:netrw_nobeval* +g:netrw_nogx pi_netrw.txt /*g:netrw_nogx* +g:netrw_preview pi_netrw.txt /*g:netrw_preview* +g:netrw_rcp_cmd pi_netrw.txt /*g:netrw_rcp_cmd* +g:netrw_remote_mkdir pi_netrw.txt /*g:netrw_remote_mkdir* +g:netrw_retmap pi_netrw.txt /*g:netrw_retmap* +g:netrw_rm_cmd pi_netrw.txt /*g:netrw_rm_cmd* +g:netrw_rmdir_cmd pi_netrw.txt /*g:netrw_rmdir_cmd* +g:netrw_rmf_cmd pi_netrw.txt /*g:netrw_rmf_cmd* +g:netrw_rsync_cmd pi_netrw.txt /*g:netrw_rsync_cmd* +g:netrw_scp_cmd pi_netrw.txt /*g:netrw_scp_cmd* +g:netrw_scpport pi_netrw.txt /*g:netrw_scpport* +g:netrw_sepchr pi_netrw.txt /*g:netrw_sepchr* +g:netrw_sftp_cmd pi_netrw.txt /*g:netrw_sftp_cmd* +g:netrw_silent pi_netrw.txt /*g:netrw_silent* +g:netrw_sort_by pi_netrw.txt /*g:netrw_sort_by* +g:netrw_sort_direction pi_netrw.txt /*g:netrw_sort_direction* +g:netrw_sort_options pi_netrw.txt /*g:netrw_sort_options* +g:netrw_sort_sequence pi_netrw.txt /*g:netrw_sort_sequence* +g:netrw_special_syntax pi_netrw.txt /*g:netrw_special_syntax* +g:netrw_ssh_browse_reject pi_netrw.txt /*g:netrw_ssh_browse_reject* +g:netrw_ssh_cmd pi_netrw.txt /*g:netrw_ssh_cmd* +g:netrw_sshport pi_netrw.txt /*g:netrw_sshport* +g:netrw_timefmt pi_netrw.txt /*g:netrw_timefmt* +g:netrw_tmpfile_escape pi_netrw.txt /*g:netrw_tmpfile_escape* +g:netrw_uid pi_netrw.txt /*g:netrw_uid* +g:netrw_use_errorwindow pi_netrw.txt /*g:netrw_use_errorwindow* +g:netrw_use_noswf pi_netrw.txt /*g:netrw_use_noswf* +g:netrw_use_nt_rcp pi_netrw.txt /*g:netrw_use_nt_rcp* +g:netrw_win95ftp pi_netrw.txt /*g:netrw_win95ftp* +g:netrw_winsize pi_netrw.txt /*g:netrw_winsize* +g:netrw_xstrlen pi_netrw.txt /*g:netrw_xstrlen* +g:sh_isk syntax.txt /*g:sh_isk* +g:sh_noisk syntax.txt /*g:sh_noisk* +g:syntax_on syntax.txt /*g:syntax_on* +g:tar_browseoptions pi_tar.txt /*g:tar_browseoptions* +g:tar_cmd pi_tar.txt /*g:tar_cmd* +g:tar_copycmd pi_tar.txt /*g:tar_copycmd* +g:tar_extractcmd pi_tar.txt /*g:tar_extractcmd* +g:tar_nomax pi_tar.txt /*g:tar_nomax* +g:tar_readoptions pi_tar.txt /*g:tar_readoptions* +g:tar_secure pi_tar.txt /*g:tar_secure* +g:tar_writeoptions pi_tar.txt /*g:tar_writeoptions* +g:tex_comment_nospell syntax.txt /*g:tex_comment_nospell* +g:tex_conceal syntax.txt /*g:tex_conceal* +g:tex_fast syntax.txt /*g:tex_fast* +g:tex_flavor filetype.txt /*g:tex_flavor* +g:tex_fold_enabled syntax.txt /*g:tex_fold_enabled* +g:tex_isk syntax.txt /*g:tex_isk* +g:tex_no_error syntax.txt /*g:tex_no_error* +g:tex_nospell syntax.txt /*g:tex_nospell* +g:tex_stylish syntax.txt /*g:tex_stylish* +g:tex_verbspell syntax.txt /*g:tex_verbspell* +g:var eval.txt /*g:var* +g:vimball_home pi_vimball.txt /*g:vimball_home* +g:vimball_mkdir pi_vimball.txt /*g:vimball_mkdir* +g:vimsyn_embed syntax.txt /*g:vimsyn_embed* +g:vimsyn_folding syntax.txt /*g:vimsyn_folding* +g:vimsyn_maxlines syntax.txt /*g:vimsyn_maxlines* +g:vimsyn_minlines syntax.txt /*g:vimsyn_minlines* +g:vimsyn_noerror syntax.txt /*g:vimsyn_noerror* +g:zip_nomax pi_zip.txt /*g:zip_nomax* +g:zip_shq pi_zip.txt /*g:zip_shq* +g:zip_unzipcmd pi_zip.txt /*g:zip_unzipcmd* +g:zip_zipcmd pi_zip.txt /*g:zip_zipcmd* +g; motion.txt /*g;* +g< message.txt /*g<* +g<Down> motion.txt /*g<Down>* +g<End> motion.txt /*g<End>* +g<Home> motion.txt /*g<Home>* +g<LeftMouse> tagsrch.txt /*g<LeftMouse>* +g<RightMouse> tagsrch.txt /*g<RightMouse>* +g<Up> motion.txt /*g<Up>* +g? change.txt /*g?* +g?? change.txt /*g??* +g?g? change.txt /*g?g?* +g@ map.txt /*g@* +gD pattern.txt /*gD* +gE motion.txt /*gE* +gF editing.txt /*gF* +gH visual.txt /*gH* +gI insert.txt /*gI* +gJ change.txt /*gJ* +gN visual.txt /*gN* +gP change.txt /*gP* +gQ intro.txt /*gQ* +gR change.txt /*gR* +gT tabpage.txt /*gT* +gU change.txt /*gU* +gUU change.txt /*gUU* +gUgU change.txt /*gUgU* +gV visual.txt /*gV* +g] tagsrch.txt /*g]* +g^ motion.txt /*g^* +g_ motion.txt /*g_* +g_CTRL-A various.txt /*g_CTRL-A* +g_CTRL-G editing.txt /*g_CTRL-G* +g_CTRL-H visual.txt /*g_CTRL-H* +g_CTRL-] tagsrch.txt /*g_CTRL-]* +g` motion.txt /*g`* +g`a motion.txt /*g`a* +ga various.txt /*ga* +garbagecollect() eval.txt /*garbagecollect()* +gd pattern.txt /*gd* +gdb debug.txt /*gdb* +ge motion.txt /*ge* +get() eval.txt /*get()* +get-ms-debuggers debug.txt /*get-ms-debuggers* +getbufline() eval.txt /*getbufline()* +getbufvar() eval.txt /*getbufvar()* +getchar() eval.txt /*getchar()* +getcharmod() eval.txt /*getcharmod()* +getcmdline() eval.txt /*getcmdline()* +getcmdpos() eval.txt /*getcmdpos()* +getcmdtype() eval.txt /*getcmdtype()* +getcwd() eval.txt /*getcwd()* +getfontname() eval.txt /*getfontname()* +getfperm() eval.txt /*getfperm()* +getfsize() eval.txt /*getfsize()* +getftime() eval.txt /*getftime()* +getftype() eval.txt /*getftype()* +getlatestvimscripts-install pi_getscript.txt /*getlatestvimscripts-install* +getline() eval.txt /*getline()* +getloclist() eval.txt /*getloclist()* +getmatches() eval.txt /*getmatches()* +getpid() eval.txt /*getpid()* +getpos() eval.txt /*getpos()* +getqflist() eval.txt /*getqflist()* +getreg() eval.txt /*getreg()* +getregtype() eval.txt /*getregtype()* +getscript pi_getscript.txt /*getscript* +getscript-autoinstall pi_getscript.txt /*getscript-autoinstall* +getscript-data pi_getscript.txt /*getscript-data* +getscript-history pi_getscript.txt /*getscript-history* +getscript-plugins pi_getscript.txt /*getscript-plugins* +getscript-start pi_getscript.txt /*getscript-start* +gettabvar() eval.txt /*gettabvar()* +gettabwinvar() eval.txt /*gettabwinvar()* +getwinposx() eval.txt /*getwinposx()* +getwinposy() eval.txt /*getwinposy()* +getwinvar() eval.txt /*getwinvar()* +gex starting.txt /*gex* +gf editing.txt /*gf* +gg motion.txt /*gg* +gh visual.txt /*gh* +gi insert.txt /*gi* +gj motion.txt /*gj* +gk motion.txt /*gk* +glob() eval.txt /*glob()* +global-ime mbyte.txt /*global-ime* +global-local options.txt /*global-local* +global-variable eval.txt /*global-variable* +global_markfilelist pi_netrw.txt /*global_markfilelist* +globpath() eval.txt /*globpath()* +glvs pi_getscript.txt /*glvs* +glvs-alg pi_getscript.txt /*glvs-alg* +glvs-algorithm pi_getscript.txt /*glvs-algorithm* +glvs-autoinstall pi_getscript.txt /*glvs-autoinstall* +glvs-contents pi_getscript.txt /*glvs-contents* +glvs-copyright pi_getscript.txt /*glvs-copyright* +glvs-data pi_getscript.txt /*glvs-data* +glvs-dist-install pi_getscript.txt /*glvs-dist-install* +glvs-hist pi_getscript.txt /*glvs-hist* +glvs-install pi_getscript.txt /*glvs-install* +glvs-options pi_getscript.txt /*glvs-options* +glvs-plugins pi_getscript.txt /*glvs-plugins* +glvs-usage pi_getscript.txt /*glvs-usage* +gm motion.txt /*gm* +gn visual.txt /*gn* +gnat#Insert_Tags_Header() ft_ada.txt /*gnat#Insert_Tags_Header()* +gnat#New() ft_ada.txt /*gnat#New()* +gnat-xref ft_ada.txt /*gnat-xref* +gnat_members ft_ada.txt /*gnat_members* +gnome-session gui_x11.txt /*gnome-session* +go motion.txt /*go* +gp change.txt /*gp* +gpm-mouse term.txt /*gpm-mouse* +gq change.txt /*gq* +gqap change.txt /*gqap* +gqgq change.txt /*gqgq* +gqq change.txt /*gqq* +gr change.txt /*gr* +graphic-option-gone version4.txt /*graphic-option-gone* +greek options.txt /*greek* +grep quickfix.txt /*grep* +groff.vim syntax.txt /*groff.vim* +gross-national-happiness intro.txt /*gross-national-happiness* +group-name syntax.txt /*group-name* +gs various.txt /*gs* +gsp.vim syntax.txt /*gsp.vim* +gstar pattern.txt /*gstar* +gt tabpage.txt /*gt* +gtk-tooltip-colors gui_x11.txt /*gtk-tooltip-colors* +gu change.txt /*gu* +gugu change.txt /*gugu* +gui gui.txt /*gui* +gui-IME gui.txt /*gui-IME* +gui-clipboard gui_w32.txt /*gui-clipboard* +gui-colors syntax.txt /*gui-colors* +gui-extras gui.txt /*gui-extras* +gui-footer debugger.txt /*gui-footer* +gui-fork gui_x11.txt /*gui-fork* +gui-functions usr_41.txt /*gui-functions* +gui-gnome gui_x11.txt /*gui-gnome* +gui-gnome-session gui_x11.txt /*gui-gnome-session* +gui-gtk gui_x11.txt /*gui-gtk* +gui-gtk-socketid gui_x11.txt /*gui-gtk-socketid* +gui-horiz-scroll gui.txt /*gui-horiz-scroll* +gui-init gui.txt /*gui-init* +gui-kde gui_x11.txt /*gui-kde* +gui-mouse gui.txt /*gui-mouse* +gui-mouse-focus gui.txt /*gui-mouse-focus* +gui-mouse-mapping gui.txt /*gui-mouse-mapping* +gui-mouse-modeless gui.txt /*gui-mouse-modeless* +gui-mouse-move gui.txt /*gui-mouse-move* +gui-mouse-select gui.txt /*gui-mouse-select* +gui-mouse-status gui.txt /*gui-mouse-status* +gui-mouse-various gui.txt /*gui-mouse-various* +gui-pty gui_x11.txt /*gui-pty* +gui-pty-erase gui_x11.txt /*gui-pty-erase* +gui-resources gui_x11.txt /*gui-resources* +gui-scrollbars gui.txt /*gui-scrollbars* +gui-selections gui.txt /*gui-selections* +gui-shell gui.txt /*gui-shell* +gui-shell-win32 gui_w32.txt /*gui-shell-win32* +gui-start gui.txt /*gui-start* +gui-toolbar gui.txt /*gui-toolbar* +gui-vert-scroll gui.txt /*gui-vert-scroll* +gui-w16 gui_w16.txt /*gui-w16* +gui-w32 gui_w32.txt /*gui-w32* +gui-w32-cmdargs gui_w32.txt /*gui-w32-cmdargs* +gui-w32-dialogs gui_w32.txt /*gui-w32-dialogs* +gui-w32-printing gui_w32.txt /*gui-w32-printing* +gui-w32-start gui_w32.txt /*gui-w32-start* +gui-w32-various gui_w32.txt /*gui-w32-various* +gui-w32-windowid gui_w32.txt /*gui-w32-windowid* +gui-w32s gui_w32.txt /*gui-w32s* +gui-win32-maximized gui_w32.txt /*gui-win32-maximized* +gui-x11 gui_x11.txt /*gui-x11* +gui-x11-athena gui_x11.txt /*gui-x11-athena* +gui-x11-compiling gui_x11.txt /*gui-x11-compiling* +gui-x11-gtk gui_x11.txt /*gui-x11-gtk* +gui-x11-kde gui_x11.txt /*gui-x11-kde* +gui-x11-misc gui_x11.txt /*gui-x11-misc* +gui-x11-motif gui_x11.txt /*gui-x11-motif* +gui-x11-neXtaw gui_x11.txt /*gui-x11-neXtaw* +gui-x11-printing gui_x11.txt /*gui-x11-printing* +gui-x11-start gui_x11.txt /*gui-x11-start* +gui-x11-various gui_x11.txt /*gui-x11-various* +gui.txt gui.txt /*gui.txt* +gui_w16.txt gui_w16.txt /*gui_w16.txt* +gui_w32.txt gui_w32.txt /*gui_w32.txt* +gui_x11.txt gui_x11.txt /*gui_x11.txt* +guifontwide_gtk2 options.txt /*guifontwide_gtk2* +guifontwide_win_mbyte options.txt /*guifontwide_win_mbyte* +guioptions_a options.txt /*guioptions_a* +guu change.txt /*guu* +gv visual.txt /*gv* +gview starting.txt /*gview* +gvim starting.txt /*gvim* +gvimdiff diff.txt /*gvimdiff* +gvimrc gui.txt /*gvimrc* +gw change.txt /*gw* +gwgw change.txt /*gwgw* +gww change.txt /*gww* +gzip pi_gzip.txt /*gzip* +gzip-autocmd pi_gzip.txt /*gzip-autocmd* +gzip-example autocmd.txt /*gzip-example* +gzip-helpfile tips.txt /*gzip-helpfile* +g~ change.txt /*g~* +g~g~ change.txt /*g~g~* +g~~ change.txt /*g~~* +h motion.txt /*h* +hangul hangulin.txt /*hangul* +hangulin.txt hangulin.txt /*hangulin.txt* +has() eval.txt /*has()* +has-patch eval.txt /*has-patch* +has-python if_pyth.txt /*has-python* +has_key() eval.txt /*has_key()* +haskell.vim syntax.txt /*haskell.vim* +haslocaldir() eval.txt /*haslocaldir()* +hasmapto() eval.txt /*hasmapto()* +hebrew hebrew.txt /*hebrew* +hebrew.txt hebrew.txt /*hebrew.txt* +help helphelp.txt /*help* +help-context help.txt /*help-context* +help-summary usr_02.txt /*help-summary* +help-tags tags 1 +help-translated helphelp.txt /*help-translated* +help-writing helphelp.txt /*help-writing* +help-xterm-window helphelp.txt /*help-xterm-window* +help.txt help.txt /*help.txt* +helpfile_name.txt helphelp.txt /*helpfile_name.txt* +helphelp helphelp.txt /*helphelp* +helphelp.txt helphelp.txt /*helphelp.txt* +hex-editing tips.txt /*hex-editing* +hex-number eval.txt /*hex-number* +hidden-buffer windows.txt /*hidden-buffer* +hidden-changed version5.txt /*hidden-changed* +hidden-menus gui.txt /*hidden-menus* +hidden-options options.txt /*hidden-options* +hidden-quit windows.txt /*hidden-quit* +highlight-args syntax.txt /*highlight-args* +highlight-changed version4.txt /*highlight-changed* +highlight-cterm syntax.txt /*highlight-cterm* +highlight-ctermbg syntax.txt /*highlight-ctermbg* +highlight-ctermfg syntax.txt /*highlight-ctermfg* +highlight-default syntax.txt /*highlight-default* +highlight-font syntax.txt /*highlight-font* +highlight-groups syntax.txt /*highlight-groups* +highlight-gui syntax.txt /*highlight-gui* +highlight-guibg syntax.txt /*highlight-guibg* +highlight-guifg syntax.txt /*highlight-guifg* +highlight-guisp syntax.txt /*highlight-guisp* +highlight-start syntax.txt /*highlight-start* +highlight-stop syntax.txt /*highlight-stop* +highlight-term syntax.txt /*highlight-term* +highlightID() eval.txt /*highlightID()* +highlight_exists() eval.txt /*highlight_exists()* +highlighting-functions usr_41.txt /*highlighting-functions* +hist-names eval.txt /*hist-names* +histadd() eval.txt /*histadd()* +histdel() eval.txt /*histdel()* +histget() eval.txt /*histget()* +histnr() eval.txt /*histnr()* +history cmdline.txt /*history* +history-functions usr_41.txt /*history-functions* +hit-enter message.txt /*hit-enter* +hit-enter-prompt message.txt /*hit-enter-prompt* +hit-return message.txt /*hit-return* +hitest.vim syntax.txt /*hitest.vim* +hjkl usr_02.txt /*hjkl* +hl-ColorColumn syntax.txt /*hl-ColorColumn* +hl-Conceal syntax.txt /*hl-Conceal* +hl-Cursor syntax.txt /*hl-Cursor* +hl-CursorColumn syntax.txt /*hl-CursorColumn* +hl-CursorIM syntax.txt /*hl-CursorIM* +hl-CursorLine syntax.txt /*hl-CursorLine* +hl-CursorLineNr syntax.txt /*hl-CursorLineNr* +hl-DiffAdd syntax.txt /*hl-DiffAdd* +hl-DiffChange syntax.txt /*hl-DiffChange* +hl-DiffDelete syntax.txt /*hl-DiffDelete* +hl-DiffText syntax.txt /*hl-DiffText* +hl-Directory syntax.txt /*hl-Directory* +hl-ErrorMsg syntax.txt /*hl-ErrorMsg* +hl-FoldColumn syntax.txt /*hl-FoldColumn* +hl-Folded syntax.txt /*hl-Folded* +hl-Ignore syntax.txt /*hl-Ignore* +hl-IncSearch syntax.txt /*hl-IncSearch* +hl-LineNr syntax.txt /*hl-LineNr* +hl-MatchParen syntax.txt /*hl-MatchParen* +hl-Menu syntax.txt /*hl-Menu* +hl-ModeMsg syntax.txt /*hl-ModeMsg* +hl-MoreMsg syntax.txt /*hl-MoreMsg* +hl-NonText syntax.txt /*hl-NonText* +hl-Normal syntax.txt /*hl-Normal* +hl-Pmenu syntax.txt /*hl-Pmenu* +hl-PmenuSbar syntax.txt /*hl-PmenuSbar* +hl-PmenuSel syntax.txt /*hl-PmenuSel* +hl-PmenuThumb syntax.txt /*hl-PmenuThumb* +hl-Question syntax.txt /*hl-Question* +hl-Scrollbar syntax.txt /*hl-Scrollbar* +hl-Search syntax.txt /*hl-Search* +hl-SignColumn syntax.txt /*hl-SignColumn* +hl-SpecialKey syntax.txt /*hl-SpecialKey* +hl-SpellBad syntax.txt /*hl-SpellBad* +hl-SpellCap syntax.txt /*hl-SpellCap* +hl-SpellLocal syntax.txt /*hl-SpellLocal* +hl-SpellRare syntax.txt /*hl-SpellRare* +hl-StatusLine syntax.txt /*hl-StatusLine* +hl-StatusLineNC syntax.txt /*hl-StatusLineNC* +hl-TabLine syntax.txt /*hl-TabLine* +hl-TabLineFill syntax.txt /*hl-TabLineFill* +hl-TabLineSel syntax.txt /*hl-TabLineSel* +hl-Title syntax.txt /*hl-Title* +hl-Tooltip syntax.txt /*hl-Tooltip* +hl-User1 syntax.txt /*hl-User1* +hl-User1..9 syntax.txt /*hl-User1..9* +hl-User9 syntax.txt /*hl-User9* +hl-VertSplit syntax.txt /*hl-VertSplit* +hl-Visual syntax.txt /*hl-Visual* +hl-VisualNOS syntax.txt /*hl-VisualNOS* +hl-WarningMsg syntax.txt /*hl-WarningMsg* +hl-WildMenu syntax.txt /*hl-WildMenu* +hlID() eval.txt /*hlID()* +hlexists() eval.txt /*hlexists()* +holy-grail index.txt /*holy-grail* +home intro.txt /*home* +home-replace editing.txt /*home-replace* +hostname() eval.txt /*hostname()* +how-do-i howto.txt /*how-do-i* +how-to howto.txt /*how-to* +howdoi howto.txt /*howdoi* +howto howto.txt /*howto* +howto.txt howto.txt /*howto.txt* +hpterm term.txt /*hpterm* +hpterm-color syntax.txt /*hpterm-color* +html-flavor insert.txt /*html-flavor* +html-indent indent.txt /*html-indent* +html-indenting indent.txt /*html-indenting* +html.vim syntax.txt /*html.vim* +htmlos.vim syntax.txt /*htmlos.vim* +http pi_netrw.txt /*http* +i insert.txt /*i* +i' motion.txt /*i'* +i( motion.txt /*i(* +i) motion.txt /*i)* +i< motion.txt /*i<* +i> motion.txt /*i>* +iB motion.txt /*iB* +iBus gui.txt /*iBus* +iW motion.txt /*iW* +i[ motion.txt /*i[* +i] motion.txt /*i]* +i_0_CTRL-D insert.txt /*i_0_CTRL-D* +i_<BS> insert.txt /*i_<BS>* +i_<C-End> insert.txt /*i_<C-End>* +i_<C-Home> insert.txt /*i_<C-Home>* +i_<C-Left> insert.txt /*i_<C-Left>* +i_<C-PageDown> tabpage.txt /*i_<C-PageDown>* +i_<C-PageUp> tabpage.txt /*i_<C-PageUp>* +i_<C-Right> insert.txt /*i_<C-Right>* +i_<CR> insert.txt /*i_<CR>* +i_<Del> insert.txt /*i_<Del>* +i_<Down> insert.txt /*i_<Down>* +i_<End> insert.txt /*i_<End>* +i_<Esc> insert.txt /*i_<Esc>* +i_<F1> helphelp.txt /*i_<F1>* +i_<Help> helphelp.txt /*i_<Help>* +i_<Home> insert.txt /*i_<Home>* +i_<Insert> insert.txt /*i_<Insert>* +i_<Left> insert.txt /*i_<Left>* +i_<LeftMouse> insert.txt /*i_<LeftMouse>* +i_<NL> insert.txt /*i_<NL>* +i_<PageDown> insert.txt /*i_<PageDown>* +i_<PageUp> insert.txt /*i_<PageUp>* +i_<Right> insert.txt /*i_<Right>* +i_<S-Down> insert.txt /*i_<S-Down>* +i_<S-Left> insert.txt /*i_<S-Left>* +i_<S-Right> insert.txt /*i_<S-Right>* +i_<S-ScrollWheelDown> insert.txt /*i_<S-ScrollWheelDown>* +i_<S-ScrollWheelLeft> insert.txt /*i_<S-ScrollWheelLeft>* +i_<S-ScrollWheelRight> insert.txt /*i_<S-ScrollWheelRight>* +i_<S-ScrollWheelUp> insert.txt /*i_<S-ScrollWheelUp>* +i_<S-Up> insert.txt /*i_<S-Up>* +i_<ScrollWheelDown> insert.txt /*i_<ScrollWheelDown>* +i_<ScrollWheelLeft> insert.txt /*i_<ScrollWheelLeft>* +i_<ScrollWheelRight> insert.txt /*i_<ScrollWheelRight>* +i_<ScrollWheelUp> insert.txt /*i_<ScrollWheelUp>* +i_<Tab> insert.txt /*i_<Tab>* +i_<Up> insert.txt /*i_<Up>* +i_BS insert.txt /*i_BS* +i_CTRL-<PageDown> tabpage.txt /*i_CTRL-<PageDown>* +i_CTRL-<PageUp> tabpage.txt /*i_CTRL-<PageUp>* +i_CTRL-@ insert.txt /*i_CTRL-@* +i_CTRL-A insert.txt /*i_CTRL-A* +i_CTRL-B-gone version5.txt /*i_CTRL-B-gone* +i_CTRL-C insert.txt /*i_CTRL-C* +i_CTRL-D insert.txt /*i_CTRL-D* +i_CTRL-E insert.txt /*i_CTRL-E* +i_CTRL-F indent.txt /*i_CTRL-F* +i_CTRL-G_<Down> insert.txt /*i_CTRL-G_<Down>* +i_CTRL-G_<Up> insert.txt /*i_CTRL-G_<Up>* +i_CTRL-G_CTRL-J insert.txt /*i_CTRL-G_CTRL-J* +i_CTRL-G_CTRL-K insert.txt /*i_CTRL-G_CTRL-K* +i_CTRL-G_j insert.txt /*i_CTRL-G_j* +i_CTRL-G_k insert.txt /*i_CTRL-G_k* +i_CTRL-G_u insert.txt /*i_CTRL-G_u* +i_CTRL-H insert.txt /*i_CTRL-H* +i_CTRL-I insert.txt /*i_CTRL-I* +i_CTRL-J insert.txt /*i_CTRL-J* +i_CTRL-K insert.txt /*i_CTRL-K* +i_CTRL-L insert.txt /*i_CTRL-L* +i_CTRL-M insert.txt /*i_CTRL-M* +i_CTRL-N insert.txt /*i_CTRL-N* +i_CTRL-O insert.txt /*i_CTRL-O* +i_CTRL-P insert.txt /*i_CTRL-P* +i_CTRL-Q insert.txt /*i_CTRL-Q* +i_CTRL-R insert.txt /*i_CTRL-R* +i_CTRL-R_= insert.txt /*i_CTRL-R_=* +i_CTRL-R_CTRL-O insert.txt /*i_CTRL-R_CTRL-O* +i_CTRL-R_CTRL-P insert.txt /*i_CTRL-R_CTRL-P* +i_CTRL-R_CTRL-R insert.txt /*i_CTRL-R_CTRL-R* +i_CTRL-T insert.txt /*i_CTRL-T* +i_CTRL-U insert.txt /*i_CTRL-U* +i_CTRL-V insert.txt /*i_CTRL-V* +i_CTRL-V_digit insert.txt /*i_CTRL-V_digit* +i_CTRL-W insert.txt /*i_CTRL-W* +i_CTRL-X insert.txt /*i_CTRL-X* +i_CTRL-X_CTRL-D insert.txt /*i_CTRL-X_CTRL-D* +i_CTRL-X_CTRL-E insert.txt /*i_CTRL-X_CTRL-E* +i_CTRL-X_CTRL-F insert.txt /*i_CTRL-X_CTRL-F* +i_CTRL-X_CTRL-I insert.txt /*i_CTRL-X_CTRL-I* +i_CTRL-X_CTRL-K insert.txt /*i_CTRL-X_CTRL-K* +i_CTRL-X_CTRL-L insert.txt /*i_CTRL-X_CTRL-L* +i_CTRL-X_CTRL-N insert.txt /*i_CTRL-X_CTRL-N* +i_CTRL-X_CTRL-O insert.txt /*i_CTRL-X_CTRL-O* +i_CTRL-X_CTRL-P insert.txt /*i_CTRL-X_CTRL-P* +i_CTRL-X_CTRL-S insert.txt /*i_CTRL-X_CTRL-S* +i_CTRL-X_CTRL-T insert.txt /*i_CTRL-X_CTRL-T* +i_CTRL-X_CTRL-U insert.txt /*i_CTRL-X_CTRL-U* +i_CTRL-X_CTRL-V insert.txt /*i_CTRL-X_CTRL-V* +i_CTRL-X_CTRL-Y insert.txt /*i_CTRL-X_CTRL-Y* +i_CTRL-X_CTRL-] insert.txt /*i_CTRL-X_CTRL-]* +i_CTRL-X_index index.txt /*i_CTRL-X_index* +i_CTRL-X_s insert.txt /*i_CTRL-X_s* +i_CTRL-Y insert.txt /*i_CTRL-Y* +i_CTRL-Z options.txt /*i_CTRL-Z* +i_CTRL-[ insert.txt /*i_CTRL-[* +i_CTRL-\_CTRL-G intro.txt /*i_CTRL-\\_CTRL-G* +i_CTRL-\_CTRL-N intro.txt /*i_CTRL-\\_CTRL-N* +i_CTRL-\_CTRL-O insert.txt /*i_CTRL-\\_CTRL-O* +i_CTRL-] insert.txt /*i_CTRL-]* +i_CTRL-^ insert.txt /*i_CTRL-^* +i_CTRL-_ insert.txt /*i_CTRL-_* +i_DEL insert.txt /*i_DEL* +i_Tab insert.txt /*i_Tab* +i_^_CTRL-D insert.txt /*i_^_CTRL-D* +i_backspacing insert.txt /*i_backspacing* +i_digraph digraph.txt /*i_digraph* +i_esc intro.txt /*i_esc* +i` motion.txt /*i`* +ia64.vim syntax.txt /*ia64.vim* +ib motion.txt /*ib* +iccf uganda.txt /*iccf* +iccf-donations uganda.txt /*iccf-donations* +icon-changed version4.txt /*icon-changed* +iconise starting.txt /*iconise* +iconize starting.txt /*iconize* +iconv() eval.txt /*iconv()* +iconv-dynamic mbyte.txt /*iconv-dynamic* +ident-search tips.txt /*ident-search* +idl-syntax syntax.txt /*idl-syntax* +idl.vim syntax.txt /*idl.vim* +if_cscop.txt if_cscop.txt /*if_cscop.txt* +if_lua.txt if_lua.txt /*if_lua.txt* +if_mzsch.txt if_mzsch.txt /*if_mzsch.txt* +if_ole.txt if_ole.txt /*if_ole.txt* +if_perl.txt if_perl.txt /*if_perl.txt* +if_pyth.txt if_pyth.txt /*if_pyth.txt* +if_ruby.txt if_ruby.txt /*if_ruby.txt* +if_sniff.txt if_sniff.txt /*if_sniff.txt* +if_tcl.txt if_tcl.txt /*if_tcl.txt* +ignore-errors eval.txt /*ignore-errors* +improved-autocmds-5.4 version5.txt /*improved-autocmds-5.4* +improved-quickfix version5.txt /*improved-quickfix* +improved-sessions version5.txt /*improved-sessions* +improved-viminfo version5.txt /*improved-viminfo* +improvements-5 version5.txt /*improvements-5* +improvements-6 version6.txt /*improvements-6* +improvements-7 version7.txt /*improvements-7* +inactive-buffer windows.txt /*inactive-buffer* +include-search tagsrch.txt /*include-search* +inclusive motion.txt /*inclusive* +incomp-small-6 version6.txt /*incomp-small-6* +incompatible-5 version5.txt /*incompatible-5* +incompatible-6 version6.txt /*incompatible-6* +incompatible-7 version7.txt /*incompatible-7* +indent() eval.txt /*indent()* +indent-expression indent.txt /*indent-expression* +indent.txt indent.txt /*indent.txt* +indentkeys-format indent.txt /*indentkeys-format* +index index.txt /*index* +index() eval.txt /*index()* +index.txt index.txt /*index.txt* +info-message starting.txt /*info-message* +inform.vim syntax.txt /*inform.vim* +informix ft_sql.txt /*informix* +initialization starting.txt /*initialization* +input() eval.txt /*input()* +inputdialog() eval.txt /*inputdialog()* +inputlist() eval.txt /*inputlist()* +inputrestore() eval.txt /*inputrestore()* +inputsave() eval.txt /*inputsave()* +inputsecret() eval.txt /*inputsecret()* +ins-completion insert.txt /*ins-completion* +ins-completion-menu insert.txt /*ins-completion-menu* +ins-expandtab insert.txt /*ins-expandtab* +ins-reverse rileft.txt /*ins-reverse* +ins-smarttab insert.txt /*ins-smarttab* +ins-softtabstop insert.txt /*ins-softtabstop* +ins-special-keys insert.txt /*ins-special-keys* +ins-special-special insert.txt /*ins-special-special* +ins-textwidth insert.txt /*ins-textwidth* +insert insert.txt /*insert* +insert() eval.txt /*insert()* +insert-index index.txt /*insert-index* +insert.txt insert.txt /*insert.txt* +insert_expand insert.txt /*insert_expand* +inserting insert.txt /*inserting* +inserting-ex insert.txt /*inserting-ex* +inserting-file insert.txt /*inserting-file* +insertmode-variable eval.txt /*insertmode-variable* +install usr_90.txt /*install* +install-home usr_90.txt /*install-home* +install-registry gui_w32.txt /*install-registry* +intel-itanium syntax.txt /*intel-itanium* +intellimouse-wheel-problems gui_w32.txt /*intellimouse-wheel-problems* +interactive-functions usr_41.txt /*interactive-functions* +interfaces-5.2 version5.txt /*interfaces-5.2* +internal-variables eval.txt /*internal-variables* +internal-wordlist spell.txt /*internal-wordlist* +internet intro.txt /*internet* +intro intro.txt /*intro* +intro.txt intro.txt /*intro.txt* +inverse syntax.txt /*inverse* +invert() eval.txt /*invert()* +ip motion.txt /*ip* +iquote motion.txt /*iquote* +is motion.txt /*is* +isdirectory() eval.txt /*isdirectory()* +islocked() eval.txt /*islocked()* +it motion.txt /*it* +italic syntax.txt /*italic* +items() eval.txt /*items()* +iw motion.txt /*iw* +i{ motion.txt /*i{* +i} motion.txt /*i}* +j motion.txt /*j* +java-cinoptions indent.txt /*java-cinoptions* +java-indenting indent.txt /*java-indenting* +java.vim syntax.txt /*java.vim* +javascript-cinoptions indent.txt /*javascript-cinoptions* +javascript-indenting indent.txt /*javascript-indenting* +join() eval.txt /*join()* +jsbterm-mouse options.txt /*jsbterm-mouse* +jtags tagsrch.txt /*jtags* +jump-motions motion.txt /*jump-motions* +jumplist motion.txt /*jumplist* +jumpto-diffs diff.txt /*jumpto-diffs* +k motion.txt /*k* +kcc uganda.txt /*kcc* +kde gui_x11.txt /*kde* +key-codes intro.txt /*key-codes* +key-codes-changed version4.txt /*key-codes-changed* +key-mapping map.txt /*key-mapping* +key-notation intro.txt /*key-notation* +key-variable eval.txt /*key-variable* +keycodes intro.txt /*keycodes* +keymap-accents mbyte.txt /*keymap-accents* +keymap-file-format mbyte.txt /*keymap-file-format* +keymap-hebrew mbyte.txt /*keymap-hebrew* +keypad-0 intro.txt /*keypad-0* +keypad-9 intro.txt /*keypad-9* +keypad-comma term.txt /*keypad-comma* +keypad-divide intro.txt /*keypad-divide* +keypad-end intro.txt /*keypad-end* +keypad-enter intro.txt /*keypad-enter* +keypad-home intro.txt /*keypad-home* +keypad-minus intro.txt /*keypad-minus* +keypad-multiply intro.txt /*keypad-multiply* +keypad-page-down intro.txt /*keypad-page-down* +keypad-page-up intro.txt /*keypad-page-up* +keypad-plus intro.txt /*keypad-plus* +keypad-point intro.txt /*keypad-point* +keys() eval.txt /*keys()* +known-bugs todo.txt /*known-bugs* +l motion.txt /*l* +l: eval.txt /*l:* +l:var eval.txt /*l:var* +lCursor mbyte.txt /*lCursor* +lace.vim syntax.txt /*lace.vim* +lang-variable eval.txt /*lang-variable* +language-mapping map.txt /*language-mapping* +last-pattern pattern.txt /*last-pattern* +last-position-jump eval.txt /*last-position-jump* +last_buffer_nr() eval.txt /*last_buffer_nr()* +latex-syntax syntax.txt /*latex-syntax* +lc_time-variable eval.txt /*lc_time-variable* +lcs-conceal options.txt /*lcs-conceal* +lcs-eol options.txt /*lcs-eol* +lcs-extends options.txt /*lcs-extends* +lcs-nbsp options.txt /*lcs-nbsp* +lcs-precedes options.txt /*lcs-precedes* +lcs-tab options.txt /*lcs-tab* +lcs-trail options.txt /*lcs-trail* +left-right-motions motion.txt /*left-right-motions* +len() eval.txt /*len()* +less various.txt /*less* +letter print.txt /*letter* +lex.vim syntax.txt /*lex.vim* +lhaskell.vim syntax.txt /*lhaskell.vim* +libcall() eval.txt /*libcall()* +libcallnr() eval.txt /*libcallnr()* +license uganda.txt /*license* +lid quickfix.txt /*lid* +lifelines.vim syntax.txt /*lifelines.vim* +limits vi_diff.txt /*limits* +line() eval.txt /*line()* +line-continuation repeat.txt /*line-continuation* +line2byte() eval.txt /*line2byte()* +linefeed intro.txt /*linefeed* +linewise motion.txt /*linewise* +linewise-register change.txt /*linewise-register* +linewise-visual visual.txt /*linewise-visual* +lisp.vim syntax.txt /*lisp.vim* +lispindent() eval.txt /*lispindent()* +list-functions usr_41.txt /*list-functions* +list-identity eval.txt /*list-identity* +list-index eval.txt /*list-index* +list-modification eval.txt /*list-modification* +list-repeat windows.txt /*list-repeat* +lite.vim syntax.txt /*lite.vim* +literal-string eval.txt /*literal-string* +lnum-variable eval.txt /*lnum-variable* +load-plugins starting.txt /*load-plugins* +load-vim-script repeat.txt /*load-vim-script* +local-additions help.txt /*local-additions* +local-function eval.txt /*local-function* +local-options options.txt /*local-options* +local-variable eval.txt /*local-variable* +local-variables eval.txt /*local-variables* +local_markfilelist pi_netrw.txt /*local_markfilelist* +locale mbyte.txt /*locale* +locale-name mbyte.txt /*locale-name* +localtime() eval.txt /*localtime()* +location-list quickfix.txt /*location-list* +location-list-window quickfix.txt /*location-list-window* +log() eval.txt /*log()* +log10() eval.txt /*log10()* +long-lines version5.txt /*long-lines* +love intro.txt /*love* +lowercase change.txt /*lowercase* +lpc.vim syntax.txt /*lpc.vim* +lua if_lua.txt /*lua* +lua-buffer if_lua.txt /*lua-buffer* +lua-commands if_lua.txt /*lua-commands* +lua-dict if_lua.txt /*lua-dict* +lua-eval if_lua.txt /*lua-eval* +lua-funcref if_lua.txt /*lua-funcref* +lua-list if_lua.txt /*lua-list* +lua-luaeval if_lua.txt /*lua-luaeval* +lua-vim if_lua.txt /*lua-vim* +lua-window if_lua.txt /*lua-window* +lua.vim syntax.txt /*lua.vim* +luaeval() eval.txt /*luaeval()* +m motion.txt /*m* +m' motion.txt /*m'* +m< motion.txt /*m<* +m> motion.txt /*m>* +m[ motion.txt /*m[* +m] motion.txt /*m]* +m` motion.txt /*m`* +mac os_mac.txt /*mac* +mac-bug os_mac.txt /*mac-bug* +mac-compile os_mac.txt /*mac-compile* +mac-faq os_mac.txt /*mac-faq* +mac-filename os_mac.txt /*mac-filename* +mac-lack os_mac.txt /*mac-lack* +mac-vimfile os_mac.txt /*mac-vimfile* +macintosh os_mac.txt /*macintosh* +macro map.txt /*macro* +mail-list intro.txt /*mail-list* +mail.vim syntax.txt /*mail.vim* +maillist intro.txt /*maillist* +maillist-archive intro.txt /*maillist-archive* +make.vim syntax.txt /*make.vim* +manual-copyright usr_01.txt /*manual-copyright* +map() eval.txt /*map()* +map-<SID> map.txt /*map-<SID>* +map-ambiguous map.txt /*map-ambiguous* +map-backtick tips.txt /*map-backtick* +map-comments map.txt /*map-comments* +map-error map.txt /*map-error* +map-examples map.txt /*map-examples* +map-keys-fails map.txt /*map-keys-fails* +map-listing map.txt /*map-listing* +map-modes map.txt /*map-modes* +map-multibyte map.txt /*map-multibyte* +map-overview map.txt /*map-overview* +map-precedence map.txt /*map-precedence* +map-self-destroy tips.txt /*map-self-destroy* +map-typing map.txt /*map-typing* +map-which-keys map.txt /*map-which-keys* +map.txt map.txt /*map.txt* +map_CTRL-C map.txt /*map_CTRL-C* +map_backslash map.txt /*map_backslash* +map_bar map.txt /*map_bar* +map_empty_rhs map.txt /*map_empty_rhs* +map_return map.txt /*map_return* +map_space_in_lhs map.txt /*map_space_in_lhs* +map_space_in_rhs map.txt /*map_space_in_rhs* +maparg() eval.txt /*maparg()* +mapcheck() eval.txt /*mapcheck()* +maple.vim syntax.txt /*maple.vim* +mapleader map.txt /*mapleader* +maplocalleader map.txt /*maplocalleader* +mapmode-c map.txt /*mapmode-c* +mapmode-i map.txt /*mapmode-i* +mapmode-ic map.txt /*mapmode-ic* +mapmode-l map.txt /*mapmode-l* +mapmode-n map.txt /*mapmode-n* +mapmode-nvo map.txt /*mapmode-nvo* +mapmode-o map.txt /*mapmode-o* +mapmode-s map.txt /*mapmode-s* +mapmode-v map.txt /*mapmode-v* +mapmode-x map.txt /*mapmode-x* +mapping map.txt /*mapping* +mapping-functions usr_41.txt /*mapping-functions* +mark motion.txt /*mark* +mark-functions usr_41.txt /*mark-functions* +mark-motions motion.txt /*mark-motions* +markfilelist pi_netrw.txt /*markfilelist* +masm.vim syntax.txt /*masm.vim* +match() eval.txt /*match()* +match-highlight pattern.txt /*match-highlight* +match-parens tips.txt /*match-parens* +matchadd() eval.txt /*matchadd()* +matcharg() eval.txt /*matcharg()* +matchdelete() eval.txt /*matchdelete()* +matchend() eval.txt /*matchend()* +matchit-install usr_05.txt /*matchit-install* +matchlist() eval.txt /*matchlist()* +matchparen pi_paren.txt /*matchparen* +matchstr() eval.txt /*matchstr()* +max() eval.txt /*max()* +mbyte-IME mbyte.txt /*mbyte-IME* +mbyte-XIM mbyte.txt /*mbyte-XIM* +mbyte-combining mbyte.txt /*mbyte-combining* +mbyte-composing mbyte.txt /*mbyte-composing* +mbyte-conversion mbyte.txt /*mbyte-conversion* +mbyte-encoding mbyte.txt /*mbyte-encoding* +mbyte-first mbyte.txt /*mbyte-first* +mbyte-fonts-MSwin mbyte.txt /*mbyte-fonts-MSwin* +mbyte-fonts-X11 mbyte.txt /*mbyte-fonts-X11* +mbyte-keymap mbyte.txt /*mbyte-keymap* +mbyte-locale mbyte.txt /*mbyte-locale* +mbyte-options mbyte.txt /*mbyte-options* +mbyte-terminal mbyte.txt /*mbyte-terminal* +mbyte-utf8 mbyte.txt /*mbyte-utf8* +mbyte.txt mbyte.txt /*mbyte.txt* +menu-changes-5.4 version5.txt /*menu-changes-5.4* +menu-examples gui.txt /*menu-examples* +menu-priority gui.txt /*menu-priority* +menu-separator gui.txt /*menu-separator* +menu.vim gui.txt /*menu.vim* +menus gui.txt /*menus* +merge diff.txt /*merge* +message-history message.txt /*message-history* +message.txt message.txt /*message.txt* +messages message.txt /*messages* +meta intro.txt /*meta* +min() eval.txt /*min()* +minimal-features os_msdos.txt /*minimal-features* +missing-options vi_diff.txt /*missing-options* +mkdir() eval.txt /*mkdir()* +mlang.txt mlang.txt /*mlang.txt* +mma.vim syntax.txt /*mma.vim* +mode() eval.txt /*mode()* +mode-Ex intro.txt /*mode-Ex* +mode-cmdline cmdline.txt /*mode-cmdline* +mode-ins-repl insert.txt /*mode-ins-repl* +mode-replace insert.txt /*mode-replace* +mode-switching intro.txt /*mode-switching* +modeless-and-clipboard version6.txt /*modeless-and-clipboard* +modeless-selection gui.txt /*modeless-selection* +modeline options.txt /*modeline* +modeline-local options.txt /*modeline-local* +modeline-version options.txt /*modeline-version* +moo.vim syntax.txt /*moo.vim* +more-compatible version5.txt /*more-compatible* +more-prompt message.txt /*more-prompt* +more-variables eval.txt /*more-variables* +motion.txt motion.txt /*motion.txt* +mouse-mode-table term.txt /*mouse-mode-table* +mouse-overview term.txt /*mouse-overview* +mouse-swap-buttons term.txt /*mouse-swap-buttons* +mouse-using term.txt /*mouse-using* +mouse_col-variable eval.txt /*mouse_col-variable* +mouse_lnum-variable eval.txt /*mouse_lnum-variable* +mouse_win-variable eval.txt /*mouse_win-variable* +movement intro.txt /*movement* +ms-dos os_msdos.txt /*ms-dos* +msdos os_msdos.txt /*msdos* +msdos-arrows os_msdos.txt /*msdos-arrows* +msdos-clipboard-limits os_msdos.txt /*msdos-clipboard-limits* +msdos-compiling os_msdos.txt /*msdos-compiling* +msdos-copy-paste os_msdos.txt /*msdos-copy-paste* +msdos-fname-extensions os_msdos.txt /*msdos-fname-extensions* +msdos-limitations os_msdos.txt /*msdos-limitations* +msdos-linked-files os_msdos.txt /*msdos-linked-files* +msdos-longfname os_msdos.txt /*msdos-longfname* +msdos-mode gui_w32.txt /*msdos-mode* +msdos-problems os_msdos.txt /*msdos-problems* +msdos-termcap os_msdos.txt /*msdos-termcap* +msdos-versions os_msdos.txt /*msdos-versions* +msql.vim syntax.txt /*msql.vim* +mswin.vim gui_w32.txt /*mswin.vim* +multi-byte mbyte.txt /*multi-byte* +multi-lang mlang.txt /*multi-lang* +multi-repeat repeat.txt /*multi-repeat* +multibyte mbyte.txt /*multibyte* +multibyte-ime mbyte.txt /*multibyte-ime* +multibyte-input mbyte.txt /*multibyte-input* +multilang mlang.txt /*multilang* +multilang-menus mlang.txt /*multilang-menus* +multilang-messages mlang.txt /*multilang-messages* +multilang-scripts mlang.txt /*multilang-scripts* +myfiletypefile syntax.txt /*myfiletypefile* +myscriptsfile syntax.txt /*myscriptsfile* +mysql ft_sql.txt /*mysql* +mysyntaxfile syntax.txt /*mysyntaxfile* +mysyntaxfile-add syntax.txt /*mysyntaxfile-add* +mysyntaxfile-replace syntax.txt /*mysyntaxfile-replace* +mzeval() eval.txt /*mzeval()* +mzscheme if_mzsch.txt /*mzscheme* +mzscheme-buffer if_mzsch.txt /*mzscheme-buffer* +mzscheme-commands if_mzsch.txt /*mzscheme-commands* +mzscheme-dynamic if_mzsch.txt /*mzscheme-dynamic* +mzscheme-examples if_mzsch.txt /*mzscheme-examples* +mzscheme-funcref if_mzsch.txt /*mzscheme-funcref* +mzscheme-mzeval if_mzsch.txt /*mzscheme-mzeval* +mzscheme-sandbox if_mzsch.txt /*mzscheme-sandbox* +mzscheme-threads if_mzsch.txt /*mzscheme-threads* +mzscheme-vim if_mzsch.txt /*mzscheme-vim* +mzscheme-vimext if_mzsch.txt /*mzscheme-vimext* +mzscheme-window if_mzsch.txt /*mzscheme-window* +n pattern.txt /*n* +nasm.vim syntax.txt /*nasm.vim* +navigation motion.txt /*navigation* +nb-commands netbeans.txt /*nb-commands* +nb-events netbeans.txt /*nb-events* +nb-functions netbeans.txt /*nb-functions* +nb-messages netbeans.txt /*nb-messages* +nb-protocol_errors netbeans.txt /*nb-protocol_errors* +nb-special netbeans.txt /*nb-special* +nb-terms netbeans.txt /*nb-terms* +ncf.vim syntax.txt /*ncf.vim* +netbeans netbeans.txt /*netbeans* +netbeans-commands netbeans.txt /*netbeans-commands* +netbeans-configure netbeans.txt /*netbeans-configure* +netbeans-debugging netbeans.txt /*netbeans-debugging* +netbeans-download netbeans.txt /*netbeans-download* +netbeans-integration netbeans.txt /*netbeans-integration* +netbeans-intro netbeans.txt /*netbeans-intro* +netbeans-keybindings netbeans.txt /*netbeans-keybindings* +netbeans-messages netbeans.txt /*netbeans-messages* +netbeans-parameters netbeans.txt /*netbeans-parameters* +netbeans-preparation netbeans.txt /*netbeans-preparation* +netbeans-problems netbeans.txt /*netbeans-problems* +netbeans-protocol netbeans.txt /*netbeans-protocol* +netbeans-run netbeans.txt /*netbeans-run* +netbeans-setup netbeans.txt /*netbeans-setup* +netbeans-support netbeans.txt /*netbeans-support* +netbeans.txt netbeans.txt /*netbeans.txt* +netreadfixup pi_netrw.txt /*netreadfixup* +netrw pi_netrw.txt /*netrw* +netrw-% pi_netrw.txt /*netrw-%* +netrw-- pi_netrw.txt /*netrw--* +netrw-C pi_netrw.txt /*netrw-C* +netrw-D pi_netrw.txt /*netrw-D* +netrw-O pi_netrw.txt /*netrw-O* +netrw-P pi_netrw.txt /*netrw-P* +netrw-R pi_netrw.txt /*netrw-R* +netrw-S pi_netrw.txt /*netrw-S* +netrw-Tb pi_netrw.txt /*netrw-Tb* +netrw-Th pi_netrw.txt /*netrw-Th* +netrw-U pi_netrw.txt /*netrw-U* +netrw-X pi_netrw.txt /*netrw-X* +netrw-a pi_netrw.txt /*netrw-a* +netrw-activate pi_netrw.txt /*netrw-activate* +netrw-bookmark pi_netrw.txt /*netrw-bookmark* +netrw-bookmarks pi_netrw.txt /*netrw-bookmarks* +netrw-browse pi_netrw.txt /*netrw-browse* +netrw-browse-cmds pi_netrw.txt /*netrw-browse-cmds* +netrw-browse-maps pi_netrw.txt /*netrw-browse-maps* +netrw-browser pi_netrw.txt /*netrw-browser* +netrw-browser-options pi_netrw.txt /*netrw-browser-options* +netrw-browser-settings pi_netrw.txt /*netrw-browser-settings* +netrw-browser-var pi_netrw.txt /*netrw-browser-var* +netrw-browsing pi_netrw.txt /*netrw-browsing* +netrw-c pi_netrw.txt /*netrw-c* +netrw-cadaver pi_netrw.txt /*netrw-cadaver* +netrw-chgup pi_netrw.txt /*netrw-chgup* +netrw-clean pi_netrw.txt /*netrw-clean* +netrw-contents pi_netrw.txt /*netrw-contents* +netrw-copyright pi_netrw.txt /*netrw-copyright* +netrw-cr pi_netrw.txt /*netrw-cr* +netrw-createfile pi_netrw.txt /*netrw-createfile* +netrw-credits pi_netrw.txt /*netrw-credits* +netrw-ctrl-h pi_netrw.txt /*netrw-ctrl-h* +netrw-ctrl-l pi_netrw.txt /*netrw-ctrl-l* +netrw-ctrl_l pi_netrw.txt /*netrw-ctrl_l* +netrw-curdir pi_netrw.txt /*netrw-curdir* +netrw-d pi_netrw.txt /*netrw-d* +netrw-debug pi_netrw.txt /*netrw-debug* +netrw-del pi_netrw.txt /*netrw-del* +netrw-delete pi_netrw.txt /*netrw-delete* +netrw-dir pi_netrw.txt /*netrw-dir* +netrw-dirlist pi_netrw.txt /*netrw-dirlist* +netrw-downdir pi_netrw.txt /*netrw-downdir* +netrw-edithide pi_netrw.txt /*netrw-edithide* +netrw-ex pi_netrw.txt /*netrw-ex* +netrw-explore pi_netrw.txt /*netrw-explore* +netrw-explore-cmds pi_netrw.txt /*netrw-explore-cmds* +netrw-externapp pi_netrw.txt /*netrw-externapp* +netrw-file pi_netrw.txt /*netrw-file* +netrw-filigree pi_netrw.txt /*netrw-filigree* +netrw-fixup pi_netrw.txt /*netrw-fixup* +netrw-ftp pi_netrw.txt /*netrw-ftp* +netrw-ftype pi_netrw.txt /*netrw-ftype* +netrw-gb pi_netrw.txt /*netrw-gb* +netrw-gd pi_netrw.txt /*netrw-gd* +netrw-getftype pi_netrw.txt /*netrw-getftype* +netrw-gf pi_netrw.txt /*netrw-gf* +netrw-gh pi_netrw.txt /*netrw-gh* +netrw-gp pi_netrw.txt /*netrw-gp* +netrw-gx pi_netrw.txt /*netrw-gx* +netrw-handler pi_netrw.txt /*netrw-handler* +netrw-help pi_netrw.txt /*netrw-help* +netrw-hexplore pi_netrw.txt /*netrw-hexplore* +netrw-hide pi_netrw.txt /*netrw-hide* +netrw-hiding pi_netrw.txt /*netrw-hiding* +netrw-history pi_netrw.txt /*netrw-history* +netrw-horiz pi_netrw.txt /*netrw-horiz* +netrw-i pi_netrw.txt /*netrw-i* +netrw-incompatible pi_netrw.txt /*netrw-incompatible* +netrw-internal-variables pi_netrw.txt /*netrw-internal-variables* +netrw-intro-browse pi_netrw.txt /*netrw-intro-browse* +netrw-leftmouse pi_netrw.txt /*netrw-leftmouse* +netrw-list pi_netrw.txt /*netrw-list* +netrw-listbookmark pi_netrw.txt /*netrw-listbookmark* +netrw-listhack pi_netrw.txt /*netrw-listhack* +netrw-login pi_netrw.txt /*netrw-login* +netrw-mB pi_netrw.txt /*netrw-mB* +netrw-mF pi_netrw.txt /*netrw-mF* +netrw-mT pi_netrw.txt /*netrw-mT* +netrw-mb pi_netrw.txt /*netrw-mb* +netrw-mc pi_netrw.txt /*netrw-mc* +netrw-md pi_netrw.txt /*netrw-md* +netrw-me pi_netrw.txt /*netrw-me* +netrw-mf pi_netrw.txt /*netrw-mf* +netrw-mg pi_netrw.txt /*netrw-mg* +netrw-mh pi_netrw.txt /*netrw-mh* +netrw-middlemouse pi_netrw.txt /*netrw-middlemouse* +netrw-ml_get pi_netrw.txt /*netrw-ml_get* +netrw-mm pi_netrw.txt /*netrw-mm* +netrw-mouse pi_netrw.txt /*netrw-mouse* +netrw-move pi_netrw.txt /*netrw-move* +netrw-mp pi_netrw.txt /*netrw-mp* +netrw-mr pi_netrw.txt /*netrw-mr* +netrw-ms pi_netrw.txt /*netrw-ms* +netrw-mt pi_netrw.txt /*netrw-mt* +netrw-mu pi_netrw.txt /*netrw-mu* +netrw-mx pi_netrw.txt /*netrw-mx* +netrw-mz pi_netrw.txt /*netrw-mz* +netrw-netrc pi_netrw.txt /*netrw-netrc* +netrw-nexplore pi_netrw.txt /*netrw-nexplore* +netrw-noload pi_netrw.txt /*netrw-noload* +netrw-nread pi_netrw.txt /*netrw-nread* +netrw-nwrite pi_netrw.txt /*netrw-nwrite* +netrw-o pi_netrw.txt /*netrw-o* +netrw-options pi_netrw.txt /*netrw-options* +netrw-p pi_netrw.txt /*netrw-p* +netrw-p1 pi_netrw.txt /*netrw-p1* +netrw-p10 pi_netrw.txt /*netrw-p10* +netrw-p11 pi_netrw.txt /*netrw-p11* +netrw-p12 pi_netrw.txt /*netrw-p12* +netrw-p13 pi_netrw.txt /*netrw-p13* +netrw-p14 pi_netrw.txt /*netrw-p14* +netrw-p15 pi_netrw.txt /*netrw-p15* +netrw-p2 pi_netrw.txt /*netrw-p2* +netrw-p3 pi_netrw.txt /*netrw-p3* +netrw-p4 pi_netrw.txt /*netrw-p4* +netrw-p5 pi_netrw.txt /*netrw-p5* +netrw-p6 pi_netrw.txt /*netrw-p6* +netrw-p7 pi_netrw.txt /*netrw-p7* +netrw-p8 pi_netrw.txt /*netrw-p8* +netrw-p9 pi_netrw.txt /*netrw-p9* +netrw-passwd pi_netrw.txt /*netrw-passwd* +netrw-password pi_netrw.txt /*netrw-password* +netrw-path pi_netrw.txt /*netrw-path* +netrw-pexplore pi_netrw.txt /*netrw-pexplore* +netrw-preview pi_netrw.txt /*netrw-preview* +netrw-problems pi_netrw.txt /*netrw-problems* +netrw-protocol pi_netrw.txt /*netrw-protocol* +netrw-prvwin pi_netrw.txt /*netrw-prvwin* +netrw-pscp pi_netrw.txt /*netrw-pscp* +netrw-psftp pi_netrw.txt /*netrw-psftp* +netrw-putty pi_netrw.txt /*netrw-putty* +netrw-qF pi_netrw.txt /*netrw-qF* +netrw-qb pi_netrw.txt /*netrw-qb* +netrw-qf pi_netrw.txt /*netrw-qf* +netrw-quickcom pi_netrw.txt /*netrw-quickcom* +netrw-quickcoms pi_netrw.txt /*netrw-quickcoms* +netrw-quickhelp pi_netrw.txt /*netrw-quickhelp* +netrw-quickmap pi_netrw.txt /*netrw-quickmap* +netrw-quickmaps pi_netrw.txt /*netrw-quickmaps* +netrw-r pi_netrw.txt /*netrw-r* +netrw-read pi_netrw.txt /*netrw-read* +netrw-ref pi_netrw.txt /*netrw-ref* +netrw-rename pi_netrw.txt /*netrw-rename* +netrw-reverse pi_netrw.txt /*netrw-reverse* +netrw-rexplore pi_netrw.txt /*netrw-rexplore* +netrw-rightmouse pi_netrw.txt /*netrw-rightmouse* +netrw-s pi_netrw.txt /*netrw-s* +netrw-settings pi_netrw.txt /*netrw-settings* +netrw-settings-window pi_netrw.txt /*netrw-settings-window* +netrw-sexplore pi_netrw.txt /*netrw-sexplore* +netrw-sort pi_netrw.txt /*netrw-sort* +netrw-sort-sequence pi_netrw.txt /*netrw-sort-sequence* +netrw-sortsequence pi_netrw.txt /*netrw-sortsequence* +netrw-source pi_netrw.txt /*netrw-source* +netrw-ssh-hack pi_netrw.txt /*netrw-ssh-hack* +netrw-star pi_netrw.txt /*netrw-star* +netrw-starpat pi_netrw.txt /*netrw-starpat* +netrw-starstar pi_netrw.txt /*netrw-starstar* +netrw-starstarpat pi_netrw.txt /*netrw-starstarpat* +netrw-start pi_netrw.txt /*netrw-start* +netrw-t pi_netrw.txt /*netrw-t* +netrw-texplore pi_netrw.txt /*netrw-texplore* +netrw-todo pi_netrw.txt /*netrw-todo* +netrw-trailingslash pi_netrw.txt /*netrw-trailingslash* +netrw-transparent pi_netrw.txt /*netrw-transparent* +netrw-u pi_netrw.txt /*netrw-u* +netrw-updir pi_netrw.txt /*netrw-updir* +netrw-urls pi_netrw.txt /*netrw-urls* +netrw-userpass pi_netrw.txt /*netrw-userpass* +netrw-v pi_netrw.txt /*netrw-v* +netrw-var pi_netrw.txt /*netrw-var* +netrw-variables pi_netrw.txt /*netrw-variables* +netrw-vexplore pi_netrw.txt /*netrw-vexplore* +netrw-windows-netrc pi_netrw.txt /*netrw-windows-netrc* +netrw-windows-s pi_netrw.txt /*netrw-windows-s* +netrw-write pi_netrw.txt /*netrw-write* +netrw-x pi_netrw.txt /*netrw-x* +netrw-xfer pi_netrw.txt /*netrw-xfer* +netrw.vim pi_netrw.txt /*netrw.vim* +netrw_filehandler pi_netrw.txt /*netrw_filehandler* +netterm-mouse options.txt /*netterm-mouse* +network pi_netrw.txt /*network* +new-5 version5.txt /*new-5* +new-6 version6.txt /*new-6* +new-7 version7.txt /*new-7* +new-GTK-GUI version5.txt /*new-GTK-GUI* +new-MzScheme version7.txt /*new-MzScheme* +new-Select-mode version5.txt /*new-Select-mode* +new-View version6.txt /*new-View* +new-argument-list version6.txt /*new-argument-list* +new-buftype version6.txt /*new-buftype* +new-cmdwin version6.txt /*new-cmdwin* +new-color-schemes version6.txt /*new-color-schemes* +new-commands version5.txt /*new-commands* +new-commands-5.4 version5.txt /*new-commands-5.4* +new-conceal version7.txt /*new-conceal* +new-debug-itf version6.txt /*new-debug-itf* +new-debug-mode version6.txt /*new-debug-mode* +new-debug-support version7.txt /*new-debug-support* +new-define-operator version7.txt /*new-define-operator* +new-diff-mode version6.txt /*new-diff-mode* +new-encryption version5.txt /*new-encryption* +new-evim version6.txt /*new-evim* +new-ex-commands-5.2 version5.txt /*new-ex-commands-5.2* +new-file-browser version6.txt /*new-file-browser* +new-file-writing version6.txt /*new-file-writing* +new-filetype filetype.txt /*new-filetype* +new-filetype-5.4 version5.txt /*new-filetype-5.4* +new-filetype-plugins version6.txt /*new-filetype-plugins* +new-filetype-scripts filetype.txt /*new-filetype-scripts* +new-folding version6.txt /*new-folding* +new-functions-5.2 version5.txt /*new-functions-5.2* +new-global-values version6.txt /*new-global-values* +new-highlighting version5.txt /*new-highlighting* +new-indent-flex version6.txt /*new-indent-flex* +new-items-6 version6.txt /*new-items-6* +new-items-7 version7.txt /*new-items-7* +new-line-continuation version5.txt /*new-line-continuation* +new-location-list version7.txt /*new-location-list* +new-lua version7.txt /*new-lua* +new-manpage-trans version7.txt /*new-manpage-trans* +new-map-expression version7.txt /*new-map-expression* +new-map-select version7.txt /*new-map-select* +new-more-encryption version7.txt /*new-more-encryption* +new-more-highlighting version7.txt /*new-more-highlighting* +new-more-unicode version7.txt /*new-more-unicode* +new-multi-byte version5.txt /*new-multi-byte* +new-multi-lang version6.txt /*new-multi-lang* +new-netrw-explore version7.txt /*new-netrw-explore* +new-network-files version6.txt /*new-network-files* +new-omni-completion version7.txt /*new-omni-completion* +new-onemore version7.txt /*new-onemore* +new-operator-mod version6.txt /*new-operator-mod* +new-options-5.2 version5.txt /*new-options-5.2* +new-options-5.4 version5.txt /*new-options-5.4* +new-perl-python version5.txt /*new-perl-python* +new-persistent-undo version7.txt /*new-persistent-undo* +new-plugins version6.txt /*new-plugins* +new-posix version7.txt /*new-posix* +new-print-multi-byte version7.txt /*new-print-multi-byte* +new-printing version6.txt /*new-printing* +new-python3 version7.txt /*new-python3* +new-regexp-engine version7.txt /*new-regexp-engine* +new-runtime-dir version5.txt /*new-runtime-dir* +new-script version5.txt /*new-script* +new-script-5.4 version5.txt /*new-script-5.4* +new-scroll-back version7.txt /*new-scroll-back* +new-search-path version6.txt /*new-search-path* +new-searchpat version6.txt /*new-searchpat* +new-session-files version5.txt /*new-session-files* +new-spell version7.txt /*new-spell* +new-tab-pages version7.txt /*new-tab-pages* +new-undo-branches version7.txt /*new-undo-branches* +new-unlisted-buffers version6.txt /*new-unlisted-buffers* +new-user-defined version5.txt /*new-user-defined* +new-user-manual version6.txt /*new-user-manual* +new-utf-8 version6.txt /*new-utf-8* +new-vertsplit version6.txt /*new-vertsplit* +new-vim-script version7.txt /*new-vim-script* +new-vim-server version6.txt /*new-vim-server* +new-vimgrep version7.txt /*new-vimgrep* +new-virtedit version6.txt /*new-virtedit* +news intro.txt /*news* +nextnonblank() eval.txt /*nextnonblank()* +nice todo.txt /*nice* +no-eval-feature eval.txt /*no-eval-feature* +no_buffers_menu gui.txt /*no_buffers_menu* +non-greedy pattern.txt /*non-greedy* +non-zero-arg eval.txt /*non-zero-arg* +normal-index index.txt /*normal-index* +not-compatible usr_01.txt /*not-compatible* +not-edited editing.txt /*not-edited* +notation intro.txt /*notation* +notepad gui_w32.txt /*notepad* +nr2char() eval.txt /*nr2char()* +nroff.vim syntax.txt /*nroff.vim* +number_relativenumber options.txt /*number_relativenumber* +numbered-function eval.txt /*numbered-function* +o insert.txt /*o* +o_CTRL-V motion.txt /*o_CTRL-V* +o_V motion.txt /*o_V* +o_v motion.txt /*o_v* +object-motions motion.txt /*object-motions* +object-select motion.txt /*object-select* +objects index.txt /*objects* +obtaining-exted netbeans.txt /*obtaining-exted* +ocaml.vim syntax.txt /*ocaml.vim* +octal eval.txt /*octal* +octal-nrformats options.txt /*octal-nrformats* +octal-number eval.txt /*octal-number* +oldfiles-variable eval.txt /*oldfiles-variable* +ole-activation if_ole.txt /*ole-activation* +ole-eval if_ole.txt /*ole-eval* +ole-gethwnd if_ole.txt /*ole-gethwnd* +ole-interface if_ole.txt /*ole-interface* +ole-methods if_ole.txt /*ole-methods* +ole-normal if_ole.txt /*ole-normal* +ole-registration if_ole.txt /*ole-registration* +ole-sendkeys if_ole.txt /*ole-sendkeys* +ole-setforeground if_ole.txt /*ole-setforeground* +omap-info map.txt /*omap-info* +omni-sql-completion ft_sql.txt /*omni-sql-completion* +online-help helphelp.txt /*online-help* +opening-window windows.txt /*opening-window* +operator motion.txt /*operator* +operator-variable eval.txt /*operator-variable* +option-backslash options.txt /*option-backslash* +option-list quickref.txt /*option-list* +option-summary options.txt /*option-summary* +option-window options.txt /*option-window* +options options.txt /*options* +options-changed version5.txt /*options-changed* +options.txt options.txt /*options.txt* +optwin options.txt /*optwin* +or() eval.txt /*or()* +oracle ft_sql.txt /*oracle* +os2 os_os2.txt /*os2* +os2ansi os_os2.txt /*os2ansi* +os390 os_390.txt /*os390* +os_390.txt os_390.txt /*os_390.txt* +os_amiga.txt os_amiga.txt /*os_amiga.txt* +os_beos.txt os_beos.txt /*os_beos.txt* +os_dos.txt os_dos.txt /*os_dos.txt* +os_mac.txt os_mac.txt /*os_mac.txt* +os_mint.txt os_mint.txt /*os_mint.txt* +os_msdos.txt os_msdos.txt /*os_msdos.txt* +os_os2.txt os_os2.txt /*os_os2.txt* +os_qnx.txt os_qnx.txt /*os_qnx.txt* +os_risc.txt os_risc.txt /*os_risc.txt* +os_unix.txt os_unix.txt /*os_unix.txt* +os_vms.txt os_vms.txt /*os_vms.txt* +os_win32.txt os_win32.txt /*os_win32.txt* +other-features vi_diff.txt /*other-features* +p change.txt /*p* +page-down intro.txt /*page-down* +page-up intro.txt /*page-up* +page_down intro.txt /*page_down* +page_up intro.txt /*page_up* +pager message.txt /*pager* +papp.vim syntax.txt /*papp.vim* +paragraph motion.txt /*paragraph* +pascal.vim syntax.txt /*pascal.vim* +pathshorten() eval.txt /*pathshorten()* +pattern pattern.txt /*pattern* +pattern-atoms pattern.txt /*pattern-atoms* +pattern-multi-byte pattern.txt /*pattern-multi-byte* +pattern-multi-items pattern.txt /*pattern-multi-items* +pattern-overview pattern.txt /*pattern-overview* +pattern-searches pattern.txt /*pattern-searches* +pattern.txt pattern.txt /*pattern.txt* +patterns-composing pattern.txt /*patterns-composing* +pdev-option print.txt /*pdev-option* +peace intro.txt /*peace* +penc-option print.txt /*penc-option* +perl if_perl.txt /*perl* +perl-Append if_perl.txt /*perl-Append* +perl-Buffer if_perl.txt /*perl-Buffer* +perl-Buffers if_perl.txt /*perl-Buffers* +perl-Count if_perl.txt /*perl-Count* +perl-Delete if_perl.txt /*perl-Delete* +perl-DoCommand if_perl.txt /*perl-DoCommand* +perl-Eval if_perl.txt /*perl-Eval* +perl-Get if_perl.txt /*perl-Get* +perl-GetCursor if_perl.txt /*perl-GetCursor* +perl-Msg if_perl.txt /*perl-Msg* +perl-Name if_perl.txt /*perl-Name* +perl-Number if_perl.txt /*perl-Number* +perl-Set if_perl.txt /*perl-Set* +perl-SetHeight if_perl.txt /*perl-SetHeight* +perl-SetOption if_perl.txt /*perl-SetOption* +perl-Windows if_perl.txt /*perl-Windows* +perl-compiling if_perl.txt /*perl-compiling* +perl-dynamic if_perl.txt /*perl-dynamic* +perl-editing if_perl.txt /*perl-editing* +perl-overview if_perl.txt /*perl-overview* +perl-patterns pattern.txt /*perl-patterns* +perl-using if_perl.txt /*perl-using* +perl.vim syntax.txt /*perl.vim* +persistent-undo undo.txt /*persistent-undo* +pexpr-option print.txt /*pexpr-option* +pfn-option print.txt /*pfn-option* +pheader-option print.txt /*pheader-option* +photon-fonts os_qnx.txt /*photon-fonts* +photon-gui os_qnx.txt /*photon-gui* +php-comment indent.txt /*php-comment* +php-indent indent.txt /*php-indent* +php-indenting indent.txt /*php-indenting* +php.vim syntax.txt /*php.vim* +php3.vim syntax.txt /*php3.vim* +phtml.vim syntax.txt /*phtml.vim* +pi_getscript.txt pi_getscript.txt /*pi_getscript.txt* +pi_gzip.txt pi_gzip.txt /*pi_gzip.txt* +pi_netrw.txt pi_netrw.txt /*pi_netrw.txt* +pi_paren.txt pi_paren.txt /*pi_paren.txt* +pi_spec.txt pi_spec.txt /*pi_spec.txt* +pi_tar.txt pi_tar.txt /*pi_tar.txt* +pi_vimball.txt pi_vimball.txt /*pi_vimball.txt* +pi_zip.txt pi_zip.txt /*pi_zip.txt* +pkzip options.txt /*pkzip* +plaintex.vim syntax.txt /*plaintex.vim* +plsql ft_sql.txt /*plsql* +plugin usr_05.txt /*plugin* +plugin-details filetype.txt /*plugin-details* +plugin-filetype usr_41.txt /*plugin-filetype* +plugin-special usr_41.txt /*plugin-special* +pmbcs-option print.txt /*pmbcs-option* +pmbfn-option print.txt /*pmbfn-option* +popt-option print.txt /*popt-option* +popup-menu gui.txt /*popup-menu* +popup-menu-added version5.txt /*popup-menu-added* +popupmenu-completion insert.txt /*popupmenu-completion* +popupmenu-keys insert.txt /*popupmenu-keys* +ports-5.2 version5.txt /*ports-5.2* +ports-6 version6.txt /*ports-6* +posix vi_diff.txt /*posix* +posix-compliance vi_diff.txt /*posix-compliance* +posix-screen-size vi_diff.txt /*posix-screen-size* +postgresql ft_sql.txt /*postgresql* +postscr.vim syntax.txt /*postscr.vim* +postscript-cjk-printing print.txt /*postscript-cjk-printing* +postscript-print-encoding print.txt /*postscript-print-encoding* +postscript-print-trouble print.txt /*postscript-print-trouble* +postscript-print-util print.txt /*postscript-print-util* +postscript-printing print.txt /*postscript-printing* +pow() eval.txt /*pow()* +ppwiz.vim syntax.txt /*ppwiz.vim* +press-enter message.txt /*press-enter* +press-return message.txt /*press-return* +prevcount-variable eval.txt /*prevcount-variable* +preview-window windows.txt /*preview-window* +prevnonblank() eval.txt /*prevnonblank()* +print-intro print.txt /*print-intro* +print-options print.txt /*print-options* +print.txt print.txt /*print.txt* +printf() eval.txt /*printf()* +printf-% eval.txt /*printf-%* +printf-E eval.txt /*printf-E* +printf-G eval.txt /*printf-G* +printf-X eval.txt /*printf-X* +printf-c eval.txt /*printf-c* +printf-d eval.txt /*printf-d* +printf-e eval.txt /*printf-e* +printf-f eval.txt /*printf-f* +printf-g eval.txt /*printf-g* +printf-o eval.txt /*printf-o* +printf-s eval.txt /*printf-s* +printf-x eval.txt /*printf-x* +printing print.txt /*printing* +printing-formfeed print.txt /*printing-formfeed* +profile repeat.txt /*profile* +profiling repeat.txt /*profiling* +profiling-variable eval.txt /*profiling-variable* +progname-variable eval.txt /*progname-variable* +progress.vim syntax.txt /*progress.vim* +pronounce intro.txt /*pronounce* +psql ft_sql.txt /*psql* +ptcap.vim syntax.txt /*ptcap.vim* +pterm-mouse options.txt /*pterm-mouse* +pumvisible() eval.txt /*pumvisible()* +put change.txt /*put* +put-Visual-mode change.txt /*put-Visual-mode* +py3eval() eval.txt /*py3eval()* +pyeval() eval.txt /*pyeval()* +python if_pyth.txt /*python* +python-.locked if_pyth.txt /*python-.locked* +python-2-and-3 if_pyth.txt /*python-2-and-3* +python-Dictionary if_pyth.txt /*python-Dictionary* +python-Function if_pyth.txt /*python-Function* +python-List if_pyth.txt /*python-List* +python-VIM_SPECIAL_PATH if_pyth.txt /*python-VIM_SPECIAL_PATH* +python-_get_paths if_pyth.txt /*python-_get_paths* +python-bindeval if_pyth.txt /*python-bindeval* +python-bindeval-objects if_pyth.txt /*python-bindeval-objects* +python-buffer if_pyth.txt /*python-buffer* +python-buffers if_pyth.txt /*python-buffers* +python-chdir if_pyth.txt /*python-chdir* +python-command if_pyth.txt /*python-command* +python-commands if_pyth.txt /*python-commands* +python-current if_pyth.txt /*python-current* +python-dynamic if_pyth.txt /*python-dynamic* +python-error if_pyth.txt /*python-error* +python-eval if_pyth.txt /*python-eval* +python-examples if_pyth.txt /*python-examples* +python-fchdir if_pyth.txt /*python-fchdir* +python-find_module if_pyth.txt /*python-find_module* +python-foreach_rtp if_pyth.txt /*python-foreach_rtp* +python-input if_pyth.txt /*python-input* +python-options if_pyth.txt /*python-options* +python-output if_pyth.txt /*python-output* +python-path_hook if_pyth.txt /*python-path_hook* +python-pyeval if_pyth.txt /*python-pyeval* +python-range if_pyth.txt /*python-range* +python-special-path if_pyth.txt /*python-special-path* +python-strwidth if_pyth.txt /*python-strwidth* +python-tabpage if_pyth.txt /*python-tabpage* +python-tabpages if_pyth.txt /*python-tabpages* +python-vars if_pyth.txt /*python-vars* +python-vim if_pyth.txt /*python-vim* +python-vvars if_pyth.txt /*python-vvars* +python-window if_pyth.txt /*python-window* +python-windows if_pyth.txt /*python-windows* +python.vim syntax.txt /*python.vim* +python2-directory if_pyth.txt /*python2-directory* +python3 if_pyth.txt /*python3* +python3-directory if_pyth.txt /*python3-directory* +pythonx-directory if_pyth.txt /*pythonx-directory* +q repeat.txt /*q* +q/ cmdline.txt /*q\/* +q: cmdline.txt /*q:* +q? cmdline.txt /*q?* +qnx os_qnx.txt /*qnx* +qnx-compiling os_qnx.txt /*qnx-compiling* +qnx-general os_qnx.txt /*qnx-general* +qnx-terminal os_qnx.txt /*qnx-terminal* +quake.vim syntax.txt /*quake.vim* +quickfix quickfix.txt /*quickfix* +quickfix-6 version6.txt /*quickfix-6* +quickfix-directory-stack quickfix.txt /*quickfix-directory-stack* +quickfix-error-lists quickfix.txt /*quickfix-error-lists* +quickfix-functions usr_41.txt /*quickfix-functions* +quickfix-gcc quickfix.txt /*quickfix-gcc* +quickfix-manx quickfix.txt /*quickfix-manx* +quickfix-perl quickfix.txt /*quickfix-perl* +quickfix-valid quickfix.txt /*quickfix-valid* +quickfix-window quickfix.txt /*quickfix-window* +quickfix.txt quickfix.txt /*quickfix.txt* +quickref quickref.txt /*quickref* +quickref.txt quickref.txt /*quickref.txt* +quote change.txt /*quote* +quote# change.txt /*quote#* +quote% change.txt /*quote%* +quote+ gui_x11.txt /*quote+* +quote- change.txt /*quote-* +quote. change.txt /*quote.* +quote/ change.txt /*quote\/* +quote0 change.txt /*quote0* +quote1 change.txt /*quote1* +quote2 change.txt /*quote2* +quote3 change.txt /*quote3* +quote4 change.txt /*quote4* +quote9 change.txt /*quote9* +quote: change.txt /*quote:* +quote= change.txt /*quote=* +quote_ change.txt /*quote_* +quote_# change.txt /*quote_#* +quote_% change.txt /*quote_%* +quote_- change.txt /*quote_-* +quote_. change.txt /*quote_.* +quote_/ change.txt /*quote_\/* +quote_: change.txt /*quote_:* +quote_= change.txt /*quote_=* +quote_alpha change.txt /*quote_alpha* +quote_number change.txt /*quote_number* +quote_quote change.txt /*quote_quote* +quote_~ change.txt /*quote_~* +quotea change.txt /*quotea* +quotecommandquote intro.txt /*quotecommandquote* +quoteplus gui_x11.txt /*quoteplus* +quotequote change.txt /*quotequote* +quotes quotes.txt /*quotes* +quotes.txt quotes.txt /*quotes.txt* +quotestar gui.txt /*quotestar* +quote~ change.txt /*quote~* +r change.txt /*r* +range() eval.txt /*range()* +raw-terminal-mode term.txt /*raw-terminal-mode* +rcp pi_netrw.txt /*rcp* +read-messages insert.txt /*read-messages* +read-only-share editing.txt /*read-only-share* +read-stdin version5.txt /*read-stdin* +readfile() eval.txt /*readfile()* +readline.vim syntax.txt /*readline.vim* +recording repeat.txt /*recording* +recover.txt recover.txt /*recover.txt* +recovery recover.txt /*recovery* +recursive_mapping map.txt /*recursive_mapping* +redo undo.txt /*redo* +redo-register undo.txt /*redo-register* +ref intro.txt /*ref* +reference intro.txt /*reference* +reference_toc help.txt /*reference_toc* +regexp pattern.txt /*regexp* +regexp-changes-5.4 version5.txt /*regexp-changes-5.4* +register sponsor.txt /*register* +register-faq sponsor.txt /*register-faq* +register-variable eval.txt /*register-variable* +registers change.txt /*registers* +regular-expression pattern.txt /*regular-expression* +reload editing.txt /*reload* +reltime() eval.txt /*reltime()* +reltimestr() eval.txt /*reltimestr()* +remote.txt remote.txt /*remote.txt* +remote_expr() eval.txt /*remote_expr()* +remote_foreground() eval.txt /*remote_foreground()* +remote_peek() eval.txt /*remote_peek()* +remote_read() eval.txt /*remote_read()* +remote_send() eval.txt /*remote_send()* +remove() eval.txt /*remove()* +remove-filetype filetype.txt /*remove-filetype* +remove-option-flags options.txt /*remove-option-flags* +rename() eval.txt /*rename()* +rename-files tips.txt /*rename-files* +repeat() eval.txt /*repeat()* +repeat.txt repeat.txt /*repeat.txt* +repeating repeat.txt /*repeating* +replacing change.txt /*replacing* +replacing-ex insert.txt /*replacing-ex* +reselect-Visual visual.txt /*reselect-Visual* +resolve() eval.txt /*resolve()* +restore-cursor usr_05.txt /*restore-cursor* +restore-position tips.txt /*restore-position* +restricted-mode starting.txt /*restricted-mode* +retab-example change.txt /*retab-example* +rethrow eval.txt /*rethrow* +reverse() eval.txt /*reverse()* +rexx.vim syntax.txt /*rexx.vim* +rgb.txt gui_w32.txt /*rgb.txt* +rgview starting.txt /*rgview* +rgvim starting.txt /*rgvim* +right-justify change.txt /*right-justify* +rileft rileft.txt /*rileft* +rileft.txt rileft.txt /*rileft.txt* +riscos os_risc.txt /*riscos* +rot13 change.txt /*rot13* +round() eval.txt /*round()* +rst.vim syntax.txt /*rst.vim* +rsync pi_netrw.txt /*rsync* +ruby if_ruby.txt /*ruby* +ruby-buffer if_ruby.txt /*ruby-buffer* +ruby-command if_ruby.txt /*ruby-command* +ruby-commands if_ruby.txt /*ruby-commands* +ruby-dynamic if_ruby.txt /*ruby-dynamic* +ruby-evaluate if_ruby.txt /*ruby-evaluate* +ruby-globals if_ruby.txt /*ruby-globals* +ruby-message if_ruby.txt /*ruby-message* +ruby-set_option if_ruby.txt /*ruby-set_option* +ruby-vim if_ruby.txt /*ruby-vim* +ruby-window if_ruby.txt /*ruby-window* +ruby.vim syntax.txt /*ruby.vim* +russian russian.txt /*russian* +russian-intro russian.txt /*russian-intro* +russian-issues russian.txt /*russian-issues* +russian-keymap russian.txt /*russian-keymap* +russian-l18n russian.txt /*russian-l18n* +russian.txt russian.txt /*russian.txt* +rview starting.txt /*rview* +rvim starting.txt /*rvim* +rxvt syntax.txt /*rxvt* +s change.txt /*s* +s/\& change.txt /*s\/\\&* +s/\0 change.txt /*s\/\\0* +s/\1 change.txt /*s\/\\1* +s/\2 change.txt /*s\/\\2* +s/\3 change.txt /*s\/\\3* +s/\9 change.txt /*s\/\\9* +s/\<CR> change.txt /*s\/\\<CR>* +s/\E change.txt /*s\/\\E* +s/\L change.txt /*s\/\\L* +s/\U change.txt /*s\/\\U* +s/\\ change.txt /*s\/\\\\* +s/\b change.txt /*s\/\\b* +s/\e change.txt /*s\/\\e* +s/\l change.txt /*s\/\\l* +s/\n change.txt /*s\/\\n* +s/\r change.txt /*s\/\\r* +s/\t change.txt /*s\/\\t* +s/\u change.txt /*s\/\\u* +s/\~ change.txt /*s\/\\~* +s:netrw_passwd pi_netrw.txt /*s:netrw_passwd* +s:var eval.txt /*s:var* +s<CR> change.txt /*s<CR>* +sandbox eval.txt /*sandbox* +sandbox-option eval.txt /*sandbox-option* +save-file editing.txt /*save-file* +save-settings starting.txt /*save-settings* +scheme.vim syntax.txt /*scheme.vim* +scp pi_netrw.txt /*scp* +screenattr() eval.txt /*screenattr()* +screenchar() eval.txt /*screenchar()* +screencol() eval.txt /*screencol()* +screenrow() eval.txt /*screenrow()* +script usr_41.txt /*script* +script-here if_perl.txt /*script-here* +script-local map.txt /*script-local* +script-variable eval.txt /*script-variable* +scriptnames-dictionary eval.txt /*scriptnames-dictionary* +scriptout-changed version4.txt /*scriptout-changed* +scroll-binding scroll.txt /*scroll-binding* +scroll-cursor scroll.txt /*scroll-cursor* +scroll-down scroll.txt /*scroll-down* +scroll-horizontal scroll.txt /*scroll-horizontal* +scroll-insert tips.txt /*scroll-insert* +scroll-mouse-wheel scroll.txt /*scroll-mouse-wheel* +scroll-region term.txt /*scroll-region* +scroll-smooth tips.txt /*scroll-smooth* +scroll-up scroll.txt /*scroll-up* +scroll.txt scroll.txt /*scroll.txt* +scrollbind-quickadj scroll.txt /*scrollbind-quickadj* +scrollbind-relative scroll.txt /*scrollbind-relative* +scrolling scroll.txt /*scrolling* +scrollstart-variable eval.txt /*scrollstart-variable* +sdl.vim syntax.txt /*sdl.vim* +search() eval.txt /*search()* +search()-sub-match eval.txt /*search()-sub-match* +search-commands pattern.txt /*search-commands* +search-offset pattern.txt /*search-offset* +search-pattern pattern.txt /*search-pattern* +search-range pattern.txt /*search-range* +search-replace change.txt /*search-replace* +searchdecl() eval.txt /*searchdecl()* +searchforward-variable eval.txt /*searchforward-variable* +searchpair() eval.txt /*searchpair()* +searchpairpos() eval.txt /*searchpairpos()* +searchpos() eval.txt /*searchpos()* +section motion.txt /*section* +sed.vim syntax.txt /*sed.vim* +self eval.txt /*self* +send-money sponsor.txt /*send-money* +send-to-menu gui_w32.txt /*send-to-menu* +sendto gui_w32.txt /*sendto* +sentence motion.txt /*sentence* +server-functions usr_41.txt /*server-functions* +server2client() eval.txt /*server2client()* +serverlist() eval.txt /*serverlist()* +servername-variable eval.txt /*servername-variable* +session-file starting.txt /*session-file* +set-option options.txt /*set-option* +set-spc-auto spell.txt /*set-spc-auto* +setbufvar() eval.txt /*setbufvar()* +setcmdpos() eval.txt /*setcmdpos()* +setline() eval.txt /*setline()* +setloclist() eval.txt /*setloclist()* +setmatches() eval.txt /*setmatches()* +setpos() eval.txt /*setpos()* +setqflist() eval.txt /*setqflist()* +setreg() eval.txt /*setreg()* +settabvar() eval.txt /*settabvar()* +settabwinvar() eval.txt /*settabwinvar()* +setting-guifont gui.txt /*setting-guifont* +setting-guitablabel tabpage.txt /*setting-guitablabel* +setting-tabline tabpage.txt /*setting-tabline* +setuid change.txt /*setuid* +setwinvar() eval.txt /*setwinvar()* +sftp pi_netrw.txt /*sftp* +sgml.vim syntax.txt /*sgml.vim* +sgr-mouse options.txt /*sgr-mouse* +sh-awk syntax.txt /*sh-awk* +sh-embed syntax.txt /*sh-embed* +sh.vim syntax.txt /*sh.vim* +sha256() eval.txt /*sha256()* +shell-window tips.txt /*shell-window* +shell_error-variable eval.txt /*shell_error-variable* +shellescape() eval.txt /*shellescape()* +shift intro.txt /*shift* +shift-left-right change.txt /*shift-left-right* +shiftwidth() eval.txt /*shiftwidth()* +short-name-changed version4.txt /*short-name-changed* +showing-menus gui.txt /*showing-menus* +sign-commands sign.txt /*sign-commands* +sign-intro sign.txt /*sign-intro* +sign-support sign.txt /*sign-support* +sign.txt sign.txt /*sign.txt* +signs sign.txt /*signs* +simple-change change.txt /*simple-change* +simplify() eval.txt /*simplify()* +simulated-command vi_diff.txt /*simulated-command* +sin() eval.txt /*sin()* +single-repeat repeat.txt /*single-repeat* +sinh() eval.txt /*sinh()* +skeleton autocmd.txt /*skeleton* +slice eval.txt /*slice* +slow-fast-terminal term.txt /*slow-fast-terminal* +slow-start starting.txt /*slow-start* +slow-terminal term.txt /*slow-terminal* +sniff if_sniff.txt /*sniff* +sniff-commands if_sniff.txt /*sniff-commands* +sniff-compiling if_sniff.txt /*sniff-compiling* +sniff-intro if_sniff.txt /*sniff-intro* +socket-interface netbeans.txt /*socket-interface* +sort() eval.txt /*sort()* +sorting change.txt /*sorting* +soundfold() eval.txt /*soundfold()* +space intro.txt /*space* +spec-customizing pi_spec.txt /*spec-customizing* +spec-how-to-use-it pi_spec.txt /*spec-how-to-use-it* +spec-setting-a-map pi_spec.txt /*spec-setting-a-map* +spec_chglog_format pi_spec.txt /*spec_chglog_format* +spec_chglog_prepend pi_spec.txt /*spec_chglog_prepend* +spec_chglog_release_info pi_spec.txt /*spec_chglog_release_info* +special-buffers windows.txt /*special-buffers* +speed-up tips.txt /*speed-up* +spell spell.txt /*spell* +spell-ACCENT spell.txt /*spell-ACCENT* +spell-AUTHOR spell.txt /*spell-AUTHOR* +spell-BAD spell.txt /*spell-BAD* +spell-BREAK spell.txt /*spell-BREAK* +spell-CHECKCOMPOUNDCASE spell.txt /*spell-CHECKCOMPOUNDCASE* +spell-CHECKCOMPOUNDDUP spell.txt /*spell-CHECKCOMPOUNDDUP* +spell-CHECKCOMPOUNDPATTERN spell.txt /*spell-CHECKCOMPOUNDPATTERN* +spell-CHECKCOMPOUNDREP spell.txt /*spell-CHECKCOMPOUNDREP* +spell-CHECKCOMPOUNDTRIPLE spell.txt /*spell-CHECKCOMPOUNDTRIPLE* +spell-CIRCUMFIX spell.txt /*spell-CIRCUMFIX* +spell-COMMON spell.txt /*spell-COMMON* +spell-COMPLEXPREFIXES spell.txt /*spell-COMPLEXPREFIXES* +spell-COMPOUND spell.txt /*spell-COMPOUND* +spell-COMPOUNDBEGIN spell.txt /*spell-COMPOUNDBEGIN* +spell-COMPOUNDEND spell.txt /*spell-COMPOUNDEND* +spell-COMPOUNDFIRST spell.txt /*spell-COMPOUNDFIRST* +spell-COMPOUNDFLAG spell.txt /*spell-COMPOUNDFLAG* +spell-COMPOUNDFORBIDFLAG spell.txt /*spell-COMPOUNDFORBIDFLAG* +spell-COMPOUNDMIDDLE spell.txt /*spell-COMPOUNDMIDDLE* +spell-COMPOUNDMIN spell.txt /*spell-COMPOUNDMIN* +spell-COMPOUNDPERMITFLAG spell.txt /*spell-COMPOUNDPERMITFLAG* +spell-COMPOUNDROOT spell.txt /*spell-COMPOUNDROOT* +spell-COMPOUNDRULE spell.txt /*spell-COMPOUNDRULE* +spell-COMPOUNDRULES spell.txt /*spell-COMPOUNDRULES* +spell-COMPOUNDSYLLABLE spell.txt /*spell-COMPOUNDSYLLABLE* +spell-COMPOUNDSYLMAX spell.txt /*spell-COMPOUNDSYLMAX* +spell-COMPOUNDWORDMAX spell.txt /*spell-COMPOUNDWORDMAX* +spell-COPYRIGHT spell.txt /*spell-COPYRIGHT* +spell-EMAIL spell.txt /*spell-EMAIL* +spell-FLAG spell.txt /*spell-FLAG* +spell-FOL spell.txt /*spell-FOL* +spell-FORBIDDENWORD spell.txt /*spell-FORBIDDENWORD* +spell-HOME spell.txt /*spell-HOME* +spell-KEEPCASE spell.txt /*spell-KEEPCASE* +spell-KEY spell.txt /*spell-KEY* +spell-LANG spell.txt /*spell-LANG* +spell-LEMMA_PRESENT spell.txt /*spell-LEMMA_PRESENT* +spell-LOW spell.txt /*spell-LOW* +spell-MAP spell.txt /*spell-MAP* +spell-MAXNGRAMSUGS spell.txt /*spell-MAXNGRAMSUGS* +spell-NAME spell.txt /*spell-NAME* +spell-NEEDAFFIX spell.txt /*spell-NEEDAFFIX* +spell-NEEDCOMPOUND spell.txt /*spell-NEEDCOMPOUND* +spell-NOBREAK spell.txt /*spell-NOBREAK* +spell-NOSPLITSUGS spell.txt /*spell-NOSPLITSUGS* +spell-NOSUGFILE spell.txt /*spell-NOSUGFILE* +spell-NOSUGGEST spell.txt /*spell-NOSUGGEST* +spell-ONLYINCOMPOUND spell.txt /*spell-ONLYINCOMPOUND* +spell-PFX spell.txt /*spell-PFX* +spell-PFXPOSTPONE spell.txt /*spell-PFXPOSTPONE* +spell-PSEUDOROOT spell.txt /*spell-PSEUDOROOT* +spell-RARE spell.txt /*spell-RARE* +spell-REP spell.txt /*spell-REP* +spell-SAL spell.txt /*spell-SAL* +spell-SET spell.txt /*spell-SET* +spell-SFX spell.txt /*spell-SFX* +spell-SLASH spell.txt /*spell-SLASH* +spell-SOFOFROM spell.txt /*spell-SOFOFROM* +spell-SOFOTO spell.txt /*spell-SOFOTO* +spell-SUGSWITHDOTS spell.txt /*spell-SUGSWITHDOTS* +spell-SYLLABLE spell.txt /*spell-SYLLABLE* +spell-SYLLABLENUM spell.txt /*spell-SYLLABLENUM* +spell-SpellFileMissing spell.txt /*spell-SpellFileMissing* +spell-TRY spell.txt /*spell-TRY* +spell-UPP spell.txt /*spell-UPP* +spell-VERSION spell.txt /*spell-VERSION* +spell-WORDCHARS spell.txt /*spell-WORDCHARS* +spell-aff-format spell.txt /*spell-aff-format* +spell-affix-chars spell.txt /*spell-affix-chars* +spell-affix-comment spell.txt /*spell-affix-comment* +spell-affix-flags spell.txt /*spell-affix-flags* +spell-affix-mbyte spell.txt /*spell-affix-mbyte* +spell-affix-not-supported spell.txt /*spell-affix-not-supported* +spell-affix-vim spell.txt /*spell-affix-vim* +spell-compound spell.txt /*spell-compound* +spell-dic-format spell.txt /*spell-dic-format* +spell-double-scoring spell.txt /*spell-double-scoring* +spell-file-format spell.txt /*spell-file-format* +spell-functions usr_41.txt /*spell-functions* +spell-german spell.txt /*spell-german* +spell-load spell.txt /*spell-load* +spell-midword spell.txt /*spell-midword* +spell-mkspell spell.txt /*spell-mkspell* +spell-quickstart spell.txt /*spell-quickstart* +spell-remarks spell.txt /*spell-remarks* +spell-russian spell.txt /*spell-russian* +spell-sug-file spell.txt /*spell-sug-file* +spell-syntax spell.txt /*spell-syntax* +spell-wordlist-format spell.txt /*spell-wordlist-format* +spell-yiddish spell.txt /*spell-yiddish* +spell.txt spell.txt /*spell.txt* +spellbadword() eval.txt /*spellbadword()* +spellfile-cleanup spell.txt /*spellfile-cleanup* +spellfile.vim spell.txt /*spellfile.vim* +spellsuggest() eval.txt /*spellsuggest()* +split() eval.txt /*split()* +splitfind windows.txt /*splitfind* +splitview windows.txt /*splitview* +sponsor sponsor.txt /*sponsor* +sponsor-faq sponsor.txt /*sponsor-faq* +sponsor.txt sponsor.txt /*sponsor.txt* +spoon os_unix.txt /*spoon* +spup.vim syntax.txt /*spup.vim* +sql-adding-dialects ft_sql.txt /*sql-adding-dialects* +sql-completion ft_sql.txt /*sql-completion* +sql-completion-columns ft_sql.txt /*sql-completion-columns* +sql-completion-customization ft_sql.txt /*sql-completion-customization* +sql-completion-dynamic ft_sql.txt /*sql-completion-dynamic* +sql-completion-filetypes ft_sql.txt /*sql-completion-filetypes* +sql-completion-maps ft_sql.txt /*sql-completion-maps* +sql-completion-procedures ft_sql.txt /*sql-completion-procedures* +sql-completion-static ft_sql.txt /*sql-completion-static* +sql-completion-tables ft_sql.txt /*sql-completion-tables* +sql-completion-tutorial ft_sql.txt /*sql-completion-tutorial* +sql-completion-views ft_sql.txt /*sql-completion-views* +sql-dialects ft_sql.txt /*sql-dialects* +sql-macros ft_sql.txt /*sql-macros* +sql-matchit ft_sql.txt /*sql-matchit* +sql-navigation ft_sql.txt /*sql-navigation* +sql-object-motions ft_sql.txt /*sql-object-motions* +sql-predefined-objects ft_sql.txt /*sql-predefined-objects* +sql-type-default ft_sql.txt /*sql-type-default* +sql-types ft_sql.txt /*sql-types* +sql.vim syntax.txt /*sql.vim* +sqlanywhere ft_sql.txt /*sqlanywhere* +sqlanywhere.vim syntax.txt /*sqlanywhere.vim* +sqlgettype ft_sql.txt /*sqlgettype* +sqlinformix.vim syntax.txt /*sqlinformix.vim* +sqlj ft_sql.txt /*sqlj* +sqlserver ft_sql.txt /*sqlserver* +sqlsettype ft_sql.txt /*sqlsettype* +sqrt() eval.txt /*sqrt()* +sscanf eval.txt /*sscanf* +standard-plugin usr_05.txt /*standard-plugin* +standard-plugin-list help.txt /*standard-plugin-list* +standout syntax.txt /*standout* +star pattern.txt /*star* +starstar editing.txt /*starstar* +starstar-wildcard editing.txt /*starstar-wildcard* +start-of-file pattern.txt /*start-of-file* +starting starting.txt /*starting* +starting-amiga starting.txt /*starting-amiga* +starting.txt starting.txt /*starting.txt* +startup starting.txt /*startup* +startup-options starting.txt /*startup-options* +startup-terminal term.txt /*startup-terminal* +static-tag tagsrch.txt /*static-tag* +status-line windows.txt /*status-line* +statusmsg-variable eval.txt /*statusmsg-variable* +sticky-type-checking eval.txt /*sticky-type-checking* +str2float() eval.txt /*str2float()* +str2nr() eval.txt /*str2nr()* +strcasestr() eval.txt /*strcasestr()* +strchars() eval.txt /*strchars()* +strchr() eval.txt /*strchr()* +strcspn() eval.txt /*strcspn()* +strdisplaywidth() eval.txt /*strdisplaywidth()* +strftime() eval.txt /*strftime()* +stridx() eval.txt /*stridx()* +string() eval.txt /*string()* +string-functions usr_41.txt /*string-functions* +string-match eval.txt /*string-match* +strlen() eval.txt /*strlen()* +strpart() eval.txt /*strpart()* +strpbrk() eval.txt /*strpbrk()* +strrchr() eval.txt /*strrchr()* +strridx() eval.txt /*strridx()* +strspn() eval.txt /*strspn()* +strstr() eval.txt /*strstr()* +strtrans() eval.txt /*strtrans()* +strwidth() eval.txt /*strwidth()* +style-changes develop.txt /*style-changes* +style-examples develop.txt /*style-examples* +style-functions develop.txt /*style-functions* +style-names develop.txt /*style-names* +style-spaces develop.txt /*style-spaces* +style-various develop.txt /*style-various* +sub-menu-priority gui.txt /*sub-menu-priority* +sub-replace-\= change.txt /*sub-replace-\\=* +sub-replace-expression change.txt /*sub-replace-expression* +sub-replace-special change.txt /*sub-replace-special* +sublist eval.txt /*sublist* +submatch() eval.txt /*submatch()* +subscribe-maillist intro.txt /*subscribe-maillist* +substitute() eval.txt /*substitute()* +substitute-CR version6.txt /*substitute-CR* +suffixes cmdline.txt /*suffixes* +suspend starting.txt /*suspend* +swap-exists-choices usr_11.txt /*swap-exists-choices* +swap-file recover.txt /*swap-file* +swapchoice-variable eval.txt /*swapchoice-variable* +swapcommand-variable eval.txt /*swapcommand-variable* +swapfile-changed version4.txt /*swapfile-changed* +swapname-variable eval.txt /*swapname-variable* +sybase ft_sql.txt /*sybase* +syn-sync-grouphere syntax.txt /*syn-sync-grouphere* +syn-sync-groupthere syntax.txt /*syn-sync-groupthere* +syn-sync-linecont syntax.txt /*syn-sync-linecont* +synID() eval.txt /*synID()* +synIDattr() eval.txt /*synIDattr()* +synIDtrans() eval.txt /*synIDtrans()* +syncbind scroll.txt /*syncbind* +syncolor syntax.txt /*syncolor* +synconcealed() eval.txt /*synconcealed()* +synload-1 syntax.txt /*synload-1* +synload-2 syntax.txt /*synload-2* +synload-3 syntax.txt /*synload-3* +synload-4 syntax.txt /*synload-4* +synload-5 syntax.txt /*synload-5* +synload-6 syntax.txt /*synload-6* +synstack() eval.txt /*synstack()* +syntax syntax.txt /*syntax* +syntax-functions usr_41.txt /*syntax-functions* +syntax-highlighting syntax.txt /*syntax-highlighting* +syntax-loading syntax.txt /*syntax-loading* +syntax-printing usr_06.txt /*syntax-printing* +syntax.txt syntax.txt /*syntax.txt* +syntax_cmd syntax.txt /*syntax_cmd* +sys-file-list help.txt /*sys-file-list* +sysmouse term.txt /*sysmouse* +system() eval.txt /*system()* +system-functions usr_41.txt /*system-functions* +system-vimrc starting.txt /*system-vimrc* +s~ change.txt /*s~* +t motion.txt /*t* +t: eval.txt /*t:* +t:var eval.txt /*t:var* +t_#2 term.txt /*t_#2* +t_#4 term.txt /*t_#4* +t_%1 term.txt /*t_%1* +t_%i term.txt /*t_%i* +t_&8 term.txt /*t_&8* +t_@7 term.txt /*t_@7* +t_AB term.txt /*t_AB* +t_AF term.txt /*t_AF* +t_AL term.txt /*t_AL* +t_CS term.txt /*t_CS* +t_CV term.txt /*t_CV* +t_Ce term.txt /*t_Ce* +t_Co term.txt /*t_Co* +t_Cs term.txt /*t_Cs* +t_DL term.txt /*t_DL* +t_EI term.txt /*t_EI* +t_F1 term.txt /*t_F1* +t_F2 term.txt /*t_F2* +t_F3 term.txt /*t_F3* +t_F4 term.txt /*t_F4* +t_F5 term.txt /*t_F5* +t_F6 term.txt /*t_F6* +t_F7 term.txt /*t_F7* +t_F8 term.txt /*t_F8* +t_F9 term.txt /*t_F9* +t_IE term.txt /*t_IE* +t_IS term.txt /*t_IS* +t_K1 term.txt /*t_K1* +t_K3 term.txt /*t_K3* +t_K4 term.txt /*t_K4* +t_K5 term.txt /*t_K5* +t_K6 term.txt /*t_K6* +t_K7 term.txt /*t_K7* +t_K8 term.txt /*t_K8* +t_K9 term.txt /*t_K9* +t_KA term.txt /*t_KA* +t_KB term.txt /*t_KB* +t_KC term.txt /*t_KC* +t_KD term.txt /*t_KD* +t_KE term.txt /*t_KE* +t_KF term.txt /*t_KF* +t_KG term.txt /*t_KG* +t_KH term.txt /*t_KH* +t_KI term.txt /*t_KI* +t_KJ term.txt /*t_KJ* +t_KK term.txt /*t_KK* +t_KL term.txt /*t_KL* +t_RI term.txt /*t_RI* +t_RV term.txt /*t_RV* +t_SI term.txt /*t_SI* +t_Sb term.txt /*t_Sb* +t_Sf term.txt /*t_Sf* +t_WP term.txt /*t_WP* +t_WS term.txt /*t_WS* +t_ZH term.txt /*t_ZH* +t_ZR term.txt /*t_ZR* +t_al term.txt /*t_al* +t_bc term.txt /*t_bc* +t_cd term.txt /*t_cd* +t_cdl version4.txt /*t_cdl* +t_ce term.txt /*t_ce* +t_ci version4.txt /*t_ci* +t_cil version4.txt /*t_cil* +t_cl term.txt /*t_cl* +t_cm term.txt /*t_cm* +t_cri version4.txt /*t_cri* +t_cs term.txt /*t_cs* +t_csc version4.txt /*t_csc* +t_cv version4.txt /*t_cv* +t_cvv version4.txt /*t_cvv* +t_da term.txt /*t_da* +t_db term.txt /*t_db* +t_dl term.txt /*t_dl* +t_ed version4.txt /*t_ed* +t_el version4.txt /*t_el* +t_f1 version4.txt /*t_f1* +t_f10 version4.txt /*t_f10* +t_f2 version4.txt /*t_f2* +t_f3 version4.txt /*t_f3* +t_f4 version4.txt /*t_f4* +t_f5 version4.txt /*t_f5* +t_f6 version4.txt /*t_f6* +t_f7 version4.txt /*t_f7* +t_f8 version4.txt /*t_f8* +t_f9 version4.txt /*t_f9* +t_fs term.txt /*t_fs* +t_help version4.txt /*t_help* +t_il version4.txt /*t_il* +t_k1 term.txt /*t_k1* +t_k2 term.txt /*t_k2* +t_k3 term.txt /*t_k3* +t_k4 term.txt /*t_k4* +t_k5 term.txt /*t_k5* +t_k6 term.txt /*t_k6* +t_k7 term.txt /*t_k7* +t_k8 term.txt /*t_k8* +t_k9 term.txt /*t_k9* +t_k; term.txt /*t_k;* +t_kB term.txt /*t_kB* +t_kD term.txt /*t_kD* +t_kI term.txt /*t_kI* +t_kN term.txt /*t_kN* +t_kP term.txt /*t_kP* +t_kb term.txt /*t_kb* +t_kd term.txt /*t_kd* +t_ke term.txt /*t_ke* +t_kh term.txt /*t_kh* +t_kl term.txt /*t_kl* +t_kr term.txt /*t_kr* +t_ks term.txt /*t_ks* +t_ku term.txt /*t_ku* +t_le term.txt /*t_le* +t_mb term.txt /*t_mb* +t_md term.txt /*t_md* +t_me term.txt /*t_me* +t_mr term.txt /*t_mr* +t_ms term.txt /*t_ms* +t_nd term.txt /*t_nd* +t_op term.txt /*t_op* +t_se term.txt /*t_se* +t_sf1 version4.txt /*t_sf1* +t_sf10 version4.txt /*t_sf10* +t_sf2 version4.txt /*t_sf2* +t_sf3 version4.txt /*t_sf3* +t_sf4 version4.txt /*t_sf4* +t_sf5 version4.txt /*t_sf5* +t_sf6 version4.txt /*t_sf6* +t_sf7 version4.txt /*t_sf7* +t_sf8 version4.txt /*t_sf8* +t_sf9 version4.txt /*t_sf9* +t_skd version4.txt /*t_skd* +t_skl version4.txt /*t_skl* +t_skr version4.txt /*t_skr* +t_sku version4.txt /*t_sku* +t_so term.txt /*t_so* +t_sr term.txt /*t_sr* +t_star7 term.txt /*t_star7* +t_tb version4.txt /*t_tb* +t_te term.txt /*t_te* +t_ti term.txt /*t_ti* +t_tp version4.txt /*t_tp* +t_ts term.txt /*t_ts* +t_ts_old version4.txt /*t_ts_old* +t_u7 term.txt /*t_u7* +t_ue term.txt /*t_ue* +t_undo version4.txt /*t_undo* +t_us term.txt /*t_us* +t_ut term.txt /*t_ut* +t_vb term.txt /*t_vb* +t_ve term.txt /*t_ve* +t_vi term.txt /*t_vi* +t_vs term.txt /*t_vs* +t_xs term.txt /*t_xs* +tab intro.txt /*tab* +tab-page tabpage.txt /*tab-page* +tab-page-commands tabpage.txt /*tab-page-commands* +tab-page-intro tabpage.txt /*tab-page-intro* +tab-page-other tabpage.txt /*tab-page-other* +tabline-menu tabpage.txt /*tabline-menu* +tabpage tabpage.txt /*tabpage* +tabpage-variable eval.txt /*tabpage-variable* +tabpage.txt tabpage.txt /*tabpage.txt* +tabpagebuflist() eval.txt /*tabpagebuflist()* +tabpagenr() eval.txt /*tabpagenr()* +tabpagewinnr() eval.txt /*tabpagewinnr()* +tag tagsrch.txt /*tag* +tag-! tagsrch.txt /*tag-!* +tag-any-white tagsrch.txt /*tag-any-white* +tag-binary-search tagsrch.txt /*tag-binary-search* +tag-blocks motion.txt /*tag-blocks* +tag-commands tagsrch.txt /*tag-commands* +tag-details tagsrch.txt /*tag-details* +tag-highlight syntax.txt /*tag-highlight* +tag-matchlist tagsrch.txt /*tag-matchlist* +tag-old-static tagsrch.txt /*tag-old-static* +tag-overloaded version5.txt /*tag-overloaded* +tag-preview tagsrch.txt /*tag-preview* +tag-priority tagsrch.txt /*tag-priority* +tag-regexp tagsrch.txt /*tag-regexp* +tag-search tagsrch.txt /*tag-search* +tag-security tagsrch.txt /*tag-security* +tag-skip-file tagsrch.txt /*tag-skip-file* +tag-stack tagsrch.txt /*tag-stack* +tagfiles() eval.txt /*tagfiles()* +taglist() eval.txt /*taglist()* +tags tagsrch.txt /*tags* +tags-and-searches tagsrch.txt /*tags-and-searches* +tags-file-changed version5.txt /*tags-file-changed* +tags-file-format tagsrch.txt /*tags-file-format* +tags-option tagsrch.txt /*tags-option* +tagsrch.txt tagsrch.txt /*tagsrch.txt* +tagstack tagsrch.txt /*tagstack* +tan() eval.txt /*tan()* +tanh() eval.txt /*tanh()* +tar pi_tar.txt /*tar* +tar-contents pi_tar.txt /*tar-contents* +tar-copyright pi_tar.txt /*tar-copyright* +tar-history pi_tar.txt /*tar-history* +tar-manual pi_tar.txt /*tar-manual* +tar-options pi_tar.txt /*tar-options* +tar-usage pi_tar.txt /*tar-usage* +tcl if_tcl.txt /*tcl* +tcl-beep if_tcl.txt /*tcl-beep* +tcl-buffer if_tcl.txt /*tcl-buffer* +tcl-buffer-append if_tcl.txt /*tcl-buffer-append* +tcl-buffer-cmds if_tcl.txt /*tcl-buffer-cmds* +tcl-buffer-command if_tcl.txt /*tcl-buffer-command* +tcl-buffer-count if_tcl.txt /*tcl-buffer-count* +tcl-buffer-delcmd if_tcl.txt /*tcl-buffer-delcmd* +tcl-buffer-delete if_tcl.txt /*tcl-buffer-delete* +tcl-buffer-expr if_tcl.txt /*tcl-buffer-expr* +tcl-buffer-get if_tcl.txt /*tcl-buffer-get* +tcl-buffer-insert if_tcl.txt /*tcl-buffer-insert* +tcl-buffer-last if_tcl.txt /*tcl-buffer-last* +tcl-buffer-mark if_tcl.txt /*tcl-buffer-mark* +tcl-buffer-option if_tcl.txt /*tcl-buffer-option* +tcl-buffer-set if_tcl.txt /*tcl-buffer-set* +tcl-buffer-windows if_tcl.txt /*tcl-buffer-windows* +tcl-bugs if_tcl.txt /*tcl-bugs* +tcl-command if_tcl.txt /*tcl-command* +tcl-commands if_tcl.txt /*tcl-commands* +tcl-dynamic if_tcl.txt /*tcl-dynamic* +tcl-ex-commands if_tcl.txt /*tcl-ex-commands* +tcl-examples if_tcl.txt /*tcl-examples* +tcl-expr if_tcl.txt /*tcl-expr* +tcl-linenumbers if_tcl.txt /*tcl-linenumbers* +tcl-misc if_tcl.txt /*tcl-misc* +tcl-option if_tcl.txt /*tcl-option* +tcl-output if_tcl.txt /*tcl-output* +tcl-var-current if_tcl.txt /*tcl-var-current* +tcl-var-lbase if_tcl.txt /*tcl-var-lbase* +tcl-var-line if_tcl.txt /*tcl-var-line* +tcl-var-lnum if_tcl.txt /*tcl-var-lnum* +tcl-var-range if_tcl.txt /*tcl-var-range* +tcl-variables if_tcl.txt /*tcl-variables* +tcl-window if_tcl.txt /*tcl-window* +tcl-window-buffer if_tcl.txt /*tcl-window-buffer* +tcl-window-cmds if_tcl.txt /*tcl-window-cmds* +tcl-window-command if_tcl.txt /*tcl-window-command* +tcl-window-cursor if_tcl.txt /*tcl-window-cursor* +tcl-window-delcmd if_tcl.txt /*tcl-window-delcmd* +tcl-window-expr if_tcl.txt /*tcl-window-expr* +tcl-window-height if_tcl.txt /*tcl-window-height* +tcl-window-option if_tcl.txt /*tcl-window-option* +tcsh-style cmdline.txt /*tcsh-style* +tcsh.vim syntax.txt /*tcsh.vim* +tear-off-menus gui.txt /*tear-off-menus* +telnet-CTRL-] tagsrch.txt /*telnet-CTRL-]* +temp-file-name eval.txt /*temp-file-name* +tempfile change.txt /*tempfile* +template autocmd.txt /*template* +tempname() eval.txt /*tempname()* +term-dependent-settings term.txt /*term-dependent-settings* +term-list syntax.txt /*term-list* +term.txt term.txt /*term.txt* +termcap term.txt /*termcap* +termcap-changed version4.txt /*termcap-changed* +termcap-colors term.txt /*termcap-colors* +termcap-cursor-color term.txt /*termcap-cursor-color* +termcap-cursor-shape term.txt /*termcap-cursor-shape* +termcap-options term.txt /*termcap-options* +termcap-title term.txt /*termcap-title* +terminal-colors os_unix.txt /*terminal-colors* +terminal-info term.txt /*terminal-info* +terminal-options term.txt /*terminal-options* +terminfo term.txt /*terminfo* +termresponse-variable eval.txt /*termresponse-variable* +tex-cchar syntax.txt /*tex-cchar* +tex-cole syntax.txt /*tex-cole* +tex-conceal syntax.txt /*tex-conceal* +tex-error syntax.txt /*tex-error* +tex-folding syntax.txt /*tex-folding* +tex-math syntax.txt /*tex-math* +tex-morecommands syntax.txt /*tex-morecommands* +tex-nospell syntax.txt /*tex-nospell* +tex-package syntax.txt /*tex-package* +tex-runon syntax.txt /*tex-runon* +tex-slow syntax.txt /*tex-slow* +tex-stopzone syntax.txt /*tex-stopzone* +tex-style syntax.txt /*tex-style* +tex-sync syntax.txt /*tex-sync* +tex-verb syntax.txt /*tex-verb* +tex.vim syntax.txt /*tex.vim* +text-functions usr_41.txt /*text-functions* +text-objects motion.txt /*text-objects* +text-objects-changed version5.txt /*text-objects-changed* +textlock eval.txt /*textlock* +tf.vim syntax.txt /*tf.vim* +this_session-variable eval.txt /*this_session-variable* +throw-catch eval.txt /*throw-catch* +throw-expression eval.txt /*throw-expression* +throw-from-catch eval.txt /*throw-from-catch* +throw-variables eval.txt /*throw-variables* +throwpoint-variable eval.txt /*throwpoint-variable* +time-functions usr_41.txt /*time-functions* +timestamp editing.txt /*timestamp* +timestamps editing.txt /*timestamps* +tips tips.txt /*tips* +tips.txt tips.txt /*tips.txt* +todo todo.txt /*todo* +todo.txt todo.txt /*todo.txt* +toggle options.txt /*toggle* +toggle-revins version4.txt /*toggle-revins* +tolower() eval.txt /*tolower()* +toolbar-icon gui.txt /*toolbar-icon* +toupper() eval.txt /*toupper()* +tr() eval.txt /*tr()* +trojan-horse starting.txt /*trojan-horse* +trunc() eval.txt /*trunc()* +try-conditionals eval.txt /*try-conditionals* +try-echoerr eval.txt /*try-echoerr* +try-finally eval.txt /*try-finally* +try-nested eval.txt /*try-nested* +try-nesting eval.txt /*try-nesting* +tutor usr_01.txt /*tutor* +twice if_cscop.txt /*twice* +two-engines pattern.txt /*two-engines* +type() eval.txt /*type()* +type-mistakes tips.txt /*type-mistakes* +typecorr-settings usr_41.txt /*typecorr-settings* +typecorr.txt usr_41.txt /*typecorr.txt* +u undo.txt /*u* +uganda uganda.txt /*uganda* +uganda.txt uganda.txt /*uganda.txt* +undercurl syntax.txt /*undercurl* +underline syntax.txt /*underline* +undo undo.txt /*undo* +undo-blocks undo.txt /*undo-blocks* +undo-branches undo.txt /*undo-branches* +undo-commands undo.txt /*undo-commands* +undo-persistence undo.txt /*undo-persistence* +undo-redo undo.txt /*undo-redo* +undo-remarks undo.txt /*undo-remarks* +undo-tree undo.txt /*undo-tree* +undo-two-ways undo.txt /*undo-two-ways* +undo.txt undo.txt /*undo.txt* +undo_ftplugin usr_41.txt /*undo_ftplugin* +undofile() eval.txt /*undofile()* +undotree() eval.txt /*undotree()* +unicode mbyte.txt /*unicode* +unix os_unix.txt /*unix* +unlisted-buffer windows.txt /*unlisted-buffer* +up-down-motions motion.txt /*up-down-motions* +uppercase change.txt /*uppercase* +urxvt-mouse options.txt /*urxvt-mouse* +use-cpo-save usr_41.txt /*use-cpo-save* +use-visual-cmds version4.txt /*use-visual-cmds* +useful-mappings tips.txt /*useful-mappings* +usenet intro.txt /*usenet* +user-cmd-ambiguous map.txt /*user-cmd-ambiguous* +user-commands map.txt /*user-commands* +user-functions eval.txt /*user-functions* +user-manual usr_toc.txt /*user-manual* +using-<Plug> usr_41.txt /*using-<Plug>* +using-menus gui.txt /*using-menus* +using-scripts repeat.txt /*using-scripts* +using-xxd tips.txt /*using-xxd* +using_CTRL-V map.txt /*using_CTRL-V* +usr_01.txt usr_01.txt /*usr_01.txt* +usr_02.txt usr_02.txt /*usr_02.txt* +usr_03.txt usr_03.txt /*usr_03.txt* +usr_04.txt usr_04.txt /*usr_04.txt* +usr_05.txt usr_05.txt /*usr_05.txt* +usr_06.txt usr_06.txt /*usr_06.txt* +usr_07.txt usr_07.txt /*usr_07.txt* +usr_08.txt usr_08.txt /*usr_08.txt* +usr_09.txt usr_09.txt /*usr_09.txt* +usr_10.txt usr_10.txt /*usr_10.txt* +usr_11.txt usr_11.txt /*usr_11.txt* +usr_12.txt usr_12.txt /*usr_12.txt* +usr_20.txt usr_20.txt /*usr_20.txt* +usr_21.txt usr_21.txt /*usr_21.txt* +usr_22.txt usr_22.txt /*usr_22.txt* +usr_23.txt usr_23.txt /*usr_23.txt* +usr_24.txt usr_24.txt /*usr_24.txt* +usr_25.txt usr_25.txt /*usr_25.txt* +usr_26.txt usr_26.txt /*usr_26.txt* +usr_27.txt usr_27.txt /*usr_27.txt* +usr_28.txt usr_28.txt /*usr_28.txt* +usr_29.txt usr_29.txt /*usr_29.txt* +usr_30.txt usr_30.txt /*usr_30.txt* +usr_31.txt usr_31.txt /*usr_31.txt* +usr_32.txt usr_32.txt /*usr_32.txt* +usr_40.txt usr_40.txt /*usr_40.txt* +usr_41.txt usr_41.txt /*usr_41.txt* +usr_42.txt usr_42.txt /*usr_42.txt* +usr_43.txt usr_43.txt /*usr_43.txt* +usr_44.txt usr_44.txt /*usr_44.txt* +usr_45.txt usr_45.txt /*usr_45.txt* +usr_90.txt usr_90.txt /*usr_90.txt* +usr_toc.txt usr_toc.txt /*usr_toc.txt* +utf-8 mbyte.txt /*utf-8* +utf-8-char-arg mbyte.txt /*utf-8-char-arg* +utf-8-in-xwindows mbyte.txt /*utf-8-in-xwindows* +utf-8-typing mbyte.txt /*utf-8-typing* +utf8 mbyte.txt /*utf8* +v visual.txt /*v* +v: eval.txt /*v:* +v:beval_bufnr eval.txt /*v:beval_bufnr* +v:beval_col eval.txt /*v:beval_col* +v:beval_lnum eval.txt /*v:beval_lnum* +v:beval_text eval.txt /*v:beval_text* +v:beval_winnr eval.txt /*v:beval_winnr* +v:char eval.txt /*v:char* +v:charconvert_from eval.txt /*v:charconvert_from* +v:charconvert_to eval.txt /*v:charconvert_to* +v:cmdarg eval.txt /*v:cmdarg* +v:cmdbang eval.txt /*v:cmdbang* +v:count eval.txt /*v:count* +v:count1 eval.txt /*v:count1* +v:ctype eval.txt /*v:ctype* +v:dying eval.txt /*v:dying* +v:errmsg eval.txt /*v:errmsg* +v:exception eval.txt /*v:exception* +v:fcs_choice eval.txt /*v:fcs_choice* +v:fcs_reason eval.txt /*v:fcs_reason* +v:fname_diff eval.txt /*v:fname_diff* +v:fname_in eval.txt /*v:fname_in* +v:fname_new eval.txt /*v:fname_new* +v:fname_out eval.txt /*v:fname_out* +v:folddashes eval.txt /*v:folddashes* +v:foldend eval.txt /*v:foldend* +v:foldlevel eval.txt /*v:foldlevel* +v:foldstart eval.txt /*v:foldstart* +v:insertmode eval.txt /*v:insertmode* +v:key eval.txt /*v:key* +v:lang eval.txt /*v:lang* +v:lc_time eval.txt /*v:lc_time* +v:lnum eval.txt /*v:lnum* +v:mouse_col eval.txt /*v:mouse_col* +v:mouse_lnum eval.txt /*v:mouse_lnum* +v:mouse_win eval.txt /*v:mouse_win* +v:oldfiles eval.txt /*v:oldfiles* +v:operator eval.txt /*v:operator* +v:prevcount eval.txt /*v:prevcount* +v:profiling eval.txt /*v:profiling* +v:progname eval.txt /*v:progname* +v:register eval.txt /*v:register* +v:scrollstart eval.txt /*v:scrollstart* +v:searchforward eval.txt /*v:searchforward* +v:servername eval.txt /*v:servername* +v:shell_error eval.txt /*v:shell_error* +v:statusmsg eval.txt /*v:statusmsg* +v:swapchoice eval.txt /*v:swapchoice* +v:swapcommand eval.txt /*v:swapcommand* +v:swapname eval.txt /*v:swapname* +v:termresponse eval.txt /*v:termresponse* +v:this_session eval.txt /*v:this_session* +v:throwpoint eval.txt /*v:throwpoint* +v:val eval.txt /*v:val* +v:var eval.txt /*v:var* +v:version eval.txt /*v:version* +v:warningmsg eval.txt /*v:warningmsg* +v:windowid eval.txt /*v:windowid* +v_! change.txt /*v_!* +v_$ visual.txt /*v_$* +v_: cmdline.txt /*v_:* +v_< change.txt /*v_<* +v_<BS> change.txt /*v_<BS>* +v_<Del> change.txt /*v_<Del>* +v_<Esc> visual.txt /*v_<Esc>* +v_= change.txt /*v_=* +v_> change.txt /*v_>* +v_C change.txt /*v_C* +v_CTRL-C visual.txt /*v_CTRL-C* +v_CTRL-G visual.txt /*v_CTRL-G* +v_CTRL-H change.txt /*v_CTRL-H* +v_CTRL-O visual.txt /*v_CTRL-O* +v_CTRL-V visual.txt /*v_CTRL-V* +v_CTRL-Z starting.txt /*v_CTRL-Z* +v_CTRL-\_CTRL-G intro.txt /*v_CTRL-\\_CTRL-G* +v_CTRL-\_CTRL-N intro.txt /*v_CTRL-\\_CTRL-N* +v_CTRL-] tagsrch.txt /*v_CTRL-]* +v_D change.txt /*v_D* +v_J change.txt /*v_J* +v_K various.txt /*v_K* +v_O visual.txt /*v_O* +v_P change.txt /*v_P* +v_R change.txt /*v_R* +v_S change.txt /*v_S* +v_U change.txt /*v_U* +v_V visual.txt /*v_V* +v_X change.txt /*v_X* +v_Y change.txt /*v_Y* +v_a motion.txt /*v_a* +v_a' motion.txt /*v_a'* +v_a( motion.txt /*v_a(* +v_a) motion.txt /*v_a)* +v_a< motion.txt /*v_a<* +v_a> motion.txt /*v_a>* +v_aB motion.txt /*v_aB* +v_aW motion.txt /*v_aW* +v_a[ motion.txt /*v_a[* +v_a] motion.txt /*v_a]* +v_a` motion.txt /*v_a`* +v_ab motion.txt /*v_ab* +v_ap motion.txt /*v_ap* +v_aquote motion.txt /*v_aquote* +v_as motion.txt /*v_as* +v_at motion.txt /*v_at* +v_aw motion.txt /*v_aw* +v_a{ motion.txt /*v_a{* +v_a} motion.txt /*v_a}* +v_b_< visual.txt /*v_b_<* +v_b_<_example visual.txt /*v_b_<_example* +v_b_> visual.txt /*v_b_>* +v_b_>_example visual.txt /*v_b_>_example* +v_b_A visual.txt /*v_b_A* +v_b_A_example visual.txt /*v_b_A_example* +v_b_C visual.txt /*v_b_C* +v_b_D change.txt /*v_b_D* +v_b_I visual.txt /*v_b_I* +v_b_I_example visual.txt /*v_b_I_example* +v_b_c visual.txt /*v_b_c* +v_b_r visual.txt /*v_b_r* +v_b_r_example visual.txt /*v_b_r_example* +v_c change.txt /*v_c* +v_d change.txt /*v_d* +v_g? change.txt /*v_g?* +v_gF editing.txt /*v_gF* +v_gJ change.txt /*v_gJ* +v_gN visual.txt /*v_gN* +v_gV visual.txt /*v_gV* +v_g] tagsrch.txt /*v_g]* +v_g_CTRL-G editing.txt /*v_g_CTRL-G* +v_g_CTRL-] tagsrch.txt /*v_g_CTRL-]* +v_gf editing.txt /*v_gf* +v_gn visual.txt /*v_gn* +v_gq change.txt /*v_gq* +v_gv visual.txt /*v_gv* +v_gw change.txt /*v_gw* +v_i motion.txt /*v_i* +v_i' motion.txt /*v_i'* +v_i( motion.txt /*v_i(* +v_i) motion.txt /*v_i)* +v_i< motion.txt /*v_i<* +v_i> motion.txt /*v_i>* +v_iB motion.txt /*v_iB* +v_iW motion.txt /*v_iW* +v_i[ motion.txt /*v_i[* +v_i] motion.txt /*v_i]* +v_i` motion.txt /*v_i`* +v_ib motion.txt /*v_ib* +v_ip motion.txt /*v_ip* +v_iquote motion.txt /*v_iquote* +v_is motion.txt /*v_is* +v_it motion.txt /*v_it* +v_iw motion.txt /*v_iw* +v_i{ motion.txt /*v_i{* +v_i} motion.txt /*v_i}* +v_o visual.txt /*v_o* +v_p change.txt /*v_p* +v_r change.txt /*v_r* +v_s change.txt /*v_s* +v_u change.txt /*v_u* +v_v visual.txt /*v_v* +v_x change.txt /*v_x* +v_y change.txt /*v_y* +v_~ change.txt /*v_~* +val-variable eval.txt /*val-variable* +valgrind debug.txt /*valgrind* +values() eval.txt /*values()* +var-functions usr_41.txt /*var-functions* +variables eval.txt /*variables* +various various.txt /*various* +various-cmds various.txt /*various-cmds* +various-functions usr_41.txt /*various-functions* +various-motions motion.txt /*various-motions* +various.txt various.txt /*various.txt* +vb.vim syntax.txt /*vb.vim* +vba pi_vimball.txt /*vba* +verbose starting.txt /*verbose* +version-5.1 version5.txt /*version-5.1* +version-5.2 version5.txt /*version-5.2* +version-5.3 version5.txt /*version-5.3* +version-5.4 version5.txt /*version-5.4* +version-5.5 version5.txt /*version-5.5* +version-5.6 version5.txt /*version-5.6* +version-5.7 version5.txt /*version-5.7* +version-5.8 version5.txt /*version-5.8* +version-6.1 version6.txt /*version-6.1* +version-6.2 version6.txt /*version-6.2* +version-6.3 version6.txt /*version-6.3* +version-6.4 version6.txt /*version-6.4* +version-7.0 version7.txt /*version-7.0* +version-7.1 version7.txt /*version-7.1* +version-7.2 version7.txt /*version-7.2* +version-7.3 version7.txt /*version-7.3* +version-7.4 version7.txt /*version-7.4* +version-variable eval.txt /*version-variable* +version4.txt version4.txt /*version4.txt* +version5.txt version5.txt /*version5.txt* +version6.txt version6.txt /*version6.txt* +version7.0 version7.txt /*version7.0* +version7.1 version7.txt /*version7.1* +version7.2 version7.txt /*version7.2* +version7.3 version7.txt /*version7.3* +version7.4 version7.txt /*version7.4* +version7.txt version7.txt /*version7.txt* +vi intro.txt /*vi* +vi-differences vi_diff.txt /*vi-differences* +vi: options.txt /*vi:* +vi_diff.txt vi_diff.txt /*vi_diff.txt* +view starting.txt /*view* +view-diffs diff.txt /*view-diffs* +view-file starting.txt /*view-file* +views-sessions starting.txt /*views-sessions* +vim-additions vi_diff.txt /*vim-additions* +vim-announce intro.txt /*vim-announce* +vim-arguments starting.txt /*vim-arguments* +vim-default-editor gui_w32.txt /*vim-default-editor* +vim-dev intro.txt /*vim-dev* +vim-mac intro.txt /*vim-mac* +vim-modes intro.txt /*vim-modes* +vim-modes-intro intro.txt /*vim-modes-intro* +vim-multibyte intro.txt /*vim-multibyte* +vim-script-intro usr_41.txt /*vim-script-intro* +vim-variable eval.txt /*vim-variable* +vim.vim syntax.txt /*vim.vim* +vim7 version7.txt /*vim7* +vim: options.txt /*vim:* +vimball pi_vimball.txt /*vimball* +vimball-contents pi_vimball.txt /*vimball-contents* +vimball-extract pi_vimball.txt /*vimball-extract* +vimball-history pi_vimball.txt /*vimball-history* +vimball-intro pi_vimball.txt /*vimball-intro* +vimball-manual pi_vimball.txt /*vimball-manual* +vimball-windows pi_vimball.txt /*vimball-windows* +vimdev intro.txt /*vimdev* +vimdiff diff.txt /*vimdiff* +vimfiles options.txt /*vimfiles* +viminfo starting.txt /*viminfo* +viminfo-! options.txt /*viminfo-!* +viminfo-% options.txt /*viminfo-%* +viminfo-' options.txt /*viminfo-'* +viminfo-/ options.txt /*viminfo-\/* +viminfo-: options.txt /*viminfo-:* +viminfo-< options.txt /*viminfo-<* +viminfo-@ options.txt /*viminfo-@* +viminfo-c options.txt /*viminfo-c* +viminfo-encoding starting.txt /*viminfo-encoding* +viminfo-errors starting.txt /*viminfo-errors* +viminfo-f options.txt /*viminfo-f* +viminfo-file starting.txt /*viminfo-file* +viminfo-file-marks starting.txt /*viminfo-file-marks* +viminfo-file-name starting.txt /*viminfo-file-name* +viminfo-h options.txt /*viminfo-h* +viminfo-n options.txt /*viminfo-n* +viminfo-quote options.txt /*viminfo-quote* +viminfo-r options.txt /*viminfo-r* +viminfo-read starting.txt /*viminfo-read* +viminfo-read-write starting.txt /*viminfo-read-write* +viminfo-s options.txt /*viminfo-s* +viminfo-write starting.txt /*viminfo-write* +vimrc starting.txt /*vimrc* +vimrc-filetype usr_05.txt /*vimrc-filetype* +vimrc-intro usr_05.txt /*vimrc-intro* +vimrc-option-example starting.txt /*vimrc-option-example* +vimrc_example.vim usr_05.txt /*vimrc_example.vim* +vimtutor usr_01.txt /*vimtutor* +virtcol() eval.txt /*virtcol()* +visual-block visual.txt /*visual-block* +visual-change visual.txt /*visual-change* +visual-examples visual.txt /*visual-examples* +visual-index index.txt /*visual-index* +visual-mode visual.txt /*visual-mode* +visual-operators visual.txt /*visual-operators* +visual-repeat visual.txt /*visual-repeat* +visual-search visual.txt /*visual-search* +visual-start visual.txt /*visual-start* +visual-use visual.txt /*visual-use* +visual.txt visual.txt /*visual.txt* +visualmode() eval.txt /*visualmode()* +vms os_vms.txt /*vms* +vms-authors os_vms.txt /*vms-authors* +vms-changes os_vms.txt /*vms-changes* +vms-compiling os_vms.txt /*vms-compiling* +vms-deploy os_vms.txt /*vms-deploy* +vms-download os_vms.txt /*vms-download* +vms-gui os_vms.txt /*vms-gui* +vms-notes os_vms.txt /*vms-notes* +vms-problems os_vms.txt /*vms-problems* +vms-started os_vms.txt /*vms-started* +vms-usage os_vms.txt /*vms-usage* +vote-for-features sponsor.txt /*vote-for-features* +votes-counted sponsor.txt /*votes-counted* +votes-for-changes todo.txt /*votes-for-changes* +vreplace-mode insert.txt /*vreplace-mode* +vt100-cursor-keys term.txt /*vt100-cursor-keys* +vt100-function-keys term.txt /*vt100-function-keys* +w motion.txt /*w* +w32-clientserver remote.txt /*w32-clientserver* +w32-xpm-support gui_w32.txt /*w32-xpm-support* +w: eval.txt /*w:* +w:current_syntax syntax.txt /*w:current_syntax* +w:quickfix_title quickfix.txt /*w:quickfix_title* +w:var eval.txt /*w:var* +warningmsg-variable eval.txt /*warningmsg-variable* +white-space pattern.txt /*white-space* +whitespace pattern.txt /*whitespace* +wildcard editing.txt /*wildcard* +wildcards editing.txt /*wildcards* +wildmenumode() eval.txt /*wildmenumode()* +win16-!start gui_w16.txt /*win16-!start* +win16-clipboard gui_w16.txt /*win16-clipboard* +win16-colors gui_w16.txt /*win16-colors* +win16-default-editor gui_w16.txt /*win16-default-editor* +win16-dialogs gui_w16.txt /*win16-dialogs* +win16-drag-n-drop gui_w16.txt /*win16-drag-n-drop* +win16-gui gui_w16.txt /*win16-gui* +win16-maximized gui_w16.txt /*win16-maximized* +win16-printing gui_w16.txt /*win16-printing* +win16-shell gui_w16.txt /*win16-shell* +win16-start gui_w16.txt /*win16-start* +win16-truetype gui_w16.txt /*win16-truetype* +win16-various gui_w16.txt /*win16-various* +win32 os_win32.txt /*win32* +win32-!start gui_w32.txt /*win32-!start* +win32-PATH os_win32.txt /*win32-PATH* +win32-colors gui_w32.txt /*win32-colors* +win32-compiling os_win32.txt /*win32-compiling* +win32-curdir os_win32.txt /*win32-curdir* +win32-faq os_win32.txt /*win32-faq* +win32-gettext mlang.txt /*win32-gettext* +win32-gui gui_w32.txt /*win32-gui* +win32-hidden-menus gui.txt /*win32-hidden-menus* +win32-mouse os_win32.txt /*win32-mouse* +win32-open-with-menu gui_w32.txt /*win32-open-with-menu* +win32-popup-menu gui_w32.txt /*win32-popup-menu* +win32-problems os_win32.txt /*win32-problems* +win32-restore os_win32.txt /*win32-restore* +win32-startup os_win32.txt /*win32-startup* +win32-term os_win32.txt /*win32-term* +win32-vimrun gui_w32.txt /*win32-vimrun* +win32-win3.1 os_win32.txt /*win32-win3.1* +win32s os_win32.txt /*win32s* +winbufnr() eval.txt /*winbufnr()* +wincol() eval.txt /*wincol()* +window windows.txt /*window* +window-contents intro.txt /*window-contents* +window-exit editing.txt /*window-exit* +window-functions usr_41.txt /*window-functions* +window-move-cursor windows.txt /*window-move-cursor* +window-moving windows.txt /*window-moving* +window-resize windows.txt /*window-resize* +window-size term.txt /*window-size* +window-size-functions usr_41.txt /*window-size-functions* +window-tag windows.txt /*window-tag* +window-variable eval.txt /*window-variable* +windowid-variable eval.txt /*windowid-variable* +windows windows.txt /*windows* +windows-3.1 os_win32.txt /*windows-3.1* +windows-intro windows.txt /*windows-intro* +windows-starting windows.txt /*windows-starting* +windows.txt windows.txt /*windows.txt* +windows95 os_win32.txt /*windows95* +winheight() eval.txt /*winheight()* +winline() eval.txt /*winline()* +winnr() eval.txt /*winnr()* +winrestcmd() eval.txt /*winrestcmd()* +winrestview() eval.txt /*winrestview()* +winsaveview() eval.txt /*winsaveview()* +winwidth() eval.txt /*winwidth()* +word motion.txt /*word* +word-count editing.txt /*word-count* +word-motions motion.txt /*word-motions* +workbench starting.txt /*workbench* +workshop workshop.txt /*workshop* +workshop-commands workshop.txt /*workshop-commands* +workshop-compiling workshop.txt /*workshop-compiling* +workshop-configure workshop.txt /*workshop-configure* +workshop-intro workshop.txt /*workshop-intro* +workshop-support workshop.txt /*workshop-support* +workshop-xpm workshop.txt /*workshop-xpm* +workshop.txt workshop.txt /*workshop.txt* +wrap-off intro.txt /*wrap-off* +write-compiler-plugin usr_41.txt /*write-compiler-plugin* +write-device editing.txt /*write-device* +write-fail editing.txt /*write-fail* +write-filetype-plugin usr_41.txt /*write-filetype-plugin* +write-library-script usr_41.txt /*write-library-script* +write-local-help usr_41.txt /*write-local-help* +write-permissions editing.txt /*write-permissions* +write-plugin usr_41.txt /*write-plugin* +write-plugin-quickload usr_41.txt /*write-plugin-quickload* +write-quit editing.txt /*write-quit* +write-readonly editing.txt /*write-readonly* +writefile() eval.txt /*writefile()* +writing editing.txt /*writing* +www intro.txt /*www* +x change.txt /*x* +x-input-method mbyte.txt /*x-input-method* +x-resources version5.txt /*x-resources* +x11-clientserver remote.txt /*x11-clientserver* +x11-cut-buffer gui_x11.txt /*x11-cut-buffer* +x11-selection gui_x11.txt /*x11-selection* +xf86conf.vim syntax.txt /*xf86conf.vim* +xfontset mbyte.txt /*xfontset* +xfree-xterm syntax.txt /*xfree-xterm* +xim mbyte.txt /*xim* +xim-input-style mbyte.txt /*xim-input-style* +xiterm syntax.txt /*xiterm* +xml-folding syntax.txt /*xml-folding* +xml-omni-datafile insert.txt /*xml-omni-datafile* +xml.vim syntax.txt /*xml.vim* +xor() eval.txt /*xor()* +xpm.vim syntax.txt /*xpm.vim* +xterm-8-bit term.txt /*xterm-8-bit* +xterm-8bit term.txt /*xterm-8bit* +xterm-blink syntax.txt /*xterm-blink* +xterm-blinking-cursor syntax.txt /*xterm-blinking-cursor* +xterm-clipboard term.txt /*xterm-clipboard* +xterm-codes term.txt /*xterm-codes* +xterm-color syntax.txt /*xterm-color* +xterm-command-server term.txt /*xterm-command-server* +xterm-copy-paste term.txt /*xterm-copy-paste* +xterm-cursor-keys term.txt /*xterm-cursor-keys* +xterm-end-home-keys term.txt /*xterm-end-home-keys* +xterm-function-keys term.txt /*xterm-function-keys* +xterm-modifier-keys term.txt /*xterm-modifier-keys* +xterm-mouse options.txt /*xterm-mouse* +xterm-mouse-wheel scroll.txt /*xterm-mouse-wheel* +xterm-resize term.txt /*xterm-resize* +xterm-save-screen tips.txt /*xterm-save-screen* +xterm-screens tips.txt /*xterm-screens* +xterm-scroll-region term.txt /*xterm-scroll-region* +xterm-shifted-keys term.txt /*xterm-shifted-keys* +y change.txt /*y* +yank change.txt /*yank* +ye-option-gone version4.txt /*ye-option-gone* +year-2000 intro.txt /*year-2000* +your-runtime-dir usr_43.txt /*your-runtime-dir* +yy change.txt /*yy* +z index.txt /*z* +z+ scroll.txt /*z+* +z- scroll.txt /*z-* +z. scroll.txt /*z.* +z/OS os_390.txt /*z\/OS* +z<CR> scroll.txt /*z<CR>* +z<Left> scroll.txt /*z<Left>* +z<Right> scroll.txt /*z<Right>* +z= spell.txt /*z=* +zA fold.txt /*zA* +zC fold.txt /*zC* +zD fold.txt /*zD* +zE fold.txt /*zE* +zF fold.txt /*zF* +zG spell.txt /*zG* +zH scroll.txt /*zH* +zL scroll.txt /*zL* +zM fold.txt /*zM* +zN fold.txt /*zN* +zN<CR> scroll.txt /*zN<CR>* +zO fold.txt /*zO* +zOS os_390.txt /*zOS* +zOS-Bugs os_390.txt /*zOS-Bugs* +zOS-Motif os_390.txt /*zOS-Motif* +zOS-PuTTY os_390.txt /*zOS-PuTTY* +zOS-has-ebcdic os_390.txt /*zOS-has-ebcdic* +zOS-limitations os_390.txt /*zOS-limitations* +zOS-open-source os_390.txt /*zOS-open-source* +zR fold.txt /*zR* +zW spell.txt /*zW* +zX fold.txt /*zX* +z^ scroll.txt /*z^* +za fold.txt /*za* +zb scroll.txt /*zb* +zc fold.txt /*zc* +zd fold.txt /*zd* +ze scroll.txt /*ze* +zf fold.txt /*zf* +zg spell.txt /*zg* +zh scroll.txt /*zh* +zi fold.txt /*zi* +zip pi_zip.txt /*zip* +zip-contents pi_zip.txt /*zip-contents* +zip-copyright pi_zip.txt /*zip-copyright* +zip-extension pi_zip.txt /*zip-extension* +zip-history pi_zip.txt /*zip-history* +zip-manual pi_zip.txt /*zip-manual* +zip-usage pi_zip.txt /*zip-usage* +zj fold.txt /*zj* +zk fold.txt /*zk* +zl scroll.txt /*zl* +zm fold.txt /*zm* +zn fold.txt /*zn* +zo fold.txt /*zo* +zr fold.txt /*zr* +zs scroll.txt /*zs* +zt scroll.txt /*zt* +zuG spell.txt /*zuG* +zuW spell.txt /*zuW* +zug spell.txt /*zug* +zuw spell.txt /*zuw* +zv fold.txt /*zv* +zw spell.txt /*zw* +zx fold.txt /*zx* +zz scroll.txt /*zz* +{ motion.txt /*{* +{Visual} intro.txt /*{Visual}* +{address} cmdline.txt /*{address}* +{arglist} editing.txt /*{arglist}* +{char1-char2} intro.txt /*{char1-char2}* +{event} autocmd.txt /*{event}* +{file} editing.txt /*{file}* +{group-name} syntax.txt /*{group-name}* +{lhs} map.txt /*{lhs}* +{motion} intro.txt /*{motion}* +{move-around} visual.txt /*{move-around}* +{offset} pattern.txt /*{offset}* +{pat} autocmd.txt /*{pat}* +{rhs} map.txt /*{rhs}* +{subject} helphelp.txt /*{subject}* +{} intro.txt /*{}* +} motion.txt /*}* +~ change.txt /*~* diff --git a/share/vim/vim74/doc/tagsrch.txt b/share/vim/vim74/doc/tagsrch.txt new file mode 100644 index 00000000..74f40e7d --- /dev/null +++ b/share/vim/vim74/doc/tagsrch.txt @@ -0,0 +1,837 @@ +*tagsrch.txt* For Vim version 7.4. Last change: 2013 Jul 28 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Tags and special searches *tags-and-searches* + +See section |29.1| of the user manual for an introduction. + +1. Jump to a tag |tag-commands| +2. Tag stack |tag-stack| +3. Tag match list |tag-matchlist| +4. Tags details |tag-details| +5. Tags file format |tags-file-format| +6. Include file searches |include-search| + +============================================================================== +1. Jump to a tag *tag-commands* + + *tag* *tags* +A tag is an identifier that appears in a "tags" file. It is a sort of label +that can be jumped to. For example: In C programs each function name can be +used as a tag. The "tags" file has to be generated by a program like ctags, +before the tag commands can be used. + +With the ":tag" command the cursor will be positioned on the tag. With the +CTRL-] command, the keyword on which the cursor is standing is used as the +tag. If the cursor is not on a keyword, the first keyword to the right of the +cursor is used. + +The ":tag" command works very well for C programs. If you see a call to a +function and wonder what that function does, position the cursor inside of the +function name and hit CTRL-]. This will bring you to the function definition. +An easy way back is with the CTRL-T command. Also read about the tag stack +below. + + *:ta* *:tag* *E426* *E429* +:[count]ta[g][!] {ident} + Jump to the definition of {ident}, using the + information in the tags file(s). Put {ident} in the + tag stack. See |tag-!| for [!]. + {ident} can be a regexp pattern, see |tag-regexp|. + When there are several matching tags for {ident}, jump + to the [count] one. When [count] is omitted the + first one is jumped to. See |tag-matchlist| for + jumping to other matching tags. + +g<LeftMouse> *g<LeftMouse>* +<C-LeftMouse> *<C-LeftMouse>* *CTRL-]* +CTRL-] Jump to the definition of the keyword under the + cursor. Same as ":tag {ident}", where {ident} is the + keyword under or after cursor. + When there are several matching tags for {ident}, jump + to the [count] one. When no [count] is given the + first one is jumped to. See |tag-matchlist| for + jumping to other matching tags. + {Vi: identifier after the cursor} + + *v_CTRL-]* +{Visual}CTRL-] Same as ":tag {ident}", where {ident} is the text that + is highlighted. {not in Vi} + + *telnet-CTRL-]* +CTRL-] is the default telnet escape key. When you type CTRL-] to jump to a +tag, you will get the telnet prompt instead. Most versions of telnet allow +changing or disabling the default escape key. See the telnet man page. You +can 'telnet -E {Hostname}' to disable the escape character, or 'telnet -e +{EscapeCharacter} {Hostname}' to specify another escape character. If +possible, try to use "ssh" instead of "telnet" to avoid this problem. + + *tag-priority* +When there are multiple matches for a tag, this priority is used: +1. "FSC" A full matching static tag for the current file. +2. "F C" A full matching global tag for the current file. +3. "F " A full matching global tag for another file. +4. "FS " A full matching static tag for another file. +5. " SC" An ignore-case matching static tag for the current file. +6. " C" An ignore-case matching global tag for the current file. +7. " " An ignore-case matching global tag for another file. +8. " S " An ignore-case matching static tag for another file. + +Note that when the current file changes, the priority list is mostly not +changed, to avoid confusion when using ":tnext". It is changed when using +":tag {ident}". + +The ignore-case matches are not found for a ":tag" command when the +'ignorecase' option is off. They are found when a pattern is used (starting +with a "/") and for ":tselect", also when 'ignorecase' is off. Note that +using ignore-case tag searching disables binary searching in the tags file, +which causes a slowdown. This can be avoided by fold-case sorting the tag +file. See the 'tagbsearch' option for an explanation. + +============================================================================== +2. Tag stack *tag-stack* *tagstack* *E425* + +On the tag stack is remembered which tags you jumped to, and from where. +Tags are only pushed onto the stack when the 'tagstack' option is set. + +g<RightMouse> *g<RightMouse>* +<C-RightMouse> *<C-RightMouse>* *CTRL-T* +CTRL-T Jump to [count] older entry in the tag stack + (default 1). {not in Vi} + + *:po* *:pop* *E555* *E556* +:[count]po[p][!] Jump to [count] older entry in tag stack (default 1). + See |tag-!| for [!]. {not in Vi} + +:[count]ta[g][!] Jump to [count] newer entry in tag stack (default 1). + See |tag-!| for [!]. {not in Vi} + + *:tags* +:tags Show the contents of the tag stack. The active + entry is marked with a '>'. {not in Vi} + +The output of ":tags" looks like this: + + # TO tag FROM line in file/text + 1 1 main 1 harddisk2:text/vim/test + > 2 2 FuncA 58 i = FuncA(10); + 3 1 FuncC 357 harddisk2:text/vim/src/amiga.c + +This list shows the tags that you jumped to and the cursor position before +that jump. The older tags are at the top, the newer at the bottom. + +The '>' points to the active entry. This is the tag that will be used by the +next ":tag" command. The CTRL-T and ":pop" command will use the position +above the active entry. + +Below the "TO" is the number of the current match in the match list. Note +that this doesn't change when using ":pop" or ":tag". + +The line number and file name are remembered to be able to get back to where +you were before the tag command. The line number will be correct, also when +deleting/inserting lines, unless this was done by another program (e.g. +another instance of Vim). + +For the current file, the "file/text" column shows the text at the position. +An indent is removed and a long line is truncated to fit in the window. + +You can jump to previously used tags with several commands. Some examples: + + ":pop" or CTRL-T to position before previous tag + {count}CTRL-T to position before {count} older tag + ":tag" to newer tag + ":0tag" to last used tag + +The most obvious way to use this is while browsing through the call graph of +a program. Consider the following call graph: + + main ---> FuncA ---> FuncC + ---> FuncB + +(Explanation: main calls FuncA and FuncB; FuncA calls FuncC). +You can get from main to FuncA by using CTRL-] on the call to FuncA. Then +you can CTRL-] to get to FuncC. If you now want to go back to main you can +use CTRL-T twice. Then you can CTRL-] to FuncB. + +If you issue a ":ta {ident}" or CTRL-] command, this tag is inserted at the +current position in the stack. If the stack was full (it can hold up to 20 +entries), the oldest entry is deleted and the older entries shift one +position up (their index number is decremented by one). If the last used +entry was not at the bottom, the entries below the last used one are +deleted. This means that an old branch in the call graph is lost. After the +commands explained above the tag stack will look like this: + + # TO tag FROM line in file/text + 1 1 main 1 harddisk2:text/vim/test + 2 1 FuncB 59 harddisk2:text/vim/src/main.c + + *E73* +When you try to use the tag stack while it doesn't contain anything you will +get an error message. + +============================================================================== +3. Tag match list *tag-matchlist* *E427* *E428* + +When there are several matching tags, these commands can be used to jump +between them. Note that these commands don't change the tag stack, they keep +the same entry. + + *:ts* *:tselect* +:ts[elect][!] [ident] List the tags that match [ident], using the + information in the tags file(s). + When [ident] is not given, the last tag name from the + tag stack is used. + With a '>' in the first column is indicated which is + the current position in the list (if there is one). + [ident] can be a regexp pattern, see |tag-regexp|. + See |tag-priority| for the priorities used in the + listing. {not in Vi} + Example output: + +> + nr pri kind tag file + 1 F f mch_delay os_amiga.c + mch_delay(msec, ignoreinput) + > 2 F f mch_delay os_msdos.c + mch_delay(msec, ignoreinput) + 3 F f mch_delay os_unix.c + mch_delay(msec, ignoreinput) + Enter nr of choice (<CR> to abort): +< + See |tag-priority| for the "pri" column. Note that + this depends on the current file, thus using + ":tselect xxx" can produce different results. + The "kind" column gives the kind of tag, if this was + included in the tags file. + The "info" column shows information that could be + found in the tags file. It depends on the program + that produced the tags file. + When the list is long, you may get the |more-prompt|. + If you already see the tag you want to use, you can + type 'q' and enter the number. + + *:sts* *:stselect* +:sts[elect][!] [ident] Does ":tselect[!] [ident]" and splits the window for + the selected tag. {not in Vi} + + *g]* +g] Like CTRL-], but use ":tselect" instead of ":tag". + {not in Vi} + + *v_g]* +{Visual}g] Same as "g]", but use the highlighted text as the + identifier. {not in Vi} + + *:tj* *:tjump* +:tj[ump][!] [ident] Like ":tselect", but jump to the tag directly when + there is only one match. {not in Vi} + + *:stj* *:stjump* +:stj[ump][!] [ident] Does ":tjump[!] [ident]" and splits the window for the + selected tag. {not in Vi} + + *g_CTRL-]* +g CTRL-] Like CTRL-], but use ":tjump" instead of ":tag". + {not in Vi} + + *v_g_CTRL-]* +{Visual}g CTRL-] Same as "g CTRL-]", but use the highlighted text as + the identifier. {not in Vi} + + *:tn* *:tnext* +:[count]tn[ext][!] Jump to [count] next matching tag (default 1). See + |tag-!| for [!]. {not in Vi} + + *:tp* *:tprevious* +:[count]tp[revious][!] Jump to [count] previous matching tag (default 1). + See |tag-!| for [!]. {not in Vi} + + *:tN* *:tNext* +:[count]tN[ext][!] Same as ":tprevious". {not in Vi} + + *:tr* *:trewind* +:[count]tr[ewind][!] Jump to first matching tag. If [count] is given, jump + to [count]th matching tag. See |tag-!| for [!]. {not + in Vi} + + *:tf* *:tfirst* +:[count]tf[irst][!] Same as ":trewind". {not in Vi} + + *:tl* *:tlast* +:tl[ast][!] Jump to last matching tag. See |tag-!| for [!]. {not + in Vi} + + *:lt* *:ltag* +:lt[ag][!] [ident] Jump to tag [ident] and add the matching tags to a new + location list for the current window. [ident] can be + a regexp pattern, see |tag-regexp|. When [ident] is + not given, the last tag name from the tag stack is + used. The search pattern to locate the tag line is + prefixed with "\V" to escape all the special + characters (very nomagic). The location list showing + the matching tags is independent of the tag stack. + See |tag-!| for [!]. + {not in Vi} + +When there is no other message, Vim shows which matching tag has been jumped +to, and the number of matching tags: > + tag 1 of 3 or more +The " or more" is used to indicate that Vim didn't try all the tags files yet. +When using ":tnext" a few times, or with ":tlast", more matches may be found. + +When you didn't see this message because of some other message, or you just +want to know where you are, this command will show it again (and jump to the +same tag as last time): > + :0tn +< + *tag-skip-file* +When a matching tag is found for which the file doesn't exist, this match is +skipped and the next matching tag is used. Vim reports this, to notify you of +missing files. When the end of the list of matches has been reached, an error +message is given. + + *tag-preview* +The tag match list can also be used in the preview window. The commands are +the same as above, with a "p" prepended. +{not available when compiled without the |+quickfix| feature} + + *:pts* *:ptselect* +:pts[elect][!] [ident] Does ":tselect[!] [ident]" and shows the new tag in a + "Preview" window. See |:ptag| for more info. + {not in Vi} + + *:ptj* *:ptjump* +:ptj[ump][!] [ident] Does ":tjump[!] [ident]" and shows the new tag in a + "Preview" window. See |:ptag| for more info. + {not in Vi} + + *:ptn* *:ptnext* +:[count]ptn[ext][!] ":tnext" in the preview window. See |:ptag|. + {not in Vi} + + *:ptp* *:ptprevious* +:[count]ptp[revious][!] ":tprevious" in the preview window. See |:ptag|. + {not in Vi} + + *:ptN* *:ptNext* +:[count]ptN[ext][!] Same as ":ptprevious". {not in Vi} + + *:ptr* *:ptrewind* +:[count]ptr[ewind][!] ":trewind" in the preview window. See |:ptag|. + {not in Vi} + + *:ptf* *:ptfirst* +:[count]ptf[irst][!] Same as ":ptrewind". {not in Vi} + + *:ptl* *:ptlast* +:ptl[ast][!] ":tlast" in the preview window. See |:ptag|. + {not in Vi} + +============================================================================== +4. Tags details *tag-details* + + *static-tag* +A static tag is a tag that is defined for a specific file. In a C program +this could be a static function. + +In Vi jumping to a tag sets the current search pattern. This means that +the "n" command after jumping to a tag does not search for the same pattern +that it did before jumping to the tag. Vim does not do this as we consider it +to be a bug. You can still find the tag search pattern in the search history. +If you really want the old Vi behavior, set the 't' flag in 'cpoptions'. + + *tag-binary-search* +Vim uses binary searching in the tags file to find the desired tag quickly +(when enabled at compile time |+tag_binary|). But this only works if the +tags file was sorted on ASCII byte value. Therefore, if no match was found, +another try is done with a linear search. If you only want the linear search, +reset the 'tagbsearch' option. Or better: Sort the tags file! + +Note that the binary searching is disabled when not looking for a tag with a +specific name. This happens when ignoring case and when a regular expression +is used that doesn't start with a fixed string. Tag searching can be a lot +slower then. The former can be avoided by case-fold sorting the tags file. +See 'tagbsearch' for details. + + *tag-regexp* +The ":tag" and ":tselect" commands accept a regular expression argument. See +|pattern| for the special characters that can be used. +When the argument starts with '/', it is used as a pattern. If the argument +does not start with '/', it is taken literally, as a full tag name. +Examples: > + :tag main +< jumps to the tag "main" that has the highest priority. > + :tag /^get +< jumps to the tag that starts with "get" and has the highest priority. > + :tag /norm +< lists all the tags that contain "norm", including "id_norm". +When the argument both exists literally, and match when used as a regexp, a +literal match has a higher priority. For example, ":tag /open" matches "open" +before "open_file" and "file_open". +When using a pattern case is ignored. If you want to match case use "\C" in +the pattern. + + *tag-!* +If the tag is in the current file this will always work. Otherwise the +performed actions depend on whether the current file was changed, whether a ! +is added to the command and on the 'autowrite' option: + + tag in file autowrite ~ +current file changed ! option action ~ +----------------------------------------------------------------------------- + yes x x x goto tag + no no x x read other file, goto tag + no yes yes x abandon current file, read other file, goto + tag + no yes no on write current file, read other file, goto + tag + no yes no off fail +----------------------------------------------------------------------------- + +- If the tag is in the current file, the command will always work. +- If the tag is in another file and the current file was not changed, the + other file will be made the current file and read into the buffer. +- If the tag is in another file, the current file was changed and a ! is + added to the command, the changes to the current file are lost, the other + file will be made the current file and read into the buffer. +- If the tag is in another file, the current file was changed and the + 'autowrite' option is on, the current file will be written, the other + file will be made the current file and read into the buffer. +- If the tag is in another file, the current file was changed and the + 'autowrite' option is off, the command will fail. If you want to save + the changes, use the ":w" command and then use ":tag" without an argument. + This works because the tag is put on the stack anyway. If you want to lose + the changes you can use the ":tag!" command. + + *tag-security* +Note that Vim forbids some commands, for security reasons. This works like +using the 'secure' option for exrc/vimrc files in the current directory. See +|trojan-horse| and |sandbox|. +When the {tagaddress} changes a buffer, you will get a warning message: + "WARNING: tag command changed a buffer!!!" +In a future version changing the buffer will be impossible. All this for +security reasons: Somebody might hide a nasty command in the tags file, which +would otherwise go unnoticed. Example: > + :$d|/tag-function-name/ +{this security prevention is not present in Vi} + +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 +put in the search history, so you can modify it if searching fails. + + *emacs-tags* *emacs_tags* *E430* +Emacs style tag files are only supported if Vim was compiled with the +|+emacs_tags| feature enabled. Sorry, there is no explanation about Emacs tag +files here, it is only supported for backwards compatibility :-). + +Lines in Emacs tags files can be very long. Vim only deals with lines of up +to about 510 bytes. To see whether lines are ignored set 'verbose' to 5 or +higher. + + *tags-option* +The 'tags' option is a list of file names. Each of these files is searched +for the tag. This can be used to use a different tags file than the default +file "tags". It can also be used to access a common tags file. + +The next file in the list is not used when: +- A matching static tag for the current buffer has been found. +- A matching global tag has been found. +This also depends on the 'ignorecase' option. If it is off, and the tags file +only has a match without matching case, the next tags file is searched for a +match with matching case. If no tag with matching case is found, the first +match without matching case is used. If 'ignorecase' is on, and a matching +global tag with or without matching case is found, this one is used, no +further tags files are searched. + +When a tag file name starts with "./", the '.' is replaced with the path of +the current file. This makes it possible to use a tags file in the directory +where the current file is (no matter what the current directory is). The idea +of using "./" is that you can define which tag file is searched first: In the +current directory ("tags,./tags") or in the directory of the current file +("./tags,tags"). + +For example: > + :set tags=./tags,tags,/home/user/commontags + +In this example the tag will first be searched for in the file "tags" in the +directory where the current file is. Next the "tags" file in the current +directory. If it is not found there, then the file "/home/user/commontags" +will be searched for the tag. + +This can be switched off by including the 'd' flag in 'cpoptions', to make +it Vi compatible. "./tags" will then be the tags file in the current +directory, instead of the tags file in the directory where the current file +is. + +Instead of the comma a space may be used. Then a backslash is required for +the space to be included in the string option: > + :set tags=tags\ /home/user/commontags + +To include a space in a file name use three backslashes. To include a comma +in a file name use two backslashes. For example, use: > + :set tags=tag\\\ file,/home/user/common\\,tags + +for the files "tag file" and "/home/user/common,tags". The 'tags' option will +have the value "tag\ file,/home/user/common\,tags". + +If the 'tagrelative' option is on (which is the default) and using a tag file +in another directory, file names in that tag file are relative to the +directory where the tag file is. + +============================================================================== +5. Tags file format *tags-file-format* *E431* + + *ctags* *jtags* +A tags file can be created with an external command, for example "ctags". It +will contain a tag for each function. Some versions of "ctags" will also make +a tag for each "#defined" macro, typedefs, enums, etc. + +Some programs that generate tags files: +ctags As found on most Unix systems. Only supports C. Only + does the basic work. + *Exuberant_ctags* +exuberant ctags This a very good one. It works for C, C++, Java, + Fortran, Eiffel and others. It can generate tags for + many items. See http://ctags.sourceforge.net. +etags Connected to Emacs. Supports many languages. +JTags For Java, in Java. It can be found at + http://www.fleiner.com/jtags/. +ptags.py For Python, in Python. Found in your Python source + directory at Tools/scripts/ptags.py. +ptags For Perl, in Perl. It can be found at + http://www.eleves.ens.fr:8080/home/nthiery/Tags/. +gnatxref For Ada. See http://www.gnuada.org/. gnatxref is + part of the gnat package. + + +The lines in the tags file must have one of these three formats: + +1. {tagname} {TAB} {tagfile} {TAB} {tagaddress} +2. {tagfile}:{tagname} {TAB} {tagfile} {TAB} {tagaddress} +3. {tagname} {TAB} {tagfile} {TAB} {tagaddress} {term} {field} .. + +The first is a normal tag, which is completely compatible with Vi. It is the +only format produced by traditional ctags implementations. This is often used +for functions that are global, also referenced in other files. + +The lines in the tags file can end in <LF> or <CR><LF>. On the Macintosh <CR> +also works. The <CR> and <NL> characters can never appear inside a line. + + *tag-old-static* +The second format is for a static tag only. It is obsolete now, replaced by +the third format. It is only supported by Elvis 1.x and Vim and a few +versions of ctags. A static tag is often used for functions that are local, +only referenced in the file {tagfile}. Note that for the static tag, the two +occurrences of {tagfile} must be exactly the same. Also see |tags-option| +below, for how static tags are used. + +The third format is new. It includes additional information in optional +fields at the end of each line. It is backwards compatible with Vi. It is +only supported by new versions of ctags (such as Exuberant ctags). + +{tagname} The identifier. Normally the name of a function, but it can + be any identifier. It cannot contain a <Tab>. +{TAB} One <Tab> character. Note: previous versions allowed any + white space here. This has been abandoned to allow spaces in + {tagfile}. It can be re-enabled by including the + |+tag_any_white| feature at compile time. *tag-any-white* +{tagfile} The file that contains the definition of {tagname}. It can + have an absolute or relative path. It may contain environment + variables and wildcards (although the use of wildcards is + doubtful). It cannot contain a <Tab>. +{tagaddress} The Ex command that positions the cursor on the tag. It can + be any Ex command, although restrictions apply (see + |tag-security|). Posix only allows line numbers and search + commands, which are mostly used. +{term} ;" The two characters semicolon and double quote. This is + interpreted by Vi as the start of a comment, which makes the + following be ignored. This is for backwards compatibility + with Vi, it ignores the following fields. +{field} .. A list of optional fields. Each field has the form: + + <Tab>{fieldname}:{value} + + The {fieldname} identifies the field, and can only contain + alphabetical characters [a-zA-Z]. + The {value} is any string, but cannot contain a <Tab>. + These characters are special: + "\t" stands for a <Tab> + "\r" stands for a <CR> + "\n" stands for a <NL> + "\\" stands for a single '\' character + + There is one field that doesn't have a ':'. This is the kind + of the tag. It is handled like it was preceded with "kind:". + See the documentation of ctags for the kinds it produces. + + The only other field currently recognized by Vim is "file:" + (with an empty value). It is used for a static tag. + +The first lines in the tags file can contain lines that start with + !_TAG_ +These are sorted to the first lines, only rare tags that start with "!" can +sort to before them. Vim recognizes two items. The first one is the line +that indicates if the file was sorted. When this line is found, Vim uses +binary searching for the tags file: + !_TAG_FILE_SORTED<Tab>1<Tab>{anything} ~ + +A tag file may be case-fold sorted to avoid a linear search when 'ignorecase' +is on. See 'tagbsearch' for details. The value '2' should be used then: + !_TAG_FILE_SORTED<Tab>2<Tab>{anything} ~ + +The other tag that Vim recognizes, but only when compiled with the +|+multi_byte| feature, is the encoding of the tags file: + !_TAG_FILE_ENCODING<Tab>utf-8<Tab>{anything} ~ +Here "utf-8" is the encoding used for the tags. Vim will then convert the tag +being searched for from 'encoding' to the encoding of the tags file. And when +listing tags the reverse happens. When the conversion fails the unconverted +tag is used. + + *tag-search* +The command can be any Ex command, but often it is a search command. +Examples: + tag1 file1 /^main(argc, argv)/ ~ + tag2 file2 108 ~ + +The command is always executed with 'magic' not set. The only special +characters in a search pattern are "^" (begin-of-line) and "$" (<EOL>). +See |pattern|. Note that you must put a backslash before each backslash in +the search text. This is for backwards compatibility with Vi. + + *E434* *E435* +If the command is a normal search command (it starts and ends with "/" or +"?"), some special handling is done: +- Searching starts on line 1 of the file. + The direction of the search is forward for "/", backward for "?". + Note that 'wrapscan' does not matter, the whole file is always searched. (Vi + does use 'wrapscan', which caused tags sometimes not be found.) {Vi starts + searching in line 2 of another file. It does not find a tag in line 1 of + another file when 'wrapscan' is not set} +- If the search fails, another try is done ignoring case. If that fails too, + a search is done for: + "^tagname[ \t]*(" + (the tag with '^' prepended and "[ \t]*(" appended). When using function + names, this will find the function name when it is in column 0. This will + help when the arguments to the function have changed since the tags file was + made. If this search also fails another search is done with: + "^[#a-zA-Z_].*\<tagname[ \t]*(" + This means: A line starting with '#' or an identifier and containing the tag + followed by white space and a '('. This will find macro names and function + names with a type prepended. {the extra searches are not in Vi} + +============================================================================== +6. Include file searches *include-search* *definition-search* + *E387* *E388* *E389* + +These commands look for a string in the current file and in all encountered +included files (recursively). This can be used to find the definition of a +variable, function or macro. If you only want to search in the current +buffer, use the commands listed at |pattern-searches|. + +These commands are not available when the |+find_in_path| feature was disabled +at compile time. + +When a line is encountered that includes another file, that file is searched +before continuing in the current buffer. Files included by included files are +also searched. When an include file could not be found it is silently +ignored. Use the |:checkpath| command to discover which files could not be +found, possibly your 'path' option is not set up correctly. Note: the +included file is searched, not a buffer that may be editing that file. Only +for the current file the lines in the buffer are used. + +The string can be any keyword or a defined macro. For the keyword any match +will be found. For defined macros only lines that match with the 'define' +option will be found. The default is "^#\s*define", which is for C programs. +For other languages you probably want to change this. See 'define' for an +example for C++. The string cannot contain an end-of-line, only matches +within a line are found. + +When a match is found for a defined macro, the displaying of lines continues +with the next line when a line ends in a backslash. + +The commands that start with "[" start searching from the start of the current +file. The commands that start with "]" start at the current cursor position. + +The 'include' option is used to define a line that includes another file. The +default is "\^#\s*include", which is for C programs. Note: Vim does not +recognize C syntax, if the 'include' option matches a line inside +"#ifdef/#endif" or inside a comment, it is searched anyway. The 'isfname' +option is used to recognize the file name that comes after the matched +pattern. + +The 'path' option is used to find the directory for the include files that +do not have an absolute path. + +The 'comments' option is used for the commands that display a single line or +jump to a line. It defines patterns that may start a comment. Those lines +are ignored for the search, unless [!] is used. One exception: When the line +matches the pattern "^# *define" it is not considered to be a comment. + +If you want to list matches, and then select one to jump to, you could use a +mapping to do that for you. Here is an example: > + + :map <F4> [I:let nr = input("Which one: ")<Bar>exe "normal " . nr ."[\t"<CR> +< + *[i* +[i Display the first line that contains the keyword + under the cursor. The search starts at the beginning + of the file. Lines that look like a comment are + ignored (see 'comments' option). If a count is given, + the count'th matching line is displayed, and comment + lines are not ignored. {not in Vi} + + *]i* +]i like "[i", but start at the current cursor position. + {not in Vi} + + *:is* *:isearch* +:[range]is[earch][!] [count] [/]pattern[/] + Like "[i" and "]i", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + + *[I* +[I Display all lines that contain the keyword under the + cursor. Filenames and line numbers are displayed + for the found lines. The search starts at the + beginning of the file. {not in Vi} + + *]I* +]I like "[I", but start at the current cursor position. + {not in Vi} + + *:il* *:ilist* +:[range]il[ist][!] [/]pattern[/] + Like "[I" and "]I", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + + *[_CTRL-I* +[ CTRL-I Jump to the first line that contains the keyword + under the cursor. The search starts at the beginning + of the file. Lines that look like a comment are + ignored (see 'comments' option). If a count is given, + the count'th matching line is jumped to, and comment + lines are not ignored. {not in Vi} + + *]_CTRL-I* +] CTRL-I like "[ CTRL-I", but start at the current cursor + position. {not in Vi} + + *:ij* *:ijump* +:[range]ij[ump][!] [count] [/]pattern[/] + Like "[ CTRL-I" and "] CTRL-I", but search in + [range] lines (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + +CTRL-W CTRL-I *CTRL-W_CTRL-I* *CTRL-W_i* +CTRL-W i Open a new window, with the cursor on the first line + that contains the keyword under the cursor. The + search starts at the beginning of the file. Lines + that look like a comment line are ignored (see + 'comments' option). If a count is given, the count'th + matching line is jumped to, and comment lines are not + ignored. {not in Vi} + + *:isp* *:isplit* +:[range]isp[lit][!] [count] [/]pattern[/] + Like "CTRL-W i" and "CTRL-W i", but search in + [range] lines (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + + *[d* +[d Display the first macro definition that contains the + macro under the cursor. The search starts from the + beginning of the file. If a count is given, the + count'th matching line is displayed. {not in Vi} + + *]d* +]d like "[d", but start at the current cursor position. + {not in Vi} + + *:ds* *:dsearch* +:[range]ds[earch][!] [count] [/]string[/] + Like "[d" and "]d", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + + *[D* +[D Display all macro definitions that contain the macro + under the cursor. Filenames and line numbers are + displayed for the found lines. The search starts + from the beginning of the file. {not in Vi} + + *]D* +]D like "[D", but start at the current cursor position. + {not in Vi} + + *:dli* *:dlist* +:[range]dli[st][!] [/]string[/] + Like "[D" and "]D", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + Note that ":dl" works like ":delete" with the "l" + register. + + *[_CTRL-D* +[ CTRL-D Jump to the first macro definition that contains the + keyword under the cursor. The search starts from + the beginning of the file. If a count is given, the + count'th matching line is jumped to. {not in Vi} + + *]_CTRL-D* +] CTRL-D like "[ CTRL-D", but start at the current cursor + position. {not in Vi} + + *:dj* *:djump* +:[range]dj[ump][!] [count] [/]string[/] + Like "[ CTRL-D" and "] CTRL-D", but search in + [range] lines (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + +CTRL-W CTRL-D *CTRL-W_CTRL-D* *CTRL-W_d* +CTRL-W d Open a new window, with the cursor on the first + macro definition line that contains the keyword + under the cursor. The search starts from the + beginning of the file. If a count is given, the + count'th matching line is jumped to. {not in Vi} + + *:dsp* *:dsplit* +:[range]dsp[lit][!] [count] [/]string[/] + Like "CTRL-W d", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + + *:che* *:checkpath* +:che[ckpath] List all the included files that could not be found. + {not in Vi} + +:che[ckpath]! List all the included files. {not in Vi} + + *:search-args* +Common arguments for the commands above: +[!] When included, find matches in lines that are recognized as comments. + When excluded, a match is ignored when the line is recognized as a + comment (according to 'comments'), or the match is in a C comment (after + "//" or inside /* */). Note that a match may be missed if a line is + recognized as a comment, but the comment ends halfway the line. + And if the line is a comment, but it is not recognized (according to + 'comments') a match may be found in it anyway. Example: > + /* comment + foobar */ +< A match for "foobar" is found, because this line is not recognized as a + comment (even though syntax highlighting does recognize it). + Note: Since a macro definition mostly doesn't look like a comment, the + [!] makes no difference for ":dlist", ":dsearch" and ":djump". +[/] A pattern can be surrounded by '/'. Without '/' only whole words are + matched, using the pattern "\<pattern\>". Only after the second '/' a + next command can be appended with '|'. Example: > + :isearch /string/ | echo "the last one" +< For a ":djump", ":dsplit", ":dlist" and ":dsearch" command the pattern + is used as a literal string, not as a search pattern. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/term.txt b/share/vim/vim74/doc/term.txt new file mode 100644 index 00000000..eb5d7fb5 --- /dev/null +++ b/share/vim/vim74/doc/term.txt @@ -0,0 +1,879 @@ +*term.txt* For Vim version 7.4. Last change: 2013 Mar 13 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Terminal information *terminal-info* + +Vim uses information about the terminal you are using to fill the screen and +recognize what keys you hit. If this information is not correct, the screen +may be messed up or keys may not be recognized. The actions which have to be +performed on the screen are accomplished by outputting a string of +characters. Special keys produce a string of characters. These strings are +stored in the terminal options, see |terminal-options|. + +NOTE: Most of this is not used when running the |GUI|. + +1. Startup |startup-terminal| +2. Terminal options |terminal-options| +3. Window size |window-size| +4. Slow and fast terminals |slow-fast-terminal| +5. Using the mouse |mouse-using| + +============================================================================== +1. Startup *startup-terminal* + +When Vim is started a default terminal type is assumed. For the Amiga this is +a standard CLI window, for MS-DOS the pc terminal, for Unix an ansi terminal. +A few other terminal types are always available, see below |builtin-terms|. + +You can give the terminal name with the '-T' Vim argument. If it is not given +Vim will try to get the name from the TERM environment variable. + + *termcap* *terminfo* *E557* *E558* *E559* +On Unix the terminfo database or termcap file is used. This is referred to as +"termcap" in all the documentation. At compile time, when running configure, +the choice whether to use terminfo or termcap is done automatically. When +running Vim the output of ":version" will show |+terminfo| if terminfo is +used. Also see |xterm-screens|. + +On non-Unix systems a termcap is only available if Vim was compiled with +TERMCAP defined. + + *builtin-terms* *builtin_terms* +Which builtin terminals are available depends on a few defines in feature.h, +which need to be set at compile time: + define output of ":version" terminals builtin ~ +NO_BUILTIN_TCAPS -builtin_terms none +SOME_BUILTIN_TCAPS +builtin_terms most common ones (default) +ALL_BUILTIN_TCAPS ++builtin_terms all available + +You can see a list of available builtin terminals with ":set term=xxx" (when +not running the GUI). Also see |+builtin_terms|. + +If the termcap code is included Vim will try to get the strings for the +terminal you are using from the termcap file and the builtin termcaps. Both +are always used, if an entry for the terminal you are using is present. Which +one is used first depends on the 'ttybuiltin' option: + +'ttybuiltin' on 1: builtin termcap 2: external termcap +'ttybuiltin' off 1: external termcap 2: builtin termcap + +If an option is missing in one of them, it will be obtained from the other +one. If an option is present in both, the one first encountered is used. + +Which external termcap file is used varies from system to system and may +depend on the environment variables "TERMCAP" and "TERMPATH". See "man +tgetent". + +Settings depending on terminal *term-dependent-settings* + +If you want to set options or mappings, depending on the terminal name, you +can do this best in your .vimrc. Example: > + + if &term == "xterm" + ... xterm maps and settings ... + elseif &term =~ "vt10." + ... vt100, vt102 maps and settings ... + endif +< + *raw-terminal-mode* +For normal editing the terminal will be put into "raw" mode. The strings +defined with 't_ti' and 't_ks' will be sent to the terminal. Normally this +puts the terminal in a state where the termcap codes are valid and activates +the cursor and function keys. When Vim exits the terminal will be put back +into the mode it was before Vim started. The strings defined with 't_te' and +'t_ke' will be sent to the terminal. On the Amiga, with commands that execute +an external command (e.g., "!!"), the terminal will be put into Normal mode +for a moment. This means that you can stop the output to the screen by +hitting a printing key. Output resumes when you hit <BS>. + + *cs7-problem* +Note: If the terminal settings are changed after running Vim, you might have +an illegal combination of settings. This has been reported on Solaris 2.5 +with "stty cs8 parenb", which is restored as "stty cs7 parenb". Use +"stty cs8 -parenb -istrip" instead, this is restored correctly. + +Some termcap entries are wrong in the sense that after sending 't_ks' the +cursor keys send codes different from the codes defined in the termcap. To +avoid this you can set 't_ks' (and 't_ke') to empty strings. This must be +done during initialization (see |initialization|), otherwise it's too late. + +Some termcap entries assume that the highest bit is always reset. For +example: The cursor-up entry for the Amiga could be ":ku=\E[A:". But the +Amiga really sends "\233A". This works fine if the highest bit is reset, +e.g., when using an Amiga over a serial line. If the cursor keys don't work, +try the entry ":ku=\233A:". + +Some termcap entries have the entry ":ku=\E[A:". But the Amiga really sends +"\233A". On output "\E[" and "\233" are often equivalent, on input they +aren't. You will have to change the termcap entry, or change the key code with +the :set command to fix this. + +Many cursor key codes start with an <Esc>. Vim must find out if this is a +single hit of the <Esc> key or the start of a cursor key sequence. It waits +for a next character to arrive. If it does not arrive within one second a +single <Esc> is assumed. On very slow systems this may fail, causing cursor +keys not to work sometimes. If you discover this problem reset the 'timeout' +option. Vim will wait for the next character to arrive after an <Esc>. If +you want to enter a single <Esc> you must type it twice. Resetting the +'esckeys' option avoids this problem in Insert mode, but you lose the +possibility to use cursor and function keys in Insert mode. + +On the Amiga the recognition of window resizing is activated only when the +terminal name is "amiga" or "builtin_amiga". + +Some terminals have confusing codes for the cursor keys. The televideo 925 is +such a terminal. It sends a CTRL-H for cursor-left. This would make it +impossible to distinguish a backspace and cursor-left. To avoid this problem +CTRL-H is never recognized as cursor-left. + + *vt100-cursor-keys* *xterm-cursor-keys* +Other terminals (e.g., vt100 and xterm) have cursor keys that send <Esc>OA, +<Esc>OB, etc. Unfortunately these are valid commands in insert mode: Stop +insert, Open a new line above the new one, start inserting 'A', 'B', etc. +Instead of performing these commands Vim will erroneously recognize this typed +key sequence as a cursor key movement. To avoid this and make Vim do what you +want in either case you could use these settings: > + :set notimeout " don't timeout on mappings + :set ttimeout " do timeout on terminal key codes + :set timeoutlen=100 " timeout after 100 msec +This requires the key-codes to be sent within 100 msec in order to recognize +them as a cursor key. When you type you normally are not that fast, so they +are recognized as individual typed commands, even though Vim receives the same +sequence of bytes. + + *vt100-function-keys* *xterm-function-keys* +An xterm can send function keys F1 to F4 in two modes: vt100 compatible or +not. Because Vim may not know what the xterm is sending, both types of keys +are recognized. The same happens for the <Home> and <End> keys. + normal vt100 ~ + <F1> t_k1 <Esc>[11~ <xF1> <Esc>OP *<xF1>-xterm* + <F2> t_k2 <Esc>[12~ <xF2> <Esc>OQ *<xF2>-xterm* + <F3> t_k3 <Esc>[13~ <xF3> <Esc>OR *<xF3>-xterm* + <F4> t_k4 <Esc>[14~ <xF4> <Esc>OS *<xF4>-xterm* + <Home> t_kh <Esc>[7~ <xHome> <Esc>OH *<xHome>-xterm* + <End> t_@7 <Esc>[4~ <xEnd> <Esc>OF *<xEnd>-xterm* + +When Vim starts, <xF1> is mapped to <F1>, <xF2> to <F2> etc. This means that +by default both codes do the same thing. If you make a mapping for <xF2>, +because your terminal does have two keys, the default mapping is overwritten, +thus you can use the <F2> and <xF2> keys for something different. + + *xterm-shifted-keys* +Newer versions of xterm support shifted function keys and special keys. Vim +recognizes most of them. Use ":set termcap" to check which are supported and +what the codes are. Mostly these are not in a termcap, they are only +supported by the builtin_xterm termcap. + + *xterm-modifier-keys* +Newer versions of xterm support Alt and Ctrl for most function keys. To avoid +having to add all combinations of Alt, Ctrl and Shift for every key a special +sequence is recognized at the end of a termcap entry: ";*X". The "X" can be +any character, often '~' is used. The ";*" stands for an optional modifier +argument. ";2" is Shift, ";3" is Alt, ";5" is Ctrl and ";9" is Meta (when +it's different from Alt). They can be combined. Examples: > + :set <F8>=^[[19;*~ + :set <Home>=^[[1;*H +Another speciality about these codes is that they are not overwritten by +another code. That is to avoid that the codes obtained from xterm directly +|t_RV| overwrite them. + *xterm-scroll-region* +The default termcap entry for xterm on Sun and other platforms does not +contain the entry for scroll regions. Add ":cs=\E[%i%d;%dr:" to the xterm +entry in /etc/termcap and everything should work. + + *xterm-end-home-keys* +On some systems (at least on FreeBSD with XFree86 3.1.2) the codes that the +<End> and <Home> keys send contain a <Nul> character. To make these keys send +the proper key code, add these lines to your ~/.Xdefaults file: + +*VT100.Translations: #override \n\ + <Key>Home: string("0x1b") string("[7~") \n\ + <Key>End: string("0x1b") string("[8~") + + *xterm-8bit* *xterm-8-bit* +Xterm can be run in a mode where it uses 8-bit escape sequences. The CSI code +is used instead of <Esc>[. The advantage is that an <Esc> can quickly be +recognized in Insert mode, because it can't be confused with the start of a +special key. +For the builtin termcap entries, Vim checks if the 'term' option contains +"8bit" anywhere. It then uses 8-bit characters for the termcap entries, the +mouse and a few other things. You would normally set $TERM in your shell to +"xterm-8bit" and Vim picks this up and adjusts to the 8-bit setting +automatically. +When Vim receives a response to the |t_RV| (request version) sequence and it +starts with CSI, it assumes that the terminal is in 8-bit mode and will +convert all key sequences to their 8-bit variants. + +============================================================================== +2. Terminal options *terminal-options* *termcap-options* *E436* + +The terminal options can be set just like normal options. But they are not +shown with the ":set all" command. Instead use ":set termcap". + +It is always possible to change individual strings by setting the +appropriate option. For example: > + :set t_ce=^V^[[K (CTRL-V, <Esc>, [, K) + +{Vi: no terminal options. You have to exit Vi, edit the termcap entry and +try again} + +The options are listed below. The associated termcap code is always equal to +the last two characters of the option name. Only one termcap code is +required: Cursor motion, 't_cm'. + +The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap. +When the termcap flag is present, the option will be set to "y". But any +non-empty string means that the flag is set. An empty string means that the +flag is not set. 't_CS' works like this too, but it isn't a termcap flag. + +OUTPUT CODES + option meaning ~ + + t_AB set background color (ANSI) *t_AB* *'t_AB'* + t_AF set foreground color (ANSI) *t_AF* *'t_AF'* + t_AL add number of blank lines *t_AL* *'t_AL'* + t_al add new blank line *t_al* *'t_al'* + t_bc backspace character *t_bc* *'t_bc'* + t_cd clear to end of screen *t_cd* *'t_cd'* + t_ce clear to end of line *t_ce* *'t_ce'* + t_cl clear screen *t_cl* *'t_cl'* + t_cm cursor motion (required!) *E437* *t_cm* *'t_cm'* + t_Co number of colors *t_Co* *'t_Co'* + t_CS if non-empty, cursor relative to scroll region *t_CS* *'t_CS'* + t_cs define scrolling region *t_cs* *'t_cs'* + t_CV define vertical scrolling region *t_CV* *'t_CV'* + t_da if non-empty, lines from above scroll down *t_da* *'t_da'* + t_db if non-empty, lines from below scroll up *t_db* *'t_db'* + t_DL delete number of lines *t_DL* *'t_DL'* + t_dl delete line *t_dl* *'t_dl'* + t_fs set window title end (from status line) *t_fs* *'t_fs'* + t_ke exit "keypad transmit" mode *t_ke* *'t_ke'* + t_ks start "keypad transmit" mode *t_ks* *'t_ks'* + t_le move cursor one char left *t_le* *'t_le'* + t_mb blinking mode *t_mb* *'t_mb'* + t_md bold mode *t_md* *'t_md'* + t_me Normal mode (undoes t_mr, t_mb, t_md and color) *t_me* *'t_me'* + t_mr reverse (invert) mode *t_mr* *'t_mr'* + *t_ms* *'t_ms'* + t_ms if non-empty, cursor can be moved in standout/inverse mode + t_nd non destructive space character *t_nd* *'t_nd'* + t_op reset to original color pair *t_op* *'t_op'* + t_RI cursor number of chars right *t_RI* *'t_RI'* + t_Sb set background color *t_Sb* *'t_Sb'* + t_Sf set foreground color *t_Sf* *'t_Sf'* + t_se standout end *t_se* *'t_se'* + t_so standout mode *t_so* *'t_so'* + t_sr scroll reverse (backward) *t_sr* *'t_sr'* + t_te out of "termcap" mode *t_te* *'t_te'* + t_ti put terminal in "termcap" mode *t_ti* *'t_ti'* + t_ts set window title start (to status line) *t_ts* *'t_ts'* + t_ue underline end *t_ue* *'t_ue'* + t_us underline mode *t_us* *'t_us'* + t_Ce undercurl end *t_Ce* *'t_Ce'* + t_Cs undercurl mode *t_Cs* *'t_Cs'* + t_ut clearing uses the current background color *t_ut* *'t_ut'* + t_vb visual bell *t_vb* *'t_vb'* + t_ve cursor visible *t_ve* *'t_ve'* + t_vi cursor invisible *t_vi* *'t_vi'* + t_vs cursor very visible *t_vs* *'t_vs'* + *t_xs* *'t_xs'* + t_xs if non-empty, standout not erased by overwriting (hpterm) + t_ZH italics mode *t_ZH* *'t_ZH'* + t_ZR italics end *t_ZR* *'t_ZR'* + +Added by Vim (there are no standard codes for these): + t_IS set icon text start *t_IS* *'t_IS'* + t_IE set icon text end *t_IE* *'t_IE'* + t_WP set window position (Y, X) in pixels *t_WP* *'t_WP'* + t_WS set window size (height, width) in characters *t_WS* *'t_WS'* + t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'* + t_EI end insert mode (block cursor shape) *t_EI* *'t_EI'* + |termcap-cursor-shape| + t_RV request terminal version string (for xterm) *t_RV* *'t_RV'* + |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| + t_u7 request cursor position (for xterm) *t_u7* *'t_u7'* + see |'ambiwidth'| + +KEY CODES +Note: Use the <> form if possible + + option name meaning ~ + + t_ku <Up> arrow up *t_ku* *'t_ku'* + t_kd <Down> arrow down *t_kd* *'t_kd'* + t_kr <Right> arrow right *t_kr* *'t_kr'* + t_kl <Left> arrow left *t_kl* *'t_kl'* + <xUp> alternate arrow up *<xUp>* + <xDown> alternate arrow down *<xDown>* + <xRight> alternate arrow right *<xRight>* + <xLeft> alternate arrow left *<xLeft>* + <S-Up> shift arrow up + <S-Down> shift arrow down + t_%i <S-Right> shift arrow right *t_%i* *'t_%i'* + t_#4 <S-Left> shift arrow left *t_#4* *'t_#4'* + t_k1 <F1> function key 1 *t_k1* *'t_k1'* + <xF1> alternate F1 *<xF1>* + t_k2 <F2> function key 2 *<F2>* *t_k2* *'t_k2'* + <xF2> alternate F2 *<xF2>* + t_k3 <F3> function key 3 *<F3>* *t_k3* *'t_k3'* + <xF3> alternate F3 *<xF3>* + t_k4 <F4> function key 4 *<F4>* *t_k4* *'t_k4'* + <xF4> alternate F4 *<xF4>* + t_k5 <F5> function key 5 *<F5>* *t_k5* *'t_k5'* + t_k6 <F6> function key 6 *<F6>* *t_k6* *'t_k6'* + t_k7 <F7> function key 7 *<F7>* *t_k7* *'t_k7'* + t_k8 <F8> function key 8 *<F8>* *t_k8* *'t_k8'* + t_k9 <F9> function key 9 *<F9>* *t_k9* *'t_k9'* + t_k; <F10> function key 10 *<F10>* *t_k;* *'t_k;'* + t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'* + t_F2 <F12> function key 12 *<F12>* *t_F2* *'t_F2'* + t_F3 <F13> function key 13 *<F13>* *t_F3* *'t_F3'* + t_F4 <F14> function key 14 *<F14>* *t_F4* *'t_F4'* + t_F5 <F15> function key 15 *<F15>* *t_F5* *'t_F5'* + t_F6 <F16> function key 16 *<F16>* *t_F6* *'t_F6'* + t_F7 <F17> function key 17 *<F17>* *t_F7* *'t_F7'* + t_F8 <F18> function key 18 *<F18>* *t_F8* *'t_F8'* + t_F9 <F19> function key 19 *<F19>* *t_F9* *'t_F9'* + <S-F1> shifted function key 1 + <S-xF1> alternate <S-F1> *<S-xF1>* + <S-F2> shifted function key 2 *<S-F2>* + <S-xF2> alternate <S-F2> *<S-xF2>* + <S-F3> shifted function key 3 *<S-F3>* + <S-xF3> alternate <S-F3> *<S-xF3>* + <S-F4> shifted function key 4 *<S-F4>* + <S-xF4> alternate <S-F4> *<S-xF4>* + <S-F5> shifted function key 5 *<S-F5>* + <S-F6> shifted function key 6 *<S-F6>* + <S-F7> shifted function key 7 *<S-F7>* + <S-F8> shifted function key 8 *<S-F8>* + <S-F9> shifted function key 9 *<S-F9>* + <S-F10> shifted function key 10 *<S-F10>* + <S-F11> shifted function key 11 *<S-F11>* + <S-F12> shifted function key 12 *<S-F12>* + t_%1 <Help> help key *t_%1* *'t_%1'* + t_&8 <Undo> undo key *t_&8* *'t_&8'* + t_kI <Insert> insert key *t_kI* *'t_kI'* + t_kD <Del> delete key *t_kD* *'t_kD'* + t_kb <BS> backspace key *t_kb* *'t_kb'* + t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'* + t_kh <Home> home key *t_kh* *'t_kh'* + t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'* + <xHome> alternate home key *<xHome>* + t_@7 <End> end key *t_@7* *'t_@7'* + t_*7 <S-End> shifted end key *<S-End>* *t_star7* *'t_star7'* + <xEnd> alternate end key *<xEnd>* + t_kP <PageUp> page-up key *t_kP* *'t_kP'* + t_kN <PageDown> page-down key *t_kN* *'t_kN'* + t_K1 <kHome> keypad home key *t_K1* *'t_K1'* + t_K4 <kEnd> keypad end key *t_K4* *'t_K4'* + t_K3 <kPageUp> keypad page-up key *t_K3* *'t_K3'* + t_K5 <kPageDown> keypad page-down key *t_K5* *'t_K5'* + t_K6 <kPlus> keypad plus key *<kPlus>* *t_K6* *'t_K6'* + t_K7 <kMinus> keypad minus key *<kMinus>* *t_K7* *'t_K7'* + t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'* + t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'* + t_KA <kEnter> keypad enter key *<kEnter>* *t_KA* *'t_KA'* + t_KB <kPoint> keypad decimal point *<kPoint>* *t_KB* *'t_KB'* + t_KC <k0> keypad 0 *<k0>* *t_KC* *'t_KC'* + t_KD <k1> keypad 1 *<k1>* *t_KD* *'t_KD'* + t_KE <k2> keypad 2 *<k2>* *t_KE* *'t_KE'* + t_KF <k3> keypad 3 *<k3>* *t_KF* *'t_KF'* + t_KG <k4> keypad 4 *<k4>* *t_KG* *'t_KG'* + t_KH <k5> keypad 5 *<k5>* *t_KH* *'t_KH'* + t_KI <k6> keypad 6 *<k6>* *t_KI* *'t_KI'* + t_KJ <k7> keypad 7 *<k7>* *t_KJ* *'t_KJ'* + t_KK <k8> keypad 8 *<k8>* *t_KK* *'t_KK'* + t_KL <k9> keypad 9 *<k9>* *t_KL* *'t_KL'* + <Mouse> leader of mouse code *<Mouse>* + +Note about t_so and t_mr: When the termcap entry "so" is not present the +entry for "mr" is used. And vice versa. The same is done for "se" and "me". +If your terminal supports both inversion and standout mode, you can see two +different modes. If your terminal supports only one of the modes, both will +look the same. + + *keypad-comma* +The keypad keys, when they are not mapped, behave like the equivalent normal +key. There is one exception: if you have a comma on the keypad instead of a +decimal point, Vim will use a dot anyway. Use these mappings to fix that: > + :noremap <kPoint> , + :noremap! <kPoint> , +< *xterm-codes* +There is a special trick to obtain the key codes which currently only works +for xterm. When |t_RV| is defined and a response is received which indicates +an xterm with patchlevel 141 or higher, Vim uses special escape sequences to +request the key codes directly from the xterm. The responses are used to +adjust the various t_ codes. This avoids the problem that the xterm can +produce different codes, depending on the mode it is in (8-bit, VT102, +VT220, etc.). The result is that codes like <xF1> are no longer needed. +Note: This is only done on startup. If the xterm options are changed after +Vim has started, the escape sequences may not be recognized any more. + + *xterm-resize* +Window resizing with xterm only works if the allowWindowOps resource is +enabled. On some systems and versions of xterm it's disabled by default +because someone thought it would be a security issue. It's not clear if this +is actually the case. + +To overrule the default, put this line in your ~/.Xdefaults or +~/.Xresources: +> + XTerm*allowWindowOps: true + +And run "xrdb -merge .Xresources" to make it effective. You can check the +value with the context menu (right mouse button while CTRL key is pressed), +there should be a tick at allow-window-ops. + + *termcap-colors* +Note about colors: The 't_Co' option tells Vim the number of colors available. +When it is non-zero, the 't_AB' and 't_AF' options are used to set the color. +If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used +to reset to the default colors. + + *termcap-cursor-shape* *termcap-cursor-color* +When Vim enters Insert mode the 't_SI' escape sequence is sent. When leaving +Insert mode 't_EI' is used. But only if both are defined. This can be used +to change the shape or color of the cursor in Insert mode. These are not +standard termcap/terminfo entries, you need to set them yourself. +Example for an xterm, this changes the color of the cursor: > + if &term =~ "xterm" + let &t_SI = "\<Esc>]12;purple\x7" + let &t_EI = "\<Esc>]12;blue\x7" + endif +NOTE: When Vim exits the shape for Normal mode will remain. The shape from +before Vim started will not be restored. +{not available when compiled without the |+cursorshape| feature} + + *termcap-title* +The 't_ts' and 't_fs' options are used to set the window title if the terminal +allows title setting via sending strings. They are sent before and after the +title string, respectively. Similar 't_IS' and 't_IE' are used to set the +icon text. These are Vim-internal extensions of the Unix termcap, so they +cannot be obtained from an external termcap. However, the builtin termcap +contains suitable entries for xterm and iris-ansi, so you don't need to set +them here. + *hpterm* +If inversion or other highlighting does not work correctly, try setting the +'t_xs' option to a non-empty string. This makes the 't_ce' code be used to +remove highlighting from a line. This is required for "hpterm". Setting the +'weirdinvert' option has the same effect as making 't_xs' non-empty, and vice +versa. + + *scroll-region* +Some termcaps do not include an entry for 'cs' (scroll region), although the +terminal does support it. For example: xterm on a Sun. You can use the +builtin_xterm or define t_cs yourself. For example: > + :set t_cs=^V^[[%i%d;%dr +Where ^V is CTRL-V and ^[ is <Esc>. + +The vertical scroll region t_CV is not a standard termcap code. Vim uses it +internally in the GUI. But it can also be defined for a terminal, if you can +find one that supports it. The two arguments are the left and right column of +the region which to restrict the scrolling to. Just like t_cs defines the top +and bottom lines. Defining t_CV will make scrolling in vertically split +windows a lot faster. Don't set t_CV when t_da or t_db is set (text isn't +cleared when scrolling). + +Unfortunately it is not possible to deduce from the termcap how cursor +positioning should be done when using a scrolling region: Relative to the +beginning of the screen or relative to the beginning of the scrolling region. +Most terminals use the first method. A known exception is the MS-DOS console +(pcterm). The 't_CS' option should be set to any string when cursor +positioning is relative to the start of the scrolling region. It should be +set to an empty string otherwise. It defaults to "yes" when 'term' is +"pcterm". + +Note for xterm users: The shifted cursor keys normally don't work. You can + make them work with the xmodmap command and some mappings in Vim. + + Give these commands in the xterm: + xmodmap -e "keysym Up = Up F13" + xmodmap -e "keysym Down = Down F16" + xmodmap -e "keysym Left = Left F18" + xmodmap -e "keysym Right = Right F19" + + And use these mappings in Vim: + :map <t_F3> <S-Up> + :map! <t_F3> <S-Up> + :map <t_F6> <S-Down> + :map! <t_F6> <S-Down> + :map <t_F8> <S-Left> + :map! <t_F8> <S-Left> + :map <t_F9> <S-Right> + :map! <t_F9> <S-Right> + +Instead of, say, <S-Up> you can use any other command that you want to use the +shift-cursor-up key for. (Note: To help people that have a Sun keyboard with +left side keys F14 is not used because it is confused with the undo key; F15 +is not used, because it does a window-to-front; F17 is not used, because it +closes the window. On other systems you can probably use them.) + +============================================================================== +3. Window size *window-size* + +[This is about the size of the whole window Vim is using, not a window that is +created with the ":split" command.] + +If you are running Vim on an Amiga and the terminal name is "amiga" or +"builtin_amiga", the amiga-specific window resizing will be enabled. On Unix +systems three methods are tried to get the window size: + +- an ioctl call (TIOCGSIZE or TIOCGWINSZ, depends on your system) +- the environment variables "LINES" and "COLUMNS" +- from the termcap entries "li" and "co" + +If everything fails a default size of 24 lines and 80 columns is assumed. If +a window-resize signal is received the size will be set again. If the window +size is wrong you can use the 'lines' and 'columns' options to set the +correct values. + +One command can be used to set the screen size: + + *:mod* *:mode* *E359* *E362* +:mod[e] [mode] + +Without argument this only detects the screen size and redraws the screen. +With MS-DOS it is possible to switch screen mode. [mode] can be one of these +values: + "bw40" 40 columns black&white + "c40" 40 columns color + "bw80" 80 columns black&white + "c80" 80 columns color (most people use this) + "mono" 80 columns monochrome + "c4350" 43 or 50 lines EGA/VGA mode + number mode number to use, depends on your video card + +============================================================================== +4. Slow and fast terminals *slow-fast-terminal* + *slow-terminal* + +If you have a fast terminal you may like to set the 'ruler' option. The +cursor position is shown in the status line. If you are using horizontal +scrolling ('wrap' option off) consider setting 'sidescroll' to a small +number. + +If you have a slow terminal you may want to reset the 'showcmd' option. +The command characters will not be shown in the status line. If the terminal +scrolls very slowly, set the 'scrolljump' to 5 or so. If the cursor is moved +off the screen (e.g., with "j") Vim will scroll 5 lines at a time. Another +possibility is to reduce the number of lines that Vim uses with the command +"z{height}<CR>". + +If the characters from the terminal are arriving with more than 1 second +between them you might want to set the 'timeout' and/or 'ttimeout' option. +See the "Options" chapter |options|. + +If your terminal does not support a scrolling region, but it does support +insert/delete line commands, scrolling with multiple windows may make the +lines jump up and down. If you don't want this set the 'ttyfast' option. +This will redraw the window instead of scroll it. + +If your terminal scrolls very slowly, but redrawing is not slow, set the +'ttyscroll' option to a small number, e.g., 3. This will make Vim redraw the +screen instead of scrolling, when there are more than 3 lines to be scrolled. + +If you are using a color terminal that is slow, use this command: > + hi NonText cterm=NONE ctermfg=NONE +This avoids that spaces are sent when they have different attributes. On most +terminals you can't see this anyway. + +If you are using Vim over a slow serial line, you might want to try running +Vim inside the "screen" program. Screen will optimize the terminal I/O quite +a bit. + +If you are testing termcap options, but you cannot see what is happening, +you might want to set the 'writedelay' option. When non-zero, one character +is sent to the terminal at a time (does not work for MS-DOS). This makes the +screen updating a lot slower, making it possible to see what is happening. + +============================================================================== +5. Using the mouse *mouse-using* + +This section is about using the mouse on a terminal or a terminal window. How +to use the mouse in a GUI window is explained in |gui-mouse|. For scrolling +with a mouse wheel see |scroll-mouse-wheel|. + +Don't forget to enable the mouse with this command: > + :set mouse=a +Otherwise Vim won't recognize the mouse in all modes (See 'mouse'). + +Currently the mouse is supported for Unix in an xterm window, in a *BSD +console with |sysmouse|, in a Linux console (with GPM |gpm-mouse|), for +MS-DOS and in a Windows console. +Mouse clicks can be used to position the cursor, select an area and paste. + +These characters in the 'mouse' option tell in which situations the mouse will +be used by Vim: + n Normal mode + v Visual mode + i Insert mode + c Command-line mode + h all previous modes when in a help file + a all previous modes + r for |hit-enter| prompt + +The default for 'mouse' is empty, the mouse is not used. Normally you would +do: > + :set mouse=a +to start using the mouse (this is equivalent to setting 'mouse' to "nvich"). +If you only want to use the mouse in a few modes or also want to use it for +the two questions you will have to concatenate the letters for those modes. +For example: > + :set mouse=nv +Will make the mouse work in Normal mode and Visual mode. > + :set mouse=h +Will make the mouse work in help files only (so you can use "g<LeftMouse>" to +jump to tags). + +Whether the selection that is started with the mouse is in Visual mode or +Select mode depends on whether "mouse" is included in the 'selectmode' +option. + +In an xterm, with the currently active mode included in the 'mouse' option, +normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key +pressed go to the xterm. With the currently active mode not included in +'mouse' all mouse clicks go to the xterm. + + *xterm-clipboard* +In the Athena and Motif GUI versions, when running in a terminal and there is +access to the X-server (DISPLAY is set), the copy and paste will behave like +in the GUI. If not, the middle mouse button will insert the unnamed register. +In that case, here is how you copy and paste a piece of text: + +Copy/paste with the mouse and Visual mode ('mouse' option must be set, see +above): +1. Press left mouse button on first letter of text, move mouse pointer to last + letter of the text and release the button. This will start Visual mode and + highlight the selected area. +2. Press "y" to yank the Visual text in the unnamed register. +3. Click the left mouse button at the insert position. +4. Click the middle mouse button. + +Shortcut: If the insert position is on the screen at the same time as the +Visual text, you can do 2, 3 and 4 all in one: Click the middle mouse button +at the insert position. + +Note: When the |-X| command line argument is used, Vim will not connect to the +X server and copy/paste to the X clipboard (selection) will not work. Use the +shift key with the mouse buttons to let the xterm do the selection. + + *xterm-command-server* +When the X-server clipboard is available, the command server described in +|x11-clientserver| can be enabled with the --servername command line argument. + + *xterm-copy-paste* +NOTE: In some (older) xterms, it's not possible to move the cursor past column +95. This is an xterm problem, not Vim's. Get a newer xterm |color-xterm|. +Now the limit is 223 columns. + +Copy/paste in xterm with (current mode NOT included in 'mouse'): +1. Press left mouse button on first letter of text, move mouse pointer to last + letter of the text and release the button. +2. Use normal Vim commands to put the cursor at the insert position. +3. Press "a" to start Insert mode. +4. Click the middle mouse button. +5. Press ESC to end Insert mode. +(The same can be done with anything in 'mouse' if you keep the shift key +pressed while using the mouse.) + +Note: if you lose the 8th bit when pasting (special characters are translated +into other characters), you may have to do "stty cs8 -istrip -parenb" in your +shell before starting Vim. + +Thus in an xterm the shift and ctrl keys cannot be used with the mouse. Mouse +commands requiring the CTRL modifier can be simulated by typing the "g" key +before using the mouse: + "g<LeftMouse>" is "<C-LeftMouse> (jump to tag under mouse click) + "g<RightMouse>" is "<C-RightMouse> ("CTRL-T") + + *mouse-mode-table* *mouse-overview* +A short overview of what the mouse buttons do, when 'mousemodel' is "extend": + +Normal Mode: +event position selection change action ~ + cursor window ~ +<LeftMouse> yes end yes +<C-LeftMouse> yes end yes "CTRL-]" (2) +<S-LeftMouse> yes no change yes "*" (2) *<S-LeftMouse>* +<LeftDrag> yes start or extend (1) no *<LeftDrag>* +<LeftRelease> yes start or extend (1) no +<MiddleMouse> yes if not active no put +<MiddleMouse> yes if active no yank and put +<RightMouse> yes start or extend yes +<A-RightMouse> yes start or extend blockw. yes *<A-RightMouse>* +<S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>* +<C-RightMouse> no no change no "CTRL-T" +<RightDrag> yes extend no *<RightDrag>* +<RightRelease> yes extend no *<RightRelease>* + +Insert or Replace Mode: +event position selection change action ~ + cursor window ~ +<LeftMouse> yes (cannot be active) yes +<C-LeftMouse> yes (cannot be active) yes "CTRL-O^]" (2) +<S-LeftMouse> yes (cannot be active) yes "CTRL-O*" (2) +<LeftDrag> yes start or extend (1) no like CTRL-O (1) +<LeftRelease> yes start or extend (1) no like CTRL-O (1) +<MiddleMouse> no (cannot be active) no put register +<RightMouse> yes start or extend yes like CTRL-O +<A-RightMouse> yes start or extend blockw. yes +<S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2) +<C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T" + +In a help window: +event position selection change action ~ + cursor window ~ +<2-LeftMouse> yes (cannot be active) no "^]" (jump to help tag) + +When 'mousemodel' is "popup", these are different: + +Normal Mode: +event position selection change action ~ + cursor window ~ +<S-LeftMouse> yes start or extend (1) no +<A-LeftMouse> yes start or extend blockw. no *<A-LeftMouse>* +<RightMouse> no popup menu no + +Insert or Replace Mode: +event position selection change action ~ + cursor window ~ +<S-LeftMouse> yes start or extend (1) no like CTRL-O (1) +<A-LeftMouse> yes start or extend blockw. no +<RightMouse> no popup menu no + +(1) only if mouse pointer moved since press +(2) only if click is in same buffer + +Clicking the left mouse button causes the cursor to be positioned. If the +click is in another window that window is made the active window. When +editing the command-line the cursor can only be positioned on the +command-line. When in Insert mode Vim remains in Insert mode. If 'scrolloff' +is set, and the cursor is positioned within 'scrolloff' lines from the window +border, the text is scrolled. + +A selection can be started by pressing the left mouse button on the first +character, moving the mouse to the last character, then releasing the mouse +button. You will not always see the selection until you release the button, +only in some versions (GUI, MS-DOS, WIN32) will the dragging be shown +immediately. Note that you can make the text scroll by moving the mouse at +least one character in the first/last line in the window when 'scrolloff' is +non-zero. + +In Normal, Visual and Select mode clicking the right mouse button causes the +Visual area to be extended. When 'mousemodel' is "popup", the left button has +to be used while keeping the shift key pressed. When clicking in a window +which is editing another buffer, the Visual or Select mode is stopped. + +In Normal, Visual and Select mode clicking the right mouse button with the alt +key pressed causes the Visual area to become blockwise. When 'mousemodel' is +"popup" the left button has to be used with the alt key. Note that this won't +work on systems where the window manager consumes the mouse events when the +alt key is pressed (it may move the window). + + *double-click* +Double, triple and quadruple clicks are supported when the GUI is active, +for MS-DOS and Win32, and for an xterm (if the gettimeofday() function is +available). For selecting text, extra clicks extend the selection: + click select ~ + double word or % match *<2-LeftMouse>* + triple line *<3-LeftMouse>* + quadruple rectangular block *<4-LeftMouse>* +Exception: In a Help window a double click jumps to help for the word that is +clicked on. +A double click on a word selects that word. 'iskeyword' is used to specify +which characters are included in a word. A double click on a character +that has a match selects until that match (like using "v%"). If the match is +an #if/#else/#endif block, the selection becomes linewise. +For MS-DOS and xterm the time for double clicking can be set with the +'mousetime' option. For the other systems this time is defined outside of +Vim. +An example, for using a double click to jump to the tag under the cursor: > + :map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR> + +Dragging the mouse with a double click (button-down, button-up, button-down +and then drag) will result in whole words to be selected. This continues +until the button is released, at which point the selection is per character +again. + + *gpm-mouse* +The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at +compile time. The GPM mouse driver (Linux console) does not support quadruple +clicks. + +In Insert mode, when a selection is started, Vim goes into Normal mode +temporarily. When Visual or Select mode ends, it returns to Insert mode. +This is like using CTRL-O in Insert mode. Select mode is used when the +'selectmode' option contains "mouse". + *sysmouse* +The sysmouse is only supported when the |+mouse_sysmouse| feature was enabled +at compile time. The sysmouse driver (*BSD console) does not support keyboard +modifiers. + + *drag-status-line* +When working with several windows, the size of the windows can be changed by +dragging the status line with the mouse. Point the mouse at a status line, +press the left button, move the mouse to the new position of the status line, +release the button. Just clicking the mouse in a status line makes that window +the current window, without moving the cursor. If by selecting a window it +will change position or size, the dragging of the status line will look +confusing, but it will work (just try it). + + *<MiddleRelease>* *<MiddleDrag>* +Mouse clicks can be mapped. The codes for mouse clicks are: + code mouse button normal action ~ + <LeftMouse> left pressed set cursor position + <LeftDrag> left moved while pressed extend selection + <LeftRelease> left released set selection end + <MiddleMouse> middle pressed paste text at cursor position + <MiddleDrag> middle moved while pressed - + <MiddleRelease> middle released - + <RightMouse> right pressed extend selection + <RightDrag> right moved while pressed extend selection + <RightRelease> right released set selection end + <X1Mouse> X1 button pressed - *X1Mouse* + <X1Drag> X1 moved while pressed - *X1Drag* + <X1Release> X1 button release - *X1Release* + <X2Mouse> X2 button pressed - *X2Mouse* + <X2Drag> X2 moved while pressed - *X2Drag* + <X2Release> X2 button release - *X2Release* + +The X1 and X2 buttons refer to the extra buttons found on some mice. The +'Microsoft Explorer' mouse has these buttons available to the right thumb. +Currently X1 and X2 only work on Win32 environments. + +Examples: > + :noremap <MiddleMouse> <LeftMouse><MiddleMouse> +Paste at the position of the middle mouse button click (otherwise the paste +would be done at the cursor position). > + + :noremap <LeftRelease> <LeftRelease>y +Immediately yank the selection, when using Visual mode. + +Note the use of ":noremap" instead of "map" to avoid a recursive mapping. +> + :map <X1Mouse> <C-O> + :map <X2Mouse> <C-I> +Map the X1 and X2 buttons to go forwards and backwards in the jump list, see +|CTRL-O| and |CTRL-I|. + + *mouse-swap-buttons* +To swap the meaning of the left and right mouse buttons: > + :noremap <LeftMouse> <RightMouse> + :noremap <LeftDrag> <RightDrag> + :noremap <LeftRelease> <RightRelease> + :noremap <RightMouse> <LeftMouse> + :noremap <RightDrag> <LeftDrag> + :noremap <RightRelease> <LeftRelease> + :noremap g<LeftMouse> <C-RightMouse> + :noremap g<RightMouse> <C-LeftMouse> + :noremap! <LeftMouse> <RightMouse> + :noremap! <LeftDrag> <RightDrag> + :noremap! <LeftRelease> <RightRelease> + :noremap! <RightMouse> <LeftMouse> + :noremap! <RightDrag> <LeftDrag> + :noremap! <RightRelease> <LeftRelease> +< + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/tips.txt b/share/vim/vim74/doc/tips.txt new file mode 100644 index 00000000..90aa20e8 --- /dev/null +++ b/share/vim/vim74/doc/tips.txt @@ -0,0 +1,534 @@ +*tips.txt* For Vim version 7.4. Last change: 2009 Nov 07 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Tips and ideas for using Vim *tips* + +These are just a few that we thought would be helpful for many users. +You can find many more tips on the wiki. The URL can be found on +http://www.vim.org + +Don't forget to browse the user manual, it also contains lots of useful tips +|usr_toc.txt|. + +Editing C programs |C-editing| +Finding where identifiers are used |ident-search| +Switching screens in an xterm |xterm-screens| +Scrolling in Insert mode |scroll-insert| +Smooth scrolling |scroll-smooth| +Correcting common typing mistakes |type-mistakes| +Counting words, lines, etc. |count-items| +Restoring the cursor position |restore-position| +Renaming files |rename-files| +Change a name in multiple files |change-name| +Speeding up external commands |speed-up| +Useful mappings |useful-mappings| +Compressing the help files |gzip-helpfile| +Executing shell commands in a window |shell-window| +Hex editing |hex-editing| +Using <> notation in autocommands |autocmd-<>| +Highlighting matching parens |match-parens| + +============================================================================== +Editing C programs *C-editing* + +There are quite a few features in Vim to help you edit C program files. Here +is an overview with tags to jump to: + +|usr_29.txt| Moving through programs chapter in the user manual. +|usr_30.txt| Editing programs chapter in the user manual. +|C-indenting| Automatically set the indent of a line while typing + text. +|=| Re-indent a few lines. +|format-comments| Format comments. + +|:checkpath| Show all recursively included files. +|[i| Search for identifier under cursor in current and + included files. +|[_CTRL-I| Jump to match for "[i" +|[I| List all lines in current and included files where + identifier under the cursor matches. +|[d| Search for define under cursor in current and included + files. + +|CTRL-]| Jump to tag under cursor (e.g., definition of a + function). +|CTRL-T| Jump back to before a CTRL-] command. +|:tselect| Select one tag out of a list of matching tags. + +|gd| Go to Declaration of local variable under cursor. +|gD| Go to Declaration of global variable under cursor. + +|gf| Go to file name under the cursor. + +|%| Go to matching (), {}, [], /* */, #if, #else, #endif. +|[/| Go to previous start of comment. +|]/| Go to next end of comment. +|[#| Go back to unclosed #if, #ifdef, or #else. +|]#| Go forward to unclosed #else or #endif. +|[(| Go back to unclosed '(' +|])| Go forward to unclosed ')' +|[{| Go back to unclosed '{' +|]}| Go forward to unclosed '}' + +|v_ab| Select "a block" from "[(" to "])", including braces +|v_ib| Select "inner block" from "[(" to "])" +|v_aB| Select "a block" from "[{" to "]}", including brackets +|v_iB| Select "inner block" from "[{" to "]}" + +============================================================================== +Finding where identifiers are used *ident-search* + +You probably already know that |tags| can be used to jump to the place where a +function or variable is defined. But sometimes you wish you could jump to all +the places where a function or variable is being used. This is possible in +two ways: +1. Using the |:grep| command. This should work on most Unix systems, + but can be slow (it reads all files) and only searches in one directory. +2. Using ID utils. This is fast and works in multiple directories. It uses a + database to store locations. You will need some additional programs for + this to work. And you need to keep the database up to date. + +Using the GNU id-tools: + +What you need: +- The GNU id-tools installed (mkid is needed to create ID and lid is needed to + use the macros). +- An identifier database file called "ID" in the current directory. You can + create it with the shell command "mkid file1 file2 ..". + +Put this in your .vimrc: > + map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR> + map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR> + + function! ID_search() + let g:word = expand("<cword>") + let x = system("lid --key=none ". g:word) + let x = substitute(x, "\n", " ", "g") + execute "next " . x + endfun + +To use it, place the cursor on a word, type "_u" and vim will load the file +that contains the word. Search for the next occurrence of the word in the +same file with "n". Go to the next file with "_n". + +This has been tested with id-utils-3.2 (which is the name of the id-tools +archive file on your closest gnu-ftp-mirror). + +[the idea for this comes from Andreas Kutschera] + +============================================================================== +Switching screens in an xterm *xterm-screens* *xterm-save-screen* + +(From comp.editors, by Juergen Weigert, in reply to a question) + +:> Another question is that after exiting vim, the screen is left as it +:> was, i.e. the contents of the file I was viewing (editing) was left on +:> the screen. The output from my previous like "ls" were lost, +:> ie. no longer in the scrolling buffer. I know that there is a way to +:> restore the screen after exiting vim or other vi like editors, +:> I just don't know how. Helps are appreciated. Thanks. +: +:I imagine someone else can answer this. I assume though that vim and vi do +:the same thing as each other for a given xterm setup. + +They not necessarily do the same thing, as this may be a termcap vs. +terminfo problem. You should be aware that there are two databases for +describing attributes of a particular type of terminal: termcap and +terminfo. This can cause differences when the entries differ AND when of +the programs in question one uses terminfo and the other uses termcap +(also see |+terminfo|). + +In your particular problem, you are looking for the control sequences +^[[?47h and ^[[?47l. These switch between xterms alternate and main screen +buffer. As a quick workaround a command sequence like > + echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l" +may do what you want. (My notation ^[ means the ESC character, further down +you'll see that the databases use \E instead). + +On startup, vim echoes the value of the termcap variable ti (terminfo: +smcup) to the terminal. When exiting, it echoes te (terminfo: rmcup). Thus +these two variables are the correct place where the above mentioned control +sequences should go. + +Compare your xterm termcap entry (found in /etc/termcap) with your xterm +terminfo entry (retrieved with "infocmp -C xterm"). Both should contain +entries similar to: > + :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h: + +PS: If you find any difference, someone (your sysadmin?) should better check + the complete termcap and terminfo database for consistency. + +NOTE 1: If you recompile Vim with FEAT_XTERM_SAVE defined in feature.h, the +builtin xterm will include the mentioned "te" and "ti" entries. + +NOTE 2: If you want to disable the screen switching, and you don't want to +change your termcap, you can add these lines to your .vimrc: > + :set t_ti= t_te= + +============================================================================== +Scrolling in Insert mode *scroll-insert* + +If you are in insert mode and you want to see something that is just off the +screen, you can use CTRL-X CTRL-E and CTRL-X CTRL-Y to scroll the screen. + |i_CTRL-X_CTRL-E| + +To make this easier, you could use these mappings: > + :inoremap <C-E> <C-X><C-E> + :inoremap <C-Y> <C-X><C-Y> +(Type this literally, make sure the '<' flag is not in 'cpoptions'). +You then lose the ability to copy text from the line above/below the cursor +|i_CTRL-E|. + +Also consider setting 'scrolloff' to a larger value, so that you can always see +some context around the cursor. If 'scrolloff' is bigger than half the window +height, the cursor will always be in the middle and the text is scrolled when +the cursor is moved up/down. + +============================================================================== +Smooth scrolling *scroll-smooth* + +If you like the scrolling to go a bit smoother, you can use these mappings: > + :map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y> + :map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E> + +(Type this literally, make sure the '<' flag is not in 'cpoptions'). + +============================================================================== +Correcting common typing mistakes *type-mistakes* + +When there are a few words that you keep on typing in the wrong way, make +abbreviations that correct them. For example: > + :ab teh the + :ab fro for + +============================================================================== +Counting words, lines, etc. *count-items* + +To count how often any pattern occurs in the current buffer use the substitute +command and add the 'n' flag to avoid the substitution. The reported number +of substitutions is the number of items. Examples: > + + :%s/./&/gn characters + :%s/\i\+/&/gn words + :%s/^//n lines + :%s/the/&/gn "the" anywhere + :%s/\<the\>/&/gn "the" as a word + +You might want to reset 'hlsearch' or do ":nohlsearch". +Add the 'e' flag if you don't want an error when there are no matches. + +An alternative is using |v_g_CTRL-G| in Visual mode. + +If you want to find matches in multiple files use |:vimgrep|. + + *count-bytes* +If you want to count bytes, you can use this: + + Visually select the characters (block is also possible) + Use "y" to yank the characters + Use the strlen() function: > + :echo strlen(@") +A line break is counted for one byte. + +============================================================================== +Restoring the cursor position *restore-position* + +Sometimes you want to write a mapping that makes a change somewhere in the +file and restores the cursor position, without scrolling the text. For +example, to change the date mark in a file: > + :map <F2> msHmtgg/Last [cC]hange:\s*/e+1<CR>"_D"=strftime("%Y %b %d")<CR>p'tzt`s + +Breaking up saving the position: + ms store cursor position in the 's' mark + H go to the first line in the window + mt store this position in the 't' mark + +Breaking up restoring the position: + 't go to the line previously at the top of the window + zt scroll to move this line to the top of the window + `s jump to the original position of the cursor + +For something more advanced see |winsaveview()| and |winrestview()|. + +============================================================================== +Renaming files *rename-files* + +Say I have a directory with the following files in them (directory picked at +random :-): + +buffer.c +charset.c +digraph.c +... + +and I want to rename *.c *.bla. I'd do it like this: > + + $ vim + :r !ls *.c + :%s/\(.*\).c/mv & \1.bla + :w !sh + :q! + +============================================================================== +Change a name in multiple files *change-name* + +Example for using a script file to change a name in several files: + + Create a file "subs.vim" containing substitute commands and a :update + command: > + :%s/Jones/Smith/g + :%s/Allen/Peter/g + :update +< + Execute Vim on all files you want to change, and source the script for + each argument: > + + vim *.let + argdo source subs.vim + +See |:argdo|. + +============================================================================== +Speeding up external commands *speed-up* + +In some situations, execution of an external command can be very slow. This +can also slow down wildcard expansion on Unix. Here are a few suggestions to +increase the speed. + +If your .cshrc (or other file, depending on the shell used) is very long, you +should separate it into a section for interactive use and a section for +non-interactive use (often called secondary shells). When you execute a +command from Vim like ":!ls", you do not need the interactive things (for +example, setting the prompt). Put the stuff that is not needed after these +lines: > + + if ($?prompt == 0) then + exit 0 + endif + +Another way is to include the "-f" flag in the 'shell' option, e.g.: > + + :set shell=csh\ -f + +(the backslash is needed to include the space in the option). +This will make csh completely skip the use of the .cshrc file. This may cause +some things to stop working though. + +============================================================================== +Useful mappings *useful-mappings* + +Here are a few mappings that some people like to use. + + *map-backtick* > + :map ' ` +Make the single quote work like a backtick. Puts the cursor on the column of +a mark, instead of going to the first non-blank character in the line. + + *emacs-keys* +For Emacs-style editing on the command-line: > + " start of line + :cnoremap <C-A> <Home> + " back one character + :cnoremap <C-B> <Left> + " delete character under cursor + :cnoremap <C-D> <Del> + " end of line + :cnoremap <C-E> <End> + " forward one character + :cnoremap <C-F> <Right> + " recall newer command-line + :cnoremap <C-N> <Down> + " recall previous (older) command-line + :cnoremap <C-P> <Up> + " back one word + :cnoremap <Esc><C-B> <S-Left> + " forward one word + :cnoremap <Esc><C-F> <S-Right> + +NOTE: This requires that the '<' flag is excluded from 'cpoptions'. |<>| + + *format-bullet-list* +This mapping will format any bullet list. It requires that there is an empty +line above and below each list entry. The expression commands are used to +be able to give comments to the parts of the mapping. > + + :let m = ":map _f :set ai<CR>" " need 'autoindent' set + :let m = m . "{O<Esc>" " add empty line above item + :let m = m . "}{)^W" " move to text after bullet + :let m = m . "i <CR> <Esc>" " add space for indent + :let m = m . "gq}" " format text after the bullet + :let m = m . "{dd" " remove the empty line + :let m = m . "5lDJ" " put text after bullet + :execute m |" define the mapping + +(<> notation |<>|. Note that this is all typed literally. ^W is "^" "W", not +CTRL-W. You can copy/paste this into Vim if '<' is not included in +'cpoptions'.) + +Note that the last comment starts with |", because the ":execute" command +doesn't accept a comment directly. + +You also need to set 'textwidth' to a non-zero value, e.g., > + :set tw=70 + +A mapping that does about the same, but takes the indent for the list from the +first line (Note: this mapping is a single long line with a lot of spaces): > + :map _f :set ai<CR>}{a <Esc>WWmmkD`mi<CR><Esc>kkddpJgq}'mJO<Esc>j +< + *collapse* +These two mappings reduce a sequence of empty (;b) or blank (;n) lines into a +single line > + :map ;b GoZ<Esc>:g/^$/.,/./-j<CR>Gdd + :map ;n GoZ<Esc>:g/^[ <Tab>]*$/.,/[^ <Tab>]/-j<CR>Gdd + +============================================================================== +Compressing the help files *gzip-helpfile* + +For those of you who are really short on disk space, you can compress the help +files and still be able to view them with Vim. This makes accessing the help +files a bit slower and requires the "gzip" program. + +(1) Compress all the help files: "gzip doc/*.txt". + +(2) Edit "doc/tags" and change the ".txt" to ".txt.gz": > + :%s=\(\t.*\.txt\)\t=\1.gz\t= + +(3) Add this line to your vimrc: > + set helpfile={dirname}/help.txt.gz + +Where {dirname} is the directory where the help files are. The |gzip| plugin +will take care of decompressing the files. +You must make sure that $VIMRUNTIME is set to where the other Vim files are, +when they are not in the same location as the compressed "doc" directory. See +|$VIMRUNTIME|. + +============================================================================== +Executing shell commands in a window *shell-window* + +There have been questions for the possibility to execute a shell in a window +inside Vim. The answer: you can't! Including this would add a lot of code to +Vim, which is a good reason not to do this. After all, Vim is an editor, it +is not supposed to do non-editing tasks. However, to get something like this, +you might try splitting your terminal screen or display window with the +"splitvt" program. You can probably find it on some ftp server. The person +that knows more about this is Sam Lantinga <slouken@cs.ucdavis.edu>. +An alternative is the "window" command, found on BSD Unix systems, which +supports multiple overlapped windows. Or the "screen" program, found at +www.uni-erlangen.de, which supports a stack of windows. + +============================================================================== +Hex editing *hex-editing* *using-xxd* + +See section |23.4| of the user manual. + +If one has a particular extension that one uses for binary files (such as exe, +bin, etc), you may find it helpful to automate the process with the following +bit of autocmds for your <.vimrc>. Change that "*.bin" to whatever +comma-separated list of extension(s) you find yourself wanting to edit: > + + " vim -b : edit binary using xxd-format! + augroup Binary + au! + au BufReadPre *.bin let &bin=1 + au BufReadPost *.bin if &bin | %!xxd + au BufReadPost *.bin set ft=xxd | endif + au BufWritePre *.bin if &bin | %!xxd -r + au BufWritePre *.bin endif + au BufWritePost *.bin if &bin | %!xxd + au BufWritePost *.bin set nomod | endif + augroup END + +============================================================================== +Using <> notation in autocommands *autocmd-<>* + +The <> notation is not recognized in the argument of an :autocmd. To avoid +having to use special characters, you could use a self-destroying mapping to +get the <> notation and then call the mapping from the autocmd. Example: + + *map-self-destroy* > + " This is for automatically adding the name of the file to the menu list. + " It uses a self-destroying mapping! + " 1. use a line in the buffer to convert the 'dots' in the file name to \. + " 2. store that in register '"' + " 3. add that name to the Buffers menu list + " WARNING: this does have some side effects, like overwriting the + " current register contents and removing any mapping for the "i" command. + " + autocmd BufNewFile,BufReadPre * nmap i :nunmap i<CR>O<C-R>%<Esc>:.g/\./s/\./\\./g<CR>0"9y$u:menu Buffers.<C-R>9 :buffer <C-R>%<C-V><CR><CR> + autocmd BufNewFile,BufReadPre * normal i + +Another method, perhaps better, is to use the ":execute" command. In the +string you can use the <> notation by preceding it with a backslash. Don't +forget to double the number of existing backslashes and put a backslash before +'"'. +> + autocmd BufNewFile,BufReadPre * exe "normal O\<C-R>%\<Esc>:.g/\\./s/\\./\\\\./g\<CR>0\"9y$u:menu Buffers.\<C-R>9 :buffer \<C-R>%\<C-V>\<CR>\<CR>" + +For a real buffer menu, user functions should be used (see |:function|), but +then the <> notation isn't used, which defeats using it as an example here. + +============================================================================== +Highlighting matching parens *match-parens* + +This example shows the use of a few advanced tricks: +- using the |CursorMoved| autocommand event +- using |searchpairpos()| to find a matching paren +- using |synID()| to detect whether the cursor is in a string or comment +- using |:match| to highlight something +- using a |pattern| to match a specific position in the file. + +This should be put in a Vim script file, since it uses script-local variables. +It skips matches in strings or comments, unless the cursor started in string +or comment. This requires syntax highlighting. + +A slightly more advanced version is used in the |matchparen| plugin. +> + let s:paren_hl_on = 0 + function s:Highlight_Matching_Paren() + if s:paren_hl_on + match none + let s:paren_hl_on = 0 + endif + + let c_lnum = line('.') + let c_col = col('.') + + let c = getline(c_lnum)[c_col - 1] + let plist = split(&matchpairs, ':\|,') + let i = index(plist, c) + if i < 0 + return + endif + if i % 2 == 0 + let s_flags = 'nW' + let c2 = plist[i + 1] + else + let s_flags = 'nbW' + let c2 = c + let c = plist[i - 1] + endif + if c == '[' + let c = '\[' + let c2 = '\]' + endif + let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . + \ '=~? "string\\|comment"' + execute 'if' s_skip '| let s_skip = 0 | endif' + + let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip) + + if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$') + exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col . + \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' + let s:paren_hl_on = 1 + endif + endfunction + + autocmd CursorMoved,CursorMovedI * call s:Highlight_Matching_Paren() + autocmd InsertEnter * match none +< + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/todo.txt b/share/vim/vim74/doc/todo.txt new file mode 100644 index 00000000..5c683526 --- /dev/null +++ b/share/vim/vim74/doc/todo.txt @@ -0,0 +1,5221 @@ +*todo.txt* For Vim version 7.4. Last change: 2013 Aug 10 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + TODO list for Vim *todo* + +This is a veeeery long list of known bugs, current work and desired +improvements. To make it a little bit accessible, the items are grouped by +subject. In the first column of the line a classification is used to be able +to look for "the next thing to do": + +Priority classification: +9 next point release +8 next release +7 as soon as possible +6 soon +5 should be included +4 nice to have +3 consider including +2 maybe not +1 probably not +- unclassified + + *votes-for-changes* +See |develop.txt| for development plans. You can vote for which items should +be worked on, but only if you sponsor Vim development. See |sponsor|. + +Issues can also be entered online: http://code.google.com/p/vim/issues/list +Updates will be forwarded to the vim_dev maillist. Issues entered there will +not be repeated below, unless there is extra information. + + *known-bugs* +-------------------- Known bugs and current work ----------------------- + +Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) + +Patch to add "acl" and "xpm" as a feature. (Ken Takata, 2013 Jul 8) + +Patch to make has() check for Vim version and patch at the same time. +(Marc Weber, 2013 Jun 7) + +Several syntax file match "^\s*" which may get underlined if that's in the +highlight group. Add a "\zs" after it? + +Go through more coverity reports. + +"gUgn" cannot be repeated, while "dgn" can. + +Several Win32 functions are not using Unicode. +Patches to fix this. (Ken Takata, 2013 Aug 9) + +/[b-a] gives error E16, should probably be E769. + +Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10) + +Patch to make external commands work with multi-byte characters on Win32 when +'encoding' differs from the active codepage. (Yasuhiro Matsumoto, 2013 Aug 5) + +Checking runtime scripts: Thilo Six, 2012 Jun 6. + +Fold can't be opened after ":move". (Ein Brown) +Patch from Christian Brabandt doesn't fix it completely. + +GTK: problem with 'L' in 'guioptions' changing the window width. +(Aaron Cornelius, 2012 Feb 6) + +Javascript file where indent gets stuck on: GalaxyMaster, 2012 May 3. + +The BufUnload event is triggered when re-using the empty buffer. +(Pokey Rule, 2013 Jul 22) +Patch by Marcin Szamotulski, 2013 Jul 22. + +The CompleteDone autocommand needs some info passed to it: +- The word that was selected (empty if abandoned complete) +- Type of completion: tag, omnifunc, user func. + +Using ":call foo#d.f()" doesn't autoload the "foo.vim" file. +That is, calling a dictionary function on an autoloaded dict. +Works OK for echo, just not for ":call" and ":call call()". (Ted, 2011 Mar +17) +Patch by Christian Brabandt, 2013 Mar 23. +Not 100% sure this is the right solution. + +Win32: When a directory name contains an exclamation mark, completion doesn't +complete the contents of the directory. No escaping for the "!"? (Jan +Stocker, 2012 Jan 5) + +Patch to support expression argument to sort() instead of a function name. +Yasuhiro Matsumoto, 2013 May 31. +Or should we add a more general mechanism, like lambda functions? + +Problem caused by patch 7.3.638: window->open does not update window +correctly. Issue 91. + +Patch to fix that 'cedit' is recognized after :normal. (Christian Brabandt, +2013 Mar 19, later message) + +Patch to view coverage of the tests. (Nazri Ramliy, 2013 Feb 15) + +Patch to invert characters differently in GTK. (Yukihiro Nakadaira, 2013 May +5) + +Patch to add "Q" and "A" responses to interactive :substitute. They are +carried over when using :global. (Christian Brabandt, 2013 Jun 19) + +Bug with 'cursorline' in diff mode. Line being scrolled into view gets +highlighted as the cursor line. (Alessandro Ivaldi, 2013 Jun 4) + +Patch to add the bufferlist() function. (Yegappan Lakshmanan, 2013 May 5) +May 17: with winlist() and tabpagelist(). +May 19: with local variables. +May 28: with options + +Patch to support 'u' in interactive substitute. (Christian Brabandt, 2012 Sep +28) With tests: Oct 9. + +Patch from Christian Brabandt to make the "buffer" argument for ":sign place" +optional. (2013 Jul 12) + +Patch to allow setting w:quickfix_title via setqflist() and setloclist() +functions. (Christian Brabandt, 2013 May 8, update May 21) +Patch to add getlocstack() / setlocstack(). (Christian Brabandt, 2013 May 14) +Second one. Update May 22. + +Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec) + +MS-Windows: Patch to make tests copy files to avoid changing the fileformat of +the files under version control. (Taro Muraoka, 2013 Jul 5) + +Issue 54: document behavior of -complete, also expands arg. + +- Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine + the two into a regex for searching. (Ned Konz) +Patch by Christian Brabandt, 2013 Apr 20, unfinished. + +Bug: findfile("any", "file:///tmp;") does not work. + +v:register is not directly reset to " after a delete command that specifies a +register. It is reset after the next command. (Steve Vermeulen, 2013 Mar 16) + +'ff' is wrong for one-line file without EOL. (Issue 77) + +Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14) +Needs a different check for CLEARTYPE_QUALITY. + +In the ATTENTION message about an existing swap file, mention the name of the +process that is running. It might actually be some other program, e.g. after +a reboot. + +MS-Windows: Crash opening very long file name starting with "\\". +(Christian Brock, 2012 Jun 29) + +patch to add "combine" flag to syntax commands. (so8res, 2012 Dec 6) + +Syntax update problem in one buffer opened in two windows, bottom window is +not correctly updated. (Paul Harris, 2012 Feb 27) + +Patch to add assignments in cscope. (Uli Meis, Estabrooks, 2012 Sep 1) +Alternate patch by Gary Johnson, Sep 4. + +Patch to add getsid(). (Tyru, 2011 Oct 2) Do we want this? Update Oct 4. +Or use expand('<sid>')? + +Patch to make confirm() display colors. (Christian Brabandt, 2012 Nov 9) + +Patch to add functions for signs. (Christian Brabandt, 2013 Jan 27) + +Patch to use directX to draw text on Windows. Adds the 'renderoptions' +option. (Taro Muraoka, 2013 Jan 25, update 2013 Apr 3, May 14) + +Patch to add 'completeselect' option. Specifies how to select a candidate in +insert completion. (Shougo, 2013 May 29) +Update to add to existing 'completeopt'. 2013 May 30 + +Problem with refresh:always in completion. (Tyler Wade, 2013 Mar 17) + +b:undo_ftplugin cannot call a script-local function. (Boris Danilov, 2013 Jan +7) + +Win32: The Python interface only works with one version of Python, selected at +compile time. Can this be made to work with version 2.1 and 2.2 dynamically? + +Python: Extended funcrefs: use func_T* structure in place of char_u* function +names. (ZyX, 2013 Jul 15 and later) + +Python: Be able to define a Python function that can be called directly from +Vim script. Requires converting the arguments and return value, like with +vim.bindeval(). + +Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers, +2012 Aug 4) + +Patch to improve equivalence classes in regexp patterns. +(Christian Brabandt, 2013 Jan 16, update Jan 17) + +Patch with suggestions for starting.txt. (Tony Mechelynck, 2012 Oct 24) +But use Gnome instead of GTK? + +Patch to make FocusGained and FocusLost work in modern terminals. (Hayaki +Saito, 2013 Apr 24) + +Should be possible to enable/disable matchparen per window or buffer. +Add a check for b:no_match_paren in Highlight_matching_Pair() (Marcin +Szamotulski, 2012 Nov 8) + +Crash in autocmd that unloads buffers in a BufUnload event. (Andrew Pimlott, +2012 Aug 11) Disallow :new when BufUnload is being handled? + +Issue 72: 'autochdir' causes problems for :vimgrep. + +Session file creation: 'autochdir' causes trouble. Keep it off until after +loading all files. + +Win32: When 'autochdir' is on and 'encoding' is changed, files on the command +line are opened again, but from the wrong directory. Apply 'autochdir' only +after starting up? + +Patch to add ":ldo" and ":cdo", execute commands over quickfix list and +location list. (Yegappan Lakshmanan, 2013 Jun 2) + +8 "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters. + Patch by Christian Wellenbrock, 2013 Jul 5. + +MS-Windows resizing problems: +- Windows window on screen positioning: Patch by Yukihiro Nakadaira, 2012 Jun + 20. Uses getWindowRect() instead of GetWindowPlacement() +- Win32: When the taskbar is at the top of the screen creating the tabbar + causes the window to move unnecessarily. (William E. Skeith III, 2012 Jan + 12) Patch: 2012 Jan 13 Needs more work (2012 Feb 2) + +'iminsert' global value set when using ":setlocal iminsert"? (Wu, 2012 Jun 23) + +Patch to append regexp to tag commands to make it possible to select one out +of many matches. (Cody Cutler, 2013 Mar 28) + +Patch to add tagfunc(). Cleaned up by Christian Brabandt, 2013 Jun 22. + +Help for 'b:undo_indent'. (Thilo Six, 2012 May 28) +Also question if examples are correct. + +It should be possible to make globpath() return a list instead of a string, +like with glob(). (Greg Novack, 2012 Nov 2) +Patch by Adnan Zafar, 2013 Jul 15. + +The input map for CTRL-O in mswin.vim causes problems after CTRL-X CTRL-O. +Suggestion for another map. (Philip Mat, 2012 Jun 18) +But use "gi" instead of "a". Or use CTRL-\ CTRL-O. + +Patch to support user name completion on MS-Windows. (Yasuhiro Matsumoto, 2012 +Aug 16) + +Have an option for spell checking to not mark any Chinese, Japanese or other +double-width characters as error. Or perhaps all characters above 256. +(Bill Sun) Helps a lot for mixed Asian and latin text. + +When there are no command line arguments ":next" and ":argu" give E163, which +is confusing. Should say "the argument list is empty". + +URXVT: +- will get stuck if byte sequence does not contain the expected semicolon. +- Use urxvt mouse support also in xterm. Explanations: + http://www.midnight-commander.org/ticket/2662 + +Patch to add tests for if_xcmdsrv.c., Jul 8, need some more work. (Brian Burns) +New tests Jul 13. Update Jul 17. Discussion Jul 18. + +When running Vim in silent ex mode, an existing swapfile causes Vim to wait +for a user action without a prompt. (Maarten Billemont, 2012 Feb 3) +Do give the prompt? Quit with an error? + +Patch to list user digraphs. (Christian Brabandt, 2012 Apr 14) + +Patch for input method status. (Hirohito Higashi, 2012 Apr 18) + +Patch to use .png icons for the toolbar on MS-Windows. (Martin Gieseking, 2013 +Apr 18) + +Patch for has('unnamedplus') docs. (Tony Mechelynck, 2011 Sep 27) +And one for gui_x11.txt. + +- Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav + Smilauer, 2004 Sep 13, fix Oct 31, update 2007 May 30) + Version for latest MacVim: Tobia Conforto, 2009 Nov 23 + More recent version: https://retracile.net/wiki/VimBreakIndent + Posted to vim-dev by Taylor Hedberg, 2011 Nov 25 + Update by Taylor Hedberg, 2013 May 30. + +":cd" doesn't work when current directory path contains "**". +finddir() has the same problem. (Yukihiro Nakadaira, 2012 Jan 10) +Requires a rewrite of the file_file_in_path code. + +Problem with l: dictionary being locked in a function. (ZyX, 2011 Jul 21) + +Should use has("browsefilter") in ftplugins. Requires patch 7.3.593. + +Update for vim2html.pl. (Tyru, 2013 Feb 22) + +Patch to sort functions starting with '<' after others. Omit dict functions, +they can't be called. (Yasuhiro Matsumoto, 2011 Oct 11) + +Patch to pass list to or(), and() and xor(). (Yasuhiro Matsumoto, 2012 Feb 8) + +Patch to improve "it" and "at" text object matching. (Christian Brabandt, 2011 +Nov 20) + +Patch to improve GUI find/replace dialog. (Christian Brabandt, 2012 May 26) +Update Jun 2. + +`] moves to character after insert, instead of the last inserted character. +(Yukihiro Nakadaira, 2011 Dec 9) + +Plugin for Modeleasy. (Massimiliano Tripoli, 2011 Nov 29) + +BufWinLeave triggers too late when quitting last window in a tab page. (Lech +Lorens, 2012 Feb 21) + +Patch for 'transparency' option. (Sergiu Dotenco, 2011 Sep 17) +Only for MS-Windows. No documentation. Do we want this? + +Patch to support cursor shape in Cygwin console. (Ben bgold, 2011 Dec 27) + +Patch to support UTF-8 for Hangul. (Shawn Y.H. Kim, 2011 May 1) +Needs more work. Pinged 2012 Jan 4. + +Issue 64: when 'incsearch' is on can't paste LF on command line. + +On MS-Windows a temp dir with a & init causes system() to fail. (Ben Fritz, +2012 Jun 19) + +'cursorline' is displayed too short when there are concealed characters and +'list' is set. (Dennis Preiser) +Patch 7.3.116 was the wrong solution. +Christian Brabandt has another incomplete patch. (2011 Jul 13) + +With concealed text mouse click doesn't put the cursor in the right position. +(Herb Sitz) Fix by Christian Brabandt, 2011 Jun 16. Doesn't work properly, +need to make the change in where RET_WIN_BUF_CHARTABSIZE() is called. + +Syntax region with 'concealends' and a 'cchar' value, 'conceallevel' set to 2, +only one of the two ends gets the cchar displayed. (Brett Stahlman, 2010 Aug +21, Ben Fritz, 2010 Sep 14) + +'cursorline' works on a text line only. Add 'cursorscreenline' for +highlighting the screen line. (Christian Brabandt, 2012 Mar 31) + +Win32: Patch to use task dialogs when available. (Sergiu Dotenco, 2011 Sep 17) +New feature, requires testing. Made some remarks. + +Win32: Patch for alpha-blended icons and toolbar height. (Sergiu Dotenco, 2011 +Sep 17) Asked for feedback from others. + +Win32: Cannot cd into a directory that starts with a space. (Andy Wokula, 2012 +Jan 19) + +Need to escape $HOME on Windows? (ZyX, 2011 Jul 21, discussion 2013 Jul 4) +Can't simply use a backslash, \$HOME has a different meaning already. +Would be possible to use $$HOME where $HOME is to be used. + +"2" in 'formatoptions' not working in comments. (Christian Corneliussen, 2011 +Oct 26) + +Bug in repeating Visual "u". (Lawrence Kesteloot, 2010 Dec 20) + +With "unamedplus" in 'clipboard' pasting in Visual mode causes error for empty +register. (Michael Seiwald, 2011 Jun 28) I can't reproduce it. + +Windows keys not set properly on Windows 7? (cncyber, 2010 Aug 26) + +When using a Vim server, a # in the path causes an error message. +(Jeff Lanzarotta, 2011 Feb 17) + +Setting $HOME on MS-Windows is not very well documented. Suggestion by Ben +Fritz (2011 Oct 27). + +Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5) + +Bug: Windows 7 64 bit system freezes when 'clipboard' set to "unnamed" and +doing ":g/test/d". Putting every delete on the clipboard? (Robert Chan, 2011 +Jun 17) + +When there is a ">" in a line that "gq" wraps to the start of the next line, +then the following line will pick it up as a leader. Should get the leader +from the first line, not a wrapped line. (Matt Ackeret, 2012 Feb 27) + +Using ":break" or something else that stops executing commands inside a +":finally" does not rethrow a previously uncaught exception. (ZyX, 2010 Oct +15) + +Vim using lots of memory when joining lines. (John Little, 2010 Dec 3) + +BT regexp engine: After trying a \@> match and failing, submatches are not +cleared. See test64. + +Changes to manpage plugin. (Elias Toivanen, 2011 Jul 25) + +Patch to make "z=" work when 'spell' is off. Does this have nasty side +effects? (Christian Brabandt, 2012 Aug 5) +Would also need to do this for spellbadword() and spellsuggest(). + +Patch for variable tabstops. + +On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a +64 bits value. Change all number options to use nropt_T and define it to the +right type. + +string() can't parse back "inf" and "nan". Fix documentation or fix code? +(ZyX, 2010 Aug 23) + +Make 'formatprg' global-local. (Sung Pae) + +When doing "redir => s:foo" in a script and then "redir END" somewhere else +(e.g. in a function) it can't find s:foo. +When a script contains "redir => s:foo" but doesn't end redirection, a +following "redir" command gives an error for not being able to access s:foo. +(ZyX, 2011 Mar 27) + +When setqflist() uses a filename that triggers a BufReadCmd autocommand Vim +doesn't jump to the correct line with :cfirst. (ZyX, 2011 Sep 18) + +7 Make "ga" show the digraph for a character, if it exists. +Patch from Christian Brabandt, 2011 Aug 19. + +maparg() does not show the <script> flag. When temporarily changing a +mapping, how to restore the script ID? + +Bug in try/catch: return with invalid compare throws error that isn't caught. +(ZyX, 2011 Jan 26) + +When setting a local option value from the global value, add a script ID that +indicates this, so that ":verbose set" can give a hint. Check with options in +the help file. + +After patch 7.3.097 still get E15. (Yukihiro Nakadaira, 2011 Jan 18) +Also for another example (ZyX, 2011 Jan 24) + +Build problem with small features on Mac OS X 10.6. (Rainer, 2011 Jan 24) + +"0g@$" puts '] on last byte of multi-byte. (ZyX, 2011 Jan 22) + +Patch to support sorting on floating point number. (Alex Jakushev, 2010 Oct +30) + +Patch to addd TextDeletePost and TextYankPost events. (Philippe Vaucher, 2011 +May 24) Update May 26. + +Patch for :tabrecently. (Hirokazu Yoshida, 2012 Jan 30) + +Problem with "syn sync grouphere". (Gustavo Niemeyer, 2011 Jan 27) + +Loading autoload script even when usage is inside "if 0". (Christian Brabandt, +2010 Dec 18) + +With a filler line in diff mode, it isn't displayed in the column with line +number, but it is in the sign column. Doesn't look right. (ZyX 2011 Jun 5) +Patch by Christian Brabandt, 2011 Jun 5. Introduces new problems. + +8 Add a command to jump to the next character highlighted with "Error". +Patch by Christian Brabandt, uses ]e [e ]t and [t. 2011 Aug 9. + +8 Add an event like CursorHold that is triggered repeatedly, not just once + after typing something. +Need for CursorHold that retriggers. Use a key that doesn't do anything, or a +function that resets did_cursorhold. +Patch by Christian Brabandt, 2011 May 6. + +7 Use "++--", "+++--" for different levels instead of "+---" "+----". +Patch by Christian Brabandt, 2011 Jul 27. +Update by Ben Fritz, with fix for TOhtml. (2011 Jul 30) + +9 Add %F to 'errorformat': file name without spaces. Useful on Unix to + avoid matching something up to a time 11:22:33. +Patch by Christian Brabandt, 2011 Jul 27. + +Patch to add up to 99 match groups. (Christian Brabandt, 2010 Dec 22) +Also add named groups: \%{name}(re) and \%{name}g + +In the sandbox it's not allowed to do many things, but it's possible to change +or set variables. Add a way to prevent variables from being changed in the +sandbox? E.g.: ":protect g:restore_settings". + +GTK: drawing a double-width combining character over single-width characters +doesn't look right. (Dominique Pelle, 2010 Aug 8) + +GTK: tear-off menu does not work. (Kurt Sonnenmoser, 2010 Oct 25) + +Win32: tear-off menu does not work when menu language is German. (Markus +Bossler, 2011 Mar 2) Fixed by 7.3.095? + +Version of netbeans.c for use with MacVim. (Kazuki Sakamoto, 2010 Nov 18) + +7.3.014 changed how backslash at end of line works, but still get a NUL when +there is one backslash. (Ray Frush, 2010 Nov 18) What does the original ex +do? + +Searching mixed with Visual mode doesn't redraw properly. (James Vega, 2010 Nov +22) + +New esperanto spell file can't be processed. (Dominique Pelle, 2011 Jan 30) +- move compflags to separate growarray? +- instead of a regexp use a hashtable. Expand '?', '*', '+'. What would be + the maximum repeat for * and +? + +"L'Italie" noted as a spell error at start of the sentence. (Dominique Pelle, +2011 Feb 27) + +Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the +^M is displayed as ^J sometimes. Getting 'ff' value from wrong window/buffer? + +'colorcolumn' has higher priority than hlsearch. Should probably be the other +way around. (Nazri Ramliy, 2013 Feb 19) + +When Vim is put in the background (SIGTSTP) and then gets a SIGHUP it doesn't +exit. It exists as soon as back in the foreground. (Stephen Liang, 2011 Jan +9) Caused by vim_handle_signal(SIGNAL_BLOCK); in ui.c. + +g` not working correctly when using :edit. It works OK when editing a file on +the command line. (Ingo Karkat, 2011 Jan 25) + +Since patch 7.2.46 Yankring plugin has become very slow, eventually make Vim +crash? (Raiwil, 2010 Nov 17) + +Patch to add FoldedLineNr highlighting: different highlighting for the line +number of a closed fold. (eXerigumo Clanjor, 2013 Jul 15) + +Does not work with NFA regexp engine: +- \%u, \%x, \%o, \%d followed by a composing character + +Regexp engine performance: +- Profiling: + ./vim -u NONE -s ~/vim/test/ruby.vim + ./vim -u NONE -s ~/vim/test/loop.vim + ./vim -u NONE -s ~/vim/test/alsa.vim + ./vim -s ~/vim/test/todo.vim + ./vim -s ~/vim/test/xml.vim + Dominique Pelle: xmlSyncDT is particularly slow (Jun 7) +- More test files from the src/pkg/regexp/testdata directory in the Go repo. +- Performance tests: + - Using asciidoc syntax. (Marek Schimara, 2013 Jun 6) + - ~/vim/text/FeiqCfg.xml (file from Netjune) + - ~/vim/text/edl.svg (also XML) + - glts has five tests. (May 25) + - ~/vim/test/slowsearch + - ~/vim/test/rgb.vim + - search for a.*e*exn in the vim executable. Go to last line to use + 'hlsearch'. + - Slow combination of folding and PHP syntax highlighting. Script to + reproduce it. Caused by "syntax sync fromstart" in combination with patch + 7.2.274. (Christian Brabandt, 2010 May 27) Generally, folding with + 'foldmethod' set to "syntax" is slow. Do profiling to find out why. + +Patch to add 'systemencoding', convert between 'encoding' and this for file +names, shell commands and the like. (Kikuchan, 2010 Oct 14) +Assume the system converts between the actual encoding of the filesystem to +the system encoding (usually utf-8). + +Patch to add GUI colors to the terminal, when it supports it. (ZyX, 2013 Jan +26) + +Problem producing tags file when hebrew.frx is present. It has a BOM. +Results in E670. (Tony Mechelynck, 2010 May 2) + +'beval' option should be global-local. + +Ruby: ":ruby print $buffer.number" returns zero. + +setpos() does not restore cursor position after :normal. (Tyru, 2010 Aug 11) + +7 The 'directory' option supports changing path separators to "%" to make + file names unique, also support this for 'backupdir'. (Mikolaj Machowski) + Patch by Christian Brabandt, 2010 Oct 21. + +getpos()/setpos() don't include curswant. getpos() could return a fifth +element. setpos() could accept an optional fifth element. +Patch by Christian Brabandt, 2010 Sep 6. Check that new argument is optional +and that it's documented. + +With "tw=55 fo+=a" typing space before ) doesn't work well. (Scott Mcdermott, +2010 Oct 24) + +Patch to add random number generator. (Hong Xu, 2010 Nov 8, update Nov 10) +Alternative from Christian Brabandt. (2010 Sep 19) + +Messages in message.txt are highlighted as examples. + +When using cp850 the NBSP (0xff) is not drawn correctly. (Brett Stahlman, 2010 +Oct 22) 'isprint' is set to "@,161-255". + +":echo "\x85" =~# '[\u0085]'" returns 1 instead of 0. (ZyX, 2010 Oct 3) + +'cindent' not correct when 'list' is set. (Zdravi Korusef, 2010 Apr 15) + +C-indenting: A matching { in a comment is ignored, but intermediate { are not +checked to be in a comment. Implement FM_SKIPCOMM flag of findmatchlimit(). +Issue 46. + +When 'paste' is changed with 'pastetoggle', the ruler doesn't reflect this +right away. (Samuel Ferencik, 2010 Dec 7) + +Mac with X11: clipboard doesn't work properly. (Raf, 2010 Aug 16) + +Using CompilerSet doesn't record where an option was set from. E.g., in the +gcc compiler plugin. (Gary Johnson, 2010 Dec 13) + +":helpgrep" does not put the cursor in the correct column when preceded by +accented character. (Tony Mechelynck, 2010 Apr 15) + +Don't call check_restricted() for histadd(), setbufvar(), settabvar(), +setwinvar(). + +Patch for GVimExt to show an icon. (Dominik Riebeling, 2010 Nov 7) + +When writing a file > 2Gbyte, the reported number of bytes is negative. +(Antonio Colombo, 2010 Dec 18) + +Patch: Let rare word highlighting overrule good word highlighting. +(Jakson A. Aquino, 2010 Jul 30, again 2011 Jul 2) + +When 'lines' is 25 and 'scrolloff' is 12, "j" scrolls zero or two lines +instead of one. (Constantin Pan, 2010 Sep 10) + +Crash in setqflist(). (Benoit Mortgat, 2010 Nov 18) + +Gui menu edit/paste in block mode insert only inserts in one line (Bjorn +Winckler, 2011 May 11) +Requires a map mode for Insert mode started from blockwise Visual mode. + +Writing nested List and Dict in viminfo gives error message and can't be read +back. (Yukihiro Nakadaira, 2010 Nov 13) + +Can 'undolevels' be a buffer-local option? Helps for making big changes in +one file only, set 'ul' to -1 only for that buffer. +Patch by Christian Brabandt, 2010 Dec 17. Needs test. + +Problem with cursor in the wrong column. (SungHyun Nam, 2010 Mar 11) +Additional info by Dominique Pelle. (also on 2010 Apr 10) + +CreateFile and CreateFileW are used without sharing, filewritable() fails when +the file was already open (e.g. script is being sourced). Add FILE_SHARE_READ| +FILE_SHARE_WRITE in mch_access()? (Phillippe Vaucher, 2010 Nov 2) + +Is ~/bin (literally) in $PATH supposed to work? (Paul, 2010 March 29) +Looks like only bash can do it. (Yakov Lerner) + +Cscope "cs add" stopped working somewhat before 7.2.438. (Gary Johnson, 2010 +Jun 29) Caused by 7.2.433? + +I often see pasted text (from Firefox, to Vim in xterm) appear twice. +Also, Vim in xterm sometimes loses copy/paste ability (probably after running +an external command). + +Jumplist doesn't work properly in Insert mode? (Jean Johner, 2010 Mar 20) + +Problem with transparent cmdline. Also: Terminal title is wrong with +non-ASCII character. (Lily White, 2010 Mar 7) + +iconv() doesn't fail on an illegal character, as documented. (Yongwei Wu, 2009 +Nov 15, example Nov 26) Add argument to specify whether iconv() should fail +or replace with a character and continue? + +Add local time at start of --startuptime output. +Requires configure check for localtime(). +Use format year-month-day hr:min:sec. + +Patch to add "combine" to :syntax, combines highlight attributes. (Nate +Soares, 2012 Dec 3) + +Patch to make ":hi link" also take arguments. (Nate Soares, 2012 Dec 4) + +Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3) +Find tail? Might have a / in argument. Find space? Might have space in +path. + +Test 51 fails when language set to German. (Marco, 2011 Jan 9) +Dominique can't reproduce it. + +'ambiwidth' should be global-local. + +":function f(x) keepjumps" creates a function where every command is executed +like it has ":keepjumps" before it. + +Coverity: ask someone to create new user: Dominique. +Check if there are new reported defects: http://scan.coverity.com/rung2.html + +Patch to support :undo absolute jump to file save number. (Christian Brabandt, +2010 Nov 5) + +Patch to use 'foldnextmax' also for "marker" foldmethod. (Arnaud Lacombe, 2011 +Jan 7) + +Bug with 'incsearch' going to wrong line. (Wolfram Kresse, 2009 Aug 17) +Only with "vim -u NONE". + +Problem with editing file in binary mode. (Ingo Krabbe, 2009 Oct 8) + +With 'wildmode' set to "longest:full,full" and pressing Tab once the first +entry in wildmenu is highlighted, that shouldn't happen. (Yuki Watanabe, 2011 +Feb 12) + +Display error when 'tabline' that includes a file name with double-width +characters. (2010 Aug 14, bootleq) + +Problem with stop directory in findfile(). (Adam Simpkins, 2009 Aug 26) + +Using ']' as the end of a range in a pattern requires double escaping: + /[@-\\]] (Andy Wokula, 2011 Jun 28) + +Syntax priority problem. (Charles Campbell, 2011 Sep 15) + +When completion inserts the first match, it may trigger the line to be folded. +Disable updating folds while completion is active? (Peter Odding, 2010 Jun 9) + +When a:base in 'completefunc' starts with a number it's passed as a number, +not a string. (Sean Ma) Need to add flag to call_func_retlist() to force a +string value. + +Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2) + +For running gvim on an USB stick: avoid the OLE registration. Use a command +line argument -noregister. + +When using an expression in 'statusline' leading white space sometimes goes +missing (but not always). (ZyX, 2010 Nov 1) + +When a mapping exists both for insert mode and lang-insert mode, the last one +doesn't work. (Tyru, 2010 May 6) Or is this intended? + +Still a problem with ":make" in the wrong directory. Caused by ":bufdo". +(Ajit Thakkar, 2009 Jul 1) More information Jul 9, Jul 15. +Caused by "doautoall syntaxset BufEnter *" in syntax/nosyntax.vim ? +There also is a BufLeave/BufEnter aucmd to save/restore view. +Does the patch to save/restore globaldir work? + +":bufdo normal gg" while 'hidden' is set leaves buffers without syntax +highlighting. Don't disable Syntax autocommands then? Or add a flag/modifier +to avoid changing 'eventignore'? + +Patch for displaying 0x200c and 0x200d. (Ali Gholami Rudi, 2009 May 6) +Probably needs a bit of work. + +List of encoding aliases. (Takao Fujiwara, 2009 Jul 18) +Are they all OK? Update Jul 22. + +Win32: Improved Makefile for MSVC. (Leonardo Valeri Manera, 2010 Aug 18) + +Win32: Expanding 'path' runs into a maximum size limit. (bgold12, 2009 Nov 15) + +Win32: Patch for enabling quick edit mode in console. (Craig Barkhouse, 2010 +Sep 1) + +Win32: Patch for using .png files for icons. (Charles Peacech, 2012 Feb 5) + +Putting a Visual block while 'visualedit' is "all" does not leave the cursor +on the first character. (John Beckett, 2010 Aug 7) + +Setting 'tags' to "tagsdir/*" does not find "tagsdir/tags". (Steven K. Wong, +2009 Jul 18) + +Patch to add farsi handling to arabic.c (Ali Gholami Rudi, 2009 May 2) +Added test, updates, June 23. + +Patch to add "focusonly" to 'scrollopt', so that scrollbind also applies in +window that doesn't have focus. (Jonathon Mah, 2009 Jan 12) +Needs more work. + +Problem with <script> mappings (Andy Wokula, 2009 Mar 8) + +When starting Vim with "gvim -f -u non_existent_file > foo.txt" there are a +few control characters in the output. (Dale Wiles, 2009 May 28) + +'cmdwinheight' is only used in last window when 'winheight' is a large value. +(Tony Mechelynck, 2009 Apr 15) + +Status line containing winnr() isn't updated when splitting the window (Clark +J. Wang, 2009 Mar 31) + +When $VIMRUNTIME is set in .vimrc, need to reload lang files. Already done +for GTK, how about others? (Ron Aaron, 2010 Apr 10) + +Patch for GTK buttons X1Mouse and X2Mouse. (Christian J. Robinson, 2010 Aug 9) + +Motif: Build on Ubuntu can't enter any text in dialog text fields. + +When 'ft' changes redraw custom status line. + +":tab split fname" doesn't set the alternate file in the original window, +because win_valid() always returns FALSE. Below win_new_tabpage() in +ex_docmd.c. + +Space before comma in function definition not allowed: "function x(a , b)" +Give a more appropriate error message. Add a remark to the docs. + +string_convert() should be able to convert between utf-8 and utf-16le. Used +for GTK clipboard. Avoid requirement for iconv. + +Now that colnr_T is int instead of unsigned, more type casts can be removed. + +'delcombine' does not work for the command line. (Tony Mechelynck, 2009 Jul +20) + +Don't load macmap.vim on startup, turn it into a plugin. (Ron Aaron, +2009 Apr 7) Reminder Apr 14. + +Add "no_hlsearch" to winsaveview(). + +Cursorline highlighting combines with Search ('hlsearch') but not with +SpellBad. (Jim Karsten, 2009 Mar 18) + +When 'foldmethod' is "indent", adding an empty line below a fold and then +indented text, creates a new fold instead of joining it with the previous one. +(Evan Laforge, 2009 Oct 17) + +Bug: When reloading a buffer changed outside of Vim, BufRead autocommands +are applied to the wrong buffer/window. (Ben Fritz, 2009 Apr 2, May 11) +Ignore window options when not in the right window? +Perhaps we need to use a hidden window for applying autocommands to a buffer +that doesn't have a window. + +When using "ab foo bar" and mapping <Tab> to <Esc>, pressing <Tab> after foo +doesn't trigger the abbreviation like <Esc> would. (Ramana Kumar, 2009 Sep 6) + +getbufvar() to get a window-local option value for a buffer that's not +displayed in a window should return the value that's stored for that buffer. + +":he ctrl_u" can be auto-corrected to ":he ctrl-u". + +There should be a way after an abbreviation has expanded to go back to what +was typed. CTRL-G h ? Would also undo last word or line break inserted +perhaps. And undo CTRL-W. CTRL-G l would redo. + +Diff mode out of sync. (Gary Johnson, 2010 Aug 4) + +Support a 'systemencoding' option (for Unix). It specifies the encoding of +file names. (Kikuchan, 2010 Oct 5). Useful on a latin1 or double-byte Asian +system when 'encoding' is "utf-8". + +Win32 GUI: last message from startup doesn't show up when there is an echoerr +command. (Cyril Slobin, 2009 Mar 13) + +Win32: use different args for SearchPath()? (Yasuhiro Matsumoto, 2009 Jan 30) + +Win32: completion of file name ":e c:\!test" results in ":e c:\\!test", which +does not work. (Nieko Maatjes, 2009 Jan 8, Ingo Karkat, 2009 Jan 22) + +opening/closing window causes other window with 'winfixheight' to change +height. Also happens when there is another window in the frame, if it's not +very high. (Yegappan Lakshmanan, 2010 Jul 22, Michael Peeters, 2010 Jul 22) + +Directory wrong in session file, caused by ":lcd" in BufEnter autocommand. +(Felix Kater, 2009 Mar 3) + +Session file generates error upon loading, cause by --remote-silent-tab. +(7tommm (ytommm) 2010 Nov 24) + +Using ~ works OK on 'a' with composing char, but not on 0x0418 with composing +char 0x0301. (Tony Mechelynck, 2009 Mar 4) + +A function on a dictionary is not profiled. (Zyx, 2010 Dec 25) + +Inconsistent: starting with $LANG set to es_ES.utf-8 gives Spanish +messages, even though locale is not supported. But ":lang messages +es_ES.utf-8" gives an error and doesn't switch messages. (Dominique Pelle, +2009 Jan 26) + +When $HOME contains special characters, such as a comma, escape them when used +in an option. (Michael Hordijk, 2009 May 5) +Turn "esc" argument of expand_env_esc() into string of chars to be escaped. + +Should make 'ignorecase' global-local, so that it makes sense setting it from +a modeline. + +Add cscope target to Makefile. (Tony Mechelynck, 2009 Jun 18, replies by +Sergey Khorev) + +Consider making YankRing or something else that keeps a list of yanked text +part of standard Vim. The "1 to "9 registers are not sufficient. + +netrw: dragging status line causes selection of entry. Should check row +number to be below last visible line. + +After doing "su" $HOME can be the old user's home, thus ~root/file is not +correct. Don't use it in the swap file. + +Completion for ":buf" doesn't work properly on Win32 when 'shellslash' is off. +(Henrik Ohman, 2009, Jan 29) + +shellescape() depends on 'shellshash' for quoting. That doesn't work when +'shellslash' is set but using cmd.exe. (Ben Fritz) +Use a different option or let it depend on whether 'shell' looks like a +unix-like shell? + +Bug: in Ex mode (after "Q") backslash before line break, when yanked into a +register and executed, results in <Nul>: instead of line break. +(Konrad Schwarz, 2010 Apr 16) + +Have a look at patch for utf-8 line breaking. (Yongwei Wu, 2008 Mar 1, Mar 23) +Now at: http://vimgadgets.sourceforge.net/liblinebreak/ + +Greek sigma character should be lower cased depending on the context. Can we +make this work? (Dominique Pelle, 2009 Sep 24) + +When changing 'encoding' convert all the swap file names, so that we can +still delete them. Also convert all buffer file names? + +"gqip" in Insert mode has an off-by-one error, causing it to reflow text. +(Raul Coronado, 2009 Nov 2) + +Update src/testdir/main.aap. + +"vim -c 'sniff connect'" hangs Vim. (Dominique Pelle, 2008 Dec 7) + +Something wrong with session that has "cd" commands and "badd", in such a way +that Vim doesn't find the edited file in the buffer list, causing the +ATTENTION message? (Tony Mechelynck, 2008 Dec 1) +Also: swap files are in ~/tmp/ One has relative file name ".mozilla/...". + +Add v:motion_force. (Kana Natsuno, 2008 Dec 6) +Maybe call it v:motiontype. + +Runtime files for Clojure. (Toralf Wittner, 2008 Jun 25) + +MS-Windows: editing the first, empty buffer, 'ffs' set to "unix,dos", ":enew" +doesn't set 'ff' to "unix". (Ben Fritz, 2008 Dec 5) Reusing the old buffer +probably causes this. + +'scrollbind' is not respected when deleting lines or undo. (Milan Vancura, +2009 Jan 16) + +Patch to support strikethrough next to bold and italic. (Christian Brabandt, +2013 Jul 30) + +Document that default font in Athena can be set with resources: + XtDefaultFont: "9x15" + XtDefaultFontSet: "9x15" +(Richard Sherman, 2009 Apr 12) + +Having "Syntax" in 'eventignore' for :bufdo may cause problems, e.g. for +":bufdo e" when buffers are open in windows. ex_listdo(eap) could set the +option only for when jumping to another buffer, not when the command argument +is executed. + +":pedit %" with a BufReadPre autocommand causes the cursor to move to the +first line. (Ingo Karkat, 2008 Jul 1) Ian Kelling is working on this. + +Wildmenu not deleted: "gvim -u NONE", ":set nocp wildmenu cmdheight=3 +laststatus=2", CTRL-D CTRL-H CTRL-H CTRL-H. (A.Politz, 2008 April 1) +Works OK with Vim in an xterm. + +Cursor line moves in other window when using CTRL-W J that doesn't change +anything. (Dasn, 2009 Apr 7) + +On Unix "glob('does not exist~')" returns the string. Without the "~" it +doesn't. (John Little, 2008 Nov 9) +Shell expansion returns unexpanded string? +Don't use shell when "~" is not at the start? + +":unlet $VAR" doesn't work. + +When using ":e ++enc=foo file" and the file is already loaded with +'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though the +fileencoding differs. Reload the buffer in this situation? Need to check for +the buffer to be unmodified. +Unfinished patch by Ian Kelling, 2008 Jul 11. Followup Jul 14, need to have +another look at it. + +c.vim: XXX in a comment is colored yellow, but not when it's after "#if 0". +(Ilya Dogolazky, 2009 Aug 7) + +You can type ":w ++bad=x fname", but the ++bad argument is ignored. Give an +error message? Or is this easy to implement? (Nathan Stratton Treadway, 2008 +Aug 20) This is in ucs2bytes(), search for 0xBF. Using the ++bad argument is +at the other match for 0xBF. + +When adding "-complete=file" to a user command this also changes how the +argument is processed for <f-args>. (Ivan Tishchenko, 2008 Aug 19) + +Win32: associating a type with Vim doesn't take care of space after a +backslash? (Robert Vibrant, 2008 Jun 5) + +When 'rightleft' is set, cursorcolumn isn't highlighted after the end of a +line. It's also wrong in folds. (Dominique Pelle, 2010 Aug 21) + +Using an insert mode expression mapping, cursor is not in the expected +position. (ZyX, 2010 Aug 29) + +After using <Tab> for command line completion after ":ta blah" and getting E33 +(no tags file), further editing the command to e.g., ":echo 'blah'", the +command is not executed. Fix by Ian Kelling? + +":help s/~" jumps to *s/\~*, while ":help s/\~" doesn't find anything. (Tim +Chase) Fix by Ian Kelling, 2008 Jul 14. + +Use "\U12345678" for 32 bit Unicode characters? (Tony Mechelynck, 2009 +Apr 6) Or use "\u(123456)", similar to Perl. + +When mapping : to ; and ; to :, @; doesn't work like @: and @: doesn't work +either. Matt Wozniski: nv_at() calls do_execreg() which uses +put_in_typebuf(). Char mapped twice? + +Despite adding save_subexpr() this still doesn't work properly: +Regexp: matchlist('12a4aaa', '^\(.\{-}\)\(\%5c\@<=a\+\)\(.\+\)\?') +Returns ['12a4', 'aaa', '4aaa'], should be ['12a4', 'aaa', ''] +Backreference not cleared when retrying after \@<= fails? +(Brett Stahlman, 2008 March 8) + +Problem with remote_send(). (Charles Campbell, 2008 Aug 12) + +ftplugin for help file should set 'isk' to help file value. + +Win32: remote editing fails when the current directory name contains "[". +(Ivan Tishchenko, Liu Yubao) Suggested patch by Chris Lubinski: Avoid +escaping characters where the backslash is not removed later. Asked Chris for +an alternate solution, also for src/ex_getln.c. +This also fails when the file or directory name contains "%". (Thoml, 2008 +July 7) +Using --remote-silent while the current directory has a # in the name does not +work, the # needs to be escaped. (Tramblay Bruno, 2012 Sep 15) + +When using remote-silent the -R flag is not passed on. (Axel Bender, 2012 May +31) + +Win32: A --remote command that has a directory name starting with a ( doesn't +work, the backslash is removed, assuming that it escapes the (. (Valery +Kondakoff, 2009 May 13) + +Problem with 'langmap' being used on the rhs of a mapping. (Nikolai Weibull, +2008 May 14) + +Problem with CTRL-F. (Charles Campbell, 2008 March 21) +Only happens with "gvim -geometry "160x26+4+27" -u NONE -U NONE prop.c". +'lines' is 54. (2008 March 27) + +Problem with pointer wrapping around in getvcol(). (Wolfgang Kroworsch, 2008 +Oct 19) Check for "col" being "MAXCOL" separately? + +Unexpectedly inserting a double quote. (Anton Woellert, 2008 Mar 23) +Works OK when 'cmdheight' is 2. + +8 Use a mechanism similar to omni completion to figure out the kind of tab + for CTRL-] and jump to the appropriate matching tag (if there are + several). + Alternative: be able to define a function that takes the tag name and uses + taglist() to find the right location. With indication of using CTRL-] so + that the context can be taken into account. (Robert Webb) +Patch by Christian Brabandt, 2013 May 31. + +Test54 should not use shell commands. Make it portable. + +The utf class table is missing some entries: + 0x2212, minus sign + 0x2217, star + 0x2500, bar + 0x26ab, circle + +Visual line mode doesn't highlight properly when 'showbreak' is used and the +line doesn't fit. (Dasn, 2008 May 1) + +GUI: In Normal mode can't yank the modeless selection. Make "gy" do this? +Works like CTRL-Y in Command line mode. + +Mac: Move Carbon todo items to os_mac.txt. Note that this version is frozen, +try the Cocoa version. + +Mac: After a ":vsplit" the left scrollbar doesn't appear until 'columns' is +changed or the window is resized. + +GTK: when setting 'columns' in a startup script and doing ":vertical diffsplit" +the window isn't redrawn properly, see two vertical bars. + +Mac: Patch for configure: remove arch from ruby link args. (Knezevic, 2008 +Mar 5) Alternative: Kazuki Sakamoto, Mar 7. + +Mac: trouble compiling with Motif, requires --disable-darwin. (Raf, 2008 Aug +1) Reply by Ben Schmidt. + +C't: On utf-8 system, editing file with umlaut through Gnome results in URL +with %nn%nn, which is taken as two characters instead of one. +Try to reproduce at work. + +Patch for default choice in file changed dialog. (Bjorn Winckler, 2008 Oct 19) +Is there a way to list all the files first? + +When 'smartcase' is set and using CTRL-L to add to the search pattern it may +result in no matches. Convert chars to lower case? (Erik Wognsen, 2009 Apr +16) + +Searching for composing char works, but not when inside []. (ZyX, Benjamin R. +Haskell, 2010 Aug 24) + +Fail to edit file after failed register access. Error flag remains set? +(Lech Lorens, 2010 Aug 30) + +Patch for redo register. (Ben Schmidt, 2007 Oct 19) +Await response to question to make the register writable. + +src/testdir/Make_dos.mak: not all tests are included, e.g., test49, without a +remark why. + +Problem with 'ts' set to 9 and 'showbreak' to ">>>". (Matthew Winn, 2007 Oct +1) + +In the swapfile dialog, add a H(elp) option that gives more info about what +each choice does. Similar to ":help swap-exists-choices" + +try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15) + +try/catch not working when inside a for loop. (ZyX, 2011 Jan 25) + +":tab help" always opens a new tab, while ":help" re-uses an existing window. +Would be more consistent when an existing tab is re-used. (Tony Mechelynck) + +Add ":nofold". Range will apply without expanding to closed fold. + +Using Aap to build Vim: add remarks about how to set personal preferences. +Example on http://www.calmar.ws/tmp/aap.html + +Syntax highlighting wrong for transparent region. (Doug Kearns, 2007 Feb 26) +Bug in using a transparent syntax region. (Hanlen in vim-dev maillist, 2007 +Jul 31) + +C syntax: {} inside () causes following {} to be highlighted as error. +(Michalis Giannakidis, 2006 Jun 1) + +Can't easily close the help window, like ":pc" closes the preview window and +":ccl" closes the quickfix window. Add ":hclose". (Chris Gaal) +Patch for :helpclose, Christian Brabandt, 2010 Sep 6. + +When 'diffopt' has "context:0" a single deleted line causes two folds to merge +and mess up syncing. (Austin Jennings, 2008 Jan 31) + +Gnome improvements: Edward Catmur, 2007 Jan 7 + Also use Save/Discard for other GUIs + +New PHP syntax file, use it? (Peter Hodge) + +":echoe" in catch block stops processing, while this doesn't happen outside of +a catch block. (ZyX, 2011 Jun 2) + +'foldcolumn' in modeline applied to wrong window when using a session. (Teemu +Likonen, March 19) + +Test 54 uses shell commands, that doesn't work on non-Unix systems. Use some +other way to test buffer-local autocommands. + +The documentation mentions the priority for ":2match" and ":3match", but it +appears the last one wins. (John Beckett, 2008 Jul 22) Caused by adding +matchadd()? Suggested patch by John, 2008 Jul 24. + +When 'encoding' is utf-8 the command line is redrawn as a whole on every +character typed. (Tyler Spivey, 2008 Sep 3) Only redraw cmdline for +'arabicshape' when there is a character on the command line for which +(ARABIC_CHAR(u8c)) is TRUE. + +Cheng Fang made javacomplete. (2007 Aug 11) +Asked about latest version: 0.77.1 is on www.vim.org. + +More AmigaOS4 patches. (Peter Bengtsson, Nov 9) + +Amiga patches with vbcc. (Adrien Destugues, 2010 Aug 30) +http://pulkomandy.ath.cx/drop/vim73_vbcc_amiga.diff + +Insert mode completion: When editing the text and pressing CTRL-N again goes +back to originally completed text, edited text is gone. (Peng Yu, 2008 Jul 24) +Suggestion by Ben Schmidt, 2008 Aug 6. + +Problem with compound words? (Bert, 2008 May 6) +No warning for when flags are defined after they are used in an affix. + +Screen redrawing when continuously updating the buffer and resizing the +terminal. (Yakov Lerner, 2006 Sept 7) + +Add option settings to help ftplugin. (David Eggum, 2006 Dec 18) + +Autoconf problem: when checking for iconv library we may add -L/usr/local/lib, +but when compiling further tests -liconv is added without the -L argument, +that may fail (e.g., sizeof(int)). (Blaine, 2007 Aug 21) + +When opening quickfix window, disable spell checking? + +Problem with ".add" files when using two languages and restarting Vim. (Raul +Coronado, 2008 Oct 30) + +Popup menu redraw: Instead of first redrawing the text and then drawing the +popup menu over it, first draw the new popup menu, remember its position and +size and then redraw the text, skipping the characters under the popup menu. +This should avoid flicker. Other solution by A.Politz, 2007 Aug 22. + +Windows 98: pasting from the clipboard with text from another application has +a trailing NUL. (Joachim Hofmann) Perhaps the length specified for CF_TEXT +isn't right? + +When a register contains illegal bytes, writing viminfo in utf-8 and reading +it back doesn't result in utf-8. (Devin Bayer) + +Command line completion: Scanning for tags doesn't check for typed key now and +then? Hangs for about 5 seconds. Appears to be caused by finding include +files with "foo/**" in 'path'. (Kalisiak, 2006 July 15) +Additional info: When using the |wildcards| ** globing, vim hangs +indefinitely on lots of directories. The |file-searching| globing, like in +":set path=/**" does not hang as often as with globing with |wildcards|, like +in ":1find /**/file". This is for a files that unix "find" can find very +quick. Merging the 2 kinds of globing might make this an easier fix. (Ian +Kelling, 2008 July 4) + +When the file name has parenthesis, e.g., "foo (bar).txt", ":!ls '%'" has the +parenthesis escaped but not the space. That's inconsistent. Either escape +neither or both. No escaping might be best, because it doesn't depend on +particularities of the shell. (Zvi Har'El, 2007 Nov 10) (Teemu Likonen, 2008 +Jun 3) +However, for backwards compatibility escaping might be necessary. Check if +the user put quotes around the expanded item? + +A throw in a function causes missing an endif below the call. (Spiros +Bousbouras, 2011 May 16) + +Error E324 can be given when a cron script has wiped out our temp directory. +Give a clear error message about this (and tell them not to wipe out /tmp). + +Color for cUserLabel should differ from case label, so that a mistake in a +switch list is noticed: + switch (i) + { + case 1: + foobar: + } + +Look at http://www.gtk-server.org/ . It has a Vim script implementation. + +Netbeans problem. Use "nc -l 127.0.0.1 55555" for the server, then run gvim +with "gvim -nb:localhost:55555:foo". From nc do: '1:editFile!0 "foo"'. Then +go to Insert mode and add a few lines. Then backspacing every other time +moves the cursor instead of deleting. (Chris Kaiser, 2007 Sep 25) + +Patch to use Modern UI 2.0 for the Nsis installer. (Guopeng Wen, 2010 Jul 30) +Latest version: 2011 May 18 +8 Windows install with NSIS: make it possible to do a silent install, see + http://nsis.sourceforge.net/Docs/Chapter4.html#4.12 + Version from Guopeng Wen that does this (2010 Dec 27) +Alternative: MSI installer: https://github.com/petrkle/vim-msi/ + +Windows installer should install 32-bit version of right-click handler also on +64-bit systems. (Brian Cunningham, 2011 Dec 28) + +Windows installer could add a "open in new tab of existing Vim" menu entry. +Gvimext: patch to add "Edit with single Vim &tabbed" menu entry. +Just have two choices, always using one Vim and selecting between using an +argument list or opening each file in a separate tab. +(Erik Falor, 2008 May 21, 2008 Jun 26) + +Windows installer: licence text should not use indent, causes bad word wrap. +(Benjamin Fritz, 2010 Aug 16) + +Dos uninstal may delete vim.bat from the wrong directory (e.g., when someone +makes his own wrapper). Add a magic string with the version number to the +.bat file and check for it in the uninstaller. E.g. + # uninstall key: vim7.3* + +Changes for Win32 makefile. (Mike Williams, 2007 Jan 22, Alexei Alexandrov, +2007 Feb 8) + +Win32: Can't complete shell command names. Why is setting xp_context in +set_one_cmd_context() inside #ifndef BACKSLASH_IN_FILENAME? + +Win32: Patch for convert_filterW(). (Taro Muraoka, 2007 Mar 2) + +Win32: Patch for cscope external command. (Mike Williams, 2007 Aug 7) + +Win32: XPM support only works with path without spaces. Patch by Mathias +Michaelis, 2006 Jun 9. Another patch for more path names, 2006 May 31. +New version: http://members.tcnet.ch/michaelis/vim/patches.zip (also for other +patches by Mathias, see mail Feb 22) + +Win32: compiling with normal features and OLE fails. Patch by Mathias +Michaelis, 2006 Jun 4. + +Win16: include patches to make Win16 version work. (Vince Negri, 2006 May 22) + +Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis, +2007 Feb 18) +Patch by Alex Dobrynin, 2007 Jun 3. Also fixes other scroll wheel problems. + +Win32: using CTRL-S in Insert mode doesn't remove the "+" from the tab pages +label. (Tsakiridis, 2007 Feb 18) Patch from Ian Kelling, 2008 Aug 6. + +Win32: using "gvim --remote-tab-silent fname" sometimes gives an empty screen +with the more prompt. Caused by setting the guitablabel? (Thomas Michael +Engelke, 2007 Dec 20 - 2008 Jan 17) + +Win64: Seek error in swap file for a very big file (3 Gbyte). Check storing +pointer in long and seek offset in 64 bit var. + +Win32: patch for fullscreen mode. (Liushaolin, 2008 April 17) + +Win32: When 'shell' is bash shellescape() doesn't always do the right thing. +Depends on 'shellslash', 'shellquote' and 'shellxquote', but shellescape() +only takes 'shellslash' into account. + +Pressing the 'pastetoggle' key doesn't update the statusline. (Jan Christoph +Ebersbach, 2008 Feb 1) + +Menu item that does "xxd -r" doesn't work when 'fileencoding' is utf-16. +Check for this and use iconv? (Edward L. Fox, 2007 Sep 12) +Does the conversion in the other direction work when 'filenecodings' is set +properly? + +Cursor displayed in the wrong position when using 'numberwidth'. (James Vega, +2007 Jun 21) + +When $VAR contains a backslash expand('$VAR') removes it. (Teemu Likonen, 2008 +Jun 18) + +If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work. + +Feature request: Command to go to previous tab, like what CTRL-W p does for +windows. (Adam George) + +F1 - F4 in an xterm produce a different escape sequence when used with a +modifier key. Need to catch three different sequences. Use K_ZF1, like +K_ZHOME? (Dickey, 2007 Dec 2) + +UTF-8: mapping a multi-byte key where the second byte is 0x80 doesn't appear +to work. (Tony Mechelynck, 2007 March 2) + +In debug mode, using CTRL-R = to evaluate a function causes stepping through +the function. (Hari Krishna Dara, 2006 Jun 28) + +C++ indenting wrong with "=". (James Kanze, 2007 Jan 26) + +":lockvar" should use copyID to avoid endless loop. + +When using --remote-silent and the file name matches 'wildignore' get an E479 +error. without --remote-silent it works fine. (Ben Fritz, 2008 Jun 20) + +Gvim: dialog for closing Vim should check if Vim is busy writing a file. Then +use a different dialog: "busy saving, really quit? yes / no". + +Check other interfaces for changing curbuf in a wrong way. Patch like for +if_ruby.c. + +":helpgrep" should use the directory from 'helpfile'. + +The need_fileinfo flag is messy. Instead make the message right away and put +it in keep_msg? + +Editing a file remotely that matches 'wildignore' results in a "no match" +error. Should only happen when there are wildcards, not when giving the file +name literally, and esp. if there is only one name. + +Test 61 fails sometimes. This is a timing problem: "sleep 2" sometimes takes +longer than 2 seconds. + +Using ":au CursorMoved * cmd" invokes mch_FullName(), which can be slow. +Can this be avoided? (Thomas Waba, 2008 Aug 24) +Also for ":w" without a file name. +The buffer has the full path in ffname, should pass this to the autocommand. + +"vim -C" often has 'nocompatible', because it's set in some startup script. +Set 'compatible' after startup is done? Patch by James Vega, 2008 Feb 7. + +VMS: while editing a file found in complex, Vim will save file into the first +directory of the path and not to the original location of the file. +(Zoltan Arpadffy) + +VMS: VFC files are in some cases truncated during reading (Zoltan Arpadffy) + +input() completion should not insert a backslash to escape a space in a file +name? + +Ruby completion is insecure. Can this be fixed? + +When 'backupskip' is set from $TEMP special characters need to be escaped. +(patch by Grembowietz, 2007 Feb 26, not quite right) +Another problem is that file_pat_to_reg_pat() doesn't recognize "\\", so "\\(" +will be seen as a path separator plus "\(". + +gvim d:\path\path\(FILE).xml should not remove the \ before the (. +This also fails with --remote. + +When doing ":quit" the Netbeans "killed" event isn't sent. (Xavier de Gaye, +2008 Nov 10) call netbeans_file_closed() at the end of buf_freeall(), or in +all places where buf_freeall() is called? + +aucmd_prepbuf() should also use a window in another tab page. + +When unloading a buffer in a BufHidden autocommand the hidden flag is reset? +(Bob Hiestand, 2008 Aug 26, Aug 27) + +Substituting an area with a line break with almost the same area does change +the Visual area. Can this be fixed? (James Vega, 2006 Sept 15) + +GUI: When combining fg en bg make sure they are not equal. + +Spell checking: Add a way to specify punctuation characters. Add the +superscript numbers by default: 0x2070, 0xb9, 0xb2, 0xb3, 0x2074 - 0x2079. + +Spell checking in popup menu: If the only problem is the case of the first +character, don't offer "ignore" and "add to word list". + +Use different pt_br dictionary for spell checking. (Jackson A. Aquino, 2006 +Jun 5) + +Use different romanian dictionary for spell checking. (Andrei Popescu, Nov +2008) Use http://downloads.sourceforge.net/rospell/ro_RO.3.2.zip +Or the hunspell-ro.3.2.tar.gz file, it also has a iso-8859-2 list. + +In a C file with spell checking, in "% integer" "nteger" is seen as an error, +but "]s" doesn't find it. "nteger" by itself is found. (Ralf Wildenhues, 2008 +Jul 22) + +There should be something about spell checking in the user manual. + +Spell menu: When using the Popup menu to select a replacement word, +":spellrepeat" doesn't work. SpellReplace() uses setline(). Can it use "z=" +somehow? Or use a new function. + +Mac: Using gvim: netrw window disappears. (Nick Lo, 2006 Jun 21) + +Add an option to specify the character to use when a double-width character is +moved to the next line. Default '>', set to a space to blank it out. Check +that char is single width when it's set (compare with 'listchars'). + +The generated vim.bat can avoid the loop for NT. (Carl Zmola, 2006 Sep 3) + +When showing a diff between a non-existent file and an existing one, with the +cursor in the empty buffer, the other buffer only shows the last line. Change +the "insert" into a change from one line to many? (Yakov Lerner, 2008 May 27) + +Add autocommand for when a tabpage is being closed. Also for when a tab page +has been created. + +Using ":make" blocks Vim. Allow running one make in the background (if the +shell supports it), catch errors in a file and update the error list on the +fly. A bit like "!make > file&" and repeating ":cf file". ":bgmake", +background make. ":bgcancel" interrupts it. +A.Politz may work on this. + +These two abbreviations don't give the same result: + let asdfasdf = "xyz\<Left>" + cabbr XXX <C-R>=asdfasdf<CR> + cabbr YYY xyz<Left> + +Michael Dietrich: maximized gvim sometimes displays output of external command +partly. (2006 Dec 7) + +In FileChangedShell command it's no longer allowed to switch to another +buffer. But the changed buffer may differ from the current buffer, how to +reload it then? + +New syntax files for fstab and resolv from Radu Dineiu, David Necas did +previous version. + +For Aap: include a config.arg.example file with hints how to use config.arg. + +Command line completion when 'cmdheight' is maximum and 'wildmenu' is set, +only one buffer line displayed, causes display errors. + +Completing with 'wildmenu' and using <Up> and <Down> to move through directory +tree stops unexpectedly when using ":cd " and entering a directory that +doesn't contain other directories. + +Setting 'background' resets the Normal background color: + highlight Normal ctermbg=DarkGray + set background=dark +This is undesired, 'background' is supposed to tell Vim what the background +color is, not reset it. + +Linux distributions: +- Suggest compiling xterm with --enable-tcap-query, so that nr of colors is + known to Vim. 88 colors instead of 16 works better. See ":help + xfree-xterm". +- Suggest including bare "vi" and "vim" with X11, syntax, etc. + +Completion menu: For a wrapping line, completing a long file name, only the +start of the path is shown in the menu. Should move the menu to the right to +show more text of the completions. Shorten the items that don't fit in the +middle? + +When running inside screen it's possible to kill the X server and restart it +(using pty's the program can keep on running). Vim dies because it loses the +connection to the X server. Can Vim simply quit using the X server instead of +dying? Also relevant when running in a console. + +Accessing file#var in a function should not need the g: prepended. + +When exiting detects a modified buffer, instead of opening the buffer in the +current tab, use an existing tab, if possible. Like finding a window where +the buffer is displayed. (Antonios Tsakiridis) + +When ":cn" moves to an error in the same line the message isn't shortened. +Only skip shortening for ":cc"? + +Write "making vim work better" for the docs (mostly pointers): *nice* + - sourcing $VIMRUNTIME/vimrc_example.vim + - setting 'mouse' to "a" + - getting colors in xterm + - compiling Vim with X11, GUI, etc. + +Problem with ":call" and dictionary function. Hari Krishna Dara, Charles +Campbell 2006 Jul 06. + +Syntax HL error caused by "containedin". (Peter Hodge, 2006 Oct 6) + +A custom completion function in a ":command" cannot be a Funcref. (Andy +Wokula, 2007 Aug 25) + +Problem with using :redir in user command completion function? (Hari Krishna +Dara, 2006 June 21) + +Another resizing problem when setting 'columns' and 'lines' to a very large +number. (Tony Mechelynck, 2007 Feb 6) + +After starting Vim, using '0 to jump somewhere in a file, ":sp" doesn't center +the cursor line. It works OK after some other commands. + +Win32: Is it possible to have both postscript and Win32 printing? + +Check: Running Vim in a console and still having connect to the X server for +copy/paste: is stopping the X server handled gracefully? Should catch the X +error and stop using the connection to the server. + +Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME. (2006 +Jul 26, Gary Johnson) + +Using UTF-8 character with ":command" does not work properly. (Matt Wozniski, +2008 Sep 29) + +In the Netbeans interface add a "vimeval" function, so that the other side can +check the result of has("patch13"). + +Cursor line at bottom of window instead of halfway after saving view and +restoring. Only with 'nowrap'. (Robert Webb, 2008 Aug 25) + +Netrw has trouble executing autocommands only for a directory. Add <isdir> +and <notisdir> to autocommand patterns? Also <isfile>? + +Add command modifier that skips wildcard expansion, so that you don't need to +put backslashes before special chars, only for white space. + +Syntax HL: open two windows on the same C code, delete a ")" in one window, +resulting in highlighted "{" in that window, not in the other. + +In mswin.vim: Instead of mapping <C-V> for Insert mode in a complicated way, +can it be done like ":imap <C-V> <MiddleMouse>" without negative side effects? + +GTK: when the Tab pages bar appears or disappears while the window is +maximized the window is no longer maximized. Patch that has some idea but +doesn't work from Geoffrey Antos, 2008 May 5. +Also: the window may no longer fit on the screen, thus the command line is not +visible. + +When right after "vim file", "M" then CTRL-W v the windows are scrolled +differently and unexpectedly. Caused by patch 7.2.398? + +The magic clipboard format "VimClipboard2" appears in several places. Should +be only one. + +"vim -C" often has 'nocompatible', because it's set somewhere in a startup +script. Do "set compatible" after startup? + +It's difficult to debug numbered functions (function in a Dictionary). Print +the function name before resolving it to a number? + let d = {} + fun! d.foo() + echo "here" + endfun + call d.foo(9) + +Add a mark for the other end of the Visual area (VIsual pos). '< and '> are +only set after Visual moded is ended. +Also add a variable for the Visual mode. So that this mode and '< '> can be +used to set what "gv" selects. (Ben Schmidt) + +Win32: When running ":make" and 'encoding' differs from the system locale, the +output should be converted. Esp. when 'encoding' is "utf-8". (Yongwei Wu) +Should we use 'termencoding' for this? + +Win32, NTFS: When editing a specific infostream directly and 'backupcopy' is +"auto" should detect this situation and work like 'backupcopy' is "yes". File +name is something like "c:\path\foo.txt:bar", includes a colon. (Alex +Jakushev, 2008 Feb 1) + +printf() uses the field width in bytes. Can it be made character width, +perhaps with a modifier? What does Posix say? + +Small problem displaying diff filler line when opening windows with a script. +(David Luyer, 2007 Mar 1 ~/Mail/oldmail/mool/in.15872 ) + +Is it allowed that 'backupext' is empty? Problems when backup is in same dir +as original file? If it's OK don't compare with 'patchmode'. (Thierry Closen) + +Patch for supporting count before CR in quickfix window. (AOYAMA Shotaro, 2007 +Jan 1) + +Patch for adding ":lscscope". (Navdeep Parhar, 2007 Apr 26; update 2008 Apr +23) + +":mkview" isn't called with the right buffer argument. Happens when using +tabs and the autocommand "autocmd BufWinLeave * mkview". (James Vega, 2007 +Jun 18) + +xterm should be able to pass focus changes to Vim, so that Vim can check for +buffers that changed. Perhaps in misc.c, function selectwindow(). +Xterm 224 supports it! + +When completing from another file that uses a different encoding completion +text has the wrong encoding. E.g., when 'encoding' is utf-8 and file is +latin1. Example from Gombault Damien, 2007 Mar 24. + +Is it possible to use "foo#var" instead of "g:foo#var" inside a function? + +Syntax HL: When using "nextgroup" and the group has an empty match, there is +no search at that position for another match. (Lukas Mai, 2008 April 11) + +In gvim the backspace key produces a backspace character, but on Linux the +VERASE key is Delete. Set VERASE to Backspace? (patch by Stephane Chazelas, +2007 Oct 16) + +TermResponse autocommand isn't always triggered when using vimdiff. (Aron +Griffis, 2007 Sep 19) + +Create a gvimtutor.1 file and change Makefiles to install it. + +When 'encoding' is utf-8 typing text at the end of the line causes previously +typed characters to be redrawn. Caused by patch 7.1.329. (Tyler Spivey, 2008 +Sep 3, 11) + +When Vim in an xterm owns the selection and the user does ":shell" Vim doesn't +respond to selection requests. Invoking XtDisownSelection() before executing +the shell doesn't help. Would require forking and doing a message loop, like +what happens for the GUI. + +X11: Putting more than about 262040 characters of text on the clipboard and +pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23) +clip_x11_request_selection_cb() is called with zero value and length. +Also: Get an error message from free() in the process that owns the selection. +Seems to happen when the selection is requested the second time, but before +clip_x11_convert_selection_cb() is invoked, thus in X library code. + +":vimgrep" does not recognize a recursive symlink. Is it possible to detect +this, at least for Unix (using device/inode)? + +When switching between windows the cursor is often put in the middle. +Remember the relative position and restore that, just like lnum and col are +restored. (Luc St-Louis) + +Patch to support horizontal scroll wheel in GTK. Untested. (Bjorn Winckler, +2010 Jun 30) + + +At next release: +- Build a huge version by default. +- Improve plugin handling: Automatic updates, handle dependencies? + E.g. Vundle: https://github.com/gmarik/vundle + + +More patches: +- Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11) + Needs a few tests. +- Add 'cscopeignorecase' option. (Liang Wenzhi, 2006 Sept 3) +- Argument for feedkeys() to prepend to typeahead (Yakov Lerner, 2006 Oct + 21) +- Load intl.dll too, not only libintl.dll. (Mike Williams, 2006 May 9, docs + patch May 10) +- Extra argument to strtrans() to translate special keys to their name (Eric + Arnold, 2006 May 22) +- 'threglookexp' option: only match with first word in thesaurus file. + (Jakson A. Aquino, 2006 Jun 14) +- Mac: indicate whether a buffer was modified. (Nicolas Weber, 2006 Jun 30) +- Allow negative 'nrwidth' for left aligning. (Nathan Laredo, 2006 Aug 16) +- ml_append_string(): efficiently append to an existing line. (Brad + Beveridge, 2006 Aug 26) Use in some situations, e.g., when pasting a + character at a time? +- recognize hex numbers better. (Mark Manning, 2006 Sep 13) +- Add <AbbrExpand> key, to expand an abbreviation in a mapping. (Kana + Natsuno, 2008 Jul 17) +- Add 'wspara' option, also accept blank lines like empty lines for "{" and + "}". (Mark Lundquist, 2008 Jul 18) +- Patch to add CTRL-T to delete part of a path on cmdline. (Adek, 2008 Jul + 21) +- Instead of creating a copy of the tutor in all the shell scripts, do it in + vimtutor.vim. (Jan Minar, 2008 Jul 20) +- When fsync() fails there is no hint about what went wrong. Patch by Ben + Schmidt, 2008 Jul 22. +- testdir/Make_dos_sh.mak for running tests with MingW. (Bill Mccarthy, 2008 + Sep 13) +- Patch for adding "space" item in 'listchars'. (Jérémie Roquet, 2009 Oct 29, + Docs patch Oct 30) +- Replace ccomplete.vim by cppcomplete.vim from www.vim.org? script 1520 by + Vissale Neang. (Martin Stubenschrott) Asked Vissale to make the scripts + more friendly for the Vim distribution. + New version received 2008 Jan 6. + No maintenance in two years... +- Patch to open dropped files in new tabs. (Michael Trim, 2010 Aug 3) + +Awaiting updated patches: +9 Mac unicode patch (Da Woon Jung, Eckehard Berns): + 8 Add patch from Muraoka Taro (Mar 16) to support input method on Mac? + New patch 2004 Jun 16 + - selecting proportional font breaks display + - UTF-8 text causes display problems. Font replacement causes this. + - Command-key mappings do not work. (Alan Schmitt) + - With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work. + (Alan Schmitt) + - remove 'macatsui' option when this has been fixed. + - when 'macatsui' is off should we always convert to "macroman" and ignore + 'termencoding'? +9 HTML indenting can be slow. Caused by using searchpair(). Can search() + be used instead? A.Politz is looking into a solution. +8 Win32: Add minidump generation. (George Reilly, 2006 Apr 24) +8 Add ":n" to fnamemodify(): normalize path, remove "../" when possible. + Aric Blumer has a patch for this. He will update the patch for 6.3. +7 Completion of network shares, patch by Yasuhiro Matsumoto. + Update 2004 Sep 6. + How does this work? Missing comments. +8 Add a few more command names to the menus. Patch from Jiri Brezina + (28 feb 2002). Will mess the translations... +7 ATTENTION dialog choices are more logical when "Delete it' appears + before "Quit". Patch by Robert Webb, 2004 May 3. +- Include flipcase patch: ~/vim/patches/wall.flipcase2 ? Make it work + for multi-byte characters. +- Win32: add options to print dialog. Patch from Vipin Aravind. +- Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5) + use the patch that keeps using HLF_8 if HLF_WS has not + been given values. + Add section in help files for these highlight groups? +8 "fg" and "bg" don't work in an xterm. Get default colors from xterm + with an ESC sequence. + xterm can send colors for many things. E.g. for the cursor: + <Esc>]12;?<Bel> + Can use this to get the background color and restore the colors on exit. +7 Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Marcin + Dalecki has a patch for Motif and Carbon) +- Add possibility to highlight specific columns (for Fortran). Or put a + line in between columns (e.g., for 'textwidth'). + Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20. +8 Add functions: + gettext() Translate a message. (Patch from Yasuhiro Matsumoto) + Update 2004 Sep 10 + Another patch from Edward L. Fox (2005 Nov 24) + Search in 'runtimepath'? + More docs needed about how to use this. + How to get the messages into the .po files? + strchars() Like strlen() and strwidth() but counting characters + instead of bytes. + confirm() add "flags" argument, with 'v' for vertical + layout and 'c' for console dialog. (Haegg) + Flemming Madsen has a patch for the 'c' flag + (2003 May 13) + raisewin() raise gvim window (see HierAssist patch for + Tcl implementation ~/vim/HierAssist/ ) + taglist() add argument to specify maximum number of matches. + useful for interactive things or completion. + col('^') column of first non-white character. + Can use "len(substitute(getline('.'), '\S.*', '', '')) + + 1", but that's ugly. +7 Add patch from Benoit Cerrina to integrate Vim and Perl functions + better. Now also works for Ruby (2001 Nov 10) +- Patch from Herculano de Lima Einloft Neto for better formatting of the + quickfix window (2004 dec 2) +7 When 'rightleft' is set, the search pattern should be displayed right + to left as well? See patch of Dec 26. (Nadim Shaikli) +8 Option to lock all used memory so that it doesn't get swapped to disk + (uncrypted). Patch by Jason Holt, 2003 May 23. Uses mlock. +7 Add ! register, for shell commands. (patch from Grenie) +8 In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc. Like it's + done for filetype detection. Patch from Walter Briscoe, 2003 Jul 1. +7 Add a "-@ filelist" argument: read file names from a file. (David + Kotchan has a patch for it) +8 Include a connection to an external program through a pipe? See + patches from Felbinger for a mathematica interface. + Or use emacs server kind of thing? +7 Add ":justify" command. Patch from Vit Stradal 2002 Nov 25. +- findmatch() should be adjusted for Lisp. See remark at + get_lisp_indent(). Esp. \( and \) should be skipped. (Dorai Sitaram, + incomplete patch Mar 18) +- For GUI Find/Replace dialog support using a regexp. Patch for Motif + and GTK by degreneir (nov 10 and nov 18). +- Patch for "paranoid mode" by Kevin Collins, March 7. Needs much more work. + + +Vi incompatibility: +- Try new POSIX tests, made after my comments. (Geoff Clare, 2005 April 7) + Version 1.5 is in ~/src/posix/1.5. (Lynne Canal) +8 With undo/redo only marks in the changed lines should be changed. Other + marks should be kept. Vi keeps each mark at the same text, even when it + is deleted or restored. (Webb) + Also: A mark is lost after: make change, undo, redo and undo. + Example: "{d''" then "u" then "d''": deletes an extra line, because the '' + position is one line down. (Veselinovic) +8 When stdin is not a tty, and Vim reads commands from it, an error should + make Vim exit. +7 Unix Vim (not gvim): Typing CTRL-C in Ex mode should finish the line + (currently you can continue typing, but it's truncated later anyway). + Requires a way to make CTRL-C interrupt select() when in cooked input. +8 When loading a file in the .exrc, Vi loads the argument anyway. Vim skips + loading the argument if there is a file already. When no file argument + given, Vi starts with an empty buffer, Vim keeps the loaded file. (Bearded) +6 In Insert mode, when using <BS> or <Del>, don't wipe out the text, but + only move back the cursor. Behaves like '$' in 'cpoptions'. Use a flag + in 'cpoptions' to switch this on/off. +8 When editing a file which is a symbolic link, and then opening another + symbolic link on the same file, Vim uses the name of the first one. + Adjust the file name in the buffer to the last one used? Use several file + names in one buffer??? + Also: When first editing file "test", which is symlink to "test2", and + then editing "test2", you end up editing buffer "test" again. It's not + logical that the name that was first used sticks with the buffer. +7 The ":undo" command works differently in Ex mode. Edit a file, make some + changes, "Q", "undo" and _all_ changes are undone, like the ":visual" + command was one command. + On the other hand, an ":undo" command in an Ex script only undoes the last + change (e.g., use two :append commands, then :undo). +7 The ":map" command output overwrites the command. Perhaps it should keep + the ":map" when it's used without arguments? +7 CTRL-L is not the end of a section? It is for Posix! Make it an option. +7 Implement 'prompt' option. Init to off when stdin is not a tty. +7 CTRL-T in Insert mode inserts 'shiftwidth' of spaces at the cursor. Add a + flag in 'cpoptions' for this. +7 Add a way to send an email for a crashed edit session. Create a file when + making changes (containing name of the swap file), delete it when writing + the file. Supply a program that can check for crashed sessions (either + all, for a system startup, or for one user, for in a .login file). +7 Vi doesn't do autoindenting when input is not from a tty (in Ex mode). +7 "z3<CR>" should still use the whole window, but only redisplay 3 lines. +7 ":tag xx" should move the cursor to the first non-blank. Or should it go + to the match with the tag? Option? +7 Implement 'autoprint'/'ap' option. +7 Add flag in 'cpoptions' that makes <BS> after a count work like <Del> + (Sayre). +7 Add flag in 'cpoptions' that makes operator (yank, filter) not move the + cursor, at least when cancelled. (default Vi compatible). +7 This Vi-trick doesn't work: "Q" to go to Ex mode, then "g/pattern/visual". + In Vi you can edit in visual mode, and when doing "Q" you jump to the next + match. Nvi can do it too. +7 Support '\' for line continuation in Ex mode for these commands: (Luebking) + g/./a\ g/pattern1/ s/pattern2/rep1\\ + line 1\ line 2\\ + line 2\ line 3\\ + . line4/ +6 ":e /tmp/$tty" doesn't work. ":e $uid" does. Is $tty not set because of + the way the shell is started? +6 Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange + thing. (only repeat insert for the first line). + + +GTK+ GUI known bugs: +9 Crash with X command server over ssh. (Ciaran McCreesh, 2006 Feb 6) +8 GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj + Machowski) They are displayed as separate characters. Problem in + creating a label? +8 GTK 2: Combining UTF-8 characters are sometimes not drawn properly. + Depends on the font size, "monospace 13" has the problem. Vim seems to do + everything right, must be a GTK bug. Is there a way to work around it? +9 Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim + when it is longer than 4000 characters. Works OK from gvim to gvim and + vim to vim. Pasting through xterm (using the shift key) also works. + It starts working after GTK gvim loses the selection and gains it again. +- Gnome2: When moving the toolbar out of the dock, so that it becomes + floating, it can no longer be moved. Therefore making it float has been + blocked for now. + + +Win32 GUI known bugs: +- Win32: tearoff menu window should have a scrollbar when it's taller than + the screen. +8 non-ASCII font names don't work. Need to convert from 'encoding' and use + the wide functions. +8 On Windows 98 the unicows library is needed to support functions with UCS2 + file names. Can we load unicows.dll dynamically? +8 The -P argument doesn't work very well with many MDI applications. + The last argument of CreateWindowEx() should be used, see MSDN docs. + Tutorial: http://win32assembly.online.fr/tut32.html +8 In eval.c, io.h is included when MSWIN32 is defined. Shouldn't this be + WIN32? Or can including io.h be moved to vim.h? (Dan Sharp) +7 Windows XP: When using "ClearType" for text smoothing, a column of yellow + pixels remains when typing spaces in front of a "D" ('guifont' set to + "lucida_console:h8"). +6 Win32 GUI: With "-u NONE -U NONE" and doing "CTRL-W v" "CTRL-W o", the ":" + of ":only" is highlighted like the cursor. (Lipelis) +8 When 'encoding' is "utf-8", should use 'guifont' for both normal and wide + characters to make Asian languages work. Win32 fonts contain both + type of characters. +7 When font smoothing is enabled, redrawing can become very slow. The reason + appears to be drawing with a transparent background. Would it be possible + to use an opaque background in most places? +8 Use another default for 'termencoding': the active codepage. Means that + when 'encoding' is changed typing characters still works properly. + Alternative: use the Unicode functions to obtain typed characters. +8 Win32: Multi-byte characters are not displayed, even though the same font + in Notepad can display them. (Srinath Avadhanula) Try with the + UTF-8-demo.txt page with Andale Mono. +7 The cursor color indicating IME mode doesn't work properly. (Shizhu Pan, + 2004 May 9) +8 Win32: When clicking on the gvim title bar, which gives it focus, produces + a file-changed dialog, after clicking on a button in that dialog the gvim + window follows the mouse. The button-up event is lost. Only with + MS-Windows 98? + Try this: ":set sw ts", get enter-prompt, then change the file in a + console, go back to Vim and click "reload" in the dialog for the changed + file: Window moves with the cursor! + Put focus event in input buffer and let generic Vim code handle it? +8 Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that + comes available. (Poucet) It works OK on Win 98 but doesn't work on Win + NT 4.0. Leaves a grey area where the scrollbar was. ":set go+=r" also + doesn't work properly. +8 When Vim is minimized and when maximizing it a file-changed dialog pops + up, Vim isn't maximized. It should be done before the dialog, so that it + appears in the right position. (Webb) +9 When selecting at the more-prompt or hit-enter-prompt, the right mouse + button doesn't give popup menu. + At the hit-enter prompt CTRL-Y doesn't work to copy the modeless + selection. + On the command line, don't get a popup menu for the right mouse button. + Let the middle button paste selected text (not the clipboard but the + non-Visual selection)? Otherwise CTRL-Y has to be used to copy the text. +8 When 'grepprg' doesn't execute, the error only flashes by, the + user can hardly see what is wrong. (Moore) + Could use vimrun with an "-nowait" argument to only wait when an error + occurs, but "command.com" doesn't return an error code. +8 When the 'shell' cannot be executed, should give an appropriate error msg. + Esp. for a filter command, currently it only complains the file could not + be read. +7 Add an option to add one pixel column to the character width? Lucida + Console italic is wider than the normal font ("d" overlaps with next char). + Opposite of 'linespace': 'columnspace'. +7 At the hit-enter prompt scrolling now no longer works. Need to use the + keyboard to get around this. Pretend <CR> was hit when the user tries to + scroll? +7 Scrollbar width doesn't change when selecting other windows appearance. + Also background color of Toolbar and rectangle below vert. scrollbar. +6 Drawing text transparently doesn't seem to work (when drawing part cursor). +8 CTRL key doesn't always work in combination with ALT key. It does work + for function keys, not for alphabetic characters. Perhaps this is because + CTRL-ALT is used by Windows as AltGr? +8 CTRL-- doesn't work for AZERTY, because it's CTRL-[ for QWERTY. How do we + know which keyboard is being used? +7 When scrolling, and a background color is dithered, the dither pattern + doesn't always join correctly between the scrolled area and the new drawn + area (Koloseike). +8 When gui_init_font() is called with "*", p_guifont is freed while it might + still be used somewhere. This is too tricky, do the font selection first, + then set the new font by name (requires putting all logfont parameters in + the font name). + + +Athena and Motif: +6 New Motif toolbar button from Marcin Dalecki: + - When the mouse pointer is over an Agide button the red becomes black. + Something with the way colors are specified in the .xpm file. + - The pixmap is two pixels smaller than it should be. The gap is filled + with grey instead of the current toolbar background color. +9 Can configure be changed to disable netbeans if the Xpm library is + required and it's missing? +8 When using the resource "Vim*borderwidth 2" the widgets are positioned + wrong. +9 XIM is disabled by default for SGI/IRIX. Fix XIM so that 'imdisable' can + be off by default. +9 XIM doesn't work properly for Athena/Motif. (Yasuhiro Matsumoto) For now, + keep XIM active at all times when the input method has the preediting + flag. +8 X11: A menu that contains an umlaut is truncated at that character. + Happens when the locale is "C", which uses ASCII instead of IS0-8859-1. + Is there a way to use latin1 by default? Gnome_init() seems to do this. +8 Perhaps use fontsets for everything? +6 When starting in English and switching the language to Japanese, setting + the locale with ":lang", 'guifontset' and "hi menu font=", deleting all + menus and setting them again, the menus don't use the new font. Most of + the tooltips work though... +7 Motif: when using a file selection dialog, the specified file name is not + always used (when specifying a filter or another directory). +8 When 'encoding' is different from the current locale (e.g., utf-8) the + menu strings don't work. Requires conversion from 'encoding' to the + current locale. Workaround: set 'langmenu'. + + +Athena GUI: +9 The first event for any button in the menu or toolbar appears to get lost. + The second click on a menu does work. +9 When dragging the scrollbar thumb very fast, focus is only obtained in + the scrollbar itself. And the thumb is no longer updated when moving + through files. +7 The file selector is not resizable. With a big font it is difficult to + read long file names. (Schroeder) +4 Re-write the widget attachments and code so that we will not have to go + through and calculate the absolute position of every widget every time the + window is refreshed/changes size. This will help the "flashing-widgets" + problem during a refresh. +5 When starting gvim with all the default colors and then typing + ":hi Menu guibg=cyan", the menus change color but the background of the + pullright pixmap doesn't change colors. + If you type ":hi Menu guibg=cyan font=anyfont", then the pixmap changes + colors as it should. + Allocating a new pixmap and setting the resource doesn't change the + pullright pixmap's colors. Why? Possible Athena bug? + + +Motif GUI: +- gui_mch_browsedir() is missing, browsedir() doesn't work nicely. +7 Use XmStringCreateLocalized() instead of XmStringCreateSimple()? + David Harrison says it's OK (it exists in Motif 1.2). +8 Lesstif: When deleting a menu that's torn off, the torn off menu becomes + very small instead of disappearing. When closing it, Vim crashes. + (Phillipps) + + +GUI: +9 On Solaris, creating the popup menu causes the right mouse button no + longer to work for extending the selection. (Halevy) +9 When running an external program, it can't always be killed with CTRL-C. + e.g., on Solaris 5.5, when using "K" (Keech). Other 'guipty' problems on + Solaris 2.6. (Marley) +9 On Solaris: Using a "-geometry" argument, bigger than the window where Vim + is started from, causes empty lines below the cmdline. (raf) +8 X11 GUI: When menu is disabled by excluding 'm' from 'guioptions', ALT key + should not be used to trigger a menu (like the Win32 version). +8 When setting 'langmenu', it should be effective immediately. Store both + the English and the translated text in the menu structure. Re-generate + the translation when 'langmenu' has changed. +8 Basic flaw in the GUI code: NextScreen is updated before calling + gui_write(), but the GUI code relies on NextScreen to represent the state + of where it is processing the output. + Need better separation of Vim core and GUI code. +8 When fontset support is enabled, setting 'guifont' to a single font + doesn't work. +8 Menu priority for sub-menus for: Amiga, BeOS. +8 When translating menus ignore the part after the Tab, the shortcut. So + that the same menu item with a different shortcut (e.g., for the Mac) are + still translated. +8 Add menu separators for Amiga. +8 Add way to specify the file filter for the browse dialog. At least for + browse(). +8 Add dialog for search/replace to other GUIs? Tk has something for this, + use that code? Or use console dialog. +8 When selecting a font with the font dialog and the font is invalid, the + error message disappears too quick. +7 More features in the find/replace dialog: + - regexp on/off + - search in selection/buffer/all buffers/directory + when all buffers/directory is used: + - filter for file name + when directory is used: + - subdirectory on/off + - top directory browser +8 gui_check_colors() is not called at the right moment. Do it much later, + to avoid problems. +8 gui_update_cursor() is called for a cursor shape change, even when there + are mappings to be processed. Only do something when going to wait for + input. Or maybe every 100 ms? +8 X11: When the window size is reduced to fit on screen, there are blank + lines below the text and bottom scrollbar. "gvim -geometry 80x78+0+0". + When the "+0+0" is omitted it works. +8 When starting an external command, and 'guipty' set, BS and DEL are mixed + up. Set erase character somehow? +8 A dead circumflex followed by a space should give the '^' character + (Rommel). Look how xterm does this. + Also: Bednar has some code for dead key handling. + Also: Nedit 5.0.2 with USE_XMIM does it right. (Gaya) +8 The compose key doesn't work properly (Cepas). Both for Win32 and X11. +7 The cursor in an inactive window should be hollow. Currently it's not + visible. +7 GUI on Solaris 2.5.1, using /usr/dt/..: When gvim starts, cursor is + hollow, after window lowered/raised it's OK. (Godfrey) +7 When starting GUI with ":gui", and window is made smaller because it + doesn't fit on the screen, there is an extra redraw. +8 When setting font with .Xdefaults, there is an extra empty line at the + bottom, which disappears when using ":set guifont=<Tab>". (Chadzelek) +8 When font shape changes, but not the size, doing ":set font=" does not + redraw the screen with the new font. Also for Win32. + When the size changes, on Solaris 2.5 there isn't a redraw for the + remaining part of the window (Phillipps). +- Flashes really badly in certain cases when running remotely from a Sun. +4 Re-write the code so that the highlighting isn't changed multiple times + when doing a ":hi clear". The color changes happen three or more times + currently. This is very obvious on a 66Mhz 486. + + +MSDOS/DJGPP: +9 Pressing CTRL-C often crashes the console Vim runs in. (Ken Liao) + When 'bioskey' isn't set it doesn't happen. Could be a problem with the + BIOS emulation of the console. Version 5.6 already had this problem. +8 DJGPP: "cd c:" can take us to a directory that no longer exists. + change_drive() doesn't check this. How to check for this error? +9 The 16 bit version runs out of memory very quickly. Should find unused + code and reduce static data. Resetting 'writebackup' helps to be able to + write a file. +9 Crash when running on Windows 98 in a console window and pressing CTRL-C. + Happens now and then. When debugging Vim in gdb this also happens. Since + the console crashes, might be a bug in the DOS console. Resetting + 'bioskey' avoids it, but then CTRL-C doesn't work. +9 DOS: Make CTRL-Fx and ALT-Fx work. + CTRL-F1 = CE-5E, CTRL-F2 = CE-5F, .., CTRL-F10 = CE-67 + ALT-F1 = CE-68, ALT-F2 = CE-69, .., ALT-F10 = CE-71 + Shifted cursor keys produce same codes as unshifted keys. Use bioskey(2) + to get modifier mask for <S-C-M-Fx>. + Use K_SPECIAL/KS_MODIFIER codes to insert modifier mask in input stream? + Make this work like in Win32 console. + Mapping things like <M-A> doesn't work, because it generates an extended + key code. Use a translation table? +9 Can't read an opened swap file when the "share" command has not been used. + At least ignore the swap files that Vim has opened itself. +8 Use DJGPP 2.03. +8 The Dos32 version (DJGPP) can't use long file names on Windows NT. + Check if new package can be used (v2misc/ntlfn08[bs].zip). +8 setlocale() is bogus. +8 Vim busy waits for new characters or mouse clicks. Should put in some + sort of sleep, to avoid eating 50% of the CPU time. Test on an unpatched + Windows 95 system! +8 DJGPP: when shell is bash, make fails. (Donahoe) +7 Hitting CTRL-P twice quickly (e.g., in keyword completion) on a 8088 + machine, starts printer echo! (John Mullin). +7 MSDOS 16 bit version can't work with COMSPEC that has an argument, e.g.: + COMSPEC=C:\WINDOWS\COMMAND.COM /E:4096 (Bradley) + Caused by BCC system() function (Borland "make" has the same problem). +8 Mouse: handle left&right button pressed as middle button pressed. Add + modifier keys shift, ctrl and alt. +7 When too many files are open (depends on FILES), strange things happen. + The Dos16 version runs out of memory, in the Dos32 version "!ls" causes a + crash. Another symptom: .swp files are not deleted, existing files are + "[New file]". +7 DJGPP version doesn't work with graphics display mode. Switch to a mode + that is supported? +8 DJGPP: ":mode" doesn't work for many modes. Disable them. +8 DJGPP: When starting in Ex mode, shouldn't clear the screen. (Walter + Briscoe) + + +MSDOS, OS/2 and Win32: +8 OS/2: Add backtick expansion. Undefine NO_EXPANDPATH and use + gen_expand_wildcards(). +8 OS/2: Add clipboard support? See example clipbrd.exe from Alexander + Wagner. +8 OS/2: Add Extended Attributes support and define HAVE_ACL. +8 OS/2: When editing a file name "foo.txt" that is actually called FOO.txt, + writing uses "foo.txt". Should obtain the real file name. +8 Should $USERPROFILE be preferred above $HOMEDRIVE/$HOMEPATH? No, but it's + a good fallback, thus use: + $HOME + $HOMEDRIVE$HOMEPATH + SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_APPDATA, FALSE); + $USERPROFILE + SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_COMMON_APPDATA, FALSE); + $ALLUSERSPROFILE + $SYSTEMDRIVE\ + C:\ +8 Win32 console: <M-Up> and <M-Down> don't work. (Geddes) We don't have + special keys for these. Should use modifier + key. +8 Win32 console: caps-lock makes non-alpha keys work like with shift. + Should work like in the GUI version. +8 Environment variables in DOS are not case sensitive. Make a define for + STRCMP_ENV(), and use it when comparing environment var names. +8 Setting 'shellslash' has no immediate effect. Change all file names when + it is set/reset? Or only use it when actually executing a shell command? +8 When editing a file on a Samba server, case might matter. ":e file" + followed by ":e FILE" will edit "file" again, even though "FILE" might be + another one. Set last used name in buflist_new()? Fix do_ecmd(), etc. +8 When a buffer is editing a file like "ftp://mach/file", which is not going + to be used like a normal file name, don't change the slashes to + backslashes. (Ronald Hoellwarth) + + +Windows 95: +8 Editing a file by its short file name and writing it, makes the long file + name disappear. Setting 'backupcopy' helps. + Use FindFirstFile()->cAlternateFileName in fname_case() (George Reilly). +8 Doing wildcard expansion, will match the short filename, but result in the + long filename (both DJGPP and Win32). + + +Win32 console: +9 When editing a file by its short file name, it should be expanded into its + long file name, to avoid problems like these: (Mccollister) + 1) Create a file called ".bashrc" using some other editor. + 2) Drag that file onto a shortcut or the actual executable. + 3) Note that the file name is something like BASHRC~1 + 4) Go to File->Save As menu item and type ".bashrc" as the file name. + 5) Press "Yes" to indicate that I want to overwrite the file. + 6) Note that the message "File exists (add ! to override)" is displayed + and the file is not saved. + Use FindFirstFile() to expand a file name and directory in the path to its + long name. +8 Also implement 'conskey' option for the Win32 console version? Look at + how Xvi does console I/O under Windows NT. +7 Re-install the use of $TERM and support the use of different terminals, + besides the console. +8 Use of <altgr> modifier doesn't work? 5.3 was OK. (Garcia-Suarez/Guckes) +9 Mapping <C-S-Tab> doesn't work correctly. How to see the difference with + <C-S-i>? +9 tmpnam() uses file in root of file system: "\asdf". That doesn't work on + a Netware network drive. Use same function as for Win32 GUI? +8 In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__ + is not defined. Shouldn't that be the other way around? +7 Use SetConsoleCP() and SetConsoleOutputCP() to implement 'termencoding'? + Avoids that input and output work differently. Need to be restored when + exiting. + + +Amiga: +8 In mch_inchar() should use convert_input_safe() to handle incomplete byte + sequences. +9 In mch_expandpath() a "*" is to be expanded, but "\*" isn't. Remove + backslashes in result. +8 Executing a shell, only one option for 'shell' is separated. Should do + all options, using white space separation. + + +Macintosh: +- GUI: gui_mch_browsedir() is missing. +7 Loading the Perl library only works on OS/X 10.2 or 10.3, never on both. + Load the Perl library dynamically see Python sources file dynload_mac + (Jack) + dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html +8 inputdialog() doesn't resize when giving more text lines. (David Fishburn, + 2006 Sept 28) +8 Define vim_mkdir() for Macintosh. +8 Define mch_writable() for Macintosh. +9 When DiskLock is running, using a swap file causes a crash. Appears to be + a problem with writing a file that starts with a dot. (Giacalone) +9 In mac_expandpath() check that handling of backslashes is done properly. + + +"Small" problems: +- Can't disable terminal flow control, to enable the use of CTRL-S and + CTRL-Q. Add an option for it? +- When using e_secure in do_one_cmd() mention the command being executed, + otherwise it's not clear where it comes from. +- When the quickfix window is open and executing ":echo 'hello'" using the + Command-line window, the text is immediately removed by the redrawing. + (Michael Henry, 2008 Nov 1) + Generic solution: When redrawing while there is a message on the + cmdline, don't erase the display but draw over the existing text. + Other solution, redraw after closing the cmdline window, before executing + the command. +9 For Turkish vim_tolower() and vim_toupper() also need to use utf_ + functions for characters below 0x80. (Sertacyildiz) +9 When the last edited file is a help file, using '0 in a new Vim doesn't + edit the file as a help file. 'filetype' is OK, but 'iskeyword' isn't, + file isn't readonly, etc. +8 When an ":edit" is inside a try command and the ATTENTION prompt is used, + the :catch commands are always executed, also when the file is edited + normally. Should reset did_emsg and undo side effects. Also make sure + the ATTENTION message shows up. Servatius Brandt works on this. +7 Vimtutor leaves escape sequence in terminal. This is the xterm response to + requesting the version number. (Yasuhiro Matsumoto) +8 When redirecting and using ":silent" the current column for displaying and + redirection can be different. Use a separate variable to hold the column + for redirection. +7 The messages for "vim --help" and "vim --version" don't use + 'termencoding'. +- Could the hit-enter prompt be avoided when a message only overlaps the + 'showcmd' area? Clear that area when the next cmd is typed. +8 When 'scrollbind' is set, a window won't scroll horizontally if the cursor + line is too short. Add a word in 'scrollopt' to allow moving the cursor + to longer line that is visible. A similar thing is done for the GUI when + using the horizontal scrollbar. +7 VisVim can only open one file. Hard to solve: each opened file is passed + with a separate invocation, would need to use timestamps to know the + invocations belong together. +8 When giving a ":bwipeout" command a file-changed dialog may popup for this + buffer, which is pointless. (Mike Williams) +8 On MS-Windows ":make" doesn't show output while it is working. Use the + tee.exe from http://unxutils.sourceforge.net/ ? About 16 Kbyte in the + UnxUtils.zip archive. + Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter + Briscoe says it's not as good. +8 When doing Insert mode completion a mapping cannot recursively call + edit(), because the completion information is global. Put everything in + an allocated structure? +8 Command line completion: buffers "foo.txt" and "../b/foo.txt", completing + ":buf foo<Tab>" doesn't find the second one. (George V. Reilly) +7 mb_off2cells() doesn't work correctly on the tail byte of a double-byte + character. (Yasuhiro Matsumoto) It should return 1 when used on a tail + byte, like for utf-8. Store second byte of double-byte in ScreenLines2[] + (like for DBCS_JPNU) and put a zero in the second byte (like for UTF-8). +8 'backupdir' and 'directory' should use $TMPDIR, $TMP and/or $TEMP when + defined. +7 Inside a function with "perl <<EOF" a line with "$i++" is recognized as an + ":insert" command, causing the following "endfunction" not to be found. + Add skipping this perl construction inside function definitions. +7 When 'ttimeoutlen' is 10 and 'timeoutlen' is 1000, there is a keycode + "<Esc>a" and a mapping <Esc>x", when typing "<Esc>a" with half a second + delay should not be interpreted as a keycode. (Hans Ginzel) +7 ":botright 1 new" twice causes all window heights to be changed. Make the + bottom window only bigger as much as needed. +7 The Cygwin and MingW makefiles define "PC", but it's not used anywhere. + Remove? (Dan Sharp) +9 User commands use the context of the script they were defined in. This + causes a "s:var" argument to unexpectedly use a variable in the defining + script, not the calling script. Add an argument to ":command": + "-keepcontext". Do replace <SID>, so that a function in the defining + script can be called. +8 The Japanese message translations for MS-Windows are called ja.sjis.po, + but they use encoding cp932. Rename the file and check that it still + works. +8 A very long message in confirm() can't be quit. Make this possible with + CTRL-C. +8 "gf" always excludes trailing punctuation characters. file_name_in_line() + is currently fixed to use ".,:;!". Add an option to make this + configurable? +8 'hkmap' should probably be global-local. +9 When "$" is in 'cpoptions' and folding is active, a "C" command changes + the folds and resets w_lines_valid. The display updating doesn't work + then. (Pritesh Mistry) +8 Using ":s" in a function changes the previous replacement string. Save + "old_sub" in save_search_patterns()? +8 Should allow multi-byte characters for the delimiter: ":s+a+b+" where "+" + is a multi-byte character. +8 When appending to a file and 'patchmode' isn't empty, a backup file is + always written, even when the original file already exists. +9 When getting focus while writing a large file, could warn for this file + being changed outside of Vim. Avoid checking this while the file is being + written. +7 The message in bt_dontwrite_msg() could be clearer. +8 The script ID that is stored with an option and displayed with ":verbose + set" isn't reset when the option is set internally. For example when + 'foldlevel' is set from 'foldlevelstart'. +8 Also store the line number with the script ID and use it for ":verbose", + so that "set nocompatible" is found when it changes other option values. + When an option is set indirectly mention the command? E.g. when + ":diffsplit" sets 'foldmethod'. +8 In the fileformat dialog, "Cancel" isn't translated. Add a global + variable for this. (Eduardo Fernandez) +9 When editing a file with 'readonly' set, there is no check for an existing + swap file. Then using ":write" (without making any changes) doesn't give + a warning either. Should check for an existing swap file without creating + one. Unfinished patch by Ian Kelling, 2008 July 14. +7 When 'showbreak' is set, the amount of space a Tab occupies changes. + Should work like 'showbreak' is inserted without changing the Tabs. +7 When 'mousefocus' is set and switching to another window with a typed + command, the mouse pointer may be moved to a part of the window that's + covered by another window and we lose focus. Only move in the y + direction, not horizontally? +8 ":hardcopy": + - Using the cterm_color[] table is wrong when t_colors is > 16. + - Need to handle unprintable characters. + - Win32: On a B&W printer syntax highlighting isn't visible. Perform + dithering to make grey text? + - Add a flag in 'printoptions' to add an empty page to make the total + number even. "addempty"? (Mike Williams) + - Respect 'linebreak'. Perhaps also 'showbreak'? + - Should interpret CTRL-L as a page break. + - Grey line numbers are not always readable. Add field in 'printoptions'. + Default to black when no syntax highlighting. + - Be able to print a window in diff mode. + - Be able to specify a colorscheme to use for printing. And a separate + one for B&W printing (if that can be detected). +8 In Visual block mode with 'lbr' set, a change command doesn't insert the + text in following lines where the linebreak changes. +9 dosinst.c: The DJGPP version can't uninstall the Uninstall registry key on + Windows NT. How to install a .inf file on Windows NT and how to detect + that Windows NT is being used? +8 When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a + block of one double-wide character, then "d" deletes only half of it. +8 When 'virtualedit' is set, should "I" in blockwise visual mode also insert + in lines that don't extend into the block? +8 With 'virtualedit' set, in Insert mode just after the end of line, CTRL-O + yh does not yank the last character of the line. (Pavel Papushev) + Doing "hl" first appears to make it work. +8 With 'virtualedit' set it's possible to move into the blank area from + 'linebreak'. +8 With 'virtualedit' set and 'selection' "exclusive", a Visual selection + that ends in or after a tab, "d" doesn't delete (part of) the tab. + (Helmut Stiegler) +9 When jumping to a tag, the search pattern is put in the history. When + 'magic' is on, the pattern may not work. Translate the pattern depending + on p_magic when putting it in the history? Alternative: Store value of + 'magic' in history. (Margo) +9 optwin.vim: Restoring a mapping for <Space> or <CR> is not correct for + ":noremap". Add "mapcmd({string}, {mode})? Use code from ":mkexrc". +9 incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern + isn't updated). +9 term_console is used before it is set (msdos, Amiga). +9 Get out-of-memory for ":g/^/,$s//@/" on 1000 lines, this is not handled + correctly. Get many error messages while redrawing the screen, which + cause another redraw, etc. +8 [<C-I> doesn't work when '*' is in 'iskeyword'. find_pattern_in_path() + must escape special characters in the pattern. +8 Vim can overwrite a read-only file with ":w!". ":w" can't overwrite an + existing file, "w!" can, but perhaps not a read-only file? Then use + ":w!!" for that. + Or ask for permission to overwrite it (if file can be made writable) and + restore file to readonly afterwards. + Overwriting a file for which a swap file exists is similar issue. +7 When compiled with "xterm_clipboard", startup can be slower and might get + error message for invalid $DISPLAY. Try connecting to the X server in the + background (forked), so that Vim starts up quicker? Connect as soon as + the clipboard is to be used (Visual select mode starts, paste from + clipboard) +7 X11: Some people prefer to use CLIPBOARD instead of PRIMARY for the normal + selection. Add an "xclipboard" argument to the 'clipboard' option? (Mark + Waggoner) +8 For xterm need to open a connection to the X server to get the window + title, which can be slow. Can also get the title with "<Esc>[21t", no + need to use X11 calls. This returns "<Esc>]l{title}<Esc>\". +6 When the xterm reports the number of colors, a redraw occurs. This is + annoying on a slow connection. Wait for the xterm to report the number of + colors before drawing the screen. With a timeout. +8 When the builtin xterm termcap contains codes that are not wanted, need a + way to avoid using the builtin termcap. +8 Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode. Also + recognize these keys? Mostly useful for xterm simulators, like gnometerm. + See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style. +8 For xterm also recognize keypad up/down/left/right and insert. +8 '[ and '] should be set to start/end of line when using a linewise operator + (e.g., ":w"). +8 CTRL-A can't handle big "long" numbers, they become negative. Check for + "-" character, if not present, use unsigned long. +8 Make it possible to disable the special meaning of "#" in the first column + for ">>". +8 Add suspending with CTRL-Z at the "more" prompt, and when executing a long + script in do_cmdline(). +8 When using 'hidden', many swap files will be open. When Vim runs into the + maximum number of open files, error messages will appear. Detect that + this problem is present, and close any hidden files that don't have + changes. +8 With 'viminfo' set such that the ".viminfo" file is written on a FAT + filesystem, an illegal file name may be created: ".vim". +8 For each buffer that is opened, the viminfo file is opened and read to + check for file marks. This can be slow. +7 In xterm, recognize both vt100 and vt220 cursor keys. Change + add_termcode() to not remove an existing entry for a name, when it's + needed. + Need a generic solution to recognize different codes for the same key. +8 Core dump within signal function: gdb doesn't show stack backtrace! Option + to skip catch_signals()? +9 Repeating a "cw" with "." doesn't work if the text was pasted from the + clipboard. (Thomas Jones) It's because the menu/toolbar item exits Insert + mode and uses "gP". How to fix this without breaking inserting a block of + text? +8 In Replace mode pasting from the clipboard (using menu or toolbar) inserts + all the text. Add ":rmenu"? +8 Pasting with the mouse in Replace mode inserts the text, instead of + overwriting, when it is more than one line. Same for using <C-R>. +9 CTRL-E and CTRL-Y don't work in small window when 'so' is 4 and lines are + wrapping (Acevedo/in.226). E.g., when using CTRL-E, window height 7, + window might actually scroll down when last line of buffer is displayed. + --> Remember if the previous command was "cursor follows screen" or + "screen follow cursor" and use this in cursupdate(). +7 tilde_replace() can only handle "~/", should also do "~user/". + Get the list of home directories (from /etc/passwd? Use getpwent()) and + use some clever algorithm to match a path with that. Find common strings + in the list? +8 When dragging status line with mouse, sometimes a jump when first clicking + on the status line (caused by 'winheight'). Select window on button up, + instead of on button down. +8 Dragging the status line doesn't scroll but redraw. +9 Evaluating 'statusline' in build_stl_str_hl() does not properly check for + reaching the end of the available buffer. + Patch to dynamically allocate the buffer for % items. (Eric Arnold, 2006 + May 14) +8 When performing incremental search, should abort searching as soon as a + character is typed. +8 When the value of $MAKE contains a path, configure can't handle this. + It's an autoconf bug. Remove the path from $MAKE to work around it. +8 How to set VIMRC_FILE to \"something\" for configure? Why does this not + work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure +8 The temporary file is sometimes not writable. Check for this, and use an + alternate name when it isn't. Or add the 'temptemplate' option: template + for the temp file name ":set temptemplate=/usr/tmp/?????.tmp". + Also: Win32 version uses Windows temp directory, which might not work for + cygwin bash. +7 Get error "*, \+ or \( operand could be empty" for pattern "\(.\)\1\{3}". + Remember flags for backreferences. +7 When switching to Daylight Saving Time, Vim complains that a file has been + changed since last read. Can we use a function that uses GMT? +7 When completing an environment variable after a '$', check for file names + that contain a '$' after all have been found. +8 When "cm" termcap entry is missing, starting gvim shouldn't complain about + it. (Lohner) Try out with "vt100" entry, cm replaced with cX. +7 When an include file starts with "../", the check for already visiting + this file doesn't work. Need to simplify the file name. +7 The names and comments for the arguments of do_browse() are confusing. + "dflt" isn't the default file name when "initdir" is not NULL and + "initdir" is the default path to be used. +7 When 'scrolloff' is exactly half the window height, "j" causes a scroll of + two lines at a time. "k" doesn't do this. (Cory T. Echols) +8 When write_viminfo() is used while there are many orphaned viminfo + tempfiles writing the viminfo file fails. Give a clear error message so + that the user knows he has to delete the files. +7 It's possible to redefine a script-local function with ":func + <SNR>123_Test()". (Krishna) Disallow this. + + +I can't reproduce these (if you can, let me know how!): +9 NT 4.0 on NTFS file system: Editing ".bashrc" (drag and drop), file + disappears. Editing ".xyz" is OK. Also, drag&drop only works for three + files. (McCollister) + + +Problems that will (probably) not be solved: +- GTK: when using the popup menu with spelling suggestions and releasing the + right mouse button before the menu appears selecting an item with the + right mouse button has no effect. GTK does not produce an event for this. +- GTK 2: Cannot use the file selector. When using it many things become + slow. This is caused by some code in GTK that writes + ~/.recently-used.xbel every time an event is handled. It assumes the main + loop is never quit, which is a wrong assumption. Also, it overwrites the + file with different file permissions, which is a privacy issue. This + needs to be fixed in GTK. A solution in Vim would be really complicated. + (2008 Jul 31) This appears to be fixed in Vim 7.3. +- xterm title: The following scenario may occur (esp. when running the Vim + test script): Vim 1 sets the title to "file1", then restores the title to + "xterm" with an ESC sequence when exiting. Vim 2 obtains the old title + with an X library call, this may result in "file1", because the window + manager hasn't processed the "xterm" title yet. Can apparently only be + worked around with a delay. +- In a terminal with 'mouse' set such that the mouse is active when entering + a command line, after executing a shell command that scrolls up the + display and then pressing ":": Selecting text with the mouse works like + the display wasn't scrolled. Vim doesn't know how much the external + command scrolled up the display. Use Shift to select text. +- X windows: When $DISPLAY points to a X server where there is no access + permission, trying to connect to the X server causes an error message. + XtOpenDisplay() prints this directly, there is no way to avoid it. +- X windows: Setting 'guifontset' to an illegal value sometimes crashes Vim. + This is caused by a fault in a X library function, can't be solved in Vim. +- Win32 tcl: has("tcl") hangs when the tcl84.dll is from cygwin. +- Motif: When adding a menu item "Find this &Symbol", the "s" in "this" will + be underlined, instead of in "Symbol". Motif doesn't let us specify which + character gets the highlighting. +- Moving the cursor removes color in color-xterm. This is a color-xterm + problem! color-xterm ver. 6.1 beta 3 and later work properly. +- In zsh, "gvim&" changes the terminal settings. This is a zsh problem. + (Jennings) +- Problem with HPterm under X: old contents of window is lost (Cosentino). +- Amiga: When using quickfix with the Manx compiler we only get the first 25 + errors. How do we get the rest? +- Amiga: The ":cq" command does not always abort the Manx compiler. Why? +- Linux: A file with protection r--rw-rw- is seen readonly for others. The + access() function in GNU libc is probably wrong. +- MSDOS: When using smartdrive with write-back buffering, writing to a + readonly floppy will cause problems. How to test for a writable floppy + first? +- MSDOS: Both 16 and 32 bit versions: File name expansion doesn't work for + names that start with a dot. These used to be illegal file names. +- When doing a CTRL-Z and typing a command for the shell, while Vim is busy + (e.g. writing a file), the command for the shell is sometimes eaten by Vim, + because the terminal mode is changed from RAW to CBREAK. +- An old version of GNU tgoto can't handle the terminfo code for "AF". The + "%p1" is interpreted as "%p" and "1", causing color not to be working. + Fix: Change the "%p1" in the "AF" and "AB" terminfo entries to "%p". + (Benzinger). +- When running an external command from the GUI, typeahead is going to that + program, not to Vim. It looks like the shell eats the characters, Vim + can't get back what the external command didn't use. +- Win32 GUI: Error code from external command not returned in shell_error. + It appears that cmd.exe and command.com don't return an error code. +- Win32 GUI: The Toolbar is a bit too high when the flat style is being + used. We don't have control over the height of the Toolbar. +- Win32: All files created on the day of switching from winter to summer + time cause "changed since editing started" messages. It goes away when + the file is written again the next day, or the timezone is adjusted. + DJGPP version is OK. (Zaimi) Looks like a problem with the Win32 library. + Rebooting doesn't help. Time stamps look OK in directory. (Penn) + Is this on FAT (stores wall clock time) or NTFS (stores UTS)? +- Win32, MS-Windows XP: $HOME uses the wrong drive when the user profiles + are not on the boot disk. This is caused by a wrong value of $HOMEDRIVE. + This is a bug in XP, see MSKB article 818134. +- Win32, MS-Windows: expanding plugin/**/*.vim also picks up + dir/ctags.vim,v. This is because the short file name is something like + "ctags~1.vim" and that matches the pattern. +- SunOS 5.5.1 with Motif: The file open dialog does not have a horizontal + scroll bar for the "files" selection. This is a problem in the Motif + libraries, get a patch from Sun. +- Solaris 2.6 with GTK and Perl: gvim crashes when started. Problem with X + input method called from GDK code. Without Perl it doesn't crash. +- VMS: Vimdiff doesn't work with the VMS diff, because the output looks + different. This makes test 47 fail. Install a Unix-compatible diff. +- VMS v7.1 and older: Tests 21 and 32 fail. From VMS v7.1-2 and newer Vim + does not have this behavior. (Zoltan Arpadffy) +- Win32 GUI: mouse wheel always scrolls rightmost window. The events arrive + in Vim as if the rightmost scrollbar was used. +- GTK with Gnome: Produces an error message when starting up: + Gdk-WARNING **: locale not supported by C library + This is caused by the gnome library gnome_init() setting $LC_CTYPE to + "en_US". Not all systems support this locale name, thus causing the + error. Hopefully a newer version of GTK/Gnome fixes this problem. +- GTK 2: With this mapping the hit-enter prompt is _sometimes_ below the + screen, at other times there is a grey area below the command line: + :nmap <F11> :if &guioptions=~'m' \| set guioptions-=m \| else \| set guioptions+=m \| endif<cr> +- GTK: When pasting a selection from Vim to xclipboard gvim crashes with a + ABRT signal. Probably an error in the file gdkselection.c, the assert + always fails when XmbTextListToTextProperty() fails. (Tom Allard) +- GTK 2: gives an assertion error for every non-builtin icon in the toolbar. + This is a GTK 2.4.x bug, fixed in GTK 2.4.2. (Thomas de Grenier de Latour) +- When using an xterm that supports the termresponse feature, and the 't_Co' + termcap option was wrong when Vim started, it will be corrected when the + termresponse is received. Since the number of colors changes, the + highlighting needs to be initialized again. This may cause colors defined + in the vimrc file to be lost. +- On Windows NT 4.0 the number of files passed to Vim with drag&drop and + "Edit with Vim" is limited. The maximum command line length is 255 chars. + +--------------------- extensions and improvements ---------------------- + *extensions-improvements* + +Most interesting new features to be added when all bugs have been fixed: +- Using ":exe edit fname" has escaping problems. Use ":edit ++(fname)". + Thus use "++=" to give arguments as expressions, comma separated as if + calling a function. + With options: ":edit ++(['!', '++enc=abc'], ['+/pat'], fname)". + Alternative: Make a function for Ex commands: cmd_edit(). +- Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd". Block + can be selected with CTRL-V. Allow '$' (end of line) for col2. +- Add DEBUGGER INTERFACE. Implementation for gdb by Xavier de Gaye. + Should work like an IDE. Try to keep it generic. Now found here: + http://clewn.sf.net. + And the idevim plugin/script. + To be able to start the debugger from inside Vim: For GUI run a program + with a netbeans connection; for console: start a program that splits the + terminal, runs the debugger in one window and reconnect Vim I/O to the + other window. + Wishes for NetBeans commands: + - make it possible to have 'defineAnnoType' also handle terminal colors. + - send 'balloonText' events for the cursor position (using CursorHold ?) + in terminal mode. +- ECLIPSE plugin. Problem is: the interface is very complicated. Need to + implement part in Java and then connect to Vim. Some hints from Alexandru + Roman, 2004 Dec 15. Should then also work with Oracle Jdeveloper, see JSR + 198 standard http://www.jcp.org/en/jsr/detail?id=198. + Eclim does it: http://eclim.sourceforge.net/ (Eric Van Dewoestine) + Plugin that uses a terminal emulator: http://vimplugin.sf.net + And another one: http://www.satokar.com/viplugin/index.php +- STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is. + Especially when using the scrollbar. Typing a cursor-movement command + scrolls back to where the cursor is. +- Scroll commands by screen line. g CTRL-E and g CTRL-Y ? Requires the + first line to be able to start halfway. +- Running a shell command from the GUI still has limitations. Look into how + the terminal emulator of the Vim shell project can help: + http://vimshell.wana.at +8 Add a command to jump to a certain kind of tag. Allow the user to specify + values for the optional fields. E.g., ":tag size type=m". + Also allow specifying the file and command, so that the result of + taglist() can be used. +- X11: Make it possible to run Vim inside a window of another program. + This can be done with XReparentWindow(). But how exactly? + + +Documentation: +8 List of Vim runtime directories. dotvim.txt from Charles Campbell, 2007 + Feb 20. +8 The GUI help should explain the Find and Find/Replace dialogs. Add a link + to it from ":promptrepl" and ":promptfind". +8 List of options should mention whether environment variables are expanded + or not. +8 Extend usr_27.txt a bit. (Adam Seyfarth) +7 Add a section on debugging scripts in the user manual. +9 Make the Reference Manual more precise. For each command mention: + - change to cursor position and curswant + - if it can be undone (u/CTRL-R) and redone (.) + - how it works for folded lines + - how it works with multi-byte characters +9 In change.txt, remark about Javadoc isn't right. Right alignment would + work too. +8 Spread the windows commands over the other files. For example, ":stag" + should be with ":tag". Cross-link with tags to avoid too much double + text. +8 Add tags for all features, e.g. "gui_running". +7 MS-Windows: When a wrong command is typed with an ALT key, give a hint to + look at the help for 'winaltkeys'. +7 Add a help.vim plugin that maps <Tab> to jump to the next tag in || and + <C-Tab> (and <S-Tab>) to the previous tag. + Patch by Balazs Kezes, 2007 Dec 30. Remark from A. Politz. +- Check text editor compendium for vi and Vim remarks. + + +Help: +- First try using the ":help" argument literally, before using it as a + pattern. And then match it as part of a tag. +- When a help item has multiple matches make it possible to use ":tn" to go + to the other matches. +- Support a way to view (and edit) .info files. +- Default mapping for help files: <Tab> to position cursor on next |:tag|. +- Implement a "sticky" help window, some help text lines that are always + displayed in a window with fixed height. (Guckes) Use "~/.vimhelp" file, + user can edit it to insert his favorite commands, new account can contain a + default contents. +- Make 'winminheight' a local option, so that the user can set a minimal + height for the help window (and other windows). +- ":help :s^I" should expand to ":help :substitute". +- Make the help key (<F1>) context sensitive? +- Learn mode: show short help while typing commands. + + +User Friendlier: +8 Windows install with install.exe: Use .exe instead of .bat files for + links, so that command line arguments are passed on unmodified? (Walter + Briscoe) +8 Windows install: Be able to associate Vim with a selection of file types? +8 Windows uninstall: Have uninstal.c delete the vimfiles directories that + dosinst.c creates. List the contents of the directory (recursively) if + the user asks for it. Requires an implementation of "rm -rf". +8 Remember the name of the vimrc file that was used (~/.vimrc, $VIM/_vimrc, + $HOME/_vimrc, etc.) and add "edit vimrc" to the File menu. +- Add a way to save local settings and mappings into a new plugin file. + ":mkplugin <file>"? +8 Add ":plugininstall" command. Can be used to install a plugin file that + includes documentation. Let the user select a directory from + 'runtimepath'. + " Vim plugin + <main plugin code> + " >>> plugin help start <<< + <plugin docs> +- Add mappings local to a window: ":map <window> ..."? +9 Add buffer-local menu. Should offer a choice between removing the menu or + disabling it. Be careful that tear-offs don't disappear (keep one empty + item?). + Alternative: use BufEnter and BufLeave autocommands. +8 make a vimtutor script for Amiga and other systems. +7 Add the arguments for configure to the ":version" output? +7 When Vim detects a file is being edited elsewhere and it's a gvim session + of the same user it should offer a "Raise" button, so that the other gvim + window can be displayed. (Eduard) +8 Support saving and restoring session for X windows? It should work to do + ":mksession" and use "-S fname" for the restart command. The + gui_x11_wm_protocol_handler() already takes care of the rest. + global_event_filter() for GTK. + + +Tab pages: +9 GUI implementation for the tab pages line for other systems. +7 GUI: Control over the appearance of the text in the labels (bold, color, + font, etc.) +8 Make GUI menu in tab pages line configurable. Like the popup menu. +8 balloons for the tab page labels that are shortened to show the full path. +7 :tabdup duplicate the tab with all its windows. +7 Option to put tab line at the left or right? Need an option to specify + its width. It's like a separate window with ":tabs" output. +7 Add local variables for each tab page? +8 Add local options for each tab page? E.g., 'diffopt' could differ between + tab pages. +7 Add local highlighting for each tab page? +7 Add local directory for tab pages? How would this interfere with + window-local directories? + + +Spell checking: +- have some way not to give spelling errors for a range of characters. + E.g. for Chinese and other languages with specific characters for which we + don't have a spell file. Useful when there is also text in other + languages in the file. +- Support more regions? Caolan McNamara argues it's needed for es_XX. + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=219777 +- Unicode defines another quote character: 0x2019. Use it as an equivalent + of a single quote, thus use it as a word character like a quote and match + with words, replacing the curly quote with a single quote. +- Could filter é things for HTML before doing spell checking. + Similarly for TeX. +- The Hungarian spell file uses four extra characters in the FOL/UPP/LOW + items than other spell files with the ISO-8859-2 encoding, that causes + problem when changing 'spelllang'. There is no obvious way to fix this. +- Considering Hunspell 1.1.4: + What does MAXNGRAMSUGS do? + Is COMPLEXPREFIXES necessary when we have flags for affixes? +- Support spelling words in CamelCase as if they were two separate words. + Requires some option to enable it. (Timothy Knox) +- There is no Finnish spell checking file. For openoffice Voikko is now + used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/ + (Teemu Likonen) +8 ":mkspell" still takes much too long in Hungarian dictionary from + hunspell. Only solution appears to be to postpone secondary suffixes. +8 Handle postponed prefix with COMPOUNDPERMITFLAG or COMPOUNDFORBIDFLAG. + WFP_COMPPERMIT and WFP_COMPFORBID +8 implement use of <compoptions> in .spl file: + implement CHECKCOMPOUNDREP: when a compound word seems to be OK apply REP + items and check if the result is a valid word. + implement CHECKCOMPOUNDDUP + implement CHECKCOMPOUNDTRIPLE + Add CHECKCOMPOUNDCASE: when compounding make leading capital lower case. + How is it supposed to work? +- Add a command the repeats ]s and z=, showing the misspelled word in its + context. Thus to spell-check a whole file. +- suggestion for "KG" to "kg" when it's keepcase. +- For flags on affixes: Use a "AFFCOMPSET" flag; means the compound flags of + the word are not used. +- Support breakpoint character ? 0xb7 and ignore it? Makes it possible to + use same wordlist for hyphenation. +- Compound word is accepted if nr of words is <= COMPOUNDWORDMAX OR nr of + syllables <= COMPOUNDSYLMAX. Specify using AND in the affix file? +- NEEDCOMPOUND also used for affix? Or is this called ONLYINCOMPOUND now? + Or is ONLYINCOMPOUND only for inside a compound, not at start or end? +- Do we need a flag for the rule that when compounding is done the following + word doesn't have a capital after a word character, even for Onecap words? +- New hunspell home page: http://hunspell.sourceforge.net/ + - Version 1.1.0 is out now, look into that. + - Lots of code depends on LANG, that isn't right. Enable each mechanism + in the affix file separately. + - Example with compounding dash is bad, gets in the way of setting + COMPOUNDMIN and COMPOUNDWORDMAX to a reasonable value. + - PSEUDOROOT == NEEDAFFIX + - COMPOUNDROOT -> COMPOUNDED? For a word that already is a compound word + Or use COMPOUNDED2, COMPOUNDED3, etc. +- CIRCUMFIX: when a word uses a prefix marked with the CIRCUMFIX flag, then + the word must also have a suffix marked with the CIRCUMFIX flag. It's a + bit primitive, since only one flag is used, which doesn't allow matching + specific prefixes with suffixes. + Alternative: + PSFX {flag} {pchop} {padd} {pcond} {schop} {sadd}[/flags] {scond} + We might not need this at all, you can use the NEEDAFFIX flag and the + affix which is required. +- When a suffix has more than one syllable, it may count as a word for + COMPOUNDWORDMAX. +- Add flags to count extra syllables in a word. SYLLABLEADD1 SYLLABLEADD2, + etc.? Or make it possible to specify the syllable count of a word + directly, e.g., after another slash: /abc/3 +- MORPHO item in affix file: ignore TAB and morphological field after + word/flags and affix. +- Implement multiple flags for compound words and CMP item? + Await comments from other spell checking authors. +- Also see tklspell: http://tkltrans.sourceforge.net/ +8 Charles Campbell asks for method to add "contained" groups to existing + syntax items (to add @Spell). + Add ":syntax contains {pattern} add=@Spell" command? A bit like ":syn + cluster" but change the contains list directly for matching syntax items. +- References: MySpell library (in OpenOffice.org). + http://spellchecker.mozdev.org/source.html + http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/ + author: Kevin Hendricks <kevin.hendricks@sympatico.ca> +8 It is currently not possible to mark "can not" as rare, because "can" and + "not" are good words. Find a way to let "rare" overrule "good"? +8 Make "en-rare" spell file? Ask Charles Campbell. +8 The English dictionaries for different regions are not consistent in their + use of words with a dash. +7 Insert mode completion mechanism that uses the spell word lists. +8 Add hl groups to 'spelllang'? + :set spelllang=en_us,en-rare/SpellRare,en-math/SpellMath + More complicated: Regions with different languages? E.g., comments + in English, strings in German (po file). + + +Diff mode: +9 Instead invoking an external diff program, use builtin code. One can be + found here: http://www.ioplex.com/~miallen/libmba/dl/src/diff.c + It's quite big and badly documented though. +8 Use diff mode to show the changes made in a buffer (compared to the file). + Use an unnamed buffer, like doing: + new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis + Also show difference with the file when editing started? Should show what + can be undone. (Tom Popovich) +7 Add cursor-binding: when moving the cursor in one diff'ed buffer, also + move it in other diff'ed buffers, so that CTRL-W commands go to the same + location. + + +Folding: + (commands still available: zI zJ zK zp zP zq zQ zV zy zY; + secondary: zB zS zT zZ, z=) +8 Vertical folds: looks like vertically split windows, but the cursor moves + through the vertical separator, separator moves when scrolling. +8 Add "z/" and "z?" for searching in not folded text only. +9 Add search pattern item to only match in closed or open fold and/or fold + with certain level. Allows doing ":g/pat/cmd" to work on closed folds. +8 When a closed fold is displayed open because of 'foldminlines', the + behavior of commands is still like the fold is closed. How to make the + user aware of this? +8 Add an option 'foldskip' with values like 'foldopen' that specifies which + commands skip over a closed fold. +8 "H" and "L" count buffer lines instead of window lines. (Servatius Brandt) +8 Add a way to add fold-plugins. Johannes Zellner has one for VB. +7 When using manual folding, the undo command should also restore folds. +- Allow completely hiding a closed fold. E.g., by setting 'foldtext' to an + empty string. Require showing a character in 'foldcolumn' to avoid the + missing line goes unnoticed. + How to implement this? +- When pressing the down arrow of a scrollbar, a closed fold doesn't scroll + until after a long time. How to make scrolling with closed folds + smoother? +- When creating a session, also store folds for buffers in the buffer list, + using the wininfo in wi_folds. +- When currently editing the first file in the argument list the session + file can contain: + args version.c main.c + edit version.c + Can editing version.c twice be avoided? +- 'foldmethod' "textobject": fold on sections and paragraph text objects. +- "zuf": undo change in manual fold. "zUf" redo change in manual fold. How + to implement this? +- "zJ" command: add the line or fold below the fold in the fold under the + cursor. +- 'foldmethod' "syntax": "fold=3" argument: set fold level for a region or + match. +- Apply a new foldlevel to a range of lines. (Steve Litt) +8 Have some way to restrict commands to not folded text. Also commands like + searches. + + +Multi-byte characters: +- When editing a file with both utf-8 and latin1 text Vim always falls back + to latin1. Add a command to convert the latin1 characters to utf-8? + :unmix utf-8,latin1 filename + Would only work when 'encoding' is utf-8. +9 When the tail byte of a double-byte character is illegal (e.g., a CR), the + display is messed up (Yasuhiro Matsumoto). Should check for illegal + double-byte characters and display them differently (display each single + byte). +9 'fenc' in modeline problem: add option to reload the file when 'fenc' is + set to a different value in a modeline? Option can be default on. Could + it be done with an autocommand? +8 Add an item in 'fileencodings' to check the first lines of a file for + the encoding. See Python PEP: http://www.python.org/peps/pep-0263.html. + To avoid getting a wrong encoding only accept something Emacs-like: + "-*- coding: enc-na_me.foo -*-" and "-*- coding= enc-na_me.foo -*-" + Match with "-\*-\s*coding[:=]\s*\([::word::-_.]\+\)\s*-\*-" and use first + item. +8 Add an item in 'fileencodings' to check the first line of an XML file for + the encoding. <?xml version="1.0" encoding="UTF-8"?> Or "charset=UTF-8"? + For HTML look for "charset=utf-8". +8 The quickfix file is read without conversion, thus in 'encoding'. Add an + option to specify the encoding of the errorfile and convert it. Also for + ":grep" and ":helpgrep". + More generic solution: support a filter (e.g., by calling a function). +8 When a file was converted from 'fileencoding' to 'encoding', a tag search + should also do this on the search pattern. (Andrzej M. Ostruszka) +8 When filtering changes the encoding 'fileencoding' may not work. E.g., + when using xxd and 'fileencoding' is "utf-16". Add an option to set a + different fileencoding for filter output? +7 When converting a file fails, mention which byte could not be converted, + so that the user can fix the problem. +8 Add configure option to be able to disable using the iconv library. (Udo + Schweigert) +9 'aleph' should be set to 1488 for Unicode. (Zvi Har'El) +8 Should add test for using various commands with multi-byte characters. +8 'infercase' doesn't work with multi-byte characters. +8 toupper() function doesn't handle byte count changes. +7 Searching and composing characters: + When searching, should order of composing characters be ignored? + Add special item to match with a composing character, zero-width, so that + one can replace a base character and keep the composing characters. + Add a special item to match with a composing character, so that composing + characters can be manipulated. + Add a modifier to ignore composing characters, only compare base + characters. Useful for Hebrew (Ron Aaron) +8 Should implement 'delcombine' for command line editing. +8 Detect overlong UTF-8 sequences and handle them like illegal bytes. +8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte + characters. +8 UTF-8: "r" in Visual mode doesn't take composing characters. +8 UTF-8: When there is a precomposed character in the font, use it instead + of a character and a composing character. See xterm for an example. +7 When a character can't be displayed, display its digraph instead. + 'display' option to specify this. +7 Use ideas for nl_langinfo() from Markus Kuhn in enc_default(): + (www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c) +- GTK and Win32: Allow selecting fonts for 'guifontset' with the + fontselector somehow. +- GTK and Win32: make it possible to set the font for the menu to make it + possible to have 'encoding' different from the current locale. +- dbcs_class() only works for Japanese and Korean. Implement this for + other encodings. The "euc-jp" and "euc-kr" choices might be wrong. +- Find some way to automatically select the right GUI font or fontset, + depending on the default value of 'encoding'. + Irrelevant in the GTK+ 2 GUI so long as UTF-8 is used. + For Windows, the charset_pairs[] table could be used. But how do we know + if a font exists? +- Do keyboard conversion from 'termencoding' to 'encoding' with + convert_input() for Mac GUI. +- Add mnemonics from RFC1345 longer than two characters. + Support CTRL-K _{mnemonic}_ +7 In "-- INSERT (lang) --" show the name of the keymap used instead of + "lang". (Ilya Dogolazky) +- Make 'breakat' accept multi-byte characters. Problem: can't use a lookup + table anymore (breakat_flags[]). + Simplistic solution: when 'formatoptions' contains "m" also break a line + at a multi-byte character >= 0x100. +- Add the possibility to enter mappings which are used whenever normal text + could be entered. E.g., for "f" command. But not in Normal mode. Sort + of opposite of 'langmap'. Use ":tmap" command? +- When breaking a line, take properties of multi-byte characters into + account. The "linebreak" program from Bruno Haible can do it: + ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz + But it's very complicated... + + +Printing: +7 Implement "undercurl" for printing. +- Add "page width" to wrap long lines. +- Win32: use a font dialog for setting 'printfont'. Can reuse the code for + the 'guifont' dialog, put the common code in a separate function. +- Add the file timestamp to the page header (with an option). (George + Reilly) +- Win32: when 'printfont' is empty use 'guifont'. +- Unix: Use some dialog box to do the obvious settings (paper size, printer + name, portrait/landscape, etc). +- PostScript: Only works for text that can be converted to an 8-bit + character set. How to support Unicode fully? +- Allow specifying the paper size, instead of using a standard size. Same + units as for the margins. +- Support right-to-left text? +8 Make the foreground color darkening function preserve the hue of the + color. + + +Syntax highlighting: +8 Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson) + Should do the same for ":syn on" and ":syn manual". +8 Support "containedin" argument for ":syn include", so that the defined + cluster can be added to existing syntax items. +8 C syntax: Don't highlight {} as errors inside () when used like this: + "({ something })", often used in GCC code. +7 Add a "startgroup" to a region. Used like "nextgroup" inside the region, + preferred item at the start of the region. (Charles Campbell) +8 When editing a new file without a name and giving it a name (by writing + it) and 'filetype' is not set, detect the filetype. Avoid doing it for + ":wq file". +7 For "nextgroup" we have skipwhite, skipnl and skipempty. It would be + really nice to be able to skip with a pattern. Or skip with a syntax + group. (Nikolai Weibull, 2007 Feb 27) +8 Make conversion to HTML faster (Write it in C or pre-compile the script). +9 There is still a redraw bug somewhere. Probably because a cached state is + used in a wrong way. I can't reproduce it... +7 Be able to change only the background highlighting. Useful for Diff* and + Search highlighting. +7 When 'number' is set highlight the number of the current line. + Must be enabled with an option, because it slows down display updating. +8 Allow the user to add items to the Syntax menu sorted, without having to + change this for each release. +8 Add a "matchcontains" for regions: items contained in the start or end + pattern, but not in the body. +8 Add a "keepend-contained" argument: Don't change the end of an item this + one is contained in. Like "keepend" but specified on the contained item, + instead of the containing item. +8 cpp.vim: In C++ it's allowed to use {} inside (). +8 Some syntax files set 'iskeyword'. When switching to another filetype + this isn't reset. Add a special keyword definition for the syntax rules? + When this is done, use vim.vim syntax highlighting for help file examples, + but without ":" in 'iskeyword' for syntax. + Also need a separate 'iskeyword' for the command line, e.g., in a help + window ":e /asdf/asdf/" CTRL-W works different. +8 Add specific syntax item to match with parens/braces that don't have a + "%" match. :syntax nomatch cMatchError (,{,[,),},] [contained] +8 Highlight the text between two matching parens (e.g., with a grey + background) when on one of the parens or in between them. + Option for the matchparen plugin? +8 When using a cterm, and no ctermfg or ctermbg are defined, use start/stop + sequences. Add remark in docs that :if 'term' == "term-name" should be + used. +8 Add @spell cluster to String and Comment groups for many languages. Will + allow spell checking. (Fleiner) +8 When listing syntax items, try to sort the keywords alphabetically. And + re-insert the [] if possible. +8 Make it possible to use color of text for Visual highlight group (like for + the Cursor). +8 It would be useful to make the highlight group name an expression. Then + when there is a match, the expression would be evaluated to find out what + highlight group to use. Could be used to check if the shell used in a + password file appears in /etc/shells. (Nikolai Weibull) + syn match =s:checkShell(v:match) contained 'pattern' +8 Make it possible to only highlight a sub-expression of a match. Like + using "\1" in a ":s" command. +8 Support for deleting syntax items: + :syn keyword cTodo remove this + :syn match cTodo remove "pattern" + :syn region cString remove start="this" end="that" +8 Add possibility to sync on something else, when the syncing in one way + doesn't find match. For HTML: When no {script} is found, try looking for + a '<'. (Fleiner) +7 Replace the synchronizing method with a state machine specification? + Should be able to start at any line in the file, search forwards or + backwards, and use the result of matching a pattern. +7 Use parsing like awk, so that e.g., a ( without a matching ) can be + detected. +8 Make it possible to use "inverted" highlighting, invert the original + character. For Visual mode. (xterm-selection already does this). +8 Highlight non-printable characters with "SpecialChar", linked to + "Special". Display them with the digraph characters, if possible. +8 Highlight the clipboard-selection with a highlight group. +8 Be able to reset highlighting to its original (default) values. +7 Be able to write current highlighting to a file as commands, similar to + ":mkvimrc". +8 Improve c.vim: + - Add check for unterminated strings, with a variable to switch it on: + "c_strict_ansi". + - Detect unbalanced "#endif". Requires looking back a long way... +8 Add an option to restrict the updating of syntax highlighting to the + current line while in Insert mode. +8 When guessing value of 'background', the syntax file has already been + loaded (from the .gvimrc). After changing 'background', load it again? +8 Add ":syn resync" command, to re-parse the whole file until the current + display position. +8 Should support "me" offset for a region start pattern. To be used to + allow searching for the end pattern inside the match of the end pattern. + Example: syn region pikeXX start="([^{]" end=")" should work on "()". +8 When using a regexp for "contains=", should delay matching with it until + redrawing happens. Set a flag when a group is added, check this flag when + highlighting starts. +8 Some terminals can display colors like the GUI. Add some setting to use + GUI colors for the terminal? With something to define the escape + sequence. +7 It's possible for an item to be transparent, so that the colors of an item + lower on the stack is used. Also do this with highlighting, so that the + user can set transparent highlighting? E.g. a number in a C comment would + get the color of a comment, a number in an assignment Normal. (Nikolai + Weibull) +7 Add "semitrans": Add highlighting. E.g., make the text bold, but keep the + colors. And add colors, so that Green+Red becomes Yellow. + E.g. for this html: + <B> bold text <I> italic+bold text </B> italic text </I> +7 CTRL-] checks the highlight group for finding out what the tag is. +7 Add an explanation how a list of words can be used to highlight misspelled + words. +8 Add more command line completion for :syntax. +8 Add more command line completion for :highlight. +7 Should find a better way to parse the :syntax and :highlight commands. + Use tables or lists that can be shared by parsing for execution and + completion? +8 Add ColorSchemePost autocommand event, so that scripts can set up their + highlighting. (Salman Halim) +7 Add a few sets of colors (e.g. Borland Turbo C one). With a menu to + select one of the sets. +8 Add offsets to sub-matches: "\(a*\) *"he=e1-1 + 'e' is end of match 'e1' is end of sub-match 1, 's2' is start of submatch + 2, etc. +8 In Insert mode, when there are typeahead characters, postpone the + highlighting (for "." command). +8 Syncing on comments isn't 100% correct when / / lines mix with / * and * /. + For example: What about a line that starts with / / and contains * /? +8 Ignore / * and * / inside strings, when syncing. +7 Build a few more syntax files from the file "/usr/share/misc/vgrindefs": + ISP, LDL, Icon, ratfor. And check "nedit/source/highlight.c". +6 Add possibility to have background color continue until the right edge of + the window. Useful for comment blocks and function headings. (Rogall) +- Make it possible to add "contains" items for all items in a group. Useful + when extending an already existing syntax file. +- Add line-continuation pattern for non-syncing items too? +- Add possibility to highlight the whole line, including the right margin + (for comment blocks). +- Add 'hlmatch' option: List of flags: + 'c': highlight match for character under the cursor. + 'b': highlight the previous (, and its match. + 'a': highlight all text from the previous ( until its match. + Also for {}, <>, etc.? + 'e': highlight all braces without a match (slow?) + OR: add an argument "cursor" to the syntax command, which means that the + region/match/keyword is only highlighted when the cursor is on it. + (Campbell) + Or do it like Elvis: define text objects and how to highlight them around + the cursor. (Iain Truskett) +7 Make it possible to use all words in the tags files as Keyword. + Can also be done with a script (but it's slow). +7 Make it possible to call a ":" command when a match is found. Should + allow for adding keywords from the text (e.g. variables that are set). + And allows for sections with different highlighting. +7 Add highlight group for commandline: "Commandline". Make sure it + highlights the command line while typing a command, and any output from + messages. And external commands? +8 Make a version that works like less, but with highlighting: read stdin for + text, exit at end of file, don't allow editing, etc. moreim? lessim? +7 SpecialKey highlighting overrules syntax highlighting. Can't give an + unprintable char another color. Would be useful for ^M at end of line. + + +Built-in script language: +8 Make the filename and line number available to script functions, so that + they can give useful debugging info. The whole call stack would be ideal. +7 Execute a function with standard option values. No need to save and + restore option values. Especially useful for new options. Problem: how + to avoid a performance penalty (esp. for string options)? +8 Add referring to key options with "&t_xx". Both for "echo &t_xx" and + ":let &t_xx =". Useful for making portable mappings. +- Add ":let var ?= value", conditional assignment. Patch by Dave Eggum, + 2006 Dec 11. +- range for ":exec", pass it on to the executed command. (Webb) +8 ":{range}source": source the lines from the current file. + You can already yank lines and use :@" to execute them. + Most of do_source() would not be used, need a new function. + It's easy when not doing breakpoints or profiling. + Requires copying the lines into a list and then creating a function to + execute lines from the list. Similar to getnextac(). +7 ":include" command: just like ":source" but doesn't start a new scriptID? + Will be tricky for the list of script names. +8 Have a look at VSEL. Would it be useful to include? (Bigham) +8 Add ":fungroup" command, to group function definitions together. When + encountered, all functions in the group are removed. Suggest using an + obscure name to avoid name clashes. Require a ":fungroup END" in the same + sourced file? Assume the group ends at the end of the file. Handle + nested packages? + Alternative: Support packages. {package-name}:{function-name}(). + Packages are loaded automatically when first used, from + $VIMRUNTIME/packages (or use a search path). +7 Pre-parse or compile Vim scripts into a bytecode. + 1. Put the bytecode with the original script, with an ":if + has('bytecode')" around it, so that it's only used with a Vim that + supports it. Update the code with a command, can be used in an + autocommand. + 2. Use a ".vic" file (like Python use .pyc). Create it when writing a + .vim file. Problem: distribution. + 3. Use a cache directory for each user. How to recognize which cached + file belongs to a sourced script? +7 Add argument to winwidth() to subtract the space taken by 'foldcolumn', + signs and/or 'number'. +6 Add ++ and -- operators? They only work on variables (lvals), how to + implement this? +8 Add functions: + has(":command") Check if ":command" works. compare function + with "ex_ni". E.g. for ":simalt". + system() With a List argument. Bypasses the shell, use + exec() directly. (Bob Hiestand) + escape() Add argument to specify what to escape with. + modestack() Instead of just the current mode return the + stack of Insert / CTRL-O / :normal things. + realname() Get user name (first, last, full) + user_fullname() patch by Nikolai Weibull, Nov + 3 2002 + Only add this when also implemented for + non-Unix systems, otherwise a shell cmd could + be used. + get_user_name() gets login name. + menuprop({name}, {idx}, {what}) + Get menu property of menu {name} item {idx}. + menuprop("", 1, "name") returns "File". + menuprop("File", 1, "n") returns "nmenu + File.Open..." argument. + Patch by Ilya Sher, 2004 Apr 22 + Return a list of menus and/or a dictionary + with properties instead. + mapname({idx}, mode) return the name of the idx'th mapping. + Patch by Ilya Sher, 2004 Mar 4. + Return a list instead. + char2hex() convert char string to hex string. + crypt() encrypt string + decrypt() decrypt string + base64enc() base 64 encoding + base64dec() base 64 decoding + attributes() return file protection flags "drwxrwxrwx" + filecopy(from, to) Copy a file + shorten(fname) shorten a file name, like home_replace() + perl(cmd) call Perl and return string + inputrl() like input() but right-to-left + typed() return the characters typed and consumed (to + find out what happened) + virtualmode() add argument to obtain whether "$" was used in + Visual block mode. + getacp() Win32: get codepage (Glenn Maynard) + deletebufline() delete line in any buffer + appendbufline() append line in any buffer + libcall() Allow more than one argument. + libcallext() Like libcall(), but using a callback function + to allow the library to execute a command or + evaluate an expression. +7 Make bufname("'0") return the buffer name from mark '0. How to get the + column and line number? col("'0") currently returns zero. +8 argc() returns 0 when using "vim -t tag". How to detect that no file was + specified in any way? To be able to jump to the last edited file. +8 Pass the command line arguments to Vim scripts in some way. As v:args + List? Or extra parameter to argv()? +8 Add command arguments with three dashes, passed on to Vim scripts. +7 Add optional arguments to user functions: + :func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17) +6 User functions: Functions local to buffer "b:func()"? +8 For Strings add ":let var[{expr}] = {expr}". When past the end of "var" + just ignore. +8 The "= register should be writable, if followed by the name of a variable, + option or environment variable. +8 ":let &option" should list the value of the option. +8 ":let Func().foo = value" should work, also when "foo" doesn't exist. + Also: ":let Func()[foo] = value" should work. Same for a List. +7 Add synIDlist(), making the whole list of syntax items on the syntax stack + available as a List. +8 Add autocommand-event for when a variable is changed: + :au VarChanged {varname} {commands} +8 Add "has("gui_capable")", to check if the GUI can be started. +8 Add possibility to use variables like registers: characterwise (default), + linewise (when ending in '\n'), blockwise (when ending in '\001'). reg0, + rega, reg%, etc. Add functions linewise({expr}), blockwise({expr}) and + charwise({expr}). +7 Make it possible to do any command on a string variable (make a buffer + with one line, containing the string). Maybe add an (invisible) scratch + buffer for this? + result = scratch(string, command) + result = apply(string, command) + result = execute(string, command) + "command" would use <> notation. + Does scratch buffer have a number? Or re-use same number? +7 Add function to generate unique number (date in milliseconds). + + +Robustness: +6 Add file locking. Lock a file when starting to edit it with flock() or + fcntl(). This patch has advisory file locking while reading/writing + the file for Vim 5.4: ~/vim/patches/kahn_file_locking . + The patch is incomplete (needs support for more systems, autoconf). + Andy doesn't have time to work on it. + Disadvantage: Need to find ways to gracefully handle failure to obtain a + lock. When to release a lock: When buffer is unloaded? + + +Performance: +7 For string variables up to 3 bytes don't allocate memory, use v_list + itself as a character array. Use VAR_SSTRING (short string). +7 Add 'lazysize' option: Above this size Vim doesn't load everything before + starting to edit a file. Things like 'fileencodings' only work up to this + size, modelines only work at the top. Useful for large log files where + you only want to look at the first few pages. Use zero to disable it. +8 move_lines() copies every line into allocated memory, making reloading a + buffer a lot slower than re-editing the file. Can the memline be locked + so that we don't need to make a copy? Or avoid invoking ml_updatechunk(), + that is taking a lot of time. (Ralf Wildenhues, 2008 Jul 7) + With a patch, but does it work? +8 Instead of loading rgb.txt every time a color wasn't recognized load it + once and keep it in memory. Move the code to a common place to avoid + repeating it in various system files. +8 Turn b_syn_ic and b_syn_containedin into b_syn_flags. +9 Loading menu.vim still takes quite a bit of time. How to make it faster? +8 in_id_list() takes much time for syntax highlighting. Cache the result? +7 setpcmark() shifts the jumplist, this takes quite a bit of time when + jumping around. Instead use an index for the start? +8 When displaying a space with only foreground highlighting, it's the same + as a space without attributes. Avoid displaying spaces for the "~" lines + when starting up in a color terminal. +8 Avoid alloc() for scratch buffer use, esp. in syntax.c. It's very slow on + Win16. +8 Profiling shows that in_id_list() is used very often for C code. Can this + function be improved? +8 For an existing file, the page size of the swap file is always the + default, instead of using the block size of the device, because the swap + file is created only after setting the block size in mf_open(). How can + this be improved? +8 Set default for 'ttyscroll' to half a screen height? Should speed up + MS-DOS version. (Negri) +7 C syntax highlighting gets a lot slower after ":set foldmethod=syntax". + (Charles Campbell) Inserting a "{" is very slow. (dman) +7 HTML syntax highlighting is slow for long lines. Try displaying + http://www.theregister.co.uk/content/4/22908.html. (Andre Pang) +7 Check how performance of loading the wordlist can be improved (adding a + lot of abbreviations). +7 MS-DOS console: Add t_DL support, to make scrolling faster. +7 Compile Ex commands to byte codes. Store byte codes in a vim script file + at the end, after "compiled:. Make it look like a single comment line + for old Vim versions. Insert first line "Vim script compiled <timestamp>. + Only used compiled code when timestamp matches the file stat. + Add command to compile a vim script and add it to the file in-place. + Split Ex command executing into a parsing and executing phase. + Use compiled code for functions, while loops, etc. +8 When defining autocommands (e.g., from $VIMRUNTIME/filetype.vim), need to + compare each pattern with all existing patterns. Use a hash code to avoid + using strcmp() too often? +7 Include turbo_loader patches, speeding up reading a file? + Speed up reading a file by reading it into a fixed-size buffer, creating + the list of indexes in another buffer, and then copying the result into a + memfile block with two copies. Then read the next block into another + fixed-size buffer, create the second list of indexes and copy text from + the two blocks to the memfile block. +7 do_cmdline(): Avoid that the command line is copied to allocated memory + and freed again later all the time. For while loops, and for when called + with an argument that can be messed with. + Generic solution: Make a struct that contains a pointer and a flag that + indicates if the pointer should be freed when replaced. +7 Check that the file size is not more than "sizeof(long)". +- Further improve finding mappings in maphash[] in vgetorpeek() +8 Syntax highlighting is slow when deleting lines. Try in + $VIMRUNTIME/filetype.vim. +- "out of memory" after deleting (1,$d) and changing (:%s/^/> /) a lot of + lines (27000) a few times. Memory fragmentation? +- Have a look at how pdksh does memory allocation (alloc.c). (Dalecki) +- Do profiling on: + - :g/pat/normal cmd + - 1000ii<Esc> + - deleting 10Mbyte worth of lines (netscape binary) + - "[i" and "[d" (Yegappan Lakshmanan) + - ":g/^/m0" on a 450Kbyte file. And the "u". + - highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and + "~/vim/test/lockup.pl". + - loading a syntax file to highlight all words not from a dictionary. + - editing a Vim script with syntax highlighting on (loading vim.vim). +7 Screen updating can be further improved by only redrawing lines that were + changed (and lines after them, when syntax highlighting was used, and it + changed). + - On each change, remember start and end of the change. + - When inserting/deleting lines, remember begin, end, and line count. +- Use macros/duarte/capicua for profiling. Nvi 1.71 is the fastest! +- When using a file with one long line (1Mbyte), then do "$hhhh", is still + very slow. Avoid calling getvcol() for each "h"? +- Executing a register, e.g. "10000@@" is slow, because ins_typebuf has to + move the previous commands forward each time. Pass count from + normal_cmd() down to do_execreg(). +- Repeating insert "1000i-<Esc>" displays --INSERT-- all the time, because of + the <Esc> at the end. Make this work faster (disable redrawing). +- Avoid calls to plines() for cursor line, use w_cline_height. +- After ":set nowrap" remove superfluous redraw with wrong hor. offset if + cursor is right of the screen. +8 Make CTRL-C on Unix generate a signal, avoid using select() to check for a + CTRL-C (it's slow). + + +Code size: +8 GUI: When NO_CONSOLE is defined, more code can be excluded. +- Put getline() and cookie in a struct, so only one argument has to be + passed to do_cmdline() and other functions. +8 Make a GUI-only version for Unix? +8 In buf_write _() isn't needed when setting errmsg, do it once when using + it. +7 When compiling with a GUI-only version, the code for cterm colors can be + left out. +8 When compiled with a GUI-only version, the termcap entries for terminals + can be removed. +8 Can the check for libelf in configure.in be removed? + + +Messages: +8 When using ":q" in a changed file, the error says to "add !". Add the + command so that beginners understand it: "use :q!". +8 For 'verbose' level 12 prints commands from source'ed files. How to skip + lines that aren't executed? Perhaps move the echoing to do_cmdline()? +8 Use 'report' for ":bdel"? (Krishna) To avoid these messages when using a + script. +- Delete message after new command has been entered and have waited for key. + Perhaps after ten seconds? +- Make message history available in "msg" variables: msg1, msg2, .. msg9. +8 When reading from stdin allow suppressing the "reading from stdin" + message. +9 Check handling of overwriting of messages and delays: + Very wrong: errors while redrawing cause endless loop. + When switching to another file and screen scrolls because of the long + message and return must be typed, don't scroll the screen back before + redrawing. +8 When address range is wrong you only get "Invalid range". Be a bit more + specific: Negative, beyond last line, reverse range? Include the text. +8 Make it possible to ignore errors for a moment ('errorignore'?). Another + option to switch off giving error messages ('errorquiet'?). Also an option + not to give any messages ('quiet')? Or ":quiet on", ":quiet off". + Careful: For a severe error (out of memory), and when the user starts + typing, error messages must be switched back on. + Also a flag to ignore error messages for shell commands (for mappings). +- Option to set time for emsg() sleep. Interrupt sleep when key is typed? + Sleep before second message? +8 In Ex silent mode or when reading commands from a file, what exactly is + not printed and what is? Check ":print", ":set all", ":args", ":vers", + etc. At least there should be no prompt. (Smulders) And don't clear the + screen when reading commands from stdin. (Kendall) + --> Make a difference between informative messages, prompts, etc. and + error messages, printing text, etc. +8 Window should be redrawn when resizing at the hit-enter prompt. + Also at the ":tselect" prompt. Find a generic solution for redrawing when + a prompt is present (with a callback function?). + + +Screen updating: +7 Add a string to the 'display' option to make CTRL-E and CTRL-Y scroll one + screen line, also if this means the first line doesn't start with the + first character (like what happens with a single line that doesn't fit). +- screen_line(): + - insert/delete character stuff. + - improve delete rest of line (spaces at end of line). +- When moving or resizing window, try to avoid a complete redraw (esp. when + dragging the status line with the mouse). +- When 'lazyredraw' set, don't echo :ex commands? Need a flag to redraw when + waiting for a character. +8 Add a ":refresh [winnr]" command, to force updating a window. Useful from + an event handler where ":normal" can't be used. Also useful when + 'lazyredraw' is set in a mapping. +7 Make 'list' and 'linebreak' work together. + + +Scrolling: +8 Add "zy" command: scroll horizontally to put the cursor in the middle. +6 Add option to set the overlap for CTRL-F and CTRL-B. (Garhi) +- extend 'scrollbind' option: 'scrollopt' words "search", "relative", etc.. + Also 'e'xecute some commands (search, vertical movements) in all bound + windows. +7 Add 'scrollbind' feature to make the offset of one window with the next + one equal to the window height. When editing one file in both windows it + looks like each window displays a page of the buffer. +- Allow scrolling by dragging with the mouse (grab a character and move it + up/down). Like the "hand" in Acrobat reader. Use Alt-LeftMouse for this? + (Goldfarb) +- Add command to execute some commands (search, vertical movements) in all + bound windows. +- Add 'search' option to 'scrollopt' to allow 'scrollbind' windows to + be bound by regexp searches +- Add "z>" and "z<": scroll sideways one screenful. (Campbell) +- Add option to set the number of lines when not to scroll, instead of the + fixed number used now (for terminals that scroll slow with a large number + of lines but not with a single line). + + +Autoconf: +8 Should use acconfig.h to define prototypes that are used by autoheader. +8 Some compilers don't give an error for "-OPT:Olimit" but a warning. (Webb) + Add a check for the warning, so that "Olimit" can be added automatically? +- Autoconf: Use @datadir@ for the system independent files. Make sure the + system dependent and system independent files are separated. (Leitner). +- Add autoconf check for waitpid()/wait4(). +- Remove fcntl() from autoconf, all systems have it? +- Set default for 'dictionary', add search for dictionary to autoconf. + + +Perl interface: +8 Rename typemap file to something else? +7 Make buffers accessed as Perl arrays. (Clark) +7 Make it possible to compile with non-ANSI C? +6 Tcl/Tk has the "load" command: load a shared library (.so or .dll). + + +Shared libraries: +6 Add support for loading shared libraries, and calling functions in it. + :libload internal-name libname + :libunload internal-name + :liblist + :libcall internal-name function(arg1, arg2, ...) + :libcall function(arg1, arg2, ...) + libcall() can have only one integer or String argument at the moment. +6 Have a look on how Perl handles loading dynamic libraries. + + +Tags: +9 With ":set tags=./tags,../tags" and a tag appears in both tags files it is + added twice. Requires figuring out the actual file name for each found + match. Remove tag_fname from the match and combine it with the fname in + the match (without expanding or other things that take time). When + 'tagrelative' is off tag_fname isn't needed at all. +8 For 'tags' wildcard in the file name is not supported, only in the path. + This is due to it using |file-searching|. Suboptimal solution would be to + make the filename or the whole option use |wildcards| globing, better + would be to merge the 2 kinds of globing. originally (Erik Falor, 2008 + April 18), updated (Ian Kelling, 2008 July 4) +7 Can CTRL-] (jump to tag) include a following "." and "->" to restrict the + number of possible matches? Check tags file for an item that has members. + (Flemming Madsen) +8 Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis. +8 When output of ":tselect" is long, getting the more-prompt, should be able + to type the tag number directly. +7 Add the possibility to use the "-t {tag}" argument multiple times. Open a + window for each tag. +7 Make output of ":tselect" a bit nicer. Use highlighting? +7 Highlight the "tag 1 of >2" message. New highlight group, or same as "hit + bottom" search message. +7 When using ":tag" at the top of the tag stack, should add another entry, + so CTRL-T can bring you back to where you are now AND to where you were + before the previous ":tag" command. (Webb) +- When doing "[^I" or "[^D" add position to tag stack. +- Add command to put current position to tag stack: ":tpush". +- Add functions to save and restore the tag stack? Or a command to switch + to another tag stack? So that you can do something else and come back to + what you were working on. +7 When using CTRL-] on someClass::someMethod, separate class from method and + use ":ta class:someClass someMethod". + Include C++ tags changes (Bertin). Change "class::func" tag into "func" + with "class=class"? Docs in oldmail/bertin/in.xxx. +7 Add ":tagargs", to set values for fields: + :tagargs class:someclass file:version.c + :tagargs clear + These are then the default values (changes the order of priority in tag + matching). +7 Support for "gtags" and "global"? With ":rtag" command? + There is an example for how to do this in Nvi. + Or do it like Elvis: 'tagprg' and 'tagprgonce' options. (Yamaguchi) + The Elvis method is far more flexible, do it that way. +7 Support "col:99" extra field, to position the cursor in that column. With + a flag in 'cpoptions' to switch it off again. +7 Better support for jumping to where a function or variable is used. Use + the id-utils, with a connection to "gid" (Emacs can do it too). Add + ":idselect", which uses an "ID" database (made by "mkid") like "tselect". + + +Win32 GUI: +8 Make debug mode work while starting up (vim -D). Open console window for + the message and input? +7 GvimExt: when there are several existing Vims, move the list to a submenu. + (Mike McCollister) +8 When using "Edit with Vim" for one file it changes directory, when several + files are selected and using "Edit with single Vim" the directory isn't + changed. At least change directory when the path is the same for all + files. Perhaps just use the path of the first file or use the longest + common part of the path. +8 Add font argument to set the lfCharSet. (Bobcik) +8 Somehow automatically detect the system language and set $LANG, so that + gettext and menus work. +8 Could keep console open to run multiple commands, to avoid the need to hit + return in every console. + Also: Look at how Emacs does run external commands: + http://www.cs.washington.edu/homes/voelker/ntemacs.html. +8 Need a separate PopUp menu for modeless selection. Need two new commands: + Copy selection to clipboard, Paste selection (as typed text). +8 Support copy/paste for other file formats. At least HTML, perhaps RTF. + Add "copy special" and "paste special" commands? +7 Use different default colors, to match the current Windows color scheme. + Sys_WindowText, Sys_Window, etc. (Lionel Schaffhauser) +7 Use <C-Tab> to cycle through open windows (e.g., the find dialog). +7 <Esc> should close a dialog. +7 Keep the console for external commands open. Don't wait for a key to be + hit. Re-open it when the user has closed it anyway. Or use a prepended + command: ":nowait {cmd}", or ":quiet", which executes {cmd} without any + prompts. +7 Should be able to set an option so that when you double click a file that + is associated with Vim, you can either get a new instance of Vim, or have + the file added into an already running Vim. +7 The "-P" argument only works for the current codepage. Use wide + functions to find the window title. + + +GUI: +8 Make inputdialog() work for Photon, Amiga. +- <C--> cannot be mapped. Should be possible to recognize this as a + normal "-" with the Ctrl modifier. +7 Implement ":popup" for other systems than Windows. +8 Implement ":tearoff" for other systems than Win32 GUI. +6 Implement ":untearoff": hide a torn-off menu. +8 When using the scrollbar to scroll, don't move the cursor position. When + moving the cursor: scroll to the cursor position. +9 Make <S-Insert> paste from the clipboard by default. (Kunze) +7 Menu local to a buffer, like mappings. Or local to a filetype? +8 In Buffers menu, add a choice whether selecting a buffer opens it in the + current window, splits the window or uses ":hide". +8 Dragging the mouse pointer outside of a Vim Window should make the text + scroll. Return a value from gui_send_mouse_event() to the machine + specific code to indicate the time in which the event should be repeated. +8 Make it possible to ignore a mouse click when it's used to give Vim (gvim) + window focus. Also when a mouse click is used to bring a window to front. +8 Make the split into system independent code and system specific code more + explicit. There are too many #ifdefs in gui.c. + If possible, separate the Vim code completely from the GUI code, to allow + running them in separate processes. +7 X11: Support cursorColor resource and "-cr" argument. +8 X11 (and others): CTRL-; is not different from ';'. Set the modifier mask + to include CTRL for keys where CTRL produces the same ASCII code. +7 Add some code to handle proportional fonts on more systems? Need to draw + each character separately (like xterm). Also for when a double-width font + is not exactly double-width. (Maeda) +8 Should take font from xterm where gvim was started (if no other default). +8 Selecting font names in X11 is difficult, make a script or something to + select one. +8 Visual highlighting should keep the same font (bold, italic, etc.). +8 Add flag to 'guioptions' to not put anything in the clipboard at all? +8 Should support a way to use keys that we don't recognize yet. Add a + command that adds entries to special_keys somehow. How do we make this + portable (X11, Win32, ..)? +7 Add a flag to 'guioptions' that tells not to remove inactive menu items. + For systems where greying-out or removing menu items is very slow. The + menu items would remain visibly normally, but not do anything. +7 Add ":minimize" and ":maximize", which iconize the window and back. + Useful when using gvim to run a script (e.g. 2html.vim). +7 X11: Is it possible to free allocated colors, so that other programs can + use them again? Otherwise, allow disabling allocating the default colors. + Or allocate an own colormap (check UAE). With an option to use it. For + the commandline, "-install" is mostly used for X11 programs. +7 Add command line argument for "gvim" not to start the GUI. Sort of the + inverse of "vim -g". (Vikas) +7 Should support multi-column menus. +- Should add option for where to put the "Help" menu: like Motif at the far + right, or with the other menus (but still at the right). +- Add menu item to "Keep Insert mode". +8 ":mkgvimrc" command, that includes menus. +6 Big change: Move GUI to separate program "vimgui", to make startup of vim a + lot faster, but still be able to do "vim -g" or ":gui". +7 More explicit mouse button binding instead of 'mousemodel'? +7 Add option to set the position of the window on the screen. 'windowpos', + which has a value of "123,456": <x>,<y>. + Or add a command, like ":winsize"? +7 Add toolbar for more GUIs. +8 Make it possible to use "amenu icon=BuiltIn##", so that the toolbar item + name can be chosen free. +7 Make it possible to put the toolbar on top, left, right and/or bottom of + the window? Allows for softkey-like use. +6 Separate the part of Vim that does the editing from the part that runs the + GUI. Communicate through a pseudo-tty. Vim starts up, creates a + pty that is connected to the terminal. When the GUI starts, the pty is + reconnected to the GUI process. When the GUI stops, it is connected to + the terminal again. Also use the pty for external processes, it looks + like a vt100 terminal to them. Vim uses extra commands to communicate GUI + things. +7 Motif: For a confirm() dialog <Enter> should be ignored when no default + button selected, <Esc> should close the dialog. +7 When using a pseudo-tty Vim should behave like some terminal (vt52 looks + simple enough). Terminal codes to/from shell should be translated. +- Would it be useful to be able to quit the GUI and go back to the terminal + where it was started from? +7 Support "-visual <type>" command line argument. + + +Autocommands: +9 Rework the code from FEAT_OSFILETYPE for autocmd-osfiletypes to use + 'filetype'. Only for when the current buffer is known. +- Put autocommand event names in a hashtable for faster lookup? +8 When the SwapExists event is triggered, provide information about the + swap file, e.g., whether the process is running, file was modified, etc. + Must be possible to check the situation that it's probably OK to delete + the swap file. (Marc Merlin) +8 When all the patterns for an event are "*" there is no need to expand + buffer names to a full path. This can be slow for NFS. +7 For autocommand events that trigger multiple times per buffer (e.g., + CursorHold), go through the list once and cache the result for a specific + buffer. Invalidate the cache when adding/deleting autocommands or + changing the buffer name. +7 Add TagJump event: do something after jumping to a tag. +8 Add "TagJumpFile" autocommand: When jumping to another file for a tag. + Can be used to open "main.c.gz" when "main.c" isn't found. +8 Use another option than 'updatetime' for the CursorHold event. The two + things are unrelated for the user (but the implementation is more + difficult). +7 Add autocommand event for when a buffer cannot be abandoned. So that the + user can define the action taking (autowrite, dialog, fail) based on the + kind of file. (Yakov Lerner) Or is BufLeave sufficient? +8 Autocommand for when modified files have been found, when getting input + focus again (e.g., FileChangedFocus). + Check when: getting focus, jumping to another buffer, ... +7 Autocommand for when an option is changed. Match buffer name or option + name? +8 Autocommands should not change registers. And marks? And the jumplist? + And anything else? Add a command to save and restore these things. +8 Add autocommands, user functions and user commands to ":mkvimrc". +6 Add KeymapChanged event, so that the effects of a different keymap can be + handled (e.g., other font) (Ron Aaron) +7 When trying to open a directory, trigger an OpenDirectory event. +7 Add file type in front of file pattern: <d> for directory, <l> for link, + <x> for executable, etc. With commas to separate alternatives. The + autocommand is only executed when both the file type AND the file pattern + match. (Leonard) +5 Add option that specifies extensions which are to be discarded from the + file name. E.g. 'ausuffix', with ".gz,.orig". Such that file.c.gz will + trigger the "*.c" autocommands. (Belabas) +7 Add something to break the autocommands for the current event, and for + what follows. Useful for a "BufWritePre" that wants to avoid writing the + file. +8 When editing "tt.gz", which is in DOS format, 'fileformat' stays at + "unix", thus writing the file changes it. Somehow detect that the read + command used dos fileformat. Same for 'fileencoding'. +- Add events to autocommands: + Error - When an error happens + NormalEnter - Entering Normal mode + ReplaceEnter - Entering Replace mode + CmdEnter - Entering Cmdline mode (with type of cmdline to allow + different mapping) + VisualEnter - Entering Visual mode + *Leave - Leaving a mode (in pair with the above *Enter) + VimLeaveCheck - Before Vim decides to exit, so that it can be cancelled + when exiting isn't a good idea. + CursorHoldC - CursorHold while command-line editing + WinMoved - when windows have been moved around, e.g, ":wincmd J" + CmdUndefined - Like FuncUndefined but for user commands. + SearchPost - After doing a search command (e.g. to do "M") + PreDirChanged/PostDirChanged + - Before/after ":cd" has been used (for changing the + window title) + ShutDown - when the system is about to shut down + InsertCharPost - user typed a character in Insert mode, after inserting + the char. + BufModified - When a buffer becomes modified, or unmodified (for + putting a [+] in the window title or checking out the + file from CVS). + BufFirstChange - When making a change, when 'modified' is set. Can be + used to do a :preserve for remote files. + BufChange - after a change was made. Set some variables to indicate + the position and number of inserted/deleted lines, so + that marks can be updated. HierAssist has patch to add + BufChangePre, BufChangePost and RevertBuf. (Shah) + ViewChanged - triggered when the text scrolls and when the window size + changes. + WinResized - After a window has been resized + WinClose - Just before closing a window +- Write the file now and then ('autosave'): + *'autosave'* *'as'* *'noautosave'* *'noas'* + 'autosave' 'as' number (default 0) + Automatically write the current buffer to file N seconds after the + last change has been made and when |'modified'| is still set. + Default: 0 = do not autosave the buffer. + Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make + them save the file itself besides the swapfile. + + +Omni completion: +- Add a flag to 'complete' to be able to do omni completion with CTRL-N (and + mix it with other kinds of completion). +- Ideas from the Vim 7 BOF at SANE: + - For interpreted languages, use the interpreter to obtain information. + Should work for Java (Eclipse does this), Python, Tcl, etc. + Richard Emberson mentioned working on an interface to Java. + - Check Readline for its completion interface. +- Ideas from others: + http://www.wholetomato.com/ + http://www.vim.org/scripts/script.php?script_id=747 + http://sourceforge.net/projects/insenvim + or http://insenvim.sourceforge.net + Java, XML, HTML, C++, JSP, SQL, C# + MS-Windows only, lots of dependencies (e.g. Perl, Internet + explorer), uses .dll shared libraries. + For C++ uses $INCLUDE environment var. + Uses Perl for C++. + Uses ctags to find the info: + ctags -f $allTagsFile --fields=+aiKmnsSz --language-force=C++ --C++-kinds=+cefgmnpsut-dlux -u $files + www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang) + IComplete: http://www.vim.org/scripts/script.php?script_id=1265 + and http://stud4.tuwien.ac.at/~e0125672/icomplete/ + http://cedet.sourceforge.net/intellisense.shtml (for Emacs) + Ivan Villanueva has something for Java. + Emacs: http://www.xref-tech.com/xrefactory/more_c_completion.html + Completion in .NET framework SharpDevelop: http://www.icsharpcode.net +- Pre-expand abbreviations, show which abbrevs would match? + + +Insert mode completion/expansion: +- GUI implementation of the popup menu. +7 When searching in other files the name flash by, too fast to read. Only + display a name every second or so, like with ":vimgrep". +7 When expanding file names with an environment variable, add the match with + the unexpanded var. So $HOME/tm expands to "/home/guy/tmp" and + "$HOME/tmp" +8 When there is no word before the cursor but something like "sys." complete + with "sys.". Works well for C and similar languages. +9 ^X^L completion doesn't repeat correctly. It uses the first match with + the last added line, instead of continuing where the last match ended. + (Webb) +8 Add option to set different behavior for Insert mode completion: + - ignore/match case + - different characters than 'iskeyword' +8 Add option 'isexpand', containing characters when doing expansion (so that + "." and "\" can be included, without changing 'iskeyword'). (Goldfarb) + Also: 'istagword': characters used for CTRL-]. + When 'isexpand' or 'istagword' are empty, use 'iskeyword'. + Alternative: Use a pattern so that start and end of a keyword can be + defined, only allow dash in the middle, etc. +8 Add a command to undo the completion, go back to the original text. +7 Completion of an abbreviation: Can leave letters out, like what Instant + text does: www.textware.com +8 Use the class information in the tags file to do context-sensitive + completion. After "foo." complete all member functions/variables of + "foo". Need to search backwards for the class definition of foo. + Should work for C++ and Java. + Even more context would be nice: "import java.^N" -> "io", "lang", etc. +7 When expanding $HOME/dir with ^X^F keep the $HOME (with an option?). +7 Add CTRL-X command in Insert mode like CTRL-X CTRL-N, that completes WORDS + instead of words. +8 Add CTRL-X CTRL-R: complete words from register contents. +8 Add completion of previously inserted texts (like what CTRL-A does). + Requires remembering a number of insertions. +8 Add 'f' flag to 'complete': Expand file names. + Also apply 'complete' to whole line completion. +- Add a flag to 'complete' to only scan local header files, not system + header files. (Andri Moell) +- Make it possible to search include files in several places. Use the + 'path' option? Can this be done with the dictionary completion (use + wildcards in the file name)? +- Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted). +- Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?). +- Set a mark at the position where the match was found (file mark, could + be in another file). +- Add CTRL-A command in CTRL-X mode: show all matches. +- Make CTRL-X CTRL-L use the 'complete' option? +- Add command in CTRL-X mode to add following words to the completed string + (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W) +- CTRL-X CTRL-F: Use 'path' to find completions. +- CTRL-X CTRL-F: Option to use forward slashes on MS-Windows? +- CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly) +- Allow listing all matches in some way (and picking one from the list). + + +Command line editing: +7 Add commands (keys) to delete from the cursor to the end of the command + line. +8 Custom completion of user commands can't use the standard completion + functions. Add a hook to invoke a user function that returns the type of + completion to be done: "file", "tag", "custom", etc. +- Add flags to 'whichwrap' for command line editing (cursor right at end of + lines wraps to start of line). +- Make editing the command line work like Insert mode in a single-line view + on a buffer that contains the command line history. But this has many + disadvantages, only implement it when these can be solved. Elvis has run + into these, see remarks from Steve (~/Mail/oldmail/kirkendall/in.00012). + - Going back in history and editing a line there would change the history. + Would still need to keep a copy of the history elsewhere. Like the + cmdwin does now already. + - Use CTRL-O to execute one Normal mode command. How to switch to normal + mode for more commands? <Esc> should cancel the command line. CTRL-T? + - To allow "/" and "= need to recursively call getcmdline(), overwrite the + cmdline. But then we are editing a command-line again. How to avoid + that the user gets confused by the stack of command lines? + - Use edit() for normal cmdline editing? Would have to integrate + getcmdline() into edit(). Need to solve conflicts between Insert mode + and Command-line mode commands. Make it work like Korn shell and tcsh. + Problems: + - Insert: completion with 'wildchar' + - Insert: use cmdline abbreviations + - Insert: CTRL-D deletes indent instead of listing matches + - Normal: no CTRL-W commands + - Normal: no ":" commands? + - Normal: allow Visual mode only within one line. + - where to show insert/normal mode message? Change highlighting of + character in first column? + - Implementation ideas: + - Set "curwin" and "curbuf" to the command line window and buffer. + - curwin->w_topline is always equal to curwin->w_cursor.lnum. + - never set 'number', no folding, etc. No status line. + - sync undo after entering a command line? + - use NV_NOCL flag for commands that are not allowed in Command-line + Mode. + + +Command line completion: +8 Change expand_interactively into a flag that is passed as an argument. +8 With command line completion after '%' and '#', expand current/alternate + file name, so it can be edited. Also with modifiers, such as "%:h". +8 When completing command names, either sort them on the long name, or list + them with the optional part inside []. +8 Add an option to ignore case when doing interactive completion. So that + ":e file<Tab>" also lists "Filelist" (sorted after matching case matches). +7 Completion of ":map x ": fill in the current mapping, so that it can be + edited. (Sven Guckes) +- For 'wildmenu': Simplify "../bar" when possible. +- When using <Up> in wildmenu mode for a submenu, should go back to the + current menu, not the first one. E.g., ":emenu File.Save<Up>". +8 When using backtick expansion, the external command may write a greeting + message. Add an option or commands to remove lines that match a regexp? +7 When listing matches of files, display the common path separately from the + file names, if this makes the listing shorter. (Webb) +- Add command line completion for ":ilist" and friends, show matching + identifiers (Webb). +8 Add command line completion for "old value" of a command. ":args <key>" + would result in the current list of arguments, which you can then edit. +7 Add command line completion with CTRL-X, just like Insert mode completion. + Useful for ":s/word/xx/". +- Add command to go back to the text as it was before completion started. + Also to be used for <Up> in the command line. +- Add 'wildlongest' option: Key to use to find longest common match for + command line completion (default CTRL-L), like 'wildchar'. (Cregut) + Also: when there are several matches, show them line a CTRL-D. + + +Command line history: +- Add "KeyWasTyped" flag: It's reset before each command and set when a + character from the keyboard is consumed. Value is used to decide to put a + command line in history or not. Put line in history if it didn't + completely resulted from one mapping. +- When using ":browse", also put the resulting edit command in the history, + so that it can be repeated. (Demirel) + + +Insert mode: +9 When 'autoindent' is set, hitting <CR> twice, while there is text after + the cursor, doesn't delete the autoindent in the resulting blank line. + (Rich Wales) This is Vi compatible, but it looks like a bug. +8 When using CTRL-O in Insert mode, then executing an insert command + "a" or "i", should we return to Insert mode after <Esc>? (Eggink) + Perhaps it can be allowed a single time, to be able to do + "<C-O>10axyz<Esc>". Nesting this further is confusing. + ":map <F2> 5aabc<Esc>" works only once from Insert mode. +8 When using CTRL-G CTRL-O do like CTRL-\ CTRL-O, but when returning with + the cursor in the same position and the text didn't change continue the + same change, so that "." repeats the whole insert. +7 Use CTRL-G <count> to repeat what follows. Useful for inserting a + character multiple times or repeating CTRL-Y. +- Make 'revins' work in Replace mode. +9 Can't use multi-byte characters for 'matchpairs'. +7 Use 'matchpairs' for 'showmatch': When inserting a character check if it + appears in the rhs of 'matchpairs'. +- In Insert mode (and command line editing?): Allow undo of the last typed + character. This is useful for CTRL-U, CTRL-W, delete and backspace, and + also for characters that wrap to the next line. + Also: be able to undo CTRL-R (insert register). + Possibly use 'backspace'="whole" for a mode where at least a <CR> that + inserts autoindent is undone by a single <BS>. +- Use CTRL-G in Insert mode for an extra range of commands, like "g" in + Normal mode. +- Make 'paste' work without resetting other options, but override their + value. Avoids problems when changing files and modelines or autocommands + are used. +- When typing CTRL-V and a digit higher than 2, only expect two digits. +- Insert binary numbers with CTRL-V b. +- Make it possible to undo <BS>, <C-W> and <C-U>. Bash uses CTRL-Y. + + +'cindent', 'smartindent': +9 Wrapping a variable initialization should have extra indent: + char * veryLongName = + "very long string" + Also check if "cino=+10" is used correctly. +8 Lisp indenting: "\\" confuses the indenter. (Dorai Sitaram, 2006 May 17) +8 Why are continuation lines outside of a {} block not indented? E.g.: + long_type foo = + value; +8 Java: Inside an anonymous class, after an "else" or "try" the indent is + too small. (Vincent Bergbauer) + Problem of using {} inside (), 'cindent' doesn't work then. +8 In C++ it's possible to have {} inside (): (Kirshna) + func( + new String[] { + "asdf", + "asdf" + } + ); +8 In C++ a function isn't recognized inside a namespace: + (Chow Loong Jin) + namespace { + int + func(int arg) { + } + } +6 Add 'cino' flag for this function argument layout: (Spencer Collyer) + func( arg1 + , arg2 + , arg3 + ); +7 Add separate "(0" option into inside/outside a function (Zellner): + func( + int x) // indent like "(4" + { + if (a + && b) // indent like "(0" +9 Using "{" in a comment: (Helmut Stiegler) + if (a) + { + if (b) + { + // { + } + } <-- this is indented incorrect + Problem is that find_start_brace() checks for the matching brace to be in + a comment, but not braces in between. Requires adding a comment check to + findmatchlimit(). +- Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the + indent to 0 should be switched on/off. +7 Support ANSI style function header, with each argument on its own line. +- "[p" and "]p" should use 'cindent' code if it's on (only for the first + line). +- Add option to 'cindent' to set indent for comments outside of {}? +- Make a command to line up a comment after a code line with a previous + comment after a code line. Can 'cindent' do this automatically? +- When 'cindent'ing a '}', showmatch is done before fixing the indent. It + looks better when the indent is fixed before the showmatch. (Webb) +- Add option to make indenting work in comments too (for commented-out + code), unless the line starts with "*". +- Don't use 'cindent' when doing formatting with "gq"? +- When formatting a comment after some text, insert the '*' for the new line + (indent is correct if 'cindent' is set, but '*' doesn't get inserted). +8 When 'comments' has both "s1:/*,mb:*,ex:*/" and "s1:(*,mb:*,ex:*)", the + 'x' flag always uses the first match. Need to continue looking for more + matches of "*" and remember all characters that could end the comment. +- For smartindent: When typing 'else' line it up with matching 'if'. +- 'smartindent': allow patterns in 'cinwords', for e.g. TeX files, where + lines start with "\item". +- Support this style of comments (with an option): (Brown) + /* here is a comment that + is just autoindented, and + nothing else */ +- Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi". +7 Use Tabs for the indent of starting lines, pad with spaces for + continuation lines. Allows changing 'tabstop' without messing up the + indents. + 'keeptabs': when set don't change the tabs and spaces used for indent, + when the indent remains the same or increases. + + +Java: +8 Can have {} constructs inside parens. Include changes from Steve + Odendahl? +8 Recognize "import java.util.Vector" and use $CLASSPATH to find files for + "[i" commands and friends. +- For files found with 'include': handle "*" in included name, for Java. + (Jason) +- How to make a "package java.util" cause all classes in the package to be + searched? Also for "import java.util.*". (Mark Brophy) + + +'comments': +8 When formatting C comments that are after code, the "*" isn't repeated + like it's done when there is no code. And there is no automatic wrapping. + Recognize comments that come after code. Should insert the comment leader + when it's "#" or "//". + Other way around: when a C command starts with "* 4" the "*" is repeated + while it should not. Use syntax HL comment recognition? +7 When using "comments=fg:--", Vim inserts three spaces for a new line. + When hitting a TAB, these spaces could be removed. +7 The 'n'esting flag doesn't do the indenting of the last (rightmost) item. +6 Make strings in 'comments' option a RE, to be able to match more + complicated things. (Phillipps) Use a special flag to indicate that a + regexp is used. +8 Make the 'comments' option with "/* * */" lines only repeat the "*" line + when there is a "/*" before it? Or include this in 'cindent'? + + +Virtual edit: +8 Make the horizontal scrollbar work to move the text further left. +7 Allow specifying it separately for Tabs and beyond end-of-line? + + +Text objects: +8 Add text object for fold, so that it can be yanked when it's open. +8 Add test script for text object commands "aw", "iW", etc. +8 Add text object for part of a CamelHumpedWord and under_scored_word. + (Scott Graham) "ac" and "au"? +8 Add a text object for any kind of quoting, also with multi-byte + characters. Option to specify what quotes are recognized (default: all) + use "aq" and "iq". Use 'quotepairs' to define pairs of quotes, like + 'matchpairs'? +8 Add text object for any kind of parens, also multi-byte ones. +7 Add text object for current search pattern: "a/" and "i/". Makes it + possible to turn text highlighted for 'hlsearch' into a Visual area. +8 Add a way to make an ":omap" for a user-defined text object. Requires + changing the starting position in oap->start. +8 Add "gp" and "gP" commands: insert text and make sure there is a single + space before it, unless at the start of the line, and after it, unless at + the end of the line or before a ".". +7 Add objects with backwards extension? Use "I" and "A". Thus "2dAs" + deletes the current and previous sentence. (Jens Paulus) +7 Add "g{" and "g}" to move to the first/last character of a paragraph + (instead of the line just before/after a paragraph as with "{" and "}"). +6 Ignore comment leaders for objects. Make "das" work in reply-email. +5 Make it possible to use syntax group matches as a text object. For + example, define a "ccItem" group, then do "da<ccItem>" to delete one. + Or, maybe just define "dai", delete-an-item, to delete the syntax item the + cursor is on. + + +Select mode: +8 In blockwise mode, typed characters are inserted in front of the block, + backspace deletes a column before the block. (Steve Hall) +7 Alt-leftmouse starts block mode selection in MS Word. + See http://vim.wikia.com/wiki/Use_Alt-Mouse_to_select_blockwise. +7 Add Cmdline-select mode. Like Select mode, but used on the command line. + - Change gui_send_mouse_event() to pass on mouse events when 'mouse' + contains 'C' or 'A'. + - Catch mouse events in ex_getln.c. Also shift-cursor, etc., like in + normal_cmd(). + - remember start and end of selection in cmdline_info. + - Typing text replaces the selection. + + +Visual mode: +8 Support using "." in Visual mode. Use the operator applied to the Visual + selection, if possible. +- When dragging the Visual selection with the mouse and 'scrolloff' is zero, + behave like 'scrolloff' is one, so that the text scrolls when the pointer + is in the top line. +- Displaying size of Visual area: use 24-33 column display. + When selecting multiple lines, up to about a screenful, also count the + characters. +8 When using "I" or "A" in Visual block mode, short lines do not get the new + text. Make it possible to add the text to short lines too, with padding + where needed. +7 With a Visual block selected, "2x" deletes a block of double the width, + "3y" yanks a block of triple width, etc. +7 When selecting linewise, using "itext" should insert "text" at the start + of each selected line. +8 What is "R" supposed to do in Visual mode? +8 Make Visual mode local to the buffer. Allow changing to another buffer. + When starting a new Visual selection, remove the Visual selection in any + other buffer. (Ron Aaron) +8 Support dragging the Visual area to drop it somewhere else. (Ron Aaron, + Ben Godfrey) +7 Support dragging the Visual area to drop it in another program, and + receive dropped text from another program. (Ben Godfrey) +7 With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of + a <CR>. The entered lines are repeated over the Visual area. +7 CTRL-V :s should substitute only in the block, not to whole lines. (David + Young is working on this) +7 Filtering a block should only apply to the block, not to the whole lines. + When the number of lines is increased, add lines. When decreased, pad with + spaces or delete? Use ":`<,`>" on the command line. +8 After filtering the Visual area, make "gv" select the filtered text? + Currently "gv" only selects a single line, not useful. +7 Don't move the cursor when scrolling? Needed when the selection should + stay the same. Scroll to the cursor at any movement command. With an + option! +7 In Visual block mode, need to be able to define a corner on a position + that doesn't have text? Also: when using the mouse, be able to select + part of a TAB. Even more: Add a mode where the cursor can be on a screen + position where there is no text. When typing, add spaces to fill the gap. + Other solution: Always use curswant, so that you can move the cursor to + the right column, and then use up/down movements to select the line, + without changing the column. +6 ":left" and ":right" should work in Visual block mode. +7 CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the + current buffer. +7 CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area. +6 In non-Block mode, "I" should insert the same text in front of each line, + before the first non-blank, "gI" in column 1. +6 In non-Block mode, "A" should append the same text after each line. +6 When in blockwise visual selection (CTRL-V), allow cursor to be placed + right of the line. Could also allow cursor to be placed anywhere on a TAB + or other special character. +6 Add commands to move selected text, without deselecting. + + +More advanced repeating commands: +- Add "." command for visual mode: redo last visual command (e.g. ":fmt"). +7 Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher) Somehow remember + the command line so that it can be repeated? +- Add command to repeat last movement. Including count. +- Add "." command after operator: repeat last command of same operator. E.g. + "c." will repeat last change, also when "x" used since then (Webb). + "y." will repeat last yank. + "c2." will repeat the last but one change? + Also: keep history of Normal mode commands, add command to list the history + and/or pick an older command. +- History stack for . command? Use "g." command. + + +Mappings and Abbreviations: +8 When "0" is mapped (it is a movement command) this mapping should not be + used after typing another number, e.g. "20l". (Charles Campbell) + Is this possible without disabling the mapping of the following command? +8 Should mapping <C-A> and <C-S-A> both work? +7 ":abbr b byte", append "b " to an existing word still expands to "byte". + This is Vi compatible, but can we avoid it anyway? +8 To make a mapping work with a prepended "x to select a register, store the + last _typed_ register name and access it with "&. +8 Add ":amap", like ":amenu". +7 Add a mapping that works always, for remapping the keyboard. +8 Add ":cab!", abbreviations that only apply to Command-line mode and not to + entering search strings. +8 Add a flag to ":abbrev" to eat the character that triggers the + abbreviation. Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and + not the <Space>. +8 Give a warning when using CTRL-C in the lhs of a mapping. It will never + (?) work. +8 Add a way to save a current mapping and restore it later. Use a function + that returns the mapping command to restore it: mapcmd()? mapcheck() is + not fool proof. How to handle ambiguous mappings? +7 Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation? +7 When someone tries to unmap with a trailing space, and it fails, try + unmapping without the trailing space. Helps for ":unmap xx | unmap yy". +6 Context-sensitive abbreviations: Specify syntax group(s) in which the + abbreviations are to be used. +- Add mappings that take arguments. Could work like the ":s" command. For + example, for a mouse escape sequence: + :mapexp <Esc>{\([0-9]*\),\([0-9]*\); H\1j\2l +- Add optional <Number> argument for mappings: + :map <Number>q ^W^W<Number>G + :map <Number>q<Number>t ^W^W<Number1-1>G<Number2>l + :map q<Char> :s/<Char>/\u\0/g + Or implicit: + :map q <Register>d<Number>$ +- Add command to repeat a whole mapping ("." only repeats the last change in + a mapping). Also: Repeat a whole insert command, including any mappings + that it included. Sort-of automatic recording? +- Include an option (or flag to 'cpoptions') that makes errors in mappings + not flush the rest of the mapping (like nvi does). +- Use context sensitiveness of completion to switch abbreviations and + mappings off for :unab and :unmap. +6 When using mappings in Insert mode, insert characters for incomplete + mappings first, then remove them again when a mapping matches. Avoids + that characters that are the start of some mapping are not shown until you + hit another character. +- Add mappings for replace mode: ":rmap". How do we then enter mappings for + non-replace Insert mode? +- Add separate mappings for Visual-character/block/line mode? +- Add 'mapstop' command, to stop recursive mappings. +- List mappings that have a raw escape sequence both with the name of the key + for that escape sequence (if there is one) and the sequence itself. +- List mappings: Once with special keys listed as <>, once with meta chars as + <M-a>, once with the byte values (octal?). Sort of "spell mapping" command? +- When entering mappings: Add the possibility to enter meta keys like they + are displayed, within <>: <M-a>, <~@> or <|a>. +- Allow multiple arguments to :unmap. +- Command to show keys that are not used and available for mapping + ":freekeys". +- Allow any character except white space in abbreviations lhs (Riehm). + + +Incsearch: +- Add a limit to the number of lines that are searched for 'incsearch'? +- When no match is found and the user types more, the screen is redrawn + anyway. Could skip that. Esp. if the line wraps and the text is scrolled + up every time. +- Temporarily open folds to show where the search ends up. Restore the + folds when going to another line. +- When incsearch used and hitting return, no need to search again in many + cases, saves a lot of time in big files. (Slootman wants to work on this?) + When not using special characters, can continue search from the last match + (or not at all, when there was no match). See oldmail/webb/in.872. +- With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other + key to copy matched word to search pattern (Alexander Schmid). + + +Searching: +9 Should have an option for :vimgrep to find lines without a match. +8 Add "g/" and "gb" to search for a pattern in the Visually selected text? + "g?" is already used for rot13. + The vis.vim script has a ":S" command that does something like this. + Can use "g/" in Normal mode, uses the '< to '> area. + Use "&/" for searching the text in the Visual area? +9 Add "v" offset: "/pat/v": search for pattern and start Visual mode on the + matching text. +8 Add a modifier to interpret a space like "\_s\+" to make it much easier to + search for a phrase. +8 Add a mechanism for recursiveness: "\@(([^()]*\@g[^()]*)\)". \@g stands + for "go recursive here" and \@( \) marks the recursive part. + Perl does it this way: + $paren = qr/ \(( [^()] | (??{ $paren }) )* \) /x; + Here $paren is evaluated when it's encountered. This is like a regexp + inside a regexp. In the above terms it would be: + \@((\([^()]\|\@g\)*)\) +8 Show the progress every second. Could use the code that checks for CTRL-C + to find out how much time has passed. Or use SIGALRM. Where to show the + number? +8 When using an expression for ":s", set the match position in a v: + variable. So that you can do ":%s/^/\=v:lnum/" to put a line number + before each line. +7 Support for approximate-regexps to find similar words (agrep + http://www.tgries.de/agrep/ tre: http://laurikari.net/tre/index.html). +8 Add an item for a big character range, so that one can search for a + chinese character: \z[234-1234] or \z[XX-YY] or \z[0x23-0x234]. +7 Add an item stack to allow matching (). One side is "push X on + the stack if previous atom matched". Other side is "match with top of + stack, pop it when it matches". Use "\@pX" and "\@m"? + Example: \((\@p).\{-}\@m\)* +7 Add an option to accept a match at the cursor position. Also for + search(). (Brett) +7 Add a flag to "/pat/" to discard an error. Useful to continue a mapping + when a search fails. Could be "/pat/E" (e is already used for end offset). +7 Add pattern item to use properties of Unicode characters. In Perl it's + "\p{L}" for a letter. See Regular Expression Pocket Reference. +8 Would it be possible to allow ":23,45/pat/flags" to search for "pat" in + lines 23 to 45? Or does this conflict with Ex range syntax? +8 Allow identical pairs in 'matchpairs'. Restrict the search to the current + line. +7 Allow longer pairs in 'matchpairs'. Use ~/vim/macros/matchit.vim as an + example. +8 Make it possible to define the character that "%" checks for in + #if/#endif. For nmake it's !if/!endif. +- For "%" command: set hierarchy for which things include other things that + should be ignored (like "*/" or "#endif" inside /* */). + Also: use "%" to jump from start to end of syntax region and back. + Alternative: use matchit.vim +8 "/:/e+1" gets stuck on a match at the end of the line. Do we care? +8 A pattern like "\([^a]\+\)\+" takes an awful long time. Recognize that + the recursive "\+" is meaningless and optimize for it. + This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$". +7 Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and + "\d". +7 Add a way to specify characters in <C-M> or <Key> form. Could be + \%<C-M>. +8 Add an argument after ":s/pat/str/" for a range of matches. For example, + ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line. +8 When 'iskeyword' is changed the matches from 'hlsearch' may change. (Benji + Fisher) redraw if some options are set while 'hlsearch' is set? +8 Add an option not to use 'hlsearch' highlighting for ":s" and ":g" + commands. (Kahn) It would work like ":noh" is used after that command. + Also: An extra flag to do this once, and a flag to keep the existing + search pattern. +- Make 'hlsearch' a local/global option, so that it can be disabled in some + of the windows. +- Add \%h{group-name}; to search for a specific highlight group. + Add \%s{syntax-group}; to search for a specific syntax group. +- Support Perl regexp. Use PCRE (Perl Compatible RE) package. (Shade) + Or translate the pattern to a Vim one. + Don't switch on with an option for typed commands/mappings/functions, it's + too confusing. Use "\@@" in the pattern, to avoid incompatibilities. +8 Add a way to access the last substitute text, what is used for ":s//~/". + Can't use the ~ register, it's already used for drag & drop. +- Remember flags for backreferenced items, so that "*" can be used after it. + Check with "\(\S\)\1\{3}". (Hemmerling) +8 Flags that apply to the whole pattern. + This works for all places where a regexp is used. + Add "\q" to not store this pattern as the last search pattern? +- Add flags to search command (also for ":s"?): + i ignore case + I use case + p use Perl regexp syntax (or POSIX?) + v use Vi regexp syntax + f forget pattern, don't keep it for "n" command + F remember pattern, keep it for "n" command + Perl uses these too: + e evaluate the right side as an expression (Perl only) + m multiple line expression (we don't need it) + o compile only once (Perl only) + s single line expression (we don't need it) + x extended regexp (we don't need it) + When used after ":g" command, backslash needed to avoid confusion with the + following command. + Add 'searchflags' for default flags (replaces 'gdefault'). +- Add command to display the last used substitute pattern and last used + pattern. (Margo) Maybe make it accessible through a register (like "/ + for search string)? +7 Use T-search algorithm, to speed up searching for strings without special + characters. See C't article, August 1997. +- Add 'fuzzycase' option, so that case doesn't matter, and '-' and '_' are + equivalent (for Unix filenames). +- Add 'v' flag to search command: enter Visual mode, with the matching text + as Visual area. (variation on idea from Bertin) +- Searching: "/this//that/" should find "that" after "this". +- Add global search commands: Instead of wrapping at the end of the buffer, + they continue in another buffer. Use flag after search pattern: + a for the next file in the argument list + f for file in the buffer list + w for file edited in a window. + e.g. "/pat/f". Then "n" and "N" work through files too. "f" flag also for + ":s/pat/foo/f"??? Then when 'autowrite' and 'hidden' are both not set, ask + before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No + Save-all/hide-All/Quit) ". +- ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler) +7 When searching with 'n' give message when getting back where the search + first started. Remember start of search in '/ mark. +7 Add option that scrolls screen to put cursor in middle of screen after + search always/when off-screen/never. And after a ":tag" command. Maybe + specify how many lines below the screen causes a redraw with the cursor in + the middle (default would be half a screen, zero means always). +6 Support multiple search buffers, so macros can be made without side + effects. +7 From xvim: Allow a newline in search patterns (also for :s, can delete + newline). Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc. + [not in xvim:] Add option to switch on matches crossing ONE line boundary. +7 Add ":iselect", a combination of ":ilist" and ":tselect". (Aaron) (Zellner) + Also ":dselect". + + +Undo: +9 ":gundo" command: global undo. Undoes changes spread over multiple files + in the order they were made. Also ":gredo". Both with a count. Useful + when tests fail after making changes and you forgot in which files. +9 After undo/redo, in the message show whether the buffer is modified or + not. +8 Use timestamps for undo, so that a version a certain time ago can be found + and info before some time/date can be flushed. 'undopersist' gives maximum + time to keep undo: "3h", "1d", "2w", "1y", etc. +8 Search for pattern in undo tree, showing when it happened and the text + state, so that you can jump to it. +8 Undo tree: visually show the tree somehow (Damian Conway) + Show only the leaves, indicating how many changed from the branch and the + timestamp? + Put branch with most recent change on the left, older changes get more + indent? +8 See ":e" as a change operation, find the changes and add them to the + undo info. Also be able to undo the "Reload file" choice for when a file + was changed outside of Vim. + Would require doing a diff between the buffer text and the file and + storing the differences. + Alternative: before reloading a buffer, store it somewhere. Keep a list + of about 10 last reloaded buffers. +- Make it possible to undo all the commands from a mapping, including a + trailing unfinished command, e.g. for ":map K iX^[r". +- When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not + possible, even when typing <Esc> immediately. (Grahn) Also for "i", "a", + etc. Postpone saving for undo until something is really inserted? +8 When Inserting a lot of text, it can only be undone as a whole. Make undo + sync points at every line or word. Could recognize the start of a new + word (white space and then non-white space) and backspacing. + Can already use CTRL-G u, but that requires remapping a lot of things. +8 Make undo more memory-efficient: Compare text before and after change, + only remember the lines that really changed. +7 Add undo for a range of lines. Can change these back to a previous + version without changing the rest of the file. Stop doing this when a + change includes only some of these lines and changes the line count. Need + to store these undo actions as a separate change that can be undone. +- For u_save() include the column number. This can be used to set '[ and ']. + And in the future the undo can be made more efficient (Webb). +- In out-of-memory situations: Free allocated space in undo, and reduce the + number of undo levels (with confirmation). +- Instead of [+], give the number of changes since the last write: [+123]. + When undoing to before the last write, change this to a negative number: + [-99]. +- With undo with simple line delete/insert: optimize screen updating. +- When executing macro's: Save each line for undo only once. +- When doing a global substitute, causing almost all lines to be changed, + undo info becomes very big. Put undo info in swap file?? + + +Buffer list: +7 Command to execute a command in another buffer: ":inbuf {bufname} {cmd}". + Also for other windows: ":inwin {winnr} {cmd}". How to make sure that + this works properly for all commands, and still be able to return to the + current buffer/window? E.g.: ":inbuf xxx only". +8 Add File.{recent_files} menu entries: Recently edited files. + Ron Aaron has a plugin for this: mru.vim. +8 Unix: Check all uses of fnamecmp() and fnamencmp() if they should check + inode too. +7 Add another number for a buffer, which is visible for the user. When + creating a new buffer, use the lowest number not in use (or the highest + number in use plus one?). +7 Offer some buffer selection from the command line? Like using ":ls" and + asking for a buffer number. (Zachmann) +- When starting to edit a file that is already in the buffer list, use the + file name argument for the new short file name. (Webb) +- Add an option to make ":bnext" and ":bprev" wrap around the end of the + buffer list. Also for ":next" and ":prev"? +7 Add argument to ":ls" which is a pattern for buffers to list. + E.g. ":ls *.c". (Thompson) +7 Add expansion of buffer names, so that "*.c" is expanded to all buffer + names. Needed for ":bdel *.c", ":bunload *.c", etc. +8 Support for <afile> where a buffer name is expected. +8 Some commands don't use line numbers, but buffer numbers. '$' + should then mean the number of the last buffer. E.g.: "4,$bdel". +7 Add an option to mostly use slashes in file names. Separately for + internal use and for when executing an external program? +8 Some file systems are case-sensitive, some are not. Besides + 'wildignorecase' there might be more parts inside + CASE_INSENSITIVE_FILENAME that are useful on Unix. + + +Swap (.swp) files: +8 If writing to the swap file fails, should try to open one in another + directory from 'dir'. Useful in case the file system is full and when + there are short file name problems. +8 Also use the code to try using a short file name for the backup and swap + file for the Win32 and Dos 32 bit versions. +8 When a file is edited by root, add $LOGNAME to know who did su. +8 When the edited file is a symlink, try to put the swap file in the same + dir as the actual file. Adjust FullName(). Avoids editing the same file + twice (e.g. when using quickfix). Also try to make the name of the backup + file the same as the actual file? + Use the code for resolve()? +7 When using 64 bit inode numbers, also store the top 32 bits. Add another + field for this, using part of bo_fname[], to keep it compatible. +7 When editing a file on removable media, should put swap file somewhere + else. Use something like 'r' flag in 'viminfo'. 'diravoid'? + Also: Be able to specify minimum disk space, skip directory when not + enough room. +7 Add a configure check for which directory should be used: /tmp, /var/tmp + or /var/preserve. +- Add an option to create a swap file only when making the first change to + the buffer. (Liang) Or only when the buffer is not read-only. +- Add option to set "umask" for backup files and swap files (Antwerpen). + 'backupumask' and 'swapumask'? Or 'umaskback' and 'umaskswap'? +- When editing a readonly file, don't use a swap file but read parts from the + original file. Also do this when the file is huge (>'maxmem'). We do + need to load the file once to count the number of lines? Perhaps keep a + cached list of which line is where. + + +Viminfo: +7 Can probably remove the code that checks for a writable viminfo file, + because we now do the chown() for root, and others can't overwrite someone + else's viminfo file. +8 When there is no .viminfo file and someone does "su", runs Vim, a + root-owned .viminfo file is created. Is there a good way to avoid this? + Perhaps check the owner of the directory. Only when root? +8 Add argument to keep the list of buffers when Vim is started with a file + name. (Schild) +8 Keep the last used directory of the file browser (File/Open menu). +8 Remember the last used register for "@@". +8 Remember the redo buffer, so that "." works after restarting. +8 Remember a list of last accessed files. To be used in the + "File.Open Recent" menu. Default is to remember 10 files or so. + Also remember which files have been read and written. How to display + this? +7 Also store the ". register (last inserted text). +7 Make it possible to store buffer names in viminfo file relative to some + directory, to make them portable over a network. (Aaron) +6 Store a snapshot of the currently opened windows. So that when quitting + Vim, and then starting again (without a file name argument), you see the + same files in the windows. Use ":mksession" code? +- Make marks present in .viminfo usable as file marks: Display a list of + "last visited files" and select one to jump to. + + +Modelines: +8 Before trying to execute a modeline, check that it looks like one (valid + option names). If it's very wrong, silently ignore it. + Ignore a line that starts with "Subject: ". +- Add an option to whitelist options that are allowed in a modeline. This + would allow careful users to use modelines, e.g., only allowing + 'shiftwidth'. +- Add an option to let modelines only set local options, not global ones + such as 'encoding'. +- When an option value is coming from a modeline, do not carry it over to + another edited file? Would need to remember the value from before the + modeline setting. +- Allow setting a variable from a modeline? Only allow using fixed strings, + no function calls, to avoid a security problem. +- Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for + .cpp files. +- Support the "abbreviate" command in modelines (Kearns). Careful for + characters after <Esc>, that is a security leak. +- Add option setting to ask user if he wants to have the modelines executed + or not. Same for .exrc in local dir. + + +Sessions: +8 DOS/Windows: ":mksession" generates a "cd" command where "aa\#bb" means + directory "#bb" in "aa", but it's used as "aa#bb". (Ronald Hoellwarth) +7 When there is a "help.txt" window in a session file, restoring that + session will not get the "LOCAL ADDITIONS" back. +8 With ":mksession" always store the 'sessionoptions' option, even when + "options" isn't in it. (St-Amant) +8 When using ":mksession", also store a command to reset all options to + their default value, before setting the options that are not at their + default value. +7 With ":mksession" also store the tag stack and jump history. (Michal + Malecki) +7 Persistent variables: "p:var"; stored in viminfo file and sessions files. + + +Options: +7 ":with option=value | command": temporarily set an option value and + restore it after the command has executed. +8 Make "old" number options that really give a number of effects into string + options that are a comma separated list. The old number values should + also be supported. +8 Add commands to save and restore an option, which also preserves the flag + that marks if the option was set. Useful to keep the effect of setting + 'compatible' after ":syntax on" has been used. +7 There is 'titleold', why is there no 'iconold'? (Chazelas) +7 Make 'scrolloff' a global-local option, so that it can be different in the + quickfix window, for example. (Gary Holloway) + Also do 'sidescrolloff'. + + +External commands: +8 When filtering text, redirect stderr so that it can't mess up the screen + and Vim doesn't need to redraw it. Also for ":r !cmd". +4 Set separate shell for ":sh", piping "range!filter", reading text "r !ls" + and writing text "w !wc". (Deutsche) Allow arguments for fast start (e.g. + -f). +4 Allow direct execution, without using a shell. +4 Run an external command in the background. But how about I/O in the GUI? + Careful: don't turn Vim into a shell! +4 Add feature to disable using a shell or external commands. + + +Multiple Windows: +7 "vim -oO file ..." use both horizontal and vertical splits. +8 Add CTRL-W T: go to the top window in the column of the current window. + And CTRL-W B: go to bottom window. +7 Use CTRL-W <Tab>, like alt-tab, to switch between buffers. Repeat <Tab> + to select another buffer (only loaded ones?), <BS> to go back, <Enter> to + select buffer, <Esc> to go back to original buffer. +7 Make it possible to edit a new buffer in the preview window. A script can + then fill it with something. ":popen"? +7 Add a 'tool' window: behaves like a preview window but there can be + several. Don't count it in only_one_window(). (Alexei Alexandrov) +6 Add an option to resize the shell when splitting and/or closing a window. + ":vsp" would make the shell wider by as many columns as needed for the new + window. Specify a maximum size (or use the screen size). ":close" would + shrink the shell by as many columns as come available. (Demirel) +7 When starting Vim several times, instantiate a Vim server, that allows + communication between the different Vims. Feels like one Vim running with + multiple top-level windows. Esp. useful when Vim is started from an IDE + too. Requires some form of inter process communication. +- Support a connection to an external viewer. Could call the viewer + automatically after some seconds of non-activity, or with a command. + Allow some way of reporting scrolling and cursor positioning in the viewer + to Vim, so that the link between the viewed and edited text can be made. + + +Marks: +8 Add ten marks for last changed files: ':0, ':1, etc. One mark per file. +8 When cursor is first moved because of scrolling, set a mark at this + position. (Rimon Barr) Use '-. +8 Add a command to jump to a mark and make the motion inclusive. g'm and g`m? +8 The '" mark is set to the first line, even when doing ":next" a few times. + Only set the '" mark when the cursor was really moved in a file. +8 Make `` and '', which would position the new cursor position in the middle + of the window, restore the old topline (or relative position) from when + the mark was set. +7 Make a list of file marks in a separate window. For listing all buffers, + matching tags, errors, etc. Normal commands to move around. Add commands + to jump to the mark (in current window or new window). Start it with + ":browse marks"? +6 Add a menu that lists the Marks like ":marks". (Amerige) +7 For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the + text at the mark. Highlight the column with the mark. +7 Highlight each mark in some way (With "Mark" highlight group). + Or display marks in a separate column, like 'number' does. +7 Use d"m to delete rectangular area from cursor to mark m (like Vile's \m + command). +7 Try to keep marks in the same position when: + - replacing with a line break, like in ":s/pat/^M/", move marks after the + line break column to the next line. (Acevedo) + - inserting/deleting characters in a line. +5 Include marks for start/end of the current word and section. Useful in + mappings. +6 Add "unnamed mark" feature: Like marks for the ":g" command, but place and + unplace them with commands before doing something with the lines. + Highlight the marked lines somehow. + + +Digraphs: +7 Make "ga" show the keymap for a character, if it exists. + Also show the code of the character after conversion to 'filenecoding'. +- Use digraph table to tell Vim about the collating sequence of special + characters? +8 Add command to remove one or more (all) digraphs. (Brown) +7 Support different sets of digraphs (depending on the character set?). At + least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32). + + +Writing files: +- In vim_rename(), should lock "from" file when deleting "to" file for + systems other than Amiga. Avoids problems with unexpected longname to + shortname conversion. +8 write mch_isdevice() for Amiga, Mac, VMS, etc. +8 When appending to a file, Vim should also make a backup and a 'patchmode' + file. +8 'backupskip' doesn't write a backup file at all, a bit dangerous for some + applications. Add 'backupelsewhere' to write a backup file in another + directory? Or add a flag to 'backupdir'? +6 Add an option to write a new, numbered, backup file each time. Like + 'patchmode', e.g., 'backupmode'. +6 Make it possible to write 'patchmode' files to a different directory. + E.g., ":set patchmode=~/backups/*.orig". (Thomas) +6 Add an option to prepend something to the backup file name. E.g., "#". + Or maybe allow a function to modify the backup file name? +8 Only make a backup when overwriting a file for the first time. Avoids + losing the original when writing twice. (Slootman) +7 On non-Unix machines, also overwrite the original file in some situations + (file system full, it's a link on an NFS partition). +7 When editing a file, check that it has been change outside of Vim more + often, not only when writing over it. E.g., at the time the swap file is + flushed. Or every ten seconds or so (use the time of day, check it before + waiting for a character to be typed). +8 When a file was changed since editing started, show this in the status + line of the window, like "[time]". + Make it easier to reload all outdated files that don't have changes. + Automatic and/or with a command. + + +Substitute: +8 Substitute with hex/unicode number "\%xff" and "\%uabcd". Just like + "\%uabcd" in search pattern. +8 Make it easier to replace in all files in the argument list. E.g.: + ":argsub/oldword/newword/". Works like ":argdo %s/oldword/newword/g|w". +- :s///p prints the line after a substitution. +- With :s///c replace \&, ~, etc. when showing the replacement pattern. +8 With :s///c allow scrolling horizontally when 'nowrap' is effective. + Also allow a count before the scrolling keys. +- Add number option to ":s//2": replace second occurrence of string? Or: + :s///N substitutes N times. +- Add answers to ":substitute" with 'c' flag, used in a ":global", e.g.: + ":g/pat1/s/pat2/pat3/cg": 'A' do all remaining replacements, 'Q' don't do + any replacements, 'u' undo last substitution. +7 Substitute in a block of text. Use {line}.{column} notation in an Ex + range, e.g.: ":1.3,$.5s" means to substitute from line 1 column 3 to the + last line column 5. +5 Add commands to bookmark lines, display bookmarks, remove bookmarks, + operate on lines with bookmarks, etc. Like ":global" but with the + possibility to keep the bookmarks and use them with several commands. + (Stanislav Sitar) + + +Mouse support: +8 Add 'o' flag to 'mouse'? +7 Be able to set a 'mouseshape' for the popup menu. +8 Add 'mouse' flag, which sets a behavior like Visual mode, but automatic + yanking at the button-up event. Or like Select mode, but typing gets you + out of Select mode, instead of replacing the text. (Bhaskar) +- Implement mouse support for the Amiga console. +- Using right mouse button to extend a blockwise selection should attach to + the nearest corner of the rectangle (four possible corners). +- Precede mouse click by a number to simulate double clicks?!? +- When mouse click after 'r' command, get character that was pointed to. + + +Argument list: +6 Add command to put all filenames from the tag files in the argument list. + When given an argument, only use the files where that argument matches + (like `grep -l ident`) and jump to the first match. +6 Add command to form an args list from all the buffers? + + +Registers: +8 Don't display empty registers with ":display". (Etienne) +8 Make the # register writable, so that it can be restored after jumping + around in windows. +8 Add put command that overwrites existing text. Should also work for + blocks. Useful to move text around in a table. Works like using "R ^R r" + for every line. +6 When yanking into the unnamed registers several times, somehow make the + previous contents also available (like it's done for deleting). What + register names to use? g"1, g"2, etc.? +- When appending to a register, also report the total resulting number of + lines. Or just say "99 more lines yanked", add the "more". +- When inserting a register in Insert mode with CTRL-R, don't insert comment + leader when line wraps? +- The ":@r" commands should take a range and execute the register for each + line in the range. +- Add "P" command to insert contents of unnamed register, move selected text + to position of previous deleted (to swap foo and bar in " + foo") +8 Should be able to yank and delete into the "/ register. + How to take care of the flags (offset, magic)? + + +Debug mode: +7 Add something to enable debugging when a remote message is received. +8 Add breakpoints for setting an option +8 Add breakpoints for assigning to a variable. +7 Add a watchpoint in the debug mode: An expression that breaks execution + when evaluating to non-zero. Add the "watchadd expr" command, stop when + the value of the expression changes. ":watchdel" deletes an item, + ":watchlist" lists the items. (Charles Campbell) +7 Store the history from debug mode in viminfo. +7 Make the debug mode history available with histget() et al. + + +Various improvements: +7 Add plugins for formatting? Should be able to make a choice depending on + the language of a file (English/Korean/Japanese/etc.). + Setting the 'langformat' option to "chinese" would load the + "format/chinese.vim" plugin. + The plugin would set 'formatexpr' and define the function being called. + Edward L. Fox explains how it should be done for most Asian languages. + (2005 Nov 24) + Alternative: patch for utf-8 line breaking. (Yongwei Wu, 2008 Feb 23) +7 [t to move to previous xml/html tag (like "vatov"), ]t to move to next + ("vatv"). +7 [< to move to previous xml/html tag, e.g., previous <li>. ]< to move to + next <li>, ]< to next </li>, [< to previous </li>. +8 Add ":rename" command: rename the file of the current buffer and rename + the buffer. Buffer may be modified. +7 Instead of filtering errors with a shell script it should be possible to + do this with Vim script. A function that filters the raw text that comes + from the 'makeprg'? +- Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh + Govindachar) +7 Add a command that goes back to the position from before jumping to the + first quickfix location. ":cbefore"? +7 Allow a window not to have a statusline. Makes it possible to use a + window as a buffer-tab selection. +8 Allow non-active windows to have a different statusline. (Yakov Lerner) +7 Support using ":vert" with User commands. Add expandable items <vert>. + Do the same for ":browse" and ":confirm"? + For ":silent" and ":debug" apply to the whole user command. + More general: need a way to access command modifiers in a user command. + Assign them to a v: variable? +7 Add an invisible buffer which can be edited. For use in scripts that want + to manipulate text without changing the window layout. +8 Add a command to revert to the saved version of file; undo or redo until + all changes are gone. +6 "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri) +8 Add "--remote-fail": When contacting the server fails, exit Vim. + Add "--remote-self": When contacting the server fails, do it in this Vim. + Overrules the default of "--remote-send" to fail and "--remote" to do it + in this Vim. +8 When Vim was started without a server, make it possible to start one, as + if the "--servername" argument was given. ":startserver <name>"? +8 No address range can be used before the command modifiers. This makes + them difficult to use in a menu for Visual mode. Accept the range and + have it apply to the following command. +8 Add the possibility to set 'fileformats' to force a format and strip other + CR characters. For example, for "dos" files remove CR characters at the + end of the line, so that a file with mixed line endings is cleaned up. + To just not display the CR characters: Add a flag to 'display'? +7 Some compilers give error messages in which the file name does not have a + path. Be able to specify that 'path' is used for these files. +7 Xterm sends <Esc>O3F for <M-End>. Similarly for other <M-Home>, <M-Left>, + etc. Combinations of Alt, Ctrl and Shift are also possible. Recognize + these to avoid inserting the raw byte sequence, handle like the key + without modifier (unless mapped). +6 Add "gG": like what "gj" is to "j": go to the N'th window line. +8 Add command like ":normal" that accepts <Key> notation like ":map". +9 Support ACLs on more systems. +7 Add ModeMsgVisual, ModeMsgInsert, etc. so that each mode message can be + highlighted differently. +7 Add a message area for the user. Set some option to reserve space (above + the command line?). Use an ":echouser" command to display the message + (truncated to fit in the space). +7 Add %s to 'keywordprg': replace with word under the cursor. (Zellner) +8 Support printing on Unix. Can use "lpansi.c" as an example. (Bookout) +8 Add put command that replaces the text under it. Esp. for blockwise + Visual mode. +7 Enhance termresponse stuff: Add t_CV(?): pattern of term response, use + regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV. +7 Add "g|" command: move to N'th column from the left margin (after wrapping + and applying 'leftcol'). Works as "|" like what "g0" is to "0". +7 Support setting 'equalprg' to a user function name. +7 Highlight the characters after the end-of-line differently. +7 When 'whichwrap' contains "l", "$dl" should join lines? +8 Add an argument to configure to use $CFLAGS and not modify it? (Mooney) +8 Enabling features is a mix of configure arguments and defines in + feature.h. How to make this consistent? Feature.h is required for + non-unix systems. Perhaps let configure define CONF_XXX, and use #ifdef + CONF_XXX in feature.h? Then what should min-features and max-features do? +8 Add "g^E" and "g^Y", to scroll a screen-full line up and down. +6 Add ":timer" command, to set a command to be executed at a certain + interval, or once after some time has elapsed. (Aaron) + Perhaps an autocommand event like CursorHold is better? +8 Add ":confirm" handling in open_exfile(), for when file already exists. +8 When quitting with changed files, make the dialog list the changed file + and allow "write all", "discard all", "write some". The last one would + then ask "write" or "discard" for each changed file. Patch in HierAssist + does something like this. (Shah) +7 Use growarray for replace stack. +7 Have a look at viH (Hellenic or Greek version of Vim). But a solution + outside of Vim might be satisfactory (Haritsis). +3 Make "2d%" work like "d%d%" instead of "d2%"? +7 "g CTRL-O" jumps back to last used buffer. Skip CTRL-O jumps in the same + buffer. Make jumplist remember the last ten accessed buffers? +7 Make it possible to set the size of the jumplist (also to a smaller number + than the default). (Nikolai Weibull) +- Add code to disable the CAPS key when going from Insert to Normal mode. +- Set date/protection/etc. of the patchfile the same as the original file. +- Use growarray for termcodes[] in term.c +- Add <window-99>, like <cword> but use filename of 99'th window. +7 Add a way to change an operator to always work characterwise-inclusive + (like "v" makes the operator characterwise-exclusive). "x" could be used. +- Make a set of operations on list of names: expand wildcards, replace home + dir, append a string, delete a string, etc. +- Remove using mktemp() and use tmpname() only? Ctags does this. +- When replacing environment variables, and there is one that is not set, + turn it into an empty string? Only when expanding options? (Hiebert) +- Option to set command to be executed instead of producing a beep (e.g. to + call "play newbeep.au"). +- Add option to show the current function name in the status line. More or + less what you find with "[[k", like how 'cindent' recognizes a function. + (Bhatt). +- "[r" and "]r": like "p" and "P", but replace instead of insert (esp. for + blockwise registers). +- Add 'timecheck' option, on by default. Makes it possible to switch off the + timestamp warning and question. (Dodt). +- Add an option to set the time after which Vim should check the timestamps + of the files. Only check when an event occurs (e.g., character typed, + mouse moved). Useful for non-GUI versions where keyboard focus isn't + noticeable. +- Make 'smartcase' work even though 'ic' isn't set (Webb). +7 When formatting text, allow to break the line at a number of characters. + Use an option for this: 'breakchars'? Useful for formatting Fortran code. +- Add flag to 'formatoptions' to be able to format book-style paragraphs + (first line of paragraph has larger indent, no empty lines between + paragraphs). Complements the '2' flag. Use '>' flag when larger indent + starts a new paragraph, use '<' flag when smaller indent starts a new + paragraph. Both start a new paragraph on any indent change. +8 The 'a' flag in 'formatoptions' is too dangerous. In some way only do + auto-formatting in specific regions, e.g. defined by syntax highlighting. +8 Allow using a trailing space to signal a paragraph that continues on the + next line (MIME text/plain; format=flowed, RFC 2646). Can be used for + continuous formatting. Could use 'autoformat' option, which specifies a + regexp which triggers auto-formatting (for one line). + ":set autoformat=\\s$". +- Be able to redefine where a sentence stops. Use a regexp pattern? +- Support multi-byte characters for sentences. Example from Ben Peterson. +7 Add command "g)" to go to the end of a sentence, "g(" to go back to the + end of a sentence. (Servatius Brandt) +- Be able to redefine where a paragraph starts. For "[[" where the '{' is + not in column 1. +6 Add ":cdprev": go back to the previous directory. Need to remember a + stack of previous directories. We also need ":cdnext". +7 Should ":cd" for MS-DOS go to $HOME, when it's defined? +- Make "gq<CR>" work on the last line in the file. Maybe for every operator? +- Add more redirecting of Ex commands: + :redir #> bufname + :redir #>> bufname (append) +- Give error message when starting :redir: twice or using END when no + redirection was active. +- Setting of options, specifically for a buffer or window, with + ":set window.option" or ":set buffer.option=val". Or use ":buffer.set". + Also: "buffer.map <F1> quit". +6 Would it be possible to change the color of the cursor in the Win32 + console? (Klaus Hast) +- Add :delcr command: + *:delcr* + :[range]delcr[!] Check [range] lines (default: whole buffer) for lines + ending in <CR>. If all lines end in <CR>, or [!] is + used, remove the <CR> at the end of lines in [range]. + A CTRL-Z at the end of the file is removed. If + [range] is omitted, or it is the whole file, and all + lines end in <CR> 'textmode' is set. {not in Vi} +- Should integrate addstar() and file_pat_to_reg_pat(). +- When working over a serial line with 7 bit characters, remove meta + characters from 'isprint'. +- Use fchdir() in init_homedir(), like in FullName(). +- In win_update(), when the GUI is active, always use the scrolling area. + Avoid that the last status line is deleted and needs to be redrawn. +- That "cTx" fails when the cursor is just after 'x' is Vi compatible, but + may not be what you expect. Add a flag in 'cpoptions' for this? More + general: Add an option to allow "c" to work with a null motion. +- Give better error messages by using errno (strerror()). +- Give "Usage:" error message when command used with wrong arguments (like + Nvi). +- Make 'restorescreen' option also work for xterm (and others), replaces the + SAVE_XTERM_SCREEN define. +7 Support for ":winpos" In xterm: report the current window position. +- Give warning message when using ":set t_xx=asdf" for a termcap code that + Vim doesn't know about. Add flag in 'shortmess'? +6 Add ":che <file>", list all the include paths which lead to this file. +- For a commandline that has several commands (:s, :d, etc.) summarize the + changes all together instead of for each command (e.g. for the rot13 + macro). +- Add command like "[I" that also shows the tree of included files. +- ":set sm^L" results in ":set s", because short names of options are also + expanded. Is there a better way to do this? +- Add ":@!" command, to ":@" like what ":source!" is to ":source". +8 Add ":@:!": repeat last command with forceit set. +- Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty. +- ":cab map test ^V| je", ":cunab map" doesn't work. This is vi compatible! +- CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down + if it is not the first or last window. +- Include-file-search commands should look in the loaded buffer of a file (if + there is one) instead of the file itself. +7 Change 'nrformats' to include the leader for each format. Example: + nrformats=hex:$,binary:b,octal:0 + Add setting of 'nrformats' to syntax files. +- 'path' can become very long, don't use NameBuff for expansion. +- When unhiding a hidden buffer, put the same line at top of the window as + the one before hiding it. Or: keep the same relative cursor position (so + many percent down the windows). +- Make it possible for the 'showbreak' to be displayed at the end of the + line. Use a comma to separate the part at the end and the start of the + line? Highlight the linebreak characters, add flag in 'highlight'. + Make 'showbreak' local to a window. +- Some string options should be expanded if they have wildcards, e.g. + 'dictionary' when it is "*.h". +- Use a specific type for number and boolean options, making it possible to + change it for specific machines (e.g. when a long is 64 bit). +- Add option for <Insert> in replace mode going to normal mode. (Nugent) +- Add a next/previous possibility to "[^I" and friends. +- Add possibility to change the HOME directory. Use the directory from the + passwd file? (Antwerpen) +8 Add commands to push and pop all or individual options. ":setpush tw", + ":setpop tw", ":setpush all". Maybe pushing/popping all options is + sufficient. ":setflush" resets the option stack? + How to handle an aborted mapping? Remember position in tag stack when + mapping starts, restore it when an error aborts the mapping? +- Change ":fixdel" into option 'fixdel', t_del will be adjusted each time + t_bs is set? (Webb) +- "gc": goto character, move absolute character positions forward, also + counting newlines. "gC" goes backwards (Weigert). +- When doing CTRL-^, redraw buffer with the same topline. (Demirel) Store + cursor row and window height to redraw cursor at same percentage of window + (Webb). +- Besides remembering the last used line number of a file, also remember the + column. Use it with CTRL-^ et. al. +- Check for non-digits when setting a number option (careful when entering + hex codes like 0xff). +- Add option to make "." redo the "@r" command, instead of the last command + executed by it. Also to make "." redo the whole mapping. Basically: redo + the last TYPED command. +- Support URL links for ^X^F in Insert mode, like for "gf". +- Support %name% expansion for "gf" on Windows. +- Make "gf" work on "file://c:/path/name". "file:/c:/" and "file:///c:/" + should also work? +- Add 'urlpath', used like 'path' for when "gf" used on an URL? +8 When using "gf" on an absolute file name, while editing a remote file + (starts with scp:// or http://) should prepend the method and machine + name. +- When finding an URL or file name, and it doesn't exist, try removing a + trailing '.'. +- Add ":path" command modifier. Should work for every command that takes a + file name argument, to search for the file name in 'path'. Use + find_file_in_path(). +- Highlight control characters on the screen: Shows the difference between + CTRL-X and "^" followed by "X" (Colon). +- Integrate parsing of cmdline command and parsing for expansion. +- Create a program that can translate a .swp file from any machine into a + form usable by Vim on the current machine. +- Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have + a readonly file. ":noro!" will reset all 'ro' flags. +- Add a variant of CTRL-V that stops interpretation of more than one + character. For entering mappings on the command line where a key contains + several special characters, e.g. a trailing newline. +- Make '2' option in 'formatoptions' also work inside comments. +- Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt) +- When window size changed (with the mouse) and made too small, set it back + to the minimal size. +- Add "]>" and "[<", shift comment at end of line (command; /* comment */). +- Should not call cursorcmd() for each vgetc() in getcmdline(). +- ":split file1 file2" adds two more windows (Webb). +- Don't give message "Incomplete last line" when editing binary file. +- Add ":a", ":i" for preloading of named buffers. +- When entering text, keep other windows on same buffer updated (when a line + entered)? +- Check out how screen does output optimizing. Apparently this is possible + as an output filter. +- In dosub() regexec is called twice for the same line. Try to avoid this. +- Window updating from memline.c: insert/delete/replace line. +- Optimize ml_append() for speed, esp. for reading a file. +- V..c should keep indent when 'ai' is set, just like [count]cc. +- Updatescript() can be done faster with a string instead of a char. +- Screen updating is inefficient with CTRL-F and CTRL-B when there are long + lines. +- Uppercase characters in Ex commands can be made lowercase? +8 Add option to show characters in text not as "|A" but as decimal ("^129"), + hex ("\x81") or octal ("\201") or meta (M-x). Nvi has the 'octal' option + to switch from hex to octal. Vile can show unprintable characters in hex + or in octal. +7 Tighter integration with xxd to edit binary files. Make it more + easy/obvious to use. Command line argument? +- How does vi detect whether a filter has messed up the screen? Check source. + After ":w !command" a wait_return? +- Improve screen updating code for doput() (use s_ins()). +- With 'p' command on last line: scroll screen up (also for terminals without + insert line command). +- Use insert/delete char when terminal supports it. +- Optimize screen redraw for slow terminals. +- Optimize "dw" for long row of spaces (say, 30000). +- Add "-d null" for editing from a script file without displaying. +- In Insert mode: Remember the characters that were removed with backspace + and re-insert them one at a time with <key1>, all together with <key2>. +- Amiga: Add possibility to set a keymap. The code in amiga.c does not work + yet. +- Implement 'redraw' option. +- Add special code to 'sections' option to define something else but '{' or + '}' as the start of a section (e.g. one shiftwidth to the right). +7 Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy". Only needs + implementing ":w" to stdout in the buffer that was read from stdin. + Perhaps writing to stdout will work, since stderr is used for the terminal + I/O. +8 Allow opening an unnamed buffer with ":e !cmd" and ":sp !cmd". Vile can + do it. +- Add commands like ]] and [[ that do not include the line jumped to. +- When :unab without matching "from" part and several matching "to" parts, + delete the entry that was used last, instead of the first in the list. +- Add text justification option. +- Set boolean options on/off with ":set paste=off", ":set paste=on". +- After "inv"ing an option show the value: ":set invpaste" gives "paste is + off". +- Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR. +- When a file cannot be opened but does exist, give error message. +- Amiga: When 'r' protection bit is not set, file can still be opened but + gives read errors. Check protection before opening. +- When writing check for file exists but no permission, "Permission denied". +- If file does not exist, check if directory exists. +- MSDOS: although t_cv and t_ci are not set, do invert char under cursor. +- Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex + commands. +- ":set -w all": list one option per line. +- Amiga: test for 'w' flag when reading a file. +- :table command (Webb) +- Add new operator: clear, make area white (replace with spaces): "g ". +- Add command to ":read" a file at a certain column (blockwise read?). +- Add sort of replace mode where case is taken from the old text (Goldfarb). +- Allow multiple arguments for ":read", read all the files. +- Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel). +- Add 'searchdir' option: Directories to search for file name being edited + (Demirel). +- Modifier for the put command: Change to linewise, charwise, blockwise, etc. +- Add commands for saving and restoring options ":set save" "set restore", + for use in macro's and the like. +- Keep output from listings in a window, so you can have a look at it while + working in another window. Put cmdline in a separate window? +- Add possibility to put output of Ex commands in a buffer or file, e.g. for + ":set all". ":r :set all"? +- When the 'equalalways' option is set, creating a new window should not + result in windows to become bigger. Deleting a window should not result in + a window to become smaller (Webb). +- When resizing the whole Vim window, the windows inside should be resized + proportionally (Webb). +- Include options directly in option table, no indirect pointers. Use + mkopttab to make option table? +- When doing ":w dir", where "dir" is a directory name, write the current + file into that directory, with the current file name (without the path)? +- Support for 'dictionary's that are sorted, makes access a lot faster + (Haritsis). +- Add "^Vrx" on the command line, replace with contents of register x. Used + instead of CTRL-R to make repeating possible. (Marinichev) +- Add "^Vb" on the command line, replace with word before or under the + cursor? +- Option to make a .swp file only when a change is made (Templeton). +- Support mapping for replace mode and "r" command (Vi doesn't do this)? +5 Add 'ignorefilecase' option: Ignore case when expanding file names. + ":e ma<Tab>" would also find "Makefile" on Unix. +8 Sorting of filenames for completion is wrong on systems that ignore + case of filenames. Add 'ignorefncase' option. When set, case in + filenames is ignored for sorting them. Patch by Mike Williams: + ~/vim/patches/ignorefncase. Also change what matches? Or use another + option name. +8 Should be able to compile Vim in another directory, with $(srcdir) set to + where the sources are. Add $(srcdir) in the Makefile in a lot of places. + (Netherton) +6 Make it configurable when "J" inserts a space or not. Should not add a + space after "(", for example. +5 When inserting spaces after the end-of-line for 'virtualedit', use tabs + when the user wants this (e.g., add a "tab" field to 'virtualedit'). + (Servatius Brandt) + + +From Elvis: +- Use "instman.sh" to install manpages? +- Add ":alias" command. +- Search patterns: + \@ match word under cursor. + but do: + \@w match the word under the cursor? + \@W match the WORD under the cursor? +8 ":window" command: + :win + next window (up) + :win ++ idem, wrapping + :win - previous window (down) + :win -- idem, wrapping + :win nr to window number "nr" + :win name to window editing buffer "name" +7 ":cc" compiles a single file (default: current one). 'ccprg' option is + program to use with ":cc". Use ":compile" instead of ":cc"? + + +From xvi: +- CTRL-_ : swap 8th bit of character. +- Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet) + + +From vile: +- When horizontal scrolling, use '>' for lines continuing right of a window. +- Support putting .swp files in /tmp: Command in rc.local to move .swp files + from /tmp to some directory before deleting files. + + +Far future and "big" extensions: +- Instead of using a Makefile and autoconf, use a simple shell script to + find the C compiler and do everything with C code. Translate something + like an Aap recipe and configure.in to C. Avoids depending on Python, + thus will work everywhere. With batch file to find the C compiler it + would also work on MS-Windows. +- Make it easy to setup Vim for groups of users: novice vi users, novice + Vim users, C programmers, xterm users, GUI users,... +- Change layout of blocks in swap file: Text at the start, with '\n' in + between lines (just load the file without changes, except for Mac). + Indexes for lines are from the end of the block backwards. It's the + current layout mirrored. +- Make it possible to edit a register, in a window, like a buffer. +- Add stuff to syntax highlighting to change the text (upper-case keywords, + set indent, define other highlighting, etc.). +- Mode to keep C-code formatted all the time (sort of on-line indent). +- Several top-level windows in one Vim session. Be able to use a different + font in each top-level window. +- Allow editing above start and below end of buffer (flag in 'virtualedit'). +- Smart cut/paste: recognize words and adjust spaces before/after them. +- Add open mode, use it when terminal has no cursor positioning. +- Special "drawing mode": a line is drawn where the cursor is moved to. + Backspace deletes along the line (from jvim). +- Implement ":Bset", set option in all buffers. Also ":Wset", set in all + windows, ":Aset, set in all arguments and ":Tset", set in all files + mentioned in the tags file. + Add buffer/arg range, like in ":2,5B%s/..." (do we really need this???) + Add search string: "B/*.c/%s/.."? Or ":F/*.c/%s/.."? +- Support for underlining (underscore-BS-char), bold (char-BS-char) and other + standout modes switched on/off with , 'overstrike' option (Reiter). +- Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five + lines, "3vitextESC" will insert "text" in three lines, etc.. +4 Recognize l, #, p as 'flags' to EX commands: + :g/RE/#l shall print lines with line numbers and in list format. + :g/RE/dp shall print lines that are deleted. + POSIX: Commands where flags shall apply to all lines written: list, + number, open, print, substitute, visual, &, z. For other commands, flags + shall apply to the current line after the command completes. Examples: + :7,10j #l Join the lines 7-10 and print the result in list +- Allow two or more users to edit the same file at the same time. Changes + are reflected in each Vim immediately. Could work with local files but + also over the internet. See http://www.codingmonkeys.de/subethaedit/. + +When using "do" or ":diffget" in a buffer with changes in every line an extra +empty line would appear. + +vim:tw=78:sw=4:sts=4:ts=8:ft=help:norl: +vim: set fo+=n : diff --git a/share/vim/vim74/doc/uganda.txt b/share/vim/vim74/doc/uganda.txt new file mode 100644 index 00000000..113df4f6 --- /dev/null +++ b/share/vim/vim74/doc/uganda.txt @@ -0,0 +1,288 @@ +*uganda.txt* For Vim version 7.4. Last change: 2013 Jul 06 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *uganda* *Uganda* *copying* *copyright* *license* +SUMMARY + *iccf* *ICCF* +Vim is Charityware. You can use and copy it as much as you like, but you are +encouraged to make a donation for needy children in Uganda. Please see |kcc| +below or visit the ICCF web site, available at these URLs: + + http://iccf-holland.org/ + http://www.vim.org/iccf/ + http://www.iccf.nl/ + +You can also sponsor the development of Vim. Vim sponsors can vote for +features. See |sponsor|. The money goes to Uganda anyway. + +The Open Publication License applies to the Vim documentation, see +|manual-copyright|. + +=== begin of license === + +VIM LICENSE + +I) There are no restrictions on distributing unmodified copies of Vim except + that they must include this license text. You can also distribute + unmodified parts of Vim, likewise unrestricted except that they must + include this license text. You are also allowed to include executables + that you made from the unmodified Vim sources, plus your own usage + examples and Vim scripts. + +II) It is allowed to distribute a modified (or extended) version of Vim, + including executables and/or source code, when the following four + conditions are met: + 1) This license text must be included unmodified. + 2) The modified Vim must be distributed in one of the following five ways: + a) If you make changes to Vim yourself, you must clearly describe in + the distribution how to contact you. When the maintainer asks you + (in any way) for a copy of the modified Vim you distributed, you + must make your changes, including source code, available to the + maintainer without fee. The maintainer reserves the right to + include your changes in the official version of Vim. What the + maintainer will do with your changes and under what license they + will be distributed is negotiable. If there has been no negotiation + then this license, or a later version, also applies to your changes. + The current maintainer is Bram Moolenaar <Bram@vim.org>. If this + changes it will be announced in appropriate places (most likely + vim.sf.net, www.vim.org and/or comp.editors). When it is completely + impossible to contact the maintainer, the obligation to send him + your changes ceases. Once the maintainer has confirmed that he has + received your changes they will not have to be sent again. + b) If you have received a modified Vim that was distributed as + mentioned under a) you are allowed to further distribute it + unmodified, as mentioned at I). If you make additional changes the + text under a) applies to those changes. + c) Provide all the changes, including source code, with every copy of + the modified Vim you distribute. This may be done in the form of a + context diff. You can choose what license to use for new code you + add. The changes and their license must not restrict others from + making their own changes to the official version of Vim. + d) When you have a modified Vim which includes changes as mentioned + under c), you can distribute it without the source code for the + changes if the following three conditions are met: + - The license that applies to the changes permits you to distribute + the changes to the Vim maintainer without fee or restriction, and + permits the Vim maintainer to include the changes in the official + version of Vim without fee or restriction. + - You keep the changes for at least three years after last + distributing the corresponding modified Vim. When the maintainer + or someone who you distributed the modified Vim to asks you (in + any way) for the changes within this period, you must make them + available to him. + - You clearly describe in the distribution how to contact you. This + contact information must remain valid for at least three years + after last distributing the corresponding modified Vim, or as long + as possible. + e) When the GNU General Public License (GPL) applies to the changes, + you can distribute the modified Vim under the GNU GPL version 2 or + any later version. + 3) A message must be added, at least in the output of the ":version" + command and in the intro screen, such that the user of the modified Vim + is able to see that it was modified. When distributing as mentioned + under 2)e) adding the message is only required for as far as this does + not conflict with the license used for the changes. + 4) The contact information as required under 2)a) and 2)d) must not be + removed or changed, except that the person himself can make + corrections. + +III) If you distribute a modified version of Vim, you are encouraged to use + the Vim license for your changes and make them available to the + maintainer, including the source code. The preferred way to do this is + by e-mail or by uploading the files to a server and e-mailing the URL. + If the number of changes is small (e.g., a modified Makefile) e-mailing a + context diff will do. The e-mail address to be used is + <maintainer@vim.org> + +IV) It is not allowed to remove this license from the distribution of the Vim + sources, parts of it or from a modified version. You may use this + license for previous Vim releases instead of the license that they came + with, at your option. + +=== end of license === + +Note: + +- If you are happy with Vim, please express that by reading the rest of this + file and consider helping needy children in Uganda. + +- If you want to support further Vim development consider becoming a + |sponsor|. The money goes to Uganda anyway. + +- According to Richard Stallman the Vim license is GNU GPL compatible. + A few minor changes have been made since he checked it, but that should not + make a difference. + +- If you link Vim with a library that goes under the GNU GPL, this limits + further distribution to the GNU GPL. Also when you didn't actually change + anything in Vim. + +- Once a change is included that goes under the GNU GPL, this forces all + further changes to also be made under the GNU GPL or a compatible license. + +- If you distribute a modified version of Vim, you can include your name and + contact information with the "--with-modified-by" configure argument or the + MODIFIED_BY define. + +============================================================================== +Kibaale Children's Centre *kcc* *Kibaale* *charity* + +Kibaale Children's Centre (KCC) is located in Kibaale, a small town in the +south of Uganda, near Tanzania, in East Africa. The area is known as Rakai +District. The population is mostly farmers. Although people are poor, there +is enough food. But this district is suffering from AIDS more than any other +part of the world. Some say that it started there. Estimations are that 10 +to 30% of the Ugandans are infected with HIV. Because parents die, there are +many orphans. In this district about 60,000 children have lost one or both +parents, out of a population of 350,000. And this is still continuing. + +The children need a lot of help. The KCC is working hard to provide the needy +with food, medical care and education. Food and medical care to keep them +healthy now, and education so that they can take care of themselves in the +future. KCC works on a Christian base, but help is given to children of any +religion. + +The key to solving the problems in this area is education. This has been +neglected in the past years with president Idi Amin and the following civil +wars. Now that the government is stable again, the children and parents have +to learn how to take care of themselves and how to avoid infections. There is +also help for people who are ill and hungry, but the primary goal is to +prevent people from getting ill and to teach them how to grow healthy food. + +Most of the orphans are living in an extended family. An uncle or older +sister is taking care of them. Because these families are big and the income +(if any) is low, a child is lucky if it gets healthy food. Clothes, medical +care and schooling is beyond its reach. To help these needy children, a +sponsorship program was put into place. A child can be financially adopted. +For a few dollars a month KCC sees to it that the child gets indispensable +items, is healthy, goes to school and KCC takes care of anything else that +needs to be done for the child and the family that supports it. + +Besides helping the child directly, the environment where the child grows up +needs to be improved. KCC helps schools to improve their teaching methods. +There is a demonstration school at the centre and teacher trainings are given. +Health workers are being trained, hygiene education is carried out and +households are stimulated to build a proper latrine. I helped setting up a +production site for cement slabs. These are used to build a good latrine. +They are sold below cost price. + +There is a small clinic at the project, which provides children and their +family with medical help. When needed, transport to a hospital is offered. +Immunization programs are carried out and help is provided when an epidemic is +breaking out (measles and cholera have been a problem). + *donate* +Summer 1994 to summer 1995 I spent a whole year at the centre, working as a +volunteer. I have helped to expand the centre and worked in the area of water +and sanitation. I learned that the help that the KCC provides really helps. +When I came back to Holland, I wanted to continue supporting KCC. To do this +I'm raising funds and organizing the sponsorship program. Please consider one +of these possibilities: + +1. Sponsor a child in primary school: 17 euro a month (or more). +2. Sponsor a child in secondary school: 25 euro a month (or more). +3. Sponsor the clinic: Any amount a month or quarter +4. A one-time donation + +Compared with other organizations that do child sponsorship the amounts are +very low. This is because the money goes directly to the centre. Less than +5% is used for administration. This is possible because this is a small +organization that works with volunteers. If you would like to sponsor a +child, you should have the intention to do this for at least one year. + +How do you know that the money will be spent right? First of all you have my +personal guarantee as the author of Vim. I trust the people that are working +at the centre, I know them personally. Further more, the centre has been +co-sponsored and inspected by World Vision, Save the Children Fund and is now +under the supervision of Pacific Academy Outreach Society. The centre is +visited about once a year to check the progress (at our own cost). I have +visited the centre myself many times, starting in 1993. The visit reports are +on the ICCF web site. + +If you have any further questions, send me e-mail: <Bram@vim.org>. + +The address of the centre is: + Kibaale Children's Centre + p.o. box 1658 + Masaka, Uganda, East Africa + +Sending money: *iccf-donations* + +Check the ICCF web site for the latest information! See |iccf| for the URL. + + +USA: The methods mentioned below can be used. + Sending a check to the Nehemiah Group Outreach Society (NGOS) + is no longer possible, unfortunately. We are looking for + another way to get you an IRS tax receipt. + For sponsoring a child contact KCF in Canada (see below). US + checks can be sent to them to lower banking costs. + +Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They + take care of the Canadian sponsors for the children in + Kibaale. KCF forwards 100% of the money to the project in + Uganda. You can send them a one time donation directly. + Please send me a note so that I know what has been donated + because of Vim. Ask KCF for information about sponsorship. + Kibaale Children's Fund c/o Pacific Academy + 10238-168 Street + Surrey, B.C. V4N 1Z4 + Canada + Phone: 604-581-5353 + If you make a donation to Kibaale Children's Fund (KCF) you + will receive a tax receipt which can be submitted with your + tax return. + +Holland: Transfer to the account of "Stichting ICCF Holland" in Lisse. + This will allow for tax deduction if you live in Holland. + Postbank, nr. 4548774 + IBAN: NL95 INGB 0004 5487 74 + +Germany: It is possible to make donations that allow for a tax return. + Check the ICCF web site for the latest information: + http://iccf-holland.org/germany.html + +World: Use a postal money order. That should be possible from any + country, mostly from the post office. Use this name (which is + in my passport): "Abraham Moolenaar". Use Euro for the + currency if possible. + +Europe: Use a bank transfer if possible. Your bank should have a form + that you can use for this. See "Others" below for the swift + code and IBAN number. + Any other method should work. Ask for information about + sponsorship. + +Credit Card: You can use PayPal to send money with a Credit card. This is + the most widely used Internet based payment system. It's + really simple to use. Use this link to find more info: + https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q + The e-mail address for sending the money to is: + Bram@iccf-holland.org + For amounts above 400 Euro ($500) sending a check is + preferred. + +Others: Transfer to one of these accounts if possible: + Postbank, account 4548774 + Swift code: INGB NL 2A + IBAN: NL95 INGB 0004 5487 74 + under the name "stichting ICCF Holland", Lisse + If that doesn't work: + Rabobank Lisse, account 3765.05.117 + Swift code: RABO NL 2U + under the name "Bram Moolenaar", Lisse + Otherwise, send a check in euro or US dollars to the address + below. Minimal amount: $70 (my bank does not accept smaller + amounts for foreign check, sorry) + +Address to send checks to: + Bram Moolenaar + Finsterruetihof 1 + 8134 Adliswil + Switzerland + +This address is expected to be valid for a long time. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/undo.txt b/share/vim/vim74/doc/undo.txt new file mode 100644 index 00000000..f1990c90 --- /dev/null +++ b/share/vim/vim74/doc/undo.txt @@ -0,0 +1,405 @@ +*undo.txt* For Vim version 7.4. Last change: 2012 Mar 04 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Undo and redo *undo-redo* + +The basics are explained in section |02.5| of the user manual. + +1. Undo and redo commands |undo-commands| +2. Two ways of undo |undo-two-ways| +3. Undo blocks |undo-blocks| +4. Undo branches |undo-branches| +5. Undo persistence |undo-persistence| +6. Remarks about undo |undo-remarks| + +============================================================================== +1. Undo and redo commands *undo-commands* + +<Undo> or *undo* *<Undo>* *u* +u Undo [count] changes. {Vi: only one level} + + *:u* *:un* *:undo* +:u[ndo] Undo one change. {Vi: only one level} + *E830* +:u[ndo] {N} Jump to after change number {N}. See |undo-branches| + for the meaning of {N}. {not in Vi} + + *CTRL-R* +CTRL-R Redo [count] changes which were undone. {Vi: redraw + screen} + + *:red* *:redo* *redo* +:red[o] Redo one change which was undone. {Vi: no redo} + + *U* +U Undo all latest changes on one line, the line where + the latest change was made. |U| itself also counts as + a change, and thus |U| undoes a previous |U|. + {Vi: while not moved off of the last modified line} + +The last changes are remembered. You can use the undo and redo commands above +to revert the text to how it was before each change. You can also apply the +changes again, getting back the text before the undo. + +The "U" command is treated by undo/redo just like any other command. Thus a +"u" command undoes a "U" command and a 'CTRL-R' command redoes it again. When +mixing "U", "u" and 'CTRL-R' you will notice that the "U" command will +restore the situation of a line to before the previous "U" command. This may +be confusing. Try it out to get used to it. +The "U" command will always mark the buffer as changed. When "U" changes the +buffer back to how it was without changes, it is still considered changed. +Use "u" to undo changes until the buffer becomes unchanged. + +============================================================================== +2. Two ways of undo *undo-two-ways* + +How undo and redo commands work depends on the 'u' flag in 'cpoptions'. +There is the Vim way ('u' excluded) and the vi-compatible way ('u' included). +In the Vim way, "uu" undoes two changes. In the Vi-compatible way, "uu" does +nothing (undoes an undo). + +'u' excluded, the Vim way: +You can go back in time with the undo command. You can then go forward again +with the redo command. If you make a new change after the undo command, +the redo will not be possible anymore. + +'u' included, the Vi-compatible way: +The undo command undoes the previous change, and also the previous undo command. +The redo command repeats the previous undo command. It does NOT repeat a +change command, use "." for that. + +Examples Vim way Vi-compatible way ~ +"uu" two times undo no-op +"u CTRL-R" no-op two times undo + +Rationale: Nvi uses the "." command instead of CTRL-R. Unfortunately, this + is not Vi compatible. For example "dwdwu." in Vi deletes two + words, in Nvi it does nothing. + +============================================================================== +3. Undo blocks *undo-blocks* + +One undo command normally undoes a typed command, no matter how many changes +that command makes. This sequence of undo-able changes forms an undo block. +Thus if the typed key(s) call a function, all the commands in the function are +undone together. + +If you want to write a function or script that doesn't create a new undoable +change but joins in with the previous change use this command: + + *:undoj* *:undojoin* *E790* +:undoj[oin] Join further changes with the previous undo block. + Warning: Use with care, it may prevent the user from + properly undoing changes. Don't use this after undo + or redo. + {not in Vi} + +This is most useful when you need to prompt the user halfway a change. For +example in a function that calls |getchar()|. Do make sure that there was a +related change before this that you must join with. + +This doesn't work by itself, because the next key press will start a new +change again. But you can do something like this: > + + :undojoin | delete + +After this an "u" command will undo the delete command and the previous +change. + +To do the opposite, break a change into two undo blocks, in Insert mode use +CTRL-G u. This is useful if you want an insert command to be undoable in +parts. E.g., for each sentence. |i_CTRL-G_u| +Setting the value of 'undolevels' also breaks undo. Even when the new value +is equal to the old value. + +============================================================================== +4. Undo branches *undo-branches* *undo-tree* + +Above we only discussed one line of undo/redo. But it is also possible to +branch off. This happens when you undo a few changes and then make a new +change. The undone changes become a branch. You can go to that branch with +the following commands. + +This is explained in the user manual: |usr_32.txt|. + + *:undol* *:undolist* +:undol[ist] List the leafs in the tree of changes. Example: + number changes when saved ~ + 88 88 2010/01/04 14:25:53 + 108 107 08/07 12:47:51 + 136 46 13:33:01 7 + 166 164 3 seconds ago + + The "number" column is the change number. This number + continuously increases and can be used to identify a + specific undo-able change, see |:undo|. + The "changes" column is the number of changes to this + leaf from the root of the tree. + The "when" column is the date and time when this + change was made. The four possible formats are: + N seconds ago + HH:MM:SS hour, minute, seconds + MM/DD HH:MM:SS idem, with month and day + YYYY/MM/DD HH:MM:SS idem, with year + The "saved" column specifies, if this change was + written to disk and which file write it was. This can + be used with the |:later| and |:earlier| commands. + For more details use the |undotree()| function. + + *g-* +g- Go to older text state. With a count repeat that many + times. {not in Vi} + *:ea* *:earlier* +:earlier {count} Go to older text state {count} times. +:earlier {N}s Go to older text state about {N} seconds before. +:earlier {N}m Go to older text state about {N} minutes before. +:earlier {N}h Go to older text state about {N} hours before. +:earlier {N}d Go to older text state about {N} days before. + +:earlier {N}f Go to older text state {N} file writes before. + When changes were made since the last write + ":earlier 1f" will revert the text to the state when + it was written. Otherwise it will go to the write + before that. + When at the state of the first file write, or when + the file was not written, ":earlier 1f" will go to + before the first change. + + *g+* +g+ Go to newer text state. With a count repeat that many + times. {not in Vi} + *:lat* *:later* +:later {count} Go to newer text state {count} times. +:later {N}s Go to newer text state about {N} seconds later. +:later {N}m Go to newer text state about {N} minutes later. +:later {N}h Go to newer text state about {N} hours later. +:later {N}d Go to newer text state about {N} days later. + +:later {N}f Go to newer text state {N} file writes later. + When at the state of the last file write, ":later 1f" + will go to the newest text state. + + +Note that text states will become unreachable when undo information is cleared +for 'undolevels'. + +Don't be surprised when moving through time shows multiple changes to take +place at a time. This happens when moving through the undo tree and then +making a new change. + +EXAMPLE + +Start with this text: + one two three ~ + +Delete the first word by pressing "x" three times: + ne two three ~ + e two three ~ + two three ~ + +Now undo that by pressing "u" three times: + e two three ~ + ne two three ~ + one two three ~ + +Delete the second word by pressing "x" three times: + one wo three ~ + one o three ~ + one three ~ + +Now undo that by using "g-" three times: + one o three ~ + one wo three ~ + two three ~ + +You are now back in the first undo branch, after deleting "one". Repeating +"g-" will now bring you back to the original text: + e two three ~ + ne two three ~ + one two three ~ + +Jump to the last change with ":later 1h": + one three ~ + +And back to the start again with ":earlier 1h": + one two three ~ + + +Note that using "u" and CTRL-R will not get you to all possible text states +while repeating "g-" and "g+" does. + +============================================================================== +5. Undo persistence *undo-persistence* *persistent-undo* + +When unloading a buffer Vim normally destroys the tree of undos created for +that buffer. By setting the 'undofile' option, Vim will automatically save +your undo history when you write a file and restore undo history when you edit +the file again. + +The 'undofile' option is checked after writing a file, before the BufWritePost +autocommands. If you want to control what files to write undo information +for, you can use a BufWritePre autocommand: > + au BufWritePre /tmp/* setlocal noundofile + +Vim saves undo trees in a separate undo file, one for each edited file, using +a simple scheme that maps filesystem paths directly to undo files. Vim will +detect if an undo file is no longer synchronized with the file it was written +for (with a hash of the file contents) and ignore it when the file was changed +after the undo file was written, to prevent corruption. An undo file is also +ignored if its owner differs from the owner of the edited file. Set 'verbose' +to get a message about that when opening a file. + +Undo files are normally saved in the same directory as the file. This can be +changed with the 'undodir' option. + +When the file is encrypted, the text in the undo file is also crypted. The +same key and method is used. |encryption| + +You can also save and restore undo histories by using ":wundo" and ":rundo" +respectively: + *:wundo* *:rundo* +:wundo[!] {file} + Write undo history to {file}. + When {file} exists and it does not look like an undo file + (the magic number at the start of the file is wrong), then + this fails, unless the ! was added. + If it exists and does look like an undo file it is + overwritten. If there is no undo-history, nothing will be + written. + Implementation detail: Overwriting happens by first deleting + the existing file and then creating a new file with the same + name. So it is not possible to overwrite an existing undofile + in a write-protected directory. + {not in Vi} + +:rundo {file} Read undo history from {file}. + {not in Vi} + +You can use these in autocommands to explicitly specify the name of the +history file. E.g.: > + + au BufReadPost * call ReadUndo() + au BufWritePost * call WriteUndo() + func ReadUndo() + if filereadable(expand('%:h'). '/UNDO/' . expand('%:t')) + rundo %:h/UNDO/%:t + endif + endfunc + func WriteUndo() + let dirname = expand('%:h') . '/UNDO' + if !isdirectory(dirname) + call mkdir(dirname) + endif + wundo %:h/UNDO/%:t + endfunc + +You should keep 'undofile' off, otherwise you end up with two undo files for +every write. + +You can use the |undofile()| function to find out the file name that Vim would +use. + +Note that while reading/writing files and 'undofile' is set most errors will +be silent, unless 'verbose' is set. With :wundo and :rundo you will get more +error messages, e.g., when the file cannot be read or written. + +NOTE: undo files are never deleted by Vim. You need to delete them yourself. + +Reading an existing undo file may fail for several reasons: +*E822* It cannot be opened, because the file permissions don't allow it. +*E823* The magic number at the start of the file doesn't match. This usually + means it is not an undo file. +*E824* The version number of the undo file indicates that it's written by a + newer version of Vim. You need that newer version to open it. Don't + write the buffer if you want to keep the undo info in the file. +"File contents changed, cannot use undo info" + The file text differs from when the undo file was written. This means + the undo file cannot be used, it would corrupt the text. This also + happens when 'encoding' differs from when the undo file was written. +*E825* The undo file does not contain valid contents and cannot be used. +*E826* The undo file is encrypted but decryption failed. +*E827* The undo file is encrypted but this version of Vim does not support + encryption. Open the file with another Vim. +*E832* The undo file is encrypted but 'key' is not set, the text file is not + encrypted. This would happen if the text file was written by Vim + encrypted at first, and later overwritten by not encrypted text. + You probably want to delete this undo file. +"Not reading undo file, owner differs" + The undo file is owned by someone else than the owner of the text + file. For safety the undo file is not used. + +Writing an undo file may fail for these reasons: +*E828* The file to be written cannot be created. Perhaps you do not have + write permissions in the directory. +"Cannot write undo file in any directory in 'undodir'" + None of the directories in 'undodir' can be used. +"Will not overwrite with undo file, cannot read" + A file exists with the name of the undo file to be written, but it + cannot be read. You may want to delete this file or rename it. +"Will not overwrite, this is not an undo file" + A file exists with the name of the undo file to be written, but it + does not start with the right magic number. You may want to delete + this file or rename it. +"Skipping undo file write, nothing to undo" + There is no undo information to be written, nothing has been changed + or 'undolevels' is negative. +*E829* An error occurred while writing the undo file. You may want to try + again. + +============================================================================== +6. Remarks about undo *undo-remarks* + +The number of changes that are remembered is set with the 'undolevels' option. +If it is zero, the Vi-compatible way is always used. If it is negative no +undo is possible. Use this if you are running out of memory. + + *clear-undo* +When you set 'undolevels' to -1 the undo information is not immediately +cleared, this happens at the next change. To force clearing the undo +information you can use these commands: > + :let old_undolevels = &undolevels + :set undolevels=-1 + :exe "normal a \<BS>\<Esc>" + :let &undolevels = old_undolevels + :unlet old_undolevels + +Marks for the buffer ('a to 'z) are also saved and restored, together with the +text. {Vi does this a little bit different} + +When all changes have been undone, the buffer is not considered to be changed. +It is then possible to exit Vim with ":q" instead of ":q!" {not in Vi}. Note +that this is relative to the last write of the file. Typing "u" after ":w" +actually changes the buffer, compared to what was written, so the buffer is +considered changed then. + +When manual |folding| is being used, the folds are not saved and restored. +Only changes completely within a fold will keep the fold as it was, because +the first and last line of the fold don't change. + +The numbered registers can also be used for undoing deletes. Each time you +delete text, it is put into register "1. The contents of register "1 are +shifted to "2, etc. The contents of register "9 are lost. You can now get +back the most recent deleted text with the put command: '"1P'. (also, if the +deleted text was the result of the last delete or copy operation, 'P' or 'p' +also works as this puts the contents of the unnamed register). You can get +back the text of three deletes ago with '"3P'. + + *redo-register* +If you want to get back more than one part of deleted text, you can use a +special feature of the repeat command ".". It will increase the number of the +register used. So if you first do ""1P", the following "." will result in a +'"2P'. Repeating this will result in all numbered registers being inserted. + +Example: If you deleted text with 'dd....' it can be restored with + '"1P....'. + +If you don't know in which register the deleted text is, you can use the +:display command. An alternative is to try the first register with '"1P', and +if it is not what you want do 'u.'. This will remove the contents of the +first put, and repeat the put command for the second register. Repeat the +'u.' until you got what you want. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_01.txt b/share/vim/vim74/doc/usr_01.txt new file mode 100644 index 00000000..11fa2173 --- /dev/null +++ b/share/vim/vim74/doc/usr_01.txt @@ -0,0 +1,192 @@ +*usr_01.txt* For Vim version 7.4. Last change: 2010 Nov 03 + + VIM USER MANUAL - by Bram Moolenaar + + About the manuals + + +This chapter introduces the manuals available with Vim. Read this to know the +conditions under which the commands are explained. + +|01.1| Two manuals +|01.2| Vim installed +|01.3| Using the Vim tutor +|01.4| Copyright + + Next chapter: |usr_02.txt| The first steps in Vim +Table of contents: |usr_toc.txt| + +============================================================================== +*01.1* Two manuals + +The Vim documentation consists of two parts: + +1. The User manual + Task oriented explanations, from simple to complex. Reads from start to + end like a book. + +2. The Reference manual + Precise description of how everything in Vim works. + +The notation used in these manuals is explained here: |notation| + + +JUMPING AROUND + +The text contains hyperlinks between the two parts, allowing you to quickly +jump between the description of an editing task and a precise explanation of +the commands and options used for it. Use these two commands: + + Press CTRL-] to jump to a subject under the cursor. + Press CTRL-O to jump back (repeat to go further back). + +Many links are in vertical bars, like this: |bars|. The bars themselves may +be hidden or invisible, see below. An option name, like 'number', a command +in double quotes like ":write" and any other word can also be used as a link. +Try it out: Move the cursor to CTRL-] and press CTRL-] on it. + +Other subjects can be found with the ":help" command, see |help.txt|. + +The bars and stars are usually hidden with the |conceal| feature. They also +use |hl-Ignore|, using the same color for the text as the background. You can +make them visible with: > + :set conceallevel=0 + :hi link HelpBar Normal + :hi link HelpStar Normal + +============================================================================== +*01.2* Vim installed + +Most of the manuals assume that Vim has been properly installed. If you +didn't do that yet, or if Vim doesn't run properly (e.g., files can't be found +or in the GUI the menus do not show up) first read the chapter on +installation: |usr_90.txt|. + *not-compatible* +The manuals often assume you are using Vim with Vi-compatibility switched +off. For most commands this doesn't matter, but sometimes it is important, +e.g., for multi-level undo. An easy way to make sure you are using a nice +setup is to copy the example vimrc file. By doing this inside Vim you don't +have to check out where it is located. How to do this depends on the system +you are using: + +Unix: > + :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc +MS-DOS, MS-Windows, OS/2: > + :!copy $VIMRUNTIME/vimrc_example.vim $VIM/_vimrc +Amiga: > + :!copy $VIMRUNTIME/vimrc_example.vim $VIM/.vimrc + +If the file already exists you probably want to keep it. + +If you start Vim now, the 'compatible' option should be off. You can check it +with this command: > + + :set compatible? + +If it responds with "nocompatible" you are doing well. If the response is +"compatible" you are in trouble. You will have to find out why the option is +still set. Perhaps the file you wrote above is not found. Use this command +to find out: > + + :scriptnames + +If your file is not in the list, check its location and name. If it is in the +list, there must be some other place where the 'compatible' option is switched +back on. + +For more info see |vimrc| and |compatible-default|. + + Note: + This manual is about using Vim in the normal way. There is an + alternative called "evim" (easy Vim). This is still Vim, but used in + a way that resembles a click-and-type editor like Notepad. It always + stays in Insert mode, thus it feels very different. It is not + explained in the user manual, since it should be mostly self + explanatory. See |evim-keys| for details. + +============================================================================== +*01.3* Using the Vim tutor *tutor* *vimtutor* + +Instead of reading the text (boring!) you can use the vimtutor to learn your +first Vim commands. This is a 30 minute tutorial that teaches the most basic +Vim functionality hands-on. + +On Unix, if Vim has been properly installed, you can start it from the shell: +> + vimtutor + +On MS-Windows you can find it in the Program/Vim menu. Or execute +vimtutor.bat in the $VIMRUNTIME directory. + +This will make a copy of the tutor file, so that you can edit it without +the risk of damaging the original. + There are a few translated versions of the tutor. To find out if yours is +available, use the two-letter language code. For French: > + + vimtutor fr + +On Unix, if you prefer using the GUI version of Vim, use "gvimtutor" or +"vimtutor -g" instead of "vimtutor". + +For OpenVMS, if Vim has been properly installed, you can start vimtutor from a +VMS prompt with: > + + @VIM:vimtutor + +Optionally add the two-letter language code as above. + + +On other systems, you have to do a little work: + +1. Copy the tutor file. You can do this with Vim (it knows where to find it): +> + vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' +< + This will write the file "TUTORCOPY" in the current directory. To use a +translated version of the tutor, append the two-letter language code to the +filename. For French: +> + vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q' +< +2. Edit the copied file with Vim: +> + vim -u NONE -c "set nocp" TUTORCOPY +< + The extra arguments make sure Vim is started in a good mood. + +3. Delete the copied file when you are finished with it: +> + del TUTORCOPY +< +============================================================================== +*01.4* Copyright *manual-copyright* + +The Vim user manual and reference manual are Copyright (c) 1988-2003 by Bram +Moolenaar. This material may be distributed only subject to the terms and +conditions set forth in the Open Publication License, v1.0 or later. The +latest version is presently available at: + http://www.opencontent.org/openpub/ + +People who contribute to the manuals must agree with the above copyright +notice. + *frombook* +Parts of the user manual come from the book "Vi IMproved - Vim" by Steve +Oualline (published by New Riders Publishing, ISBN: 0735710015). The Open +Publication License applies to this book. Only selected parts are included +and these have been modified (e.g., by removing the pictures, updating the +text for Vim 6.0 and later, fixing mistakes). The omission of the |frombook| +tag does not mean that the text does not come from the book. + +Many thanks to Steve Oualline and New Riders for creating this book and +publishing it under the OPL! It has been a great help while writing the user +manual. Not only by providing literal text, but also by setting the tone and +style. + +If you make money through selling the manuals, you are strongly encouraged to +donate part of the profit to help AIDS victims in Uganda. See |iccf|. + +============================================================================== + +Next chapter: |usr_02.txt| The first steps in Vim + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_02.txt b/share/vim/vim74/doc/usr_02.txt new file mode 100644 index 00000000..8bfa9ba0 --- /dev/null +++ b/share/vim/vim74/doc/usr_02.txt @@ -0,0 +1,564 @@ +*usr_02.txt* For Vim version 7.4. Last change: 2010 Jul 20 + + VIM USER MANUAL - by Bram Moolenaar + + The first steps in Vim + + +This chapter provides just enough information to edit a file with Vim. Not +well or fast, but you can edit. Take some time to practice with these +commands, they form the base for what follows. + +|02.1| Running Vim for the First Time +|02.2| Inserting text +|02.3| Moving around +|02.4| Deleting characters +|02.5| Undo and Redo +|02.6| Other editing commands +|02.7| Getting out +|02.8| Finding help + + Next chapter: |usr_03.txt| Moving around + Previous chapter: |usr_01.txt| About the manuals +Table of contents: |usr_toc.txt| + +============================================================================== +*02.1* Running Vim for the First Time + +To start Vim, enter this command: > + + gvim file.txt + +In UNIX you can type this at any command prompt. If you are running Microsoft +Windows, open an MS-DOS prompt window and enter the command. + In either case, Vim starts editing a file called file.txt. Because this +is a new file, you get a blank window. This is what your screen will look +like: + + +---------------------------------------+ + |# | + |~ | + |~ | + |~ | + |~ | + |"file.txt" [New file] | + +---------------------------------------+ + ('#" is the cursor position.) + +The tilde (~) lines indicate lines not in the file. In other words, when Vim +runs out of file to display, it displays tilde lines. At the bottom of the +screen, a message line indicates the file is named file.txt and shows that you +are creating a new file. The message information is temporary and other +information overwrites it. + + +THE VIM COMMAND + +The gvim command causes the editor to create a new window for editing. If you +use this command: > + + vim file.txt + +the editing occurs inside your command window. In other words, if you are +running inside an xterm, the editor uses your xterm window. If you are using +an MS-DOS command prompt window under Microsoft Windows, the editing occurs +inside this window. The text in the window will look the same for both +versions, but with gvim you have extra features, like a menu bar. More about +that later. + +============================================================================== +*02.2* Inserting text + +The Vim editor is a modal editor. That means that the editor behaves +differently, depending on which mode you are in. The two basic modes are +called Normal mode and Insert mode. In Normal mode the characters you type +are commands. In Insert mode the characters are inserted as text. + Since you have just started Vim it will be in Normal mode. To start Insert +mode you type the "i" command (i for Insert). Then you can enter +the text. It will be inserted into the file. Do not worry if you make +mistakes; you can correct them later. To enter the following programmer's +limerick, this is what you type: > + + iA very intelligent turtle + Found programming UNIX a hurdle + +After typing "turtle" you press the <Enter> key to start a new line. Finally +you press the <Esc> key to stop Insert mode and go back to Normal mode. You +now have two lines of text in your Vim window: + + +---------------------------------------+ + |A very intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + + +WHAT IS THE MODE? + +To be able to see what mode you are in, type this command: > + + :set showmode + +You will notice that when typing the colon Vim moves the cursor to the last +line of the window. That's where you type colon commands (commands that start +with a colon). Finish this command by pressing the <Enter> key (all commands +that start with a colon are finished this way). + Now, if you type the "i" command Vim will display --INSERT-- at the bottom +of the window. This indicates you are in Insert mode. + + +---------------------------------------+ + |A very intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + |-- INSERT -- | + +---------------------------------------+ + +If you press <Esc> to go back to Normal mode the last line will be made blank. + + +GETTING OUT OF TROUBLE + +One of the problems for Vim novices is mode confusion, which is caused by +forgetting which mode you are in or by accidentally typing a command that +switches modes. To get back to Normal mode, no matter what mode you are in, +press the <Esc> key. Sometimes you have to press it twice. If Vim beeps back +at you, you already are in Normal mode. + +============================================================================== +*02.3* Moving around + +After you return to Normal mode, you can move around by using these keys: + + h left *hjkl* + j down + k up + l right + +At first, it may appear that these commands were chosen at random. After all, +who ever heard of using l for right? But actually, there is a very good +reason for these choices: Moving the cursor is the most common thing you do in +an editor, and these keys are on the home row of your right hand. In other +words, these commands are placed where you can type them the fastest +(especially when you type with ten fingers). + + Note: + You can also move the cursor by using the arrow keys. If you do, + however, you greatly slow down your editing because to press the arrow + keys, you must move your hand from the text keys to the arrow keys. + Considering that you might be doing it hundreds of times an hour, this + can take a significant amount of time. + Also, there are keyboards which do not have arrow keys, or which + locate them in unusual places; therefore, knowing the use of the hjkl + keys helps in those situations. + +One way to remember these commands is that h is on the left, l is on the +right and j points down. In a picture: > + + k + h l + j + +The best way to learn these commands is by using them. Use the "i" command to +insert some more lines of text. Then use the hjkl keys to move around and +insert a word somewhere. Don't forget to press <Esc> to go back to Normal +mode. The |vimtutor| is also a nice way to learn by doing. + +For Japanese users, Hiroshi Iwatani suggested using this: + + Komsomolsk + ^ + | + Huan Ho <--- ---> Los Angeles + (Yellow river) | + v + Java (the island, not the programming language) + +============================================================================== +*02.4* Deleting characters + +To delete a character, move the cursor over it and type "x". (This is a +throwback to the old days of the typewriter, when you deleted things by typing +xxxx over them.) Move the cursor to the beginning of the first line, for +example, and type xxxxxxx (seven x's) to delete "A very ". The result should +look like this: + + +---------------------------------------+ + |intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + +Now you can insert new text, for example by typing: > + + iA young <Esc> + +This begins an insert (the i), inserts the words "A young", and then exits +insert mode (the final <Esc>). The result: + + +---------------------------------------+ + |A young intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + + +DELETING A LINE + +To delete a whole line use the "dd" command. The following line will +then move up to fill the gap: + + +---------------------------------------+ + |Found programming UNIX a hurdle | + |~ | + |~ | + |~ | + | | + +---------------------------------------+ + + +DELETING A LINE BREAK + +In Vim you can join two lines together, which means that the line break +between them is deleted. The "J" command does this. + Take these two lines: + + A young intelligent ~ + turtle ~ + +Move the cursor to the first line and press "J": + + A young intelligent turtle ~ + +============================================================================== +*02.5* Undo and Redo + +Suppose you delete too much. Well, you can type it in again, but an easier +way exists. The "u" command undoes the last edit. Take a look at this in +action: After using "dd" to delete the first line, "u" brings it back. + Another one: Move the cursor to the A in the first line: + + A young intelligent turtle ~ + +Now type xxxxxxx to delete "A young". The result is as follows: + + intelligent turtle ~ + +Type "u" to undo the last delete. That delete removed the g, so the undo +restores the character. + + g intelligent turtle ~ + +The next u command restores the next-to-last character deleted: + + ng intelligent turtle ~ + +The next u command gives you the u, and so on: + + ung intelligent turtle ~ + oung intelligent turtle ~ + young intelligent turtle ~ + young intelligent turtle ~ + A young intelligent turtle ~ + + Note: + If you type "u" twice, and the result is that you get the same text + back, you have Vim configured to work Vi compatible. Look here to fix + this: |not-compatible|. + This text assumes you work "The Vim Way". You might prefer to use + the good old Vi way, but you will have to watch out for small + differences in the text then. + + +REDO + +If you undo too many times, you can press CTRL-R (redo) to reverse the +preceding command. In other words, it undoes the undo. To see this in +action, press CTRL-R twice. The character A and the space after it disappear: + + young intelligent turtle ~ + +There's a special version of the undo command, the "U" (undo line) command. +The undo line command undoes all the changes made on the last line that was +edited. Typing this command twice cancels the preceding "U". + + A very intelligent turtle ~ + xxxx Delete very + + A intelligent turtle ~ + xxxxxx Delete turtle + + A intelligent ~ + Restore line with "U" + A very intelligent turtle ~ + Undo "U" with "u" + A intelligent ~ + +The "U" command is a change by itself, which the "u" command undoes and CTRL-R +redoes. This might be a bit confusing. Don't worry, with "u" and CTRL-R you +can go to any of the situations you had. More about that in section |32.2|. + +============================================================================== +*02.6* Other editing commands + +Vim has a large number of commands to change the text. See |Q_in| and below. +Here are a few often used ones. + + +APPENDING + +The "i" command inserts a character before the character under the cursor. +That works fine; but what happens if you want to add stuff to the end of the +line? For that you need to insert text after the cursor. This is done with +the "a" (append) command. + For example, to change the line + + and that's not saying much for the turtle. ~ +to + and that's not saying much for the turtle!!! ~ + +move the cursor over to the dot at the end of the line. Then type "x" to +delete the period. The cursor is now positioned at the end of the line on the +e in turtle. Now type > + + a!!!<Esc> + +to append three exclamation points after the e in turtle: + + and that's not saying much for the turtle!!! ~ + + +OPENING UP A NEW LINE + +The "o" command creates a new, empty line below the cursor and puts Vim in +Insert mode. Then you can type the text for the new line. + Suppose the cursor is somewhere in the first of these two lines: + + A very intelligent turtle ~ + Found programming UNIX a hurdle ~ + +If you now use the "o" command and type new text: > + + oThat liked using Vim<Esc> + +The result is: + + A very intelligent turtle ~ + That liked using Vim ~ + Found programming UNIX a hurdle ~ + +The "O" command (uppercase) opens a line above the cursor. + + +USING A COUNT + +Suppose you want to move up nine lines. You can type "kkkkkkkkk" or you can +enter the command "9k". In fact, you can precede many commands with a number. +Earlier in this chapter, for instance, you added three exclamation points to +the end of a line by typing "a!!!<Esc>". Another way to do this is to use the +command "3a!<Esc>". The count of 3 tells the command that follows to triple +its effect. Similarly, to delete three characters, use the command "3x". The +count always comes before the command it applies to. + +============================================================================== +*02.7* Getting out + +To exit, use the "ZZ" command. This command writes the file and exits. + + Note: + Unlike many other editors, Vim does not automatically make a backup + file. If you type "ZZ", your changes are committed and there's no + turning back. You can configure the Vim editor to produce backup + files, see |07.4|. + + +DISCARDING CHANGES + +Sometimes you will make a sequence of changes and suddenly realize you were +better off before you started. Not to worry; Vim has a +quit-and-throw-things-away command. It is: > + + :q! + +Don't forget to press <Enter> to finish the command. + +For those of you interested in the details, the three parts of this command +are the colon (:), which enters Command-line mode; the q command, which tells +the editor to quit; and the override command modifier (!). + The override command modifier is needed because Vim is reluctant to throw +away changes. If you were to just type ":q", Vim would display an error +message and refuse to exit: + + E37: No write since last change (use ! to override) ~ + +By specifying the override, you are in effect telling Vim, "I know that what +I'm doing looks stupid, but I'm a big boy and really want to do this." + +If you want to continue editing with Vim: The ":e!" command reloads the +original version of the file. + +============================================================================== +*02.8* Finding help + +Everything you always wanted to know can be found in the Vim help files. +Don't be afraid to ask! + To get generic help use this command: > + + :help + +You could also use the first function key <F1>. If your keyboard has a <Help> +key it might work as well. + If you don't supply a subject, ":help" displays the general help window. +The creators of Vim did something very clever (or very lazy) with the help +system: They made the help window a normal editing window. You can use all +the normal Vim commands to move through the help information. Therefore h, j, +k, and l move left, down, up and right. + To get out of the help window, use the same command you use to get out of +the editor: "ZZ". This will only close the help window, not exit Vim. + +As you read the help text, you will notice some text enclosed in vertical bars +(for example, |help|). This indicates a hyperlink. If you position the +cursor anywhere between the bars and press CTRL-] (jump to tag), the help +system takes you to the indicated subject. (For reasons not discussed here, +the Vim terminology for a hyperlink is tag. So CTRL-] jumps to the location +of the tag given by the word under the cursor.) + After a few jumps, you might want to go back. CTRL-T (pop tag) takes you +back to the preceding position. CTRL-O (jump to older position) also works +nicely here. + At the top of the help screen, there is the notation *help.txt*. This name +between "*" characters is used by the help system to define a tag (hyperlink +destination). + See |29.1| for details about using tags. + +To get help on a given subject, use the following command: > + + :help {subject} + +To get help on the "x" command, for example, enter the following: > + + :help x + +To find out how to delete text, use this command: > + + :help deleting + +To get a complete index of all Vim commands, use the following command: > + + :help index + +When you need to get help for a control character command (for example, +CTRL-A), you need to spell it with the prefix "CTRL-". > + + :help CTRL-A + +The Vim editor has many different modes. By default, the help system displays +the normal-mode commands. For example, the following command displays help +for the normal-mode CTRL-H command: > + + :help CTRL-H + +To identify other modes, use a mode prefix. If you want the help for the +insert-mode version of a command, use "i_". For CTRL-H this gives you the +following command: > + + :help i_CTRL-H + +When you start the Vim editor, you can use several command-line arguments. +These all begin with a dash (-). To find what the -t argument does, for +example, use the command: > + + :help -t + +The Vim editor has a number of options that enable you to configure and +customize the editor. If you want help for an option, you need to enclose it +in single quotation marks. To find out what the 'number' option does, for +example, use the following command: > + + :help 'number' + +The table with all mode prefixes can be found here: |help-context|. + +Special keys are enclosed in angle brackets. To find help on the up-arrow key +in Insert mode, for instance, use this command: > + + :help i_<Up> + +If you see an error message that you don't understand, for example: + + E37: No write since last change (use ! to override) ~ + +You can use the error ID at the start to find help about it: > + + :help E37 + + +Summary: *help-summary* > + :help +< Gives you very general help. Scroll down to see a list of all + helpfiles, including those added locally (i.e. not distributed + with Vim). > + :help user-toc.txt +< Table of contents of the User Manual. > + :help :subject +< Ex-command "subject", for instance the following: > + :help :help +< Help on getting help. > + :help abc +< normal-mode command "abc". > + :help CTRL-B +< Control key <C-B> in Normal mode. > + :help i_abc + :help i_CTRL-B +< The same in Insert mode. > + :help v_abc + :help v_CTRL-B +< The same in Visual mode. > + :help c_abc + :help c_CTRL-B +< The same in Command-line mode. > + :help 'subject' +< Option 'subject'. > + :help subject() +< Function "subject". > + :help -subject +< Command-line option "-subject". > + :help +subject +< Compile-time feature "+subject". > + :help EventName +< Autocommand event "EventName". > + :help digraphs.txt +< The top of the helpfile "digraph.txt". + Similarly for any other helpfile. > + :help pattern<Tab> +< Find a help tag starting with "pattern". Repeat <Tab> for + others. > + :help pattern<Ctrl-D> +< See all possible help tag matches "pattern" at once. > + :helpgrep pattern +< Search the whole text of all help files for pattern "pattern". + Jumps to the first match. Jump to other matches with: > + :cn +< next match > + :cprev + :cN +< previous match > + :cfirst + :clast +< first or last match > + :copen + :cclose +< open/close the quickfix window; press <Enter> to jump + to the item under the cursor + + +============================================================================== + +Next chapter: |usr_03.txt| Moving around + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_03.txt b/share/vim/vim74/doc/usr_03.txt new file mode 100644 index 00000000..61732608 --- /dev/null +++ b/share/vim/vim74/doc/usr_03.txt @@ -0,0 +1,654 @@ +*usr_03.txt* For Vim version 7.4. Last change: 2006 Jun 21 + + VIM USER MANUAL - by Bram Moolenaar + + Moving around + + +Before you can insert or delete text the cursor has to be moved to the right +place. Vim has a large number of commands to position the cursor. This +chapter shows you how to use the most important ones. You can find a list of +these commands below |Q_lr|. + +|03.1| Word movement +|03.2| Moving to the start or end of a line +|03.3| Moving to a character +|03.4| Matching a parenthesis +|03.5| Moving to a specific line +|03.6| Telling where you are +|03.7| Scrolling around +|03.8| Simple searches +|03.9| Simple search patterns +|03.10| Using marks + + Next chapter: |usr_04.txt| Making small changes + Previous chapter: |usr_02.txt| The first steps in Vim +Table of contents: |usr_toc.txt| + +============================================================================== +*03.1* Word movement + +To move the cursor forward one word, use the "w" command. Like most Vim +commands, you can use a numeric prefix to move past multiple words. For +example, "3w" moves three words. This figure shows how it works: + + This is a line with example text ~ + --->-->->-----------------> + w w w 3w + +Notice that "w" moves to the start of the next word if it already is at the +start of a word. + The "b" command moves backward to the start of the previous word: + + This is a line with example text ~ + <----<--<-<---------<--- + b b b 2b b + +There is also the "e" command that moves to the next end of a word and "ge", +which moves to the previous end of a word: + + This is a line with example text ~ + <- <--- -----> ----> + ge ge e e + +If you are at the last word of a line, the "w" command will take you to the +first word in the next line. Thus you can use this to move through a +paragraph, much faster than using "l". "b" does the same in the other +direction. + +A word ends at a non-word character, such as a ".", "-" or ")". To change +what Vim considers to be a word, see the 'iskeyword' option. + It is also possible to move by white-space separated WORDs. This is not a +word in the normal sense, that's why the uppercase is used. The commands for +moving by WORDs are also uppercase, as this figure shows: + + ge b w e + <- <- ---> ---> + This is-a line, with special/separated/words (and some more). ~ + <----- <----- --------------------> -----> + gE B W E + +With this mix of lowercase and uppercase commands, you can quickly move +forward and backward through a paragraph. + +============================================================================== +*03.2* Moving to the start or end of a line + +The "$" command moves the cursor to the end of a line. If your keyboard has +an <End> key it will do the same thing. + +The "^" command moves to the first non-blank character of the line. The "0" +command (zero) moves to the very first character of the line. The <Home> key +does the same thing. In a picture: + + ^ + <------------ + .....This is a line with example text ~ + <----------------- ---------------> + 0 $ + +(the "....." indicates blanks here) + + The "$" command takes a count, like most movement commands. But moving to +the end of the line several times doesn't make sense. Therefore it causes the +editor to move to the end of another line. For example, "1$" moves you to +the end of the first line (the one you're on), "2$" to the end of the next +line, and so on. + The "0" command doesn't take a count argument, because the "0" would be +part of the count. Unexpectedly, using a count with "^" doesn't have any +effect. + +============================================================================== +*03.3* Moving to a character + +One of the most useful movement commands is the single-character search +command. The command "fx" searches forward in the line for the single +character x. Hint: "f" stands for "Find". + For example, you are at the beginning of the following line. Suppose you +want to go to the h of human. Just execute the command "fh" and the cursor +will be positioned over the h: + + To err is human. To really foul up you need a computer. ~ + ---------->---------------> + fh fy + +This also shows that the command "fy" moves to the end of the word really. + You can specify a count; therefore, you can go to the "l" of "foul" with +"3fl": + + To err is human. To really foul up you need a computer. ~ + ---------------------> + 3fl + +The "F" command searches to the left: + + To err is human. To really foul up you need a computer. ~ + <--------------------- + Fh + +The "tx" command works like the "fx" command, except it stops one character +before the searched character. Hint: "t" stands for "To". The backward +version of this command is "Tx". + + To err is human. To really foul up you need a computer. ~ + <------------ -------------> + Th tn + +These four commands can be repeated with ";". "," repeats in the other +direction. The cursor is never moved to another line. Not even when the +sentence continues. + +Sometimes you will start a search, only to realize that you have typed the +wrong command. You type "f" to search backward, for example, only to realize +that you really meant "F". To abort a search, press <Esc>. So "f<Esc>" is an +aborted forward search and doesn't do anything. Note: <Esc> cancels most +operations, not just searches. + +============================================================================== +*03.4* Matching a parenthesis + +When writing a program you often end up with nested () constructs. Then the +"%" command is very handy: It moves to the matching paren. If the cursor is +on a "(" it will move to the matching ")". If it's on a ")" it will move to +the matching "(". + + % + <-----> + if (a == (b * c) / d) ~ + <----------------> + % + +This also works for [] and {} pairs. (This can be defined with the +'matchpairs' option.) + +When the cursor is not on a useful character, "%" will search forward to find +one. Thus if the cursor is at the start of the line of the previous example, +"%" will search forward and find the first "(". Then it moves to its match: + + if (a == (b * c) / d) ~ + ---+----------------> + % + +============================================================================== +*03.5* Moving to a specific line + +If you are a C or C++ programmer, you are familiar with error messages such as +the following: + + prog.c:33: j undeclared (first use in this function) ~ + +This tells you that you might want to fix something on line 33. So how do you +find line 33? One way is to do "9999k" to go to the top of the file and "32j" +to go down thirty two lines. It is not a good way, but it works. A much +better way of doing things is to use the "G" command. With a count, this +command positions you at the given line number. For example, "33G" puts you +on line 33. (For a better way of going through a compiler's error list, see +|usr_30.txt|, for information on the :make command.) + With no argument, "G" positions you at the end of the file. A quick way to +go to the start of a file use "gg". "1G" will do the same, but is a tiny bit +more typing. + + | first line of a file ^ + | text text text text | + | text text text text | gg + 7G | text text text text | + | text text text text + | text text text text + V text text text text | + text text text text | G + text text text text | + last line of a file V + +Another way to move to a line is using the "%" command with a count. For +example "50%" moves you to halfway the file. "90%" goes to near the end. + +The previous assumes that you want to move to a line in the file, no matter if +it's currently visible or not. What if you want to move to one of the lines +you can see? This figure shows the three commands you can use: + + +---------------------------+ + H --> | text sample text | + | sample text | + | text sample text | + | sample text | + M --> | text sample text | + | sample text | + | text sample text | + | sample text | + L --> | text sample text | + +---------------------------+ + +Hints: "H" stands for Home, "M" for Middle and "L" for Last. + +============================================================================== +*03.6* Telling where you are + +To see where you are in a file, there are three ways: + +1. Use the CTRL-G command. You get a message like this (assuming the 'ruler' + option is off): + + "usr_03.txt" line 233 of 650 --35%-- col 45-52 ~ + + This shows the name of the file you are editing, the line number where the + cursor is, the total number of lines, the percentage of the way through + the file and the column of the cursor. + Sometimes you will see a split column number. For example, "col 2-9". + This indicates that the cursor is positioned on the second character, but + because character one is a tab, occupying eight spaces worth of columns, + the screen column is 9. + +2. Set the 'number' option. This will display a line number in front of + every line: > + + :set number +< + To switch this off again: > + + :set nonumber +< + Since 'number' is a boolean option, prepending "no" to its name has the + effect of switching it off. A boolean option has only these two values, + it is either on or off. + Vim has many options. Besides the boolean ones there are options with + a numerical value and string options. You will see examples of this where + they are used. + +3. Set the 'ruler' option. This will display the cursor position in the + lower right corner of the Vim window: > + + :set ruler + +Using the 'ruler' option has the advantage that it doesn't take much room, +thus there is more space for your text. + +============================================================================== +*03.7* Scrolling around + +The CTRL-U command scrolls down half a screen of text. Think of looking +through a viewing window at the text and moving this window up by half the +height of the window. Thus the window moves up over the text, which is +backward in the file. Don't worry if you have a little trouble remembering +which end is up. Most users have the same problem. + The CTRL-D command moves the viewing window down half a screen in the file, +thus scrolls the text up half a screen. + + +----------------+ + | some text | + | some text | + | some text | + +---------------+ | some text | + | some text | CTRL-U --> | | + | | | 123456 | + | 123456 | +----------------+ + | 7890 | + | | +----------------+ + | example | CTRL-D --> | 7890 | + +---------------+ | | + | example | + | example | + | example | + | example | + +----------------+ + +To scroll one line at a time use CTRL-E (scroll up) and CTRL-Y (scroll down). +Think of CTRL-E to give you one line Extra. (If you use MS-Windows compatible +key mappings CTRL-Y will redo a change instead of scroll.) + +To scroll forward by a whole screen (except for two lines) use CTRL-F. The +other way is backward, CTRL-B is the command to use. Fortunately CTRL-F is +Forward and CTRL-B is Backward, that's easy to remember. + +A common issue is that after moving down many lines with "j" your cursor is at +the bottom of the screen. You would like to see the context of the line with +the cursor. That's done with the "zz" command. + + +------------------+ +------------------+ + | some text | | some text | + | some text | | some text | + | some text | | some text | + | some text | zz --> | line with cursor | + | some text | | some text | + | some text | | some text | + | line with cursor | | some text | + +------------------+ +------------------+ + +The "zt" command puts the cursor line at the top, "zb" at the bottom. There +are a few more scrolling commands, see |Q_sc|. To always keep a few lines of +context around the cursor, use the 'scrolloff' option. + +============================================================================== +*03.8* Simple searches + +To search for a string, use the "/string" command. To find the word include, +for example, use the command: > + + /include + +You will notice that when you type the "/" the cursor jumps to the last line +of the Vim window, like with colon commands. That is where you type the word. +You can press the backspace key (backarrow or <BS>) to make corrections. Use +the <Left> and <Right> cursor keys when necessary. + Pressing <Enter> executes the command. + + Note: + The characters .*[]^%/\?~$ have special meanings. If you want to use + them in a search you must put a \ in front of them. See below. + +To find the next occurrence of the same string use the "n" command. Use this +to find the first #include after the cursor: > + + /#include + +And then type "n" several times. You will move to each #include in the text. +You can also use a count if you know which match you want. Thus "3n" finds +the third match. Using a count with "/" doesn't work. + +The "?" command works like "/" but searches backwards: > + + ?word + +The "N" command repeats the last search the opposite direction. Thus using +"N" after a "/" command search backwards, using "N" after "?" searches +forward. + + +IGNORING CASE + +Normally you have to type exactly what you want to find. If you don't care +about upper or lowercase in a word, set the 'ignorecase' option: > + + :set ignorecase + +If you now search for "word", it will also match "Word" and "WORD". To match +case again: > + + :set noignorecase + + +HISTORY + +Suppose you do three searches: > + + /one + /two + /three + +Now let's start searching by typing a simple "/" without pressing <Enter>. If +you press <Up> (the cursor key), Vim puts "/three" on the command line. +Pressing <Enter> at this point searches for three. If you do not press +<Enter>, but press <Up> instead, Vim changes the prompt to "/two". Another +press of <Up> moves you to "/one". + You can also use the <Down> cursor key to move through the history of +search commands in the other direction. + +If you know what a previously used pattern starts with, and you want to use it +again, type that character before pressing <Up>. With the previous example, +you can type "/o<Up>" and Vim will put "/one" on the command line. + +The commands starting with ":" also have a history. That allows you to recall +a previous command and execute it again. These two histories are separate. + + +SEARCHING FOR A WORD IN THE TEXT + +Suppose you see the word "TheLongFunctionName" in the text and you want to +find the next occurrence of it. You could type "/TheLongFunctionName", but +that's a lot of typing. And when you make a mistake Vim won't find it. + There is an easier way: Position the cursor on the word and use the "*" +command. Vim will grab the word under the cursor and use it as the search +string. + The "#" command does the same in the other direction. You can prepend a +count: "3*" searches for the third occurrence of the word under the cursor. + + +SEARCHING FOR WHOLE WORDS + +If you type "/the" it will also match "there". To only find words that end +in "the" use: > + + /the\> + +The "\>" item is a special marker that only matches at the end of a word. +Similarly "\<" only matches at the begin of a word. Thus to search for the +word "the" only: > + + /\<the\> + +This does not match "there" or "soothe". Notice that the "*" and "#" commands +use these start-of-word and end-of-word markers to only find whole words (you +can use "g*" and "g#" to match partial words). + + +HIGHLIGHTING MATCHES + +While editing a program you see a variable called "nr". You want to check +where it's used. You could move the cursor to "nr" and use the "*" command +and press "n" to go along all the matches. + There is another way. Type this command: > + + :set hlsearch + +If you now search for "nr", Vim will highlight all matches. That is a very +good way to see where the variable is used, without the need to type commands. + To switch this off: > + + :set nohlsearch + +Then you need to switch it on again if you want to use it for the next search +command. If you only want to remove the highlighting, use this command: > + + :nohlsearch + +This doesn't reset the option. Instead, it disables the highlighting. As +soon as you execute a search command, the highlighting will be used again. +Also for the "n" and "N" commands. + + +TUNING SEARCHES + +There are a few options that change how searching works. These are the +essential ones: +> + :set incsearch + +This makes Vim display the match for the string while you are still typing it. +Use this to check if the right match will be found. Then press <Enter> to +really jump to that location. Or type more to change the search string. +> + :set nowrapscan + +This stops the search at the end of the file. Or, when you are searching +backwards, at the start of the file. The 'wrapscan' option is on by default, +thus searching wraps around the end of the file. + + +INTERMEZZO + +If you like one of the options mentioned before, and set it each time you use +Vim, you can put the command in your Vim startup file. + Edit the file, as mentioned at |not-compatible|. Or use this command to +find out where it is: > + + :scriptnames + +Edit the file, for example with: > + + :edit ~/.vimrc + +Then add a line with the command to set the option, just like you typed it in +Vim. Example: > + + Go:set hlsearch<Esc> + +"G" moves to the end of the file. "o" starts a new line, where you type the +":set" command. You end insert mode with <Esc>. Then write the file: > + + ZZ + +If you now start Vim again, the 'hlsearch' option will already be set. + +============================================================================== +*03.9* Simple search patterns + +The Vim editor uses regular expressions to specify what to search for. +Regular expressions are an extremely powerful and compact way to specify a +search pattern. Unfortunately, this power comes at a price, because regular +expressions are a bit tricky to specify. + In this section we mention only a few essential ones. More about search +patterns and commands in chapter 27 |usr_27.txt|. You can find the full +explanation here: |pattern|. + + +BEGINNING AND END OF A LINE + +The ^ character matches the beginning of a line. On an English-US keyboard +you find it above the 6. The pattern "include" matches the word include +anywhere on the line. But the pattern "^include" matches the word include +only if it is at the beginning of a line. + The $ character matches the end of a line. Therefore, "was$" matches the +word was only if it is at the end of a line. + +Let's mark the places where "the" matches in this example line with "x"s: + + the solder holding one of the chips melted and the ~ + xxx xxx xxx + +Using "/the$" we find this match: + + the solder holding one of the chips melted and the ~ + xxx + +And with "/^the" we find this one: + the solder holding one of the chips melted and the ~ + xxx + +You can try searching with "/^the$", it will only match a single line +consisting of "the". White space does matter here, thus if a line contains a +space after the word, like "the ", the pattern will not match. + + +MATCHING ANY SINGLE CHARACTER + +The . (dot) character matches any existing character. For example, the +pattern "c.m" matches a string whose first character is a c, whose second +character is anything, and whose the third character is m. Example: + + We use a computer that became the cummin winter. ~ + xxx xxx xxx + + +MATCHING SPECIAL CHARACTERS + +If you really want to match a dot, you must avoid its special meaning by +putting a backslash before it. + If you search for "ter.", you will find these matches: + + We use a computer that became the cummin winter. ~ + xxxx xxxx + +Searching for "ter\." only finds the second match. + +============================================================================== +*03.10* Using marks + +When you make a jump to a position with the "G" command, Vim remembers the +position from before this jump. This position is called a mark. To go back +where you came from, use this command: > + + `` + +This ` is a backtick or open single-quote character. + If you use the same command a second time you will jump back again. That's +because the ` command is a jump itself, and the position from before this jump +is remembered. + +Generally, every time you do a command that can move the cursor further than +within the same line, this is called a jump. This includes the search +commands "/" and "n" (it doesn't matter how far away the match is). But not +the character searches with "fx" and "tx" or the word movements "w" and "e". + Also, "j" and "k" are not considered to be a jump. Even when you use a +count to make them move the cursor quite a long way away. + +The `` command jumps back and forth, between two points. The CTRL-O command +jumps to older positions (Hint: O for older). CTRL-I then jumps back to newer +positions (Hint: I is just next to O on the keyboard). Consider this sequence +of commands: > + + 33G + /^The + CTRL-O + +You first jump to line 33, then search for a line that starts with "The". +Then with CTRL-O you jump back to line 33. Another CTRL-O takes you back to +where you started. If you now use CTRL-I you jump to line 33 again. And +to the match for "The" with another CTRL-I. + + + | example text ^ | + 33G | example text | CTRL-O | CTRL-I + | example text | | + V line 33 text ^ V + | example text | | + /^The | example text | CTRL-O | CTRL-I + V There you are | V + example text + + Note: + CTRL-I is the same as <Tab>. + +The ":jumps" command gives a list of positions you jumped to. The entry which +you used last is marked with a ">". + + +NAMED MARKS *bookmark* + +Vim enables you to place your own marks in the text. The command "ma" marks +the place under the cursor as mark a. You can place 26 marks (a through z) in +your text. You can't see them, it's just a position that Vim remembers. + To go to a mark, use the command `{mark}, where {mark} is the mark letter. +Thus to move to the a mark: +> + `a + +The command 'mark (single quotation mark, or apostrophe) moves you to the +beginning of the line containing the mark. This differs from the `mark +command, which moves you to marked column. + +The marks can be very useful when working on two related parts in a file. +Suppose you have some text near the start of the file you need to look at, +while working on some text near the end of the file. + Move to the text at the start and place the s (start) mark there: > + + ms + +Then move to the text you want to work on and put the e (end) mark there: > + + me + +Now you can move around, and when you want to look at the start of the file, +you use this to jump there: > + + 's + +Then you can use '' to jump back to where you were, or 'e to jump to the text +you were working on at the end. + There is nothing special about using s for start and e for end, they are +just easy to remember. + +You can use this command to get a list of marks: > + + :marks + +You will notice a few special marks. These include: + + ' The cursor position before doing a jump + " The cursor position when last editing the file + [ Start of the last change + ] End of the last change + +============================================================================== + +Next chapter: |usr_04.txt| Making small changes + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_04.txt b/share/vim/vim74/doc/usr_04.txt new file mode 100644 index 00000000..c09cb204 --- /dev/null +++ b/share/vim/vim74/doc/usr_04.txt @@ -0,0 +1,514 @@ +*usr_04.txt* For Vim version 7.4. Last change: 2008 Sep 06 + + VIM USER MANUAL - by Bram Moolenaar + + Making small changes + + +This chapter shows you several ways of making corrections and moving text +around. It teaches you the three basic ways to change text: operator-motion, +Visual mode and text objects. + +|04.1| Operators and motions +|04.2| Changing text +|04.3| Repeating a change +|04.4| Visual mode +|04.5| Moving text +|04.6| Copying text +|04.7| Using the clipboard +|04.8| Text objects +|04.9| Replace mode +|04.10| Conclusion + + Next chapter: |usr_05.txt| Set your settings + Previous chapter: |usr_03.txt| Moving around +Table of contents: |usr_toc.txt| + +============================================================================== +*04.1* Operators and motions + +In chapter 2 you learned the "x" command to delete a single character. And +using a count: "4x" deletes four characters. + The "dw" command deletes a word. You may recognize the "w" command as the +move word command. In fact, the "d" command may be followed by any motion +command, and it deletes from the current location to the place where the +cursor winds up. + The "4w" command, for example, moves the cursor over four words. The d4w +command deletes four words. + + To err is human. To really foul up you need a computer. ~ + ------------------> + d4w + + To err is human. you need a computer. ~ + +Vim only deletes up to the position where the motion takes the cursor. That's +because Vim knows that you probably don't want to delete the first character +of a word. If you use the "e" command to move to the end of a word, Vim +guesses that you do want to include that last character: + + To err is human. you need a computer. ~ + --------> + d2e + + To err is human. a computer. ~ + +Whether the character under the cursor is included depends on the command you +used to move to that character. The reference manual calls this "exclusive" +when the character isn't included and "inclusive" when it is. + +The "$" command moves to the end of a line. The "d$" command deletes from the +cursor to the end of the line. This is an inclusive motion, thus the last +character of the line is included in the delete operation: + + To err is human. a computer. ~ + ------------> + d$ + + To err is human ~ + +There is a pattern here: operator-motion. You first type an operator command. +For example, "d" is the delete operator. Then you type a motion command like +"4l" or "w". This way you can operate on any text you can move over. + +============================================================================== +*04.2* Changing text + +Another operator is "c", change. It acts just like the "d" operator, except +it leaves you in Insert mode. For example, "cw" changes a word. Or more +specifically, it deletes a word and then puts you in Insert mode. + + To err is human ~ + -------> + c2wbe<Esc> + + To be human ~ + +This "c2wbe<Esc>" contains these bits: + + c the change operator + 2w move two words (they are deleted and Insert mode started) + be insert this text + <Esc> back to Normal mode + +If you have paid attention, you will have noticed something strange: The space +before "human" isn't deleted. There is a saying that for every problem there +is an answer that is simple, clear, and wrong. That is the case with the +example used here for the "cw" command. The c operator works just like the +d operator, with one exception: "cw". It actually works like "ce", change to +end of word. Thus the space after the word isn't included. This is an +exception that dates back to the old Vi. Since many people are used to it +now, the inconsistency has remained in Vim. + + +MORE CHANGES + +Like "dd" deletes a whole line, "cc" changes a whole line. It keeps the +existing indent (leading white space) though. + +Just like "d$" deletes until the end of the line, "c$" changes until the end +of the line. It's like doing "d$" to delete the text and then "a" to start +Insert mode and append new text. + + +SHORTCUTS + +Some operator-motion commands are used so often that they have been given a +single letter command: + + x stands for dl (delete character under the cursor) + X stands for dh (delete character left of the cursor) + D stands for d$ (delete to end of the line) + C stands for c$ (change to end of the line) + s stands for cl (change one character) + S stands for cc (change a whole line) + + +WHERE TO PUT THE COUNT + +The commands "3dw" and "d3w" delete three words. If you want to get really +picky about things, the first command, "3dw", deletes one word three times; +the command "d3w" deletes three words once. This is a difference without a +distinction. You can actually put in two counts, however. For example, +"3d2w" deletes two words, repeated three times, for a total of six words. + + +REPLACING WITH ONE CHARACTER + +The "r" command is not an operator. It waits for you to type a character, and +will replace the character under the cursor with it. You could do the same +with "cl" or with the "s" command, but with "r" you don't have to press <Esc> + + there is somerhing grong here ~ + rT rt rw + + There is something wrong here ~ + +Using a count with "r" causes that many characters to be replaced with the +same character. Example: + + There is something wrong here ~ + 5rx + + There is something xxxxx here ~ + +To replace a character with a line break use "r<Enter>". This deletes one +character and inserts a line break. Using a count here only applies to the +number of characters deleted: "4r<Enter>" replaces four characters with one +line break. + +============================================================================== +*04.3* Repeating a change + +The "." command is one of the most simple yet powerful commands in Vim. It +repeats the last change. For instance, suppose you are editing an HTML file +and want to delete all the <B> tags. You position the cursor on the first < +and delete the <B> with the command "df>". You then go to the < of the next +</B> and kill it using the "." command. The "." command executes the last +change command (in this case, "df>"). To delete another tag, position the +cursor on the < and use the "." command. + + To <B>generate</B> a table of <B>contents ~ + f< find first < ---> + df> delete to > --> + f< find next < ---------> + . repeat df> ---> + f< find next < -------------> + . repeat df> --> + +The "." command works for all changes you make, except for the "u" (undo), +CTRL-R (redo) and commands that start with a colon (:). + +Another example: You want to change the word "four" to "five". It appears +several times in your text. You can do this quickly with this sequence of +commands: + + /four<Enter> find the first string "four" + cwfive<Esc> change the word to "five" + n find the next "four" + . repeat the change to "five' + n find the next "four" + . repeat the change + etc. + +============================================================================== +*04.4* Visual mode + +To delete simple items the operator-motion changes work quite well. But often +it's not so easy to decide which command will move over the text you want to +change. Then you can use Visual mode. + +You start Visual mode by pressing "v". You move the cursor over the text you +want to work on. While you do this, the text is highlighted. Finally type +the operator command. + For example, to delete from halfway one word to halfway another word: + + This is an examination sample of visual mode ~ + ----------> + velllld + + This is an example of visual mode ~ + +When doing this you don't really have to count how many times you have to +press "l" to end up in the right position. You can immediately see what text +will be deleted when you press "d". + +If at any time you decide you don't want to do anything with the highlighted +text, just press <Esc> and Visual mode will stop without doing anything. + + +SELECTING LINES + +If you want to work on whole lines, use "V" to start Visual mode. You will +see right away that the whole line is highlighted, without moving around. +When you move left or right nothing changes. When you move up or down the +selection is extended whole lines at a time. + For example, select three lines with "Vjj": + + +------------------------+ + | text more text | + >> | more text more text | | + selected lines >> | text text text | | Vjj + >> | text more | V + | more text more | + +------------------------+ + + +SELECTING BLOCKS + +If you want to work on a rectangular block of characters, use CTRL-V to start +Visual mode. This is very useful when working on tables. + + name Q1 Q2 Q3 + pierre 123 455 234 + john 0 90 39 + steve 392 63 334 + +To delete the middle "Q2" column, move the cursor to the "Q" of "Q2". Press +CTRL-V to start blockwise Visual mode. Now move the cursor three lines down +with "3j" and to the next word with "w". You can see the first character of +the last column is included. To exclude it, use "h". Now press "d" and the +middle column is gone. + + +GOING TO THE OTHER SIDE + +If you have selected some text in Visual mode, and discover that you need to +change the other end of the selection, use the "o" command (Hint: o for other +end). The cursor will go to the other end, and you can move the cursor to +change where the selection starts. Pressing "o" again brings you back to the +other end. + +When using blockwise selection, you have four corners. "o" only takes you to +one of the other corners, diagonally. Use "O" to move to the other corner in +the same line. + +Note that "o" and "O" in Visual mode work very differently from Normal mode, +where they open a new line below or above the cursor. + +============================================================================== +*04.5* Moving text + +When you delete something with the "d", "x", or another command, the text is +saved. You can paste it back by using the p command. (The Vim name for +this is put). + Take a look at how this works. First you will delete an entire line, by +putting the cursor on the line you want to delete and typing "dd". Now you +move the cursor to where you want to put the line and use the "p" (put) +command. The line is inserted on the line below the cursor. + + a line a line a line + line 2 dd line 3 p line 3 + line 3 line 2 + +Because you deleted an entire line, the "p" command placed the text line below +the cursor. If you delete part of a line (a word, for instance), the "p" +command puts it just after the cursor. + + Some more boring try text to out commands. ~ + ----> + dw + + Some more boring text to out commands. ~ + -------> + welp + + Some more boring text to try out commands. ~ + + +MORE ON PUTTING + +The "P" command puts text like "p", but before the cursor. When you deleted a +whole line with "dd", "P" will put it back above the cursor. When you deleted +a word with "dw", "P" will put it back just before the cursor. + +You can repeat putting as many times as you like. The same text will be used. + +You can use a count with "p" and "P". The text will be repeated as many times +as specified with the count. Thus "dd" and then "3p" puts three copies of the +same deleted line. + + +SWAPPING TWO CHARACTERS + +Frequently when you are typing, your fingers get ahead of your brain (or the +other way around?). The result is a typo such as "teh" for "the". Vim +makes it easy to correct such problems. Just put the cursor on the e of "teh" +and execute the command "xp". This works as follows: "x" deletes the +character e and places it in a register. "p" puts the text after the cursor, +which is after the h. + + teh th the ~ + x p + +============================================================================== +*04.6* Copying text + +To copy text from one place to another, you could delete it, use "u" to undo +the deletion and then "p" to put it somewhere else. There is an easier way: +yanking. The "y" operator copies text into a register. Then a "p" command +can be used to put it. + Yanking is just a Vim name for copying. The "c" letter was already used +for the change operator, and "y" was still available. Calling this +operator "yank" made it easier to remember to use the "y" key. + +Since "y" is an operator, you use "yw" to yank a word. A count is possible as +usual. To yank two words use "y2w". Example: + + let sqr = LongVariable * ~ + --------------> + y2w + + let sqr = LongVariable * ~ + p + + let sqr = LongVariable * LongVariable ~ + +Notice that "yw" includes the white space after a word. If you don't want +this, use "ye". + +The "yy" command yanks a whole line, just like "dd" deletes a whole line. +Unexpectedly, while "D" deletes from the cursor to the end of the line, "Y" +works like "yy", it yanks the whole line. Watch out for this inconsistency! +Use "y$" to yank to the end of the line. + + a text line yy a text line a text line + line 2 line 2 p line 2 + last line last line a text line + last line + +============================================================================== +*04.7* Using the clipboard + +If you are using the GUI version of Vim (gvim), you can find the "Copy" item +in the "Edit" menu. First select some text with Visual mode, then use the +Edit/Copy menu. The selected text is now copied to the clipboard. You can +paste the text in other programs. In Vim itself too. + +If you have copied text to the clipboard in another application, you can paste +it in Vim with the Edit/Paste menu. This works in Normal mode and Insert +mode. In Visual mode the selected text is replaced with the pasted text. + +The "Cut" menu item deletes the text before it's put on the clipboard. The +"Copy", "Cut" and "Paste" items are also available in the popup menu (only +when there is a popup menu, of course). If your Vim has a toolbar, you can +also find these items there. + +If you are not using the GUI, or if you don't like using a menu, you have to +use another way. You use the normal "y" (yank) and "p" (put) commands, but +prepend "* (double-quote star) before it. To copy a line to the clipboard: > + + "*yy + +To put text from the clipboard back into the text: > + + "*p + +This only works on versions of Vim that include clipboard support. More about +the clipboard in section |09.3| and here: |clipboard|. + +============================================================================== +*04.8* Text objects + +If the cursor is in the middle of a word and you want to delete that word, you +need to move back to its start before you can do "dw". There is a simpler way +to do this: "daw". + + this is some example text. ~ + daw + + this is some text. ~ + +The "d" of "daw" is the delete operator. "aw" is a text object. Hint: "aw" +stands for "A Word". Thus "daw" is "Delete A Word". To be precise, the white +space after the word is also deleted (the white space before the word at the +end of the line). + +Using text objects is the third way to make changes in Vim. We already had +operator-motion and Visual mode. Now we add operator-text object. + It is very similar to operator-motion, but instead of operating on the text +between the cursor position before and after a movement command, the text +object is used as a whole. It doesn't matter where in the object the cursor +was. + +To change a whole sentence use "cis". Take this text: + + Hello there. This ~ + is an example. Just ~ + some text. ~ + +Move to the start of the second line, on "is an". Now use "cis": + + Hello there. Just ~ + some text. ~ + +The cursor is in between the blanks in the first line. Now you type the new +sentence "Another line.": + + Hello there. Another line. Just ~ + some text. ~ + +"cis" consists of the "c" (change) operator and the "is" text object. This +stands for "Inner Sentence". There is also the "as" (a sentence) object. The +difference is that "as" includes the white space after the sentence and "is" +doesn't. If you would delete a sentence, you want to delete the white space +at the same time, thus use "das". If you want to type new text the white +space can remain, thus you use "cis". + +You can also use text objects in Visual mode. It will include the text object +in the Visual selection. Visual mode continues, thus you can do this several +times. For example, start Visual mode with "v" and select a sentence with +"as". Now you can repeat "as" to include more sentences. Finally you use an +operator to do something with the selected sentences. + +You can find a long list of text objects here: |text-objects|. + +============================================================================== +*04.9* Replace mode + +The "R" command causes Vim to enter replace mode. In this mode, each +character you type replaces the one under the cursor. This continues until +you type <Esc>. + In this example you start Replace mode on the first "t" of "text": + + This is text. ~ + Rinteresting.<Esc> + + This is interesting. ~ + +You may have noticed that this command replaced 5 characters in the line with +twelve others. The "R" command automatically extends the line if it runs out +of characters to replace. It will not continue on the next line. + +You can switch between Insert mode and Replace mode with the <Insert> key. + +When you use <BS> (backspace) to make correction, you will notice that the +old text is put back. Thus it works like an undo command for the last typed +character. + +============================================================================== +*04.10* Conclusion + +The operators, movement commands and text objects give you the possibility to +make lots of combinations. Now that you know how it works, you can use N +operators with M movement commands to make N * M commands! + +You can find a list of operators here: |operator| + +For example, there are many other ways to delete pieces of text. Here are a +few often used ones: + +x delete character under the cursor (short for "dl") +X delete character before the cursor (short for "dh") +D delete from cursor to end of line (short for "d$") +dw delete from cursor to next start of word +db delete from cursor to previous start of word +diw delete word under the cursor (excluding white space) +daw delete word under the cursor (including white space) +dG delete until the end of the file +dgg delete until the start of the file + +If you use "c" instead of "d" they become change commands. And with "y" you +yank the text. And so forth. + + +There are a few often used commands to make changes that didn't fit somewhere +else: + + ~ change case of the character under the cursor, and move the + cursor to the next character. This is not an operator (unless + 'tildeop' is set), thus you can't use it with a motion + command. It does work in Visual mode and changes case for + all the selected text then. + + I Start Insert mode after moving the cursor to the first + non-blank in the line. + + A Start Insert mode after moving the cursor to the end of the + line. + +============================================================================== + +Next chapter: |usr_05.txt| Set your settings + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_05.txt b/share/vim/vim74/doc/usr_05.txt new file mode 100644 index 00000000..f71cf42c --- /dev/null +++ b/share/vim/vim74/doc/usr_05.txt @@ -0,0 +1,624 @@ +*usr_05.txt* For Vim version 7.4. Last change: 2012 Nov 20 + + VIM USER MANUAL - by Bram Moolenaar + + Set your settings + + +Vim can be tuned to work like you want it to. This chapter shows you how to +make Vim start with options set to different values. Add plugins to extend +Vim's capabilities. Or define your own macros. + +|05.1| The vimrc file +|05.2| The example vimrc file explained +|05.3| Simple mappings +|05.4| Adding a plugin +|05.5| Adding a help file +|05.6| The option window +|05.7| Often used options + + Next chapter: |usr_06.txt| Using syntax highlighting + Previous chapter: |usr_04.txt| Making small changes +Table of contents: |usr_toc.txt| + +============================================================================== +*05.1* The vimrc file *vimrc-intro* + +You probably got tired of typing commands that you use very often. To start +Vim with all your favorite option settings and mappings, you write them in +what is called the vimrc file. Vim executes the commands in this file when it +starts up. + +If you already have a vimrc file (e.g., when your sysadmin has one setup for +you), you can edit it this way: > + + :edit $MYVIMRC + +If you don't have a vimrc file yet, see |vimrc| to find out where you can +create a vimrc file. Also, the ":version" command mentions the name of the +"user vimrc file" Vim looks for. + +For Unix and Macintosh this file is always used and is recommended: + + ~/.vimrc ~ + +For MS-DOS and MS-Windows you can use one of these: + + $HOME/_vimrc ~ + $VIM/_vimrc ~ + +The vimrc file can contain all the commands that you type after a colon. The +most simple ones are for setting options. For example, if you want Vim to +always start with the 'incsearch' option on, add this line your vimrc file: > + + set incsearch + +For this new line to take effect you need to exit Vim and start it again. +Later you will learn how to do this without exiting Vim. + +This chapter only explains the most basic items. For more information on how +to write a Vim script file: |usr_41.txt|. + +============================================================================== +*05.2* The example vimrc file explained *vimrc_example.vim* + +In the first chapter was explained how the example vimrc (included in the +Vim distribution) file can be used to make Vim startup in not-compatible mode +(see |not-compatible|). The file can be found here: + + $VIMRUNTIME/vimrc_example.vim ~ + +In this section we will explain the various commands used in this file. This +will give you hints about how to set up your own preferences. Not everything +will be explained though. Use the ":help" command to find out more. + +> + set nocompatible + +As mentioned in the first chapter, these manuals explain Vim working in an +improved way, thus not completely Vi compatible. Setting the 'compatible' +option off, thus 'nocompatible' takes care of this. + +> + set backspace=indent,eol,start + +This specifies where in Insert mode the <BS> is allowed to delete the +character in front of the cursor. The three items, separated by commas, tell +Vim to delete the white space at the start of the line, a line break and the +character before where Insert mode started. +> + + set autoindent + +This makes Vim use the indent of the previous line for a newly created line. +Thus there is the same amount of white space before the new line. For example +when pressing <Enter> in Insert mode, and when using the "o" command to open a +new line. +> + + if has("vms") + set nobackup + else + set backup + endif + +This tells Vim to keep a backup copy of a file when overwriting it. But not +on the VMS system, since it keeps old versions of files already. The backup +file will have the same name as the original file with "~" added. See |07.4| +> + + set history=50 + +Keep 50 commands and 50 search patterns in the history. Use another number if +you want to remember fewer or more lines. +> + + set ruler + +Always display the current cursor position in the lower right corner of the +Vim window. + +> + set showcmd + +Display an incomplete command in the lower right corner of the Vim window, +left of the ruler. For example, when you type "2f", Vim is waiting for you to +type the character to find and "2f" is displayed. When you press "w" next, +the "2fw" command is executed and the displayed "2f" is removed. + + +-------------------------------------------------+ + |text in the Vim window | + |~ | + |~ | + |-- VISUAL -- 2f 43,8 17% | + +-------------------------------------------------+ + ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ + 'showmode' 'showcmd' 'ruler' + +> + set incsearch + +Display the match for a search pattern when halfway typing it. + +> + map Q gq + +This defines a key mapping. More about that in the next section. This +defines the "Q" command to do formatting with the "gq" operator. This is how +it worked before Vim 5.0. Otherwise the "Q" command starts Ex mode, but you +will not need it. + +> + vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h"<CR> + +This mapping yanks the visually selected text and searches for it in C files. +This is a complicated mapping. You can see that mappings can be used to do +quite complicated things. Still, it is just a sequence of commands that are +executed like you typed them. + +> + if &t_Co > 2 || has("gui_running") + syntax on + set hlsearch + endif + +This switches on syntax highlighting, but only if colors are available. And +the 'hlsearch' option tells Vim to highlight matches with the last used search +pattern. The "if" command is very useful to set options only when some +condition is met. More about that in |usr_41.txt|. + + *vimrc-filetype* > + filetype plugin indent on + +This switches on three very clever mechanisms: +1. Filetype detection. + Whenever you start editing a file, Vim will try to figure out what kind of + file this is. When you edit "main.c", Vim will see the ".c" extension and + recognize this as a "c" filetype. When you edit a file that starts with + "#!/bin/sh", Vim will recognize it as a "sh" filetype. + The filetype detection is used for syntax highlighting and the other two + items below. + See |filetypes|. + +2. Using filetype plugin files + Many different filetypes are edited with different options. For example, + when you edit a "c" file, it's very useful to set the 'cindent' option to + automatically indent the lines. These commonly useful option settings are + included with Vim in filetype plugins. You can also add your own, see + |write-filetype-plugin|. + +3. Using indent files + When editing programs, the indent of a line can often be computed + automatically. Vim comes with these indent rules for a number of + filetypes. See |:filetype-indent-on| and 'indentexpr'. + +> + autocmd FileType text setlocal textwidth=78 + +This makes Vim break text to avoid lines getting longer than 78 characters. +But only for files that have been detected to be plain text. There are +actually two parts here. "autocmd FileType text" is an autocommand. This +defines that when the file type is set to "text" the following command is +automatically executed. "setlocal textwidth=78" sets the 'textwidth' option +to 78, but only locally in one file. + + *restore-cursor* > + autocmd BufReadPost * + \ if line("'\"") > 1 && line("'\"") <= line("$") | + \ exe "normal! g`\"" | + \ endif + +Another autocommand. This time it is used after reading any file. The +complicated stuff after it checks if the '" mark is defined, and jumps to it +if so. The backslash at the start of a line is used to continue the command +from the previous line. That avoids a line getting very long. +See |line-continuation|. This only works in a Vim script file, not when +typing commands at the command-line. + +============================================================================== +*05.3* Simple mappings + +A mapping enables you to bind a set of Vim commands to a single key. Suppose, +for example, that you need to surround certain words with curly braces. In +other words, you need to change a word such as "amount" into "{amount}". With +the :map command, you can tell Vim that the F5 key does this job. The command +is as follows: > + + :map <F5> i{<Esc>ea}<Esc> +< + Note: + When entering this command, you must enter <F5> by typing four + characters. Similarly, <Esc> is not entered by pressing the <Esc> + key, but by typing five characters. Watch out for this difference + when reading the manual! + +Let's break this down: + <F5> The F5 function key. This is the trigger key that causes the + command to be executed as the key is pressed. + + i{<Esc> Insert the { character. The <Esc> key ends Insert mode. + + e Move to the end of the word. + + a}<Esc> Append the } to the word. + +After you execute the ":map" command, all you have to do to put {} around a +word is to put the cursor on the first character and press F5. + +In this example, the trigger is a single key; it can be any string. But when +you use an existing Vim command, that command will no longer be available. +You better avoid that. + One key that can be used with mappings is the backslash. Since you +probably want to define more than one mapping, add another character. You +could map "\p" to add parentheses around a word, and "\c" to add curly braces, +for example: > + + :map \p i(<Esc>ea)<Esc> + :map \c i{<Esc>ea}<Esc> + +You need to type the \ and the p quickly after another, so that Vim knows they +belong together. + +The ":map" command (with no arguments) lists your current mappings. At +least the ones for Normal mode. More about mappings in section |40.1|. + +============================================================================== +*05.4* Adding a plugin *add-plugin* *plugin* + +Vim's functionality can be extended by adding plugins. A plugin is nothing +more than a Vim script file that is loaded automatically when Vim starts. You +can add a plugin very easily by dropping it in your plugin directory. +{not available when Vim was compiled without the |+eval| feature} + +There are two types of plugins: + + global plugin: Used for all kinds of files + filetype plugin: Only used for a specific type of file + +The global plugins will be discussed first, then the filetype ones +|add-filetype-plugin|. + + +GLOBAL PLUGINS *standard-plugin* + +When you start Vim, it will automatically load a number of global plugins. +You don't have to do anything for this. They add functionality that most +people will want to use, but which was implemented as a Vim script instead of +being compiled into Vim. You can find them listed in the help index +|standard-plugin-list|. Also see |load-plugins|. + + *add-global-plugin* +You can add a global plugin to add functionality that will always be present +when you use Vim. There are only two steps for adding a global plugin: +1. Get a copy of the plugin. +2. Drop it in the right directory. + + +GETTING A GLOBAL PLUGIN + +Where can you find plugins? +- Some come with Vim. You can find them in the directory $VIMRUNTIME/macros + and its sub-directories. +- Download from the net. There is a large collection on http://www.vim.org. +- They are sometimes posted in a Vim |maillist|. +- You could write one yourself, see |write-plugin|. + +Some plugins come as a vimball archive, see |vimball|. +Some plugins can be updated automatically, see |getscript|. + + +USING A GLOBAL PLUGIN + +First read the text in the plugin itself to check for any special conditions. +Then copy the file to your plugin directory: + + system plugin directory ~ + Unix ~/.vim/plugin/ + PC and OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin + Amiga s:vimfiles/plugin + Macintosh $VIM:vimfiles:plugin + Mac OS X ~/.vim/plugin/ + RISC-OS Choices:vimfiles.plugin + +Example for Unix (assuming you didn't have a plugin directory yet): > + + mkdir ~/.vim + mkdir ~/.vim/plugin + cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin + +That's all! Now you can use the commands defined in this plugin to justify +text. + +Instead of putting plugins directly into the plugin/ directory, you may +better organize them by putting them into subdirectories under plugin/. +As an example, consider using "~/.vim/plugin/perl/*.vim" for all your Perl +plugins. + + +FILETYPE PLUGINS *add-filetype-plugin* *ftplugins* + +The Vim distribution comes with a set of plugins for different filetypes that +you can start using with this command: > + + :filetype plugin on + +That's all! See |vimrc-filetype|. + +If you are missing a plugin for a filetype you are using, or you found a +better one, you can add it. There are two steps for adding a filetype plugin: +1. Get a copy of the plugin. +2. Drop it in the right directory. + + +GETTING A FILETYPE PLUGIN + +You can find them in the same places as the global plugins. Watch out if the +type of file is mentioned, then you know if the plugin is a global or a +filetype one. The scripts in $VIMRUNTIME/macros are global ones, the filetype +plugins are in $VIMRUNTIME/ftplugin. + + +USING A FILETYPE PLUGIN *ftplugin-name* + +You can add a filetype plugin by dropping it in the right directory. The +name of this directory is in the same directory mentioned above for global +plugins, but the last part is "ftplugin". Suppose you have found a plugin for +the "stuff" filetype, and you are on Unix. Then you can move this file to the +ftplugin directory: > + + mv thefile ~/.vim/ftplugin/stuff.vim + +If that file already exists you already have a plugin for "stuff". You might +want to check if the existing plugin doesn't conflict with the one you are +adding. If it's OK, you can give the new one another name: > + + mv thefile ~/.vim/ftplugin/stuff_too.vim + +The underscore is used to separate the name of the filetype from the rest, +which can be anything. If you use "otherstuff.vim" it wouldn't work, it would +be loaded for the "otherstuff" filetype. + +On MS-DOS you cannot use long filenames. You would run into trouble if you +add a second plugin and the filetype has more than six characters. You can +use an extra directory to get around this: > + + mkdir $VIM/vimfiles/ftplugin/fortran + copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim + +The generic names for the filetype plugins are: > + + ftplugin/<filetype>.vim + ftplugin/<filetype>_<name>.vim + ftplugin/<filetype>/<name>.vim + +Here "<name>" can be any name that you prefer. +Examples for the "stuff" filetype on Unix: > + + ~/.vim/ftplugin/stuff.vim + ~/.vim/ftplugin/stuff_def.vim + ~/.vim/ftplugin/stuff/header.vim + +The <filetype> part is the name of the filetype the plugin is to be used for. +Only files of this filetype will use the settings from the plugin. The <name> +part of the plugin file doesn't matter, you can use it to have several plugins +for the same filetype. Note that it must end in ".vim". + + +Further reading: +|filetype-plugins| Documentation for the filetype plugins and information + about how to avoid that mappings cause problems. +|load-plugins| When the global plugins are loaded during startup. +|ftplugin-overrule| Overruling the settings from a global plugin. +|write-plugin| How to write a plugin script. +|plugin-details| For more information about using plugins or when your + plugin doesn't work. +|new-filetype| How to detect a new file type. + +============================================================================== +*05.5* Adding a help file *add-local-help* *matchit-install* + +If you are lucky, the plugin you installed also comes with a help file. We +will explain how to install the help file, so that you can easily find help +for your new plugin. + Let us use the "matchit.vim" plugin as an example (it is included with +Vim). This plugin makes the "%" command jump to matching HTML tags, +if/else/endif in Vim scripts, etc. Very useful, although it's not backwards +compatible (that's why it is not enabled by default). + This plugin comes with documentation: "matchit.txt". Let's first copy the +plugin to the right directory. This time we will do it from inside Vim, so +that we can use $VIMRUNTIME. (You may skip some of the "mkdir" commands if +you already have the directory.) > + + :!mkdir ~/.vim + :!mkdir ~/.vim/plugin + :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin + +The "cp" command is for Unix, on MS-DOS you can use "copy". + +Now create a "doc" directory in one of the directories in 'runtimepath'. > + + :!mkdir ~/.vim/doc + +Copy the help file to the "doc" directory. > + + :!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc + +Now comes the trick, which allows you to jump to the subjects in the new help +file: Generate the local tags file with the |:helptags| command. > + + :helptags ~/.vim/doc + +Now you can use the > + + :help g% + +command to find help for "g%" in the help file you just added. You can see an +entry for the local help file when you do: > + + :help local-additions + +The title lines from the local help files are automagically added to this +section. There you can see which local help files have been added and jump to +them through the tag. + +For writing a local help file, see |write-local-help|. + +============================================================================== +*05.6* The option window + +If you are looking for an option that does what you want, you can search in +the help files here: |options|. Another way is by using this command: > + + :options + +This opens a new window, with a list of options with a one-line explanation. +The options are grouped by subject. Move the cursor to a subject and press +<Enter> to jump there. Press <Enter> again to jump back. Or use CTRL-O. + +You can change the value of an option. For example, move to the "displaying +text" subject. Then move the cursor down to this line: + + set wrap nowrap ~ + +When you hit <Enter>, the line will change to: + + set nowrap wrap ~ + +The option has now been switched off. + +Just above this line is a short description of the 'wrap' option. Move the +cursor one line up to place it in this line. Now hit <Enter> and you jump to +the full help on the 'wrap' option. + +For options that take a number or string argument you can edit the value. +Then press <Enter> to apply the new value. For example, move the cursor a few +lines up to this line: + + set so=0 ~ + +Position the cursor on the zero with "$". Change it into a five with "r5". +Then press <Enter> to apply the new value. When you now move the cursor +around you will notice that the text starts scrolling before you reach the +border. This is what the 'scrolloff' option does, it specifies an offset +from the window border where scrolling starts. + +============================================================================== +*05.7* Often used options + +There are an awful lot of options. Most of them you will hardly ever use. +Some of the more useful ones will be mentioned here. Don't forget you can +find more help on these options with the ":help" command, with single quotes +before and after the option name. For example: > + + :help 'wrap' + +In case you have messed up an option value, you can set it back to the +default by putting an ampersand (&) after the option name. Example: > + + :set iskeyword& + + +NOT WRAPPING LINES + +Vim normally wraps long lines, so that you can see all of the text. Sometimes +it's better to let the text continue right of the window. Then you need to +scroll the text left-right to see all of a long line. Switch wrapping off +with this command: > + + :set nowrap + +Vim will automatically scroll the text when you move to text that is not +displayed. To see a context of ten characters, do this: > + + :set sidescroll=10 + +This doesn't change the text in the file, only the way it is displayed. + + +WRAPPING MOVEMENT COMMANDS + +Most commands for moving around will stop moving at the start and end of a +line. You can change that with the 'whichwrap' option. This sets it to the +default value: > + + :set whichwrap=b,s + +This allows the <BS> key, when used in the first position of a line, to move +the cursor to the end of the previous line. And the <Space> key moves from +the end of a line to the start of the next one. + +To allow the cursor keys <Left> and <Right> to also wrap, use this command: > + + :set whichwrap=b,s,<,> + +This is still only for Normal mode. To let <Left> and <Right> do this in +Insert mode as well: > + + :set whichwrap=b,s,<,>,[,] + +There are a few other flags that can be added, see 'whichwrap'. + + +VIEWING TABS + +When there are tabs in a file, you cannot see where they are. To make them +visible: > + + :set list + +Now every tab is displayed as ^I. And a $ is displayed at the end of each +line, so that you can spot trailing spaces that would otherwise go unnoticed. + A disadvantage is that this looks ugly when there are many Tabs in a file. +If you have a color terminal, or are using the GUI, Vim can show the spaces +and tabs as highlighted characters. Use the 'listchars' option: > + + :set listchars=tab:>-,trail:- + +Now every tab will be displayed as ">---" (with more or less "-") and trailing +white space as "-". Looks a lot better, doesn't it? + + +KEYWORDS + +The 'iskeyword' option specifies which characters can appear in a word: > + + :set iskeyword +< iskeyword=@,48-57,_,192-255 ~ + +The "@" stands for all alphabetic letters. "48-57" stands for ASCII +characters 48 to 57, which are the numbers 0 to 9. "192-255" are the +printable latin characters. + Sometimes you will want to include a dash in keywords, so that commands +like "w" consider "upper-case" to be one word. You can do it like this: > + + :set iskeyword+=- + :set iskeyword +< iskeyword=@,48-57,_,192-255,- ~ + +If you look at the new value, you will see that Vim has added a comma for you. + To remove a character use "-=". For example, to remove the underscore: > + + :set iskeyword-=_ + :set iskeyword +< iskeyword=@,48-57,192-255,- ~ + +This time a comma is automatically deleted. + + +ROOM FOR MESSAGES + +When Vim starts there is one line at the bottom that is used for messages. +When a message is long, it is either truncated, thus you can only see part of +it, or the text scrolls and you have to press <Enter> to continue. + You can set the 'cmdheight' option to the number of lines used for +messages. Example: > + + :set cmdheight=3 + +This does mean there is less room to edit text, thus it's a compromise. + +============================================================================== + +Next chapter: |usr_06.txt| Using syntax highlighting + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_06.txt b/share/vim/vim74/doc/usr_06.txt new file mode 100644 index 00000000..5e3c7726 --- /dev/null +++ b/share/vim/vim74/doc/usr_06.txt @@ -0,0 +1,280 @@ +*usr_06.txt* For Vim version 7.4. Last change: 2009 Oct 28 + + VIM USER MANUAL - by Bram Moolenaar + + Using syntax highlighting + + +Black and white text is boring. With colors your file comes to life. This +not only looks nice, it also speeds up your work. Change the colors used for +the different sorts of text. Print your text, with the colors you see on the +screen. + +|06.1| Switching it on +|06.2| No or wrong colors? +|06.3| Different colors +|06.4| With colors or without colors +|06.5| Printing with colors +|06.6| Further reading + + Next chapter: |usr_07.txt| Editing more than one file + Previous chapter: |usr_05.txt| Set your settings +Table of contents: |usr_toc.txt| + +============================================================================== +*06.1* Switching it on + +It all starts with one simple command: > + + :syntax enable + +That should work in most situations to get color in your files. Vim will +automagically detect the type of file and load the right syntax highlighting. +Suddenly comments are blue, keywords brown and strings red. This makes it +easy to overview the file. After a while you will find that black&white text +slows you down! + +If you always want to use syntax highlighting, put the ":syntax enable" +command in your |vimrc| file. + +If you want syntax highlighting only when the terminal supports colors, you +can put this in your |vimrc| file: > + + if &t_Co > 1 + syntax enable + endif + +If you want syntax highlighting only in the GUI version, put the ":syntax +enable" command in your |gvimrc| file. + +============================================================================== +*06.2* No or wrong colors? + +There can be a number of reasons why you don't see colors: + +- Your terminal does not support colors. + Vim will use bold, italic and underlined text, but this doesn't look + very nice. You probably will want to try to get a terminal with + colors. For Unix, I recommend the xterm from the XFree86 project: + |xfree-xterm|. + +- Your terminal does support colors, but Vim doesn't know this. + Make sure your $TERM setting is correct. For example, when using an + xterm that supports colors: > + + setenv TERM xterm-color +< + or (depending on your shell): > + + TERM=xterm-color; export TERM + +< The terminal name must match the terminal you are using. If it + still doesn't work, have a look at |xterm-color|, which shows a few + ways to make Vim display colors (not only for an xterm). + +- The file type is not recognized. + Vim doesn't know all file types, and sometimes it's near to impossible + to tell what language a file uses. Try this command: > + + :set filetype +< + If the result is "filetype=" then the problem is indeed that Vim + doesn't know what type of file this is. You can set the type + manually: > + + :set filetype=fortran + +< To see which types are available, look in the directory + $VIMRUNTIME/syntax. For the GUI you can use the Syntax menu. + Setting the filetype can also be done with a |modeline|, so that the + file will be highlighted each time you edit it. For example, this + line can be used in a Makefile (put it near the start or end of the + file): > + + # vim: syntax=make + +< You might know how to detect the file type yourself. Often the file + name extension (after the dot) can be used. + See |new-filetype| for how to tell Vim to detect that file type. + +- There is no highlighting for your file type. + You could try using a similar file type by manually setting it as + mentioned above. If that isn't good enough, you can write your own + syntax file, see |mysyntaxfile|. + + +Or the colors could be wrong: + +- The colored text is very hard to read. + Vim guesses the background color that you are using. If it is black + (or another dark color) it will use light colors for text. If it is + white (or another light color) it will use dark colors for text. If + Vim guessed wrong the text will be hard to read. To solve this, set + the 'background' option. For a dark background: > + + :set background=dark + +< And for a light background: > + + :set background=light + +< Make sure you put this _before_ the ":syntax enable" command, + otherwise the colors will already have been set. You could do + ":syntax reset" after setting 'background' to make Vim set the default + colors again. + +- The colors are wrong when scrolling bottom to top. + Vim doesn't read the whole file to parse the text. It starts parsing + wherever you are viewing the file. That saves a lot of time, but + sometimes the colors are wrong. A simple fix is hitting CTRL-L. Or + scroll back a bit and then forward again. + For a real fix, see |:syn-sync|. Some syntax files have a way to make + it look further back, see the help for the specific syntax file. For + example, |tex.vim| for the TeX syntax. + +============================================================================== +*06.3* Different colors *:syn-default-override* + +If you don't like the default colors, you can select another color scheme. In +the GUI use the Edit/Color Scheme menu. You can also type the command: > + + :colorscheme evening + +"evening" is the name of the color scheme. There are several others you might +want to try out. Look in the directory $VIMRUNTIME/colors. + +When you found the color scheme that you like, add the ":colorscheme" command +to your |vimrc| file. + +You could also write your own color scheme. This is how you do it: + +1. Select a color scheme that comes close. Copy this file to your own Vim + directory. For Unix, this should work: > + + !mkdir ~/.vim/colors + !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim +< + This is done from Vim, because it knows the value of $VIMRUNTIME. + +2. Edit the color scheme file. These entries are useful: + + term attributes in a B&W terminal + cterm attributes in a color terminal + ctermfg foreground color in a color terminal + ctermbg background color in a color terminal + gui attributes in the GUI + guifg foreground color in the GUI + guibg background color in the GUI + + For example, to make comments green: > + + :highlight Comment ctermfg=green guifg=green +< + Attributes you can use for "cterm" and "gui" are "bold" and "underline". + If you want both, use "bold,underline". For details see the |:highlight| + command. + +3. Tell Vim to always use your color scheme. Put this line in your |vimrc|: > + + colorscheme mine + +If you want to see what the most often used color combinations look like, use +this command: > + + :runtime syntax/colortest.vim + +You will see text in various color combinations. You can check which ones are +readable and look nice. + +============================================================================== +*06.4* With colors or without colors + +Displaying text in color takes a lot of effort. If you find the displaying +too slow, you might want to disable syntax highlighting for a moment: > + + :syntax clear + +When editing another file (or the same one) the colors will come back. + + *:syn-off* +If you want to stop highlighting completely use: > + + :syntax off + +This will completely disable syntax highlighting and remove it immediately for +all buffers. + + *:syn-manual* +If you want syntax highlighting only for specific files, use this: > + + :syntax manual + +This will enable the syntax highlighting, but not switch it on automatically +when starting to edit a buffer. To switch highlighting on for the current +buffer, set the 'syntax' option: > + + :set syntax=ON +< +============================================================================== +*06.5* Printing with colors *syntax-printing* + +In the MS-Windows version you can print the current file with this command: > + + :hardcopy + +You will get the usual printer dialog, where you can select the printer and a +few settings. If you have a color printer, the paper output should look the +same as what you see inside Vim. But when you use a dark background the +colors will be adjusted to look good on white paper. + +There are several options that change the way Vim prints: + 'printdevice' + 'printheader' + 'printfont' + 'printoptions' + +To print only a range of lines, use Visual mode to select the lines and then +type the command: > + + v100j:hardcopy + +"v" starts Visual mode. "100j" moves a hundred lines down, they will be +highlighted. Then ":hardcopy" will print those lines. You can use other +commands to move in Visual mode, of course. + +This also works on Unix, if you have a PostScript printer. Otherwise, you +will have to do a bit more work. You need to convert the text to HTML first, +and then print it from a web browser. + +Convert the current file to HTML with this command: > + + :TOhtml + +In case that doesn't work: > + + :source $VIMRUNTIME/syntax/2html.vim + +You will see it crunching away, this can take quite a while for a large file. +Some time later another window shows the HTML code. Now write this somewhere +(doesn't matter where, you throw it away later): +> + :write main.c.html + +Open this file in your favorite browser and print it from there. If all goes +well, the output should look exactly as it does in Vim. See |2html.vim| for +details. Don't forget to delete the HTML file when you are done with it. + +Instead of printing, you could also put the HTML file on a web server, and let +others look at the colored text. + +============================================================================== +*06.6* Further reading + +|usr_44.txt| Your own syntax highlighted. +|syntax| All the details. + +============================================================================== + +Next chapter: |usr_07.txt| Editing more than one file + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_07.txt b/share/vim/vim74/doc/usr_07.txt new file mode 100644 index 00000000..8a0600b8 --- /dev/null +++ b/share/vim/vim74/doc/usr_07.txt @@ -0,0 +1,479 @@ +*usr_07.txt* For Vim version 7.4. Last change: 2006 Apr 24 + + VIM USER MANUAL - by Bram Moolenaar + + Editing more than one file + + +No matter how many files you have, you can edit them without leaving Vim. +Define a list of files to work on and jump from one to the other. Copy text +from one file and put it in another one. + +|07.1| Edit another file +|07.2| A list of files +|07.3| Jumping from file to file +|07.4| Backup files +|07.5| Copy text between files +|07.6| Viewing a file +|07.7| Changing the file name + + Next chapter: |usr_08.txt| Splitting windows + Previous chapter: |usr_06.txt| Using syntax highlighting +Table of contents: |usr_toc.txt| + +============================================================================== +*07.1* Edit another file + +So far you had to start Vim for every file you wanted to edit. There is a +simpler way. To start editing another file, use this command: > + + :edit foo.txt + +You can use any file name instead of "foo.txt". Vim will close the current +file and open the new one. If the current file has unsaved changes, however, +Vim displays an error message and does not open the new file: + + E37: No write since last change (use ! to override) ~ + + Note: + Vim puts an error ID at the start of each error message. If you do + not understand the message or what caused it, look in the help system + for this ID. In this case: > + + :help E37 + +At this point, you have a number of alternatives. You can write the file +using this command: > + + :write + +Or you can force Vim to discard your changes and edit the new file, using the +force (!) character: > + + :edit! foo.txt + +If you want to edit another file, but not write the changes in the current +file yet, you can make it hidden: > + + :hide edit foo.txt + +The text with changes is still there, but you can't see it. This is further +explained in section |22.4|: The buffer list. + +============================================================================== +*07.2* A list of files + +You can start Vim to edit a sequence of files. For example: > + + vim one.c two.c three.c + +This command starts Vim and tells it that you will be editing three files. +Vim displays just the first file. After you have done your thing in this +file, to edit the next file you use this command: > + + :next + +If you have unsaved changes in the current file, you will get an error +message and the ":next" will not work. This is the same problem as with +":edit" mentioned in the previous section. To abandon the changes: > + + :next! + +But mostly you want to save the changes and move on to the next file. There +is a special command for this: > + + :wnext + +This does the same as using two separate commands: > + + :write + :next + + +WHERE AM I? + +To see which file in the argument list you are editing, look in the window +title. It should show something like "(2 of 3)". This means you are editing +the second file out of three files. + If you want to see the list of files, use this command: > + + :args + +This is short for "arguments". The output might look like this: + + one.c [two.c] three.c ~ + +These are the files you started Vim with. The one you are currently editing, +"two.c", is in square brackets. + + +MOVING TO OTHER ARGUMENTS + +To go back one file: > + + :previous + +This is just like the ":next" command, except that it moves in the other +direction. Again, there is a shortcut command for when you want to write the +file first: > + + :wprevious + +To move to the very last file in the list: > + + :last + +And to move back to the first one again: > + + :first + +There is no ":wlast" or ":wfirst" command though! + +You can use a count for ":next" and ":previous". To skip two files forward: > + + :2next + + +AUTOMATIC WRITING + +When moving around the files and making changes, you have to remember to use +":write". Otherwise you will get an error message. If you are sure you +always want to write modified files, you can tell Vim to automatically write +them: > + + :set autowrite + +When you are editing a file which you may not want to write, switch it off +again: > + + :set noautowrite + + +EDITING ANOTHER LIST OF FILES + +You can redefine the list of files without the need to exit Vim and start it +again. Use this command to edit three other files: > + + :args five.c six.c seven.h + +Or use a wildcard, like it's used in the shell: > + + :args *.txt + +Vim will take you to the first file in the list. Again, if the current file +has changes, you can either write the file first, or use ":args!" (with ! +added) to abandon the changes. + + +DID YOU EDIT THE LAST FILE? + *arglist-quit* +When you use a list of files, Vim assumes you want to edit them all. To +protect you from exiting too early, you will get this error when you didn't +edit the last file in the list yet: + + E173: 46 more files to edit ~ + +If you really want to exit, just do it again. Then it will work (but not when +you did other commands in between). + +============================================================================== +*07.3* Jumping from file to file + +To quickly jump between two files, press CTRL-^ (on English-US keyboards the ^ +is above the 6 key). Example: > + + :args one.c two.c three.c + +You are now in one.c. > + + :next + +Now you are in two.c. Now use CTRL-^ to go back to one.c. Another CTRL-^ and +you are back in two.c. Another CTRL-^ and you are in one.c again. If you now +do: > + + :next + +You are in three.c. Notice that the CTRL-^ command does not change the idea +of where you are in the list of files. Only commands like ":next" and +":previous" do that. + +The file you were previously editing is called the "alternate" file. When you +just started Vim CTRL-^ will not work, since there isn't a previous file. + + +PREDEFINED MARKS + +After jumping to another file, you can use two predefined marks which are very +useful: > + + `" + +This takes you to the position where the cursor was when you left the file. +Another mark that is remembered is the position where you made the last +change: > + + `. + +Suppose you are editing the file "one.txt". Somewhere halfway the file you +use "x" to delete a character. Then you go to the last line with "G" and +write the file with ":w". You edit several other files, and then use ":edit +one.txt" to come back to "one.txt". If you now use `" Vim jumps to the last +line of the file. Using `. takes you to the position where you deleted the +character. Even when you move around in the file `" and `. will take you to +the remembered position. At least until you make another change or leave the +file. + + +FILE MARKS + +In chapter 4 was explained how you can place a mark in a file with "mx" and +jump to that position with "`x". That works within one file. If you edit +another file and place marks there, these are specific for that file. Thus +each file has its own set of marks, they are local to the file. + So far we were using marks with a lowercase letter. There are also marks +with an uppercase letter. These are global, they can be used from any file. +For example suppose that we are editing the file "foo.txt". Go to halfway the +file ("50%") and place the F mark there (F for foo): > + + 50%mF + +Now edit the file "bar.txt" and place the B mark (B for bar) at its last line: +> + GmB + +Now you can use the "'F" command to jump back to halfway foo.txt. Or edit yet +another file, type "'B" and you are at the end of bar.txt again. + +The file marks are remembered until they are placed somewhere else. Thus you +can place the mark, do hours of editing and still be able to jump back to that +mark. + It's often useful to think of a simple connection between the mark letter +and where it is placed. For example, use the H mark in a header file, M in +a Makefile and C in a C code file. + +To see where a specific mark is, give an argument to the ":marks" command: > + + :marks M + +You can also give several arguments: > + + :marks MCP + +Don't forget that you can use CTRL-O and CTRL-I to jump to older and newer +positions without placing marks there. + +============================================================================== +*07.4* Backup files + +Usually Vim does not produce a backup file. If you want to have one, all you +need to do is execute the following command: > + + :set backup + +The name of the backup file is the original file with a ~ added to the end. +If your file is named data.txt, for example, the backup file name is +data.txt~. + If you do not like the fact that the backup files end with ~, you can +change the extension: > + + :set backupext=.bak + +This will use data.txt.bak instead of data.txt~. + Another option that matters here is 'backupdir'. It specifies where the +backup file is written. The default, to write the backup in the same +directory as the original file, will mostly be the right thing. + + Note: + When the 'backup' option isn't set but the 'writebackup' is, Vim will + still create a backup file. However, it is deleted as soon as writing + the file was completed successfully. This functions as a safety + against losing your original file when writing fails in some way (disk + full is the most common cause; being hit by lightning might be + another, although less common). + + +KEEPING THE ORIGINAL FILE + +If you are editing source files, you might want to keep the file before you +make any changes. But the backup file will be overwritten each time you write +the file. Thus it only contains the previous version, not the first one. + To make Vim keep the original file, set the 'patchmode' option. This +specifies the extension used for the first backup of a changed file. Usually +you would do this: > + + :set patchmode=.orig + +When you now edit the file data.txt for the first time, make changes and write +the file, Vim will keep a copy of the unchanged file under the name +"data.txt.orig". + If you make further changes to the file, Vim will notice that +"data.txt.orig" already exists and leave it alone. Further backup files will +then be called "data.txt~" (or whatever you specified with 'backupext'). + If you leave 'patchmode' empty (that is the default), the original file +will not be kept. + +============================================================================== +*07.5* Copy text between files + +This explains how to copy text from one file to another. Let's start with a +simple example. Edit the file that contains the text you want to copy. Move +the cursor to the start of the text and press "v". This starts Visual mode. +Now move the cursor to the end of the text and press "y". This yanks (copies) +the selected text. + To copy the above paragraph, you would do: > + + :edit thisfile + /This + vjjjj$y + +Now edit the file you want to put the text in. Move the cursor to the +character where you want the text to appear after. Use "p" to put the text +there. > + :edit otherfile + /There + p + +Of course you can use many other commands to yank the text. For example, to +select whole lines start Visual mode with "V". Or use CTRL-V to select a +rectangular block. Or use "Y" to yank a single line, "yaw" to yank-a-word, +etc. + The "p" command puts the text after the cursor. Use "P" to put the text +before the cursor. Notice that Vim remembers if you yanked a whole line or a +block, and puts it back that way. + + +USING REGISTERS + +When you want to copy several pieces of text from one file to another, having +to switch between the files and writing the target file takes a lot of time. +To avoid this, copy each piece of text to its own register. + A register is a place where Vim stores text. Here we will use the +registers named a to z (later you will find out there are others). Let's copy +a sentence to the f register (f for First): > + + "fyas + +The "yas" command yanks a sentence like before. It's the "f that tells Vim +the text should be place in the f register. This must come just before the +yank command. + Now yank three whole lines to the l register (l for line): > + + "l3Y + +The count could be before the "l just as well. To yank a block of text to the +b (for block) register: > + + CTRL-Vjjww"by + +Notice that the register specification "b is just before the "y" command. +This is required. If you would have put it before the "w" command, it would +not have worked. + Now you have three pieces of text in the f, l and b registers. Edit +another file, move around and place the text where you want it: > + + "fp + +Again, the register specification "f comes before the "p" command. + You can put the registers in any order. And the text stays in the register +until you yank something else into it. Thus you can put it as many times as +you like. + +When you delete text, you can also specify a register. Use this to move +several pieces of text around. For example, to delete-a-word and write it in +the w register: > + + "wdaw + +Again, the register specification comes before the delete command "d". + + +APPENDING TO A FILE + +When collecting lines of text into one file, you can use this command: > + + :write >> logfile + +This will write the text of the current file to the end of "logfile". Thus it +is appended. This avoids that you have to copy the lines, edit the log file +and put them there. Thus you save two steps. But you can only append to the +end of a file. + To append only a few lines, select them in Visual mode before typing +":write". In chapter 10 you will learn other ways to select a range of lines. + +============================================================================== +*07.6* Viewing a file + +Sometimes you only want to see what a file contains, without the intention to +ever write it back. There is the risk that you type ":w" without thinking and +overwrite the original file anyway. To avoid this, edit the file read-only. + To start Vim in readonly mode, use this command: > + + vim -R file + +On Unix this command should do the same thing: > + + view file + +You are now editing "file" in read-only mode. When you try using ":w" you +will get an error message and the file won't be written. + When you try to make a change to the file Vim will give you a warning: + + W10: Warning: Changing a readonly file ~ + +The change will be done though. This allows for formatting the file, for +example, to be able to read it easily. + If you make changes to a file and forgot that it was read-only, you can +still write it. Add the ! to the write command to force writing. + +If you really want to forbid making changes in a file, do this: > + + vim -M file + +Now every attempt to change the text will fail. The help files are like this, +for example. If you try to make a change you get this error message: + + E21: Cannot make changes, 'modifiable' is off ~ + +You could use the -M argument to setup Vim to work in a viewer mode. This is +only voluntary though, since these commands will remove the protection: > + + :set modifiable + :set write + +============================================================================== +*07.7* Changing the file name + +A clever way to start editing a new file is by using an existing file that +contains most of what you need. For example, you start writing a new program +to move a file. You know that you already have a program that copies a file, +thus you start with: > + + :edit copy.c + +You can delete the stuff you don't need. Now you need to save the file under +a new name. The ":saveas" command can be used for this: > + + :saveas move.c + +Vim will write the file under the given name, and edit that file. Thus the +next time you do ":write", it will write "move.c". "copy.c" remains +unmodified. + When you want to change the name of the file you are editing, but don't +want to write the file, you can use this command: > + + :file move.c + +Vim will mark the file as "not edited". This means that Vim knows this is not +the file you started editing. When you try to write the file, you might get +this message: + + E13: File exists (use ! to override) ~ + +This protects you from accidentally overwriting another file. + +============================================================================== + +Next chapter: |usr_08.txt| Splitting windows + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_08.txt b/share/vim/vim74/doc/usr_08.txt new file mode 100644 index 00000000..2ac6fea0 --- /dev/null +++ b/share/vim/vim74/doc/usr_08.txt @@ -0,0 +1,601 @@ +*usr_08.txt* For Vim version 7.4. Last change: 2006 Jul 18 + + VIM USER MANUAL - by Bram Moolenaar + + Splitting windows + + +Display two different files above each other. Or view two locations in the +file at the same time. See the difference between two files by putting them +side by side. All this is possible with split windows. + +|08.1| Split a window +|08.2| Split a window on another file +|08.3| Window size +|08.4| Vertical splits +|08.5| Moving windows +|08.6| Commands for all windows +|08.7| Viewing differences with vimdiff +|08.8| Various +|08.9| Tab pages + + Next chapter: |usr_09.txt| Using the GUI + Previous chapter: |usr_07.txt| Editing more than one file +Table of contents: |usr_toc.txt| + +============================================================================== +*08.1* Split a window + +The easiest way to open a new window is to use the following command: > + + :split + +This command splits the screen into two windows and leaves the cursor in the +top one: + + +----------------------------------+ + |/* file one.c */ | + |~ | + |~ | + |one.c=============================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +What you see here is two windows on the same file. The line with "====" is +that status line. It displays information about the window above it. (In +practice the status line will be in reverse video.) + The two windows allow you to view two parts of the same file. For example, +you could make the top window show the variable declarations of a program, and +the bottom one the code that uses these variables. + +The CTRL-W w command can be used to jump between the windows. If you are in +the top window, CTRL-W w jumps to the window below it. If you are in the +bottom window it will jump to the first window. (CTRL-W CTRL-W does the same +thing, in case you let go of the CTRL key a bit later.) + + +CLOSE THE WINDOW + +To close a window, use the command: > + + :close + +Actually, any command that quits editing a file works, like ":quit" and "ZZ". +But ":close" prevents you from accidentally exiting Vim when you close the +last window. + + +CLOSING ALL OTHER WINDOWS + +If you have opened a whole bunch of windows, but now want to concentrate on +one of them, this command will be useful: > + + :only + +This closes all windows, except for the current one. If any of the other +windows has changes, you will get an error message and that window won't be +closed. + +============================================================================== +*08.2* Split a window on another file + +The following command opens a second window and starts editing the given file: +> + :split two.c + +If you were editing one.c, then the result looks like this: + + +----------------------------------+ + |/* file two.c */ | + |~ | + |~ | + |two.c=============================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +To open a window on a new, empty file, use this: > + + :new + +You can repeat the ":split" and ":new" commands to create as many windows as +you like. + +============================================================================== +*08.3* Window size + +The ":split" command can take a number argument. If specified, this will be +the height of the new window. For example, the following opens a new window +three lines high and starts editing the file alpha.c: > + + :3split alpha.c + +For existing windows you can change the size in several ways. When you have a +working mouse, it is easy: Move the mouse pointer to the status line that +separates two windows, and drag it up or down. + +To increase the size of a window: > + + CTRL-W + + +To decrease it: > + + CTRL-W - + +Both of these commands take a count and increase or decrease the window size +by that many lines. Thus "4 CTRL-W +" make the window four lines higher. + +To set the window height to a specified number of lines: > + + {height}CTRL-W _ + +That's: a number {height}, CTRL-W and then an underscore (the - key with Shift +on English-US keyboards). + To make a window as high as it can be, use the CTRL-W _ command without a +count. + + +USING THE MOUSE + +In Vim you can do many things very quickly from the keyboard. Unfortunately, +the window resizing commands require quite a bit of typing. In this case, +using the mouse is faster. Position the mouse pointer on a status line. Now +press the left mouse button and drag. The status line will move, thus making +the window on one side higher and the other smaller. + + +OPTIONS + +The 'winheight' option can be set to a minimal desired height of a window and +'winminheight' to a hard minimum height. + Likewise, there is 'winwidth' for the minimal desired width and +'winminwidth' for the hard minimum width. + The 'equalalways' option, when set, makes Vim equalize the windows sizes +when a window is closed or opened. + +============================================================================== +*08.4* Vertical splits + +The ":split" command creates the new window above the current one. To make +the window appear at the left side, use: > + + :vsplit + +or: > + :vsplit two.c + +The result looks something like this: + + +--------------------------------------+ + |/* file two.c */ |/* file one.c */ | + |~ |~ | + |~ |~ | + |~ |~ | + |two.c===============one.c=============| + | | + +--------------------------------------+ + +Actually, the | lines in the middle will be in reverse video. This is called +the vertical separator. It separates the two windows left and right of it. + +There is also the ":vnew" command, to open a vertically split window on a new, +empty file. Another way to do this: > + + :vertical new + +The ":vertical" command can be inserted before another command that splits a +window. This will cause that command to split the window vertically instead +of horizontally. (If the command doesn't split a window, it works +unmodified.) + + +MOVING BETWEEN WINDOWS + +Since you can split windows horizontally and vertically as much as you like, +you can create almost any layout of windows. Then you can use these commands +to move between them: + + CTRL-W h move to the window on the left + CTRL-W j move to the window below + CTRL-W k move to the window above + CTRL-W l move to the window on the right + + CTRL-W t move to the TOP window + CTRL-W b move to the BOTTOM window + +You will notice the same letters as used for moving the cursor. And the +cursor keys can also be used, if you like. + More commands to move to other windows: |Q_wi|. + +============================================================================== +*08.5* Moving windows + +You have split a few windows, but now they are in the wrong place. Then you +need a command to move the window somewhere else. For example, you have three +windows like this: + + +----------------------------------+ + |/* file two.c */ | + |~ | + |~ | + |two.c=============================| + |/* file three.c */ | + |~ | + |~ | + |three.c===========================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +Clearly the last one should be at the top. Go to that window (using CTRL-W w) +and the type this command: > + + CTRL-W K + +This uses the uppercase letter K. What happens is that the window is moved to +the very top. You will notice that K is again used for moving upwards. + When you have vertical splits, CTRL-W K will move the current window to the +top and make it occupy the full width of the Vim window. If this is your +layout: + + +-------------------------------------------+ + |/* two.c */ |/* three.c */ |/* one.c */ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |two.c=========three.c=========one.c========| + | | + +-------------------------------------------+ + +Then using CTRL-W K in the middle window (three.c) will result in: + + +-------------------------------------------+ + |/* three.c */ | + |~ | + |~ | + |three.c====================================| + |/* two.c */ |/* one.c */ | + |~ |~ | + |two.c==================one.c===============| + | | + +-------------------------------------------+ + +The other three similar commands (you can probably guess these now): + + CTRL-W H move window to the far left + CTRL-W J move window to the bottom + CTRL-W L move window to the far right + +============================================================================== +*08.6* Commands for all windows + +When you have several windows open and you want to quit Vim, you can close +each window separately. A quicker way is using this command: > + + :qall + +This stands for "quit all". If any of the windows contain changes, Vim will +not exit. The cursor will automatically be positioned in a window with +changes. You can then either use ":write" to save the changes, or ":quit!" to +throw them away. + +If you know there are windows with changes, and you want to save all these +changes, use this command: > + + :wall + +This stands for "write all". But actually, it only writes files with +changes. Vim knows it doesn't make sense to write files that were not +changed. + And then there is the combination of ":qall" and ":wall": the "write and +quit all" command: > + + :wqall + +This writes all modified files and quits Vim. + Finally, there is a command that quits Vim and throws away all changes: > + + :qall! + +Be careful, there is no way to undo this command! + + +OPENING A WINDOW FOR ALL ARGUMENTS + +To make Vim open a window for each file, start it with the "-o" argument: > + + vim -o one.txt two.txt three.txt + +This results in: + + +-------------------------------+ + |file one.txt | + |~ | + |one.txt========================| + |file two.txt | + |~ | + |two.txt========================| + |file three.txt | + |~ | + |three.txt======================| + | | + +-------------------------------+ + +The "-O" argument is used to get vertically split windows. + When Vim is already running, the ":all" command opens a window for each +file in the argument list. ":vertical all" does it with vertical splits. + +============================================================================== +*08.7* Viewing differences with vimdiff + +There is a special way to start Vim, which shows the differences between two +files. Let's take a file "main.c" and insert a few characters in one line. +Write this file with the 'backup' option set, so that the backup file +"main.c~" will contain the previous version of the file. + Type this command in a shell (not in Vim): > + + vimdiff main.c~ main.c + +Vim will start, with two windows side by side. You will only see the line +in which you added characters, and a few lines above and below it. + + VV VV + +-----------------------------------------+ + |+ +--123 lines: /* a|+ +--123 lines: /* a| <- fold + | text | text | + | text | text | + | text | text | + | text | changed text | <- changed line + | text | text | + | text | ------------------| <- deleted line + | text | text | + | text | text | + | text | text | + |+ +--432 lines: text|+ +--432 lines: text| <- fold + | ~ | ~ | + | ~ | ~ | + |main.c~==============main.c==============| + | | + +-----------------------------------------+ + +(This picture doesn't show the highlighting, use the vimdiff command for a +better look.) + +The lines that were not modified have been collapsed into one line. This is +called a closed fold. They are indicated in the picture with "<- fold". Thus +the single fold line at the top stands for 123 text lines. These lines are +equal in both files. + The line marked with "<- changed line" is highlighted, and the inserted +text is displayed with another color. This clearly shows what the difference +is between the two files. + The line that was deleted is displayed with "---" in the main.c window. +See the "<- deleted line" marker in the picture. These characters are not +really there. They just fill up main.c, so that it displays the same number +of lines as the other window. + + +THE FOLD COLUMN + +Each window has a column on the left with a slightly different background. In +the picture above these are indicated with "VV". You notice there is a plus +character there, in front of each closed fold. Move the mouse pointer to that +plus and click the left button. The fold will open, and you can see the text +that it contains. + The fold column contains a minus sign for an open fold. If you click on +this -, the fold will close. + Obviously, this only works when you have a working mouse. You can also use +"zo" to open a fold and "zc" to close it. + + +DIFFING IN VIM + +Another way to start in diff mode can be done from inside Vim. Edit the +"main.c" file, then make a split and show the differences: > + + :edit main.c + :vertical diffsplit main.c~ + +The ":vertical" command is used to make the window split vertically. If you +omit this, you will get a horizontal split. + +If you have a patch or diff file, you can use the third way to start diff +mode. First edit the file to which the patch applies. Then tell Vim the name +of the patch file: > + + :edit main.c + :vertical diffpatch main.c.diff + +WARNING: The patch file must contain only one patch, for the file you are +editing. Otherwise you will get a lot of error messages, and some files might +be patched unexpectedly. + The patching will only be done to the copy of the file in Vim. The file on +your harddisk will remain unmodified (until you decide to write the file). + + +SCROLL BINDING + +When the files have more changes, you can scroll in the usual way. Vim will +try to keep both the windows start at the same position, so you can easily see +the differences side by side. + When you don't want this for a moment, use this command: > + + :set noscrollbind + + +JUMPING TO CHANGES + +When you have disabled folding in some way, it may be difficult to find the +changes. Use this command to jump forward to the next change: > + + ]c + +To go the other way use: > + + [c + +Prepended a count to jump further away. + + +REMOVING CHANGES + +You can move text from one window to the other. This either removes +differences or adds new ones. Vim doesn't keep the highlighting updated in +all situations. To update it use this command: > + + :diffupdate + +To remove a difference, you can move the text in a highlighted block from one +window to another. Take the "main.c" and "main.c~" example above. Move the +cursor to the left window, on the line that was deleted in the other window. +Now type this command: > + + dp + +The change will be removed by putting the text of the current window in the +other window. "dp" stands for "diff put". + You can also do it the other way around. Move the cursor to the right +window, to the line where "changed" was inserted. Now type this command: > + + do + +The change will now be removed by getting the text from the other window. +Since there are no changes left now, Vim puts all text in a closed fold. +"do" stands for "diff obtain". "dg" would have been better, but that already +has a different meaning ("dgg" deletes from the cursor until the first line). + +For details about diff mode, see |vimdiff|. + +============================================================================== +*08.8* Various + +The 'laststatus' option can be used to specify when the last window has a +statusline: + + 0 never + 1 only when there are split windows (the default) + 2 always + +Many commands that edit another file have a variant that splits the window. +For Command-line commands this is done by prepending an "s". For example: +":tag" jumps to a tag, ":stag" splits the window and jumps to a +tag. + For Normal mode commands a CTRL-W is prepended. CTRL-^ jumps to the +alternate file, CTRL-W CTRL-^ splits the window and edits the alternate file. + +The 'splitbelow' option can be set to make a new window appear below the +current window. The 'splitright' option can be set to make a vertically split +window appear right of the current window. + +When splitting a window you can prepend a modifier command to tell where the +window is to appear: + + :leftabove {cmd} left or above the current window + :aboveleft {cmd} idem + :rightbelow {cmd} right or below the current window + :belowright {cmd} idem + :topleft {cmd} at the top or left of the Vim window + :botright {cmd} at the bottom or right of the Vim window + + +============================================================================== +*08.9* Tab pages + +You will have noticed that windows never overlap. That means you quickly run +out of screen space. The solution for this is called Tab pages. + +Assume you are editing "thisfile". To create a new tab page use this command: > + + :tabedit thatfile + +This will edit the file "thatfile" in a window that occupies the whole Vim +window. And you will notice a bar at the top with the two file names: + + +----------------------------------+ + | thisfile | /thatfile/ __________X| (thatfile is bold) + |/* thatfile */ | + |that | + |that | + |~ | + |~ | + |~ | + | | + +----------------------------------+ + +You now have two tab pages. The first one has a window for "thisfile" and the +second one a window for "thatfile". It's like two pages that are on top of +eachother, with a tab sticking out of each page showing the file name. + +Now use the mouse to click on "thisfile" in the top line. The result is + + +----------------------------------+ + | /thisfile/ | thatfile __________X| (thisfile is bold) + |/* thisfile */ | + |this | + |this | + |~ | + |~ | + |~ | + | | + +----------------------------------+ + +Thus you can switch between tab pages by clicking on the label in the top +line. If you don't have a mouse or don't want to use it, you can use the "gt" +command. Mnemonic: Goto Tab. + +Now let's create another tab page with the command: > + + :tab split + +This makes a new tab page with one window that is editing the same buffer as +the window we were in: + + +-------------------------------------+ + | thisfile | /thisfile/ | thatfile __X| (thisfile is bold) + |/* thisfile */ | + |this | + |this | + |~ | + |~ | + |~ | + | | + +-------------------------------------+ + +You can put ":tab" before any Ex command that opens a window. The window will +be opened in a new tab page. Another example: > + + :tab help gt + +Will show the help text for "gt" in a new tab page. + +A few more things you can do with tab pages: + +- click with the mouse in the space after the last label + The next tab page will be selected, like with "gt". + +- click with the mouse on the "X" in the top right corner + The current tab page will be closed. Unless there are unsaved + changes in the current tab page. + +- double click with the mouse in the top line + A new tab page will be created. + +- the "tabonly" command + Closes all tab pages except the current one. Unless there are unsaved + changes in other tab pages. + +For more information about tab pages see |tab-page|. + +============================================================================== + +Next chapter: |usr_09.txt| Using the GUI + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_09.txt b/share/vim/vim74/doc/usr_09.txt new file mode 100644 index 00000000..68575f51 --- /dev/null +++ b/share/vim/vim74/doc/usr_09.txt @@ -0,0 +1,289 @@ +*usr_09.txt* For Vim version 7.4. Last change: 2006 Apr 24 + + VIM USER MANUAL - by Bram Moolenaar + + Using the GUI + + +Vim works in an ordinary terminal. GVim can do the same things and a few +more. The GUI offers menus, a toolbar, scrollbars and other items. This +chapter is about these extra things that the GUI offers. + +|09.1| Parts of the GUI +|09.2| Using the mouse +|09.3| The clipboard +|09.4| Select mode + + Next chapter: |usr_10.txt| Making big changes + Previous chapter: |usr_08.txt| Splitting windows +Table of contents: |usr_toc.txt| + +============================================================================== +*09.1* Parts of the GUI + +You might have an icon on your desktop that starts gVim. Otherwise, one of +these commands should do it: > + + gvim file.txt + vim -g file.txt + +If this doesn't work you don't have a version of Vim with GUI support. You +will have to install one first. + Vim will open a window and display "file.txt" in it. What the window looks +like depends on the version of Vim. It should resemble the following picture +(for as far as this can be shown in ASCII!). + + +----------------------------------------------------+ + | file.txt + (~/dir) - VIM X | <- window title + +----------------------------------------------------+ + | File Edit Tools Syntax Buffers Window Help | <- menubar + +----------------------------------------------------+ + | aaa bbb ccc ddd eee fff ggg hhh iii jjj | <- toolbar + | aaa bbb ccc ddd eee fff ggg hhh iii jjj | + +----------------------------------------------------+ + | file text | ^ | + | ~ | # | + | ~ | # | <- scrollbar + | ~ | # | + | ~ | # | + | ~ | # | + | | V | + +----------------------------------------------------+ + +The largest space is occupied by the file text. This shows the file in the +same way as in a terminal. With some different colors and another font +perhaps. + + +THE WINDOW TITLE + +At the very top is the window title. This is drawn by your window system. +Vim will set the title to show the name of the current file. First comes the +name of the file. Then some special characters and the directory of the file +in parens. These special character can be present: + + - The file cannot be modified (e.g., a help file) + + The file contains changes + = The file is read-only + =+ The file is read-only, contains changes anyway + +If nothing is shown you have an ordinary, unchanged file. + + +THE MENUBAR + +You know how menus work, right? Vim has the usual items, plus a few more. +Browse them to get an idea of what you can use them for. A relevant submenu +is Edit/Global Settings. You will find these entries: + + Toggle Toolbar make the toolbar appear/disappear + Toggle Bottom Scrollbar make a scrollbar appear/disappear at the bottom + Toggle Left Scrollbar make a scrollbar appear/disappear at the left + Toggle Right Scrollbar make a scrollbar appear/disappear at the right + +On most systems you can tear-off the menus. Select the top item of the menu, +the one that looks like a dashed line. You will get a separate window with +the items of the menu. It will hang around until you close the window. + + +THE TOOLBAR + +This contains icons for the most often used actions. Hopefully the icons are +self-explanatory. There are tooltips to get an extra hint (move the mouse +pointer to the icon without clicking and don't move it for a second). + +The "Edit/Global Settings/Toggle Toolbar" menu item can be used to make the +toolbar disappear. If you never want a toolbar, use this command in your +vimrc file: > + + :set guioptions-=T + +This removes the 'T' flag from the 'guioptions' option. Other parts of the +GUI can also be enabled or disabled with this option. See the help for it. + + +THE SCROLLBARS + +By default there is one scrollbar on the right. It does the obvious thing. +When you split the window, each window will get its own scrollbar. + You can make a horizontal scrollbar appear with the menu item +Edit/Global Settings/Toggle Bottom Scrollbar. This is useful in diff mode, or +when the 'wrap' option has been reset (more about that later). + +When there are vertically split windows, only the windows on the right side +will have a scrollbar. However, when you move the cursor to a window on the +left, it will be this one the that scrollbar controls. This takes a bit of +time to get used to. + When you work with vertically split windows, consider adding a scrollbar on +the left. This can be done with a menu item, or with the 'guioptions' option: +> + :set guioptions+=l + +This adds the 'l' flag to 'guioptions'. + +============================================================================== +*09.2* Using the mouse + +Standards are wonderful. In Microsoft Windows, you can use the mouse to +select text in a standard manner. The X Window system also has a standard +system for using the mouse. Unfortunately, these two standards are not the +same. + Fortunately, you can customize Vim. You can make the behavior of the mouse +work like an X Window system mouse or a Microsoft Windows mouse. The following +command makes the mouse behave like an X Window mouse: > + + :behave xterm + +The following command makes the mouse work like a Microsoft Windows mouse: > + + :behave mswin + +The default behavior of the mouse on UNIX systems is xterm. The default +behavior on a Microsoft Windows system is selected during the installation +process. For details about what the two behaviors are, see |:behave|. Here +follows a summary. + + +XTERM MOUSE BEHAVIOR + +Left mouse click position the cursor +Left mouse drag select text in Visual mode +Middle mouse click paste text from the clipboard +Right mouse click extend the selected text until the mouse + pointer + + +MSWIN MOUSE BEHAVIOR + +Left mouse click position the cursor +Left mouse drag select text in Select mode (see |09.4|) +Left mouse click, with Shift extend the selected text until the mouse + pointer +Middle mouse click paste text from the clipboard +Right mouse click display a pop-up menu + + +The mouse can be further tuned. Check out these options if you want to change +the way how the mouse works: + + 'mouse' in which mode the mouse is used by Vim + 'mousemodel' what effect a mouse click has + 'mousetime' time between clicks for a double-click + 'mousehide' hide the mouse while typing + 'selectmode' whether the mouse starts Visual or Select mode + +============================================================================== +*09.3* The clipboard + +In section |04.7| the basic use of the clipboard was explained. There is one +essential thing to explain about X-windows: There are actually two places to +exchange text between programs. MS-Windows doesn't have this. + +In X-Windows there is the "current selection". This is the text that is +currently highlighted. In Vim this is the Visual area (this assumes you are +using the default option settings). You can paste this selection in another +application without any further action. + For example, in this text select a few words with the mouse. Vim will +switch to Visual mode and highlight the text. Now start another gVim, without +a file name argument, so that it displays an empty window. Click the middle +mouse button. The selected text will be inserted. + +The "current selection" will only remain valid until some other text is +selected. After doing the paste in the other gVim, now select some characters +in that window. You will notice that the words that were previously selected +in the other gVim window are displayed differently. This means that it no +longer is the current selection. + +You don't need to select text with the mouse, using the keyboard commands for +Visual mode works just as well. + + +THE REAL CLIPBOARD + +Now for the other place with which text can be exchanged. We call this the +"real clipboard", to avoid confusion. Often both the "current selection" and +the "real clipboard" are called clipboard, you'll have to get used to that. + To put text on the real clipboard, select a few different words in one of +the gVims you have running. Then use the Edit/Copy menu entry. Now the text +has been copied to the real clipboard. You can't see this, unless you have +some application that shows the clipboard contents (e.g., KDE's klipper). + Now select the other gVim, position the cursor somewhere and use the +Edit/Paste menu. You will see the text from the real clipboard is inserted. + + +USING BOTH + +This use of both the "current selection" and the "real clipboard" might sound +a bit confusing. But it is very useful. Let's show this with an example. +Use one gVim with a text file and perform these actions: + +- Select two words in Visual mode. +- Use the Edit/Copy menu to get these words onto the clipboard. +- Select one other word in Visual mode. +- Use the Edit/Paste menu item. What will happen is that the single selected + word is replaced with the two words from the clipboard. +- Move the mouse pointer somewhere else and click the middle button. You + will see that the word you just overwrote with the clipboard is inserted + here. + +If you use the "current selection" and the "real clipboard" with care, you can +do a lot of useful editing with them. + + +USING THE KEYBOARD + +If you don't like using the mouse, you can access the current selection and +the real clipboard with two registers. The "* register is for the current +selection. + To make text become the current selection, use Visual mode. For example, +to select a whole line just press "V". + To insert the current selection before the cursor: > + + "*P + +Notice the uppercase "P". The lowercase "p" puts the text after the cursor. + +The "+ register is used for the real clipboard. For example, to copy the text +from the cursor position until the end of the line to the clipboard: > + + "+y$ + +Remember, "y" is yank, which is Vim's copy command. + To insert the contents of the real clipboard before the cursor: > + + "+P + +It's the same as for the current selection, but uses the plus (+) register +instead of the star (*) register. + +============================================================================== +*09.4* Select mode + +And now something that is used more often on MS-Windows than on X-Windows. +But both can do it. You already know about Visual mode. Select mode is like +Visual mode, because it is also used to select text. But there is an obvious +difference: When typing text, the selected text is deleted and the typed text +replaces it. + +To start working with Select mode, you must first enable it (for MS-Windows +it is probably already enabled, but you can do this anyway): > + + :set selectmode+=mouse + +Now use the mouse to select some text. It is highlighted like in Visual mode. +Now press a letter. The selected text is deleted, and the single letter +replaces it. You are in Insert mode now, thus you can continue typing. + +Since typing normal text causes the selected text to be deleted, you can not +use the normal movement commands "hjkl", "w", etc. Instead, use the shifted +function keys. <S-Left> (shifted cursor left key) moves the cursor left. The +selected text is changed like in Visual mode. The other shifted cursor keys +do what you expect. <S-End> and <S-Home> also work. + +You can tune the way Select mode works with the 'selectmode' option. + +============================================================================== + +Next chapter: |usr_10.txt| Making big changes + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_10.txt b/share/vim/vim74/doc/usr_10.txt new file mode 100644 index 00000000..4398c4d6 --- /dev/null +++ b/share/vim/vim74/doc/usr_10.txt @@ -0,0 +1,824 @@ +*usr_10.txt* For Vim version 7.4. Last change: 2006 Nov 05 + + VIM USER MANUAL - by Bram Moolenaar + + Making big changes + + +In chapter 4 several ways to make small changes were explained. This chapter +goes into making changes that are repeated or can affect a large amount of +text. The Visual mode allows doing various things with blocks of text. Use +an external program to do really complicated things. + +|10.1| Record and playback commands +|10.2| Substitution +|10.3| Command ranges +|10.4| The global command +|10.5| Visual block mode +|10.6| Reading and writing part of a file +|10.7| Formatting text +|10.8| Changing case +|10.9| Using an external program + + Next chapter: |usr_11.txt| Recovering from a crash + Previous chapter: |usr_09.txt| Using the GUI +Table of contents: |usr_toc.txt| + +============================================================================== +*10.1* Record and playback commands + +The "." command repeats the preceding change. But what if you want to do +something more complex than a single change? That's where command recording +comes in. There are three steps: + +1. The "q{register}" command starts recording keystrokes into the register + named {register}. The register name must be between a and z. +2. Type your commands. +3. To finish recording, press q (without any extra character). + +You can now execute the macro by typing the command "@{register}". + +Take a look at how to use these commands in practice. You have a list of +filenames that look like this: + + stdio.h ~ + fcntl.h ~ + unistd.h ~ + stdlib.h ~ + +And what you want is the following: + + #include "stdio.h" ~ + #include "fcntl.h" ~ + #include "unistd.h" ~ + #include "stdlib.h" ~ + +You start by moving to the first character of the first line. Next you +execute the following commands: + + qa Start recording a macro in register a. + ^ Move to the beginning of the line. + i#include "<Esc> Insert the string #include " at the beginning + of the line. + $ Move to the end of the line. + a"<Esc> Append the character double quotation mark (") + to the end of the line. + j Go to the next line. + q Stop recording the macro. + +Now that you have done the work once, you can repeat the change by typing the +command "@a" three times. + The "@a" command can be preceded by a count, which will cause the macro to +be executed that number of times. In this case you would type: > + + 3@a + + +MOVE AND EXECUTE + +You might have the lines you want to change in various places. Just move the +cursor to each location and use the "@a" command. If you have done that once, +you can do it again with "@@". That's a bit easier to type. If you now +execute register b with "@b", the next "@@" will use register b. + If you compare the playback method with using ".", there are several +differences. First of all, "." can only repeat one change. As seen in the +example above, "@a" can do several changes, and move around as well. +Secondly, "." can only remember the last change. Executing a register allows +you to make any changes and then still use "@a" to replay the recorded +commands. Finally, you can use 26 different registers. Thus you can remember +26 different command sequences to execute. + + +USING REGISTERS + +The registers used for recording are the same ones you used for yank and +delete commands. This allows you to mix recording with other commands to +manipulate the registers. + Suppose you have recorded a few commands in register n. When you execute +this with "@n" you notice you did something wrong. You could try recording +again, but perhaps you will make another mistake. Instead, use this trick: + + G Go to the end of the file. + o<Esc> Create an empty line. + "np Put the text from the n register. You now see + the commands you typed as text in the file. + {edits} Change the commands that were wrong. This is + just like editing text. + 0 Go to the start of the line. + "ny$ Yank the corrected commands into the n + register. + dd Delete the scratch line. + +Now you can execute the corrected commands with "@n". (If your recorded +commands include line breaks, adjust the last two items in the example to +include all the lines.) + + +APPENDING TO A REGISTER + +So far we have used a lowercase letter for the register name. To append to a +register, use an uppercase letter. + Suppose you have recorded a command to change a word to register c. It +works properly, but you would like to add a search for the next word to +change. This can be done with: > + + qC/word<Enter>q + +You start with "qC", which records to the c register and appends. Thus +writing to an uppercase register name means to append to the register with +the same letter, but lowercase. + +This works both with recording and with yank and delete commands. For +example, you want to collect a sequence of lines into the a register. Yank +the first line with: > + + "aY + +Now move to the second line, and type: > + + "AY + +Repeat this command for all lines. The a register now contains all those +lines, in the order you yanked them. + +============================================================================== +*10.2* Substitution *find-replace* + +The ":substitute" command enables you to perform string replacements on a +whole range of lines. The general form of this command is as follows: > + + :[range]substitute/from/to/[flags] + +This command changes the "from" string to the "to" string in the lines +specified with [range]. For example, you can change "Professor" to "Teacher" +in all lines with the following command: > + + :%substitute/Professor/Teacher/ +< + Note: + The ":substitute" command is almost never spelled out completely. + Most of the time, people use the abbreviated version ":s". From here + on the abbreviation will be used. + +The "%" before the command specifies the command works on all lines. Without +a range, ":s" only works on the current line. More about ranges in the next +section |10.3|. + +By default, the ":substitute" command changes only the first occurrence on +each line. For example, the preceding command changes the line: + + Professor Smith criticized Professor Johnson today. ~ + +to: + + Teacher Smith criticized Professor Johnson today. ~ + +To change every occurrence on the line, you need to add the g (global) flag. +The command: > + + :%s/Professor/Teacher/g + +results in (starting with the original line): + + Teacher Smith criticized Teacher Johnson today. ~ + +Other flags include p (print), which causes the ":substitute" command to print +out the last line it changes. The c (confirm) flag tells ":substitute" to ask +you for confirmation before it performs each substitution. Enter the +following: > + + :%s/Professor/Teacher/c + +Vim finds the first occurrence of "Professor" and displays the text it is +about to change. You get the following prompt: > + + replace with Teacher (y/n/a/q/l/^E/^Y)? + +At this point, you must enter one of the following answers: + + y Yes; make this change. + n No; skip this match. + a All; make this change and all remaining ones without + further confirmation. + q Quit; don't make any more changes. + l Last; make this change and then quit. + CTRL-E Scroll the text one line up. + CTRL-Y Scroll the text one line down. + + +The "from" part of the substitute command is actually a pattern. The same +kind as used for the search command. For example, this command only +substitutes "the" when it appears at the start of a line: > + + :s/^the/these/ + +If you are substituting with a "from" or "to" part that includes a slash, you +need to put a backslash before it. A simpler way is to use another character +instead of the slash. A plus, for example: > + + :s+one/two+one or two+ + +============================================================================== +*10.3* Command ranges + +The ":substitute" command, and many other : commands, can be applied to a +selection of lines. This is called a range. + The simple form of a range is {number},{number}. For example: > + + :1,5s/this/that/g + +Executes the substitute command on the lines 1 to 5. Line 5 is included. +The range is always placed before the command. + +A single number can be used to address one specific line: > + + :54s/President/Fool/ + +Some commands work on the whole file when you do not specify a range. To make +them work on the current line the "." address is used. The ":write" command +works like that. Without a range, it writes the whole file. To make it write +only the current line into a file: > + + :.write otherfile + +The first line always has number one. How about the last line? The "$" +character is used for this. For example, to substitute in the lines from the +cursor to the end: > + + :.,$s/yes/no/ + +The "%" range that we used before, is actually a short way to say "1,$", from +the first to the last line. + + +USING A PATTERN IN A RANGE + +Suppose you are editing a chapter in a book, and want to replace all +occurrences of "grey" with "gray". But only in this chapter, not in the next +one. You know that only chapter boundaries have the word "Chapter" in the +first column. This command will work then: > + + :?^Chapter?,/^Chapter/s=grey=gray=g + +You can see a search pattern is used twice. The first "?^Chapter?" finds the +line above the current position that matches this pattern. Thus the ?pattern? +range is used to search backwards. Similarly, "/^Chapter/" is used to search +forward for the start of the next chapter. + To avoid confusion with the slashes, the "=" character was used in the +substitute command here. A slash or another character would have worked as +well. + + +ADD AND SUBTRACT + +There is a slight error in the above command: If the title of the next chapter +had included "grey" it would be replaced as well. Maybe that's what you +wanted, but what if you didn't? Then you can specify an offset. + To search for a pattern and then use the line above it: > + + /Chapter/-1 + +You can use any number instead of the 1. To address the second line below the +match: > + + /Chapter/+2 + +The offsets can also be used with the other items in a range. Look at this +one: > + + :.+3,$-5 + +This specifies the range that starts three lines below the cursor and ends +five lines before the last line in the file. + + +USING MARKS + +Instead of figuring out the line numbers of certain positions, remembering them +and typing them in a range, you can use marks. + Place the marks as mentioned in chapter 3. For example, use "mt" to mark +the top of an area and "mb" to mark the bottom. Then you can use this range +to specify the lines between the marks (including the lines with the marks): > + + :'t,'b + + +VISUAL MODE AND RANGES + +You can select text with Visual mode. If you then press ":" to start a colon +command, you will see this: > + + :'<,'> + +Now you can type the command and it will be applied to the range of lines that +was visually selected. + + Note: + When using Visual mode to select part of a line, or using CTRL-V to + select a block of text, the colon commands will still apply to whole + lines. This might change in a future version of Vim. + +The '< and '> are actually marks, placed at the start and end of the Visual +selection. The marks remain at their position until another Visual selection +is made. Thus you can use the "'<" command to jump to position where the +Visual area started. And you can mix the marks with other items: > + + :'>,$ + +This addresses the lines from the end of the Visual area to the end of the +file. + + +A NUMBER OF LINES + +When you know how many lines you want to change, you can type the number and +then ":". For example, when you type "5:", you will get: > + + :.,.+4 + +Now you can type the command you want to use. It will use the range "." +(current line) until ".+4" (four lines down). Thus it spans five lines. + +============================================================================== +*10.4* The global command + +The ":global" command is one of the more powerful features of Vim. It allows +you to find a match for a pattern and execute a command there. The general +form is: > + + :[range]global/{pattern}/{command} + +This is similar to the ":substitute" command. But, instead of replacing the +matched text with other text, the command {command} is executed. + + Note: + The command executed for ":global" must be one that starts with a + colon. Normal mode commands can not be used directly. The |:normal| + command can do this for you. + +Suppose you want to change "foobar" to "barfoo", but only in C++ style +comments. These comments start with "//". Use this command: > + + :g+//+s/foobar/barfoo/g + +This starts with ":g". That is short for ":global", just like ":s" is short +for ":substitute". Then the pattern, enclosed in plus characters. Since the +pattern we are looking for contains a slash, this uses the plus character to +separate the pattern. Next comes the substitute command that changes "foobar" +into "barfoo". + The default range for the global command is the whole file. Thus no range +was specified in this example. This is different from ":substitute", which +works on one line without a range. + The command isn't perfect, since it also matches lines where "//" appears +halfway a line, and the substitution will also take place before the "//". + +Just like with ":substitute", any pattern can be used. When you learn more +complicated patterns later, you can use them here. + +============================================================================== +*10.5* Visual block mode + +With CTRL-V you can start selection of a rectangular area of text. There are +a few commands that do something special with the text block. + +There is something special about using the "$" command in Visual block mode. +When the last motion command used was "$", all lines in the Visual selection +will extend until the end of the line, also when the line with the cursor is +shorter. This remains effective until you use a motion command that moves the +cursor horizontally. Thus using "j" keeps it, "h" stops it. + + +INSERTING TEXT + +The command "I{string}<Esc>" inserts the text {string} in each line, just +left of the visual block. You start by pressing CTRL-V to enter visual block +mode. Now you move the cursor to define your block. Next you type I to enter +Insert mode, followed by the text to insert. As you type, the text appears on +the first line only. + After you press <Esc> to end the insert, the text will magically be +inserted in the rest of the lines contained in the visual selection. Example: + + include one ~ + include two ~ + include three ~ + include four ~ + +Move the cursor to the "o" of "one" and press CTRL-V. Move it down with "3j" +to "four". You now have a block selection that spans four lines. Now type: > + + Imain.<Esc> + +The result: + + include main.one ~ + include main.two ~ + include main.three ~ + include main.four ~ + +If the block spans short lines that do not extend into the block, the text is +not inserted in that line. For example, make a Visual block selection that +includes the word "long" in the first and last line of this text, and thus has +no text selected in the second line: + + This is a long line ~ + short ~ + Any other long line ~ + + ^^^^ selected block + +Now use the command "Ivery <Esc>". The result is: + + This is a very long line ~ + short ~ + Any other very long line ~ + +In the short line no text was inserted. + +If the string you insert contains a newline, the "I" acts just like a Normal +insert command and affects only the first line of the block. + +The "A" command works the same way, except that it appends after the right +side of the block. And it does insert text in a short line. Thus you can +make a choice whether you do or don't want to append text to a short line. + There is one special case for "A": Select a Visual block and then use "$" +to make the block extend to the end of each line. Using "A" now will append +the text to the end of each line. + Using the same example from above, and then typing "$A XXX<Esc>, you get +this result: + + This is a long line XXX ~ + short XXX ~ + Any other long line XXX ~ + +This really requires using the "$" command. Vim remembers that it was used. +Making the same selection by moving the cursor to the end of the longest line +with other movement commands will not have the same result. + + +CHANGING TEXT + +The Visual block "c" command deletes the block and then throws you into Insert +mode to enable you to type in a string. The string will be inserted in each +line in the block. + Starting with the same selection of the "long" words as above, then typing +"c_LONG_<Esc>", you get this: + + This is a _LONG_ line ~ + short ~ + Any other _LONG_ line ~ + +Just like with "I" the short line is not changed. Also, you can't enter a +newline in the new text. + +The "C" command deletes text from the left edge of the block to the end of +line. It then puts you in Insert mode so that you can type in a string, +which is added to the end of each line. + Starting with the same text again, and typing "Cnew text<Esc>" you get: + + This is a new text ~ + short ~ + Any other new text ~ + +Notice that, even though only the "long" word was selected, the text after it +is deleted as well. Thus only the location of the left edge of the visual +block really matters. + Again, short lines that do not reach into the block are excluded. + +Other commands that change the characters in the block: + + ~ swap case (a -> A and A -> a) + U make uppercase (a -> A and A -> A) + u make lowercase (a -> a and A -> a) + + +FILLING WITH A CHARACTER + +To fill the whole block with one character, use the "r" command. Again, +starting with the same example text from above, and then typing "rx": + + This is a xxxx line ~ + short ~ + Any other xxxx line ~ + + + Note: + If you want to include characters beyond the end of the line in the + block, check out the 'virtualedit' feature in chapter 25. + + +SHIFTING + +The command ">" shifts the selected text to the right one shift amount, +inserting whitespace. The starting point for this shift is the left edge of +the visual block. + With the same example again, ">" gives this result: + + This is a long line ~ + short ~ + Any other long line ~ + +The shift amount is specified with the 'shiftwidth' option. To change it to +use 4 spaces: > + + :set shiftwidth=4 + +The "<" command removes one shift amount of whitespace at the left +edge of the block. This command is limited by the amount of text that is +there; so if there is less than a shift amount of whitespace available, it +removes what it can. + + +JOINING LINES + +The "J" command joins all selected lines together into one line. Thus it +removes the line breaks. Actually, the line break, leading white space and +trailing white space is replaced by one space. Two spaces are used after a +line ending (that can be changed with the 'joinspaces' option). + Let's use the example that we got so familiar with now. The result of +using the "J" command: + + This is a long line short Any other long line ~ + +The "J" command doesn't require a blockwise selection. It works with "v" and +"V" selection in exactly the same way. + +If you don't want the white space to be changed, use the "gJ" command. + +============================================================================== +*10.6* Reading and writing part of a file + +When you are writing an e-mail message, you may want to include another file. +This can be done with the ":read {filename}" command. The text of the file is +put below the cursor line. + Starting with this text: + + Hi John, ~ + Here is the diff that fixes the bug: ~ + Bye, Pierre. ~ + +Move the cursor to the second line and type: > + + :read patch + +The file named "patch" will be inserted, with this result: + + Hi John, ~ + Here is the diff that fixes the bug: ~ + 2c2 ~ + < for (i = 0; i <= length; ++i) ~ + --- ~ + > for (i = 0; i < length; ++i) ~ + Bye, Pierre. ~ + +The ":read" command accepts a range. The file will be put below the last line +number of this range. Thus ":$r patch" appends the file "patch" at the end of +the file. + What if you want to read the file above the first line? This can be done +with the line number zero. This line doesn't really exist, you will get an +error message when using it with most commands. But this command is allowed: +> + :0read patch + +The file "patch" will be put above the first line of the file. + + +WRITING A RANGE OF LINES + +To write a range of lines to a file, the ":write" command can be used. +Without a range it writes the whole file. With a range only the specified +lines are written: > + + :.,$write tempo + +This writes the lines from the cursor until the end of the file into the file +"tempo". If this file already exists you will get an error message. Vim +protects you from accidentally overwriting an existing file. If you know what +you are doing and want to overwrite the file, append !: > + + :.,$write! tempo + +CAREFUL: The ! must follow the ":write" command immediately, without white +space. Otherwise it becomes a filter command, which is explained later in +this chapter. + + +APPENDING TO A FILE + +In the first section of this chapter was explained how to collect a number of +lines into a register. The same can be done to collect lines in a file. +Write the first line with this command: > + + :.write collection + +Now move the cursor to the second line you want to collect, and type this: > + + :.write >>collection + +The ">>" tells Vim the "collection" file is not to be written as a new file, +but the line must be appended at the end. You can repeat this as many times +as you like. + +============================================================================== +*10.7* Formatting text + +When you are typing plain text, it's nice if the length of each line is +automatically trimmed to fit in the window. To make this happen while +inserting text, set the 'textwidth' option: > + + :set textwidth=72 + +You might remember that in the example vimrc file this command was used for +every text file. Thus if you are using that vimrc file, you were already +using it. To check the current value of 'textwidth': > + + :set textwidth + +Now lines will be broken to take only up to 72 characters. But when you +insert text halfway a line, or when you delete a few words, the lines will get +too long or too short. Vim doesn't automatically reformat the text. + To tell Vim to format the current paragraph: > + + gqap + +This starts with the "gq" command, which is an operator. Following is "ap", +the text object that stands for "a paragraph". A paragraph is separated from +the next paragraph by an empty line. + + Note: + A blank line, which contains white space, does NOT separate + paragraphs. This is hard to notice! + +Instead of "ap" you could use any motion or text object. If your paragraphs +are properly separated, you can use this command to format the whole file: > + + gggqG + +"gg" takes you to the first line, "gq" is the format operator and "G" the +motion that jumps to the last line. + +In case your paragraphs aren't clearly defined, you can format just the lines +you manually select. Move the cursor to the first line you want to format. +Start with the command "gqj". This formats the current line and the one below +it. If the first line was short, words from the next line will be appended. +If it was too long, words will be moved to the next line. The cursor moves to +the second line. Now you can use "." to repeat the command. Keep doing this +until you are at the end of the text you want to format. + +============================================================================== +*10.8* Changing case + +You have text with section headers in lowercase. You want to make the word +"section" all uppercase. Do this with the "gU" operator. Start with the +cursor in the first column: > + + gUw +< section header ----> SECTION header + +The "gu" operator does exactly the opposite: > + + guw +< SECTION header ----> section header + +You can also use "g~" to swap case. All these are operators, thus they work +with any motion command, with text objects and in Visual mode. + To make an operator work on lines you double it. The delete operator is +"d", thus to delete a line you use "dd". Similarly, "gugu" makes a whole line +lowercase. This can be shortened to "guu". "gUgU" is shortened to "gUU" and +"g~g~" to "g~~". Example: > + + g~~ +< Some GIRLS have Fun ----> sOME girls HAVE fUN ~ + +============================================================================== +*10.9* Using an external program + +Vim has a very powerful set of commands, it can do anything. But there may +still be something that an external command can do better or faster. + The command "!{motion}{program}" takes a block of text and filters it +through an external program. In other words, it runs the system command +represented by {program}, giving it the block of text represented by {motion} +as input. The output of this command then replaces the selected block. + Because this summarizes badly if you are unfamiliar with UNIX filters, take +a look at an example. The sort command sorts a file. If you execute the +following command, the unsorted file input.txt will be sorted and written to +output.txt. (This works on both UNIX and Microsoft Windows.) > + + sort <input.txt >output.txt + +Now do the same thing in Vim. You want to sort lines 1 through 5 of a file. +You start by putting the cursor on line 1. Next you execute the following +command: > + + !5G + +The "!" tells Vim that you are performing a filter operation. The Vim editor +expects a motion command to follow, indicating which part of the file to +filter. The "5G" command tells Vim to go to line 5, so it now knows that it +is to filter lines 1 (the current line) through 5. + In anticipation of the filtering, the cursor drops to the bottom of the +screen and a ! prompt displays. You can now type in the name of the filter +program, in this case "sort". Therefore, your full command is as follows: > + + !5Gsort<Enter> + +The result is that the sort program is run on the first 5 lines. The output +of the program replaces these lines. + + line 55 line 11 + line 33 line 22 + line 11 --> line 33 + line 22 line 44 + line 44 line 55 + last line last line + +The "!!" command filters the current line through a filter. In Unix the "date" +command prints the current time and date. "!!date<Enter>" replaces the current +line with the output of "date". This is useful to add a timestamp to a file. + + +WHEN IT DOESN'T WORK + +Starting a shell, sending it text and capturing the output requires that Vim +knows how the shell works exactly. When you have problems with filtering, +check the values of these options: + + 'shell' specifies the program that Vim uses to execute + external programs. + 'shellcmdflag' argument to pass a command to the shell + 'shellquote' quote to be used around the command + 'shellxquote' quote to be used around the command and redirection + 'shelltype' kind of shell (only for the Amiga) + 'shellslash' use forward slashes in the command (only for + MS-Windows and alikes) + 'shellredir' string used to write the command output into a file + +On Unix this is hardly ever a problem, because there are two kinds of shells: +"sh" like and "csh" like. Vim checks the 'shell' option and sets related +options automatically, depending on whether it sees "csh" somewhere in +'shell'. + On MS-Windows, however, there are many different shells and you might have +to tune the options to make filtering work. Check the help for the options +for more information. + + +READING COMMAND OUTPUT + +To read the contents of the current directory into the file, use this: + +on Unix: > + :read !ls +on MS-Windows: > + :read !dir + +The output of the "ls" or "dir" command is captured and inserted in the text, +below the cursor. This is similar to reading a file, except that the "!" is +used to tell Vim that a command follows. + The command may have arguments. And a range can be used to tell where Vim +should put the lines: > + + :0read !date -u + +This inserts the current time and date in UTC format at the top of the file. +(Well, if you have a date command that accepts the "-u" argument.) Note the +difference with using "!!date": that replaced a line, while ":read !date" will +insert a line. + + +WRITING TEXT TO A COMMAND + +The Unix command "wc" counts words. To count the words in the current file: > + + :write !wc + +This is the same write command as before, but instead of a file name the "!" +character is used and the name of an external command. The written text will +be passed to the specified command as its standard input. The output could +look like this: + + 4 47 249 ~ + +The "wc" command isn't verbose. This means you have 4 lines, 47 words and 249 +characters. + +Watch out for this mistake: > + + :write! wc + +This will write the file "wc" in the current directory, with force. White +space is important here! + + +REDRAWING THE SCREEN + +If the external command produced an error message, the display may have been +messed up. Vim is very efficient and only redraws those parts of the screen +that it knows need redrawing. But it can't know about what another program +has written. To tell Vim to redraw the screen: > + + CTRL-L + +============================================================================== + +Next chapter: |usr_11.txt| Recovering from a crash + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_11.txt b/share/vim/vim74/doc/usr_11.txt new file mode 100644 index 00000000..9935ded4 --- /dev/null +++ b/share/vim/vim74/doc/usr_11.txt @@ -0,0 +1,307 @@ +*usr_11.txt* For Vim version 7.4. Last change: 2010 Jul 20 + + VIM USER MANUAL - by Bram Moolenaar + + Recovering from a crash + + +Did your computer crash? And you just spent hours editing? Don't panic! Vim +stores enough information to be able to restore most of your work. This +chapter shows you how to get your work back and explains how the swap file is +used. + +|11.1| Basic recovery +|11.2| Where is the swap file? +|11.3| Crashed or not? +|11.4| Further reading + + Next chapter: |usr_12.txt| Clever tricks + Previous chapter: |usr_10.txt| Making big changes +Table of contents: |usr_toc.txt| + +============================================================================== +*11.1* Basic recovery + +In most cases recovering a file is quite simple, assuming you know which file +you were editing (and the harddisk is still working). Start Vim on the file, +with the "-r" argument added: > + + vim -r help.txt + +Vim will read the swap file (used to store text you were editing) and may read +bits and pieces of the original file. If Vim recovered your changes you will +see these messages (with different file names, of course): + + Using swap file ".help.txt.swp" ~ + Original file "~/vim/runtime/doc/help.txt" ~ + Recovery completed. You should check if everything is OK. ~ + (You might want to write out this file under another name ~ + and run diff with the original file to check for changes) ~ + You may want to delete the .swp file now. ~ + +To be on the safe side, write this file under another name: > + + :write help.txt.recovered + +Compare the file with the original file to check if you ended up with what you +expected. Vimdiff is very useful for this |08.7|. For example: > + + :write help.txt.recovered + :edit # + :diffsp help.txt + +Watch out for the original file to contain a more recent version (you saved +the file just before the computer crashed). And check that no lines are +missing (something went wrong that Vim could not recover). + If Vim produces warning messages when recovering, read them carefully. +This is rare though. + +If the recovery resulted in text that is exactly the same as the file +contents, you will get this message: + + Using swap file ".help.txt.swp" ~ + Original file "~/vim/runtime/doc/help.txt" ~ + Recovery completed. Buffer contents equals file contents. ~ + You may want to delete the .swp file now. ~ + +This usually happens if you already recovered your changes, or you wrote the +file after making changes. It is safe to delete the swap file now. + +It is normal that the last few changes can not be recovered. Vim flushes the +changes to disk when you don't type for about four seconds, or after typing +about two hundred characters. This is set with the 'updatetime' and +'updatecount' options. Thus when Vim didn't get a chance to save itself when +the system went down, the changes after the last flush will be lost. + +If you were editing without a file name, give an empty string as argument: > + + vim -r "" + +You must be in the right directory, otherwise Vim can't find the swap file. + +============================================================================== +*11.2* Where is the swap file? + +Vim can store the swap file in several places. Normally it is in the same +directory as the original file. To find it, change to the directory of the +file, and use: > + + vim -r + +Vim will list the swap files that it can find. It will also look in other +directories where the swap file for files in the current directory may be +located. It will not find swap files in any other directories though, it +doesn't search the directory tree. + The output could look like this: + + Swap files found: ~ + In current directory: ~ + 1. .main.c.swp ~ + owned by: mool dated: Tue May 29 21:00:25 2001 ~ + file name: ~mool/vim/vim6/src/main.c ~ + modified: YES ~ + user name: mool host name: masaka.moolenaar.net ~ + process ID: 12525 ~ + In directory ~/tmp: ~ + -- none -- ~ + In directory /var/tmp: ~ + -- none -- ~ + In directory /tmp: ~ + -- none -- ~ + +If there are several swap files that look like they may be the one you want to +use, a list is given of these swap files and you are requested to enter the +number of the one you want to use. Carefully look at the dates to decide +which one you want to use. + In case you don't know which one to use, just try them one by one and check +the resulting files if they are what you expected. + + +USING A SPECIFIC SWAP FILE + +If you know which swap file needs to be used, you can recover by giving the +swap file name. Vim will then finds out the name of the original file from +the swap file. + +Example: > + vim -r .help.txt.swo + +This is also handy when the swap file is in another directory than expected. +Vim recognizes files with the pattern *.s[uvw][a-z] as swap files. + +If this still does not work, see what file names Vim reports and rename the +files accordingly. Check the 'directory' option to see where Vim may have +put the swap file. + + Note: + Vim tries to find the swap file by searching the directories in the + 'dir' option, looking for files that match "filename.sw?". If + wildcard expansion doesn't work (e.g., when the 'shell' option is + invalid), Vim does a desperate try to find the file "filename.swp". + If that fails too, you will have to give the name of the swapfile + itself to be able to recover the file. + +============================================================================== +*11.3* Crashed or not? *ATTENTION* *E325* + +Vim tries to protect you from doing stupid things. Suppose you innocently +start editing a file, expecting the contents of the file to show up. Instead, +Vim produces a very long message: + + E325: ATTENTION ~ + Found a swap file by the name ".main.c.swp" ~ + owned by: mool dated: Tue May 29 21:09:28 2001 ~ + file name: ~mool/vim/vim6/src/main.c ~ + modified: no ~ + user name: mool host name: masaka.moolenaar.net ~ + process ID: 12559 (still running) ~ + While opening file "main.c" ~ + dated: Tue May 29 19:46:12 2001 ~ + ~ + (1) Another program may be editing the same file. ~ + If this is the case, be careful not to end up with two ~ + different instances of the same file when making changes. ~ + Quit, or continue with caution. ~ + ~ + (2) An edit session for this file crashed. ~ + If this is the case, use ":recover" or "vim -r main.c" ~ + to recover the changes (see ":help recovery"). ~ + If you did this already, delete the swap file ".main.c.swp" ~ + to avoid this message. ~ + +You get this message, because, when starting to edit a file, Vim checks if a +swap file already exists for that file. If there is one, there must be +something wrong. It may be one of these two situations. + +1. Another edit session is active on this file. Look in the message for the + line with "process ID". It might look like this: + + process ID: 12559 (still running) ~ + + The text "(still running)" indicates that the process editing this file + runs on the same computer. When working on a non-Unix system you will not + get this extra hint. When editing a file over a network, you may not see + the hint, because the process might be running on another computer. In + those two cases you must find out what the situation is yourself. + If there is another Vim editing the same file, continuing to edit will + result in two versions of the same file. The one that is written last will + overwrite the other one, resulting in loss of changes. You better quit + this Vim. + +2. The swap file might be the result from a previous crash of Vim or the + computer. Check the dates mentioned in the message. If the date of the + swap file is newer than the file you were editing, and this line appears: + + modified: YES ~ + + Then you very likely have a crashed edit session that is worth recovering. + If the date of the file is newer than the date of the swap file, then + either it was changed after the crash (perhaps you recovered it earlier, + but didn't delete the swap file?), or else the file was saved before the + crash but after the last write of the swap file (then you're lucky: you + don't even need that old swap file). Vim will warn you for this with this + extra line: + + NEWER than swap file! ~ + + +UNREADABLE SWAP FILE + +Sometimes the line + + [cannot be read] ~ + +will appear under the name of the swap file. This can be good or bad, +depending on circumstances. + +It is good if a previous editing session crashed without having made any +changes to the file. Then a directory listing of the swap file will show +that it has zero bytes. You may delete it and proceed. + +It is slightly bad if you don't have read permission for the swap file. You +may want to view the file read-only, or quit. On multi-user systems, if you +yourself did the last changes under a different login name, a logout +followed by a login under that other name might cure the "read error". Or +else you might want to find out who last edited (or is editing) the file and +have a talk with them. + +It is very bad if it means there is a physical read error on the disk +containing the swap file. Fortunately, this almost never happens. +You may want to view the file read-only at first (if you can), to see the +extent of the changes that were "forgotten". If you are the one in charge of +that file, be prepared to redo your last changes. + + +WHAT TO DO? *swap-exists-choices* + +If dialogs are supported you will be asked to select one of five choices: + + Swap file ".main.c.swp" already exists! ~ + [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~ + +O Open the file readonly. Use this when you just want to view the file and + don't need to recover it. You might want to use this when you know someone + else is editing the file, but you just want to look in it and not make + changes. + +E Edit the file anyway. Use this with caution! If the file is being edited + in another Vim, you might end up with two versions of the file. Vim will + try to warn you when this happens, but better be safe then sorry. + +R Recover the file from the swap file. Use this if you know that the swap + file contains changes that you want to recover. + +Q Quit. This avoids starting to edit the file. Use this if there is another + Vim editing the same file. + When you just started Vim, this will exit Vim. When starting Vim with + files in several windows, Vim quits only if there is a swap file for the + first one. When using an edit command, the file will not be loaded and you + are taken back to the previously edited file. + +A Abort. Like Quit, but also abort further commands. This is useful when + loading a script that edits several files, such as a session with multiple + windows. + +D Delete the swap file. Use this when you are sure you no longer need it. + For example, when it doesn't contain changes, or when the file itself is + newer than the swap file. + On Unix this choice is only offered when the process that created the + swap file does not appear to be running. + +If you do not get the dialog (you are running a version of Vim that does not +support it), you will have to do it manually. To recover the file, use this +command: > + + :recover + + +Vim cannot always detect that a swap file already exists for a file. This is +the case when the other edit session puts the swap files in another directory +or when the path name for the file is different when editing it on different +machines. Therefore, don't rely on Vim always warning you. + +If you really don't want to see this message, you can add the 'A' flag to the +'shortmess' option. But it's very unusual that you need this. + +For remarks about encryption and the swap file, see |:recover-crypt|. + +============================================================================== +*11.4* Further reading + +|swap-file| An explanation about where the swap file will be created and + what its name is. +|:preserve| Manually flushing the swap file to disk. +|:swapname| See the name of the swap file for the current file. +'updatecount' Number of key strokes after which the swap file is flushed to + disk. +'updatetime' Timeout after which the swap file is flushed to disk. +'swapsync' Whether the disk is synced when the swap file is flushed. +'directory' List of directory names where to store the swap file. +'maxmem' Limit for memory usage before writing text to the swap file. +'maxmemtot' Same, but for all files in total. + +============================================================================== + +Next chapter: |usr_12.txt| Clever tricks + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_12.txt b/share/vim/vim74/doc/usr_12.txt new file mode 100644 index 00000000..fba1b532 --- /dev/null +++ b/share/vim/vim74/doc/usr_12.txt @@ -0,0 +1,358 @@ +*usr_12.txt* For Vim version 7.4. Last change: 2007 May 11 + + VIM USER MANUAL - by Bram Moolenaar + + Clever tricks + + +By combining several commands you can make Vim do nearly everything. In this +chapter a number of useful combinations will be presented. This uses the +commands introduced in the previous chapters and a few more. + +|12.1| Replace a word +|12.2| Change "Last, First" to "First Last" +|12.3| Sort a list +|12.4| Reverse line order +|12.5| Count words +|12.6| Find a man page +|12.7| Trim blanks +|12.8| Find where a word is used + + Next chapter: |usr_20.txt| Typing command-line commands quickly + Previous chapter: |usr_11.txt| Recovering from a crash +Table of contents: |usr_toc.txt| + +============================================================================== +*12.1* Replace a word + +The substitute command can be used to replace all occurrences of a word with +another word: > + + :%s/four/4/g + +The "%" range means to replace in all lines. The "g" flag at the end causes +all words in a line to be replaced. + This will not do the right thing if your file also contains "thirtyfour". +It would be replaced with "thirty4". To avoid this, use the "\<" item to +match the start of a word: > + + :%s/\<four/4/g + +Obviously, this still goes wrong on "fourteen". Use "\>" to match the end of +a word: > + + :%s/\<four\>/4/g + +If you are programming, you might want to replace "four" in comments, but not +in the code. Since this is difficult to specify, add the "c" flag to have the +substitute command prompt you for each replacement: > + + + :%s/\<four\>/4/gc + + +REPLACING IN SEVERAL FILES + +Suppose you want to replace a word in more than one file. You could edit each +file and type the command manually. It's a lot faster to use record and +playback. + Let's assume you have a directory with C++ files, all ending in ".cpp". +There is a function called "GetResp" that you want to rename to "GetAnswer". + + vim *.cpp Start Vim, defining the argument list to + contain all the C++ files. You are now in the + first file. + qq Start recording into the q register + :%s/\<GetResp\>/GetAnswer/g + Do the replacements in the first file. + :wnext Write this file and move to the next one. + q Stop recording. + @q Execute the q register. This will replay the + substitution and ":wnext". You can verify + that this doesn't produce an error message. + 999@q Execute the q register on the remaining files. + +At the last file you will get an error message, because ":wnext" cannot move +to the next file. This stops the execution, and everything is done. + + Note: + When playing back a recorded sequence, an error stops the execution. + Therefore, make sure you don't get an error message when recording. + +There is one catch: If one of the .cpp files does not contain the word +"GetResp", you will get an error and replacing will stop. To avoid this, add +the "e" flag to the substitute command: > + + :%s/\<GetResp\>/GetAnswer/ge + +The "e" flag tells ":substitute" that not finding a match is not an error. + +============================================================================== +*12.2* Change "Last, First" to "First Last" + +You have a list of names in this form: + + Doe, John ~ + Smith, Peter ~ + +You want to change that to: + + John Doe ~ + Peter Smith ~ + +This can be done with just one command: > + + :%s/\([^,]*\), \(.*\)/\2 \1/ + +Let's break this down in parts. Obviously it starts with a substitute +command. The "%" is the line range, which stands for the whole file. Thus +the substitution is done in every line in the file. + The arguments for the substitute command are "/from/to/". The slashes +separate the "from" pattern and the "to" string. This is what the "from" +pattern contains: + \([^,]*\), \(.*\) ~ + + The first part between \( \) matches "Last" \( \) + match anything but a comma [^,] + any number of times * + matches ", " literally , + The second part between \( \) matches "First" \( \) + any character . + any number of times * + +In the "to" part we have "\2" and "\1". These are called backreferences. +They refer to the text matched by the "\( \)" parts in the pattern. "\2" +refers to the text matched by the second "\( \)", which is the "First" name. +"\1" refers to the first "\( \)", which is the "Last" name. + You can use up to nine backreferences in the "to" part of a substitute +command. "\0" stands for the whole matched pattern. There are a few more +special items in a substitute command, see |sub-replace-special|. + +============================================================================== +*12.3* Sort a list + +In a Makefile you often have a list of files. For example: + + OBJS = \ ~ + version.o \ ~ + pch.o \ ~ + getopt.o \ ~ + util.o \ ~ + getopt1.o \ ~ + inp.o \ ~ + patch.o \ ~ + backup.o ~ + +To sort this list, filter the text through the external sort command: > + + /^OBJS + j + :.,/^$/-1!sort + +This goes to the first line, where "OBJS" is the first thing in the line. +Then it goes one line down and filters the lines until the next empty line. +You could also select the lines in Visual mode and then use "!sort". That's +easier to type, but more work when there are many lines. + The result is this: + + OBJS = \ ~ + backup.o ~ + getopt.o \ ~ + getopt1.o \ ~ + inp.o \ ~ + patch.o \ ~ + pch.o \ ~ + util.o \ ~ + version.o \ ~ + + +Notice that a backslash at the end of each line is used to indicate the line +continues. After sorting, this is wrong! The "backup.o" line that was at +the end didn't have a backslash. Now that it sorts to another place, it +must have a backslash. + The simplest solution is to add the backslash with "A \<Esc>". You can +keep the backslash in the last line, if you make sure an empty line comes +after it. That way you don't have this problem again. + +============================================================================== +*12.4* Reverse line order + +The |:global| command can be combined with the |:move| command to move all the +lines before the first line, resulting in a reversed file. The command is: > + + :global/^/m 0 + +Abbreviated: > + + :g/^/m 0 + +The "^" regular expression matches the beginning of the line (even if the line +is blank). The |:move| command moves the matching line to after the mythical +zeroth line, so the current matching line becomes the first line of the file. +As the |:global| command is not confused by the changing line numbering, +|:global| proceeds to match all remaining lines of the file and puts each as +the first. + +This also works on a range of lines. First move to above the first line and +mark it with "mt". Then move the cursor to the last line in the range and +type: > + + :'t+1,.g/^/m 't + +============================================================================== +*12.5* Count words + +Sometimes you have to write a text with a maximum number of words. Vim can +count the words for you. + When the whole file is what you want to count the words in, use this +command: > + + g CTRL-G + +Do not type a space after the g, this is just used here to make the command +easy to read. + The output looks like this: + + Col 1 of 0; Line 141 of 157; Word 748 of 774; Byte 4489 of 4976 ~ + +You can see on which word you are (748), and the total number of words in the +file (774). + +When the text is only part of a file, you could move to the start of the text, +type "g CTRL-G", move to the end of the text, type "g CTRL-G" again, and then +use your brain to compute the difference in the word position. That's a good +exercise, but there is an easier way. With Visual mode, select the text you +want to count words in. Then type g CTRL-G. The result: + + Selected 5 of 293 Lines; 70 of 1884 Words; 359 of 10928 Bytes ~ + +For other ways to count words, lines and other items, see |count-items|. + +============================================================================== +*12.6* Find a man page *find-manpage* + +While editing a shell script or C program, you are using a command or function +that you want to find the man page for (this is on Unix). Let's first use a +simple way: Move the cursor to the word you want to find help on and press > + + K + +Vim will run the external "man" program on the word. If the man page is +found, it is displayed. This uses the normal pager to scroll through the text +(mostly the "more" program). When you get to the end pressing <Enter> will +get you back into Vim. + +A disadvantage is that you can't see the man page and the text you are working +on at the same time. There is a trick to make the man page appear in a Vim +window. First, load the man filetype plugin: > + + :runtime! ftplugin/man.vim + +Put this command in your vimrc file if you intend to do this often. Now you +can use the ":Man" command to open a window on a man page: > + + :Man csh + +You can scroll around and the text is highlighted. This allows you to find +the help you were looking for. Use CTRL-W w to jump to the window with the +text you were working on. + To find a man page in a specific section, put the section number first. +For example, to look in section 3 for "echo": > + + :Man 3 echo + +To jump to another man page, which is in the text with the typical form +"word(1)", press CTRL-] on it. Further ":Man" commands will use the same +window. + +To display a man page for the word under the cursor, use this: > + + \K + +(If you redefined the <Leader>, use it instead of the backslash). +For example, you want to know the return value of "strstr()" while editing +this line: + + if ( strstr (input, "aap") == ) ~ + +Move the cursor to somewhere on "strstr" and type "\K". A window will open +to display the man page for strstr(). + +============================================================================== +*12.7* Trim blanks + +Some people find spaces and tabs at the end of a line useless, wasteful, and +ugly. To remove whitespace at the end of every line, execute the following +command: > + + :%s/\s\+$// + +The line range "%" is used, thus this works on the whole file. The pattern +that the ":substitute" command matches with is "\s\+$". This finds white +space characters (\s), 1 or more of them (\+), before the end-of-line ($). +Later will be explained how you write patterns like this |usr_27.txt|. + The "to" part of the substitute command is empty: "//". Thus it replaces +with nothing, effectively deleting the matched white space. + +Another wasteful use of spaces is placing them before a tab. Often these can +be deleted without changing the amount of white space. But not always! +Therefore, you can best do this manually. Use this search command: > + + / + +You cannot see it, but there is a space before a tab in this command. Thus +it's "/<Space><Tab>". Now use "x" to delete the space and check that the +amount of white space doesn't change. You might have to insert a tab if it +does change. Type "n" to find the next match. Repeat this until no more +matches can be found. + +============================================================================== +*12.8* Find where a word is used + +If you are a UNIX user, you can use a combination of Vim and the grep command +to edit all the files that contain a given word. This is extremely useful if +you are working on a program and want to view or edit all the files that +contain a specific variable. + For example, suppose you want to edit all the C program files that contain +the word "frame_counter". To do this you use the command: > + + vim `grep -l frame_counter *.c` + +Let's look at this command in detail. The grep command searches through a set +of files for a given word. Because the -l argument is specified, the command +will only list the files containing the word and not print the matching lines. +The word it is searching for is "frame_counter". Actually, this can be any +regular expression. (Note: What grep uses for regular expressions is not +exactly the same as what Vim uses.) + The entire command is enclosed in backticks (`). This tells the UNIX shell +to run this command and pretend that the results were typed on the command +line. So what happens is that the grep command is run and produces a list of +files, these files are put on the Vim command line. This results in Vim +editing the file list that is the output of grep. You can then use commands +like ":next" and ":first" to browse through the files. + + +FINDING EACH LINE + +The above command only finds the files in which the word is found. You still +have to find the word within the files. + Vim has a built-in command that you can use to search a set of files for a +given string. If you want to find all occurrences of "error_string" in all C +program files, for example, enter the following command: > + + :grep error_string *.c + +This causes Vim to search for the string "error_string" in all the specified +files (*.c). The editor will now open the first file where a match is found +and position the cursor on the first matching line. To go to the next +matching line (no matter in what file it is), use the ":cnext" command. To go +to the previous match, use the ":cprev" command. Use ":clist" to see all the +matches and where they are. + The ":grep" command uses the external commands grep (on Unix) or findstr +(on Windows). You can change this by setting the option 'grepprg'. + +============================================================================== + +Next chapter: |usr_20.txt| Typing command-line commands quickly + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_20.txt b/share/vim/vim74/doc/usr_20.txt new file mode 100644 index 00000000..5f0a6601 --- /dev/null +++ b/share/vim/vim74/doc/usr_20.txt @@ -0,0 +1,384 @@ +*usr_20.txt* For Vim version 7.4. Last change: 2006 Apr 24 + + VIM USER MANUAL - by Bram Moolenaar + + Typing command-line commands quickly + + +Vim has a few generic features that makes it easier to enter commands. Colon +commands can be abbreviated, edited and repeated. Completion is available for +nearly everything. + +|20.1| Command line editing +|20.2| Command line abbreviations +|20.3| Command line completion +|20.4| Command line history +|20.5| Command line window + + Next chapter: |usr_21.txt| Go away and come back + Previous chapter: |usr_12.txt| Clever tricks +Table of contents: |usr_toc.txt| + +============================================================================== +*20.1* Command line editing + +When you use a colon (:) command or search for a string with / or ?, Vim puts +the cursor on the bottom of the screen. There you type the command or search +pattern. This is called the Command line. Also when it's used for entering a +search command. + +The most obvious way to edit the command you type is by pressing the <BS> key. +This erases the character before the cursor. To erase another character, +typed earlier, first move the cursor with the cursor keys. + For example, you have typed this: > + + :s/col/pig/ + +Before you hit <Enter>, you notice that "col" should be "cow". To correct +this, you type <Left> five times. The cursor is now just after "col". Type +<BS> and "w" to correct: > + + :s/cow/pig/ + +Now you can press <Enter> directly. You don't have to move the cursor to the +end of the line before executing the command. + +The most often used keys to move around in the command line: + + <Left> one character left + <Right> one character right + <S-Left> or <C-Left> one word left + <S-Right> or <C-Right> one word right + CTRL-B or <Home> to begin of command line + CTRL-E or <End> to end of command line + + Note: + <S-Left> (cursor left key with Shift key pressed) and <C-Left> (cursor + left key with Control pressed) will not work on all keyboards. Same + for the other Shift and Control combinations. + +You can also use the mouse to move the cursor. + + +DELETING + +As mentioned, <BS> deletes the character before the cursor. To delete a whole +word use CTRL-W. + + /the fine pig ~ + + CTRL-W + + /the fine ~ + +CTRL-U removes all text, thus allows you to start all over again. + + +OVERSTRIKE + +The <Insert> key toggles between inserting characters and replacing the +existing ones. Start with this text: + + /the fine pig ~ + +Move the cursor to the start of "fine" with <S-Left> twice (or <Left> eight +times, if <S-Left> doesn't work). Now press <Insert> to switch to overstrike +and type "great": + + /the greatpig ~ + +Oops, we lost the space. Now, don't use <BS>, because it would delete the +"t" (this is different from Replace mode). Instead, press <Insert> to switch +from overstrike to inserting, and type the space: + + /the great pig ~ + + +CANCELLING + +You thought of executing a : or / command, but changed your mind. To get rid +of what you already typed, without executing it, press CTRL-C or <Esc>. + + Note: + <Esc> is the universal "get out" key. Unfortunately, in the good old + Vi pressing <Esc> in a command line executed the command! Since that + might be considered to be a bug, Vim uses <Esc> to cancel the command. + But with the 'cpoptions' option it can be made Vi compatible. And + when using a mapping (which might be written for Vi) <Esc> also works + Vi compatible. Therefore, using CTRL-C is a method that always works. + +If you are at the start of the command line, pressing <BS> will cancel the +command. It's like deleting the ":" or "/" that the line starts with. + +============================================================================== +*20.2* Command line abbreviations + +Some of the ":" commands are really long. We already mentioned that +":substitute" can be abbreviated to ":s". This is a generic mechanism, all +":" commands can be abbreviated. + +How short can a command get? There are 26 letters, and many more commands. +For example, ":set" also starts with ":s", but ":s" doesn't start a ":set" +command. Instead ":set" can be abbreviated to ":se". + When the shorter form of a command could be used for two commands, it +stands for only one of them. There is no logic behind which one, you have to +learn them. In the help files the shortest form that works is mentioned. For +example: > + + :s[ubstitute] + +This means that the shortest form of ":substitute" is ":s". The following +characters are optional. Thus ":su" and ":sub" also work. + +In the user manual we will either use the full name of command, or a short +version that is still readable. For example, ":function" can be abbreviated +to ":fu". But since most people don't understand what that stands for, we +will use ":fun". (Vim doesn't have a ":funny" command, otherwise ":fun" would +be confusing too.) + +It is recommended that in Vim scripts you write the full command name. That +makes it easier to read back when you make later changes. Except for some +often used commands like ":w" (":write") and ":r" (":read"). + A particularly confusing one is ":end", which could stand for ":endif", +":endwhile" or ":endfunction". Therefore, always use the full name. + + +SHORT OPTION NAMES + +In the user manual the long version of the option names is used. Many options +also have a short name. Unlike ":" commands, there is only one short name +that works. For example, the short name of 'autoindent' is 'ai'. Thus these +two commands do the same thing: > + + :set autoindent + :set ai + +You can find the full list of long and short names here: |option-list|. + +============================================================================== +*20.3* Command line completion + +This is one of those Vim features that, by itself, is a reason to switch from +Vi to Vim. Once you have used this, you can't do without. + +Suppose you have a directory that contains these files: + + info.txt + intro.txt + bodyofthepaper.txt + +To edit the last one, you use the command: > + + :edit bodyofthepaper.txt + +It's easy to type this wrong. A much quicker way is: > + + :edit b<Tab> + +Which will result in the same command. What happened? The <Tab> key does +completion of the word before the cursor. In this case "b". Vim looks in the +directory and finds only one file that starts with a "b". That must be the +one you are looking for, thus Vim completes the file name for you. + +Now type: > + + :edit i<Tab> + +Vim will beep, and give you: > + + :edit info.txt + +The beep means that Vim has found more than one match. It then uses the first +match it found (alphabetically). If you press <Tab> again, you get: > + + :edit intro.txt + +Thus, if the first <Tab> doesn't give you the file you were looking for, press +it again. If there are more matches, you will see them all, one at a time. + If you press <Tab> on the last matching entry, you will go back to what you +first typed: > + + :edit i + +Then it starts all over again. Thus Vim cycles through the list of matches. +Use CTRL-P to go through the list in the other direction: + + <------------------- <Tab> -------------------------+ + | + <Tab> --> <Tab> --> + :edit i :edit info.txt :edit intro.txt + <-- CTRL-P <-- CTRL-P + | + +---------------------- CTRL-P ------------------------> + + +CONTEXT + +When you type ":set i" instead of ":edit i" and press <Tab> you get: > + + :set icon + +Hey, why didn't you get ":set info.txt"? That's because Vim has context +sensitive completion. The kind of words Vim will look for depends on the +command before it. Vim knows that you cannot use a file name just after a +":set" command, but you can use an option name. + Again, if you repeat typing the <Tab>, Vim will cycle through all matches. +There are quite a few, it's better to type more characters first: > + + :set isk<Tab> + +Gives: > + + :set iskeyword + +Now type "=" and press <Tab>: > + + :set iskeyword=@,48-57,_,192-255 + +What happens here is that Vim inserts the old value of the option. Now you +can edit it. + What is completed with <Tab> is what Vim expects in that place. Just try +it out to see how it works. In some situations you will not get what you +want. That's either because Vim doesn't know what you want, or because +completion was not implemented for that situation. In that case you will get +a <Tab> inserted (displayed as ^I). + + +LIST MATCHES + +When there are many matches, you would like to see an overview. Do this by +pressing CTRL-D. For example, pressing CTRL-D after: > + + :set is + +results in: > + + :set is + incsearch isfname isident iskeyword isprint + :set is + +Vim lists the matches and then comes back with the text you typed. You can +now check the list for the item you wanted. If it isn't there, you can use +<BS> to correct the word. If there are many matches, type a few more +characters before pressing <Tab> to complete the rest. + If you have watched carefully, you will have noticed that "incsearch" +doesn't start with "is". In this case "is" stands for the short name of +"incsearch". (Many options have a short and a long name.) Vim is clever +enough to know that you might have wanted to expand the short name of the +option into the long name. + + +THERE IS MORE + +The CTRL-L command completes the word to the longest unambiguous string. If +you type ":edit i" and there are files "info.txt" and "info_backup.txt" you +will get ":edit info". + +The 'wildmode' option can be used to change the way completion works. +The 'wildmenu' option can be used to get a menu-like list of matches. +Use the 'suffixes' option to specify files that are less important and appear +at the end of the list of files. +The 'wildignore' option specifies files that are not listed at all. + +More about all of this here: |cmdline-completion| + +============================================================================== +*20.4* Command line history + +In chapter 3 we briefly mentioned the history. The basics are that you can +use the <Up> key to recall an older command line. <Down> then takes you back +to newer commands. + +There are actually four histories. The ones we will mention here are for ":" +commands and for "/" and "?" search commands. The "/" and "?" commands share +the same history, because they are both search commands. The two other +histories are for expressions and input lines for the input() function. +|cmdline-history| + +Suppose you have done a ":set" command, typed ten more colon commands and then +want to repeat that ":set" command again. You could press ":" and then ten +times <Up>. There is a quicker way: > + + :se<Up> + +Vim will now go back to the previous command that started with "se". You have +a good chance that this is the ":set" command you were looking for. At least +you should not have to press <Up> very often (unless ":set" commands is all +you have done). + +The <Up> key will use the text typed so far and compare it with the lines in +the history. Only matching lines will be used. + If you do not find the line you were looking for, use <Down> to go back to +what you typed and correct that. Or use CTRL-U to start all over again. + +To see all the lines in the history: > + + :history + +That's the history of ":" commands. The search history is displayed with this +command: > + + :history / + +CTRL-P will work like <Up>, except that it doesn't matter what you already +typed. Similarly for CTRL-N and <Down>. CTRL-P stands for previous, CTRL-N +for next. + +============================================================================== +*20.5* Command line window + +Typing the text in the command line works different from typing text in Insert +mode. It doesn't allow many commands to change the text. For most commands +that's OK, but sometimes you have to type a complicated command. That's where +the command line window is useful. + +Open the command line window with this command: > + + q: + +Vim now opens a (small) window at the bottom. It contains the command line +history, and an empty line at the end: + + +-------------------------------------+ + |other window | + |~ | + |file.txt=============================| + |:e c | + |:e config.h.in | + |:set path=.,/usr/include,, | + |:set iskeyword=@,48-57,_,192-255 | + |:set is | + |:q | + |: | + |command-line=========================| + | | + +-------------------------------------+ + +You are now in Normal mode. You can use the "hjkl" keys to move around. For +example, move up with "5k" to the ":e config.h.in" line. Type "$h" to go to +the "i" of "in" and type "cwout". Now you have changed the line to: + + :e config.h.out ~ + +Now press <Enter> and this command will be executed. The command line window +will close. + The <Enter> command will execute the line under the cursor. It doesn't +matter whether Vim is in Insert mode or in Normal mode. + Changes in the command line window are lost. They do not result in the +history to be changed. Except that the command you execute will be added to +the end of the history, like with all executed commands. + +The command line window is very useful when you want to have overview of the +history, lookup a similar command, change it a bit and execute it. A search +command can be used to find something. + In the previous example the "?config" search command could have been used +to find the previous command that contains "config". It's a bit strange, +because you are using a command line to search in the command line window. +While typing that search command you can't open another command line window, +there can be only one. + +============================================================================== + +Next chapter: |usr_21.txt| Go away and come back + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_21.txt b/share/vim/vim74/doc/usr_21.txt new file mode 100644 index 00000000..450d3943 --- /dev/null +++ b/share/vim/vim74/doc/usr_21.txt @@ -0,0 +1,499 @@ +*usr_21.txt* For Vim version 7.4. Last change: 2012 Nov 02 + + VIM USER MANUAL - by Bram Moolenaar + + Go away and come back + + +This chapter goes into mixing the use of other programs with Vim. Either by +executing program from inside Vim or by leaving Vim and coming back later. +Furthermore, this is about the ways to remember the state of Vim and restore +it later. + +|21.1| Suspend and resume +|21.2| Executing shell commands +|21.3| Remembering information; viminfo +|21.4| Sessions +|21.5| Views +|21.6| Modelines + + Next chapter: |usr_22.txt| Finding the file to edit + Previous chapter: |usr_20.txt| Typing command-line commands quickly +Table of contents: |usr_toc.txt| + +============================================================================== +*21.1* Suspend and resume + +Like most Unix programs Vim can be suspended by pressing CTRL-Z. This stops +Vim and takes you back to the shell it was started in. You can then do any +other commands until you are bored with them. Then bring back Vim with the +"fg" command. > + + CTRL-Z + {any sequence of shell commands} + fg + +You are right back where you left Vim, nothing has changed. + In case pressing CTRL-Z doesn't work, you can also use ":suspend". +Don't forget to bring Vim back to the foreground, you would lose any changes +that you made! + +Only Unix has support for this. On other systems Vim will start a shell for +you. This also has the functionality of being able to execute shell commands. +But it's a new shell, not the one that you started Vim from. + When you are running the GUI you can't go back to the shell where Vim was +started. CTRL-Z will minimize the Vim window instead. + +============================================================================== +*21.2* Executing shell commands + +To execute a single shell command from Vim use ":!{command}". For example, to +see a directory listing: > + + :!ls + :!dir + +The first one is for Unix, the second one for MS-Windows. + Vim will execute the program. When it ends you will get a prompt to hit +<Enter>. This allows you to have a look at the output from the command before +returning to the text you were editing. + The "!" is also used in other places where a program is run. Let's take +a look at an overview: + + :!{program} execute {program} + :r !{program} execute {program} and read its output + :w !{program} execute {program} and send text to its input + :[range]!{program} filter text through {program} + +Notice that the presence of a range before "!{program}" makes a big +difference. Without it executes the program normally, with the range a number +of text lines is filtered through the program. + +Executing a whole row of programs this way is possible. But a shell is much +better at it. You can start a new shell this way: > + + :shell + +This is similar to using CTRL-Z to suspend Vim. The difference is that a new +shell is started. + +When using the GUI the shell will be using the Vim window for its input and +output. Since Vim is not a terminal emulator, this will not work perfectly. +If you have trouble, try toggling the 'guipty' option. If this still doesn't +work well enough, start a new terminal to run the shell in. For example with: +> + :!xterm& + +============================================================================== +*21.3* Remembering information; viminfo + +After editing for a while you will have text in registers, marks in various +files, a command line history filled with carefully crafted commands. When +you exit Vim all of this is lost. But you can get it back! + +The viminfo file is designed to store status information: + + Command-line and Search pattern history + Text in registers + Marks for various files + The buffer list + Global variables + +Each time you exit Vim it will store this information in a file, the viminfo +file. When Vim starts again, the viminfo file is read and the information +restored. + +The 'viminfo' option is set by default to restore a limited number of items. +You might want to set it to remember more information. This is done through +the following command: > + + :set viminfo=string + +The string specifies what to save. The syntax of this string is an option +character followed by an argument. The option/argument pairs are separated by +commas. + Take a look at how you can build up your own viminfo string. First, the ' +option is used to specify how many files for which you save marks (a-z). Pick +a nice even number for this option (1000, for instance). Your command now +looks like this: > + + :set viminfo='1000 + +The f option controls whether global marks (A-Z and 0-9) are stored. If this +option is 0, none are stored. If it is 1 or you do not specify an f option, +the marks are stored. You want this feature, so now you have this: > + + :set viminfo='1000,f1 + +The < option controls how many lines are saved for each of the registers. By +default, all the lines are saved. If 0, nothing is saved. To avoid adding +thousands of lines to your viminfo file (which might never get used and makes +starting Vim slower) you use a maximum of 500 lines: > + + :set viminfo='1000,f1,<500 +< +Other options you might want to use: + : number of lines to save from the command line history + @ number of lines to save from the input line history + / number of lines to save from the search history + r removable media, for which no marks will be stored (can be + used several times) + ! global variables that start with an uppercase letter and + don't contain lowercase letters + h disable 'hlsearch' highlighting when starting + % the buffer list (only restored when starting Vim without file + arguments) + c convert the text using 'encoding' + n name used for the viminfo file (must be the last option) + +See the 'viminfo' option and |viminfo-file| for more information. + +When you run Vim multiple times, the last one exiting will store its +information. This may cause information that previously exiting Vims stored +to be lost. Each item can be remembered only once. + + +GETTING BACK TO WHERE YOU STOPPED VIM + +You are halfway editing a file and it's time to leave for holidays. You exit +Vim and go enjoy yourselves, forgetting all about your work. After a couple +of weeks you start Vim, and type: +> + '0 + +And you are right back where you left Vim. So you can get on with your work. + Vim creates a mark each time you exit Vim. The last one is '0. The +position that '0 pointed to is made '1. And '1 is made to '2, and so forth. +Mark '9 is lost. + The |:marks| command is useful to find out where '0 to '9 will take you. + + +GETTING BACK TO SOME FILE + +If you want to go back to a file that you edited recently, but not when +exiting Vim, there is a slightly more complicated way. You can see a list of +files by typing the command: > + + :oldfiles +< 1: ~/.viminfo ~ + 2: ~/text/resume.txt ~ + 3: /tmp/draft ~ + +Now you would like to edit the second file, which is in the list preceded by +"2:". You type: > + + :e #<2 + +Instead of ":e" you can use any command that has a file name argument, the +"#<2" item works in the same place as "%" (current file name) and "#" +(alternate file name). So you can also split the window to edit the third +file: > + + :split #<3 + +That #<123 thing is a bit complicated when you just want to edit a file. +Fortunately there is a simpler way: > + + :browse oldfiles +< 1: ~/.viminfo ~ + 2: ~/text/resume.txt ~ + 3: /tmp/draft ~ + -- More -- + +You get the same list of files as with |:oldfiles|. If you want to edit +"resume.txt" first press "q" to stop the listing. You will get a prompt: + + Type number and <Enter> (empty cancels): ~ + +Type "2" and press <Enter> to edit the second file. + +More info at |:oldfiles|, |v:oldfiles| and |c_#<|. + + +MOVE INFO FROM ONE VIM TO ANOTHER + +You can use the ":wviminfo" and ":rviminfo" commands to save and restore the +information while still running Vim. This is useful for exchanging register +contents between two instances of Vim, for example. In the first Vim do: > + + :wviminfo! ~/tmp/viminfo + +And in the second Vim do: > + + :rviminfo! ~/tmp/viminfo + +Obviously, the "w" stands for "write" and the "r" for "read". + The ! character is used by ":wviminfo" to forcefully overwrite an existing +file. When it is omitted, and the file exists, the information is merged into +the file. + The ! character used for ":rviminfo" means that all the information is +used, this may overwrite existing information. Without the ! only information +that wasn't set is used. + These commands can also be used to store info and use it again later. You +could make a directory full of viminfo files, each containing info for a +different purpose. + +============================================================================== +*21.4* Sessions + +Suppose you are editing along, and it is the end of the day. You want to quit +work and pick up where you left off the next day. You can do this by saving +your editing session and restoring it the next day. + A Vim session contains all the information about what you are editing. +This includes things such as the file list, window layout, global variables, +options and other information. (Exactly what is remembered is controlled by +the 'sessionoptions' option, described below.) + The following command creates a session file: > + + :mksession vimbook.vim + +Later if you want to restore this session, you can use this command: > + + :source vimbook.vim + +If you want to start Vim and restore a specific session, you can use the +following command: > + + vim -S vimbook.vim + +This tells Vim to read a specific file on startup. The 'S' stands for +session (actually, you can source any Vim script with -S, thus it might as +well stand for "source"). + +The windows that were open are restored, with the same position and size as +before. Mappings and option values are like before. + What exactly is restored depends on the 'sessionoptions' option. The +default value is "blank,buffers,curdir,folds,help,options,winsize". + + blank keep empty windows + buffers all buffers, not only the ones in a window + curdir the current directory + folds folds, also manually created ones + help the help window + options all options and mappings + winsize window sizes + +Change this to your liking. To also restore the size of the Vim window, for +example, use: > + + :set sessionoptions+=resize + + +SESSION HERE, SESSION THERE + +The obvious way to use sessions is when working on different projects. +Suppose you store your session files in the directory "~/.vim". You are +currently working on the "secret" project and have to switch to the "boring" +project: > + + :wall + :mksession! ~/.vim/secret.vim + :source ~/.vim/boring.vim + +This first uses ":wall" to write all modified files. Then the current session +is saved, using ":mksession!". This overwrites the previous session. The +next time you load the secret session you can continue where you were at this +point. And finally you load the new "boring" session. + +If you open help windows, split and close various windows, and generally mess +up the window layout, you can go back to the last saved session: > + + :source ~/.vim/boring.vim + +Thus you have complete control over whether you want to continue next time +where you are now, by saving the current setup in a session, or keep the +session file as a starting point. + Another way of using sessions is to create a window layout that you like to +use, and save this in a session. Then you can go back to this layout whenever +you want. + For example, this is a nice layout to use: + + +----------------------------------------+ + | VIM - main help file | + | | + |Move around: Use the cursor keys, or "h| + |help.txt================================| + |explorer | | + |dir |~ | + |dir |~ | + |file |~ | + |file |~ | + |file |~ | + |file |~ | + |~/=========|[No File]===================| + | | + +----------------------------------------+ + +This has a help window at the top, so that you can read this text. The narrow +vertical window on the left contains a file explorer. This is a Vim plugin +that lists the contents of a directory. You can select files to edit there. +More about this in the next chapter. + Create this from a just started Vim with: > + + :help + CTRL-W w + :vertical split ~/ + +You can resize the windows a bit to your liking. Then save the session with: +> + :mksession ~/.vim/mine.vim + +Now you can start Vim with this layout: > + + vim -S ~/.vim/mine.vim + +Hint: To open a file you see listed in the explorer window in the empty +window, move the cursor to the filename and press "O". Double clicking with +the mouse will also do this. + + +UNIX AND MS-WINDOWS + +Some people have to do work on MS-Windows systems one day and on Unix another +day. If you are one of them, consider adding "slash" and "unix" to +'sessionoptions'. The session files will then be written in a format that can +be used on both systems. This is the command to put in your vimrc file: > + + :set sessionoptions+=unix,slash + +Vim will use the Unix format then, because the MS-Windows Vim can read and +write Unix files, but Unix Vim can't read MS-Windows format session files. +Similarly, MS-Windows Vim understands file names with / to separate names, but +Unix Vim doesn't understand \. + + +SESSIONS AND VIMINFO + +Sessions store many things, but not the position of marks, contents of +registers and the command line history. You need to use the viminfo feature +for these things. + In most situations you will want to use sessions separately from viminfo. +This can be used to switch to another session, but keep the command line +history. And yank text into registers in one session, and paste it back in +another session. + You might prefer to keep the info with the session. You will have to do +this yourself then. Example: > + + :mksession! ~/.vim/secret.vim + :wviminfo! ~/.vim/secret.viminfo + +And to restore this again: > + + :source ~/.vim/secret.vim + :rviminfo! ~/.vim/secret.viminfo + +============================================================================== +*21.5* Views + +A session stores the looks of the whole of Vim. When you want to store the +properties for one window only, use a view. + The use of a view is for when you want to edit a file in a specific way. +For example, you have line numbers enabled with the 'number' option and +defined a few folds. Just like with sessions, you can remember this view on +the file and restore it later. Actually, when you store a session, it stores +the view of each window. + There are two basic ways to use views. The first is to let Vim pick a name +for the view file. You can restore the view when you later edit the same +file. To store the view for the current window: > + + :mkview + +Vim will decide where to store the view. When you later edit the same file +you get the view back with this command: > + + :loadview + +That's easy, isn't it? + Now you want to view the file without the 'number' option on, or with all +folds open, you can set the options to make the window look that way. Then +store this view with: > + + :mkview 1 + +Obviously, you can get this back with: > + + :loadview 1 + +Now you can switch between the two views on the file by using ":loadview" with +and without the "1" argument. + You can store up to ten views for the same file this way, one unnumbered +and nine numbered 1 to 9. + + +A VIEW WITH A NAME + +The second basic way to use views is by storing the view in a file with a name +you choose. This view can be loaded while editing another file. Vim will +then switch to editing the file specified in the view. Thus you can use this +to quickly switch to editing another file, with all its options set as you +saved them. + For example, to save the view of the current file: > + + :mkview ~/.vim/main.vim + +You can restore it with: > + + :source ~/.vim/main.vim + +============================================================================== +*21.6* Modelines + +When editing a specific file, you might set options specifically for that +file. Typing these commands each time is boring. Using a session or view for +editing a file doesn't work when sharing the file between several people. + The solution for this situation is adding a modeline to the file. This is +a line of text that tells Vim the values of options, to be used in this file +only. + A typical example is a C program where you make indents by a multiple of 4 +spaces. This requires setting the 'shiftwidth' option to 4. This modeline +will do that: + + /* vim:set shiftwidth=4: */ ~ + +Put this line as one of the first or last five lines in the file. When +editing the file, you will notice that 'shiftwidth' will have been set to +four. When editing another file, it's set back to the default value of eight. + For some files the modeline fits well in the header, thus it can be put at +the top of the file. For text files and other files where the modeline gets +in the way of the normal contents, put it at the end of the file. + +The 'modelines' option specifies how many lines at the start and end of the +file are inspected for containing a modeline. To inspect ten lines: > + + :set modelines=10 + +The 'modeline' option can be used to switch this off. Do this when you are +working as root on Unix or Administrator on MS-Windows, or when you don't +trust the files you are editing: > + + :set nomodeline + +Use this format for the modeline: + + any-text vim:set {option}={value} ... : any-text ~ + +The "any-text" indicates that you can put any text before and after the part +that Vim will use. This allows making it look like a comment, like what was +done above with /* and */. + The " vim:" part is what makes Vim recognize this line. There must be +white space before "vim", or "vim" must be at the start of the line. Thus +using something like "gvim:" will not work. + The part between the colons is a ":set" command. It works the same way as +typing the ":set" command, except that you need to insert a backslash before a +colon (otherwise it would be seen as the end of the modeline). + +Another example: + + // vim:set textwidth=72 dir=c\:\tmp: use c:\tmp here ~ + +There is an extra backslash before the first colon, so that it's included in +the ":set" command. The text after the second colon is ignored, thus a remark +can be placed there. + +For more details see |modeline|. + +============================================================================== + +Next chapter: |usr_22.txt| Finding the file to edit + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_22.txt b/share/vim/vim74/doc/usr_22.txt new file mode 100644 index 00000000..cff8e9db --- /dev/null +++ b/share/vim/vim74/doc/usr_22.txt @@ -0,0 +1,400 @@ +*usr_22.txt* For Vim version 7.4. Last change: 2012 Nov 15 + + VIM USER MANUAL - by Bram Moolenaar + + Finding the file to edit + + +Files can be found everywhere. So how do you find them? Vim offers various +ways to browse the directory tree. There are commands to jump to a file that +is mentioned in another. And Vim remembers which files have been edited +before. + +|22.1| The file browser +|22.2| The current directory +|22.3| Finding a file +|22.4| The buffer list + + Next chapter: |usr_23.txt| Editing other files + Previous chapter: |usr_21.txt| Go away and come back +Table of contents: |usr_toc.txt| + +============================================================================== +*22.1* The file browser + +Vim has a plugin that makes it possible to edit a directory. Try this: > + + :edit . + +Through the magic of autocommands and Vim scripts, the window will be filled +with the contents of the directory. It looks like this: + +" ============================================================================ ~ +" Netrw Directory Listing (netrw v109) ~ +" Sorted by name ~ +" Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,*,\.info$,\.swp$,\.o$\.obj$,\.bak$ ~ +" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec ~ +" ============================================================================ ~ +../ ~ +./ ~ +check/ ~ +Makefile ~ +autocmd.txt ~ +change.txt ~ +eval.txt~ ~ +filetype.txt~ ~ +help.txt.info ~ + +You can see these items: + +1. The name of the browsing tool and its version number +2. The name of the browsing directory +3. The method of sorting (may be by name, time, or size) +4. How names are to be sorted (directories first, then *.h files, + *.c files, etc) +5. How to get help (use the <F1> key), and an abbreviated listing + of available commands +6. A listing of files, including "../", which allows one to list + the parent directory. + +If you have syntax highlighting enabled, the different parts are highlighted +so as to make it easier to spot them. + +You can use Normal mode Vim commands to move around in the text. For example, +move the cursor atop a file and press <Enter>; you will then be editing that +file. To go back to the browser use ":edit ." again, or use ":Explore". +CTRL-O also works. + +Try using <Enter> while the cursor is atop a directory name. The result is +that the file browser moves into that directory and displays the items found +there. Pressing <Enter> on the first directory "../" moves you one level +higher. Pressing "-" does the same thing, without the need to move to the +"../" item first. + +You can press <F1> to get help on the things you can do in the netrw file +browser. This is what you get: > + + 9. Directory Browsing netrw-browse netrw-dir netrw-list netrw-help + + MAPS netrw-maps + <F1>.............Help.......................................|netrw-help| + <cr>.............Browsing...................................|netrw-cr| + <del>............Deleting Files or Directories..............|netrw-delete| + -................Going Up...................................|netrw--| + a................Hiding Files or Directories................|netrw-a| + mb...............Bookmarking a Directory....................|netrw-mb| + gb...............Changing to a Bookmarked Directory.........|netrw-gb| + c................Make Browsing Directory The Current Dir....|netrw-c| + d................Make A New Directory.......................|netrw-d| + D................Deleting Files or Directories..............|netrw-D| + <c-h>............Edit File/Directory Hiding List............|netrw-ctrl-h| + i................Change Listing Style.......................|netrw-i| + <c-l>............Refreshing the Listing.....................|netrw-ctrl-l| + o................Browsing with a Horizontal Split...........|netrw-o| + p................Use Preview Window.........................|netrw-p| + P................Edit in Previous Window....................|netrw-p| + q................Listing Bookmarks and History..............|netrw-q| + r................Reversing Sorting Order....................|netrw-r| +< (etc) + +The <F1> key thus brings you to a netrw directory browsing contents help page. +It's a regular help page; use the usual |CTRL-]| to jump to tagged help items +and |CTRL-O| to jump back. + +To select files for display and editing: (with the cursor is atop a filename) + + <enter> Open the file in the current window. |netrw-cr| + o Horizontally split window and display file |netrw-o| + v Vertically split window and display file |netrw-v| + p Use the |preview-window| |netrw-p| + P Edit in the previous window |netrw-P| + t Open file in a new tab |netrw-t| + +The following normal-mode commands may be used to control the browser display: + + i Controls listing style (thin, long, wide, and tree). + The long listing includes size and date information. + s Repeatedly pressing s will change the way the files + are sorted; one may sort on name, modification time, + or size. + r Reverse the sorting order. + +As a sampling of extra normal-mode commands: + + c Change Vim's notion of the current directory to be + the same as the browser directory. (see + |g:netrw_keepdir| to control this, too) + R Rename the file or directory under the cursor; a + prompt will be issued for the new name. + D Delete the file or directory under the cursor; a + confirmation request will be issued. + mb gb Make bookmark/goto bookmark + + +One may also use command mode; again, just a sampling: + + :Explore [directory] Browse specified/current directory + :NetrwSettings A comprehensive list of your current netrw + settings with help linkage. + +The netrw browser is not limited to just your local machine; one may use +urls such as: (that trailing / is important) + + :Explore ftp://somehost/path/to/dir/ + :e scp://somehost/path/to/dir/ + +See |netrw-browse| for more. + +============================================================================== +*22.2* The current directory + +Just like the shell, Vim has the concept of a current directory. Suppose you +are in your home directory and want to edit several files in a directory +"VeryLongFileName". You could do: > + + :edit VeryLongFileName/file1.txt + :edit VeryLongFileName/file2.txt + :edit VeryLongFileName/file3.txt + +To avoid much of the typing, do this: > + + :cd VeryLongFileName + :edit file1.txt + :edit file2.txt + :edit file3.txt + +The ":cd" command changes the current directory. You can see what the current +directory is with the ":pwd" command: > + + :pwd + /home/Bram/VeryLongFileName + +Vim remembers the last directory that you used. Use "cd -" to go back to it. +Example: > + + :pwd + /home/Bram/VeryLongFileName + :cd /etc + :pwd + /etc + :cd - + :pwd + /home/Bram/VeryLongFileName + :cd - + :pwd + /etc + + +WINDOW LOCAL DIRECTORY + +When you split a window, both windows use the same current directory. When +you want to edit a number of files somewhere else in the new window, you can +make it use a different directory, without changing the current directory in +the other window. This is called a local directory. > + + :pwd + /home/Bram/VeryLongFileName + :split + :lcd /etc + :pwd + /etc + CTRL-W w + :pwd + /home/Bram/VeryLongFileName + +So long as no ":lcd" command has been used, all windows share the same current +directory. Doing a ":cd" command in one window will also change the current +directory of the other window. + For a window where ":lcd" has been used a different current directory is +remembered. Using ":cd" or ":lcd" in other windows will not change it. + When using a ":cd" command in a window that uses a different current +directory, it will go back to using the shared directory. + +============================================================================== +*22.3* Finding a file + +You are editing a C program that contains this line: + + #include "inits.h" ~ + +You want to see what is in that "inits.h" file. Move the cursor on the name +of the file and type: > + + gf + +Vim will find the file and edit it. + What if the file is not in the current directory? Vim will use the 'path' +option to find the file. This option is a list of directory names where to +look for your file. + Suppose you have your include files located in "c:/prog/include". This +command will add it to the 'path' option: > + + :set path+=c:/prog/include + +This directory is an absolute path. No matter where you are, it will be the +same place. What if you have located files in a subdirectory, below where the +file is? Then you can specify a relative path name. This starts with a dot: +> + :set path+=./proto + +This tells Vim to look in the directory "proto", below the directory where the +file in which you use "gf" is. Thus using "gf" on "inits.h" will make Vim +look for "proto/inits.h", starting in the directory of the file. + Without the "./", thus "proto", Vim would look in the "proto" directory +below the current directory. And the current directory might not be where the +file that you are editing is located. + +The 'path' option allows specifying the directories where to search for files +in many more ways. See the help on the 'path' option. + The 'isfname' option is used to decide which characters are included in the +file name, and which ones are not (e.g., the " character in the example +above). + +When you know the file name, but it's not to be found in the file, you can +type it: > + + :find inits.h + +Vim will then use the 'path' option to try and locate the file. This is the +same as the ":edit" command, except for the use of 'path'. + +To open the found file in a new window use CTRL-W f instead of "gf", or use +":sfind" instead of ":find". + + +A nice way to directly start Vim to edit a file somewhere in the 'path': > + + vim "+find stdio.h" + +This finds the file "stdio.h" in your value of 'path'. The quotes are +necessary to have one argument |-+c|. + +============================================================================== +*22.4* The buffer list + +The Vim editor uses the term buffer to describe a file being edited. +Actually, a buffer is a copy of the file that you edit. When you finish +changing the buffer, you write the contents of the buffer to the file. +Buffers not only contain file contents, but also all the marks, settings, and +other stuff that goes with it. + + +HIDDEN BUFFERS + +Suppose you are editing the file one.txt and need to edit the file two.txt. +You could simply use ":edit two.txt", but since you made changes to one.txt +that won't work. You also don't want to write one.txt yet. Vim has a +solution for you: > + + :hide edit two.txt + +The buffer "one.txt" disappears from the screen, but Vim still knows that you +are editing this buffer, so it keeps the modified text. This is called a +hidden buffer: The buffer contains text, but you can't see it. + The argument of ":hide" is another command. ":hide" makes that command +behave as if the 'hidden' option was set. You could also set this option +yourself. The effect is that when any buffer is abandoned, it becomes hidden. + Be careful! When you have hidden buffers with changes, don't exit Vim +without making sure you have saved all the buffers. + + +INACTIVE BUFFERS + + When a buffer has been used once, Vim remembers some information about it. +When it is not displayed in a window and it is not hidden, it is still in the +buffer list. This is called an inactive buffer. Overview: + + Active Appears in a window, text loaded. + Hidden Not in a window, text loaded. + Inactive Not in a window, no text loaded. + +The inactive buffers are remembered, because Vim keeps information about them, +like marks. And remembering the file name is useful too, so that you can see +which files you have edited. And edit them again. + + +LISTING BUFFERS + +View the buffer list with this command: > + + :buffers + +A command which does the same, is not so obvious to list buffers, but is much +shorter to type: > + + :ls + +The output could look like this: + + 1 #h "help.txt" line 62 ~ + 2 %a + "usr_21.txt" line 1 ~ + 3 "usr_toc.txt" line 1 ~ + +The first column contains the buffer number. You can use this to edit the +buffer without having to type the name, see below. + After the buffer number come the flags. Then the name of the file +and the line number where the cursor was the last time. + The flags that can appear are these (from left to right): + + u Buffer is unlisted |unlisted-buffer|. + % Current buffer. + # Alternate buffer. + a Buffer is loaded and displayed. + h Buffer is loaded but hidden. + = Buffer is read-only. + - Buffer is not modifiable, the 'modifiable' option is off. + + Buffer has been modified. + + +EDITING A BUFFER + +You can edit a buffer by its number. That avoids having to type the file +name: > + + :buffer 2 + +But the only way to know the number is by looking in the buffer list. You can +use the name, or part of it, instead: > + + :buffer help + +Vim will find the best match for the name you type. If there is only one +buffer that matches the name, it will be used. In this case "help.txt". + To open a buffer in a new window: > + + :sbuffer 3 + +This works with a name as well. + + +USING THE BUFFER LIST + +You can move around in the buffer list with these commands: + + :bnext go to next buffer + :bprevious go to previous buffer + :bfirst go to the first buffer + :blast go to the last buffer + +To remove a buffer from the list, use this command: > + + :bdelete 3 + +Again, this also works with a name. + If you delete a buffer that was active (visible in a window), that window +will be closed. If you delete the current buffer, the current window will be +closed. If it was the last window, Vim will find another buffer to edit. You +can't be editing nothing! + + Note: + Even after removing the buffer with ":bdelete" Vim still remembers it. + It's actually made "unlisted", it no longer appears in the list from + ":buffers". The ":buffers!" command will list unlisted buffers (yes, + Vim can do the impossible). To really make Vim forget about a buffer, + use ":bwipe". Also see the 'buflisted' option. + +============================================================================== + +Next chapter: |usr_23.txt| Editing other files + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_23.txt b/share/vim/vim74/doc/usr_23.txt new file mode 100644 index 00000000..63cbc612 --- /dev/null +++ b/share/vim/vim74/doc/usr_23.txt @@ -0,0 +1,343 @@ +*usr_23.txt* For Vim version 7.4. Last change: 2006 Apr 24 + + VIM USER MANUAL - by Bram Moolenaar + + Editing other files + + +This chapter is about editing files that are not ordinary files. With Vim you +can edit files that are compressed or encrypted. Some files need to be +accessed over the internet. With some restrictions, binary files can be +edited as well. + +|23.1| DOS, Mac and Unix files +|23.2| Files on the internet +|23.3| Encryption +|23.4| Binary files +|23.5| Compressed files + + Next chapter: |usr_24.txt| Inserting quickly + Previous chapter: |usr_22.txt| Finding the file to edit +Table of contents: |usr_toc.txt| + +============================================================================== +*23.1* DOS, Mac and Unix files + +Back in the early days, the old Teletype machines used two characters to +start a new line. One to move the carriage back to the first position +(carriage return, <CR>), another to move the paper up (line feed, <LF>). + When computers came out, storage was expensive. Some people decided that +they did not need two characters for end-of-line. The UNIX people decided +they could use <Line Feed> only for end-of-line. The Apple people +standardized on <CR>. The MS-DOS (and Microsoft Windows) folks decided to +keep the old <CR><LF>. + This means that if you try to move a file from one system to another, you +have line-break problems. The Vim editor automatically recognizes the +different file formats and handles things properly behind your back. + The option 'fileformats' contains the various formats that will be tried +when a new file is edited. The following command, for example, tells Vim to +try UNIX format first and MS-DOS format second: > + + :set fileformats=unix,dos + +You will notice the format in the message you get when editing a file. You +don't see anything if you edit a native file format. Thus editing a Unix file +on Unix won't result in a remark. But when you edit a dos file, Vim will +notify you of this: + + "/tmp/test" [dos] 3L, 71C ~ + +For a Mac file you would see "[mac]". + The detected file format is stored in the 'fileformat' option. To see +which format you have, execute the following command: > + + :set fileformat? + +The three names that Vim uses are: + + unix <LF> + dos <CR><LF> + mac <CR> + + +USING THE MAC FORMAT + +On Unix, <LF> is used to break a line. It's not unusual to have a <CR> +character halfway a line. Incidentally, this happens quite often in Vi (and +Vim) scripts. + On the Macintosh, where <CR> is the line break character, it's possible to +have a <LF> character halfway a line. + The result is that it's not possible to be 100% sure whether a file +containing both <CR> and <LF> characters is a Mac or a Unix file. Therefore, +Vim assumes that on Unix you probably won't edit a Mac file, and doesn't check +for this type of file. To check for this format anyway, add "mac" to +'fileformats': > + + :set fileformats+=mac + +Then Vim will take a guess at the file format. Watch out for situations where +Vim guesses wrong. + + +OVERRULING THE FORMAT + +If you use the good old Vi and try to edit an MS-DOS format file, you will +find that each line ends with a ^M character. (^M is <CR>). The automatic +detection avoids this. Suppose you do want to edit the file that way? Then +you need to overrule the format: > + + :edit ++ff=unix file.txt + +The "++" string is an item that tells Vim that an option name follows, which +overrules the default for this single command. "++ff" is used for +'fileformat'. You could also use "++ff=mac" or "++ff=dos". + This doesn't work for any option, only "++ff" and "++enc" are currently +implemented. The full names "++fileformat" and "++encoding" also work. + + +CONVERSION + +You can use the 'fileformat' option to convert from one file format to +another. Suppose, for example, that you have an MS-DOS file named README.TXT +that you want to convert to UNIX format. Start by editing the MS-DOS format +file: > + vim README.TXT + +Vim will recognize this as a dos format file. Now change the file format to +UNIX: > + + :set fileformat=unix + :write + +The file is written in Unix format. + +============================================================================== +*23.2* Files on the internet + +Someone sends you an e-mail message, which refers to a file by its URL. For +example: + + You can find the information here: ~ + ftp://ftp.vim.org/pub/vim/README ~ + +You could start a program to download the file, save it on your local disk and +then start Vim to edit it. + There is a much simpler way. Move the cursor to any character of the URL. +Then use this command: > + + gf + +With a bit of luck, Vim will figure out which program to use for downloading +the file, download it and edit the copy. To open the file in a new window use +CTRL-W f. + If something goes wrong you will get an error message. It's possible that +the URL is wrong, you don't have permission to read it, the network connection +is down, etc. Unfortunately, it's hard to tell the cause of the error. You +might want to try the manual way of downloading the file. + +Accessing files over the internet works with the netrw plugin. Currently URLs +with these formats are recognized: + + ftp:// uses ftp + rcp:// uses rcp + scp:// uses scp + http:// uses wget (reading only) + +Vim doesn't do the communication itself, it relies on the mentioned programs +to be available on your computer. On most Unix systems "ftp" and "rcp" will +be present. "scp" and "wget" might need to be installed. + +Vim detects these URLs for each command that starts editing a new file, also +with ":edit" and ":split", for example. Write commands also work, except for +http://. + +For more information, also about passwords, see |netrw|. + +============================================================================== +*23.3* Encryption + +Some information you prefer to keep to yourself. For example, when writing +a test on a computer that students also use. You don't want clever students +to figure out a way to read the questions before the exam starts. Vim can +encrypt the file for you, which gives you some protection. + To start editing a new file with encryption, use the "-x" argument to start +Vim. Example: > + + vim -x exam.txt + +Vim prompts you for a key used for encrypting and decrypting the file: + + Enter encryption key: ~ + +Carefully type the secret key now. You cannot see the characters you type, +they will be replaced by stars. To avoid the situation that a typing mistake +will cause trouble, Vim asks you to enter the key again: + + Enter same key again: ~ + +You can now edit this file normally and put in all your secrets. When you +finish editing the file and tell Vim to exit, the file is encrypted and +written. + When you edit the file with Vim, it will ask you to enter the same key +again. You don't need to use the "-x" argument. You can also use the normal +":edit" command. Vim adds a magic string to the file by which it recognizes +that the file was encrypted. + If you try to view this file using another program, all you get is garbage. +Also, if you edit the file with Vim and enter the wrong key, you get garbage. +Vim does not have a mechanism to check if the key is the right one (this makes +it much harder to break the key). + + +SWITCHING ENCRYPTION ON AND OFF + +To disable the encryption of a file, set the 'key' option to an empty string: +> + :set key= + +The next time you write the file this will be done without encryption. + Setting the 'key' option to enable encryption is not a good idea, because +the password appears in the clear. Anyone shoulder-surfing can read your +password. + To avoid this problem, the ":X" command was created. It asks you for an +encryption key, just like the "-x" argument did: > + + :X + Enter encryption key: ****** + Enter same key again: ****** + + +LIMITS ON ENCRYPTION + +The encryption algorithm used by Vim is weak. It is good enough to keep out +the casual prowler, but not good enough to keep out a cryptology expert with +lots of time on his hands. Also you should be aware that the swap file is not +encrypted; so while you are editing, people with superuser privileges can read +the unencrypted text from this file. + One way to avoid letting people read your swap file is to avoid using one. +If the -n argument is supplied on the command line, no swap file is used +(instead, Vim puts everything in memory). For example, to edit the encrypted +file "file.txt" without a swap file use the following command: > + + vim -x -n file.txt + +When already editing a file, the swapfile can be disabled with: > + + :setlocal noswapfile + +Since there is no swapfile, recovery will be impossible. Save the file a bit +more often to avoid the risk of losing your changes. + +While the file is in memory, it is in plain text. Anyone with privilege can +look in the editor's memory and discover the contents of the file. + If you use a viminfo file, be aware that the contents of text registers are +written out in the clear as well. + If you really want to secure the contents of a file, edit it only on a +portable computer not connected to a network, use good encryption tools, and +keep the computer locked up in a big safe when not in use. + +============================================================================== +*23.4* Binary files + +You can edit binary files with Vim. Vim wasn't really made for this, thus +there are a few restrictions. But you can read a file, change a character and +write it back, with the result that only that one character was changed and +the file is identical otherwise. + To make sure that Vim does not use its clever tricks in the wrong way, add +the "-b" argument when starting Vim: > + + vim -b datafile + +This sets the 'binary' option. The effect of this is that unexpected side +effects are turned off. For example, 'textwidth' is set to zero, to avoid +automatic formatting of lines. And files are always read in Unix file format. + +Binary mode can be used to change a message in a program. Be careful not to +insert or delete any characters, it would stop the program from working. Use +"R" to enter replace mode. + +Many characters in the file will be unprintable. To see them in Hex format: > + + :set display=uhex + +Otherwise, the "ga" command can be used to see the value of the character +under the cursor. The output, when the cursor is on an <Esc>, looks like +this: + + <^[> 27, Hex 1b, Octal 033 ~ + +There might not be many line breaks in the file. To get some overview switch +the 'wrap' option off: > + + :set nowrap + + +BYTE POSITION + +To see on which byte you are in the file use this command: > + + g CTRL-G + +The output is verbose: + + Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 ~ + +The last two numbers are the byte position in the file and the total number of +bytes. This takes into account how 'fileformat' changes the number of bytes +that a line break uses. + To move to a specific byte in the file, use the "go" command. For +example, to move to byte 2345: > + + 2345go + + +USING XXD + +A real binary editor shows the text in two ways: as it is and in hex format. +You can do this in Vim by first converting the file with the "xxd" program. +This comes with Vim. + First edit the file in binary mode: > + + vim -b datafile + +Now convert the file to a hex dump with xxd: > + + :%!xxd + +The text will look like this: + + 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ + 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ + 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ + +You can now view and edit the text as you like. Vim treats the information as +ordinary text. Changing the hex does not cause the printable character to be +changed, or the other way around. + Finally convert it back with: +> + :%!xxd -r + +Only changes in the hex part are used. Changes in the printable text part on +the right are ignored. + +See the manual page of xxd for more information. + +============================================================================== +*23.5* Compressed files + +This is easy: You can edit a compressed file just like any other file. The +"gzip" plugin takes care of decompressing the file when you edit it. And +compressing it again when you write it. + These compression methods are currently supported: + + .Z compress + .gz gzip + .bz2 bzip2 + +Vim uses the mentioned programs to do the actual compression and +decompression. You might need to install the programs first. + +============================================================================== + +Next chapter: |usr_24.txt| Inserting quickly + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_24.txt b/share/vim/vim74/doc/usr_24.txt new file mode 100644 index 00000000..46a22c68 --- /dev/null +++ b/share/vim/vim74/doc/usr_24.txt @@ -0,0 +1,606 @@ +*usr_24.txt* For Vim version 7.4. Last change: 2006 Jul 23 + + VIM USER MANUAL - by Bram Moolenaar + + Inserting quickly + + +When entering text, Vim offers various ways to reduce the number of keystrokes +and avoid typing mistakes. Use Insert mode completion to repeat previously +typed words. Abbreviate long words to short ones. Type characters that +aren't on your keyboard. + +|24.1| Making corrections +|24.2| Showing matches +|24.3| Completion +|24.4| Repeating an insert +|24.5| Copying from another line +|24.6| Inserting a register +|24.7| Abbreviations +|24.8| Entering special characters +|24.9| Digraphs +|24.10| Normal mode commands + + Next chapter: |usr_25.txt| Editing formatted text + Previous chapter: |usr_23.txt| Editing other files +Table of contents: |usr_toc.txt| + +============================================================================== +*24.1* Making corrections + +The <BS> key was already mentioned. It deletes the character just before the +cursor. The <Del> key does the same for the character under (after) the +cursor. + When you typed a whole word wrong, use CTRL-W: + + The horse had fallen to the sky ~ + CTRL-W + The horse had fallen to the ~ + +If you really messed up a line and want to start over, use CTRL-U to delete +it. This keeps the text after the cursor and the indent. Only the text from +the first non-blank to the cursor is deleted. With the cursor on the "f" of +"fallen" in the next line pressing CTRL-U does this: + + The horse had fallen to the ~ + CTRL-U + fallen to the ~ + +When you spot a mistake a few words back, you need to move the cursor there to +correct it. For example, you typed this: + + The horse had follen to the ground ~ + +You need to change "follen" to "fallen". With the cursor at the end, you +would type this to correct it: > + + <Esc>4blraA + +< get out of Insert mode <Esc> + four words back 4b + move on top of the "o" l + replace with "a" ra + restart Insert mode A + +Another way to do this: > + + <C-Left><C-Left><C-Left><C-Left><Right><Del>a<End> + +< four words back <C-Left><C-Left><C-Left><C-Left> + move on top of the "o" <Right> + delete the "o" <Del> + insert an "a" a + go to end of the line <End> + +This uses special keys to move around, while remaining in Insert mode. This +resembles what you would do in a modeless editor. It's easier to remember, +but takes more time (you have to move your hand from the letters to the cursor +keys, and the <End> key is hard to press without looking at the keyboard). + These special keys are most useful when writing a mapping that doesn't +leave Insert mode. The extra typing doesn't matter then. + An overview of the keys you can use in Insert mode: + + <C-Home> to start of the file + <PageUp> a whole screenful up + <Home> to start of line + <S-Left> one word left + <C-Left> one word left + <S-Right> one word right + <C-Right> one word right + <End> to end of the line + <PageDown> a whole screenful down + <C-End> to end of the file + +There are a few more, see |ins-special-special|. + +============================================================================== +*24.2* Showing matches + +When you type a ) it would be nice to see with which ( it matches. To make +Vim do that use this command: > + + :set showmatch + +When you now type a text like "(example)", as soon as you type the ) Vim will +briefly move the cursor to the matching (, keep it there for half a second, +and move back to where you were typing. + In case there is no matching (, Vim will beep. Then you know that you +might have forgotten the ( somewhere, or typed a ) too many. + The match will also be shown for [] and {} pairs. You don't have to wait +with typing the next character, as soon as Vim sees it the cursor will move +back and inserting continues as before. + You can change the time Vim waits with the 'matchtime' option. For +example, to make Vim wait one and a half second: > + + :set matchtime=15 + +The time is specified in tenths of a second. + +============================================================================== +*24.3* Completion + +Vim can automatically complete words on insertion. You type the first part of +a word, press CTRL-P, and Vim guesses the rest. + Suppose, for example, that you are creating a C program and want to type in +the following: + + total = ch_array[0] + ch_array[1] + ch_array[2]; ~ + +You start by entering the following: + + total = ch_array[0] + ch_ ~ + +At this point, you tell Vim to complete the word using the command CTRL-P. +Vim searches for a word that starts with what's in front of the cursor. In +this case, it is "ch_", which matches with the word ch_array. So typing +CTRL-P gives you the following: + + total = ch_array[0] + ch_array ~ + +After a little more typing, you get this (ending in a space): + + total = ch_array[0] + ch_array[1] + ~ + +If you now type CTRL-P Vim will search again for a word that completes the +word before the cursor. Since there is nothing in front of the cursor, it +finds the first word backwards, which is "ch_array". Typing CTRL-P again +gives you the next word that matches, in this case "total". A third CTRL-P +searches further back. If there is nothing else, it causes the editor to run +out of words, so it returns to the original text, which is nothing. A fourth +CTRL-P causes the editor to start over again with "ch_array". + +To search forward, use CTRL-N. Since the search wraps around the end of the +file, CTRL-N and CTRL-P will find the same matches, but in a different +sequence. Hint: CTRL-N is Next-match and CTRL-P is Previous-match. + +The Vim editor goes through a lot of effort to find words to complete. By +default, it searches the following places: + + 1. Current file + 2. Files in other windows + 3. Other loaded files (hidden buffers) + 4. Files which are not loaded (inactive buffers) + 5. Tag files + 6. All files #included by the current file + + +OPTIONS + +You can customize the search order with the 'complete' option. + +The 'ignorecase' option is used. When it is set, case differences are ignored +when searching for matches. + +A special option for completion is 'infercase'. This is useful to find +matches while ignoring case ('ignorecase' must be set) but still using the +case of the word typed so far. Thus if you type "For" and Vim finds a match +"fortunately", it will result in "Fortunately". + + +COMPLETING SPECIFIC ITEMS + +If you know what you are looking for, you can use these commands to complete +with a certain type of item: + + CTRL-X CTRL-F file names + CTRL-X CTRL-L whole lines + CTRL-X CTRL-D macro definitions (also in included files) + CTRL-X CTRL-I current and included files + CTRL-X CTRL-K words from a dictionary + CTRL-X CTRL-T words from a thesaurus + CTRL-X CTRL-] tags + CTRL-X CTRL-V Vim command line + +After each of them CTRL-N can be used to find the next match, CTRL-P to find +the previous match. + More information for each of these commands here: |ins-completion|. + + +COMPLETING FILE NAMES + +Let's take CTRL-X CTRL-F as an example. This will find file names. It scans +the current directory for files and displays each one that matches the word in +front of the cursor. + Suppose, for example, that you have the following files in the current +directory: + + main.c sub_count.c sub_done.c sub_exit.c + +Now enter Insert mode and start typing: + + The exit code is in the file sub ~ + +At this point, you enter the command CTRL-X CTRL-F. Vim now completes the +current word "sub" by looking at the files in the current directory. The +first match is sub_count.c. This is not the one you want, so you match the +next file by typing CTRL-N. This match is sub_done.c. Typing CTRL-N again +takes you to sub_exit.c. The results: + + The exit code is in the file sub_exit.c ~ + +If the file name starts with / (Unix) or C:\ (MS-Windows) you can find all +files in the file system. For example, type "/u" and CTRL-X CTRL-F. This +will match "/usr" (this is on Unix): + + the file is found in /usr/ ~ + +If you now press CTRL-N you go back to "/u". Instead, to accept the "/usr/" +and go one directory level deeper, use CTRL-X CTRL-F again: + + the file is found in /usr/X11R6/ ~ + +The results depend on what is found in your file system, of course. The +matches are sorted alphabetically. + + +COMPLETING IN SOURCE CODE + +Source code files are well structured. That makes it possible to do +completion in an intelligent way. In Vim this is called Omni completion. In +some other editors it's called intellisense, but that is a trademark. + +The key to Omni completion is CTRL-X CTRL-O. Obviously the O stands for Omni +here, so that you can remember it easier. Let's use an example for editing C +source: + + { ~ + struct foo *p; ~ + p-> ~ + +The cursor is after "p->". Now type CTRL-X CTRL-O. Vim will offer you a list +of alternatives, which are the items that "struct foo" contains. That is +quite different from using CTRL-P, which would complete any word, while only +members of "struct foo" are valid here. + +For Omni completion to work you may need to do some setup. At least make sure +filetype plugins are enabled. Your vimrc file should contain a line like +this: > + filetype plugin on +Or: > + filetype plugin indent on + +For C code you need to create a tags file and set the 'tags' option. That is +explained |ft-c-omni|. For other filetypes you may need to do something +similar, look below |compl-omni-filetypes|. It only works for specific +filetypes. Check the value of the 'omnifunc' option to find out if it would +work. + +============================================================================== +*24.4* Repeating an insert + +If you press CTRL-A, the editor inserts the text you typed the last time you +were in Insert mode. + Assume, for example, that you have a file that begins with the following: + + "file.h" ~ + /* Main program begins */ ~ + +You edit this file by inserting "#include " at the beginning of the first +line: + + #include "file.h" ~ + /* Main program begins */ ~ + +You go down to the beginning of the next line using the commands "j^". You +now start to insert a new "#include" line. So you type: > + + i CTRL-A + +The result is as follows: + + #include "file.h" ~ + #include /* Main program begins */ ~ + +The "#include " was inserted because CTRL-A inserts the text of the previous +insert. Now you type "main.h"<Enter> to finish the line: + + + #include "file.h" ~ + #include "main.h" ~ + /* Main program begins */ ~ + +The CTRL-@ command does a CTRL-A and then exits Insert mode. That's a quick +way of doing exactly the same insertion again. + +============================================================================== +*24.5* Copying from another line + +The CTRL-Y command inserts the character above the cursor. This is useful +when you are duplicating a previous line. For example, you have this line of +C code: + + b_array[i]->s_next = a_array[i]->s_next; ~ + +Now you need to type the same line, but with "s_prev" instead of "s_next". +Start the new line, and press CTRL-Y 14 times, until you are at the "n" of +"next": + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_ ~ + +Now you type "prev": + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_prev ~ + +Continue pressing CTRL-Y until the following "next": + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_prev = a_array[i]->s_ ~ + +Now type "prev;" to finish it off. + +The CTRL-E command acts like CTRL-Y except it inserts the character below the +cursor. + +============================================================================== +*24.6* Inserting a register + +The command CTRL-R {register} inserts the contents of the register. This is +useful to avoid having to type a long word. For example, you need to type +this: + + r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c) ~ + +The function name is defined in a different file. Edit that file and move the +cursor on top of the function name there, and yank it into register v: > + + "vyiw + +"v is the register specification, "yiw" is yank-inner-word. Now edit the file +where the new line is to be inserted, and type the first letters: + + r = ~ + +Now use CTRL-R v to insert the function name: + + r = VeryLongFunction ~ + +You continue to type the characters in between the function name, and use +CTRL-R v two times more. + You could have done the same with completion. Using a register is useful +when there are many words that start with the same characters. + +If the register contains characters such as <BS> or other special characters, +they are interpreted as if they had been typed from the keyboard. If you do +not want this to happen (you really want the <BS> to be inserted in the text), +use the command CTRL-R CTRL-R {register}. + +============================================================================== +*24.7* Abbreviations + +An abbreviation is a short word that takes the place of a long one. For +example, "ad" stands for "advertisement". Vim enables you to type an +abbreviation and then will automatically expand it for you. + To tell Vim to expand "ad" into "advertisement" every time you insert it, +use the following command: > + + :iabbrev ad advertisement + +Now, when you type "ad", the whole word "advertisement" will be inserted into +the text. This is triggered by typing a character that can't be part of a +word, for example a space: + + What Is Entered What You See + I saw the a I saw the a ~ + I saw the ad I saw the ad ~ + I saw the ad<Space> I saw the advertisement<Space> ~ + +The expansion doesn't happen when typing just "ad". That allows you to type a +word like "add", which will not get expanded. Only whole words are checked +for abbreviations. + + +ABBREVIATING SEVERAL WORDS + +It is possible to define an abbreviation that results in multiple words. For +example, to define "JB" as "Jack Benny", use the following command: > + + :iabbrev JB Jack Benny + +As a programmer, I use two rather unusual abbreviations: > + + :iabbrev #b /**************************************** + :iabbrev #e <Space>****************************************/ + +These are used for creating boxed comments. The comment starts with #b, which +draws the top line. I then type the comment text and use #e to draw the +bottom line. + Notice that the #e abbreviation begins with a space. In other words, the +first two characters are space-star. Usually Vim ignores spaces between the +abbreviation and the expansion. To avoid that problem, I spell space as seven +characters: <, S, p, a, c, e, >. + + Note: + ":iabbrev" is a long word to type. ":iab" works just as well. + That's abbreviating the abbreviate command! + + +FIXING TYPING MISTAKES + +It's very common to make the same typing mistake every time. For example, +typing "teh" instead of "the". You can fix this with an abbreviation: > + + :abbreviate teh the + +You can add a whole list of these. Add one each time you discover a common +mistake. + + +LISTING ABBREVIATIONS + +The ":abbreviate" command lists the abbreviations: + + :abbreviate + i #e ****************************************/ + i #b /**************************************** + i JB Jack Benny + i ad advertisement + ! teh the + +The "i" in the first column indicates Insert mode. These abbreviations are +only active in Insert mode. Other possible characters are: + + c Command-line mode :cabbrev + ! both Insert and Command-line mode :abbreviate + +Since abbreviations are not often useful in Command-line mode, you will mostly +use the ":iabbrev" command. That avoids, for example, that "ad" gets expanded +when typing a command like: > + + :edit ad + + +DELETING ABBREVIATIONS + +To get rid of an abbreviation, use the ":unabbreviate" command. Suppose you +have the following abbreviation: > + + :abbreviate @f fresh + +You can remove it with this command: > + + :unabbreviate @f + +While you type this, you will notice that @f is expanded to "fresh". Don't +worry about this, Vim understands it anyway (except when you have an +abbreviation for "fresh", but that's very unlikely). + To remove all the abbreviations: > + + :abclear + +":unabbreviate" and ":abclear" also come in the variants for Insert mode +(":iunabbreviate and ":iabclear") and Command-line mode (":cunabbreviate" and +":cabclear"). + + +REMAPPING ABBREVIATIONS + +There is one thing to watch out for when defining an abbreviation: The +resulting string should not be mapped. For example: > + + :abbreviate @a adder + :imap dd disk-door + +When you now type @a, you will get "adisk-doorer". That's not what you want. +To avoid this, use the ":noreabbrev" command. It does the same as +":abbreviate", but avoids that the resulting string is used for mappings: > + + :noreabbrev @a adder + +Fortunately, it's unlikely that the result of an abbreviation is mapped. + +============================================================================== +*24.8* Entering special characters + +The CTRL-V command is used to insert the next character literally. In other +words, any special meaning the character has, it will be ignored. For +example: > + + CTRL-V <Esc> + +Inserts an escape character. Thus you don't leave Insert mode. (Don't type +the space after CTRL-V, it's only to make this easier to read). + + Note: + On MS-Windows CTRL-V is used to paste text. Use CTRL-Q instead of + CTRL-V. On Unix, on the other hand, CTRL-Q does not work on some + terminals, because it has a special meaning. + +You can also use the command CTRL-V {digits} to insert a character with the +decimal number {digits}. For example, the character number 127 is the <Del> +character (but not necessarily the <Del> key!). To insert <Del> type: > + + CTRL-V 127 + +You can enter characters up to 255 this way. When you type fewer than two +digits, a non-digit will terminate the command. To avoid the need of typing a +non-digit, prepend one or two zeros to make three digits. + All the next commands insert a <Tab> and then a dot: + + CTRL-V 9. + CTRL-V 09. + CTRL-V 009. + +To enter a character in hexadecimal, use an "x" after the CTRL-V: > + + CTRL-V x7f + +This also goes up to character 255 (CTRL-V xff). You can use "o" to type a +character as an octal number and two more methods allow you to type up to +a 16 bit and a 32 bit number (e.g., for a Unicode character): > + + CTRL-V o123 + CTRL-V u1234 + CTRL-V U12345678 + +============================================================================== +*24.9* Digraphs + +Some characters are not on the keyboard. For example, the copyright character +(©). To type these characters in Vim, you use digraphs, where two characters +represent one. To enter a ©, for example, you press three keys: > + + CTRL-K Co + +To find out what digraphs are available, use the following command: > + + :digraphs + +Vim will display the digraph table. Here are three lines of it: + + AC ~_ 159 NS | 160 !I ¡ 161 Ct ¢ 162 Pd £ 163 Cu ¤ 164 Ye ¥ 165 ~ + BB ¦ 166 SE § 167 ': ¨ 168 Co © 169 -a ª 170 << « 171 NO ¬ 172 ~ + -- ­ 173 Rg ® 174 'm ¯ 175 DG ° 176 +- ± 177 2S ² 178 3S ³ 179 ~ + +This shows, for example, that the digraph you get by typing CTRL-K Pd is the +character (£). This is character number 163 (decimal). + Pd is short for Pound. Most digraphs are selected to give you a hint about +the character they will produce. If you look through the list you will +understand the logic. + You can exchange the first and second character, if there is no digraph for +that combination. Thus CTRL-K dP also works. Since there is no digraph for +"dP" Vim will also search for a "Pd" digraph. + + Note: + The digraphs depend on the character set that Vim assumes you are + using. On MS-DOS they are different from MS-Windows. Always use + ":digraphs" to find out which digraphs are currently available. + +You can define your own digraphs. Example: > + + :digraph a" ä + +This defines that CTRL-K a" inserts an ä character. You can also specify the +character with a decimal number. This defines the same digraph: > + + :digraph a" 228 + +More information about digraphs here: |digraphs| + Another way to insert special characters is with a keymap. More about that +here: |45.5| + +============================================================================== +*24.10* Normal mode commands + +Insert mode offers a limited number of commands. In Normal mode you have many +more. When you want to use one, you usually leave Insert mode with <Esc>, +execute the Normal mode command, and re-enter Insert mode with "i" or "a". + There is a quicker way. With CTRL-O {command} you can execute any Normal +mode command from Insert mode. For example, to delete from the cursor to the +end of the line: > + + CTRL-O D + +You can execute only one Normal mode command this way. But you can specify a +register or a count. A more complicated example: > + + CTRL-O "g3dw + +This deletes up to the third word into register g. + +============================================================================== + +Next chapter: |usr_25.txt| Editing formatted text + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_25.txt b/share/vim/vim74/doc/usr_25.txt new file mode 100644 index 00000000..01f21a18 --- /dev/null +++ b/share/vim/vim74/doc/usr_25.txt @@ -0,0 +1,578 @@ +*usr_25.txt* For Vim version 7.4. Last change: 2007 May 11 + + VIM USER MANUAL - by Bram Moolenaar + + Editing formatted text + + +Text hardly ever comes in one sentence per line. This chapter is about +breaking sentences to make them fit on a page and other formatting. +Vim also has useful features for editing single-line paragraphs and tables. + +|25.1| Breaking lines +|25.2| Aligning text +|25.3| Indents and tabs +|25.4| Dealing with long lines +|25.5| Editing tables + + Next chapter: |usr_26.txt| Repeating + Previous chapter: |usr_24.txt| Inserting quickly +Table of contents: |usr_toc.txt| + +============================================================================== +*25.1* Breaking lines + +Vim has a number of functions that make dealing with text easier. By default, +the editor does not perform automatic line breaks. In other words, you have +to press <Enter> yourself. This is useful when you are writing programs where +you want to decide where the line ends. It is not so good when you are +creating documentation and want the text to be at most 70 character wide. + If you set the 'textwidth' option, Vim automatically inserts line breaks. +Suppose, for example, that you want a very narrow column of only 30 +characters. You need to execute the following command: > + + :set textwidth=30 + +Now you start typing (ruler added): + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a whi ~ + +If you type "l" next, this makes the line longer than the 30-character limit. +When Vim sees this, it inserts a line break and you get the following: + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a ~ + whil ~ + +Continuing on, you can type in the rest of the paragraph: + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a ~ + while. One time, I was stopped ~ + by the Fort Worth police, ~ + because my homework was too ~ + hard. True story. ~ + +You do not have to type newlines; Vim puts them in automatically. + + Note: + The 'wrap' option makes Vim display lines with a line break, but this + doesn't insert a line break in the file. + + +REFORMATTING + +The Vim editor is not a word processor. In a word processor, if you delete +something at the beginning of the paragraph, the line breaks are reworked. In +Vim they are not; so if you delete the word "programming" from the first line, +all you get is a short line: + + 1 2 3 + 12345678901234567890123456789012345 + I taught for a ~ + while. One time, I was stopped ~ + by the Fort Worth police, ~ + because my homework was too ~ + hard. True story. ~ + +This does not look good. To get the paragraph into shape you use the "gq" +operator. + Let's first use this with a Visual selection. Starting from the first +line, type: > + + v4jgq + +"v" to start Visual mode, "4j' to move to the end of the paragraph and then +the "gq" operator. The result is: + + 1 2 3 + 12345678901234567890123456789012345 + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + +Note: there is a way to do automatic formatting for specific types of text +layouts, see |auto-format|. + +Since "gq" is an operator, you can use one of the three ways to select the +text it works on: With Visual mode, with a movement and with a text object. + The example above could also be done with "gq4j". That's less typing, but +you have to know the line count. A more useful motion command is "}". This +moves to the end of a paragraph. Thus "gq}" formats from the cursor to the +end of the current paragraph. + A very useful text object to use with "gq" is the paragraph. Try this: > + + gqap + +"ap" stands for "a-paragraph". This formats the text of one paragraph +(separated by empty lines). Also the part before the cursor. + If you have your paragraphs separated by empty lines, you can format the +whole file by typing this: > + + gggqG + +"gg" to move to the first line, "gqG" to format until the last line. + Warning: If your paragraphs are not properly separated, they will be joined +together. A common mistake is to have a line with a space or tab. That's a +blank line, but not an empty line. + +Vim is able to format more than just plain text. See |fo-table| for how to +change this. See the 'joinspaces' option to change the number of spaces used +after a full stop. + It is possible to use an external program for formatting. This is useful +if your text can't be properly formatted with Vim's builtin command. See the +'formatprg' option. + +============================================================================== +*25.2* Aligning text + +To center a range of lines, use the following command: > + + :{range}center [width] + +{range} is the usual command-line range. [width] is an optional line width to +use for centering. If [width] is not specified, it defaults to the value of +'textwidth'. (If 'textwidth' is 0, the default is 80.) + For example: > + + :1,5center 40 + +results in the following: + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + + +RIGHT ALIGNMENT + +Similarly, the ":right" command right-justifies the text: > + + :1,5right 37 + +gives this result: + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + +LEFT ALIGNMENT + +Finally there is this command: > + + :{range}left [margin] + +Unlike ":center" and ":right", however, the argument to ":left" is not the +length of the line. Instead it is the left margin. If it is omitted, the +text will be put against the left side of the screen (using a zero margin +would do the same). If it is 5, the text will be indented 5 spaces. For +example, use these commands: > + + :1left 5 + :2,5left + +This results in the following: + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + + +JUSTIFYING TEXT + +Vim has no built-in way of justifying text. However, there is a neat macro +package that does the job. To use this package, execute the following +command: > + + :runtime macros/justify.vim + +This Vim script file defines a new visual command "_j". To justify a block of +text, highlight the text in Visual mode and then execute "_j". + Look in the file for more explanations. To go there, do "gf" on this name: +$VIMRUNTIME/macros/justify.vim. + +An alternative is to filter the text through an external program. Example: > + + :%!fmt + +============================================================================== +*25.3* Indents and tabs + +Indents can be used to make text stand out from the rest. The example texts +in this manual, for example, are indented by eight spaces or a tab. You would +normally enter this by typing a tab at the start of each line. Take this +text: + the first line ~ + the second line ~ + +This is entered by typing a tab, some text, <Enter>, tab and more text. + The 'autoindent' option inserts indents automatically: > + + :set autoindent + +When a new line is started it gets the same indent as the previous line. In +the above example, the tab after the <Enter> is not needed anymore. + + +INCREASING INDENT + +To increase the amount of indent in a line, use the ">" operator. Often this +is used as ">>", which adds indent to the current line. + The amount of indent added is specified with the 'shiftwidth' option. The +default value is 8. To make ">>" insert four spaces worth of indent, for +example, type this: > + + :set shiftwidth=4 + +When used on the second line of the example text, this is what you get: + + the first line ~ + the second line ~ + +"4>>" will increase the indent of four lines. + + +TABSTOP + +If you want to make indents a multiple of 4, you set 'shiftwidth' to 4. But +when pressing a <Tab> you still get 8 spaces worth of indent. To change this, +set the 'softtabstop' option: > + + :set softtabstop=4 + +This will make the <Tab> key insert 4 spaces worth of indent. If there are +already four spaces, a <Tab> character is used (saving seven characters in the +file). (If you always want spaces and no tab characters, set the 'expandtab' +option.) + + Note: + You could set the 'tabstop' option to 4. However, if you edit the + file another time, with 'tabstop' set to the default value of 8, it + will look wrong. In other programs and when printing the indent will + also be wrong. Therefore it is recommended to keep 'tabstop' at eight + all the time. That's the standard value everywhere. + + +CHANGING TABS + +You edit a file which was written with a tabstop of 3. In Vim it looks ugly, +because it uses the normal tabstop value of 8. You can fix this by setting +'tabstop' to 3. But you have to do this every time you edit this file. + Vim can change the use of tabstops in your file. First, set 'tabstop' to +make the indents look good, then use the ":retab" command: > + + :set tabstop=3 + :retab 8 + +The ":retab" command will change 'tabstop' to 8, while changing the text such +that it looks the same. It changes spans of white space into tabs and spaces +for this. You can now write the file. Next time you edit it the indents will +be right without setting an option. + Warning: When using ":retab" on a program, it may change white space inside +a string constant. Therefore it's a good habit to use "\t" instead of a +real tab. + +============================================================================== +*25.4* Dealing with long lines + +Sometimes you will be editing a file that is wider than the number of columns +in the window. When that occurs, Vim wraps the lines so that everything fits +on the screen. + If you switch the 'wrap' option off, each line in the file shows up as one +line on the screen. Then the ends of the long lines disappear off the screen +to the right. + When you move the cursor to a character that can't be seen, Vim will scroll +the text to show it. This is like moving a viewport over the text in the +horizontal direction. + By default, Vim does not display a horizontal scrollbar in the GUI. If you +want to enable one, use the following command: > + + :set guioptions+=b + +One horizontal scrollbar will appear at the bottom of the Vim window. + +If you don't have a scrollbar or don't want to use it, use these commands to +scroll the text. The cursor will stay in the same place, but it's moved back +into the visible text if necessary. + + zh scroll right + 4zh scroll four characters right + zH scroll half a window width right + ze scroll right to put the cursor at the end + zl scroll left + 4zl scroll four characters left + zL scroll half a window width left + zs scroll left to put the cursor at the start + +Let's attempt to show this with one line of text. The cursor is on the "w" of +"which". The "current window" above the line indicates the text that is +currently visible. The "window"s below the text indicate the text that is +visible after the command left of it. + + |<-- current window -->| + some long text, part of which is visible in the window ~ + ze |<-- window -->| + zH |<-- window -->| + 4zh |<-- window -->| + zh |<-- window -->| + zl |<-- window -->| + 4zl |<-- window -->| + zL |<-- window -->| + zs |<-- window -->| + + +MOVING WITH WRAP OFF + +When 'wrap' is off and the text has scrolled horizontally, you can use the +following commands to move the cursor to a character you can see. Thus text +left and right of the window is ignored. These never cause the text to +scroll: + + g0 to first visible character in this line + g^ to first non-blank visible character in this line + gm to middle of this line + g$ to last visible character in this line + + |<-- window -->| + some long text, part of which is visible ~ + g0 g^ gm g$ + + +BREAKING AT WORDS *edit-no-break* + +When preparing text for use by another program, you might have to make +paragraphs without a line break. A disadvantage of using 'nowrap' is that you +can't see the whole sentence you are working on. When 'wrap' is on, words are +broken halfway, which makes them hard to read. + A good solution for editing this kind of paragraph is setting the +'linebreak' option. Vim then breaks lines at an appropriate place when +displaying the line. The text in the file remains unchanged. + Without 'linebreak' text might look like this: + + +---------------------------------+ + |letter generation program for a b| + |ank. They wanted to send out a s| + |pecial, personalized letter to th| + |eir richest 1000 customers. Unfo| + |rtunately for the programmer, he | + +---------------------------------+ +After: > + + :set linebreak + +it looks like this: + + +---------------------------------+ + |letter generation program for a | + |bank. They wanted to send out a | + |special, personalized letter to | + |their richest 1000 customers. | + |Unfortunately for the programmer,| + +---------------------------------+ + +Related options: +'breakat' specifies the characters where a break can be inserted. +'showbreak' specifies a string to show at the start of broken line. +Set 'textwidth' to zero to avoid a paragraph to be split. + + +MOVING BY VISIBLE LINES + +The "j" and "k" commands move to the next and previous lines. When used on +a long line, this means moving a lot of screen lines at once. + To move only one screen line, use the "gj" and "gk" commands. When a line +doesn't wrap they do the same as "j" and "k". When the line does wrap, they +move to a character displayed one line below or above. + You might like to use these mappings, which bind these movement commands to +the cursor keys: > + + :map <Up> gk + :map <Down> gj + + +TURNING A PARAGRAPH INTO ONE LINE + +If you want to import text into a program like MS-Word, each paragraph should +be a single line. If your paragraphs are currently separated with empty +lines, this is how you turn each paragraph into a single line: > + + :g/./,/^$/join + +That looks complicated. Let's break it up in pieces: + + :g/./ A ":global" command that finds all lines that contain + at least one character. + ,/^$/ A range, starting from the current line (the non-empty + line) until an empty line. + join The ":join" command joins the range of lines together + into one line. + +Starting with this text, containing eight lines broken at column 30: + + +----------------------------------+ + |A letter generation program | + |for a bank. They wanted to | + |send out a special, | + |personalized letter. | + | | + |To their richest 1000 | + |customers. Unfortunately for | + |the programmer, | + +----------------------------------+ + +You end up with two lines: + + +----------------------------------+ + |A letter generation program for a | + |bank. They wanted to send out a s| + |pecial, personalized letter. | + |To their richest 1000 customers. | + |Unfortunately for the programmer, | + +----------------------------------+ + +Note that this doesn't work when the separating line is blank but not empty; +when it contains spaces and/or tabs. This command does work with blank lines: +> + :g/\S/,/^\s*$/join + +This still requires a blank or empty line at the end of the file for the last +paragraph to be joined. + +============================================================================== +*25.5* Editing tables + +Suppose you are editing a table with four columns: + + nice table test 1 test 2 test 3 ~ + input A 0.534 ~ + input B 0.913 ~ + +You need to enter numbers in the third column. You could move to the second +line, use "A", enter a lot of spaces and type the text. + For this kind of editing there is a special option: > + + set virtualedit=all + +Now you can move the cursor to positions where there isn't any text. This is +called "virtual space". Editing a table is a lot easier this way. + Move the cursor by searching for the header of the last column: > + + /test 3 + +Now press "j" and you are right where you can enter the value for "input A". +Typing "0.693" results in: + + nice table test 1 test 2 test 3 ~ + input A 0.534 0.693 ~ + input B 0.913 ~ + +Vim has automatically filled the gap in front of the new text for you. Now, +to enter the next field in this column use "Bj". "B" moves back to the start +of a white space separated word. Then "j" moves to the place where the next +field can be entered. + + Note: + You can move the cursor anywhere in the display, also beyond the end + of a line. But Vim will not insert spaces there, until you insert a + character in that position. + + +COPYING A COLUMN + +You want to add a column, which should be a copy of the third column and +placed before the "test 1" column. Do this in seven steps: +1. Move the cursor to the left upper corner of this column, e.g., with + "/test 3". +2. Press CTRL-V to start blockwise Visual mode. +3. Move the cursor down two lines with "2j". You are now in "virtual space": + the "input B" line of the "test 3" column. +4. Move the cursor right, to include the whole column in the selection, plus + the space that you want between the columns. "9l" should do it. +5. Yank the selected rectangle with "y". +6. Move the cursor to "test 1", where the new column must be placed. +7. Press "P". + +The result should be: + + nice table test 3 test 1 test 2 test 3 ~ + input A 0.693 0.534 0.693 ~ + input B 0.913 ~ + +Notice that the whole "test 1" column was shifted right, also the line where +the "test 3" column didn't have text. + +Go back to non-virtual cursor movements with: > + + :set virtualedit= + + +VIRTUAL REPLACE MODE + +The disadvantage of using 'virtualedit' is that it "feels" different. You +can't recognize tabs or spaces beyond the end of line when moving the cursor +around. Another method can be used: Virtual Replace mode. + Suppose you have a line in a table that contains both tabs and other +characters. Use "rx" on the first tab: + + inp 0.693 0.534 0.693 ~ + + | + rx | + V + + inpx0.693 0.534 0.693 ~ + +The layout is messed up. To avoid that, use the "gr" command: + + inp 0.693 0.534 0.693 ~ + + | + grx | + V + + inpx 0.693 0.534 0.693 ~ + +What happens is that the "gr" command makes sure the new character takes the +right amount of screen space. Extra spaces or tabs are inserted to fill the +gap. Thus what actually happens is that a tab is replaced by "x" and then +blanks added to make the text after it keep its place. In this case a +tab is inserted. + When you need to replace more than one character, you use the "R" command +to go to Replace mode (see |04.9|). This messes up the layout and replaces +the wrong characters: + + inp 0 0.534 0.693 ~ + + | + R0.786 | + V + + inp 0.78634 0.693 ~ + +The "gR" command uses Virtual Replace mode. This preserves the layout: + + inp 0 0.534 0.693 ~ + + | + gR0.786 | + V + + inp 0.786 0.534 0.693 ~ + +============================================================================== + +Next chapter: |usr_26.txt| Repeating + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_26.txt b/share/vim/vim74/doc/usr_26.txt new file mode 100644 index 00000000..cc239596 --- /dev/null +++ b/share/vim/vim74/doc/usr_26.txt @@ -0,0 +1,221 @@ +*usr_26.txt* For Vim version 7.4. Last change: 2006 Apr 24 + + VIM USER MANUAL - by Bram Moolenaar + + Repeating + + +An editing task is hardly ever unstructured. A change often needs to be made +several times. In this chapter a number of useful ways to repeat a change +will be explained. + +|26.1| Repeating with Visual mode +|26.2| Add and subtract +|26.3| Making a change in many files +|26.4| Using Vim from a shell script + + Next chapter: |usr_27.txt| Search commands and patterns + Previous chapter: |usr_25.txt| Editing formatted text +Table of contents: |usr_toc.txt| + +============================================================================== +*26.1* Repeating with Visual mode + +Visual mode is very handy for making a change in any sequence of lines. You +can see the highlighted text, thus you can check if the correct lines are +changed. But making the selection takes some typing. The "gv" command +selects the same area again. This allows you to do another operation on the +same text. + Suppose you have some lines where you want to change "2001" to "2002" and +"2000" to "2001": + + The financial results for 2001 are better ~ + than for 2000. The income increased by 50%, ~ + even though 2001 had more rain than 2000. ~ + 2000 2001 ~ + income 45,403 66,234 ~ + +First change "2001" to "2002". Select the lines in Visual mode, and use: > + + :s/2001/2002/g + +Now use "gv" to reselect the same text. It doesn't matter where the cursor +is. Then use ":s/2000/2001/g" to make the second change. + Obviously, you can repeat these changes several times. + +============================================================================== +*26.2* Add and subtract + +When repeating the change of one number into another, you often have a fixed +offset. In the example above, one was added to each year. Instead of typing +a substitute command for each year that appears, the CTRL-A command can be +used. + Using the same text as above, search for a year: > + + /19[0-9][0-9]\|20[0-9][0-9] + +Now press CTRL-A. The year will be increased by one: + + The financial results for 2002 are better ~ + than for 2000. The income increased by 50%, ~ + even though 2001 had more rain than 2000. ~ + 2000 2001 ~ + income 45,403 66,234 ~ + +Use "n" to find the next year, and press "." to repeat the CTRL-A ("." is a +bit quicker to type). Repeat "n" and "." for all years that appear. + Hint: set the 'hlsearch' option to see the matches you are going to change, +then you can look ahead and do it faster. + +Adding more than one can be done by prepending the number to CTRL-A. Suppose +you have this list: + + 1. item four ~ + 2. item five ~ + 3. item six ~ + +Move the cursor to "1." and type: > + + 3 CTRL-A + +The "1." will change to "4.". Again, you can use "." to repeat this on the +other numbers. + +Another example: + + 006 foo bar ~ + 007 foo bar ~ + +Using CTRL-A on these numbers results in: + + 007 foo bar ~ + 010 foo bar ~ + +7 plus one is 10? What happened here is that Vim recognized "007" as an octal +number, because there is a leading zero. This notation is often used in C +programs. If you do not want a number with leading zeros to be handled as +octal, use this: > + + :set nrformats-=octal + +The CTRL-X command does subtraction in a similar way. + +============================================================================== +*26.3* Making a change in many files + +Suppose you have a variable called "x_cnt" and you want to change it to +"x_counter". This variable is used in several of your C files. You need to +change it in all files. This is how you do it. + Put all the relevant files in the argument list: > + + :args *.c +< +This finds all C files and edits the first one. Now you can perform a +substitution command on all these files: > + + :argdo %s/\<x_cnt\>/x_counter/ge | update + +The ":argdo" command takes an argument that is another command. That command +will be executed on all files in the argument list. + The "%s" substitute command that follows works on all lines. It finds the +word "x_cnt" with "\<x_cnt\>". The "\<" and "\>" are used to match the whole +word only, and not "px_cnt" or "x_cnt2". + The flags for the substitute command include "g" to replace all occurrences +of "x_cnt" in the same line. The "e" flag is used to avoid an error message +when "x_cnt" does not appear in the file. Otherwise ":argdo" would abort on +the first file where "x_cnt" was not found. + The "|" separates two commands. The following "update" command writes the +file only if it was changed. If no "x_cnt" was changed to "x_counter" nothing +happens. + +There is also the ":windo" command, which executes its argument in all +windows. And ":bufdo" executes its argument on all buffers. Be careful with +this, because you might have more files in the buffer list than you think. +Check this with the ":buffers" command (or ":ls"). + +============================================================================== +*26.4* Using Vim from a shell script + +Suppose you have a lot of files in which you need to change the string +"-person-" to "Jones" and then print it. How do you do that? One way is to +do a lot of typing. The other is to write a shell script to do the work. + The Vim editor does a superb job as a screen-oriented editor when using +Normal mode commands. For batch processing, however, Normal mode commands do +not result in clear, commented command files; so here you will use Ex mode +instead. This mode gives you a nice command-line interface that makes it easy +to put into a batch file. ("Ex command" is just another name for a +command-line (:) command.) + The Ex mode commands you need are as follows: > + + %s/-person-/Jones/g + write tempfile + quit + +You put these commands in the file "change.vim". Now to run the editor in +batch mode, use this shell script: > + + for file in *.txt; do + vim -e -s $file < change.vim + lpr -r tempfile + done + +The for-done loop is a shell construct to repeat the two lines in between, +while the $file variable is set to a different file name each time. + The second line runs the Vim editor in Ex mode (-e argument) on the file +$file and reads commands from the file "change.vim". The -s argument tells +Vim to operate in silent mode. In other words, do not keep outputting the +:prompt, or any other prompt for that matter. + The "lpr -r tempfile" command prints the resulting "tempfile" and deletes +it (that's what the -r argument does). + + +READING FROM STDIN + +Vim can read text on standard input. Since the normal way is to read commands +there, you must tell Vim to read text instead. This is done by passing the +"-" argument in place of a file. Example: > + + ls | vim - + +This allows you to edit the output of the "ls" command, without first saving +the text in a file. + If you use the standard input to read text from, you can use the "-S" +argument to read a script: > + + producer | vim -S change.vim - + + +NORMAL MODE SCRIPTS + +If you really want to use Normal mode commands in a script, you can use it +like this: > + + vim -s script file.txt ... +< + Note: + "-s" has a different meaning when it is used without "-e". Here it + means to source the "script" as Normal mode commands. When used with + "-e" it means to be silent, and doesn't use the next argument as a + file name. + +The commands in "script" are executed like you typed them. Don't forget that +a line break is interpreted as pressing <Enter>. In Normal mode that moves +the cursor to the next line. + To create the script you can edit the script file and type the commands. +You need to imagine what the result would be, which can be a bit difficult. +Another way is to record the commands while you perform them manually. This +is how you do that: > + + vim -w script file.txt ... + +All typed keys will be written to "script". If you make a small mistake you +can just continue and remember to edit the script later. + The "-w" argument appends to an existing script. That is good when you +want to record the script bit by bit. If you want to start from scratch and +start all over, use the "-W" argument. It overwrites any existing file. + +============================================================================== + +Next chapter: |usr_27.txt| Search commands and patterns + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_27.txt b/share/vim/vim74/doc/usr_27.txt new file mode 100644 index 00000000..fb096593 --- /dev/null +++ b/share/vim/vim74/doc/usr_27.txt @@ -0,0 +1,563 @@ +*usr_27.txt* For Vim version 7.4. Last change: 2010 Mar 28 + + VIM USER MANUAL - by Bram Moolenaar + + Search commands and patterns + + +In chapter 3 a few simple search patterns were mentioned |03.9|. Vim can do +much more complex searches. This chapter explains the most often used ones. +A detailed specification can be found here: |pattern| + +|27.1| Ignoring case +|27.2| Wrapping around the file end +|27.3| Offsets +|27.4| Matching multiple times +|27.5| Alternatives +|27.6| Character ranges +|27.7| Character classes +|27.8| Matching a line break +|27.9| Examples + + Next chapter: |usr_28.txt| Folding + Previous chapter: |usr_26.txt| Repeating +Table of contents: |usr_toc.txt| + +============================================================================== +*27.1* Ignoring case + +By default, Vim's searches are case sensitive. Therefore, "include", +"INCLUDE", and "Include" are three different words and a search will match +only one of them. + Now switch on the 'ignorecase' option: > + + :set ignorecase + +Search for "include" again, and now it will match "Include", "INCLUDE" and +"InClUDe". (Set the 'hlsearch' option to quickly see where a pattern +matches.) + You can switch this off again with: > + + :set noignorecase + +But let's keep it set, and search for "INCLUDE". It will match exactly the +same text as "include" did. Now set the 'smartcase' option: > + + :set ignorecase smartcase + +If you have a pattern with at least one uppercase character, the search +becomes case sensitive. The idea is that you didn't have to type that +uppercase character, so you must have done it because you wanted case to +match. That's smart! + With these two options set you find the following matches: + + pattern matches ~ + word word, Word, WORD, WoRd, etc. + Word Word + WORD WORD + WoRd WoRd + + +CASE IN ONE PATTERN + +If you want to ignore case for one specific pattern, you can do this by +prepending the "\c" string. Using "\C" will make the pattern to match case. +This overrules the 'ignorecase' and 'smartcase' options, when "\c" or "\C" is +used their value doesn't matter. + + pattern matches ~ + \Cword word + \CWord Word + \cword word, Word, WORD, WoRd, etc. + \cWord word, Word, WORD, WoRd, etc. + +A big advantage of using "\c" and "\C" is that it sticks with the pattern. +Thus if you repeat a pattern from the search history, the same will happen, no +matter if 'ignorecase' or 'smartcase' was changed. + + Note: + The use of "\" items in search patterns depends on the 'magic' option. + In this chapter we will assume 'magic' is on, because that is the + standard and recommended setting. If you would change 'magic', many + search patterns would suddenly become invalid. + + Note: + If your search takes much longer than you expected, you can interrupt + it with CTRL-C on Unix and CTRL-Break on MS-DOS and MS-Windows. + +============================================================================== +*27.2* Wrapping around the file end + +By default, a forward search starts searching for the given string at the +current cursor location. It then proceeds to the end of the file. If it has +not found the string by that time, it starts from the beginning and searches +from the start of the file to the cursor location. + Keep in mind that when repeating the "n" command to search for the next +match, you eventually get back to the first match. If you don't notice this +you keep searching forever! To give you a hint, Vim displays this message: + + search hit BOTTOM, continuing at TOP ~ + +If you use the "?" command, to search in the other direction, you get this +message: + + search hit TOP, continuing at BOTTOM ~ + +Still, you don't know when you are back at the first match. One way to see +this is by switching on the 'ruler' option: > + + :set ruler + +Vim will display the cursor position in the lower righthand corner of the +window (in the status line if there is one). It looks like this: + + 101,29 84% ~ + +The first number is the line number of the cursor. Remember the line number +where you started, so that you can check if you passed this position again. + + +NOT WRAPPING + +To turn off search wrapping, use the following command: > + + :set nowrapscan + +Now when the search hits the end of the file, an error message displays: + + E385: search hit BOTTOM without match for: forever ~ + +Thus you can find all matches by going to the start of the file with "gg" and +keep searching until you see this message. + If you search in the other direction, using "?", you get: + + E384: search hit TOP without match for: forever ~ + +============================================================================== +*27.3* Offsets + +By default, the search command leaves the cursor positioned on the beginning +of the pattern. You can tell Vim to leave it some other place by specifying +an offset. For the forward search command "/", the offset is specified by +appending a slash (/) and the offset: > + + /default/2 + +This command searches for the pattern "default" and then moves to the +beginning of the second line past the pattern. Using this command on the +paragraph above, Vim finds the word "default" in the first line. Then the +cursor is moved two lines down and lands on "an offset". + +If the offset is a simple number, the cursor will be placed at the beginning +of the line that many lines from the match. The offset number can be positive +or negative. If it is positive, the cursor moves down that many lines; if +negative, it moves up. + + +CHARACTER OFFSETS + +The "e" offset indicates an offset from the end of the match. It moves the +cursor onto the last character of the match. The command: > + + /const/e + +puts the cursor on the "t" of "const". + From that position, adding a number moves forward that many characters. +This command moves to the character just after the match: > + + /const/e+1 + +A positive number moves the cursor to the right, a negative number moves it to +the left. For example: > + + /const/e-1 + +moves the cursor to the "s" of "const". + +If the offset begins with "b", the cursor moves to the beginning of the +pattern. That's not very useful, since leaving out the "b" does the same +thing. It does get useful when a number is added or subtracted. The cursor +then goes forward or backward that many characters. For example: > + + /const/b+2 + +Moves the cursor to the beginning of the match and then two characters to the +right. Thus it lands on the "n". + + +REPEATING + +To repeat searching for the previously used search pattern, but with a +different offset, leave out the pattern: > + + /that + //e + +Is equal to: > + + /that/e + +To repeat with the same offset: > + + / + +"n" does the same thing. To repeat while removing a previously used offset: > + + // + + +SEARCHING BACKWARDS + +The "?" command uses offsets in the same way, but you must use "?" to separate +the offset from the pattern, instead of "/": > + + ?const?e-2 + +The "b" and "e" keep their meaning, they don't change direction with the use +of "?". + + +START POSITION + +When starting a search, it normally starts at the cursor position. When you +specify a line offset, this can cause trouble. For example: > + + /const/-2 + +This finds the next word "const" and then moves two lines up. If you +use "n" to search again, Vim could start at the current position and find the same +"const" match. Then using the offset again, you would be back where you started. +You would be stuck! + It could be worse: Suppose there is another match with "const" in the next +line. Then repeating the forward search would find this match and move two +lines up. Thus you would actually move the cursor back! + +When you specify a character offset, Vim will compensate for this. Thus the +search starts a few characters forward or backward, so that the same match +isn't found again. + +============================================================================== +*27.4* Matching multiple times + +The "*" item specifies that the item before it can match any number of times. +Thus: > + + /a* + +matches "a", "aa", "aaa", etc. But also "" (the empty string), because zero +times is included. + The "*" only applies to the item directly before it. Thus "ab*" matches +"a", "ab", "abb", "abbb", etc. To match a whole string multiple times, it +must be grouped into one item. This is done by putting "\(" before it and +"\)" after it. Thus this command: > + + /\(ab\)* + +Matches: "ab", "abab", "ababab", etc. And also "". + +To avoid matching the empty string, use "\+". This makes the previous item +match one or more times. > + + /ab\+ + +Matches "ab", "abb", "abbb", etc. It does not match "a" when no "b" follows. + +To match an optional item, use "\=". Example: > + + /folders\= + +Matches "folder" and "folders". + + +SPECIFIC COUNTS + +To match a specific number of items use the form "\{n,m}". "n" and "m" are +numbers. The item before it will be matched "n" to "m" times |inclusive|. +Example: > + + /ab\{3,5} + +matches "abbb", "abbbb" and "abbbbb". + When "n" is omitted, it defaults to zero. When "m" is omitted it defaults +to infinity. When ",m" is omitted, it matches exactly "n" times. +Examples: + + pattern match count ~ + \{,4} 0, 1, 2, 3 or 4 + \{3,} 3, 4, 5, etc. + \{0,1} 0 or 1, same as \= + \{0,} 0 or more, same as * + \{1,} 1 or more, same as \+ + \{3} 3 + + +MATCHING AS LITTLE AS POSSIBLE + +The items so far match as many characters as they can find. To match as few +as possible, use "\{-n,m}". It works the same as "\{n,m}", except that the +minimal amount possible is used. + For example, use: > + + /ab\{-1,3} + +Will match "ab" in "abbb". Actually, it will never match more than one b, +because there is no reason to match more. It requires something else to force +it to match more than the lower limit. + The same rules apply to removing "n" and "m". It's even possible to remove +both of the numbers, resulting in "\{-}". This matches the item before it +zero or more times, as few as possible. The item by itself always matches +zero times. It is useful when combined with something else. Example: > + + /a.\{-}b + +This matches "axb" in "axbxb". If this pattern would be used: > + + /a.*b + +It would try to match as many characters as possible with ".*", thus it +matches "axbxb" as a whole. + +============================================================================== +*27.5* Alternatives + +The "or" operator in a pattern is "\|". Example: > + + /foo\|bar + +This matches "foo" or "bar". More alternatives can be concatenated: > + + /one\|two\|three + +Matches "one", "two" and "three". + To match multiple times, the whole thing must be placed in "\(" and "\)": > + + /\(foo\|bar\)\+ + +This matches "foo", "foobar", "foofoo", "barfoobar", etc. + Another example: > + + /end\(if\|while\|for\) + +This matches "endif", "endwhile" and "endfor". + +A related item is "\&". This requires that both alternatives match in the +same place. The resulting match uses the last alternative. Example: > + + /forever\&... + +This matches "for" in "forever". It will not match "fortuin", for example. + +============================================================================== +*27.6* Character ranges + +To match "a", "b" or "c" you could use "/a\|b\|c". When you want to match all +letters from "a" to "z" this gets very long. There is a shorter method: > + + /[a-z] + +The [] construct matches a single character. Inside you specify which +characters to match. You can include a list of characters, like this: > + + /[0123456789abcdef] + +This will match any of the characters included. For consecutive characters +you can specify the range. "0-3" stands for "0123". "w-z" stands for "wxyz". +Thus the same command as above can be shortened to: > + + /[0-9a-f] + +To match the "-" character itself make it the first or last one in the range. +These special characters are accepted to make it easier to use them inside a +[] range (they can actually be used anywhere in the search pattern): + + \e <Esc> + \t <Tab> + \r <CR> + \b <BS> + +There are a few more special cases for [] ranges, see |/[]| for the whole +story. + + +COMPLEMENTED RANGE + +To avoid matching a specific character, use "^" at the start of the range. +The [] item then matches everything but the characters included. Example: > + + /"[^"]*" +< + " a double quote + [^"] any character that is not a double quote + * as many as possible + " a double quote again + +This matches "foo" and "3!x", including the double quotes. + + +PREDEFINED RANGES + +A number of ranges are used very often. Vim provides a shortcut for these. +For example: > + + /\a + +Finds alphabetic characters. This is equal to using "/[a-zA-Z]". Here are a +few more of these: + + item matches equivalent ~ + \d digit [0-9] + \D non-digit [^0-9] + \x hex digit [0-9a-fA-F] + \X non-hex digit [^0-9a-fA-F] + \s white space [ ] (<Tab> and <Space>) + \S non-white characters [^ ] (not <Tab> and <Space>) + \l lowercase alpha [a-z] + \L non-lowercase alpha [^a-z] + \u uppercase alpha [A-Z] + \U non-uppercase alpha [^A-Z] + + Note: + Using these predefined ranges works a lot faster than the character + range it stands for. + These items can not be used inside []. Thus "[\d\l]" does NOT work to + match a digit or lowercase alpha. Use "\(\d\|\l\)" instead. + +See |/\s| for the whole list of these ranges. + +============================================================================== +*27.7* Character classes + +The character range matches a fixed set of characters. A character class is +similar, but with an essential difference: The set of characters can be +redefined without changing the search pattern. + For example, search for this pattern: > + + /\f\+ + +The "\f" items stands for file name characters. Thus this matches a sequence +of characters that can be a file name. + Which characters can be part of a file name depends on the system you are +using. On MS-Windows, the backslash is included, on Unix it is not. This is +specified with the 'isfname' option. The default value for Unix is: > + + :set isfname + isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,= + +For other systems the default value is different. Thus you can make a search +pattern with "\f" to match a file name, and it will automatically adjust to +the system you are using it on. + + Note: + Actually, Unix allows using just about any character in a file name, + including white space. Including these characters in 'isfname' would + be theoretically correct. But it would make it impossible to find the + end of a file name in text. Thus the default value of 'isfname' is a + compromise. + +The character classes are: + + item matches option ~ + \i identifier characters 'isident' + \I like \i, excluding digits + \k keyword characters 'iskeyword' + \K like \k, excluding digits + \p printable characters 'isprint' + \P like \p, excluding digits + \f file name characters 'isfname' + \F like \f, excluding digits + +============================================================================== +*27.8* Matching a line break + +Vim can find a pattern that includes a line break. You need to specify where +the line break happens, because all items mentioned so far don't match a line +break. + To check for a line break in a specific place, use the "\n" item: > + + /the\nword + +This will match at a line that ends in "the" and the next line starts with +"word". To match "the word" as well, you need to match a space or a line +break. The item to use for it is "\_s": > + + /the\_sword + +To allow any amount of white space: > + + /the\_s\+word + +This also matches when "the " is at the end of a line and " word" at the +start of the next one. + +"\s" matches white space, "\_s" matches white space or a line break. +Similarly, "\a" matches an alphabetic character, and "\_a" matches an +alphabetic character or a line break. The other character classes and ranges +can be modified in the same way by inserting a "_". + +Many other items can be made to match a line break by prepending "\_". For +example: "\_." matches any character or a line break. + + Note: + "\_.*" matches everything until the end of the file. Be careful with + this, it can make a search command very slow. + +Another example is "\_[]", a character range that includes a line break: > + + /"\_[^"]*" + +This finds a text in double quotes that may be split up in several lines. + +============================================================================== +*27.9* Examples + +Here are a few search patterns you might find useful. This shows how the +items mentioned above can be combined. + + +FINDING A CALIFORNIA LICENSE PLATE + +A sample license plate number is "1MGU103". It has one digit, three uppercase +letters and three digits. Directly putting this into a search pattern: > + + /\d\u\u\u\d\d\d + +Another way is to specify that there are three digits and letters with a +count: > + + /\d\u\{3}\d\{3} + +Using [] ranges instead: > + + /[0-9][A-Z]\{3}[0-9]\{3} + +Which one of these you should use? Whichever one you can remember. The +simple way you can remember is much faster than the fancy way that you can't. +If you can remember them all, then avoid the last one, because it's both more +typing and slower to execute. + + +FINDING AN IDENTIFIER + +In C programs (and many other computer languages) an identifier starts with a +letter and further consists of letters and digits. Underscores can be used +too. This can be found with: > + + /\<\h\w*\> + +"\<" and "\>" are used to find only whole words. "\h" stands for "[A-Za-z_]" +and "\w" for "[0-9A-Za-z_]". + + Note: + "\<" and "\>" depend on the 'iskeyword' option. If it includes "-", + for example, then "ident-" is not matched. In this situation use: > + + /\w\@<!\h\w*\w\@! +< + This checks if "\w" does not match before or after the identifier. + See |/\@<!| and |/\@!|. + +============================================================================== + +Next chapter: |usr_28.txt| Folding + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_28.txt b/share/vim/vim74/doc/usr_28.txt new file mode 100644 index 00000000..46db1b90 --- /dev/null +++ b/share/vim/vim74/doc/usr_28.txt @@ -0,0 +1,426 @@ +*usr_28.txt* For Vim version 7.4. Last change: 2008 Jun 14 + + VIM USER MANUAL - by Bram Moolenaar + + Folding + + +Structured text can be separated in sections. And sections in sub-sections. +Folding allows you to display a section as one line, providing an overview. +This chapter explains the different ways this can be done. + +|28.1| What is folding? +|28.2| Manual folding +|28.3| Working with folds +|28.4| Saving and restoring folds +|28.5| Folding by indent +|28.6| Folding with markers +|28.7| Folding by syntax +|28.8| Folding by expression +|28.9| Folding unchanged lines +|28.10| Which fold method to use? + + Next chapter: |usr_29.txt| Moving through programs + Previous chapter: |usr_27.txt| Search commands and patterns +Table of contents: |usr_toc.txt| + +============================================================================== +*28.1* What is folding? + +Folding is used to show a range of lines in the buffer as a single line on the +screen. Like a piece of paper which is folded to make it shorter: + + +------------------------+ + | line 1 | + | line 2 | + | line 3 | + |_______________________ | + \ \ + \________________________\ + / folded lines / + /________________________/ + | line 12 | + | line 13 | + | line 14 | + +------------------------+ + +The text is still in the buffer, unchanged. Only the way lines are displayed +is affected by folding. + +The advantage of folding is that you can get a better overview of the +structure of text, by folding lines of a section and replacing it with a line +that indicates that there is a section. + +============================================================================== +*28.2* Manual folding + +Try it out: Position the cursor in a paragraph and type: > + + zfap + +You will see that the paragraph is replaced by a highlighted line. You have +created a fold. |zf| is an operator and |ap| a text object selection. You +can use the |zf| operator with any movement command to create a fold for the +text that it moved over. |zf| also works in Visual mode. + +To view the text again, open the fold by typing: > + + zo + +And you can close the fold again with: > + + zc + +All the folding commands start with "z". With some fantasy, this looks like a +folded piece of paper, seen from the side. The letter after the "z" has a +mnemonic meaning to make it easier to remember the commands: + + zf F-old creation + zo O-pen a fold + zc C-lose a fold + +Folds can be nested: A region of text that contains folds can be folded +again. For example, you can fold each paragraph in this section, and then +fold all the sections in this chapter. Try it out. You will notice that +opening the fold for the whole chapter will restore the nested folds as they +were, some may be open and some may be closed. + +Suppose you have created several folds, and now want to view all the text. +You could go to each fold and type "zo". To do this faster, use this command: > + + zr + +This will R-educe the folding. The opposite is: > + + zm + +This folds M-ore. You can repeat "zr" and "zm" to open and close nested folds +of several levels. + +If you have nested several levels deep, you can open all of them with: > + + zR + +This R-educes folds until there are none left. And you can close all folds +with: > + + zM + +This folds M-ore and M-ore. + +You can quickly disable the folding with the |zn| command. Then |zN| brings +back the folding as it was. |zi| toggles between the two. This is a useful +way of working: +- create folds to get overview on your file +- move around to where you want to do your work +- do |zi| to look at the text and edit it +- do |zi| again to go back to moving around + +More about manual folding in the reference manual: |fold-manual| + +============================================================================== +*28.3* Working with folds + +When some folds are closed, movement commands like "j" and "k" move over a +fold like it was a single, empty line. This allows you to quickly move around +over folded text. + +You can yank, delete and put folds as if it was a single line. This is very +useful if you want to reorder functions in a program. First make sure that +each fold contains a whole function (or a bit less) by selecting the right +'foldmethod'. Then delete the function with "dd", move the cursor and put it +with "p". If some lines of the function are above or below the fold, you can +use Visual selection: +- put the cursor on the first line to be moved +- hit "V" to start Visual mode +- put the cursor on the last line to be moved +- hit "d" to delete the selected lines. +- move the cursor to the new position and "p"ut the lines there. + +It is sometimes difficult to see or remember where a fold is located, thus +where a |zo| command would actually work. To see the defined folds: > + + :set foldcolumn=4 + +This will show a small column on the left of the window to indicate folds. +A "+" is shown for a closed fold. A "-" is shown at the start of each open +fold and "|" at following lines of the fold. + +You can use the mouse to open a fold by clicking on the "+" in the foldcolumn. +Clicking on the "-" or a "|" below it will close an open fold. + +To open all folds at the cursor line use |zO|. +To close all folds at the cursor line use |zC|. +To delete a fold at the cursor line use |zd|. +To delete all folds at the cursor line use |zD|. + +When in Insert mode, the fold at the cursor line is never closed. That allows +you to see what you type! + +Folds are opened automatically when jumping around or moving the cursor left +or right. For example, the "0" command opens the fold under the cursor +(if 'foldopen' contains "hor", which is the default). The 'foldopen' option +can be changed to open folds for specific commands. If you want the line +under the cursor always to be open, do this: > + + :set foldopen=all + +Warning: You won't be able to move onto a closed fold then. You might want to +use this only temporarily and then set it back to the default: > + + :set foldopen& + +You can make folds close automatically when you move out of it: > + + :set foldclose=all + +This will re-apply 'foldlevel' to all folds that don't contain the cursor. +You have to try it out if you like how this feels. Use |zm| to fold more and +|zr| to fold less (reduce folds). + +The folding is local to the window. This allows you to open two windows on +the same buffer, one with folds and one without folds. Or one with all folds +closed and one with all folds open. + +============================================================================== +*28.4* Saving and restoring folds + +When you abandon a file (starting to edit another one), the state of the folds +is lost. If you come back to the same file later, all manually opened and +closed folds are back to their default. When folds have been created +manually, all folds are gone! To save the folds use the |:mkview| command: > + + :mkview + +This will store the settings and other things that influence the view on the +file. You can change what is stored with the 'viewoptions' option. +When you come back to the same file later, you can load the view again: > + + :loadview + +You can store up to ten views on one file. For example, to save the current +setup as the third view and load the second view: > + + :mkview 3 + :loadview 2 + +Note that when you insert or delete lines the views might become invalid. +Also check out the 'viewdir' option, which specifies where the views are +stored. You might want to delete old views now and then. + +============================================================================== +*28.5* Folding by indent + +Defining folds with |zf| is a lot of work. If your text is structured by +giving lower level items a larger indent, you can use the indent folding +method. This will create folds for every sequence of lines with the same +indent. Lines with a larger indent will become nested folds. This works well +with many programming languages. + +Try this by setting the 'foldmethod' option: > + + :set foldmethod=indent + +Then you can use the |zm| and |zr| commands to fold more and reduce folding. +It's easy to see on this example text: + +This line is not indented + This line is indented once + This line is indented twice + This line is indented twice + This line is indented once +This line is not indented + This line is indented once + This line is indented once + +Note that the relation between the amount of indent and the fold depth depends +on the 'shiftwidth' option. Each 'shiftwidth' worth of indent adds one to the +depth of the fold. This is called a fold level. + +When you use the |zr| and |zm| commands you actually increase or decrease the +'foldlevel' option. You could also set it directly: > + + :set foldlevel=3 + +This means that all folds with three times a 'shiftwidth' indent or more will +be closed. The lower the foldlevel, the more folds will be closed. When +'foldlevel' is zero, all folds are closed. |zM| does set 'foldlevel' to zero. +The opposite command |zR| sets 'foldlevel' to the deepest fold level that is +present in the file. + +Thus there are two ways to open and close the folds: +(A) By setting the fold level. + This gives a very quick way of "zooming out" to view the structure of the + text, move the cursor, and "zoom in" on the text again. + +(B) By using |zo| and |zc| commands to open or close specific folds. + This allows opening only those folds that you want to be open, while other + folds remain closed. + +This can be combined: You can first close most folds by using |zm| a few times +and then open a specific fold with |zo|. Or open all folds with |zR| and +then close specific folds with |zc|. + +But you cannot manually define folds when 'foldmethod' is "indent", as that +would conflict with the relation between the indent and the fold level. + +More about folding by indent in the reference manual: |fold-indent| + +============================================================================== +*28.6* Folding with markers + +Markers in the text are used to specify the start and end of a fold region. +This gives precise control over which lines are included in a fold. The +disadvantage is that the text needs to be modified. + +Try it: > + + :set foldmethod=marker + +Example text, as it could appear in a C program: + + /* foobar () {{{ */ + int foobar() + { + /* return a value {{{ */ + return 42; + /* }}} */ + } + /* }}} */ + +Notice that the folded line will display the text before the marker. This is +very useful to tell what the fold contains. + +It's quite annoying when the markers don't pair up correctly after moving some +lines around. This can be avoided by using numbered markers. Example: + + /* global variables {{{1 */ + int varA, varB; + + /* functions {{{1 */ + /* funcA() {{{2 */ + void funcA() {} + + /* funcB() {{{2 */ + void funcB() {} + /* }}}1 */ + +At every numbered marker a fold at the specified level begins. This will make +any fold at a higher level stop here. You can just use numbered start markers +to define all folds. Only when you want to explicitly stop a fold before +another starts you need to add an end marker. + +More about folding with markers in the reference manual: |fold-marker| + +============================================================================== +*28.7* Folding by syntax + +For each language Vim uses a different syntax file. This defines the colors +for various items in the file. If you are reading this in Vim, in a terminal +that supports colors, the colors you see are made with the "help" syntax file. + In the syntax files it is possible to add syntax items that have the "fold" +argument. These define a fold region. This requires writing a syntax file +and adding these items in it. That's not so easy to do. But once it's done, +all folding happens automatically. + Here we'll assume you are using an existing syntax file. Then there is +nothing more to explain. You can open and close folds as explained above. +The folds will be created and deleted automatically when you edit the file. + +More about folding by syntax in the reference manual: |fold-syntax| + +============================================================================== +*28.8* Folding by expression + +This is similar to folding by indent, but instead of using the indent of a +line a user function is called to compute the fold level of a line. You can +use this for text where something in the text indicates which lines belong +together. An example is an e-mail message where the quoted text is indicated +by a ">" before the line. To fold these quotes use this: > + + :set foldmethod=expr + :set foldexpr=strlen(substitute(substitute(getline(v:lnum),'\\s','',\"g\"),'[^>].*','','')) + +You can try it out on this text: + +> quoted text he wrote +> quoted text he wrote +> > double quoted text I wrote +> > double quoted text I wrote + +Explanation for the 'foldexpr' used in the example (inside out): + getline(v:lnum) gets the current line + substitute(...,'\\s','','g') removes all white space from the line + substitute(...,'[^>].*','','') removes everything after leading '>'s + strlen(...) counts the length of the string, which + is the number of '>'s found + +Note that a backslash must be inserted before every space, double quote and +backslash for the ":set" command. If this confuses you, do > + + :set foldexpr + +to check the actual resulting value. To correct a complicated expression, use +the command-line completion: > + + :set foldexpr=<Tab> + +Where <Tab> is a real Tab. Vim will fill in the previous value, which you can +then edit. + +When the expression gets more complicated you should put it in a function and +set 'foldexpr' to call that function. + +More about folding by expression in the reference manual: |fold-expr| + +============================================================================== +*28.9* Folding unchanged lines + +This is useful when you set the 'diff' option in the same window. The +|vimdiff| command does this for you. Example: > + + :setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1 + +Do this in every window that shows a different version of the same file. You +will clearly see the differences between the files, while the text that didn't +change is folded. + +For more details see |fold-diff|. + +============================================================================== +*28.10* Which fold method to use? + +All these possibilities make you wonder which method you should choose. +Unfortunately, there is no golden rule. Here are some hints. + +If there is a syntax file with folding for the language you are editing, that +is probably the best choice. If there isn't one, you might try to write it. +This requires a good knowledge of search patterns. It's not easy, but when +it's working you will not have to define folds manually. + +Typing commands to manually fold regions can be used for unstructured text. +Then use the |:mkview| command to save and restore your folds. + +The marker method requires you to change the file. If you are sharing the +files with other people or you have to meet company standards, you might not +be allowed to add them. + The main advantage of markers is that you can put them exactly where you +want them. That avoids that a few lines are missed when you cut and paste +folds. And you can add a comment about what is contained in the fold. + +Folding by indent is something that works in many files, but not always very +well. Use it when you can't use one of the other methods. However, it is +very useful for outlining. Then you specifically use one 'shiftwidth' for +each nesting level. + +Folding with expressions can make folds in almost any structured text. It is +quite simple to specify, especially if the start and end of a fold can easily +be recognized. + If you use the "expr" method to define folds, but they are not exactly how +you want them, you could switch to the "manual" method. This will not remove +the defined folds. Then you can delete or add folds manually. + +============================================================================== + +Next chapter: |usr_29.txt| Moving through programs + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_29.txt b/share/vim/vim74/doc/usr_29.txt new file mode 100644 index 00000000..f13cd3a4 --- /dev/null +++ b/share/vim/vim74/doc/usr_29.txt @@ -0,0 +1,613 @@ +*usr_29.txt* For Vim version 7.4. Last change: 2008 Jun 28 + + VIM USER MANUAL - by Bram Moolenaar + + Moving through programs + + +The creator of Vim is a computer programmer. It's no surprise that Vim +contains many features to aid in writing programs. Jump around to find where +identifiers are defined and used. Preview declarations in a separate window. +There is more in the next chapter. + +|29.1| Using tags +|29.2| The preview window +|29.3| Moving through a program +|29.4| Finding global identifiers +|29.5| Finding local identifiers + + Next chapter: |usr_30.txt| Editing programs + Previous chapter: |usr_28.txt| Folding +Table of contents: |usr_toc.txt| + +============================================================================== +*29.1* Using tags + +What is a tag? It is a location where an identifier is defined. An example +is a function definition in a C or C++ program. A list of tags is kept in a +tags file. This can be used by Vim to directly jump from any place to the +tag, the place where an identifier is defined. + To generate the tags file for all C files in the current directory, use the +following command: > + + ctags *.c + +"ctags" is a separate program. Most Unix systems already have it installed. +If you do not have it yet, you can find Exuberant ctags here: + + http://ctags.sf.net ~ + +Now when you are in Vim and you want to go to a function definition, you can +jump to it by using the following command: > + + :tag startlist + +This command will find the function "startlist" even if it is in another file. + The CTRL-] command jumps to the tag of the word that is under the cursor. +This makes it easy to explore a tangle of C code. Suppose, for example, that +you are in the function "write_block". You can see that it calls +"write_line". But what does "write_line" do? By placing the cursor on the +call to "write_line" and pressing CTRL-], you jump to the definition of this +function. + The "write_line" function calls "write_char". You need to figure out what +it does. So you position the cursor over the call to "write_char" and press +CTRL-]. Now you are at the definition of "write_char". + + +-------------------------------------+ + |void write_block(char **s; int cnt) | + |{ | + | int i; | + | for (i = 0; i < cnt; ++i) | + | write_line(s[i]); | + |} | | + +-----------|-------------------------+ + | + CTRL-] | + | +----------------------------+ + +--> |void write_line(char *s) | + |{ | + | while (*s != 0) | + | write_char(*s++); | + |} | | + +--------|-------------------+ + | + CTRL-] | + | +------------------------------------+ + +--> |void write_char(char c) | + |{ | + | putchar((int)(unsigned char)c); | + |} | + +------------------------------------+ + +The ":tags" command shows the list of tags that you traversed through: + + :tags + # TO tag FROM line in file/text ~ + 1 1 write_line 8 write_block.c ~ + 2 1 write_char 7 write_line.c ~ + > ~ +> +Now to go back. The CTRL-T command goes to the preceding tag. In the example +above you get back to the "write_line" function, in the call to "write_char". + This command takes a count argument that indicates how many tags to jump +back. You have gone forward, and now back. Let's go forward again. The +following command goes to the tag on top of the list: > + + :tag + +You can prefix it with a count and jump forward that many tags. For example: +":3tag". CTRL-T also can be preceded with a count. + These commands thus allow you to go down a call tree with CTRL-] and back +up again with CTRL-T. Use ":tags" to find out where you are. + + +SPLIT WINDOWS + +The ":tag" command replaces the file in the current window with the one +containing the new function. But suppose you want to see not only the old +function but also the new one? You can split the window using the ":split" +command followed by the ":tag" command. Vim has a shorthand command that does +both: > + :stag tagname + +To split the current window and jump to the tag under the cursor use this +command: > + + CTRL-W ] + +If a count is specified, the new window will be that many lines high. + + +MORE TAGS FILES + +When you have files in many directories, you can create a tags file in each of +them. Vim will then only be able to jump to tags within that directory. + To find more tags files, set the 'tags' option to include all the relevant +tags files. Example: > + + :set tags=./tags,./../tags,./*/tags + +This finds a tags file in the same directory as the current file, one +directory level higher and in all subdirectories. + This is quite a number of tags files, but it may still not be enough. For +example, when editing a file in "~/proj/src", you will not find the tags file +"~/proj/sub/tags". For this situation Vim offers to search a whole directory +tree for tags files. Example: > + + :set tags=~/proj/**/tags + + +ONE TAGS FILE + +When Vim has to search many places for tags files, you can hear the disk +rattling. It may get a bit slow. In that case it's better to spend this +time while generating one big tags file. You might do this overnight. + This requires the Exuberant ctags program, mentioned above. It offers an +argument to search a whole directory tree: > + + cd ~/proj + ctags -R . + +The nice thing about this is that Exuberant ctags recognizes various file +types. Thus this doesn't work just for C and C++ programs, also for Eiffel +and even Vim scripts. See the ctags documentation to tune this. + Now you only need to tell Vim where your big tags file is: > + + :set tags=~/proj/tags + + +MULTIPLE MATCHES + +When a function is defined multiple times (or a method in several classes), +the ":tag" command will jump to the first one. If there is a match in the +current file, that one is used first. + You can now jump to other matches for the same tag with: > + + :tnext + +Repeat this to find further matches. If there are many, you can select which +one to jump to: > + + :tselect tagname + +Vim will present you with a list of choices: + + # pri kind tag file ~ + 1 F f mch_init os_amiga.c ~ + mch_init() ~ + 2 F f mch_init os_mac.c ~ + mch_init() ~ + 3 F f mch_init os_msdos.c ~ + mch_init(void) ~ + 4 F f mch_init os_riscos.c ~ + mch_init() ~ + Enter nr of choice (<CR> to abort): ~ + +You can now enter the number (in the first column) of the match that you would +like to jump to. The information in the other columns give you a good idea of +where the match is defined. + +To move between the matching tags, these commands can be used: + + :tfirst go to first match + :[count]tprevious go to [count] previous match + :[count]tnext go to [count] next match + :tlast go to last match + +If [count] is omitted then one is used. + + +GUESSING TAG NAMES + +Command line completion is a good way to avoid typing a long tag name. Just +type the first bit and press <Tab>: > + + :tag write_<Tab> + +You will get the first match. If it's not the one you want, press <Tab> until +you find the right one. + Sometimes you only know part of the name of a function. Or you have many +tags that start with the same string, but end differently. Then you can tell +Vim to use a pattern to find the tag. + Suppose you want to jump to a tag that contains "block". First type +this: > + + :tag /block + +Now use command line completion: press <Tab>. Vim will find all tags that +contain "block" and use the first match. + The "/" before a tag name tells Vim that what follows is not a literal tag +name, but a pattern. You can use all the items for search patterns here. For +example, suppose you want to select a tag that starts with "write_": > + + :tselect /^write_ + +The "^" specifies that the tag starts with "write_". Otherwise it would also +be found halfway a tag name. Similarly "$" at the end makes sure the pattern +matches until the end of a tag. + + +A TAGS BROWSER + +Since CTRL-] takes you to the definition of the identifier under the cursor, +you can use a list of identifier names as a table of contents. Here is an +example. + First create a list of identifiers (this requires Exuberant ctags): > + + ctags --c-types=f -f functions *.c + +Now start Vim without a file, and edit this file in Vim, in a vertically split +window: > + + vim + :vsplit functions + +The window contains a list of all the functions. There is some more stuff, +but you can ignore that. Do ":setlocal ts=99" to clean it up a bit. + In this window, define a mapping: > + + :nnoremap <buffer> <CR> 0ye<C-W>w:tag <C-R>"<CR> + +Move the cursor to the line that contains the function you want to go to. +Now press <Enter>. Vim will go to the other window and jump to the selected +function. + + +RELATED ITEMS + +You can set 'ignorecase' to make case in tag names be ignored. + +The 'tagbsearch' option tells if the tags file is sorted or not. The default +is to assume a sorted tags file, which makes a tags search a lot faster, but +doesn't work if the tags file isn't sorted. + +The 'taglength' option can be used to tell Vim the number of significant +characters in a tag. + +When you use the SNiFF+ program, you can use the Vim interface to it |sniff|. +SNiFF+ is a commercial program. + +Cscope is a free program. It does not only find places where an identifier is +declared, but also where it is used. See |cscope|. + +============================================================================== +*29.2* The preview window + +When you edit code that contains a function call, you need to use the correct +arguments. To know what values to pass you can look at how the function is +defined. The tags mechanism works very well for this. Preferably the +definition is displayed in another window. For this the preview window can be +used. + To open a preview window to display the function "write_char": > + + :ptag write_char + +Vim will open a window, and jumps to the tag "write_char". Then it takes you +back to the original position. Thus you can continue typing without the need +to use a CTRL-W command. + If the name of a function appears in the text, you can get its definition +in the preview window with: > + + CTRL-W } + +There is a script that automatically displays the text where the word under +the cursor was defined. See |CursorHold-example|. + +To close the preview window use this command: > + + :pclose + +To edit a specific file in the preview window, use ":pedit". This can be +useful to edit a header file, for example: > + + :pedit defs.h + +Finally, ":psearch" can be used to find a word in the current file and any +included files and display the match in the preview window. This is +especially useful when using library functions, for which you do not have a +tags file. Example: > + + :psearch popen + +This will show the "stdio.h" file in the preview window, with the function +prototype for popen(): + + FILE *popen __P((const char *, const char *)); ~ + +You can specify the height of the preview window, when it is opened, with the +'previewheight' option. + +============================================================================== +*29.3* Moving through a program + +Since a program is structured, Vim can recognize items in it. Specific +commands can be used to move around. + C programs often contain constructs like this: + + #ifdef USE_POPEN ~ + fd = popen("ls", "r") ~ + #else ~ + fd = fopen("tmp", "w") ~ + #endif ~ + +But then much longer, and possibly nested. Position the cursor on the +"#ifdef" and press %. Vim will jump to the "#else". Pressing % again takes +you to the "#endif". Another % takes you to the "#ifdef" again. + When the construct is nested, Vim will find the matching items. This is a +good way to check if you didn't forget an "#endif". + When you are somewhere inside a "#if" - "#endif", you can jump to the start +of it with: > + + [# + +If you are not after a "#if" or "#ifdef" Vim will beep. To jump forward to +the next "#else" or "#endif" use: > + + ]# + +These two commands skip any "#if" - "#endif" blocks that they encounter. +Example: + + #if defined(HAS_INC_H) ~ + a = a + inc(); ~ + # ifdef USE_THEME ~ + a += 3; ~ + # endif ~ + set_width(a); ~ + +With the cursor in the last line, "[#" moves to the first line. The "#ifdef" +- "#endif" block in the middle is skipped. + + +MOVING IN CODE BLOCKS + +In C code blocks are enclosed in {}. These can get pretty long. To move to +the start of the outer block use the "[[" command. Use "][" to find the end. +This assumes that the "{" and "}" are in the first column. + The "[{" command moves to the start of the current block. It skips over +pairs of {} at the same level. "]}" jumps to the end. + An overview: + + function(int a) + +-> { + | if (a) + | +-> { + [[ | | for (;;) --+ + | | +-> { | + | [{ | | foo(32); | --+ + | | [{ | if (bar(a)) --+ | ]} | + +-- | +-- break; | ]} | | + | } <-+ | | ][ + +-- foobar(a) | | + } <-+ | + } <-+ + +When writing C++ or Java, the outer {} block is for the class. The next level +of {} is for a method. When somewhere inside a class use "[m" to find the +previous start of a method. "]m" finds the next start of a method. + +Additionally, "[]" moves backward to the end of a function and "]]" moves +forward to the start of the next function. The end of a function is defined +by a "}" in the first column. + + int func1(void) + { + return 1; + +----------> } + | + [] | int func2(void) + | +-> { + | [[ | if (flag) + start +-- +-- return flag; + | ][ | return 2; + | +-> } + ]] | + | int func3(void) + +----------> { + return 3; + } + +Don't forget you can also use "%" to move between matching (), {} and []. +That also works when they are many lines apart. + + +MOVING IN BRACES + +The "[(" and "])" commands work similar to "[{" and "]}", except that they +work on () pairs instead of {} pairs. +> + [( +< <-------------------------------- + <------- + if (a == b && (c == d || (e > f)) && x > y) ~ + --------------> + --------------------------------> > + ]) + +MOVING IN COMMENTS + +To move back to the start of a comment use "[/". Move forward to the end of a +comment with "]/". This only works for /* - */ comments. + + +-> +-> /* + | [/ | * A comment about --+ + [/ | +-- * wonderful life. | ]/ + | */ <-+ + | + +-- foo = bar * 3; --+ + | ]/ + /* a short comment */ <-+ + +============================================================================== +*29.4* Finding global identifiers + +You are editing a C program and wonder if a variable is declared as "int" or +"unsigned". A quick way to find this is with the "[I" command. + Suppose the cursor is on the word "column". Type: > + + [I + +Vim will list the matching lines it can find. Not only in the current file, +but also in all included files (and files included in them, etc.). The result +looks like this: + + structs.h ~ + 1: 29 unsigned column; /* column number */ ~ + +The advantage over using tags or the preview window is that included files are +searched. In most cases this results in the right declaration to be found. +Also when the tags file is out of date. Also when you don't have tags for the +included files. + However, a few things must be right for "[I" to do its work. First of all, +the 'include' option must specify how a file is included. The default value +works for C and C++. For other languages you will have to change it. + + +LOCATING INCLUDED FILES + + Vim will find included files in the places specified with the 'path' +option. If a directory is missing, some include files will not be found. You +can discover this with this command: > + + :checkpath + +It will list the include files that could not be found. Also files included +by the files that could be found. An example of the output: + + --- Included files not found in path --- ~ + <io.h> ~ + vim.h --> ~ + <functions.h> ~ + <clib/exec_protos.h> ~ + +The "io.h" file is included by the current file and can't be found. "vim.h" +can be found, thus ":checkpath" goes into this file and checks what it +includes. The "functions.h" and "clib/exec_protos.h" files, included by +"vim.h" are not found. + + Note: + Vim is not a compiler. It does not recognize "#ifdef" statements. + This means every "#include" statement is used, also when it comes + after "#if NEVER". + +To fix the files that could not be found, add a directory to the 'path' +option. A good place to find out about this is the Makefile. Look out for +lines that contain "-I" items, like "-I/usr/local/X11". To add this directory +use: > + + :set path+=/usr/local/X11 + +When there are many subdirectories, you can use the "*" wildcard. Example: > + + :set path+=/usr/*/include + +This would find files in "/usr/local/include" as well as "/usr/X11/include". + +When working on a project with a whole nested tree of included files, the "**" +items is useful. This will search down in all subdirectories. Example: > + + :set path+=/projects/invent/**/include + +This will find files in the directories: + + /projects/invent/include ~ + /projects/invent/main/include ~ + /projects/invent/main/os/include ~ + etc. + +There are even more possibilities. Check out the 'path' option for info. + If you want to see which included files are actually found, use this +command: > + + :checkpath! + +You will get a (very long) list of included files, the files they include, and +so on. To shorten the list a bit, Vim shows "(Already listed)" for files that +were found before and doesn't list the included files in there again. + + +JUMPING TO A MATCH + +"[I" produces a list with only one line of text. When you want to have a +closer look at the first item, you can jump to that line with the command: > + + [<Tab> + +You can also use "[ CTRL-I", since CTRL-I is the same as pressing <Tab>. + +The list that "[I" produces has a number at the start of each line. When you +want to jump to another item than the first one, type the number first: > + + 3[<Tab> + +Will jump to the third item in the list. Remember that you can use CTRL-O to +jump back to where you started from. + + +RELATED COMMANDS + + [i only lists the first match + ]I only lists items below the cursor + ]i only lists the first item below the cursor + + +FINDING DEFINED IDENTIFIERS + +The "[I" command finds any identifier. To find only macros, defined with +"#define" use: > + + [D + +Again, this searches in included files. The 'define' option specifies what a +line looks like that defines the items for "[D". You could change it to make +it work with other languages than C or C++. + The commands related to "[D" are: + + [d only lists the first match + ]D only lists items below the cursor + ]d only lists the first item below the cursor + +============================================================================== +*29.5* Finding local identifiers + +The "[I" command searches included files. To search in the current file only, +and jump to the first place where the word under the cursor is used: > + + gD + +Hint: Goto Definition. This command is very useful to find a variable or +function that was declared locally ("static", in C terms). Example (cursor on +"counter"): + + +-> static int counter = 0; + | + | int get_counter(void) + gD | { + | ++counter; + +-- return counter; + } + +To restrict the search even further, and look only in the current function, +use this command: > + + gd + +This will go back to the start of the current function and find the first +occurrence of the word under the cursor. Actually, it searches backwards to +an empty line above a "{" in the first column. From there it searches forward +for the identifier. Example (cursor on "idx"): + + int find_entry(char *name) + { + +-> int idx; + | + gd | for (idx = 0; idx < table_len; ++idx) + | if (strcmp(table[idx].name, name) == 0) + +-- return idx; + } + +============================================================================== + +Next chapter: |usr_30.txt| Editing programs + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_30.txt b/share/vim/vim74/doc/usr_30.txt new file mode 100644 index 00000000..52f43757 --- /dev/null +++ b/share/vim/vim74/doc/usr_30.txt @@ -0,0 +1,643 @@ +*usr_30.txt* For Vim version 7.4. Last change: 2007 Nov 10 + + VIM USER MANUAL - by Bram Moolenaar + + Editing programs + + +Vim has various commands that aid in writing computer programs. Compile a +program and directly jump to reported errors. Automatically set the indent +for many languages and format comments. + +|30.1| Compiling +|30.2| Indenting C files +|30.3| Automatic indenting +|30.4| Other indenting +|30.5| Tabs and spaces +|30.6| Formatting comments + + Next chapter: |usr_31.txt| Exploiting the GUI + Previous chapter: |usr_29.txt| Moving through programs +Table of contents: |usr_toc.txt| + +============================================================================== +*30.1* Compiling + +Vim has a set of so called "quickfix" commands. They enable you to compile a +program from within Vim and then go through the errors generated and fix them +(hopefully). You can then recompile and fix any new errors that are found +until finally your program compiles without any error. + +The following command runs the program "make" (supplying it with any argument +you give) and captures the results: > + + :make {arguments} + +If errors were generated, they are captured and the editor positions you where +the first error occurred. + Take a look at an example ":make" session. (Typical :make sessions generate +far more errors and fewer stupid ones.) After typing ":make" the screen looks +like this: + + :!make | &tee /tmp/vim215953.err ~ + gcc -g -Wall -o prog main.c sub.c ~ + main.c: In function 'main': ~ + main.c:6: too many arguments to function 'do_sub' ~ + main.c: At top level: ~ + main.c:10: parse error before '}' ~ + make: *** [prog] Error 1 ~ + + 2 returned ~ + "main.c" 11L, 111C ~ + (3 of 6): too many arguments to function 'do_sub' ~ + Press ENTER or type command to continue ~ + +From this you can see that you have errors in the file "main.c". When you +press <Enter>, Vim displays the file "main.c", with the cursor positioned on +line 6, the first line with an error. You did not need to specify the file or +the line number, Vim knew where to go by looking in the error messages. + + +---------------------------------------------------+ + |int main() | + |{ | + | int i=3; | + cursor -> | do_sub("foo"); | + | ++i; | + | return (0); | + |} | + |} | + | ~ | + |(3 of 12): too many arguments to function 'do_sub' | + +---------------------------------------------------+ + +The following command goes to where the next error occurs: > + + :cnext + +Vim jumps to line 10, the last line in the file, where there is an extra '}'. + When there is not enough room, Vim will shorten the error message. To see +the whole message use: > + + :cc + +You can get an overview of all the error messages with the ":clist" command. +The output looks like this: > + + :clist +< 3 main.c: 6:too many arguments to function 'do_sub' ~ + 5 main.c: 10:parse error before '}' ~ + +Only the lines where Vim recognized a file name and line number are listed +here. It assumes those are the interesting lines and the rest is just boring +messages. However, sometimes unrecognized lines do contain something you want +to see. Output from the linker, for example, about an undefined function. +To see all the messages add a "!" to the command: > + + :clist! +< 1 gcc -g -Wall -o prog main.c sub.c ~ + 2 main.c: In function 'main': ~ + 3 main.c:6: too many arguments to function 'do_sub' ~ + 4 main.c: At top level: ~ + 5 main.c:10: parse error before '}' ~ + 6 make: *** [prog] Error 1 ~ + +Vim will highlight the current error. To go back to the previous error, use: +> + :cprevious + +Other commands to move around in the error list: + + :cfirst to first error + :clast to last error + :cc 3 to error nr 3 + + +USING ANOTHER COMPILER + +The name of the program to run when the ":make" command is executed is defined +by the 'makeprg' option. Usually this is set to "make", but Visual C++ users +should set this to "nmake" by executing the following command: > + + :set makeprg=nmake + +You can also include arguments in this option. Special characters need to +be escaped with a backslash. Example: > + + :set makeprg=nmake\ -f\ project.mak + +You can include special Vim keywords in the command specification. The % +character expands to the name of the current file. So if you execute the +command: > + :set makeprg=make\ % + +When you are editing main.c, then ":make" executes the following command: > + + make main.c + +This is not too useful, so you will refine the command a little and use the :r +(root) modifier: > + + :set makeprg=make\ %:r.o + +Now the command executed is as follows: > + + make main.o + +More about these modifiers here: |filename-modifiers|. + + +OLD ERROR LISTS + +Suppose you ":make" a program. There is a warning message in one file and an +error message in another. You fix the error and use ":make" again to check if +it was really fixed. Now you want to look at the warning message. It doesn't +show up in the last error list, since the file with the warning wasn't +compiled again. You can go back to the previous error list with: > + + :colder + +Then use ":clist" and ":cc {nr}" to jump to the place with the warning. + To go forward to the next error list: > + + :cnewer + +Vim remembers ten error lists. + + +SWITCHING COMPILERS + +You have to tell Vim what format the error messages are that your compiler +produces. This is done with the 'errorformat' option. The syntax of this +option is quite complicated and it can be made to fit almost any compiler. +You can find the explanation here: |errorformat|. + +You might be using various different compilers. Setting the 'makeprg' option, +and especially the 'errorformat' each time is not easy. Vim offers a simple +method for this. For example, to switch to using the Microsoft Visual C++ +compiler: > + + :compiler msvc + +This will find the Vim script for the "msvc" compiler and set the appropriate +options. + You can write your own compiler files. See |write-compiler-plugin|. + + +OUTPUT REDIRECTION + +The ":make" command redirects the output of the executed program to an error +file. How this works depends on various things, such as the 'shell'. If your +":make" command doesn't capture the output, check the 'makeef' and +'shellpipe' options. The 'shellquote' and 'shellxquote' options might also +matter. + +In case you can't get ":make" to redirect the file for you, an alternative is +to compile the program in another window and redirect the output into a file. +Then have Vim read this file with: > + + :cfile {filename} + +Jumping to errors will work like with the ":make" command. + +============================================================================== +*30.2* Indenting C style text + +A program is much easier to understand when the lines have been properly +indented. Vim offers various ways to make this less work. For C or C style +programs like Java or C++, set the 'cindent' option. Vim knows a lot about C +programs and will try very hard to automatically set the indent for you. Set +the 'shiftwidth' option to the amount of spaces you want for a deeper level. +Four spaces will work fine. One ":set" command will do it: > + + :set cindent shiftwidth=4 + +With this option enabled, when you type something such as "if (x)", the next +line will automatically be indented an additional level. + + if (flag) + Automatic indent ---> do_the_work(); + Automatic unindent <-- if (other_flag) { + Automatic indent ---> do_file(); + keep indent do_some_more(); + Automatic unindent <-- } + +When you type something in curly braces ({}), the text will be indented at the +start and unindented at the end. The unindenting will happen after typing the +'}', since Vim can't guess what you are going to type. + +One side effect of automatic indentation is that it helps you catch errors in +your code early. When you type a } to finish a function, only to find that +the automatic indentation gives it more indent than what you expected, there +is probably a } missing. Use the "%" command to find out which { matches the +} you typed. + A missing ) and ; also cause extra indent. Thus if you get more white +space than you would expect, check the preceding lines. + +When you have code that is badly formatted, or you inserted and deleted lines, +you need to re-indent the lines. The "=" operator does this. The simplest +form is: > + + == + +This indents the current line. Like with all operators, there are three ways +to use it. In Visual mode "=" indents the selected lines. A useful text +object is "a{". This selects the current {} block. Thus, to re-indent the +code block the cursor is in: > + + =a{ + +I you have really badly indented code, you can re-indent the whole file with: +> + gg=G + +However, don't do this in files that have been carefully indented manually. +The automatic indenting does a good job, but in some situations you might want +to overrule it. + + +SETTING INDENT STYLE + +Different people have different styles of indentation. By default Vim does a +pretty good job of indenting in a way that 90% of programmers do. There are +different styles, however; so if you want to, you can customize the +indentation style with the 'cinoptions' option. + By default 'cinoptions' is empty and Vim uses the default style. You can +add various items where you want something different. For example, to make +curly braces be placed like this: + + if (flag) ~ + { ~ + i = 8; ~ + j = 0; ~ + } ~ + +Use this command: > + + :set cinoptions+={2 + +There are many of these items. See |cinoptions-values|. + +============================================================================== +*30.3* Automatic indenting + +You don't want to switch on the 'cindent' option manually every time you edit +a C file. This is how you make it work automatically: > + + :filetype indent on + +Actually, this does a lot more than switching on 'cindent' for C files. First +of all, it enables detecting the type of a file. That's the same as what is +used for syntax highlighting. + When the filetype is known, Vim will search for an indent file for this +type of file. The Vim distribution includes a number of these for various +programming languages. This indent file will then prepare for automatic +indenting specifically for this file. + +If you don't like the automatic indenting, you can switch it off again: > + + :filetype indent off + +If you don't like the indenting for one specific type of file, this is how you +avoid it. Create a file with just this one line: > + + :let b:did_indent = 1 + +Now you need to write this in a file with a specific name: + + {directory}/indent/{filetype}.vim + +The {filetype} is the name of the file type, such as "cpp" or "java". You can +see the exact name that Vim detected with this command: > + + :set filetype + +In this file the output is: + + filetype=help ~ + +Thus you would use "help" for {filetype}. + For the {directory} part you need to use your runtime directory. Look at +the output of this command: > + + set runtimepath + +Now use the first item, the name before the first comma. Thus if the output +looks like this: + + runtimepath=~/.vim,/usr/local/share/vim/vim60/runtime,~/.vim/after ~ + +You use "~/.vim" for {directory}. Then the resulting file name is: + + ~/.vim/indent/help.vim ~ + +Instead of switching the indenting off, you could write your own indent file. +How to do that is explained here: |indent-expression|. + +============================================================================== +*30.4* Other indenting + +The most simple form of automatic indenting is with the 'autoindent' option. +It uses the indent from the previous line. A bit smarter is the 'smartindent' +option. This is useful for languages where no indent file is available. +'smartindent' is not as smart as 'cindent', but smarter than 'autoindent'. + With 'smartindent' set, an extra level of indentation is added for each { +and removed for each }. An extra level of indentation will also be added for +any of the words in the 'cinwords' option. Lines that begin with # are +treated specially: all indentation is removed. This is done so that +preprocessor directives will all start in column 1. The indentation is +restored for the next line. + + +CORRECTING INDENTS + +When you are using 'autoindent' or 'smartindent' to get the indent of the +previous line, there will be many times when you need to add or remove one +'shiftwidth' worth of indent. A quick way to do this is using the CTRL-D and +CTRL-T commands in Insert mode. + For example, you are typing a shell script that is supposed to look like +this: + + if test -n a; then ~ + echo a ~ + echo "-------" ~ + fi ~ + +Start off by setting these options: > + + :set autoindent shiftwidth=3 + +You start by typing the first line, <Enter> and the start of the second line: + + if test -n a; then ~ + echo ~ + +Now you see that you need an extra indent. Type CTRL-T. The result: + + if test -n a; then ~ + echo ~ + +The CTRL-T command, in Insert mode, adds one 'shiftwidth' to the indent, no +matter where in the line you are. + You continue typing the second line, <Enter> and the third line. This time +the indent is OK. Then <Enter> and the last line. Now you have this: + + if test -n a; then ~ + echo a ~ + echo "-------" ~ + fi ~ + +To remove the superfluous indent in the last line press CTRL-D. This deletes +one 'shiftwidth' worth of indent, no matter where you are in the line. + When you are in Normal mode, you can use the ">>" and "<<" commands to +shift lines. ">" and "<" are operators, thus you have the usual three ways to +specify the lines you want to indent. A useful combination is: > + + >i{ + +This adds one indent to the current block of lines, inside {}. The { and } +lines themselves are left unmodified. ">a{" includes them. In this example +the cursor is on "printf": + + original text after ">i{" after ">a{" + + if (flag) if (flag) if (flag) ~ + { { { ~ + printf("yes"); printf("yes"); printf("yes"); ~ + flag = 0; flag = 0; flag = 0; ~ + } } } ~ + +============================================================================== +*30.5* Tabs and spaces + +'tabstop' is set to eight by default. Although you can change it, you quickly +run into trouble later. Other programs won't know what tabstop value you +used. They probably use the default value of eight, and your text suddenly +looks very different. Also, most printers use a fixed tabstop value of eight. +Thus it's best to keep 'tabstop' alone. (If you edit a file which was written +with a different tabstop setting, see |25.3| for how to fix that.) + For indenting lines in a program, using a multiple of eight spaces makes +you quickly run into the right border of the window. Using a single space +doesn't provide enough visual difference. Many people prefer to use four +spaces, a good compromise. + Since a <Tab> is eight spaces and you want to use an indent of four spaces, +you can't use a <Tab> character to make your indent. There are two ways to +handle this: + +1. Use a mix of <Tab> and space characters. Since a <Tab> takes the place of + eight spaces, you have fewer characters in your file. Inserting a <Tab> + is quicker than eight spaces. Backspacing works faster as well. + +2. Use spaces only. This avoids the trouble with programs that use a + different tabstop value. + +Fortunately, Vim supports both methods quite well. + + +SPACES AND TABS + +If you are using a combination of tabs and spaces, you just edit normally. +The Vim defaults do a fine job of handling things. + You can make life a little easier by setting the 'softtabstop' option. +This option tells Vim to make the <Tab> key look and feel as if tabs were set +at the value of 'softtabstop', but actually use a combination of tabs and +spaces. + After you execute the following command, every time you press the <Tab> key +the cursor moves to the next 4-column boundary: > + + :set softtabstop=4 + +When you start in the first column and press <Tab>, you get 4 spaces inserted +in your text. The second time, Vim takes out the 4 spaces and puts in a <Tab> +(thus taking you to column 8). Thus Vim uses as many <Tab>s as possible, and +then fills up with spaces. + When backspacing it works the other way around. A <BS> will always delete +the amount specified with 'softtabstop'. Then <Tab>s are used as many as +possible and spaces to fill the gap. + The following shows what happens pressing <Tab> a few times, and then using +<BS>. A "." stands for a space and "------->" for a <Tab>. + + type result ~ + <Tab> .... + <Tab><Tab> -------> + <Tab><Tab><Tab> ------->.... + <Tab><Tab><Tab><BS> -------> + <Tab><Tab><Tab><BS><BS> .... + +An alternative is to use the 'smarttab' option. When it's set, Vim uses +'shiftwidth' for a <Tab> typed in the indent of a line, and a real <Tab> when +typed after the first non-blank character. However, <BS> doesn't work like +with 'softtabstop'. + + +JUST SPACES + +If you want absolutely no tabs in your file, you can set the 'expandtab' +option: > + + :set expandtab + +When this option is set, the <Tab> key inserts a series of spaces. Thus you +get the same amount of white space as if a <Tab> character was inserted, but +there isn't a real <Tab> character in your file. + The backspace key will delete each space by itself. Thus after typing one +<Tab> you have to press the <BS> key up to eight times to undo it. If you are +in the indent, pressing CTRL-D will be a lot quicker. + + +CHANGING TABS IN SPACES (AND BACK) + +Setting 'expandtab' does not affect any existing tabs. In other words, any +tabs in the document remain tabs. If you want to convert tabs to spaces, use +the ":retab" command. Use these commands: > + + :set expandtab + :%retab + +Now Vim will have changed all indents to use spaces instead of tabs. However, +all tabs that come after a non-blank character are kept. If you want these to +be converted as well, add a !: > + + :%retab! + +This is a little bit dangerous, because it can also change tabs inside a +string. To check if these exist, you could use this: > + + /"[^"\t]*\t[^"]*" + +It's recommended not to use hard tabs inside a string. Replace them with +"\t" to avoid trouble. + +The other way around works just as well: > + + :set noexpandtab + :%retab! + +============================================================================== +*30.6* Formatting comments + +One of the great things about Vim is that it understands comments. You can +ask Vim to format a comment and it will do the right thing. + Suppose, for example, that you have the following comment: + + /* ~ + * This is a test ~ + * of the text formatting. ~ + */ ~ + +You then ask Vim to format it by positioning the cursor at the start of the +comment and type: > + + gq]/ + +"gq" is the operator to format text. "]/" is the motion that takes you to the +end of a comment. The result is: + + /* ~ + * This is a test of the text formatting. ~ + */ ~ + +Notice that Vim properly handled the beginning of each line. + An alternative is to select the text that is to be formatted in Visual mode +and type "gq". + +To add a new line to the comment, position the cursor on the middle line and +press "o". The result looks like this: + + /* ~ + * This is a test of the text formatting. ~ + * ~ + */ ~ + +Vim has automatically inserted a star and a space for you. Now you can type +the comment text. When it gets longer than 'textwidth', Vim will break the +line. Again, the star is inserted automatically: + + /* ~ + * This is a test of the text formatting. ~ + * Typing a lot of text here will make Vim ~ + * break ~ + */ ~ + +For this to work some flags must be present in 'formatoptions': + + r insert the star when typing <Enter> in Insert mode + o insert the star when using "o" or "O" in Normal mode + c break comment text according to 'textwidth' + +See |fo-table| for more flags. + + +DEFINING A COMMENT + +The 'comments' option defines what a comment looks like. Vim distinguishes +between a single-line comment and a comment that has a different start, end +and middle part. + Many single-line comments start with a specific character. In C++ // is +used, in Makefiles #, in Vim scripts ". For example, to make Vim understand +C++ comments: > + + :set comments=:// + +The colon separates the flags of an item from the text by which the comment is +recognized. The general form of an item in 'comments' is: + + {flags}:{text} + +The {flags} part can be empty, as in this case. + Several of these items can be concatenated, separated by commas. This +allows recognizing different types of comments at the same time. For example, +let's edit an e-mail message. When replying, the text that others wrote is +preceded with ">" and "!" characters. This command would work: > + + :set comments=n:>,n:! + +There are two items, one for comments starting with ">" and one for comments +that start with "!". Both use the flag "n". This means that these comments +nest. Thus a line starting with ">" may have another comment after the ">". +This allows formatting a message like this: + + > ! Did you see that site? ~ + > ! It looks really great. ~ + > I don't like it. The ~ + > colors are terrible. ~ + What is the URL of that ~ + site? ~ + +Try setting 'textwidth' to a different value, e.g., 80, and format the text by +Visually selecting it and typing "gq". The result is: + + > ! Did you see that site? It looks really great. ~ + > I don't like it. The colors are terrible. ~ + What is the URL of that site? ~ + +You will notice that Vim did not move text from one type of comment to +another. The "I" in the second line would have fit at the end of the first +line, but since that line starts with "> !" and the second line with ">", Vim +knows that this is a different kind of comment. + + +A THREE PART COMMENT + +A C comment starts with "/*", has "*" in the middle and "*/" at the end. The +entry in 'comments' for this looks like this: > + + :set comments=s1:/*,mb:*,ex:*/ + +The start is defined with "s1:/*". The "s" indicates the start of a +three-piece comment. The colon separates the flags from the text by which the +comment is recognized: "/*". There is one flag: "1". This tells Vim that the +middle part has an offset of one space. + The middle part "mb:*" starts with "m", which indicates it is a middle +part. The "b" flag means that a blank must follow the text. Otherwise Vim +would consider text like "*pointer" also to be the middle of a comment. + The end part "ex:*/" has the "e" for identification. The "x" flag has a +special meaning. It means that after Vim automatically inserted a star, +typing / will remove the extra space. + +For more details see |format-comments|. + +============================================================================== + +Next chapter: |usr_31.txt| Exploiting the GUI + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_31.txt b/share/vim/vim74/doc/usr_31.txt new file mode 100644 index 00000000..550564e1 --- /dev/null +++ b/share/vim/vim74/doc/usr_31.txt @@ -0,0 +1,272 @@ +*usr_31.txt* For Vim version 7.4. Last change: 2007 May 08 + + VIM USER MANUAL - by Bram Moolenaar + + Exploiting the GUI + + +Vim works well in a terminal, but the GUI has a few extra items. A file +browser can be used for commands that use a file. A dialog to make a choice +between alternatives. Use keyboard shortcuts to access menu items quickly. + +|31.1| The file browser +|31.2| Confirmation +|31.3| Menu shortcuts +|31.4| Vim window position and size +|31.5| Various + + Next chapter: |usr_32.txt| The undo tree + Previous chapter: |usr_30.txt| Editing programs +Table of contents: |usr_toc.txt| + +============================================================================== +*31.1* The file browser + +When using the File/Open... menu you get a file browser. This makes it easier +to find the file you want to edit. But what if you want to split a window to +edit another file? There is no menu entry for this. You could first use +Window/Split and then File/Open..., but that's more work. + Since you are typing most commands in Vim, opening the file browser with a +typed command is possible as well. To make the split command use the file +browser, prepend "browse": > + + :browse split + +Select a file and then the ":split" command will be executed with it. If you +cancel the file dialog nothing happens, the window isn't split. + You can also specify a file name argument. This is used to tell the file +browser where to start. Example: > + + :browse split /etc + +The file browser will pop up, starting in the directory "/etc". + +The ":browse" command can be prepended to just about any command that opens a +file. + If no directory is specified, Vim will decide where to start the file +browser. By default it uses the same directory as the last time. Thus when +you used ":browse split" and selected a file in "/usr/local/share", the next +time you use a ":browse" it will start in "/usr/local/share" again. + This can be changed with the 'browsedir' option. It can have one of three +values: + + last Use the last directory browsed (default) + buffer Use the same directory as the current buffer + current use the current directory + +For example, when you are in the directory "/usr", editing the file +"/usr/local/share/readme", then the command: > + + :set browsedir=buffer + :browse edit + +Will start the browser in "/usr/local/share". Alternatively: > + + :set browsedir=current + :browse edit + +Will start the browser in "/usr". + + Note: + To avoid using the mouse, most file browsers offer using key presses + to navigate. Since this is different for every system, it is not + explained here. Vim uses a standard browser when possible, your + system documentation should contain an explanation on the keyboard + shortcuts somewhere. + +When you are not using the GUI version, you could use the file explorer window +to select files like in a file browser. However, this doesn't work for the +":browse" command. See |netrw-browse|. + +============================================================================== +*31.2* Confirmation + +Vim protects you from accidentally overwriting a file and other ways to lose +changes. If you do something that might be a bad thing to do, Vim produces an +error message and suggests appending ! if you really want to do it. + To avoid retyping the command with the !, you can make Vim give you a +dialog. You can then press "OK" or "Cancel" to tell Vim what you want. + For example, you are editing a file and made changes to it. You start +editing another file with: > + + :confirm edit foo.txt + +Vim will pop up a dialog that looks something like this: + + +-----------------------------------+ + | | + | ? Save changes to "bar.txt"? | + | | + | YES NO CANCEL | + +-----------------------------------+ + +Now make your choice. If you do want to save the changes, select "YES". If +you want to lose the changes for ever: "NO". If you forgot what you were +doing and want to check what really changed use "CANCEL". You will be back in +the same file, with the changes still there. + +Just like ":browse", the ":confirm" command can be prepended to most commands +that edit another file. They can also be combined: > + + :confirm browse edit + +This will produce a dialog when the current buffer was changed. Then it will +pop up a file browser to select the file to edit. + + Note: + In the dialog you can use the keyboard to select the choice. + Typically the <Tab> key and the cursor keys change the choice. + Pressing <Enter> selects the choice. This depends on the system + though. + +When you are not using the GUI, the ":confirm" command works as well. Instead +of popping up a dialog, Vim will print the message at the bottom of the Vim +window and ask you to press a key to make a choice. > + + :confirm edit main.c +< Save changes to "Untitled"? ~ + [Y]es, (N)o, (C)ancel: ~ + +You can now press the single key for the choice. You don't have to press +<Enter>, unlike other typing on the command line. + +============================================================================== +*31.3* Menu shortcuts + +The keyboard is used for all Vim commands. The menus provide a simple way to +select commands, without knowing what they are called. But you have to move +your hand from the keyboard and grab the mouse. + Menus can often be selected with keys as well. This depends on your +system, but most often it works this way. Use the <Alt> key in combination +with the underlined letter of a menu. For example, <A-w> (<Alt> and w) pops +up the Window menu. + In the Window menu, the "split" item has the p underlined. To select it, +let go of the <Alt> key and press p. + +After the first selection of a menu with the <Alt> key, you can use the cursor +keys to move through the menus. <Right> selects a submenu and <left> closes +it. <Esc> also closes a menu. <Enter> selects a menu item. + +There is a conflict between using the <Alt> key to select menu items, and +using <Alt> key combinations for mappings. The 'winaltkeys' option tells Vim +what it should do with the <Alt> key. + The default value "menu" is the smart choice: If the key combination is a +menu shortcut it can't be mapped. All other keys are available for mapping. + The value "no" doesn't use any <Alt> keys for the menus. Thus you must use +the mouse for the menus, and all <Alt> keys can be mapped. + The value "yes" means that Vim will use any <Alt> keys for the menus. Some +<Alt> key combinations may also do other things than selecting a menu. + +============================================================================== +*31.4* Vim window position and size + +To see the current Vim window position on the screen use: > + + :winpos + +This will only work in the GUI. The output may look like this: + + Window position: X 272, Y 103 ~ + +The position is given in screen pixels. Now you can use the numbers to move +Vim somewhere else. For example, to move it to the left a hundred pixels: > + + :winpos 172 103 +< + Note: + There may be a small offset between the reported position and where + the window moves. This is because of the border around the window. + This is added by the window manager. + +You can use this command in your startup script to position the window at a +specific position. + +The size of the Vim window is computed in characters. Thus this depends on +the size of the font being used. You can see the current size with this +command: > + + :set lines columns + +To change the size set the 'lines' and/or 'columns' options to a new value: > + + :set lines=50 + :set columns=80 + +Obtaining the size works in a terminal just like in the GUI. Setting the size +is not possible in most terminals. + +You can start the X-Windows version of gvim with an argument to specify the +size and position of the window: > + + gvim -geometry {width}x{height}+{x_offset}+{y_offset} + +{width} and {height} are in characters, {x_offset} and {y_offset} are in +pixels. Example: > + + gvim -geometry 80x25+100+300 + +============================================================================== +*31.5* Various + +You can use gvim to edit an e-mail message. In your e-mail program you must +select gvim to be the editor for messages. When you try that, you will +see that it doesn't work: The mail program thinks that editing is finished, +while gvim is still running! + What happens is that gvim disconnects from the shell it was started in. +That is fine when you start gvim in a terminal, so that you can do other work +in that terminal. But when you really want to wait for gvim to finish, you +must prevent it from disconnecting. The "-f" argument does this: > + + gvim -f file.txt + +The "-f" stands for foreground. Now Vim will block the shell it was started +in until you finish editing and exit. + + +DELAYED START OF THE GUI + +On Unix it's possible to first start Vim in a terminal. That's useful if you +do various tasks in the same shell. If you are editing a file and decide you +want to use the GUI after all, you can start it with: > + + :gui + +Vim will open the GUI window and no longer use the terminal. You can continue +using the terminal for something else. The "-f" argument is used here to run +the GUI in the foreground. You can also use ":gui -f". + + +THE GVIM STARTUP FILE + +When gvim starts, it reads the gvimrc file. That's similar to the vimrc file +used when starting Vim. The gvimrc file can be used for settings and commands +that are only to be used when the GUI is going to be started. For example, +you can set the 'lines' option to set a different window size: > + + :set lines=55 + +You don't want to do this in a terminal, since its size is fixed (except for +an xterm that supports resizing). + The gvimrc file is searched for in the same locations as the vimrc file. +Normally its name is "~/.gvimrc" for Unix and "$VIM/_gvimrc" for MS-Windows. +The $MYGVIMRC environment variable is set to it, thus you can use this command +to edit the file, if you have one: > + + :edit $MYGVIMRC +< + If for some reason you don't want to use the normal gvimrc file, you can +specify another one with the "-U" argument: > + + gvim -U thisrc ... + +That allows starting gvim for different kinds of editing. You could set +another font size, for example. + To completely skip reading a gvimrc file: > + + gvim -U NONE ... + +============================================================================== + +Next chapter: |usr_32.txt| The undo tree + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_32.txt b/share/vim/vim74/doc/usr_32.txt new file mode 100644 index 00000000..fd58f2d5 --- /dev/null +++ b/share/vim/vim74/doc/usr_32.txt @@ -0,0 +1,180 @@ +*usr_32.txt* For Vim version 7.4. Last change: 2010 Jul 20 + + VIM USER MANUAL - by Bram Moolenaar + + The undo tree + + +Vim provides multi-level undo. If you undo a few changes and then make a new +change you create a branch in the undo tree. This text is about moving +through the branches. + +|32.1| Undo up to a file write +|32.2| Numbering changes +|32.3| Jumping around the tree +|32.4| Time travelling + + Next chapter: |usr_40.txt| Make new commands + Previous chapter: |usr_31.txt| Exploiting the GUI +Table of contents: |usr_toc.txt| + +============================================================================== +*32.1* Undo up to a file write + +Sometimes you make several changes, and then discover you want to go back to +when you have last written the file. You can do that with this command: > + + :earlier 1f + +The "f" stands for "file" here. + +You can repeat this command to go further back in the past. Or use a count +different from 1 to go back faster. + +If you go back too far, go forward again with: > + + :later 1f + +Note that these commands really work in time sequence. This matters if you +made changes after undoing some changes. It's explained in the next section. + +Also note that we are talking about text writes here. For writing the undo +information in a file see |undo-persistence|. + +============================================================================== +*32.2* Numbering changes + +In section |02.5| we only discussed one line of undo/redo. But it is also +possible to branch off. This happens when you undo a few changes and then +make a new change. The new changes become a branch in the undo tree. + +Let's start with the text "one". The first change to make is to append +" too". And then move to the first 'o' and change it into 'w'. We then have +two changes, numbered 1 and 2, and three states of the text: + + one ~ + | + change 1 + | + one too ~ + | + change 2 + | + one two ~ + +If we now undo one change, back to "one too", and change "one" to "me" we +create a branch in the undo tree: + + one ~ + | + change 1 + | + one too ~ + / \ + change 2 change 3 + | | + one two me too ~ + +You can now use the |u| command to undo. If you do this twice you get to +"one". Use |CTRL-R| to redo, and you will go to "one too". One more |CTRL-R| +takes you to "me too". Thus undo and redo go up and down in the tree, using +the branch that was last used. + +What matters here is the order in which the changes are made. Undo and redo +are not considered changes in this context. After each change you have a new +state of the text. + +Note that only the changes are numbered, the text shown in the tree above has +no identifier. They are mostly referred to by the number of the change above +it. But sometimes by the number of one of the changes below it, especially +when moving up in the tree, so that you know which change was just undone. + +============================================================================== +*32.3* Jumping around the tree + +So how do you get to "one two" now? You can use this command: > + + :undo 2 + +The text is now "one two", you are below change 2. You can use the |:undo| +command to jump to below any change in the tree. + +Now make another change: change "one" to "not": + + one ~ + | + change 1 + | + one too ~ + / \ + change 2 change 3 + | | + one two me too ~ + | + change 4 + | + not two ~ + +Now you change your mind and want to go back to "me too". Use the |g-| +command. This moves back in time. Thus it doesn't walk the tree upwards or +downwards, but goes to the change made before. + +You can repeat |g-| and you will see the text change: + me too ~ + one two ~ + one too ~ + one ~ + +Use |g+| to move forward in time: + one ~ + one too ~ + one two ~ + me too ~ + not two ~ + +Using |:undo| is useful if you know what change you want to jump to. |g-| and +|g+| are useful if you don't know exactly what the change number is. + +You can type a count before |g-| and |g+| to repeat them. + +============================================================================== +*32.4* Time travelling + +When you have been working on text for a while the tree grows to become big. +Then you may want to go to the text of some minutes ago. + +To see what branches there are in the undo tree use this command: > + + :undolist +< number changes time ~ + 3 2 16 seconds ago + 4 3 5 seconds ago + +Here you can see the number of the leaves in each branch and when the change +was made. Assuming we are below change 4, at "not two", you can go back ten +seconds with this command: > + + :earlier 10s + +Depending on how much time you took for the changes you end up at a certain +position in the tree. The |:earlier| command argument can be "m" for minutes, +"h" for hours and "d" for days. To go all the way back use a big number: > + + :earlier 100d + +To travel forward in time again use the |:later| command: > + + :later 1m + +The arguments are "s", "m" and "h", just like with |:earlier|. + +If you want even more details, or want to manipulate the information, you can +use the |undotree()| function. To see what it returns: > + + :echo undotree() + +============================================================================== + +Next chapter: |usr_40.txt| Make new commands + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_40.txt b/share/vim/vim74/doc/usr_40.txt new file mode 100644 index 00000000..b1108a5c --- /dev/null +++ b/share/vim/vim74/doc/usr_40.txt @@ -0,0 +1,657 @@ +*usr_40.txt* For Vim version 7.4. Last change: 2013 Aug 05 + + VIM USER MANUAL - by Bram Moolenaar + + Make new commands + + +Vim is an extensible editor. You can take a sequence of commands you use +often and turn it into a new command. Or redefine an existing command. +Autocommands make it possible to execute commands automatically. + +|40.1| Key mapping +|40.2| Defining command-line commands +|40.3| Autocommands + + Next chapter: |usr_41.txt| Write a Vim script + Previous chapter: |usr_32.txt| The undo tree +Table of contents: |usr_toc.txt| + +============================================================================== +*40.1* Key mapping + +A simple mapping was explained in section |05.3|. The principle is that one +sequence of key strokes is translated into another sequence of key strokes. +This is a simple, yet powerful mechanism. + The simplest form is that one key is mapped to a sequence of keys. Since +the function keys, except <F1>, have no predefined meaning in Vim, these are +good choices to map. Example: > + + :map <F2> GoDate: <Esc>:read !date<CR>kJ + +This shows how three modes are used. After going to the last line with "G", +the "o" command opens a new line and starts Insert mode. The text "Date: " is +inserted and <Esc> takes you out of insert mode. + Notice the use of special keys inside <>. This is called angle bracket +notation. You type these as separate characters, not by pressing the key +itself. This makes the mappings better readable and you can copy and paste +the text without problems. + The ":" character takes Vim to the command line. The ":read !date" command +reads the output from the "date" command and appends it below the current +line. The <CR> is required to execute the ":read" command. + At this point of execution the text looks like this: + + Date: ~ + Fri Jun 15 12:54:34 CEST 2001 ~ + +Now "kJ" moves the cursor up and joins the lines together. + To decide which key or keys you use for mapping, see |map-which-keys|. + + +MAPPING AND MODES + +The ":map" command defines remapping for keys in Normal mode. You can also +define mappings for other modes. For example, ":imap" applies to Insert mode. +You can use it to insert a date below the cursor: > + + :imap <F2> <CR>Date: <Esc>:read !date<CR>kJ + +It looks a lot like the mapping for <F2> in Normal mode, only the start is +different. The <F2> mapping for Normal mode is still there. Thus you can map +the same key differently for each mode. + Notice that, although this mapping starts in Insert mode, it ends in Normal +mode. If you want it to continue in Insert mode, append an "a" to the +mapping. + +Here is an overview of map commands and in which mode they work: + + :map Normal, Visual and Operator-pending + :vmap Visual + :nmap Normal + :omap Operator-pending + :map! Insert and Command-line + :imap Insert + :cmap Command-line + +Operator-pending mode is when you typed an operator character, such as "d" or +"y", and you are expected to type the motion command or a text object. Thus +when you type "dw", the "w" is entered in operator-pending mode. + +Suppose that you want to define <F7> so that the command d<F7> deletes a C +program block (text enclosed in curly braces, {}). Similarly y<F7> would yank +the program block into the unnamed register. Therefore, what you need to do +is to define <F7> to select the current program block. You can do this with +the following command: > + + :omap <F7> a{ + +This causes <F7> to perform a select block "a{" in operator-pending mode, just +like you typed it. This mapping is useful if typing a { on your keyboard is a +bit difficult. + + +LISTING MAPPINGS + +To see the currently defined mappings, use ":map" without arguments. Or one +of the variants that include the mode in which they work. The output could +look like this: + + _g :call MyGrep(1)<CR> ~ + v <F2> :s/^/> /<CR>:noh<CR>`` ~ + n <F2> :.,$s/^/> /<CR>:noh<CR>`` ~ + <xHome> <Home> + <xEnd> <End> + + +The first column of the list shows in which mode the mapping is effective. +This is "n" for Normal mode, "i" for Insert mode, etc. A blank is used for a +mapping defined with ":map", thus effective in both Normal and Visual mode. + One useful purpose of listing the mapping is to check if special keys in <> +form have been recognized (this only works when color is supported). For +example, when <Esc> is displayed in color, it stands for the escape character. +When it has the same color as the other text, it is five characters. + + +REMAPPING + +The result of a mapping is inspected for other mappings in it. For example, +the mappings for <F2> above could be shortened to: > + + :map <F2> G<F3> + :imap <F2> <Esc><F3> + :map <F3> oDate: <Esc>:read !date<CR>kJ + +For Normal mode <F2> is mapped to go to the last line, and then behave like +<F3> was pressed. In Insert mode <F2> stops Insert mode with <Esc> and then +also uses <F3>. Then <F3> is mapped to do the actual work. + +Suppose you hardly ever use Ex mode, and want to use the "Q" command to format +text (this was so in old versions of Vim). This mapping will do it: > + + :map Q gq + +But, in rare cases you need to use Ex mode anyway. Let's map "gQ" to Q, so +that you can still go to Ex mode: > + + :map gQ Q + +What happens now is that when you type "gQ" it is mapped to "Q". So far so +good. But then "Q" is mapped to "gq", thus typing "gQ" results in "gq", and +you don't get to Ex mode at all. + To avoid keys to be mapped again, use the ":noremap" command: > + + :noremap gQ Q + +Now Vim knows that the "Q" is not to be inspected for mappings that apply to +it. There is a similar command for every mode: + + :noremap Normal, Visual and Operator-pending + :vnoremap Visual + :nnoremap Normal + :onoremap Operator-pending + :noremap! Insert and Command-line + :inoremap Insert + :cnoremap Command-line + + +RECURSIVE MAPPING + +When a mapping triggers itself, it will run forever. This can be used to +repeat an action an unlimited number of times. + For example, you have a list of files that contain a version number in the +first line. You edit these files with "vim *.txt". You are now editing the +first file. Define this mapping: > + + :map ,, :s/5.1/5.2/<CR>:wnext<CR>,, + +Now you type ",,". This triggers the mapping. It replaces "5.1" with "5.2" +in the first line. Then it does a ":wnext" to write the file and edit the +next one. The mapping ends in ",,". This triggers the same mapping again, +thus doing the substitution, etc. + This continues until there is an error. In this case it could be a file +where the substitute command doesn't find a match for "5.1". You can then +make a change to insert "5.1" and continue by typing ",," again. Or the +":wnext" fails, because you are in the last file in the list. + When a mapping runs into an error halfway, the rest of the mapping is +discarded. CTRL-C interrupts the mapping (CTRL-Break on MS-Windows). + + +DELETE A MAPPING + +To remove a mapping use the ":unmap" command. Again, the mode the unmapping +applies to depends on the command used: + + :unmap Normal, Visual and Operator-pending + :vunmap Visual + :nunmap Normal + :ounmap Operator-pending + :unmap! Insert and Command-line + :iunmap Insert + :cunmap Command-line + +There is a trick to define a mapping that works in Normal and Operator-pending +mode, but not in Visual mode. First define it for all three modes, then +delete it for Visual mode: > + + :map <C-A> /---><CR> + :vunmap <C-A> + +Notice that the five characters "<C-A>" stand for the single key CTRL-A. + +To remove all mappings use the |:mapclear| command. You can guess the +variations for different modes by now. Be careful with this command, it can't +be undone. + + +SPECIAL CHARACTERS + +The ":map" command can be followed by another command. A | character +separates the two commands. This also means that a | character can't be used +inside a map command. To include one, use <Bar> (five characters). Example: +> + :map <F8> :write <Bar> !checkin %<CR> + +The same problem applies to the ":unmap" command, with the addition that you +have to watch out for trailing white space. These two commands are different: +> + :unmap a | unmap b + :unmap a| unmap b + +The first command tries to unmap "a ", with a trailing space. + +When using a space inside a mapping, use <Space> (seven characters): > + + :map <Space> W + +This makes the spacebar move a blank-separated word forward. + +It is not possible to put a comment directly after a mapping, because the " +character is considered to be part of the mapping. You can use |", this +starts a new, empty command with a comment. Example: > + + :map <Space> W| " Use spacebar to move forward a word + + +MAPPINGS AND ABBREVIATIONS + +Abbreviations are a lot like Insert mode mappings. The arguments are handled +in the same way. The main difference is the way they are triggered. An +abbreviation is triggered by typing a non-word character after the word. A +mapping is triggered when typing the last character. + Another difference is that the characters you type for an abbreviation are +inserted in the text while you type them. When the abbreviation is triggered +these characters are deleted and replaced by what the abbreviation produces. +When typing the characters for a mapping, nothing is inserted until you type +the last character that triggers it. If the 'showcmd' option is set, the +typed characters are displayed in the last line of the Vim window. + An exception is when a mapping is ambiguous. Suppose you have done two +mappings: > + + :imap aa foo + :imap aaa bar + +Now, when you type "aa", Vim doesn't know if it should apply the first or the +second mapping. It waits for another character to be typed. If it is an "a", +the second mapping is applied and results in "bar". If it is a space, for +example, the first mapping is applied, resulting in "foo", and then the space +is inserted. + + +ADDITIONALLY... + +The <script> keyword can be used to make a mapping local to a script. See +|:map-<script>|. + +The <buffer> keyword can be used to make a mapping local to a specific buffer. +See |:map-<buffer>| + +The <unique> keyword can be used to make defining a new mapping fail when it +already exists. Otherwise a new mapping simply overwrites the old one. See +|:map-<unique>|. + +To make a key do nothing, map it to <Nop> (five characters). This will make +the <F7> key do nothing at all: > + + :map <F7> <Nop>| map! <F7> <Nop> + +There must be no space after <Nop>. + +============================================================================== +*40.2* Defining command-line commands + +The Vim editor enables you to define your own commands. You execute these +commands just like any other Command-line mode command. + To define a command, use the ":command" command, as follows: > + + :command DeleteFirst 1delete + +Now when you execute the command ":DeleteFirst" Vim executes ":1delete", which +deletes the first line. + + Note: + User-defined commands must start with a capital letter. You cannot + use ":X", ":Next" and ":Print". The underscore cannot be used! You + can use digits, but this is discouraged. + +To list the user-defined commands, execute the following command: > + + :command + +Just like with the builtin commands, the user defined commands can be +abbreviated. You need to type just enough to distinguish the command from +another. Command line completion can be used to get the full name. + + +NUMBER OF ARGUMENTS + +User-defined commands can take a series of arguments. The number of arguments +must be specified by the -nargs option. For instance, the example +:DeleteFirst command takes no arguments, so you could have defined it as +follows: > + + :command -nargs=0 DeleteFirst 1delete + +However, because zero arguments is the default, you do not need to add +"-nargs=0". The other values of -nargs are as follows: + + -nargs=0 No arguments + -nargs=1 One argument + -nargs=* Any number of arguments + -nargs=? Zero or one argument + -nargs=+ One or more arguments + + +USING THE ARGUMENTS + +Inside the command definition, the arguments are represented by the +<args> keyword. For example: > + + :command -nargs=+ Say :echo "<args>" + +Now when you type > + + :Say Hello World + +Vim echoes "Hello World". However, if you add a double quote, it won't work. +For example: > + + :Say he said "hello" + +To get special characters turned into a string, properly escaped to use as an +expression, use "<q-args>": > + + :command -nargs=+ Say :echo <q-args> + +Now the above ":Say" command will result in this to be executed: > + + :echo "he said \"hello\"" + +The <f-args> keyword contains the same information as the <args> keyword, +except in a format suitable for use as function call arguments. For example: +> + :command -nargs=* DoIt :call AFunction(<f-args>) + :DoIt a b c + +Executes the following command: > + + :call AFunction("a", "b", "c") + + +LINE RANGE + +Some commands take a range as their argument. To tell Vim that you are +defining such a command, you need to specify a -range option. The values for +this option are as follows: + + -range Range is allowed; default is the current line. + -range=% Range is allowed; default is the whole file. + -range={count} Range is allowed; the last number in it is used as a + single number whose default is {count}. + +When a range is specified, the keywords <line1> and <line2> get the values of +the first and last line in the range. For example, the following command +defines the SaveIt command, which writes out the specified range to the file +"save_file": > + + :command -range=% SaveIt :<line1>,<line2>write! save_file + + +OTHER OPTIONS + +Some of the other options and keywords are as follows: + + -count={number} The command can take a count whose default is + {number}. The resulting count can be used + through the <count> keyword. + -bang You can use a !. If present, using <bang> will + result in a !. + -register You can specify a register. (The default is + the unnamed register.) + The register specification is available as + <reg> (a.k.a. <register>). + -complete={type} Type of command-line completion used. See + |:command-completion| for the list of possible + values. + -bar The command can be followed by | and another + command, or " and a comment. + -buffer The command is only available for the current + buffer. + +Finally, you have the <lt> keyword. It stands for the character <. Use this +to escape the special meaning of the <> items mentioned. + + +REDEFINING AND DELETING + +To redefine the same command use the ! argument: > + + :command -nargs=+ Say :echo "<args>" + :command! -nargs=+ Say :echo <q-args> + +To delete a user command use ":delcommand". It takes a single argument, which +is the name of the command. Example: > + + :delcommand SaveIt + +To delete all the user commands: > + + :comclear + +Careful, this can't be undone! + +More details about all this in the reference manual: |user-commands|. + +============================================================================== +*40.3* Autocommands + +An autocommand is a command that is executed automatically in response to some +event, such as a file being read or written or a buffer change. Through the +use of autocommands you can train Vim to edit compressed files, for example. +That is used in the |gzip| plugin. + Autocommands are very powerful. Use them with care and they will help you +avoid typing many commands. Use them carelessly and they will cause a lot of +trouble. + +Suppose you want to replace a datestamp on the end of a file every time it is +written. First you define a function: > + + :function DateInsert() + : $delete + : read !date + :endfunction + +You want this function to be called each time, just before a buffer is written +to a file. This will make that happen: > + + :autocmd BufWritePre * call DateInsert() + +"BufWritePre" is the event for which this autocommand is triggered: Just +before (pre) writing a buffer to a file. The "*" is a pattern to match with +the file name. In this case it matches all files. + With this command enabled, when you do a ":write", Vim checks for any +matching BufWritePre autocommands and executes them, and then it +performs the ":write". + The general form of the :autocmd command is as follows: > + + :autocmd [group] {events} {file_pattern} [nested] {command} + +The [group] name is optional. It is used in managing and calling the commands +(more on this later). The {events} parameter is a list of events (comma +separated) that trigger the command. + {file_pattern} is a filename, usually with wildcards. For example, using +"*.txt" makes the autocommand be used for all files whose name end in ".txt". +The optional [nested] flag allows for nesting of autocommands (see below), and +finally, {command} is the command to be executed. + + +EVENTS + +One of the most useful events is BufReadPost. It is triggered after a new +file is being edited. It is commonly used to set option values. For example, +you know that "*.gsm" files are GNU assembly language. To get the syntax file +right, define this autocommand: > + + :autocmd BufReadPost *.gsm set filetype=asm + +If Vim is able to detect the type of file, it will set the 'filetype' option +for you. This triggers the Filetype event. Use this to do something when a +certain type of file is edited. For example, to load a list of abbreviations +for text files: > + + :autocmd Filetype text source ~/.vim/abbrevs.vim + +When starting to edit a new file, you could make Vim insert a skeleton: > + + :autocmd BufNewFile *.[ch] 0read ~/skeletons/skel.c + +See |autocmd-events| for a complete list of events. + + +PATTERNS + +The {file_pattern} argument can actually be a comma-separated list of file +patterns. For example: "*.c,*.h" matches files ending in ".c" and ".h". + The usual file wildcards can be used. Here is a summary of the most often +used ones: + + * Match any character any number of times + ? Match any character once + [abc] Match the character a, b or c + . Matches a dot + a{b,c} Matches "ab" and "ac" + +When the pattern includes a slash (/) Vim will compare directory names. +Without the slash only the last part of a file name is used. For example, +"*.txt" matches "/home/biep/readme.txt". The pattern "/home/biep/*" would +also match it. But "home/foo/*.txt" wouldn't. + When including a slash, Vim matches the pattern against both the full path +of the file ("/home/biep/readme.txt") and the relative path (e.g., +"biep/readme.txt"). + + Note: + When working on a system that uses a backslash as file separator, such + as MS-Windows, you still use forward slashes in autocommands. This + makes it easier to write the pattern, since a backslash has a special + meaning. It also makes the autocommands portable. + + +DELETING + +To delete an autocommand, use the same command as what it was defined with, +but leave out the {command} at the end and use a !. Example: > + + :autocmd! FileWritePre * + +This will delete all autocommands for the "FileWritePre" event that use the +"*" pattern. + + +LISTING + +To list all the currently defined autocommands, use this: > + + :autocmd + +The list can be very long, especially when filetype detection is used. To +list only part of the commands, specify the group, event and/or pattern. For +example, to list all BufNewFile autocommands: > + + :autocmd BufNewFile + +To list all autocommands for the pattern "*.c": > + + :autocmd * *.c + +Using "*" for the event will list all the events. To list all autocommands +for the cprograms group: > + + :autocmd cprograms + + +GROUPS + +The {group} item, used when defining an autocommand, groups related autocommands +together. This can be used to delete all the autocommands in a certain group, +for example. + When defining several autocommands for a certain group, use the ":augroup" +command. For example, let's define autocommands for C programs: > + + :augroup cprograms + : autocmd BufReadPost *.c,*.h :set sw=4 sts=4 + : autocmd BufReadPost *.cpp :set sw=3 sts=3 + :augroup END + +This will do the same as: > + + :autocmd cprograms BufReadPost *.c,*.h :set sw=4 sts=4 + :autocmd cprograms BufReadPost *.cpp :set sw=3 sts=3 + +To delete all autocommands in the "cprograms" group: > + + :autocmd! cprograms + + +NESTING + +Generally, commands executed as the result of an autocommand event will not +trigger any new events. If you read a file in response to a FileChangedShell +event, it will not trigger the autocommands that would set the syntax, for +example. To make the events triggered, add the "nested" argument: > + + :autocmd FileChangedShell * nested edit + + +EXECUTING AUTOCOMMANDS + +It is possible to trigger an autocommand by pretending an event has occurred. +This is useful to have one autocommand trigger another one. Example: > + + :autocmd BufReadPost *.new execute "doautocmd BufReadPost " . expand("<afile>:r") + +This defines an autocommand that is triggered when a new file has been edited. +The file name must end in ".new". The ":execute" command uses expression +evaluation to form a new command and execute it. When editing the file +"tryout.c.new" the executed command will be: > + + :doautocmd BufReadPost tryout.c + +The expand() function takes the "<afile>" argument, which stands for the file +name the autocommand was executed for, and takes the root of the file name +with ":r". + +":doautocmd" executes on the current buffer. The ":doautoall" command works +like "doautocmd" except it executes on all the buffers. + + +USING NORMAL MODE COMMANDS + +The commands executed by an autocommand are Command-line commands. If you +want to use a Normal mode command, the ":normal" command can be used. +Example: > + + :autocmd BufReadPost *.log normal G + +This will make the cursor jump to the last line of *.log files when you start +to edit it. + Using the ":normal" command is a bit tricky. First of all, make sure its +argument is a complete command, including all the arguments. When you use "i" +to go to Insert mode, there must also be a <Esc> to leave Insert mode again. +If you use a "/" to start a search pattern, there must be a <CR> to execute +it. + The ":normal" command uses all the text after it as commands. Thus there +can be no | and another command following. To work around this, put the +":normal" command inside an ":execute" command. This also makes it possible +to pass unprintable characters in a convenient way. Example: > + + :autocmd BufReadPost *.chg execute "normal ONew entry:\<Esc>" | + \ 1read !date + +This also shows the use of a backslash to break a long command into more +lines. This can be used in Vim scripts (not at the command line). + +When you want the autocommand do something complicated, which involves jumping +around in the file and then returning to the original position, you may want +to restore the view on the file. See |restore-position| for an example. + + +IGNORING EVENTS + +At times, you will not want to trigger an autocommand. The 'eventignore' +option contains a list of events that will be totally ignored. For example, +the following causes events for entering and leaving a window to be ignored: > + + :set eventignore=WinEnter,WinLeave + +To ignore all events, use the following command: > + + :set eventignore=all + +To set it back to the normal behavior, make 'eventignore' empty: > + + :set eventignore= + +============================================================================== + +Next chapter: |usr_41.txt| Write a Vim script + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_41.txt b/share/vim/vim74/doc/usr_41.txt new file mode 100644 index 00000000..8db127fd --- /dev/null +++ b/share/vim/vim74/doc/usr_41.txt @@ -0,0 +1,2449 @@ +*usr_41.txt* For Vim version 7.4. Last change: 2013 Feb 20 + + VIM USER MANUAL - by Bram Moolenaar + + Write a Vim script + + +The Vim script language is used for the startup vimrc file, syntax files, and +many other things. This chapter explains the items that can be used in a Vim +script. There are a lot of them, thus this is a long chapter. + +|41.1| Introduction +|41.2| Variables +|41.3| Expressions +|41.4| Conditionals +|41.5| Executing an expression +|41.6| Using functions +|41.7| Defining a function +|41.8| Lists and Dictionaries +|41.9| Exceptions +|41.10| Various remarks +|41.11| Writing a plugin +|41.12| Writing a filetype plugin +|41.13| Writing a compiler plugin +|41.14| Writing a plugin that loads quickly +|41.15| Writing library scripts +|41.16| Distributing Vim scripts + + Next chapter: |usr_42.txt| Add new menus + Previous chapter: |usr_40.txt| Make new commands +Table of contents: |usr_toc.txt| + +============================================================================== +*41.1* Introduction *vim-script-intro* *script* + +Your first experience with Vim scripts is the vimrc file. Vim reads it when +it starts up and executes the commands. You can set options to values you +prefer. And you can use any colon command in it (commands that start with a +":"; these are sometimes referred to as Ex commands or command-line commands). + Syntax files are also Vim scripts. As are files that set options for a +specific file type. A complicated macro can be defined by a separate Vim +script file. You can think of other uses yourself. + +Let's start with a simple example: > + + :let i = 1 + :while i < 5 + : echo "count is" i + : let i += 1 + :endwhile +< + Note: + The ":" characters are not really needed here. You only need to use + them when you type a command. In a Vim script file they can be left + out. We will use them here anyway to make clear these are colon + commands and make them stand out from Normal mode commands. + Note: + You can try out the examples by yanking the lines from the text here + and executing them with :@" + +The output of the example code is: + + count is 1 ~ + count is 2 ~ + count is 3 ~ + count is 4 ~ + +In the first line the ":let" command assigns a value to a variable. The +generic form is: > + + :let {variable} = {expression} + +In this case the variable name is "i" and the expression is a simple value, +the number one. + The ":while" command starts a loop. The generic form is: > + + :while {condition} + : {statements} + :endwhile + +The statements until the matching ":endwhile" are executed for as long as the +condition is true. The condition used here is the expression "i < 5". This +is true when the variable i is smaller than five. + Note: + If you happen to write a while loop that keeps on running, you can + interrupt it by pressing CTRL-C (CTRL-Break on MS-Windows). + +The ":echo" command prints its arguments. In this case the string "count is" +and the value of the variable i. Since i is one, this will print: + + count is 1 ~ + +Then there is the ":let i += 1" command. This does the same thing as +":let i = i + 1". This adds one to the variable i and assigns the new value +to the same variable. + +The example was given to explain the commands, but would you really want to +make such a loop it can be written much more compact: > + + :for i in range(1, 4) + : echo "count is" i + :endfor + +We won't explain how |:for| and |range()| work until later. Follow the links +if you are impatient. + + +THREE KINDS OF NUMBERS + +Numbers can be decimal, hexadecimal or octal. A hexadecimal number starts +with "0x" or "0X". For example "0x1f" is decimal 31. An octal number starts +with a zero. "017" is decimal 15. Careful: don't put a zero before a decimal +number, it will be interpreted as an octal number! + The ":echo" command always prints decimal numbers. Example: > + + :echo 0x7f 036 +< 127 30 ~ + +A number is made negative with a minus sign. This also works for hexadecimal +and octal numbers. A minus sign is also used for subtraction. Compare this +with the previous example: > + + :echo 0x7f -036 +< 97 ~ + +White space in an expression is ignored. However, it's recommended to use it +for separating items, to make the expression easier to read. For example, to +avoid the confusion with a negative number above, put a space between the +minus sign and the following number: > + + :echo 0x7f - 036 + +============================================================================== +*41.2* Variables + +A variable name consists of ASCII letters, digits and the underscore. It +cannot start with a digit. Valid variable names are: + + counter + _aap3 + very_long_variable_name_with_underscores + FuncLength + LENGTH + +Invalid names are "foo+bar" and "6var". + These variables are global. To see a list of currently defined variables +use this command: > + + :let + +You can use global variables everywhere. This also means that when the +variable "count" is used in one script file, it might also be used in another +file. This leads to confusion at least, and real problems at worst. To avoid +this, you can use a variable local to a script file by prepending "s:". For +example, one script contains this code: > + + :let s:count = 1 + :while s:count < 5 + : source other.vim + : let s:count += 1 + :endwhile + +Since "s:count" is local to this script, you can be sure that sourcing the +"other.vim" script will not change this variable. If "other.vim" also uses an +"s:count" variable, it will be a different copy, local to that script. More +about script-local variables here: |script-variable|. + +There are more kinds of variables, see |internal-variables|. The most often +used ones are: + + b:name variable local to a buffer + w:name variable local to a window + g:name global variable (also in a function) + v:name variable predefined by Vim + + +DELETING VARIABLES + +Variables take up memory and show up in the output of the ":let" command. To +delete a variable use the ":unlet" command. Example: > + + :unlet s:count + +This deletes the script-local variable "s:count" to free up the memory it +uses. If you are not sure if the variable exists, and don't want an error +message when it doesn't, append !: > + + :unlet! s:count + +When a script finishes, the local variables used there will not be +automatically freed. The next time the script executes, it can still use the +old value. Example: > + + :if !exists("s:call_count") + : let s:call_count = 0 + :endif + :let s:call_count = s:call_count + 1 + :echo "called" s:call_count "times" + +The "exists()" function checks if a variable has already been defined. Its +argument is the name of the variable you want to check. Not the variable +itself! If you would do this: > + + :if !exists(s:call_count) + +Then the value of s:call_count will be used as the name of the variable that +exists() checks. That's not what you want. + The exclamation mark ! negates a value. When the value was true, it +becomes false. When it was false, it becomes true. You can read it as "not". +Thus "if !exists()" can be read as "if not exists()". + What Vim calls true is anything that is not zero. Zero is false. + Note: + Vim automatically converts a string to a number when it is looking for + a number. When using a string that doesn't start with a digit the + resulting number is zero. Thus look out for this: > + :if "true" +< The "true" will be interpreted as a zero, thus as false! + + +STRING VARIABLES AND CONSTANTS + +So far only numbers were used for the variable value. Strings can be used as +well. Numbers and strings are the basic types of variables that Vim supports. +The type is dynamic, it is set each time when assigning a value to the +variable with ":let". More about types in |41.8|. + To assign a string value to a variable, you need to use a string constant. +There are two types of these. First the string in double quotes: > + + :let name = "peter" + :echo name +< peter ~ + +If you want to include a double quote inside the string, put a backslash in +front of it: > + + :let name = "\"peter\"" + :echo name +< "peter" ~ + +To avoid the need for a backslash, you can use a string in single quotes: > + + :let name = '"peter"' + :echo name +< "peter" ~ + +Inside a single-quote string all the characters are as they are. Only the +single quote itself is special: you need to use two to get one. A backslash +is taken literally, thus you can't use it to change the meaning of the +character after it. + In double-quote strings it is possible to use special characters. Here are +a few useful ones: + + \t <Tab> + \n <NL>, line break + \r <CR>, <Enter> + \e <Esc> + \b <BS>, backspace + \" " + \\ \, backslash + \<Esc> <Esc> + \<C-W> CTRL-W + +The last two are just examples. The "\<name>" form can be used to include +the special key "name". + See |expr-quote| for the full list of special items in a string. + +============================================================================== +*41.3* Expressions + +Vim has a rich, yet simple way to handle expressions. You can read the +definition here: |expression-syntax|. Here we will show the most common +items. + The numbers, strings and variables mentioned above are expressions by +themselves. Thus everywhere an expression is expected, you can use a number, +string or variable. Other basic items in an expression are: + + $NAME environment variable + &name option + @r register + +Examples: > + + :echo "The value of 'tabstop' is" &ts + :echo "Your home directory is" $HOME + :if @a > 5 + +The &name form can be used to save an option value, set it to a new value, +do something and restore the old value. Example: > + + :let save_ic = &ic + :set noic + :/The Start/,$delete + :let &ic = save_ic + +This makes sure the "The Start" pattern is used with the 'ignorecase' option +off. Still, it keeps the value that the user had set. (Another way to do +this would be to add "\C" to the pattern, see |/\C|.) + + +MATHEMATICS + +It becomes more interesting if we combine these basic items. Let's start with +mathematics on numbers: + + a + b add + a - b subtract + a * b multiply + a / b divide + a % b modulo + +The usual precedence is used. Example: > + + :echo 10 + 5 * 2 +< 20 ~ + +Grouping is done with parentheses. No surprises here. Example: > + + :echo (10 + 5) * 2 +< 30 ~ + +Strings can be concatenated with ".". Example: > + + :echo "foo" . "bar" +< foobar ~ + +When the ":echo" command gets multiple arguments, it separates them with a +space. In the example the argument is a single expression, thus no space is +inserted. + +Borrowed from the C language is the conditional expression: + + a ? b : c + +If "a" evaluates to true "b" is used, otherwise "c" is used. Example: > + + :let i = 4 + :echo i > 5 ? "i is big" : "i is small" +< i is small ~ + +The three parts of the constructs are always evaluated first, thus you could +see it work as: + + (a) ? (b) : (c) + +============================================================================== +*41.4* Conditionals + +The ":if" commands executes the following statements, until the matching +":endif", only when a condition is met. The generic form is: + + :if {condition} + {statements} + :endif + +Only when the expression {condition} evaluates to true (non-zero) will the +{statements} be executed. These must still be valid commands. If they +contain garbage, Vim won't be able to find the ":endif". + You can also use ":else". The generic form for this is: + + :if {condition} + {statements} + :else + {statements} + :endif + +The second {statements} is only executed if the first one isn't. + Finally, there is ":elseif": + + :if {condition} + {statements} + :elseif {condition} + {statements} + :endif + +This works just like using ":else" and then "if", but without the need for an +extra ":endif". + A useful example for your vimrc file is checking the 'term' option and +doing something depending upon its value: > + + :if &term == "xterm" + : " Do stuff for xterm + :elseif &term == "vt100" + : " Do stuff for a vt100 terminal + :else + : " Do something for other terminals + :endif + + +LOGIC OPERATIONS + +We already used some of them in the examples. These are the most often used +ones: + + a == b equal to + a != b not equal to + a > b greater than + a >= b greater than or equal to + a < b less than + a <= b less than or equal to + +The result is one if the condition is met and zero otherwise. An example: > + + :if v:version >= 700 + : echo "congratulations" + :else + : echo "you are using an old version, upgrade!" + :endif + +Here "v:version" is a variable defined by Vim, which has the value of the Vim +version. 600 is for version 6.0. Version 6.1 has the value 601. This is +very useful to write a script that works with multiple versions of Vim. +|v:version| + +The logic operators work both for numbers and strings. When comparing two +strings, the mathematical difference is used. This compares byte values, +which may not be right for some languages. + When comparing a string with a number, the string is first converted to a +number. This is a bit tricky, because when a string doesn't look like a +number, the number zero is used. Example: > + + :if 0 == "one" + : echo "yes" + :endif + +This will echo "yes", because "one" doesn't look like a number, thus it is +converted to the number zero. + +For strings there are two more items: + + a =~ b matches with + a !~ b does not match with + +The left item "a" is used as a string. The right item "b" is used as a +pattern, like what's used for searching. Example: > + + :if str =~ " " + : echo "str contains a space" + :endif + :if str !~ '\.$' + : echo "str does not end in a full stop" + :endif + +Notice the use of a single-quote string for the pattern. This is useful, +because backslashes would need to be doubled in a double-quote string and +patterns tend to contain many backslashes. + +The 'ignorecase' option is used when comparing strings. When you don't want +that, append "#" to match case and "?" to ignore case. Thus "==?" compares +two strings to be equal while ignoring case. And "!~#" checks if a pattern +doesn't match, also checking the case of letters. For the full table see +|expr-==|. + + +MORE LOOPING + +The ":while" command was already mentioned. Two more statements can be used +in between the ":while" and the ":endwhile": + + :continue Jump back to the start of the while loop; the + loop continues. + :break Jump forward to the ":endwhile"; the loop is + discontinued. + +Example: > + + :while counter < 40 + : call do_something() + : if skip_flag + : continue + : endif + : if finished_flag + : break + : endif + : sleep 50m + :endwhile + +The ":sleep" command makes Vim take a nap. The "50m" specifies fifty +milliseconds. Another example is ":sleep 4", which sleeps for four seconds. + +Even more looping can be done with the ":for" command, see below in |41.8|. + +============================================================================== +*41.5* Executing an expression + +So far the commands in the script were executed by Vim directly. The +":execute" command allows executing the result of an expression. This is a +very powerful way to build commands and execute them. + An example is to jump to a tag, which is contained in a variable: > + + :execute "tag " . tag_name + +The "." is used to concatenate the string "tag " with the value of variable +"tag_name". Suppose "tag_name" has the value "get_cmd", then the command that +will be executed is: > + + :tag get_cmd + +The ":execute" command can only execute colon commands. The ":normal" command +executes Normal mode commands. However, its argument is not an expression but +the literal command characters. Example: > + + :normal gg=G + +This jumps to the first line and formats all lines with the "=" operator. + To make ":normal" work with an expression, combine ":execute" with it. +Example: > + + :execute "normal " . normal_commands + +The variable "normal_commands" must contain the Normal mode commands. + Make sure that the argument for ":normal" is a complete command. Otherwise +Vim will run into the end of the argument and abort the command. For example, +if you start Insert mode, you must leave Insert mode as well. This works: > + + :execute "normal Inew text \<Esc>" + +This inserts "new text " in the current line. Notice the use of the special +key "\<Esc>". This avoids having to enter a real <Esc> character in your +script. + +If you don't want to execute a string but evaluate it to get its expression +value, you can use the eval() function: > + + :let optname = "path" + :let optval = eval('&' . optname) + +A "&" character is prepended to "path", thus the argument to eval() is +"&path". The result will then be the value of the 'path' option. + The same thing can be done with: > + :exe 'let optval = &' . optname + +============================================================================== +*41.6* Using functions + +Vim defines many functions and provides a large amount of functionality that +way. A few examples will be given in this section. You can find the whole +list here: |functions|. + +A function is called with the ":call" command. The parameters are passed in +between parentheses separated by commas. Example: > + + :call search("Date: ", "W") + +This calls the search() function, with arguments "Date: " and "W". The +search() function uses its first argument as a search pattern and the second +one as flags. The "W" flag means the search doesn't wrap around the end of +the file. + +A function can be called in an expression. Example: > + + :let line = getline(".") + :let repl = substitute(line, '\a', "*", "g") + :call setline(".", repl) + +The getline() function obtains a line from the current buffer. Its argument +is a specification of the line number. In this case "." is used, which means +the line where the cursor is. + The substitute() function does something similar to the ":substitute" +command. The first argument is the string on which to perform the +substitution. The second argument is the pattern, the third the replacement +string. Finally, the last arguments are the flags. + The setline() function sets the line, specified by the first argument, to a +new string, the second argument. In this example the line under the cursor is +replaced with the result of the substitute(). Thus the effect of the three +statements is equal to: > + + :substitute/\a/*/g + +Using the functions becomes more interesting when you do more work before and +after the substitute() call. + + +FUNCTIONS *function-list* + +There are many functions. We will mention them here, grouped by what they are +used for. You can find an alphabetical list here: |functions|. Use CTRL-] on +the function name to jump to detailed help on it. + +String manipulation: *string-functions* + nr2char() get a character by its ASCII value + char2nr() get ASCII value of a character + str2nr() convert a string to a Number + str2float() convert a string to a Float + printf() format a string according to % items + escape() escape characters in a string with a '\' + shellescape() escape a string for use with a shell command + fnameescape() escape a file name for use with a Vim command + tr() translate characters from one set to another + strtrans() translate a string to make it printable + tolower() turn a string to lowercase + toupper() turn a string to uppercase + match() position where a pattern matches in a string + matchend() position where a pattern match ends in a string + matchstr() match of a pattern in a string + matchlist() like matchstr() and also return submatches + stridx() first index of a short string in a long string + strridx() last index of a short string in a long string + strlen() length of a string + substitute() substitute a pattern match with a string + submatch() get a specific match in ":s" and substitute() + strpart() get part of a string + expand() expand special keywords + iconv() convert text from one encoding to another + byteidx() byte index of a character in a string + repeat() repeat a string multiple times + eval() evaluate a string expression + +List manipulation: *list-functions* + get() get an item without error for wrong index + len() number of items in a List + empty() check if List is empty + insert() insert an item somewhere in a List + add() append an item to a List + extend() append a List to a List + remove() remove one or more items from a List + copy() make a shallow copy of a List + deepcopy() make a full copy of a List + filter() remove selected items from a List + map() change each List item + sort() sort a List + reverse() reverse the order of a List + split() split a String into a List + join() join List items into a String + range() return a List with a sequence of numbers + string() String representation of a List + call() call a function with List as arguments + index() index of a value in a List + max() maximum value in a List + min() minimum value in a List + count() count number of times a value appears in a List + repeat() repeat a List multiple times + +Dictionary manipulation: *dict-functions* + get() get an entry without an error for a wrong key + len() number of entries in a Dictionary + has_key() check whether a key appears in a Dictionary + empty() check if Dictionary is empty + remove() remove an entry from a Dictionary + extend() add entries from one Dictionary to another + filter() remove selected entries from a Dictionary + map() change each Dictionary entry + keys() get List of Dictionary keys + values() get List of Dictionary values + items() get List of Dictionary key-value pairs + copy() make a shallow copy of a Dictionary + deepcopy() make a full copy of a Dictionary + string() String representation of a Dictionary + max() maximum value in a Dictionary + min() minimum value in a Dictionary + count() count number of times a value appears + +Floating point computation: *float-functions* + float2nr() convert Float to Number + abs() absolute value (also works for Number) + round() round off + ceil() round up + floor() round down + trunc() remove value after decimal point + log10() logarithm to base 10 + pow() value of x to the exponent y + sqrt() square root + sin() sine + cos() cosine + tan() tangent + asin() arc sine + acos() arc cosine + atan() arc tangent + atan2() arc tangent + sinh() hyperbolic sine + cosh() hyperbolic cosine + tanh() hyperbolic tangent + +Other computation: *bitwise-function* + and() bitwise AND + invert() bitwise invert + or() bitwise OR + xor() bitwise XOR + +Variables: *var-functions* + type() type of a variable + islocked() check if a variable is locked + function() get a Funcref for a function name + getbufvar() get a variable value from a specific buffer + setbufvar() set a variable in a specific buffer + getwinvar() get a variable from specific window + gettabvar() get a variable from specific tab page + gettabwinvar() get a variable from specific window & tab page + setwinvar() set a variable in a specific window + settabvar() set a variable in a specific tab page + settabwinvar() set a variable in a specific window & tab page + garbagecollect() possibly free memory + +Cursor and mark position: *cursor-functions* *mark-functions* + col() column number of the cursor or a mark + virtcol() screen column of the cursor or a mark + line() line number of the cursor or mark + wincol() window column number of the cursor + winline() window line number of the cursor + cursor() position the cursor at a line/column + getpos() get position of cursor, mark, etc. + setpos() set position of cursor, mark, etc. + byte2line() get line number at a specific byte count + line2byte() byte count at a specific line + diff_filler() get the number of filler lines above a line + +Working with text in the current buffer: *text-functions* + getline() get a line or list of lines from the buffer + setline() replace a line in the buffer + append() append line or list of lines in the buffer + indent() indent of a specific line + cindent() indent according to C indenting + lispindent() indent according to Lisp indenting + nextnonblank() find next non-blank line + prevnonblank() find previous non-blank line + search() find a match for a pattern + searchpos() find a match for a pattern + searchpair() find the other end of a start/skip/end + searchpairpos() find the other end of a start/skip/end + searchdecl() search for the declaration of a name + + *system-functions* *file-functions* +System functions and manipulation of files: + glob() expand wildcards + globpath() expand wildcards in a number of directories + findfile() find a file in a list of directories + finddir() find a directory in a list of directories + resolve() find out where a shortcut points to + fnamemodify() modify a file name + pathshorten() shorten directory names in a path + simplify() simplify a path without changing its meaning + executable() check if an executable program exists + filereadable() check if a file can be read + filewritable() check if a file can be written to + getfperm() get the permissions of a file + getftype() get the kind of a file + isdirectory() check if a directory exists + getfsize() get the size of a file + getcwd() get the current working directory + haslocaldir() check if current window used |:lcd| + tempname() get the name of a temporary file + mkdir() create a new directory + delete() delete a file + rename() rename a file + system() get the result of a shell command + hostname() name of the system + readfile() read a file into a List of lines + writefile() write a List of lines into a file + +Date and Time: *date-functions* *time-functions* + getftime() get last modification time of a file + localtime() get current time in seconds + strftime() convert time to a string + reltime() get the current or elapsed time accurately + reltimestr() convert reltime() result to a string + + *buffer-functions* *window-functions* *arg-functions* +Buffers, windows and the argument list: + argc() number of entries in the argument list + argidx() current position in the argument list + argv() get one entry from the argument list + bufexists() check if a buffer exists + buflisted() check if a buffer exists and is listed + bufloaded() check if a buffer exists and is loaded + bufname() get the name of a specific buffer + bufnr() get the buffer number of a specific buffer + tabpagebuflist() return List of buffers in a tab page + tabpagenr() get the number of a tab page + tabpagewinnr() like winnr() for a specified tab page + winnr() get the window number for the current window + bufwinnr() get the window number of a specific buffer + winbufnr() get the buffer number of a specific window + getbufline() get a list of lines from the specified buffer + +Command line: *command-line-functions* + getcmdline() get the current command line + getcmdpos() get position of the cursor in the command line + setcmdpos() set position of the cursor in the command line + getcmdtype() return the current command-line type + +Quickfix and location lists: *quickfix-functions* + getqflist() list of quickfix errors + setqflist() modify a quickfix list + getloclist() list of location list items + setloclist() modify a location list + +Insert mode completion: *completion-functions* + complete() set found matches + complete_add() add to found matches + complete_check() check if completion should be aborted + pumvisible() check if the popup menu is displayed + +Folding: *folding-functions* + foldclosed() check for a closed fold at a specific line + foldclosedend() like foldclosed() but return the last line + foldlevel() check for the fold level at a specific line + foldtext() generate the line displayed for a closed fold + foldtextresult() get the text displayed for a closed fold + +Syntax and highlighting: *syntax-functions* *highlighting-functions* + clearmatches() clear all matches defined by |matchadd()| and + the |:match| commands + getmatches() get all matches defined by |matchadd()| and + the |:match| commands + hlexists() check if a highlight group exists + hlID() get ID of a highlight group + synID() get syntax ID at a specific position + synIDattr() get a specific attribute of a syntax ID + synIDtrans() get translated syntax ID + synstack() get list of syntax IDs at a specific position + synconcealed() get info about concealing + diff_hlID() get highlight ID for diff mode at a position + matchadd() define a pattern to highlight (a "match") + matcharg() get info about |:match| arguments + matchdelete() delete a match defined by |matchadd()| or a + |:match| command + setmatches() restore a list of matches saved by + |getmatches()| + +Spelling: *spell-functions* + spellbadword() locate badly spelled word at or after cursor + spellsuggest() return suggested spelling corrections + soundfold() return the sound-a-like equivalent of a word + +History: *history-functions* + histadd() add an item to a history + histdel() delete an item from a history + histget() get an item from a history + histnr() get highest index of a history list + +Interactive: *interactive-functions* + browse() put up a file requester + browsedir() put up a directory requester + confirm() let the user make a choice + getchar() get a character from the user + getcharmod() get modifiers for the last typed character + feedkeys() put characters in the typeahead queue + input() get a line from the user + inputlist() let the user pick an entry from a list + inputsecret() get a line from the user without showing it + inputdialog() get a line from the user in a dialog + inputsave() save and clear typeahead + inputrestore() restore typeahead + +GUI: *gui-functions* + getfontname() get name of current font being used + getwinposx() X position of the GUI Vim window + getwinposy() Y position of the GUI Vim window + +Vim server: *server-functions* + serverlist() return the list of server names + remote_send() send command characters to a Vim server + remote_expr() evaluate an expression in a Vim server + server2client() send a reply to a client of a Vim server + remote_peek() check if there is a reply from a Vim server + remote_read() read a reply from a Vim server + foreground() move the Vim window to the foreground + remote_foreground() move the Vim server window to the foreground + +Window size and position: *window-size-functions* + winheight() get height of a specific window + winwidth() get width of a specific window + winrestcmd() return command to restore window sizes + winsaveview() get view of current window + winrestview() restore saved view of current window + +Mappings: *mapping-functions* + hasmapto() check if a mapping exists + mapcheck() check if a matching mapping exists + maparg() get rhs of a mapping + wildmenumode() check if the wildmode is active + +Various: *various-functions* + mode() get current editing mode + visualmode() last visual mode used + exists() check if a variable, function, etc. exists + has() check if a feature is supported in Vim + changenr() return number of most recent change + cscope_connection() check if a cscope connection exists + did_filetype() check if a FileType autocommand was used + eventhandler() check if invoked by an event handler + getpid() get process ID of Vim + + libcall() call a function in an external library + libcallnr() idem, returning a number + + getreg() get contents of a register + getregtype() get type of a register + setreg() set contents and type of a register + + taglist() get list of matching tags + tagfiles() get a list of tags files + + mzeval() evaluate |MzScheme| expression + +============================================================================== +*41.7* Defining a function + +Vim enables you to define your own functions. The basic function declaration +begins as follows: > + + :function {name}({var1}, {var2}, ...) + : {body} + :endfunction +< + Note: + Function names must begin with a capital letter. + +Let's define a short function to return the smaller of two numbers. It starts +with this line: > + + :function Min(num1, num2) + +This tells Vim that the function is named "Min" and it takes two arguments: +"num1" and "num2". + The first thing you need to do is to check to see which number is smaller: + > + : if a:num1 < a:num2 + +The special prefix "a:" tells Vim that the variable is a function argument. +Let's assign the variable "smaller" the value of the smallest number: > + + : if a:num1 < a:num2 + : let smaller = a:num1 + : else + : let smaller = a:num2 + : endif + +The variable "smaller" is a local variable. Variables used inside a function +are local unless prefixed by something like "g:", "a:", or "s:". + + Note: + To access a global variable from inside a function you must prepend + "g:" to it. Thus "g:today" inside a function is used for the global + variable "today", and "today" is another variable, local to the + function. + +You now use the ":return" statement to return the smallest number to the user. +Finally, you end the function: > + + : return smaller + :endfunction + +The complete function definition is as follows: > + + :function Min(num1, num2) + : if a:num1 < a:num2 + : let smaller = a:num1 + : else + : let smaller = a:num2 + : endif + : return smaller + :endfunction + +For people who like short functions, this does the same thing: > + + :function Min(num1, num2) + : if a:num1 < a:num2 + : return a:num1 + : endif + : return a:num2 + :endfunction + +A user defined function is called in exactly the same way as a built-in +function. Only the name is different. The Min function can be used like +this: > + + :echo Min(5, 8) + +Only now will the function be executed and the lines be interpreted by Vim. +If there are mistakes, like using an undefined variable or function, you will +now get an error message. When defining the function these errors are not +detected. + +When a function reaches ":endfunction" or ":return" is used without an +argument, the function returns zero. + +To redefine a function that already exists, use the ! for the ":function" +command: > + + :function! Min(num1, num2, num3) + + +USING A RANGE + +The ":call" command can be given a line range. This can have one of two +meanings. When a function has been defined with the "range" keyword, it will +take care of the line range itself. + The function will be passed the variables "a:firstline" and "a:lastline". +These will have the line numbers from the range the function was called with. +Example: > + + :function Count_words() range + : let lnum = a:firstline + : let n = 0 + : while lnum <= a:lastline + : let n = n + len(split(getline(lnum))) + : let lnum = lnum + 1 + : endwhile + : echo "found " . n . " words" + :endfunction + +You can call this function with: > + + :10,30call Count_words() + +It will be executed once and echo the number of words. + The other way to use a line range is by defining a function without the +"range" keyword. The function will be called once for every line in the +range, with the cursor in that line. Example: > + + :function Number() + : echo "line " . line(".") . " contains: " . getline(".") + :endfunction + +If you call this function with: > + + :10,15call Number() + +The function will be called six times. + + +VARIABLE NUMBER OF ARGUMENTS + +Vim enables you to define functions that have a variable number of arguments. +The following command, for instance, defines a function that must have 1 +argument (start) and can have up to 20 additional arguments: > + + :function Show(start, ...) + +The variable "a:1" contains the first optional argument, "a:2" the second, and +so on. The variable "a:0" contains the number of extra arguments. + For example: > + + :function Show(start, ...) + : echohl Title + : echo "start is " . a:start + : echohl None + : let index = 1 + : while index <= a:0 + : echo " Arg " . index . " is " . a:{index} + : let index = index + 1 + : endwhile + : echo "" + :endfunction + +This uses the ":echohl" command to specify the highlighting used for the +following ":echo" command. ":echohl None" stops it again. The ":echon" +command works like ":echo", but doesn't output a line break. + +You can also use the a:000 variable, it is a List of all the "..." arguments. +See |a:000|. + + +LISTING FUNCTIONS + +The ":function" command lists the names and arguments of all user-defined +functions: > + + :function +< function Show(start, ...) ~ + function GetVimIndent() ~ + function SetSyn(name) ~ + +To see what a function does, use its name as an argument for ":function": > + + :function SetSyn +< 1 if &syntax == '' ~ + 2 let &syntax = a:name ~ + 3 endif ~ + endfunction ~ + + +DEBUGGING + +The line number is useful for when you get an error message or when debugging. +See |debug-scripts| about debugging mode. + You can also set the 'verbose' option to 12 or higher to see all function +calls. Set it to 15 or higher to see every executed line. + + +DELETING A FUNCTION + +To delete the Show() function: > + + :delfunction Show + +You get an error when the function doesn't exist. + + +FUNCTION REFERENCES + +Sometimes it can be useful to have a variable point to one function or +another. You can do it with the function() function. It turns the name of a +function into a reference: > + + :let result = 0 " or 1 + :function! Right() + : return 'Right!' + :endfunc + :function! Wrong() + : return 'Wrong!' + :endfunc + : + :if result == 1 + : let Afunc = function('Right') + :else + : let Afunc = function('Wrong') + :endif + :echo call(Afunc, []) +< Wrong! ~ + +Note that the name of a variable that holds a function reference must start +with a capital. Otherwise it could be confused with the name of a builtin +function. + The way to invoke a function that a variable refers to is with the call() +function. Its first argument is the function reference, the second argument +is a List with arguments. + +Function references are most useful in combination with a Dictionary, as is +explained in the next section. + +============================================================================== +*41.8* Lists and Dictionaries + +So far we have used the basic types String and Number. Vim also supports two +composite types: List and Dictionary. + +A List is an ordered sequence of things. The things can be any kind of value, +thus you can make a List of numbers, a List of Lists and even a List of mixed +items. To create a List with three strings: > + + :let alist = ['aap', 'mies', 'noot'] + +The List items are enclosed in square brackets and separated by commas. To +create an empty List: > + + :let alist = [] + +You can add items to a List with the add() function: > + + :let alist = [] + :call add(alist, 'foo') + :call add(alist, 'bar') + :echo alist +< ['foo', 'bar'] ~ + +List concatenation is done with +: > + + :echo alist + ['foo', 'bar'] +< ['foo', 'bar', 'foo', 'bar'] ~ + +Or, if you want to extend a List directly: > + + :let alist = ['one'] + :call extend(alist, ['two', 'three']) + :echo alist +< ['one', 'two', 'three'] ~ + +Notice that using add() will have a different effect: > + + :let alist = ['one'] + :call add(alist, ['two', 'three']) + :echo alist +< ['one', ['two', 'three']] ~ + +The second argument of add() is added as a single item. + + +FOR LOOP + +One of the nice things you can do with a List is iterate over it: > + + :let alist = ['one', 'two', 'three'] + :for n in alist + : echo n + :endfor +< one ~ + two ~ + three ~ + +This will loop over each element in List "alist", assigning the value to +variable "n". The generic form of a for loop is: > + + :for {varname} in {listexpression} + : {commands} + :endfor + +To loop a certain number of times you need a List of a specific length. The +range() function creates one for you: > + + :for a in range(3) + : echo a + :endfor +< 0 ~ + 1 ~ + 2 ~ + +Notice that the first item of the List that range() produces is zero, thus the +last item is one less than the length of the list. + You can also specify the maximum value, the stride and even go backwards: > + + :for a in range(8, 4, -2) + : echo a + :endfor +< 8 ~ + 6 ~ + 4 ~ + +A more useful example, looping over lines in the buffer: > + + :for line in getline(1, 20) + : if line =~ "Date: " + : echo matchstr(line, 'Date: \zs.*') + : endif + :endfor + +This looks into lines 1 to 20 (inclusive) and echoes any date found in there. + + +DICTIONARIES + +A Dictionary stores key-value pairs. You can quickly lookup a value if you +know the key. A Dictionary is created with curly braces: > + + :let uk2nl = {'one': 'een', 'two': 'twee', 'three': 'drie'} + +Now you can lookup words by putting the key in square brackets: > + + :echo uk2nl['two'] +< twee ~ + +The generic form for defining a Dictionary is: > + + {<key> : <value>, ...} + +An empty Dictionary is one without any keys: > + + {} + +The possibilities with Dictionaries are numerous. There are various functions +for them as well. For example, you can obtain a list of the keys and loop +over them: > + + :for key in keys(uk2nl) + : echo key + :endfor +< three ~ + one ~ + two ~ + +You will notice the keys are not ordered. You can sort the list to get a +specific order: > + + :for key in sort(keys(uk2nl)) + : echo key + :endfor +< one ~ + three ~ + two ~ + +But you can never get back the order in which items are defined. For that you +need to use a List, it stores items in an ordered sequence. + + +DICTIONARY FUNCTIONS + +The items in a Dictionary can normally be obtained with an index in square +brackets: > + + :echo uk2nl['one'] +< een ~ + +A method that does the same, but without so many punctuation characters: > + + :echo uk2nl.one +< een ~ + +This only works for a key that is made of ASCII letters, digits and the +underscore. You can also assign a new value this way: > + + :let uk2nl.four = 'vier' + :echo uk2nl +< {'three': 'drie', 'four': 'vier', 'one': 'een', 'two': 'twee'} ~ + +And now for something special: you can directly define a function and store a +reference to it in the dictionary: > + + :function uk2nl.translate(line) dict + : return join(map(split(a:line), 'get(self, v:val, "???")')) + :endfunction + +Let's first try it out: > + + :echo uk2nl.translate('three two five one') +< drie twee ??? een ~ + +The first special thing you notice is the "dict" at the end of the ":function" +line. This marks the function as being used from a Dictionary. The "self" +local variable will then refer to that Dictionary. + Now let's break up the complicated return command: > + + split(a:line) + +The split() function takes a string, chops it into whitespace separated words +and returns a list with these words. Thus in the example it returns: > + + :echo split('three two five one') +< ['three', 'two', 'five', 'one'] ~ + +This list is the first argument to the map() function. This will go through +the list, evaluating its second argument with "v:val" set to the value of each +item. This is a shortcut to using a for loop. This command: > + + :let alist = map(split(a:line), 'get(self, v:val, "???")') + +Is equivalent to: > + + :let alist = split(a:line) + :for idx in range(len(alist)) + : let alist[idx] = get(self, alist[idx], "???") + :endfor + +The get() function checks if a key is present in a Dictionary. If it is, then +the value is retrieved. If it isn't, then the default value is returned, in +the example it's '???'. This is a convenient way to handle situations where a +key may not be present and you don't want an error message. + +The join() function does the opposite of split(): it joins together a list of +words, putting a space in between. + This combination of split(), map() and join() is a nice way to filter a line +of words in a very compact way. + + +OBJECT ORIENTED PROGRAMMING + +Now that you can put both values and functions in a Dictionary, you can +actually use a Dictionary like an object. + Above we used a Dictionary for translating Dutch to English. We might want +to do the same for other languages. Let's first make an object (aka +Dictionary) that has the translate function, but no words to translate: > + + :let transdict = {} + :function transdict.translate(line) dict + : return join(map(split(a:line), 'get(self.words, v:val, "???")')) + :endfunction + +It's slightly different from the function above, using 'self.words' to lookup +word translations. But we don't have a self.words. Thus you could call this +an abstract class. + +Now we can instantiate a Dutch translation object: > + + :let uk2nl = copy(transdict) + :let uk2nl.words = {'one': 'een', 'two': 'twee', 'three': 'drie'} + :echo uk2nl.translate('three one') +< drie een ~ + +And a German translator: > + + :let uk2de = copy(transdict) + :let uk2de.words = {'one': 'ein', 'two': 'zwei', 'three': 'drei'} + :echo uk2de.translate('three one') +< drei ein ~ + +You see that the copy() function is used to make a copy of the "transdict" +Dictionary and then the copy is changed to add the words. The original +remains the same, of course. + +Now you can go one step further, and use your preferred translator: > + + :if $LANG =~ "de" + : let trans = uk2de + :else + : let trans = uk2nl + :endif + :echo trans.translate('one two three') +< een twee drie ~ + +Here "trans" refers to one of the two objects (Dictionaries). No copy is +made. More about List and Dictionary identity can be found at |list-identity| +and |dict-identity|. + +Now you might use a language that isn't supported. You can overrule the +translate() function to do nothing: > + + :let uk2uk = copy(transdict) + :function! uk2uk.translate(line) + : return a:line + :endfunction + :echo uk2uk.translate('three one wladiwostok') +< three one wladiwostok ~ + +Notice that a ! was used to overwrite the existing function reference. Now +use "uk2uk" when no recognized language is found: > + + :if $LANG =~ "de" + : let trans = uk2de + :elseif $LANG =~ "nl" + : let trans = uk2nl + :else + : let trans = uk2uk + :endif + :echo trans.translate('one two three') +< one two three ~ + +For further reading see |Lists| and |Dictionaries|. + +============================================================================== +*41.9* Exceptions + +Let's start with an example: > + + :try + : read ~/templates/pascal.tmpl + :catch /E484:/ + : echo "Sorry, the Pascal template file cannot be found." + :endtry + +The ":read" command will fail if the file does not exist. Instead of +generating an error message, this code catches the error and gives the user a +nice message. + +For the commands in between ":try" and ":endtry" errors are turned into +exceptions. An exception is a string. In the case of an error the string +contains the error message. And every error message has a number. In this +case, the error we catch contains "E484:". This number is guaranteed to stay +the same (the text may change, e.g., it may be translated). + +When the ":read" command causes another error, the pattern "E484:" will not +match in it. Thus this exception will not be caught and result in the usual +error message. + +You might be tempted to do this: > + + :try + : read ~/templates/pascal.tmpl + :catch + : echo "Sorry, the Pascal template file cannot be found." + :endtry + +This means all errors are caught. But then you will not see errors that are +useful, such as "E21: Cannot make changes, 'modifiable' is off". + +Another useful mechanism is the ":finally" command: > + + :let tmp = tempname() + :try + : exe ".,$write " . tmp + : exe "!filter " . tmp + : .,$delete + : exe "$read " . tmp + :finally + : call delete(tmp) + :endtry + +This filters the lines from the cursor until the end of the file through the +"filter" command, which takes a file name argument. No matter if the +filtering works, something goes wrong in between ":try" and ":finally" or the +user cancels the filtering by pressing CTRL-C, the "call delete(tmp)" is +always executed. This makes sure you don't leave the temporary file behind. + +More information about exception handling can be found in the reference +manual: |exception-handling|. + +============================================================================== +*41.10* Various remarks + +Here is a summary of items that apply to Vim scripts. They are also mentioned +elsewhere, but form a nice checklist. + +The end-of-line character depends on the system. For Unix a single <NL> +character is used. For MS-DOS, Windows, OS/2 and the like, <CR><LF> is used. +This is important when using mappings that end in a <CR>. See |:source_crnl|. + + +WHITE SPACE + +Blank lines are allowed and ignored. + +Leading whitespace characters (blanks and TABs) are always ignored. The +whitespaces between parameters (e.g. between the 'set' and the 'cpoptions' in +the example below) are reduced to one blank character and plays the role of a +separator, the whitespaces after the last (visible) character may or may not +be ignored depending on the situation, see below. + +For a ":set" command involving the "=" (equal) sign, such as in: > + + :set cpoptions =aABceFst + +the whitespace immediately before the "=" sign is ignored. But there can be +no whitespace after the "=" sign! + +To include a whitespace character in the value of an option, it must be +escaped by a "\" (backslash) as in the following example: > + + :set tags=my\ nice\ file + +The same example written as: > + + :set tags=my nice file + +will issue an error, because it is interpreted as: > + + :set tags=my + :set nice + :set file + + +COMMENTS + +The character " (the double quote mark) starts a comment. Everything after +and including this character until the end-of-line is considered a comment and +is ignored, except for commands that don't consider comments, as shown in +examples below. A comment can start on any character position on the line. + +There is a little "catch" with comments for some commands. Examples: > + + :abbrev dev development " shorthand + :map <F3> o#include " insert include + :execute cmd " do it + :!ls *.c " list C files + +The abbreviation 'dev' will be expanded to 'development " shorthand'. The +mapping of <F3> will actually be the whole line after the 'o# ....' including +the '" insert include'. The "execute" command will give an error. The "!" +command will send everything after it to the shell, causing an error for an +unmatched '"' character. + There can be no comment after ":map", ":abbreviate", ":execute" and "!" +commands (there are a few more commands with this restriction). For the +":map", ":abbreviate" and ":execute" commands there is a trick: > + + :abbrev dev development|" shorthand + :map <F3> o#include|" insert include + :execute cmd |" do it + +With the '|' character the command is separated from the next one. And that +next command is only a comment. For the last command you need to do two +things: |:execute| and use '|': > + :exe '!ls *.c' |" list C files + +Notice that there is no white space before the '|' in the abbreviation and +mapping. For these commands, any character until the end-of-line or '|' is +included. As a consequence of this behavior, you don't always see that +trailing whitespace is included: > + + :map <F4> o#include + +To spot these problems, you can set the 'list' option when editing vimrc +files. + +For Unix there is one special way to comment a line, that allows making a Vim +script executable: > + #!/usr/bin/env vim -S + echo "this is a Vim script" + quit + +The "#" command by itself lists a line with the line number. Adding an +exclamation mark changes it into doing nothing, so that you can add the shell +command to execute the rest of the file. |:#!| |-S| + + +PITFALLS + +Even bigger problem arises in the following example: > + + :map ,ab o#include + :unmap ,ab + +Here the unmap command will not work, because it tries to unmap ",ab ". This +does not exist as a mapped sequence. An error will be issued, which is very +hard to identify, because the ending whitespace character in ":unmap ,ab " is +not visible. + +And this is the same as what happens when one uses a comment after an 'unmap' +command: > + + :unmap ,ab " comment + +Here the comment part will be ignored. However, Vim will try to unmap +',ab ', which does not exist. Rewrite it as: > + + :unmap ,ab| " comment + + +RESTORING THE VIEW + +Sometimes you want to make a change and go back to where the cursor was. +Restoring the relative position would also be nice, so that the same line +appears at the top of the window. + This example yanks the current line, puts it above the first line in the +file and then restores the view: > + + map ,p ma"aYHmbgg"aP`bzt`a + +What this does: > + ma"aYHmbgg"aP`bzt`a +< ma set mark a at cursor position + "aY yank current line into register a + Hmb go to top line in window and set mark b there + gg go to first line in file + "aP put the yanked line above it + `b go back to top line in display + zt position the text in the window as before + `a go back to saved cursor position + + +PACKAGING + +To avoid your function names to interfere with functions that you get from +others, use this scheme: +- Prepend a unique string before each function name. I often use an + abbreviation. For example, "OW_" is used for the option window functions. +- Put the definition of your functions together in a file. Set a global + variable to indicate that the functions have been loaded. When sourcing the + file again, first unload the functions. +Example: > + + " This is the XXX package + + if exists("XXX_loaded") + delfun XXX_one + delfun XXX_two + endif + + function XXX_one(a) + ... body of function ... + endfun + + function XXX_two(b) + ... body of function ... + endfun + + let XXX_loaded = 1 + +============================================================================== +*41.11* Writing a plugin *write-plugin* + +You can write a Vim script in such a way that many people can use it. This is +called a plugin. Vim users can drop your script in their plugin directory and +use its features right away |add-plugin|. + +There are actually two types of plugins: + + global plugins: For all types of files. +filetype plugins: Only for files of a specific type. + +In this section the first type is explained. Most items are also relevant for +writing filetype plugins. The specifics for filetype plugins are in the next +section |write-filetype-plugin|. + + +NAME + +First of all you must choose a name for your plugin. The features provided +by the plugin should be clear from its name. And it should be unlikely that +someone else writes a plugin with the same name but which does something +different. And please limit the name to 8 characters, to avoid problems on +old Windows systems. + +A script that corrects typing mistakes could be called "typecorr.vim". We +will use it here as an example. + +For the plugin to work for everybody, it should follow a few guidelines. This +will be explained step-by-step. The complete example plugin is at the end. + + +BODY + +Let's start with the body of the plugin, the lines that do the actual work: > + + 14 iabbrev teh the + 15 iabbrev otehr other + 16 iabbrev wnat want + 17 iabbrev synchronisation + 18 \ synchronization + 19 let s:count = 4 + +The actual list should be much longer, of course. + +The line numbers have only been added to explain a few things, don't put them +in your plugin file! + + +HEADER + +You will probably add new corrections to the plugin and soon have several +versions lying around. And when distributing this file, people will want to +know who wrote this wonderful plugin and where they can send remarks. +Therefore, put a header at the top of your plugin: > + + 1 " Vim global plugin for correcting typing mistakes + 2 " Last Change: 2000 Oct 15 + 3 " Maintainer: Bram Moolenaar <Bram@vim.org> + +About copyright and licensing: Since plugins are very useful and it's hardly +worth restricting their distribution, please consider making your plugin +either public domain or use the Vim |license|. A short note about this near +the top of the plugin should be sufficient. Example: > + + 4 " License: This file is placed in the public domain. + + +LINE CONTINUATION, AVOIDING SIDE EFFECTS *use-cpo-save* + +In line 18 above, the line-continuation mechanism is used |line-continuation|. +Users with 'compatible' set will run into trouble here, they will get an error +message. We can't just reset 'compatible', because that has a lot of side +effects. To avoid this, we will set the 'cpoptions' option to its Vim default +value and restore it later. That will allow the use of line-continuation and +make the script work for most people. It is done like this: > + + 11 let s:save_cpo = &cpo + 12 set cpo&vim + .. + 42 let &cpo = s:save_cpo + 43 unlet s:save_cpo + +We first store the old value of 'cpoptions' in the s:save_cpo variable. At +the end of the plugin this value is restored. + +Notice that a script-local variable is used |s:var|. A global variable could +already be in use for something else. Always use script-local variables for +things that are only used in the script. + + +NOT LOADING + +It's possible that a user doesn't always want to load this plugin. Or the +system administrator has dropped it in the system-wide plugin directory, but a +user has his own plugin he wants to use. Then the user must have a chance to +disable loading this specific plugin. This will make it possible: > + + 6 if exists("g:loaded_typecorr") + 7 finish + 8 endif + 9 let g:loaded_typecorr = 1 + +This also avoids that when the script is loaded twice it would cause error +messages for redefining functions and cause trouble for autocommands that are +added twice. + +The name is recommended to start with "loaded_" and then the file name of the +plugin, literally. The "g:" is prepended just to avoid mistakes when using +the variable in a function (without "g:" it would be a variable local to the +function). + +Using "finish" stops Vim from reading the rest of the file, it's much quicker +than using if-endif around the whole file. + + +MAPPING + +Now let's make the plugin more interesting: We will add a mapping that adds a +correction for the word under the cursor. We could just pick a key sequence +for this mapping, but the user might already use it for something else. To +allow the user to define which keys a mapping in a plugin uses, the <Leader> +item can be used: > + + 22 map <unique> <Leader>a <Plug>TypecorrAdd + +The "<Plug>TypecorrAdd" thing will do the work, more about that further on. + +The user can set the "mapleader" variable to the key sequence that he wants +this mapping to start with. Thus if the user has done: > + + let mapleader = "_" + +the mapping will define "_a". If the user didn't do this, the default value +will be used, which is a backslash. Then a map for "\a" will be defined. + +Note that <unique> is used, this will cause an error message if the mapping +already happened to exist. |:map-<unique>| + +But what if the user wants to define his own key sequence? We can allow that +with this mechanism: > + + 21 if !hasmapto('<Plug>TypecorrAdd') + 22 map <unique> <Leader>a <Plug>TypecorrAdd + 23 endif + +This checks if a mapping to "<Plug>TypecorrAdd" already exists, and only +defines the mapping from "<Leader>a" if it doesn't. The user then has a +chance of putting this in his vimrc file: > + + map ,c <Plug>TypecorrAdd + +Then the mapped key sequence will be ",c" instead of "_a" or "\a". + + +PIECES + +If a script gets longer, you often want to break up the work in pieces. You +can use functions or mappings for this. But you don't want these functions +and mappings to interfere with the ones from other scripts. For example, you +could define a function Add(), but another script could try to define the same +function. To avoid this, we define the function local to the script by +prepending it with "s:". + +We will define a function that adds a new typing correction: > + + 30 function s:Add(from, correct) + 31 let to = input("type the correction for " . a:from . ": ") + 32 exe ":iabbrev " . a:from . " " . to + .. + 36 endfunction + +Now we can call the function s:Add() from within this script. If another +script also defines s:Add(), it will be local to that script and can only +be called from the script it was defined in. There can also be a global Add() +function (without the "s:"), which is again another function. + +<SID> can be used with mappings. It generates a script ID, which identifies +the current script. In our typing correction plugin we use it like this: > + + 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add + .. + 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> + +Thus when a user types "\a", this sequence is invoked: > + + \a -> <Plug>TypecorrAdd -> <SID>Add -> :call <SID>Add() + +If another script would also map <SID>Add, it would get another script ID and +thus define another mapping. + +Note that instead of s:Add() we use <SID>Add() here. That is because the +mapping is typed by the user, thus outside of the script. The <SID> is +translated to the script ID, so that Vim knows in which script to look for +the Add() function. + +This is a bit complicated, but it's required for the plugin to work together +with other plugins. The basic rule is that you use <SID>Add() in mappings and +s:Add() in other places (the script itself, autocommands, user commands). + +We can also add a menu entry to do the same as the mapping: > + + 26 noremenu <script> Plugin.Add\ Correction <SID>Add + +The "Plugin" menu is recommended for adding menu items for plugins. In this +case only one item is used. When adding more items, creating a submenu is +recommended. For example, "Plugin.CVS" could be used for a plugin that offers +CVS operations "Plugin.CVS.checkin", "Plugin.CVS.checkout", etc. + +Note that in line 28 ":noremap" is used to avoid that any other mappings cause +trouble. Someone may have remapped ":call", for example. In line 24 we also +use ":noremap", but we do want "<SID>Add" to be remapped. This is why +"<script>" is used here. This only allows mappings which are local to the +script. |:map-<script>| The same is done in line 26 for ":noremenu". +|:menu-<script>| + + +<SID> AND <Plug> *using-<Plug>* + +Both <SID> and <Plug> are used to avoid that mappings of typed keys interfere +with mappings that are only to be used from other mappings. Note the +difference between using <SID> and <Plug>: + +<Plug> is visible outside of the script. It is used for mappings which the + user might want to map a key sequence to. <Plug> is a special code + that a typed key will never produce. + To make it very unlikely that other plugins use the same sequence of + characters, use this structure: <Plug> scriptname mapname + In our example the scriptname is "Typecorr" and the mapname is "Add". + This results in "<Plug>TypecorrAdd". Only the first character of + scriptname and mapname is uppercase, so that we can see where mapname + starts. + +<SID> is the script ID, a unique identifier for a script. + Internally Vim translates <SID> to "<SNR>123_", where "123" can be any + number. Thus a function "<SID>Add()" will have a name "<SNR>11_Add()" + in one script, and "<SNR>22_Add()" in another. You can see this if + you use the ":function" command to get a list of functions. The + translation of <SID> in mappings is exactly the same, that's how you + can call a script-local function from a mapping. + + +USER COMMAND + +Now let's add a user command to add a correction: > + + 38 if !exists(":Correct") + 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) + 40 endif + +The user command is defined only if no command with the same name already +exists. Otherwise we would get an error here. Overriding the existing user +command with ":command!" is not a good idea, this would probably make the user +wonder why the command he defined himself doesn't work. |:command| + + +SCRIPT VARIABLES + +When a variable starts with "s:" it is a script variable. It can only be used +inside a script. Outside the script it's not visible. This avoids trouble +with using the same variable name in different scripts. The variables will be +kept as long as Vim is running. And the same variables are used when sourcing +the same script again. |s:var| + +The fun is that these variables can also be used in functions, autocommands +and user commands that are defined in the script. In our example we can add +a few lines to count the number of corrections: > + + 19 let s:count = 4 + .. + 30 function s:Add(from, correct) + .. + 34 let s:count = s:count + 1 + 35 echo s:count . " corrections now" + 36 endfunction + +First s:count is initialized to 4 in the script itself. When later the +s:Add() function is called, it increments s:count. It doesn't matter from +where the function was called, since it has been defined in the script, it +will use the local variables from this script. + + +THE RESULT + +Here is the resulting complete example: > + + 1 " Vim global plugin for correcting typing mistakes + 2 " Last Change: 2000 Oct 15 + 3 " Maintainer: Bram Moolenaar <Bram@vim.org> + 4 " License: This file is placed in the public domain. + 5 + 6 if exists("g:loaded_typecorr") + 7 finish + 8 endif + 9 let g:loaded_typecorr = 1 + 10 + 11 let s:save_cpo = &cpo + 12 set cpo&vim + 13 + 14 iabbrev teh the + 15 iabbrev otehr other + 16 iabbrev wnat want + 17 iabbrev synchronisation + 18 \ synchronization + 19 let s:count = 4 + 20 + 21 if !hasmapto('<Plug>TypecorrAdd') + 22 map <unique> <Leader>a <Plug>TypecorrAdd + 23 endif + 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add + 25 + 26 noremenu <script> Plugin.Add\ Correction <SID>Add + 27 + 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> + 29 + 30 function s:Add(from, correct) + 31 let to = input("type the correction for " . a:from . ": ") + 32 exe ":iabbrev " . a:from . " " . to + 33 if a:correct | exe "normal viws\<C-R>\" \b\e" | endif + 34 let s:count = s:count + 1 + 35 echo s:count . " corrections now" + 36 endfunction + 37 + 38 if !exists(":Correct") + 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) + 40 endif + 41 + 42 let &cpo = s:save_cpo + 43 unlet s:save_cpo + +Line 33 wasn't explained yet. It applies the new correction to the word under +the cursor. The |:normal| command is used to use the new abbreviation. Note +that mappings and abbreviations are expanded here, even though the function +was called from a mapping defined with ":noremap". + +Using "unix" for the 'fileformat' option is recommended. The Vim scripts will +then work everywhere. Scripts with 'fileformat' set to "dos" do not work on +Unix. Also see |:source_crnl|. To be sure it is set right, do this before +writing the file: > + + :set fileformat=unix + + +DOCUMENTATION *write-local-help* + +It's a good idea to also write some documentation for your plugin. Especially +when its behavior can be changed by the user. See |add-local-help| for how +they are installed. + +Here is a simple example for a plugin help file, called "typecorr.txt": > + + 1 *typecorr.txt* Plugin for correcting typing mistakes + 2 + 3 If you make typing mistakes, this plugin will have them corrected + 4 automatically. + 5 + 6 There are currently only a few corrections. Add your own if you like. + 7 + 8 Mappings: + 9 <Leader>a or <Plug>TypecorrAdd + 10 Add a correction for the word under the cursor. + 11 + 12 Commands: + 13 :Correct {word} + 14 Add a correction for {word}. + 15 + 16 *typecorr-settings* + 17 This plugin doesn't have any settings. + +The first line is actually the only one for which the format matters. It will +be extracted from the help file to be put in the "LOCAL ADDITIONS:" section of +help.txt |local-additions|. The first "*" must be in the first column of the +first line. After adding your help file do ":help" and check that the entries +line up nicely. + +You can add more tags inside ** in your help file. But be careful not to use +existing help tags. You would probably use the name of your plugin in most of +them, like "typecorr-settings" in the example. + +Using references to other parts of the help in || is recommended. This makes +it easy for the user to find associated help. + + +FILETYPE DETECTION *plugin-filetype* + +If your filetype is not already detected by Vim, you should create a filetype +detection snippet in a separate file. It is usually in the form of an +autocommand that sets the filetype when the file name matches a pattern. +Example: > + + au BufNewFile,BufRead *.foo set filetype=foofoo + +Write this single-line file as "ftdetect/foofoo.vim" in the first directory +that appears in 'runtimepath'. For Unix that would be +"~/.vim/ftdetect/foofoo.vim". The convention is to use the name of the +filetype for the script name. + +You can make more complicated checks if you like, for example to inspect the +contents of the file to recognize the language. Also see |new-filetype|. + + +SUMMARY *plugin-special* + +Summary of special things to use in a plugin: + +s:name Variables local to the script. + +<SID> Script-ID, used for mappings and functions local to + the script. + +hasmapto() Function to test if the user already defined a mapping + for functionality the script offers. + +<Leader> Value of "mapleader", which the user defines as the + keys that plugin mappings start with. + +:map <unique> Give a warning if a mapping already exists. + +:noremap <script> Use only mappings local to the script, not global + mappings. + +exists(":Cmd") Check if a user command already exists. + +============================================================================== +*41.12* Writing a filetype plugin *write-filetype-plugin* *ftplugin* + +A filetype plugin is like a global plugin, except that it sets options and +defines mappings for the current buffer only. See |add-filetype-plugin| for +how this type of plugin is used. + +First read the section on global plugins above |41.11|. All that is said there +also applies to filetype plugins. There are a few extras, which are explained +here. The essential thing is that a filetype plugin should only have an +effect on the current buffer. + + +DISABLING + +If you are writing a filetype plugin to be used by many people, they need a +chance to disable loading it. Put this at the top of the plugin: > + + " Only do this when not done yet for this buffer + if exists("b:did_ftplugin") + finish + endif + let b:did_ftplugin = 1 + +This also needs to be used to avoid that the same plugin is executed twice for +the same buffer (happens when using an ":edit" command without arguments). + +Now users can disable loading the default plugin completely by making a +filetype plugin with only this line: > + + let b:did_ftplugin = 1 + +This does require that the filetype plugin directory comes before $VIMRUNTIME +in 'runtimepath'! + +If you do want to use the default plugin, but overrule one of the settings, +you can write the different setting in a script: > + + setlocal textwidth=70 + +Now write this in the "after" directory, so that it gets sourced after the +distributed "vim.vim" ftplugin |after-directory|. For Unix this would be +"~/.vim/after/ftplugin/vim.vim". Note that the default plugin will have set +"b:did_ftplugin", but it is ignored here. + + +OPTIONS + +To make sure the filetype plugin only affects the current buffer use the > + + :setlocal + +command to set options. And only set options which are local to a buffer (see +the help for the option to check that). When using |:setlocal| for global +options or options local to a window, the value will change for many buffers, +and that is not what a filetype plugin should do. + +When an option has a value that is a list of flags or items, consider using +"+=" and "-=" to keep the existing value. Be aware that the user may have +changed an option value already. First resetting to the default value and +then changing it is often a good idea. Example: > + + :setlocal formatoptions& formatoptions+=ro + + +MAPPINGS + +To make sure mappings will only work in the current buffer use the > + + :map <buffer> + +command. This needs to be combined with the two-step mapping explained above. +An example of how to define functionality in a filetype plugin: > + + if !hasmapto('<Plug>JavaImport') + map <buffer> <unique> <LocalLeader>i <Plug>JavaImport + endif + noremap <buffer> <unique> <Plug>JavaImport oimport ""<Left><Esc> + +|hasmapto()| is used to check if the user has already defined a map to +<Plug>JavaImport. If not, then the filetype plugin defines the default +mapping. This starts with |<LocalLeader>|, which allows the user to select +the key(s) he wants filetype plugin mappings to start with. The default is a +backslash. +"<unique>" is used to give an error message if the mapping already exists or +overlaps with an existing mapping. +|:noremap| is used to avoid that any other mappings that the user has defined +interferes. You might want to use ":noremap <script>" to allow remapping +mappings defined in this script that start with <SID>. + +The user must have a chance to disable the mappings in a filetype plugin, +without disabling everything. Here is an example of how this is done for a +plugin for the mail filetype: > + + " Add mappings, unless the user didn't want this. + if !exists("no_plugin_maps") && !exists("no_mail_maps") + " Quote text by inserting "> " + if !hasmapto('<Plug>MailQuote') + vmap <buffer> <LocalLeader>q <Plug>MailQuote + nmap <buffer> <LocalLeader>q <Plug>MailQuote + endif + vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR> + nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR> + endif + +Two global variables are used: +no_plugin_maps disables mappings for all filetype plugins +no_mail_maps disables mappings for a specific filetype + + +USER COMMANDS + +To add a user command for a specific file type, so that it can only be used in +one buffer, use the "-buffer" argument to |:command|. Example: > + + :command -buffer Make make %:r.s + + +VARIABLES + +A filetype plugin will be sourced for each buffer of the type it's for. Local +script variables |s:var| will be shared between all invocations. Use local +buffer variables |b:var| if you want a variable specifically for one buffer. + + +FUNCTIONS + +When defining a function, this only needs to be done once. But the filetype +plugin will be sourced every time a file with this filetype will be opened. +This construct makes sure the function is only defined once: > + + :if !exists("*s:Func") + : function s:Func(arg) + : ... + : endfunction + :endif +< + +UNDO *undo_ftplugin* + +When the user does ":setfiletype xyz" the effect of the previous filetype +should be undone. Set the b:undo_ftplugin variable to the commands that will +undo the settings in your filetype plugin. Example: > + + let b:undo_ftplugin = "setlocal fo< com< tw< commentstring<" + \ . "| unlet b:match_ignorecase b:match_words b:match_skip" + +Using ":setlocal" with "<" after the option name resets the option to its +global value. That is mostly the best way to reset the option value. + +This does require removing the "C" flag from 'cpoptions' to allow line +continuation, as mentioned above |use-cpo-save|. + + +FILE NAME + +The filetype must be included in the file name |ftplugin-name|. Use one of +these three forms: + + .../ftplugin/stuff.vim + .../ftplugin/stuff_foo.vim + .../ftplugin/stuff/bar.vim + +"stuff" is the filetype, "foo" and "bar" are arbitrary names. + + +SUMMARY *ftplugin-special* + +Summary of special things to use in a filetype plugin: + +<LocalLeader> Value of "maplocalleader", which the user defines as + the keys that filetype plugin mappings start with. + +:map <buffer> Define a mapping local to the buffer. + +:noremap <script> Only remap mappings defined in this script that start + with <SID>. + +:setlocal Set an option for the current buffer only. + +:command -buffer Define a user command local to the buffer. + +exists("*s:Func") Check if a function was already defined. + +Also see |plugin-special|, the special things used for all plugins. + +============================================================================== +*41.13* Writing a compiler plugin *write-compiler-plugin* + +A compiler plugin sets options for use with a specific compiler. The user can +load it with the |:compiler| command. The main use is to set the +'errorformat' and 'makeprg' options. + +Easiest is to have a look at examples. This command will edit all the default +compiler plugins: > + + :next $VIMRUNTIME/compiler/*.vim + +Use |:next| to go to the next plugin file. + +There are two special items about these files. First is a mechanism to allow +a user to overrule or add to the default file. The default files start with: > + + :if exists("current_compiler") + : finish + :endif + :let current_compiler = "mine" + +When you write a compiler file and put it in your personal runtime directory +(e.g., ~/.vim/compiler for Unix), you set the "current_compiler" variable to +make the default file skip the settings. + *:CompilerSet* +The second mechanism is to use ":set" for ":compiler!" and ":setlocal" for +":compiler". Vim defines the ":CompilerSet" user command for this. However, +older Vim versions don't, thus your plugin should define it then. This is an +example: > + + if exists(":CompilerSet") != 2 + command -nargs=* CompilerSet setlocal <args> + endif + CompilerSet errorformat& " use the default 'errorformat' + CompilerSet makeprg=nmake + +When you write a compiler plugin for the Vim distribution or for a system-wide +runtime directory, use the mechanism mentioned above. When +"current_compiler" was already set by a user plugin nothing will be done. + +When you write a compiler plugin to overrule settings from a default plugin, +don't check "current_compiler". This plugin is supposed to be loaded +last, thus it should be in a directory at the end of 'runtimepath'. For Unix +that could be ~/.vim/after/compiler. + +============================================================================== +*41.14* Writing a plugin that loads quickly *write-plugin-quickload* + +A plugin may grow and become quite long. The startup delay may become +noticeable, while you hardly ever use the plugin. Then it's time for a +quickload plugin. + +The basic idea is that the plugin is loaded twice. The first time user +commands and mappings are defined that offer the functionality. The second +time the functions that implement the functionality are defined. + +It may sound surprising that quickload means loading a script twice. What we +mean is that it loads quickly the first time, postponing the bulk of the +script to the second time, which only happens when you actually use it. When +you always use the functionality it actually gets slower! + +Note that since Vim 7 there is an alternative: use the |autoload| +functionality |41.15|. + +The following example shows how it's done: > + + " Vim global plugin for demonstrating quick loading + " Last Change: 2005 Feb 25 + " Maintainer: Bram Moolenaar <Bram@vim.org> + " License: This file is placed in the public domain. + + if !exists("s:did_load") + command -nargs=* BNRead call BufNetRead(<f-args>) + map <F19> :call BufNetWrite('something')<CR> + + let s:did_load = 1 + exe 'au FuncUndefined BufNet* source ' . expand('<sfile>') + finish + endif + + function BufNetRead(...) + echo 'BufNetRead(' . string(a:000) . ')' + " read functionality here + endfunction + + function BufNetWrite(...) + echo 'BufNetWrite(' . string(a:000) . ')' + " write functionality here + endfunction + +When the script is first loaded "s:did_load" is not set. The commands between +the "if" and "endif" will be executed. This ends in a |:finish| command, thus +the rest of the script is not executed. + +The second time the script is loaded "s:did_load" exists and the commands +after the "endif" are executed. This defines the (possible long) +BufNetRead() and BufNetWrite() functions. + +If you drop this script in your plugin directory Vim will execute it on +startup. This is the sequence of events that happens: + +1. The "BNRead" command is defined and the <F19> key is mapped when the script + is sourced at startup. A |FuncUndefined| autocommand is defined. The + ":finish" command causes the script to terminate early. + +2. The user types the BNRead command or presses the <F19> key. The + BufNetRead() or BufNetWrite() function will be called. + +3. Vim can't find the function and triggers the |FuncUndefined| autocommand + event. Since the pattern "BufNet*" matches the invoked function, the + command "source fname" will be executed. "fname" will be equal to the name + of the script, no matter where it is located, because it comes from + expanding "<sfile>" (see |expand()|). + +4. The script is sourced again, the "s:did_load" variable exists and the + functions are defined. + +Notice that the functions that are loaded afterwards match the pattern in the +|FuncUndefined| autocommand. You must make sure that no other plugin defines +functions that match this pattern. + +============================================================================== +*41.15* Writing library scripts *write-library-script* + +Some functionality will be required in several places. When this becomes more +than a few lines you will want to put it in one script and use it from many +scripts. We will call that one script a library script. + +Manually loading a library script is possible, so long as you avoid loading it +when it's already done. You can do this with the |exists()| function. +Example: > + + if !exists('*MyLibFunction') + runtime library/mylibscript.vim + endif + call MyLibFunction(arg) + +Here you need to know that MyLibFunction() is defined in a script +"library/mylibscript.vim" in one of the directories in 'runtimepath'. + +To make this a bit simpler Vim offers the autoload mechanism. Then the +example looks like this: > + + call mylib#myfunction(arg) + +That's a lot simpler, isn't it? Vim will recognize the function name and when +it's not defined search for the script "autoload/mylib.vim" in 'runtimepath'. +That script must define the "mylib#myfunction()" function. + +You can put many other functions in the mylib.vim script, you are free to +organize your functions in library scripts. But you must use function names +where the part before the '#' matches the script name. Otherwise Vim would +not know what script to load. + +If you get really enthusiastic and write lots of library scripts, you may +want to use subdirectories. Example: > + + call netlib#ftp#read('somefile') + +For Unix the library script used for this could be: + + ~/.vim/autoload/netlib/ftp.vim + +Where the function is defined like this: > + + function netlib#ftp#read(fname) + " Read the file fname through ftp + endfunction + +Notice that the name the function is defined with is exactly the same as the +name used for calling the function. And the part before the last '#' +exactly matches the subdirectory and script name. + +You can use the same mechanism for variables: > + + let weekdays = dutch#weekdays + +This will load the script "autoload/dutch.vim", which should contain something +like: > + + let dutch#weekdays = ['zondag', 'maandag', 'dinsdag', 'woensdag', + \ 'donderdag', 'vrijdag', 'zaterdag'] + +Further reading: |autoload|. + +============================================================================== +*41.16* Distributing Vim scripts *distribute-script* + +Vim users will look for scripts on the Vim website: http://www.vim.org. +If you made something that is useful for others, share it! + +Vim scripts can be used on any system. There might not be a tar or gzip +command. If you want to pack files together and/or compress them the "zip" +utility is recommended. + +For utmost portability use Vim itself to pack scripts together. This can be +done with the Vimball utility. See |vimball|. + +It's good if you add a line to allow automatic updating. See |glvs-plugins|. + +============================================================================== + +Next chapter: |usr_42.txt| Add new menus + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_42.txt b/share/vim/vim74/doc/usr_42.txt new file mode 100644 index 00000000..a1cd533e --- /dev/null +++ b/share/vim/vim74/doc/usr_42.txt @@ -0,0 +1,365 @@ +*usr_42.txt* For Vim version 7.4. Last change: 2008 May 05 + + VIM USER MANUAL - by Bram Moolenaar + + Add new menus + + +By now you know that Vim is very flexible. This includes the menus used in +the GUI. You can define your own menu entries to make certain commands easily +accessible. This is for mouse-happy users only. + +|42.1| Introduction +|42.2| Menu commands +|42.3| Various +|42.4| Toolbar and popup menus + + Next chapter: |usr_43.txt| Using filetypes + Previous chapter: |usr_41.txt| Write a Vim script +Table of contents: |usr_toc.txt| + +============================================================================== +*42.1* Introduction + +The menus that Vim uses are defined in the file "$VIMRUNTIME/menu.vim". If +you want to write your own menus, you might first want to look through that +file. + To define a menu item, use the ":menu" command. The basic form of this +command is as follows: > + + :menu {menu-item} {keys} + +The {menu-item} describes where on the menu to put the item. A typical +{menu-item} is "File.Save", which represents the item "Save" under the +"File" menu. A dot is used to separate the names. Example: > + + :menu File.Save :update<CR> + +The ":update" command writes the file when it was modified. + You can add another level: "Edit.Settings.Shiftwidth" defines a submenu +"Settings" under the "Edit" menu, with an item "Shiftwidth". You could use +even deeper levels. Don't use this too much, you need to move the mouse quite +a bit to use such an item. + The ":menu" command is very similar to the ":map" command: the left side +specifies how the item is triggered and the right hand side defines the +characters that are executed. {keys} are characters, they are used just like +you would have typed them. Thus in Insert mode, when {keys} is plain text, +that text is inserted. + + +ACCELERATORS + +The ampersand character (&) is used to indicate an accelerator. For instance, +you can use Alt-F to select "File" and S to select "Save". (The 'winaltkeys' +option may disable this though!). Therefore, the {menu-item} looks like +"&File.&Save". The accelerator characters will be underlined in the menu. + You must take care that each key is used only once in each menu. Otherwise +you will not know which of the two will actually be used. Vim doesn't warn +you for this. + + +PRIORITIES + +The actual definition of the File.Save menu item is as follows: > + + :menu 10.340 &File.&Save<Tab>:w :confirm w<CR> + +The number 10.340 is called the priority number. It is used by the editor to +decide where it places the menu item. The first number (10) indicates the +position on the menu bar. Lower numbered menus are positioned to the left, +higher numbers to the right. + These are the priorities used for the standard menus: + + 10 20 40 50 60 70 9999 + + +------------------------------------------------------------+ + | File Edit Tools Syntax Buffers Window Help | + +------------------------------------------------------------+ + +Notice that the Help menu is given a very high number, to make it appear on +the far right. + The second number (340) determines the location of the item within the +pull-down menu. Lower numbers go on top, higher number on the bottom. These +are the priorities in the File menu: + + +-----------------+ + 10.310 |Open... | + 10.320 |Split-Open... | + 10.325 |New | + 10.330 |Close | + 10.335 |---------------- | + 10.340 |Save | + 10.350 |Save As... | + 10.400 |---------------- | + 10.410 |Split Diff with | + 10.420 |Split Patched By | + 10.500 |---------------- | + 10.510 |Print | + 10.600 |---------------- | + 10.610 |Save-Exit | + 10.620 |Exit | + +-----------------+ + +Notice that there is room in between the numbers. This is where you can +insert your own items, if you really want to (it's often better to leave the +standard menus alone and add a new menu for your own items). + When you create a submenu, you can add another ".number" to the priority. +Thus each name in {menu-item} has its priority number. + + +SPECIAL CHARACTERS + +The {menu-item} in this example is "&File.&Save<Tab>:w". This brings up an +important point: {menu-item} must be one word. If you want to put a dot, +space or tabs in the name, you either use the <> notation (<Space> and <Tab>, +for instance) or use the backslash (\) escape. > + + :menu 10.305 &File.&Do\ It\.\.\. :exit<CR> + +In this example, the name of the menu item "Do It..." contains a space and the +command is ":exit<CR>". + +The <Tab> character in a menu name is used to separate the part that defines +the menu name from the part that gives a hint to the user. The part after the +<Tab> is displayed right aligned in the menu. In the File.Save menu the name +used is "&File.&Save<Tab>:w". Thus the menu name is "File.Save" and the hint +is ":w". + + +SEPARATORS + +The separator lines, used to group related menu items together, can be defined +by using a name that starts and ends in a '-'. For example "-sep-". When +using several separators the names must be different. Otherwise the names +don't matter. + The command from a separator will never be executed, but you have to define +one anyway. A single colon will do. Example: > + + :amenu 20.510 Edit.-sep3- : + +============================================================================== +*42.2* Menu commands + +You can define menu items that exist for only certain modes. This works just +like the variations on the ":map" command: + + :menu Normal, Visual and Operator-pending mode + :nmenu Normal mode + :vmenu Visual mode + :omenu Operator-pending mode + :menu! Insert and Command-line mode + :imenu Insert mode + :cmenu Command-line mode + :amenu All modes + +To avoid that the commands of a menu item are being mapped, use the command +":noremenu", ":nnoremenu", ":anoremenu", etc. + + +USING :AMENU + +The ":amenu" command is a bit different. It assumes that the {keys} you +give are to be executed in Normal mode. When Vim is in Visual or Insert mode +when the menu is used, Vim first has to go back to Normal mode. ":amenu" +inserts a CTRL-C or CTRL-O for you. For example, if you use this command: +> + :amenu 90.100 Mine.Find\ Word * + +Then the resulting menu commands will be: + + Normal mode: * + Visual mode: CTRL-C * + Operator-pending mode: CTRL-C * + Insert mode: CTRL-O * + Command-line mode: CTRL-C * + +When in Command-line mode the CTRL-C will abandon the command typed so far. +In Visual and Operator-pending mode CTRL-C will stop the mode. The CTRL-O in +Insert mode will execute the command and then return to Insert mode. + CTRL-O only works for one command. If you need to use two or more +commands, put them in a function and call that function. Example: > + + :amenu Mine.Next\ File :call <SID>NextFile()<CR> + :function <SID>NextFile() + : next + : 1/^Code + :endfunction + +This menu entry goes to the next file in the argument list with ":next". Then +it searches for the line that starts with "Code". + The <SID> before the function name is the script ID. This makes the +function local to the current Vim script file. This avoids problems when a +function with the same name is defined in another script file. See |<SID>|. + + +SILENT MENUS + +The menu executes the {keys} as if you typed them. For a ":" command this +means you will see the command being echoed on the command line. If it's a +long command, the hit-Enter prompt will appear. That can be very annoying! + To avoid this, make the menu silent. This is done with the <silent> +argument. For example, take the call to NextFile() in the previous example. +When you use this menu, you will see this on the command line: + + :call <SNR>34_NextFile() ~ + +To avoid this text on the command line, insert "<silent>" as the first +argument: > + + :amenu <silent> Mine.Next\ File :call <SID>NextFile()<CR> + +Don't use "<silent>" too often. It is not needed for short commands. If you +make a menu for someone else, being able the see the executed command will +give him a hint about what he could have typed, instead of using the mouse. + + +LISTING MENUS + +When a menu command is used without a {keys} part, it lists the already +defined menus. You can specify a {menu-item}, or part of it, to list specific +menus. Example: > + + :amenu + +This lists all menus. That's a long list! Better specify the name of a menu +to get a shorter list: > + + :amenu Edit + +This lists only the "Edit" menu items for all modes. To list only one +specific menu item for Insert mode: > + + :imenu Edit.Undo + +Take care that you type exactly the right name. Case matters here. But the +'&' for accelerators can be omitted. The <Tab> and what comes after it can be +left out as well. + + +DELETING MENUS + +To delete a menu, the same command is used as for listing, but with "menu" +changed to "unmenu". Thus ":menu" becomes, ":unmenu", ":nmenu" becomes +":nunmenu", etc. To delete the "Tools.Make" item for Insert mode: > + + :iunmenu Tools.Make + +You can delete a whole menu, with all its items, by using the menu name. +Example: > + + :aunmenu Syntax + +This deletes the Syntax menu and all the items in it. + +============================================================================== +*42.3* Various + +You can change the appearance of the menus with flags in 'guioptions'. In the +default value they are all included, except "M". You can remove a flag with a +command like: > + + :set guioptions-=m +< + m When removed the menubar is not displayed. + + M When added the default menus are not loaded. + + g When removed the inactive menu items are not made grey + but are completely removed. (Does not work on all + systems.) + + t When removed the tearoff feature is not enabled. + +The dotted line at the top of a menu is not a separator line. When you select +this item, the menu is "teared-off": It is displayed in a separate window. +This is called a tearoff menu. This is useful when you use the same menu +often. + +For translating menu items, see |:menutrans|. + +Since the mouse has to be used to select a menu item, it is a good idea to use +the ":browse" command for selecting a file. And ":confirm" to get a dialog +instead of an error message, e.g., when the current buffer contains changes. +These two can be combined: > + + :amenu File.Open :browse confirm edit<CR> + +The ":browse" makes a file browser appear to select the file to edit. The +":confirm" will pop up a dialog when the current buffer has changes. You can +then select to save the changes, throw them away or cancel the command. + For more complicated items, the confirm() and inputdialog() functions can +be used. The default menus contain a few examples. + +============================================================================== +*42.4* Toolbar and popup menus + +There are two special menus: ToolBar and PopUp. Items that start with these +names do not appear in the normal menu bar. + + +TOOLBAR + +The toolbar appears only when the "T" flag is included in the 'guioptions' +option. + The toolbar uses icons rather than text to represent the command. For +example, the {menu-item} named "ToolBar.New" causes the "New" icon to appear +on the toolbar. + The Vim editor has 28 built-in icons. You can find a table here: +|builtin-tools|. Most of them are used in the default toolbar. You can +redefine what these items do (after the default menus are setup). + You can add another bitmap for a toolbar item. Or define a new toolbar +item with a bitmap. For example, define a new toolbar item with: > + + :tmenu ToolBar.Compile Compile the current file + :amenu ToolBar.Compile :!cc % -o %:r<CR> + +Now you need to create the icon. For MS-Windows it must be in bitmap format, +with the name "Compile.bmp". For Unix XPM format is used, the file name is +"Compile.xpm". The size must be 18 by 18 pixels. On MS-Windows other sizes +can be used as well, but it will look ugly. + Put the bitmap in the directory "bitmaps" in one of the directories from +'runtimepath'. E.g., for Unix "~/.vim/bitmaps/Compile.xpm". + +You can define tooltips for the items in the toolbar. A tooltip is a short +text that explains what a toolbar item will do. For example "Open file". It +appears when the mouse pointer is on the item, without moving for a moment. +This is very useful if the meaning of the picture isn't that obvious. +Example: > + + :tmenu ToolBar.Make Run make in the current directory +< + Note: + Pay attention to the case used. "Toolbar" and "toolbar" are different + from "ToolBar"! + +To remove a tooltip, use the |:tunmenu| command. + +The 'toolbar' option can be used to display text instead of a bitmap, or both +text and a bitmap. Most people use just the bitmap, since the text takes +quite a bit of space. + + +POPUP MENU + +The popup menu pops up where the mouse pointer is. On MS-Windows you activate +it by clicking the right mouse button. Then you can select an item with the +left mouse button. On Unix the popup menu is used by pressing and holding the +right mouse button. + The popup menu only appears when the 'mousemodel' has been set to "popup" +or "popup_setpos". The difference between the two is that "popup_setpos" +moves the cursor to the mouse pointer position. When clicking inside a +selection, the selection will be used unmodified. When there is a selection +but you click outside of it, the selection is removed. + There is a separate popup menu for each mode. Thus there are never grey +items like in the normal menus. + +What is the meaning of life, the universe and everything? *42* +Douglas Adams, the only person who knew what this question really was about is +now dead, unfortunately. So now you might wonder what the meaning of death +is... + +============================================================================== + +Next chapter: |usr_43.txt| Using filetypes + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_43.txt b/share/vim/vim74/doc/usr_43.txt new file mode 100644 index 00000000..6eaa9c14 --- /dev/null +++ b/share/vim/vim74/doc/usr_43.txt @@ -0,0 +1,173 @@ +*usr_43.txt* For Vim version 7.4. Last change: 2008 Dec 28 + + VIM USER MANUAL - by Bram Moolenaar + + Using filetypes + + +When you are editing a file of a certain type, for example a C program or a +shell script, you often use the same option settings and mappings. You +quickly get tired of manually setting these each time. This chapter explains +how to do it automatically. + +|43.1| Plugins for a filetype +|43.2| Adding a filetype + + Next chapter: |usr_44.txt| Your own syntax highlighted + Previous chapter: |usr_42.txt| Add new menus +Table of contents: |usr_toc.txt| + +============================================================================== +*43.1* Plugins for a filetype *filetype-plugin* + +How to start using filetype plugins has already been discussed here: +|add-filetype-plugin|. But you probably are not satisfied with the default +settings, because they have been kept minimal. Suppose that for C files you +want to set the 'softtabstop' option to 4 and define a mapping to insert a +three-line comment. You do this with only two steps: + + *your-runtime-dir* +1. Create your own runtime directory. On Unix this usually is "~/.vim". In + this directory create the "ftplugin" directory: > + + mkdir ~/.vim + mkdir ~/.vim/ftplugin +< + When you are not on Unix, check the value of the 'runtimepath' option to + see where Vim will look for the "ftplugin" directory: > + + set runtimepath + +< You would normally use the first directory name (before the first comma). + You might want to prepend a directory name to the 'runtimepath' option in + your |vimrc| file if you don't like the default value. + +2. Create the file "~/.vim/ftplugin/c.vim", with the contents: > + + setlocal softtabstop=4 + noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc> + +Try editing a C file. You should notice that the 'softtabstop' option is set +to 4. But when you edit another file it's reset to the default zero. That is +because the ":setlocal" command was used. This sets the 'softtabstop' option +only locally to the buffer. As soon as you edit another buffer, it will be +set to the value set for that buffer. For a new buffer it will get the +default value or the value from the last ":set" command. + +Likewise, the mapping for "\c" will disappear when editing another buffer. +The ":map <buffer>" command creates a mapping that is local to the current +buffer. This works with any mapping command: ":map!", ":vmap", etc. The +|<LocalLeader>| in the mapping is replaced with the value of the +"maplocalleader" variable. + +You can find examples for filetype plugins in this directory: > + + $VIMRUNTIME/ftplugin/ + +More details about writing a filetype plugin can be found here: +|write-plugin|. + +============================================================================== +*43.2* Adding a filetype + +If you are using a type of file that is not recognized by Vim, this is how to +get it recognized. You need a runtime directory of your own. See +|your-runtime-dir| above. + +Create a file "filetype.vim" which contains an autocommand for your filetype. +(Autocommands were explained in section |40.3|.) Example: > + + augroup filetypedetect + au BufNewFile,BufRead *.xyz setf xyz + augroup END + +This will recognize all files that end in ".xyz" as the "xyz" filetype. The +":augroup" commands put this autocommand in the "filetypedetect" group. This +allows removing all autocommands for filetype detection when doing ":filetype +off". The "setf" command will set the 'filetype' option to its argument, +unless it was set already. This will make sure that 'filetype' isn't set +twice. + +You can use many different patterns to match the name of your file. Directory +names can also be included. See |autocmd-patterns|. For example, the files +under "/usr/share/scripts/" are all "ruby" files, but don't have the expected +file name extension. Adding this to the example above: > + + augroup filetypedetect + au BufNewFile,BufRead *.xyz setf xyz + au BufNewFile,BufRead /usr/share/scripts/* setf ruby + augroup END + +However, if you now edit a file /usr/share/scripts/README.txt, this is not a +ruby file. The danger of a pattern ending in "*" is that it quickly matches +too many files. To avoid trouble with this, put the filetype.vim file in +another directory, one that is at the end of 'runtimepath'. For Unix for +example, you could use "~/.vim/after/filetype.vim". + You now put the detection of text files in ~/.vim/filetype.vim: > + + augroup filetypedetect + au BufNewFile,BufRead *.txt setf text + augroup END + +That file is found in 'runtimepath' first. Then use this in +~/.vim/after/filetype.vim, which is found last: > + + augroup filetypedetect + au BufNewFile,BufRead /usr/share/scripts/* setf ruby + augroup END + +What will happen now is that Vim searches for "filetype.vim" files in each +directory in 'runtimepath'. First ~/.vim/filetype.vim is found. The +autocommand to catch *.txt files is defined there. Then Vim finds the +filetype.vim file in $VIMRUNTIME, which is halfway 'runtimepath'. Finally +~/.vim/after/filetype.vim is found and the autocommand for detecting ruby +files in /usr/share/scripts is added. + When you now edit /usr/share/scripts/README.txt, the autocommands are +checked in the order in which they were defined. The *.txt pattern matches, +thus "setf text" is executed to set the filetype to "text". The pattern for +ruby matches too, and the "setf ruby" is executed. But since 'filetype' was +already set to "text", nothing happens here. + When you edit the file /usr/share/scripts/foobar the same autocommands are +checked. Only the one for ruby matches and "setf ruby" sets 'filetype' to +ruby. + + +RECOGNIZING BY CONTENTS + +If your file cannot be recognized by its file name, you might be able to +recognize it by its contents. For example, many script files start with a +line like: + + #!/bin/xyz ~ + +To recognize this script create a file "scripts.vim" in your runtime directory +(same place where filetype.vim goes). It might look like this: > + + if did_filetype() + finish + endif + if getline(1) =~ '^#!.*[/\\]xyz\>' + setf xyz + endif + +The first check with did_filetype() is to avoid that you will check the +contents of files for which the filetype was already detected by the file +name. That avoids wasting time on checking the file when the "setf" command +won't do anything. + The scripts.vim file is sourced by an autocommand in the default +filetype.vim file. Therefore, the order of checks is: + + 1. filetype.vim files before $VIMRUNTIME in 'runtimepath' + 2. first part of $VIMRUNTIME/filetype.vim + 3. all scripts.vim files in 'runtimepath' + 4. remainder of $VIMRUNTIME/filetype.vim + 5. filetype.vim files after $VIMRUNTIME in 'runtimepath' + +If this is not sufficient for you, add an autocommand that matches all files +and sources a script or executes a function to check the contents of the file. + +============================================================================== + +Next chapter: |usr_44.txt| Your own syntax highlighted + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_44.txt b/share/vim/vim74/doc/usr_44.txt new file mode 100644 index 00000000..48f661eb --- /dev/null +++ b/share/vim/vim74/doc/usr_44.txt @@ -0,0 +1,719 @@ +*usr_44.txt* For Vim version 7.4. Last change: 2008 Dec 28 + + VIM USER MANUAL - by Bram Moolenaar + + Your own syntax highlighted + + +Vim comes with highlighting for a couple of hundred different file types. If +the file you are editing isn't included, read this chapter to find out how to +get this type of file highlighted. Also see |:syn-define| in the reference +manual. + +|44.1| Basic syntax commands +|44.2| Keywords +|44.3| Matches +|44.4| Regions +|44.5| Nested items +|44.6| Following groups +|44.7| Other arguments +|44.8| Clusters +|44.9| Including another syntax file +|44.10| Synchronizing +|44.11| Installing a syntax file +|44.12| Portable syntax file layout + + Next chapter: |usr_45.txt| Select your language + Previous chapter: |usr_43.txt| Using filetypes +Table of contents: |usr_toc.txt| + +============================================================================== +*44.1* Basic syntax commands + +Using an existing syntax file to start with will save you a lot of time. Try +finding a syntax file in $VIMRUNTIME/syntax for a language that is similar. +These files will also show you the normal layout of a syntax file. To +understand it, you need to read the following. + +Let's start with the basic arguments. Before we start defining any new +syntax, we need to clear out any old definitions: > + + :syntax clear + +This isn't required in the final syntax file, but very useful when +experimenting. + +There are more simplifications in this chapter. If you are writing a syntax +file to be used by others, read all the way through the end to find out the +details. + + +LISTING DEFINED ITEMS + +To check which syntax items are currently defined, use this command: > + + :syntax + +You can use this to check which items have actually been defined. Quite +useful when you are experimenting with a new syntax file. It also shows the +colors used for each item, which helps to find out what is what. + To list the items in a specific syntax group use: > + + :syntax list {group-name} + +This also can be used to list clusters (explained in |44.8|). Just include +the @ in the name. + + +MATCHING CASE + +Some languages are not case sensitive, such as Pascal. Others, such as C, are +case sensitive. You need to tell which type you have with the following +commands: > + :syntax case match + :syntax case ignore + +The "match" argument means that Vim will match the case of syntax elements. +Therefore, "int" differs from "Int" and "INT". If the "ignore" argument is +used, the following are equivalent: "Procedure", "PROCEDURE" and "procedure". + The ":syntax case" commands can appear anywhere in a syntax file and affect +the syntax definitions that follow. In most cases, you have only one ":syntax +case" command in your syntax file; if you work with an unusual language that +contains both case-sensitive and non-case-sensitive elements, however, you can +scatter the ":syntax case" command throughout the file. + +============================================================================== +*44.2* Keywords + +The most basic syntax elements are keywords. To define a keyword, use the +following form: > + + :syntax keyword {group} {keyword} ... + +The {group} is the name of a syntax group. With the ":highlight" command you +can assign colors to a {group}. The {keyword} argument is an actual keyword. +Here are a few examples: > + + :syntax keyword xType int long char + :syntax keyword xStatement if then else endif + +This example uses the group names "xType" and "xStatement". By convention, +each group name is prefixed by the filetype for the language being defined. +This example defines syntax for the x language (eXample language without an +interesting name). In a syntax file for "csh" scripts the name "cshType" +would be used. Thus the prefix is equal to the value of 'filetype'. + These commands cause the words "int", "long" and "char" to be highlighted +one way and the words "if", "then", "else" and "endif" to be highlighted +another way. Now you need to connect the x group names to standard Vim +names. You do this with the following commands: > + + :highlight link xType Type + :highlight link xStatement Statement + +This tells Vim to highlight "xType" like "Type" and "xStatement" like +"Statement". See |group-name| for the standard names. + + +UNUSUAL KEYWORDS + +The characters used in a keyword must be in the 'iskeyword' option. If you +use another character, the word will never match. Vim doesn't give a warning +message for this. + The x language uses the '-' character in keywords. This is how it's done: +> + :setlocal iskeyword+=- + :syntax keyword xStatement when-not + +The ":setlocal" command is used to change 'iskeyword' only for the current +buffer. Still it does change the behavior of commands like "w" and "*". If +that is not wanted, don't define a keyword but use a match (explained in the +next section). + +The x language allows for abbreviations. For example, "next" can be +abbreviated to "n", "ne" or "nex". You can define them by using this command: +> + :syntax keyword xStatement n[ext] + +This doesn't match "nextone", keywords always match whole words only. + +============================================================================== +*44.3* Matches + +Consider defining something a bit more complex. You want to match ordinary +identifiers. To do this, you define a match syntax item. This one matches +any word consisting of only lowercase letters: > + + :syntax match xIdentifier /\<\l\+\>/ +< + Note: + Keywords overrule any other syntax item. Thus the keywords "if", + "then", etc., will be keywords, as defined with the ":syntax keyword" + commands above, even though they also match the pattern for + xIdentifier. + +The part at the end is a pattern, like it's used for searching. The // is +used to surround the pattern (like how it's done in a ":substitute" command). +You can use any other character, like a plus or a quote. + +Now define a match for a comment. In the x language it is anything from # to +the end of a line: > + + :syntax match xComment /#.*/ + +Since you can use any search pattern, you can highlight very complex things +with a match item. See |pattern| for help on search patterns. + +============================================================================== +*44.4* Regions + +In the example x language, strings are enclosed in double quotation marks ("). +To highlight strings you define a region. You need a region start (double +quote) and a region end (double quote). The definition is as follows: > + + :syntax region xString start=/"/ end=/"/ + +The "start" and "end" directives define the patterns used to find the start +and end of the region. But what about strings that look like this? + + "A string with a double quote (\") in it" ~ + +This creates a problem: The double quotation marks in the middle of the string +will end the region. You need to tell Vim to skip over any escaped double +quotes in the string. Do this with the skip keyword: > + + :syntax region xString start=/"/ skip=/\\"/ end=/"/ + +The double backslash matches a single backslash, since the backslash is a +special character in search patterns. + +When to use a region instead of a match? The main difference is that a match +item is a single pattern, which must match as a whole. A region starts as +soon as the "start" pattern matches. Whether the "end" pattern is found or +not doesn't matter. Thus when the item depends on the "end" pattern to match, +you cannot use a region. Otherwise, regions are often simpler to define. And +it is easier to use nested items, as is explained in the next section. + +============================================================================== +*44.5* Nested items + +Take a look at this comment: + + %Get input TODO: Skip white space ~ + +You want to highlight TODO in big yellow letters, even though it is in a +comment that is highlighted blue. To let Vim know about this, you define the +following syntax groups: > + + :syntax keyword xTodo TODO contained + :syntax match xComment /%.*/ contains=xTodo + +In the first line, the "contained" argument tells Vim that this keyword can +exist only inside another syntax item. The next line has "contains=xTodo". +This indicates that the xTodo syntax element is inside it. The result is that +the comment line as a whole is matched with "xComment" and made blue. The +word TODO inside it is matched by xTodo and highlighted yellow (highlighting +for xTodo was setup for this). + + +RECURSIVE NESTING + +The x language defines code blocks in curly braces. And a code block may +contain other code blocks. This can be defined this way: > + + :syntax region xBlock start=/{/ end=/}/ contains=xBlock + +Suppose you have this text: + + while i < b { ~ + if a { ~ + b = c; ~ + } ~ + } ~ + +First a xBlock starts at the { in the first line. In the second line another +{ is found. Since we are inside a xBlock item, and it contains itself, a +nested xBlock item will start here. Thus the "b = c" line is inside the +second level xBlock region. Then a } is found in the next line, which matches +with the end pattern of the region. This ends the nested xBlock. Because the +} is included in the nested region, it is hidden from the first xBlock region. +Then at the last } the first xBlock region ends. + + +KEEPING THE END + +Consider the following two syntax items: > + + :syntax region xComment start=/%/ end=/$/ contained + :syntax region xPreProc start=/#/ end=/$/ contains=xComment + +You define a comment as anything from % to the end of the line. A +preprocessor directive is anything from # to the end of the line. Because you +can have a comment on a preprocessor line, the preprocessor definition +includes a "contains=xComment" argument. Now look what happens with this +text: + + #define X = Y % Comment text ~ + int foo = 1; ~ + +What you see is that the second line is also highlighted as xPreProc. The +preprocessor directive should end at the end of the line. That is why +you have used "end=/$/". So what is going wrong? + The problem is the contained comment. The comment starts with % and ends +at the end of the line. After the comment ends, the preprocessor syntax +continues. This is after the end of the line has been seen, so the next +line is included as well. + To avoid this problem and to avoid a contained syntax item eating a needed +end of line, use the "keepend" argument. This takes care of +the double end-of-line matching: > + + :syntax region xComment start=/%/ end=/$/ contained + :syntax region xPreProc start=/#/ end=/$/ contains=xComment keepend + + +CONTAINING MANY ITEMS + +You can use the contains argument to specify that everything can be contained. +For example: > + + :syntax region xList start=/\[/ end=/\]/ contains=ALL + +All syntax items will be contained in this one. It also contains itself, but +not at the same position (that would cause an endless loop). + You can specify that some groups are not contained. Thus contain all +groups but the ones that are listed: +> + :syntax region xList start=/\[/ end=/\]/ contains=ALLBUT,xString + +With the "TOP" item you can include all items that don't have a "contained" +argument. "CONTAINED" is used to only include items with a "contained" +argument. See |:syn-contains| for the details. + +============================================================================== +*44.6* Following groups + +The x language has statements in this form: + + if (condition) then ~ + +You want to highlight the three items differently. But "(condition)" and +"then" might also appear in other places, where they get different +highlighting. This is how you can do this: > + + :syntax match xIf /if/ nextgroup=xIfCondition skipwhite + :syntax match xIfCondition /([^)]*)/ contained nextgroup=xThen skipwhite + :syntax match xThen /then/ contained + +The "nextgroup" argument specifies which item can come next. This is not +required. If none of the items that are specified are found, nothing happens. +For example, in this text: + + if not (condition) then ~ + +The "if" is matched by xIf. "not" doesn't match the specified nextgroup +xIfCondition, thus only the "if" is highlighted. + +The "skipwhite" argument tells Vim that white space (spaces and tabs) may +appear in between the items. Similar arguments are "skipnl", which allows a +line break in between the items, and "skipempty", which allows empty lines. +Notice that "skipnl" doesn't skip an empty line, something must match after +the line break. + +============================================================================== +*44.7* Other arguments + +MATCHGROUP + +When you define a region, the entire region is highlighted according to the +group name specified. To highlight the text enclosed in parentheses () with +the group xInside, for example, use the following command: > + + :syntax region xInside start=/(/ end=/)/ + +Suppose, that you want to highlight the parentheses differently. You can do +this with a lot of convoluted region statements, or you can use the +"matchgroup" argument. This tells Vim to highlight the start and end of a +region with a different highlight group (in this case, the xParen group): > + + :syntax region xInside matchgroup=xParen start=/(/ end=/)/ + +The "matchgroup" argument applies to the start or end match that comes after +it. In the previous example both start and end are highlighted with xParen. +To highlight the end with xParenEnd: > + + :syntax region xInside matchgroup=xParen start=/(/ + \ matchgroup=xParenEnd end=/)/ + +A side effect of using "matchgroup" is that contained items will not match in +the start or end of the region. The example for "transparent" uses this. + + +TRANSPARENT + +In a C language file you would like to highlight the () text after a "while" +differently from the () text after a "for". In both of these there can be +nested () items, which should be highlighted in the same way. You must make +sure the () highlighting stops at the matching ). This is one way to do this: +> + :syntax region cWhile matchgroup=cWhile start=/while\s*(/ end=/)/ + \ contains=cCondNest + :syntax region cFor matchgroup=cFor start=/for\s*(/ end=/)/ + \ contains=cCondNest + :syntax region cCondNest start=/(/ end=/)/ contained transparent + +Now you can give cWhile and cFor different highlighting. The cCondNest item +can appear in either of them, but take over the highlighting of the item it is +contained in. The "transparent" argument causes this. + Notice that the "matchgroup" argument has the same group as the item +itself. Why define it then? Well, the side effect of using a matchgroup is +that contained items are not found in the match with the start item then. +This avoids that the cCondNest group matches the ( just after the "while" or +"for". If this would happen, it would span the whole text until the matching +) and the region would continue after it. Now cCondNest only matches after +the match with the start pattern, thus after the first (. + + +OFFSETS + +Suppose you want to define a region for the text between ( and ) after an +"if". But you don't want to include the "if" or the ( and ). You can do this +by specifying offsets for the patterns. Example: > + + :syntax region xCond start=/if\s*(/ms=e+1 end=/)/me=s-1 + +The offset for the start pattern is "ms=e+1". "ms" stands for Match Start. +This defines an offset for the start of the match. Normally the match starts +where the pattern matches. "e+1" means that the match now starts at the end +of the pattern match, and then one character further. + The offset for the end pattern is "me=s-1". "me" stands for Match End. +"s-1" means the start of the pattern match and then one character back. The +result is that in this text: + + if (foo == bar) ~ + +Only the text "foo == bar" will be highlighted as xCond. + +More about offsets here: |:syn-pattern-offset|. + + +ONELINE + +The "oneline" argument indicates that the region does not cross a line +boundary. For example: > + + :syntax region xIfThen start=/if/ end=/then/ oneline + +This defines a region that starts at "if" and ends at "then". But if there is +no "then" after the "if", the region doesn't match. + + Note: + When using "oneline" the region doesn't start if the end pattern + doesn't match in the same line. Without "oneline" Vim does _not_ + check if there is a match for the end pattern. The region starts even + when the end pattern doesn't match in the rest of the file. + + +CONTINUATION LINES AND AVOIDING THEM + +Things now become a little more complex. Let's define a preprocessor line. +This starts with a # in the first column and continues until the end of the +line. A line that ends with \ makes the next line a continuation line. The +way you handle this is to allow the syntax item to contain a continuation +pattern: > + + :syntax region xPreProc start=/^#/ end=/$/ contains=xLineContinue + :syntax match xLineContinue "\\$" contained + +In this case, although xPreProc normally matches a single line, the group +contained in it (namely xLineContinue) lets it go on for more than one line. +For example, it would match both of these lines: + + #define SPAM spam spam spam \ ~ + bacon and spam ~ + +In this case, this is what you want. If it is not what you want, you can call +for the region to be on a single line by adding "excludenl" to the contained +pattern. For example, you want to highlight "end" in xPreProc, but only at +the end of the line. To avoid making the xPreProc continue on the next line, +like xLineContinue does, use "excludenl" like this: > + + :syntax region xPreProc start=/^#/ end=/$/ + \ contains=xLineContinue,xPreProcEnd + :syntax match xPreProcEnd excludenl /end$/ contained + :syntax match xLineContinue "\\$" contained + +"excludenl" must be placed before the pattern. Since "xLineContinue" doesn't +have "excludenl", a match with it will extend xPreProc to the next line as +before. + +============================================================================== +*44.8* Clusters + +One of the things you will notice as you start to write a syntax file is that +you wind up generating a lot of syntax groups. Vim enables you to define a +collection of syntax groups called a cluster. + Suppose you have a language that contains for loops, if statements, while +loops, and functions. Each of them contains the same syntax elements: numbers +and identifiers. You define them like this: > + + :syntax match xFor /^for.*/ contains=xNumber,xIdent + :syntax match xIf /^if.*/ contains=xNumber,xIdent + :syntax match xWhile /^while.*/ contains=xNumber,xIdent + +You have to repeat the same "contains=" every time. If you want to add +another contained item, you have to add it three times. Syntax clusters +simplify these definitions by enabling you to have one cluster stand for +several syntax groups. + To define a cluster for the two items that the three groups contain, use +the following command: > + + :syntax cluster xState contains=xNumber,xIdent + +Clusters are used inside other syntax items just like any syntax group. +Their names start with @. Thus, you can define the three groups like this: > + + :syntax match xFor /^for.*/ contains=@xState + :syntax match xIf /^if.*/ contains=@xState + :syntax match xWhile /^while.*/ contains=@xState + +You can add new group names to this cluster with the "add" argument: > + + :syntax cluster xState add=xString + +You can remove syntax groups from this list as well: > + + :syntax cluster xState remove=xNumber + +============================================================================== +*44.9* Including another syntax file + +The C++ language syntax is a superset of the C language. Because you do not +want to write two syntax files, you can have the C++ syntax file read in the +one for C by using the following command: > + + :runtime! syntax/c.vim + +The ":runtime!" command searches 'runtimepath' for all "syntax/c.vim" files. +This makes the C parts of the C++ syntax be defined like for C files. If you +have replaced the c.vim syntax file, or added items with an extra file, these +will be loaded as well. + After loading the C syntax items the specific C++ items can be defined. +For example, add keywords that are not used in C: > + + :syntax keyword cppStatement new delete this friend using + +This works just like in any other syntax file. + +Now consider the Perl language. A Perl script consists of two distinct parts: +a documentation section in POD format, and a program written in Perl itself. +The POD section starts with "=head" and ends with "=cut". + You want to define the POD syntax in one file, and use it from the Perl +syntax file. The ":syntax include" command reads in a syntax file and stores +the elements it defined in a syntax cluster. For Perl, the statements are as +follows: > + + :syntax include @Pod <sfile>:p:h/pod.vim + :syntax region perlPOD start=/^=head/ end=/^=cut/ contains=@Pod + +When "=head" is found in a Perl file, the perlPOD region starts. In this +region the @Pod cluster is contained. All the items defined as top-level +items in the pod.vim syntax files will match here. When "=cut" is found, the +region ends and we go back to the items defined in the Perl file. + The ":syntax include" command is clever enough to ignore a ":syntax clear" +command in the included file. And an argument such as "contains=ALL" will +only contain items defined in the included file, not in the file that includes +it. + The "<sfile>:p:h/" part uses the name of the current file (<sfile>), +expands it to a full path (:p) and then takes the head (:h). This results in +the directory name of the file. This causes the pod.vim file in the same +directory to be included. + +============================================================================== +*44.10* Synchronizing + +Compilers have it easy. They start at the beginning of a file and parse it +straight through. Vim does not have it so easy. It must start in the middle, +where the editing is being done. So how does it tell where it is? + The secret is the ":syntax sync" command. This tells Vim how to figure out +where it is. For example, the following command tells Vim to scan backward +for the beginning or end of a C-style comment and begin syntax coloring from +there: > + + :syntax sync ccomment + +You can tune this processing with some arguments. The "minlines" argument +tells Vim the minimum number of lines to look backward, and "maxlines" tells +the editor the maximum number of lines to scan. + For example, the following command tells Vim to look at least 10 lines +before the top of the screen: > + + :syntax sync ccomment minlines=10 maxlines=500 + +If it cannot figure out where it is in that space, it starts looking farther +and farther back until it figures out what to do. But it looks no farther +back than 500 lines. (A large "maxlines" slows down processing. A small one +might cause synchronization to fail.) + To make synchronizing go a bit faster, tell Vim which syntax items can be +skipped. Every match and region that only needs to be used when actually +displaying text can be given the "display" argument. + By default, the comment to be found will be colored as part of the Comment +syntax group. If you want to color things another way, you can specify a +different syntax group: > + + :syntax sync ccomment xAltComment + +If your programming language does not have C-style comments in it, you can try +another method of synchronization. The simplest way is to tell Vim to space +back a number of lines and try to figure out things from there. The following +command tells Vim to go back 150 lines and start parsing from there: > + + :syntax sync minlines=150 + +A large "minlines" value can make Vim slower, especially when scrolling +backwards in the file. + Finally, you can specify a syntax group to look for by using this command: +> + :syntax sync match {sync-group-name} + \ grouphere {group-name} {pattern} + +This tells Vim that when it sees {pattern} the syntax group named {group-name} +begins just after the pattern given. The {sync-group-name} is used to give a +name to this synchronization specification. For example, the sh scripting +language begins an if statement with "if" and ends it with "fi": + + if [ --f file.txt ] ; then ~ + echo "File exists" ~ + fi ~ + +To define a "grouphere" directive for this syntax, you use the following +command: > + + :syntax sync match shIfSync grouphere shIf "\<if\>" + +The "groupthere" argument tells Vim that the pattern ends a group. For +example, the end of the if/fi group is as follows: > + + :syntax sync match shIfSync groupthere NONE "\<fi\>" + +In this example, the NONE tells Vim that you are not in any special syntax +region. In particular, you are not inside an if block. + +You also can define matches and regions that are with no "grouphere" or +"groupthere" arguments. These groups are for syntax groups skipped during +synchronization. For example, the following skips over anything inside {}, +even if it would normally match another synchronization method: > + + :syntax sync match xSpecial /{.*}/ + +More about synchronizing in the reference manual: |:syn-sync|. + +============================================================================== +*44.11* Installing a syntax file + +When your new syntax file is ready to be used, drop it in a "syntax" directory +in 'runtimepath'. For Unix that would be "~/.vim/syntax". + The name of the syntax file must be equal to the file type, with ".vim" +added. Thus for the x language, the full path of the file would be: + + ~/.vim/syntax/x.vim ~ + +You must also make the file type be recognized. See |43.2|. + +If your file works well, you might want to make it available to other Vim +users. First read the next section to make sure your file works well for +others. Then e-mail it to the Vim maintainer: <maintainer@vim.org>. Also +explain how the filetype can be detected. With a bit of luck your file will +be included in the next Vim version! + + +ADDING TO AN EXISTING SYNTAX FILE + +We were assuming you were adding a completely new syntax file. When an existing +syntax file works, but is missing some items, you can add items in a separate +file. That avoids changing the distributed syntax file, which will be lost +when installing a new version of Vim. + Write syntax commands in your file, possibly using group names from the +existing syntax. For example, to add new variable types to the C syntax file: +> + :syntax keyword cType off_t uint + +Write the file with the same name as the original syntax file. In this case +"c.vim". Place it in a directory near the end of 'runtimepath'. This makes +it loaded after the original syntax file. For Unix this would be: + + ~/.vim/after/syntax/c.vim ~ + +============================================================================== +*44.12* Portable syntax file layout + +Wouldn't it be nice if all Vim users exchange syntax files? To make this +possible, the syntax file must follow a few guidelines. + +Start with a header that explains what the syntax file is for, who maintains +it and when it was last updated. Don't include too much information about +changes history, not many people will read it. Example: > + + " Vim syntax file + " Language: C + " Maintainer: Bram Moolenaar <Bram@vim.org> + " Last Change: 2001 Jun 18 + " Remark: Included by the C++ syntax. + +Use the same layout as the other syntax files. Using an existing syntax file +as an example will save you a lot of time. + +Choose a good, descriptive name for your syntax file. Use lowercase letters +and digits. Don't make it too long, it is used in many places: The name of +the syntax file "name.vim", 'filetype', b:current_syntax and the start of each +syntax group (nameType, nameStatement, nameString, etc). + +Start with a check for "b:current_syntax". If it is defined, some other +syntax file, earlier in 'runtimepath' was already loaded: > + + if exists("b:current_syntax") + finish + endif + +To be compatible with Vim 5.8 use: > + + if version < 600 + syntax clear + elseif exists("b:current_syntax") + finish + endif + +Set "b:current_syntax" to the name of the syntax at the end. Don't forget +that included files do this too, you might have to reset "b:current_syntax" if +you include two files. + +If you want your syntax file to work with Vim 5.x, add a check for v:version. +See yacc.vim for an example. + +Do not include anything that is a user preference. Don't set 'tabstop', +'expandtab', etc. These belong in a filetype plugin. + +Do not include mappings or abbreviations. Only include setting 'iskeyword' if +it is really necessary for recognizing keywords. + +To allow users select their own preferred colors, make a different group name +for every kind of highlighted item. Then link each of them to one of the +standard highlight groups. That will make it work with every color scheme. +If you select specific colors it will look bad with some color schemes. And +don't forget that some people use a different background color, or have only +eight colors available. + +For the linking use "hi def link", so that the user can select different +highlighting before your syntax file is loaded. Example: > + + hi def link nameString String + hi def link nameNumber Number + hi def link nameCommand Statement + ... etc ... + +Add the "display" argument to items that are not used when syncing, to speed +up scrolling backwards and CTRL-L. + +============================================================================== + +Next chapter: |usr_45.txt| Select your language + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_45.txt b/share/vim/vim74/doc/usr_45.txt new file mode 100644 index 00000000..30369817 --- /dev/null +++ b/share/vim/vim74/doc/usr_45.txt @@ -0,0 +1,419 @@ +*usr_45.txt* For Vim version 7.4. Last change: 2008 Nov 15 + + VIM USER MANUAL - by Bram Moolenaar + + Select your language + + +The messages in Vim can be given in several languages. This chapter explains +how to change which one is used. Also, the different ways to work with files +in various languages is explained. + +|45.1| Language for Messages +|45.2| Language for Menus +|45.3| Using another encoding +|45.4| Editing files with a different encoding +|45.5| Entering language text + + Next chapter: |usr_90.txt| Installing Vim + Previous chapter: |usr_44.txt| Your own syntax highlighted +Table of contents: |usr_toc.txt| + +============================================================================== +*45.1* Language for Messages + +When you start Vim, it checks the environment to find out what language you +are using. Mostly this should work fine, and you get the messages in your +language (if they are available). To see what the current language is, use +this command: > + + :language + +If it replies with "C", this means the default is being used, which is +English. + + Note: + Using different languages only works when Vim was compiled to handle + it. To find out if it works, use the ":version" command and check the + output for "+gettext" and "+multi_lang". If they are there, you are + OK. If you see "-gettext" or "-multi_lang" you will have to find + another Vim. + +What if you would like your messages in a different language? There are +several ways. Which one you should use depends on the capabilities of your +system. + The first way is to set the environment to the desired language before +starting Vim. Example for Unix: > + + env LANG=de_DE.ISO_8859-1 vim + +This only works if the language is available on your system. The advantage is +that all the GUI messages and things in libraries will use the right language +as well. A disadvantage is that you must do this before starting Vim. If you +want to change language while Vim is running, you can use the second method: > + + :language fr_FR.ISO_8859-1 + +This way you can try out several names for your language. You will get an +error message when it's not supported on your system. You don't get an error +when translated messages are not available. Vim will silently fall back to +using English. + To find out which languages are supported on your system, find the +directory where they are listed. On my system it is "/usr/share/locale". On +some systems it's in "/usr/lib/locale". The manual page for "setlocale" +should give you a hint where it is found on your system. + Be careful to type the name exactly as it should be. Upper and lowercase +matter, and the '-' and '_' characters are easily confused. + +You can also set the language separately for messages, edited text and the +time format. See |:language|. + + +DO-IT-YOURSELF MESSAGE TRANSLATION + +If translated messages are not available for your language, you could write +them yourself. To do this, get the source code for Vim and the GNU gettext +package. After unpacking the sources, instructions can be found in the +directory src/po/README.txt. + It's not too difficult to do the translation. You don't need to be a +programmer. You must know both English and the language you are translating +to, of course. + When you are satisfied with the translation, consider making it available +to others. Upload it at vim-online (http://vim.sf.net) or e-mail it to +the Vim maintainer <maintainer@vim.org>. Or both. + +============================================================================== +*45.2* Language for Menus + +The default menus are in English. To be able to use your local language, they +must be translated. Normally this is automatically done for you if the +environment is set for your language, just like with messages. You don't need +to do anything extra for this. But it only works if translations for the +language are available. + Suppose you are in Germany, with the language set to German, but prefer to +use "File" instead of "Datei". You can switch back to using the English menus +this way: > + + :set langmenu=none + +It is also possible to specify a language: > + + :set langmenu=nl_NL.ISO_8859-1 + +Like above, differences between "-" and "_" matter. However, upper/lowercase +differences are ignored here. + The 'langmenu' option must be set before the menus are loaded. Once the +menus have been defined changing 'langmenu' has no direct effect. Therefore, +put the command to set 'langmenu' in your vimrc file. + If you really want to switch menu language while running Vim, you can do it +this way: > + + :source $VIMRUNTIME/delmenu.vim + :set langmenu=de_DE.ISO_8859-1 + :source $VIMRUNTIME/menu.vim + +There is one drawback: All menus that you defined yourself will be gone. You +will need to redefine them as well. + + +DO-IT-YOURSELF MENU TRANSLATION + +To see which menu translations are available, look in this directory: + + $VIMRUNTIME/lang ~ + +The files are called menu_{language}.vim. If you don't see the language you +want to use, you can do your own translations. The simplest way to do this is +by copying one of the existing language files, and change it. + First find out the name of your language with the ":language" command. Use +this name, but with all letters made lowercase. Then copy the file to your +own runtime directory, as found early in 'runtimepath'. For example, for Unix +you would do: > + + :!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim + +You will find hints for the translation in "$VIMRUNTIME/lang/README.txt". + +============================================================================== +*45.3* Using another encoding + +Vim guesses that the files you are going to edit are encoded for your +language. For many European languages this is "latin1". Then each byte is +one character. That means there are 256 different characters possible. For +Asian languages this is not sufficient. These mostly use a double-byte +encoding, providing for over ten thousand possible characters. This still +isn't enough when a text is to contain several different languages. This is +where Unicode comes in. It was designed to include all characters used in +commonly used languages. This is the "Super encoding that replaces all +others". But it isn't used that much yet. + Fortunately, Vim supports these three kinds of encodings. And, with some +restrictions, you can use them even when your environment uses another +language than the text. + Nevertheless, when you only edit files that are in the encoding of your +language, the default should work fine and you don't need to do anything. The +following is only relevant when you want to edit different languages. + + Note: + Using different encodings only works when Vim was compiled to handle + it. To find out if it works, use the ":version" command and check the + output for "+multi_byte". If it's there, you are OK. If you see + "-multi_byte" you will have to find another Vim. + + +USING UNICODE IN THE GUI + +The nice thing about Unicode is that other encodings can be converted to it +and back without losing information. When you make Vim use Unicode +internally, you will be able to edit files in any encoding. + Unfortunately, the number of systems supporting Unicode is still limited. +Thus it's unlikely that your language uses it. You need to tell Vim you want +to use Unicode, and how to handle interfacing with the rest of the system. + Let's start with the GUI version of Vim, which is able to display Unicode +characters. This should work: > + + :set encoding=utf-8 + :set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 + +The 'encoding' option tells Vim the encoding of the characters that you use. +This applies to the text in buffers (files you are editing), registers, Vim +script files, etc. You can regard 'encoding' as the setting for the internals +of Vim. + This example assumes you have this font on your system. The name in the +example is for the X Window System. This font is in a package that is used to +enhance xterm with Unicode support. If you don't have this font, you might +find it here: + + http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz ~ + +For MS-Windows, some fonts have a limited number of Unicode characters. Try +using the "Courier New" font. You can use the Edit/Select Font... menu to +select and try out the fonts available. Only fixed-width fonts can be used +though. Example: > + + :set guifont=courier_new:h12 + +If it doesn't work well, try getting a fontpack. If Microsoft didn't move it, +you can find it here: + + http://www.microsoft.com/typography/fonts/default.aspx ~ + +Now you have told Vim to use Unicode internally and display text with a +Unicode font. Typed characters still arrive in the encoding of your original +language. This requires converting them to Unicode. Tell Vim the language +from which to convert with the 'termencoding' option. You can do it like +this: > + + :let &termencoding = &encoding + :set encoding=utf-8 + +This assigns the old value of 'encoding' to 'termencoding' before setting +'encoding' to utf-8. You will have to try out if this really works for your +setup. It should work especially well when using an input method for an Asian +language, and you want to edit Unicode text. + + +USING UNICODE IN A UNICODE TERMINAL + +There are terminals that support Unicode directly. The standard xterm that +comes with XFree86 is one of them. Let's use that as an example. + First of all, the xterm must have been compiled with Unicode support. See +|UTF8-xterm| how to check that and how to compile it when needed. + Start the xterm with the "-u8" argument. You might also need so specify a +font. Example: > + + xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 + +Now you can run Vim inside this terminal. Set 'encoding' to "utf-8" as +before. That's all. + + +USING UNICODE IN AN ORDINARY TERMINAL + +Suppose you want to work with Unicode files, but don't have a terminal with +Unicode support. You can do this with Vim, although characters that are not +supported by the terminal will not be displayed. The layout of the text +will be preserved. > + + :let &termencoding = &encoding + :set encoding=utf-8 + +This is the same as what was used for the GUI. But it works differently: Vim +will convert the displayed text before sending it to the terminal. That +avoids that the display is messed up with strange characters. + For this to work the conversion between 'termencoding' and 'encoding' must +be possible. Vim will convert from latin1 to Unicode, thus that always works. +For other conversions the |+iconv| feature is required. + Try editing a file with Unicode characters in it. You will notice that Vim +will put a question mark (or underscore or some other character) in places +where a character should be that the terminal can't display. Move the cursor +to a question mark and use this command: > + + ga + +Vim will display a line with the code of the character. This gives you a hint +about what character it is. You can look it up in a Unicode table. You could +actually view a file that way, if you have lots of time at hand. + + Note: + Since 'encoding' is used for all text inside Vim, changing it makes + all non-ASCII text invalid. You will notice this when using registers + and the 'viminfo' file (e.g., a remembered search pattern). It's + recommended to set 'encoding' in your vimrc file, and leave it alone. + +============================================================================== +*45.4* Editing files with a different encoding + +Suppose you have setup Vim to use Unicode, and you want to edit a file that is +in 16-bit Unicode. Sounds simple, right? Well, Vim actually uses utf-8 +encoding internally, thus the 16-bit encoding must be converted, since there +is a difference between the character set (Unicode) and the encoding (utf-8 or +16-bit). + Vim will try to detect what kind of file you are editing. It uses the +encoding names in the 'fileencodings' option. When using Unicode, the default +value is: "ucs-bom,utf-8,latin1". This means that Vim checks the file to see +if it's one of these encodings: + + ucs-bom File must start with a Byte Order Mark (BOM). This + allows detection of 16-bit, 32-bit and utf-8 Unicode + encodings. + utf-8 utf-8 Unicode. This is rejected when a sequence of + bytes is illegal in utf-8. + latin1 The good old 8-bit encoding. Always works. + +When you start editing that 16-bit Unicode file, and it has a BOM, Vim will +detect this and convert the file to utf-8 when reading it. The 'fileencoding' +option (without s at the end) is set to the detected value. In this case it +is "utf-16le". That means it's Unicode, 16-bit and little-endian. This +file format is common on MS-Windows (e.g., for registry files). + When writing the file, Vim will compare 'fileencoding' with 'encoding'. If +they are different, the text will be converted. + An empty value for 'fileencoding' means that no conversion is to be done. +Thus the text is assumed to be encoded with 'encoding'. + +If the default 'fileencodings' value is not good for you, set it to the +encodings you want Vim to try. Only when a value is found to be invalid will +the next one be used. Putting "latin1" first doesn't work, because it is +never illegal. An example, to fall back to Japanese when the file doesn't +have a BOM and isn't utf-8: > + + :set fileencodings=ucs-bom,utf-8,sjis + +See |encoding-values| for suggested values. Other values may work as well. +This depends on the conversion available. + + +FORCING AN ENCODING + +If the automatic detection doesn't work you must tell Vim what encoding the +file is. Example: > + + :edit ++enc=koi8-r russian.txt + +The "++enc" part specifies the name of the encoding to be used for this file +only. Vim will convert the file from the specified encoding, Russian in this +example, to 'encoding'. 'fileencoding' will also be set to the specified +encoding, so that the reverse conversion can be done when writing the file. + The same argument can be used when writing the file. This way you can +actually use Vim to convert a file. Example: > + + :write ++enc=utf-8 russian.txt +< + Note: + Conversion may result in lost characters. Conversion from an encoding + to Unicode and back is mostly free of this problem, unless there are + illegal characters. Conversion from Unicode to other encodings often + loses information when there was more than one language in the file. + +============================================================================== +*45.5* Entering language text + +Computer keyboards don't have much more than a hundred keys. Some languages +have thousands of characters, Unicode has ten thousands. So how do you type +these characters? + First of all, when you don't use too many of the special characters, you +can use digraphs. This was already explained in |24.9|. + When you use a language that uses many more characters than keys on your +keyboard, you will want to use an Input Method (IM). This requires learning +the translation from typed keys to resulting character. When you need an IM +you probably already have one on your system. It should work with Vim like +with other programs. For details see |mbyte-XIM| for the X Window system and +|mbyte-IME| for MS-Windows. + + +KEYMAPS + +For some languages the character set is different from latin, but uses a +similar number of characters. It's possible to map keys to characters. Vim +uses keymaps for this. + Suppose you want to type Hebrew. You can load the keymap like this: > + + :set keymap=hebrew + +Vim will try to find a keymap file for you. This depends on the value of +'encoding'. If no matching file was found, you will get an error message. + +Now you can type Hebrew in Insert mode. In Normal mode, and when typing a ":" +command, Vim automatically switches to English. You can use this command to +switch between Hebrew and English: > + + CTRL-^ + +This only works in Insert mode and Command-line mode. In Normal mode it does +something completely different (jumps to alternate file). + The usage of the keymap is indicated in the mode message, if you have the +'showmode' option set. In the GUI Vim will indicate the usage of keymaps with +a different cursor color. + You can also change the usage of the keymap with the 'iminsert' and +'imsearch' options. + +To see the list of mappings, use this command: > + + :lmap + +To find out which keymap files are available, in the GUI you can use the +Edit/Keymap menu. Otherwise you can use this command: > + + :echo globpath(&rtp, "keymap/*.vim") + + +DO-IT-YOURSELF KEYMAPS + +You can create your own keymap file. It's not very difficult. Start with +a keymap file that is similar to the language you want to use. Copy it to the +"keymap" directory in your runtime directory. For example, for Unix, you +would use the directory "~/.vim/keymap". + The name of the keymap file must look like this: + + keymap/{name}.vim ~ +or + keymap/{name}_{encoding}.vim ~ + +{name} is the name of the keymap. Chose a name that is obvious, but different +from existing keymaps (unless you want to replace an existing keymap file). +{name} cannot contain an underscore. Optionally, add the encoding used after +an underscore. Examples: + + keymap/hebrew.vim ~ + keymap/hebrew_utf-8.vim ~ + +The contents of the file should be self-explanatory. Look at a few of the +keymaps that are distributed with Vim. For the details, see |mbyte-keymap|. + + +LAST RESORT + +If all other methods fail, you can enter any character with CTRL-V: + + encoding type range ~ + 8-bit CTRL-V 123 decimal 0-255 + 8-bit CTRL-V x a1 hexadecimal 00-ff + 16-bit CTRL-V u 013b hexadecimal 0000-ffff + 31-bit CTRL-V U 001303a4 hexadecimal 00000000-7fffffff + +Don't type the spaces. See |i_CTRL-V_digit| for the details. + +============================================================================== + +Next chapter: |usr_90.txt| Installing Vim + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_90.txt b/share/vim/vim74/doc/usr_90.txt new file mode 100644 index 00000000..38e5886f --- /dev/null +++ b/share/vim/vim74/doc/usr_90.txt @@ -0,0 +1,498 @@ +*usr_90.txt* For Vim version 7.4. Last change: 2008 Sep 10 + + VIM USER MANUAL - by Bram Moolenaar + + Installing Vim + + *install* +Before you can use Vim you have to install it. Depending on your system it's +simple or easy. This chapter gives a few hints and also explains how +upgrading to a new version is done. + +|90.1| Unix +|90.2| MS-Windows +|90.3| Upgrading +|90.4| Common installation issues +|90.5| Uninstalling Vim + + Previous chapter: |usr_45.txt| Select your language +Table of contents: |usr_toc.txt| + +============================================================================== +*90.1* Unix + +First you have to decide if you are going to install Vim system-wide or for a +single user. The installation is almost the same, but the directory where Vim +is installed in differs. + For a system-wide installation the base directory "/usr/local" is often +used. But this may be different for your system. Try finding out where other +packages are installed. + When installing for a single user, you can use your home directory as the +base. The files will be placed in subdirectories like "bin" and "shared/vim". + + +FROM A PACKAGE + +You can get precompiled binaries for many different UNIX systems. There is a +long list with links on this page: + + http://www.vim.org/binaries.html ~ + +Volunteers maintain the binaries, so they are often out of date. It is a +good idea to compile your own UNIX version from the source. Also, creating +the editor from the source allows you to control which features are compiled. +This does require a compiler though. + +If you have a Linux distribution, the "vi" program is probably a minimal +version of Vim. It doesn't do syntax highlighting, for example. Try finding +another Vim package in your distribution, or search on the web site. + + +FROM SOURCES + +To compile and install Vim, you will need the following: + + - A C compiler (GCC preferred) + - The GZIP program (you can get it from www.gnu.org) + - The Vim source and runtime archives + +To get the Vim archives, look in this file for a mirror near you, this should +provide the fastest download: + + ftp://ftp.vim.org/pub/vim/MIRRORS ~ + +Or use the home site ftp.vim.org, if you think it's fast enough. Go to the +"unix" directory and you'll find a list of files there. The version number is +embedded in the file name. You will want to get the most recent version. + You can get the files for Unix in two ways: One big archive that contains +everything, or four smaller ones that each fit on a floppy disk. For version +6.1 the single big one is called: + + vim-6.1.tar.bz2 ~ + +You need the bzip2 program to uncompress it. If you don't have it, get the +four smaller files, which can be uncompressed with gzip. For Vim 6.1 they are +called: + + vim-6.1-src1.tar.gz ~ + vim-6.1-src2.tar.gz ~ + vim-6.1-rt1.tar.gz ~ + vim-6.1-rt2.tar.gz ~ + + +COMPILING + +First create a top directory to work in, for example: > + + mkdir ~/vim + cd ~/vim + +Then unpack the archives there. If you have the one big archive, you unpack +it like this: > + + bzip2 -d -c path/vim-6.1.tar.bz2 | tar xf - + +Change "path" to where you have downloaded the file. > + + gzip -d -c path/vim-6.1-src1.tar.gz | tar xf - + gzip -d -c path/vim-6.1-src2.tar.gz | tar xf - + gzip -d -c path/vim-6.1-rt1.tar.gz | tar xf - + gzip -d -c path/vim-6.1-rt2.tar.gz | tar xf - + +If you are satisfied with getting the default features, and your environment +is setup properly, you should be able to compile Vim with just this: > + + cd vim61/src + make + +The make program will run configure and compile everything. Further on we +will explain how to compile with different features. + If there are errors while compiling, carefully look at the error messages. +There should be a hint about what went wrong. Hopefully you will be able to +correct it. You might have to disable some features to make Vim compile. +Look in the Makefile for specific hints for your system. + + +TESTING + +Now you can check if compiling worked OK: > + + make test + +This will run a sequence of test scripts to verify that Vim works as expected. +Vim will be started many times and all kinds of text and messages flash by. +If it is alright you will finally see: + + test results: ~ + ALL DONE ~ + +If you get "TEST FAILURE" some test failed. If there are one or two messages +about failed tests, Vim might still work, but not perfectly. If you see a lot +of error messages or Vim doesn't finish until the end, there must be something +wrong. Either try to find out yourself, or find someone who can solve it. +You could look in the |maillist-archive| for a solution. If everything else +fails, you could ask in the vim |maillist| if someone can help you. + + +INSTALLING + *install-home* +If you want to install in your home directory, edit the Makefile and search +for a line: + + #prefix = $(HOME) ~ + +Remove the # at the start of the line. + When installing for the whole system, Vim has most likely already selected +a good installation directory for you. You can also specify one, see below. +You need to become root for the following. + +To install Vim do: > + + make install + +That should move all the relevant files to the right place. Now you can try +running vim to verify that it works. Use two simple tests to check if Vim can +find its runtime files: > + + :help + :syntax enable + +If this doesn't work, use this command to check where Vim is looking for the +runtime files: > + + :echo $VIMRUNTIME + +You can also start Vim with the "-V" argument to see what happens during +startup: > + + vim -V + +Don't forget that the user manual assumes you Vim in a certain way. After +installing Vim, follow the instructions at |not-compatible| to make Vim work +as assumed in this manual. + + +SELECTING FEATURES + +Vim has many ways to select features. One of the simple ways is to edit the +Makefile. There are many directions and examples. Often you can enable or +disable a feature by uncommenting a line. + An alternative is to run "configure" separately. This allows you to +specify configuration options manually. The disadvantage is that you have to +figure out what exactly to type. + Some of the most interesting configure arguments follow. These can also be +enabled from the Makefile. + + --prefix={directory} Top directory where to install Vim. + + --with-features=tiny Compile with many features disabled. + --with-features=small Compile with some features disabled. + --with-features=big Compile with more features enabled. + --with-features=huge Compile with most features enabled. + See |+feature-list| for which feature + is enabled in which case. + + --enable-perlinterp Enable the Perl interface. There are + similar arguments for ruby, python and + tcl. + + --disable-gui Do not compile the GUI interface. + --without-x Do not compile X-windows features. + When both of these are used, Vim will + not connect to the X server, which + makes startup faster. + +To see the whole list use: > + + ./configure --help + +You can find a bit of explanation for each feature, and links for more +information here: |feature-list|. + For the adventurous, edit the file "feature.h". You can also change the +source code yourself! + +============================================================================== +*90.2* MS-Windows + +There are two ways to install the Vim program for Microsoft Windows. You can +uncompress several archives, or use a self-installing big archive. Most users +with fairly recent computers will prefer the second method. For the first +one, you will need: + + - An archive with binaries for Vim. + - The Vim runtime archive. + - A program to unpack the zip files. + +To get the Vim archives, look in this file for a mirror near you, this should +provide the fastest download: + + ftp://ftp.vim.org/pub/vim/MIRRORS ~ + +Or use the home site ftp.vim.org, if you think it's fast enough. Go to the +"pc" directory and you'll find a list of files there. The version number is +embedded in the file name. You will want to get the most recent version. +We will use "61" here, which is version 6.1. + + gvim61.exe The self-installing archive. + +This is all you need for the second method. Just launch the executable, and +follow the prompts. + +For the first method you must chose one of the binary archives. These are +available: + + gvim61.zip The normal MS-Windows GUI version. + gvim61ole.zip The MS-Windows GUI version with OLE support. + Uses more memory, supports interfacing with + other OLE applications. + vim61w32.zip 32 bit MS-Windows console version. For use in + a Win NT/2000/XP console. Does not work well + on Win 95/98. + vim61d32.zip 32 bit MS-DOS version. For use in the + Win 95/98 console window. + vim61d16.zip 16 bit MS-DOS version. Only for old systems. + Does not support long filenames. + +You only need one of them. Although you could install both a GUI and a +console version. You always need to get the archive with runtime files. + + vim61rt.zip The runtime files. + +Use your un-zip program to unpack the files. For example, using the "unzip" +program: > + + cd c:\ + unzip path\gvim61.zip + unzip path\vim61rt.zip + +This will unpack the files in the directory "c:\vim\vim61". If you already +have a "vim" directory somewhere, you will want to move to the directory just +above it. + Now change to the "vim\vim61" directory and run the install program: > + + install + +Carefully look through the messages and select the options you want to use. +If you finally select "do it" the install program will carry out the actions +you selected. + The install program doesn't move the runtime files. They remain where you +unpacked them. + +In case you are not satisfied with the features included in the supplied +binaries, you could try compiling Vim yourself. Get the source archive from +the same location as where the binaries are. You need a compiler for which a +makefile exists. Microsoft Visual C works, but is expensive. The Free +Borland command-line compiler 5.5 can be used, as well as the free MingW and +Cygwin compilers. Check the file src/INSTALLpc.txt for hints. + +============================================================================== +*90.3* Upgrading + +If you are running one version of Vim and want to install another, here is +what to do. + + +UNIX + +When you type "make install" the runtime files will be copied to a directory +which is specific for this version. Thus they will not overwrite a previous +version. This makes it possible to use two or more versions next to +each other. + The executable "vim" will overwrite an older version. If you don't care +about keeping the old version, running "make install" will work fine. You can +delete the old runtime files manually. Just delete the directory with the +version number in it and all files below it. Example: > + + rm -rf /usr/local/share/vim/vim58 + +There are normally no changed files below this directory. If you did change +the "filetype.vim" file, for example, you better merge the changes into the +new version before deleting it. + +If you are careful and want to try out the new version for a while before +switching to it, install the new version under another name. You need to +specify a configure argument. For example: > + + ./configure --with-vim-name=vim6 + +Before running "make install", you could use "make -n install" to check that +no valuable existing files are overwritten. + When you finally decide to switch to the new version, all you need to do is +to rename the binary to "vim". For example: > + + mv /usr/local/bin/vim6 /usr/local/bin/vim + + +MS-WINDOWS + +Upgrading is mostly equal to installing a new version. Just unpack the files +in the same place as the previous version. A new directory will be created, +e.g., "vim61", for the files of the new version. Your runtime files, vimrc +file, viminfo, etc. will be left alone. + If you want to run the new version next to the old one, you will have to do +some handwork. Don't run the install program, it will overwrite a few files +of the old version. Execute the new binaries by specifying the full path. +The program should be able to automatically find the runtime files for the +right version. However, this won't work if you set the $VIMRUNTIME variable +somewhere. + If you are satisfied with the upgrade, you can delete the files of the +previous version. See |90.5|. + +============================================================================== +*90.4* Common installation issues + +This section describes some of the common problems that occur when installing +Vim and suggests some solutions. It also contains answers to many +installation questions. + + +Q: I Do Not Have Root Privileges. How Do I Install Vim? (Unix) + +Use the following configuration command to install Vim in a directory called +$HOME/vim: > + + ./configure --prefix=$HOME + +This gives you a personal copy of Vim. You need to put $HOME/bin in your +path to execute the editor. Also see |install-home|. + + +Q: The Colors Are Not Right on My Screen. (Unix) + +Check your terminal settings by using the following command in a shell: > + + echo $TERM + +If the terminal type listed is not correct, fix it. For more hints, see +|06.2|. Another solution is to always use the GUI version of Vim, called +gvim. This avoids the need for a correct terminal setup. + + +Q: My Backspace And Delete Keys Don't Work Right + +The definition of what key sends what code is very unclear for backspace <BS> +and Delete <Del> keys. First of all, check your $TERM setting. If there is +nothing wrong with it, try this: > + + :set t_kb=^V<BS> + :set t_kD=^V<Del> + +In the first line you need to press CTRL-V and then hit the backspace key. +In the second line you need to press CTRL-V and then hit the Delete key. +You can put these lines in your vimrc file, see |05.1|. A disadvantage is +that it won't work when you use another terminal some day. Look here for +alternate solutions: |:fixdel|. + + +Q: I Am Using RedHat Linux. Can I Use the Vim That Comes with the System? + +By default RedHat installs a minimal version of Vim. Check your RPM packages +for something named "Vim-enhanced-version.rpm" and install that. + + +Q: How Do I Turn Syntax Coloring On? How do I make plugins work? + +Use the example vimrc script. You can find an explanation on how to use it +here: |not-compatible|. + +See chapter 6 for information about syntax highlighting: |usr_06.txt|. + + +Q: What Is a Good vimrc File to Use? + +See the www.vim.org Web site for several good examples. + + +Q: Where Do I Find a Good Vim Plugin? + +See the Vim-online site: http://vim.sf.net. Many users have uploaded useful +Vim scripts and plugins there. + + +Q: Where Do I Find More Tips? + +See the Vim-online site: http://vim.sf.net. There is an archive with hints +from Vim users. You might also want to search in the |maillist-archive|. + +============================================================================== +*90.5* Uninstalling Vim + +In the unlikely event you want to uninstall Vim completely, this is how you do +it. + + +UNIX + +When you installed Vim as a package, check your package manager to find out +how to remove the package again. + If you installed Vim from sources you can use this command: > + + make uninstall + +However, if you have deleted the original files or you used an archive that +someone supplied, you can't do this. Do delete the files manually, here is an +example for when "/usr/local" was used as the root: > + + rm -rf /usr/local/share/vim/vim61 + rm /usr/local/bin/eview + rm /usr/local/bin/evim + rm /usr/local/bin/ex + rm /usr/local/bin/gview + rm /usr/local/bin/gvim + rm /usr/local/bin/gvim + rm /usr/local/bin/gvimdiff + rm /usr/local/bin/rgview + rm /usr/local/bin/rgvim + rm /usr/local/bin/rview + rm /usr/local/bin/rvim + rm /usr/local/bin/rvim + rm /usr/local/bin/view + rm /usr/local/bin/vim + rm /usr/local/bin/vimdiff + rm /usr/local/bin/vimtutor + rm /usr/local/bin/xxd + rm /usr/local/man/man1/eview.1 + rm /usr/local/man/man1/evim.1 + rm /usr/local/man/man1/ex.1 + rm /usr/local/man/man1/gview.1 + rm /usr/local/man/man1/gvim.1 + rm /usr/local/man/man1/gvimdiff.1 + rm /usr/local/man/man1/rgview.1 + rm /usr/local/man/man1/rgvim.1 + rm /usr/local/man/man1/rview.1 + rm /usr/local/man/man1/rvim.1 + rm /usr/local/man/man1/view.1 + rm /usr/local/man/man1/vim.1 + rm /usr/local/man/man1/vimdiff.1 + rm /usr/local/man/man1/vimtutor.1 + rm /usr/local/man/man1/xxd.1 + + +MS-WINDOWS + +If you installed Vim with the self-installing archive you can run +the "uninstall-gui" program located in the same directory as the other Vim +programs, e.g. "c:\vim\vim61". You can also launch it from the Start menu if +installed the Vim entries there. This will remove most of the files, menu +entries and desktop shortcuts. Some files may remain however, as they need a +Windows restart before being deleted. + You will be given the option to remove the whole "vim" directory. It +probably contains your vimrc file and other runtime files that you created, so +be careful. + +Else, if you installed Vim with the zip archives, the preferred way is to use +the "uninstal" program (note the missing l at the end). You can find it in +the same directory as the "install" program, e.g., "c:\vim\vim61". This +should also work from the usual "install/remove software" page. + However, this only removes the registry entries for Vim. You have to +delete the files yourself. Simply select the directory "vim\vim61" and delete +it recursively. There should be no files there that you changed, but you +might want to check that first. + The "vim" directory probably contains your vimrc file and other runtime +files that you created. You might want to keep that. + +============================================================================== + +Table of contents: |usr_toc.txt| + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/usr_toc.txt b/share/vim/vim74/doc/usr_toc.txt new file mode 100644 index 00000000..d98a999a --- /dev/null +++ b/share/vim/vim74/doc/usr_toc.txt @@ -0,0 +1,354 @@ +*usr_toc.txt* For Vim version 7.4. Last change: 2010 Jul 20 + + VIM USER MANUAL - by Bram Moolenaar + + Table Of Contents *user-manual* + +============================================================================== +Overview ~ + +Getting Started +|usr_01.txt| About the manuals +|usr_02.txt| The first steps in Vim +|usr_03.txt| Moving around +|usr_04.txt| Making small changes +|usr_05.txt| Set your settings +|usr_06.txt| Using syntax highlighting +|usr_07.txt| Editing more than one file +|usr_08.txt| Splitting windows +|usr_09.txt| Using the GUI +|usr_10.txt| Making big changes +|usr_11.txt| Recovering from a crash +|usr_12.txt| Clever tricks + +Editing Effectively +|usr_20.txt| Typing command-line commands quickly +|usr_21.txt| Go away and come back +|usr_22.txt| Finding the file to edit +|usr_23.txt| Editing other files +|usr_24.txt| Inserting quickly +|usr_25.txt| Editing formatted text +|usr_26.txt| Repeating +|usr_27.txt| Search commands and patterns +|usr_28.txt| Folding +|usr_29.txt| Moving through programs +|usr_30.txt| Editing programs +|usr_31.txt| Exploiting the GUI +|usr_32.txt| The undo tree + +Tuning Vim +|usr_40.txt| Make new commands +|usr_41.txt| Write a Vim script +|usr_42.txt| Add new menus +|usr_43.txt| Using filetypes +|usr_44.txt| Your own syntax highlighted +|usr_45.txt| Select your language + +Making Vim Run +|usr_90.txt| Installing Vim + + +Reference manual +|reference_toc| More detailed information for all commands + +The user manual is available as a single, ready to print HTML and PDF file +here: + http://vimdoc.sf.net + +============================================================================== +Getting Started ~ + +Read this from start to end to learn the essential commands. + +|usr_01.txt| About the manuals + |01.1| Two manuals + |01.2| Vim installed + |01.3| Using the Vim tutor + |01.4| Copyright + +|usr_02.txt| The first steps in Vim + |02.1| Running Vim for the First Time + |02.2| Inserting text + |02.3| Moving around + |02.4| Deleting characters + |02.5| Undo and Redo + |02.6| Other editing commands + |02.7| Getting out + |02.8| Finding help + +|usr_03.txt| Moving around + |03.1| Word movement + |03.2| Moving to the start or end of a line + |03.3| Moving to a character + |03.4| Matching a paren + |03.5| Moving to a specific line + |03.6| Telling where you are + |03.7| Scrolling around + |03.8| Simple searches + |03.9| Simple search patterns + |03.10| Using marks + +|usr_04.txt| Making small changes + |04.1| Operators and motions + |04.2| Changing text + |04.3| Repeating a change + |04.4| Visual mode + |04.5| Moving text + |04.6| Copying text + |04.7| Using the clipboard + |04.8| Text objects + |04.9| Replace mode + |04.10| Conclusion + +|usr_05.txt| Set your settings + |05.1| The vimrc file + |05.2| The example vimrc file explained + |05.3| Simple mappings + |05.4| Adding a plugin + |05.5| Adding a help file + |05.6| The option window + |05.7| Often used options + +|usr_06.txt| Using syntax highlighting + |06.1| Switching it on + |06.2| No or wrong colors? + |06.3| Different colors + |06.4| With colors or without colors + |06.5| Printing with colors + |06.6| Further reading + +|usr_07.txt| Editing more than one file + |07.1| Edit another file + |07.2| A list of files + |07.3| Jumping from file to file + |07.4| Backup files + |07.5| Copy text between files + |07.6| Viewing a file + |07.7| Changing the file name + +|usr_08.txt| Splitting windows + |08.1| Split a window + |08.2| Split a window on another file + |08.3| Window size + |08.4| Vertical splits + |08.5| Moving windows + |08.6| Commands for all windows + |08.7| Viewing differences with vimdiff + |08.8| Various + +|usr_09.txt| Using the GUI + |09.1| Parts of the GUI + |09.2| Using the mouse + |09.3| The clipboard + |09.4| Select mode + +|usr_10.txt| Making big changes + |10.1| Record and playback commands + |10.2| Substitution + |10.3| Command ranges + |10.4| The global command + |10.5| Visual block mode + |10.6| Reading and writing part of a file + |10.7| Formatting text + |10.8| Changing case + |10.9| Using an external program + +|usr_11.txt| Recovering from a crash + |11.1| Basic recovery + |11.2| Where is the swap file? + |11.3| Crashed or not? + |11.4| Further reading + +|usr_12.txt| Clever tricks + |12.1| Replace a word + |12.2| Change "Last, First" to "First Last" + |12.3| Sort a list + |12.4| Reverse line order + |12.5| Count words + |12.6| Find a man page + |12.7| Trim blanks + |12.8| Find where a word is used + +============================================================================== +Editing Effectively ~ + +Subjects that can be read independently. + +|usr_20.txt| Typing command-line commands quickly + |20.1| Command line editing + |20.2| Command line abbreviations + |20.3| Command line completion + |20.4| Command line history + |20.5| Command line window + +|usr_21.txt| Go away and come back + |21.1| Suspend and resume + |21.2| Executing shell commands + |21.3| Remembering information; viminfo + |21.4| Sessions + |21.5| Views + |21.6| Modelines + +|usr_22.txt| Finding the file to edit + |22.1| The file explorer + |22.2| The current directory + |22.3| Finding a file + |22.4| The buffer list + +|usr_23.txt| Editing other files + |23.1| DOS, Mac and Unix files + |23.2| Files on the internet + |23.3| Encryption + |23.4| Binary files + |23.5| Compressed files + +|usr_24.txt| Inserting quickly + |24.1| Making corrections + |24.2| Showing matches + |24.3| Completion + |24.4| Repeating an insert + |24.5| Copying from another line + |24.6| Inserting a register + |24.7| Abbreviations + |24.8| Entering special characters + |24.9| Digraphs + |24.10| Normal mode commands + +|usr_25.txt| Editing formatted text + |25.1| Breaking lines + |25.2| Aligning text + |25.3| Indents and tabs + |25.4| Dealing with long lines + |25.5| Editing tables + +|usr_26.txt| Repeating + |26.1| Repeating with Visual mode + |26.2| Add and subtract + |26.3| Making a change in many files + |26.4| Using Vim from a shell script + +|usr_27.txt| Search commands and patterns + |27.1| Ignoring case + |27.2| Wrapping around the file end + |27.3| Offsets + |27.4| Matching multiple times + |27.5| Alternatives + |27.6| Character ranges + |27.7| Character classes + |27.8| Matching a line break + |27.9| Examples + +|usr_28.txt| Folding + |28.1| What is folding? + |28.2| Manual folding + |28.3| Working with folds + |28.4| Saving and restoring folds + |28.5| Folding by indent + |28.6| Folding with markers + |28.7| Folding by syntax + |28.8| Folding by expression + |28.9| Folding unchanged lines + |28.10| Which fold method to use? + +|usr_29.txt| Moving through programs + |29.1| Using tags + |29.2| The preview window + |29.3| Moving through a program + |29.4| Finding global identifiers + |29.5| Finding local identifiers + +|usr_30.txt| Editing programs + |30.1| Compiling + |30.2| Indenting C files + |30.3| Automatic indenting + |30.4| Other indenting + |30.5| Tabs and spaces + |30.6| Formatting comments + +|usr_31.txt| Exploiting the GUI + |31.1| The file browser + |31.2| Confirmation + |31.3| Menu shortcuts + |31.4| Vim window position and size + |31.5| Various + +|usr_32.txt| The undo tree + |32.1| Undo up to a file write + |32.2| Numbering changes + |32.3| Jumping around the tree + |32.4| Time travelling + +============================================================================== +Tuning Vim ~ + +Make Vim work as you like it. + +|usr_40.txt| Make new commands + |40.1| Key mapping + |40.2| Defining command-line commands + |40.3| Autocommands + +|usr_41.txt| Write a Vim script + |41.1| Introduction + |41.2| Variables + |41.3| Expressions + |41.4| Conditionals + |41.5| Executing an expression + |41.6| Using functions + |41.7| Defining a function + |41.8| Lists and Dictionaries + |41.9| Exceptions + |41.10| Various remarks + |41.11| Writing a plugin + |41.12| Writing a filetype plugin + |41.13| Writing a compiler plugin + |41.14| Writing a plugin that loads quickly + |41.15| Writing library scripts + |41.16| Distributing Vim scripts + +|usr_42.txt| Add new menus + |42.1| Introduction + |42.2| Menu commands + |42.3| Various + |42.4| Toolbar and popup menus + +|usr_43.txt| Using filetypes + |43.1| Plugins for a filetype + |43.2| Adding a filetype + +|usr_44.txt| Your own syntax highlighted + |44.1| Basic syntax commands + |44.2| Keywords + |44.3| Matches + |44.4| Regions + |44.5| Nested items + |44.6| Following groups + |44.7| Other arguments + |44.8| Clusters + |44.9| Including another syntax file + |44.10| Synchronizing + |44.11| Installing a syntax file + |44.12| Portable syntax file layout + +|usr_45.txt| Select your language + |45.1| Language for Messages + |45.2| Language for Menus + |45.3| Using another encoding + |45.4| Editing files with a different encoding + |45.5| Entering language text + +============================================================================== +Making Vim Run ~ + +Before you can use Vim. + +|usr_90.txt| Installing Vim + |90.1| Unix + |90.2| MS-Windows + |90.3| Upgrading + |90.4| Common installation issues + |90.5| Uninstalling Vim + +============================================================================== + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/various.txt b/share/vim/vim74/doc/various.txt new file mode 100644 index 00000000..1d05e1a2 --- /dev/null +++ b/share/vim/vim74/doc/various.txt @@ -0,0 +1,648 @@ +*various.txt* For Vim version 7.4. Last change: 2013 May 18 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Various commands *various* + +1. Various commands |various-cmds| +2. Using Vim like less or more |less| + +============================================================================== +1. Various commands *various-cmds* + + *CTRL-L* +CTRL-L Clear and redraw the screen. The redraw may happen + later, after processing typeahead. + + *:redr* *:redraw* +:redr[aw][!] Redraw the screen right now. When ! is included it is + cleared first. + Useful to update the screen halfway executing a script + or function. Also when halfway a mapping and + 'lazyredraw' is set. + + *:redraws* *:redrawstatus* +:redraws[tatus][!] Redraw the status line of the current window. When ! + is included all status lines are redrawn. + Useful to update the status line(s) when 'statusline' + includes an item that doesn't cause automatic + updating. + + *N<Del>* +<Del> When entering a number: Remove the last digit. + Note: if you like to use <BS> for this, add this + mapping to your .vimrc: > + :map CTRL-V <BS> CTRL-V <Del> +< See |:fixdel| if your <Del> key does not do what you + want. + +:as[cii] or *ga* *:as* *:ascii* +ga Print the ascii value of the character under the + cursor in decimal, hexadecimal and octal. For + example, when the cursor is on a 'R': + <R> 82, Hex 52, Octal 122 ~ + When the character is a non-standard ASCII character, + but printable according to the 'isprint' option, the + non-printable version is also given. When the + character is larger than 127, the <M-x> form is also + printed. For example: + <~A> <M-^A> 129, Hex 81, Octal 201 ~ + <p> <|~> <M-~> 254, Hex fe, Octal 376 ~ + (where <p> is a special character) + The <Nul> character in a file is stored internally as + <NL>, but it will be shown as: + <^@> 0, Hex 00, Octal 000 ~ + If the character has composing characters these are + also shown. The value of 'maxcombine' doesn't matter. + Mnemonic: Get Ascii value. {not in Vi} + + *g8* +g8 Print the hex values of the bytes used in the + character under the cursor, assuming it is in |UTF-8| + encoding. This also shows composing characters. The + value of 'maxcombine' doesn't matter. + Example of a character with two composing characters: + e0 b8 81 + e0 b8 b9 + e0 b9 89 ~ + {not in Vi} {only when compiled with the |+multi_byte| + feature} + + *8g8* +8g8 Find an illegal UTF-8 byte sequence at or after the + cursor. This works in two situations: + 1. when 'encoding' is any 8-bit encoding + 2. when 'encoding' is "utf-8" and 'fileencoding' is + any 8-bit encoding + Thus it can be used when editing a file that was + supposed to be UTF-8 but was read as if it is an 8-bit + encoding because it contains illegal bytes. + Does not wrap around the end of the file. + Note that when the cursor is on an illegal byte or the + cursor is halfway a multi-byte character the command + won't move the cursor. + {not in Vi} {only when compiled with the |+multi_byte| + feature} + + *:p* *:pr* *:print* *E749* +:[range]p[rint] [flags] + Print [range] lines (default current line). + Note: If you are looking for a way to print your text + on paper see |:hardcopy|. In the GUI you can use the + File.Print menu entry. + See |ex-flags| for [flags]. + +:[range]p[rint] {count} [flags] + Print {count} lines, starting with [range] (default + current line |cmdline-ranges|). + See |ex-flags| for [flags]. + + *:P* *:Print* +:[range]P[rint] [count] [flags] + Just as ":print". Was apparently added to Vi for + people that keep the shift key pressed too long... + Note: A user command can overrule this command. + See |ex-flags| for [flags]. + + *:l* *:list* +:[range]l[ist] [count] [flags] + Same as :print, but display unprintable characters + with '^' and put $ after the line. This can be + further changed with the 'listchars' option. + See |ex-flags| for [flags]. + + *:nu* *:number* +:[range]nu[mber] [count] [flags] + Same as :print, but precede each line with its line + number. (See also 'highlight' and 'numberwidth' + option). + See |ex-flags| for [flags]. + + *:#* +:[range]# [count] [flags] + synonym for :number. + + *:#!* +:#!{anything} Ignored, so that you can start a Vim script with: > + #!vim -S + echo "this is a Vim script" + quit +< + *:z* *E144* +:{range}z[+-^.=]{count} Display several lines of text surrounding the line + specified with {range}, or around the current line + if there is no {range}. If there is a {count}, that's + how many lines you'll see; if there is only one window + then twice the value of the 'scroll' option is used, + otherwise the current window height minus 3 is used. + + If there is a {count} the 'window' option is set to + its value. + + :z can be used either alone or followed by any of + several punctuation marks. These have the following + effect: + + mark first line last line new cursor line ~ + ---- ---------- --------- ------------ + + current line 1 scr forward 1 scr forward + - 1 scr back current line current line + ^ 2 scr back 1 scr back 1 scr back + . 1/2 scr back 1/2 scr fwd 1/2 scr fwd + = 1/2 scr back 1/2 scr fwd current line + + Specifying no mark at all is the same as "+". + If the mark is "=", a line of dashes is printed + around the current line. + +:{range}z#[+-^.=]{count} *:z#* + Like ":z", but number the lines. + {not in all versions of Vi, not with these arguments} + + *:=* +:= [flags] Print the last line number. + See |ex-flags| for [flags]. + +:{range}= [flags] Prints the last line number in {range}. For example, + this prints the current line number: > + :.= +< See |ex-flags| for [flags]. + +:norm[al][!] {commands} *:norm* *:normal* + Execute Normal mode commands {commands}. This makes + it possible to execute Normal mode commands typed on + the command-line. {commands} are executed like they + are typed. For undo all commands are undone together. + Execution stops when an error is encountered. + + If the [!] is given, mappings will not be used. + Without it, when this command is called from a + non-remappable mapping (|:noremap|), the argument can + be mapped anyway. + + {commands} should be a complete command. If + {commands} does not finish a command, the last one + will be aborted as if <Esc> or <C-C> was typed. + This implies that an insert command must be completed + (to start Insert mode, see |:startinsert|). A ":" + command must be completed as well. And you can't use + "Q" or "gQ" to start Ex mode. + + The display is not updated while ":normal" is busy. + + {commands} cannot start with a space. Put a count of + 1 (one) before it, "1 " is one space. + + The 'insertmode' option is ignored for {commands}. + + This command cannot be followed by another command, + since any '|' is considered part of the command. + + This command can be used recursively, but the depth is + limited by 'maxmapdepth'. + + An alternative is to use |:execute|, which uses an + expression as argument. This allows the use of + printable characters to represent special characters. + + Example: > + :exe "normal \<c-w>\<c-w>" +< {not in Vi, of course} + {not available when the |+ex_extra| feature was + disabled at compile time} + +:{range}norm[al][!] {commands} *:normal-range* + Execute Normal mode commands {commands} for each line + in the {range}. Before executing the {commands}, the + cursor is positioned in the first column of the range, + for each line. Otherwise it's the same as the + ":normal" command without a range. + {not in Vi} + {not available when |+ex_extra| feature was disabled + at compile time} + + *:sh* *:shell* *E371* +:sh[ell] This command starts a shell. When the shell exits + (after the "exit" command) you return to Vim. The + name for the shell command comes from 'shell' option. + *E360* + Note: This doesn't work when Vim on the Amiga was + started in QuickFix mode from a compiler, because the + compiler will have set stdin to a non-interactive + mode. + + *:!cmd* *:!* *E34* +:!{cmd} Execute {cmd} with the shell. See also the 'shell' + and 'shelltype' option. + Any '!' in {cmd} is replaced with the previous + external command (see also 'cpoptions'). But not when + there is a backslash before the '!', then that + backslash is removed. Example: ":!ls" followed by + ":!echo ! \! \\!" executes "echo ls ! \!". + After the command has been executed, the timestamp of + the current file is checked |timestamp|. + A '|' in {cmd} is passed to the shell, you cannot use + it to append a Vim command. See |:bar|. + A newline character ends {cmd}, what follows is + interpreted as a following ":" command. However, if + there is a backslash before the newline it is removed + and {cmd} continues. It doesn't matter how many + backslashes are before the newline, only one is + removed. + On Unix the command normally runs in a non-interactive + shell. If you want an interactive shell to be used + (to use aliases) set 'shellcmdflag' to "-ic". + For Win32 also see |:!start|. + Vim redraws the screen after the command is finished, + because it may have printed any text. This requires a + hit-enter prompt, so that you can read any messages. + To avoid this use: > + :silent !{cmd} +< The screen is not redrawn then, thus you have to use + CTRL-L or ":redraw!" if the command did display + something. + Also see |shell-window|. + + *:!!* +:!! Repeat last ":!{cmd}". + + *:ve* *:version* +:ve[rsion] Print the version number of the editor. If the + compiler used understands "__DATE__" the compilation + date is mentioned. Otherwise a fixed release-date is + shown. + The following lines contain information about which + features were enabled when Vim was compiled. When + there is a preceding '+', the feature is included, + when there is a '-' it is excluded. To change this, + you have to edit feature.h and recompile Vim. + To check for this in an expression, see |has()|. + Here is an overview of the features. + The first column shows the smallest version in which + they are included: + T tiny + S small + N normal + B big + H huge + m manually enabled or depends on other features + (none) system dependent + Thus if a feature is marked with "N", it is included + in the normal, big and huge versions of Vim. + + *+feature-list* + *+ARP* Amiga only: ARP support included +B *+arabic* |Arabic| language support +N *+autocmd* |:autocmd|, automatic commands +m *+balloon_eval* |balloon-eval| support. Included when compiling with + supported GUI (Motif, GTK, GUI) and either + Netbeans/Sun Workshop integration or |+eval| feature. +N *+browse* |:browse| command +N *+builtin_terms* some terminals builtin |builtin-terms| +B *++builtin_terms* maximal terminals builtin |builtin-terms| +N *+byte_offset* support for 'o' flag in 'statusline' option, "go" + and ":goto" commands. +N *+cindent* |'cindent'|, C indenting +N *+clientserver* Unix and Win32: Remote invocation |clientserver| + *+clipboard* |clipboard| support +N *+cmdline_compl* command line completion |cmdline-completion| +N *+cmdline_hist* command line history |cmdline-history| +N *+cmdline_info* |'showcmd'| and |'ruler'| +N *+comments* |'comments'| support +B *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc. +N *+cryptv* encryption support |encryption| +B *+cscope* |cscope| support +m *+cursorbind* |'cursorbind'| support +m *+cursorshape* |termcap-cursor-shape| support +m *+debug* Compiled for debugging. +N *+dialog_gui* Support for |:confirm| with GUI dialog. +N *+dialog_con* Support for |:confirm| with console dialog. +N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog. +N *+diff* |vimdiff| and 'diff' +N *+digraphs* |digraphs| *E196* + *+dnd* Support for DnD into the "~ register |quote_~|. +B *+emacs_tags* |emacs-tags| files +N *+eval* expression evaluation |eval.txt| +N *+ex_extra* Vim's extra Ex commands: |:center|, |:left|, + |:normal|, |:retab| and |:right| +N *+extra_search* |'hlsearch'| and |'incsearch'| options. +B *+farsi* |farsi| language +N *+file_in_path* |gf|, |CTRL-W_f| and |<cfile>| +N *+find_in_path* include file searches: |[I|, |:isearch|, + |CTRL-W_CTRL-I|, |:checkpath|, etc. +N *+folding* |folding| + *+footer* |gui-footer| + *+fork* Unix only: |fork| shell commands + *+float* Floating point support +N *+gettext* message translations |multi-lang| + *+GUI_Athena* Unix only: Athena |GUI| + *+GUI_neXtaw* Unix only: neXtaw |GUI| + *+GUI_GTK* Unix only: GTK+ |GUI| + *+GUI_Motif* Unix only: Motif |GUI| + *+GUI_Photon* QNX only: Photon |GUI| +m *+hangul_input* Hangul input support |hangul| + *+iconv* Compiled with the |iconv()| function + *+iconv/dyn* Likewise |iconv-dynamic| |/dyn| +N *+insert_expand* |insert_expand| Insert mode completion +N *+jumplist* |jumplist| +B *+keymap* |'keymap'| +B *+langmap* |'langmap'| +N *+libcall* |libcall()| +N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'| +N *+lispindent* |'lisp'| +N *+listcmds* Vim commands for the list of buffers |buffer-hidden| + and argument list |:argdelete| +N *+localmap* Support for mappings local to a buffer |:map-local| +m *+lua* |Lua| interface +m *+lua/dyn* |Lua| interface |/dyn| +N *+menu* |:menu| +N *+mksession* |:mksession| +N *+modify_fname* |filename-modifiers| +N *+mouse* Mouse handling |mouse-using| +N *+mouseshape* |'mouseshape'| +B *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse| +N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse| +B *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse| +N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| +N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse| +B *+mouse_sgr* Unix only: sgr mouse handling |sgr-mouse| +B *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse| +N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| +N *+multi_byte* 16 and 32 bit characters |multibyte| + *+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime| +N *+multi_lang* non-English language support |multi-lang| +m *+mzscheme* Mzscheme interface |mzscheme| +m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn| +m *+netbeans_intg* |netbeans| +m *+ole* Win32 GUI only: |ole-interface| +N *+path_extra* Up/downwards search in 'path' and 'tags' +m *+perl* Perl interface |perl| +m *+perl/dyn* Perl interface |perl-dynamic| |/dyn| +N *+persistent_undo* Persistent undo |undo-persistence| + *+postscript* |:hardcopy| writes a PostScript file +N *+printer* |:hardcopy| command +H *+profile* |:profile| command +m *+python* Python 2 interface |python| +m *+python/dyn* Python 2 interface |python-dynamic| |/dyn| +m *+python3* Python 3 interface |python| +m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn| +N *+quickfix* |:make| and |quickfix| commands +N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout, + 'redrawtime' option +B *+rightleft* Right to left typing |'rightleft'| +m *+ruby* Ruby interface |ruby| +m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn| +N *+scrollbind* |'scrollbind'| +B *+signs* |:sign| +N *+smartindent* |'smartindent'| +m *+sniff* SniFF interface |sniff| +N *+startuptime* |--startuptime| argument +N *+statusline* Options 'statusline', 'rulerformat' and special + formats of 'titlestring' and 'iconstring' +m *+sun_workshop* |workshop| +N *+syntax* Syntax highlighting |syntax| + *+system()* Unix only: opposite of |+fork| +N *+tag_binary* binary searching in tags file |tag-binary-search| +N *+tag_old_static* old method for static tags |tag-old-static| +m *+tag_any_white* any white space allowed in tags file |tag-any-white| +m *+tcl* Tcl interface |tcl| +m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn| + *+terminfo* uses |terminfo| instead of termcap +N *+termresponse* support for |t_RV| and |v:termresponse| +N *+textobjects* |text-objects| selection + *+tgetent* non-Unix only: able to use external termcap +N *+title* Setting the window 'title' and 'icon' +N *+toolbar* |gui-toolbar| +N *+user_commands* User-defined commands. |user-commands| +N *+viminfo* |'viminfo'| +N *+vertsplit* Vertically split windows |:vsplit| +N *+virtualedit* |'virtualedit'| +S *+visual* Visual mode |Visual-mode| +N *+visualextra* extra Visual mode commands |blockwise-operators| +N *+vreplace* |gR| and |gr| +N *+wildignore* |'wildignore'| +N *+wildmenu* |'wildmenu'| +S *+windows* more than one window +m *+writebackup* |'writebackup'| is default on +m *+xim* X input method |xim| + *+xfontset* X fontset support |xfontset| +m *+xpm_w32* Win32 GUI only: pixmap support |w32-xpm-support| + *+xsmp* XSMP (X session management) support + *+xsmp_interact* interactive XSMP (X session management) support +N *+xterm_clipboard* Unix only: xterm clipboard handling +m *+xterm_save* save and restore xterm screen |xterm-screens| +N *+X11* Unix only: can restore window title |X11| + + */dyn* *E370* *E448* + To some of the features "/dyn" is added when the + feature is only available when the related library can + be dynamically loaded. + +:ve[rsion] {nr} Is now ignored. This was previously used to check the + version number of a .vimrc file. It was removed, + because you can now use the ":if" command for + version-dependent behavior. {not in Vi} + + *:redi* *:redir* +:redi[r][!] > {file} Redirect messages to file {file}. The messages which + are the output of commands are written to that file, + until redirection ends. The messages are also still + shown on the screen. When [!] is included, an + existing file is overwritten. When [!] is omitted, + and {file} exists, this command fails. + Only one ":redir" can be active at a time. Calls to + ":redir" will close any active redirection before + starting redirection to the new target. + To stop the messages and commands from being echoed to + the screen, put the commands in a function and call it + with ":silent call Function()". + An alternative is to use the 'verbosefile' option, + this can be used in combination with ":redir". + {not in Vi} + +:redi[r] >> {file} Redirect messages to file {file}. Append if {file} + already exists. {not in Vi} + +:redi[r] @{a-zA-Z} +:redi[r] @{a-zA-Z}> Redirect messages to register {a-z}. Append to the + contents of the register if its name is given + uppercase {A-Z}. The ">" after the register name is + optional. {not in Vi} +:redi[r] @{a-z}>> Append messages to register {a-z}. {not in Vi} + +:redi[r] @*> +:redi[r] @+> Redirect messages to the selection or clipboard. For + backward compatibility, the ">" after the register + name can be omitted. See |quotestar| and |quoteplus|. + {not in Vi} +:redi[r] @*>> +:redi[r] @+>> Append messages to the selection or clipboard. + {not in Vi} + +:redi[r] @"> Redirect messages to the unnamed register. For + backward compatibility, the ">" after the register + name can be omitted. {not in Vi} +:redi[r] @">> Append messages to the unnamed register. {not in Vi} + +:redi[r] => {var} Redirect messages to a variable. If the variable + doesn't exist, then it is created. If the variable + exists, then it is initialized to an empty string. + The variable will remain empty until redirection ends. + Only string variables can be used. After the + redirection starts, if the variable is removed or + locked or the variable type is changed, then further + command output messages will cause errors. {not in Vi} + +:redi[r] =>> {var} Append messages to an existing variable. Only string + variables can be used. {not in Vi} + +:redi[r] END End redirecting messages. {not in Vi} + + *:sil* *:silent* +:sil[ent][!] {command} Execute {command} silently. Normal messages will not + be given or added to the message history. + When [!] is added, error messages will also be + skipped, and commands and mappings will not be aborted + when an error is detected. |v:errmsg| is still set. + When [!] is not used, an error message will cause + further messages to be displayed normally. + Redirection, started with |:redir|, will continue as + usual, although there might be small differences. + This will allow redirecting the output of a command + without seeing it on the screen. Example: > + :redir >/tmp/foobar + :silent g/Aap/p + :redir END +< To execute a Normal mode command silently, use the + |:normal| command. For example, to search for a + string without messages: > + :silent exe "normal /path\<CR>" +< ":silent!" is useful to execute a command that may + fail, but the failure is to be ignored. Example: > + :let v:errmsg = "" + :silent! /^begin + :if v:errmsg != "" + : ... pattern was not found +< ":silent" will also avoid the hit-enter prompt. When + using this for an external command, this may cause the + screen to be messed up. Use |CTRL-L| to clean it up + then. + ":silent menu ..." defines a menu that will not echo a + Command-line command. The command will still produce + messages though. Use ":silent" in the command itself + to avoid that: ":silent menu .... :silent command". + + *:uns* *:unsilent* +:uns[ilent] {command} Execute {command} not silently. Only makes a + difference when |:silent| was used to get to this + command. + Use this for giving a message even when |:silent| was + used. In this example |:silent| is used to avoid the + message about reading the file and |:unsilent| to be + able to list the first line of each file. > + :silent argdo unsilent echo expand('%') . ": " . getline(1) +< + + *:verb* *:verbose* +:[count]verb[ose] {command} + Execute {command} with 'verbose' set to [count]. If + [count] is omitted one is used. ":0verbose" can be + used to set 'verbose' to zero. + The additional use of ":silent" makes messages + generated but not displayed. + The combination of ":silent" and ":verbose" can be + used to generate messages and check them with + |v:statusmsg| and friends. For example: > + :let v:statusmsg = "" + :silent verbose runtime foobar.vim + :if v:statusmsg != "" + : " foobar.vim could not be found + :endif +< When concatenating another command, the ":verbose" + only applies to the first one: > + :4verbose set verbose | set verbose +< verbose=4 ~ + verbose=0 ~ + For logging verbose messages in a file use the + 'verbosefile' option. + + *:verbose-cmd* +When 'verbose' is non-zero, listing the value of a Vim option or a key map or +an abbreviation or a user-defined function or a command or a highlight group +or an autocommand will also display where it was last defined. If it was +defined manually then there will be no "Last set" message. When it was +defined while executing a function, user command or autocommand, the script in +which it was defined is reported. +{not available when compiled without the |+eval| feature} + + *K* +K Run a program to lookup the keyword under the + cursor. The name of the program is given with the + 'keywordprg' (kp) option (default is "man"). The + keyword is formed of letters, numbers and the + characters in 'iskeyword'. The keyword under or + right of the cursor is used. The same can be done + with the command > + :!{program} {keyword} +< There is an example of a program to use in the tools + directory of Vim. It is called 'ref' and does a + simple spelling check. + Special cases: + - If 'keywordprg' is empty, the ":help" command is + used. It's a good idea to include more characters + in 'iskeyword' then, to be able to find more help. + - When 'keywordprg' is equal to "man", a count before + "K" is inserted after the "man" command and before + the keyword. For example, using "2K" while the + cursor is on "mkdir", results in: > + !man 2 mkdir +< - When 'keywordprg' is equal to "man -s", a count + before "K" is inserted after the "-s". If there is + no count, the "-s" is removed. + {not in Vi} + + *v_K* +{Visual}K Like "K", but use the visually highlighted text for + the keyword. Only works when the highlighted text is + not more than one line. {not in Vi} + +[N]gs *gs* *:sl* *:sleep* +:[N]sl[eep] [N] [m] Do nothing for [N] seconds. When [m] is included, + sleep for [N] milliseconds. The count for "gs" always + uses seconds. The default is one second. > + :sleep "sleep for one second + :5sleep "sleep for five seconds + :sleep 100m "sleep for a hundred milliseconds + 10gs "sleep for ten seconds +< Can be interrupted with CTRL-C (CTRL-Break on MS-DOS). + "gs" stands for "goto sleep". + While sleeping the cursor is positioned in the text, + if at a visible position. {not in Vi} + Also process the received netbeans messages. {only + available when compiled with the |+netbeans_intg| + feature} + + + *g_CTRL-A* +g CTRL-A Only when Vim was compiled with MEM_PROFILING defined + (which is very rare): print memory usage statistics. + Only useful for debugging Vim. + +============================================================================== +2. Using Vim like less or more *less* + +If you use the less or more program to view a file, you don't get syntax +highlighting. Thus you would like to use Vim instead. You can do this by +using the shell script "$VIMRUNTIME/macros/less.sh". + +This shell script uses the Vim script "$VIMRUNTIME/macros/less.vim". It sets +up mappings to simulate the commands that less supports. Otherwise, you can +still use the Vim commands. + +This isn't perfect. For example, when viewing a short file Vim will still use +the whole screen. But it works good enough for most uses, and you get syntax +highlighting. + +The "h" key will give you a short overview of the available commands. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/version4.txt b/share/vim/vim74/doc/version4.txt new file mode 100644 index 00000000..6b791be8 --- /dev/null +++ b/share/vim/vim74/doc/version4.txt @@ -0,0 +1,355 @@ +*version4.txt* For Vim version 7.4. Last change: 2006 Apr 24 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +This document lists the incompatible differences between Vim 3.0 and Vim 4.0. +Although 4.0 is mentioned here, this is also for version 4.1, 4.2, etc.. + +This file is important for everybody upgrading from Vim 3.0. Read it +carefully to avoid unexpected problems. + +'backup' option default changed |backup-changed| +Extension for backup file changed |backup-extension| +Structure of swap file changed |swapfile-changed| +"-w scriptout" argument changed |scriptout-changed| +Backspace and Delete keys |backspace-delete| +Escape for | changed |escape-bar| +Key codes changed |key-codes-changed| +Terminal options changed |termcap-changed| +'errorformat' option changed |errorformat-changed| +'graphic' option gone |graphic-option-gone| +'yankendofline' option gone |ye-option-gone| +'icon' and 'title' default value changed |icon-changed| +'highlight' option changed |highlight-changed| +'tildeop' and 'weirdinvert' short names changed |short-name-changed| +Use of "v", "V" and "CTRL-V" in Visual mode |use-visual-cmds| +CTRL-B in Insert mode removed |toggle-revins| + + +'backup' option default changed *backup-changed* +------------------------------- + +The default value for 'backup' used to be on. This resulted in a backup file +being made when the original file was overwritten. + +Now the default for 'backup' is off. As soon as the writing of the file has +successfully finished, the backup file is deleted. If you want to keep the +backup file, set 'backup' on in your vimrc. The reason for this change is +that many people complained that leaving a backup file behind is not +Vi-compatible. |'backup'| + + +Extension for backup file changed *backup-extension* +--------------------------------- + +The extension for the backup file used to be ".bak". Since other programs +also use this extension and some users make copies with this extension, it was +changed to the less obvious "~". Another advantage is that this takes less +space, which is useful when working on a system with short file names. For +example, on MS-DOS the backup files for "longfile.c" and "longfile.h" would +both become "longfile.bak"; now they will be "longfile.c~" and "longfile.h~". + +If you prefer to use ".bak", you can set the 'backupext' option: > + :set bex=.bak + + +Structure of swap file changed *swapfile-changed* +------------------------------ + +The contents of the swap file were extended with several parameters. Vim +stores the user name and other information about the edited file to make +recovery more easy and to be able to know where the swap file comes from. The +first part of the swap file can now be understood on a machine with a +different byte order or sizeof(int). When you try to recover a file on such a +machine, you will get an error message that this is not possible. + +Because of this change, swap files cannot be exchanged between 3.0 and 4.0. +If you have a swap file from a crashed session with 3.0, use Vim 3.0 to +recover the file---don't use 4.0. |swap-file| + + +"-w scriptout" argument changed *scriptout-changed* +------------------------------- + +"vim -w scriptout" used to append to the scriptout file. Since this was +illogical, it now creates a new file. An existing file is not overwritten +(to avoid destroying an existing file for those who rely on the appending). +[This was removed again later] |-w| + + +Backspace and Delete keys *backspace-delete* +------------------------- + +In 3.0 both the delete key and the backspace key worked as a backspace in +insert mode; they deleted the character to the left of the cursor. In 4.0 the +delete key has a new function: it deletes the character under the cursor, just +like it does on the command-line. If the cursor is after the end of the line +and 'bs' is set, two lines are joined. |<Del>| |i_<Del>| + +In 3.0 the backspace key was always defined as CTRL-H and delete as CTRL-?. +In 4.0 the code for the backspace and delete key is obtained from termcap or +termlib, and adjusted for the "stty erase" value on Unix. This helps people +who define the erase character according to the keyboard they are working on. + |<BS>| |i_<BS>| + +If you prefer backspace and delete in Insert mode to have the old behavior, +put this line in your vimrc: + + inoremap ^? ^H + +And you may also want to add these, to fix the values for <BS> and <Del>: + + set t_kb=^H + set t_kD=^? + +(Enter ^H with CTRL-V CTRL-H and ^? with CTRL-V CTRL-? or <Del>.) + +If the value for t_kb is correct, but the t_kD value is not, use the ":fixdel" +command. It will set t_kD according to the value of t_kb. This is useful if +you are using several different terminals. |:fixdel| + +When ^H is not recognized as <BS> or <Del>, it is used like a backspace. + + +Escape for | changed *escape-bar* +-------------------- + +When the 'b' flag is present in 'cpoptions', the backslash cannot be used to +escape '|' in mapping and abbreviate commands, only CTRL-V can. This is +Vi-compatible. If you work in Vi-compatible mode and had used "\|" to include +a bar in a mapping, this needs to be replaced by "^V|". See |:bar|. + + +Key codes changed *key-codes-changed* +----------------- + +The internal representation of key codes has changed dramatically. In 3.0 a +one-byte code was used to represent a key. This caused problems with +different characters sets that also used these codes. In 4.0 a three-byte +code is used that cannot be confused with a character. |key-notation| + +If you have used the single-byte key codes in your vimrc for mappings, you +will have to replace them with the 4.0 codes. Instead of using the three-byte +code directly, you should use the symbolic representation for this in <>. See +the table below. The table also lists the old name, as it was used in the 3.0 +documentation. + +The key names in <> can be used in mappings directly. This makes it possible +to copy/paste examples or type them literally. The <> notation has been +introduced for this |<>|. The 'B' and '<' flags must not be present in +'cpoptions' to enable this to work |'cpoptions'|. + +old name new name old code old MS-DOS code ~ + hex dec hex dec ~ +<ESC> <Esc> +<TAB> <Tab> +<LF> <NL> <NewLine> <LineFeed> +<SPACE> <Space> +<NUL> <Nul> +<BELL> <Bell> +<BS> <BS> <BackSpace> +<INSERT> <Insert> +<DEL> <Del> <Delete> +<HOME> <Home> +<END> <End> +<PAGE_UP> <PageUp> +<PAGE_DOWN> <PageDown> + +<C_UP> <Up> 0x80 128 0xb0 176 +<C_DOWN> <Down> 0x81 129 0xb1 177 +<C_LEFT> <Left> 0x82 130 0xb2 178 +<C_RIGHT> <Right> 0x83 131 0xb3 179 +<SC_UP> <S-Up> 0x84 132 0xb4 180 +<SC_DOWN> <S-Down> 0x85 133 0xb5 181 +<SC_LEFT> <S-Left> 0x86 134 0xb6 182 +<SC_RIGHT> <S-Right> 0x87 135 0xb7 183 + +<F1> <F1> 0x88 136 0xb8 184 +<F2> <F2> 0x89 137 0xb9 185 +<F3> <F3> 0x8a 138 0xba 186 +<F4> <F4> 0x8b 139 0xbb 187 +<F5> <F5> 0x8c 140 0xbc 188 +<F6> <F6> 0x8d 141 0xbd 189 +<F7> <F7> 0x8e 142 0xbe 190 +<F8> <F8> 0x8f 143 0xbf 191 +<F9> <F9> 0x90 144 0xc0 192 +<F10> <F10> 0x91 145 0xc1 193 + +<SF1> <S-F1> 0x92 146 0xc2 194 +<SF2> <S-F2> 0x93 147 0xc3 195 +<SF3> <S-F3> 0x94 148 0xc4 196 +<SF4> <S-F4> 0x95 149 0xc5 197 +<SF5> <S-F5> 0x96 150 0xc6 198 +<SF6> <S-F6> 0x97 151 0xc7 199 +<SF7> <S-F7> 0x98 152 0xc8 200 +<SF8> <S-F8> 0x99 153 0xc9 201 +<SF9> <S-F9> 0x9a 154 0xca 202 +<SF10> <S-F10> 0x9b 155 0xcb 203 + +<HELP> <Help> 0x9c 156 0xcc 204 +<UNDO> <Undo> 0x9d 157 0xcd 205 + + (not used) 0x9e 158 0xce 206 + (not used) 0x9f 159 0xcf 207 + + +Terminal options changed *termcap-changed* +------------------------ + +The names of the terminal options have been changed to match the termcap names +of these options. All terminal options now have the name t_xx, where xx is +the termcap name. Normally these options are not used, unless you have a +termcap entry that is wrong or incomplete, or you have set the highlight +options to a different value. |terminal-options| + +Note that for some keys there is no termcap name. Use the <> type of name +instead, which is a good idea anyway. + +Note that "t_ti" has become "t_mr" (invert/reverse output) and "t_ts" has +become "t_ti" (init terminal mode). Be careful when you use "t_ti"! + +old name new name meaning ~ +t_cdl t_DL delete number of lines *t_cdl* +t_ci t_vi cursor invisible *t_ci* +t_cil t_AL insert number of lines *t_cil* +t_cm t_cm move cursor +t_cri t_RI cursor number of chars right *t_cri* +t_cv t_ve cursor visible *t_cv* +t_cvv t_vs cursor very visible *t_cvv* +t_dl t_dl delete line +t_cs t_cs scroll region +t_ed t_cl clear display *t_ed* +t_el t_ce clear line *t_el* +t_il t_al insert line *t_il* + t_da display may be retained above the screen + t_db display may be retained below the screen +t_ke t_ke put terminal out of keypad transmit mode +t_ks t_ks put terminal in keypad transmit mode +t_ms t_ms save to move cursor in highlight mode +t_se t_se normal mode (undo t_so) +t_so t_so shift out (standout) mode +t_ti t_mr reverse highlight +t_tb t_md bold mode *t_tb* +t_tp t_me highlight end *t_tp* +t_sr t_sr scroll reverse +t_te t_te out of termcap mode +t_ts t_ti into termcap mode *t_ts_old* +t_vb t_vb visual bell +t_csc t_CS cursor is relative to scroll region *t_csc* + +t_ku t_ku <Up> arrow up +t_kd t_kd <Down> arrow down +t_kr t_kr <Right> arrow right +t_kl t_kl <Left> arrow left +t_sku <S-Up> shifted arrow up *t_sku* +t_skd <S-Down> shifted arrow down *t_skd* +t_skr t_%i <S-Right> shifted arrow right *t_skr* +t_skl t_#4 <S-Left> shifted arrow left *t_skl* +t_f1 t_k1 <F1> function key 1 *t_f1* +t_f2 t_k2 <F2> function key 2 *t_f2* +t_f3 t_k3 <F3> function key 3 *t_f3* +t_f4 t_k4 <F4> function key 4 *t_f4* +t_f5 t_k5 <F5> function key 5 *t_f5* +t_f6 t_k6 <F6> function key 6 *t_f6* +t_f7 t_k7 <F7> function key 7 *t_f7* +t_f8 t_k8 <F8> function key 8 *t_f8* +t_f9 t_k9 <F9> function key 9 *t_f9* +t_f10 t_k; <F10> function key 10 *t_f10* +t_sf1 <S-F1> shifted function key 1 *t_sf1* +t_sf2 <S-F2> shifted function key 2 *t_sf2* +t_sf3 <S-F3> shifted function key 3 *t_sf3* +t_sf4 <S-F4> shifted function key 4 *t_sf4* +t_sf5 <S-F5> shifted function key 5 *t_sf5* +t_sf6 <S-F6> shifted function key 6 *t_sf6* +t_sf7 <S-F7> shifted function key 7 *t_sf7* +t_sf8 <S-F8> shifted function key 8 *t_sf8* +t_sf9 <S-F9> shifted function key 9 *t_sf9* +t_sf10 <S-F10> shifted function key 10 *t_sf10* +t_help t_%1 <Help> help key *t_help* +t_undo t_&8 <Undo> undo key *t_undo* + + +'errorformat' option changed *errorformat-changed* +---------------------------- + +'errorformat' can now contain several formats, separated by commas. The first +format that matches is used. The default values have been adjusted to catch +the most common formats. |errorformat| + +If you have a format that contains a comma, it needs to be preceded with a +backslash. Type two backslashes, because the ":set" command will eat one. + + +'graphic' option gone *graphic-option-gone* +--------------------- + +The 'graphic' option was used to make the characters between <~> and 0xa0 +display directly on the screen. Now the 'isprint' option takes care of this +with many more possibilities. The default setting is the same; you only need +to look into this if you previously set the 'graphic' option in your vimrc. + |'isprint'| + + +'yankendofline' option gone *ye-option-gone* +--------------------------- + +The 'yankendofline' option has been removed. Instead you can just use + :map Y y$ + + +'icon' and 'title' default value changed *icon-changed* +---------------------------------------- + +The 'title' option is now only set by default if the original title can be +restored. Avoids "Thanks for flying Vim" titles. If you want them anyway, +put ":set title" in your vimrc. |'title'| + +The default for 'icon' now depends on the possibility of restoring the +original value, just like 'title'. If you don't like your icon titles to be +changed, add this line to your vimrc: |'icon'| + :set noicon + + +'highlight' option changed *highlight-changed* +-------------------------- + +The 'i' flag now means italic highlighting, instead of invert. The 'r' flag +is used for reverse highlighting, which is what 'i' used to be. Normally you +won't see the difference, because italic mode is not supported on most +terminals and reverse mode is used as a fallback. |'highlight'| + +When an occasion is not present in 'highlight', use the mode from the default +value for 'highlight', instead of reverse mode. + + +'tildeop' and 'weirdinvert' short names changed *short-name-changed* +----------------------------------------------- + +Renamed 'to' (abbreviation for 'tildeop') to 'top'. |'tildeop'| +Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'. |'weirdinvert'| + +This was done because Vi uses 'wi' as the short name for 'window' and 'to' as +the short name for 'timeout'. This means that if you try setting these +options, you won't get an error message, but the effect will be different. + + +Use of "v", "V" and "CTRL-V" in Visual mode *use-visual-cmds* +------------------------------------------- + +In Visual mode, "v", "V", and "CTRL-V" used to end Visual mode. Now this +happens only if the Visual mode was in the corresponding type. Otherwise the +type of Visual mode is changed. Now only ESC can be used in all circumstances +to end Visual mode without doing anything. |v_V| + + +CTRL-B in Insert mode removed *toggle-revins* +----------------------------- + +CTRL-B in Insert mode used to toggle the 'revins' option. If you don't know +this and accidentally hit CTRL-B, it is very difficult to find out how to undo +it. Since hardly anybody uses this feature, it is disabled by default. If +you want to use it, define RIGHTLEFT in feature.h before compiling. |'revins'| + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/version5.txt b/share/vim/vim74/doc/version5.txt new file mode 100644 index 00000000..15fe92a2 --- /dev/null +++ b/share/vim/vim74/doc/version5.txt @@ -0,0 +1,7813 @@ +*version5.txt* For Vim version 7.4. Last change: 2012 Aug 08 + + + VIM REFERENCE MANUAL by Bram Moolenaar + +Welcome to Vim Version 5.0! + +This document lists the differences between Vim 4.x and Vim 5.0. +Although 5.0 is mentioned here, this is also for version 5.1, 5.2, etc. +See |vi_diff.txt| for an overview of differences between Vi and Vim 5.0. +See |version4.txt| for differences between Vim 3.0 and Vim 4.0. + +INCOMPATIBLE: |incompatible-5| + +Default value for 'compatible' changed |cp-default| +Text formatting command "Q" changed |Q-command-changed| +Command-line arguments changed |cmdline-changed| +Autocommands are kept |autocmds-kept| +Use of 'hidden' changed |hidden-changed| +Text object commands changed |text-objects-changed| +X-Windows Resources removed |x-resources| +Use of $VIM |$VIM-use| +Use of $HOME for MS-DOS and Win32 |$HOME-use| +Tags file format changed |tags-file-changed| +Options changed |options-changed| +CTRL-B in Insert mode gone |i_CTRL-B-gone| + +NEW FEATURES: |new-5| + +Syntax highlighting |new-highlighting| +Built-in script language |new-script| +Perl and Python support |new-perl-python| +Win32 GUI version |added-win32-GUI| +VMS version |added-VMS| +BeOS version |added-BeOS| +Macintosh GUI version |added-Mac| +More Vi compatible |more-compatible| +Read input from stdin |read-stdin| +Regular expression patterns |added-regexp| +Overloaded tags |tag-overloaded| +New commands |new-commands| +New options |added-options| +New command-line arguments |added-cmdline-args| +Various additions |added-various| + +IMPROVEMENTS |improvements-5| + +COMPILE TIME CHANGES |compile-changes-5| + +BUG FIXES |bug-fixes-5| + +VERSION 5.1 |version-5.1| +Changed |changed-5.1| +Added |added-5.1| +Fixed |fixed-5.1| + +VERSION 5.2 |version-5.2| +Long lines editable |long-lines| +File browser added |file-browser-5.2| +Dialogs added |dialogs-added| +Popup menu added |popup-menu-added| +Select mode added |new-Select-mode| +Session files added |new-session-files| +User defined functions and commands |new-user-defined| +New interfaces |interfaces-5.2| +New ports |ports-5.2| +Multi-byte support |new-multi-byte| +New functions |new-functions-5.2| +New options |new-options-5.2| +New Ex commands |new-ex-commands-5.2| +Changed |changed-5.2| +Added |added-5.2| +Fixed |fixed-5.2| + +VERSION 5.3 |version-5.3| +Changed |changed-5.3| +Added |added-5.3| +Fixed |fixed-5.3| + +VERSION 5.4 |version-5.4| +Runtime directory introduced |new-runtime-dir| +Filetype introduced |new-filetype-5.4| +Vim script line continuation |new-line-continuation| +Improved session files |improved-sessions| +Autocommands improved |improved-autocmds-5.4| +Encryption |new-encryption| +GTK GUI port |new-GTK-GUI| +Menu changes |menu-changes-5.4| +Viminfo improved |improved-viminfo| +Various new commands |new-commands-5.4| +Various new options |new-options-5.4| +Vim scripts |new-script-5.4| +Avoid hit-enter prompt |avoid-hit-enter| +Improved quickfix |improved-quickfix| +Regular expressions |regexp-changes-5.4| +Changed |changed-5.4| +Added |added-5.4| +Fixed |fixed-5.4| + +VERSION 5.5 |version-5.5| +Changed |changed-5.5| +Added |added-5.5| +Fixed |fixed-5.5| + +VERSION 5.6 |version-5.6| +Changed |changed-5.6| +Added |added-5.6| +Fixed |fixed-5.6| + +VERSION 5.7 |version-5.7| +Changed |changed-5.7| +Added |added-5.7| +Fixed |fixed-5.7| + +VERSION 5.8 |version-5.8| +Changed |changed-5.8| +Added |added-5.8| +Fixed |fixed-5.8| + +============================================================================== + INCOMPATIBLE *incompatible-5* + +Default value for 'compatible' changed *cp-default* +-------------------------------------- + +Vim version 5.0 tries to be more Vi compatible. This helps people who use Vim +as a drop-in replacement for Vi, but causes some things to be incompatible +with version 4.x. + +In version 4.x the default value for the 'compatible' option was off. Now the +default is on. The first thing you will notice is that the "u" command undoes +itself. Other side effects will be that mappings may work differently or not +work at all. + +Since a lot of people switching from Vim 4.x to 5.0 will find this annoying, +the 'compatible' option is switched off if Vim finds a vimrc file. This is a +bit of magic to make sure that 90% of the Vim users will not be bitten by +this change. + +What does this mean? +- If you prefer to run in 'compatible' mode and don't have a vimrc file, you + don't have to do anything. +- If you prefer to run in 'nocompatible' mode and do have a vimrc file, you + don't have to do anything. +- If you prefer to run in 'compatible' mode and do have a vimrc file, you + should put this line first in your vimrc file: > + :set compatible +- If you prefer to run in 'nocompatible' mode and don't have a vimrc file, + you can do one of the following: + - Create an empty vimrc file (e.g.: "~/.vimrc" for Unix). + - Put this command in your .exrc file or $EXINIT: > + :set nocompatible +< - Start Vim with the "-N" argument. + +If you are new to Vi and Vim, using 'nocompatible' is strongly recommended, +because Vi has a lot of unexpected side effects, which are avoided by this +setting. See 'compatible'. + +If you like some things from 'compatible' and some not, you can tune the +compatibility with 'cpoptions'. + +When you invoke Vim as "ex" or "gex", Vim always starts in compatible mode. + + +Text formatting command "Q" changed *Q-command-changed* +----------------------------------- + +The "Q" command formerly formatted lines to the width the 'textwidth' option +specifies. The command for this is now "gq" (see |gq| for more info). The +reason for this change is that "Q" is the standard Vi command to enter "Ex" +mode, and Vim now does in fact have an "Ex" mode (see |Q| for more info). + +If you still want to use "Q" for formatting, use this mapping: > + :noremap Q gq +And if you also want to use the functionality of "Q": > + :noremap gQ Q + + +Command-line arguments changed *cmdline-changed* +------------------------------ + +Command-line file-arguments and option-arguments can now be mixed. You can +give options after the file names. Example: > + vim main.c -g + +This is not possible when editing a file that starts with a '-'. Use the "--" +argument then |---|: > + vim -g -- -main.c + +"-v" now means to start Ex in Vi mode, use "-R" for read-only mode. +old: "vim -v file" |-v| +new: "vim -R file" |-R| + +"-e" now means to start Vi in Ex mode, use "-q" for quickfix. +old: "vim -e errorfile" |-e| +new: "vim -q errorfile" |-q| + +"-s" in Ex mode now means to run in silent (batch) mode. |-s-ex| + +"-x" reserved for crypt, use "-f" to avoid starting a new CLI (Amiga). +old: "vim -x file" |-x| +new: "vim -f file" |-f| + +Vim allows up to ten "+cmd" and "-c cmd" arguments. Previously Vim executed +only the last one. + +"-n" now overrides any setting for 'updatecount' in a vimrc file, but not in +a gvimrc file. + + +Autocommands are kept *autocmds-kept* +--------------------- + +Before version 5.0, autocommands with the same event, file name pattern, and +command could appear only once. This was fine for simple autocommands (like +setting option values), but for more complicated autocommands, where the same +command might appear twice, this restriction caused problems. Therefore +Vim stores all autocommands and keeps them in the order that they are defined. + +The most obvious side effect of this change is that when you source a vimrc +file twice, the autocommands in it will be defined twice. To avoid this, do +one of these: + +- Remove any autocommands that might potentially defined twice before + defining them. Example: > + :au! * *.ext + :au BufEnter *.ext ... + +- Put the autocommands inside an ":if" command. Example: > + if !exists("did_ext_autocmds") + let did_ext_autocmds = 1 + autocmd BufEnter *.ext ... + endif + +- Put your autocommands in a different autocommand group so you can remove + them before defining them |:augroup|: > + augroup uncompress + au! + au BufReadPost *.gz ... + augroup END + + +Use of 'hidden' changed *hidden-changed* +----------------------- + +In version 4.x, only some commands used the 'hidden' option. Now all commands +uses it whenever a buffer disappears from a window. + +Previously you could do ":buf xxx" in a changed buffer and that buffer would +then become hidden. Now you must set the 'hidden' option for this to work. + +The new behavior is simpler: whether Vim hides buffers no longer depends on +the specific command that you use. +- with 'hidden' not set, you never get hidden buffers. Exceptions are the + ":hide" and ":close!" commands and, in rare cases, where you would otherwise + lose changes to the buffer. +- With 'hidden' set, you almost never unload a buffer. Exceptions are the + ":bunload" or ":bdel" commands. + +":buffer" now supports a "!": abandon changes in current buffer. So do +":bnext", ":brewind", etc. + + +Text object commands changed *text-objects-changed* +---------------------------- + +Text object commands have new names. This allows more text objects and makes +characters available for other Visual mode commands. Since no more single +characters were available, text objects names now require two characters. +The first one is always 'i' or 'a'. + OLD NEW ~ + a aw a word |v_aw| + A aW a WORD |v_aW| + s as a sentence |v_as| + p ap a paragraph |v_ap| + S ab a () block |v_ab| + P aB a {} block |v_aB| + +There is another set of text objects that starts with "i", for "inner". These +select the same objects, but exclude white space. + + +X-Windows Resources removed *x-resources* +-------------------------- + +Vim no longer supports the following X resources: +- boldColor +- italicColor +- underlineColor +- cursorColor + +Vim now uses highlight groups to set colors. This avoids the confusion of +using a bold Font, which would imply a certain color. See |:highlight| and +|gui-resources|. + + +Use of $VIM *$VIM-use* +----------- + +Vim now uses the VIM environment variable to find all Vim system files. This +includes the global vimrc, gvimrc, and menu.vim files and all on-line help +and syntax files. See |$VIM|. Starting with version 5.4, |$VIMRUNTIME| can +also be used. +For Unix, Vim sets a default value for $VIM when doing "make install". +When $VIM is not set, its default value is the directory from 'helpfile', +excluding "/doc/help.txt". + + +Use of $HOME for MS-DOS and Win32 *$HOME-use* +--------------------------------- + +The MS-DOS and Win32 versions of Vim now first check $HOME when searching for +a vimrc or exrc file and for reading/storing the viminfo file. Previously Vim +used $VIM for these systems, but this causes trouble on a system with several +users. Now Vim uses $VIM only when $HOME is not set or the file is not found +in $HOME. See |_vimrc|. + + +Tags file format changed *tags-file-changed* +------------------------ + +Only tabs are allowed to separate fields in a tags file. This allows for +spaces in a file name and is still Vi compatible. In previous versions of +Vim, any white space was allowed to separate the fields. If you have a file +which doesn't use a single tab between fields, edit the tags file and execute +this command: > + :%s/\(\S*\)\s\+\(\S*\)\s\+\(.*\)/\1\t\2\t\3/ + + +Options changed *options-changed* +--------------- + +The default value of 'errorfile' has changed from "errors.vim" to "errors.err". +The reason is that only Vim scripts should have the ".vim" extensions. + +The ":make" command no longer uses the 'errorfile' option. This prevents the +output of the ":make" command from overwriting a manually saved error file. +":make" uses the 'makeef' option instead. This also allows for generating a +unique name, to prevent concurrently running ":make" commands from overwriting +each other's files. + +With 'insertmode' set, a few more things change: +- <Esc> in Normal mode goes to Insert mode. +- <Esc> in Insert mode doesn't leave Insert mode. +- When doing ":set im", go to Insert mode immediately. + +Vim considers a buffer to be changed when the 'fileformat' (formerly the +'textmode' option) is different from the buffer's initial format. + + +CTRL-B in Insert mode gone *i_CTRL-B-gone* +-------------------------- + +When Vim was compiled with the |+rightleft| feature, you could use CTRL-B to +toggle the 'revins' option. Unfortunately, some people hit the 'B' key +accidentally when trying to type CTRL-V or CTRL-N and then didn't know how to +undo this. Since toggling the 'revins' option can easily be done with the +mapping below, this use of the CTRL-B key is disabled. You can still use the +CTRL-_ key for this |i_CTRL-_|. > + :imap <C-B> <C-O>:set revins!<CR> + +============================================================================== + NEW FEATURES *new-5* + +Syntax highlighting *new-highlighting* +------------------- + +Vim now has a very flexible way to highlighting just about any type of file. +See |syntax|. Summary: > + :syntax on + +Colors and attributes can be set for the syntax highlighting, and also for +other highlighted items with the ':' flag in the 'highlight' option. All +highlighted items are assigned a highlight group which specifies their +highlighting. See |:highlight|. The default colors have been improved. + +You can use the "Normal" group to set the default fore/background colors for a +color terminal. For the GUI, you can use this group to specify the font, too. + +The "2html.vim" script can be used to convert any file that has syntax +highlighting to HTML. The colors will be exactly the same as how you see them +in Vim. With a HTML viewer you can also print the file with colors. + + +Built-in script language *new-script* +------------------------ + +A few extra commands and an expression evaluator enable you to write simple +but powerful scripts. Commands include ":if" and ":while". Expressions can +manipulate numbers and strings. You can use the '=' register to insert +directly the result of an expression. See |expression|. + + +Perl and Python support *new-perl-python* +----------------------- + +Vim can call Perl commands with ":perldo", ":perl", etc. See |perl|. +Patches made by Sven Verdoolaege and Matt Gerassimoff. + +Vim can call Python commands with ":python" and ":pyfile". See |python|. + +Both of these are only available when enabled at compile time. + + +Win32 GUI version *added-win32-GUI* +----------------- + +The GUI has been ported to MS Windows 95 and NT. All the features of the X11 +GUI are available to Windows users now. |gui-w32| +This also fixes problems with running the Win32 console version under Windows +95, where console support has always been bad. +There is also a version that supports OLE automation interface. |if_ole.txt| +Vim can be integrated with Microsoft Developer Studio using the VisVim DLL. +It is possible to produce a DLL version of gvim with Borland C++ (Aaron). + + +VMS version *added-VMS* +----------- + +Vim can now also be used on VMS systems. Port done by Henk Elbers. +This has not been tested much, but it should work. +Sorry, no documentation! + + +BeOS version *added-BeOS* +------------ + +Vim can be used on BeOS systems (including the BeBox). (Olaf Seibert) +See |os_beos.txt|. + + +Macintosh GUI version *added-Mac* +--------------------- + +Vim can now be used on the Macintosh. (Dany St-Amant) +It has not been tested much yet, be careful! +See |os_mac.txt|. + + +More Vi compatible *more-compatible* +------------------ + +There is now a real Ex mode. Started with the "Q" command, or by calling the +executable "ex" or "gex". |Ex-mode| + +Always allow multi-level undo, also in Vi compatible mode. When the 'u' flag +in 'cpoptions' is included, CTRL-R is used for repeating the undo or redo +(like "." in Nvi). + + +Read input from stdin *read-stdin* +--------------------- + +When using the "-" command-line argument, Vim reads its text input from stdin. +This can be used for putting Vim at the end of a pipe: > + grep "^a.*" *.c | vim - +See |--|. + + +Regular expression patterns *added-regexp* +--------------------------- + +Added specifying a range for the number of matches of an atom: "\{a,b}". |/\{| +Added the "shortest match" regexp "\{-}" (Webb). +Added "\s", matches a white character. Can replace "[ \t]". |/\s| +Added "\S", matches a non-white character. Can replace "[^ \t]". |/\S| + + +Overloaded tags *tag-overloaded* +--------------- + +When using a language like C++, there can be several tags for the same +tagname. Commands have been added to be able to jump to any of these +overloaded tags: +|:tselect| List matching tags, and jump to one of them. +|:stselect| Idem, and split window. +|g_CTRL-]| Do ":tselect" with the word under the cursor. + + After ":ta {tagname}" with multiple matches: +|:tnext| Go to next matching tag. +|:tprevious| Go to previous matching tag. +|:trewind| Go to first matching tag. +|:tlast| Go to last matching tag. + +The ":tag" command now also accepts wildcards. When doing command-line +completion on tags, case-insensitive matching is also available (at the end). + + +New commands *new-commands* +------------ + +|:amenu| Define menus for all modes, inserting a CTRL-O for Insert + mode, ESC for Visual and CTRL-C for Cmdline mode. "amenu" is + used for the default menus and the Syntax menu. + +|:augroup| Set group to be used for following autocommands. Allows the + grouping of autocommands to enable deletion of a specific + group. + +|:crewind| Go to first error. +|:clast| Go to last error. + +|:doautoall| Execute autocommands for all loaded buffers. + +|:echo| Echo its argument, which is an expression. Can be used to + display messages which include variables. + +|:execute| Execute its argument, which is an expression. Can be used to + built up an Ex command with anything. + +|:hide| Works like ":close". + +|:if| Conditional execution, for built-in script language. + +|:intro| Show introductory message. This is always executed when Vim + is started without file arguments. + +|:let| Assign a value to an internal variable. + +|:omap| Map only in operator-pending mode. Makes it possible to map + text-object commands. + +|:redir| Redirect output of messages to a file. + +|:update| Write when buffer has changed. + +|:while| While-loop for built-in script language. + +Visual mode: +|v_O| "O" in Visual block mode, moves the cursor to the other corner + horizontally. +|v_D| "D" in Visual block mode deletes till end of line. + +Insert mode: +|i_CTRL-]| Triggers abbreviation, without inserting any character. + + +New options *added-options* +----------- + +'background' Used for selecting highlight color defaults. Also used in + "syntax.vim" for selecting the syntax colors. Often set + automatically, depending on the terminal used. + +'complete' Specifies how Insert mode completion works. + +'eventignore' Makes it possible to ignore autocommands temporarily. + +'fileformat' Current file format. Replaces 'textmode'. +'fileformats' Possible file formats. Replaces 'textauto'. + New is that this also supports Macintosh format: A single <CR> + separates lines. + The default for 'fileformats' for MS-DOS, Win32 and OS/2 is + "dos,unix", also when 'compatible' set. Unix type files + didn't work anyway when 'fileformats' was empty. + +'guicursor' Set the cursor shape and blinking in various modes. + Default is to adjust the cursor for Insert and Replace mode, + and when an operator is pending. Blinking is default on. + +'fkmap' Farsi key mapping. + +'hlsearch' Highlight all matches with the last used search pattern. + +'hkmapp' Phonetic Hebrew mapping. (Ilya Dogolazky) + +'iconstring' Define the name of the icon, when not empty. (Version 5.2: the + string is used literally, a newline can be used to make two + lines.) + +'lazyredraw' Don't redraw the screen while executing macros, registers or + other not typed commands. + +'makeef' Errorfile to be used for ":make". "##" is replaced with a + unique number. Avoids that two Vim sessions overwrite each + others errorfile. The Unix default is "/tmp/vim##.err"; for + Amiga "t:vim##.Err, for others "vim##.err". + +'matchtime' 1/10s of a second to show a matching paren, when 'showmatch' + is set. Like Nvi. + +'mousehide' Hide mouse pointer in GUI when typing text. + +'nrformats' Defines what bases Vim will consider for numbers when using + the CTRL-A and CTRL-X commands. Default: "hex,octal". + +'shellxquote' Add extra quotes around the whole shell command, including + redirection. + +'softtabstop' Make typing behave like tabstop is set at this value, without + changing the value of 'tabstop'. Makes it more easy to keep + 'ts' at 8, while still getting four spaces for a <Tab>. + +'titlestring' String for the window title, when not empty. (Version 5.2: + this string is used literally, a newline can be used to make + two lines.) + +'verbose' Level of verbosity. Makes it possible to show which .vimrc, + .exrc, .viminfo files etc. are used for initializing. Also + to show autocommands that are being executed. Can also be set + by using the "-V" command-line argument. + + +New command-line arguments *added-cmdline-args* +-------------------------- + +|-U| Set the gvimrc file to be used. Like "-u" for the vimrc. + +|-V| Set the 'verbose' option. E.g. "vim -V10". + +|-N| Start in non-compatible mode. + +|-C| Start in compatible mode. + +|-Z| Start in restricted mode, disallow shell commands. Can also + be done by calling the executable "rvim". + +|-h| Show usage information and exit. + + +Various additions *added-various* +----------------- + +Added support for SNiFF+ connection (submitted by Toni Leherbauer). Vim can +be used as an editor for SNiFF. No documentation available... + +For producing a bug report, the bugreport.vim script has been included. +Can be used with ":so $VIMRUNTIME/bugreport.vim", which creates the file +"bugreport.txt" in the current directory. |bugs| + +Added range to ":normal" command. Now you can repeat the same command for +each line in the range. |:normal-range| + +Included support for the Farsi language (Shiran). Only when enabled at +compile time. See |farsi|. + +============================================================================== + IMPROVEMENTS *improvements-5* + +Performance: +- When 'showcmd' was set, mappings would execute much more slowly because the + output would be flushed very often. Helps a lot when executing the "life" + macros with 'showcmd' set. +- Included patches for binary searching in tags file (David O'Neill). + Can be disabled by resetting the 'tagbsearch' option. +- Don't update the ruler when repeating insert (slowed it down a lot). +- For Unix, file name expansion is now done internally instead of starting a + shell for it. +- Expand environment variables with expand_env(), instead of calling the + shell. Makes ":so $VIMRUNTIME/syntax/syntax.vim" a LOT faster. +- Reduced output for cursor positioning: Use CR-LF for moving to first few + columns in next few lines; Don't output CR twice when using termios. +- Optimized cursor positioning. Use CR, BS and NL when it's shorter than + absolute cursor positioning. +- Disable redrawing while repeating insert "1000ii<Esc>". +- Made "d$" or "D" for long lines a lot faster (delete all characters at once, + instead of one by one). +- Access option table by first letter, instead of searching from start. +- Made setting special highlighting attributes a lot faster by using + highlight_attr[], instead of searching in the 'highlight' string. +- Don't show the mode when redrawing is disabled. +- When setting an option, only redraw the screen when required. +- Improved performance of Ex commands by using a lookup table for the first + character. + +Options: +'cinoptions' Added 'g' flag, for C++ scope declarations. +'cpoptions' Added 'E' flag: Disallow yanking, deleting, etc. empty text + area. Default is to allow empty yanks. When 'E' is included, + "y$" in an empty line now is handled as an error (Vi + compatible). + Added 'j' flag: Only add two spaces for a join after a '.', + not after a '?' or '!'. + Added 'A' flag: don't give ATTENTION message. + Added 'L' flag: When not included, and 'list' is set, + 'textwidth' formatting works like 'list' is not set. + Added 'W' flag: Let ":w!" behave like Vi: don't overwrite + readonly files, or a file owned by someone else. +'highlight' Added '@' flag, for '@' characters after the last line on the + screen, and '$' at the end of the line when 'list' is set. + Added 'i' flag: Set highlighting for 'incsearch'. Default + uses "IncSearch" highlight group, which is linked to "Visual". + Disallow 'h' flag in 'highlight' (wasn't used anymore since + 3.0). +'guifont' Win32 GUI only: When set to "*" brings up a font requester. +'guipty' Default on, because so many people need it. +'path' Can contain wildcards, and "**" for searching a whole tree. +'shortmess' Added 'I' flag to avoid the intro message. +'viminfo' Added '%' flag: Store buffer list in viminfo file. + +- Increased defaults for 'maxmem' and 'maxmemtot' for Unix and Win32. Most + machines have much more RAM now that prices have dropped. +- Implemented ":set all&", set all options to their default value. |:set| + +Swap file: +- Don't create a swap file for a readonly file. Then create one on the first + change. Also create a swapfile when the amount of memory used is getting + too high. |swap-file| +- Make swap file "hidden", if possible. On Unix this is done by prepending a + dot to the swap file name. When long file names are used, the DJGPP and + Win32 versions also prepend a dot, in case a file on a mounted Unix file + system is edited. |:swapname| On MSDOS the hidden file attribute is NOT + set, because this causes problems with share.exe. +- 'updatecount' always defaults to non-zero, also for Vi compatible mode. + This means there is a swap file, which can be used for recovery. + +Tags: +- Included ctags 2.0 (Darren Hiebert). The syntax for static tags changed + from + {tag}:{fname} {fname} {command} + to + {tag} {fname} {command};" file: + Which is both faster to parse, shorter and Vi compatible. The old format is + also still accepted, unless disabled in src/feature.h (see OLD_STATIC_TAGS). + |tags-file-format| +- Completion of tags now also includes static tags for other files, at the + end. +- Included "shtags" from Stephen Riehm. +- When finding a matching tag, but the file doesn't exist, continue searching + for another match. Helps when using the same tags file (with links) for + different versions of source code. +- Give a tag with a global match in the current file a higher priority than a + global match in another file. + +Included xxd version V1.8 (Juergen Weigert). + +Autocommands: +- VimLeave autocommands are executed after writing the viminfo file, instead + of before. |VimLeave| +- Allow changing autocommands while executing them. This allows for + self-modifying autocommands. (idea from Goldberg) +- When using autocommands with two or more patterns, could not split + ":if/:endif" over two lines. Now all matching autocommands are executed in + one do_cmdline(). +- Autocommands no longer change the command repeated with ".". +- Search patterns are restored after executing autocommands. This avoids + that the 'hlsearch' highlighting is messed up by autocommands. +- When trying to execute an autocommand, also try matching the pattern with + the short file name. Helps when short file name is different from full + file name (expanded symbolic links). |autocmd-patterns| +- Made the output of ":autocmd" shorter and look better. +- Expand <sfile> in an ":autocmd" when it is defined. |<sfile>| +- Added "nested" flag to ":autocmd", allows nesting. |autocmd-nested| +- Added [group] argument to ":autocmd". Overrides the currently set group. + |autocmd-groups| +- new events: + |BufUnload| before a buffer is unloaded + |BufDelete| before a buffer is deleted from the buffer list + |FileChangedShell| when a file's modification time has changed after + executing a shell command + |User| user-defined autocommand +- When 'modified' was set by a BufRead* autocommand, it was reset again + afterwards. Now the ":set modified" is remembered. + +GUI: +- Improved GUI scrollbar handling when redrawing is slower than the scrollbar + events are generated. +- "vim -u NONE" now also stops loading the .gvimrc and other GUI inits. |-u| + Use "-U" to use another gvimrc file. |-U| +- Handle CTRL-C for external command, also for systems where "setsid()" is + supported. +- When starting the GUI, restrict the window size to the screen size. +- The default menus are read from $VIMRUNTIME/menu.vim. This allows for a + customized default menu. |menu.vim| +- Improved the default menus. Added File/Print, a Window menu, Syntax menu, + etc. +- Added priority to the ":menu" command. Now each menu can be put in a place + where you want it, independent of the order in which the menus are defined. + |menu-priority| + +Give a warning in the intro screen when running the Win32 console version on +Windows 95 because there are problems using this version under Windows 95. +|win32-problems| + +Added 'e' flag for ":substitute" command: Don't complain when not finding a +match (Campbell). |:s| + +When using search commands in a mapping, only the last one is kept in the +history. Avoids that the history is trashed by long mappings. + +Ignore characters after "ex", "view" and "gvim" when checking startup mode. +Allows the use of "gvim5" et. al. |gvim| "gview" starts the GUI in readonly +mode. |gview| + +When resizing windows, the cursor is kept in the same relative position, if +possible. (Webb) + +":all" and ":ball" no longer close and then open a window for the same buffer. +Avoids losing options, jumplist, and other info. + +"-f" command-line argument is now ignored if Vim was compiled without GUI. +|-f| + +In Visual block mode, the right mouse button picks up the nearest corner. + +Changed default mappings for DOS et al. Removed the DOS-specific mappings, +only use the Windows ones. Added Shift-Insert, Ctrl-Insert, Ctrl-Del and +Shift-Del. + +Changed the numbers in the output of ":jumps", so you can see where {count} +CTRL-O takes you. |:jumps| + +Using "~" for $HOME now works for all systems. |$HOME| + +Unix: Besides using CTRL-C, also use the INTR character from the tty settings. +Somebody has INTR set to DEL. + +Allow a <LF> in a ":help" command argument to end the help command, so another +command can follow. + +Doing "%" on a line that starts with " #if" didn't jump to matching "#else". +Don't recognize "#if", "#else" etc. for '%' when 'cpo' contains the '%' flag. +|%| + +Insert mode expansion with "CTRL-N", "CTRL-P" and "CTRL-X" improved +|ins-completion|: +- 'complete' option added. +- When 'nowrapscan' is set, and no match found, report the searched direction + in the error message. +- Repeating CTRL-X commands adds following words/lines after the match. +- When adding-expansions, accept single character matches. +- Made repeated CTRL-X CTRL-N not break undo, and "." repeats the whole + insertion. Also fixes not being able to backspace over a word that has been + inserted with CTRL-N. + +When copying characters in Insert mode from previous/next line, with CTRL-E or +CTRL-Y, 'textwidth' is no longer used. |i_CTRL-E| + +Commands that move in the arglist, like ":n" and ":rew", keep the old cursor +position of the file (this is mostly Vi compatible). + +Vim now remembers the '< and '> marks for each buffer. This fixes a problem +that a line-delete in one buffer invalidated the '< and '> marks in another +buffer. |'<| + +For MSDOS, Unix and OS/2: When $VIM not set, use the path from the executable. +When using the executable path for $VIM, remove "src/" when present. Should +make Vim find the docs and syntax files when it is run directly after +compiling. |$VIM| + +When quitting Visual mode with <Esc>, the cursor is put at start of the Visual +area (like after executing an operator). + +Win32 and Unix version: Removed 1100 character limit on external commands. + +Added possibility to include a space in a ":edit +command" argument, by +putting a backslash before it. |+cmd| + +After recovery, BufReadPost autocommands are applied. |:recover| + +Added color support for "os2ansi", OS/2 console. (Slootman) |os2ansi| + +Allow "%:p:h" when % is empty. |:_%| + +Included "<sfile>": file name from the ":source" command. |<sfile>| + +Added "<Bslash>" special character. Helps for avoiding multiple backslashes +in mappings and menus. + +In a help window, a double-click jumps to the tag under the cursor (like +CTRL-]). + +<C-Left> and <C-Right> now work like <S-Left> and <S-Right>, move a word +forward/backward (Windows compatible). |<C-Left>| + +Removed the requirement for a ":version" command in a .vimrc file. It wasn't +used for anything. You can use ":if" to handle differences between versions. +|:version| + +For MS-DOS, Win32 and OS/2: When comparing file names for autocommands, don't +make a difference between '/' and '\' for path separator. + +New termcap options: +"mb": blink. Can only be used by assigning it to one of the other highlight + options. |t_mb| +"bc": backspace character. |t_bc| +"nd": Used for moving the cursor right in the GUI, to avoid removing one line + of pixels from the last bold character. |t_nd| +"xs": highlighting not erased by overwriting, for hpterm. Combined with + 'weirdinvert'. Visual mode works on hpterm now. |t_xs| + +Unix: Set time of patch and backup file same as original file. (Hiebert). + +Amiga: In QuickFix mode no longer opens another window. Shell commands can be +used now. + +Added decmouse patches from David Binette. Can now use Dec and Netterm mouse. +But only when enabled at compile time. + +Added '#' register: Alternate file name |quote#|. Display '#' register with +":dis" command. |:display| + +Removed ':' from 'isfname' default for Unix. Check for "://" in a file name +anyway. Also check for ":\\", for MS-DOS. + +Added count to "K"eyword command, when 'keywordprg' is "man", is inserted in +the man command. "2K" results in "!man 2 <cword>". |K| + +When using "gf" on a relative path name, remove "../" from the file name, like +it's done for file names in the tags file. |gf| + +When finishing recording, don't make the recorded register the default put +register. + +When using "!!", don't put ":5,5!" on the command-line, but ":.!". And some +other enhancements to replace the line number with "." or "$" when possible. + +MSDOS et al.: Renamed $VIM/viminfo to $VIM/_viminfo. It's more consistent: +.vimrc/_vimrc and .viminfo/_viminfo + +For systems where case doesn't matter in file names (MSDOS, Amiga), ignore +case while sorting file names. For buffer names too. + +When reading from stdin doesn't work, read from stderr (helps for "foo | xargs +vim"). + +32 bit MS-DOS version: Replaced csdpmi3 by csdpmi4. + +Changed <C-Left> and <C-Right> to skip a WORD instead of a word. + +Warning for changed modified time when overwriting a file now also works on +other systems than Unix. + +Unix: Changed the defaults for configure to be the same as the defaults for +Makefile: include GUI, Perl, and Python. + +Some versions of Motif require "-lXpm". Added check for this in configure. + +Don't add "-L/usr/lib" to the link line, causes problems on a few systems. + +============================================================================== + COMPILE TIME CHANGES *compile-changes-5* + +When compiling, allow a choice for minimal, normal or maximal features in an +easy way, by changing a single line in src/feature.h. +The DOS16 version has been compiled with minimal features to avoid running +out of memory too quickly. |dos16| +The Win32, DJGPP, and OS/2 versions use maximal features, because they have +enough memory. +The Amiga version is available with normal and maximal features. + +Added "make test" to Unix version Makefile. Allows for a quick check if most +"normal" commands work properly. Also tests a few specific commands. + +Added setlocale() with codepage support for DJGPP version. + +autoconf: +- Added autoconf check for -lXdmcp. +- Included check for -lXmu, no longer needed to edit the Makefile for this. +- Switched to autoconf 2.12. +- Added configure check for <poll.h>. Seems to be needed when including + Perl on Linux? +- termlib is now checked before termcap. +- Added configure check for strncasecmp(), stricmp() and strnicmp(). Added + vim_stricmp() for when there's no library function for stricmp(). +- Use "datadir" in configure, instead of our own check for HELPDIR. + +Removed "make proto" from Makefile.manx. Could not make it work without a lot +of #ifdefs. + +Removed "proto/" from paths in proto.h. Needed for the Mac port. + +Drastically changed Makefile.mint. Now it includes the Unix Makefile. + +Added support for Dos16 in Makefile.b32 (renamed Makefile.b32 to Makefile.bor) + +All source files are now edited with a tabstop of 8 instead of 4, which is +better when debugging and using other tools. 'softtabstop' is set to 4, to +make editing easier. + +Unix: Added "link.sh" script, which removes a few unnecessary libraries from +the link command. + +Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined. +|digraphs-default| + +============================================================================== + BUG FIXES *bug-fixes-5* + +Note: Some of these fixes may only apply to test versions which were + created after version 4.6, but before 5.0. + + +When doing ":bdel", try going to the next loaded buffer. Don't rewind to the +start of the buffer list. + +mch_isdir() for Unix returned TRUE for "" on some systems. + +Win32: 'shell' set to "mksnt/sh.exe" breaks ":!" commands. Don't use +backslashes in the temp file names. + +On linux, with a FAT file system, could get spurious "file xxx changed since +editing started" messages, because the time is rounded off to two seconds +unexpectedly. + +Crash in GUI, when selecting a word (double click) and then extend until an +empty line. + +For systems where isdigit() can't handle characters > 255, get_number() caused +a crash when moving the mouse during the prompt for recovery. + +In Insert mode, "CTRL-O P" left the cursor on the last inserted character. +Now the cursor is left after the last putted character. + +When quickfix found an error type other than 'e' or 'w', it was never printed. + +A setting for 'errorfile' in a .vimrc overruled the "-q errorfile" argument. + +Some systems create a file when generating a temp file name. Filtering would +then create a backup file for this, which was never deleted. Now no backup +file is made when filtering. + +simplify_filename() could remove a ".." after a link, resulting in the wrong +file name. Made simplify_filename also work for MSDOS. Don't use it for +Amiga, since it doesn't have "../". + +otherfile() was unreliable when using links. Could think that reading/writing +was for a different file, when it was the same. + +Pasting with mouse in Replace mode didn't replace anything. + +Window height computed wrong when resizing a window with an autocommand (could +cause a crash). + +":s!foo!bar!" wasn't possible (Vi compatible). + +do_bang() freed memory twice when called recursively, because of autocommands +(test11). Thanks to Electric Fence! + +"v$d" on an empty line didn't remove the "-- VISUAL --" mode message from the +command-line, and inverted the cursor. + +":mkexrc" didn't check for failure to open the file, causing a crash. +(Felderhoff). + +Win32 mch_write() wrote past fixed buffer, causing terminal keys no longer to +be recognized. Both console and GUI version. + +Athena GUI: Crash when removing a menu item. Now Vim doesn't crash, but the +reversing of the menu item is still wrong. + +Always reset 'list' option for the help window. + +When 'scrolloff' is non-zero, a 'showmatch' could cause the shown match to be +in the wrong line and the window to be scrolled (Acevedo). + +After ":set all&", 'lines' and 'ttytype' were still non-default, because the +defaults never got set. Now the defaults for 'lines' and 'columns' are set +after detecting the window size. 'term' and 'ttytype' defaults are set when +detecting the terminal type. + +For (most) non-Unix systems, don't add file names with illegal characters when +expanding. Fixes "cannot open swapfile" error when doing ":e *.burp", when +there is no match. + +In X11 GUI, drawing part of the cursor obscured the text. Now the text is +drawn over the cursor, like when it fills the block. (Seibert) + +when started with "-c cmd -q errfile", the cursor would be left in line 1. +Now a ":cc" is done after executing "cmd". + +":ilist" never ignored case, even when 'ignorecase' set. + +"vim -r file" for a readonly file, then making a change, got ATTENTION message +in insert mode, display mixed up until <Esc> typed. Also don't give ATTENTION +message after recovering a file. + +The abbreviation ":ab #i #include" could not be removed. + +CTRL-L completion (longest common match) on command-line didn't work properly +for case-insensitive systems (MS-DOS, Windows, etc.). (suggested by Richard +Kilgore). + +For terminals that can hide the cursor ("vi" termcap entry), resizing the +window caused the cursor to disappear. + +Using an invalid mark in an Ex address didn't abort the command. + +When 'smarttab' set, would use 'shiftround' when inserting a TAB after a +space. Now it always rounds to a tabstop. + +Set '[ and '] marks for ":copy", ":move", ":append", ":insert", ":substitute" +and ":change". (Acevedo). + +"d$" in an empty line still caused an error, even when 'E' is not in +'cpoptions'. + +Help files were stored in the viminfo buffer list without a path. + +GUI: Displaying cursor was not synchronized with other displaying. Caused +several display errors. For example, when the last two lines in the file +start with spaces, "dd" on the last line copied text to the (then) last line. + +Win32: Needed to type CTRL-SHIFT-- to get CTRL-_. + +GUI: Moving the cursor forwards over bold text would remove one column of bold +pixels. + +X11 GUI: When a bold character in the last column was scrolled up or down, one +column of pixels would not be copied. + +Using <BS> to move the cursor left can sometimes erase a character. Now use +"le" termcap entry for this. + +Keyword completion with regexp didn't work. e.g., for "b.*crat". + +Fixed: With CTRL-O that jumps to another file, cursor could end up just after +the line. + +Amiga: '$' was missing from character recognized as wildcards, causing $VIM +sometimes not to be expanded. + +":change" didn't adjust marks for deleted lines. + +":help [range]" didn't work. Also for [pattern], [count] and [quotex]. + +For 'cindent'ing, typing "class::method" doesn't align like a label when the +second ':' is typed. +When inserting a CR with 'cindent' set (and a bunch of other conditions) the +cursor went to a wrong location. +'cindent' was wrong for a line that ends in '}'. +'cindent' was wrong after "else {". + +While editing the cmdline in the GUI, could not use the mouse to select text +from the command-line itself. + +When deleting lines, marks in tag stack were only adjusted for the current +window, not for other windows on the same buffer. + +Tag guessing could find a function "some_func" instead of the "func" we were +looking for. + +Tags file name relative to the current file didn't work. + +":g/pat2/s//pat2/g", causing the number of subs to be reported, used to cause +a scroll up. Now you no longer have to hit <CR>. + +X11 GUI: Selecting text could cause a crash. + +32 bit DOS version: CTRL-C in external command killed Vim. When SHELL is set +to "sh.exe", external commands didn't work. Removed using of command.com, no +longer need to set 'shellquote'. + +Fixed crash when using ":g/pat/i". + +Fixed (potential) crash for X11 GUI, when using an X selection. Was giving a +pointer on the stack to a callback function, now it's static. + +Using "#" and "*" with an operator didn't work. E.g. "c#". + +Command-line expansion didn't work properly after ":*". (Acevedo) + +Setting 'weirdinvert' caused highlighting to be wrong in the GUI. + +":e +4 #" didn't work, because the "4" was in unallocated memory (could cause +a crash). + +Cursor position was wrong for ":e #", after ":e #" failed, because of changes +to the buffer. + +When doing ":buf N", going to a buffer that was edited with ":view", the +readonly flag was reset. Now make a difference between ":e file" and ":buf +file": Only set/reset 'ro' for the first one. + +Avoid |hit-enter| prompt when not able to write viminfo on exit. + +When giving error messages in the terminal where the GUI was started, GUI +escape codes would be written to the terminal. In an xterm this could be seen +as a '$' after the message. + +Mouse would not work directly after ":gui", because full_screen isn't set, +which causes starttermcap() not to do its work. + +'incsearch' did not scroll the window in the same way as the actual search. +When 'nowrap' set, incsearch didn't show a match when it was off the side of +the screen. Now it also shows the whole match, instead of just the cursor +position (if possible). + +":unmap", ":unab" and ":unmenu" did not accept a double quote, it was seen as +the start of a comment. Now it's Vi compatible. + +Using <Up><Left><Left><Up> in the command-line, when there is no previous +cmdline in the history, inserted a NUL on the command-line. + +"i<Esc>" when on a <Tab> in column 0 left the cursor in the wrong place. + +GUI Motif: When adding a lot of menu items, the menu bar goes into two rows. +Deleting menu items, reducing the number of rows, now also works. + +With ":g/pat/s//foo/c", a match in the first line was scrolled off of the +screen, so you could not see it. +When using ":s//c", with 'nowrap' set, a match could be off the side of the +screen, so you could not see it. + +When 'helpfile' was set to a fixed, non-absolute path in feature.h, Vim would +crash. mch_Fullname can now handle file names in read-only memory. (Lottem) + +When using CTRL-A or CTRL-@ in Insert mode, there could be strange effects +when using CTRL-D next. Also, when repeating inserted text that included "0 +CTRL-D" or "^ CTRL-D" this didn't work. (Acevedo) +Using CTRL-D after using CTRL-E or CTRL-Y in Insert mode that inserted a '0' +or '^', removed the '0' or '^' and more indent. + +The command "2".p" caused the last inserted text to be executed as commands. +(Acevedo) + +Repeating the insert of "CTRL-V 048" resulted in "^@" to be inserted. + +Repeating Insert completion could fail if there are special characters in the +text. (Acevedo) + +":normal /string<CR>" caused the window to scroll. Now all ":normal" commands +are executed without scrolling messages. + +Redo of CTRL-E or CTRL-Y in Insert mode interpreted special characters as +commands. + +Line wrapping for 'tw' was done one character off for insert expansion +inserts. + +buffer_exists() function didn't work properly for buffer names with a symbolic +link in them (e.g. when using buffer_exists(#)). + +Removed the "MOTIF_COMMENT" construction from Makefile. It now works with +FreeBSD make, and probably with NeXT make too. + +Matching the 'define' and 'include' arguments now honor the settings for +'ignorecase'. (Acevedo) + +When one file shown in two windows, Visual selection mixed up cursor position +in current window and other window. + +When doing ":e file" from a help file, the 'isk' option wasn't reset properly, +because of a modeline in the help file. + +When doing ":e!", a cursor in another window on the same buffer could become +invalid, leading to "ml_get: invalid lnum" errors. + +Matching buffer name for when expanded name has a different path from not +expanded name (Brugnara). + +Normal mappings didn't work after an operator. For example, with ":map Q gq", +"QQ" didn't work. + +When ":make" resulted in zero errors, a "No Errors" error message was given +(which breaks mappings). + +When ":sourcing" a file, line length was limited to 1024 characters. CTRL-V +before <EOL> was not handled Vi compatible. (Acevedo) + +Unexpected exit for X11 GUI, caused by SAVE_YOURSELF event. (Heimann) + +CTRL-X CTRL-I only found one match per line. (Acevedo) +When using an illegal CTRL-X key in Insert mode, the CTRL-X mode message +was stuck. + +Finally managed to ignore the "Quit" menu entry of the Window manager! Now +Vim only exists when there are no changed buffers. + +Trying to start the GUI when $DISPLAY is not set resulted in a crash. +When $DISPLAY is not set and gvim starts vim, title was restored to "Thanks +for flying Vim". +When $DISPLAY not set, starting "gvim" (dropping back to vim) and then +selecting text with the mouse caused a crash. + +"J", with 'joinspaces' set, on a line ending in ". ", caused one space too +many to be added. (Acevedo) + +In insert mode, a CTRL-R {regname} which didn't insert anything left the '"' +on the screen. + +":z10" didn't work. (Clapp) + +"Help "*" didn't work. + +Renamed a lot of functions, to avoid clashes with POSIX name space. + +When adding characters to a line, making it wrap, the following lines were +sometimes not shifted down (e.g. after a tag jump). + +CTRL-E, with 'so' set and cursor on last line, now does not move cursor as +long as the last line is on the screen. + +When there are two windows, doing "^W+^W-" in the bottom window could cause +the status line to be doubled (not redrawn correctly). + +This command would hang: ":n `cat`". Now connect stdin of the external +command to /dev/null, when expanding. + +Fixed lalloc(0,) error for ":echo %:e:r". (Acevedo) + +The "+command" argument to ":split" didn't work when there was no file name. + +When selecting text in the GUI, which is the output of a command-line command +or an external command, the inversion would sometimes remain. + +GUI: "-mh 70" argument was broken. Now, when menuheight is specified, it is +not changed anymore. + +GUI: When using the scrollbar or mouse while executing an external command, +this caused garbage characters. + +Showmatch sometimes jumped to the wrong position. Was caused by a call to +findmatch() when redrawing the display (when syntax highlighting is on). + +Search pattern "\(a *\)\{3} did not work correctly, also matched "a a". +Problem with brace_count not being decremented. + +Wildcard expansion added too many non-matching file names. + +When 'iskeyword' contains characters like '~', "*" and "#" didn't work +properly. (Acevedo) + +On Linux, on a FAT file system, modification time can change by one second. +Avoid a "file has changed" warning for a one second difference. + +When using the page-switching in an xterm, Vim would position the cursor on +the last line of the window on exit. Also removed the cursor positioning for +":!" commands. + +":g/pat/p" command (partly) overwrote the command. Now the output is on a +separate line. + +With 'ic' and 'scs' set, a search for "Keyword", ignore-case matches were +highlighted too. + +"^" on a line with only white space, put cursor beyond the end of the line. + +When deleting characters before where insertion started ('bs' == 2), could not +use abbreviations. + +CTRL-E at end of file puts cursor below the file, in Visual mode, when 'so' is +non-zero. CTRL-E didn't work when 'so' is big and the line below the window +wraps. CTRL-E, when 'so' is non-zero, at end of the file, caused jumping +up-down. + +":retab" didn't work well when 'list' is set. + +Amiga: When inserting characters at the last line on the screen, causing it +to wrap, messed up the display. It appears that a '\n' on the last line +doesn't always cause a scroll up. + +In Insert mode "0<C-D><C-D>" deleted an extra character, because Vim thought +that the "0" was still there. (Acevedo) + +"z{count}l" ignored the count. Also for "zh" et. al. (Acevedo) + +"S" when 'autoindent' is off didn't delete leading white space. + +"/<Tab>" landed on the wrong character when 'incsearch' is set. + +Asking a yes/no question could cause a |hit-enter| prompt. + +When the file consists of one long line (>4100 characters), making changes +caused various errors and a crash. + +DJGPP version could not save long lines (>64000) for undo. + +"yw" on the last char in the file didn't work. Also fixed "6x" at the end of +the line. "6X" at the start of a line fails, but does not break a mapping. In +general, a movement for an operator doesn't beep or flush a mapping, but when +there is nothing to operate on it beeps (this is Vi compatible). + +"m'" and "m`" now set the '' mark at the cursor position. + +Unix: Resetting of signals for external program didn't work, because SIG_DFL +and NULL are the same! For "!!yes|dd count=1|, the yes command kept on +running. + +Partly fixed: Unix GUI: Typeahead while executing an external command was lost. +Now it's not lost while the command is producing output. + +Typing <S-Tab> in Insert mode, when it isn't mapped, inserted "<S-Tab>". Now +it works like a normal <Tab>, just like <C-Tab> and <M-Tab>. + +Redrawing ruler didn't check for old value correctly (caused UMR warnings in +Purify). + +Negative array index in finish_viminfo_history(). + +":g/^/d|mo $" deleted all the lines. The ":move" command now removes the +:global mark from the moved lines. + +Using "vG" while the last line in the window is a "@" line, didn't update +correctly. Just the "v" showed "~" lines. + +"daw" on the last char of the file, when it's a space, moved the cursor beyond +the end of the line. + +When 'hlsearch' was set or reset, only the current buffer was redrawn, while +this affects all windows. + +CTRL-^, positioning the cursor somewhere from 1/2 to 1 1/2 screen down the +file, put the cursor at the bottom of the window, instead of halfway. + +When scrolling up for ":append" command, not all windows were updated +correctly. + +When 'hlsearch' is set, and an auto-indent is highlighted, pressing <Esc> +didn't remove the highlighting, although the indent was deleted. + +When 'ru' set and 'nosc', using "$j" showed a wrong ruler. + +Under Xfree 3.2, Shift-Tab didn't work (wrong keysym is used). + +Mapping <S-Tab> didn't work. Changed the key translations to use the shortest +key code possible. This makes the termcode translations and mappings more +consistent. Now all modifiers work in all combinations, not only with <Tab>, +but also with <Space>, <CR>, etc. + +For Unix, restore three more signals. And Vim catches SIGINT now, so CTRL-C +in Ex mode doesn't make Vim exit. + +""a5Y" yanked 25 lines instead of 5. + +"vrxxx<Esc>" in an empty line could not be undone. + +A CTRL-C that breaks ":make" caused the errorfile not to be read (annoying +when you want to handle what ":make" produced so far). + +":0;/pat" didn't find "pat" in line 1. + +Search for "/test/s+1" at first char of file gave bottom-top message, or +didn't work at all with 'nowrapscan'. + +Bug in viminfo history. Could cause a crash on exit. + +":print" didn't put cursor on first non-blank in line. + +":0r !cat </dev/null" left cursor in line zero, with very strange effects. + +With 'showcmd' set and 'timeoutlen' set to a few seconds, trick to position +the cursor leftwards didn't work. + +AIX stty settings were restored to cs5 instead of cs8 (Winn). + +File name completion didn't work for "zsh" versions that put spaces between +file names, instead of NULs. + +Changed "XawChain*" to "XtChain*", should work for more systems. + +Included quite a few fixes for rightleft mode (Lottem). + +Didn't ask to |hit-enter| when GUI is started and error messages are printed. + +When trying to edit a file in a non-existent directory, ended up with editing +"No file". + +"gqap" to format a paragraph did too much redrawing. + +When 'hlsearch' set, only the current window was updated for a new search +pattern. + +Sometimes error messages on startup didn't cause a |hit-enter| prompt, +because of autocommands containing an empty line. + +Was possible to select part of the window in the border, below the command +line. + +'< and '> marks were not at the correct position after linewise Visual +selection. + +When translating a help argument to "CTRL-x", prepend or append a '_', when +applicable. + +Blockwise visual mode wasn't correct when moving vertically over a special +character (displayed as two screen characters). + +Renamed "struct option" to "struct vimoption" to avoid name clash with GNU +getopt(). + +":abclear" didn't work (but ":iabclear" and ":cabclear" did work). + +When 'nowrap' used, screen wasn't always updated correctly. + +"vim -c split file" displayed extra lines. + +After starting the GUI, searched the termcap for a "gui" term. + +When 'hls' used, search for "^$" caused a hang. +When 'hls' was set, an error in the last regexp caused trouble. + +Unix: Only output an extra <EOL> on exit when outputted something in the +alternate screen, or when there is a message that needs to be cleared. + +"/a\{" did strange things, depending on previous search. + +"c}" only redrew one line (with -u NONE). + +For mappings, CTRL-META-A was shown as <M-^A> instead of <MC-A>, while :map +only accepts <MC-A>. Now <M-C-A> is shown. + +Unix: When using full path name in a tags file, which contains a link, and +'hidden' set and jumping to a tag in the current file, would get bogus +ATTENTION message. Solved by always expanding file names, even when starting +with '/'. + +'hlsearch' highlighting of special characters (e.g., a TAB) didn't highlight +the whole thing. + +"r<CR>" didn't work correctly on the last char of a line. + +Sometimes a window resize or other signal caused an endless loop, involving +set_winsize(). + +"vim -r" didn't work, it would just hang (using tgetent() while 'term' is +empty). + +"gk" while 'nowrap' set moved two lines up. + +When windows are split, a message that causes a scroll-up messed up one of the +windows, which required a CTRL-L to be typed. + +Possible endless loop when using shell command in the GUI. + +Menus defined in the .vimrc were removed when GUI started. + +Crash when pasting with the mouse in insert mode. + +Crash with ":unmenu *" in .gvimrc for Athena. + +"5>>" shifted 5 lines 5 times, instead of 1 time. + +CTRL-C when getting a prompt in ":global" didn't interrupt. + +When 'so' is non-zero, and moving the scrollbar completely to the bottom, +there was a lot of flashing. + +GUI: Scrollbar ident must be long for DEC Alpha. + +Some functions called vim_regcomp() without setting reg_magic, which could +lead to unpredictable magicness. + +Crash when clicking around the status line, could get a selection with a +backwards range. + +When deleting more than one line characterwise, the last character wasn't +deleted. + +GUI: Status line could be overwritten when moving the scrollbar quickly (or +when 'wd' is non-zero). + +An ESC at the end of a ":normal" command caused a wait for a terminal code to +finish. Now, a terminal code is not recognized when its start comes from a +mapping or ":normal" command. + +Included patches from Robert Webb for GUI. Layout of the windows is now done +inside Vim, instead of letting the layout manager do this. Makes Vim work +with Lesstif! + +UMR warning in set_expand_context(). + +Memory leak: b_winlnum list was never freed. + +Removed TIOCLSET/TIOCLGET code from os_unix.c. Was changing some of the +terminal settings, and looked like it wasn't doing anything good. (suggested +by Juergen Weigert). + +Ruler overwrote "is a directory" message. When starting up, and 'cmdheight' +set to > 1, first message could still be in the last line. + +Removed prototype for putenv() from proto.h, it's already in osdef2.h.in. + +In replace mode, when moving the cursor and then backspacing, wrong characters +were inserted. + +Win32 GUI was checking for a CTRL-C too often, making it slow. + +Removed mappings for MS-DOS that were already covered by commands. + +When visually selecting all lines in a file, cursor at last line, then "J". +Gave ml_get errors. Was a problem with scrolling down during redrawing. + +When doing a linewise operator, and then an operator with a mouse click, it +was also linewise, instead of characterwise. + +When 'list' is set, the column of the ruler was wrong. + +Spurious error message for "/\(b\+\)*". + +When visually selected many lines, message from ":w file" disappeared when +redrawing the screen. + +":set <M-b>=^[b", then insert "^[b", waited for another character. And then +inserted "<M-b>" instead of the real <M-b> character. Was trying to insert +K_SPECIAL x NUL. + +CTRL-W ] didn't use count to set window height. + +GUI: "-font" command-line argument didn't override 'guifont' setting from +.gvimrc. (Acevedo) + +GUI: clipboard wasn't used for "*y". And some more Win32/X11 differences +fixed for the clipboard (Webb). + +Jumping from one help file to another help file, with 'compatible' set, +removed the 'help' flag from the buffer. + +File-writable bit could be reset when using ":w!" for a readonly file. + +There was a wait for CTRL-O n in Insert mode, because the search pattern was +shown. +Reduced wait, to allow reading a message, from 10 to 3 seconds. It seemed +nothing was happening. + +":recover" found same swap file twice. + +GUI: "*yy only worked the second time (when pasting to an xterm)." + +DJGPP version (dos32): The system flags were cleared. + +Dos32 version: Underscores were sometimes replaced with y-umlaut (Levin). + +Version 4.1 of ncurses can't handle tputs("", ..). Avoid calling tputs() with +an empty string. + +<S-Tab> in the command-line worked like CTRL-P when no completion started yet. +Now it does completion, last match first. + +Unix: Could get annoying "can't write viminfo" message after doing "su". Now +the viminfo file is overwritten, and the user set back to the original one. + +":set term=builtin_gui" started the GUI in a wrong way. Now it's not +allowed anymore. But "vim -T gui" does start the GUI correctly now. + +GUI: Triple click after a line only put last char in selection, when it is a +single character word. + +When the window is bigger than the screen, the scrolling up of messages was +wrong (e.g. ":vers", ":hi"). Also when the bottom part of the window was +obscured by another window. + +When using a wrong option only an error message is printed, to avoid that the +usage information makes it scroll off the screen. + +When exiting because of not being able to read from stdin, didn't preserve the +swap files properly. + +Visual selecting all chars in more than one line, then hit "x" didn't leave an +empty line. For one line it did leave an empty line. + +Message for which autocommand is executing messed up file write message (for +FileWritePost event). + +"vim -h" included "-U" even when GUI is not available, and "-l" when lisp is +not available. + +Crash for ":he <C-A>" (command-line longer than screen). + +":s/this/that/gc", type "y" two times, then undo, did reset the modified +option, even though the file is still modified. + +Empty lines in a tags file caused a ":tag" to be aborted. + +When hitting 'q' at the more prompt for ":menu", still scrolled a few lines. + +In an xterm that uses the bold trick a single row of characters could remain +after an erased bold character. Now erase one extra char after the bold char, +like for the GUI. + +":pop!" didn't work. + +When the reading a buffer was interrupted, ":w" should not be able to +overwrite the file, ":w!" is required. + +":cf%" caused a crash. + +":gui longfilename", when forking is enabled, could leave part of the +longfilename at the shell prompt. + +============================================================================== +VERSION 5.1 *version-5.1* + +Improvements made between version 5.0 and 5.1. + +This was mostly a bug-fix release, not many new features. + + +Changed *changed-5.1* +------- + +The expand() function now separates file names with <NL> instead of a space. +This avoids problems for file names with embedded spaces. To get the old +result, use substitute(expand(foo), "\n", " ", "g"). + +For Insert-expanding dictionaries allow a backslash to be used for +wildchars. Allows expanding "ze\kra", when 'isk' includes a backslash. + +New icon for the Win32 GUI. + +":tag", ":tselect" etc. only use the argument as a regexp when it starts +with '/'. Avoids that ":tag xx~" gives an error message: "No previous sub. +regexp". Also, when the :tag argument contained wildcard characters, it was +not Vi compatible. +When using '/', the argument is taken literally too, with a higher priority, +so it's found before wildcard matches. +Only when the '/' is used are matches with different case found, even though +'ignorecase' isn't set. +Changed "g^]" to only do ":tselect" when there is more than on matching tag. + +Changed some of the default colors, because they were not very readable on a +dark background. + +A character offset to a search pattern can move the cursor to the next or +previous line. Also fixes that "/pattern/e+2" got stuck on "pattern" at the +end of a line. + +Double-clicks in the status line do no longer start Visual mode. Dragging a +status line no longer stops Visual mode. + +Perl interface: Buffers() and Windows() now use more logical arguments, like +they are used in the rest of Vim (Moore). + +Init '" mark to the first character of the first line. Makes it possible to +use '" in an autocommand without getting an error message. + + +Added *added-5.1* +----- + +"shell_error" internal variable: result of last shell command. + +":echohl" command: Set highlighting for ":echo". + +'S' flag in 'highlight' and StatusLineNC highlight group: highlighting for +status line of not-current window. Default is to use bold for current +window. + +Added buffer_name() and buffer_number() functions (Aaron). +Added flags argument "g" to substitute() function (Aaron). +Added winheight() function. + +Win32: When an external command starts with "start ", no console is opened +for it (Aaron). + +Win32 console: Use termcap codes for bold/reverse based on the current +console attributes. + +Configure check for "strip". (Napier) + +CTRL-R CTRL-R x in Insert mode: Insert the contents of a register literally, +instead of as typed. + +Made a few "No match" error messages more informative by adding the pattern +that didn't match. + +"make install" now also copies the macro files. + +tools/tcltags, a shell script to generate a tags file from a TCL file. + +"--with-tlib" setting for configure. Easy way to use termlib: "./configure +--with-tlib=termlib". + +'u' flag in 'cino' for setting the indent for contained () parts. + +When Win32 OLE version can't load the registered type library, ask the user +if he wants to register Vim now. (Erhardt) +Win32 with OLE: When registered automatically, exit Vim. +Included VisVim 1.1b, with a few enhancements and the new icon (Heiko +Erhardt). + +Added patch from Vince Negri for Win32s support. Needs to be compiled with +VC 4.1! + +Perl interface: Added $curbuf. Rationalized Buffers() and Windows(). +(Moore) Added "group" argument to Msg(). + +Included Perl files in DOS source archive. Changed Makefile.bor and +Makefile.w32 to support building a Win32 version with Perl included. + +Included new Makefile.w32 from Ken Scott. Now it's able to make all Win32 +versions, including OLE, Perl and Python. + +Added CTRL-W g ] and CTRL-W g ^]: split window and do g] or g^]. + +Added "g]" to always do ":tselect" for the ident under the cursor. +Added ":tjump" and ":stjump" commands. +Improved listing of ":tselect" when tag names are a bit long. + +Included patches for the Macintosh version. Also for Python interface. +(St-Amant) + +":buf foo" now also restores cursor column, when the buffer was used before. + +Adjusted the Makefile for different final destinations for the syntax files +and scripts (for Debian Linux). + +Amiga: $VIM can be used everywhere. When $VIM is not defined, "VIM:" is +used. This fixes that "VIM:" had to be assigned for the help files, and +$VIM set for the syntax files. Now either of these work. + +Some xterms send vt100 compatible function keys F1-F4. Since it's not +possible to detect this, recognize both type of keys and translate them to +<F1> - <F4>. + +Added "VimEnter" autocommand. Executed after loading all the startup stuff. + +BeOS version now also runs on Intel CPUs (Seibert). + + +Fixed *fixed-5.1* +----- + +":ts" changed position in the tag stack when cancelled with <CR>. +":ts" changed the cursor position for CTRL-T when cancelled with <CR>. +":tn" would always jump to the second match. Was using the wrong entry in +the tag stack. +Doing "tag foo", then ":tselect", overwrote the original cursor position in +the tag stack. + +"make install" changed the vim.1 manpage in a wrong way, causing "doc/doc" +to appear for the documentation files. + +When compiled with MAX_FEAT, xterm mouse handling failed. Was caused by DEC +mouse handling interfering. + +Was leaking memory when using selection in X11. + +CTRL-D halfway a command-line left some characters behind the first line(s) +of the listing. + +When expanding directories for ":set path=", put two extra backslashes +before a space in a directory name. + +When 'lisp' set, first line of a function would be indented. Now its indent +is set to zero. And use the indent of the first previous line that is at +the same () level. Added test33. + +"so<Esc>u" in an empty file didn't work. + +DOS: "seek error in swap file write" errors, when using DOS 6.2 share.exe, +because the swap file was made hidden. It's no longer hidden. + +":global" command would sometimes not execute on a matching line. Happened +when a data block is full in ml_replace(). + +For AIX use a tgetent buffer of 2048 bytes, instead of 1024. + +Win32 gvim now only sets the console size for external commands to 25x80 +on Windows 95, not on NT. + +Win32 console: Dead key could cause a crash, because of a missing "WINAPI" +(Deshpande). + +The right mouse button started Visual mode, even when 'mouse' is empty, and +in the command-line, a left click moved the cursor when 'mouse' is empty. +In Visual mode, 'n' in 'mouse' would be used instead of 'v'. + +A blinking cursor or focus change cleared a non-Visual selection. + +CTRL-Home and CTRL-End didn't work for MS-DOS versions. + +Could include NUL in 'iskeyword', causing a crash when doing insert mode +completion. + +Use _dos_commit() to flush the swap file to disk for MSDOS 16 bit version. + +In mappings, CTRL-H was replaced by the backspace key code. This caused +problems when it was used as text, e.g. ":map _U :%s/.^H//g<CR>". + +":set t_Co=0" was not handled like a normal term. Now it's translated into +":set t_Co=", which works. + +For ":syntax keyword" the "transparent" option did work, although not +mentioned in the help. But synID() returned wrong name. + +"gqG" in a file with one-word-per-line (e.g. a dictionary) was very slow and +not interruptible. + +"gq" operator inserted screen lines in the wrong situation. Now screen +lines are inserted or deleted when this speeds up displaying. + +cindent was wrong when an "if" contained "((". + +'r' flag in 'viminfo' was not used for '%'. Could get files in the buffer +list from removable media. + +Win32 GUI with OLE: if_ole_vc.mak could not be converted into a project. +Hand-edited to fix this... + +With 'nosol' set, doing "$kdw" below an empty line positioned the cursor at +the end of the line. + +Dos32 version changed "\dir\file" into "/dir/file", to work around a DJGPP +bug. That bug appears to have been fixed, therefore this translation has +been removed. + +"/^*" didn't work (find '*' in first column). + +"<afile>" was not always set for autocommands. E.g., for ":au BufEnter * +let &tags = expand("<afile>:p:h") . "/tags". + +In an xterm, the window may be a child of the outer xterm window. Use the +parent window when getting the title and icon names. (Smith) + +When starting with "gvim -bg black -fg white", the value of 'background' is +only set after reading the .gvimrc file. This causes a ":syntax on" to use +the wrong colors. Now allow using ":gui" to open the GUI window and set the +colors. Previously ":gui" in a gvimrc crashed Vim. + +tempname() returned the same name all the time, unless the file was actually +created. Now there are at least 26 different names. + +File name used for <afile> was sometimes full path, sometimes file name +relative to current directory. + +When 'background' was set after the GUI window was opened, it could change +colors that were set by the user in the .gvimrc file. Now it only changes +colors that have not been set by the user. + +Ignore special characters after a CSI in the GUI version. These could be +interpreted as special characters in a wrong way. (St-Amant) + +Memory leak in farsi code, when using search or ":s" command. +Farsi string reversing for a mapping was only done for new mappings. Now it +also works for replacing a mapping. + +Crash in Win32 when using a file name longer than _MAX_PATH. (Aaron) + +When BufDelete autocommands were executed, some things for the buffer were +already deleted (esp. Perl stuff). + +Perl interface: Buffer specific items were deleted too soon; fixes "screen +no longer exists" messages. (Moore) + +The Perl functions didn't set the 'modified' flag. + +link.sh did not return an error on exit, which may cause Vim to start +installing, even though there is no executable to install. (Riehm) + +Vi incompatibility: In Vi "." redoes the "y" command. Added the 'y' flag to +'cpoptions'. Only for 'compatible' mode. + +":echohl" defined a new group, when the argument was not an existing group. + +"syn on" and ":syn off" could move the cursor, if there is a hidden buffer +that is shorter that the current cursor position. + +The " mark was not set when doing ":b file". + +When a "nextgroup" is used with "skipwhite" in syntax highlighting, space at +the end of the line made the nextgroup also be found in the next line. + +":he g<CTRL-D>", then ":" and backspace to the start didn't redraw. + +X11 GUI: "gvim -rv" reversed the colors twice on Sun. Now Vim checks if the +result is really reverse video (background darker than foreground). + +"cat link.sh | vim -" didn't set syntax highlighting. + +Win32: Expanding "file.sw?" matched ".file.swp". This is an error of +FindnextFile() that we need to work around. (Kilgore) + +"gqgq" gave an "Invalid lnum" error on the last line. +Formatting with "gq" didn't format the first line after a change of comment +leader. + +There was no check for out-of-memory in win_alloc(). + +"vim -h" didn't mention "-register" and "-unregister" for the OLE version. + +Could not increase 'cmdheight' when the last window is only one line. Now +other windows are also made smaller, when necessary. + +Added a few {} to avoid "suggest braces around" warnings from gcc 2.8.x. +Changed return type of main() from void to int. (Nam) + +Using '~' twice in a substitute pattern caused a crash. + +"syn on" and ":syn off" could scroll the window, if there is a hidden buffer +that is shorter that the current cursor position. + +":if 0 | if 1 | endif | endif" didn't work. Same for ":while" and "elseif". + +With two windows on modified files, with 'autowrite' set, cursor in second +window, ":qa" gave a warning for the file in the first window, but then +auto-wrote the file in the second window. (Webb) + +Win32 GUI scrollbar could only handle 32767 lines. Also makes the +intellimouse wheel use the configurable number of scrolls. (Robinson) + +When using 'patchmode', and the backup file is on another partition, the file +copying messed up the write-file message. + +GUI X11: Alt-Backspace and Alt-Delete didn't work. + +"`0" could put the cursor after the last character in the line, causing +trouble for other commands, like "i". + +When completing tags in insert mode with ^X^], some matches were skipped, +because the compare with other tags was wrong. E.g., when "mnuFileSave" was +already there, "mnuFile" would be skipped. (Negri) + +When scrolling up/down, a syntax item with "keepend" didn't work properly. +Now the flags are also stored for the syntax state at the start of each line. + +When 'ic' was changed while 'hlsearch' is on, there was no redraw to show the +effect. + +Win32 GUI: Don't display "No write since last chance" in a message box, but in +the Vim window. + +============================================================================== +VERSION 5.2 *version-5.2* + +Improvements made between version 5.1 and 5.2. + + +Long lines editable *long-lines* +------------------- + +A single long line that doesn't fit in the window doesn't show a line of @@@ +anymore. Redrawing starts at a character further on in the line, such that +the text around the cursor can be seen. This makes it possible to edit these +long lines when wrapping is on. + + +File browser added *file-browser-5.2* +------------------ + +The Win32, Athena and Motif GUI bring up a file requester if the user asks to +":browse" for the ":e", ":w", ":r", ":so", ":redirect" and +":mkexrc/vimrc/vsess" commands. ::browse e /foo/bar" opens the requester in +the /foo/bar directory, so you can have nice mapping rhs's like ":browse so +$vim/macros". If no initial dir specified for ":browse e", can be compiled to +either begin in the current directory, or that of the current buffer. (Negri +and Kahn) +Added the 'browsedir' option, with value "current", "last" or "buffer". Tells +whether a browse dialog starts in last used dir, dir of current buffer, or +current dir. ":browse w" is unaffected. +The default menus have been changed to use the ":browse" command. + + +Dialogs added *dialogs-added* +------------- + +Added the ":confirm" command. Works on ":e", ":q", ":w", ":cl". Win32, +Athena and Motif GUI uses a window-dialog. All other platforms can use +prompt in command-line. ":confirm qa" offers a choice to save all modified +files. + +confirm() function: allows user access to the confirm engine. + +Added 'v' flag to 'guioptions'. When included, a vertical button layout is +always used for the Win32 GUI dialog. Otherwise, a horizontal layout is +preferred. + +Win32 GUI: ":promptfind" and ":promptrepl" pop up a dialog to find/replace. +To be used from a menu entry. (Negri) + + +Popup menu added *popup-menu-added* +---------------- + +When the 'mousemodel' option is set to "popup", the right mouse button +displays the top level menu headed with "PopUp" as pop-up context menu. The +"PopUp" menu is not displayed in the normal menu bar. This currently only +works for Win32 and Athena GUI. + + +Select mode added *new-Select-mode* +----------------- + +A new mode has been added: "Select mode". It is like Visual mode, but typing +a printable character replaces the selection. +- CTRL-G can be used to toggle between Visual mode and Select mode. +- CTRL-O can be used to switch from Select mode to Visual mode for one command. +- Added 'selectmode' option: tells when to start Select mode instead of Visual + mode. +- Added 'mousemodel' option: Change use of mouse buttons. +- Added 'keymodel' option: tells to use shifted special keys to start a + Visual or Select mode selection. +- Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel' + and 'keymodel' for MS-Windows and xterm behavior. +- The xterm-like selection is now called modeless selection. +- Visual mode mappings and menus are used in Select mode. They automatically + switch to Visual mode first. Afterwards, reselect the area, unless it was + deleted. The "gV" command can be used in a mapping to skip the reselection. +- Added the "gh", "gH" and "g^H" commands: start Select (highlight) mode. +- Backspace in Select mode deletes the selected area. + +"mswin.vim" script. Sets behavior mostly like MS-Windows. + + +Session files added *new-session-files* +------------------- + +":mks[ession]" acts like "mkvimrc", but also writes the full filenames of the +currently loaded buffers and current directory, so that :so'ing the file +re-loads those files and cd's to that directory. Also stores and restores +windows. File names are made relative to session file. +The 'sessionoptions' option sets behavior of ":mksession". (Negri) + + +User defined functions and commands *new-user-defined* +----------------------------------- + +Added user defined functions. Defined with ":function" until ":endfunction". +Called with "Func()". Allows the use of a variable number of arguments. +Included support for local variables "l:name". Return a value with ":return". +See |:function|. +Call a function with ":call". When using a range, the function is called for +each line in the range. |:call| +"macros/justify.vim" is an example of using user defined functions. +User functions do not change the last used search pattern or the command to be +redone with ".". +'maxfuncdepth' option. Restricts the depth of function calls. Avoids trouble +(crash because of out-of-memory) when a function uses endless recursion. + +User definable Ex commands: ":command", ":delcommand" and ":comclear". +(Moore) See |user-commands|. + + +New interfaces *interfaces-5.2* +-------------- + +Tcl interface. (Wilken) See |tcl|. +Uses the ":tcl", ":tcldo" and "tclfile" commands. + +Cscope support. (Kahn) (Sekera) See |cscope|. +Uses the ":cscope" and ":cstag" commands. Uses the options 'cscopeprg', +'cscopetag', 'cscopetagorder' and 'cscopeverbose'. + + +New ports *ports-5.2* +--------- + +Amiga GUI port. (Nielsen) Not tested much yet! + +RISC OS version. (Thomas Leonard) See |riscos|. +This version can run either with a GUI or in text mode, depending upon where +it is invoked. +Deleted the "os_archie" files, they were not working anyway. + + +Multi-byte support *new-multi-byte* +------------------ + +MultiByte support for Win32 GUI. (Baek) +The 'fileencoding' option decides how the text in the file is encoded. +":ascii" works for multi-byte characters. Multi-byte characters work on +Windows 95, even when using the US version. (Aaron) +Needs to be enabled in feature.h. +This has not been tested much yet! + + +New functions *new-functions-5.2* +------------- + +|browse()| puts up a file requester when available. (Negri) +|escape()| escapes characters in a string with a backslash. +|fnamemodify()| modifies a file name. +|input()| asks the user to enter a line. (Aaron) There is a separate + history for lines typed for the input() function. +|argc()| +|argv()| can be used to access the argument list. +|winbufnr()| buffer number of a window. (Aaron) +|winnr()| window number. (Aaron) +|matchstr()| Return matched string. +|setline()| Set a line to a string value. + + +New options *new-options-5.2* +----------- + +'allowrevins' Enable the CTRL-_ command in Insert and Command-line mode. +'browsedir' Tells in which directory a browse dialog starts. +'confirm' when set, :q :w and :e commands always act as if ":confirm" + is used. (Negri) +'cscopeprg' +'cscopetag' +'cscopetagorder' +'cscopeverbose' Set the |cscope| behavior. +'filetype' RISC-OS specific type of file. +'grepformat' +'grepprg' For the |:grep| command. +'keymodel' Tells to use shifted special keys to start a Visual or Select + mode selection. +'listchars' Set character to show in 'list' mode for end-of-line, tabs and + trailing spaces. (partly by Smith) Also sets character to + display if a line doesn't fit when 'nowrap' is set. +'matchpairs' Allows matching '<' with '>', and other single character + pairs. +'mousefocus' Window focus follows mouse (partly by Terhaar). Changing the + focus with a keyboard command moves the pointer to that + window. Also move the pointer when changing the window layout + (split window, change window height, etc.). +'mousemodel' Change use of mouse buttons. +'selection' When set to "inclusive" or "exclusive", the cursor can go one + character past the end of the line in Visual or Select mode. + When set to "old" the old behavior is used. When + "inclusive", the character under the cursor is included in the + operation. When using "exclusive", the new "ve" entry of + 'guicursor' is used. The default is a vertical bar. +'selectmode' Tells when to start Select mode instead of Visual mode. +'sessionoptions' Sets behavior of ":mksession". (Negri) +'showfulltag' When completing a tag in Insert mode, show the tag search + pattern (tidied up) as a choice as well (if there is one). +'swapfile' Whether to use a swap file for a buffer. +'syntax' When it is set, the syntax by that name is loaded. Allows for + setting a specific syntax from a modeline. +'ttymouse' Allows using xterm mouse codes for terminals which name + doesn't start with "xterm". +'wildignore' List of patterns for files that should not be completed at + all. +'wildmode' Can be used to set the type of expansion for 'wildchar'. + Replaces the CTRL-T command for command line completion. + Don't beep when listing all matches. +'winaltkeys' Win32 and Motif GUI. When "yes", ALT keys are handled + entirely by the window system. When "no", ALT keys are never + used by the window system. When "menu" it depends on whether + a key is a menu shortcut. +'winminheight' Minimal height for each window. Default is 1. Set to 0 if + you want zero-line windows. Scrollbar is removed for + zero-height windows. (Negri) + + + +New Ex commands *new-ex-commands-5.2* +--------------- + +|:badd| Add file name to buffer list without side effects. (Negri) +|:behave| Quickly set MS-Windows or xterm behavior. +|:browse| Use file selection dialog. +|:call| Call a function, optionally with a range. +|:cnewer| +|:colder| To access a stack of quickfix error lists. +|:comclear| Clear all user-defined commands. +|:command| Define a user command. +|:continue| Go back to ":while". +|:confirm| Ask confirmation if something unexpected happens. +|:cscope| Execute cscope command. +|:cstag| Use cscope to jump to a tag. +|:delcommand| Delete a user-defined command. +|:delfunction| Delete a user-defined function. +|:endfunction| End of user-defined function. +|:function| Define a user function. +|:grep| Works similar to ":make". (Negri) +|:mksession| Create a session file. +|:nohlsearch| Stop 'hlsearch' highlighting for a moment. +|:Print| This is Vi compatible. Does the same as ":print". +|:promptfind| Search dialog (Win32 GUI). +|:promptrepl| Search/replace dialog (Win32 GUI). +|:return| Return from a user-defined function. +|:simalt| Win32 GUI: Simulate alt-key pressed. (Negri) +|:smagic| Like ":substitute", but always use 'magic'. +|:snomagic| Like ":substitute", but always use 'nomagic'. +|:tcl| Execute TCL command. +|:tcldo| Execute TCL command for a range of lines. +|:tclfile| Execute a TCL script file. +|:tearoff| Tear-off a menu (Win32 GUI). +|:tmenu| +|:tunmenu| Win32 GUI: menu tooltips. (Negri) +|:star| :* Execute a register. + + +Changed *changed-5.2* +------- + +Renamed functions: + buffer_exists() -> bufexists() + buffer_name() -> bufname() + buffer_number() -> bufnr() + file_readable() -> filereadable() + highlight_exists() -> hlexists() + highlightID() -> hlID() + last_buffer_nr() -> bufnr("$") +The old ones are still there, for backwards compatibility. + +The CTRL-_ command in Insert and Command-line mode is only available when the +new 'allowrevins' option is set. Avoids that people who want to type SHIFT-_ +accidentally enter reverse Insert mode, and don't know how to get out. + +When a file name path in ":tselect" listing is too long, remove a part in the +middle and put "..." there. + +Win32 GUI: Made font selector appear inside Vim window, not just any odd +place. (Negri) + +":bn" skips help buffers, unless currently in a help buffer. (Negri) + +When there is a status line and only one window, don't show '^' in the status +line of the current window. + +":*" used to be used for "'<,'>", the Visual area. But in Vi it's used as an +alternative for ":@". When 'cpoptions' includes '*' this is Vi compatible. + +When 'insertmode' is set, using CTRL-O to execute a mapping will work like +'insertmode' was not set. This allows "normal" mappings to be used even when +'insertmode' is set. + +When 'mouse' was set already (e.g., in the .vimrc file), don't automatically +set 'mouse' when the GUI starts. + +Removed the 'N', 'I' and 'A' flags from the 'mouse' option. + +Renamed "toggle option" to "boolean option". Some people thought that ":set +xyz" would toggle 'xyz' on/off each time. + +The internal variable "shell_error" contains the error code from the shell, +instead of just 0 or 1. + +When inserting or replacing, typing CTRL-V CTRL-<CR> used to insert "<C-CR>". +That is not very useful. Now the CTRL key is ignored and a <CR> is inserted. +Same for all other "normal" keys with modifiers. Mapping these modified key +combinations is still possible. +In Insert mode, <C-CR> and <S-Space> can be inserted by using CTRL-K and then +the special character. + +Moved "quotes" file to doc/quotes.txt, and "todo" file to doc/todo.txt. They +are now installed like other documentation files. + +winheight() function returns -1 for a non-existing window. It used to be +zero, but that is a valid height now. + +The default for 'selection' is "inclusive", which makes a difference when +using "$" or the mouse to move the cursor in Visual mode. + +":q!" does not exit when there are changed buffers which are hidden. Use +":qa!" to exit anyway. + +Disabled the Perl/Python/Tcl interfaces by default. Not many people use them +and they make the executable a lot bigger. The internal scripting language is +now powerful enough for most tasks. + +The strings from the 'titlestring' and 'iconstring' options are used +untranslated for the Window title and icon. This allows for including a <CR>. +Previously a <CR> would be shown as "^M" (two characters). + +When a mapping is started in Visual or Select mode which was started from +Insert mode (the mode shows "(insert) Visual"), don't return to Insert mode +until the mapping has ended. Makes it possible to use a mapping in Visual +mode that also works when the Visual mode was started from Select mode. + +Menus in $VIMRUNTIME/menu.vim no longer overrule existing menus. This helps +when defining menus in the .vimrc file, or when sourcing mswin.vim. + +Unix: Use /var/tmp for .swp files, if it exists. Files there survive a +reboot (at least on Linux). + + +Added *added-5.2* +----- + +--with-motif-lib configure argument. Allows for using a static Motif library. + +Support for mapping numeric keypad +,-,*,/ keys. (Negri) +When not mapped, they produce the normal character. + +Win32 GUI: When directory dropped on Gvim, cd there and edit new buffer. +(Negri) + +Win32 GUI: Made CTRL-Break work as interrupt, so that CTRL-C can be +used for mappings. + +In the output of ":map", highlight the "*" to make clear it's not part of the +rhs. (Roemer) + +When showing the Visual area, the cursor is not switched off, so that it can +be located. The Visual area is now highlighted with a grey background in the +GUI. This makes the cursor visible when it's also reversed. + +Win32: When started with single full pathname (e.g. via double-clicked file), +cd to that file's directory. (Negri) + +Win32 GUI: Tear-off menus, with ":tearoff <menu-name>" command. (Negri) +'t' option to 'guioptions': Add tearoff menu items for Win32 GUI and Motif. +It's included by default. +Win32 GUI: tearoff menu with submenus is indicated with a ">>". (Negri) + +Added ^Kaa and ^KAA digraphs. +Added "euro" symbol to digraph.c. (Corry) + +Support for Motif menu shortcut keys, using '&' like MS-Windows (Ollis). +Other GUIs ignore '&' in a menu name. + +DJGPP: Faster screen updating (John Lange). + +Clustering of syntax groups ":syntax cluster" (Bigham). +Including syntax files: ":syntax include" (Bigham). + +Keep column when switching buffers, when 'nosol' is set (Radics). + +Number function for Perl interface. + +Support for Intellimouse in Athena GUI. (Jensen) + +":sleep" also accepts an argument in milliseconds, when "m" is used. + +Added 'p' flag in 'guioptions': Install callbacks for enter/leave window +events. Makes cursor blinking work for Terhaar, breaks it for me. + +"--help" and "--version" command-line arguments. + +Non-text in ":list" output is highlighted with NonText. + +Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as +synonym for "iB". New: "i<" and "i>", to select <thing>. All this also for +"a" objects. + +'O' flag in 'shortmess': message for reading a file overwrites any previous +message. (Negri) + +Win32 GUI: 'T' flag in 'guioptions': switch toolbar on/off. +Included a list with self-made toolbar bitmaps. (Negri) + +Added menu priority for sub-menus. Implemented for Win32 and Motif GUI. +Display menu priority with ":menu" command. +Default and Syntax menus now include priority for items. Allows inserting +menu items in between the default ones. + +When the 'number' option is on, highlight line numbers with the LineNr group. + +"Ignore" highlight group: Text highlighted with this is made blank. It is +used to hide special characters in the help text. + +Included Exuberant Ctags version 2.3, with C++ support, Java support and +recurse into directories. (Hiebert) + +When a tags file is not sorted, and this is detected (in a simplistic way), an +error message is given. + +":unlet" accepts a "!", to ignore non-existing variables, and accepts more +than one argument. (Roemer) +Completion of variable names for ":unlet". (Roemer) + +When there is an error in a function which is called by another function, show +the call stack in the error message. + +New file name modifiers: +":.": reduce file name to be relative to current dir. +":~": reduce file name to be relative to home dir. +":s?pat?sub?": substitute "pat" with "sub" once. +":gs?pat?sub?": substitute "pat" with "sub" globally. + +New configure arguments: --enable-min-features and --enable-max-features. +Easy way to switch to minimum or maximum features. + +New compile-time feature: modify_fname. For file name modifiers, e.g, +"%:p:h". Can be disabled to save some code (16 bit DOS). + +When using whole-line completion in Insert mode, and 'cindent' is set, indent +the line properly. + +MSDOS and Win32 console: 'guicursor' sets cursor thickness. (Negri) + +Included new set of Farsi fonts. (Shiran) + +Accelerator text now also works in Motif. All menus can be defined with & for +mnemonic and TAB for accelerator text. They are ignored on systems that don't +support them. +When removing or replacing a menu, compare the menu name only up to the <Tab> +before the mnemonic. + +'i' and 'I' flags after ":substitute": ignore case or not. + +"make install" complains if the runtime files are missing. + +Unix: When finding an existing swap file that can't be opened, mention the +owner of the file in the ATTENTION message. + +The 'i', 't' and 'k' options in 'complete' now also print the place where they +are looking for matches. (Acevedo) + +"gJ" command: Join lines without inserting a space. + +Setting 'keywordprg' to "man -s" is handled specifically. The "-s" is removed +when no count given, the count is added otherwise. Configure checks if "man +-s 2 read" works, and sets the default for 'keywordprg' accordingly. + +If you do a ":bd" and there is only one window open, Vim tries to move to a +buffer of the same type (i.e. non-help to non-help, help to help), for +consistent behavior to :bnext/:bprev. (Negri) + +Allow "<Nop>" to be used as the rhs of a mapping. ":map xx <Nop>", maps "xx" +to nothing at all. + +In a ":menu" command, "<Tab>" can be used instead of a real tab, in the menu +path. This makes it more easy to type, no backslash needed. + +POSIX compatible character classes for regexp patterns: [:alnum:], [:alpha:], +[:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], +[:space:], [:upper:] and [:xdigit:]. (Briscoe) + +regexp character classes (for fast syntax highlight matching): + digits: \d [0-9] \D not digit (Roemer) + hex: \x [0-9a-fA-F] \X not hex + octal: \o [0-7] \O not octal + word: \w [a-zA-Z0-9_] \W not word + head: \h [a-zA-Z_] \H not head + alphabetic: \a [a-zA-Z] \A not alphabetic + lowercase: \l [a-z] \L not lowercase + uppercase: \u [A-Z] \U not uppercase + +":set" now accepts "+=", |^=" and "-=": add or remove parts of a string +option, add or subtract a number from a number option. A comma is +automagically inserted or deleted for options that are a comma separated list. + +Filetype feature, for autocommands. Uses a file type instead of a pattern to +match a file. Currently only used for RISC OS. (Leonard) + +In a pattern for an autocommand, environment variables can be used. They are +expanded when the autocommand is defined. + +"BufFilePre" and "BufFilePost" autocommand evens: Before and after applying +the ":file" command to change the name of a buffer. +"VimLeavePre" autocommand event: before writing the .viminfo file. + +For autocommands argument: <abuf> is buffer number, like <afile>. + +Made syntax highlighting a bit faster when scrolling backwards, by keeping +more syncing context. + +Win32 GUI: Made scrolling faster by avoiding a redraw when deleting or +inserting screen lines. + +GUI: Made scrolling faster by not redrawing the scrollbar when the thumb moved +less than a pixel. + +Included ":highlight" in bugreport.vim. + +Created install.exe program, for simplistic installation on DOS and +MS-Windows. + +New register: '_', the black hole. When writing to it, nothing happens. When +reading from it, it's always empty. Can be used to avoid a delete or change +command to modify the registers, or reduce memory use for big changes. + +CTRL-V xff enters character by hex number. CTRL-V o123 enters character by +octal number. (Aaron) + +Improved performance of syntax highlighting by skipping check for "keepend" +when there isn't any. + +Moved the mode message ("-- INSERT --") to the last line of the screen. When +'cmdheight' is more than one, messages will remain readable. + +When listing matching files, they are also sorted on 'suffixes', such that +they are listed in the same order as CTRL-N retrieves them. + +synIDattr() takes a third argument (optionally), which tells for which +terminal type to get the attributes for. This makes it possible to run +2html.vim outside of gvim (using color names instead of #RRGGBB). + +Memory profiling, only for debugging. Prints at exit, and with "g^A" command. +(Kahn) + +DOS: When using a file in the current drive, remove the drive name: +"A:\dir\file" -> "\dir\file". This helps when moving a session file on a +floppy from "A:\dir" to "B:\dir". + +Increased number of remembered jumps from 30 to 50 per window. + +Command to temporarily disable 'hls' highlighting until the next search: +":nohlsearch". + +"gp" and "gP" commands: like "p" and "P", but leave the cursor just after the +inserted text. Used for the CTRL-V command in MS-Windows mode. + + +Fixed *fixed-5.2* +----- + +Win32 GUI: Could draw text twice in one place, for fake-bold text. Removed +this, Windows will handle the bold text anyway. (Negri) + +patch 5.1.1: Win32s GUI: pasting caused a crash (Negri) + +patch 5.1.2: When entering another window, where characters before the cursor +have been deleted, could have a cursor beyond the end of the line. + +patch 5.1.3: Win32s GUI: Didn't wait for external command to finish. (Negri) + +patch 5.1.4: Makefile.w32 can now also be used to generate the OLE version +(Scott). + +patch 5.1.5: Crashed when using syntax highlighting: cursor on a line that +doesn't fit in the window, and splitting that line in two. + +patch 5.1.6: Visual highlighting bug: After ":set nowrap", go to end of line +(so that the window scrolls horizontally), ":set wrap". Following Visual +selection was wrong. + +patch 5.1.7: When 'tagbsearch' off, and 'ignorecase' off, still could do +binary searching. + +patch 5.1.8: Win32 GUI: dragging the scrollbar didn't update the ruler. + +patch 5.1.9: Using ":gui" in .vimrc, caused xterm cursor to disappear. + +patch 5.1.10: A CTRL-N in Insert mode could cause a crash, when a buffer +without a name exists. + +patch 5.1.11: "make test" didn't work in the shadow directory. Also adjusted +"make shadow" for the links in the ctags directory. + +patch 5.1.12: "buf 123foo" used "123" as a count, instead as the start of a +buffer name. + +patch 5.1.13: When completing file names on the command-line, reallocating the +command-line may go wrong. + +patch 5.1.14: ":[nvci]unmenu" removed menu for all modes, when full menu patch +specified. + +Graceful handling of NULLs in drag-dropped file list. Handle passing NULL to +Fullname_save(). (Negri) + +Win32: ":!start" to invoke a program without opening a console, swapping +screens, or waiting for completion in either console or gui version, e.g. you +can type ":!start winfile". ALSO fixes "can't delete swapfile after spawning +a shell" bug. (enhancement of Aaron patch) (Negri) + +Win32 GUI: Fix CTRL-X default keymapping to be more Windows-like. (Negri) + +Shorten filenames on startup. If in /foo/bar, entering "vim ../bar/bang.c" +displays "bang.c" in status bar, not "/foo/bar/bang.c" (Negri) + +Win32 GUI: No copy to Windows clipboard when it's not desired. + +Win32s: Fix pasting from clipboard - made an assumption not valid under +Win32s. (Negri) + +Win32 GUI: Speed up calls to gui_mch_draw_string() and cursor drawing +functions. (Negri) + +Win32 GUI: Middle mouse button emulation now works in GUI! (Negri) + +Could skip messages when combining commands in one line, e.g.: +":echo "hello" | write". + +Perl interpreter was disabled before executing VimLeave autocommands. Could +not use ":perl" in them. (Aaron) + +Included patch for the Intellimouse (Aaron/Robinson). + +Could not set 'ls' to one, when last window has only one line. (Mitterand) + +Fixed a memory leak when removing menus. + +After ":only" the ruler could overwrite a message. + +Dos32: removed changing of __system_flags. It appears to work better when +it's left at the default value. + +p_aleph was an int instead of along, caused trouble on systems where +sizeof(int) != sizeof(long). (Schmidt) + +Fixed enum problems for Ultrix. (Seibert) + +Small redraw problem: "dd" on last line in file cleared wrong line. + +Didn't interpret "cmd | endif" when "cmd" starts with a range. E.g. "if 0 | +.d | endif". + +Command "+|" on the last line of the file caused ml_get errors. + +Memory underrun in eval_vars(). (Aaron) + +Don't rename files in a difficult way, except on Windows 95 (was also done on +Windows NT). + +Win32 GUI: An external command that produces an error code put the error +message in a dialog box. had to close the window and close the dialog. Now +the error code is displayed in the console. (Negri) + +"comctl32.lib" was missing from the GUI libraries in Makefile.w32. (Battle) + +In Insert mode, when entering a window in Insert mode, allow the cursor to be +one char beyond the text. + +Renamed machine dependent rename() to mch_rename(). Define mch_rename() to +rename() when it works properly. + +Rename vim_chdir() to mch_chdir(), because it's machine dependent. + +When using an arglist, and editing file 5 of 4, ":q" could cause "-1 more +files to edit" error. + +In if_python.c, VimCommand() caused an assertion when a do_cmdline() failed. +Moved the Python_Release_Vim() to before the VimErrorCheck(). (Harkins) + +Give an error message for an unknown argument after "--". E.g. for "vim +--xyz". + +The FileChangedShell autocommand didn't set <afile> to the name of the changed +file. + +When doing ":e file", causing the attention message, there sometimes was no +hit-enter prompt. Caused by empty line or "endif" at end of sourced file. + +A large number of patches for the VMS version. (Hunsaker) + +When CTRL-L completion (find longest match) results in a shorter string, no +completion is done (happens with ":help"). + +Crash in Win32 GUI version, when using an Ex "@" command, because +LinePointers[] was used while not initialized. + +Win32 GUI: allow mapping of Alt-Space. + +Output from "vim -h" was sent to stderr. Sending it to stdout is better, so +one can use "vim -h | more". + +In command-line mode, ":vi[!]" should reload the file, just like ":e[!]". +In Ex mode, ":vi" stops Ex mode, but doesn't reload the file. This is Vi +compatible. + +When using a ":set ls=1" in the .gvimrc file, would get a status line for a +single window. (Robinson) + +Didn't give an error message for ":set ai,xx". (Roemer) +Didn't give an error message for ":set ai?xx", ":set ai&xx", ":set ai!xx". + +Non-Unix systems: That a file exists but is unreadable is recognized as "new +file". Now check for existence when file can't be opened (like Unix). + +Unix: osdef.sh didn't handle declarations where the function name is at the +first column of the line. + +DJGPP: Shortening of file names didn't work properly, because get_cwd() +returned a path with backslashes. (Negri) + +When using a 'comments' part where a space is required after the middle part, +always insert a space when starting a new line. Helps for C comments, below a +line with "/****". + +Replacing path of home directory with "~/" could be wrong for file names +with embedded spaces or commas. + +A few fixes for the Sniff interface. (Leherbauer) + +When asking to hit 'y' or 'n' (e.g. for ":3,1d"), using the mouse caused +trouble. Same for ":s/x/y/c" prompt. + +With 'nowrap' and 'list', a Tab halfway on the screen was displayed as blanks, +instead of the characters specified with 'listchars'. Also for other +characters that take more than one screen character. + +When setting 'guifont' to an unknown font name, the previous font was lost and +a default font would be used. (Steed) + +DOS: Filenames in the root directory didn't get shortened properly. (Negri) + +DJGPP: making a full path name out of a file name didn't work properly when +there is no _fullpath() function. (Negri) + +Win32 console: ":sh" caused a crash. (Negri) + +Win32 console: Setting 'lines' and/or 'columns' in the _vimrc failed miserably +(could hang Windows 95). (Negri) + +Win32: The change-drive function was not correct, went to the wrong drive. +(Tsindlekht) + +GUI: When editing a command line in Ex mode, Tabs were sometimes not +backspaced properly, and unprintable characters were displayed directly. +non-GUI can still be wrong, because a system function is called for this. + +":set" didn't stop after an error. For example ":set no ai" gave an error for +"no", but still set "ai". Now ":set" stops after the first error. + +When running configure for ctags, $LDFLAGS wasn't passed to it, causing +trouble for IRIX. + +"@%" and "@#" when file name not set gave an error message. Now they just +return an empty string. (Steed) + +CTRL-X and CTRL-A didn't work correctly with negative hex and octal numbers. +(Steed) + +":echo" always started with a blank. + +Updating GUI cursor shape didn't always work (e.g., when blinking is off). + +In silent Ex mode ("ex -s" or "ex <file") ":s///p" didn't print a line. Also +a few other commands that explicitly print a text line didn't work. Made this +Vi compatible. + +Win32 version of _chdrive() didn't return correct value. (Tsindlekht) + +When using 't' in 'complete' option, no longer give an error message for a +missing tags file. + +Unix: tgoto() can return NULL, which was not handled correctly in configure. + +When doing ":help" from a buffer where 'binary' is set, also edited the help +file in binary mode. Caused extra ^Ms for DOS systems. + +Cursor position in a file was reset to 1 when closing a window. + +":!ls" in Ex mode switched off echo. + +When doing a double click in window A, while currently in window B, first +click would reset double click time, had to click three times to select a +word. + +When using <F11> in mappings, ":mkexrc" produced an exrc file that can't be +used in Vi compatible mode. Added setting of 'cpo' to avoid this. Also, add +a CTRL-V in front of a '<', to avoid a normal string to be interpreted as a +special key name. + +Gave confusing error message for ":set guifont=-*-lucida-*": first "font is +not fixed width", then "Unknown font". + +Some options were still completely left out, instead of included as hidden +options. + +While running the X11 GUI, ignore SIGHUP signals. Avoids a crash after +executing an external command (in rare cases). + +In os_unixx.h, signal() was defined to sigset(), while it already was. + +Memory leak when executing autocommands (was reported as a memory leak in +syntax highlighting). + +Didn't print source of error sometimes, because pointers were the same, +although names were different. + +Avoid a number of UMR errors from Purify (third argument to open()). + +A swap file could still be created just after setting 'updatecount' to zero, +when there is an empty buffer and doing ":e file". (Kutschera) + +Test 35 failed on 64 bit machines. (Schild) + +With "p" and "P" commands, redrawing was slow. + +Awk script for html documentation didn't work correctly with AIX awk. +Replaced "[ ,.);\] ]" with "[] ,.); ]". (Briscoe) +The makehtml.awk script had a small problem, causing extra lines to be +inserted. (Briscoe) + +"gqgq" could not be repeated. Repeating for "gugu" and "gUgU" worked in a +wrong way. Also made "gqq" work to be consistent with "guu". + +C indent was wrong after "case ':':". + +":au BufReadPre *.c put": Line from put text was deleted, because the buffer +was still assumed to be empty. + +Text pasted with the Edit/Paste menu was subject to 'textwidth' and +'autoindent'. That was inconsistent with using the mouse to paste. Now "*p +is used. + +When using CTRL-W CTRL-] on a word that's not a tag, and then CTRL-] on a tag, +window was split. + +":ts" got stuck on a tags line that has two extra fields. + +In Insert mode, with 'showmode' on, <C-O><C-G> message was directly +overwritten by mode message, if preceded with search command warning message. + +When putting the result of an expression with "=<expr>p, newlines were +inserted like ^@ (NUL in the file). Now the string is split up in lines at +the newline. + +putenv() was declared with "const char *" in pty.c, but with "char *" in +osdef2.h.in. Made the last one also "const char *". + +":help {word}", where +{word} is a feature, jumped to the feature list instead +of where the command was explained. E.g., ":help browse", ":help autocmd". + +Using the "\<xx>" form in an expression only got one byte, even when using a +special character that uses several bytes (e.g., "\<F9>"). +Changed "\<BS>" to produce CTRL-H instead of the special key code for the +backspace key. "\<Del>" produces 0x7f. + +":mkvimrc" didn't write a command to set 'compatible' or 'nocompatible'. + +The shell syntax didn't contain a "syn sync maxlines" setting. In a long file +without recognizable items, syncing took so long it looked like Vim hangs. +Added a maxlines setting, and made syncing interruptible. + +The "gs" command didn't flush output before waiting. + +Memory leaks for: + ":if 0 | let a = b . c | endif" + "let a = b[c]" + ":so {file}" where {file} contains a ":while" + +GUI: allocated fonts were never released. (Leonard) + +Makefile.bor: +- Changed $(DEFINES) into a list of "-D" options, so that it can also be used + for the resource compiler. (not tested!) +- "bcc.cfg" was used for all configurations. When building for another + configuration, the settings for the previous one would be used. Moved + "bcc.cfg" to the object directory. (Geddes) +- Included targets for vimrun, install, ctags and xxd. Changed the default to + use the Borland DLL Runtime Library, makes Vim.exe a log smaller. (Aaron) + +"2*" search for the word under the cursor with "2" prepended. (Leonard) + +When deleting into a specific register, would still overwrite the non-Win32 +GUI selection. Now ""x"*P works. + +When deleting into the "" register, would write to the last used register. +Now ""x always writes to the unnamed register. + +GUI Athena: A submenu with a '.' in it didn't work. E.g., +":amenu Syntax.XY\.Z.foo lll". + +When first doing ":tag foo" and then ":tnext" and/or ":tselect" the order of +matching tags could change, because the current file is different. Now the +existing matches are kept in the same order, newly found matches are added +after them, not matter what the current file is. + +":ta" didn't find the second entry in a tags file, if the second entry was +longer than the first one. + +When using ":set si tw=7" inserting "foo {^P}" made the "}" inserted at the +wrong position. can_si was still TRUE when the cursor is not in the indent of +the line. + +Running an external command in Win32 version had the problem that Vim exits +when the X on the console is hit (and confirmed). Now use the "vimrun" +command to start the external command indirectly. (Negri) + +Win32 GUI: When running an external filter, do it in a minimized DOS box. +(Negri) + +":let" listed variables without translation into printable characters. + +Win32 console: When resizing the window, switching back to the old size +(when exiting or executing an external command) sometimes failed. (Negri) +This appears to also fix a "non fixable" problem: +Win32 console in NT 4.0: When running Vim in a cmd window with a scrollbar, +the scrollbar disappeared and was not restored when Vim exits. This does work +under NT 3.51, it appears not to be a Vim problem. + +When executing BufDelete and BufUnload autocommands for a buffer without a +name, the name of the current buffer was used for <afile>. + +When jumping to a tag it reported "tag 1 of >2", while in fact there could be +only two matches. Changed to "tag 1 of 2 or more". + +":tjump tag" did a linear search in the tags file, which can be slow. + +Configure didn't find "LibXm.so.2.0", a Xm library with a version number. + +Win32 GUI: When using a shifted key with ALT, the shift modifier would remain +set, even when it was already used by changing the used key. E.g., "<M-S-9>" +resulted in "<M-S-(>", but it should be "<M-(>". (Negri) + +A call to ga_init() was often followed by setting growsize and itemsize. +Created ga_init2() for this, which looks better. (Aaron) + +Function filereadable() could call fopen() with an empty string, which might +be illegal. + +X Windows GUI: When executing an external command that outputs text, could +write one character beyond the end of a buffer, which caused a crash. (Kohan) + +When using "*" or "#" on a string that includes '/' or '?' (when these are +included in 'isk'), they were not escaped. (Parmelan) + +When adding a ToolBar menu in the Motif GUI, the submenu_id field was not +cleared, causing random problems. + +When adding a menu, the check if this menu (or submenu) name already exists +didn't compare with the simplified version (no mnemonic or accelerator) of the +new menu. Could get two menus with the same name, e.g., "File" and "&File". + +Breaking a line because of 'textwidth' at the last line in the window caused a +redraw of the whole window instead of a scroll. Speeds up normal typing with +'textwidth' a lot for slow terminals. + +An invalid line number produced an "invalid range" error, even when it wasn't +to be executed (inside "if 0"). + +When the unnamed, first buffer is re-used, the "BufDelete" autocommand was +not called. It would stick in a buffer list menu. + +When doing "%" on the NUL after the line, a "{" or "}" in the last character +of the line was not found. + +The Insert mode menu was not used for the "s" command, the Operator-pending +menu was used instead. + +With 'compatible' set, some syntax highlighting was not correct, because of +using "[\t]" for a search pattern. Now use the regexps for syntax +highlighting like the 'cpoptions' option is empty (as was documented already). + +When using "map <M-Space> ms" or "map <Space> sss" the output of ":map" didn't +show any lhs for the mapping (if 'isprint' includes 160). Now always use +<Space> and <M-Space>, even when they are printable. + +Adjusted the Syntax menu, so that the lowest entry fits on a small screen (for +Athena, where menus don't wrap). + +When using CTRL-E or CTRL-Y in Insert mode for characters like 'o', 'x' and +digits, repeating the insert didn't work. + +The file "tools/ccfilter.README.txt" could not be unpacked when using short +file names, because of the two dots. Renamed it to +"tools/ccfilter_README.txt". + +For a dark 'background', using Blue for Directory and SpecialKey highlight +groups is not very readable. Use Cyan instead. + +In the function uc_scan_attr() in ex_docmd.c there was a goto that jumped into +a block with a local variable. That's illegal for some compilers. + +Win32 GUI: There was a row of pixels at the bottom of the window which was not +drawn. (Aaron) + +Under DOS, editing "filename/" created a swap file of "filename/.swp". Should +be "filename/_swp". + +Win32 GUI: pointer was hidden when executing an external command. + +When 'so' is 999, "J" near the end of the file didn't redisplay correctly. + +":0a" inserted after the first line, instead of before the first line. + +Unix: Wildcard expansion didn't handle single quotes and {} patterns. Now +":file 'window.c'" removes the quotes and ":e 'main*.c'" works (literal '*'). +":file {o}{n}{e}" now results in file name "one". + +Memory leak when setting a string option back to its default value. + +============================================================================== +VERSION 5.3 *version-5.3* + +Version 5.3 was a bug-fix version of 5.2. There are not many changes. +Improvements made between version 5.2 and 5.3: + +Changed *changed-5.3* +------- + +Renamed "IDE" menu to "Tools" menu. + + +Added *added-5.3* +----- + +Win32 GUI: Give a warning when Vim is activated, and one of the files changed +since editing started. (Negri) + + +Fixed *fixed-5.3* +----- + +5.2.1: Win32 GUI: space for external command was not properly allocated, could +cause a crash. (Aaron) This was the reason to bring out 5.3 quickly after +5.2. + +5.2.2: Some commands didn't complain when used without an argument, although +they need one: ":badd", ":browse", ":call", ":confirm", ":behave", +":delfunction", ":delcommand" and ":tearoff". +":endfunction" outside of a function gave wrong error message: "Command not +implemented". Should be ":endfunction not inside a function". + +5.2.3: Win32 GUI: When gvim was installed in "Program files", or another path +with a space in it, executing external commands with vimrun didn't work. + +5.2.4: Pasting with the mouse in Insert mode left the cursor on the last +pasted character, instead of behind it. + +5.2.5: In Insert mode, cursor after the end of the line, a shift-cursor-left +didn't include the last character in the selection. + +5.2.6: When deleting text from Insert mode (with "<C-O>D" or the mouse), which +includes the last character in the line, the cursor could be left on the last +character in the line, instead of just after it. + +5.2.7: Win32 GUI: scrollbar was one pixel too big. + +5.2.8: Completion of "PopUp" menu showed the derivatives "PopUpc", "PopUPi", +etc. ":menu" also showed these. + +5.2.9: When using two input() functions on a row, the prompt would not be +drawn in column 0. + +5.2.10: A loop with input() could not be broken with CTRL-C. + +5.2.11: ":call asdf" and ":call asdf(" didn't give an error message. + +5.2.12: Recursively using ":normal" crashes Vim after a while. E.g.: +":map gq :normal gq<CR>" + +5.2.13: Syntax highlighting used 'iskeyword' from wrong buffer. When using +":help", then "/\k*" in another window with 'hlsearch' set. + +5.2.14: When using ":source" from a function, global variables would not be +available unless "g:" was used. + +5.2.15: XPM files can have the extension ".pm", which is the same as for Perl +modules. Added "syntax/pmfile.vim" to handle this. + +5.2.16: On Win32 and Amiga, "echo expand("%:p:h")" removed one dirname in an +empty buffer. mch_Fullname() didn't append a slash at the end of a directory +name. + +Should include the character under the cursor in the Visual area when using +'selection' "exclusive". This wasn't done for "%", "e", "E", "t" and "f". + +""p would always put register 0, instead of the unnamed (last used) register. +Reverse the change that ""x doesn't write in the unnamed (last used) register. +It would always write in register 0, which isn't very useful. Use "-x for the +paste mappings in Visual mode. + +When there is one long line on the screen, and 'showcmd' is off, "0$" didn't +redraw the screen. + +Win32 GUI: When using 'mousehide', the pointer would flicker when the cursor +shape is changed. (Negri) + +When cancelling Visual mode, and the cursor moves to the start, the wanted +column wasn't set, "k" or "j" moved to the wrong column. + +When using ":browse" or ":confirm", was checking for a comment and separating +bar, which can break some commands. + +Included fixes for Macintosh. (Kielhorn) + +============================================================================== +VERSION 5.4 *version-5.4* + +Version 5.4 adds new features, useful changes and a lot of bug fixes. + + +Runtime directory introduced *new-runtime-dir* +---------------------------- + +The distributed runtime files are now in $VIMRUNTIME, the user files in $VIM. +You normally don't set $VIMRUNTIME but let Vim find it, by using +$VIM/vim{version}, or use $VIM when that doesn't exist. This allows for +separating the user files from the distributed files and makes it more easy to +upgrade to another version. It also makes it possible to keep two versions of +Vim around, each with their own runtime files. + +In the Unix distribution the runtime files have been moved to the "runtime" +directory. This makes it possible to copy all the runtime files at once, +without the need to know what needs to be copied. + +The archives for DOS, Windows, Amiga and OS/2 now have an extra top-level +"vim" directory. This is to make clear that user-modified files should be put +here. The directory that contains the executables doesn't have '-' or '.' +characters. This avoids strange extensions. + +The $VIM and $VIMRUNTIME variables are set when they are first used. This +allows them to be used by Perl, for example. + +The runtime files are also found in a directory called "$VIM/runtime". This +helps when running Vim after just unpacking the runtime archive. When using +an executable in the "src" directory, Vim checks if "vim54" or "runtime" can +be added after removing it. This make the runtime files be found just after +compiling. + +A default for $VIMRUNTIME can be given in the Unix Makefile. This is useful +if $VIM doesn't point to above the runtime directory but to e.g., "/etc/". + + +Filetype introduced *new-filetype-5.4* +------------------- + +Syntax files are now loaded with the new FileType autocommand. Old +"mysyntaxfile" files will no longer work. |filetypes| + +The scripts for loading syntax highlighting have been changed to use the +new Syntax autocommand event. + +This combination of Filetype and Syntax events allows tuning the syntax +highlighting a bit more, also when selected from the Syntax menu. The +FileType autocommand can also be used to set options and mappings specifically +for that type of file. + +The "$VIMRUNTIME/filetype.vim" file is not loaded automatically. The +":filetype on" command has been added for this. ":syntax on" also loads it. + +The 'filetype' option has been added. It is used to trigger the FileType +autocommand event, like the 'syntax' option does for the Syntax event. + +":set syntax=OFF" and ":set syntax=ON" can be used (in a modeline) to switch +syntax highlighting on/off for the current file. + +The Syntax menu commands have been moved to $VIMRUNTIME/menu.vim. The Syntax +menu is included both when ":filetype on" and when ":syntax manual" is used. + +Renamed the old 'filetype' option to 'osfiletype'. It was only used for +RISCOS. 'filetype' is now used for the common file type. + +Added the ":syntax manual" command. Allows manual selection of the syntax to +be used, e.g., from a modeline. + + +Vim script line continuation *new-line-continuation* +---------------------------- + +When an Ex line starts with a backslash, it is concatenated to the previous +line. This avoids the need for long lines. |line-continuation| (Roemer) +Example: > + if has("dialog_con") || + \ has("dialog_gui") + :let result = confirm("Enter your choice", + \ "&Yes\n&No\n&Maybe", + \ 2) + endif + + +Improved session files *improved-sessions* +---------------------- + +New words for 'sessionoptions': +- "help" Restore the help window. +- "blank" Restore empty windows. +- "winpos" Restore the Vim window position. Uses the new ":winpos" + command +- "buffers" Restore hidden and unloaded buffers. Without it only the + buffers in windows are restored. +- "slash" Replace backward by forward slashes in file names. +- "globals" Store global variables. +- "unix" Use unix file format (<NL> instead of <CR><NL>) + +The ":mksession" and 'sessionoptions' are now in the +mksession feature. + +The top line of the window is also restored when using a session file. + +":mksession" and ":mkvimrc" don't store 'fileformat', it should be detected +when loading a file. + +(Most of this was done by Vince Negri and Robert Webb) + + +Autocommands improved *improved-autocmds-5.4* +--------------------- + +New events: +|FileType| When the file type has been detected. +|FocusGained| When Vim got input focus. (Negri) +|FocusLost| When Vim lost input focus. (Negri) +|BufCreate| Called just after a new buffer has been created or has been + renamed. (Madsen) +|CursorHold| Triggered when no key has been typed for 'updatetime'. Can be + used to do something with the word under the cursor. (Negri) + Implemented CursorHold autocommand event for Unix. (Zellner) + Also for Amiga and MS-DOS. +|GUIEnter| Can be used to do something with the GUI window after it has + been created (e.g., a ":winpos 100 50"). +|BufHidden| When a buffer becomes hidden. Used to delete the + option-window when it becomes hidden. + +Also trigger |BufDelete| just before a buffer is going to be renamed. (Madsen) + +The "<amatch>" pattern can be used like "<afile>" for autocommands, except +that it is the matching value for the FileType and Syntax events. + +When ":let @/ = <string>" is used in an autocommand, this last search pattern +will be used after the autocommand finishes. + +Made loading autocommands a bit faster. Avoid doing strlen() on each exiting +pattern for each new pattern by remembering the length. + + +Encryption *new-encryption* +---------- + +Files can be encrypted when writing and decrypted when reading. Added the +'key' option, "-x" command line argument and ":X" command. |encryption| (based +on patch from Mohsin Ahmed) + +When reading a file, there is an automatic detection whether it has been +crypted. Vim will then prompt for the key. + +Note that the encryption method is not compatible with Vi. The encryption is +not unbreakable. This allows it to be exported from the US. + + +GTK GUI port *new-GTK-GUI* +------------ + +New GUI port for GTK+. Includes a toolbar, menu tearoffs, etc. |gui-gtk| +Added the |:helpfind| command. (Kahn and Dalecki) + + +Menu changes *menu-changes-5.4* +------------ + +Menus can now also be used in the console. It is enabled by the new +'wildmenu' option. This shows matches for command-line completion like a +menu. This works as a minimal file browser. + +The new |:emenu| command can be used to execute a menu item. + +Uses the last status line to list items, or inserts a line just above the +command line. (Negri) + +The 'wildcharx' option can be used to trigger 'wildmenu' completion from a +mapping. + +When compiled without menus, this can be detected with has("menu"). Also show +this in the ":version" output. Allow compiling GUI versions without menu +support. Only include toolbar support when there is menu support. + +Moved the "Window" menu all the way to the right (priority 70). Looks more +familiar for people working with MS-Windows, shouldn't matter for others. + +Included "Buffers" menu. Works with existing autocommands and functions. It +can be disabled by setting the "no_buffers_menu" variable. (Aaron and Madsen) + +Win32 supports separators in a menu: "-.*-". (Geddes) +Menu separators for Motif now work too. + +Made Popup menu for Motif GUI work. (Madsen) + +'M' flag in 'guioptions': Don't source the system menu. + +All the menu code has been moved from gui.c to menu.c. + + +Viminfo improved *improved-viminfo* +---------------- + +New flags for 'viminfo': +'!' Store global variables in the viminfo file if they are in uppercase + letters. (Negri) +'h' Do ":nohlsearch" when loading a viminfo file. + +Store search patterns in the viminfo file with their offset, magic, etc. Also +store the flag whether 'hlsearch' highlighting is on or off (which is not used +if the 'h' flag is in 'viminfo'). + +Give an error message when setting 'viminfo' without commas. + + +Various new commands *new-commands-5.4* +-------------------- + +Operator |g?|: rot13 encoding. (Negri) + +|zH| and |zL| commands: Horizontal scrolling by half a page. +|gm| move cursor to middle of screen line. (Ideas by Campbell) + +Operations on Visual blocks: |v_b_I|, |v_b_A|, |v_b_c|, |v_b_C|, |v_b_r|, +|v_b_<| and |v_b_>|. (Kelly) + +New command: CTRL-\ CTRL-N, which does nothing in Normal mode, and goes to +Normal mode when in Insert or Command-line mode. Can be used by VisVim or +other OLE programs to make sure Vim is in Normal mode, without causing a beep. +|CTRL-\_CTRL-N| + +":cscope kill" command to use the connection filename. |:cscope| (Kahn) + +|:startinsert| command: Start Insert mode next. + +|:history| command, to show all four types of histories. (Roemer) + +|[m|, |[M|, |]m| and |]M| commands, for jumping backward/forward to start/end +of method in a (Java) class. + +":@*" executes the * register. |:@| (Acevedo) + +|go| and |:goto| commands: Jump to byte offset in the file. + +|gR| and |gr| command: Virtual Replace mode. Replace characters without +changing the layout. (Webb) + +":cd -" changes to the directory from before the previous ":cd" command. +|:cd-| (Webb) + +Tag preview commands |:ptag|. Shows the result of a ":tag" in a dedicated +window. Can be used to see the context of the tag (e.g., function arguments). +(Negri) +|:pclose| command, and CTRL-W CTRL-Z: Close preview window. (Moore) +'previewheight' option, height for the preview window. +Also |:ppop|, |:ptnext|, |:ptprevious|, |:ptNext|, |:ptrewind|, |:ptlast|. + +|:find| and |:sfind| commands: Find a file in 'path', (split window) and edit +it. + +The |:options| command opens an option window that shows the current option +values. Or use ":browse set" to open it. Options are grouped by function. +Offers short help on each option. Hit <CR> to jump to more help. Edit the +option value and hit <CR> on a "set" line to set a new value. + + +Various new options *new-options-5.4* +------------------- + +Scroll-binding: 'scrollbind' and 'scrollopt' options. Added |:syncbind| +command. Makes windows scroll the same amount (horizontally and/or +vertically). (Ralston) + +'conskey' option for MS-DOS. Use direct console I/O. This should work with +telnet (untested!). + +'statusline' option: Configurable contents of the status line. Also allows +showing the byte offset in the file. Highlighting with %1* to %9*, using the +new highlight groups User1 to User9. (Madsen) + +'rulerformat' option: Configurable contents of the ruler, like 'statusline'. +(Madsen) + +'write' option: When off, writing files is not allowed. Avoids overwriting a +file even with ":w!". The |-m| command line option resets 'write'. + +'clipboard' option: How the clipboard is used. Value "unnamed": Use unnamed +register like "*. (Cortopassi) Value "autoselect": Like what 'a' in +'guioptions' does but works in the terminal. + +'guifontset' option: Specify fonts for the +fontset feature, for the X11 GUI +versions. Allows using normal fonts when vim is compiled with this feature. +(Nam) + +'guiheadroom' option: How much room to allow above/below the GUI window. +Used for Motif, Athena and GTK. + +Implemented 'tagstack' option: When off, pushing tags onto the stack is +disabled (Vi compatible). Useful for mappings. + +'shellslash' option. Only for systems that use a backslash as a file +separator. This option will use a forward slash in file names when expanding +it. Useful when 'shell' is sh or csh. + +'pastetoggle' option: Key sequence that toggles 'paste'. Works around the +problem that mappings don't work in Insert mode when 'paste' is set. + +'display' option: When set to "lastline", the last line fills the window, +instead of being replaced with "@" lines. Only the last three characters are +replaced with "@@@", to indicate that the line has not finished yet. + +'switchbuf' option: Allows re-using existing windows on a buffer that is being +jumped to, or split the window to open a new buffer. (Roemer) + +'titleold' option. Replaces the fixed string "Thanks for flying Vim", which +is used to set the title when exiting. (Schild) + + +Vim scripts *new-script-5.4* +----------- + +The |exists()| function can also check for existence of a function. (Roemer) +An internal function is now found with a binary search, should be a bit +faster. (Roemer) + +New functions: +- |getwinposx()| and |getwinposy()|: get Vim window position. (Webb) +- |histnr()|, |histadd()|, |histget()| and |histdel()|: Make history + available. (Roemer) +- |maparg()|: Returns rhs of a mapping. Based on a patch from Vikas. +- |mapcheck()|: Check if a map name matches with an existing one. +- |visualmode()|: Return type of last Visual mode. (Webb) +- |libcall()|: Call a function in a library. Currently only for Win32. (Negri) +- |bufwinnr()|: find window that contains the specified buffer. (Roemer) +- |bufloaded()|: Whether a buffer exists and is loaded. +- |localtime()| and |getftime()|: wall clock time and last modification time + of a file (Webb) +- |glob()|: expand file name wildcards only. +- |system()|: get the raw output of an external command. (based on a patch + from Aaron). +- |strtrans()|: Translate String into printable characters. Used for + 2html.vim script. +- |append()|: easy way to append a line of text in a buffer. + +Changed functions: +- Optional argument to |strftime()| to give the time in seconds. (Webb) +- |expand()| now also returns names for files that don't exist. + +Allow numbers in the name of a user command. (Webb) + +Use "v:" for internal Vim variables: "v:errmsg", "v:shell_error", etc. The +ones from version 5.3 can be used without "v:" too, for backwards +compatibility. + +New variables: +"v:warningmsg" and "v:statusmsg" internal variables. Contain the last given +warning and status message. |v:warningmsg| |v:statusmsg| (Madsen) +"v:count1" variable: like "v:count", but defaults to one when no count is +used. |v:count1| + +When compiling without expression evaluation, "if 1" can be used around the +not supported commands to avoid it being executed. Works like in Vim 4.x. +Some of the runtime scripts gave errors when used with a Vim that was compiled +with minimal features. Now "if 1" is used around code that is not always +supported. + +When evaluating an expression with && and ||, skip the parts that will not +influence the outcome. This makes it faster and avoids error messages. (Webb) +Also optimized the skipping of expressions inside an "if 0". + + +Avoid hit-enter prompt *avoid-hit-enter* +----------------------- + +Added 'T' flag to 'shortmess': Truncate all messages that would cause the +hit-enter prompt (unless that would happen anyway). +The 'O' flag in 'shortmess' now also applies to quickfix messages, e.g., from +the ":cn" command. + +The default for 'shortmess' is now "filnxtToO", to make most messages fit on +the command line, and not cause the hit-enter prompt. + +Previous messages can be viewed with the new |:messages| command. + +Some messages are shown fully, even when 'shortmess' tells to shorten +messages, because the user is expected to want to see them in full: CTRL-G and +some quickfix commands. + + +Improved quickfix *improved-quickfix* +----------------- + +Parse change-directory lines for gmake: "make[1]: Entering directory 'name'". +Uses "%D" and "%X" in 'errorformat'. +Also parse "Making {target} in {dir}" messages from make. Helps when not +using GNU make. (Schandl) + +Use 'isfname' for "%f" in 'errorformat'. + +Parsing of multi-line messages. |errorformat-multi-line| + +Allow a range for the |:clist| command. (Roemer) + +Support for "global" file names, for error formats that output the file name +once for several errors. (Roemer) + +|:cnfile| jumps to first error in next file. + +"$*" in 'makeprg' is replaced by arguments to ":make". (Roemer) + + +Regular expressions *regexp-changes-5.4* +------------------- + +In a regexp, a '$' before "\)" is also considered to be an end-of-line. |/$| +In patterns "^" after "\|" or "\(" is a start-of-line. |/^| (Robinson) + +In a regexp, in front of "\)" and "\|" both "$" and "\$" were considered +end-of-line. Now use "$" as end-of-line and "\$" for a literal dollar. Same +for '^' after "\(" and "\|". |/\$| |/\^| + +Some search patterns can be extremely slow, even though they are not really +illegal. For example: "\([^a-z]\+\)\+Q". Allow interrupting any regexp +search with CTRL-C. + +Register "/: last search string (read-only). (Kohan) Changed to use last used +search pattern (like what 'hlsearch' uses). Can set the search pattern with +":let @/ = {expr}". + +Added character classes to search patterns, to avoid the need for removing the +'l' flag from 'cpoptions': |[:tab:]|, |[:return:]|, |[:backspace:]| and +|[:escape:]|. + +By adding a '?' after a comparative operator in an expression, the comparison +is done by ignoring case. |expr-==?| + + +Other improvements made between version 5.3 and 5.4 +--------------------------------------------------- + +Changed *changed-5.4* +------- + +Unix: Use $TMPDIR for temporary files, if it is set and exists. + +Removed "Empty buffer" message. It isn't useful and can cause a hit-enter +prompt. (Negri) + +"ex -" now reads commands from stdin and works in silent mode. This is to be +compatible with the original "ex" command that is used for scripts. + +Default range for ":tcldo" is the whole file. + +Cancelling Visual mode with ESC moved the cursor. There appears to be no +reason for this. Now leave the cursor where it is. + +The ":grep" and ":make" commands see " as part of the arguments, instead of +the start of a comment. + +In expressions the "=~" and "!~" operators no longer are affected by +'ignorecase'. + +Renamed vimrc_example to vimrc_example.vim and gvimrc_example to +gvimrc_example.vim. Makes them being recognized as vim scripts. + +"gd" no longer starts searching at the end of the previous function, but at +the first blank line above the start of the current function. Avoids that +using "gd" in the first function finds global a variable. + +Default for 'complete' changed from ".,b" to ".,w,b,u,t,i". Many more matches +will be found, at the cost of time (the search can be interrupted). + +It is no longer possible to set 'shell*' options from a modeline. Previously +only a warning message was given. This reduces security risks. + +The ordering of the index of documentation files was changed to make it more +easy to find a subject. + +On MS-DOS and win32, when $VIM was not set, $HOME was used. This caused +trouble if $HOME was set to e.g., "C:\" for some other tool, the runtime files +would not be found. Now use $HOME only for _vimrc, _gvimrc, etc., not to find +the runtime file. + +When 'tags' is "./{fname}" and there is no file name for the current buffer, +just use it. Previously it was skipped, causing "vim -t {tag}" not to find +many tags. + +When trying to select text in the 'scrolloff' area by mouse dragging, the +resulting scrolling made this difficult. Now 'scrolloff' is temporarily set +to 0 or 1 to avoid this. But still allow scrolling in the top line to extend +to above the displayed text. + +Default for 'comments' now includes "sl:/*,mb: *,ex:*/", to make javadoc +comments work. Also helps for C comments that start with "/*******". + +CTRL-X CTRL-] Insert mode tag expansion tried to expand to all tags when used +after a non-ID character, which can take a very long time. Now limit this to +200 matches. Also used for command-line tag completion. + +The OS/2 distribution has been split in two files. It was too big to fit on a +floppy. The same runtime archive as for the PC is now used. + +In the documentation, items like <a-z> have been replaced with {a-z} for +non-optional arguments. This avoids confusion with key names: <C-Z> is a +CTRL-Z, not a character between C and Z, that is {C-Z}. + + +Added *added-5.4* +----- + +Color support for the iris-ansi builtin termcap entry. (Tubman) + +Included VisVim version 1.3a. (Erhardt) + +Win32 port for SNiFF+ interface. (Leherbauer) +Documentation file for sniff interface: if_sniff.txt. (Leherbauer) + +Included the "SendToVim" and "OpenWithVim" programs in the OleVim directory. +To be used with the OLE version of gvim under MS-Windows. (Schaller) + +Included Exuberant Ctags version 3.2.4 with Eiffel support. (Hiebert) + +When a file that is being edited is deleted, give a warning (like when the +time stamp changed). + +Included newer versions of the HTML-generating Awk and Perl scripts. (Colombo) + +Linux console mouse support through "gpm". (Tsindlekht) + +Security fix: Disallow changing 'secure' and 'exrc' from a modeline. When +'secure' is set, give a warning for changing options that contain a program +name. + +Made the Perl interface work with Perl 5.005 and threads. (Verdoolaege) + +When giving an error message for an ambiguous mapping, include the offending +mapping. (Roemer) + +Command line editing: +- Command line completion of mappings. (Roemer) +- Command line completion for ":function", ":delfunction", ":let", ":call", + ":if", etc. (Roemer) +- When using CTRL-D completion for user commands that have + "-complete=tag_listfiles" also list the file names. (Madsen) +- Complete the arguments of the ":command" command. (Webb) +- CTRL-R . in command line inserts last inserted text. CTRL-F, CTRL-P, CTRL-W + and CTRL-A after CTRL-R are used to insert an object from under the cursor. + (Madsen) + +Made the text in uganda.txt about copying Vim a bit more clear. + +Updated the Vim tutor. Added the "vimtutor" command, which copies the tutor +and starts Vim on it. "make install" now also copies the tutor. + +In the output of ":clist" the current entry is highlighted, with the 'i' +highlighting (same as used for 'incsearch'). + +For the ":clist" command, you can scroll backwards with "b" (one screenful), +"u" (half a screenful) and "k" (one line). + +Multi-byte support: +- X-input method for multi-byte characters. And various fixes for multi-byte + support. (Nam) +- Hangul input method feature: |hangul|. (Nam) +- Cleaned up configuration of multi-byte support, XIM, fontset and Hangul + input. Each is now configurable separately. +- Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam) +- Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam) +- XIM support for GTK+. (Nam) +- First attempt to include support for SJIS encoding. (Nagano) +- When a double-byte character doesn't fit at the end of the line, put a "~" + there and print it on the next line. +- Optimize output of multi-byte text. (Park) +- Win32 IME: preedit style is like over-the-spot. (Nagano) +- Win32 IME: IME mode change now done with ImmSetOpenStatus. (Nagano) +- GUI Athena: file selection dialog can display multi-byte characters. + (Nagano) +- Selection reply for XA_TEXT as XA_STRING. (Nagano) + +"runtime/macros/diffwin.vim". Mappings to make a diff window. (Campbell) + +Added ".obj" to the 'suffixes' option. + +Reduced size of syntax/synload.vim by using the ":SynAu" user command. +Automated numbering of Syntax menu entries in menu.vim. +In the Syntax menu, insert separators between syntax names that start with +a different letter. (Geddes) + +Xterm: +- Clipboard support when using the mouse in an xterm. (Madsen) +- When using the xterm mouse, track dragging of the mouse. Use xterm escape + sequences when possible. It is more precise than other methods, but + requires a fairly recent xterm version. It is enabled with "xterm2" in + 'ttymouse'. (Madsen) +- Check xterm patch level, to set the value of 'ttymouse'. Has only been + added to xterm recently (patch level > 95). Uses the new 't_RV' termcap + option. Set 'ttymouse' to "xterm2" when a correct response is recognized. + Will make xterm mouse dragging work better. +- Support for shifted function keys on xterm. Changed codes for shifted + cursor keys to what the xterm actually produces. Added codes for shifted + <End> and <Home>. +- Added 't_WP' to set the window position in pixels and 't_WS' to set the + window size in characters. Xterm can now move (used for ":winpos") and + resize (use for ":set lines=" and ":set columns="). + +X11: +- When in Visual mode but not owning the selection, display the Visual area + with the VisualNOS group to show this. (Madsen) +- Support for requesting the type of clipboard support. Used for AIX and + dtterm. (Wittig) +- Support compound_text selection (even when compiled without multi-byte). + +Swap file: +- New variation for naming swap files: Replace path separators into %, place + all swap files in one directory. Used when a name in 'dir' ends in two path + separators. (Madsen) +- When a swap file is found, show whether it contains modifications or not in + the informative message. (Madsen) +- When dialogs are supported, use a dialog to ask the user what to do when a + swapfile already exists. + +"popup_setpos" in 'mousemodel' option. Allows for moving the cursor when +using the right mouse button. + +When a buffer is deleted, the selection for which buffer to display instead +now uses the most recent entry from the jump list. (Madsen) + +When using CTRL-O/CTRL-I, skip deleted buffers. + +A percentage is shown in the ruler, when there is room. + +Used autoconf 1.13 to generate configure. + +Included get_lisp_indent() from Dirk van Deun. Does better Lisp indenting +when 'p' flag in 'cpoptions' is not included. + +Made the 2html.vim script quite a bit faster. (based on ideas from Geddes) + +Unix: +- Included the name of the user that compiled Vim and the system name it was + compiled on in the version message. +- "make install" now also installs the "tools" directory. Makes them + available for everybody. +- "make check" now does the same as "make test". "make test" checks for + Visual block mode shift, insert, replace and change. +- Speed up comparing a file name with existing buffers by storing the + device/inode number with the buffer. +- Added configure arguments "--disable-gtk", "--disable-motif" and + "--disable-athena", to be able to disable a specific GUI (when it doesn't + work). +- Renamed the configure arguments for disabling the check for specific GUIs. + Should be clearer now. (Kahn) +- On a Digital Unix system ("OSF1") check for the curses library before + termlib and termcap. (Schild) +- "make uninstall_runtime" will only delete the version-specific files. Can + be used to delete the runtime files of a previous version. + +Macintosh: (St-Amant) +- Dragging the scrollbar, like it's done for the Win32 GUI. Moved common code + from gui_w32.c to gui.c +- Added dialogs and file browsing. +- Resource fork preserved, warning when it will be lost. +- Copy original file attributes to newly written file. +- Set title/notitle bug solved. +- Filename completion improved. +- Grow box limit resize to a char by char size. +- Use of rgb.txt for more colors (but give back bad color). +- Apple menu works (beside the about...). +- Internal border now vim compliant. +- Removing a menu doesn't crash anymore. +- Weak-linking of Python 1.5.1 (only on PPC). Python is supported when the + library is available. +- If an error is encountered when sourcing the users .vimrc, the alert box now + shows right away with the OK button defaulted. There's no more "Delete"-key + sign at the start of each line +- Better management of environment variables. Now $VIM is calculated only + once, not regenerated every time it is used. +- No more CPU hog when in background. +- In a sourced Vim script the Mac file format can be recognized, just like DOS + file format is. + +When both "unix" and "mac" are present in 'fileformats', prefer "mac" format +when there are more CR than NL characters. +When using "mac" fileformat, use CR instead of a NL, because NL is used for +NUL. Will preserve all characters in a file. (Madsen) + +The DOS install.exe now contains checks for an existing installation. It +avoids setting $VIM and $PATH again. +The install program for Dos/Windows can now install Vim in the popup menu, by +adding two registry keys. + +Port to EGCS/mingw32. New Makefile.ming. (Aaron) + +DOS 16 bit: Don't include cursor shape stuff. Save some bytes. + +TCL support to Makefile.w32. (Duperval) + +OS/2: Use argv[0] to find runtime files. + +When using "gf" to go to a buffer that has already been used, jump to the +line where the cursor last was. + +Colored the output of ":tselect" a bit more. Different highlighting between +tag name and file name. Highlight field name ("struct:") separately from +argument. + +Backtick expansion for non-Unix systems. Based on a patch from Aaron. +Allows the use of things like ":n `grep -l test *.c`" and +"echo expand('`ls m*`')". + +Check for the 'complete' option when it is set. (Acevedo) +'d' flag in 'complete' searches for defined names or macros. +While searching for Insert mode completions in include files and tags files, +check for typeahead, so that you can use matches early. (Webb) +The '.' flag in 'complete' now scans the current buffer completely, ignoring +'nowrapscan'. (Webb) + +Added '~' flag to 'whichwrap'. (Acevedo) + +When ending the Visual mode (e.g., with ESC) don't grab ownership of the +selection. + +In a color terminal, "fg" and "bg" can be used as color names. They stand for +the "Normal" colors. + +A few cscope cleanups. (Kahn) + +Included changed vimspell.sh from Schemenauer. + +Concatenation of strings in an expression with "." is a bit faster. (Roemer) + +The ":redir" command can now redirect to a register: ":redir @r". (Roemer) + +Made the output of ":marks" and ":jumps" look similar. When the mark is in +the current file, show the text at the mark. Also for ":tags". + +When configure finds ftello() and fseeko(), they are used in tag.c (for when +you have extremely big tags files). + +Configure check for "-FOlimit,2000" argument for the compiler. (Borsenkow) + +GUI: +- When using ":gui" in a non-GUI Vim, give a clear error message. +- "gvim -v" doesn't start the GUI (if console support is present). +- When in Ex mode, use non-Visual selection for the whole screen. +- When starting with "gvim -f" and using ":gui" in the .gvimrc file, Vim + forked anyway. Now the "-f" flag is remembered for ":gui". Added "gui -b" + to run gvim in the background anyway. + +Motif GUI: +- Check for "-lXp" library in configure (but it doesn't work yet...). +- Let configure check for Lesstif in "/usr/local/Lesstif/Motif*". Changed the + order to let a local Motif version override a system standard version. + +Win32 GUI: +- When using "-register" or "-unregister" in the non-OLE version, give an + error message. +- Use GTK toolbar icons. Make window border look better. Use sizing handles + on the lower left&right corners of the window. (Negri) +- When starting an external command with ":!start" and the command can not be + executed, give an error message. (Webb) +- Use sizing handles for the grey rectangles below the scrollbars. Can draw + toolbar in flat mode now, looks better. (Negri) +- Preparations for MS-Windows 3.1 addition. Mostly changing WIN32 to MSWIN + and USE_GUI_WIN32 to USE_GUI_MSWIN. (Negri) + +Avoid allocating the same string four times in buflist_findpat(). (Williams) + +Set title and icon text with termcap options 't_ts', 't_fs', 't_IS' and +'t_IE'. Allows doing this on any terminal that supports setting the title +and/or icon text. (Schild) + +New 'x' flag in 'comments': Automatically insert the end part when its last +character is typed. Helps to close a /* */ comment in C. (Webb) + +When expand() has a second argument which is non-zero, don't use 'suffixes' +and 'wildignore', return all matches. + +'O' flag in 'cpoptions' When not included, Vim will not overwrite a file, if +it didn't exist when editing started but it does exist when the buffer is +written to the file. The file must have been created outside of Vim, possibly +without the user knowing it. When this is detected after a shell command, +give a warning message. + +When editing a new file, CTRL-G will show [New file]. When there were errors +while reading the file, CTRL-G will show [Read errors]. + +":wall" can now use a dialog and file-browsing when needed. + +Grouped functionality into new features, mainly to reduce the size of the +minimal version: ++linebreak: 'showbreak', 'breakat' and 'linebreak' ++visualextra: "I"nsert and "A"ppend in Visual block mode, "c"hange all lines + in a block, ">" and "<": Shifting a block, "r": Replacing a + Visual area with one character. ++comments: 'comments' ++cmdline_info: 'ruler' and 'showcmd'. Replaces +showcmd. +"+title" Don't add code to set title or icon for MSDOS, this was not + possible anyway. ++cmdline_compl Disable commandline completion at compile time, except for + files, directories and help items. + +Moved features from a list of function calls into an array. Should save a bit +of space. + +While entering the body of a function, adjust indent according to "if" and +"while" commands. + +VMS: Adjusted os_vms.mms a bit according to suggestions from Arpadffy. + +The flags in the 'comments' option can now include an offset. This makes it +possible to align "/*****", "/* xxx" and "/*" comments with the same +'comments' setting. The default value for 'comments' uses this. +Added 'O' flag: Don't use this part for the "O" command. Useful for "set +com=sO:*\ -,mO:*\ \ ,exO:*/" + +FileType autocommands recognize ".bak", ".orig" and "~" extensions and remove +them to find the relevant extension. + +The tutorial for writing a Vim script file has been extended. + +Some more highlighting in help files, for items that are not typed literally. + +Can use "CTRL-W CTRL-G" like "CTRL-W g". + +"make test" for OS/2. + +Adjusted configure to automatically use the GUI for BeOS. + + +Fixed *fixed-5.4* +----- + +5.3.1: When using an autocommand for BufWritePre that changes the name of the +buffer, freed memory would be used. (Geddes) + +Mac: Compiler didn't understand start of skip_class_name(). + +Win32 GUI: +- When cancelling the font requester, don't give an error message. +- When a tearoff-menu is open and its menu is deleted, Vim could crash. + (Negri) +- There was a problem on Windows 95 with (un)maximizing the window. + (Williams) +- when 'mousehide' is set, the mouse would stay hidden when a menu is dropped + with the keyboard. (Ralston) +- The tempname() function already created the file. Caused problems when + using ":w". Now the file is deleted. +- Cursor disappeared when ending up in the top-left character on the screen + after scrolling. (Webb) +- When adding a submenu for a torn-off menu, it was not updated. +- Menu tooltip was using the toolbar tooltip. (Negri) +- Setting 'notitle' didn't remove the title. (Steed) +- Using ":!start cmd" scrolled the screen one line up, and didn't wait for + return when the command wasn't found. + +Cscope interface: Sorting of matches was wrong. Starting the interface could +fail. (Kahn) + +Motif GUI: Could not compile with Motif 1.1, because some tear-off +functionality was not in #ifdefs. + +Configure could sometimes not compile or link the test program for sizeof(int) +properly. This caused alignment problems for the undo structure allocations. +Added a safety check that SIZEOF_INT is not zero. + +Added configure check to test if strings.h can be included after string.h. +Some systems can't handle it. +Some systems need both string.h and strings.h included. Adjusted vim.h for +that. Removed including string.h from os_unixx.h, since it's already in +vim.h. (Savage) +AIX: defining _NO_PROTO in os_unix.h causes a conflict between string.h and +strings.h, but after the configure check said it was OK. Also define +_NO_PROTO for AIX in the configure check. (Winn) + +When closing a window with CTRL-W c, the value of 'hidden' was not taken into +account, the buffer was always unloaded. (Negri) + +Unix Makefile: "make install" always tried to rename an older executable and +remove it. This caused an error message when it didn't exit. Added a check +for the existence of an old executable. +The command line for "make install" could get too long, because of the many +syntax files. Now first do a "cd" to reduce the length. + +On RISCOS and MSDOS, reading a file could fail, because the short filename was +used, which can be wrong after a ":!cd". + +In the DOS versions, the wrong install.exe was included (required Windows). +Now the install.exe version is included that is the same as the Vim version. +This also supports long file names where possible. + +When recording, and stopping while in Insert mode with CTRL-O q, the CTRL-O +would also be recorded. + +32bit DOS version: "vim \file", while in a subdirectory, resulted in "new +file" for "file" in the local directory, while "\file" did exist. When +"file" in the current directory existed, this didn't happen. + +MSDOS: Mouse could not go beyond 80 columns in 132 columns mode. (Young) + +"make test" failed in the RedHat RPM, because compatible is off by default. + +In Insert mode <C-O><C-W><C-W> changes to other window, but the status bars +were not updated until another character was typed. + +MSDOS: environment options in lowercase didn't work, although they did in the +Win32 versions. (Negri) + +After ":nohlsearch", a tag command switched highlighting back on. + +When using "append" command as the last line in an autocommand, Vim would +crash. + +RISCOS: The scroll bumpers (?) were not working properly. (Leonard) + +"zl" and "zh" could move the cursor, but this didn't set the column in which +e.g., "k" would move the cursor. + +When doing ":set all&" the value of 'scroll' was not set correctly. This +caused an error message when later setting any other number option. + +When 'hlsearch' highlighting has been disabled with ":nohlsearch", +incremental searching would switch it back on too early. + +When listing tags for ":tselect", and using a non-search command, and the last +character was equal to the first (e.g., "99"), the last char would not be +shown. + +When searching for tags with ":tag" Vim would assume that all matches had been +found when there were still more (e.g. from another tags file). + +Win32: Didn't recognize "c:\" (e.g., in tags file) as absolute path when +upper/lowercase was different. + +Some xterms (Debian) send <Esc>OH for HOME and <Esc>OF for END. Added these +to the builtin-xterm. + +In ex mode, any CR was seen as the end of the line. Only a NL should be +handled that way. broke ":s/foo/some^Mtext/". + +In menu.vim, a vmenu was used to override an amenu. That didn't work, because +the system menu file doesn't overwrite existing menus. Added explicit vunmenu +to solve this. + +Configure check for terminal library could find a library that doesn't work at +runtime (Solaris: shared library not found). Added a check that a program +with tgoto() can run correctly. + +Unix: "echo -n" in the Makefile doesn't work on all systems, causing errors +compiling pathdef.c. Replaced it with "tr". + +Perl: DO_JOIN was redefined by Perl. Undefined it in the perl files. + +Various XIM and multi-byte fixes: +- Fix user cannot see his language while he is typing his language with + off-the-spot method. (Nagano) +- Fix preedit position using text/edit area (using gui.wid). (Nagano) +- remove 'fix dead key' codes. It was needed since XNFocusWindow was + "x11_window", XNFocusWindow is now gui.wid. (Nagano) +- Remove some compile warnings and fix typos. (Namsh) +- For status area, check the gtk+ version while Vim runs. I believe it is + better than compile time check. (Namsh) +- Remove one FIXME for gtk+-xim. (Namsh) +- XIM: Dead keys didn't work for Czech. (Vyskovsky) +- Multibyte: If user input only 3byte such as mb1_mb2_eng or eng_mb1_mb2 VIM + could convert it to special character. (Nam) +- Athena/Motif with XIM: fix preedit area. (Nam) +- XIM: Composed strings were sometimes ignored. Vim crashed when compose + string was longer than 256 bytes. IM's geometry control is fixed. (Nam, + Nagano) +- Win32 multi-byte: hollowed cursor width on a double byte char was wrong. + (Nagano) +- When there is no GUI, selecting XIM caused compilation problems. + Automatically disable XIM when there is no GUI in configure. +- Motif and Athena: When compiled with XIM, but the input method was not + enabled, there would still be a status line. Now the status line is gone if + the input method doesn't work. (Nam) + +Win32: tooltip was not removed when selecting a parent menu (it was when +selecting a menu entry). (Negri) + +Unix with X: Some systems crash on exit, because of the XtCloseDisplay() call. +Removed it, it should not be necessary when exiting. + +Win32: Crash on keypress when compiled with Borland C++. (Aaron) + +When checking for Motif library files, prefer the same location as the include +files (with "include" replaced with "lib") above another entry. + +Athena GUI: Changed "XtOffset()" in gui_at_fs.c to "XtOffsetOf()", like it's +used in gui_x11.c. + +Win32: When testing for a timestamp of a file on floppy, would get a dialog +box when the floppy has been removed. Now return with an error. (Negri) + +Win32 OLE: When forced to come to the foreground, a minimized window was still +minimized, now it's restored. (Zivkov) + +There was no check for a positive 'shiftwidth'. A negative value could cause +a hangup, a zero value a crash. + +Athena GUI: horizontal scrollbar wasn't updated correctly when clicking right +or left of the thumb. + +When making a Visual-block selection in one window, and trying to scroll +another, could cause errors for accessing non-existent line numbers. + +When 'matchpairs' contains "`:'", jumping from the ` to the ' didn't work +properly. + +Changed '\"' to '"' to make it compatible with old C compilers. + +The command line expansion for mappings caused a script with a TAB between lhs +and rhs of a map command to fail. Assume the TAB is to separate lhs and rhs +when there are no mappings to expand. + +When editing a file with very long lines with 'scrolloff' set, "j" would +sometimes end up in a line which wasn't displayed. + +When editing a read-only file, it was completely read into memory, even when +it would not fit. Now create a swap file for a read-only file when running +out of memory while reading the file. + +When using ":set cino={s,e-s", a line after "} else {" was not indented +properly. Also added a check for this in test3.in. + +The Hebrew mapping for the command line was remembered for the next command +line. That isn't very useful, a command is not Hebrew. (Kol) + +When completing file names with embedded spaces, like "Program\ files", this +didn't work. Also for user commands. Moved backslash_halve() down to +mch_expandpath(). + +When using "set mouse=a" in Ex mode, mouse events were handled like typed +text. Then typing "quit" screwed up the mouse behavior of the xterm. + +When repeating an insert with "." that contains a CTRL-Y, a number 5 was +inserted as "053". + +Yanking a Visual area, with the cursor past the line, didn't move the cursor +back onto the line. Same for "~", "u", "U" and "g?" + +Win32: Default for 'grepprg' could be "findstr /n" even though there is no +findstr.exe (Windows 95). Check if it exists, and fall back to "grep -n" if +it doesn't. + +Because gui_mouse_moved() inserted a leftmouse click in the input buffer, +remapping a leftmouse click caused strange effects. Now Insert another code +in the input buffer. Also insert a leftmouse release, to avoid the problem +with ":map <LeftMouse> l" that the next release is seen as the release for the +focus click. + +With 'wrap' on, when using a line that doesn't fit on the screen, if the start +of the Visual area is before the start of the screen, there was no +highlighting. Also, 'showbreak' doesn't work properly. + +DOS, Win32: A pattern "[0-9]\+" didn't work in autocommands. + +When creating a swap file for a buffer which isn't the current buffer, could +get a mixup of short file name, resulting in a long file name when a short +file name was required. makeswapname() was calling modname() instead of +buf_modname(). + +When a function caused an error, and the error message was very long because +of recursiveness, this would cause a crash. + +'suffixes' were always compared with matching case. For MS-DOS, Win32 and +OS/2 case is now ignored. + +The use of CHARBITS in regexp.c didn't work on some Linux. Don't use it. + +When generating a script file, 'cpo' was made empty. This caused backslashes +to disappear from mappings. Set it to "B" to avoid that. + +Lots of typos in the documentation. (Campbell) + +When editing an existing (hidden) buffer, jump to the last used cursor +position. (Madsen) + +On a Sun the xterm screen was not restored properly when suspending. (Madsen) + +When $VIMINIT is processed, 'nocompatible' was only set after processing it. + +Unix: Polling for a character wasn't done for GPM, Sniff and Xterm clipboard +all together. Cleaned up the code for using select() too. + +When executing external commands from the GUI, some typeahead was lost. Added +some code to regain as much typeahead as possible. + +When the window height is 5 lines or fewer, <PageDown> didn't use a one-line +overlap, while <PageUp> does. Made sure that <PageUp> uses the same overlap +as <PageDown>, so that using them both always displays the same lines. + +Removed a few unused functions and variables (found with lint). + +Dictionary completion didn't use 'infercase'. (Raul) + +Configure tests failed when the Perl library was not in LD_LIBRARY_PATH. +Don't use the Perl library for configure tests, add it to the linker line only +when linking Vim. + +When using ncurses/terminfo, could get a 't_Sf' and 't_Sb' termcap entry that +has "%d" instead of "%p1%d". The light background colors didn't work then. + +GTK GUI with ncurses: Crashed when starting up in tputs(). Don't use tputs() +when the GUI is active. + +Could use the ":let" command to set the "count", "shell_error" and "version" +variables, but that didn't work. Give an error message when trying to set +them. + +On FreeBSD 3.0, tclsh is called tclsh8.0. Adjusted configure.in to find it. + +When Vim is linked with -lncurses, but python uses -ltermcap, this causes +trouble: "OOPS". Configure now removes the -ltermcap. + +:@" and :*" didn't work properly, because the " was recognized as the start of +a comment. + +Win32s GUI: Minimizing the console where a filter command runs in caused +trouble for detecting that the filter command has finished. (Negri) + +After executing a filter command from an xterm, the mouse would be disabled. +It would work again after changing the mode. + +Mac GUI: Crashed in newenv(). (St-Amant) + +The menus and mappings in mswin.vim didn't handle text ending in a NL +correctly. (Acevedo) + +The ":k" command didn't check if it had a valid argument or extra characters. +Now give a meaningful error message. (Webb) + +On SGI, the signal function doesn't always have three arguments. Check for +struct sigcontext to find out. Might still be wrong... + +Could crash when using 'hlsearch' and search pattern is "^". + +When search patterns were saved and restored, status of no_hlsearch was not +also saved and restored (from ":nohlsearch" command). + +When using setline() to make a line shorter, the cursor position was not +adjusted. + +MS-DOS and Win95: When trying to edit a file and accidentally adding a slash +or backslash at the end, the file was deleted. Probably when trying to create +the swap file. Explicitly check for a trailing slash or backslash before +trying to read a file. + +X11 GUI: When starting the GUI failed and received a deadly signal while +setting the title, would lock up when trying to exit, because the title is +reset again. Avoid using mch_settitle() recursively. + +X11 GUI: When starting the GUI fails, and then trying it again, would crash, +because argv[] has been freed and x11_display was reset to NULL. + +Win32: When $HOME was set, would put "~user" in the swap file, which would +never compare with a file name, and never cause the attention message. Put +the full path in the swap file instead. + +Win32 console: There were funny characters at the end of the "vim -r" swap +files message (direct output of CR CR LF). + +DOS 32 bit: "vim -r" put the text at the top of the window. + +GUI: With 'mousefocus' set, got mouse codes as text with "!sleep 100" or "Q". + +Motif and Win32 GUI: When changing 'guifont' to a font of the same size the +screen wasn't redrawn. + +Unix: When using ":make", jumping to a file b.c, which is already open as a +symbolic link a.c, opened a new buffer instead of using the existing one. + +Inserting text in the current buffer while sourcing the .vimrc file would +cause a crash or hang. The memfile for the current buffer was never +allocated. Now it's allocated as soon as something is written in the buffer. + +DOS 32 bit: "lightblue" background worked for text, but not drawn parts were +black. + +DOS: Colors of console were not restored upon exiting. + +When recording, with 'cmdheight' set to 2 and typing Esc> in Insert mode +caused the "recording" message to be doubled. + +Spurious "file changed" messages could happen on Windows. Now tolerate a one +second difference, like for Linux. + +GUI: When returning from Ex mode, scrollbars were not updated. + +Win32: Copying text to the clipboard containing a <CR>, pasting it would +replace it with a <NL> and drop the next character. + +Entering a double byte character didn't work if the second byte is in [xXoO]. +(Eric Lee) + +vim_realloc was both defined and had a prototype in proto/misc2.pro. Caused +conflicts on Solaris. + +A pattern in an autocommand was treated differently on DOS et al. than on +Unix. Now it's the same, also when using backslashes. + +When using <Tab> twice for command line completion, without a match, the <Tab> +would be inserted. (Negri) + +Bug in MS-Visual C++ 6.0 when compiling ex_docmd.c with optimization. (Negri) + +Testing the result of mktemp() for failure was wrong. Could cause a crash. +(Peters) + +GUI: When checking for a ".gvimrc" file in the current directory, didn't check +for a "_gvimrc" file too. + +Motif GUI: When using the popup menu and then adding an item to the menu bar, +the menu bar would get very high. + +Mouse clicks and special keys (e.g. cursor keys) quit the more prompt and +dialogs. Now they are ignored. + +When at the more-prompt, xterm selection didn't work. Now use the 'r' flag in +'mouse' also for the more-prompt. + +When selecting a Visual area of more than 1023 lines, with 'guioptions' set to +"a", could mess up the display because of a message in free_yank(). Removed +that message, except for the Amiga. + +Moved auto-selection from ui_write() to the screen update functions. Avoids +unexpected behavior from a low-level function. Also makes the different +feedback of owning the selection possible. + +Vi incompatibility: Using "i<CR>" in an indent, with 'ai' set, used the +original indent instead of truncating it at the cursor. (Webb) + +":echo x" didn't stop at "q" for the more prompt. + +Various fixes for Macintosh. (St-Amant) + +When using 'selectmode' set to "exclusive", selecting a word and then using +CTRL-] included the character under the cursor. + +Using ":let a:name" in a function caused a crash. (Webb) + +When using ":append", an empty line didn't scroll up. + +DOS etc.: A file name starting with '!' didn't work. Added '!' to default for +'isfname'. + +BeOS: Compilation problem with prototype of skip_class_name(). (Price) + +When deleting more than one line, e.g., with "de", could still use "U" +command, which didn't work properly then. + +Amiga: Could not compile ex_docmd.c, it was getting too big. Moved some +functions to ex_cmds.c. + +The expand() function would add a trailing slash for directories. + +Didn't give an error message when trying to assign a value to an argument of a +function. (Webb) + +Moved including sys/ptem.h to after termios.h. Needed for Sinix. + +OLE interface: Don't delete the object in CVimCF::Release() when the reference +count becomes zero. (Cordell) +VisVim could still crash on exit. (Erhardt) + +"case a: case b:" (two case statements in one line) aligned with the second +case. Now it uses one 'sw' for indent. (Webb) + +Font initialisation wasn't right for Athena/Motif GUI. Moved the call to +highlight_gui_started() gui_mch_init() to gui_mch_open(). (Nam) + +In Replace mode, backspacing over a TAB before where the replace mode started +while 'sts' is different from 'ts', would delete the TAB. + +Win32 console: When executing external commands and switching between the two +console screens, Vim would copy the text between the buffers. That caused the +screen to be messed up for backtick expansion. + +":winpos -1" then ":winpos" gave wrong error message. + +Windows commander creates files called c:\tmp\$wc\abc.txt. Don't remove the +backslash before the $. Environment variables were not expanded anyway, +because of the backslash before the dollar. + +Using "-=" with ":set" could remove half a part when it contains a "\,". +E.g., ":set path+=a\\,b" and then "set path-=b" removed ",b". + +When Visually selecting lines, with 'selection' set to "inclusive", including +the last char of the line, "<<" moved an extra line. Also for other operators +that always work on lines. + +link.sh changed "-lnsl_s" to "_s" when looking for "nsl" to be removed. +Now it only remove whole words. + +When jumped to a mark or using "fz", and there is an error, the current column +was lost. E.g. when using "$fzj". + +The "g CTRL-G" command could not be interrupted, even though it can take a +long time. + +Some terminals do have <F4> and <xF4>. <xF4> was always interpreted as <F4>. +Now map <xF4> to <F4>, so that the user can override this. + +When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be +used. (Aaron) + +This autocommand looped forever: ":au FileChangedShell * nested e <afile>" +Now FileChangeShell never nests. (Roemer) + +When evaluating an ":elseif" that was not going to matter anyway, ignore +errors. (Roemer) + +GUI Lesstif: Tearoff bar was the last item, instead of the first. + +GUI Motif: Colors of tear-off widgets was wrong when 't' flag added to +'guioptions' afterwards. When 't' flag in 'guioptions' is excluded, would +still get a tearoff item in a new menu. + +An inode number can be "long long". Use ino_t instead of long. Added +configure check for ino_t. + +Binary search for tags was using a file offset "long" instead of "off_t". + +Insert mode completion of tags was not using 'ignorecase' properly. + +In Insert mode, the <xFn> keys were not properly mapped to <Fn> for the +default mappings. Also caused errors for ":mkvimrc" and ":mksession". + +When jumping to another window while in Insert mode, would get the "warning: +changing readonly file" even when not making a change. + +A '(' or '{' inside a trailing "//" comment would disturb C-indenting. +When using two labels below each other, the second one was not indented +properly. Comments could mess up C-indenting in many places. (Roemer) + +Could delete or redefine a function while it was being used. Could cause a +crash. +In a function it's logical to prepend "g:" to a system variable, but this +didn't work. (Roemer) + +Hangul input: Buffer would overflow when user inputs invalid key sequence. +(Nam) + +When BufLoad or BufEnter autocommands change the topline of the buffer in the +window, it was overruled and the cursor put halfway the window. Now only put +the cursor halfway if the autocommands didn't change the topline. + +Calling exists("&option") always returned 1. (Roemer) + +Win32: Didn't take actually available memory into account. (Williams) + +White space after an automatically inserted comment leader was not removed +when 'ai' is not set and <CR> hit just after inserting it. (Webb) + +A few menus had duplicated accelerators. (Roemer) + +Spelling errors in documentation, quite a few "the the". (Roemer) + +Missing prototypes for Macintosh. (Kielhorn) + +Win32: When using 'shellquote' or 'shellxquote', the "!start cmd" wasn't +executed in a disconnected process. + +When resizing the window, causing a line before the cursor to wrap or unwrap, +the cursor was displayed in the wrong position. + +There was quite a bit of dead code when compiling with minimal features. + +When doing a ":%s///" command that makes lines shorter, such that lines above +the final cursor position no longer wrap, the cursor position was not updated. + +get_id_list() could allocate an array one too small, when a "contains=" item +has a wildcard that matches a group name that is added just after it. E.g.: +"contains=a.*b,axb". Give an error message for it. + +When yanking a Visual area and using the middle mouse button -> crash. When +clipboard doesn't work, now make "* always use "". + +Win32: Using ":buf a\ b\file" didn't work, it was interpreted as "ab\file". + +Using ":ts ident", then hit <CR>, with 'cmdheight' set to 2: command line was +not cleared, the tselect prompt was on the last but one line. + +mksession didn't restore the cursor column properly when it was after a tab. +Could not get all windows back when using a smaller terminal screen. Didn't +restore all windows when "winsize" was not in 'sessionoptions'. (Webb) + +Command line completion for ":buffer" depended on 'ignorecase' for Unix, but +not for DOS et al. Now don't use 'ignorecase', but let it depend on whether +file names are case sensitive or not (like when expanding file names). + +Win32 GUI: (Negri) +- Redrawing the background caused flicker when resizing the window. Removed + _OnEraseBG(). Removed CS_HREDRAW and CS_VREDRAW flags from the + sndclass.style. +- Some parts of the window were drawn in grey, instead of using the color from + the user color scheme. +- Dropping a file on gvim didn't activate the window. +- When there is no menu ('guioptions' excludes 'm'), never use the ALT key for + it. + +GUI: When resizing the window, would make the window height a bit smaller. +Now round off to the nearest char cell size. (Negri) + +In Vi the ")" and "(" commands don't stop at a single space after a dot. +Added 'J' flag in 'cpoptions' to make this behave Vi compatible. (Roemer) + +When saving a session without any buffers loaded, there would be a ":normal" +command without arguments in it. (Webb) + +Memory leaks fixed: (Madsen) +- eval.c: forgot to release func structure when func deleted +- ex_docmd.c: forgot to release string after "<sfile>" +- misc1.c: leak when completion pattern had no matches. +- os_unix.c: forgot to release regexp after file completions + +Could crash when using a buffer without a name. (Madsen) +Could crash when doing file name completion, because of backslash_halve(). +(Madsen) + +":@a" would do mappings on register a, which is not Vi compatible. (Roemer) + +":g/foo.*()/s/foobar/_&/gc" worked fine, but then "n" searched for "foobar" +and displayed "/foo.*()". (Roemer) + +OS/2: get_cmd_output() was not included. Didn't check for $VIM/.vimrc file. + +Command line completion of options didn't work after "+=" and "-=". + +Unix configure: Test for memmove()/bcopy()/memcpy() tried redefining these +functions, which could fail if they are defined already. Use mch_memmove() to +redefine. + +Unix: ":let a = expand("`xterm`&")" started an xterm asynchronously, but +":let a = expand("`xterm&`")" generated an error message, because the +redirection was put after the '&'. + +Win32 GUI: Dialog buttons could not be selected properly with cursor keys, +when the default is not the first button. (Webb) + +The "File has changed since editing started" (when regaining focus) could not +always be seen. (Webb) + +When starting with "ex filename", the file message was overwritten with +the "entering Ex mode" message. + +Output of ":tselect" listed name of file directly from the tags file. Now it +is corrected for the position of the tags file. + +When 'backspace' is 0, could backspace over autoindent. Now it is no longer +allowed (Vi compatible). + +In Replace mode, when 'noexpandtab' and 'smarttab' were set, and inserting +Tabs, backspacing didn't work correctly for Tabs inserted at the start of the +line (unless 'sts' was set too). Also, when replacing the first non-blank +after which is a space, rounding the indent was done on the first non-blank +instead of on the character under the cursor. + +When 'sw' at 4, 'ts' at 8 and 'smarttab' set: When a tab was appended after +four spaces (they are replaced with a tab) couldn't backspace over the tab. + +In Insert mode, with 'bs' set to 0, couldn't backspace to before autoindent, +even when it was removed with CTRL-D. + +When repeating an insert command where a <BS>, <Left> or other key causes an +error, would flush buffers and remain in Insert mode. No longer flush +buffers, only beep and continue with the insert command. + +Dos and Win32 console: Setting t_me didn't work to get another color. Made +this works backwards compatible. + +For Turkish (LANG = "tr") uppercase 'i' is not an 'I'. Use ASCII uppercase +translation in vim_strup() to avoid language problems. (Komur) + +Unix: Use usleep() or nanosleep() for mch_delay() when available. Hopefully +this avoids a hangup in select(0, ..) for Solaris 2.6. + +Vim would crash when using a script file with 'let &sp = "| tee"', starting +vim with "vim -u test", then doing ":set sp=". The P_WAS_SET flag wasn't set +for a string option, could cause problems with any string option. + +When using "cmd | vim -", stdin is not a terminal. This gave problems with +GPM (Linux console mouse) and when executing external commands. Now close +stdin and re-open it as a copy of stderr. + +Syntax highlighting: A "nextgroup" item was not properly stored in the state +list. This caused missing of next groups when not redrawing from start to +end, but starting halfway. + +Didn't check for valid values of 'ttymouse'. + +When executing an external command from the GUI, waiting for the child to +terminate might not work, causing a hang. (Parmelan) + +"make uninstall" didn't delete the vimrc_example.vim and gvimrc_example.vim +files and the vimtutor. + +Win32: "expand("%:p:h")" with no buffer name removed the directory name. +"fnamemodify("", ":p")" did not add a trailing slash, fname_case() removed it. + +Fixed: When 'hlsearch' was set and the 'c' flag was not in 'cpoptions': +highlighting was not correct. Now overlapping matches are handled correctly. + +Athena, Motif and GTK GUI: When started without focus, cursor was shown as if +with focus. + +Don't include 'shellpipe' when compiled without quickfix, it's not used. +Don't include 'dictionary' option when compiled without the +insert_expand +feature. +Only include the 'shelltype' option for the Amiga. + +When making a change to a line, with 'hlsearch' on, causing it to wrap, while +executing a register, the screen would not be updated correctly. This was a +generic problem in update_screenline() being called while must_redraw is +VALID. + +Using ":bdelete" in a BufUnload autocommand could cause a crash. The window +height was added to another window twice in close_window(). + +Win32 GUI: When removing a menu item, the tearoff wasn't updated. (Negri) + +Some performance bottlenecks removed. Allocating memory was not efficient. +For Win32 checking for available memory was slow, don't check it every time +now. On NT obtaining the user name takes a long time, cache the result (for +all systems). + +fnamemodify() with an argument ":~:." or ":.:~" didn't work properly. + +When editing a new file and exiting, the marks for the buffer were not saved +in the viminfo file. + +":confirm only" didn't put up a dialog. + +These text objects didn't work when 'selection' was "exclusive": va( vi( va{ +vi{ va< vi< vi[ va[. + +The dialog for writing a readonly file didn't have a valid default. (Negri) + +The line number used for error messages when sourcing a file was reset when +modelines were inspected. It was wrong when executing a function. + +The file name and line number for an error message wasn't displayed when it +was the same as for the last error, even when this was long ago. Now reset +the name/lnum after a hit-enter prompt. + +In a session file, a "%" in a file name caused trouble, because fprintf() was +used to write it to the file. + +When skipping statements, a mark in an address wasn't skipped correctly: +"ka|if 0|'ad|else|echo|endif". (Roemer) + +":wall" could overwrite a not-edited file without asking. + +GUI: When $DISPLAY was not set or starting the GUI failed in another way, the +console mode then started with wrong colors and skipped initializations. Now +do an early check if the GUI can be started. Don't source the menu.vim or +gvimrc when it will not. Also do normal terminal initializations if the GUI +might not start. + +When using a BufEnter autocommand to position the cursor and scroll the +window, the cursor was always put at the last used line and halfway the window +anyhow. + +When 'wildmode' was set to "longest,list:full", ":e *.c<Tab><Tab>" didn't list +the matches. Also avoid that listing after a "longest" lists the wrong +matches when the first expansion changed the string in front of the cursor. + +When using ":insert", ":append" or ":change" inside a while loop, was not able +to break out of it with a CTRL-C. + +Win32: ":e ." took an awful long time before an error message when used in +"C:\". Was caused by adding another backslash and then trying to get the full +name for "C:\\". + +":winpos -10 100" was working like ":winpos -10 -10", because a pointer was +not advanced past the '-' sign. + +When obtaining the value of a hidden option, would give an error message. Now +just use a zero value. + +OS/2: Was using argv[0], even though it was not a useful name. It could be +just "vim", found in the search path. + +Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) until +after a delay of 'updatetime'. Didn't check for the size-changed signal. + +'scrollbind' didn't work in Insert mode. +Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g., +when 'showcmd' was off). + +When compiled with minimal features but with GUI, switching on the mouse in an +xterm caused garbage, because the mouse codes were not recognized. Don't +enable the mouse when it can't be recognized. In the GUI it also didn't work, +the arguments to the mouse code were not interpreted. + +When 'showbreak' used, in Insert mode, when the cursor is just after the last +character in the line, which is also the in the rightmost column, the cursor +position would be like the 'showbreak' string is shown, but it wasn't. + +Autocommands could move the cursor in a new file, so that CTRL-W i didn't show +the right line. Same for when using a filemark to jump to another file. + +When redefining the argument list, the title used for other windows could be +showing the wrong info about the position in the argument list. Also update +this for a ":split" command without arguments. + +When editing file 97 of 13, ":Next" didn't work. Now it goes to the last +file in the argument list. + +Insert mode completion (for dictionaries or included files) could not be +interrupted by typing an <Esc>. Could get hit-enter prompt after line +completion, or whenever the informative message would get too long. + +When using the ":edit" command to re-edit the same file, an autocommand to +jump to the last cursor position caused the cursor to move. Now set the last +used cursor position to avoid this. + +When 'comments' has a part that starts with white space, formatting the +comment didn't work. + +At the ":tselect" prompt Normal mode mappings were used. That has been +disabled. + +When 'selection' is not "old", some commands still didn't allow the cursor +past the end-of-line in Visual mode. + +Athena: When a menu was deleted, it would appear again (but not functional) +when adding another menu. Now they don't reappear anymore (although they are +not really deleted either). + +Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri) + +"ze" didn't work when 'number' was on. (Davis) + +Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson) + +A few files were including proto.h a second time, after vim.h had already done +that, which could cause problems with the vim_realloc() macro. + +Win32 console: <M-x> or ALT-x was not recognized. Also keypad '+', '-' and +'*'. (Negri) +MS-DOS: <M-x> didn't work, produced a two-byte code. Now the alphabetic and +number keys work. (Negri) + +When finding a lot of matches for a tag completion, the check for avoiding +double matches could take a lot of time. Add a line_breakcheck() to be able +to interrupt this. (Deshpande) + +When the command line was getting longer than the screen, the more-prompt +would be given regularly, and the cursor position would be wrong. Now only +show the part of the command line that fits on the screen and force the cursor +to be positioned on the visible part. There can be text after the cursor +which isn't editable. + +At the more prompt and with the console dialog, a cursor key was interpreted +as <Esc> and OA. Now recognize special keys in get_keystroke(). Ignore mouse +and scrollbar events. + +When typing a BS after inserting a middle comment leader, typing the last char +of the end comment leader still changed it into the end comment leader. (Webb) + +When a file system is full, writing to a swap file failed. Now first try to +write one block to the file. Try next entry in 'dir' if it fails. + +When "~" is in 'whichwrap', doing "~" on last char of a line didn't update the +display. + +Unix: Expanding wildcards for ":file {\\}" didn't work, because "\}" was +translated to "}" before the shell got it. Now don't remove backslashes when +wildcards are going to be expanded. + +Unix: ":e /tmp/$uid" didn't work. When expanding environment variables in a +file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty" +still doesn't work though. + +"make test" didn't always work on DOS/Windows for test30, because it depended +on the external "echo" command. + +The link.sh script used "make" instead of $MAKE from the Makefile. Caused +problems for generating pathdef.c when "make" doesn't work properly. + +On versions that can do console and GUI: In the console a typed CSI code could +cause trouble. + +The patterns in expression evaluation didn't ignore the 'l' flag in +'cpoptions'. This broke the working of <CR> in the options window. + +When 'hls' off and 'ai' on, "O<Esc>" did remove the indent, but it was still +highlighted red for trailing space. + +Win32 GUI: Dropping an encrypted file on a running gvim didn't work right. Vim +would loop while outputting "*" characters. vgetc() was called recursively, +thus it returns NUL. Added safe_vgetc(), which reads input directly from the +user in this situation. + +While reading text from stdin, only an empty screen was shown. Now show that +Vim is reading from stdin. + +The cursor shape wasn't set properly when returning to Insert mode, after +using a CTRL-O /asdf command which fails. It would be OK after a few seconds. +Now it's OK right away. + +The 'isfname' default for DOS/Windows didn't include the '@' character. File +names that contained "dir\@file" could not be edited. + +Win32 console: <C-S-Left> could cause a crash when compiled with Borland or +egcs. (Aaron) + +Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers. Use +"#ifdef HAVE_DIRENT_H" instead. (Jones) + +When a matching tag is in the current file but has a search pattern that +doesn't match, the cursor would jump to the first line. + +Unix: Dependencies for pty.c were not included in Makefile. Dependency of +ctags/config.h was not included (only matters for parallel make). + +Removed a few Uninitialized Memory Reads (potential crashes). In do_call() +calling clear_var() when not evaluating. In win32_expandpath() and +dos_expandpath() calling backslash_halve() past the end of a file name. + +Removed memory leaks: Set_vim_var_string() never freed the value. The +next_list for a syntax keyword was never freed. + +On non-Unix systems, using a file name with wildcards without a match would +silently fail. E.g., ":e *.sh". Now give a "No match" error message. + +The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognized +as Vim scripts. Renamed them to *.vim. + +[Note: some numbered patches are not relevant when upgrading from version 5.3, +they have been removed] + +Patch 5.4m.1 +Problem: When editing a file with a long name, would get the hit-enter + prompt, even though all settings are such that the name should be + truncated to avoid that. filemess() was printing the file name + without truncating it. +Solution: Truncate the message in filemess(). Use the same code as for + msg_trunc_attr(), which is moved to the new function + msg_may_trunc(). +Files: src/message.c, src/proto/message.pro, src/fileio.c + +Patch 5.4m.3 +Problem: The Motif libraries were not found by configure for Digital Unix. +Solution: Add "/usr/shlib" to the search path. (Andy Kahn) +Files: src/configure.in, src/configure + +Patch 5.4m.5 +Problem: Win32 GUI: When using the Save-As menu entry and selecting an + existing file in the file browser, would get a dialog to confirm + overwriting twice. (Ed Krall) +Solution: Removed the dialog from the file browser. It would be nicer to + set the "forceit" flag and skip Vim's ":confirm" dialog, but it + requires quite a few changes to do that. +Files: src/gui_w32.c + +Patch 5.4m.6 +Problem: Win32 GUI: When reading text from stdin, e.g., "cat foo | gvim -", + a message box would pop up with "-stdin-" (when exiting). (Michael + Schaap) +Solution: Don't switch off termcap mode for versions that are GUI-only. + They use another terminal to read from stdin. +Files: src/main.c, src/fileio.c + +Patch 5.4m.7 +Problem: Unix: running configure with --enable-gtk-check, + --enable-motif-check, --enable-athena-check or --enable-gtktest + had the reverse effect. (Thomas Koehler) +Solution: Use $enable_gtk_check variable correctly in AC_ARG_ENABLE(). +Files: src/configure.in, src/configure + +Patch 5.4m.9 +Problem: Multi-byte: With wrapping lines, the cursor was sometimes 2 + characters to the left. Syntax highlighting was wrong when a + double-byte character was split for a wrapping line. When + 'showbreak' was on the splitting also didn't work. +Solution: Adjust getvcol() and win_line(). (Chong-Dae Park) +Files: src/charset.c, src/screen.c + +Patch 5.4m.11 +Problem: The ":call" command didn't check for illegal trailing characters. + (Stefan Roemer) +Solution: Add the check in do_call(). +Files: src/eval.c + +Patch 5.4m.13 +Problem: With the ":s" command: + 1. When performing a substitute command, the mouse would be + disabled and enabled for every substitution. + 2. The cursor position could be beyond the end of the line. + Calling line_breakcheck() could try to position the cursor, + which causes a crash in the Win32 GUI. + 3. When using ":s" in a ":g" command, the cursor was not put on + the first non-white in the line. + 4. There was a hit-enter prompt when confirming the substitution + and the replacement was a bit longer. +Solution: 1. Only disable/enable the mouse when asking for confirmation. + 2. Always put the cursor on the first character, it is going to be + moved to the first non-blank anyway. + Don't use the cursor position in gui_mch_draw_hollow_cursor(), + get the character from the screen buffer. + 3. Added global_need_beginline flag to call beginline() after ":g" + has finished all substitutions. + 4. Clear the need_wait_return flag after prompting the user. +Files: src/ex_cmds.c, src/gui_w32.c + +Patch 5.4m.14 +Problem: When doing "vim xxx", ":opt", ":only" and then ":e xxx" we end + up with two swapfiles for "xxx". That is caused by the ":bdel" + command which is executed when unloading the option-window. + Also, there was no check if closing a buffer made the new one + invalid, this could cause a crash. +Solution: When closing a buffer causes the current buffer to be deleted, + use the new buffer to replace it. Also detect that the new buffer + has become invalid as a side effect of closing the current one. + Make autocommand that calls ":bdel" in optwin.vim nested, so that + the buffer loading it triggers also executes autocommands. + Also added a test for this in test13. +Files: runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h + src/testdir/test13.in, src/testdir/test13.ok + +Patch 5.4m.15 +Problem: When using a BufEnter autocommand to reload the syntax file, + conversion to HTML caused a crash. (Sung-Hyun Nam) +Solution: When using ":syntax clear" the current stack of syntax items was + not cleared. This will cause memory to be used that has already + been freed. Added call to invalidate_current_state() in + syntax_clear(). +Files: src/syntax.c + +Patch 5.4m.17 +Problem: When omitting a ')' in an expression it would not be seen as a + failure. + When detecting an error inside (), there would be an error message + for a missing ')' too. + When using ":echo 1+|echo 2" there was no error message. (Roemer) + When using ":exe 1+" there was no error message. + When using ":return 1+" there was no error message. +Solution: Fix do_echo(), do_execute() and do_return() to give an error + message when eval1() returns FAIL. + Fix eval6() to handle trailing ')' correctly and return FAIL when + it's missing. +Files: src/eval.c + +Patch 5.4m.18 +Problem: When using input() from inside an expression entered with + "CTRL-R =" on the command line, there could be a crash. And the + resulting command line was wrong. +Solution: Added getcmdline_prompt(), which handles recursive use of + getcmdline() correctly. It also sets the command line prompt. + Removed cmdline_prompt(). Also use getcmdline_prompt() for + getting the crypt key in get_crypt_key(). +Files: src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c + +Patch 5.4m.21 +Problem: When starting up, the screen structures were first allocated at + the minimal size, then initializations were done with Rows + possibly different from screen_Rows. Caused a crash in rare + situations (GTK with XIM and fontset). +Solution: Call screenalloc() in main() only after calling ui_get_winsize(). + Also avoids a potential delay because of calling screenclear() + while "starting" is non-zero. +Files: src/main.c + +Patch 5.4m.22 +Problem: In the GUI it was possible that the screen was resized and the + screen structures re-allocated while redrawing the screen. This + could cause a crash (hard to reproduce). The call sequence goes + through update_screen() .. syntax_start() .. ui_breakcheck() .. + gui_resize_window() .. screenalloc(). +Solution: Set updating_screen while redrawing. If the window is resized + remember the new size and handle it only after redrawing is + finished. + This also fixes that resizing the screen while still redrawing + (slow syntax highlighting) would not work properly. + Also disable display_hint, it was never used. +Files: src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro + +Patch 5.4m.23 +Problem: When using expand("<cword>") when there was no word under the + cursor, would get an error message. Same for <cWORD> and <cfile>. +Solution: Don't give an error message, return an empty string. +Files: src/eval.c + +Patch 5.4m.24 +Problem: ":help \|" didn't find anything. It was translated to "/\\|". +Solution: Translate "\|" into "\\bar". First check the table for specific + translations before checking for "\x". +Files: src/ex_cmds.c + +Patch 5.4m.25 +Problem: Unix: When using command line completion on files that contain + ''', '"' or '|' the file name could not be used. + Adding this file name to the Buffers menu caused an error message. +Solution: Insert a backslash before these three characters. + Adjust Mungename() function to insert a backslash before '|'. +Files: src/ex_getln.c, runtime/menu.vim + +Patch 5.4m.26 +Problem: When using a mapping of two function keys, e.g., <F1><F1>, and + only the first char of the second key has been read, the mapping + would not be recognized. Noticed on some Unix systems with xterm. +Solution: Add 'K' flag to 'cpoptions' to wait for the whole key code, even + when halfway a mapping. +Files: src/option.h, src/term.c + +Patch 5.4m.27 +Problem: When making test33 without the lisp feature it hangs. Interrupting + the execution of the script then might cause a crash. +Solution: In inchar(), after closing a script, don't use buf[] anymore. + closescript() has freed typebuf[] and buf[] might be pointing + inside typebuf[]. + Avoid that test33 hangs when the lisp feature is missing. +Files: src/getchar.c src/testdir/test33.in + +"os2" was missing from the feature list. Useful for has("os2"). + +BeOS: +- Included patches from Richard Offer for BeOS R4.5. +- menu code didn't work right. Crashed in the Buffers menu. The window title + wasn't set. (Offer) + +Patch 5.4n.3 +Problem: C-indenting was wrong after " } else". The white space was not + skipped. Visible when 'cino' has "+10". +Solution: Skip white space before calling cin_iselse(). (Norbert Zeh) +Files: src/misc1.c + +Patch 5.4n.4 +Problem: When the 't' flag in 'cpoptions' is included, after a + ":nohlsearch" the search highlighting would not be enabled again + after a tag search. (Norbert Zeh) +Solution: When setting the new search pattern in jumpto_tag(), don't restore + no_hlsearch. +Files: src/tag.c + +Patch 5.4n.5 +Problem: When using ":normal" from a CursorHold autocommand Vim hangs. The + autocommand is executed down from vgetc(). Calling vgetc() + recursively to execute the command doesn't work then. +Solution: Forbid the use of ":normal" when vgetc_busy is set. Give an error + message when this happens. +Files: src/ex_docmd.c, runtime/doc/autocmd.txt + +Patch 5.4n.6 +Problem: "gv" could reselect a Visual that starts and/or ends past the end + of a line. (Robert Webb) +Solution: Check that the start and end of the Visual area are on a valid + character by calling adjust_cursor(). +Files: src/normal.c + +Patch 5.4n.8 +Problem: When a mark was on a non existing line (e.g., when the .viminfo + was edited), jumping to it caused ml_get errors. (Alexey + Marinichev). +Solution: Added check_cursor_lnum() in nv_gomark(). +Files: src/normal.c + +Patch 5.4n.9 +Problem: ":-2" moved the cursor to a negative line number. (Ralf Schandl) +Solution: Give an error message for a negative line number. +Files: src/ex_docmd.c + +Patch 5.4n.10 +Problem: Win32 GUI: At the hit-enter prompt, it was possible to scroll the + text. This erased the prompt and made Vim look like it is in + Normal mode, while it is actually still waiting for a <CR>. +Solution: Disallow scrolling at the hit-enter prompt for systems that use + on the fly scrolling. +Files: src/message.c + +Patch 5.4n.14 +Problem: Win32 GUI: When using ":winsize 80 46" and the height is more than + what fits on the screen, the window size was made smaller than + asked for (that's OK) and Vim crashed (that's not OK)> +Solution: Call check_winsize() from gui_set_winsize() to resize the windows. +Files: src/gui.c + +Patch 5.4n.16 +Problem: Win32 GUI: The <F10> key both selected the menu and was handled as + a key hit. +Solution: Apply 'winaltkeys' to <F10>, like it is used for Alt keys. +Files: src/gui_w32.c + +Patch 5.4n.17 +Problem: Local buffer variables were freed when the buffer is unloaded. + That's not logical, since options are not freed. (Ron Aaron) +Solution: Free local buffer variables only when deleting the buffer. +Files: src/buffer.c + +Patch 5.4n.19 +Problem: Doing ":e" (without argument) in an option-window causes trouble. + The mappings for <CR> and <Space> are not removed. When there is + another buffer loaded, the swap file for it gets mixed up. + (Steve Mueller) +Solution: Also remove the mappings at the BufUnload event, if they are still + present. + When re-editing the same file causes the current buffer to be + deleted, don't try editing it. + Also added a test for this situation. +Files: runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in, + src/testdir/test13.ok + +Patch 5.4n.24 +Problem: BeOS: configure never enabled the GUI, because $with_x was "no". + Unix prototypes caused problems, because Display and Widget are + undefined. + Freeing fonts on exit caused a crash. +Solution: Only disable the GUI when $with_x is "no" and $BEOS is not "yes". + Add dummy defines for Display and Widget in proto.h. + Don't free the fonts in gui_exit() for BeOS. +Files: src/configure.in, src/configure, src/proto.h, src/gui.c. + + +The runtime/vim48x48.xpm icon didn't have a transparent background. (Schild) + +Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined. +(Aaron) + +VMS: +- mch_setenv() had two arguments instead of three. +- The system vimrc and gvimrc files were called ".vimrc" and ".gvimrc". + Removed the dot. +- call to RealWaitForChar() had one argument too many. (Campbell) +- WaitForChar() is static, removed the prototype from proto/os_vms.pro. +- Many file accesses failed, because Unix style file names were used. + Translate file names to VMS style by using vim_fopen(). +- Filtering didn't work, because the temporary file name was generated wrong. +- There was an extra newline every 9192 characters when writing a file. Work + around it by writing line by line. (Campbell) +- os_vms.c contained "# typedef int DESC". Should be "typedef int DESC;". + Only mattered for generating prototypes. +- Added file name translation to many places. Made easy by defining macros + mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat(). +- Set default for 'tagbsearch' to off, because binary tag searching apparently + doesn't work for VMS. +- make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell) + + +Patch 5.4o.2 +Problem: Crash when using "gf" on "file.c://comment here". (Scott Graham) +Solution: Fix wrong use of pointers in get_file_name_in_path(). +Files: src/window.c + +Patch 5.4o.3 +Problem: The horizontal scrollbar was not sized correctly when 'number' is + set and 'wrap' not set. + Athena: Horizontal scrollbar wasn't updated when the cursor was + positioned with a mouse click just after dragging. +Solution: Subtract 8 from the size when 'number' set and 'wrap' not set. + Reset gui.dragged_sb when a mouse click is received. +Files: src/gui.c + +Patch 5.4o.4 +Problem: When running in an xterm and $WINDOWID is set to an illegal value, + Vim would exit with "Vim: Got X error". +Solution: When using the display which was opened for the xterm clipboard, + check if x11_window is valid by trying to obtain the window title. + Also add a check in setup_xterm_clip(), for when using X calls to + get the pointer position in an xterm. +Files: src/os_unix.c + +Patch 5.4o.5 +Problem: Motif version with Lesstif: When removing the menubar and then + using a menu shortcut key, Vim would crash. (raf) +Solution: Disable the menu mnemonics when the menu bar is removed. +Files: src/gui_motif.c + +Patch 5.4o.9 +Problem: The DOS install.exe program used the "move" program. That doesn't + work on Windows NT, where "move" is internal to cmd.exe. +Solution: Don't use an external program for moving the executables. Use C + functions to copy the file and delete the original. +Files: src/dosinst.c + +Motif and Athena obtained the status area height differently from GTK. Moved +status_area_enabled from global.h to gui_x11.c and call +xim_get_status_area_height() to get the status area height. + +Patch 5.4p.1 +Problem: When using auto-select, and the "gv" command is used, would not + always obtain ownership of the selection. Caused by the Visual + area still being the same, but ownership taken away by another + program. +Solution: Reset the clipboard Visual mode to force updating the selection. +Files: src/normal.c + +Patch 5.4p.2 +Problem: Motif and Athena with XIM: Typing 3-byte + <multibyte><multibyte><space> doesn't work correctly with Ami XIM. +Solution: Avoid using key_sym XK_VoidSymbol. (Nam) +Files: src/multbyte.c, src/gui_x11.c + +Patch 5.4p.4 +Problem: Win32 GUI: The scrollbar values were reduced for a file with more + than 32767 lines. But this info was kept global for all + scrollbars, causing a mixup between the windows. + Using the down arrow of a scrollbar in a large file didn't work. + Because of round-off errors there is no scroll at all. +Solution: Give each scrollbar its own scroll_shift field. When the down + arrow is used, scroll several lines. +Files: src/gui.h, src/gui_w32.c + +Patch 5.4p.5 +Problem: When changing buffers in a BufDelete autocommand, there could be + ml_line errors and/or a crash. (Schandl) Was caused by deleting + the current buffer. +Solution: When the buffer to be deleted unexpectedly becomes the current + buffer, don't delete it. + Also added a check for this in test13. +Files: src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok + +Patch 5.4p.7 +Problem: Win32 GUI: When using 'mousemodel' set to "popup_setpos" and + clicking the right mouse button outside of the selected area, the + selected area wasn't removed until the popup menu has gone. + (Aaron) +Solution: Set the cursor and update the display before showing the popup + menu. +Files: src/normal.c + +Patch 5.4p.8 +Problem: The generated bugreport didn't contain information about + $VIMRUNTIME and whether runtime files actually exist. +Solution: Added a few checks to the bugreport script. +Files: runtime/bugreport.vim + +Patch 5.4p.9 +Problem: The windows install.exe created a wrong entry in the popup menu. + The "%1" was "". The full directory was included, even when the + executable had been moved elsewhere. (Ott) +Solution: Double the '%' to get one from printf. Only include the path to + gvim.exe when it wasn't moved and it's not in $PATH. +Files: src/dosinst.c + +Patch 5.4p.10 +Problem: Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes used + a short file name for a directory. +Solution: Change the "%1" to "%L" in the registry entry. +Files: src/dosinst.c + +Patch 5.4p.11 +Problem: Motif, Athena and GTK: When closing the GUI window when there is a + changed buffer, there was only an error message and Vim would not + exit. +Solution: Put up a dialog, like for ":confirm qa". Uses the code that was + already used for MS-Windows. +Files: src/gui.c, src/gui_w32.c + +Patch 5.4p.12 +Problem: Win32: Trying to expand a string that is longer than 256 + characters could cause a crash. (Steed) +Solution: For the buffer in win32_expandpath() don't use a fixed size array, + allocate it. +Files: src/os_win32.c + +MSDOS: Added "-Wall" to Makefile.djg compile flags. Function prototypes for +fname_case() and mch_update_cursor() were missing. "fd" was unused in +mf_sync(). "puiLocation" was unused in myputch(). "newcmd" unused in +mch_call_shell() for DJGPP version. + +============================================================================== +VERSION 5.5 *version-5.5* + +Version 5.5 is a bug-fix version of 5.4. + + +Changed *changed-5.5* +------- + +The DJGPP version is now compiled with "-O2" instead of "-O4" to reduce the +size of the executables. + +Moved the src/STYLE file to runtime/doc/develop.txt. Added the design goals +to it. + +'backspace' is now a string option. See patch 5.4.15. + + +Added *added-5.5* +----- + +Included Exuberant Ctags version 3.3. (Darren Hiebert) + +In runtime/mswin.vim, map CTRL-Q to CTRL-V, so that CTRL-Q can be used +everywhere to do what CTRL-V used to do. + +Support for decompression of bzip2 files in vimrc_example.vim. + +When a patch is included, the patch number is entered in a table in version.c. +This allows skipping a patch without breaking a next one. + +Support for mouse scroll wheel in X11. See patch 5.5a.14. + +line2byte() can be used to get the size of the buffer. See patch 5.4.35. + +The CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert mode are used to +insert a register literally. See patch 5.4.48. + +Uninstall program for MS-Windows. To be able to remove the registry entries +for "Edit with Vim". It is registered to be run from the "Add/Remove +programs" application. See patch 5.4.x7. + + +Fixed *fixed-5.5* +----- + +When using vimrc_example.vim: An error message when the cursor is on a line +higher than the number of lines in the compressed file. Move the autocommand +for jumping to the last known cursor position to after the decompressing +autocommands. + +":mkexrc" and ":mksession" wrote the current value of 'textmode'. That may +mark a file as modified, which causes problems. This is a buffer-specific +setting, it should not affect all files. + +"vim --version" wrote two empty lines. + +Unix: The alarm signal could kill Vim. It is generated by the Perl alarm() +function. Ignore SIGALRM. + +Win32 GUI: Toolbar still had the yellow bitmap for running a Vim script. + +BeOS: "tmo" must be bigtime_t, instead of double. (Seibert) + +Patch 5.4.1 +Problem: Test11 fails when $GZIP is set to "-v". (Matthew Jackson) +Solution: Set $GZIP to an empty string. +Files: src/testdir/test11.in + +Patch 5.4.2 +Problem: Typing <Esc> at the crypt key prompt caused a crash. (Kallingal) +Solution: Check for a NULL pointer returned from get_crypt_key(). +Files: src/fileio.c + +Patch 5.4.3 +Problem: Python: Trying to use the name of an unnamed buffer caused a + crash. (Daniel Burrows) +Solution: Check for b_fname being a NULL pointer. +Files: src/if_python.c + +Patch 5.4.4 +Problem: Win32: When compiled without toolbar, but the 'T' flag is in + 'guioptions', there would be an empty space for the toolbar. +Solution: Add two #ifdefs where checking for the 'T' flag. (Vince Negri) +Files: src/gui.c + +Patch 5.4.5 +Problem: Athena GUI: Using the Buffers.Refresh menu entry caused a crash. + Looks like any ":unmenu" command may cause trouble. +Solution: Disallow ":unmenu" in the Athena version. Disable the Buffers + menu, because the Refresh item would not work. +Files: src/menu.c, runtime/menu.vim + +Patch 5.4.6 +Problem: GTK GUI: Using ":gui" in the .gvimrc file caused an error. Only + happens when the GUI forks. +Solution: Don't fork in a recursive call of gui_start(). +Files: src/gui.c + +Patch 5.4.7 +Problem: Typing 'q' at the more prompt for the ATTENTION message causes the + file loading to be interrupted. (Will Day) +Solution: Reset got_int after showing the ATTENTION message. +Files: src/memline.c + +Patch 5.4.8 +Problem: Edit some file, ":he", ":opt": options from help window are shown, + but pressing space updates from the other window. (Phillipps) + Also: When there are changes in the option-window, ":q!" gives an + error message. +Solution: Before creating the option-window, go to a non-help window. + Use ":bdel!" to delete the buffer. +Files: runtime/optwin.vim + +Patch 5.4.9 + Just updates version.h. The real patch has been moved to 5.4.x1. + This patch is just to keep the version number correct. + +Patch 5.4.10 +Problem: GTK GUI: When $DISPLAY is invalid, "gvim -f" just exits. It + should run in the terminal. +Solution: Use gtk_init_check() instead of gtk_init(). +Files: src/gui_gtk_x11.c + +Patch 5.4.11 +Problem: When using the 'S' flag in 'cpoptions', 'tabstop' is not copied to + the next buffer for some commands, e.g., ":buffer". +Solution: When the BCO_NOHELP flag is given to buf_copy_options(), still + copy the options used by do_help() when neither the "from" or "to" + buffer is a help buffer. +Files: src/option.c + +Patch 5.4.12 +Problem: When using 'smartindent', there would be no extra indent if the + current line did not have any indent already. (Hanus Adler) +Solution: There was a wrongly placed "else", that previously matched with + the "if" that set trunc_line. Removed the "else" and added a + check for trunc_line to be false. +Files: src/misc1.c + +Patch 5.4.13 +Problem: New SGI C compilers need another option for optimisation. +Solution: Add a check in configure for "-OPT:Olimit". (Chin A Young) +Files: src/configure.in, src/configure + +Patch 5.4.14 +Problem: Motif GUI: When the popup menu is present, a tiny window appears + on the desktop for some users. +Solution: Set the menu widget ID for a popup menu to 0. (Thomas Koehler) +Files: src/gui_motif.c + +Patch 5.4.15 +Problem: Since 'backspace' set to 0 has been made Vi compatible, it is no + longer possible to only allow deleting autoindent. +Solution: Make 'backspace' a list of parts, to allow each kind of + backspacing separately. +Files: src/edit.c, src/option.c, src/option.h, src/proto/option.pro, + runtime/doc/option.txt, runtime/doc/insert.txt + +Patch 5.4.16 +Problem: Multibyte: Locale zh_TW.Big5 was not checked for in configure. +Solution: Add zh_TW.Big5 to configure check. (Chih-Tsun Huang) +Files: src/configure.in, src/configure + +Patch 5.4.17 +Problem: GUI: When started from inside gvim with ":!gvim", Vim would not + start. ":!gvim -f" works fine. +Solution: After forking, wait a moment in the parent process, to give the + child a chance to set its process group. +Files: src/gui.c + +Patch 5.4.18 +Problem: Python: The clear_history() function also exists in a library. +Solution: Rename clear_history() to clear_hist(). +Files: src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro + +Patch 5.4.19 +Problem: In a terminal with 25 lines, there is a more prompt after the + ATTENTION message. When hitting 'q' here the dialog prompt + doesn't appear and file loading is interrupted. (Will Day) +Solution: Don't allow quitting the printing of a message for the dialog + prompt. Added the msg_noquit_more flag for this. +Files: src/message.c + +Patch 5.4.20 +Problem: GTK: When starting gvim, would send escape sequences to the + terminal to switch the cursor off and on. +Solution: Don't call msg_start() if the GUI is expected to start. +Files: src/main.c + +Patch 5.4.21 +Problem: Motif: Toplevel menu ordering was wrong when using tear-off items. +Solution: Don't add one to the index for a toplevel menu. +Files: src/gui_motif.c + +Patch 5.4.22 +Problem: In Insert mode, <C-Left>, <S-Left>, <C-Right> and <S-Right> didn't + update the column used for vertical movement. +Solution: Set curwin->w_set_curswant for those commands. +Files: src/edit.c + +Patch 5.4.23 +Problem: When a Visual selection is lost to another program, and then the + same text is Visually selected again, the clipboard ownership + wasn't regained. +Solution: Set clipboard.vmode to NUL to force regaining the clipboard. +Files: src/normal.c + +Patch 5.4.24 +Problem: Encryption: When using ":r file" while 'key' has already entered, + the 'key' option would be messed up. When writing the file it + would be encrypted with an unknown key and lost! (Brad Despres) +Solution: Don't free cryptkey when it is equal to the 'key' option. +Files: src/fileio.c + +Patch 5.4.25 +Problem: When 'cindent' is set, but 'autoindent' isn't, comments are not + properly indented when starting a new line. (Mitterand) +Solution: When there is a comment leader for the new line, but 'autoindent' + isn't set, do C-indenting. +Files: src/misc1.c + +Patch 5.4.26 +Problem: Multi-byte: a multi-byte character is never recognized in a file + name, causing a backslash before it to be removed on Windows. +Solution: Assume that a leading-byte character is a file name character in + vim_isfilec(). +Files: src/charset.c + +Patch 5.4.27 +Problem: Entries in the PopUp[nvic] menus were added for several modes, but + only deleted for the mode they were used for. This resulted in + the entry remaining in the PopUp menu. + When removing a PopUp[nvic] menu, the name had been truncated, + could result in greying-out the whole PopUp menu. +Solution: Remove entries for all modes from the PopUp[nvic] menus. Remove + the PopUp[nvic] menu entries first, before the name is changed. +Files: src/menu.c + +Patch 5.4.28 +Problem: When using a BufWritePre autocommand to change 'fileformat', the + new value would not be used for writing the file. +Solution: Check 'fileformat' after executing the autocommands instead of + before. +Files: src/fileio.c + +Patch 5.4.29 +Problem: Athena GUI: When removing the 'g' flag from 'guioptions', using a + menu can result in a crash. +Solution: Always grey-out menus for Athena, don't hide them. +Files: src/menu.c + +Patch 5.4.30 +Problem: BeOS: Suspending Vim with CTRL-Z didn't work (killed Vim). The + first character typed after ":sh" goes to Vim, instead of the + started shell. +Solution: Don't suspend Vim, start a new shell. Kill the async read thread + when starting a new shell. It will be restarted later. (Will Day) +Files: src/os_unix.c, src/ui.c + +Patch 5.4.31 +Problem: GUI: When 'mousefocus' is set, moving the mouse over where a + window boundary was, causes a hit-enter prompt to be finished. + (Jeff Walker) +Solution: Don't use 'mousefocus' at the hit-enter prompt. Also ignore it + for the more prompt and a few other situations. When an operator + is pending, abort it first. +Files: src/gui.c + +Patch 5.4.32 +Problem: Unix: $LDFLAGS was not passed to configure. +Solution: Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner) +Files: src/Makefile + +Patch 5.4.33 +Problem: Unix: After expanding an environment variable with the shell, the + next expansion would also use the shell, even though it is not + needed. +Solution: Reset "recursive" before returning from gen_expand_wildcards(). +Files: src/misc1.c + +Patch 5.4.34 (also see 5.4.x5) +Problem: When editing a file, and the file name is relative to a directory + above the current directory, the file name was made absolute. + (Gregory Margo) +Solution: Add an argument to shorten_fnames() which indicates if all file + names should be shortened, or only absolute names. In main() only + use shorten_fnames() to shorten absolute names. +Files: src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro + +Patch 5.4.35 +Problem: There is no function to get the current file size. +Solution: Allow using line2byte() with the number of lines in the file plus + one. This returns the offset of the line past the end of the + file, which is the file size plus one. +Files: src/eval.c, runtime/doc/eval.txt + +Patch 5.4.36 +Problem: Comparing strings while ignoring case didn't work correctly for + some machines. (Mide Steed) +Solution: vim_stricmp() and vim_strnicmp() only returned 0 or 1. Changed + them to return -1 when the first argument is smaller. +Files: src/misc2.c + +Patch 5.4.37 (also see 5.4.40 and 5.4.43) +Problem: Long strings from the viminfo file are truncated. +Solution: When writing a long string to the viminfo file, first write a line + with the length, then the string itself in a second line. +Files: src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c, + src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim + +Patch 5.4.38 +Problem: In the option-window, ":set go&" resulted in 'go' being handled + like a boolean option. + Mappings for <Space> and <CR> were overruled by the option-window. +Solution: When the value of an option isn't 0 or 1, don't handle it like a + boolean option. + Save and restore mappings for <Space> and <CR> when entering and + leaving the option-window. +Files: runtime/optwin.vim + +Patch 5.4.39 +Problem: When setting a hidden option, spaces before the equal sign were + not skipped and cause an error message. E.g., ":set csprg =cmd". +Solution: When skipping over a hidden option, check for a following "=val" + and skip it too. +Files: src/option.c + +Patch 5.4.40 (depends on 5.4.37) +Problem: Compiler error for "atol(p + 1)". (Axel Kielhorn) +Solution: Add a typecast: "atol((char *)p + 1)". +Files: src/ex_cmds.c + +Patch 5.4.41 +Problem: Some commands that were not included would give an error message, + even when after "if 0". +Solution: Don't give an error message for an unsupported command when not + executing the command. +Files: src/ex_docmd.c + +Patch 5.4.42 +Problem: ":w" would also cause a truncated message to appear in the message + history. +Solution: Don't put a kept message in the message history when it starts + with "<". +Files: src/message.c + +Patch 5.4.43 (depends on 5.4.37) +Problem: Mixing long lines with multiple lines in a register causes errors + when writing the viminfo file. (Robinson) +Solution: When reading the viminfo file to skip register contents, skip + lines that start with "<". +Files: src/ops.c + +Patch 5.4.44 +Problem: When 'whichwrap' includes '~', a "~" command that goes on to the + next line cannot be properly undone. (Zellner) +Solution: Save each line for undo in n_swapchar(). +Files: src/normal.c + +Patch 5.4.45 (also see 5.4.x8) +Problem: When expand("$ASDF") fails, there is an error message. +Solution: Remove the global expand_interactively. Pass a flag down to skip + the error message. + Also: expand("$ASDF") returns an empty string if $ASDF isn't set. + Previously it returned "$ASDF" when 'shell' is "sh". + Also: system() doesn't print an error when the command returns an + error code. +Files: many + +Patch 5.4.46 +Problem: Backspacing did not always use 'softtabstop' after hitting <CR>, + inserting a register, moving the cursor, etc. +Solution: Reset inserted_space much more often in edit(). +Files: src/edit.c + +Patch 5.4.47 +Problem: When executing BufWritePre or BufWritePost autocommands for a + hidden buffer, the cursor could be moved to a non-existing + position. (Vince Negri) +Solution: Save and restore the cursor and topline for the current window + when it is going to be used to execute autocommands for a hidden + buffer. Use an existing window for the buffer when it's not + hidden. +Files: src/fileio.c + +Patch 5.4.48 +Problem: A paste with the mouse in Insert mode was not repeated exactly the + same with ".". For example, when 'autoindent' is set and pasting + text with leading indent. (Perry) +Solution: Add the CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert + mode, which insert the contents of a register literally. +Files: src/edit.c, src/normal.c, runtime/doc/insert.txt + +Patch 5.4.49 +Problem: When pasting text with [ <MiddleMouse>, the cursor could end up + after the last character of the line. +Solution: Correct the cursor position for the change in indent. +Files: src/ops.c + +Patch 5.4.x1 (note: Replaces patch 5.4.9) +Problem: Win32 GUI: menu hints were never used, because WANT_MENU is not + defined until vim.h is included. +Solution: Move the #ifdef WANT_MENU from where MENUHINTS is defined to where + it is used. +Files: src/gui_w32.c + +Patch 5.4.x2 +Problem: BeOS: When pasting text, one character was moved to the end. +Solution: Re-enable the BeOS code in fill_input_buf(), and fix timing out + with acquire_sem_etc(). (Will Day) +Files: src/os_beos.c, src/ui.c + +Patch 5.4.x3 +Problem: Win32 GUI: When dropping a directory on a running gvim it crashes. +Solution: Avoid using a NULL file name. Also display a message to indicate + that the current directory was changed. +Files: src/gui_w32.c + +Patch 5.4.x4 +Problem: Win32 GUI: Removing an item from the popup menu doesn't work. +Solution: Don't remove the item from the menubar, but from the parent popup + menu. +Files: src/gui_w32.c + +Patch 5.4.x5 (addition to 5.4.34) +Files: src/gui_w32.c + +Patch 5.4.x6 +Problem: Win32: Expanding (dir)name starting with a dot doesn't work. + (McCormack) Only when there is a path before it. +Solution: Fix the check, done before expansion, if the file name pattern + starts with a dot. +Files: src/os_win32.c + +Patch 5.4.x7 +Problem: Win32 GUI: Removing "Edit with Vim" from registry is difficult. +Solution: Add uninstall program to remove the registry keys. It is installed + in the "Add/Remove programs" list for ease of use. + Also: don't set $VIM when the executable is with the runtime files. + Also: Add a text file with a step-by-step description of how to + uninstall Vim for DOS and Windows. +Files: src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt + +Patch 5.4.x8 (addition to 5.4.45) +Files: many + +Patch 5.4.x9 +Problem: Win32 GUI: After executing an external command, focus is not + always regained (when using focus-follows-mouse). +Solution: Add SetFocus() in mch_system(). (Mike Steed) +Files: src/os_win32.c + + +Patch 5.5a.1 +Problem: ":let @* = @:" did not work. The text was not put on the + I clipboard. (Fisher) +Solution: Own the clipboard and put the text on it. +Files: src/ops.c + +Patch 5.5a.2 +Problem: append() did not mark the buffer modified. Marks below the + new line were not adjusted. +Solution: Fix the f_append() function. +Files: src/eval.c + +Patch 5.5a.3 +Problem: Editing compressed ".gz" files doesn't work on non-Unix systems, + because there is no "mv" command. +Solution: Add the rename() function and use it instead of ":!mv". + Also: Disable the automatic jump to the last position, because it + changes the jumplist. +Files: src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim + +Patch 5.5a.4 +Problem: When using whole-line completion in insert mode while the cursor + is in the indent, get "out of memory" error. (Stekrt) +Solution: Don't allocate a negative amount of memory in ins_complete(). +Files: src/edit.c + +Patch 5.5a.5 +Problem: Win32: The 'path' option can hold only up to 256 characters, + because _MAX_PATH is 256. (Robert Webb) +Solution: Use a fixed path length of 1024. +Files: src/os_win32.h + +Patch 5.5a.6 +Problem: Compiling with gcc on Win32, using the Unix Makefile, didn't work. +Solution: Add $(SUFFIX) to all places where an executable is used. Also + pass it to ctags. (Reynolds) +Files: src/Makefile + +Patch 5.5a.7 +Problem: When using "cat | vim -" in an xterm, the xterm version reply + would end up in the file. +Solution: Read the file from stdin before switching the terminal to RAW + mode. Should also avoid problems with programs that use a + specific terminal setting. + Also: when using the GUI, print "Reading from stdin..." in the GUI + window, to give a hint why it doesn't do anything. +Files: src/main.c, src/fileio.c + +Patch 5.5a.8 +Problem: On multi-threaded Solaris, suspending doesn't work. +Solution: Call pause() when the SIGCONT signal was not received after + sending the SIGTSTP signal. (Nagano) +Files: src/os_unix.c + +Patch 5.5a.9 +Problem: 'winaltkeys' could be set to an empty argument, which is illegal. +Solution: Give an error message when doing ":set winaltkeys=". +Files: src/option.c + +Patch 5.5a.10 +Problem: Win32 console: Using ALTGR on a German keyboard to produce "}" + doesn't work, because the 8th bit is set when ALT is pressed. +Solution: Don't set the 8th bit when ALT and CTRL are used. (Leipert) +Files: src/os_win32.c + +Patch 5.5a.11 +Problem: Tcl: Configure always uses tclsh8.0. + Also: Loading a library doesn't work. +Solution: Add "--with-tclsh" configure argument to allow specifying another + name for the tcl shell. + Call Tcl_Init() in tclinit() to make loading libraries work. + (Johannes Zellner) +Files: src/configure.in, src/configure, src/if_tcl.c + +Patch 5.5a.12 +Problem: The "user_commands" feature is called "user-commands". +Solution: Replace "user-commands" with "user_commands". (Kim Sung-bom) + Keep "user-commands" for the has() function, to remain backwards + compatible with 5.4. +Files: src/eval.c, src/version.c + +Patch 5.5a.13 +Problem: OS/2: When $HOME is not defined, "C:/" is used for the viminfo + file. That is very wrong when OS/2 is on another partition. +Solution: Use $VIM for the viminfo file when it is defined, like for MSDOS. + Also: Makefile.os2 didn't depend on os_unix.h. +Files: src/os_unix.h, src/Makefile.os2 + +Patch 5.5a.14 +Problem: Athena, Motif and GTK: The Mouse scroll wheel doesn't work. +Solution: Interpret a click of the wheel as a key press of the <MouseDown> + or <MouseUp> keys. Default behavior is to scroll three lines, or + a full page when Shift is used. +Files: src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c, + src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c, + src/misc2.c, src/normal.c, src/proto/normal.pro, src/vim.h, + runtime/doc/scroll.txt + +Patch 5.5a.15 +Problem: Using CTRL-A in Insert mode doesn't work correctly when the insert + started with the <Insert> key. (Andreas Rohrschneider) +Solution: Replace <Insert> with "i" before setting up the redo buffer. +Files: src/normal.c + +Patch 5.5a.16 +Problem: VMS: GUI does not compile and run. +Solution: Various fixes. (Zoltan Arpadffy) + Moved functions from os_unix.c to ui.c, so that VMS can use them + too: open_app_context(), x11_setup_atoms() and clip_x11* functions. + Made xterm_dpy global, it's now used by ui.c and os_unix.c. + Use gethostname() always, sys_hostname doesn't exist. +Files: src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c, + src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro + +Renamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar() +to avoid symbol length limit of 31 characters. (Steve P. Wall) + +Patch 5.5b.1 +Problem: SASC complains about dead assignments and implicit type casts. +Solution: Removed the dead assignments. Added explicit type casts. +Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c, + src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c, + src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c, + src/screen.c + +Patch 5.5b.2 +Problem: When using "CTRL-O O" in Insert mode, hit <Esc> and then "o" in + another line truncates that line. (Devin Weaver) +Solution: When using a command that starts Insert mode from CTRL-O, reset + "restart_edit" first. This avoids that edit() is called with a + mix of starting a new edit command and restarting a previous one. +Files: src/normal.c + +============================================================================== +VERSION 5.6 *version-5.6* + +Version 5.6 is a bug-fix version of 5.5. + + +Changed *changed-5.6* +------- + +Small changes to OleVim files. (Christian Schaller) + +Inserted "/**/" between patch numbers in src/version.c. This allows for one +line of context, which some versions of patch need. + +Reordered the Syntax menu to avoid long submenus. Removed keyboard shortcuts +for alphabetical items to avoid a clash with fixed items. + + +Added *added-5.6* +----- + +Included Exuberant Ctags version 3.4. (Darren Hiebert) + +OpenWithVim in Python. (Christian Schaller) + +Win32 GUI: gvimext.dll, for the context menu "Edit with Vim" entry. Avoids +the reported problems with the MS Office taskbar. Now it's a Shell Extension. +(Tianmiao Hu) + +New syntax files: +abel Abel (John Cook) +aml Arc Macro Language (Nikki Knuit) +apachestyle Apache-style config file (Christian Hammers) +cf Cold Fusion (Jeff Lanzarotta) +ctrlh files with CTRL-H sequences (Bram Moolenaar) +cupl CUPL (John Cook) +cuplsim CUPL simulation (John Cook) +erlang Erlang (Kresimir Marzic) +gedcom Gedcom (Paul Johnson) +icon Icon (Wendell Turner) +ist MakeIndex style (Peter Meszaros) +jsp Java Server Pages (Rafael Garcia-Suarez) +rcslog Rcslog (Joe Karthauser) +remind Remind (Davide Alberani) +sqr Structured Query Report Writer (Paul Moore) +tads TADS (Amir Karger) +texinfo Texinfo (Sandor Kopanyi) +xpm2 X Pixmap v2 (Steve Wall) + +The 'C' flag in 'cpoptions' can be used to switch off concatenation for +sourced lines. See patch 5.5.013 below. |line-continuation| + +"excludenl" argument for the ":syntax" command. See patch 5.5.032 below. +|:syn-excludenl| + +Implemented |z+| and |z^| commands. See patch 5.5.050 below. + +Vim logo in Corel Draw format. Can be scaled to any resolution. + + +Fixed *fixed-5.6* +----- + +Using this mapping in Select mode, terminated completion: +":vnoremap <C-N> <Esc>a<C-N>" (Benji Fisher) +Ignore K_SELECT in ins_compl_prep(). + +VMS (Zoltan Arpadffy, David Elins): +- ioctl() in pty.c caused trouble, #ifndef VMS added. +- Cut & paste mismatch corrected. +- Popup menu line crash corrected. (Patch 5.5.047) +- Motif directories during open and save as corrected. +- Handle full file names with version numbers. (Patch 5.5.046) +- Directory handling (CD command etc.) +- Corrected file name conversion VMS to Unix and v.v. +- Recovery was not working. +- Terminal and signal handling was outdated compared to os_unix.c. +- Improved os_vms.txt. + +Configure used fprintf() instead of printf() to check for __DATE__ and +__TIME__. (John Card II) + +BeOS: Adjust computing the char_height and char_ascent. Round them up +separately, avoids redrawing artifacts. (Mike Steed) + +Fix a few multi-byte problems in menu_name_skip(), set_reg_ic(), searchc() and +findmatchlimit(). (Taro Muraoka) + +GTK GUI: +- With GTK 1.2.5 and later the scrollbars were not redrawn correctly. +- Adjusted the gtk_form_draw() function. +- SNiFF connection didn't work. +- 'mousefocus' was not working. (Dalecki) +- Some keys were not working with modifiers: Shift-Tab, Ctrl-Space and CTRL-@. + + +Patch 5.5.001 +Problem: Configure in the top directory did not pass on an argument with a + space correctly. For example "./configure --previs="/My home". + (Stephane Chazelas) +Solution: Use '"$@"' instead of '$*' to pass on the arguments. +Files: configure + +Patch 5.5.002 +Problem: Compilation error for using "fds[] & POLLIN". (Jeff Walker) +Solution: Use "fds[].revents & POLLIN". +Files: src/os_unix.c + +Patch 5.5.003 +Problem: The autoconf check for sizeof(int) is wrong on machines where + sizeof(size_t) != sizeof(int). +Solution: Use our own configure check. Also fixes the warning for + cross-compiling. +Files: src/configure.in, src/configure + +Patch 5.5.004 +Problem: On Unix it's not possible to interrupt ":sleep 100". +Solution: Switch terminal to cooked mode while asleep, to allow a SIGINT to + wake us up. But switch off echo, added TMODE_SLEEP. +Files: src/term.h, src/os_unix.c + +Patch 5.5.005 +Problem: When using <f-args> with a user command, an empty argument to the + command resulted in one empty string, while no string was + expected. +Solution: Catch an empty argument and pass no argument to the function. + (Paul Moore) +Files: src/ex_docmd.c + +Patch 5.5.006 +Problem: Python: When platform-dependent files are in another directory + than the platform-independent files it doesn't work. +Solution: Also check the executable directory, and add it to CFLAGS. (Tessa + Lau) +Files: src/configure.in, src/configure + +Patch 5.5.007 (extra) +Problem: Win32 OLE: Occasional crash when exiting while still being used + via OLE. +Solution: Move OleUninitialize() to before deleting the application object. + (Vince Negri) +Files: src/if_ole.cpp + +Patch 5.5.008 +Problem: 10000@@ takes a long time and cannot be interrupted. +Solution: Check for CTRL-C typed while in the loop to push the register. +Files: src/normal.c + +Patch 5.5.009 +Problem: Recent Sequent machines don't link with "-linet". (Kurtis Rader) +Solution: Remove configure check for Sequent. +Files: src/configure.in, src/configure + +Patch 5.5.010 +Problem: Ctags freed a memory block twice when exiting. When out of + memory, a misleading error message was given. +Solution: Update to ctags 3.3.2. Also fixes a few other problems. (Darren + Hiebert) +Files: src/ctags/* + +Patch 5.5.011 +Problem: After "CTRL-V s", the cursor jumps back to the start, while all + other operators leave the cursor on the last changed character. + (Xiangjiang Ma) +Solution: Position cursor on last changed character, if possible. +Files: src/ops.c + +Patch 5.5.012 +Problem: Using CTRL-] in Visual mode doesn't work when the text includes a + space (just where it's useful). (Stefan Bittner) +Solution: Don't escape special characters in a tag name with a backslash. +Files: src/normal.c + +Patch 5.5.013 +Problem: The ":append" and ":insert" commands allow using a leading + backslash in a line. The ":source" command concatenates those + lines. (Heinlein) +Solution: Add the 'C' flag in 'cpoptions' to switch off concatenation. +Files: src/ex_docmd.c, src/option.h, runtime/doc/options.txt, + runtime/filetype.vim, runtime/scripts.vim + +Patch 5.5.014 +Problem: When executing a register with ":@", the ":append" command would + get text lines with a ':' prepended. (Heinlein) +Solution: Remove the ':' characters. +Files: src/ex_docmd.c, src/ex_getln.c, src/globals.h + +Patch 5.5.015 +Problem: When using ":g/pat/p", it's hard to see where the output starts, + the ":g" command is overwritten. Vi keeps the ":g" command. +Solution: Keep the ":g" command, but allow overwriting it with the report + for the number of changes. +Files: src/ex_cmds.c + +Patch 5.5.016 (extra) +Problem: Win32: Using regedit to install Vim in the popup menu requires the + user to confirm this in a dialog. +Solution: Use "regedit /s" to avoid the dialog +Files: src/dosinst.c + +Patch 5.5.017 +Problem: If an error occurs when closing the current window, Vim could get + stuck in the error handling. +Solution: Don't set curwin to NULL when closing the current window. +Files: src/window.c + +Patch 5.5.018 +Problem: Absolute paths in shell scripts do not always work. +Solution: Use /usr/bin/env to find out the path. +Files: runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl, + runtime/tools/shtags.pl + +Patch 5.5.019 +Problem: A function call in 'statusline' stops using ":q" twice from + exiting, when the last argument hasn't been edited. +Solution: Don't decrement quitmore when executing a function. (Madsen) +Files: src/ex_docmd.c + +Patch 5.5.020 +Problem: When the output of CTRL-D completion in the commandline goes all + the way to the last column, there is an empty line. +Solution: Don't add a newline when the cursor wrapped already. (Madsen) +Files: src/ex_getln.c + +Patch 5.5.021 +Problem: When checking if a file name in the tags file is relative, + environment variables were not expanded. +Solution: Expand the file name before checking if it is relative. (Madsen) +Files: src/tag.c + +Patch 5.5.022 +Problem: When setting or resetting 'paste' the ruler wasn't updated. +Solution: Update the status lines when 'ruler' changes because of 'paste'. +Files: src/option.c + +Patch 5.5.023 +Problem: When editing a new file and autocommands change the cursor + position, the cursor was moved back to the first non-white, unless + 'startofline' was reset. +Solution: Keep the new column, just like the line number. +Files: src/ex_cmds.c + +Patch 5.5.024 (extra) +Problem: Win32 GUI: When using confirm() to put up a dialog without a + default button, the dialog would not have keyboard focus. + (Krishna) +Solution: Always set focus to the dialog window. Only set focus to a button + when a default one is specified. +Files: src/gui_w32.c + +Patch 5.5.025 +Problem: When using "keepend" in a syntax region, a contained match that + includes the end-of-line could still force that region to + continue, if there is another contained match in between. +Solution: Check the keepend_level in check_state_ends(). +Files: src/syntax.c + +Patch 5.5.026 +Problem: When starting Vim in a white-on-black xterm, with 'bg' set to + "dark", and then starting the GUI with ":gui", setting 'bg' to + "light" in the gvimrc, the highlighting isn't set. (Tsjokwing) +Solution: Set the highlighting when 'bg' is changed in the gvimrc, even + though full_screen isn't set. +Files: src/option.c + +Patch 5.5.027 +Problem: Unix: os_unix.c doesn't compile when XTERM_CLIP is used but + WANT_TITLE isn't. (Barnum) +Solution: Move a few functions that are used by the X11 title and clipboard + and put another "#if" around it. +Files: src/os_unix.c + +Patch 5.5.028 (extra) +Problem: Win32 GUI: When a file is dropped on Win32 gvim while at the ":" + prompt, the file is edited but the command line is actually still + there, the cursor goes back to command line on the next command. + (Krishna) +Solution: When dropping a file or directory on gvim while at the ":" prompt, + insert the name of the file/directory. Allows using the + file/directory name for any Ex command. +Files: src/gui_w32.c + +Patch 5.5.029 +Problem: "das" at the end of the file didn't delete the last character of + the sentence. +Solution: When there is no character after the sentence, make the operation + inclusive in current_sent(). +Files: src/search.c + +Patch 5.5.030 +Problem: Unix: in os_unix.c, "term_str" is used, which is also defined in + vim.h as a macro. (wuxin) +Solution: Renamed "term_str" to "buf" in do_xterm_trace(). +Files: src/os_unix.c + +Patch 5.5.031 (extra) +Problem: Win32 GUI: When exiting Windows, gvim will leave swap files behind + and will be killed ungracefully. (Krishna) +Solution: Catch the WM_QUERYENDSESSION and WM_ENDSESSION messages and try to + exit gracefully. Allow the user to cancel the shutdown if there + is a changed buffer. +Files: src/gui_w32.c + +Patch 5.5.032 +Problem: Patch 5.5.025 wasn't right. And C highlighting was still not + working correctly for a #define. +Solution: Added "excludenl" argument to ":syntax", to be able not to extend + a containing item when there is a match with the end-of-line. +Files: src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim + +Patch 5.5.033 +Problem: When reading from stdin, a long line in viminfo would mess up the + file message. readfile() uses IObuff for keep_msg, which could be + overwritten by anyone. +Solution: Copy the message from IObuff to msg_buf and set keep_msg to that. + Also change vim_fgets() to not use IObuff any longer. +Files: src/fileio.c + +Patch 5.5.034 +Problem: "gvim -rv" caused a crash. Using 't_Co' before it's set. +Solution: Don't try to initialize the highlighting before it has been + initialized from main(). +Files: src/syntax.c + +Patch 5.5.035 +Problem: GTK with XIM: Resizing with status area was messy, and + ":set guioptions+=b" didn't work. +Solution: Make status area a separate widget, but not a separate window. + (Chi-Deok Hwang) +Files: src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c + +Patch 5.5.036 +Problem: The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to + uncompress a file did not do detection for 'fileformat'. This is + because the filtering is done with 'binary' set. +Solution: Split the filtering into separate write, filter and read commands. +Files: runtime/vimrc_example.vim + +Patch 5.5.037 +Problem: The "U" command didn't mark the buffer as changed. (McCormack) +Solution: Set the 'modified' flag when using "U". +Files: src/undo.c + +Patch 5.5.038 +Problem: When typing a long ":" command, so that the screen scrolls up, + causes the hit-enter prompt, even though the user just typed + return to execute the command. +Solution: Reset need_wait_return if (part of) the command was typed in + getcmdline(). +Files: src/ex_getln.c + +Patch 5.5.039 +Problem: When using a custom status line, "%a" (file # of #) reports the + index of the current window for all windows. +Solution: Pass a window pointer to append_arg_number(), and pass the window + being updated from build_stl_str_hl(). (Stephen P. Wall) +Files: src/buffer.c, src/screen.c, src/proto/buffer.pro + +Patch 5.5.040 +Problem: Multi-byte: When there is some error in xim_real_init(), it can + close XIM and return. After this there can be a segv. +Solution: Test "xic" for being non-NULL, don't set "xim" to NULL. Also try + to find more matches for supported styles. (Sung-Hyun Nam) +Files: src/multbyte.c + +Patch 5.5.041 +Problem: X11 GUI: CTRL-_ requires the SHIFT key only on some machines. +Solution: Translate CTRL-- to CTRL-_. (Robert Webb) +Files: src/gui_x11.c + +Patch 5.5.042 +Problem: X11 GUI: keys with ALT were assumed to be used for the menu, even + when the menu has been disabled by removing 'm' from 'guioptions'. +Solution: Ignore keys with ALT only when gui.menu_is_active is set. (Raf) +Files: src/gui_x11.c + +Patch 5.5.043 +Problem: GTK: Handling of fontset fonts was not right when 'guifontset' + contains exactly 14 times '-'. +Solution: Avoid setting fonts when working with a fontset. (Sung-Hyun Nam) +Files: src/gui_gtk_x11.c + +Patch 5.5.044 +Problem: pltags.pl contains an absolute path "/usr/local/bin/perl". That + might not work everywhere. +Solution: Use "/usr/bin/env perl" instead. +Files: runtime/tools/pltags.pl + +Patch 5.5.045 +Problem: Using "this_session" variable does not work, requires preceding it + with "v:". Default filename for ":mksession" isn't mentioned + in the docs. (Fisher) +Solution: Support using "this_session" to be backwards compatible. +Files: src/eval.c, runtime/doc/options.txt + +Patch 5.5.046 (extra) +Problem: VMS: problems with path and filename. +Solution: Truncate file name at last ';', etc. (Zoltan Arpadffy) +Files: src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c, + src/proto/os_vms.pro + +Patch 5.5.047 +Problem: VMS: Crash when using the popup menu +Solution: Turn the #define MENU_MODE_CHARS into an array. (Arpadffy) +Files: src/structs.h, src/menu.c + +Patch 5.5.048 +Problem: HP-UX 11: Compiling doesn't work, because both string.h and + strings.h are included. (Squassabia) +Solution: The configure test for including both string.h and strings.h + must include <Xm/Xm.h> first, because it causes problems. +Files: src/configure.in, src/configure, src/config.h.in + +Patch 5.5.049 +Problem: Unix: When installing Vim, the protection bits of files might be + influenced by the umask. +Solution: Add $(FILEMOD) to Makefile. (Shetye) +Files: src/Makefile + +Patch 5.5.050 +Problem: "z+" and "z^" commands are missing. +Solution: Implemented "z+" and "z^". +Files: src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt + +Patch 5.5.051 +Problem: Several Unix systems have a problem with the optimization limits + check in configure. +Solution: Removed the configure check, let the user add it manually in + Makefile or the environment. +Files: src/configure.in, src/configure, src/Makefile + +Patch 5.5.052 +Problem: Crash when using a cursor key at the ATTENTION prompt. (Alberani) +Solution: Ignore special keys at the console dialog. Also ignore characters + > 255 for other uses of tolower() and toupper(). +Files: src/menu.c, src/message.c, src/misc2.c + +Patch 5.5.053 +Problem: Indenting is wrong after a function when 'cino' has "fs". Another + problem when 'cino' has "{s". +Solution: Put line after closing "}" of a function at the left margin. + Apply ind_open_extra in the right way after a '{'. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 5.5.054 +Problem: Unix: ":e #" doesn't work if the alternate file name contains a + space or backslash. (Hudacek) +Solution: When replacing "#", "%" or other items that stand for a file name, + prepend a backslash before special characters. +Files: src/ex_docmd.c + +Patch 5.5.055 +Problem: Using "<C-V>$r-" in blockwise Visual mode replaces one character + beyond the end of the line. (Zivkov) +Solution: Only replace existing characters. +Files: src/ops.c + +Patch 5.5.056 +Problem: After "z20<CR>" messages were printed at the old command line + position once. (Veselinovic) +Solution: Set msg_row and msg_col when changing cmdline_row in + win_setheight(). +Files: src/window.c + +Patch 5.5.057 +Problem: After "S<Esc>" it should be possible to restore the line with "U". + (Veselinovic) +Solution: Don't call u_clearline() in op_delete() when changing only one + line. +Files: src/ops.c + +Patch 5.5.058 +Problem: Using a long search pattern and then "n" causes the hit-enter + prompt. (Krishna) +Solution: Truncate the echoed pattern, like other messages. Moved code for + truncating from msg_attr() to msg_strtrunc(). +Files: src/message.c, src/proto/message.pro, src/search.c + +Patch 5.5.059 +Problem: GTK GUI: When $term is invalid, using "gvim" gives an error + message, even though $term isn't really used. (Robbins) +Solution: When the GUI is about to start, skip the error messages for a + wrong $term. +Files: src/term.c + +Patch 5.5.060 (extra) +Problem: Dos 32 bit: When a directory in 'backupdir' doesn't exist, ":w" + causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf) +Solution: The code to work around a LFN bug in Windows 95 doesn't handle a + non-existing target name correctly. When renaming fails, make + sure the file has its original name. Also do this for the Win32 + version, although it's unlikely that it runs into this problem. +Files: src/os_msdos.c, src/os_win32.c + +Patch 5.5.061 +Problem: When using "\:" in a modeline, the backslash is included in the + option value. (Mohsin) +Solution: Remove one backslash before the ':' in a modeline. +Files: src/buffer.c, runtime/doc/options.txt + +Patch 5.5.062 (extra) +Problem: Win32 console: Temp files are created in the root of the current + drive, which may be read-only. (Peterson) +Solution: Use the same mechanism of the GUI version: Use $TMP, $TEMP or the + current directory. Cleaned up vim_tempname() a bit. +Files: src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt + +Patch 5.5.063 +Problem: When using whole-line completion in Insert mode, 'cindent' is + applied, even after changing the indent of the line. +Solution: Don't reindent the completed line after inserting/removing indent. + (Robert Webb) +Files: src/edit.c + +Patch 5.5.064 +Problem: has("sniff") doesn't work correctly. +Solution: Return 1 when Vim was compiled with the +sniff feature. (Pruemmer) +Files: src/eval.c + +Patch 5.5.065 +Problem: When dropping a file on Vim, the 'shellslash' option is not + effective. (Krishna) +Solution: Fix the slashes in the dropped file names according to + 'shellslash'. +Files: src/ex_docmd.c, runtime/doc/options.txt + +Patch 5.5.066 +Problem: For systems with backslash in file name: Setting a file name + option to a value starting with "\\machine" removed a backslash. +Solution: Keep the double backslash for "\\machine", but do change + "\\\\machine" to "\\machine" for backwards compatibility. +Files: src/option.c, runtime/doc/options.txt + +Patch 5.5.067 +Problem: With 'hlsearch' set, the pattern "\>" doesn't highlight the first + match in a line. (Benji Fisher) +Solution: Fix highlighting an empty match. Also highlight the first + character in an empty line for "$". +Files: src/screen.c + +Patch 5.5.068 +Problem: Crash when a ":while" is used with an argument that has an error. + (Sylvain Viart) +Solution: Was using an uninitialized index in the cs_line[] array. The + crash only happened when the index was far off. Made sure the + uninitialized index isn't used. +Files: src/ex_docmd.c + +Patch 5.5.069 +Problem: Shifting lines in blockwise Visual mode didn't set the 'modified' + flag. +Solution: Do set the 'modified' flag. +Files: src/ops.c + +Patch 5.5.070 +Problem: When editing a new file, creating that file outside of Vim, then + editing it again, ":w" still warns for overwriting an existing + file. (Nam) +Solution: The BF_NEW flag in the "b_flags" field wasn't cleared properly. +Files: src/buffer.c, src/fileio.c + +Patch 5.5.071 +Problem: Using a matchgroup in a ":syn region", which is the same syntax + group as the region, didn't stop a contained item from matching in + the start pattern. +Solution: Also push an item on the stack when the syntax ID of the + matchgroup is the same as the syntax ID of the region. +Files: src/syntax.c + +Patch 5.5.072 (extra) +Problem: Dos 32 bit: When setting 'columns' to a too large value, Vim may + crash, and the DOS console too. +Solution: Check that the value of 'columns' isn't larger than the number of + columns that the BIOS reports. +Files: src/os_msdos.c, src/proto/os_msdos.pro, src/option.c + +Patch 5.5.073 (extra) +Problem: Win 32 GUI: The Find and Find/Replace dialogs didn't show the + "match case" checkbox. The Find/Replace dialog didn't handle the + "match whole word" checkbox. +Solution: Support the "match case" and "match whole word" checkboxes. +Files: src/gui_w32.c + +Patch 5.6a.001 +Problem: Using <C-End> with a count doesn't work like it does with "G". + (Benji Fisher) +Solution: Accept a count for <C-End> and <C-Home>. +Files: src/normal.c + +Patch 5.6a.002 +Problem: The script for conversion to HTML was an older version. +Solution: Add support for running 2html.vim on a color terminal. +Files: runtime/syntax/2html.vim + +Patch 5.6a.003 +Problem: Defining a function inside a function didn't give an error + message. A missing ":endfunction" doesn't give an error message. +Solution: Allow defining a function inside a function. +Files: src/eval.c, runtime/doc/eval.txt + +Patch 5.6a.004 +Problem: A missing ":endwhile" or ":endif" doesn't give an error message. + (Johannes Zellner) +Solution: Check for missing ":endwhile" and ":endif" in sourced files. + Add missing ":endif" in file selection macros. +Files: src/ex_docmd.c, runtime/macros/file_select.vim + +Patch 5.6a.005 +Problem: 'hlsearch' was not listed alphabetically. The value of 'toolbar' + was changed when 'compatible' is set. +Solution: Moved entry of 'hlsearch' in options[] table down. + Don't reset 'toolbar' option to the default value when + 'compatible' is set. +Files: src/option.c + +Patch 5.6a.006 +Problem: Using a backwards range inside ":if 0" gave an error message. +Solution: Don't complain about a range when it is not going to be used. + (Stefan Roemer) +Files: src/ex_docmd.c + +Patch 5.6a.007 +Problem: ":let" didn't show internal Vim variables. (Ron Aaron) +Solution: Do show ":v" variables for ":let" and ":let v:name". +Files: src/eval.c + +Patch 5.6a.008 +Problem: Selecting a syntax from the Syntax menu gives an error message. +Solution: Replace "else if" in SetSyn() with "elseif". (Ronald Schild) +Files: runtime/menu.vim + +Patch 5.6a.009 +Problem: When compiling with +extra_search but without +syntax, there is a + compilation error in screen.c. (Axel Kielhorn) +Solution: Adjust the #ifdef for declaring and initializing "line" in + win_line(). Also solve compilation problem when +statusline is + used without +eval. Another one when +cmdline_compl is used + without +eval. +Files: src/screen.c, src/misc2.c + +Patch 5.6a.010 +Problem: In a function, ":startinsert!" does not append to the end of the + line if a ":normal" command was used to move the cursor. (Fisher) +Solution: Reset "w_set_curswant" to avoid that w_curswant is changed again. +Files: src/ex_docmd.c + +Patch 5.6a.011 (depends on 5.6a.004) +Problem: A missing ":endif" or ":endwhile" in a function doesn't give an + error message. +Solution: Give that error message. +Files: src/ex_docmd.c + +Patch 5.6a.012 (depends on 5.6a.008) +Problem: Some Syntax menu entries caused a hit-enter prompt. +Solution: Call a function to make the command shorter. Also rename a few + functions to avoid name clashes. +Files: runtime/menu.vim + +Patch 5.6a.013 +Problem: Command line completion works different when another completion + was done earlier. (Johannes Zellner) +Solution: Reset wim_index when starting a new completion. +Files: src/ex_getln.c + +Patch 5.6a.014 +Problem: Various warning messages when compiling and running lint with + different combinations of features. +Solution: Fix the warning messages. +Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c, + src/option.c, src/screen.c, src/search.c, src/syntax.c, + src/feature.h, src/globals.h + +Patch 5.6a.015 +Problem: The vimtutor command doesn't always know the value of $VIMRUNTIME. +Solution: Let Vim expand $VIMRUNTIME, instead of the shell. +Files: src/vimtutor + +Patch 5.6a.016 (extra) +Problem: Mac: Window size is restricted when starting. Cannot drag the + window all over the desktop. +Solution: Get real screen size instead of assuming 640x400. Do not use a + fixed number for the drag limits. (Axel Kielhorn) +Files: src/gui_mac.c + +Patch 5.6a.017 +Problem: The "Paste" entry in popup menu for Visual, Insert and Cmdline + mode is in the wrong position. (Stol) +Solution: Add priority numbers for all Paste menu entries. +Files: runtime/menu.vim + +Patch 5.6a.018 +Problem: GTK GUI: submenu priority doesn't work. + Help dialog could be destroyed too soon. + When closing a dialog window (e.g. the "ATTENTION" one), Vim would + just hang. + When GTK theme is changed, Vim doesn't adjust to the new colors. + Argument for ":promptfind" isn't used. +Solution: Fixed the mentioned problems. + Made the dialogs look&feel nicer. + Moved functions to avoid the need for a forward declaration. + Fixed reentrancy of the file browser dialog. + Added drag&drop support for GNOME. + Init the text for the Find/replace dialog from the last used + search string. Set "match whole word" toggle button correctly. + Made repeat rate for drag outside of window depend on the + distance from the window. (Marcin Dalecki) + Made the drag in Visual mode actually work. + Removed recursiveness protection from gui_mch_get_rgb(), it might + cause more trouble than it solves. +Files: src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c, + src/proto/ui.pro, src/misc2.c + +Patch 5.6a.019 +Problem: When trying to recover through NFS, which uses a large block size, + Vim might think the swap file is empty, because mf_blocknr_max is + zero. (Scott McDermott) +Solution: When computing the number of blocks of the file in mf_open(), + round up instead of down. +Files: src/memfile.c + +Patch 5.6a.020 +Problem: GUI GTK: Could not set display for gvim. +Solution: Add "-display" and "--display" arguments. (Marcin Dalecki) +Files: src/gui_gtk_x11.c + +Patch 5.6a.021 +Problem: Recovering still may not work when the block size of the device + where the swap file is located is larger than 4096. +Solution: Read block 0 with the minimal block size. +Files: src/memline.c, src/memfile.c, src/vim.h + +Patch 5.6a.022 (extra) +Problem: Win32 GUI: When an error in the vimrc causes a dialog to pop up + (e.g., for an existing swap file), Vim crashes. (David Elins) +Solution: Before showing a dialog, open the main window. +Files: src/gui_w32.c + +Patch 5.6a.023 +Problem: Using expand("%:gs??/?") causes a crash. (Ron Aaron) +Solution: Check for running into the end of the string in do_string_sub(). +Files: src/eval.c + +Patch 5.6a.024 +Problem: Using an autocommand to delete a buffer when leaving it can cause + a crash when jumping to a tag. (Franz Gorkotte) +Solution: In do_tag(), store tagstacklen before jumping to another buffer. + Check tagstackidx after jumping to another buffer. + Add extra check in win_split() if tagname isn't NULL. +Files: src/tag.c, src/window.c + +Patch 5.6a.025 (extra) +Problem: Win32 GUI: The tables for toupper() and tolower() are initialized + too late. (Mike Steed) +Solution: Move the initialization to win32_init() and call it from main(). +Files: src/main.c, src/os_w32.c, src/proto/os_w32.pro + +Patch 5.6a.026 +Problem: When the SNiFF connection is open, shell commands hang. (Pruemmer) +Solution: Skip a second wait() call if waitpid() already detected that the + child has exited. +Files: src/os_unix.c + +Patch 5.6a.027 (extra) +Problem: Win32 GUI: The "Edit with Vim" popup menu entry causes problems + for the Office toolbar. +Solution: Use a shell extension dll. (Tianmiao Hu) + Added it to the install and uninstal programs, replaces the old + "Edit with Vim" menu registry entries. +Files: src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt + +Patch 5.6a.028 (extra) +Problem: Win32 GUI: Dialogs and tear-off menus can't handle multi-byte + characters. +Solution: Adjust nCopyAnsiToWideChar() to handle multi-byte characters + correctly. +Files: src/gui_w32.c + +============================================================================== +VERSION 5.7 *version-5.7* + +Version 5.7 is a bug-fix version of 5.6. + +Changed *changed-5.7* +------- + +Renamed src/INSTALL.mac to INSTALL_mac.txt to avoid it being recognized with a +wrong file type. Also renamed src/INSTALL.amiga to INSTALL_ami.txt. + + +Added *added-5.7* +----- + +New syntax files: +stp Stored Procedures (Jeff Lanzarotta) +snnsnet, snnspat, snnsres SNNS (Davide Alberani) +mel MEL (Robert Minsk) +ruby Ruby (Mirko Nasato) +tli TealInfo (Kurt W. Andrews) +ora Oracle config file (Sandor Kopanyi) +abaqus Abaqus (Carl Osterwisch) +jproperties Java Properties (Simon Baldwin) +apache Apache config (Allan Kelly) +csp CSP (Jan Bredereke) +samba Samba config (Rafael Garcia-Suarez) +kscript KDE script (Thomas Capricelli) +hb Hyper Builder (Alejandro Forero Cuervo) +fortran Fortran (rewritten) (Ajit J. Thakkar) +sml SML (Fabrizio Zeno Cornelli) +cvs CVS commit (Matt Dunford) +aspperl ASP Perl (Aaron Hope) +bc BC calculator (Vladimir Scholtz) +latte Latte (Nick Moffitt) +wml WML (Gerfried Fuchs) + +Included Exuberant ctags 3.5.1. (Darren Hiebert) + +"display" and "fold" arguments for syntax items. For future extension, they +are ignored now. + +strftime() function for the Macintosh. + +macros/explorer.vim: A file browser script (M A Aziz Ahmed) + + +Fixed *fixed-5.7* +----- + +The 16 bit MS-DOS version is now compiled with Bcc 3.1 instead of 4.0. The +executable is smaller. + +When a "make test" failed, the output file was lost. Rename it to +test99.failed to be able to see what went wrong. + +After sourcing bugreport.vim, it's not clear that bugreport.txt has been +written in the current directory. Edit bugreport.txt to avoid that. + +Adding IME support when using Makefile.w32 didn't work. (Taro Muraoka) + +Win32 console: Mouse drags were passed on even when the mouse didn't move. + +Perl interface: In Buffers(), type of argument to SvPV() was int, should be +STRLEN. (Tony Leneis) + +Problem with prototype for index() on AIX 4.3.0. Added check for _AIX43 in +os_unix.h. (Jake Hamby) + +Mappings in mswin.vim could break when some commands are mapped. Add "nore" +to most mappings to avoid re-mapping. + +modify_fname() made a copy of a file name for ":p" when it already was a full +path name, which is a bit slow. + +Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags, +to avoid depending on $PATH. Fixed "make clean". + +Many fixes to Macintosh specific parts: (mostly by Dany StAmant) +- Only one Help menu. +- No more crash when removing a menu item. +- Support as External Editor for Codewarrior (still some little glitches). +- Popup menu support. +- Fixed crash when pasting after application switch. +- Color from rgb.txt properly displayed. +- 'isprint' default includes all chars above '~'. (Axel Kielhorn) +- mac_expandpath() was leaking memory. +- Add digraphs table. (Axel Kielhorn) +- Multi-byte support: (Kenichi Asai) + Switch keyscript when going in/out of Insert mode. + Draw multi-byte character correctly. + Don't use mblen() but highest bit of char to detect multi-byte char. + Display value of multi-byte in statusline (also for other systems). +- mouse button was not initialized properly to MOUSE_LEFT when + USE_CTRLCLICKMENU not defined. +- With Japanese SJIS characters: Make "w", "b", and "e" work + properly. (Kenichi Asai) +- Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx. + +Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below) +- Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the + tests. +- Various fixes. +- Set 'undolevels' to 1000 by default. +- Made mch_settitle() equivalent to the one in os_unix.c. + +RiscOS: A few prototypes for os_riscos.c were outdated. Generate prototypes +automatically. + + +Previously released patches: + +Patch 5.6.001 +Problem: When using "set bs=0 si cin", Inserting "#<BS>" or "}<BS>" which + reduces the indent doesn't delete the "#" or "}". (Lorton) +Solution: Adjust ai_col in ins_try_si(). +Files: src/edit.c + +Patch 5.6.002 +Problem: When using the vim.vim syntax file, a comment with all uppercase + characters causes a hang. +Solution: Adjust pattern for vimCommentTitle (Charles Campbell) +Files: runtime/syntax/vim.vim + +Patch 5.6.003 +Problem: GTK GUI: Loading a user defined toolbar bitmap gives a warning + about the colormap. Probably because the window has not been + opened yet. +Solution: Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file. + (Keith Radebaugh) +Files: src/gui_gtk.c + +Patch 5.6.004 (extra) +Problem: Win32 GUI with IME: When setting 'guifont' to "*", the font + requester appears twice. +Solution: In gui_mch_init_font() don't call get_logfont() but copy + norm_logfont from fh. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 5.6.005 +Problem: When 'winminheight' is zero, CTRL-W - with a big number causes a + crash. (David Kotchan) +Solution: Check for negative window height in win_setheight(). +Files: src/window.c + +Patch 5.6.006 +Problem: GTK GUI: Bold font cannot always be used. Memory is freed too + early in gui_mch_init_font(). +Solution: Move call to g_free() to after where sdup is used. (Artem Hodyush) +Files: src/gui_gtk_x11.c + +Patch 5.6.007 (extra) +Problem: Win32 IME: Font is not changed when screen font is changed. And + IME composition window does not trace the cursor. +Solution: Initialize IME font. When cursor is moved, set IME composition + window with ImeSetCompositionWindow(). Add call to + ImmReleaseContext() in several places. (Taro Muraoka) +Files: src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro + +Patch 5.6.008 (extra) +Problem: Win32: When two files exist with the same name but different case + (through NFS or Samba), fixing the file name case could cause the + wrong one to be edited. +Solution: Prefer a perfect match above a match while ignoring case in + fname_case(). (Flemming Madsen) +Files: src/os_win32.c + +Patch 5.6.009 (extra) +Problem: Win32 GUI: Garbage in Windows Explorer help line when selecting + "Edit with Vim" popup menu entry. +Solution: Only return the help line when called with the GCS_HELPTEXT flag. + (Tianmiao Hu) +Files: GvimExt/gvimext.cpp + +Patch 5.6.010 +Problem: A file name which contains a TAB was not read correctly from the + viminfo file and the ":ls" listing was not aligned properly. +Solution: Parse the buffer list lines in the viminfo file from the end + backwards. Count a Tab for two characters to align the ":ls" list. +Files: src/buffer.c + +Patch 5.6.011 +Problem: When 'columns' is huge (using a tiny font) and 'statusline' is + used, Vim can crash. +Solution: Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin) +Files: src/screen.c + +Patch 5.6.012 +Problem: When using "zsh" for /bin/sh, toolcheck may hang until "exit" is + typed. (Kuratczyk) +Solution: Add "-c exit" when checking for the shell version. +Files: src/toolcheck + +Patch 5.6.013 +Problem: Multibyte char in tooltip is broken. +Solution: Consider multibyte char in replace_termcodes(). (Taro Muraoka) +Files: src/term.c + +Patch 5.6.014 +Problem: When cursor is at the end of line and the character under cursor + is a multibyte character, "yl" doesn't yank 1 multibyte-char. + (Takuhiro Nishioka) +Solution: Recognize a multibyte-char at end-of-line correctly in oneright(). + (Taro Muraoka) + Also: make "+quickfix" in ":version" output appear alphabetically. +Files: src/edit.c + +Patch 5.6.015 +Problem: New xterm delete key sends <Esc>[3~ by default. +Solution: Added <kDel> and <kIns> to make the set of keypad keys complete. +Files: src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c, + src/misc2.c, src/normal.c, src/os_unix.c, src/term.c + +Patch 5.6.016 +Problem: When deleting a search string from history from inside a mapping, + another entry is deleted too. (Benji Fisher) +Solution: Reset last_maptick when deleting the last entry of the search + history. Also: Increment maptick when starting a mapping from + typed characters to avoid a just added search string being + overwritten or removed from history. +Files: src/ex_getln.c, src/getchar.c + +Patch 5.6.017 +Problem: ":s/e/\^M/" should replace an "e" with a CTRL-M, not split the + line. (Calder) +Solution: Replace the backslash with a CTRL-V internally. (Stephen P. Wall) +Files: src/ex_cmds.c + +Patch 5.6.018 +Problem: ":help [:digit:]" takes a long time to jump to the wrong place. +Solution: Insert a backslash to avoid the special meaning of '[]'. +Files: src/ex_cmds.c + +Patch 5.6.019 +Problem: "snd.c", "snd.java", etc. were recognized as "mail" filetype. +Solution: Make pattern for mail filetype more strict. +Files: runtime/filetype.vim + +Patch 5.6.020 (extra) +Problem: The DJGPP version eats processor time (Walter Briscoe). +Solution: Call __dpmi_yield() in the busy-wait loop. +Files: src/os_msdos.c + +Patch 5.6.021 +Problem: When 'selection' is "exclusive", a double mouse click in Insert + mode doesn't select last char in line. (Lutz) +Solution: Allow leaving the cursor on the NUL past the line in this case. +Files: src/edit.c + +Patch 5.6.022 +Problem: ":e \~<Tab>" expands to ":e ~\$ceelen", which doesn't work. +Solution: Re-insert the backslash before the '~'. +Files: src/ex_getln.c + +Patch 5.6.023 (extra) +Problem: Various warnings for the Ming compiler. +Solution: Changes to avoid the warnings. (Bill McCarthy) +Files: src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c, + src/syntax.c, src/vim.rc + +Patch 5.6.024 (extra) +Problem: Win32 console: Entering CTRL-_ requires the shift key. (Kotchan) +Solution: Specifically catch keycode 0xBD, like the GUI. +Files: src/os_win32.c + +Patch 5.6.025 +Problem: GTK GUI: Starting the GUI could be interrupted by a SIGWINCH. + (Nils Lohner) +Solution: Repeat the read() call to get the gui_in_use value when + interrupted by a signal. +Files: src/gui.c + +Patch 5.6.026 (extra) +Problem: Win32 GUI: Toolbar bitmaps are searched for in + $VIMRUNTIME/bitmaps, while GTK looks in $VIM/bitmaps. (Keith + Radebaugh) +Solution: Use $VIM/bitmaps for both, because these are not part of the + distribution but defined by the user. +Files: src/gui_w32.c, runtime/doc/gui.txt + +Patch 5.6.027 +Problem: TCL: Crash when using a Tcl script (reported for Win32). +Solution: Call Tcl_FindExecutable() in main(). (Brent Fulgham) +Files: src/main.c + +Patch 5.6.028 +Problem: Xterm patch level 126 sends codes for mouse scroll wheel. + Fully works with xterm patch level 131. +Solution: Recognize the codes for button 4 (0x60) and button 5 (0x61). +Files: src/term.c + +Patch 5.6.029 +Problem: GTK GUI: Shortcut keys cannot be used for a dialog. (Johannes + Zellner) +Solution: Add support for shortcut keys. (Marcin Dalecki) +Files: src/gui_gtk.c + +Patch 5.6.030 +Problem: When closing a window and 'ea' is set, Vim can crash. (Yasuhiro + Matsumoto) +Solution: Set "curbuf" to a valid value in win_close(). +Files: src/window.c + +Patch 5.6.031 +Problem: Multi-byte: When a double-byte character ends in CSI, Vim waits + for another character to be typed. +Solution: Recognize the CSI as the second byte of a character and don't wait + for another one. (Yasuhiro Matsumoto) +Files: src/getchar.c + +Patch 5.6.032 +Problem: Functions with an argument that is a line number don't all accept + ".", "$", etc. (Ralf Arens) +Solution: Add get_art_lnum() and use it for setline(), line2byte() and + synID(). +Files: src/eval.c + +Patch 5.6.033 +Problem: Multi-byte: "f " sometimes skips to the second space. (Sung-Hyun + Nam) +Solution: Change logic in searchc() to skip trailing byte of a double-byte + character. + Also: Ask for second byte when searching for double-byte + character. (Park Chong-Dae) +Files: src/search.c + +Patch 5.6.034 (extra) +Problem: Compiling with Borland C++ 5.5 fails on tolower() and toupper(). +Solution: Use TO_LOWER() and TO_UPPER() instead. Also adjust the Makefile + to make using bcc 5.5 easier. +Files: src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor + +Patch 5.6.035 +Problem: Listing the"+comments" feature in the ":version" output depended + on the wrong ID. (Stephen P. Wall) +Solution: Change "CRYPTV" to "COMMENTS". +Files: src/version.c + +Patch 5.6.036 +Problem: GTK GUI: Copy/paste text doesn't work between gvim and Eterm. +Solution: Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang) +Files: src/gui_gtk_x11.c + +Patch 5.6.037 +Problem: Multi-byte: Can't use "f" command with multi-byte character in GUI. +Solution: Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam) +Files: src/gui_gtk_x11.c, src/multbyte.c + +Patch 5.6.038 +Problem: Multi-clicks in GUI are interpreted as a mouse wheel click. When + 'ttymouse' is "xterm" a mouse click is interpreted as a mouse + wheel click. +Solution: Don't recognize the mouse wheel in check_termcode() in the GUI. + Use 0x43 for a mouse drag in do_xterm_trace(), not 0x63. +Files: src/term.c, src/os_unix.c + +Patch 5.6.039 +Problem: Motif GUI under KDE: When trying to logout, Vim hangs up the + system. (Hermann Rochholz) +Solution: When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND + property of the window to let the session manager know we finished + saving ourselves. +Files: src/gui_x11.c + +Patch 5.6.040 +Problem: When using ":s" command, matching the regexp is done twice. +Solution: After copying the matched line, adjust the pointers instead of + finding the match again. (Loic Grenie) Added vim_regnewptr(). +Files: src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro + +Patch 5.6.041 +Problem: GUI: Athena, Motif and GTK don't give more than 10 dialog buttons. +Solution: Remove the limit on the number of buttons. + Also support the 'v' flag in 'guioptions'. + For GTK: Center the buttons. +Files: src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c + +Patch 5.6.042 +Problem: When doing "vim -u vimrc" and vimrc contains ":q", the cursor in + the terminal can remain off. +Solution: Call cursor_on() in mch_windexit(). +Files: src/os_unix.c + +Patch 5.6.043 (extra) +Problem: Win32 GUI: When selecting guifont with the dialog, 'guifont' + doesn't include the bold or italic attributes. +Solution: Append ":i" and/or ":b" to 'guifont' in gui_mch_init_font(). +Files: src/gui_w32.c + +Patch 5.6.044 (extra) +Problem: MS-DOS and Windows: The line that dosinst.exe appends to + autoexec.bat to set PATH is wrong when Vim is in a directory with + an embedded space. +Solution: Use double quotes for the value when there is an embedded space. +Files: src/dosinst.c + +Patch 5.6.045 (extra) (fixed version) +Problem: VMS: Various small problems. +Solution: Many small changes. (Zoltan Arpadffy) + File name modifier ":h" keeps the path separator. + File name modifier ":e" also removes version. + Compile with MAX_FEAT by default. + When checking for autocommands ignore version in file name. + Be aware of file names being case insensitive. + Added vt320 builtin termcap. + Be prepared for an empty default_vim_dir. +Files: runtime/gvimrc_example.vim, runtime/vimrc_example.vim, + runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c, + src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c, + src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c, + src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c + +Patch 5.6.046 +Problem: Systems with backslash in file name: With 'shellslash' set, "vim + */*.c" only uses a slash for the first file name. (Har'El) +Solution: Fix slashes in file name arguments after reading the vimrc file. +Files: src/option.c + +Patch 5.6.047 +Problem: $CPPFLAGS is not passed on to ctags configure. +Solution: Add it. (Walter Briscoe) +Files: src/config.mk.in, src/Makefile + +Patch 5.6.048 +Problem: CTRL-R in Command-line mode is documented to insert text as typed, + but inserts text literally. +Solution: Make CTRL-R insert text as typed, use CTRL-R CTRL-R to insert + literally. This is consistent with Insert mode. But characters + that end Command-line mode are inserted literally. +Files: runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c, + src/ops.c, src/proto/ops.pro + +Patch 5.6.049 +Problem: Documentation for [!] after ":ijump" is wrong way around. (Benji + Fisher) +Solution: Fix the documentation. Also improve the code to check for a match + after a /* */ comment. +Files: runtime/doc/tagsearch.txt, src/search.c + +Patch 5.6.050 +Problem: Replacing is wrong when replacing a single-byte char with + double-byte char or the other way around. +Solution: Shift the text after the character when it is replaced. + (Yasuhiro Matsumoto) +Files: src/normal.c, src/misc1.c + +Patch 5.6.051 +Problem: ":tprev" and ":tnext" don't give an error message when trying to + go before the first or beyond the last tag. (Robert Webb) +Solution: Added error messages. Also: Delay a second when a file-read + message is going to overwrite an error message, otherwise it won't + be seen. +Files: src/fileio.c, src/tag.c + +Patch 5.6.052 +Problem: Multi-byte: When an Ex command has a '|' or '"' as a second byte, + it terminates the command. +Solution: Skip second byte of multi-byte char when checking for '|' and '"'. + (Asai Kenichi) +Files: src/ex_docmd.c + +Patch 5.6.053 +Problem: CTRL-] doesn't work on a tag that contains a '|'. (Cesar Crusius) +Solution: Escape '|', '"' and '\' in tag names when using CTRL-] and also + for command-line completion. +Files: src/ex_getln.c, src/normal.c + +Patch 5.6.054 +Problem: When using ":e" and ":e #" the cursor is put in the first column + when 'startofline' is set. (Cordell) +Solution: Use the last known column when 'startofline' is set. + Also, use ECMD_LAST more often to simplify the code. +Files: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro + +Patch 5.6.055 +Problem: When 'statusline' only contains a text without "%" and doesn't fit + in the window, Vim crashes. (Ron Aaron) +Solution: Don't use the pointer for the first item if there is no item. +Files: src/screen.c + +Patch 5.6.056 (extra) +Problem: MS-DOS: F11 and F12 don't work when 'bioskey' is set. +Solution: Use enhanced keyboard functions. (Vince Negri) + Detect presence of enhanced keyboard and set bioskey_read and + bioskey_ready. +Files: src/os_msdos.c + +Patch 5.6.057 (extra) +Problem: Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off + menus. +Solution: Use system font instead of a fixed font. (Matsumoto, Muraoka) +Files: src/gui_w32.c + +Patch 5.6.058 +Problem: When the 'a' flag is not in 'guioptions', non-Windows systems + copy Visually selected text to the clipboard/selection on a yank + or delete command anyway. On Windows it isn't done even when the + 'a' flag is included. +Solution: Respect the 'a' flag in 'guioptions' on all systems. +Files: src/normal.c + +Patch 5.6.059 (extra) +Problem: When moving the cursor over italic text and the characters spill + over to the cell on the right, that spill-over is deleted. + Noticed in the Win32 GUI, can happen on other systems too. +Solution: Redraw italic text starting from a blank, like this is already + done for bold text. (Vince Negri) +Files: src/gui.c, src/gui.h, src/gui_w32.c + +Patch 5.6.060 +Problem: Some bold characters spill over to the cell on the left, that + spill-over can remain sometimes. +Solution: Redraw a character when the next character was bold and needs + redrawing. (Robert Webb) +Files: src/screen.c + +Patch 5.6.061 +Problem: When xterm sends 8-bit controls, recognizing the version response + doesn't work. + When using CSI instead of <Esc>[ for the termcap color codes, + using 16 colors doesn't work. (Neil Bird) +Solution: Also accept CSI in place of <Esc>[ for the version string. + Also check for CSI when handling colors 8-15 in term_color(). + Use CSI for builtin xterm termcap entries when 'term' contains + "8bit". +Files: runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c, + src/os_unix.c, src/proto/option.pro, src/proto/term.pro + +Patch 5.6.062 +Problem: The documentation says that setting 'smartindent' doesn't have an + effect when 'cindent' is set, but it does make a difference for + lines starting with "#". (Neil Bird) +Solution: Really ignore 'smartindent' when 'cindent' is set. +Files: src/misc1.c, src/ops.c + +Patch 5.6.063 +Problem: Using "I" in Visual-block mode doesn't accept a count. (Johannes + Zellner) +Solution: Pass the count on to do_insert() and edit(). (Allan Kelly) +Files: src/normal.c, src/ops.c, src/proto/ops.pro + +Patch 5.6.064 +Problem: MS-DOS and Win32 console: Mouse doesn't work correctly after + including patch 5.6.28. (Vince Negri) +Solution: Don't check for mouse scroll wheel when the mouse code contains + the number of clicks. +Files: src/term.c + +Patch 5.6.065 +Problem: After moving the cursor around in Insert mode, typing a space can + still trigger an abbreviation. (Benji Fisher) +Solution: Don't check for an abbreviation after moving around in Insert mode. +Files: src/edit.c + +Patch 5.6.066 +Problem: Still a few bold character spill-over remains after patch 60. +Solution: Clear character just in front of blanking out rest of the line. + (Robert Webb) +Files: src/screen.c + +Patch 5.6.067 +Problem: When a file name contains a NL, the viminfo file is corrupted. +Solution: Use viminfo_writestring() to convert the NL to CTRL-V n. + Also fix the Buffers menu and listing a menu name with a newline. +Files: runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c + +Patch 5.6.068 +Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. + (Bernhard Rosenkraenzer) +Solution: Also check xs_apiversion for the version number when prepending + defines for PL_*. +Files: src/Makefile + +Patch 5.6.069 +Problem: "go" doesn't always end up at the right character when + 'fileformat' is "dos". (Bruce DeVisser) +Solution: Correct computations in ml_find_line_or_offset(). +Files: src/memline. + +Patch 5.6.070 (depends on 5.6.068) +Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. + (Bernhard Rosenkraenzer) +Solution: Simpler check instead of the one from patch 68. +Files: src/Makefile + +Patch 5.6.071 +Problem: "A" in Visual block mode on a Tab positions the cursor one char to + the right. (Michael Haumann) +Solution: Correct the column computation in op_insert(). +Files: src/ops.c + +Patch 5.6.072 +Problem: When starting Vim with "vim +startinsert", it enters Insert mode + only after typing the first command. (Andrew Pimlott) +Solution: Insert a dummy command in the stuff buffer. +Files: src/main.c + +Patch 5.6.073 (extra) (depends on 5.6.034) +Problem: Win32 GUI: When compiled with Bcc 5.5 menus don't work. + In dosinst.c toupper() and tolower() give an "internal compiler + error" for Bcc 5.5. +Solution: Define WINVER to 4 to avoid compiling for Windows 2000. (Dan + Sharp) Also cleaned up compilation arguments. + Use our own implementation of toupper() in dosinst.c. Use + mytoupper() instead of tolower(). +Files: src/Makefile.bor, src/dosinst.c + +Patch 5.6.074 (extra) +Problem: Entering CSI directly doesn't always work, because it's recognized + as the start of a special key. Mostly a problem with multi-byte + in the GUI. +Solution: Use K_CSI for a typed CSI character. Use <CSI> for a normal CSI, + <xCSI> for a CSI typed in the GUI. +Files: runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c, + src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c, + src/keymap.h, src/misc2.c + +Patch 5.6.075 +Problem: When using "I" or "A" in Visual block mode while 'sts' is set may + change spaces to a Tab the inserted text is not correct. (Mike + Steed) And some other problems when using "A" to append after the + end of the line. +Solution: Check for change in spaces/tabs after inserting the text. Append + spaces to fill the gap between the end-of-line and the right edge + of the block. +Files: src/ops.c + +Patch 5.6.076 +Problem: GTK GUI: Mapping <M-Space> doesn't work. +Solution: Don't use the "Alt" modifier twice in key_press_event(). +Files: src/gui_gtk_x11.c + +Patch 5.6.077 +Problem: GUI: When interrupting an external program with CTRL-C, gvim might + crash. (Benjamin Korvemaker) +Solution: Avoid using a NULL pointer in ui_inchar_undo(). +Files: src/ui.c + +Patch 5.6.078 +Problem: Locale doesn't always work on FreeBSD. (David O'Brien) +Solution: Link with the "xpg4" library when available. +Files: src/configure.in, src/configure + +Patch 5.6.079 +Problem: Vim could crash when several Tcl interpreters are created and + destroyed. +Solution: handle the "exit" command and nested ":tcl" commands better. (Ingo + Wilken) +Files: runtime/doc/if_tcl.txt, src/if_tcl.c + +Patch 5.6.080 +Problem: When jumping to a tag, generating the tags file and jumping to the + same tag again uses the old search pattern. (Sung-Hyun Nam) +Solution: Flush cached tag matches when executing an external command. +Files: src/misc2.c, src/proto/tag.pro, src/tag.c + +Patch 5.6.081 +Problem: ":syn include" uses a level for the included file, this confuses + contained items included at the same level. +Solution: Use a unique tag for each included file. Changed sp_syn_inc_lvl + to sp_syn_inc_tag. (Scott Bigham) +Files: src/syntax.c, src/structs.h + +Patch 5.6.082 +Problem: When using cscope, Vim can crash. +Solution: Initialize tag_fname in find_tags(). (Anton Blanchard) +Files: src/tag.c + +Patch 5.6.083 (extra) +Problem: Win32: The visual beep can't be seen. (Eric Roesinger) +Solution: Flush the output before waiting with GdiFlush(). (Maurice S. Barnum) + Also: Allow specifying the delay in t_vb for the GUI. +Files: src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c, + src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc, + src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro, + src/proto/gui_mac.pro, src/proto/gui_riscos.pro, + src/proto/gui_w32.pro, src/proto/gui_x11.pro, + src/proto/gui_beos.pro + +Patch 5.6.084 (depends on 5.6.074) +Problem: GUI: Entering CSI doesn't always work for Athena and Motif. +Solution: Handle typed CSI as <xCSI> (forgot this bit in 5.6.074). +Files: src/gui_x11.c + +Patch 5.6.085 +Problem: Multi-byte: Using "r" to replace a double-byte char with a + single-byte char moved the cursor one character. (Matsumoto) + Also, using a count when replacing a single-byte char with a + double-byte char didn't work. +Solution: Don't use del_char() to delete the second byte. + Get "ptr" again after calling ins_char(). +Files: src/normal.c + +Patch 5.6.086 (extra) +Problem: Win32: When using libcall() and the returned value is not a valid + pointer, Vim crashes. +Solution: Use IsBadStringPtr() to check if the pointer is valid. +Files: src/os_win32.c + +Patch 5.6.087 +Problem: Multi-byte: Commands and messages with multi-byte characters are + displayed wrong. +Solution: Detect double-byte characters. (Yasuhiro Matsumoto) +Files: src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c + +Patch 5.6.088 +Problem: Multi-byte with Motif or Athena: The message "XIM requires + fontset" is annoying when Vim was compiled with XIM support but it + is not being used. +Solution: Remove that message. +Files: src/multbyte.c + +Patch 5.6.089 +Problem: On non-Unix systems it's possible to overwrite a read-only file + without using "!". +Solution: Check if the file permissions allow overwriting before moving the + file to become the backup file. +Files: src/fileio.c + +Patch 5.6.090 +Problem: When editing a file in "/home/dir/home/dir" this was replaced with + "~~". (Andreas Jellinghaus) +Solution: Replace the home directory only once in home_replace(). +Files: src/misc1.c + +Patch 5.6.091 +Problem: When editing many "no file" files, can't create swap file, because + .sw[a-p] have all been used. (Neil Bird) +Solution: Also use ".sv[a-z]", ".su[a-z]", etc. +Files: src/memline.c + +Patch 5.6.092 +Problem: FreeBSD: When setting $TERM to a non-valid terminal name, Vim + hangs in tputs(). +Solution: After tgetent() returns an error code, call it again with the + terminal name "dumb". This apparently creates an environment in + which tputs() doesn't fail. +Files: src/term.c + +Patch 5.6.093 (extra) +Problem: Win32 GUI: "ls | gvim -" will show a message box about reading + stdin when Vim exits. (Donohue) +Solution: Don't write a message about the file read from stdin until the GUI + has started. +Files: src/fileio.c + +Patch 5.6.094 +Problem: Problem with multi-byte string for ":echo var". +Solution: Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam) + Also make do_echo() aware of multi-byte characters. +Files: src/eval.c, src/message.c + +Patch 5.6.095 +Problem: With an Emacs TAGS file that include another a relative path + doesn't always work. +Solution: Use expand_tag_fname() on the name of the included file. + (Utz-Uwe Haus) +Files: src/tag.c + +Patch 5.6.096 +Problem: Unix: When editing many files, startup can be slow. (Paul + Ackersviller) +Solution: Halve the number of stat() calls used to add a file to the buffer + list. +Files: src/buffer.c + +Patch 5.7a.001 +Problem: GTK doesn't respond on drag&drop from ROX-Filer. +Solution: Add "text/uri-list" target. (Thomas Leonard) + Also: fix problem with checking for trash arguments. +Files: src/gui_gtk_x11.c + +Patch 5.7a.002 +Problem: Multi-byte: 'showmatch' is performed when second byte of an + inserted double-byte char is a paren or brace. +Solution: Check IsTrailByte() before calling showmatch(). (Taro Muraoka) +Files: src/misc1.c + +Patch 5.7a.003 +Problem: Multi-byte: After using CTRL-O in Insert mode with the cursor at + the end of the line on a multi-byte character the cursor moves to + the left. +Solution: Check for multi-byte character at end-of-line. (Taro Muraoka) + Also: fix cls() to detect a double-byte character. (Chong-Dae Park) +Files: src/edit.c, src/search.c + +Patch 5.7a.004 +Problem: When reporting the search pattern offset, the string could be + unterminated, which may cause a crash. +Solution: Terminate the string for the search offset. (Stephen P. Wall) +Files: src/search.c + +Patch 5.7a.005 +Problem: When ":s//~/" doesn't find a match it reports "[NULL]" for the + pattern. +Solution: Use get_search_pat() to obtain the actually used pattern. +Files: src/ex_cmds.c, src/proto/search.pro, src/search.c + +Patch 5.7a.006 (extra) +Problem: VMS: Various problems, also with the VAXC compiler. +Solution: In many places use the Unix code for VMS too. + Added time, date and compiler version to version message. + (Zoltan Arpadffy) +Files: src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h, + src/main.c, src/message.c, src/misc1.c, src/os_vms.c, + src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h, + src/proto/os_vms.pro, src/proto/version.pro, src/term.c, + src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c + +Patch 5.7a.007 +Problem: Motif and Athena GUI: CTRL-@ is interpreted as CTRL-C. +Solution: Only use "intr_char" when it has been set. +Files: src/gui_x11.c + +Patch 5.7a.008 +Problem: GTK GUI: When using CTRL-L the screen is redrawn twice, causing + trouble for bold characters. Also happens when moving with the + scrollbar. Best seen when 'writedelay' is non-zero. + When starting the GUI with ":gui" the screen is redrawn once with + the wrong colors. +Solution: Only set the geometry hints when the window size really changed. + This avoids setting it each time the scrollbar is forcefully + redrawn. + Don't redraw in expose_event() when gui.starting is still set. +Files: src/gui_gtk_x11.c + + +============================================================================== +VERSION 5.8 *version-5.8* + +Version 5.8 is a bug-fix version of 5.7. + + +Changed *changed-5.8* +------- + +Ctags is no longer included with Vim. It has grown into a project of its own. +You can find it here: http://ctags.sf.net. It is highly recommended as a Vim +companion when you are writing programs. + + +Added *added-5.8* +----- + +New syntax files: +acedb AceDB (Stewart Morris) +aflex Aflex (Mathieu Clabaut) +antlr Antlr (Mathieu Clabaut) +asm68k 68000 Assembly (Steve Wall) +automake Automake (John Williams) +ayacc Ayacc (Mathieu Clabaut) +b B (Mathieu Clabaut) +bindzone BIND zone (glory hump) +blank Blank (Rafal Sulejman) +cfg Configure files (Igor Prischepoff) +changelog ChangeLog (Gediminas Paulauskas) +cl Clever (Phil Uren) +crontab Crontab (John Hoelzel) +csc Essbase script (Raul Segura Acevedo) +cynlib Cynlib(C++) (Phil Derrick) +cynpp Cyn++ (Phil Derrick) +debchangelog Debian Changelog (Wichert Akkerman) +debcontrol Debian Control (Wichert Akkerman) +dns DNS zone file (Jehsom) +dtml Zope's DTML (Jean Jordaan) +dylan Dylan, Dylan-intr and Dylan-lid (Brent Fulgham) +ecd Embedix Component Description (John Beppu) +fgl Informix 4GL (Rafal Sulejman) +foxpro FoxPro (Powing Tse) +gsp GNU Server Pages (Nathaniel Harward) +gtkrc GTK rc (David Necas) +hercules Hercules (Avant! Corporation) (Dana Edwards) +htmlos HTML/OS by Aestiva (Jason Rust) +inittab SysV process control (David Necas) +iss Inno Setup (Dominique Stephan) +jam Jam (Ralf Lemke) +jess Jess (Paul Baleme) +lprolog LambdaProlog (Markus Mottl) +ia64 Intel Itanium (parth malwankar) +kix Kixtart (Nigel Gibbs) +mgp MaGic Point (Gerfried Fuchs) +mason Mason (HTML with Perl) (Andrew Smith) +mma Mathematica (Wolfgang Waltenberger) +nqc Not Quite C (Stefan Scherer) +omnimark Omnimark (Paul Terray) +openroad OpenROAD (Luis Moreno Serrano) +named BIND configuration (glory hump) +papp PApp (Marc Lehmann) +pfmain Postfix main config (Peter Kelemen) +pic PIC assembly (Aleksandar Veselinovic) +ppwiz PPWizard (Stefan Schwarzer) +progress Progress (Phil Uren) +psf Product Specification File (Rex Barzee) +r R (Tom Payne) +registry MS-Windows registry (Dominique Stephan) +robots Robots.txt (Dominique Stephan) +rtf Rich Text Format (Dominique Stephan) +setl SETL (Alex Poylisher) +sgmldecl SGML Declarations (Daniel A. Molina W.) +sinda Sinda input (Adrian Nagle) +sindacmp Sinda compare (Adrian Nagle) +sindaout Sinda output (Adrian Nagle) +smith SMITH (Rafal Sulejman) +snobol4 Snobol 4 (Rafal Sulejman) +strace Strace (David Necas) +tak TAK input (Adrian Nagle) +takcmp TAK compare (Adrian Nagle) +takout TAK output (Adrian Nagle) +tasm Turbo assembly (FooLman) +texmf TeX configuration (David Necas) +trasys Trasys input (Adrian Nagle) +tssgm TSS Geometry (Adrian Nagle) +tssop TSS Optics (Adrian Nagle) +tsscl TSS Command line (Adrian Nagle) +virata Virata Configuration Script (Manuel M.H. Stol) +vsejcl VSE JCL (David Ondrejko) +wdiff Wordwise diff (Gerfried Fuchs) +wsh Windows Scripting Host (Paul Moore) +xkb X Keyboard Extension (David Necas) + +Renamed php3 to php, it now also supports php4 (Lutz Eymers) + +Patch 5.7.015 +Problem: Syntax files for Vim 6.0 can't be used with 5.x. +Solution: Add the "default" argument to the ":highlight" command: Ignore the + command if highlighting was already specified. +Files: src/syntax.c + +Generate the Syntax menu with makemenu.vim, so that it doesn't have to be done +when Vim is starting up. Reduces the startup time of the GUI. + + +Fixed *fixed-5.8* +----- + +Conversion of docs to HTML didn't convert "|tag|s" to a hyperlink. + +Fixed compiling under NeXT. (Jeroen C.M. Goudswaard) + +optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C'). + +Tcl interpreter: "buffer" command didn't check for presence of an argument. +(Dave Bodenstab) + +dosinst.c: Added checks for too long file name. + +Amiga: a file name starting with a colon was considered absolute but it isn't. +Amiga: ":pwd" added a slash when in the root of a drive. + +Macintosh: Warnings for unused variables. (Bernhard Pruemmer) + +Unix: When catching a deadly signal, handle it in such a way that it's +unlikely that Vim will hang. Call _exit() instead of exit() in case of a +severe problem. + +Setting the window title from nothing to something didn't work after patch 29. + +Check for ownership of .exrc and .vimrc was done with stat(). Use lstat() as +well for extra security. + +Win32 GUI: Printing a file with 'fileformat' "unix" didn't work. Set +'fileformat' to "dos" before writing the temp file. + +Unix: Could start waiting for a character when checking for a CTRL-C typed +when an X event is received. + +Could not use Perl and Python at the same time on FreeBSD, because Perl used +"-lc" and Python used the threaded C library. + +Win32: The Mingw compiler gave a few warning messages. + +When using "ZZ" and an autocommand for writing uses an abbreviation it didn't +work. Don't stuff the ":x" command but execute it directly. (Mikael Berthe) + +VMS doesn't always have lstat(), added an #ifdef around it. + +Added a few corrections for the Macintosh. (Axel Kielhorn) + +Win32: Gvimext could not edit more than a few files at once, the length of the +argument was fixed. + + +Previously released patches for Vim 5.7: + +Patch 5.7.001 +Problem: When the current buffer is crypted, and another modified buffer + isn't, ":wall" will encrypt the other buffer. +Solution: In buf_write() use "buf" instead of "curbuf" to check for the + crypt key. +Files: src/fileio.c + +Patch 5.7.002 +Problem: When 'showmode' is set, using "CTRL-O :r file" waits three seconds + before displaying the read text. (Wichert Akkerman) +Solution: Set "keep_msg" to the file message so that the screen is redrawn + before the three seconds wait for displaying the mode message. +Files: src/fileio.c + +Patch 5.7.003 +Problem: Searching for "[[:cntrl:]]" doesn't work. +Solution: Exclude NUL from the matching characters, it terminates the list. +Files: src/regexp.c + +Patch 5.7.004 +Problem: GTK: When selecting a new font, Vim can crash. +Solution: In gui_mch_init_font() unreference the old font, not the new one. +Files: src/gui_gtk_x11.c + +Patch 5.7.005 +Problem: Multibyte: Inserting a wrapped line corrupts kterm screen. + Pasting TEXT/COMPOUND_TEXT into Vim does not work. + On Motif no XIM status line is displayed even though it is + available. +Solution: Don't use xterm trick for wrapping lines for multibyte mode. + Correct a missing "break", added TEXT/COMPOUND_TEXT selection + request. + Add XIMStatusArea fallback code. + (Katsuhito Nagano) +Files: src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c + +Patch 5.7.006 +Problem: GUI: redrawing the non-Visual selection is wrong when the window + is unobscured. (Jean-Pierre Etienne) +Solution: Redraw the selection properly and don't clear it. Added "len" + argument to clip_may_redraw_selection(). +Files: src/gui.c, src/ui.c, src/proto/ui.pro + +Patch 5.7.007 +Problem: Python: Crash when using the current buffer twice. +Solution: Increase the reference count for buffer and window objects. + (Johannes Zellner) +Files: src/if_python.c + +Patch 5.7.008 +Problem: In Ex mode, backspacing over the first TAB doesn't work properly. + (Wichert Akkerman) +Solution: Switch the cursor on before printing the newline. +Files: src/ex_getln.c + +Patch 5.7.009 (extra) +Problem: Mac: Crash when using a long file. +Solution: Don't redefine malloc() and free(), because it will break using + realloc(). +Files: src/os_mac.h + +Patch 5.7.010 +Problem: When using CTRL-A on a very long number Vim can crash. (Michael + Naumann) +Solution: Truncate the length of the new number to avoid a buffer overflow. +Files: src/ops.c + +Patch 5.7.011 (extra) +Problem: Win32 GUI on NT 5 and Win98: Displaying Hebrew is reversed. +Solution: Output each character separately, to avoid that Windows reverses + the text for some fonts. (Ron Aaron) +Files: src/gui_w32.c + +Patch 5.7.012 +Problem: When using "-complete=buffer" for ":command" the user command + fails. +Solution: In a user command don't replace the buffer name with a count for + the buffer number. +Files: src/ex_docmd.c + +Patch 5.7.013 +Problem: "gD" didn't always find a match in the first line, depending on + the column the search started at. +Solution: Reset the column to zero before starting to search. +Files: src/normal.c + +Patch 5.7.014 +Problem: Rot13 encoding was done on characters with accents, which is + wrong. (Sven Gottwald) +Solution: Only do rot13 encoding on ASCII characters. +Files: src/ops.c + +Patch 5.7.016 +Problem: When hitting 'n' for a ":s///c" command, the ignore-case flag was + not restored, some matches were skipped. (Daniel Blaustein) +Solution: Restore the reg_ic variable when 'n' was hit. +Files: src/ex_cmds.c + +Patch 5.7.017 +Problem: When using a Vim script for Vim 6.0 with <SID> before a function + name, it produces an error message even when inside an "if version + >= 600". (Charles Campbell) +Solution: Ignore errors in the function name when the function is not going + to be defined. +Files: src/eval.c + +Patch 5.7.018 +Problem: When running "rvim" or "vim -Z" it was still possible to execute a + shell command with system() and backtick-expansion. (Antonios A. + Kavarnos) +Solution: Disallow executing a shell command in get_cmd_output() and + mch_expand_wildcards(). +Files: src/misc1.c, src/os_unix.c + +Patch 5.7.019 +Problem: Multibyte: In a substitute string, a multi-byte character isn't + skipped properly, can be a problem when the second byte is a + backslash. +Solution: Skip an extra byte for a double-byte character. (Muraoka Taro) +Files: src/ex_cmds.c + +Patch 5.7.020 +Problem: Compilation doesn't work on MacOS-X. +Solution: Add a couple of #ifdefs. (Jamie Curmi) +Files: src/regexp.c, src/ctags/general.h + +Patch 5.7.021 +Problem: Vim sometimes produces a beep when started in an xterm. Only + happens when compiled without mouse support. +Solution: Requesting the xterm version results in a K_IGNORE. This wasn't + handled when mouse support is disabled. Accept K_IGNORE always. +Files: src/normal.c + +Patch 5.7.022 +Problem: %v in 'statusline' is not displayed when it's equal to %c. +Solution: Check if %V or %v is used and handle them differently. +Files: src/screen.c + +Patch 5.7.023 +Problem: Crash when a WinLeave autocommand deletes the buffer in the other + window. +Solution: Check that after executing the WinLeave autocommands there still + is a window to be closed. Also update the test that was supposed + to check for this problem. +Files: src/window.c, testdir/test13.in, testdir/test13.ok + +Patch 5.7.024 +Problem: Evaluating an expression for 'statusline' can have side effects. +Solution: Evaluate the expression in a sandbox. +Files: src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c, + src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c, + src/screen.c, src/undo.c + +Patch 5.7.025 (fixed) +Problem: Creating a temp file has a race condition. +Solution: Create a private directory to write the temp files in. +Files: src/fileio.c, src/misc1.c, src/proto/misc1.pro, + src/proto/fileio.pro, src/memline.c, src/os_unix.h + +Patch 5.7.026 (extra) +Problem: Creating a temp file has a race condition. +Solution: Create a private directory to write the temp files in. + This is the extra part of patch 5.7.025. +Files: src/os_msdos.h + +Patch 5.7.027 +Problem: Starting to edit a file can cause a crash. For example when in + Insert mode, using CTRL-O :help abbr<Tab> to scroll the screen and + then <CR>, which edits a help file. (Robert Bogomip) +Solution: Check if keep_msg is NULL before copying it. +Files: src/fileio.c + +Patch 5.7.028 +Problem: Creating a backup or swap file could fail in rare situations. +Solution: Use O_EXCL for open(). +Files: src/fileio.c, src/memfile.c + +Patch 5.7.029 +Problem: Editing a file with an extremely long name crashed Vim. +Solution: Check for length of the name when setting the window title. +Files: src/buffer.c + +Patch 5.7.030 +Problem: A ":make" or ":grep" command with a very long argument could cause + a crash. +Solution: Allocate the buffer for the shell command. +Files: src/ex_docmd.c + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/version6.txt b/share/vim/vim74/doc/version6.txt new file mode 100644 index 00000000..f18fea87 --- /dev/null +++ b/share/vim/vim74/doc/version6.txt @@ -0,0 +1,14530 @@ +*version6.txt* For Vim version 7.4. Last change: 2013 Jul 28 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Welcome to Vim Version 6.0! A large number of features has been added. This +file mentions all the new items that have been added, changes to existing +features and bug fixes compared to Vim 5.x. + +See |vi_diff.txt| for an overview of differences between Vi and Vim 6.0. +See |version4.txt| for differences between Vim 3.0 and Vim 4.0. +See |version5.txt| for differences between Vim 4.0 and Vim 5.0. + +INCOMPATIBLE CHANGES |incompatible-6| + +Cursor position in Visual mode |curpos-visual| +substitute command Vi compatible |substitute-CR| +global option values introduced |new-global-values| +'fileencoding' changed |fileencoding-changed| +Digraphs changed |digraphs-changed| +Filetype detection changed |filetypedetect-changed| +Unlisted buffers introduced |new-unlisted-buffers| +CTRL-U in Command-line mode changed |CTRL-U-changed| +Ctags gone |ctags-gone| +Documentation reorganized |documentation-6| +Modeless selection and clipboard |modeless-and-clipboard| +Small incompatibilities |incomp-small-6| + +NEW FEATURES |new-6| + +Folding |new-folding| +Vertically split windows |new-vertsplit| +Diff mode |new-diff-mode| +Easy Vim: click-and-type |new-evim| +User manual |new-user-manual| +Flexible indenting |new-indent-flex| +Extended search patterns |new-searchpat| +UTF-8 support |new-utf-8| +Multi-language support |new-multi-lang| +Plugin support |new-plugins| +Filetype plugins |new-filetype-plugins| +File browser |new-file-browser| +Editing files over a network |new-network-files| +Window for command-line editing |new-cmdwin| +Debugging mode |new-debug-mode| +Cursor in virtual position |new-virtedit| +Debugger interface |new-debug-itf| +Communication between Vims |new-vim-server| +Buffer type options |new-buftype| +Printing |new-printing| +Ports |ports-6| +Quickfix extended |quickfix-6| +Operator modifiers |new-operator-mod| +Search Path |new-search-path| +Writing files improved |new-file-writing| +Argument list |new-argument-list| +Restore a View |new-View| +Color schemes |new-color-schemes| +Various new items |new-items-6| + +IMPROVEMENTS |improvements-6| + +COMPILE TIME CHANGES |compile-changes-6| + +BUG FIXES |bug-fixes-6| + +VERSION 6.1 |version-6.1| +Changed |changed-6.1| +Added |added-6.1| +Fixed |fixed-6.1| + +VERSION 6.2 |version-6.2| +Changed |changed-6.2| +Added |added-6.2| +Fixed |fixed-6.2| + +VERSION 6.3 |version-6.3| +Changed |changed-6.3| +Added |added-6.3| +Fixed |fixed-6.3| + +VERSION 6.4 |version-6.4| +Changed |changed-6.4| +Added |added-6.4| +Fixed |fixed-6.4| + +============================================================================== +INCOMPATIBLE CHANGES *incompatible-6* + +These changes are incompatible with previous releases. Check this list if you +run into a problem when upgrading from Vim 5.x to 6.0 + + +Cursor position in Visual mode *curpos-visual* +------------------------------ + +When going from one window to another window on the same buffer while in +Visual mode, the cursor position of the other window is adjusted to keep the +same Visual area. This can be used to set the start of the Visual area in one +window and the end in another. In vim 5.x the cursor position of the other +window would be used, which could be anywhere and was not very useful. + + +Substitute command Vi compatible *substitute-CR* +-------------------------------- + +The substitute string (the "to" part of the substitute command) has been made +Vi compatible. Previously a CTRL-V had a special meaning and could be used to +prevent a <CR> to insert a line break. This made it impossible to insert a +CTRL-V before a line break. Now a backslash is used to prevent a <CR> to +cause a line break. Since the number of backslashes is halved, it is still +possible to insert a line break at the end of the line. This now works just +like Vi, but it's not compatible with Vim versions before 6.0. + +When a ":s" command doesn't make any substitutions, it no longer sets the '[ +and '] marks. This is not related to Vi, since it doesn't have these marks. + + +Global option values introduced *new-global-values* +------------------------------- + +There are now global values for options which are local to a buffer or window. +Previously the local options were copied from one buffer to another. When +editing another file this could cause option values from a modeline to be used +for the wrong file. Now the global values are used when entering a buffer +that has not been used before. Also, when editing another buffer in a window, +the local window options are reset to their global values. The ":set" command +sets both the local and global values, this is still compatible. But a +modeline only sets the local value, this is not backwards compatible. + +":let &opt = val" now sets the local and global values, like ":set". New +commands have been added to set the global or local value: + :let &opt = val like ":set" + :let &g:opt = val like ":setglobal" + :let &l:opt = val like ":setlocal" + + +'fileencoding' changed *fileencoding-changed* +---------------------- + +'fileencoding' was used in Vim 5.x to set the encoding used inside all of Vim. +This was a bit strange, because it was local to a buffer and worked for all +buffers. It could never be different between buffers, because it changed the +way text in all buffers was interpreted. +It is now used for the encoding of the file related to the buffer. If you +still set 'fileencoding' it is likely to be overwritten by the detected +encoding from 'fileencodings', thus it is "mostly harmless". +The old FileEncoding autocommand now does the same as the new EncodingChanged +event. + + +Digraphs changed *digraphs-changed* +---------------- + +The default digraphs now correspond to RFC1345. This is very different from +what was used in Vim 5.x. |digraphs| + + +Filetype detection changed *filetypedetect-changed* +-------------------------- + +The filetype detection previously was using the "filetype" autocommand group. +This caused confusion with the FileType event name (case is ignored). The +group is now called "filetypedetect". It still works, but if the "filetype" +group is used the autocommands will not be removed by ":filetype off". + The support for 'runtimepath' has made the "myfiletypefile" and +"mysyntaxfile" mechanism obsolete. They are still used for backwards +compatibility. + +The connection between the FileType event and setting the 'syntax' option was +previously in the "syntax" autocommand group. That caused confusion with the +Syntax event name. The group is now called "syntaxset". + +The distributed syntax files no longer contain "syntax clear". That makes it +possible to include one in the other without tricks. The syntax is now +cleared when the 'syntax' option is set (by an autocommand added from +synload.vim). This makes the syntax cleared when the value of 'syntax' does +not correspond to a syntax file. Previously the existing highlighting was +kept. + + +Unlisted buffers introduced *new-unlisted-buffers* +--------------------------- + +There is now a difference between buffers which don't appear in the buffer +list and buffers which are really not in the buffer list. Commands like +":ls", ":bnext", ":blast" and the Buffers menu will skip buffers not in the +buffer list. |unlisted-buffer| +The 'buflisted' option can be used to make a buffer appear in the buffer list +or not. + +Several commands that previously added a buffer to the buffer list now create +an unlisted buffer. This means that a ":bnext" and ":ball" will not find these +files until they have actually been edited. For example, buffers used for the +alternative file by ":write file" and ":read file". + Other commands previously completely deleted a buffer and now only remove +the buffer from the buffer list. Commands relying on a buffer not to be +present might fail. For example, a ":bdelete" command in an autocommand that +relied on something following to fail (was used in the automatic tests). +|:bwipeout| can be used for the old meaning of ":bdelete". + +The BufDelete autocommand event is now triggered when a buffer is removed from +the buffer list. The BufCreate event is only triggered when a buffer is +created that is added to the buffer list, or when an existing buffer is added +to the buffer list. BufAdd is a new name for BufCreate. +The new BufNew event is for creating any buffer and BufWipeout for really +deleting a buffer. + +When doing Insert mode completion, only buffers in the buffer list are +scanned. Added the 'U' flag to 'complete' to do completion from unlisted +buffers. + +Unlisted buffers are not stored in a viminfo file. + + +CTRL-U in Command-line mode changed *CTRL-U-changed* +----------------------------------- + +Using CTRL-U when editing the command line cleared the whole line. Most +shells only delete the characters before the cursor. Made it work like that. +(Steve Wall) + +You can get the old behavior with CTRL-E CTRL-U: > + :cnoremap <C-U> <C-E><C-U> + + +Ctags gone *ctags-gone* +---------- + +Ctags is no longer part of the Vim distribution. It's now a grown-up program +by itself, it deserves to be distributed separately. +Ctags can be found here: http://ctags.sf.net/. + + +Documentation reorganized *documentation-6* +------------------------- + +The documentation has been reorganized, an item may not be where you found it +in Vim 5.x. +- The user manual was added, some items have been moved to it from the + reference manual. +- The quick reference is now in a separate file (so that it can be printed). + +The examples in the documentation were previously marked with a ">" in the +first column. This made it difficult to copy/paste them. There is now a +single ">" before the example and it ends at a "<" or a non-blank in the first +column. This also looks better without highlighting. + +'helpfile' is no longer used to find the help tags file. This allows a user +to add its own help files (e.g., for plugins). + + +Modeless selection and clipboard *modeless-and-clipboard* +-------------------------------- + +The modeless selection is used to select text when Visual mode can't be used, +for example when editing the command line or at the more prompt. +In Vim 5.x the modeless selection was always used. On MS-Windows this caused +the clipboard to be overwritten, with no way to avoid that. The modeless +selection now obeys the 'a' and 'A' flags in 'guioptions' and "autoselect" and +"autoselectml" in 'clipboard'. By default there is no automatic copy on +MS-Windows. Use the |c_CTRL-Y| command to manually copy the selection. + +To get the old behavior back, do this: > + + :set clipboard^=autoselectml guioptions+=A + + +Small incompatibilities *incomp-small-6* +----------------------- + +'backupdir', 'cdpath', 'directory', 'equalprg', 'errorfile', 'formatprg', +'grepprg', 'helpfile', 'makeef', 'makeprg', 'keywordprg', 'cscopeprg', +'viminfo' and 'runtimepath' can no longer be set from a modeline, for better +security. + +Removed '_' from the 'breakat' default: It's commonly used in keywords. + +The default for 'mousehide' is on, because this works well for most people. + +The Amiga binary is now always compiled with "big" features. The "big" binary +archive no longer exists. + +The items "[RO]", "[+]", "[help]", "[Preview]" and "[filetype]" in +'statusline' no longer have a leading space. + +Non-Unix systems: When expanding wildcards for the Vim arguments, don't use +'suffixes'. It now works as if the shell had expanded the arguments. + +The 'lisp', 'smartindent' and 'cindent' options are not switched off when +'paste' is set. The auto-indenting is disabled when 'paste' is set, but +manual indenting with "=" still works. + +When formatting with "=" uses 'cindent' or 'indentexpr' indenting, and there +is no change in indent, this is not counted as a change ('modified' isn't set +and there is nothing to undo). + +Report 'modified' as changed when 'fileencoding' or 'fileformat' was set. +Thus it reflects the possibility to abandon the buffer without losing changes. + +The "Save As" menu entry now edits the saved file. Most people expect it to +work like this. + +A buffer for a directory is no longer added to the Buffers menu. + +Renamed <Return> to <Enter>, since that's what it's called on most keyboards. +Thus it's now the hit-enter prompt instead of the hit-return prompt. +Can map <Enter> just like <CR> or <Return>. + +The default for the 'viminfo' option is now '20,"50,h when 'compatible' isn't +set. Most people will want to use it, including beginners, but it required +setting the option, which isn't that easy. + +After using ":colder" the newer error lists are overwritten. This makes it +possible to use ":grep" to browse in a tree-like way. Must use ":cnewer 99" +to get the old behavior. + +The patterns in 'errorformat' would sometimes ignore case (MS-Windows) and +sometimes not (Unix). Now case is always ignored. Add "\C" to the pattern to +match case. + +The 16 bit MS-DOS version is now compiled without the +listcmds feature +(buffer list manipulation commands). They are not often needed and this +executable needs to be smaller. + +'sessionoptions' now includes "curdir" by default. This means that restoring +a session will result in the current directory being restored, instead of +going to the directory where the session file is located. + +A session deleted all buffers, deleting all marks. Now keep the buffer list, +it shouldn't hurt for some existing buffers to remain present. +When the argument list is empty ":argdel *" caused an error message. + +No longer put the search pattern from a tag jump in the history. + +Use "SpecialKey" highlighting for unprintable characters instead of "NonText". +The idea is that unprintable text or any text that's displayed differently +from the characters in the file is using "SpecialKey", and "NonText" is used +for text that doesn't really exist in the file. + +Motif now uses the system default colors for the menu and scrollbar. Used to +be grey. It's still possible to set the colors with ":highlight" commands and +resources. + +Formatting text with "gq" breaks a paragraph at a non-empty blank line. +Previously the line would be removed, which wasn't very useful. + +":normal" does no longer hang when the argument ends in half a command. +Previously Vim would wait for more characters to be typed, without updating +the screen. Now it pretends an <Esc> was typed. + +Bitmaps for the toolbar are no longer searched for in "$VIM/bitmaps" but in +the "bitmaps" directories in 'runtimepath'. + +Now use the Cmdline-mode menus for the hit-enter prompt instead of the Normal +mode menus. This generally works better and allows using the "Copy" menu to +produce CTRL-Y to copy the modeless selection. + +Moved the font selection from the Window to the Edit menu, together with the +other settings. + +The default values for 'isfname' include more characters to make "gf" work +better. + +Changed the license for the documentation to the Open Publication License. +This seemed fair, considering the inclusion of parts of the Vim book, which is +also published under the OPL. The downside is that we can't force someone who +would sell copies of the manual to contribute to Uganda. + +After "ayy don't let ""yy or :let @" = val overwrite the "a register. +Use the unnamed register instead. + +MSDOS: A pattern "*.*" previously also matched a file name without a dot. +This was inconsistent with other versions. + +In Insert mode, CTRL-O CTRL-\ CTRL-N {cmd} remains in Normal mode. Previously +it would go back to Insert mode, thus confusing the meaning of CTRL-\ CTRL-N, +which is supposed to take us to Normal mode (especially in ":amenu"). + +Allow using ":" commands after an operator. Could be used to implement a new +movement command. Thus it no longer aborts a pending operator. + +For the Amiga the "-d {device}" argument was possible. When compiled with the +diff feature, this no longer works. Use "-dev {device}" instead. |-dev| + +Made the default mappings for <S-Insert> in Insert mode insert the text +literally, avoids that special characters like BS cause side effects. + +Using ":confirm" applied to the rest of the line. Now it applies only to the +command right after it. Thus ":confirm if x | edit | endif" no longer works, +use ":if x | confirm edit | endif". This was the original intention, that it +worked differently was a bug. + +============================================================================== +NEW FEATURES *new-6* + +Folding *new-folding* +------- + +Vim can now display a buffer with text folded. This allows overviewing the +structure of a file quickly. It is also possible to yank, delete and put +folded text, for example to move a function to another position. + +There is a whole bunch of new commands and options related to folding. +See |folding|. + + +Vertically split windows *new-vertsplit* +------------------------ + +Windows can also be split vertically. This makes it possible to have windows +side by side. One nice use for this is to compare two similar files (see +|new-diff-mode|). The 'scrollbind' option can be used to synchronize +scrolling. + +A vertical split can be created with the commands: + :vsplit or CTRL-W v or CTRL-W CTRL-V |:vsplit| + :vnew |:vnew| + :vertical {cmd} |:vertical| +The last one is a modifier, which has a meaning for any command that splits a +window. For example: > + :vertical stag main +Will vertically split the window and jump to the tag "main" in the new window. + +Moving from window to window horizontally can be done with the |CTRL-W_h| and +|CTRL-W_l| commands. The |CTRL-W_k| and |CTRL-W_j| commands have been changed +to jump to the window above or below the cursor position. + +The vertical and horizontal splits can be mixed as you like. Resizing windows +is easy when using the mouse, just position the pointer on a status line or +vertical separator and drag it. In the GUI a special mouse pointer shape +indicates where you can drag a status or separator line. + +To resize vertically split windows use the |CTRL-W_<| and |CTRL-W_>| commands. +To make a window the maximum width use the CTRL-W | command |CTRL-W_bar|. + +To force a new window to use the full width or height of the Vim window, +these two modifiers are available: + :topleft {cmd} New window appears at the top with full + width or at the left with full height. + :botright {cmd} New window appears at the bottom with full + width or at the right with full height. +This can be combined with ":vertical" to force a vertical split: > + :vert bot dsplit DEBUG +This will open a window at the far right, occupying the full height of the Vim +window, with the cursor on the first definition of "DEBUG". +The help window is opened at the top, like ":topleft" was used, if the current +window is fewer than 80 characters wide. + +A few options can be used to set the preferences for vertically split windows. +They work similar to their existing horizontal equivalents: + horizontal vertical ~ + 'splitbelow' 'splitright' + 'winheight' 'winwidth' + 'winminheight' 'winminwidth' +It's possible to set 'winminwidth' to zero, so that temporarily unused windows +hardly take up space without closing them. + +The new 'eadirection' option tells where 'equalalways' applies: + :set eadirection=both both directions + :set eadirection=ver equalize window heights + :set eadirection=hor equalize windows widths +This can be used to avoid changing window sizes when you want to keep them. + +Since windows can become quite narrow with vertical splits, text lines will +often not fit. The 'sidescrolloff' has been added to keep some context left +and right of the cursor. The 'listchars' option has been extended with the +"precedes" item, to show a "<" for example, when there is text left off the +screen. (Utz-Uwe Haus) + +"-O" command line argument: Like "-o" but split windows vertically. (Scott +Urban) + +Added commands to move the current window to the very top (CTRL-W K), bottom +(CTRL-W J), left (CTRL-W H) and right (CTRL-W L). In the new position the +window uses the full width/height of the screen. + +When there is not enough room in the status line for both the file name and +the ruler, use up to half the width for the ruler. Useful for narrow windows. + + +Diff mode *new-diff-mode* +--------- + +In diff mode Vim shows the differences between two, three or four files. +Folding is used to hide the parts of the file that are equal. +Highlighting is used to show deleted and changed lines. +See |diff-mode|. + +An easy way to start in diff mode is to start Vim as "vimdiff file1 file2". +Added the vimdiff manpage. + +In a running Vim the |:diffsplit| command starts diff mode for the current +file and another file. The |:diffpatch| command starts diff mode using the +current file and a patch file. The |:diffthis| command starts diff mode for +the current window. + +Differences can be removed with the |:diffget| and |:diffput| commands. + +- The 'diff' option switches diff mode on in a window. +- The |:diffupdate| command refreshes the diffs. +- The 'diffopt' option changes how diffs are displayed. +- The 'diffexpr' option can be set how a diff is to be created. +- The 'patchexpr' option can be set how patch is applied to a file. +- Added the "diff" folding method. When opening a window for diff-mode, set + 'foldlevel' to zero and 'foldenable' on, to close the folds. +- Added the DiffAdd, DiffChange, DiffDelete and DiffText highlight groups to + specify the highlighting for differences. The defaults are ugly... +- Unix: make a vimdiff symbolic link for "make install". +- Removed the now obsolete "vimdiff.vim" script from the distribution. +- Added the "[c" and "]c" commands to move to the next/previous change in diff + mode. + + +Easy Vim: click-and-type *new-evim* +------------------------ + +eVim stands for "Easy Vim". This is a separate program, but can also be +started as "vim -y". + +This starts Vim with 'insertmode' set to allow click-and-type editing. The +$VIMRUNTIME/evim.vim script is used to add mappings and set options to be able +to do most things like Notepad. This is only for people who can't stand two +modes. + +eView does the same but in readonly mode. + +In the GUI a CTRL-C now only interrupts when busy with something, not when +waiting for a character. Allows using CTRL-C to copy text to the clipboard. + + +User manual *new-user-manual* +----------- + +The user manual has been added. It is organised around editing tasks. It +reads like a book, from start to end. It should allow beginners to start +learning Vim. It helps everybody to learn using the most useful Vim features. +It is much easier to read than the reference manual, but omits details. See +|user-manual|. + +The user manual includes parts of the Vim book by Steve Oualline |frombook|. +It is published under the OPL |manual-copyright|. + +When syntax highlighting is not enabled, the characters in the help file which +mark examples ('>' and '<') and header lines ('~') are replaced with a space. + +When closing the help window, the window layout is restored from before +opening it, if the window layout didn't change since then. +When opening the help window, put it at the top of the Vim window if the +current window is fewer than 80 characters and not full width. + + +Flexible indenting *new-indent-flex* +------------------ + +Automatic indenting is now possible for any language. It works with a Vim +script, which makes it very flexible to compute the indent. + +The ":filetype indent on" command enables using the provided indent scripts. +This is explained in the user manual: |30.3|. + +The 'indentexpr' option is evaluated to get the indent for a line. The +'indentkeys' option tells when to trigger re-indenting. Normally these +options are set from an indent script. Like Syntax files, indent scripts will +be created and maintained by many people. + + +Extended search patterns *new-searchpat* +------------------------ + +Added the possibility to match more than one line with a pattern. (partly by +Loic Grenie) +New items in a search pattern for multi-line matches: +\n match end-of-line, also in [] +\_[] match characters in range and end-of-line +\_x match character class and end-of-line +\_. match any character or end-of-line +\_^ match start-of-line, can be used anywhere in the regexp +\_$ match end-of-line, can be used anywhere in the regexp + +Various other new items in search patterns: +\c ignore case for the whole pattern +\C match case for the whole pattern +\m magic on for the following +\M magic off for the following +\v make following characters "very magic" +\V make following characters "very nomagic" + +\@! don't match atom before this. + Example: "foo\(bar\)\@!" matches "foo " but not "foobar". +\@= match atom, resulting in zero-width match + Example: "foo\(bar\)\@=" matches "foo" in "foobar". +\@<! don't match preceding atom before the current position +\@<= match preceding atom before the current position +\@> match preceding atom as a subexpression + +\& match only when branch before and after it match + +\%[] optionally match a list of atoms; "end\%[if]" matches "end", + "endi" and "endif" +\%(\) like \(\), but without creating a back-reference; there can be + any number of these, overcomes the limit of nine \( \) pairs +\%^ match start-of-file (Chase Tingley) +\%$ match end-of-file (Chase Tingley) +\%# Match with the cursor position. (Chase Tingley) +\? Just like "\=" but can't be used in a "?" command. + +\%23l match in line 23 +\%<23l match before line 23 +\%>23l match after line 23 +\%23c, \%<23c, \%>23c match in/before/after column 23 +\%23v, \%<23v, \%>23v match in/before/after virtual column 23 + + +For syntax items: +\z(...\) external reference match set (in region start pattern) +\z1 - \z9 external reference match use (in region skip or end pattern) + (Scott Bigham) + +\zs use position as start of match +\ze use position as end of match + +Removed limit of matching only up to 32767 times with *, \+, etc. + +Added support to match multi-byte characters. (partly by Muraoka Taro) +Made "\<" and "\>" work for UTF-8. (Muraoka Taro) + + +UTF-8 support *new-utf-8* +------------- + +Vim can now edit files in UTF-8 encoding. Up to 31 bit characters can be +used, but only 16 bit characters are displayed. Up to two combining +characters are supported, they overprint the preceding character. +Double-wide characters are also supported. See |UTF-8|. + +UCS-2, UCS-4 and UTF-16 encodings are supported too, they are converted to +UTF-8 internally. There is also support for editing Unicode files in a Latin1 +environment. Other encodings are converted with iconv() or an external +converter specified with 'charconvert'. + +Many new items for Multi-byte support: +- Added 'encoding' option: specifies character encoding used inside Vim. It + can be any 8-bit encoding, some double-byte encodings or Unicode. + It is initialized from the environment when a supported value is found. +- Added 'fileencoding' and 'fileencodings': specify character coding in a + file, similar to 'fileformat' and 'fileformats'. + When 'encoding' is "utf-8" and 'fileencodings' is "utf-8,latin1" this will + automatically switch to latin1 if a file does not contain valid UTF-8. +- Added 'bomb' option and detection of a BOM at the start of a file. Can be + used with "ucs-bom" in 'fileencodings' to automatically detect a Unicode + file if it starts with a BOM. Especially useful on MS-Windows (NT and + 2000), which uses ucs-2le files with a BOM (e.g., when exporting the + registry). +- Added the 'termencoding' option: Specifies the encoding used for the + terminal. Useful to put Vim in utf-8 mode while in a non-Unicode locale: > + :let &termencoding = &encoding + :set encoding=utf-8 +- When 'viminfo' contains the 'c' flag, the viminfo file is converted from the + 'encoding' it was written with to the current 'encoding'. +- Added ":scriptencoding" command: convert lines in a sourced script to + 'encoding'. Useful for menu files. +- Added 'guifontwide' to specify a font for double-wide characters. +- Added Korean support for character class detection. Also fix cls() in + search.c. (Chong-Dae Park) +- Win32: Typing multi-byte characters without IME. (Alexander Smishlajev) +- Win32 with Mingw: compile with iconv library. (Ron Aaron) +- Win32 with MSVC: dynamically load iconv.dll library. (Muraoka Taro) +- Make it possible to build a version with multi-byte and iconv support with + Borland 5.5. (Yasuhiro Matsumoto) +- Added 'delcombine' option: Delete combining character separately. (Ron + Aaron) +- The "xfontset" feature isn't required for "xim". These are now two + independent features. +- XIM: enable XIM when typing a language character (Insert mode, Search + pattern, "f" or "r" command). Disable XIM when typing a Normal mode + command. +- When the XIM is active, show "XIM" in the 'showmode' message. (Nam SungHyun) +- Support "CursorIM" for XIM. (Nam SungHyun) +- Added 'm' flag to 'formatoptions': When wrapping words, allow splitting at + each multibyte character, not only at a space. +- Made ":syntax keyword" work with multi-byte characters. +- Added support for Unicode upper/lowercase flipping and comparing. (based on + patch by Raphael Finkel) + Let "~" on multi-byte characters that have a third case ("title case") + switch between the three cases. (Raphael Finkel) + +Allow defining digraphs for multi-byte characters. +Added RFC1345 digraphs for Unicode. +Most Normal mode commands that accept a character argument, like "r", "t" and +"f" now accept a digraph. The 'D' flag in 'cpoptions' disables this to remain +Vi compatible. + +Added Language mapping and 'keymap' to be able to type multi-byte characters: +- Added the ":lmap" command and friends: Define mappings that are used when + typing characters in the language of the text. Also for "r", "t", etc. In + Insert and Command-line mode CTRL-^ switches the use of the mappings on/off. + CTRL-^ also toggles the use of an input method when no language mappings are + present. Allows switching the IM back on halfway typing. +- "<char-123>" argument to ":map", allows to specify the decimal, octal or + hexadecimal value of a character. +- Implemented the 'keymap' option: Load a keymap file. Uses ":lnoremap" to + define mappings for the keymap. The new ":loadkeymap" command is used in + the keymap file. +- Added 'k' flag in 'statusline': Value of "b:keymap_name" or 'keymap' when + it's being used. Uses "<lang>" when no keymap is loaded and ":lmap"s are + active. Show this text in the default statusline too. +- Added the 'iminsert' and 'imsearch' options: Specify use of langmap mappings + and Input Method with an option. (Muraoka Taro) + Added 'imcmdline' option: When set the input method is always enabled when + starting to edit a command line. Useful for a XIM that uses dead keys to + type accented characters. + Added 'imactivatekey' option to better control XIM. (Muraoka Taro) +- When typing a mapping that's not finished yet, display the last character + under the cursor in Insert mode and Command-line mode. Looks good for dead + characters. +- Made the 'langmap' option recognize multi-byte characters. But mapping only + works for 8-bit characters. Helps when using UTF-8. +- Use a different cursor for when ":lmap" mappings are active. Can specify + two highlight groups for an item in 'guicursor'. By default "lCursor" and + "Cursor" are equal, the user must set a color he likes. + Use the cursor color for hangul input as well. (Sung-Hyun Nam) +- Show "(lang)" for 'showmode' when language mapping is enabled. +- UTF-8: Made "r" work with a ":lmap" that includes a composing character. + Also works for "f", which now works to find a character that includes a + composing character. + +Other multi-byte character additions: +- Support double-byte single-width characters for euc-jp: Characters starting + with 0x8E. Added ScreenLines2[] to store the second byte. + + +Multi-language support *new-multi-lang* +---------------------- + +The messages used in Vim can be translated. Several translations are +available. This uses the gettext mechanism. It allows adding a translation +without recompiling Vim. |multi-lang| (partly by Marcin Dalecki) + +The translation files are in the src/po directory. The src/po/README.txt file +explains a few things about doing a translation. + +Menu translations are available as well. This uses the new |:menutranslate| +command. The translations are found in the runtime directory "lang". This +allows a user to add a translation. + +Added |:language| command to set the language (locale) for messages, time and +character type. This allows switching languages in Vim without changing the +locale outside of Vim. + +Made it possible to have vimtutor use different languages. (Eduardo Fernandez) +Spanish (Eduardo Fernandez), Italian (Antonio Colombo), Japanese (Yasuhiro +Matsumoto) and French (Adrien Beau) translations are included. +Added "vimtutor.bat": script to start Vim on a copy of the tutor file for +MS-Windows. (Dan Sharp) + +- Added v:lang variable to be able to get current language setting. + (Marcin Dalecki) Also v:lc_time and v:ctype. +- Make it possible to translate the dialogs used by the menus. Uses global + "menutrans_" variables. ":menutrans clear" deletes them. +- removed "broken locale" (Marcin Dalecki). +- Don't use color names in icons, use RGB values. The names could be + translated. +- Win32: Added global IME support (Muraoka) +- Win32: Added dynamic loading of IME support. +- ":messages" prints a message about who maintains the messages or the + translations. Useful to find out where to make a remark about a wrong + translation. +- --disable-nls argument for configure: Disable use of gettext(). (Sung-Hyun + Nam) +- Added NLS support for Win32 with the MingW compiler. (Eduardo Fernandez) +- When available, call bind_textdomain_codeset() to have gettext() translate + messages to 'encoding'. This requires GNU gettext 0.10.36 or later. +- Added gettext support for Win32. This means messages will be translated + when the locale is set and libintl.dll can be found. (Muraoka Taro) + Also made it work with MingW compiler. (Eduardo Fernandez) + Detect the language and set $LANG to get the appropriate translated messages + (if supported). Also use $LANG to select a language, v:lang is a very + different kind of name. +- Made gvimext.dll use translated messages, if possible. (Yasuhiro Matsumoto) + + +Plugin support *new-plugins* +-------------- + +To make it really easy to load a Vim script when starting Vim, the "plugin" +runtime directory can be used. All "*.vim" files in it will be automatically +loaded. For Unix, the directory "~/.vim/plugin" is used by default. The +'runtimepath' option can be set to look in other directories for plugins. +|load-plugins| |add-plugin| + +The |:runtime| command has been added to load one or more files in +'runtimepath'. + +Standard plugins: +netrw.vim - Edit files over a network |new-network-files| +gzip.vim - Edit compressed files +explorer.vim - Browse directories |new-file-browser| + +Added support for local help files. |add-local-help|. +When searching for help tags, all "doc/tags" files in 'runtimepath' are used. +Added the ":helptags" command: Generate a tags file for a help directory. +The first line of each help file is automagically added to the "LOCAL +ADDITIONS" section in doc/help.txt. + +Added the <unique> argument to ":map": only add a mapping when it wasn't +defined before. + +When displaying an option value with 'verbose' set will give a message about +where the option was last set. Very useful to find out which script did set +the value. + +The new |:scriptnames| command displays a list of all scripts that have been +sourced. + +GUI: For Athena, Motif and GTK look for a toolbar bitmap in the "bitmaps" +directories in 'runtimepath'. Allows adding your own bitmaps. + + +Filetype plugins *new-filetype-plugins* +----------------- + +A new group of files has been added to do settings for specific file types. +These can be options and mappings which are specifically used for one value of +'filetype'. + +The files are located in "$VIMRUNTIME/ftplugin". The 'runtimepath' option +makes it possible to use several sets of plugins: Your own, system-wide, +included in the Vim distribution, etc. + +To be able to make this work, several features were added: +- Added the "s:" variables, local to a script. Avoids name conflicts with + global variables. They can be used in the script and in functions, + autocommands and user commands defined in the script. They are kept between + invocations of the same script. |s:var| +- Added the global value for local options. This value is used when opening + a new buffer or editing another file. The option value specified in a + modeline or filetype setting is not carried over to another buffer. + ":set" sets both the local and the global value. + ":setlocal" sets the local option value only. + ":setglobal" sets or displays the global value for a local option. + ":setlocal name<" sets a local option to its global value. +- Added the buffer-local value for some global options: 'equalprg', 'makeprg', + 'errorformat', 'grepprg', 'path', 'dictionary', 'thesaurus', 'tags', + 'include' and 'define'. This allows setting a local value for these global + options, without making it incompatible. +- Added mappings and abbreviations local to a buffer: ":map <buffer>". +- In a mapping "<Leader>" can be used to get the value of the "mapleader" + variable. This simplifies mappings that use "mapleader". "<Leader>" + defaults to "\". "<LocalLeader>" does the same with "maplocalleader". This + is to be used for mappings local to a buffer. +- Added <SID> Script ID to define functions and mappings local to a script. +- Added <script> argument to ":noremap" and ":noremenu": Only remap + script-local mappings. Avoids that mappings from other scripts get in the + way, but does allow using mappings defined in the script. +- User commands can be local to a buffer: ":command -buffer". + +The new ":setfiletype" command is used in the filetype detection autocommands, +to avoid that 'filetype' is set twice. + + +File browser *new-file-browser* +------------ + +When editing a directory, the explorer plugin will list the files in the +directory. Pressing <Enter> on a file name edits that file. Pressing <Enter> +on a directory moves the browser to that directory. + +There are several other possibilities, such as opening a file in the preview +window, renaming files and deleting files. + + +Editing files over a network *new-network-files* +---------------------------- + +Files starting with scp://, rcp://, ftp:// and http:// are recognized as +remote files. An attempt is made to access these files with the indicated +method. For http:// only reading is possible, for the others writing is also +supported. Uses the netrw.vim script as a standard "plugin". |netrw| + +Made "gf" work on a URL. It no longer assumes the file is local on the +computer (mostly didn't work anyway, because the full path was required). +Adjusted test2 for this. + +Allow using a URL in 'path'. Makes ":find index.html" work. + +GTK: Allow dropping a http:// and ftp:// URL on Vim. The netrw plugin takes +care of downloading the file. (MiKael Berthe) + + +Window for command-line editing *new-cmdwin* +------------------------------- + +The Command-line window can be used to edit a command-line with Normal and +Insert mode commands. When it is opened it contains the history. This allows +copying parts of previous command lines. |cmdwin| + +The command-line window can be opened from the command-line with the key +specified by the 'cedit' option (like Nvi). It can also be opened directly +from Normal mode with "q:", "q/" and "q?". + +The 'cmdwinheight' is used to specify the initial height of the window. + +In Insert mode CTRL-X CTRL-V can be used to complete an Ex command line, like +it's done on the command-line. This is also useful for writing Vim scripts! + +Additionally, there is "improved Ex mode". Entered when Vim is started as +"exim" or "vim -E", and with the "gQ" command. Works like repeated use of +":", with full command-line editing and completion. (Ulf Carlsson) + + +Debugging mode *new-debug-mode* +-------------- + +In debugging mode sourced scripts and user functions can be executed line by +line. There are commands to step over a command or step into it. |debug-mode| + +Breakpoints can be set to run until a certain line in a script or user +function is executed. |:breakadd| + +Debugging can be started with ":debug {cmd}" to debug what happens when a +command executes. The |-D| argument can be used to debug while starting up. + + +Cursor in virtual position *new-virtedit* +-------------------------- + +Added the 'virtualedit' option: Allow positioning the cursor where there is no +actual character in Insert mode, Visual mode or always. (Matthias Kramm) +This is especially useful in Visual-block mode. It allows positioning a +corner of the area where there is no text character. (Many improvements by +Chase Tingley) + + +Debugger interface *new-debug-itf* +------------------ + +This was originally made to work with Sun Visual Workshop. (Gordon Prieur) +See |debugger.txt|, |sign.txt| and |workshop.txt|. + +Added the ":sign" command to define and place signs. They can be displayed +with two ASCII characters or an icon. The line after it can be highlighted. +Useful to display breakpoints and the current PC position. + +Added the |:wsverb| command to execute debugger commands. + +Added balloon stuff: 'balloondelay' and 'ballooneval' options. + +Added "icon=" argument for ":menu". Allows defining a specific icon for a +ToolBar item. + + +Communication between Vims *new-vim-server* +-------------------------- + +Added communication between two Vims. Makes it possible to send commands from +one Vim to another. Works for X-Windows and MS-Windows |clientserver|. + +Use "--remote" to have files be edited in an already running Vim. +Use "--remote-wait" to do the same and wait for the editing to finish. +Use "--remote-send" to send commands from one Vim to another. +Use "--remote-expr" to have an expression evaluated in another Vim. +Use "--serverlist" to list the currently available Vim servers. (X only) +There are also functions to communicate between the server and the client. +|remote_send()| |remote_expr()| + +(X-windows version implemented by Flemming Madsen, MS-Windows version by Paul +Moore) + +Added the command server name to the window title, so you can see which server +name belongs to which Vim. + +Removed the OleVim directory and SendToVim.exe and EditWithVim.exe from the +distribution. Can now use "gvim --remote" and "gvim --remote-send", which is +portable. + +GTK+: Support running Vim inside another window. Uses the --socketid argument +(Neil Bird) + + +Buffer type options *new-buftype* +------------------- + +The 'buftype' and 'bufhidden' options have been added. They can be set to +have different kinds of buffers. For example: +- 'buftype' = "quickfix": buffer with error list +- 'buftype' = "nofile" and 'bufhidden' = "delete": scratch buffer that will be + deleted as soon as there is no window displaying it. + +'bufhidden' can be used to overrule the 'hidden' option for one buffer. + +In combination with 'buflisted' and 'swapfile' this offers the possibility to +use various kinds of special buffers. See |special-buffers|. + + +Printing *new-printing* +-------- + +Included first implementation of the ":hardcopy" command for printing +to paper. For MS-Windows any installed printer can be used. For other +systems a PostScript file is generated, which can be printed with the +'printexpr' option. +(MS-Windows part by Vince Negri, Vipin Aravind, PostScript by Vince Negri and +Mike Williams) + +Made ":hardcopy" work with multi-byte characters. (Muraoka Taro, Yasuhiro +Matsumoto) + +Added options to tune the way printing works: (Vince Negri) +- 'printoptions' defines various things. +- 'printheader' specifies the header format. Added "N" field to 'statusline' + for the page number. +- 'printfont' specifies the font name and attributes. +- 'printdevice' defines the default printer for ":hardcopy!". + + +Ports *ports-6* +----- + +Port to OS/390 Unix (Ralf Schandl) +- A lot of changes to handle EBCDIC encoding. +- Changed Ctrl('x') to Ctrl_x define. + +Included jsbmouse support. (Darren Garth) +Support for dec mouse in Unix. (Steve Wall) + +Port to 16-bit MS Windows (Windows 3.1x) (Vince Negri) + +Port to QNX. Supports the Photon GUI, mouse, etc. (Julian Kinraid) + +Allow cross-compiling the Win32 version with Make_ming.mak. (Ron Aaron) +Added Python support for compiling with Mingw. (Ron Aaron) + +Dos 32 bit: Added support the Windows clipboard. (David Kotchan) + +Win32: Dynamically load Perl and Python. Allows compiling Vim with these +interfaces and will try to find the DLLs at runtime. (Muraoka Taro) + +Compiling the Win32 GUI with Cygwin. Also compile vimrun, dosinst and +uninstall. (Gerfried) + +Mac: Make Vim compile with the free MPW compiler supplied by Apple. And +updates for CodeWarrior. (Axel Kielhorn) + +Added typecasts and ifdefs as a start to make Vim work on Win64 (George +Reilly) + + +Quickfix extended *quickfix-6* +----------------- + +Added the "error window". It contains all the errors of the current error +list. Pressing <Enter> in a line makes Vim jump to that line (in another +window). This makes it easy to navigate through the error list. +|quickfix-window|. + +- |:copen| opens the quickfix window. +- |:cclose| closes the quickfix window. +- |:cwindow| takes care that there is a quickfix window only when there are + recognized errors. (Dan Sharp) + +- Quickfix also knows "info", next to "warning" and "error" types. "%I" can be + used for the start of a multi-line informational message. (Tony Leneis) +- The "%p" argument can be used in 'errorformat' to get the column number from + a line where "^" points to the column. (Stefan Roemer) +- When using "%f" in 'errorformat' on a DOS/Windows system, also include "c:" + in the filename, even when using "%f:". + + +Operator modifiers *new-operator-mod* +------------------ + +Insert "v", "V" or CTRL-V between an operator and a motion command to force +the operator to work characterwise, linewise or blockwise. |o_v| + + +Search Path *new-search-path* +----------- + +Vim can search in a directory tree not only in downwards but also upwards. +Works for the 'path', 'cdpath' and 'tags' options. (Ralf Schandl) + +Also use "**" for 'tags' option. (Ralf Schandl) + +Added 'includeexpr', can be used to modify file name found by 'include' +option. +Also use 'includeexpr' for "gf" and "<cfile>" when the file can't be found +without modification. Useful for doing "gf" on the name after an include or +import statement. + +Added the 'cdpath' option: Locations to find a ":cd" argument. (Raf) + +Added the 'suffixesadd' option: Suffixes to be added to a file name when +searching for a file for the "gf", "[I", etc. commands. + + +Writing files improved *new-file-writing* +---------------------- + +Added the 'backupcopy' option: Select whether a file is to be copied or +renamed to make a backup file. Useful on Unix to speed up writing an ordinary +file. Useful on other systems to preserve file attributes and when editing a +file on a Unix filesystem. + +Added the 'autowriteall' option. Works like 'autowrite' but for more +commands. + +Added the 'backupskip' option: A list of file patterns to skip making a backup +file when it matches. The default for Unix includes "/tmp/*", this makes +"crontab -e" work. + +Added support for Access Control Lists (ACL) for FreeBSD and Win32. The ACL +is copied from the original file to the new file (or the backup if it's +copied). +ACL is also supported for AIX, Solaris and generic POSIX. (Tomas Ogren) +And on SGI. + + +Argument list *new-argument-list* +------------- + +The support for the argument list has been extended. It can now be +manipulated to contain the files you want it to contain. + +The argument list can now be local to a window. It is created with the +|:arglocal| command. The |:argglobal| command can be used to go back to the +global argument list. + +The |:argdo| command executes a command on all files in the argument list. + +File names can be added to the argument list with |:argadd|. File names can +be removed with |:argdelete|. + +"##" can be used like "#", it is replaced by all the names in the argument +list concatenated. Useful for ":grep foo ##". + +The |:argedit| adds a file to the argument list and edits it. Like ":argadd" +and then ":edit". + + +Restore a View *new-View* +-------------- + +The ":mkview" command writes a Vim script with the settings and mappings for +one window. When the created file is sourced, the view of the window is +restored. It's like ":mksession" for one window. +The View also contains the local argument list and manually created, opened +and closed folds. + +Added the ":loadview" command and the 'viewdir' option: Allows for saving and +restoring views of a file with simple commands. ":mkview 1" saves view 1 for +the current file, ":loadview 1" loads it again. Also allows quickly switching +between two views on one file. And saving and restoring manual folds and the +folding state. + +Added 'viewoptions' to specify how ":mkview" works. + +":mksession" now also works fine with vertical splits. It has been further +improved and restores the view of each window. It also works properly with +preview and quickfix windows. + +'sessionoptions' is used for ":mkview" as well. +Added "curdir" and "sesdir" to 'sessionoptions'. Allows selection of what +the current directory will be restored to. + +The session file now also contains the argument list(s). + + +Color schemes *new-color-schemes* +------------- + +Support for loading a color scheme. Added the ":colorscheme" command. +Automatically add menu entries for available schemes. +Should now properly reset the colors when 'background' or 't_Co' is changed. +":highlight clear" sets the default colors again. +":syntax reset" sets the syntax highlight colors back to the defaults. +For ":set bg&" guess the value. This allows a color scheme to switch back to +the default colors. +When syntax highlighting is switched on and a color scheme was defined, reload +the color scheme to define the colors. + + +Various new items *new-items-6* +----------------- + +Normal mode commands: ~ + +"gi" Jump to the ^ mark and start Insert mode. Also works when the + mark is just after the line. |gi| + +"g'm" and "g`m" + Jump to a mark without changing the jumplist. Now you can use + g`" to jump to the last known position in a file without side + effects. Also useful in mappings. + +[', [`, ]' and ]` + move the cursor to the next/previous lowercase mark. + +g_ Go to last non-blank in line. (Steve Wall) + + +Options: ~ + +'autoread' When detected that a file changed outside of Vim, + automatically read a buffer again when it's not changed. + It has a global and a local value. Use ":setlocal autoread<" + to go back to using the global value for 'autoread'. + +'debug' When set to "msg" it will print error messages that would + otherwise be omitted. Useful for debugging 'indentexpr' and + 'foldexpr'. + +'lispwords' List of words used for lisp indenting. It was previously hard + coded. Added a number of Lisp names to the default. + +'fold...' Many new options for folding. + +'modifiable' When off, it is impossible to make changes to a buffer. + The %m and %M items in 'statusline' show a '-'. + +'previewwindow' Set in the preview window. Used in a session file to mark a + window as the preview window. + +'printfont' +'printexpr' +'printheader' +'printdevice' +'printoptions' for ":hardcopy". + +'buflisted' Makes a buffer appear in the buffer list or not. + +Use "vim{version}:" for modelines, only to be executed when the version is +>= {version}. Also "vim>{version}", "vim<{version}" and "vim={version}". + + +Ex commands: ~ + +:sav[eas][!] {file} + Works like ":w file" and ":e #", but without loading the file + again and avoiding other side effects. |:saveas| + +:silent[!] {cmd} + Execute a command silently. Also don't use a delay that would + come after the message. And don't do 'showmatch'. + RISCOS: Removed that "!~cmd" didn't output anything, and + didn't wait for <Enter> afterwards. Can use ":silent !cmd" + now. +:menu <silent> Add a menu that won't echo Ex commands. +:map <silent> Add a mapping that won't echo Ex commands. + +:checktime Check for changed buffers. + +:verbose {cmd} Set 'verbose' for one command. + +:echomsg {expr} +:echoerr {expr} Like ":echo" but store the message in the history. (Mark + Waggoner) + +:grepadd Works just like ":grep" but adds to the current error list + instead of defining a new list. |:grepadd| + +:finish Finish sourcing a file. Can be used to skip the rest of a Vim + script. |:finish| + +:leftabove +:aboveleft Split left/above current window. + +:rightbelow +:belowright Split right/below current window. + +:first, :bfirst, :ptfirst, etc. + Alias for ":rewind". It's more logical compared to ":last". + +:enew Edit a new, unnamed buffer. This is needed, because ":edit" + re-edits the same file. (Wall) + +:quitall Same as ":qall". + +:match Define match highlighting local to a window. Allows + highlighting an item in the current window without interfering + with syntax highlighting. + +:menu enable +:menu disable Commands to enable/disable menu entries without removing them. + (Monish Shah) + +:windo Execute a command in all windows. +:bufdo Execute a command in all buffers. + +:wincmd Window (CTRL-W) command. Useful when a Normal mode command + can't be used (e.g., for a CursorHold autocommand). See + |CursorHold-example| for a nice application with it. + +:lcd and :lchdir + Set local directory for a window. (Benjie Chen) + +:hide {command} + Execute {command} with 'hidden' set. + +:emenu in Visual mode to execute a ":vmenu" entry. + +:popup Pop up a popup menu. + +:redraw Redraw the screen even when busy with a script or function. + +:hardcopy Print to paper. + +:compiler Load a Vim script to do settings for a specific compiler. + +:z# List numbered lines. (Bohdan Vlasyuk) + + +New marks: ~ + +'( and ') Begin or end of current sentence. Useful in Ex commands. +'{ and '} Begin or end of current paragraph. Useful in Ex commands. +'. Position of the last change in the current buffer. +'^ Position where Insert mode was stopped. + +Store the ^ and . marks in the viminfo file. Makes it possible to jump to the +last insert position or changed text. + + +New functions: ~ +argidx() Current index in argument list. +buflisted() Checks if the buffer exists and has 'buflisted' set. +cindent() Get indent according to 'cindent'. +eventhandler() Returns 1 when inside an event handler and interactive + commands can't be used. +executable() Checks if a program or batch script can be executed. +filewritable() Checks if a file can be written. (Ron Aaron) +foldclosed() Find out if there is a closed fold. (Johannes Zellner). +foldcloseend() Find the end of a closed fold. +foldlevel() Find out the foldlevel. (Johannes Zellner) +foreground() Move the GUI window to the foreground. +getchar() Get one character from the user. Can be used to define a + mapping that takes an argument. +getcharmod() Get last used key modifier. +getbufvar() gets the value of an option or local variable in a buffer (Ron + Aaron) +getfsize() Return the size of a file. +getwinvar() gets the value of an option or local variable in a window (Ron + Aaron) +globpath() Find matching files in a list of directories. +hasmapto() Detect if a mapping to a string is already present. +iconv() Convert a string from one encoding to another. +indent() gets the indent of a line (Ron Aaron) +inputdialog() Like input() but use a GUI dialog when possible. Currently + only works for Win32, Motif, Athena and GTK. + Use inputdialog() for the Edit/Settings/Text Width menu. Also + for the Help/Find.. and Toolbar FindHelp items. + (Win32 support by Thore B. Karlsen) + (Win16 support by Vince Negri) +inputsecret() Ask the user to type a string without showing the typed keys. + (Charles Campbell) +libcall() for Unix (Neil Bird, Johannes Zellner, Stephen Wall) +libcallnr() for Win32 and Unix +lispindent() Get indent according to 'lisp'. +mode() Return a string that indicates the current mode. +nextnonblank() Skip blank lines forwards. +prevnonblank() Skip blank lines backwards. Useful to for indent scripts. +resolve() MS-Windows: resolve a shortcut to the file it points to. + Unix: resolve a symbolic link. +search() Search for a pattern. +searchpair() Search for matching pair. Can be used in indent files to find + the "if" matching an endif. +setbufvar() sets an option or variable local to a buffer (Ron Aaron) +setwinvar() sets an option or variable local to a window (Ron Aaron) +stridx() Search for first occurrence of one string in another. +strridx() Search for last occurrence of one string in another. +tolower() Convert string to all-lowercase. +toupper() Convert string to all-uppercase. +type() Check the type of an expression. +wincol() window column of the cursor +winwidth() Width of a window. (Johannes Zellner) +winline() window line of the cursor + + +Added expansion of curly braces in variable and function names. This can be +used for variable names that include the value of an option. Or a primitive +form of arrays. (Vince Negri) + + +New autocommand events: ~ +BufWinEnter Triggered when a buffer is displayed in a window, after using + the modelines. Can be used to load a view. +BufWinLeave Triggered when a buffer is no longer in a window. Also + triggered when exiting Vim. Can be used to save views. +FileChangedRO Triggered before making the first change to a read-only file. + Can be used to check-out the file. (Scott Graham) +TermResponse Triggered when the terminal replies to the version-request. + The v:termresponse internal variable holds the result. Can be + used to react to the version of the terminal. (Ronald Schild) +FileReadCmd Triggered before reading a file. +BufReadCmd Triggered before reading a file into a buffer. +FileWriteCmd Triggered before writing a file. +BufWriteCmd Triggered before writing a buffer into a file. +FileAppendCmd Triggered before appending to a file. +FuncUndefined Triggered when a user function is not defined. (Ron Aaron) + +The autocommands for the *Cmd events read or write the file instead of normal +file read/write. Use this in netrw.vim to be able to edit files on a remote +system. (Charles Campbell) + + +New Syntax files: ~ + +bdf BDF font definition (Nikolai Weibull) +catalog SGML catalog (Johannes Zellner) +debchangelog Debian Changelog (Wichert Akkerman) +debcontrol Debian Control (Wichert Akkerman) +dot dot (Markus Mottl) +dsl DSSSL syntax (Johannes Zellner) +eterm Eterm configuration (Nikolai Weibull) +indent Indent profile (Nikolai Weibull) +lftp LFTP (Nikolai Weibull) +lynx Lynx config (Doug Kearns) +mush mush sourcecode (Bek Oberin) +natural Natural (Marko Leipert) +pilrc Pal resource compiler (Brian Schau) +plm PL/M (Philippe Coulonges) +povini Povray configuration (David Necas) +ratpoison Ratpoison config/command (Doug Kearns) +readline readline config (Nikolai Weibull) +screen Screen RC (Nikolai Weibull) +specman Specman (Or Freund) +sqlforms SQL*Forms (Austin Ziegler) +terminfo terminfo (Nikolai Weibull) +tidy Tidy configuration (Doug Kearns) +wget Wget configuration (Doug Kearns) + + +Updated many syntax files to work both with Vim 5.7 and 6.0. + +Interface to Ruby. (Shugo Maeda) +Support dynamic loading of the Ruby interface on MS-Windows. (Muraoka Taro) +Support this for Mingw too. (Benoit Cerrina) + +Win32: Added possibility to load TCL dynamically. (Muraoka Taro) +Also for Borland 5.5. (Dan Sharp) + +Win32: When editing a file that is a shortcut (*.lnk file), edit the file it +links to. Unless 'binary' is set, then edit the shortcut file itself. +(Yasuhiro Matsumoto) + +The ":command" command now accepts a "-bar" argument. This allows the user +command to be followed by "| command". + +The preview window is now also used by these commands: +- |:pedit| edits the specified file in the preview window +- |:psearch| searches for a word in included files, like |:ijump|, and + displays the found text in the preview window. +Added the CTRL-W P command: go to preview window. + +MS-DOS and MS-Windows also read the system-wide vimrc file $VIM/vimrc. Mostly +for NT systems with multiple users. + +A double-click of the mouse on a character that has a "%" match selects from +that character to the match. Similar to "v%". + +"-S session.vim" argument: Source a script file when starting up. Convenient +way to start Vim with a session file. + +Added "--cmd {command}" Vim argument to execute a command before a vimrc file +is loaded. (Vince Negri) + +Added the "-M" Vim argument: reset 'modifiable' and 'write', thus disallow +making changes and writing files. + +Added runtime/delmenu.vim. Source this to remove all menus and prepare for +loading new menus. Useful when changing 'langmenu'. + +Perl script to filter Perl error messages to quickfix usable format. (Joerg +Ziefle) + +Added runtime/macros/less.vim: Vim script to simulate less, but with syntax +highlighting. + +MS-Windows install program: (Jon Merz) +- The Win32 program can now create shortcuts on the desktop and install Vim in + the Start menu. +- Possibly remove old "Edit with Vim" entries. +- The Vim executable is never moved or $PATH changed. A small batch file is + created in a directory in $PATH. Fewer choices to be made. +- Detect already installed Vim versions and offer to uninstall them first. + +Improved the MS-Windows uninstal program. It now also deletes the entries in +the Start menu, icons from the desktop and the created batch files. (Jon Merz) +Also made it possible to delete only some of these. Also unregister gvim for +OLE. + +Generate a self-installing Vim package for MS-Windows. This uses NSIS. (Jon +Merz et al.) + +Added ":filetype detect". Try detecting the filetype again. Helps when +writing a new shell script, after adding "#!/bin/csh". + +Added ":augroup! name" to delete an autocommand group. Needed for the +client-server "--remote-wait". + +Add the Vim version number to the viminfo file, useful for debugging. + +============================================================================== +IMPROVEMENTS *improvements-6* + +Added the 'n' flag in 'cpoptions': When omitted text of wrapped lines is not +put between line numbers from 'number' option. Makes it a lot easier to read +wrapped lines. + +When there is a format error in a tags file, the byte position is reported so +that the error can be located. + +"gf" works in Visual mode: Use the selected text as the file name. (Chase +Tingley) + +Allow ambiguous mappings. Thus "aa" and "aaa" can both be mapped, the longest +matching one is used. Especially useful for ":lmap" and 'keymap'. + +Encryption: Ask the key to be typed twice when crypting the first time. +Otherwise a typo might cause the text to be lost forever. (Chase Tingley) + +The window title now has "VIM" on the end. The file name comes first, useful +in the taskbar. A "+" is added when the file is modified. "=" is added for +a read-only file. "-" is added for a file with 'modifiable' off. + +In Visual mode, mention the size of the selected area in the 'showcmd' +position. + +Added the "b:changedtick" variable. Incremented at each change, also for +undo. Can be used to take action only if the buffer has been changed. + +In the replacement string of a ":s" command "\=" can be used to replace with +the result of an expression. From this expression the submatch() function can +be used to access submatches. + +When doing ":qall" and there is a change in a buffer that is being edited in +another window, jump to that window, instead of editing that buffer in the +current window. + +Added the "++enc=" and "++ff=" arguments to file read/write commands to force +using the given 'encoding' or 'fileformat'. And added the "v:cmdarg" +variable, to be used for FileReadCmd autocommands that read/write the file +themselves. + +When reading stdin, first read the text in binary mode and then re-read it +with automatic selection of 'fileformat' and 'fileencoding'. This avoids +problems with not being able to rewind the file (e.g., when a line near the +end of the file ends in LF instead of CR-LF). +When reading text from stdin and the buffer is empty, don't mark it changed. +Allows exiting without trouble. + +Added an ID to many error messages. This will make it easier to find help for +a message. + +Insert mode: +- "CTRL-G j" and "CTRL-G k" can be used to insert in another line in the same + column. Useful for editing a table. +- Added Thesaurus completion with CTRL-X CTRL-T. (Vince Negri) +- Added the 'thesaurus' option, to use instead of 'dictionary' for thesaurus + completion. Added the 's' flag in 'complete'. +- Made CTRL-X CTRL-L in Insert mode use the 'complete' option. It now also + scans other loaded buffers for matching lines. +- CTRL-R now also works in Insert mode while doing completion with CTRL-X or + CTRL-N. (Neil Bird) +- When doing Insert mode completion, when completion is finished check for a + match with words from 'cinkeys' or 'indentkeys'. + +Performance: +- Made display updating more efficient. Insert/delete lines may be used for + all changes, also for undo/redo. +- The display is not redrawn when there is typeahead in Insert mode. Speeds + up CTRL-R a lot. +- Improved speed of screen output for 32 bit DOS version. (Vince Negri) +- When dragging with the mouse, there is a lookahead to skip mouse codes when + there is another one next. Makes dragging with the mouse a lot faster. +- Also a memory usage improvement: When calling u_save with a single line, + don't save it if the line was recently saved for the same undo already. +- When using a script that appends one character at a time, the amount of + allocated memory was growing steadily. Also when 'undolevels' is -1. + Caused by the line saved for "U" never to be freed. Now free an undo block + when it becomes empty. +- GUI and Dos32: Use a vertical scroll region, to make scrolling in a + vertically split window faster. No need to redraw the whole window. +- When scrolling isn't possible with terminal codes (e.g., for a vertically + split window) redraw from ScreenLines[]. That should be faster than going + through the lines with win_line(), especially when using syntax + highlighting. +- The Syntax menu is now pre-generated by a separate script. Makes loading + the menu 70% faster. This can halve the startup time of gvim. +- When doing ":help tag", don't open help.txt first, jump directly to the help + tag. It's faster and avoids an extra message. +- Win32: When a file name doesn't end in ".lnk" don't try resolving a + shortcut, it takes quite a bit of time. +- Don't update the mouse pointer shape while there are typeahead characters. +- Change META[] from a string into an array, avoids using strchr() on it. +- Don't clear the command line when adding characters, avoids that screen_fill + is called but doesn't do anything. + +Robustness: +- Unix: Check for running out of stack space when executing a regexp. Avoids + a nasty crash. Only works when the system supports running the signal + function on another stack. +- Disallow ":source <dirname>". On unix it's possible to read a directory, + does not make sense to use it as Vim commands. + +Security: +- When reading from or writing to a temporary file, check that it isn't a + symbolic link. Gives some protection against symlink attacks. +- When creating a backup file copy or a swap file, check for it already + existing to avoid a symlink attack. (Colin Phipps) +- Evaluating options which are an expression is done in a |sandbox|. If the + option was set by a modeline, it cannot cause damage. +- Use a secure way to generate temp file names: Create a private directory for + temp files. Used for Unix, MS-DOS and OS/2. +- 'makeef' can be empty, which means that an internally generated file name is + used. The old default was "/tmp/file", which is a security risk. + Writing 'makeef' in the current directory fails in a read-only directory and + causes trouble when using ":grep" on all files. Made the default empty for + all systems, so that a temp file is used. +- The command from a tags file is executed in the sandbox for better security. +- The Ruby, Tcl and Python interfaces cannot be used from the sandbox. They + might do dangerous things. Perl is still possible, but limited to the Safe + environment. (Donnie Smith) + +Syntax highlighting: +- Optimized the speed by caching the state stack all over the file, not just + the part being displayed. Required for folding. +- Added ":syntax sync fromstart": Always parse from the start of the file. +- Added the "display" argument for syntax items: use the item only when + displaying the result. Can make parsing faster for text that isn't going to + be displayed. +- When using CTRL-L, the cached states are deleted, to force parsing the text + again. +- Use elfhash algorithm for table of keywords. This should give a better + distribution and speedup keyword lookup. (Campbell) +- Also allow the "lc" leading context for skip and end patterns. (Scott + Bigham) +- Syntax items can have the "extend" argument to undo the effect of a + "keepend" argument of an item it is contained in. Makes it possible to have + some contained items extend a region while others don't. +- ":syntax clear" now deletes the b:current_syntax variable. That's logical, + since no syntax is defined after this command. +- Added ":syntax enable": switch on syntax highlighting without changing the + colors. This allows specifying the colors in the .vimrc file without the + need for a mysyntaxfile. +- Added ":syntax reset": reset the colors to their defaults. +- Added the "contains=TOP" and "contains=CONTAINED" arguments. Makes it + possible to define a transparent item that doesn't contain itself. +- Added a "containedin" argument to syntax items. Allows adding a contained + item to an existing item (e.g., to highlight a name in a comment). + +Modeless selection: +- When in the command-line window, use modeless selection in the other + windows. Makes it possible to copy visible text to the command-line window. +- Support modeless selection on the cmdline in a terminal. Previously it was + only possible for the GUI. +- Make double-right-click in modeless selection select a whole word. Single + right click doesn't use the word selection started by a double-left-click. + Makes it work like in Visual mode. +- The modeless selection no longer has an implied automatic copy to the + clipboard. It now obeys the 'a' and 'A' flags in 'guioptions' or + "autoselect" and "autoselectml" in 'clipboard'. +- Added the CTRL-Y command in Cmdline-mode to copy the modeless selection to + the clipboard. Also works at the hit-enter prompt and the more prompt. + Removed the mappings in runtime/mswin.vim for CTRL-Y and CTRL-Z in + cmdline-mode to be able to use CTRL-Y in the new way. + +Reduced the amount of stack space used by regmatch() to allow it to handle +complicated patterns on a longer text. + +'isfname' now includes '%' and '#'. Makes "vim dir\#file" work for MS-DOS. + +Added keypad special keys <kEnter>, <k0> - <k9>. When not mapped they behave +like the ASCII equivalent. (Ivan Wellesz and Vince Negri) +Recognize a few more xterm keys: <C-Right>, <C-Left>, <C-End>, <C-Home> + +Also trigger the BufUnload event when Vim is going to exit. Perhaps a script +needs to do some cleaning up. + +Expand expression in backticks: `={expr}`. Can be used where backtick +expansion is done. (Vince Negri) + +GUI: +- Added 'L' and 'R' flags in 'guioptions': Add a left or right scrollbar only + when there is a vertically split window. +- X11: When a color can't be allocated, use the nearest match from the + colormap. This avoids that black is used for many things. (Monish Shah) + Also do this for the menu and scrollbar, to avoid that they become black. +- Win32 and X11: Added 'mouseshape' option: Adjust the mouse pointer shape to + the current mode. (Vince Negri) +- Added the 'linespace' option: Insert a pixel line between lines. (Nam) +- Allow modeless selection (without moving the cursor) by keeping CTRL and + SHIFT pressed. (Ivan Wellesz) +- Motif: added toolbar. (Gordon Prieur) Also added tooltips. +- Athena: added toolbar and tooltips. (David Harrison -- based on Gordon + Prieur's work) +- Made the 'toolbar' option work for Athena and Motif. Can now switch between + text and icons on the fly. (David Harrison) +- Support menu separator lines for Athena. (David Harrison) +- Athena: Adjust the arrow pixmap used in a pullright menu to the size of the + font. (David Harrison) +- Win32: Added "c" flag to 'guifont' to be able to specify the charset. (Artem + Khodush) +- When no --enable-xim argument is given, automatically enable it when a X GUI + is used. Required for dead key support (and multi-byte input). +- After a file selection dialog, check that the edited files were not changed + or deleted. The Win32 dialog allows deleting and renaming files. +- Motif and Athena: Added support for "editres". (Marcin Dalecki) +- Motif and Athena: Added "menuFont" to be able to specify a font or fontset + for the menus. Can also be set with the "Menu" highlight group. Useful + when the locale is different from 'encoding'. (David Harrison) + When FONTSET_ALWAYS is defined, always use a fontset for the menus. Should + avoid trouble with changing from a font to a fontset. (David Harrison) +- Highlighting and font for the tooltips can be specified with the "Tooltip" + highlight group. (David Harrison) +- The Cmdline-mode menus can be used at the more-prompt. This mostly works + fine, because they start with a CTRL-C. The "Copy" menu works to copy the + modeless selection. Allows copying the output of ":set all" or ":intro" + without auto-selection. +- When starting the GUI when there is no terminal connected to stdout and + stderr, display error messages in a dialog. Previously they wouldn't be + displayed at all. +- Allow setting 'browsedir' to the name of a directory, to be used for the + file dialog. (Dan Sharp) +- b:browsefilter and g:browsefilter can be set to the filters used for the + file dialog. Supported for Win32 and Motif GUI. (Dan Sharp) + +X11: +- Support for the clipboard selection as register "+. When exiting or + suspending copy the selection to cut buffer 0. Should allow copy/paste with + more applications in a X11-standard way. (Neil Bird) +- Use the X clipboard in any terminal, not just in an xterm. + Added "exclude:" in 'clipboard': Specify a pattern to match against terminal + names for which no connection should be made to the X server. The default + currently work for FreeBSD and Linux consoles. +- Added a few messages for when 'verbose' is non-zero to show what happens + when trying to connect to the X server. Should help when trying to find out + why startup is slow. + +GTK GUI: (partly by Marcin Dalecki) +- With some fonts the characters can be taller than ascent + descent. E.g., + "-misc-fixed-*-*-*-*-18-*-*-*-*-*-iso10646-1". Add one to the character + cell height. +- Implement "no" value for 'winaltkeys': don't use Alt-Key as a menu shortcut, + when 'wak' changed after creating the menus. +- Setting 'wak' after the GUI started works. +- recycle text GC's to reduce communication. +- Adjust icon size to window manager. +- Cleanup in font handling. +- Replace XQueryColor with GDK calls. +- Gnome support. Detects Gnome in configure and uses different widgets. + Otherwise it's much like GTK. (Andy Kahn) + It is disabled by default, because it causes a few problems. +- Removed the special code to fork first and then start the GUI. Now use + _exit() instead of exit(), this works fine without special tricks. +- Dialogs sometimes appeared a bit far away. Position the dialogs inside + the gvim window. (Brent Verner) +- When dropping a file on Vim, remove extra slashes from the start of the + path. Also shorten the file name if possible. + +Motif: (Marcin Dalecki) +- Made the dialog layout better. +- Added find and find/replace dialogs. +- For the menus, change "iso-8859" to "iso_8859", Linux appears to need this. +- Added icon to dialogs, like for GTK. +- Use XPM bitmaps for the icon when possible. Use the Solaris XpmP.h include + file when it's available. +- Change the shadow of the toolbar items to get a visual feedback of it being + pressed on non-LessTif. +- Use gadgets instead of windows for some items for speed. + +Command line completion: +- Complete environment variable names. (Mike Steed) +- For ":command", added a few completion methods: "mapping", "function", + "expression" and "environment". +- When a function doesn't take arguments, let completion add () instead of (. + +For MS-DOS, MS-Windows and OS/2: Expand %VAR% environment variables like $VAR. +(Walter Briscoe) + +Redirect messages to the clipboard ":redir @*" and to the unnamed register +":redir @"". (Wall) + +":let @/ = ''" clears the search pattern, instead of setting it to an empty +string. + +Expression evaluation: +- "? :" can be used like in C. +- col("$") returns the length of the cursor line plus one. (Stephen P. Wall) +- Optional extra argument for match(), matchend() and matchstr(): Offset to + start looking for a match. +- Made third argument to strpart() optional. (Paul Moore, Zdenek Sekera) +- exists() can also be used to check for Ex commands and defined autocommands. +- Added extra argument to input(): Default text. +- Also set "v:errmsg" when using ":silent! cmd". +- Added the v:prevcount variable: v:count for the previous command. +- Added "v:progname", name with which Vim was started. (Vince Negri) +- In the verbose message about returning from a function, also show the return + value. + +Cscope: +- Added the cscope_connection() function. (Andy Kahn) +- ":cscope kill -1" kills all cscope connections. (Andy Kahn) +- Added the 'cscopepathcomp' option. (Scott Hauck) +- Added ":scscope" command, split window and execute Cscope command. (Jason + Duell) + +VMS: +- Command line arguments are always uppercase. Interpret a "-X" argument as + "-x" and "-/X" as "-X". +- Set 'makeprg' and 'grepprg' to meaningful defaults. (Zoltan Arpadffy) +- Use the X-clipboard feature and the X command server. (Zoltan Arpadffy) + +Macintosh: (Dany St-Amant) +- Allow a tags file to have CR, CR-LF or LF line separator. (Axel Kielhorn) +- Carbonized (while keeping non Carbon code) + (Some work "stolen" from Ammon Skidmore) +- Improved the menu item index handling (should be faster) +- Runtime commands now handle / in file name (MacOS 9 version) +- Added ":winpos" support. +- Support using "~" in file names for home directory. + +Options: +- When using set += or ^= , check for items used twice. Duplicates are + removed. (Vince Negri) +- When setting an option that is a list of flags, remove duplicate flags. +- If possible, use getrlimit() to set 'maxmemtot' and 'maxmem'. (Pina) +- Added "alpha" to 'nrformats': increment or decrement an alphabetic character + with CTRL-A and CTRL-X. +- ":set opt&vi" sets an option to its Vi default, ":set opt&vim" to its Vim + default. Useful to set 'cpo' to its Vim default without knowing what flags + that includes. +- 'scrolloff' now also applies to a long, wrapped line that doesn't fit in the + window. +- Added more option settings to the default menus. +- Updated the option window with new options. Made it a bit easier to read. + +Internal changes: +- Split line pointers in text part and attributes part. Allows for future + change to make attribute more than one byte. +- Provide a qsort() function for systems that don't have it. +- Changed the big switch for Normal mode commands into a table. This cleans + up the code considerably and avoids trouble for some optimizing compilers. +- Assigned a negative value to special keys, to avoid them being mixed up with + Unicode characters. +- Global variables expand_context and expand_pattern were not supposed to be + global. Pass them to ExpandOne() and all functions called by it. +- No longer use the global reg_ic flag. It caused trouble and in a few places + it was not set. +- Removed the use of the stuff buffer for "*", "K", CTRL-], etc. Avoids + problem with autocommands. +- Moved some code from ex_docmd.c to ex_cmds2.c. The file was getting too + big. Also moved some code from screen.c to move.c. +- Don't include the CRC table for encryption, generate it. Saves quite a bit + of space in the source code. (Matthias Kramm) +- Renamed multibyte.c to mbyte.c to avoid a problem with 8.3 filesystems. +- Removed the GTK implementation of ":findhelp", it now uses the + ToolBar.FindHelp menu entry. +- Renamed mch_windexit() to mch_exit(), mch_init() to mch_early_init() and + mch_shellinit() to mch_init(). + +Highlighting: +- In a ":highlight" listing, show "xxx" with the highlight color. +- Added support for xterm with 88 or 256 colors. The right color numbers will + be used for the name used in a ":highlight" command. (Steve Wall) +- Added "default" argument for ":highlight". When included, the command is + ignored if highlighting for the group was already defined. + All syntax files now use ":hi default ..." to allow the user to specify + colors in his vimrc file. Also, the "if did_xxx_syntax_inits" is not needed + anymore. This greatly simplifies using non-default colors for a specific + language. +- Adjusted colortest.vim: Included colors on normal background and reduced the + size by using a while loop. (Rafael Garcia-Suarez) +- Added the "DarkYellow" color name. Just to make the list of standard colors + consistent, it's not really a nice color to use. + +When an xterm is in 8-bit mode this is detected by the code returned for +|t_RV|. All key codes are automatically converted to their 8-bit versions. + +The OPT_TCAP_QUERY in xterm patch level 141 and later is used to obtain the +actual key codes used and the number of colors for t_Co. Only when |t_RV| is +also used. + +":browse set" now also works in the console mode. ":browse edit" will give an +error message. + +":bdelete" and ":bunload" only report the number of deleted/unloaded buffers +when more than 'report'. The message was annoying when deleting a buffer in a +script. + +Jump list: +- The number of marks kept in the jumplist has been increased from 50 to 100. +- The jumplist is now stored in the viminfo file. CTRL-O can be used to jump + to positions from a previous edit session. +- When doing ":split" copy the jumplist to the new window. + +Also set the '[ and '] marks for the "~" and "r" commands. These marks are +now always set when making a change with a Normal mode command. + +Python interface: Allow setting the width of a vertically split window. (John +Cook) + +Added "=word" and "=~word" to 'cinkeys' (also used in 'indentkeys'). + +Added "j1" argument in 'cinoptions': indent {} inside () for Java. (Johannes +Zellner) +Added the "l" flag in 'cinoptions'. (Anduin Withers) +Added 'C', 'U', 'w' and 'm' flags to 'cinoptions'. (Servatius Brandt) + +When doing ":wall" or ":wqall" and a modified buffer doesn't have a name, +mention its buffer number in the error message. + +":function Name" lists the function with line numbers. Makes it easier to +find out where an error happened. + +In non-blockwise Visual mode, "r" replaces all selected characters with the +typed one, like in blockwise Visual mode. + +When editing the last file in the argument list in any way, allow exiting. +Previously this was only possible when getting to that file with ":next" or +":last". + +Added the '1' flag to 'formatoptions'. (Vit Stradal) +Added 'n' flag in 'formatoptions': format a numbered list. + +Swap file: +- When a swap file already exists, and the user selects "Delete" at the + ATTENTION prompt, use the same ".swp" swapfile, to avoid creating a ".swo" + file which won't always be found. +- When giving the ATTENTION message and the date of the file is newer than the + date of swap file, give a warning about this. +- Made the info for an existing swap file a bit shorter, so that it still fits + on a 24 line screen. +- It was possible to make a symlink with the name of a swap file, linking to a + file that doesn't exist. Vim would then silently use another file (if open + with O_EXCL refuses a symlink). Now check for a symlink to exist. Also do + another check for an existing swap file just before creating it to catch a + symlink attack. + +The g CTRL-G command also works in Visual mode and counts the number of words. +(Chase Tingley) + +Give an error message when using 'shell' and it's empty. + +Added the possibility to include "%s" in 'shellpipe'. + +Added "uhex" value for 'display': show non-printable characters as <xx>. +Show unprintable characters with NonText highlighting, also in the command +line. + +When asked to display the value of a hidden option, tell it's not supported. + +Win32: +- When dropping a shortcut on gvim (.lnk file) edit the target, not the + shortcut itself. (Yasuhiro Matsumoto) +- Added C versions of the OpenWithVim and SendToVim programs. (Walter Briscoe) +- When 'shell' is "cmd" or "cmd.exe", set 'shellredir' to redirect stderr too. + Also check for the Unix shell names. +- When $HOMEDRIVE and $HOMEPATH are defined, use them to define $HOME. (Craig + Barkhouse) + +Win32 console version: +- Includes the user and system name in the ":version" message, when available. + It generates a pathdef.c file for this. (Jon Miner) +- Set the window icon to Vim's icon (only for Windows 2000). While executing + a shell command, modify the window title to show this. When exiting, + restore the cursor position too. (Craig Barkhouse) +- The Win32 console version can be compiled with OLE support. It can only + function as a client, not as an OLE server. + +Errorformat: +- Let "%p" in 'errorformat' (column of error indicated by a row of characters) + also accept a line of dots. +- Added "%v" item in 'errorformat': Virtual column number. (Dan Sharp) +- Added a default 'errorformat' value for VMS. (Jim Bush) + +The "p" command can now be used in Visual mode. It overwrites the selected +text with the contents of a register. + +Highlight the <> items in the intro message to make clear they are special. + +When using the "c" flag for ":substitute", allow typing "l" for replacing this +item and then stop: "last". + +When printing a verbose message about sourcing another file, print the line +number. + +When resizing the Vim window, don't use 'equalalways'. Avoids that making the +Vim window smaller makes split windows bigger. And it's what the docs say. + +When typing CTRL-D in Insert mode, just after an autoindent, then hitting CR +kept the remaining white space. Now made it work like BS: delete the +autoindent to avoid a blank non-empty line results. + +Added a GetHwnd() call to the OLE interface. (Vince Negri) + +Made ":normal" work in an event handler. Useful when dropping a file on Vim +and for CursorHold autocommands. + +For the MS-Windows version, don't change to the directory of the file when a +slash is used instead of a backslash. Explorer should always use a backslash, +the user can use a slash when typing the command. + +Timestamps: +- When a buffer was changed outside of Vim and regaining focus, give a dialog + to allow the user to reload the file. Now also for other GUIs than + MS-Windows. And also used in the console, when compiled with dialog + support. +- Inspect the file contents to find out if it really changed, ignore + situations where only the time stamp changed (e.g., checking the file out + from CVS). +- When checking the timestamp, first check if the file size changed, to avoid + a file compare then. Makes it quicker for large (log) files that are + appended to. +- Don't give a warning for a changed or deleted file when 'buftype' is set. +- No longer warn for a changed directory. This avoids that the file explorer + produces warnings. +- Checking timestamps is only done for buffers that are not hidden. These + will be checked when they become unhidden. +- When checking for a file being changed outside of Vim, also check if the + file permissions changed. When the file contents didn't change but the + permissions did, give a warning. +- Avoid checking too often, otherwise the dialog keeps popping up for a log + file that steadily grows. + +Mapping <M-A> when 'encoding' is "latin1" and then setting 'encoding' to +"utf-8" causes the first byte of a multi-byte to be mapped. Can cause very +hard to find problems. Disallow mapping part of a multi-byte character. + +For ":python" and ":tcl" accept an in-line script. (Johannes Zellner) +Also for ":ruby" and ":perl". (Benoit Cerrina) + +Made ":syn include" use 'runtimepath' when the file name is not a full path. + +When 'switchbuf' contains "split" and the current window is empty, don't split +the window. + +Unix: Catch SIGPWR to preserve files when the power is about to go down. + +Sniff interface: (Anton Leherbauer) +- fixed windows code, esp. the event handling stuff +- adaptations for sniff 4.x ($SNIFF_DIR4) +- support for adding sniff requests at runtime + +Support the notation <A-x> as an alias for <M-x>. This logical, since the Alt +key is used. + +":find" accepts a count, which means that the count'th match in 'path' is +used. + +":ls" and ":buffers" output shows modified/readonly/modifiable flag. When a +buffer is active show "a" instead of nothing. When a buffer isn't loaded +show nothing instead of "-". + +Unix install: +- When installing the tools, set absolute paths in tools scripts efm_perl.pl + and mve.awk. Avoids that the user has to edit these files. +- Install Icons for KDE when the directories exist and the icons do not exist + yet. + +Added has("win95"), to be able to distinguish between MS-Windows 95/98/ME and +NT/2000/XP in a Vim script. + +When a ":cd" command was typed, echo the new current directory. (Dan Sharp) + +When using ":winpos" before the GUI window has been opened, remember the +values until it is opened. + +In the ":version" output, add "/dyn" for features that are dynamically loaded. +This indicates the feature may not always work. + +On Windows NT it is possible that a directory is read-only, but a file can be +deleted. When making a backup by renaming the file and 'backupdir' doesn't +use the current directory, this causes the original file to be deleted, +without the possibility to create a new file. Give an extra error message +then to warn to user about this. + +Made CTRL-R CTRL-O at the command line work like CTRL-R CTRL-R, so that it's +consistent with Insert mode. + +============================================================================== +COMPILE TIME CHANGES *compile-changes-6* + +All generated files have been moved out of the "src" directory. This makes it +easy to see which files are not edited by hand. The files generated by +configure are now in the "src/auto" directory. For Unix, compiled object +files go in the objects directory. + +The source archive was over the 1.4M floppy limit. The archives are now split +up into two runtime and two source archives. Also provide a bzip2 compressed +archive that contains all the sources and runtime files. + +Added "reconfig" as a target for make. Useful when changing some of the +arguments that require flushing the cache, such as switching from GTK to +Motif. Adjusted the meaning of GUI_INC_LOC and GUI_LIB_LOC to be consistent +over different GUIs. + +Added src/README.txt to give an overview of the main parts of the source code. + +The Unix Makefile now fully supports using $(DESTDIR) to install to a specific +location. Replaces the manual setting of *ENDLOC variables. + +Added the possibility for a maintainer of a binary version to include his +e-mail address with the --with-compiledby configure argument. + +Included features are now grouped in "tiny", "small", "normal", "big" and +"huge". This replaces "min-features" and "max-features". Using "tiny" +disables multiple windows for a really small Vim. + +For the tiny version or when FEAT_WINDOWS is not defined: Firstwin and lastwin +are equal to curwin and don't use w_next and w_prev. + +Added the +listcmds feature. Can be used to compile without the Vim commands +that manipulate the buffer list and argument list (the buffer list itself is +still there, can't do without it). + +Added the +vreplace feature. It is disabled in the "small" version to avoid +that the 16 bit DOS version runs out of memory. + +Removed GTK+ support for versions older than 1.1.16. + +The configure checks for using PTYs have been improved. Code taken from a +recent version of screen. + +Added configure options to install Vim, Ex and View under another name (e.g., +vim6, ex6 and view6). + +Added "--with-global-runtime" configure argument. Allows specifying the +global directory used in the 'runtimepath' default. + +Made enabling the SNiFF+ interface possible with a configure argument. + +Configure now always checks /usr/local/lib for libraries and +/usr/local/include for include files. Helps finding the stuff for iconv() and +gettext(). + +Moved the command line history stuff into the +cmdline_hist feature, to +exclude the command line history from the tiny version. + +MS-Windows: Moved common functions from Win16 and Win32 to os_mswin.c. Avoids +having to change two files for one problem. (Vince Negri) + +Moved common code from gui_w16.c and gui_w32.c to gui_w48.c (Vince Negri) + +The jumplist is now a separate feature. It is disabled for the "small" +version (16 bit MS-DOS). + +Renamed all types ending in _t to end in _T. Avoids potential problems with +system types. + +Added a configure check for X11 header files that implicitly define the return +type to int. (Steve Wall) + +"make doslang" in the top directory makes an archive with the menu and .mo +files for Windows. This uses the files generated on Unix, these should work +on MS-Windows as well. + +Merged a large part of os_vms.c with os_unix.c. The code was duplicated in +the past which made maintenance more work. (Zoltan Arpadffy) + +Updated the Borland C version 5 Makefile: (Dan Sharp) +- Fixed the Perl build +- Added python and tcl builds +- Added dynamic perl and dynamic python builds +- Added uninstal.exe build +- Use "yes" and "no" for the options, like in Make_mvc.mak. + +Win32: Merged Make_gvc.mak and Make_ovc.mak into one file: Make_ivc.mak. It's +much smaller, many unnecessary text has been removed. (Walter Briscoe) +Added Make_dvc.mak to be able to debug exe generated with Make_mvc.mak in +MS-Devstudio. (Walter Briscoe) + +MS-Windows: The big gvim.exe, which includes OLE, now also includes +dynamically loaded Tcl, Perl and Python. This uses ActivePerl 5.6.1, +ActivePython 2.1.1 and ActiveTCL 8.3.3 + +Added AC_EXEEXT to configure.in, to check if the executable needs ".exe" for +Cygwin or MingW. Renamed SUFFIX to EXEEXT in Makefile. + +Win32: Load comdlg32.dll delayed for faster startup. Only when using VC 6. +(Vipin Aravind) + +Win32: When compiling with Borland, allow using IME. (Yasuhiro Matsumoto) + +Win32: Added Makefile for Borland 5 to compile gvimext.dll. (Yasuhiro +Matsumoto) + +============================================================================== +BUG FIXES *bug-fixes-6* + +When checking the command name for "gvim", "ex", etc. ignore case. Required +for systems where case is ignored in command names. + +Search pattern "[a-c-e]" also matched a 'd' and didn't match a '-'. + +When double-clicking in another window, wasn't recognized as double click, +because topline is different. Added set_mouse_topline(). + +The BROKEN_LOCALE check was broken. (Marcin Dalecki) + +When "t_Co" is set, the default colors remain the same, thus wrong. Reset the +colors after changing "t_Co". (Steve Wall) + +When exiting with ":wqall" the messages about writing files could overwrite +each other and be lost forever. + +When starting Vim with an extremely long file name (around 1024 characters) it +would crash. Added a few checks to avoid buffer overflows. + +CTRL-E could get stuck in a file with very long lines. + +":au syntax<Tab>" expanded event names while it should expand groups starting +with "syntax". + +When expanding a file name caused an error (e.g., for <amatch>) it was +produced even when inside an "if 0". + +'cindent' formatted C comments differently from what the 'comments' option +specified. (Steve Wall) + +Default for 'grepprg' didn't include the file name when only grepping in one +file. Now /dev/null has been added for Unix. + +Opening the option window twice caused trouble. Now the cursor goes to the +existing option window. + +":sview" and ":view" didn't set 'readonly' for an existing buffer. Now do set +'readonly', unless the buffer is also edited in another window. + +GTK GUI: When 'guioptions' excluded 'g', the more prompt caused the toolbar +and menubar to disappear and resize the window (which clears the text). +Now always grey-out the toplevel menus to avoid that the menubar changes size +or disappears. + +When re-using the current buffer for a new buffer, buffer-local variables were +not deleted. + +GUI: when 'scrolloff' is 0 dragging the mouse above the window didn't cause a +down scroll. Now pass on a mouse event with mouse_row set to -1. + +Win32: Console version didn't work on telnet, because of switching between two +console screens. Now use one console screen and save/restore the contents +when needed. (Craig Barkhouse) + +When reading a file the magic number for encryption was included in the file +length. (Antonio Colombo) + +The quickfix window contained leading whitespace and NULs for multi-line +messages. (David Harrison) + +When using cscope, redundant tags were removed. This caused a numbering +problem, because they were all listed. Don't remove redundant cscope tags. +(David Bustos). + +Cscope: Test for which matches are in the current buffer sometimes failed, +causing a jump to another match than selected. (David Bustos) + +Win32: Buffer overflow when adding a charset name in a font. + +'titlestring' and 'iconstring' were evaluating an expression in the current +context, which could be a user function, which is a problem for local +variables vs global variables. + +Win32 GUI: Mapping <M-F> didn't work. Now handle SHIFT and CTRL in +_OnSysChar(). + +Win32 GUI: (on no file), :vs<CR>:q<CR> left a trail of pixels down the middle. +Could also happen for the ruler. screen_puts() didn't clear the right char in +ScreenLines[] for the bold trick. + +Win32: ":%!sort|uniq" didn't work, because the input file name touches the +"|". Insert a space before the "|". + +OS/2: Expanding wildcards included non-existing files. Caused ":runtime" to +fail, which caused syntax highlighting to fail. + +Pasting a register containing CTRL-R on the command line could cause an +endless loop that can't be interrupted. Now it can be stopped with CTRL-C. + +When 'verbose' is set, a message for file read/write could overwrite the +previous message. +When 'verbose' is set, the header from ":select" was put after the last +message. Now start a new line. + +The hit-enter prompt reacted to the response of the t_RV string, causing +messages at startup to disappear. + +When t_Co was set to 1, colors were still used. Now only use color when t_Co +> 1. + +Listing functions with ":function" didn't quit when 'q' or ':' was typed at +the more prompt. + +Use mkstemp() instead of mktemp() when it's available, avoids a warning for +linking on FreeBSD. + +When doing Insert mode completion it's possible that b_sfname is NULL. Don't +give it to printf() for the "Scanning" message. + +":set runtimepath-=$VIMRUNTIME" didn't work, because expansion of wildcards +was done after trying to remove the string. Now for ":set opt+=val" and ":set +opt-=val" the expansion of wildcards is done before adding or removing "val". + +Using CTRL-V with the "r" command with a blockwise Visual selection inserted a +CTRL-V instead of getting a special character. + +Unix: Changed the order of libraries: Put -lXdmcp after -lX11 and -lSM -lICE +after -lXdmcp. Should fix link problem on HP-UX 10.20. + +Don't remove the last "-lm" from the link line. Vim may link but fail later +when the GUI starts. + +When the shell returns with an error when trying to expand wildcards, do +include the pattern when the "EW_NOTFOUND" flag was set. +When expanding wildcards with the shell fails, give a clear error message +instead of just "1 returned". + +Selecting a Visual block, with the start partly on a Tab, deleting it leaves +the cursor too far to the left. Causes "s" to work in the wrong position. + +Pound sign in normal.c caused trouble on some compilers. Use 0xA3 instead. + +Warning for changing a read-only file wasn't given when 'insertmode' was set. + +Win32: When 'shellxquote' is set to a double quote (e.g., using csh), ":!start +notepad file" doesn't work. Remove the double quotes added by 'shellxquote' +when using ":!start". (Pavol Juhas) + +The "<f-args>" argument of ":command" didn't accept Tabs for white space. +Also, don't add an empty argument when there are trailing blanks. + +":e test\\je" edited "test\je", but ":next test\\je" edited "testje". +Backslashes were removed one time too many for ":next". + +VMS: "gf" didn't work properly. Use vms_fixfilename() to translate the file +name. (Zoltan Arpadffy) + +After ":hi Normal ctermbg=black ctermfg=white" and suspending Vim not all +characters are redrawn with the right background. + +When doing "make test" without +eval or +windows feature, many tests failed. +Now have test1 generate a script to copy the correct output, so that a test +that doesn't work is skipped. + +On FreeBSD the Perl interface added "-lc" to the link command and Python added +"-pthread". These two don't work together, because the libc_r library should +be used. Removed "-lc" from Perl, it should not be needed. +Also: Add "-pthread" to $LIBS, so that the checks for functions is done with +libc_r. Sigaltstack() appears to be missing from libc_r. + +The Syntax sub-menus were getting too long, reorganized them and added another +level for some languages. + +Visual block "r"eplace didn't work well when a Tab is partly included. +(Matthias Kramm) + +When yanking a Visual block, where some lines end halfway the block, putting +the text somewhere else doesn't insert a block. Padd with spaces for missing +characters. Added "y_width" to struct yankreg. (Matthias Kramm) + +If a substitute string has a multibyte character after a backslash only the +first byte of it was skipped. (Muraoka Taro) + +Win32: Numeric keypad keys were missing from the builtin termcap entry. + +When a file was read-only ":wa!" didn't force it to be written. (Vince Negri) + +Amiga: A file name starting with a colon was considered absolute but it isn't. +Amiga: ":pwd" added a slash when in the root of a drive. + +Don't let 'ttymouse' default to "dec" when compiled with dec mouse support. +It breaks the gpm mouse (Linux console). + +The prototypes for the Perl interface didn't work for threaded Perl. Added a +sed command to remove the prototypes from proto/if_perl.pro and added them +manually to if_perl.xs. + +When ":w!" resets the 'readonly' option the title and status lines were not +updated. + +":args" showed the current file when the argument list was empty. Made this +work like Vi: display nothing. + +"99:<C-U>echo v:count" echoed "99" in Normal mode, but 0 in Visual mode. +Don't set v:count when executing a stuffed command. + +Amiga: Got a requester for "home:" because it's in the default runtime path. +Don't bring up a requester when searching for a file in 'path', sourcing the +.vimrc file or using ":runtime". + +Win16 and Win32: Considered a file "\path\file" absolute. Can cause the same +file to appear as two different buffers. + +Win32: Renaming a file to an empty string crashed Vim. Happened when using +explorer.vim and hitting ESC at the rename prompt. + +Win32: strftime() crashed when called with a "-1" value for the time. + +Win32 with Borland compiler: mch_FullName() didn't work, caused tag file not +to be found. + +Cscope sometimes jumped to the wrong tag. (David Bustos) + +OS/2: Could not find the tags file. mch_expand_wildcards() added another +slash to a directory name. + +When using ">>" the `] mark was not in the last column. + +When Vim was compiled without menu support, filetype.vim was still trying to +source the menu.vim script. (Rafael Garcia-Suarez) + +":ptag" added an item to the tag stack. + +Win32 IME: "gr" didn't use IME mode. + +In the "vim --help" message the term "options" was used for arguments. That's +confusing, call them "arguments". + +When there are two windows, and a BufUnload autocommand for closing window #1 +closed window #2, Vim would crash. + +When there is a preview window and only one other window, ":q" wouldn't exit. + +In Insert mode, when cancelling a digraph with ESC, the '?' wasn't removed. + +On Unix glob(".*") returned "." and "..", on Windows it didn't. On Windows +glob("*") also returned files starting with a dot. Made this work like Unix +on all systems. + +Win32: Removed old code to open a console. Vimrun is now used and works fine. + +Compute the room needed by the intro message accurately, so that it also fits +on a 25 line console. (Craig Barkhouse) + +":ptnext" was broken. Now remember the last tag used in the preview window +separately from the tagstack. + +Didn't check for "-display" being the last argument. (Wichert Akkerman) + +GTK GUI: When starting "gvim" under some conditions there would be an X error. +Don't replace the error handler when creating the xterm clipboard. (Wichert +Akkerman) + +Adding a space after a help tag caused the tag not to be found. E.g., ":he +autoindent ". + +Was trying to expand a URL into a full path name. On Windows this resulted in +the current directory to be prepended to the URL. Added vim_isAbsName() and +vim_FullName() to avoid that various machine specific functions do it +differently. + +":n *.c" ":cd .." ":n" didn't use the original directory of the file. Vi only +does it for the current file (looks like a bug). Now remember the buffer used +for the entry in the argument list and use its name (adjusted when doing +":cd"), unless it's deleted. + +When inserting a special key as its name ("<F8>" as four characters) after +moving around in Insert mode, undo didn't work properly. + +Motif GUI: When using the right mouse button, for some people gvim froze for +a couple of seconds (Motif 1.2?). This doesn't happen when there is no Popup +menu. Solved by only creating a popup menu when 'mousemodel' is "popup" or +"popup_setpos". (David Harrison) + +Motif: When adding many menu items, the "Help" menu disappeared but the +menubar didn't wrap. Now manually set the menubar height. + +When using <BS> in Insert mode to remove a line break, or using "J" to join +lines, the cursor could end up halfway a multi-byte character. (Muraoka Taro) + +Removed defining SVR4 in configure. It causes problems for some X header +files and doesn't appear to be used anywhere. + +When 'wildignore' is used, 'ignorecase' for a tag match was not working. + +When 'wildignore' contains "*~" it was impossible to edit a file ending in a +"~". Now don't recognize a file ending in "~" as containing wildcards. + +Disabled the mouse code for OS/2. It was not really used. + +":mksession" always used the full path name for a buffer, also when the short +name could be used. +":mkvimrc" and ":mksession" didn't save 'wildchar' and 'pastetoggle' in such a +way that they would be restored. Now use the key name if possible, this is +portable. + +After recovering a file and abandoning it, an ":edit" command didn't give the +ATTENTION prompt again. Would be useful to be able to delete the file in an +easy way. Reset the BF_RECOVERED flag when unloading the buffer. + +histdel() could match or ignore case, depending on what happened before it. +Now always match case. + +When a window size was specified when splitting a window, it would still get +the size from 'winheight' or 'winwidth' if it's larger. + +When using "append" or "insert" inside a function definition, a line starting +with "function" or "endfunction" caused confusion. Now recognize the commands +and skip lines until a ".". + +At the end of any function or sourced file need_wait_return could be reset, +causing messages to disappear when redrawing. + +When in a while loop the line number for error messages stayed fixed. Now the +line number is remembered in the while loop. + +"cd c:/" didn't work on MS-DOS. mch_isdir() removed a trailing slash. + +MS-Windows: getftime() didn't work when a directory had a trailing slash or +backslash. Didn't show the time in the explorer because of this. + +When doing wildcard completion, a directory "a/" sorted after "a-b". Now +recognize path separators when sorting files. + +Non-Unix systems: When editing "c:/dir/../file" and "c:/file" they were +created as different buffers, although it's the same file. Expand to a full +file name also when an absolute name contains "..". + +"g&" didn't repeat the last substitute properly. + +When 'clipboard' was set to "unnamed", a "Y" command would not write to "0. +Now make a copy of register 0 to the clipboard register. + +When the search pattern matches in many ways, it could not always be +interrupted with a CTRL-C. And CTRL-C would have to be hit once for every +line when 'hlsearch' is on. +When 'incsearch' is on and interrupting the search for a match, don't abandon +the command line. + +When turning a directory name into a full path, e.g., with fnamemodify(), +sometimes a slash was added. Make this consistent: Don't add a slash. + +When a file name contains a "!", using it in a shell command will cause +trouble: ":!cat %". Escape the "!" to avoid that. Escape it another time +when 'shell' contains "sh". + +Completing a file name that has a tail that starts with a "~" didn't work: +":e view/~<Tab>". + +Using a ":command" argument that contains < and > but not for a special +argument was not skipped properly. + +The DOS install program: On Win2000 the check for a vim.exe or gvim.exe in +$PATH didn't work, it always found it in the current directory. +Rename the vim.exe in the current dir to avoid this. (Walter Briscoe) + +In the MS-DOS/Windows install program, use %VIM% instead of an absolute path, +so that moving Vim requires only one change in the batch file. + +Mac: mch_FullName() changed the "fname" argument and didn't always initialize +the buffer. + +MS-DOS: mch_FullName() didn't fix forward/backward slashes in an absolute file +name. + +"echo expand("%:p:h")" with an empty file name removed one directory name on +MS-DOS. For Unix, when the file name is a directory, the directory name was +removed. Now make it consistent: "%:p" adds a path separator for all systems, +but no path separator is added in other situations. + +Unix: When checking for a CTRL-C (could happen any time) and there is an X +event (e.g., clipboard updated) and there is typeahead, Vim would hang until a +character was typed. + +MS-DOS, MS-Windows and Amiga: expanding "$ENV/foo" when $ENV ends in a colon, +had the slash removed. + +":he \^=" gave an error for using \_. ":he ^=" didn't find tag :set^=. Even +"he :set^=" didn't find it. + +A tags file name "D:/tags" was used as file "tags" in "D:". That doesn't work +when the current path for D: isn't the root of the drive. + +Removed calls to XtInitializeWidgetClass(), they shouldn't be necessary. + +When using a dtterm or various other color terminals, and the Normal group has +been set to use a different background color, the background wouldn't always +be displayed with that color. Added check for "ut" termcap entry: If it's +missing, clearing the screen won't give us the current background color. Need +to draw each character instead. Vim now also works when the "cl" (clear +screen) termcap entry is missing. + +When repeating a "/" search command with a line offset, the "n" did use the +offset but didn't make the motion linewise. Made "d/pat/+2" and "dn" do the +same. + +Win32: Trying to use ":tearoff" for a menu that doesn't exist caused a crash. + +OpenPTY() didn't work on Sequent. Add a configure check for getpseudotty(). + +C-indenting: Indented a line starting with ")" with the matching "(", but not +a line starting with "x)" looks strange. Also compute the indent for aligning +with items inside the () and use the lowest indent. + +MS-DOS and Windows: ":n *.vim" also matched files ending in "~". +Moved mch_expandpath() from os_win16.c and os_msdos.c to misc1.c, they are +equal. + +Macintosh: (Dany St-Amant) +- In Vi-compatible mode didn't read files with CR line separators. +- Fixed a bug in the handling of Activate/Deactivate Event +- Fixed a bug in gui_mch_dialog (using wrong pointer) + +Multibyte GDK XIM: While composing a multibyte-word, if user presses a +mouse button, then the word is removed. It should remain and composing end. +(Sung-Hyun Nam) + +MS-DOS, MS-Windows and OS/2: When reading from stdin, automatic CR-LF +conversion by the C library got in the way of detecting a "dos" 'fileformat'. + +When 'smartcase' is set, patterns with "\S" would also make 'ignorecase' +reset. + +When clicking the mouse in a column larger than 222, it moved to the first +column. Can't encode a larger number in a character. Now limit the number to +222, don't jump back to the first column. + +GUI: In some versions CSI would cause trouble, either when typed directly or +when part of a multi-byte sequence. + +When using multibyte characters in a ":normal" command, a trailing byte that +is CSI or K_SPECIAL caused problems. + +Wildmenu didn't handle multi-byte characters. + +":sleep 10" could not be interrupted on Windows, while "gs" could. Made them +both work the same. + +Unix: When waiting for a character is interrupted by an X-windows event (e.g., +to obtain the contents of the selection), the wait time would not be honored. +A message could be overwritten quickly. Now compute the remaining waiting +time. + +Windows: Completing "\\share\c$\S" inserted a backslash before the $ and then +the name is invalid. Don't insert the backslash. + +When doing an auto-write before ":make", IObuff was overwritten and the wrong +text displayed later. + +On the Mac the directories "c:/tmp" and "c:/temp" were used in the defaults +for 'backupdir' and 'directory', they don't exist. + +The check for a new file not to be on an MS-DOS filesystem created the file +temporarily, which can be slow. Don't do this if there is another check for +the swap file being on an MS-DOS filesystem. + +Don't give the "Changing a readonly file" warning when reading from stdin. + +When using the "Save As" menu entry and not entering a file name, would get an +error message for the trailing ":edit #". Now only do that when the +alternate file name was changed. + +When Vim owns the X11 selection and is being suspended, an application that +tries to use the selection hangs. When Vim continues it could no longer +obtain the selection. Now give up the selection when suspending. + +option.h and globals.h were included in some files, while they were already +included in vim.h. Moved the definition of EXTERN to vim.h to avoid doing it +twice. + +When repeating an operator that used a search pattern and the search pattern +contained characters that have a special meaning on the cmdline (e.g., CTRL-U) +it didn't work. + +Fixed various problems with using K_SPECIAL (0x80) and CSI (0x9b) as a byte in +a (multibyte) character. For example, the "r" command could not be repeated. + +The DOS/Windows install program didn't always work from a directory with a +long filename, because $VIM and the executable name would not have the same +path. + +Multi-byte: +- Using an any-but character range [^x] in a regexp didn't work for UTF-8. + (Muraoka Taro) +- When backspacing over inserted characters in Replace mode multi-byte + characters were not handled correctly. (Muraoka Taro) +- Search commands "#" and "*" didn't work with multibyte characters. (Muraoka + Taro) +- Word completion in Insert mode didn't work with multibyte characters. + (Muraoka Taro) +- Athena/Motif GUI: when 'linespace' is non-zero the cursor would be drawn too + wide (number of bytes instead of cell width). +- When changing 'encoding' to "euc-jp" and inserting a character Vim would + crash. +- For euc-jp characters positioning the cursor would sometimes be wrong. + Also, with two characters with 0x8e leading byte only the first one would be + displayed. +- When using DYNAMIC_ICONV on Win32 conversion might fail because of using the + wrong error number. (Muraoka Taro) +- Using Alt-x in the GUI while 'encoding' was set to "utf-8" didn't produce + the right character. +- When using Visual block selection and only the left halve of a double-wide + character is selected, the highlighting continued to the end of the line. +- Visual-block delete didn't work properly when deleting the right halve of a + double-wide character. +- Overstrike mode for the cmdline replaced only the first byte of a multibyte + character. +- The cursor in Replace mode (also in the cmdline) was to small on a + double-wide character. +- When a multibyte character contained a 0x80 byte, it didn't work (was using + a CSI byte instead). (Muraoka Taro) +- Wordwise selection with the mouse didn't work. +- Yanking a modeless selection of multi-byte characters didn't work. +- When 'selection' is "exclusive", selecting a word that ends in a multi-byte + character used wrong highlighting for the following character. + +Win32 with Make_mvc.mak: Didn't compile for debugging. (Craig Barkhouse) + +Win32 GUI: When "vimrun.exe" is used to execute an external command, don't +give a message box with the return value, it was already printed by vimrun. +Also avoid printing the return value of the shell when ":silent!" is used. + +Win32: selecting a lot of text and using the "find/replace" dialog caused a +crash. + +X11 GUI: When typing a character with the 8th bit set and the Meta/Alt +modifier, the modifier was removed without changing the character. + +Truncating a message to make it fit on the command line, using "..." for the +middle, didn't always compute the space correctly. + +Could not imap <C-@>. Now it works like <Nul>. + +VMS: +- Fixed a few things for VAXC. os_vms_fix.com had some strange CTRL-M + characters. (Zoltan Arpadffy and John W. Hamill) +- Added VMS-specific defaults for the 'isfname' and 'isprint' options. + (Zoltan Arpadffy) +- Removed os_vms_osdef.h, it's no longer used. + +The gzip plugin used a ":normal" command, this doesn't work when dropping a +compressed file on Vim. + +In very rare situations a binary search for a tag would fail, because an +uninitialized value happens to be half the size of the tag file. (Narendran) + +When using BufEnter and BufLeave autocommands to enable/disable a menu, it +wasn't updated right away. + +When doing a replace with the "c"onfirm flag, the cursor was positioned after +the ruler, instead of after the question. With a long replacement string the +screen could scroll up and cause a "more" prompt. Now the message is +truncated to make it fit. + +Motif: The autoconf check for the Xp library didn't work. + +When 'verbose' is set to list lines of a sourced file, defining a function +would reset the counter used for the "more" prompt. + +In the Win32 find/replace dialog, a '/' character caused problems. Escape it +with a backslash. + +Starting a shell with ":sh" was different from starting a shell for CTRL-Z +when suspending doesn't work. They now work the same way. + +Jumping to a file mark while in a changed buffer gave a "mark not set" error. + +":execute histget("cmd")" causes an endless loop and crashed Vim. Now catch +all commands that cause too much recursiveness. + +Removed "Failed to open input method" error message, too many people got this +when they didn't want to use a XIM. + +GUI: When compiled without the +windows feature, the scrollbar would start +below line one. + +Removed the trick with redefining character class functions from regexp.c. + +Win32 GUI: Find dialog gives focus back to main window, when typing a +character mouse pointer is blanked, it didn't reappear when moving it in the +dialog window. (Vince Negri) + +When recording and typing a CTRL-C, no character was recorded. When in Insert +mode or cancelling half a command, playing back the recorded sequence wouldn't +work. Now record the CTRL-C. + +When the GUI was started, mouse codes for DEC and netterm were still checked +for. + +GUI: When scrolling and 'writedelay' is non-zero, the character under the +cursor was displayed in the wrong position (one line above/below with +CTRL-E/CTRL-Y). + +A ":normal" command would reset the 'scrollbind' info. Causes problems when +using a ":normal" command in an autocommand for opening a file. + +Windows GUI: a point size with a dot, like "7.5", wasn't recognized. (Muraoka +Taro) + +When 'scrollbind' wasn't set would still remember the current position, +wasting time. + +GTK: Crash when 'shell' doesn't exist and doing":!ls". Use _exit() instead of +exit() when the child couldn't execute the shell. + +Multi-byte: +- GUI with double-byte encoding: a mouse click in left halve of double-wide + character put the cursor in previous char. +- Using double-byte encoding and 'selection' is "exclusive": "vey" and "^Vey" + included the character after the word. +- When using a double-byte encoding and there is a lead byte at the end of the + line, the preceding line would be displayed. "ga" also showed wrong info. +- "gf" didn't include multi-byte characters before the cursor properly. + (Muraoka Taro) + +GUI: The cursor was sometimes not removed when scrolling. Changed the policy +from redrawing the cursor after each call to gui_write() to only update it at +the end of update_screen() or when setting the cursor position. Also only +update the scrollbars at the end of update_screen(), that's the only place +where the window text may have been scrolled. + +Formatting "/*<Tab>long text", produced "* <Tab>" in the next line. Now +remove the space before the Tab. +Formatting "/*<Tab> long text", produced "* <Tab> long text" in the next +line. Now keep the space after the Tab. + +In some places non-ASCII alphabetical characters were accepted, which could +cause problems. For example, ":X" (X being such a character). + +When a pattern matches the end of the line, the last character in the line was +highlighted for 'hlsearch'. That looks wrong for "/\%3c". Now highlight the +character just after the line. + +Motif: If a dialog was closed by clicking on the "X" of the window frame Vim +would no longer respond. + +When using CTRL-X or CTRL-A on a number with many leading zeros, Vim would +crash. (Matsumoto) + +When 'insertmode' is set, the mapping in mswin.vim for CTRL-V didn't work in +Select mode. Insert mode wasn't restarted after overwriting the text. +Now allow nesting Insert mode with insert and change commands. CTRL-O +cwfoo<Esc> now also works. + +Clicking with the right mouse button in another window started Visual mode, +but used the start position of the current window. Caused ml_get errors when +the line number was invalid. Now stay in the same window. + +When 'selection' is "exclusive", "gv" sometimes selected one character fewer. + +When 'comments' contains more than one start/middle/end triplet, the optional +flags could be mixed up. Also didn't align the end with the middle part. + +Double-right-click in Visual mode didn't update the shown mode. + +When the Normal group has a font name, it was never used when starting up. +Now use it when 'guifont' and 'guifontset' are empty. +Setting a font name to a highlight group before the GUI was started didn't +work. + +"make test" didn't use the name of the generated Vim executable. + +'cindent' problems: +- Aligned with an "else" inside a do-while loop for a line below that loop. + (Meikel Brandmeyer) +- A line before a function would be indented even when terminated with a + semicolon. (Meikel Brandmeyer) +- 'cindent' gave too much indent to a line after a "};" that ends an array + init. +- Support declaration lines ending in "," and "\". (Meikel Brandmeyer) +- A case statement inside a do-while loop was used for indenting a line after + the do-while loop. (Meikel Brandmeyer) +- When skipping a string in a line with one double quote it could continue in + the previous line. (Meikel Brandmeyer) + +When 'list' is set, 'hlsearch' didn't highlight a match at the end of the +line. Now highlight the '$'. + +The Paste menu item in the menu bar, the popup menu and the toolbar were all +different. Now made them all equal to how it was done in mswin.vim. + +st_dev can be smaller than "unsigned". The compiler may give an overflow +warning. Added a configure check for dev_t. + +Athena: closing a confirm() dialog killed Vim. + +Various typos in the documentation. (Matt Dunford) + +Python interface: The definition of _DEBUG could cause trouble, undefine it. +The error message for not being able to load the shared library wasn't +translated. (Muraoka Taro) + +Mac: (Dany St-Amant and Axel Kielhorn) +- Several fixes. +- Vim was eating 80% of the CPU time. +- The project os_mac.pbxproj didn't work, Moved it to a subdirectory. +- Made the menu priority work for the menubar. +- Fixed a problem with dragging the scrollbar. +- Cleaned up the various #ifdefs. + +Unix: When catching a deadly signal and we keep getting one use _exit() to +exit in a quick and dirty way. + +Athena menu ordering didn't work correctly. (David Harrison) + +A ":make" or ":grep" command with a long argument could cause a crash. + +Doing ":new file" and using "Quit" for the ATTENTION dialog still opened a new +window. + +GTK: When starting the GUI and there is an error in the .vimrc file, don't +present the wait-return prompt, since the message was given in the terminal. + +When there was an error in a .vimrc file the terminal where gvim was started +could be cleared. Set msg_row in main.c before writing any messages. + +GTK and X11 GUI: When trying to read characters from the user (e.g. with +input()) before the Vim window was opened caused Vim to hang when it was +started from the desktop. + +OS/390 uses 31 bit pointers. That broke some computations with MAX_COL. +Reduce MAX_COL by one bit for OS/390. (Ralf Schandl) + +When defining a function and it already exists, Vim didn't say it existed +until after typing it. Now do this right away when typing it. + +The message remembered for displaying later (keep_msg) was sometimes pointing +into a generic buffer, which might be changed by the time the message is +displayed. Now make a copy of the message. + +When using multi-byte characters in a menu and a trailing byte is a backslash, +the menu would not be created correctly. (Muraoka Taro) +Using a multibyte character in the substitute string where a trail byte is a +backslash didn't work. (Muraoka Taro) + +When setting "t_Co" in a vimrc file, then setting it automatically from an +xterm termresponse and then setting it again manually caused a crash. + +When getting the value of a string option that is not supported, the number +zero was returned. This breaks a check like "&enc == "asdf". Now an empty +string is returned for string options. + +Crashed when starting the GTK GUI while using 'notitle' in the vimrc, setting +'title' in the gvimrc and starting the GUI with ":gui". Closed the connection +to the X server accidentally. + +Had to hit return after selecting an entry for ":ts". + +The message from ":cn" message was sometimes cleared. Now display it after +redrawing if it doesn't cause a scroll (truncated when necessary). + +hangulin.c didn't compile when the GUI was disabled. Disable it when it won't +work. + +When setting a termcap option like "t_CO", the value could be displayed as +being for a normal key with a modifier, like "<M-=>". + +When expanding the argument list, entries which are a directory name did not +get included. This stopped "vim c:/" from opening the file explorer. + +":syn match sd "^" nextgroup=asdf" skipped the first column and matched the +nextgroup in the second column. + +GUI: When 'lazyredraw' is set, 'showmatch' didn't work. Required flushing +the output. + +Don't define the <NetMouse> termcode in an xterm, reduces the problem when +someone types <Esc> } in Insert mode. + +Made slash_adjust() work correctly for multi-byte characters. (Yasuhiro +Matsumoto) +Using a filename in Big5 encoding for autocommands didn't work (backslash in +trailbyte). (Yasuhiro Matsumoto) + +DOS and Windows: Expanding *.vim also matched file.vimfoo. Expand path like +Unix to avoid problems with Windows dir functions. Merged the DOS and Win32 +functions. + +Win32: Gvimext could not edit more than a few files at once, the length of the +argument was fixed. + +"ls -1 * | xargs vim" worked, but the input was in cooked mode. Now switch to +raw mode when needed. Use dup() to copy the stderr file descriptor to stdin +to make shell commands work. No longer requires an external program to do +this. + +When using ":filetype off", ftplugin and indent usage would be switched off at +the same time. Don't do this, setting 'filetype' manually can still use them. + +GUI: When writing a double-byte character, it could be split up in two calls +to gui_write(), which doesn't work. Now flush before the output buffer +becomes full. + +When 'laststatus' is set and 'cmdheight' is two or bigger, the intro message +would be written over the status line. +The ":intro" command didn't work when there wasn't enough room. + +Configuring for Ruby failed with a recent version of Ruby. (Akinori Musha) + +Athena: When deleting the directory in which Vim was started, using the file +browser made Vim exit. Removed the use of XtAppError(). + +When using autoconf 2.50, UNIX was not defined. Moved the comment for "#undef +UNIX" to a separate line. + +Win32: Disabled _OnWindowPosChanging() to make maximize work better. + +Win32: Compiling with VC 4.0 didn't work. (Walter Briscoe) + +Athena: +- Finally fixed the problems with deleting a menu. (David Harrison) +- Athena: When closing the confirm() dialog, worked like OK was pressed, + instead of Cancel. + +The file explorer didn't work in compatible mode, because of line +continuation. + +Didn't give an error message for ":digraph a". + +When using Ex mode in the GUI and typing a special key, <BS> didn't delete it +correctly. Now display '?' for a special key. + +When an operator is pending, clicking in another window made it apply to that +window, even though the line numbers could be beyond the end of the buffer. + +When a function call doesn't have a terminating ")" Vim could crash. + +Perl interface: could crash on exit with perl 5.6.1. (Anduin Withers) + +Using %P in 'errorformat' wasn't handled correctly. (Tomas Zellerin) + +Using a syntax cluster that includes itself made Vim crash. + +GUI: With 'ls' set to 2, dragging the status line all the way up, then making +the Vim window smaller: Could not the drag status line anymore. + +"vim -c startinsert! file" placed cursor on last char of a line, instead of +after it. A ":set" command in the buffer menu set w_set_curswant. Now don't +do this when w_curswant is MAXCOL. + +Win32: When the gvim window was maximized and selecting another font, the +window would no longer fill the screen. + +The line with 'pastetoggle' in ":options" didn't show the right value when it +is a special key. Hitting <CR> didn't work either. + +Formatting text, resulting in a % landing in the first line, repeated the % in +the following lines, like it's the start of a comment. + +GTK: When adding a toolbar item while gvim is already running, it wasn't +possible to use the tooltip. Now it works by adding the tooltip first. + +The output of "g CTRL-G" mentioned "Char" but it's actually bytes. + +Searching for the end of a oneline region didn't work correctly when there is +an offset for the highlighting. + +Syntax highlighting: When synchronizing on C-comments, //*/ was seen as the +start of a comment. + +Win32: Without scrollbars present, the MS mouse scroll wheel didn't work. +Also handle the scrollbars when they are not visible. + +Motif: When there is no right scrollbar, the bottom scrollbar would still +leave room for it. (Marcin Dalecki) + +When changing 'guicursor' and the value is invalid, some of the effects would +still take place. Now first check for errors and only make the new value +effective when it's OK. + +Using "A" In Visual block mode, appending to lines that don't extend into the +block, padding was wrong. + +When pasting a block of text, a character that occupies more than one screen +column could be deleted and spaces inserted instead. Now only do that with a +tab. + +Fixed conversion of documentation to HTML using Perl. (Dan Sharp) + +Give an error message when a menu name starts with a dot. + +Avoid a hang when executing a shell from the GUI on HP-UX by pushing "ptem" +even when sys/ptem.h isn't present. + +When creating the temp directory, make sure umask is 077, otherwise the +directory is not accessible when it was set to 0177. + +Unix: When resizing the window and a redraw is a bit slow, could get a window +resize event while redrawing, resulting in a messed up window. Any input +(e.g., a mouse click) would redraw. + +The "%B" item in the status line became zero in Insert mode (that's normal) +for another than the current window. + +The menu entries to convert to xxd and back didn't work in Insert mode. + +When ":vglobal" didn't find a line where the pattern doesn't match, the error +message would be the wrong way around. + +When ignoring a multi-line error message with "%-A", the continuation lines +would be used anyway. (Servatius Brandt) + +"grx" on a double-wide character inserted "x", instead of replacing the +character with "x ". "gR" on <xx> ('display' set the "uhex") didn't replace +at all. When doing "gRxx" on a control character the first "x" would be +inserted, breaking the alignment. + +Added "0)" to 'cinkeys', so that when typing a ) it is put in the same place +as where "==" would put it. + +Win32: When maximized, adding/removing toolbar didn't resize the text area. + +When using <C-RightMouse> a count was discarded. + +When typing CTRL-V and <RightMouse> in the command line, would insert +<LeftMouse>. + +Using "vis" or "vas" when 'selection' is exclusive didn't include the last +character. + +When adding to an option like 'grepprg', leading space would be lost. Don't +expand environment variables when there is no comma separating the items. + +GUI: When using a bold-italic font, would still use the bold trick and +underlining. + +Motif: The default button didn't work in dialogs, the first one was always +used. Had to give input focus to the default button. + +When using CTRL-T to jump within the same file, the '' mark wasn't set. + +Undo wasn't Vi compatible when using the 'c' flag for ":s". Now it undoes the +whole ":s" command instead of each confirmed replacement. + +The Buffers menu, when torn-off, disappeared when being refreshed. Add a +dummy item to avoid this. + +Removed calling msg_start() in main(), it should not be needed. + +vim_strpbrk() did not support multibyte characters. (Muraoka Taro) + +The Amiga version didn't compile, the code was too big for relative jumps. +Moved a few files from ex_docmd.c to ex_cmds2.c + +When evaluating the "= register resulted in the "= register being changed, Vim +would crash. + +When doing ":view file" and it fails, the current buffer was made read-only. + +Motif: For some people the separators in the toolbar disappeared when resizing +the Vim window. (Marcin Dalecki) + +Win32 GUI: when setting 'lines' to a huge number, would not compute the +available space correctly. Was counting the menu height twice. + +Conversion of the docs to HTML didn't handle the line with the +quickfix tag +correctly. (Antonio Colombo) + +Win32: fname_case() didn't handle multi-byte characters correctly. (Yasuhiro +Matsumoto) + +The Cygwin version had trouble with fchdir(). Don't use that function for +Cygwin. + +The generic check in scripts.vim for "conf" syntax was done before some checks +in filetype.vim, resulting in "conf" syntax too often. + +Dos32: Typing lagged behind. Would wait for one biostick when checking if a +character is available. + +GTK: When setting 'columns' while starting up "gvim", would set the width of +the terminal it was started in. + +When using ESC in Insert mode, an autoindent that wraps to the next line +caused the cursor to move to the end of the line temporarily. When the +character before the cursor was a double-wide multi-byte character the cursor +would be on the right halve, which causes problems with some terminals. + +Didn't handle multi-byte characters correctly when expanding a file name. +(Yasuhiro Matsumoto) + +Win32 GUI: Errors generated before the GUI is decided to start were not +reported. + +globpath() didn't reserve enough room for concatenated results. (Anduin +Withers) + +When expanding an option that is very long already, don't do the expansion, it +would be truncated to MAXPATHL. (Anduin Withers) + +When 'selection' is "exclusive", using "Fx" in Visual mode only moved until +just after the character. + +When using IME on the console to enter a file name, the screen may scroll up. +Redraw the screen then. (Yasuhiro Matsumoto) + +Motif: In the find/replace dialog the "Replace" button didn't work first time, +second time it replaced all matches. Removed the use of ":s///c". +GTK: Similar problems with the find/replace dialog, moved the code to a common +function. + +X11: Use shared GC's for text. (Marcin Dalecki) + +"]i" found the match under the cursor, instead of the first one below it. +Same for "]I", "] CTRL-I", "]d", "]D" and "] CTRL-D". + +Win16: When maximized and the font is changed, don't change the window size. +(Vince Negri) + +When 'lbr' is set, deleting a block of text could leave the cursor in the +wrong position. + +Win32: When opening a file with the "Edit with Vim" popup menu entry, +wildcards would cause trouble. Added the "--literal" argument to avoid +expanding file names. + +When using "gv", it didn't restore that "$" was used in Visual block mode. + +Win32 GUI: While waiting for a shell command to finish, the window wasn't +redrawn at all. (Yasuhiro Matsumoto) + +Syntax highlighting: A match that continues on a next line because of a +contained region didn't end when that region ended. + +The ":s" command didn't allow flags like 'e' and 'i' right after it. + +When using ":s" to split a line, marks were moved to the next line. Vi keeps +them in the first line. + +When using ":n" ":rew", the previous context mark was at the top of the file, +while Vi puts it in the same place as the cursor. Made it Vi compatible. + +Fixed Vi incompatibility: Text was not put in register 1 when using "c" and +"d" with a motion character, when deleting within one line with one of the +commands: % ( ) `<character> / ? N n { } + +Win32 GUI: The tooltip for tear-off items remained when the tear-off item was +no longer selected. + +GUI: When typing ":" at the more prompt, would return to Normal mode and not +redraw the screen. + +When starting Vim with an argument "-c g/at/p" the printed lines would +overwrite each other. + +BeOS: Didn't compile. Configure didn't add the os_beos files, the QNX check +removed them. Various changes to os_beos.cc. (Joshua Haberman) +Removed the check for the hardware platform, the BeBox has not been produced +for a long time now. + +Win32 GUI: don't use a message box when the shell returns an error code, +display the message in the Vim window. + +Make_mvc.mak always included "/debug" for linking. "GUI=no" argument didn't +work. Use "DEBUG=yes" instead of "DEBUG=1" to make it consistent. (Dan Sharp) + +When a line in the tags file ended in ;" (no TAB following) the command would +not be recognized as a search command. + +X11: The inputMethod resource never worked. Don't use the "none" input method +for SGI, it apparently makes the first character in Input method dropped. + +Fixed incorrect tests in os_mac.h. (Axel Kielhorn) + +Win32 console: When the console where Vim runs in is closed, Vim could hang in +trying to restore the window icon. (Yasuhiro Matsumoto) + +When using ":3call func()" or ":3,3call func() the line number was ignored. + +When 'showbreak' and 'linebreak' were both set, Visual highlighting sometimes +continued until the end of the line. + +GTK GUI: Tearoff items were added even when 'guioptions' didn't contain 't' +when starting up. + +MS-Windows: When the current directory includes a "~", searching files with +"gf" or ":find" didn't work. A "$" in the directory had the same problem. +Added mch_has_exp_wildcard() functions. + +When reducing the Vim window height while starting up, would get an +out-of-memory error message. + +When editing a very long search pattern, 'incsearch' caused the redraw of the +command line to fail. + +Motif GUI: On some systems the "Help" menu would not be on the far right, as +it should be. On some other systems (esp. IRIX) the command line would not +completely show. Solution is to only resize the menubar for Lesstif. + +Using "%" in a line that contains "\\" twice didn't take care of the quotes +properly. Now make a difference between \" and \\". + +For non-Unix systems a dummy file is created when finding a swap name to +detect a 8.3 filesystem. When there is an existing swap file, would get a +warning for the file being created outside of Vim. Also, when closing the Vim +window the file would remain. + +Motif: The menu height was always computed, using a "-menuheight" argument +was setting the room for the command line. Now make clear the argument is not +supported. + +For some (EBCDIC) systems, POUND was equal to '#'. Added an #if for that to +avoid a duplicate case in a switch. + +The GUI may have problems when forking. Always call _exit() instead of exit() +in the parent, the child will call exit(). + +Win32 GUI: Accented characters were often wrong in dialogs and tearoff menus. +Now use CP_ACP instead of CP_OEMCP. (Vince Negri) + +When displaying text with syntax highlighting causes an error (e.g., running +out of stack) the syntax highlighting is disabled to avoid further messages. + +When a command in a .vimrc or .gvimrc causes an ATTENTION prompt, and Vim was +started from the desktop (no place to display messages) it would hang. Now +open the GUI window early to be able to display the messages and pop up the +dialog. + +"r<CR>" on a multi-byte character deleted only the first byte of the +character. "3r<CR>" deleted three bytes instead of three characters. + +When interrupting reading a file, Vi considers the buffer modified. Added the +'i' flag in 'cpoptions' flag for this (we don't want it modified to be able to +do ":q"). + +When using an item in 'guicursor' that starts with a colon, Vim would get +stuck or crash. + +When putting a file mark in a help file and later jumping back to it, the +options would not be set. Extended the modeline in all help files to make +this work better. + +When a modeline contained "::" the local option values would be printed. Now +ignore it. + +Some help files did not use a 8.3 names, which causes problems when using +MS-DOS unzip. Renamed "multibyte.txt" to "mbyte.txt", "rightleft.txt" to +"rileft.txt", "tagsearch.txt" to "tagsrch.txt", "os_riscos.txt" to +"os_risc.txt". + +When Visual mode is blockwise, using "iw" or "aw" made it characterwise. That +doesn't seem right, only do this when in linewise mode. But then do it +always, not only when start and end of Visual mode are equal. + +When using "viw" on a single-letter word and 'selection' is exclusive, would +not include the word. + +When formatting text from Insert mode, using CTRL-O, could mess up undo +information. + +While writing a file (also for the backup file) there was no check for an +interrupt (hitting CTRL-C). Vim could hang when writing a large file over a +slow network, and moving the mouse didn't make it appear (when 'mousehide' is +set) and the screen wasn't updated in the GUI. Also allow interrupting when +syncing the swap file, it can take a long time. + +When using ":mksession" while there is help window, it would later be restored +to the right file but not marked as a help buffer. ":help" would then open +another window. Now use the value "help" for 'buftype' to mark a help buffer. + +The session file contained absolute path names in option values, that doesn't +work when the home directory depends on the situation. Replace the home +directory with ~/ when possible. + +When using 'showbreak' a TAB just after the shown break would not be counted +correctly, the cursor would be positioned wrong. + +With 'showbreak' set to "--->" or "------->" and 'sts' set to 4, inserting +tabs did not work right. Could cause a crash. Backspacing was also wrong, +could get stuck at a line break. + +Win32: crashed when tearing off a menu with over 300 items. + +GUI: A menu or toolbar item would appear when only a tooltip was defined for +it. + +When 'scrolloff' is non-zero and "$" is in 'cpoptions', using "s" while the +last line of the file is the first line on screen, the text wasn't displayed. + +When running "autoconf", delete the configure cache to force starting cleanly +when configure is run again. + +When changing the Normal colors for cterm, the value of 'background' was +changed even when the GUI was used. + +The warning for a missing vimrun.exe was always given on startup, but some +people just editing a file don't need to be bothered by it. Only show it when +vimrun would be used. + +When using "%" in a multibyte text it could get confused by trailbytes that +match. (Muraoka Taro) + +Termcap entry for RiscOS was wrong, using 7 and 8 in octal codes. + +Athena: The title of a dialog window and the file selector window were not +set. (David Harrison) + +The "htmlLink" highlight group specified colors, which gives problems when +using a color scheme. Added the "Underlined" highlight group for this. + +After using ":insert" or ":change" the '[ mark would be one line too low. + +When looking for the file name after a match with 'include' one character was +skipped. Same for 'define'. + +Win32 and DJGPP: When editing a file with a short name in a directory, and +editing the same file but using the long name, would end up with two buffers +on the same file. + +"gf" on a filename that starts with "../" only worked when the file being +edited is in the current directory. An include file search didn't work +properly for files starting with "../" or ".". Now search both relative to +the file and to the current directory. + +When 'printheader', 'titlestring', 'iconstring', 'rulerformat' or 'statusline' +contained "%{" but no following "}" memory was corrupted and a crash could +happen. + +":0append" and then inserting two lines did not redraw the blank lines that +were scrolled back down. + +When using insert mode completion in a narrow window, the message caused a +scroll up. Now shorten the message if it doesn't fit and avoid writing the +ruler over the message. + +XIM still didn't work correctly on some systems, especially SGI/IRIX. Added +the 'imdisable' option, which is set by default for that system. + +Patch 6.0aw.008 +Problem: When the first character of a file name is over 127, the Buffers + menu entry would get a negative priority and cause problems. +Solution: Reduce the multiplier for the first character when computing + the hash value for a Buffers menu entry. +Files: runtime/menu.vim + +Patch 6.0aw.010 +Problem: Win32: ":browse edit dir/dir" didn't work. (Vikas) +Solution: Change slashes to backslashes in the directory passed to the file + browser. +Files: src/gui_w48.c + +Athena file browser: On some systems wcstombs() can't be used to get the +length of a multi-byte string. Use the maximum length then. (Yasuhiro +Matsumoto) + +Patch 6.0ax.001 +Problem: When 'patchmode' is set, appending to a file gives an empty + original file. (Ed Ralston) +Solution: Also make a backup copy when appending and 'patchmode' is set. +Files: src/fileio.c + +Patch 6.0ax.002 +Problem: When 'patchmode' is set, appending to a compressed file gives an + uncompressed original file. (Ed Ralston) +Solution: Create the original file before decompressing. +Files: runtime/plugin/gzip.vim + +Patch 6.0ax.005 +Problem: Athena file selector keeps the title of the first invocation. +Solution: Set the title each time the file selector is opened. (David + Harrison) +Files: src/gui_at_fs.c + +Patch 6.0ax.007 +Problem: When using GPM (mouse driver in a Linux console) a double click is + interpreted as a scroll wheel click. +Solution: Check if GPM is being used when deciding if a mouse event is for + the scroll wheel. +Files: src/term.c + +Patch 6.0ax.010 +Problem: The Edit.Save menu and the Save toolbar button didn't work when + the buffer has no file name. +Solution: Use a file browser to ask for a file name. Also fix the toolbar + Find item in Visual mode. +Files: runtime/menu.vim + +Patch 6.0ax.012 +Problem: When 'cpoptions' contains "$", breaking a line for 'textwidth' + doesn't redraw properly. (Stefan Schulze) +Solution: Remove the dollar before breaking the line. +Files: src/edit.c + +Patch 6.0ax.014 +Problem: Win32: On Windows 98 ":make -f file" doesn't work when 'shell' is + "command.com" and 'makeprg' is "nmake". The environment isn't + passed on to "nmake". +Solution: Also use vimrun.exe when redirecting the output of a command. +Files: src/os_win32.c + +Patch 6.0ax.016 +Problem: The version number was reported wrong in the intro screen. +Solution: Check for a version number with two additional letters. +Files: src/version.c + +Patch 6.0ax.019 +Problem: When scrolling a window with folds upwards, switching to another + vertically split window and back may not update the scrollbar. +Solution: Limit w_botline to the number of lines in the buffer plus one. +Files: src/move.c + + +============================================================================== +VERSION 6.1 *version-6.1* + +This section is about improvements made between version 6.0 and 6.1. + +This is a bug-fix release, there are not really any new features. + + +Changed *changed-6.1* +------- + +'iminsert' and 'imsearch' are no longer set as a side effect of defining a +language-mapping using ":lmap". + + +Added *added-6.1* +----- + +Syntax files: +ampl AMPL (David Krief) +ant Ant (Johannes Zellner) +baan Baan (Her van de Vliert) +cs C# (Johannes Zellner) +lifelines Lifelines (Patrick Texier) +lscript LotusScript (Taryn East) +moo MOO (Timo Frenay) +nsis NSIS (Alex Jakushev) +ppd Postscript Printer Description (Bjoern Jacke) +rpl RPL/2 (Joel Bertrand) +scilab Scilab (Benoit Hamelin) +splint Splint (Ralf Wildenhues) +sqlj SQLJ (Andreas Fischbach) +wvdial WvDial (Prahlad Vaidyanathan) +xf86conf XFree86 config (Nikolai Weibull) +xmodmap Xmodmap (Nikolai Weibull) +xslt Xslt (Johannes Zellner) +monk Monk (Mike Litherland) +xsd Xsd (Johannes Zellner) +cdl CDL (Raul Segura Acevedo) +sendpr Send-pr (Hendrik Scholz) + +Added indent file for Scheme. (Dorai Sitaram) +Added indent file for Prolog. (Kontra Gergely) +Added indent file for Povray (David Necas) +Added indent file for IDL (Aleksandar Jelenak) +Added C# indent and ftplugin scripts. + +Added Ukrainian menu translations. (Bohdan Vlasyuk) +Added ASCII version of the Czech menus. (Jiri Brezina) + +Added Simplified Chinese translation of the tutor. (Mendel L Chan) + +Added Russian keymap for yawerty keyboard. + +Added an explanation of using the vimrc file in the tutor. +Changed tutor.vim to get the right encoding for the Taiwainese tutor. + +Added Russian tutor. (Andrey Kiselev) +Added Polish tutor. (Mikolaj Machowski) + +Added darkblue color scheme. (Bohdan Vlasyuk) + +When packing the dos language archive automatically generate the .mo files +that are required. + +Improved NSIS script to support NSIS 180. Added icons for the +enabled/disabled status. (Mirek Pruchnik) + +cp1250 version of the Slovak message translations. + +Compiler plugins for IRIX compilers. (David Harrison) + + +Fixed *fixed-6.1* +----- + +The license text was updated to make the meaning clearer and make it +compatible with the GNU GPL. Otherwise distributors have a problem when +linking Vim with a GPL'ed library. + +When installing the "less.sh" script it was not made executable. (Chuck Berg) + +Win32: The "9" key on the numpad wasn't working. (Julian Kinraid) + +The NSIS install script didn't work with NSIS 1.80 or later. Also add +Vim-specific icons. (Pruchnik) + +The script for conversion to HTML contained an "if" in the wrong place. +(Michael Geddes) + +Allow using ":ascii" in the sandbox, it's harmless. + +Removed creat() from osdef2.h.in, it wasn't used and may cause a problem when +it's redefined to creat64(). + +The text files in the VisVim directory were in "dos" format. This caused +problems when applying a patch. Now keep them in "unix" format and convert +them to "dos" format only for the PC archives. + +Add ruby files to the dos source archive, they can be used by Make_mvc.mak. +(Mirek Pruchnik) + +"cp -f" doesn't work on all systems. Change "cp -f" in the Makefile to "rm +-f" and "cp". + +Didn't compile on a Compaq Tandem Himalaya OSS. (Michael A. Benzinger) + +The GTK file selection dialog didn't include the "Create Dir", "Delete File" +and "Rename File" buttons. + +When doing ":browse source" the dialog has the title "Run Macro". Better +would be "Source Vim script". (Yegappan Lakshmanan) + +Win32: Don't use the printer font as default for the font dialog. + +"make doslang" didn't work when configure didn't run (yet). Set $MAKEMO to +"yes". (Mirek Pruchnik) + +The ToolBar TagJump item used "g]", which prompts for a selection even when +there is only one matching tag. Use "g<C-]>" instead. + +The ming makefile for message translations didn't have the right list of +files. + +The MS-Windows 3.1 version complains about LIBINTL.DLL not found. Compile +this version without message translations. + +The Borland 5 makefile contained a check for Ruby which is no longer needed. +The URLs for the TCL library was outdated. (Dan Sharp) + +The eviso.ps file was missing from the DOS runtime archive, it's needed for +printing PostScript in the 32bit DOS version. + +In menu files ":scriptencoding" was used in a wrong way after patch 6.1a.032 +Now use ":scriptencoding" in the file where the translations are given. Do +the same for all menus in latin1 encoding. + +Included a lot of fixes for the Macintosh, mostly to make it work with Carbon. +(Dany StAmant, Axel Kielhorn, Benji Fisher) + +Improved the vimtutor shell script to use $TMPDIR when it exists, and delete +the copied file when exiting in an abnormal way. (Max Ischenko) + +When "iconv.dll" can't be found, try using "libiconv.dll". + +When encryption is used, filtering with a shell command wasn't possible. + +DJGPP: ":cd c:" always failed, can't get permissions for "c:". +Win32: ":cd c:/" failed if the previous current directory on c: had become +invalid. + +DJGPP: Shift-Del and Del both produce \316\123. Default mapping for Del is +wrong. Disabled it. + +Dependencies on header files in MingW makefile was wrong. + +Win32: Don't use ACL stuff for MSVC 4.2, it's not supported. (Walter Briscoe) + +Win32 with Borland: bcc.cfg was caching the value for $(BOR), but providing a +different argument to make didn't regenerate it. + +Win32 with MSVC: Make_ivc.mak generates a new if_ole.h in a different +directory, the if_ole.h in the src directory may be used instead. Delete the +distributed file. + +When a window is vertically split and then ":ball" is used, the window layout +is messed up, can cause a crash. (Muraoka Taro) + +When 'insertmode' is set, using File/New menu and then double clicking, "i" is +soon inserted. (Merlin Hansen) + +When Select mode is active and using the Buffers menu to switch to another +buffer, an old selection comes back. Reset VIsual_reselect for a ":buffer" +command. + +When Select mode is active and 'insertmode' is set, using the Buffers menu to +switch to another buffer, did not return to Insert mode. Make sure +"restart_edit" is set. + +When double clicking on the first character of a word while 'selection' is +"exclusive" didn't select that word. + + +Patch 6.0.001 +Problem: Loading the sh.vim syntax file causes error messages. (Corinna + Vinschen) +Solution: Add an "if". (Charles Campbell) +Files: runtime/syntax/sh.vim + +Patch 6.0.002 +Problem: Using a '@' item in 'viminfo' doesn't work. (Marko Leipert) +Solution: Add '@' to the list of accepted items. +Files: src/option.c + +Patch 6.0.003 +Problem: The configure check for ACLs on AIX doesn't work. +Solution: Fix the test program so that it compiles. (Tomas Ogren) +Files: src/configure.in, src/auto/configure + +Patch 6.0.004 +Problem: The find/replace dialog doesn't reuse a previous argument + properly. +Solution: After removing a "\V" terminate the string. (Zwane Mwaikambo) +Files: src/gui.c + +Patch 6.0.005 +Problem: In Insert mode, "CTRL-O :ls" has a delay before redrawing. +Solution: Don't delay just after wait_return() was called. Added the + did_wait_return flag. +Files: src/globals.h, src/message.c, src/normal.c, src/screen.c + +Patch 6.0.006 +Problem: With a vertical split, 'number' set and 'scrolloff' non-zero, + making the window width very small causes a crash. (Niklas + Lindstrom) +Solution: Check for a zero width. +Files: src/move.c + +Patch 6.0.007 +Problem: When setting 'filetype' while there is no FileType autocommand, a + following ":setfiletype" would set 'filetype' again. (Kobus + Retief) +Solution: Set did_filetype always when 'filetype' has been set. +Files: src/option.c + +Patch 6.0.008 +Problem: 'imdisable' is missing from the options window. (Michael Naumann) +Solution: Add an entry for it. +Files: runtime/optwin.vim + +Patch 6.0.009 +Problem: Nextstep doesn't have S_ISBLK. (John Beppu) +Solution: Define S_ISBLK using S_IFBLK. +Files: src/os_unix.h + +Patch 6.0.010 +Problem: Using "gf" on a file name starting with "./" or "../" in a buffer + without a name causes a crash. (Roy Lewis) +Solution: Check for a NULL file name. +Files: src/misc2.c + +Patch 6.0.011 +Problem: Python: After replacing or deleting lines get an ml_get error. + (Leo Lipelis) +Solution: Adjust the cursor position for deleted or added lines. +Files: src/if_python.c + +Patch 6.0.012 +Problem: Polish translations contain printf format errors, this can result + in a crash when using one of them. +Solution: Fix for translated messages. (Michal Politowski) +Files: src/po/pl.po + +Patch 6.0.013 +Problem: Using ":silent! cmd" still gives some error messages, like for an + invalid range. (Salman Halim) +Solution: Reset emsg_silent after calling emsg() in do_one_cmd(). +Files: src/ex_docmd.c + +Patch 6.0.014 +Problem: When 'modifiable' is off and 'virtualedit' is "all", "rx" on a TAB + still changes the buffer. (Muraoka Taro) +Solution: Check if saving the line for undo fails. +Files: src/normal.c + +Patch 6.0.015 +Problem: When 'cpoptions' includes "S" and "filetype plugin on" has been + used, can get an error for deleting the b:did_ftplugin variable. + (Ralph Henderson) +Solution: Only delete the variable when it exists. +Files: runtime/ftplugin.vim + +Patch 6.0.016 +Problem: bufnr(), bufname() and bufwinnr() don't find unlisted buffers when + the argument is a string. (Hari Krishna Dara) + Also for setbufvar() and getbufvar(). +Solution: Also find unlisted buffers. +Files: src/eval.c + +Patch 6.0.017 +Problem: When 'ttybuiltin' is set and a builtin termcap entry defines t_Co + and the external one doesn't, it gets reset to empty. (David + Harrison) +Solution: Only set t_Co when it wasn't set yet. +Files: src/term.c + +Patch 6.0.018 +Problem: Initializing 'encoding' may cause a crash when setlocale() is not + used. (Dany St-Amant) +Solution: Check for a NULL pointer. +Files: src/mbyte.c + +Patch 6.0.019 +Problem: Converting a string with multi-byte characters to a printable + string, e.g., with strtrans(), may cause a crash. (Tomas Zellerin) +Solution: Correctly compute the length of the result in transstr(). +Files: src/charset.c + +Patch 6.0.020 +Problem: When obtaining the value of a global variable internally, could + get the function-local value instead. Applies to using <Leader> + and <LocalLeader> and resetting highlighting in a function. +Solution: Prepend "g:" to the variable name. (Aric Blumer) +Files: src/syntax.c, src/term.c + +Patch 6.0.021 +Problem: The 'cscopepathcomp' option didn't work. +Solution: Change USE_CSCOPE to FEAT_CSCOPE. (Mark Feng) +Files: src/option.c + +Patch 6.0.022 +Problem: When using the 'langmap' option, the second character of a command + starting with "g" isn't adjusted. +Solution: Apply 'langmap' to the second character. (Alex Kapranoff) +Files: src/normal.c + +Patch 6.0.023 +Problem: Loading the lhaskell syntax doesn't work. (Thore B. Karlsen) +Solution: Use ":runtime" instead of "source" to load haskell.vim. +Files: runtime/syntax/lhaskell.vim + +Patch 6.0.024 +Problem: Using "CTRL-V u 9900" in Insert mode may cause a crash. (Noah + Levitt) +Solution: Don't insert a NUL byte in the text, use a newline. +Files: src/misc1.c + +Patch 6.0.025 +Problem: The pattern "\vx(.|$)" doesn't match "x" at the end of a line. + (Preben Peppe Guldberg) +Solution: Always see a "$" as end-of-line after "\v". Do the same for "^". +Files: src/regexp.c + +Patch 6.0.026 +Problem: GTK: When using arrow keys to navigate through the menus, the + separators are selected. +Solution: Set the separators "insensitive". (Pavel Kankovsky) +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 6.0.027 +Problem: VMS: Printing doesn't work, the file is deleted too quickly. + No longer need the VMS specific printing menu. + gethostname() is not available with VAXC. + The makefile was lacking selection of the tiny-huge feature set. +Solution: Adjust the 'printexpr' option default. Fix the other problems and + update the documentation. (Zoltan Arpadffy) +Files: runtime/doc/os_vms.txt, runtime/menu.vim, src/INSTALLvms.txt, + src/Make_vms.mms, src/option.c, src/os_unix.c, src/os_vms_conf.h + +Patch 6.0.028 +Problem: Can't compile without +virtualedit and with +visualextra. (Geza + Lakner) +Solution: Add an #ifdef for +virtualedit. +Files: src/ops.c + +Patch 6.0.029 +Problem: When making a change in line 1, then in line 2 and then deleting + line 1, undo info could be wrong. Only when the changes are undone + at once. (Gerhard Hochholzer) +Solution: When not saving a line for undo because it was already done + before, remember for which entry the last line must be computed. + Added ue_getbot_entry pointer for this. When the number of lines + changes, adjust the position of newer undo entries. +Files: src/structs.h, src/undo.c + +Patch 6.0.030 +Problem: Using ":source! file" doesn't work inside a loop or after + ":argdo". (Pavol Juhas) +Solution: Execute the commands in the file right away, do not let the main + loop do it. +Files: src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c, src/globals.h, + src/proto/ex_docmd.pro, src/proto/getchar.pro + +Patch 6.0.031 +Problem: Nextstep doesn't have setenv() or putenv(). (John Beppu) +Solution: Move putenv() from pty.c to misc2.c +Files: src/misc2.c, src/pty.c + +Patch 6.0.032 +Problem: When changing a setting that affects all folds, they are not + displayed immediately. +Solution: Set the redraw flag in foldUpdateAll(). +Files: src/fold.c + +Patch 6.0.033 +Problem: Using 'wildmenu' on MS-Windows, file names that include a space + are only displayed starting with that space. (Xie Yuheng) +Solution: Don't recognize a backslash before a space as a path separator. +Files: src/screen.c + +Patch 6.0.034 +Problem: Calling searchpair() with three arguments could result in a crash + or strange error message. (Kalle Bjorklid) +Solution: Don't use the fifth argument when there is no fourth argument. +Files: src/eval.c + +Patch 6.0.035 +Problem: The menu item Edit/Global_Settings/Toggle_Toolbar doesn't work + when 'ignorecase' is set. (Allen Castaban) +Solution: Always match case when checking if a flag is already present in + 'guioptions'. +Files: runtime/menu.vim + +Patch 6.0.036 +Problem: OS/2, MS-DOS and MS-Windows: Using a path that starts with a + slash in 'tags' doesn't work as expected. (Mathias Koehrer) +Solution: Only use the drive, not the whole path to the current directory. + Also make it work for "c:dir/file". +Files: src/misc2.c + +Patch 6.0.037 +Problem: When the user has set "did_install_syntax_menu" to avoid the + default Syntax menu it still appears. (Virgilio) +Solution: Don't add the three default items when "did_install_syntax_menu" + is set. +Files: runtime/menu.vim + +Patch 6.0.038 +Problem: When 'selection' is "exclusive", deleting a block of text at the + end of a line can leave the cursor beyond the end of the line. +Solution: Correct the cursor position. +Files: src/ops.c + +Patch 6.0.039 +Problem: "gP" leaves the cursor in the wrong position when 'virtualedit' is + used. Using "c" in blockwise Visual mode leaves the cursor in a + strange position. +Solution: For "gP" reset the "coladd" field for the '] mark. For "c" leave + the cursor on the last inserted character. +Files: src/ops.c + +Patch 6.0.040 +Problem: When 'fileencoding' is invalid and writing fails because of + this, the original file is gone. (Eric Carlier) +Solution: Restore the original file from the backup. +Files: src/fileio.c + +Patch 6.0.041 +Problem: Using ":language messages en" when LC_MESSAGES is undefined + results in setting LC_CTYPE. (Eric Carlier) +Solution: Set $LC_MESSAGES instead. +Files: src/ex_cmds2.c + +Patch 6.0.042 +Problem: ":mksession" can't handle file names with a space. +Solution: Escape special characters in file names with a backslash. +Files: src/ex_docmd.c + +Patch 6.0.043 +Problem: Patch 6.0.041 was wrong. +Solution: Use mch_getenv() instead of vim_getenv(). +Files: src/ex_cmds2.c + +Patch 6.0.044 +Problem: Using a "containedin" list for a syntax item doesn't work for an + item that doesn't have a "contains" argument. Also, "containedin" + doesn't ignore a transparent item. (Timo Frenay) +Solution: When there is a "containedin" argument somewhere, always check for + contained items. Don't check for the transparent item but the + item it's contained in. +Files: src/structs.h, src/syntax.c + +Patch 6.0.045 +Problem: After creating a fold with a Visual selection, another window + with the same buffer still has inverted text. (Sami Salonen) +Solution: Redraw the inverted text. +Files: src/normal.c + +Patch 6.0.046 +Problem: When getrlimit() returns an 8 byte number the check for running + out of stack may fail. (Anthony Meijer) +Solution: Skip the stack check if the limit doesn't fit in a long. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/os_unix.c + +Patch 6.0.047 +Problem: Using a regexp with "\(\)" inside a "\%[]" item causes a crash. + (Samuel Lacas) +Solution: Don't allow nested atoms inside "\%[]". +Files: src/regexp.c + +Patch 6.0.048 +Problem: Win32: In the console the mouse doesn't always work correctly. + Sometimes after getting focus a mouse movement is interpreted like + a button click. +Solution: Use a different function to obtain the number of mouse buttons. + Avoid recognizing a button press from undefined bits. (Vince Negri) +Files: src/os_win32.c + +Patch 6.0.049 +Problem: When using evim the intro screen is misleading. (Adrian Nagle) +Solution: Mention whether 'insertmode' is set and the menus to be used. +Files: runtime/menu.vim, src/version.c + +Patch 6.0.050 +Problem: UTF-8: "viw" doesn't include non-ASCII characters before the + cursor. (Bertilo Wennergren) +Solution: Use dec_cursor() instead of decrementing the column number. +Files: src/search.c + +Patch 6.0.051 +Problem: UTF-8: Using CTRL-R on the command line doesn't insert composing + characters. (Ron Aaron) +Solution: Also include the composing characters and fix redrawing them. +Files: src/ex_getln.c, src/ops.c + +Patch 6.0.052 +Problem: The check for rlim_t in patch 6.0.046 does not work on some + systems. (Zdenek Sekera) +Solution: Also look in sys/resource.h for rlim_t. +Files: src/auto/configure, src/configure.in + +Patch 6.0.053 (extra) +Problem: Various problems with QNX. +Solution: Minor fix for configure. Switch on terminal clipboard support in + main.c. Fix "pterm" mouse support. os_qnx.c didn't build without + photon. (Julian Kinraid) +Files: src/auto/configure, src/configure.in, src/gui_photon.c, + src/main.c, src/misc2.c, src/option.h, src/os_qnx.c, src/os_qnx.h, + src/syntax.c + +Patch 6.0.054 +Problem: When using mswin.vim, CTRL-V pastes a block of text like it is + normal text. Using CTRL-V in blockwise Visual mode leaves "x" + characters behind. +Solution: Make CTRL-V work as it should. Do the same for the Paste menu + entries. +Files: runtime/menu.vim, runtime/mswin.vim + +Patch 6.0.055 +Problem: GTK: The selection isn't copied the first time. +Solution: Own the selection at the right moment. +Files: src/gui_gtk_x11.c + +Patch 6.0.056 +Problem: Using "CTRL-O cw" in Insert mode results in a nested Insert mode. + <Esc> doesn't leave Insert mode then. +Solution: Only use nested Insert mode when 'insertmode' is set or when a + mapping is used. +Files: src/normal.c + +Patch 6.0.057 +Problem: Using ":wincmd g}" in a function doesn't work. (Gary Holloway) +Solution: Execute the command directly, instead of putting it in the + typeahead buffer. +Files: src/normal.c, src/proto/normal.pro, src/window.c + +Patch 6.0.058 +Problem: When a Cursorhold autocommand moved the cursor, the ruler wasn't + updated. (Bohdan Vlasyuk) +Solution: Update the ruler after executing the autocommands. +Files: src/gui.c + +Patch 6.0.059 +Problem: Highlighting for 'hlsearch' isn't visible in lines that are + highlighted for diff highlighting. (Gary Holloway) +Solution: Let 'hlsearch' highlighting overrule diff highlighting. +Files: src/screen.c + +Patch 6.0.060 +Problem: Motif: When the tooltip is to be popped up, Vim crashes. + (Gary Holloway) +Solution: Check for a NULL return value from gui_motif_fontset2fontlist(). +Files: src/gui_beval.c + +Patch 6.0.061 +Problem: The toolbar buttons to load and save a session do not correctly + use v:this_session. +Solution: Check for v:this_session to be empty instead of existing. +Files: runtime/menu.vim + +Patch 6.0.062 +Problem: Crash when 'verbose' is > 3 and using ":shell". (Yegappan + Lakshmanan) +Solution: Avoid giving a NULL pointer to printf(). Also output a newline + and switch the cursor on. +Files: src/misc2.c + +Patch 6.0.063 +Problem: When 'cpoptions' includes "$", using "cw" to type a ')' on top of + the "$" doesn't update syntax highlighting after it. +Solution: Stop displaying the "$" when typing a ')' in its position. +Files: src/search.c + +Patch 6.0.064 (extra) +Problem: The NSIS install script doesn't work with newer versions of NSIS. + The diff feature doesn't work when there isn't a good diff.exe on + the system. +Solution: Replace the GetParentDir instruction by a user function. + Fix a few cosmetic problems. Use defined constants for the + version number, so that it's defined in one place only. + Only accept the install directory when it ends in "vim". + (Eduardo Fernandez) + Add a diff.exe and use it from the default _vimrc. +Files: nsis/gvim.nsi, nsis/README.txt, src/dosinst.c + +Patch 6.0.065 +Problem: When using ":normal" in 'indentexpr' it may use redo characters + before its argument. (Neil Bird) +Solution: Save and restore the stuff buffer in ex_normal(). +Files: src/ex_docmd.c, src/getchar.c, src/globals.h, src/structs.h + +Patch 6.0.066 +Problem: Sometimes undo for one command is split into two undo actions. + (Halim Salman) +Solution: Don't set the undo-synced flag when reusing a line that was + already saved for undo. +Files: src/undo.c + +Patch 6.0.067 +Problem: if_xcmdsrv.c doesn't compile on systems where fd_set isn't defined + in the usual header file (e.g., AIX). (Mark Waggoner) +Solution: Include sys/select.h in if_xcmdsrv.c for systems that have it. +Files: src/if_xcmdsrv.c + +Patch 6.0.068 +Problem: When formatting a Visually selected area with "gq" and the number + of lines increases the last line may not be redrawn correctly. + (Yegappan Lakshmanan) +Solution: Correct the area to be redrawn for inserted/deleted lines. +Files: src/ops.c + +Patch 6.0.069 +Problem: Using "K" on a word that includes a "!" causes a "No previous + command" error, because the "!" is expanded. (Craig Jeffries) +Solution: Put a backslash before the "!". +Files: src/normal.c + +Patch 6.0.070 +Problem: Win32: The error message for a failed dynamic linking of a Perl, + Ruby, Tcl and Python library is unclear about what went wrong. +Solution: Give the name of the library or function that could not be loaded. + Also for the iconv and gettext libraries when 'verbose' is set. +Files: src/eval.c, src/if_perl.xs, src/if_python.c, src/if_ruby.c, + src/if_tcl.c, src/mbyte.c, src/os_win32.c, src/proto/if_perl.pro, + src/proto/if_python.pro, src/proto/if_ruby.pro, + src/proto/if_tcl.pro, src/proto/mbyte.pro + +Patch 6.0.071 +Problem: The "iris-ansi" builtin termcap isn't very good. +Solution: Fix the wrong entries. (David Harrison) +Files: src/term.c + +Patch 6.0.072 +Problem: When 'lazyredraw' is set, a mapping that stops Visual mode, moves + the cursor and starts Visual mode again causes a redraw problem. + (Brian Silverman) +Solution: Redraw both the old and the new Visual area when necessary. +Files: src/normal.c, src/screen.c + +Patch 6.0.073 (extra) +Problem: DJGPP: When using CTRL-Z to start a shell, the prompt is halfway + the text. (Volker Kiefel) +Solution: Position the system cursor before starting the shell. +Files: src/os_msdos.c + +Patch 6.0.074 +Problem: When using "&" in a substitute string a multi-byte character with + a trailbyte 0x5c is not handled correctly. +Solution: Recognize multi-byte characters inside the "&" part. (Muraoka Taro) +Files: src/regexp.c + +Patch 6.0.075 +Problem: When closing a horizontally split window while 'eadirection' is + "hor" another horizontally split window is still resized. (Aron + Griffis) +Solution: Only resize windows in the same top frame as the window that is + split or closed. +Files: src/main.c, src/proto/window.pro, src/window.c + +Patch 6.0.076 +Problem: Warning for wrong pointer type when compiling. +Solution: Use char instead of char_u pointer. +Files: src/version.c + +Patch 6.0.077 +Problem: Patch 6.0.075 was incomplete. +Solution: Fix another call to win_equal(). +Files: src/option.c + +Patch 6.0.078 +Problem: Using "daw" at the end of a line on a single-character word didn't + include the white space before it. At the end of the file it + didn't work at all. (Gavin Sinclair) +Solution: Include the white space before the word. +Files: src/search.c + +Patch 6.0.079 +Problem: When "W" is in 'cpoptions' and 'backupcopy' is "no" or "auto", can + still overwrite a read-only file, because it's renamed. (Gary + Holloway) +Solution: Add a check for a read-only file before renaming the file to + become the backup. +Files: src/fileio.c + +Patch 6.0.080 +Problem: When using a session file that has the same file in two windows, + the fileinfo() call in do_ecmd() causes a scroll and a hit-enter + prompt. (Robert Webb) +Solution: Don't scroll this message when 'shortmess' contains 'O'. +Files: src/ex_cmds.c + +Patch 6.0.081 +Problem: After using ":saveas" the new buffer name is added to the Buffers + menu with a wrong number. (Chauk-Mean Proum) +Solution: Trigger BufFilePre and BufFilePost events for the renamed buffer + and BufAdd for the old name (which is with a new buffer). +Files: src/ex_cmds.c + +Patch 6.0.082 +Problem: When swapping screens in an xterm and there is an (error) message + from the vimrc script, the shell prompt is after the message. +Solution: Output a newline when there was output on the alternate screen. + Also when starting the GUI. +Files: src/main.c + +Patch 6.0.083 +Problem: GTK: When compiled without menu support the buttons in a dialog + don't have any text. (Erik Edelmann) +Solution: Add the text also when GTK_USE_ACCEL isn't defined. And define + GTK_USE_ACCEL also when not using menus. +Files: src/gui_gtk.c + +Patch 6.0.084 +Problem: UTF-8: a "r" command with an argument that is a keymap for a + character with a composing character can't be repeated with ".". + (Raphael Finkel) +Solution: Add the composing characters to the redo buffer. +Files: src/normal.c + +Patch 6.0.085 +Problem: When 'mousefocus' is set, using "s" to go to Insert mode and then + moving the mouse pointer to another window stops Insert mode, + while this doesn't happen with "a" or "i". (Robert Webb) +Solution: Reset finish_op before calling edit(). +Files: src/normal.c + +Patch 6.0.086 +Problem: When using "gu" the message says "~ed". +Solution: Make the message say "changed". +Files: src/ops.c + +Patch 6.0.087 (lang) +Problem: Message translations are incorrect, which may cause a crash. + (Peter Figura) + The Turkish translations needed more work and the maintainer + didn't have time. +Solution: Fix order of printf arguments. Remove %2$d constructs. + Add "-v" to msgfmt to get a warning for wrong translations. + Don't install the Turkish translations for now. + Update a few more translations. +Files: src/po/Makefile, src/po/af.po, src/po/cs.po, src/po/cs.cp1250.po, + src/po/de.po, src/po/es.po, src/po/fr.po, src/po/it.po, + src/po/ja.po, src/po/ja.sjis.po, src/po/ko.po, src/po/pl.po, + src/po/sk.po, src/po/uk.po, src/po/zh_CN.UTF-8.po, + src/po/zh_CN.cp936.po, src/po/zh_CN.po, src/po/zh_TW.po + +Patch 6.0.088 +Problem: "." doesn't work after using "rx" in Visual mode. (Charles + Campbell) +Solution: Also store the replacement character in the redo buffer. +Files: src/normal.c + +Patch 6.0.089 +Problem: In a C file, using "==" to align a line starting with "* " after + a line with "* -" indents one space too few. (Piet Delport) +Solution: Align with the previous line if the comment-start-string matches + there. +Files: src/misc1.c + +Patch 6.0.090 +Problem: When a wrapping line does not fit in a window and 'scrolloff' is + bigger than half the window height, moving the cursor left or + right causes the screen to flash badly. (Lubomir Host) +Solution: When there is not enough room to show 'scrolloff' screen lines and + near the end of the line, show the end of the line. +Files: src/move.c + +Patch 6.0.091 +Problem: Using CTRL-O in Insert mode, while 'virtualedit' is "all" and the + cursor is after the end-of-line, moves the cursor left. (Yegappan + Lakshmanan) +Solution: Keep the cursor in the same position. +Files: src/edit.c + +Patch 6.0.092 +Problem: The explorer plugin doesn't ignore case of 'suffixes' on + MS-Windows. (Mike Williams) +Solution: Match or ignore case as appropriate for the OS. +Files: runtime/plugin/explorer.vim + +Patch 6.0.093 +Problem: When the Tcl library couldn't be loaded dynamically, get an error + message when closing a buffer or window. (Muraoka Taro) +Solution: Only free structures if already using the Tcl interpreter. +Files: src/if_tcl.c + +Patch 6.0.094 +Problem: Athena: When clicking in the horizontal scrollbar Vim crashes. + (Paul Ackersviller) +Solution: Use the thumb size instead of the window pointer of the scrollbar + (which is NULL). (David Harrison) + Also avoid that scrolling goes the wrong way in a narrow window. +Files: src/gui_athena.c + +Patch 6.0.095 +Problem: Perl: Deleting lines may leave the cursor beyond the end of the + file. +Solution: Check the cursor position after deleting a line. (Serguei) +Files: src/if_perl.xs + +Patch 6.0.096 +Problem: When ":saveas fname" fails because the file already exists, the + file name is changed anyway and a following ":w" will overwrite + the file. (Eric Carlier) +Solution: Don't change the file name if the file already exists. +Files: src/ex_cmds.c + +Patch 6.0.097 +Problem: Re-indenting in Insert mode with CTRL-F may cause a crash with a + multi-byte encoding. +Solution: Avoid using a character before the start of a line. (Sergey + Vlasov) +Files: src/edit.c + +Patch 6.0.098 +Problem: GTK: When using Gnome the "Search" and "Search and Replace" dialog + boxes are not translated. +Solution: Define ENABLE_NLS before including gnome.h. (Eduardo Fernandez) +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 6.0.099 +Problem: Cygwin: When running Vi compatible MS-DOS line endings cause + trouble. +Solution: Make the default for 'fileformats' "unix,dos" in Vi compatible + mode. (Michael Schaap) +Files: src/option.h + +Patch 6.0.100 +Problem: ":badd +0 test%file" causes a crash. +Solution: Take into account that the "+0" is NUL terminated when allocating + room for replacing the "%". +Files: src/ex_docmd.c + +Patch 6.0.101 +Problem: ":mksession" doesn't restore editing a file that has a '#' or '%' + in its name. (Wolfgang Blankenburg) +Solution: Put a backslash before the '#' and '%'. +Files: src/ex_docmd.c + +Patch 6.0.102 +Problem: When changing folds the cursor may appear halfway a closed fold. + (Nam SungHyun) +Solution: Set w_cline_folded correctly. (Yasuhiro Matsumoto) +Files: src/move.c + +Patch 6.0.103 +Problem: When using 'scrollbind' a large value of 'scrolloff' will make the + scroll binding stop near the end of the file. (Coen Engelbarts) +Solution: Don't use 'scrolloff' when limiting the topline for scroll + binding. (Dany StAmant) +Files: src/normal.c + +Patch 6.0.104 +Problem: Multi-byte: When '$' is in 'cpoptions', typing a double-wide + character that overwrites the left halve of an old double-wide + character causes a redraw problem and the cursor stops blinking. +Solution: Clear the right half of the old character. (Yasuhiro Matsumoto) +Files: src/edit.c, src/screen.c + +Patch 6.0.105 +Problem: Multi-byte: In a window of one column wide, with syntax + highlighting enabled a crash might happen. +Solution: Skip getting the syntax attribute when the character doesn't fit + anyway. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 6.0.106 (extra) +Problem: Win32: When the printer font is wrong, there is no error message. +Solution: Give an appropriate error message. (Yasuhiro Matsumoto) +Files: src/os_mswin.c + +Patch 6.0.107 (extra) +Problem: VisVim: When editing another file, a modified file may be written + unexpectedly and without warning. +Solution: Split the window if a file was modified. +Files: VisVim/Commands.cpp + +Patch 6.0.108 +Problem: When using folding could try displaying line zero, resulting in an + error for a NULL pointer. +Solution: Stop decrementing w_topline when the first line of a window is in + a closed fold. +Files: src/window.c + +Patch 6.0.109 +Problem: XIM: When the input method is enabled, repeating an insertion with + "." disables it. (Marcel Svitalsky) +Solution: Don't store the input method status when a command comes from the + stuff buffer. +Files: src/ui.c + +Patch 6.0.110 +Problem: Using undo after executing "OxjAxkdd" from a register in + an empty buffer gives an error message. (Gerhard Hochholzer) +Solution: Don't adjust the bottom line number of an undo block when it's + zero. Add a test for this problem. +Files: src/undo.c, src/testdir/test20.in, src/testdir/test20.ok + +Patch 6.0.111 +Problem: The virtcol() function doesn't take care of 'virtualedit'. +Solution: Add the column offset when needed. (Yegappan Lakshmanan) +Files: src/eval.c + +Patch 6.0.112 +Problem: The explorer plugin doesn't sort directories with a space or + special character after a directory with a shorter name. +Solution: Ignore the trailing slash when comparing directory names. (Mike + Williams) +Files: runtime/plugin/explorer.vim + +Patch 6.0.113 +Problem: ":edit ~/fname" doesn't work if $HOME includes a space. Also, + expanding wildcards with the shell may fail. (John Daniel) +Solution: Escape spaces with a backslash when needed. +Files: src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/os_unix.c + +Patch 6.0.114 +Problem: Using ":p" with fnamemodify() didn't expand "~/" or "~user/" to a + full path. For Win32 the current directory was prepended. + (Michael Geddes) +Solution: Expand the home directory. +Files: src/eval.c + +Patch 6.0.115 (extra) +Problem: Win32: When using a dialog with a textfield it cannot scroll the + text. +Solution: Add ES_AUTOHSCROLL to the textfield style. (Pedro Gomes) +Files: src/gui_w32.c + +Patch 6.0.116 (extra) +Problem: MS-Windows NT/2000/XP: filewritable() doesn't work correctly for + filesystems that use ACLs. +Solution: Use ACL functions to check if a file is writable. (Mike Williams) +Files: src/eval.c, src/macros.h, src/os_win32.c, src/proto/os_win32.pro + +Patch 6.0.117 (extra) +Problem: Win32: when disabling the menu, "set lines=999" doesn't use all + the available screen space. +Solution: Don't subtract the fixed caption height but the real menu height + from the available screen space. Also: Avoid recursion in + gui_mswin_get_menu_height(). +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.0.118 +Problem: When $TMPDIR is a relative path, the temp directory is missing a + trailing slash and isn't deleted when Vim exits. (Peter Holm) +Solution: Add the slash after expanding the directory to an absolute path. +Files: src/fileio.c + +Patch 6.0.119 (depends on patch 6.0.116) +Problem: VMS: filewritable() doesn't work properly. +Solution: Use the same method as for Unix. (Zoltan Arpadffy) +Files: src/eval.c + +Patch 6.0.120 +Problem: The conversion to html isn't compatible with XHTML. +Solution: Quote the values. (Jess Thrysoee) +Files: runtime/syntax/2html.vim + +Patch 6.0.121 (extra) (depends on patch 6.0.116) +Problem: Win32: After patch 6.0.116 Vim doesn't compile with mingw32. +Solution: Add an #ifdef HAVE_ACL. +Files: src/os_win32.c + +Patch 6.0.122 (extra) +Problem: Win16: Same resize problems as patch 6.0.117 fixed for Win32. And + dialog textfield problem from patch 6.0.115. +Solution: Set old_menu_height only when used. Add ES_AUTOHSCROLL flag. + (Vince Negri) +Files: src/gui_w16.c + +Patch 6.0.123 (depends on patch 6.0.119) +Problem: Win16: Compilation problems. +Solution: Move "&&" to other lines. (Vince Negri) +Files: src/eval.c + +Patch 6.0.124 +Problem: When using a ":substitute" command that starts with "\=" + (evaluated as an expression), "~" was still replaced with the + previous substitute string. +Solution: Skip the replacement when the substitute string starts with "\=". + Also adjust the documentation about doubling backslashes. +Files: src/ex_cmds.c, runtime/doc/change.txt + +Patch 6.0.125 (extra) +Problem: Win32: When using the multi_byte_ime feature pressing the shift + key would be handled as if a character was entered, thus mappings + with a shifted key didn't work. (Charles Campbell) +Solution: Ignore pressing the shift, control and alt keys. +Files: src/os_win32.c + +Patch 6.0.126 +Problem: The python library was always statically linked. +Solution: Link the python library dynamically. (Matthias Klose) +Files: src/auto/configure, src/configure.in + +Patch 6.0.127 +Problem: When using a terminal that swaps screens and the Normal background + color has a different background, using an external command may + cause the color of the wrong screen to be changed. (Mark Waggoner) +Solution: Don't call screen_stop_highlight() in stoptermcap(). +Files: src/term.c + +Patch 6.0.128 +Problem: When moving a vertically split window to the far left or right, + the scrollbars are not adjusted. (Scott E Lee) When 'mousefocus' + is set the mouse pointer wasn't adjusted. +Solution: Adjust the scrollbars and the mouse pointer. +Files: src/window.c + +Patch 6.0.129 +Problem: When using a very long file name, ":ls" (repeated a few times) + causes a crash. Test with "vim `perl -e 'print "A"x1000'`". + (Tejeda) +Solution: Terminate a string before getting its length in buflist_list(). +Files: src/buffer.c + +Patch 6.0.130 +Problem: When using ":cprev" while the error window is open, and the new + line at the top wraps, the window isn't correctly drawn. + (Yegappan Lakshmanan) +Solution: When redrawing the topline don't scroll twice. +Files: src/screen.c + +Patch 6.0.131 +Problem: When using bufname() and there are two matches for listed buffers + and one match for an unlisted buffer, the unlisted buffer is used. + (Aric Blumer) +Solution: When there is a match with a listed buffer, don't check for + unlisted buffers. +Files: src/buffer.c + +Patch 6.0.132 +Problem: When setting 'iminsert' in the vimrc and using an xterm with two + screens the ruler is drawn in the wrong screen. (Igor Goldenberg) +Solution: Only draw the ruler when using the right screen. +Files: src/option.c + +Patch 6.0.133 +Problem: When opening another buffer while 'keymap' is set and 'iminsert' + is zero, 'iminsert' is set to one unexpectedly. (Igor Goldenberg) +Solution: Don't set 'iminsert' as a side effect of defining a ":lmap" + mapping. Only do that when 'keymap' is set. +Files: src/getchar.c, src/option.c + +Patch 6.0.134 +Problem: When completing ":set tags=" a path with an embedded space causes + the completion to stop. (Sektor van Skijlen) +Solution: Escape spaces with backslashes, like for ":set path=". Also take + backslashes into account when searching for the start of the path + to complete (e.g., for 'backupdir' and 'cscopeprg'). +Files: src/ex_docmd.c, src/ex_getln.c, src/option.c, src/structs.h + +Patch 6.0.135 +Problem: Menus that are not supposed to do anything used "<Nul>", which + still produced an error beep. + When CTRL-O is mapped for Insert mode, ":amenu" commands didn't + work in Insert mode. + Menu language falls back to English when $LANG ends in "@euro". +Solution: Use "<Nop>" for a menu item that doesn't do anything, just like + mappings. + Use ":anoremenu" instead of ":amenu". + Ignore "@euro" in the locale name. +Files: runtime/makemenu.vim, runtime/menu.vim, src/menu.c + +Patch 6.0.136 +Problem: When completing in Insert mode, a mapping could be unexpectedly + applied. +Solution: Don't use mappings when checking for a typed character. +Files: src/edit.c + +Patch 6.0.137 +Problem: GUI: When using the find or find/replace dialog from Insert mode, + the input mode is stopped. +Solution: Don't use the input method status when the main window doesn't + have focus. +Files: src/ui.c + +Patch 6.0.138 +Problem: GUI: When using the find or find/replace dialog from Insert mode, + the text is inserted when CTRL-O is mapped. (Andre Pang) + When opening the dialog again, a whole word search isn't + recognized. + When doing "replace all" a whole word search was never done. +Solution: Don't put a search or replace command in the input buffer, + execute it directly. + Recognize "\<" and "\>" after removing "\V". + Add "\<" and "\>" also for "replace all". +Files: src/gui.c + +Patch 6.0.139 +Problem: When stopping 'wildmenu' completion, the statusline of the + bottom-left vertically split window isn't redrawn. (Yegappan + Lakshmanan) +Solution: Redraw all the bottom statuslines. +Files: src/ex_getln.c, src/proto/screen.pro, src/screen.c + +Patch 6.0.140 +Problem: Memory allocated for local mappings and abbreviations is leaked + when the buffer is wiped out. +Solution: Clear the local mappings when deleting a buffer. +Files: src/buffer.c, src/getchar.c, src/proto/getchar.pro, src/vim.h + +Patch 6.0.141 +Problem: When using ":enew" in an empty buffer, some buffer-local things + are not cleared. b:keymap_name is not set. +Solution: Clear user commands and mappings local to the buffer when re-using + the current buffer. Reload the keymap. +Files: src/buffer.c + +Patch 6.0.142 +Problem: When Python is linked statically, loading dynamic extensions might + fail. +Solution: Add an extra linking flag when needed. (Andrew Rodionoff) +Files: src/configure.in, src/auto/configure + +Patch 6.0.143 +Problem: When a syntax item includes a line break in a pattern, the syntax + may not be updated properly when making a change. +Solution: Add the "linebreaks" argument to ":syn sync". +Files: runtime/doc/syntax.txt, src/screen.c, src/structs.h, src/syntax.c + +Patch 6.0.144 +Problem: After patch 6.0.088 redoing "veU" doesn't work. +Solution: Don't add the "U" to the redo buffer, it will be used as an undo + command. +Files: src/normal.c + +Patch 6.0.145 +Problem: When Vim can't read any input it might get stuck. When + redirecting stdin and stderr Vim would not read commands from a + file. (Servatius Brandt) +Solution: When repeatedly trying to read a character when it's not possible, + exit Vim. When stdin and stderr are not a tty, still try reading + from them, but don't do a blocking wait. +Files: src/ui.c + +Patch 6.0.146 +Problem: When 'statusline' contains "%{'-'}" this results in a zero. + (Milan Vancura) +Solution: Don't handle numbers with a minus as a number, they were not + displayed anyway. +Files: src/buffer.c + +Patch 6.0.147 +Problem: It's not easy to mark a Vim version as being modified. The new + license requires this. +Solution: Add the --modified-by argument to configure and the MODIFIED_BY + define. It's used in the intro screen and the ":version" output. +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/feature.h, src/version.c + +Patch 6.0.148 +Problem: After "p" in an empty line, `[ goes to the second character. + (Kontra Gergely) +Solution: Don't increment the column number in an empty line. +Files: src/ops.c + +Patch 6.0.149 +Problem: The pattern "\(.\{-}\)*" causes a hang. When using a search + pattern that causes a stack overflow to be detected Vim could + still hang. +Solution: Correctly report "operand could be empty" when using "\{-}". + Check for "out_of_stack" inside loops to avoid a hang. +Files: src/regexp.c + +Patch 6.0.150 +Problem: When using a multi-byte encoding, patch 6.0.148 causes "p" to work + like "P". (Sung-Hyun Nam) +Solution: Compute the byte length of a multi-byte character. +Files: src/ops.c + +Patch 6.0.151 +Problem: Redrawing the status line and ruler can be wrong when it contains + multi-byte characters. +Solution: Use character width and byte length correctly. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 6.0.152 +Problem: strtrans() could hang on an illegal UTF-8 byte sequence. +Solution: Skip over illegal bytes. (Yasuhiro Matsumoto) +Files: src/charset.c + +Patch 6.0.153 +Problem: When using (illegal) double-byte characters and Vim syntax + highlighting Vim can crash. (Yasuhiro Matsumoto) +Solution: Increase a pointer over a character instead of a byte. +Files: src/regexp.c + +Patch 6.0.154 +Problem: MS-DOS and MS-Windows: The menu entries for xxd don't work when + there is no xxd in the path. + When converting back from Hex the filetype may remain "xxd" if it + is not detected. +Solution: When xxd is not in the path use the one in the runtime directory, + where the install program has put it. + Clear the 'filetype' option before detecting the new value. +Files: runtime/menu.vim + +Patch 6.0.155 +Problem: Mac: compilation problems in ui.c after patch 6.0.145. (Axel + Kielhorn) +Solution: Don't call mch_inchar() when NO_CONSOLE is defined. +Files: src/ui.c + +Patch 6.0.156 +Problem: Starting Vim with the -b argument and two files, ":next" doesn't + set 'binary' in the second file, like Vim 5.7. (Norman Diamond) +Solution: Set the global value for 'binary'. +Files: src/option.c + +Patch 6.0.157 +Problem: When defining a user command with "-complete=dir" files will also + be expanded. Also, "-complete=mapping" doesn't appear to work. + (Michael Naumann) +Solution: Use the expansion flags defined with the user command. + Handle expanding mappings specifically. +Files: src/ex_docmd.c + +Patch 6.0.158 +Problem: When getting the warning for a file being changed outside of Vim + and reloading the file, the 'readonly' option is reset, even when + the permissions didn't change. (Marcel Svitalsky) +Solution: Keep 'readonly' set when reloading a file and the permissions + didn't change. +Files: src/fileio.c + +Patch 6.0.159 +Problem: Wildcard expansion for ":emenu" also shows separators. +Solution: Skip menu separators for ":emenu", ":popup" and ":tearoff". + Also, don't handle ":tmenu" as if it was ":tearoff". And leave + out the alternatives with "&" included. +Files: src/menu.c + +Patch 6.0.160 +Problem: When compiling with GCC 3.0.2 and using the "-O2" argument, the + optimizer causes a problem that makes Vim crash. +Solution: Add a configure check to avoid "-O2" for this version of gcc. +Files: src/configure.in, src/auto/configure + +Patch 6.0.161 (extra) +Problem: Win32: Bitmaps don't work with signs. +Solution: Make it possible to use bitmaps with signs. (Muraoka Taro) +Files: src/ex_cmds.c, src/feature.h, src/gui_w32.c, src/gui_x11.c, + src/proto/gui_w32.pro, src/proto/gui_x11.pro + +Patch 6.0.162 +Problem: Client-server: An error message for a wrong expression appears in + the server instead of the client. +Solution: Pass the error message from the server to the client. Also + adjust the example code. (Flemming Madsen) +Files: src/globals.h, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c, + src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro, + runtime/doc/eval.txt, runtime/tools/xcmdsrv_client.c + +Patch 6.0.163 +Problem: When using a GUI dialog, a file name is sometimes used like it was + a directory. +Solution: Separate path and file name properly. + For GTK, Motif and Athena concatenate directory and file name for + the default selection. +Files: src/diff.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c, src/message.c + +Patch 6.0.164 +Problem: After patch 6.0.135 the menu entries for pasting don't work in + Insert and Visual mode. (Muraoka Taro) +Solution: Add <script> to allow script-local mappings. +Files: runtime/menu.vim + +Patch 6.0.165 +Problem: Using --remote and executing locally gives unavoidable error + messages. +Solution: Add --remote-silent and --remote-wait-silent to silently execute + locally. + For Win32 there was no error message when a server didn't exist. +Files: src/eval.c, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c, + src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro + +Patch 6.0.166 +Problem: GUI: There is no way to avoid dialogs to pop up. +Solution: Add the 'c' flag to 'guioptions': Use console dialogs. (Yegappan + Lakshmanan) +Files: runtime/doc/options.txt, src/option.h, src/message.c + +Patch 6.0.167 +Problem: When 'fileencodings' is "latin2" some characters in the help files + are displayed wrong. +Solution: Force the 'fileencoding' for the help files to be "latin1". +Files: src/fileio.c + +Patch 6.0.168 +Problem: ":%s/\n/#/" doesn't replace at an empty line. (Bruce DeVisser) +Solution: Don't skip matches after joining two lines. +Files: src/ex_cmds.c + +Patch 6.0.169 +Problem: When run as evim and the GUI can't be started we get stuck in a + terminal without menus in Insert mode. +Solution: Exit when using "evim" and "gvim -y" when the GUI can't be + started. +Files: src/main.c + +Patch 6.0.170 +Problem: When printing double-width characters the size of tabs after them + is wrong. (Muraoka Taro) +Solution: Correctly compute the column after a double-width character. +Files: src/ex_cmds2.c + +Patch 6.0.171 +Problem: With 'keymodel' including "startsel", in Insert mode after the end + of a line, shift-Left does not move the cursor. (Steve Hall) +Solution: CTRL-O doesn't move the cursor left, need to do that explicitly. +Files: src/edit.c + +Patch 6.0.172 +Problem: CTRL-Q doesn't replace CTRL-V after CTRL-X in Insert mode while it + does in most other situations. +Solution: Make CTRL-X CTRL-Q work like CTRL-X CTRL-V in Insert mode. +Files: src/edit.c + +Patch 6.0.173 +Problem: When using "P" to insert a line break the cursor remains past the + end of the line. +Solution: Check for the cursor being beyond the end of the line. +Files: src/ops.c + +Patch 6.0.174 +Problem: After using "gd" or "gD" the search direction for "n" may still be + backwards. (Servatius Brandt) +Solution: Reset the search direction to forward. +Files: src/normal.c, src/search.c, src/proto/search.pro + +Patch 6.0.175 +Problem: ":help /\z(\)" doesn't work. (Thomas Koehler) +Solution: Double the backslashes. +Files: src/ex_cmds.c + +Patch 6.0.176 +Problem: When killed by a signal autocommands are still triggered as if + nothing happened. +Solution: Add the v:dying variable to allow autocommands to work differently + when a deadly signal has been trapped. +Files: src/eval.c, src/os_unix.c, src/vim.h + +Patch 6.0.177 +Problem: When 'commentstring' is empty and 'foldmethod' is "marker", "zf" + doesn't work. (Thomas S. Urban) +Solution: Add the marker even when 'commentstring' is empty. +Files: src/fold.c, src/normal.c + +Patch 6.0.178 +Problem: Uninitialized memory read from xp_backslash field. +Solution: Initialize xp_backslash field properly. +Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/misc1.c, src/tag.c + +Patch 6.0.179 +Problem: Win32: When displaying UTF-8 characters may read uninitialized + memory. +Solution: Add utfc_ptr2len_check_len() to avoid reading past the end of a + string. +Files: src/mbyte.c, src/proto/mbyte.pro, src/gui_w32.c + +Patch 6.0.180 +Problem: Expanding environment variables in a string that ends in a + backslash could go past the end of the string. +Solution: Detect the trailing backslash. +Files: src/misc1.c + +Patch 6.0.181 +Problem: When using ":cd dir" memory was leaked. +Solution: Free the allocated memory. Also avoid an uninitialized memory + read. +Files: src/misc2.c + +Patch 6.0.182 +Problem: When using a regexp on multi-byte characters, could try to read a + character before the start of the line. +Solution: Don't decrement a pointer to before the start of the line. +Files: src/regexp.c + +Patch 6.0.183 +Problem: Leaking memory when ":func!" redefines a function. +Solution: Free the function name when it's not used. +Files: src/eval.c + +Patch 6.0.184 +Problem: Leaking memory when expanding option values. +Solution: Don't always copy the expanded option into allocated memory. +Files: src/option.c + +Patch 6.0.185 +Problem: Crash in Vim when pasting a selection in another application, on a + 64 bit machine. +Solution: Fix the format for an Atom to 32 bits. (Peter Derr) +Files: src/ui.c + +Patch 6.0.186 +Problem: X11: Three warnings when compiling the client-server code. +Solution: Add a typecast to unsigned char. +Files: src/if_xcmdsrv.c + +Patch 6.0.187 +Problem: "I" in Visual mode and then "u" reports too many changes. (Andrew + Stryker) + "I" in Visual linewise mode adjusts the indent for no apparent + reason. +Solution: Only save those lines for undo that are changed. + Don't change the indent after inserting in Visual linewise mode. +Files: src/ops.c + +Patch 6.0.188 +Problem: Win32: After patch 6.0.161 signs defined in the vimrc file don't + work. +Solution: Initialize the sign icons after initializing the GUI. (Vince + Negri) +Files: src/gui.c, src/gui_x11.c + +Patch 6.0.189 +Problem: The size of the Visual area isn't always displayed when scrolling + ('ruler' off, 'showcmd' on). Also not when using a search + command. (Sylvain Hitier) +Solution: Redisplay the size of the selection after showing the mode. +Files: src/screen.c + +Patch 6.0.190 +Problem: GUI: when 'mouse' is empty a click with the middle button still + moves the cursor. +Solution: Paste at the cursor position instead of the mouse position. +Files: src/normal.c + +Patch 6.0.191 +Problem: When no servers are available serverlist() gives an error instead + of returning an empty string. (Hari Krishna) +Solution: Don't give an error message. +Files: src/eval.c + +Patch 6.0.192 +Problem: When 'virtualedit' is set, "ylj" goes to the wrong column. (Andrew + Nikitin) +Solution: Reset the flag that w_virtcol is valid when moving the cursor back + to the start of the operated area. +Files: src/normal.c + +Patch 6.0.193 +Problem: When 'virtualedit' is set, col(".") after the end of the line + should return one extra. +Solution: Add one to the column. +Files: src/eval.c + +Patch 6.0.194 +Problem: "--remote-silent" tries to send a reply to the client, like it was + "--remote-wait". +Solution: Properly check for the argument. +Files: src/main.c + +Patch 6.0.195 +Problem: When 'virtualedit' is set and a search starts in virtual space + ":call search('x')" goes to the wrong position. (Eric Long) +Solution: Reset coladd when finding a match. +Files: src/search.c + +Patch 6.0.196 +Problem: When 'virtualedit' is set, 'selection' is "exclusive" and visually + selecting part of a tab at the start of a line, "x" joins it with + the previous line. Also, when the selection spans more than one + line the whole tab is deleted. +Solution: Take coladd into account when adjusting for 'selection' being + "exclusive". Also expand a tab into spaces when deleting more + than one line. +Files: src/normal.c, src/ops.c + +Patch 6.0.197 +Problem: When 'virtualedit' is set and 'selection' is "exclusive", "v$x" + doesn't delete the last character in the line. (Eric Long) +Solution: Don't reset the inclusive flag. (Helmut Stiegler) +Files: src/normal.c + +Patch 6.0.198 +Problem: When 'virtualedit' is set and 'showbreak' is not empty, moving the + cursor over the line break doesn't work properly. (Eric Long) +Solution: Make getviscol() and getviscol2() use getvvcol() to obtain the + virtual cursor position. Adjust coladvance() and oneleft() to + skip over the 'showbreak' characters. +Files: src/edit.c, src/misc2.c + +Patch 6.0.199 +Problem: Multi-byte: could use iconv() after calling iconv_end(). + (Yasuhiro Matsumoto) +Solution: Stop converting input and output stream after calling iconv_end(). +Files: src/mbyte.c + +Patch 6.0.200 +Problem: A script that starts with "#!perl" isn't recognized as a Perl + filetype. +Solution: Ignore a missing path in a script header. Also, speed up + recognizing scripts by simplifying the patterns used. +Files: runtime/scripts.vim + +Patch 6.0.201 +Problem: When scrollbinding and doing a long jump, switching windows jumps + to another position in the file. Scrolling a few lines at a time + is OK. (Johannes Zellner) +Solution: When setting w_topline reset the flag that indicates w_botline is + valid. +Files: src/diff.c + +Patch 6.0.202 +Problem: The "icon=" argument for the menu command to define a toolbar icon + with a file didn't work for GTK. (Christian J. Robinson) + For Motif and Athena a full path was required. +Solution: Search the icon file using the specified path. Expand environment + variables in the file name. +Files: src/gui_gtk.c, src/gui_x11.c + +Patch 6.0.203 +Problem: Can change 'fileformat' even though 'modifiable' is off. + (Servatius Brandt) +Solution: Correct check for kind of set command. +Files: src/option.c + +Patch 6.0.204 +Problem: ":unlet" doesn't work for variables with curly braces. (Thomas + Scott Urban) +Solution: Handle variable names with curly braces properly. (Vince Negri) +Files: src/eval.c + +Patch 6.0.205 (extra) +Problem: "gvim -f" still forks when using the batch script to start Vim. +Solution: Add an argument to "start" to use a foreground session (Michael + Geddes) +Files: src/dosinst.c + +Patch 6.0.206 +Problem: Unix: if expanding a wildcard in a file name results in a + wildcard character and there are more parts in the path with a + wildcard, it is expanded again. + Windows: ":edit \[abc]" could never edit the file "[abc]". +Solution: Don't expand wildcards in already expanded parts. + Don't remove backslashes used to escape the special meaning of a + wildcard; can edit "[abc]" if '[' is removed from 'isfname'. +Files: src/misc1.c, src/os_unix.c + +Patch 6.0.207 (extra) +Problem: Win32: The shortcuts and start menu entries let Vim startup in the + desktop directory, which is not very useful. +Solution: Let shortcuts start Vim in $HOME or $HOMEDIR$HOMEPATH. +Files: src/dosinst.c + +Patch 6.0.208 +Problem: GUI: When using a keymap and the cursor is not blinking, CTRL-^ in + Insert mode doesn't directly change the cursor color. (Alex + Solow) +Solution: Force a redraw of the cursor after CTRL-^. +Files: src/edit.c + +Patch 6.0.209 +Problem: GUI GTK: After selecting a 'guifont' with the font dialog there + are redraw problems for multi-byte characters. +Solution: Separate the font dialog from setting the new font name to avoid + that "*" is used to find wide and bold fonts. + When redrawing extra characters for the bold trick, take care of + UTF-8 characters. +Files: src/gui.c, src/gui_gtk_x11.c, src/option.c, src/proto/gui.pro, + src/proto/gui_gtk_x11.pro + +Patch 6.0.210 +Problem: After patch 6.0.167 it's no longer possible to edit a help file in + another encoding than latin1. +Solution: Let the "++enc=" argument overrule the encoding. +Files: src/fileio.c + +Patch 6.0.211 +Problem: When reading a file fails, the buffer is empty, but it might still + be possible to write it with ":w" later. The original file is + lost then. (Steve Amerige) +Solution: Set the 'readonly' option for the buffer. +Files: src/fileio.c + +Patch 6.0.212 +Problem: GUI GTK: confirm("foo", "") causes a crash. +Solution: Don't make a non-existing button the default. Add a default "OK" + button if none is specified. +Files: src/eval.c, src/gui_gtk.c + +Patch 6.0.213 +Problem: When a file name contains unprintable characters, CTRL-G and other + commands don't work well. +Solution: Turn unprintable into printable characters. (Yasuhiro Matsumoto) +Files: src/buffer.c, src/charset.c + +Patch 6.0.214 +Problem: When there is a buffer without a name, empty entries appear in the + jumplist saved in the viminfo file. +Solution: Don't write jumplist entries without a file name. +Files: src/mark.c + +Patch 6.0.215 +Problem: After using "/" from Visual mode the Paste menu and Toolbar + entries don't work. Pasting with the middle mouse doesn't work + and modeless selection doesn't work. +Solution: Use the command line mode menus and use the mouse like in the + command line. +Files: src/gui.c, src/menu.c, src/ui.c + +Patch 6.0.216 +Problem: After reloading a file, displayed in another window than the + current one, which was changed outside of Vim the part of the file + around the cursor set by autocommands may be displayed, but + jumping back to the original cursor position when entering the + window again. +Solution: Restore the topline of the window. +Files: src/fileio.c + +Patch 6.0.217 +Problem: When getting help from a help file that was used before, an empty + unlisted buffer remains in the buffer list. (Eric Long) +Solution: Wipe out the buffer used to do the tag jump from. +Files: src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro + +Patch 6.0.218 +Problem: With explorer plugin: "vim -o filename dirname" doesn't load the + explorer window until entering the window. +Solution: Call s:EditDir() for each window after starting up. +Files: runtime/plugin/explorer.vim + +Patch 6.0.219 +Problem: ":setlocal" and ":setglobal", without arguments, display terminal + options. (Zdenek Sekera) +Solution: Skip terminal options for these two commands. +Files: src/option.c + +Patch 6.0.220 +Problem: After patch 6.0.218 get a beep on startup. (Muraoka Taro) +Solution: Don't try going to another window when there isn't one. +Files: runtime/plugin/explorer.vim + +Patch 6.0.221 +Problem: When using ":bdel" and all other buffers are unloaded the lowest + numbered buffer is jumped to instead of the most recent one. (Dave + Cecil) +Solution: Prefer an unloaded buffer from the jumplist. +Files: src/buffer.c + +Patch 6.0.222 +Problem: When 'virtualedit' is set and using autoindent, pressing Esc after + starting a new line leaves behind part of the autoindent. (Helmut + Stiegler) +Solution: After deleting the last char in the line adjust the cursor + position in del_bytes(). +Files: src/misc1.c, src/ops.c + +Patch 6.0.223 +Problem: When splitting a window that contains the explorer, hitting CR on + a file name gives error messages. +Solution: Set the window variables after splitting the window. +Files: runtime/plugin/explorer.vim + +Patch 6.0.224 +Problem: When 'sidescroll' and 'sidescrolloff' are set in a narrow window + the text may jump left-right and the cursor is displayed in the + wrong position. (Aric Blumer) +Solution: When there is not enough room, compute the left column for the + window to put the cursor in the middle. +Files: src/move.c + +Patch 6.0.225 +Problem: In Visual mode "gk" gets stuck in a closed fold. (Srinath + Avadhanula) +Solution: Behave differently in a closed fold. +Files: src/normal.c + +Patch 6.0.226 +Problem: When doing ":recover file" get the ATTENTION prompt. + After recovering the same file five times get a read error or a + crash. (Alex Davis) +Solution: Set the recoverymode flag before setting the file name. + Correct the amount of used memory for the size of block zero. +Files: src/ex_docmd.c + +Patch 6.0.227 (extra) +Problem: The RISC OS port has several problems. +Solution: Update the makefile and fix some of the problems. (Andy Wingate) +Files: src/Make_ro.mak, src/os_riscos.c, src/os_riscos.h, + src/proto/os_riscos.pro, src/search.c + +Patch 6.0.228 +Problem: After putting text in Visual mode the '] mark is not at the end of + the put text. + Undo doesn't work properly when putting a word into a Visual + selection that spans more than one line. +Solution: Correct the '] mark for the deleting the Visually selected text. + #ifdef code that depends on FEAT_VISUAL properly. + Also fix that "d" crossing line boundary puts '[ just before + deleted text. + Fix undo by saving all deleted lines at once. +Files: src/ex_docmd.c, src/globals.h, src/normal.c, src/ops.c, + src/structs.h, src/vim.h + +Patch 6.0.229 +Problem: Multi-byte: With 'm' in 'formatoptions', formatting doesn't break + at a multi-byte char followed by an ASCII char, and the other way + around. (Muraoka Taro) + When joining lines a space is inserted between multi-byte + characters, which is not always wanted. +Solution: Check for multi-byte character before and after the breakpoint. + Don't insert a space before or after a multi-byte character when + joining lines and the 'M' flag is in 'formatoptions'. Don't + insert a space between multi-byte characters when the 'B' flag is + in 'formatoptions'. +Files: src/edit.c, src/ops.c, src/option.h + +Patch 6.0.230 +Problem: The ":" used as a motion after an operator is exclusive, but + sometimes it should be inclusive. +Solution: Make the "v" in between an operator and motion toggle + inclusive/exclusive. (Servatius Brandt) +Files: runtime/doc/motion.txt, src/normal.c + +Patch 6.0.231 +Problem: "gd" and "gD" don't work when the variable matches in a comment + just above the match to be found. (Servatius Brandt) +Solution: Continue searching in the first column below the comment. +Files: src/normal.c + +Patch 6.0.232 +Problem: "vim --version" prints on stderr while "vim --help" prints on + stdout. +Solution: Make "vim --version" use stdout. +Files: runtime/doc/starting.txt, src/globals.h, src/main.c, src/message.c + +Patch 6.0.233 +Problem: "\1\{,8}" in a regexp is not allowed, but it should work, because + there is an upper limit. (Jim Battle) +Solution: Allow using "\{min,max}" after an atom that can be empty if there + is an upper limit. +Files: src/regexp.c + +Patch 6.0.234 +Problem: It's not easy to set the cursor position without modifying marks. +Solution: Add the cursor() function. (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.0.235 +Problem: When writing a file and renaming the original file to make the + backup, permissions could change when setting the owner. +Solution: Only set the owner when it's needed and set the permissions again + afterwards. + When 'backupcopy' is "auto" check that the owner and permissions + of a newly created file can be set properly. +Files: src/fileio.c + +Patch 6.0.236 +Problem: ":edit" without argument should move cursor to line 1 in Vi + compatible mode. +Solution: Add 'g' flag to 'cpoptions'. +Files: runtime/doc/options.txt, src/ex_docmd.c, src/option.h + +Patch 6.0.237 +Problem: In a C file, using the filetype plugin, re-indenting a comment + with two spaces after the middle "*" doesn't align properly. +Solution: Don't use a middle entry from a start/middle/end to line up with + the start of the comment when the start part doesn't match with + the actual comment start. +Files: src/misc1.c + +Patch 6.0.238 +Problem: Using a ":substitute" command with a substitute() call in the + substitution expression causes errors. (Srinath Avadhanula) +Solution: Save and restore pointers when doing substitution recursively. +Files: src/regexp.c + +Patch 6.0.239 +Problem: Using "A" to append after a Visually selected block which is after + the end of the line, spaces are inserted in the wrong line and + other unexpected effects. (Michael Naumann) +Solution: Don't advance the cursor to the next line. +Files: src/ops.c + +Patch 6.0.240 +Problem: Win32: building with Python 2.2 doesn't work. +Solution: Add support for Python 2.2 with dynamic linking. (Paul Moore) +Files: src/if_python.c + +Patch 6.0.241 +Problem: Win32: Expanding the old value of an option that is a path that + starts with a backslash, an extra backslash is inserted. +Solution: Only insert backslashes where needed. + Also handle multi-byte characters properly when removing + backslashes. +Files: src/option.c + +Patch 6.0.242 +Problem: GUI: On a system with an Exceed X server sometimes get a "Bad + Window" error. (Tommi Maekitalo) +Solution: When forking, use a pipe to wait in the parent for the child to + have done the setsid() call. +Files: src/gui.c + +Patch 6.0.243 +Problem: Unix: "vim --version" outputs a NL before the last line instead of + after it. (Charles Campbell) +Solution: Send the NL to the same output stream as the text. +Files: src/message.c, src/os_unix.c, src/proto/message.pro + +Patch 6.0.244 +Problem: Multi-byte: Problems with (illegal) UTF-8 characters in menu and + file name (e.g., icon text, status line). +Solution: Correctly handle unprintable characters. Catch illegal UTF-8 + characters and replace them with <xx>. Truncating the status line + wasn't done correctly at a multi-byte character. (Yasuhiro + Matsumoto) + Added correct_cmdspos() and transchar_byte(). +Files: src/buffer.c, src/charset.c, src/ex_getln.c, src/gui.c, + src/message.c, src/screen.c, src/vim.h + +Patch 6.0.245 +Problem: After using a color scheme, setting the 'background' option might + not work. (Peter Horst) +Solution: Disable the color scheme if it switches 'background' back to the + wrong value. +Files: src/option.c + +Patch 6.0.246 +Problem: ":echomsg" didn't use the highlighting set by ":echohl". (Gary + Holloway) +Solution: Use the specified attributes for the message. (Yegappan + Lakshmanan) +Files: src/eval.c + +Patch 6.0.247 +Problem: GTK GUI: Can't use gvim in a kpart widget. +Solution: Add the "--echo-wid" argument to let Vim echo the window ID on + stdout. (Philippe Fremy) +Files: runtime/doc/starting.txt, src/globals.h, src/gui_gtk_x11.c, + src/main.c + +Patch 6.0.248 +Problem: When using compressed help files and 'encoding' isn't "latin1", + Vim converts the help file before decompressing. (David Reviejo) +Solution: Don't convert a help file when 'binary' is set. +Files: src/fileio.c + +Patch 6.0.249 +Problem: "vim -t edit -c 'sta ex_help'" doesn't move cursor to edit(). +Solution: Don't set the cursor on the first line for "-c" arguments when + there also is a "-t" argument. +Files: src/main.c + +Patch 6.0.250 (extra) +Problem: Macintosh: Various problems when compiling. +Solution: Various fixes, mostly #ifdefs. (Dany St. Amant) +Files: src/gui_mac.c, src/main.c, src/misc2.c, src/os_mac.h, + src/os_mac.pbproj/project.pbxproj, src/os_unix.c + +Patch 6.0.251 (extra) +Problem: Macintosh: menu shortcuts are not very clear. +Solution: Show the shortcut with the Mac clover symbol. (raindog) +Files: src/gui_mac.c + +Patch 6.0.252 +Problem: When a user function was defined with "abort", an error that is + not inside if/endif or while/endwhile doesn't abort the function. + (Servatius Brandt) +Solution: Don't reset did_emsg when the function is to be aborted. +Files: src/ex_docmd.c + +Patch 6.0.253 +Problem: When 'insertmode' is set, after "<C-O>:edit file" the next <C-O> + doesn't work. (Benji Fisher) <C-L> has the same problem. +Solution: Reset need_start_insertmode once in edit(). +Files: src/edit.c + +Patch 6.0.254 (extra) +Problem: Borland C++ 5.5: Checking for stack overflow doesn't work + correctly. Matters when using a complicated regexp. +Solution: Remove -N- from Make_bc5.mak. (Yasuhiro Matsumoto) +Files: src/Make_bc5.mak + +Patch 6.0.255 (extra) (depends on patch 6.0.116 and 6.0.121) +Problem: Win32: ACL support doesn't work well on Samba drives. +Solution: Add a check for working ACL support. (Mike Williams) +Files: src/os_win32.c + +Patch 6.0.256 (extra) +Problem: Win32: ":highlight Comment guifg=asdf" does not give an error + message. (Randall W. Morris) Also for other systems. +Solution: Add gui_get_color() to give one error message for all systems. +Files: src/gui.c, src/gui_amiga.c, src/gui_athena.c, src/gui_motif.c, + src/gui_riscos.c, src/gui_x11.c, src/gui_gtk_x11.c, + src/proto/gui.pro, src/syntax.c + +Patch 6.0.257 +Problem: Win32: When 'mousefocus' is set and there is a BufRead + autocommand, after the dialog for permissions changed outside of + Vim: 'mousefocus' stops working. (Robert Webb) +Solution: Reset need_mouse_correct after checking timestamps. +Files: src/fileio.c + +Patch 6.0.258 +Problem: When 'scrolloff' is 999 and there are folds, the text can jump up + and down when moving the cursor down near the end of the file. + (Lubomir Host) +Solution: When putting the cursor halfway the window start counting lines at + the end of a fold. +Files: src/move.c + +Patch 6.0.259 +Problem: MS-DOS: after editing the command line the cursor shape may remain + like in Insert mode. (Volker Kiefel) +Solution: Reset the cursor shape after editing the command line. +Files: src/ex_getln.c + +Patch 6.0.260 +Problem: GUI: May crash while starting up when giving an error message for + missing color. (Servatius Brandt) +Solution: Don't call gui_write() when still starting up. Don't give error + message for empty color name. Don't use 't_vb' while the GUI is + still starting up. +Files: src/fileio.c, src/gui.c, src/misc1.c, src/ui.c + +Patch 6.0.261 +Problem: nr2char() and char2nr() don't work with multi-byte characters. +Solution: Use 'encoding' for these functions. (Yasuhiro Matsumoto) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.0.262 (extra) +Problem: Win32: IME doesn't work properly. OnImeComposition() isn't used + at all. +Solution: Adjust various things for IME. +Files: src/globals.h, src/gui_w32.c, src/mbyte.c, src/proto/ui.pro, + src/structs.h, src/ui.c + +Patch 6.0.263 +Problem: GTK: When a dialog is closed by the window manager, Vim hangs. + (Christian J. Robinson) +Solution: Use GTK_WIDGET_DRAWABLE() instead of GTK_WIDGET_VISIBLE(). +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 6.0.264 +Problem: The amount of virtual memory is used to initialize 'maxmemtot', + which may be much more than the amount of physical memory, + resulting in a lot of swapping. +Solution: Get the amount of physical memory with sysctl(), sysconf() or + sysinfo() when possible. +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/os_unix.c, src/os_unix.h + +Patch 6.0.265 +Problem: Win32: Using backspace while 'fkmap' is set causes a crash. + (Jamshid Oasjmoha) +Solution: Don't try mapping special keys. +Files: src/farsi.c + +Patch 6.0.266 +Problem: The rename() function deletes the file if the old and the new name + are the same. (Volker Kiefel) +Solution: Don't do anything if the names are equal. +Files: src/fileio.c + +Patch 6.0.267 +Problem: UTF-8: Although 'isprint' says a character is printable, + utf_char2cells() still considers it unprintable. +Solution: Use vim_isprintc() for characters upto 0x100. (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.0.268 (extra) (depends on patch 6.0.255) +Problem: Win32: ACL check crashes when using forward slash in file name. +Solution: Improve the check for the path in the file name. +Files: src/os_win32.c + +Patch 6.0.269 +Problem: Unprintable characters in a file name may cause problems when + using the 'statusline' option or when 'buftype' is "nofile". +Solution: call trans_characters() for the resulting statusline. (Yasuhiro + Matsumoto) +Files: src/buffer.c, src/screen.c, src/charset.c + +Patch 6.0.270 (depends on patch 6.0.267) +Problem: A tab causes UTF-8 text to be displayed in the wrong position. + (Ron Aaron) +Solution: Correct utf_char2cells() again. +Files: src/mbyte.c + +Patch 6.1a.001 (extra) +Problem: 32bit DOS: copying text to the clipboard may cause a crash. + (Jonathan D Johnston) +Solution: Don't copy one byte too much in SetClipboardData(). +Files: src/os_msdos.c + +Patch 6.1a.002 +Problem: GTK: On some configurations, when closing a dialog from the window + manager, Vim hangs. +Solution: Catch the "destroy" signal. (Aric Blumer) +Files: src/gui_gtk.c + +Patch 6.1a.003 +Problem: Multi-byte: With UTF-8 double-wide char and 'virtualedit' set: + yanking in Visual mode doesn't include the last byte. (Eric Long) +Solution: Don't add a space for a double-wide character. +Files: src/ops.c + +Patch 6.1a.004 (extra) +Problem: MINGW: undefined type. (Ron Aaron) +Solution: Make GetCompositionString_inUCS2() static. +Files: src/gui_w32.c, src/gui_w48.c, src/proto/gui_w32.pro + +Patch 6.1a.005 (extra) +Problem: Win32: ":hardcopy" doesn't work after ":hardcopy!". (Jonathan + Johnston) +Solution: Don't keep the driver context when using ":hardcopy!". (Vince + Negri) +Files: src/os_mswin.c + +Patch 6.1a.006 +Problem: multi-byte: after setting 'encoding' the window title might be + wrong. +Solution: Force resetting the title. (Yasuhiro Matsumoto) +Files: src/option.c + +Patch 6.1a.007 +Problem: Filetype detection for "*.inc" doesn't work. +Solution: Use a ":let" command. (David Schweikert) +Files: runtime/filetype.vim + +Patch 6.1a.008 (extra) +Problem: Win32: ACL detection for network shares doesn't work. +Solution: Include the trailing (back)slash in the root path. (Mike Williams) +Files: src/os_win32.c + +Patch 6.1a.009 +Problem: When using "\@<=" or "\@<!" in a pattern, a "\1" may refer to a () + part that follows, but it generates an error message. +Solution: Allow a forward reference when there is a following "\@<=" or + "\@<!". +Files: runtime/doc/pattern.txt, src/regexp.c + +Patch 6.1a.010 +Problem: When using ":help" and opening a new window, the alternate file + isn't set. +Solution: Set the alternate file to the previously edited file. +Files: src/ex_cmds.c + +Patch 6.1a.011 +Problem: GTK: ":set co=77", change width with the mouse, ":set co=77" + doesn't resize the window. (Darren Hiebert) +Solution: Set the form size after handling a resize event. +Files: src/gui_gtk_x11.c + +Patch 6.1a.012 +Problem: GTK: The file browser always returns a full path. (Lohner) +Solution: Shorten the file name if possible. +Files: src/gui_gtk.c + +Patch 6.1a.013 +Problem: When using "=~word" in 'cinkeys' or 'indentkeys', the case of the + last character of the word isn't ignored. (Raul Segura Acevedo) +Solution: Ignore case when checking the last typed character. +Files: src/edit.c + +Patch 6.1a.014 +Problem: After patch 6.1a.006 can't compile without the title feature. +Solution: Add an #ifdef. +Files: src/option.c + +Patch 6.1a.015 +Problem: MS-Windows: When expanding a file name that contains a '[' or '{' + an extra backslash is inserted. (Raul Segura Acevedo) +Solution: Avoid adding the backslash. +Files: src/ex_getln.c + +Patch 6.1a.016 +Problem: Completion after ":language" doesn't include "time". (Raul Segura + Acevedo) +Solution: Add the alternative to the completions. +Files: src/ex_cmds2.c + +Patch 6.1a.017 +Problem: Clicking the mouse in the top row of a window where the first line + doesn't fit moves the cursor to the wrong column. +Solution: Add the skipcol also for the top row of a window. +Files: src/ui.c + +Patch 6.1a.018 +Problem: When 'scrolloff' is one and the window height is one, "gj" can put + the cursor above the window. (Raul Segura Acevedo) +Solution: Don't let skipcol become bigger than the cursor column. +Files: src/move.c + +Patch 6.1a.019 +Problem: When using a composing character on top of an ASCII character, the + "l" command clears the composing character. Only when 'ruler' and + 'showcmd' are off. (Raphael Finkel) +Solution: Don't move the cursor by displaying characters when there are + composing characters. +Files: src/screen.c + +Patch 6.1a.020 +Problem: GTK: after patch 6.1a.011 resizing with the mouse doesn't always + work well for small sizes. (Adrien Beau) +Solution: Use another way to avoid the problem with ":set co=77". +Files: src/gui_gtk_x11.c + +Patch 6.1a.021 +Problem: Several Syntax menu entries are wrong or confusing. +Solution: Rephrase and correct the menu entries. (Adrien Beau) +Files: runtime/makemenu.vim, runtime/menu.vim + +Patch 6.1a.022 +Problem: A tags file might be used twice on case insensitive systems. + (Rick Swanton) +Solution: Don't use the same file name twice in the default for the 'tags' + option. Ignore case when comparing names of already visited + files. +Files: src/misc2.c, src/option.c + +Patch 6.1a.023 +Problem: When starting the GUI get "C" characters echoed in the terminal. +Solution: Don't try sending a clear-screen command while the GUI is starting + up. +Files: src/screen.c + +Patch 6.1a.024 +Problem: In other editors CTRL-F is often used for a find dialog. +Solution: In evim use CTRL-F for the find dialog. +Files: runtime/evim.vim + +Patch 6.1a.025 +Problem: The choices for the fileformat dialog can't be translated. +Solution: Add g:menutrans_fileformat_choices. (Adrien Beau) +Files: runtime/menu.vim + +Patch 6.1a.026 +Problem: Indenting Java files is wrong with "throws", "extends" and + "implements" clauses. +Solution: Update the Java indent script. +Files: runtime/indent/java.vim + +Patch 6.1a.027 +Problem: A few Syntax menu entries missing or incorrect. +Solution: Add and correct the menu entries. (Adrien Beau) + Shorten a few menus to avoid they become too long. +Files: runtime/makemenu.vim, runtime/menu.vim + +Patch 6.1a.028 +Problem: XIM: problems with feedback and some input methods. +Solution: Use iconv for calculating the cells. Remove the queue for + key_press_event only when text was changed. (Yasuhiro Matsumoto) +Files: src/globals.h, src/mbyte.c, src/screen.c + +Patch 6.1a.029 +Problem: After patch 6.1a.028 can't compile GTK version with XIM but + without multi-byte chars. +Solution: Add an #ifdef. (Aschwin Marsman) +Files: src/mbyte.c + +Patch 6.1a.030 +Problem: With double-byte encodings toupper() and tolower() may have wrong + results. +Solution: Skip double-byte characters. (Eric Long) +Files: src/eval.c + +Patch 6.1a.031 +Problem: Accessing the 'balloondelay' variable may cause a crash. +Solution: Make the variable for 'balloondelay' a long. (Olaf Seibert) +Files: src/option.h + +Patch 6.1a.032 (extra) +Problem: Some menu files used a wrong encoding name for "scriptencoding". +Solution: Move the translations to a separate file, which is sourced after + setting "scriptencoding". + Also add Czech menu translations in ASCII and update the other + encodings. +Files: runtime/lang/menu_cs_cz.iso_8859-1.vim, + runtime/lang/menu_cs_cz.iso_8859-2.vim, + runtime/lang/menu_czech_czech_republic.1250.vim, + runtime/lang/menu_czech_czech_republic.1252.vim, + runtime/lang/menu_czech_czech_republic.ascii.vim, + runtime/lang/menu_de_de.iso_8859-1.vim, + runtime/lang/menu_de_de.latin1.vim, + runtime/lang/menu_fr_fr.iso_8859-1.vim, + runtime/lang/menu_fr_fr.latin1.vim, + runtime/lang/menu_french_france.1252.vim, + runtime/lang/menu_german_germany.1252.vim, + runtime/lang/menu_ja_jp.euc-jp.vim, + runtime/lang/menu_ja_jp.utf-8.vim, + runtime/lang/menu_japanese_japan.932.vim + +Patch 6.1a.033 +Problem: XIM: doesn't reset input context. +Solution: call xim_reset() with im_set_active(FALSE). (Takuhiro Nishioka) +Files: src/mbyte.c + +Patch 6.1a.034 (extra) +Problem: Win32: The ACL checks for a readonly file still don't work well. +Solution: Remove the ACL checks, go back to how it worked in Vim 6.0. +Files: src/os_win32.c + +Patch 6.1a.035 +Problem: multi-byte: When using ":sh" in the GUI, typed and displayed + multi-byte characters are not handled correctly. +Solution: Deal with multi-byte characters to and from the shell. (Yasuhiro + Matsumoto) Also handle UTF-8 composing characters. +Files: src/os_unix.c + +Patch 6.1a.036 +Problem: GTK: the save-yourself event was not handled. +Solution: Catch the save-yourself event and preserve swap files. (Neil Bird) +Files: src/gui_gtk_x11.c + +Patch 6.1a.037 +Problem: The MS-Windows key mapping doesn't include CTRL-S for saving. + (Vlad Sandrini) +Solution: Map CTRL-S to ":update". +Files: runtime/mswin.vim + +Patch 6.1a.038 +Problem: Solaris: Including both sys/sysctl.h and sys/sysinfo.h doesn't + work. (Antonio Colombo) +Solution: Don't include sys/sysinfo.h when not calling sysinfo(). +Files: src/os_unix.c + +Patch 6.1a.039 +Problem: Not all visual basic files are recognized. +Solution: Add checks to catch *.ctl files. (Raul Segura Acevedo) +Files: runtime/filetype.vim + +Patch 6.1a.040 +Problem: A *.pl file is recognized as Perl, but it could be a prolog file. +Solution: Check the first non-empty line. (Kontra Gergely) +Files: runtime/filetype.vim + +Patch 6.1a.041 +Problem: When pressing the left mouse button in the command line and them + moving the mouse upwards, nearly all the text is selected. +Solution: Don't try extending a modeless selection when there isn't one. +Files: src/ui.c + +Patch 6.1a.042 +Problem: When merging files, ":diffput" and ":diffget" are used a lot, but + they require a lot of typing. +Solution: Add "dp" for ":diffput" and "do" for ":diffget". +Files: runtime/doc/diff.txt, src/diff.c, src/normal.c, src/proto/diff.pro + + +Patch 6.1b.001 (extra) +Problem: Checking for wildcards in a path does not handle multi-byte + characters with a trail byte which is a wildcard. +Solution: Handle multi-byte characters correctly. (Muraoka Taro) +Files: src/os_amiga.c, src/os_mac.c, src/os_msdos.c, src/os_mswin.c, + src/os_unix.c + +Patch 6.1b.002 +Problem: A regexp that ends in "\{" is not flagged as an error. May cause + a stack overflow when 'incsearch' is set. (Gerhard Hochholzer) +Solution: Handle a missing "}" as an error. +Files: src/regexp.c + +Patch 6.1b.003 (extra) +Problem: The RISC OS GUI doesn't compile. +Solution: Include changes since Vim 5.7. (Andy Wingate) +Files: src/Make_ro.mak, src/gui_riscos.c, src/os_riscos.c, + src/os_riscos.h, src/proto/gui_riscos.pro + +Patch 6.1b.004 +Problem: col("'>") returns a negative number for linewise selection. (Neil + Bird) +Solution: Don't add one to MAXCOL. +Files: src/eval.c + +Patch 6.1b.005 +Problem: Using a search pattern that causes an out-of-stack error while + 'hlsearch' is set keeps giving the hit-Enter prompt. + A search pattern that takes a long time delays typing when + 'incsearch' is set. +Solution: Stop 'hlsearch' highlighting when the regexp causes an error. + Stop searching for 'incsearch' when a character is typed. +Files: src/globals.h, src/message.c, src/screen.c, src/search.c, + src/vim.h + +Patch 6.1b.006 +Problem: When entering a composing character on the command line with + CTRL-V, the text isn't redrawn correctly. +Solution: Redraw the text under and after the cursor. +Files: src/ex_getln.c + +Patch 6.1b.007 +Problem: When the cursor is in the white space between two sentences, "dis" + deletes the first character of the following sentence, "das" + deletes a space after the sentence. +Solution: Backup the cursor one character in these situations. +Files: src/search.c + +Patch 6.1b.008 +Problem: *.xsl files are not recognized as xslt but xml. + Monk files are not recognized. +Solution: Delete the duplicate line for *.xsl. (Johannes Zellner) + Recognize monk files. +Files: runtime/filetype.vim + +Patch 6.1b.009 +Problem: Can't always compile small features and then adding eval feature, + "sandbox" is undefined. (Axel Kielhorn) +Solution: Always define "sandbox" when the eval feature is used. +Files: src/globals.h + +Patch 6.1b.010 (extra) +Problem: When compiling gvimext.cpp with MSVC 4.2 get a number of warnings. +Solution: Change "true" to "TRUE". (Walter Briscoe) +Files: GvimExt/gvimext.cpp + +Patch 6.1b.011 +Problem: When using a very long string for confirm(), can't quit the + displaying at the more prompt. (Hari Krishna Dara) +Solution: Jump to the end of the message to show the choices. +Files: src/message.c + +Patch 6.1b.012 +Problem: Multi-byte: When 'showbreak' is set and a double-wide character + doesn't fit at the right window edge the cursor gets stuck there. + Using cursor-left gets stuck when 'virtualedit' is set. (Eric + Long) +Solution: Fix the way the extra ">" character is counted when 'showbreak' is + set. Don't correct cursor for virtual editing on a double-wide + character. +Files: src/charset.c, src/edit.c + +Patch 6.1b.013 +Problem: A user command that partly matches with a buffer-local user + command and matches full with a global user command unnecessarily + gives an 'ambiguous command' error. +Solution: Find the full global match even after a partly local match. +Files: src/ex_docmd.c + +Patch 6.1b.014 +Problem: EBCDIC: switching mouse events off causes garbage on screen. + Positioning the cursor in the GUI causes garbage. +Solution: Insert an ESC in the terminal code. (Ralf Schandl) + Use "\b" instead of "\010" for KS_LE. +Files: src/os_unix.c, src/term.c + +Patch 6.1b.015 +Problem: Vimtutor has a typo. Get a warning for "tempfile" if it + doesn't exist. +Solution: Move a quote to the end of a line. (Max Ischenko) + Use "mktemp" first, more systems have it. +Files: src/vimtutor + +Patch 6.1b.016 +Problem: GTK: loading a fontset that works partly, Vim might hang or crash. +Solution: Avoid that char_width becomes zero. (Yasuhiro Matsumoto) +Files: src/gui_gtk_x11.c + +Patch 6.1b.017 +Problem: GUI: When using ":shell" and there is a beep, nothing happens. +Solution: Call vim_beep() to produce the beep from the shell. (Yasuhiro + Matsumoto) +Files: src/message.c + +Patch 6.1b.018 (depends on 6.1b.006) +Problem: When entering the encryption key, special keys may still reveal + the typed characters. +Solution: Make sure stars are used or nothing is shown in all cases. +Files: src/digraph.c, src/getchar.c, src/ex_getln.c + +Patch 6.1b.019 (depends on 6.1b.005) +Problem: A search pattern that takes a long time slows down typing when + 'incsearch' is set. +Solution: Pass SEARCH_PEEK to dosearch(). +Files: src/ex_getln.c + +Patch 6.1b.020 +Problem: When using the matchit plugin, "%" finds a match on the "end" of a + ":syntax region" command in Vim scripts. +Solution: Skip over ":syntax region" commands by setting b:match_skip. +Files: runtime/ftplugin/vim.vim + +Patch 6.1b.021 +Problem: when 'mousefocus' is set, CTRL-W CTRL-] sometimes doesn't warp the + pointer to the new window. (Robert Webb) +Solution: Don't reset need_mouse_correct when checking the timestamp of a + file. +Files: src/fileio.c + +Patch 6.1b.022 +Problem: With lots of folds "j" does not obey 'scrolloff' properly. + (Srinath Avadhanula) +Solution: Go to end of the fold before counting context lines. +Files: src/move.c + +Patch 6.1b.023 +Problem: On MS-Windows system() may cause checking timestamps, because Vim + loses and gains input focus, while this doesn't happen on Unix. +Solution: Don't check timestamps while system() is busy. +Files: src/ex_cmds2.c, src/fileio.c, src/globals.h, src/misc1.c + +Patch 6.1b.024 (extra) +Problem: Gettext 0.11 complains that "sjis" is not a standard name. +Solution: Use "cp932" instead. +Files: src/po/sjiscorr.c + +Patch 6.1b.025 (extra) +Problem: Win32: When closing gvim while it is minimized and has a changed + file, the file-changed dialog pops up in a corner of the screen. +Solution: Put the dialog in the middle of the screen. +Files: src/gui_w48.c + +Patch 6.1b.026 +Problem: When 'diffopt' contains 'iwhite' but not 'icase': differences in + case are not highlighted properly. (Gerhard Hochholzer) +Solution: Don't ignore case when ignoring white space differences. +Files: src/diff.c + +Patch 6.1b.027 +Problem: "vim --remote +" may cause a crash. +Solution: Check for missing file name argument. (Martin Kahlert) +Files: src/main.c + +Patch 6.1b.028 (extra) +Problem: Win16: Can't compile after patch 6.1b.025. +Solution: Add code specifically for Win16. (Vince Negri) +Files: src/gui_w48.c + +Patch 6.1b.029 +Problem: Win32: When a directory on an NTFS partition is read/execute (no + delete,modify,write) and the file has modify rights, trying to + write the file deletes it. Making the file read/write/execute + (not delete) solves it. (Mark Canup) +Solution: Use the Unix code to check for a writable directory. If not, then + make a backup copy and overwrite the file. +Files: src/fileio.c + +Patch 6.1b.030 (extra) +Problem: Mac: small mistake in the build script and prototypes. +Solution: Fix the build script and add the prototypes. (Axel Kielhorn) +Files: src/os_mac.build, src/gui_mac.c + +Patch 6.1b.031 (extra) +Problem: Win32 GUI: ":set guifont=*" doesn't set 'guifont' to the resulting + font name. (Vlad Sandrini) +Solution: Put the code back in gui_mch_init_font() to form the font name out + of the logfont. +Files: src/gui_w48.c + +Patch 6.1b.032 +Problem: Athena: Setting a color scheme before the GUI has started causes a + crash. (Todd Blumer) +Solution: Don't try using color names that haven't been set yet. +Files: src/gui_athena.c + +Patch 6.1b.033 +Problem: When using a count after a ":s" command may get ml_get errors. + (Dietmar Lang) +Solution: Check that the resulting range does not go past the end of the + buffer. +Files: src/ex_cmds.c + +Patch 6.1b.034 +Problem: After sourcing mswin.vim, when using <C-S-Right> after + auto-indenting and then <Del>, get warning for allocating + ridiculous amount of memory. (Dave Delgreco) +Solution: Adjust the start of the Visual area when deleting the auto-indent. +Files: src/edit.c + +Patch 6.1b.035 +Problem: When using evim, dropping a file on Vim and then double clicking + on a word, it is changed to "i". (Merlin Hansen) +Solution: Reset need_start_insertmode after editing the file. +Files: src/ex_docmd.c + + +============================================================================== +VERSION 6.2 *version-6.2* + +This section is about improvements made between version 6.1 and 6.2. + +This is mainly a bug-fix release. There are also a few new features. + +Main new features: +- Support for GTK 2. (Daniel Elstner) +- Support for editing Arabic text. (Nadim Shaikli & Isam Bayazidi) +- ":try" command and exception handling. (Servatius Brandt) +- Support for the neXtaw GUI toolkit (mostly like Athena). (Alexey Froloff) +- Cscope support for Win32. (Khorev Sergey) +- Support for PostScript printing in various 8-bit encodings. (Mike Williams) + + +Changed *changed-6.2* +------- + +Removed the scheme indent file, the internal Lisp indenting works well now. + +Moved the GvimEXt, OleVim and VisVim directories into the "src" directory. +This is more consistent with how xxd is handled. + +The VisVim.dll file is installed in the top directory, next to gvimext.dll, +instead of in a subdirectory "VisVim". Fixes that NSIS was uninstalling it +from the wrong directory. + +Removed the art indent file, it didn't do anything. + +submatch() returned line breaks with CR instead of LF. + +Changed the Win32 Makefiles to become more uniform and compile gvimext.dll. +(Dan Sharp) + +'cindent': Align a "//" comment with a "//" comment in a previous line. +(Helmut Stiegler) + +Previously only for xterm-like terminals parent widgets were followed to find +the title and icon label. Now do this for all terminal emulators. + +Made it possible to recognize backslashes for "%" matching. The 'M' flag in +'cpoptions' disables it. (Haakon Riiser) + +Removed the Make_tcc.mak makefile for Turbo C. It didn't work and we probably +can't make it work (the compiler runs out of memory). + +Even though the documentation refers to keywords, "[ CTRL-D" was using +'isident' to find matches. Changed it to use 'iskeyword'. Also applies to +other commands that search for defined words in included files such as +":dsearch", "[D" and "[d". + +Made 'keywordprg' global-local. (Christian Robinson) + +Enabled the Netbeans interface by default. Reversed the configure argument +from "--enable-netbeans" to "--disable-netbeans". + + +Added *added-6.2* +----- + +New options: + 'arabic' + 'arabicshape' + 'ambiwidth' + 'autochdir' + 'casemap' + 'copyindent' + 'cscopequickfix' + 'preserveindent' + 'printencoding' + 'rightleftcmd' + 'termbidi' + 'toolbariconsize' + 'winfixheight' + +New keymaps: + Serbian (Aleksandar Veselinovic) + Chinese Pinyin (Fredrik Roubert) + Esperanto (Antoine J. Mechelynck) + +New syntax files: + Valgrind (Roger Luethi) + Smarty template (Manfred Stienstra) + MySQL (Kenneth Pronovici) + RockLinux package description (Piotr Esden-Tempski) + MMIX (Dirk Huesken) + gkrellmrc (David Necas) + Tilde (Tobias Rundtrom) + Logtalk (Paulo Moura) + PLP (Juerd Waalboer) + fvwm2m4 (David Necas) + IPfilter (Hendrik Scholz) + fstab (Radu Dineiu) + Quake (Nikolai Weibull) + Occam (Mario Schweigler) + lpc (Shizhu Pan) + Exim conf (David Necas) + EDIF (Artem Zankovich) + .cvsrc (Nikolai Weibull) + .fetchmailrc (Nikolai Weibull) + GNU gpg (Nikolai Weibull) + Grub (Nikolai Weibull) + Modconf (Nikolai Weibull) + RCS (Dmitry Vasiliev) + Art (Dorai Sitaram) + Renderman Interface Bytestream (Andrew J Bromage) + Mailcap (Doug Kearns) + Subversion commit file (Dmitry Vasiliev) + Microsoft IDL (Vadim Zeitlin) + WildPackets EtherPeek Decoder (Christopher Shinn) + Spyce (Rimon Barr) + Resolv.conf (Radu Dineiu) + A65 (Clemens Kirchgatterer) + sshconfig and sshdconfig (David Necas) + Cheetah and HTMLCheetah (Max Ischenko) + Packet filter (Camiel Dobbelaar) + +New indent files: + Eiffel (David Clarke) + Tilde (Tobias Rundtrom) + Occam (Mario Schweigler) + Art (Dorai Sitaram) + PHP (Miles Lott) + Dylan (Brent Fulgham) + +New tutor translations: + Slovak (Lubos Celko) + Greek (Christos Kontas) + German (Joachim Hofmann) + Norwegian (Øyvind Holm) + +New filetype plugins: + Occam (Mario Schweigler) + Art (Dorai Sitaram) + ant.vim, aspvbs.vim, config.vim, csc.vim, csh.vim, dtd.vim, html.vim, + jsp.vim, pascal.vim, php.vim, sgml.vim, sh.vim, svg.vim, tcsh.vim, + xhtml.vim, xml.vim, xsd.vim. (Dan Sharp) + +New compiler plugins: + Checkstyle (Doug Kearns) + g77 (Ralf Wildenhues) + fortran (Johann-Guenter Simon) + Xmllint (Doug Kearns) + Ruby (Tim Hammerquist) + Modelsim vcom (Paul Baleme) + +New menu translations: + Brazilian (José de Paula) + British (Mike Williams) + Korean in UTF-8. (Nam SungHyun) + Norwegian (Øyvind Holm) + Serbian (Aleksandar Jelenak) + +New message translation for Norwegian. (Øyvind Holm) + +New color scheme: + desert (Hans Fugal) + +Arabic specific features. 'arabicshape', 'termbidi', 'arabic' and +'rightleftcmd' options. (Nadim Shaikli & Isam Bayazidi) + +Support for neXtaw GUI toolkit, mostly like Athena. (Alexey Froloff) + +Win32: cscope support. (Khorev Sergey) + +VMS: various improvements to documentation and makefiles. (Zoltan Arpadffy) + +Added "x" key to the explorer plugin: execute the default action. (Yasuhiro +Matsumoto) + +Compile gvimext.dll with MingW. (Rene de Zwart) + +Add the "tohtml.vim" plugin. It defines the ":TOhtml" user command, an easy +way to convert text to HTML. + +Added ":try" / ":catch" / ":finally" / ":endtry" commands. Add E999 numbers +to all error messages, so that they can be caught by the number. +(Servatius Brandt) +Moved part of ex_docmd.c to the new ex_eval.c source file. + +Include support for GTK+ 2.2.x (Daniel Elstner) +Adds the "~" register: drag & drop text. +Adds the 'toolbariconsize' option. +Add -Dalloca when running lint to work around a problem with alloca() +prototype. + +When selecting an item in the error window to jump to, take some effort to +find an ordinary window to show the file in (not a preview window). + +Support for PostScript printing of various 8-bit encodings. (Mike Williams) + +inputdialog() accepts a third argument that is used when the dialog is +cancelled. Makes it possible to see a difference between cancelling and +entering nothing. + +Included Aap recipes. Can be used to update Vim to the latest version, +building and installing. + +"/" option in 'cinoptions': extra indent for comment lines. (Helmut Stiegler) + +Vim variable "v:register" and functions setreg(), getreg() and getregtype(). +(Michael Geddes) + +"v" flag in 'cpoptions': Leave text on screen with backspace in Insert mode. +(Phillip Vandry) + +Dosinst.exe also finds gvimext.dll in the "GvimExt" directory. Useful when +running install in the "src" directory for testing. + +Support tag files that were sorted with case ignored. (Flemming Madsen) + +When completing a wildcard in a leading path element, as in "../*/Makefile", +only the last part ("Makefile") was listed. Support custom defined +command line completion. (Flemming Madsen) + +Also recognize "rxvt" as an xterm-like terminal. (Tomas Styblo) + +Proper X11 session management. Fixes that the WM_SAVE_YOURSELF event was not +used by popular desktops. (Neil Bird) +Not used for Gnome 2, it has its own handling. + +Support BOR, DEBUG and SPAWNO arguments for the Borland 3 Makefile. (Walter +Briscoe) + +Support page breaks for printing. Adds the "formfeed" field in +'printoptions'. (Mike Williams) + +Mac OSX: multi-language support: iconv and gettext. (Muraoka Taro, Axel +Kielhorn) + +"\Z" flag in patterns: ignore differences in combining characters. (Ron Aaron) + +Added 'preserveindent' and 'copyindent' options. They use existing white +space characters instead of using Tabs as much as possible. (Chris Leishman) + +Updated Unicode tables to Unicode 4.0. (Raphael Finkel) + +Support for the mouse wheel in rxvt. (AIDA Shinra) + +Win32: Added ":8" file modifier to get short filename. Test50 tests the ":8" +expansion on Win32 systems. (Michael Geddes) + +'cscopequickfix' option: Open quickfix window for Cscope commands. Also +cleanup the code for giving messages. (Khorev Sergey) + +GUI: Support more than 222 columns for mouse positions. + +":stopinsert" command: Don't return to Insert mode. + +"interrupt" command for debug mode. Useful for simulating CTRL-C. (Servatius +Brandt) + + +Fixed *fixed-6.2* +----- + +Removed a few unused #defines from config.h.in, os_os2_cfg.h and os_vms_conf.h. + +The Vim icons in PNG format didn't have a transparent background. (Greg +Roelofs) + +Fixed a large number of spelling mistakes in the docs. (Adri Verhoef) + +The #defines for prototype generation were causing trouble. Changed them to +typedefs. + +A new version of libintl.h uses __asm__, which confuses cproto. Define a +dummy __asm__ macro. + +When 'virtualedit' is set can't move to halfway an unprintable character. +Cripples CTRL-V selection. (Taro Muraoka) +Allow moving to halfway an unprintable character. Don't let getvvcol() change +the pos->coladd argument. + +When a tab wraps to the next line, 'listchars' is set and 'foldcolumn' is +non-zero, only one character of the foldcolumn is highlighted. (Muraoka Taro) + +When using ":catch" without an argument Vim crashes. (Yasuhiro Matsumoto) +When no argument given use the ".*" pattern. + +Win32: When gvim.exe is started from a shortcut with the window style property +set to maximize Vim doesn't start with a maximized window. (Yasuhiro +Matsumoto) Open the window with the default size and don't call ShowWindow() +again when it's already visible. (Helmut Stiegler) + +gui_gtk.c used MAX, but it's undefined to avoid a conflict with system header +files. + +Win32: When closing a window from a mapping some pixels remain on the +statusline. (Yasuhiro Matsumoto) + +A column number in an errorformat that goes beyond the end of the line may +cause a crash. + +":throw 'test'" crashes Vim. (Yasuhiro Matsumoto) + +The file selector's scrollbar colors are not set after doing a ":hi Scrollbar +guifg=color". And the file selector's colors are not changed by the +colorscheme command. (David Harrison) + +Motif: When compiling with FEAT_FOOTER defined, the text area gets a few +pixels extra space on the right. Remove the special case in +gui_get_base_width(). (David Harrison) + +Using CTRL-R CTRL-P in Insert mode puts the '] mark in the wrong position. +(Helmut Stiegler) + +When 'formatoptions' includes "awct" a non-comment wasn't auto-formatted. + +Using a "--cmd" argument more than 10 times caused a crash. + +DEC style mouse support didn't work if the page field is not empty. +(Uribarri) + +"vim -l one two" did only set 'lisp' in the first file. Vi does it for every +file. + +":set tw<" didn't work. Was checking for '^' instead of '<'. + +In ":hardcopy > %.ps" the "%" was not expanded to the current filename. + +Made ":redraw" also update the Visual area. + +When a not implemented command, such as ":perl", has wrong arguments the less +important error was reported, giving the user the idea the command could work. + +On non-Unix systems autocommands for writing did not attempt a match with the +short file name, causing a pattern like "a/b" to fail. + +VMS: e_screenmode was not defined and a few other fixes for VMS. (Zoltan +Arpadffy) + +redraw_msg() depended on FEAT_ARABIC instead of FEAT_RIGHTLEFT. (Walter +Briscoe) + +Various changes for the PC Makefiles. (Walter Briscoe) + +Use _truename() instead of our own code to expand a file name into a full +path. (Walter Briscoe) + +Error in filetype check for /etc/modutils. (Lubomir Host) + +Cscope interface: allocated a buffer too small. + +Win16: remove a trailing backslash from a path when obtaining the permission +flags. (Vince Negri) + +When searching for tags with case ignored Vim could hang. + +When searching directories with a stopdir could get a crash. Did not +re-allocate enough memory. (Vince Negri) + +A user command may cause a crash. Don't use the command index when it's +negative. (Vince Negri) + +putenv() didn't work for MingW and Cygwin. (Dan Sharp) + +Many functions were common between os_msdos.c and os_win16.c. Use os_msdos.c +for compiling the Win16 version and remove the functions from os_win16.c. +(Vince Negri) + +For terminals that behave like an xterm but didn't have a name that is +recognized, the window title would not always be set. + +When syntax highlighting is off ":hardcopy" could still attempt printing +colors. + +Crash when using ":catch" without an argument. (Servatius Brandt) + +Win32: ":n #" doubled the backslashes. + +Fixed Arabic shaping for the command line. (Nadim Shaikli) + +Avoid splitting up a string displayed on the command line into individual +characters, it breaks Arabic shaping. + +Updated Cygwin and MingW makefiles to use more dependencies. (Dan Sharp) + +2html.vim didn't work with 'nomagic' set. + +When a local argument list is used and doing ":only" Vim could crash later. +(Muraoka Taro) + +When using "%P" in 'statusline' and the fillchar is "-", a percentage of 3% +could result in "-3%". Also avoid changing a space inside a filename to the +fill character. + +MSwin: Handling of backslashes and double quotes for command line arguments +was not like what other applications do. (Walter Briscoe) + +Test32 sometimes didn't work, because test11.out was written as TEST11.OUT. + +Avoid pointer conversions warnings for Borland C 5.5 in dosinst.c and +uninstal.c. + +More improvements for Make_bc3.mak file. (Walter Briscoe) + +When ":syn sync linebreaks=1" is used, editing the first line caused a redraw +of the whole screen. + +Making translated messages didn't work, if_perl.xs wasn't found. (Vlad +Sandrini) + +Motif and Athena: moving Vim to the foreground didn't uniconify it. Use +XMapRaised() instead of XRaiseWindow(). (Srikanth Sankaran) + +When using ":ptag" in a window where 'scrollbind' is set the preview window +would also have 'scrollbind' set. Also reset 'foldcolumn' and 'diff'. + +Various commands that split a window took over 'scrollbind', which is hardly +ever desired. Esp. for "q:" and ":copen". Mostly reset 'scrollbind' when +splitting a window. + +When 'shellslash' is set in the vimrc file the first entry of ":scriptnames" +would still have backslashes. Entries in the quickfix list could also have +wrong (back)slashes. + +Win32: printer dialog texts were not translated. (Yasuhiro Matsumoto) + +When using a multi-byte character with a K_SPECIAL byte or a special key code +with "--remote-send" the received byte sequence was mangled. Put it in the +typeahead buffer instead of the input buffer. + +Win32: The cursor position was incorrect after changing cursor shape. +(Yasuhiro Matsumoto). + +Win32: When 'encoding' is not the current codepage the title could not be set +to non-ascii characters. + +"vim -d scp://machine/file1 scp://machine/file2" did not work, there was only +one window. Fixed the netrw plugin not to wipe out the buffer if it is +displayed in other windows. + +"/$" caused "e" in last column of screen to disappear, a highlighted blank was +displayed instead. + +":s/ *\ze\n//e" removed the line break and introduced arbitrary text. Was +using the line count including what matched after the "\ze". + +Using the "c" flag with ":s" changed the behavior when a line break is +replaced and "\@<=" is used. Without "c" a following match was not found. + +":%s/\vA@<=\nB@=//gce" got stuck on "A\nB" when entering "n". + +VMS: add HAVE_STRFTIME in the config file. (Zoltan Arpadffy) + +When a delete prompts if a delete should continue when yanking is not +possible, restore msg_silent afterwards. + +":sign" did not complain about a missing argument. + +When adding or deleting a sign 'hlsearch' highlighting could disappear. +Use the generic functions for updating signs. + +On MS-Windows NT, 2K and XP don't use command.com but cmd.exe for testing. +Makes the tests work on more systems. + +In the DOS tests don't create "/tmp" to avoid an error. + +Mac classic: Problems with reading files with CR vs CR/LF. Rely on the +library version of fgets() to work correctly for Metrowerks 2.2. (Axel +Kielhorn) + +When typing a password a "*" was shown for each byte instead of for each +character. Added multi-byte handling to displaying the stars. (Yasuhiro +Matsumoto) + +When using Perl 5.6 accessing $curbuf doesn't work. Add an #ifdef to use +different code for 5.6 and 5.8. (Dan Sharp) + +MingW and Cygwin: Don't strip the debug executable. (Dan Sharp) + +An assignment to a variable with curlies that includes "==" doesn't work. +Skip over the curlies before searching for an "=". (Vince Negri) + +When cancelling the selection of alternate matching tags the tag stack index +could be advanced too far, resulting in an error message when using CTRL-T. + + +Patch 6.1.001 +Problem: When formatting UTF-8 text it might be wrapped at a space that is + followed by a composing character. (Raphael Finkel) + Also correct a display error for removing a composing char on top + of a space. +Solution: Check for a composing character on a space. +Files: src/edit.c, src/misc1.c, src/screen.c + +Patch 6.1.002 (extra) +Problem: Win32: after a ":popup" command the mouse pointer stays hidden. +Solution: Unhide the mouse pointer before showing the menu. +Files: src/gui_w48.c + +Patch 6.1.003 +Problem: When 'laststatus' is zero and there is a vertical split, the + vertical separator is drawn in the command line. (Srikant + Sankaran) +Solution: Don't draw the vertical separator where there is no statusline. +Files: src/screen.c + +Patch 6.1.004 +Problem: Unicode 3.2 changes width and composing of a few characters. + (Markus Kuhn) +Solution: Adjust the Unicode functions for the character width and composing + characters. +Files: src/mbyte.c + +Patch 6.1.005 +Problem: When using more than 50 items in 'statusline' Vim might crash. + (Steve Hall) +Solution: Increment itemcnt in check_stl_option(). (Flemming Madsen) +Files: src/option.c + +Patch 6.1.006 +Problem: When using "P" in Visual mode to put linewise selected text, the + wrong text is deleted. (Jakub Turski) +Solution: Put the text before the Visual area and correct the text to be + deleted for the inserted lines. + Also fix that "p" of linewise text in Visual block mode doesn't + work correctly. +Files: src/normal.c, src/ops.c + +Patch 6.1.007 +Problem: Using ":filetype plugin off" when filetype plugins were never + enabled causes an error message. (Yiu Wing) +Solution: Use ":silent!" to avoid the error message. +Files: runtime/ftplugof.vim + +Patch 6.1.008 +Problem: The "%" command doesn't ignore \" inside a string, it's seen as + the end of the string. (Ken Clark) +Solution: Skip a double quote preceded by an odd number of backslashes. +Files: src/search.c + +Patch 6.1.009 +Problem: Vim crashes when using a huge number for the maxwid value in a + statusline. (Robert M. Nowotniak) +Solution: Check for an overflow that makes maxwid negative. +Files: src/buffer.c + +Patch 6.1.010 +Problem: Searching backwards for a question mark with "?\?" doesn't work. + (Alan Isaac) Same problem in ":s?\??" and ":g?\??". +Solution: Change the "\?" in a pattern to "?" when using "?" as delimiter. +Files: src/ex_cmds.c, src/ex_docmd.c, src/proto/regexp.pro, src/regexp.c, + src/search.c, src/syntax.c, src/tag.c + +Patch 6.1.011 +Problem: XIM: doesn't work correctly when 'number' is set. Also, a focus + problem when selecting candidates. +Solution: Fix the XIM problems. (Yasuhiro Matsumoto) +Files: src/mbyte.c, src/screen.c + +Patch 6.1.012 +Problem: A system() call might fail if fread() does CR-LF to LF + translation. +Solution: Open the output file in binary mode. (Pavol Huhas) +Files: src/misc1.c + +Patch 6.1.013 +Problem: Win32: The default for 'printexpr' doesn't work when there are + special characters in 'printdevice'. +Solution: Add double quotes around the device name. (Mike Williams) +Files: runtime/doc/option.txt, src/option.c + +Patch 6.1.014 +Problem: An operator like "r" used in Visual block mode doesn't use + 'virtualedit' when it's set to "block". +Solution: Check for 'virtualedit' being active in Visual block mode when the + operator was started. +Files: src/ex_docmd.c, src/globals.h, src/misc2.c, src/normal.c, + src/ops.c, src/undo.c + +Patch 6.1.015 +Problem: After patch 6.1.014 can't compile with tiny features. (Christian + J. Robinson) +Solution: Add the missing define of virtual_op. +Files: src/vim.h + +Patch 6.1.016 (extra) +Problem: Win32: Outputting Hebrew or Arabic text might have a problem with + reversing. +Solution: Replace the RevOut() function with ETO_IGNORELANGUAGE. (Ron Aaron) +Files: src/gui_w32.c + +Patch 6.1.017 +Problem: Cygwin: After patch 6.1.012 Still doesn't do binary file I/O. + (Pavol Juhas) +Solution: Define BINARY_FILE_IO for Cygwin. +Files: src/os_unix.h + +Patch 6.1.018 +Problem: Error message when using cterm highlighting. (Leonardo Di Lella) +Solution: Remove a backslash before a question mark. +Files: runtime/syntax/cterm.vim + +Patch 6.1.019 (extra) +Problem: Win32: File name is messed up when editing just a drive name. + (Walter Briscoe) +Solution: Append a NUL after the drive name. (Vince Negri) +Files: src/os_win32.c + +Patch 6.1.020 +Problem: col("'>") returns a huge number after using Visual line mode. +Solution: Return the length of the line instead. +Files: src/eval.c + +Patch 6.1.021 (depends on patch 6.1.009) +Problem: Vim crashes when using a huge number for the minwid value in a + statusline. (Robert M. Nowotniak) +Solution: Check for an overflow that makes minwid negative. +Files: src/buffer.c + +Patch 6.1.022 +Problem: Grabbing the status line above the command-line window works like + the bottom status line was grabbed. (Jim Battle) +Solution: Make it possible to grab the status line above the command-line + window, so that it can be resized. +Files: src/ui.c + +Patch 6.1.023 (extra) +Problem: VMS: running tests doesn't work properly. +Solution: Adjust the makefile. (Zoltan Arpadffy) +Files: src/testdir/Make_vms.mms + +Patch 6.1.024 +Problem: When header files use a new syntax for declaring functions, Vim + can't figure out missing prototypes properly. +Solution: Accept braces around a function name. (M. Warner Losh) +Files: src/osdef.sh + +Patch 6.1.025 +Problem: Five messages for "vim --help" don't start with a capital. (Vlad + Sandrini) +Solution: Make the messages consistent. +Files: src/main.c + +Patch 6.1.026 +Problem: *.patch files are not recognized as diff files. In a script a + "VAR=val" argument after "env" isn't ignored. PHP scripts are not + recognized. +Solution: Add *.patch for diff filetypes. Ignore "VAR=val". Recognize PHP + scripts. (Roman Neuhauser) +Files: runtime/filetype.vim, runtime/scripts.vim + +Patch 6.1.027 +Problem: When 'foldcolumn' is non-zero, a special character that wraps to + the next line disturbs the foldcolumn highlighting. (Yasuhiro + Matsumoto) +Solution: Only use the special highlighting when drawing text characters. +Files: src/screen.c + +Patch 6.1.028 +Problem: Client-server: When a --remote-expr fails, Vim still exits with + status zero. +Solution: Exit Vim with a non-zero status to indicate the --remote-expr + failed. (Thomas Scott Urban) +Files: src/main.c + +Patch 6.1.029 +Problem: When 'encoding' is an 8-bit encoding other than "latin1", editing + a utf-8 or other Unicode file uses the wrong conversion. (Jan + Fedak) +Solution: Don't use Unicode to latin1 conversion for 8-bit encodings other + than "latin1". +Files: src/fileio.c + +Patch 6.1.030 +Problem: When CTRL-N is mapped in Insert mode, it is also mapped after + CTRL-X CTRL-N, while it is not mapped after CTRL-X CTRL-F. + (Kontra Gergely) +Solution: Don't map CTRL-N after CTRL-X CTRL-N. Same for CTRL-P. +Files: src/getchar.c + +Patch 6.1.031 +Problem: Cygwin: Xxd could read a file in text mode instead of binary mode. +Solution: Use "rb" or "rt" when needed. (Pavol Juhas) +Files: src/xxd/xxd.c + +Patch 6.1.032 +Problem: Can't specify a quickfix file without jumping to the first error. +Solution: Add the ":cgetfile" command. (Yegappan Lakshmanan) +Files: runtime/doc/index.txt, runtime/doc/quickfix.txt, src/ex_cmds.h, + src/quickfix.c + +Patch 6.1.033 +Problem: GUI: When the selection is lost and the Visual highlighting is + changed to underlining, the cursor is left in a different + position. (Christian Michon) +Solution: Update the cursor position after redrawing the selection. +Files: src/ui.c + +Patch 6.1.034 +Problem: A CVS diff file isn't recognized as diff filetype. +Solution: Skip lines starting with "? " before checking for an "Index:" line. +Files: runtime/scripts.vim + +Patch 6.1.035 (extra, depends on 6.1.016) +Problem: Win32: Outputting Hebrew or Arabic text might have a problem with + reversing on MS-Windows 95/98/ME. +Solution: Restore the RevOut() function and use it in specific situations + only. (Ron Aaron) +Files: src/gui_w32.c + +Patch 6.1.036 +Problem: This command may cause a crash: ":v/./,//-j". (Ralf Arens) +Solution: Compute the right length of the regexp when it's empty. +Files: src/search.c + +Patch 6.1.037 +Problem: When 'lazyredraw' is set, pressing "q" at the hit-enter prompt + causes an incomplete redraw and the cursor isn't positioned. + (Lubomir Host) +Solution: Overrule 'lazyredraw' when do_redraw is set. +Files: src/main.c, src/screen.c + +Patch 6.1.038 +Problem: Multi-byte: When a ":s" command contains a multi-byte character + where the trail byte is '~' the text is messed up. +Solution: Properly skip multi-byte characters in regtilde() (Muraoka Taro) +Files: src/regexp.c + +Patch 6.1.039 +Problem: When folds are defined and the file is changed outside of Vim, + reloading the file doesn't update the folds. (Anders + Schack-Nielsen) +Solution: Recompute the folds after reloading the file. +Files: src/fileio.c + +Patch 6.1.040 +Problem: When changing directory for expanding a file name fails there is + no error message. +Solution: Give an error message for this situation. Don't change directory + if we can't return to the original directory. +Files: src/diff.c, src/ex_docmd.c, src/globals.h, src/misc1.c, + src/os_unix.c + +Patch 6.1.041 +Problem: ":mkvimrc" doesn't handle a mapping that has a leading space in + the rhs. (Davyd Ondrejko) +Solution: Insert a CTRL-V before the leading space. Also display leading + and trailing white space in <> form. +Files: src/getchar.c, src/message.c + +Patch 6.1.042 +Problem: "vim -r" doesn't show all matches when 'wildignore' removes swap + files. (Steve Talley) +Solution: Keep all matching swap file names. +Files: src/memline.c + +Patch 6.1.043 +Problem: After patch 6.1.040 a few warnings are produced. +Solution: Add a type cast to "char *" for mch_chdir(). (Axel Kielhorn) +Files: src/diff.c, src/ex_docmd.c.c, src/misc1.c, src/os_unix.c + +Patch 6.1.044 (extra) +Problem: GUI: When using the find/replace dialog with text that contains a + slash, an invalid substitute command is generated. + On Win32 a find doesn't work when 'insertmode' is set. +Solution: Escape slashes with a backslash. + Make the Win32, Motif and GTK gui use common code for the + find/replace dialog. + Add the "match case" option for Motif and GTK. +Files: src/feature.h, src/proto/gui.pro, src/gui.c, src/gui.h, + src/gui_motif.c, src/gui_gtk.c, src/gui_w48.c + +Patch 6.1.045 +Problem: In Visual mode, with lots of folds and 'scrolloff' set to 999, + moving the cursor down near the end of the file causes the text to + jump up and down. (Lubomir Host) +Solution: Take into account that the cursor may be on the last line of a + closed fold. +Files: src/move.c + +Patch 6.1.046 +Problem: X11 GUI: ":set lsp=2 gcr=n-v-i:hor1-blinkon0" draws a black + rectangle. ":set lsp=2 gcr=n-v-i:hor10-blinkon0" makes the cursor + disappear. (Nam SungHyun) +Solution: Correctly compute the height of the horizontal cursor. +Files: src/gui_gtk_x11.c, src/gui_x11.c + +Patch 6.1.047 +Problem: When skipping commands after an error was encountered, expressions + for ":if", ";elseif" and ":while" are still evaluated. +Solution: Skip the expression after an error. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.048 +Problem: Unicode 3.2 changes were missing a few Hangul Jamo characters. +Solution: Recognize more characters as composing characters. (Jungshik Shin) +Files: src/mbyte.c + +Patch 6.1.049 (extra) +Problem: On a 32 bit display a valid color may cause an error message, + because its pixel value is negative. (Chris Paulson-Ellis) +Solution: Check for -11111 instead of the color being negative. + Don't add one to the pixel value, -1 may be used for white. +Files: src/globals.h, src/gui.c, src/gui.h, src/gui_amiga.c, + src/gui_athena.c, src/gui_beos.cc, src/gui_gtk_x11.c, + src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, + src/gui_riscos.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c, + src/gui_x11.c, src/mbyte.c, src/syntax.c + +Patch 6.1.050 (depends on 6.1.049) +Problem: After patch 6.1.049 the non-GUI version doesn't compile. +Solution: Add an #ifdef FEAT_GUI. (Robert Stanton) +Files: src/syntax.c + +Patch 6.1.051 (depends on 6.1.044) +Problem: Doesn't compile with GUI and small features. +Solution: Adjust the #if for ga_append(). +Files: src/misc2.c + +Patch 6.1.052 +Problem: Unix: The executable() function doesn't work when the "which" + command isn't available. +Solution: Go through $PATH manually. Also makes it work for VMS. +Files: src/os_unix.c + +Patch 6.1.053 +Problem: When 'sessionoptions' contains "globals", or "localoptions" and an + option value contains a line break, the resulting script is wrong. +Solution: Use "\n" and "\r" for a line break. (Srinath Avadhanula) +Files: src/eval.c + +Patch 6.1.054 +Problem: GUI: A mouse click is not recognized at the more prompt, even when + 'mouse' includes 'r'. +Solution: Recognize a mouse click at the more prompt. + Also accept a mouse click in the last line in the GUI. + Add "ml" entry in 'mouseshape'. +Files: src/gui.c, src/message.c, src/misc1.c, src/misc2.c, src/option.c, + src/structs.h + +Patch 6.1.055 +Problem: When editing a compressed file, Vim will inspect the contents to + guess the filetype. +Solution: Don't source scripts.vim for .Z, .gz, .bz2, .zip and .tgz files. +Files: runtime/filetype.vim, runtime/plugin/gzip.vim + +Patch 6.1.056 +Problem: Loading the Syntax menu can take quite a bit of time. +Solution: Add the "skip_syntax_sel_menu" variable. When it's defined the + available syntax files are not in the Syntax menu. +Files: runtime/doc/gui.txt, runtime/menu.vim + +Patch 6.1.057 +Problem: An ESC inside a mapping doesn't work as documented when + 'insertmode' is set, it does go from Visual or Normal mode to + Insert mode. (Benji Fisher) +Solution: Make it work as documented. +Files: src/normal.c + +Patch 6.1.058 +Problem: When there is a closed fold just above the first line in the + window, using CTRL-X CTRL-Y in Insert mode will show only one line + of the fold. (Alexey Marinichev) +Solution: Correct the topline by putting it at the start of the fold. +Files: src/move.c + +Patch 6.1.059 +Problem: ":redir > ~/file" doesn't work. (Stephen Rasku) +Solution: Expand environment variables in the ":redir >" argument. +Files: src/ex_docmd.c + +Patch 6.1.060 +Problem: When 'virtualedit' is set and 'selection' is "exclusive", deleting + a character just before a tab changes the tab into spaces. Undo + doesn't restore the tab. (Helmut Stiegler) +Solution: Don't replace the tab by spaces when it's not needed. Correctly + save the line before it's changed. +Files: src/ops.c + +Patch 6.1.061 +Problem: When 'virtualedit' is set and 'selection' is "exclusive", a Visual + selection that ends just after a tab doesn't include that tab in + the highlighting. (Helmut Stiegler) +Solution: Use a different way to exclude the character under the cursor. +Files: src/screen.c + +Patch 6.1.062 +Problem: The "man" filetype plugin doesn't work properly on Solaris 5. +Solution: Use a different way to detect that "man -s" should be used. (Hugh + Sasse) +Files: runtime/ftplugin/man.vim + +Patch 6.1.063 +Problem: Java indenting doesn't work properly. +Solution: Ignore comments when checking if the indent doesn't increase after + a "}". +Files: runtime/indent/java.vim + +Patch 6.1.064 +Problem: The URLs that the netrw plugin recognized for ftp and rcp did not + conform to the standard method://[user@]host[:port]/path. +Solution: Use ftp://[user@]host[[:#]port]/path, which supports both the new + and the previous style. Also added a bit of dav/cadaver support. + (Charles Campbell) +Files: runtime/plugin/netrw.vim + +Patch 6.1.065 +Problem: VMS: The colorscheme, keymap and compiler menus are not filled in. +Solution: Ignore case when looking for ".vim" files. (Coen Engelbarts) +Files: runtime/menu.vim + +Patch 6.1.066 (extra) +Problem: When calling system() in a plugin reading stdin hangs. +Solution: Don't set the terminal to RAW mode when it wasn't in RAW mode + before the system() call. +Files: src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_unix.c, + src/os_win16.c, src/os_win32.c + +Patch 6.1.067 +Problem: ":set viminfo+=f0" is not working. (Benji Fisher) +Solution: Check the "f" flag instead of "'" in 'viminfo'. +Files: src/mark.c + +Patch 6.1.068 +Problem: When a file is reloaded after it was changed outside of Vim, diff + mode isn't updated. (Michael Naumann) +Solution: Invalidate the diff info so that it's updated when needed. +Files: src/fileio.c + +Patch 6.1.069 +Problem: When 'showmatch' is set and "$" is in 'cpoptions', using + "C}<Esc>" may forget to remove the "$". (Preben Guldberg) +Solution: Restore dollar_vcol after displaying the matching cursor position. +Files: src/search.c + +Patch 6.1.070 (depends on 6.1.060) +Problem: Compiler warning for signed/unsigned mismatch. (Mike Williams) +Solution: Add a typecast to int. +Files: src/ops.c + +Patch 6.1.071 +Problem: When 'selection' is exclusive, g CTRL-G in Visual mode counts one + character too much. (David Necas) +Solution: Subtract one from the end position. +Files: src/ops.c + +Patch 6.1.072 +Problem: When a file name in a tags file starts with http:// or something + else for which there is a BufReadCmd autocommand, the file isn't + opened anyway. +Solution: Check if there is a matching BufReadCmd autocommand and try to + open the file. +Files: src/fileio.c, src/proto/fileio.pro, src/tag.c + +Patch 6.1.073 (extra) +Problem: BC5: Can't easily specify a tiny, small, normal, big or huge + version. +Solution: Allow selecting the version with the FEATURES variable. (Ajit + Thakkar) +Files: src/Make_bc5.mak + +Patch 6.1.074 +Problem: When 'cdpath' includes "../..", changing to a directory in which + we currently already are doesn't work. ff_check_visited() adds + the directory both when using it as the root for searching and for + the actual matches. (Stephen Rasku) +Solution: Use a separate list for the already searched directories. +Files: src/misc2.c + +Patch 6.1.075 (depends on 6.1.072) +Problem: Can't compile fileio.c on MS-Windows. +Solution: Add a declaration for the "p" pointer. (Madoka Machitani) +Files: src/fileio.c + +Patch 6.1.076 (extra) +Problem: Macintosh: explorer plugin doesn't work on Mac Classic. + IME doesn't work. Dialog boxes don't work on Mac OS X +Solution: Fix explorer plugin and key modifiers. (Axel Kielhorn) + Fix IME support. (Muraoka Taro) + Disable dialog boxes. (Benji Fisher) +Files: src/edit.c, src/feature.h, src/gui_mac.c, src/os_mac.c + +Patch 6.1.077 +Problem: On a Debian system with ACL linking fails. (Lubomir Host) +Solution: When the "acl" library is used, check if the "attr" library is + present and use it. +Files: src/auto/configure, src/configure.in, src/link.sh + +Patch 6.1.078 +Problem: When using 'foldmethod' "marker" and the end marker appears before + the start marker in the file, no fold is found. (Nazri Ramliy) +Solution: Don't let the fold depth go negative. +Files: src/fold.c + +Patch 6.1.079 +Problem: When using "s" in Visual block mode with 'virtualedit' set, when + the selected block is after the end of some lines the wrong text + is inserted and some lines are skipped. (Servatius Brandt) +Solution: Insert the right text and extend short lines. +Files: src/ops.c + +Patch 6.1.080 +Problem: When using gcc with /usr/local already in the search path, adding + it again causes problems. +Solution: Adjust configure.in to avoid adding /usr/local/include and + /usr/local/lib when using GCC and they are already used. (Johannes + Zellner) +Files: src/auto/configure, src/configure.in + +Patch 6.1.081 +Problem: ":help CTRL-\_CTRL-N" doesn't work. (Christian J. Robinson) +Solution: Double the backslash to avoid the special meaning of "\_". +Files: src/ex_cmds.c + +Patch 6.1.082 +Problem: On MS-Windows the vimrc_example.vim script is sourced and then + mswin.vim. This enables using select mode, but since "p" is + mapped it doesn't replace the selection. +Solution: Remove the mapping of "p" from vimrc_example.vim, it's obsolete. + (Vlad Sandrini) +Files: runtime/vimrc_example.vim + +Patch 6.1.083 +Problem: When $LANG is "sk" or "sk_sk", the Slovak menu file isn't found. + (Martin Lacko) +Solution: Guess the right menu file based on the system. +Files: runtime/lang/menu_sk_sk.vim + +Patch 6.1.084 (depends on 6.1.080) +Problem: "include" and "lib" are mixed up when checking the directories gcc + already searches. +Solution: Swap the variable names. (SunHo Kim) +Files: src/auto/configure, src/configure.in + +Patch 6.1.085 +Problem: When using CTRL-O CTRL-\ CTRL-N from Insert mode, the displayed + mode "(insert)" isn't removed. (Benji Fisher) +Solution: Clear the command line. +Files: src/normal.c + +Patch 6.1.086 (depends on 6.1.049) +Problem: The guifg color for CursorIM doesn't take effect. +Solution: Use the foreground color when it's defined. (Muraoka Taro) +Files: src/gui.c + +Patch 6.1.087 +Problem: A thesaurus with Japanese characters has problems with characters + in different word classes. +Solution: Only separate words with single-byte non-word characters. + (Muraoka Taro) +Files: src/edit.c + +Patch 6.1.088 (extra) +Problem: Win32: no debugging info is generated. Tags file excludes .cpp + files. +Solution: Add "/map" to compiler flags. Add "*.cpp" to ctags command. + (Muraoka Taro) +Files: src/Make_mvc.mak + +Patch 6.1.089 +Problem: On BSDI systems there is no ss_sp field in stack_t. (Robert Jan) +Solution: Use ss_base instead. +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/os_unix.c + +Patch 6.1.090 +Problem: CTRL-F gets stuck when 'scrolloff' is non-zero and there is a mix + of long wrapping lines and a non-wrapping line. +Solution: Check that CTRL-F scrolls at least one line. +Files: src/move.c + +Patch 6.1.091 +Problem: GTK: Can't change preeditstate without setting 'imactivatekey'. +Solution: Add some code to change preeditstate for OnTheSpot. (Yasuhiro + Matsumoto) +Files: src/mbyte.c + +Patch 6.1.092 +Problem: ":mapclear <buffer>" doesn't work. (Srikanth Adayapalam) +Solution: Allow an argument for ":mapclear". +Files: src/ex_cmds.h + +Patch 6.1.093 (extra) +Problem: Mac and MS-Windows GUI: when scrolling while ":s" is working the + results can be messed up, because the cursor is moved. +Solution: Disallow direct scrolling when not waiting for a character. +Files: src/gui_mac.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.1.094 +Problem: Cygwin: Passing a file name that has backslashes isn't handled + very well. +Solution: Convert file name arguments to Posix. (Chris Metcalf) +Files: src/main.c + +Patch 6.1.095 +Problem: When using signs can free an item on the stack. + Overruling sign colors doesn't work. (Srikanth Sankaran) +Solution: Don't free the item on the stack. Use NULL instead of "none" for + the value of the color. +Files: src/gui_x11.c + +Patch 6.1.096 +Problem: When erasing the right halve of a double-byte character, it may + cause further characters to be erased. (Yasuhiro Matsumoto) +Solution: Make sure only one character is erased. +Files: src/screen.c + +Patch 6.1.097 (depends on 6.1.090) +Problem: When 'scrolloff' is set to a huge value, CTRL-F at the end of the + file scrolls one line. (Lubomir Host) +Solution: Don't scroll when CTRL-F detects the end-of-file. +Files: src/move.c + +Patch 6.1.098 +Problem: MS-Windows: When the xxd program is under "c:\program files" the + "Convert to Hex" menu doesn't work. (Brian Mathis) +Solution: Put the path to xxd in double quotes. +Files: runtime/menu.vim + +Patch 6.1.099 +Problem: Memory corrupted when closing a fold with more than 99999 lines. +Solution: Allocate more space for the fold text. (Walter Briscoe) +Files: src/eval.c + +Patch 6.1.100 (extra, depends on 6.1.088) +Problem: Win32: VC5 and earlier don't support the /mapinfo option. +Solution: Add "/mapinfo" only when "MAP=lines" is specified. (Muraoka Taro) +Files: src/Make_mvc.mak + +Patch 6.1.101 +Problem: After using ":options" the tabstop of a new window is 15. Entry + in ":options" window for 'autowriteall' is wrong. (Antoine J + Mechelynck) Can't insert a space in an option value. +Solution: Use ":setlocal" instead of ":set". Change "aw" to "awa". + Don't map space in Insert mode. +Files: runtime/optwin.vim + +Patch 6.1.102 +Problem: Unprintable and multi-byte characters in a statusline item are not + truncated correctly. (Yasuhiro Matsumoto) +Solution: Count the width of characters instead of the number of bytes. +Files: src/buffer.c + +Patch 6.1.103 +Problem: A function returning from a while loop, with 'verbose' set to 12 + or higher, doesn't mention the return value. A function with the + 'abort' attribute may return -1 while the verbose message says + something else. +Solution: Move the verbose message about returning from a function to + call_func(). (Servatius Brandt) +Files: src/eval.c + +Patch 6.1.104 +Problem: GCC 3.1 appears to have an optimizer problem that makes test 3 + crash. +Solution: For GCC 3.1 add -fno-strength-reduce to avoid the optimizer bug. + Filter out extra info from "gcc --version". +Files: src/auto/configure, src/configure.in + +Patch 6.1.105 +Problem: Win32: The default for 'shellpipe' doesn't redirect stderr. (Dion + Nicolaas) +Solution: Redirect stderr, depending on the shell (like for 'shellredir'). +Files: src/option.c + +Patch 6.1.106 +Problem: The maze program crashes. +Solution: Change "11" to "27" and it works. (Greg Roelofs) +Files: runtime/macros/maze/mazeansi.c + +Patch 6.1.107 +Problem: When 'list' is set the current line in the error window may be + displayed wrong. (Muraoka Taro) +Solution: Don't continue the line after the $ has been displayed and the + rightmost column is reached. +Files: src/screen.c + +Patch 6.1.108 +Problem: When interrupting a filter command such as "!!sleep 20" the file + becomes read-only. (Mark Brader) +Solution: Only set the read-only flag when opening a buffer is interrupted. + When the shell command was interrupted, read the output that was + produced so far. +Files: src/ex_cmds.c, src/fileio.c + +Patch 6.1.109 +Problem: When 'eadirection' is "hor", using CTRL-W = doesn't equalize the + window heights. (Roman Neuhauser) +Solution: Ignore 'eadirection' for CTRL-W = +Files: src/window.c + +Patch 6.1.110 +Problem: When using ":badd file" when "file" is already present but not + listed, it stays unlisted. (David Frey) +Solution: Set 'buflisted'. +Files: src/buffer.c + +Patch 6.1.111 +Problem: It's not possible to detect using the Unix sources on Win32 or Mac. +Solution: Add has("macunix") and has("win32unix"). +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.1.112 +Problem: When using ":argdo", ":bufdo" or ":windo", CTRL-O doesn't go to + the cursor position from before this command but every position + where the argument was executed. +Solution: Only remember the cursor position from before the ":argdo", + ":bufdo" and ":windo". +Files: src/ex_cmds2.c, src/mark.c + +Patch 6.1.113 +Problem: ":bufdo bwipe" only wipes out half the buffers. (Roman Neuhauser) +Solution: Decide what buffer to go to next before executing the command. +Files: src/ex_cmds2.c + +Patch 6.1.114 +Problem: ":python import vim", ":python vim.current.buffer[0:0] = []" gives + a lalloc(0) error. (Chris Southern) +Solution: Don't allocate an array when it's size is zero. +Files: src/if_python.c + +Patch 6.1.115 +Problem: "das" on the white space at the end of a paragraph does not delete + the "." the sentence ends with. +Solution: Don't exclude the last character when it is not white space. +Files: src/search.c + +Patch 6.1.116 +Problem: When 'endofline' is changed while 'binary' is set a file should be + considered modified. (Olaf Buddenhagen) +Solution: Remember the 'eol' value when editing started and consider the + file changed when the current value is different and 'binary' is + set. Also fix that the window title isn't updated when 'ff' or + 'bin' changes. +Files: src/option.c, src/structs.h + +Patch 6.1.117 +Problem: Small problem with editing a file over ftp: and with Cygwin. +Solution: Remove a dot from a ":normal" command. Use "cygdrive" where + appropriate. (Charles Campbell) +Files: runtime/plugin/netrw.vim + +Patch 6.1.118 +Problem: When a file in diff mode is reloaded because it changed outside + of Vim, other windows in diff mode are not always updated. + (Michael Naumann) +Solution: After reloading a file in diff mode mark all windows in diff mode + for redraw. +Files: src/diff.c + +Patch 6.1.119 (extra) +Problem: With the Sniff interface, using Sniff 4.0.X on HP-UX, there may be + a crash when connecting to Sniff. +Solution: Initialize sniff_rq_sep such that its value can be changed. + (Martin Egloff) +Files: src/if_sniff.c + +Patch 6.1.120 (depends on 6.1.097) +Problem: When 'scrolloff' is non-zero and there are folds, CTRL-F at the + end of the file scrolls part of a closed fold. (Lubomir Host) +Solution: Adjust the first line to the start of a fold. +Files: src/move.c + +Patch 6.1.121 (depends on 6.1.098) +Problem: When starting Select mode from Insert mode, then using the Paste + menu entry, the cursor is left before the last pasted character. + (Mario Schweigler) +Solution: Set the cursor for Insert mode one character to the right. +Files: runtime/menu.vim + +Patch 6.1.122 +Problem: ":file name" creates a new buffer to hold the old buffer name, + which becomes the alternate file. This buffer is unexpectedly + listed. +Solution: Create the buffer for the alternate name unlisted. +Files: src/ex_cmds.c + +Patch 6.1.123 +Problem: A ":match" command with more than one argument doesn't report an + error. +Solution: Check for extra characters. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.124 +Problem: When trying to exit and there is a hidden buffer that had 'eol' + off and 'bin' set exiting isn't possible. (John McGowan) +Solution: Set b_start_eol when clearing the buffer. +Files: src/buffer.c + +Patch 6.1.125 +Problem: Explorer plugin asks for saving a modified buffer even when it's + open in another window as well. +Solution: Count the number of windows using the buffer. +Files: runtime/plugin/explorer.vim + +Patch 6.1.126 +Problem: Adding the choices in the syntax menu is consuming much of the + startup time of the GUI while it's not often used. +Solution: Only add the choices when the user wants to use them. +Files: Makefile, runtime/makemenu.vim, runtime/menu.vim, + runtime/synmenu.vim, src/Makefile + +Patch 6.1.127 +Problem: When using "--remote file" and the server has 'insertmode' set, + commands are inserted instead of being executed. (Niklas Volbers) +Solution: Go to Normal mode again after the ":drop" command. +Files: src/main.c + +Patch 6.1.128 +Problem: The expression "input('very long prompt')" puts the cursor in the + wrong line (column is OK). +Solution: Add the wrapped lines to the indent. (Yasuhiro Matsumoto) +Files: src/ex_getln.c + +Patch 6.1.129 +Problem: On Solaris editing "file/" and then "file" results in using the + same buffer. (Jim Battle) +Solution: Before using stat(), check that there is no illegal trailing + slash. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/macros.h src/misc2.c, src/proto/misc2.pro + +Patch 6.1.130 +Problem: The documentation for some of the 'errorformat' items is unclear. +Solution: Add more examples and explain hard to understand items. (Stefan + Roemer) +Files: runtime/doc/quickfix.txt + +Patch 6.1.131 +Problem: X11 GUI: when expanding a CSI byte in the input stream to K_CSI, + the CSI byte itself isn't copied. +Solution: Copy the CSI byte. +Files: src/gui_x11.c + +Patch 6.1.132 +Problem: Executing a register in Ex mode may cause commands to be skipped. + (John McGowan) +Solution: In Ex mode use an extra check if the register contents was + consumed, to avoid input goes into the typeahead buffer. +Files: src/ex_docmd.c + +Patch 6.1.133 +Problem: When drawing double-wide characters in the statusline, may clear + half of a character. (Yasuhiro Matsumoto) +Solution: Force redraw of the next character by setting the attributes + instead of putting a NUL in ScreenLines[]. Do put a NUL in + ScreenLines[] when overwriting half of a double-wide character. +Files: src/screen.c + +Patch 6.1.134 +Problem: An error for a trailing argument of ":match" should not be given + after ":if 0". (Servatius Brandt) +Solution: Only do the check when executing commands. +Files: src/ex_docmd.c + +Patch 6.1.135 +Problem: Passing a command to the shell that includes a newline always has + a backslash before the newline. +Solution: Remove one backslash before the newline. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.136 +Problem: When $TERM is "linux" the default for 'background' is "dark", even + though the GUI uses a light background. (Hugh Allen) +Solution: Don't mark the option as set when defaulting to "dark" for the + linux console. Also reset 'background' to "light" when the GUI + has a light background. +Files: src/option.c + +Patch 6.1.137 +Problem: Converting to HTML has a clumsy way of dealing with tabs which may + change the highlighting. +Solution: Replace tabs with spaces after converting a line to HTML. (Preben + Guldberg) +Files: runtime/syntax/2html.vim + +Patch 6.1.138 (depends on 6.1.126) +Problem: Adding extra items to the Syntax menu can't be done when the "Show + individual choices" menu is used. +Solution: Use ":runtime!" instead of ":source", so that all synmenu.vim + files in the runtime path are loaded. (Servatius Brandt) + Also fix that a translated menu can't be removed. +Files: runtime/menu.vim + +Patch 6.1.139 +Problem: Cygwin: PATH_MAX is not defined. +Solution: Include limits.h. (Dan Sharp) +Files: src/main.c + +Patch 6.1.140 +Problem: Cygwin: ":args `ls *.c`" does not work if the shell command + produces CR NL line separators. +Solution: Remove the CR characters ourselves. (Pavol Juhas) +Files: src/os_unix.c + +Patch 6.1.141 +Problem: ":wincmd gx" may cause problems when mixed with other commands. + ":wincmd c" doesn't close the window immediately. (Benji Fisher) +Solution: Pass the extra command character directly instead of using the + stuff buffer and call ex_close() directly. +Files: src/ex_docmd.c, src/normal.c, src/proto/normal.pro, + src/proto/window.pro, src/window.c + +Patch 6.1.142 +Problem: Defining paragraphs without a separating blank line isn't + possible. Paragraphs can't be formatted automatically. +Solution: Allow defining paragraphs with lines that end in white space. + Added the 'w' and 'a' flags in 'formatoptions'. +Files: runtime/doc/change.txt, src/edit.c, src/misc1.c, src/normal.c, + src/option.h, src/ops.c, src/proto/edit.pro, src/proto/ops.pro, + src/vim.h + +Patch 6.1.143 (depends on 6.1.142) +Problem: Auto formatting near the end of the file moves the cursor to a + wrong position. In Insert mode some lines are made one char too + narrow. When deleting a line undo might not always work properly. +Solution: Don't always move to the end of the line in the last line. Don't + position the cursor past the end of the line in Insert mode. + After deleting a line save the cursor line for undo. +Files: src/edit.c, src/ops.c, src/normal.c + +Patch 6.1.144 +Problem: Obtaining the size of a line in screen characters can be wrong. + A pointer may wrap around zero. +Solution: In win_linetabsize() check for a MAXCOL length argument. (Jim + Dunleavy) +Files: src/charset.c + +Patch 6.1.145 +Problem: GTK: Drag&drop with more than 3 files may cause a crash. (Mickael + Marchand) +Solution: Rewrite the code that parses the received list of files to be more + robust. +Files: src/charset.c, src/gui_gtk_x11.c + +Patch 6.1.146 +Problem: MS-Windows: When $HOME is constructed from $HOMEDRIVE and + $HOMEPATH, it is not used for storing the _viminfo file. (Normal + Diamond) +Solution: Set $HOME with the value obtained from $HOMEDRIVE and $HOMEPATH. +Files: src/misc1.c + +Patch 6.1.147 (extra) +Problem: MS-Windows: When a dialog has no default button, pressing Enter + ends it anyway and all buttons are selected. +Solution: Don't end a dialog when there is no default button. Don't select + all button when there is no default. (Vince Negri) +Files: src/gui_w32.c + +Patch 6.1.148 (extra) +Problem: MS-Windows: ACL is not properly supported. +Solution: Add an access() replacement that also works for ACL. (Mike + Williams) +Files: runtime/doc/editing.txt, src/os_win32.c + +Patch 6.1.149 (extra) +Problem: MS-Windows: Can't use diff mode from the file explorer. +Solution: Add a "diff with Vim" context menu entry. (Dan Sharp) +Files: GvimExt/gvimext.cpp, GvimExt/gvimext.h + +Patch 6.1.150 +Problem: OS/2, MS-Windows and MS-DOS: When 'shellslash' is set getcwd() + still uses backslash. (Yegappan Lakshmanan) +Solution: Adjust slashes in getcwd(). +Files: src/eval.c + +Patch 6.1.151 (extra) +Problem: Win32: The NTFS substream isn't copied. +Solution: Copy the substream when making a backup copy. (Muraoka Taro) +Files: src/fileio.c, src/os_win32.c, src/proto/os_win32.pro + +Patch 6.1.152 +Problem: When $LANG is iso8859-1 translated menus are not used. +Solution: Change iso8859 to iso_8859. +Files: runtime/menu.vim + +Patch 6.1.153 +Problem: Searching in included files may search recursively when the path + starts with "../". (Sven Berkvens-Matthijsse) +Solution: Compare full file names, use inode/device when possible. +Files: src/search.c + +Patch 6.1.154 (extra) +Problem: DJGPP: "vim -h" leaves the cursor in a wrong position. +Solution: Don't position the cursor using uninitialized variables. (Jim + Dunleavy) +Files: src/os_msdos.c + +Patch 6.1.155 +Problem: Win32: Cursor may sometimes disappear in Insert mode. +Solution: Change "hor10" in 'guicursor' to "hor15". (Walter Briscoe) +Files: src/option.c + +Patch 6.1.156 +Problem: Conversion between DBCS and UCS-2 isn't implemented cleanly. +Solution: Clean up a few things. +Files: src/mbyte.c, src/structs.h + +Patch 6.1.157 +Problem: 'hlsearch' highlights only the second comma in ",,,,," with + "/,\@<=[^,]*". (Preben Guldberg) +Solution: Also check for an empty match to start just after a previous + match. +Files: src/screen.c + +Patch 6.1.158 +Problem: "zs" and "ze" don't work correctly with ":set nowrap siso=1". + (Preben Guldberg) +Solution: Take 'siso' into account when computing the horizontal scroll + position for "zs" and "ze". +Files: src/normal.c + +Patch 6.1.159 +Problem: When expanding an abbreviation that includes a multi-byte + character too many characters are deleted. (Andrey Urazov) +Solution: Delete the abbreviation counting characters instead of bytes. +Files: src/getchar.c + +Patch 6.1.160 +Problem: ":$read file.gz" doesn't work. (Preben Guldberg) +Solution: Don't use the '[ mark after it has become invalid. +Files: runtime/plugin/gzip.vim + +Patch 6.1.161 (depends on 6.1.158) +Problem: Warning for signed/unsigned compare. Can set 'siso' to a negative + value. (Mike Williams) +Solution: Add a typecast. Add a check for 'siso' being negative. +Files: src/normal.c, src/option.c + +Patch 6.1.162 +Problem: Python interface: Didn't initialize threads properly. +Solution: Call PyEval_InitThreads() when starting up. +Files: src/if_python.c + +Patch 6.1.163 +Problem: Win32: Can't compile with Python after 6.1.162. +Solution: Dynamically load PyEval_InitThreads(). (Dan Sharp) +Files: src/if_python.c + +Patch 6.1.164 +Problem: If 'modifiable' is off, converting to xxd fails and 'filetype' is + changed to "xxd" anyway. +Solution: Don't change 'filetype' when conversion failed. +Files: runtime/menu.vim + +Patch 6.1.165 +Problem: Making changes in several lines and then a change in one of these + lines that splits it in two or more lines, undo information was + corrupted. May cause a crash. (Dave Fishburn) +Solution: When skipping to save a line for undo because it was already + saved, move it to become the last saved line, so that when the + command changes the line count other saved lines are not involved. +Files: src/undo.c + +Patch 6.1.166 +Problem: When 'autoindent' is set and mswin.vim has been sourced, pasting + with CTRL-V just after auto-indenting removes the indent. (Shlomi + Fish) +Solution: First insert an "x" and delete it again, so that the auto-indent + remains. +Files: runtime/mswin.vim + +Patch 6.1.167 +Problem: When giving a negative argument to ":retab" strange things start + happening. (Hans Ginzel) +Solution: Check for a negative value. +Files: src/ex_cmds.c + +Patch 6.1.168 +Problem: Pressing CTRL-C at the hit-enter prompt doesn't end the prompt. +Solution: Make CTRL-C stop the hit-enter prompt. +Files: src/message.c + +Patch 6.1.169 +Problem: bufexists() finds a buffer by using the name of a symbolic link to + it, but bufnr() doesn't. (Yegappan Lakshmanan) +Solution: When bufnr() can't find a buffer, try using the same method as + bufexists(). +Files: src/eval.c + +Patch 6.1.170 +Problem: Using ":mksession" uses the default session file name, but "vim + -S" doesn't. (Hans Ginzel) +Solution: Use the default session file name if "-S" is the last command + line argument or another option follows. +Files: runtime/doc/starting.txt, src/main.c + +Patch 6.1.171 +Problem: When opening a line just above a closed fold with "O" and the + comment leader is automatically inserted, the cursor is displayed + in the first column. (Sung-Hyun Nam) +Solution: Update the flag that indicates the cursor is in a closed fold. +Files: src/misc1.c + +Patch 6.1.172 +Problem: Command line completion of ":tag /pat" does not show the same + results as the tags the command actually finds. (Gilles Roy) +Solution: Don't modify the pattern to make it a regexp. +Files: src/ex_getln.c, src/tag.c + +Patch 6.1.173 +Problem: When using remote control to edit a position in a file and this + file is the current buffer and it's modified, the window is split + and the ":drop" command fails. +Solution: Don't split the window, keep editing the same buffer. + Use the ":drop" command in VisVim to avoid the problem there. +Files: src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds2.pro, + VisVim/Commands.cpp + +Patch 6.1.174 +Problem: It is difficult to know in a script whether an option not only + exists but really works. +Solution: Add "exists('+option')". +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.1.175 +Problem: When reading commands from a pipe and a CTRL-C is pressed, Vim + will hang. (Piet Delport) +Solution: Don't keep reading characters to clear typeahead when an interrupt + was detected, stop when a single CTRL-C is read. +Files: src/getchar.c, src/ui.c + +Patch 6.1.176 +Problem: When the stack limit is very big a false out-of-stack error may + be detected. +Solution: Add a check for overflow of the stack limit computation. (Jim + Dunleavy) +Files: src/os_unix.c + +Patch 6.1.177 (depends on 6.1.141) +Problem: ":wincmd" does not allow a following command. (Gary Johnson) +Solution: Check for a following " | cmd". Also give an error for trailing + characters. +Files: src/ex_docmd.c + +Patch 6.1.178 +Problem: When 'expandtab' is set "r<C-V><Tab>" still expands the Tab. + (Bruce deVisser) +Solution: Replace with a literal Tab. +Files: src/normal.c + +Patch 6.1.179 (depends on 6.1.091) +Problem: When using X11R5 XIMPreserveState is undefined. (Albert Chin) +Solution: Include the missing definitions. +Files: src/mbyte.c + +Patch 6.1.180 +Problem: Use of the GUI code for forking is inconsistent. +Solution: Define MAY_FORK and use it for later #ifdefs. (Ben Fowlwer) +Files: src/gui.c + +Patch 6.1.181 +Problem: If the terminal doesn't wrap from the last char in a line to the + next line, the last column is blanked out. (Peter Karp) +Solution: Don't output a space to mark the wrap, but the same character + again. +Files: src/screen.c + +Patch 6.1.182 (depends on 6.1.142) +Problem: It is not possible to auto-format comments only. (Moshe Kaminsky) +Solution: When the 'a' and 'c' flags are in 'formatoptions' only auto-format + comments. +Files: runtime/doc/change.txt, src/edit.c + +Patch 6.1.183 +Problem: When 'fencs' is empty and 'enc' is utf-8, reading a file with + illegal bytes gives "CONVERSION ERROR" even though no conversion + is done. 'readonly' is set, even though writing the file results + in an unmodified file. +Solution: For this specific error use "ILLEGAL BYTE" and don't set + 'readonly'. +Files: src/fileio.c + +Patch 6.1.184 (extra) +Problem: The extra mouse buttons found on some mice don't work. +Solution: Support two extra buttons for MS-Windows. (Michael Geddes) +Files: runtime/doc/term.txt, src/edit.c, src/ex_getln.c, src/gui.c, + src/gui_w32.c, src/gui_w48.c, src/keymap.h, src/message.c, + src/misc1.c, src/misc2.c, src/normal.c, src/vim.h + +Patch 6.1.185 (depends on 6.1.182) +Problem: Can't compile without +comments feature. +Solution: Add #ifdef FEAT_COMMENTS. (Christian J. Robinson) +Files: src/edit.c + +Patch 6.1.186 (depends on 6.1.177) +Problem: ":wincmd" does not allow a following comment. (Aric Blumer) +Solution: Check for a following double quote. +Files: src/ex_docmd.c + +Patch 6.1.187 +Problem: Using ":doarg" with 'hidden' set and the current file is the only + argument and was modified gives an error message. (Preben + Guldberg) +Solution: Don't try re-editing the same file. +Files: src/ex_cmds2.c + +Patch 6.1.188 (depends on 6.1.173) +Problem: Unused variable in the small version. +Solution: Move the declaration for "p" inside #ifdef FEAT_LISTCMDS. +Files: src/ex_cmds2.c + +Patch 6.1.189 +Problem: inputdialog() doesn't work when 'c' is in 'guioptions'. (Aric + Blumer) +Solution: Fall back to the input() function in this situation. +Files: src/eval.c + +Patch 6.1.190 (extra) +Problem: VMS: doesn't build with GTK GUI. Various other problems. +Solution: Fix building for GTK. Improved Perl, Python and TCL support. + Improved VMS documentation. (Zoltan Arpadffy) + Added Vimtutor for VMS (T. R. Wyant) +Files: runtime/doc/os_vms.txt, src/INSTALLvms.txt, src/gui_gtk_f.h, + src/if_tcl.c, src/main.c, src/gui_gtk_vms.h, src/Make_vms.mms, + src/os_vms.opt, src/proto/if_tcl.pro, vimtutor.com, + src/testdir/Make_vms.mms + +Patch 6.1.191 +Problem: When using "vim -s script" and redirecting the output, the delay + for the "Output is not to a terminal" warning slows Vim down too + much. +Solution: Don't delay when reading commands from a script. +Files: src/main.c + +Patch 6.1.192 +Problem: ":diffsplit" doesn't add "hor" to 'scrollopt'. (Gary Johnson) +Solution: Add "hor" to 'scrollopt' each time ":diffsplit" is used. +Files: src/diff.c, src/main.c + +Patch 6.1.193 +Problem: Crash in in_id_list() for an item with a "containedin" list. (Dave + Fishburn) +Solution: Check for a negative syntax id, used for keywords. +Files: src/syntax.c + +Patch 6.1.194 +Problem: When "t_ti" is set but it doesn't cause swapping terminal pages, + "ZZ" may cause the shell prompt to appear on top of the file-write + message. +Solution: Scroll the text up in the Vim page before swapping to the terminal + page. (Michael Schroeder) +Files: src/os_unix.c + +Patch 6.1.195 +Problem: The quickfix and preview windows always keep their height, while + other windows can't fix their height. +Solution: Add the 'winfixheight' option, so that a fixed height can be + specified for any window. Also fix that the wildmenu may resize a + one-line window to a two-line window if 'ls' is zero. +Files: runtime/doc/options.txt, runtime/optwin.vim, src/ex_cmds.c, + src/ex_getln.c, src/globals.h, src/option.c, src/quickfix.c, + src/screen.c, src/structs.h, src/window.c + +Patch 6.1.196 (depends on 6.1.084) +Problem: On Mac OS X 10.2 generating osdef.h fails. +Solution: Add -no-cpp-precomp to avoid using precompiled header files, which + disables printing the search path. (Ben Fowler) +Files: src/auto/configure, src/configure.in + +Patch 6.1.197 +Problem: ":help <C-V><C-\><C-V><C-N>" (resulting in <1c><0e>) gives an + error message. (Servatius Brandt) +Solution: Double the backslash in "CTRL-\". +Files: src/ex_cmds.c + +Patch 6.1.198 (extra) (depends on 6.1.076) +Problem: Mac OS X: Dialogues don't work. +Solution: Fix a crashing problem for some GUI dialogues. Fix a problem when + saving to a new file from the GUI. (Peter Cucka) +Files: src/feature.h, src/gui_mac.c + +Patch 6.1.199 +Problem: 'guifontwide' doesn't work on Win32. +Solution: Output each wide character separately. (Michael Geddes) +Files: src/gui.c + +Patch 6.1.200 +Problem: ":syn sync fromstart" is not skipped after ":if 0". This can make + syntax highlighting very slow. +Solution: Check "eap->skip" appropriately. (Rob West) +Files: src/syntax.c + +Patch 6.1.201 (depends on 6.1.192) +Problem: Warning for illegal pointer combination. (Zoltan Arpadffy) +Solution: Add a typecast. +Files: src/diff.c + +Patch 6.1.202 (extra)(depends on 6.1.148) +Problem: Win32: filewritable() doesn't work properly on directories. +Solution: fix filewritable(). (Mike Williams) +Files: src/os_win32.c + +Patch 6.1.203 +Problem: ":%s/~//" causes a crash after ":%s/x//". (Gary Holloway) +Solution: Avoid reading past the end of a line when "~" is empty. +Files: src/regexp.c + +Patch 6.1.204 (depends on 6.1.129) +Problem: Warning for an illegal pointer on Solaris. +Solution: Add a typecast. (Derek Wyatt) +Files: src/misc2.c + +Patch 6.1.205 +Problem: The gzip plugin changes the alternate file when editing a + compressed file. (Oliver Fuchs) +Solution: Temporarily remove the 'a' and 'A' flags from 'cpo'. +Files: runtime/plugin/gzip.vim + +Patch 6.1.206 +Problem: The script generated with ":mksession" doesn't work properly when + some commands are mapped. +Solution: Use ":normal!" instead of ":normal". And use ":wincmd" where + possible. (Muraoka Taro) +Files: src/ex_docmd.c, src/fold.c + +Patch 6.1.207 +Problem: Indenting a Java file hangs below a line with a comment after a + command. +Solution: Break out of a loop. (Andre Pang) + Also line up } with matching {. +Files: runtime/indent/java.vim + +Patch 6.1.208 +Problem: Can't use the buffer number from the Python interface. +Solution: Add buffer.number. (Michal Vitecek) +Files: src/if_python.c + +Patch 6.1.209 +Problem: Printing doesn't work on Mac OS classic. +Solution: Use a ":" for path separator when opening the resource file. (Axel + Kielhorn) +Files: src/ex_cmds2.c + +Patch 6.1.210 +Problem: When there is an iconv() conversion error when reading a file + there can be an error the next time iconv() is used. +Solution: Reset the state of the iconv() descriptor. (Yasuhiro Matsumoto) +Files: src/fileio.c + +Patch 6.1.211 +Problem: The message "use ! to override" is confusing. +Solution: Make it "add ! to override". +Files: src/buffer.c, src/eval.c, src/ex_docmd.c, src/fileio.c, + src/globals.h + +Patch 6.1.212 +Problem: When Vim was started with "-R" ":new" creates a buffer + 'noreadonly' while ":enew" has 'readonly' set. (Preben Guldberg) +Solution: Don't set 'readonly in a new empty buffer for ":enew". +Files: src/ex_docmd.c + +Patch 6.1.213 +Problem: Using CTRL-W H may cause a big gap to appear below the last + window. (Aric Blumer) +Solution: Don't set the window height when there is a vertical split. + (Yasuhiro Matsumoto) +Files: src/window.c + +Patch 6.1.214 +Problem: When installing Vim and the runtime files were checked out from + CVS the CVS directories will also be installed. +Solution: Avoid installing the CVS dirs and their contents. +Files: src/Makefile + +Patch 6.1.215 +Problem: Win32: ":pwd" uses backslashes even when 'shellslash' is set. + (Xiangjiang Ma) +Solution: Adjust backslashes before printing the message. +Files: src/ex_docmd.c + +Patch 6.1.216 +Problem: When dynamically loading the iconv library, the error codes may be + confused. +Solution: Use specific error codes for iconv and redefine them for dynamic + loading. (Yasuhiro Matsumoto) +Files: src/fileio.c, src/mbyte.c, src/vim.h + +Patch 6.1.217 +Problem: When sourcing the same Vim script using a different name (symbolic + link or MS-Windows 8.3 name) it is listed twice with + ":scriptnames". (Tony Mechelynck) +Solution: Turn the script name into a full path before using it. On Unix + compare inode/device numbers. +Files: src/ex_cmds2.c + +Patch 6.1.218 +Problem: No error message for using the function argument "5+". (Servatius + Brandt) +Solution: Give an error message if a function or variable is expected but is + not found. +Files: src/eval.c + +Patch 6.1.219 +Problem: When using ":amenu :b 1<CR>" with a Visual selection and + 'insertmode' is set, Vim does not return to Insert mode. (Mickael + Marchand) +Solution: Add the command CTRL-\ CTRL-G that goes to Insert mode if + 'insertmode' is set and to Normal mode otherwise. Append this to + menus defined with ":amenu". +Files: src/edit.c, src/ex_getln.c, src/normal.c + +Patch 6.1.220 +Problem: When using a BufReadPost autocommand that changes the line count, + e.g., "$-1join", reloading a file that was changed outside Vim + does not work properly. (Alan G Isaac) +Solution: Make the buffer empty before reading the new version of the file. + Save the lines in a dummy buffer, so that they can be put back + when reading the file fails. +Files: src/buffer.c, src/ex_cmds.c, src/fileio.c, src/globals.h, + src/proto/buffer.pro + +Patch 6.1.221 +Problem: Changing case may not work properly, depending on the current + locale. +Solution: Add the 'casemap' option to let the user chose how changing case + is to be done. + Also fix lowering case when an UTF-8 character doesn't keep the + same byte length. +Files: runtime/doc/options.txt, src/ascii.h, src/auto/configure, + src/buffer.c, src/charset.c, src/config.h.in, src/configure.in, + src/diff.c, src/edit.c, src/eval.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/gui_amiga.c + src/gui_mac.c, src/gui_photon.c, src/gui_w48.c, src/gui_beos.cc, + src/macros.h, src/main.c, src/mbyte.c, src/menu.c, src/message.c, + src/misc1.c, src/misc2.c, src/option.c, src/os_msdos.c, + src/os_mswin.c, src/proto/charset.pro, src/regexp.c, src/option.h, + src/syntax.c + +Patch 6.1.222 (depends on 6.1.219) +Problem: Patch 6.1.219 was incomplete. +Solution: Add the changes for ":amenu". +Files: src/menu.c + +Patch 6.1.223 (extra) +Problem: Win32: When IME is activated 'iminsert' is set, but it might never + be reset when IME is disabled. (Muraoka Taro) + All systems: 'iminsert' is set to 2 when leaving Insert mode, even + when langmap is being used. (Peter Valach) +Solution: Don't set "b_p_iminsert" in _OnImeNotify(). (Muraoka Taro) + Don't store the status of the input method in 'iminsert' when + 'iminsert' is one. Also for editing the command line and for + arguments to Normal mode commands. +Files: src/edit.c, src/ex_getln.c, src/gui_w32.c, src/normal.c + +Patch 6.1.224 +Problem: "expand('$VAR')" returns an empty string when the expanded $VAR + is not an existing file. (Aric Blumer) +Solution: Included non-existing files, as documented. +Files: src/eval.c + +Patch 6.1.225 +Problem: Using <C-O><C-^> in Insert mode has a delay when starting "vim -u + NONE" and ":set nocp hidden". (Emmanuel) do_ecmd() uses + fileinfo(), the redraw is done after a delay to give the user time + to read the message. +Solution: Put the message from fileio() in "keep_msg", so that the redraw is + done before the delay (still needed to avoid the mode message + overwrites the fileinfo() message). +Files: src/buffer.c + +Patch 6.1.226 +Problem: Using ":debug" with a ":normal" command may cause a hang. (Colin + Keith) +Solution: Save the typeahead buffer when obtaining a debug command. +Files: src/ex_cmds2.c, src/getchar.c, src/proto/getchar.pro + +Patch 6.1.227 +Problem: It is possible to use a variable name "asdf:asdf" and ":let j:asdf + = 5" does not give an error message. (Mikolaj Machowski) +Solution: Check for a ":" inside the variable name. +Files: src/eval.c + +Patch 6.1.228 (extra) +Problem: Win32: The special output function for Hangul is used too often, + causing special handling for other situations to be skipped. + bInComposition is always FALSE, causing ImeGetTempComposition() + always to return NULL. +Solution: Remove HanExtTextOut(). Delete the dead code around + bInComposition and ImeGetTempComposition(). +Files: src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.1.229 +Problem: Win32: Conversion to/from often used codepages requires the iconv + library, which is not always available. +Solution: Use standard MS-Windows functions for the conversion when + possible. (mostly by Glenn Maynard) + Also fixes missing declaration for patch 6.1.220. +Files: src/fileio.c + +Patch 6.1.230 (extra) +Problem: Win16: building doesn't work. +Solution: Exclude the XBUTTON handling. (Vince Negri) +Files: src/gui_w48.c + +Patch 6.1.231 +Problem: Double clicking with the mouse to select a word does not work for + multi-byte characters. +Solution: Use vim_iswordc() instead of vim_isIDc(). This means 'iskeyword' + is used instead of 'isident'. Also fix that mixing ASCII with + multi-byte word characters doesn't work, the mouse class for + punctuation and word characters was mixed up. +Files: src/normal.c + +Patch 6.1.232 (depends on 6.1.226) +Problem: Using ex_normal_busy while it might not be available. (Axel + Kielhorn) +Solution: Only use ex_normal_busy when FEAT_EX_EXTRA is defined. +Files: src/ex_cmds2.c + +Patch 6.1.233 +Problem: ":help expr-||" does not work. +Solution: Don't use the '|' as a command separator +Files: src/ex_cmds.c + +Patch 6.1.234 (depends on 6.1.217) +Problem: Get a warning for using a negative value for st_dev. +Solution: Don't assign a negative value to st_dev. +Files: src/ex_cmds2.c + +Patch 6.1.235 (depends on 6.1.223) +Problem: 'iminsert' is changed from 1 to 2 when leaving Insert mode. (Peter + Valach) +Solution: Check "State" before resetting it to NORMAL. +Files: src/edit.c + +Patch 6.1.236 +Problem: Memory leaks when appending lines for ":diffget" or ":diffput" and + when reloading a changed buffer. +Solution: Free a line after calling ml_append(). +Files: src/diff.c, src/fileio.c + +Patch 6.1.237 +Problem: Putting in Visual block mode does not work correctly when "$" was + used or when the first line is short. (Christian Michon) +Solution: First delete the selected text and then put the new text. Save + and restore registers as necessary. +Files: src/globals.h, src/normal.c, src/ops.c, src/proto/ops.pro, + src/vim.h + +Patch 6.1.238 (extra) +Problem: Win32: The "icon=" argument for the ":menu" command does not + search for the bitmap file. +Solution: Expand environment variables and search for the bitmap file. + (Vince Negri) + Make it consistent, use the same mechanism for X11 and GTK. +Files: src/gui.c src/gui_gtk.c, src/gui_w32.c, src/gui_x11.c, + src/proto/gui.pro + +Patch 6.1.239 +Problem: Giving an error for missing :endif or :endwhile when being + interrupted. +Solution: Don't give these messages when interrupted. +Files: src/ex_docmd.c, src/os_unix.c + +Patch 6.1.240 (extra) +Problem: Win32 with BCC 5: CPU may be defined in the environment, which + causes a wrong argument for the compiler. (Walter Briscoe) +Solution: Use CPUNR instead of CPU. +Files: src/Make_bc5.mak + +Patch 6.1.241 +Problem: Something goes wrong when drawing or undrawing the cursor. +Solution: Remember when the cursor invalid in a better way. +Files: src/gui.c + +Patch 6.1.242 +Problem: When pasting a large number of lines on the command line it is not + possible to interrupt. (Jean Jordaan) +Solution: Check for an interrupt after each pasted line. +Files: src/ops.c + +Patch 6.1.243 (extra) +Problem: Win32: When the OLE version is started and wasn't registered, a + message pops up to suggest registering, even when this isn't + possible (when the registry is not writable). +Solution: Check if registering is possible before asking whether it should + be done. (Walter Briscoe) + Also avoid restarting Vim after registering. +Files: src/if_ole.cpp + +Patch 6.1.244 +Problem: Patch 6.1.237 was missing the diff for vim.h. (Igor Goldenberg) +Solution: Include it here. +Files: src/vim.h + +Patch 6.1.245 +Problem: Comparing with ignored case does not work properly for Unicode + with a locale where case folding an ASCII character results in a + multi-byte character. (Glenn Maynard) +Solution: Handle ignore-case compare for Unicode differently. +Files: src/mbyte.c + +Patch 6.1.246 +Problem: ":blast" goes to the first buffer if the last one is unlisted. + (Andrew Stryker) +Solution: From the last buffer search backwards for the first listed buffer + instead of forwards. +Files: src/ex_docmd.c + +Patch 6.1.247 +Problem: ACL support doesn't always work properly. +Solution: Add a configure argument to disable ACL "--disable-acl". (Thierry + Vignaud) +Files: src/auto/configure, src/configure.in + +Patch 6.1.248 +Problem: Typing 'q' at the more-prompt for ":let" does not quit the + listing. (Hari Krishna Dara) +Solution: Quit the listing when got_int is set. +Files: src/eval.c + +Patch 6.1.249 +Problem: Can't expand a path on the command line if it includes a "|" as a + trail byte of a multi-byte character. +Solution: Check for multi-byte characters. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + +Patch 6.1.250 +Problem: When changing the value of 'lines' inside the expression set with + 'diffexpr' Vim might crash. (Dave Fishburn) +Solution: Don't allow changing the screen size while updating the screen. +Files: src/globals.h, src/option.c, src/screen.c + +Patch 6.1.251 +Problem: Can't use completion for ":lcd" and ":lchdir" like ":cd". +Solution: Expand directory names for these commands. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.252 +Problem: "vi}" does not include a line break when the "}" is at the start + of a following line. (Kamil Burzynski) +Solution: Include the line break. +Files: src/search.c + +Patch 6.1.253 (extra) +Problem: Win32 with Cygwin: Changes the path of arguments in a wrong way. + (Xiangjiang Ma) +Solution: Don't use cygwin_conv_to_posix_path() for the Win32 version. + Update the Cygwin makefile to support more features. (Dan Sharp) +Files: src/Make_cyg.mak, src/if_ole.cpp, src/main.c + +Patch 6.1.254 +Problem: exists("foo{bar}") does not work. ':unlet v{"a"}r' does not work. + ":let v{a}r1 v{a}r2" does not work. ":func F{(1)}" does not work. + ":delfunc F{" does not give an error message. ':delfunc F{"F"}' + does not work. +Solution: Support magic braces for the exists() argument. (Vince Negri) + Check for trailing comments explicitly for ":unlet". Add support + for magic braces in further arguments of ":let". Look for a + parenthesis only after the function name. (Servatius Brandt) + Also expand magic braces for "exists('*expr')". Give an error + message for an invalid ":delfunc" argument. Allow quotes in the + ":delfunc" argument. +Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c + +Patch 6.1.255 (depends on 6.1.254) +Problem: Crash when loading menu.vim a second time. (Christian Robinson) + ":unlet garbage foo" tries unletting "foo" after an error message. + (Servatius Brandt) + Very long function arguments cause very long messages when + 'verbose' is 14 or higher. +Solution: Avoid reading from uninitialized memory. + Break out of a loop after an invalid argument for ":unlet". + Truncate long function arguments to 80 characters. +Files: src/eval.c + +Patch 6.1.256 (depends on 6.1.255) +Problem: Defining a function after ":if 0" could still cause an error + message for an existing function. + Leaking memory when there are trailing characters for ":delfunc". +Solution: Check the "skip" flag. Free the memory. (Servatius Brandt) +Files: src/eval.c + +Patch 6.1.257 +Problem: ":cwindow" always sets the previous window to the last but one + window. (Benji Fisher) +Solution: Set the previous window properly. +Files: src/globals.c, src/quickfix.c, src/window.c + +Patch 6.1.258 +Problem: Buffers menu doesn't work properly for multibyte buffer names. +Solution: Use a pattern to get the left and right part of the name. + (Yasuhiro Matsumoto) +Files: runtime/menu.vim + +Patch 6.1.259 (extra) +Problem: Mac: with 'patchmode' is used filenames are truncated. +Solution: Increase the BASENAMELEN for Mac OS X. (Ed Ralston) +Files: src/os_mac.h + +Patch 6.1.260 (depends on 6.1.104) +Problem: GCC 3.2 still seems to have an optimizer problem. (Zvi Har'El) +Solution: Use the same configure check as used for GCC 3.1. +Files: src/auto/configure, src/configure.in + +Patch 6.1.261 +Problem: When deleting a line in a buffer which is not the current buffer, + using the Perl interface Delete(), the cursor in the current + window may move. (Chris Houser) +Solution: Don't adjust the cursor position when changing another buffer. +Files: src/if_perl.xs + +Patch 6.1.262 +Problem: When jumping over folds with "z[", "zj" and "zk" the previous + position is not remembered. (Hari Krishna Dara) +Solution: Set the previous context mark before jumping. +Files: src/fold.c + +Patch 6.1.263 +Problem: When typing a multi-byte character that triggers an abbreviation + it is not inserted properly. +Solution: Handle adding the typed multi-byte character. (Yasuhiro Matsumoto) +Files: src/getchar.c + +Patch 6.1.264 (depends on patch 6.1.254) +Problem: exists() does not work for built-in functions. (Steve Wall) +Solution: Don't check for the function name to start with a capital. +Files: src/eval.c + +Patch 6.1.265 +Problem: libcall() can be used in 'foldexpr' to call any system function. + rename(), delete() and remote_send() can also be used in + 'foldexpr'. These are security problems. (Georgi Guninski) +Solution: Don't allow using libcall(), rename(), delete(), remote_send() and + similar functions in the sandbox. +Files: src/eval.c + +Patch 6.1.266 (depends on 6.1.265) +Problem: Win32: compile error in eval.c. (Bill McCarthy) +Solution: Move a variable declaration. +Files: src/eval.c + +Patch 6.1.267 +Problem: Using "p" to paste into a Visual selected area may cause a crash. +Solution: Allocate enough memory for saving the register contents. (Muraoka + Taro) +Files: src/ops.c + +Patch 6.1.268 +Problem: When triggering an abbreviation with a multi-byte character, this + character is not correctly inserted after expanding the + abbreviation. (Taro Muraoka) +Solution: Add ABBR_OFF to all characters above 0xff. +Files: src/edit.c, src/ex_getln.c, src/getchar.c + +Patch 6.1.269 +Problem: After using input() text written with ":redir" gets extra indent. + (David Fishburn) +Solution: Restore msg_col after using input(). +Files: src/ex_getln.c + +Patch 6.1.270 (depends on 6.1.260) +Problem: GCC 3.2.1 still seems to have an optimizer problem. +Solution: Use the same configure check as used for GCC 3.1. +Files: src/auto/configure, src/configure.in + +Patch 6.1.271 +Problem: When compiling without the +syntax feature there are errors. +Solution: Don't use some code for syntax highlighting. (Roger Cornelius) + Make test 45 work without syntax highlighting. + Also fix an error in a pattern matching: "\%(" was not supported. +Files: src/ex_cmds2.c, src/regexp.c, src/testdir/test45.in + +Patch 6.1.272 +Problem: After using ":set define<" a crash may happen. (Christian Robinson) +Solution: Make a copy of the option value in allocated memory. +Files: src/option.c + +Patch 6.1.273 +Problem: When the cursor doesn't blink, redrawing an exposed area may hide + the cursor. +Solution: Always draw the cursor, also when it didn't move. (Muraoka Taro) +Files: src/gui.c + +Patch 6.1.274 (depends on 6.1.210) +Problem: Resetting the iconv() state after each error is wrong for an + incomplete sequence. +Solution: Don't reset the iconv() state. +Files: src/fileio.c + +Patch 6.1.275 +Problem: When using "v" in a startup script, get warning message that + terminal cannot highlight. (Charles Campbell) +Solution: Only give the message after the terminal has been initialized. +Files: src/normal.c + +Patch 6.1.276 +Problem: "gvim --remote file" doesn't prompt for an encryption key. +Solution: The further characters the client sends to the server are used. + Added inputsave() and inputrestore() to allow prompting the + user directly and not using typeahead. + Also fix possible memory leak for ":normal". +Files: src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c, + src/main.c, src/proto/getchar.pro, src/proto/ui.pro, + src/runtime/doc/eval.txt, src/structs.h, src/ui.c, src/vim.h + +Patch 6.1.277 (depends on 6.1.276) +Problem: Compilation error when building with small features. +Solution: Define trash_input_buf() when needed. (Kelvin Lee) +Files: src/ui.c + +Patch 6.1.278 +Problem: When using signs the line number of a closed fold doesn't line up + with the other line numbers. (Kamil Burzynski) +Solution: Insert two spaces for the sign column. +Files: src/screen.c + +Patch 6.1.279 +Problem: The prototype for smsg() and smsg_attr() do not match the function + definition. This may cause trouble for some compilers. (Nix) +Solution: Use va_list for systems that have stdarg.h. Use "int" instead of + "void" for the return type. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/proto.h, src/message.c + +Patch 6.1.280 +Problem: It's possible to use an argument "firstline" or "lastline" for a + function but using "a:firstline" or "a:lastline" in the function + won't work. (Benji Fisher) +Solution: Give an error message for these arguments. + Also avoid that the following function body causes a whole row of + errors, skip over it after an error in the first line. +Files: src/eval.c + +Patch 6.1.281 +Problem: In Insert mode CTRL-X CTRL-G leaves the cursor after the ruler. +Solution: Set the cursor position before waiting for the argument of CTRL-G. + (Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 6.1.282 +Problem: Elvis uses "se" in a modeline, Vim doesn't recognize this. +Solution: Also accept "se " where "set " is accepted in a modeline. + (Yasuhiro Matsumoto) +Files: src/buffer.c + +Patch 6.1.283 +Problem: For ":sign" the icon file name cannot contain a space. +Solution: Handle backslashes in the file name. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + +Patch 6.1.284 +Problem: On Solaris there is a warning for "struct utimbuf". +Solution: Move including "utime.h" to outside the function. (Derek Wyatt) +Files: src/fileio.c + +Patch 6.1.285 +Problem: Can't wipe out a buffer with 'bufhide' option. +Solution: Add "wipe" value to 'bufhide'. (Yegappan Lakshmanan) +Files: runtime/doc/options.txt, src/buffer.c, src/option.c, + src/quickfix.c + +Patch 6.1.286 +Problem: 'showbreak' cannot contain multi-byte characters. +Solution: Allow using all printable characters for 'showbreak'. +Files: src/charset.c, src/move.c, src/option.c + +Patch 6.1.287 (depends on 6.1.285) +Problem: Effect of "delete" and "wipe" in 'bufhide' were mixed up. +Solution: Wipe out when wiping out is asked for. +Files: src/buffer.c + +Patch 6.1.288 +Problem: ":silent function F" hangs. (Hari Krishna Dara) +Solution: Don't use msg_col, it is not incremented when using ":silent". + Also made the function output look a bit better. Don't translate + "function". +Files: src/eval.c + +Patch 6.1.289 (depends on 6.1.278) +Problem: Compiler warning for pointer. (Axel Kielhorn) +Solution: Add a typecast for " ". +Files: src/screen.c + +Patch 6.1.290 (extra) +Problem: Truncating long text for message box may break multi-byte + character. +Solution: Adjust to start of multi-byte character. (Yasuhiro Matsumoto) +Files: src/os_mswin.c + +Patch 6.1.291 (extra) +Problem: Win32: CTRL-@ doesn't work. Don't even get a message for it. +Solution: Recognize the keycode for CTRL-@. (Yasuhiro Matsumoto) +Files: src/gui_w48.c + +Patch 6.1.292 (extra, depends on 6.1.253) +Problem: Win32: Can't compile with new MingW compiler. + Borland 5 makefile doesn't generate pathdef.c. +Solution: Remove -wwide-multiply argument. (Rene de Zwart) + Various fixes for other problems in Win32 makefiles. (Dan Sharp) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak, + src/Make_mvc.mak + +Patch 6.1.293 +Problem: byte2line() returns a wrong result for some values. +Solution: Change ">=" to ">" in ml_find_line_or_offset(). (Bradford C Smith) + Add one to the line number when at the end of a block. +Files: src/memline.c + +Patch 6.1.294 +Problem: Can't include a multi-byte character in a string by its hex value. + (Benji Fisher) +Solution: Add "\u....": a character specified with up to four hex numbers + and stored according to the value of 'encoding'. +Files: src/eval.c + +Patch 6.1.295 (extra) +Problem: Processing the cs.po file generates an error. (Rahul Agrawal) +Solution: Fix the printf format characters in the translation. +Files: src/po/cs.po + +Patch 6.1.296 +Problem: Win32: When cancelling the font dialog 'guifont' remains set to + "*". +Solution: Restore the old value of 'guifont' (Yasuhiro Matsumoto) +Files: src/option.c + +Patch 6.1.297 +Problem: "make test" fails in test6 in an UTF-8 environment. (Benji Fisher) +Solution: Before executing the BufReadPost autocommands save the current + fileencoding, so that the file isn't marked changed. +Files: src/fileio.c + +Patch 6.1.298 +Problem: When using signs and the first line of a closed fold has a sign + it can be redrawn as if the fold was open. (Kamil Burzynski) +Solution: Don't redraw a sign inside a closed fold. +Files: src/screen.c + +Patch 6.1.299 +Problem: ":edit +set\ ro file" doesn't work. +Solution: Halve the number of backslashes in the "+cmd" argument. +Files: src/ex_docmd.c + +Patch 6.1.300 (extra) +Problem: Handling of ETO_IGNORELANGUAGE is confusing. +Solution: Clean up the handling of ETO_IGNORELANGUAGE. (Glenn Maynard) +Files: src/gui_w32.c + +Patch 6.1.301 (extra) +Problem: French translation of file-save dialog doesn't show file name. +Solution: Insert a star in the printf string. (Francois Terrot) +Files: src/po/fr.po + +Patch 6.1.302 +Problem: Counting lines of the Visual area is incorrect for closed folds. + (Mikolaj Machowski) +Solution: Correct the start and end for the closed fold. +Files: src/normal.c + +Patch 6.1.303 (extra) +Problem: The Top/Bottom/All text does not always fit in the ruler when + translated to Japanese. Problem with a character being wider when + in a bold font. +Solution: Use ETO_PDY to specify the width of each character. (Yasuhiro + Matsumoto) +Files: src/gui_w32.c + +Patch 6.1.304 (extra, depends on 6.1.292) +Problem: Win32: Postscript is always enabled in the MingW Makefile. + Pathdef.c isn't generated properly with Make_bc5.mak. (Yasuhiro + Matsumoto) +Solution: Change an ifdef to an ifeq. (Madoka Machitani) + Use the Borland make redirection to generate pathdef.c. (Maurice + Barnum) +Files: src/Make_bc5.mak, src/Make_ming.mak + +Patch 6.1.305 +Problem: When 'verbose' is 14 or higher, a function call may cause reading + uninitialized data. (Walter Briscoe) +Solution: Check for end-of-string in trunc_string(). +Files: src/message.c + +Patch 6.1.306 +Problem: The AIX VisualAge cc compiler doesn't define __STDC__. +Solution: Use __EXTENDED__ like __STDC__. (Jess Thrysoee) +Files: src/os_unix.h + +Patch 6.1.307 +Problem: When a double-byte character has an illegal tail byte the display + is messed up. (Yasuhiro Matsumoto) +Solution: Draw "XX" instead of the wrong character. +Files: src/screen.c + +Patch 6.1.308 +Problem: Can't reset the Visual mode returned by visualmode(). +Solution: Use an optional argument to visualmode(). (Charles Campbell) +Files: runtime/doc/eval.txt, src/eval.c, src/normal.c, + src/structs.h + +Patch 6.1.309 +Problem: The tutor doesn't select German if the locale name is + "German_Germany.1252". (Joachim Hofmann) +Solution: Check for "German" in the locale name. Also check for + ".ge". And include the German and Greek tutors. +Files: runtime/tutor/tutor.de, runtime/tutor/tutor.vim, + runtime/tutor/tutor.gr, runtime/tutor/tutor.gr.cp737 + +Patch 6.1.310 (depends on 6.1.307) +Problem: All double-byte characters are displayed as "XX". +Solution: Use ">= 32" instead of "< 32". (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 6.1.311 (extra) +Problem: VMS: path in window title doesn't include necessary separator. + file version doesn't always work properly with Unix. + Crashes because of memory overwrite in GUI. + Didn't always handle files with lowercase and correct path. +Solution: Fix the problems. Remove unnecessary file name translations. + (Zoltan Arpadffy) +Files: src/buffer.c, src/ex_cmds2.c, src/fileio.c, src/memline.c, + src/misc1.c, src/misc2.c, src/os_unix.c, src/os_vms.c, src/tag.c + +Patch 6.1.312 +Problem: When using ":silent" debugging is also done silently. +Solution: Disable silence while at the debug prompt. +Files: src/ex_cmds2.c + +Patch 6.1.313 +Problem: When a ":drop fname" command is used and "fname" is open in + another window, it is also opened in the current window. +Solution: Change to the window with "fname" instead. + Don't redefine the argument list when dropping only one file. +Files: runtime/doc/windows.txt, src/ex_cmds2.c, src/ex_cmds.c, + src/ex_docmd.c, src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro + +Patch 6.1.314 (depends on 6.1.126) +Problem: Missing backslash in "Generic Config file" syntax menu. +Solution: Insert the backslash. (Zak Beck) +Files: runtime/makemenu.vim, runtime/synmenu.vim + +Patch 6.1.315 (extra) +Problem: A very long hostname may lead to an unterminated string. Failing + to obtain a hostname may result in garbage. (Walter Briscoe) +Solution: Add a NUL at the end of the hostname buffer. +Files: src/os_mac.c, src/os_msdos.c, src/os_unix.c, src/os_win16.c, + src/os_win32.c + +Patch 6.1.316 +Problem: When exiting with "wq" and there is a hidden buffer, after the + "file changed" dialog there is a warning for a changed buffer. + (Ajit Thakkar) +Solution: Do update the buffer timestamps when exiting. +Files: src/fileio.c + +Patch 6.1.317 +Problem: Closing a window may cause some of the remaining windows to be + positioned wrong if there is a mix of horizontal and vertical + splits. (Stefan Ingi Valdimarsson) +Solution: Update the frame sizes before updating the window positions. +Files: src/window.c + +Patch 6.1.318 +Problem: auto/pathdef.c can include wrong quotes when a compiler flag + includes quotes. +Solution: Put a backslash before the quotes in compiler flags. (Shinra Aida) +Files: src/Makefile + +Patch 6.1.319 (depends on 6.1.276) +Problem: Using "--remote +cmd file" does not execute "cmd". +Solution: Call inputrestore() in the same command line as inputsave(), + otherwise it will never get executed. +Files: src/main.c + +Patch 6.1.320 (depends on 6.1.313) +Problem: When a ":drop one\ file" command is used the file "one\ file" is + opened, the backslash is not removed. (Taro Muraoka) +Solution: Handle backslashes correctly. Always set the argument list to + keep it simple. +Files: runtime/doc/windows.txt, src/ex_cmds.c + +Patch 6.1.321 +Problem: When 'mouse' includes 'n' but not 'v', don't allow starting Visual + mode with the mouse. +Solution: Don't use MOUSE_MAY_VIS when there is no 'v' in 'mouse'. (Flemming + Madsen) +Files: src/normal.c + +Patch 6.1.322 (extra, depends on 6.1.315) +Problem: Win32: The host name is always "PC " plus the real host name. +Solution: Don't insert "PC " before the host name. +Files: src/os_win32.c + +Patch 6.1.323 +Problem: ":registers" doesn't stop listing for a "q" at the more prompt. + (Hari Krishna Dara) +Solution: Check for interrupt and got_int. +Files: src/ops.c, src/proto/ops.pro + +Patch 6.1.324 +Problem: Crash when dragging a vertical separator when <LeftMouse> is + remapped to jump to another window. +Solution: Pass the window pointer to the function doing the dragging instead + of always using the current window. (Daniel Elstner) + Also fix that starting a drag changes window focus. +Files: src/normal.c, src/proto/window.pro, src/ui.c, src/vim.h, + src/window.c + +Patch 6.1.325 +Problem: Shift-Tab is not automatically recognized in an xterm. +Solution: Add <Esc>[Z as the termcap code. (Andrew Pimlott) +Files: src/term.c + +Patch 6.1.326 +Problem: Using a search pattern may read from uninitialized data (Yasuhiro + Matsumoto) +Solution: Initialize pointers to NULL. +Files: src/regexp.c + +Patch 6.1.327 +Problem: When opening the "mbyte.txt" help file the utf-8 characters are + unreadable, because the fileencoding is forced to be latin1. +Solution: Check for utf-8 encoding first in help files. (Daniel Elstner) +Files: runtime/doc/mbyte.txt, src/fileio.c + +Patch 6.1.328 +Problem: Prototype for enc_canon_search() is missing. +Solution: Add the prototype. (Walter Briscoe) +Files: src/mbyte.c + +Patch 6.1.329 +Problem: When editing a file "a b c" replacing "%" in ":Cmd %" or ":next %" + does not work properly. (Hari Krishna Dara) +Solution: Always escape spaces when expanding "%". Don't split argument for + <f-args> in a user command when only one argument is used. +Files: src/ex_docmd.c + +Patch 6.1.330 +Problem: GTK, Motif and Athena: Keypad keys produce the same code as + non-keypad keys, making it impossible to map them separately. +Solution: Use different termcap codes for the keypad keys. (Neil Bird) +Files: src/gui_gtk_x11.c, src/gui_x11.c + +Patch 6.1.331 +Problem: When translating the help files, "LOCAL ADDITIONS" no longer marks + the spot where help files from plugins are to be listed. +Solution: Add a "local-additions" tag and use that to find the right spot. +Files: runtime/doc/help.txt, src/ex_cmds.c + +Patch 6.1.332 (extra) +Problem: Win32: Loading Perl dynamically doesn't work with Perl 5.8. + Perl 5.8 also does not work with Cygwin and Ming. +Solution: Adjust the function calls. (Taro Muraoka) + Adjust the cyg and ming makefiles. (Dan Sharp) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, + src/if_perl.xs + +Patch 6.1.333 (extra) +Problem: Win32: Can't handle Unicode text on the clipboard. + Can't pass NUL byte, it becomes a line break. (Bruce DeVisser) +Solution: Support Unicode for the clipboard (Ron Aaron and Glenn Maynard) + Also support copy/paste of NUL bytes. +Files: src/os_mswin.c, src/os_win16.c src/os_win32.c + +Patch 6.1.334 (extra, depends on 6.1.303) +Problem: Problem with drawing Hebrew characters. +Solution: Only use ETO_PDY for Windows NT and the like. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.1.335 (extra) +Problem: Failure of obtaining the cursor position and window size is + ignored. +Solution: Remove a semicolon after an "if". (Walter Briscoe) +Files: src/gui_w32.c + +Patch 6.1.336 (extra) +Problem: Warning for use of function prototypes of smsg(). +Solution: Define HAVE_STDARG_H. (Walter Briscoe) +Files: src/os_win32.h + +Patch 6.1.337 +Problem: When using "finish" in debug mode in function B() for ":call + A(B())" does not stop after B() is finished. +Solution: Increase debug_level while evaluating a function. +Files: src/ex_docmd.c + +Patch 6.1.338 +Problem: When using a menu that checks out the current file from Insert + mode, there is no warning for the changed file until exiting + Insert mode. (Srikanth Sankaran) +Solution: Add a check for need_check_timestamps in the Insert mode loop. +Files: src/edit.c + +Patch 6.1.339 +Problem: Completion doesn't allow "g:" in ":let g:did_<Tab>". (Benji + Fisher) +Solution: Return "g:var" for global variables when that is what is being + expanded. (Flemming Madsen) +Files: src/eval.c + +Patch 6.1.340 (extra, depends on 6.1.332) +Problem: Win32: Can't compile the Perl interface with nmake. +Solution: Don't compare the version number as a string but as a number. + (Juergen Kraemer) +Files: src/Make_mvc.mak + +Patch 6.1.341 +Problem: In Insert mode with 'rightleft' set the cursor is drawn halfway a + double-wide character. For CTRL-R and CTRL-K in Insert mode the " + or ? is not displayed. +Solution: Draw the cursor in the next character cell. Display the " or ? + over the right half of the double-wide character. (Yasuhiro + Matsumoto) Also fix that cancelling a digraph doesn't redraw + a double-byte character correctly. +Files: src/edit.c, src/gui.c, src/mbyte.c + +Patch 6.1.342 (depends on 6.1.341) +Problem: With 'rightleft' set typing "c" on a double-wide character causes + the cursor to be displayed one cell to the left. +Solution: Draw the cursor in the next character cell. (Yasuhiro Matsumoto) +Files: src/gui.c + +Patch 6.1.343 (depends on 6.1.342) +Problem: Cannot compile with the +multi_byte feature but without +rightleft. + Cannot compile without the GUI. +Solution: Fix the #ifdefs. (partly by Nam SungHyun) +Files: src/gui.c, src/mbyte.c, src/ui.c + +Patch 6.1.344 +Problem: When using ":silent filetype" the output is still put in the + message history. (Hari Krishna Dara) +Solution: Don't add messages in the history when ":silent" is used. +Files: src/message.c + +Patch 6.1.345 (extra) +Problem: Win32: 'imdisable' doesn't work. +Solution: Make 'imdisable' work. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.1.346 +Problem: The scroll wheel can only scroll the current window. +Solution: Make the scroll wheel scroll the window that the mouse points to. + (Daniel Elstner) +Files: src/edit.c, src/gui.c, src/normal.c, src/term.c + +Patch 6.1.347 +Problem: When using cscope to list matching tags, the listed number is + sometimes not equal to what cscope uses. (Vihren Milev) +Solution: For cscope tags use only one table, don't give tags in the current + file a higher priority. +Files: src/tag.c + +Patch 6.1.348 +Problem: Wildmode with wildmenu: ":set wildmode=list,full", ":colorscheme + <tab>" results in "zellner" instead of the first entry. (Anand + Hariharan) +Solution: Don't call ExpandOne() from globpath(). (Flemming Madsen) +Files: src/ex_getln.c + +Patch 6.1.349 +Problem: "vim --serverlist" when no server was ever started gives an error + message without "\n". + "vim --serverlist" doesn't exit when the X server can't be + contacted, it starts Vim unexpectedly. (Ricardo Signes) +Solution: Don't give an error when no Vim server was ever started. + Treat failing of opening the display equal to errors inside the + remote*() functions. (Flemming Madsen) +Files: src/if_xcmdsrv.c, src/main.c + +Patch 6.1.350 +Problem: When entering a buffer with ":bnext" for the first time, using an + autocommand to restore the last used cursor position doesn't work. + (Paolo Giarusso) +Solution: Don't use the last known cursor position of the current Vim + invocation if an autocommand changed the position. +Files: src/buffer.c + +Patch 6.1.351 (depends on 6.1.349) +Problem: Crash when starting Vim the first time in an X server. (John + McGowan) +Solution: Don't call xFree() with a fixed string. +Files: src/if_xcmdsrv.c + +Patch 6.1.352 (extra, depends on 6.1.345) +Problem: Win32: Crash when setting "imdisable" in _vimrc. +Solution: Don't call IME functions when imm32.dll was not loaded (yet). + Also add typecasts to avoid Compiler warnings for + ImmAssociateContext() argument. +Files: src/gui_w32.c + +Patch 6.1.353 (extra, depends on 6.1.334) +Problem: Problem with drawing Arabic characters. +Solution: Don't use ETO_PDY, do use padding. +Files: src/gui_w32.c + +Patch 6.1.354 (extra, depends on 6.1.333) +Problem: MS-Windows 98: Notepad can't paste text copied from Vim when + 'encoding' is "utf-8". +Solution: Also make CF_TEXT available on the clipboard. (Ron Aaron) +Files: src/os_mswin.c + +Patch 6.1.355 +Problem: In a regexp '\n' will never match anything in a string. +Solution: Make '\n' match a newline character. +Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/misc1.c, + src/option.c, src/os_mac.c, src/os_unix.c, src/quickfix.c, + src/regexp.c, src/search.c, src/syntax.c, src/tag.c, src/vim.h + +Patch 6.1.356 (extra, depends on, well, eh, several others) +Problem: Compiler warnings for using convert_setup() and a few other + things. +Solution: Add typecasts. +Files: src/mbyte.c, src/os_mswin.c, src/proto/os_win32.pro, src/os_win32.c + +Patch 6.1.357 +Problem: CR in the quickfix window jumps to the error under the cursor, but + this doesn't work in Insert mode. (Srikanth Sankaran) +Solution: Handle CR in Insert mode in the quickfix window. +Files: src/edit.c + +Patch 6.1.358 +Problem: The tutor doesn't select another locale version properly. +Solution: Insert the "let" command. (Yasuhiro Matsumoto) +Files: runtime/tutor/tutor.vim + +Patch 6.1.359 (extra) +Problem: Mac Carbon: Vim doesn't get focus when started from the command + line. Crash when using horizontal scroll bar. +Solution: Set Vim as the frontprocess. Fix scrolling. (Peter Cucka) +Files: src/gui_mac.c + +Patch 6.1.360 (depends on 6.1.341) +Problem: In Insert mode CTRL-K ESC messes up a multi-byte character. + (Anders Helmersson) +Solution: Save all bytes of a character when displaying a character + temporarily. +Files: src/edit.c, src/proto/screen.pro, src/screen.c + +Patch 6.1.361 +Problem: Cannot jump to a file mark with ":'M". +Solution: Allow jumping to another file for a mark in an Ex address when it + is the only thing in the command line. +Files: src/ex_docmd.c + +Patch 6.1.362 +Problem: tgetent() may return zero for success. tgetflag() may return -1 + for an error. +Solution: Check tgetflag() for returning a positive value. Add an autoconf + check for the value that tgetent() returns. +Files: src/auto/configure, src/config.h.in, src/configure.in, src/term.c + +Patch 6.1.363 +Problem: byte2line() can return one more than the number of lines. +Solution: Return -1 if the offset is one byte past the end. +Files: src/memline.c + +Patch 6.1.364 +Problem: That the FileChangedShell autocommand event never nests makes it + difficult to reload a file in a normal way. +Solution: Allow nesting for the FileChangedShell event but do not allow + triggering itself again. + Also avoid autocommands for the cmdline window in rare cases. +Files: src/ex_getln.c, src/fileio.c, src/window.c + +Patch 6.1.365 (depends on 6.1.217) +Problem: Setting a breakpoint in a sourced file with a relative path name + doesn't work. (Servatius Brandt) +Solution: Expand the file name to a full path. +Files: src/ex_cmds2.c + +Patch 6.1.366 +Problem: Can't use Vim with Netbeans. +Solution: Add the Netbeans interface. Includes support for sign icons and + "-fg" and "-bg" arguments for GTK. Add the 'autochdir' + option. (Gordon Prieur, George Hernandez, Dave Weatherford) + Make it possible to display both a sign with a text and one with + line highlighting in the same line. + Add support for Agide, interface version 2.1. + Also fix that when 'iskeyword' includes '?' the "*" command + doesn't work properly on a word that includes "?" (Bill McCarthy): + Don't escape "?" to "\?" when searching forward. +Files: runtime/doc/Makefile, runtime/doc/netbeans.txt, + runtime/doc/options.txt, runtime/doc/various.txt, + src/Makefile, src/auto/configure, src/buffer.c, src/config.h.in, + src/config.mk.in, src/configure.in, src/edit.c, src/ex_cmds.c, + src/ex_docmd.c, src/feature.h, src/fileio.c, src/globals.h, + src/gui.c, src/gui_beval.c, src/gui_gtk_x11.c, src/gui_x11.c, + src/main.c, src/memline.c, src/misc1.c, src/misc2.c, src/move.c, + src/nbdebug.c, src/nbdebug.h, src/netbeans.c, src/normal.c, + src/ops.c, src/option.c, src/option.h, src/proto/buffer.pro, + src/proto/gui_beval.pro, src/proto/gui_gtk_x11.pro, + src/proto/gui_x11.pro, src/proto/misc2.pro, + src/proto/netbeans.pro, src/proto/normal.pro, src/proto/ui.pro, + src/proto.h, src/screen.c, src/structs.h, src/ui.c, src/undo.c, + src/vim.h, src/window.c, src/workshop.c + +Patch 6.1.367 (depends on 6.1.365) +Problem: Setting a breakpoint in a function doesn't work. For a sourced + file it doesn't work when symbolic links are involved. (Servatius + Brandt) +Solution: Expand the file name in the same way as do_source() does. Don't + prepend the path to a function name. +Files: src/ex_cmds2.c + +Patch 6.1.368 +Problem: Completion for ":map" does not include <silent> and <script>. + ":mkexrc" do not save the <silent> attribute of mappings. +Solution: Add "<silent>" to the generated map commands when appropriate. + (David Elstner) + Add <silent> and <script> to command line completion. +Files: src/getchar.c + +Patch 6.1.369 (extra) +Problem: VMS: Vim hangs when attempting to edit a read-only file in the + terminal. Problem with VMS filenames for quickfix. +Solution: Rewrite low level input. Remove version number from file name in + a couple more places. Fix crash after patch 6.1.362. Correct + return code for system(). (Zoltan Arpadffy, Tomas Stehlik) +Files: src/misc1.c, src/os_unix.c, src/os_vms.c, src/proto/os_vms.pro, + src/os_vms_conf.h, src/quickfix.c, src/ui.c + +Patch 6.1.370 +Problem: #ifdef nesting is unclear. +Solution: Insert spaces to indicate the nesting. +Files: src/os_unix.c + +Patch 6.1.371 +Problem: "%V" in 'statusline' doesn't show "0-1" in an empty line. +Solution: Add one to the column when comparing with virtual column (Andrew + Pimlott) +Files: src/buffer.c + +Patch 6.1.372 +Problem: With 16 bit ints there are compiler warnings. (Walter Briscoe) +Solution: Change int into long. +Files: src/structs.h, src/syntax.c + +Patch 6.1.373 +Problem: The default page header for printing is not translated. +Solution: Add _() around the two places where "Page" is used. (Mike + Williams) Translate the default value of the 'titleold' and + 'printheader' options. +Files: src/ex_cmds2.c, src/option.c + +Patch 6.1.374 (extra) +Problem: MS-Windows: Cannot build GvimExt with MingW or Cygwin. +Solution: Add makefile and modified resource files. (Rene de Zwart) + Also support Cygwin. (Alejandro Lopez_Valencia) +Files: GvimExt/Make_cyg.mak, GvimExt/Make_ming.mak, GvimExt/Makefile, + GvimExt/gvimext_ming.def, GvimExt/gvimext_ming.rc + +Patch 6.1.375 +Problem: MS-Windows: ':!dir "%"' does not work for a file name with spaces. + (Xiangjiang Ma) +Solution: Don't insert backslashes for spaces in a shell command. +Files: src/ex_docmd.c + +Patch 6.1.376 +Problem: "vim --version" and "vim --help" have a non-zero exit code. + That is unusual. (Petesea) +Solution: Use a zero exit code. +Files: src/main.c + +Patch 6.1.377 +Problem: Can't add words to 'lispwords' option. +Solution: Add P_COMMA and P_NODUP flags. (Haakon Riiser) +Files: src/option.c + +Patch 6.1.378 +Problem: When two buffer-local user commands are ambiguous, a full match + with a global user command isn't found. (Hari Krishna Dara) +Solution: Detect this situation and accept the global command. +Files: src/ex_docmd.c + +Patch 6.1.379 +Problem: Linux with kernel 2.2 can't use the alternate stack in combination + with threading, causes an infinite loop. +Solution: Don't use the alternate stack in this situation. +Files: src/os_unix.c + +Patch 6.1.380 +Problem: When 'winminheight' is zero and the quickfix window is zero lines, + entering the window doesn't make it higher. (Christian J. + Robinson) +Solution: Make sure the current window is at least one line high. +Files: src/window.c + +Patch 6.1.381 +Problem: When a BufWriteCmd is used and it leaves the buffer modified, the + window may still be closed. (Hari Krishna Dara) +Solution: Return FAIL from buf_write() when the buffer is still modified + after a BufWriteCmd autocommand was used. +Files: src/fileio.c + +Patch 6.1.382 (extra) +Problem: Win32 GUI: When using two monitors, the code that checks/fixes the + window size and position (e.g. when a font changes) doesn't work + properly. (George Reilly) +Solution: Handle a double monitor situation. (Helmut Stiegler) +Files: src/gui_w32.c + +Patch 6.1.383 +Problem: The filling of the status line doesn't work properly for + multi-byte characters. (Nam SungHyun) + There is no check for going past the end of the buffer. +Solution: Properly distinguish characters and bytes. Properly check for + running out of buffer space. +Files: src/buffer.c, src/ex_cmds2.c, src/proto/buffer.pro, src/screen.c + +Patch 6.1.384 +Problem: It is not possible to find if a certain patch has been included. + (Lubomir Host) +Solution: Support using has() to check if a patch was included. +Files: runtime/doc/eval.txt, src/eval.c, src/proto/version.pro, + src/version.c + +Patch 6.1.385 (depends on 6.1.383) +Problem: Can't compile without the multi-byte feature. +Solution: Move an #ifdef. (Christian J. Robinson) +Files: src/buffer.c + +Patch 6.1.386 +Problem: Get duplicate tags when running ":helptags". +Solution: Do the other halve of moving a section to another help file. +Files: runtime/tagsrch.txt + +Patch 6.1.387 (depends on 6.1.373) +Problem: Compiler warning for pointer cast. +Solution: Add (char_u *). +Files: src/option.c + +Patch 6.1.388 (depends on 6.1.384) +Problem: Compiler warning for pointer cast. +Solution: Add (char *). Only include has_patch() when used. +Files: src/eval.c, src/version.c + +Patch 6.1.389 (depends on 6.1.366) +Problem: Balloon evaluation doesn't work for GTK. + has("balloon_eval") doesn't work. +Solution: Add balloon evaluation for GTK. Also improve displaying of signs. + (Daniel Elstner) + Also make ":gui" start the netbeans connection and avoid using + netbeans functions when the connection is not open. +Files: src/Makefile, src/feature.h, src/gui.c, src/gui.h, + src/gui_beval.c, src/gui_beval.h, src/gui_gtk.c, + src/gui_gtk_x11.c, src/eval.c, src/memline.c, src/menu.c, + src/netbeans.c, src/proto/gui_beval.pro, src/proto/gui_gtk.pro, + src/structs.h, src/syntax.c, src/ui.c, src/workshop.c + +Patch 6.1.390 (depends on 6.1.389) +Problem: It's not possible to tell Vim to save and exit through the + Netbeans interface. Would still try to send balloon eval text + after the connection is closed. + Can't use Unicode characters for sign text. +Solution: Add functions "saveAndExit" and "getModified". Check for a + working connection before sending a balloonText event. + various other cleanups. + Support any character for sign text. (Daniel Elstner) +Files: runtime/doc/netbeans.txt, runtime/doc/sign.txt, src/ex_cmds.c, + src/netbeans.c, src/screen.c + +Patch 6.1.391 +Problem: ml_get() error when using virtualedit. (Charles Campbell) +Solution: Get a line from a specific window, not the current one. +Files: src/charset.c + +Patch 6.1.392 (depends on 6.1.383) +Problem: Highlighting in the 'statusline' is in the wrong position when an + item is truncated. (Zak Beck) +Solution: Correct the start of 'statusline' items properly for a truncated + item. +Files: src/buffer.c + +Patch 6.1.393 +Problem: When compiled with Python and threads, detaching the terminal may + cause Vim to loop forever. +Solution: Add -pthread to $CFLAGS when using Python and gcc. (Daniel + Elstner) +Files: src/auto/configure,, src/configure.in + +Patch 6.1.394 (depends on 6.1.390) +Problem: The netbeans interface doesn't recognize multibyte glyph names. +Solution: Check the number of cells rather than bytes to decide + whether a glyph name is not a filename. (Daniel Elstner) +Files: src/netbeans.c + +Patch 6.1.395 (extra, depends on 6.1.369) +Problem: VMS: OLD_VMS is never defined. Missing function prototype. +Solution: Define OLD_VMS in Make_vms.mms. Add vms_sys_status() to + os_vms.pro. (Zoltan Arpadffy) +Files: src/Make_vms.mms, src/proto/os_vms.pro + +Patch 6.1.396 (depends on 6.1.330) +Problem: Compiler warnings for using enum. +Solution: Add typecast to char_u. +Files: src/gui_gtk_x11.c, src/gui_x11.c + +Patch 6.1.397 (extra) +Problem: The install program may use a wrong path for the diff command if + there is a space in the install directory path. +Solution: Use double quotes around the path if necessary. (Alejandro + Lopez-Valencia) Also use double quotes around the file name + arguments. +Files: src/dosinst.c + +Patch 6.1.398 +Problem: Saving the typeahead for debug mode causes trouble for a test + script. (Servatius Brandt) +Solution: Add the ":debuggreedy" command to avoid saving the typeahead. +Files: runtime/doc/repeat.txt, src/ex_cmds.h, src/ex_cmds2.c, + src/ex_docmd.c, src/proto/ex_cmds2.pro + +Patch 6.1.399 +Problem: Warning for unused variable. +Solution: Remove the variable two_or_more. +Files: src/ex_cmds.c + +Patch 6.1.400 (depends on 6.1.381) +Problem: When a BufWriteCmd wipes out the buffer it may still be accessed. +Solution: Don't try accessing a buffer that has been wiped out. +Files: src/fileio.c + +Patch 6.1.401 (extra) +Problem: Building the Win16 version with Borland 5.01 doesn't work. + "make test" doesn't work with Make_dos.mak. (Walter Briscoe) +Solution: Various fixes to the w16 makefile. (Walter Briscoe) + Don't use deltree. Use "mkdir \tmp" instead of "mkdir /tmp". +Files: src/Make_w16.mak, src/testdir/Make_dos.mak + +Patch 6.1.402 +Problem: When evaluating a function name with curly braces, an error + is not handled consistently. +Solution: Accept the result of a curly braces expression when an + error was encountered. Skip evaluating an expression in curly + braces when skipping. (Servatius Brandt) +Files: src/eval.c + +Patch 6.1.403 (extra) +Problem: MS-Windows 16 bit: compiler warnings. +Solution: Add typecasts. (Walter Briscoe) +Files: src/ex_cmds2.c, src/gui_w48.c, src/os_mswin.c, src/os_win16.c, + src/syntax.c + +Patch 6.1.404 (extra) +Problem: Various small problems. +Solution: Fix comments. Various small additions, changes in indent, removal + of unused items and fixes. +Files: Makefile, README.txt, runtime/menu.vim, runtime/vimrc_example.vim, + src/INSTALL, src/INSTALLole.txt, src/Make_bc5.mak, + src/Make_cyg.mak, src/Make_ming.mak, src/Makefile, + src/config.h.in, src/edit.c, src/eval.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/getchar.c, + src/gui.c, src/gui_gtk.c, src/gui_photon.c, src/if_cscope.c, + src/if_python.c, src/keymap.h, src/mark.c, src/mbyte.c, + src/message.c, src/misc1.c, src/misc2.c, src/normal.c, + src/option.c, src/os_os2_cfg.h, src/os_win32.c, + src/proto/getchar.pro, src/proto/message.pro, + src/proto/regexp.pro, src/screen.c, src/structs.h, src/syntax.c, + src/term.c, src/testdir/test15.in, src/testdir/test15.ok, + src/vim.rc, src/xxd/Make_cyg.mak, src/xxd/Makefile + +Patch 6.1.405 +Problem: A few files are missing from the toplevel Makefile. +Solution: Add the missing files. +Files: Makefile + +Patch 6.1.406 (depends on 6.1.392) +Problem: When a statusline item doesn't fit arbitrary text appears. + (Christian J. Robinson) +Solution: When there is just enough room but not for the "<" truncate the + statusline item like there is no room. +Files: src/buffer.c + +Patch 6.1.407 +Problem: ":set scrollbind | help" scrollbinds the help window. (Andrew + Pimlott) +Solution: Reset 'scrollbind' when opening a help window. +Files: src/ex_cmds.c + +Patch 6.1.408 +Problem: When 'rightleft' is set unprintable character 0x0c is displayed as + ">c0<". +Solution: Reverse the text of the hex character. +Files: src/screen.c + +Patch 6.1.409 +Problem: Generating tags for the help doesn't work for some locales. +Solution: Set LANG=C LC_ALL=C in the environment for "sort". (Daniel + Elstner) +Files: runtime/doc/Makefile + +Patch 6.1.410 (depends on 6.1.390) +Problem: Linking error when compiling with Netbeans but without sign icons. + (Malte Neumann) +Solution: Don't define buf_signcount() when sign icons are unavailable. +Files: src/buffer.c + +Patch 6.1.411 +Problem: When 'virtualedit' is set, highlighting a Visual block beyond the + end of a line may be wrong. +Solution: Correct the virtual column when the end of the line is before the + displayed part of the line. (Muraoka Taro) +Files: src/screen.c + +Patch 6.1.412 +Problem: When swapping terminal screens and using ":gui" to start the GUI, + the shell prompt may be after a hit-enter prompt. +Solution: Output a newline in the terminal when starting the GUI and there + was a hit-enter prompt.. +Files: src/gui.c + +Patch 6.1.413 +Problem: When 'clipboard' contains "unnamed", "p" in Visual mode doesn't + work correctly. +Solution: Save the register before overwriting it and put the resulting text + on the clipboard afterwards. (Muraoka Taro) +Files: src/normal.c, src/ops.c + +Patch 6.1.414 (extra, depends on 6.1.369) +Problem: VMS: Vim busy waits when waiting for input. +Solution: Delay for a short while before getting another character. (Zoltan + Arpadffy) +Files: src/os_vms.c + +Patch 6.1.415 +Problem: When there is a vertical split and a quickfix window, reducing the + size of the Vim window may result in a wrong window layout and a + crash. +Solution: When reducing the window size and there is not enough space for + 'winfixheight' set the frame height to the larger height, so that + there is a retry while ignoring 'winfixheight'. (Yasuhiro + Matsumoto) +Files: src/window.c + +Patch 6.1.416 (depends on 6.1.366) +Problem: When using the Netbeans interface, a line with a sign cannot be + changed. +Solution: Respect the GUARDEDOFFSET for sign IDs when checking for a guarded + area. +Files: src/netbeans.c + +Patch 6.1.417 +Problem: Unprintable multi-byte characters are not handled correctly. + Multi-byte characters above 0xffff are displayed as another + character. +Solution: Handle unprintable multi-byte characters. Display multi-byte + characters above 0xffff with a marker. Recognize UTF-16 words and + BOM words as unprintable. (Daniel Elstner) +Files: src/charset.c, src/mbyte.c, src/screen.c + +Patch 6.1.418 +Problem: The result of strftime() is in the current locals. Need to + convert it to 'encoding'. +Solution: Obtain the current locale and convert the argument for strftime() + to it and the result back to 'encoding'. (Daniel Elstner) +Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/mbyte.c, + src/proto/mbyte.pro, src/option.c, src/os_mswin.c + +Patch 6.1.419 +Problem: Vim doesn't compile on AIX 5.1. +Solution: Don't define _NO_PROTO on this system. (Uribarri) +Files: src/auto/configure, src/configure.in + +Patch 6.1.420 (extra) +Problem: convert_input() has an unnecessary STRLEN(). + Conversion from UCS-2 to a codepage uses word count instead of + byte count. +Solution: Remove the STRLEN() call. (Daniel Elstner) + Always use byte count for string_convert(). +Files: src/gui_w32.c, src/mbyte.c + +Patch 6.1.421 (extra, depends on 6.1.354) +Problem: MS-Windows 9x: When putting text on the clipboard it can be in + the wrong encoding. +Solution: Convert text to the active codepage for CF_TEXT. (Glenn Maynard) +Files: src/os_mswin.c + +Patch 6.1.422 +Problem: Error in .vimrc doesn't cause hit-enter prompt when swapping + screens. (Neil Bird) +Solution: Set msg_didany also when sending a message to the terminal + directly. +Files: src/message.c + +Patch 6.1.423 +Problem: Can't find arbitrary text in help files. +Solution: Added the ":helpgrep" command. +Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c, + src/proto/quickfix.pro, src/quickfix.c + +Patch 6.1.424 (extra) +Problem: Win32: Gvim compiled with VC++ 7.0 run on Windows 95 does not show + menu items. +Solution: Define $WINVER to avoid an extra item is added to MENUITEMINFO. + (Muraoka Taro) +Files: src/Make_mvc.mak + +Patch 6.1.425 +Problem: ":helptags $VIMRUNTIME/doc" does not add the "help-tags" tag. +Solution: Do add the "help-tags" tag for that specific directory. +Files: src/ex_cmds.c + +Patch 6.1.426 +Problem: "--remote-wait +cmd file" waits forever. (Valery Kondakoff) +Solution: Don't wait for the "+cmd" argument to have been edited. +Files: src/main.c + +Patch 6.1.427 +Problem: Several error messages for regexp patterns are not translated. +Solution: Use _() properly. (Muraoka Taro) +Files: src/regexp.c + +Patch 6.1.428 +Problem: FreeBSD: wait() may hang when compiled with Python support and + doing a system() call in a startup script. +Solution: Use waitpid() instead of wait() and poll every 10 msec, just like + what is done in the GUI. +Files: src/os_unix.c + +Patch 6.1.429 (depends on 6.1.390) +Problem: Crash when using showmarks.vim plugin. (Charles Campbell) +Solution: Check for sign_get_text() returning a NULL pointer. +Files: src/screen.c + +Patch 6.1.430 +Problem: In Lisp code backslashed parens should be ignored for "%". (Dorai) +Solution: Skip over backslashed parens. +Files: src/search.c + +Patch 6.1.431 +Problem: Debug commands end up in redirected text. +Solution: Disable redirection while handling debug commands. +Files: src/ex_cmds2.c + +Patch 6.1.432 (depends on 6.1.375) +Problem: MS-Windows: ":make %:p" inserts extra backslashes. (David Rennalls) +Solution: Don't add backslashes, handle it like ":!cmd". +Files: src/ex_docmd.c + +Patch 6.1.433 +Problem: ":popup" only works for Win32. +Solution: Add ":popup" support for GTK. (Daniel Elstner) +Files: runtime/doc/gui.txt, src/ex_docmd.c, src/gui_gtk.c, src/menu.c, + src/proto/gui_gtk.pro + +Patch 6.1.434 (extra) +Problem: Win32: When there are more than 32767 lines, the scrollbar has a + roundoff error. +Solution: Make a click on an arrow move one line. Also move the code to + gui_w48.c, there is hardly any difference between the 16 bit and + 32 bit versions. (Walter Briscoe) +Files: src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.1.435 +Problem: ":winsize x" resizes the Vim window to the minimal size. (Andrew + Pimlott) +Solution: Give an error message for wrong arguments of ":winsize" and + ":winpos". +Files: src/ex_docmd.c + +Patch 6.1.436 +Problem: When a long UTF-8 file contains an illegal byte it's hard to find + out where it is. (Ron Aaron) +Solution: Add the line number to the error message. +Files: src/fileio.c + +Patch 6.1.437 (extra, depends on 6.1.421) +Problem: Using multi-byte functions when they are not available. +Solution: Put the clipboard conversion inside an #ifdef. (Vince Negri) + Also fix a pointer type mistake. (Walter Briscoe) +Files: src/os_mswin.c + +Patch 6.1.438 +Problem: When Perl has thread support Vim cannot use the Perl interface. +Solution: Add a configure check and disable Perl when it will not work. + (Aron Griffis) +Files: src/auto/configure, src/configure.in + +Patch 6.1.439 +Problem: Netbeans: A "create" function doesn't actually create a buffer, + following functions may fail. +Solution: Create a Vim buffer without a name when "create" is called. + (Gordon Prieur) +Files: runtime/doc/netbeans.txt, src/netbeans.c + +Patch 6.1.440 +Problem: The "@*" command doesn't obtain the actual contents of the + clipboard. (Hari Krishna Dara) +Solution: Obtain the clipboard text before executing the command. +Files: src/ops.c + +Patch 6.1.441 +Problem: "zj" and "zk" cannot be used as a motion command after an + operator. (Ralf Hetzel) +Solution: Accept these commands as motion commands. +Files: src/normal.c + +Patch 6.1.442 +Problem: Unicode 3.2 defines more space and punctuation characters. +Solution: Add the new characters to the Unicode tables. (Raphael Finkel) +Files: src/mbyte.c + +Patch 6.1.443 (extra) +Problem: Win32: The gvimext.dll build with Borland 5.5 requires another + DLL. +Solution: Build a statically linked version by default. (Dan Sharp) +Files: GvimExt/Make_bc5.mak + +Patch 6.1.444 (extra) +Problem: Win32: Enabling a build with gettext support is not consistent. +Solution: Use "GETTEXT" for Borland and msvc makefiles. (Dan Sharp) +Files: src/Make_bc5.mak, src/Make_mvc.mak + +Patch 6.1.445 (extra) +Problem: DJGPP: get warning for argument of putenv() +Solution: Define HAVE_PUTENV to use DJGPP's putenv(). (Walter Briscoe) +Files: src/os_msdos.h + +Patch 6.1.446 (extra) +Problem: Win32: The MingW makefile uses a different style of arguments than + other makefiles. + Dynamic IME is not supported for Cygwin. +Solution: Use "no" and "yes" style arguments. Remove the use of the + dyn-ming.h include file. (Dan Sharp) + Do not include the ime.h file and adjust the makefile. (Alejandro + Lopez-Valencia) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/gui_w32.c, + src/if_perl.xs, src/if_python.c, src/if_ruby.c, src/os_win32.c + +Patch 6.1.447 +Problem: "make install" uses "make" directly for generating help tags. +Solution: Use $(MAKE) instead of "make". (Tim Mooney) +Files: src/Makefile + +Patch 6.1.448 +Problem: 'titlestring' has a default maximum width of 50 chars per item. +Solution: Remove the default maximum (also for 'statusline'). +Files: src/buffer.c + +Patch 6.1.449 +Problem: When "1" and "a" are in 'formatoptions', auto-formatting always + moves a newly added character to the next line. (Servatius Brandt) +Solution: Don't move a single character to the next line when it was just + typed. +Files: src/edit.c + +Patch 6.1.450 +Problem: Termcap entry "kB" for back-tab is not recognized. +Solution: Use back-tab as the shift-tab code. +Files: src/keymap.h, src/misc2.c, src/term.c + +Patch 6.1.451 +Problem: GUI: When text in the find dialog contains a slash, a backslash is + inserted the next time it is opened. (Mezz) +Solution: Remove escaped backslashes and question marks. (Daniel Elstner) +Files: src/gui.c + +Patch 6.1.452 (extra, after 6.1.446) +Problem: Win32: IME support doesn't work for MSVC. +Solution: Use _MSC_VER instead of __MSVC. (Alejandro Lopez-Valencia) +Files: src/gui_w32.c + +Patch 6.1.453 (after 6.1.429) +Problem: When compiled without sign icons but with sign support, adding a + sign may cause a crash. +Solution: Check for the text sign to exist before using it. (Kamil + Burzynski) +Files: src/screen.c + +Patch 6.1.454 (extra) +Problem: Win32: pasting Russian text in Vim with 'enc' set to cp1251 + results in utf-8 bytes. (Perelyubskiy) + Conversion from DBCS to UCS2 does not work when 'encoding' is not + the active codepage. +Solution: Introduce enc_codepage and use it for conversion to 'encoding' + (Glenn Maynard) + Use MultiByteToWideChar() and WideCharToMultiByte() instead of + iconv(). Should do most needed conversions without iconv.dll. +Files: src/globals.h, src/gui_w32.c, src/mbyte.c, src/os_mswin.c, + src/proto/mbyte.pro, src/proto/os_mswin.pro, src/structs.h + +Patch 6.1.455 +Problem: Some Unicode characters can be one or two character cells wide. +Solution: Add the 'ambiwidth' option to tell Vim how to display these + characters. (Jungshik Shin) + Also reset the script ID when setting an option to its default + value, so that ":verbose set" won't give wrong info. +Files: runtime/doc/options.txt, src/mbyte.c, src/option.c, src/option.h + +Patch 6.1.456 (extra, after 6.1.454) +Problem: Win32: IME doesn't work. +Solution: ImmGetCompositionStringW() returns the size in bytes, not words. + (Yasuhiro Matsumoto) Also fix typecast problem. +Files: src/gui_w32.c, src/os_mswin.c + +Patch 6.1.457 +Problem: An empty register in viminfo causes conversion to fail. +Solution: Don't convert an empty string. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c, src/mbyte.c + +Patch 6.1.458 +Problem: Compiler warning for pointer. +Solution: Add a typecast. +Files: src/ex_cmds.c + +Patch 6.1.459 (extra) +Problem: Win32: libcall() may return an invalid pointer and cause Vim to + crash. +Solution: Add a strict check for the returned pointer. (Bruce Mellows) +Files: src/os_mswin.c + +Patch 6.1.460 +Problem: GTK: after scrolling the text one line with a key, clicking the + arrow of the scrollbar does not always work. (Nam SungHyun) +Solution: Always update the scrollbar thumb when the value changed, even + when it would not move, like for RISCOS. (Daniel Elstner) +Files: src/gui.c, src/gui.h + +Patch 6.1.461 +Problem: When a keymap is active, typing a character in Select mode does + not use it. (Benji Fisher) +Solution: Apply Insert mode mapping to the character typed in Select mode. +Files: src/normal.c + +Patch 6.1.462 +Problem: When autocommands wipe out a buffer, a crash may happen. (Hari + Krishna Dara) +Solution: Don't decrement the window count of a buffer before calling the + autocommands for it. When re-using the current buffer, watch out + for autocommands changing the current buffer. +Files: src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro + +Patch 6.1.463 +Problem: When writing a compressed file, the file name that gzip stores in + the file is the weird temporary file name. (David Rennalls) +Solution: Use the real file name when possible. +Files: runtime/plugin/gzip.vim + +Patch 6.1.464 +Problem: Crash when using C++ syntax highlighting. (Gerhard Hochholzer) +Solution: Check for a negative index. +Files: src/syntax.c + +Patch 6.1.465 (after 6.1.454) +Problem: Compile error when using cygwin. +Solution: Change #ifdef WIN32 to #ifdef WIN3264. (Alejandro Lopez-Valencia) + Undefine WIN32 after including windows.h +Files: src/mbyte.c + +Patch 6.1.466 +Problem: The "-f" argument is a bit obscure. +Solution: Add the "--nofork" argument. Improve the help text a bit. +Files: runtime/doc/starting.txt, src/main.c + +Patch 6.1.467 +Problem: Setting the window title doesn't work for Chinese. +Solution: Use an X11 function to convert text to a text property. (Kentaro + Nakazawa) +Files: src/os_unix.c + +Patch 6.1.468 +Problem: ":mksession" also stores folds for buffers which will not be + restored. +Solution: Only store folds for a buffer with 'buftype' empty and help files. +Files: src/ex_docmd.c + +Patch 6.1.469 +Problem: 'listchars' cannot contain multi-byte characters. +Solution: Handle multi-byte UTF-8 list characters. (Matthew Samsonoff) +Files: src/message.c, src/option.c, src/screen.c + +Patch 6.1.470 (lang) +Problem: Polish messages don't show up correctly on MS-Windows. +Solution: Convert messages to cp1250. (Mikolaj Machowski) + Also add English message translations, because it got in the way + of the patch. +Files: Makefile, src/po/Makefile, src/po/en_gb.po, src/po/pl.po + +Patch 6.1.471 +Problem: ":jumps" output continues after pressing "q" at the more-prompt. + (Hari Krishna Dara) +Solution: Check for "got_int" being set. +Files: src/mark.c + +Patch 6.1.472 +Problem: When there is an authentication error when connecting to the X + server Vim exits. +Solution: Use XSetIOErrorHandler() to catch the error and longjmp() to avoid + the exit. Also do this in the main loop, so that when the X + server exits a Vim running in a console isn't killed. +Files: src/globals.h, src/main.c, src/os_unix.c + +Patch 6.1.473 +Problem: Referring to $curwin or $curbuf in Perl 5.6 causes a crash. +Solution: Add "pTHX_" to cur_val(). (Yasuhiro Matsumoto) +Files: src/if_perl.xs + +Patch 6.1.474 +Problem: When opening the command-line window in Ex mode it's impossible to + go back. (Pavol Juhas) +Solution: Reset "exmode_active" and restore it when the command-line window + is closed. +Files: src/ex_getln.c + + +Patch 6.2f.001 +Problem: The configure check for Ruby didn't work properly for Ruby 1.8.0. +Solution: Change the way the Ruby check is done. (Aron Griffis) +Files: src/auto/configure, src/configure.in + +Patch 6.2f.002 +Problem: The output of ":ls" doesn't show whether a buffer had read errors. +Solution: Add the "x" flag in the ":ls" output. +Files: runtime/doc/windows.txt, src/buffer.c + +Patch 6.2f.003 +Problem: Test49 doesn't properly test the behavior of ":catch" without an + argument. +Solution: Update test49. (Servatius Brandt) +Files: src/testdir/test49.ok, src/testdir/test49.vim + +Patch 6.2f.004 +Problem: "vim --version" always uses CR/LF in the output. +Solution: Omit the CR. +Files: src/message.c, src/os_unix.c + +Patch 6.2f.005 +Problem: Two error messages without a colon after the number. +Solution: Add the colon. (Taro Muraoka) +Files: src/if_cscope.c + +Patch 6.2f.006 +Problem: When saving a file takes a while and Vim regains focus this can + result in a "file changed outside of Vim" warning and ml_get() + errors. (Mike Williams) +Solution: Add the "b_saving" flag to avoid checking the timestamp while the + buffer is being saved. (Michael Schaap) +Files: src/fileio.c, src/structs.h + +Patch 6.2f.007 +Problem: Irix compiler complains about multiple defined symbols. + vsnprintf() is not available. (Charles Campbell) +Solution: Insert EXTERN for variables in globals.h. Change the configure + check for vsnprintf() from compiling to linking. +Files: src/auto/configure, src/configure.in, src/globals.h + +Patch 6.2f.008 +Problem: The Aap recipe doesn't work with Aap 0.149. +Solution: Change targetarg to TARGETARG. Update the mysign file. +Files: src/main.aap, src/mysign + +Patch 6.2f.009 (extra) +Problem: Small problem when building with Borland 5.01. +Solution: Use mkdir() instead of _mkdir(). (Walter Briscoe) +Files: src/dosinst.h + +Patch 6.2f.010 +Problem: Warning for missing prototypes. +Solution: Add missing prototypes. (Walter Briscoe) +Files: src/if_cscope.c + +Patch 6.2f.011 +Problem: The configure script doesn't work with autoconf 2.5x. +Solution: Add square brackets around a header check. (Aron Griffis) + Note: touch src/auto/configure after applying this patch. +Files: src/configure.in + +Patch 6.2f.012 +Problem: ":echoerr" doesn't work correctly inside try/endtry. +Solution: Don't reset did_emsg inside a try/endtry. (Servatius Brandt) +Files: src/eval.c + +Patch 6.2f.013 (extra) +Problem: Macintosh: Compiler warning for a trigraph. +Solution: Insert a backslash before each question mark. (Peter Cucka) +Files: src/os_mac.h + +Patch 6.2f.014 (extra) +Problem: Macintosh: ex_eval is not included in the project file. +Solution: Add ex_eval. (Dany St-Amant) +Files: src/os_mac.pbproj/project.pbxproj + +Patch 6.2f.015 (extra) +Problem: Win32: When changing header files not all source files involved + are recompiled. +Solution: Improve the dependency rules. (Dan Sharp) +Files: src/Make_cyg.mak, src/Make_ming.mak + +Patch 6.2f.016 +Problem: "vim --version > ff" on non-Unix systems results in a file with a + missing line break at the end. (Bill McCArthy) +Solution: Add a line break. +Files: src/main.c + +Patch 6.2f.017 +Problem: Unix: starting Vim in the background and then bringing it to the + foreground may cause the terminal settings to be wrong. +Solution: Check for tcsetattr() to return an error, retry when it does. + (Paul Tapper) +Files: src/os_unix.c + +Patch 6.2f.018 +Problem: Mac OS X 10.2: OK is defined to zero in cursus.h while Vim uses + one. Redefining it causes a warning message. +Solution: Undefine OK before defining it to one. (Taro Muraoka) +Files: src/vim.h + +Patch 6.2f.019 +Problem: Mac OS X 10.2: COLOR_BLACK and COLOR_WHITE are defined in + curses.h. +Solution: Rename them to PRCOLOR_BLACK and PRCOLOR_WHITE. +Files: src/ex_cmds2.c + +Patch 6.2f.020 +Problem: Win32: test50 produces beeps and fails with some versions of diff. +Solution: Remove empty lines and convert the output to dos fileformat. +Files: src/testdir/test50.in + +Patch 6.2f.021 +Problem: Running configure with "--enable-netbeans" disables Netbeans. + (Gordon Prieur) +Solution: Fix the tests in configure.in where the default is to enable a + feature. Fix that "--enable-acl" reported "yes" confusingly. +Files: src/auto/configure, src/configure.in, src/mysign + +Patch 6.2f.022 +Problem: A bogus value for 'foldmarker' is not rejected, possibly causing a + hang. (Derek Wyatt) +Solution: Check for a non-empty string before and after the comma. +Files: src/option.c + +Patch 6.2f.023 +Problem: When the help files are not in $VIMRUNTIME but 'helpfile' is + correct Vim still can't find the help files. +Solution: Also look for a tags file in the directory of 'helpfile'. +Files: src/tag.c + +Patch 6.2f.024 +Problem: When 'delcombine' is set and a character has more than two + composing characters "x" deletes them all. +Solution: Always delete only the last composing character. +Files: src/misc1.c + +Patch 6.2f.025 +Problem: When reading a file from stdin that has DOS line endings but a + missing end-of-line for the last line 'fileformat' becomes "unix". + (Bill McCarthy) +Solution: Don't add the missing line break when re-reading the text from the + buffer. +Files: src/fileio.c + +Patch 6.2f.026 +Problem: When typing new text at the command line, old composing characters + may be displayed. +Solution: Don't read composing characters from after the end of the + text to be displayed. +Files: src/ex_getln.c, src/mbyte.c, src/message.c, src/proto/mbyte.pro, + src/screen.c + +Patch 6.2f.027 +Problem: Compiler warnings for unsigned char pointers. (Tony Leneis) +Solution: Add typecasts to char pointer. +Files: src/quickfix.c + +Patch 6.2f.028 +Problem: GTK: When 'imactivatekey' is empty and XIM is inactive it can't be + made active again. Cursor isn't updated immediately when changing + XIM activation. Japanese XIM may hang when using 'imactivatekey'. + Can't activate XIM after typing fFtT command or ":sh". +Solution: Properly set the flag that indicates the IM is active. Update the + cursor right away. Do not send a key-release event. Handle + Normal mode and running an external command differently. + (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.2f.029 +Problem: Mixing use of int and enum. +Solution: Adjust argument type of cs_usage_msg(). Fix wrong typedef. +Files: src/if_cscope.c, src/if_cscope.h + +Patch 6.2f.030 (after 6.2f.028) +Problem: Cursor moves up when using XIM. +Solution: Reset im_preedit_cursor. (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.2f.031 +Problem: Crash when listing a function argument in the debugger. (Ron Aaron) +Solution: Init the name field of an argument to NULL. +Files: src/eval.c + +Patch 6.2f.032 +Problem: When a write fails for a ":silent!" while inside try/endtry the + BufWritePost autocommands are not triggered. +Solution: Check the emsg_silent flag in should_abort(). (Servatius Brandt) +Files: src/ex_eval.c, src/testdir/test49.ok, src/testdir/test49.vim + +Patch 6.2f.033 +Problem: Cscope: re-entrance problem for ":cscope" command. Checking for + duplicate database didn't work well for Win95. Didn't check for + duplicate databases after an empty entry. +Solution: Don't set postponed_split too early. Remember first empty + database entry. (Sergey Khorev) +Files: src/if_cscope.c + +Patch 6.2f.034 +Problem: The netbeans interface cannot be used on systems without + vsnprintf(). (Tony Leneis) +Solution: Use EMSG(), EMSGN() and EMSG2() instead. +Files: src/auto/configure, src/configure.in, src/netbeans.c + +Patch 6.2f.035 +Problem: The configure check for the netbeans interface doesn't work if the + socket and nsl libraries are required. +Solution: Check for the socket and nsl libraries before the netbeans check. +Files: src/auto/configure, src/configure.in + +Patch 6.2f.036 +Problem: Moving leftwards over text with an illegal UTF-8 byte moves one + byte instead of one character. +Solution: Ignore an illegal byte after the cursor position. +Files: src/mbyte.c + +Patch 6.2f.037 +Problem: When receiving a Netbeans command at the hit-enter or more prompt + the screen is redrawn but Vim is still waiting at the prompt. +Solution: Quit the prompt like a CTRL-C was typed. +Files: src/netbeans.c + +Patch 6.2f.038 +Problem: The dependency to run autoconf causes a patch for configure.in + to run autoconf, even though the configure script was updated as + well. +Solution: Only run autoconf with "make autoconf". +Files: src/Makefile + +Patch 6.2f.039 +Problem: CTRL-W K makes the new top window very high. +Solution: When 'equalalways' is set equalize the window heights. +Files: src/window.c + + +============================================================================== +VERSION 6.3 *version-6.3* + +This section is about improvements made between version 6.2 and 6.3. + +This is mainly a bug-fix release. There are also a few new features. +The major number of new items is in the runtime files and translations. + + +Changed *changed-6.3* +------- + +The intro message also displays a note about sponsoring Vim, mixed randomly +with the message about helping children in Uganda. + +Included the translated menus, keymaps and tutors with the normal runtime +files. The separate "lang" archive now only contains translated messages. + +Made the translated menu file names a bit more consistent. Use "latin1" for +"iso_8859-1" and "iso_8859-15". + +Removed the "file_select.vim" script from the distribution. It's not more +useful than other scripts that can be downloaded from www.vim.org. + +The "runtime/doc/tags" file is now always in unix fileformat. On MS-Windows +it used to be dos fileformat, but ":helptags" generates a unix format file. + + +Added *added-6.3* +----- + +New commands: + :cNfile go to last error in previous file + :cpfile idem + :changes print the change list + :keepmarks following command keeps marks where they are + :keepjumps following command keeps jumplist and marks + :lockmarks following command keeps marks where they are + :redrawstatus force a redraw of the status line(s) + +New options: + 'antialias' Mac OS X: use smooth, antialiased fonts + 'helplang' preferred help languages + +Syntax files: + Arch inventory (Nikolai Weibull) + Calendar (Nikolai Weibull) + Ch (Wayne Cheng) + Controllable Regex Mutilator (Nikolai Weibull) + D (Jason Mills) + Desktop (Mikolaj Machowski) + Dircolors (Nikolai Weibull) + Elinks configuration (Nikolai Weibull) + FASM (Ron Aaron) + GrADS scripts (Stefan Fronzek) + Icewm menu (James Mahler) + LDIF (Zak Johnson) + Locale input, fdcc. (Dwayne Bailey) + Pinfo config (Nikolai Weibull) + Pyrex (Marco Barisione) + Relax NG Compact (Nikolai Weibull) + Slice (Morel Bodin) + VAX Macro Assembly (Tom Uijldert) + grads (Stefan Fronzek) + libao (Nikolai Weibull) + mplayer (Nikolai Weibull) + rst (Nikolai Weibull) + tcsh (Gautam Iyer) + yaml (Nikolai Weibull) + +Compiler plugins: + ATT dot (Marcos Macedo) + Apple Project Builder (Alexander von Below) + Intel (David Harrison) + bdf (Nikolai Weibull) + icc (Peter Puck) + javac (Doug Kearns) + neato (Marcos Macedo) + onsgmls (Robert B. Rowsome) + perl (Christian J. Robinson) + rst (Nikolai Weibull) + se (SmartEiffel) (Doug Kearns) + tcl (Doug Kearns) + xmlwf (Robert B. Rowsome) + +Filetype plugins: + Aap (Bram Moolenaar) + Ch (Wayne Cheng) + Css (Nikolai Weibull) + Pyrex (Marco Barisione) + Rst (Nikolai Weibull) + +Indent scripts: + Aap (Bram Moolenaar) + Ch (Wayne Cheng) + DocBook (Nikolai Weibull) + MetaPost (Eugene Minkovskii) + Objective-C (Kazunobu Kuriyama) + Pyrex (Marco Barisione) + Rst (Nikolai Weibull) + Tcsh (Gautam Iyer) + XFree86 configuration file (Nikolai Weibull) + Zsh (Nikolai Weibull) + +Keymaps: + Greek for cp1253 (Panagiotis Louridas) + Hungarian (Magyar) (Laszlo Zavaleta) + Persian-Iranian (Behnam Esfahbod) + +Message translations: + Catalan (Ernest Adrogue) + Russian (Vassily Ragosin) + Swedish (Johan Svedberg) + +Menu translations: + Catalan (Ernest Adrogue) + Russian (Tim Alexeevsky) + Swedish (Johan Svedberg) + +Tutor translations: + Catalan (Ernest Adrogue) + Russian in cp1251 (Alexey Froloff) + Slovak in cp1250 and iso8859-2 (Lubos Celko) + Swedish (Johan Svedberg) + Korean (Kee-Won Seo) + UTF-8 version of the Japanese tutor (Yasuhiro Matsumoto) Use this as + the original, create the other Japanese tutor by conversion. + +Included "russian.txt" help file. (Vassily Ragosin) + +Include Encapsulated PostScript and PDF versions of the Vim logo in the extra +archive. + +The help highlighting finds the highlight groups and shows them in the color +that is actually being used. (idea from Yakov Lerner) + +The big Win32 version is now compiled with Ruby interface, version 1.8. For +Python version 2.3 is used. For Perl version 5.8 is used. + +The "ftdetect" directory is mentioned in the documentation. The DOS install +program creates it. + + +Fixed *fixed-6.3* +----- + +Test 42 failed on MS-Windows. Set and reset 'fileformat' and 'binary' options +here and there. (Walter Briscoe) + +The explorer plugin didn't work for double-byte 'encoding's. + +Use "copy /y" in Make_bc5.mak to avoid a prompt for overwriting. + +Patch 6.2.001 +Problem: The ":stopinsert" command doesn't have a help tag. +Solution: Add the tag. (Antoine J. Mechelynck) +Files: runtime/doc/insert.txt, runtime/doc/tags + +Patch 6.2.002 +Problem: When compiled with the +multi_byte feature but without +eval, + displaying UTF-8 characters may cause a crash. (Karsten Hopp) +Solution: Also set the default for 'ambiwidth' when compiled without the + +eval feature. +Files: src/option.c + +Patch 6.2.003 +Problem: GTK 2: double-wide characters below 256 are not displayed + correctly. +Solution: Check the cell width for characters above 127. (Yasuhiro + Matsumoto) +Files: src/gui_gtk_x11.c + +Patch 6.2.004 +Problem: With a line-Visual selection at the end of the file a "p" command + puts the text one line upwards. +Solution: Detect that the last line was deleted and put forward. (Taro + Muraoka) +Files: src/normal.c + +Patch 6.2.005 +Problem: GTK: the "Find" and "Find and Replace" tools don't work. (Aschwin + Marsman) +Solution: Show the dialog after creating it. (David Necas) +Files: src/gui_gtk.c + +Patch 6.2.006 +Problem: The Netbeans code contains an obsolete function that uses "vim61" + and sets the fall-back value for $VIMRUNTIME. +Solution: Delete the obsolete function. +Files: src/main.c, src/netbeans.c, src/proto/netbeans.pro + +Patch 6.2.007 +Problem: Listing tags for Cscope doesn't always work. +Solution: Avoid using smgs_attr(). (Sergey Khorev) +Files: src/if_cscope.c + +Patch 6.2.008 +Problem: XIM with GTK 2: After backspacing preedit characters are wrong. +Solution: Reset the cursor position. (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.2.009 +Problem: Win32: The self-installing executable "Full" selection only + selects some of the items to install. (Salman Mohsin) +Solution: Change commas to spaces in between section numbers. +Files: nsis/gvim.nsi + +Patch 6.2.010 +Problem: When 'virtualedit' is effective and a line starts with a + multi-byte character, moving the cursor right doesn't work. +Solution: Obtain the right character to compute the column offset. (Taro + Muraoka) +Files: src/charset.c + +Patch 6.2.011 +Problem: Alpha OSF1: stat() is a macro and doesn't allow an #ifdef halfway. + (Moshe Kaminsky) +Solution: Move the #ifdef outside of stat(). +Files: src/os_unix.c + +Patch 6.2.012 +Problem: May hang when polling for a character. +Solution: Break the wait loop when not waiting for a character. +Files: src/os_unix.c + +Patch 6.2.013 (extra) +Problem: Win32: The registry key for uninstalling GvimExt still uses "6.1". +Solution: Change the version number to "6.2". (Ajit Thakkar) +Files: src/GvimExt/GvimExt.reg + +Patch 6.2.014 (after 6.2.012) +Problem: XSMP doesn't work when using poll(). +Solution: Use xsmp_idx instead of gpm_idx. (Neil Bird) +Files: src/os_unix.c + +Patch 6.2.015 +Problem: The +xsmp feature is never enabled. +Solution: Move the #define for USE_XSMP to below where WANT_X11 is defined. + (Alexey Froloff) +Files: src/feature.h + +Patch 6.2.016 +Problem: Using ":scscope find" with 'cscopequickfix' does not always split + the window. (Gary Johnson) + Win32: ":cscope add" could make the script that contains it + read-only until the corresponding ":cscope kill". + Errors during ":cscope add" may not be handled properly. +Solution: When using the quickfix window may need to split the window. + Avoid file handle inheritance for the script. + Check for a failed connection and/or process. (Sergey Khorev) +Files: src/ex_cmds2.c, src/if_cscope.c + +Patch 6.2.017 +Problem: Test11 sometimes prompts the user, because a file would have been + changed outside of Vim. (Antonio Colombo) +Solution: Add a FileChangedShell autocommand to avoid the prompt. +Files: src/testdir/test11.in + +Patch 6.2.018 +Problem: When using the XSMP protocol and reading from stdin Vim may wait + for a key to be pressed. +Solution: Avoid that RealWaitForChar() is used recursively. +Files: src/os_unix.c + +Patch 6.2.019 (lang) +Problem: Loading the Portuguese menu causes an error message. +Solution: Join two lines. (Jose Pedro Oliveira, José de Paula) +Files: runtime/lang/menu_pt_br.vim + +Patch 6.2.020 +Problem: The "Syntax/Set syntax only" menu item causes an error message. + (Oyvind Holm) +Solution: Set the script-local variable in a function. (Benji Fisher) +Files: runtime/synmenu.vim + +Patch 6.2.021 +Problem: The user manual section on exceptions contains small mistakes. +Solution: Give a good example of an error that could be missed and other + improvements. (Servatius Brandt) +Files: runtime/doc/usr_41.txt + +Patch 6.2.022 (extra) +Problem: Win32: After deleting a menu item it still appears in a tear-off + window. +Solution: Set the mode to zero for the deleted item. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.2.023 (extra) +Problem: Win32: Make_ivc.mak does not clean everything. +Solution: Delete more files in the clean rule. (Walter Briscoe) +Files: src/Make_ivc.mak + +Patch 6.2.024 (extra) +Problem: Win32: Compiler warnings for typecasts. +Solution: Use DWORD instead of WORD. (Walter Briscoe) +Files: src/gui_w32.c + +Patch 6.2.025 +Problem: Missing prototype for sigaltstack(). +Solution: Add the prototype when it is not found in a header file. +Files: src/os_unix.c + +Patch 6.2.026 +Problem: Warning for utimes() argument. +Solution: Add a typecast. +Files: src/fileio.c + +Patch 6.2.027 +Problem: Warning for uninitialized variable. +Solution: Set mb_l to one when not using multi-byte characters. +Files: src/message.c + +Patch 6.2.028 +Problem: Cscope connection may kill Vim process and others. +Solution: Check for pid being larger than one. (Khorev Sergey) +Files: src/if_cscope.c + +Patch 6.2.029 +Problem: When using the remote server functionality Vim may leak memory. + (Srikanth Sankaran) +Solution: Free the result of XListProperties(). +Files: src/if_xcmdsrv.c + +Patch 6.2.030 +Problem: Mac: Warning for not being able to use precompiled header files. +Solution: Don't redefine select. Use -no-cpp-precomp for compiling, so that + function prototypes are still found. +Files: src/os_unix.c, src/osdef.sh + +Patch 6.2.031 +Problem: The langmenu entry in the options window doesn't work. (Rodolfo + Lima) + With GTK 1 the ":options" command causes an error message. + (Michael Naumann) +Solution: Change "lmenu" to "langmenu". Only display the 'tbis' option for + GTK 2. +Files: runtime/optwin.vim + +Patch 6.2.032 +Problem: The lpc filetype is never recognized. (Shizhu Pan) +Solution: Check for g:lpc_syntax_for_c instead of the local variable + lpc_syntax_for_c. (Benji Fisher) +Files: runtime/filetype.vim + +Patch 6.2.033 (extra) +Problem: Mac: Various compiler warnings. +Solution: Don't include Classic-only headers in Unix version. + Remove references to several unused variables. (Ben Fowler) + Fix double definition of DEFAULT_TERM. + Use int instead of unsigned short for pixel values, so that the + negative error values are recognized. +Files: src/gui_mac.c, src/term.c + +Patch 6.2.034 +Problem: Mac: Compiler warning for redefining DEFAULT_TERM. +Solution: Fix double definition of DEFAULT_TERM. +Files: src/term.c + +Patch 6.2.035 +Problem: Mac: Compiler warnings in Python interface. +Solution: Make a difference between pure Mac and Unix-Mac. (Peter Cucka) +Files: src/if_python.c + +Patch 6.2.036 (extra) +Problem: Mac Unix version: If foo is a directory, then ":e f<Tab>" should + expand to ":e foo/" instead of ":e foo" . (Vadim Zeitlin) +Solution: Define DONT_ADD_PATHSEP_TO_DIR only for pure Mac. (Benji Fisher) +Files: src/os_mac.h + +Patch 6.2.037 +Problem: Win32: converting an encoding name to a codepage could result in + an arbitrary number. +Solution: make encname2codepage() return zero if the encoding name doesn't + contain a codepage number. +Files: src/mbyte.c + +Patch 6.2.038 (extra) +Problem: Warning messages when using the MingW compiler. (Bill McCarthy) + Can't compile console version without +mouse feature. +Solution: Initialize variables, add parenthesis. + Add an #ifdef around g_nMouseClick. (Ajit Thakkar) +Files: src/eval.c, src/os_win32.c, src/gui_w32.c, src/dosinst.c + +Patch 6.2.039 (extra) +Problem: More warning messages when using the MingW compiler. +Solution: Initialize variables. (Bill McCarthy) +Files: src/os_mswin.c + +Patch 6.2.040 +Problem: FreeBSD: Crash while starting up when compiled with +xsmp feature. +Solution: Pass a non-NULL argument to IceAddConnectionWatch(). +Files: src/os_unix.c + +Patch 6.2.041 (extra, after 6.2.033) +Problem: Mac: Compiler warnings for conversion types, missing prototype, + missing return type. +Solution: Change sscanf "%hd" to "%d", the argument is an int now. Add + gui_mch_init_check() prototype. Add "int" to termlib functions. +Files: src/gui_mac.c, src/proto/gui_mac.pro, src/termlib.c. + +Patch 6.2.042 (extra) +Problem: Cygwin: gcc 3.2 has an optimizer problem, sometimes causing a + crash. +Solution: Add -fno-strength-reduce to the compiler arguments. (Dan Sharp) +Files: src/Make_cyg.mak + +Patch 6.2.043 +Problem: Compiling with both netbeans and workshop doesn't work. +Solution: Move the shellRectangle() function to gui_x11.c. (Gordon Prieur) +Files: src/gui_x11.c, src/integration.c, src/netbeans.c, + src/proto/netbeans.pro + +Patch 6.2.044 +Problem: ":au filetypedetect" gives an error for a non-existing event name, + but it's actually a non-existing group name. (Antoine Mechelynck) +Solution: Make the error message clearer. +Files: src/fileio.c + +Patch 6.2.045 +Problem: Obtaining the '( mark changes the '' mark. (Gary Holloway) +Solution: Don't set the '' mark when searching for the start/end of the + current sentence/paragraph. +Files: src/mark.c + +Patch 6.2.046 +Problem: When evaluating an argument of a function throws an exception the + function is still called. (Hari Krishna Dara) +Solution: Don't call the function when an exception was thrown. +Files: src/eval.c + +Patch 6.2.047 (extra) +Problem: Compiler warnings when using MingW. (Bill McCarthy) +Solution: Give the s_dwLastClickTime variable a type. Initialize dwEndTime. +Files: src/os_win32.c + +Patch 6.2.048 +Problem: The Python interface doesn't compile with Python 2.3 when + dynamically loaded. +Solution: Use dll_PyObject_Malloc and dll_PyObject_Free. (Paul Moore) +Files: src/if_python.c + +Patch 6.2.049 +Problem: Using a "-range=" argument with ":command" doesn't work and + doesn't generate an error message. +Solution: Generate an error message. +Files: src/ex_docmd.c + +Patch 6.2.050 +Problem: Test 32 didn't work on MS-Windows. +Solution: Write the temp file in Unix fileformat. (Walter Briscoe) +Files: src/testdir/test32.in + +Patch 6.2.051 +Problem: When using "\=submatch(0)" in a ":s" command, line breaks become + NUL characters. +Solution: Change NL to CR characters, so that they become line breaks. +Files: src/regexp.c + +Patch 6.2.052 +Problem: A few messages are not translated. +Solution: Add _() to the messages. (Muraoka Taro) +Files: src/ex_cmds.c + +Patch 6.2.053 +Problem: Prototype for bzero() doesn't match most systems. +Solution: Use "void *" instead of "char *" and "size_t" instead of "int". +Files: src/osdef1.h.in + +Patch 6.2.054 +Problem: A double-byte character with a second byte that is a backslash + causes problems inside a string. +Solution: Skip over multi-byte characters in a string properly. (Yasuhiro + Matsumoto) +Files: src/eval.c + +Patch 6.2.055 +Problem: Using col('.') from CTRL-O in Insert mode does not return the + correct value for multi-byte characters. +Solution: Correct the cursor position when it is necessary, move to the + first byte of a multi-byte character. (Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 6.2.056 (extra) +Problem: Building with Sniff++ doesn't work. +Solution: Use the multi-threaded libc when needed. (Holger Ditting) +Files: src/Make_mvc.mak + +Patch 6.2.057 (extra) +Problem: Mac: With -DMACOS_X putenv() is defined twice, it is in a system + library. Get a warning for redefining OK. Unused variables in + os_mac.c +Solution: Define HAVE_PUTENV. Undefine OK after including curses.h. + Remove declarations for unused variables. +Files: src/os_mac.c, src/os_mac.h, src/vim.h + +Patch 6.2.058 +Problem: When 'autochdir' is set ":bnext" to a buffer without a name causes + a crash. +Solution: Don't call vim_chdirfile() when the file name is NULL. (Taro + Muraoka) +Files: src/buffer.c + +Patch 6.2.059 +Problem: When 'scrolloff' is a large number and listing completion results + on the command line, then executing a command that jumps close to + where the cursor was before, part of the screen is not updated. + (Yakov Lerner) +Solution: Don't skip redrawing part of the window when it was scrolled. +Files: src/screen.c + +Patch 6.2.060 (extra) +Problem: Win32: When 'encoding' is set to "iso-8859-7" copy/paste to/from + the clipboard gives a lalloc(0) error. (Kriton Kyrimis) +Solution: When the string length is zero allocate one byte. Also fix that + when the length of the Unicode text is zero (conversion from + 'encoding' to UCS-2 was not possible) the normal text is used. +Files: src/os_mswin.c + +Patch 6.2.061 +Problem: GUI: Using the left mouse button with the shift key should work + like "*" but it scrolls instead. (Martin Beller) +Solution: Don't recognize an rxvt scroll wheel event when using the GUI. +Files: src/term.c + +Patch 6.2.062 +Problem: When one buffer uses a syntax with "containedin" and another + buffer does not, redrawing depends on what the current buffer is. + (Brett Pershing Stahlman) +Solution: Use "syn_buf" instead of "curbuf" to get the b_syn_containedin + flag. +Files: src/syntax.c + +Patch 6.2.063 +Problem: When using custom completion end up with no matches. +Solution: Make cmd_numfiles and cmd_files local to completion to avoid that + they are overwritten when ExpandOne() is called recursively by + f_glob(). +Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/ex_getln.pro, + src/misc1.c, src/structs.h, src/tag.c + +Patch 6.2.064 +Problem: resolve() only handles one symbolic link, need to repeat it to + resolve all of them. Then need to simplify the file name. +Solution: Make resolve() resolve all symbolic links and simplify the result. + Add simplify() to just simplify a file name. Fix that test49 + doesn't work if /tmp is a symbolic link. (Servatius Brandt) +Files: runtime/doc/eval.txt, src/eval.c, src/tag.c, + src/testdir/test49.vim + +Patch 6.2.065 +Problem: ":windo 123" only updates other windows when entering them. + (Walter Briscoe) +Solution: Update the topline before going to the next window. +Files: src/ex_cmds2.c + +Patch 6.2.066 (extra) +Problem: Ruby interface doesn't work with Ruby 1.8.0. +Solution: Change "defout" to "stdout". (Aron Griffis) + Change dynamic loading. (Taro Muraoka) +Files: src/if_ruby.c, src/Make_mvc.mak + +Patch 6.2.067 +Problem: When searching for a string that starts with a composing character + the command line isn't drawn properly. +Solution: Don't count the space to draw the composing character on and + adjust the cursor column after drawing the string. +Files: src/message.c + +Patch 6.2.068 +Problem: Events for the netbeans interface that include a file name with + special characters don't work properly. +Solution: Use nb_quote() on the file name. (Sergey Khorev) +Files: src/netbeans.c + +Patch 6.2.069 (after 6.2.064) +Problem: Unused variables "limit" and "new_st" and unused label "fail" in + some situation. (Bill McCarthy) +Solution: Put the declarations inside an #ifdef. (Servatius Brandt) +Files: src/eval.c, src/tag.c + +Patch 6.2.070 (after 6.2.069) +Problem: Still unused variable "new_st". (Bill McCarthy) +Solution: Move the declaration to the right block this time. +Files: src/tag.c + +Patch 6.2.071 +Problem: 'statusline' can only contain 50 % items. (Antony Scriven) +Solution: Allow 80 items and mention it in the docs. +Files: runtime/doc/option.txt, src/vim.h + +Patch 6.2.072 +Problem: When using expression folding, foldexpr() mostly returns -1 for + the previous line, which makes it difficult to write a fold + expression. +Solution: Make the level of the previous line available while still looking + for the end of a fold. +Files: src/fold.c + +Patch 6.2.073 +Problem: When adding detection of a specific filetype for a plugin you need + to edit "filetype.vim". +Solution: Source files from the "ftdetect" directory, so that a filetype + detection plugin only needs to be dropped in a directory. +Files: runtime/doc/filetype.txt, runtime/doc/usr_05.txt, + runtime/doc/usr_41.txt, runtime/filetype.vim + +Patch 6.2.074 +Problem: Warnings when compiling the Python interface. (Ajit Thakkar) +Solution: Use ANSI function declarations. +Files: src/if_python.c + +Patch 6.2.075 +Problem: When the temp file for writing viminfo can't be used "NULL" + appears in the error message. (Ben Lavender) +Solution: Print the original file name when there is no temp file name. +Files: src/ex_cmds.c + +Patch 6.2.076 +Problem: The tags listed for cscope are in the wrong order. (Johannes + Stezenbach) +Solution: Remove the reordering of tags for the current file. (Sergey + Khorev) +Files: src/if_cscope.c + +Patch 6.2.077 +Problem: When a user function specifies custom completion, the function + gets a zero argument instead of an empty string when there is no + word before the cursor. (Preben Guldberg) +Solution: Don't convert an empty string to a zero. +Files: src/eval.c + +Patch 6.2.078 +Problem: "make test" doesn't work if Vim wasn't compiled yet. (Ed Avis) +Solution: Build Vim before running the tests. +Files: src/Makefile + +Patch 6.2.079 +Problem: ":w ++enc=utf-8 !cmd" doesn't work. +Solution: Check for the "++" argument before the "!". +Files: src/ex_docmd.c + +Patch 6.2.080 +Problem: When 't_ti' is not empty but doesn't swap screens, using "ZZ" in + an unmodified file doesn't clear the last line. +Solution: Call msg_clr_eos() when needed. (Michael Schroeder) +Files: src/os_unix.c + +Patch 6.2.081 +Problem: Problem when using a long multibyte string for the statusline. +Solution: Use the right pointer to get the cell size. (Taro Muraoka) +Files: src/buffer.c + +Patch 6.2.082 +Problem: Can't compile with Perl 5.8.1. +Solution: Rename "e_number" to "e_number_exp". (Sascha Blank) +Files: src/digraph.c, src/globals.h + +Patch 6.2.083 +Problem: When a compiler uses ^^^^ to mark a word the information is not + visible in the quickfix window. (Srikanth Sankaran) +Solution: Don't remove the indent for a line that is not recognized as an + error message. +Files: src/quickfix.c + +Patch 6.2.084 +Problem: "g_" in Visual mode always goes to the character after the line. + (Jean-Rene David) +Solution: Ignore the NUL at the end of the line. +Files: src/normal.c + +Patch 6.2.085 +Problem: ":verbose set ts" doesn't say an option was set with a "-c" or + "--cmd" argument. +Solution: Remember the option was set from a Vim argument. +Files: src/main.c, src/ex_cmds2.c, src/vim.h + +Patch 6.2.086 +Problem: "{" and "}" stop inside a closed fold. +Solution: Only stop once inside a closed fold. (Stephen Riehm) +Files: src/search.c + +Patch 6.2.087 +Problem: CTRL-^ doesn't use the 'confirm' option. Same problem with + ":bnext". (Yakov Lerner) +Solution: Put up a dialog for a changed file when 'confirm' is set in more + situations. +Files: src/buffer.c, src/ex_cmds.c + +Patch 6.2.088 +Problem: When 'sidescrolloff' is set 'showmatch' doesn't work correctly if + the match is less than 'sidescrolloff' off from the side of the + window. (Roland Stahn) +Solution: Set 'sidescrolloff' to zero while displaying the match. +Files: src/search.c + +Patch 6.2.089 +Problem: ":set isk+=" adds a comma. (Mark Waggoner) +Solution: Don't add a comma when the added value is empty. +Files: src/option.c + +Patch 6.2.090 (extra) +Problem: Win32: MingW compiler complains about #pragmas. (Bill McCarthy) +Solution: Put an #ifdef around the #pragmas. +Files: src/os_win32.c + +Patch 6.2.091 +Problem: When an autocommand is triggered when a file is dropped on Vim and + it produces output, messages from a following command may be + scrolled unexpectedly. (David Rennalls) +Solution: Save and restore msg_scroll in handle_drop(). +Files: src/ex_docmd.c + +Patch 6.2.092 +Problem: Invalid items appear in the help file tags. (Antonio Colombo) +Solution: Only accept tags with white space before the first "*". +Files: runtime/doc/doctags.c, src/ex_cmds.c + +Patch 6.2.093 +Problem: ":nnoremenu" also defines menu for Visual mode. (Klaus Bosau) +Solution: Check the second command character for an "o", not the third. +Files: src/menu.c + +Patch 6.2.094 +Problem: Can't compile with GTK and tiny features. +Solution: Include handle_drop() and vim_chdirfile() when FEAT_DND is defined. + Do not try to split the window. +Files: src/ex_docmd.c, src/misc2.c + +Patch 6.2.095 +Problem: The message "Cannot go to buffer x" is confusing for ":buf 6". + (Frans Englich) +Solution: Make it "Buffer x does not exist". +Files: src/buffer.c + +Patch 6.2.096 +Problem: Win32: ":let @* = ''" put a newline on the clipboard. (Klaus + Bosau) +Solution: Put zero bytes on the clipboard for an empty string. +Files: src/ops.c + +Patch 6.2.097 +Problem: Setting or resetting 'insertmode' in a BufEnter autocommand + doesn't always have immediate effect. (Nagger) +Solution: When 'insertmode' is set, set need_start_insertmode, when it's + reset set stop_insert_mode. +Files: src/option.c + +Patch 6.2.098 (after 6.2.097) +Problem: Can't build Vim with tiny features. (Christian J. Robinson) +Solution: Declare stop_insert_mode always. +Files: src/edit.c, src/globals.h + +Patch 6.2.099 (extra) +Problem: Test 49 fails. (Mikolaj Machowski) +Solution: The Polish translation must not change "E116" to "R116". +Files: src/po/pl.po + +Patch 6.2.100 +Problem: "make proto" fails when compiled with the Perl interface. +Solution: Remove "-fno.*" from PERL_CFLAGS, cproto sees it as its option. +Files: src/auto/configure, src/configure.in + +Patch 6.2.101 +Problem: When using syntax folding, opening a file slows down a lot when + it's size increases by only 20%. (Gary Johnson) +Solution: The array with cached syntax states is leaking entries. After + cleaning up the list obtain the current entry again. +Files: src/syntax.c + +Patch 6.2.102 +Problem: The macros equal() and CR conflict with a Carbon header file. +Solution: Rename equal() to equalpos(). Rename CR to CAR. + Do this in the non-extra files only. +Files: src/ascii.h, src/buffer.c, src/charset.c, src/edit.c, src/eval.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_getln.c, src/fileio.c, + src/getchar.c, src/gui.c, src/gui_athena.c, src/gui_gtk_x11.c, + src/gui_motif.c, src/macros.h, src/mark.c, src/message.c, + src/misc1.c, src/misc2.c, src/normal.c, src/ops.c, src/os_unix.c, + src/regexp.c, src/search.c, src/ui.c, src/workshop.c + +Patch 6.2.103 (extra) +Problem: The macros equal() and CR conflict with a Carbon header file. +Solution: Rename equal() to equalpos(). Rename CR to CAR. + Do this in the extra files only. +Files: src/gui_photon.c, src/gui_w48.c + +Patch 6.2.104 +Problem: Unmatched braces in the table with options. +Solution: Move the "}," outside of the #ifdef. (Yakov Lerner) +Files: src/option.c + +Patch 6.2.105 +Problem: When the cursor is past the end of the line when calling + get_c_indent() a crash might occur. +Solution: Don't look past the end of the line. (NJ Verenini) +Files: src/misc1.c + +Patch 6.2.106 +Problem: Tag searching gets stuck on a very long line in the tags file. +Solution: When skipping back to search the first matching tag remember the + offset where searching started looking for a line break. +Files: src/tag.c + +Patch 6.2.107 (extra) +Problem: The NetBeans interface cannot be used on Win32. +Solution: Add support for the NetBeans for Win32. Add support for reading + XPM files on Win32. Also fixes that a sign icon with a space in + the file name did not work through the NetBeans interface. + (Sergey Khorev) + Also: avoid repeating error messages when the connection is lost. +Files: Makefile, runtime/doc/netbeans.txt, src/Make_bc5.mak, + src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, + src/bigvim.bat, src/feature.h, src/gui_beval.c, src/gui_beval.h, + src/gui_w32.c, src/gui_w48.c, src/menu.c, src/nbdebug.c, + src/nbdebug.h, src/netbeans.c, src/os_mswin.c, src/os_win32.h, + src/proto/gui_beval.pro, src/proto/gui_w32.pro, + src/proto/netbeans.pro, src/proto.h, src/version.c, src/vim.h, + src/xpm_w32.c, src/xpm_w32.h + +Patch 6.2.108 +Problem: Crash when giving a message about ignoring case in a tag. (Manfred + Kuehn) +Solution: Use a longer buffer for the message. +Files: src/tag.c + +Patch 6.2.109 +Problem: Compiler warnings with various Amiga compilers. +Solution: Add typecast, prototypes, et al. that are also useful for other + systems. (Flavio Stanchina) +Files: src/eval.c, src/ops.c + +Patch 6.2.110 +Problem: When $LANG includes the encoding, a menu without an encoding name + is not found. +Solution: Also look for a menu file without any encoding. +Files: runtime/menu.vim + +Patch 6.2.111 +Problem: Encoding "cp1251" is not recognized. +Solution: Add "cp1251" to the table of encodings. (Alexey Froloff) +Files: src/mbyte.c + +Patch 6.2.112 +Problem: After applying patches test32 fails. (Antonio Colombo) +Solution: Have "make clean" in the testdir delete *.rej and *.orig files. + Use this when doing "make clean" in the src directory. +Files: src/Makefile, src/testdir/Makefile + +Patch 6.2.113 +Problem: Using ":startinsert" after "$" works like "a" instead of "i". + (Ajit Thakkar) +Solution: Reset "w_curswant" for ":startinsert" and reset o_eol in edit(). +Files: src/edit.c, src/ex_docmd.c + +Patch 6.2.114 +Problem: When stdout is piped through "tee", the size of the screen may not + be correct. +Solution: Use stdin instead of stdout for ioctl() when stdin is a tty and + stdout isn't. +Files: src/os_unix.c + +Patch 6.2.115 (extra) +Problem: Compiler warnings with various Amiga compilers. +Solution: Add typecast, prototypes, et al. Those changes that are + Amiga-specific. (Flavio Stanchina) +Files: src/fileio.c, src/memfile.c, src/os_amiga.c, src/os_amiga.h, + src/vim.h + +Patch 6.2.116 (extra) +Problem: German keyboard with Numlock set different from system startup + causes problems. +Solution: Ignore keys with code 0xff. (Helmut Stiegler) +Files: src/gui_w48.c + +Patch 6.2.117 +Problem: Breakpoints in loops of sourced files and functions are not + detected. (Hari Krishna Dara) +Solution: Check for breakpoints when using lines that were previously read. + (Servatius Brandt) +Files: src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/proto/eval.pro, + src/proto/ex_cmds2.pro + +Patch 6.2.118 (extra) +Problem: Mac: Compiling is done in a non-standard way. +Solution: Use the Unix method for Mac OS X, with autoconf. Add "CARBONGUI" + to Makefile and configure. (Eric Kow) + Move a few prototypes from os_mac.pro to gui_mac.pro. +Files: src/Makefile, src/auto/configure, src/configure.in, + src/config.mk.in, src/gui_mac.c, src/os_mac.h, src/os_macosx.c, + src/proto/gui_mac.pro, src/proto/os_mac.pro, + src/infplist.xml, src/vim.h + +Patch 6.2.119 (after 6.2.107) +Problem: When packing the MS-Windows archives a few files are missing. + (Guopeng Wen) +Solution: Add gui_beval.* to the list of generic source files. +Files: Makefile + +Patch 6.2.120 +Problem: Win32 GUI: The console dialogs are not supported on MS-Windows, + disabling the 'c' flag of 'guioptions'. (Servatius Brandt) +Solution: Define FEAT_CON_DIALOG also for GUI-only builds. +Files: src/feature.h + +Patch 6.2.121 (after 6.2.118) +Problem: Not all make programs support "+=". (Charles Campbell) +Solution: Use a normal assignment. +Files: src/Makefile + +Patch 6.2.122 (after 6.2.119) +Problem: Not all shells can expand [^~]. File missing. (Guopeng Wen) +Solution: Use a simpler pattern. Add the Aap recipe for the maze program + and a clean version of the source code. +Files: Makefile, runtime/macros/maze/Makefile, + runtime/macros/maze/README.txt, runtime/macros/maze/main.aap, + runtime/macros/maze/mazeclean.c + +Patch 6.2.123 (after 6.2.118) +Problem: Running configure fails. (Tony Leneis) +Solution: Change "==" to "=" for a test. +Files: src/auto/configure, src/configure.in + +Patch 6.2.124 (after 6.2.121)(extra) +Problem: Mac: Recursive use of M4FLAGS causes problems. When running Vim + directly it can't find the runtime files. (Emily Jackson) + Using GNU constructs causes warnings with other make programs. + (Ronald Schild) +Solution: Use another name for the M4FLAGS variable. + Don't remove "Vim.app" from the path. + Update the explanation for compiling on the Mac. (Eric Kow) + Don't use $(shell ) and $(addprefix ). +Files: src/INSTALLmac.txt, src/Makefile, src/misc1.c + +Patch 6.2.125 (after 6.2.107) +Problem: The "winsock2.h" file isn't always available. +Solution: Don't include this header file. +Files: src/netbeans.c + +Patch 6.2.126 +Problem: Typing CTRL-C at a confirm() prompt doesn't throw an exception. +Solution: Reset "mapped_ctrl_c" in get_keystroke(), so that "got_int" is set + in _OnChar(). +Files: src/misc1.c + +Patch 6.2.127 (extra) +Problem: Win32 console: Typing CTRL-C doesn't throw an exception. +Solution: Set got_int immediately when CTRL-C is typed, don't wait for + mch_breakcheck() being called. +Files: src/os_win32.c + +Patch 6.2.128 (after 6.2.118) +Problem: src/auto/configure is not consistent with src/configure.in. +Solution: Use the newly generated configure script. +Files: src/auto/configure + +Patch 6.2.129 +Problem: When 'number' is set 'wrapmargin' does not work Vi-compatible. + (Yasuhiro Matsumoto) +Solution: Reduce the textwidth when 'number' is set. Also for 'foldcolumn' + and similar things. +Files: src/edit.c + +Patch 6.2.130 (extra) +Problem: Win32 console: When 'restorescreen' is not set exiting Vim causes + the screen to be cleared. (Michael A. Mangino) +Solution: Don't clear the screen when exiting and 'restorescreen' isn't set. +Files: src/os_win32.c + +Patch 6.2.131 (extra) +Problem: Win32: Font handles are leaked. +Solution: Free italic, bold and bold-italic handles before overwriting them. + (Michael Wookey) +Files: src/gui_w48.c + +Patch 6.2.132 (extra) +Problem: Win32: console version doesn't work on latest Windows Server 2003. +Solution: Copy 12000 instead of 15000 cells at a time to avoid running out + of memory. +Files: src/os_win32.c + +Patch 6.2.133 +Problem: When starting the GUI a bogus error message about 'imactivatekey' + may be given. +Solution: Only check the value of 'imactivatekey' when the GUI is running. +Files: src/gui.c, src/option.c + +Patch 6.2.134 (extra) +Problem: Win32: When scrolling parts of the window are redrawn when this + isn't necessary. +Solution: Only invalidate parts of the window when they are obscured by + other windows. (Michael Wookey) +Files: src/gui_w48.c + +Patch 6.2.135 +Problem: An item <> in the ":command" argument is interpreted as <args>. +Solution: Avoid that <> is recognized as <args>. +Files: src/ex_docmd.c + +Patch 6.2.136 +Problem: ":e ++enc=latin1 newfile" doesn't set 'fenc' when the file doesn't + exist. (Miroslaw Dobrzanski-Neumann) +Solution: Set 'fileencoding' to the specified encoding when editing a file + that does not exist. +Files: src/fileio.c + +Patch 6.2.137 +Problem: "d:cmd<CR>" cannot be repeated with ".". Breaks repeating "d%" + when using the matchit plugin. +Solution: Store the command to be repeated. This is restricted to + single-line commands. +Files: src/ex_docmd.c, src/globals.h, src/normal.c, src/vim.h + +Patch 6.2.138 (extra) +Problem: Compilation problem on VMS with dynamic buffer on the stack. +Solution: Read one byte less than the size of the buffer, so that we can + check for the string length without an extra buffer. +Files: src/os_vms.c + +Patch 6.2.139 +Problem: Code is repeated in the two Perl files. +Solution: Move common code from if_perl.xs and if_perlsfio.c to vim.h. + Also fix a problem with generating prototypes. +Files: src/if_perl.xs, src/if_perlsfio.c, src/vim.h + +Patch 6.2.140 (after 6.2.121) +Problem: Mac: Compiling with Python and Perl doesn't work. +Solution: Adjust the configure check for Python to use "-framework Python" + for Python 2.3 on Mac OS/X. + Move "-ldl" after "DynaLoader.a" in the link command. + Change "perllibs" to "PERL_LIBS". +Files: src/auto/configure, src/configure.in, src/config.mk.in + +Patch 6.2.141 (extra) +Problem: Mac: The b_FSSpec field is sometimes unused. +Solution: Change the #ifdef to FEAT_CW_EDITOR and defined it in feature.h +Files: src/fileio.c, src/gui_mac.c, src/structs.h, src/feature.h + +Patch 6.2.142 (after 6.2.124) +Problem: Mac: building without GUI through configure doesn't work. + When the system is slow, unpacking the resource file takes too + long. +Solution: Don't always define FEAT_GUI_MAC when MACOS is defined, define it + in the Makefile. + Add a configure option to skip Darwin detection. + Use a Python script to unpack the resources to avoid a race + condition. (Taro Muraoka) +Files: Makefile, src/Makefile, src/auto/configure, src/configure.in, + src/dehqx.py, src/vim.h + +Patch 6.2.143 +Problem: Using "K" on Visually selected text doesn't work if it ends in + a multi-byte character. +Solution: Include all the bytes of the last character. (Taro Muraoka) +Files: src/normal.c + +Patch 6.2.144 +Problem: When "g:html_use_css" is set the HTML header generated by the + 2html script is wrong. +Solution: Add the header after adding HREF for links. + Also use ":normal!" instead of ":normal" to avoid mappings + getting in the way. +Files: runtime/syntax/2html.vim + +Patch 6.2.145 (after 6.2.139) +Problem: Undefining "bool" doesn't work for older systems. (Wojtek Pilorz) +Solution: Only undefine "bool" on Mac OS. +Files: src/vim.h + +Patch 6.2.146 +Problem: On some systems the prototype for iconv() is wrong, causing a + warning message. +Solution: Use a cast (void *) to avoid the warning. (Charles Campbell) +Files: src/fileio.c, src/mbyte.c + +Patch 6.2.147 +Problem: ":s/pat/\=col('.')" always replaces with "1". +Solution: Set the cursor to the start of the match before substituting. + (Helmut Stiegler) +Files: src/ex_cmds.c + +Patch 6.2.148 +Problem: Can't break an Insert into several undoable parts. +Solution: Add the CTRL-G u command. +Files: runtime/doc/insert.txt, src/edit.c + +Patch 6.2.149 +Problem: When the cursor is on a line past 21,474,748 the indicated + percentage of the position is invalid. With that many lines + "100%" causes a negative cursor line number, resulting in a crash. + (Daniel Goujot) +Solution: Divide by 100 instead of multiplying. Avoid overflow when + computing the line number for "100%". +Files: src/buffer.c, src/ex_cmds2.c, src/normal.c + +Patch 6.2.150 +Problem: When doing "vim - < file" lines are broken at NUL chars. + (Daniel Goujot) +Solution: Change NL characters back to NUL when reading from the temp + buffer. +Files: src/fileio.c + +Patch 6.2.151 +Problem: When doing "vim --remote +startinsert file" some commands are + inserted as text. (Klaus Bosau) +Solution: Put all the init commands in one Ex line, not using a <CR>, so + that Insert mode isn't started too early. +Files: src/main.c + +Patch 6.2.152 +Problem: The cursor() function doesn't reset the column offset for + 'virtualedit'. +Solution: Reset the offset to zero. (Helmut Stiegler) +Files: src/eval.c + +Patch 6.2.153 +Problem: Win32: ":lang german" doesn't use German messages. +Solution: Add a table to translate the Win32 language names to two-letter + language codes. +Files: src/ex_cmds2.c + +Patch 6.2.154 +Problem: Python bails out when giving a warning message. (Eugene + Minkovskii) +Solution: Set sys.argv[] to an empty string. +Files: src/if_python.c + +Patch 6.2.155 +Problem: Win32: Using ":tjump www" in a help file gives two results. + (Dave Roberts) +Solution: Ignore differences between slashes and backslashes when checking + for identical tag matches. +Files: src/tag.c + +Patch 6.2.156 (after 6.2.125) +Problem: Win32: Netbeans fails to build, EINTR is not defined. +Solution: Redefine EINTR to WSAEINTR. (Mike Williams) +Files: src/netbeans.c + +Patch 6.2.157 +Problem: Using "%p" in 'errorformat' gives a column number that is too + high. +Solution: Set the flag to use the number as a virtual column. (Lefteris + Koutsoloukas) +Files: src/quickfix.c + +Patch 6.2.158 +Problem: The sed command on Solaris and HPUX doesn't work for a line that + doesn't end in a newline. +Solution: Add a newline when feeding text to sed. (Mark Waggoner) +Files: src/configure.in, src/auto/configure + +Patch 6.2.159 +Problem: When using expression folding and 'foldopen' is "undo" an undo + command doesn't always open the fold. +Solution: Save and restore the KeyTyped variable when evaluating 'foldexpr'. + (Taro Muraoka) +Files: src/fold.c + +Patch 6.2.160 +Problem: When 'virtualedit' is "all" and 'selection' is "exclusive", + selecting a double-width character below a single-width character + may cause a crash. +Solution: Avoid overflow on unsigned integer decrement. (Taro Muraoka) +Files: src/normal.c + +Patch 6.2.161 (extra) +Problem: VMS: Missing header file. Reading input busy loops. +Solution: Include termdef.h. Avoid the use of a wait function in + vms_read(). (Frank Ries) +Files: src/os_unix.h, src/os_vms.c + +Patch 6.2.162 +Problem: ":redraw" doesn't always display the text that includes the cursor + position, e.g. after ":call cursor(1, 0)". (Eugene Minkovskii) +Solution: Call update_topline() before redrawing. +Files: src/ex_docmd.c + +Patch 6.2.163 +Problem: "make install" may also copy AAPDIR directories. +Solution: Delete AAPDIR directories, just like CVS directories. +Files: src/Makefile + +Patch 6.2.164 (after 6.2.144) +Problem: When "g:html_use_css" is set the HTML header generated by the + 2html script is still wrong. +Solution: Search for a string instead of jumping to a fixed line number. + Go to the start of the line before inserting the header. + (Jess Thrysoee) +Files: runtime/syntax/2html.vim + +Patch 6.2.165 +Problem: The configure checks hang when using autoconf 2.57. +Solution: Invoke AC_PROGRAM_EGREP to set $EGREP. (Aron Griffis) +Files: src/auto/configure, src/configure.in + +Patch 6.2.166 +Problem: When $GZIP contains "-N" editing compressed files doesn't work + properly. +Solution: Add "-n" to "gzip -d" to avoid restoring the file name. (Oyvind + Holm) +Files: runtime/plugin/gzip.vim + +Patch 6.2.167 +Problem: The Python interface leaks memory when assigning lines to a + buffer. (Sergey Khorev) +Solution: Do not copy the line when calling ml_replace(). +Files: src/if_python.c + +Patch 6.2.168 +Problem: Python interface: There is no way to get the indices from a range + object. +Solution: Add the "start" and "end" attributes. (Maurice S. Barnum) +Files: src/if_python.c, runtime/doc/if_pyth.txt + +Patch 6.2.169 +Problem: The prototype for _Xmblen() appears in a recent XFree86 header + file, causing a warning for our prototype. (Hisashi T Fujinaka) +Solution: Move the prototype to an osdef file, so that it's filtered out. +Files: src/mbyte.c, src/osdef2.h.in + +Patch 6.2.170 +Problem: When using Sun WorkShop the current directory isn't changed to + where the file is. +Solution: Set the 'autochdir' option when using WorkShop. And avoid using + the basename when 'autochdir' is not set. +Files: src/gui_x11.c, src/ex_cmds.c + +Patch 6.2.171 (after 6.2.163) +Problem: The "-or" argument of "find" doesn't work for SysV systems. +Solution: Use "-o" instead. (Gordon Prieur) +Files: src/Makefile + +Patch 6.2.172 (after 6.2.169) +Problem: The prototype for _Xmblen() still causes trouble. +Solution: Include the X11 header file that defines the prototype. +Files: src/osdef2.h.in, src/osdef.sh + +Patch 6.2.173 (extra) +Problem: Win32: Ruby interface doesn't work with Ruby 1.8.0 for other + compilers than MSVC. +Solution: Fix the BC5, Cygwin and Mingw makefiles. (Dan Sharp) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak + +Patch 6.2.174 +Problem: After the ":intro" message only a mouse click in the last line + gets past the hit-return prompt. +Solution: Accept a click at or below the hit-return prompt. +Files: src/gui.c, src/message.c + +Patch 6.2.175 +Problem: Changing 'backupext' in a *WritePre autocommand doesn't work. + (William Natter) +Solution: Move the use of p_bex to after executing the *WritePre + autocommands. Also avoids reading allocated memory after freeing. +Files: src/fileio.c + +Patch 6.2.176 +Problem: Accented characters in translated help files are not handled + correctly. (Fabien Vayssiere) +Solution: Include "192-255" in 'iskeyword' for the help window. +Files: src/ex_cmds.c + +Patch 6.2.177 (extra) +Problem: VisVim: Opening a file with a space in the name doesn't work. (Rob + Retter) Arbitrary commands are being executed. (Neil Bird) +Solution: Put a backslash in front of every space in the file name. + (Gerard Blais) Terminate the CTRL-\ CTRL-N command with a NUL. +Files: src/VisVim/Commands.cpp, src/VisVim/VisVim.rc + +Patch 6.2.178 +Problem: People who don't know how to exit Vim try pressing CTRL-C. +Solution: Give a message how to exit Vim when CTRL-C is pressed and it + doesn't cancel anything. +Files: src/normal.c + +Patch 6.2.179 (extra) +Problem: The en_gb messages file isn't found on case sensitive systems. +Solution: Rename en_gb to en_GB. (Mike Williams) +Files: src/po/en_gb.po, src/po/en_GB.po, src/po/Make_ming.mak, + src/po/Make_mvc.mak, src/po/Makefile, src/po/README_mvc.txt + +Patch 6.2.180 +Problem: Compiling with GTK2 on Win32 doesn't work. +Solution: Include gdkwin32.h instead of gdkx.h. (Srinath Avadhanula) +Files: src/gui_gtk.c, src/gui_gtk_f.c, src/gui_gtk_x11.c, src/mbyte.c + +Patch 6.2.181 (after 6.2.171) +Problem: The "-o" argument of "find" has lower priority than the implied + "and" with "-print". +Solution: Add parenthesis around the "-o" expression. (Gordon Prieur) +Files: src/Makefile + +Patch 6.2.182 (after 6.2.094) +Problem: Compilation with tiny features fails because of missing + get_past_head() function. +Solution: Adjust the #ifdef for get_past_head(). +Files: src/misc1.c + +Patch 6.2.183 (after 6.2.178) +Problem: Warning for char/unsigned char mixup. +Solution: Use MSG() instead of msg(). (Tony Leneis) +Files: src/normal.c + +Patch 6.2.184 +Problem: With 'formatoptions' set to "1aw" inserting text may cause the + paragraph to be ended. (Alan Schmitt) +Solution: Temporarily add an extra space to make the paragraph continue + after moving the word after the cursor to the next line. + Also format when pressing Esc. +Files: src/edit.c, src/normal.c, src/proto/edit.pro + +Patch 6.2.185 +Problem: Restoring a session with zero-height windows does not work + properly. (Charles Campbell) +Solution: Accept a zero argument to ":resize" as intended. Add a window + number argument to ":resize" to be able to set the size of other + windows, because the current window cannot be zero-height. + Fix the explorer plugin to avoid changing the window sizes. Add + the winrestcmd() function for this. +Files: runtime/doc/eval.txt, runtime/plugin/explorer.vim, src/eval.c, + src/ex_cmds.h, src/ex_docmd.c, src/proto/window.pro, src/window.c + +Patch 6.2.186 (after 6.2.185) +Problem: Documentation file eval.txt contains examples without indent. +Solution: Insert the indent. Also fix other mistakes. +Files: runtime/doc/eval.txt + +Patch 6.2.187 +Problem: Using Insure++ reveals a number of bugs. (Dominique Pelle) +Solution: Initialize variables where needed. Free allocated memory to avoid + leaks. Fix comparing tags to avoid reading past allocated memory. +Files: src/buffer.c, src/diff.c, src/fileio.c, src/mark.c, src/misc1.c, + src/misc2.c, src/ops.c, src/option.c, src/tag.c, src/ui.c + +Patch 6.2.188 (extra) +Problem: MS-Windows: Multi-byte characters in a filename cause trouble for + the window title. +Solution: Return when the wide function for setting the title did its work. +Files: src/gui_w48.c + +Patch 6.2.189 +Problem: When setting 'viminfo' after editing a new buffer its marks are + not stored. (Keith Roberts) +Solution: Set the "b_marks_read" flag when skipping to read marks from the + viminfo file. +Files: src/fileio.c + +Patch 6.2.190 +Problem: When editing a compressed files, marks are lost. +Solution: Add the ":lockmarks" modifier and use it in the gzip plugin. + Make exists() also check for command modifiers, so that the + existence of ":lockmarks" can be checked for. + Also add ":keepmarks" to avoid that marks are deleted when + filtering text. + When deleting lines put marks 'A - 'Z and '0 - '9 at the first + deleted line instead of clearing the mark. They were kept in the + viminfo file anyway. + Avoid that the gzip plugin puts deleted text in registers. +Files: runtime/doc/motion.txt, runtime/plugin/gzip.vim, src/ex_cmds.c, + src/ex_docmd.c, src/mark.c, src/structs.h + +Patch 6.2.191 +Problem: The intro message is outdated. Information about sponsoring and + registering is missing. +Solution: Show info about sponsoring and registering Vim in the intro + message now and then. Add help file about sponsoring. +Files: runtime/doc/help.txt, runtime/doc/sponsor.txt, runtime/doc/tags, + runtime/menu.vim, src/version.c + +Patch 6.2.192 +Problem: Using CTRL-T and CTRL-D with "gR" messes up the text. (Jonathan + Hankins) +Solution: Avoid calling change_indent() recursively. +Files: src/edit.c + +Patch 6.2.193 +Problem: When recalling a search pattern from the history from a ":s,a/c," + command the '/' ends the search string. (JC van Winkel) +Solution: Store the separator character with the history entries. Escape + characters when needed, replace the old separator with the new one. + Also fixes that recalling a "/" search for a "?" command messes up + trailing flags. +Files: src/eval.c, src/ex_getln.c, src/normal.c, src/proto/ex_getln.pro, + src/search.c, src/tag.c + +Patch 6.2.194 (after 6.2.068) +Problem: For NetBeans, instead of writing the file and sending an event + about it, tell NetBeans to write the file. +Solution: Add the "save" command, "netbeansBuffer" command and + "buttonRelease" event to the netbeans protocol. Updated the + interface to version 2.2. (Gordon Prieur) + Also: open a fold when the cursor has been positioned. + Also: fix memory leak, free result of nb_quote(). +Files: runtime/doc/netbeans.txt, src/fileio.c, src/netbeans.c, + src/normal.c, src/proto/netbeans.pro, src/structs.h + +Patch 6.2.195 (after 6.2.190) +Problem: Compiling fails for missing CPO_REMMARK symbol. +Solution: Add the patch I forgot to include... +Files: src/option.h + +Patch 6.2.196 (after 6.2.191) +Problem: Rebuilding the documentation doesn't use the sponsor.txt file. +Solution: Add sponsor.txt to the Makefile. (Christian J. Robinson) +Files: runtime/doc/Makefile + +Patch 6.2.197 +Problem: It is not possible to force a redraw of status lines. (Gary + Johnson) +Solution: Add the ":redrawstatus" command. +Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c, + src/screen.c + +Patch 6.2.198 +Problem: A few messages are not translated. (Ernest Adrogue) +Solution: Mark the messages to be translated. +Files: src/ex_cmds.c + +Patch 6.2.199 (after 6.2.194) +Problem: Vim doesn't work perfectly well with NetBeans. +Solution: When NetBeans saves the file, reset the timestamp to avoid "file + changed" warnings. Close a buffer in a proper way. Don't try + giving a debug message with an invalid pointer. Send a + newDotAndMark message when needed. Report a change by the "r" + command to NetBeans. (Gordon Prieur) +Files: src/netbeans.c, src/normal.c + +Patch 6.2.200 +Problem: When recovering a file, 'fileformat' is always the default, thus + writing the file may result in differences. (Penelope Fudd) +Solution: Before recovering the file try reading the original file to obtain + the values of 'fileformat', 'fileencoding', etc. +Files: src/memline.c + +Patch 6.2.201 +Problem: When 'autowriteall' is set ":qall" still refuses to exit if there + is a modified buffer. (Antoine Mechelynck) +Solution: Attempt writing modified buffers as intended. +Files: src/ex_cmds2.c + +Patch 6.2.202 +Problem: Filetype names of CHILL and ch script are confusing. +Solution: Rename "ch" to "chill" and "chscript" to "ch". +Files: runtime/filetype.vim, runtime/makemenu.vim, runtime/synmenu.vim + runtime/syntax/ch.vim, runtime/syntax/chill.vim + +Patch 6.2.203 +Problem: With characterwise text that has more than one line, "3P" works + wrong. "3p" has the same problem. There also is a display + problem. (Daniel Goujot) +Solution: Perform characterwise puts with a count in the right position. +Files: src/ops.c + +Patch 6.2.204 (after 6.2.086) +Problem: "]]" in a file with closed folds moves to the end of the file. + (Nam SungHyun) +Solution: Find one position in each closed fold, then move to after the fold. +Files: src/search.c + +Patch 6.2.205 (extra) +Problem: MS-Windows: When the taskbar is at the left or top of the screen, + the Vim window placement is wrong. +Solution: Compute the size and position of the window correctly. (Taro + Muraoka) +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.2.206 +Problem: Multi-byte characters cannot be used as hotkeys in a console + dialog. (Mattias Erkisson) +Solution: Handle multi-byte characters properly. Also put () or [] around + default hotkeys. +Files: src/message.c, src/macros.h + +Patch 6.2.207 +Problem: When 'encoding' is a multi-byte encoding, expanding an + abbreviation that starts where insertion started results in + characters before the insertion to be deleted. (Xiangjiang Ma) +Solution: Stop searching leftwards for the start of the word at the position + where insertion started. +Files: src/getchar.c + +Patch 6.2.208 +Problem: When using fold markers, three lines in a row have the start + marker and deleting the first one with "dd", a nested fold is not + deleted. (Kamil Burzynski) + Using marker folding, a level 1 fold doesn't stop when it is + followed by "{{{2", starting a level 2 fold. +Solution: Don't stop updating folds at the end of a change when the nesting + level of folds is larger than the fold level. + Correctly compute the number of folds that start at "{{{2". + Also avoid a crash for a NULL pointer. +Files: src/fold.c + +Patch 6.2.209 +Problem: A bogus fold is created when using "P" while the cursor is in the + middle of a closed fold. (Kamil Burzynski) +Solution: Correct the line number where marks are modified for closed folds. +Files: src/ops.c + +Patch 6.2.210 (extra) +Problem: Mac OSX: antialiased fonts are not supported. +Solution: Add the 'antialias' option to switch on antialiasing on Mac OSX + 10.2 and later. (Peter Cucka) +Files: runtime/doc/options.txt, src/gui_mac.c, src/option.h, src/option.c + +Patch 6.2.211 (extra) +Problem: Code for handling file dropped on Vim is duplicated. +Solution: Move the common code to gui_handle_drop(). + Add code to drop the files in the window under the cursor. + Support drag&drop on the Macintosh. (Taro Muraoka) + When dropping a directory name edit that directory (using the + explorer plugin) + Fix that changing directory with Shift pressed didn't work for + relative path names. +Files: src/fileio.c, src/gui.c, src/gui_gtk_x11.c, src/gui_mac.c, + src/gui_w48.c, src/proto/fileio.pro, src/proto/gui.pro + +Patch 6.2.212 (after 6.2.199) +Problem: NetBeans: Replacing with a count is not handled correctly. +Solution: Move reporting the change outside of the loop for the count. + (Gordon Prieur) +Files: src/normal.c + +Patch 6.2.213 (after 6.2.208) +Problem: Using marker folding, "{{{1" doesn't start a new fold when already + at fold level 1. (Servatius Brandt) +Solution: Correctly compute the number of folds that start at "{{{1". +Files: src/fold.c + +Patch 6.2.214 (after 6.2.211) (extra) +Problem: Warning for an unused variable. +Solution: Delete the declaration. (Bill McCarthy) +Files: src/gui_w48.c + +Patch 6.2.215 +Problem: NetBeans: problems saving an unmodified file. +Solution: Add isNetbeansModified() function. Disable netbeans_unmodified(). + (Gordon Prieur) +Files: src/fileio.c, src/netbeans.c, src/proto/netbeans.pro, + runtime/doc/netbeans.txt, runtime/doc/tags + +Patch 6.2.216 (after 6.2.206) +Problem: Multi-byte characters still cannot be used as hotkeys in a console + dialog. (Mattias Erkisson) +Solution: Make get_keystroke() handle multi-byte characters. +Files: src/misc1.c + +Patch 6.2.217 +Problem: GTK: setting the title doesn't always work correctly. +Solution: Invoke gui_mch_settitle(). (Tomas Stehlik) +Files: src/os_unix.c + +Patch 6.2.218 +Problem: Warning for function without prototype. +Solution: Add argument types to the msgCB field of the BalloonEval struct. +Files: src/gui_beval.h + +Patch 6.2.219 +Problem: Syntax highlighting hangs on an empty match of an item with a + nextgroup. (Charles Campbell) +Solution: Remember that the item has already matched and don't match it + again at the same position. +Files: src/syntax.c + +Patch 6.2.220 +Problem: When a Vim server runs in a console a remote command isn't handled + before a key is typed. (Joshua Neuheisel) +Solution: Don't try reading more input when a client-server command has been + received. +Files: src/os_unix.c + +Patch 6.2.221 +Problem: No file name completion for ":cscope add". +Solution: Add the XFILE flag to ":cscope". (Gary Johnson) +Files: src/ex_cmds.h + +Patch 6.2.222 +Problem: Using "--remote" several times on a row only opens some of the + files. (Dany St-Amant) +Solution: Don't delete all typeahead when the server receives a command from + a client, only delete typed characters. +Files: src/main.c + +Patch 6.2.223 +Problem: Cscope: Avoid a hang when cscope waits for a response while Vim + waits for a prompt. + Error messages from Cscope mess up the display. +Solution: Detect the hit-enter message and respond by sending a return + character to cscope. (Gary Johnson) + Use EMSG() and strerror() when possible. Replace perror() with + PERROR() everywhere, add emsg3(). +Files: src/diff.c, src/if_cscope.c, src/integration.c, src/message.c, + src/proto/message.pro, src/misc2.c, src/netbeans.c, src/vim.h + +Patch 6.2.224 +Problem: Mac: Can't compile with small features. (Axel Kielhorn) +Solution: Also include vim_chdirfile() when compiling for the Mac. +Files: src/misc2.c + +Patch 6.2.225 +Problem: NetBeans: Reported modified state isn't exactly right. +Solution: Report a file being modified in the NetBeans way. +Files: src/netbeans.c + +Patch 6.2.226 (after 6.2.107) (extra) +Problem: The "ws2-32.lib" file isn't always available. +Solution: Use "WSock32.lib" instead. (Taro Muraoka, Dan Sharp) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak + +Patch 6.2.227 (extra) +Problem: The "PC" symbol is defined but not used anywhere. +Solution: Remove "-DPC" from the makefiles. +Files: src/Make_bc3.mak, src/Make_bc5.mak, src/Make_cyg.mak, + src/Make_ming.mak + +Patch 6.2.228 +Problem: Receiving CTRL-\ CTRL-N after typing "f" or "m" doesn't switch Vim + back to Normal mode. Same for CTRL-\ CTRL-G. +Solution: Check if the character typed after a command is CTRL-\ and obtain + another character to check for CTRL-N or CTRL-G, waiting up to + 'ttimeoutlen' msec. +Files: src/normal.c + +Patch 6.2.229 +Problem: ":function" with a name that uses magic curlies does not work + inside a function. (Servatius Brandt) +Solution: Skip over the function name properly. +Files: src/eval.c + +Patch 6.2.230 (extra) +Problem: Win32: a complex pattern may cause a crash. +Solution: Use __try and __except to catch the exception and handle it + gracefully, when possible. Add myresetstkoflw() to reset the + stack overflow. (Benjamin Peterson) +Files: src/Make_bc5.mak, src/os_mswin.c src/os_win32.c, src/os_win32.h, + src/proto/os_win32.pro, src/regexp.c + +Patch 6.2.231 (after 6.2.046) +Problem: Various problems when an error exception is raised from within a + builtin function. When it is invoked while evaluating arguments + to a function following arguments are still evaluated. When + invoked with a line range it will be called for remaining lines. +Solution: Update "force_abort" also after calling a builtin function, so + that aborting() always returns the correct value. (Servatius + Brandt) +Files: src/eval.c, src/ex_eval.c, src/proto/ex_eval.pro, + src/testdir/test49.ok, src/testdir/test49.vim + +Patch 6.2.232 +Problem: ":python vim.command('python print 2*2')" crashes Vim. (Eugene + Minkovskii) +Solution: Disallow executing a Python command recursively and give an error + message. +Files: src/if_python.c + +Patch 6.2.233 +Problem: On Mac OSX adding -pthread for Python only generates a warning. + The test for Perl threads rejects Perl while it's OK. + Tcl doesn't work at all. + The test for Ruby fails if ruby exists but there are no header + files. The Ruby library isn't detected properly +Solution: Avoid adding -pthread on Mac OSX. Accept Perl threads when it's + not the 5.5 threads. + Use the Tcl framework for header files. For Ruby rename cWindow + to cVimWindow to avoid a name clash. (Ken Scott) + Only enable Ruby when the header files can be found. Use "-lruby" + instead of "libruby.a" when it can't be found. +Files: src/auto/configure, src/configure.in, src/if_ruby.c + +Patch 6.2.234 +Problem: GTK 2 GUI: ":sp" and the ":q" leaves the cursor on the command + line. +Solution: Flush output before removing scrollbars. Also do this in other + places where gui_mch_*() functions are invoked. +Files: src/ex_cmds.c, src/option.c, src/window.c + +Patch 6.2.235 (extra) +Problem: Win32: Cursor isn't removed with a 25x80 window and doing: + "1830ia<Esc>400a-<Esc>0w0". (Yasuhiro Matsumoto) +Solution: Remove the call to gui_undraw_cursor() from gui_mch_insert_lines(). +Files: src/gui_w48.c + +Patch 6.2.236 +Problem: Using gvim with Agide gives "connection lost" error messages. +Solution: Only give the "connection lost" message when the buffer was once + owned by NetBeans. +Files: src/netbeans.c, src/structs.h + +Patch 6.2.237 +Problem: GTK 2: Thai text is drawn wrong. It changes when moving the + cursor over it. +Solution: Disable the shaping engine, it moves combining characters to a + wrong position and combines characters, while drawing the cursor + doesn't combine characters. +Files: src/gui_gtk_x11.c + +Patch 6.2.238 (after 6.2.231) +Problem: ":function" does not work inside a while loop. (Servatius Brandt) +Solution: Add get_while_line() and pass it to do_one_cmd() when in a while + loop, so that all lines are stored and can be used again when + repeating the loop. + Adjust test 49 so that it checks for the fixed problems. + (Servatius Brandt) +Files: src/digraph.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro, + src/testdir/test49.in, src/testdir/test49.ok, + src/testdir/test49.vim + +Patch 6.2.239 +Problem: GTK 2: With closed folds the arrow buttons of a vertical scrollbar + often doesn't scroll. (Moshe Kaminsky) +Solution: Hackish solution: Detect that the button was pressed from the + mouse pointer position. +Files: src/gui_gtk.c, src/gui.c + +Patch 6.2.240 +Problem: GTK 2: Searching for bitmaps for the toolbar doesn't work as with + other systems. Need to explicitly use "icon=name". (Ned Konz, + Christian J. Robinson) +Solution: Search for icons like done for Motif. +Files: src/gui_gtk.c + +Patch 6.2.241 +Problem: GTK 2: Search and Search/Replace dialogs are synced, that makes no + sense. Buttons are sometimes greyed-out. (Jeremy Messenger) +Solution: Remove the code to sync the two dialogs. Adjust the code to react + to an empty search string to also work for GTK2. (David Necas) +Files: src/gui_gtk.c + +Patch 6.2.242 +Problem: Gnome: "vim --help" only shows the Gnome arguments, not the Vim + arguments. +Solution: Don't let the Gnome code remove the "--help" argument and don't + exit at the end of usage(). +Files: src/gui_gtk_x11.c, src/main.c + +Patch 6.2.243 (extra) +Problem: Mac: Dropping a file on a Vim icon causes a hit-enter prompt. +Solution: Move the dropped files to the global argument list, instead of the + usual drop handling. (Eckehard Berns) +Files: src/main.c, src/gui_mac.c + +Patch 6.2.244 +Problem: ':echo "\xf7"' displays the illegal byte as if it was a character + and leaves "cho" after it. +Solution: When checking the length of a UTF-8 byte sequence and it's shorter + than the number of bytes available, assume it's an illegal byte. +Files: src/mbyte.c + +Patch 6.2.245 +Problem: Completion doesn't work for ":keepmarks" and ":lockmarks". +Solution: Add the command modifiers to the table of commands. (Madoka + Machitani) +Files: src/ex_cmds.h, src/ex_docmd.c + +Patch 6.2.246 +Problem: Mac: Starting Vim from Finder doesn't show error messages. +Solution: Recognize that output is being displayed by stderr being + "/dev/console". (Eckehard Berns) +Files: src/main.c, src/message.c + +Patch 6.2.247 (after 6.2.193) +Problem: When using a search pattern from the viminfo file the last + character is replaced with a '/'. +Solution: Store the separator character in the right place. (Kelvin Lee) +Files: src/ex_getln.c + +Patch 6.2.248 +Problem: GTK: When XIM is enabled normal "2" and keypad "2" cannot be + distinguished. +Solution: Detect that XIM changes the keypad key to the expected ASCII + character and fall back to the non-XIM code. (Neil Bird) +Files: src/gui_gtk_x11.c, src/mbyte.c, src/proto/mbyte.pro + +Patch 6.2.249 +Problem: ":cnext" moves to the error in the next file, but there is no + method to go back. +Solution: Add ":cpfile" and ":cNfile". +Files: src/ex_cmds.h, src/quickfix.c, src/vim.h, runtime/doc/quickfix.txt + +Patch 6.2.250 +Problem: Memory leaks when using signs. (Xavier de Gaye) +Solution: Delete the list of signs when unloading a buffer. +Files: src/buffer.c + +Patch 6.2.251 +Problem: GTK: The 'v' flag in 'guioptions' doesn't work. (Steve Hall) + Order of buttons is reversed for GTK 2.2.4. Don't always get + focus back after handling a dialog. +Solution: Make buttons appear vertically when desired. Reverse the order in + which buttons are added to a dialog. Move mouse pointer around + when the dialog is done and we don't have focus. +Files: src/gui_gtk.c + +Patch 6.2.252 (extra, after 6.2.243) +Problem: Mac: Dropping a file on a Vim icon causes a hit-enter prompt for + Mac OS classic. +Solution: Remove the #ifdef from the code that fixes it for Mac OSX. +Files: src/gui_mac.c + +Patch 6.2.253 +Problem: When 'tagstack' is not set a ":tag id" command does not work after + a ":tjump" command. +Solution: Set "new_tag" when 'tagstack' isn't set. (G. Narendran) +Files: src/tag.c + +Patch 6.2.254 +Problem: May run out of space for error messages. +Solution: Keep room for two more bytes. +Files: src/quickfix.c + +Patch 6.2.255 +Problem: GTK: A new item in the popup menu is put just after instead of + just before the right item. (Gabriel Zachmann) +Solution: Don't increment the menu item index. +Files: src/gui_gtk.c + +Patch 6.2.256 +Problem: Mac: "macroman" encoding isn't recognized, need to use + "8bit-macroman". +Solution: Recognize "macroman" with an alias "mac". (Eckehard Berns) +Files: src/mbyte.c + +Patch 6.2.257 (after 6.2.250) +Problem: Signs are deleted for ":bdel", but they could still be useful. +Solution: Delete signs only for ":bwipe". +Files: src/buffer.c + +Patch 6.2.258 +Problem: GUI: can't disable (grey-out) a popup menu item. (Ajit Thakkar) +Solution: Loop over the popup menus for all modes. +Files: src/menu.c + +Patch 6.2.259 +Problem: If there are messages when exiting, on the console there is a + hit-enter prompt while the message can be read; in the GUI the + message may not be visible. +Solution: Use the hit-enter prompt when there is an error message from + writing the viminfo file or autocommands, or when there is any + output in the GUI and 'verbose' is set. Don't use a hit-enter + prompt for the non-GUI version unless there is an error message. +Files: src/main.c + +Patch 6.2.260 +Problem: GTK 2: Can't quit a dialog with <Esc>. + GTK 1 and 2: <Enter> always gives a result, even when the default + button has been disabled. +Solution: Handle these keys explicitly. When no default button is specified + use the first one (works mostly like it was before). +Files: src/gui_gtk.c + +Patch 6.2.261 +Problem: When 'autoindent' and 'cindent' are set and a line is recognized + as a comment, starting a new line won't do 'cindent' formatting. +Solution: Also use 'cindent' formatting for lines that are used as a + comment. (Servatius Brandt) +Files: src/misc1.c + +Patch 6.2.262 +Problem: 1 CTRL-W w beeps, even though going to the first window is + possible. (Charles Campbell) +Solution: Don't beep. +Files: src/window.c + +Patch 6.2.263 +Problem: Lint warnings: Duplicate function prototypes, duplicate macros, + use of a zero character instead of a zero pointer, unused + variable. Clearing allocated memory in a complicated way. +Solution: Remove the function prototypes from farsi.h. Remove the + duplicated lines in keymap.h. Change getvcol() argument from NUL + to NULL. Remove the "col" variable in regmatch(). Use + lalloc_clear() instead of lalloc(). (Walter Briscoe) +Files: src/farsi.h, src/keymap.h, src/ops.c, src/regexp.c, src/search.c + +Patch 6.2.264 (after 6.2.247) +Problem: Writing past allocated memory when using a command line from the + viminfo file. +Solution: Store the NUL in the right place. +Files: src/ex_getln.c + +Patch 6.2.265 +Problem: Although ":set" is not allowed in the sandbox, ":let &opt = val" + works. +Solution: Do allow changing options in the sandbox, but not the ones that + can't be changed from a modeline. +Files: src/ex_cmds.h, src/options.c + +Patch 6.2.266 +Problem: When redirecting output and using ":silent", line breaks are + missing from output of ":map" and ":tselect". Alignment of + columns is wrong. +Solution: Insert a line break where "msg_didout" was tested. Update msg_col + when redirecting and using ":silent". +Files: src/getchar.c, src/message.c + +Patch 6.2.267 (extra) +Problem: Win32: "&&" in a tearoff menu is not shown. (Luc Hermitte) +Solution: Use the "name" item from the menu instead of the "dname" item. +Files: src/gui_w32.c, src/menu.c + +Patch 6.2.268 +Problem: GUI: When changing 'guioptions' part of the window may be off + screen. (Randall Morris) +Solution: Adjust the size of the window when changing 'guioptions', but only + when adding something. +Files: src/gui.c + +Patch 6.2.269 +Problem: Diff mode does not highlight a change in a combining character. + (Raphael Finkel) +Solution: Make diff_find_change() multi-byte aware: find the start byte of + a character that contains a change. +Files: src/diff.c + +Patch 6.2.270 +Problem: Completion in Insert mode, then repeating with ".", doesn't handle + composing characters in the completed text. (Raphael Finkel) +Solution: Don't skip over composing chars when adding completed text to the + redo buffer. +Files: src/getchar.c + +Patch 6.2.271 +Problem: NetBeans: Can't do "tail -f" on the log. Passing socket info with + an argument or environment variable is not secure. +Solution: Wait after initializing the log. Allow passing the socket info + through a file. (Gordon Prieur) +Files: runtime/doc/netbeans.txt, src/main.c, src/netbeans.c + +Patch 6.2.272 +Problem: When the "po" directory exists, but "po/Makefile" doesn't, + building fails. Make loops when the "po" directory has been + deleted after running configure. +Solution: Check for the "po/Makefile" instead of just the "po" directory. + Check this again before trying to run make with that Makefile. +Files: src/auto/configure, src/configure.in, src/Makefile + +Patch 6.2.273 +Problem: Changing the sort order in an explorer window for an empty + directory produces error messages. (Doug Kearns) +Solution: When an invalid range is used for a function that is not going to + be executed, skip over the arguments anyway. +Files: src/eval.c + +Patch 6.2.274 +Problem: ":print" skips empty lines when 'list' is set and there is no + "eol" in 'listchars'. (Yakov Lerner) +Solution: Skip outputting a space for an empty line only when 'list' is set + and the end-of-line character is not empty. +Files: src/message.c + +Patch 6.2.275 (extra, after 6.2.267) +Problem: Warning for uninitialized variable when using gcc. +Solution: Initialize "acLen" to zero. (Bill McCarthy) +Files: src/gui_w32.c + +Patch 6.2.276 +Problem: ":echo X()" does not put a line break between the message that X() + displays and the text that X() returns. (Yakov Lerner) +Solution: Invoke msg_start() after evaluating the argument. +Files: src/eval.c + +Patch 6.2.277 +Problem: Vim crashes when a ":runtime ftplugin/ada.vim" causes a recursive + loop. (Robert Nowotniak) +Solution: Restore "msg_list" before returning from do_cmdline(). +Files: src/ex_docmd.c + +Patch 6.2.278 +Problem: Using "much" instead of "many". +Solution: Correct the error message. +Files: src/eval.c + +Patch 6.2.279 +Problem: There is no default choice for a confirm() dialog, now that it is + possible not to have a default choice. +Solution: Make the first choice the default choice. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.2.280 +Problem: "do" and ":diffget" don't work in the first line and the last line + of a buffer. (Aron Griffis) +Solution: Find a difference above the first line and below the last line. + Also fix a few display updating bugs. +Files: src/diff.c, src/fold.c, src/move.c + +Patch 6.2.281 +Problem: PostScript printing doesn't work on Mac OS X 10.3.2. +Solution: Adjust the header file. (Mike Williams) +Files: runtime/print/prolog.ps + +Patch 6.2.282 +Problem: When using CTRL-O to go back to a help file, it becomes listed. + (Andrew Nesbit) + Using ":tag" or ":tjump" in a help file doesn't keep the help file + settings (e.g. for 'iskeyword'). +Solution: Don't mark a buffer as listed when its help flag is set. Put all + the option settings for a help buffer together in do_ecmd(). +Files: src/ex_cmds.c + +Patch 6.2.283 +Problem: The "local additions" in help.txt are used without conversion, + causing latin1 characters showing up wrong when 'enc' is utf-8. + (Antoine J. Mechelynck) +Solution: Convert the text to 'encoding'. +Files: src/ex_cmds.c + +Patch 6.2.284 +Problem: Listing a function puts "endfunction" in the message history. + Typing "q" at the more prompt isn't handled correctly when listing + variables and functions. (Hara Krishna Dara) +Solution: Don't use msg() for "endfunction". Check "got_int" regularly. +Files: src/eval.c + +Patch 6.2.285 +Problem: GUI: In a single wrapped line that fills the window, "gj" in the + last screen line leaves the cursor behind. (Ivan Tarasov) +Solution: Undraw the cursor before scrolling the text up. +Files: src/gui.c + +Patch 6.2.286 +Problem: When trying to rename a file and it doesn't exist, the destination + file is deleted anyway. (Luc Deux) +Solution: Don't delete the destination when the source doesn't exist. (Taro + Muraoka) +Files: src/fileio.c + +Patch 6.2.287 (after 6.2.264) +Problem: Duplicate lines are added to the viminfo file. +Solution: Compare with existing entries without an offset. Also fixes + reading very long history lines from viminfo. +Files: src/ex_getln.c + +Patch 6.2.288 (extra) +Problem: Mac: An external program can't be interrupted. +Solution: Don't use the 'c' key for backspace. (Eckehard Berns) +Files: src/gui_mac.c + +Patch 6.2.289 +Problem: Compiling the Tcl interface with thread support causes ":make" to + fail. (Juergen Salk) +Solution: Use $TCL_DEFS from the Tcl config script to obtain the required + compile flags for using the thread library. +Files: src/auto/configure, src/configure.in + +Patch 6.2.290 (extra) +Problem: Mac: The mousewheel doesn't work. +Solution: Add mousewheel support. Also fix updating the thumb after a drag + and then using another way to scroll. (Eckehard Berns) +Files: src/gui_mac.c + +Patch 6.2.291 (extra) +Problem: Mac: the plus button and close button don't do anything. +Solution: Make the plus button maximize the window and the close button + close Vim. (Eckehard Berns) +Files: src/gui.c, src/gui_mac.c + +Patch 6.2.292 +Problem: Motif: When removing GUI arguments from argv[] a "ps -ef" shows + the last argument repeated. +Solution: Set argv[argc] to NULL. (Michael Jarvis) +Files: src/gui_x11.c + +Patch 6.2.293 (after 6.2.255) +Problem: GTK: A new item in a menu is put before the tearoff item. +Solution: Do increment the menu item index for non-popup menu items. +Files: src/gui_gtk.c + +Patch 6.2.294 (extra) +Problem: Mac: Cannot use modifiers with Space, Tab, Enter and Escape. +Solution: Handle all modifiers for these keys. (Eckehard Berns) +Files: src/gui_mac.c + +Patch 6.2.295 +Problem: When in debug mode, receiving a message from a remote client + causes a crash. Evaluating an expression causes Vim to wait for + "cont" to be typed, without a prompt. (Hari Krishna Dara) +Solution: Disable debugging when evaluating an expression for a client. + (Michael Geddes) Don't try reading into the typeahead buffer when + it may have been filled in another way. +Files: src/ex_getln.c, src/getchar.c, src/if_xcmdsrv.c, src/main.c, + src/misc1.c, src/proto/getchar.pro, src/proto/main.pro, + src/proto/os_unix.pro, src/proto/ui.pro, src/structs.h, + src/os_unix.c, src/ui.c + +Patch 6.2.296 (extra) +Problem: Same as 6.2.295. +Solution: Extra files for patch 6.2.295. +Files: src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_win32.c, + src/proto/os_amiga.pro, src/proto/os_msdos.pro, + src/proto/os_riscos.pro, src/proto/os_win32.pro + +Patch 6.2.297 (after 6.2.232) +Problem: Cannot invoke Python commands recursively. +Solution: With Python 2.3 and later use the available mechanisms to invoke + Python recursively. (Matthew Mueller) +Files: src/if_python.c + +Patch 6.2.298 +Problem: A change always sets the '. mark and an insert always sets the '^ + mark, even when this is not wanted. + Cannot go back to the position of older changes without undoing + those changes. +Solution: Add the ":keepjumps" command modifier. + Add the "g," and "g;" commands. +Files: runtime/doc/motion.txt, src/ex_cmds.h, src/ex_docmd.c, src/edit.c, + src/mark.c, src/misc1.c, src/normal.c, src/proto/mark.pro, + src/structs.h, src/undo.c + +Patch 6.2.299 +Problem: Can only use one language for help files. +Solution: Add the 'helplang' option to select the preferred language(s). + Make ":helptags" generate tags files for all languages. +Files: runtime/doc/options.txt, runtime/doc/various.txt, src/Makefile, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_cmds.h, src/ex_getln.c, + src/normal.c, src/option.c, src/option.h, src/proto/ex_cmds.pro, + src/proto/ex_cmds2.pro, src/proto/option.pro, src/structs.h, + src/tag.c, src/vim.h + +Patch 6.2.300 (after 6.2.297) +Problem: Cannot build Python interface with Python 2.2 or earlier. +Solution: Add a semicolon. +Files: src/if_python.c + +Patch 6.2.301 +Problem: The "select all" item from the popup menu doesn't work for Select + mode. +Solution: Use the same commands as for the "Edit.select all" menu. + (Benji Fisher) +Files: runtime/menu.vim + +Patch 6.2.302 +Problem: Using "CTRL-O ." in Insert mode doesn't work properly. (Benji + Fisher) +Solution: Restore "restart_edit" after an insert command that was not typed. + Avoid waiting with displaying the mode when there is no text to be + overwritten. + Fix that "CTRL-O ." sometimes doesn't put the cursor back after + the end-of-line. Only reset the flag that CTRL-O was used past + the end of the line when restarting editing. Update "o_lnum" + number when inserting text and "o_eol" is set. +Files: src/edit.c, src/normal.c + +Patch 6.2.303 +Problem: Cannot use Unicode digraphs while 'encoding' is not Unicode. +Solution: Convert the character from Unicode to 'encoding' when needed. + Use the Unicode digraphs for the Macintosh. (Eckehard Berns) +Files: src/digraph.c + +Patch 6.2.304 (extra, after 6.2.256) +Problem: Mac: No proper support for 'encoding'. Conversion without iconv() + is not possible. +Solution: Convert input from 'termencoding' to 'encoding'. Add + mac_string_convert(). Convert text for the clipboard when needed. + (Eckehard Berns) +Files: src/gui_mac.c, src/mbyte.c, src/structs.h, src/vim.h + +Patch 6.2.305 (after 6.2.300) +Problem: Win32: Cannot build Python interface with Python 2.3. (Ajit + Thakkar) +Solution: Add two functions to the dynamic loading feature. +Files: src/if_python.c + +Patch 6.2.306 (extra) +Problem: Win32: Building console version with BCC 5.5 gives a warning for + get_cmd_args() prototype missing. (Ajit Thakkar) +Solution: Don't build os_w32exe.c for the console version. +Files: src/Make_bc5.mak + +Patch 6.2.307 (after 6.2.299) +Problem: Installing help files fails. +Solution: Expand wildcards for translated help files separately. +Files: src/Makefile + +Patch 6.2.308 +Problem: Not all systems have "whoami", resulting in an empty user name. +Solution: Use "logname" when possible, "whoami" otherwise. (David Boyce) +Files: src/Makefile + +Patch 6.2.309 +Problem: "3grx" waits for two ESC to be typed. (Jens Paulus) +Solution: Append the ESC to the stuff buffer when redoing the "gr" insert. +Files: src/edit.c + +Patch 6.2.310 +Problem: When setting 'undolevels' to -1, making a change and setting + 'undolevels' to a positive value an "undo list corrupt" error + occurs. (Madoka Machitani) +Solution: Sync undo before changing 'undolevels'. +Files: src/option.c + +Patch 6.2.311 (after 6.2.298) +Problem: When making several changes in one line the changelist grows + quickly. There is no error message for reaching the end of the + changelist. Reading changelist marks from viminfo doesn't work + properly. +Solution: Only make a new entry in the changelist when making a change in + another line or 'textwidth' columns away. Add E662, E663 and E664 + error messages. Put a changelist mark from viminfo one position + before the end. +Files: runtime/doc/motion.txt, src/mark.c, src/misc1.c, src/normal.c + +Patch 6.2.312 (after 6.2.299) +Problem: "make install" clears the screen when installing the docs. +Solution: Execute ":helptags" in silent mode. +Files: runtime/doc/Makefile + +Patch 6.2.313 +Problem: When opening folds in a diff window, other diff windows no longer + show the same text. +Solution: Sync the folds in diff windows. +Files: src/diff.c, src/fold.c, src/move.c, src/proto/diff.pro, + src/proto/move.pro + +Patch 6.2.314 +Problem: When 'virtualedit' is set "rx" may cause a crash with a blockwise + selection and using "$". (Moritz Orbach) +Solution: Don't try replacing chars in a line that has no characters in the + block. +Files: src/ops.c + +Patch 6.2.315 +Problem: Using CTRL-C in a Visual mode mapping while 'insertmode' is set + stops Vim from returning to Insert mode. +Solution: Don't reset "restart_edit" when a CTRL-C is found and 'insertmode' + is set. +Files: src/normal.c + +Patch 6.2.316 (after 6.2.312) +Problem: "make install" tries connecting to the X server when installing + the docs. (Stephen Thomas) +Solution: Add the "-X" argument. +Files: runtime/doc/Makefile + +Patch 6.2.317 (after 6.2.313) +Problem: When using "zi" in a diff window, other diff windows are not + adjusted. (Richard Curnow) +Solution: Distribute a change in 'foldenable' to other diff windows. +Files: src/normal.c + +Patch 6.2.318 +Problem: When compiling with _THREAD_SAFE external commands don't echo + typed characters. +Solution: Don't set the terminal mode to TMODE_SLEEP when it's already at + TMODE_COOK. +Files: src/os_unix.c + +Patch 6.2.319 (extra) +Problem: Building gvimext.dll with Mingw doesn't work properly. +Solution: Use gcc instead of dllwrap. Use long option names. (Alejandro + Lopez-Valencia) +Files: src/GvimExt/Make_ming.mak + +Patch 6.2.320 +Problem: Win32: Adding and removing the menubar resizes the Vim window. + (Jonathon Merz) +Solution: Don't let a resize event change 'lines' unexpectedly. +Files: src/gui.c + +Patch 6.2.321 +Problem: When using modeless selection, wrapping lines are not recognized, + a line break is always inserted. +Solution: Add LineWraps[] to remember whether a line wrapped or not. +Files: src/globals.h, src/screen.c, src/ui.c + +Patch 6.2.322 +Problem: With 'showcmd' set, after typing "dd" the next "d" may not be + displayed. (Jens Paulus) +Solution: Redraw the command line after updating the screen, scrolling may + have set "clear_cmdline". +Files: src/screen.c + +Patch 6.2.323 +Problem: Win32: expanding "~/file" in an autocommand pattern results in + backslashes, while this pattern should only have forward slashes. +Solution: Make expanding environment variables respect 'shellslash' and set + p_ssl when expanding the autocommand pattern. +Files: src/fileio.c, src/misc1.c, src/proto/fileio.pro + +Patch 6.2.324 (extra) +Problem: Win32: when "vimrun.exe" has a path with white space, such as + "Program Files", executing external commands may fail. +Solution: Put double quotes around the path to "vimrun". +Files: src/os_win32.c + +Patch 6.2.325 +Problem: When $HOME includes a space, doing ":set tags=~/tags" doesn't + work, the space is used to separate file names. (Brett Stahlman) +Solution: Escape the space with a backslash. +Files: src/option.c + +Patch 6.2.326 +Problem: ":windo set syntax=foo" doesn't work. (Tim Chase) +Solution: Don't change 'eventignore' for ":windo". +Files: src/ex_cmds2.c + +Patch 6.2.327 +Problem: When formatting text all marks in the formatted lines are lost. + A word is not joined to a previous line when this would be + possible. (Mikolaj Machowski) +Solution: Try to keep marks in the same position as much as possible. + Also keep mark positions when joining lines. + Start auto-formatting in the previous line when appropriate. + Add the "gw" operator: Like "gq" but keep the cursor where it is. +Files: runtime/doc/change.txt, src/edit.c, src/globals.h, src/mark.c, + src/misc1.c, src/normal.c, src/ops.c, src/proto/edit.pro, + src/proto/mark.pro, src/proto/ops.pro, src/structs.h, src/vim.h + +Patch 6.2.328 +Problem: XIM with GTK: It is hard to understand what XIM is doing. +Solution: Add xim_log() to log XIM events and help with debugging. +Files: src/mbyte.c + +Patch 6.2.329 +Problem: ":=" does not work Vi compatible. (Antony Scriven) +Solution: Print the last line number instead of the current line. Don't + print "line". +Files: src/ex_cmds.h, src/ex_docmd.c + +Patch 6.2.330 (extra, after 6.2.267) +Problem: Win32: Crash when tearing off a menu. +Solution: Terminate a string with a NUL. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.2.331 (after 6.2.327) +Problem: "gwap" leaves cursor in the wrong line. +Solution: Remember the cursor position before finding the ends of the + paragraph. +Files: src/normal.c, src/ops.c, src/structs.h + +Patch 6.2.332 (extra) +Problem: Amiga: Compile error for string array. Compiling the Amiga GUI + doesn't work. +Solution: Use a char pointer instead. Move including "gui_amiga.h" to after + including "vim.h". Add a semicolon. (Ali Akcaagac) +Files: src/gui_amiga.c, src/os_amiga.c + +Patch 6.2.333 (extra) +Problem: Win32: printing doesn't work with specified font charset. +Solution: Use the specified font charset. (Mike Williams) +Files: src/os_mswin.c + +Patch 6.2.334 (extra, after 6.2.296) +Problem: Win32: evaluating client expression in debug mode requires typing + "cont". +Solution: Use eval_client_expr_to_string(). +Files: src/os_mswin.c + +Patch 6.2.335 +Problem: The ":sign" command cannot be followed by another command. +Solution: Add TRLBAR to the command flags. +Files: src/ex_cmds.h + +Patch 6.2.336 (after 6.2.327) +Problem: Mixup of items in an expression. +Solution: Move "== NUL" to the right spot. +Files: src/edit.c + +Patch 6.2.337 (extra, after 6.2.319) +Problem: Building gvimext.dll with Mingw doesn't work properly. +Solution: Fix white space and other details. (Alejandro Lopez-Valencia) +Files: src/GvimExt/Make_ming.mak + +Patch 6.2.338 (after 6.2.331) +Problem: When undoing "gwap" the cursor is always put at the start of the + paragraph. When undoing auto-formatting the cursor may be above + the change. +Solution: Try to move the cursor back to where it was or to the first line + that actually changed. +Files: src/normal.c, src/ops.c, src/undo.c + +Patch 6.2.339 +Problem: Crash when using many different highlight groups and a User + highlight group. (Juergen Kraemer) +Solution: Do not use the sg_name_u pointer when it is NULL. Also simplify + use of the highlight group table. +Files: src/syntax.c + +Patch 6.2.340 +Problem: ":reg" doesn't show the actual contents of the clipboard if it was + filled outside of Vim. (Stuart MacDonald) +Solution: Obtain the clipboard contents before displaying it. +Files: src/ops.c + +Patch 6.2.341 (extra) +Problem: Win32: When the path to diff.exe contains a space and using the + vimrc generated by the install program, diff mode does not work. +Solution: Put the first double quote just before the space instead of before + the path. +Files: src/dosinst.c + +Patch 6.2.342 (extra) +Problem: Win32: macros are not always used as expected. +Solution: Define WINVER to 0x0400 instead of 0x400. (Alejandro + Lopez-Valencia) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_mvc.mak + +Patch 6.2.343 +Problem: Title doesn't work with some window managers. X11: Setting the + text property for the window title is hard coded. +Solution: Use STRING format when possible. Use the UTF-8 function when + it's available and 'encoding' is utf-8. Use + XStringListToTextProperty(). Do the same for the icon name. + (David Harrison) +Files: src/os_unix.c + +Patch 6.2.344 (extra, after 6.2.337) +Problem: Cannot build gvimext.dll with MingW on Linux. +Solution: Add support for cross compiling. (Ronald Hoellwarth) +Files: src/GvimExt/Make_ming.mak + +Patch 6.2.345 (extra) +Problem: Win32: Copy/paste between two Vims fails if 'encoding' is not set + properly or there are illegal bytes. +Solution: Use a raw byte format. Always set it when copying. When pasting + use the raw format if 'encoding' is the same. +Files: src/os_mswin.c, src/os_win16.c, src/os_win32.c, src/vim.h + +Patch 6.2.346 +Problem: Win32 console: After using "chcp" Vim does not detect the + different codepage. +Solution: Use GetConsoleCP() and when it is different from GetACP() set + 'termencoding'. +Files: src/option.c + +Patch 6.2.347 (extra) +Problem: Win32: XP theme support is missing. +Solution: Add a manifest and refer to it from the resource file. (Michael + Wookey) +Files: Makefile, src/gvim.exe.mnf, src/vim.rc + +Patch 6.2.348 +Problem: Win32: "vim c:\dir\(test)" doesn't work, because the 'isfname' + default value doesn't contain parenthesis. +Solution: Temporarily add '(' and ')' to 'isfname' when expanding file name + arguments. +Files: src/main.c + +Patch 6.2.349 +Problem: Finding a match using 'matchpairs' may cause a crash. + 'matchpairs' is not used for 'showmatch'. +Solution: Don't look past the NUL in 'matchpairs'. Use 'matchpairs' for + 'showmatch'. (Dave Olszewkski) +Files: src/misc1.c, src/normal.c, src/proto/search.pro, src/search.c + +Patch 6.2.350 +Problem: Not enough info about startup timing. +Solution: Add a few more TIME_MSG() calls. +Files: src/main.c + +Patch 6.2.351 +Problem: Win32: $HOME may be set to %USERPROFILE%. +Solution: Expand %VAR% at the start of $HOME. +Files: src/misc1.c + +Patch 6.2.352 (after 6.2.335) +Problem: ":sign texthl=||" does not work. +Solution: Remove the check for a following command. Give an error for extra + arguments after "buff=1". +Files: src/ex_cmds.c, src/ex_cmds.h + +Patch 6.2.353 (extra) +Problem: Win32: Supported server name length is limited. (Paul Bossi) +Solution: Use MAX_PATH instead of 25. +Files: src/os_mswin.c + +Patch 6.2.354 (extra) +Problem: Win32: When the mouse pointer is on a tear-off menu it is hidden + when typing but is not redisplayed when moved. (Markx Hackmann) +Solution: Handle the pointer move event for the tear-off menu window. +Files: src/gui_w32.c + +Patch 6.2.355 (after 6.2.303) +Problem: When 'encoding' is a double-byte encoding different from the + current locale, the width of characters is not correct. + Possible failure and memory leak when using iconv, Unicode + digraphs and 'encoding' is not "utf-8". +Solution: Use iconv() to discover the actual width of characters. + Add the "vc_fail" field to vimconv_T. + When converting a digraph, init the conversion type to NONE and + cleanup afterwards. +Files: src/digraph.c, src/mbyte.c, src/structs.h + +Patch 6.2.356 +Problem: When using a double-byte 'encoding' and 'selection' is + "exclusive", "vy" only yanks the first byte of a double-byte + character. (Xiangjiang Ma) +Solution: Correct the column in unadjust_for_sel() to position on the first + byte, always include the trailing byte of the selected text. +Files: src/normal.c + +Patch 6.2.357 (after 6.2.321) +Problem: Memory leak when resizing the Vim window. +Solution: Free the LineWraps array. +Files: src/screen.c + +Patch 6.2.358 (after 6.2.299) +Problem: Memory leak when using ":help" and the language doesn't match. +Solution: Free the array with matching tags. +Files: src/ex_cmds.c + +Patch 6.2.359 (after 6.2.352) +Problem: Compiler warning for long to int type cast. +Solution: Add explicit type cast. +Files: src/ex_cmds.c + +Patch 6.2.360 +Problem: "100|" in an empty line results in a ruler "1,0-100". (Pavol + Juhas) +Solution: Recompute w_virtcol if the target column was not reached. +Files: src/misc2.c + +Patch 6.2.361 (extra) +Problem: Win32: Run gvim, ":set go-=m", use Alt-Tab, keep Alt pressed while + pressing Esc, then release Alt: Cursor disappears and typing a key + causes a beep. (Hari Krishna Dara) +Solution: Don't ignore the WM_SYSKEYUP event when the menu is disabled. +Files: src/gui_w32.c + +Patch 6.2.362 (extra, after 6.2.347) +Problem: Win32: The manifest causes Gvim not to work. (Dave Roberts) +Solution: Change "x86" to "X86". (Serge Pirotte) +Files: src/gvim.exe.mnf + +Patch 6.2.363 +Problem: In an empty file with 'showmode' off, "i" doesn't change the ruler + from "0-1" to "1". Typing "x<BS>" does show "1", but then <Esc> + doesn't make it "0-1" again. Same problem for ruler in + statusline. (Andrew Pimlott) +Solution: Remember the "empty line" flag with Insert mode and'ed to it. +Files: src/screen.c + +Patch 6.2.364 +Problem: HTML version of the documentation doesn't mention the encoding, + which is a problem for mbyte.txt. +Solution: Adjust the awk script. (Ilya Sher) +Files: runtime/doc/makehtml.awk + +Patch 6.2.365 +Problem: The configure checks for Perl and Python may add compile and link + arguments that break building Vim. +Solution: Do a sanity check: try building with the arguments. +Files: src/auto/configure, src/configure.in + +Patch 6.2.366 +Problem: When the GUI can't start because no valid font is found, there is + no error message. (Ugen) +Solution: Add an error message. +Files: src/gui.c + +Patch 6.2.367 +Problem: Building the help tags file while installing may fail if there is + another Vim in $PATH. +Solution: Specify the just installed Vim executable. (Gordon Prieur) +Files: src/Makefile + +Patch 6.2.368 +Problem: When 'autochdir' is set, closing a window doesn't change to the + directory of the new current window. (Salman Halim) +Solution: Handle 'autochdir' always when a window becomes the current one. +Files: src/window.c + +Patch 6.2.369 +Problem: Various memory leaks: when using globpath(), when searching for + help tags files, when defining a function inside a function, when + giving an error message through an exception, for the final "." + line in ":append", in expression "cond ? a : b" that fails and for + missing ")" in an expression. Using NULL pointer when adding + first user command and for pointer computations with regexp. + (tests by Dominique Pelle) +Solution: Fix the leaks by freeing the allocated memory. Don't use the + array of user commands when there are no entries. Use a macro + instead of a function call for saving and restoring regexp states. +Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, + src/misc2.c, src/regexp.c, src/screen.c, src/tag.c + +Patch 6.2.370 (extra, after6.2.341) +Problem: Win32: When the path to diff.exe contains a space and using the + vimrc generated by the install program, diff mode may not work. + (Alejandro Lopez-Valencia) +Solution: Do not use double quotes for arguments that do not have a space. +Files: src/dosinst.c + +Patch 6.2.371 +Problem: When 'virtualedit' is set and there is a Tab before the next "x", + "dtx" does not delete the whole Tab. (Ken Hashishi) +Solution: Move the cursor to the last position of the Tab. Also for + "df<Tab>". +Files: src/normal.c + +Patch 6.2.372 +Problem: When using balloon evaluation, no value is displayed for members + of structures and items of an array. +Solution: Include "->", "." and "[*]" in the expression. +Files: src/gui_beval.c, src/normal.c, src/vim.h + +Patch 6.2.373 +Problem: When 'winminheight' is zero and a window is reduced to zero + height, the ruler always says "Top" instead of the cursor + position. (Antoine J. Mechelynck) +Solution: Don't recompute w_topline for a zero-height window. +Files: src/window.c + +Patch 6.2.374 +Problem: ":echo "hello" | silent normal n" removes the "hello" message. + (Servatius Brandt) +Solution: Don't echo the search string when ":silent" was used. Also don't + show the mode. In general: don't clear to the end of the screen. +Files: src/gui.c, src/message.c, src/os_unix.c, src/proto/message.pro, + src/screen.c, src/search.c, src/window.c + +Patch 6.2.375 +Problem: When changing 'guioptions' the hit-enter prompt may be below the + end of the Vim window. +Solution: Call screen_alloc() before showing the prompt. +Files: src/message.c + +Patch 6.2.376 +Problem: Win32: Ruby interface cannot be dynamically linked with Ruby 1.6. +Solution: Add #ifdefs around use of rb_w32_snprintf(). (Benoît Cerrina) +Files: src/if_ruby.c + +Patch 6.2.377 (after 6.2.372) +Problem: Compiler warnings for signed/unsigned compare. (Michael Wookey) +Solution: Add type cast. +Files: src/normal.c + +Patch 6.2.378 (extra, after 6.2.118) +Problem: Mac: cannot build with Project Builder. +Solution: Add remove_tail_with_ext() to locate and remove the "build" + directory from the runtime path. Include os_unix.c when needed. + (Dany St Amant) +Files: src/misc1.c, src/os_macosx.c, src/vim.h + +Patch 6.2.379 +Problem: Using ":mkvimrc" in the ":options" window sets 'bufhidden' to + "delete". (Michael Naumann) +Solution: Do not add buffer-specific option values to a global vimrc file. +Files: src/option.c + +Patch 6.2.380 (extra) +Problem: DOS: "make test" fails when running it again. Can't "make test" + with Borland C. +Solution: Make sure ".out" files are deleted when they get in the way. Add + a "test" target to the Borland C Makefile. +Files: src/Make_bc5.mak, src/testdir/Make_dos.mak + +Patch 6.2.381 +Problem: Setting 'fileencoding' to a comma separated list (confusing it + with 'fileencodings') does not result in an error message. + Setting 'fileencoding' in an empty file marks it as modified. + There is no "+" in the title after setting 'fileencoding'. +Solution: Check for a comma in 'fileencoding'. Only consider a non-empty + file modified by changing 'fileencoding'. Update the title after + changing 'fileencoding'. +Files: src/option.c + +Patch 6.2.382 +Problem: Running "make test" puts marks from test files in viminfo. +Solution: Specify a different viminfo file to use. +Files: src/testdir/test15.in, src/testdir/test49.in + +Patch 6.2.383 +Problem: ":hi foo term='bla" crashes Vim. (Antony Scriven) +Solution: Check that the closing ' is there. +Files: src/syntax.c + +Patch 6.2.384 +Problem: ":menu a.&b" ":unmenu a.b" only works if "&b" isn't translated. +Solution: Also compare the names without '&' characters. +Files: src/menu.c + +Patch 6.2.385 (extra) +Problem: Win32: forward_slash() and trash_input_buf() are undefined when + compiling with small features. (Ajit Thakkar) +Solution: Change the #ifdefs for forward_slash(). Don't call + trash_input_buf() if the input buffer isn't used. +Files: src/fileio.c, src/os_win32.c + +Patch 6.2.386 +Problem: Wasting time trying to read marks from the viminfo file for a + buffer without a name. +Solution: Skip reading marks when the buffer has no name. +Files: src/fileio.c + +Patch 6.2.387 +Problem: There is no highlighting of translated items in help files. +Solution: Search for a "help_ab.vim" syntax file when the help file is + called "*.abx". Also improve the help highlighting a bit. +Files: runtime/syntax/help.vim + +Patch 6.2.388 +Problem: GTK: When displaying some double-width characters they are drawn + as single-width, because of conversion to UTF-8. +Solution: Check the width that GTK uses and add a space if it's one instead + of two. +Files: src/gui_gtk_x11.c + +Patch 6.2.389 +Problem: When working over a slow connection, it's very annoying that the + last line is partly drawn and then cleared for every change. +Solution: Don't redraw the bottom line if no rows were inserted or deleted. + Don't draw the line if we know "@" lines will be used. +Files: src/screen.c + +Patch 6.2.390 +Problem: Using "r*" in Visual mode on multi-byte characters only replaces + every other character. (Tyson Roberts) +Solution: Correct the cursor position after replacing each character. +Files: src/ops.c + +Patch 6.2.391 (extra) +Problem: The ":highlight" command is not tested. +Solution: Add a test script for ":highlight". +Files: src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/test51.in, + src/testdir/test51.ok + +Patch 6.2.392 (after 6.2.384) +Problem: Unused variable. +Solution: Remove "dlen". +Files: src/menu.c + +Patch 6.2.393 +Problem: When using very long lines the viminfo file can become very big. +Solution: Add the "s" flag to 'viminfo': skip registers with more than the + specified Kbyte of text. +Files: runtime/doc/options.txt, src/ops.c, src/option.c + +Patch 6.2.394 (after 6.2.391) +Problem: Test 51 fails on a terminal with 8 colors. (Tony Leneis) +Solution: Use "DarkBlue" instead of "Blue" to avoid the "bold" attribute. +Files: src/testdir/test51.in + +Patch 6.2.395 +Problem: When using ":tag" or ":pop" the previous matching tag is used. + But since the current file is different, the ordering of the tags + may change. +Solution: Remember what the current buffer was for when re-using cur_match. +Files: src/edit.c, src/ex_cmds.c, src/proto/tag.pro, src/structs.h, + src/tag.c + +Patch 6.2.396 +Problem: When CTRL-T jumps to another file and an autocommand moves the + cursor to the '" mark, don't end up on the right line. (Michal + Malecki) +Solution: Set the line number after loading the file. +Files: src/tag.c + +Patch 6.2.397 +Problem: When using a double-byte 'encoding' mapping <M-x> doesn't work. + (Yasuhiro Matsumoto) +Solution: Do not set the 8th bit of the character but use a modifier. +Files: src/gui_gtk_x11.c, src/gui_x11.c, src/misc2.c + +Patch 6.2.398 (extra) +Problem: Win32 console: no extra key modifiers are supported. +Solution: Encode the modifiers into the input stream. Also fix that special + keys are converted and stop working when 'tenc' is set. Also fix + that when 'tenc' is initialized the input and output conversion is + not setup properly until 'enc' or 'tenc' is set. +Files: src/getchar.c, src/option.c, src/os_win32.c + +Patch 6.2.399 +Problem: A ":set" command that fails still writes a message when it is + inside a try/catch block. +Solution: Include all the text of the message in the error message. +Files: src/charset.c, src/option.c + +Patch 6.2.400 +Problem: Can't compile if_xcmdsrv.c on HP-UX 11.0. +Solution: Include header file poll.h. (Malte Neumann) +Files: src/if_xcmdsrv.c + +Patch 6.2.401 +Problem: When opening a buffer that was previously opened, Vim does not + restore the cursor position if the first line starts with white + space. (Gregory Margo) +Solution: Don't skip restoring the cursor position if it is past the blanks + in the first line. +Files: src/buffer.c + +Patch 6.2.402 +Problem: Mac: "make install" doesn't generate help tags. (Benji Fisher) +Solution: Generate help tags before copying the runtime files. +Files: src/Makefile + +Patch 6.2.403 +Problem: ":@y" checks stdin if there are more commands to execute. This + fails if stdin is not connected, e.g., when starting the GUI from + KDE. (Ned Konz) +Solution: Only check for a next command if there still is typeahead. +Files: src/ex_docmd.c + +Patch 6.2.404 +Problem: Our own function to determine width of Unicode characters may get + outdated. (Markus Kuhn) +Solution: Use wcwidth() when it is available. Also use iswprint(). +Files: src/auto/configure, src/configure.in, src/config.h.in, src/mbyte.c + +Patch 6.2.405 +Problem: Cannot map zero without breaking the count before a command. + (Benji Fisher) +Solution: Disable mapping zero when entering a count. +Files: src/getchar.c, src/globals.h, src/normal.c + +Patch 6.2.406 +Problem: ":help \zs", ":help \@=" and similar don't find useful help. +Solution: Prepend "/\" to the arguments to find the desired help tag. +Files: src/ex_cmds.c + +Patch 6.2.407 (after 6.2.299) +Problem: ":help \@<=" doesn't find help. +Solution: Avoid that ":help \@<=" searches for the "<=" language. +Files: src/tag.c + +Patch 6.2.408 +Problem: ":compiler" is not consistent: Sets local options and a global + variable. (Douglas Potts) There is no error message when a + compiler is not supported. +Solution: Use ":compiler!" to set a compiler globally, otherwise it's local + to the buffer and "b:current_compiler" is used. Give an error + when no compiler script could be found. + Note: updated compiler plugins can be found at + ftp://ftp.vim.org/pub/vim/runtime/compiler/ +Files: runtime/compiler/msvc.vim, runtime/doc/quickfix.txt, src/eval.c, + src/ex_cmds2.c + +Patch 6.2.409 +Problem: The cursor ends up in the last column instead of after the line + when doing "i//<Esc>o" with 'indentexpr' set to "cindent(v:lnum)". + (Toby Allsopp) +Solution: Adjust the cursor as if in Insert mode. +Files: src/misc1.c + +Patch 6.2.410 (after 6.2.389) +Problem: In diff mode, when there are more filler lines than fit in the + window, they are not drawn. +Solution: Check for filler lines when skipping to draw a line that doesn't + fit. +Files: src/screen.c + +Patch 6.2.411 +Problem: A "\n" inside a string is not seen as a line break by the regular + expression matching. (Hari Krishna Dara) +Solution: Add the vim_regexec_nl() function for strings where "\n" is to be + matched with a line break. +Files: src/eval.c, src/ex_eval.c, src/proto/regexp.c, src/regexp.c + +Patch 6.2.412 +Problem: Ruby: "ruby << EOF" inside a function doesn't always work. Also + for ":python", ":tcl" and ":perl". +Solution: Check for "<< marker" and skip until "marker" before checking for + "endfunction". +Files: src/eval.c + +Patch 6.2.413 (after 6.2.411) +Problem: Missing prototype for vim_regexec_nl(). (Marcel Svitalsky) +Solution: Now really include the prototype. +Files: src/proto/regexp.pro + +Patch 6.2.414 +Problem: The function used for custom completion of user commands cannot + have <SID> to make it local. (Hari Krishna Dara) +Solution: Pass the SID of the script where the user command was defined on + to the completion. Also clean up #ifdefs. +Files: src/ex_docmd.c, src/eval.c, src/ex_getln.c, src/structs.h + +Patch 6.2.415 +Problem: Vim may crash after a sequence of events that change the window + size. The window layout assumes a larger window than is actually + available. (Servatius Brandt) +Solution: Invoke win_new_shellsize() from screenalloc() instead of from + set_shellsize(). +Files: src/screen.c, src/term.c + +Patch 6.2.416 +Problem: Compiler warning for incompatible pointer. +Solution: Remove the "&" in the call to poll(). (Xavier de Gaye) +Files: src/os_unix.c + +Patch 6.2.417 (after 6.2.393) +Problem: Many people forget that the '"' item in 'viminfo' needs to be + preceded with a backslash, +Solution: Add '<' as an alias for the '"' item. +Files: runtime/doc/options.txt, src/ops.c, src/option.c + +Patch 6.2.418 +Problem: Using ":nnoremap <F12> :echo "cheese" and ":cabbr cheese xxx": + when pressing <F12> still uses the abbreviation. (Hari Krishna) +Solution: Also apply "noremap" to abbreviations. +Files: src/getchar.c + +Patch 6.2.419 (extra) +Problem: Win32: Cannot open the Vim window inside another application. +Solution: Add the "-P" argument to specify the window title of the + application to run inside. (Zibo Zhao) +Files: runtime/doc/starting.txt, src/main.c, src/gui_w32.c, + src/gui_w48.c, src/if_ole.cpp, src/os_mswin.c, + src/proto/gui_w32.pro + +Patch 6.2.420 +Problem: Cannot specify a file to be edited in binary mode without setting + the global value of the 'binary' option. +Solution: Support ":edit ++bin file". +Files: runtime/doc/editing.txt, src/buffer.c, src/eval.c, src/ex_cmds.h, + src/ex_docmd.c, src/fileio.c, src/misc2.c + +Patch 6.2.421 +Problem: Cannot set the '[ and '] mark, which may be necessary when an + autocommand simulates reading a file. +Solution: Allow using "m[" and "m]". +Files: runtime/doc/motion.txt, src/mark.c + +Patch 6.2.422 +Problem: In CTRL-X completion messages the "/" makes them less readable. +Solution: Remove the slashes. (Antony Scriven) +Files: src/edit.c + +Patch 6.2.423 +Problem: ":vertical wincmd ]" does not split vertically. +Solution: Add "postponed_split_flags". +Files: src/ex_docmd.c, src/globals.h, src/if_cscope.c, src/tag.c + +Patch 6.2.424 +Problem: A BufEnter autocommand that sets an option stops 'mousefocus' from + working in Insert mode (Normal mode is OK). (Gregory Seidman) +Solution: In the Insert mode loop invoke gui_mouse_correct() when needed. +Files: src/edit.c + +Patch 6.2.425 +Problem: Vertical split and command line window: can only drag status line + above the cmdline window on the righthand side, not lefthand side. +Solution: Check the status line row instead of the window pointer. +Files: src/ui.c + +Patch 6.2.426 +Problem: A syntax region end match with a matchgroup that includes a line + break only highlights the last line with matchgroup. (Gary + Holloway) +Solution: Also use the line number of the position where the region + highlighting ends. +Files: src/syntax.c + +Patch 6.2.427 (extra) +Problem: When pasting a lot of text in a multi-byte encoding, conversion + from 'termencoding' to 'encoding' may fail for some characters. + (Kuang-che Wu) +Solution: When there is an incomplete byte sequence at the end of the read + text keep it for the next time. +Files: src/mbyte.c, src/os_amiga.c, src/os_mswin.c, src/proto/mbyte.pro, + src/proto/os_mswin.pro, src/ui.c + +Patch 6.2.428 +Problem: The X11 clipboard supports the Vim selection for char/line/block + mode, but since the encoding is not included can't copy/paste + between two Vims with a different 'encoding'. +Solution: Add a new selection format that includes the 'encoding'. Perform + conversion when necessary. +Files: src/gui_gtk_x11.c, src/ui.c, src/vim.h + +Patch 6.2.429 +Problem: Unix: glob() doesn't work for a directory with a single quote in + the name. (Nazri Ramliy) +Solution: When using the shell to expand, only put double quotes around + spaces and single quotes, not the whole thing. +Files: src/os_unix.c + +Patch 6.2.430 +Problem: BOM at start of a vim script file is not recognized and causes an + error message. +Solution: Detect the BOM and skip over it. Also fix that after using + ":scriptencoding" the iconv() file descriptor was not closed + (memory leak). +Files: src/ex_cmds2.c + +Patch 6.2.431 +Problem: When using the horizontal scrollbar, the scrolling is limited to + the length of the cursor line. +Solution: Make the scroll limit depend on the longest visible line. The + cursor is moved when necessary. Including the 'h' flag in + 'guioptions' disables this. +Files: runtime/doc/gui.txt, runtime/doc/options.txt, src/gui.c, + src/misc2.c, src/option.h + +Patch 6.2.432 (after 6.2.430 and 6.2.431) +Problem: Lint warnings. +Solution: Add type casts. +Files: src/ex_cmds2.c, src/gui.c + +Patch 6.2.433 +Problem: Translating "VISUAL" and "BLOCK" separately doesn't give a good + result. (Alejandro Lopez Valencia) +Solution: Use a string for each combination. +Files: src/screen.c + +Patch 6.2.434 (after 6.2.431) +Problem: Compiler warning. (Salman Halim) +Solution: Add type casts. +Files: src/gui.c + +Patch 6.2.435 +Problem: When there are vertically split windows the minimal Vim window + height is computed wrong. +Solution: Use frame_minheight() to correctly compute the minimal height. +Files: src/window.c + +Patch 6.2.436 +Problem: Running the tests changes the user's viminfo file. +Solution: In test 49 tell the extra Vim to use the test viminfo file. +Files: src/testdir/test49.vim + +Patch 6.2.437 +Problem: ":mksession" always puts "set nocompatible" in the session file. + This changes option settings. (Ron Aaron) +Solution: Add an "if" to only change 'compatible' when needed. +Files: src/ex_docmd.c + +Patch 6.2.438 +Problem: When the 'v' flag is present in 'cpoptions', backspacing and then + typing text again: one character too much is overtyped before + inserting is done again. +Solution: Set "dollar_vcol" to the right column. +Files: src/edit.c + +Patch 6.2.439 +Problem: GTK 2: Changing 'lines' may cause a mismatch between the window + layout and the size of the window. +Solution: Disable the hack with force_shell_resize_idle(). +Files: src/gui_gtk_x11.c + +Patch 6.2.440 +Problem: When 'lazyredraw' is set the window title is still updated. + The size of the Visual area and the ruler are displayed too often. +Solution: Postpone redrawing the window title. Only show the Visual area + size when waiting for a character. Don't draw the ruler + unnecessary. +Files: src/buffer.c, src/normal.c, src/screen.c + +Patch 6.2.441 +Problem: ":unabbreviate foo " doesn't work, because of the trailing space, + while an abbreviation with a trailing space is not possible. (Paul + Jolly) +Solution: Accept a match with the lhs of an abbreviation without the + trailing space. +Files: src/getchar.c + +Patch 6.2.442 +Problem: Cannot manipulate the command line from a function. +Solution: Add getcmdline(), getcmdpos() and setcmdpos() functions and the + CTRL-\ e command. +Files: runtime/doc/cmdline.txt, runtime/doc/eval.txt, src/eval.c + src/ex_getln.c, src/ops.c, src/proto/ex_getln.pro, + src/proto/ops.pro + +Patch 6.2.443 +Problem: With ":silent! echoerr something" you don't get the position of + the error. emsg() only writes the message itself and returns. +Solution: Also redirect the position of the error. +Files: src/message.c + +Patch 6.2.444 +Problem: When adding the 'c' flag to a ":substitute" command it may replace + more times than without the 'c' flag. Happens for a match that + starts with "\ze" (Marcel Svitalsk) and when using "\@<=" (Klaus + Bosau). +Solution: Correct "prev_matchcol" when replacing the line. Don't replace + the line when the pattern uses look-behind matching. +Files: src/ex_cmds.c, src/proto/regexp.pro, src/regexp.c + +Patch 6.2.445 +Problem: Copying vimtutor to /tmp/something is not secure, a symlink may + cause trouble. +Solution: Create a directory and create the file in it. Use "umask" to + create the directory with mode 700. (Stefan Nordhausen) +Files: src/vimtutor + +Patch 6.2.446 (after 6.2.404) +Problem: Using library functions wcwidth() and iswprint() results in + display problems for Hebrew characters. (Ron Aaron) +Solution: Disable the code to use the library functions, use our own. +Files: src/mbyte.c + +Patch 6.2.447 (after 6.2.440) +Problem: Now that the title is only updated when redrawing, it is no longer + possible to show it while executing a function. (Madoka Machitani) +Solution: Make ":redraw" also update the title. +Files: src/ex_docmd.c + +Patch 6.2.448 (after 6.2.427) +Problem: Mac: conversion done when 'termencoding' differs from 'encoding' + fails when pasting a longer text. +Solution: Check for an incomplete sequence at the end of the chunk to be + converted. (Eckehard Berns) +Files: src/mbyte.c + +Patch 6.2.449 (after 6.2.431) +Problem: Get error messages when switching files. +Solution: Check for a valid line number when calculating the width of the + horizontal scrollbar. (Helmut Stiegler) +Files: src/gui.c + +Patch 6.2.450 +Problem: " #include" and " #define" are not recognized with the default + option values for 'include' and 'defined'. (RG Kiran) +Solution: Adjust the default values to allow white space before the #. +Files: runtime/doc/options.txt, src/option.c + +Patch 6.2.451 +Problem: GTK: when using XIM there are various problems, including setting + 'modified' and breaking undo at the wrong moment. +Solution: Add "xim_changed_while_preediting", "preedit_end_col" and + im_is_preediting(). (Yasuhiro Matsumoto) +Files: src/ex_getln.c, src/globals.h, src/gui_gtk.c, src/gui_gtk_x11.c, + src/mbyte.c, src/misc1.c, src/proto/mbyte.pro, src/screen.c, + src/undo.c + +Patch 6.2.452 +Problem: In diff mode, when DiffAdd and DiffText highlight settings are + equal, an added line is highlighted with DiffChange. (Tom Schumm) +Solution: Remember the diff highlight type instead of the attributes. +Files: src/screen.c + +Patch 6.2.453 +Problem: ":s/foo\|\nbar/x/g" does not replace two times in "foo\nbar". + (Pavel Papushev) +Solution: When the pattern can match a line break also try matching at the + NUL at the end of a line. +Files: src/ex_cmds.c, src/regexp.c + +Patch 6.2.454 +Problem: ":let b:changedtick" doesn't work. (Alan Schmitt) ":let + b:changedtick = 99" does not give an error message. +Solution: Add code to recognize ":let b:changedtick". +Files: src/eval.c + +Patch 6.2.455 (after 6.2.297) +Problem: In Python commands the current locale changes how certain Python + functions work. (Eugene M. Minkovskii) +Solution: Set the LC_NUMERIC locale to "C" while executing a Python command. +Files: src/if_python.c + +Patch 6.2.456 (extra) +Problem: Win32: Editing a file by its Unicode name (dropping it on Vim or + using the file selection dialog) doesn't work. (Yakov Lerner, Alex + Jakushev) +Solution: Use wide character functions when file names are involved and + convert from/to 'encoding' where needed. +Files: src/gui_w48.c, src/macros.h, src/memfile.c, src/memline.c, + src/os_mswin.c, src/os_win32.c + +Patch 6.2.457 (after 6.2.244) +Problem: When 'encoding' is "utf-8" and writing text with chars above 0x80 + in latin1, conversion is wrong every 8200 bytes. (Oyvind Holm) +Solution: Correct the utf_ptr2len_check_len() function and fix the problem + of displaying 0xf7 in utfc_ptr2len_check_len(). +Files: src/mbyte.c + +Patch 6.2.458 +Problem: When 'virtualedit' is set "$" doesn't move to the end of an + unprintable character, causing "y$" not to include that character. + (Fred Ma) +Solution: Set "coladd" to move the cursor to the end of the character. +Files: src/misc2.c + +Patch 6.2.459 (after 6.2.454) +Problem: Variable "b" cannot be written. (Salman Halim) +Solution: Compare strings properly. +Files: src/eval.c + +Patch 6.2.460 (extra, after 6.2.456) +Problem: Compiler warnings for missing prototypes. +Solution: Include the missing prototypes. +Files: src/proto/os_win32.pro + +Patch 6.2.461 +Problem: After using a search command "x" starts putting single characters + in the numbered registers. +Solution: Reset "use_reg_one" at the right moment. +Files: src/normal.c + +Patch 6.2.462 +Problem: Finding a matching parenthesis does not correctly handle a + backslash in a trailing byte. +Solution: Handle multi-byte characters correctly. (Taro Muraoka) +Files: src/search.c + +Patch 6.2.463 (extra) +Problem: Win32: An NTFS file system may contain files with extra info + streams. The current method to copy them creates one and then + deletes it again. (Peter Toennies) Also, only three streams with + hard coded names are copied. +Solution: Use BackupRead() to check which info streams the original file + contains and only copy these streams. +Files: src/os_win32.c + +Patch 6.2.464 (extra, after 6.2.427) +Problem: Amiga: Compilation error with gcc. (Ali Akcaagac) +Solution: Move the #ifdef outside of Read(). +Files: src/os_amiga.c + +Patch 6.2.465 +Problem: When resizing the GUI window the window manager sometimes moves it + left of or above the screen. (Michael McCarty) +Solution: Check the window position after resizing it and move it onto the + screen when it isn't. +Files: src/gui.c + +Patch 6.2.466 (extra, after 6.2.456) +Problem: Win32: Compiling with Borland C fails, and an un/signed warning. +Solution: Redefine wcsicmp() to wcscmpi() and add type casts. (Yasuhiro + Matsumoto) +Files: src/os_win32.c + +Patch 6.2.467 (extra, after 6.2.463) +Problem: Win32: can't compile without multi-byte feature. (Ajit Thakkar) +Solution: Add #ifdefs around the info stream code. +Files: src/os_win32.c + +Patch 6.2.468 +Problem: Compiler warnings for shadowed variables. (Matthias Mohr) +Solution: Delete superfluous variables and rename others. +Files: src/eval.c, src/ex_docmd.c, src/ex_eval.c, src/if_cscope.c, + src/fold.c, src/option.c, src/os_unix.c, src/quickfix.c, + src/regexp.c + +Patch 6.2.469 (extra, after 6.2.456) +Problem: Win32: Can't create swap file when 'encoding' differs from the + active code page. (Kriton Kyrimis) +Solution: In enc_to_ucs2() terminate the converted string with a NUL +Files: src/os_mswin.c + +Patch 6.2.470 +Problem: The name returned by tempname() may be equal to the file used for + shell output when ignoring case. +Solution: Skip 'O' and 'I' in tempname(). +Files: src/eval.c + +Patch 6.2.471 +Problem: "-L/usr/lib" is used in the link command, even though it's + supposed to be filtered out. "-lw" and "-ldl" are not + automatically added when needed for "-lXmu". (Antonio Colombo) +Solution: Check for a space after the argument instead of before. Also + remove "-R/usr/lib" if it's there. Check for "-lw" and "-ldl" + before trying "-lXmu". +Files: src/auto/configure, src/configure.in, src/link.sh + +Patch 6.2.472 +Problem: When using a FileChangedShell autocommand that changes the current + buffer, a buffer exists that can't be wiped out. + Also, Vim sometimes crashes when executing an external command + that changes the buffer and a FileChangedShell autocommand is + used. (Hari Krishna Dara) + Users are confused by the warning for a file being changed outside + of Vim. +Solution: Avoid that the window counter for a buffer is incremented twice. + Avoid that buf_check_timestamp() is used recursively. + Add a hint to look in the help for more info. +Files: src/ex_cmds.c, src/fileio.c + +Patch 6.2.473 +Problem: Using CTRL-] in a help buffer without a name causes a crash. +Solution: Check for name to be present before using it. (Taro Muraoka) +Files: src/tag.c + +Patch 6.2.474 (extra, after 6.2.456) +Problem: When Vim is starting up conversion is done unnecessarily. Failure + to find the runtime files on Windows 98. (Randall W. Morris) +Solution: Init enc_codepage negative, only use it when not negative. + Don't use GetFileAttributesW() on Windows 98 or earlier. +Files: src/globals.h, src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, + src/os_win32.c + +Patch 6.2.475 +Problem: Commands after "perl <<EOF" are parsed as Vim commands when they + are not executed. +Solution: Properly skip over the perl commands. +Files: src/ex_docmd.c, src/ex_getln.c, src/if_perl.xs, src/if_python.c, + src/if_ruby.c, src/if_tcl.c, src/misc2.c + +Patch 6.2.476 +Problem: When reloading a hidden buffer changed outside of Vim and the + current buffer is read-only, the reloaded buffer becomes + read-only. (Hari Krishna Dara) +Solution: Save the 'readonly' flag of the reloaded buffer instead of the + current buffer. +Files: src/fileio.c + +Patch 6.2.477 +Problem: Using remote_send(v:servername, "\<C-V>") causes Vim to hang. + (Yakov Lerner) +Solution: When the resulting string is empty don't set received_from_client. +Files: src/main.c + +Patch 6.2.478 +Problem: Win32: "--remote file" fails changing directory if the current + directory name starts with a single quote. (Iestyn Walters) +Solution: Add a backslash where it will be removed later. +Files: src/main.c, src/misc2.c, src/proto/misc2.pro + +Patch 6.2.479 +Problem: The error message for errors during recovery goes unnoticed. +Solution: Avoid that the hit-enter prompt overwrites the message. Add a few + lines to make the error stand out. +Files: src/main.c, src/message.c, src/memline.c + +Patch 6.2.480 +Problem: NetBeans: Using negative index in array. backslash at end of + message may cause Vim to crash. (Xavier de Gaye) +Solution: Initialize buf_list_used to zero. Check for trailing backslash. +Files: src/netbeans.c + +Patch 6.2.481 +Problem: When writing a file it is not possible to specify that hard and/or + symlinks are to be broken instead of preserved. +Solution: Add the "breaksymlink" and "breakhardlink" values to 'backupcopy'. + (Simon Ekstrand) +Files: runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h + +Patch 6.2.482 +Problem: Repeating insert of CTRL-K 1 S doesn't work. The superscript 1 is + considered to be a digit. (Juergen Kraemer) +Solution: In vim_isdigit() only accept '0' to '9'. Use VIM_ISDIGIT() for + speed where possible. Also add vim_isxdigit(). +Files: src/buffer.c, src/charset.c, src/diff.c, src/digraph.c, + src/edit.c, src/eval.c,, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, + src/if_xcmdsrv.c, src/farsi.c, src/fileio.c, src/fold.c, + src/getchar.c, src/gui.c, src/if_cscope.c, src/macros.h, + src/main.c, src/mark.c, src/mbyte.c, src/menu.c, src/misc1.c, + src/misc2.c, src/normal.c, src/ops.c, src/option.c, + src/proto/charset.pro, src/regexp.c, src/screen.c, src/search.c, + src/syntax.c, src/tag.c, src/term.c, src/termlib.c + +Patch 6.2.483 (extra, after 6.2.482) +Problem: See 6.2.482. +Solution: Extra part of patch 6.2.482. +Files: src/gui_photon.c, src/gui_w48.c, src/os_msdos.c, src/os_mswin.c + +Patch 6.2.484 +Problem: MS-Windows: With the included diff.exe, differences after a CTRL-Z + are not recognized. (Peter Keresztes) +Solution: Write the files with unix fileformat and invoke diff with --binary + if possible. +Files: src/diff.c + +Patch 6.2.485 +Problem: A BufWriteCmd autocommand cannot know if "!" was used or not. + (Hari Krishna Dara) +Solution: Add the v:cmdbang variable. +Files: runtime/doc/eval.txt, src/eval.c, src/proto/eval.pro, + src/fileio.c, src/vim.h + +Patch 6.2.486 (6.2.482) +Problem: Diff for eval.c is missing. +Solution: Addition to patch 6.2.482. +Files: src/eval.c + +Patch 6.2.487 (extra, after 6.2.456) +Problem: Compiler warnings for wrong prototype. (Alejandro Lopez Valencia) +Solution: Delete the prototype for Handle_WM_Notify(). +Files: src/proto/gui_w32.pro + +Patch 6.2.488 +Problem: Missing ")" in *.ch filetype detection. +Solution: Add the ")". (Ciaran McCreesh) +Files: runtime/filetype.vim + +Patch 6.2.489 +Problem: When accidentally opening a session in Vim which has already been + opened in another Vim there is a long row of ATTENTION prompts. + Need to quit each of them to get out. (Robert Webb) +Solution: Add the "Abort" alternative to the dialog. +Files: src/memline.c + +Patch 6.2.490 +Problem: With 'paragraph' it is not possible to use a single dot as a + paragraph boundary. (Dorai Sitaram) +Solution: Allow using " " (two spaces) in 'paragraph' to match ".$" or + ". $" +Files: src/search.c + +Patch 6.2.491 +Problem: Decrementing a position doesn't take care of multi-byte chars. +Solution: Adjust the column for multi-byte characters. Remove mb_dec(). + (Yasuhiro Matsumoto) +Files: src/mbyte.c, src/misc2.c, src/proto/mbyte.pro + +Patch 6.2.492 +Problem: When using ":redraw" while there is a message, the next ":echo" + still causes text to scroll. (Yasuhiro Matsumoto) +Solution: Reset msg_didout and msg_col, so that after ":redraw" the next + message overwrites an existing one. +Files: src/ex_docmd.c + +Patch 6.2.493 +Problem: "@x" doesn't work when 'insertmode' is set. (Benji Fisher) +Solution: Put "restart_edit" in the typeahead buffer, so that it's used + after executing the register contents. +Files: src/ops.c + +Patch 6.2.494 +Problem: Using diff mode with two windows, when moving horizontally in + inserted lines, a fold in the other window may open. +Solution: Compute the line number in the other window correctly. +Files: src/diff.c + +Patch 6.2.495 (extra, after 6.2.456) +Problem: Win32: The file dialog doesn't work on Windows 95. +Solution: Put the wide code of gui_mch_browse() in gui_mch_browseW() and use + it only on Windows NT/2000/XP. +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.2.496 +Problem: FreeBSD 4.x: When compiled with the pthread library (Python) a + complicated pattern may cause Vim to crash. Catching the signal + doesn't work. +Solution: When compiled with threads, instead of using the normal stacksize + limit, use the size of the initial stack. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/os_unix.c + +Patch 6.2.497 (extra) +Problem: Russian messages are only available in one encoding. +Solution: Convert the messages to MS-Windows codepages. (Vassily Ragosin) +Files: src/po/Makefile + +Patch 6.2.498 +Problem: Non-latin1 help files are not properly supported. +Solution: Support utf-8 help files and convert them to 'encoding' when + needed. +Files: src/fileio.c + +Patch 6.2.499 +Problem: When writing a file and halting the system, the file might be lost + when using a journaling file system. +Solution: Use fsync() to flush the file data to disk after writing a file. + (Radim Kolar) +Files: src/fileio.c + +Patch 6.2.500 (extra) +Problem: The DOS/MS-Windows the installer doesn't use the --binary flag for + diff. +Solution: Add --binary to the diff argument in MyDiff(). (Alejandro Lopez- + Valencia) +Files: src/dosinst.c + +Patch 6.2.501 +Problem: Vim does not compile with MorphOS. +Solution: Add a Makefile and a few changes to make Vim work with MorphOS. + (Ali Akcaagac) +Files: runtime/doc/os_amiga.txt, src/INSTALLami.txt, + src/Make_morphos.mak, src/memfile.c, src/term.c + +Patch 6.2.502 +Problem: Building fails for generating message files. +Solution: Add dummy message files. +Files: src/po/ca.po, src/po/ru.po, src/po/sv.po + +Patch 6.2.503 +Problem: Mac: Can't compile MacRoman conversions without the GUI. +Solution: Also link with the Carbon framework for the terminal version, for + the MacRoman conversion functions. (Eckehard Berns) + Remove -ltermcap from the GUI link command, it is not needed. +Files: src/auto/configure, src/Makefile, src/configure.in + +Patch 6.2.504 +Problem: Various problems with 'cindent', among which that a + list of variable declarations is not indented properly. +Solution: Fix the wrong indenting. Improve indenting of C++ methods. + Add the 'i', 'b' and 'W' options to 'cinoptions'. (mostly by + Helmut Stiegler) + Improve indenting of preprocessor-continuation lines. +Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, + src/testdir/test3.ok + +Patch 6.2.505 +Problem: Help for -P argument is missing. (Ronald Hoellwarth) +Solution: Add the patch that was missing in 6.2.419. +Files: runtime/doc/starting.txt + +Patch 6.2.506 (extra) +Problem: Win32: When 'encoding' is a codepage then reading a utf-8 file + only works when iconv is available. Writing a file in another + codepage uses the wrong kind of conversion. +Solution: Use internal conversion functions. Enable reading and writing + files with 'fileencoding' different from 'encoding' for all valid + codepages and utf-8 without the need for iconv. +Files: src/fileio.c, src/testdir/Make_dos.mak, src/testdir/test52.in, + src/testdir/test52.ok + +Patch 6.2.507 +Problem: The ownership of the file with the password for the NetBeans + connection is not checked. "-nb={file}" doesn't work for GTK. +Solution: Only accept the file when owned by the user and not accessible by + others. Detect "-nb=" for GTK. +Files: src/netbeans.c, src/gui_gtk_x11.c + +Patch 6.2.508 +Problem: Win32: "v:lang" does not show the current language for messages if + it differs from the other locale settings. +Solution: Use the value of the $LC_MESSAGES environment variable. +Files: src/ex_cmds2.c + +Patch 6.2.509 (after 6.2.508) +Problem: Crash when $LANG is not set. +Solution: Add check for NULL pointer. (Ron Aaron) +Files: src/ex_cmds2.c + +Patch 6.2.510 (after 6.2.507) +Problem: Warning for pointer conversion. +Solution: Add a type cast. +Files: src/gui_gtk_x11.c + +Patch 6.2.511 +Problem: Tags in Russian help files are in utf-8 encoding, which may be + different from 'encoding'. +Solution: Use the "TAG_FILE_ENCODING" field in the tags file to specify the + encoding of the tags. Convert help tags from 'encoding' to the + tag file encoding when searching for matches, do the reverse when + listing help tags. +Files: runtime/doc/tagsrch.txt, src/ex_cmds.c, src/tag.c + +Patch 6.2.512 +Problem: Translating "\"\n" is useless. (Gerfried Fuchs) +Solution: Remove the _() around it. +Files: src/main.c, src/memline.c + +Patch 6.2.513 (after 6.2.507) +Problem: NetBeans: the check for owning the connection info file can be + simplified. (Nikolay Molchanov) +Solution: Only check if the access mode is right. +Files: src/netbeans.c + +Patch 6.2.514 +Problem: When a highlight/syntax group name contains invalid characters + there is no warning. +Solution: Add an error for unprintable characters and a warning for other + invalid characters. +Files: src/syntax.c + +Patch 6.2.515 +Problem: When using the options window 'swapfile' is reset. +Solution: Use ":setlocal" instead of ":set". +Files: runtime/optwin.vim + +Patch 6.2.516 +Problem: The sign column cannot be seen, looks like there are two spaces + before the text. (Rob Retter) +Solution: Add the SignColumn highlight group. +Files: runtime/doc/options.txt, runtime/doc/sign.txt, src/option.c, + src/screen.c, src/syntax.c, src/vim.h + +Patch 6.2.517 +Problem: Using "r*" in Visual mode on multi-byte characters replaces + too many characters. In Visual Block mode replacing with a + multi-byte character doesn't work. +Solution: Adjust the operator end for the difference in byte length of the + original and the replaced character. Insert all bytes of a + multi-byte character, take care of double-wide characters. +Files: src/ops.c + +Patch 6.2.518 +Problem: Last line of a window is not updated after using "J" and then "D". + (Adri Verhoef) +Solution: When no line is found below a change that doesn't need updating, + update all lines below the change. +Files: src/screen.c + +Patch 6.2.519 +Problem: Mac: cannot read/write files in MacRoman format. +Solution: Do internal conversion from/to MacRoman to/from utf-8 and latin1. + (Eckehard Berns) +Files: src/fileio.c + +Patch 6.2.520 (extra) +Problem: The NSIS installer is outdated. +Solution: Make it work with NSIS 2.0. Also include console executables for + Win 95/98/ME and Win NT/2000/XP. Use LZWA compression. Use + "/oname" to avoid having to rename files before running NSIS. +Files: Makefile, nsis/gvim.nsi + +Patch 6.2.521 +Problem: When using silent Ex mode the "changing a readonly file" warning + is omitted but the one second wait isn't. (Yakov Lerner) +Solution: Skip the delay when "silent_mode" is set. +Files: src/misc1.c + +Patch 6.2.522 +Problem: GUI: when changing 'cmdheight' in the gvimrc file the window + layout is messed up. (Keith Dart) +Solution: Skip updating the window layout when changing 'cmdheight' while + still starting up. +Files: src/option.c + +Patch 6.2.523 +Problem: When loading a session and aborting when a swap file already + exists, the user is left with useless windows. (Robert Webb) +Solution: Load one file before creating the windows. +Files: src/ex_docmd.c + +Patch 6.2.524 (extra, after 6.2.520) +Problem: Win32: (un)installing gvimext.dll may fail if it was used. + The desktop and start menu links are created for the current user + instead of all users. + Using the home directory as working directory for the links is a + bad idea for multi-user systems. + Cannot use Vim from the "Open With..." menu. +Solution: Force a reboot if necessary. (Alejandro Lopez-Valencia) Also use + macros for the directory of the source and runtime files. Use + "CSIDL_COMMON_*" instead of "CSIDL_*" when possible. + Do not specify a working directory in the links. + Add Vim to the "Open With..." menu. (Giuseppe Bilotta) +Files: nsis/gvim.nsi, src/dosinst.c, src/dosinst.h, src/uninstal.c + +Patch 6.2.525 +Problem: When the history contains a very long line ":history" causes a + crash. (Volker Kiefel) +Solution: Shorten the history entry to fit it in one line. +Files: src/ex_getln.c + +Patch 6.2.526 +Problem: When s:lang is "ja" the Japanese menus are not used. +Solution: Add 'encoding' to the language when there is no charset. +Files: runtime/menu.vim + +Patch 6.2.527 +Problem: The 2html script uses ":wincmd p", which breaks when using some + autocommands. +Solution: Remember the window numbers and jump to them with ":wincmd w". + Also add XHTML support. (Panagiotis Issaris) +Files: runtime/syntax/2html.vim + +Patch 6.2.528 +Problem: NetBeans: Changes of the "~" command are not reported. +Solution: Call netbeans_inserted() after performing "~". (Gordon Prieur) + Also change NetBeans debugging to append to the log file. + Also fix that "~" in Visual block mode changes too much if there + are multi-byte characters. +Files: src/nbdebug.c, src/normal.c, src/ops.c + +Patch 6.2.529 (extra) +Problem: VisVim only works for Admin. Doing it for one user doesn't work. + (Alexandre Gouraud) +Solution: When registering the module fails, simply continue. +Files: src/VisVim/VisVim.cpp + +Patch 6.2.530 +Problem: Warning for missing prototype on the Amiga. +Solution: Include time.h +Files: src/version.c + +Patch 6.2.531 +Problem: In silent ex mode no messages are given, which makes debugging + very difficult. +Solution: Do output messages when 'verbose' is set. +Files: src/message.c, src/ui.c + +Patch 6.2.532 (extra) +Problem: Compiling for Win32s with VC 4.1 doesn't work. +Solution: Don't use CP_UTF8 if it's not defined. Don't use CSIDL_COMMON* + when not defined. +Files: src/dosinst.h, src/fileio.c + +Win32 console: After patch 6.2.398 Ex mode did not work. (Yasuhiro Matsumoto) + +Patch 6.3a.001 +Problem: Win32: if testing for the "--binary" option fails, diff isn't used + at all. +Solution: Handle the "ok" flag properly. (Yasuhiro Matsumoto) +Files: src/diff.c + +Patch 6.3a.002 +Problem: NetBeans: An insert command from NetBeans beyond the end of a + buffer crashes Vim. (Xavier de Gaye) +Solution: Use a local pos_T structure for the position. +Files: src/netbeans.c + +Patch 6.3a.003 +Problem: E315 error with auto-formatting comments. (Henry Van Roessel) +Solution: Pass the line number to same_leader(). +Files: src/ops.c + +Patch 6.3a.004 +Problem: Test32 fails on Windows XP for the DJGPP version. Renaming + test11.out fails. +Solution: Don't try renaming, create new files to use for the test. +Files: src/testdir/test32.in, src/testdir/test32.ok + +Patch 6.3a.005 +Problem: ":checkpath!" does not use 'includeexpr'. +Solution: Use a file name that was found directly. When a file was not + found and the located name is empty, use the rest of the line. +Files: src/search.c + +Patch 6.3a.006 +Problem: "yip" moves the cursor to the first yanked line, but not to the + first column. Looks like not all text was yanked. (Jens Paulus) +Solution: Move the cursor to the first column. +Files: src/search.c + +Patch 6.3a.007 +Problem: 'cindent' recognizes "enum" but not "typedef enum". +Solution: Skip over "typedef" before checking for "enum". (Helmut Stiegler) + Also avoid that searching for this item goes too far back. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 6.3a.008 (extra) +Problem: Windows 98: Some of the wide functions are not implemented, + resulting in file I/O to fail. This depends on what Unicode + support is installed. +Solution: Handle the failure and fall back to non-wide functions. +Files: src/os_win32.c + +Patch 6.3a.009 +Problem: Win32: Completion of filenames does not work properly when + 'encoding' differs from the active code page. +Solution: Use wide functions for expanding wildcards when appropriate. +Files: src/misc1.c + +Patch 6.3a.010 (extra) +Problem: Win32: Characters in the window title that do not appear in the + active codepage are replaced by a question mark. +Solution: Use DefWindowProcW() instead of DefWindowProc() when possible. +Files: src/glbl_ime.cpp, src/globals.h, src/proto/gui_w16.pro, + src/proto/gui_w32.pro, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.3a.011 +Problem: Using the explorer plugin changes a local directory to the global + directory. +Solution: Don't use ":chdir" to restore the current directory. Make + "expand('%:p')" remove "/../" and "/./" items from the path. +Files: runtime/plugin/explorer.vim, src/eval.c, src/os_unix.c + +Patch 6.3a.012 (extra) +Problem: On Windows 98 the installer doesn't work, don't even get the "I + agree" button. The check for the path ending in "vim" makes the + browse dialog hard to use. The default path when no previous Vim + is installed is "c:\vim" instead of "c:\Program Files\Vim". +Solution: Remove the background gradient command. Change the + .onVerifyInstDir function to a leave function for the directory + page. Don't let the install program default to c:\vim when no + path could be found. +Files: nsis/gvim.nsi, src/dosinst.c + +Patch 6.3a.013 (extra) +Problem: Win32: Characters in the menu that are not in the active codepage + are garbled. +Solution: Convert menu strings from 'encoding' to the active codepage. +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.3a.014 +Problem: Using multi-byte text and highlighting in a statusline causes gaps + to appear. (Helmut Stiegler) +Solution: Advance the column by text width instead of number of bytes. Add + the vim_strnsize() function. +Files: src/charset.c, src/proto/charset.pro, src/screen.c + +Patch 6.3a.015 +Problem: Using the "select all" menu item when 'insertmode' is set and + clicking the mouse button doesn't return to Insert mode. The + Buffers/Delete menu doesn't offer a choice to abandon a changed + buffer. (Jens Paulus) +Solution: Don't use CTRL-\ CTRL-N. Add ":confirm" for the Buffers menu + items. +Files: runtime/menu.vim + +Patch 6.3a.016 +Problem: After cancelling the ":confirm" dialog the error message and + hit-enter prompt may not be displayed properly. +Solution: Flush output after showing the dialog. +Files: src/message.c + +Patch 6.3a.017 +Problem: servername() doesn't work when Vim was started with the "-X" + argument or when the "exclude" in 'clipboard' matches the terminal + name. (Robert Nowotniak) +Solution: Force connecting to the X server when using client-server + commands. +Files: src/eval.c, src/globals.h, src/os_unix.c + +Patch 6.3a.018 (after 6.3a.017) +Problem: Compiler warning for return value of make_connection(). +Solution: Use void return type. +Files: src/eval.c + +Patch 6.3a.019 (extra) +Problem: Win32: typing non-latin1 characters doesn't work. +Solution: Invoke _OnChar() directly to avoid that the argument is truncated + to a byte. Convert the UTF-16 character to bytes according to + 'encoding' and ignore 'termencoding'. Same for _OnSysChar(). +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.3a.020 (extra) +Problem: Missing support for AROS (AmigaOS reimplementation). Amiga GUI + doesn't work. +Solution: Add AROS support. (Adam Chodorowski) + Fix Amiga GUI problems. (Georg Steger, Ali Akcaagac) +Files: Makefile, src/Make_aros.mak, src/gui_amiga.c, src/gui_amiga.h, + src/memfile.c, src/os_amiga.c, src/term.c + +Patch 6.3a.021 (after 6.3a.017) +Problem: Can't compile with X11 but without GUI. +Solution: Put use of "gui.in_use" inside an #ifdef. +Files: src/eval.c + +Patch 6.3a.022 +Problem: When typing Tabs when 'softtabstop' is used and 'list' is set a + tab is counted for two spaces. +Solution: Use the "L" flag in 'cpoptions' to tell whether a tab is counted + as two spaces or as 'tabstop'. (Antony Scriven) +Files: runtime/doc/options.txt, src/edit.c + +Patch 6.3a.023 +Problem: Completion on the command line doesn't handle backslashes + properly. Only the tail of matches is shown, even when not + completing filenames. +Solution: When turning the string into a pattern double backslashes. Don't + omit the path when not expanding files or directories. +Files: src/ex_getln.c + +Patch 6.3a.024 +Problem: The "save all" toolbar item fails for buffers that don't have a + name. When using ":wa" or closing the Vim window and there are + nameless buffers, browsing for a name may cause the name being + given to the wrong buffer or not stored properly. ":browse" only + worked for one file. +Solution: Use ":confirm browse" for "save all". + Pass buffer argument to setfname(). Restore "browse" flag and + "forceit" after doing the work for one file. +Files: runtime/menu.vim, src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/memline.c, + src/message.c, src/window.c, src/proto/buffer.pro, + src/proto/ex_cmds2.pro, src/proto/memline.pro + +Patch 6.3a.025 +Problem: Setting 'virtualedit' moves the cursor. (Benji Fisher) +Solution: Update the virtual column before using it. +Files: src/option.c + +Patch 6.3a.026 (extra, after 6.3a.008) +Problem: Editing files on Windows 98 doesn't work when 'encoding' is + "utf-8" (Antoine Mechelynck) + Warning for missing function prototype. +Solution: For all wide functions check if it failed because it is not + implemented. Use ANSI function declaration for char_to_string(). +Files: src/gui_w48.c, src/os_mswin.c, src/os_win32.c + +Patch 6.3a.027 (extra, after 6.3a.026) +Problem: Compiler warning for function argument. +Solution: Declare both char and WCHAR arrays. +Files: src/gui_w48.c + +Patch 6.3a.028 +Problem: ":normal ." doesn't work inside a function, because redo is saved + and restored. (Benji Fisher) +Solution: Make a copy of the redo buffer when executing a function. +Files: src/getchar.c + +Patch 6.3b.001 (extra) +Problem: Bcc 5: The generated auto/pathdef can't be compiled. +Solution: Fix the way quotes and backslashes are escaped. +Files: src/Make_bc5.mak + +Patch 6.3b.002 +Problem: Win32: conversion during file write fails when a double-byte + character is split over two writes. +Solution: Fix the conversion retry without a trailing byte. (Taro Muraoka) +Files: src/fileio.c + +Patch 6.3b.003 (extra) +Problem: Win32: When compiling with Borland C 5.5 and 'encoding' is "utf-8" + then Vim can't open files under MS-Windows 98. (Antoine J. + Mechelynck) +Solution: Don't use _wstat(), _wopen() and _wfopen() in this situation. +Files: src/os_mswin.c, src/os_win32.c + +Patch 6.3b.004 +Problem: ":helpgrep" includes a trailing CR in the text line. +Solution: Remove the CR. +Files: src/quickfix.c + +Patch 6.3b.005 +Problem: ":echo &g:ai" results in the local option value. (Salman Halim) +Solution: Pass the flags from find_option_end() to get_option_value(). +Files: src/eval.c + +Patch 6.3b.006 +Problem: When using "mswin.vim", CTRL-V in Insert mode leaves cursor before + last pasted character. (Mathew Davis) +Solution: Use the same Paste() function as in menu.vim. +Files: runtime/mswin.vim + +Patch 6.3b.007 +Problem: Session file doesn't restore view on windows properly. (Robert + Webb) +Solution: Restore window sizes both before and after restoring the view, so + that the view, cursor position and size are restored properly. +Files: src/ex_docmd.c + +Patch 6.3b.008 +Problem: Using ":finally" in a user command doesn't always work. (Hari + Krishna Dara) +Solution: Don't assume that using getexline() means the command was typed. +Files: src/ex_docmd.c + +Patch 6.3b.009 (extra) +Problem: Win32: When the -P argument is not found in a window title, there + is no error message. +Solution: When the window can't be found give an error message and exit. + Also use try/except to catch failing to open the MDI window. + (Michael Wookey) +Files: src/gui_w32.c + +Patch 6.3b.010 +Problem: Win32: Using the "-D" argument and expanding arguments may cause a + hang, because the terminal isn't initialized yet. (Vince Negri) +Solution: Don't go into debug mode before the terminal is initialized. +Files: src/main.c + +Patch 6.3b.011 +Problem: Using CTRL-\ e while obtaining an expression aborts the command + line. (Hari Krishna Dara) +Solution: Insert the CTRL-\ e as typed. +Files: src/ex_getln.c + +Patch 6.3b.012 (after 6.3b.010) +Problem: Can't compile with tiny features. (Norbert Tretkowski) +Solution: Add #ifdefs. +Files: src/main.c + +Patch 6.3b.013 +Problem: Loading a session file results in editing the wrong file in the + first window when this is not the file at the current position in + the argument list. (Robert Webb) +Solution: Check w_arg_idx_invalid to decide whether to edit a file. +Files: src/ex_docmd.c + +Patch 6.3b.014 +Problem: ":runtime! foo*.vim" may using freed memory when a sourced script + changes the value of 'runtimepath'. +Solution: Make a copy of 'runtimepath' when looping over the matches. +Files: src/ex_cmds2.c + +Patch 6.3b.015 +Problem: Get lalloc(0) error when using "p" in Visual mode while + 'clipboard' contains "autoselect,unnamed". (Mark Wagonner) +Solution: Avoid allocating zero bytes. Obtain the clipboard when necessary. +Files: src/ops.c + +Patch 6.3b.016 +Problem: When 'virtualedit' is used "x" doesn't delete the last character + of a line that has as many characters as 'columns'. (Yakov Lerner) +Solution: When the cursor isn't moved let oneright() return FAIL. +Files: src/edit.c + +Patch 6.3b.017 +Problem: Win32: "vim --remote-wait" doesn't exit when the server finished + editing the file. (David Fishburn) +Solution: In the rrhelper plugin change backslashes to forward slashes and + escape special characters. +Files: runtime/plugin/rrhelper.vim + +Patch 6.3b.018 +Problem: The list of help files in the "local additions" table doesn't + recognize utf-8 encoding. (Yasuhiro Matsumoto) +Solution: Recognize utf-8 characters. +Files: src/ex_cmds.c + +Patch 6.3b.019 +Problem: When $VIMRUNTIME is not a full path name the "local additions" + table lists all the help files. +Solution: Use fullpathcmp() instead of fnamecmp() to compare the directory + names. +Files: src/ex_cmds.c + +Patch 6.3b.020 +Problem: When using CTRL-^ when entering a search string, the item in the + statusline that indicates the keymap is not updated. (Ilya + Dogolazky) +Solution: Mark the statuslines for updating. +Files: src/ex_getln.c + +Patch 6.3b.021 +Problem: The swapfile is not readable for others, the ATTENTION prompt does + not show all info when someone else is editing the same file. + (Marcel Svitalsky) +Solution: Use the protection of original file for the swapfile and set it + after creating the swapfile. +Files: src/fileio.c + +Patch 6.3b.022 +Problem: Using "4v" to select four times the old Visual area may put the + cursor beyond the end of the line. (Jens Paulus) +Solution: Correct the cursor column. +Files: src/normal.c + +Patch 6.3b.023 +Problem: When "3dip" starts in an empty line, white lines after the + non-white lines are not deleted. (Jens Paulus) +Solution: Include the white lines. +Files: src/search.c + +Patch 6.3b.024 +Problem: "2daw" does not delete leading white space like "daw" does. (Jens + Paulus) +Solution: Include the white space when a count is used. +Files: src/search.c + +Patch 6.3b.025 +Problem: Percentage in ruler isn't updated when a line is deleted. (Jens + Paulus) +Solution: Check for a change in line count when deciding to update the ruler. +Files: src/screen.c, src/structs.h + +Patch 6.3b.026 +Problem: When selecting "abort" at the ATTENTION prompt for a file that is + already being edited Vim crashes. +Solution: Don't abort creating a new buffer when we really need it. +Files: src/buffer.c, src/vim.h + +Patch 6.3b.027 +Problem: Win32: When enabling the menu in a maximized window, Vim uses more + lines than what is room for. (Shizhu Pan) +Solution: When deciding to call shell_resized(), also compare the text area + size with Rows and Columns, not just with screen_Rows and + screen_Columns. +Files: src/gui.c + +Patch 6.3b.028 +Problem: When in diff mode, setting 'rightleft' causes a crash. (Eddine) +Solution: Check for last column differently when 'rightleft' is set. +Files: src/screen.c + +Patch 6.3b.029 +Problem: Win32: warning for uninitialized variable. +Solution: Initialize to zero. +Files: src/misc1.c + +Patch 6.3b.030 +Problem: After Visually selecting four characters, changing it to other + text, Visually selecting and yanking two characters: "." changes + four characters, another "." changes two characters. (Robert Webb) +Solution: Don't store the size of the Visual area when redo is active. +Files: src/normal.c + +============================================================================== +VERSION 6.4 *version-6.4* + +This section is about improvements made between version 6.3 and 6.4. + +This is a bug-fix release. There are also a few new features. The major +number of new items is in the runtime files and translations. + +The big MS-Windows version now uses: + Ruby version 1.8.3 + Perl version 5.8.7 + Python version 2.4.2 + + +Changed *changed-6.4* +------- + +Removed runtime/tools/tcltags, Exuberant ctags does it better. + + +Added *added-6.4* +----- + +Alsaconf syntax file (Nikolai Weibull) +Eruby syntax, indent, compiler and ftplugin file (Doug Kearns) +Esterel syntax file (Maurizio Tranchero) +Mathematica indent file (Steve Layland) +Netrc syntax file (Nikolai Weibull) +PHP compiler file (Doug Kearns) +Pascal indent file (Neil Carter) +Prescribe syntax file (Klaus Muth) +Rubyunit compiler file (Doug Kearns) +SMTPrc syntax file (Kornel Kielczewski) +Sudoers syntax file (Nikolai Weibull) +TPP syntax file (Gerfried Fuchs) +VHDL ftplugin file (R. Shankar) +Verilog-AMS syntax file (S. Myles Prather) + +Bulgarian keymap (Alberto Mardegan) +Canadian keymap (Eric Joanis) + +Hungarian menu translations in UTF-8 (Kantra Gergely) +Ukrainian menu translations (Bohdan Vlasyuk) + +Irish message translations (Kevin Patrick Scannell) + +Configure also checks for tclsh8.4. + + +Fixed *fixed-6.4* +----- + +"dFxd;" deleted the character under the cursor, "d;" didn't remember the +exclusiveness of the motion. + +When using "set laststatus=2 cmdheight=2" in the .gvimrc you may only get one +line for the cmdline. (Christian Robinson) Invoke command_height() after the +GUI has started up. + +Gcc would warn "dereferencing type-punned pointer will break strict -aliasing +rules". Avoid using typecasts for variable pointers. + +Gcc 3.x interprets the -MM argument differently. Change "-I /path" to +"-isystem /path" for "make depend". + + +Patch 6.3.001 +Problem: ":browse split" gives the file selection dialog twice. (Gordon + Bazeley) Same problem for ":browse diffpatch". +Solution: Reset cmdmod.browse before calling do_ecmd(). +Files: src/diff.c, src/ex_docmd.c + +Patch 6.3.002 +Problem: When using translated help files with non-ASCII latin1 characters + in the first line the utf-8 detection is wrong. +Solution: Properly detect utf-8 characters. When a mix of encodings is + detected continue with the next language and avoid a "no matches" + error because of "got_int" being set. Add the directory name to + the error message for a duplicate tag. +Files: src/ex_cmds.c + +Patch 6.3.003 +Problem: Crash when using a console dialog and the first choice does not + have a default button. (Darin Ohashi) +Solution: Allocate two more characters for the [] around the character for + the default choice. +Files: src/message.c + +Patch 6.3.004 +Problem: When searching for a long string (140 chars in a 80 column + terminal) get three hit-enter prompts. (Robert Webb) +Solution: Avoid the hit-enter prompt when giving the message for wrapping + around the end of the buffer. Don't give that message again when + the string was not found. +Files: src/message.c, src/search.c + +Patch 6.3.005 +Problem: Crash when searching for a pattern with a character offset and + starting in a closed fold. (Frank Butler) +Solution: Check for the column to be past the end of the line. Also fix + that a pattern with a character offset relative to the end isn't + read back from the viminfo properly. +Files: src/search.c + +Patch 6.3.006 +Problem: ":breakadd file *foo" prepends the current directory to the file + pattern. (Hari Krishna Dara) +Solution: Keep the pattern as-is. +Files: src/ex_cmds2.c + +Patch 6.3.007 +Problem: When there is a buffer with 'buftype' set to "nofile" and using a + ":cd" command, the swap file is not deleted when exiting. +Solution: Use the full path of the swap file also for "nofile" buffers. +Files: src/fileio.c + +Patch 6.3.008 +Problem: Compiling fails under OS/2. +Solution: Include "e_screenmode" also for OS/2. (David Sanders) +Files: src/globals.h + +Patch 6.3.009 (after 6.3.006) +Problem: ":breakadd file /path/foo.vim" does not match when a symbolic link + is involved. (Servatius Brandt) +Solution: Do expand the pattern when it does not start with "*". +Files: runtime/doc/repeat.txt, src/ex_cmds2.c + +Patch 6.3.010 +Problem: When writing to a named pipe there is an error for fsync() + failing. +Solution: Ignore the fsync() error for devices. +Files: src/fileio.c + +Patch 6.3.011 +Problem: Crash when the completion function of a user-command uses a + "normal :cmd" command. (Hari Krishna Dara) +Solution: Save the command line when invoking the completion function. +Files: src/ex_getln.c + +Patch 6.3.012 +Problem: Internal lalloc(0) error when using a complicated multi-line + pattern in a substitute command. (Luc Hermitte) +Solution: Avoid going past the end of a line. +Files: src/ex_cmds.c + +Patch 6.3.013 +Problem: Crash when editing a command line and typing CTRL-R = to evaluate + a function that uses "normal :cmd". (Hari Krishna Dara) +Solution: Save and restore the command line when evaluating an expression + for CTRL-R =. +Files: src/ex_getln.c, src/ops.c, src/proto/ex_getln.pro, + src/proto/ops.pro + +Patch 6.3.014 +Problem: When using Chinese or Taiwanese the default for 'helplang' is + wrong. (Simon Liang) +Solution: Use the part of the locale name after "zh_". +Files: src/option.c + +Patch 6.3.015 +Problem: The string that winrestcmd() returns may end in garbage. +Solution: NUL-terminate the string. (Walter Briscoe) +Files: src/eval.c + +Patch 6.3.016 +Problem: The default value for 'define' has "\s" before '#'. +Solution: Add a star after "\s". (Herculano de Lima Einloft Neto) +Files: src/option.c + +Patch 6.3.017 +Problem: "8zz" may leave the cursor beyond the end of the line. (Niko + Maatjes) +Solution: Correct the cursor column after moving to another line. +Files: src/normal.c + +Patch 6.3.018 +Problem: ":0argadd zero" added the argument after the first one, instead of + before it. (Adri Verhoef) +Solution: Accept a zero range for ":argadd". +Files: src/ex_cmds.h + +Patch 6.3.019 +Problem: Crash in startup for debug version. (David Rennals) +Solution: Move the call to nbdebug_wait() to after allocating NameBuff. +Files: src/main.c + +Patch 6.3.020 +Problem: When 'encoding' is "utf-8" and 'delcombine' is set, "dw" does not + delete a word but only a combining character of the first + character, if there is one. (Raphael Finkel) +Solution: Correctly check that one character is being deleted. +Files: src/misc1.c + +Patch 6.3.021 +Problem: When the last character of a file name is a multi-byte character + and the last byte is a path separator, the file cannot be edited. +Solution: Check for the last byte to be part of a multi-byte character. + (Taro Muraoka) +Files: src/fileio.c + +Patch 6.3.022 (extra) +Problem: Win32: When the last character of a file name is a multi-byte + character and the last byte is a path separator, the file cannot + be written. A trail byte that is a space makes that a file cannot + be opened from the command line. +Solution: Recognize double-byte characters when parsing the command line. + In mch_stat() check for the last byte to be part of a multi-byte + character. (Taro Muraoka) +Files: src/gui_w48.c, src/os_mswin.c + +Patch 6.3.023 +Problem: When the "to" part of a mapping starts with its "from" part, + abbreviations for the same characters is not possible. For + example, when <Space> is mapped to something that starts with a + space, typing <Space> does not expand abbreviations. +Solution: Only disable expanding abbreviations when a mapping is not + remapped, don't disable it when the RHS of a mapping starts with + the LHS. +Files: src/getchar.c, src/vim.h + +Patch 6.3.024 +Problem: In a few places a string in allocated memory is not terminated + with a NUL. +Solution: Add ga_append(NUL) in script_get(), gui_do_findrepl() and + serverGetVimNames(). +Files: src/ex_getln.c, src/gui.c, src/if_xcmdsrv.c, src/os_mswin.c + +Patch 6.3.025 (extra) +Problem: Missing NUL for list of server names. +Solution: Add ga_append(NUL) in serverGetVimNames(). +Files: src/os_mswin.c + +Patch 6.3.026 +Problem: When ~/.vim/after/syntax/syncolor.vim contains a command that + reloads the colors an endless loop and/or a crash may occur. +Solution: Only free the old value of an option when it was originally + allocated. Limit recursiveness of init_highlight() to 5 levels. +Files: src/option.c, src/syntax.c + +Patch 6.3.027 +Problem: VMS: Writing a file may insert extra CR characters. Not all + terminals are recognized correctly. Vt320 doesn't support colors. + Environment variables are not expanded correctly. +Solution: Use another method to write files. Add vt320 termcap codes for + colors. (Zoltan Arpadffy) +Files: src/fileio.c, src/misc1.c, src/os_unix.c, src/structs.h, + src/term.c + +Patch 6.3.028 +Problem: When appending to a file the BOM marker may be written. (Alex + Jakushev) +Solution: Do not write the BOM marker when appending. +Files: src/fileio.c + +Patch 6.3.029 +Problem: Crash when inserting a line break. (Walter Briscoe) +Solution: In the syntax highlighting code, don't use an old state after a + change was made, current_col may be past the end of the line. +Files: src/syntax.c + +Patch 6.3.030 +Problem: GTK 2: Crash when sourcing a script that deletes the menus, sets + 'encoding' to "utf-8" and loads the menus again. GTK error + message when tooltip text is in a wrong encoding. +Solution: Don't copy characters from the old screen to the new screen when + switching 'encoding' to utf-8, they may be invalid. Only set the + tooltip when it is valid utf-8. +Files: src/gui_gtk.c, src/mbyte.c, src/proto/mbyte.pro, src/screen.c + +Patch 6.3.031 +Problem: When entering a mapping and pressing Tab halfway the command line + isn't redrawn properly. (Adri Verhoef) +Solution: Reposition the cursor after drawing over the "..." of the + completion attempt. +Files: src/ex_getln.c + +Patch 6.3.032 +Problem: Using Python 2.3 with threads doesn't work properly. +Solution: Release the lock after initialization. +Files: src/if_python.c + +Patch 6.3.033 +Problem: When a mapping ends in a Normal mode command of more than one + character Vim doesn't return to Insert mode. +Solution: Check that the mapping has ended after obtaining all characters of + the Normal mode command. +Files: src/normal.c + +Patch 6.3.034 +Problem: VMS: crash when using ":help". +Solution: Avoid using "tags-??", some Open VMS systems can't handle the "?" + wildcard. (Zoltan Arpadffy) +Files: src/tag.c + +Patch 6.3.035 (extra) +Problem: RISC OS: Compile errors. +Solution: Change e_screnmode to e_screenmode. Change the way + __riscosify_control is set. Improve the makefile. (Andy Wingate) +Files: src/os_riscos.c, src/search.c, src/Make_ro.mak + +Patch 6.3.036 +Problem: ml_get errors when the whole file is a fold, switching + 'foldmethod' and doing "zj". (Christian J. Robinson) Was not + deleting the fold but creating a fold with zero lines. +Solution: Delete the fold properly. +Files: src/fold.c + +Patch 6.3.037 (after 6.3.032) +Problem: Warning for unused variable. +Solution: Change the #ifdefs for the saved thread stuff. +Files: src/if_python.c + +Patch 6.3.038 (extra) +Problem: Win32: When the "file changed" dialog pops up after a click that + gives gvim focus and not moving the mouse after that, the effect + of the click may occur when moving the mouse later. (Ken Clark) + Happened because the release event was missed. +Solution: Clear the s_button_pending variable when any input is received. +Files: src/gui_w48.c + +Patch 6.3.039 +Problem: When 'number' is set and inserting lines just above the first + displayed line (in another window on the same buffer), the line + numbers are not updated. (Hitier Sylvain) +Solution: When 'number' is set and lines are inserted/deleted redraw all + lines below the change. +Files: src/screen.c + +Patch 6.3.040 +Problem: Error handling does not always work properly and may cause a + buffer to be marked as if it's viewed in a window while it isn't. + Also when selecting "Abort" at the attention prompt. +Solution: Add enter_cleanup() and leave_cleanup() functions to move + saving/restoring things for error handling to one place. + Clear a buffer read error when it's unloaded. +Files: src/buffer.c, src/ex_docmd.c, src/ex_eval.c, + src/proto/ex_eval.pro, src/structs.h, src/vim.h + +Patch 6.3.041 (extra) +Problem: Win32: When the path to a file has Russian characters, ":cd %:p:h" + doesn't work. (Valery Kondakoff) +Solution: Use a wide function to change directory. +Files: src/os_mswin.c + +Patch 6.3.042 +Problem: When there is a closed fold at the top of the window, CTRL-X + CTRL-E in Insert mode reduces the size of the fold instead of + scrolling the text up. (Gautam) +Solution: Scroll over the closed fold. +Files: src/move.c + +Patch 6.3.043 +Problem: 'hlsearch' highlighting sometimes disappears when inserting text + in PHP code with syntax highlighting. (Marcel Svitalsky) +Solution: Don't use pointers to remember where a match was found, use an + index. The pointers may become invalid when searching in other + lines. +Files: src/screen.c + +Patch 6.3.044 (extra) +Problem: Mac: When 'linespace' is non-zero the Insert mode cursor leaves + pixels behind. (Richard Sandilands) +Solution: Erase the character cell before drawing the text when needed. +Files: src/gui_mac.c + + +Patch 6.3.045 +Problem: Unusual characters in an option value may cause unexpected + behavior, especially for a modeline. (Ciaran McCreesh) +Solution: Don't allow setting termcap options or 'printdevice' in a + modeline. Don't list options for "termcap" and "all" in a + modeline. Don't allow unusual characters in 'filetype', 'syntax', + 'backupext', 'keymap', 'patchmode' and 'langmenu'. +Files: src/option.c, runtime/doc/options.txt + +Patch 6.3.046 +Problem: ":registers" doesn't show multi-byte characters properly. + (Valery Kondakoff) +Solution: Get the length of each character before displaying it. +Files: src/ops.c + +Patch 6.3.047 (extra) +Problem: Win32 with Borland C 5.5 on Windows XP: A new file is created with + read-only attributes. (Tony Mechelynck) +Solution: Don't use the _wopen() function for Borland. +Files: src/os_win32.c + +Patch 6.3.048 (extra) +Problem: Build problems with VMS on IA64. +Solution: Add dependencies to the build file. (Zoltan Arpadffy) +Files: src/Make_vms.mms + +Patch 6.3.049 (after 6.3.045) +Problem: Compiler warning for "char" vs "char_u" mixup. (Zoltan Arpadffy) +Solution: Add a typecast. +Files: src/option.c + +Patch 6.3.050 +Problem: When SIGHUP is received while busy exiting, non-reentrant + functions such as free() may cause a crash. +Solution: Ignore SIGHUP when exiting because of an error. (Scott Anderson) +Files: src/misc1.c, src/main.c + +Patch 6.3.051 +Problem: When 'wildmenu' is set and completed file names contain multi-byte + characters Vim may crash. +Solution: Reserve room for multi-byte characters. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 6.3.052 (extra) +Problem: Windows 98: typed keys that are not ASCII may not work properly. + For example with a Russian input method. (Jiri Jezdinsky) +Solution: Assume that the characters arrive in the current codepage instead + of UCS-2. Perform conversion based on that. +Files: src/gui_w48.c + +Patch 6.3.053 +Problem: Win32: ":loadview" cannot find a file with non-ASCII characters. + (Valerie Kondakoff) +Solution: Use mch_open() instead of open() to open the file. +Files: src/ex_cmds2.c + +Patch 6.3.054 +Problem: When 'insertmode' is set <C-L>4ixxx<C-L> hangs Vim. (Jens Paulus) + Vim is actually still working but redraw is disabled. +Solution: When stopping Insert mode with CTRL-L don't put an Esc in the redo + buffer but a CTRL-L. +Files: src/edit.c + +Patch 6.3.055 (after 6.3.013) +Problem: Can't use getcmdline(), getcmdpos() or setcmdpos() with <C-R>= + when editing a command line. Using <C-\>e may crash Vim. (Peter + Winters) +Solution: When moving ccline out of the way for recursive use, make it + available to the functions that need it. Also save and restore + ccline when calling get_expr_line(). Make ccline.cmdbuf NULL at + the end of getcmdline(). +Files: src/ex_getln.c + +Patch 6.3.056 +Problem: The last characters of a multi-byte file name may not be displayed + in the window title. +Solution: Avoid to remove a multi-byte character where the last byte looks + like a path separator character. (Yasuhiro Matsumoto) +Files: src/buffer.c, src/ex_getln.c + +Patch 6.3.057 +Problem: When filtering lines folds are not updated. (Carl Osterwisch) +Solution: Update folds for filtered lines. +Files: src/ex_cmds.c + +Patch 6.3.058 +Problem: When 'foldcolumn' is equal to the window width and 'wrap' is on + Vim may crash. Disabling the vertical split feature breaks + compiling. (Peter Winters) +Solution: Check for zero room for wrapped text. Make compiling without + vertical splits possible. +Files: src/move.c, src/quickfix.c, src/screen.c, src/netbeans.c + +Patch 6.3.059 +Problem: Crash when expanding an ":edit" command containing several spaces + with the shell. (Brian Hirt) +Solution: Allocate enough space for the quotes. +Files: src/os_unix.c + +Patch 6.3.060 +Problem: Using CTRL-R CTRL-O in Insert mode with an invalid register name + still causes something to be inserted. +Solution: Check the register name for being valid. +Files: src/edit.c + +Patch 6.3.061 +Problem: When editing a utf-8 file in an utf-8 xterm and there is a + multi-byte character in the last column, displaying is messed up. + (Joël Rio) +Solution: Check for a multi-byte character, not a multi-column character. +Files: src/screen.c + +Patch 6.3.062 +Problem: ":normal! gQ" hangs. +Solution: Quit getcmdline() and do_exmode() when out of typeahead. +Files: src/ex_getln.c, src/ex_docmd.c + +Patch 6.3.063 +Problem: When a CursorHold autocommand changes to another window + (temporarily) 'mousefocus' stops working. +Solution: Call gui_mouse_correct() after triggering CursorHold. +Files: src/gui.c + +Patch 6.3.064 +Problem: line2byte(line("$") + 1) sometimes returns the wrong number. + (Charles Campbell) +Solution: Flush the cached line before counting the bytes. +Files: src/memline.c + +Patch 6.3.065 +Problem: The euro digraph doesn't always work. +Solution: Add an "e=" digraph for Unicode euro character and adjust the + help files. +Files: src/digraph.c, runtime/doc/digraph.txt + +Patch 6.3.066 +Problem: Backup file may get wrong permissions. +Solution: Use permissions of original file for backup file in more places. +Files: src/fileio.c + +Patch 6.3.067 (after 6.3.066) +Problem: Newly created file gets execute permission. +Solution: Check for "perm" to be negative before using it. +Files: src/fileio.c + +Patch 6.3.068 +Problem: When editing a compressed file xxx.gz which is a symbolic link to + the actual file a ":write" renames the link. +Solution: Resolve the link, so that the actual file is renamed and + compressed. +Files: runtime/plugin/gzip.vim + +Patch 6.3.069 +Problem: When converting text with illegal characters Vim may crash. +Solution: Avoid that too much is subtracted from the length. (Da Woon Jung) +Files: src/mbyte.c + +Patch 6.3.070 +Problem: After ":set number linebreak wrap" and a vertical split, moving + the vertical separator far left will crash Vim. (Georg Dahn) +Solution: Avoid dividing by zero. +Files: src/charset.c + +Patch 6.3.071 +Problem: The message for CTRL-X mode is still displayed after an error for + 'thesaurus' or 'dictionary' being empty. +Solution: Clear "edit_submode". +Files: src/edit.c + +Patch 6.3.072 +Problem: Crash in giving substitute message when language is Chinese and + encoding is utf-8. (Yongwei) +Solution: Make the msg_buf size larger when using multi-byte. +Files: src/vim.h + +Patch 6.3.073 +Problem: Win32 GUI: When the Vim window is partly above or below the + screen, scrolling causes display errors when the taskbar is not on + that side. +Solution: Use the SW_INVALIDATE flag when the Vim window is partly below or + above the screen. +Files: src/gui_w48.c + +Patch 6.3.074 +Problem: When mswin.vim is used and 'insertmode' is set, typing text in + Select mode and then using CTRL-V results in <SNR>99_Pastegi. + (Georg Dahn) +Solution: When restart_edit is set use "d" instead of "c" to remove the + selected text to avoid calling edit() twice. +Files: src/normal.c + +Patch 6.3.075 +Problem: After unloading another buffer, syntax highlighting in the current + buffer may be wrong when it uses "containedin". (Eric Arnold) +Solution: Use "buf" instead of "curbuf" in syntax_clear(). +Files: src/syntax.c + +Patch 6.3.076 +Problem: Crash when using cscope and there is a parse error (e.g., line too + long). (Alexey I. Froloff) +Solution: Pass the actual number of matches to cs_manage_matches() and + correctly handle the error situation. +Files: src/if_cscope.c + +Patch 6.3.077 (extra) +Problem: VMS: First character input after ESC was not recognized. +Solution: Added TRM$M_TM_TIMED in vms_read(). (Zoltan Arpadffy) +Files: src/os_vms.c + +Patch 6.3.078 (extra, after 6.3.077) +Problem: VMS: Performance issue after patch 6.3.077 +Solution: Add a timeout in the itemlist. (Zoltan Arpadffy) +Files: src/os_vms.c + +Patch 6.3.079 +Problem: Crash when executing a command in the command line window while + syntax highlighting is enabled. (Pero Brbora) +Solution: Don't use a pointer to a buffer that has been deleted. +Files: src/syntax.c + +Patch 6.3.080 (extra) +Problem: Win32: With 'encoding' set to utf-8 while the current codepage is + Chinese editing a file with some specific characters in the name + fails. +Solution: Use _wfullpath() instead of _fullpath() when necessary. +Files: src/os_mswin.c + +Patch 6.3.081 +Problem: Unix: glob() may execute a shell command when it's not wanted. + (Georgi Guninski) +Solution: Verify the sandbox flag is not set. +Files: src/os_unix.c + +Patch 6.3.082 (after 6.3.081) +Problem: Unix: expand() may execute a shell command when it's not wanted. + (Georgi Guninski) +Solution: A more generic solution than 6.3.081. +Files: src/os_unix.c + +Patch 6.3.083 +Problem: VMS: The vt320 termcap entry is incomplete. +Solution: Add missing function keys. (Zoltan Arpadffy) +Files: src/term.c + +Patch 6.3.084 (extra) +Problem: Cygwin: compiling with DEBUG doesn't work. Perl path was ignored. + Failure when $(OUTDIR) already exists. "po" makefile is missing. +Solution: Use changes tested in Vim 7. (Tony Mechelynck) +Files: src/Make_cyg.mak, src/po/Make_cyg.mak + +Patch 6.3.085 +Problem: Crash in syntax highlighting code. (Marc Espie) +Solution: Prevent current_col going past the end of the line. +Files: src/syntax.c + +Patch 6.3.086 (extra) +Problem: Can't produce message translation file with msgfmt that checks + printf strings. +Solution: Fix the Russian translation. +Files: src/po/ru.po, src/po/ru.cp1251.po + +Patch 6.3.087 +Problem: MS-DOS: Crash. (Jason Hood) +Solution: Don't call fname_case() with a NULL pointer. +Files: src/ex_cmds.c + +Patch 6.3.088 +Problem: Editing ".in" causes error E218. (Stefan Karlsson) +Solution: Require some characters before ".in". Same for ".orig" and others. +Files: runtime/filetype.vim + +Patch 6.3.089 +Problem: A session file doesn't work when created while the current + directory contains a space or the directory of the session files + contains a space. (Paolo Giarrusso) +Solution: Escape spaces with a backslash. +Files: src/ex_docmd.c + +Patch 6.3.090 +Problem: A very big value for 'columns' or 'lines' may cause a crash. +Solution: Limit the values to 10000 and 1000. +Files: src/option.c + +Patch 6.4a.001 +Problem: The Unix Makefile contained too many dependencies and a few + uncommented lines. +Solution: Run "make depend" with manual changes to avoid a gcc + incompatibility. Comment a few lines. +Files: src/Makefile + +Patch 6.4b.001 +Problem: Vim reports "Vim 6.4a" in the ":version" output. +Solution: Change "a" to "b". (Tony Mechelynck) +Files: src/version.h + +Patch 6.4b.002 +Problem: In Insert mode, pasting a multi-byte character after the end of + the line leaves the cursor just before that character. +Solution: Make sure "gP" leaves the cursor in the right place when + 'virtualedit' is set. +Files: src/ops.c + +Patch 6.4b.003 (after 6.4b.002) +Problem: The problem still exists when 'encoding' is set to "cp936". +Solution: Fix the problem in getvvcol(), compute the coladd field correctly. +Files: src/charset.c, src/ops.c + +Patch 6.4b.004 +Problem: Selecting a {} block with "viB" includes the '}' when there is an + empty line before it. +Solution: Don't advance the cursor to include a line break when it's already + at the line break. +Files: src/search.c + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/version7.txt b/share/vim/vim74/doc/version7.txt new file mode 100644 index 00000000..47809760 --- /dev/null +++ b/share/vim/vim74/doc/version7.txt @@ -0,0 +1,18310 @@ +*version7.txt* For Vim version 7.4. Last change: 2013 Aug 10 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + *vim7* *version-7.0* *version7.0* +Welcome to Vim 7! A large number of features has been added. This file +mentions all the new items, changes to existing features and bug fixes +since Vim 6.x. Use this command to see the version you are using: > + :version + +See |vi_diff.txt| for an overview of differences between Vi and Vim 7.0. +See |version4.txt| for differences between Vim 3.x and Vim 4.x. +See |version5.txt| for differences between Vim 4.x and Vim 5.x. +See |version6.txt| for differences between Vim 5.x and Vim 6.x. + +INCOMPATIBLE CHANGES |incompatible-7| + +NEW FEATURES |new-7| + +Vim script enhancements |new-vim-script| +Spell checking |new-spell| +Omni completion |new-omni-completion| +MzScheme interface |new-MzScheme| +Printing multi-byte text |new-print-multi-byte| +Tab pages |new-tab-pages| +Undo branches |new-undo-branches| +Extended Unicode support |new-more-unicode| +More highlighting |new-more-highlighting| +Translated manual pages |new-manpage-trans| +Internal grep |new-vimgrep| +Scroll back in messages |new-scroll-back| +Cursor past end of the line |new-onemore| +POSIX compatibility |new-posix| +Debugger support |new-debug-support| +Remote file explorer |new-netrw-explore| +Define an operator |new-define-operator| +Mapping to an expression |new-map-expression| +Visual and Select mode mappings |new-map-select| +Location list |new-location-list| +Various new items |new-items-7| + +IMPROVEMENTS |improvements-7| + +COMPILE TIME CHANGES |compile-changes-7| + +BUG FIXES |bug-fixes-7| + +VERSION 7.1 |version-7.1| +Changed |changed-7.1| +Added |added-7.1| +Fixed |fixed-7.1| + +VERSION 7.2 |version-7.2| +Changed |changed-7.2| +Added |added-7.2| +Fixed |fixed-7.2| + +VERSION 7.3 |version-7.3| + +Persistent undo |new-persistent-undo| +More encryption |new-more-encryption| +Conceal text |new-conceal| +Lua interface |new-lua| +Python3 interface |new-python3| + +Changed |changed-7.3| +Added |added-7.3| +Fixed |fixed-7.3| + +VERSION 7.4 |version-7.4| +New regexp engine |new-regexp-engine| +Better Python interface |better-python-interface| +Changed |changed-7.4| +Added |added-7.4| +Fixed |fixed-7.4| + + +============================================================================== +INCOMPATIBLE CHANGES *incompatible-7* + +These changes are incompatible with previous releases. Check this list if you +run into a problem when upgrading from Vim 6.x to 7.0. + +A ":write file" command no longer resets the 'modified' flag of the buffer, +unless the '+' flag is in 'cpoptions' |cpo-+|. This was illogical, since the +buffer is still modified compared to the original file. And when undoing +all changes the file would actually be marked modified. It does mean that +":quit" fails now. + +":helpgrep" now uses a help window to display a match. + +In an argument list double quotes could be used to include spaces in a file +name. This caused a difference between ":edit" and ":next" for escaping +double quotes and it is incompatible with some versions of Vi. + Command Vim 6.x file name Vim 7.x file name ~ + :edit foo\"888 foo"888 foo"888 + :next foo\"888 foo888 foo"888 + :next a\"b c\"d ab cd a"b and c"d + +In a |literal-string| a single quote can be doubled to get one. +":echo 'a''b'" would result in "a b", but now that two quotes stand for one it +results in "a'b". + +When overwriting a file with ":w! fname" there was no warning for when "fname" +was being edited by another Vim. Vim now gives an error message |E768|. + +The support for Mac OS 9 has been removed. + +Files ending in .tex now have 'filetype' set to "context", "plaintex", or +"tex". |ft-tex-plugin| + + +Minor incompatibilities: + +For filetype detection: For many types, use */.dir/filename instead of +~/.dir/filename, so that it also works for other user's files. + +For quite a few filetypes the indent settings have been moved from the +filetype plugin to the indent plugin. If you used: > + :filetype plugin on +Then some indent settings may be missing. You need to use: > + :filetype plugin indent on + +":0verbose" now sets 'verbose' to zero instead of one. + +Removed the old and incomplete "VimBuddy" code. + +Buffers without a name report "No Name" instead of "No File". It was +confusing for buffers with a name and 'buftype' set to "nofile". + +When ":file xxx" is used in a buffer without a name, the alternate file name +isn't set. This avoids creating buffers without a name, they are not useful. + +The "2html.vim" script now converts closed folds to HTML. This means the HTML +looks like it's displayed, with the same folds open and closed. Use "zR", or +"let html_ignore_folding=1", if no folds should appear in the HTML. (partly by +Carl Osterwisch) +Diff mode is now also converted to HTML as it is displayed. + +Win32: The effect of the <F10> key depended on 'winaltkeys'. Now it depends +on whether <F10> has been mapped or not. This allows mapping <F10> without +changing 'winaltkeys'. + +When 'octal' is in 'nrformats' and using CTRL-A on "08" it became "018", which +is illogical. Now it becomes "9". The leading zero(s) is(are) removed to +avoid the number becoming octal after incrementing "009" to "010". + +When 'encoding' is set to a Unicode encoding, the value for 'fileencodings' +now includes "default" before "latin1". This means that for files with 8-bit +encodings the default is to use the encoding specified by the environment, if +possible. Previously latin1 would always be used, which is wrong in a +non-latin1 environment, such as Russian. + +Previously Vim would exit when there are two windows, both of them displaying +a help file, and using ":quit". Now only the window is closed. + +"-w {scriptout}" only works when {scriptout} doesn't start with a digit. +Otherwise it's used to set the 'window' option. + +Previously <Home> and <xHome> could be mapped separately. This had the +disadvantage that all mappings (with modifiers) had to be duplicated, since +you can't be sure what the keyboard generates. Now all <xHome> are internally +translated to <Home>, both for the keys and for mappings. Also for <xEnd>, +<xF1>, etc. + +":put" now leaves the cursor on the last inserted line. + +When a .gvimrc file exists then 'compatible' is off, just like when a ".vimrc" +file exists. + +When making a string upper-case with "vlllU" or similar then the German sharp +s is replaced with "SS". This does not happen with "~" to avoid backwards +compatibility problems and because "SS" can't be changed back to a sharp s. + +"gd" previously found the very first occurrence of a variable in a function, +that could be the function argument without type. Now it finds the position +where the type is given. + +The line continuation in functions was not taken into account, line numbers in +errors were logical lines, not lines in the sourced file. That made it +difficult to locate errors. Now the line number in the sourced file is +reported, relative to the function start. This also means that line numbers +for ":breakadd func" are different. + +When defining a user command with |:command| the special items could be +abbreviated. This caused unexpected behavior, such as <li> being recognized +as <line1>. The items can no longer be abbreviated. + +When executing a FileChangedRO autocommand it is no longer allowed to switch +to another buffer or edit another file. This is to prevent crashes (the event +is triggered deep down in the code where changing buffers is not anticipated). +It is still possible to reload the buffer. + +At the |more-prompt| and the |hit-enter-prompt|, when the 'more' option is +set, the 'k', 'u', 'g' and 'b' keys are now used to scroll back to previous +messages. Thus they are no longer used as typeahead. + +============================================================================== +NEW FEATURES *new-7* + +Vim script enhancements *new-vim-script* +----------------------- + +In Vim scripts the following types have been added: + + |List| ordered list of items + |Dictionary| associative array of items + |Funcref| reference to a function + +Many functions and commands have been added to support the new types. + +The |string()| function can be used to get a string representation of a +variable. Works for Numbers, Strings and composites of them. Then |eval()| +can be used to turn the string back into the variable value. + +The |:let| command can now use "+=", "-=" and ".=": > + :let var += expr " works like :let var = var + expr + :let var -= expr " works like :let var = var - expr + :let var .= string " works like :let var = var . string + +With the |:profile| command you can find out where your function or script +is wasting time. + +In the Python interface vim.eval() also handles Dictionaries and Lists. +|python-eval| (G. Sumner Hayes) + +The |getscript| plugin was added as a convenient way to update scripts from +www.vim.org automatically. (Charles Campbell) + +The |vimball| plugin was added as a convenient way to distribute a set of +files for a plugin (plugin file, autoload script, documentation). (Charles +Campbell) + + +Spell checking *new-spell* +-------------- + +Spell checking has been integrated in Vim. There were a few implementations +with scripts, but they were slow and/or required an external program. + +The 'spell' option is used to switch spell checking on or off +The 'spelllang' option is used to specify the accepted language(s) +The 'spellfile' option specifies where new words are added +The 'spellsuggest' option specifies the methods used for making suggestions + +The |]s| and |[s| commands can be used to move to the next or previous error +The |zg| and |zw| commands can be used to add good and wrong words +The |z=| command can be used to list suggestions and correct the word +The |:mkspell| command is used to generate a Vim spell file from word lists + +The "undercurl" highlighting attribute was added to nicely point out spelling +mistakes in the GUI (based on patch from Marcin Dalecki). +The "guisp" color can be used to give it a color different from foreground and +background. +The number of possible different highlight attributes was raised from about +220 to over 30000. This allows for the attributes of spelling to be combined +with syntax highlighting attributes. This is also used for syntax +highlighting and marking the Visual area. + +Much more info here: |spell|. + + +Omni completion *new-omni-completion* +--------------- + +This could also be called "intellisense", but that is a trademark. It is a +smart kind of completion. The text in front of the cursor is inspected to +figure out what could be following. This may suggest struct and class +members, system functions, etc. + +Use CTRL-X CTRL-O in Insert mode to start the completion. |i_CTRL-X_CTRL-O| + +The 'omnifunc' option is set by filetype plugins to define the function that +figures out the completion. + +Currently supported languages: + C |ft-c-omni| + (X)HTML with CSS |ft-html-omni| + JavaScript |ft-javascript-omni| + PHP |ft-php-omni| + Python + Ruby |ft-ruby-omni| + SQL |ft-sql-omni| + XML |ft-xml-omni| + any language with syntax highlighting |ft-syntax-omni| + +You can add your own omni completion scripts. + +When the 'completeopt' option contains "menu" then matches for Insert mode +completion are displayed in a (rather primitive) popup menu. + + +MzScheme interface *new-MzScheme* +------------------ + +The MzScheme interpreter is supported. |MzScheme| + +The |:mzscheme| command can be used to execute MzScheme commands +The |:mzfile| command can be used to execute an MzScheme script file + +This depends on Vim being compiled with the |+mzscheme| feature. + + +Printing multi-byte text *new-print-multi-byte* +------------------------ + +The |:hardcopy| command now supports printing multi-byte characters when using +PostScript. + +The 'printmbcharset' and 'printmbfont' options are used for this. +Also see |postscript-cjk-printing|. (Mike Williams) + + +Tab pages *new-tab-pages* +--------- + +A tab page is a page with one or more windows with a label (aka tab) at the top. +By clicking on the label you can quickly switch between the tab pages. And +with the keyboard, using the |gt| (Goto Tab) command. This is a convenient +way to work with many windows. + +To start Vim with each file argument in a separate tab page use the |-p| +argument. The maximum number of pages can be set with 'tabpagemax'. + +The line with tab labels is either made with plain text and highlighting or +with a GUI mechanism. The GUI labels look better but are only available on a +few systems. The line can be customized with 'tabline', 'guitablabel' and +'guitabtooltip'. Whether it is displayed is set with 'showtabline'. Whether +to use the GUI labels is set with the "e" flag in 'guioptions'. + +The |:tab| command modifier can be used to have most commands that open a new +window open a new tab page instead. + +The |--remote-tab| argument can be used to edit a file in a new tab page in an +already running Vim server. + +Variables starting with "t:" are local to a tab page. + +More info here: |tabpage| +Most of the GUI stuff was implemented by Yegappan Lakshmanan. + + +Undo branches *new-undo-branches* +------------- + +Previously there was only one line of undo-redo. If, after undoing a number +of changes, a new change was made all the undone changes were lost. This +could lead to accidentally losing work. + +Vim now makes an undo branch in this situation. Thus you can go back to the +text after any change, even if they were undone. So long as you do not run +into 'undolevels', when undo information is freed up to limit the memory used. + +To be able to navigate the undo branches each change is numbered sequentially. +The commands |g-| and |:earlier| go back in time, to older changes. The +commands |g+| and |:later| go forward in time, to newer changes. + +The changes are also timestamped. Use ":earlier 10m" to go to the text as it +was about ten minutes earlier. + +The |:undolist| command can be used to get an idea of which undo branches +exist. The |:undo| command now takes an argument to directly jump to a +specific position in this list. The |changenr()| function can be used to +obtain the change number. + +There is no graphical display of the tree with changes, navigation can be +quite confusing. + + +Extended Unicode support *new-more-unicode* +------------------------ + +Previously only two combining characters were displayed. The limit is now +raised to 6. This can be set with the 'maxcombine' option. The default is +still 2. + +|ga| now shows all combining characters, not just the first two. + +Previously only 16 bit Unicode characters were supported for displaying. Now +the full 32 bit character set can be used. Unless manually disabled at +compile time to save a bit of memory. + +For pattern matching it is now possible to search for individual composing +characters. |patterns-composing| + +The |8g8| command searches for an illegal UTF-8 byte sequence. + + +More highlighting *new-more-highlighting* +----------------- + +Highlighting matching parens: + +When moving the cursor through the text and it is on a paren, then the +matching paren can be highlighted. This uses the new |CursorMoved| +autocommand event. + +This means some commands are executed every time you move the cursor. If this +slows you down too much switch it off with: > + :NoMatchParen + +See |matchparen| for more information. + +The plugin uses the |:match| command. It now supports three match patterns. +The plugin uses the third one. The first one is for the user and the second +one can be used by another plugin. + +Highlighting the cursor line and column: + +The 'cursorline' and 'cursorcolumn' options have been added. These highlight +the screen line and screen column of the cursor. This makes the cursor +position easier to spot. 'cursorcolumn' is also useful to align text. This +may make screen updating quite slow. The CursorColumn and CursorLine +highlight groups allow changing the colors used. |hl-CursorColumn| +|hl-CursorLine| + +The number of possible different highlight attributes was raised from about +220 to over 30000. This allows for the attributes of spelling to be combined +with syntax highlighting attributes. This is also used for syntax +highlighting, marking the Visual area, CursorColumn, etc. + + +Translated manual pages *new-manpage-trans* +----------------------- + +The manual page of Vim and associated programs is now also available in +several other languages. + +French - translated by David Blanchet +Italian - translated by Antonio Colombo +Russian - translated by Vassily Ragosin +Polish - translated by Mikolaj Machowski + +The Unix Makefile installs the Italian manual pages in .../man/it/man1/, +.../man/it.ISO8859-1/man1/ and .../man/it.UTF-8/man1/. There appears to be no +standard for what encoding goes in the "it" directory, the 8-bit encoded file +is used there as a best guess. +Other languages are installed in similar places. +The translated pages are not automatically installed when Vim was configured +with "--disable-nls", but "make install-languages install-tool-languages" will +do it anyway. + + +Internal grep *new-vimgrep* +------------- + +The ":vimgrep" command can be used to search for a pattern in a list of files. +This is like the ":grep" command, but no external program is used. Besides +better portability, handling of different file encodings and using multi-line +patterns, this also allows grepping in compressed and remote files. +|:vimgrep|. + +If you want to use the search results in a script you can use the +|getqflist()| function. + +To grep files in various directories the "**" pattern can be used. It expands +into an arbitrary depth of directories. "**" can be used in all places where +file names are expanded, thus also with |:next| and |:args|. + + +Scroll back in messages *new-scroll-back* +----------------------- + +When displaying messages, at the |more-prompt| and the |hit-enter-prompt|, The +'k', 'u', 'g' and 'b' keys can be used to scroll back to previous messages. +This is especially useful for commands such as ":syntax", ":autocommand" and +":highlight". This is implemented in a generic way thus it works for all +commands and highlighting is kept. Only works when the 'more' option is set. +Previously it only partly worked for ":clist". + +The |g<| command can be used to see the last page of messages after you have +hit <Enter> at the |hit-enter-prompt|. Then you can scroll further back. + + +Cursor past end of the line *new-onemore* +--------------------------- + +When the 'virtualedit' option contains "onemore" the cursor can move just past +the end of the line. As if it's on top of the line break. + +This makes some commands more consistent. Previously the cursor was always +past the end of the line if the line was empty. But it is far from Vi +compatible. It may also break some plugins or Vim scripts. Use with care! + +The patch was provided by Mattias Flodin. + + +POSIX compatibility *new-posix* +------------------- + +The POSIX test suite was used to verify POSIX compatibility. A number of +problems have been fixed to make Vim more POSIX compatible. Some of them +conflict with traditional Vi or expected behavior. The $VIM_POSIX environment +variable can be set to get POSIX compatibility. See |posix|. + +Items that were fixed for both Vi and POSIX compatibility: +- repeating "R" with a count only overwrites text once; added the 'X' flag to + 'cpoptions' |cpo-X| +- a vertical movement command that moves to a non-existing line fails; added + the '-' flag to 'cpoptions' |cpo--| +- when preserving a file and doing ":q!" the file can be recovered; added the + '&' flag to 'cpoptions' |cpo-&| +- The 'window' option is partly implemented. It specifies how much CTRL-F and + CTRL-B scroll when there is one window. The "-w {number}" argument is now + accepted. "-w {scriptout}" only works when {scriptout} doesn't start with a + digit. +- Allow "-c{command}" argument, no space between "-c" and {command}. +- When writing a file with ":w!" don't reset 'readonly' when 'Z' is present in + 'cpoptions'. +- Allow 'l' and '#' flags for ":list", ":print" and ":number". +- Added the '.' flag to 'cpoptions': ":cd" fails when the buffer is modified. +- In Ex mode with an empty buffer ":read file" doesn't keep an empty line + above or below the new lines. +- Remove a backslash before a NL for the ":global" command. +- When ":append", ":insert" or ":change" is used with ":global", get the + inserted lines from the command. Can use backslash-NL to separate lines. +- Can use ":global /pat/ visual" to execute Normal mode commands at each + matched line. Use "Q" to continue and go to the next line. +- The |:open| command has been partially implemented. It stops Ex mode, but + redraws the whole screen, not just one line as open mode is supposed to do. +- Support using a pipe to read the output from and write input to an external + command. Added the 'shelltemp' option and has("filterpipe"). +- In ex silent mode the ":set" command output is displayed. +- The ":@@" and ":**" give an error message when no register was used before. +- The search pattern "[]-`]" matches ']', '^', '_' and '`'. +- Autoindent for ":insert" is using the line below the insert. +- Autoindent for ":change" is using the first changed line. +- Editing Ex command lines is not done in cooked mode, because CTRL-D and + CTRL-T cannot be handled then. +- In Ex mode, "1,3" prints three lines. "%" prints all lines. +- In Ex mode "undo" would undo all changes since Ex mode was started. +- Implemented the 'prompt' option. + + +Debugger support *new-debug-support* +---------------- + +The 'balloonexpr' option has been added. This is a generic way to implement +balloon functionality. You can use it to show info for the word under the +mouse pointer. + + +Remote file explorer *new-netrw-explore* +-------------------- + +The netrw plugin now also supports viewing a directory, when "scp://" is used. +Deleting and renaming files is possible. + +To avoid duplicating a lot of code, the previous file explorer plugin has been +integrated in the netrw plugin. This means browsing local and remote files +works the same way. + +":browse edit" and ":browse split" use the netrw plugin when it's available +and a GUI dialog is not possible. + +The netrw plugin is maintained by Charles Campbell. + + +Define an operator *new-define-operator* +------------------ + +Previously it was not possible to define your own operator; a command that is +followed by a {motion}. Vim 7 introduces the 'operatorfunc' option and the +|g@| operator. This makes it possible to define a mapping that works like an +operator. The actual work is then done by a function, which is invoked +through the |g@| operator. + +See |:map-operator| for the explanation and an example. + + +Mapping to an expression *new-map-expression* +------------------------ + +The {rhs} argument of a mapping can be an expression. That means the +resulting characters can depend on the context. Example: > + :inoremap <expr> . InsertDot() +Here the dot will be mapped to whatever InsertDot() returns. + +This also works for abbreviations. See |:map-<expr>| for the details. + + +Visual and Select mode mappings *new-map-select* +------------------------------- + +Previously Visual mode mappings applied both to Visual and Select mode. With +a trick to have the mappings work in Select mode like they would in Visual +mode. + +Commands have been added to define mappings for Visual and Select mode +separately: |:xmap| and |:smap|. With the associated "noremap" and "unmap" +commands. + +The same is done for menus: |:xmenu|, |:smenu|, etc. + + +Location list *new-location-list* +------------- + +The support for a per-window quickfix list (location list) is added. The +location list can be displayed in a location window (similar to the quickfix +window). You can open more than one location list window. A set of commands +similar to the quickfix commands are added to browse the location list. +(Yegappan Lakshmanan) + + +Various new items *new-items-7* +----------------- + +Normal mode commands: ~ + +a", a' and a` New text objects to select quoted strings. |a'| +i", i' and i` (Taro Muraoka) + +CTRL-W <Enter> In the quickfix window: opens a new window to show the + location of the error under the cursor. + +|at| and |it| text objects select a block of text between HTML or XML tags. + +<A-LeftMouse> ('mousemodel' "popup" or "popup-setpos") +<A-RightMouse> ('mousemodel' "extend") + Make a blockwise selection. |<A-LeftMouse>| + +gF Start editing the filename under the cursor and jump + to the line number following the file name. + (Yegappan Lakshmanan) + +CTRL-W F Start editing the filename under the cursor in a new + window and jump to the line number following the file + name. (Yegappan Lakshmanan) + +Insert mode commands: ~ + +CTRL-\ CTRL-O Execute a Normal mode command. Like CTRL-O but + without moving the cursor. |i_CTRL-\_CTRL-O| + +Options: ~ + +'balloonexpr' expression for text to show in evaluation balloon +'completefunc' The name of the function used for user-specified + Insert mode completion. CTRL-X CTRL-U can be used in + Insert mode to do any kind of completion. (Taro + Muraoka) +'completeopt' Enable popup menu and other settings for Insert mode + completion. +'cursorcolumn' highlight column of the cursor +'cursorline' highlight line of the cursor +'formatexpr' expression for formatting text with |gq| and when text + goes over 'textwidth' in Insert mode. +'formatlistpat' pattern to recognize a numbered list for formatting. + (idea by Hugo Haas) +'fsync' Whether fsync() is called after writing a file. + (Ciaran McCreesh) +'guitablabel' expression for text to display in GUI tab page label +'guitabtooltip' expression for text to display in GUI tab page tooltip +'macatsui' Mac: use ATSUI text display functions +'maxcombine' maximum number of combining characters displayed +'maxmempattern' maximum amount of memory to use for pattern matching +'mkspellmem' parameters for |:mkspell| memory use +'mzquantum' Time in msec to schedule MzScheme threads. +'numberwidth' Minimal width of the space used for the 'number' and + 'relativenumber' option. (Emmanuel Renieris) +'omnifunc' The name of the function used for omni completion. +'operatorfunc' function to be called for |g@| operator +'printmbcharset' CJK character set to be used for :hardcopy +'printmbfont' font names to be used for CJK output of :hardcopy +'pumheight' maximum number of items to show in the popup menu +'quoteescape' Characters used to escape quotes inside a string. + Used for the a", a' and a` text objects. |a'| +'shelltemp' whether to use a temp file or pipes for shell commands +'showtabline' whether to show the tab pages line +'spell' switch spell checking on/off +'spellcapcheck' pattern to locate the end of a sentence +'spellfile' file where good and wrong words are added +'spelllang' languages to check spelling for +'spellsuggest' methods for spell suggestions +'synmaxcol' maximum column to look for syntax items; avoids very + slow redrawing when there are very long lines +'tabline' expression for text to display in the tab pages line +'tabpagemax' maximum number of tab pages to open for |-p| +'verbosefile' Log messages in a file. +'wildoptions' "tagfile" value enables listing the file name of + matching tags for CTRL-D command line completion. + (based on an idea from Yegappan Lakshmanan) +'winfixwidth' window with fixed width, similar to 'winfixheight' + + +Ex commands: ~ + +Win32: The ":winpos" command now also works in the console. (Vipin Aravind) + +|:startreplace| Start Replace mode. (Charles Campbell) +|:startgreplace| Start Virtual Replace mode. + +|:0file| Removes the name of the buffer. (Charles Campbell) + +|:diffoff| Switch off diff mode in the current window or in all + windows. + +|:delmarks| Delete marks. + +|:exusage| Help for Ex commands (Nvi command). +|:viusage| Help for Vi commands (Nvi command). + +|:sort| Sort lines in the buffer without depending on an + external command. (partly by Bryce Wagner) + +|:vimgrep| Internal grep command, search for a pattern in files. +|:vimgrepadd| Like |:vimgrep| but don't make a new list. + +|:caddfile| Add error messages to an existing quickfix list + (Yegappan Lakshmanan). +|:cbuffer| Read error lines from a buffer. (partly by Yegappan + Lakshmanan) +|:cgetbuffer| Create a quickfix list from a buffer but don't jump to + the first error. +|:caddbuffer| Add errors from the current buffer to the quickfix + list. +|:cexpr| Read error messages from a Vim expression (Yegappan + Lakshmanan). +|:caddexpr| Add error messages from a Vim expression to an + existing quickfix list. (Yegappan Lakshmanan). +|:cgetexpr| Create a quickfix list from a Vim expression, but + don't jump to the first error. (Yegappan Lakshmanan). + +|:lfile| Like |:cfile| but use the location list. +|:lgetfile| Like |:cgetfile| but use the location list. +|:laddfile| Like |:caddfile| but use the location list. +|:lbuffer| Like |:cbuffer| but use the location list. +|:lgetbuffer| Like |:cgetbuffer| but use the location list. +|:laddbuffer| Like |:caddbuffer| but use the location list. +|:lexpr| Like |:cexpr| but use the location list. +|:lgetexpr| Like |:cgetexpr| but use the location list. +|:laddexpr| Like |:caddexpr| but use the location list. +|:ll| Like |:cc| but use the location list. +|:llist| Like |:clist| but use the location list. +|:lnext| Like |:cnext| but use the location list. +|:lprevious| Like |:cprevious| but use the location list. +|:lNext| Like |:cNext| but use the location list. +|:lfirst| Like |:cfirst| but use the location list. +|:lrewind| Like |:crewind| but use the location list. +|:llast| Like |:clast| but use the location list. +|:lnfile| Like |:cnfile| but use the location list. +|:lpfile| Like |:cpfile| but use the location list. +|:lNfile| Like |:cNfile| but use the location list. +|:lolder| Like |:colder| but use the location list. +|:lnewer| Like |:cnewer| but use the location list. +|:lwindow| Like |:cwindow| but use the location list. +|:lopen| Like |:copen| but use the location list. +|:lclose| Like |:cclose| but use the location list. +|:lmake| Like |:make| but use the location list. +|:lgrep| Like |:grep| but use the location list. +|:lgrepadd| Like |:grepadd| but use the location list. +|:lvimgrep| Like |:vimgrep| but use the location list. +|:lvimgrepadd| Like |:vimgrepadd| but use the location list. +|:lhelpgrep| Like |:helpgrep| but use the location list. +|:lcscope| Like |:cscope| but use the location list. +|:ltag| Jump to a tag and add matching tags to a location list. + +|:undojoin| Join a change with the previous undo block. +|:undolist| List the leafs of the undo tree. + +|:earlier| Go back in time for changes in the text. +|:later| Go forward in time for changes in the text. + +|:for| Loop over a |List|. +|:endfor| + +|:lockvar| Lock a variable, prevents it from being changed. +|:unlockvar| Unlock a locked variable. + +|:mkspell| Create a Vim spell file. +|:spellgood| Add a word to the list of good words. +|:spellwrong| Add a word to the list of bad words +|:spelldump| Dump list of good words. +|:spellinfo| Show information about the spell files used. +|:spellrepall| Repeat a spelling correction for the whole buffer. +|:spellundo| Remove a word from list of good and bad words. + +|:mzscheme| Execute MzScheme commands. +|:mzfile| Execute an MzScheme script file. + +|:nbkey| Pass a key to NetBeans for processing. + +|:profile| Commands for Vim script profiling. +|:profdel| Stop profiling for specified items. + +|:smap| Select mode mapping. +|:smapclear| +|:snoremap| +|:sunmap| + +|:xmap| Visual mode mapping, not used for Select mode. +|:xmapclear| +|:xnoremap| +|:xunmap| + +|:smenu| Select mode menu. +|:snoremenu| +|:sunmenu| + +|:xmenu| Visual mode menu, not used for Select mode. +|:xnoremenu| +|:xunmenu| + +|:tabclose| Close the current tab page. +|:tabdo| Perform a command in every tab page. +|:tabedit| Edit a file in a new tab page. +|:tabnew| Open a new tab page. +|:tabfind| Search for a file and open it in a new tab page. +|:tabnext| Go to the next tab page. +|:tabprevious| Go to the previous tab page. +|:tabNext| Go to the previous tab page. +|:tabfirst| Go to the first tab page. +|:tabrewind| Go to the first tab page. +|:tablast| Go to the last tab page. +|:tabmove| Move the current tab page elsewhere. +|:tabonly| Close all other tab pages. +|:tabs| List the tab pages and the windows they contain. + +Ex command modifiers: ~ + +|:keepalt| Do not change the alternate file. + +|:noautocmd| Do not trigger autocommand events. + +|:sandbox| Execute a command in the sandbox. + +|:tab| When opening a new window create a new tab page. + + +Ex command arguments: ~ + +|++bad| Specify what happens with characters that can't be + converted and illegal bytes. (code example by Yasuhiro + Matsumoto) + Also, when a conversion error occurs or illegal bytes + are found include the line number in the error + message. + + +New and extended functions: ~ + +|add()| append an item to a List +|append()| append List of lines to the buffer +|argv()| without an argument return the whole argument list +|browsedir()| dialog to select a directory +|bufnr()| takes an extra argument: create buffer +|byteidx()| index of a character (Ilya Sher) +|call()| call a function with List as arguments +|changenr()| number of current change +|complete()| set matches for Insert mode completion +|complete_add()| add match for 'completefunc' +|complete_check()| check for key pressed, for 'completefunc' +|copy()| make a shallow copy of a List or Dictionary +|count()| count nr of times a value is in a List or Dictionary +|cursor()| also accepts an offset for 'virtualedit', and + the first argument can be a list: [lnum, col, off] +|deepcopy()| make a full copy of a List or Dictionary +|diff_filler()| returns number of filler lines above line {lnum}. +|diff_hlID()| returns the highlight ID for diff mode +|empty()| check if List or Dictionary is empty +|eval()| evaluate {string} and return the result +|extend()| append one List to another or add items from one + Dictionary to another +|feedkeys()| put characters in the typeahead buffer +|filter()| remove selected items from a List or Dictionary +|finddir()| find a directory in 'path' +|findfile()| find a file in 'path' (Johannes Zellner) +|foldtextresult()| the text displayed for a closed fold at line "lnum" +|function()| make a Funcref out of a function name +|garbagecollect()| cleanup unused |Lists| and |Dictionaries| with circular + references +|get()| get an item from a List or Dictionary +|getbufline()| get a list of lines from a specified buffer + (Yegappan Lakshmanan) +|getcmdtype()| return the current command-line type + (Yegappan Lakshmanan) +|getfontname()| get actual font name being used +|getfperm()| get file permission string (Nikolai Weibull) +|getftype()| get type of file (Nikolai Weibull) +|getline()| with second argument: get List with buffer lines +|getloclist()| list of location list items (Yegappan Lakshmanan) +|getpos()| return a list with the position of cursor, mark, etc. +|getqflist()| list of quickfix errors (Yegappan Lakshmanan) +|getreg()| get contents of a register +|gettabwinvar()| get variable from window in specified tab page. +|has_key()| check whether a key appears in a Dictionary +|haslocaldir()| check if current window used |:lcd| +|hasmapto()| check for a mapping to a string +|index()| index of item in List +|inputlist()| prompt the user to make a selection from a list +|insert()| insert an item somewhere in a List +|islocked()| check if a variable is locked +|items()| get List of Dictionary key-value pairs +|join()| join List items into a String +|keys()| get List of Dictionary keys +|len()| number of items in a List or Dictionary +|map()| change each List or Dictionary item +|maparg()| extra argument: use abbreviation +|mapcheck()| extra argument: use abbreviation +|match()| extra argument: count +|matcharg()| return arguments of |:match| command +|matchend()| extra argument: count +|matchlist()| list with match and submatches of a pattern in a string +|matchstr()| extra argument: count +|max()| maximum value in a List or Dictionary +|min()| minimum value in a List or Dictionary +|mkdir()| create a directory +|pathshorten()| reduce directory names to a single character +|printf()| format text +|pumvisible()| check whether the popup menu is displayed +|range()| generate a List with numbers +|readfile()| read a file into a list of lines +|reltime()| get time value, possibly relative +|reltimestr()| turn a time value into a string +|remove()| remove one or more items from a List or Dictionary +|repeat()| repeat "expr" "count" times (Christophe Poucet) +|reverse()| reverse the order of a List +|search()| extra argument: +|searchdecl()| search for declaration of variable +|searchpair()| extra argument: line to stop searching +|searchpairpos()| return a List with the position of the match +|searchpos()| return a List with the position of the match +|setloclist()| modify a location list (Yegappan Lakshmanan) +|setpos()| set cursor or mark to a position +|setqflist()| modify a quickfix list (Yegappan Lakshmanan) +|settabwinvar()| set variable in window of specified tab page +|sort()| sort a List +|soundfold()| get the sound-a-like equivalent of a word +|spellbadword()| get a badly spelled word +|spellsuggest()| get suggestions for correct spelling +|split()| split a String into a List +|str2nr()| convert a string to a number, base 8, 10 or 16 +|stridx()| extra argument: start position +|strridx()| extra argument: start position +|string()| string representation of a List or Dictionary +|system()| extra argument: filters {input} through a shell command +|tabpagebuflist()| List of buffers in a tab page +|tabpagenr()| number of current or last tab page +|tabpagewinnr()| window number in a tab page +|tagfiles()| List with tags file names +|taglist()| get list of matching tags (Yegappan Lakshmanan) +|tr()| translate characters (Ron Aaron) +|values()| get List of Dictionary values +|winnr()| takes an argument: what window to use +|winrestview()| restore the view of the current window +|winsaveview()| save the view of the current window +|writefile()| write a list of lines into a file + +User defined functions can now be loaded automatically from the "autoload" +directory in 'runtimepath'. See |autoload-functions|. + + +New Vim variables: ~ + +|v:insertmode| used for |InsertEnter| and |InsertChange| autocommands +|v:val| item value in a |map()| or |filter()| function +|v:key| item key in a |map()| or |filter()| function +|v:profiling| non-zero after a ":profile start" command +|v:fcs_reason| the reason why |FileChangedShell| was triggered +|v:fcs_choice| what should happen after |FileChangedShell| +|v:beval_bufnr| buffer number for 'balloonexpr' +|v:beval_winnr| window number for 'balloonexpr' +|v:beval_lnum| line number for 'balloonexpr' +|v:beval_col| column number for 'balloonexpr' +|v:beval_text| text under the mouse pointer for 'balloonexpr' +|v:scrollstart| what caused the screen to be scrolled up +|v:swapname| name of the swap file for the |SwapExists| event +|v:swapchoice| what to do for an existing swap file +|v:swapcommand| command to be executed after handling |SwapExists| +|v:char| argument for evaluating 'formatexpr' + + +New autocommand events: ~ + +|ColorScheme| after loading a color scheme + +|CursorHoldI| the user doesn't press a key for a while in Insert mode +|CursorMoved| the cursor was moved in Normal mode +|CursorMovedI| the cursor was moved in Insert mode + +|FileChangedShellPost| after handling a file changed outside of Vim + +|InsertEnter| starting Insert or Replace mode +|InsertChange| going from Insert to Replace mode or back +|InsertLeave| leaving Insert or Replace mode + +|MenuPopup| just before showing popup menu + +|QuickFixCmdPre| before :make, :grep et al. (Ciaran McCreesh) +|QuickFixCmdPost| after :make, :grep et al. (Ciaran McCreesh) + +|SessionLoadPost| after loading a session file. (Yegappan Lakshmanan) + +|ShellCmdPost| after executing a shell command +|ShellFilterPost| after filtering with a shell command + +|SourcePre| before sourcing a Vim script + +|SpellFileMissing| when a spell file can't be found + +|SwapExists| found existing swap file when editing a file + +|TabEnter| just after entering a tab page +|TabLeave| just before leaving a tab page + +|VimResized| after the Vim window size changed (Yakov Lerner) + + +New highlight groups: ~ + +Pmenu Popup menu: normal item |hl-Pmenu| +PmenuSel Popup menu: selected item |hl-PmenuSel| +PmenuThumb Popup menu: scrollbar |hl-PmenuThumb| +PmenuSbar Popup menu: Thumb of the scrollbar |hl-PmenuSbar| + +TabLine tab pages line, inactive label |hl-TabLine| +TabLineSel tab pages line, selected label |hl-TabLineSel| +TabLineFill tab pages line, filler |hl-TabLineFill| + +SpellBad badly spelled word |hl-SpellBad| +SpellCap word with wrong caps |hl-SpellCap| +SpellRare rare word |hl-SpellRare| +SpellLocal word only exists in other region |hl-SpellLocal| + +CursorColumn 'cursorcolumn' |hl-CursorColumn| +CursorLine 'cursorline' |hl-CursorLine| + +MatchParen matching parens |pi_paren.txt| |hl-MatchParen| + + +New items in search patterns: ~ +|/\%d| \%d123 search for character with decimal number +|/\]| [\d123] idem, in a collection +|/\%o| \%o103 search for character with octal number +|/\]| [\o1o3] idem, in a collection +|/\%x| \%x1a search for character with 2 pos. hex number +|/\]| [\x1a] idem, in a collection +|/\%u| \%u12ab search for character with 4 pos. hex number +|/\]| [\u12ab] idem, in a collection +|/\%U| \%U1234abcd search for character with 8 pos. hex number +|/\]| [\U1234abcd] idem, in a collection + (The above partly by Ciaran McCreesh) + +|/[[=| [[=a=]] an equivalence class (only for latin1 characters) +|/[[.| [[.a.]] a collation element (only works with single char) + +|/\%'m| \%'m match at mark m +|/\%<'m| \%<'m match before mark m +|/\%>'m| \%>'m match after mark m +|/\%V| \%V match in Visual area + +Nesting |/multi| items no longer is an error when an empty match is possible. + +It is now possible to use \{0}, it matches the preceding atom zero times. Not +useful, just for compatibility. + + +New Syntax/Indent/FTplugin files: ~ + +Moved all the indent settings from the filetype plugin to the indent file. +Implemented b:undo_indent to undo indent settings when setting 'filetype' to a +different value. + +a2ps syntax and ftplugin file. (Nikolai Weibull) +ABAB/4 syntax file. (Marius van Wyk) +alsaconf ftplugin file. (Nikolai Weibull) +AppendMatchGroup ftplugin file. (Dave Silvia) +arch ftplugin file. (Nikolai Weibull) +asterisk and asteriskvm syntax file. (Tilghman Lesher) +BDF ftplugin file. (Nikolai Weibull) +BibTeX indent file. (Dorai Sitaram) +BibTeX Bibliography Style syntax file. (Tim Pope) +BTM ftplugin file. (Bram Moolenaar) +calendar ftplugin file. (Nikolai Weibull) +Changelog indent file. (Nikolai Weibull) +ChordPro syntax file. (Niels Bo Andersen) +Cmake indent and syntax file. (Andy Cedilnik) +conf ftplugin file. (Nikolai Weibull) +context syntax and ftplugin file. (Nikolai Weibull) +CRM114 ftplugin file. (Nikolai Weibull) +cvs RC ftplugin file. (Nikolai Weibull) +D indent file. (Jason Mills) +Debian Sources.list syntax file. (Matthijs Mohlmann) +dictconf and dictdconf syntax, indent and ftplugin files. (Nikolai Weibull) +diff ftplugin file. (Bram Moolenaar) +dircolors ftplugin file. (Nikolai Weibull) +django and htmldjango syntax file. (Dave Hodder) +doxygen syntax file. (Michael Geddes) +elinks ftplugin file. (Nikolai Weibull) +eterm ftplugin file. (Nikolai Weibull) +eviews syntax file. (Vaidotas Zemlys) +fetchmail RC ftplugin file. (Nikolai Weibull) +FlexWiki syntax and ftplugin file. (George Reilly) +Generic indent file. (Dave Silvia) +gpg ftplugin file. (Nikolai Weibull) +gretl syntax file. (Vaidotas Zemlys) +groovy syntax file. (Alessio Pace) +group syntax and ftplugin file. (Nikolai Weibull) +grub ftplugin file. (Nikolai Weibull) +Haskell ftplugin file. (Nikolai Weibull) +help ftplugin file. (Nikolai Weibull) +indent ftplugin file. (Nikolai Weibull) +Javascript ftplugin file. (Bram Moolenaar) +Kconfig ftplugin and syntax file. (Nikolai Weibull) +ld syntax, indent and ftplugin file. (Nikolai Weibull) +lftp ftplugin file. (Nikolai Weibull) +libao config ftplugin file. (Nikolai Weibull) +limits syntax and ftplugin file. (Nikolai Weibull) +Lisp indent file. (Sergey Khorev) +loginaccess and logindefs syntax and ftplugin file. (Nikolai Weibull) +m4 ftplugin file. (Nikolai Weibull) +mailaliases syntax file. (Nikolai Weibull) +mailcap ftplugin file. (Nikolai Weibull) +manconf syntax and ftplugin file. (Nikolai Weibull) +matlab ftplugin file. (Jake Wasserman) +Maxima syntax file. (Robert Dodier) +MGL syntax file. (Gero Kuhlmann) +modconf ftplugin file. (Nikolai Weibull) +mplayer config ftplugin file. (Nikolai Weibull) +Mrxvtrc syntax and ftplugin file. (Gautam Iyer) +MuPAD source syntax, indent and ftplugin. (Dave Silvia) +mutt RC ftplugin file. (Nikolai Weibull) +nanorc syntax and ftplugin file. (Nikolai Weibull) +netrc ftplugin file. (Nikolai Weibull) +pamconf syntax and ftplugin file. (Nikolai Weibull) +Pascal indent file. (Neil Carter) +passwd syntax and ftplugin file. (Nikolai Weibull) +PHP compiler plugin. (Doug Kearns) +pinfo ftplugin file. (Nikolai Weibull) +plaintex syntax and ftplugin files. (Nikolai Weibull, Benji Fisher) +procmail ftplugin file. (Nikolai Weibull) +prolog ftplugin file. (Nikolai Weibull) +protocols syntax and ftplugin file. (Nikolai Weibull) +quake ftplugin file. (Nikolai Weibull) +racc syntax and ftplugin file. (Nikolai Weibull) +readline ftplugin file. (Nikolai Weibull) +rhelp syntax file. (Johannes Ranke) +rnoweb syntax file. (Johannes Ranke) +Relax NG compact ftplugin file. (Nikolai Weibull) +Scheme indent file. (Sergey Khorev) +screen ftplugin file. (Nikolai Weibull) +sensors syntax and ftplugin file. (Nikolai Weibull) +services syntax and ftplugin file. (Nikolai Weibull) +setserial syntax and ftplugin file. (Nikolai Weibull) +sieve syntax and ftplugin file. (Nikolai Weibull) +SiSU syntax file (Ralph Amissah) +Sive syntax file. (Nikolai Weibull) +slp config, reg and spi syntax and ftplugin files. (Nikolai Weibull) +SML indent file. (Saikat Guha) +SQL anywhere syntax and indent file. (David Fishburn) +SQL indent file. +SQL-Informix syntax file. (Dean L Hill) +SQL: Handling of various variants. (David Fishburn) +sshconfig ftplugin file. (Nikolai Weibull) +Stata and SMCL syntax files. (Jeff Pitblado) +sudoers ftplugin file. (Nikolai Weibull) +sysctl syntax and ftplugin file. (Nikolai Weibull) +terminfo ftplugin file. (Nikolai Weibull) +trustees syntax file. (Nima Talebi) +Vera syntax file. (David Eggum) +udev config, permissions and rules syntax and ftplugin files. (Nikolai Weibull) +updatedb syntax and ftplugin file. (Nikolai Weibull) +VHDL indent file (Gerald Lai) +WSML syntax file. (Thomas Haselwanter) +Xdefaults ftplugin file. (Nikolai Weibull) +XFree86 config ftplugin file. (Nikolai Weibull) +xinetd syntax, indent and ftplugin file. (Nikolai Weibull) +xmodmap ftplugin file. (Nikolai Weibull) +Xquery syntax file. (Jean-Marc Vanel) +xsd (XML schema) indent file. +YAML ftplugin file. (Nikolai Weibull) +Zsh ftplugin file. (Nikolai Weibull) + + +New Keymaps: ~ + +Sinhala (Sri Lanka) (Harshula Jayasuriya) +Tamil in TSCII encoding (Yegappan Lakshmanan) +Greek in cp737 (Panagiotis Louridas) +Polish-slash (HS6_06) +Ukrainian-jcuken (Anatoli Sakhnik) +Kana (Edward L. Fox) + + +New message translations: ~ + +The Ukrainian messages are now also available in cp1251. +Vietnamese message translations and menu. (Phan Vinh Thinh) + + +Others: ~ + +The |:read| command has the |++edit| argument. This means it will use the +detected 'fileformat', 'fileencoding' and other options for the buffer. This +also fixes the problem that editing a compressed file didn't set these +options. + +The Netbeans interface was updated for Sun Studio 10. The protocol number +goes from 2.2 to 2.3. (Gordon Prieur) + +Mac: When starting up Vim will load the $VIMRUNTIME/macmap.vim script to +define default command-key mappings. (mostly by Benji Fisher) + +Mac: Add the selection type to the clipboard, so that Block, line and +character selections can be used between two Vims. (Eckehard Berns) +Also fixes the problem that setting 'clipboard' to "unnamed" breaks using +"yyp". + +Mac: GUI font selector. (Peter Cucka) + +Mac: support for multi-byte characters. (Da Woon Jung) +This doesn't always work properly. If you see text drawing problems try +switching the 'macatsui' option off. + +Mac: Support the xterm mouse in the non-GUI version. + +Mac: better integration with Xcode. Post a fake mouse-up event after the odoc +event and the drag receive handler to work around a stall after Vim loads a +file. Fixed an off-by-one line number error. (Da Woon Jung) + +Mac: When started from Finder change directory to the file being edited or the +user home directory. + +Added the t_SI and t_EI escape sequences for starting and ending Insert mode. +To be used to set the cursor shape to a bar or a block. No default values, +they are not supported by termcap/terminfo. + +GUI font selector for Motif. (Marcin Dalecki) + +Nicer toolbar buttons for Motif. (Marcin Dalecki) + +Mnemonics for the Motif find/replace dialog. (Marcin Dalecki) + +Included a few improvements for Motif from Marcin Dalecki. Draw label +contents ourselves to make them handle fonts in a way configurable by Vim and +a bit less dependent on the X11 font management. + +Autocommands can be defined local to a buffer. This means they will also work +when the buffer does not have a name or no specific name. See +|autocmd-buflocal|. (Yakov Lerner) + +For xterm most combinations of modifiers with function keys are recognized. +|xterm-modifier-keys| + +When 'verbose' is set the output of ":highlight" will show where a highlight +item was last set. +When 'verbose' is set the output of the ":map", ":abbreviate", ":command", +":function" and ":autocmd" commands will show where it was last defined. +(Yegappan Lakshmanan) + +":function /pattern" lists functions matching the pattern. + +"1gd" can be used like "gd" but ignores matches in a {} block that ends before +the cursor position. Likewise for "1gD" and "gD". + +'scrolljump' can be set to a negative number to scroll a percentage of the +window height. + +The |v:scrollstart| variable has been added to help find the location in +your script that causes the hit-enter prompt. + +To make it possible to handle the situation that a file is being edited that +is already being edited by another Vim instance, the |SwapExists| event has +been added. The |v:swapname|, |v:swapchoice| and |v:swapcommand| variables +can be used, for example to use the |client-server| functionality to bring the +other Vim to the foreground. +When starting Vim with a "-t tag" argument, there is an existing swapfile and +the user selects "quit" or "abort" then exit Vim. + +Undo now also restores the '< and '> marks. "gv" selects the same area as +before the change and undo. + +When editing a search pattern for a "/" or "?" command and 'incsearch' is set +CTRL-L can be used to add a character from the current match. CTRL-R CTRL-W +will add a word, but exclude the part of the word that was already typed. + +Ruby interface: add line number methods. (Ryan Paul) + +The $MYVIMRC environment variable is set to the first found vimrc file. +The $MYGVIMRC environment variable is set to the first found gvimrc file. + +============================================================================== +IMPROVEMENTS *improvements-7* + +":helpgrep" accepts a language specifier after the pattern: "pat@it". + +Moved the help for printing to a separate help file. It's quite a lot now. + +When doing completion for ":!cmd", ":r !cmd" or ":w !cmd" executable files are +found in $PATH instead of looking for ordinary files in the current directory. + +When ":silent" is used and a backwards range is given for an Ex command the +range is swapped automatically instead of asking if that is OK. + +The pattern matching code was changed from a recursive function to an +iterative mechanism. This avoids out-of-stack errors. State is stored in +allocated memory, running out of memory can always be detected. Allows +matching more complex things, but Vim may seem to hang while doing that. + +Previously some options were always evaluated in the |sandbox|. Now that only +happens when the option was set from a modeline or in secure mode. Applies to +'balloonexpr', 'foldexpr', 'foldtext' and 'includeexpr'. (Sumner Hayes) + +Some commands and expressions could have nasty side effects, such as using +CTRL-R = while editing a search pattern and the expression invokes a function +that jumps to another window. The |textlock| has been added to prevent this +from happening. + +":breakadd here" and ":breakdel here" can be used to set or delete a +breakpoint at the cursor. + +It is now possible to define a function with: > + :exe "func Test()\n ...\n endfunc" + +The tutor was updated to make it simpler to use and text was added to explain +a few more important commands. Used ideas from Gabriel Zachmann. + +Unix: When libcall() fails obtain an error message with dlerror() and display +it. (Johannes Zellner) + +Mac and Cygwin: When editing an existing file make the file name the same case +of the edited file. Thus when typing ":e os_UNIX.c" the file name becomes +"os_unix.c". + +Added "nbsp" in 'listchars'. (David Blanchet) + +Added the "acwrite" value for the 'buftype' option. This is for a buffer that +does not have a name that refers to a file and is written with BufWriteCmd +autocommands. + +For lisp indenting and matching parenthesis: (Sergey Khorev) +- square brackets are recognized properly +- #\(, #\), #\[ and #\] are recognized as character literals +- Lisp line comments (delimited by semicolon) are recognized + +Added the "count" argument to match(), matchend() and matchstr(). (Ilya Sher) + +winnr() takes an optional "$" or "#" argument. (Nikolai Weibull, Yegappan +Lakshmanan) + +Added 's' flag to search(): set ' mark if cursor moved. (Yegappan Lakshmanan) +Added 'n' flag to search(): don't move the cursor. (Nikolai Weibull) +Added 'c' flag to search(): accept match at the cursor. +Added 'e' flag to search(): move to end of the match. (Benji Fisher) +Added 'p' flag to search(): return number of sub-pattern. (Benji Fisher) +These also apply to searchpos(), searchpair() and searchpairpos(). + +The search() and searchpair() functions have an extra argument to specify +where to stop searching. Speeds up searches that should not continue too far. + +When uncompressing fails in the gzip plugin, give an error message but don't +delete the raw text. Helps if the file has a .gz extension but is not +actually compressed. (Andrew Pimlott) + +When C, C++ or IDL syntax is used, may additionally load doxygen syntax. +(Michael Geddes) + +Support setting 'filetype' and 'syntax' to "aaa.bbb" for "aaa" plus "bbb" +filetype or syntax. + +The ":registers" command now displays multi-byte characters properly. + +VMS: In the usage message mention that a slash can be used to make a flag +upper case. Add color support to the builtin vt320 terminal codes. +(Zoltan Arpadffy) + +For the '%' item in 'viminfo', allow a number to set a maximum for the number +of buffers. + +For recognizing the file type: When a file looks like a shell script, check +for an "exec" command that starts the tcl interpreter. (suggested by Alexios +Zavras) + +Support conversion between utf-8 and latin9 (iso-8859-15) internally, so that +digraphs still work when iconv is not available. + +When a session file is loaded while editing an unnamed, empty buffer that +buffer is wiped out. Avoids that there is an unused buffer in the buffer +list. + +Win32: When libintl.dll supports bind_textdomain_codeset(), use it. +(NAKADAIRA Yukihiro) + +Win32: Vim was not aware of hard links on NTFS file systems. These are +detected now for when 'backupcopy' is "auto". Also fixed a bogus "file has +been changed since reading it" error for links. + +When foldtext() finds no text after removing the comment leader, use the +second line of the fold. Helps for C-style /* */ comments where the first +line is just "/*". + +When editing the same file from two systems (e.g., Unix and MS-Windows) there +mostly was no warning for an existing swap file, because the name of the +edited file differs (e.g., y:\dir\file vs /home/me/dir/file). Added a flag to +the swap file to indicate it is in the same directory as the edited file. The +used path then doesn't matter and the check for editing the same file is much +more reliable. + +Unix: When editing a file through a symlink the swap file would use the name +of the symlink. Now use the name of the actual file, so that editing the same +file twice is detected. (suggestions by Stefano Zacchiroli and James Vega) + +Client-server communication now supports 'encoding'. When setting 'encoding' +in a Vim server to "utf-8", and using "vim --remote fname" in a console, +"fname" is converted from the console encoding to utf-8. Also allows Vims +with different 'encoding' settings to exchange messages. + +Internal: Changed ga_room into ga_maxlen, so that it doesn't need to be +incremented/decremented each time. + +When a register is empty it is not stored in the viminfo file. + +Removed the tcltags script, it's obsolete. + +":redir @*>>" and ":redir @+>>" append to the clipboard. Better check for +invalid characters after the register name. |:redir| + +":redir => variable" and ":redir =>> variable" write or append to a variable. +(Yegappan Lakshmanan) |:redir| + +":redir @{a-z}>>" appends to register a to z. (Yegappan Lakshmanan) + +The 'verbosefile' option can be used to log messages in a file. Verbose +messages are not displayed then. The "-V{filename}" argument can be used to +log startup messages. + +":let g:" lists global variables. +":let b:" lists buffer-local variables. +":let w:" lists window-local variables. +":let v:" lists Vim variables. + +The stridx() and strridx() functions take a third argument, where to start +searching. (Yegappan Lakshmanan) + +The getreg() function takes an extra argument to be able to get the expression +for the '=' register instead of the result of evaluating it. + +The setline() function can take a List argument to set multiple lines. When +the line number is just below the last line the line is appended. + +g CTRL-G also shows the number of characters if it differs from the number of +bytes. + +Completion for ":debug" and entering an expression for the '=' register. Skip +":" between range and command name. (Peter winters) + +CTRL-Q in Insert mode now works like CTRL-V by default. Previously it was +ignored. + +When "beep" is included in 'debug' a function or script that causes a beep +will result in a message with the source of the error. + +When completing buffer names, match with "\(^\|[\/]\)" instead of "^", so that +":buf stor<Tab>" finds both "include/storage.h" and "storage/main.c". + +To count items (pattern matches) without changing the buffer the 'n' flag has +been added to |:substitute|. See |count-items|. + +In a |:substitute| command the \u, \U, \l and \L items now also work for +multi-byte characters. + +The "screen.linux" $TERM name is recognized to set the default for +'background' to "dark". (Ciaran McCreesh) Also for "cygwin" and "putty". + +The |FileChangedShell| autocommand event can now use the |v:fcs_reason| +variable that specifies what triggered the event. |v:fcs_choice| can be used +to reload the buffer or ask the user what to do. + +Not all modifiers were recognized for xterm function keys. Added the +possibility in term codes to end in ";*X" or "O*X", where X is any character +and the * stands for the modifier code. +Added the <xUp>, <xDown>, <xLeft> and <xRight> keys, to be able to recognize +the two forms that xterm can send their codes in and still handle all possible +modifiers. + +getwinvar() now also works to obtain a buffer-local option from the specified +window. + +Added the "%s" item to 'errorformat'. (Yegappan Lakshmanan) +Added the "%>" item to 'errorformat'. + +For 'errorformat' it was not possible to have a file name that contains the +character that follows after "%f". For example, in "%f:%l:%m" the file name +could not contain ":". Now include the first ":" where the rest of the +pattern matches. In the example a ":" not followed by a line number is +included in the file name. (suggested by Emanuele Giaquinta) + +GTK GUI: use the GTK file dialog when it's available. Mix from patches by +Grahame Bowland and Evan Webb. + +Added ":scriptnames" to bugreport.vim, so that we can see what plugins were +used. + +Win32: If the user changes the setting for the number of lines a scroll wheel +click scrolls it is now used immediately. Previously Vim would need to be +restarted. + +When using @= in an expression the value is expression @= contains. ":let @= += value" can be used to set the register contents. + +A ! can be added to ":popup" to have the popup menu appear at the mouse +pointer position instead of the text cursor. + +The table with encodings has been expanded with many MS-Windows codepages, +such as cp1250 and cp737, so that these can also be used on Unix without +prepending "8bit-". +When an encoding name starts with "microsoft-cp" ignore the "microsoft-" part. + +Added the "customlist" completion argument to a user-defined command. The +user-defined completion function should return the completion candidates as a +Vim List and the returned results are not filtered by Vim. (Yegappan +Lakshmanan) + +Win32: Balloons can have multiple lines if common controls supports it. +(Sergey Khorev) + +For command-line completion the matches for various types of arguments are now +sorted: user commands, variables, syntax names, etc. + +When no locale is set, thus using the "C" locale, Vim will work with latin1 +characters, using its own isupper()/toupper()/etc. functions. + +When using an rxvt terminal emulator guess the value of 'background' using the +COLORFGBG environment variable. (Ciaran McCreesh) + +Also support t_SI and t_EI on Unix with normal features. (Ciaran McCreesh) + +When 'foldcolumn' is one then put as much info in it as possible. This allows +closing a fold with the mouse by clicking on the '-'. + +input() takes an optional completion argument to specify the type of +completion supported for the input. (Yegappan Lakshmanan) + +"dp" works with more than two buffers in diff mode if there is only one where +'modifiable' is set. + +The 'diffopt' option has three new values: "horizontal", "vertical" and +"foldcolumn". + +When the 'include' option contains \zs the file name found is what is being +matched from \zs to the end or \ze. Useful to pass more to 'includeexpr'. + +Loading plugins on startup now supports subdirectories in the plugin +directory. |load-plugins| + +In the foldcolumn always show the '+' for a closed fold, so that it can be +opened easily. It may overwrite another character, esp. if 'foldcolumn' is 1. + +It is now possible to get the W10 message again by setting 'readonly'. Useful +in the FileChangedRO autocommand when checking out the file fails. + +Unix: When open() returns EFBIG give an appropriate message. + +":mksession" sets the SessionLoad variable to notify plugins. A modeline is +added to the session file to set 'filetype' to "vim". + +In the ATTENTION prompt put the "Delete it" choice before "Quit" to make it +more logical. (Robert Webb) + +When appending to a file while the buffer has no name the name of the appended +file would be used for the current buffer. But the buffer contents is +actually different from the file content. Don't set the file name, unless the +'P' flag is present in 'cpoptions'. + +When starting to edit a new file and the directory for the file doesn't exist +then Vim will report "[New DIRECTORY]" instead of "[New File] to give the user +a hint that something might be wrong. + +Win32: Preserve the hidden attribute of the viminfo file. + +In Insert mode CTRL-A didn't keep the last inserted text when using CTRL-O and +then a cursor key. Now keep the previously inserted text if nothing is +inserted after the CTRL-O. Allows using CTRL-O commands to move the cursor +without losing the last inserted text. + +The exists() function now supports checking for autocmd group definition +and for supported autocommand events. (Yegappan Lakshmanan) + +Allow using ":global" in the sandbox, it doesn't do anything harmful by +itself. + +":saveas asdf.c" will set 'filetype' to c when it's empty. Also for ":w +asdf.c" when it sets the filename for the buffer. + +Insert mode completion for whole lines now also searches unloaded buffers. + +The colortest.vim script can now be invoked directly with ":source" or +":runtime syntax/colortest.vim". + +The 'statusline' option can be local to the window, so that each window can +have a different value. (partly by Yegappan Lakshmanan) + +The 'statusline' option and other options that support the same format can now +use these new features: +- When it starts with "%!" the value is first evaluated as an expression + before parsing the value. +- "%#HLname#" can be used to start highlighting with HLname. + +When 'statusline' is set to something that causes an error message then it is +made empty to avoid an endless redraw loop. Also for other options, such at +'tabline' and 'titlestring'. ":verbose set statusline" will mention that it +was set in an error handler. + +When there are several matching tags, the ":tag <name>" and CTRL-] commands +jump to the [count] matching tag. (Yegappan Lakshmanan) + +Win32: In the batch files generated by the install program, use $VIMRUNTIME or +$VIM if it's set. Example provided by Mathias Michaelis. +Also create a vimtutor.bat batch file. + +The 'balloonexpr' option is now |global-local|. + +The system() function now runs in cooked mode, thus can be interrupted by +CTRL-C. + +============================================================================== +COMPILE TIME CHANGES *compile-changes-7* + +Dropped the support for the BeOS and Amiga GUI. They were not maintained and +probably didn't work. If you want to work on this: get the Vim 6.x version +and merge it back in. + +When running the tests and one of them fails to produce "test.out" the +following tests are still executed. This helps when running out of memory. + +When compiling with EXITFREE defined and the ccmalloc library it is possible +to detect memory leaks. Some memory will always reported as leaked, such as +allocated by X11 library functions and the memory allocated in alloc_cmdbuff() +to store the ":quit" command. + +Moved the code for printing to src/hardcopy.c. + +Moved some code from main() to separate functions to make it easier to see +what is being done. Using a structure to avoid a lot of arguments to the +functions. + +Moved unix_expandpath() to misc1.c, so that it can also be used by os_mac.c +without copying the code. + +--- Mac --- + +"make" now creates the Vim.app directory and "make install" copies it to its +final destination. (Raf) + +Put the runtime directory not directly in Vim.app but in +Vim.app/Contents/Resources/vim, so that it's according to Mac specs. + +Made it possible to compile with Motif, Athena or GTK without tricks and still +being able to use the MacRoman conversion. Added the os_mac_conv.c file. + +When running "make install" the runtime files are installed as for Unix. +Avoids that too many files are copied. When running "make" a link to the +runtime files is created to avoid a recursive copy that takes much time. + +Configure will attempt to build Vim for both Intel and PowerPC. The +--with-mac-arch configure argument can change it. + +--- Win32 --- + +The Make_mvc.mak file was adjusted to work with the latest MS compilers, +including the free version of Visual Studio 2005. (George Reilly) + +INSTALLpc.txt was updated for the recent changes. (George Reilly) + +The distributed executable is now produced with the free Visual C++ Toolkit +2003 and other free SDK chunks. msvcsetup.bat was added to support this. + +Also generate the .pdb file that can be used to generate a useful crash report +on MS-Windows. (George Reilly) + +============================================================================== +BUG FIXES *bug-fixes-7* + +When using PostScript printing on MS-DOS the default 'printexpr' used "lpr" +instead of "copy". When 'printdevice' was empty the copy command did not +work. Use "LPT1" then. + +The GTK font dialog uses a font size zero when the font name doesn't include a +size. Use a default size of 10. + +This example in the documentation didn't work: + :e `=foo . ".c"` +Skip over the expression in `=expr` when looking for comments, |, % and #. + +When ":helpgrep" doesn't find anything there is no error message. + +"L" and "H" did not take closed folds into account. + +Win32: The "-P title" argument stopped at the first title that matched, even +when it doesn't support MDI. + +Mac GUI: CTRL-^ and CTRL-@ did not work. + +"2daw" on "word." at the end of a line didn't include the preceding white +space. + +Win32: Using FindExecutable() doesn't work to find a program. Use +SearchPath() instead. For executable() use $PATHEXT when the program searched +for doesn't have an extension. + +When 'virtualedit' is set, moving the cursor up after appending a character +may move it to a different column. Was caused by auto-formatting moving the +cursor and not putting it back where it was. + +When indent was added automatically and then moving the cursor, the indent was +not deleted (like when pressing ESC). The "I" flag in 'cpoptions' can be used +to make it work the old way. + +When opening a command-line window, 'textwidth' gets set to 78 by the Vim +filetype plugin. Reset 'textwidth' to 0 to avoid lines are broken. + +After using cursor(line, col) moving up/down doesn't keep the same column. + +Win32: Borland C before 5.5 requires using ".u." for LowPart and HighPart +fields. (Walter Briscoe) + +On Sinix SYS_NMLN isn't always defined. Define it ourselves. (Cristiano De +Michele) + +Printing with PostScript may keep the printer waiting for more. Append a +CTRL-D to the printer output. (Mike Williams) + +When converting a string with a hex or octal number the leading '-' was +ignored. ":echo '-05' + 0" resulted in 5 instead of -5. + +Using "@:" to repeat a command line didn't work when it contains control +characters. Also remove "'<,'>" when in Visual mode to avoid that it appears +twice. + +When using file completion for a user command, it would not expand environment +variables like for a regular command with a file argument. + +'cindent': When the argument of a #define looks like a C++ class the next line +is indented too much. + +When 'comments' includes multi-byte characters inserting the middle part and +alignment may go wrong. 'cindent' also suffers from this for right-aligned +items. + +Win32: when 'encoding' is set to "utf-8" getenv() still returns strings in the +active codepage. Convert to utf-8. Also for $HOME. + +The default for 'helplang' was "zh" for both "zh_cn" and "zh_tw". Now use +"cn" or "tw" as intended. + +When 'bin' is set and 'eol' is not set then line2byte() added the line break +after the last line while it's not there. + +Using foldlevel() in a WinEnter autocommand may not work. Noticed when +resizing the GUI shell upon startup. + +Python: Using buffer.append(f.readlines()) didn't work. Allow appending a +string with a trailing newline. The newline is ignored. + +When using the ":saveas f2" command for buffer "f1", the Buffers menu would +contain "f2" twice, one of them leading to "f1". Also trigger the BufFilePre +and BufFilePost events for the alternate buffer that gets the old name. + +strridx() did not work well when the needle is empty. (Ciaran McCreesh) + +GTK: Avoid a potential hang in gui_mch_wait_for_chars() when input arrives +just before it is invoked + +VMS: Occasionally CR characters were inserted in the file. Expansion of +environment variables was not correct. (Zoltan Arpadffy) + +UTF-8: When 'delcombine' is set "dw" only deleted the last combining character +from the first character of the word. + +When using ":sball" in an autocommand only the filetype in one buffer was +detected. Reset did_filetype in enter_buffer(). + +When using ":argdo" and the window already was at the first argument index, +but not actually editing it, the current buffer would be used instead. + +When ":next dir/*" includes many matches, adding the names to the argument +list may take an awful lot of time and can't be interrupted. Allow +interrupting this. + +When editing a file that was already loaded in a buffer, modelines were not +used. Now window-local options in the modeline are set. Buffer-local options +and global options remain unmodified. + +Win32: When 'encoding' is set to "utf-8" in the vimrc file, files from the +command line with non-ASCII characters are not used correctly. Recode the +file names when 'encoding' is set, using the Unicode command line. + +Win32 console: When the default for 'encoding' ends up to be "latin1", the +default value of 'isprint' was wrong. + +When an error message is given while waiting for a character (e.g., when an +xterm reports the number of colors), the hit-enter prompt overwrote the last +line. Don't reset msg_didout in normal_cmd() for K_IGNORE. + +Mac GUI: Shift-Tab didn't work. + +When defining tooltip text, don't translate terminal codes, since it's not +going to be used like a command. + +GTK 2: Check the tooltip text for valid utf-8 characters to avoid getting a +GTK error. Invalid characters may appear when 'encoding' is changed. + +GTK 2: Add a safety check for invalid utf-8 sequences, they can crash pango. + +Win32: When 'encoding' is changed while starting up, use the Unicode command +line to convert the file arguments to 'encoding'. Both for the GUI and the +console version. + +Win32 GUI: latin9 text (iso-8859-15) was not displayed correctly, because +there is no codepage for latin9. Do our own conversion from latin9 to UCS2. + +When two versions of GTK+ 2 are installed it was possible to use the header +files from one and the library from the other. Use GTK_LIBDIR to put the +directory for the library early in the link flags. + +With the GUI find/replace dialog a replace only worked if the pattern was +literal text. Now it works for any pattern. + +When 'equalalways' is set and 'eadirection' is "hor", ":quit" would still +cause equalizing window heights in the vertical direction. + +When ":emenu" is used in a startup script the command was put in the typeahead +buffer, causing a prompt for the crypt key to be messed up. + +Mac OS/X: The default for 'isprint' included characters 128-160, causes +problems for Terminal.app. + +When a syntax item with "containedin" is used, it may match in the start or +end of a region with a matchgroup, while this doesn't happen for a "contains" +argument. + +When a transparent syntax items matches in another item where the highlighting +has already stopped (because of a he= argument), the highlighting would come +back. + +When cscope is used to set the quickfix error list, it didn't get set if there +was only one match. (Sergey Khorev) + +When 'confirm' is set and using ":bdel" in a modified buffer, then selecting +"cancel", would still give an error message. + +The PopUp menu items that started Visual mode didn't work when not in Normal +mode. Switching between selecting a word and a line was not possible. + +Win32: The keypad decimal point always resulted in a '.', while on some +keyboards it's a ','. Use MapVirtualKey(VK_DECIMAL, 2). + +Removed unused function DisplayCompStringOpaque() from gui_w32.c + +In Visual mode there is not always an indication whether the line break is +selected or not. Highlight the character after the line when the line break +is included, e.g., after "v$o". + +GTK: The <F10> key can't be mapped, it selects the menu. Disable that with a +GTK setting and do select the menu when <F10> isn't mapped. (David Necas) + +After "Y" '[ and '] were not at start/end of the yanked text. + +When a telnet connection is dropped Vim preserves files and exits. While +doing that a SIGHUP may arrive and disturb us, thus ignore it. (Scott +Anderson) Also postpone SIGHUP, SIGQUIT and SIGTERM until it's safe to +handle. Added handle_signal(). + +When completing a file name on the command line backslashes are required for +white space. Was only done for a space, not for a Tab. + +When configure could not find a terminal library, compiling continued for a +long time before reporting the problem. Added a configure check for tgetent() +being found in a library. + +When the cursor is on the first char of the last line a ":g/pat/s///" command +may cause the cursor to be displayed below the text. + +Win32: Editing a file with non-ASCII characters doesn't work when 'encoding' +is "utf-8". use _wfullpath() instead of _fullpath(). (Yu-sung Moon) + +When recovering the 'fileformat' and 'fileencoding' were taken from the +original file instead of from the swapfile. When the file didn't exist, was +empty or the option was changed (e.g., with ":e ++fenc=cp123 file") it could +be wrong. Now store 'fileformat' and 'fileencoding' in the swapfile and use +the values when recovering. + +":bufdo g/something/p" overwrites each last printed text line with the file +message for the next buffer. Temporarily clear 'shortmess' to avoid that. + +Win32: Cannot edit a file starting with # with --remote. Do escape % and # +when building the ":drop" command. + +A comment or | just after an expression-backtick argument was not recognized. +E.g. in :e `="foo"`"comment. + +"(" does not stop at an empty sentence (single dot and white space) while ")" +does. Also breaks "das" on that dot. + +When doing "yy" with the cursor on a TAB the ruler could be wrong and "k" +moved the cursor to another column. + +When 'commentstring' is '"%s' and there is a double quote in the line a double +quote before the fold marker isn't removed in the text displayed for a closed +fold. + +In Visual mode, when 'bin' and 'eol' set, g CTRL-G counted the last line +break, resulting in "selected 202 of 201 bytes". + +Motif: fonts were not used for dialog components. (Marcin Dalecki) + +Motif: After using a toolbar button the keyboard focus would be on the toolbar +(Lesstif problem). (Marcin Dalecki) + +When using "y<C-V>`x" where mark x is in the first column, the last line was +not included. + +Not all test scripts work properly on MS-Windows when checked out from CVS. +Use a Vim command to fix all fileformats to dos before executing the tests. + +When using ":new" and the file fits in the window, lines could still be above +the window. Now remove empty lines instead of keeping the relative position. + +Cmdline completion didn't work after ":let var1 var<Tab>". + +When using ":startinsert" or ":startreplace" when already in Insert mode +(possible when using CTRL-R =), pressing Esc would directly restart Insert +mode. (Peter Winters) + +"2daw" didn't work at end of file if the last word is a single character. + +Completion for ":next a'<Tab>" put a backslash before single quote, but it was +not removed when editing a file. Now halve backslashes in save_patterns(). +Also fix expanding a file name with the shell that contains "\'". + +When doing "1,6d|put" only "fewer lines" was reported. Now a following "more +lines" overwrites the message. + +Configure could not handle "-Dfoo=long\ long" in the TCL config output. + +When searching backwards, using a pattern that matches a newline and uses \zs +after that, didn't find a match. Could also get a hang or end up in the right +column in the wrong line. + +When $LANG is "sl" for slovenian, the slovak menu was used, since "slovak" +starts with "sl". + +When 'paste' is set in the GUI the Paste toolbar button doesn't work. Clear +'paste' when starting the GUI. + +A message about a wrong viminfo line included the trailing NL. + +When 'paste' is set in the GUI the toolbar button doesn't work in Insert mode. +Use ":exe" in menu.vim to avoid duplicating the commands, instead of using a +mapping. + +Treat "mlterm" as an xterm-like terminal. (Seiichi Sato) + +":z.4" and ":z=4" didn't work Vi compatible. + +When sourcing a file, editing it and sourcing it again, it could appear twice +in ":scriptnames" and get a new <SID>, because the inode has changed. + +When $SHELL is set but empty the 'shell' option would be empty. Don't use an +empty $SHELL value. + +A command "w! file" in .vimrc or $EXINIT didn't work. Now it writes an empty +file. + +When a CTRL-F command at the end of the file failed, the cursor was still +moved to the start of the line. Now it remains where it is. + +When using ":s" or "&" to repeat the last substitute and "$" was used to put +the cursor in the last column, put the cursor in the last column again. This +is Vi compatible. + +Vim is not fully POSIX compliant but sticks with traditional Vi behavior. +Added a few flags in 'cpoptions' to behave the POSIX way when wanted. The +$VIM_POSIX environment variable is checked to set the default. + +Appending to a register didn't insert a line break like Vi. Added the '>' +flag to 'cpoptions' for this. + +Using "I" in a line with only blanks appended to the line. This is not Vi +compatible. Added the 'H' flag in 'coptions' for this. + +When joining multiple lines the cursor would be at the last joint, but Vi +leaves it at the position where "J" would put it. Added the 'q' flag in +'cpoptions' for this. + +Autoindent didn't work for ":insert" and ":append". + +Using ":append" in an empty buffer kept the dummy line. Now it's deleted to +be Vi compatible. + +When reading commands from a file and stdout goes to a terminal, would still +request the xterm version. Vim can't read it, thus the output went to the +shell and caused trouble there. + +When redirecting to a register with an invalid name the redirection would +still be done (after an error message). Now reset "redir_reg". (Yegappan +Lakshmanan) + +It was not possible to use a NL after a backslash in Ex mode. This is +sometimes used to feed multiple lines to a shell command. + +When 'cmdheight' is set to 2 in .vimrc and the GUI uses the number of lines +from the terminal we actually get 3 lines for the cmdline in gvim. + +When setting $HOME allocated memory would leak. + +Win32: bold characters may sometimes write in another character cell. Use +unicodepdy[] as for UTF-8. (Taro Muraoka) + +":w fname" didn't work for files with 'buftype' set to "nofile". + +The method used to locate user commands for completion differed from when they +are executed. Ambiguous command names were not completed properly. + +Incremental search may cause a crash when there is a custom statusline that +indirectly invokes ":normal". + +Diff mode failed when $DIFF_OPTIONS was set in the environment. Unset it +before invoking "diff". + +Completion didn't work after ":argdo", ":windo" and ":bufdo". Also for ":set +&l:opt" and ":set &g:opt". (Peter Winters) + +When setting 'ttymouse' to "dec" in an xterm that supports the DEC mouse +locator it doesn't work. Now switch off the mouse before selecting another +mouse model. + +When the CursorHold event is triggered and the commands peek for typed +characters the typeahead buffer may be messed up, e.g., when a mouse-up event +is received. Avoid invoking the autocommands from the function waiting for a +character, let it put K_CURSORHOLD in the input buffer. + +Removed the "COUNT" flag from ":argadd", to avoid ":argadd 1*" to be used like +":1argadd *". Same for ":argdelete" and ":argedit". + +Avoid that $LANG is used for the menus when LC_MESSAGES is "en_US". + +Added backslashes before dashes in the vim.1 manual page to make the appear as +real dashes. (Pierr Habouzit) + +Where "gq" left the cursor depended on the value of 'formatprg'. Now "gq" +always leaves the cursor at the last line of the formatted text. + +When editing a compressed file, such as "changelog.Debian.gz" file, filetype +detection may try to check the contents of the file while it's still +compressed. Skip setting 'filetype' for compressed files until they have been +decompressed. Required for patterns that end in a "*". + +Starting with an argument "+cmd" or "-S script" causes the cursor the be moved +to the first line. That breaks a BufReadPost autocommand that uses g`". +Don't move the cursor if it's somewhere past the first line. + +"gg=G" while 'modifiable' is off was uninterruptible. + +When 'encoding' is "sjis" inserting CTRL-V u d800 a few times causes a crash. +Don't insert a DBCS character with a NUL second byte. + +In Insert mode CTRL-O <Home> didn't move the cursor. Made "ins_at_eol" global +and reset it in nv_home(). + +Wildcard expansion failed: ":w /tmp/$$.`echo test`". Don't put quotes around +spaces inside backticks. + +After this sequence of commands: Y V p gv: the wrong line is selected. Now +let "gv" select the text that was put, since the original text is deleted. +This should be the most useful thing to do. + +":sleep 100u" sleeps for 100 seconds, not 100 usec as one might expect. Give +an error message when the argument isn't recognized. + +In gui_mch_draw_string() in gui_w32.c "unibuflen" wasn't static, resulting in +reallocating the buffer every time. (Alexei Alexandrov) + +When using a Python "atexit" function it was not invoked when Vim exits. Now +call Py_Finalize() for that. (Ugo Di Girolamo) +This breaks the thread stuff though, fixed by Ugo. + +GTK GUI: using a .vimrc with "set cmdheight=2 lines=43" and ":split" right +after startup, the window layout is messed up. (Michael Schaap) Added +win_new_shellsize() call in gui_init() to fix the topframe size. + +Trick to get ...MOUSE_NM not used when there are vertical splits. Now pass +column -1 for the left most window and add MOUSE_COLOFF for others. Limits +mouse column to 10000. + +searchpair() may hang when the end pattern has "\zs" at the end. Check that +we find the same position again and advance one character. + +When in diff mode and making a change that causes the "changed" highlighting +to disappear or reappear, it was still highlighted in another window. + +When a ":next" command fails because the user selects "Abort" at the ATTENTION +prompt the argument index was advanced anyway. + +When "~" is in 'iskeyword' the "gd" doesn't work, it's used for the previous +substitute pattern. Put "\V" in the pattern to avoid that. + +Use of sprintf() sometimes didn't check properly for buffer overflow. Also +when using smsg(). Included code for snprintf() to avoid having to do size +checks where invoking them + +":help \=<Tab>" didn't find "sub-replace-\=". Wild menu for help tags didn't +show backslashes. ":he :s\=" didn't work. + +When reading an errorfile "~/" in a file name was not expanded. + +GTK GUI: When adding a scrollbar (e.g. when using ":vsplit") in a script or +removing it the window size may change. GTK sends us resize events when we +change the window size ourselves, but they may come at an unexpected moment. +Peek for a character to get any window resize events and fix 'columns' and +'lines' to undo this. + +When using the GTK plug mechanism, resizing and focus was not working +properly. (Neil Bird) + +After deleting files from the argument list a session file generated with +":mksession" may contain invalid ":next" commands. + +When 'shortmess' is empty and 'keymap' set to accents, in Insert mode CTRL-N +may cause the hit-enter prompt. Typing 'a then didn't result in the accented +character. Put the character typed at the prompt back in the typeahead buffer +so that mapping is done in the right mode. + +setbufvar() and setwinvar() did not give error messages. + +It was possible to set a variable with an illegal name, e.g. with setbufvar(). +It was possible to define a function with illegal name, e.t. ":func F{-1}()" + +CTRL-W F and "gf" didn't use the same method to get the file name. + +When reporting a conversion error the line number of the last error could be +given. Now report the first encountered error. + +When using ":e ++enc=name file" and iconv() was used for conversion an error +caused a fall-back to no conversion. Now replace a character with '?' and +continue. + +When opening a new buffer the local value of 'bomb' was not initialized from +the global value. + +Win32: When using the "Edit with Vim" entry the file name was limited to about +200 characters. + +When using command line completion for ":e *foo" and the file "+foo" exists +the resulting command ":e +foo" doesn't work. Now insert a backslash: ":e +\+foo". + +When the translation of "-- More --" was not 10 characters long the following +message would be in the wrong position. + +At the more-prompt the last character in the last line wasn't drawn. + +When deleting non-existing text while 'virtualedit' is set the '[ and '] marks +were not set. + +Win32: Could not use "**/" in 'path', it had to be "**\". + +The search pattern "\n" did not match at the end of the last line. + +Searching for a pattern backwards, starting on the NUL at the end of the line +and 'encoding' is "utf-8" would match the pattern just before it incorrectly. +Affected searchpair('/\*', '', '\*/'). + +For the Find/Replace dialog it was possible that not finding the text resulted +in an error message while redrawing, which cleared the syntax highlighting +while it was being used, resulting in a crash. Now don't clear syntax +highlighting, disable it with b_syn_error. + +Win32: Combining UTF-8 characters were drawn on the previous character. +Could be noticed with a Thai font. + +Output of ":function" could leave some of the typed text behind. (Yegappan +Lakshmanan) + +When the command line history has only a few lines the command line window +would be opened with these lines above the first window line. + +When using a command line window for search strings ":qa" would result in +searching for "qa" instead of quitting all windows. + +GUI: When scrolling with the scrollbar and there is a line that doesn't fit +redrawing may fail. Make sure w_skipcol is valid before redrawing. + +Limit the values of 'columns' and 'lines' to avoid an overflow in Rows * +Columns. Fixed bad effects when running out of memory (command line would be +reversed, ":qa!" resulted in ":!aq"). + +Motif: "gvim -iconic" opened the window anyway. (David Harrison) + +There is a tiny chance that a symlink gets created between checking for an +existing file and creating a file. Use the O_NOFOLLOW for open() if it's +available. + +In an empty line "ix<CTRL-O>0" moved the cursor to after the line instead of +sticking to the first column. + +When using ":wq" and a BufWriteCmd autocmd uses inputsecret() the text was +echoed anyway. Set terminal to raw mode in getcmdline(). + +Unix: ":w a;b~c" caused an error in expanding wildcards. + +When appending to a file with ":w >>fname" in a buffer without a name, causing +the buffer to use "fname", the modified flag was reset. + +When appending to the current file the "not edited" flag would be reset. +":w" would overwrite the file accidentally. + +Unix: When filtering text with an external command Vim would still read input, +causing text typed for the command (e.g., a password) to be eaten and echoed. +Don't read input when the terminal is in cooked mode. + +The Cygwin version of xxd used CR/LF line separators. (Corinna Vinschen) + +Unix: When filtering text through a shell command some resulting text may be +dropped. Now after detecting that the child has exited try reading some more +of its output. + +When inside input(), using "CTRL-R =" and the expression throws an exception +the command line was not abandoned but it wasn't used either. Now abandon +typing the command line. + +'delcombine' was also used in Visual and Select mode and for commands like +"cl". That was illogical and has been disabled. + +When recording while a CursorHold autocommand was defined special keys would +appear in the register. Now the CursorHold event is not triggered while +recording. + +Unix: the src/configure script used ${srcdir-.}, not all shells understand +that. Use ${srcdir:-.} instead. + +When editing file "a" which is a symlink to file "b" that doesn't exist, +writing file "a" to create "b" and then ":split b" resulted in two buffers on +the same file with two different swapfile names. Now set the inode in the +buffer when creating a new file. + +When 'esckeys' is not set don't send the xterm code to request the version +string, because it may cause trouble in Insert mode. + +When evaluating an expression for CTRL-R = on the command line it was possible +to call a function that opens a new window, resulting in errors for +incremental search, and many other nasty things were possible. Now use the +|textlock| to disallow changing the buffer or jumping to another window +to protect from unexpected behavior. Same for CTRL-\ e. + +"d(" deleted the character under the cursor, while the documentation specified +an exclusive motion. Vi also doesn't delete the character under the cursor. + +Shift-Insert in Insert mode could put the cursor before the last character +when it just fits in the window. In coladvance() don't stop at the window +edge when filling with spaces and when in Insert mode. In mswin.vim avoid +getting a beep from the "l" command. + +Win32 GUI: When Alt-F4 is used to close the window and Cancel is selected in +the dialog then Vim would insert <M-F4> in the text. Now it's ignored. + +When ":silent! {cmd}" caused the swap file dialog, which isn't displayed, +there would still be a hit-enter prompt. + +Requesting the termresponse (|t_RV|) early may cause problems with "-c" +arguments that invoke an external command or even "-c quit". Postpone it +until after executing "-c" arguments. + +When typing in Insert mode so that a new line is started, using CTRL-G u to +break undo and start a new change, then joining the lines with <BS> caused +undo info to be missing. Now reset the insertion start point. + +Syntax HL: When a region start match has a matchgroup and an offset that +happens to be after the end of the line then it continued in the next line and +stopped at the region end match, making the region continue after that. +Now check for the column being past the end of the line in syn_add_end_off(). + +When changing a file, setting 'swapfile' off and then on again, making another +change and killing Vim, then some blocks may be missing from the swapfile. +When 'swapfile' is switched back on mark all blocks in the swapfile as dirty. +Added mf_set_dirty(). + +Expanding wildcards in a command like ":e aap;<>!" didn't work. Put +backslashes before characters that are special to the shell. (Adri Verhoef) + +A CursorHold autocommand would cause a message to be cleared. Don't show the +special key for the event for 'showcmd'. + +When expanding a file name for a shell command, as in "!cmd foo<Tab>" or ":r +!cmd foo<Tab>" also escape characters that are special for the shell: +"!;&()<>". + +When the name of the buffer was set by a ":r fname" command |cpo-f| no +autocommands were triggered to notify about the change in the buffer list. + +In the quickfix buffer 'bufhidden' was set to "delete", which caused closing +the quickfix window to leave an unlisted "No Name" buffer behind every time. + +Win32: when using two screens of different size, setting 'lines' to a large +value didn't fill the whole screen. (SungHyun Nam) + +Win32 installer: The generated _vimrc contained an absolute path to diff.exe. +After upgrading it becomes invalid. Now use $VIMRUNTIME instead. + +The command line was cleared to often when 'showmode' was set and ":silent +normal vy" was used. Don't clear the command line unless the mode was +actually displayed. Added the "mode_displayed" variable. + +The "load session" toolbar item could not handle a space or other special +characters in v:this_session. + +":set sta ts=8 sw=4 sts=2" deleted 4 spaces halfway a line instead of 2. + +In a multi-byte file the foldmarker could be recognized in the trail byte. +(Taro Muraoka) + +Pasting with CTRL-V and menu didn't work properly when some commands are +mapped. Use ":normal!" instead of ":normal". (Tony Apuzzo) + +Crashed when expanding a file name argument in backticks. + +In some situations the menu and scrollbar didn't work, when the value contains +a CSI byte. (Yukihiro Nakadaira) + +GTK GUI: When drawing the balloon focus changes and we might get a key release +event that removed the balloon again. Ignore the key release event. + +'titleold' was included in ":mkexrc" and ":mksession" files. + +":set background&" didn't use the same logic as was used when starting up. + +When "umask" is set such that nothing is writable then the viminfo file would +be written without write permission. (Julian Bridle) + +Motif: In diff mode dragging one scrollbar didn't update the scrollbar of the +other diff'ed window. + +When editing in an xterm with a different number of colors than expected the +screen would be cleared and redrawn, causing the message about the edited file +to be cleared. Now set "keep_msg" to redraw the last message. + +For a color terminal: When the Normal HL uses bold, possibly to make the color +lighter, and another HL group specifies a color it might become light as well. +Now reset bold if a HL group doesn't specify bold itself. + +When using 256 color xterm the color 255 would show up as color 0. Use a +short instead of a char to store the color number. + +ml_get errors when searching for "\n\zs" in an empty file. + +When selecting a block and using "$" to select until the end of every line and +not highlighting the character under the cursor the first character of the +block could be unhighlighted. + +When counting words for the Visual block area and using "$" to select until +the end of every line only up to the length of the last line was counted. + +"dip" in trailing empty lines left one empty line behind. + +The script ID was only remembered globally for each option. When a buffer- or +window-local option was set the same "last set" location was changed for all +buffers and windows. Now remember the script ID for each local option +separately. + +GUI: The "Replace All" button didn't handle backslashes in the replacement in +the same way as "Replace". Escape backslashes so that they are taken +literally. + +When using Select mode from Insert mode and typing a key, causing lines to be +deleted and a message displayed, delayed the effect of inserting the key. +Now overwrite the message without delay. + +When 'whichwrap' includes "l" then "dl" and "yl" on a single letter line +worked differently. Now recognize all operators when using "l" at the end of +a line. + +GTK GUI: when the font selector returned a font name with a comma in it then +it would be handled like two font names. Now put a backslash before the +comma. + +MS-DOS, Win32: When 'encoding' defaults to "latin1" then the value for +'iskeyword' was still for CPxxx. And when 'nocompatible' was set 'isprint' +would also be the wrong value. + +When a command was defined not to take arguments and no '|' no warning message +would be given for using a '|'. Also with ":loadkeymap". + +Motif: When using a fontset and 'encoding' is "utf-8" and sizeof(wchar_t) != +sizeof(XChar2b) then display was wrong. (Yukihiro Nakadaira) + +":all" always set the current window to the first window, even when it +contains a buffer that is not in the argument list (can't be closed because it +is modified). Now go to the window that has the first item of the argument +list. + +GUI: To avoid left-over pixels from bold text all characters after a character +with special attributes were redrawn. Now only do this for characters that +actually are bold. Speeds up displaying considerably. + +When only highlighting changes and the text is scrolled at the same time +everything is redraw instead of using a scroll and updating the changed text. +E.g., when using ":match" to highlight a paren that the cursor landed on. +Added SOME_VALID: Redraw the whole window but also try to scroll to minimize +redrawing. + +Win32: When using Korean IME making it active didn't work properly. (Moon, +Yu-sung, 2005 March 21) + +Ruby interface: when inserting/deleting lines display wasn't updated. (Ryan +Paul) + +--- fixes since Vim 7.0b --- + +Getting the GCC version in configure didn't work with Solaris sed. First +strip any "darwin." and then get the version number. + +The "autoload" directory was missing from the self-installing executable for +MS-Windows. + +The MS-Windows install program would find "vimtutor.bat" in the install +directory. After changing to "c:" also change to "\" to avoid looking in the +install directory. + +To make the 16 bit DOS version compile exclude not used highlight +initializations and build a tiny instead of small version. + +finddir() and findfile() accept a negative count and return a List then. + +The Python indent file contained a few debugging statements, removed. + +Expanding {} for a function name, resulting in a name starting with "s:" was +not handled correctly. + +Spelling: renamed COMPOUNDMAX to COMPOUNDWORDMAX. Added several items to be +able to handle the new Hungarian dictionary. + +Mac: Default to building for the current platform only, that is much faster +than building a universal binary. Also, using Perl/Python/etc. only works for +the current platform. + +The time on undo messages disappeared for someone. Using %T for strftime() +apparently doesn't work everywhere. Use %H:%M:%S instead. + +Typing BS at the "z=" prompt removed the prompt. + +--- fixes and changes since Vim 7.0c --- + +When jumping to another tab page the Vim window size was always set, even when +nothing in the layout changed. + +Win32 GUI tab pages line wasn't always enabled. Do a proper check for the +compiler version. + +Win32: When switching between tab pages the Vim window was moved when part of +it was outside of the screen. Now only do that in the direction of a size +change. + +Win32: added menu to GUI tab pages line. (Yegappan Lakshmanan) + +Mac: Added document icons. (Benji Fisher) + +Insert mode completion: Using Enter to accept the current match causes +confusion. Use CTRL-Y instead. Also, use CTRL-E to go back to the typed +text. + +GUI: When there are left and right scrollbars, ":tabedit" kept them instead of +using the one that isn't needed. + +Using "gP" to replace al the text could leave the cursor below the last line, +causing ml_get errors. + +When 'cursorline' is set don't use the highlighting when Visual mode is +active, otherwise it's difficult to see the selected area. + +The matchparen plugin restricts the search to 100 lines, to avoid a long delay +when there are closed folds. + +Sometimes using CTRL-X s to list spelling suggestions used text from another +line. + +Win32: Set the default for 'isprint' back to the wrong default "@,~-255", +because many people use Windows-1252 while 'encoding' is "latin1". + +GTK: Added a workaround for gvim crashing when used over an untrusted ssh +link, caused by GTK doing something nasty. (Ed Catmur) + +Win32: The font used for the tab page labels is too big. Use the system menu +font. (George Reilly) + +Win32: Adjusting the window position and size to keep it on the screen didn't +work properly when the taskbar is on the left or top of the screen. + +The installman.sh and installml.sh scripts use ${10}, that didn't work with +old shells. And use "test -f" instead of "test -e". + +Win32: When 'encoding' was set in the vimrc then a directory argument for diff +mode didn't work. + +GUI: at the inputlist() prompt the cursorshape was adjusted as if the windows +were still at their old position. + +The parenmatch plugin didn't remember the highlighting per window. + +Using ":bd" for a buffer that's the current window in another tab page caused +a crash. + +For a new tab page the 'scroll' option wasn't set to a good default. + +Using an end offset for a search "/pat/e" didn't work properly for multi-byte +text. (Yukihiro Nakadaira) + +":s/\n/,/" doubled the text when used on the last line. + +When "search" is in 'foldopen' "[s" and "]s" now open folds. + +When using a numbered function "dict" can be omitted, but "self" didn't work +then. Always add FC_DICT to the function flags when it's part of a +dictionary. + +When "--remote-tab" executes locally it left an empty tab page. + +"gvim -u NONE", ":set cursorcolumn", "C" in the second line didn't update +text. Do update further lines even though the "$" is displayed. + +VMS: Support GTK better, also enable +clientserver. (Zoltan Arpadffy) + +When highlighting of statusline or tabline is changed there was no redraw to +show the effect. + +Mac: Added "CFBundleIdentifier" to infplist.xml. + +Added tabpage-local variables t:var. + +Win32: Added double-click in tab pages line creates new tab. (Yegappan +Lakshmanan) + +Motif: Added GUI tab pages line. (Yegappan Lakshmanan) + +Fixed crash when 'lines' was set to 1000 in a modeline. + +When init_spellfile() finds a writable directory in 'runtimepath' but it +doesn't contain a "spell" directory, create one. + +Win32: executable() also finds "xxd" in the directory where Vim was started, +but "!xxd" doesn't work. Append the Vim starting directory to $PATH. + +The tab page labels are shortened, directory names are reduced to a single +letter by default. Added the pathshorten() function to allow a user to do the +same. + +":saveas" now resets 'readonly' if the file was successfully written. + +Set $MYVIMRC file to the first found .vimrc file. +Set $MYGVIMRC file to the first found .gvimrc file. +Added menu item "Startup Settings" that edits the $MYVIMRC file + +Added matcharg(). + +Error message E745 appeared twice. Renamed one to E786. + +Fixed crash when using "au BufRead * Sexplore" and doing ":help". Was wiping +out a buffer that's still in a window. + +":hardcopy" resulted in an error message when 'encoding' is "utf-8" and +'printencoding' is empty. Now it assumes latin1. (Mike Williams) + +The check for the toolbar feature for Motif, depending on certain included +files, wasn't detailed enough, causing building to fail in gui_xmebw.c. + +Using CTRL-E in Insert mode completion after CTRL-P inserted the first match +instead of the original text. + +When displaying a UTF-8 character with a zero lower byte Vim might think the +previous character is double-wide. + +The "nbsp" item of 'listchars' didn't work when 'encoding' was utf-8. + +Motif: when Xm/xpm.h is missing gui_xmebw.c would not compile. +HAVE_XM_UNHIGHLIGHTT_H was missing a T. + +Mac: Moved the .icns files into src/os_mac_rsrc, so that they can all be +copied at once. Adjusted the Info.plist file for three icons. + +When Visual mode is active while switching to another tabpage could get ml_get +errors. + +When 'list' is set, 'nowrap' the $ in the first column caused 'cursorcolumn' +to move to the right. + +When a line wraps, 'cursorcolumn' was never displayed past the end of the +line. + +'autochdir' was only available when compiled with NetBeans and GUI. Now it's +a separate feature, also available in the "big" version. + +Added CTRL-W gf: open file under cursor in new tab page. + +When using the menu in the tab pages line, "New Tab" opens the new tab before +where the click was. Beyond the labels the new tab appears at the end instead +of after the current tab page. + +Inside a mapping with an expression getchar() could not be used. + +When vgetc is used recursively vgetc_busy protects it from being used +recursively. But after a ":normal" command the protection was reset. + +":s/a/b/n" didn't work when 'modifiable' was off. + +When $VIMRUNTIME includes a multi-byte character then rgb.txt could not be +found. (Yukihiro Nakadaira) + +":mkspell" didn't work correctly for non-ASCII affix flags when conversion is +needed on the spell file. + +glob('/dir/\$ABC/*') didn't work. + +When using several tab pages and changing 'cmdheight' the display could become +messed up. Now store the value of 'cmdheight' separately for each tab page. + +The user of the Enter key while the popup menu is visible was still confusing. +Now use Enter to select the match after using a cursor key. + +Added "usetab" to 'switchbuf'. + + +--- fixes and changes since Vim 7.0d --- + +Added CTRL-W T: move a window to a new tab page. + +Using CTRL-X s in Insert mode to complete spelling suggestions and using BS +deleted characters before the bad word. + +A few small fixes for the VMS makefile. (Zoltan Arpadffy) + +With a window of 91 lines 45 cols, ":vsp" scrolled the window. Copy w_wrow +when splitting a window and skip setting the height when it's already at the +right value. + +Using <silent> in a mapping with a shell command and the GUI caused redraw +to use wrong attributes. + +Win32: Using MSVC 4.1 for install.exe resulted in the start menu items to be +created in the administrator directory instead of "All Users". Define the +CSIDL_ items if they are missing. + +Motif: The GUI tabline did not use the space above the right scrollbar. Work +around a bug in the Motif library. (Yegappan Lakshmanan) + +The extra files for XML Omni completion are now also installed. +|xml-omni-datafile| + +GTK GUI: when 'm' is missing from 'guioptions' during startup and pressing +<F10> GTK produced error messages. Now do create the menu but disable it just +after the first gui_mch_update(). + +":mkspell" doesn't work well with the Hungarian dictionary from the Hunspell +project. Back to the Myspell dictionary. + +In help files hide the | used around tags. + +Renamed pycomplete to pythoncomplete. + +Added "tabpages" to 'sessionoptions'. + +When 'guitablabel' is set the effect wasn't visible right away. + +Fixed a few 'cindent' errors. + +When completing menu names, e.g., after ":emenu", don't sort the entries but +keep them in the original order. + +Fixed a crash when editing a directory in diff mode. Don't trigger +autocommands when executing the diff command. + +Getting a keystroke could get stuck if 'encoding' is a multi-byte encoding and +typing a special key. + +When 'foldignore' is set the folds were not updated right away. + +When a list is indexed with [a : b] and b was greater than the length an error +message was given. Now silently truncate the result. + +When using BS during Insert mode completion go back to the original text, so +that CTRL-N selects the first matching entry. + +Added the 'M' flag to 'cinoptions'. + +Win32: Make the "gvim --help" window appear in the middle of the screen +instead of at an arbitrary position. (Randall W. Morris) + +Added gettabwinvar() and settabwinvar(). + +Command line completion: pressing <Tab> after ":e /usr/*" expands the whole +tree, because it becomes ":e /usr/**". Don't add a star if there already is +one. + +Added grey10 to grey90 to all GUIs, so that they can all be used for +initializing highlighting. Use grey40 for CursorColumn and CursorLine when +'background' is "dark". + +When reading a file and using iconv for conversion, an incomplete byte +sequence at the end caused problems. (Yukihiro Nakadaira) + + +--- fixes and changes since Vim 7.0e --- + +Default color for MatchParen when 'background' is "dark" is now DarkCyan. + +":syn off" had to be used twice in a file that sets 'syntax' in a modeline. +(Michael Geddes) + +When using ":vsp" or ":sp" the available space wasn't used equally between +windows. (Servatius Brandt) + +Expanding <cWORD> on a trailing blank resulted in the first word in the line +if 'encoding' is a multi-byte encoding. + +Spell checking: spellbadword() didn't see a missing capital in the first word +of a line. Popup menu now only suggest the capitalized word when appropriate. + +When using whole line completion CTRL-L moves through the matches but it +didn't work when at the original text. + +When completion finds the longest match, don't go to the first match but stick +at the original text, so that CTRL-N selects the first one. + +Recognize "zsh-beta" like "zsh" for setting the 'shellpipe' default. (James +Vega) + +When using ":map <expr>" and the expression results in something with a +special byte (NUL or CSI) then it didn't work properly. Now escape special +bytes. + +The default Visual highlighting for a color xterm with 8 colors was a magenta +background, which made magenta text disappear. Now use reverse in this +specific situation. + +After completing the longest match "." didn't insert the same text. Repeating +also didn't work correctly for multi-byte text. + +When using Insert mode completion and BS the whole word that was completed +would result in all possible matches. Now stop completion. Also fixes that +for spell completion the previous word was deleted. + +GTK: When 'encoding' is "latin1" and using non-ASCII characters in a file name +the tab page label was wrong and an error message would be given. + +The taglist() function could hang on a tags line with a non-ASCII character. + +Win32: When 'encoding' differs from the system encoding tab page labels with +non-ASCII characters looked wrong. (Yegappan Lakshmanan) + +Motif: building failed when Xm/Notebook.h doesn't exist. Added a configure +check, disable GUI tabline when it's missing. + +Mac: When compiled without multi-byte feature the clipboard didn't work. + +It was possible to switch to another tab page when the cmdline window is open. + +Completion could hang when 'lines' is 6 and a preview window was opened. + +Added CTRL-W gF: open file under cursor in new tab page and jump to the line +number following the file name. +Added 'guitabtooltip'. Implemented for Win32 (Yegappan Lakshmanan). + +Added "throw" to 'debug' option: throw an exception for error messages even +whey they would otherwise be ignored. + +When 'keymap' is set and a line contains an invalid entry could get a "No +mapping found" warning instead of a proper error message. + +Motif: default to using XpmAttributes instead of XpmAttributes_21. + +A few more changes for 64 bit MS-Windows. (George Reilly) + +Got ml_get errors when doing "o" and selecting in other window where there are +less lines shorter than the cursor position in the other window. ins_mouse() +was using position in wrong window. + +Win32 GUI: Crash when giving a lot of messages during startup. Allocate twice +as much memory for the dialog template. + +Fixed a few leaks and wrong pointer use reported by coverity. + +When showing menus the mode character was sometimes wrong. + +Added feedkeys(). (Yakov Lerner) + +Made matchlist() always return all submatches. + +Moved triggering QuickFixCmdPost to before jumping to the first location. + +Mac: Added the 'macatsui' option as a temporary work around for text drawing +problems. + +Line completion on "/**" gave error messages when scanning an unloaded buffer. + +--- fixes and changes since Vim 7.0f --- + +Win32: The height of the tab page labels is now adjusted to the font height. +(Yegappan Lakshmanan) + +Win32: selecting the tab label was off by one. (Yegappan Lakshmanan) + +Added tooltips for Motif and GTK tab page labels. (Yegappan Lakshmanan) + +When 'encoding' is "utf-8" then ":help spell" would report an illegal byte and +the file was not converted from latin1 to utf-8. Now retry with latin1 if +reading the file as utf-8 results in illegal bytes. + +Escape the argument of feedkeys() before putting it in the typeahead buffer. +(Yukihiro Nakadaira) + +Added the v:char variable for evaluating 'formatexpr'. (Yukihiro Nakadaira) + +With 8 colors Search highlighting combined with Statement highlighted text +made the text disappear. + +VMS: avoid warnings for redefining MAX and MIN. (Zoltan Arpadffy) + +When 'virtualedit' includes "onemore", stopping Visual selection would still +move the cursor left. + +Prevent that using CTRL-R = in Insert mode can start Visual mode. + +Fixed a crash that occurred when in Insert mode with completion active and a +mapping caused edit() to be called recursively. + +When using CTRL-O in Insert mode just after the last character while +'virtualedit' is "all", then typing CR moved the last character to the next +line. Call coladvance() before starting the new line. + +When using |:shell| ignore clicks on the tab page labels. Also when using the +command line window. + +When 'eventignore' is "all" then adding more to ignoring some events, e.g., +for ":vimgrep", would actually trigger more events. + +Win32: When a running Vim uses server name GVIM1 then "gvim --remote fname" +didn't find it. When looking for a server name that doesn't end in a digit +and it is not found then use another server with that name and a number (just +like on Unix). + +When using "double" in 'spellsuggest' when the language doesn't support sound +folding resulted in too many suggestions. + +Win32: Dropping a shortcut on the Vim icon didn't edit the referred file like +editing it in another way would. Use fname_expand() in buf_set_name() instead +of simply make the file name a full path. + +Using feedkeys() could cause Vim to hang. + +When closing another tab page from the tabline menu in Insert mode the tabline +was not updated right away. + +The syntax menu didn't work in compatible mode. + +After using ":tag id" twice with the same "id", ":ts" and then ":pop" a ":ts" +reported no matching tag. Clear the cached tag name. + +In Insert mode the matchparen plugin highlighted the wrong paren when there is +a string just next to a paren. + +GTK: After opening a new tab page the text was sometimes not drawn correctly. +Flush output and catch up with events when updating the tab page labels. + +In the GUI, using CTRL-W q to close the last window of a tab page could cause +a crash. + +GTK: The tab pages line menu was not converted from 'encoding' to utf-8. + +Typing a multi-byte character or a special key at the hit-enter prompt did not +work. + +When 'virtualedit' contains "onemore" CTRL-O in Insert mode still moved the +cursor left when it was after the end of the line, even though it's allowed to +be there. + +Added test for using tab pages. + +towupper() and towlower() were not used, because of checking for +__STDC__ISO_10646__ instead of __STDC_ISO_10646__. (sertacyildiz) + +For ":map <expr>" forbid changing the text, jumping to another buffer and +using ":normal" to avoid nasty side effects. + +--- fixes and changes since Vim 7.0g --- + +Compilation error on HP-UX, use of "dlerr" must be inside a #ifdef. +(Gary Johnson) + +Report +reltime feature in ":version" output. + +The tar and zip plugins detect failure to get the contents of the archive and +edit the file as-is. + +When the result of 'guitablabel' is empty fall back to the default label. + +Fixed crash when using ":insert" in a while loop and missing "endwhile". + +"gt" and other commands could move to another window when |textlock| active +and when the command line window was open. + +Spell checking a file with syntax highlighting and a bad word at the end of +the line is ignored could make "]s" hang. + +Mac: inputdialog() didn't work when compiled with big features. + +Interrupting ":vimgrep" while it is busy loading a file left a modified and +hidden buffer behind. Use enter_cleanup() and leave_cleanup() around +wipe_buffer(). + +When making 'keymap' empty the b:keymap_name variable wasn't deleted. + +Using CTRL-N that searches a long time, pressing space to interrupt the +searching and accept the first match, the popup menu was still displayed +briefly. + +When setting the Vim window height with -geometry the 'window' option could be +at a value that makes CTRL-F behave differently. + +When opening a quickfix window in two tabs they used different buffers, +causing redrawing problems later. Now use the same buffer for all quickfix +windows. (Yegappan Lakshmanan) + +When 'mousefocus' is set moving the mouse to the text tab pages line would +move focus to the first window. Also, the mouse pointer would jump to the +active window. + +In a session file, when an empty buffer is wiped out, do this silently. + +When one window has the cursor on the last line and another window is resized +to make that window smaller, the cursor line could go below the displayed +lines. In win_new_height() subtract one from the available space. +Also avoid that using "~" lines makes the window scroll down. + +Mac: When sourcing the "macmap.vim" script and then finding a .vimrc file the +'cpo' option isn't set properly, because it was already set and restored. +Added the <special> argument to ":map", so that 'cpo' doesn't need to be +changed to be able to use <> notation. Also do this for ":menu" for +consistency. + +When using "/encoding=abc" in a spell word list, only "bc" was used. + +When 'encoding' and 'printencoding' were both "utf-8" then ":hardcopy" didn't +work. (Mike Williams) + +Mac: When building with "--disable-gui" the install directory would still be +"/Applications" and Vim.app would be installed. Now install in /usr/local as +usual for a console application. + +GUI: when doing completion and there is one match and still searching for +another, the cursor was displayed at the end of the line instead of after the +match. Now show the cursor after the match while still searching for matches. + +GUI: The mouse shape changed on the statusline even when 'mouse' was empty and +they can't be dragged. + +GTK2: Selecting a button in the confirm() dialog with Tab or cursor keys and +hitting Enter didn't select that button. Removed GTK 1 specific code. (Neil +Bird) + +When evaluating 'balloonexpr' takes a long time it could be called +recursively, which could cause a crash. + +exists() could not be used to detect whether ":2match" is supported. Added a +check for it specifically. + +GTK1: Tab page labels didn't work. (Yegappan Lakshmanan) + +Insert mode completion: When finding matches use 'ignorecase', but when adding +matches to the list don't use it, so that all words with different case are +added, "word", "Word" and "WORD". + +When 'cursorline' and 'hlsearch' are set and the search pattern is "x\n" +the rest of the line was highlighted as a match. + +Cursor moved while evaluating 'balloonexpr' that invokes ":isearch" and +redirects the output. Don't move the cursor to the command line if msg_silent +is set. + +exists() ignored text after a function name and option name, which could +result in false positives. + +exists() ignored characters after the recognized word, which can be wrong when +using a name with non-keyword characters. Specifically, these calls no longer +allow characters after the name: exists('*funcname') exists('*funcname(...') +exists('&option') exists(':cmd') exists('g:name') exists('g:name[n]') +exists('g:name.n') + +Trigger the TabEnter autocommand only after entering the current window of the +tab page, otherwise the commands are executed with an invalid current window. + +Win32: When using two monitors and Vim is on the second monitor, changing the +width of the Vim window could make it jump to the first monitor. + +When scrolling back at the more prompt and the quitting a line of text would +be left behind when 'cmdheight' is 2 or more. + +Fixed a few things for Insert mode completion, especially when typing BS, +CTRL-N or a printable character while still searching for matches. + + +============================================================================== +VERSION 7.1 *version-7.1* *version7.1* + +This section is about improvements made between version 7.0 and 7.1. + +This is a bug-fix release, there are no fancy new features. + + +Changed *changed-7.1* +------- + +Added setting 'mouse' in vimrc_example.vim. + +When building with MZscheme also look for include files in the "plt" +subdirectory. That's where they are for FreeBSD. + +The Ruby interface module is now called "Vim" instead of "VIM". But "VIM" is +an alias, so it's backwards compatible. (Tim Pope) + + +Added *added-7.1* +----- + +New syntax files: + /var/log/messages (Yakov Lerner) + Autohotkey (Nikolai Weibull) + AutoIt v3 (Jared Breland) + Bazaar commit file "bzr". (Dmitry Vasiliev) + Cdrdao TOC (Nikolai Weibull) + Cmusrc (Nikolai Weibull) + Conary recipe (rPath Inc) + Framescript (Nikolai Weibull) + FreeBasic (Mark Manning) + Hamster (David Fishburn) + IBasic (Mark Manning) + Initng (Elan Ruusamae) + Ldapconf (Nikolai Weibull) + Litestep (Nikolai Weibull) + Privoxy actions file (Doug Kearns) + Streaming Descriptors "sd" (Puria Nafisi Azizi) + +New tutor files: + Czech (Lubos Turek) + Hungarian (Arpad Horvath) + Turkish (Serkan kkk) + utf-8 version of Greek tutor. + utf-8 version of Russian tutor. + utf-8 version of Slowak tutor. + +New filetype plugins: + Bst (Tim Pope) + Cobol (Tim Pope) + Fvwm (Gautam Iyer) + Hamster (David Fishburn) + Django HTML template (Dave Hodder) + +New indent files: + Bst (Tim Pope) + Cobol (Tim Pope) + Hamster (David Fishburn) + Django HTML template (Dave Hodder) + Javascript + JSP (David Fishburn) + +New keymap files: + Bulgarian (Boyko Bantchev) + Mongolian (Natsagdorj Shagdar) + Thaana (Ibrahim Fayaz) + Vietnamese (Samuel Thibault) + +Other new runtime files: + Ada support files. (Neil Bird, Martin Krischik) + Slovenian menu translations (Mojca Miklavec) + Mono C# compiler plugin (Jarek Sobiecki) + + +Fixed *fixed-7.1* +----- + +Could not build the Win32s version. Added a few structure definitions in +src/gui_w32.c + + +Patch 7.0.001 +Problem: ":set spellsuggest+=10" does not work. (Suresh Govindachar) +Solution: Add P_COMMA to the 'spellsuggest' flags. +Files: src/option.c + +Patch 7.0.002 +Problem: C omni completion has a problem with tags files with a path + containing "#" or "%". +Solution: Escape these characters. (Sebastian Baberowski) +Files: runtime/autoload/ccomplete.vim + +Patch 7.0.003 +Problem: GUI: clicking in the lower part of a label in the tab pages line + while 'mousefocus' is set may warp the mouse pointer. (Robert + Webb) +Solution: Check for a negative mouse position. +Files: src/gui.c + +Patch 7.0.004 +Problem: Compiler warning for debug_saved used before set. (Todd Blumer) +Solution: Remove the "else" for calling save_dbg_stuff(). +Files: src/ex_docmd.c + +Patch 7.0.005 (extra) +Problem: Win32: The installer doesn't remove the "autoload" and "spell" + directories. (David Fishburn) +Solution: Add the directories to the list to be removed. +Files: nsis/gvim.nsi + +Patch 7.0.006 +Problem: Mac: "make shadow" doesn't make a link for infplist.xml. (Axel + Kielhorn) +Solution: Make the link. +Files: src/Makefile + +Patch 7.0.007 +Problem: AIX: compiling fails for message.c. (Ruediger Hornig) +Solution: Move the #if outside of memchr(). +Files: src/message.c + +Patch 7.0.008 +Problem: Can't call a function that uses both <SID> and {expr}. (Thomas) +Solution: Check both the expanded and unexpanded name for <SID>. +Files: src/eval.c + +Patch 7.0.009 +Problem: ml_get errors with both 'sidescroll' and 'spell' set. +Solution: Use ml_get_buf() instead of ml_get(), get the line from the right + buffer, not the current one. +Files: src/spell.c + +Patch 7.0.010 +Problem: The spellfile plugin required typing login name and password. +Solution: Use "anonymous" and "vim7user" by default. No need to setup a + .netrc file. +Files: runtime/autoload/spellfile.vim + +Patch 7.0.011 +Problem: Can't compile without the folding and with the eval feature. +Solution: Add an #ifdef. (Vallimar) +Files: src/option.c + +Patch 7.0.012 +Problem: Using the matchparen plugin, moving the cursor in Insert mode to a + shorter line that ends in a brace, changes the preferred column +Solution: Use winsaveview()/winrestview() instead of getpos()/setpos(). +Files: runtime/plugin/matchparen.vim + +Patch 7.0.013 +Problem: Insert mode completion: using CTRL-L to add an extra character + also deselects the current match, making it impossible to use + CTRL-L a second time. +Solution: Keep the current match. Also make CTRL-L work at the original + text, using the first displayed match. +Files: src/edit.c + +Patch 7.0.014 +Problem: Compiling gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe) +Solution: Disable some code for Motif 1.2 and older. +Files: src/gui_xmebw.c + +Patch 7.0.015 +Problem: Athena: compilation problems with modern compiler. +Solution: Avoid type casts for lvalue. (Alexey Froloff) +Files: src/gui_at_fs.c + +Patch 7.0.016 +Problem: Printing doesn't work for "dec-mcs" encoding. +Solution: Add "dec-mcs", "mac-roman" and "hp-roman8" to the list of + recognized 8-bit encodings. (Mike Williams) +Files: src/mbyte.c + +Patch 7.0.017 (after 7.0.014) +Problem: Linking gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe) +Solution: Adjust defines for Motif 1.2 and older. +Files: src/gui_xmebw.c + +Patch 7.0.018 +Problem: VMS: plugins are not loaded on startup. +Solution: Remove "**" from the path. (Zoltan Arpadffy) +Files: src/main.c + +Patch 7.0.019 +Problem: Repeating "VjA789" may cause a crash. (James Vega) +Solution: Check the cursor column after moving it to another line. +Files: src/ops.c + +Patch 7.0.020 +Problem: Crash when using 'mousefocus'. (William Fulton) +Solution: Make buffer for mouse coordinates 2 bytes longer. (Juergen Weigert) +Files: src/gui.c + +Patch 7.0.021 +Problem: Crash when using "\\[" and "\\]" in 'errorformat'. (Marc Weber) +Solution: Check for valid submatches after matching the pattern. +Files: src/quickfix.c + +Patch 7.0.022 +Problem: Using buffer.append() in Ruby may append the line to the wrong + buffer. (Alex Norman) +Solution: Properly switch to the buffer to do the appending. Also for + buffer.delete() and setting a buffer line. +Files: src/if_ruby.c + +Patch 7.0.023 +Problem: Crash when doing spell completion in an empty line and pressing + CTRL-E. +Solution: Check for a zero pointer. (James Vega) + Also handle a situation without a matching pattern better, report + "No matches" instead of remaining in undefined CTRL-X mode. And + get out of CTRL-X mode when typing a letter. +Files: src/edit.c + +Patch 7.0.024 +Problem: It is possible to set arbitrary "v:" variables. +Solution: Disallow setting "v:" variables that are not predefined. +Files: src/eval.c + +Patch 7.0.025 +Problem: Crash when removing an element of a:000. (Nikolai Weibull) +Solution: Mark the a:000 list with VAR_FIXED. +Files: src/eval.c + +Patch 7.0.026 +Problem: Using libcall() may show an old error. +Solution: Invoke dlerror() to clear a previous error. (Yukihiro Nakadaira) +Files: src/os_unix.c + +Patch 7.0.027 (extra) +Problem: Win32: When compiled with SNIFF gvim may hang on exit. +Solution: Translate and dispatch the WM_USER message. (Mathias Michaelis) +Files: src/gui_w48.c + +Patch 7.0.028 (extra) +Problem: OS/2: Vim doesn't compile with gcc 3.2.1. +Solution: Add argument to after_pathsep(), don't define vim_handle_signal(), + define HAVE_STDARG_H. (David Sanders) +Files: src/os_unix.c, src/vim.h, src/os_os2_cfg.h + +Patch 7.0.029 +Problem: getchar() may not position the cursor after a space. +Solution: Position the cursor explicitly. +Files: src/eval.c + +Patch 7.0.030 +Problem: The ":compiler" command can't be used in a FileChangedRO event. + (Hari Krishna Dara) +Solution: Add the CMDWIN flag to the ":compiler" command. +Files: src/ex_cmds.h + +Patch 7.0.031 +Problem: When deleting a buffer the buffer-local mappings for Select mode + remain. +Solution: Add the Select mode bit to MAP_ALL_MODES. (Edwin Steiner) +Files: src/vim.h + +Patch 7.0.032 (extra, after 7.0.027) +Problem: Missing semicolon. +Solution: Add the semicolon. +Files: src/gui_w48.c + +Patch 7.0.033 +Problem: When pasting text, with the menu or CTRL-V, autoindent is removed. +Solution: Use "x<BS>" to avoid indent to be removed. (Benji Fisher) +Files: runtime/autoload/paste.vim + +Patch 7.0.034 +Problem: After doing completion and typing more characters or using BS + repeating with "." didn't work properly. (Martin Stubenschrott) +Solution: Don't put BS and other characters in the redo buffer right away, + do this when finishing completion. +Files: src/edit.c + +Patch 7.0.035 +Problem: Insert mode completion works when typed but not when replayed from + a register. (Hari Krishna Dara) + Also: Mappings for Insert mode completion don't always work. +Solution: When finding a non-completion key in the input don't interrupt + completion when it wasn't typed. + Do use mappings when checking for typeahead while still finding + completions. Avoids that completion is interrupted too soon. + Use "compl_pending" in a different way. +Files: src/edit.c + +Patch 7.0.036 +Problem: Can't compile with small features and syntax highlighting or the + diff feature. +Solution: Define LINE_ATTR whenever syntax highlighting or the diff feature + is enabled. +Files: src/screen.c + +Patch 7.0.037 +Problem: Crash when resizing the GUI window vertically when there is a line + that doesn't fit. +Solution: Don't redraw while the screen data is invalid. +Files: src/screen.c + +Patch 7.0.038 +Problem: When calling complete() from an Insert mode expression mapping + text could be inserted in an improper way. +Solution: Make undo_allowed() global and use it in complete(). +Files: src/undo.c, src/proto/undo.pro, src/eval.c + +Patch 7.0.039 +Problem: Calling inputdialog() with a third argument in the console doesn't + work. +Solution: Make a separate function for input() and inputdialog(). (Yegappan + Lakshmanan) +Files: src/eval.c + +Patch 7.0.040 +Problem: When 'cmdheight' is larger than 1 using inputlist() or selecting + a spell suggestion with the mouse gets the wrong entry. +Solution: Start listing the first alternative on the last line of the screen. +Files: src/eval.c, src/spell.c + +Patch 7.0.041 +Problem: cursor([1, 1]) doesn't work. (Peter Hodge) +Solution: Allow leaving out the third item of the list and use zero for the + virtual column offset. +Files: src/eval.c + +Patch 7.0.042 +Problem: When pasting a block of text in Insert mode Vim hangs or crashes. + (Noam Halevy) +Solution: Avoid that the cursor is positioned past the NUL of a line. +Files: src/ops.c + +Patch 7.0.043 +Problem: Using "%!" at the start of 'statusline' doesn't work. +Solution: Recognize the special item when the option is being set. +Files: src/option.c + +Patch 7.0.044 +Problem: Perl: setting a buffer line in another buffer may result in + changing the current buffer. +Solution: Properly change to the buffer to be changed. +Files: src/if_perl.xs + +Patch 7.0.045 (extra) +Problem: Win32: Warnings when compiling OLE version with MSVC 2005. +Solution: Move including vim.h to before windows.h. (Ilya Bobir) +Files: src/if_ole.cpp + +Patch 7.0.046 +Problem: The matchparen plugin ignores parens in strings, but not in single + quotes, often marked with "character". +Solution: Also ignore parens in syntax items matching "character". +Files: runtime/plugin/matchparen.vim + +Patch 7.0.047 +Problem: When running configure the exit status is wrong. +Solution: Handle the exit status properly. (Matthew Woehlke) +Files: configure, src/configure + +Patch 7.0.048 +Problem: Writing a compressed file fails when there are parens in the name. + (Wang Jian) +Solution: Put quotes around the temp file name. +Files: runtime/autoload/gzip.vim + +Patch 7.0.049 +Problem: Some TCL scripts are not recognized. (Steven Atkinson) +Solution: Check for "exec wish" in the file. +Files: runtime/scripts.vim + +Patch 7.0.050 +Problem: After using the netbeans interface close command a stale pointer + may be used. +Solution: Clear the pointer to the closed buffer. (Xaview de Gaye) +Files: src/netbeans.c + +Patch 7.0.051 (after 7.0.44) +Problem: The Perl interface doesn't compile or doesn't work properly. +Solution: Remove the spaces before #ifdef and avoid an empty line above it. +Files: src/if_perl.xs + +Patch 7.0.052 +Problem: The user may not be aware that the Vim server allows others more + functionality than desired. +Solution: When running Vim as root don't become a Vim server without an + explicit --servername argument. +Files: src/main.c + +Patch 7.0.053 +Problem: Shortening a directory name may fail when there are multi-byte + characters. +Solution: Copy the correct bytes. (Titov Anatoly) +Files: src/misc1.c + +Patch 7.0.054 +Problem: Mac: Using a menu name that only has a mnemonic or accelerator + causes a crash. (Elliot Shank) +Solution: Check for an empty menu name. Also delete empty submenus that + were created before detecting the error. +Files: src/menu.c + +Patch 7.0.055 +Problem: ":startinsert" in a CmdwinEnter autocommand doesn't take immediate + effect. (Bradley White) +Solution: Put a NOP key in the typeahead buffer. Also avoid that using + CTRL-C to go back to the command line moves the cursor left. +Files: src/edit.c, src/ex_getln.c + +Patch 7.0.056 +Problem: "#!something" gives an error message. +Solution: Ignore this line, so that it can be used in an executable Vim + script. +Files: src/ex_docmd.c + +Patch 7.0.057 (extra, after 7.0.45) +Problem: Win32: Compilation problem with Borland C 5.5. +Solution: Include vim.h as before. (Mark S. Williams) +Files: src/if_ole.cpp + +Patch 7.0.058 +Problem: The gbk and gb18030 encodings are not recognized. +Solution: Add aliases to cp936. (Edward L. Fox) +Files: src/mbyte.c + +Patch 7.0.059 +Problem: The Perl interface doesn't compile with ActiveState Perl 5.8.8. +Solution: Remove the __attribute__() items. (Liu Yubao) +Files: src/if_perl.xs + +Patch 7.0.060 (after 7.0.51) +Problem: Code for temporarily switching to another buffer is duplicated in + quite a few places. +Solution: Use aucmd_prepbuf() and aucmd_restbuf() also when FEAT_AUTOCMD is + not defined. +Files: src/buffer.c, src/eval.c, src/fileio.c, src/if_ruby.c, + src/if_perl.xs, src/quickfix.c, src/structs.h + +Patch 7.0.061 +Problem: Insert mode completion for Vim commands may crash if there is + nothing to complete. +Solution: Instead of freeing the pattern make it empty, so that a "not + found" error is given. (Yukihiro Nakadaira) +Files: src/edit.c + +Patch 7.0.062 +Problem: Mac: Crash when using the popup menu for spell correction. The + popup menu appears twice when letting go of the right mouse button + early. +Solution: Don't show the popup menu on the release of the right mouse + button. Also check that a menu pointer is actually valid. +Files: src/proto/menu.pro, src/menu.c, src/normal.c, src/term.c + +Patch 7.0.063 +Problem: Tiny chance for a memory leak. (coverity) +Solution: Free pointer when next memory allocation fails. +Files: src/eval.c + +Patch 7.0.064 +Problem: Using uninitialized variable. (Tony Mechelynck) +Solution: When not used set "temp" to zero. Also avoid a warning for + "files" in ins_compl_dictionaries(). +Files: src/edit.c + +Patch 7.0.065 (extra) +Problem: Mac: left-right movement of the scrollwheel causes up-down + scrolling. +Solution: Ignore mouse wheel events that are not up-down. (Nicolas Weber) +Files: src/gui_mac.c + +Patch 7.0.066 +Problem: After the popup menu for Insert mode completion overlaps the tab + pages line it is not completely removed. +Solution: Redraw the tab pages line after removing the popup menu. (Ori + Avtalion) +Files: src/popupmnu.c + +Patch 7.0.067 +Problem: Undo doesn't always work properly when using "scim" input method. + Undo is split up when using preediting. +Solution: Reset xim_has_preediting also when preedit_start_col is not + MAXCOL. Don't split undo when <Left> is used while preediting. + (Yukihiro Nakadaira) +Files: src/edit.c, src/mbyte.c + +Patch 7.0.068 +Problem: When 'ignorecase' is set and using Insert mode completion, + typing characters to change the list of matches, case is not + ignored. (Hugo Ahlenius) +Solution: Store the 'ignorecase' flag with the matches where needed. +Files: src/edit.c, src/search.c, src/spell.c + +Patch 7.0.069 +Problem: Setting 'guitablabel' to %!expand(\%) causes Vim to free an + invalid pointer. (Kim Schulz) +Solution: Don't try freeing a constant string pointer. +Files: src/buffer.c + +Patch 7.0.070 +Problem: Compiler warnings for shadowed variables and uninitialized + variables. +Solution: Rename variables such as "index", "msg" and "dup". Initialize + variables. +Files: src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_x11.c, + src/hardcopy.c, src/if_cscope.c, src/main.c, src/mbyte.c, + src/memline.c, src/netbeans.c, src/normal.c, src/option.c, + src/os_unix.c, src/quickfix.c, src/regexp.c, src/screen.c, + src/search.c, src/spell.c, src/ui.c, src/undo.c, src/window.c, + src/version.c + +Patch 7.0.071 +Problem: Using an empty search pattern may cause a crash. +Solution: Avoid using a NULL pointer. +Files: src/search.c + +Patch 7.0.072 +Problem: When starting the GUI fails there is no way to adjust settings or + do something else. +Solution: Add the GUIFailed autocommand event. +Files: src/fileio.c, src/gui.c, src/vim.h + +Patch 7.0.073 +Problem: Insert mode completion: Typing <CR> sometimes selects the original + text instead of keeping what was typed. (Justin Constantino) +Solution: Don't let <CR> select the original text if there is no popup menu. +Files: src/edit.c + +Patch 7.0.074 (extra) +Problem: Win32: tooltips were not converted from 'encoding' to Unicode. +Solution: Set the tooltip to use Unicode and do the conversion. Also + cleanup the code for the tab pages tooltips. (Yukihiro Nakadaira) +Files: src/gui_w32.c, src/gui_w48.c + +Patch 7.0.075 +Problem: winsaveview() did not store the actual value of the desired cursor + column. This could move the cursor in the matchparen plugin. +Solution: Call update_curswant() before using the value w_curswant. +Files: src/eval.c + +Patch 7.0.076 (after 7.0.010) +Problem: Automatic downloading of spell files only works for ftp. +Solution: Don't add login and password for non-ftp URLs. (Alexander Patrakov) +Files: runtime/autoload/spellfile.vim + +Patch 7.0.077 +Problem: ":unlet v:this_session" causes a crash. (Marius Roets) +Solution: When trying to unlet a fixed variable give an error message. +Files: src/eval.c + +Patch 7.0.078 +Problem: There are two error messages E46. +Solution: Change the number for the sandbox message to E794. +Files: src/globals.h + +Patch 7.0.079 +Problem: Russian tutor doesn't work when 'encoding' is "utf-8". +Solution: Use tutor.ru.utf-8 as the master, and generate the other encodings + from it. Select the right tutor depending on 'encoding'. (Alexey + Froloff) +Files: runtime/tutor/Makefile, runtime/tutor/tutor.vim, + runtime/tutor/tutor.ru.utf-8 + +Patch 7.0.080 +Problem: Generating auto/pathdef.c fails for CFLAGS with a backslash. +Solution: Double backslashes in the string. (Alexey Froloff) +Files: src/Makefile + +Patch 7.0.081 +Problem: Command line completion doesn't work for a shell command with an + absolute path. +Solution: Don't use $PATH when there is an absolute path. +Files: src/ex_getln.c + +Patch 7.0.082 +Problem: Calling a function that waits for input may cause List and + Dictionary arguments to be freed by the garbage collector. +Solution: Keep a list of all arguments to internal functions. +Files: src/eval.c + +Patch 7.0.083 +Problem: Clicking with the mouse on an item for inputlist() doesn't work + when 'compatible' is set and/or when 'cmdheight' is more than one. + (Christian J. Robinson) +Solution: Also decrement "lines_left" when 'more' isn't set. Set + "cmdline_row" to zero to get all mouse events. +Files: src/message.c, src/misc1.c + +Patch 7.0.084 +Problem: The garbage collector may do its work while some Lists or + Dictionaries are used internally, e.g., by ":echo" that runs into + the more-prompt or ":echo [garbagecollect()]". +Solution: Only do garbage collection when waiting for a character at the + toplevel. Let garbagecollect() set a flag that is handled at the + toplevel before waiting for a character. +Files: src/eval.c, src/getchar.c, src/globals.h, src/main.c + +Patch 7.0.085 +Problem: When doing "make test" the viminfo file is modified. +Solution: Use another viminfo file after setting 'compatible'. +Files: src/testdir/test56.in + +Patch 7.0.086 +Problem: getqflist() returns entries for pattern and text with the number + zero. Passing these to setqflist() results in the string "0". +Solution: Use an empty string instead of the number zero. +Files: src/quickfix.c + +Patch 7.0.087 +Problem: After ":file fname" and ":saveas fname" the 'autochdir' option + does not take effect. (Yakov Lerner) + Commands for handling 'autochdir' are repeated many times. +Solution: Add the DO_AUTOCHDIR macro and do_autochdir(). Use it for + ":file fname" and ":saveas fname". +Files: src/proto/buffer.pro, src/buffer.c, src/ex_cmds.c, src/macros.h, + src/netbeans.c, src/option.c, src/window.c + +Patch 7.0.088 +Problem: When compiled with Perl the generated prototypes have "extern" + unnecessarily added. +Solution: Remove the "-pipe" argument from PERL_CFLAGS. +Files: src/auto/configure, src/configure.in + +Patch 7.0.089 +Problem: "ga" does not work properly for a non-Unicode multi-byte encoding. +Solution: Only check for composing chars for utf-8. (Taro Muraoka) +Files: src/ex_cmds.c + +Patch 7.0.090 +Problem: Cancelling the conform() dialog on the console with Esc requires + typing it twice. (Benji Fisher) +Solution: When the start of an escape sequence is found use 'timeoutlen' or + 'ttimeoutlen'. +Files: src/misc1.c + +Patch 7.0.091 +Problem: Using winrestview() while 'showcmd' is set causes the cursor to be + displayed in the wrong position. (Yakov Lerner) +Solution: Set the window topline properly. +Files: src/eval.c + +Patch 7.0.092 (after 7.0.082 and 7.0.084) +Problem: The list of internal function arguments is obsolete now that + garbage collection is only done at the toplevel. +Solution: Remove the list of all arguments to internal functions. +Files: src/eval.c + +Patch 7.0.093 +Problem: The matchparen plugin can't handle a 'matchpairs' value where a + colon is matched. +Solution: Change the split() that is used to change 'matchpairs' into a + List. +Files: runtime/plugin/matchparen.vim + +Patch 7.0.094 +Problem: When a hidden buffer is made the current buffer and another file + edited later, the file message will still be given. Using + ":silent" also doesn't prevent the file message. (Marvin Renich) +Solution: Reset the need_fileinfo flag when reading a file. Don't set + need_fileinfo when msg_silent is set. +Files: src/buffer.c, src/fileio.c + +Patch 7.0.095 +Problem: The Greek tutor is not available in utf-8. "el" is used for the + language, only "gr" for the country is recognized. +Solution: Add the utf-8 Greek tutor. Use it for conversion to iso-8859-7 + and cp737. (Lefteris Dimitroulakis) +Files: runtime/tutor/Makefile, runtime/tutor/tutor.gr.utf-8, + runtime/tutor/tutor.vim + +Patch 7.0.096 +Problem: taglist() returns the filename relative to the tags file, while + the directory of the tags file is unknown. (Hari Krishna Dara) +Solution: Expand the file name. (Yegappan Lakshmanan) +Files: src/tag.c + +Patch 7.0.097 +Problem: ":tabclose N" that closes another tab page does not remove the tab + pages line. Same problem when using the mouse. +Solution: Adjust the tab pages line when needed in tabpage_close_other(). +Files: src/ex_docmd.c + +Patch 7.0.098 +Problem: Redirecting command output in a cmdline completion function + doesn't work. (Hari Krishna Dara) +Solution: Enable redirection when redirection is started. +Files: src/ex_docmd.c, src/ex_getln.c + +Patch 7.0.099 +Problem: GUI: When the popup menu is visible using the scrollbar messes up + the display. +Solution: Disallow scrolling the current window. Redraw the popup menu + after scrolling another window. +Files: src/gui.c + +Patch 7.0.100 +Problem: "zug" may report the wrong filename. (Lawrence Kesteloot) +Solution: Call home_replace() to fill NameBuff[]. +Files: src/spell.c + +Patch 7.0.101 +Problem: When the "~/.vim/spell" directory does not exist "zg" may create + a wrong directory. "zw" doesn't work. +Solution: Use the directory of the file name instead of NameBuff. For "zw" + not only remove a good word but also add the word with "!". +Files: src/spell.c + +Patch 7.0.102 +Problem: Redrawing cmdline is not correct when using SCIM. +Solution: Don't call im_get_status(). (Yukihiro Nakadaira) +Files: src/ex_getln.c + +Patch 7.0.103 (after 7.0.101) +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Init variable. +Files: src/spell.c + +Patch 7.0.104 +Problem: The CursorHoldI event only triggers once in Insert mode. It also + triggers after CTRL-V and other two-key commands. +Solution: Set "did_cursorhold" before getting a second key. Reset + "did_cursorhold" after handling a command. +Files: src/edit.c, src/fileio.c + +Patch 7.0.105 +Problem: When using incremental search the statusline ruler isn't updated. + (Christoph Koegl) +Solution: Update the statusline when it contains the ruler. +Files: src/ex_getln.c + +Patch 7.0.106 +Problem: The spell popup menu uses ":amenu", triggering mappings. Other + PopupMenu autocommands are removed. (John Little) +Solution: Use ":anoremenu" and use an autocmd group. +Files: runtime/menu.vim + +Patch 7.0.107 +Problem: Incremental search doesn't redraw the text tabline. (Ilya Bobir) + Also happens in other situations with one window in a tab page. +Solution: Redraw the tabline after clearing the screen. +Files: src/screen.c + +Patch 7.0.108 (extra) +Problem: Amiga: Compilation problem. +Solution: Have mch_mkdir() return a failure flag. (Willy Catteau) +Files: src/os_amiga.c, src/proto/os_amiga.pro + +Patch 7.0.109 +Problem: Lisp indenting is confused by escaped quotes in strings. (Dorai + Sitaram) +Solution: Check for backslash inside strings. (Sergey Khorev) +Files: src/misc1.c + +Patch 7.0.110 +Problem: Amiga: Compilation problems when not using libnix. +Solution: Change a few #ifdefs. (Willy Catteau) +Files: src/memfile.c + +Patch 7.0.111 +Problem: The gzip plugin can't handle filenames with single quotes. +Solution: Add and use the shellescape() function. (partly by Alexey Froloff) +Files: runtime/autoload/gzip.vim, runtime/doc/eval.txt, src/eval.c, + src/mbyte.c, src/misc2.c, src/proto/misc2.pro + +Patch 7.0.112 +Problem: Python interface does not work with Python 2.5. +Solution: Change PyMem_DEL() to Py_DECREF(). (Sumner Hayes) +Files: src/if_python.c + +Patch 7.0.113 +Problem: Using CTRL-L in Insert completion when there is no current match + may cause a crash. (Yukihiro Nakadaira) +Solution: Check for compl_leader to be NULL +Files: src/edit.c + +Patch 7.0.114 +Problem: When aborting an insert with CTRL-C an extra undo point is + created in the GUI. (Yukihiro Nakadaira) +Solution: Call gotchars() only when advancing. +Files: src/getchar.c + +Patch 7.0.115 +Problem: When 'ignorecase' is set, Insert mode completion only adds "foo" + and not "Foo" when both are found. + A found match isn't displayed right away when 'completeopt' does + not have "menu" or "menuone". +Solution: Do not ignore case when checking if a completion match already + exists. call ins_compl_check_keys() also when not using a popup + menu. (Yukihiro Nakadaira) +Files: src/edit.c + +Patch 7.0.116 +Problem: 64 bit Windows version reports "32 bit" in the ":version" output. + (M. Veerman) +Solution: Change the text for Win64. +Files: src/version.c + +Patch 7.0.117 +Problem: Using "extend" on a syntax item inside a region with "keepend", an + intermediate item may be truncated. + When applying the "keepend" and there is an offset to the end + pattern the highlighting of a contained item isn't adjusted. +Solution: Use the seen_keepend flag to remember when to apply the "keepend" + flag. Adjust the keepend highlighting properly. (Ilya Bobir) +Files: src/syntax.c + +Patch 7.0.118 +Problem: printf() does not do zero padding for strings. +Solution: Do allow zero padding for strings. +Files: src/message.c + +Patch 7.0.119 +Problem: When going back from Insert to Normal mode the CursorHold event + doesn't trigger. (Yakov Lerner) +Solution: Reset "did_cursorhold" when leaving Insert mode. +Files: src/edit.c + +Patch 7.0.120 +Problem: Crash when using CTRL-R = at the command line and entering + "getreg('=')". (James Vega) +Solution: Avoid recursiveness of evaluating the = register. +Files: src/ops.c + +Patch 7.0.121 +Problem: GUI: Dragging the last status line doesn't work when there is a + text tabline. (Markus Wolf) +Solution: Take the text tabline into account when deciding to start modeless + selection. +Files: src/gui.c + +Patch 7.0.122 +Problem: GUI: When clearing after a bold, double-wide character half a + character may be drawn. +Solution: Check for double-wide character and redraw it. (Yukihiro Nakadaira) +Files: src/screen.c + +Patch 7.0.123 +Problem: On SCO Openserver configure selects the wrong terminal library. +Solution: Put terminfo before the other libraries. (Roger Cornelius) + Also fix a small problem compiling on Mac without Darwin. +Files: src/configure.in, src/auto/configure + +Patch 7.0.124 +Problem: getwinvar() obtains a dictionary with window-local variables, but + it's always for the current window. +Solution: Get the variables of the specified window. (Geoff Reedy) +Files: src/eval.c + +Patch 7.0.125 +Problem: When "autoselect" is in the 'clipboard' option then the '< and '> + marks are set while Visual mode is still active. +Solution: Don't set the '< and '> marks when yanking the selected area for + the clipboard. +Files: src/normal.c + +Patch 7.0.126 +Problem: When 'formatexpr' uses setline() and later internal formatting is + used undo information is not correct. (Jiri Cerny, Benji Fisher) +Solution: Set ins_need_undo after using 'formatexpr'. +Files: src/edit.c + +Patch 7.0.127 +Problem: Crash when swap files has invalid timestamp. +Solution: Check return value of ctime() for being NULL. +Files: src/memline.c + +Patch 7.0.128 +Problem: GUI: when closing gvim is cancelled because there is a changed + buffer the screen isn't updated to show the changed buffer in the + current window. (Krzysztof Kacprzak) +Solution: Redraw when closing gvim is cancelled. +Files: src/gui.c + +Patch 7.0.129 +Problem: GTK GUI: the GTK file dialog can't handle a relative path. +Solution: Make the initial directory a full path before passing it to GTK. + (James Vega) Also postpone adding the default file name until + after setting the directory. +Files: src/gui_gtk.c + +Patch 7.0.130 (extra) +Problem: Win32: Trying to edit or write devices may cause Vim to get stuck. +Solution: Add the 'opendevice' option, default off. Disallow + reading/writing from/to devices when it's off. + Also detect more devices by the full name starting with "\\.\". +Files: runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h, + src/os_win32.c + +Patch 7.0.131 +Problem: Win32: "vim -r" does not list all the swap files. +Solution: Also check for swap files starting with a dot. +Files: src/memline.c + +Patch 7.0.132 (after 7.0.130) +Problem: Win32: Crash when Vim reads from stdin. +Solution: Only use mch_nodetype() when there is a file name. +Files: src/fileio.c + +Patch 7.0.133 +Problem: When searching included files messages are added to the history. +Solution: Set msg_hist_off for messages about scanning included files. + Set msg_silent to avoid message about wrapping around. +Files: src/edit.c, src/globals.h, src/message.c, src/search.c + +Patch 7.0.134 +Problem: Crash when comparing a recursively looped List or Dictionary. +Solution: Limit recursiveness for comparing to 1000. +Files: src/eval.c + +Patch 7.0.135 +Problem: Crash when garbage collecting list or dict with loop. +Solution: Don't use DEL_REFCOUNT but don't recurse into Lists and + Dictionaries when freeing them in the garbage collector. + Also add allocated Dictionaries to the list of Dictionaries to + avoid leaking memory. +Files: src/eval.c, src/proto/eval.pro, src/tag.c + +Patch 7.0.136 +Problem: Using "O" while matching parens are highlighted may not remove the + highlighting. (Ilya Bobir) +Solution: Also trigger CursorMoved when a line is inserted under the cursor. +Files: src/misc1.c + +Patch 7.0.137 +Problem: Configure check for big features is wrong. +Solution: Change "==" to "=". (Martti Kuparinen) +Files: src/auto/configure, src/configure.in + +Patch 7.0.138 (extra) +Problem: Mac: modifiers don't work with function keys. +Solution: Use GetEventParameter() to obtain modifiers. (Nicolas Weber) +Files: src/gui_mac.c + +Patch 7.0.139 +Problem: Using CTRL-PageUp or CTRL-PageDown in Insert mode to go to another + tab page does not prepare for undo properly. (Stefano Zacchiroli) +Solution: Call start_arrow() before switching tab page. +Files: src/edit.c + +Patch 7.0.140 (after 7.0.134) +Problem: Comparing recursively looped List or Dictionary doesn't work well. +Solution: Detect comparing a List or Dictionary with itself. +Files: src/eval.c + +Patch 7.0.141 +Problem: When pasting a while line on the command line an extra CR is added + literally. +Solution: Don't add the trailing CR when pasting with the mouse. +Files: src/ex_getln.c, src/proto/ops.pro, src/ops.c + +Patch 7.0.142 +Problem: Using the middle mouse button in Select mode to paste text results + in an extra "y". (Kriton Kyrimis) +Solution: Let the middle mouse button replace the selected text with the + contents of the clipboard. +Files: src/normal.c + +Patch 7.0.143 +Problem: Setting 'scroll' to its default value was not handled correctly. +Solution: Compare the right field to PV_SCROLL. +Files: src/option.c + +Patch 7.0.144 +Problem: May compare two unrelated pointers when matching a pattern against + a string. (Dominique Pelle) +Solution: Avoid calling reg_getline() when REG_MULTI is false. +Files: src/regexp.c + +Patch 7.0.145 (after 7.0.142) +Problem: Compiler warning. +Solution: Add type cast. +Files: src/normal.c + +Patch 7.0.146 +Problem: When 'switchbuf' is set to "usetab" and the current tab has only a + quickfix window, jumping to an error always opens a new window. + Also, when the buffer is open in another tab page it's not found. +Solution: Check for the "split" value of 'switchbuf' properly. Search in + other tab pages for the desired buffer. (Yegappan Lakshmanan) +Files: src/buffer.c, src/quickfix.c + +Patch 7.0.147 +Problem: When creating a session file and there are several tab pages and + some windows have a local directory a short file name may be used + when it's not valid. (Marius Roets) + A session with multiple tab pages may result in "No Name" buffers. + (Bill McCarthy) +Solution: Don't enter tab pages when going through the list, only use a + pointer to the first window in each tab page. + Use "tabedit" instead of "tabnew | edit" when possible. +Files: src/ex_docmd.c + +Patch 7.0.148 +Problem: When doing "call a.xyz()" and "xyz" does not exist in dictionary + "a" there is no error message. (Yegappan Lakshmanan) +Solution: Add the error message. +Files: src/eval.c + +Patch 7.0.149 +Problem: When resizing a window that shows "~" lines the text sometimes + jumps down. +Solution: Remove code that uses "~" lines in some situations. Fix the + computation of the screen line of the cursor. Also set w_skipcol + to handle very long lines. +Files: src/misc1.c, src/window.c + +Patch 7.0.150 +Problem: When resizing the Vim window scrollbinding doesn't work. (Yakov + Lerner) +Solution: Do scrollbinding in set_shellsize(). +Files: src/term.c + +Patch 7.0.151 +Problem: Buttons in file dialog are not according to Gnome guidelines. +Solution: Swap Cancel and Open buttons. (Stefano Zacchiroli) +Files: src/gui_gtk.c + +Patch 7.0.152 +Problem: Crash when using lesstif 2. +Solution: Fill in the extension field. (Ben Hutchings) +Files: src/gui_xmebw.c + +Patch 7.0.153 +Problem: When using cscope and opening the temp file fails Vim crashes. + (Kaya Bekiroglu) +Solution: Check for NULL pointer returned from mch_open(). +Files: src/if_cscope.c + +Patch 7.0.154 +Problem: When 'foldnextmax' is negative Vim can hang. (James Vega) +Solution: Avoid the fold level becoming negative. +Files: src/fold.c, src/syntax.c + +Patch 7.0.155 +Problem: When getchar() returns a mouse button click there is no way to get + the mouse coordinates. +Solution: Add v:mouse_win, v:mouse_lnum and v:mouse_col. +Files: runtime/doc/eval.txt, src/eval.c, src/vim.h + +Patch 7.0.156 (extra) +Problem: Vim doesn't compile for Amiga OS 4. +Solution: Various changes for Amiga OS4. (Peter Bengtsson) +Files: src/feature.h, src/mbyte.c, src/memfile.c, src/memline.c, + src/os_amiga.c, src/os_amiga.h, src/pty.c + +Patch 7.0.157 +Problem: When a function is used recursively the profiling information is + invalid. (Mikolaj Machowski) +Solution: Put the start time on the stack instead of in the function. +Files: src/eval.c + +Patch 7.0.158 +Problem: In a C file with ":set foldmethod=syntax", typing {<CR> on the + last line results in the cursor being in a closed fold. (Gautam + Iyer) +Solution: Open fold after inserting a new line. +Files: src/edit.c + +Patch 7.0.159 +Problem: When there is an I/O error in the swap file the cause of the error + cannot be seen. +Solution: Use PERROR() instead of EMSG() where possible. +Files: src/memfile.c + +Patch 7.0.160 +Problem: ":@a" echoes the command, Vi doesn't do that. +Solution: Set the silent flag in the typeahead buffer to avoid echoing the + command. +Files: src/ex_docmd.c, src/normal.c, src/ops.c, src/proto/ops.pro + +Patch 7.0.161 +Problem: Win32: Tab pages line popup menu isn't using the right encoding. + (Yongwei Wu) +Solution: Convert the text when necessary. Also fixes the Find/Replace + dialog title. (Yegappan Lakshmanan) +Files: src/gui_w48.c + +Patch 7.0.162 +Problem: "vim -o a b" when file "a" triggers the ATTENTION dialog, + selecting "Quit" exits Vim instead of editing "b" only. + When file "b" triggers the ATTENTION dialog selecting "Quit" or + "Abort" results in editing file "a" in that window. +Solution: When selecting "Abort" exit Vim. When selecting "Quit" close the + window. Also avoid hit-enter prompt when selecting Abort. +Files: src/buffer.c, src/main.c + +Patch 7.0.163 +Problem: Can't retrieve the position of a sign after it was set. +Solution: Add the netbeans interface getAnno command. (Xavier de Gaye) +Files: runtime/doc/netbeans.txt, src/netbeans.c + +Patch 7.0.164 +Problem: ":redir @+" doesn't work. +Solution: Accept "@+" just like "@*". (Yegappan Lakshmanan) +Files: src/ex_docmd.c + +Patch 7.0.165 +Problem: Using CTRL-L at the search prompt adds a "/" and other characters + without escaping, causing the pattern not to match. +Solution: Escape special characters with a backslash. +Files: src/ex_getln.c + +Patch 7.0.166 +Problem: Crash in cscope code when connection could not be opened. + (Kaya Bekiroglu) +Solution: Check for the file descriptor to be NULL. +Files: src/if_cscope.c + +Patch 7.0.167 +Problem: ":function" redefining a dict function doesn't work properly. + (Richard Emberson) +Solution: Allow a function name to be a number when it's a function + reference. +Files: src/eval.c + +Patch 7.0.168 +Problem: Using uninitialized memory and memory leak. (Dominique Pelle) +Solution: Use alloc_clear() instead of alloc() for w_lines. Free + b_ml.ml_stack after recovery. +Files: src/memline.c, src/window.c + +Patch 7.0.169 +Problem: With a Visual block selection, with the cursor in the left upper + corner, pressing "I" doesn't remove the highlighting. (Guopeng + Wen) +Solution: When checking if redrawing is needed also check if Visual + selection is still active. +Files: src/screen.c + +Patch 7.0.170 (extra) +Problem: Win32: Using "gvim --remote-tab foo" when gvim is minimized while + it previously was maximized, un-maximizing doesn't work properly. + And the labels are not displayed properly when 'encoding' is + utf-8. +Solution: When minimized check for SW_SHOWMINIMIZED. When updating the tab + pages line use TCM_SETITEMW instead of TCM_INSERTITEMW. (Liu + Yubao) +Files: src/gui_w48.c + +Patch 7.0.171 (extra) +Problem: VMS: A file name with multiple paths is written in the wrong file. +Solution: Get the actually used file name. (Zoltan Arpadffy) + Also add info to the :version command about compilation. +Files: src/Make_vms.mms, src/buffer.c, src/os_unix.c, src/version.c + +Patch 7.0.172 +Problem: Crash when recovering and quitting at the "press-enter" prompt. +Solution: Check for "msg_list" to be NULL. (Liu Yubao) +Files: src/ex_eval.c + +Patch 7.0.173 +Problem: ":call f().TT()" doesn't work. (Richard Emberson) +Solution: When a function returns a Dictionary or another composite continue + evaluating what follows. +Files: src/eval.c + +Patch 7.0.174 +Problem: ":mksession" doesn't restore window layout correctly in tab pages + other than the current one. (Zhibin He) +Solution: Use the correct topframe for producing the window layout commands. +Files: src/ex_docmd.c + +Patch 7.0.175 +Problem: The result of tr() is missing the terminating NUL. (Ingo Karkat) +Solution: Add the NUL. +Files: src/eval.c + +Patch 7.0.176 +Problem: ":emenu" isn't executed directly, causing the encryption key + prompt to fail. (Life Jazzer) +Solution: Fix wrong #ifdef. +Files: src/menu.c + +Patch 7.0.177 +Problem: When the press-enter prompt gets a character from a non-remappable + mapping, it's put back in the typeahead buffer as remappable, + which may cause an endless loop. +Solution: Restore the non-remappable flag and the silent flag when putting a + char back in the typeahead buffer. +Files: src/getchar.c, src/message.c, src/normal.c + +Patch 7.0.178 +Problem: When 'enc' is "utf-8" and 'ignorecase' is set the result of ":echo + ("\xe4" == "\xe4")" varies. +Solution: In mb_strnicmp() avoid looking past NUL bytes. +Files: src/mbyte.c + +Patch 7.0.179 +Problem: Using ":recover" or "vim -r" without a swapfile crashes Vim. +Solution: Check for "buf" to be unequal NULL. (Yukihiro Nakadaira) +Files: src/memline.c + +Patch 7.0.180 (extra, after 7.0.171) +Problem: VMS: build failed. Problem with swapfiles. +Solution: Add "compiled_arch". Always expand path and pass it to + buf_modname(). (Zoltan Arpadffy) +Files: src/globals.h, src/memline.c, src/os_unix.c, runtime/menu.vim + +Patch 7.0.181 +Problem: When reloading a file that starts with an empty line, the reloaded + buffer has an extra empty line at the end. (Motty Lentzitzky) +Solution: Delete all lines, don't use bufempty(). +Files: src/fileio.c + +Patch 7.0.182 +Problem: When using a mix of undo and "g-" it may no longer be possible to + go to every point in the undo tree. (Andy Wokula) +Solution: Correctly update pointers in the undo tree. +Files: src/undo.c + +Patch 7.0.183 +Problem: Crash in ":let" when redirecting to a variable that's being + displayed. (Thomas Link) +Solution: When redirecting to a variable only do the assignment when + stopping redirection to avoid that setting the variable causes a + freed string to be accessed. +Files: src/eval.c + +Patch 7.0.184 +Problem: When the cscope program is called "mlcscope" the Cscope interface + doesn't work. +Solution: Accept "\S*cscope:" instead of "cscope:". (Frodak D. Baksik) +Files: src/if_cscope.c + +Patch 7.0.185 +Problem: Multi-byte characters in a message are displayed with attributes + from what comes before it. +Solution: Don't use the attributes for a multi-byte character. Do use + attributes for special characters. (Yukihiro Nakadaira) +Files: src/message.c + +Patch 7.0.186 +Problem: Get an ml_get error when 'encoding' is "utf-8" and searching for + "/\_s*/e" in an empty buffer. (Andrew Maykov) +Solution: Don't try getting the line just below the last line. +Files: src/search.c + +Patch 7.0.187 +Problem: Can't source a remote script properly. +Solution: Add the SourceCmd event. (Charles Campbell) +Files: runtime/doc/autocmd.txt, src/ex_cmds2.c, src/fileio.c, src/vim.h + +Patch 7.0.188 (after 7.0.186) +Problem: Warning for wrong pointer type. +Solution: Add a type cast. +Files: src/search.c + +Patch 7.0.189 +Problem: Translated message about finding matches is truncated. (Yukihiro + Nakadaira) +Solution: Enlarge the buffer. Also use vim_snprintf(). +Files: src/edit.c + +Patch 7.0.190 +Problem: "syntax spell default" results in an error message. +Solution: Change 4 to 7 for STRNICMP(). (Raul Nunez de Arenas Coronado) +Files: src/syntax.c + +Patch 7.0.191 +Problem: The items used by getqflist() and setqflist() don't match. +Solution: Support the "bufnum" item for setqflist(). (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/quickfix.c + +Patch 7.0.192 +Problem: When 'swapfile' is switched off in an empty file it is possible + that not all blocks are loaded into memory, causing ml_get errors + later. +Solution: Rename "dont_release" to "mf_dont_release" and also use it to + avoid using the cached line and locked block. +Files: src/globals.h, src/memfile.c, src/memline.c + +Patch 7.0.193 +Problem: Using --remote or --remote-tab with an argument that matches + 'wildignore' causes a crash. +Solution: Check the argument count before using ARGLIST[0]. +Files: src/ex_cmds.c + +Patch 7.0.194 +Problem: Once an ml_get error is given redrawing part of the screen may + cause it again, resulting in an endless loop. +Solution: Don't give the error message for a recursive call. +Files: src/memline.c + +Patch 7.0.195 +Problem: When a buffer is modified and 'autowriteall' is set, ":quit" + results in an endless loop when there is a conversion error while + writing. (Nikolai Weibull) +Solution: Make autowrite() return FAIL if the buffer is still changed after + writing it. + /* put the cursor on the last char, for 'tw' formatting */ +Files: src/ex_cmds2.c + +Patch 7.0.196 +Problem: When using ":vert ball" the computation of the mouse pointer + position may be off by one column. (Stefan Karlsson) +Solution: Recompute the frame width when moving the vertical separator from + one window to another. +Files: src/window.c + +Patch 7.0.197 (extra) +Problem: Win32: Compiling with EXITFREE doesn't work. +Solution: Adjust a few #ifdefs. (Alexei Alexandrof) +Files: src/misc2.c, src/os_mswin.c + +Patch 7.0.198 (extra) +Problem: Win32: Compiler warnings. No need to generate gvim.exe.mnf. +Solution: Add type casts. Use "*" for processorArchitecture. (George Reilly) +Files: src/Make_mvc.mak, src/eval.c, src/gvim.exe.mnf, src/misc2.c + +Patch 7.0.199 +Problem: When using multi-byte characters the combination of completion and + formatting may result in a wrong cursor position. +Solution: Don't decrement the cursor column, use dec_cursor(). (Yukihiro + Nakadaira) Also check for the column to be zero. +Files: src/edit.c + +Patch 7.0.200 +Problem: Memory leaks when out of memory. +Solution: Free the memory. +Files: src/edit.c, src/diff.c + +Patch 7.0.201 +Problem: Message for ":diffput" about buffer not being in diff mode may be + wrong. +Solution: Check for buffer in diff mode but not modifiable. +Files: src/diff.c + +Patch 7.0.202 +Problem: Problems on Tandem systems while compiling and at runtime. +Solution: Recognize root uid is 65535. Check select() return value for it + not being supported. Avoid wrong function prototypes. Mention + use of -lfloss. (Matthew Woehlke) +Files: src/Makefile, src/ex_cmds.c, src/fileio.c, src/main.c, + src/osdef1.h.in, src/osdef2.h.in, src/os_unix.c, src/pty.c, + src/vim.h + +Patch 7.0.203 +Problem: 0x80 characters in a register are not handled correctly for the + "@" command. +Solution: Escape CSI and 0x80 characters. (Yukihiro Nakadaira) +Files: src/ops.c + +Patch 7.0.204 +Problem: Cscope: Parsing matches for listing isn't done properly. +Solution: Check for line number being found. (Yu Zhao) +Files: src/if_cscope.c + +Patch 7.0.205 (after 7.0.203) +Problem: Can't compile. +Solution: Always include the vim_strsave_escape_csi function. +Files: src/getchar.c + +Patch 7.0.206 (after 7.0.058) +Problem: Some characters of the "gb18030" encoding are not handled + properly. +Solution: Do not use "cp936" as an alias for "gb18030" encoding. Instead + initialize 'encoding' to "cp936". +Files: src/mbyte.c, src/option.c + +Patch 7.0.207 +Problem: After patch 2.0.203 CSI and K_SPECIAL characters are escaped when + recorded and then again when the register is executed. +Solution: Remove escaping before putting the recorded characters in a + register. (Yukihiro Nakadaira) +Files: src/getchar.c, src/ops.c, src/proto/getchar.pro + +Patch 7.0.208 (after 7.0.171 and 7.0.180) +Problem: VMS: changes to path handling cause more trouble than they solve. +Solution: Revert changes. +Files: src/buffer.c, src/memline.c, src/os_unix.c + +Patch 7.0.209 +Problem: When replacing a line through Python the cursor may end up beyond + the end of the line. +Solution: Check the cursor column after replacing the line. +Files: src/if_python.c + +Patch 7.0.210 +Problem: ":cbuffer" and ":lbuffer" always fail when the buffer is modified. + (Gary Johnson) +Solution: Support adding a !. (Yegappan Lakshmanan) +Files: runtime/doc/quickfix.txt, src/ex_cmds.h + +Patch 7.0.211 +Problem: With ":set cindent noai bs=0" using CTRL-U in Insert mode will + delete auto-indent. After ":set ai" it doesn't. +Solution: Also check 'cindent' being set. (Ryan Lortie) +Files: src/edit.c + +Patch 7.0.212 +Problem: The GUI can't be terminated with SIGTERM. (Mark Logan) +Solution: Use the signal protection in the GUI as in the console, allow + signals when waiting for 100 msec or longer. +Files: src/ui.c + +Patch 7.0.213 +Problem: When 'spellfile' has two regions that use the same sound folding + using "z=" will cause memory to be freed twice. (Mark Woodward) +Solution: Clear the hashtable properly so that the items are only freed once. +Files: src/spell.c + +Patch 7.0.214 +Problem: When using <f-args> in a user command it's not possible to have an + argument end in '\ '. +Solution: Change the handling of backslashes. (Yakov Lerner) +Files: runtime/doc/map.txt, src/ex_docmd.c + +Patch 7.0.215 (extra) +Problem: Mac: Scrollbar size isn't set. Context menu has disabled useless + Help entry. Call to MoreMasterPointers() is ignored. +Solution: Call SetControlViewSize() in gui_mch_set_scrollbar_thumb(). Use + kCMHelpItemRemoveHelp for ContextualMenuSelect(). Remove call to + MoreMasterPointers(). (Nicolas Weber) +Files: src/gui_mac.c + +Patch 7.0.216 +Problem: ":tab wincmd ]" does not open a tab page. (Tony Mechelynck) +Solution: Copy the cmdmod.tab value to postponed_split_tab and use it. +Files: src/globals.h, src/ex_docmd.c, src/if_cscope.c, src/window.c + +Patch 7.0.217 +Problem: This hangs when pressing "n": ":%s/\n/,\r/gc". (Ori Avtalion) +Solution: Set "skip_match" to advance to the next line. +Files: src/ex_cmds.c + +Patch 7.0.218 +Problem: "%B" in 'statusline' always shows zero in Insert mode. (DervishD) +Solution: Remove the exception for Insert mode, check the column for being + valid instead. +Files: src/buffer.c + +Patch 7.0.219 +Problem: When using the 'editexisting.vim' script and a file is being + edited in another tab page the window is split. The "+123" + argument is not used. +Solution: Make the tab page with the file the current tab page. Set + v:swapcommand when starting up to the first "+123" or "-c" command + line argument. +Files: runtime/macros/editexisting.vim, src/main.c + +Patch 7.0.220 +Problem: Crash when using winnr('#') in a new tab page. (Andy Wokula) +Solution: Check for not finding the window. +Files: src/eval.c + +Patch 7.0.221 +Problem: finddir() uses 'path' by default, where "." means relative to the + current file. But it works relative to the current directory. + (Tye Zdrojewski) +Solution: Add the current buffer name to find_file_in_path_option() for the + relative file name. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.0.222 +Problem: Perl indenting using 'cindent' works almost right. +Solution: Recognize '#' to start a comment. (Alex Manoussakis) Added '#' + flag in 'cinoptions'. +Files: runtime/doc/indent.txt, src/misc1.c + +Patch 7.0.223 +Problem: Unprintable characters in completion text mess up the popup menu. + (Gombault Damien) +Solution: Use strtrans() to make the text printable. +Files: src/charset.c, src/popupmnu.c + +Patch 7.0.224 +Problem: When expanding "##" spaces are escaped twice. (Pavol Juhas) +Solution: Don't escape the spaces that separate arguments. +Files: src/eval.c, src/ex_docmd.c, src/proto/ex_docmd.pro + +Patch 7.0.225 +Problem: When using setline() in an InsertEnter autocommand and doing "A" + the cursor ends up on the last byte in the line. (Yukihiro + Nakadaira) +Solution: Only adjust the column when using setline() for the cursor line. + Move it back to the head byte if necessary. +Files: src/eval.c, src/misc2.c + +Patch 7.0.226 +Problem: Display flickering when updating signs through the netbeans + interface. (Xavier de Gaye) +Solution: Remove the redraw_later(CLEAR) call. +Files: src/netbeans.c + +Patch 7.0.227 +Problem: Crash when closing a window in the GUI. (Charles Campbell) +Solution: Don't call out_flush() from win_free(). +Files: src/window.c + +Patch 7.0.228 +Problem: Cygwin: problem with symlink to DOS style path. +Solution: Invoke cygwin_conv_to_posix_path(). (Luca Masini) +Files: src/os_unix.c + +Patch 7.0.229 +Problem: When 'pastetoggle' starts with Esc then pressing Esc in Insert + mode will not time out. (Jeffery Small) +Solution: Use KL_PART_KEY instead of KL_PART_MAP, so that 'ttimeout' applies + to the 'pastetoggle' key. +Files: src/getchar.c + +Patch 7.0.230 +Problem: After using ":lcd" a script doesn't know how to restore the + current directory. +Solution: Add the haslocaldir() function. (Bob Hiestand) +Files: runtime/doc/usr_41.txt, runtime/doc/eval.txt, src/eval.c + +Patch 7.0.231 +Problem: When recovering from a swap file the page size is likely to be + different from the minimum. The block used for the first page + then has a buffer of the wrong size, causing a crash when it's + reused later. (Zephaniah Hull) +Solution: Reallocate the buffer when the page size changes. Also check that + the page size is at least the minimum value. +Files: src/memline.c + +Patch 7.0.232 (extra) +Problem: Mac: doesn't support GUI tab page labels. +Solution: Add GUI tab page labels. (Nicolas Weber) +Files: src/feature.h, src/gui.c, src/gui.h, src/gui_mac.c, + src/proto/gui_mac.pro + +Patch 7.0.233 (extra) +Problem: Mac: code formatted badly. +Solution: Fix code formatting +Files: src/gui_mac.c + +Patch 7.0.234 +Problem: It's possible to use feedkeys() from a modeline. That is a + security issue, can be used for a trojan horse. +Solution: Disallow using feedkeys() in the sandbox. +Files: src/eval.c + +Patch 7.0.235 +Problem: It is possible to use writefile() in the sandbox. +Solution: Add a few more checks for the sandbox. +Files: src/eval.c + +Patch 7.0.236 +Problem: Linux 2.4 uses sysinfo() with a mem_unit field, which is not + backwards compatible. +Solution: Add an autoconf check for sysinfo.mem_unit. Let mch_total_mem() + return Kbyte to avoid overflow. +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/option.c, src/os_unix.c + +Patch 7.0.237 +Problem: For root it is recommended to not use 'modeline', but in + not-compatible mode the default is on. +Solution: Let 'modeline' default to off for root. +Files: runtime/doc/options.txt, src/option.c + +Patch 7.0.238 +Problem: Crash when ":match" pattern runs into 'maxmempattern'. (Yakov + Lerner) +Solution: Don't free the regexp program of match_hl. +Files: src/screen.c + +Patch 7.0.239 +Problem: When using local directories and tab pages ":mksession" uses a + short file name when it shouldn't. Window-local options from a + modeline may be applied to the wrong window. (Teemu Likonen) +Solution: Add the did_lcd flag, use the full path when it's set. Don't use + window-local options from the modeline when using the current + window for another buffer in ":doautoall". +Files: src/fileio.c, src/ex_docmd.c + +Patch 7.0.240 +Problem: Crash when splitting a window in the GUI. (opposite of 7.0.227) +Solution: Don't call out_flush() from win_alloc(). Also avoid this for + win_delete(). Also block autocommands while the window structure + is invalid. +Files: src/window.c + +Patch 7.0.241 +Problem: ":windo throw 'foo'" loops forever. (Andy Wokula) +Solution: Detect that win_goto() doesn't work. +Files: src/ex_cmds2.c + +Patch 7.0.242 (extra) +Problem: Win32: Using "-register" in a Vim that does not support OLE causes + a crash. +Solution: Don't use EMSG() but mch_errmsg(). Check p_go for being NULL. + (partly by Michael Wookey) +Files: src/gui_w32.c + +Patch 7.0.243 (extra) +Problem: Win32: When GvimExt is built with MSVC 2005 or later, the "Edit + with vim" context menu doesn't appear in the Windows Explorer. +Solution: Embed the linker manifest file into the resources of GvimExt.dll. + (Mathias Michaelis) +Files: src/GvimExt/Makefile + + +Fixes after Vim 7.1a BETA: + +The extra archive had CVS directories included below "farsi" and +"runtime/icons". CVS was missing the farsi icon files. + +Fix compiling with Gnome 2.18, undefine bind_textdomain_codeset. (Daniel +Drake) + +Mac: "make install" didn't copy rgb.txt. + +When editing a compressed file while there are folds caused "ml_get" errors +and some lines could be missing. When decompressing failed option values were +not restored. + + +Patch 7.1a.001 +Problem: Crash when downloading a spell file. (Szabolcs Horvat) +Solution: Avoid that did_set_spelllang() is used recursively when a new + window is opened for the download. + Also avoid wiping out the wrong buffer. +Files: runtime/autoload/spellfile.vim, src/buffer.c, src/ex_cmds.c, + src/spell.c + +Patch 7.1a.002 (extra) +Problem: Compilation error with MingW. +Solution: Check for LPTOOLTIPTEXT to be defined. +Files: src/gui_w32.c + + +Fixes after Vim 7.1b BETA: + +Made the Mzscheme interface build both with old and new versions of Mzscheme, +using an #ifdef. (Sergey Khorev) +Mzscheme interface didn't link, missing function. Changed order of libraries +in the configure script. + +Ruby interface didn't compile on Mac. Changed #ifdef. (Kevin Ballard) + +Patch 7.1b.001 (extra) +Problem: Random text in a source file. No idea how it got there. +Solution: Delete the text. +Files: src/gui_w32.c + +Patch 7.1b.002 +Problem: When 'maxmem' is large there can be an overflow in computations. + (Thomas Wiegner) +Solution: Use the same mechanism as in mch_total_mem(): first reduce the + multiplier as much as possible. +Files: src/memfile.c + +============================================================================== +VERSION 7.2 *version-7.2* *version7.2* + +This section is about improvements made between version 7.1 and 7.2. + +This is mostly a bug-fix release. The main new feature is floating point +support. |Float| + + +Changed *changed-7.2* +------- + +Changed the command line buffer name from "command-line" to "[Command Line]". + +Removed optional ! for ":caddexpr", ":cgetexpr", ":cgetfile", ":laddexpr", +":lgetexpr" and ":lgetfile". They are not needed. (Yegappan Lakshmanan) + +An offset for syntax matches worked on bytes instead of characters. That is +inconsistent and can easily be done wrong. Use character offsets now. +(Yukihiro Nakadaira) + +The FileChangedShellPost event was also given when a file didn't change. +(John Little) + +When the current line is long (doesn't fit) the popup menu can't be seen. +Display it below the screen line instead of below the text line. +(Francois Ingelrest) + +Switched to autoconf version 2.62. + +Moved including fcntl.h to vim.h and removed it from all .c files. + +Introduce macro STRMOVE(d, s), like STRCPY() for overlapping strings. +Use it instead of mch_memmove(p, p + x, STRLEN(p + x) + 1). + +Removed the bulgarian.vim keymap file, two more standard ones replace it. +(Boyko Bantchev) + +Increased the maximum number of tag matches for command line completion from +200 to 300. + +Renamed help file sql.txt to ft_sql.txt and ada.txt to ft_ada.txt. + + +Added *added-7.2* +----- + +New syntax files: + CUDA (Timothy B. Terriberry) + Cdrdao config (Nikolai Weibull) + Coco/R (Ashish Shukla) + Denyhosts config (Nikolai Weibull) + Dtrace script (Nicolas Weber) + Git output, commit, config, rebase, send-email (Tim Pope) + HASTE and HastePreProc (M. Tranchero) + Haml (Tim Pope) + Host conf (Nikolai Weibull) + Linden script (Timo Frenay) + MS messages (Kevin Locke) + PDF (Tim Pope) + ProMeLa (Maurizio Tranchero) + Reva Foth (Ron Aaron) + Sass (Tim Pope) + Symbian meta-makefile, MMP (Ron Aaron) + VOS CM macro (Andrew McGill) + XBL (Doug Kearns) + +New tutor files: + Made UTF-8 versions of all the tutor files. + Greek renamed from ".gr" to ".el" (Greek vs Greece). + Esperanto (Dominique Pelle) + Croatian (Paul B. Mahol) + +New filetype plugins: + Cdrdao config (Nikolai Weibull) + Debian control files (Debian Vim maintainers) + Denyhosts (Nikolai Weibull) + Dos .ini file (Nikolai Weibull) + Dtrace script (Nicolas Weber) + FnameScript (Nikolai Weibull) + Git, Git config, Git commit, Git rebase, Git send-email (Tim Pope) + Haml (Tim Pope) + Host conf (Nikolai Weibull) + Host access (Nikolai Weibull) + Logtalk (Paulo Moura) + MS messages (Kevin Locke) + NSIS script (Nikolai Weibull) + PDF (Tim Pope) + Reva Forth (Ron Aaron) + Sass (Tim Pope) + +New indent files: + DTD (Nikolai Weibull) + Dtrace script (Nicolas Weber) + Erlang (Csaba Hoch) + FrameScript (Nikolai Weibull) + Git config (Tim Pope) + Haml (Tim Pope) + Logtalk (Paulo Moura) + Sass (Tim Pope) + Tiny Fugue (Christian J. Robinson) + +New compiler plugins: + RSpec (Tim Pope) + +New keymap files: + Croatian (Paul B. Mahol) + Russian Dvorak (Serhiy Boiko) + Ukrainian Dvorak (Serhiy Boiko) + Removed plain Bulgarian, "bds" and phonetic are sufficient. + +Other new runtime files: + Esperanto menu and message translations. (Dominique Pelle) + Finnish menu and message translations. (Flammie Pirinen) + Brazilian Portuguese message translations. (Eduardo Dobay) + +Added floating point support. |Float| + +Added argument to mode() to return a bit more detail about the current mode. +(Ben Schmidt) + +Added support for BSD console mouse: |sysmouse|. (Paul B. Mahol) + +Added the "newtab" value for the 'switchbuf' option. (partly by Yegappan +Lakshmanan) + +Improved error messages for the netbeans interface. (Philippe Fremy) + +Added support for using xterm mouse codes for screen. (Micah Cowan) + +Added support for cross compiling: +Adjusted configure.in and added INSTALLcross.txt. (Marc Haisenko) Fixed +mistakes in configure.in after that. +Don't use /usr/local/include and /usr/local/lib in configure. (Philip +Prindeville) +For cross compiling the Cygwin version on Unix, change VIM.TLB to vim.tlb in +src/vim.rc. (Tsuneo Nakagawa) + +Added v:searchforward variable: What direction we're searching in. (Yakov +Lerner) + + +Fixed *fixed-7.2* +----- + +Patch 7.1.001 +Problem: Still can't build with Gnome libraries. +Solution: Fix typo in bind_textdomain_codeset. (Mike Kelly) +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 7.1.002 +Problem: Oracle Pro*C/C++ files are not detected. +Solution: Add the missing star. (Micah J. Cowan) +Files: runtime/filetype.vim + +Patch 7.1.003 (extra) +Problem: The "Tear off this menu" message appears in the message history + when using a menu. (Yongwei Wu) +Solution: Disable message history when displaying the menu tip. +Files: src/gui_w32.c + +Patch 7.1.004 +Problem: Crash when doing ":next directory". (Raphael Finkel) +Solution: Do not use "buf", it may be invalid after autocommands. +Files: src/ex_cmds.c + +Patch 7.1.005 +Problem: "cit" used on <foo></foo> deletes <foo>. Should not delete + anything and start insertion, like "ci'" does on "". (Michal + Bozon) +Solution: Handle an empty object specifically. Made it work consistent for + various text objects. +Files: src/search.c + +Patch 7.1.006 +Problem: Resetting 'modified' in a StdinReadPost autocommand doesn't work. +Solution: Set 'modified' before the autocommands instead of after it. +Files: src/buffer.c + +Patch 7.1.007 (extra) +Problem: Mac: Context menu doesn't work on Intel Macs. + Scrollbars are not dimmed when Vim is not the active application. +Solution: Remove the test whether context menus are supported. They are + always there in OS/X. Handle the dimming. (Nicolas Weber) +Files: src/gui_mac.c, src/gui.h + +Patch 7.1.008 +Problem: getfsize() returns a negative number for very big files. +Solution: Check for overflow and return -2. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.1.009 +Problem: In diff mode, displaying the difference between a tab and spaces + is not highlighted correctly. +Solution: Only change highlighting at the end of displaying a tab. +Files: src/screen.c + +Patch 7.1.010 +Problem: The Gnome session file doesn't restore tab pages. +Solution: Add SSOP_TABPAGES to the session flags. (Matias D'Ambrosio) +Files: src/gui_gtk_x11.c + +Patch 7.1.011 +Problem: Possible buffer overflow when $VIMRUNTIME is very long. (Victor + Stinner) +Solution: Use vim_snprintf(). +Files: src/main.c + +Patch 7.1.012 +Problem: ":let &shiftwidth = 'asdf'" doesn't produce an error message. +Solution: Check for a string argument. (Chris Lubinski) +Files: src/option.c + +Patch 7.1.013 +Problem: ":syn include" only loads the first file, while it is documented + as doing the equivalent of ":runtime!". +Solution: Change the argument to source_runtime(). (James Vega) +Files: src/syntax.c + +Patch 7.1.014 +Problem: Crash when doing C indenting. (Chris Monson) +Solution: Obtain the current line again after invoking cin_islabel(). +Files: src/edit.c + +Patch 7.1.015 +Problem: MzScheme interface: current-library-collection-paths produces no + list. Interface doesn't build on a Mac. +Solution: Use a list instead of a pair. (Bernhard Fisseni) Use "-framework" + argument for MZSCHEME_LIBS in configure. +Files: src/configure.in, src/if_mzsch.c, src/auto/configure + +Patch 7.1.016 (after patch 7.1.012) +Problem: Error message about setting 'diff' to a string. +Solution: Don't pass an empty string to set_option_value() when setting + 'diff'. +Files: src/quickfix.c, src/popupmnu.c + +Patch 7.1.017 +Problem: ":confirm w" does give a prompt when 'readonly' is set, but not + when the file permissions are read-only. (Michael Schaap) +Solution: Provide a dialog in both situations. (Chris Lubinski) +Files: src/ex_cmds.c, src/fileio.c, src/proto/fileio.pro + +Patch 7.1.018 +Problem: When 'virtualedit' is set a "p" of a block just past the end of + the line inserts before the cursor. (Engelke) +Solution: Check for the cursor being just after the line (Chris Lubinski) +Files: src/ops.c + +Patch 7.1.019 +Problem: ":py" asks for an argument, ":py asd" then gives the error that + ":py" isn't implemented. Should already happen for ":py". +Solution: Compare with ex_script_ni. (Chris Lubinski) +Files: src/ex_docmd.c + +Patch 7.1.020 +Problem: Reading from uninitialized memory when using a dialog. (Dominique + Pelle) +Solution: In msg_show_console_dialog() append a NUL after every appended + character. +Files: src/message.c + +Patch 7.1.021 (after 7.1.015) +Problem: Mzscheme interface doesn't compile on Win32. +Solution: Fix the problem that 7.1.015 fixed in a better way. (Sergey Khorev) +Files: src/if_mzsch.c + +Patch 7.1.022 +Problem: When setting 'keymap' twice the b:keymap_name variable isn't set. + (Milan Berta) +Solution: Don't unlet b:keymap_name for ":loadkeymap". (Martin Toft) +Files: src/digraph.c + +Patch 7.1.023 +Problem: "dw" in a line with one character deletes the line. Vi and nvi + don't do this. (Kjell Arne Rekaa) +Solution: Check for one-character words especially. +Files: src/search.c + +Patch 7.1.024 +Problem: Using a pointer that has become invalid. (Chris Monson) +Solution: Obtain the line pointer again after we looked at another line. +Files: src/search.c + +Patch 7.1.025 +Problem: search() and searchpos() don't use match under cursor at start of + line when using 'bc' flags. (Viktor Kojouharov) +Solution: Don't go to the previous line when the 'c' flag is present. + Also fix that "j" doesn't move the cursor to the right column. +Files: src/eval.c, src/search.c + +Patch 7.1.026 +Problem: "[p" doesn't work in Visual mode. (David Brown) +Solution: Use checkclearop() instead of checkclearopq(). +Files: src/normal.c + +Patch 7.1.027 +Problem: On Sun systems opening /dev/fd/N doesn't work, and they are used + by process substitutions. +Solution: Allow opening specific character special files for Sun systems. + (Gary Johnson) +Files: src/fileio.c, src/os_unix.h + +Patch 7.1.028 +Problem: Can't use last search pattern for ":sort". (Brian McKee) +Solution: When the pattern is empty use the last search pattern. (Martin + Toft) +Files: runtime/doc/change.txt, src/ex_cmds.c + +Patch 7.1.029 (after 7.1.019) +Problem: Can't compile when all interfaces are used. (Taylor Venable) +Solution: Only check for ex_script_ni when it's defined. +Files: src/ex_docmd.c + +Patch 7.1.030 +Problem: The "vimtutor" shell script checks for "vim6" but not for "vim7". + (Christian Robinson) +Solution: Check for more versions, but prefer using "vim". +Files: src/vimtutor + +Patch 7.1.031 +Problem: virtcol([123, '$']) doesn't work. (Michael Schaap) +Solution: When '$' is used for the column number get the last column. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.1.032 +Problem: Potential crash when editing a command line. (Chris Monson) +Solution: Check the position to avoid access before the start of an array. +Files: src/ex_getln.c + +Patch 7.1.033 +Problem: A buffer is marked modified when it was first deleted and then + added again using a ":next" command. (John Mullin) +Solution: When checking if a buffer is modified use the BF_NEVERLOADED flag. +Files: src/option.c + +Patch 7.1.034 +Problem: Win64: A few compiler warnings. Problems with optimizer. +Solution: Use int instead of size_t. Disable the optimizer in one function. + (George V. Reilly) +Files: src/eval.c, src/spell.c + +Patch 7.1.035 +Problem: After ":s/./&/#" all listed lines have a line number. (Yakov + Lerner) +Solution: Reset the line number flag when not using the "&" flag. +Files: src/ex_cmds.c + +Patch 7.1.036 +Problem: Completing ":echohl" argument should include "None". (Ori + Avtalion) ":match" should have "none" too. +Solution: Add flags to use expand_highlight(). Also fix that when disabling + FEAT_CMDL_COMPL compilation fails. (Chris Lubinski) +Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/syntax.pro + src/syntax.c + +Patch 7.1.037 +Problem: strcpy() used for overlapping strings. (Chris Monson) +Solution: Use mch_memmove() instead. +Files: src/option.c + +Patch 7.1.038 +Problem: When 'expandtab' is set then a Tab copied for 'copyindent' is + expanded to spaces, even when 'preserveindent' is set. (Alexei + Alexandrov) +Solution: Remove the check for 'expandtab'. Also fix that ">>" doesn't obey + 'preserveindent'. (Chris Lubinski) +Files: src/misc1.c + +Patch 7.1.039 +Problem: A tag in a help file that starts with "help-tags" and contains a + percent sign may make Vim crash. (Ulf Harnhammar) +Solution: Use puts() instead of fprintf(). +Files: src/ex_cmds.c + +Patch 7.1.040 +Problem: ":match" only supports three matches. +Solution: Add functions clearmatches(), getmatches(), matchadd(), + matchdelete() and setmatches(). Changed the data structures for + this. A small bug in syntax.c is fixed, so newly created + highlight groups can have their name resolved correctly from their + ID. (Martin Toft) +Files: runtime/doc/eval.txt, runtime/doc/pattern.txt, + runtime/doc/usr_41.txt, src/eval.c, src/ex_docmd.c, + src/proto/window.pro, src/screen.c, src/structs.h, src/syntax.c, + src/testdir/Makefile, src/testdir/test63.in, + src/testdir/test63.ok, src/window.c + +Patch 7.1.041 (extra, after 7.1.040) +Problem: Some changes for patch 7.1.040 are in extra files. +Solution: Update the extra files. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.1.042 (after 7.1.040) +Problem: Internal error when using matchadd(). (David Larson) +Solution: Check the third argument to be present before using the fourth + argument. (Martin Toft) +Files: src/eval.c + +Patch 7.1.043 +Problem: In Ex mode using CTRL-D twice may cause a crash. Cursor isn't + positioned properly after CTRL-D. +Solution: Set prev_char properly. Position the cursor correctly. (Antony + Scriven) +Files: src/ex_getln.c + +Patch 7.1.044 +Problem: In Insert mode 0 CTRL-T deletes all indent, it should add indent. + (Gautam Iyer) +Solution: Check for CTRL-D typed. +Files: src/edit.c + +Patch 7.1.045 +Problem: Unnecessary screen redrawing. (Jjgod Jiang) +Solution: Reset "must_redraw" after clearing the screen. +Files: src/screen.c + +Patch 7.1.046 +Problem: ":s" command removes combining characters. (Ron Aaron) +Solution: Copy composing characters individually. (Chris Lubinski) +Files: src/regexp.c + +Patch 7.1.047 +Problem: vim_regcomp() called with invalid argument. (Xiaozhou Liu) +Solution: Change TRUE to RE_MAGIC + RE_STRING. +Files: src/ex_eval.c + +Patch 7.1.048 +Problem: The matchparen plugin doesn't update the match when scrolling with + the mouse wheel. (Ilya Bobir) +Solution: Set the match highlighting for text that can be scrolled into the + viewable area without moving the cursor. (Chris Lubinski) +Files: runtime/plugin/matchparen.vim + +Patch 7.1.049 +Problem: Cannot compile GTK2 version with Hangul input feature. +Solution: Don't define FEAT_XFONTSET when using GTK2. +Files: src/feature.h + +Patch 7.1.050 +Problem: Possible crash when using C++ indenting. (Chris Monson) +Solution: Keep the line pointer to the line to compare with. Avoid going + past the end of line. +Files: src/misc1.c + +Patch 7.1.051 +Problem: Accessing uninitialized memory when finding spell suggestions. +Solution: Don't try swapping characters at the end of a word. +Files: src/spell.c + +Patch 7.1.052 +Problem: When creating a new match not all fields are initialized, which + may lead to unpredictable results. +Solution: Initialise rmm_ic and rmm_maxcol. +Files: src/window.c + +Patch 7.1.053 +Problem: Accessing uninitialized memory when giving a message. +Solution: Check going the length before checking for a NUL byte. +Files: src/message.c + +Patch 7.1.054 +Problem: Accessing uninitialized memory when displaying the fold column. +Solution: Add a NUL to the extra array. (Dominique Pelle). Also do this in + a couple of other situations. +Files: src/screen.c + +Patch 7.1.055 +Problem: Using strcpy() with arguments that overlap. +Solution: Use mch_memmove() instead. +Files: src/buffer.c, src/charset.c, src/eval.c, src/ex_getln.c, + src/misc1.c, src/regexp.c, src/termlib.c + +Patch 7.1.056 +Problem: More prompt does not behave correctly after scrolling back. + (Randall W. Morris) +Solution: Avoid lines_left becomes negative. (Chris Lubinski) Don't check + mp_last when deciding to show the more prompt. (Martin Toft) +Files: src/message.c + +Patch 7.1.057 +Problem: Problem with CursorHoldI when using "r" in Visual mode (Max + Dyckhoff) +Solution: Ignore CursorHold(I) when getting a second character for a Normal + mode command. Also abort the "r" command in Visual when a special + key is typed. +Files: src/normal.c + +Patch 7.1.058 +Problem: When 'rightleft' is set the completion menu is positioned wrong. + (Baha-Eddine MOKADEM) +Solution: Fix the completion menu. (Martin Toft) +Files: src/popupmnu.c, src/proto/search.pro, src/search.c + +Patch 7.1.059 +Problem: When in Ex mode and doing "g/^/vi" and then pressing CTRL-C Vim + hangs and beeps. (Antony Scriven) +Solution: Clear "got_int" in the main loop to avoid the hang. When typing + CTRL-C twice in a row abort the ":g" command. This is Vi + compatible. +Files: src/main.c + +Patch 7.1.060 +Problem: Splitting quickfix window messes up window layout. (Marius + Gedminas) +Solution: Compute the window size in a smarter way. (Martin Toft) +Files: src/window.c + +Patch 7.1.061 +Problem: Win32: When 'encoding' is "latin1" 'ignorecase' doesn't work for + characters with umlaut. (Joachim Hofmann) +Solution: Do not use islower()/isupper()/tolower()/toupper() but our own + functions. (Chris Lubinski) +Files: src/mbyte.c, src/regexp.c, src/vim.h + +Patch 7.1.062 (after 7.1.038) +Problem: Indents of C comments can be wrong. (John Mullin) +Solution: Adjust ind_len. (Chris Lubinski) +Files: src/misc1.c + +Patch 7.1.063 (after 7.1.040) +Problem: Warning for uninitialized variable. +Solution: Initialise it to NULL. +Files: src/ex_docmd.c + +Patch 7.1.064 +Problem: On Interix some files appear not to exist. +Solution: Remove the top bit from st_mode. (Ligesh) +Files: src/os_unix.c + +Patch 7.1.065 (extra) +Problem: Win32: Compilation problem for newer version of w32api. +Solution: Only define __IID_DEFINED__ when needed. (Chris Sutcliffe) +Files: src/Make_ming.mak, src/iid_ole.c + +Patch 7.1.066 +Problem: When 'bomb' is set or reset the file should be considered + modified. (Tony Mechelynck) +Solution: Handle like 'endofline'. (Martin Toft) +Files: src/buffer.c, src/fileio.c, src/option.c, src/structs.h + +Patch 7.1.067 +Problem: 'thesaurus' doesn't work when 'infercase' is set. (Mohsin) +Solution: Don't copy the characters being completed but check the case and + apply it to the suggested word. Also fix that the first word in + the thesaurus line is not used. (Martin Toft) +Files: src/edit.c + +Patch 7.1.068 +Problem: When 'equalalways' is set and splitting a window, it's possible + that another small window gets bigger. +Solution: Only equalize window sizes when after a split the windows are + smaller than another window. (Martin Toft) +Files: runtime/doc/options.txt, runtime/doc/windows.txt, src/window.c + +Patch 7.1.069 +Problem: GTK GUI: When using confirm() without a default button there still + is a default choice. +Solution: Ignore Enter and Space when there is no default button. (Chris + Lubinski) +Files: src/gui_gtk.c + +Patch 7.1.070 (extra) +Problem: Win32 GUI: When using confirm() without a default button there + still is a default choice. +Solution: Set focus on something else than a button. (Chris Lubinski) +Files: src/gui_w32.c + +Patch 7.1.071 (after 7.1.040) +Problem: Regexp patterns are not tested. +Solution: Add a basic test, to be expanded later. + Also add (commented-out) support for valgrind. +Files: src/testdir/Makefile, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.1.072 (extra, after 7.1.041 and 7.1.071) +Problem: Some changes for patch 7.1.071 are in extra files. +Solution: Update the extra files. Also fix a few warnings from the DOS test + makefile. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.1.073 (after 7.1.062) +Problem: Wrong cursor position and crash when 'preserveindent' is set. + (Charles Campbell) +Solution: Handle the situation that we start without indent. (Chris + Lubinski) +Files: src/misc1.c + +Patch 7.1.074 +Problem: Crash when calling string() on a recursively nested List. +Solution: Check result value for being NULL. (Yukihiro Nakadaira) +Files: src/eval.c + +Patch 7.1.075 +Problem: ":let v:statusmsg" reads memory already freed. +Solution: Don't set v:statusmsg when listing it. +Files: src/eval.c + +Patch 7.1.076 +Problem: Another strcpy() with overlapping arguments. +Solution: Use mch_memmove(). (Dominique Pelle) And another one. +Files: src/ex_docmd.c, src/normal.c + +Patch 7.1.077 +Problem: Using "can_spell" without initializing it. (Dominique Pelle) +Solution: Set a default for get_syntax_attr(). +Files: src/syntax.c + +Patch 7.1.078 +Problem: Dropping a file name on gvim that contains a CSI byte doesn't work + when editing the command line. +Solution: Escape the CSI byte when inserting in the input buffer. (Yukihiro + Nakadaira) +Files: src/gui.c, src/ui.c + +Patch 7.1.079 +Problem: When the locale is "C" and 'encoding' is "latin1" then the "@" + character in 'isfname', 'isprint', etc. doesn't pick up accented + characters. +Solution: Instead of isalpha() use MB_ISLOWER() and MB_ISUPPER(). +Files: src/charset.c, src/macros.h + +Patch 7.1.080 (extra) +Problem: Compiler warnings for using "const char *" for "char *". +Solution: Add type casts. (Chris Sutcliffe) +Files: src/GvimExt/gvimext.cpp + +Patch 7.1.081 +Problem: Command line completion for a shell command: "cat </tmp/file<Tab>" + doesn't work. +Solution: Start the file name at any character that can't be in a file name. + (Martin Toft) +Files: src/ex_docmd.c + +Patch 7.1.082 +Problem: After a ":split" the matchparen highlighting isn't there. +Solution: Install a WinEnter autocommand. Also fixes that after + ":NoMatchParen" only the current window is updated. (Martin Toft) +Files: runtime/doc/pi_paren.txt, runtime/plugin/matchparen.vim + +Patch 7.1.083 (after 7.1.081) +Problem: Command line completion doesn't work with wildcards. +Solution: Add vim_isfilec_or_wc() and use it. (Martin Toft) +Files: src/charset.c, src/proto/charset.pro, src/ex_docmd.c + +Patch 7.1.084 +Problem: Using the "-nb" argument twice causes netbeans not to get + fileOpened events. +Solution: Change "&" to "&&". (Xavier de Gaye) +Files: src/ex_cmds.c + +Patch 7.1.085 +Problem: ":e fold.c" then ":sp fold.c" results in folds of original window + to disappear. (Akita Noek) +Solution: Invoke foldUpdateAll() for all windows of the changed buffer. + (Martin Toft) +Files: src/ex_cmds.c + +Patch 7.1.086 +Problem: Crash when using specific Python syntax highlighting. (Quirk) +Solution: Check for a negative index, coming from a keyword match at the + start of a line from a saved state. +Files: src/syntax.c + +Patch 7.1.087 +Problem: Reading past ":cscope find" command. Writing past end of a buffer. +Solution: Check length of the argument before using the pattern. Use + vim_strncpy(). (Dominique Pelle) +Files: if_cscope.c + +Patch 7.1.088 (extra) +Problem: The coordinates used by ":winpos" differ from what getwinposx() + and getwinposy() return. +Solution: Use MoveWindowStructure() instead of MoveWindow(). (Michael Henry) +Files: src/gui_mac.c + +Patch 7.1.089 +Problem: ":let loaded_getscriptPlugin" doesn't clear to eol, result is + "#1in". +Solution: Clear to the end of the screen after displaying the first variable + value. +Files: src/eval.c + +Patch 7.1.090 +Problem: Compiler warning on Mac OS X 10.5. +Solution: Don't redeclare sigaltstack(). (Hisashi T Fujinaka) +Files: src/os_unix.c + +Patch 7.1.091 (extra) +Problem: Win32: Can't embed Vim inside another application. +Solution: Add the --windowid argument. (Nageshwar) +Files: runtime/doc/gui_w32.txt, runtime/doc/starting.txt, + runtime/doc/vi_diff.txt, src/globals.h, src/gui_w32.c, src/main.c + +Patch 7.1.092 (extra, after 7.1.088) +Problem: Wrong arguments for MoveWindowStructure(). +Solution: Remove "TRUE". (Michael Henry) +Files: src/gui_mac.c + +Patch 7.1.093 +Problem: Reading past end of a screen line when determining cell width. + (Dominique Pelle) +Solution: Add an argument to mb_off2cells() for the maximum offset. +Files: src/globals.h, src/gui.c, src/mbyte.c, src/proto/mbyte.pro, + src/screen.c + +Patch 7.1.094 +Problem: When checking if syntax highlighting is present, looking in the + current buffer instead of the specified one. +Solution: Use "buf" instead of "curbuf". +Files: src/syntax.c + +Patch 7.1.095 +Problem: The FocusLost and FocusGained autocommands are triggered + asynchronously in the GUI. This may cause arbitrary problems. +Solution: Put the focus event in the input buffer and handle it when ready + for it. +Files: src/eval.c, src/getchar.c, src/gui.c, src/gui_gtk_x11.c, + src/keymap.h + +Patch 7.1.096 +Problem: Reading past end of a string when resizing Vim. (Dominique Pelle) +Solution: Check the string pointer before getting the char it points to. +Files: src/message.c + +Patch 7.1.097 +Problem: ":setlocal stl=%!1+1" does not work. +Solution: Adjust check for pointer. (Politz) +Files: src/option.c + +Patch 7.1.098 +Problem: ":call s:var()" doesn't work if "s:var" is a Funcref. (Andy Wokula) +Solution: Before converting "s:" into a script ID, check if it is a Funcref. +Files: src/eval.c + +Patch 7.1.099 +Problem: When the 'keymap' and 'paste' options have a non-default value, + ":mkexrc" and ":mksession" do not correctly set the options. +Solution: Set the options with side effects before other options. +Files: src/option.c + +Patch 7.1.100 +Problem: Win32: Executing cscope doesn't always work properly. +Solution: Use another way to invoke cscope. (Mike Williams) +Files: src/if_cscope.c, src/if_cscope.h, src/main.c, + src/proto/if_cscope.pro + +Patch 7.1.101 +Problem: Ruby: The Buffer.line= method does not work. +Solution: Add the "self" argument to set_current_line(). (Jonathan Hankins) +Files: src/if_ruby.c + +Patch 7.1.102 +Problem: Perl interface doesn't compile with new version of Perl. +Solution: Add two variables to the dynamic library loading. (Suresh + Govindachar) +Files: src/if_perl.xs + +Patch 7.1.103 +Problem: Using "dw" with the cursor past the end of the last line (using + CTRL-\ CTRL-O from Insert mode) deletes a character. (Tim Chase) +Solution: Don't move the cursor back when the movement failed. +Files: src/normal.c + +Patch 7.1.104 (after 7.1.095) +Problem: When 'lazyredraw' is set a focus event causes redraw to be + postponed until a key is pressed. +Solution: Instead of not returning from vgetc() when a focus event is + encountered return K_IGNORE. Add plain_vgetc() for when the + caller doesn't want to get K_IGNORE. +Files: src/digraph.c, src/edit.c, src/ex_cmds.c, src/ex_getln.c, + src/getchar.c, src/normal.c, src/proto/getchar.pro, src/window.c + +Patch 7.1.105 +Problem: Internal error when using "0 ? {'a': 1} : {}". (A.Politz) +Solution: When parsing a dictionary value without using the value, don't try + obtaining the key name. +Files: src/eval.c + +Patch 7.1.106 +Problem: ":messages" doesn't quit listing on ":". +Solution: Break the loop when "got_int" is set. +Files: src/message.c + +Patch 7.1.107 +Problem: When doing a block selection and using "s" to change the text, + while triggering auto-indenting, causes the wrong text to be + repeated in other lines. (Adri Verhoef) +Solution: Compute the change of indent and compensate for that. +Files: src/ops.c + +Patch 7.1.108 (after 7.1.100) +Problem: Win32: Compilation problems in Cscope code. (Jeff Lanzarotta) +Solution: Use (long) instead of (intptr_t) when it's not defined. +Files: src/if_cscope.c + +Patch 7.1.109 +Problem: GTK: when there are many tab pages, clicking on the arrow left of + the labels moves to the next tab page on the right. (Simeon Bird) +Solution: Check the X coordinate of the click and pass -1 as value for the + left arrow. +Files: src/gui_gtk_x11.c, src/term.c + +Patch 7.1.110 (after 7.1.102) +Problem: Win32: Still compilation problems with Perl. +Solution: Change the #ifdefs. (Suresh Govindachar) +Files: src/if_perl.xs + +Patch 7.1.111 +Problem: When using ":vimgrep" with the "j" flag folds from another buffer + may be displayed. (A.Politz) +Solution: When not jumping to another buffer update the folds. +Files: src/quickfix.c + +Patch 7.1.112 +Problem: Using input() with a wrong argument may crash Vim. (A.Politz) +Solution: Init the input() return value to NULL. +Files: src/eval.c + +Patch 7.1.113 +Problem: Using map() to go over an empty list causes memory to be freed + twice. (A.Politz) +Solution: Don't clear the typeval in restore_vimvar(). +Files: src/eval.c + +Patch 7.1.114 +Problem: Memory leak in getmatches(). +Solution: Don't increment the refcount twice. +Files: src/eval.c + +Patch 7.1.115 (after 7.1.105) +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Init variable to NULL. +Files: src/eval.c + +Patch 7.1.116 +Problem: Cannot display Unicode characters above 0x10000. +Solution: Remove the replacement with a question mark when UNICODE16 is not + defined. (partly by Nicolas Weber) +Files: src/screen.c + +Patch 7.1.117 +Problem: Can't check whether Vim was compiled with Gnome. (Tony Mechelynck) +Solution: Add gui_gnome to the has() list. +Files: src/eval.c + +Patch 7.1.118 (after 7.1.107) +Problem: Compiler warning for Visual C compiler. +Solution: Add typecast. (Mike Williams) +Files: src/ops.c + +Patch 7.1.119 +Problem: Crash when 'cmdheight' set to very large value. (A.Politz) +Solution: Limit 'cmdheight' to 'lines' minus one. Store right value of + 'cmdheight' when running out of room. +Files: src/option.c, src/window.c + +Patch 7.1.120 +Problem: Can't properly check memory leaks while running tests. +Solution: Add an argument to garbagecollect(). Delete functions and + variables in the test scripts. +Files: runtime/doc/eval.txt src/eval.c, src/globals.h, src/main.c, + src/testdir/Makefile, src/testdir/test14.in, + src/testdir/test26.in, src/testdir/test34.in, + src/testdir/test45.in, src/testdir/test47.in, + src/testdir/test49.in, src/testdir/test55.in, + src/testdir/test56.in, src/testdir/test58.in, + src/testdir/test59.in, src/testdir/test60.in, + src/testdir/test60.vim, src/testdir/test62.in, + src/testdir/test63.in, src/testdir/test64.in, + +Patch 7.1.121 +Problem: Using ":cd %:h" when editing a file in the current directory + results in an error message for using an empty string. +Solution: When "%:h" results in an empty string use ".". +Files: src/eval.c + +Patch 7.1.122 +Problem: Mac: building Vim.app fails. Using wrong architecture. +Solution: Use line continuation for the gui_bundle dependency. Detect the + system architecture with "uname -a". +Files: src/main.aap + +Patch 7.1.123 +Problem: Win32: ":edit foo ~ foo" expands "~". +Solution: Change the call to expand_env(). +Files: src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/option.c + +Patch 7.1.124 (extra) +Problem: Mac: When dropping a file on Vim.app that is already in the buffer + list (from .viminfo) results in editing an empty, unnamed buffer. + (Axel Kielhorn) Also: warning for unused variable. +Solution: Move to the buffer of the first argument. Delete unused variable. +Files: src/gui_mac.c + +Patch 7.1.125 +Problem: The TermResponse autocommand event is not always triggered. (Aron + Griffis) +Solution: When unblocking autocommands check if v:termresponse changed and + trigger the event then. +Files: src/buffer.c, src/diff.c, src/ex_getln.c, src/fileio.c, + src/globals.h, src/misc2.c, src/proto/fileio.pro, src/window.c + +Patch 7.1.126 (extra) +Problem: ":vimgrep */*" fails when a BufRead autocommand changes directory. + (Bernhard Kuhn) +Solution: Change back to the original directory after loading a file. + Also: use shorten_fname1() to avoid duplicating code. +Files: src/buffer.c, src/ex_docmd.c, src/fileio.c, src/gui_gtk.c, + src/gui_w48.c, src/proto/ex_docmd.pro, src/proto/fileio.pro, + src/quickfix.c + +Patch 7.1.127 +Problem: Memory leak when doing cmdline completion. (Dominique Pelle) +Solution: Free "orig" argument of ExpandOne() when it's not used. +Files: src/ex_getln.c + +Patch 7.1.128 (extra) +Problem: Build problems with new version of Cygwin. +Solution: Remove -D__IID_DEFINED__, like with MingW. (Guopeng Wen) +Files: src/Make_cyg.mak + +Patch 7.1.129 (extra) +Problem: Win32: Can't get the user name when it is longer than 15 + characters. +Solution: Use UNLEN instead of MAX_COMPUTERNAME_LENGTH. (Alexei Alexandrov) +Files: src/os_win32.c + +Patch 7.1.130 +Problem: Crash with specific order of undo and redo. (A.Politz) +Solution: Clear and adjust pointers properly. Add u_check() for debugging. +Files: src/undo.c, src/structs.h + +Patch 7.1.131 +Problem: ":mksession" always adds ":setlocal autoread". (Christian J. + Robinson) +Solution: Skip boolean global/local option using global value. +Files: src/option.c + +Patch 7.1.132 +Problem: getpos("'>") may return a negative column number for a Linewise + selection. (A.Politz) +Solution: Don't add one to MAXCOL. +Files: src/eval.c + +Patch 7.1.133 (after 7.1.126) +Problem: shorten_fname1() linked when it's not needed. +Solution: Add #ifdef. +Files: src/fileio.c + +Patch 7.1.134 (extra) +Problem: Win32: Can't build with VC8 +Solution: Detect the MSVC version instead of using NMAKE_VER. + (Mike Williams) +Files: src/Make_mvc.mak + +Patch 7.1.135 +Problem: Win32: When editing a file c:\tmp\foo and c:\tmp\\foo we have two + buffers for the same file. (Suresh Govindachar) +Solution: Invoke FullName_save() when a path contains "//" or "\\". +Files: src/buffer.c + +Patch 7.1.136 +Problem: Memory leak when using Ruby syntax highlighting. (Dominique Pelle) +Solution: Free the contained-in list. +Files: src/syntax.c + +Patch 7.1.137 +Problem: Build failure when using EXITFREE. (Dominique Pelle) +Solution: Add an #ifdef around using clip_exclude_prog. +Files: src/misc2.c + +Patch 7.1.138 +Problem: The Perl Msg() function doesn't stop when "q" is typed at the more + prompt. (Hari Krishna Dara) +Solution: Check got_int. +Files: src/if_perl.xs + +Patch 7.1.139 +Problem: When using marker folding and ending Insert mode with CTRL-C the + current fold is truncated. (Fred Kater) +Solution: Ignore got_int while updating folds. +Files: src/fold.c + +Patch 7.1.140 +Problem: v:count is set only after typing a non-digit, that makes it + difficult to make a nice mapping. +Solution: Set v:count while still typing the count. +Files: src/normal.c + +Patch 7.1.141 +Problem: GTK: -geom argument doesn't support a negative offset. +Solution: Compute position from the right/lower corner. +Files: src/gui_gtk_x11.c + +Patch 7.1.142 +Problem: ":redir @A>" doesn't work. +Solution: Ignore the extra ">" also when appending. (James Vega) +Files: src/ex_docmd.c + +Patch 7.1.143 +Problem: Uninitialized memory read when diffing three files. (Dominique + Pelle) +Solution: Remove "+ !notset" so that we don't use fields that were not + computed. +Files: src/diff.c + +Patch 7.1.144 +Problem: After ":diffup" cursor can be in the wrong position. +Solution: Force recomputing the cursor position. +Files: src/diff.c + +Patch 7.1.145 +Problem: Insert mode completion: When using the popup menu, after + completing a word and typing a non-word character Vim is still + completing the same word, following CTRL-N doesn't work. + Insert mode Completion: When using CTRL-X O and there is only + "struct." before the cursor, typing one char to reduce the + matches, then BS completion stops. +Solution: When typing a character that is not part of the item being + completed, stop complete mode. For whole line completion also + accept a space. For file name completion stop at a path + separator. + For omni completion stay in completion mode even if completing + with empty string. +Files: src/edit.c + +Patch 7.1.146 (extra) +Problem: VMS: Files with a very rare record organization (VFC) cannot be + properly written by Vim. + On older VAX systems mms runs into a syntax error. +Solution: Check for this special situation. Do not wrap a comment, make it + one long line. (Zoltan Arpadffy) +Files: src/fileio.c, src/Make_vms.mms + +Patch 7.1.147 (after 7.1.127) +Problem: Freeing memory already freed when completing user name. (Meino + Cramer) +Solution: Use a flag to remember if "orig" needs to be freed. +Files: src/ex_getln.c + +Patch 7.1.148 +Problem: Some types are not found by configure. +Solution: Test for the sys/types.h header file. (Sean Boudreau) +Files: src/configure.in, src/auto/configure + +Patch 7.1.149 +Problem: GTK GUI: When the completion popup menu is used scrolling another + window by the scrollbar is OK, but using the scroll wheel it + behaves line <Enter>. +Solution: Ignore K_MOUSEDOWN and K_MOUSEUP. Fix redrawing the popup menu. +Files: src/edit.c, src/gui.c + +Patch 7.1.150 +Problem: When 'clipboard' has "unnamed" using "p" in Visual mode doesn't + work correctly. (Jianrong Yu) +Solution: When 'clipboard' has "unnamed" also obtain the selection when + getting the default register. +Files: src/ops.c + +Patch 7.1.151 +Problem: Using whole line completion with 'ignorecase' and 'infercase' set + and the line is empty get an lalloc(0) error. +Solution: Don't try changing case for an empty match. (Matthew Wozniski) +Files: src/edit.c + +Patch 7.1.152 +Problem: Display problem when 'hls' and 'cursorcolumn' are set and + searching for "$". (John Mullin) Also when scrolling + horizontally when 'wrap' is off. +Solution: Keep track of the column where highlighting was set. Check the + column offset when skipping characters. +Files: src/screen.c + +Patch 7.1.153 +Problem: Compiler warnings on SGI. Undefined XpmAllocColor (Charles + Campbell) +Solution: Add type casts. Init st_dev and st_ino separately. Don't use + type casts for vim_snprintf() when HAVE_STDARG_H is defined. + Define XpmAllocColor when needed. +Files: src/eval.c, src/ex_cmds.c, src/fileio.c, src/misc2.c, + src/gui_xmebw.c + +Patch 7.1.154 +Problem: Compiler warning for signed/unsigned compare. +Solution: Add type cast. +Files: src/screen.c + +Patch 7.1.155 +Problem: Crash when 'undolevels' is 0 and repeating "udd". (James Vega) +Solution: When there is only one branch use u_freeheader() to delete it. +Files: src/undo.c + +Patch 7.1.156 +Problem: Overlapping arguments for strcpy() when expanding command line + variables. +Solution: Use mch_memmove() instead of STRCPY(). Also fix a few typos. + (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.1.157 +Problem: In Ex mode, :" gives an error at end-of-file. (Michael Hordijk) +Solution: Only give an error for an empty line, not for a comment. +Files: src/ex_docmd.c + +Patch 7.1.158 (extra) +Problem: Win32 console: When 'encoding' is "utf-8" and typing Alt-y the + result is wrong. Win32 GUI: Alt-y results in "u" when 'encoding' + is "cp1250" (Lukas Cerman) +Solution: For utf-8 don't set the 7th bit in a byte, convert to the correct + byte sequence. For cp1250, when conversion to 'encoding' results + in the 7th bit not set, set the 7th bit after conversion. +Files: src/os_win32.c, src/gui_w48.c + +Patch 7.1.159 +Problem: strcpy() has overlapping arguments. +Solution: Use mch_memmove() instead. (Dominique Pelle) +Files: src/ex_cmds.c + +Patch 7.1.160 +Problem: When a focus autocommand is defined, getting or losing focus + causes the hit-enter prompt to be redrawn. (Bjorn Winckler) +Solution: Overwrite the last line. +Files: src/message.c + +Patch 7.1.161 +Problem: Compilation errors with tiny features and EXITFREE. +Solution: Add #ifdefs. (Dominique Pelle) +Files: src/edit.c, src/misc2.c + +Patch 7.1.162 +Problem: Crash when using a modifier before "while" or "for". (A.Politz) +Solution: Skip modifiers when checking for a loop command. +Files: src/proto/ex_docmd.pro, src/ex_docmd.c, src/ex_eval.c + +Patch 7.1.163 +Problem: Warning for the unknown option 'bufsecret'. +Solution: Remove the lines .vim that use this option. (Andy Wokula) +Files: runtime/menu.vim + +Patch 7.1.164 +Problem: Reading past end of regexp pattern. (Dominique Pelle) +Solution: Use utf_ptr2len(). +Files: src/regexp.c + +Patch 7.1.165 +Problem: Crash related to getting X window ID. (Dominique Pelle) +Solution: Don't trust the window ID that we got in the past, check it every + time. +Files: src/os_unix.c + +Patch 7.1.166 +Problem: Memory leak for using "gp" in Visual mode. +Solution: Free memory in put_register(). (Dominique Pelle) +Files: src/ops.c + +Patch 7.1.167 +Problem: Xxd crashes when using "xxd -b -c 110". (Debian bug 452789) +Solution: Allocate more memory. Fix check for maximum number of columns. +Files: src/xxd/xxd.c + +Patch 7.1.168 (extra) +Problem: Win32 GUI: Since patch 7.1.095, when the Vim window does not have + focus, clicking in it doesn't position the cursor. (Juergen + Kraemer) +Solution: Don't reset s_button_pending just after receiving focus. +Files: src/gui_w48.c + +Patch 7.1.169 +Problem: Using uninitialized variable when system() fails. (Dominique + Pelle) +Solution: Let system() return an empty string when it fails. +Files: src/eval.c + +Patch 7.1.170 +Problem: Valgrind warning for overlapping arguments for strcpy(). +Solution: Use mch_memmove() instead. (Dominique Pelle) +Files: src/getchar.c + +Patch 7.1.171 +Problem: Reading one byte before allocated memory. +Solution: Check index not to become negative. (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.1.172 +Problem: When 'buftype' is "acwrite" Vim still checks if the file or + directory exists before overwriting. +Solution: Don't check for overwriting when the buffer name is not a file + name. +Files: src/ex_cmds.c + +Patch 7.1.173 +Problem: Accessing freed memory. (Dominique Pelle) +Solution: Don't call reg_getline() to check if a line is the first in the + file. +Files: src/regexp.c + +Patch 7.1.174 +Problem: Writing NUL past end of a buffer. +Solution: Copy one byte less when using strncat(). (Dominique Pelle) +Files: src/ex_cmds.c, src/ex_docmd.c, + +Patch 7.1.175 +Problem: <BS> doesn't work with some combination of 'sts', 'linebreak' and + 'backspace'. (Francois Ingelrest) +Solution: When adding white space results in not moving back delete one + character. +Files: src/edit.c + +Patch 7.1.176 +Problem: Building with Aap fails when the "compiledby" argument contains + '<' or '>' characters. (Alex Yeh) +Solution: Change how quoting is done in the Aap recipe. +Files: src/main.aap + +Patch 7.1.177 +Problem: Freeing memory twice when in debug mode while reading a script. +Solution: Ignore script input while in debug mode. +Files: src/ex_cmds2.c, src/getchar.c, src/globals.h + +Patch 7.1.178 +Problem: "%" doesn't work on "/* comment *//* comment */". +Solution: Don't handle the "//" in "*//*" as a C++ comment. (Markus + Heidelberg) +Files: src/search.c + +Patch 7.1.179 +Problem: Need to check for TCL 8.5. +Solution: Adjust configure script. (Alexey Froloff) +Files: src/configure.in, src/auto/configure + +Patch 7.1.180 +Problem: Regexp patterns not tested sufficiently. +Solution: Add more checks to the regexp test. +Files: src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.1.181 +Problem: Accessing uninitialized memory in Farsi mode. (Dominique Pelle) +Solution: Only invoke lrF_sub() when there is something to do. +Files: src/ex_cmds.c + +Patch 7.1.182 +Problem: When using tab pages and an argument list the session file may + contain wrong "next" commands. (Alexander Bluem) +Solution: Use "argu" commands and only when needed. +Files: src/ex_docmd.c + +Patch 7.1.183 +Problem: "Internal error" for ":echo matchstr('a', 'a\%[\&]')" (Mitanu + Paul) +Solution: Inside "\%[]" detect \&, \| and \) as an error. +Files: src/regexp.c + +Patch 7.1.184 +Problem: Crash when deleting backwards over a line break in Insert mode. +Solution: Don't advance the cursor when it's already on the NUL after a + line. (Matthew Wozniski) +Files: src/normal.c + +Patch 7.1.185 +Problem: Using "gR" with a multi-byte encoding and typing a CR pushes + characters onto the replace stack incorrectly, resulting in BS + putting back the wrong characters. (Paul B. Mahol) +Solution: Push multi-byte characters onto the replace stack in reverse byte + order. Add replace_push_mb(). +Files: src/edit.c, src/misc1.c, src/proto/edit.pro + +Patch 7.1.186 +Problem: "expand('<afile>')" returns a bogus value after changing + directory. (Dave Fishburn) +Solution: Copy "autocmd_fname" to allocated memory and expand to full + filename. Shorten the path when expanding <afile>. +Files: src/ex_docmd.c, src/fileio.c + +Patch 7.1.187 +Problem: Win32 GUI: Custom completion using system() no longer works + after patch 7.1.104. (Erik Falor) +Solution: Loop when safe_vgetc() returns K_IGNORE. +Files: src/ex_getln.c + +Patch 7.1.188 +Problem: When 'showmode' is off the message for changing a readonly file is + given in the second column instead of the first. (Payl B. Mahol) +Solution: Put the W10 message in the first column. +Files: src/edit.c + +Patch 7.1.189 (after 7.1.104) +Problem: Patch 7.1.104 was incomplete. +Solution: Also call plain_vgetc() in ask_yesno(). +Files: src/misc1.c + +Patch 7.1.190 +Problem: Cursor after end-of-line: "iA sentence.<Esc>)" +Solution: Move cursor back and make motion inclusive. +Files: src/normal.c + +Patch 7.1.191 +Problem: Win32 GUI: after patch 7.1.168 there is still a problem when + clicking in a scrollbar. (Juergen Jottkaerr) +Solution: Don't check the input buffer when dragging the scrollbar. +Files: src/gui.c + +Patch 7.1.192 +Problem: With Visual block selection, "s" and typing something, CTRL-C + doesn't stop Vim from repeating the replacement in other lines, + like happens for "I". +Solution: Check for "got_int" to be set. +Files: src/ops.c + +Patch 7.1.193 +Problem: Some Vim 5.x digraphs are missing in Vim 7, even though the + character pairs are not used. (Philippe de Muyter) +Solution: Add those Vim 5.x digraphs that don't conflict with others. +Files: src/digraph.c + +Patch 7.1.194 +Problem: ":echo glob('~/{}')" results in /home/user//. +Solution: Don't add a slash if there already is one. +Files: src/os_unix.c + +Patch 7.1.195 +Problem: '0 mark doesn't work for "~/foo ~ foo". +Solution: Don't expand the whole file name, only "~/". +Files: src/mark.c + +Patch 7.1.196 (extra) +Problem: Win32 GUI: "\n" in a tooltip doesn't cause a line break. (Erik + Falor) +Solution: Use the TTM_SETMAXTIPWIDTH message. +Files: src/gui_w32.c + +Patch 7.1.197 +Problem: Mac: "make install" doesn't work when prefix defined. +Solution: Pass different arguments to "make installruntime". (Jjgod Jiang) +Files: src/Makefile + +Patch 7.1.198 +Problem: Hang when using ":s/\n//gn". (Burak Gorkemli) +Solution: Set "skip_match". +Files: src/ex_cmds.c + +Patch 7.1.199 +Problem: Can't do command line completion for a specific file name + extension. +Solution: When the pattern ends in "$" don't add a star for completion and + remove the "$" before matching with file names. +Files: runtime/doc/cmdline.txt, src/ex_getln.c + +Patch 7.1.200 (after 7.1.177 and 7.1.182) +Problem: Compiler warnings for uninitialized variables. +Solution: Init variables. +Files: src/ex_cmds2.c, src/ex_docmd.c + +Patch 7.1.201 +Problem: When reading stdin 'fenc' and 'ff' are not set. +Solution: Set the options after reading stdin. (Ben Schmidt) +Files: src/fileio.c + +Patch 7.1.202 +Problem: Incomplete utf-8 byte sequence is not checked for validity. +Solution: Check the bytes that are present for being valid. (Ben Schmidt) +Files: src/mbyte.c + +Patch 7.1.203 +Problem: When 'virtualedit' is "onemore" then "99|" works but ":normal 99|" + doesn't. (Andy Wokula) +Solution: Check for "onemore" flag in check_cursor_col(). +Files: src/misc2.c + +Patch 7.1.204 (extra) +Problem: Win32: Using the example at 'balloonexpr' the balloon disappears + after four seconds and then comes back again. Also moves the + mouse pointer a little bit. (Yongwei Wu) +Solution: Set the autopop time to 30 seconds (the max value). (Sergey + Khorev) Move the mouse two pixels forward and one back to end up + in the same position (really!). +Files: src/gui_w32.c + +Patch 7.1.205 +Problem: Can't get the operator in an ":omap". +Solution: Add the "v:operator" variable. (Ben Schmidt) +Files: runtime/doc/eval.txt, src/eval.c, src/normal.c, src/vim.h + +Patch 7.1.206 +Problem: Compiler warnings when using MODIFIED_BY. +Solution: Add type casts. (Ben Schmidt) +Files: src/version.c + +Patch 7.1.207 +Problem: Netbeans: "remove" cannot delete one line. +Solution: Remove partial lines and whole lines properly. Avoid a memory + leak. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.1.208 +Problem: On Alpha get an unaligned access error. +Solution: Store the dictitem pointer before using it. (Matthew Luckie) +Files: src/eval.c + +Patch 7.1.209 +Problem: GTK: When using the netrw plugin and doing ":gui" Vim hangs. +Solution: Stop getting a selection after three seconds. This is a hack. +Files: src/gui_gtk_x11.c + +Patch 7.1.210 +Problem: Listing mapping for 0xdb fails when 'encoding' is utf-8. (Tony + Mechelynck) +Solution: Recognize K_SPECIAL KS_EXTRA KE_CSI as a CSI byte. +Files: src/mbyte.c + +Patch 7.1.211 +Problem: The matchparen plugin may take an unexpected amount of time, so + that it looks like Vim hangs. +Solution: Add a timeout to searchpair(), searchpairpos(), search() and + searchpos(). Use half a second timeout in the plugin. +Files: runtime/doc/eval.txt, runtime/plugin/matchparen.vim, src/edit.c, + src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/normal.c, + src/proto/eval.pro, src/proto/ex_cmds2.pro, src/proto/search.pro, + src/search.c + +Patch 7.1.212 +Problem: Accessing a byte before a line. +Solution: Check that the column is 1 or more. (Dominique Pelle) +Files: src/edit.c + +Patch 7.1.213 +Problem: A ":tabedit" command that results in the "swap file exists" dialog + and selecting "abort" doesn't close the new tab. (Al Budden) +Solution: Pass "old_curwin" to do_exedit(). +Files: src/ex_docmd.c + +Patch 7.1.214 +Problem: ":1s/g\n\zs1//" deletes characters from the first line. (A Politz) +Solution: Start replacing in the line where the match starts. +Files: src/ex_cmds.c + +Patch 7.1.215 +Problem: It is difficult to figure out what syntax items are nested at a + certain position. +Solution: Add the synstack() function. +Files: runtime/doc/eval.txt, src/eval.c, src/proto/syntax.pro, + src/syntax.c + +Patch 7.1.216 +Problem: Variants of --remote-tab are not mentioned for "vim --help". +Solution: Display optional -wait and -silent. +Files: src/main.c + +Patch 7.1.217 +Problem: The "help-tags" tag may be missing from runtime/doc/tags when it + was generated during "make install". +Solution: Add the "++t" argument to ":helptags" to force adding the tag. +Files: runtime/doc/Makefile, runtime/doc/various.txt, src/ex_cmds.c, + src/ex_cmds.h + +Patch 7.1.218 +Problem: A syntax region without a "keepend", containing a region with + "extend" could be truncated at the end of the containing region. +Solution: Do not call syn_update_ends() when there are no keepend items. +Files: src/syntax.c + +Patch 7.1.219 (after 7.1.215) +Problem: synstack() returns situation after the current character, can't + see the state for a one-character region. +Solution: Don't update ending states in the requested column. +Files: runtime/doc/eval.txt, src/eval.c, src/hardcopy.c, + src/proto/syntax.pro, src/screen.c, src/spell.c, src/syntax.c + +Patch 7.1.220 +Problem: When a ")" or word movement command moves the cursor back from the + end of the line it may end up on the trail byte of a multi-byte + character. It's also moved back when it isn't needed. +Solution: Add the adjust_cursor() function. +Files: src/normal.c + +Patch 7.1.221 +Problem: When inserting a "(", triggering the matchparen plugin, the + following highlighting may be messed up. +Solution: Before triggering the CursorMovedI autocommands update the display + to update the stored syntax stacks for the change. +Files: src/edit.c + +Patch 7.1.222 (after 7.1.217) +Problem: Wildcards in argument of ":helptags" are not expanded. (Marcel + Svitalsky) +Solution: Expand wildcards in the directory name. +Files: src/ex_cmds.c + +Patch 7.1.223 +Problem: glob() doesn't work properly when 'shell' is "sh" or "bash" and + the expanded name contains spaces, '~', single quotes and other + special characters. (Adri Verhoef, Charles Campbell) +Solution: For Posix shells define a vimglob() function to list the matches + instead of using "echo" directly. +Files: src/os_unix.c + +Patch 7.1.224 +Problem: When using "vim -F -o file1 file2" only one window is + right-to-left. Same for "-H". (Ben Schmidt) +Solution: use set_option_value() to set 'rightleft'. +Files: src/main.c + +Patch 7.1.225 +Problem: Using uninitialized value when XGetWMNormalHints() fails. +Solution: Check the return value. (Dominique Pelle) +Files: src/os_unix.c + +Patch 7.1.226 +Problem: Command line completion doesn't work when a file name contains a + '&' character. +Solution: Accept all characters in a file name, except ones that end a + command or white space. +Files: src/ex_docmd.c + +Patch 7.1.227 +Problem: Hang in syntax HL when moving over a ")". (Dominique Pelle) +Solution: Avoid storing a syntax state in the wrong position in the list of + remembered states. +Files: src/syntax.c + +Patch 7.1.228 +Problem: When 'foldmethod' is "indent" and a fold is created with ">>" it + can't be closed with "zc". (Daniel Shahaf) +Solution: Reset the "small" flag of a fold when adding a line to it. +Files: src/fold.c + +Patch 7.1.229 +Problem: A fold is closed when it shouldn't when 'foldmethod' is "indent" + and backspacing a non-white character so that the indent increases. +Solution: Keep the fold open after backspacing a character. +Files: src/edit.c + +Patch 7.1.230 +Problem: Memory leak when executing SourceCmd autocommands. +Solution: Free the memory. (Dominique Pelle) +Files: src/ex_cmds2.c + +Patch 7.1.231 +Problem: When shifting lines the change is acted upon multiple times. +Solution: Don't have shift_line() call changed_bytes. +Files: src/edit.c, src/ops.c, src/proto/edit.pro, src/proto/ops.pro + +Patch 7.1.232 (after 7.1.207 and 7.1.211) +Problem: Compiler warnings with MSVC. +Solution: Add type casts. (Mike Williams) +Files: src/ex_cmds2.c, src/netbeans.c + +Patch 7.1.233 +Problem: Crash when doing Insert mode completion for a user defined + command. (Yegappan Lakshmanan) +Solution: Don't use the non-existing command line. +Files: src/ex_getln.c + +Patch 7.1.234 +Problem: When diff'ing three files the third one isn't displayed correctly. + (Gary Johnson) +Solution: Compute the size of diff blocks correctly when merging blocks. + Compute filler lines correctly when scrolling. +Files: src/diff.c + +Patch 7.1.235 +Problem: Pattern matching is slow when using a lot of simple patterns. +Solution: Avoid allocating memory by not freeing it when it's not so much. + (Alexei Alexandrov) +Files: src/regexp.c + +Patch 7.1.236 +Problem: When using 'incsearch' and 'hlsearch' a complicated pattern may + make Vim hang until CTRL-C is pressed. +Solution: Add the 'redrawtime' option. +Files: runtime/doc/options.txt, src/ex_cmds.c, src/ex_docmd.c, + src/ex_getln.c, src/gui.c, src/misc1.c, src/normal.c, + src/option.c, src/quickfix.c, src/regexp.c, src/proto/regexp.pro, + src/proto/search.pro, src/search.c, src/screen.c, + src/option.h, src/spell.c, src/structs.h, src/syntax.c, src/tag.c, + src/vim.h + +Patch 7.1.237 +Problem: Compiler warning on an Alpha processor in Motif code. +Solution: Change a typecast. (Adri Verhoef) +Files: src/gui_motif.c + +Patch 7.1.238 +Problem: Using the 'c' flag with searchpair() may cause it to fail. Using + the 'r' flag doesn't work when 'wrapscan' is set. (A.Politz) +Solution: Only use the 'c' flag for the first search, not for repeating. + When using 'r' imply 'W'. (Antony Scriven) +Files: src/eval.c + +Patch 7.1.239 (after 7.1.233) +Problem: Compiler warning for sprintf() argument. +Solution: Add a typecast. (Nico Weber) +Files: src/ex_getln.c + +Patch 7.1.240 +Problem: When "gUe" turns a German sharp s into SS the operation stops + before the end of the word. Latin2 has the same sharp s but it's + not changed to SS there. +Solution: Make sure all the characters are operated upon. Detect the sharp + s in latin2. Also fixes that changing case of a multi-byte + character that changes the byte count doesn't always work. +Files: src/ops.c + +Patch 7.1.241 +Problem: Focus change events not always ignored. (Erik Falor) +Solution: Ignore K_IGNORE in Insert mode in a few more places. +Files: src/edit.c + +Patch 7.1.242 (after 7.1.005) +Problem: "cib" doesn't work properly on "(x)". (Tim Pope) +Solution: Use ltoreq() instead of lt(). Also fix "ciT" on "<a>x</a>". +Files: src/search.c + +Patch 7.1.243 (after 7.1.240) +Problem: "U" doesn't work on all text in Visual mode. (Adri Verhoef) +Solution: Loop over all the lines to be changed. Add tests for this. +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + +Patch 7.1.244 +Problem: GUI may have part of the command line cut off. +Solution: Don't round the number of lines up, always round down. + (Tony Houghton, Scott Dillard) +Files: src/gui.c + +Patch 7.1.245 +Problem: Pressing CTRL-\ three times causes Vim to quit. (Ranganath Rao). + Also for f CTRL-\ CTRL-\. +Solution: When going to cooked mode in mch_delay() set a flag to ignore + SIGQUIT. +Files: src/os_unix.c + +Patch 7.1.246 +Problem: Configure hangs when the man pager is something strange. (lorien) +Solution: Set MANPAGER and PAGER to "cat". (Micah Cowan) +Files: src/auto/configure, src/configure.in + +Patch 7.1.247 +Problem: When using Netbeans backspacing in Insert mode skips a character + now and then. (Ankit Jain) +Solution: Avoid calling netbeans_removed(), it frees the line pointer. + (partly by Dominique Pelle). +Files: src/misc1.c + +Patch 7.1.248 +Problem: Can't set the '" mark. Can't know if setpos() was successful. +Solution: Allow setting the '" mark with setpos(). Have setpos() return a + value indicating success/failure. +Files: runtime/doc/eval.txt, src/eval.c, src/mark.c + +Patch 7.1.249 +Problem: After "U" the cursor can be past end of line. (Adri Verhoef) +Solution: Adjust the cursor position in u_undoline(). +Files: src/undo.c + +Patch 7.1.250 +Problem: ":setglobal fenc=anything" gives an error message in a buffer + where 'modifiable' is off. (Ben Schmidt) +Solution: Don't give an error if 'modifiable' doesn't matter. +Files: src/option.c + +Patch 7.1.251 +Problem: Using freed memory when spell checking enabled. +Solution: Obtain the current line again after calling spell_move_to(). + (Dominique Pelle) +Files: src/screen.c + +Patch 7.1.252 (after 7.1.243) +Problem: Test 39 fails when the environment has a utf-8 locale. (Dominique + Pelle) +Solution: Force 'encoding' to be latin1. +Files: src/testdir/test39.in + +Patch 7.1.253 +Problem: ":sort" doesn't work in a one line file. (Patrick Texier) +Solution: Don't sort if there is only one line. (Dominique Pelle) +Files: src/ex_cmds.c + +Patch 7.1.254 +Problem: Tests 49 and 55 fail when the locale is French. +Solution: Using C messages for test 49. Filter the error message in test 55 + such that it works when the number is halfway the message. +Files: src/testdir/test49.in, src/testdir/test55.in + +Patch 7.1.255 +Problem: Vim doesn't support utf-32. (Yongwei Wu) +Solution: Add aliases for utf-32, it's the same as ucs-4. +Files: src/mbyte.c + +Patch 7.1.256 +Problem: findfile() also returns directories. +Solution: Cleanup the code for finding files and directories in a list of + directories. Remove the ugly global ff_search_ctx. +Files: src/eval.c, src/misc2.c, src/vim.h, src/tag.c + +Patch 7.1.257 +Problem: Configure can't always find the Tcl header files. +Solution: Also look in /usr/local/include/tcl$tclver and + /usr/include/tcl$tclver (James Vega) +Files: src/auto/configure, src/configure.in + +Patch 7.1.258 +Problem: Crash when doing "d/\n/e" and 'virtualedit' is "all". (Andy Wokula) +Solution: Avoid that the column becomes negative. Also fixes other problems + with the end of a pattern match is in column zero. (A.Politz) +Files: src/search.c + +Patch 7.1.259 +Problem: Cursor is in the wrong position when 'rightleft' is set, + 'encoding' is "utf-8" and on an illegal byte. (Dominique Pelle) +Solution: Only put the cursor in the first column when actually on a + double-wide character. (Yukihiro Nakadaira) +Files: src/screen.c + +Patch 7.1.260 +Problem: Cursor positioning problem after ^@ wrapping halfway when + 'encoding' is utf-8. +Solution: Only count a position for printable characters. (partly by + Yukihiro Nakadaira) +Files: src/charset.c + +Patch 7.1.261 +Problem: When a 2 byte BOM is detected Vim uses UCS-2, which doesn't work + for UTF-16 text. (Tony Mechelynck) +Solution: Default to UTF-16. +Files: src/fileio.c, src/testdir/test42.ok + +Patch 7.1.262 +Problem: Can't get the process ID of Vim. +Solution: Implement getpid(). +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.1.263 +Problem: The filetype can consist of two dot separated names. This works + for syntax and ftplugin, but not for indent. (Brett Stahlman) +Solution: Use split() and loop over each dot separated name. +Files: runtime/indent.vim + +Patch 7.1.264 +Problem: Crash when indenting lines. (Dominique Pelle) +Solution: Set the cursor column when changing the cursor line. +Files: src/ops.c, src/misc1.c + +Patch 7.1.265 +Problem: When 'isfname' contains a space, cmdline completion can hang. + (James Vega) +Solution: Reset the "len" variable. +Files: src/ex_docmd.c + +Patch 7.1.266 +Problem: When the version string returned by the terminal contains + unexpected characters, it is used as typed input. (James Vega) +Solution: Assume the escape sequence ends in a letter. +Files: src/term.c + +Patch 7.1.267 +Problem: When changing folds cursor may be positioned in the wrong place. +Solution: Call changed_window_setting_win() instead of + changed_window_setting(). +Files: src/fold.c + +Patch 7.1.268 +Problem: Always shows "+" at end of screen line with: ":set + listchars=eol:$,extends:+ nowrap list cursorline" (Gary Johnson) +Solution: Check for lcs_eol_one instead of lcs_eol. +Files: src/screen.c + +Patch 7.1.269 +Problem: The matchparen plugin has an arbitrary limit for the number of + lines to look for a match. +Solution: Rely on the searchpair() timeout. +Files: runtime/plugin/matchparen.vim + +Patch 7.1.270 +Problem: ":?foo?" matches in current line since patch 7.1.025. (A.Politz) +Solution: Remove the SEARCH_START flag. +Files: src/ex_docmd.c, src/search.c + +Patch 7.1.271 +Problem: In a Vim build without autocommands, checking a file that was + changed externally causes the current buffer to be changed + unexpectedly. (Karsten Hopp) +Solution: Store "curbuf" instead of "buf". +Files: src/fileio.c + +Patch 7.1.272 +Problem: The special buffer name [Location List] is not used for a buffer + displayed in another tab page. +Solution: Use FOR_ALL_TAB_WINDOWS instead of FOR_ALL_WINDOWS. (Hiroaki + Nishihara) +Files: src/buffer.c + +Patch 7.1.273 +Problem: When profiling on Linux Vim exits early. (Liu Yubao) +Solution: When profiling don't exit on SIGPROF. +Files: src/Makefile, src/os_unix.c + +Patch 7.1.274 (after 7.1.272) +Problem: Compiler warning for optimized build. +Solution: Init win to NULL. +Files: src/buffer.c + +Patch 7.1.275 (extra) +Problem: Mac: ATSUI and 'antialias' don't work properly together. +Solution: Fix this and the input method. (Jjgod Jiang) +Files: src/vim.h, src/gui_mac.c + +Patch 7.1.276 +Problem: "gw" uses 'formatexpr', even though the docs say it doesn't. +Solution: Don't use 'formatexpr' for "gw". +Files: src/vim.h, src/edit.c, src/ops.c, src/proto/ops.pro + +Patch 7.1.277 +Problem: Default for 'paragraphs' misses some items (Colin Watson) +Solution: Add TP, HP, Pp, Lp and It to 'paragraphs'. (James Vega) +Files: runtime/doc/options.txt, src/option.c + +Patch 7.1.278 (extra, after 7.1.275) +Problem: Build failure when USE_CARBONKEYHANDLER is not defined. +Solution: Remove #ifdef. +Files: src/gui_mac.c + +Patch 7.1.279 +Problem: When using cscope temporary files are left behind. +Solution: Send the quit command to cscope and give it two seconds to exit + nicely before killing it. (partly by Dominique Pelle) +Files: src/if_cscope.c + +Patch 7.1.280 (after 7.1.275) +Problem: Mac: build problems when not using multibyte feature. (Nicholas + Stallard) +Solution: Don't define USE_IM_CONTROL when not using multibyte. +Files: src/vim.h + +Patch 7.1.281 (after 7.1.279) +Problem: sa.sa_mask is not initialized. Cscope may not exit. +Solution: Use sigemptyset(). Use SIGKILL instead of SIGTERM. (Dominique + Pelle) +Files: src/if_cscope.c + +Patch 7.1.282 (extra) +Problem: Win64: Edit with Vim context menu isn't installed correctly. + Compiler warnings and a few other things. +Solution: Add [ and ] to entry of class name. Use UINT_PTR instead of UINT. + And a fixes for the other things. (George V. Reilly) +Files: src/GvimExt/Makefile, src/dosinst.c, src/if_ole.cpp, src/if_ole.h, + src/if_ole.idl, src/INSTALLpc.txt, src/Make_mvc.mak, + src/os_win32.c, + +Patch 7.1.283 +Problem: Non-extra part for 7.1.282. +Solution: Various changes. +Files: src/ex_docmd.c, src/globals.h, src/if_cscope.c, src/main.c, + src/mark.c, src/netbeans.c, src/popupmnu.c, src/vim.h, + src/window.c + +Patch 7.1.284 +Problem: Compiler warnings for functions without prototype. +Solution: Add the function prototypes. (Patrick Texier) +Files: src/eval.c, src/quickfix.c + +Patch 7.1.285 (extra) +Problem: Mac: dialog hotkeys don't work. +Solution: Add hotkey support. (Dan Sandler) +Files: src/gui_mac.c + +Patch 7.1.286 (after 7.1.103) +Problem: "w" at the end of the buffer moves the cursor past the end of the + line. (Markus Heidelberg) +Solution: Move the cursor back from the NUL when it was moved forward. +Files: src/normal.c + +Patch 7.1.287 +Problem: Crash when reversing a list after using it. (Andy Wokula) +Solution: Update the pointer to the last used element. (Dominique Pelle) +Files: src/eval.c + +Patch 7.1.288 (after 7.1.281) +Problem: Cscope still leaves behind temp files when using gvim. +Solution: When getting the ECHILD error loop for a while until cscope exits. + (Dominique Pelle) +Files: if_cscope.c + +Patch 7.1.289 +Problem: When EXITFREE is defined and 'acd' is set freed memory is used. + (Dominique Pelle) +Solution: Reset p_acd before freeing all buffers. +Files: src/misc2.c + +Patch 7.1.290 +Problem: Reading bytes that were not written when spell checking and a line + has a very large indent. +Solution: Don't copy the start of the next line when it only contains + spaces. (Dominique Pelle) +Files: src/spell.c + +Patch 7.1.291 (after 7.1.288) +Problem: Compiler warning. +Solution: Change 50 to 50L. +Files: src/if_cscope.c + +Patch 7.1.292 +Problem: When using a pattern with "\@<=" the submatches can be wrong. + (Brett Stahlman) +Solution: Save the submatches when attempting a look-behind match. +Files: src/regexp.c + +Patch 7.1.293 +Problem: Spell checking considers super- and subscript characters as word + characters. +Solution: Recognize the Unicode super and subscript characters. +Files: src/spell.c + +Patch 7.1.294 +Problem: Leaking memory when executing a shell command. +Solution: Free memory when not able to save for undo. (Dominique Pelle) +Files: src/ex_cmds.c + +Patch 7.1.295 +Problem: Vimtutor only works with vim, not gvim. +Solution: Add the -g flag to vimtutor. (Dominique Pelle) Add gvimtutor. +Files: src/Makefile, src/gvimtutor, src/vimtutor, runtime/doc/vimtutor.1 + +Patch 7.1.296 +Problem: SELinux is not supported. +Solution: Detect the selinux library and use mch_copy_sec(). (James Vega) +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/fileio.c, src/memfile.c, src/os_unix.c, src/proto/os_unix.pro + +Patch 7.1.297 +Problem: When using the search/replace dialog the parenmatch highlighting + can be wrong. (Tim Duncan) +Solution: In the GUI redraw function invoke the CursorMoved autocmd. +Files: src/gui.c + +Patch 7.1.298 (after 7.1.295) +Problem: src/gvimtutor is not distributed. +Solution: Add it to the list of distributed files. +Files: Filelist + +Patch 7.1.299 +Problem: Filetype detection doesn't work properly for file names ending in + a part that is ignored and contain a space or other special + characters. +Solution: Escape the special characters using the new fnameescape function. +Files: runtime/doc/eval.txt, runtime/filetype.vim, src/eval.c, + src/ex_getln.c, src/proto/ex_getln.pro, src/vim.h + +Patch 7.1.300 +Problem: Value of asmsyntax argument isn't checked for valid characters. +Solution: Only accepts letters and digits. +Files: runtime/filetype.vim + +Patch 7.1.301 +Problem: When the "File/Save" menu is used in Insert mode, a tab page label + is not updated to remove the "+". +Solution: Call draw_tabline() from showruler(). (Bjorn Winckler) +Files: src/screen.c + +Patch 7.1.302 (after 7.1.299) +Problem: Compilation error on MS-Windows. +Solution: Don't use xp_shell when it's not defined. +Files: src/ex_getln.c + +Patch 7.1.303 (after 7.1.302) +Problem: Compilation error on MS-Windows, again. +Solution: Declare p. +Files: src/ex_getln.c + +Patch 7.1.304 +Problem: Shortpath_for_invalid_fname() does not work correctly and is + unnecessary complex. +Solution: Clean up shortpath_for_invalid_fname(). (mostly by Yegappan + Lakshmanan) +Files: src/eval.c + +Patch 7.1.305 +Problem: Editing a compressed file with special characters in the name + doesn't work properly. +Solution: Escape special characters. +Files: runtime/autoload/gzip.vim + +Patch 7.1.306 +Problem: Some Unicode characters are handled like word characters while + they are symbols. +Solution: Adjust the table for Unicode classification. +Files: src/mbyte.c + +Patch 7.1.307 +Problem: Many warnings when compiling with Python 2.5. +Solution: Use ssize_t instead of int for some types. (James Vega) +Files: src/if_python.c + +Patch 7.1.308 +Problem: When in readonly mode ":options" produces an error. +Solution: Reset 'readonly'. (Gary Johnson) +Files: runtime/optwin.vim + +Patch 7.1.309 +Problem: Installing and testing with a shadow directory doesn't work. + (James Vega) +Solution: Add "po" to the list of directories to link. Also link the Vim + scripts in testdir. And a few more small fixes. +Files: src/Makefile + +Patch 7.1.310 +Problem: Incomplete utf-8 byte sequence at end of the file is not detected. + Accessing memory that wasn't written. +Solution: Check the last bytes in the buffer for being a valid utf-8 + character. (mostly by Ben Schmidt) + Also fix that the reported line number of the error was wrong. +Files: src/fileio.c + +Patch 7.1.311 +Problem: Compiler warning for missing sentinel in X code. +Solution: Change 0 to NULL. (Markus Heidelberg) +Files: src/mbyte.c + +Patch 7.1.312 +Problem: The .po files have mistakes in error numbers. +Solution: Search for these mistakes in the check script. (Dominique Pelle) +Files: src/po/check.vim + +Patch 7.1.313 +Problem: When the netbeans interface setModified call is used the status + lines and window title are not updated. +Solution: Redraw the status lines and title. (Philippe Fremy) +Files: src/netbeans.c + +Patch 7.1.314 +Problem: The value of 'pastetoggle' is written to the session file without + any escaping. (Randall Hansen) +Solution: Use put_escstr(). (Ben Schmidt) +Files: src/option.c + +Patch 7.1.315 +Problem: Crash with specific search pattern using look-behind match. + (Andreas Politz) +Solution: Also save the value of "need_clear_subexpr". +Files: src/regexp.c + +Patch 7.1.316 +Problem: When 'cscopetag' is set ":tag" gives an error message instead of + going to the next tag in the tag stack. +Solution: Don't call do_cstag() when there is no argument. (Mark Goldman) +Files: src/ex_docmd.c + +Patch 7.1.317 +Problem: Compiler warnings in Motif calls. +Solution: Change zero to NULL. (Dominique Pelle) +Files: src/gui_motif.c + +Patch 7.1.318 +Problem: Memory leak when closing xsmp connection. Crash on exit when + using Lesstif. +Solution: Don't close the X display to work around a Lesstif bug. Free + clientid. Also fix a leak for Motif and Athena. (Dominique Pelle) +Files: src/gui_x11.c, src/os_unix.c + +Patch 7.1.319 +Problem: When a register has an illegal utf-8 sequence, pasting it on the + command line causes an illegal memory access. +Solution: Use mb_cptr2char_adv(). (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.1.320 (extra) +Problem: Win64: Warnings while compiling Python interface. +Solution: Use PyInt in more places. Also update version message for the + console. (George Reilly) +Files: src/if_python.c, src/version.c + +Patch 7.1.321 (extra) +Problem: Win32 / Win64: Install file is outdated. +Solution: Update the text for recent compiler. (George Reilly) +Files: src/INSTALLpc.txt + +Patch 7.1.322 +Problem: Can't get start of Visual area in an <expr> mapping. +Solution: Add the 'v' argument to getpos(). +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.1.323 +Problem: Test 19 fails with some termcaps. (Dominique Pelle) +Solution: Set the t_kb and t_kD termcap values. +Files: src/testdir/test19.in, src/testdir/test38.in + +Patch 7.1.324 +Problem: File name path length on Unix is limited to 1024. +Solution: Use PATH_MAX when it's more than 1000. +Files: src/os_unix.h + +Patch 7.1.325 +Problem: When editing a command line that's longer than available space in + the window, the characters at the end are in reverse order. +Solution: Increment the insert position even when the command line doesn't + fit. (Ingo Karkat) +Files: src/ex_getln.c + +Patch 7.1.326 +Problem: ":s!from!to!" works, but ":smagic!from!to!" doesn't. It sees the + "!" as a flag to the command. Same for ":snomagic". (Johan Spetz) +Solution: When checking for a forced command also ignore ":smagic" and + ":snomagic". (Ian Kelling) +Files: src/ex_docmd.c + +Patch 7.1.327 +Problem: The GUI tutor is installed when there is no GUI version. +Solution: Only install gvimtutor when building a GUI version. +Files: src/Makefile + +Patch 7.1.328 +Problem: Crash when using Cygwin and non-posix path name in tags file. +Solution: Use separate buffer for posix path. (Ben Schmidt) +Files: src/os_unix.c + +Patch 7.1.329 +Problem: When the popup menu is removed a column of cells, the right halve + of double-wide characters, may not be redrawn. +Solution: Check if the right halve of a character needs to be redrawn. + (Yukihiro Nakadaira) +Files: src/screen.c + +Patch 7.1.330 +Problem: Reading uninitialized memory when using Del in replace mode. +Solution: Use utfc_ptr2len_len() instead of mb_ptr2len(). (Dominique Pelle) +Files: src/misc1.c + + +Warning for missing sentinel in gui_xmldlg.c. (Dominique Pelle) + +A search offset from the end of a match didn't work properly for multi-byte +characters. (Yukihiro Nakadaira) + +When displaying the value of 'key' don't show "*****" when the value is empty. +(Ben Schmidt) + +Internal error when compiled with EXITFREE and using the nerd_tree plugin. +Set last_msg_hist to NULL when history becomes empty. Call +free_all_functions() after garbage collection. (Dominique Pelle) + +GTK with XIM: <S-Space> does not work. (Yukihiro Nakadaira) + +Some shells do not support "echo -n", which breaks glob(). Use "echo" instead +of "echo -n $1; echo". (Gary Johnson) + +"echo 22,44" printed "22" on top of the command, the error messages caused +the rest not to be cleared. Added the need_clr_eos flag. + +Netbeans events are handled while updating the screen, causing a crash. +Change the moment when events are handled. Rename nb_parse_messages() to +netbeans_parse_messages(). (Xavier de Gaye) + +Test 11 was broken after patch 7.1.186 on Win32 console. (Daniel Shahaf) +Use shellescape() on the file name. + +IM was turned off in im_preedit_end_cb() for no good reason. (Takuhiro +Nishioka) + +A corrupted spell file could cause Vim to use lots of memory. Better +detection for running into the end of the file. (idea from James Vega) + +Mac: Included a patch to make it build with GTK. Moved language init to +mac_lang_init() function. (Ben Schmidt) + +Problem with 'wildmenu' after ":lcd", up/down arrows don't work. (Erik Falor) + +Fix configure.in to avoid "implicitly declared" warnings when running +configure. + +Fixed a memory leak when redefining a keymap. (Dominique Pelle) + +Setting 'pastetoggle' to "jj" didn't work. + +'ic' and 'smartcase' don't work properly when using \%V in a search pattern. +(Kana Natsuno) + +Patch 7.2a.001 +Problem: On some systems X11/Xlib.h exists (from X11-dev package) but + X11/Intrinsic.h does not (in Xt-dev package). This breaks the + build. Also, on Solaris 9 sys/ptem.h isn't found. +Solution: Have configure only accept X11 when X11/Intrinsic.h exists. + Check for sys/ptem.h while including sys/stream.h. (Vladimir + Marek) +Files: src/auto/configure, src/configure.in + +Patch 7.2a.002 +Problem: getbufvar(N, "") gets the dictionary of the current buffer instead + of buffer N. +Solution: Set curbuf before calling find_var_in_ht(). (Kana Natsuno) +Files: src/eval.c + +Patch 7.2a.003 +Problem: Leaking memory when using ":file name" and using access control + lists. +Solution: Invoke mch_free_acl() in vim_rename(). (Dominique Pelle) +Files: src/fileio.c + +Patch 7.2a.004 +Problem: Some systems can't get spell files by ftp. +Solution: Use http when it looks like it's possible. (James Vega) +Files: runtime/autoload/spellfile.vim + +Patch 7.2a.005 +Problem: A few error messages use confusing names. Misspelling. +Solution: Change "dissallows" to "disallows". (Dominique Pelle) Change + "number" to "Number". +Files: src/eval.c, src/fileio.c + +Patch 7.2a.006 +Problem: Reading past NUL in a string. +Solution: Check for invalid utf-8 byte sequence. (Dominique Pelle) +Files: src/charset.c + +Patch 7.2a.007 +Problem: ":let v = 1.2.3" was OK in Vim 7.1, now it gives an error. +Solution: Don't look for a floating point number after the "." operator. +Files: src/eval.c + +Patch 7.2a.008 +Problem: printf("%g", 1) doesn't work. +Solution: Convert Number to Float when needed. +Files: src/message.c + +Patch 7.2a.009 +Problem: cygwin_conv_to_posix_path() does not specify buffer size. +Solution: Use new Cygwin function: cygwin_conv_path(). (Corinna Vinschen) +Files: src/main.c, src/os_unix.c + +Patch 7.2a.010 +Problem: When a file name has an illegal byte sequence Vim may read + uninitialised memory. +Solution: Don't use UTF_COMPOSINGLIKE() on an illegal byte. In + msg_outtrans_len_attr() use char2cells() instead of ptr2cells(). + In utf_ptr2char() don't check second byte when first byte is + illegal. (Dominique Pelle) +Files: src/mbyte.c, src/message.c + +Patch 7.2a.011 +Problem: The Edit/Startup Settings menu doesn't work. +Solution: Expand environment variables. (Ben Schmidt) +Files: runtime/menu.vim + +Patch 7.2a.012 +Problem: Compiler warnings for casting int to pointer. +Solution: Add cast to long in between. (Martin Toft) +Files: src/gui_gtk_x11.c + +Patch 7.2a.013 +Problem: shellescape() does not escape "%" and "#" characters. +Solution: Add find_cmdline_var() and use it when the second argument to + shellescape() is non-zero. +Files: runtime/doc/eval.txt, src/eval.c, src/ex_docmd.c, + src/proto/ex_docmd.pro, src/proto/misc2.pro, src/misc2.c + +Patch 7.2a.014 +Problem: Problem with % in message. +Solution: Put % in single quotes. +Files: src/eval.c + +Patch 7.2a.015 (after 7.2a.010) +Problem: Misaligned messages. +Solution: Compute length of unprintable chars correctly. +Files: src/message.c + +Patch 7.2a.016 +Problem: Using CTRL-W v in the quickfix window results in two quickfix + windows, which is not allowed. ":tab split" should be allowed to + open a new quickfix window in another tab. +Solution: For CTRL-W v instead of splitting the window open a new one. + When using ":tab" do allow splitting the quickfix window (was + already included in patch 7.2a.013). +Files: src/window.c + +Patch 7.2a.017 +Problem: ":doautoall" executes autocommands for all buffers instead of just + for loaded buffers. +Solution: Change "curbuf" to "buf". +Files: src/fileio.c + +Patch 7.2a.018 +Problem: Compiler warnings when compiling with Gnome. (Tony Mechelynck) +Solution: Add type casts. +Files: src/gui_gtk_x11.c + +Patch 7.2a.019 +Problem: ":let &g:tw = 44" sets the local option value. (Cyril Slobin) +Solution: Use get_varp_scope() instead of get_varp(). (Ian Kelling) +Files: src/option.c + +There is no way to avoid adding /usr/local/{include|lib} to the build +commands. Add the --with-local-dir argument to configure. (Michael +Haubenwallner) + +When using CTRL-D after ":help", the number of matches could be thousands. +Restrict to TAG_MANY to avoid this taking too long. (Ian Kelling) + +The popup menu could be placed at a weird location. Caused by w_wcol computed +by curs_columns(). (Dominique Pelle) + +Overlapping STRCPY() arguments when using %r item in 'errorformat'. Use +STRMOVE() instead. (Ralf Wildenhues) + +Mac: On Leopard gvim, when using the mouse wheel nothing would happen until +another event occurs, such as moving the mouse. Then the recorded scrolling +would take place all at once. (Eckehard Berns) + +Solution for cursor color not reflecting IM status for GTK 2. Add +preedit_is_active flag. (SungHyun Nam) + +filereadable() can hang on a FIFO on Linux. Use open() instead of fopen(), +with O_NONBLOCK. (suggested by Lars Kotthoff) + +Included patch to support Perl 5.10. (Yasuhiro Matsumoto) + +When files are dropped on gvim while the screen is being updated, ignore the +drop command to avoid freeing memory that is being used. + +In a terminal, when drawing the popup menu over double-wide characters, half +characters may not be cleared properly. (Yukihiro Nakadaira) + +The #ifdef for including "vimio.h" was inconsistent. In a few files it +depended on MSWIN, which isn't defined until later. + +Patch 7.2b.001 +Problem: Compilation problem: mb_fix_col() missing with multi-byte feature + but without GUI or clipboard. +Solution: Remove #ifdef. +Files: src/mbyte.c + +Patch 7.2b.002 +Problem: Compiler warnings for signed/unsigned mismatch. +Solution: Add type casts. +Files: src/screen.c + +Patch 7.2b.003 +Problem: Still a compilation problem, check_col() and check_row() missing. +Solution: Add FEAT_MBYTE to the #if. +Files: src/ui.c + +Patch 7.2b.004 +Problem: Trying to free memory for a static string when using ":helpgrep". + (George Reilly) +Solution: Set 'cpo' to empty_option instead of an empty string. Also for + searchpair() and substitute(). +Files: src/quickfix.c, src/eval.c + +Patch 7.2b.005 +Problem: The special character "!" isn't handled properly in shellescape(). + (Jan Minar) +Solution: Escape "!" when using a "csh" like shell and with + shellescape(s, 1). Twice for both. Also escape <NL>. +Files: src/misc2.c + +Patch 7.2b.006 +Problem: Reading past end of string when reading info from tags line. +Solution: Break the loop when encountering a NUL. (Dominique Pelle) +Files: src/tag.c + +Patch 7.2b.007 +Problem: Part of a message cannot be translated. +Solution: Put _() around the message. +Files: src/search.c + +Patch 7.2b.008 +Problem: A few filetypes are not detected or not detected properly. +Solution: Add filetype detection patterns. (Nikolai Weibull) +Files: runtime/filetype.vim + +Patch 7.2b.009 +Problem: Reading past end of screen line. (Epicurus) +Solution: Avoid going past the value of Columns. +Files: src/screen.c + +Patch 7.2b.010 +Problem: ":mksession" doesn't work for ":map , foo", ":sunmap ,". (Ethan + Mallove) +Solution: Check for "nxo", "nso" and other strange mapping combinations. +Files: src/getchar.c + +Patch 7.2b.011 +Problem: Configure for TCL ends up with include file in compiler command. + (Richard Hogg) +Solution: Delete items from $TCL_DEFS that do not start with a dash. +Files: src/auto/configure, src/configure.in + +Patch 7.2b.012 +Problem: Build failure with +multi_byte but without +diff. +Solution: Add #ifdef. (Patrick Texier) +Files: src/main.c + +Patch 7.2b.013 +Problem: Build fails with tiny features and Perl. (Dominique Pelle) +Solution: Define missing functions. Also when compiling Python. +Files: src/if_perl.xs, src/if_python.c + +Patch 7.2b.014 +Problem: Configure uses an unsafe temp file to store commands. +Solution: Create the temp file in local directory. +Files: src/auto/configure, src/configure.in + +Patch 7.2b.015 +Problem: Build fails on Mac when using Aap. +Solution: Fix typo in configure script. +Files: src/auto/configure, src/configure.in + +Patch 7.2b.016 +Problem: Build fails with normal features but without +autocmd. +Solution: Fix #ifdefs. (Ian Kelling) +Files: src/eval.c, src/ex_cmds.c, src/quickfix.c, src/option.c, + src/ex_docmd.c + +Patch 7.2b.017 +Problem: "vim -O foo foo" results in only one window. (Zdenek Sekera) +Solution: Handle result of ATTENTION prompt properly. (Ian Kelling) +Files: src/main.c + +Patch 7.2b.018 +Problem: When doing command line completion on a file name for a csh-like + shell argument a '!' character isn't escaped properly. +Solution: Add another backslash. +Files: src/ex_getln.c, src/misc2.c, src/proto/misc2.pro, src/screen.c + +Patch 7.2b.019 (extra) +Problem: Win32: Various compiler warnings. +Solution: Use __w64 attribute. Comment-out unused parameters. Adjust a few + #ifdefs. (George Reilly) +Files: src/gui_w48.c, src/GvimExt/gvimext.cpp, src/Make_mvc.mak, + src/os_mswin.c, src/os_win32.c, src/vim.h + +Patch 7.2b.020 +Problem: ":sort n" doesn't handle negative numbers. (James Vega) +Solution: Include '-' in the number. +Files: src/charset.c, src/ex_cmds.c + +Patch 7.2b.021 +Problem: Reloading doesn't read the BOM correctly. (Steve Gardner) +Solution: Accept utf-8 BOM when specified file encoding is utf-8. +Files: src/fileio.c + +Patch 7.2b.022 +Problem: When using ":normal" while updating the status line the count of + an operator is lost. (Dominique Pelle) +Solution: Save and restore "opcount". +Files: src/ex_docmd.c, src/globals.h, src/normal.c + +Patch 7.2b.023 +Problem: Crash when using the result of synstack(0,0). (Matt Wozniski) +Solution: Check for v_list to be NULL in a few more places. +Files: src/eval.c + +Patch 7.2b.024 +Problem: Using ":gui" while the netrw plugin is active causes a delay in + updating the display. +Solution: Don't check for terminal codes when starting the GUI. +Files: src/term.c + +Patch 7.2b.025 +Problem: When the CursorHold event triggers a pending count is lost. + (Juergen Kraemer) +Solution: Save the counts and restore them. +Files: src/normal.c, src/structs.h + +Patch 7.2b.026 +Problem: The GTK 2 file chooser causes the ~/.recently-used.xbel file to be + written over and over again. This may cause a significant + slowdown. (Guido Berhoerster) +Solution: Don't use the GTK 2 file chooser. +Files: src/gui_gtk.c + +Patch 7.2b.027 +Problem: Memory leak for Python, Perl, etc. script command with end marker. +Solution: Free the memory of the end marker. (Andy Kittner) +Files: src/ex_getln.c + +Patch 7.2b.028 +Problem: Reading uninitialized memory when doing ":gui -f". (Dominique + Pelle) +Solution: Don't position the cursor when the screen size is invalid. +Files: src/gui.c + +Patch 7.2b.029 +Problem: ":help a" doesn't jump to "a" tag in docs. (Tony Mechelynck) +Solution: Get all tags and throw away more than TAG_MANY after sorting. + When there is no argument find matches for "help" to avoid a long + delay. +Files: src/ex_cmds.c, src/ex_getln.c + +Patch 7.2b.030 +Problem: When changing the value of t_Co from 8 to 16 the Visual + highlighting keeps both reverse and a background color. +Solution: Remove the attribute when setting the default highlight color. + (Markus Heidelberg) +Files: src/syntax.c + +Error when cancelling completion menu and auto-formatting. (fixed by Ian +Kelling) + +Patch 7.2c.001 +Problem: ":let x=[''] | let x += x" causes hang. (Matt Wozniski) +Solution: Only insert elements up to the original length of the List. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.2c.002 +Problem: fnameescape() doesn't handle a leading '+' or '>'. (Jan Minar) +Solution: Escape a leading '+' and '>'. And a single '-'. +Files: runtime/doc/eval.txt, src/ex_getln.c + +Patch 7.2c.003 +Problem: Searching for "foo\%[bar]\+" gives a "Corrupted regexp program" + error. (Joachim Hofmann) +Solution: Mark the \%[] item as not being simple. +Files: src/regexp.c + +On Vista access to system directories is virtualized. (Michael Mutschler) +Adjusted the manifest file to avoid this. (George Reilly) + +Memory leak when using CTRL-C to cancel listing the jump list. (Dominique +Pelle) + +Mac: Could not build with Perl interface. + +============================================================================== +VERSION 7.3 *version-7.3* *version7.3* + +This section is about improvements made between version 7.2 and 7.3. + +This release has hundreds of bug fixes and there are a few new features. The +most notable new features are: + + +Persistent undo *new-persistent-undo* +--------------- + +Store undo information in a file. Can undo to before when the file was read, +also for unloaded buffers. See |undo-persistence| (partly by Jordan Lewis) + +Added the ":earlier 1f" and ":later 1f" commands. +Added file save counter to undo information. +Added the |undotree()| and |undofile()| functions. + +Also added the 'undoreload' option. This makes it possible to save the +current text when reloading the buffer, so that the reload can be undone. + + +More encryption *new-more-encryption* +--------------- + +Support for Blowfish encryption. Added the 'cryptmethod' option. +Mostly by Moshin Ahmed. + +Also encrypt the text in the swap file and the undo file. + + +Conceal text *new-conceal* +------------ + +Added the |+conceal| feature. (Vince Negri) +This allows hiding stretches of text, based on syntax highlighting. +It also allows replacing a stretch of text by a character |:syn-cchar|. +The 'conceallevel' option specifies what happens with text matching a syntax +item that has the conceal attribute. +The 'concealcursor' option specifies what happens in the cursor line. + +The help files conceal characters used to mark tags and examples. + +Added the |synconcealed()| function and use it for :TOhtml. (Benjamin Fritz) + +Added the 'cursorbind' option, keeps the cursor in two windows with the same +text in sync. + + +Lua interface *new-lua* +------------- + +Added the |Lua| interface. (Luis Carvalho) + + +Python3 interface *new-python3* +----------------- + +Added the Python3 interface. It exists next to Python 2.x, both can be used +at the same time. See |python3| (Roland Puntaier) + + +Changed *changed-7.3* +------- + +The MS-Windows installer no longer requires the user to type anything in the +console windows. The installer now also works on 64 bit systems, including +the "Edit with Vim" context menu. +The gvim executable is 32 bits, the installed gvimext.dll is either a 32 or 64 +bit version. (mostly by George Reilly) +Made the DOS installer work with more compilers. +The MS-Windows big gvim is now built with Python 2.7 and 3.1.2, Perl 5.12 and +Ruby 1.9.1. You need the matching .dll files to use them. + +The extra and language files are no longer distributed separately. +The source files for all systems are included in one distribution. + +After using ":recover" or recovering a file in another way, ":x" and "ZZ" +didn't save what you see. This could result in work being lost. Now the text +after recovery is compared to the original file contents. When they differ +the buffer is marked as modified. + +When Vim is exiting because of a deadly signal, when v:dying is 2 or more, +VimLeavePre, VimLeave, BufWinLeave and BufUnload autocommands are not +executed. + +Removed support for GTK 1. It was no longer maintained and required a lot of +#ifdefs in the source code. GTK 2 should be available for every system. +(James Vega) + +It is no longer allowed to set the 'encoding' option from a modeline. It +would corrupt the text. (Patrick Texier) + +Renamed runtime/spell/fixdup to runtime/spell/fixdup.vim. + +Removed obsolete Mac code. + +Updated spell files for Ubuntu locale names. + +Switched from autoconf 2.63 to 2.65. + +Removed Mupad indent and ftplugin files, they are not useful. + +The maximum number of messages remembered in the history is now 200 (was 100). + + +Added *added-7.3* +----- + +Added the 'relativenumber' option. (Markus Heidelberg) + +Added the 'colorcolumn' option: highlight one or more columns in a window. +E.g. to highlight the column after 'textwidth'. (partly by Gregor Uhlenheuer) + +Added support for NetBeans in a terminal. Added |:nbstart| and |:nbclose|. +(Xavier de Gaye) + +More floating point functions: |acos()|, |asin()|, |atan2()|, |cosh()|, +|exp()|, |fmod()|, |log()|, |sinh()|, |tan()|, |tanh()|. (Bill McCarthy) + +Added the |gettabvar()| and |settabvar()| functions. (Yegappan Lakshmanan) + +Added the |strchars()|, |strwidth()| and |strdisplaywidth()| functions. + +Support GDK_SUPER_MASK for GTK on Mac. (Stephan Schulz) + +Made CTRL and ALT modifier work for mouse wheel. (Benjamin Haskell) + +Added support for horizontal scroll wheel. (Bjorn Winckler) + +When the buffer is in diff mode, have :TOhtml create HTML to show the diff +side-by-side. (Christian Brabandt) + +Various improvements to ":TOhtml" and the 2html.vim script. (Benjamin Fritz) + +Add the 'L' item to 'cinoptions'. (Manuel Konig) + +Improve Javascript indenting. Add "J" flag to 'cinoptions'. (Hari Kumar G) + +Mac: Support disabling antialias. (LC Mi) + +Mac: Add clipboard support in the Mac console. (Bjorn Winckler) + +Make it possible to drag a tab page label to another position. (Paul B. Mahol) + +Better implementation of creating the Color Scheme menu. (Juergen Kraemer) + +In Visual mode with 'showcmd' display the number of bytes and characters. + +Allow synIDattr() getting GUI attributes when built without GUI. (Matt +Wozniski) + +Support completion for ":find". Added test 73. (Nazri Ramliy) + +Command line completion for :ownsyntax and :setfiletype. (Dominique Pelle) + +Command line completion for :lmap and :lunmap. + +Support syntax and filetype completion for user commands. (Christian Brabandt) + +Avoid use of the GTK main_loop() so that the GtkFileChooser can be used. +(James Vega) + +When 'formatexpr' evaluates to non-zero fall back to internal formatting, also +for "gq". (James Vega) + +Support :browse for commands that use an error file argument. (Lech Lorens) + +Support wide file names in gvimext. (Szabolcs Horvat) + +Improve test for joining lines. (Milan Vancura) +Make joining a range of lines much faster. (Milan Vancura) + +Add patch to improve support of z/OS (OS/390). (Ralf Schandl) + +Added the helphelp.txt file. Moved text from various.txt to it. + +Added "q" item for 'statusline'. Added |w:quickfix_title|. (Lech Lorens) + +Various improvements for VMS. (Zoltan Arpadffy) + + +New syntax files: ~ +Haskell Cabal build file (Vincent Berthoux) +ChaiScript (Jason Turner) +Cucumber (Tim Pope) +Datascript (Dominique Pelle) +Fantom (Kamil Toman) +Liquid (Tim Pope) +Markdown (Tim Pope) +wavefront's obj file (Vincent Berthoux) +Perl 6 (Andy Lester) +SDC - Synopsys Design Constraints (Maurizio Tranchero) +SVG - Scalable Vector Graphics (Vincent Berthoux) +task data (John Florian) +task 42 edit (John Florian) + +New filetype plugins: ~ +Cucumber (Tim Pope) +Liquid (Tim Pope) +Logcheck (Debian) +Markdown (Tim Pope) +Perl 6 (Andy Lester) +Quickfix window (Lech Lorens) +Tcl (Robert L Hicks) + +New indent plugins: ~ +CUDA (Bram Moolenaar) +ChaiScript (Jason Turner) +Cucumber (Tim Pope) +LifeLines (Patrick Texier) +Liquid (Tim Pope) +Mail (Bram Moolenaar) +Perl 6 (Andy Lester) + +Other new runtime files: ~ +Breton spell file (Dominique Pelle) +Dvorak keymap (Ashish Shukla) +Korean translations. (SungHyun Nam) +Python 3 completion (Aaron Griffin) +Serbian menu translations (Aleksandar Jelenak) +Tetum spell files +Tutor Bairish (Sepp Hell) +Tutor in Esperanto. (Dominique Pellé) +Tutor in Portuguese. +Norwegian Tutor now also available as tutor.nb + +Removed the Mupad runtime files, they were not maintained. + + +Fixed *fixed-7.3* +----- + +Patch 7.2.001 +Problem: Mac: pseudo-ttys don't work properly on Leopard, resulting in the + shell not to have a prompt, CTRL-C not working, etc. +Solution: Don't use SVR4 compatible ptys, even though they are detected. + (Ben Schmidt) +Files: src/pty.c + +Patch 7.2.002 +Problem: Leaking memory when displaying menus. +Solution: Free allocated memory. (Dominique Pelle) +Files: src/menu.c + +Patch 7.2.003 +Problem: Typo in translated message. Message not translated. +Solution: Correct spelling. Add _(). (Dominique Pelle) +Files: src/spell.c, src/version.c + +Patch 7.2.004 +Problem: Cscope help message is not translated. +Solution: Put it in _(). (Dominique Pelle) +Files: src/if_cscope.c, src/if_cscope.h + +Patch 7.2.005 +Problem: A few problems when profiling. Using flag pointer instead of flag + value. Allocating zero bytes. Not freeing used memory. +Solution: Remove wrong '&' characters. Skip dumping when there is nothing + to dump. Free used memory. (Dominique Pelle) +Files: src/eval.c + +Patch 7.2.006 +Problem: HTML files are not recognized by contents. +Solution: Add a rule to the scripts file. (Nico Weber) +Files: runtime/scripts.vim + +Patch 7.2.007 (extra) +Problem: Minor issues for VMS. +Solution: Minor fixes for VMS. Add float support. (Zoltan Arpadffy) +Files: runtime/doc/os_vms.txt, src/os_vms_conf.h, src/Make_vms.mms, + src/testdir/Make_vms.mms, src/testdir/test30.in, + src/testdir/test54.in + +Patch 7.2.008 +Problem: With a BufHidden autocommand that invokes ":bunload" the window + count for a buffer can be wrong. (Bob Hiestand) +Solution: Don't call enter_buffer() when already in that buffer. +Files: src/buffer.c + +Patch 7.2.009 +Problem: Can't compile with Perl 5.10 on MS-Windows. (Cesar Romani) +Solution: Add the Perl_sv_free2 function for dynamic loading. (Dan Sharp) +Files: src/if_perl.xs + +Patch 7.2.010 +Problem: When using "K" in Visual mode not all characters are properly + escaped. (Ben Schmidt) +Solution: Use a function with the functionality of shellescape(). (Jan + Minar) +Files: src/mbyte.c, src/misc2.c, src/normal.c + +Patch 7.2.011 +Problem: Get an error when inserting a float value from the expression + register. +Solution: Convert the Float to a String automatically in the same place + where a List would be converted to a String. +Files: src/eval.c + +Patch 7.2.012 +Problem: Compiler warnings when building with startup timing. +Solution: Add type casts. +Files: src/ex_cmds2.c + +Patch 7.2.013 +Problem: While waiting for the X selection Vim consumes a lot of CPU time + and hangs until a response is received. +Solution: Sleep a bit when the selection event hasn't been received yet. + Time out after a couple of seconds to avoid a hang when the + selection owner isn't responding. +Files: src/ui.c + +Patch 7.2.014 +Problem: synstack() doesn't work in an empty line. +Solution: Accept column zero as a valid position. +Files: src/eval.c + +Patch 7.2.015 +Problem: "make all test install" doesn't stop when the test fails. (Daniel + Shahaf) +Solution: When test.log contains failures exit with non-zero status. +Files: src/testdir/Makefile + +Patch 7.2.016 +Problem: The pattern being completed may be in freed memory when the + command line is being reallocated. (Dominique Pelle) +Solution: Keep a pointer to the expand_T in the command line structure. + Don't use <S-Tab> as CTRL-P when there are no results. Clear the + completion when using a command line from the history. +Files: src/ex_getln.c + +Patch 7.2.017 +Problem: strlen() used on text that may not end in a NUL. (Dominique Pelle) + Pasting a very big selection doesn't work. +Solution: Use the length passed to the XtSelectionCallbackProc() function. + After getting the SelectionNotify event continue dispatching + events until the callback is actually called. Also dispatch the + PropertyNotify event. +Files: src/ui.c + +Patch 7.2.018 +Problem: Memory leak when substitute is aborted. +Solution: Free the buffer allocated for the new text. (Dominique Pelle) +Files: src/ex_cmds.c + +Patch 7.2.019 +Problem: Completion of ":noautocmd" doesn't work and exists(":noautocmd") + returns zero. (Ben Fritz) +Solution: Add "noautocmd" to the list of modifiers and commands. +Files: src/ex_cmds.h, src/ex_docmd.c + +Patch 7.2.020 +Problem: Starting the GUI when the executable starts with 'k', but the KDE + version no longer exists. +Solution: Don't have "kvim" start the GUI. +Files: src/main.c + +Patch 7.2.021 +Problem: When executing autocommands getting the full file name may be + slow. (David Kotchan) +Solution: Postpone calling FullName_save() until autocmd_fname is used. +Files: src/ex_docmd.c, src/fileio.c, src/globals.h + +Patch 7.2.022 (extra) +Problem: Testing is not possible when compiling with MingW. +Solution: Add a MingW specific test Makefile. (Bill McCarthy) +Files: Filelist, src/testdir/Make_ming.mak + +Patch 7.2.023 +Problem: 'cursorcolumn' is in the wrong place in a closed fold when the + display is shifted left. (Gary Johnson) +Solution: Subtract w_skipcol or w_leftcol when needed. +Files: src/screen.c + +Patch 7.2.024 +Problem: It's possible to set 'history' to a negative value and that causes + an out-of-memory error. +Solution: Check that 'history' has a positive value. (Doug Kearns) +Files: src/option.c + +Patch 7.2.025 +Problem: When a CursorHold event invokes system() it is retriggered over + and over again. +Solution: Don't reset did_cursorhold when getting K_IGNORE. +Files: src/normal.c + +Patch 7.2.026 (after 7.2.010) +Problem: "K" doesn't use the length of the identifier but uses the rest of + the line. +Solution: Copy the desired number of characters first. +Files: src/normal.c + +Patch 7.2.027 +Problem: Can use cscope commands in the sandbox. +Solution: Disallow them, they might not be safe. +Files: src/ex_cmds.h + +Patch 7.2.028 +Problem: Confusing error message for missing (). +Solution: Change "braces" to "parentheses". (Gary Johnson) +Files: src/eval.c + +Patch 7.2.029 +Problem: No completion for ":doautoall". +Solution: Complete ":doautoall" like ":doautocmd". (Doug Kearns) +Files: src/ex_docmd.c + +Patch 7.2.030 (after 7.2.027) +Problem: Can't compile. +Solution: Remove prematurely added ex_oldfiles. +Files: src/ex_cmds.h + +Patch 7.2.031 +Problem: Information in the viminfo file about previously edited files is + not available to the user. There is no way to get a complete list + of files edited in previous Vim sessions. +Solution: Add v:oldfiles and fill it with the list of old file names when + first reading the viminfo file. Add the ":oldfiles" command, + ":browse oldfiles" and the "#<123" special file name. Increase + the default value for 'viminfo' from '20 to '100. +Files: runtime/doc/cmdline.txt, runtime/doc/eval.txt, + runtime/doc/starting.txt, runtime/doc/usr_21.txt, src/eval.c, + src/ex_cmds.c, src/ex_cmds.h, src/ex_docmd.c, src/feature.h, + src/fileio.c, src/main.c, src/mark.c, src/misc1.c, + src/proto/eval.pro, src/proto/ex_cmds.pro, src/proto/mark.pro, + src/option.c, src/structs.h, src/vim.h + +Patch 7.2.032 (after 7.2.031) +Problem: Can't build with EXITFREE defined. (Dominique Pelle) +Solution: Change vv_string to vv_str. +Files: src/eval.c + +Patch 7.2.033 +Problem: When detecting a little endian BOM "ucs-2le" is used, but the text + might be "utf-16le". +Solution: Default to "utf-16le", it also works for "ucs-2le". (Jia Yanwei) +Files: src/fileio.c, src/testdir/test42.ok + +Patch 7.2.034 +Problem: Memory leak in spell info when deleting buffer. +Solution: Free the memory. (Dominique Pelle) +Files: src/buffer.c + +Patch 7.2.035 +Problem: Mismatches between alloc/malloc, free/vim_free, + realloc/vim_realloc. +Solution: Use the right function. (Dominique Pelle) +Files: src/gui_x11.c, src/mbyte.c, src/misc2.c, src/os_unix.c + +Patch 7.2.036 (extra) +Problem: Mismatches between alloc/malloc, free/vim_free, + realloc/vim_realloc. +Solution: Use the right function. (Dominique Pelle) +Files: src/gui_riscos.c, src/gui_w48.c, src/mbyte.c, src/os_vms.c, + src/os_w32exe.c, src/os_win16.c + +Patch 7.2.037 +Problem: Double free with GTK 1 and compiled with EXITFREE. +Solution: Don't close display. (Dominique Pelle) +Files: src/os_unix.c + +Patch 7.2.038 +Problem: Overlapping arguments to memcpy(). +Solution: Use mch_memmove(). (Dominique Pelle) +Files: src/if_xcmdsrv.c + +Patch 7.2.039 +Problem: Accessing freed memory on exit when EXITFREE is defined. +Solution: Call hash_init() on the v: hash table. +Files: src/eval.c + +Patch 7.2.040 +Problem: When using ":e ++ff=dos fname" and the file contains a NL without + a CR before it and 'ffs' contains "unix" then the fileformat + becomes unix. +Solution: Ignore 'ffs' when using the ++ff argument. (Ben Schmidt) + Also remove unreachable code. +Files: src/fileio.c + +Patch 7.2.041 +Problem: In diff mode, when using two tabs, each with two diffed buffers, + editing a buffer of the other tab messes up the diff. (Matt + Mzyzik) +Solution: Only copy options from a window where the buffer was edited that + doesn't have 'diff' set or is for the current tab page. + Also fix that window options for a buffer are stored with the + wrong window. +Files: src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/ex_getln.c, src/if_sniff.c, src/main.c, src/netbeans.c, + src/normal.c, src/popupmnu.c, src/proto/buffer.pro, + src/proto/ex_cmds.pro src/quickfix.c, src/window.c + +Patch 7.2.042 +Problem: When using winrestview() in a BufWinEnter autocommand the window + is scrolled anyway. (Matt Zyzik) +Solution: Don't recompute topline when above 'scrolloff' from the bottom. + Don't always put the cursor halfway when entering a buffer. Add + "w_topline_was_set". +Files: src/buffer.c, src/move.c, src/structs.h + +Patch 7.2.043 +Problem: VMS: Too many characters are escaped in filename and shell + commands. +Solution: Escape fewer characters. (Zoltan Arpadffy) +Files: src/vim.h + +Patch 7.2.044 +Problem: Crash because of STRCPY() being over protective of the destination + size. (Dominique Pelle) +Solution: Add -D_FORTIFY_SOURCE=1 to CFLAGS. Use an intermediate variable + for the pointer to avoid a warning. +Files: src/auto/configure, src/configure.in, src/eval.c + +Patch 7.2.045 +Problem: The Python interface has an empty entry in sys.path. +Solution: Filter out the empty entry. (idea from James Vega) +Files: src/if_python.c + +Patch 7.2.046 +Problem: Wrong check for filling buffer with encoding. (Danek Duvall) +Solution: Remove pointers. (Dominique Pelle) +Files: src/mbyte.c + +Patch 7.2.047 +Problem: Starting Vim with the -nb argument while it's not supported causes + the other side to hang. +Solution: When -nb is used while it's not supported exit Vim. (Xavier de + Gaye) +Files: src/main.c, src/vim.h + +Patch 7.2.048 +Problem: v:prevcount is changed too often. Counts are not multiplied when + setting v:count. +Solution: Set v:prevcount properly. Multiply counts. (idea by Ben Schmidt) +Files: src/eval.c, src/normal.c, src/proto/eval.pro + +Patch 7.2.049 (extra) +Problem: Win32: the clipboard doesn't support UTF-16. +Solution: Change UCS-2 support to UTF-16 support. (Jia Yanwei) +Files: src/gui_w32.c, src/gui_w48.c, src/mbyte.c, src/misc1.c, + src/os_mswin.c, src/os_win32.c, src/proto/os_mswin.pro + +Patch 7.2.050 +Problem: Warnings for not checking return value of fwrite(). (Chip Campbell) +Solution: Use the return value. +Files: src/spell.c + +Patch 7.2.051 +Problem: Can't avoid 'wildignore' and 'suffixes' for glob() and globpath(). +Solution: Add an extra argument to these functions. (Ingo Karkat) +Files: src/eval.c, src/ex_getln.c, src/proto/ex_getln.pro, + runtime/doc/eval.txt, runtime/doc/options.txt + +Patch 7.2.052 +Problem: synIDattr() doesn't support "sp" for special color. +Solution: Recognize "sp" and "sp#". (Matt Wozniski) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.2.053 +Problem: Crash when using WorkShop command ":ws foo". (Dominique Pelle) +Solution: Avoid using a NULL pointer. +Files: src/workshop.c + +Patch 7.2.054 +Problem: Compilation warnings for format in getchar.c. +Solution: Use fputs() instead of fprintf(). (Dominique Pelle) +Files: src/getchar.c + +Patch 7.2.055 +Problem: Various compiler warnings with strict checking. +Solution: Avoid the warnings by using return values and renaming. +Files: src/diff.c, src/eval.c, src/ex_cmds.c, src/ex_docmd.c, + src/fileio.c, src/fold.c, src/globals.h, src/gui.c, + src/gui_at_sb.c, src/gui_gtk_x11.c, src/gui_xmdlg.c, + src/gui_xmebw.c, src/main.c, src/mbyte.c, src/message.c, + src/netbeans.c, src/option.c, src/os_unix.c, src/spell.c, + src/ui.c, src/window.c + +Patch 7.2.056 (after 7.2.050) +Problem: Tests 58 and 59 fail. +Solution: Don't invoke fwrite() with a zero length. (Dominique Pelle) +Files: src/spell.c + +Patch 7.2.057 (after 7.2.056) +Problem: Combination of int and size_t may not work. +Solution: Use size_t for variable. +Files: src/spell.c + +Patch 7.2.058 +Problem: Can't add a patch name to the ":version" output. +Solution: Add the extra_patches array. +Files: src/version.c + +Patch 7.2.059 +Problem: Diff display is not always updated. +Solution: Update the display more often. +Files: src/diff.c + +Patch 7.2.060 +Problem: When a spell files has many compound rules it may take a very long + time making the list of suggestions. Displaying also can be slow + when there are misspelled words. + Can't parse some Hunspell .aff files. +Solution: Check if a compounding can possibly work before trying a + combination, if the compound rules don't contain wildcards. + Implement using CHECKCOMPOUNDPATTERN. + Ignore COMPOUNDRULES. Ignore a comment after most items. + Accept ONLYINCOMPOUND as an alias for NEEDCOMPOUND. + Accept FORBIDDENWORD as an alias for BAD. +Files: runtime/doc/spell.txt, src/spell.c + +Patch 7.2.061 +Problem: Can't create a funcref for an autoload function without loading + the script first. (Marc Weber) +Solution: Accept autoload functions that don't exist yet in function(). +Files: src/eval.c + +Patch 7.2.062 +Problem: "[Scratch]" is not translated. +Solution: Mark the string for translation. (Dominique Pelle) +Files: src/buffer.c + +Patch 7.2.063 +Problem: Warning for NULL argument of Perl_sys_init3(). +Solution: Use Perl_sys_init() instead. (partly by Dominique Pelle) +Files: src/if_perl.xs + +Patch 7.2.064 +Problem: Screen update bug when repeating "~" on a Visual block and the + last line doesn't change. +Solution: Keep track of changes for all lines. (Moritz Orbach) +Files: src/ops.c + +Patch 7.2.065 +Problem: GTK GUI: the cursor disappears when doing ":vsp" and the Vim + window is maximized. (Dominique Pelle, Denis Smolyar) +Solution: Don't change "Columns" back to an old value at a wrong moment. + Do change "Rows" when it should not be a problem. +Files: src/gui.c + +Patch 7.2.066 +Problem: It's not easy to see whether 'encoding' is a multi-byte encoding. +Solution: Add has('multi_byte_encoding'). +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.2.067 +Problem: Session file can't load extra file when the path contains special + characters. +Solution: Escape the file name. (Lech Lorens) +Files: src/ex_docmd.c + +Patch 7.2.068 +Problem: Emacs tags file lines can be too long, resulting in an error + message. (James Vega) +Solution: Ignore lines with errors if they are too long. +Files: src/tag.c + +Patch 7.2.069 (after 7.2.060) +Problem: Compiler warning for storing size_t in int. +Solution: Add type cast. +Files: src/spell.c + +Patch 7.2.070 +Problem: Crash when a function returns a:000. (Matt Wozniski) +Solution: Don't put the function struct on the stack, allocate it. Free it + only when nothing in it is used. +Files: src/eval.c + +Patch 7.2.071 (extra) +Problem: Win32: Handling netbeans events while Vim is busy updating the + screen may cause a crash. +Solution: Like with GTK, only handle netbeans messages in the main loop. + (Xavier de Gaye) +Files: src/gui_w48.c, src/netbeans.c + +Patch 7.2.072 (extra) +Problem: Compiler warning in Sniff code. +Solution: Use return value of pipe(). (Dominique Pelle) +Files: src/if_sniff.c + +Patch 7.2.073 +Problem: ":set <xHome>" has the same output as ":set <Home>". (Matt + Wozniski) +Solution: Don't translate "x" keys to its alternative for ":set". +Files: src/gui_mac.c, src/misc2.c, src/option.c, src/proto/misc2.pro + +Patch 7.2.074 (extra, after 7.2.073) +Problem: ":set <xHome>" has the same output as ":set <Home>". (Matt + Wozniski) +Solution: Don't translate "x" keys to its alternative for ":set". +Files: src/gui_mac.c + +Patch 7.2.075 (after 7.2.058) +Problem: Explanation about making a diff for extra_patches is unclear. +Solution: Adjust comment. +Files: src/version.c + +Patch 7.2.076 +Problem: rename(from, to) deletes the file if "from" and "to" are not equal + but still refer to the same file. E.g., on a FAT32 filesystem + under Unix. +Solution: Go through another file name. +Files: src/fileio.c + +Patch 7.2.077 (after 7.2.076) +Problem: rename(from, to) doesn't work if "from" and "to" differ only in + case on a system that ignores case in file names. +Solution: Go through another file name. +Files: src/fileio.c + +Patch 7.2.078 +Problem: When deleting a fold that is specified with markers the cursor + position may be wrong. Folds may not be displayed properly after + a delete. Wrong fold may be deleted. +Solution: Fix the problems. (mostly by Lech Lorens) +Files: src/fold.c + +Patch 7.2.079 +Problem: "killed" netbeans events are not handled correctly. +Solution: A "killed" netbeans event is sent when the buffer is deleted or + wiped out (in this case, the netbeans annotations in this buffer + have been removed). A user can still remove a sign with the + command ":sign unplace" and this does not trigger a "killed" + event. (Xavier de Gaye) +Files: runtime/doc/netbeans.txt, src/buffer.c, src/globals.h, + src/netbeans.c, src/proto/netbeans.pro + +Patch 7.2.080 +Problem: When typing a composing character just after starting completion + may access memory before its allocation point. (Dominique Pelle) +Solution: Don't delete before the completion start column. Add extra checks + for the offset not being negative. +Files: src/edit.c + +Patch 7.2.081 +Problem: Compiler warning for floating point overflow on VAX. +Solution: For VAX use a smaller number. (Zoltan Arpadffy) +Files: src/message.c + +Patch 7.2.082 +Problem: When 'ff' is "mac" then "ga" on a ^J shows 0x0d instead of 0x0a. + (Andy Wokula) +Solution: Use NL for this situation. (Lech Lorens) +Files: src/ex_cmds.c + +Patch 7.2.083 +Problem: ":tag" does not return to the right tag entry from the tag stack. +Solution: Don't change the current match when there is no argument. + (Erik Falor) +Files: src/tag.c + +Patch 7.2.084 +Problem: Recursive structures are not handled properly in Python + vim.eval(). +Solution: Keep track of references in a better way. (Yukihiro Nakadaira) +Files: src/if_python.c + +Patch 7.2.085 +Problem: ":set <M-b>=<Esc>b" does not work when 'encoding' is utf-8. +Solution: Put the <M-b> character in the input buffer as valid utf-8. + (partly by Matt Wozniski) +Files: src/term.c + +Patch 7.2.086 +Problem: Using ":diffget 1" in buffer 1 corrupts the text. +Solution: Don't do anything when source and destination of ":diffget" or + ":diffput" is the same buffer. (Dominique Pelle) +Files: src/diff.c + +Patch 7.2.087 +Problem: Adding URL to 'path' doesn't work to edit a file. +Solution: Skip simplify_filename() for URLs. (Matt Wozniski) +Files: src/misc2.c + +Patch 7.2.088 (extra) +Problem: OpenClipboard() may fail when another application is using the + clipboard. +Solution: Retry OpenClipboard() a few times. (Jianrong Yu) +Files: src/os_mswin.c + +Patch 7.2.089 (extra) +Problem: Win32: crash when using Ultramon buttons. +Solution: Don't use a WM_OLE message of zero size. (Ray Megal) +Files: src/if_ole.cpp, src/gui_w48.c + +Patch 7.2.090 +Problem: User command containing 0x80 in multi-byte character does not work + properly. (Yasuhiro Matsumoto) +Solution: Undo replacement of K_SPECIAL and CSI characters when executing + the command. +Files: src/ex_docmd.c + +Patch 7.2.091 +Problem: ":cs help" output is not aligned for some languages. +Solution: Compute character size instead of byte size. (Dominique Pelle) +Files: src/if_cscope.c + +Patch 7.2.092 +Problem: Some error messages are not translated. +Solution: Add _() around the messages. (Dominique Pelle) +Files: src/eval.c + +Patch 7.2.093 (extra) +Problem: Win32: inputdialog() and find/replace dialogs can't handle + multi-byte text. +Solution: Use the wide version of dialog functions when available. (Yanwei + Jia) +Files: src/gui_w32.c, src/gui_w48.c + +Patch 7.2.094 +Problem: Compiler warning for signed/unsigned compare. +Solution: Add type cast. Also fix a few typos. +Files: src/edit.c + +Patch 7.2.095 +Problem: With Visual selection, "r" and then CTRL-C Visual mode is stopped + but the highlighting is not removed. +Solution: Call reset_VIsual(). +Files: src/normal.c + +Patch 7.2.096 +Problem: After ":number" the "Press Enter" message may be on the wrong + screen, if switching screens for shell commands. +Solution: Reset info_message. (James Vega) +Files: src/ex_cmds.c + +Patch 7.2.097 +Problem: "!xterm&" doesn't work when 'shell' is "bash". +Solution: Ignore SIGHUP after calling setsid(). (Simon Schubert) +Files: src/os_unix.c + +Patch 7.2.098 +Problem: Warning for signed/unsigned pointer. +Solution: Add type cast. +Files: src/eval.c + +Patch 7.2.099 +Problem: Changing GUI options causes an unnecessary redraw when the GUI + isn't active. +Solution: Avoid the redraw. (Lech Lorens) +Files: src/option.c + +Patch 7.2.100 +Problem: When using ":source" on a FIFO or something else that can't rewind + the first three bytes are skipped. +Solution: Instead of rewinding read the first line and detect a BOM in that. + (mostly by James Vega) +Files: src/ex_cmds2.c + +Patch 7.2.101 (extra) +Problem: MSVC version not recognized. +Solution: Add the version number to the list. (Zhong Zhang) +Files: src/Make_mvc.mak + +Patch 7.2.102 (after 7.2.100) +Problem: When 'encoding' is "utf-8" a BOM at the start of a Vim script is + not removed. (Tony Mechelynck) +Solution: When no conversion is taking place make a copy of the line without + the BOM. +Files: src/ex_cmds2.c + +Patch 7.2.103 +Problem: When 'bomb' is changed the window title is updated to show/hide a + "+", but the tab page label isn't. (Patrick Texier) +Solution: Set "redraw_tabline" in most places where "need_maketitle" is set. + (partly by Lech Lorens) +Files: src/option.c + +Patch 7.2.104 +Problem: When using ":saveas bar.c" the tab label isn't updated right away. +Solution: Set redraw_tabline. (Francois Ingelrest) +Files: src/ex_cmds.c + +Patch 7.2.105 +Problem: Modeline setting for 'foldmethod' overrules diff options. (Ingo + Karkat) +Solution: Don't set 'foldmethod' and 'wrap' from a modeline when 'diff' is + on. +Files: src/option.c + +Patch 7.2.106 +Problem: Endless loop when using "]s" in HTML when there are no + misspellings. (Ingo Karkat) +Solution: Break the search loop. Also fix pointer alignment for systems + with pointers larger than int. +Files: src/spell.c + +Patch 7.2.107 +Problem: When using a GUI dialog and ":echo" commands the messages are + deleted after the dialog. (Vincent Birebent) +Solution: Don't call msg_end_prompt() since there was no prompt. +Files: src/message.c + +Patch 7.2.108 (after 7.2.105) +Problem: Can't build without the diff feature. +Solution: Add #ifdef. +Files: src/option.c + +Patch 7.2.109 +Problem: 'langmap' does not work for multi-byte characters. +Solution: Add a list of mapped multi-byte characters. (based on work by + Konstantin Korikov, Agathoklis Hatzimanikas) +Files: runtime/doc/options.txt, src/edit.c, src/getchar.c, src/macros.h, + src/normal.c, src/option.c, src/proto/option.pro, src/window.c + +Patch 7.2.110 +Problem: Compiler warning for unused variable. +Solution: Init the variable. +Files: src/ex_docmd.c + +Patch 7.2.111 +Problem: When using Visual block mode with 'cursorcolumn' it's unclear what + is selected. +Solution: Don't use 'cursorcolumn' highlighting inside the Visual selection. + (idea by Dominique Pelle) +Files: src/screen.c + +Patch 7.2.112 +Problem: Cursor invisible in Visual mode when 'number' is set and cursor in + first column. (Matti Niemenmaa, Renato Alves) +Solution: Check that vcol_prev is smaller than vcol. +Files: src/screen.c + +Patch 7.2.113 +Problem: Crash for substitute() call using submatch(1) while there is no + such submatch. (Yukihiro Nakadaira) +Solution: Also check the start of the submatch is set, it can be NULL when + an attempted match didn't work out. +Files: src/regexp.c + +Patch 7.2.114 +Problem: Using wrong printf format. +Solution: Use "%ld" instead of "%d". (Dominique Pelle) +Files: src/netbeans.c + +Patch 7.2.115 +Problem: Some debugging code is never used. +Solution: Remove nbtrace() and nbprt(). (Dominique Pelle) +Files: src/nbdebug.c, src/nbdebug.h + +Patch 7.2.116 +Problem: Not all memory is freed when EXITFREE is defined. +Solution: Free allocated memory on exit. (Dominique Pelle) +Files: src/ex_docmd.c, src/gui_gtk_x11.c, src/misc2.c, src/search.c, + src/tag.c + +Patch 7.2.117 +Problem: Location list incorrectly labelled "Quickfix List". +Solution: Break out of both loops for finding window for location list + buffer. (Lech Lorens) +Files: src/buffer.c, src/quickfix.c, src/screen.c + +Patch 7.2.118 +Problem: <PageUp> at the more prompt only does half a page. +Solution: Make <PageUp> go up a whole page. Also make 'f' go a page + forward, but not quit the more prompt. (Markus Heidelberg) +Files: src/message.c + +Patch 7.2.119 +Problem: Status line is redrawn too often. +Solution: Check ScreeenLinesUC[] properly. (Yukihiro Nakadaira) +Files: src/screen.c + +Patch 7.2.120 +Problem: When opening the quickfix window or splitting the window and + setting the location list, the location list is copied and then + deleted, which is inefficient. +Solution: Don't copy the location list when not needed. (Lech Lorens) +Files: src/quickfix.c, src/vim.h, src/window.c + +Patch 7.2.121 +Problem: In gvim "!grep a *.c" spews out a lot of text that can't be + stopped with CTRL-C. +Solution: When looping to read and show text, do check for typed characters + every two seconds. +Files: src/os_unix.c + +Patch 7.2.122 +Problem: Invalid memory access when the VimResized autocommand changes + 'columns' and/or 'lines'. +Solution: After VimResized check for changed values. (Dominique Pelle) +Files: src/screen.c + +Patch 7.2.123 +Problem: Typing 'q' at more prompt for ":map" output still displays another + line, causing another more prompt. (Markus Heidelberg) +Solution: Quit listing maps when 'q' typed. +Files: src/getchar.c + +Patch 7.2.124 +Problem: Typing 'q' at more prompt for ":tselect" output still displays + more lines, causing another more prompt. (Markus Heidelberg) +Solution: Quit listing tags when 'q' typed. +Files: src/tag.c + +Patch 7.2.125 +Problem: Leaking memory when reading XPM bitmap for a sign. +Solution: Don't allocate the memory twice. (Dominique Pelle) +Files: src/gui_x11.c + +Patch 7.2.126 +Problem: When EXITFREE is defined signs are not freed. +Solution: Free all signs on exit. Also free keymaps. (Dominique Pelle) +Files: src/misc2.c, src/ex_cmds.c, src/proto/ex_cmds.pro + +Patch 7.2.127 +Problem: When listing mappings and a wrapping line causes the more prompt, + after typing 'q' there can be another more prompt. (Markus + Heidelberg) +Solution: Set "lines_left" to allow more lines to be displayed. +Files: src/message.c + +Patch 7.2.128 (after 7.2.055) +Problem: Using ":lcd" makes session files not work. +Solution: Compare return value of mch_chdir() properly. (Andreas Bernauer) +Files: src/ex_docmd.c + +Patch 7.2.129 +Problem: When opening a command window from input() it uses the search + history. +Solution: Use get_cmdline_type(). (James Vega) +Files: src/ex_getln.c + +Patch 7.2.130 +Problem: Vim may hang until CTRL-C is typed when using CTRL-Z. +Solution: Avoid using pause(). Also use "volatile" for variables used in + signal functions. (Dominique Pelle) +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/globals.h, src/os_unix.c + +Patch 7.2.131 +Problem: When 'keymap' is cleared may still use the cursor highlighting for + when it's enabled. +Solution: Reset 'iminsert' and 'imsearch'. (partly by Dominique Pelle) + Also avoid ":setlocal" for these options have a global effect. +Files: src/option.c + +Patch 7.2.132 +Problem: When changing directory during a SwapExists autocmd freed memory + may be accessed. (Dominique Pelle) +Solution: Add the allbuf_lock flag. +Files: src/ex_getln.c, src/globals.h, src/fileio.c, + src/proto/ex_getln.pro + +Patch 7.2.133 +Problem: ":diffoff!" changes settings in windows not in diff mode. +Solution: Only change settings in other windows when 'diff' is set, always + do it for the current window. (Lech Lorens) +Files: src/diff.c + +Patch 7.2.134 +Problem: Warning for discarding "const" from pointer. +Solution: Don't pass const pointer to mch_memmove(). +Files: src/fileio.c + +Patch 7.2.135 +Problem: Memory leak when redefining user command with complete argument. +Solution: Free the old complete argument. (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.2.136 (after 7.2.132) +Problem: ":cd" is still possible in a SwapExists autocmd. +Solution: Check the allbuf_lock flag in ex_cd(). +Files: src/ex_docmd.c + +Patch 7.2.137 +Problem: When 'virtualedit' is set, a left shift of a blockwise selection + that starts and ends inside a tab shifts too much. (Helmut + Stiegler) +Solution: Redo the block left shift code. (Lech Lorens) +Files: src/ops.c, src/testdir/Makefile, src/testdir/test66.in, + src/testdir/test66.ok + +Patch 7.2.138 (extra part of 7.2.137) +Problem: See 7.2.137. +Solution: See 7.2.137. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms + +Patch 7.2.139 +Problem: Crash when 'virtualedit' is "all". (James Vega) +Solution: Avoid overflow when column is MAXCOL. (Dominique Pelle) +Files: src/misc2.c + +Patch 7.2.140 +Problem: Diff highlighting isn't displayed before the Visual area if it + starts at the cursor position. (Markus Heidelberg) +Solution: Also check fromcol_prev. +Files: src/screen.c + +Patch 7.2.141 +Problem: When redrawing a character for bold spill this causes the next + character to be redrawn as well. +Solution: Only redraw one extra character. (Yukihiro Nakadaira) +Files: src/screen.c + +Patch 7.2.142 +Problem: Motif and Athena balloons don't use tooltip colors. +Solution: Set the colors. (Matt Wozniski) +Files: src/gui_beval.c + +Patch 7.2.143 +Problem: No command line completion for ":cscope" command. +Solution: Add the completion for ":cscope". (Dominique Pelle) +Files: src/ex_docmd.c, src/ex_getln.c, src/if_cscope.c, + src/proto/if_cscope.pro, src/vim.h + +Patch 7.2.144 +Problem: When 't_Co' is set to the value it already had the color scheme is + reloaded anyway. +Solution: Only load the colorscheme when the t_Co value changes. (Dominique + Pelle) +Files: src/option.c + +Patch 7.2.145 +Problem: White space in ":cscope find" is not ignored. +Solution: Ignore the white space, but not when the leading white space is + useful for the argument. +Files: runtime/doc/if_scop.txt, src/if_cscope.c + +Patch 7.2.146 +Problem: v:warningmsg isn't used for all warnings. +Solution: Set v:warningmsg for relevant warnings. (Ingo Karkat) +Files: src/fileio.c, src/misc1.c, src/option.c + +Patch 7.2.147 +Problem: When compiled as small version and 'number' is on the cursor is + displayed in the wrong position after a tab. (James Vega) +Solution: Don't increment vcol when still displaying the line number. +Files: src/screen.c + +Patch 7.2.148 +Problem: When searching for "$" while 'hlsearch' is set, highlighting the + character after the line does not work in the cursor column. + Also highlighting for Visual mode after the line end when this + isn't needed. (Markus Heidelberg) +Solution: Only compare the cursor column in the cursor line. Only highlight + for Visual selection after the last character when it's needed to + see where the Visual selection ends. +Files: src/screen.c + +Patch 7.2.149 +Problem: Using return value of function that doesn't return a value results + in reading uninitialized memory. +Solution: Set the default to return zero. Make cursor() return -1 on + failure. Let complete() return an empty string in case of an + error. (partly by Dominique Pelle) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.2.150 (extra) +Problem: Can't use tab pages from VisVim. +Solution: Add tab page support to VisVim. (Adam Slater) +Files: src/VisVim/Commands.cpp, src/VisVim/Resource.h, + src/VisVim/VisVim.rc + +Patch 7.2.151 +Problem: ":hist a" doesn't work like ":hist all" as the docs suggest. +Solution: Make ":hist a" and ":hist al" work. (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.2.152 +Problem: When using "silent echo x" inside ":redir" a next echo may start + halfway the line. (Tony Mechelynck, Dennis Benzinger) +Solution: Reset msg_col after redirecting silently. +Files: src/ex_docmd.c, src/message.c, src/proto/message.pro + +Patch 7.2.153 +Problem: Memory leak for ":recover empty_dir/". +Solution: Free files[] when it becomes empty. (Dominique Pelle) +Files: src/memline.c + +Patch 7.2.154 (after 7.2.132) +Problem: ":cd" is still possible in a SwapExists autocmd. +Solution: Set allbuf_lock in do_swapexists(). +Files: src/memline.c + +Patch 7.2.155 +Problem: Memory leak in ":function /pat". +Solution: Free the memory. (Dominique Pelle) +Files: src/eval.c + +Patch 7.2.156 (after 7.2.143) +Problem: No completion for :scscope and :lcscope commands. +Solution: Implement the completion. (Dominique Pelle) +Files: src/if_cscope.c, src/ex_docmd.c, src/proto/if_cscope.pro + +Patch 7.2.157 +Problem: Illegal memory access when searching in path. +Solution: Avoid looking at a byte after end of a string. (Dominique Pelle) +Files: src/search.c + +Patch 7.2.158 +Problem: Warnings from VisualC compiler. +Solution: Add type casts. (George Reilly) +Files: src/ops.c + +Patch 7.2.159 +Problem: When $x_includes ends up being "NONE" configure fails. +Solution: Check for $x_includes not to be "NONE" (Rainer) +Files: src/auto/configure, src/configure.in + +Patch 7.2.160 +Problem: Search pattern not freed on exit when 'rightleft' set. +Solution: Free mr_pattern_alloced. +Files: src/search.c + +Patch 7.2.161 +Problem: Folds messed up in other tab page. (Vlad Irnov) +Solution: Instead of going over all windows in current tab page go over all + windows in all tab pages. Also free memory for location lists in + other tab pages when exiting. (Lech Lorens) +Files: src/fileio.c, src/mark.c, src/misc1.c, src/misc2.c + +Patch 7.2.162 +Problem: The quickfix window may get wrong filetype. +Solution: Do not detect the filetype for the quickfix window. (Lech Lorens) +Files: src/quickfix.c + +Patch 7.2.163 +Problem: The command line window may get folding. +Solution: Default to no/manual folding. (Lech Lorens) +Files: src/ex_getln.c + +Patch 7.2.164 +Problem: When 'showbreak' is set the size of the Visual block may be + reported wrong. (Eduardo Daudt Flach) +Solution: Temporarily make 'sbr' empty. +Files: src/normal.c, src/ops.c + +Patch 7.2.165 +Problem: The argument for the FuncUndefined autocmd event is expanded like + a file name. +Solution: Don't try expanding it. (Wang Xu) +Files: src/fileio.c + +Patch 7.2.166 +Problem: No completion for ":sign" command. +Solution: Add ":sign" completion. (Dominique Pelle) +Files: src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, src/vim.h, + src/proto/ex_cmds.pro + +Patch 7.2.167 +Problem: Splint doesn't work well for checking the code. +Solution: Add splint arguments in the Makefile. Exclude some code from + splint that it can't handle. Tune splint arguments to give + reasonable errors. Add a filter for removing false warnings from + splint output. Many small changes to avoid warnings. More to + follow... +Files: Filelist, src/Makefile, src/buffer.c, src/charset.c, + src/cleanlint.vim, src/digraph.c, src/edit.c, src/ex_cmds.c, + src/globals.h, src/ops.c, src/os_unix.c, src/os_unix.h, + src/proto/buffer.pro, src/proto/edit.pro, src/screen.c, + src/structs.h + +Patch 7.2.168 +Problem: When no ctags program can be found, "make tags" attempts to + execute the first C file. +Solution: Default to "ctags" when no ctags program can be found. +Files: src/configure.in, src/auto/configure + +Patch 7.2.169 +Problem: Splint complains about a lot of things. +Solution: Add type casts, #ifdefs and other changes to avoid warnings. + Change colnr_T from unsigned to int. Avoids mistakes with + subtracting columns. +Files: src/cleanlint.vim, src/diff.c, src/edit.c, src/ex_cmds.c, + src/ex_cmds2.c, src/ex_docmd.c, src/proto/ex_cmds.pro, + src/proto/spell.pro, src/quickfix.c, src/spell.c, src/structs.h, + src/term.h, src/vim.h + +Patch 7.2.170 +Problem: Using b_dev while it was not set. (Dominique Pelle) +Solution: Add the b_dev_valid flag. +Files: src/buffer.c, src/fileio.c, src/structs.h + +Patch 7.2.171 (after 7.2.169) +Problem: Compiler warnings. (Tony Mechelynck) +Solution: Add function prototype. (Patrick Texier) Init variable. +Files: src/ex_cmds.c + +Patch 7.2.172 (extra) +Problem: Compiler warning. +Solution: Adjust function prototype. (Patrick Texier) +Files: src/os_mswin.c + +Patch 7.2.173 +Problem: Without lint there is no check for unused function arguments. +Solution: Use gcc -Wunused-parameter instead of lint. For a few files add + attributes to arguments that are known not to be used. +Files: src/auto/configure, src/buffer.c, src/charset.c, src/diff.c, + src/configure.in, src/config.h.in, src/edit.c, src/ex_cmds.c, + src/ex_cmds2.c, src/version.c, src/vim.h + +Patch 7.2.174 +Problem: Too many warnings from gcc -Wextra. +Solution: Change initializer. Add UNUSED. Add type casts. +Files: src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_docmd.c, + src/ex_getln.c, src/fileio.c, getchar.c, globals.h, main.c, + memline.c, message.c, src/misc1.c, src/move.c, src/normal.c, + src/option.c, src/os_unix.c, src/os_unix.h, src/regexp.c, + src/search.c, src/tag.c + +Patch 7.2.175 +Problem: Compiler warning in OpenBSD. +Solution: Add type cast for NULL. (Dasn) +Files: src/if_cscope.c + +Patch 7.2.176 +Problem: Exceptions for splint are not useful. +Solution: Remove the S_SPLINT_S ifdefs. +Files: src/edit.c, src/ex_cmds.c, src/ex_docmd.c, src/os_unix.c, + src/os_unix.h, src/os_unixx.h, src/structs.h, src/term.h + +Patch 7.2.177 +Problem: Compiler warnings when using -Wextra +Solution: Add UNUSED and type casts. +Files: src/eval.c, src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, + src/fileio.c, src/hardcopy.c, src/if_cscope.c, src/if_xcmdsrv.c, + src/farsi.c, src/mark.c, src/menu.c + +Patch 7.2.178 +Problem: Using negative value for device number might not work. +Solution: Use a separate flag for whether ffv_dev was set. +Files: src/misc2.c + +Patch 7.2.179 +Problem: Using negative value for device number might not work. +Solution: Use a separate flag for whether sn_dev was set. +Files: src/ex_cmds2.c + +Patch 7.2.180 +Problem: Some more compiler warnings when using gcc -Wextra. +Solution: Add UNUSED and type casts. +Files: src/buffer.c, src/ex_cmds.c, src/macros.h, src/main.c, + src/menu.c, src/message.c, src/misc1.c, src/mbyte.c, + src/normal.c, src/option.c, src/os_unix.c, src/quickfix.c, + src/screen.c, src/search.c, src/spell.c, src/syntax.c, src/tag.c, + src/term.c, src/ui.c + +Patch 7.2.181 +Problem: Some more compiler warnings when using gcc -Wextra. +Solution: Add UNUSED and type casts. +Files: src/if_mzsch.c, src/gui.c, src/gui_gtk.c, src/gui_gtk_x11.c, + src/gui_gtk_f.c, src/gui_beval.c, src/netbeans.c + +Patch 7.2.182 (after 7.2.181) +Problem: Compilation problems after previous patch for Motif. Gvim with + GTK crashes on startup. +Solution: Add comma. Init form structure to zeroes. +Files: src/netbeans.c, src/gui_gtk_f.c + +Patch 7.2.183 +Problem: Configure problem for sys/sysctl.h on OpenBSD. (Dasn) +Solution: Add separate check for this header file. Also switch to newer + version of autoconf. +Files: src/auto/configure, src/configure.in + +Patch 7.2.184 +Problem: Some more compiler warnings when using gcc -Wextra. +Solution: Add UNUSED and type casts. Autoconf check for wchar_t. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/gui_athena.c, src/gui_x11.c, src/gui.c, src/gui_beval.c, + src/gui_at_sb.c, src/gui_at_fs.c, src/gui_motif.c, + src/gui_xmdlg.c, src/gui_xmebw.c, src/if_python.c, src/window.c, + src/workshop.c + +Patch 7.2.185 +Problem: Some more compiler warnings when using gcc -Wextra. +Solution: Add UNUSED and type casts. +Files: src/Makefile, src/if_tlc.c, src/if_ruby.c + +Patch 7.2.186 +Problem: Some more compiler warnings when using gcc -Wextra. +Solution: Now with the intended if_tcl.c changes. +Files: src/if_tcl.c + +Patch 7.2.187 (after 7.2.186) +Problem: Doesn't build with older versions of TCL. (Yongwei Wu) +Solution: Add #ifdefs. (Dominique Pelle) +Files: src/if_tcl.c + +Patch 7.2.188 +Problem: Crash with specific use of function calls. (Meikel Brandmeyer) +Solution: Make sure the items referenced by a function call are not freed + twice. (based on patch from Nico Weber) +Files: src/eval.c + +Patch 7.2.189 +Problem: Possible hang for deleting auto-indent. (Dominique Pelle) +Solution: Make sure the position is not beyond the end of the line. +Files: src/edit.c + +Patch 7.2.190 +Problem: The register executed by @@ isn't restored. +Solution: Mark the executable register in the viminfo file. +Files: src/ops.c + +Patch 7.2.191 +Problem: Mzscheme interface doesn't work on Ubuntu. +Solution: Change autoconf rules. Define missing macro. Some changes to + avoid gcc warnings. Remove per-buffer namespace. (Sergey Khorev) +Files: runtime/doc/if_mzsch.txt, src/Makefile, src/Make_ming.mak, + src/Make_mvc.mak, src/auto/configure, src/configure.in, + src/config.mk.in, src/eval.c, src/if_mzsch.c, src/if_mzsch.h, + src/main.c, src/proto/if_mzsch.pro + +Patch 7.2.192 (after 7.2.188) +Problem: Still a crash in the garbage collector for a very rare situation. +Solution: Make sure current_copyID is always incremented correctly. (Kent + Sibilev) +Files: src/eval.c + +Patch 7.2.193 +Problem: Warning for uninitialized values. +Solution: Initialize all the struct items. +Files: src/eval.c + +Patch 7.2.194 (extra) +Problem: MSVC: rem commands are echoed. +Solution: Add commands to switch off echo. (Wang Xu) +Files: src/msvc2008.bat + +Patch 7.2.195 +Problem: Leaking memory for the command Vim was started with. +Solution: Remember the pointer and free it. +Files: src/gui_gtk_x11.c + +Patch 7.2.196 (after 7.2.167) +Problem: Turns out splint doesn't work well enough to be usable. +Solution: Remove splint support. +Files: Filelist, src/cleanlint.vim + +Patch 7.2.197 +Problem: Warning for uninitialized values. +Solution: Initialize all the struct items of typebuf. +Files: src/globals.h + +Patch 7.2.198 +Problem: Size of buffer used for tgetent() may be too small. +Solution: Use the largest known size everywhere. +Files: src/vim.h + +Patch 7.2.199 +Problem: Strange character in comment. +Solution: Change to "message". (Yongwei Wu) +Files: src/term.c + +Patch 7.2.200 +Problem: Reading past end of string when navigating the menu bar or + resizing the window. +Solution: Add and use mb_ptr2len_len(). (partly by Dominique Pelle) + Also add mb_ptr2cells_len() to prevent more trouble. +Files: src/gui_gtk_x11.c, src/os_unix.c, src/globals.h, src/mbyte.c, + src/proto/mbyte.pro + +Patch 7.2.201 +Problem: Cannot copy/paste HTML to/from Firefox via the clipboard. +Solution: Implement this for GTK. Add the "html" value to 'clipboard'. +Files: runtime/doc/options.txt, src/globals.h, src/gui_gtk_x11.c, + src/mbyte.c, src/proto/mbyte.pro, src/option.c + +Patch 7.2.202 +Problem: BufWipeout autocommand that edits another buffer causes problems. +Solution: Check for the situation, give an error and quit the operation. +Files: src/fileio.c + +Patch 7.2.203 +Problem: When reloading a buffer or doing anything else with a buffer that + is not displayed in a visible window, autocommands may be applied + to the current window, folds messed up, etc. +Solution: Instead of using the current window for the hidden buffer use a + special window, splitting the current one temporarily. +Files: src/fileio.c, src/globals.h, src/gui.c, src/if_perl.xs, + src/progo/gui.pro, src/proto/window.pro, src/screen.c, + src/structs.h, src/window.c + +Patch 7.2.204 (extra) +Problem: Win32: Can't build with Visual Studio 2010 beta 1. +Solution: Fix the makefile. (George Reilly) +Files: src/Make_mvc.mak + +Patch 7.2.205 (extra) +Problem: Win32: No support for High DPI awareness. +Solution: Fix the manifest file. (George Reilly) +Files: src/Make_mvc.mak, src/gvim.exe.mnf + +Patch 7.2.206 +Problem: Win32: Can't build netbeans interface with Visual Studio 2010. +Solution: Undefine ECONNREFUSED. (George Reilly) +Files: src/netbeans.c + +Patch 7.2.207 +Problem: Using freed memory with ":redrawstatus" when it works recursively. +Solution: Prevent recursively updating the status line. (partly by Dominique + Pelle) +Files: src/screen.c + +Patch 7.2.208 +Problem: "set novice" gives an error message, it should be ignored. +Solution: Don't see "no" in "novice" as unsetting an option. (Patrick + Texier) +Files: src/option.c + +Patch 7.2.209 +Problem: For xxd setmode() is undefined on Cygwin. +Solution: Include io.h. (Dominique Pelle) +Files: src/xxd/xxd.c + +Patch 7.2.210 +Problem: When a file that is being edited has its timestamp updated outside + of Vim and ":checktime" is used still get a warning when writing + the file. (Matt Mueller) +Solution: Store the timestamp in b_mtime_read when the timestamp is the only + thing that changed. +Files: src/fileio.c + +Patch 7.2.211 +Problem: Memory leak when expanding a series of file names. +Solution: Use ga_clear_strings() instead of ga_clear(). +Files: src/misc1.c + +Patch 7.2.212 (extra) +Problem: Warnings for redefining SIG macros. +Solution: Don't define them if already defined. (Bjorn Winckler) +Files: src/os_mac.h + +Patch 7.2.213 +Problem: Warning for using vsprintf(). +Solution: Use vim_vsnprintf(). +Files: src/netbeans.c + +Patch 7.2.214 +Problem: Crash with complete function for user command. (Andy Wokula) +Solution: Avoid using a NULL pointer (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.2.215 +Problem: ml_get error when using ":vimgrep". +Solution: Load the memfile for the hidden buffer before putting it in a + window. Correct the order of splitting the window and filling + the window and buffer with data. +Files: src/fileio.c, src/proto/window.pro, src/quickfix.c, src/window.c + +Patch 7.2.216 +Problem: Two error messages have the same number E812. +Solution: Give one message a different number. +Files: runtime/doc/autocmd.txt, runtime/doc/if_mzsch.txt, src/if_mzsch.c + +Patch 7.2.217 +Problem: Running tests with valgrind doesn't work as advertised. +Solution: Fix the line in the Makefile. +Files: src/testdir/Makefile + +Patch 7.2.218 +Problem: Cannot build GTK with hangul_input feature. (Dominique Pelle) +Solution: Adjust #ifdef. (SungHyun Nam) +Files: src/gui.c + +Patch 7.2.219 (extra) +Problem: Photon GUI is outdated. +Solution: Updates for QNX 6.4.0. (Sean Boudreau) +Files: src/gui_photon.c + +Patch 7.2.220 (after 7.2.215) +Problem: a BufEnter autocommand that changes directory causes problems. + (Ajit Thakkar) +Solution: Disable autocommands when opening a hidden buffer in a window. +Files: src/fileio.c + +Patch 7.2.221 +Problem: X cut_buffer0 text is used as-is, it may be in the wrong encoding. +Solution: Convert between 'enc' and latin1. (James Vega) +Files: src/gui_gtk_x11.c, src/message.c, src/ops.c, src/proto/ui.pro, + src/ui.c + +Patch 7.2.222 +Problem: ":mksession" doesn't work properly with 'acd' set. +Solution: Make it work. (Yakov Lerner) +Files: src/ex_docmd.c + +Patch 7.2.223 +Problem: When a script is run with ":silent" it is not able to give warning + messages. +Solution: Add the ":unsilent" command. +Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c + +Patch 7.2.224 +Problem: Crash when using 'completefunc'. (Ingo Karkat) +Solution: Disallow entering edit() recursively when doing completion. +Files: src/edit.c + +Patch 7.2.225 +Problem: When using ":normal" a saved character may be executed. +Solution: Also store old_char when saving typeahead. +Files: src/getchar.c, src/structs.h + +Patch 7.2.226 +Problem: ml_get error after deleting the last line. (Xavier de Gaye) +Solution: When adjusting marks a callback may be invoked. Adjust the cursor + position before invoking deleted_lines_mark(). +Files: src/ex_cmds.c, src/ex_docmd.c, src/if_mzsch.c, src/if_python.c, + src/if_perl.xs, src/misc1.c + +Patch 7.2.227 +Problem: When using ":cd" in a script there is no way to track this. +Solution: Display the directory when 'verbose' is 5 or higher. +Files: src/ex_docmd.c + +Patch 7.2.228 +Problem: Cscope is limited to 8 connections. +Solution: Allocated the connection array to handle any number of + connections. (Dominique Pelle) +Files: runtime/doc/if_cscop.txt, src/if_cscope.h, src/if_cscope.c + +Patch 7.2.229 +Problem: Warning for shadowed variable. +Solution: Rename "wait" to "wait_time". +Files: src/os_unix.c + +Patch 7.2.230 +Problem: A few old lint-style ARGUSED comments. +Solution: Change to the new UNUSED style. +Files: src/getchar.c + +Patch 7.2.231 +Problem: Warning for unreachable code. +Solution: Add #ifdef. +Files: src/if_perl.xs + +Patch 7.2.232 +Problem: Cannot debug problems with being in a wrong directory. +Solution: When 'verbose' is 5 or higher report directory changes. +Files: src/os_unix.c, src/os_unix.h, src/proto/os_unix.pro + +Patch 7.2.233 (extra part of 7.2.232) +Problem: Cannot debug problems with being in a wrong directory. +Solution: When 'verbose' is 5 or higher report directory changes. +Files: src/os_msdos.c, src/os_mswin.c, src/os_riscos.c, src/os_mac.h + +Patch 7.2.234 +Problem: It is not possible to ignore file names without a suffix. +Solution: Use an empty entry in 'suffixes' for file names without a dot. +Files: runtime/doc/cmdline.txt, src/misc1.c + +Patch 7.2.235 +Problem: Using CTRL-O z= in Insert mode has a delay before redrawing. +Solution: Reset msg_didout and msg_scroll. +Files: src/misc1.c, src/spell.c + +Patch 7.2.236 +Problem: Mac: Compiling with Ruby doesn't always work. +Solution: In configure filter out the --arch argument (Bjorn Winckler) +Files: src/configure.in, src/auto/configure + +Patch 7.2.237 +Problem: Crash on exit when window icon not set. +Solution: Copy terminal name when using it for the icon name. +Files: src/os_unix.c + +Patch 7.2.238 +Problem: Leaking memory when setting term to "builtin_dumb". +Solution: Free memory when resetting term option t_Co. +Files: src/option.c, src/proto/option.pro, src/term.c + +Patch 7.2.239 +Problem: Using :diffpatch twice or when patching fails causes memory + corruption and/or a crash. (Bryan Venteicher) +Solution: Detect missing output file. Avoid using non-existing buffer. +Files: src/diff.c + +Patch 7.2.240 +Problem: Crash when using find/replace dialog repeatedly. (Michiel + Hartsuiker) +Solution: Avoid doing the operation while busy or recursively. Also refuse + replace when text is locked. +Files: src/gui.c + +Patch 7.2.241 +Problem: When using a combination of ":bufdo" and "doautoall" we may end up + in the wrong directory. (Ajit Thakkar) + Crash when triggering an autocommand in ":vimgrep". (Yukihiro + Nakadaira) +Solution: Clear w_localdir and globaldir when using the aucmd_win. + Use a separate flag to decide aucmd_win needs to be restored. +Files: src/fileio.c, src/globals.h, src/structs.h + +Patch 7.2.242 +Problem: Setting 'lazyredraw' causes the cursor column to be recomputed. + (Tom Link) +Solution: Only recompute the cursor column for a boolean option if changes + the cursor position. +Files: src/option.c + +Patch 7.2.243 +Problem: Memory leak when using :vimgrep and resizing. (Dominique Pelle) +Solution: Free memory for aucmd_win when resizing and don't allocate it + twice. +Files: src/screen.c + +Patch 7.2.244 +Problem: When 'enc' is utf-8 and 'fenc' is latin1, writing a non-latin1 + character gives a conversion error without any hint what is wrong. +Solution: When known add the line number to the error message. +Files: src/fileio.c + +Patch 7.2.245 +Problem: When 'enc' is "utf-16" and 'fenc' is "utf-8" writing a file does + conversion while none should be done. (Yukihiro Nakadaira) When + 'fenc' is empty the file is written as utf-8 instead of utf-16. +Solution: Do proper comparison of encodings, taking into account that all + Unicode values for 'enc' use utf-8 internally. +Files: src/fileio.c + +Patch 7.2.246 +Problem: Cscope home page link is wrong. +Solution: Update the URL. (Sergey Khorev) +Files: runtime/doc/if_cscop.txt + +Patch 7.2.247 +Problem: Mzscheme interface minor problem. +Solution: Better error message when build fails. (Sergey Khorev) +Files: src/if_mzsch.c + +Patch 7.2.248 (extra) +Problem: Mzscheme interface building minor problems. +Solution: Update Win32 makefiles. (Sergey Khorev) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak + +Patch 7.2.249 +Problem: The script to check .po files can't handle '%' in plural forms. +Solution: Remove "Plural-Forms:" from the checked string. +Files: src/po/check.vim + +Patch 7.2.250 (extra) +Problem: Possible buffer overflow. +Solution: Compute the remaining space. (Dominique Pelle) +Files: src/GvimExt/gvimext.cpp + +Patch 7.2.251 (after 7.2.044) +Problem: Compiler adds invalid memory bounds check. +Solution: Remove _FORTIFY_SOURCE=2 from CFLAGS. (Dominique Pelle) +Files: src/auto/configure, src/configure.in + +Patch 7.2.252 +Problem: When using a multi-byte 'enc' the 'iskeyword' option cannot + contain characters above 128. +Solution: Use mb_ptr2char_adv(). +Files: src/charset.c + +Patch 7.2.253 +Problem: Netbeans interface: getLength always uses current buffer. +Solution: Use ml_get_buf() instead of ml_get(). (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.2.254 +Problem: Compiler warning for assigning size_t to int. +Solution: Use size_t for the variable. (George Reilly) +Files: src/fileio.c + +Patch 7.2.255 (after 7.2.242) +Problem: Setting 'rightleft', 'linebreak' and 'wrap' may cause cursor to be + in wrong place. +Solution: Recompute the cursor column for these options. +Files: src/option.c + +Patch 7.2.256 +Problem: When 'guifont' was not set GTK font dialog doesn't have a default. + (Andreas Metzler) +Solution: Set default to DEFAULT_FONT. (James Vega) +Files: src/gui_gtk_x11.c + +Patch 7.2.257 +Problem: With GTK 2.17 lots of assertion error messages. +Solution: Remove check for static gravity. (Sebastian Droege) +Files: src/gui_gtk_f.c + +Patch 7.2.258 +Problem: v:beval_col and b:beval_text are wrong in UTF-8 text. (Tony + Mechelynck) +Solution: Use byte number instead of character number for the column. +Files: src/ui.c + +Patch 7.2.259 +Problem: exists() doesn't work properly for an empty aucmd group. +Solution: Change how au_exists() handles a missing pattern. Also add a + test for this. (Bob Hiestand) +Files: src/fileio.c, src/testdir/Makefile, src/testdir/test67.in, + src/testdir/test67.ok + +Patch 7.2.260 (extra part of 7.2.259) +Problem: exists() doesn't work properly for empty aucmd group. +Solution: Change how au_exists() handles a missing pattern. Also add a + test for this. (Bob Hiestand) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms + +Patch 7.2.261 +Problem: When deleting lines with a specific folding configuration E38 may + appear. (Shahaf) +Solution: When adjusting nested folds for deleted lines take into account + that they don't start at the top of the enclosing fold. +Files: src/fold.c + +Patch 7.2.262 +Problem: When using custom completion for a user command the pattern string + goes beyond the cursor position. (Hari Krishna Dara) +Solution: Truncate the string at the cursor position. +Files: src/ex_getln.c, src/structs.h + +Patch 7.2.263 +Problem: GTK2: when using the -geom argument with an offset from the right + edge and the size is smaller than the default, the Vim window is + not positioned properly. +Solution: Use another function to set the size. (Vitaly Minko) +Files: src/gui_gtk_x11.c + +Patch 7.2.264 +Problem: GTK2: When the Vim window is maximized setting 'columns' or + 'lines' doesn't work. +Solution: Unmaximize the window before setting the size. (Vitaly Minko) +Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro + +Patch 7.2.265 +Problem: When using ":silent broken" inside try/catch silency may persist. + (dr-dr xp) +Solution: Set msg_silent when there is an error and it's bigger than the + saved value. +Files: src/ex_docmd.c + +Patch 7.2.266 +Problem: When an expression abbreviation is triggered, the typed character + is unknown. +Solution: Make the typed character available in v:char. +Files: runtime/doc/map.txt, src/eval.c, src/getchar.c, src/ops.c, + src/proto/eval.pro + +Patch 7.2.267 +Problem: Crash for narrow window and double-width character. +Solution: Check for zero width. (Taro Muraoka) +Files: src/charset.c + +Patch 7.2.268 +Problem: Crash when using Python to set cursor beyond end of line. + (winterTTr) +Solution: Check the column to be valid. +Files: src/if_python.c + +Patch 7.2.269 +Problem: Many people struggle to find out why Vim startup is slow. +Solution: Add the --startuptime command line flag. +Files: runtime/doc/starting.txt, src/globals.h, src/feature.h, + src/main.c, src/macros.h + +Patch 7.2.270 +Problem: Using ":@c" when the c register contains a CR causes the rest to + be executed later. (Dexter Douglas) +Solution: Don't check for typeahead to start with ':', keep executing + commands until all added typeahead has been used. +Files: src/ex_docmd.c + +Patch 7.2.271 +Problem: Using freed memory in Motif GUI version when making a choice. +Solution: Free memory only after using it. (Dominique Pelle) +Files: src/gui_xmdlg.c + +Patch 7.2.272 +Problem: "_.svz" is not recognized as a swap file. (David M. Besonen) +Solution: Accept .s[uvw][a-z] as a swap file name extension. +Files: src/memline.c + +Patch 7.2.273 +Problem: Crash with redir to unknown array. (Christian Brabandt) +Solution: Don't assign the redir result when there was an error. +Files: src/eval.c + +Patch 7.2.274 +Problem: Syntax folding doesn't work properly when adding a comment. +Solution: Fix it and add a test. (Lech Lorens) +Files: src/fold.c, src/testdir/test45.in, src/testdir/test45.ok + +Patch 7.2.275 +Problem: Warning for unused argument and comparing signed and unsigned. +Solution: Add type cast. +Files: src/memline.c + +Patch 7.2.276 +Problem: Crash when setting 'isprint' to a small bullet. (Raul Coronado) +Solution: Check for the character to be < 256. Also make it possible to + specify a range of multi-byte characters. (Lech Lorens) +Files: src/charset.c + +Patch 7.2.277 +Problem: CTRL-Y in a diff'ed window may move the cursor outside of the + window. (Lech Lorens) +Solution: Limit the number of filler lines to the height of the window. + Don't reset filler lines to zero for an empty buffer. +Files: src/move.c + +Patch 7.2.278 +Problem: Using magic number in the folding code. +Solution: Use the defined MAX_LEVEL. +Files: src/fold.c + +Patch 7.2.279 +Problem: Invalid memory read with visual mode "r". (Dominique Pelle) +Solution: Make sure the cursor position is valid. Don't check the cursor + position but the position being used. And make sure we get the + right line. +Files: src/misc2.c, src/ops.c + +Patch 7.2.280 +Problem: A redraw in a custom statusline with %! may cause a crash. + (Yukihiro Nakadaira) +Solution: Make a copy of 'statusline'. Also fix typo in function name + redraw_custom_statusline. (partly by Dominique Pelle) +Files: src/screen.c + +Patch 7.2.281 +Problem: 'cursorcolumn' highlighting is wrong in diff mode. +Solution: Adjust the column computation. (Lech Lorens) +Files: src/screen.c + +Patch 7.2.282 +Problem: A fold can't be closed. +Solution: Initialize fd_small to MAYBE. (Lech Lorens) +Files: src/fold.c + +Patch 7.2.283 +Problem: Changing font while the window is maximized doesn't keep the + window maximized. +Solution: Recompute number of lines and columns after changing font. (James + Vega) +Files: src/gui_gtk_x11.c + +Patch 7.2.284 +Problem: When editing the same buffer in two windows, one with folding, + display may be wrong after changes. +Solution: Call set_topline() to take care of side effects. (Lech Lorens) +Files: src/misc1.c + +Patch 7.2.285 (after 7.2.169) +Problem: CTRL-U in Insert mode also deletes indent. (Andrey Voropaev) +Solution: Fix mistake made in patch 7.2.169. +Files: src/edit.c + +Patch 7.2.286 (after 7.2.269) +Problem: The "--startuptime=<file>" argument is not consistent with other + arguments. +Solution: Use "--startuptime <file>". Added the +startuptime feature. +Files: runtime/doc/eval.txt, runtime/doc/starting.txt, + runtime/doc/various.txt, src/eval.c, src/main.c, src/version.c + +Patch 7.2.287 +Problem: Warning from gcc 3.4 about uninitialized variable. +Solution: Move assignment outside of #ifdef. +Files: src/if_perl.xs + +Patch 7.2.288 +Problem: Python 2.6 pyconfig.h redefines macros. +Solution: Undefine the macros before including pyconfig.h. +Files: src/if_python.c + +Patch 7.2.289 +Problem: Checking wrong struct member. +Solution: Change tb_buf to tb_noremap. (Dominique Pelle) +Files: src/getchar.c + +Patch 7.2.290 +Problem: Not freeing memory from ":lmap", ":xmap" and ":menutranslate". +Solution: Free the memory when exiting. (Dominique Pelle) +Files: src/misc2.c + +Patch 7.2.291 +Problem: Reading uninitialised memory in arabic mode. +Solution: Use utfc_ptr2char_len() rather than utfc_ptr2char(). (Dominique + Pelle) +Files: src/screen.c + +Patch 7.2.292 +Problem: Block right-shift doesn't work properly with multi-byte encoding + and 'list' set. +Solution: Add the missing "else". (Lech Lorens) +Files: src/ops.c + +Patch 7.2.293 +Problem: When setting 'comments' option it may be used in a wrong way. +Solution: Don't increment after skipping over digits. (Yukihiro Nakadaira) +Files: src/misc1.c + +Patch 7.2.294 +Problem: When using TEMPDIRS dir name could get too long. +Solution: Overwrite tail instead of appending each time. Use mkdtemp() when + available. (James Vega) +Files: src/auto/configure, src/config.h.in, src/configure.in, src/fileio.c + +Patch 7.2.295 +Problem: When using map() on a List the index is not known. +Solution: Set v:key to the index. (Hari Krishna Dara) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.2.296 +Problem: Help message about startuptime is wrong. (Dominique Pelle) +Solution: Remove the equal sign. +Files: src/main.c + +Patch 7.2.297 +Problem: Reading freed memory when writing ":reg" output to a register. + (Dominique Pelle) +Solution: Skip the register being written to. +Files: src/ops.c + +Patch 7.2.298 +Problem: ":vimgrep" crashes when there is an autocommand that sets a + window-local variable. +Solution: Initialize the w: hashtab for re-use. (Yukihiro Nakadaira) +Files: src/fileio.c + +Patch 7.2.299 +Problem: Crash when comment middle is longer than start. +Solution: Fix size computation. (Lech Lorens) +Files: src/misc1.c + +Patch 7.2.300 +Problem: Vim doesn't close file descriptors when forking and executing + another command, e.g., ":shell". +Solution: Use FD_CLOEXEC when available. (James Vega) +Files: auto/configure, src/config.h.in, src/configure.in, + src/ex_cmdds2.c, src/fileio.c, src/memfile.c, src/memline.c + +Patch 7.2.301 +Problem: Formatting is wrong when 'tw' is set to a small value. +Solution: Fix it and add tests. Also fix behavior of "1" in 'fo'. (Yukihiro + Nakadaira) +Files: src/edit.c, src/testdir/Makefile, src/testdir/test68.in, + src/testdir/test68.ok, src/testdir/test69.in, + src/testdir/test69,ok + +Patch 7.2.302 (extra part of 7.2.301) +Problem: Formatting wrong with small 'tw' value. +Solution: Add build rules for tests. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms + +Patch 7.2.303 (after 7.2.294) +Problem: Can't build on MS-Windows. +Solution: Add #ifdef around vim_settempdir(). (James Vega) +Files: src/fileio.c + +Patch 7.2.304 +Problem: Compiler warning for bad pointer cast. +Solution: Use another variable for int pointer. +Files: src/ops.c + +Patch 7.2.305 +Problem: Recursively redrawing causes a memory leak. (Dominique Pelle) +Solution: Disallow recursive screen updating. +Files: src/screen.c + +Patch 7.2.306 +Problem: shellescape("10%%", 1) only escapes first %. (Christian Brabandt) +Solution: Don't copy the character after the escaped one. +Files: src/misc2.c + +Patch 7.2.307 +Problem: Crash with a very long syntax match statement. (Guy Gur Ari) +Solution: When the offset does not fit in the two bytes available give an + error instead of continuing with invalid pointers. +Files: src/regexp.c + +Patch 7.2.308 +Problem: When using a regexp in the "\=" expression of a substitute + command, submatch() returns empty strings for further lines. + (Clockwork Jam) +Solution: Save and restore the line number and line count when calling + reg_getline(). +Files: src/regexp.c + +Patch 7.2.309 (after 7.2.308) +Problem: Warning for missing function prototype. (Patrick Texier) +Solution: Add the prototype. +Files: src/regexp.c + +Patch 7.2.310 +Problem: When a filetype plugin in ~/.vim/ftdetect uses ":setfiletype" and + the file starts with a "# comment" it gets "conf" filetype. +Solution: Check for "conf" filetype after using ftdetect plugins. +Files: runtime/filetype.vim + +Patch 7.2.311 +Problem: Can't compile with FreeMiNT. +Solution: Change #ifdef for limits.h. (Alan Hourihane) +Files: src/fileio.c + +Patch 7.2.312 +Problem: iconv() returns an invalid character sequence when conversion + fails. It should return an empty string. (Yongwei Wu) +Solution: Be more strict about invalid characters in the input. +Files: src/mbyte.c + +Patch 7.2.313 +Problem: Command line completion doesn't work after "%:h" and similar. +Solution: Expand these items before doing the completion. +Files: src/ex_getln.c, src/misc1.c, src/proto/misc1.pro + +Patch 7.2.314 +Problem: Missing function in small build. +Solution: Always include concat_str. +Files: src/misc1.c + +Patch 7.2.315 +Problem: Python libs can't be found on 64 bit system. +Solution: Add lib64 to the list of directories. (Michael Henry) +Files: src/auto/configure, src/configure.in + +Patch 7.2.316 +Problem: May get multiple _FORTIFY_SOURCE arguments. (Tony Mechelynck) +Solution: First remove all these arguments and then add the one we want. + (Dominique Pelle) +Files: src/auto/configure, src/configure.in + +Patch 7.2.317 +Problem: Memory leak when adding a highlight group with unprintable + characters, resulting in E669. +Solution: Free the memory. And fix a few typos. (Dominique Pelle) +Files: src/syntax.c + +Patch 7.2.318 +Problem: Wrong locale value breaks floating point numbers for gvim. +Solution: Set the locale again after doing GUI inits. (Dominique Pelle) +Files: src/main.c + +Patch 7.2.319 +Problem: Motif: accessing freed memory when cancelling font dialog. +Solution: Destroy the widget only after accessing it. (Dominique Pelle) +Files: src/gui_xmdlg.c + +Patch 7.2.320 +Problem: Unused function in Mzscheme interface. +Solution: Remove the function and what depends on it. (Dominique Pelle) +Files: src/if_mzsch.c, src/proto/if_mzsch.pro + +Patch 7.2.321 +Problem: histadd() and searching with "*" fails to add entry to history + when it is empty. +Solution: Initialize the history. (Lech Lorens) +Files: src/eval.c, src/normal.c + +Patch 7.2.322 +Problem: Wrong indenting in virtual replace mode with CTRL-Y below a short + line. +Solution: Check for character to be NUL. (suggested by Lech Lorens) +Files: src/edit.c + +Patch 7.2.323 (extra) +Problem: Balloon evaluation crashes on Win64. +Solution: Change pointer types. (Sergey Khorev) +Files: src/gui_w32.c + +Patch 7.2.324 +Problem: A negative column argument in setpos() may cause a crash. +Solution: Check for invalid column number. (James Vega) +Files: src/eval.c, src/misc2.c + +Patch 7.2.325 +Problem: A stray "w" in the startup vimrc file causes the edited file to be + replaced with an empty file. (Stone Kang). +Solution: Do not write a buffer when it has never been loaded. +Files: src/fileio.c + +Patch 7.2.326 +Problem: Win32: $HOME doesn't work when %HOMEPATH% is not defined. +Solution: Use "\" for %HOMEPATH% when it is not defined. +Files: src/misc1.c + +Patch 7.2.327 +Problem: Unused functions in Workshop. +Solution: Add "#if 0" and minor cleanup. (Dominique Pelle) +Files: src/workshop.c, src/integration.c, src/integration.h + +Patch 7.2.328 +Problem: has("win64") does not return 1 on 64 bit MS-Windows version. +Solution: Also check for _WIN64 besides WIN64. +Files: src/eval.c + +Patch 7.2.329 +Problem: "g_" doesn't position cursor correctly when in Visual mode and + 'selection' is "exclusive". (Ben Fritz) +Solution: Call adjust_for_sel(). +Files: src/normal.c + +Patch 7.2.330 +Problem: Tables for Unicode case operators are outdated. +Solution: Add a Vim script for generating the tables. Include tables for + Unicode 5.2. +Files: runtime/tools/README.txt, runtime/tools/unicode.vim, src/mbyte.c + +Patch 7.2.331 +Problem: Can't interrupt "echo list" for a very long list. +Solution: Call line_breakcheck() in list_join(). +Files: src/eval.c + +Patch 7.2.332 +Problem: Crash when spell correcting triggers an autocommand that reloads + the buffer. +Solution: Make a copy of the line to be modified. (Dominique Pelle) +Files: src/spell.c + +Patch 7.2.333 +Problem: Warnings from static code analysis. +Solution: Small changes to various lines. (Dominique Pelle) +Files: src/buffer.c, src/edit.c, src/ex_getln.c, src/fileio.c, + src/if_cscope.c, src/netbeans.c, src/ops.c, src/quickfix.c, + src/syntax.c, src/ui.c + +Patch 7.2.334 +Problem: Postponing keys in Netbeans interface does not work properly. +Solution: Store the key string instead of the number. Avoid an infinite + loop. (Mostly by Xavier de Gaye) +Files: src/netbeans.c, src/proto/netbeans.pro + +Patch 7.2.335 +Problem: The CTRL-] command escapes too many characters. +Solution: Use a different list of characters to be escaped. (Sergey Khorev) +Files: src/normal.c + +Patch 7.2.336 +Problem: MzScheme interface can't evaluate an expression. +Solution: Add mzeval(). (Sergey Khorev) +Files: runtime/doc/eval.txt, runtime/doc/if_mzsch.txt, + runtime/doc/usr_41.txt, src/eval.c, src/if_mzsch.c, + src/proto/eval.pro, src/proto/if_mzsch.pro, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Makefile, src/testdir/main.aap, src/testdir/test1.in, + src/testdir/test70.in, src/testdir/test70.ok + +Patch 7.2.337 +Problem: The :compiler command doesn't function properly when invoked in a + function. +Solution: Add "g:" before "current_compiler". (Yukihiro Nakadaira) +Files: src/ex_cmds2.c + +Patch 7.2.338 (after 7.2.300) +Problem: Part of FD_CLOEXEC change is missing. +Solution: Include source file skipped because of typo. +Files: src/ex_cmds2.c + +Patch 7.2.339 (after 7.2.269) +Problem: Part of --startuptime patch is missing. +Solution: Add check for time_fd. +Files: src/ex_cmds2.c + +Patch 7.2.340 +Problem: Gcc warning for condition that can never be true. (James Vega) +Solution: Use start_lvl instead flp->lvl. +Files: src/fold.c + +Patch 7.2.341 +Problem: Popup menu wraps to next line when double-wide character doesn't + fit. (Jiang Ma) +Solution: Display a ">" instead. (Dominique Pelle) +Files: src/screen.c + +Patch 7.2.342 +Problem: Popup menu displayed wrong in 'rightleft' mode when there are + multi-byte characters. +Solution: Adjust the column computations. (Dominique Pelle) +Files: src/popupmnu.c + +Patch 7.2.343 (after 7.2.338) +Problem: Can't compile on Win32. +Solution: Insert the missing '|'. +Files: src/ex_cmds2.c + +Patch 7.2.344 (after 7.2.343) +Problem: Can't compile on some systems +Solution: Move the #ifdef outside of the mch_open macro. (Patrick Texier) +Files: src/ex_cmds2.c + +Patch 7.2.345 +Problem: Tab line is not updated when the value of 'bt' is changed. +Solution: Call redraw_titles(). (Lech Lorens) +Files: src/option.c + +Patch 7.2.346 +Problem: Repeating a command with @: causes a mapping to be applied twice. +Solution: Do not remap characters inserted in the typeahead buffer. (Kana + Natsuno) +Files: src/ops.c + +Patch 7.2.347 +Problem: Crash when executing <expr> mapping redefines that same mapping. +Solution: Save the values used before evaluating the expression. +Files: src/getchar.c + +Patch 7.2.348 (after 7.2.330) +Problem: Unicode double-width characters are not up-to date. +Solution: Produce the double-width table like the others. +Files: runtime/tools/unicode.vim, src/mbyte.c + +Patch 7.2.349 +Problem: CTRL-W gf doesn't put the new tab in the same place as "tab split" + and "gf". (Tony Mechelynck) +Solution: Store the tab number in cmdmod.tab. +Files: src/window.c + +Patch 7.2.350 +Problem: Win32: When changing font the window may jump from the secondary + to the primary screen. (Michael Wookey) +Solution: When the screen position was negative don't correct it to zero. +Files: src/gui.c + +Patch 7.2.351 (after 7.2.347) +Problem: Can't build with some compilers. +Solution: Move the #ifdef outside of a macro. Cleanup the code. +Files: src/getchar.c + +Patch 7.2.352 (extra) +Problem: Win64: Vim doesn't work when cross-compiled with MingW libraries. +Solution: Always return TRUE for the WM_NCCREATE message. (Andy Kittner) +Files: src/gui_w48.c + +Patch 7.2.353 +Problem: No command line completion for ":profile". +Solution: Complete the subcommand and file name. +Files: src/ex_docmd.c, src/ex_cmds2.c, src/ex_getln.c, + src/proto/ex_cmds2.pro, src/vim.h + +Patch 7.2.354 +Problem: Japanese single-width double-byte characters not handled correctly. +Solution: Put 0x8e in ScreenLines[] and the second byte in ScreenLines2[]. + (partly by Kikuchan) +Files: src/screen.c + +Patch 7.2.355 +Problem: Computing the cursor column in validate_cursor_col() is wrong when + line numbers are used and 'n' is not in 'cpoptions', causing the + popup menu to be positioned wrong. +Solution: Correctly use the offset. (partly by Dominique Pelle) +Files: src/move.c + +Patch 7.2.356 +Problem: When 'foldmethod' is changed not all folds are closed as expected. +Solution: In foldUpdate() correct the start position and reset fd_flags when + w_foldinvalid is set. (Lech Lorens) +Files: src/fold.c + +Patch 7.2.357 +Problem: When changing 'fileformat' from/to "mac" and there is a CR in the + text the display is wrong. +Solution: Redraw the text when 'fileformat' is changed. (Ben Schmidt) +Files: src/option.c + +Patch 7.2.358 +Problem: Compiler warnings on VMS. (Zoltan Arpadffy) +Solution: Pass array itself instead its address. Return a value. +Files: src/gui_gtk_x11.c, src/os_unix.c + +Patch 7.2.359 +Problem: Crash when using the Netbeans join command. +Solution: Make sure the ml_flush_line() function is not used recursively. + (Xavier de Gaye) +Files: src/memline.c + +Patch 7.2.360 +Problem: Ruby on MS-Windows: can't use sockets. +Solution: Call NtInitialize() during initialization. (Ariya Mizutani) +Files: src/if_ruby.c + +Patch 7.2.361 +Problem: Ruby 1.9 is not supported. +Solution: Add Ruby 1.9 support. (Masaki Suketa) +Files: src/Makefile, src/auto/configure, src/configure.in, src/if_ruby.c + +Patch 7.2.362 (extra, after 7.2.352) +Problem: Win64: Vim doesn't work when cross-compiled with MingW libraries. +Solution: Instead of handling WM_NCCREATE, create wide text area window + class if the parent window iw side. (Sergey Khorev) +Files: src/gui_w32.c, src/gui_w48.c + +Patch 7.2.363 +Problem: Can't dynamically load Perl 5.10. +Solution: Add the function Perl_croak_xs_usage. (Sergey Khorev) +Files: src/if_perl.xs + +Patch 7.2.364 (extra) +Problem: Can't build gvimext.dll on Win 7 x64 using MinGW (John Marriott) +Solution: Check if _MSC_VER is defined. (Andy Kittner) +Files: src/GvimExt/gvimext.h + +Patch 7.2.365 (extra) +Problem: MS-Windows with MingW: "File->Save As" does not work. (John + Marriott) +Solution: Correctly fill in structure size. (Andy Kittner) +Files: src/gui_w48.c + +Patch 7.2.366 +Problem: CTRL-B doesn't go back to the first line of the buffer. +Solution: Avoid an overflow when adding MAXCOL. +Files: src/move.c + +Patch 7.2.367 +Problem: "xxd -r -p" doesn't work as documented. +Solution: Skip white space. (James Vega) +Files: src/xxd/xxd.c + +Patch 7.2.368 (after 7.2.361) +Problem: Ruby interface: Appending line doesn't work. (Michael Henry) +Solution: Reverse check for NULL line. (James Vega) +Files: src/if_ruby.c + +Patch 7.2.369 +Problem: Error message is not easy to understand. +Solution: Add quotes. (SungHyun Nam) +Files: src/ex_cmds2.c + +Patch 7.2.370 (after 7.2.356) +Problem: A redraw may cause folds to be closed. +Solution: Revert part of the previous patch. Add a test. (Lech Lorens) +Files: src/diff.c, src/fold.c, src/option.c, src/testdir/test45.in, + src/testdir/test45.ok + +Patch 7.2.371 +Problem: Build problems on Tandem NonStop. +Solution: A few changes to #ifdefs (Joachim Schmitz) +Files: src/auto/configure, src/configure.in, src/config.h.in, src/vim.h, + src/if_cscope.c, src/osdef1.h.in, src/tag.c + +Patch 7.2.372 (extra) +Problem: Cross-compiling GvimExt and xxd doesn't work. +Solution: Change the build files. (Markus Heidelberg) +Files: src/INSTALLpc.txt, src/GvimExt/Make_ming.mak, src/Make_cyg.mak, + src/Make_ming.mak, src/xxd/Make_cyg.mak + +Patch 7.2.373 +Problem: Gcc 4.5 adds more error messages. (Chris Indy) +Solution: Update default 'errorformat'. +Files: src/option.h + +Patch 7.2.374 +Problem: Ruby eval() doesn't understand Vim types. +Solution: Add the vim_to_ruby() function. (George Gensure) +Files: src/eval.c, src/if_ruby.c + +Patch 7.2.375 +Problem: ml_get errors when using ":bprevious" in a BufEnter autocmd. + (Dominique Pelle) +Solution: Clear w_valid when entering another buffer. +Files: src/buffer.c + +Patch 7.2.376 +Problem: ml_get error when using SiSU syntax. (Nathan Thomas) +Solution: If the match ends below the last line move it to the end of the + last line. +Files: src/syntax.c + +Patch 7.2.377 (extra, after 7.2.372) +Problem: Misplaced assignment. Duplicate build line for gvimext.dll. +Solution: Move setting CROSS_COMPILE to before ifneq. Remove the wrong + build line. (Markus Heidelberg) +Files: src/Make_ming.mak + +Patch 7.2.378 +Problem: C function declaration indented too much. (Rui) +Solution: Don't see a line containing { or } as a type. (Matt Wozniski) +Files: src/misc1.c + +Patch 7.2.379 +Problem: 'eventignore' is set to an invalid value inside ":doau". (Antony + Scriven) +Solution: Don't include the leading comma when the option was empty. +Files: src/fileio.c + +Patch 7.2.380 (after 7.2.363) +Problem: Perl interface builds with 5.10.1 but not with 5.10.0. +Solution: Change the #ifdefs. (Sergey Khorev) +Files: src/if_perl.xs + +Patch 7.2.381 +Problem: No completion for :behave. +Solution: Add :behave completion. Minor related fixes. (Dominique Pelle) +Files: src/ex_docmd.c, src/ex_getln.c, src/proto/ex_docmd.pro, src/vim.h + +Patch 7.2.382 +Problem: Accessing freed memory when closing the cmdline window when + 'bufhide' is set to "wipe". +Solution: Check if the buffer still exists before invoking close_buffer() + (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.2.383 +Problem: Vim doesn't build cleanly with MSVC 2010. +Solution: Change a few types. (George Reilly) +Files: src/ex_cmds2.c, src/if_python.c, src/syntax.c + +Patch 7.2.384 (extra) +Problem: Vim doesn't build properly with MSVC 2010. +Solution: Add the nmake version to the build file. (George Reilly) +Files: src/Make_mvc.mak, src/testdir/Make_dos.mak + +Patch 7.2.385 +Problem: When in the command line window dragging status line only works + for last-but-one window. (Jean Johner) +Solution: Remove the code that disallows this. +Files: src/ui.c + +Patch 7.2.386 +Problem: Focus hack for KDE 3.1 causes problems for other window managers. +Solution: Remove the hack. (forwarded by Joel Bradshaw) +Files: src/gui_gtk.c + +Patch 7.2.387 +Problem: Ruby with MingW still doesn't build all versions. +Solution: More #ifdefs for the Ruby code. (Sergey Khorev) +Files: src/if_ruby.c + +Patch 7.2.388 (extra part of 7.2.387) +Problem: Ruby with MingW still doesn't build all versions. +Solution: Different approach to build file. (Sergey Khorev) +Files: src/Make_ming.mak + +Patch 7.2.389 +Problem: synIDattr() cannot return the font. +Solution: Support the "font" argument. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/eval.c, src/syntax.c + +Patch 7.2.390 +Problem: In some situations the popup menu can be displayed wrong. +Solution: Remove the popup menu if the cursor moved. (Lech Lorens) +Files: src/edit.c + +Patch 7.2.391 +Problem: Internal alloc(0) error when doing "CTRL-V $ c". (Martti Kuparinen) +Solution: Fix computations in getvcol(). (partly by Lech Lorens) +Files: src/charset.c, src/memline.c + +Patch 7.2.392 +Problem: Netbeans hangs reading from a socket at the maximum block size. +Solution: Use select() or poll(). (Xavier de Gaye) +Files: src/vim.h, src/os_unixx.h, src/if_xcmdsrv.c, src/netbeans.c + +Patch 7.2.393 +Problem: Mac: Can't build with different Xcode developer tools directory. +Solution: make "Developer" directory name configurable. (Rainer Muller) +Files: src/configure.in, src/auto/configure + +Patch 7.2.394 +Problem: .lzma and .xz files are not supported. +Solution: Recognize .lzma and .xz files so that they can be edited. +Files: runtime/plugin/gzip.vim + +Patch 7.2.395 +Problem: In help CTRL=] on g?g? escapes the ?, causing it to fail. (Tony + Mechelynck) +Solution: Don't escape ? for a help command. (Sergey Khorev) +Files: src/normal.c + +Patch 7.2.396 +Problem: Get E38 errors. (Dasn) +Solution: Set cursor to line 1 instead of 0. (Dominique Pelle) +Files: src/popupmnu.c + +Patch 7.2.397 +Problem: Redundant check for w_lines_valid. +Solution: Remove the if. (Lech Lorens) +Files: src/fold.c + +Patch 7.2.398 +Problem: When moving windows the cursor ends up in the wrong line. +Solution: Set the window width and height properly. (Lech Lorens) +Files: src/window.c + +Patch 7.2.399 (extra, after 7.2.388) +Problem: Cannot compile on MingW. +Solution: Move ifneq to separate line. (Vlad Sandrini, Dominique Pelle) +Files: src/Make_ming.mak + +Patch 7.2.400 (after 7.2.387) +Problem: Dynamic Ruby is not initialised properly for version 1.9.1. + Ruby cannot create strings from NULL. +Solution: Cleanup #ifdefs. Handle NULL like an empty string. Add + ruby_init_stack. (Sergey Khorev) +Files: src/if_ruby.c + +Patch 7.2.401 +Problem: ":e dir<Tab>" with 'wildmode' set to "list" doesn't highlight + directory names with a space. (Alexandre Provencio) +Solution: Remove the backslash before checking if the name is a directory. + (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.2.402 +Problem: This gives a #705 error: let X = function('haslocaldir') + let X = function('getcwd') +Solution: Don't give E705 when the name is found in the hashtab. (Sergey + Khorev) +Files: src/eval.c + +Patch 7.2.403 (after 7.2.400) +Problem: Compiler warning for pointer type. (Tony Mechelynck) +Solution: Move type cast to the right place. +Files: src/if_ruby.c + +Patch 7.2.404 +Problem: Pointers for composing characters are not properly initialized. +Solution: Compute the size of the pointer, not what it points to. (Yukihiro + Nakadaira) +Files: src/screen.c + +Patch 7.2.405 +Problem: When built with small features the matching text is not + highlighted for ":s/pat/repl/c". +Solution: Remove the #ifdef for IncSearch. (James Vega) +Files: src/syntax.c + +Patch 7.2.406 +Problem: Patch 7.2.119 introduces uninit mem read. (Dominique Pelle) +Solution: Only used ScreeenLinesC when ScreeenLinesUC is not zero. (Yukihiro + Nakadaira) Also clear ScreeenLinesC when allocating. +Files: src/screen.c + +Patch 7.2.407 +Problem: When using an expression in ":s" backslashes in the result are + dropped. (Sergey Goldgaber, Christian Brabandt) +Solution: Double backslashes. +Files: src/regexp.c + +Patch 7.2.408 +Problem: With ":g/the/s/foo/bar/" the '[ and '] marks can be set to a line + that was not changed. +Solution: Only set '[ and '] marks when a substitution was done. +Files: src/ex_cmds.c + +Patch 7.2.409 +Problem: Summary of number of substitutes is incorrect for ":folddo". (Jean + Johner) +Solution: Reset sub_nsubs and sub_nlines in global_exe(). +Files: src/ex_cmds.c + +Patch 7.2.410 +Problem: Highlighting directories for completion doesn't work properly. +Solution: Don't halve backslashes when not needed, expanded "~/". + (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.2.411 +Problem: When parsing 'cino' a comma isn't skipped properly. +Solution: Skip the comma. (Lech Lorens) +Files: src/misc1.c + +Patch 7.2.412 +Problem: [ or ] followed by mouse click doesn't work. +Solution: Reverse check for key being a mouse event. (Dominique Pelle) +Files: src/normal.c + +Patch 7.2.413 +Problem: Large file support is incorrect. +Solution: Add AC_SYS_LARGEFILE to configure. (James Vega) +Files: src/configure.in, src/config.h.in, src/auto/configure + +Patch 7.2.414 +Problem: CTRK-K <space> <space> does not produce 0xa0 as expected. (Tony + Mechelynck) +Solution: Remove the Unicode range 0xe000 - 0xefff from digraphs, these are + not valid characters. +Files: src/digraph.c + +Patch 7.2.415 +Problem: Win32: Can't open a remote file when starting Vim. +Solution: Don't invoke cygwin_conv_path() for URLs. (Tomoya Adachi) +Files: src/main.c + +Patch 7.2.416 +Problem: Logtalk.dict is not installed. +Solution: Add it to the install target. (Markus Heidelberg) +Files: src/Makefile + +Patch 7.2.417 +Problem: When 'shell' has an argument with a slash then 'shellpipe' is not + set properly. (Britton Kerin) +Solution: Assume there are no spaces in the path, arguments follow. +Files: src/option.c + +Patch 7.2.418 +Problem: Vim tries to set the background or foreground color in a terminal + to -1. (Graywh) Happens with ":hi Normal ctermbg=NONE". +Solution: When resetting the foreground or background color don't set the + color, let the clear screen code do that. +Files: src/syntax.c + +Patch 7.2.419 +Problem: Memory leak in Motif when clicking on "Search Vim Help". +Solution: Free string returned by XmTextGetString(). (Dominique Pelle) +Files: src/gui_motif.c + +Patch 7.2.420 +Problem: ":argedit" does not accept "++enc=utf8" as documented. (Dominique + Pelle) +Solution: Add the ARGOPT flag to ":argedit". +Files: src/ex_cmds.h + +Patch 7.2.421 +Problem: Folds are sometimes not updated properly and there is no way to + force an update. +Solution: Make "zx" and "zX" recompute folds (suggested by Christian + Brabandt) +Files: src/normal.c + +Patch 7.2.422 +Problem: May get E763 when using spell dictionaries. +Solution: Avoid utf-8 case folded character to be truncated to 8 bits and + differ from latin1. (Dominique Pelle) +Files: src/spell.c + +Patch 7.2.423 +Problem: Crash when assigning s: to variable. (Yukihiro Nakadaira) +Solution: Make ga_scripts contain pointer to scriptvar_T instead of + scriptvar_T itself. (Dominique Pelle) +Files: src/eval.c + +Patch 7.2.424 +Problem: ":colorscheme" without an argument doesn't do anything. +Solution: Make it echo the current color scheme name. (partly by Christian + Brabandt) +Files: runtime/doc/syntax.txt, src/ex_cmds.h, src/ex_docmd.c + +Patch 7.2.425 +Problem: Some compilers complain about fourth EX() argument. +Solution: Add cast to long_u. +Files: src/ex_cmds.h + +Patch 7.2.426 +Problem: Commas in 'langmap' are not always handled correctly. +Solution: Require commas to be backslash escaped. (James Vega) +Files: src/option.c + +Patch 7.2.427 +Problem: The swapfile is created using the destination of a symlink, but + recovery doesn't follow symlinks. +Solution: When recovering, resolve symlinks. (James Vega) +Files: src/memline.c + +Patch 7.2.428 +Problem: Using setqflist([]) to clear the error list doesn't work properly. +Solution: Set qf_nonevalid to TRUE when appropriate. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.2.429 +Problem: A file that exists but access is denied may result in a "new file" + message. E.g. when its directory is unreadable. +Solution: Specifically check for ENOENT to decide a file doesn't exist. + (partly by James Vega) +Files: src/fileio.c + +Patch 7.2.430 +Problem: The ++bad argument is handled wrong, resulting in an invalid + memory access. +Solution: Use the bad_char field only for the replacement character, add + bad_char_idx to store the position. (Dominique Pelle) +Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c + +Patch 7.2.431 +Problem: ":amenu" moves the cursor when in Insert mode. +Solution: Use CTRL-\ CTRL-O instead of CTRL-O. (Christian Brabandt) +Files: src/menu.c + +Patch 7.2.432 +Problem: When menus are translated they can only be found by the translated + name. That makes ":emenu" difficult to use. +Solution: Store the untranslated name and use it for completion and :emenu. + (Liang Peng (Bezetek James), Edward L. Fox) +Files: src/menu.c, src/structs.h + +Patch 7.2.433 +Problem: Can't use cscope with QuickFixCmdPre and QuickFixCmdPost. +Solution: Add cscope support for these autocmd events. (Bryan Venteicher) +Files: runtime/doc/autocmd.txt, src/if_cscope.c + +Patch 7.2.434 (after 7.2.432) +Problem: Compilation fails without the multi-lang feature. +Solution: Add #ifdefs. (John Marriott) +Files: src/menu.c + +Patch 7.2.435 (after 7.2.430) +Problem: Crash when using bad_char_idx uninitialized. (Patrick Texier) +Solution: Don't use bad_char_idx, reproduce the ++bad argument from bad_char. +Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c + +Patch 7.2.436 +Problem: Reproducible crash in syntax HL. (George Reilly, Dominique Pelle) +Solution: Make sst_stacksize an int instead of short. (Dominique Pelle) +Files: src/structs.h + +Patch 7.2.437 (after 7.2.407) +Problem: When "\\\n" appears in the expression result the \n doesn't result + in a line break. (Andy Wokula) +Solution: Also replace a \n after a backslash into \r. +Files: src/regexp.c + +Patch 7.2.438 (after 7.2.427) +Problem: "vim -r" crashes. +Solution: Don't use NULL pointer argument. +Files: src/memline.c + +Patch 7.2.439 +Problem: Invalid memory access when doing thesaurus completion and + 'infercase' is set. +Solution: Use the minimal length of completed word and replacement. + (Dominique Pelle) +Files: src/edit.c + +Patch 7.2.440 +Problem: Calling a function through a funcref, where the function deletes + the funcref, leads to an invalid memory access. +Solution: Make a copy of the function name. (Lech Lorens) +Files: src/eval.c, src/testdir/test34.in, src/testdir/test34.ok + +Patch 7.2.441 +Problem: When using ":earlier" undo information may be wrong. +Solution: When changing alternate branches also adjust b_u_oldhead. +Files: src/undo.c + +Patch 7.2.442 (after 7.2.201) +Problem: Copy/paste with OpenOffice doesn't work. +Solution: Do not offer the HTML target when it is not supported. (James + Vega) +Files: src/gui_gtk_x11.c, src/option.c, src/proto/gui_gtk_x11.pro + +Patch 7.2.443 +Problem: Using taglist() on a tag file with duplicate fields generates an + internal error. (Peter Odding) +Solution: Check for duplicate field names. +Files: src/eval.c, src/proto/eval.pro, src/tag.c + +Patch 7.2.444 (after 7.2.442) +Problem: Can't build with GTK 1, gtk_selection_clear_targets() is not + available. (Patrick Texier) +Solution: Don't change the targets for GTK 1, set them once. +Files: src/gui_gtk_x11.c, src/option.c + +Patch 7.2.445 +Problem: Crash when using undo/redo and a FileChangedRO autocmd event that + reloads the buffer. (Dominique Pelle) +Solution: Do not allow autocommands while performing and undo or redo. +Files: src/misc1.c, src/undo.c + +Patch 7.2.446 +Problem: Crash in GUI when closing the last window in a tabpage. (ryo7000) +Solution: Remove the tabpage from the list before freeing the window. +Files: src/window.c + +When writing a file, switching tab pages and selecting a word the file write +message would be displayed again. This happened in Insert mode and with +'cmdheight' set to 2. + +When using ":lang" to set a locale that uses a comma for decimal separator and +using GTK floating point numbers stop working. Use gtk_disable_setlocale(). +(James Vega) + +"g8" didn't produce the right value on a NUL. (Dominique Pelle) + +Use BASEMODLIBS instead of MODLIBS for Python configuration to pick up the +right compiler flags. (Michael Bienia) + +Window title was not updated after dropping a file on Vim. (Hari G) + +synstack() did not return anything when just past the end of the line. Useful +when using the cursor position in Insert mode. + +When entering a digraph or special character after a line that fits the window +the '?' or '^' on the next line is not redrawn. (Ian Kelling) + +Composing characters in |:s| substitute text were dropped. + +|exists()| was causing an autoload script to be loaded. + +Filter out -pthread for cproto. + +Make CTRL-L in command line mode respect 'ignorecase' and 'smartcase'. (Martin +Toft) + +Spell menu moved the cursor, causing Copy not to work. Spell replacement +didn't work in 'compatible' mode. + +Various small fixes from Dominique Pelle. + +Fix that :mksession may generate "2argu" even though there is no such +argument. (Peter Odding) + +Fixes for time in clipboard request. Also fix ownership. (David Fries) + +Fixed completion of file names with '%' and '*'. + +Fixed MSVC makefile use of /Wp64 flag. + +Correct use of long instead of off_t for file size. (James Vega) + +Add a few #ifdefs to exclude functions that are not used. (Dominique Pelle) + +Remove old and unused method to allocate memory for undo. + +Fix definition of UINT_PTR for 64 bit systems. + +Some versions of Ruby redefine rb_str_new2 to rb_str_new_cstr. + +Window title not updated after file dropped. + +Fixed crash for ":find" completion, might also happen in other path expansion +usage. + +When 'searchhl' causes a hang make CTRL-C disable 'searchhl'. + +When resetting both 'title' and 'icon' the title would be set after a shell +command. + +Reset 'title' and 'icon' in test47 to avoid the xterm title getting messed up. + +Fix for compiler warning about function prototype in pty.c. + +Added 'window' to the options window. + +Fixed: errors for allocating zero bytes when profiling an empty function. + +Remove -arch flag from build flags for Perl. (Bjorn Wickler) + +Fix 'autochdir' not showing up in :options window. (Dominique Pelle) + +Fix: test 69 didn't work on MS-Windows. Test 72 beeped too often. + +Avoid illegal memory access in spell suggestion. (Dominique Pelle) +Fix: crash in spell checking with a 0x300 character. + +Avoid that running tests changes viminfo. + +Fix: changing case of a character removed combining characters. +Fixed: CTRL-R in Insert mode doesn't insert composing characters. + +Added the WOW64 flag to OLE registration, for 64 bit Windows systems. + +Various fixes for coverity warnings. + +Fix compile warnings, esp. for 64-bit systems. (Mike Williams) + +Fix: :redir to a dictionary that is changed before ":redir END" causes a +memory access error. + +Fix: terminal title not properly restored when there are multi-byte +characters. (partly by James Vega) + +Set 'wrapscan' when checking the .po files. (Mike Williams) + +Win32: Put quotes around the gvim.exe path for the "Open with" menu entry. + +On MS-Windows sometimes files with number 4913 or higher are left behind. + +'suffixesadd' was used for finding tags file. + +Removed unused code. + +Improved positioning of combining characters in GTK. + +Made test 11 pass when there is no gzip program. (John Beckett) + +Changed readfile() to ignore byte order marks, unless in binary mode. + +On MS-Windows completion of shell commands didn't work. + +An unprintable multi-byte character at the start of the screen line caused the +following text to be drawn at the wrong position. + +Got ml_get errors when using undo with 'virtualedit'. + +Call gui_mch_update() before triggering GuiEnter autocmd. (Ron Aaron) + +Unix "make install" installed a few Amiga .info files. + +Disallow setting 'ambiwidth' to "double" when 'listchars' or 'fillchars' +contains a character that would become double width. + +Set 'wrapscan' when checking the .po files. (Mike Williams) + +Fixed: using expression in command line may cause a crash. + +Avoid warnings from the clang compiler. (Dominique Pelle) + +Fix: Include wchar.h in charset.c for towupper(). + +Fixed: Using ":read file" in an empty buffer when 'compatible' is set caused +an error. Was caused by patch 7.2.132. + +Make the references to features in the help more consistent. (Sylvain Hitier) + +============================================================================== +VERSION 7.4 *version-7.4* *version7.4* + +This section is about improvements made between version 7.3 and 7.4. + +This release has hundreds of bug fixes and there are a few new features. The +most notable new features are: + +- New regexp engine |new-regexp-engine| +- A more pythonic Python interface |better-python-interface| + + +New regexp engine *new-regexp-engine* +----------------- + +What is now called the "old" regexp engine uses a backtracking algorithm. It +tries to match the pattern with the text in one way, and when that fails it +goes back and tries another way. This works fine for simple patterns, but +complex patterns can be very slow on longer text. + +The new engine uses a state machine. It tries all possible alternatives at +the current character and stores the possible states of the pattern. This is +a bit slower for simple patterns, but much faster for complex patterns and +long text. + +Most notably, syntax highlighting for Javascript and XML files with long lines +is now working fine. Previously Vim could get stuck. + +More information here: |two-engines| + + +Better Python interface *better-python-interface* +----------------------- + +Added |python-bindeval| function. Unlike |python-eval| this one returns +|python-Dictionary|, |python-List| and |python-Function| objects for +dictionaries lists and functions respectively in place of their Python +built-in equivalents (or None if we are talking about function references). + For simple types this function returns Python built-in types and not only +Python `str()` like |python-eval| does. On Python 3 it will return `bytes()` +objects in place of `str()` ones avoiding possibility of UnicodeDecodeError. + Interface of new objects mimics standard Python `dict()` and `list()` +interfaces to some extent. Extent will be improved in the future. + +Added special |python-vars| objects also available for |python-buffer| and +|python-window|. They ease access to VimL variables from Python. + +Now you no longer need to alter `sys.path` to import your module: special +hooks are responsible for importing from {rtp}/python2, {rtp}/python3 and +{rtp}/pythonx directories (for Python 2, Python 3 and both respectively). +See |python-special-path|. + +Added possibility to work with |tabpage|s through |python-tabpage| object. + +Added automatic conversion of Vim errors and exceptions to Python +exceptions. + +Changed the behavior of the |python-buffers| object: it now uses buffer numbers +as keys in place of the index of the buffer in the internal buffer list. +This should not break anything as the only way to get this index was +iterating over |python-buffers|. + +Added |:pydo| and |:py3do| commands. + +Added the |pyeval()| and |py3eval()| functions. + +Now in all places which previously accepted `str()` objects, `str()` and +`unicode()` (Python 2) or `bytes()` and `str()` (Python 3) are accepted. + +|python-window| has gained `.col` and `.row` attributes that are currently +the only way to get internal window positions. + +Added or fixed support for `dir()` in Vim Python objects. + + +Changed *changed-7.4* +------- + +Old Python versions (≤2.2) are no longer supported. Building with them did +not work anyway. + +Options: + Added ability to automatically save the selection into the system + clipboard when using non-GUI version of Vim (autoselectplus in + 'clipboard'). Also added ability to use the system clipboard as + default register (previously only primary selection could be used). + (Ivan Krasilnikov, Christian Brabandt, Bram Moolenaar) + + Added a special 'shiftwidth' value that makes 'sw' follow 'tabstop'. + As indenting via 'indentexpr' became tricky |shiftwidth()| function + was added. Also added equivalent special value to 'softtabstop' + option. (Christian Brabandt, so8res) + + Show absolute number in number column when 'relativenumber' option is + on. Now there are four combinations with 'number' and + 'relativenumber'. (Christian Brabandt) + +Commands: + |:diffoff| now saves the local values of some settings and restores + them in place of blindly resetting them to the defaults. (Christian + Brabandt) + +Other: + Lua interface now also uses userdata binded to Vim structures. (Taro + Muraoka, Luis Carvalho) + + glob() and autocommand patterns used to work with the undocumented + "\{n,m\}" item from a regexp. "\{" is now used for a literal "{", as + this is normal in shell file patterns. Now used "\\\{n,m\}" to get + "\{n,m}" in the regexp pattern. + +Added *added-7.4* +----- + +Various syntax, indent and other plugins were added. + +Added support for |Lists| and |Dictionaries| in |viminfo|. (Christian +Brabandt) + +Functions: + Bitwise functions: |and()|, |or()|, |invert()|, |xor()|. + + Added |luaeval()| function. (Taro Muraoka, Luis Carvalho) + + Added |sha256()| function. (Tyru, Hirohito Higashi) + + Added |wildmenumode()| function. (Christian Brabandt) + + Debugging functions: |screenattr()|, |screenchar()|, |screencol()|, + |screenrow()|. (Simon Ruderich, Bram Moolenaar) + + Added ability to use |Dictionary-function|s for |sort()|ing, via + optional third argument. (Nikolay Pavlov) + + Added special |expand()| argument that expands to the current line + number. + + Made it possible to force |char2nr()| always give unicode codepoints + regardless of current encoding. (Yasuhiro Matsumoto) + + Made it possible for functions generating file list generate |List| + and not NL-separated string. (e.g. |glob()|, |expand()|) (Christian + Brabandt) + + Functions that obtain variables from the specific window, tabpage or + buffer scope dictionary can now return specified default value in + place of empty string in case variable is not found. (|gettabvar()|, + |getwinvar()|, |getbufvar()|) (Shougo Matsushita, Hirohito Higashi) + +Autocommands: + Added |InsertCharPre| event launched before inserting character. + (Jakson A. Aquino) + + Added |CompleteDone| event launched after finishing completion in + insert mode. (idea by Florian Klein) + + Added |QuitPre| event launched when commands that can either close Vim + or only some window(s) are launched. + + Added |TextChanged| and |TextChangedI| events launched when text is + changed. + +Commands: + |:syntime| command useful for debugging. + + Made it possible to remove all signs from the current buffer using + |:sign-unplace|. (Christian Brabandt) + + Added |:language| autocompletion. (Dominique Pelle) + + Added more |:command-complete| completion types: |:behave| suboptions, + color schemes, compilers, |:cscope| suboptions, files from 'path', + |:history| suboptions, locale names, |:syntime| suboptions, user + names. (Dominique Pelle) + + Added |:map-nowait| creating mapping which when having lhs that is the + prefix of another mapping’s lhs will not allow Vim to wait for user to + type more characters to resolve ambiguity, forcing Vim to take the + shorter alternative: one with <nowait>. + +Options: + Made it possible to ignore case when completing: 'wildignorecase'. + + Added ability to delete comment leader when using |J| by `j` flag in + 'formatoptions' (|fo-table|). (Lech Lorens) + + Added ability to control indentation inside namespaces: |cino-N|. + (Konstantin Lepa) + + Added ability to control alignment inside `if` condition separately + from alignment inside function arguments: |cino-k|. (Lech Lorens) + +Other: + Improved support for cmd.exe. (Ben Fritz, Bram Moolenaar) + + Added |v:windowid| variable containing current window number in GUI + Vim. (Christian J. Robinson, Lech Lorens) + + Added rxvt-unicode and SGR mouse support. (Yiding Jia, Hayaki Saito) + + +All changes in 7.4 *fixed-7.4* +------------------ + +Patch 7.3.001 +Problem: When editing "src/main.c" and 'path' set to "./proto", + ":find e<C-D" shows ./proto/eval.pro instead of eval.pro. +Solution: Check for path separator when comparing names. (Nazri Ramliy) +Files: src/misc1.c + +Patch 7.3.002 +Problem: ":find" completion doesn't work when halfway an environment + variable. (Dominique Pelle) +Solution: Only use in-path completion when expanding file names. (Nazri + Ramliy) +Files: src/ex_docmd.c + +Patch 7.3.003 +Problem: Crash with specific BufWritePost autocmd. (Peter Odding) +Solution: Don't free the quickfix title twice. (Lech Lorens) +Files: src/quickfix.c + +Patch 7.3.004 +Problem: Crash when using very long regexp. (Peter Odding) +Solution: Reset reg_toolong. (Carlo Teubner) +Files: src/regexp.c + +Patch 7.3.005 +Problem: Crash when using undotree(). (Christian Brabandt) +Solution: Increase the list reference count. Add a test for undotree() + (Lech Lorens) +Files: src/eval.c, src/testdir/Makefile, src/testdir/test61.in + +Patch 7.3.006 +Problem: Can't build some multi-byte code with C89. +Solution: Move code to after declarations. (Joachim Schmitz) +Files: src/mbyte.c, src/spell.c + +Patch 7.3.007 +Problem: Python code defines global "buffer". Re-implements a grow-array. +Solution: Use a grow-array instead of coding the same functionality. Handle + out-of-memory situation properly. +Files: src/if_py_both.h + +Patch 7.3.008 +Problem: 'cursorbind' is kept in places where 'scrollbind' is reset. +Solution: Reset 'cursorbind'. +Files: src/buffer.c, src/diff.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/if_cscope.c, src/macros.h, + src/quickfix.c, src/search.c, src/tag.c, src/window.c + +Patch 7.3.009 +Problem: Win32: Crash on Windows when using a bad argument for strftime(). + (Christian Brabandt) +Solution: Use the bad_param_handler(). (Mike Williams) +Files: src/os_win32.c + +Patch 7.3.010 +Problem: Mac GUI: Missing break statements. +Solution: Add the break statements. (Dominique Pelle) +Files: src/gui_mac.c + +Patch 7.3.011 +Problem: X11 clipboard doesn't work in Athena/Motif GUI. First selection + after a shell command doesn't work. +Solution: When using the GUI use XtLastTimestampProcessed() instead of + changing a property. (partly by Toni Ronkko) + When executing a shell command disown the selection. +Files: src/ui.c, src/os_unix.c + +Patch 7.3.012 +Problem: Problems building with MingW. +Solution: Adjust the MingW makefiles. (Jon Maken) +Files: src/Make_ming.mak, src/GvimExt/Make_ming.mak + +Patch 7.3.013 +Problem: Dynamic loading with Ruby doesn't work for 1.9.2. +Solution: Handle rb_str2cstr differently. Also support dynamic loading on + Unix. (Jon Maken) +Files: src/if_ruby.c + +Patch 7.3.014 +Problem: Ending a line in a backslash inside an ":append" or ":insert" + command in Ex mode doesn't work properly. (Ray Frush) +Solution: Halve the number of backslashes, only insert a NUL after an odd + number of backslashes. +Files: src/ex_getln.c + +Patch 7.3.015 +Problem: Test is using error message that no longer exists. +Solution: Change E106 to E121. (Dominique Pelle) +Files: src/testdir/test49.vim + +Patch 7.3.016 +Problem: Netbeans doesn't work under Athena. +Solution: Support Athena, just like Motif. (Xavier de Gaye) +Files: runtime/doc/netbeans.txt, src/gui.c, src/main.c, src/netbeans.c + +Patch 7.3.017 +Problem: smatch reports errors. +Solution: Fix the reported errors. (Dominique Pelle) +Files: src/spell.c, src/syntax.c + +Patch 7.3.018 (after 7.3.012) +Problem: Missing argument to windres in MingW makefiles. +Solution: Add the argument that was wrapped in the patch. (Jon Maken) +Files: src/Make_ming.mak, src/GvimExt/Make_ming.mak + +Patch 7.3.019 +Problem: ":nbstart" can fail silently. +Solution: Give an error when netbeans is not supported by the GUI. (Xavier + de Gaye) +Files: src/netbeans.c + +Patch 7.3.020 +Problem: Cursor position wrong when joining multiple lines and + 'formatoptions' contains "a". (Moshe Kamensky) +Solution: Adjust cursor position for skipped indent. (Carlo Teubner) +Files: src/ops.c, src/testdir/test68.in, src/testdir/test68.ok + +Patch 7.3.021 +Problem: Conflict for defining Boolean in Mac header files. +Solution: Define NO_X11_INCLUDES. (Rainer Muller) +Files: src/os_macosx.m, src/vim.h + +Patch 7.3.022 +Problem: When opening a new window the 'spellcapcheck' option is cleared. +Solution: Copy the correct option value. (Christian Brabandt) +Files: src/option.c + +Patch 7.3.023 +Problem: External program may hang when it tries to write to the tty. +Solution: Don't close the slave tty until after the child exits. (Nikola + Knezevic) +Files: src/os_unix.c + +Patch 7.3.024 +Problem: Named signs do not use a negative number as intended. +Solution: Fix the numbering of named signs. (Xavier de Gaye) +Files: src/ex_cmds.c + +Patch 7.3.025 +Problem: ":mksession" does not square brackets escape file name properly. +Solution: Improve escaping of file names. (partly by Peter Odding) +Files: src/ex_docmd.c + +Patch 7.3.026 +Problem: CTRL-] in a help file doesn't always work. (Tony Mechelynck) +Solution: Don't escape special characters. (Carlo Teubner) +Files: src/normal.c + +Patch 7.3.027 +Problem: Opening a file on a network share is very slow. +Solution: When fixing file name case append "\*" to directory, server and + network share names. (David Anderson, John Beckett) +Files: src/os_win32.c + +Patch 7.3.028 (after 7.3.024) +Problem: Signs don't show up. (Charles Campbell) +Solution: Don't use negative numbers. Also assign a number to signs that + have a name of all digits to avoid using a sign number twice. +Files: src/ex_cmds.c + +Patch 7.3.029 +Problem: ":sort n" sorts lines without a number as number zero. (Beeyawned) +Solution: Make lines without a number sort before lines with a number. Also + fix sorting negative numbers. +Files: src/ex_cmds.c, src/testdir/test57.in, src/testdir/test57.ok + +Patch 7.3.030 +Problem: Cannot store Dict and List in viminfo file. +Solution: Add support for this. (Christian Brabandt) +Files: runtime/doc/options.txt, src/eval.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/main.aap, src/testdir/test74.in, + src/testdir/test74.ok + +Patch 7.3.031 +Problem: Can't pass the X window ID to another application. +Solution: Add v:windowid. (Christian J. Robinson, Lech Lorens) +Files: runtime/doc/eval.txt, src/eval.c, src/gui.c, src/vim.h, + src/os_unix.c + +Patch 7.3.032 +Problem: maparg() doesn't return the flags, such as <buffer>, <script>, + <silent>. These are needed to save and restore a mapping. +Solution: Improve maparg(). (also by Christian Brabandt) +Files: runtime/doc/eval.txt, src/eval.c, src/getchar.c, src/gui_w48.c, + src/message.c, src/proto/getchar.pro, src/proto/message.pro, + src/structs.h src/testdir/test75.in, src/testdir/test75.ok + +Patch 7.3.033 (after 7.3.032) +Problem: Can't build without FEAT_LOCALMAP. +Solution: Add an #ifdef. (John Marriott) +Files: src/getchar.c + +Patch 7.3.034 +Problem: Win32: may be loading .dll from the wrong directory. +Solution: Go to the Vim executable directory when opening a library. +Files: src/gui_w32.c, src/if_lua.c, src/if_mzsch.c, src/if_perl.xs, + src/if_python.c, src/if_python3.c, src/if_ruby.c, src/mbyte.c, + src/os_mswin.c, src/os_win32.c, src/proto/os_win32.pro + +Patch 7.3.035 (after 7.3.034) +Problem: Stray semicolon after if statement. (Hari G) +Solution: Remove the semicolon. +Files: src/os_win32.c + +Patch 7.3.036 +Problem: Win32 GUI: When building without menus, the font for dialogs and + tab page headers also changes. +Solution: Define USE_SYSMENU_FONT always. (Harig G.) +Files: src/gui_w32.c + +Patch 7.3.037 +Problem: Compiler warnings for loss of data. (Mike Williams) +Solution: Add type casts. +Files: src/if_py_both.h, src/getchar.c, src/os_win32.c + +Patch 7.3.038 +Problem: v:windowid isn't set on MS-Windows. +Solution: Set it to the window handle. (Chris Sutcliffe) +Files: runtime/doc/eval.txt, src/gui_w32.c + +Patch 7.3.039 +Problem: Crash when using skk.vim plugin. +Solution: Get length of expression evaluation result only after checking for + NULL. (Noriaki Yagi, Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.3.040 +Problem: Comparing strings while ignoring case goes beyond end of the + string when there are illegal bytes. (Dominique Pelle) +Solution: Explicitly check for illegal bytes. +Files: src/mbyte.c + +Patch 7.3.041 +Problem: Compiler warning for accessing mediumVersion. (Tony Mechelynck) +Solution: Use the pointer instead of the array itself. (Dominique Pelle) +Files: src/version.c + +Patch 7.3.042 +Problem: No spell highlighting when re-using an empty buffer. +Solution: Clear the spell checking info only when clearing the options for a + buffer. (James Vega) +Files: src/buffer.c + +Patch 7.3.043 +Problem: Can't load Ruby dynamically on Unix. +Solution: Adjust the configure script. (James Vega) +Files: src/Makefile, src/config.h.in, src/configure.in, + src/auto/configure, src/if_ruby.c + +Patch 7.3.044 +Problem: The preview window opened by the popup menu is larger than + specified with 'previewheight'. (Benjamin Haskell) +Solution: Use 'previewheight' if it's set and smaller. +Files: src/popupmnu.c + +Patch 7.3.045 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize the variable always. +Files: src/getchar.c + +Patch 7.3.046 (after 7.3.043) +Problem: Can't build Ruby on MS-Windows. +Solution: Add #ifdef, don't use WIN3264 before including vim.h. +Files: src/if_ruby.c + +Patch 7.3.047 (after 7.3.032) +Problem: Missing makefile updates for test 75. +Solution: Update the makefiles. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Makefile, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.048 +Problem: ":earlier 1f" doesn't work after loading undo file. +Solution: Set b_u_save_nr_cur when loading an undo file. (Christian + Brabandt) + Fix only showing time in ":undolist" +Files: src/undo.c + +Patch 7.3.049 +Problem: PLT has rebranded their Scheme to Racket. +Solution: Add support for Racket 5.x. (Sergey Khorev) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, + src/auto/configure, src/configure.in, src/if_mzsch.c + +Patch 7.3.050 +Problem: The link script is clumsy. +Solution: Use the --as-needed linker option if available. (Kirill A. + Shutemov) +Files: src/Makefile, src/auto/configure, src/config.mk.in, + src/configure.in, src/link.sh + +Patch 7.3.051 +Problem: Crash when $PATH is empty. +Solution: Check for vim_getenv() returning NULL. (Yasuhiro Matsumoto) +Files: src/ex_getln.c, src/os_win32.c + +Patch 7.3.052 +Problem: When 'completefunc' opens a new window all kinds of errors follow. + (Xavier Deguillard) +Solution: When 'completefunc' goes to another window or buffer and when it + deletes text abort completion. Add a test for 'completefunc'. +Files: src/edit.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test76.in, src/testdir/test76.ok + +Patch 7.3.053 +Problem: complete() function doesn't reset complete direction. Can't use + an empty string in the list of matches. +Solution: Set compl_direction to FORWARD. Add "empty" key to allow empty + words. (Kikuchan) +Files: src/edit.c + +Patch 7.3.054 +Problem: Can define a user command for :Print, but it doesn't work. (Aaron + Thoma) +Solution: Let user command :Print overrule the builtin command (Christian + Brabandt) Disallow :X and :Next as a user defined command. +Files: src/ex_docmd.c + +Patch 7.3.055 +Problem: Recursively nested lists and dictionaries cause a near-endless + loop when comparing them with a copy. (ZyX) +Solution: Limit recursiveness in a way that non-recursive structures can + still be nested very deep. +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.3.056 +Problem: "getline" argument in do_cmdline() shadows global. +Solution: Rename the argument. +Files: src/ex_docmd.c + +Patch 7.3.057 +Problem: Segfault with command line abbreviation. (Randy Morris) +Solution: Don't retrigger the abbreviation when abandoning the command line. + Continue editing the command line after the error. +Files: src/ex_getln.c + +Patch 7.3.058 +Problem: Error "code converter not found" when loading Ruby script. +Solution: Load Gem module. (Yasuhiro Matsumoto) +Files: src/if_ruby.c + +Patch 7.3.059 +Problem: Netbeans: Problem with recursively handling messages for Athena + and Motif. +Solution: Call netbeans_parse_messages() in the main loop, like it's done + for GTK. (Xavier de Gaye) +Files: src/gui_x11.c, src/netbeans.c + +Patch 7.3.060 +Problem: Netbeans: crash when socket is disconnected unexpectedly. +Solution: Don't cleanup when a read fails, put a message in the queue and + disconnect later. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.3.061 +Problem: Remote ":drop" does not respect 'autochdir'. (Peter Odding) +Solution: Don't restore the directory when 'autochdir' is set. (Benjamin + Fritz) +Files: src/main.c + +Patch 7.3.062 +Problem: Python doesn't work properly when installed in another directory + than expected. +Solution: Figure out home directory in configure and use Py_SetPythonHome() + at runtime. (Roland Puntaier) +Files: src/configure.in, src/auto/configure, src/if_python.c, + src/if_python3.c + +Patch 7.3.063 +Problem: Win32: Running a filter command makes Vim lose focus. +Solution: Use SW_SHOWMINNOACTIVE instead of SW_SHOWMINIMIZED. (Hong Xu) +Files: src/os_win32.c + +Patch 7.3.064 +Problem: Win32: ":dis +" shows nothing, but "+p does insert text. +Solution: Display the * register, since that's what will be inserted. + (Christian Brabandt) +Files: src/globals.h, src/ops.c + +Patch 7.3.065 +Problem: Can't get current line number in a source file. +Solution: Add the <slnum> item, similar to <sfile>. +Files: src/ex_docmd.c + +Patch 7.3.066 +Problem: Crash when changing to another window while in a :vimgrep command. + (Christian Brabandt) +Solution: When wiping out the dummy before, remove it from aucmd_win. +Files: src/quickfix.c + +Patch 7.3.067 (after 7.3.058) +Problem: Ruby: Init_prelude is not always available. +Solution: Remove use of Init_prelude. (Yasuhiro Matsumoto) +Files: src/if_ruby.c + +Patch 7.3.068 +Problem: Using freed memory when doing ":saveas" and an autocommand sets + 'autochdir'. (Kevin Klement) +Solution: Get the value of fname again after executing autocommands. +Files: src/ex_cmds.c + +Patch 7.3.069 +Problem: GTK: pressing Enter in inputdialog() doesn't work like clicking OK + as documented. +Solution: call gtk_entry_set_activates_default(). (Britton Kerin) +Files: src/gui_gtk.c + +Patch 7.3.070 +Problem: Can set environment variables in the sandbox, could be abused. +Solution: Disallow it. +Files: src/eval.c + +Patch 7.3.071 +Problem: Editing a file in a window that's in diff mode resets 'diff' + but not cursor binding. +Solution: Reset cursor binding in two more places. +Files: src/quickfix.c, src/option.c + +Patch 7.3.072 +Problem: Can't complete file names while ignoring case. +Solution: Add 'wildignorecase'. +Files: src/ex_docmd.c, src/ex_getln.c, src/misc1.c, src/option.c, + src/option.h, src/vim.h, src/runtime/options.txt + +Patch 7.3.073 +Problem: Double free memory when netbeans command follows DETACH. +Solution: Only free the node when owned. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.3.074 +Problem: Can't use the "+ register like "* for yank and put. +Solution: Add "unnamedplus" to the 'clipboard' option. (Ivan Krasilnikov) +Files: runtime/doc/options.txt, src/eval.c, src/globals.h, src/ops.c, + src/option.c + +Patch 7.3.075 (after 7.3.072) +Problem: Missing part of 'wildignorecase' +Solution: Also adjust expand() +Files: src/eval.c + +Patch 7.3.076 +Problem: Clang warnings for dead code. +Solution: Remove it. (Carlo Teubner) +Files: src/gui_gtk.c, src/if_ruby.c, src/misc2.c, src/netbeans.c, + src/spell.c + +Patch 7.3.077 +Problem: When updating crypt of swapfile fails there is no error message. + (Carlo Teubner) +Solution: Add the error message. +Files: src/memline.c + +Patch 7.3.078 +Problem: Warning for unused variable. +Solution: Adjust #ifdefs. +Files: src/ops.c + +Patch 7.3.079 +Problem: Duplicate lines in makefile. +Solution: Remove the lines. (Hong Xu) +Files: src/Make_mvc.mak + +Patch 7.3.080 +Problem: Spell doesn't work on VMS. +Solution: Use different file names. (Zoltan Bartos, Zoltan Arpadffy) +Files: src/spell.c + +Patch 7.3.081 +Problem: Non-printable characters in 'statusline' cause trouble. (ZyX) +Solution: Use transstr(). (partly by Caio Ariede) +Files: src/screen.c + +Patch 7.3.082 +Problem: Leaking file descriptor when hostname doesn't exist. +Solution: Remove old debugging lines. +Files: src/netbeans.c + +Patch 7.3.083 +Problem: When a read() or write() is interrupted by a signal it fails. +Solution: Add read_eintr() and write_eintr(). +Files: src/fileio.c, src/proto/fileio.pro, src/memfile.c, src/memline.c, + src/os_unix.c, src/undo.c, src/vim.h + +Patch 7.3.084 +Problem: When splitting the window, the new one scrolls with the cursor at + the top. +Solution: Compute w_fraction before setting the new height. +Files: src/window.c + +Patch 7.3.085 (after 7.3.083) +Problem: Inconsistency with preproc symbols. void * computation. +Solution: Include vimio.h from vim.h. Add type cast. +Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/fileio.c, + src/if_cscope.c, src/if_sniff.c, src/main.c, src/memfile.c, + src/memline.c, src/netbeans.c, src/os_msdos.c, src/os_mswin.c, + src/os_win16.c, src/os_win32.c, src/spell.c, src/tag.c, + src/undo.c, src/vim.h + +Patch 7.3.086 +Problem: When using a mapping with an expression and there was no count, + v:count has the value of the previous command. (ZyX) +Solution: Also set v:count and v:count1 before getting the character that + could be a command or a count. +Files: src/normal.c + +Patch 7.3.087 +Problem: EINTR is not always defined. +Solution: Include errno.h in vim.h. +Files: src/if_cscope.c, src/if_tcl.c, src/integration.c, src/memline.c, + src/os_mswin.c, src/os_win16.c, src/os_win32.c, src/vim.h, + src/workshop.c + +Patch 7.3.088 +Problem: Ruby can't load Gems sometimes, may cause a crash. +Solution: Undefine off_t. Use ruby_process_options(). (Yasuhiro Matsumoto) +Files: src/if_ruby.c + +Patch 7.3.089 +Problem: Compiler warning on 64 bit MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/netbeans.c + +Patch 7.3.090 +Problem: Wrong help text for Cscope. +Solution: Adjust the help text for "t". (Dominique Pelle) +Files: src/if_cscope.c + +Patch 7.3.091 +Problem: "vim -w foo" writes special key codes for removed escape + sequences. (Josh Triplett) +Solution: Don't write K_IGNORE codes. +Files: src/getchar.c, src/misc1.c, src/term.c, src/vim.h + +Patch 7.3.092 +Problem: Resizing the window when exiting. +Solution: Don't resize when exiting. +Files: src/term.c + +Patch 7.3.093 +Problem: New DLL dependencies in MingW with gcc 4.5.0. +Solution: Add STATIC_STDCPLUS, LDFLAGS and split up WINDRES. (Guopeng Wen) +Files: src/GvimExt/Make_ming.mak, src/Make_ming.mak + +Patch 7.3.094 +Problem: Using abs() requires type cast to int. +Solution: Use labs() so that the value remains long. (Hong Xu) +Files: src/screen.c + +Patch 7.3.095 +Problem: Win32: In Chinese tear-off menu doesn't work. (Weasley) +Solution: Use menu_name_equal(). (Alex Jakushev) +Files: src/menu.c + +Patch 7.3.096 +Problem: "gvim -nb" is not interruptible. Leaking file descriptor on + netbeans connection error. +Solution: Check for CTRL-C typed. Free file descriptor. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.3.097 +Problem: Using ":call" inside "if 0" does not see that a function returns a + Dict and gives error for "." as string concatenation. +Solution: Use eval0() to skip over the expression. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.098 +Problem: Function that ignores error still causes called_emsg to be set. + E.g. when expand() fails the status line is disabled. +Solution: Move check for emsg_not_now() up. (James Vega) +Files: src/message.c + +Patch 7.3.099 +Problem: Crash when splitting a window with zero height. (Yukihiro + Nakadaira) +Solution: Don't set the fraction in a window with zero height. +Files: src/window.c + +Patch 7.3.100 +Problem: When using :normal v:count isn't set. +Solution: Call normal_cmd() with toplevel set to TRUE. +Files: src/ex_docmd.c + +Patch 7.3.101 +Problem: ino_t defined with wrong size. +Solution: Move including auto/config.h before other includes. (Marius + Geminas) +Files: src/if_ruby.c, src/if_lua.c + +Patch 7.3.102 +Problem: When using ":make", typing the next command and then getting the + "reload" prompt the next command is (partly) eaten by the reload + prompt. +Solution: Accept ':' as a special character at the reload prompt to accept + the default choice and execute the command. +Files: src/eval.c, src/fileio.c, src/gui.c, src/gui_xmdlg.c, + src/memline.c, src/message.c, src/proto/message.pro, + src/gui_athena.c, src/gui_gtk.c, src/gui_mac.c, src/gui_motif.c, + src/gui_photon.c, src/gui_w16.c, src/gui_w32.c, src/os_mswin.c + src/proto/gui_athena.pro, src/proto/gui_gtk.pro, + src/proto/gui_mac.pro, src/proto/gui_motif.pro, + src/proto/gui_photon.pro, src/proto/gui_w16.pro, + src/proto/gui_w32.pro + +Patch 7.3.103 +Problem: Changing 'fileformat' and then using ":w" in an empty file sets + the 'modified' option. +Solution: In unchanged() don't ignore 'ff' for an empty file. +Files: src/misc1.c, src/option.c, src/proto/option.pro, src/undo.c + +Patch 7.3.104 +Problem: Conceal: using Tab for cchar causes problems. (ZyX) +Solution: Do not accept a control character for cchar. +Files: src/syntax.c + +Patch 7.3.105 +Problem: Can't get the value of "b:changedtick" with getbufvar(). +Solution: Make it work. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.106 +Problem: When 'cursorbind' is set another window may scroll unexpectedly + when 'scrollbind' is also set. (Xavier Wang) +Solution: Don't call update_topline() if 'scrollbind' is set. +Files: src/move.c + +Patch 7.3.107 +Problem: Year number for :undolist can be confused with month or day. +Solution: Change "%y" to "%Y". +Files: src/undo.c + +Patch 7.3.108 +Problem: Useless check for NULL when calling vim_free(). +Solution: Remove the check. (Dominique Pelle) +Files: src/eval.c, src/ex_cmds.c, src/os_win32.c + +Patch 7.3.109 +Problem: Processing new Esperanto spell file fails and crashes Vim. + (Dominique Pelle) +Solution: When running out of memory give an error. Handle '?' in + COMPOUNDRULE properly. +Files: src/spell.c + +Patch 7.3.110 +Problem: The "nbsp" item in 'listchars' isn't used for ":list". +Solution: Make it work. (Christian Brabandt) +Files: src/message.c + +Patch 7.3.111 (after 7.3.100) +Problem: Executing a :normal command in 'statusline' evaluation causes the + cursor to move. (Dominique Pelle) +Solution: When updating the cursor for 'cursorbind' allow the cursor beyond + the end of the line. When evaluating 'statusline' temporarily + reset 'cursorbind'. +Files: src/move.c, src/screen.c + +Patch 7.3.112 +Problem: Setting 'statusline' to "%!'asdf%' reads uninitialized memory. +Solution: Check for NUL after %. +Files: src/buffer.c + +Patch 7.3.113 +Problem: Windows: Fall back directory for creating temp file is wrong. +Solution: Use "." instead of empty string. (Hong Xu) +Files: src/fileio.c + +Patch 7.3.114 +Problem: Potential problem in initialization when giving an error message + early. +Solution: Initialize 'verbosefile' empty. (Ben Schmidt) +Files: src/option.h + +Patch 7.3.115 +Problem: Vim can crash when tmpnam() returns NULL. +Solution: Check for NULL. (Hong Xu) +Files: src/fileio.c + +Patch 7.3.116 +Problem: 'cursorline' is displayed too short when there are concealed + characters and 'list' is set. (Dennis Preiser) +Solution: Check for 'cursorline' when 'list' is set. (Christian Brabandt) +Files: src/screen.c + +Patch 7.3.117 +Problem: On some systems --as-needed does not work, because the "tinfo" + library is included indirectly from "ncurses". (Charles Campbell) +Solution: In configure prefer using "tinfo" instead of "ncurses". +Files: src/configure.in, src/auto/configure + +Patch 7.3.118 +Problem: Ruby uses SIGVTALARM which makes Vim exit. (Alec Tica) +Solution: Ignore SIGVTALARM. (Dominique Pelle) +Files: src/os_unix.c + +Patch 7.3.119 +Problem: Build problem on Mac. (Nicholas Stallard) +Solution: Use "extern" instead of "EXTERN" for p_vfile. +Files: src/option.h + +Patch 7.3.120 +Problem: The message for an existing swap file is too long to fit in a 25 + line terminal. +Solution: Make the message shorter. (Chad Miller) +Files: src/memline.c + +Patch 7.3.121 +Problem: Complicated 'statusline' causes a crash. (Christian Brabandt) +Solution: Check that the number of items is not too big. +Files: src/buffer.c + +Patch 7.3.122 +Problem: Having auto/config.mk in the repository causes problems. +Solution: Remove auto/config.mk from the distribution. In the toplevel + Makefile copy it from the "dist" file. +Files: Makefile, src/Makefile, src/auto/config.mk + +Patch 7.3.123 +Problem: ml_get error when executing register being recorded into, deleting + lines and 'conceallevel' is set. (ZyX) +Solution: Don't redraw a line for concealing when it doesn't exist. +Files: src/main.c + +Patch 7.3.124 +Problem: When writing a file in binary mode it may be missing the final EOL + if a file previously read was missing the EOL. (Kevin Goodsell) +Solution: Move the write_no_eol_lnum into the buffer struct. +Files: src/structs.h, src/fileio.c, src/globals.h, src/os_unix.c + +Patch 7.3.125 +Problem: MSVC: Problem with quotes in link argument. +Solution: Escape backslashes and quotes. (Weasley) +Files: src/Make_mvc.mak + +Patch 7.3.126 +Problem: Compiler warning for signed pointer. +Solution: Use unsigned int argument for sscanf(). +Files: src/blowfish.c + +Patch 7.3.127 +Problem: Compiler complains about comma. +Solution: Remove comma after last enum element. +Files: src/ex_cmds2.c + +Patch 7.3.128 +Problem: Another compiler warning for signed pointer. +Solution: Use unsigned int argument for sscanf(). +Files: src/mark.c + +Patch 7.3.129 +Problem: Using integer like a boolean. +Solution: Nicer check for integer being non-zero. +Files: src/tag.c + +Patch 7.3.130 +Problem: Variable misplaced in #ifdef. +Solution: Move clipboard_event_time outside of #ifdef. +Files: src/gui_gtk_x11.c + +Patch 7.3.131 +Problem: Including errno.h too often. +Solution: Don't include errno.h in Unix header file. +Files: src/os_unix.h + +Patch 7.3.132 +Problem: C++ style comments. +Solution: Change to C comments. +Files: src/if_python3.c + +Patch 7.3.133 +Problem: When using encryption it's not clear what method was used. +Solution: In the file message show "blowfish" when using blowfish. +Files: src/fileio.c + +Patch 7.3.134 +Problem: Drag-n-drop doesn't work in KDE Dolphin. +Solution: Add GDK_ACTION_MOVE flag. (Florian Degner) +Files: src/gui_gtk_x11.c + +Patch 7.3.135 +Problem: When there is no previous substitute pattern, the previous search + pattern is used. The other way around doesn't work. +Solution: When there is no previous search pattern, use the previous + substitute pattern if possible. (Christian Brabandt) +Files: src/search.c + +Patch 7.3.136 +Problem: Duplicate include of assert.h. +Solution: Remove it. +Files: src/if_cscope.c + +Patch 7.3.137 (after 7.3.091) +Problem: When 'lazyredraw' is set the screen may not be updated. (Ivan + Krasilnikov) +Solution: Call update_screen() before waiting for input. +Files: src/misc1.c, src/getchar.c + +Patch 7.3.138 +Problem: ":com" changes the multi-byte text of :echo. (Dimitar Dimitrov) +Solution: Search for K_SPECIAL as a byte, not a character. (Ben Schmidt) +Files: src/ex_docmd.c + +Patch 7.3.139 (after 7.3.137) +Problem: When 'lazyredraw' is set ":ver" output can't be read. +Solution: Don't redraw the screen when at a prompt or command line. +Files: src/getchar.c, src/message.c, src/misc1.c + +Patch 7.3.140 +Problem: Crash when drawing the "$" at end-of-line for list mode just after + the window border and 'cursorline' is set. +Solution: Don't check for 'cursorline'. (Quentin Carbonneaux) +Files: src/screen.c + +Patch 7.3.141 +Problem: When a key code is not set get a confusing error message. +Solution: Change the error message to say the key code is not set. +Files: src/option.c, runtime/doc/options.txt + +Patch 7.3.142 +Problem: Python stdout doesn't have a flush() method, causing an import to + fail. +Solution: Add a dummy flush() method. (Tobias Columbus) +Files: src/if_py_both.h + +Patch 7.3.143 +Problem: Memfile is not tested sufficiently. Looking up blocks in a + memfile is slow when there are many blocks. +Solution: Add high level test and unittest. Adjust the number of hash + buckets to the number of blocks. (Ivan Krasilnikov) +Files: Filelist, src/Makefile, src/main.c, src/memfile.c, + src/memfile_test.c src/structs.h src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mak, + src/testdir/Makefile, src/testdir/test77.in, src/testdir/test77.ok + +Patch 7.3.144 +Problem: Crash with ":python help(dir)". (Kearn Holliday) +Solution: Fix the way the type is set on objects. (Tobias Columbus) +Files: src/if_python.c + +Patch 7.3.145 (after 7.3.144) +Problem: Can't build with Python dynamically loading. +Solution: Add dll_PyType_Ready. +Files: src/if_python.c + +Patch 7.3.146 +Problem: It's possible to assign to a read-only member of a dict. + It's possible to create a global variable "0". (ZyX) + It's possible to add a v: variable with ":let v:.name = 1". +Solution: Add check for dict item being read-only. + Check the name of g: variables. + Disallow adding v: variables. +Files: src/eval.c + +Patch 7.3.147 (after 7.3.143) +Problem: Can't build on HP-UX. +Solution: Remove an unnecessary backslash. (John Marriott) +Files: src/Makefile + +Patch 7.3.148 +Problem: A syntax file with a huge number of items or clusters causes weird + behavior, a hang or a crash. (Yukihiro Nakadaira) +Solution: Check running out of IDs. (partly by Ben Schmidt) +Files: src/syntax.c + +Patch 7.3.149 +Problem: The cursor disappears after the processing of the 'setDot' + netbeans command when vim runs in a terminal. +Solution: Show the cursor after a screen update. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.3.150 +Problem: readline() does not return the last line when the NL is missing. + (Hong Xu) +Solution: When at the end of the file Also check for a previous line. +Files: src/eval.c + +Patch 7.3.151 (after 7.3.074) +Problem: When "unnamedplus" is in 'clipboard' the selection is sometimes + also copied to the star register. +Solution: Avoid copy to the star register when undesired. (James Vega) +Files: src/ops.c + +Patch 7.3.152 +Problem: Xxd does not check for errors from library functions. +Solution: Add error checks. (Florian Zumbiehl) +Files: src/xxd/xxd.c + +Patch 7.3.153 (after 7.3.152) +Problem: Compiler warning for ambiguous else, missing prototype. +Solution: Add braces. (Dominique Pelle) Add prototype for die(). +Files: src/xxd/xxd.c + +Patch 7.3.154 (after 7.3.148) +Problem: Can't compile with tiny features. (Tony Mechelynck) +Solution: Move #define outside of #ifdef. +Files: src/syntax.c + +Patch 7.3.155 +Problem: Crash when using map(), filter() and remove() on v:. (ZyX) + Also for extend(). (Yukihiro Nakadaira) +Solution: Mark v: as locked. Also correct locking error messages. +Files: src/eval.c + +Patch 7.3.156 +Problem: Tty names possibly left unterminated. +Solution: Use vim_strncpy() instead of strncpy(). +Files: src/pty.c + +Patch 7.3.157 +Problem: Superfluous assignment. +Solution: Remove assignment. +Files: src/misc1.c + +Patch 7.3.158 +Problem: Might use uninitialized memory in C indenting. +Solution: Init arrays to empty. +Files: src/misc1.c + +Patch 7.3.159 +Problem: Using uninitialized pointer when out of memory. +Solution: Check for NULL return value. +Files: src/mbyte.c + +Patch 7.3.160 +Problem: Unsafe string copying. +Solution: Use vim_strncpy() instead of strcpy(). Use vim_strcat() instead + of strcat(). +Files: src/buffer.c, src/ex_docmd.c, src/hardcopy.c, src/menu.c, + src/misc1.c, src/misc2.c, src/proto/misc2.pro, src/netbeans.c, + src/os_unix.c, src/spell.c, src/syntax.c, src/tag.c + +Patch 7.3.161 +Problem: Items on the stack may be too big. +Solution: Make items static or allocate them. +Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/fileio.c, src/hardcopy.c, src/quickfix.c, src/main.c, + src/netbeans.c, src/spell.c, src/tag.c, src/vim.h, src/xxd/xxd.c + +Patch 7.3.162 +Problem: No error message when assigning to a list with an index out of + range. (Yukihiro Nakadaira) +Solution: Add the error message. +Files: src/eval.c + +Patch 7.3.163 +Problem: For the default of 'shellpipe' "mksh" and "pdksh" are not + recognized. +Solution: Recognize these shell names. +Files: src/option.c + +Patch 7.3.164 +Problem: C-indenting: a preprocessor statement confuses detection of a + function declaration. +Solution: Ignore preprocessor lines. (Lech Lorens) Also recognize the style + to put a comma before the argument name. +Files: src/misc1.c, testdir/test3.in, testdir/test3.ok + +Patch 7.3.165 +Problem: ":find" completion does not escape spaces in a directory name. + (Isz) +Solution: Add backslashes for EXPAND_FILES_IN_PATH. (Carlo Teubner) +Files: src/ex_getln.c + +Patch 7.3.166 +Problem: Buffer on the stack may be too big +Solution: Allocate the space. +Files: src/option.c + +Patch 7.3.167 +Problem: When using the internal grep QuickFixCmdPost is not triggered. + (Yukihiro Nakadaira) +Solution: Change the place where autocommands are triggered. +Files: src/quickfix.c + +Patch 7.3.168 +Problem: When the second argument of input() contains a CR the text up to + that is used without asking the user. (Yasuhiro Matsumoto) +Solution: Change CR, NL and ESC in the text to a space. +Files: src/getchar.c + +Patch 7.3.169 +Problem: Freeing memory already freed, warning from static code analyzer. +Solution: Initialize pointers to NULL, correct use of "mustfree". (partly by + Dominique Pelle) +Files: src/mis1.c + +Patch 7.3.170 +Problem: VMS Makefile for testing was not updated for test77. +Solution: Add test77 to the Makefile. +Files: src/testdir/Make_vms.mms + +Patch 7.3.171 +Problem: When the clipboard isn't supported: ":yank*" gives a confusing + error message. +Solution: Specifically mention that the register name is invalid. + (Jean-Rene David) +Files: runtime/doc/change.txt, src/ex_docmd.c, src/globals.h + +Patch 7.3.172 +Problem: MS-Windows: rename() might delete the file if the name differs but + it's actually the same file. +Solution: Use the file handle to check if it's the same file. (Yukihiro + Nakadaira) +Files: src/if_cscope.c, src/fileio.c, src/os_win32.c, + src/proto/os_win32.pro, src/vim.h + +Patch 7.3.173 +Problem: After using setqflist() to make the quickfix list empty ":cwindow" + may open the window anyway. Also after ":vimgrep". +Solution: Correctly check whether the list is empty. (Ingo Karkat) +Files: src/quickfix.c + +Patch 7.3.174 +Problem: When Exuberant ctags binary is exctags it's not found. +Solution: Add configure check for exctags. (Hong Xu) +Files: src/configure.in, src/auto/configure + +Patch 7.3.175 +Problem: When 'colorcolumn' is set locally to a window, ":new" opens a + window with the same highlighting but 'colorcolumn' is empty. + (Tyru) +Solution: Call check_colorcolumn() after clearing and copying options. + (Christian Brabandt) +Files: src/buffer.c + +Patch 7.3.176 +Problem: Ruby linking doesn't work properly on Mac OS X. +Solution: Fix the configure check for Ruby. (Bjorn Winckler) +Files: src/configure.in, src/auto/configure + +Patch 7.3.177 +Problem: MS-Windows: mkdir() doesn't work properly when 'encoding' is + "utf-8". +Solution: Convert to utf-16. (Yukihiro Nakadaira) +Files: src/os_win32.c, src/os_win32.h, src/proto/os_win32.pro + +Patch 7.3.178 +Problem: C-indent doesn't handle code right after { correctly. +Solution: Fix detecting unterminated line. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.179 +Problem: C-indent doesn't handle colon in string correctly. +Solution: Skip the string. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.180 +Problem: When both a middle part of 'comments' matches and an end part, the + middle part was used erroneously. +Solution: After finding the middle part match continue looking for a better + end part match. (partly by Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.181 +Problem: When repeating the insert of CTRL-V or a digraph the display may + not be updated correctly. +Solution: Only call edit_unputchar() after edit_putchar(). (Lech Lorens) +Files: src/edit.c + +Patch 7.3.182 (after 7.3.180) +Problem: Compiler warning for uninitialized variable. +Solution: Add dummy initializer. +Files: src/misc1.c + +Patch 7.3.183 (after 7.3.174) +Problem: When Exuberant ctags binary is exuberant-ctags it's not found. +Solution: Add configure check for exuberant-ctags. +Files: src/configure.in, src/auto/configure + +Patch 7.3.184 +Problem: Static code analysis errors in riscOS. +Solution: Make buffer size bigger. (Dominique Pelle) +Files: src/gui_riscos.c + +Patch 7.3.185 +Problem: ":windo g/pattern/q" closes windows and reports "N more lines". + (Tim Chase) +Solution: Remember what buffer ":global" started in. (Jean-Rene David) +Files: src/ex_cmds.c + +Patch 7.3.186 +Problem: When 'clipboard' contains "unnamed" or "unnamedplus" the value of + v:register is wrong for operators without a specific register. +Solution: Adjust the register according to 'clipboard'. (Ingo Karkat) +Files: src/normal.c + +Patch 7.3.187 +Problem: The RISC OS port has obvious errors and is not being maintained. +Solution: Remove the RISC OS files and code. +Files: src/ascii.h, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/fileio.c, src/globals.h, src/gui.c, src/gui.h, + src/main.c, src/memfile.c, src/memline.c, src/misc1.c, + src/proto.h, src/quickfix.c, src/search.c, src/structs.h, + src/term.c, src/termlib.c, src/version.c, src/vim.h, + src/gui_riscos.h, src/os_riscos.h, src/gui_riscos.c, + src/os_riscos.c, runtime/doc/os_risc.txt + +Patch 7.3.188 +Problem: More RISC OS files to remove. +Solution: Remove them. Update the file list. +Files: src/proto/gui_riscos.pro, src/proto/os_riscos.pro, Filelist + +Patch 7.3.189 (after 7.3.186) +Problem: Can't build without +clipboard feature. (Christian Ebert) +Solution: Add the missing #ifdef. +Files: src/normal.c + +Patch 7.3.190 +Problem: When there is a "containedin" syntax argument highlighting may be + wrong. (Radek) +Solution: Reset current_next_list. (Ben Schmidt) +Files: src/syntax.c + +Patch 7.3.191 +Problem: Still some RISC OS stuff to remove. +Solution: Remove files and lines. (Hong Xu) + Remove the 'osfiletype' option code. +Files: README_extra.txt, src/Make_ro.mak, src/INSTALL, src/Makefile, + src/buffer.c, src/eval.c, src/feature.h, src/option.c, + src/option.h, src/structs.h, src/version.c, src/pty.c, Filelist + +Patch 7.3.192 +Problem: Ex command ":s/ \?/ /g" splits multi-byte characters into bytes. + (Dominique Pelle) +Solution: Advance over whole character instead of one byte. +Files: src/ex_cmds.c + +Patch 7.3.193 +Problem: In the command line window ":close" doesn't work properly. (Tony + Mechelynck) +Solution: Use Ctrl_C instead of K_IGNORE for cmdwin_result. (Jean-Rene + David) +Files: src/ex_docmd.c, src/ex_getln.c + +Patch 7.3.194 +Problem: When "b" is a symlink to directory "a", resolve("b/") doesn't + result in "a/". (ZyX) +Solution: Remove the trailing slash. (Jean-Rene David) +Files: src/eval.c + +Patch 7.3.195 +Problem: "} else" causes following lines to be indented too much. (Rouben + Rostamian) +Solution: Better detection for the "else". (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.196 +Problem: Can't intercept a character that is going to be inserted. +Solution: Add the InsertCharPre autocommand event. (Jakson A. Aquino) +Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt, + runtime/doc/map.txt, src/edit.c, src/eval.c, src/fileio.c, + src/vim.h + +Patch 7.3.197 +Problem: When a QuickfixCmdPost event removes all errors, Vim still tries + to jump to the first error, resulting in E42. +Solution: Get the number of error after the autocmd event. (Mike Lundy) +Files: src/quickfix.c + +Patch 7.3.198 +Problem: No completion for ":lang". +Solution: Get locales to complete from. (Dominique Pelle) +Files: src/eval.c, src/ex_cmds2.c, src/ex_getln.c, + src/proto/ex_cmds2.pro, src/proto/ex_getln.pro, src/vim.h + +Patch 7.3.199 +Problem: MS-Windows: Compilation problem of OLE with MingW compiler. +Solution: Put #ifdef around declarations. (Guopeng Wen) +Files: src/if_ole.h + +Patch 7.3.200 (after 7.3.198) +Problem: CTRL-D doesn't complete :lang. +Solution: Add the missing part of the change. (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.3.201 (after 7.3.195) +Problem: "} else" still causes following lines to be indented too much. +Solution: Better detection for the "else" block. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.202 +Problem: Cannot influence the indent inside a namespace. +Solution: Add the "N" 'cino' parameter. (Konstantin Lepa) +Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, + src/testdir/test3.ok + +Patch 7.3.203 +Problem: MS-Windows: Can't run an external command without a console window. +Solution: Support ":!start /b cmd". (Xaizek) +Files: runtime/doc/os_win32.txt, src/os_win32.c + +Patch 7.3.204 (after 7.3.201) +Problem: Compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/misc1.c + +Patch 7.3.205 +Problem: Syntax "extend" doesn't work correctly. +Solution: Avoid calling check_state_ends() recursively (Ben Schmidt) +Files: src/syntax.c + +Patch 7.3.206 +Problem: 64bit MS-Windows compiler warning. +Solution: Use HandleToLong() instead of type cast. (Mike Williams) +Files: src/gui_w32.c + +Patch 7.3.207 +Problem: Can't compile with MSVC with pentium4 and 64 bit. +Solution: Only use SSE2 for 32 bit. (Mike Williams) +Files: src/Make_mvc.mak + +Patch 7.3.208 +Problem: Early terminated if statement. +Solution: Remove the semicolon. (Lech Lorens) +Files: src/gui_mac.c + +Patch 7.3.209 +Problem: MSVC Install instructions point to wrong batch file. +Solution: Add a batch file for use with MSVC 10. +Files: src/msvc2010.bat, src/INSTALLpc.txt, Filelist + +Patch 7.3.210 +Problem: Can't always find the file when using cscope. +Solution: Add the 'cscoperelative' option. (Raghavendra D Prabhu) +Files: runtime/doc/if_cscop.txt, runtime/doc/options.txt, + src/if_cscope.c + +Patch 7.3.211 (after 7.3.210) +Problem: Compiler warning. +Solution: Add type cast. +Files: src/if_cscope.c + +Patch 7.3.212 +Problem: With Python 3.2 ":py3" fails. +Solution: Move PyEval_InitThreads() to after Py_Initialize(). (Roland + Puntaier) Check abiflags in configure. (Andreas Behr) +Files: src/if_python3.c, src/auto/configure, src/configure.in + +Patch 7.3.213 +Problem: Javascript object literal is not indented correctly. +Solution: Make a special case for when "J1" is in 'cino'. (Luc Deschenaux) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.214 +Problem: The text displayed by ":z-" isn't exactly like old Vi. +Solution: Add one to the start line number. (ChangZhuo Chen) +Files: src/ex_cmds.c + +Patch 7.3.215 (after 7.3.210) +Problem: Wrong file names in previous patch. (Toothpik) +Solution: Include the option changes. +Files: src/option.c, src/option.h + +Patch 7.3.216 +Problem: When recovering a file a range of lines is missing. (Charles Jie) +Solution: Reset the index when advancing to the next pointer block. Add a + test to verify recovery works. +Files: src/memline.c, src/testdir/test78.in, src/testdir/test78.ok, + src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.217 +Problem: Inside an "if" a ":wincmd" causes problems. +Solution: When skipping commands let ":wincmd" skip over its argument. +Files: src/ex_docmd.c + +Patch 7.3.218 (after 7.3.212) +Problem: Tiny configuration problem with Python 3. +Solution: Add abiflags in one more place. (Andreas Behr) +Files: src/auto/configure, src/configure.in + +Patch 7.3.219 +Problem: Can't compile with GTK on Mac. +Solution: Add some #ifdef trickery. (Ben Schmidt) +Files: src/os_mac_conv.c, src/os_macosx.m, src/vim.h + +Patch 7.3.220 +Problem: Python 3: vim.error is a 'str' instead of an 'Exception' object, + so 'except' or 'raise' it causes a 'SystemError' exception. + Buffer objects do not support slice assignment. + When exchanging text between Vim and Python, multibyte texts become + garbage or cause Unicode Exceptions, etc. + 'py3file' tries to read in the file as Unicode, sometimes causes + UnicodeDecodeException +Solution: Fix the problems. (lilydjwg) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.221 +Problem: Text from the clipboard is sometimes handled as linewise, but not + consistently. +Solution: Assume the text is linewise when it ends in a CR or NL. +Files: src/gui_gtk_x11.c, src/gui_mac.c, src/ops.c, src/os_msdos.c, + src/os_mswin.c, src/os_qnx.c, src/ui.c + +Patch 7.3.222 +Problem: Warning for building GvimExt. +Solution: Comment-out the DESCRIPTION line. (Mike Williams) +Files: src/GvimExt/gvimext.def, src/GvimExt/gvimext_ming.def + +Patch 7.3.223 +Problem: MingW cross compilation doesn't work with tiny features. +Solution: Move acp_to_enc(), enc_to_utf16() and utf16_to_enc() outside of + "#ifdef CLIPBOARD". Fix typo in makefile. +Files: src/Make_ming.mak, src/os_mswin.c + +Patch 7.3.224 +Problem: Can't pass dict to sort function. +Solution: Add the optional {dict} argument to sort(). (ZyX) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.3.225 +Problem: Using "\n" in a substitute inside ":s" does not result in a line + break. +Solution: Change behavior inside vim_regexec_nl(). Add tests. (Motoya + Kurotsu) +Files: src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok, + src/testdir/test80.in, src/testdir/test80.ok, + src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.226 +Problem: On a 64 bit system "syn sync fromstart" is very slow. (Bjorn + Steinbrink) +Solution: Store the state when starting to parse from the first line. +Files: src/syntax.c + +Patch 7.3.227 (after 7.3.221) +Problem: Mac OS doesn't have the linewise clipboard fix. +Solution: Also change the Mac OS file. (Bjorn Winckler) +Files: src/os_macosx.m + +Patch 7.3.228 +Problem: "2gj" does not always move to the correct position. +Solution: Get length of line after moving to a next line. (James Vega) +Files: src/normal.c + +Patch 7.3.229 +Problem: Using fork() makes gvim crash on Mac when build with + CoreFoundation. +Solution: Disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka) +Files: src/gui.c + +Patch 7.3.230 +Problem: ":wundo" and ":rundo" don't unescape their argument. (Aaron + Thoma) +Solution: Use FILE1 instead of XFILE. +Files: src/ex_cmds.h + +Patch 7.3.231 +Problem: Runtime file patches failed. +Solution: Redo the patches made against the patched files instead of the + files in the mercurial repository. +Files: runtime/doc/indent.txt, runtime/doc/os_win32.txt + +Patch 7.3.232 +Problem: Python doesn't compile without +multi_byte +Solution: Use "latin1" when MULTI_BYTE is not defined. +Files: src/if_py_both.h + +Patch 7.3.233 +Problem: ":scriptnames" and ":breaklist" show long file names. +Solution: Shorten to use "~/" when possible. (Jean-Rene David) +Files: src/ex_cmds2.c + +Patch 7.3.234 +Problem: With GTK menu may be popping down. +Solution: Use event time instead of GDK_CURRENT_TIME. (Hong Xu) +Files: src/gui.c, src/gui.h, src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 7.3.235 +Problem: ";" gets stuck on a "t" command, it's not useful. +Solution: Add the ';' flag in 'cpo'. (Christian Brabandt) +Files: runtime/doc/motion.txt, runtime/doc/options.txt, src/option.h, + src/search.c src/testdir/test81.in, src/testdir/test81.ok, + src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.236 (after 7.3.232) +Problem: Python 3 doesn't compile without +multi_byte +Solution: Use "latin1" when MULTI_BYTE is not defined. (lilydjwg) +Files: src/if_python3.c + +Patch 7.3.237 +Problem: "filetype" completion doesn't work on Windows. (Yue Wu) +Solution: Don't use a glob pattern for the directories, use a list of + directories. (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.3.238 +Problem: Compiler warning for conversion. +Solution: Add type cast. (Mike Williams) +Files: src/ex_getln.c + +Patch 7.3.239 +Problem: Python corrects the cursor column without taking 'virtualedit' + into account. (lilydjwg) +Solution: Call check_cursor_col_win(). +Files: src/if_py_both.h, src/mbyte.c, src/misc2.c, src/normal.c, + src/proto/mbyte.pro, src/proto/misc2.pro + +Patch 7.3.240 +Problem: External commands can't use pipes on MS-Windows. +Solution: Implement pipes and use them when 'shelltemp' isn't set. (Vincent + Berthoux) +Files: src/eval.c, src/ex_cmds.c, src/misc2.c, src/os_unix.c, + src/os_win32.c, src/proto/misc2.pro, src/ui.c + +Patch 7.3.241 +Problem: Using CTRL-R CTRL-W on the command line may insert only part of + the word. +Solution: Use the cursor position instead of assuming it is at the end of + the command. (Tyru) +Files: src/ex_getln.c + +Patch 7.3.242 +Problem: Illegal memory access in after_pathsep(). +Solution: Check that the pointer is not at the start of the file name. + (Dominique Pelle) +Files: src/misc2.c + +Patch 7.3.243 +Problem: Illegal memory access in readline(). +Solution: Swap the conditions. (Dominique Pelle) +Files: src/eval.c + +Patch 7.3.244 +Problem: MS-Windows: Build problem with old compiler. (John Beckett) +Solution: Only use HandleToLong() when available. (Mike Williams) +Files: src/gui_w32.c + +Patch 7.3.245 +Problem: Python 3.2 libraries not correctly detected. +Solution: Add the suffix to the library name. (Niclas Zeising) +Files: src/auto/configure, src/configure.in + +Patch 7.3.246 (after 7.3.235) +Problem: Repeating "f4" in "4444" skips one 4. +Solution: Check the t_cmd flag. (Christian Brabandt) +Files: src/search.c + +Patch 7.3.247 +Problem: Running tests changes the users viminfo file. Test for patch + 7.3.246 missing. +Solution: Add "nviminfo" to the 'viminfo' option. Include the test. +Files: src/testdir/test78.in, src/testdir/test81.in + +Patch 7.3.248 +Problem: PC Install instructions missing install instructions. +Solution: Step-by-step explanation. (Michael Soyka) +Files: src/INSTALLpc.txt + +Patch 7.3.249 +Problem: Wrong indenting for array initializer. +Solution: Detect '}' in a better way. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.250 +Problem: Python: Errors in Unicode characters not handled nicely. +Solution: Add the surrogateescape error handler. (lilydjwg) +Files: src/if_python3.c + +Patch 7.3.251 +Problem: "gH<Del>" deletes the current line, except when it's the last + line. +Solution: Set the "include" flag to indicate the last line is to be deleted. +Files: src/normal.c, src/ops.c + +Patch 7.3.252 (after 7.3.247) +Problem: Tests fail. (David Northfield) +Solution: Add missing update for .ok file. +Files: src/testdir/test81.ok + +Patch 7.3.253 +Problem: "echo 'abc' > ''" returns 0 or 1, depending on 'ignorecase'. + Checks in mb_strnicmp() for illegal and truncated bytes are + wrong. Should not assume that byte length is equal before case + folding. +Solution: Add utf_safe_read_char_adv() and utf_strnicmp(). Add a test for + this. (Ivan Krasilnikov) +Files: src/mbyte.c src/testdir/test82.in, src/testdir/test82.ok, + src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.254 +Problem: The coladd field is not reset when setting the line number for a + ":call" command. +Solution: Reset it. +Files: src/eval.c + +Patch 7.3.255 +Problem: When editing a file such as "File[2010-08-15].vim" an E16 error is + given. (Manuel Stol) +Solution: Don't give an error for failing to compile the regexp. +Files: src/ex_docmd.c, src/misc1.c, src/vim.h + +Patch 7.3.256 +Problem: Javascript indenting not sufficiently tested. +Solution: Add more tests. (Luc Deschenaux) Mark the lines that are indented + wrong. +Files: src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.257 +Problem: Not all completions are available to user commands. +Solution: Add "color", "compiler", "file_in_path" and "locale". (Dominique + Pelle) +Files: src/ex_docmd.c, runtime/doc/map.txt + +Patch 7.3.258 +Problem: MS-Windows: The edit with existing vim context menu entries can be + unwanted. +Solution: Let a registry entry disable them. (Jerome Vuarand) +Files: src/GvimExt/gvimext.cpp + +Patch 7.3.259 +Problem: Equivalence classes only work for latin characters. +Solution: Add the Unicode equivalence characters. (Dominique Pelle) +Files: runtime/doc/pattern.txt, src/regexp.c, src/testdir/test44.in, + src/testdir/test44.ok + +Patch 7.3.260 +Problem: CursorHold triggers on an incomplete mapping. (Will Gray) +Solution: Don't trigger CursorHold when there is typeahead. +Files: src/fileio.c + +Patch 7.3.261 +Problem: G++ error message erroneously recognized as error. +Solution: Ignore "In file included from" line also when it ends in a colon. + (Fernando Castillo) +Files: src/option.h + +Patch 7.3.262 +Problem: Photon code style doesn't match Vim style. +Solution: Clean up some of it. (Elias Diem) +Files: src/gui_photon.c + +Patch 7.3.263 +Problem: Perl and Tcl have a few code style problems. +Solution: Clean it up. (Elias Diem) +Files: src/if_perl.xs, src/if_tcl.c + +Patch 7.3.264 +Problem: When the current directory name contains wildcard characters, such + as "foo[with]bar", the tags file can't be found. (Jeremy + Erickson) +Solution: When searching for matching files also match without expanding + wildcards. This is a bit of a hack. +Files: src/vim.h, src/misc1.c, src/misc2.c + +Patch 7.3.265 +Problem: When storing a pattern in search history there is no proper check + for the separator character. +Solution: Pass the separator character to in_history(). (Taro Muraoka) +Files: src/ex_getln.c + +Patch 7.3.266 +Problem: In Gvim with iBus typing space in Insert mode doesn't work. +Solution: Clear xim_expected_char after checking it. +Files: src/mbyte.c + +Patch 7.3.267 +Problem: Ruby on Mac OS X 10.7 may crash. +Solution: Avoid alloc(0). (Bjorn Winckler) +Files: src/if_ruby.c + +Patch 7.3.268 +Problem: Vim freezes when executing an external command with zsh. +Solution: Use O_NOCTTY both in the master and slave. (Bjorn Winckler) +Files: src/os_unix.c + +Patch 7.3.269 +Problem: 'shellcmdflag' only works with one flag. +Solution: Split into multiple arguments. (Gary Johnson) +Files: src/os_unix.c + +Patch 7.3.270 +Problem: Illegal memory access. +Solution: Swap conditions. (Dominique Pelle) +Files: src/ops.c + +Patch 7.3.271 +Problem: Code not following Vim coding style. +Solution: Fix the style. (Elias Diem) +Files: src/gui_photon.c + +Patch 7.3.272 +Problem: ":put =list" does not add an empty line for a trailing empty + item. +Solution: Add a trailing NL when turning a list into a string. +Files: src/eval.c + +Patch 7.3.273 +Problem: A BOM in an error file is seen as text. (Aleksey Baibarin) +Solution: Remove the BOM from the text before evaluating. (idea by Christian + Brabandt) +Files: src/quickfix.c, src/mbyte.c, src/proto/mbyte.pro, + src/testdir/test10.in + +Patch 7.3.274 +Problem: With concealed characters tabs do not have the right size. +Solution: Use VCOL_HLC instead of vcol. (Eiichi Sato) +Files: src/screen.c + +Patch 7.3.275 +Problem: MS-Windows: When using a black background some screen updates + cause the window to flicker. +Solution: Add WS_CLIPCHILDREN to CreateWindow(). (René Aguirre) +Files: src/gui_w32.c + +Patch 7.3.276 +Problem: GvimExt sets $LANG in the wrong way. +Solution: Save the environment and use it for gvim. (Yasuhiro Matsumoto) +Files: src/GvimExt/gvimext.cpp + +Patch 7.3.277 +Problem: MS-Windows: some characters do not show in dialogs. +Solution: Use the wide methods when available. (Yanwei Jia) +Files: src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, src/os_win32.c, + src/os_win32.h + +Patch 7.3.278 +Problem: Passing the file name to open in VisVim doesn't work. +Solution: Adjust the index and check for end of buffer. (Jiri Sedlak) +Files: src/VisVim/Commands.cpp + +Patch 7.3.279 +Problem: With GTK, when gvim is full-screen and a tab is opened and using a + specific monitor configuration the window is too big. +Solution: Adjust the window size like on MS-Windows. (Yukihiro Nakadaira) +Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro + +Patch 7.3.280 +Problem: ":lmake" does not update the quickfix window title. +Solution: Update the title. (Lech Lorens) +Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok + +Patch 7.3.281 +Problem: After using "expand('%:8')" the buffer name is changed. +Solution: Make a copy of the file name before shortening it. +Files: src/eval.c + +Patch 7.3.282 +Problem: When using input() and :echo in a loop the displayed text is + incorrect. (Benjamin Fritz) +Solution: Only restore the cursor position when there is a command line. + (Ben Schmidt) +Files: src/ex_getln.c + +Patch 7.3.283 +Problem: An expression mapping with a multi-byte character containing a + 0x80 byte gets messed up. (ZyX) +Solution: Unescape the expression before evaluating it (Yukihiro Nakadaira) +Files: src/getchar.c + +Patch 7.3.284 +Problem: The str2special() function doesn't handle multi-byte characters + properly. +Solution: Recognize multi-byte characters. (partly by Vladimir Vichniakov) +Files: src/getchar.c, src/message.c, src/misc2.c + +Patch 7.3.285 (after 7.3.284) +Problem: Mapping <Char-123> no longer works. +Solution: Properly check for "char-". Add a test for it. +Files: src/misc2.c, src/testdir/test75.in, src/testdir/test75.ok + +Patch 7.3.286 +Problem: Crash when using "zd" on a large number of folds. (Sam King) +Solution: Recompute pointer after reallocating array. Move fewer entries + when making room. +Files: src/fold.c + +Patch 7.3.287 +Problem: Can't compile with MSVC and tiny options. +Solution: Move variables and #ifdefs. (Sergey Khorev) +Files: src/os_win32.c + +Patch 7.3.288 +Problem: has('python') may give an error message for not being able to load + the library after using python3. +Solution: Only give the error when the verbose argument is true. +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.289 +Problem: Complete function isn't called when the leader changed. +Solution: Call ins_compl_restart() when the leader changed. (Taro Muraoka) +Files: src/edit.c + +Patch 7.3.290 +Problem: When a BufWriteCmd autocommand resets 'modified' this doesn't + change older buffer states to be marked as 'modified' like + ":write" does. (Yukihiro Nakadaira) +Solution: When the BufWriteCmd resets 'modified' then adjust the undo + information like ":write" does. +Files: src/fileio.c + +Patch 7.3.291 +Problem: Configure doesn't work properly with Python3. +Solution: Put -ldl before $LDFLAGS. Add PY3_NO_RTLD_GLOBAL. (Roland + Puntaier) +Files: src/config.h.in, src/auto/configure, src/configure.in + +Patch 7.3.292 +Problem: Crash when using fold markers and selecting a visual block that + includes a folded line and goes to end of line. (Sam Lidder) +Solution: Check for the column to be MAXCOL. (James Vega) +Files: src/screen.c + +Patch 7.3.293 +Problem: MSVC compiler has a problem with non-ASCII characters. +Solution: Avoid non-ASCII characters. (Hong Xu) +Files: src/ascii.h, src/spell.c + +Patch 7.3.294 (after 7.3.289) +Problem: Patch 289 causes more problems than it solves. +Solution: Revert the patch until a better solution is found. +Files: src/edit.c + +Patch 7.3.295 +Problem: When filtering text with an external command Vim may not read all + the output. +Solution: When select() is interrupted loop and try again. (James Vega) +Files: src/os_unix.c + +Patch 7.3.296 +Problem: When writing to an external command a zombie process may be left + behind. +Solution: Wait on the process. (James Vega) +Files: src/os_unix.c + +Patch 7.3.297 +Problem: Can't load Perl 5.14 dynamically. +Solution: Add code in #ifdefs. (Charles Cooper) +Files: if_perl.xs + +Patch 7.3.298 +Problem: Built-in colors are different from rgb.txt. +Solution: Adjust the color values. (Benjamin Haskell) +Files: src/gui_photon.c, src/gui_w48.c + +Patch 7.3.299 +Problem: Source code not in Vim style. +Solution: Adjust the style. (Elias Diem) +Files: src/gui_photon.c + +Patch 7.3.300 +Problem: Python doesn't parse multi-byte argument correctly. +Solution: Use "t" instead of "s". (lilydjwg) +Files: src/if_py_both.h + +Patch 7.3.301 +Problem: When 'smartindent' and 'copyindent' are set a Tab is used even + though 'expandtab' is set. +Solution: Do not insert Tabs. Add a test. (Christian Brabandt) +Files: src/misc1.c, src/testdir/test19.in, src/testdir/test19.ok + +Patch 7.3.302 (after 7.3.301) +Problem: Test 19 fails without 'smartindent' and +eval. +Solution: Don't use ":exe". Source small.vim. +Files: src/testdir/test19.in + +Patch 7.3.303 (after 7.3.296) +Problem: Compilation error. +Solution: Correct return type from int to pid_t. (Danek Duvall) +Files: src/os_unix.c + +Patch 7.3.304 +Problem: Strawberry Perl doesn't work on MS-Windows. +Solution: Use xsubpp if needed. (Yasuhiro Matsumoto) +Files: src/Make_ming.mak, src/Make_mvc.mak + +Patch 7.3.305 +Problem: Auto-loading a function while editing the command line causes + scrolling up the display. +Solution: Don't set msg_scroll when defining a function and the user is not + typing. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.306 +Problem: When closing a window there is a chance that deleting a scrollbar + triggers a GUI resize, which uses the window while it is not in a + valid state. +Solution: Set the buffer pointer to NULL to be able to detect the invalid + situation. Fix a few places that used the buffer pointer + incorrectly. +Files: src/buffer.c, src/ex_cmds.c, src/term.c, src/window.c + +Patch 7.3.307 +Problem: Python 3 doesn't support slice assignment. +Solution: Implement slices. (Brett Overesch, Roland Puntaier) +Files: src/if_python3.c + +Patch 7.3.308 +Problem: Writing to 'verbosefile' has problems, e.g. for :highlight. +Solution: Do not use a separate verbose_write() function but write with the + same code that does redirecting. (Yasuhiro Matsumoto) +Files: src/message.c + +Patch 7.3.309 (after 7.3.307) +Problem: Warnings for pointer types. +Solution: Change PySliceObject to PyObject. +Files: src/if_python3.c + +Patch 7.3.310 +Problem: Code not following Vim style. +Solution: Fix the style. (Elias Diem) +Files: src/gui_photon.c + +Patch 7.3.311 (replaces 7.3.289) +Problem: Complete function isn't called when the leader changed. +Solution: Allow the complete function to return a dictionary with a flag + that indicates ins_compl_restart() is to be called when the leader + changes. (Taro Muraoka) +Files: runtime/insert.txt, src/edit.c, src/eval.c, src/proto/eval.pro + +Patch 7.3.312 (after 7.3.306) +Problem: Can't compile with tiny features. +Solution: Add #ifdef around win_valid(). +Files: src/buffer.c + +Patch 7.3.313 (after 7.3.307) +Problem: One more warning when compiling with dynamic Python 3. +Solution: Change PySliceObject to PyObject. +Files: src/if_python3.c + +Patch 7.3.314 (after 7.3.304) +Problem: Missing parenthesis. +Solution: Add it. (Benjamin R. Haskell) +Files: src/Make_mvc.mak + +Patch 7.3.315 +Problem: Opening a window before forking causes problems for GTK. +Solution: Fork first, create the window in the child and report back to the + parent process whether it worked. If successful the parent exits, + if unsuccessful the child exits and the parent continues in the + terminal. (Tim Starling) +Files: src/gui.c + +Patch 7.3.316 (after 7.3.306) +Problem: Crash when 'colorcolumn' is set and closing buffer. +Solution: Check for w_buffer to be NULL. (Yasuhiro Matsumoto) +Files: src/option.c + +Patch 7.3.317 +Problem: Calling debug.debug() in Lua may cause Vim to hang. +Solution: Add a better debug method. (Rob Hoelz, Luis Carvalho) +Files: src/if_lua.c + +Patch 7.3.318 +Problem: "C" on the last line deletes that line if it's blank. +Solution: Only delete the last line for a delete operation. (James Vega) +Files: src/ops.c + +Patch 7.3.319 (after 7.3.311) +Problem: Redobuff doesn't always include changes of the completion leader. +Solution: Insert backspaces as needed. (idea by Taro Muraoka) +Files: src/edit.c + +Patch 7.3.320 +Problem: When a 0xa0 character is in a sourced file the error message for + unrecognized command does not show the problem. +Solution: Display 0xa0 as <a0>. +Files: src/ex_docmd.c + +Patch 7.3.321 +Problem: Code not following Vim style. +Solution: Fix the style. (Elias Diem) +Files: src/os_qnx.c + +Patch 7.3.322 +Problem: #ifdef for PDP_RETVAL doesn't work, INT_PTR can be a typedef. +Solution: Check the MSC version and 64 bit flags. (Sergiu Dotenco) +Files: src/os_mswin.c + +Patch 7.3.323 +Problem: The default 'errorformat' does not ignore some "included from" + lines. +Solution: Add a few more patterns. (Ben Boeckel) +Files: src/option.h + +Patch 7.3.324 (after 7.3.237) +Problem: Completion for ":compiler" shows color scheme names. +Solution: Fix the directory name. (James Vega) +Files: src/ex_getln.c + +Patch 7.3.325 +Problem: A duplicated function argument gives an internal error. +Solution: Give a proper error message. (based on patch by Tyru) +Files: src/eval.c + +Patch 7.3.326 +Problem: MingW 4.6 no longer supports the -mno-cygwin option. +Solution: Split the Cygwin and MingW makefiles. (Matsushita Shougo) +Files: src/GvimExt/Make_cyg.mak, src/GvimExt/Make_ming.mak, + src/Make_cyg.mak, src/Make_ming.mak, src/xxd/Make_ming.mak, + Filelist + +Patch 7.3.327 +Problem: When jumping to a help tag a closed fold doesn't open. +Solution: Save and restore KeyTyped. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + +Patch 7.3.328 +Problem: When command line wraps the cursor may be displayed wrong when + there are multi-byte characters. +Solution: Position the cursor before drawing the text. (Yasuhiro Matsumoto) +Files: src/ex_getln.c + +Patch 7.3.329 +Problem: When skipping over code from ":for" to ":endfor" get an error for + calling a dict function. (Yasuhiro Matsumoto) +Solution: Ignore errors when skipping over :call command. +Files: src/ex_docmd.c, src/eval.c + +Patch 7.3.330 +Problem: When longjmp() is invoked if the X server gives an error the state + is not properly restored. +Solution: Reset vgetc_busy. (Yukihiro Nakadaira) +Files: src/main.c + +Patch 7.3.331 +Problem: "vit" selects wrong text when a tag name starts with the same text + as an outer tag name. (Ben Fritz) +Solution: Add "\>" to the pattern to check for word boundary. +Files: src/search.c + +Patch 7.3.332 (after 7.3.202) +Problem: Indent after "public:" is not increased in C++ code. (Lech Lorens) +Solution: Check for namespace after the regular checks. (partly by Martin + Gieseking) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.333 +Problem: Using "." to repeat a Visual delete counts the size in bytes, not + characters. (Connor Lane Smith) +Solution: Store the virtual column numbers instead of byte positions. +Files: src/normal.c + +Patch 7.3.334 +Problem: Latest MingW about XSUBPP referencing itself. (Gongqian Li) +Solution: Rename the first use to XSUBPPTRY. +Files: src/Make_ming.mak + +Patch 7.3.335 +Problem: When 'imdisable' is reset from an autocommand in Insert mode it + doesn't take effect. +Solution: Call im_set_active() in Insert mode. (Taro Muraoka) +Files: src/option.c + +Patch 7.3.336 +Problem: When a tags file specifies an encoding different from 'enc' it + may hang and using a pattern doesn't work. +Solution: Convert the whole line. Continue reading the header after the + SORT tag. Add test83. (Yukihiro Nakadaira) +Files: src/tag.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test83-tags2, src/testdir/test83-tags3, + src/testdir/test83.in, src/testdir/test83.ok + +Patch 7.3.337 (after 7.3.295) +Problem: Screen doesn't update after resizing the xterm until a character + is typed. +Solution: When the select call is interrupted check do_resize. (Taylor + Hedberg) +Files: src/os_unix.c + +Patch 7.3.338 +Problem: Using getchar() in an expression mapping doesn't work well. +Solution: Don't save and restore the typeahead. (James Vega) +Files: src/getchar.c, src/testdir/test34.ok + +Patch 7.3.339 +Problem: "make shadow" doesn't link all test files. +Solution: Add a line in Makefile and Filelist. +Files: src/Makefile, Filelist + +Patch 7.3.340 +Problem: When 'verbosefile' is set ftplugof.vim can give an error. +Solution: Only remove filetypeplugin autocommands when they exist. (Yasuhiro + Matsumoto) +Files: runtime/ftplugof.vim + +Patch 7.3.341 +Problem: Local help files are only listed in help.txt, not in translated + help files. +Solution: Also find translated help files. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + +Patch 7.3.342 +Problem: Code not in Vim style. +Solution: Fix the style. (Elias Diem) +Files: src/os_amiga.c, src/os_mac_conv.c, src/os_win16.c + +Patch 7.3.343 +Problem: No mouse support for urxvt. +Solution: Implement urxvt mouse support, also for > 252 columns. (Yiding + Jia) +Files: src/feature.h, src/keymap.h, src/option.h, src/os_unix.c, + src/term.c, src/version.c + +Patch 7.3.344 +Problem: Problem with GUI startup related to XInitThreads. +Solution: Use read() and write() instead of fputs() and fread(). (James + Vega) +Files: src/gui.c + +Patch 7.3.345 +Problem: When switching language with ":lang" the window title doesn't + change until later. +Solution: Update the window title right away. (Dominique Pelle) +Files: src/ex_cmds2.c + +Patch 7.3.346 +Problem: It's hard to test netbeans commands. +Solution: Process netbeans commands after :sleep. (Xavier de Gaye) +Files: runtime/doc/netbeans.txt, src/ex_docmd.c, src/netbeans.c + +Patch 7.3.347 +Problem: When dropping text from a browser on Vim it receives HTML even + though "html" is excluded from 'clipboard'. (Andrei Avk) +Solution: Fix the condition for TARGET_HTML. +Files: src/gui_gtk_x11.c + +Patch 7.3.348 +Problem: "call range(1, 947948399)" causes a crash. (ZyX) +Solution: Avoid a loop in the out of memory message. +Files: src/misc2.c + +Patch 7.3.349 +Problem: When running out of memory during startup trying to open a + swapfile will loop forever. +Solution: Let findswapname() set dirp to NULL if out of memory. +Files: src/memline.c + +Patch 7.3.350 +Problem: Block of code after ":lua << EOF" may not work. (Paul Isambert) +Solution: Recognize the ":lua" command, skip to EOF. +Files: src/eval.c + +Patch 7.3.351 +Problem: Text formatting uses start of insert position when it should not. + (Peter Wagenaar) +Solution: Do not use Insstart when intentionally formatting. +Files: src/edit.c + +Patch 7.3.352 +Problem: When completing methods dict functions and script-local functions + get in the way. +Solution: Sort function names starting with "<" to the end. (Yasuhiro + Matsumoto) +Files: src/ex_getln.c + +Patch 7.3.353 (after 7.3.343) +Problem: Missing part of the urxvt patch. +Solution: Add the change in term.c +Files: src/term.c + +Patch 7.3.354 +Problem: ":set backspace+=eol" doesn't work when 'backspace' has a + backwards compatible value of 2. +Solution: Convert the number to a string. (Hirohito Higashi) +Files: src/option.c + +Patch 7.3.355 +Problem: GTK warnings when using netrw.vim. (Ivan Krasilnikov) +Solution: Do not remove the beval event handler twice. +Files: src/option.c + +Patch 7.3.356 +Problem: Using "o" with 'cindent' set may freeze Vim. (lolilolicon) +Solution: Skip over {} correctly. (Hari G) +Files: src/misc1.c + +Patch 7.3.357 +Problem: Compiler warning in MS-Windows console build. +Solution: Adjust return type of PrintHookProc(). (Mike Williams) +Files: src/os_mswin.c + +Patch 7.3.358 (after 7.3.353) +Problem: Mouse support doesn't work properly. +Solution: Add HMT_URXVT. (lilydjwg, James McCoy) +Files: src/term.c + +Patch 7.3.359 +Problem: Command line completion shows dict functions. +Solution: Skip dict functions for completion. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.360 +Problem: Interrupting the load of an autoload function may cause a crash. +Solution: Do not use the hashitem when not valid. (Yukihiro Nakadaira) +Files: src/eval.c + +Patch 7.3.361 +Problem: Accessing memory after it is freed when EXITFREE is defined. +Solution: Don't access curwin when firstwin is NULL. (Dominique Pelle) +Files: src/buffer.c + +Patch 7.3.362 +Problem: ml_get error when using ":g" with folded lines. +Solution: Adjust the line number for changed_lines(). (Christian Brabandt) +Files: src/ex_cmds.c + +Patch 7.3.363 +Problem: C indenting is wrong after #endif followed by a semicolon. +Solution: Add special handling for a semicolon in a line by itself. (Lech + Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.364 (after 7.3.353) +Problem: Can't compile on HP-UX. (John Marriott) +Solution: Only use TTYM_URXVT when it is defined. +Files: src/term.c + +Patch 7.3.365 +Problem: Crash when using a large Unicode character in a file that has + syntax highlighting. (ngollan) +Solution: Check for going past the end of the utf tables. (Dominique Pelle) +Files: src/mbyte.c + +Patch 7.3.366 +Problem: A tags file with an extremely long name causes errors. +Solution: Ignore tags that are too long. (Arno Renevier) +Files: src/tag.c + +Patch 7.3.367 +Problem: :wundo and :rundo use a wrong checksum. +Solution: Include the last line when computing the hash. (Christian Brabandt) +Files: src/undo.c + +Patch 7.3.368 +Problem: Gcc complains about redefining _FORTIFY_SOURCE. +Solution: Undefine it before redefining it. +Files: src/Makefile, src/configure.in, src/auto/configure + +Patch 7.3.369 +Problem: When compiled with Gnome get an error message when using --help. +Solution: Don't fork. (Ivan Krasilnikov) +Files: src/main.c + +Patch 7.3.370 +Problem: Compiler warns for unused variable in Lua interface. +Solution: Remove the variable. +Files: src/if_lua.c + +Patch 7.3.371 +Problem: Crash in autocomplete. (Greg Weber) +Solution: Check not going over allocated buffer size. +Files: src/misc2.c + +Patch 7.3.372 +Problem: When using a command line mapping to <Up> with file name + completion to go one directory up, 'wildchar' is inserted. + (Yasuhiro Matsumoto) +Solution: Set the KeyTyped flag. +Files: src/ex_getln.c + +Patch 7.3.373 (after 7.3.366) +Problem: A tags file with an extremely long name may cause an infinite loop. +Solution: When encountering a long name switch to linear search. +Files: src/tag.c + +Patch 7.3.374 +Problem: ++encoding does not work properly. +Solution: Recognize ++encoding before ++enc. (Charles Cooper) +Files: src/ex_docmd.c + +Patch 7.3.375 +Problem: Duplicate return statement. +Solution: Remove the superfluous one. (Dominique Pelle) +Files: src/gui_mac.c + +Patch 7.3.376 +Problem: Win32: Toolbar repainting does not work when the mouse pointer + hovers over a button. +Solution: Call DefWindowProc() when not handling an event. (Sergiu Dotenco) +Files: src/gui_w32.c + +Patch 7.3.377 +Problem: No support for bitwise AND, OR, XOR and invert. +Solution: Add and(), or(), invert() and xor() functions. +Files: src/eval.c, src/testdir/test49.in, src/testdir/test65.in, + src/testdir/test65.ok, runtime/doc/eval.txt + +Patch 7.3.378 +Problem: When cross-compiling the check for uint32_t fails. +Solution: Only give a warning message. (Maksim Melnikau) +Files: src/configure.in, src/auto/configure + +Patch 7.3.379 +Problem: C-indenting wrong for static enum. +Solution: Skip over "static". (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.380 +Problem: C-indenting wrong for a function header. +Solution: Skip to the start paren. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.381 +Problem: Configure silently skips interfaces that won't work. +Solution: Add the --enable-fail_if_missing argument. (Shlomi Fish) +Files: src/Makefile, src/configure.in, src/auto/configure + +Patch 7.3.382 (after 7.3.376) +Problem: IME characters are inserted twice. +Solution: Do not call DefWindowProc() if the event was handled. (Yasuhiro + Matsumoto) +Files: src/gui_w32.c + +Patch 7.3.383 +Problem: For EBCDIC pound sign is defined as 't'. +Solution: Correctly define POUND. +Files: src/ascii.h + +Patch 7.3.384 +Problem: Mapping CTRL-K in Insert mode breaks CTRL-X CTRL-K for dictionary + completion. +Solution: Add CTRL-K to the list of recognized keys. (James McCoy) +Files: src/edit.c + +Patch 7.3.385 +Problem: When using an expression mapping on the command line the cursor + ends up in the wrong place. (Yasuhiro Matsumoto) +Solution: Save and restore msg_col and msg_row when evaluating the + expression. +Files: src/getchar. + +Patch 7.3.386 +Problem: Test 83 fails when iconv does not support cp932. (raf) +Solution: Test if conversion works. (Yukihiro Nakadaira) +Files: src/testdir/test83.in + +Patch 7.3.387 (after 7.3.386) +Problem: Test 83 may fail for some encodings. +Solution: Set 'encoding' to utf-8 earlier. +Files: src/testdir/test83.in + +Patch 7.3.388 +Problem: Crash on exit when EXITFREE is defined and using tiny features. +Solution: Check for NULL window pointer. (Dominique Pelle) +Files: src/buffer.c + +Patch 7.3.389 +Problem: After typing at a prompt the "MORE" message appears too soon. +Solution: reset lines_left in msg_end_prompt(). (Eswald) +Files: src/message.c + +Patch 7.3.390 +Problem: Using NULL buffer pointer in a window. +Solution: Check for w_buffer being NULL in more places. (Bjorn Winckler) +Files: src/ex_cmds.c, src/quickfix.c, src/window.c + +Patch 7.3.391 +Problem: Can't check if the XPM_W32 feature is enabled. +Solution: Add xpm_w32 to the list of features. (kat) +Files: src/eval.c + +Patch 7.3.392 +Problem: When setting 'undofile' while the file is already loaded but + unchanged, try reading the undo file. (Andy Wokula) +Solution: Compute a checksum of the text when 'undofile' is set. (Christian + Brabandt) +Files: src/option.c, src/testdir/test72.in, src/testdir/test72.ok + +Patch 7.3.393 +Problem: Win32: When resizing Vim it is always moved to the primary monitor + if the secondary monitor is on the left. +Solution: Use the nearest monitor. (Yukihiro Nakadaira) +Files: src/gui_w32.c + +Patch 7.3.394 +Problem: When placing a mark while starting up a screen redraw messes up + the screen. (lith) +Solution: Don't redraw while still starting up. (Christian Brabandt) +Files: src/screen.c + +Patch 7.3.395 (after 7.3.251) +Problem: "dv?bar" in the last line deletes too much and breaks undo. +Solution: Only adjust the cursor position when it's after the last line of + the buffer. Add a test. (Christian Brabandt) +Files: src/ops.c, src/testdir/test43.in, src/testdir/test43.ok + +Patch 7.3.396 +Problem: After forcing an operator to be characterwise it can still become + linewise when spanning whole lines. +Solution: Don't make the operator linewise when motion_force was set. + (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.397 +Problem: ":helpgrep" does not work properly when 'encoding' is not utf-8 or + latin1. +Solution: Convert non-ascii lines to 'encoding'. (Yasuhiro Matsumoto) +Files: src/quickfix.c, src/spell.c, src/misc2.c, src/proto/misc2.pro + +Patch 7.3.398 +Problem: When creating more than 10 location lists and adding items one by + one a previous location may be used. (Audrius Kažukauskas) +Solution: Clear the location list completely when adding the tenth one. +Files: src/quickfix.c + +Patch 7.3.399 +Problem: ":cd" doesn't work when the path contains wildcards. (Yukihiro + Nakadaira) +Solution: Ignore wildcard errors when the EW_NOTWILD flag is used. +Files: src/misc1.c + +Patch 7.3.400 +Problem: Compiler warnings for shadowed variables. +Solution: Remove or rename the variables. +Files: src/charset.c, src/digraph.c, src/edit.c, src/eval.c, src/fold.c, + src/getchar.c, src/message.c, src/misc2.c, src/move.c, + src/netbeans.c, src/option.c, src/os_unix.c, src/screen.c, + src/search.c, src/spell.c, src/syntax.c, src/tag.c, src/window.c + +Patch 7.3.401 +Problem: A couple more shadowed variables. +Solution: Rename the variables. +Files: src/netbeans.c + +Patch 7.3.402 +Problem: When jumping to the first error a line of the buffer is sometimes + redrawn on top of the list of errors. +Solution: Do not call update_topline_redraw() if the display was scrolled + up. +Files: src/quickfix.c + +Patch 7.3.403 +Problem: ":helpgrep" does not trigger QuickFixCmd* autocommands. +Solution: Trigger the autocommands. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.404 +Problem: When a complete function uses refresh "always" redo will not work + properly. +Solution: Do not reset compl_leader when compl_opt_refresh_always is set. + (Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 7.3.405 +Problem: When xterm gets back the function keys it may delete the urxvt + mouse termcap code. +Solution: Check for the whole code, not just the start. (Egmont Koblinger) +Files: src/keymap.h, src/misc2.c, src/term.c + +Patch 7.3.406 +Problem: Multi-byte characters in b:browsefilter are not handled correctly. +Solution: First use convert_filter() normally and then convert to wide + characters. (Taro Muraoka) +Files: src/gui_w48.c + +Patch 7.3.407 +Problem: ":12verbose call F()" may duplicate text while trying to truncate. + (Thinca) +Solution: Only truncate when there is not enough room. Also check the byte + length of the buffer. +Files: src/buffer.c, src/eval.c, src/ex_getln.c, src/message.c, + src/proto/message.pro + +Patch 7.3.408 (after 7.3.406) +Problem: Missing declaration. +Solution: Add the declaration. (John Marriott) +Files: src/gui_w48.c + +Patch 7.3.409 +Problem: The license in pty.c is unclear. +Solution: Add a comment about the license. +Files: src/pty.c + +Patch 7.3.410 +Problem: Compiler error for // comment. (Joachim Schmitz) +Solution: Turn into /* comment */. +Files: src/message.c + +Patch 7.3.411 +Problem: Pasting in Visual mode using the "" register does not work. (John + Beckett) +Solution: Detect that the write is overwriting the pasted register. + (Christian Brabandt) +Files: src/normal.c + +Patch 7.3.412 +Problem: Storing a float in a session file has an additional '&'. +Solution: Remove the '&'. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.413 +Problem: Build warnings on MS-Windows. +Solution: Add type casts. (Mike Williams) +Files: src/ex_getln.c, src/message.c, src/term.c + +Patch 7.3.414 +Problem: Using CTRL-A on "000" drops the leading zero, while on "001" it + doesn't. +Solution: Detect "000" as an octal number. (James McCoy) +Files: src/charset.c + +Patch 7.3.415 (after 7.3.359) +Problem: Completion of functions stops once a dictionary is encountered. + (James McCoy) +Solution: Return an empty string instead of NULL. +Files: src/eval.c + +Patch 7.3.416 (after 7.3.415) +Problem: Compiler warning for wrong pointer. +Solution: Add type cast. +Files: src/eval.c + +Patch 7.3.417 (after 7.3.395) +Problem: Test 43 fails with a tiny build. +Solution: Only run test 43 with at least a small build. +Files: src/testdir/test43.in + +Patch 7.3.418 +Problem: When a user complete function returns -1 an error message is + given. +Solution: When -2 is returned stop completion silently. (Yasuhiro Matsumoto) +Files: src/edit. + +Patch 7.3.419 +Problem: DBCS encoding in a user command does not always work. +Solution: Skip over DBCS characters. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + +Patch 7.3.420 +Problem: "it" and "at" don't work properly with a dash in the tag name. +Solution: Require a space to match the tag name. (Christian Brabandt) +Files: src/search.c + +Patch 7.3.421 +Problem: Get E832 when setting 'undofile' in vimrc and there is a file to + be edited on the command line. (Toothpik) +Solution: Do not try reading the undo file for a file that wasn't loaded. +Files: src/option.c + +Patch 7.3.422 +Problem: Python 3 does not have __members__. +Solution: Add "name" and "number" in another way. (lilydjwg) +Files: src/if_py_both.h, src/if_python3.c + +Patch 7.3.423 +Problem: Small mistakes in comments, proto and indent. +Solution: Fix the mistakes. +Files: src/ex_cmds2.c, src/structs.h, src/ui.c, src/proto/ex_docmd.pro + +Patch 7.3.424 +Problem: Win16 version missing some functions. +Solution: Add #defines for the functions. +Files: src/gui_w16.c + +Patch 7.3.425 (after 7.3.265) +Problem: Search history lines are duplicated. (Edwin Steiner) +Solution: Convert separator character from space to NUL. +Files: src/ex_getln.c + +Patch 7.3.426 +Problem: With '$' in 'cpoptions' the $ is not displayed in the first + column. +Solution: Use -1 instead of 0 as a special value. (Hideki Eiraku and + Hirohito Higashi) +Files: src/edit.c, src/globals.h, src/move.c, src/screen.c, src/search.c + +Patch 7.3.427 +Problem: readfile() can be slow with long lines. +Solution: Use realloc() instead of alloc(). (John Little) +Files: src/eval.c + +Patch 7.3.428 +Problem: Win32: an xpm file without a mask crashes Vim. +Solution: Fail when the mask is missing. (Dave Bodenstab) +Files: src/xpm_w32.c + +Patch 7.3.429 +Problem: When 'cpoptions' includes "E" "c0" in the first column is an + error. The redo register is then set to the erroneous command. +Solution: Do not set the redo register if the command fails because of an + empty region. (Hideki Eiraku) +Files: src/getchar.c, src/normal.c, src/proto/getchar.pro + +Patch 7.3.430 +Problem: When a custom filetype detection uses "augroup END" the conf + fileytpe detection does not have the filetypedetect group. +Solution: Always end the group and include filetypedetect in the conf + autocommand. (Lech Lorens) +Files: runtime/filetype.vim + +Patch 7.3.431 +Problem: Fetching a key at a prompt may be confused by escape sequences. + Especially when getting a prompt at a VimEnter autocommand. + (Alex Efros) +Solution: Properly handle escape sequences deleted by check_termcode(). +Files: src/getchar.c, src/misc1.c, src/term.c, src/proto/term.pro + +Patch 7.3.432 +Problem: ACLs are not supported for ZFS or NFSv4 on Solaris. +Solution: Add configure check and code. (Danek Duvall) +Files: src/configure.in, src/auto/configure, src/config.h.in, + src/os_unix.c + +Patch 7.3.433 +Problem: Using continued lines in a Vim script can be slow. +Solution: Instead of reallocating for every line use a growarray. (Yasuhiro + Matsumoto) +Files: src/ex_cmds2.c + +Patch 7.3.434 +Problem: Using join() can be slow. +Solution: Compute the size of the result before allocation to avoid a lot of + allocations and copies. (Taro Muraoka) +Files: src/eval.c + +Patch 7.3.435 +Problem: Compiler warning for unused variable. +Solution: Move the variable inside #ifdef. +Files: src/ex_cmds2.c + +Patch 7.3.436 +Problem: Compiler warnings for types on Windows. +Solution: Add type casts. (Mike Williams) +Files: src/eval.c + +Patch 7.3.437 +Problem: Continue looping inside FOR_ALL_TAB_WINDOWS even when already done. +Solution: Use goto instead of break. (Hirohito Higashi) +Files: src/fileio.c, src/globals.h + +Patch 7.3.438 +Problem: There is no way to avoid ":doautoall" reading modelines. +Solution: Add the <nomodeline> argument. Adjust documentation. +Files: src/fileio.c, runtime/doc/autocmd.txt + +Patch 7.3.439 +Problem: Compiler warnings to size casts in Perl interface. +Solution: Use XS macros. (James McCoy) +Files: src/if_perl.xs, src/typemap + +Patch 7.3.440 +Problem: Vim does not support UTF8_STRING for the X selection. +Solution: Add UTF8_STRING atom support. (Alex Efros) Use it only when + 'encoding' is set to Unicode. +Files: src/ui.c + +Patch 7.3.441 +Problem: Newer versions of MzScheme (Racket) require earlier (trampolined) + initialisation. +Solution: Call mzscheme_main() early in main(). (Sergey Khorev) +Files: src/Make_mvc.mak, src/if_mzsch.c, src/main.c, + src/proto/if_mzsch.pro + +Patch 7.3.442 (after 7.3.438) +Problem: Still read modelines for ":doautocmd". +Solution: Move check for <nomodeline> to separate function. +Files: src/fileio.c, src/ex_docmd.c, src/proto/fileio.pro, + runtime/doc/autocmd.txt + +Patch 7.3.443 +Problem: MS-Windows: 'shcf' and 'shellxquote' defaults are not very good. +Solution: Make a better guess when 'shell' is set to "cmd.exe". (Ben Fritz) +Files: src/option.c, runtime/doc/options.txt + +Patch 7.3.444 +Problem: ":all!" and ":sall!" give error E477, even though the + documentation says these are valid commands. +Solution: Support the exclamation mark. (Hirohito Higashi) +Files: src/ex_cmds.h, src/testdir/test31.in, src/testdir/test31.ok + +Patch 7.3.445 (after 7.3.443) +Problem: Can't properly escape commands for cmd.exe. +Solution: Default 'shellxquote' to '('. Append ')' to make '(command)'. + No need to use "/s" for 'shellcmdflag'. +Files: src/misc2.c, src/option.c, src/os_win32.c + +Patch 7.3.446 (after 7.3.445) +Problem: Win32: External commands with special characters don't work. +Solution: Add the 'shellxescape' option. +Files: src/misc2.c, src/option.c, src/option.h, runtime/doc/options.txt + +Patch 7.3.447 (after 7.3.446) +Problem: Win32: External commands with "start" do not work. +Solution: Unescape part of the command. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.3.448 (after 7.3.447) +Problem: Win32: Still a problem with "!start /b". +Solution: Escape only '|'. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.3.449 +Problem: Crash when a BufWinLeave autocommand closes the only other window. + (Daniel Hunt) +Solution: Abort closing a buffer when it becomes the only one. +Files: src/buffer.c, src/proto/buffer.pro, src/ex_cmds.c, src/ex_getln.c, + src/misc2.c, src/quickfix.c, src/window.c, src/proto/window.pro + +Patch 7.3.450 (after 7.3.448) +Problem: Win32: Still a problem with "!start /b". +Solution: Fix pointer use. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.3.451 +Problem: Tcl doesn't work on 64 MS-Windows. +Solution: Make it work. (Dave Bodenstab) +Files: src/Make_mvc.mak, src/if_tcl.c + +Patch 7.3.452 +Problem: Undo broken when pasting close to the last line. (Andrey Radev) +Solution: Use a flag to remember if the deleted included the last line. + (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.453 +Problem: Pasting in the command line is slow. +Solution: Don't redraw if there is another character to read. (Dominique + Pelle) +Files: src/ex_getln.c + +Patch 7.3.454 +Problem: Re-allocating memory slows Vim down. +Solution: Use realloc() in ga_grow(). (Dominique Pelle) +Files: src/misc2.c + +Patch 7.3.455 +Problem: Using many continuation lines can be slow. +Solution: Adjust the reallocation size to the current length. +Files: src/ex_cmds2.c + +Patch 7.3.456 +Problem: ":tab drop file" has several problems, including moving the + current window and opening a new tab for a file that already has a + window. +Solution: Refactor ":tab drop" handling. (Hirohito Higashi) +Files: src/buffer.c, src/testdir/test62.in, src/testdir/test62.ok + +Patch 7.3.457 +Problem: When setting $VIMRUNTIME later the directory for fetching + translated messages is not adjusted. +Solution: Put bindtextdomain() in vim_setenv(). +Files: src/misc1.c + +Patch 7.3.458 +Problem: Crash when calling smsg() during startup. +Solution: Don't use 'shortmess' when it is not set yet. +Files: src/option.c + +Patch 7.3.459 +Problem: Win32: Warnings for type conversion. +Solution: Add type casts. (Mike Williams) +Files: src/misc2.c, src/os_win32.c + +Patch 7.3.460 +Problem: Win32: UPX does not compress 64 bit binaries. +Solution: Mention and add the alternative: mpress. (Dave Bodenstab) +Files: src/INSTALLpc.txt, src/Make_ming.mak + +Patch 7.3.461 +Problem: The InsertCharPre autocommand event is not triggered during + completion and when typing several characters quickly. +Solution: Also trigger InsertCharPre during completion. Do not read ahead + when an InsertCharPre autocommand is defined. (Yasuhiro Matsumoto) +Files: src/edit.c, src/fileio.c, src/proto/fileio.pro + +Patch 7.3.462 +Problem: When using ":loadview" folds may be closed unexpectedly. +Solution: Take into account foldlevel. (Xavier de Gaye) +Files: src/fold.c + +Patch 7.3.463 +Problem: When using ":s///c" the cursor is moved away from the match. + (Lawman) +Solution: Don't move the cursor when do_ask is set. (Christian Brabandt) +Files: src/ex_cmds.c + +Patch 7.3.464 +Problem: Compiler warning for sprintf. +Solution: Put the length in a variable. (Dominique Pelle) +Files: src/version.c + +Patch 7.3.465 +Problem: Cannot get file name with newline from glob(). +Solution: Add argument to glob() and expand() to indicate they must return a + list. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/eval.c, src/ex_getln.c, src/vim.h + +Patch 7.3.466 +Problem: Get ml_get error hen ":behave mswin" was used and selecting + several lines. (A. Sinan Unur) +Solution: Adjust the end of the operation. (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.467 +Problem: Cursor positioned wrong at the command line when regaining focus + and using some input method. +Solution: Do not position the cursor in command line mode. +Files: src/mbyte.c + +Patch 7.3.468 +Problem: For some compilers the error file is not easily readable. +Solution: Use QuickFixCmdPre for more commands. (Marcin Szamotulski) +Files: runtime/doc/autocmd.txt, src/quickfix.c + +Patch 7.3.469 +Problem: Compiler warning for unused argument without some features. +Solution: Add UNUSED. +Files: src/buffer.c + +Patch 7.3.470 +Problem: Test 62 fails when compiled without GUI and X11. +Solution: Don't test :drop when it is not supported. +Files: src/testdir/test62.in + +Patch 7.3.471 +Problem: Can't abort listing placed signs. +Solution: Check "got_int". (Christian Brabandt) +Files: src/buffer.c, src/ex_cmds.c + +Patch 7.3.472 +Problem: Crash when using ":redraw" in a BufEnter autocommand and + switching to another tab. (驼峰) +Solution: Move triggering the autocommands to after correcting the + option values. Also check the row value to be out of bounds. + (Christian Brabandt, Sergey Khorev) +Files: src/screen.c, src/window.c + +Patch 7.3.473 +Problem: 'cursorbind' does not work correctly in combination with + 'virtualedit' set to "all". +Solution: Copy coladd. (Gary Johnson) +Files: src/move.c + +Patch 7.3.474 +Problem: Perl build with gcc 4 fails. +Solution: Remove XS() statements. (Yasuhiro Matsumoto) +Files: src/if_perl.xs + +Patch 7.3.475 +Problem: In a terminal with few colors the omnicomplete menu may be hard to + see when using the default colors. +Solution: Use more explicit colors. (suggested by Alex Henrie) +Files: src/syntax.c + +Patch 7.3.476 +Problem: When selecting a block, using "$" to include the end of each line + and using "A" and typing a backspace strange things happen. + (Yuangchen Xie) +Solution: Avoid using a negative length. (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.477 +Problem: Using ":echo" to output enough lines to scroll, then using "j" and + "k" at the more prompt, displays the command on top of the output. + (Marcin Szamotulski) +Solution: Put the output below the command. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.478 +Problem: Memory leak using the ':rv!' command when reading dictionary or + list global variables i.e. with 'viminfo' containing !. +Solution: Free the typeval. (Dominique Pelle) +Files: src/eval.c + +Patch 7.3.479 +Problem: When 'cursorline' is set the line number highlighting can't be set + separately. +Solution: Add "CursorLineNr". (Howard Buchholz) +Files: src/option.c, src/screen.c, src/syntax.c, src/vim.h + +Patch 7.3.480 +Problem: When using ":qa" and there is a changed buffer picking the buffer + to jump to is not very good. +Solution: Consider current and other tab pages. (Hirohito Higashi) +Files: src/ex_cmds2.c + +Patch 7.3.481 +Problem: Changing 'virtualedit' in an operator function to "all" does not + have the desired effect. (Aaron Bohannon) +Solution: Save, reset and restore virtual_op when executing an operator + function. +Files: src/normal.c + +Patch 7.3.482 +Problem: With 'cursorbind' set moving up/down does not always keep the same + column. +Solution: Set curswant appropriately. (Gary Johnson) +Files: src/move.c + +Patch 7.3.483 (after 7.3.477) +Problem: More prompt shows up too often. +Solution: Instead of adding a line break, only start a new line in the + message history. (Christian Brabandt) +Files: src/eval.c, src/message.c, src/proto/message.pro + +Patch 7.3.484 +Problem: The -E and --echo-wid command line arguments are not mentioned in + "vim --help". +Solution: Add the help lines. (Dominique Pelle) +Files: src/main.c + +Patch 7.3.485 +Problem: When building Vim LDFLAGS isn't passed on to building xxd. +Solution: Pass the LDFLAGS value. (James McCoy) +Files: src/Makefile + +Patch 7.3.486 +Problem: Build error with mingw64 on Windows 7. +Solution: Avoid the step of going through vimres.res. (Guopeng Wen) +Files: src/Make_ming.mak + +Patch 7.3.487 +Problem: When setting 'timeoutlen' or 'ttimeoutlen' the column for vertical + movement is reset unnecessarily. +Solution: Do not set w_set_curswant for every option. Add a test for this. + (Kana Natsuno) Add the P_CURSWANT flag for options. +Files: src/option.c, src/testdir/test84.in, src/testdir/test84.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.3.488 +Problem: ":help!" in a help file does not work as documented. +Solution: When in a help file don't give an error message. (thinca) +Files: src/ex_cmds.c + +Patch 7.3.489 +Problem: CTRL-] in Insert mode does not expand abbreviation when used in a + mapping. (Yichao Zhou) +Solution: Special case using CTRL-]. (Christian Brabandt) +Files: src/getchar.c, src/edit.c + +Patch 7.3.490 +Problem: Member confusion in Lua interface. +Solution: Fix it. Add luaeval(). (Taro Muraoka, Luis Carvalho) +Files: runtime/doc/if_lua.txt, src/eval.c, src/if_lua.c, + src/proto/if_lua.pro + +Patch 7.3.491 +Problem: No tests for Lua. +Solution: Add some simple tests for Lua. (Luis Carvalho) +Files: src/testdir/test1.in, src/testdir/test85.in, src/testdir/test85.ok + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.3.492 +Problem: Can't indent conditions separately from function arguments. +Solution: Add the 'k' flag in 'cino'. (Lech Lorens) +Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, + src/testdir/test3.ok + +Patch 7.3.493 (after 7.3.492) +Problem: Two unused variables. +Solution: Remove them. (Hong Xu) +Files: src/misc1.c + +Patch 7.3.494 (after 7.3.491) +Problem: Can't compile with Lua 5.1 or dynamic Lua. +Solution: Fix dll_ methods. Fix luado(). (Muraoka Taro, Luis Carvalho) +Files: src/if_lua.c + +Patch 7.3.495 (after 7.3.492) +Problem: Compiler warnings. +Solution: Add function declaration. Remove "offset" argument. +Files: src/misc1.c + +Patch 7.3.496 +Problem: MS-DOS: When "diff" trips over difference in line separators some + tests fail. +Solution: Make some .ok files use unix line separators. (David Pope) +Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak + +Patch 7.3.497 +Problem: Crash when doing ":python print" and compiled with gcc and + the optimizer enabled. +Solution: Avoid the crash, doesn't really fix the problem. (Christian + Brabandt) +Files: src/if_py_both.h + +Patch 7.3.498 +Problem: The behavior of the "- register changes depending on value of + the 'clipboard' option. (Szamotulski) +Solution: Also set the "- register when the register is "*" or "+". + (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.499 +Problem: When using any interface language when Vim is waiting for a child + process it gets confused by a child process started through the + interface. +Solution: Always used waitpid() instead of wait(). (Yasuhiro Matsumoto) +Files: src/os_unix.c + +Patch 7.3.500 +Problem: Ming makefile unconditionally sets WINVER. +Solution: Only defined when not already defined. (Yasuhiro Matsumoto) +Files: src/Make_ming.mak + +Patch 7.3.501 +Problem: Error for "flush" not being defined when using Ruby command. +Solution: Defined "flush" as a no-op method. (Kent Sibilev) +Files: src/if_ruby.c + +Patch 7.3.502 +Problem: Netbeans insert halfway a line actually appends to the line. +Solution: Insert halfway the line. (Brian Victor) +Files: src/netbeans.c + +Patch 7.3.503 (after 7.3.501) +Problem: Warning for unused argument. +Solution: Add UNUSED. +Files: src/if_ruby.c + +Patch 7.3.504 +Problem: Commands in help files are not highlighted. +Solution: Allow for commands in backticks. Adjust CTRL-] to remove the + backticks. +Files: src/ex_cmds.c + +Patch 7.3.505 +Problem: Test 11 fails on MS-Windows in some versions. +Solution: Fix #ifdefs for whether filtering through a pipe is possible. Move + setting b_no_eol_lnum back to where it was before patch 7.3.124. + (David Pope) +Files: src/feature.h, src/eval.c, src/ex_cmds.c, src/fileio.c + +Patch 7.3.506 +Problem: GTK gives an error when selecting a non-existent file. +Solution: Add a handler to avoid the error. (Christian Brabandt) +Files: src/gui_gtk.c + +Patch 7.3.507 +Problem: When exiting with unsaved changes, selecting an existing file in + the file dialog, there is no dialog to ask whether the existing + file should be overwritten. (Felipe G. Nievinski) +Solution: Call check_overwrite() before writing. (Christian Brabandt) +Files: src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds.pro + +Patch 7.3.508 +Problem: Default for v:register is not set. +Solution: Init v:register in eval_init(). Correct for 'clipboard' before the + main loop. (Ingo Karkat) +Files: src/eval.c, src/main.c + +Patch 7.3.509 +Problem: ":vimgrep" fails when 'autochdir' is set. +Solution: A more generic solution for changing directory. (Ben Fritz) +Files: src/quickfix.c + +Patch 7.3.510 +Problem: Test 77 fails on Solaris 7. (Michael Soyka) +Solution: Replace any tabs with spaces. +Files: src/testdir/test77.in + +Patch 7.3.511 +Problem: Using a FileReadCmd autocommand that does ":e! {file}" may cause a + crash. (Christian Brabandt) +Solution: Properly restore curwin->w_s. +Files: src/fileio.c + +Patch 7.3.512 +Problem: undofile() returns a useless name when passed an empty string. +Solution: Return an empty string. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.513 +Problem: Cannot use CTRL-E and CTRL-Y with "r". +Solution: Make CTRL-E and CTRL-Y work like in Insert mode. (Christian + Brabandt) +Files: src/edit.c, src/normal.c, src/proto/edit.pro + +Patch 7.3.514 +Problem: No completion for :history command. +Solution: Add the completion and update the docs. Also fix ":behave" + completion. (Dominique Pelle) +Files: runtime/doc/cmdline.txt, runtime/doc/map.txt, src/ex_docmd.c, + src/ex_getln.c, src/vim.h + +Patch 7.3.515 +Problem: 'wildignorecase' only applies to the last part of the path. +Solution: Also ignore case for letters earlier in the path. +Files: src/misc1.c + +Patch 7.3.516 +Problem: extend(o, o) may crash Vim. +Solution: Fix crash and add test. (Thinca and Hirohito Higashi) +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.3.517 +Problem: Crash when using "vipvv". (Alexandre Provencio) +Solution: Don't let the text length become negative. +Files: src/ops.c + +Patch 7.3.518 +Problem: When 'encoding' is a double-byte encoding ":helptags" may not find + tags correctly. +Solution: Use vim_strbyte() instead of vim_strchr(). (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + +Patch 7.3.519 +Problem: When completefunction returns it cannot indicate end of completion + mode. +Solution: Recognize completefunction returning -3. (Matsushita Shougo) +Files: src/edit.c + +Patch 7.3.520 +Problem: Gvim starts up slow on Ubuntu 12.04. +Solution: Move the call to gui_mch_init_check() to after fork(). (Yasuhiro + Matsumoto) Do check $DISPLAY being set. +Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro + +Patch 7.3.521 +Problem: Using "z=" on a multi-byte character may cause a crash. +Solution: Don't use strlen() on an int pointer. +Files: src/spell.c + +Patch 7.3.522 +Problem: Crash in vim_realloc() when using MEM_PROFILE. +Solution: Avoid using a NULL argument. (Dominique Pelle) +Files: src/eval.c + +Patch 7.3.523 +Problem: ":diffupdate" doesn't check for files changed elsewhere. +Solution: Add the ! flag. (Christian Brabandt) +Files: runtime/doc/diff.txt, src/diff.c, src/ex_cmds.h + +Patch 7.3.524 (after 7.3.523) +Problem: Missing comma. +Solution: Add the comma. +Files: src/version.c + +Patch 7.3.525 +Problem: Compiler warning on 64 bit MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/ex_getln.c + +Patch 7.3.526 +Problem: Confusing indenting for #ifdef. +Solution: Remove and add indent. (Elias Diem) +Files: src/normal.c + +Patch 7.3.527 +Problem: Clang complains about non-ASCII characters in a string. +Solution: Change to \x88 form. (Dominique Pelle) +Files: src/charset.c + +Patch 7.3.528 +Problem: Crash when closing last window in a tab. (Alex Efros) +Solution: Use common code in close_last_window_tabpage(). (Christian + Brabandt) +Files: src/window.c + +Patch 7.3.529 +Problem: Using a count before "v" and "V" does not work (Kikyous) +Solution: Make the count select that many characters or lines. (Christian + Brabandt) +Files: src/normal.c + +Patch 7.3.530 (after 7.3.520) +Problem: Gvim does not work when 'guioptions' includes "f". (Davido) +Solution: Call gui_mch_init_check() when running GUI in the foreground. + (Yasuhiro Matsumoto) +Files: src/gui.c + +Patch 7.3.531 (after 7.3.530) +Problem: GUI does not work on MS-Windows. +Solution: Add the missing #ifdef. (Patrick Avery) +Files: src/gui.c + +Patch 7.3.532 +Problem: Compiler warning from Clang. +Solution: Use a different way to point inside a string. (Dominique Pelle) +Files: src/syntax.c + +Patch 7.3.533 +Problem: Memory leak when writing undo file. +Solution: Free the ACL. (Dominique Pelle) +Files: src/undo.c + +Patch 7.3.534 (after 7.3.461) +Problem: When using an InsertCharPre autocommand autoindent fails. +Solution: Proper handling of v:char. (Alexey Radkov) +Files: src/edit.c + +Patch 7.3.535 +Problem: Many #ifdefs for MB_MAXBYTES. +Solution: Also define MB_MAXBYTES without the +multi_byte feature. Fix + places where the buffer didn't include space for a NUL byte. +Files: src/arabic.c, src/edit.c, src/eval.c, src/getchar.c, src/mbyte.c, + src/misc1.c, src/screen.c, src/spell.c, src/vim.h + +Patch 7.3.536 +Problem: When spell checking the German sharp s is not seen as a word + character. (Aexl Bender) +Solution: In utf_islower() return true for the sharp s. Note: also need + updated spell file for this to take effect. +Files: src/mbyte.c + +Patch 7.3.537 +Problem: Unnecessary call to init_spell_chartab(). +Solution: Delete the call. +Files: src/spell.c + +Patch 7.3.538 +Problem: 'efm' does not handle Tabs in pointer lines. +Solution: Add Tab support. Improve tests. (Lech Lorens) +Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok + +Patch 7.3.539 +Problem: Redrawing a character on the command line does not work properly + for multi-byte characters. +Solution: Count the number of bytes in a character. (Yukihiro Nakadaira) +Files: src/ex_getln.c + +Patch 7.3.540 +Problem: Cursor is left on the text instead of the command line. +Solution: Don't call setcursor() in command line mode. +Files: src/getchar.c + +Patch 7.3.541 +Problem: When joining lines comment leaders need to be removed manually. +Solution: Add the 'j' flag to 'formatoptions'. (Lech Lorens) +Files: runtime/doc/change.txt, src/edit.c, src/ex_docmd.c, src/misc1.c, + src/normal.c, src/ops.c, src/option.h, src/proto/misc1.pro, + src/proto/ops.pro, src/search.c, src/testdir/test29.in, + src/testdir/test29.ok + +Patch 7.3.542 (after 7.3.506) +Problem: Function is sometimes unused. +Solution: Add #ifdef. +Files: src/gui_gtk.c + +Patch 7.3.543 +Problem: The cursor is in the wrong line after using ":copen". (John + Beckett) +Solution: Invoke more drastic redraw method. +Files: src/eval.c + +Patch 7.3.544 +Problem: There is no good way to close a quickfix window when closing the + last ordinary window. +Solution: Add the QuitPre autocommand. +Files: src/ex_docmd.c, src/fileio.c, src/vim.h + +Patch 7.3.545 +Problem: When closing a window or buffer autocommands may close it too, + causing problems for where the autocommand was invoked from. +Solution: Add the w_closing and b_closing flags. When set disallow ":q" and + ":close" to prevent recursive closing. +Files: src/structs.h, src/buffer.c, src/ex_docmd.c, src/window.c + +Patch 7.3.546 +Problem: Bogus line break. +Solution: Remove the line break. +Files: src/screen.c + +Patch 7.3.547 (after 7.3.541) +Problem: Compiler warning for uninitialized variable. +Solution: Initialize it. +Files: src/ops.c + +Patch 7.3.548 +Problem: Compiler warning on 64 bit Windows. +Solution: Add type cast. (Mike Williams) +Files: src/ops.c + +Patch 7.3.549 +Problem: In 'cinoptions' "0s" is interpreted as one shiftwidth. (David + Pineau) +Solution: Use the zero as zero. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.550 (after 7.3.541) +Problem: With "j" in 'formatoptions' a list leader is not removed. (Gary + Johnson) +Solution: Don't ignore the start of a three part comment. (Lech Lorens) +Files: src/ops.c, src/testdir/test29.in, src/testdir/test29.ok + +Patch 7.3.551 +Problem: When using :tablose a TabEnter autocommand is triggered too early. + (Karthick) +Solution: Don't trigger *Enter autocommands before closing the tab. + (Christian Brabandt) +Files: src/buffer.c, src/eval.c, src/ex_cmds2.c, src/fileio.c, + src/proto/window.pro, src/window.c + +Patch 7.3.552 +Problem: Formatting inside comments does not use the "2" flag in + 'formatoptions'. +Solution: Support the "2" flag. (Tor Perkins) +Files: src/vim.h, src/ops.c, src/edit.c, src/misc1.c, + src/testdir/test68.in, src/testdir/test68.ok + +Patch 7.3.553 +Problem: With double-width characters and 'listchars' containing "precedes" + the text is displayed one cell off. +Solution: Check for double-width character being overwritten by the + "precedes" character. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 7.3.554 (after 7.3.551) +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/window.c + +Patch 7.3.555 +Problem: Building on IBM z/OS fails. +Solution: Adjust configure. Use the QUOTESED value from config.mk instead of + the hard coded one in Makefile. (Stephen Bovy) +Files: src/configure.in, src/auto/configure, src/Makefile + +Patch 7.3.556 +Problem: Compiler warnings on 64 bit Windows. +Solution: Add type casts. (Mike Williams) +Files: src/misc1.c + +Patch 7.3.557 +Problem: Crash when an autocommand wipes out a buffer when it is hidden. +Solution: Restore the current window when needed. (Christian Brabandt) +Files: src/buffer.c + +Patch 7.3.558 +Problem: Memory access error. (Gary Johnson) +Solution: Allocate one more byte. (Dominique Pelle) +Files: src/misc1.c + +Patch 7.3.559 +Problem: home_replace() does not work with 8.3 filename. +Solution: Make ":p" expand 8.3 name to full path. (Yasuhiro Matsumoto) +Files: src/eval.c, src/misc1.c + +Patch 7.3.560 +Problem: Get an error for a locked argument in extend(). +Solution: Initialize the lock flag for a dictionary. (Yukihiro Nakadaira) +Files: src/eval.c + +Patch 7.3.561 +Problem: Using refresh: always in a complete function breaks the "." + command. (Val Markovic) +Solution: Add match leader to the redo buffer. (Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 7.3.562 +Problem: ":profdel" should not work when the +profile feature is disabled. +Solution: Call ex_ni(). (Yasuhiro Matsumoto) +Files: src/ex_cmds2.c + +Patch 7.3.563 (after 7.3.557) +Problem: Can't build with tiny features. +Solution: Add #ifdef. +Files: src/buffer.c + +Patch 7.3.564 (after 7.3.559) +Problem: Warning for pointer conversion. +Solution: Add type cast. +Files: src/misc1.c + +Patch 7.3.565 +Problem: Can't generate proto file for Python 3. +Solution: Add PYTHON3_CFLAGS to LINT_CFLAGS. +Files: src/Makefile + +Patch 7.3.566 (after 7.3.561) +Problem: Redo after completion does not work correctly when refresh: always + is not used. (Raymond Ko) +Solution: Check the compl_opt_refresh_always flag. (Christian Brabandt) +Files: src/edit.c + +Patch 7.3.567 +Problem: Missing copyright notice. +Solution: Add Vim copyright notice. (Taro Muraoka) +Files: src/dehqx.py + +Patch 7.3.568 +Problem: Bad indents for #ifdefs. +Solution: Add and remove spaces. (Elias Diem) +Files: src/globals.h + +Patch 7.3.569 +Problem: Evaluating Vim expression in Python is insufficient. +Solution: Add vim.bindeval(). Also add pyeval() and py3eval(). (ZyX) +Files: runtime/doc/eval.txt, runtime/doc/if_pyth.txt, src/eval.c, + src/if_lua.c, src/if_py_both.h, src/if_python.c, src/if_python3.c, + src/proto/eval.pro, src/proto/if_python.pro, + src/proto/if_python3.pro, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Makefile, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.570 +Problem: ":vimgrep" does not obey 'wildignore'. +Solution: Apply 'wildignore' and 'suffixes' to ":vimgrep". (Ingo Karkat) +Files: src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/quickfix.c, src/spell.c + +Patch 7.3.571 +Problem: Duplicated condition. +Solution: Remove one. (Dominique Pelle) +Files: src/os_win32.c + +Patch 7.3.572 +Problem: Duplicate statement in if and else. (Dominique Pelle) +Solution: Remove the condition and add a TODO. +Files: src/gui_xmebw.c + +Patch 7.3.573 +Problem: Using array index before bounds checking. +Solution: Swap the parts of the condition. (Dominique Pelle) +Files: src/ops.c + +Patch 7.3.574 +Problem: When pasting a register in the search command line a CTRL-L + character is not pasted. (Dominique Pelle) +Solution: Escape the CTRL-L. (Christian Brabandt) +Files: src/ex_getln.c + +Patch 7.3.575 +Problem: "ygt" tries to yank instead of giving an error. (Daniel Mueller) +Solution: Check for a pending operator. +Files: src/normal.c + +Patch 7.3.576 +Problem: Formatting of lists inside comments is not right yet. +Solution: Use another solution and add a test. (Tor Perkins) +Files: src/edit.c, src/misc1.c, src/testdir/test68.in, + src/testdir/test69.ok + +Patch 7.3.577 +Problem: Size of memory does not fit in 32 bit unsigned. +Solution: Use Kbyte instead of byte. Call GlobalMemoryStatusEx() instead of + GlobalMemoryStatus() when available. +Files: src/misc2.c, src/option.c, src/os_amiga.c, src/os_msdos.c, + src/os_win16.c, src/os_win32.c + +Patch 7.3.578 +Problem: Misplaced declaration. +Solution: Move declaration to start of block. +Files: src/if_py_both.h + +Patch 7.3.579 (after 7.3.569) +Problem: Can't compile with Python 2.5. +Solution: Use PyCObject when Capsules are not available. +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.580 +Problem: Warning on 64 bit MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/if_py_both.h + +Patch 7.3.581 +Problem: Problems compiling with Python. +Solution: Pick UCS2 or UCS4 function at runtime. (lilydjwg) +Files: src/if_python.c + +Patch 7.3.582 (after 7.3.576) +Problem: Missing parts of the test OK file. +Solution: Add the missing parts. +Files: src/testdir/test68.ok + +Patch 7.3.583 +Problem: PyObject_NextNotImplemented is not defined before Python 2.7. + (Danek Duvall) +Solution: Add #ifdefs. +Files: src/if_python.c + +Patch 7.3.584 +Problem: PyCObject is not always defined. +Solution: Use PyObject instead. +Files: src/if_py_both.h, src/if_python.c + +Patch 7.3.585 +Problem: Calling changed_bytes() too often. +Solution: Move changed_bytes() out of a loop. (Tor Perkins) +Files: src/edit.c + +Patch 7.3.586 +Problem: When compiling with Cygwin or MingW MEMORYSTATUSEX is not defined. +Solution: Set the default for WINVER to 0x0500. +Files: src/Make_ming.mak, src/Make_cyg.mak + +Patch 7.3.587 +Problem: Compiler warning for local var shadowing global var. +Solution: Rename the var and move it to an inner block. (Christian Brabandt) +Files: src/buffer.c + +Patch 7.3.588 +Problem: Crash on NULL pointer. +Solution: Fix the immediate problem by checking for NULL. (Lech Lorens) +Files: src/window.c + +Patch 7.3.589 +Problem: Crash when $HOME is not set. +Solution: Check for a NULL pointer. (Chris Webb) +Files: src/misc1.c + +Patch 7.3.590 +Problem: The '< and '> marks cannot be set directly. +Solution: Allow setting '< and '>. (Christian Brabandt) +Files: src/mark.c + +Patch 7.3.591 +Problem: Can only move to a tab by absolute number. +Solution: Move a number of tabs to the left or the right. (Lech Lorens) +Files: runtime/doc/tabpage.txt, src/ex_cmds.h, src/ex_docmd.c, + src/testdir/test62.in, src/testdir/test62.ok, src/window.c + +Patch 7.3.592 +Problem: Vim on GTK does not support g:browsefilter. +Solution: Add a GtkFileFilter to the file chooser. (Christian Brabandt) +Files: src/gui_gtk.c + +Patch 7.3.593 +Problem: No easy way to decide if b:browsefilter will work. +Solution: Add the browsefilter feature. +Files: src/gui_gtk.c, src/eval.c, src/vim.h + +Patch 7.3.594 +Problem: The X command server doesn't work perfectly. It sends an empty + reply for as-keys requests. +Solution: Remove duplicate ga_init2(). Do not send a reply for as-keys + requests. (Brian Burns) +Files: src/if_xcmdsrv.c + +Patch 7.3.595 +Problem: The X command server responds slowly +Solution: Change the loop that waits for replies. (Brian Burns) +Files: src/if_xcmdsrv.c + +Patch 7.3.596 +Problem: Can't remove all signs for a file or buffer. +Solution: Support "*" for the sign id. (Christian Brabandt) +Files: runtime/doc/sign.txt, src/buffer.c, src/ex_cmds.c, + src/proto/buffer.pro + +Patch 7.3.597 +Problem: 'clipboard' "autoselect" only applies to the * register. (Sergey + Vakulenko) +Solution: Make 'autoselect' work for the + register. (Christian Brabandt) + Add the "autoselectplus" option in 'clipboard' and the "P" flag in + 'guioptions'. +Files: runtime/doc/options.txt, src/normal.c, src/ops.c, src/screen.c, + src/ui.c, src/globals.h, src/proto/ui.pro, src/option.h, src/gui.c + +Patch 7.3.598 +Problem: Cannot act upon end of completion. (Taro Muraoka) +Solution: Add an autocommand event that is triggered when completion has + finished. (Idea by Florian Klein) +Files: src/edit.c, src/fileio.c, src/vim.h + +Patch 7.3.599 (after 7.3.597) +Problem: Missing change in one file. +Solution: Patch for changed clip_autoselect(). +Files: src/option.c + +Patch 7.3.600 +Problem: <f-args> is not expanded properly with DBCS encoding. +Solution: Skip over character instead of byte. (Yukihiro Nakadaira) +Files: src/ex_docmd.c + +Patch 7.3.601 +Problem: Bad code style. +Solution: Insert space, remove parens. +Files: src/farsi.c + +Patch 7.3.602 +Problem: Missing files in distribution. +Solution: Update the list of files. +Files: Filelist + +Patch 7.3.603 +Problem: It is possible to add replace builtin functions by calling + extend() on g:. +Solution: Add a flag to a dict to indicate it is a scope. Check for + existing functions. (ZyX) +Files: src/buffer.c, src/eval.c, src/proto/eval.pro, src/structs.h, + src/testdir/test34.in, src/testdir/test34.ok, src/window.c + +Patch 7.3.604 +Problem: inputdialog() doesn't use the cancel argument in the console. + (David Fishburn) +Solution: Use the third argument. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.605 (after 7.3.577) +Problem: MS-Windows: Can't compile with older compilers. (Titov Anatoly) +Solution: Add #ifdef for MEMORYSTATUSEX. +Files: src/os_win32.c + +Patch 7.3.606 +Problem: CTRL-P completion has a problem with multi-byte characters. +Solution: Check for next character being NUL properly. (Yasuhiro Matsumoto) +Files: src/search.c, src/macros.h + +Patch 7.3.607 +Problem: With an 8 color terminal the selected menu item is black on black, + because darkGrey as bg is the same as black. +Solution: Swap fg and bg colors. (James McCoy) +Files: src/syntax.c + +Patch 7.3.608 +Problem: winrestview() does not always restore the view correctly. +Solution: Call win_new_height() and win_new_width(). (Lech Lorens) +Files: src/eval.c, src/proto/window.pro, src/window.c + +Patch 7.3.609 +Problem: File names in :checkpath! output are garbled. +Solution: Check for \zs in the pattern. (Lech Lorens) +Files: src/search.c, src/testdir/test17.in, src/testdir/test17.ok + +Patch 7.3.610 +Problem: Cannot operate on the text that a search pattern matches. +Solution: Add the "gn" and "gN" commands. (Christian Brabandt) +Files: runtime/doc/index.txt, runtime/doc/visual.txt, src/normal.c, + src/proto/search.pro, src/search.c, src/testdir/test53.in, + src/testdir/test53.ok + +Patch 7.3.611 +Problem: Can't use Vim dictionary as self argument in Python. +Solution: Fix the check for the "self" argument. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.612 +Problem: Auto formatting messes up text when 'fo' contains "2". (ZyX) +Solution: Decrement "less_cols". (Tor Perkins) +Files: src/misc1.c, src/testdir/test68.in, src/testdir/test68.ok + +Patch 7.3.613 +Problem: Including Python's config.c in the build causes trouble. It is + not clear why it was there. +Solution: Omit the config file. (James McCoy) +Files: src/Makefile, src/auto/configure, src/configure.in + +Patch 7.3.614 +Problem: Number argument gets turned into a number while it should be a + string. +Solution: Add flag to the call_vim_function() call. (Yasuhiro Matsumoto) +Files: src/edit.c, src/eval.c, src/proto/eval.pro + +Patch 7.3.615 +Problem: Completion for a user command does not recognize backslash before + a space. +Solution: Recognize escaped characters. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + +Patch 7.3.616 (after 7.3.610) +Problem: Can't compile without +visual. +Solution: Add #ifdef. +Files: src/normal.c + +Patch 7.3.617 (after 7.3.615) +Problem: Hang on completion. +Solution: Skip over the space. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + +Patch 7.3.618 (after 7.3.616) +Problem: Still doesn't compile with small features. +Solution: Move current_search() out of #ifdef. (Dominique Pelle) +Files: src/normal.c, src/search.c + +Patch 7.3.619 +Problem: When executing a shell command Vim may become slow to respond. +Solution: Don't wait after every processed message. (idea by Yasuhiro + Matsumoto) +Files: src/os_win32.c + +Patch 7.3.620 +Problem: Building with recent Ruby on Win32 doesn't work. +Solution: Add a separate argument for the API version. (Yasuhiro Matsumoto) +Files: src/Make_ming.mak, src/Make_mvc.mak + +Patch 7.3.621 +Problem: Compiler warnings on 64 bit windows. +Solution: Add type casts. (Mike Williams) +Files: src/ex_docmd.c, src/search.c + +Patch 7.3.622 +Problem: XPM library for Win32 can't be found. +Solution: Suggest using the one from the Vim ftp site. +Files: src/Make_mvc.mak + +Patch 7.3.623 +Problem: Perl 5.14 commands crash Vim on MS-Windows. +Solution: Use perl_get_sv() instead of GvSV(). (Raymond Ko) +Files: src/if_perl.xs + +Patch 7.3.624 +Problem: When cancelling input() it returns the third argument. That should + only happen for inputdialog(). +Solution: Check if inputdialog() was used. (Hirohito Higashi) +Files: src/eval.c + +Patch 7.3.625 +Problem: "gn" does not handle zero-width matches correctly. +Solution: Handle zero-width patterns specially. (Christian Brabandt) +Files: src/search.c + +Patch 7.3.626 +Problem: Python interface doesn't build with Python 2.4 or older. +Solution: Define Py_ssize_t. (Benjamin Bannier) +Files: src/if_py_both.h + +Patch 7.3.627 +Problem: When using the "n" flag with the ":s" command a \= substitution + will not be evaluated. +Solution: Do perform the evaluation, so that a function can be invoked at + every matching position without changing the text. (Christian + Brabandt) +Files: src/ex_cmds.c + +Patch 7.3.628 +Problem: ":open" does not allow for a !, which results in a confusing error + message. (Shawn Wilson) +Solution: Allow ! on ":open". (Christian Brabandt) +Files: src/ex_cmds.h + +Patch 7.3.629 +Problem: There is no way to make 'shiftwidth' follow 'tabstop'. +Solution: When 'shiftwidth' is zero use the value of 'tabstop'. (Christian + Brabandt) +Files: src/edit.c, src/ex_getln.c, src/fold.c, src/misc1.c, src/ops.c, + src/option.c, src/proto/option.pro + +Patch 7.3.630 +Problem: "|" does not behave correctly when 'virtualedit' is set. +Solution: Call validate_virtcol(). (David Bürgin) +Files: src/normal.c + +Patch 7.3.631 +Problem: Cannot complete user names. +Solution: Add user name completion. (Dominique Pelle) +Files: runtime/doc/map.txt, src/auto/configure, src/config.h.in, + src/configure.in, src/ex_docmd.c, src/ex_getln.c, src/misc1.c, + src/misc2.c, src/proto/misc1.pro, src/vim.h + +Patch 7.3.632 +Problem: Cannot select beyond 222 columns with the mouse in xterm. +Solution: Add support for SGR mouse tracking. (Hayaki Saito) +Files: runtime/doc/options.txt, src/feature.h, src/keymap.h, src/misc2.c, + src/option.h, src/os_unix.c, src/term.c, src/version.c + +Patch 7.3.633 +Problem: Selection remains displayed as selected after selecting another + text. +Solution: Call xterm_update() before select(). (Andrew Pimlott) +Files: src/os_unix.c + +Patch 7.3.634 +Problem: Month/Day format for undo is confusing. (Marcin Szamotulski) +Solution: Always use Year/Month/Day, should work for everybody. +Files: src/undo.c + +Patch 7.3.635 +Problem: Issue 21: System call during startup sets 'lines' to a wrong + value. (Karl Yngve) +Solution: Don't set the shell size while the GUI is still starting up. + (Christian Brabandt) +Files: src/ui.c + +Patch 7.3.636 (after 7.3.625) +Problem: Not all zero-width matches handled correctly for "gn". +Solution: Move zero-width detection to a separate function. (Christian + Brabandt) +Files: src/search.c + +Patch 7.3.637 +Problem: Cannot catch the error caused by a foldopen when there is no fold. + (ZyX, Issue 48) +Solution: Do not break out of the loop early when inside try/catch. + (Christian Brabandt) Except when there is a syntax error. +Files: src/ex_docmd.c, src/globals.h + +Patch 7.3.638 +Problem: Unnecessary redraw of the previous character. +Solution: Check if the character is double-width. (Jon Long) +Files: src/screen.c + +Patch 7.3.639 +Problem: It's not easy to build Vim on Windows with XPM support. +Solution: Include the required files, they are quite small. Update the + MSVC makefile to use them. Binary files are in the next patch. + (Sergey Khorev) +Files: src/xpm/COPYRIGHT, src/xpm/README.txt, src/xpm/include/simx.h, + src/xpm/include/xpm.h, src/Make_mvc.mak, src/bigvim.bat, + src/bigvim64.bat, Filelist + +Patch 7.3.640 +Problem: It's not easy to build Vim on Windows with XPM support. +Solution: Binary files for 7.3.639. (Sergey Khorev) +Files: src/xpm/x64/lib/libXpm.lib, src/xpm/x86/lib/libXpm.a, + src/xpm/x86/lib/libXpm.lib + +Patch 7.3.641 +Problem: ":mkview" uses ":normal" instead of ":normal!" for folds. (Dan) +Solution: Add the bang. (Christian Brabandt) +Files: src/fold.c + +Patch 7.3.642 +Problem: Segfault with specific autocommands. Was OK after 7.3.449 and + before 7.3.545. (Richard Brown) +Solution: Pass TRUE for abort_if_last in the call to close_buffer(). + (Christian Brabandt) +Files: src/window.c + +Patch 7.3.643 (after 7.3.635) +Problem: MS-Windows: When starting gvim maximized 'lines' and 'columns' are + wrong. (Christian Robinson) +Solution: Move the check for gui.starting from ui_get_shellsize() to + check_shellsize(). +Files: src/ui.c, src/term.c + +Patch 7.3.644 +Problem: Dead code for BeOS GUI. +Solution: Remove unused __BEOS__ stuff. +Files: src/gui.c + +Patch 7.3.645 +Problem: No tests for patch 7.3.625 and 7.3.637. +Solution: Add more tests for the "gn" command and try/catch. (Christian + Brabandt) +Files: src/testdir/test53.in, src/testdir/test53.ok, + src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.3.646 +Problem: When reloading a buffer the undo file becomes unusable unless ":w" + is executed. (Dmitri Frank) +Solution: After reloading the buffer write the undo file. (Christian + Brabandt) +Files: src/fileio.c + +Patch 7.3.647 +Problem: "gnd" doesn't work correctly in Visual mode. +Solution: Handle Visual mode differently in "gn". (Christian Brabandt) +Files: src/search.c, src/testdir/test53.in, src/testdir/test53.ok + +Patch 7.3.648 +Problem: Crash when using a very long file name. (ZyX) +Solution: Properly check length of buffer space. +Files: src/buffer.c + +Patch 7.3.649 +Problem: When 'clipboard' is set to "unnamed" small deletes end up in the + numbered registers. (Ingo Karkat) +Solution: Use the original register name to decide whether to put a delete + in a numbered register. (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.650 +Problem: Completion after ":help \{-" gives an error message and messes up + the command line. +Solution: Cancel the tag search if the pattern can't be compiled. (Yasuhiro + Matsumoto) +Files: src/tag.c + +Patch 7.3.651 +Problem: Completion after ":help \{-" gives an error message. +Solution: Prepend a backslash. +Files: src/ex_cmds.c + +Patch 7.3.652 +Problem: Workaround for Python crash isn't perfect. +Solution: Change the type of the length argument. (Sean Estabrooks) +Files: src/if_py_both.h + +Patch 7.3.653 +Problem: MingW needs build rule for included XPM files. Object directory + for 32 and 64 builds is the same, also for MSVC. +Solution: Add MingW build rule to use included XPM files. Add the CPU or + architecture to the object directory name. (Sergey Khorev) +Files: src/Make_ming.mak, src/Make_mvc.mak, src/xpm/README.txt + +Patch 7.3.654 +Problem: When creating a Vim dictionary from Python objects an empty key + might be used. +Solution: Do not use empty keys, throw an IndexError. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.655 +Problem: 64 bit MingW xpm .a file is missing. +Solution: Add the file. (Sergey Khorev) +Files: src/xpm/x64/lib/libXpm.a + +Patch 7.3.656 +Problem: Internal error in :pyeval. +Solution: Handle failed object conversion. (ZyX) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.657 +Problem: Python bindings silently truncate string values containing NUL. +Solution: Fail when a string contains NUL. (ZyX) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.658 +Problem: NUL bytes truncate strings when converted from Python. +Solution: Handle truncation as an error. (ZyX) +Files: src/if_py_both.h, src/if_python3.c + +Patch 7.3.659 +Problem: Recent Python changes are not tested. +Solution: Add tests for Python bindings. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.660 +Problem: ":help !" jumps to help for ":!". +Solution: Adjust check for tag header line. (Andy Wokula) +Files: src/tag.c + +Patch 7.3.661 (after 7.3.652) +Problem: SEGV in Python code. +Solution: Initialize len to zero. Use the right function depending on + version. (Maxim Philippov) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.662 +Problem: Can't build Ruby interface with Ruby 1.9.3. +Solution: Add missing functions. (V. Ondruch) +Files: src/if_ruby.c + +Patch 7.3.663 +Problem: End of color scheme name not clear in E185. (Aaron Lewis) +Solution: Put the name in single quotes. +Files: src/ex_docmd.c + +Patch 7.3.664 +Problem: Buffer overflow in unescaping text. (Raymond Ko) +Solution: Limit check for multi-byte character to 4 bytes. +Files: src/mbyte.c + +Patch 7.3.665 +Problem: MSVC 11 is not supported. (Raymond Ko) +Solution: Recognize MSVC 11. (Gary Willoughby) +Files: src/Make_mvc.mak + +Patch 7.3.666 +Problem: With MSVC 11 Win32.mak is not found. +Solution: Add the SDK_INCLUDE_DIR variable. (Raymond Ko) +Files: src/Make_mvc.mak + +Patch 7.3.667 +Problem: Unused variables in Perl interface. +Solution: Adjust #ifdefs. +Files: src/if_perl.xs + +Patch 7.3.668 +Problem: Building with Perl loaded dynamically still uses static library. +Solution: Adjust use of PL_thr_key. (Ken Takata) +Files: src/if_perl.xs + +Patch 7.3.669 +Problem: When building with Cygwin loading Python dynamically fails. +Solution: Use DLLLIBRARY instead of INSTSONAME. (Ken Takata) +Files: src/configure.in, src/auto/configure + +Patch 7.3.670 +Problem: Python: memory leaks when there are exceptions. +Solution: Add DICTKEY_UNREF in the right places. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.671 +Problem: More Python code can be shared between Python 2 and 3. +Solution: Move code to if_py_both.h. (ZyX) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.672 +Problem: Not possible to lock/unlock lists in Python interface. +Solution: Add .locked and .scope attributes. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python.c, + src/if_python3.c, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.673 +Problem: Using "gN" while 'selection' is "exclusive" misses one character. + (Ben Fritz) +Solution: Check the direction when compensating for exclusive selection. + (Christian Brabandt) +Files: src/search.c + +Patch 7.3.674 +Problem: Can't compile with Lua/dyn on Cygwin. +Solution: Adjust configure to use the right library name. (Ken Takata) +Files: src/configure.in, src/auto/configure + +Patch 7.3.675 +Problem: Using uninitialized memory with very long file name. +Solution: Put NUL after text when it is truncated. (ZyX) +Files: src/buffer.c + +Patch 7.3.676 +Problem: Ruby compilation on Windows 32 bit doesn't work. +Solution: Only use some functions for 64 bit. (Ken Takata) +Files: src/if_ruby.c + +Patch 7.3.677 +Problem: buf_spname() is used inconsistently. +Solution: Make the return type a char_u pointer. Check the size of the + returned string. +Files: src/buffer.c, src/proto/buffer.pro, src/ex_cmds2.c, + src/ex_docmd.c, src/memline.c, src/screen.c + +Patch 7.3.678 +Problem: Ruby .so name may not be correct. +Solution: Use the LIBRUBY_SO entry from the config. (Vit Ondruch) +Files: src/configure.in, src/auto/configure + +Patch 7.3.679 +Problem: Ruby detection uses Config, newer Ruby versions use RbConfig. +Solution: Detect the need to use RbConfig. (Vit Ondruch) +Files: src/configure.in, src/auto/configure + +Patch 7.3.680 +Problem: Some files missing in the list of distributed files. +Solution: Add lines for new files. +Files: Filelist + +Patch 7.3.681 (after 7.3.680) +Problem: List of distributed files picks up backup files. +Solution: Make tutor patterns more specific. +Files: Filelist + +Patch 7.3.682 (after 7.3.677) +Problem: Compiler complains about incompatible types. +Solution: Remove type casts. (hint by Danek Duvall) +Files: src/edit.c + +Patch 7.3.683 +Problem: ":python" may crash when vimbindeval() returns None. +Solution: Check for v_string to be NULL. (Yukihiro Nakadaira) +Files: src/if_py_both.h + +Patch 7.3.684 +Problem: "make test" does not delete lua.vim. +Solution: Add lua.vim to the clean target. (Simon Ruderich) +Files: src/testdir/Makefile, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_vms.mms + +Patch 7.3.685 +Problem: No test for what patch 7.3.673 fixes. +Solution: Add a test. (Christian Brabandt) +Files: src/testdir/test53.in, src/testdir/test53.ok + +Patch 7.3.686 +Problem: Using CTRL-\ e mappings is useful also when entering an + expression, but it doesn't work. (Marcin Szamotulski) +Solution: Allow using CTRL-\ e when entering an expression if it was not + typed. +Files: src/ex_getln.c + +Patch 7.3.687 +Problem: Test 16 fails when $DISPLAY is not set. +Solution: Skip the test when $DISPLAY is not set. +Files: src/testdir/test16.in + +Patch 7.3.688 +Problem: Python 3.3 is not supported. +Solution: Add Python 3.3 support (Ken Takata) +Files: src/if_python3.c + +Patch 7.3.689 +Problem: MzScheme and Lua may use a NULL string. +Solution: Use an empty string instead of NULL. (Yukihiro Nakadaira) +Files: src/if_lua.c, src/if_mzsch.c + +Patch 7.3.690 +Problem: When the current directory name is exactly the maximum path length + Vim may crash. +Solution: Only add "/" when there is room. (Danek Duvall) +Files: src/os_unix.c + +Patch 7.3.691 +Problem: State specific to the Python thread is discarded. +Solution: Keep state between threads. (Paul) +Files: src/if_python.c + +Patch 7.3.692 +Problem: Can't build GTK version with GTK 2.0. +Solution: Put GtkFileFilter declaration in the right place. (Yegappan + Lakshmanan) +Files: src/gui_gtk.c + +Patch 7.3.693 +Problem: Can't make 'softtabstop' follow 'shiftwidth'. +Solution: When 'softtabstop' is negative use the value of 'shiftwidth'. + (so8res) +Files: src/edit.c, src/option.c, src/proto/option.pro + +Patch 7.3.694 +Problem: Now that 'shiftwidth' may use the value of 'tabstop' it is not so + easy to use in indent files. +Solution: Add the shiftwidth() function. (so8res) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.3.695 +Problem: Balloon cannot show multi-byte text. +Solution: Properly deal with multi-byte characters. (Dominique Pelle) +Files: src/gui_beval.c, src/ui.c + +Patch 7.3.696 +Problem: Message about added spell language can be wrong. +Solution: Give correct message. Add g:menutrans_set_lang_to to allow for + translation. (Jiri Sedlak) +Files: runtime/menu.vim + +Patch 7.3.697 +Problem: Leaking resources when setting GUI font. +Solution: Free the font. (Ken Takata) +Files: src/syntax.c + +Patch 7.3.698 +Problem: Python 3 does not preserve state between commands. +Solution: Preserve the state. (Paul Ollis) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.699 +Problem: When 'ttymouse' is set to "sgr" manually, it is overruled by + automatic detection. +Solution: Do not use automatic detection when 'ttymouse' was set manually. + (Hayaki Saito) +Files: src/term.c + +Patch 7.3.700 +Problem: Cannot detect URXVT and SGR mouse support. +Solution: add +mouse_urxvt and +mouse_sgr. (Hayaki Saito) +Files: src/feature.h, src/eval.c + +Patch 7.3.701 +Problem: MS-Windows: Crash with stack overflow when setting 'encoding'. +Solution: Handle that loading the iconv library may be called recursively. + (Jiri Sedlak) +Files: src/os_win32.c + +Patch 7.3.702 +Problem: Nmake from VS6 service pack 6 is not recognized. +Solution: Detect the version number. (Jiri Sedlak) +Files: src/Make_mvc.mak + +Patch 7.3.703 +Problem: When 'undofile' is reset the hash is computed unnecessarily. +Solution: Only compute the hash when the option was set. (Christian Brabandt) +Files: src/option.c + +Patch 7.3.704 +Problem: Repeating "cgn" does not always work correctly. +Solution: Also fetch the operator character. (Christian Brabandt) +Files: src/normal.c + +Patch 7.3.705 +Problem: Mouse features are not sorted properly. (Tony Mechelynck) +Solution: Put the mouse features in alphabetical order. +Files: src/version.c + +Patch 7.3.706 (after 7.3.697) +Problem: Can't build Motif version. +Solution: Fix wrongly named variable. (Ike Devolder) +Files: src/syntax.c + +Patch 7.3.707 (after 7.3.701) +Problem: Problems loading a library for a file name with non-latin + characters. +Solution: Use wide system functions when possible. (Ken Takata) +Files: src/os_win32.c, src/os_win32.h + +Patch 7.3.708 +Problem: Filler lines above the first line may be hidden when opening Vim. +Solution: Change how topfill is computed. (Christian Brabandt) +Files: src/diff.c, src/testdir/test47.in, src/testdir/test47.ok + +Patch 7.3.709 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/eval.c + +Patch 7.3.710 (after 7.3.704) +Problem: Patch 7.3.704 breaks "fn". +Solution: Add check for ca.cmdchar. (Christian Brabandt) +Files: src/normal.c + +Patch 7.3.711 (after 7.3.688) +Problem: vim.current.buffer is not available. (lilydjwg) +Solution: Use py3_PyUnicode_AsUTF8 instead of py3_PyUnicode_AsUTF8String. + (Ken Takata) +Files: src/if_python3.c + +Patch 7.3.712 +Problem: Nmake from VS2010 SP1 is not recognized. +Solution: Add the version number. (Ken Takata) +Files: src/Make_mvc.mak + +Patch 7.3.713 +Problem: printf() can only align to bytes, not characters. +Solution: Add the "S" item. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/message.c + +Patch 7.3.714 +Problem: Inconsistency: :set can be used in the sandbox, but :setlocal and + :setglobal cannot. (Michael Henry) +Solution: Fix the flags for :setlocal and :setglobal. (Christian Brabandt) +Files: src/ex_cmds.h + +Patch 7.3.715 +Problem: Crash when calling setloclist() in BufUnload autocmd. (Marcin + Szamotulski) +Solution: Set w_llist to NULL when it was freed. Also add a test. + (Christian Brabandt) +Files: src/quickfix.c, src/testdir/test49.ok, src/testdir/test49.vim + +Patch 7.3.716 +Problem: Error on exit when using Python 3. +Solution: Remove PythonIO_Fini(). (Roland Puntaier) +Files: src/if_python3.c + +Patch 7.3.717 +Problem: When changing the font size, only MS-Windows limits the window + size. +Solution: Also limit the window size on other systems. (Roland Puntaier) +Files: src/gui.c + +Patch 7.3.718 +Problem: When re-using the current buffer the buffer-local options stay. +Solution: Re-initialize the buffer-local options. (Christian Brabandt) +Files: src/buffer.c + +Patch 7.3.719 +Problem: Cannot run new version of cproto, it fails on missing include + files. +Solution: Add lots of #ifndef PROTO +Files: src/os_amiga.c, src/os_amiga.h, src/gui_w16.c, src/gui_w48.c, + src/gui_w32.c, src/vimio.h, src/os_msdos.c, src/os_msdos.h, + src/os_win16.h, src/os_win16.c, src/os_win32.h, src/os_win32.c, + src/os_mswin.c, src/gui_photon.c, src/os_unix.h, src/os_beos.c, + src/os_beos.h + +Patch 7.3.720 +Problem: Proto files are outdated. +Solution: Update the newly generated proto files. +Files: src/proto/digraph.pro, src/proto/fold.pro, src/proto/misc1.pro, + src/proto/move.pro, src/proto/screen.pro, src/proto/search.pro, + src/proto/os_win32.pro, src/proto/os_mswin.pro, + src/proto/os_beos.pro + +Patch 7.3.721 +Problem: Ruby interface defines local functions globally. +Solution: Make the functions static. +Files: src/if_ruby.c + +Patch 7.3.722 +Problem: Perl flags may contain "-g", which breaks "make proto". +Solution: Filter out the "-g" flag for cproto. (Ken Takata) +Files: src/Makefile + +Patch 7.3.723 +Problem: Various tiny problems. +Solution: Various tiny fixes. +Files: src/gui_mac.c, src/xpm_w32.c, src/netbeans.c, src/sha256.c, + src/if_sniff.c, README.txt + +Patch 7.3.724 +Problem: Building with Ruby and Tcl on MS-Windows 64 bit does not work. +Solution: Remove Ruby and Tcl from the big MS-Windows build. +Files: src/bigvim64.bat + +Patch 7.3.725 +Problem: :aboveleft and :belowright have no effect on :copen. +Solution: Check for cmdmod.split. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.726 +Problem: Typos and duplicate info in README. +Solution: Fix the text. +Files: README.txt + +Patch 7.3.727 +Problem: Can't always find Win32.mak when building GvimExt. +Solution: Use same mechanism as in Make_mvc.mak. (Cade Foster) +Files: src/GvimExt/Makefile + +Patch 7.3.728 +Problem: Cannot compile with MzScheme interface on Ubuntu 12.10. +Solution: Find the collects directory under /usr/share. +Files: src/configure.in, src/auto/configure + +Patch 7.3.729 +Problem: Building with Ruby fails on some systems. +Solution: Remove "static" and add #ifndef PROTO. (Ken Takata) +Files: src/if_ruby.c + +Patch 7.3.730 +Problem: Crash in PHP file when using syntastic. (Ike Devolder) +Solution: Avoid using NULL pointer. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.731 +Problem: Py3Init_vim() is exported unnecessarily. +Solution: Make it static. (Ken Takata) +Files: src/if_python3.c + +Patch 7.3.732 +Problem: Compiler warnings for function arguments. +Solution: Use inteptr_t instead of long. +Files: src/if_mzsch.c, src/main.c + +Patch 7.3.733 +Problem: Tests fail when including MzScheme. +Solution: Change #ifdefs for vim_main2(). +Files: src/main.c + +Patch 7.3.734 +Problem: Cannot put help files in a sub-directory. +Solution: Make :helptags work for sub-directories. (Charles Campbell) +Files: src/ex_cmds.c + +Patch 7.3.735 +Problem: Cannot build Ruby 1.9 with MingW or Cygwin. +Solution: Add another include directory. (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak + +Patch 7.3.736 +Problem: File name completion in input() escapes white space. (Frederic + Hardy) +Solution: Do not escape white space. (Christian Brabandt) +Files: src/ex_getln.c + +Patch 7.3.737 +Problem: When using do_cmdline() recursively did_endif is not reset, + causing messages to be overwritten. +Solution: Reset did_endif. (Christian Brabandt) +Files: src/ex_docmd.c + +Patch 7.3.738 (after 7.3.730) +Problem: Unused function argument. +Solution: Remove it. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.739 +Problem: Computing number of lines may have an integer overflow. +Solution: Check for MAXCOL explicitly. (Dominique Pelle) +Files: src/move.c + +Patch 7.3.740 +Problem: IOC tool complains about undefined behavior for int. +Solution: Change to unsigned int. (Dominique Pelle) +Files: src/hashtab.c, src/misc2.c + +Patch 7.3.741 (after 7.3.737) +Problem: Tiny build fails. +Solution: Move #ifdef. (Ike Devolder) +Files: src/ex_docmd.c + +Patch 7.3.742 +Problem: Leaking memory when :vimgrep restores the directory. +Solution: Free the allocated memory. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.743 (after 7.3.741) +Problem: Tiny build still fails. +Solution: Add #else in the right place. +Files: src/ex_docmd.c + +Patch 7.3.744 +Problem: 64 bit compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/ex_cmds.c + +Patch 7.3.745 +Problem: Automatically setting 'ttymouse' doesn't work. +Solution: Reset the "option was set" flag when using the default. +Files: src/option.c, src/proto/option.pro, src/term.c + +Patch 7.3.746 +Problem: Memory leaks when using location lists. +Solution: Set qf_title to something. (Christian Brabandt) +Files: src/eval.c, src/quickfix.c + +Patch 7.3.747 +Problem: When characters are concealed text aligned with tabs are no longer + aligned, e.g. at ":help :index". +Solution: Compensate space for tabs for concealed characters. (Dominique + Pelle) +Files: src/screen.c + +Patch 7.3.748 +Problem: Cannot properly test conceal mode. +Solution: Add the screencol() and screenrow() functions. Use them in + test88. (Simon Ruderich) +Files: runtime/doc/eval.txt, src/eval.c, src/proto/screen.pro, + src/screen.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + src/testdir/Makefile, src/testdir/test88.in, + src/testdir/test88.ok, + +Patch 7.3.749 +Problem: Python interface doesn't build without the multi-byte feature. +Solution: Add #ifdef. (Ken Takata) +Files: src/if_py_both.h + +Patch 7.3.750 +Problem: The justify macro does not always work correctly. +Solution: Fix off-by-one error (James McCoy) +Files: runtime/macros/justify.vim + +Patch 7.3.751 +Problem: Test 61 is flaky, it fails once in a while. +Solution: When it fails retry once. +Files: src/testdir/Makefile + +Patch 7.3.752 +Problem: Test 49 script file doesn't fold properly. +Solution: Add a colon. +Files: src/testdir/test49.vim + +Patch 7.3.753 +Problem: When there is a QuitPre autocommand using ":q" twice does not work + for exiting when there are more files to edit. +Solution: Do not decrement quitmore in an autocommand. (Techlive Zheng) +Files: src/ex_docmd.c, src/fileio.c, src/proto/fileio.pro + +Patch 7.3.754 +Problem: Latest nmake is not recognized. +Solution: Add nmake version 11.00.51106.1. (Raymond Ko) +Files: src/Make_mvc.mak + +Patch 7.3.755 +Problem: Autoconf doesn't find Python 3 if it's called "python". +Solution: Search for "python2" and "python3" first, then "python". +Files: src/configure.in, src/auto/configure + +Patch 7.3.756 +Problem: A location list can get a wrong count in :lvimgrep. +Solution: Check if the list was changed by autocommands. (mostly by + Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.757 +Problem: Issue 96: May access freed memory when a put command triggers + autocommands. (Dominique Pelle) +Solution: Call u_save() before getting y_array. +Files: src/ops.c + +Patch 7.3.758 +Problem: Matchit plugin does not handle space in #ifdef. +Solution: Change matching pattern to allow spaces. (Mike Morearty) +Files: runtime/macros/matchit.vim + +Patch 7.3.759 +Problem: MS-Windows: Updating the tabline is slow when there are many tabs. +Solution: Disable redrawing while performing the update. (Arseny Kapoulkine) +Files: src/gui_w48.c + +Patch 7.3.760 +Problem: dv_ deletes the white space before the line. +Solution: Move the cursor to the first non-white. (Christian Brabandt) +Files: src/normal.c, src/testdir/test19.in, src/testdir/test19.ok + +Patch 7.3.761 +Problem: In Visual mode a "-p does not work. (Marcin Szamotulski) +Solution: Avoid writing to "- before putting it. (Christian Brabandt) +Files: src/normal.c, src/testdir/test48.in, src/testdir/test48.ok + +Patch 7.3.762 (after 7.3.759) +Problem: On some systems the tabline is not redrawn. +Solution: Call RedrawWindow(). (Charles Peacech) +Files: src/gui_w48.c + +Patch 7.3.763 +Problem: Jumping to a mark does not open a fold if it is in the same line. + (Wiktor Ruben) +Solution: Also compare the column after the jump. (Christian Brabandt) +Files: src/normal.c + +Patch 7.3.764 +Problem: Not all message translation files are installed. +Solution: Also install the converted files. +Files: src/po/Makefile + +Patch 7.3.765 +Problem: Segfault when doing "cclose" on BufUnload in a python function. + (Sean Reifschneider) +Solution: Skip window with NULL buffer. (Christian Brabandt) +Files: src/main.c, src/window.c + +Patch 7.3.766 +Problem: ":help cpo-*" jumps to the wrong place. +Solution: Make it equivalent to ":help cpo-star". +Files: src/ex_cmds.c + +Patch 7.3.767 +Problem: (Win32) The _errno used for iconv may be the wrong one. +Solution: Use the _errno from iconv.dll. (Ken Takata) +Files: src/mbyte.c + +Patch 7.3.768 +Problem: settabvar() and setwinvar() may move the cursor. +Solution: Save and restore the cursor position when appropriate. (idea by + Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 7.3.769 +Problem: 'matchpairs' does not work with multi-byte characters. +Solution: Make it work. (Christian Brabandt) +Files: src/misc1.c, src/option.c, src/proto/option.pro, src/search.c, + src/testdir/test69.in, src/testdir/test69.ok + +Patch 7.3.770 +Problem: Vim.h indentation is inconsistent. +Solution: Adjust the indentation. (Elias Diem) +Files: src/vim.h + +Patch 7.3.771 (after 7.3.769) +Problem: Uninitialized variable. (Yasuhiro Matsumoto) +Solution: Set x2 to -1. +Files: src/option.c + +Patch 7.3.772 +Problem: Cursor is at the wrong location and below the end of the file + after doing substitutions with confirm flag: %s/x/y/c + (Dominique Pelle) +Solution: Update the cursor position. (Christian Brabandt & Dominique) +Files: src/ex_cmds.c + +Patch 7.3.773 (after 7.3.767) +Problem: Crash when OriginalFirstThunk is zero. +Solution: Skip items with OriginalFirstThunk not set. (Ken Takata) +Files: src/mbyte.c + +Patch 7.3.774 +Problem: Tiny GUI version misses console dialog feature. +Solution: Define FEAT_CON_DIALOG when appropriate. (Christian Brabandt) +Files: src/feature.h, src/gui.h + +Patch 7.3.775 +Problem: Cygwin and Mingw builds miss dependency on gui_w48.c. +Solution: Add a build rule. (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak + +Patch 7.3.776 +Problem: ml_get error when searching, caused by curwin not matching curbuf. +Solution: Avoid changing curbuf. (Lech Lorens) +Files: src/charset.c, src/eval.c, src/mark.c, src/proto/charset.pro, + src/proto/mark.pro, src/regexp.c, src/syntax.c, + +Patch 7.3.777 +Problem: When building with Gnome locale gets reset. +Solution: Set locale after gnome_program_init(). (Christian Brabandt) +Files: src/gui_gtk_x11.c + +Patch 7.3.778 +Problem: Compiler error for adding up two pointers. (Titov Anatoly) +Solution: Add a type cast. (Ken Takata) +Files: src/mbyte.c + +Patch 7.3.779 +Problem: Backwards search lands in wrong place when started on a multibyte + character. +Solution: Do not set extra_col for a backwards search. (Sung Pae) +Files: src/search.c, src/testdir/test44.in, src/testdir/test44.ok + +Patch 7.3.780 +Problem: char2nr() and nr2char() always use 'encoding'. +Solution: Add argument to use utf-8 characters. (Yasuhiro Matsumoto) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.3.781 +Problem: Drawing with 'guifontwide' can be slow. +Solution: Draw multiple characters at a time. (Taro Muraoka) +Files: src/gui.c + +Patch 7.3.782 +Problem: Windows: IME composition may use a wrong font. +Solution: Use 'guifontwide' for IME when it is set. (Taro Muraoka) +Files: runtime/doc/options.txt, src/gui.c, src/gui_w48.c, + src/proto/gui_w16.pro, src/proto/gui_w32.pro + +Patch 7.3.783 +Problem: Crash when mark is not set. (Dominique Pelle) +Solution: Check for NULL. +Files: src/normal.c + +Patch 7.3.784 (after 7.3.781) +Problem: Error when 'guifontwide' has a comma. +Solution: Use gui.wide_font. (Taro Muraoka) +Files: src/gui_w48.c + +Patch 7.3.785 (after 7.3.776) +Problem: Crash with specific use of search pattern. +Solution: Initialize reg_buf to curbuf. +Files: src/regexp.c + +Patch 7.3.786 +Problem: Python threads don't run in the background (issue 103). +Solution: Move the statements to manipulate thread state. +Files: src/if_python.c + +Patch 7.3.787 +Problem: With 'relativenumber' set it is not possible to see the absolute + line number. +Solution: For the cursor line show the absolute line number instead of a + zero. (Nazri Ramliy) +Files: src/screen.c + +Patch 7.3.788 +Problem: When only using patches build fails on missing nl.po. +Solution: Create an empty nl.po file. +Files: src/po/Makefile + +Patch 7.3.789 (after 7.3.776) +Problem: "\k" in regexp does not work in other window. +Solution: Use the right buffer. (Yukihiro Nakadaira) +Files: src/mbyte.c, src/proto/mbyte.pro, src/regexp.c + +Patch 7.3.790 +Problem: After reloading a buffer the modelines are not processed. +Solution: call do_modelines(). (Ken Takata) +Files: src/fileio.c + +Patch 7.3.791 +Problem: MzScheme interface doesn't work properly. +Solution: Make it work better. (Sergey Khorev) +Files: runtime/doc/if_mzsch.txt, src/configure.in, src/auto/configure, + src/eval.c, src/if_mzsch.c, src/if_mzsch.h, src/Make_ming.mak, + src/Make_mvc.mak, src/os_unix.c, src/proto/eval.pro, + src/testdir/test70.in, src/testdir/test70.ok + +Patch 7.3.792 +Problem: ":substitute" works differently without confirmation. +Solution: Do not change the text when asking for confirmation, only display + it. +Files: src/ex_cmds.c + +Patch 7.3.793 (after 7.3.792) +Problem: New interactive :substitute behavior is not tested. +Solution: Add tests. (Christian Brabandt) +Files: src/testdir/test80.in, src/testdir/test80.ok + +Patch 7.3.794 +Problem: Tiny build fails. (Tony Mechelynck) +Solution: Adjust #ifdefs. +Files: src/charset.c + +Patch 7.3.795 +Problem: MzScheme does not build with tiny features. +Solution: Add #ifdefs. Also add UNUSED to avoid warnings. And change + library ordering. +Files: src/if_mzsch.c, src/Makefile + +Patch 7.3.796 +Problem: "/[^\n]" does match at a line break. +Solution: Make it do the same as "/.". (Christian Brabandt) +Files: src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok + +Patch 7.3.797 (after 7.3.792) +Problem: Compiler warning for size_t to int conversion. (Skeept) +Solution: Add type casts. +Files: src/ex_cmds.c + +Patch 7.3.798 (after 7.3.791) +Problem: MzScheme: circular list does not work correctly. +Solution: Separate Mac-specific code from generic code. (Sergey Khorev) +Files: src/if_mzsch.c, src/testdir/test70.in + +Patch 7.3.799 +Problem: The color column is not correct when entering a buffer. (Ben + Fritz) +Solution: Call check_colorcolumn() if 'textwidth' changed. (Christian + Brabandt) +Files: src/buffer.c + +Patch 7.3.800 +Problem: The " mark is not adjusted when inserting lines. (Roland Eggner) +Solution: Adjust the line number. (Christian Brabandt) +Files: src/mark.c + +Patch 7.3.801 +Problem: ":window set nu?" displays the cursor line. (Nazri Ramliy) +Solution: Do not update the cursor line when conceallevel is zero or the + screen has scrolled. (partly by Christian Brabandt) +Files: src/window.c + +Patch 7.3.802 +Problem: After setting 'isk' to a value ending in a comma appending to the + option fails. +Solution: Disallow a trailing comma for 'isk' and similar options. +Files: src/charset.c + +Patch 7.3.803 (after 7.3.792) +Problem: Substitute with confirmation and then "q" does not replace + anything. (John McGowan) +Solution: Do not break the loop, skip to the end. +Files: src/ex_cmds.c, src/testdir/test80.in, src/testdir/test80.ok + +Patch 7.3.804 (after 7.3.799) +Problem: Compiler warning for tiny build. (Tony Mechelynck) +Solution: Add #ifdefs around variable. +Files: src/buffer.c + +Patch 7.3.805 +Problem: Lua version 5.2 is not detected properly on Arch Linux. +Solution: Adjust autoconf. (lilydjwg) +Files: src/configure.in, src/auto/configure + +Patch 7.3.806 +Problem: Compiler warnings in Perl code when building with Visual studio + 2012. (skeept) +Solution: Add type casts. (Christian Brabandt, 2013 Jan 30) +Files: src/if_perl.xs + +Patch 7.3.807 +Problem: Popup menu does not work properly with the preview window, folds + and 'cursorcolumn'. +Solution: Redraw the popup menu after redrawing windows. (Christian + Brabandt) +Files: src/screen.c + +Patch 7.3.808 +Problem: Python threads still do not work properly. +Solution: Fix both Python 2 and 3. Add tests. (Ken Takata) +Files: src/if_python.c, src/if_python3.c, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + +Patch 7.3.809 +Problem: The dosinst.c program has a buffer overflow. (Thomas Gwae) +Solution: Ignore $VIMRUNTIME if it is too long. +Files: src/dosinst.c + +Patch 7.3.810 +Problem: 'relativenumber' is reset unexpectedly. (François Ingelrest) +Solution: After an option was reset also reset the global value. Add a test. + (Christian Brabandt) +Files: src/option.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test89.in, + src/testdir/test89.ok + +Patch 7.3.811 +Problem: Useless termresponse parsing for SGR mouse. +Solution: Skip the parsing. (Hayaki Saito) +Files: src/term.c + +Patch 7.3.812 +Problem: When 'indentexpr' moves the cursor "curswant" not restored. +Solution: Restore "curswant". (Sung Pae) +Files: src/misc1.c + +Patch 7.3.813 +Problem: The CompleteDone event is not triggered when there are no pattern + matches. (Jianjun Mao) +Solution: Trigger the event. (Christian Brabandt) +Files: src/edit.c + +Patch 7.3.814 +Problem: Can't input multibyte characters on Win32 console if 'encoding' is + different from current codepage. +Solution: Use convert_input_safe() instead of convert_input(). Make + string_convert_ext() return an error for incomplete input. (Ken + Takata) +Files: src/mbyte.c, src/os_win32.c + +Patch 7.3.815 +Problem: Building with Cygwin and Ruby doesn't work. +Solution: Copy some things from the MingW build file. (Ken Takata) +Files: src/Make_cyg.mak + +Patch 7.3.816 +Problem: Can't compute a hash. +Solution: Add the sha256() function. (Tyru, Hirohito Higashi) +Files: runtime/doc/eval.txt, src/eval.c, src/proto/sha256.pro, + src/sha256.c, src/testdir/test90.in, src/testdir/test90.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.3.817 +Problem: Test 89 fails with tiny and small features. +Solution: Add sourcing small.vim. +Files: src/testdir/test89.in + +Patch 7.3.818 +Problem: When test 40 fails because of a bad build it may leave files + behind that cause it to fail later. +Solution: Let the file names start with "X". +Files: src/testdir/test40.in + +Patch 7.3.819 +Problem: Compiling without +eval and with Python isn't working. +Solution: Add the eval feature when building with Python. +Files: src/if_py_both.h, src/feature.h, src/eval.c, src/ex_docmd.c, + src/normal.c, src/ex_docmd.c, src/gui_gtk_x11.c + +Patch 7.3.820 +Problem: Build errors and warnings when building with small features and + Lua, Perl or Ruby. +Solution: Add #ifdefs and UNUSED. +Files: src/if_perl.xs, src/if_lua.c, src/if_ruby.c + +Patch 7.3.821 +Problem: Build with OLE and Cygwin is broken. (Steve Hall) +Solution: Select static or shared stdc library. (Ken Takata) +Files: src/Make_cyg.mak + +Patch 7.3.822 (after 7.3.799) +Problem: Crash when accessing freed buffer. +Solution: Get 'textwidth' in caller of enter_buffer(). (Christian Brabandt) +Files: src/buffer.c + +Patch 7.3.823 (after 7.3.821) +Problem: Building with Cygwin: '-lsupc++' is not needed. +Solution: Remove it. (Ken Takata) +Files: src/Make_cyg.mak + +Patch 7.3.824 +Problem: Can redefine builtin functions. (ZyX) +Solution: Disallow adding a function to g:. +Files: src/eval.c + +Patch 7.3.825 +Problem: With Python errors are not always clear. +Solution: Print the stack trace, unless :silent is used. (ZyX) +Files: src/if_python3.c, src/if_python.c + +Patch 7.3.826 +Problem: List of features in :version output is hard to read. +Solution: Make columns. (Nazri Ramliy) +Files: src/version.c + +Patch 7.3.827 (after 7.3.825) +Problem: Python tests fail. +Solution: Adjust the output for the stack trace. +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.ok + +Patch 7.3.828 +Problem: Mappings are not aware of wildmenu mode. +Solution: Add wildmenumode(). (Christian Brabandt) +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.3.829 +Problem: When compiled with the +rightleft feature 'showmatch' also shows a + match for the opening paren. When 'revins' is set the screen may + scroll. +Solution: Only check the opening paren when the +rightleft feature was + enabled. Do not show a match that is not visible. (partly by + Christian Brabandt) +Files: src/search.c + +Patch 7.3.830 +Problem: :mksession confuses bytes, columns and characters when positioning + the cursor. +Solution: Use w_virtcol with "|" instead of w_cursor.col with "l". +Files: src/ex_docmd.c + +Patch 7.3.831 +Problem: Clumsy to handle the situation that a variable does not exist. +Solution: Add default value to getbufvar() et al. (Shougo Matsushita, + Hirohito Higashi) +Files: runtime/doc/eval.txt, src/eval.c src/testdir/test91.in, + src/testdir/test91.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile + +Patch 7.3.832 +Problem: Compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/version.c + +Patch 7.3.833 +Problem: In the terminal the scroll wheel always scrolls the active window. +Solution: Scroll the window under the mouse pointer, like in the GUI. + (Bradie Rao) +Files: src/edit.c, src/normal.c + +Patch 7.3.834 +Problem: Ruby 2.0 has a few API changes. +Solution: Add handling of Ruby 2.0. (Yasuhiro Matsumoto) +Files: src/if_ruby.c + +Patch 7.3.835 +Problem: "xxd -i" fails on an empty file. +Solution: Do output the closing } for an empty file. (partly by Lawrence + Woodman) +Files: src/xxd/xxd.c + +Patch 7.3.836 +Problem: Clipboard does not work on Win32 when compiled with Cygwin. +Solution: Move the Win32 clipboard code to a separate file and use it when + building with os_unix.c. (Frodak Baksik, Ken Takata) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ivc.mak, + src/Make_ming.mak, src/Make_mvc.mak, src/Make_w16.mak, + src/Makefile, src/config.h.in, src/configure.in, + src/auto/configure, src/feature.h, src/globals.h, src/mbyte.c, + src/os_mswin.c, src/os_unix.c, src/os_win32.c, src/proto.h, + src/proto/os_mswin.pro, src/proto/winclip.pro, src/term.c, + src/vim.h, src/winclip.c + +Patch 7.3.837 (after 7.3.826) +Problem: Empty lines in :version output when 'columns' is 320. +Solution: Simplify the logic of making columns. (Nazri Ramliy, Roland + Eggner) +Files: src/version.c + +Patch 7.3.838 (after 7.3.830) +Problem: Insufficient testing for mksession. +Solution: Add tests. (mostly by Roland Eggner) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test92.in, src/testdir/test92.ok, + src/testdir/test93.in, src/testdir/test93.ok, + src/ex_docmd.c + +Patch 7.3.839 +Problem: Some files missing in the list of distributed files. +Solution: Add lines for new files. +Files: Filelist + +Patch 7.3.840 +Problem: "\@<!" in regexp does not work correctly with multi-byte + characters, especially cp932. +Solution: Move column to start of multi-byte character. (Yasuhiro Matsumoto) +Files: src/regexp.c + +Patch 7.3.841 +Problem: When a "cond ? one : two" expression has a subscript it is not + parsed correctly. (Andy Wokula) +Solution: Handle a subscript also when the type is unknown. (Christian + Brabandt) +Files: src/eval.c + +Patch 7.3.842 +Problem: Compiler warning for signed/unsigned pointer. +Solution: Add type cast. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.843 (after 7.3.841) +Problem: Missing test file changes. +Solution: Change the tests. +Files: src/testdir/test49.vim, src/testdir/test49.ok + +Patch 7.3.844 +Problem: Enum is not indented correctly with "public" etc. +Solution: Skip "public", "private" and "protected". (Hong Xu) +Files: src/misc1.c + +Patch 7.3.845 (after 7.3.844) +Problem: Enum indenting is not tested. +Solution: Add tests. (Hong Xu) +Files: src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.846 +Problem: Missing proto files. +Solution: Add the files. +Files: Filelist, src/proto/os_beos.pro + +Patch 7.3.847 +Problem: Test 55 fails when messages are translated. +Solution: Set language to C. (Ken Takata) +Files: src/testdir/test55.in + +Patch 7.3.848 +Problem: Can't build with Ruby 2.0 when using MinGW x64 or MSVC10. +Solution: Fix it. Also detect RUBY_PLATFORM and RUBY_INSTALL_NAME for x64. + (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/if_ruby.c + +Patch 7.3.849 +Problem: ":g//" gives "Pattern not found error" with E486. Should not use + the error number, it's not a regular error message. +Solution: Use a normal message. (David Bürgin) +Files: src/ex_cmds.c + +Patch 7.3.850 +Problem: ":vimgrep //" matches everywhere. +Solution: Make it use the previous search pattern. (David Bürgin) +Files: runtime/doc/quickfix.txt, src/quickfix.c + +Patch 7.3.851 +Problem: Using an empty pattern with :sort silently continues when there is + no previous search pattern. +Solution: Give an error message. (David Bürgin) +Files: src/ex_cmds.c + +Patch 7.3.852 +Problem: system() breaks clipboard text. (Yukihiro Nakadaira) +Solution: Use Xutf8TextPropertyToTextList(). (Christian Brabandt) + Also do not put the text in the clip buffer if conversion fails. +Files: src/ui.c, src/ops.c + +Patch 7.3.853 +Problem: Using "ra" in multiple lines on multi-byte characters leaves a few + characters not replaced. +Solution: Adjust the end column only in the last line. (Yasuhiro Matsumoto) +Files: src/testdir/test69.in, src/testdir/test69.ok, src/ops.c + +Patch 7.3.854 +Problem: After using backspace in insert mode completion, CTRL-N and CTRL-P + do not highlight the right entry. (Olivier Teuliere) +Solution: Set the current item to the shown item after using backspace. +Files: src/edit.c + +Patch 7.3.855 +Problem: Compiler warnings. +Solution: Add type casts. (Mike Williams) +Files: src/misc1.c + +Patch 7.3.856 +Problem: When calling system() multi-byte clipboard contents is garbled. +Solution: Save and restore the clipboard contents. (Yukihiro Nakadaira) +Files: src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, src/ops.c, + src/proto/ops.pro, src/os_unix.c, src/proto/ui.pro, src/ui.c + +Patch 7.3.857 +Problem: The QuitPre autocommand event does not trigger for :qa and :wq. +Solution: Trigger the event. (Tatsuro Fujii) +Files: src/ex_docmd.c + +Patch 7.3.858 +Problem: "gv" selects the wrong area after some operators. +Solution: Save and restore the type of selection. (Christian Brabandt) +Files: src/testdir/test66.in, src/testdir/test66.ok, src/normal.c + +Patch 7.3.859 +Problem: 'ambiwidth' must be set by the user. +Solution: Detects East Asian ambiguous width (UAX #11) state of the terminal + at the start-up time and 'ambiwidth' accordingly. (Hayaki Saito) +Files: src/main.c, src/option.c, src/term.c, src/term.h, + src/proto/term.pro + +Patch 7.3.860 +Problem: When using --remote-expr try/catch does not work. (Andrey Radev) +Solution: Set emsg_silent instead of emsg_skip. +Files: src/main.c + +Patch 7.3.861 +Problem: ":setlocal number" clears global value of 'relativenumber'. +Solution: Do it properly. (Markus Heidelberg) +Files: src/testdir/test89.in, src/testdir/test89.ok, src/option.c + +Patch 7.3.862 +Problem: Dragging the status line can be slow. +Solution: Look ahead and drop the drag event if there is a next one. +Files: src/eval.c, src/misc1.c, src/proto/misc1.pro, src/normal.c + +Patch 7.3.863 (after 7.3.859) +Problem: Problem with 'ambiwidth' detection for ANSI terminal. +Solution: Work around not recognizing a term response. (Hayaki Saito) +Files: src/term.c + +Patch 7.3.864 (after 7.3.862) +Problem: Can't build without the mouse feature. +Solution: Add an #ifdef. (Ike Devolder) +Files: src/misc1.c + +Patch 7.3.865 (after 7.3.862) +Problem: Mouse position may be wrong. +Solution: Let vungetc() restore the mouse position. +Files: src/getchar.c + +Patch 7.3.866 +Problem: Not serving the X selection during system() isn't nice. +Solution: When using fork() do not loose the selection, keep serving it. + Add a loop similar to handling I/O. (Yukihiro Nakadaira) +Files: src/os_unix.c + +Patch 7.3.867 +Problem: Matchparen does not update match when using auto-indenting. + (Marc Aldorasi) +Solution: Add the TextChanged and TextChangedI autocommand events. +Files: runtime/plugin/matchparen.vim, src/main.c, src/edit.c, + src/globals.h, src/vim.h, src/fileio.c, src/proto/fileio.pro, + runtime/doc/autocmd.txt + +Patch 7.3.868 +Problem: When at the hit-return prompt and using "k" while no text has + scrolled off screen, then using "j", an empty line is displayed. +Solution: Only act on "k" when text scrolled off screen. Also accept + page-up and page-down. (cptstubing) +Files: src/message.c + +Patch 7.3.869 +Problem: bufwinnr() matches buffers in other tabs. +Solution: For bufwinnr() and ? only match buffers in the current tab. + (Alexey Radkov) +Files: src/buffer.c, src/diff.c, src/eval.c, src/ex_docmd.c, + src/if_perl.xs, src/proto/buffer.pro + +Patch 7.3.870 +Problem: Compiler warnings when using MingW 4.5.3. +Solution: Do not use MAKEINTRESOURCE. Adjust #if. (Ken Takata) +Files: src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, src/os_win32.c, + src/os_win32.h + +Patch 7.3.871 +Problem: search('^$', 'c') does not use the empty match under the cursor. +Solution: Special handling of the 'c' flag. (Christian Brabandt) + Add tests. +Files: src/search.c, src/testdir/test14.in, src/testdir/test14.ok + +Patch 7.3.872 +Problem: On some systems case of file names is always ignored, on others + never. +Solution: Add the 'fileignorecase' option to control this at runtime. + Implies 'wildignorecase'. +Files: src/buffer.c, src/edit.c, src/ex_cmds2.c, src/ex_getln.c, + src/fileio.c, src/misc1.c, src/misc2.c, src/option.c, + src/option.h, src/vim.h, runtime/doc/options.txt + +Patch 7.3.873 +Problem: Cannot easily use :s to make title case. +Solution: Have "\L\u" result in title case. (James McCoy) +Files: src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok, + src/testdir/test80.in, src/testdir/test80.ok + +Patch 7.3.874 +Problem: Comparing file names does not handle multi-byte characters + properly. +Solution: Implement multi-byte handling. +Files: src/misc1.c, src/misc2.c + +Patch 7.3.875 (after 7.3.866) +Problem: Build problem with some combination of features. +Solution: Use FEAT_XCLIPBOARD instead of FEAT_CLIPBOARD. +Files: src/os_unix.c + +Patch 7.3.876 +Problem: #if indents are off. +Solution: Insert a space where appropriate. (Taro Muraoka) +Files: src/gui.c + +Patch 7.3.877 (after 7.3.871) +Problem: Forward searching with search() is broken. +Solution: Fix it and add tests. (Sung Pae) +Files: src/search.c, src/testdir/test14.in, src/testdir/test14.ok + +Patch 7.3.878 +Problem: 'fileignorecase' is missing in options window and quickref. +Solution: Add the option. +Files: runtime/optwin.vim, runtime/doc/quickref.txt + +Patch 7.3.879 +Problem: When using an ex command in operator pending mode, using Esc to + abort the command still executes the operator. (David Bürgin) +Solution: Clear the operator when the ex command fails. (Christian Brabandt) +Files: src/normal.c + +Patch 7.3.880 +Problem: When writing viminfo, old history lines may replace lines written + more recently by another Vim instance. +Solution: Mark history entries that were read from viminfo and overwrite + them when merging with the current viminfo. +Files: src/ex_getln.c + +Patch 7.3.881 +Problem: Python list does not work correctly. +Solution: Fix it and add a test. (Yukihiro Nakadaira) +Files: src/testdir/test86.in, src/testdir/test86.ok, src/if_py_both.h + +Patch 7.3.882 +Problem: CursorHold may trigger after receiving the termresponse. +Solution: Set the did_cursorhold flag. (Hayaki Saito) +Files: src/term.c + +Patch 7.3.883 (after 7.3.880) +Problem: Can't build with some combination of features. +Solution: Adjust #ifdefs. +Files: src/ex_getln.c + +Patch 7.3.884 +Problem: Compiler warning for variable shadowing another. (John Little) +Solution: Rename the variable. (Christian Brabandt) +Files: src/term.c + +Patch 7.3.885 +Problem: Double free for list and dict in Lua. (Shougo Matsu) +Solution: Do not unref list and dict. (Yasuhiro Matsumoto) +Files: src/if_lua.c + +Patch 7.3.886 +Problem: Can't build with multi-byte on Solaris 10. +Solution: Add #ifdef X_HAVE_UTF8_STRING. (Laurent Blume) +Files: src/ui.c + +Patch 7.3.887 +Problem: No tests for Visual mode operators, what 7.3.879 fixes. +Solution: Add a new test file. (David Bürgin) +Files: src/testdir/test94.in, src/testdir/test94.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.3.888 +Problem: Filename completion with 'fileignorecase' does not work for + multi-byte characters. +Solution: Make 'fileignorecase' work properly. (Hirohito Higashi) +Files: src/misc2.c + +Patch 7.3.889 +Problem: Can't build with Ruby 2.0 on a 64 bit system. +Solution: Define rb_fix2int and rb_num2int. (Kohei Suzuki) +Files: src/if_ruby.c + +Patch 7.3.890 +Problem: Test 79 fails on Windows. (Michael Soyka) +Solution: Add comment below line causing an error. +Files: src/testdir/test79.in + +Patch 7.3.891 +Problem: Merging viminfo history doesn't work well. +Solution: Don't stop when one type of history is empty. Don't merge history + when writing viminfo. +Files: src/ex_getln.c + +Patch 7.3.892 (after 7.3.891) +Problem: Still merging problems for viminfo history. +Solution: Do not merge lines when writing, don't write old viminfo lines. +Files: src/ex_getln.c, src/ex_cmds.c, src/proto/ex_getln.pro + +Patch 7.3.893 +Problem: Crash when using b:, w: or t: after closing the buffer, window or + tabpage. +Solution: Allocate the dictionary instead of having it part of the + buffer/window/tabpage struct. (Yukihiro Nakadaira) +Files: src/buffer.c, src/eval.c, src/fileio.c, src/structs.h, + src/window.c, src/proto/eval.pro + +Patch 7.3.894 +Problem: Using wrong RUBY_VER causing Ruby build to break. +Solution: Correct the RUBY_VER value. (Yongwei Wu) +Files: src/bigvim.bat + +Patch 7.3.895 +Problem: Valgrind error in test 91. (Issue 128) +Solution: Pass scope name to find_var_in_ht(). +Files: src/eval.c + +Patch 7.3.896 +Problem: Memory leaks in Lua interface. +Solution: Fix the leaks, add tests. (Yukihiro Nakadaira) +Files: src/testdir/test85.in, src/testdir/test85.ok, src/if_lua.c + +Patch 7.3.897 +Problem: Configure doesn't always find the shared library. +Solution: Change the configure script. (Ken Takata) +Files: src/configure.in, src/auto/configure + +Patch 7.3.898 +Problem: Memory leak reported by valgrind in test 91. +Solution: Only use default argument when needed. +Files: src/eval.c, src/testdir/test91.in, src/testdir/test91.ok + +Patch 7.3.899 +Problem: #if indents are off. +Solution: Fix the indents. +Files: src/os_unix.c + +Patch 7.3.900 +Problem: Not obvious that some mouse features are mutual-exclusive. +Solution: Add a comment. +Files: src/feature.h + +Patch 7.3.901 +Problem: Outdated comment, ugly condition. +Solution: Update a few comments, break line. +Files: src/getchar.c, src/misc1.c, src/undo.c + +Patch 7.3.902 +Problem: When deleting last buffer in other tab the tabline is not updated. +Solution: Set the redraw_tabline flag. (Yukihiro Nakadaira) +Files: src/window.c + +Patch 7.3.903 (after 7.3.892) +Problem: Crash on exit writing viminfo. (Ron Aaron) +Solution: Check for the history to be empty. +Files: src/ex_getln.c + +Patch 7.3.904 (after 7.3.893) +Problem: Using memory freed by the garbage collector. +Solution: Mark items in aucmd_win as used. +Files: src/eval.c + +Patch 7.3.905 (after 7.3.903) +Problem: Crash when writing viminfo. (Ron Aaron) +Solution: Prevent freed history info to be used. +Files: src/ex_getln.c + +Patch 7.3.906 +Problem: The "sleep .2" for running tests does not work on Solaris. +Solution: Fall back to using "sleep 1". (Laurent Blume) +Files: src/testdir/Makefile + +Patch 7.3.907 +Problem: Python uses IndexError when a dict key is not found. +Solution: Use KeyError instead. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.908 +Problem: Possible crash when using a list in Python. +Solution: Return early if the list is NULL. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.909 +Problem: Duplicate Python code. +Solution: Move more items to if_py_both.h. (ZyX) Also avoid compiler + warnings for missing initializers. +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.910 +Problem: Python code in #ifdef branches with only minor differences. +Solution: Merge the #ifdef branches. (ZyX) +Files: src/if_py_both.h, src/if_python.c + +Patch 7.3.911 +Problem: Python: Access to Vim variables is not so easy. +Solution: Define vim.vars and vim.vvars. (ZyX) +Files: runtime/doc/if_pyth.txt, src/eval.c, src/globals.h, + src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.912 +Problem: Typing a ":" command at the hit-enter dialog does not work if the + "file changed" dialog happens next. +Solution: Check for changed files before giving the hit-enter dialog. +Files: src/message.c + +Patch 7.3.913 (after 7.3.905) +Problem: Still a crash when writing viminfo. +Solution: Add checks for NULL pointers. (Ron Aaron) +Files: src/ex_getln.c + +Patch 7.3.914 +Problem: ~/.viminfo is messed up when running tests. +Solution: Set the viminfo filename. +Files: src/testdir/test89.in, src/testdir/test94.in + +Patch 7.3.915 +Problem: When reading a file with encoding conversion fails at the end the + next encoding in 'fencs' is not used. +Solution: Retry with another encoding when possible. (Taro Muraoka) +Files: src/fileio.c + +Patch 7.3.916 +Problem: Using freed memory when pasting with the mouse (Issue 130). +Solution: Get the byte value early. (hint by Dominique Pelle) +Files: src/buffer.c + +Patch 7.3.917 +Problem: When a path ends in a backslash appending a comma has the wrong + effect. +Solution: Replace a trailing backslash with a slash. (Nazri Ramliy) +Files: src/misc1.c, src/testdir/test73.in, src/testdir/test73.ok + +Patch 7.3.918 +Problem: Repeating an Ex command after using a Visual motion does not work. +Solution: Check for an Ex command being used. (David Bürgin) +Files: src/normal.c + +Patch 7.3.919 (after 7.3.788) +Problem: An empty nl.po file does not work with an old msgfmt. +Solution: Put a single # in the file. (Laurent Blume) +Files: src/po/Makefile + +Patch 7.3.920 +Problem: Compiler warning for size_t to int. +Solution: Add a type cast. (Mike Williams) +Files: src/misc1.c + +Patch 7.3.921 (after 7.3.697) +Problem: Trying to create a fontset handle when 'guifontset' is not set. +Solution: Add curly braces around the code block. (Max Kirillov) +Files: src/syntax.c + +Patch 7.3.922 +Problem: No test for what 7.3.918 fixes. +Solution: Add a test. (David Bürgin) +Files: src/testdir/test94.in, src/testdir/test94.ok + +Patch 7.3.923 +Problem: Check for X11 header files fails on Solaris. +Solution: Only use -Werror for gcc. (Laurent Blume) +Files: src/configure.in, src/auto/configure + +Patch 7.3.924 +Problem: Python interface can't easily access options. +Solution: Add vim.options, vim.window.options and vim.buffer.options. (ZyX) +Files: runtime/doc/if_pyth.txt, src/eval.c, src/if_py_both.h, + src/if_python.c, src/if_python3.c, src/option.c, + src/proto/eval.pro, src/proto/option.pro, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok, src/vim.h + +Patch 7.3.925 +Problem: Typos in source files. +Solution: Fix the typos. (Ken Takata) +Files: runtime/plugin/matchparen.vim, runtime/tools/vim_vs_net.cmd, + src/GvimExt/gvimext.cpp, src/INSTALLvms.txt, src/Make_cyg.mak, + src/Make_mvc.mak, src/Make_sas.mak, src/Make_vms.mms, + src/Make_w16.mak, src/Makefile, src/VisVim/OleAut.cpp, + src/VisVim/README_VisVim.txt, src/auto/configure, src/buffer.c, + src/configure.in, src/diff.c, src/dosinst.c, src/edit.c, + src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/farsi.c, src/feature.h, src/fileio.c, src/glbl_ime.cpp, + src/gui.c, src/gui_athena.c, src/gui_beval.c, src/gui_gtk_x11.c, + src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, src/gui_w16.c, + src/gui_w32.c, src/gui_w48.c, src/gui_xmebw.c, src/gui_xmebwp.h, + src/hardcopy.c, src/if_cscope.c, src/if_mzsch.c, src/if_ole.cpp, + src/if_perl.xs, src/if_py_both.h, src/if_python.c, + src/if_python3.c, src/if_ruby.c, src/main.aap, src/mbyte.c, + src/memfile.c, src/memline.c, src/misc1.c, src/misc2.c, + src/nbdebug.c, src/normal.c, src/ops.c, src/os_amiga.c, + src/os_mac.h, src/os_msdos.c, src/os_mswin.c, src/os_win16.h, + src/os_win32.c, src/os_win32.h, src/quickfix.c, src/screen.c, + src/search.c, src/spell.c, src/structs.h, src/syntax.c, + src/window.c, vimtutor.com + + +Patch 7.3.926 +Problem: Autocommands are triggered by setwinvar() et al. Missing BufEnter + on :tabclose. Duplicate WinEnter on :tabclose. Wrong order of + events for :tablose and :tabnew. +Solution: Fix these autocommand events. (ZyX) +Files: runtime/doc/eval.txt, src/buffer.c, src/eval.c, src/ex_cmds2.c, + src/fileio.c, src/proto/window.pro, src/testdir/test62.in, + src/testdir/test62.ok, src/window.c + +Patch 7.3.927 +Problem: Missing combining characters when putting text in a register. +Solution: Include combining characters. (David Bürgin) +Files: src/getchar.c, src/testdir/test44.in, src/testdir/test44.ok + +Patch 7.3.928 (after 7.3.924) +Problem: Can't build with strict C compiler. +Solution: Move declaration to start of block. (Taro Muraoka) +Files: src/if_py_both.h + +Patch 7.3.929 (after 7.3.924) +Problem: Compiler warning for unused variable. Not freeing unused string. +Solution: Remove the variable. Clear the options. +Files: src/option.c + +Patch 7.3.930 +Problem: MSVC 2012 update is not recognized. +Solution: Update the version in the makefile. (Raymond Ko) +Files: src/Make_mvc.mak + +Patch 7.3.931 +Problem: No completion for :xmap and :smap. (Yukihiro Nakadaira) +Solution: Add the case statements. (Christian Brabandt) +Files: src/ex_docmd.c + +Patch 7.3.932 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Initialize the variable. +Files: src/option.c + +Patch 7.3.933 +Problem: Ruby on Mac crashes due to GC failure. +Solution: Init the stack from main(). (Hiroshi Shirosaki) +Files: src/main.c, src/if_ruby.c, src/proto/if_ruby.pro + +Patch 7.3.934 +Problem: E381 and E380 make the user think nothing happened. +Solution: Display the message indicating what error list is now active. + (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.935 (after 7.3.933) +Problem: Ruby: Init stack works differently on 64 bit systems. +Solution: Handle 64 bit systems and also static library. (Yukihiro + Nakadaira) +Files: src/if_ruby.c + +Patch 7.3.936 (after 7.3.935) +Problem: Ruby 1.8: Missing piece for static linking on 64 bit systems. +Solution: Define ruby_init_stack() (Hiroshi Shirosaki) + Also fix preprocessor indents. +Files: src/if_ruby.c + +Patch 7.3.937 +Problem: More can be shared between Python 2 and 3. +Solution: Move code to if_py_both.h. (ZyX) +Files: src/if_python.c, src/if_python3.c, src/if_py_both.h + +Patch 7.3.938 +Problem: Python: not easy to get to window number. +Solution: Add vim.window.number. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/proto/window.pro, + src/window.c + +Patch 7.3.939 +Problem: Using Py_BuildValue is inefficient sometimes. +Solution: Use PyLong_FromLong(). (ZyX) +Files: src/if_py_both.h + +Patch 7.3.940 +Problem: Python: Can't get position of window. +Solution: Add window.row and window.col. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h + +Patch 7.3.941 +Problem: Stuff in if_py_both.h is ordered badly. +Solution: Reorder by type. (ZyX) +Files: src/if_py_both.h, src/if_python.c + +Patch 7.3.942 +Problem: Python: SEGV in Buffer functions. +Solution: Call CheckBuffer() at the right time. (ZyX) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.943 +Problem: Python: Negative indices were failing. +Solution: Fix negative indices. Add tests. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + +Patch 7.3.944 +Problem: External program receives the termrespone. +Solution: Insert a delay and discard input. (Hayaki Saito) +Files: src/term.c + +Patch 7.3.945 +Problem: Python: List of buffers is not very useful. +Solution: Make vim.buffers a map. No iterator yet. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python3.c, + src/if_python.c, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.946 +Problem: Sometimes get stuck in waiting for cursor position report, + resulting in keys starting with <Esc>[ not working. +Solution: Only wait for more characters after <Esc>[ if followed by '?', '>' + or a digit. +Files: src/term.c + +Patch 7.3.947 +Problem: Python: No iterator for vim.list and vim.bufferlist. +Solution: Add the iterators. Also fix name of FunctionType. Add tests for + vim.buffers. (ZyX) +Files: runtime/doc/if_pyth.txt, src/eval.c, src/if_py_both.h, + src/if_python3.c, src/if_python.c, src/proto/eval.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.948 +Problem: Cannot build with Python 2.2 +Solution: Make Python interface work with Python 2.2 + Make 2.2 the first supported version. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.ok, src/configure.in, src/auto/configure + +Patch 7.3.949 +Problem: Python: no easy access to tabpages. +Solution: Add vim.tabpages and vim.current.tabpage. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python3.c, + src/if_python.c, src/proto/if_python3.pro, + src/proto/if_python.pro, src/proto/window.pro, src/structs.h, + src/window.c + +Patch 7.3.950 +Problem: Python: Stack trace printer can't handle messages. +Solution: Make KeyErrors use PyErr_SetObject. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.951 +Problem: Python exceptions have problems. +Solution: Change some IndexErrors to TypeErrors. Make “line number out of + range” an IndexError. Make “unable to get option value” a + RuntimeError. Make all PyErr_SetString messages start with + lowercase letter and use _(). (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.952 +Problem: Python: It's not easy to change window/buffer/tabpage. +Solution: Add ability to assign to vim.current.{tabpage,buffer,window}. + (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h + +Patch 7.3.953 +Problem: Python: string exceptions are deprecated. +Solution: Make vim.error an Exception subclass. (ZyX) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.954 +Problem: No check if PyObject_IsTrue fails. +Solution: Add a check for -1 value. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.955 +Problem: Python: Not enough tests. +Solution: Add tests for vim.{current,window*,tabpage*}. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.956 +Problem: Python vim.bindeval() causes SIGABRT. +Solution: Make pygilstate a local variable. (Yukihiro Nakadaira) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.957 +Problem: Python does not have a "do" command like Perl or Lua. +Solution: Add the ":py3do" command. (Lilydjwg) +Files: runtime/doc/if_pyth.txt, src/ex_cmds.h, src/ex_docmd.c, + src/if_python3.c, src/proto/if_python3.pro + +Patch 7.3.958 +Problem: Python: Iteration destructor not set. +Solution: Put IterDestructor to use. (ZyX) +Files: src/if_py_both.c + +Patch 7.3.959 (after 7.3.957) +Problem: Missing error number. +Solution: Assign an error number. +Files: src/if_python3.c + +Patch 7.3.960 +Problem: Compiler warning for unused variable. +Solution: Put declaration in #ifdef. +Files: src/window.c + +Patch 7.3.961 +Problem: Tests 86 and 87 fail when using another language than English. +Solution: Set the language to C in the test. (Dominique Pelle) +Files: src/testdir/test86.in, src/testdir/test87.in, + src/testdir/test87.ok + +Patch 7.3.962 +Problem: Python tests are not portable. +Solution: Use shiftwidth instead of iminsert. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.963 +Problem: Setting curbuf without curwin causes trouble. +Solution: Add switch_buffer() and restore_buffer(). Block autocommands to + avoid trouble. +Files: src/eval.c, src/proto/eval.pro, src/proto/window.pro, + src/if_py_both.h, src/window.c, src/testdir/test86.ok + +Patch 7.3.964 +Problem: Python: not so easy to access tab pages. +Solution: Add window.tabpage, make window.number work with non-current tab + pages. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python3.c, + src/if_python.c, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.965 +Problem: Python garbage collection not working properly. +Solution: Add support for garbage collection. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.966 +Problem: There is ":py3do" but no ":pydo". +Solution: Add the ":pydo" command. (Lilydjwg) +Files: runtime/doc/if_pyth.txt, src/ex_cmds.h, src/ex_docmd.c, + src/if_py_both.h, src/if_python.c, src/if_python3.c, + src/proto/if_python.pro + +Patch 7.3.967 (after 7.3.965) +Problem: Build fails on Mac OSX. (Greg Novack) +Solution: Undefine clear(). +Files: src/if_py_both.h + +Patch 7.3.968 +Problem: Multi-byte support is only available when compiled with "big" + features. +Solution: Include multi-byte by default, with "normal" features. +Files: src/feature.h + +Patch 7.3.969 +Problem: Can't build with Python 3 and without Python 2. +Solution: Adjust #ifdef. (Xavier de Gaye) +Files: src/window.c + +Patch 7.3.970 +Problem: Syntax highlighting can be slow. +Solution: Include the NFA regexp engine. Add the 'regexpengine' option to + select which one is used. (various authors, including Ken Takata, + Andrei Aiordachioaie, Russ Cox, Xiaozhou Liua, Ian Young) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, + src/Makefile, src/regexp.c, src/regexp.h, src/regexp_nfa.c, + src/structs.h, src/testdir/Makefile, src/testdir/test64.in, + src/testdir/test64.ok, Filelist, runtime/doc/pattern.txt, + runtime/doc/option.txt, src/option.c, src/option.h, + src/testdir/test95.in, src/testdir/test95.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.3.971 +Problem: No support for VS2012 static code analysis. +Solution: Add the ANALYZE option. (Mike Williams) +Files: src/Make_mvc.mak + +Patch 7.3.972 +Problem: Cursor not restored after InsertEnter autocommand if it moved to + another line. +Solution: Also restore if the saved line number is still valid. Allow + setting v:char to skip restoring. +Files: src/edit.c, runtime/doc/autocmd.txt + +Patch 7.3.973 +Problem: Compiler warnings. Crash on startup. (Tony Mechelynck) +Solution: Change EMSG2 to EMSGN. Make array one character longer. +Files: src/regexp_nfa.c + +Patch 7.3.974 +Problem: Can't build with ruby 1.8.5. +Solution: Only use ruby_init_stack() when RUBY_INIT_STACK is defined. + (Yukihiro Nakadaira) +Files: src/if_ruby.c + +Patch 7.3.975 +Problem: Crash in regexp parsing. +Solution: Correctly compute the end of allocated memory. +Files: src/regexp_nfa.c + +Patch 7.3.976 +Problem: Can't build on HP-UX. +Solution: Remove modern initialization. (John Marriott) +Files: src/regexp_nfa.c + +Patch 7.3.977 +Problem: Compiler warnings on 64 bit Windows. +Solution: Add type casts. (Mike Williams) Also fix some white space and + uncomment what was commented-out for testing. +Files: src/regexp_nfa.c + +Patch 7.3.978 +Problem: Regexp debug logs don't have a good name. +Solution: Use clear names and make it possible to write logs for the old and + new engines separately. (Taro Muraoka) +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.979 +Problem: Complex NFA regexp doesn't work. +Solution: Set actual state stack end instead of using an arbitrary number. + (Yasuhiro Matsumoto) +Files: src/regexp_nfa.c + +Patch 7.3.980 +Problem: Regexp logs may contain garbage. Character classes don't work + correctly for multi-byte characters. +Solution: Check for end of post list. Only use "is" functions for + characters up to 255. (Ken Takata) +Files: src/regexp_nfa.c + +Patch 7.3.981 +Problem: In the old regexp engine \i, \I, \f and \F don't work on + multi-byte characters. +Solution: Dereference pointer properly. +Files: src/regexp.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.982 +Problem: In the new regexp engine \p does not work on multi-byte + characters. +Solution: Don't point to an integer but the characters. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.983 +Problem: Unnecessary temp variable. +Solution: Remove the variable. +Files: src/regexp_nfa.c + +Patch 7.3.984 +Problem: A Visual mapping that uses CTRL-G works differently when started + from Insert mode. (Ein Brown) +Solution: Reset old_mapped_len when handling typed text in Select mode. +Files: src/normal.c + +Patch 7.3.985 +Problem: GTK vim not started as gvim doesn't set WM_CLASS property to a + useful value. +Solution: Call g_set_prgname() on startup. (James McCoy) +Files: src/gui_gtk_x11.c + +Patch 7.3.986 +Problem: Test 95 doesn't pass when 'encoding' isn't utf-8. (Yasuhiro + Matsumoto) +Solution: Force 'encoding' to be utf-8. +Files: src/testdir/test95.in + +Patch 7.3.987 +Problem: No easy to run an individual test. Tests 64 fails when + 'encoding' is not utf-8. +Solution: Add individual test targets to the Makefile. Move some lines from + test 64 to 95. +Files: src/Makefile, src/testdir/test64.in, src/testdir/test64.ok, + src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.988 +Problem: New regexp engine is slow. +Solution: Break out of the loop when the state list is empty. +Files: src/regexp_nfa.c + +Patch 7.3.989 +Problem: New regexp engine compares negative numbers to character. +Solution: Add missing case statements. +Files: src/regexp_nfa.c + +Patch 7.3.990 +Problem: Memory leak in new regexp engine. +Solution: Jump to end of function to free memory. (Dominique Pelle) +Files: src/regexp_nfa.c + +Patch 7.3.991 +Problem: More can be shared by Python 2 and 3. +Solution: Move more stuff to if_py_both. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test87.ok + +Patch 7.3.992 +Problem: Python: Too many type casts. +Solution: Change argument types. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.993 +Problem: Python: Later patch does things slightly differently. +Solution: Adjusted argument type changes. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.994 +Problem: Python: using magic constants. +Solution: Use descriptive values for ml_flags. (ZyX) +Files: src/if_py_both.h, src/if_python3.c + +Patch 7.3.995 +Problem: Python: Module initialization is duplicated. +Solution: Move to shared file. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.996 +Problem: Python: Can't check types of what is returned by bindeval(). +Solution: Add vim.List, vim.Dictionary and vim.Function types. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + +Patch 7.3.997 +Problem: Vim and Python exceptions are different. +Solution: Make Vim exceptions be Python exceptions. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.998 +Problem: Python: garbage collection issues. +Solution: Fix the GC issues: Use proper DESTRUCTOR_FINISH: avoids negative + refcounts, use PyObject_GC_* for objects with tp_traverse and + tp_clear, add RangeTraverse and RangeClear, use Py_XDECREF in some + places. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.999 +Problem: New regexp engine sets curbuf temporarily. +Solution: Use reg_buf instead, like the old engine. +Files: src/regexp_nfa.c + +Patch 7.3.1000 (whoa!) +Problem: Typo in char value causes out of bounds access. +Solution: Fix character value. (Klemens Baum) +Files: src/regexp.c + +Patch 7.3.1001 +Problem: Duplicate condition in if. +Solution: Remove one condition. +Files: src/regexp_nfa.c + +Patch 7.3.1002 +Problem: Valgrind errors for Python interface. +Solution: Fix memory leaks when running tests. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1003 +Problem: Python interface does not compile with Python 2.2 +Solution: Fix thread issues and True/False. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1004 +Problem: No error when option could not be set. +Solution: Report an error. (ZyX) +Files: src/if_py_both.h, src/option.c, src/proto/option.pro, + src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1005 +Problem: Get stuck on regexp "\n*" and on "%s/^\n\+/\r". +Solution: Fix handling of matching a line break. (idea by Hirohito Higashi) +Files: src/regexp_nfa.c + +Patch 7.3.1006 +Problem: NFA engine not used for "\_[0-9]". +Solution: Enable this, fixed in patch 1005. +Files: src/regexp_nfa.c + +Patch 7.3.1007 +Problem: Can't build on Minix 3.2.1. +Solution: Add a condition to an #ifdef. (Gautam Tirumala) +Files: src/memfile.c + +Patch 7.3.1008 +Problem: Test 95 fails on MS-Windows. +Solution: Set 'nomore'. Change \i to \f. Change multi-byte character to + something that is not matching \i. (Ken Takata) +Files: src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1009 +Problem: Compiler warning for ambiguous else. +Solution: Add curly braces. +Files: src/if_py_both.h + +Patch 7.3.1010 +Problem: New regexp: adding \Z makes every character match. +Solution: Only apply ireg_icombine for composing characters. + Also add missing change from patch 1008. (Ken Takata) +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1011 +Problem: New regexp engine is inefficient with multi-byte characters. +Solution: Handle a character at a time instead of a byte at a time. Also + make \Z partly work. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1012 +Problem: \Z does not work properly with the new regexp engine. +Solution: Make \Z work. Add tests. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1013 +Problem: New regexp logging is a bit messy. +Solution: Consistently use #defines, add explanatory comment. (Taro Muraoka) +Files: src/regexp_nfa.c + +Patch 7.3.1014 +Problem: New regexp state dump is hard to read. +Solution: Make the state dump more pretty. (Taro Muraoka) +Files: src/regexp_nfa.c + +Patch 7.3.1015 +Problem: New regexp engine: Matching composing characters is wrong. +Solution: Fix matching composing characters. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1016 +Problem: Unused field in nfa_state. +Solution: Remove lastthread. +Files: src/regexp.h, src/regexp_nfa.c + +Patch 7.3.1017 +Problem: Zero width match changes length of match. +Solution: For a zero width match put new states in the current position in + the state list. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok, + src/regexp.h + +Patch 7.3.1018 +Problem: New regexp engine wastes memory. +Solution: Allocate prog with actual number of states, not estimated maximum + number of sates. +Files: src/regexp_nfa.c + +Patch 7.3.1019 +Problem: These do not work with the new regexp engine: \%o123, \%x123, + \%d123, \%u123 and \%U123. +Solution: Implement these items. +Files: src/regexp_nfa.c + +Patch 7.3.1020 +Problem: Not all patterns are tested with auto / old / new engine. +Solution: Test patterns with three values of 'regexpengine'. +Files: src/testdir/test64.in, src/testdir/test64.ok, + src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1021 +Problem: New regexp engine does not ignore order of composing chars. +Solution: Ignore composing chars order. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1022 +Problem: Compiler warning for shadowed variable. (John Little) +Solution: Move declaration, rename variables. +Files: src/regexp_nfa.c + +Patch 7.3.1023 +Problem: Searching for composing char only and using \Z has different + results. +Solution: Make it match the composing char, matching everything is not + useful. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1024 +Problem: New regexp: End of matching pattern not set correctly. (Cesar + Romani) +Solution: Quit the loop after finding the match. Store nfa_has_zend in the + program. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok, + src/regexp.h + +Patch 7.3.1025 +Problem: New regexp: not matching newline in string. (Marc Weber) +Solution: Check for "\n" character. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1026 +Problem: New regexp: pattern that includes a new-line matches too early. + (john McGowan) +Solution: Do not start searching in the second line. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1027 +Problem: New regexp performance: Calling no_Magic() very often. +Solution: Remove magicness inline. +Files: src/regexp_nfa.c + +Patch 7.3.1028 +Problem: New regexp performance: Copying a lot of position state. +Solution: Only copy the sub-expressions that are being used. +Files: src/regexp_nfa.c, src/regexp.h + +Patch 7.3.1029 +Problem: New regexp performance: Unused position state being copied. +Solution: Keep track of which positions are actually valid. +Files: src/regexp_nfa.c + +Patch 7.3.1030 (after 7.3.1028) +Problem: Can't build for debugging. +Solution: Fix struct member names. +Files: src/regexp_nfa.c + +Patch 7.3.1031 +Problem: Compiler warnings for shadowed variable. (John Little) +Solution: Move the variable declarations to the scope where they are used. +Files: src/regexp_nfa.c + +Patch 7.3.1032 +Problem: "\ze" is not supported by the new regexp engine. +Solution: Make "\ze" work. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1033 +Problem: "\1" .. "\9" are not supported in the new regexp engine. +Solution: Implement them. Add a few more tests. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok, + src/regexp.h + +Patch 7.3.1034 +Problem: New regexp code using strange multi-byte code. +Solution: Use the normal code to advance and backup pointers. +Files: src/regexp_nfa.c + +Patch 7.3.1035 +Problem: Compiler warning on 64 bit windows. +Solution: Add type cast. (Mike Williams) +Files: src/if_py_both.h + +Patch 7.3.1036 +Problem: Can't build on HP-UX. +Solution: Give the union a name. (John Marriott) +Files: src/regexp_nfa.c + +Patch 7.3.1037 +Problem: Look-behind matching is very slow on long lines. +Solution: Add a byte limit to how far back an attempt is made. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1038 +Problem: Crash when using Cscope. +Solution: Avoid negative argument to vim_strncpy(). (Narendran + Gopalakrishnan) +Files: src/if_cscope.c + +Patch 7.3.1039 +Problem: New regexp engine does not support \%23c, \%<23c and the like. +Solution: Implement them. (partly by Yasuhiro Matsumoto) +Files: src/regexp.h, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1040 +Problem: Python: Problems with debugging dynamic build. +Solution: Python patch 1. (ZyX) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.1041 +Problem: Python: Invalid read valgrind errors. +Solution: Python patch 2: defer DICTKEY_UNREF until key is no longer needed. + (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1042 +Problem: Python: can't assign to vim.Buffer.name. +Solution: Python patch 3. (ZyX) +Files: runtime/doc/if_pyth.txt, src/ex_cmds.c, src/if_py_both.h, + src/if_python3.c, src/if_python.c, src/proto/ex_cmds.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1043 +Problem: Python: Dynamic compilation with 2.3 fails. +Solution: Python patch 4. (ZyX) +Files: src/if_python.c + +Patch 7.3.1044 +Problem: Python: No {Buffer,TabPage,Window}.valid attributes. +Solution: Python patch 5: add .valid (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1045 +Problem: Python: No error handling for VimToPython function. +Solution: Python patch 6. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1046 +Problem: Python: Using Py_BuildValue for building strings. +Solution: Python patch 7 and 7.5: Replace Py_BuildValue with + PyString_FromString. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1047 +Problem: Python: dir() does not work properly. +Solution: Python patch 8. Add __dir__ method to all objects with custom + tp_getattr supplemented by __members__ attribute for at least + python-2* versions. __members__ is not mentioned in python-3* + dir() output even if it is accessible. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1048 +Problem: Python: no consistent naming. +Solution: Python patch 9: Rename d to dict and lookupDict to lookup_dict. + (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1049 +Problem: Python: no consistent naming +Solution: Python patch 10: Rename DICTKEY_GET_NOTEMPTY to DICTKEY_GET. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1050 +Problem: Python: Typo in pyiter_to_tv. +Solution: Python patch 11. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1051 +Problem: Python: possible memory leaks. +Solution: Python patch 12: fix the leaks (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1052 +Problem: Python: possible SEGV and negative refcount. +Solution: Python patch 13: Fix IterIter function. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1053 +Problem: Python: no flag for types with tp_traverse+tp_clear. +Solution: Python patch 14: Add Py_TPFLAGS_HAVE_GC. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1054 (after 7.3.1042) +Problem: Can't build without the +autocmd feature. (Elimar Riesebieter) +Solution: Fix use of buf and curbuf. +Files: src/ex_cmds.c, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1055 +Problem: Negated collection does not match newline. +Solution: Handle newline differently. (Hiroshi Shirosaki) +Files: src/regexp_nfa.c, src/testdir/test64.ok, src/testdir/test64.in + +Patch 7.3.1056 +Problem: Python: possible memory leaks. +Solution: Python patch 15. (ZyX) Fix will follow later. +Files: src/eval.c, src/if_py_both.h, src/proto/eval.pro + +Patch 7.3.1057 +Problem: Python: not enough compatibility. +Solution: Python patch 16: Make OutputWritelines support any sequence object + (ZyX) Note: tests fail +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1058 +Problem: Call of funcref does not succeed in other script. +Solution: Python patch 17: add get_expanded_name(). (ZyX) +Files: src/eval.c, src/proto/eval.pro + +Patch 7.3.1059 +Problem: Python: Using fixed size buffers. +Solution: Python patch 18: Use python's own formatter. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.1060 +Problem: Python: can't repr() a function. +Solution: Python patch 19: add FunctionRepr(). (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1061 +Problem: Python: Dictionary is not standard. +Solution: Python patch 20: Add standard methods and fields. (ZyX) +Files: runtime/doc/if_pyth.txt, src/eval.c, src/if_py_both.h, + src/if_python3.c, src/if_python.c, src/proto/eval.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1062 +Problem: Python: List is not standard. +Solution: Python patch 21: Add standard methods and fields. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1063 +Problem: Python: Function is not standard. +Solution: Python patch 22: make Function subclassable. (ZyX) +Files: src/eval.c, src/if_py_both.h, src/proto/eval.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1064 +Problem: Python: insufficient error checking. +Solution: Python patch 23. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1065 +Problem: Python: key mapping is not standard. +Solution: Python patch 24: use PyMapping_Keys. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.1066 +Problem: Python: Insufficient exception and error testing. +Solution: Python patch 25. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1067 +Problem: Python: documentation lags behind. +Solution: Python patch 26. (ZyX) +Files: runtime/doc/if_pyth.txt + +Patch 7.3.1068 +Problem: Python: Script is auto-loaded on function creation. +Solution: Python patch 27. (ZyX) +Files: src/eval.c, src/if_py_both.h, src/proto/eval.pro, + src/testdir/test86.ok, src/testdir/test87.ok, src/vim.h + +Patch 7.3.1069 +Problem: Python: memory leaks. +Solution: Python patch 28: Purge out DICTKEY_CHECK_EMPTY macros. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1070 +Problem: Vim crashes in Python tests. Compiler warning for unused function. +Solution: Disable the tests for now. Move the function. +Files: src/if_py_both.h, src/if_python.c, src/testdir/test86.in, + src/testdir/test87.in + +Patch 7.3.1071 +Problem: New regexp engine: backreferences don't work correctly. +Solution: Add every possible start/end position on the state stack. +Files: src/regexp_nfa.c, src/regexp.h, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1072 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize it. +Files: src/regexp_nfa.c + +Patch 7.3.1073 +Problem: New regexp engine may run out of states. +Solution: Allocate states dynamically. Also make the test report errors. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok, + src/testdir/test95.in + +Patch 7.3.1074 +Problem: Compiler warning for printf format. (Manuel Ortega) +Solution: Add type casts. +Files: src/if_py_both.h + +Patch 7.3.1075 +Problem: Compiler warning for storing a long_u in an int. +Solution: Declare the number as an int. (Mike Williams) +Files: src/regexp_nfa.c + +Patch 7.3.1076 +Problem: New regexp engine: \@= and \& don't work. +Solution: Make these items work. Add column info to logging. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1077 +Problem: Python: Allocating dict the wrong way, causing a crash. +Solution: Use py_dict_alloc(). Fix some exception problems. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1078 +Problem: New regexp engine: \@! doesn't work. +Solution: Implement the negated version of \@=. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1079 +Problem: Test 87 fails. +Solution: Fix the test for Python 3.3. (ZyX) Make it pass on 32 bit systems. +Files: src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1080 +Problem: Test 86 fails. +Solution: Comment out the parts that don't work. Make it pass on 32 bit + systems. +Files: src/testdir/test86.in, src/testdir/test86.ok + +Patch 7.3.1081 +Problem: Compiler warnings on 64-bit Windows. +Solution: Change variable types. (Mike Williams) +Files: src/if_py_both.h, src/regexp_nfa.c + +Patch 7.3.1082 +Problem: New regexp engine: Problem with \@= matching. +Solution: Save and restore nfa_match. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1083 +Problem: New regexp engine: Does not support \%^ and \%$. +Solution: Support matching start and end of file. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1084 +Problem: New regexp engine: only accepts up to \{,10}. +Solution: Remove upper limit. Remove dead code with NFA_PLUS. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1085 +Problem: New regexp engine: Non-greedy multi doesn't work. +Solution: Implement \{-}. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1086 +Problem: Old regexp engine accepts illegal range, new one doesn't. +Solution: Also accept the illegal range with the new engine. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1087 +Problem: A leading star is not seen as a normal char when \{} follows. +Solution: Save and restore the parse state properly. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1088 +Problem: New regexp engine: \@<= and \@<! are not implemented. +Solution: Implement look-behind matching. Fix off-by-one error in old + regexp engine. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1089 +Problem: Tests 86 and 87 fail on MS-Windows. (Ken Takata) +Solution: Fix platform-specific stuff. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1090 +Problem: New regexp engine does not support \z1 .. \z9 and \z(. +Solution: Implement the syntax submatches. +Files: src/regexp.h, src/regexp_nfa.c + +Patch 7.3.1091 +Problem: New regexp engine: no error when using \z1 or \z( where it does + not work. +Solution: Give an error message. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1092 +Problem: Can't build with regexp debugging. NFA debug output shows wrong + pattern. +Solution: Fix debugging code for recent changes. Add the pattern to the + program. +Files: src/regexp_nfa.c, src/regexp.h + +Patch 7.3.1093 +Problem: New regexp engine: When a sub expression is empty \1 skips a + character. +Solution: Make \1 try the current position when the match is empty. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1094 +Problem: New regexp engine: Attempts to match "^" at every character. +Solution: Only try "^" at the start of a line. +Files: src/regexp_nfa.c + +Patch 7.3.1095 +Problem: Compiler warnings for shadowed variables. (Christian Brabandt) +Solution: Rename new_state() to alloc_state(). Remove unnecessary + declaration. +Files: src/regexp_nfa.c + +Patch 7.3.1096 +Problem: Python: popitem() was not defined in a standard way. +Solution: Remove the argument from popitem(). (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + +Patch 7.3.1097 +Problem: Python: a few recently added items are not documented. +Solution: Update the documentation. (ZyX) +Files: runtime/doc/if_pyth.txt + +Patch 7.3.1098 +Problem: Python: Possible memory leaks +Solution: Add Py_XDECREF() calls. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1099 +Problem: Python: Changing directory with os.chdir() causes problems for + Vim's notion of directories. +Solution: Add vim.chdir() and vim.fchdir(). (ZyX) +Files: runtime/doc/if_pyth.txt, src/ex_docmd.c, src/if_py_both.h, + src/if_python3.c, src/if_python.c, src/proto/ex_docmd.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1100 +Problem: Python: a few more memory problems. +Solution: Add and remove Py_XDECREF(). (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1101 +Problem: Configure doesn't find Python 3 on Ubuntu 13.04. +Solution: First try distutils.sysconfig. Also fix some indents. (Ken + Takata) +Files: src/configure.in, src/auto/configure + +Patch 7.3.1102 +Problem: Completion of ":py3do" and ":py3file" does not work after ":py3". +Solution: Make completion work. (Taro Muraoka) +Files: src/ex_docmd.c + +Patch 7.3.1103 +Problem: New regexp engine: overhead in saving and restoring. +Solution: Make saving and restoring list IDs faster. Don't copy or check \z + subexpressions when they are not used. +Files: src/regexp_nfa.c + +Patch 7.3.1104 +Problem: New regexp engine does not handle "~". +Solution: Add support for "~". +Files: src/regexp_nfa.c, src/testdir/test24.in, src/testdir/test24.ok + +Patch 7.3.1105 +Problem: New regexp engine: too much code in one function. Dead code. +Solution: Move the recursive nfa_regmatch call to a separate function. + Remove the dead code. +Files: src/regexp_nfa.c + +Patch 7.3.1106 +Problem: New regexp engine: saving and restoring lastlist in the states + takes a lot of time. +Solution: Use a second lastlist value for the first recursive call. +Files: src/regexp.h, src/regexp_nfa.c + +Patch 7.3.1107 +Problem: Compiler warnings for unused variables. +Solution: Put the variables inside #ifdef. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1108 +Problem: Error message for os.fchdir() (Charles Peacech) +Solution: Clear the error. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1109 +Problem: Building on MS-Windows doesn't see changes in if_py_both.h. +Solution: Add a dependency. (Ken Takata) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak, + src/Make_mvc.mak + +Patch 7.3.1110 +Problem: New regexp matching: Using \@= and the like can be slow. +Solution: Decide whether to first try matching the zero-width part or what + follows, whatever is more likely to fail. +Files: src/regexp_nfa.c + +Patch 7.3.1111 +Problem: nfa_recognize_char_class() implementation is inefficient. +Solution: Use bits in an int instead of chars in a string. (Dominique Pelle) +Files: src/regexp_nfa.c, src/testdir/test36.in, src/testdir/test36.ok + +Patch 7.3.1112 +Problem: New regexp engine: \%V not supported. +Solution: Implement \%V. Add tests. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1113 +Problem: New regexp engine: \%'m not supported. +Solution: Implement \%'m. Add tests. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1114 (after 7.3.1110) +Problem: Can't build without the syntax feature. +Solution: Add #ifdefs. (Erik Falor) +Files: src/regexp_nfa.c + +Patch 7.3.1115 +Problem: Many users don't like the cursor line number when 'relativenumber' + is set. +Solution: Have four combinations with 'number' and 'relativenumber'. + (Christian Brabandt) +Files: runtime/doc/options.txt, src/option.c, src/screen.c, + src/testdir/test89.in, src/testdir/test89.ok + +Patch 7.3.1116 +Problem: Can't build without Visual mode. +Solution: Add #ifdefs. +Files: src/regexp_nfa.c + +Patch 7.3.1117 +Problem: New regexp engine: \%[abc] not supported. +Solution: Implement \%[abc]. Add tests. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1118 +Problem: Match failure rate is not very specific. +Solution: Tune the failure rate for match items. +Files: src/regexp_nfa.c + +Patch 7.3.1119 +Problem: Flags in 'cpo' are search for several times. +Solution: Store the result and re-use the flags. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1120 +Problem: Crash when regexp logging is enabled. +Solution: Avoid using NULL pointers. Advance over count argument. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1121 +Problem: New regexp engine: adding states that are not used. +Solution: Don't add the states. +Files: src/regexp_nfa.c + +Patch 7.3.1122 +Problem: New regexp engine: \@> not supported. +Solution: Implement \%>. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1123 +Problem: Can't build tiny Vim on MS-Windows. +Solution: Adjust #ifdef around using modif_fname(). (Mike Williams) +Files: src/misc1.c + +Patch 7.3.1124 +Problem: Python: Crash on MS-Windows when os.fchdir() is not available. +Solution: Check for _chdir to be NULL. (Ken Takata) +Files: src/if_py_both.h + +Patch 7.3.1125 +Problem: Error for using \%V in a pattern in tiny Vim. +Solution: Allow using \%V but never match. (Dominique Pelle) +Files: src/regexp_nfa.c + +Patch 7.3.1126 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Assign something to the variable. +Files: src/regexp_nfa.c + +Patch 7.3.1127 +Problem: No error for using empty \%[]. +Solution: Give error message. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1128 +Problem: Now that the NFA engine handles everything every failure is a + syntax error. +Solution: Remove the syntax_error flag. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1129 +Problem: Can't see what pattern in syntax highlighting is slow. +Solution: Add the ":syntime" command. +Files: src/structs.h, src/syntax.c, src/ex_cmds.h, src/ex_docmd.c, + src/proto/syntax.pro, src/ex_cmds2.c, src/proto/ex_cmds2.pro, + runtime/doc/syntax.txt + +Patch 7.3.1130 (after 7.3.1129) +Problem: Can't build with anything but huge features. +Solution: Check for FEAT_PROFILE. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c, src/structs.h, src/syntax.c + +Patch 7.3.1131 +Problem: New regexp engine is a bit slow. +Solution: Do not clear the state list. Don't copy syntax submatches when + not used. +Files: src/regexp_nfa.c + +Patch 7.3.1132 +Problem: Crash when debugging regexp. +Solution: Do not try to dump subexpr that were not set. Skip over count of + \% items. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1133 +Problem: New regexp engine is a bit slow. +Solution: Skip ahead to a character that must match. Don't try matching a + "^" patter past the start of line. +Files: src/regexp_nfa.c, src/regexp.h + +Patch 7.3.1134 +Problem: Running test 49 takes a long time. +Solution: Don't have it grep all files. +Files: src/testdir/test49.vim + +Patch 7.3.1135 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/syntax.c + +Patch 7.3.1136 +Problem: ":func Foo" does not show attributes. +Solution: Add "abort", "dict" and "range". (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.1137 +Problem: New regexp engine: collections are slow. +Solution: Handle all characters in one go. +Files: src/regexp_nfa.c + +Patch 7.3.1138 +Problem: New regexp engine: neglist no longer used. +Solution: Remove the now unused neglist. +Files: src/regexp_nfa.c + +Patch 7.3.1139 +Problem: New regexp engine: negated flag is hardly used. +Solution: Add separate _NEG states, remove negated flag. +Files: src/regexp_nfa.c, src/regexp.h + +Patch 7.3.1140 +Problem: New regexp engine: trying expensive match while the result is not + going to be used. +Solution: Check for output state already being in the state list. +Files: src/regexp_nfa.c + +Patch 7.3.1141 +Problem: Win32: Check for available memory is not reliable and adds + overhead. +Solution: Remove mch_avail_mem(). (Mike Williams) +Files: src/os_win32.c, src/os_win32.h + +Patch 7.3.1142 +Problem: Memory leak in ":syntime report". +Solution: Clear the grow array. (Dominique Pelle) +Files: src/syntax.c + +Patch 7.3.1143 +Problem: When mapping NUL it is displayed as an X. +Solution: Check for KS_ZERO instead of K_ZERO. (Yasuhiro Matsumoto) +Files: src/message.c + +Patch 7.3.1144 +Problem: "RO" is not translated everywhere. +Solution: Put inside _(). (Sergey Alyoshin) +Files: src/buffer.c, src/screen.c + +Patch 7.3.1145 +Problem: New regexp engine: addstate() is called very often. +Solution: Optimize adding the start state. +Files: src/regexp_nfa.c + +Patch 7.3.1146 +Problem: New regexp engine: look-behind match not checked when followed by + zero-width match. +Solution: Do the look-behind match before adding the zero-width state. +Files: src/regexp_nfa.c + +Patch 7.3.1147 +Problem: New regexp engine: regstart is only used to find the first match. +Solution: Use regstart whenever adding the start state. +Files: src/regexp_nfa.c + +Patch 7.3.1148 +Problem: No command line completion for ":syntime". +Solution: Implement the completion. (Dominique Pelle) +Files: runtime/doc/map.txt, src/ex_cmds.h, src/ex_docmd.c, + src/ex_getln.c, src/proto/syntax.pro, src/syntax.c, src/vim.h + +Patch 7.3.1149 +Problem: New regexp engine: Matching plain text could be faster. +Solution: Detect a plain text match and handle it specifically. Add + vim_regfree(). +Files: src/regexp.c, src/regexp.h, src/regexp_nfa.c, + src/proto/regexp.pro, src/buffer.c, src/edit.c, src/eval.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/ex_getln.c, src/fileio.c, src/gui.c, src/misc1.c, src/misc2.c, + src/option.c, src/syntax.c, src/quickfix.c, src/search.c, + src/spell.c, src/tag.c, src/window.c, src/screen.c, src/macros.h, + src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1150 +Problem: New regexp engine: Slow when a look-behind match does not have a + width specified. +Solution: Try to compute the maximum width. +Files: src/regexp_nfa.c + +Patch 7.3.1151 +Problem: New regexp engine: Slow when a look-behind match is followed by a + zero-width match. +Solution: Postpone the look-behind match more often. +Files: src/regexp_nfa.c + +Patch 7.3.1152 +Problem: In tiny build ireg_icombine is undefined. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/regexp_nfa.c + +Patch 7.3.1153 +Problem: New regexp engine: Some look-behind matches are very expensive. +Solution: Postpone invisible matches further, until a match is almost found. +Files: src/regexp_nfa.c + +Patch 7.3.1154 +Problem: New regexp_nfa engine: Unnecessary code. +Solution: Remove unnecessary code. +Files: src/regexp_nfa.c + +Patch 7.3.1155 +Problem: MS-DOS: "make test" uses external rmdir command. +Solution: Rename "rmdir" to "rd". (Taro Muraoka) +Files: src/testdir/Make_dos.mak + +Patch 7.3.1156 +Problem: Compiler warnings. (dv1445) +Solution: Initialize variables, even when the value isn't really used. +Files: src/regexp_nfa.c, src/eval.c + +Patch 7.3.1157 +Problem: New regexp engine fails on "\(\<command\)\@<=.*" +Solution: Fix rule for postponing match. Further tune estimating whether + postponing works better. Add test. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1158 +Problem: Crash when running test 86. (Jun Takimoto) +Solution: Define PY_SSIZE_T_CLEAN early. (Elimar Riesebieter) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.1159 +Problem: The round() function is not always available. (Christ van + Willegen) +Solution: Use the solution from f_round(). +Files: src/ex_cmds2.c, src/eval.c, src/proto/eval.pro + +Patch 7.3.1160 +Problem: Mixing long and pointer doesn't always work. +Solution: Avoid cast to pointer. +Files: src/undo.c + +Patch 7.3.1161 +Problem: Python: PyList_SetItem() is inefficient. +Solution: Use PyList_SET_ITEM() (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1162 +Problem: Python: Memory leaks +Solution: Add more Py_DECREF(). (ZyX) +Files: src/if_py_both.h, src/if_python.c + +Patch 7.3.1163 +Problem: Not easy to load Python modules. +Solution: Search "python2", "python3" and "pythonx" directories in + 'runtimepath' for Python modules. (ZyX) +Files: runtime/doc/if_pyth.txt, src/configure.in, src/ex_cmds2.c, + src/if_py_both.h, src/if_python.c, src/if_python3.c, + src/testdir/test86.in, src/testdir/test87.in, src/auto/configure + +Patch 7.3.1164 +Problem: Can't test what is actually displayed on screen. +Solution: Add the screenchar() and screenattr() functions. +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.3.1165 +Problem: HP-UX compiler can't handle zero size array. (Charles Cooper) +Solution: Make the array one item big. +Files: src/regexp.h, src/regexp_nfa.c + +Patch 7.3.1166 +Problem: Loading Python modules is not tested. +Solution: Enable commented-out tests, add missing files. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok, + src/testdir/python2/module.py, src/testdir/python3/module.py, + src/testdir/pythonx/module.py, src/testdir/pythonx/modulex.py, + Filelist + +Patch 7.3.1167 +Problem: Python configure check doesn't reject Python 2 when requesting + Python 3. Some systems need -pthreads instead of -pthread. +Solution: Adjust configure accordingly. (Andrei Olsen) +Files: src/configure.in, src/auto/configure + +Patch 7.3.1168 +Problem: Python "sane" configure checks give a warning message. +Solution: Use single quotes instead of escaped double quotes. (Ben Fritz) +Files: src/configure.in, src/auto/configure + +Patch 7.3.1169 +Problem: New regexp engine: some work is done while executing a pattern, + even though the result is predictable. +Solution: Do the work while compiling the pattern. +Files: src/regexp_nfa.c + +Patch 7.3.1170 +Problem: Patch 7.3.1058 breaks backwards compatibility, not possible to use + a function reference as a string. (lilydjwg) +Solution: Instead of translating the function name only translate "s:". +Files: src/eval.c + +Patch 7.3.1171 +Problem: Check for digits and ascii letters can be faster. +Solution: Use a trick with one comparison. (Dominique Pelle) +Files: src/macros.h + +Patch 7.3.1172 +Problem: Python 2: loading modules doesn't work well. +Solution: Fix the code. Add more tests. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python.c, + src/testdir/python2/module.py, src/testdir/python3/module.py, + src/testdir/python_after/after.py, + src/testdir/python_before/before.py, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok, Filelist + +Patch 7.3.1173 +Problem: Python 2 tests don't have the same output everywhere. +Solution: Make the Python 2 tests more portable. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok + +Patch 7.3.1174 +Problem: Python 2 and 3 use different ways to load modules. +Solution: Use the same method. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python3.c, + src/if_python.c + +Patch 7.3.1175 +Problem: Using isalpha() and isalnum() can be slow. +Solution: Use range checks. (Mike Williams) +Files: src/ex_docmd.c, src/macros.h + +Patch 7.3.1176 +Problem: Compiler warnings on 64 bit system. +Solution: Add type casts. (Mike Williams) +Files: src/eval.c, src/if_py_both.h + +Patch 7.3.1177 +Problem: Wasting memory on padding. +Solution: Reorder struct fields. (Dominique Pelle) +Files: src/structs.h, src/fileio.c + +Patch 7.3.1178 +Problem: Can't put all Vim config files together in one directory. +Solution: Load ~/.vim/vimrc if ~/.vimrc does not exist. (Lech Lorens) +Files: runtime/doc/gui.txt, runtime/doc/starting.txt, src/gui.c, + src/main.c, src/os_amiga.h, src/os_dos.h, src/os_unix.h + +Patch 7.3.1179 +Problem: When a global mapping starts with the same characters as a + buffer-local mapping Vim waits for a character to be typed to find + out whether the global mapping is to be used. (Andy Wokula) +Solution: Use the local mapping without waiting. (Michael Henry) +Files: runtime/doc/map.txt, src/getchar.c + +Patch 7.3.1180 +Problem: When current directory changes, path from cscope may no longer be + valid. (AS Budden) +Solution: Always store the absolute path. (Christian Brabandt) +Files: src/if_cscope.c + +Patch 7.3.1181 +Problem: Wrong error message for 1.0[0]. +Solution: Check for funcref and float separately. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.1182 +Problem: 'backupcopy' default on MS-Windows does not work for hard and soft + links. +Solution: Check for links. (David Pope, Ken Takata) +Files: src/fileio.c, src/os_win32.c, src/proto/os_win32.pro + +Patch 7.3.1183 +Problem: Python tests 86 and 87 fail. +Solution: Add "empty" files. (ZyX) +Files: src/testdir/python_before/before_1.py, + src/testdir/python_before/before_2.py + +Patch 7.3.1184 +Problem: Highlighting is sometimes wrong. (Axel Bender) +Solution: Fetch regline again when returning from recursive regmatch. +Files: src/regexp_nfa.c + +Patch 7.3.1185 +Problem: New regexp engine: no match with ^ after \n. (SungHyun Nam) +Solution: Fix it, add a test. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1186 +Problem: Python 3: test 87 may crash. +Solution: Use _PyArg_Parse_SizeT instead of PyArg_Parse. (Jun Takimoto) +Files: src/if_python3.c + +Patch 7.3.1187 (after 7.3.1170) +Problem: "s:" is recognized but "<SID>" is not. (ZyX) +Solution: Translate "<SID>" like "s:". +Files: src/eval.c + +Patch 7.3.1188 +Problem: Newline characters messing up error message. +Solution: Remove the newlines. (Kazunobu Kuriyama) +Files: src/gui_x11.c + +Patch 7.3.1189 (after 7.3.1185) +Problem: Highlighting is still wrong sometimes. (Dominique Pelle) +Solution: Also restore reginput properly. +Files: src/regexp_nfa.c + +Patch 7.3.1190 +Problem: Compiler warning for parentheses. (Christian Wellenbrock) +Solution: Change #ifdef. +Files: src/ex_docmd.c + +Patch 7.3.1191 +Problem: Backreference to previous line doesn't work. (Lech Lorens) +Solution: Implement looking in another line. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1192 +Problem: Valgrind reports errors when using backreferences. (Dominique + Pelle) +Solution: Do not check the end of submatches. +Files: src/regexp_nfa.c + +Patch 7.3.1193 +Problem: fail_if_missing not used for Python 3. +Solution: Give an error when Python 3 can't be configured. (Andrei Olsen) +Files: src/configure.in, src/auto/configure + +Patch 7.3.1194 +Problem: Yaml highlighting is slow. +Solution: Tune the estimation of pattern failure chance. +Files: src/regexp_nfa.c + +Patch 7.3.1195 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Set the length to the matching backref. +Files: src/regexp.c + +Patch 7.3.1196 +Problem: Old regexp engine does not match pattern with backref correctly. + (Dominique Pelle) +Solution: Fix setting status. Test multi-line patterns better. +Files: src/regexp.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1197 +Problem: ":wviminfo!" does not write history previously read from a viminfo + file. (Roland Eggner) +Solution: When not merging history write all entries. +Files: src/ex_cmds.c, src/ex_getln.c, src/proto/ex_getln.pro + +Patch 7.3.1198 +Problem: Build error when using Perl 5.18.0 and dynamic loading. +Solution: Change #ifdefs for Perl_croak_xs_usage. (Ike Devolder) +Files: src/if_perl.xs + +Patch 7.3.1199 +Problem: When evaluating 'foldexpr' causes an error this is silently + ignored and evaluation is retried every time. +Solution: Set emsg_silent instead of emsg_off. Stop evaluating 'foldexpr' is + it is causing errors. (Christian Brabandt) +Files: src/fold.c + +Patch 7.3.1200 +Problem: When calling setline() from Insert mode, using CTRL-R =, undo does + not work properly. (Israel Chauca) +Solution: Sync undo after evaluating the expression. (Christian Brabandt) +Files: src/edit.c, src/testdir/test61.in, src/testdir/test61.ok + +Patch 7.3.1201 +Problem: When a startup script creates a preview window, it probably + becomes the current window. +Solution: Make another window the current one. (Christian Brabandt) +Files: src/main.c + +Patch 7.3.1202 (after 7.3.660) +Problem: Tags are not found in case-folded tags file. (Darren cole, Issue + 90) +Solution: Take into account that when case folding was used for the tags + file "!rm" sorts before the "!_TAG" header lines. +Files: src/tag.c + +Patch 7.3.1203 +Problem: Matches from matchadd() might be highlighted incorrectly when they + are at a fixed position and inserting lines. (John Szakmeister) +Solution: Redraw all lines below a change if there are highlighted matches. + (idea by Christian Brabandt) +Files: src/screen.c + +Patch 7.3.1204 +Problem: Calling gettabwinvar() in 'tabline' cancels Visual mode. (Hirohito + Higashi) +Solution: Don't always use goto_tabpage_tp(). +Files: src/window.c, src/proto/window.pro, src/eval.c, src/if_py_both.h + +Patch 7.3.1205 +Problem: logtalk.dict is not removed on uninstall. +Solution: Remove the file. (Kazunobu Kuriyama) +Files: src/Makefile + +Patch 7.3.1206 +Problem: Inconsistent function argument declarations. +Solution: Use ANSI style. +Files: src/if_py_both.h + +Patch 7.3.1207 +Problem: New regexp engine: no match found on "#if FOO". (Lech Lorens) +Solution: When adding a state gets skipped don't adjust the index. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1208 +Problem: Compiler warnings on MS-Windows. +Solution: Add type cast. Move variable declaration. (Mike Williams) +Files: src/option.c, src/os_mswin.c + +Patch 7.3.1209 +Problem: No completion for ":tabdo". +Solution: Add tabdo to the list of modifiers. (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.3.1210 (after 7.3.1182) +Problem: 'backupcopy' default on MS-Windows is wrong when 'encoding' equals + the current codepage. +Solution: Change the #else block. (Ken Takata) +Files: src/os_win32.c + +Patch 7.3.1211 +Problem: MS-Windows: When 'encoding' differs from the current codepage + ":hardcopy" does not work properly. +Solution: Use TextOutW() and SetDlgItemTextW(). (Ken Takata) +Files: src/os_mswin.c, src/vim.rc + +Patch 7.3.1212 +Problem: "make test" on MS-Windows does not report failure like Unix does. +Solution: Make it work like on Unix. (Taro Muraoka) +Files: src/testdir/Make_dos.mak + +Patch 7.3.1213 +Problem: Can't build with small features and Python. +Solution: Adjust #ifdefs. +Files: src/eval.c, src/buffer.c, src/eval.c, src/window.c + +Patch 7.3.1214 +Problem: Missing declaration for init_users() and realloc_post_list(). + (Salman Halim) +Solution: Add the declarations. +Files: src/misc1.c, src/regexp_nfa.c + +Patch 7.3.1215 +Problem: Compiler warning for function not defined. +Solution: Add #ifdef. +Files: src/misc1.c + +Patch 7.3.1216 +Problem: Configure can't find Motif on Ubuntu. +Solution: Search for libXm in /usr/lib/*-linux-gnu. +Files: src/configure.in, src/auto/configure + +Patch 7.3.1217 +Problem: New regexp engine: Can't handle \%[[ao]]. (Yukihiro Nakadaira) +Solution: Support nested atoms inside \%[]. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1218 +Problem: "make test" on MS-Windows does not clean all temporary files and + gives some unnecessary message. +Solution: Clean the right files. Create .failed files. (Ken Takata) +Files: src/testdir/Make_dos.mak + +Patch 7.3.1219 +Problem: No test for using []] inside \%[]. +Solution: Add a test. +Files: src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1220 +Problem: MS-Windows: When using wide font italic and bold are not included. +Solution: Support wide-bold, wide-italic and wide-bold-italic. (Ken Takata, + Taro Muraoka) +Files: src/gui.c, src/gui.h, src/gui_w48.c + +Patch 7.3.1221 +Problem: When build flags change "make distclean" run into a configure + error. +Solution: When CFLAGS changes delete auto/config.cache. Also avoid adding + duplicate text to flags. (Ken Takata) +Files: src/Makefile, src/configure.in, src/auto/configure + +Patch 7.3.1222 +Problem: Cannot execute some tests from the src directly. +Solution: Add missing targets. +Files: src/Makefile + +Patch 7.3.1223 +Problem: Tests fail on MS-Windows. +Solution: Avoid depending on OS version. Use DOS commands instead of Unix + commands. (Taro Muraoka, Ken Takata) +Files: src/testdir/test17.in, src/testdir/test50.in, + src/testdir/test71.in, src/testdir/test77.in + +Patch 7.3.1224 +Problem: Clang gives warnings on xxd. +Solution: Change how to use part of a string. (Dominique Pelle) Also avoid + warning for return not reached. +Files: src/xxd/xxd.c, src/regexp_nfa.c + +Patch 7.3.1225 +Problem: Compiler warnings when building with Motif. +Solution: Change set_label() argument. (Kazunobu Kuriyama) +Files: src/gui_motif.c + +Patch 7.3.1226 +Problem: Python: duplicate code. +Solution: Share code between OutputWrite() and OutputWritelines(). (ZyX) +Files: src/if_py_both.h, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1227 +Problem: Inconsistent string conversion. +Solution: Use 'encoding' instead of utf-8. Use METH_O in place of + METH_VARARGS where appropriate. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1228 +Problem: Python: various inconsistencies and problems. +Solution: StringToLine now supports both bytes() and unicode() objects. + Make function names consistent. Fix memory leak fixed in + StringToLine. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.1229 +Problem: Python: not so easy to delete/restore translating. +Solution: Make macros do translation of exception messages. (ZyX) + Note: this breaks translations! +Files: src/if_py_both.h, src/if_python3.c + +Patch 7.3.1230 +Problem: Python: Exception messages are not clear. +Solution: Make exception messages more verbose. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1231 +Problem: Python: use of numbers not consistent. +Solution: Add support for Number protocol. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1232 +Problem: Python: inconsistencies in variable names. +Solution: Rename variables. (ZyX) +Files: src/eval.c, src/if_py_both.h + +Patch 7.3.1233 +Problem: Various Python problems. +Solution: Fix VimTryEnd. Crash with debug build and PYTHONDUMPREFS=1. Memory + leaks in StringToLine(), BufferMark() and convert_dl. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1234 (after 7.3.1229) +Problem: Python: Strings are not marked for translation. +Solution: Add N_() where appropriate. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1235 +Problem: In insert mode CTRL-] is not inserted, on the command-line it is. +Solution: Don't insert CTRL-] on the command line. (Yukihiro Nakadaira) +Files: src/ex_getln.c + +Patch 7.3.1236 +Problem: Python: WindowSetattr() missing support for NUMBER_UNSIGNED. +Solution: Add NUMBER_UNSIGNED, add more tests. Various fixes. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/pythonx/failing.py, + src/testdir/pythonx/failing_import.py, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok, src/testdir/pythonx/topmodule/__init__.py, + src/testdir/pythonx/topmodule/submodule/__init__.py, + src/testdir/pythonx/topmodule/submodule/subsubmodule/__init__.py, + src/testdir/pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py + +Patch 7.3.1237 +Problem: Python: non-import errors not handled correctly. +Solution: Let non-ImportError exceptions pass the finder. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1238 +Problem: Crash in Python interface on 64 bit machines. +Solution: Change argument type of PyString_AsStringAndSize. (Taro Muraoka, + Jun Takimoto) +Files: src/if_python.c + +Patch 7.3.1239 +Problem: Can't build with Python and MSVC10. +Solution: Move #if outside of macro. (Taro Muraoka) +Files: src/if_py_both.h + +Patch 7.3.1240 +Problem: Memory leak in findfile(). +Solution: Free the memory. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.1241 (after 7.3.1236) +Problem: Some test files missing from the distribution. +Solution: Update the list of files. +Files: Filelist + +Patch 7.3.1242 +Problem: No failure when trying to use a number as a string. +Solution: Give an error when StringToLine() is called with an instance of + the wrong type. (Jun Takimoto) +Files: src/if_py_both.h + +Patch 7.3.1243 +Problem: New regexp engine: back references in look-behind match don't + work. (Lech Lorens) +Solution: Copy the submatches before a recursive match. Also fix function + prototypes. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1244 +Problem: MS-Windows: confirm() dialog text may not fit. +Solution: Use GetTextWidthEnc() instead of GetTextWidth(). (Yasuhiro + Matsumoto) +Files: src/gui_w32.c + +Patch 7.3.1245 +Problem: MS-Windows: confirm() dialog text may still not fit. +Solution: Use GetTextWidthEnc() instead of GetTextWidth() in two more + places. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 7.3.1246 +Problem: When setting 'winfixheight' and resizing the window causes the + window layout to be wrong. +Solution: Add frame_check_height() and frame_check_width() (Yukihiro + Nakadaira) +Files: src/window.c + +Patch 7.3.1247 +Problem: New regexp engine: '[ ]\@!\p\%([ ]\@!\p\)*:' does not always match. +Solution: When there is a PIM add a duplicate state that starts at another + position. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1248 +Problem: Still have old hacking code for Input Method. +Solution: Add 'imactivatefunc' and 'imstatusfunc' as a generic solution to + Input Method activation. (Yukihiro Nakadaira) +Files: runtime/doc/options.txt, src/fileio.c, src/mbyte.c, src/option.c, + src/option.h, src/proto/fileio.pro + +Patch 7.3.1249 +Problem: Modeline not recognized when using "Vim" instead of "vim". +Solution: Also accept "Vim". +Files: src/buffer.c + +Patch 7.3.1250 +Problem: Python tests fail on MS-Windows. +Solution: Change backslashes to slashes. (Taro Muraoka) +Files: src/testdir/test86.in, src/testdir/test87.in + +Patch 7.3.1251 +Problem: Test 61 messes up viminfo. +Solution: Specify a separate viminfo file. +Files: src/testdir/test61.in + +Patch 7.3.1252 +Problem: Gvim does not find the toolbar bitmap files in ~/vimfiles/bitmaps + if the corresponding menu command contains additional characters + like the shortcut marker '&' or if you use a non-english locale. +Solution: Use menu->en_dname or menu->dname. (Martin Gieseking) +Files: src/gui_w32.c + +Patch 7.3.1253 (after 7.3.1200) +Problem: Still undo problem after using CTRL-R = setline(). (Hirohito + Higashi) +Solution: Set the ins_need_undo flag. +Files: src/edit.c + +Patch 7.3.1254 (after 7.3.1252) +Problem: Can't build without the multi-lang feature. (John Marriott) +Solution: Add #ifdef. +Files: src/gui_w32.c + +Patch 7.3.1255 +Problem: Clang warnings when building with Athena. +Solution: Add type casts. (Dominique Pelle) +Files: src/gui_at_fs.c + +Patch 7.3.1256 +Problem: Can't build without eval or autocmd feature. +Solution: Add #ifdefs. +Files: src/mbyte.c, src/window.c + +Patch 7.3.1257 +Problem: With GNU gettext() ":lang de_DE.utf8" does not always result in + German messages. +Solution: Clear the $LANGUAGE environment variable. +Files: src/ex_cmds2.c + +Patch 7.3.1258 +Problem: Using submatch() may crash Vim. (Ingo Karkat) +Solution: Restore the number of subexpressions used. +Files: src/regexp_nfa.c + +Patch 7.3.1259 +Problem: No test for patch 7.3.1258 +Solution: Add a test entry. +Files: src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1260 +Problem: User completion does not get the whole command line in the command + line window. +Solution: Pass on the whole command line. (Daniel Thau) +Files: src/ex_getln.c, src/structs.h + +Patch 7.3.1261 (after patch 7.3.1179) +Problem: A buffer-local language mapping from a keymap stops a global + insert mode mapping from working. (Ron Aaron) +Solution: Do not wait for more characters to be typed only when the mapping + was defined with <nowait>. +Files: runtime/doc/map.txt, src/eval.c, src/getchar.c, + src/testdir/test75.in, src/testdir/test75.ok + +Patch 7.3.1262 +Problem: Crash and compilation warnings with Cygwin. +Solution: Check return value of XmbTextListToTextProperty(). Add type casts. + Adjust #ifdefs. (Lech Lorens) +Files: src/main.c, src/os_unix.c, src/ui.c + +Patch 7.3.1263 +Problem: Typo in short option name. +Solution: Change "imse" to "imsf". +Files: src/option.c + +Patch 7.3.1264 (after 7.3.1261) +Problem: Missing m_nowait. +Solution: Include missing part of the patch. +Files: src/structs.h + +Patch 7.3.1265 (after 7.3.1249) +Problem: Accepting "Vim:" for a modeline causes errors too often. +Solution: Require "Vim:" to be followed by "set". +Files: src/buffer.c + +Patch 7.3.1266 +Problem: QNX: GUI fails to start. +Solution: Remove the QNX-specific #ifdef. (Sean Boudreau) +Files: src/gui.c + +Patch 7.3.1267 +Problem: MS-Windows ACL support doesn't work well. +Solution: Implement more ACL support. (Ken Takata) +Files: src/os_win32.c + +Patch 7.3.1268 +Problem: ACL support doesn't work when compiled with MingW. +Solution: Support ACL on MingW. (Ken Takata) +Files: src/os_win32.c, src/os_win32.h + +Patch 7.3.1269 +Problem: Insert completion keeps entry selected even though the list has + changed. (Olivier Teuliere) +Solution: Reset compl_shown_match and compl_curr_match. (Christian Brabandt) +Files: src/edit.c + +Patch 7.3.1270 +Problem: Using "Vp" in an empty buffer can't be undone. (Hauke Petersen) +Solution: Save one line in an empty buffer. (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.1271 (after 7.3.1260) +Problem: Command line completion does not work. +Solution: Move setting xp_line down. (Daniel Thau) +Files: src/ex_getln.c + +Patch 7.3.1272 +Problem: Crash when editing Ruby file. (Aliaksandr Rahalevich) +Solution: Reallocate the state list when necessary. +Files: src/regexp_nfa.c + +Patch 7.3.1273 +Problem: When copying a location list the index might be wrong. +Solution: Set the index to one when using the first entry. (Lech Lorens) +Files: src/quickfix.c + +Patch 7.3.1274 +Problem: When selecting an entry from a location list it may pick an + arbitrary window or open a new one. +Solution: Prefer using a window related to the location list. (Lech Lorens) +Files: src/quickfix.c + +Patch 7.3.1275 +Problem: "gn" does not work when the match is a single character. +Solution: Fix it, add a test. (Christian Brabandt) +Files: src/search.c, src/testdir/test53.in, src/testdir/test53.ok + +Patch 7.3.1276 +Problem: When using a cscope connection resizing the window may send + SIGWINCH to cscope and it quits. +Solution: Call setpgid(0, 0) in the child process. (Narendran Gopalakrishnan) +Files: src/if_cscope.c + +Patch 7.3.1277 +Problem: In diff mode 'cursorline' also draws in the non-active window. + When 'nu' and 'sbr' are set the 'sbr' string is not underlined. +Solution: Only draw the cursor line in the current window. Combine the + 'cursorline' and other highlighting attributes. (Christian + Brabandt) +Files: src/screen.c + +Patch 7.3.1278 +Problem: When someone sets the screen size to a huge value with "stty" Vim + runs out of memory before reducing the size. +Solution: Limit Rows and Columns in more places. +Files: src/gui.c, src/gui_gtk_x11.c, src/option.c, src/os_unix.c, + src/proto/term.pro, src/term.c + +Patch 7.3.1279 +Problem: Compiler warning for variable uninitialized. (Tony Mechelynck) +Solution: Add an init. +Files: src/ex_getln.c + +Patch 7.3.1280 +Problem: Reading memory already freed since patch 7.3.1247. (Simon + Ruderich, Dominique Pelle) +Solution: Copy submatches before reallocating the state list. +Files: src/regexp_nfa.c + +Patch 7.3.1281 +Problem: When 'ttymouse' is set to "xterm2" clicking in column 123 moves + the cursor to column 96. (Kevin Goodsell) +Solution: Decode KE_CSI. +Files: src/term.c + +Patch 7.3.1282 (after 7.3.1277) +Problem: 'cursorline' not drawn in any other window. (Charles Campbell) +Solution: Do draw the cursor line in other windows. +Files: src/screen.c + +Patch 7.3.1283 +Problem: Test 71 fails on MS-Windows. +Solution: Put the binary data in a separate file. (Ken Takata) +Files: src/testdir/test71.in, src/testdir/test71a.in + +Patch 7.3.1284 +Problem: Compiler warnings in MS-Windows clipboard handling. +Solution: Add type casts. (Ken Takata) +Files: src/winclip.c + +Patch 7.3.1285 +Problem: No tests for picking a window when selecting an entry in a + location list. Not picking the right window sometimes. +Solution: Add test 96. Set usable_win appropriately. (Lech Lorens) +Files: src/quickfix.c, src/testdir/Makefile, src/testdir/test96.in, + src/testdir/test96.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.1286 +Problem: Check for screen size missing for Athena and Motif. +Solution: Add call to limit_screen_size(). +Files: src/gui_x11.c + +Patch 7.3.1287 +Problem: Python SystemExit exception is not handled properly. +Solution: Catch the exception and give an error. (Yasuhiro Matsumoto, Ken + Takata) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python.c, + src/if_python3.c + +Patch 7.3.1288 +Problem: The first ":echo 'hello'" command output doesn't show. Mapping + for <S-F3> gets triggered during startup. +Solution: Add debugging code for the termresponse. When receiving the "Co" + entry and when setting 'ambiwidth' redraw right away if possible. + Add redraw_asap(). Don't set 'ambiwidth' if it already had the + right value. Do the 'ambiwidth' check in the second row to avoid + confusion with <S-F3>. +Files: src/term.c, src/screen.c, src/proto/screen.pro + +Patch 7.3.1289 +Problem: Get GLIB warning when removing a menu item. +Solution: Reference menu-id and also call gtk_container_remove(). (Ivan + Krasilnikov) +Files: src/gui_gtk.c + +Patch 7.3.1290 (after 7.3.1253) +Problem: CTRL-R = in Insert mode changes the start of the insert position. + (Ingo Karkat) +Solution: Only break undo, don't start a new insert. +Files: src/edit.c + +Patch 7.3.1291 (after 7.3.1288) +Problem: Compiler warnings for uninitialized variables. (Tony Mechelynck) +Solution: Initialize the variables. +Files: src/screen.c + +Patch 7.3.1292 +Problem: Possibly using invalid pointer when searching for window. (Raichoo) +Solution: Use "firstwin" instead of "tp_firstwin" for current tab. +Files: src/window.c + +Patch 7.3.1293 +Problem: Put in empty buffer cannot be undone. +Solution: Save one more line for undo. (Ozaki) +Files: src/ops.c + +Patch 7.3.1294 +Problem: ":diffoff" resets options. +Solution: Save and restore option values. (Christian Brabandt) +Files: src/diff.c, src/structs.h, src/option.c + +Patch 7.3.1295 +Problem: glob() and globpath() do not handle escaped special characters + properly. +Solution: Handle escaped characters differently. (Adnan Zafar) +Files: src/testdir/Makefile, src/testdir/test97.in, + src/testdir/test97.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, src/fileio.c, + src/misc1.c + +Patch 7.3.1296 +Problem: Only MS-Windows limits the GUI window size to what fits on the + monitor. +Solution: Limit the size for all systems. (Daniel Harding) +Files: src/ui.c + +Patch 7.3.1297 +Problem: findfile() directory matching does not work when a star follows + text. (Markus Braun) +Solution: Make a wildcard work properly. (Christian Brabandt) +Files: src/misc2.c, src/testdir/test89.in, src/testdir/test89.ok + +Patch 7.3.1298 (after 7.3.1297) +Problem: Crash. +Solution: Use STRCPY() instead of STRCAT() and allocate one more byte. +Files: src/misc2.c + +Patch 7.3.1299 +Problem: Errors when doing "make proto". Didn't do "make depend" for a + while. +Solution: Add #ifdefs. Update dependencies. Update proto files. +Files: src/if_python3.c, src/os_win32.c, src/Makefile, + src/proto/ex_docmd.pro, src/proto/if_python.pro, + src/proto/if_python3.pro, src/proto/gui_w16.pro, + src/proto/gui_w32.pro, src/proto/os_win32.pro + +Patch 7.3.1300 +Problem: Mac: tiny and small build fails. +Solution: Don't include os_macosx.m in tiny build. Include mouse support in + small build. (Kazunobu Kuriyama) +Files: src/configure.in, src/auto/configure, src/vim.h + +Patch 7.3.1301 +Problem: Some tests fail on MS-Windows. +Solution: Fix path separators in test 89 and 96. Omit test 97, escaping + works differently. Make findfile() work on MS-Windows. +Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/test89.in, + src/testdir/test96.in, src/misc2.c + +Patch 7.3.1302 +Problem: Test 17 fails on MS-Windows. Includes line break in file name + everywhere. +Solution: Fix 'fileformat'. Omit CR-LF from a line read from an included + file. +Files: src/search.c, src/testdir/test17.in, src/testdir/test17.ok + +Patch 7.3.1303 (after 7.3.1290) +Problem: Undo is synced whenever CTRL-R = is called, breaking some plugins. +Solution: Only break undo when calling setline() or append(). +Files: src/globals.h, src/eval.c, src/edit.c, src/testdir/test61.in, + src/testdir/test61.ok + +Patch 7.3.1304 +Problem: Test 89 still fails on MS-Windows. +Solution: Set 'shellslash'. (Taro Muraoka) +Files: src/testdir/test89.in + +Patch 7.3.1305 +Problem: Warnings from 64 bit compiler. +Solution: Add type casts. +Files: src/misc2.c + +Patch 7.3.1306 +Problem: When redrawing the screen during startup the intro message may be + cleared. +Solution: Redisplay the intro message when appropriate. +Files: src/screen.c, src/version.c, src/proto/version.pro + +Patch 7.3.1307 +Problem: MS-Windows build instructions are outdated. +Solution: Adjust for building on Windows 7. Drop Windows 95/98/ME support. +Files: Makefile, nsis/gvim.nsi + +Patch 7.3.1308 +Problem: Typos in MS-Windows build settings and README. +Solution: Minor changes to MS-Windows files. +Files: src/msvc2008.bat, src/msvc2010.bat, src/VisVim/README_VisVim.txt + +Patch 7.3.1309 +Problem: When a script defines a function the flag to wait for the user to + hit enter is reset. +Solution: Restore the flag. (Yasuhiro Matsumoto) Except when the user was + typing the function. +Files: src/eval.c + +Patch 7.3.1310 +Problem: Typos in nsis script. Can use better compression. +Solution: Fix typos. Use lzma compression. (Ken Takata) +Files: nsis/gvim.nsi + +Patch 7.3.1311 +Problem: Compiler warnings on Cygwin. +Solution: Add type casts. Add windows include files. (Ken Takata) +Files: src/mbyte.c, src/ui.c + +Patch 7.3.1312 (after 7.3.1287) +Problem: Not giving correct error messages for SystemExit(). +Solution: Move E858 into an else. (Ken Takata) +Files: src/if_py_both.h + +Patch 7.3.1313 +Problem: :py and :py3 don't work when compiled with Cygwin or MingW with 64 + bit. +Solution: Add -DMS_WIN64 to the build command. (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak + +Patch 7.3.1314 +Problem: Test 87 fails with Python 3.3. +Solution: Filter the error messages. (Taro Muraoka) +Files: src/testdir/test87.in + +Patch 7.4a.001 +Problem: Script to update syntax menu is outdated. +Solution: Add the missing items. +Files: runtime/makemenu.vim + +Patch 7.4a.002 +Problem: Valgrind errors in test 89. (Simon Ruderich) +Solution: Allocate one more byte. (Dominique Pelle) +Files: src/misc2.c + +Patch 7.4a.003 +Problem: Copyright year is outdated. +Solution: Only use the first year. +Files: src/vim.rc, src/vim16.rc + +Patch 7.4a.004 +Problem: MSVC 2012 Update 3 is not recognized. +Solution: Add the version number. (Raymond Ko) +Files: src/Make_mvc.mak + +Patch 7.4a.005 +Problem: Scroll binding causes unexpected scroll. +Solution: Store the topline after updating scroll binding. Add a test. + (Lech Lorens) +Files: src/testdir/test98.in, src/testdir/test98a.in, + src/testdir/test98.ok, src/option.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile + +Patch 7.4a.006 +Problem: Failure in po file check goes unnoticed. +Solution: Fail "make test" if the po file check fails. +Files: src/Makefile + +Patch 7.4a.007 +Problem: After "g$" with 'virtualedit' set, "k" moves to a different + column. (Dimitar Dimitrov) +Solution: Set w_curswant. (Christian Brabandt) +Files: src/normal.c + +Patch 7.4a.008 +Problem: Python 3 doesn't handle multibyte characters properly when + 'encoding' is not utf-8. +Solution: Use PyUnicode_Decode() instead of PyUnicode_FromString(). (Ken + Takata) +Files: src/if_python3.c + +Patch 7.4a.009 +Problem: Compiler warnings for function prototypes. +Solution: Add "void". Move list_features() prototype. (Ken Takata) +Files: src/gui_w48.c, src/if_py_both.h, src/version.c + +Patch 7.4a.010 +Problem: Test 86 and 87 fail when building with Python or Python 3 and + using a static library. +Solution: Add configure check to add -fPIE compiler flag. +Files: src/configure.in, src/auto/configure + +Patch 7.4a.011 +Problem: Configure check for Python 3 config name isn't right. +Solution: Always include vi_cv_var_python3_version. (Tim Harder) +Files: src/configure.in, src/auto/configure + +Patch 7.4a.012 +Problem: "make test" fails when using a shadow directory. +Solution: Create links for files in src/po. (James McCoy) +Files: src/Makefile + +Patch 7.4a.013 +Problem: Setting/resetting 'lbr' in the main help file changes alignment + after a Tab. (Dimitar Dimitrov) +Solution: Also use the code for conceal mode where n_extra is computed for + 'lbr'. +Files: src/screen.c, src/testdir/test88.in, src/testdir/test88.ok + +Patch 7.4a.014 +Problem: Test 86 and 89 have a problem with using a shadow dir. +Solution: Adjust for the different directory structure. (James McCoy) +Files: src/testdir/test89.in, src/testdir/test86.in, src/Makefile + +Patch 7.4a.015 +Problem: No Japanese man pages. +Solution: Add Japanese translations of man pages. (Ken Takata, Yukihiro + Nakadaira, et al.) +Files: Filelist, src/Makefile, runtime/doc/evim-ja.UTF-8.1, + runtime/doc/vim-ja.UTF-8.1, runtime/doc/vimdiff-ja.UTF-8.1, + runtime/doc/vimtutor-ja.UTF-8.1, runtime/doc/xxd-ja.UTF-8.1 + +Patch 7.4a.016 (after 7.4a.014) +Problem: Features enabled in Makefile. +Solution: Undo accidental changes. +Files: src/Makefile + +Patch 7.4a.017 +Problem: When 'foldmethod' is "indent", using ">>" on a line just above a + fold makes the cursor line folded. (Evan Laforge) +Solution: Call foldOpenCursor(). (Christian Brabandt) +Files: src/ops.c + +Patch 7.4a.018 +Problem: Compiler warning for code unreachable. (Charles Campbell) +Solution: Use "while" instead of endless loop. Change break to continue. +Files: src/regexp_nfa.c, src/ui.c + +Patch 7.4a.019 +Problem: Invalid closing parenthesis in test 62. Command truncated at + double quote. +Solution: Remove the parenthesis. Change double quote to ''. (ZyX) +Files: src/testdir/test62.in, src/testdir/test62.ok + +Patch 7.4a.020 +Problem: Superfluous mb_ptr_adv(). +Solution: Remove the call. (Dominique Pelle) +Files: src/regexp_nfa.c + +Patch 7.4a.021 +Problem: Using feedkeys() doesn't always work. +Solution: Omit feedkeys(). (Ken Takata) +Files: src/testdir/test98a.in + +Patch 7.4a.022 +Problem: Using "d2g$" does not delete the last character. (ZyX) +Solution: Set the "inclusive" flag properly. +Files: src/normal.c + +Patch 7.4a.023 (after 7.4a.019) +Problem: Still another superfluous parenthesis. (ZyX) +Solution: Remove it. +Files: src/testdir/test62.in + +Patch 7.4a.024 +Problem: X11 GUI: Checking icon height twice. +Solution: Check height and width. (Dominique Pelle) +Files: src/gui_x11.c + +Patch 7.4a.025 +Problem: Get the press-Enter prompt even after using :redraw. +Solution: Clear need_wait_return when executing :redraw. +Files: src/ex_docmd.c + +Patch 7.4a.026 +Problem: ":diffoff" does not remove folds. (Ramel) +Solution: Do not restore 'foldenable' when 'foldmethod' is "manual". +Files: src/diff.c + +Patch 7.4a.027 +Problem: When Python adds lines to another buffer the cursor position is + wrong, it might be below the last line causing ml_get errors. + (Vlad Irnov) +Solution: Temporarily change the current window, so that marks are corrected + properly. +Files: src/if_py_both.h, src/window.c, src/proto/buffer.pro + +Patch 7.4a.028 +Problem: Crash when spell checking in new buffer. +Solution: Set the b_p_key field. (Mike Williams) +Files: src/spell.c, src/testdir/test58.in + +Patch 7.4a.029 +Problem: Can't build with MzScheme on Ubuntu 13.04. +Solution: Add configure check for the "ffi" library. +Files: src/configure.in, src/auto/configure + +Patch 7.4a.030 (after 7.4.027) +Problem: Missing find_win_for_buf(). (toothpik) +Solution: Add missing changes. +Files: src/buffer.c + +Patch 7.4a.031 +Problem: Compiler warnings. (Charles Campbell) +Solution: Initialize variables even when not needed. +Files: src/regexp_nfa.c, src/search.c + +Patch 7.4a.032 +Problem: New regexp engine: Does not match shorter alternative. (Ingo + Karkat) +Solution: Do not drop a new state when the PIM info is different. +Files: src/regexp_nfa.c + +Patch 7.4a.033 +Problem: Test 98 always passes. +Solution: Include test98a.in in test98.in, execute the crucial command in + one line. (Yukihiro Nakadaira) +Files: src/testdir/test98.in, src/testdir/test98a.in + +Patch 7.4a.034 +Problem: The tabline may flicker when opening a new tab after 7.3.759 on + Win32. +Solution: Move call to TabCtrl_SetCurSel(). (Ken Takata) +Files: src/gui_w48.c + +Patch 7.4a.035 +Problem: Fix in patch 7.4a.032 is not tested. +Solution: Add test. +Files: src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4a.036 +Problem: "\p" in a regexp does not match double-width characters. + (Yukihiro Nakadaira) +Solution: Don't count display cells, use vim_isprintc(). +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok, src/testdir/test95.in, + src/testdir/test95.ok + +Patch 7.4a.037 +Problem: Win32: When mouse is hidden and in the toolbar, moving it won't + make it appear. (Sami Salonen) +Solution: Add tabline_wndproc() and toolbar_wndproc(). (Ken Takata) +Files: src/gui_w32.c, src/gui_w48.c + +Patch 7.4a.038 +Problem: When using MSVC 2012 there are various issues, including GUI size + computations. +Solution: Use SM_CXPADDEDBORDER. (Mike Williams) +Files: src/gui_w32.c, src/gui_w48.c, src/os_win32.h + +Patch 7.4a.039 +Problem: New regexp engine doesn't match pattern. (Ingo Karkat) +Solution: When adding a state also check for different PIM if the list of + states has any state with a PIM. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4a.040 +Problem: Win32: using uninitialized variable. +Solution: (Yukihiro Nakadaira) +Files: src/os_win32.c + +Patch 7.4a.041 +Problem: When using ":new ++ff=unix" and "dos" is first in 'fileformats' + then 'ff' is set to "dos" instead of "unix". (Ingo Karkat) +Solution: Create set_file_options() and invoke it from do_ecmd(). +Files: src/fileio.c, src/proto/fileio.pro, src/ex_cmds.c, + src/testdir/test91.in, src/testdir/test91.ok + +Patch 7.4a.042 +Problem: Crash when BufUnload autocommands close all buffers. (Andrew + Pimlott) +Solution: Set curwin->w_buffer to curbuf to avoid NULL. +Files: src/window.c, src/testdir/test8.in, src/testdir/test8.ok + +Patch 7.4a.043 +Problem: More ml_get errors when adding or deleting lines from Python. + (Vlad Irnov) +Solution: Switch to a window with the buffer when possible. +Files: src/if_py_both.h + +Patch 7.4a.044 +Problem: Test 96 sometimes fails. +Solution: Clear window from b_wininfo in win_free(). (Suggestion by + Yukihiro Nakadaira) +Files: src/window.c + +Patch 7.4a.045 +Problem: Configure does not always find the right library for Lua. Missing + support for LuaJit. +Solution: Improve the configure detection of Lua. (Hiroshi Shirosaki) +Files: src/Makefile, src/configure.in, src/auto/configure + +Patch 7.4a.046 +Problem: Can't build without mbyte feature. +Solution: Add #ifdefs. +Files: src/ex_cmds.c + +Patch 7.4a.047 +Problem: Some comments are not so nice. +Solution: Change the comments. +Files: src/ex_docmd.c, src/message.c, src/ops.c, src/option.c + +Patch 7.4b.001 +Problem: Win32: dialog may extend off-screen. +Solution: Reduce the size, use correct borders. (Andrei Olsen) +Files: src/gui_w32.c + +Patch 7.4b.002 +Problem: Crash searching for \%(\%(\|\d\|-\|\.\)*\|\*\). (Marcin + Szamotulski) Also for \(\)*. +Solution: Do add a state for opening parenthesis, so that we can check if it + was added before at the same position. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4b.003 +Problem: Regexp code is not nicely aligned. +Solution: Adjust white space. (Ken Takata) +Files: src/regexp_nfa.c + +Patch 7.4b.004 +Problem: Regexp crash on pattern "@\%[\w\-]*". (Axel Kielhorn) +Solution: Add \%(\) around \%[] internally. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4b.005 +Problem: Finding %s in shellpipe and shellredir does not ignore %%s. +Solution: Skip over %%. (lcd 47) +Files: src/ex_cmds.c + +Patch 7.4b.006 (after 7.3.1295) +Problem: Using \{n,m} in an autocommand pattern no longer works. + Specifically, mutt temp files are not recognized. (Gary Johnson) +Solution: Make \\\{n,m\} work. +Files: runtime/doc/autocmd.txt, src/fileio.c + +Patch 7.4b.007 +Problem: On 32 bit MS-Windows :perldo does not work. +Solution: Make sure time_t uses 32 bits. (Ken Takata) +Files: src/if_perl.xs, src/vim.h + +Patch 7.4b.008 +Problem: 'autochdir' causes setbufvar() to change the current directory. + (Ben Fritz) +Solution: When disabling autocommands also reset 'acd' temporarily. + (Christian Brabandt) +Files: src/fileio.c + +Patch 7.4b.009 +Problem: When setting the Visual area manually and 'selection' is + exclusive, a yank includes one character too much. (Ingo Karkat) +Solution: Default the Visual operation to "v". (Christian Brabandt) +Files: src/mark.c + +Patch 7.4b.010 +Problem: Win32: Tcl library load does not use standard mechanism. +Solution: Call vimLoadLib() instead of LoadLibraryEx(). (Ken Takata) +Files: src/if_perl.xs, src/if_tcl.c + +Patch 7.4b.011 +Problem: ":he \%(\)" does not work. (ZyX) +Solution: Add an exception to the list. +Files: src/ex_cmds.c + +Patch 7.4b.012 +Problem: Output from a shell command is truncated at a NUL. (lcd 47) +Solution: Change every NUL into an SOH. +Files: src/misc1.c + +Patch 7.4b.013 +Problem: Install dir for JP man pages is wrong. +Solution: Remove ".UTF-8" from the directory name. (Ken Takata) +Files: src/Makefile + +Patch 7.4b.014 (after 7.4b.012) +Problem: Stupid mistake. +Solution: Changle "len" to "i". +Files: src/misc1.c + +Patch 7.4b.015 (after 7.4b.008) +Problem: Can't compile without the 'acd' feature. +Solution: Add #ifdefs. (Kazunobu Kuriyama) +Files: src/fileio.c + +Patch 7.4b.016 +Problem: Ruby detection fails on Fedora 19. +Solution: Use one way to get the Ruby version. (Michael Henry) +Files: src/configure.in, src/auto/configure + +Patch 7.4b.017 +Problem: ":he \^x" gives a strange error message. (glts) +Solution: Do not translate \^x to \_CTRL-x. +Files: src/ex_cmds.c + +Patch 7.4b.018 (after 7.4b.001) +Problem: Win32: Dialog can still be too big. +Solution: Move the check for height further down. (Andrei Olsen) +Files: src/gui_w32.c + +Patch 7.4b.019 (after 7.4a.034) +Problem: Tabline is not updated properly when closing a tab on Win32. +Solution: Only reduce flickering when adding a tab. (Ken Takata) +Files: src/gui_w48.c + +Patch 7.4b.020 +Problem: "g~ap" changes first character of next paragraph. (Manuel Ortega) +Solution: Avoid subtracting (0 - 1) from todo. (Mike Williams) +Files: src/ops.c, src/testdir/test82.in, src/testdir/test82.ok + +Patch 7.4b.021 +Problem: Pressing "u" after an external command results in multiple + press-enter messages. (glts) +Solution: Don't call hit_return_msg() when we have K_IGNORE. (Christian + Brabandt) +Files: src/message.c + +Patch 7.4b.022 +Problem: Not waiting for a character when the tick count overflows. +Solution: Subtract the unsigned numbers and cast to int. (Ken Takata) +Files: src/os_win32.c + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/vi_diff.txt b/share/vim/vim74/doc/vi_diff.txt new file mode 100644 index 00000000..f35cc02b --- /dev/null +++ b/share/vim/vim74/doc/vi_diff.txt @@ -0,0 +1,1012 @@ +*vi_diff.txt* For Vim version 7.4. Last change: 2012 Aug 08 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Differences between Vim and Vi *vi-differences* + +Throughout the help files differences between Vim and Vi/Ex are given in +curly braces, like "{not in Vi}". This file only lists what has not been +mentioned in other files and gives an overview. + +Vim is mostly POSIX 1003.2-1 compliant. The only command known to be missing +is ":open". There are probably a lot of small differences (either because Vim +is missing something or because Posix is beside the mark). + +1. Simulated command |simulated-command| +2. Missing options |missing-options| +3. Limits |limits| +4. The most interesting additions |vim-additions| +5. Other vim features |other-features| +6. Command-line arguments |cmdline-arguments| +7. POSIX compliance |posix-compliance| + +============================================================================== +1. Simulated command *simulated-command* + +This command is in Vi, but Vim only simulates it: + + *:o* *:op* *:open* +:[range]o[pen] Works like |:visual|: end Ex mode. + {Vi: start editing in open mode} + +:[range]o[pen] /pattern/ As above, additionally move the cursor to the + column where "pattern" matches in the cursor + line. + +Vim does not support open mode, since it's not really useful. For those +situations where ":open" would start open mode Vim will leave Ex mode, which +allows executing the same commands, but updates the whole screen instead of +only one line. + +============================================================================== +2. Missing options *missing-options* + +These options are in the Unix Vi, but not in Vim. If you try to set one of +them you won't get an error message, but the value is not used and cannot be +printed. + +autoprint (ap) boolean (default on) *'autoprint'* *'ap'* +beautify (bf) boolean (default off) *'beautify'* *'bf'* +flash (fl) boolean (default ??) *'flash'* *'fl'* +graphic (gr) boolean (default off) *'graphic'* *'gr'* +hardtabs (ht) number (default 8) *'hardtabs'* *'ht'* + number of spaces that a <Tab> moves on the display +mesg boolean (default on) *'mesg'* +novice boolean (default off) *'novice'* +open boolean (default on) *'open'* +optimize (op) boolean (default off) *'optimize'* *'op'* +redraw boolean (default off) *'redraw'* +slowopen (slow) boolean (default off) *'slowopen'* *'slow'* +sourceany boolean (default off) *'sourceany'* +w300 number (default 23) *'w300'* +w1200 number (default 23) *'w1200'* +w9600 number (default 23) *'w9600'* + +============================================================================== +3. Limits *limits* + +Vim has only a few limits for the files that can be edited {Vi: can not handle +<Nul> characters and characters above 128, has limited line length, many other +limits}. + *E340* +Maximum line length On machines with 16-bit ints (Amiga and MS-DOS real + mode): 32767, otherwise 2147483647 characters. + Longer lines are split. +Maximum number of lines 2147483647 lines. +Maximum file size 2147483647 bytes (2 Gbyte) when a long integer is + 32 bits. Much more for 64 bit longs. Also limited + by available disk space for the |swap-file|. + *E75* +Length of a file path Unix and Win32: 1024 characters, otherwise 256 + characters (or as much as the system supports). +Length of an expanded string option + Unix and Win32: 1024 characters, otherwise 256 + characters +Maximum display width Unix and Win32: 1024 characters, otherwise 255 + characters +Maximum lhs of a mapping 50 characters. +Number of different highlighting types: over 30000 +Range of a Number variable: -2147483648 to 2147483647 (might be more on 64 + bit systems) +Maximum length of a line in a tags file: 512 bytes. + +Information for undo and text in registers is kept in memory, thus when making +(big) changes the amount of (virtual) memory available limits the number of +undo levels and the text that can be kept in registers. Other things are also +kept in memory: Command-line history, error messages for Quickfix mode, etc. + +Memory usage limits +------------------- + +The option 'maxmem' ('mm') is used to set the maximum memory used for one +buffer (in kilobytes). 'maxmemtot' is used to set the maximum memory used for +all buffers (in kilobytes). The defaults depend on the system used. For the +Amiga and MS-DOS, 'maxmemtot' is set depending on the amount of memory +available. +These are not hard limits, but tell Vim when to move text into a swap file. +If you don't like Vim to swap to a file, set 'maxmem' and 'maxmemtot' to a +very large value. The swap file will then only be used for recovery. If you +don't want a swap file at all, set 'updatecount' to 0, or use the "-n" +argument when starting Vim. + +============================================================================== +4. The most interesting additions *vim-additions* + +Vi compatibility. |'compatible'| + Although Vim is 99% Vi compatible, some things in Vi can be + considered to be a bug, or at least need improvement. But still, Vim + starts in a mode which behaves like the "real" Vi as much as possible. + To make Vim behave a little bit better, try resetting the 'compatible' + option: + :set nocompatible + Or start Vim with the "-N" argument: + vim -N + Vim starts with 'nocompatible' automatically if you have a .vimrc + file. See |startup|. + The 'cpoptions' option can be used to set Vi compatibility on/off for + a number of specific items. + +Support for different systems. + Vim can be used on: + - All Unix systems (it works on all systems it was tested on, although + the GUI and Perl interface may not work everywhere). + - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...). + - MS-DOS in real-mode (no additional drivers required). + - In protected mode on Windows 3.1 and MS-DOS (DPMI driver required). + - Windows 95 and Windows NT, with support for long file names. + - OS/2 (needs emx.dll) + - Atari MiNT + - VMS + - BeOS + - Macintosh + - Risc OS + - IBM OS/390 + Note that on some systems features need to be disabled to reduce + resource usage, esp. on MS-DOS. For some outdated systems you need to + use an older Vim version. + +Multi level undo. |undo| + 'u' goes backward in time, 'CTRL-R' goes forward again. Set option + 'undolevels' to the number of changes to be remembered (default 1000). + Set 'undolevels' to 0 for a vi-compatible one level undo. Set it to + -1 for no undo at all. + When all changes in a buffer have been undone, the buffer is not + considered changed anymore. You can exit it with :q, without <!>. + When undoing a few changes and then making a new change Vim will + create a branch in the undo tree. This means you can go back to any + state of the text, there is no risk of a change causing text to be + lost forever. |undo-tree| + +Graphical User Interface (GUI). |gui| + Included support for GUI: menu's, mouse, scrollbars, etc. You can + define your own menus. Better support for CTRL/SHIFT/ALT keys in + combination with special keys and mouse. Supported for various + platforms, such as X11 (with Motif and Athena interfaces), GTK, Win32 + (Windows 95 and later), BeOS, Amiga and Macintosh. + +Multiple windows and buffers. |windows.txt| + Vim can split the screen into several windows, each editing a + different buffer or the same buffer at a different location. Buffers + can still be loaded (and changed) but not displayed in a window. This + is called a hidden buffer. Many commands and options have been added + for this facility. + Vim can also use multiple tab pages, each with one or more windows. A + line with tab labels can be used to quickly switch between these pages. + |tab-page| + +Syntax highlighting. |:syntax| + Vim can highlight keywords, patterns and other things. This is + defined by a number of |:syntax| commands, and can be made to + highlight most languages and file types. A number of files are + included for highlighting the most common languages, like C, C++, + Java, Pascal, Makefiles, shell scripts, etc. The colors used for + highlighting can be defined for ordinary terminals, color terminals + and the GUI with the |:highlight| command. A convenient way to do + this is using a |:colorscheme| command. + The highlighted text can be exported as HTML. |convert-to-HTML| + Other items that can be highlighted are matches with the search string + |'hlsearch'|, matching parens |matchparen| and the cursor line and + column |'cursorline'| |'cursorcolumn'|. + +Spell checking. |spell| + When the 'spell' option is set Vim will highlight spelling mistakes. + About 50 languages are currently supported, selected with the + 'spelllang' option. In source code only comments and strings are + checked for spelling. + +Folding. |folding| + A range of lines can be shown as one "folded" line. This allows + overviewing a file and moving blocks of text around quickly. + Folds can be created manually, from the syntax of the file, by indent, + etc. + +Diff mode. |diff| + Vim can show two versions of a file with the differences highlighted. + Parts of the text that are equal are folded away. Commands can be + used to move text from one version to the other. + +Plugins. |add-plugin| + The functionality can be extended by dropping a plugin file in the + right directory. That's an easy way to start using Vim scripts + written by others. Plugins can be for all kind of files, or + specifically for a filetype. + +Repeat a series of commands. |q| + "q{c}" starts recording typed characters into named register {c}. + A subsequent "q" stops recording. The register can then be executed + with the "@{c}" command. This is very useful to repeat a complex + action. + +Flexible insert mode. |ins-special-special| + The arrow keys can be used in insert mode to move around in the file. + This breaks the insert in two parts as far as undo and redo is + concerned. + + CTRL-O can be used to execute a single Normal mode command. This is + almost the same as hitting <Esc>, typing the command and doing |a|. + +Visual mode. |Visual-mode| + Visual mode can be used to first highlight a piece of text and then + give a command to do something with it. This is an (easy to use) + alternative to first giving the operator and then moving to the end of + the text to be operated upon. + |v| and |V| are used to start Visual mode. |v| works on characters + and |V| on lines. Move the cursor to extend the Visual area. It is + shown highlighted on the screen. By typing "o" the other end of the + Visual area can be moved. The Visual area can be affected by an + operator: + d delete + c change + y yank + > or < insert or delete indent + ! filter through external program + = filter through indent + : start |:| command for the Visual lines. + gq format text to 'textwidth' columns + J join lines + ~ swap case + u make lowercase + U make uppercase + +Block operators. |visual-block| + With Visual mode a rectangular block of text can be selected. Start + Visual mode with CTRL-V. The block can be deleted ("d"), yanked ("y") + or its case can be changed ("~", "u" and "U"). A deleted or yanked + block can be put into the text with the "p" and "P" commands. + +Help system. |:help| + Help is displayed in a window. The usual commands can be used to + move around, search for a string, etc. Tags can be used to jump + around in the help files, just like hypertext links. The |:help| + command takes an argument to quickly jump to the info on a subject. + <F1> is the quick access to the help system. The name of the help + index file can be set with the 'helpfile' option. + +Command-line editing and history. |cmdline-editing| + You can insert or delete at any place in the command-line using the + cursor keys. The right/left cursor keys can be used to move + forward/backward one character. The shifted right/left cursor keys + can be used to move forward/backward one word. CTRL-B/CTRL-E can be + used to go to the begin/end of the command-line. + |cmdline-history| + The command-lines are remembered. The up/down cursor keys can be used + to recall previous command-lines. The 'history' option can be set to + the number of lines that will be remembered. There is a separate + history for commands and for search patterns. + +Command-line completion. |cmdline-completion| + While entering a command-line (on the bottom line of the screen) + <Tab> can be typed to complete + what example ~ + - command :e<Tab> + - tag :ta scr<Tab> + - option :set sc<Tab> + - option value :set hf=<Tab> + - file name :e ve<Tab> + - etc. + + If there are multiple matches, CTRL-N (next) and CTRL-P (previous) + will walk through the matches. <Tab> works like CTRL-N, but wraps + around to the first match. + + The 'wildchar' option can be set to the character for command-line + completion, <Tab> is the default. CTRL-D can be typed after an + (incomplete) wildcard; all matches will be listed. CTRL-A will insert + all matches. CTRL-L will insert the longest common part of the + matches. + +Insert-mode completion. |ins-completion| + In Insert mode the CTRL-N and CTRL-P keys can be used to complete a + word that appears elsewhere. |i_CTRL-N| + With CTRL-X another mode is entered, through which completion can be + done for: + |i_CTRL-X_CTRL-F| file names + |i_CTRL-X_CTRL-K| words from 'dictionary' files + |i_CTRL-X_CTRL-T| words from 'thesaurus' files + |i_CTRL-X_CTRL-I| words from included files + |i_CTRL-X_CTRL-L| whole lines + |i_CTRL-X_CTRL-]| words from the tags file + |i_CTRL-X_CTRL-D| definitions or macros + |i_CTRL-X_CTRL-O| Omni completion: clever completion + specifically for a file type + etc. + +Long line support. |'wrap'| |'linebreak'| + If the 'wrap' option is off, long lines will not wrap and only part + of them will be shown. When the cursor is moved to a part that is not + shown, the screen will scroll horizontally. The minimum number of + columns to scroll can be set with the 'sidescroll' option. The |zh| + and |zl| commands can be used to scroll sideways. + Alternatively, long lines are broken in between words when the + 'linebreak' option is set. This allows editing a single-line + paragraph conveniently (e.g. when the text is later read into a DTP + program). Move the cursor up/down with the |gk| and |gj| commands. + +Text formatting. |formatting| + The 'textwidth' option can be used to automatically limit the line + length. This supplements the 'wrapmargin' option of Vi, which was not + very useful. The |gq| operator can be used to format a piece of text + (for example, |gqap| formats the current paragraph). Commands for + text alignment: |:center|, |:left| and |:right|. + +Extended search patterns. |pattern| + There are many extra items to match various text items. Examples: + A "\n" can be used in a search pattern to match a line break. + "x\{2,4}" matches "x" 2 to 4 times. + "\s" matches a white space character. + +Directory, remote and archive browsing. |netrw| + Vim can browse the file system. Simply edit a directory. Move around + in the list with the usual commands and press <Enter> to go to the + directory or file under the cursor. + This also works for remote files over ftp, http, ssh, etc. + Zip and tar archives can also be browsed. |tar| |zip| + +Edit-compile-edit speedup. |quickfix| + The |:make| command can be used to run the compilation and jump to the + first error. A file with compiler error messages is interpreted. Vim + jumps to the first error. + + Each line in the error file is scanned for the name of a file, line + number and error message. The 'errorformat' option can be set to a + list of scanf-like strings to handle output from many compilers. + + The |:cn| command can be used to jump to the next error. + |:cl| lists all the error messages. Other commands are available. + The 'makeef' option has the name of the file with error messages. + The 'makeprg' option contains the name of the program to be executed + with the |:make| command. + The 'shellpipe' option contains the string to be used to put the + output of the compiler into the errorfile. + +Finding matches in files. |:vimgrep| + Vim can search for a pattern in multiple files. This uses the + advanced Vim regexp pattern, works on all systems and also works to + search in compressed files. + +Improved indenting for programs. |'cindent'| + When the 'cindent' option is on the indent of each line is + automatically adjusted. C syntax is mostly recognized. The indent + for various styles can be set with 'cinoptions'. The keys to trigger + indenting can be set with 'cinkeys'. + + Comments can be automatically formatted. The 'comments' option can be + set to the characters that start and end a comment. This works best + for C code, but also works for e-mail (">" at start of the line) and + other types of text. The |=| operator can be used to re-indent + lines. + + For many other languages an indent plugin is present to support + automatic indenting. |30.3| + +Searching for words in included files. |include-search| + The |[i| command can be used to search for a match of the word under + the cursor in the current and included files. The 'include' option + can be set to a pattern that describes a command to include a file + (the default is for C programs). + The |[I| command lists all matches, the |[_CTRL-I| command jumps to + a match. + The |[d|, |[D| and |[_CTRL-D| commands do the same, but only for + lines where the pattern given with the 'define' option matches. + +Automatic commands. |autocommand| + Commands can be automatically executed when reading a file, writing a + file, jumping to another buffer, etc., depending on the file name. + This is useful to set options and mappings for C programs, + documentation, plain text, e-mail, etc. This also makes it possible + to edit compressed files. + +Scripts and Expressions. |expression| + Commands have been added to form up a powerful script language. + |:if| Conditional execution, which can be used for example + to set options depending on the value of $TERM. + |:while| Repeat a number of commands. + |:for| Loop over a list. + |:echo| Print the result of an expression. + |:let| Assign a value to an internal variable, option, etc. + Variable types are Number, String, List and Dictionary. + |:execute| Execute a command formed by an expression. + |:try| Catch exceptions. + etc., etc. See |eval|. + Debugging and profiling are supported. |debug-scripts| |profile| + If this is not enough, an interface is provided to |Python|, |Ruby|, + |Tcl|, |Lua|, |Perl| and |MzScheme|. + +Viminfo. |viminfo-file| + The command-line history, marks and registers can be stored in a file + that is read on startup. This can be used to repeat a search command + or command-line command after exiting and restarting Vim. It is also + possible to jump right back to where the last edit stopped with |'0|. + The 'viminfo' option can be set to select which items to store in the + .viminfo file. This is off by default. + +Printing. |printing| + The |:hardcopy| command sends text to the printer. This can include + syntax highlighting. + +Mouse support. |mouse-using| + The mouse is supported in the GUI version, in an xterm for Unix, for + BSDs with sysmouse, for Linux with gpm, for MS-DOS, and Win32. It + can be used to position the cursor, select the visual area, paste a + register, etc. + +Usage of key names. |<>| |key-notation| + Special keys now all have a name like <Up>, <End>, etc. + This name can be used in mappings, to make it easy to edit them. + +Editing binary files. |edit-binary| + Vim can edit binary files. You can change a few characters in an + executable file, without corrupting it. Vim doesn't remove NUL + characters (they are represented as <NL> internally). + |-b| command-line argument to start editing a binary file + |'binary'| Option set by |-b|. Prevents adding an <EOL> for the + last line in the file. + +Multi-language support. |multi-lang| + Files in double-byte or multi-byte encodings can be edited. There is + UTF-8 support to be able to edit various languages at the same time, + without switching fonts. |UTF-8| + Messages and menus are available in different languages. + +Move cursor beyond lines. + When the 'virtualedit' option is set the cursor can move all over the + screen, also where there is no text. This is useful to edit tables + and figures easily. + +============================================================================== +5. Other vim features *other-features* + +A random collection of nice extra features. + + +When Vim is started with "-s scriptfile", the characters read from +"scriptfile" are treated as if you typed them. If end of file is reached +before the editor exits, further characters are read from the console. + +The "-w" option can be used to record all typed characters in a script file. +This file can then be used to redo the editing, possibly on another file or +after changing some commands in the script file. + +The "-o" option opens a window for each argument. "-o4" opens four windows. + +Vi requires several termcap entries to be able to work full-screen. Vim only +requires the "cm" entry (cursor motion). + + +In command mode: + +When the 'showcmd' option is set, the command characters are shown in the last +line of the screen. They are removed when the command is finished. + +If the 'ruler' option is set, the current cursor position is shown in the +last line of the screen. + +"U" still works after having moved off the last changed line and after "u". + +Characters with the 8th bit set are displayed. The characters between '~' and +0xa0 are displayed as "~?", "~@", "~A", etc., unless they are included in the +'isprint' option. + +"][" goes to the next ending of a C function ('}' in column 1). +"[]" goes to the previous ending of a C function ('}' in column 1). + +"]f", "[f" and "gf" start editing the file whose name is under the cursor. +CTRL-W f splits the window and starts editing the file whose name is under +the cursor. + +"*" searches forward for the identifier under the cursor, "#" backward. +"K" runs the program defined by the 'keywordprg' option, with the identifier +under the cursor as argument. + +"%" can be preceded with a count. The cursor jumps to the line that +percentage down in the file. The normal "%" function to jump to the matching +brace skips braces inside quotes. + +With the CTRL-] command, the cursor may be in the middle of the identifier. + +The used tags are remembered. Commands that can be used with the tag stack +are CTRL-T, ":pop" and ":tag". ":tags" lists the tag stack. + +The 'tags' option can be set to a list of tag file names. Thus multiple +tag files can be used. For file names that start with "./", the "./" is +replaced with the path of the current file. This makes it possible to use a +tags file in the same directory as the file being edited. + +Previously used file names are remembered in the alternate file name list. +CTRL-^ accepts a count, which is an index in this list. +":files" command shows the list of alternate file names. +"#<N>" is replaced with the <N>th alternate file name in the list. +"#<" is replaced with the current file name without extension. + +Search patterns have more features. The <NL> character is seen as part of the +search pattern and the substitute string of ":s". Vi sees it as the end of +the command. + +Searches can put the cursor on the end of a match and may include a character +offset. + +Count added to "~", ":next", ":Next", "n" and "N". + +The command ":next!" with 'autowrite' set does not write the file. In vi the +file was written, but this is considered to be a bug, because one does not +expect it and the file is not written with ":rewind!". + +In Vi when entering a <CR> in replace mode deletes a character only when 'ai' +is set (but does not show it until you hit <Esc>). Vim always deletes a +character (and shows it immediately). + +Added :wnext command. Same as ":write" followed by ":next". + +The ":w!" command always writes, also when the file is write protected. In Vi +you would have to do ":!chmod +w %" and ":set noro". + +When 'tildeop' has been set, "~" is an operator (must be followed by a +movement command). + +With the "J" (join) command you can reset the 'joinspaces' option to have only +one space after a period (Vi inserts two spaces). + +"cw" can be used to change white space formed by several characters (Vi is +confusing: "cw" only changes one space, while "dw" deletes all white space). + +"o" and "O" accept a count for repeating the insert (Vi clears a part of +display). + +Flags after Ex commands not supported (no plans to include it). + +On non-UNIX systems ":cd" command shows current directory instead of going to +the home directory (there isn't one). ":pwd" prints the current directory on +all systems. + +After a ":cd" command the file names (in the argument list, opened files) +still point to the same files. In Vi ":cd" is not allowed in a changed file; +otherwise the meaning of file names change. + +":source!" command reads Vi commands from a file. + +":mkexrc" command writes current modified options and mappings to a ".exrc" +file. ":mkvimrc" writes to a ".vimrc" file. + +No check for "tail recursion" with mappings. This allows things like +":map! foo ^]foo". + +When a mapping starts with number, vi loses the count typed before it (e.g. +when using the mapping ":map g 4G" the command "7g" goes to line 4). This is +considered a vi bug. Vim concatenates the counts (in the example it becomes +"74G"), as most people would expect. + +The :put! command inserts the contents of a register above the current line. + +The "p" and "P" commands of vi cannot be repeated with "." when the putted +text is less than a line. In Vim they can always be repeated. + +":noremap" command can be used to enter a mapping that will not be remapped. +This is useful to exchange the meaning of two keys. ":cmap", ":cunmap" and +":cnoremap" can be used for mapping in command-line editing only. ":imap", +":iunmap" and ":inoremap" can be used for mapping in insert mode only. +Similar commands exist for abbreviations: ":noreabbrev", ":iabbrev" +":cabbrev", ":iunabbrev", ":cunabbrev", ":inoreabbrev", ":cnoreabbrev". + +In Vi the command ":map foo bar" would remove a previous mapping +":map bug foo". This is considered a bug, so it is not included in Vim. +":unmap! foo" does remove ":map! bug foo", because unmapping would be very +difficult otherwise (this is vi compatible). + +The ':' register contains the last command-line. +The '%' register contains the current file name. +The '.' register contains the last inserted text. + +":dis" command shows the contents of the yank registers. + +CTRL-O/CTRL-I can be used to jump to older/newer positions. These are the +same positions as used with the '' command, but may be in another file. The +":jumps" command lists the older positions. + +If the 'shiftround' option is set, an indent is rounded to a multiple of +'shiftwidth' with ">" and "<" commands. + +The 'scrolljump' option can be set to the minimum number of lines to scroll +when the cursor gets off the screen. Use this when scrolling is slow. + +The 'scrolloff' option can be set to the minimum number of lines to keep +above and below the cursor. This gives some context to where you are +editing. When set to a large number the cursor line is always in the middle +of the window. + +Uppercase marks can be used to jump between files. The ":marks" command lists +all currently set marks. The commands "']" and "`]" jump to the end of the +previous operator or end of the text inserted with the put command. "'[" and +"`[" do jump to the start. + +The 'shelltype' option can be set to reflect the type of shell used on the +Amiga. + +The 'highlight' option can be set for the highlight mode to be used for +several commands. + +The CTRL-A (add) and CTRL-X (subtract) commands are new. The count to the +command (default 1) is added to/subtracted from the number at or after the +cursor. That number may be decimal, octal (starts with a '0') or hexadecimal +(starts with '0x'). Very useful in macros. + +With the :set command the prefix "inv" can be used to invert boolean options. + +In both Vi and Vim you can create a line break with the ":substitute" command +by using a CTRL-M. For Vi this means you cannot insert a real CTRL-M in the +text. With Vim you can put a real CTRL-M in the text by preceding it with a +CTRL-V. + + +In Insert mode: + +If the 'revins' option is set, insert happens backwards. This is for typing +Hebrew. When inserting normal characters the cursor will not be shifted and +the text moves rightwards. Backspace, CTRL-W and CTRL-U will also work in +the opposite direction. CTRL-B toggles the 'revins' option. In replace mode +'revins' has no effect. Only when enabled at compile time. + +The backspace key can be used just like CTRL-D to remove auto-indents. + +You can backspace, CTRL-U and CTRL-W over line breaks if the 'backspace' (bs) +option includes "eol". You can backspace over the start of insert if the +'backspace' option includes "start". + +When the 'paste' option is set, a few options are reset and mapping in insert +mode and abbreviation are disabled. This allows for pasting text in windowing +systems without unexpected results. When the 'paste' option is reset, the old +option values are restored. + +CTRL-T/CTRL-D always insert/delete an indent in the current line, no matter +what column the cursor is in. + +CTRL-@ (insert previously inserted text) works always (Vi: only when typed as +first character). + +CTRL-A works like CTRL-@ but does not leave insert mode. + +CTRL-R {0-9a-z..} can be used to insert the contents of a register. + +When the 'smartindent' option is set, C programs will be better auto-indented. +With 'cindent' even more. + +CTRL-Y and CTRL-E can be used to copy a character from above/below the +current cursor position. + +After CTRL-V you can enter a three digit decimal number. This byte value is +inserted in the text as a single character. Useful for international +characters that are not on your keyboard. + +When the 'expandtab' (et) option is set, a <Tab> is expanded to the +appropriate number of spaces. + +The window always reflects the contents of the buffer (Vi does not do this +when changing text and in some other cases). + +If Vim is compiled with DIGRAPHS defined, digraphs are supported. A set of +normal digraphs is included. They are shown with the ":digraph" command. +More can be added with ":digraph {char1}{char2} {number}". A digraph is +entered with "CTRL-K {char1} {char2}" or "{char1} BS {char2}" (only when +'digraph' option is set). + +When repeating an insert, e.g. "10atest <Esc>" vi would only handle wrapmargin +for the first insert. Vim does it for all. + +A count to the "i" or "a" command is used for all the text. Vi uses the count +only for one line. "3iabc<NL>def<Esc>" would insert "abcabcabc<NL>def" in Vi +but "abc<NL>defabc<NL>defabc<NL>def" in Vim. + + +In Command-line mode: + +<Esc> terminates the command-line without executing it. In vi the command +line would be executed, which is not what most people expect (hitting <Esc> +should always get you back to command mode). To avoid problems with some +obscure macros, an <Esc> in a macro will execute the command. If you want a +typed <Esc> to execute the command like vi does you can fix this with + ":cmap ^V<Esc> ^V<CR>" + +General: + +The 'ttimeout' option is like 'timeout', but only works for cursor and +function keys, not for ordinary mapped characters. The 'timeoutlen' option +gives the number of milliseconds that is waited for. If the 'esckeys' option +is not set, cursor and function keys that start with <Esc> are not recognized +in insert mode. + +There is an option for each terminal string. Can be used when termcap is not +supported or to change individual strings. + +The 'fileformat' option can be set to select the <EOL>: "dos" <CR><NL>, "unix" +<NL> or "mac" <CR>. +When the 'fileformats' option is not empty, Vim tries to detect the type of +<EOL> automatically. The 'fileformat' option is set accordingly. + +On systems that have no job control (older Unix systems and non-Unix systems) +the CTRL-Z, ":stop" or ":suspend" command starts a new shell. + +If Vim is started on the Amiga without an interactive window for output, a +window is opened (and :sh still works). You can give a device to use for +editing with the |-d| argument, e.g. "-d con:20/20/600/150". + +The 'columns' and 'lines' options are used to set or get the width and height +of the display. + +Option settings are read from the first and last few lines of the file. +Option 'modelines' determines how many lines are tried (default is 5). Note +that this is different from the Vi versions that can execute any Ex command +in a modeline (a major security problem). |trojan-horse| + +If the 'insertmode' option is set (e.g. in .exrc), Vim starts in insert mode. +And it comes back there, when pressing <Esc>. + +Undo information is kept in memory. Available memory limits the number and +size of change that can be undone. This may be a problem with MS-DOS, is +hardly a problem on the Amiga and almost never with Unix and Win32. + +If the 'backup' or 'writebackup' option is set: Before a file is overwritten, +a backup file (.bak) is made. If the "backup" option is set it is left +behind. + +Vim creates a file ending in ".swp" to store parts of the file that have been +changed or that do not fit in memory. This file can be used to recover from +an aborted editing session with "vim -r file". Using the swap file can be +switched off by setting the 'updatecount' option to 0 or starting Vim with +the "-n" option. Use the 'directory' option for placing the .swp file +somewhere else. + +Vim is able to work correctly on filesystems with 8.3 file names, also when +using messydos or crossdos filesystems on the Amiga, or any 8.3 mounted +filesystem under Unix. See |'shortname'|. + +Error messages are shown at least one second (Vi overwrites error messages). + +If Vim gives the |hit-enter| prompt, you can hit any key. Characters other +than <CR>, <NL> and <Space> are interpreted as the (start of) a command. (Vi +only accepts a command starting with ':'). + +The contents of the numbered and unnamed registers is remembered when +changing files. + +The "No lines in buffer" message is a normal message instead of an error +message, since that may cause a mapping to be aborted. + +The AUX: device of the Amiga is supported. + +============================================================================== +6. Command-line arguments *cmdline-arguments* + +Different versions of Vi have different command-line arguments. This can be +confusing. To help you, this section gives an overview of the differences. + +Five variants of Vi will be considered here: + Elvis Elvis version 2.1b + Nvi Nvi version 1.79 + Posix Posix 1003.2 + Vi Vi version 3.7 (for Sun 4.1.x) + Vile Vile version 7.4 (incomplete) + Vim Vim version 5.2 + +Only Vim is able to accept options in between and after the file names. + ++{command} Elvis, Nvi, Posix, Vi, Vim: Same as "-c {command}". + +- Nvi, Posix, Vi: Run Ex in batch mode. + Vim: Read file from stdin (use -s for batch mode). + +-- Vim: End of options, only file names are following. + +--cmd {command} Vim: execute {command} before sourcing vimrc files. + +--echo-wid Vim: GTK+ echoes the Window ID on stdout + +--help Vim: show help message and exit. + +--literal Vim: take file names literally, don't expand wildcards. + +--nofork Vim: same as |-f| + +--noplugin[s] Vim: Skip loading plugins. + +--remote Vim: edit the files in another Vim server + +--remote-expr {expr} Vim: evaluate {expr} in another Vim server + +--remote-send {keys} Vim: send {keys} to a Vim server and exit + +--remote-silent {file} Vim: edit the files in another Vim server if possible + +--remote-wait Vim: edit the files in another Vim server and wait for it + +--remote-wait-silent Vim: like --remote-wait, no complaints if not possible + +--role {role} Vim: GTK+ 2: set role of main window + +--serverlist Vim: Output a list of Vim servers and exit + +--servername {name} Vim: Specify Vim server name + +--socketid {id} Vim: GTK window socket to run Vim in + +--windowid {id} Vim: Win32 window ID to run Vim in + +--version Vim: show version message and exit. + +-? Vile: print usage summary and exit. + +-a Elvis: Load all specified file names into a window (use -o for + Vim). + +-A Vim: Start in Arabic mode (when compiled with Arabic). + +-b {blksize} Elvis: Use {blksize} blocksize for the session file. +-b Vim: set 'binary' mode. + +-C Vim: Compatible mode. + +-c {command} Elvis, Nvi, Posix, Vim: run {command} as an Ex command after + loading the edit buffer. + Vim: allow up to 10 "-c" arguments + +-d {device} Vim: Use {device} for I/O (Amiga only). {only when compiled + without the |+diff| feature} +-d Vim: start with 'diff' set. |vimdiff| + +-dev {device} Vim: Use {device} for I/O (Amiga only). + +-D Vim: debug mode. + +-e Elvis, Nvi, Vim: Start in Ex mode, as if the executable is + called "ex". + +-E Vim: Start in improved Ex mode |gQ|, like "exim". + +-f Vim: Run GUI in foreground (Amiga: don't open new window). +-f {session} Elvis: Use {session} as the session file. + +-F Vim: Start in Farsi mode (when compiled with Farsi). + Nvi: Fast start, don't read the entire file when editing + starts. + +-G {gui} Elvis: Use the {gui} as user interface. + +-g Vim: Start GUI. +-g N Vile: start editing at line N + +-h Vim: Give help message. + Vile: edit the help file + +-H Vim: start Hebrew mode (when compiled with it). + +-i Elvis: Start each window in Insert mode. +-i {viminfo} Vim: Use {viminfo} for viminfo file. + +-L Vim: Same as "-r" (also in some versions of Vi). + +-l Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options. + +-m Vim: Modifications not allowed to be written, resets 'write' + option. + +-M Vim: Modifications not allowed, resets 'modifiable' and the + 'write' option. + +-N Vim: No-compatible mode. + +-n Vim: No swap file used. + +-nb[args] Vim: open a NetBeans interface connection + +-O[N] Vim: Like -o, but use vertically split windows. + +-o[N] Vim: Open [N] windows, or one for each file. + +-p[N] Vim: Open [N] tab pages, or one for each file. + +-P {parent-title} Win32 Vim: open Vim inside a parent application window + +-q {name} Vim: Use {name} for quickfix error file. +-q{name} Vim: Idem. + +-R Elvis, Nvi, Posix, Vile, Vim: Set the 'readonly' option. + +-r Elvis, Nvi, Posix, Vi, Vim: Recovery mode. + +-S Nvi: Set 'secure' option. +-S {script} Vim: source script after starting up. + +-s Nvi, Posix, Vim: Same as "-" (silent mode), when in Ex mode. + Elvis: Sets the 'safer' option. +-s {scriptin} Vim: Read from script file {scriptin}; only when not in Ex + mode. +-s {pattern} Vile: search for {pattern} + +-t {tag} Elvis, Nvi, Posix, Vi, Vim: Edit the file containing {tag}. +-t{tag} Vim: Idem. + +-T {term} Vim: Set terminal name to {term}. + +-u {vimrc} Vim: Read initializations from {vimrc} file. + +-U {gvimrc} Vim: Read GUI initializations from {gvimrc} file. + +-v Nvi, Posix, Vi, Vim: Begin in Normal mode (visual mode, in Vi + terms). + Vile: View mode, no changes possible. + +-V Elvis, Vim: Verbose mode. +-V{nr} Vim: Verbose mode with specified level. + +-w {size} Elvis, Posix, Nvi, Vi, Vim: Set value of 'window' to {size}. +-w{size} Nvi, Vi: Same as "-w {size}". +-w {name} Vim: Write to script file {name} (must start with non-digit). + +-W {name} Vim: Append to script file {name}. + +-x Vi, Vim: Ask for encryption key. See |encryption|. + +-X Vim: Don't connect to the X server. + +-y Vim: Start in easy mode, like |evim|. + +-Z Vim: restricted mode + +@{cmdfile} Vile: use {cmdfile} as startup file. + +============================================================================== +7. POSIX compliance *posix* *posix-compliance* + +In 2005 the POSIX test suite was run to check the compatibility of Vim. Most +of the test was executed properly. There are the few things where Vim +is not POSIX compliant, even when run in Vi compatibility mode. + +Set the $VIM_POSIX environment variable to have 'cpoptions' include the POSIX +flags when Vim starts up. This makes Vim run as POSIX as it can. That's +a bit different from being Vi compatible. + +This is where Vim does not behave as POSIX specifies and why: + + *posix-screen-size* + The $COLUMNS and $LINES environment variables are ignored by Vim if + the size can be obtained from the terminal in a more reliable way. + Add the '|' flag to 'cpoptions' to have $COLUMNS and $LINES overrule + sizes obtained in another way. + + The "{" and "}" commands don't stop at a "{" in the original Vi, but + POSIX specifies it does. Add the '{' flag to 'cpoptions' if you want + it the POSIX way. + + The "D", "o" and "O" commands accept a count. Also when repeated. + Add the '#' flag to 'cpoptions' if you want to ignore the count. + + The ":cd" command fails if the current buffer is modified when the '.' + flag is present in 'cpoptions'. + + There is no ATTENTION message, the "A" flag is added to 'shortmess'. + +These are remarks about running the POSIX test suite: +- vi test 33 sometimes fails for unknown reasons +- vi test 250 fails; behavior will be changed in a new revision + http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html + (link no longer works, perhaps it's now: + https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-review-l&id=1711) +- vi test 310 fails; exit code non-zero when any error occurred? +- ex test 24 fails because test is wrong. Changed between SUSv2 and SUSv3. +- ex tests 47, 48, 49, 72, 73 fail because .exrc file isn't read in silent + mode and $EXINIT isn't used. +- ex tests 76, 78 fail because echo is used instead of printf. (fixed) + Also: problem with \s not changed to space. +- ex test 355 fails because 'window' isn't used for "30z". +- ex test 368 fails because shell command isn't echoed in silent mode. +- ex test 394 fails because "=" command output isn't visible in silent mode. +- ex test 411 fails because test file is wrong, contains stray ':'. +- ex test 475 and 476 fail because reprint output isn't visible in silent mode. +- ex test 480 and 481 fail because the tags file has spaces instead of a tab. +- ex test 502 fails because .exrc isn't read in silent mode. +- ex test 509 fails because .exrc isn't read in silent mode. and exit code is + 1 instead of 2. +- ex test 534 fails because .exrc isn't read in silent mode. + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/vim-de.1 b/share/vim/vim74/doc/vim-de.1 new file mode 100644 index 00000000..0ba4938f --- /dev/null +++ b/share/vim/vim74/doc/vim-de.1 @@ -0,0 +1,478 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.\" Translated by bw1 (2008) and Florian Rehnisch <fm-r@gmx.de> (2012) +.\" Kudos to the folks on vim-dev and debian-l10n-german +.TH VIM 1 "2006 Apr 11" +.SH BEZEICHNUNG +vim \- Vi IMproved, ein Text\-Editor für Programmierer +.SH ÜBERSICHT +.br +\fBvim\fP [Optionen] [Datei ...] +.br +\fBvim\fP [Optionen] \- +.br +\fBvim\fP [Optionen] \-t Tag +.br +\fBvim\fP [Optionen] \-q [Fehlerdatei] +.PP +.br +\fBex\fP +.br +\fBview\fP +.br +\fBgvim\fP \fBgview\fP \fBevim\fP \fBeview\fP +.br +\fBrvim\fP \fBrview\fP \fBrgvim\fP \fBrgview\fP +.SH BESCHREIBUNG +\fBVim\fP ist ein Text\-Editor, der aufwärtskompatibel zu Vi ist. Er kann +verwendet werden, um alle Arten von Klartext zu bearbeiten. Er ist besonders +nützlich, um Programme zu bearbeiten. +.PP +Vim hat einige Erweiterungen gegenüber Vi, z.B.: Rückgängigmachen in +mehreren Schritten, mehrere Fenster und Puffer, Syntax\-Hervorhebung, +Bearbeiten der Befehlszeile, Dateinamenergänzung, eingebaute Hilfe, visuelle +Auswahl, usw. ... Siehe »:help vi_diff.txt« für eine Übersicht der +Unterschiede zwischen \fBVim\fP und Vi. +.PP +Im laufenden \fBVim\fP kann mit dem Befehl »:help« viel Hilfe durch das +eingebaute Hilfesystem erlangt werden. Siehe den Abschnitt EINGEBAUTE HILFE +weiter unten. +.PP +Meistens wird \fBVim\fP zum Editieren einer einzigen Datei mit dem folgende +Befehl gestartet: +.PP + vim Datei +.PP +Allgemeiner betrachtet, wird \fBVim\fP folgendermaßen gestartet: +.PP + vim [Optionen] [Dateiliste] +.PP +Bei einer fehlenden Dateiliste startet der Editor mit einem leeren +Puffer. Andernfalls werden nach den folgenden vier Möglichkeiten eine oder +mehrere Dateien bearbeitet: +.TP 12 +Datei ... +Eine Liste von Dateinamen. Die erste Datei wird in den Puffer geladen und +zur aktuellen. Der Cursor wird auf der ersten Zeile des Puffers +platziert. Zu den anderen Dateien kann mit dem Befehl »:next« gelangt +werden. Falls einer der Dateinamen mit einem Bindestrich beginnt, stellen +Sie der Dateiliste »\-\-« voran. +.TP +\- +Die zu bearbeitende Datei wird von der Standardeingabe gelesen. Befehle +werden von der Standardfehlerausgabe gelesen, die ein Text\-Terminal sein +sollte. +.TP +\-t {Tag} +Die zu editierende Datei und die anfängliche Cursor\-Position hängen von +einem »Tag« ab, einer Art Sprungmarke. {Tag} wird in der Tag\-Datei +nachgeschlagen, die zugehörige Datei wird zur aktuellen und der zugehörige +Befehl wird ausgeführt. Dies wird meistens für Programme in der Sprache »C« +benutzt, wobei {Tag} ein Funktionsname sein könnte. Die Wirkung dieses +Befehls ist, dass die Datei, die die Funktion enthält, als aktuelle im +Editor geöffnet und angezeigt wird und der Cursor auf dem Beginn der +Funktion positioniert wird. Siehe »:help tag\-commands«. +.TP +\-q [Fehlerdatei] +Startet im QuickFix\-Modus. Die Datei [Fehlerdatei] wird gelesen und der +erste Fehler wird angezeigt. Falls [Fehlerdatei] ausgelassen wird, wird der +Dateiname aus der Option 'errorfile' verwendet (bei AmigaOS ist dies +vorgabemäßig »AztecC.Err«, sowie "errors.err« bei anderen). Weitere Fehler +können mit dem »:cn«\-Befehl angesprungen werden. Siehe ":help quickfix«. +.PP +\fBVim\fP reagiert unterschiedlich auf den Namen, der verwendet wird, um Vim zu +starten (die ausführbare Datei kann dieselbe sein). +.TP 10 +vim +der »normale« Weg, alles ist standardmäßig +.TP +ex +Startet im Ex\-Modus. Mit dem Befehl »:vi« gelangt man in den normalen +Modus. Funktioniert auch mit dem Argument »\-e«. +.TP +view +Startet im Nur\-Lesen\-Modus. Die Datei wird vor dem Überschreiben +geschützt. Dasselbe wird mit dem Parameter »\-R« erreicht. +.TP +gvim gview +Die grafische Version: Öffnet ein neues Fenster. Dasselbe wird mit dem +Parameter »\-g« erreicht. +.TP +evim eview +Die grafische Version im einfachen Modus: Öffnet ein neues Fenster. Dasselbe +wird mit dem Parameter »\-y« erreicht. +.TP +rvim rview rgvim rgview +Wie die obigen, aber mit Beschränkungen: Es ist nicht möglich, Shell\-Befehle +aufzurufen oder mit Unterbrechung in eine Shell zurückzuspringen. Dasselbe +wird mit dem Parameter »\-Z« erreicht. +.SH OPTIONEN +Die Optionen können in beliebiger Reihenfolge vor oder nach den Dateinamen +angegeben werden. Optionen ohne Parameter können hinter einem einzigen +Bindestrich gruppiert werden. +.TP 12 ++[Nummer] +In der ersten Datei wird der Cursor auf die Zeile [Nummer] gesetzt. Falls +[Nummer] nicht angegeben wird, wird der Cursor in die letzte Zeile der Datei +gesetzt. +.TP ++/{Suchmuster} +In der ersten Datei wird der Cursor auf das erste Auftreten von {Suchmuster} +gesetzt. Siehe »:help search\-pattern«. +.TP ++{Befehl} +.TP +\-c {Befehl} +{Befehl} wird nach dem Lesen der ersten Datei ausgeführt. Als {Befehl} wird +ein Ex\-Befehl erwartet. Sind in {Befehl} Leerzeichen vorhanden, muss alles +in Anführungszeichen gesetzt werden (hängt von der verwendeten Shell +ab). Beispiel: vim "+set si" main.c +.br +Anmerkung: Sie können bis zu 10 »+«\- oder "\-c«\-Befehle verwenden. +.TP +\-S {Datei} +{Datei} wird nach dem Lesen der ersten Datei ausgeführt. Dies entspricht »\-c +"source {Datei}"«. {Datei} darf nicht mit einem Bindestrich (\-) +anfangen. Wenn kein Dateiname angegeben wird, wird »Session.vim« verwendet +(Funktioniert nur, wenn »\-S« als letzter Parameter steht). +.TP +\-\-cmd {Befehl} +Wie »\-c«, aber dieser Befehl wird vor allen VimRC\-Dateien ausgeführt. Sie +können unabhängig von den »\-c«\-Befehlen bis zu 10 dieser Befehle verwenden. +.TP +\-A +Falls \fBVim\fP mit Unterstützung für das Schreiben von rechts nach links und +arabischer Tastaturbelegung compiliert wurde (ARABIC), startet dieser +Parameter den Modus fürs Arabische (:set arabic). Anderenfalls beendet sich +\fBVim\fP mit einer Fehlermeldung. +.TP +b +Binärer Modus: Es werden einige Variablen gesetzt, sodass es möglich ist, +eine binäre oder ausführbare Datei zu bearbeiten. +.TP +\-C +Kompatibel: Setzt die Option 'compatible'. Das macht \fBVim\fP im Verhalten +sehr ähnlich zu Vi, selbst wenn eine VimRC\-Datei existiert. +.TP +\-d +Startet im diff\-Modus. Es sollten zwei, drei oder vier Dateinamen als +Parameter übergeben werden. \fBVim\fP öffnet sie alle und zeigt die +Unterschiede an. Arbeitet wie vimdiff(1). +.TP +\-d {Gerät} +Öffnet das {Gerät}, um es als Terminal zu nutzen. Nur für AmigaOS. Beispiel: +"\-d con:20/30/600/150". +.TP +D +Debug\-Modus: \fBVim\fP geht in den Debug\-Modus, wenn der erste Befehl in einem +Skript ausgeführt wird. +.TP +\-e +Startet \fBVim\fP im Ex\-Modus, als würde als ausführbare Datei »ex« aufgerufen. +.TP +\-E +Startet \fBVim\fP im erweiterten Ex\-Modus, als würde die ausführbare Datei als +»exim« aufgerufen. +.TP +\-f +Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und +löst sich nicht von der Shell, in der er aufgerufen wurde. Bei AmigaOS wird +kein neues Fenster geöffnet. Dieser Parameter wird benutzt, damit das +aufrufende Programm auf das Beenden des Bearbeitungssitzung wartet (z.B.: +mail). Bei AmigaOS funktionieren die Befehle »:sh« und ":!« nicht. +.TP +\-\-nofork +Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und +löst sich nicht von der Shell, in der er aufgerufen wurde. +.TP +\-F +Wenn \fBVim\fP mit FKMAP\-Unterstützung für das Schreiben von rechts nach links +und Farsi\-Tastatur\-Belegung kompiliert wurde, startet Vim im Farsi\-Modus, +d.h. die Optionen 'fkmap' und 'rightleft' werden gesetzt. Andernfalls bricht +\fBVim\fP mit einer Fehlermeldung ab. +.TP +\-g +Falls \fBVim\fP mit GUI\-Unterstützung kompiliert wurde, wird die GUI +aktiviert. Falls keine GUI\-Unterstützung einkompiliert wurde, wird mit einer +Fehlermeldung abgebrochen. +.TP +\-h +Gibt eine kleine Hilfe für die Befehlszeilenparameter aus. Danach beendet +sich \fBVim.\fP +.TP +\-H +Hebräisch\-Modus, falls \fBVim\fP mit RIGHTLEFT\-Unterstützung für das Schreiben +von rechts nach links und hebräischer Tastaturbelegung kompiliert wurde, +werden die Optionen 'hkmap' und 'rightleft' gesetzt. Andernfalls beendet +sich \fBVim\fP mit einer Fehlermeldung. +.TP +\-i {VimInfo} +Wenn eine VimInfo\-Datei verwendet wird: Verwendet statt »~/.viminfo« die +angegebene Datei. Es ist auch möglich die Verwendung einer VimInfo\-Datei +durch Angabe des Dateinamen »NONE« zu verhindern, +.TP +\-L +dasselbe wie »\-r« +.TP +\-l +Lisp\-Modus. Aktiviert die Optionen 'lisp' und 'showmatch'. +.TP +\-m +Deaktiviert das Verändern von Dateien, indem die Option 'write' gelöscht +wird. Der Puffer kann verändert werden, nur das Schreiben einer Datei ist +nicht möglich. +.TP +\-M +Keine Veränderungen erlaubt: Die Optionen 'modifiable' und 'write' werden +gelöscht, so dass Änderungen nicht erlaubt sind und Dateien nicht +geschrieben werden können. Man beachte, dass diese Optionen ('modifiable', +\&'write') dennnoch nachträglich zum Erlauben von Änderungen gesetzt werden +können. +.TP +\-N +Nicht\-kompatibler Modus: Löscht die Option 'compatible'. Dies veranlasst +\fBVim\fP, sich ein wenig besser, aber weniger Vi\-kompatibel zu verhalten, +selbst wenn es keine VimRC\-Datei gibt. +.TP +\-n +Verwendet keine Auslagerungsdatei: Eine Wiederherstellung nach einem Absturz +ist nicht möglich. Auf einem langsamen Medium (Diskette) kann diese +Einstellung nützlich sein. Kann auch mit »set uc=0« erreicht werden; kann +mit »set uc=200« aufgehoben werden. +.TP +\-nb +\fBVim\fP fungiert als Server für NetBeans. Details siehe Dokumentation. +.TP +\-o[N] +Öffnet [N] Fenster übereinander. Wenn keine Zahl angegeben wird, öffne ein +Fenster pro Datei. +.TP +\-O[N] +Öffnet [N] Fenster nebeneinander. Wenn keine Zahl angegeben wird, öffne ein +Fenster pro Datei. +.TP +\-p[N] +Öffnet [N] Reiterseiten. Wenn keine Zahl angegeben wird, öffne eine +Reiterseite pro Datei. +.TP +\-R +Nur\-Lesen\-Modus: Die Option 'readonly' wird gesetzt. Der Puffer kann noch +bearbeitet werden, aber es wird verhindert, eine Datei aus Versehen zu +überschreiben. Wenn Sie wirklich eine Datei überschreiben wollen, fügen Sie +dem Ex\-Befehl ein Ausrufezeichen hinzu (wie in »:w!«). Die Option "\-R« +bedingt die Option »\-n« (siehe oben). Die Option 'readonly' kann durch ":set +noro« gelöscht werden. Siehe »:help 'readonly'«. +.TP +\-r +Listet die Auslagerungsdateien und gibt Informationen zu ihrer +Verwendbarkeit zur Wiederherstellung. +.TP +\-r {Datei} +Wiederherstellungsmodus: Die Auslagerungsdatei wird zur Wiederherstellung +verwendet und hat denselben Dateinamen wie die Text\-Datei + ».swp«. Siehe +":help recovery«. +.TP +\-s +Der stille Modus: Nur wenn die ausführbare Datei als »ex« aufgerufen wird +oder vor »\-s« die Option "\-e« gegeben wird. +.TP +\-s {Eingabeskript} +Die Datei {Eingabeskript} wird gelesen und ausgeführt, als würden Sie die +Zeichen in ihr tippen. Dasselbe kann mit dem Befehl »:source! +{Eingabeskript}« erreicht werden. Wird das Ende der Datei vor dem Beenden +des Editors erreicht, werden weitere Zeichen von der Tastatur gelesen. +.TP +\-T {Terminal} +Setzt den Namen des benutzten Terminals. Nur erforderlich, wenn die +Automatik nicht funktioniert. Sollte ein \fBVim\fP bekanntes Terminal sein: +(builtin) oder in einer termcap\- oder terminfo\-Datei definiert. +.TP +\-u {VimRC} +Verwendet zur Initialisierung die Befehle in der Datei {VimRC}. Alle anderen +Initialisierungen werden übersprungen. Benutzen Sie dies, um eine besondere +Art von Dateien zu bearbeiten. Dies kann auch benutzt werden, um alle +Initialisierungen zu überspringen, indem der Name »NONE« angegeben wird. Für +weitere Einzelheiten siehe »:help initialisation« innerhalb von Vim. +.TP +\-U {GvimRC} +Benutzt die Befehle in der Datei {GvimRC} für die Initialisierung der +grafischen Oberfläche. Alle anderen Initialisierungen werden +übersprungen. Dies kann ebenfalls benutzt werden, um alle +GUI\-Initialisierungen zu überspringen, indem der Name »NONE« angegeben +wird. Siehe »:help gui\-init« innerhalb von Vim für weitere Einzelheiten. +.TP +\-V[N] +Ausführlich (verbose): Gibt Meldungen darüber, welche Befehlsdateien +eingelesen werden, und über das Lesen und Schreiben einer VimInfo\-Datei. Die +optionale Zahl N ist der Wert für 'verbose'. Vorgabe ist 10. +.TP +\-v +Startet \fBVim\fP im Vi\-Modus, so als würde die ausführbare Datei mit »vi« +aufgerufen. Dies wirkt sich nur aus, wenn die ausführbare Datei als »ex« +aufgerufen wird. +.TP +\-w {Ausgabeskript} +Alle Zeichen, die eingetippt werden, werden in der Datei {Ausgabeskript} +aufgezeichnet, solange bis Sie \fBVim\fP beenden. Dies ist nützlich, falls Sie +eine Skript\-Datei zum Benutzen mit »vim \-s« oder ":source!« erzeugen +wollen. Falls die Datei {Ausgabeskript} vorhanden ist, werden die Zeichen +angehängt. +.TP +\-W {Ausgabeskript} +Wie \-w, aber eine bereits vorhandene Datei wird überschrieben. +.TP +\-x +Benutzt beim Schreiben von Dateien eine Verschlüsselung. Fragt nach dem +Schlüssel. +.TP +\-X +Führt keine Verbindung zum X\-Server durch. Dadurch verkürzt sich die +Startzeit, aber der Fenstertitel und die Zwischenablage werden nicht +verwendet. +.TP +\-y +Startet \fBVim\fP im einfachen Modus, als würde die ausführbare Datei mit +»evim« oder »eview« aufgerufen. \fBVim\fP verhält sich dann wie ein Editor zum +Klicken und Tippen. +.TP +\-Z +Eingeschränkter Modus: Funktioniert, als würde der Name der ausführbaren +Datei mit »r« beginnen. +.TP +\-\- +Markiert das Ende der Optionen. Argumente, die folgen, werden als Dateinamen +behandelt. Dies kann benutzt werden, um einen Dateinamen mit »\-« am Anfang +zu verwenden. +.TP +\-\-echo\-wid +Nur GTK\-GUI: Schreibe die Fenster\-ID auf die Standardausgabe. +.TP +\-\-help +Gibt eine Hilfe\-Nachricht aus und beendet, wie »\-h«. +.TP +\-\-literal +Nimmt die Dateinamen so wie sie sind und vervollständigt sie nicht nach +Metazeichen (*,?). Dies wirkt sich nicht unter Unix aus, wo die Shell die +Metazeichen expandiert. +.TP +\-\-noplugin +Lade keine Plugins. Impliziert durch »\-u NONE«. +.TP +\-\-remote +Verbindet mit einem Vim\-Server und lässt ihn die in den restlichen +Argumenten angegeben Dateien editieren. Wenn kein Server gefunden wird, +führt dies zu einer Warnmeldung und die Dateien werden im gegenwärtigen Vim +zum Bearbeiten geöffnet. +.TP +\-\-remote\-expr {Ausdruck} +Verbindet mit einem Vim\-Server, führt {Ausdruck} aus und zeigt das Ergebnis +auf der Standardausgabe an. +.TP +\-\-remote\-send {Zeichen} +Verbindet mit einem Vim\-Server und sendet ihm {Zeichen}. +.TP +\-\-remote\-silent +Wie »\-\-remote«, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\-\-remote\-wait +Wie »\-\-remote«, aber Vim beendet sich nicht, bis die Dateien bearbeitet +wurden. +.TP +\-\-remote\-wait\-silent +Wie »\-\-remote\-wait«, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\-\-serverlist +Listet die Namen aller gefundenen Vim\-Server auf. +.TP +\-\-servername {Name} +Benutzt {Name} als Server\-Namen. Wird für den gegenwärtigen Vim benutzt, +außer es wird mit dem Argument »\-\-remote« benutzt, dann ist es der Name des +zu kontaktierenden Servers. +.TP +\-\-socketid {id} +Nur GTK\-GUI: Benutzt den GtkPlug\-Mechanismus, um GVim in einem anderen +Fenster laufen zu lassen. +.TP +\-\-version +Versionsinformation anzeigen und beenden +.SH "EINGEBAUTE HILFE" +Tippen Sie in \fBVim\fP »:help«, um zu beginnen. Geben Sie ":help begriff« ein, +um Hilfe über ein bestimmtes Thema zu bekommen. Zum Beispiel »:help ZZ« für +Hilfe über den Befehl »ZZ«. Benutzen Sie <Tab> und CTRL\-D, um +Begriffe zu vervollständigen (»:help cmdline\-completion«). Tags sind +vorhanden, um von einem Ort zum anderen zu springen (eine Art +Hypertext\-Verknüpfungen, siehe »:help«). Auf diese Weise können alle +Dokumentations\-Dateien aufgerufen werden, zum Beispiel »:help syntax.txt«. +.SH DATEIEN +.TP 15 +/usr/local/lib/vim/doc/*.txt +Dokumentations\-Dateien für \fBVim\fP. Verwenden Sie »:help doc\-file\-list«, um +die gesamte Liste zu bekommen. +.TP +/usr/local/lib/vim/doc/tags +Die »Tag«\-Datei, die verwendet wird, um Informationen in der Dokumentation +zu finden. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Die systemweite Einrichtung der Syntaxhervorhebung. +.TP +/usr/local/lib/vim/syntax/*.vim +Syntaxdateien für die verschiedenen Sprachen. +.TP +/usr/local/lib/vim/vimrc +Systemweite Einstellungsdatei für \fBVim\fP +.TP +~/.vimrc +Persönliche Einstellungsdatei für \fBVim\fP +.TP +/usr/local/lib/vim/gvimrc +Systemweite Einstellungsdatei für GVim +.TP +~/.gvimrc +Persönliche Einstellungsdatei für GVim +.TP +/usr/local/lib/vim/optwin.vim +Das Script, das von dem Befehl »:options« verwendet wird, eine schöne +Möglichkeit, um Optionen zu betrachten und zu setzen. +.TP +/usr/local/lib/vim/menu.vim +Systemweite Einstellungsdatei für das Menü von GVim +.TP +/usr/local/lib/vim/bugreport.vim +Das Script zum Generieren eines Fehlerberichts. Siehe »:help bugs«. +.TP +/usr/local/lib/vim/filetype.vim +Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres +Dateinamens. Siehe »:help 'filetype'«. +.TP +/usr/local/lib/vim/scripts.vim +Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres +Inhaltes. Siehe »:help 'filetype'«. +.TP +/usr/local/lib/vim/print/*.ps +Diese Dateien werden zum Drucken von PostScript verwendet. +.PP +Für die neuesten Informationen lesen Sie die Vim\-Homepage: +.br +<URL:http://www.vim.org/> +.SH "SIEHE AUCH" +vimtutor(1) +.SH AUTOR +\fBVim\fP wurde größtenteils von Bram Moolenaar erstellt, mit viel Hilfe von +anderen Leuten. Siehe »:help credits« in \fBVim.\fP +.br +\fBVim\fP basiert auf Stevie, der von Tim Thompson, Tony Andrews und +G.R. (Fred) Walter geschrieben wurde. Es ist jedoch kaum etwas vom +ursprünglichen Code übrig geblieben. +.SH FEHLER +Die sind möglich. Siehe »:help todo« für eine Liste bekannter Probleme. +.PP +Beachten Sie, dass gewisse Dinge, die manche Leute als Fehler betrachten +mögen, in Wirklichkeit durch zu getreue Nachbildung des Vi\-Verhaltens +verursacht werden. Und falls Sie denken, dass andere Dinge Fehler sind, +»weil Vi es anders tut«, sollten Sie einen genaueren Blick auf die Datei +vi_diff.txt werfen (oder in Vim »:help vi_diff.txt« tippen). Sehen Sie sich +auch die Optionen 'compatible' und 'cpoptions' an. diff --git a/share/vim/vim74/doc/vim-de.UTF-8.1 b/share/vim/vim74/doc/vim-de.UTF-8.1 new file mode 100644 index 00000000..f79e622a --- /dev/null +++ b/share/vim/vim74/doc/vim-de.UTF-8.1 @@ -0,0 +1,478 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.\" Translated by bw1 (2008) and Florian Rehnisch <fm-r@gmx.de> (2012) +.\" Kudos to the folks on vim-dev and debian-l10n-german +.TH VIM 1 "2006 Apr 11" +.SH BEZEICHNUNG +vim \- Vi IMproved, ein Text\-Editor für Programmierer +.SH ÜBERSICHT +.br +\fBvim\fP [Optionen] [Datei …] +.br +\fBvim\fP [Optionen] \- +.br +\fBvim\fP [Optionen] \-t Tag +.br +\fBvim\fP [Optionen] \-q [Fehlerdatei] +.PP +.br +\fBex\fP +.br +\fBview\fP +.br +\fBgvim\fP \fBgview\fP \fBevim\fP \fBeview\fP +.br +\fBrvim\fP \fBrview\fP \fBrgvim\fP \fBrgview\fP +.SH BESCHREIBUNG +\fBVim\fP ist ein Text\-Editor, der aufwärtskompatibel zu Vi ist. Er kann +verwendet werden, um alle Arten von Klartext zu bearbeiten. Er ist besonders +nützlich, um Programme zu bearbeiten. +.PP +Vim hat einige Erweiterungen gegenüber Vi, z.B.: Rückgängigmachen in +mehreren Schritten, mehrere Fenster und Puffer, Syntax\-Hervorhebung, +Bearbeiten der Befehlszeile, Dateinamenergänzung, eingebaute Hilfe, visuelle +Auswahl, usw. … Siehe »:help vi_diff.txt« für eine Übersicht der +Unterschiede zwischen \fBVim\fP und Vi. +.PP +Im laufenden \fBVim\fP kann mit dem Befehl »:help« viel Hilfe durch das +eingebaute Hilfesystem erlangt werden. Siehe den Abschnitt EINGEBAUTE HILFE +weiter unten. +.PP +Meistens wird \fBVim\fP zum Editieren einer einzigen Datei mit dem folgende +Befehl gestartet: +.PP + vim Datei +.PP +Allgemeiner betrachtet, wird \fBVim\fP folgendermaßen gestartet: +.PP + vim [Optionen] [Dateiliste] +.PP +Bei einer fehlenden Dateiliste startet der Editor mit einem leeren +Puffer. Andernfalls werden nach den folgenden vier Möglichkeiten eine oder +mehrere Dateien bearbeitet: +.TP 12 +Datei … +Eine Liste von Dateinamen. Die erste Datei wird in den Puffer geladen und +zur aktuellen. Der Cursor wird auf der ersten Zeile des Puffers +platziert. Zu den anderen Dateien kann mit dem Befehl »:next« gelangt +werden. Falls einer der Dateinamen mit einem Bindestrich beginnt, stellen +Sie der Dateiliste »\-\-« voran. +.TP +\- +Die zu bearbeitende Datei wird von der Standardeingabe gelesen. Befehle +werden von der Standardfehlerausgabe gelesen, die ein Text\-Terminal sein +sollte. +.TP +\-t {Tag} +Die zu editierende Datei und die anfängliche Cursor\-Position hängen von +einem »Tag« ab, einer Art Sprungmarke. {Tag} wird in der Tag\-Datei +nachgeschlagen, die zugehörige Datei wird zur aktuellen und der zugehörige +Befehl wird ausgeführt. Dies wird meistens für Programme in der Sprache »C« +benutzt, wobei {Tag} ein Funktionsname sein könnte. Die Wirkung dieses +Befehls ist, dass die Datei, die die Funktion enthält, als aktuelle im +Editor geöffnet und angezeigt wird und der Cursor auf dem Beginn der +Funktion positioniert wird. Siehe »:help tag\-commands«. +.TP +\-q [Fehlerdatei] +Startet im QuickFix\-Modus. Die Datei [Fehlerdatei] wird gelesen und der +erste Fehler wird angezeigt. Falls [Fehlerdatei] ausgelassen wird, wird der +Dateiname aus der Option 'errorfile' verwendet (bei AmigaOS ist dies +vorgabemäßig »AztecC.Err«, sowie „errors.err« bei anderen). Weitere Fehler +können mit dem »:cn«\-Befehl angesprungen werden. Siehe „:help quickfix«. +.PP +\fBVim\fP reagiert unterschiedlich auf den Namen, der verwendet wird, um Vim zu +starten (die ausführbare Datei kann dieselbe sein). +.TP 10 +vim +der »normale« Weg, alles ist standardmäßig +.TP +ex +Startet im Ex\-Modus. Mit dem Befehl »:vi« gelangt man in den normalen +Modus. Funktioniert auch mit dem Argument »\-e«. +.TP +view +Startet im Nur\-Lesen\-Modus. Die Datei wird vor dem Überschreiben +geschützt. Dasselbe wird mit dem Parameter »\-R« erreicht. +.TP +gvim gview +Die grafische Version: Öffnet ein neues Fenster. Dasselbe wird mit dem +Parameter »\-g« erreicht. +.TP +evim eview +Die grafische Version im einfachen Modus: Öffnet ein neues Fenster. Dasselbe +wird mit dem Parameter »\-y« erreicht. +.TP +rvim rview rgvim rgview +Wie die obigen, aber mit Beschränkungen: Es ist nicht möglich, Shell\-Befehle +aufzurufen oder mit Unterbrechung in eine Shell zurückzuspringen. Dasselbe +wird mit dem Parameter »\-Z« erreicht. +.SH OPTIONEN +Die Optionen können in beliebiger Reihenfolge vor oder nach den Dateinamen +angegeben werden. Optionen ohne Parameter können hinter einem einzigen +Bindestrich gruppiert werden. +.TP 12 ++[Nummer] +In der ersten Datei wird der Cursor auf die Zeile [Nummer] gesetzt. Falls +[Nummer] nicht angegeben wird, wird der Cursor in die letzte Zeile der Datei +gesetzt. +.TP ++/{Suchmuster} +In der ersten Datei wird der Cursor auf das erste Auftreten von {Suchmuster} +gesetzt. Siehe »:help search\-pattern«. +.TP ++{Befehl} +.TP +\-c {Befehl} +{Befehl} wird nach dem Lesen der ersten Datei ausgeführt. Als {Befehl} wird +ein Ex\-Befehl erwartet. Sind in {Befehl} Leerzeichen vorhanden, muss alles +in Anführungszeichen gesetzt werden (hängt von der verwendeten Shell +ab). Beispiel: vim "+set si" main.c +.br +Anmerkung: Sie können bis zu 10 »+«\- oder „\-c«\-Befehle verwenden. +.TP +\-S {Datei} +{Datei} wird nach dem Lesen der ersten Datei ausgeführt. Dies entspricht »\-c +"source {Datei}"«. {Datei} darf nicht mit einem Bindestrich (\-) +anfangen. Wenn kein Dateiname angegeben wird, wird »Session.vim« verwendet +(Funktioniert nur, wenn »\-S« als letzter Parameter steht). +.TP +\-\-cmd {Befehl} +Wie »\-c«, aber dieser Befehl wird vor allen VimRC\-Dateien ausgeführt. Sie +können unabhängig von den »\-c«\-Befehlen bis zu 10 dieser Befehle verwenden. +.TP +\-A +Falls \fBVim\fP mit Unterstützung für das Schreiben von rechts nach links und +arabischer Tastaturbelegung compiliert wurde (ARABIC), startet dieser +Parameter den Modus fürs Arabische (:set arabic). Anderenfalls beendet sich +\fBVim\fP mit einer Fehlermeldung. +.TP +b +Binärer Modus: Es werden einige Variablen gesetzt, sodass es möglich ist, +eine binäre oder ausführbare Datei zu bearbeiten. +.TP +\-C +Kompatibel: Setzt die Option 'compatible'. Das macht \fBVim\fP im Verhalten +sehr ähnlich zu Vi, selbst wenn eine VimRC\-Datei existiert. +.TP +\-d +Startet im diff\-Modus. Es sollten zwei, drei oder vier Dateinamen als +Parameter übergeben werden. \fBVim\fP öffnet sie alle und zeigt die +Unterschiede an. Arbeitet wie vimdiff(1). +.TP +\-d {Gerät} +Öffnet das {Gerät}, um es als Terminal zu nutzen. Nur für AmigaOS. Beispiel: +"\-d con:20/30/600/150". +.TP +D +Debug\-Modus: \fBVim\fP geht in den Debug\-Modus, wenn der erste Befehl in einem +Skript ausgeführt wird. +.TP +\-e +Startet \fBVim\fP im Ex\-Modus, als würde als ausführbare Datei »ex« aufgerufen. +.TP +\-E +Startet \fBVim\fP im erweiterten Ex\-Modus, als würde die ausführbare Datei als +»exim« aufgerufen. +.TP +\-f +Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und +löst sich nicht von der Shell, in der er aufgerufen wurde. Bei AmigaOS wird +kein neues Fenster geöffnet. Dieser Parameter wird benutzt, damit das +aufrufende Programm auf das Beenden des Bearbeitungssitzung wartet (z.B.: +mail). Bei AmigaOS funktionieren die Befehle »:sh« und „:!« nicht. +.TP +\-\-nofork +Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und +löst sich nicht von der Shell, in der er aufgerufen wurde. +.TP +\-F +Wenn \fBVim\fP mit FKMAP\-Unterstützung für das Schreiben von rechts nach links +und Farsi\-Tastatur\-Belegung kompiliert wurde, startet Vim im Farsi\-Modus, +d.h. die Optionen 'fkmap' und 'rightleft' werden gesetzt. Andernfalls bricht +\fBVim\fP mit einer Fehlermeldung ab. +.TP +\-g +Falls \fBVim\fP mit GUI\-Unterstützung kompiliert wurde, wird die GUI +aktiviert. Falls keine GUI\-Unterstützung einkompiliert wurde, wird mit einer +Fehlermeldung abgebrochen. +.TP +\-h +Gibt eine kleine Hilfe für die Befehlszeilenparameter aus. Danach beendet +sich \fBVim.\fP +.TP +\-H +Hebräisch\-Modus, falls \fBVim\fP mit RIGHTLEFT\-Unterstützung für das Schreiben +von rechts nach links und hebräischer Tastaturbelegung kompiliert wurde, +werden die Optionen 'hkmap' und 'rightleft' gesetzt. Andernfalls beendet +sich \fBVim\fP mit einer Fehlermeldung. +.TP +\-i {VimInfo} +Wenn eine VimInfo\-Datei verwendet wird: Verwendet statt »~/.viminfo« die +angegebene Datei. Es ist auch möglich die Verwendung einer VimInfo\-Datei +durch Angabe des Dateinamen »NONE« zu verhindern, +.TP +\-L +dasselbe wie »\-r« +.TP +\-l +Lisp\-Modus. Aktiviert die Optionen 'lisp' und 'showmatch'. +.TP +\-m +Deaktiviert das Verändern von Dateien, indem die Option 'write' gelöscht +wird. Der Puffer kann verändert werden, nur das Schreiben einer Datei ist +nicht möglich. +.TP +\-M +Keine Veränderungen erlaubt: Die Optionen 'modifiable' und 'write' werden +gelöscht, so dass Änderungen nicht erlaubt sind und Dateien nicht +geschrieben werden können. Man beachte, dass diese Optionen ('modifiable', +\&'write') dennnoch nachträglich zum Erlauben von Änderungen gesetzt werden +können. +.TP +\-N +Nicht\-kompatibler Modus: Löscht die Option 'compatible'. Dies veranlasst +\fBVim\fP, sich ein wenig besser, aber weniger Vi\-kompatibel zu verhalten, +selbst wenn es keine VimRC\-Datei gibt. +.TP +\-n +Verwendet keine Auslagerungsdatei: Eine Wiederherstellung nach einem Absturz +ist nicht möglich. Auf einem langsamen Medium (Diskette) kann diese +Einstellung nützlich sein. Kann auch mit »set uc=0« erreicht werden; kann +mit »set uc=200« aufgehoben werden. +.TP +\-nb +\fBVim\fP fungiert als Server für NetBeans. Details siehe Dokumentation. +.TP +\-o[N] +Öffnet [N] Fenster übereinander. Wenn keine Zahl angegeben wird, öffne ein +Fenster pro Datei. +.TP +\-O[N] +Öffnet [N] Fenster nebeneinander. Wenn keine Zahl angegeben wird, öffne ein +Fenster pro Datei. +.TP +\-p[N] +Öffnet [N] Reiterseiten. Wenn keine Zahl angegeben wird, öffne eine +Reiterseite pro Datei. +.TP +\-R +Nur\-Lesen\-Modus: Die Option 'readonly' wird gesetzt. Der Puffer kann noch +bearbeitet werden, aber es wird verhindert, eine Datei aus Versehen zu +überschreiben. Wenn Sie wirklich eine Datei überschreiben wollen, fügen Sie +dem Ex\-Befehl ein Ausrufezeichen hinzu (wie in »:w!«). Die Option „\-R« +bedingt die Option »\-n« (siehe oben). Die Option 'readonly' kann durch „:set +noro« gelöscht werden. Siehe »:help 'readonly'«. +.TP +\-r +Listet die Auslagerungsdateien und gibt Informationen zu ihrer +Verwendbarkeit zur Wiederherstellung. +.TP +\-r {Datei} +Wiederherstellungsmodus: Die Auslagerungsdatei wird zur Wiederherstellung +verwendet und hat denselben Dateinamen wie die Text\-Datei + ».swp«. Siehe +„:help recovery«. +.TP +\-s +Der stille Modus: Nur wenn die ausführbare Datei als »ex« aufgerufen wird +oder vor »\-s« die Option „\-e« gegeben wird. +.TP +\-s {Eingabeskript} +Die Datei {Eingabeskript} wird gelesen und ausgeführt, als würden Sie die +Zeichen in ihr tippen. Dasselbe kann mit dem Befehl »:source! +{Eingabeskript}« erreicht werden. Wird das Ende der Datei vor dem Beenden +des Editors erreicht, werden weitere Zeichen von der Tastatur gelesen. +.TP +\-T {Terminal} +Setzt den Namen des benutzten Terminals. Nur erforderlich, wenn die +Automatik nicht funktioniert. Sollte ein \fBVim\fP bekanntes Terminal sein: +(builtin) oder in einer termcap\- oder terminfo\-Datei definiert. +.TP +\-u {VimRC} +Verwendet zur Initialisierung die Befehle in der Datei {VimRC}. Alle anderen +Initialisierungen werden übersprungen. Benutzen Sie dies, um eine besondere +Art von Dateien zu bearbeiten. Dies kann auch benutzt werden, um alle +Initialisierungen zu überspringen, indem der Name »NONE« angegeben wird. Für +weitere Einzelheiten siehe »:help initialisation« innerhalb von Vim. +.TP +\-U {GvimRC} +Benutzt die Befehle in der Datei {GvimRC} für die Initialisierung der +grafischen Oberfläche. Alle anderen Initialisierungen werden +übersprungen. Dies kann ebenfalls benutzt werden, um alle +GUI\-Initialisierungen zu überspringen, indem der Name »NONE« angegeben +wird. Siehe »:help gui\-init« innerhalb von Vim für weitere Einzelheiten. +.TP +\-V[N] +Ausführlich (verbose): Gibt Meldungen darüber, welche Befehlsdateien +eingelesen werden, und über das Lesen und Schreiben einer VimInfo\-Datei. Die +optionale Zahl N ist der Wert für 'verbose'. Vorgabe ist 10. +.TP +\-v +Startet \fBVim\fP im Vi\-Modus, so als würde die ausführbare Datei mit »vi« +aufgerufen. Dies wirkt sich nur aus, wenn die ausführbare Datei als »ex« +aufgerufen wird. +.TP +\-w {Ausgabeskript} +Alle Zeichen, die eingetippt werden, werden in der Datei {Ausgabeskript} +aufgezeichnet, solange bis Sie \fBVim\fP beenden. Dies ist nützlich, falls Sie +eine Skript\-Datei zum Benutzen mit »vim \-s« oder „:source!« erzeugen +wollen. Falls die Datei {Ausgabeskript} vorhanden ist, werden die Zeichen +angehängt. +.TP +\-W {Ausgabeskript} +Wie \-w, aber eine bereits vorhandene Datei wird überschrieben. +.TP +\-x +Benutzt beim Schreiben von Dateien eine Verschlüsselung. Fragt nach dem +Schlüssel. +.TP +\-X +Führt keine Verbindung zum X\-Server durch. Dadurch verkürzt sich die +Startzeit, aber der Fenstertitel und die Zwischenablage werden nicht +verwendet. +.TP +\-y +Startet \fBVim\fP im einfachen Modus, als würde die ausführbare Datei mit +»evim« oder »eview« aufgerufen. \fBVim\fP verhält sich dann wie ein Editor zum +Klicken und Tippen. +.TP +\-Z +Eingeschränkter Modus: Funktioniert, als würde der Name der ausführbaren +Datei mit »r« beginnen. +.TP +\-\- +Markiert das Ende der Optionen. Argumente, die folgen, werden als Dateinamen +behandelt. Dies kann benutzt werden, um einen Dateinamen mit »\-« am Anfang +zu verwenden. +.TP +\-\-echo\-wid +Nur GTK\-GUI: Schreibe die Fenster\-ID auf die Standardausgabe. +.TP +\-\-help +Gibt eine Hilfe\-Nachricht aus und beendet, wie »\-h«. +.TP +\-\-literal +Nimmt die Dateinamen so wie sie sind und vervollständigt sie nicht nach +Metazeichen (*,?). Dies wirkt sich nicht unter Unix aus, wo die Shell die +Metazeichen expandiert. +.TP +\-\-noplugin +Lade keine Plugins. Impliziert durch »\-u NONE«. +.TP +\-\-remote +Verbindet mit einem Vim\-Server und lässt ihn die in den restlichen +Argumenten angegeben Dateien editieren. Wenn kein Server gefunden wird, +führt dies zu einer Warnmeldung und die Dateien werden im gegenwärtigen Vim +zum Bearbeiten geöffnet. +.TP +\-\-remote\-expr {Ausdruck} +Verbindet mit einem Vim\-Server, führt {Ausdruck} aus und zeigt das Ergebnis +auf der Standardausgabe an. +.TP +\-\-remote\-send {Zeichen} +Verbindet mit einem Vim\-Server und sendet ihm {Zeichen}. +.TP +\-\-remote\-silent +Wie »\-\-remote«, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\-\-remote\-wait +Wie »\-\-remote«, aber Vim beendet sich nicht, bis die Dateien bearbeitet +wurden. +.TP +\-\-remote\-wait\-silent +Wie »\-\-remote\-wait«, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\-\-serverlist +Listet die Namen aller gefundenen Vim\-Server auf. +.TP +\-\-servername {Name} +Benutzt {Name} als Server\-Namen. Wird für den gegenwärtigen Vim benutzt, +außer es wird mit dem Argument »\-\-remote« benutzt, dann ist es der Name des +zu kontaktierenden Servers. +.TP +\-\-socketid {id} +Nur GTK\-GUI: Benutzt den GtkPlug\-Mechanismus, um GVim in einem anderen +Fenster laufen zu lassen. +.TP +\-\-version +Versionsinformation anzeigen und beenden +.SH "EINGEBAUTE HILFE" +Tippen Sie in \fBVim\fP »:help«, um zu beginnen. Geben Sie „:help begriff« ein, +um Hilfe über ein bestimmtes Thema zu bekommen. Zum Beispiel »:help ZZ« für +Hilfe über den Befehl »ZZ«. Benutzen Sie <Tab> und CTRL\-D, um +Begriffe zu vervollständigen (»:help cmdline\-completion«). Tags sind +vorhanden, um von einem Ort zum anderen zu springen (eine Art +Hypertext\-Verknüpfungen, siehe »:help«). Auf diese Weise können alle +Dokumentations\-Dateien aufgerufen werden, zum Beispiel »:help syntax.txt«. +.SH DATEIEN +.TP 15 +/usr/local/lib/vim/doc/*.txt +Dokumentations\-Dateien für \fBVim\fP. Verwenden Sie »:help doc\-file\-list«, um +die gesamte Liste zu bekommen. +.TP +/usr/local/lib/vim/doc/tags +Die »Tag«\-Datei, die verwendet wird, um Informationen in der Dokumentation +zu finden. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Die systemweite Einrichtung der Syntaxhervorhebung. +.TP +/usr/local/lib/vim/syntax/*.vim +Syntaxdateien für die verschiedenen Sprachen. +.TP +/usr/local/lib/vim/vimrc +Systemweite Einstellungsdatei für \fBVim\fP +.TP +~/.vimrc +Persönliche Einstellungsdatei für \fBVim\fP +.TP +/usr/local/lib/vim/gvimrc +Systemweite Einstellungsdatei für GVim +.TP +~/.gvimrc +Persönliche Einstellungsdatei für GVim +.TP +/usr/local/lib/vim/optwin.vim +Das Script, das von dem Befehl »:options« verwendet wird, eine schöne +Möglichkeit, um Optionen zu betrachten und zu setzen. +.TP +/usr/local/lib/vim/menu.vim +Systemweite Einstellungsdatei für das Menü von GVim +.TP +/usr/local/lib/vim/bugreport.vim +Das Script zum Generieren eines Fehlerberichts. Siehe »:help bugs«. +.TP +/usr/local/lib/vim/filetype.vim +Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres +Dateinamens. Siehe »:help 'filetype'«. +.TP +/usr/local/lib/vim/scripts.vim +Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres +Inhaltes. Siehe »:help 'filetype'«. +.TP +/usr/local/lib/vim/print/*.ps +Diese Dateien werden zum Drucken von PostScript verwendet. +.PP +Für die neuesten Informationen lesen Sie die Vim\-Homepage: +.br +<URL:http://www.vim.org/> +.SH "SIEHE AUCH" +vimtutor(1) +.SH AUTOR +\fBVim\fP wurde größtenteils von Bram Moolenaar erstellt, mit viel Hilfe von +anderen Leuten. Siehe »:help credits« in \fBVim.\fP +.br +\fBVim\fP basiert auf Stevie, der von Tim Thompson, Tony Andrews und +G.R. (Fred) Walter geschrieben wurde. Es ist jedoch kaum etwas vom +ursprünglichen Code übrig geblieben. +.SH FEHLER +Die sind möglich. Siehe »:help todo« für eine Liste bekannter Probleme. +.PP +Beachten Sie, dass gewisse Dinge, die manche Leute als Fehler betrachten +mögen, in Wirklichkeit durch zu getreue Nachbildung des Vi\-Verhaltens +verursacht werden. Und falls Sie denken, dass andere Dinge Fehler sind, +»weil Vi es anders tut«, sollten Sie einen genaueren Blick auf die Datei +vi_diff.txt werfen (oder in Vim »:help vi_diff.txt« tippen). Sehen Sie sich +auch die Optionen 'compatible' und 'cpoptions' an. diff --git a/share/vim/vim74/doc/vim-fr.1 b/share/vim/vim74/doc/vim-fr.1 new file mode 100644 index 00000000..209ab915 --- /dev/null +++ b/share/vim/vim74/doc/vim-fr.1 @@ -0,0 +1,589 @@ +.\" Traduction lundi 7 août 2000 par Richard Hitier +.\" (richard.hitier@dial.oleane.com) +.\" Mise à jour de la traduction par David Blanchet +.\" (david.blanchet@free.fr) 2006-06-10 +.\" Mise à jour de la traduction par Dominique Pellé +.\" (dominique.pelle@gmail.com) 2013-05-10 +.\" +.TH VIM 1 "22 février 2002" +.SH NOM +vim \- Vi IMproved, éditeur de texte pour programmeurs +.SH SYNOPSIS +.br +.B vim +[options] [fichier ...] +.br +.B vim +[options] \- +.br +.B vim +[options] \-t marqueur +.br +.B vim +[options] \-q [fichiererreurs] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH DESCRIPTION +.B Vim +est un éditeur de texte proposant une compatibilité ascendante +avec Vi. Il permet d'éditer n'importe quel type de texte brut. +Il est particulièrement adapté pour l'édition des programmes. +.PP +Il comporte de nombreuses améliorations par rapport à Vi : annulation sur +plusieurs niveaux, fenêtres et tampons multiples, coloration syntaxique, +édition en ligne de commande, complètement des noms de fichiers, aide en +ligne, sélection visuelle, etc. +Voir ":help vi_diff.txt" pour un résumé des différences entre +.B Vim +et Vi. +.PP +Pendant l'exécution de +.B Vim +\, une aide abondante est accessible au travers du système d'aide +en ligne, grâce à la commande ":help". +Voir la section AIDE EN LIGNE plus bas. +.PP +Le plus souvent +.B Vim +est démarré pour éditer un unique fichier avec la commande +.PP + vim fichier +.PP +Plus généralement, +.B Vim +est lancé avec : +.PP + vim [options] [listefichiers] +.PP +Si la listefichiers est omise, l'éditeur démarre avec un tampon vide. +Autrement, l'une des quatre méthodes suivantes vous permettra de choisir +un ou plusieurs fichiers à éditer. +.TP 12 +fichier ... +Une liste de noms de fichiers. +Le premier sera le fichier courant et sera lu dans le tampon. +Le curseur sera placé sur la première ligne du tampon. +Vous pouvez passer aux autres fichiers avec la commande ":next". +Pour éditer un fichier débutant par un tiret, faites précéder la +liste de fichiers par "\-\-". +.TP +\- +Le fichier à éditer est lu sur l'entrée standard (stdin). Les commandes sont +lues depuis stderr, qui devrait être un terminal. +.TP +\-t {marqueur} +Le fichier à éditer et la position initiale du curseur dépendent +d'un "marqueur", qui est une sorte d'étiquette. +{marqueur} est recherché dans le fichier des marqueurs, le fichier correspondant +devient le fichier courant et la commande associée est exécutée. +Principalement utile pour les programmes en C ; dans ce cas, {marqueur} +peut être le nom d'une fonction. +Au final, le fichier contenant cette fonction devient le fichier +courant et le curseur est placé au début de la fonction. +Voir ":help tag\-commands". +.TP +\-q [fichiererreurs] +Démarre en mode Mise-au-point (QuickFix). +Le fichier [fichiererreurs] est lu et la première erreur est affichée. +Si [fichiererreurs] est omis, le nom du fichier est lu dans +l'option 'errorfile' ("AztecC.Err" par défaut sur Amiga, "errors.err" sur les +autres systèmes). +La commande ":cn" permet de sauter aux erreurs suivantes. +Voir ":help quickfix". +.PP +.B Vim +se comporte différemment selon le nom de la commande (l'exécutable peut +cependant être le même fichier). +.TP 10 +vim +La façon "normale", le comportement par défaut. +.TP +ex +Démarre en mode Ex. +La commande ":vi" permet de passer en mode Normal. +Ce mode est également accessible avec l'argument "\-e". +.TP +view +Démarre en mode Lecture-Seule. Vous êtes protégé de l'écriture accidentelle +des fichiers. Ce mode est également accessible avec l'argument "\-R". +.TP +gvim gview +La version graphique. +Ouvre une nouvelle fenêtre. +Également accessible avec l'argument "\-g". +.TP +evim eview +La version graphique en mode Débutant (easy). +Ouvre une nouvelle fenêtre. +Également accessible avec l'argument "\-y". +.TP +rvim rview rgvim rgview +Comme ci-dessus, mais avec des restrictions. Il vous sera impossible de +lancer des commandes du shell, ou de suspendre +.B Vim. +Également accessible avec l'argument "\-Z". +.SH OPTIONS +Les options peuvent être spécifiées dans n'importe quel ordre, +avant ou après les noms de fichiers. Les options sans arguments +peuvent être combinées après un unique tiret. +.TP 12 ++[num] +Place le curseur sur la ligne "num" dans le premier fichier. +Si "num" est omis, le curseur sera placé sur la dernière ligne. +.TP ++/{motif} +Place le curseur sur la première occurrence de {motif} dans le premier fichier. +Voir ":help search\-pattern" pour connaître les motifs de recherches +disponibles. +.TP ++{commande} +.TP +\-c {commande} +Exécute {commande} après la lecture du premier fichier. +{commande} est interprétée comme une commande Ex. +Si la {commande} contient des espaces, elle doit être entourée +de doubles-apostrophes (cela dépend du shell utilisé). +Exemple : Vim "+set si" main.c +.br +Note : vous pouvez utiliser jusqu'à 10 commandes "+" ou "\-c". +.TP +\-S {fichier} +Source {fichier} après la lecture du premier fichier. +C'est équivalent à \-c "source {fichier}". +{fichier} ne peut pas débuter par un '\-'. +Si {fichier} est omis, "Session.vim" est utilisé (cela ne fonctionne que si +\-S est le dernier argument). +.TP +\-\-cmd {commande} +Comme "\-c", mais la commande est exécutée juste avant de traiter les fichiers +vimrc. +Vous pouvez utiliser jusqu'à 10 de ces commandes, indépendamment des +commandes "\-c". +.TP +\-A +Si +.B Vim +a été compilé avec le support de la fonctionnalité ARABIC pour l'édition de +fichiers de droite à gauche et les claviers arabes, cette option lance +.B Vim +en mode Arabe, c.-à-d. que l'option 'arabic' est activée. +Sinon, un message d'erreur est émis et +.B Vim +quitte. +.TP +\-b +Mode Binaire. +Active plusieurs options pour permettre l'édition +d'un fichier binaire ou exécutable. +.TP +\-C +Compatible. Active l'option 'compatible'. +.B Vim +se comportera alors quasiment comme Vi, même s'il existe un fichier .vimrc. +.TP +\-d +Démarre en mode Diff. +Deux, trois ou quatre noms de fichiers doivent être spécifiés. +.B Vim +ouvrira alors tous les fichiers et affichera leurs différences. +Fonctionne comme vimdiff(1). +.TP +\-d {périph} +Ouvre {périph} pour l'utiliser comme terminal. +Uniquement sur Amiga. +Exemple : +"\-d con:20/30/600/150". +.TP +\-D +Debogage. Passe en mode Débogage lors de l'exécution de la première commande +d'un script. +.TP +\-e +Démarre +.B Vim +en mode Ex, comme si l'exécutable s'appelait "ex". +.TP +\-E +Démarre +.B Vim +en mode Ex amélioré, comme si l'exécutable "exim" avait été invoqué. +.TP +\-f +Premier-plan (Foreground). Pour la version graphique, +.B Vim +ne forke pas et ne se détache pas du shell dans lequel il a été invoqué. +Sur Amiga, +.B Vim +n'est pas relancé pour ouvrir une nouvelle fenêtre. +Cette option est utile quand +.B Vim +est exécuté par un programme qui attend la fin de la session d'édition +(par exemple mail). +Sur Amiga, les commandes ":sh" et ":!" ne fonctionneront pas. +.TP +\-\-nofork +Premier-plan (Foreground). Pour la version graphique, +.B Vim +ne forkera pas et ne se détachera pas du shell dans lequel il a été lancé. +.TP +\-F +Si +.B Vim +a été compilé avec le support de la fonctionnalité FKMAP pour l'édition de +fichiers de droite à gauche et les claviers farsi, cette option lance +.B Vim +en mode Farsi, c.-à-d. avec les options 'fkmap' et 'rightleft' activées. +Sinon, un message d'erreur est émis et +.B Vim +quitte. +.TP +\-g +Si +.B Vim +a été compilé avec le support de l'IHM graphique, cette option active +l'IHM graphique. Si le support n'a pas été compilé, un message d'erreur +est émis et +.B Vim +quitte. +.TP +\-h +Donne une aide succincte sur les arguments et les options de la ligne de +commande. Après cela, +.B Vim +quitte. +.TP +\-H +Si +.B Vim +a été compilé avec le support de la fonctionnalité RIGHTLEFT pour l'édition de +fichiers de droite à gauche et les claviers hébreux, cette option lance +.B Vim +en mode Hébreu, c.-à-d. avec les options 'hkmap' et 'rightleft' activées. +Sinon, un message d'erreur est émis et +.B Vim +quitte. +.TP +\-i {viminfo} +Lorsque l'utilisation d'un fichier viminfo est activée, cette option indique +le nom de fichier à utiliser à la place de "~/.viminfo" par défaut. +Il est possible d'empêcher l'utilisation d'un fichier ".viminfo", en +spécifiant le nom de fichier "NONE". +.TP +\-L +Comme \-r. +.TP +\-l +Mode Lisp. +Active les options 'lisp' et 'showmatch'. +.TP +\-m +Empêche la modification des fichiers. +Désactive l'option 'write'. +Vous pouvez toujours modifier le tampon, mais il vous sera impossible +d'écrire le fichier. +.TP +\-M +N'autorise aucune modification. les options 'modifiable' et 'write' sont +désactivées, de sorte que les changements ne sont pas autorisés et que les +fichiers ne peuvent pas être écrits. Note : ces options peuvent être activées +pour autoriser les modifications. +.TP +\-N +Mode Non-compatible. Désactive l'option 'compatible'. +Cela améliorera le comportement de +.B Vim +\, mais il sera moins conforme à celui de Vi, même s'il n'existe aucun +fichier ".vimrc". +.TP +\-n +N'utilise pas de fichier d'échange (swapfile). +Le recouvrement après un plantage sera impossible. +Utile pour éditer un fichier sur un support très lent (disquette par ex.). +Également activable avec ":set uc=0". +Il est possible de l'annuler avec ":set uc=200". +.TP +\-nb +Devient un serveur d'édition pour NetBeans. Consulter la documentation à ce +sujet pour davantage de détails. +.TP +\-o[N] +Ouvre N fenêtres les unes au-dessus des autres. +Quand N est omis, ouvre une fenêtre pour chaque fichier. +.TP +\-O[N] +Ouvre N fenêtres côte à côte. +Quand N est omis, ouvre une fenêtre pour chaque fichier fichier. +.TP +\-p[N] +Ouvre N onglets. +Quand N est omis, ouvre un onglet pour chaque fichier fichier. +.TP +\-R +Mode Lecture-Seule. +Active l'option 'readonly'. +Vous pouvez toujours éditer le tampon, mais il vous sera impossible de +d'écraser accidentellement un fichier. +Si vous voulez écraser un fichier, ajoutez un point d'exclamation à la commande +Ex, comme dans ":w!". +L'option \-R impose l'option \-n (voir ci-dessus). +L'option 'readonly' peut être désactivée avec ":set noro". +Voir ":help 'readonly'". +.TP +\-r +Donne la liste des fichiers d'échange, avec des informations pour les utiliser +à des fins de recouvrement. +.TP +\-r {file} +Mode Recouvrement. +Utilise le fichier d'échange pour récouvrer d'une session d'édition plantée. +Le fichier d'échange est un fichier avec le même nom que le fichier texte, +suivi du suffixe ".swp". +Voir ":help recovery". +.TP +\-s +Mode Silencieux. Disponible uniquement quand +.B Vim +est lancé en tant que "ex" ou quand l'option "\-e" a été spécifiée avant +l'option "\-s". +.TP +\-s {scriptEntrée} +Lit le fichier de script {scriptEntrée}. +Les caractères du fichier sont interprétés comme si vous les tapiez. +La commande ":source! {scriptEntrée}" donne le même résultat. +Si la fin du fichier est atteinte avant que l'éditeur quitte, les caractères +suivants sont lus depuis le clavier. +.TP +\-T {terminal} +Indique à +.B Vim +le nom du terminal utilisé. +Cela n'est requis que lorsque la détection automatique échoue. +Le {terminal} devrait être connu de +.B Vim +(intégré) ou défini dans le fichier termcap ou terminfo. +.TP +\-u {vimrc} +Utilise les commandes du fichier {vimrc} pour les initialisations. +Toutes les autres initialisations sont omises. +À utiliser pour éditer un type de fichiers particulier. +Cela permet aussi d'omettre toute initialisation en spécifiant le nom de +fichier "NONE". +Voir ":help initialization" dans Vim pour davantage de détails. +.TP +\-U {gvimrc} +Utilise les commandes du fichier {gvimrc} pour l'initialisation de l'IHM +graphique. +Toutes les autres initialisations graphiques sont omises. +Cela permet aussi d'omettre toute initialisation graphique en spécifiant le nom +de fichier "NONE". +Voir ":help gui\-init" dans Vim pour davantage de détails. +.TP +\-V[N] +Mode Verbeux. +Donne des messages à propos des fichiers sourcés, ainsi que sur la lecture +et les écritures dans le fichier viminfo. le nombre optionnel N précise la +valeur de l'option 'verbose' (10 par défaut). +.TP +\-v +Démarre +.B Vim +en mode Vi, comme si l'exécutable s'appelait "vi". Cela n'a d'effet que si +l'exécutable invoqué est "ex". +.TP +\-w {scriptSortie} +Tous les caractères que vous tapez sont enregistrés dans le fichier +{scriptSortie}, jusqu'à ce que vous quittiez +.B Vim. +C'est utile quand vous voulez créer un fichier de script à utiliser avec +"vim \-s" ou ":source!". +Si le fichier {scriptSortie} existe, les caractères sont ajoutés à la fin. +.TP +\-W {scriptSortie} +Comme \-w, mais un fichier existant sera écrasé. +.TP +\-x +Chiffre les fichiers lors de l'écriture. Une clé de chiffrement sera demandée. +.TP +\-X +Ne se connecte pas au serveur X. Accélère le temps de démarrage dans un +terminal, mais le titre de la fenêtre et le presse-papier seront inaccessibles. +.TP +\-y +Démarre +.B Vim +en mode Débutant (easy), comme si l'exécutable s'appelait "evim" ou "eview". +Donne à +.B Vim +un comportement plus proche des éditeurs « cliquez-tapez ». +.TP +\-Z +Mode restreint. Fonctionne comme si l'exécutable commençait par la lettre 'r'. +.TP +\-\- +Délimite la fin des options. +Les arguments qui suivent seront considérés comme des noms de fichiers. +Cela permet d'éditer des fichiers débutant par un '\-'. +.TP +\-\-echo\-wid +IHM graphique GTK uniquement : retourne la Window ID sur stdout. +.TP +\-\-help +Donne un message d'aide et quitte, comme "\-h". +.TP +\-\-literal +Prend les arguments de noms de fichiers littéralement, sans étendre les +jokers. N'a aucun effet sur Unix, où le shell étend les jokers. +.TP +\-\-noplugin +Ne charge pas les greffons. Implicite avec \-u NONE. +.TP +\-\-remote +Se connecte à un serveur Vim et lui fait éditer les fichiers spécifiés dans +le reste des arguments. Si aucun serveur n'est trouvé, un avertissement est +émis et les fichiers sont édités dans le Vim courant. +.TP +\-\-remote\-expr {expr} +Se connecte à un serveur Vim, y évalue {expr} et affiche le résultat sur la +sortie standard (stdout). +.TP +\-\-remote\-send {touches} +Se connecte à un serveur Vim et y envoie {touches}. +.TP +\-\-remote\-silent +Comme \-\-remote, mais sans émettre d'avertissement si aucun serveur n'est +trouvé. +.TP +\-\-remote\-wait +Comme \-\-remote, mais Vim ne quitte pas tant que le fichier est en cours +d'édition. +.TP +\-\-remote\-wait\-silent +Comme \-\-remote\-wait, mais sans émettre d'avertissement si aucun serveur n'est +trouvé. +.TP +\-\-serverlist +Donne la liste des noms de tous les serveurs Vim disponibles. +.TP +\-\-servername {nom} +Utilise {nom} pour le nom de serveur. Ce nom est donné au Vim courant, à moins +qu'il ne soit utilisé avec un argument \-\-remote. Dans ce cas, il s'agit du nom +du serveur auquel se connecter. +.TP +\-\-socketid {id} +IHM graphique GTK+ uniquement : utilise le mécanisme GtkPlug pour faire +fonctionner gvim dans une autre fenêtre. +.TP +\-\-version +Affiche les informations sur la version puis quitte. +.SH AIDE EN LIGNE +Taper ":help" dans +.B Vim +pour commencer. +Taper ":help sujet" pour obtenir de l'aide sur un sujet précis. +Par exemple : ":help ZZ" pour consulter l'aide sur la commande "ZZ". +Utiliser <Tab> et CTRL\-D pour compléter les sujets (":help +cmdline\-completion"). +Des marqueurs sont inclus dans l'aide et vous permettent de sauter d'un endroit +à un autre (comme des liens hypertextes, voir ":help"). +L'ensemble des fichiers de la documentation peut être consulté de cette +façon, par exemple ":help syntax.txt". +.SH FICHIERS +.TP 15 +/usr/local/lib/vim/doc/*.txt +Les fichiers de la documentation de +.B Vim. +Utiliser ":help doc\-file\-list" pour obtenir la liste complète. +.TP +/usr/local/lib/vim/doc/tags +Le fichier des marqueurs utilisé pour trouver les informations dans les +fichiers de la documentation. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Initialisation de la syntaxe pour l'ensemble du système. +.TP +/usr/local/lib/vim/syntax/*.vim +Fichiers de syntaxe pour différents langages. +.TP +/usr/local/lib/vim/vimrc +Initialisation de +.B Vim +pour l'ensemble du système. +.TP +~/.vimrc +Initialisation de +.B Vim +de votre compte utilisateur. +.TP +/usr/local/lib/vim/gvimrc +Initialisation de gvim pour l'ensemble du système. +.TP +~/.gvimrc +Initialisation de gvim pour votre compte utilisateur. +.TP +/usr/local/lib/vim/optwin.vim +Script utilisé pour la commande ":options", une manière pratique de consulter +et de modifier les options. +.TP +/usr/local/lib/vim/menu.vim +Initialisation des menus de gvim pour l'ensemble du système. +.TP +/usr/local/lib/vim/bugreport.vim +Script pour générer un rapport de bogue. Voir ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Script pour détecter le type d'un fichier d'après son nom. +Voir ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Script pour détecter le type d'un fichier d'après son contenu. +Voir ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +Fichiers utilisés pour l'impression PostScript. +.PP +Pour disposer d'informations récentes, consulter le site Internet de VIM : +.br +<URL:http://www.vim.org/> +.SH VOIR AUSSI +vimtutor(1) +.SH AUTEUR +La majeure partie de +.B Vim +a été écrite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs. +Voir ":help credits" dans +.B Vim. +.br +.B Vim +est basé sur Stevie, réalisé par Tim Thompson, +Tony Andrews et G.R. (Fred) Walter. +Toutefois, pratiquement rien du code original ne subsiste. +.SH BOGUES +Probablement. +Voir ":help todo" pour consulter la liste des problèmes connus. +.PP +NOTE : Remarquez que bon nombre de points, qui pourraient être considérés comme +des bugs par certains, sont en fait dus à une reproduction trop fidèle +du comportement de Vi. Et si vous pensez que d'autres points sont des +bugs "parce que Vi le fait différemment", vous devriez jeter un oeil +attentif au fichier vi_diff.txt (ou taper ":help vi_diff.txt" dans Vim). +Regardez aussi les options 'compatible' et 'coptions'. +.SH TRADUCTION +Cette page de manuel a été traduite par Richard Hitier. +<richard.hitier@dial.oleane.com> 2000-08-07. +.br +Cette page de manuel a été mise à jour par David Blanchet. +<david.blanchet@free.fr> 2006-04-10. +Mise à jour 2013-05-10, Dominique Pellé <dominique.pelle@gmail.com> diff --git a/share/vim/vim74/doc/vim-fr.UTF-8.1 b/share/vim/vim74/doc/vim-fr.UTF-8.1 new file mode 100644 index 00000000..67be1066 --- /dev/null +++ b/share/vim/vim74/doc/vim-fr.UTF-8.1 @@ -0,0 +1,589 @@ +.\" Traduction lundi 7 août 2000 par Richard Hitier +.\" (richard.hitier@dial.oleane.com) +.\" Mise à jour de la traduction par David Blanchet +.\" (david.blanchet@free.fr) 2006-06-10 +.\" Mise à jour de la traduction par Dominique Pellé +.\" (dominique.pelle@gmail.com) 2013-05-10 +.\" +.TH VIM 1 "22 février 2002" +.SH NOM +vim \- Vi IMproved, éditeur de texte pour programmeurs +.SH SYNOPSIS +.br +.B vim +[options] [fichier ...] +.br +.B vim +[options] \- +.br +.B vim +[options] \-t marqueur +.br +.B vim +[options] \-q [fichiererreurs] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH DESCRIPTION +.B Vim +est un éditeur de texte proposant une compatibilité ascendante +avec Vi. Il permet d'éditer n'importe quel type de texte brut. +Il est particulièrement adapté pour l'édition des programmes. +.PP +Il comporte de nombreuses améliorations par rapport à Vi : annulation sur +plusieurs niveaux, fenêtres et tampons multiples, coloration syntaxique, +édition en ligne de commande, complètement des noms de fichiers, aide en +ligne, sélection visuelle, etc. +Voir ":help vi_diff.txt" pour un résumé des différences entre +.B Vim +et Vi. +.PP +Pendant l'exécution de +.B Vim +\, une aide abondante est accessible au travers du système d'aide +en ligne, grâce à la commande ":help". +Voir la section AIDE EN LIGNE plus bas. +.PP +Le plus souvent +.B Vim +est démarré pour éditer un unique fichier avec la commande +.PP + vim fichier +.PP +Plus généralement, +.B Vim +est lancé avec : +.PP + vim [options] [listefichiers] +.PP +Si la listefichiers est omise, l'éditeur démarre avec un tampon vide. +Autrement, l'une des quatre méthodes suivantes vous permettra de choisir +un ou plusieurs fichiers à éditer. +.TP 12 +fichier ... +Une liste de noms de fichiers. +Le premier sera le fichier courant et sera lu dans le tampon. +Le curseur sera placé sur la première ligne du tampon. +Vous pouvez passer aux autres fichiers avec la commande ":next". +Pour éditer un fichier débutant par un tiret, faites précéder la +liste de fichiers par "\-\-". +.TP +\- +Le fichier à éditer est lu sur l'entrée standard (stdin). Les commandes sont +lues depuis stderr, qui devrait être un terminal. +.TP +\-t {marqueur} +Le fichier à éditer et la position initiale du curseur dépendent +d'un "marqueur", qui est une sorte d'étiquette. +{marqueur} est recherché dans le fichier des marqueurs, le fichier correspondant +devient le fichier courant et la commande associée est exécutée. +Principalement utile pour les programmes en C ; dans ce cas, {marqueur} +peut être le nom d'une fonction. +Au final, le fichier contenant cette fonction devient le fichier +courant et le curseur est placé au début de la fonction. +Voir ":help tag\-commands". +.TP +\-q [fichiererreurs] +Démarre en mode Mise-au-point (QuickFix). +Le fichier [fichiererreurs] est lu et la première erreur est affichée. +Si [fichiererreurs] est omis, le nom du fichier est lu dans +l'option 'errorfile' ("AztecC.Err" par défaut sur Amiga, "errors.err" sur les +autres systèmes). +La commande ":cn" permet de sauter aux erreurs suivantes. +Voir ":help quickfix". +.PP +.B Vim +se comporte différemment selon le nom de la commande (l'exécutable peut +cependant être le même fichier). +.TP 10 +vim +La façon "normale", le comportement par défaut. +.TP +ex +Démarre en mode Ex. +La commande ":vi" permet de passer en mode Normal. +Ce mode est également accessible avec l'argument "\-e". +.TP +view +Démarre en mode Lecture-Seule. Vous êtes protégé de l'écriture accidentelle +des fichiers. Ce mode est également accessible avec l'argument "\-R". +.TP +gvim gview +La version graphique. +Ouvre une nouvelle fenêtre. +Également accessible avec l'argument "\-g". +.TP +evim eview +La version graphique en mode Débutant (easy). +Ouvre une nouvelle fenêtre. +Également accessible avec l'argument "\-y". +.TP +rvim rview rgvim rgview +Comme ci-dessus, mais avec des restrictions. Il vous sera impossible de +lancer des commandes du shell, ou de suspendre +.B Vim. +Également accessible avec l'argument "\-Z". +.SH OPTIONS +Les options peuvent être spécifiées dans n'importe quel ordre, +avant ou après les noms de fichiers. Les options sans arguments +peuvent être combinées après un unique tiret. +.TP 12 ++[num] +Place le curseur sur la ligne "num" dans le premier fichier. +Si "num" est omis, le curseur sera placé sur la dernière ligne. +.TP ++/{motif} +Place le curseur sur la première occurrence de {motif} dans le premier fichier. +Voir ":help search\-pattern" pour connaître les motifs de recherches +disponibles. +.TP ++{commande} +.TP +\-c {commande} +Exécute {commande} après la lecture du premier fichier. +{commande} est interprétée comme une commande Ex. +Si la {commande} contient des espaces, elle doit être entourée +de doubles-apostrophes (cela dépend du shell utilisé). +Exemple : Vim "+set si" main.c +.br +Note : vous pouvez utiliser jusqu'à 10 commandes "+" ou "\-c". +.TP +\-S {fichier} +Source {fichier} après la lecture du premier fichier. +C'est équivalent à \-c "source {fichier}". +{fichier} ne peut pas débuter par un '\-'. +Si {fichier} est omis, "Session.vim" est utilisé (cela ne fonctionne que si +\-S est le dernier argument). +.TP +\-\-cmd {commande} +Comme "\-c", mais la commande est exécutée juste avant de traiter les fichiers +vimrc. +Vous pouvez utiliser jusqu'à 10 de ces commandes, indépendamment des +commandes "\-c". +.TP +\-A +Si +.B Vim +a été compilé avec le support de la fonctionnalité ARABIC pour l'édition de +fichiers de droite à gauche et les claviers arabes, cette option lance +.B Vim +en mode Arabe, c.-à-d. que l'option 'arabic' est activée. +Sinon, un message d'erreur est émis et +.B Vim +quitte. +.TP +\-b +Mode Binaire. +Active plusieurs options pour permettre l'édition +d'un fichier binaire ou exécutable. +.TP +\-C +Compatible. Active l'option 'compatible'. +.B Vim +se comportera alors quasiment comme Vi, même s'il existe un fichier .vimrc. +.TP +\-d +Démarre en mode Diff. +Deux, trois ou quatre noms de fichiers doivent être spécifiés. +.B Vim +ouvrira alors tous les fichiers et affichera leurs différences. +Fonctionne comme vimdiff(1). +.TP +\-d {périph} +Ouvre {périph} pour l'utiliser comme terminal. +Uniquement sur Amiga. +Exemple : +"\-d con:20/30/600/150". +.TP +\-D +Debogage. Passe en mode Débogage lors de l'exécution de la première commande +d'un script. +.TP +\-e +Démarre +.B Vim +en mode Ex, comme si l'exécutable s'appelait "ex". +.TP +\-E +Démarre +.B Vim +en mode Ex amélioré, comme si l'exécutable "exim" avait été invoqué. +.TP +\-f +Premier-plan (Foreground). Pour la version graphique, +.B Vim +ne forke pas et ne se détache pas du shell dans lequel il a été invoqué. +Sur Amiga, +.B Vim +n'est pas relancé pour ouvrir une nouvelle fenêtre. +Cette option est utile quand +.B Vim +est exécuté par un programme qui attend la fin de la session d'édition +(par exemple mail). +Sur Amiga, les commandes ":sh" et ":!" ne fonctionneront pas. +.TP +\-\-nofork +Premier-plan (Foreground). Pour la version graphique, +.B Vim +ne forkera pas et ne se détachera pas du shell dans lequel il a été lancé. +.TP +\-F +Si +.B Vim +a été compilé avec le support de la fonctionnalité FKMAP pour l'édition de +fichiers de droite à gauche et les claviers farsi, cette option lance +.B Vim +en mode Farsi, c.-à-d. avec les options 'fkmap' et 'rightleft' activées. +Sinon, un message d'erreur est émis et +.B Vim +quitte. +.TP +\-g +Si +.B Vim +a été compilé avec le support de l'IHM graphique, cette option active +l'IHM graphique. Si le support n'a pas été compilé, un message d'erreur +est émis et +.B Vim +quitte. +.TP +\-h +Donne une aide succincte sur les arguments et les options de la ligne de +commande. Après cela, +.B Vim +quitte. +.TP +\-H +Si +.B Vim +a été compilé avec le support de la fonctionnalité RIGHTLEFT pour l'édition de +fichiers de droite à gauche et les claviers hébreux, cette option lance +.B Vim +en mode Hébreu, c.-à-d. avec les options 'hkmap' et 'rightleft' activées. +Sinon, un message d'erreur est émis et +.B Vim +quitte. +.TP +\-i {viminfo} +Lorsque l'utilisation d'un fichier viminfo est activée, cette option indique +le nom de fichier à utiliser à la place de "~/.viminfo" par défaut. +Il est possible d'empêcher l'utilisation d'un fichier ".viminfo", en +spécifiant le nom de fichier "NONE". +.TP +\-L +Comme \-r. +.TP +\-l +Mode Lisp. +Active les options 'lisp' et 'showmatch'. +.TP +\-m +Empêche la modification des fichiers. +Désactive l'option 'write'. +Vous pouvez toujours modifier le tampon, mais il vous sera impossible +d'écrire le fichier. +.TP +\-M +N'autorise aucune modification. les options 'modifiable' et 'write' sont +désactivées, de sorte que les changements ne sont pas autorisés et que les +fichiers ne peuvent pas être écrits. Note : ces options peuvent être activées +pour autoriser les modifications. +.TP +\-N +Mode Non-compatible. Désactive l'option 'compatible'. +Cela améliorera le comportement de +.B Vim +\, mais il sera moins conforme à celui de Vi, même s'il n'existe aucun +fichier ".vimrc". +.TP +\-n +N'utilise pas de fichier d'échange (swapfile). +Le recouvrement après un plantage sera impossible. +Utile pour éditer un fichier sur un support très lent (disquette par ex.). +Également activable avec ":set uc=0". +Il est possible de l'annuler avec ":set uc=200". +.TP +\-nb +Devient un serveur d'édition pour NetBeans. Consulter la documentation à ce +sujet pour davantage de détails. +.TP +\-o[N] +Ouvre N fenêtres les unes au-dessus des autres. +Quand N est omis, ouvre une fenêtre pour chaque fichier. +.TP +\-O[N] +Ouvre N fenêtres côte à côte. +Quand N est omis, ouvre une fenêtre pour chaque fichier fichier. +.TP +\-p[N] +Ouvre N onglets. +Quand N est omis, ouvre un onglet pour chaque fichier fichier. +.TP +\-R +Mode Lecture-Seule. +Active l'option 'readonly'. +Vous pouvez toujours éditer le tampon, mais il vous sera impossible de +d'écraser accidentellement un fichier. +Si vous voulez écraser un fichier, ajoutez un point d'exclamation à la commande +Ex, comme dans ":w!". +L'option \-R impose l'option \-n (voir ci-dessus). +L'option 'readonly' peut être désactivée avec ":set noro". +Voir ":help 'readonly'". +.TP +\-r +Donne la liste des fichiers d'échange, avec des informations pour les utiliser +à des fins de recouvrement. +.TP +\-r {file} +Mode Recouvrement. +Utilise le fichier d'échange pour récouvrer d'une session d'édition plantée. +Le fichier d'échange est un fichier avec le même nom que le fichier texte, +suivi du suffixe ".swp". +Voir ":help recovery". +.TP +\-s +Mode Silencieux. Disponible uniquement quand +.B Vim +est lancé en tant que "ex" ou quand l'option "\-e" a été spécifiée avant +l'option "\-s". +.TP +\-s {scriptEntrée} +Lit le fichier de script {scriptEntrée}. +Les caractères du fichier sont interprétés comme si vous les tapiez. +La commande ":source! {scriptEntrée}" donne le même résultat. +Si la fin du fichier est atteinte avant que l'éditeur quitte, les caractères +suivants sont lus depuis le clavier. +.TP +\-T {terminal} +Indique à +.B Vim +le nom du terminal utilisé. +Cela n'est requis que lorsque la détection automatique échoue. +Le {terminal} devrait être connu de +.B Vim +(intégré) ou défini dans le fichier termcap ou terminfo. +.TP +\-u {vimrc} +Utilise les commandes du fichier {vimrc} pour les initialisations. +Toutes les autres initialisations sont omises. +À utiliser pour éditer un type de fichiers particulier. +Cela permet aussi d'omettre toute initialisation en spécifiant le nom de +fichier "NONE". +Voir ":help initialization" dans Vim pour davantage de détails. +.TP +\-U {gvimrc} +Utilise les commandes du fichier {gvimrc} pour l'initialisation de l'IHM +graphique. +Toutes les autres initialisations graphiques sont omises. +Cela permet aussi d'omettre toute initialisation graphique en spécifiant le nom +de fichier "NONE". +Voir ":help gui\-init" dans Vim pour davantage de détails. +.TP +\-V[N] +Mode Verbeux. +Donne des messages à propos des fichiers sourcés, ainsi que sur la lecture +et les écritures dans le fichier viminfo. le nombre optionnel N précise la +valeur de l'option 'verbose' (10 par défaut). +.TP +\-v +Démarre +.B Vim +en mode Vi, comme si l'exécutable s'appelait "vi". Cela n'a d'effet que si +l'exécutable invoqué est "ex". +.TP +\-w {scriptSortie} +Tous les caractères que vous tapez sont enregistrés dans le fichier +{scriptSortie}, jusqu'à ce que vous quittiez +.B Vim. +C'est utile quand vous voulez créer un fichier de script à utiliser avec +"vim \-s" ou ":source!". +Si le fichier {scriptSortie} existe, les caractères sont ajoutés à la fin. +.TP +\-W {scriptSortie} +Comme \-w, mais un fichier existant sera écrasé. +.TP +\-x +Chiffre les fichiers lors de l'écriture. Une clé de chiffrement sera demandée. +.TP +\-X +Ne se connecte pas au serveur X. Accélère le temps de démarrage dans un +terminal, mais le titre de la fenêtre et le presse-papier seront inaccessibles. +.TP +\-y +Démarre +.B Vim +en mode Débutant (easy), comme si l'exécutable s'appelait "evim" ou "eview". +Donne à +.B Vim +un comportement plus proche des éditeurs « cliquez-tapez ». +.TP +\-Z +Mode restreint. Fonctionne comme si l'exécutable commençait par la lettre 'r'. +.TP +\-\- +Délimite la fin des options. +Les arguments qui suivent seront considérés comme des noms de fichiers. +Cela permet d'éditer des fichiers débutant par un '\-'. +.TP +\-\-echo\-wid +IHM graphique GTK uniquement : retourne la Window ID sur stdout. +.TP +\-\-help +Donne un message d'aide et quitte, comme "\-h". +.TP +\-\-literal +Prend les arguments de noms de fichiers littéralement, sans étendre les +jokers. N'a aucun effet sur Unix, où le shell étend les jokers. +.TP +\-\-noplugin +Ne charge pas les greffons. Implicite avec \-u NONE. +.TP +\-\-remote +Se connecte à un serveur Vim et lui fait éditer les fichiers spécifiés dans +le reste des arguments. Si aucun serveur n'est trouvé, un avertissement est +émis et les fichiers sont édités dans le Vim courant. +.TP +\-\-remote\-expr {expr} +Se connecte à un serveur Vim, y évalue {expr} et affiche le résultat sur la +sortie standard (stdout). +.TP +\-\-remote\-send {touches} +Se connecte à un serveur Vim et y envoie {touches}. +.TP +\-\-remote\-silent +Comme \-\-remote, mais sans émettre d'avertissement si aucun serveur n'est +trouvé. +.TP +\-\-remote\-wait +Comme \-\-remote, mais Vim ne quitte pas tant que le fichier est en cours +d'édition. +.TP +\-\-remote\-wait\-silent +Comme \-\-remote\-wait, mais sans émettre d'avertissement si aucun serveur n'est +trouvé. +.TP +\-\-serverlist +Donne la liste des noms de tous les serveurs Vim disponibles. +.TP +\-\-servername {nom} +Utilise {nom} pour le nom de serveur. Ce nom est donné au Vim courant, à moins +qu'il ne soit utilisé avec un argument \-\-remote. Dans ce cas, il s'agit du nom +du serveur auquel se connecter. +.TP +\-\-socketid {id} +IHM graphique GTK+ uniquement : utilise le mécanisme GtkPlug pour faire +fonctionner gvim dans une autre fenêtre. +.TP +\-\-version +Affiche les informations sur la version puis quitte. +.SH AIDE EN LIGNE +Taper ":help" dans +.B Vim +pour commencer. +Taper ":help sujet" pour obtenir de l'aide sur un sujet précis. +Par exemple : ":help ZZ" pour consulter l'aide sur la commande "ZZ". +Utiliser <Tab> et CTRL\-D pour compléter les sujets (":help +cmdline\-completion"). +Des marqueurs sont inclus dans l'aide et vous permettent de sauter d'un endroit +à un autre (comme des liens hypertextes, voir ":help"). +L'ensemble des fichiers de la documentation peut être consulté de cette +façon, par exemple ":help syntax.txt". +.SH FICHIERS +.TP 15 +/usr/local/lib/vim/doc/*.txt +Les fichiers de la documentation de +.B Vim. +Utiliser ":help doc\-file\-list" pour obtenir la liste complète. +.TP +/usr/local/lib/vim/doc/tags +Le fichier des marqueurs utilisé pour trouver les informations dans les +fichiers de la documentation. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Initialisation de la syntaxe pour l'ensemble du système. +.TP +/usr/local/lib/vim/syntax/*.vim +Fichiers de syntaxe pour différents langages. +.TP +/usr/local/lib/vim/vimrc +Initialisation de +.B Vim +pour l'ensemble du système. +.TP +~/.vimrc +Initialisation de +.B Vim +de votre compte utilisateur. +.TP +/usr/local/lib/vim/gvimrc +Initialisation de gvim pour l'ensemble du système. +.TP +~/.gvimrc +Initialisation de gvim pour votre compte utilisateur. +.TP +/usr/local/lib/vim/optwin.vim +Script utilisé pour la commande ":options", une manière pratique de consulter +et de modifier les options. +.TP +/usr/local/lib/vim/menu.vim +Initialisation des menus de gvim pour l'ensemble du système. +.TP +/usr/local/lib/vim/bugreport.vim +Script pour générer un rapport de bogue. Voir ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Script pour détecter le type d'un fichier d'après son nom. +Voir ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Script pour détecter le type d'un fichier d'après son contenu. +Voir ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +Fichiers utilisés pour l'impression PostScript. +.PP +Pour disposer d'informations récentes, consulter le site Internet de VIM : +.br +<URL:http://www.vim.org/> +.SH VOIR AUSSI +vimtutor(1) +.SH AUTEUR +La majeure partie de +.B Vim +a été écrite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs. +Voir ":help credits" dans +.B Vim. +.br +.B Vim +est basé sur Stevie, réalisé par Tim Thompson, +Tony Andrews et G.R. (Fred) Walter. +Toutefois, pratiquement rien du code original ne subsiste. +.SH BOGUES +Probablement. +Voir ":help todo" pour consulter la liste des problèmes connus. +.PP +NOTE : Remarquez que bon nombre de points, qui pourraient être considérés comme +des bugs par certains, sont en fait dus à une reproduction trop fidèle +du comportement de Vi. Et si vous pensez que d'autres points sont des +bugs "parce que Vi le fait différemment", vous devriez jeter un oeil +attentif au fichier vi_diff.txt (ou taper ":help vi_diff.txt" dans Vim). +Regardez aussi les options 'compatible' et 'coptions'. +.SH TRADUCTION +Cette page de manuel a été traduite par Richard Hitier. +<richard.hitier@dial.oleane.com> 2000-08-07. +.br +Cette page de manuel a été mise à jour par David Blanchet. +<david.blanchet@free.fr> 2006-04-10. +Mise à jour 2013-05-10, Dominique Pellé <dominique.pelle@gmail.com> diff --git a/share/vim/vim73/doc/vim-it.1 b/share/vim/vim74/doc/vim-it.1 similarity index 100% rename from share/vim/vim73/doc/vim-it.1 rename to share/vim/vim74/doc/vim-it.1 diff --git a/share/vim/vim73/doc/vim-it.UTF-8.1 b/share/vim/vim74/doc/vim-it.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/vim-it.UTF-8.1 rename to share/vim/vim74/doc/vim-it.UTF-8.1 diff --git a/share/vim/vim74/doc/vim-ja.UTF-8.1 b/share/vim/vim74/doc/vim-ja.UTF-8.1 new file mode 100644 index 00000000..a4788b3c --- /dev/null +++ b/share/vim/vim74/doc/vim-ja.UTF-8.1 @@ -0,0 +1,501 @@ +.TH VIM 1 "2006 Apr 11" +.SH 名前 +vim \- Vi IMproved, プログラマのテキストエディタ +.SH 書式 +.br +.B vim +[options] [file ..] +.br +.B vim +[options] \- +.br +.B vim +[options] \-t tag +.br +.B vim +[options] \-q [errorfile] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH 説明 +.B Vim +は Vi 互換のテキストエディタです。 +どのような種類のプレインテキストでも編集できます。 +特に、プログラムの編集に力を発揮します。 +.PP +Vi に多くの改良が加えられています: +多段アンドゥ、マルチウィンドウ、マルチバッファ、構文強調表示、 +コマンドライン編集、ファイル名補完、ヘルプ、ビジュアル選択、などなど。 +.B Vim +と Vi の違いについての要約は ":help vi_diff.txt" を参照してください。 +.PP +.B Vim +の実行中は ":help" コマンドでヘルプを引くことができます。 +下記、オンラインヘルプの項を参照してください。 +.PP +.B Vim +は次のようなコマンドで起動できます。 +.PP + vim file +.PP +正確な書式は次の通りです: +.PP + vim [options] [filelist] +.PP +filelist を省略した場合は、空のバッファが開かれます。 +指定した場合は、以下の四つのうちどれか一つの方法でファイルが開かれます。 +.TP 12 +file .. +ファイルのリスト。 +一番目のファイルがカレントファイルになり、バッファに読み込まれます。 +カーソルは、バッファの一行目に置かれます。 +他のファイルを表示するには ":next" コマンドを使ってください。 +ファイル名がダッシュで始まるファイルを開く場合は、 +filelist の前に "\-\-" を指定してください。 +.TP +\- +ファイルは標準入力から読み込まれます。コマンドは標準エラー (ttyからの入 +力になっているはず) から読み込まれます。 +.TP +\-t {tag} +開くファイルとカーソルの初期位置は "tag" に依存します。goto label の一種です。 +tags ファイルから {tag} が検索され、関連したファイルがカレントファイルになり +ます。そして、関連したコマンドが実行されます。 +これは主に C 言語のファイルを開くときに使われます。その場合 {tag} に関数など +を指定して使います。 +関数を含んでいるファイルが開かれ、その関数の先頭にカーソルが移動する、 +という動作になります。 +詳しくは ":help tag\-commands" を参照してください。 +.TP +\-q [errorfile] +クイックフィックスモードで起動します。 +[errorfile] に指定したファイルが読み込まれ、最初のエラーが表示されます。 +[errorfile] を省略した場合は、オプション 'errorfile' が使われます (初期設定 +は、Amiga では "AztecC.Err"、その他のシステムでは "errors.err" です)。 +":cn" コマンドで次のエラーにジャンプできます。 +詳しくは ":help quickfix" を参照してください。 +.PP +.B Vim +は、起動されたときの実行ファイルの名前によって動作を変えます +(実行ファイルの実体が同じであっても)。 +.TP 10 +vim +"普通" に起動します。標準の状態です。 +.TP +ex +Ex モードで起動します。 +ノーマルモードに切り替えるには ":vi" コマンドを使ってください。 +引数に "\-e" を指定した場合と同じです。 +.TP +view +読み込み専用モードで起動します。ファイルの保存が制限されます。 +引数に "\-R" を指定した場合と同じです。 +.TP +gvim gview +GUI バージョン。 +新しいウィンドウを開いて起動します。 +引数に "\-g" を指定した場合と同じです。 +.TP +evim eview +簡易モードの GUI バージョン。 +新しいウィンドウを開いて起動します。 +引数に "\-y" を指定した場合と同じです。 +.TP +rvim rview rgvim rgview +上記と同じですが、制限モードで起動します。シェルコマンドを実行したり、 +.B Vim +をサスペンドしたりできなくなります。 +引数に "\-Z" を指定した場合と同じです。 +.SH オプション +ファイル名の前でも後ろでも、好きな順番でオプションを指定できます。 +パラメータを必要としない引数は、一つのダッシュにまとめて指定できます。 +.TP 12 ++[num] +一番目のファイルの "num" 行目にカーソルを移動します。 +"num" を省略した場合は、一行目にカーソルが移動します。 +.TP ++/{pat} +一番目のファイルの、最初に {pat} が見つかった行にカーソルが移動します。 +検索パターンについては ":help search\-pattern" を参照してください。 +.TP ++{command} +.TP +\-c {command} +一番目のファイルが読み込まれた後に {command} が実行されます。 +{command} は Ex コマンドとして解釈されます。 +{command} に空白を含める場合は、ダブルクォートで囲んでください (シェルに依存)。 +例: vim "+set si" main.c +.br +Note: "+" と "\-c" は合わせて 10 個まで指定できます。 +.TP +\-S {file} +一番目のファイルが読み込まれた後に {file} が実行されます。 +これは \-c "source {file}" と同じ動作です。 +{file} の先頭が '\-' の場合は使えません。 +{file} が省略された場合は、"Session.vim" が使われます (ただし \-S が最後の引 +数だった場合のみ)。 +.TP +\-\-cmd {command} +"\-c" と同じですが、vimrc を処理する前にコマンドが実行されます。 +これらのコマンドは "\-c" コマンドとは別に、10 個まで指定できます。 +.TP +\-A +アラビア語がサポートされていて、アラビア語キーマップがある場合は、 +アラビア語モードで起動します ('arabic' がオンになります)。 +右横書きのファイルを編集できます。 +サポートされていない場合はエラーメッセージを表示して終了します。 +.TP +\-b +バイナリモード。 +バイナリファイルを編集ためのオプションがいくつか設定されます。 +.TP +\-C +互換モード。'compatible' オプションがオンになります。 + .vimrc ファイルの有無に関わらず、 +.B Vim +の動作が Vi 互換になります。 +.TP +\-d +差分モードで起動します。 +二つか三つの四つのファイルを引数に指定してください。 +指定されたファイルが開かれ、それらのファイルの差分が表示されます。 +vimdiff(1) と同様の動作です。 +.TP +\-d {device} +{device} を端末として開きます。 +Amiga でのみ使います。 +例: +"\-d con:20/30/600/150". +.TP +\-D +デバッグ。スクリプトの最初のコマンドが実行されるところからデバッグモードを開 +始します。 +.TP +\-e +Ex モードで起動します。 +実行ファイルの名前が "ex" の場合と同じです。 +.TP +\-E +改良版 Ex モードで起動します。 +実行ファイルの名前が "exim" の場合と同じです。 +.TP +\-f +フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。 +Amiga の場合は、新しいウィンドウで再起動しなくなります。 +メールソフトなどから +.B Vim +を起動して、編集が終わるまで待機したいような場合に使ってください。 +Amiga では、":sh" と "!" コマンドは機能しなくなります。 +.TP +\-\-nofork +フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。 +.TP +\-F +ペルシア語がサポートされていて、ペルシア語キーマップがある場合は、 +ペルシア語モードで起動します ('fkmap' と 'rightleft' がオンになります)。 +右横書きのファイルを編集できます。 +サポートされていない場合はエラーメッセージを表示して終了します。 +.TP +\-g +GUI がサポートされている場合は、GUI で起動します。 +サポートされていない場合はエラーメッセージを表示して終了します。 +.TP +\-h +コマンドライン引数やオプションのヘルプを表示して終了します。 +.TP +\-H +ヘブライ語がサポートされていて、ヘブライ語キーマップがある場合は、 +ヘブライ語モードで起動します ('hkmap' と 'rightleft' がオンになります)。 +右横書きのファイルを編集できます。 +サポートされていない場合はエラーメッセージを表示して終了します。 +.TP +\-i {viminfo} +viminfo ファイルを使う設定になっている場合は、初期設定の "~/.viminfo" の代わ +りに、指定されたファイルを設定します。 +"NONE" を指定すると、.viminfo ファイルを使わないように設定できます。 +.TP +\-L +\-r と同じです。 +.TP +\-l +lisp モード。 +オプションの 'lisp' と 'showmatch' がオンになります。 +.TP +\-m +ファイルの変更を不可能にします。 +オプション 'write' がオフになります。 +バッファを変更することはできますが、ファイルを保存することはできません。 +.TP +\-M +変更を不可能にします。オプションの 'modifiable' と 'write' がオフになり、 +ファイルの変更と保存ができなくなります。 +Note: それらのオプションを設定すれば変更できるようになります。 +.TP +\-N +非互換モード。'compatible' オプションがオフになります。 + .vimrc ファイルの有無に関わらず、 +.B Vim +の改良された機能が有効になります。Vi との互換性が少し失われます。 +.TP +\-n +スワップファイルを使用しません。 +クラッシュしてもリカバリできなくなります。 +フロッピーディスクのような非常に低速なメディアのファイルを読み書きするときに +便利です。 +":set uc=0" と設定しても同じです。 +戻すには ":set uc=200" と設定してください。 +.TP +\-nb +NetBeans と接続し、エディタサーバーになります。 +詳しくはヘルプを参照してください。 +.TP +\-o[N] +N 個のウィンドウを水平分割で開きます。 +N を省略した場合は、引数のファイルを個別のウィンドウで開きます。 +.TP +\-O[N] +N 個のウィンドウを垂直分割で開きます。 +N を省略した場合は、引数のファイルを個別のウィンドウで開きます。 +.TP +\-p[N] +N 個のタブページを開きます。 +N を省略した場合は、引数のファイルを個別のタブページで開きます。 +.TP +\-R +読み込み専用モード。 +オプション 'readonly' がオンになります。 +バッファを変更することはできますが、間違ってファイルを上書きしてしまうのを防 +ぐことができます。 +ファイルを保存したい場合は、":w!" のように、Ex コマンドに感嘆符を付けてくだ +さい。 +\-R オプションは \-n オプションの効果も含んでいます (下記参照)。 +オプション 'readonly' は ":set noro" でオフにできます。 +詳しくは ":help 'readonly'" を参照してください。 +.TP +\-r +スワップファイルの一覧を表示します。リカバリに関する情報も表示されます。 +.TP +\-r {file} +リカバリモード。 +スワップファイルを使って、クラッシュした編集セッションを復活させます。 +スワップファイルは、ファイル名に ".swp" を加えた名前のファイルです。 +詳しくは ":help recovery" を参照してください。 +.TP +\-s +サイレントモード。"ex" という名前で起動するか、"\-e" オプションの後で +"\-s" オプションが指定された場合のみ。 +.TP +\-s {scriptin} +{scriptin} をスクリプトファイルとして読み込まれます。 +ファイル中の文字列は、手で入力したときと同じように処理されます。 +これは ":source! {scriptin}" と同じ動作です。 +エディタが終了する前にファイルの終わりまで読み込んだ場合、 +それ以降はキーボードから入力を読み込みます。 +.TP +\-T {terminal} +端末の名前を指定します。 +端末が自動的に認識されない場合に使ってください。 +Vim が組み込みでサポートしている名前か、 +termcap または terminfo ファイルで定義されている名前を指定してください。 +.TP +\-u {vimrc} +{vimrc} ファイルを使って初期化します。 +他の初期化処理はスキップされます。 +特殊なファイルを編集する場合などに使ってください。 +すべての初期化をスキップするには "NONE" を指定してください。 +詳しくは ":help initialization" を参照してください。 +.TP +\-U {gvimrc} +{gvimrc} ファイルを使って GUI を初期化します。 +他の GUI の初期化はスキップされます。 +すべての GUI の初期化をスキップするには "NONE" を指定してください。 +詳しくは ":help gui\-init" を参照してください。 +.TP +\-V[N] +冗長モード。スクリプトファイルを実行したり viminfo ファイルを読み書きするた +びにメッセージを表示します。N に指定した数値が 'verbose' に設定されます。 +省略した場合は 10 になります。 +.TP +\-v +Vi モードで起動します。 +実行ファイルの名前が "vi" の場合と同じです。 +実行ファイルの名前が "ex" の場合だけ効果があります。 +.TP +\-w {scriptout} +入力した文字を {scriptout} に記録します。 +"vim \-s" や "source!" で実行するためのスクリプトファイルを作成するのに便利 +です。 +{scriptout} ファイルがすでに存在した場合は追加保存されます。 +.TP +\-W {scriptout} +\-w と同じですが、ファイルがすでに存在した場合は上書きされます。 +.TP +\-x +ファイルを暗号化して書き込みます。暗号化キーの入力プロンプトが表示されます。 +.TP +\-X +X サーバーと通信しません。端末での起動時間を短くできます。 +しかし、ウィンドウタイトルの変更やクリップボードは使えなくなります。 +.TP +\-y +簡易モードで起動します。 +実行ファイルの名前が "evim" や "eview" の場合と同じです。 +.B Vim +の動作がモードレスエディタ (click-and-type editor) のようになります。 +.TP +\-Z +制限モード。 +実行ファイルの名前が "r" で始まっている場合と同じです。 +.TP +\-\- +オプション指定の末尾を示す記号です。 +これ以降の引数はすべてファイル名として扱われます。 +ファイル名が '\-' で始まっているファイルを開くときに使ってください。 +.TP +\-\-echo\-wid +GTK GUI のみ: Window ID を標準出力に出力します。 +.TP +\-\-help +ヘルプを表示して終了します。"\-h" と同じです。 +.TP +\-\-literal +引数のファイル名をリテラル文字列として扱います。ワイルドカードを展開しませ +ん。Unix のように、シェルがワイルドカードを展開する場合は機能しません。 +.TP +\-\-noplugin +プラグインをロードしません。\-u NONE はこの動作を含んでいます。 +.TP +\-\-remote +Vim サーバーと通信し、引数に指定されたファイルを Vim サーバーで開きます。 +サーバーが存在しない場合は、エラーメッセージを表示され、起動中の Vim でファ +イルが開かれます。 +.TP +\-\-remote\-expr {expr} +Vim サーバーと通信し、{expr} に与えられた式を Vim サーバーで実行し、結果を標 +準出力に出力します。 +.TP +\-\-remote\-send {keys} +Vim サーバーと通信し、{keys} に与えられたキーを Vim サーバーに送信します。 +.TP +\-\-remote\-silent +\-\-remote と同じですが、サーバーが存在しなくてもエラーメッセージを表示しま +せん。 +.TP +\-\-remote\-wait +\-\-remote と同じですが、ファイルが開かれるのを確認できるまで待機します。 +.TP +\-\-remote\-wait\-silent +\-\-remote\-wait と同じですが、サーバーが存在しなくてもエラーメッセージを表 +示しません。 +.TP +\-\-serverlist +Vim サーバーの一覧を表示します。 +.TP +\-\-servername {name} +サーバーの名前を {name} に設定します。\-\-remote 引数を指定しなかった場合 +は、起動中の Vim の名前として使われるので、後からその名前を使ってサーバー通 +信できます。 +.TP +\-\-socketid {id} +GTK GUI のみ: GtkPlug メカニズムを使って gvim を別のウィンドウの中で実行しま +す。 +.TP +\-\-version +バージョン情報を表示して終了します。 +.SH オンラインヘルプ +ヘルプを開くには、 +.B Vim +の中で ":help" と入力してください。 +":help 調べたい項目" と入力すれば、指定した項目のヘルプが表示されます。 +例: "ZZ" コマンドのヘルプを表示するには ":help ZZ" と入力します。 +<Tab> や CTRL\-D を使って補完することもできます +(":help cmdline\-completion" 参照)。 +ヘルプには、項目から項目へジャンプできるようにタグが埋め込まれています +(ハイパーリンクのようなものです。":help" 参照)。 +すべてのヘルプファイルはこの方法で開くことができます。 +例: ":help syntax.txt"。 +.SH ファイル +.TP 15 +/usr/local/lib/vim/doc/*.txt +.B Vim +のヘルプファイル。 +ファイルの一覧は ":help doc\-file\-list" に記載されています。 +.TP +/usr/local/lib/vim/doc/tags +ヘルプを検索するための tags ファイル。 +.TP +/usr/local/lib/vim/syntax/syntax.vim +システムの構文定義初期化ファイル。 +.TP +/usr/local/lib/vim/syntax/*.vim +いろいろな言語用の構文定義ファイル。 +.TP +/usr/local/lib/vim/vimrc +システムの +.B Vim +初期化ファイル。 +.TP +~/.vimrc +ユーザーの +.B Vim +初期化ファイル。 +.TP +/usr/local/lib/vim/gvimrc +システムの gvim 初期化ファイル。 +.TP +~/.gvimrc +ユーザーの gvim 初期化ファイル。 +.TP +/usr/local/lib/vim/optwin.vim +":options" コマンドで使われるファイル。オプションを表示したり設定したりでき +ます。 +.TP +/usr/local/lib/vim/menu.vim +システムのメニュー初期化ファイル。gvim で使います。 +.TP +/usr/local/lib/vim/bugreport.vim +バグレポートを生成するスクリプト。":help bugs" 参照。 +.TP +/usr/local/lib/vim/filetype.vim +ファイル名からファイルタイプを判定するスクリプト。":help 'filetype'" 参照。 +.TP +/usr/local/lib/vim/scripts.vim +ファイルの内容からファイルタイプを判定するスクリプト。":help 'filetype'" 参照。 +.TP +/usr/local/lib/vim/print/*.ps +PostScript 印刷に使われるファイル。 +.PP +最新の情報は VIM のホームページを参照してください: +.br +<URL:http://www.vim.org/> +.SH 関連項目 +vimtutor(1) +.SH 著者 +.B Vim +のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 +":help credits" を参照してください。 +.br +.B Vim +は Stevie を基にしています。Stevie は Tim Thompson、Tony Andrews、 +G.R. (Fred) Walter によって開発されました。 +ただし、オリジナルのコードはもうほとんど残っていません。 +.SH バグ +既知のバグは ":help todo" に記載されています。 +.PP +Vi の動作を忠実に再現した結果、多くの人がバグだと思うような機能もいくつかあ +ります。 +"この動作は Vi と違う" からバグだと思った場合は、vi_diff.txtを確認してみてく +ださい (ファイルを開くか、Vim から ":help vi_diff.txt" と入力)。 +オプションの 'compatible' と 'cpoptions' も確認してください。 diff --git a/share/vim/vim73/doc/vim-pl.1 b/share/vim/vim74/doc/vim-pl.1 similarity index 100% rename from share/vim/vim73/doc/vim-pl.1 rename to share/vim/vim74/doc/vim-pl.1 diff --git a/share/vim/vim73/doc/vim-pl.UTF-8.1 b/share/vim/vim74/doc/vim-pl.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/vim-pl.UTF-8.1 rename to share/vim/vim74/doc/vim-pl.UTF-8.1 diff --git a/share/vim/vim73/doc/vim-ru.1 b/share/vim/vim74/doc/vim-ru.1 similarity index 100% rename from share/vim/vim73/doc/vim-ru.1 rename to share/vim/vim74/doc/vim-ru.1 diff --git a/share/vim/vim73/doc/vim-ru.UTF-8.1 b/share/vim/vim74/doc/vim-ru.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/vim-ru.UTF-8.1 rename to share/vim/vim74/doc/vim-ru.UTF-8.1 diff --git a/share/vim/vim73/doc/vim.1 b/share/vim/vim74/doc/vim.1 similarity index 100% rename from share/vim/vim73/doc/vim.1 rename to share/vim/vim74/doc/vim.1 diff --git a/share/vim/vim73/doc/vim.man b/share/vim/vim74/doc/vim.man similarity index 100% rename from share/vim/vim73/doc/vim.man rename to share/vim/vim74/doc/vim.man diff --git a/share/vim/vim73/doc/vim.man.info b/share/vim/vim74/doc/vim.man.info similarity index 100% rename from share/vim/vim73/doc/vim.man.info rename to share/vim/vim74/doc/vim.man.info diff --git a/share/vim/vim74/doc/vim2html.pl b/share/vim/vim74/doc/vim2html.pl new file mode 100644 index 00000000..9066b03b --- /dev/null +++ b/share/vim/vim74/doc/vim2html.pl @@ -0,0 +1,228 @@ +#!/usr/bin/env perl + +# converts vim documentation to simple html +# Sirtaj Singh Kang (taj@kde.org) + +# Sun Feb 24 14:49:17 CET 2002 + +use strict; +use vars qw/%url $date/; + +%url = (); +$date = `date`; +chop $date; + +sub maplink +{ + my $tag = shift; + if( exists $url{ $tag } ){ + return $url{ $tag }; + } else { + #warn "Unknown hyperlink target: $tag\n"; + $tag =~ s/\.txt//; + $tag =~ s/</</g; + $tag =~ s/>/>/g; + return "<code class=\"badlink\">$tag</code>"; + } +} + +sub readTagFile +{ + my($tagfile) = @_; + my( $tag, $file, $name ); + + open(TAGS,"$tagfile") || die "can't read tags\n"; + + while( <TAGS> ) { + next unless /^(\S+)\s+(\S+)\s+/; + + $tag = $1; + my $label = $tag; + ($file= $2) =~ s/.txt$/.html/g; + $label =~ s/\.txt//; + + $url{ $tag } = "<a href=\"$file#".escurl($tag)."\">".esctext($label)."</a>"; + } + close( TAGS ); +} + +sub esctext +{ + my $text = shift; + $text =~ s/&/&/g; + $text =~ s/</</g; + $text =~ s/>/>/g; + return $text; +} + +sub escurl +{ + my $url = shift; + $url =~ s/"/%22/g; + $url =~ s/~/%7E/g; + $url =~ s/</%3C/g; + $url =~ s/>/%3E/g; + $url =~ s/=/%20/g; + $url =~ s/#/%23/g; + $url =~ s/\//%2F/g; + + return $url; +} + +sub vim2html +{ + my( $infile ) = @_; + my( $outfile ); + + open(IN, "$infile" ) || die "Couldn't read from $infile: $!.\n"; + + ($outfile = $infile) =~ s:.*/::g; + $outfile =~ s/\.txt$//g; + + open( OUT, ">$outfile.html" ) + || die "Couldn't write to $outfile.html: $!.\n"; + my $head = uc( $outfile ); + + print OUT<<EOF; +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<title>VIM: $outfile + + + +

$head

+
+EOF
+
+	my $inexample = 0;
+	while(  ) {
+		chop;
+		if ( /^\s*[-=]+\s*$/ ) {
+			print OUT "

";
+			next;
+		}
+
+		# examples
+		elsif( /^>$/ || /\s>$/ ) {
+			$inexample = 1;
+			chop;
+		}
+		elsif ( $inexample && /^([<\S])/ ) {
+			$inexample = 0;
+			$_ = $' if $1 eq "<";
+		}
+
+		s/\s+$//g;
+
+		# Various vim highlights. note that < and > have already been escaped
+		# so that HTML doesn't get screwed up.
+
+		my @out = ();
+		#		print "Text: $_\n";
+		LOOP:
+		foreach my $token ( split /((?:\|[^\|]+\|)|(?:\*[^\*]+\*))/ ) {
+			if ( $token =~ /^\|([^\|]+)\|/ ) {
+				# link
+				push( @out, "|".maplink( $1 )."|" );
+				next LOOP;
+			}
+			elsif ( $token =~ /^\*([^\*]+)\*/ ) {
+				# target
+				push( @out,
+					"\*".esctext($1)."<\/a>\*<\/b>");
+				next LOOP;
+			}
+
+			$_ = esctext($token);
+			s/CTRL-(\w+)/CTRL-$1<\/code>/g;
+			# parameter <...>
+			s/<(.*?)>/<$1><\/code>/g;
+
+			# parameter {...}
+			s/\{([^}]*)\}/{$1}<\/code>/g;
+
+			# parameter [...]
+			s/\[(range|line|count|offset|cmd|[-+]?num)\]/\[$1\]<\/code>/g;
+			# note
+			s/(Note:?)/$1<\/code>/gi;
+
+			# local heading
+			s/^(.*)\~$/$1<\/code>/g;
+			push( @out, $_ );
+		}
+
+		$_ = join( "", @out );
+
+		if( $inexample == 2 ) {
+			print OUT "$_\n";
+		} else {
+			print OUT $_,"\n";
+		}
+
+		$inexample = 2 if $inexample == 1;
+	}
+	print OUT<
+

Generated by vim2html on $date

+ + +EOF + +} + +sub usage +{ +die< +EOF +} + + +sub writeCSS +{ + open( CSS, ">vim-stylesheet.css" ) || die "Couldn't write stylesheet: $!\n"; + print CSS< 2005-03-12. +Mise à jour 2012-05-06, Dominique Pellé diff --git a/share/vim/vim74/doc/vimdiff-fr.UTF-8.1 b/share/vim/vim74/doc/vimdiff-fr.UTF-8.1 new file mode 100644 index 00000000..3b44a3dd --- /dev/null +++ b/share/vim/vim74/doc/vimdiff-fr.UTF-8.1 @@ -0,0 +1,54 @@ +.TH VIMDIFF 1 "30 mars 2001" +.SH NOM +vimdiff \- ouvre deux, trois ou quatre versions d'un fichier dans Vim et +affiche leurs différences +.SH SYNOPSIS +.br +.B vimdiff +[options] fichier1 fichier2 [fichier3 [fichier4]] +.PP +.B gvimdiff +.SH DESCRIPTION +.B Vimdiff +démarre +.B Vim +avec deux (ou trois ou quatre) fichiers. +Chaque fichier est ouvert dans sa propre fenêtre. +Les différences entre ces fichiers sont mises en surbrillance. +C'est un outil très pratique pour visualiser et reporter les +changements entre deux versions d'un même fichier. +.PP +Consulter vim(1) pour des informations sur l'éditeur Vim lui-même. +.PP +Si +.B gvimdiff +est invoqué, l'IHM graphique est démarrée quand elle est disponible. +.PP +L'option 'diff' est activée dans chacune des fenêtres, ce qui provoque la mise +en surbrillance des différences. +.br +Les options 'wrap' et 'scrollbind' sont activées pour donner un aspect +agréable au texte. +.br +L'option 'foldmethod' est fixée à "diff", ce qui replie les lignes consécutives +identiques. 'foldcolumn' est fixé à 2 pour trouver les replis rapidement et +les ouvrir ou les fermer facilement. +.SH ARGUMENTS +La fenêtre de Vim est partagée verticalement afin d'afficher les lignes +correspondantes les unes en face des autres, comme si l'argument "\-O" était +spécifié. Utilisez l'argument "\-o" pour obtenir un partage horizontal à la +place. +.PP +Pour connaître les autres arguments disponibles, consultez vim(1). +.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 ":help credits" dans +.B Vim. +.SH TRADUCTION +Cette page de manuel a été traduite par David Blanchet + 2005-03-12. +Mise à jour 2012-05-06, Dominique Pellé diff --git a/share/vim/vim73/doc/vimdiff-it.1 b/share/vim/vim74/doc/vimdiff-it.1 similarity index 100% rename from share/vim/vim73/doc/vimdiff-it.1 rename to share/vim/vim74/doc/vimdiff-it.1 diff --git a/share/vim/vim73/doc/vimdiff-it.UTF-8.1 b/share/vim/vim74/doc/vimdiff-it.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/vimdiff-it.UTF-8.1 rename to share/vim/vim74/doc/vimdiff-it.UTF-8.1 diff --git a/share/vim/vim74/doc/vimdiff-ja.UTF-8.1 b/share/vim/vim74/doc/vimdiff-ja.UTF-8.1 new file mode 100644 index 00000000..56fadfef --- /dev/null +++ b/share/vim/vim74/doc/vimdiff-ja.UTF-8.1 @@ -0,0 +1,44 @@ +.TH VIMDIFF 1 "2001 March 30" +.SH 名前 +vimdiff \- 二つか三つか四つのファイルを Vim で開いて、その差分を表示する +.SH 書式 +.br +.B vimdiff +[options] file1 file2 [file3 [file4]] +.PP +.B gvimdiff +.SH 説明 +.B Vimdiff +は、二つ (か三つか四つ) のファイルを +.B Vim +で開きます。 +ファイルは個別のウィンドウで開かれ、差分が強調表示されます。 +同じファイルの別のバージョン間で、変更を確認したり、変更を移動したりするのが +簡単になります。 +.PP +Vim についての詳細は vim(1) を参照してください。 +.PP +.B gvimdiff +という名前で起動された場合は GUI で起動します。 +.PP +差分を強調表示するために、 +それぞれのウィンドウの 'diff' オプションがオンに設定されます。 +.br +テキストを見やすくするために、オプションの 'wrap' と 'scrollbind' もオンに設 +定されます。 +.br + 'foldmethod' オプションは "diff" に設定され、変更されていない行は折り畳まれ +ます。 +折り畳みの確認と開閉が簡単にできるように、'foldcolumn' は 2 に設定されます。 +.SH オプション +行を並べて表示するために、"\-O" 引数を使ったときのように、ウィンドウは垂直分 +割されます。 +ウィンドウを水平分割したい場合は "\-o" 引数を使ってください。 +.PP +その他の引数については vim(1) を参照してください。 +.SH 関連項目 +vim(1) +.SH 著者 +.B Vim +のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 +":help credits" を参照してください。 diff --git a/share/vim/vim73/doc/vimdiff-pl.1 b/share/vim/vim74/doc/vimdiff-pl.1 similarity index 100% rename from share/vim/vim73/doc/vimdiff-pl.1 rename to share/vim/vim74/doc/vimdiff-pl.1 diff --git a/share/vim/vim73/doc/vimdiff-pl.UTF-8.1 b/share/vim/vim74/doc/vimdiff-pl.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/vimdiff-pl.UTF-8.1 rename to share/vim/vim74/doc/vimdiff-pl.UTF-8.1 diff --git a/share/vim/vim73/doc/vimdiff-ru.1 b/share/vim/vim74/doc/vimdiff-ru.1 similarity index 100% rename from share/vim/vim73/doc/vimdiff-ru.1 rename to share/vim/vim74/doc/vimdiff-ru.1 diff --git a/share/vim/vim73/doc/vimdiff-ru.UTF-8.1 b/share/vim/vim74/doc/vimdiff-ru.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/vimdiff-ru.UTF-8.1 rename to share/vim/vim74/doc/vimdiff-ru.UTF-8.1 diff --git a/share/vim/vim73/doc/vimdiff.1 b/share/vim/vim74/doc/vimdiff.1 similarity index 100% rename from share/vim/vim73/doc/vimdiff.1 rename to share/vim/vim74/doc/vimdiff.1 diff --git a/share/vim/vim73/doc/vimdiff.man b/share/vim/vim74/doc/vimdiff.man similarity index 100% rename from share/vim/vim73/doc/vimdiff.man rename to share/vim/vim74/doc/vimdiff.man diff --git a/share/vim/vim74/doc/vimtutor-fr.1 b/share/vim/vim74/doc/vimtutor-fr.1 new file mode 100644 index 00000000..06e03fbe --- /dev/null +++ b/share/vim/vim74/doc/vimtutor-fr.1 @@ -0,0 +1,60 @@ +.TH VIMTUTOR 1 "2 avril 2001" +.SH NAME +vimtutor \- tutoriel Vim +.SH SYNOPSIS +.br +.B vimtutor [\-g] [langue] +.SH DESCRIPTION +.B Vimtutor +lance le tutoriel +.B Vim +\. +Il copie d'abord le fichier du tutoriel, afin que vous puissiez le modifier +sans altérer le fichier original. +.PP +.B Vimtutor +est utile pour les personnes souhaitant apprendre leurs premières commandes +.B Vim +\. +.PP +L'argument optionnel \-g lance vimtutor avec gvim plutôt qu'avec vim, si l'IHM +graphique de vim est disponible, ou le lance avec vim si gvim n'est pas +disponible. +.PP +L'argument optionnel [langue] est le nom d'une langue, spécifiée par son +symbole à deux lettres, tels que "it" ou "es". Si l'argument [langue] est omis, +la langue de la région linguistique actuelle sera retenue. Si le tutoriel est +disponible dans cette langue, il est proposé. Sinon, c'est la version anglaise +qui est proposée. +.PP +.B Vim +est toujours lancé en mode Compatible Vi. +.SH FICHIERS +.TP 15 +/usr/local/lib/vim/tutor/tutor[.langue] +Les fichiers textes de +.B Vimtutor +\. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Le script Vim utilisé pour copier les fichiers texte de +.B Vimtutor +\. +.SH AUTEUR +.B Vimtutor +a été écrit à l'origine pour Vi par Michael C. Pierce et Robert K. Ware, de la +Colorado School of Mines, en reprenant des idées émises par Charles Smith, de +la Colorado State University. +E-mail : bware@mines.colorado.edu. +.br +Il a été modifié pour +.B Vim +par Bram Moolenaar. +Pour connaître le nom des traducteurs, consultez les fichiers textes du +tutoriel. +.SH VOIR AUSSI +vim(1) +.SH TRADUCTION +Cette page de manuel a été traduite par David Blanchet + 2004-12-27. +Mise à jour 2012-05-06, Dominique Pellé diff --git a/share/vim/vim74/doc/vimtutor-fr.UTF-8.1 b/share/vim/vim74/doc/vimtutor-fr.UTF-8.1 new file mode 100644 index 00000000..f47f840e --- /dev/null +++ b/share/vim/vim74/doc/vimtutor-fr.UTF-8.1 @@ -0,0 +1,60 @@ +.TH VIMTUTOR 1 "2 avril 2001" +.SH NAME +vimtutor \- tutoriel Vim +.SH SYNOPSIS +.br +.B vimtutor [\-g] [langue] +.SH DESCRIPTION +.B Vimtutor +lance le tutoriel +.B Vim +\. +Il copie d'abord le fichier du tutoriel, afin que vous puissiez le modifier +sans altérer le fichier original. +.PP +.B Vimtutor +est utile pour les personnes souhaitant apprendre leurs premières commandes +.B Vim +\. +.PP +L'argument optionnel \-g lance vimtutor avec gvim plutôt qu'avec vim, si l'IHM +graphique de vim est disponible, ou le lance avec vim si gvim n'est pas +disponible. +.PP +L'argument optionnel [langue] est le nom d'une langue, spécifiée par son +symbole à deux lettres, tels que "it" ou "es". Si l'argument [langue] est omis, +la langue de la région linguistique actuelle sera retenue. Si le tutoriel est +disponible dans cette langue, il est proposé. Sinon, c'est la version anglaise +qui est proposée. +.PP +.B Vim +est toujours lancé en mode Compatible Vi. +.SH FICHIERS +.TP 15 +/usr/local/lib/vim/tutor/tutor[.langue] +Les fichiers textes de +.B Vimtutor +\. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Le script Vim utilisé pour copier les fichiers texte de +.B Vimtutor +\. +.SH AUTEUR +.B Vimtutor +a été écrit à l'origine pour Vi par Michael C. Pierce et Robert K. Ware, de la +Colorado School of Mines, en reprenant des idées émises par Charles Smith, de +la Colorado State University. +E-mail : bware@mines.colorado.edu. +.br +Il a été modifié pour +.B Vim +par Bram Moolenaar. +Pour connaître le nom des traducteurs, consultez les fichiers textes du +tutoriel. +.SH VOIR AUSSI +vim(1) +.SH TRADUCTION +Cette page de manuel a été traduite par David Blanchet + 2004-12-27. +Mise à jour 2012-05-06, Dominique Pellé diff --git a/share/vim/vim73/doc/vimtutor-it.1 b/share/vim/vim74/doc/vimtutor-it.1 similarity index 100% rename from share/vim/vim73/doc/vimtutor-it.1 rename to share/vim/vim74/doc/vimtutor-it.1 diff --git a/share/vim/vim73/doc/vimtutor-it.UTF-8.1 b/share/vim/vim74/doc/vimtutor-it.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/vimtutor-it.UTF-8.1 rename to share/vim/vim74/doc/vimtutor-it.UTF-8.1 diff --git a/share/vim/vim74/doc/vimtutor-ja.UTF-8.1 b/share/vim/vim74/doc/vimtutor-ja.UTF-8.1 new file mode 100644 index 00000000..29b9b48f --- /dev/null +++ b/share/vim/vim74/doc/vimtutor-ja.UTF-8.1 @@ -0,0 +1,45 @@ +.TH VIMTUTOR 1 "2001 April 2" +.SH 名前 +vimtutor \- Vim チュートリアル +.SH 書式 +.br +.B vimtutor [\-g] [language] +.SH 説明 +.B Vim +のチュートリアルを起動します。 +演習ファイルのコピーを使って実施するので、オリジナルの演習ファイルを壊してし +まう心配はありません。 +.PP +.B Vim +を初めて学ぶ人向けのチュートリアルです。 +.PP +引数に \-g を指定すると GUI 版の vim が利用可能であれば vim ではなく gvim を +使って vimtutor が開始します。gvim が見つからないときは Vim が使用されます。 +.PP +[language] 引数は "ja" や "es" などの二文字の言語名です。 +[language] 引数を省略した場合はロケールの言語が使われます。 +翻訳された演習ファイルがある場合は、そのファイルが使われます。 +ない場合は英語のファイルが使われます。 +.PP +.B Vim +は Vi 互換モードで起動されます。 +.SH ファイル +.TP 15 +/usr/local/lib/vim/tutor/tutor[.language] +.B Vimtutor +の演習ファイル。 +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +演習ファイルをコピーするための Vim スクリプト。 +.SH 著者 +.B Vimtutor +は、Colorado State University の Charles Smith のアイデアを基に、 +Colorado School of Mines の Michael C. Pierce と Robert K. Ware の両名 +によって Vi 向けに作成されたものを基にしています。 +E-mail: bware@mines.colorado.edu. +.br +.B Vim +に合わせて Bram Moolenaar が変更を加えました。 +翻訳者の名前は演習ファイルを参照してください。 +.SH 関連項目 +vim(1) diff --git a/share/vim/vim73/doc/vimtutor-pl.1 b/share/vim/vim74/doc/vimtutor-pl.1 similarity index 100% rename from share/vim/vim73/doc/vimtutor-pl.1 rename to share/vim/vim74/doc/vimtutor-pl.1 diff --git a/share/vim/vim73/doc/vimtutor-pl.UTF-8.1 b/share/vim/vim74/doc/vimtutor-pl.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/vimtutor-pl.UTF-8.1 rename to share/vim/vim74/doc/vimtutor-pl.UTF-8.1 diff --git a/share/vim/vim73/doc/vimtutor-ru.1 b/share/vim/vim74/doc/vimtutor-ru.1 similarity index 100% rename from share/vim/vim73/doc/vimtutor-ru.1 rename to share/vim/vim74/doc/vimtutor-ru.1 diff --git a/share/vim/vim73/doc/vimtutor-ru.UTF-8.1 b/share/vim/vim74/doc/vimtutor-ru.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/vimtutor-ru.UTF-8.1 rename to share/vim/vim74/doc/vimtutor-ru.UTF-8.1 diff --git a/share/vim/vim73/doc/vimtutor.1 b/share/vim/vim74/doc/vimtutor.1 similarity index 100% rename from share/vim/vim73/doc/vimtutor.1 rename to share/vim/vim74/doc/vimtutor.1 diff --git a/share/vim/vim73/doc/vimtutor.man b/share/vim/vim74/doc/vimtutor.man similarity index 100% rename from share/vim/vim73/doc/vimtutor.man rename to share/vim/vim74/doc/vimtutor.man diff --git a/share/vim/vim74/doc/visual.txt b/share/vim/vim74/doc/visual.txt new file mode 100644 index 00000000..cabf5f7e --- /dev/null +++ b/share/vim/vim74/doc/visual.txt @@ -0,0 +1,536 @@ +*visual.txt* For Vim version 7.4. Last change: 2012 Aug 15 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Visual mode *Visual* *Visual-mode* *visual-mode* + +Visual mode is a flexible and easy way to select a piece of text for an +operator. It is the only way to select a block of text. + +This is introduced in section |04.4| of the user manual. + +1. Using Visual mode |visual-use| +2. Starting and stopping Visual mode |visual-start| +3. Changing the Visual area |visual-change| +4. Operating on the Visual area |visual-operators| +5. Blockwise operators |blockwise-operators| +6. Repeating |visual-repeat| +7. Examples |visual-examples| +8. Select mode |Select-mode| + +{Vi has no Visual mode, the name "visual" is used for Normal mode, to +distinguish it from Ex mode} +{not available when the |+visual| feature was disabled when compiling} + +============================================================================== +1. Using Visual mode *visual-use* + +Using Visual mode consists of three parts: +1. Mark the start of the text with "v", "V" or CTRL-V. + The character under the cursor will be used as the start. +2. Move to the end of the text. + The text from the start of the Visual mode up to and including the + character under the cursor is highlighted. +3. Type an operator command. + The highlighted characters will be operated upon. + +The 'highlight' option can be used to set the display mode to use for +highlighting in Visual mode. +The 'virtualedit' option can be used to allow positioning the cursor to +positions where there is no actual character. + +The highlighted text normally includes the character under the cursor. +However, when the 'selection' option is set to "exclusive" and the cursor is +after the Visual area, the character under the cursor is not included. + +With "v" the text before the start position and after the end position will +not be highlighted. However, all uppercase and non-alpha operators, except +"~" and "U", will work on whole lines anyway. See the list of operators +below. + + *visual-block* +With CTRL-V (blockwise Visual mode) the highlighted text will be a rectangle +between start position and the cursor. However, some operators work on whole +lines anyway (see the list below). The change and substitute operators will +delete the highlighted text and then start insertion at the top left +position. + +============================================================================== +2. Starting and stopping Visual mode *visual-start* + + *v* *characterwise-visual* +[count]v Start Visual mode per character. + With [count] select the same number of characters or + lines as used for the last Visual operation, but at + the current cursor position, multiplied by [count]. + When the previous Visual operation was on a block both + the width and height of the block are multiplied by + [count]. + When there was no previous Visual operation [count] + characters are selected. This is like moving the + cursor right N * [count] characters. One less when + 'selection' is not "exclusive". + + *V* *linewise-visual* +[count]V Start Visual mode linewise. + With [count] select that many lines. + + *CTRL-V* *blockwise-visual* +[count]CTRL-V Start Visual mode blockwise. Note: Under Windows + CTRL-V could be mapped to paste text, it doesn't work + to start Visual mode then, see |CTRL-V-alternative|. + [count] is used as with `v` above. + +If you use , click the left mouse button or use any command that +does a jump to another buffer while in Visual mode, the highlighting stops +and no text is affected. Also when you hit "v" in characterwise Visual mode, +"CTRL-V" in blockwise Visual mode or "V" in linewise Visual mode. If you hit +CTRL-Z the highlighting stops and the editor is suspended or a new shell is +started |CTRL-Z|. + + new mode after typing: *v_v* *v_CTRL-V* *v_V* +old mode "v" "CTRL-V" "V" ~ + +Normal Visual blockwise Visual linewise Visual +Visual Normal blockwise Visual linewise Visual +blockwise Visual Visual Normal linewise Visual +linewise Visual Visual blockwise Visual Normal + + *gv* *v_gv* *reselect-Visual* +gv Start Visual mode with the same area as the previous + area and the same mode. + In Visual mode the current and the previous Visual + area are exchanged. + After using "p" or "P" in Visual mode the text that + was put will be selected. + + *gn* *v_gn* +gn Search forward for the last used search pattern, like + with `n`, and start Visual mode to select the match. + If the cursor is on the match, visually selects it. + If an operator is pending, operates on the match. + E.g., "dgn" deletes the text of the next match. + If Visual mode is active, extends the selection + until the end of the next match. + + *gN* *v_gN* +gN Like |gn| but searches backward, like with `N`. + + ** + Set the current cursor position. If Visual mode is + active it is stopped. Only when 'mouse' option is + contains 'n' or 'a'. If the position is within 'so' + lines from the last line on the screen the text is + scrolled up. If the position is within 'so' lines from + the first line on the screen the text is scrolled + down. + + ** + Start Visual mode if it is not active. The text from + the cursor position to the position of the click is + highlighted. If Visual mode was already active move + the start or end of the highlighted text, which ever + is closest, to the position of the click. Only when + 'mouse' option contains 'n' or 'a'. + + Note: when 'mousemodel' is set to "popup", + has to be used instead of . + + ** + This works like a , if it is not at + the same position as . In an older version + of xterm you won't see the selected area until the + button is released, unless there is access to the + display where the xterm is running (via the DISPLAY + environment variable or the -display argument). Only + when 'mouse' option contains 'n' or 'a'. + +If Visual mode is not active and the "v", "V" or CTRL-V is preceded with a +count, the size of the previously highlighted area is used for a start. You +can then move the end of the highlighted area and give an operator. The type +of the old area is used (character, line or blockwise). +- Linewise Visual mode: The number of lines is multiplied with the count. +- Blockwise Visual mode: The number of lines and columns is multiplied with + the count. +- Normal Visual mode within one line: The number of characters is multiplied + with the count. +- Normal Visual mode with several lines: The number of lines is multiplied + with the count, in the last line the same number of characters is used as + in the last line in the previously highlighted area. +The start of the text is the Cursor position. If the "$" command was used as +one of the last commands to extend the highlighted text, the area will be +extended to the rightmost column of the longest line. + +If you want to highlight exactly the same area as the last time, you can use +"gv" |gv| |v_gv|. + + *v_* + In Visual mode: Stop Visual mode. + + *v_CTRL-C* +CTRL-C In Visual mode: Stop Visual mode. When insert mode is + pending (the mode message shows + "-- (insert) VISUAL --"), it is also stopped. + +============================================================================== +3. Changing the Visual area *visual-change* + + *v_o* +o Go to Other end of highlighted text: The current + cursor position becomes the start of the highlighted + text and the cursor is moved to the other end of the + highlighted text. The highlighted area remains the + same. + + *v_O* +O Go to Other end of highlighted text. This is like + "o", but in Visual block mode the cursor moves to the + other corner in the same line. When the corner is at + a character that occupies more than one position on + the screen (e.g., a ), the highlighted text may + change. + + *v_$* +When the "$" command is used with blockwise Visual mode, the right end of the +highlighted text will be determined by the longest highlighted line. This +stops when a motion command is used that does not move straight up or down. + +For moving the end of the block many commands can be used, but you cannot +use Ex commands, commands that make changes or abandon the file. Commands +(starting with) ".", "&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I +and CTRL-O cause a beep and Visual mode continues. + +When switching to another window on the same buffer, the cursor position in +that window is adjusted, so that the same Visual area is still selected. This +is especially useful to view the start of the Visual area in one window, and +the end in another. You can then use (or when +'mousemodel' is "popup") to drag either end of the Visual area. + +============================================================================== +4. Operating on the Visual area *visual-operators* + +The operators that can be used are: + ~ switch case |v_~| + d delete |v_d| + c change (4) |v_c| + y yank |v_y| + > shift right (4) |v_>| + < shift left (4) |v_<| + ! filter through external command (1) |v_!| + = filter through 'equalprg' option command (1) |v_=| + gq format lines to 'textwidth' length (1) |v_gq| + +The objects that can be used are: + aw a word (with white space) |v_aw| + iw inner word |v_iw| + aW a WORD (with white space) |v_aW| + iW inner WORD |v_iW| + as a sentence (with white space) |v_as| + is inner sentence |v_is| + ap a paragraph (with white space) |v_ap| + ip inner paragraph |v_ip| + ab a () block (with parenthesis) |v_ab| + ib inner () block |v_ib| + aB a {} block (with braces) |v_aB| + iB inner {} block |v_iB| + at a block (with tags) |v_at| + it inner block |v_it| + a< a <> block (with <>) |v_a<| + i< inner <> block |v_i<| + a[ a [] block (with []) |v_a[| + i[ inner [] block |v_i[| + a" a double quoted string (with quotes) |v_aquote| + i" inner double quoted string |v_iquote| + a' a single quoted string (with quotes) |v_a'| + i' inner simple quoted string |v_i'| + a` a string in backticks (with backticks) |v_a`| + i` inner string in backticks |v_i`| + +Additionally the following commands can be used: + : start Ex command for highlighted lines (1) |v_:| + r change (4) |v_r| + s change |v_s| + C change (2)(4) |v_C| + S change (2) |v_S| + R change (2) |v_R| + x delete |v_x| + D delete (3) |v_D| + X delete (2) |v_X| + Y yank (2) |v_Y| + p put |v_p| + J join (1) |v_J| + U make uppercase |v_U| + u make lowercase |v_u| + ^] find tag |v_CTRL-]| + I block insert |v_b_I| + A block append |v_b_A| + +(1): Always whole lines, see |:visual_example|. +(2): Whole lines when not using CTRL-V. +(3): Whole lines when not using CTRL-V, delete until the end of the line when + using CTRL-V. +(4): When using CTRL-V operates on the block only. + +Note that the ":vmap" command can be used to specifically map keys in Visual +mode. For example, if you would like the "/" command not to extend the Visual +area, but instead take the highlighted text and search for that: > + :vmap / y/" +(In the <> notation |<>|, when typing it you should type it literally; you +need to remove the 'B' and '<' flags from 'cpoptions'.) + +If you want to give a register name using the """ command, do this just before +typing the operator character: "v{move-around}"xd". + +If you want to give a count to the command, do this just before typing the +operator character: "v{move-around}3>" (move lines 3 indents to the right). + + *{move-around}* +The {move-around} is any sequence of movement commands. Note the difference +with {motion}, which is only ONE movement command. + +Another way to operate on the Visual area is using the |/\%V| item in a +pattern. For example, to replace all '(' in the Visual area with '#': > + + :'<,'>s/\%V(/#/g + +Note that the "'<,'>" will appear automatically when you press ":" in Visual +mode. + +============================================================================== +5. Blockwise operators *blockwise-operators* + +{not available when compiled without the |+visualextra| feature} + +Reminder: Use 'virtualedit' to be able to select blocks that start or end +after the end of a line or halfway a tab. + +Visual-block Insert *v_b_I* +With a blockwise selection, I{string} will insert {string} at the start +of block on every line of the block, provided that the line extends into the +block. Thus lines that are short will remain unmodified. TABs are split to +retain visual columns. +See |v_b_I_example|. + +Visual-block Append *v_b_A* +With a blockwise selection, A{string} will append {string} to the end of +block on every line of the block. There is some differing behavior where the +block RHS is not straight, due to different line lengths: + +1. Block was created with $ + In this case the string is appended to the end of each line. +2. Block was created with {move-around} + In this case the string is appended to the end of the block on each line, + and whitespace is inserted to pad to the end-of-block column. +See |v_b_A_example|. +Note: "I" and "A" behave differently for lines that don't extend into the +selected block. This was done intentionally, so that you can do it the way +you want. + +Visual-block change *v_b_c* +All selected text in the block will be replaced by the same text string. When +using "c" the selected text is deleted and Insert mode started. You can then +enter text (without a line break). When you hit , the same string is +inserted in all previously selected lines. + +Visual-block Change *v_b_C* +Like using "c", but the selection is extended until the end of the line for +all lines. + + *v_b_<* +Visual-block Shift *v_b_>* +The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The +LHS of the block determines the point from which to apply a right shift, and +padding includes TABs optimally according to 'ts' and 'et'. The LHS of the +block determines the point upto which to shift left. +See |v_b_>_example|. +See |v_b_<_example|. + +Visual-block Replace *v_b_r* +Every screen char in the highlighted region is replaced with the same char, ie +TABs are split and the virtual whitespace is replaced, maintaining screen +layout. +See |v_b_r_example|. + + +============================================================================== +6. Repeating *visual-repeat* + +When repeating a Visual mode operator, the operator will be applied to the +same amount of text as the last time: +- Linewise Visual mode: The same number of lines. +- Blockwise Visual mode: The same number of lines and columns. +- Normal Visual mode within one line: The same number of characters. +- Normal Visual mode with several lines: The same number of lines, in the + last line the same number of characters as in the last line the last time. +The start of the text is the Cursor position. If the "$" command was used as +one of the last commands to extend the highlighted text, the repeating will +be applied up to the rightmost column of the longest line. + + +============================================================================== +7. Examples *visual-examples* + + *:visual_example* +Currently the ":" command works on whole lines only. When you select part of +a line, doing something like ":!date" will replace the whole line. If you +want only part of the line to be replaced you will have to make a mapping for +it. In a future release ":" may work on partial lines. + +Here is an example, to replace the selected text with the output of "date": > + :vmap _a `>a`!!datekJJ + +(In the <> notation |<>|, when typing it you should type it literally; you +need to remove the 'B' and '<' flags from 'cpoptions') + +What this does is: + stop Visual mode +`> go to the end of the Visual area +a break the line after the Visual area +`< jump to the start of the Visual area +i break the line before the Visual area +!!date filter the Visual text through date +kJJ Join the lines back together + + *visual-search* +Here is an idea for a mapping that makes it possible to do a search for the +selected text: > + :vmap X y/" + +(In the <> notation |<>|, when typing it you should type it literally; you +need to remove the 'B' and '<' flags from 'cpoptions') + +Note that special characters (like '.' and '*') will cause problems. + +Visual-block Examples *blockwise-examples* +With the following text, I will indicate the commands to produce the block and +the results below. In all cases, the cursor begins on the 'a' in the first +line of the test text. +The following modeline settings are assumed ":ts=8:sw=4:". + +It will be helpful to +:set hls +/ +where is a real TAB. This helps visualise the operations. + +The test text is: + +abcdefghijklmnopqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz + +1. fo3jISTRING *v_b_I_example* + +abcdefghijklmnSTRINGopqrstuvwxyz +abc STRING defghijklmnopqrstuvwxyz +abcdef ghi STRING jklmnopqrstuvwxyz +abcdefghijklmnSTRINGopqrstuvwxyz + +2. fo3j$ASTRING *v_b_A_example* + +abcdefghijklmnopqrstuvwxyzSTRING +abc defghijklmnopqrstuvwxyzSTRING +abcdef ghi jklmnopqrstuvwxyzSTRING +abcdefghijklmnopqrstuvwxyzSTRING + +3. fo3j3l<.. *v_b_<_example* + +abcdefghijklmnopqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz + +4. fo3j>.. *v_b_>_example* + +abcdefghijklmn opqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmn opqrstuvwxyz + +5. fo5l3jrX *v_b_r_example* + +abcdefghijklmnXXXXXXuvwxyz +abc XXXXXXhijklmnopqrstuvwxyz +abcdef ghi XXXXXX jklmnopqrstuvwxyz +abcdefghijklmnXXXXXXuvwxyz + +============================================================================== +8. Select mode *Select* *Select-mode* + +Select mode looks like Visual mode, but the commands accepted are quite +different. This resembles the selection mode in Microsoft Windows. +When the 'showmode' option is set, "-- SELECT --" is shown in the last line. + +Entering Select mode: +- Using the mouse to select an area, and 'selectmode' contains "mouse". + 'mouse' must also contain a flag for the current mode. +- Using a non-printable movement command, with the Shift key pressed, and + 'selectmode' contains "key". For example: and . 'keymodel' + must also contain "startsel". +- Using "v", "V" or CTRL-V command, and 'selectmode' contains "cmd". +- Using "gh", "gH" or "g_CTRL-H" command in Normal mode. +- From Visual mode, press CTRL-G. *v_CTRL-G* + +Commands in Select mode: +- Printable characters, and cause the selection to be deleted, and + Vim enters Insert mode. The typed character is inserted. +- Non-printable movement commands, with the Shift key pressed, extend the + selection. 'keymodel' must include "startsel". +- Non-printable movement commands, with the Shift key NOT pressed, stop Select + mode. 'keymodel' must include "stopsel". +- ESC stops Select mode. +- CTRL-O switches to Visual mode for the duration of one command. *v_CTRL-O* +- CTRL-G switches to Visual mode. + +Otherwise, typed characters are handled as in Visual mode. + +When using an operator in Select mode, and the selection is linewise, the +selected lines are operated upon, but like in characterwise selection. For +example, when a whole line is deleted, it can later be pasted halfway a line. + + +Mappings and menus in Select mode. *Select-mode-mapping* + +When mappings and menus are defined with the |:vmap| or |:vmenu| command they +work both in Visual mode and in Select mode. When these are used in Select +mode Vim automatically switches to Visual mode, so that the same behavior as +in Visual mode is effective. If you don't want this use |:xmap| or |:smap|. + +Users will expect printable characters to replace the selected area. +Therefore avoid mapping printable characters in Select mode. Or use +|:sunmap| after |:map| and |:vmap| to remove it for Select mode. + +After the mapping or menu finishes, the selection is enabled again and Select +mode entered, unless the selected area was deleted, another buffer became +the current one or the window layout was changed. + +When a character was typed that causes the selection to be deleted and Insert +mode started, Insert mode mappings are applied to this character. This may +cause some confusion, because it means Insert mode mappings apply to a +character typed in Select mode. Language mappings apply as well. + + *gV* *v_gV* +gV Avoid the automatic reselection of the Visual area + after a Select mode mapping or menu has finished. + Put this just before the end of the mapping or menu. + At least it should be after any operations on the + selection. + + *gh* +gh Start Select mode, characterwise. This is like "v", + but starts Select mode instead of Visual mode. + Mnemonic: "get highlighted". + + *gH* +gH Start Select mode, linewise. This is like "V", + but starts Select mode instead of Visual mode. + Mnemonic: "get Highlighted". + + *g_CTRL-H* +g CTRL-H Start Select mode, blockwise. This is like CTRL-V, + but starts Select mode instead of Visual mode. + Mnemonic: "get Highlighted". + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/windows.txt b/share/vim/vim74/doc/windows.txt new file mode 100644 index 00000000..d1561a0a --- /dev/null +++ b/share/vim/vim74/doc/windows.txt @@ -0,0 +1,1196 @@ +*windows.txt* For Vim version 7.4. Last change: 2012 Nov 15 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Editing with multiple windows and buffers. *windows* *buffers* + +The commands which have been added to use multiple windows and buffers are +explained here. Additionally, there are explanations for commands that work +differently when used in combination with more than one window. + +The basics are explained in chapter 7 and 8 of the user manual |usr_07.txt| +|usr_08.txt|. + +1. Introduction |windows-intro| +2. Starting Vim |windows-starting| +3. Opening and closing a window |opening-window| +4. Moving cursor to other windows |window-move-cursor| +5. Moving windows around |window-moving| +6. Window resizing |window-resize| +7. Argument and buffer list commands |buffer-list| +8. Do a command in all buffers or windows |list-repeat| +9. Tag or file name under the cursor |window-tag| +10. The preview window |preview-window| +11. Using hidden buffers |buffer-hidden| +12. Special kinds of buffers |special-buffers| + +{Vi does not have any of these commands} +{not able to use multiple windows when the |+windows| feature was disabled at +compile time} +{not able to use vertically split windows when the |+vertsplit| feature was +disabled at compile time} + +============================================================================== +1. Introduction *windows-intro* *window* + +Summary: + A buffer is the in-memory text of a file. + A window is a viewport on a buffer. + A tab page is a collection of windows. + +A window is a viewport onto a buffer. You can use multiple windows on one +buffer, or several windows on different buffers. + +A buffer is a file loaded into memory for editing. The original file remains +unchanged until you write the buffer to the file. + +A buffer can be in one of three states: + + *active-buffer* +active: The buffer is displayed in a window. If there is a file for this + buffer, it has been read into the buffer. The buffer may have been + modified since then and thus be different from the file. + *hidden-buffer* +hidden: The buffer is not displayed. If there is a file for this buffer, it + has been read into the buffer. Otherwise it's the same as an active + buffer, you just can't see it. + *inactive-buffer* +inactive: The buffer is not displayed and does not contain anything. Options + for the buffer are remembered if the file was once loaded. It can + contain marks from the |viminfo| file. But the buffer doesn't + contain text. + +In a table: + +state displayed loaded ":buffers" ~ + in window shows ~ +active yes yes 'a' +hidden no yes 'h' +inactive no no ' ' + +Note: All CTRL-W commands can also be executed with |:wincmd|, for those +places where a Normal mode command can't be used or is inconvenient. + +The main Vim window can hold several split windows. There are also tab pages +|tab-page|, each of which can hold multiple windows. + +============================================================================== +2. Starting Vim *windows-starting* + +By default, Vim starts with one window, just like Vi. + +The "-o" and "-O" arguments to Vim can be used to open a window for each file +in the argument list. The "-o" argument will split the windows horizontally; +the "-O" argument will split the windows vertically. If both "-o" and "-O" +are given, the last one encountered will be used to determine the split +orientation. For example, this will open three windows, split horizontally: > + vim -o file1 file2 file3 + +"-oN", where N is a decimal number, opens N windows split horizontally. If +there are more file names than windows, only N windows are opened and some +files do not get a window. If there are more windows than file names, the +last few windows will be editing empty buffers. Similarly, "-ON" opens N +windows split vertically, with the same restrictions. + +If there are many file names, the windows will become very small. You might +want to set the 'winheight' and/or 'winwidth' options to create a workable +situation. + +Buf/Win Enter/Leave |autocommand|s are not executed when opening the new +windows and reading the files, that's only done when they are really entered. + + *status-line* +A status line will be used to separate windows. The 'laststatus' option tells +when the last window also has a status line: + 'laststatus' = 0 never a status line + 'laststatus' = 1 status line if there is more than one window + 'laststatus' = 2 always a status line + +You can change the contents of the status line with the 'statusline' option. +This option can be local to the window, so that you can have a different +status line in each window. + +Normally, inversion is used to display the status line. This can be changed +with the 's' character in the 'highlight' option. For example, "sb" sets it to +bold characters. If no highlighting is used for the status line ("sn"), the +'^' character is used for the current window, and '=' for other windows. If +the mouse is supported and enabled with the 'mouse' option, a status line can +be dragged to resize windows. + +Note: If you expect your status line to be in reverse video and it isn't, +check if the 'highlight' option contains "si". In version 3.0, this meant to +invert the status line. Now it should be "sr", reverse the status line, as +"si" now stands for italic! If italic is not available on your terminal, the +status line is inverted anyway; you will only see this problem on terminals +that have termcap codes for italics. + +============================================================================== +3. Opening and closing a window *opening-window* *E36* + +CTRL-W s *CTRL-W_s* +CTRL-W S *CTRL-W_S* +CTRL-W CTRL-S *CTRL-W_CTRL-S* +:[N]sp[lit] [++opt] [+cmd] *:sp* *:split* + Split current window in two. The result is two viewports on + the same file. Make new window N high (default is to use half + the height of the current window). Reduces the current window + height to create room (and others, if the 'equalalways' option + is set, 'eadirection' isn't "hor", and one of them is higher + than the current or the new window). + Note: CTRL-S does not work on all terminals and might block + further input, use CTRL-Q to get going again. + Also see |++opt| and |+cmd|. + +CTRL-W CTRL-V *CTRL-W_CTRL-V* +CTRL-W v *CTRL-W_v* +:[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit* + Like |:split|, but split vertically. The windows will be + spread out horizontally if + 1. a width was not specified, + 2. 'equalalways' is set, + 3. 'eadirection' isn't "ver", and + 4. one of the other windows is wider than the current or new + window. + Note: In other places CTRL-Q does the same as CTRL-V, but here + it doesn't! + +CTRL-W n *CTRL-W_n* +CTRL-W CTRL_N *CTRL-W_CTRL-N* +:[N]new [++opt] [+cmd] *:new* + Create a new window and start editing an empty file in it. + Make new window N high (default is to use half the existing + height). Reduces the current window height to create room (and + others, if the 'equalalways' option is set and 'eadirection' + isn't "hor"). + Also see |++opt| and |+cmd|. + If 'fileformats' is not empty, the first format given will be + used for the new buffer. If 'fileformats' is empty, the + 'fileformat' of the current buffer is used. This can be + overridden with the |++opt| argument. + Autocommands are executed in this order: + 1. WinLeave for the current window + 2. WinEnter for the new window + 3. BufLeave for the current buffer + 4. BufEnter for the new buffer + This behaves like a ":split" first, and then an ":enew" + command. + +:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew* + Like |:new|, but split vertically. If 'equalalways' is set + and 'eadirection' isn't "ver" the windows will be spread out + horizontally, unless a width was specified. + +:[N]new [++opt] [+cmd] {file} +:[N]sp[lit] [++opt] [+cmd] {file} *:split_f* + Create a new window and start editing file {file} in it. This + behaves like a ":split" first, and then an ":e" command. + If [+cmd] is given, execute the command when the file has been + loaded |+cmd|. + Also see |++opt|. + Make new window N high (default is to use half the existing + height). Reduces the current window height to create room + (and others, if the 'equalalways' option is set). + +:[N]sv[iew] [++opt] [+cmd] {file} *:sv* *:sview* *splitview* + Same as ":split", but set 'readonly' option for this buffer. + +:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfind* *splitfind* + Same as ":split", but search for {file} in 'path' like in + |:find|. Doesn't split if {file} is not found. + +CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^* +CTRL-W ^ Does ":split #", split window in two and edit alternate file. + When a count is given, it becomes ":split #N", split window + and edit buffer N. + +Note that the 'splitbelow' and 'splitright' options influence where a new +window will appear. + + *:vert* *:vertical* +:vert[ical] {cmd} + Execute {cmd}. If it contains a command that splits a window, + it will be split vertically. + Doesn't work for |:execute| and |:normal|. + +:lefta[bove] {cmd} *:lefta* *:leftabove* +:abo[veleft] {cmd} *:abo* *:aboveleft* + Execute {cmd}. If it contains a command that splits a window, + it will be opened left (vertical split) or above (horizontal + split) the current window. Overrules 'splitbelow' and + 'splitright'. + Doesn't work for |:execute| and |:normal|. + +:rightb[elow] {cmd} *:rightb* *:rightbelow* +:bel[owright] {cmd} *:bel* *:belowright* + Execute {cmd}. If it contains a command that splits a window, + it will be opened right (vertical split) or below (horizontal + split) the current window. Overrules 'splitbelow' and + 'splitright'. + Doesn't work for |:execute| and |:normal|. + + *:topleft* *E442* +:to[pleft] {cmd} + Execute {cmd}. If it contains a command that splits a window, + it will appear at the top and occupy the full width of the Vim + window. When the split is vertical the window appears at the + far left and occupies the full height of the Vim window. + Doesn't work for |:execute| and |:normal|. + + *:botright* +:bo[tright] {cmd} + Execute {cmd}. If it contains a command that splits a window, + it will appear at the bottom and occupy the full width of the + Vim window. When the split is vertical the window appears at + the far right and occupies the full height of the Vim window. + Doesn't work for |:execute| and |:normal|. + +These command modifiers can be combined to make a vertically split window +occupy the full height. Example: > + :vertical topleft split tags +Opens a vertically split, full-height window on the "tags" file at the far +left of the Vim window. + + +Closing a window +---------------- + +CTRL-W q *CTRL-W_q* +CTRL-W CTRL-Q *CTRL-W_CTRL-Q* +:q[uit] Quit current window. When quitting the last window (not + counting a help window), exit Vim. + When 'hidden' is set, and there is only one window for the + current buffer, it becomes hidden. + When 'hidden' is not set, and there is only one window for the + current buffer, and the buffer was changed, the command fails. + (Note: CTRL-Q does not work on all terminals) + +:q[uit]! Quit current window. If this was the last window for a buffer, + any changes to that buffer are lost. When quitting the last + window (not counting help windows), exit Vim. The contents of + the buffer are lost, even when 'hidden' is set. + +CTRL-W c *CTRL-W_c* *:clo* *:close* +:clo[se][!] Close current window. When the 'hidden' option is set, or + when the buffer was changed and the [!] is used, the buffer + becomes hidden (unless there is another window editing it). + When there is only one window in the current tab page and + there is another tab page, this closes the current tab page. + |tab-page|. + This command fails when: *E444* + - There is only one window on the screen. + - When 'hidden' is not set, [!] is not used, the buffer has + changes, and there is no other window on this buffer. + Changes to the buffer are not written and won't get lost, so + this is a "safe" command. + +CTRL-W CTRL-C *CTRL-W_CTRL-C* + You might have expected that CTRL-W CTRL-C closes the current + window, but that does not work, because the CTRL-C cancels the + command. + + *:hide* +:hid[e] Quit current window, unless it is the last window on the + screen. The buffer becomes hidden (unless there is another + window editing it or 'bufhidden' is "unload" or "delete"). + If the window is the last one in the current tab page the tab + page is closed. |tab-page| + The value of 'hidden' is irrelevant for this command. + Changes to the buffer are not written and won't get lost, so + this is a "safe" command. + +:hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of + 'hidden' is restored after {cmd} has been executed. + Example: > + :hide edit Makefile +< This will edit "Makefile", and hide the current buffer if it + has any changes. + +CTRL-W o *CTRL-W_o* *E445* +CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* +:on[ly][!] Make the current window the only one on the screen. All other + windows are closed. + When the 'hidden' option is set, all buffers in closed windows + become hidden. + When 'hidden' is not set, and the 'autowrite' option is set, + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is + given, then they become hidden. But modified buffers are + never abandoned, so changes cannot get lost. + +============================================================================== +4. Moving cursor to other windows *window-move-cursor* + +CTRL-W *CTRL-W_* +CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j* +CTRL-W j Move cursor to Nth window below current one. Uses the cursor + position to select between alternatives. + +CTRL-W *CTRL-W_* +CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k* +CTRL-W k Move cursor to Nth window above current one. Uses the cursor + position to select between alternatives. + +CTRL-W *CTRL-W_* +CTRL-W CTRL-H *CTRL-W_CTRL-H* +CTRL-W *CTRL-W_* *CTRL-W_h* +CTRL-W h Move cursor to Nth window left of current one. Uses the + cursor position to select between alternatives. + +CTRL-W *CTRL-W_* +CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l* +CTRL-W l Move cursor to Nth window right of current one. Uses the + cursor position to select between alternatives. + +CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W* +CTRL-W CTRL-W Without count: move cursor to window below/right of the + current one. If there is no window below or right, go to + top-left window. + With count: go to Nth window (windows are numbered from + top-left to bottom-right). To obtain the window number see + |bufwinnr()| and |winnr()|. When N is larger than the number + of windows go to the last window. + + *CTRL-W_W* +CTRL-W W Without count: move cursor to window above/left of current + one. If there is no window above or left, go to bottom-right + window. With count: go to Nth window, like with CTRL-W w. + +CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T* +CTRL-W CTRL-T Move cursor to top-left window. + +CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B* +CTRL-W CTRL-B Move cursor to bottom-right window. + +CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P* +CTRL-W CTRL-P Go to previous (last accessed) window. + + *CTRL-W_P* *E441* +CTRL-W P Go to preview window. When there is no preview window this is + an error. + {not available when compiled without the |+quickfix| feature} + +If Visual mode is active and the new window is not for the same buffer, the +Visual mode is ended. If the window is on the same buffer, the cursor +position is set to keep the same Visual area selected. + + *:winc* *:wincmd* +These commands can also be executed with ":wincmd": + +:[count]winc[md] {arg} + Like executing CTRL-W [count] {arg}. Example: > + :wincmd j +< Moves to the window below the current one. + This command is useful when a Normal mode cannot be used (for + the |CursorHold| autocommand event). Or when a Normal mode + command is inconvenient. + The count can also be a window number. Example: > + :exe nr . "wincmd w" +< This goes to window "nr". + +============================================================================== +5. Moving windows around *window-moving* + +CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443* +CTRL-W CTRL-R Rotate windows downwards/rightwards. The first window becomes + the second one, the second one becomes the third one, etc. + The last window becomes the first window. The cursor remains + in the same window. + This only works within the row or column of windows that the + current window is in. + + *CTRL-W_R* +CTRL-W R Rotate windows upwards/leftwards. The second window becomes + the first one, the third one becomes the second one, etc. The + first window becomes the last window. The cursor remains in + the same window. + This only works within the row or column of windows that the + current window is in. + +CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X* +CTRL-W CTRL-X Without count: Exchange current window with next one. If there + is no next window, exchange with previous window. + With count: Exchange current window with Nth window (first + window is 1). The cursor is put in the other window. + When vertical and horizontal window splits are mixed, the + exchange is only done in the row or column of windows that the + current window is in. + +The following commands can be used to change the window layout. For example, +when there are two vertically split windows, CTRL-W K will change that in +horizontally split windows. CTRL-W H does it the other way around. + + *CTRL-W_K* +CTRL-W K Move the current window to be at the very top, using the full + width of the screen. This works like closing the current + window and then creating another one with ":topleft split", + except that the current window contents is used for the new + window. + + *CTRL-W_J* +CTRL-W J Move the current window to be at the very bottom, using the + full width of the screen. This works like closing the current + window and then creating another one with ":botright split", + except that the current window contents is used for the new + window. + + *CTRL-W_H* +CTRL-W H Move the current window to be at the far left, using the + full height of the screen. This works like closing the + current window and then creating another one with + ":vert topleft split", except that the current window contents + is used for the new window. + {not available when compiled without the |+vertsplit| feature} + + *CTRL-W_L* +CTRL-W L Move the current window to be at the far right, using the full + height of the screen. This works like closing the + current window and then creating another one with + ":vert botright split", except that the current window + contents is used for the new window. + {not available when compiled without the |+vertsplit| feature} + + *CTRL-W_T* +CTRL-W T Move the current window to a new tab page. This fails if + there is only one window in the current tab page. + When a count is specified the new tab page will be opened + before the tab page with this index. Otherwise it comes after + the current tab page. + +============================================================================== +6. Window resizing *window-resize* + + *CTRL-W_=* +CTRL-W = Make all windows (almost) equally high and wide, but use + 'winheight' and 'winwidth' for the current window. + Windows with 'winfixheight' set keep their height and windows + with 'winfixwidth' set keep their width. + +:res[ize] -N *:res* *:resize* *CTRL-W_-* +CTRL-W - Decrease current window height by N (default 1). + If used after |:vertical|: decrease width by N. + +:res[ize] +N *CTRL-W_+* +CTRL-W + Increase current window height by N (default 1). + If used after |:vertical|: increase width by N. + +:res[ize] [N] +CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__* +CTRL-W _ Set current window height to N (default: highest possible). + +z{nr} Set current window height to {nr}. + + *CTRL-W_<* +CTRL-W < Decrease current window width by N (default 1). + + *CTRL-W_>* +CTRL-W > Increase current window width by N (default 1). + +:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar* +CTRL-W | Set current window width to N (default: widest possible). + +You can also resize a window by dragging a status line up or down with the +mouse. Or by dragging a vertical separator line left or right. This only +works if the version of Vim that is being used supports the mouse and the +'mouse' option has been set to enable it. + +The option 'winheight' ('wh') is used to set the minimal window height of the +current window. This option is used each time another window becomes the +current window. If the option is '0', it is disabled. Set 'winheight' to a +very large value, e.g., '9999', to make the current window always fill all +available space. Set it to a reasonable value, e.g., '10', to make editing in +the current window comfortable. + +The equivalent 'winwidth' ('wiw') option is used to set the minimal width of +the current window. + +When the option 'equalalways' ('ea') is set, all the windows are automatically +made the same size after splitting or closing a window. If you don't set this +option, splitting a window will reduce the size of the current window and +leave the other windows the same. When closing a window, the extra lines are +given to the window above it. + +The 'eadirection' option limits the direction in which the 'equalalways' +option is applied. The default "both" resizes in both directions. When the +value is "ver" only the heights of windows are equalized. Use this when you +have manually resized a vertically split window and want to keep this width. +Likewise, "hor" causes only the widths of windows to be equalized. + +The option 'cmdheight' ('ch') is used to set the height of the command-line. +If you are annoyed by the |hit-enter| prompt for long messages, set this +option to 2 or 3. + +If there is only one window, resizing that window will also change the command +line height. If there are several windows, resizing the current window will +also change the height of the window below it (and sometimes the window above +it). + +The minimal height and width of a window is set with 'winminheight' and +'winminwidth'. These are hard values, a window will never become smaller. + +============================================================================== +7. Argument and buffer list commands *buffer-list* + + args list buffer list meaning ~ +1. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N +2. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf +3. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf +4. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf +5. :rewind / :first 15. :brewind / :bfirst to first arg/buf +6. :last 16. :blast to last arg/buf +7. :all 17. :ball edit all args/buffers + 18. :unhide edit all loaded buffers + 19. :[N]bmod [N] to Nth modified buf + + split & args list split & buffer list meaning ~ +21. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N +22. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf +23. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf +24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf +25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf +26. :slast 36. :sblast split + to last arg/buf +27. :sall 37. :sball edit all args/buffers + 38. :sunhide edit all loaded buffers + 39. :[N]sbmod [N] split + to Nth modified buf + +40. :args list of arguments +41. :buffers list of buffers + +The meaning of [N] depends on the command: + [N] is number of buffers to go forward/backward on ?2, ?3, and ?4 + [N] is an argument number, defaulting to current argument, for 1 and 21 + [N] is a buffer number, defaulting to current buffer, for 11 and 31 + [N] is a count for 19 and 39 + +Note: ":next" is an exception, because it must accept a list of file names +for compatibility with Vi. + + +The argument list and multiple windows +-------------------------------------- + +The current position in the argument list can be different for each window. +Remember that when doing ":e file", the position in the argument list stays +the same, but you are not editing the file at that position. To indicate +this, the file message (and the title, if you have one) shows +"(file (N) of M)", where "(N)" is the current position in the file list, and +"M" the number of files in the file list. + +All the entries in the argument list are added to the buffer list. Thus, you +can also get to them with the buffer list commands, like ":bnext". + +:[N]al[l][!] [N] *:al* *:all* *:sal* *:sall* +:[N]sal[l][!] [N] + Rearrange the screen to open one window for each argument. + All other windows are closed. When a count is given, this is + the maximum number of windows to open. + With the |:tab| modifier open a tab page for each argument. + When there are more arguments than 'tabpagemax' further ones + become split windows in the last tab page. + When the 'hidden' option is set, all buffers in closed windows + become hidden. + When 'hidden' is not set, and the 'autowrite' option is set, + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is + given, then they become hidden. But modified buffers are + never abandoned, so changes cannot get lost. + [N] is the maximum number of windows to open. 'winheight' + also limits the number of windows opened ('winwidth' if + |:vertical| was prepended). + Buf/Win Enter/Leave autocommands are not executed for the new + windows here, that's only done when they are really entered. + +:[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument* + Short for ":split | argument [N]": split window and go to Nth + argument. But when there is no such argument, the window is + not split. Also see |++opt| and |+cmd|. + +:[N]sn[ext][!] [++opt] [+cmd] [file ..] *:sn* *:snext* + Short for ":split | [N]next": split window and go to Nth next + argument. But when there is no next file, the window is not + split. Also see |++opt| and |+cmd|. + +:[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious* +:[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext* + Short for ":split | [N]Next": split window and go to Nth + previous argument. But when there is no previous file, the + window is not split. Also see |++opt| and |+cmd|. + + *:sre* *:srewind* +:sre[wind][!] [++opt] [+cmd] + Short for ":split | rewind": split window and go to first + argument. But when there is no argument list, the window is + not split. Also see |++opt| and |+cmd|. + + *:sfir* *:sfirst* +:sfir[st] [++opt] [+cmd] + Same as ":srewind". + + *:sla* *:slast* +:sla[st][!] [++opt] [+cmd] + Short for ":split | last": split window and go to last + argument. But when there is no argument list, the window is + not split. Also see |++opt| and |+cmd|. + + *:dr* *:drop* +:dr[op] [++opt] [+cmd] {file} .. + Edit the first {file} in a window. + - If the file is already open in a window change to that + window. + - If the file is not open in a window edit the file in the + current window. If the current buffer can't be |abandon|ed, + the window is split first. + The |argument-list| is set, like with the |:next| command. + The purpose of this command is that it can be used from a + program that wants Vim to edit another file, e.g., a debugger. + When using the |:tab| modifier each argument is opened in a + tab page. The last window is used if it's empty. + Also see |++opt| and |+cmd|. + {only available when compiled with a GUI} + +============================================================================== +8. Do a command in all buffers or windows *list-repeat* + + *:windo* +:windo {cmd} Execute {cmd} in each window. + It works like doing this: > + CTRL-W t + :{cmd} + CTRL-W w + :{cmd} + etc. +< This only operates in the current tab page. + When an error is detected on one window, further + windows will not be visited. + The last window (or where an error occurred) becomes + the current window. + {cmd} can contain '|' to concatenate several commands. + {cmd} must not open or close windows or reorder them. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + Also see |:tabdo|, |:argdo| and |:bufdo|. + + *:bufdo* +:bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list. + It works like doing this: > + :bfirst + :{cmd} + :bnext + :{cmd} + etc. +< When the current file can't be |abandon|ed and the [!] + is not present, the command fails. + When an error is detected on one buffer, further + buffers will not be visited. + Unlisted buffers are skipped. + The last buffer (or where an error occurred) becomes + the current buffer. + {cmd} can contain '|' to concatenate several commands. + {cmd} must not delete buffers or add buffers to the + buffer list. + Note: While this command is executing, the Syntax + autocommand event is disabled by adding it to + 'eventignore'. This considerably speeds up editing + each buffer. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + Also see |:tabdo|, |:argdo| and |:windo|. + +Examples: > + + :windo set nolist nofoldcolumn | normal zn + +This resets the 'list' option and disables folding in all windows. > + + :bufdo set fileencoding= | update + +This resets the 'fileencoding' in each buffer and writes it if this changed +the buffer. The result is that all buffers will use the 'encoding' encoding +(if conversion works properly). + +============================================================================== +9. Tag or file name under the cursor *window-tag* + + *:sta* *:stag* +:sta[g][!] [tagname] + Does ":tag[!] [tagname]" and splits the window for the found + tag. See also |:tag|. + +CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* +CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a + tag and jump to it in the new upper window. Make new window N + high. + + *CTRL-W_g]* +CTRL-W g ] Split current window in two. Use identifier under cursor as a + tag and perform ":tselect" on it in the new upper window. + Make new window N high. + + *CTRL-W_g_CTRL-]* +CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a + tag and perform ":tjump" on it in the new upper window. Make + new window N high. + +CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* +CTRL-W CTRL-F Split current window in two. Edit file name under cursor. + Like ":split gf", but window isn't split if the file does not + exist. + Uses the 'path' variable as a list of directory names where to + look for the file. Also the path for current file is + used to search for the file name. + If the name is a hypertext link that looks like + "type://machine/path", only "/path" is used. + If a count is given, the count'th matching file is edited. + {not available when the |+file_in_path| feature was disabled + at compile time} + +CTRL-W F *CTRL-W_F* + Split current window in two. Edit file name under cursor and + jump to the line number following the file name. See |gF| for + details on how the line number is obtained. + {not available when the |+file_in_path| feature was disabled + at compile time} + +CTRL-W gf *CTRL-W_gf* + Open a new tab page and edit the file name under the cursor. + Like "tab split" and "gf", but the new tab page isn't created + if the file does not exist. + {not available when the |+file_in_path| feature was disabled + at compile time} + +CTRL-W gF *CTRL-W_gF* + Open a new tab page and edit the file name under the cursor + and jump to the line number following the file name. Like + "tab split" and "gF", but the new tab page isn't created if + the file does not exist. + {not available when the |+file_in_path| feature was disabled + at compile time} + +Also see |CTRL-W_CTRL-I|: open window for an included file that includes +the keyword under the cursor. + +============================================================================== +10. The preview window *preview-window* + +The preview window is a special window to show (preview) another file. It is +normally a small window used to show an include file or definition of a +function. +{not available when compiled without the |+quickfix| feature} + +There can be only one preview window (per tab page). It is created with one +of the commands below. The 'previewheight' option can be set to specify the +height of the preview window when it's opened. The 'previewwindow' option is +set in the preview window to be able to recognize it. The 'winfixheight' +option is set to have it keep the same height when opening/closing other +windows. + + *:pta* *:ptag* +:pta[g][!] [tagname] + Does ":tag[!] [tagname]" and shows the found tag in a + "Preview" window without changing the current buffer or cursor + position. If a "Preview" window already exists, it is re-used + (like a help window is). If a new one is opened, + 'previewheight' is used for the height of the window. See + also |:tag|. + See below for an example. |CursorHold-example| + Small difference from |:tag|: When [tagname] is equal to the + already displayed tag, the position in the matching tag list + is not reset. This makes the CursorHold example work after a + |:ptnext|. + +CTRL-W z *CTRL-W_z* +CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose* +:pc[lose][!] Close any "Preview" window currently open. When the 'hidden' + option is set, or when the buffer was changed and the [!] is + used, the buffer becomes hidden (unless there is another + window editing it). The command fails if any "Preview" buffer + cannot be closed. See also |:close|. + + *:pp* *:ppop* +:[count]pp[op][!] + Does ":[count]pop[!]" in the preview window. See |:pop| and + |:ptag|. {not in Vi} + +CTRL-W } *CTRL-W_}* + Use identifier under cursor as a tag and perform a :ptag on + it. Make the new Preview window (if required) N high. If N is + not given, 'previewheight' is used. + +CTRL-W g } *CTRL-W_g}* + Use identifier under cursor as a tag and perform a :ptjump on + it. Make the new Preview window (if required) N high. If N is + not given, 'previewheight' is used. + + *:ped* *:pedit* +:ped[it][!] [++opt] [+cmd] {file} + Edit {file} in the preview window. The preview window is + opened like with |:ptag|. The current window and cursor + position isn't changed. Useful example: > + :pedit +/fputc /usr/include/stdio.h +< + *:ps* *:psearch* +:[range]ps[earch][!] [count] [/]pattern[/] + Works like |:ijump| but shows the found match in the preview + window. The preview window is opened like with |:ptag|. The + current window and cursor position isn't changed. Useful + example: > + :psearch popen +< Like with the |:ptag| command, you can use this to + automatically show information about the word under the + cursor. This is less clever than using |:ptag|, but you don't + need a tags file and it will also find matches in system + include files. Example: > + :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("") +< Warning: This can be slow. + +Example *CursorHold-example* > + + :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("") + +This will cause a ":ptag" to be executed for the keyword under the cursor, +when the cursor hasn't moved for the time set with 'updatetime'. The "nested" +makes other autocommands be executed, so that syntax highlighting works in the +preview window. The "silent!" avoids an error message when the tag could not +be found. Also see |CursorHold|. To disable this again: > + + :au! CursorHold + +A nice addition is to highlight the found tag, avoid the ":ptag" when there +is no word under the cursor, and a few other things: > + + :au! CursorHold *.[ch] nested call PreviewWord() + :func PreviewWord() + : if &previewwindow " don't do this in the preview window + : return + : endif + : let w = expand("") " get the word under cursor + : if w =~ '\a' " if the word contains a letter + : + : " Delete any existing highlight before showing another tag + : silent! wincmd P " jump to preview window + : if &previewwindow " if we really get there... + : match none " delete existing highlight + : wincmd p " back to old window + : endif + : + : " Try displaying a matching tag for the word under the cursor + : try + : exe "ptag " . w + : catch + : return + : endtry + : + : silent! wincmd P " jump to preview window + : if &previewwindow " if we really get there... + : if has("folding") + : silent! .foldopen " don't want a closed fold + : endif + : call search("$", "b") " to end of previous line + : let w = substitute(w, '\\', '\\\\', "") + : call search('\<\V' . w . '\>') " position cursor on match + : " Add a match highlight to the word at this position + : hi previewWord term=bold ctermbg=green guibg=green + : exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"' + : wincmd p " back to old window + : endif + : endif + :endfun + +============================================================================== +11. Using hidden buffers *buffer-hidden* + +A hidden buffer is not displayed in a window, but is still loaded into memory. +This makes it possible to jump from file to file, without the need to read or +write the file every time you get another buffer in a window. +{not available when compiled without the |+listcmds| feature} + + *:buffer-!* +If the option 'hidden' ('hid') is set, abandoned buffers are kept for all +commands that start editing another file: ":edit", ":next", ":tag", etc. The +commands that move through the buffer list sometimes make the current buffer +hidden although the 'hidden' option is not set. This happens when a buffer is +modified, but is forced (with '!') to be removed from a window, and +'autowrite' is off or the buffer can't be written. + +You can make a hidden buffer not hidden by starting to edit it with any +command. Or by deleting it with the ":bdelete" command. + +The 'hidden' is global, it is used for all buffers. The 'bufhidden' option +can be used to make an exception for a specific buffer. It can take these +values: + Use the value of 'hidden'. + hide Hide this buffer, also when 'hidden' is not set. + unload Don't hide but unload this buffer, also when 'hidden' + is set. + delete Delete the buffer. + + *hidden-quit* +When you try to quit Vim while there is a hidden, modified buffer, you will +get an error message and Vim will make that buffer the current buffer. You +can then decide to write this buffer (":wq") or quit without writing (":q!"). +Be careful: there may be more hidden, modified buffers! + +A buffer can also be unlisted. This means it exists, but it is not in the +list of buffers. |unlisted-buffer| + + +:files[!] *:files* +:buffers[!] *:buffers* *:ls* +:ls[!] Show all buffers. Example: + + 1 #h "/test/text" line 1 ~ + 2u "asdf" line 0 ~ + 3 %a + "version.c" line 1 ~ + + When the [!] is included the list will show unlisted buffers + (the term "unlisted" is a bit confusing then...). + + Each buffer has a unique number. That number will not change, + so you can always go to a specific buffer with ":buffer N" or + "N CTRL-^", where N is the buffer number. + + Indicators (chars in the same column are mutually exclusive): + u an unlisted buffer (only displayed when [!] is used) + |unlisted-buffer| + % the buffer in the current window + # the alternate buffer for ":e #" and CTRL-^ + a an active buffer: it is loaded and visible + h a hidden buffer: It is loaded, but currently not + displayed in a window |hidden-buffer| + - a buffer with 'modifiable' off + = a readonly buffer + + a modified buffer + x a buffer with read errors + + *:bad* *:badd* +:bad[d] [+lnum] {fname} + Add file name {fname} to the buffer list, without loading it. + If "lnum" is specified, the cursor will be positioned at that + line when the buffer is first entered. Note that other + commands after the + will be ignored. + +:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516* +:bd[elete][!] [N] + Unload buffer [N] (default: current buffer) and delete it from + the buffer list. If the buffer was changed, this fails, + unless when [!] is specified, in which case changes are lost. + The file remains unaffected. Any windows for this buffer are + closed. If buffer [N] is the current buffer, another buffer + will be displayed instead. This is the most recent entry in + the jump list that points into a loaded buffer. + Actually, the buffer isn't completely deleted, it is removed + from the buffer list |unlisted-buffer| and option values, + variables and mappings/abbreviations for the buffer are + cleared. + +:bdelete[!] {bufname} *E93* *E94* + Like ":bdelete[!] [N]", but buffer given by name. Note that a + buffer whose name is a number cannot be referenced by that + name; use the buffer number instead. Insert a backslash + before a space in a buffer name. + +:bdelete[!] N1 N2 ... + Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be + buffer numbers or buffer names (but not buffer names that are + a number). Insert a backslash before a space in a buffer + name. + +:N,Mbdelete[!] Do ":bdelete[!]" for all buffers in the range N to M + |inclusive|. + +:[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517* +:bw[ipeout][!] {bufname} +:N,Mbw[ipeout][!] +:bw[ipeout][!] N1 N2 ... + Like |:bdelete|, but really delete the buffer. Everything + related to the buffer is lost. All marks in this buffer + become invalid, option settings are lost, etc. Don't use this + unless you know what you are doing. + +:[N]bun[load][!] *:bun* *:bunload* *E515* +:bun[load][!] [N] + Unload buffer [N] (default: current buffer). The memory + allocated for this buffer will be freed. The buffer remains + in the buffer list. + If the buffer was changed, this fails, unless when [!] is + specified, in which case the changes are lost. + Any windows for this buffer are closed. If buffer [N] is the + current buffer, another buffer will be displayed instead. + This is the most recent entry in the jump list that points + into a loaded buffer. + +:bunload[!] {bufname} + Like ":bunload[!] [N]", but buffer given by name. Note that a + buffer whose name is a number cannot be referenced by that + name; use the buffer number instead. Insert a backslash + before a space in a buffer name. + +:N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M + |inclusive|. + +:bunload[!] N1 N2 ... + Do ":bunload[!]" for buffer N1, N2, etc. The arguments can be + buffer numbers or buffer names (but not buffer names that are + a number). Insert a backslash before a space in a buffer + name. + +:[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86* + Edit buffer [N] from the buffer list. If [N] is not given, + the current buffer remains being edited. See |:buffer-!| for + [!]. This will also edit a buffer that is not in the buffer + list, without setting the 'buflisted' flag. + +:[N]b[uffer][!] {bufname} + Edit buffer for {bufname} from the buffer list. See + |:buffer-!| for [!]. This will also edit a buffer that is not + in the buffer list, without setting the 'buflisted' flag. + +:[N]sb[uffer] [N] *:sb* *:sbuffer* + Split window and edit buffer [N] from the buffer list. If [N] + is not given, the current buffer is edited. Respects the + "useopen" setting of 'switchbuf' when splitting. This will + also edit a buffer that is not in the buffer list, without + setting the 'buflisted' flag. + +:[N]sb[uffer] {bufname} + Split window and edit buffer for {bufname} from the buffer + list. This will also edit a buffer that is not in the buffer + list, without setting the 'buflisted' flag. + Note: If what you want to do is split the buffer, make a copy + under another name, you can do it this way: > + :w foobar | sp # + +:[N]bn[ext][!] [N] *:bn* *:bnext* *E87* + Go to [N]th next buffer in buffer list. [N] defaults to one. + Wraps around the end of the buffer list. + See |:buffer-!| for [!]. + If you are in a help buffer, this takes you to the next help + buffer (if there is one). Similarly, if you are in a normal + (non-help) buffer, this takes you to the next normal buffer. + This is so that if you have invoked help, it doesn't get in + the way when you're browsing code/text buffers. The next three + commands also work like this. + + *:sbn* *:sbnext* +:[N]sbn[ext] [N] + Split window and go to [N]th next buffer in buffer list. + Wraps around the end of the buffer list. Uses 'switchbuf' + +:[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* +:[N]bp[revious][!] [N] + Go to [N]th previous buffer in buffer list. [N] defaults to + one. Wraps around the start of the buffer list. + See |:buffer-!| for [!] and 'switchbuf'. + +:[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* +:[N]sbp[revious] [N] + Split window and go to [N]th previous buffer in buffer list. + Wraps around the start of the buffer list. + Uses 'switchbuf'. + + *:br* *:brewind* +:br[ewind][!] Go to first buffer in buffer list. If the buffer list is + empty, go to the first unlisted buffer. + See |:buffer-!| for [!]. + + *:bf* *:bfirst* +:bf[irst] Same as ":brewind". + + *:sbr* *:sbrewind* +:sbr[ewind] Split window and go to first buffer in buffer list. If the + buffer list is empty, go to the first unlisted buffer. + Respects the 'switchbuf' option. + + *:sbf* *:sbfirst* +:sbf[irst] Same as ":sbrewind". + + *:bl* *:blast* +:bl[ast][!] Go to last buffer in buffer list. If the buffer list is + empty, go to the last unlisted buffer. + See |:buffer-!| for [!]. + + *:sbl* *:sblast* +:sbl[ast] Split window and go to last buffer in buffer list. If the + buffer list is empty, go to the last unlisted buffer. + Respects 'switchbuf' option. + +:[N]bm[odified][!] [N] *:bm* *:bmodified* *E84* + Go to [N]th next modified buffer. Note: this command also + finds unlisted buffers. If there is no modified buffer the + command fails. + +:[N]sbm[odified] [N] *:sbm* *:sbmodified* + Split window and go to [N]th next modified buffer. + Respects 'switchbuf' option. + Note: this command also finds buffers not in the buffer list. + +:[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide* +:[N]sun[hide] [N] + Rearrange the screen to open one window for each loaded buffer + in the buffer list. When a count is given, this is the + maximum number of windows to open. + +:[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball* +:[N]sba[ll] [N] Rearrange the screen to open one window for each buffer in + the buffer list. When a count is given, this is the maximum + number of windows to open. 'winheight' also limits the number + of windows opened ('winwidth' if |:vertical| was prepended). + Buf/Win Enter/Leave autocommands are not executed for the new + windows here, that's only done when they are really entered. + When the |:tab| modifier is used new windows are opened in a + new tab, up to 'tabpagemax'. + +Note: All the commands above that start editing another buffer, keep the +'readonly' flag as it was. This differs from the ":edit" command, which sets +the 'readonly' flag each time the file is read. + +============================================================================== +12. Special kinds of buffers *special-buffers* + +Instead of containing the text of a file, buffers can also be used for other +purposes. A few options can be set to change the behavior of a buffer: + 'bufhidden' what happens when the buffer is no longer displayed + in a window. + 'buftype' what kind of a buffer this is + 'swapfile' whether the buffer will have a swap file + 'buflisted' buffer shows up in the buffer list + +A few useful kinds of a buffer: + +quickfix Used to contain the error list or the location list. See + |:cwindow| and |:lwindow|. This command sets the 'buftype' + option to "quickfix". You are not supposed to change this! + 'swapfile' is off. + +help Contains a help file. Will only be created with the |:help| + command. The flag that indicates a help buffer is internal + and can't be changed. The 'buflisted' option will be reset + for a help buffer. + +directory Displays directory contents. Can be used by a file explorer + plugin. The buffer is created with these settings: > + :setlocal buftype=nowrite + :setlocal bufhidden=delete + :setlocal noswapfile +< The buffer name is the name of the directory and is adjusted + when using the |:cd| command. + +scratch Contains text that can be discarded at any time. It is kept + when closing the window, it must be deleted explicitly. + Settings: > + :setlocal buftype=nofile + :setlocal bufhidden=hide + :setlocal noswapfile +< The buffer name can be used to identify the buffer, if you + give it a meaningful name. + + *unlisted-buffer* +unlisted The buffer is not in the buffer list. It is not used for + normal editing, but to show a help file, remember a file name + or marks. The ":bdelete" command will also set this option, + thus it doesn't completely delete the buffer. Settings: > + :setlocal nobuflisted +< + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/workshop.txt b/share/vim/vim74/doc/workshop.txt new file mode 100644 index 00000000..5514f9eb --- /dev/null +++ b/share/vim/vim74/doc/workshop.txt @@ -0,0 +1,98 @@ +*workshop.txt* For Vim version 7.4. Last change: 2013 Jul 06 + + + VIM REFERENCE MANUAL by Gordon Prieur + + +Sun Visual WorkShop Features *workshop* *workshop-support* + +1. Introduction |workshop-intro| +2. Commands |workshop-commands| +3. Compiling vim/gvim for WorkShop |workshop-compiling| +4. Configuring gvim for a WorkShop release tree |workshop-configure| +5. Obtaining the latest version of the XPM library |workshop-xpm| + +{Vi does not have any of these features} +{only available when compiled with the |+sun_workshop| feature} + +============================================================================== +1. Introduction *workshop-intro* + +Sun Visual WorkShop has an "Editor of Choice" feature designed to let users +debug using their favorite editors. For the 6.0 release we have added support +for gvim. A workshop debug session will have a debugging window and an editor +window (possibly others as well). The user can do many debugging operations +from the editor window, minimizing the need to switch from window to window. + +The version of vim shipped with Sun Visual WorkShop 6 (also called Forte +Developer 6) is vim 5.3. The features in this release are much more reliable +than the vim/gvim shipped with Visual WorkShop. VWS users wishing to use vim +as their editor should compile these sources and install them in their +workshop release tree. + +============================================================================== +2. Commands *workshop-commands* + + *:ws* *:wsverb* +:ws[verb] verb Pass the verb to the verb executor + +Pass the verb to a workshop function which gathers some arguments and +sends the verb and data to workshop over an IPC connection. + +============================================================================== +3. Compiling vim/gvim for WorkShop *workshop-compiling* + +Compiling vim with FEAT_SUN_WORKSHOP turns on all compile time flags necessary +for building a vim to work with Visual WorkShop. The features required for VWS +have been built and tested using the Sun compilers from the VWS release. They +have not been built or tested using Gnu compilers. This does not mean the +features won't build and run if compiled with gcc, just that nothing is +guaranteed with gcc! + +============================================================================== +4. Configuring gvim for a WorkShop release tree *workshop-configure* + +There are several assumptions which must be met in order to compile a gvim for +use with Sun Visual WorkShop 6. + + o You should use the compiler in VWS rather than gcc. We have neither + built nor tested with gcc and cannot guarantee it will build properly. + + o You must supply your own XPM library. See |workshop-xpm| below for + details on obtaining the latest version of XPM. + + o Edit the Makefile in the src directory and uncomment the lines for Sun + Visual WorkShop. You can easily find these by searching for the string + FEAT_SUN_WORKSHOP + + o We also suggest you use Motif for your gui. This will provide gvim with + the same look-and-feel as the rest of Sun Visual WorkShop. + +The following configuration line can be used to configure vim to build for use +with Sun Visual WorkShop: + + $ CC=cc configure --enable-workshop --enable-gui=motif \ + -prefix=/contrib/contrib6/ + +The VWS-install-dir should be the base directory where your Sun Visual WorkShop +was installed. By default this is /opt/SUNWspro. It will normally require +root permissions to install the vim release. You will also need to change the +symlink /bin/gvim to point to the vim in your newly installed +directory. The should be a unique version string. I use "vim" +concatenated with the equivalent of version.h's VIM_VERSION_SHORT. + +============================================================================== +5. Obtaining the latest version of the XPM library *workshop-xpm* + +The XPM library is required to show images within Vim with Motif or Athena. +Without it the toolbar and signs will be disabled. + +The XPM library is provided by Arnaud Le Hors of the French National Institute +for Research in Computer Science and Control. It can be downloaded from +http://cgit.freedesktop.org/xorg/lib/libXpm. The current release, as of this +writing, is xpm-3.4k-solaris.tgz, which is a gzip'ed tar file. If you create +the directory /usr/local/xpm and untar the file there you can use the +uncommented lines in the Makefile without changing them. If you use another +xpm directory you will need to change the XPM_DIR in src/Makefile. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/share/vim/vim74/doc/xxd-fr.1 b/share/vim/vim74/doc/xxd-fr.1 new file mode 100644 index 00000000..be780858 --- /dev/null +++ b/share/vim/vim74/doc/xxd-fr.1 @@ -0,0 +1,396 @@ +.TH XXD 1 "août 1996" "Page de manuel pour xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.\" French translation by David Blanchet 2005-03 +.SH NOM +.I xxd +\- convertit en représentation hexadécimale et inversement. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [fichier_entree [fichier_sortie]] +.br +.B xxd +\-r[evert] [options] [fichier_entree [fichier_sortie]] +.SH DESCRIPTION +.I xxd +crée un fichier contenant la représentation hexadécimale d'un fichier +binaire ou de l'entrée standard. +Il peut également convertir un fichier de codes hexadécimaux en un fichier +binaire. +Comme +.BR uuencode (1) +et +.BR uudecode (1) +il permet la transmission de données binaires dans une représentation ASCII +compatible avec le courrier électronique, mais a l'avantage de décoder la +sortie standard. +De plus, il peut être utilisé pour appliquer des rustines à des fichiers +binaires. +.SH OPTIONS +Si aucun +.I fichier_entree +n'est spécifié, l'entrée standard est utilisée. +Si +.I fichier_entree +correspond au caractère +.RB '\-' +\, l'entrée standard est employée comme source des données en entrée. +Si aucun +.I fichier_sortie +n'est spécifié (ou qu'un caractère +.RB '\-' +est donné à sa place), le résultat est envoyé sur la sortie standard. +.PP +NOTE : un analyseur paresseux est utilisé. Il ne vérifie pas au-delà de la +première lettre de l'option, à moins que cette dernière ne requiert un +paramètre. +L'espace entre l'option et son paramètre est optionnel. +Les paramètres des options peuvent être spécifiés en notation décimale, +hexadécimale ou octale. +Ainsi +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +et +.B \-cols 8 +sont tous équivalents. +.TP +.IR \-a " | " \-autoskip +active la fonctionnalité "autoskip" : le caractère '*' remplace les lignes +d'octets nuls. Désactivée par défaut. +.TP +.IR \-b " | " \-bits +Convertit en binaires plutôt qu'en hexadécimal. +Cette option écrit les octets comme une séquence de "1" et de "0" au lieu +d'une conversion en hexadécimal traditionnel. Chaque ligne est précédée par un +numéro de ligne en hexadécimal et suivie de la représentation ASCII (ou +EBCDIC) correspondante. Les options \-r, \-p, \-i ne fonctionnent pas dans ce +mode. +.TP +.IR "\-c cols " | " \-cols cols" +place +.RI < cols > +octets par ligne. 16 par défaut (\-i : 12, \-ps : 30, \-b : 6). Maximum 256. +.TP +.IR \-E " | " \-EBCDIC +Passe le codage des caractères de la colonne de droite de ASCII à EBCDIC. +Cela ne change pas la représentation hexadécimale. Cette option est sans effet +quand elle est utilisée avec \-r, \-p or \-i. +.TP +.IR "\-g octets " | " \-groupsize octets" +Regroupe les octets (deux chiffres hexadécimaux ou huit chiffres binaires) +par groupe de +.RI < octets > +\, séparés par des espaces blancs. Spécifiez +.I \-g 0 +pour supprimer le regroupement. +.RI < octets > +vaut 2 par défaut dans le mode normal et \fI1\fP en +représentation binaire. Le regroupement ne s'applique pas aux styles +Postscript et Include. +.TP +.IR \-h " | " \-help +Affiche un résumé des commandes disponibles et quitte. Aucune conversion n'est +effectuée. +.TP +.IR \-i " | " \-include +produit une sortie dans le style #include (fichier C à inclure). La définition +complète d'un tableau statique est écrite et est nommée d'après le fichier +d'origine, à moins que xxd lise depuis l'entrée standard. +.TP +.IR "\-l long " | " \-len long" +Arrête après l'écriture de +.RI < long > +octets. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +Produit une conversion continue dans le style Postscript (postscript continuous +hexdumd style). +Également connu sous le nom de « conversion brute » (plain hexdump style). +.TP +.IR \-r " | " \-revert +Opération inverse : convertit un fichier hexadécimal en un fichier binaire (ou +applique une rustine à un fichier binaire). +Si l'écriture n'a pas lieu sur la sortie standard, xxd écrit dans le fichier +qu'il produit sans le tronquer. Utilisez la combinaison +.I \-r \-p +pour lire de l'hexadécimal brut sans information sur le numéro des lignes et +sans format de colonnes particulier. Des espaces blancs et coupures de lignes +supplémentaires sont autorisés à n'importe quel endroit. +.TP +.I \-seek décalage +Utilisé après l'option +.IR \-r : +inverse la conversion en ajoutant +.RI < décalage > +aux positions dans le fichier données dans le code hexadécimal. +.TP +.I \-s [+][\-]décalage +Débute au +.RI < décalage > +absolu ou relatif dans fichier_entree. +\fI+ \fRindique que le décalage est relatif à la position courante dans +l'entrée standard (sans effet si la lecture n'a pas lieu sur l'entrée +standard). \fI\- \fRindique un décalage en caractères depuis la fin de +l'entrée (utilisé avec \fI+\fR, désigne la position avant la position +actuelle de l'entrée standard). +Sans l'option \-s, xxd démarre à la position courante du fichier. +.TP +.I \-u +Utilise des chiffres hexadécimaux majuscules. La casse par défaut est +minuscule. +.TP +.IR \-v " | " \-version +Affiche la version de xxd. +.SH MISE EN GARDE +.I xxd \-r +effectue des opérations internes un peu obscures lors de l'évaluation +des informations sur les numéros de lignes. Si le fichier de sortie est +adressable, alors les numéros de lignes au début de chaque ligne d'hexadécimal +peuvent être désordonnées, des lignes peuvent manquer ou se chevaucher. Dans +ces cas, xxd utilisera lseek(2) pour déterminer la prochaine position. Si le +fichier n'est pas adressable, seuls les vides sont autorisés, et ils seront +comblés par des octets nuls. +.PP +.I xxd \-r +ne génère aucune erreur lors de l'analyse. Les problèmes sont passés +silencieusement. +.PP +Lors de l'édition de la représentation hexadécimale, veuillez noter que +.I xxd \-r +ignore tout ce qui se trouve sur la ligne après avoir lu suffisamment de +données hexadécimales (voir l'option \-c). Cela signifie également que les +modifications dans la colonne ASCII (ou EBCDIC) sont toujours ignorées. La +conversion inverse de données hexadécimales brutes (postscript) avec xxd \-r +\-p ne dépend pas d'un nombre correct de colonnes. Dans ce cas, tout ce qui +ressemble à une paire de chiffres hexadécimaux est interprété. +.PP +Remarquez la différence entre +.br +\fI% xxd \-i fichier\fR +.br +et +.br +\fI% xxd \-i < fichier\fR +.PP +.I xxd \-s \+seek +peut différer de +.IR "xxd \-s seek" , +car lseek(2) est utilisé pour « revenir en arrière ». Le '+' fait une +différence quand la source des données est l'entrée standard et si la position +dans le fichier de l'entrée standard n'est pas au début du fichier lorsque xxd +est démarré et qu'il reçoit ses données. +L'exemple suivant peut vous aider à comprendre (ou bien vous perdre davantage +encore !)... +.PP +Remettre l'entrée standard au départ avant de lire ; nécessaire car 'cat' a +déjà lu jusqu'à la fin de l'entrée standard. +.br +\fI% sh \-c 'cat > donnees_binaires; xxd \-s 0 > donnees_hexa' < fichier\fR +.PP +Convertir à partir de la position 0x480 (= 1024 + 128) du fichier. +Le symbole '+' signifie "relativement à la position actuelle', ainsi 128 est +ajouté aux 1024 octets comptabilisés pour dd. +.br +\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +128 > +donnees_hexa' < fichier\fR +.PP +Convertir de fichier depuis la position 0x100 (= 1024 \- 768) du fichier. +.br +\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +\-768 > +donnees_hexa' < fichier\fR +.PP +Toutefois, cette situation est peu fréquente et l'utilisation de '+' est +rarement requise. L'auteur préfère surveiller les effets de xxd avec strace(1) +ou truss(1) quand \-s est employé. +.SH EXEMPLES +Afficher la totalité du +.B fichier +sauf les trois premières lignes (0x30 octets en hexadécimal). +.br +\fI% xxd \-s 0x30 fichier\fR +.PP +afficher les trois dernières lignes (0x30 octets en hexadécimal) du +.B fichier +\. +.br +\fI% xxd \-s \-0x30 fichier\fR +.PP +.br +Afficher 120 octets convertis en continu, avec 20 octets par ligne. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd\-fr.1\fR +.br +2e54482058584420312022616ffb742031393936 +.br +22202250616765206465206d616e75656c20706f +.br +757220787864220a2e5c220a2e5c222032317374 +.br +204d617920313939360a2e5c22204d616e207061 +.br +676520617574686f723a0a2e5c2220202020546f +.br +6e79204e7567656e74203c746f6e79407363746e +.br +204e7567656e74203c746f6e79407363746e7567 +.br +2e54482058584420312022417567757374203139 +.PP +Convertir les 120 premiers octets de cette page de manuel avec 12 octets par +ligne. +.br +\fI% xxd \-l 120 \-c 12 xxd\-fr.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2261 .TH XXD 1 "a +.br +000000c: 6ffb 7420 3139 3936 2220 2250 o.t 1996" "P +.br +0000018: 6167 6520 6465 206d 616e 7565 age de manue +.br +0000024: 6c20 706f 7572 2078 7864 220a l pour xxd". +.br +0000030: 2e5c 220a 2e5c 2220 3231 7374 .\"..\" 21st +.br +000003c: 204d 6179 2031 3939 360a 2e5c May 1996..\ +.br +0000048: 2220 4d61 6e20 7061 6765 2061 " Man page a +.br +0000054: 7574 686f 723a 0a2e 5c22 2020 uthor:..\" +.br +0000060: 2020 546f 6e79 204e 7567 656e Tony Nugen +.br +000006c: 7420 3c74 6f6e 7940 7363 746e t fichier_sortie\fR +.PP +Patcher la date dans le fichier xxd.1 +.br +\fI% echo '0000037: 3574 68' | xxd \-r \- xxd\-fr.1\fR +.br +\fI% xxd \-s 0x38 \-l 13 \-c 13 xxd\-fr.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +Créer un fichier de 65537 octets tous nuls (0x00), +sauf le dernier qui vaut 'A' (0x41 en hexadécimal). +.br +\fI% echo '010000: 41' | xxd \-r \> fichier\fR +.PP +.br +Convertir le fichier de l'exemple précédent avec la fonctionnalité "autoskip". +.br +\fI% xxd \-a \-c 12 fichier\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Créer un fichier d'un octet, contenant seulement le caractère 'A'. +Le nombre après '\-r \-s' s'ajoute aux numéros de lignes trouvées dans le +fichier ; les octets initiaux sont supprimés. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> fichier\fR +.PP +Utiliser xxd comme filtre dans un éditeur tel que +.B vim(1) +pour convertir une zone comprise entre les marques 'a' et 'z'. +.br +\fI:'a,'z!xxd\fR +.PP +Utiliser xxd comme filtre dans un éditeur tel que +.B vim(1) +pour récupérer une conversion binaire comprise entre les marques 'a' et 'z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Utiliser xxd comme filtre dans un éditeur tel que +.B vim(1) +pour récupérer une ligne convertie. Placez le curseur sur la ligne et tapez : +.br +\fI!!xxd \-r\fR +.PP +Lire des caractères depuis une connexion série : +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.SH VALEURS DE RETOUR +Les erreurs suivantes sont rapportées : +.TP +0 +aucune erreur ne s'est produit. +.TP +\-1 +opération non supportée ( +.I xxd \-r \-i +reste impossible). +.TP +1 +erreur lors de l'analyse des options. +.TP +2 +problème avec le fichier d'entrée. +.TP +3 +problème avec le fichier de sortie. +.TP +4, 5 +la position spécifiée n'est pas atteignable. +.SH VOIR AUSSI +uuencode(1), uudecode(1), patch(1) +.SH AVERTISSEMENTS +L'étrangeté de cet outil reflète celle du cerveau de ses créateurs. +Utilisez cet outil à vos risques et périls. Dupliquez vos fichiers. +Surveillez l'outil. Devenez un gourou. +.SH VERSION +Cette page de manuel documente la version 1.7 de xxd. +.SH AUTEUR +(c) 1990-1997 par Juergen Weigert +.br + +.LP +"Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me." +.PP +Distribution libre en citant l'auteur, +.br +gagnez de l'argent, pensez à moi, +.br +perdez de l'argent, oubliez-moi. +.PP +Page de manuel débutée par Tony Nugent +.br + +.br +Modifications mineures par Bram Moolenaar. +Édité par Juergen Weigert. +.SH TRADUCTION +Cette page de manuel a été traduite par David Blanchet + 2004-12-24. +Mise à jour 2013-05-10, Dominique Pellé diff --git a/share/vim/vim74/doc/xxd-fr.UTF-8.1 b/share/vim/vim74/doc/xxd-fr.UTF-8.1 new file mode 100644 index 00000000..7956b3ba --- /dev/null +++ b/share/vim/vim74/doc/xxd-fr.UTF-8.1 @@ -0,0 +1,396 @@ +.TH XXD 1 "août 1996" "Page de manuel pour xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.\" French translation by David Blanchet 2005-03 +.SH NOM +.I xxd +\- convertit en représentation hexadécimale et inversement. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [fichier_entree [fichier_sortie]] +.br +.B xxd +\-r[evert] [options] [fichier_entree [fichier_sortie]] +.SH DESCRIPTION +.I xxd +crée un fichier contenant la représentation hexadécimale d'un fichier +binaire ou de l'entrée standard. +Il peut également convertir un fichier de codes hexadécimaux en un fichier +binaire. +Comme +.BR uuencode (1) +et +.BR uudecode (1) +il permet la transmission de données binaires dans une représentation ASCII +compatible avec le courrier électronique, mais a l'avantage de décoder la +sortie standard. +De plus, il peut être utilisé pour appliquer des rustines à des fichiers +binaires. +.SH OPTIONS +Si aucun +.I fichier_entree +n'est spécifié, l'entrée standard est utilisée. +Si +.I fichier_entree +correspond au caractère +.RB '\-' +\, l'entrée standard est employée comme source des données en entrée. +Si aucun +.I fichier_sortie +n'est spécifié (ou qu'un caractère +.RB '\-' +est donné à sa place), le résultat est envoyé sur la sortie standard. +.PP +NOTE : un analyseur paresseux est utilisé. Il ne vérifie pas au-delà de la +première lettre de l'option, à moins que cette dernière ne requiert un +paramètre. +L'espace entre l'option et son paramètre est optionnel. +Les paramètres des options peuvent être spécifiés en notation décimale, +hexadécimale ou octale. +Ainsi +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +et +.B \-cols 8 +sont tous équivalents. +.TP +.IR \-a " | " \-autoskip +active la fonctionnalité "autoskip" : le caractère '*' remplace les lignes +d'octets nuls. Désactivée par défaut. +.TP +.IR \-b " | " \-bits +Convertit en binaires plutôt qu'en hexadécimal. +Cette option écrit les octets comme une séquence de "1" et de "0" au lieu +d'une conversion en hexadécimal traditionnel. Chaque ligne est précédée par un +numéro de ligne en hexadécimal et suivie de la représentation ASCII (ou +EBCDIC) correspondante. Les options \-r, \-p, \-i ne fonctionnent pas dans ce +mode. +.TP +.IR "\-c cols " | " \-cols cols" +place +.RI < cols > +octets par ligne. 16 par défaut (\-i : 12, \-ps : 30, \-b : 6). Maximum 256. +.TP +.IR \-E " | " \-EBCDIC +Passe le codage des caractères de la colonne de droite de ASCII à EBCDIC. +Cela ne change pas la représentation hexadécimale. Cette option est sans effet +quand elle est utilisée avec \-r, \-p or \-i. +.TP +.IR "\-g octets " | " \-groupsize octets" +Regroupe les octets (deux chiffres hexadécimaux ou huit chiffres binaires) +par groupe de +.RI < octets > +\, séparés par des espaces blancs. Spécifiez +.I \-g 0 +pour supprimer le regroupement. +.RI < octets > +vaut 2 par défaut dans le mode normal et \fI1\fP en +représentation binaire. Le regroupement ne s'applique pas aux styles +Postscript et Include. +.TP +.IR \-h " | " \-help +Affiche un résumé des commandes disponibles et quitte. Aucune conversion n'est +effectuée. +.TP +.IR \-i " | " \-include +produit une sortie dans le style #include (fichier C à inclure). La définition +complète d'un tableau statique est écrite et est nommée d'après le fichier +d'origine, à moins que xxd lise depuis l'entrée standard. +.TP +.IR "\-l long " | " \-len long" +Arrête après l'écriture de +.RI < long > +octets. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +Produit une conversion continue dans le style Postscript (postscript continuous +hexdumd style). +Également connu sous le nom de « conversion brute » (plain hexdump style). +.TP +.IR \-r " | " \-revert +Opération inverse : convertit un fichier hexadécimal en un fichier binaire (ou +applique une rustine à un fichier binaire). +Si l'écriture n'a pas lieu sur la sortie standard, xxd écrit dans le fichier +qu'il produit sans le tronquer. Utilisez la combinaison +.I \-r \-p +pour lire de l'hexadécimal brut sans information sur le numéro des lignes et +sans format de colonnes particulier. Des espaces blancs et coupures de lignes +supplémentaires sont autorisés à n'importe quel endroit. +.TP +.I \-seek décalage +Utilisé après l'option +.IR \-r : +inverse la conversion en ajoutant +.RI < décalage > +aux positions dans le fichier données dans le code hexadécimal. +.TP +.I \-s [+][\-]décalage +Débute au +.RI < décalage > +absolu ou relatif dans fichier_entree. +\fI+ \fRindique que le décalage est relatif à la position courante dans +l'entrée standard (sans effet si la lecture n'a pas lieu sur l'entrée +standard). \fI\- \fRindique un décalage en caractères depuis la fin de +l'entrée (utilisé avec \fI+\fR, désigne la position avant la position +actuelle de l'entrée standard). +Sans l'option \-s, xxd démarre à la position courante du fichier. +.TP +.I \-u +Utilise des chiffres hexadécimaux majuscules. La casse par défaut est +minuscule. +.TP +.IR \-v " | " \-version +Affiche la version de xxd. +.SH MISE EN GARDE +.I xxd \-r +effectue des opérations internes un peu obscures lors de l'évaluation +des informations sur les numéros de lignes. Si le fichier de sortie est +adressable, alors les numéros de lignes au début de chaque ligne d'hexadécimal +peuvent être désordonnées, des lignes peuvent manquer ou se chevaucher. Dans +ces cas, xxd utilisera lseek(2) pour déterminer la prochaine position. Si le +fichier n'est pas adressable, seuls les vides sont autorisés, et ils seront +comblés par des octets nuls. +.PP +.I xxd \-r +ne génère aucune erreur lors de l'analyse. Les problèmes sont passés +silencieusement. +.PP +Lors de l'édition de la représentation hexadécimale, veuillez noter que +.I xxd \-r +ignore tout ce qui se trouve sur la ligne après avoir lu suffisamment de +données hexadécimales (voir l'option \-c). Cela signifie également que les +modifications dans la colonne ASCII (ou EBCDIC) sont toujours ignorées. La +conversion inverse de données hexadécimales brutes (postscript) avec xxd \-r +\-p ne dépend pas d'un nombre correct de colonnes. Dans ce cas, tout ce qui +ressemble à une paire de chiffres hexadécimaux est interprété. +.PP +Remarquez la différence entre +.br +\fI% xxd \-i fichier\fR +.br +et +.br +\fI% xxd \-i < fichier\fR +.PP +.I xxd \-s \+seek +peut différer de +.IR "xxd \-s seek" , +car lseek(2) est utilisé pour « revenir en arrière ». Le '+' fait une +différence quand la source des données est l'entrée standard et si la position +dans le fichier de l'entrée standard n'est pas au début du fichier lorsque xxd +est démarré et qu'il reçoit ses données. +L'exemple suivant peut vous aider à comprendre (ou bien vous perdre davantage +encore !)... +.PP +Remettre l'entrée standard au départ avant de lire ; nécessaire car 'cat' a +déjà lu jusqu'à la fin de l'entrée standard. +.br +\fI% sh \-c 'cat > donnees_binaires; xxd \-s 0 > donnees_hexa' < fichier\fR +.PP +Convertir à partir de la position 0x480 (= 1024 + 128) du fichier. +Le symbole '+' signifie "relativement à la position actuelle', ainsi 128 est +ajouté aux 1024 octets comptabilisés pour dd. +.br +\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +128 > +donnees_hexa' < fichier\fR +.PP +Convertir de fichier depuis la position 0x100 (= 1024 \- 768) du fichier. +.br +\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +\-768 > +donnees_hexa' < fichier\fR +.PP +Toutefois, cette situation est peu fréquente et l'utilisation de '+' est +rarement requise. L'auteur préfère surveiller les effets de xxd avec strace(1) +ou truss(1) quand \-s est employé. +.SH EXEMPLES +Afficher la totalité du +.B fichier +sauf les trois premières lignes (0x30 octets en hexadécimal). +.br +\fI% xxd \-s 0x30 fichier\fR +.PP +afficher les trois dernières lignes (0x30 octets en hexadécimal) du +.B fichier +\. +.br +\fI% xxd \-s \-0x30 fichier\fR +.PP +.br +Afficher 120 octets convertis en continu, avec 20 octets par ligne. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd\-fr.1\fR +.br +2e54482058584420312022616ffb742031393936 +.br +22202250616765206465206d616e75656c20706f +.br +757220787864220a2e5c220a2e5c222032317374 +.br +204d617920313939360a2e5c22204d616e207061 +.br +676520617574686f723a0a2e5c2220202020546f +.br +6e79204e7567656e74203c746f6e79407363746e +.br +204e7567656e74203c746f6e79407363746e7567 +.br +2e54482058584420312022417567757374203139 +.PP +Convertir les 120 premiers octets de cette page de manuel avec 12 octets par +ligne. +.br +\fI% xxd \-l 120 \-c 12 xxd\-fr.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2261 .TH XXD 1 "a +.br +000000c: 6ffb 7420 3139 3936 2220 2250 o.t 1996" "P +.br +0000018: 6167 6520 6465 206d 616e 7565 age de manue +.br +0000024: 6c20 706f 7572 2078 7864 220a l pour xxd". +.br +0000030: 2e5c 220a 2e5c 2220 3231 7374 .\"..\" 21st +.br +000003c: 204d 6179 2031 3939 360a 2e5c May 1996..\ +.br +0000048: 2220 4d61 6e20 7061 6765 2061 " Man page a +.br +0000054: 7574 686f 723a 0a2e 5c22 2020 uthor:..\" +.br +0000060: 2020 546f 6e79 204e 7567 656e Tony Nugen +.br +000006c: 7420 3c74 6f6e 7940 7363 746e t fichier_sortie\fR +.PP +Patcher la date dans le fichier xxd.1 +.br +\fI% echo '0000037: 3574 68' | xxd \-r \- xxd\-fr.1\fR +.br +\fI% xxd \-s 0x38 \-l 13 \-c 13 xxd\-fr.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +Créer un fichier de 65537 octets tous nuls (0x00), +sauf le dernier qui vaut 'A' (0x41 en hexadécimal). +.br +\fI% echo '010000: 41' | xxd \-r \> fichier\fR +.PP +.br +Convertir le fichier de l'exemple précédent avec la fonctionnalité "autoskip". +.br +\fI% xxd \-a \-c 12 fichier\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Créer un fichier d'un octet, contenant seulement le caractère 'A'. +Le nombre après '\-r \-s' s'ajoute aux numéros de lignes trouvées dans le +fichier ; les octets initiaux sont supprimés. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> fichier\fR +.PP +Utiliser xxd comme filtre dans un éditeur tel que +.B vim(1) +pour convertir une zone comprise entre les marques 'a' et 'z'. +.br +\fI:'a,'z!xxd\fR +.PP +Utiliser xxd comme filtre dans un éditeur tel que +.B vim(1) +pour récupérer une conversion binaire comprise entre les marques 'a' et 'z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Utiliser xxd comme filtre dans un éditeur tel que +.B vim(1) +pour récupérer une ligne convertie. Placez le curseur sur la ligne et tapez : +.br +\fI!!xxd \-r\fR +.PP +Lire des caractères depuis une connexion série : +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.SH VALEURS DE RETOUR +Les erreurs suivantes sont rapportées : +.TP +0 +aucune erreur ne s'est produit. +.TP +\-1 +opération non supportée ( +.I xxd \-r \-i +reste impossible). +.TP +1 +erreur lors de l'analyse des options. +.TP +2 +problème avec le fichier d'entrée. +.TP +3 +problème avec le fichier de sortie. +.TP +4, 5 +la position spécifiée n'est pas atteignable. +.SH VOIR AUSSI +uuencode(1), uudecode(1), patch(1) +.SH AVERTISSEMENTS +L'étrangeté de cet outil reflète celle du cerveau de ses créateurs. +Utilisez cet outil à vos risques et périls. Dupliquez vos fichiers. +Surveillez l'outil. Devenez un gourou. +.SH VERSION +Cette page de manuel documente la version 1.7 de xxd. +.SH AUTEUR +(c) 1990-1997 par Juergen Weigert +.br + +.LP +"Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me." +.PP +Distribution libre en citant l'auteur, +.br +gagnez de l'argent, pensez à moi, +.br +perdez de l'argent, oubliez-moi. +.PP +Page de manuel débutée par Tony Nugent +.br + +.br +Modifications mineures par Bram Moolenaar. +Édité par Juergen Weigert. +.SH TRADUCTION +Cette page de manuel a été traduite par David Blanchet + 2004-12-24. +Mise à jour 2013-05-10, Dominique Pellé diff --git a/share/vim/vim73/doc/xxd-it.1 b/share/vim/vim74/doc/xxd-it.1 similarity index 100% rename from share/vim/vim73/doc/xxd-it.1 rename to share/vim/vim74/doc/xxd-it.1 diff --git a/share/vim/vim73/doc/xxd-it.UTF-8.1 b/share/vim/vim74/doc/xxd-it.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/xxd-it.UTF-8.1 rename to share/vim/vim74/doc/xxd-it.UTF-8.1 diff --git a/share/vim/vim74/doc/xxd-ja.UTF-8.1 b/share/vim/vim74/doc/xxd-ja.UTF-8.1 new file mode 100644 index 00000000..8a8d54b0 --- /dev/null +++ b/share/vim/vim74/doc/xxd-ja.UTF-8.1 @@ -0,0 +1,366 @@ +.TH XXD 1 "August 1996" "Manual page for xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH 名前 +.I xxd +\- 16 進ダンプを作成したり、元に戻したり。 +.SH 書式 +.B xxd +\-h[elp] +.br +.B xxd +[options] [infile [outfile]] +.br +.B xxd +\-r[evert] [options] [infile [outfile]] +.SH 説明 +ファイルや標準入力から 16 進ダンプを作成します。 +16 進ダンプから元のバイナリに戻すこともできます。 +.BR uuencode (1) +や +.BR uudecode (1) +のように、バイナリデータを、メールに貼り付け可能な ASCII 形式に変換できた +り、標準出力に出力することもできます。 +さらに、バイナリファイルにパッチを当てるという使い方もできます。 +.SH オプション +.I infile +を指定しなかった場合は、標準入力が読み込まれます。 +.I infile +に +.RB \` \- ' +を指定した場合も、標準入力から読み込まれます。 +.I outfile +を指定しなかった (または +.RB \` \- ' +を指定した) 場合は、標準出力に出力されます。 +.PP +引数の解釈処理は適当なので注意してください。パラメータを取らない引数は +最初の一文字だけチェックされます。 +引数の文字とパラメータの間のスペースは省略可能です。 +パラメータは 10 進数、16 進数、8 進数で指定できます。 +.BR \-c8 +、 +.BR "\-c 8" +、 +.B \-c 010 +、 +.B \-cols 8 +はすべて同じ意味です。 +.PP +.TP +.IR \-a " | " \-autoskip +オートスキップ: 連続した nul 行を一つの '*' で置き換える。 +.TP +.IR \-b " | " \-bits +ビット (2進数) ダンプ。 +1 オクテットが "1" と "0" の 8 文字で出力されます。 +各行の行頭には 16 進数の行番号が表示されます。 +行末には ascii (または ebcdic) で表した場合の文字が表示されます。 +このモードでは \-r、\-p、\-i は機能しません。 +.TP +.IR "\-c cols " | " \-cols cols" +一行 +.RI < cols > +オクテットで出力する。標準設定は 16 (\-i: 12, \-ps: 30, \-b: 6)。最大 256。 +.TP +.IR \-E " | " \-EBCDIC +右端に出力される文字のエンコーディングを ASCII から EBCDIC に変更する。 +16 進ダンプの出力形式は変更されません。 +\-r、\-p、\-i が同時に指定された場合は何の効果もありません。 +.TP +.IR "\-g bytes " | " \-groupsize bytes" +出力を +.RI < bytes > +バイト (2 文字の 16 進数、または 8 文字の 2 進数) ごとにスペースで区切りま +す。 +区切らずに出力するには +.I \-g 0 +を指定してください。 +.RI < Bytes > +の標準設定は \fI2\fP です。2 進ダンプの場合は \fI1\fP です。 +ポストスクリプト形式やインクルード形式で出力するときは、このオプションは使わ +れません。 +.TP +.IR \-h " | " \-help +コマンドの説明を出力して終了する。変換は実行されません。 +.TP +.IR \-i " | " \-include +C インクルードファイル形式で出力します。入力ファイルの名前が付けられた静的配 +列の定義が出力されます。標準入力の場合は定義の中身だけ出力されます。 +.TP +.IR "\-l len " | " \-len len" +.RI < len > +オクテットだけ出力する。 +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +ポストスクリプト形式の 16 進ダンプを出力する。別名 プレーン 16 進ダンプ。 +.TP +.IR \-r " | " \-revert +元に戻す: 16 進ダンプからバイナリ形式に変換 (またはパッチ) します。 +ファイルへ出力する場合、出力先のファイルは切り詰めされません。 +行番号や特定の書式がないプレーン 16 進ダンプを読み込む場合は、 +.I \-r \-p +を指定してください。空白と改行は無視されます。 +.TP +.I \-seek offset +.IR \-r +の後で使われた場合: 16 進ダンプを出力するファイルの位置に +.RI < offset > +を加える。 +.TP +.I \-s [+][\-]seek +infile の +.RI < seek > +バイト目 (絶対位置、または相対位置) から開始する。 +\fI+ \fRは、現在の標準入力の位置から相対的な位置を示します +(標準入力から読み込むときのみ意味があります)。\fI\- \fRは、入力の終わりから +の文字数を示します (\fI+\fR と同時に指定した場合は、現在の標準入力の位置から +手前の位置を示します)。 +\-s 引数を指定しなかった場合は、現在のファイル位置から開始されます。 +.TP +.I \-u +16 進数の表記に大文字を使います。指定がない場合は小文字で出力されます。 +.TP +.IR \-v " | " \-version +バージョンを表示します。 +.SH 警告 +.PP +.I xxd \-r +では行番号の評価に関しての暗黙のルールがいくつかあります。 +出力ファイルがシーク可能なら、各行の行番号が順番通りに並んでなくても構いませ +ん。位置が飛んでいても重なっていても大丈夫です。その場合、次の位置に移動する +ために lseek(2) が使われます。 +出力ファイルがシーク不可なら、「隙間」だけが処理可能です。隙間は null バイト +で埋められます。 +.PP +.I xxd \-r +は不正な入力をエラーにしません。ゴミは静かに読み飛ばされます。 +.PP +16 進ダンプを編集するときは注意が必要です。 +.I xxd \-r +は必要な桁 (\-c 引数参照) だけ 16 進データを読み込んで、行の残りを無視しま +す。つまり、ascii (または ebcdic) を示している列への変更は無視されます。 +xxd \-r \-p でプレーン形式 (ポストスクリプト形式) の 16 進ダンプを元に戻す場 +合は、列の数は影響しません。 +2 桁の 16 進数と認識できるものはすべて変換されます。 +.PP +\fI% xxd \-i file\fR +.br +と +.br +\fI% xxd \-i < file\fR +.br +の結果は違います。注意してください。 +.PP +.I xxd \-s +seek +と +.IR "xxd \-s seek" , +の違いは、lseek(2) を使って入力を "巻き戻す" かどうかです。'+' が意味を持つ +のは、入力が標準入力で、xxd が起動されたときに標準入力のファイル位置がファイ +ルの先頭ではなかった場合です。 +以下の例が分かりやすいかもしれません (もっと混乱するかも!)... +.PP +`cat' が既に標準入力を終わりまで読んでいるので、読む前に標準入力を巻き戻す必 +要がある。 +.br +\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR +.PP +ファイル位置 0x480 (=1024+128) 前方から 16 進ダンプする。 +`+' は 「現在地からの相対位置」を意味するので、dd が 1k 処理した後から、さら +に `128' 進めます。 +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR +.PP +ファイル位置 0x100 ( = 1024\-768) から 16 進ダンプする。 +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR +.PP +このような使い方はあまりしませんし、`+' を使うこともほとんどないでしょう。 +\-s を使うときはいつでも、strace(1) や truss(1) を使って、xxd の働きをチェッ +クすることをお勧めします。 +.SH 例 +.PP +.br +.BR ファイル +の最初の三行 (16 進数で 0x30 バイト) 以降を出力する。 +.br +\fI% xxd \-s 0x30 file\fR +.PP +.br +.BR ファイル +の最後から三行 (16 進数で 0x30 バイト) を出力する。 +.br +\fI% xxd \-s \-0x30 file\fR +.PP +.br +120 バイトを、平文 16 進ダンプ形式で一行に 20 オクテットずつ出力する。 +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e54482058584420312022417567757374203139 +.br +39362220224d616e75616c207061676520666f72 +.br +20787864220a2e5c220a2e5c222032317374204d +.br +617920313939360a2e5c22204d616e2070616765 +.br +20617574686f723a0a2e5c2220202020546f6e79 +.br +204e7567656e74203c746f6e79407363746e7567 +.br + +.br +この man ページの先頭から 120 バイトを一行に 12 オクテットずつ 16 進ダンプす +る。 +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A +.br +000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" +.br +0000018: 224d 616e 7561 6c20 7061 6765 "Manual page +.br +0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ +.br +0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M +.br +000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" +.br +0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut +.br +0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" +.br +0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent +.br +000006c: 3c74 6f6e 7940 7363 746e 7567 output_file\fR +.br + +.br +xxd.1 の日付を修正する。 +.br +\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +.br +中身がすべて 0x00 の 65537 バイトのファイルを作成する。 +ただし、最後のバイトだけは 'A' (hex 0x41)。 +.br +\fI% echo "010000: 41" | xxd \-r > file\fR +.PP +.br +作成したファイルをオートスキップを使って 16 進ダンプする。 +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +一文字の 'A' からなる 1 バイトのファイルを作成する。 + '\-r \-s' の後に指定した数値がファイル中の行番号に加算され、結果、余計なバ +イトが飛ばされる。 +.br +\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR +.PP +.B vim(1) +の中から xxd をフィルタとして実行し、 +マークされた `a' から `z' までの領域を 16 進ダンプする。 +.br +\fI:'a,'z!xxd\fR +.PP +.B vim(1) +の中から xxd をフィルタとして実行し、 +マークされた `a' から `z' までの領域をバイナリに戻す。 +.br +\fI:'a,'z!xxd \-r\fR +.PP +.B vim(1) +の中から xxd をフィルタとして実行し、 +16 進ダンプされた行を元に戻す。戻したい行にカーソルを移動して: +.br +\fI!!xxd \-r\fR +.PP +シリアル行から一文字読み込む +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH 返り値 +以下のエラー値が返ります: +.TP +0 +エラーなし。 +.TP +\-1 +操作がサポートされていない ( +.I xxd \-r \-i +はまだ不可です)。 +.TP +1 +引数の解釈に関するエラー。 +.TP +2 +入力ファイルに関する問題。 +.TP +3 +出力ファイルに関する問題。 +.TP +4,5 +指定された位置へシークできなかった。 +.SH 関連項目 +uuencode(1), uudecode(1), patch(1) +.br +.SH 警告 +この奇妙なツールは作者が使いやすいように作られています。 +自己責任で使ってください。ファイルをコピーし、それを調べ、ウィザードたれ。 +.br +.SH バージョン +このマニュアルは xxd バージョン 1.7 について説明しています。 +.SH 著者 +.br +(c) 1990-1997 by Juergen Weigert +.br + +.LP +私の功績として自由に配布してください。 +.br +儲かったら教えてください。 +.br +損しても知りません。 +.PP +マニュアルは Tony Nugent +.br + +.br +によって書かれ、 +Bram Moolenaar が少し変更を加え、 +Juergen Weigert が編集しました。 +.PP diff --git a/share/vim/vim73/doc/xxd-pl.1 b/share/vim/vim74/doc/xxd-pl.1 similarity index 100% rename from share/vim/vim73/doc/xxd-pl.1 rename to share/vim/vim74/doc/xxd-pl.1 diff --git a/share/vim/vim73/doc/xxd-pl.UTF-8.1 b/share/vim/vim74/doc/xxd-pl.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/xxd-pl.UTF-8.1 rename to share/vim/vim74/doc/xxd-pl.UTF-8.1 diff --git a/share/vim/vim73/doc/xxd-ru.1 b/share/vim/vim74/doc/xxd-ru.1 similarity index 100% rename from share/vim/vim73/doc/xxd-ru.1 rename to share/vim/vim74/doc/xxd-ru.1 diff --git a/share/vim/vim73/doc/xxd-ru.UTF-8.1 b/share/vim/vim74/doc/xxd-ru.UTF-8.1 similarity index 100% rename from share/vim/vim73/doc/xxd-ru.UTF-8.1 rename to share/vim/vim74/doc/xxd-ru.UTF-8.1 diff --git a/share/vim/vim73/doc/xxd.1 b/share/vim/vim74/doc/xxd.1 similarity index 100% rename from share/vim/vim73/doc/xxd.1 rename to share/vim/vim74/doc/xxd.1 diff --git a/share/vim/vim73/doc/xxd.man b/share/vim/vim74/doc/xxd.man similarity index 100% rename from share/vim/vim73/doc/xxd.man rename to share/vim/vim74/doc/xxd.man diff --git a/share/vim/vim73/evim.vim b/share/vim/vim74/evim.vim similarity index 100% rename from share/vim/vim73/evim.vim rename to share/vim/vim74/evim.vim diff --git a/share/vim/vim74/filetype.vim b/share/vim/vim74/filetype.vim new file mode 100644 index 00000000..70c1fe13 --- /dev/null +++ b/share/vim/vim74/filetype.vim @@ -0,0 +1,2678 @@ +" Vim support file to detect file types +" +" Maintainer: Bram Moolenaar +" Last Change: 2013 Aug 03 + +" Listen very carefully, I will say this only once +if exists("did_load_filetypes") + finish +endif +let did_load_filetypes = 1 + +" Line continuation is used here, remove 'C' from 'cpoptions' +let s:cpo_save = &cpo +set cpo&vim + +augroup filetypedetect + +" Ignored extensions +if exists("*fnameescape") +au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.dpkg-dist,?\+.dpkg-old,?\+.dpkg-new,?\+.dpkg-bak,?\+.rpmsave,?\+.rpmnew + \ exe "doau filetypedetect BufRead " . fnameescape(expand(":r")) +au BufNewFile,BufRead *~ + \ let s:name = expand("") | + \ let s:short = substitute(s:name, '\~$', '', '') | + \ if s:name != s:short && s:short != "" | + \ exe "doau filetypedetect BufRead " . fnameescape(s:short) | + \ endif | + \ unlet! s:name s:short +au BufNewFile,BufRead ?\+.in + \ if expand(":t") != "configure.in" | + \ exe "doau filetypedetect BufRead " . fnameescape(expand(":r")) | + \ endif +elseif &verbose > 0 + echomsg "Warning: some filetypes will not be recognized because this version of Vim does not have fnameescape()" +endif + +" Pattern used to match file names which should not be inspected. +" Currently finds compressed files. +if !exists("g:ft_ignore_pat") + let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$' +endif + +" Function used for patterns that end in a star: don't set the filetype if the +" file name matches ft_ignore_pat. +func! s:StarSetf(ft) + if expand("") !~ g:ft_ignore_pat + exe 'setf ' . a:ft + endif +endfunc + +" Abaqus or Trasys +au BufNewFile,BufRead *.inp call s:Check_inp() + +func! s:Check_inp() + if getline(1) =~ '^\*' + setf abaqus + else + let n = 1 + if line("$") > 500 + let nmax = 500 + else + let nmax = line("$") + endif + while n <= nmax + if getline(n) =~? "^header surface data" + setf trasys + break + endif + let n = n + 1 + endwhile + endif +endfunc + +" A-A-P recipe +au BufNewFile,BufRead *.aap setf aap + +" A2ps printing utility +au BufNewFile,BufRead */etc/a2ps.cfg,*/etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps + +" ABAB/4 +au BufNewFile,BufRead *.abap setf abap + +" ABC music notation +au BufNewFile,BufRead *.abc setf abc + +" ABEL +au BufNewFile,BufRead *.abl setf abel + +" AceDB +au BufNewFile,BufRead *.wrm setf acedb + +" Ada (83, 9X, 95) +au BufNewFile,BufRead *.adb,*.ads,*.ada setf ada +if has("vms") + au BufNewFile,BufRead *.gpr,*.ada_m,*.adc setf ada +else + au BufNewFile,BufRead *.gpr setf ada +endif + +" AHDL +au BufNewFile,BufRead *.tdf setf ahdl + +" AMPL +au BufNewFile,BufRead *.run setf ampl + +" Ant +au BufNewFile,BufRead build.xml setf ant + +" Apache style config file +au BufNewFile,BufRead proftpd.conf* call s:StarSetf('apachestyle') + +" Apache config file +au BufNewFile,BufRead .htaccess,*/etc/httpd/*.conf setf apache + +" XA65 MOS6510 cross assembler +au BufNewFile,BufRead *.a65 setf a65 + +" Applescript +au BufNewFile,BufRead *.scpt setf applescript + +" Applix ELF +au BufNewFile,BufRead *.am + \ if expand("") !~? 'Makefile.am\>' | setf elf | endif + +" ALSA configuration +au BufNewFile,BufRead .asoundrc,*/usr/share/alsa/alsa.conf,*/etc/asound.conf setf alsaconf + +" Arc Macro Language +au BufNewFile,BufRead *.aml setf aml + +" APT config file +au BufNewFile,BufRead apt.conf setf aptconf +au BufNewFile,BufRead */.aptitude/config setf aptconf +au BufNewFile,BufRead */etc/apt/apt.conf.d/{[-_[:alnum:]]\+,[-_.[:alnum:]]\+.conf} setf aptconf + +" Arch Inventory file +au BufNewFile,BufRead .arch-inventory,=tagging-method setf arch + +" ART*Enterprise (formerly ART-IM) +au BufNewFile,BufRead *.art setf art + +" AsciiDoc +au BufNewFile,BufRead *.asciidoc setf asciidoc + +" ASN.1 +au BufNewFile,BufRead *.asn,*.asn1 setf asn + +" Active Server Pages (with Visual Basic Script) +au BufNewFile,BufRead *.asa + \ if exists("g:filetype_asa") | + \ exe "setf " . g:filetype_asa | + \ else | + \ setf aspvbs | + \ endif + +" Active Server Pages (with Perl or Visual Basic Script) +au BufNewFile,BufRead *.asp + \ if exists("g:filetype_asp") | + \ exe "setf " . g:filetype_asp | + \ elseif getline(1) . getline(2) . getline(3) =~? "perlscript" | + \ setf aspperl | + \ else | + \ setf aspvbs | + \ endif + +" Grub (must be before catch *.lst) +au BufNewFile,BufRead */boot/grub/menu.lst,*/boot/grub/grub.conf,*/etc/grub.conf setf grub + +" Assembly (all kinds) +" *.lst is not pure assembly, it has two extra columns (address, byte codes) +au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call s:FTasm() + +" This function checks for the kind of assembly that is wanted by the user, or +" can be detected from the first five lines of the file. +func! s:FTasm() + " make sure b:asmsyntax exists + if !exists("b:asmsyntax") + let b:asmsyntax = "" + endif + + if b:asmsyntax == "" + call s:FTasmsyntax() + endif + + " if b:asmsyntax still isn't set, default to asmsyntax or GNU + if b:asmsyntax == "" + if exists("g:asmsyntax") + let b:asmsyntax = g:asmsyntax + else + let b:asmsyntax = "asm" + endif + endif + + exe "setf " . fnameescape(b:asmsyntax) +endfunc + +func! s:FTasmsyntax() + " see if file contains any asmsyntax=foo overrides. If so, change + " b:asmsyntax appropriately + let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4). + \" ".getline(5)." " + let match = matchstr(head, '\sasmsyntax=\zs[a-zA-Z0-9]\+\ze\s') + if match != '' + let b:asmsyntax = match + elseif ((head =~? '\.title') || (head =~? '\.ident') || (head =~? '\.macro') || (head =~? '\.subtitle') || (head =~? '\.library')) + let b:asmsyntax = "vmasm" + endif +endfunc + +" Macro (VAX) +au BufNewFile,BufRead *.mar setf vmasm + +" Atlas +au BufNewFile,BufRead *.atl,*.as setf atlas + +" Autoit v3 +au BufNewFile,BufRead *.au3 setf autoit + +" Autohotkey +au BufNewFile,BufRead *.ahk setf autohotkey + +" Automake +au BufNewFile,BufRead [mM]akefile.am,GNUmakefile.am setf automake + +" Autotest .at files are actually m4 +au BufNewFile,BufRead *.at setf m4 + +" Avenue +au BufNewFile,BufRead *.ave setf ave + +" Awk +au BufNewFile,BufRead *.awk setf awk + +" B +au BufNewFile,BufRead *.mch,*.ref,*.imp setf b + +" BASIC or Visual Basic +au BufNewFile,BufRead *.bas call s:FTVB("basic") + +" Check if one of the first five lines contains "VB_Name". In that case it is +" probably a Visual Basic file. Otherwise it's assumed to be "alt" filetype. +func! s:FTVB(alt) + if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)' + setf vb + else + exe "setf " . a:alt + endif +endfunc + +" Visual Basic Script (close to Visual Basic) or Visual Basic .NET +au BufNewFile,BufRead *.vb,*.vbs,*.dsm,*.ctl setf vb + +" IBasic file (similar to QBasic) +au BufNewFile,BufRead *.iba,*.ibi setf ibasic + +" FreeBasic file (similar to QBasic) +au BufNewFile,BufRead *.fb,*.bi setf freebasic + +" Batch file for MSDOS. +au BufNewFile,BufRead *.bat,*.sys setf dosbatch +" *.cmd is close to a Batch file, but on OS/2 Rexx files also use *.cmd. +au BufNewFile,BufRead *.cmd + \ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif + +" Batch file for 4DOS +au BufNewFile,BufRead *.btm call s:FTbtm() +func! s:FTbtm() + if exists("g:dosbatch_syntax_for_btm") && g:dosbatch_syntax_for_btm + setf dosbatch + else + setf btm + endif +endfunc + +" BC calculator +au BufNewFile,BufRead *.bc setf bc + +" BDF font +au BufNewFile,BufRead *.bdf setf bdf + +" BibTeX bibliography database file +au BufNewFile,BufRead *.bib setf bib + +" BibTeX Bibliography Style +au BufNewFile,BufRead *.bst setf bst + +" BIND configuration +au BufNewFile,BufRead named.conf,rndc.conf setf named + +" BIND zone +au BufNewFile,BufRead named.root setf bindzone +au BufNewFile,BufRead *.db call s:BindzoneCheck('') + +func! s:BindzoneCheck(default) + if getline(1).getline(2).getline(3).getline(4) =~ '^; <<>> DiG [0-9.]\+ <<>>\|BIND.*named\|$ORIGIN\|$TTL\|IN\s\+SOA' + setf bindzone + elseif a:default != '' + exe 'setf ' . a:default + endif +endfunc + +" Blank +au BufNewFile,BufRead *.bl setf blank + +" Blkid cache file +au BufNewFile,BufRead */etc/blkid.tab,*/etc/blkid.tab.old setf xml + +" C or lpc +au BufNewFile,BufRead *.c call s:FTlpc() + +func! s:FTlpc() + if exists("g:lpc_syntax_for_c") + let lnum = 1 + while lnum <= 12 + if getline(lnum) =~# '^\(//\|inherit\|private\|protected\|nosave\|string\|object\|mapping\|mixed\)' + setf lpc + return + endif + let lnum = lnum + 1 + endwhile + endif + setf c +endfunc + +" Calendar +au BufNewFile,BufRead calendar setf calendar + +" C# +au BufNewFile,BufRead *.cs setf cs + +" CSDL +au BufNewFile,BufRead *.csdl setf csdl + +" Cabal +au BufNewFile,BufRead *.cabal setf cabal + +" Cdrdao TOC +au BufNewFile,BufRead *.toc setf cdrtoc + +" Cdrdao config +au BufNewFile,BufRead */etc/cdrdao.conf,*/etc/defaults/cdrdao,*/etc/default/cdrdao,.cdrdao setf cdrdaoconf + +" Cfengine +au BufNewFile,BufRead cfengine.conf setf cfengine + +" ChaiScript +au BufRead,BufNewFile *.chai setf chaiscript + +" Comshare Dimension Definition Language +au BufNewFile,BufRead *.cdl setf cdl + +" Conary Recipe +au BufNewFile,BufRead *.recipe setf conaryrecipe + +" Controllable Regex Mutilator +au BufNewFile,BufRead *.crm setf crm + +" Cyn++ +au BufNewFile,BufRead *.cyn setf cynpp + +" Cynlib +" .cc and .cpp files can be C++ or Cynlib. +au BufNewFile,BufRead *.cc + \ if exists("cynlib_syntax_for_cc")|setf cynlib|else|setf cpp|endif +au BufNewFile,BufRead *.cpp + \ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif + +" C++ +au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl setf cpp +if has("fname_case") + au BufNewFile,BufRead *.C,*.H setf cpp +endif + +" .h files can be C, Ch C++, ObjC or ObjC++. +" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is +" detected automatically. +au BufNewFile,BufRead *.h call s:FTheader() + +func! s:FTheader() + if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1 + if exists("g:c_syntax_for_h") + setf objc + else + setf objcpp + endif + elseif exists("g:c_syntax_for_h") + setf c + elseif exists("g:ch_syntax_for_h") + setf ch + else + setf cpp + endif +endfunc + +" Ch (CHscript) +au BufNewFile,BufRead *.chf setf ch + +" TLH files are C++ headers generated by Visual C++'s #import from typelibs +au BufNewFile,BufRead *.tlh setf cpp + +" Cascading Style Sheets +au BufNewFile,BufRead *.css setf css + +" Century Term Command Scripts (*.cmd too) +au BufNewFile,BufRead *.con setf cterm + +" Changelog +au BufNewFile,BufRead changelog.Debian,changelog.dch,NEWS.Debian,NEWS.dch + \ setf debchangelog + +au BufNewFile,BufRead [cC]hange[lL]og + \ if getline(1) =~ '; urgency=' + \| setf debchangelog + \| else + \| setf changelog + \| endif + +au BufNewFile,BufRead NEWS + \ if getline(1) =~ '; urgency=' + \| setf debchangelog + \| endif + +" CHILL +au BufNewFile,BufRead *..ch setf chill + +" Changes for WEB and CWEB or CHILL +au BufNewFile,BufRead *.ch call s:FTchange() + +" This function checks if one of the first ten lines start with a '@'. In +" that case it is probably a change file. +" If the first line starts with # or ! it's probably a ch file. +" If a line has "main", "include", "//" ir "/*" it's probably ch. +" Otherwise CHILL is assumed. +func! s:FTchange() + let lnum = 1 + while lnum <= 10 + if getline(lnum)[0] == '@' + setf change + return + endif + if lnum == 1 && (getline(1)[0] == '#' || getline(1)[0] == '!') + setf ch + return + endif + if getline(lnum) =~ "MODULE" + setf chill + return + endif + if getline(lnum) =~ 'main\s*(\|#\s*include\|//' + setf ch + return + endif + let lnum = lnum + 1 + endwhile + setf chill +endfunc + +" ChordPro +au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro setf chordpro + +" Clean +au BufNewFile,BufRead *.dcl,*.icl setf clean + +" Clever +au BufNewFile,BufRead *.eni setf cl + +" Clever or dtd +au BufNewFile,BufRead *.ent call s:FTent() + +func! s:FTent() + " This function checks for valid cl syntax in the first five lines. + " Look for either an opening comment, '#', or a block start, '{". + " If not found, assume SGML. + let lnum = 1 + while lnum < 6 + let line = getline(lnum) + if line =~ '^\s*[#{]' + setf cl + return + elseif line !~ '^\s*$' + " Not a blank line, not a comment, and not a block start, + " so doesn't look like valid cl code. + break + endif + let lnum = lnum + 1 + endw + setf dtd +endfunc + +" Clipper (or FoxPro; could also be eviews) +au BufNewFile,BufRead *.prg + \ if exists("g:filetype_prg") | + \ exe "setf " . g:filetype_prg | + \ else | + \ setf clipper | + \ endif + +" Clojure +au BufNewFile,BufRead *.clj,*.cljs setf clojure + +" Cmake +au BufNewFile,BufRead CMakeLists.txt,*.cmake,*.cmake.in setf cmake + +" Cmusrc +au BufNewFile,BufRead */.cmus/{autosave,rc,command-history,*.theme} setf cmusrc +au BufNewFile,BufRead */cmus/{rc,*.theme} setf cmusrc + +" Cobol +au BufNewFile,BufRead *.cbl,*.cob,*.lib setf cobol +" cobol or zope form controller python script? (heuristic) +au BufNewFile,BufRead *.cpy + \ if getline(1) =~ '^##' | + \ setf python | + \ else | + \ setf cobol | + \ endif + +" Coco/R +au BufNewFile,BufRead *.atg setf coco + +" Cold Fusion +au BufNewFile,BufRead *.cfm,*.cfi,*.cfc setf cf + +" Configure scripts +au BufNewFile,BufRead configure.in,configure.ac setf config + +" CUDA Cumpute Unified Device Architecture +au BufNewFile,BufRead *.cu setf cuda + +" WildPackets EtherPeek Decoder +au BufNewFile,BufRead *.dcd setf dcd + +" Enlightenment configuration files +au BufNewFile,BufRead *enlightenment/*.cfg setf c + +" Eterm +au BufNewFile,BufRead *Eterm/*.cfg setf eterm + +" Lynx config files +au BufNewFile,BufRead lynx.cfg setf lynx + +" Quake +au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg setf quake +au BufNewFile,BufRead *quake[1-3]/*.cfg setf quake + +" Quake C +au BufNewFile,BufRead *.qc setf c + +" Configure files +au BufNewFile,BufRead *.cfg setf cfg + +" Cucumber +au BufNewFile,BufRead *.feature setf cucumber + +" Communicating Sequential Processes +au BufNewFile,BufRead *.csp,*.fdr setf csp + +" CUPL logic description and simulation +au BufNewFile,BufRead *.pld setf cupl +au BufNewFile,BufRead *.si setf cuplsim + +" Debian Control +au BufNewFile,BufRead */debian/control setf debcontrol +au BufNewFile,BufRead control + \ if getline(1) =~ '^Source:' + \| setf debcontrol + \| endif + +" Debian Sources.list +au BufNewFile,BufRead */etc/apt/sources.list setf debsources +au BufNewFile,BufRead */etc/apt/sources.list.d/*.list setf debsources + +" Deny hosts +au BufNewFile,BufRead denyhosts.conf setf denyhosts + +" dnsmasq(8) configuration files +au BufNewFile,BufRead */etc/dnsmasq.conf setf dnsmasq + +" ROCKLinux package description +au BufNewFile,BufRead *.desc setf desc + +" the D language or dtrace +au BufNewFile,BufRead *.d call s:DtraceCheck() + +func! s:DtraceCheck() + let lines = getline(1, min([line("$"), 100])) + if match(lines, '^module\>\|^import\>') > -1 + " D files often start with a module and/or import statement. + setf d + elseif match(lines, '^#!\S\+dtrace\|#pragma\s\+D\s\+option\|:\S\{-}:\S\{-}:') > -1 + setf dtrace + else + setf d + endif +endfunc + +" Desktop files +au BufNewFile,BufRead *.desktop,.directory setf desktop + +" Dict config +au BufNewFile,BufRead dict.conf,.dictrc setf dictconf + +" Dictd config +au BufNewFile,BufRead dictd.conf setf dictdconf + +" Diff files +au BufNewFile,BufRead *.diff,*.rej,*.patch setf diff + +" Dircolors +au BufNewFile,BufRead .dir_colors,.dircolors,*/etc/DIR_COLORS setf dircolors + +" Diva (with Skill) or InstallShield +au BufNewFile,BufRead *.rul + \ if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield' | + \ setf ishd | + \ else | + \ setf diva | + \ endif + +" DCL (Digital Command Language - vms) or DNS zone file +au BufNewFile,BufRead *.com call s:BindzoneCheck('dcl') + +" DOT +au BufNewFile,BufRead *.dot setf dot + +" Dylan - lid files +au BufNewFile,BufRead *.lid setf dylanlid + +" Dylan - intr files (melange) +au BufNewFile,BufRead *.intr setf dylanintr + +" Dylan +au BufNewFile,BufRead *.dylan setf dylan + +" Microsoft Module Definition +au BufNewFile,BufRead *.def setf def + +" Dracula +au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe setf dracula + +" Datascript +au BufNewFile,BufRead *.ds setf datascript + +" dsl +au BufNewFile,BufRead *.dsl setf dsl + +" DTD (Document Type Definition for XML) +au BufNewFile,BufRead *.dtd setf dtd + +" DTS/DSTI (device tree files) +au BufNewFile,BufRead *.dts,*.dtsi setf dts + +" EDIF (*.edf,*.edif,*.edn,*.edo) +au BufNewFile,BufRead *.ed\(f\|if\|n\|o\) setf edif + +" Embedix Component Description +au BufNewFile,BufRead *.ecd setf ecd + +" Eiffel or Specman +au BufNewFile,BufRead *.e,*.E call s:FTe() + +" Elinks configuration +au BufNewFile,BufRead */etc/elinks.conf,*/.elinks/elinks.conf setf elinks + +func! s:FTe() + let n = 1 + while n < 100 && n < line("$") + if getline(n) =~ "^\\s*\\(<'\\|'>\\)\\s*$" + setf specman + return + endif + let n = n + 1 + endwhile + setf eiffel +endfunc + +" ERicsson LANGuage; Yaws is erlang too +au BufNewFile,BufRead *.erl,*.hrl,*.yaws setf erlang + +" Elm Filter Rules file +au BufNewFile,BufRead filter-rules setf elmfilt + +" ESMTP rc file +au BufNewFile,BufRead *esmtprc setf esmtprc + +" ESQL-C +au BufNewFile,BufRead *.ec,*.EC setf esqlc + +" Esterel +au BufNewFile,BufRead *.strl setf esterel + +" Essbase script +au BufNewFile,BufRead *.csc setf csc + +" Exim +au BufNewFile,BufRead exim.conf setf exim + +" Expect +au BufNewFile,BufRead *.exp setf expect + +" Exports +au BufNewFile,BufRead exports setf exports + +" Falcon +au BufNewFile,BufRead *.fal setf falcon + +" Fantom +au BufNewFile,BufRead *.fan,*.fwt setf fan + +" Factor +au BufNewFile,BufRead *.factor setf factor + +" Fetchmail RC file +au BufNewFile,BufRead .fetchmailrc setf fetchmail + +" FlexWiki - disabled, because it has side effects when a .wiki file +" is not actually FlexWiki +"au BufNewFile,BufRead *.wiki setf flexwiki + +" Focus Executable +au BufNewFile,BufRead *.fex,*.focexec setf focexec + +" Focus Master file (but not for auto.master) +au BufNewFile,BufRead auto.master setf conf +au BufNewFile,BufRead *.mas,*.master setf master + +" Forth +au BufNewFile,BufRead *.fs,*.ft setf forth + +" Reva Forth +au BufNewFile,BufRead *.frt setf reva + +" Fortran +if has("fname_case") + au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95,*.F03,*.F08 setf fortran +endif +au BufNewFile,BufRead *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95,*.f03,*.f08 setf fortran + +" Framescript +au BufNewFile,BufRead *.fsl setf framescript + +" FStab +au BufNewFile,BufRead fstab,mtab setf fstab + +" GDB command files +au BufNewFile,BufRead .gdbinit setf gdb + +" GDMO +au BufNewFile,BufRead *.mo,*.gdmo setf gdmo + +" Gedcom +au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom + +" Git +au BufNewFile,BufRead *.git/COMMIT_EDITMSG setf gitcommit +au BufNewFile,BufRead *.git/MERGE_MSG setf gitcommit +au BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules setf gitconfig +au BufNewFile,BufRead *.git/modules/*/COMMIT_EDITMSG setf gitcommit +au BufNewFile,BufRead *.git/modules/*/config setf gitconfig +au BufNewFile,BufRead */.config/git/config setf gitconfig +au BufNewFile,BufRead git-rebase-todo setf gitrebase +au BufNewFile,BufRead .msg.[0-9]* + \ if getline(1) =~ '^From.*# This line is ignored.$' | + \ setf gitsendemail | + \ endif +au BufNewFile,BufRead *.git/* + \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' | + \ setf git | + \ endif + +" Gkrellmrc +au BufNewFile,BufRead gkrellmrc,gkrellmrc_? setf gkrellmrc + +" GP scripts (2.0 and onward) +au BufNewFile,BufRead *.gp,.gprc setf gp + +" GPG +au BufNewFile,BufRead */.gnupg/options setf gpg +au BufNewFile,BufRead */.gnupg/gpg.conf setf gpg +au BufNewFile,BufRead */usr/*/gnupg/options.skel setf gpg + +" gnash(1) configuration files +au BufNewFile,BufRead gnashrc,.gnashrc,gnashpluginrc,.gnashpluginrc setf gnash + +" Gitolite +au BufNewFile,BufRead gitolite.conf setf gitolite +au BufNewFile,BufRead */gitolite-admin/conf/* call s:StarSetf('gitolite') +au BufNewFile,BufRead {,.}gitolite.rc,example.gitolite.rc setf perl + +" Gnuplot scripts +au BufNewFile,BufRead *.gpi setf gnuplot + +" GrADS scripts +au BufNewFile,BufRead *.gs setf grads + +" Gretl +au BufNewFile,BufRead *.gretl setf gretl + +" Groovy +au BufNewFile,BufRead *.groovy setf groovy + +" GNU Server Pages +au BufNewFile,BufRead *.gsp setf gsp + +" Group file +au BufNewFile,BufRead */etc/group,*/etc/group-,*/etc/group.edit,*/etc/gshadow,*/etc/gshadow-,*/etc/gshadow.edit,*/var/backups/group.bak,*/var/backups/gshadow.bak setf group + +" GTK RC +au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc + +" Haml +au BufNewFile,BufRead *.haml setf haml + +" Hamster Classic | Playground files +au BufNewFile,BufRead *.hsc,*.hsm setf hamster + +" Haskell +au BufNewFile,BufRead *.hs,*.hs-boot setf haskell +au BufNewFile,BufRead *.lhs setf lhaskell +au BufNewFile,BufRead *.chs setf chaskell + +" Haste +au BufNewFile,BufRead *.ht setf haste +au BufNewFile,BufRead *.htpp setf hastepreproc + +" Hercules +au BufNewFile,BufRead *.vc,*.ev,*.rs,*.sum,*.errsum setf hercules + +" HEX (Intel) +au BufNewFile,BufRead *.hex,*.h32 setf hex + +" Tilde (must be before HTML) +au BufNewFile,BufRead *.t.html setf tilde + +" HTML (.shtml and .stm for server side) +au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call s:FThtml() + +" Distinguish between HTML, XHTML and Django +func! s:FThtml() + let n = 1 + while n < 10 && n < line("$") + if getline(n) =~ '\' + setf htmldjango + return + endif + let n = n + 1 + endwhile + setf html +endfunc + +" HTML with Ruby - eRuby +au BufNewFile,BufRead *.erb,*.rhtml setf eruby + +" HTML with M4 +au BufNewFile,BufRead *.html.m4 setf htmlm4 + +" HTML Cheetah template +au BufNewFile,BufRead *.tmpl setf htmlcheetah + +" Host config +au BufNewFile,BufRead */etc/host.conf setf hostconf + +" Hosts access +au BufNewFile,BufRead */etc/hosts.allow,*/etc/hosts.deny setf hostsaccess + +" Hyper Builder +au BufNewFile,BufRead *.hb setf hb + +" Httest +au BufNewFile,BufRead *.htt,*.htb setf httest + +" Icon +au BufNewFile,BufRead *.icn setf icon + +" IDL (Interface Description Language) +au BufNewFile,BufRead *.idl call s:FTidl() + +" Distinguish between standard IDL and MS-IDL +func! s:FTidl() + let n = 1 + while n < 50 && n < line("$") + if getline(n) =~ '^\s*import\s\+"\(unknwn\|objidl\)\.idl"' + setf msidl + return + endif + let n = n + 1 + endwhile + setf idl +endfunc + +" Microsoft IDL (Interface Description Language) Also *.idl +" MOF = WMI (Windows Management Instrumentation) Managed Object Format +au BufNewFile,BufRead *.odl,*.mof setf msidl + +" Icewm menu +au BufNewFile,BufRead */.icewm/menu setf icemenu + +" Indent profile (must come before IDL *.pro!) +au BufNewFile,BufRead .indent.pro setf indent +au BufNewFile,BufRead indent.pro call s:ProtoCheck('indent') + +" IDL (Interactive Data Language) +au BufNewFile,BufRead *.pro call s:ProtoCheck('idlang') + +" Distinguish between "default" and Cproto prototype file. */ +func! s:ProtoCheck(default) + " Cproto files have a comment in the first line and a function prototype in + " the second line, it always ends in ";". Indent files may also have + " comments, thus we can't match comments to see the difference. + " IDL files can have a single ';' in the second line, require at least one + " chacter before the ';'. + if getline(2) =~ '.;$' + setf cpp + else + exe 'setf ' . a:default + endif +endfunc + + +" Indent RC +au BufNewFile,BufRead indentrc setf indent + +" Inform +au BufNewFile,BufRead *.inf,*.INF setf inform + +" Initng +au BufNewFile,BufRead */etc/initng/*/*.i,*.ii setf initng + +" Innovation Data Processing +au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat +au BufRead,BufNewFile upstream.log\c,upstream.*.log\c,*.upstream.log\c setf upstreamlog +au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog +au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog +au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog + +" Ipfilter +au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules setf ipfilter + +" Informix 4GL (source - canonical, include file, I4GL+M4 preproc.) +au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl setf fgl + +" .INI file for MSDOS +au BufNewFile,BufRead *.ini setf dosini + +" SysV Inittab +au BufNewFile,BufRead inittab setf inittab + +" Inno Setup +au BufNewFile,BufRead *.iss setf iss + +" JAL +au BufNewFile,BufRead *.jal,*.JAL setf jal + +" Jam +au BufNewFile,BufRead *.jpl,*.jpr setf jam + +" Java +au BufNewFile,BufRead *.java,*.jav setf java + +" JavaCC +au BufNewFile,BufRead *.jj,*.jjt setf javacc + +" JavaScript, ECMAScript +au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx,*.json setf javascript + +" Java Server Pages +au BufNewFile,BufRead *.jsp setf jsp + +" Java Properties resource file (note: doesn't catch font.properties.pl) +au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_?? setf jproperties +au BufNewFile,BufRead *.properties_??_??_* call s:StarSetf('jproperties') + +" Jess +au BufNewFile,BufRead *.clp setf jess + +" Jgraph +au BufNewFile,BufRead *.jgr setf jgraph + +" Jovial +au BufNewFile,BufRead *.jov,*.j73,*.jovial setf jovial + +" Kixtart +au BufNewFile,BufRead *.kix setf kix + +" Kimwitu[++] +au BufNewFile,BufRead *.k setf kwt + +" KDE script +au BufNewFile,BufRead *.ks setf kscript + +" Kconfig +au BufNewFile,BufRead Kconfig,Kconfig.debug setf kconfig + +" Lace (ISE) +au BufNewFile,BufRead *.ace,*.ACE setf lace + +" Latte +au BufNewFile,BufRead *.latte,*.lte setf latte + +" Limits +au BufNewFile,BufRead */etc/limits,*/etc/*limits.conf,*/etc/*limits.d/*.conf setf limits + +" LambdaProlog (*.mod too, see Modsim) +au BufNewFile,BufRead *.sig setf lprolog + +" LDAP LDIF +au BufNewFile,BufRead *.ldif setf ldif + +" Ld loader +au BufNewFile,BufRead *.ld setf ld + +" Lex +au BufNewFile,BufRead *.lex,*.l setf lex + +" Libao +au BufNewFile,BufRead */etc/libao.conf,*/.libao setf libao + +" Libsensors +au BufNewFile,BufRead */etc/sensors.conf,*/etc/sensors3.conf setf sensors + +" LFTP +au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc setf lftp + +" Lifelines (or Lex for C++!) +au BufNewFile,BufRead *.ll setf lifelines + +" Lilo: Linux loader +au BufNewFile,BufRead lilo.conf setf lilo + +" Lisp (*.el = ELisp, *.cl = Common Lisp, *.jl = librep Lisp) +if has("fname_case") + au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,*.L,.emacs,.sawfishrc setf lisp +else + au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,.emacs,.sawfishrc setf lisp +endif + +" SBCL implementation of Common Lisp +au BufNewFile,BufRead sbclrc,.sbclrc setf lisp + +" Liquid +au BufNewFile,BufRead *.liquid setf liquid + +" Lite +au BufNewFile,BufRead *.lite,*.lt setf lite + +" LiteStep RC files +au BufNewFile,BufRead */LiteStep/*/*.rc setf litestep + +" Login access +au BufNewFile,BufRead */etc/login.access setf loginaccess + +" Login defs +au BufNewFile,BufRead */etc/login.defs setf logindefs + +" Logtalk +au BufNewFile,BufRead *.lgt setf logtalk + +" LOTOS +au BufNewFile,BufRead *.lot,*.lotos setf lotos + +" Lout (also: *.lt) +au BufNewFile,BufRead *.lou,*.lout setf lout + +" Lua +au BufNewFile,BufRead *.lua setf lua + +" Linden Scripting Language (Second Life) +au BufNewFile,BufRead *.lsl setf lsl + +" Lynx style file (or LotusScript!) +au BufNewFile,BufRead *.lss setf lss + +" M4 +au BufNewFile,BufRead *.m4 + \ if expand("") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif + +" MaGic Point +au BufNewFile,BufRead *.mgp setf mgp + +" Mail (for Elm, trn, mutt, muttng, rn, slrn) +au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\\\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail + +" Mail aliases +au BufNewFile,BufRead */etc/mail/aliases,*/etc/aliases setf mailaliases + +" Mailcap configuration file +au BufNewFile,BufRead .mailcap,mailcap setf mailcap + +" Makefile +au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make + +" MakeIndex +au BufNewFile,BufRead *.ist,*.mst setf ist + +" Mallard +au BufNewFile,BufRead *.page setf mallard + +" Manpage +au BufNewFile,BufRead *.man setf man + +" Man config +au BufNewFile,BufRead */etc/man.conf,man.config setf manconf + +" Maple V +au BufNewFile,BufRead *.mv,*.mpl,*.mws setf maple + +" Map (UMN mapserver config file) +au BufNewFile,BufRead *.map setf map + +" Markdown +au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,README.md setf markdown + +" Mason +au BufNewFile,BufRead *.mason,*.mhtml setf mason + +" Matlab or Objective C +au BufNewFile,BufRead *.m call s:FTm() + +func! s:FTm() + let n = 1 + while n < 10 + let line = getline(n) + if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\|//\)' + setf objc + return + endif + if line =~ '^\s*%' + setf matlab + return + endif + if line =~ '^\s*(\*' + setf mma + return + endif + let n = n + 1 + endwhile + if exists("g:filetype_m") + exe "setf " . g:filetype_m + else + setf matlab + endif +endfunc + +" Mathematica notebook +au BufNewFile,BufRead *.nb setf mma + +" Maya Extension Language +au BufNewFile,BufRead *.mel setf mel + +" Mercurial (hg) commit file +au BufNewFile,BufRead hg-editor-*.txt setf hgcommit + +" Mercurial config (looks like generic config file) +au BufNewFile,BufRead *.hgrc,*hgrc setf cfg + +" Messages (logs mostly) +au BufNewFile,BufRead */log/{auth,cron,daemon,debug,kern,lpr,mail,messages,news/news,syslog,user}{,.log,.err,.info,.warn,.crit,.notice}{,.[0-9]*,-[0-9]*} setf messages + +" Metafont +au BufNewFile,BufRead *.mf setf mf + +" MetaPost +au BufNewFile,BufRead *.mp setf mp + +" MGL +au BufNewFile,BufRead *.mgl setf mgl + +" MMIX or VMS makefile +au BufNewFile,BufRead *.mms call s:FTmms() + +" Symbian meta-makefile definition (MMP) +au BufNewFile,BufRead *.mmp setf mmp + +func! s:FTmms() + let n = 1 + while n < 10 + let line = getline(n) + if line =~ '^\s*\(%\|//\)' || line =~ '^\*' + setf mmix + return + endif + if line =~ '^\s*#' + setf make + return + endif + let n = n + 1 + endwhile + setf mmix +endfunc + + +" Modsim III (or LambdaProlog) +au BufNewFile,BufRead *.mod + \ if getline(1) =~ '\' | + \ setf lprolog | + \ else | + \ setf modsim3 | + \ endif + +" Modula 2 +au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2 + +" Modula 3 (.m3, .i3, .mg, .ig) +au BufNewFile,BufRead *.[mi][3g] setf modula3 + +" Monk +au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc setf monk + +" MOO +au BufNewFile,BufRead *.moo setf moo + +" Modconf +au BufNewFile,BufRead */etc/modules.conf,*/etc/modules,*/etc/conf.modules setf modconf + +" Mplayer config +au BufNewFile,BufRead mplayer.conf,*/.mplayer/config setf mplayerconf + +" Moterola S record +au BufNewFile,BufRead *.s19,*.s28,*.s37 setf srec + +" Mrxvtrc +au BufNewFile,BufRead mrxvtrc,.mrxvtrc setf mrxvtrc + +" Msql +au BufNewFile,BufRead *.msql setf msql + +" Mysql +au BufNewFile,BufRead *.mysql setf mysql + +" Mutt setup files (must be before catch *.rc) +au BufNewFile,BufRead */etc/Muttrc.d/* call s:StarSetf('muttrc') + +" M$ Resource files +au BufNewFile,BufRead *.rc,*.rch setf rc + +" MuPAD source +au BufRead,BufNewFile *.mu setf mupad + +" Mush +au BufNewFile,BufRead *.mush setf mush + +" Mutt setup file (also for Muttng) +au BufNewFile,BufRead Mutt{ng,}rc setf muttrc + +" Nano +au BufNewFile,BufRead */etc/nanorc,.nanorc setf nanorc + +" Nastran input/DMAP +"au BufNewFile,BufRead *.dat setf nastran + +" Natural +au BufNewFile,BufRead *.NS[ACGLMNPS] setf natural + +" Netrc +au BufNewFile,BufRead .netrc setf netrc + +" Ninja file +au BufNewFile,BufRead *.ninja setf ninja + +" Novell netware batch files +au BufNewFile,BufRead *.ncf setf ncf + +" Nroff/Troff (*.ms and *.t are checked below) +au BufNewFile,BufRead *.me + \ if expand("") != "read.me" && expand("") != "click.me" | + \ setf nroff | + \ endif +au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom setf nroff +au BufNewFile,BufRead *.[1-9] call s:FTnroff() + +" This function checks if one of the first five lines start with a dot. In +" that case it is probably an nroff file: 'filetype' is set and 1 is returned. +func! s:FTnroff() + if getline(1)[0] . getline(2)[0] . getline(3)[0] . getline(4)[0] . getline(5)[0] =~ '\.' + setf nroff + return 1 + endif + return 0 +endfunc + +" Nroff or Objective C++ +au BufNewFile,BufRead *.mm call s:FTmm() + +func! s:FTmm() + let n = 1 + while n < 10 + let line = getline(n) + if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)' + setf objcpp + return + endif + let n = n + 1 + endwhile + setf nroff +endfunc + +" Not Quite C +au BufNewFile,BufRead *.nqc setf nqc + +" NSIS +au BufNewFile,BufRead *.nsi,*.nsh setf nsis + +" OCAML +au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly,.ocamlinit setf ocaml + +" Occam +au BufNewFile,BufRead *.occ setf occam + +" Omnimark +au BufNewFile,BufRead *.xom,*.xin setf omnimark + +" OpenROAD +au BufNewFile,BufRead *.or setf openroad + +" OPL +au BufNewFile,BufRead *.[Oo][Pp][Ll] setf opl + +" Oracle config file +au BufNewFile,BufRead *.ora setf ora + +" Packet filter conf +au BufNewFile,BufRead pf.conf setf pf + +" Pam conf +au BufNewFile,BufRead */etc/pam.conf setf pamconf + +" PApp +au BufNewFile,BufRead *.papp,*.pxml,*.pxsl setf papp + +" Password file +au BufNewFile,BufRead */etc/passwd,*/etc/passwd-,*/etc/passwd.edit,*/etc/shadow,*/etc/shadow-,*/etc/shadow.edit,*/var/backups/passwd.bak,*/var/backups/shadow.bak setf passwd + +" Pascal (also *.p) +au BufNewFile,BufRead *.pas setf pascal + +" Delphi project file +au BufNewFile,BufRead *.dpr setf pascal + +" PDF +au BufNewFile,BufRead *.pdf setf pdf + +" Perl +if has("fname_case") + au BufNewFile,BufRead *.pl,*.PL call s:FTpl() +else + au BufNewFile,BufRead *.pl call s:FTpl() +endif +au BufNewFile,BufRead *.plx,*.al setf perl +au BufNewFile,BufRead *.p6,*.pm6 setf perl6 + +func! s:FTpl() + if exists("g:filetype_pl") + exe "setf " . g:filetype_pl + else + " recognize Prolog by specific text in the first non-empty line + " require a blank after the '%' because Perl uses "%list" and "%translate" + let l = getline(nextnonblank(1)) + if l =~ '\' || l =~ '^\s*\(%\+\(\s\|$\)\|/\*\)' || l =~ ':-' + setf prolog + else + setf perl + endif + endif +endfunc + +" Perl, XPM or XPM2 +au BufNewFile,BufRead *.pm + \ if getline(1) =~ "XPM2" | + \ setf xpm2 | + \ elseif getline(1) =~ "XPM" | + \ setf xpm | + \ else | + \ setf perl | + \ endif + +" Perl POD +au BufNewFile,BufRead *.pod setf pod + +" Php, php3, php4, etc. +" Also Phtml (was used for PHP 2 in the past) +" Also .ctp for Cake template file +au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp setf php + +" Pike +au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod setf pike + +" Pinfo config +au BufNewFile,BufRead */etc/pinforc,*/.pinforc setf pinfo + +" Palm Resource compiler +au BufNewFile,BufRead *.rcp setf pilrc + +" Pine config +au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex setf pine + +" PL/1, PL/I +au BufNewFile,BufRead *.pli,*.pl1 setf pli + +" PL/M (also: *.inp) +au BufNewFile,BufRead *.plm,*.p36,*.pac setf plm + +" PL/SQL +au BufNewFile,BufRead *.pls,*.plsql setf plsql + +" PLP +au BufNewFile,BufRead *.plp setf plp + +" PO and PO template (GNU gettext) +au BufNewFile,BufRead *.po,*.pot setf po + +" Postfix main config +au BufNewFile,BufRead main.cf setf pfmain + +" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator) +au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai setf postscr + +" PostScript Printer Description +au BufNewFile,BufRead *.ppd setf ppd + +" Povray +au BufNewFile,BufRead *.pov setf pov + +" Povray configuration +au BufNewFile,BufRead .povrayrc setf povini + +" Povray, PHP or assembly +au BufNewFile,BufRead *.inc call s:FTinc() + +func! s:FTinc() + if exists("g:filetype_inc") + exe "setf " . g:filetype_inc + else + let lines = getline(1).getline(2).getline(3) + if lines =~? "perlscript" + setf aspperl + elseif lines =~ "<%" + setf aspvbs + elseif lines =~ "' + \ || line =~ '^\s*{' || line =~ '^\s*(\*' + setf pascal + return + elseif line !~ '^\s*$' || line =~ '^/\*' + " Not an empty line: Doesn't look like valid Pascal code. + " Or it looks like a Progress /* comment + break + endif + let lnum = lnum + 1 + endw + setf progress +endfunc + + +" Software Distributor Product Specification File (POSIX 1387.2-1995) +au BufNewFile,BufRead *.psf setf psf +au BufNewFile,BufRead INDEX,INFO + \ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' | + \ setf psf | + \ endif + +" Prolog +au BufNewFile,BufRead *.pdb setf prolog + +" Promela +au BufNewFile,BufRead *.pml setf promela + +" Google protocol buffers +au BufNewFile,BufRead *.proto setf proto + +" Protocols +au BufNewFile,BufRead */etc/protocols setf protocols + +" Pyrex +au BufNewFile,BufRead *.pyx,*.pxd setf pyrex + +" Python +au BufNewFile,BufRead *.py,*.pyw setf python + +" Quixote (Python-based web framework) +au BufNewFile,BufRead *.ptl setf python + +" Radiance +au BufNewFile,BufRead *.rad,*.mat setf radiance + +" Ratpoison config/command files +au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc setf ratpoison + +" RCS file +au BufNewFile,BufRead *\,v setf rcs + +" Readline +au BufNewFile,BufRead .inputrc,inputrc setf readline + +" Registry for MS-Windows +au BufNewFile,BufRead *.reg + \ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif + +" Renderman Interface Bytestream +au BufNewFile,BufRead *.rib setf rib + +" Rexx +au BufNewFile,BufRead *.rex,*.orx,*.rxo,*.rxj,*.jrexx,*.rexxj,*.rexx,*.testGroup,*.testUnit setf rexx + +" R (Splus) +if has("fname_case") + au BufNewFile,BufRead *.s,*.S setf r +else + au BufNewFile,BufRead *.s setf r +endif + +" R Help file +if has("fname_case") + au BufNewFile,BufRead *.rd,*.Rd setf rhelp +else + au BufNewFile,BufRead *.rd setf rhelp +endif + +" R noweb file +if has("fname_case") + au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw setf rnoweb +else + au BufNewFile,BufRead *.rnw,*.snw setf rnoweb +endif + +" Rexx, Rebol or R +au BufNewFile,BufRead *.r,*.R call s:FTr() + +func! s:FTr() + let max = line("$") > 50 ? 50 : line("$") + + for n in range(1, max) + " Rebol is easy to recognize, check for that first + if getline(n) =~? '\' + setf rebol + return + endif + endfor + + for n in range(1, max) + " R has # comments + if getline(n) =~ '^\s*#' + setf r + return + endif + " Rexx has /* comments */ + if getline(n) =~ '^\s*/\*' + setf rexx + return + endif + endfor + + " Nothing recognized, use user default or assume Rexx + if exists("g:filetype_r") + exe "setf " . g:filetype_r + else + " Rexx used to be the default, but R appears to be much more popular. + setf r + endif +endfunc + +" Remind +au BufNewFile,BufRead .reminders,*.remind,*.rem setf remind + +" Resolv.conf +au BufNewFile,BufRead resolv.conf setf resolv + +" Relax NG Compact +au BufNewFile,BufRead *.rnc setf rnc + +" Relax NG XML +au BufNewFile,BufRead *.rng setf rng + +" RPL/2 +au BufNewFile,BufRead *.rpl setf rpl + +" Robots.txt +au BufNewFile,BufRead robots.txt setf robots + +" Rpcgen +au BufNewFile,BufRead *.x setf rpcgen + +" reStructuredText Documentation Format +au BufNewFile,BufRead *.rst setf rst + +" RTF +au BufNewFile,BufRead *.rtf setf rtf + +" Interactive Ruby shell +au BufNewFile,BufRead .irbrc,irbrc setf ruby + +" Ruby +au BufNewFile,BufRead *.rb,*.rbw setf ruby + +" RubyGems +au BufNewFile,BufRead *.gemspec setf ruby + +" Rackup +au BufNewFile,BufRead *.ru setf ruby + +" Bundler +au BufNewFile,BufRead Gemfile setf ruby + +" Ruby on Rails +au BufNewFile,BufRead *.builder,*.rxml,*.rjs setf ruby + +" Rantfile and Rakefile is like Ruby +au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake setf ruby + +" S-lang (or shader language, or SmallLisp) +au BufNewFile,BufRead *.sl setf slang + +" Samba config +au BufNewFile,BufRead smb.conf setf samba + +" SAS script +au BufNewFile,BufRead *.sas setf sas + +" Sass +au BufNewFile,BufRead *.sass setf sass + +" Sather +au BufNewFile,BufRead *.sa setf sather + +" Scilab +au BufNewFile,BufRead *.sci,*.sce setf scilab + +" SCSS +au BufNewFile,BufRead *.scss setf scss + +" SD: Streaming Descriptors +au BufNewFile,BufRead *.sd setf sd + +" SDL +au BufNewFile,BufRead *.sdl,*.pr setf sdl + +" sed +au BufNewFile,BufRead *.sed setf sed + +" Sieve (RFC 3028) +au BufNewFile,BufRead *.siv setf sieve + +" Sendmail +au BufNewFile,BufRead sendmail.cf setf sm + +" Sendmail .mc files are actually m4. Could also be MS Message text file. +au BufNewFile,BufRead *.mc call s:McSetf() + +func! s:McSetf() + " Rely on the file to start with a comment. + " MS message text files use ';', Sendmail files use '#' or 'dnl' + for lnum in range(1, min([line("$"), 20])) + let line = getline(lnum) + if line =~ '^\s*\(#\|dnl\)' + setf m4 " Sendmail .mc file + return + elseif line =~ '^\s*;' + setf msmessages " MS Message text file + return + endif + endfor + setf m4 " Default: Sendmail .mc file +endfunc + +" Services +au BufNewFile,BufRead */etc/services setf services + +" Service Location config +au BufNewFile,BufRead */etc/slp.conf setf slpconf + +" Service Location registration +au BufNewFile,BufRead */etc/slp.reg setf slpreg + +" Service Location SPI +au BufNewFile,BufRead */etc/slp.spi setf slpspi + +" Setserial config +au BufNewFile,BufRead */etc/serial.conf setf setserial + +" SGML +au BufNewFile,BufRead *.sgm,*.sgml + \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' | + \ setf sgmllnx | + \ elseif getline(1) =~ '") =~ g:ft_ignore_pat + return + endif + if a:name =~ '\' + " Some .sh scripts contain #!/bin/csh. + call SetFileTypeShell("csh") + return + elseif a:name =~ '\' + " Some .sh scripts contain #!/bin/tcsh. + call SetFileTypeShell("tcsh") + return + elseif a:name =~ '\' + " Some .sh scripts contain #!/bin/zsh. + call SetFileTypeShell("zsh") + return + elseif a:name =~ '\' + let b:is_kornshell = 1 + if exists("b:is_bash") + unlet b:is_bash + endif + if exists("b:is_sh") + unlet b:is_sh + endif + elseif exists("g:bash_is_sh") || a:name =~ '\' || a:name =~ '\' + let b:is_bash = 1 + if exists("b:is_kornshell") + unlet b:is_kornshell + endif + if exists("b:is_sh") + unlet b:is_sh + endif + elseif a:name =~ '\' + let b:is_sh = 1 + if exists("b:is_kornshell") + unlet b:is_kornshell + endif + if exists("b:is_bash") + unlet b:is_bash + endif + endif + call SetFileTypeShell("sh") +endfunc + +" For shell-like file types, check for an "exec" command hidden in a comment, +" as used for Tcl. +" Also called from scripts.vim, thus can't be local to this script. +func! SetFileTypeShell(name) + if expand("") =~ g:ft_ignore_pat + return + endif + let l = 2 + while l < 20 && l < line("$") && getline(l) =~ '^\s*\(#\|$\)' + " Skip empty and comment lines. + let l = l + 1 + endwhile + if l < line("$") && getline(l) =~ '\s*exec\s' && getline(l - 1) =~ '^\s*#.*\\$' + " Found an "exec" line after a comment with continuation + let n = substitute(getline(l),'\s*exec\s\+\([^ ]*/\)\=', '', '') + if n =~ '\' | + \ setf xml | + \ else | + \ setf smil | + \ endif + +" SMIL or SNMP MIB file +au BufNewFile,BufRead *.smi + \ if getline(1) =~ '\' | + \ setf smil | + \ else | + \ setf mib | + \ endif + +" SMITH +au BufNewFile,BufRead *.smt,*.smith setf smith + +" Snobol4 and spitbol +au BufNewFile,BufRead *.sno,*.spt setf snobol4 + +" SNMP MIB files +au BufNewFile,BufRead *.mib,*.my setf mib + +" Snort Configuration +au BufNewFile,BufRead *.hog,snort.conf,vision.conf setf hog +au BufNewFile,BufRead *.rules call s:FTRules() + +let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*' +func! s:FTRules() + let path = expand(':p') + if path =~ '^/\(etc/udev/\%(rules\.d/\)\=.*\.rules\|lib/udev/\%(rules\.d/\)\=.*\.rules\)$' + setf udevrules + return + endif + if path =~ '^/etc/ufw/' + setf conf " Better than hog + return + endif + try + let config_lines = readfile('/etc/udev/udev.conf') + catch /^Vim\%((\a\+)\)\=:E484/ + setf hog + return + endtry + let dir = expand(':p:h') + for line in config_lines + if line =~ s:ft_rules_udev_rules_pattern + let udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "") + if dir == udev_rules + setf udevrules + endif + break + endif + endfor + setf hog +endfunc + + +" Spec (Linux RPM) +au BufNewFile,BufRead *.spec setf spec + +" Speedup (AspenTech plant simulator) +au BufNewFile,BufRead *.speedup,*.spdata,*.spd setf spup + +" Slice +au BufNewFile,BufRead *.ice setf slice + +" Spice +au BufNewFile,BufRead *.sp,*.spice setf spice + +" Spyce +au BufNewFile,BufRead *.spy,*.spi setf spyce + +" Squid +au BufNewFile,BufRead squid.conf setf squid + +" SQL for Oracle Designer +au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks setf sql + +" SQL +au BufNewFile,BufRead *.sql call s:SQL() + +func! s:SQL() + if exists("g:filetype_sql") + exe "setf " . g:filetype_sql + else + setf sql + endif +endfunc + +" SQLJ +au BufNewFile,BufRead *.sqlj setf sqlj + +" SQR +au BufNewFile,BufRead *.sqr,*.sqi setf sqr + +" OpenSSH configuration +au BufNewFile,BufRead ssh_config,*/.ssh/config setf sshconfig + +" OpenSSH server configuration +au BufNewFile,BufRead sshd_config setf sshdconfig + +" Stata +au BufNewFile,BufRead *.ado,*.class,*.do,*.imata,*.mata setf stata + +" SMCL +au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl setf smcl + +" Stored Procedures +au BufNewFile,BufRead *.stp setf stp + +" Standard ML +au BufNewFile,BufRead *.sml setf sml + +" Sratus VOS command macro +au BufNewFile,BufRead *.cm setf voscm + +" Sysctl +au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf setf sysctl + +" Synopsys Design Constraints +au BufNewFile,BufRead *.sdc setf sdc + +" Sudoers +au BufNewFile,BufRead */etc/sudoers,sudoers.tmp setf sudoers + +" SVG (Scalable Vector Graphics) +au BufNewFile,BufRead *.svg setf svg + +" If the file has an extension of 't' and is in a directory 't' then it is +" almost certainly a Perl test file. +" If the first line starts with '#' and contains 'perl' it's probably a Perl +" file. +" (Slow test) If a file contains a 'use' statement then it is almost certainly +" a Perl file. +func! s:FTperl() + if expand("%:e") == 't' && expand("%:p:h:t") == 't' + setf perl + return 1 + endif + if getline(1)[0] == '#' && getline(1) =~ 'perl' + setf perl + return 1 + endif + if search('^use\s\s*\k', 'nc', 30) + setf perl + return 1 + endif + return 0 +endfunc + +" Tads (or Nroff or Perl test file) +au BufNewFile,BufRead *.t + \ if !s:FTnroff() && !s:FTperl() | setf tads | endif + +" Tags +au BufNewFile,BufRead tags setf tags + +" TAK +au BufNewFile,BufRead *.tak setf tak + +" Task +au BufRead,BufNewFile {pending,completed,undo}.data setf taskdata +au BufRead,BufNewFile *.task setf taskedit + +" Tcl (JACL too) +au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl setf tcl + +" TealInfo +au BufNewFile,BufRead *.tli setf tli + +" Telix Salt +au BufNewFile,BufRead *.slt setf tsalt + +" Terminfo +au BufNewFile,BufRead *.ti setf terminfo + +" TeX +au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex +au BufNewFile,BufRead *.tex call s:FTtex() + +" Choose context, plaintex, or tex (LaTeX) based on these rules: +" 1. Check the first line of the file for "%&". +" 2. Check the first 1000 non-comment lines for LaTeX or ConTeXt keywords. +" 3. Default to "latex" or to g:tex_flavor, can be set in user's vimrc. +func! s:FTtex() + let firstline = getline(1) + if firstline =~ '^%&\s*\a\+' + let format = tolower(matchstr(firstline, '\a\+')) + let format = substitute(format, 'pdf', '', '') + if format == 'tex' + let format = 'plain' + endif + else + " Default value, may be changed later: + let format = exists("g:tex_flavor") ? g:tex_flavor : 'plain' + " Save position, go to the top of the file, find first non-comment line. + let save_cursor = getpos('.') + call cursor(1,1) + let firstNC = search('^\s*[^[:space:]%]', 'c', 1000) + if firstNC " Check the next thousand lines for a LaTeX or ConTeXt keyword. + let lpat = 'documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>' + let cpat = 'start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\>' + let kwline = search('^\s*\\\%(' . lpat . '\)\|^\s*\\\(' . cpat . '\)', + \ 'cnp', firstNC + 1000) + if kwline == 1 " lpat matched + let format = 'latex' + elseif kwline == 2 " cpat matched + let format = 'context' + endif " If neither matched, keep default set above. + " let lline = search('^\s*\\\%(' . lpat . '\)', 'cn', firstNC + 1000) + " let cline = search('^\s*\\\%(' . cpat . '\)', 'cn', firstNC + 1000) + " if cline > 0 + " let format = 'context' + " endif + " if lline > 0 && (cline == 0 || cline > lline) + " let format = 'tex' + " endif + endif " firstNC + call setpos('.', save_cursor) + endif " firstline =~ '^%&\s*\a\+' + + " Translation from formats to file types. TODO: add AMSTeX, RevTex, others? + if format == 'plain' + setf plaintex + elseif format == 'context' + setf context + else " probably LaTeX + setf tex + endif + return +endfunc + +" ConTeXt +au BufNewFile,BufRead tex/context/*/*.tex,*.mkii,*.mkiv setf context + +" Texinfo +au BufNewFile,BufRead *.texinfo,*.texi,*.txi setf texinfo + +" TeX configuration +au BufNewFile,BufRead texmf.cnf setf texmf + +" Tidy config +au BufNewFile,BufRead .tidyrc,tidyrc setf tidy + +" TF mud client +au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf + +" TPP - Text Presentation Program +au BufNewFile,BufReadPost *.tpp setf tpp + +" Treetop +au BufRead,BufNewFile *.treetop setf treetop + +" Trustees +au BufNewFile,BufRead trustees.conf setf trustees + +" TSS - Geometry +au BufNewFile,BufReadPost *.tssgm setf tssgm + +" TSS - Optics +au BufNewFile,BufReadPost *.tssop setf tssop + +" TSS - Command Line (temporary) +au BufNewFile,BufReadPost *.tsscl setf tsscl + +" TWIG files +au BufNewFile,BufReadPost *.twig setf twig + +" Motif UIT/UIL files +au BufNewFile,BufRead *.uit,*.uil setf uil + +" Udev conf +au BufNewFile,BufRead */etc/udev/udev.conf setf udevconf + +" Udev permissions +au BufNewFile,BufRead */etc/udev/permissions.d/*.permissions setf udevperm +" +" Udev symlinks config +au BufNewFile,BufRead */etc/udev/cdsymlinks.conf setf sh + +" UnrealScript +au BufNewFile,BufRead *.uc setf uc + +" Updatedb +au BufNewFile,BufRead */etc/updatedb.conf setf updatedb + +" Upstart (init(8)) config files +au BufNewFile,BufRead */usr/share/upstart/*.conf setf upstart +au BufNewFile,BufRead */usr/share/upstart/*.override setf upstart +au BufNewFile,BufRead */etc/init/*.conf,*/etc/init/*.override setf upstart +au BufNewFile,BufRead */.init/*.conf,*/.init/*.override setf upstart +au BufNewFile,BufRead */.config/upstart/*.conf setf upstart +au BufNewFile,BufRead */.config/upstart/*.override setf upstart + +" Vera +au BufNewFile,BufRead *.vr,*.vri,*.vrh setf vera + +" Verilog HDL +au BufNewFile,BufRead *.v setf verilog + +" Verilog-AMS HDL +au BufNewFile,BufRead *.va,*.vams setf verilogams + +" VHDL +au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst setf vhdl +au BufNewFile,BufRead *.vhdl_[0-9]* call s:StarSetf('vhdl') + +" Vim script +au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc setf vim + +" Viminfo file +au BufNewFile,BufRead .viminfo,_viminfo setf viminfo + +" Virata Config Script File or Drupal module +au BufRead,BufNewFile *.hw,*.module,*.pkg + \ if getline(1) =~ '' | + \ let b:xf86conf_xfree86_version = 3 | + \ endif | + \ setf xf86conf +au BufNewFile,BufRead */xorg.conf.d/*.conf + \ let b:xf86conf_xfree86_version = 4 | + \ setf xf86conf + +" Xorg config +au BufNewFile,BufRead xorg.conf,xorg.conf-4 let b:xf86conf_xfree86_version = 4 | setf xf86conf + +" Xinetd conf +au BufNewFile,BufRead */etc/xinetd.conf setf xinetd + +" XS Perl extension interface language +au BufNewFile,BufRead *.xs setf xs + +" X resources file +au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults + +" Xmath +au BufNewFile,BufRead *.msc,*.msf setf xmath +au BufNewFile,BufRead *.ms + \ if !s:FTnroff() | setf xmath | endif + +" XML specific variants: docbk and xbl +au BufNewFile,BufRead *.xml call s:FTxml() + +func! s:FTxml() + let n = 1 + while n < 100 && n < line("$") + let line = getline(n) + " DocBook 4 or DocBook 5. + let is_docbook4 = line =~ '\)' && getline(n) !~ '^\s*#\s*include' + setf racc + return + endif + let n = n + 1 + endwhile + setf yacc +endfunc + + +" Yaml +au BufNewFile,BufRead *.yaml,*.yml setf yaml + +" yum conf (close enough to dosini) +au BufNewFile,BufRead */etc/yum.conf setf dosini + +" Zimbu +au BufNewFile,BufRead *.zu setf zimbu + +" Zope +" dtml (zope dynamic template markup language), pt (zope page template), +" cpt (zope form controller page template) +au BufNewFile,BufRead *.dtml,*.pt,*.cpt call s:FThtml() +" zsql (zope sql method) +au BufNewFile,BufRead *.zsql call s:SQL() + +" Z80 assembler asz80 +au BufNewFile,BufRead *.z8a setf z8a + +augroup END + + +" Source the user-specified filetype file, for backwards compatibility with +" Vim 5.x. +if exists("myfiletypefile") && filereadable(expand(myfiletypefile)) + execute "source " . myfiletypefile +endif + + +" Check for "*" after loading myfiletypefile, so that scripts.vim is only used +" when there are no matching file name extensions. +" Don't do this for compressed files. +augroup filetypedetect +au BufNewFile,BufRead * + \ if !did_filetype() && expand("") !~ g:ft_ignore_pat + \ | runtime! scripts.vim | endif +au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif + + +" Extra checks for when no filetype has been detected now. Mostly used for +" patterns that end in "*". E.g., "zsh*" matches "zsh.vim", but that's a Vim +" script file. +" Most of these should call s:StarSetf() to avoid names ending in .gz and the +" like are used. + +" More Apache config files +au BufNewFile,BufRead access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf* call s:StarSetf('apache') +au BufNewFile,BufRead */etc/apache2/*.conf*,*/etc/apache2/conf.*/*,*/etc/apache2/mods-*/*,*/etc/apache2/sites-*/*,*/etc/httpd/conf.d/*.conf* call s:StarSetf('apache') + +" Asterisk config file +au BufNewFile,BufRead *asterisk/*.conf* call s:StarSetf('asterisk') +au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm') + +" Bazaar version control +au BufNewFile,BufRead bzr_log.* setf bzr + +" BIND zone +au BufNewFile,BufRead */named/db.*,*/bind/db.* call s:StarSetf('bindzone') + +" Calendar +au BufNewFile,BufRead */.calendar/*, + \*/share/calendar/*/calendar.*,*/share/calendar/calendar.* + \ call s:StarSetf('calendar') + +" Changelog +au BufNewFile,BufRead [cC]hange[lL]og* + \ if getline(1) =~ '; urgency=' + \| call s:StarSetf('debchangelog') + \|else + \| call s:StarSetf('changelog') + \|endif + +" Crontab +au BufNewFile,BufRead crontab,crontab.*,*/etc/cron.d/* call s:StarSetf('crontab') + +" dnsmasq(8) configuration +au BufNewFile,BufRead */etc/dnsmasq.d/* call s:StarSetf('dnsmasq') + +" Dracula +au BufNewFile,BufRead drac.* call s:StarSetf('dracula') + +" Fvwm +au BufNewFile,BufRead */.fvwm/* call s:StarSetf('fvwm') +au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook + \ let b:fvwm_version = 1 | call s:StarSetf('fvwm') +au BufNewFile,BufRead *fvwm2rc* + \ if expand(":e") == "m4" + \| call s:StarSetf('fvwm2m4') + \|else + \| let b:fvwm_version = 2 | call s:StarSetf('fvwm') + \|endif + +" Gedcom +au BufNewFile,BufRead */tmp/lltmp* call s:StarSetf('gedcom') + +" GTK RC +au BufNewFile,BufRead .gtkrc*,gtkrc* call s:StarSetf('gtkrc') + +" Jam +au BufNewFile,BufRead Prl*.*,JAM*.* call s:StarSetf('jam') + +" Jargon +au! BufNewFile,BufRead *jarg* + \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE' + \| call s:StarSetf('jargon') + \|endif + +" Kconfig +au BufNewFile,BufRead Kconfig.* call s:StarSetf('kconfig') + +" Lilo: Linux loader +au BufNewFile,BufRead lilo.conf* call s:StarSetf('lilo') + +" Logcheck +au BufNewFile,BufRead */etc/logcheck/*.d*/* call s:StarSetf('logcheck') + +" Makefile +au BufNewFile,BufRead [mM]akefile* call s:StarSetf('make') + +" Ruby Makefile +au BufNewFile,BufRead [rR]akefile* call s:StarSetf('ruby') + +" Mail (also matches muttrc.vim, so this is below the other checks) +au BufNewFile,BufRead mutt[[:alnum:]._-]\\\{6\} setf mail + +" Modconf +au BufNewFile,BufRead */etc/modutils/* + \ if executable(expand("")) != 1 + \| call s:StarSetf('modconf') + \|endif +au BufNewFile,BufRead */etc/modprobe.* call s:StarSetf('modconf') + +" Mutt setup file +au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc* call s:StarSetf('muttrc') +au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc* call s:StarSetf('muttrc') + +" Nroff macros +au BufNewFile,BufRead tmac.* call s:StarSetf('nroff') + +" Pam conf +au BufNewFile,BufRead */etc/pam.d/* call s:StarSetf('pamconf') + +" Printcap and Termcap +au BufNewFile,BufRead *printcap* + \ if !did_filetype() + \| let b:ptcap_type = "print" | call s:StarSetf('ptcap') + \|endif +au BufNewFile,BufRead *termcap* + \ if !did_filetype() + \| let b:ptcap_type = "term" | call s:StarSetf('ptcap') + \|endif + +" ReDIF +" Only used when the .rdf file was not detected to be XML. +au BufRead,BufNewFile *.rdf call s:Redif() +func! s:Redif() + let lnum = 1 + while lnum <= 5 && lnum < line('$') + if getline(lnum) =~ "^\ctemplate-type:" + setf redif + return + endif + let lnum = lnum + 1 + endwhile +endfunc + +" Remind +au BufNewFile,BufRead .reminders* call s:StarSetf('remind') + +" Vim script +au BufNewFile,BufRead *vimrc* call s:StarSetf('vim') + +" Subversion commit file +au BufNewFile,BufRead svn-commit*.tmp setf svn + +" X resources file +au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults') + +" XFree86 config +au BufNewFile,BufRead XF86Config-4* + \ let b:xf86conf_xfree86_version = 4 | call s:StarSetf('xf86conf') +au BufNewFile,BufRead XF86Config* + \ if getline(1) =~ '\' + \| let b:xf86conf_xfree86_version = 3 + \|endif + \|call s:StarSetf('xf86conf') + +" X11 xmodmap +au BufNewFile,BufRead *xmodmap* call s:StarSetf('xmodmap') + +" Xinetd conf +au BufNewFile,BufRead */etc/xinetd.d/* call s:StarSetf('xinetd') + +" yum conf (close enough to dosini) +au BufNewFile,BufRead */etc/yum.repos.d/* call s:StarSetf('dosini') + +" Z-Shell script +au BufNewFile,BufRead zsh*,zlog* call s:StarSetf('zsh') + + +" Plain text files, needs to be far down to not override others. This avoids +" the "conf" type being used if there is a line starting with '#'. +au BufNewFile,BufRead *.txt,*.text setf text + + +" Use the filetype detect plugins. They may overrule any of the previously +" detected filetypes. +runtime! ftdetect/*.vim + +" NOTE: The above command could have ended the filetypedetect autocmd group +" and started another one. Let's make sure it has ended to get to a consistent +" state. +augroup END + +" Generic configuration file (check this last, it's just guessing!) +au filetypedetect BufNewFile,BufRead,StdinReadPost * + \ if !did_filetype() && expand("") !~ g:ft_ignore_pat + \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#' + \ || getline(4) =~ '^#' || getline(5) =~ '^#') | + \ setf conf | + \ endif + + +" If the GUI is already running, may still need to install the Syntax menu. +" Don't do it when the 'M' flag is included in 'guioptions'. +if has("menu") && has("gui_running") + \ && !exists("did_install_syntax_menu") && &guioptions !~# "M" + source :p:h/menu.vim +endif + +" Function called for testing all functions defined here. These are +" script-local, thus need to be executed here. +" Returns a string with error messages (hopefully empty). +func! TestFiletypeFuncs(testlist) + let output = '' + for f in a:testlist + try + exe f + catch + let output = output . "\n" . f . ": " . v:exception + endtry + endfor + return output +endfunc + +" Restore 'cpoptions' +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/ftoff.vim b/share/vim/vim74/ftoff.vim similarity index 100% rename from share/vim/vim73/ftoff.vim rename to share/vim/vim74/ftoff.vim diff --git a/share/vim/vim73/ftplugin.vim b/share/vim/vim74/ftplugin.vim similarity index 100% rename from share/vim/vim73/ftplugin.vim rename to share/vim/vim74/ftplugin.vim diff --git a/share/vim/vim73/ftplugin/README.txt b/share/vim/vim74/ftplugin/README.txt similarity index 100% rename from share/vim/vim73/ftplugin/README.txt rename to share/vim/vim74/ftplugin/README.txt diff --git a/share/vim/vim73/ftplugin/a2ps.vim b/share/vim/vim74/ftplugin/a2ps.vim similarity index 100% rename from share/vim/vim73/ftplugin/a2ps.vim rename to share/vim/vim74/ftplugin/a2ps.vim diff --git a/share/vim/vim74/ftplugin/aap.vim b/share/vim/vim74/ftplugin/aap.vim new file mode 100644 index 00000000..9b20ec47 --- /dev/null +++ b/share/vim/vim74/ftplugin/aap.vim @@ -0,0 +1,25 @@ +" Vim filetype plugin file +" Language: Aap recipe +" Maintainer: Bram Moolenaar +" Last Change: 2013 Apr 05 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Reset 'formatoptions', 'comments' and 'expandtab' to undo this plugin. +let b:undo_ftplugin = "setl fo< com< et<" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting or using "o". +setlocal fo-=t fo+=croql + +" Set 'comments' to format dashed lists in comments. +setlocal comments=s:#\ -,m:#\ \ ,e:#,n:#,fb:- + +" Expand tabs to spaces to avoid trouble. +setlocal expandtab diff --git a/share/vim/vim74/ftplugin/abap.vim b/share/vim/vim74/ftplugin/abap.vim new file mode 100644 index 00000000..956b002e --- /dev/null +++ b/share/vim/vim74/ftplugin/abap.vim @@ -0,0 +1,29 @@ +" Vim filetype plugin file +" Language: ABAP +" Author: Steven Oliver +" Copyright: Copyright (c) 2013 Steven Oliver +" License: You may redistribute this under the same terms as Vim itself +" -------------------------------------------------------------------------- + +" Only do this when not done yet for this buffer +if (exists("b:did_ftplugin")) + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal softtabstop=2 shiftwidth=2 +setlocal suffixesadd=.abap + +" Windows allows you to filter the open file dialog +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "ABAP Source Files (*.abap)\t*.abap\n" . + \ "All Files (*.*)\t*.*\n" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: set sw=4 sts=4 et tw=80 : diff --git a/share/vim/vim74/ftplugin/abaqus.vim b/share/vim/vim74/ftplugin/abaqus.vim new file mode 100644 index 00000000..b263d0c3 --- /dev/null +++ b/share/vim/vim74/ftplugin/abaqus.vim @@ -0,0 +1,97 @@ +" Vim filetype plugin file +" Language: Abaqus finite element input file (www.abaqus.com) +" Maintainer: Carl Osterwisch +" Last Change: 2012 Apr 30 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") | finish | endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Save the compatibility options and temporarily switch to vim defaults +let s:cpo_save = &cpoptions +set cpoptions&vim + +" Set the format of the include file specification for Abaqus +" Used in :check gf ^wf [i and other commands +setlocal include=\\<\\cINPUT\\s*= + +" Remove characters up to the first = when evaluating filenames +setlocal includeexpr=substitute(v:fname,'.\\{-}=','','') + +" Remove comma from valid filename characters since it is used to +" separate keyword parameters +setlocal isfname-=, + +" Define format of comment lines (see 'formatoptions' for uses) +setlocal comments=:** +setlocal commentstring=**%s + +" Definitions start with a * and assign a NAME, NSET, or ELSET +" Used in [d ^wd and other commands +setlocal define=^\\*\\a.*\\c\\(NAME\\\|NSET\\\|ELSET\\)\\s*= + +" Abaqus keywords and identifiers may include a - character +setlocal iskeyword+=- + +let b:undo_ftplugin = "setlocal include< includeexpr< isfname<" + \ . " comments< commentstring< define< iskeyword<" + +if has("folding") + " Fold all lines that do not begin with * + setlocal foldexpr=getline(v:lnum)[0]!=\"\*\" + setlocal foldmethod=expr + let b:undo_ftplugin .= " foldexpr< foldmethod<" +endif + +" Set the file browse filter (currently only supported under Win32 gui) +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "Abaqus Input Files (*.inp *.inc)\t*.inp;*.inc\n" . + \ "Abaqus Results (*.dat)\t*.dat\n" . + \ "Abaqus Messages (*.pre *.msg *.sta)\t*.pre;*.msg;*.sta\n" . + \ "All Files (*.*)\t*.*\n" + let b:undo_ftplugin .= "|unlet! b:browsefilter" +endif + +" Define patterns for the matchit plugin +if exists("loaded_matchit") && !exists("b:match_words") + let b:match_ignorecase = 1 + let b:match_words = + \ '\*part:\*end\s*part,' . + \ '\*assembly:\*end\s*assembly,' . + \ '\*instance:\*end\s*instance,' . + \ '\*step:\*end\s*step' + let b:undo_ftplugin .= "|unlet! b:match_ignorecase b:match_words" +endif + +" Define keys used to move [count] keywords backward or forward. +noremap [[ ?^\*\a:nohlsearch +noremap ]] /^\*\a:nohlsearch + +" Define key to toggle commenting of the current line or range +noremap + \ :call Abaqus_ToggleComment()j +function! Abaqus_ToggleComment() range + if strpart(getline(a:firstline), 0, 2) == "**" + " Un-comment all lines in range + silent execute a:firstline . ',' . a:lastline . 's/^\*\*//' + else + " Comment all lines in range + silent execute a:firstline . ',' . a:lastline . 's/^/**/' + endif +endfunction + +let b:undo_ftplugin .= "|unmap [[|unmap ]]" + \ . "|unmap " + +" Undo must be done in nocompatible mode for . +let b:undo_ftplugin = "let s:cpo_save = &cpoptions|" + \ . "set cpoptions&vim|" + \ . b:undo_ftplugin + \ . "|let &cpoptions = s:cpo_save" + \ . "|unlet s:cpo_save" + +" Restore saved compatibility options +let &cpoptions = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim74/ftplugin/ada.vim b/share/vim/vim74/ftplugin/ada.vim new file mode 100644 index 00000000..0809e7b2 --- /dev/null +++ b/share/vim/vim74/ftplugin/ada.vim @@ -0,0 +1,210 @@ +"------------------------------------------------------------------------------ +" Description: Perform Ada specific completion & tagging. +" Language: Ada (2005) +" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $ +" Maintainer: Martin Krischik +" Taylor Venable +" Neil Bird +" $Author: krischik $ +" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ +" Version: 4.6 with patch from David Bürgin +" $Revision: 887 $ +" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $ +" History: 24.05.2006 MK Unified Headers +" 26.05.2006 MK ' should not be in iskeyword. +" 16.07.2006 MK Ada-Mode as vim-ball +" 02.10.2006 MK Better folding. +" 15.10.2006 MK Bram's suggestion for runtime integration +" 05.11.2006 MK Bram suggested not to use include protection for +" autoload +" 05.11.2006 MK Bram suggested to save on spaces +" 08.07.2007 TV fix default compiler problems. +" Help Page: ft-ada-plugin +"------------------------------------------------------------------------------ +" Provides mapping overrides for tag jumping that figure out the current +" Ada object and tag jump to that, not the 'simple' vim word. +" Similarly allows matching of full-length ada entities from tags. +"------------------------------------------------------------------------------ + +" Only do this when not done yet for this buffer +if exists ("b:did_ftplugin") || version < 700 + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 45 + +" +" Temporarily set cpoptions to ensure the script loads OK +" +let s:cpoptions = &cpoptions +set cpoptions-=C + +" Section: Comments {{{1 +" +setlocal comments=O:--,:--\ \ +setlocal commentstring=--\ \ %s +setlocal complete=.,w,b,u,t,i + +" Section: case {{{1 +" +setlocal nosmartcase +setlocal ignorecase + +" Section: formatoptions {{{1 +" +setlocal formatoptions+=ron + +" Section: Tagging {{{1 +" +if exists ("g:ada_extended_tagging") + " Make local tag mappings for this buffer (if not already set) + if g:ada_extended_tagging == 'jump' + if mapcheck('','n') == '' + nnoremap :call ada#Jump_Tag ('', 'tjump') + endif + if mapcheck('g','n') == '' + nnoremap g :call ada#Jump_Tag ('','stjump') + endif + elseif g:ada_extended_tagging == 'list' + if mapcheck('','n') == '' + nnoremap :call ada#List_Tag () + endif + if mapcheck('g','n') == '' + nnoremap g :call ada#List_Tag () + endif + endif +endif + +" Section: Completion {{{1 +" +setlocal completefunc=ada#User_Complete +setlocal omnifunc=adacomplete#Complete + +if exists ("g:ada_extended_completion") + if mapcheck ('','i') == '' + inoremap =ada#Completion("\C-N>") + endif + if mapcheck ('','i') == '' + inoremap =ada#Completion("\C-P>") + endif + if mapcheck ('','i') == '' + inoremap =ada#Completion("\C-X>\C-]>") + endif + if mapcheck ('','i') == '' + inoremap =ada#Insert_Backspace () + endif +endif + +" Section: Matchit {{{1 +" +" Only do this when not done yet for this buffer & matchit is used +" +if !exists ("b:match_words") && + \ exists ("loaded_matchit") + " + " The following lines enable the macros/matchit.vim plugin for + " Ada-specific extended matching with the % key. + " + let s:notend = '\%(\:\:\:\\s\+\,' . + \ s:notend . '\:\:\\s\+\,' . + \ '\%(\.*\|\.*\|'.s:notend.'\)\:\\s\+\,' . + \ '\%(\\|\\):\:\\s*\%($\|[;A-Z]\),' . + \ s:notend . '\:\\s\+\' +endif + + +" Section: Compiler {{{1 +" +if ! exists("g:ada_default_compiler") + if has("vms") + let g:ada_default_compiler = 'decada' + else + let g:ada_default_compiler = 'gnat' + endif +endif + +if ! exists("current_compiler") || + \ current_compiler != g:ada_default_compiler + execute "compiler " . g:ada_default_compiler +endif + +" Section: Folding {{{1 +" +if exists("g:ada_folding") + if g:ada_folding[0] == 'i' + setlocal foldmethod=indent + setlocal foldignore=-- + setlocal foldnestmax=5 + elseif g:ada_folding[0] == 'g' + setlocal foldmethod=expr + setlocal foldexpr=ada#Pretty_Print_Folding(v:lnum) + elseif g:ada_folding[0] == 's' + setlocal foldmethod=syntax + endif + setlocal tabstop=8 + setlocal softtabstop=3 + setlocal shiftwidth=3 +endif + +" Section: Abbrev {{{1 +" +if exists("g:ada_abbrev") + iabbrev ret return + iabbrev proc procedure + iabbrev pack package + iabbrev func function +endif + +" Section: Commands, Mapping, Menus {{{1 +" +call ada#Map_Popup ( + \ 'Tag.List', + \ 'l', + \ 'call ada#List_Tag ()') +call ada#Map_Popup ( + \'Tag.Jump', + \'j', + \'call ada#Jump_Tag ()') +call ada#Map_Menu ( + \'Tag.Create File', + \':AdaTagFile', + \'call ada#Create_Tags (''file'')') +call ada#Map_Menu ( + \'Tag.Create Dir', + \':AdaTagDir', + \'call ada#Create_Tags (''dir'')') + +call ada#Map_Menu ( + \'Highlight.Toggle Space Errors', + \ ':AdaSpaces', + \'call ada#Switch_Syntax_Option (''space_errors'')') +call ada#Map_Menu ( + \'Highlight.Toggle Lines Errors', + \ ':AdaLines', + \'call ada#Switch_Syntax_Option (''line_errors'')') +call ada#Map_Menu ( + \'Highlight.Toggle Rainbow Color', + \ ':AdaRainbow', + \'call ada#Switch_Syntax_Option (''rainbow_color'')') +call ada#Map_Menu ( + \'Highlight.Toggle Standard Types', + \ ':AdaTypes', + \'call ada#Switch_Syntax_Option (''standard_types'')') + +" 1}}} +" Reset cpoptions +let &cpoptions = s:cpoptions +unlet s:cpoptions + +finish " 1}}} + +"------------------------------------------------------------------------------ +" Copyright (C) 2006 Martin Krischik +" +" Vim is Charityware - see ":help license" or uganda.txt for licence details. +"------------------------------------------------------------------------------ +" vim: textwidth=78 nowrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab +" vim: foldmethod=marker diff --git a/share/vim/vim73/ftplugin/alsaconf.vim b/share/vim/vim74/ftplugin/alsaconf.vim similarity index 100% rename from share/vim/vim73/ftplugin/alsaconf.vim rename to share/vim/vim74/ftplugin/alsaconf.vim diff --git a/share/vim/vim74/ftplugin/ant.vim b/share/vim/vim74/ftplugin/ant.vim new file mode 100644 index 00000000..59058588 --- /dev/null +++ b/share/vim/vim74/ftplugin/ant.vim @@ -0,0 +1,44 @@ +" Vim filetype plugin file +" Language: ant +" Maintainer: Dan Sharp +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "XML Files (*.xml)\t*.xml\n" . + \ "All Files (*.*)\t*.*\n" + +runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") + let s:browsefilter = b:browsefilter +endif + +" Change the :browse e filter to primarily show Ant-related files. +if has("gui_win32") + let b:browsefilter = "Build Files (build.xml)\tbuild.xml\n" . + \ "Java Files (*.java)\t*.java\n" . + \ "Properties Files (*.prop*)\t*.prop*\n" . + \ "Manifest Files (*.mf)\t*.mf\n" . + \ s:browsefilter +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:browsefilter | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim73/ftplugin/arch.vim b/share/vim/vim74/ftplugin/arch.vim similarity index 100% rename from share/vim/vim73/ftplugin/arch.vim rename to share/vim/vim74/ftplugin/arch.vim diff --git a/share/vim/vim74/ftplugin/art.vim b/share/vim/vim74/ftplugin/art.vim new file mode 100644 index 00000000..c501a992 --- /dev/null +++ b/share/vim/vim74/ftplugin/art.vim @@ -0,0 +1,15 @@ +" Vim filetype plugin +" Language: ART-IM and ART*Enterprise +" Maintainer: Dorai Sitaram +" URL: http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html +" Last Change: Apr 2, 2003 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +run ftplugin/lisp.vim + +setl lw-=if +setl lw+=def-art-fun,deffacts,defglobal,defrule,defschema,for,schema,while diff --git a/share/vim/vim74/ftplugin/aspvbs.vim b/share/vim/vim74/ftplugin/aspvbs.vim new file mode 100644 index 00000000..660dab46 --- /dev/null +++ b/share/vim/vim74/ftplugin/aspvbs.vim @@ -0,0 +1,60 @@ +" Vim filetype plugin file +" Language: aspvbs +" Maintainer: Dan Sharp +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "HTML Files (*.html, *.htm)\t*.htm*\n" . + \ "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") + let s:browsefilter = b:browsefilter +endif +if exists("b:match_words") + let s:match_words = b:match_words +endif + +" ASP: Active Server Pages (with Visual Basic Script) +" thanks to Gontran BAERTS +if exists("loaded_matchit") + let s:notend = '\%(\\%(.\{-}then\s\+\w\)\@!:\:^\s*\:\,' . + \ s:notend . '\:\:\:\,' . + \ '^\s*\:\,' . + \ '^\s*\:\,' . + \ '\:\,' . + \ '^\s*\:\,' . + \ '^\s*\:\,' . + \ '\:\,' . + \ s:match_words +endif + +" Change the :browse e filter to primarily show ASP-related files. +if has("gui_win32") + let b:browsefilter="ASP Files (*.asp)\t*.asp\n" . s:browsefilter +endif + +let b:undo_ftplugin = "unlet! b:match_words b:match_ignorecase b:browsefilter | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim73/ftplugin/automake.vim b/share/vim/vim74/ftplugin/automake.vim similarity index 100% rename from share/vim/vim73/ftplugin/automake.vim rename to share/vim/vim74/ftplugin/automake.vim diff --git a/share/vim/vim73/ftplugin/bdf.vim b/share/vim/vim74/ftplugin/bdf.vim similarity index 100% rename from share/vim/vim73/ftplugin/bdf.vim rename to share/vim/vim74/ftplugin/bdf.vim diff --git a/share/vim/vim73/ftplugin/bst.vim b/share/vim/vim74/ftplugin/bst.vim similarity index 100% rename from share/vim/vim73/ftplugin/bst.vim rename to share/vim/vim74/ftplugin/bst.vim diff --git a/share/vim/vim73/ftplugin/btm.vim b/share/vim/vim74/ftplugin/btm.vim similarity index 100% rename from share/vim/vim73/ftplugin/btm.vim rename to share/vim/vim74/ftplugin/btm.vim diff --git a/share/vim/vim74/ftplugin/c.vim b/share/vim/vim74/ftplugin/c.vim new file mode 100644 index 00000000..19e8c51e --- /dev/null +++ b/share/vim/vim74/ftplugin/c.vim @@ -0,0 +1,64 @@ +" Vim filetype plugin file +" Language: C +" Maintainer: Bram Moolenaar +" Last Change: 2012 Jul 10 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Using line continuation here. +let s:cpo_save = &cpo +set cpo-=C + +let b:undo_ftplugin = "setl fo< com< ofu< | if has('vms') | setl isk< | endif" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting or using "o". +setlocal fo-=t fo+=croql + +" Set completion with CTRL-X CTRL-O to autoloaded function. +if exists('&ofu') + setlocal ofu=ccomplete#Complete +endif + +" Set 'comments' to format dashed lists in comments. +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// + +" In VMS C keywords contain '$' characters. +if has("vms") + setlocal iskeyword+=$ +endif + +" When the matchit plugin is loaded, this makes the % command skip parens and +" braces in comments. +let b:match_words = &matchpairs . ',^\s*#\s*if\(\|def\|ndef\)\>:^\s*#\s*elif\>:^\s*#\s*else\>:^\s*#\s*endif\>' +let b:match_skip = 's:comment\|string\|character' + +" Win32 can filter files in the browse dialog +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + if &ft == "cpp" + let b:browsefilter = "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" . + \ "C Header Files (*.h)\t*.h\n" . + \ "C Source Files (*.c)\t*.c\n" . + \ "All Files (*.*)\t*.*\n" + elseif &ft == "ch" + let b:browsefilter = "Ch Source Files (*.ch *.chf)\t*.ch;*.chf\n" . + \ "C Header Files (*.h)\t*.h\n" . + \ "C Source Files (*.c)\t*.c\n" . + \ "All Files (*.*)\t*.*\n" + else + let b:browsefilter = "C Source Files (*.c)\t*.c\n" . + \ "C Header Files (*.h)\t*.h\n" . + \ "Ch Source Files (*.ch *.chf)\t*.ch;*.chf\n" . + \ "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" . + \ "All Files (*.*)\t*.*\n" + endif +endif + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/ftplugin/calendar.vim b/share/vim/vim74/ftplugin/calendar.vim similarity index 100% rename from share/vim/vim73/ftplugin/calendar.vim rename to share/vim/vim74/ftplugin/calendar.vim diff --git a/share/vim/vim73/ftplugin/cdrdaoconf.vim b/share/vim/vim74/ftplugin/cdrdaoconf.vim similarity index 100% rename from share/vim/vim73/ftplugin/cdrdaoconf.vim rename to share/vim/vim74/ftplugin/cdrdaoconf.vim diff --git a/share/vim/vim73/ftplugin/ch.vim b/share/vim/vim74/ftplugin/ch.vim similarity index 100% rename from share/vim/vim73/ftplugin/ch.vim rename to share/vim/vim74/ftplugin/ch.vim diff --git a/share/vim/vim74/ftplugin/changelog.vim b/share/vim/vim74/ftplugin/changelog.vim new file mode 100644 index 00000000..ee83c791 --- /dev/null +++ b/share/vim/vim74/ftplugin/changelog.vim @@ -0,0 +1,302 @@ +" Vim filetype plugin file +" Language: generic Changelog file +" Maintainer: Nikolai Weibull +" Latest Revision: 2012-08-23 +" Variables: +" g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) - +" description: the timeformat used in ChangeLog entries. +" default: "%Y-%m-%d". +" g:changelog_dateformat - +" description: the format sent to strftime() to generate a date string. +" default: "%Y-%m-%d". +" g:changelog_username - +" description: the username to use in ChangeLog entries +" default: try to deduce it from environment variables and system files. +" Local Mappings: +" o - +" adds a new changelog entry for the current user for the current date. +" Global Mappings: +" o - +" switches to the ChangeLog buffer opened for the current directory, or +" opens it in a new buffer if it exists in the current directory. Then +" it does the same as the local o described above. +" Notes: +" run 'runtime ftplugin/changelog.vim' to enable the global mapping for +" changelog files. +" TODO: +" should we perhaps open the ChangeLog file even if it doesn't exist already? +" Problem is that you might end up with ChangeLog files all over the place. + +" If 'filetype' isn't "changelog", we must have been to add ChangeLog opener +if &filetype == 'changelog' + if exists('b:did_ftplugin') + finish + endif + let b:did_ftplugin = 1 + + let s:cpo_save = &cpo + set cpo&vim + + " Set up the format used for dates. + if !exists('g:changelog_dateformat') + if exists('g:changelog_timeformat') + let g:changelog_dateformat = g:changelog_timeformat + else + let g:changelog_dateformat = "%Y-%m-%d" + endif + endif + + function! s:username() + if exists('g:changelog_username') + return g:changelog_username + elseif $EMAIL != "" + return $EMAIL + elseif $EMAIL_ADDRESS != "" + return $EMAIL_ADDRESS + endif + + let login = s:login() + return printf('%s <%s@%s>', s:name(login), login, s:hostname()) + endfunction + + function! s:login() + return s:trimmed_system_with_default('whoami', 'unknown') + endfunction + + function! s:trimmed_system_with_default(command, default) + return s:first_line(s:system_with_default(a:command, a:default)) + endfunction + + function! s:system_with_default(command, default) + let output = system(a:command) + if v:shell_error + return default + endif + return output + endfunction + + function! s:first_line(string) + return substitute(a:string, '\n.*$', "", "") + endfunction + + function! s:name(login) + for name in [s:gecos_name(a:login), $NAME, s:capitalize(a:login)] + if name != "" + return name + endif + endfor + endfunction + + function! s:gecos_name(login) + for line in s:try_reading_file('/etc/passwd') + if line =~ '^' . a:login . ':' + return substitute(s:passwd_field(line, 5), '&', s:capitalize(a:login), "") + endif + endfor + return "" + endfunction + + function! s:try_reading_file(path) + try + return readfile(a:path) + catch + return [] + endtry + endfunction + + function! s:passwd_field(line, field) + let fields = split(a:line, ':', 1) + if len(fields) < a:field + return "" + endif + return fields[a:field - 1] + endfunction + + function! s:capitalize(word) + return toupper(a:word[0]) . strpart(a:word, 1) + endfunction + + function! s:hostname() + return s:trimmed_system_with_default('hostname', 'localhost') + endfunction + + " Format used for new date entries. + if !exists('g:changelog_new_date_format') + let g:changelog_new_date_format = "%d %u\n\n\t* %c\n\n" + endif + + " Format used for new entries to current date entry. + if !exists('g:changelog_new_entry_format') + let g:changelog_new_entry_format = "\t* %c" + endif + + " Regular expression used to find a given date entry. + if !exists('g:changelog_date_entry_search') + let g:changelog_date_entry_search = '^\s*%d\_s*%u' + endif + + " Regular expression used to find the end of a date entry + if !exists('g:changelog_date_end_entry_search') + let g:changelog_date_end_entry_search = '^\s*$' + endif + + + " Substitutes specific items in new date-entry formats and search strings. + " Can be done with substitute of course, but unclean, and need \@! then. + function! s:substitute_items(str, date, user) + let str = a:str + let middles = {'%': '%', 'd': a:date, 'u': a:user, 'c': '{cursor}'} + let i = stridx(str, '%') + while i != -1 + let inc = 0 + if has_key(middles, str[i + 1]) + let mid = middles[str[i + 1]] + let str = strpart(str, 0, i) . mid . strpart(str, i + 2) + let inc = strlen(mid) + endif + let i = stridx(str, '%', i + 1 + inc) + endwhile + return str + endfunction + + " Position the cursor once we've done all the funky substitution. + function! s:position_cursor() + if search('{cursor}') > 0 + let lnum = line('.') + let line = getline(lnum) + let cursor = stridx(line, '{cursor}') + call setline(lnum, substitute(line, '{cursor}', '', '')) + endif + startinsert! + endfunction + + " Internal function to create a new entry in the ChangeLog. + function! s:new_changelog_entry() + " Deal with 'paste' option. + let save_paste = &paste + let &paste = 1 + call cursor(1, 1) + " Look for an entry for today by our user. + let date = strftime(g:changelog_dateformat) + let search = s:substitute_items(g:changelog_date_entry_search, date, + \ s:username()) + if search(search) > 0 + " Ok, now we look for the end of the date entry, and add an entry. + call cursor(nextnonblank(line('.') + 1), 1) + if search(g:changelog_date_end_entry_search, 'W') > 0 + let p = (line('.') == line('$')) ? line('.') : line('.') - 1 + else + let p = line('.') + endif + let ls = split(s:substitute_items(g:changelog_new_entry_format, '', ''), + \ '\n') + call append(p, ls) + call cursor(p + 1, 1) + else + " Flag for removing empty lines at end of new ChangeLogs. + let remove_empty = line('$') == 1 + + " No entry today, so create a date-user header and insert an entry. + let todays_entry = s:substitute_items(g:changelog_new_date_format, + \ date, s:username()) + " Make sure we have a cursor positioning. + if stridx(todays_entry, '{cursor}') == -1 + let todays_entry = todays_entry . '{cursor}' + endif + + " Now do the work. + call append(0, split(todays_entry, '\n')) + + " Remove empty lines at end of file. + if remove_empty + $-/^\s*$/-1,$delete + endif + + " Reposition cursor once we're done. + call cursor(1, 1) + endif + + call s:position_cursor() + + " And reset 'paste' option + let &paste = save_paste + endfunction + + if exists(":NewChangelogEntry") != 2 + noremap o :call new_changelog_entry() + command! -nargs=0 NewChangelogEntry call s:new_changelog_entry() + endif + + let b:undo_ftplugin = "setl com< fo< et< ai<" + + setlocal comments= + setlocal formatoptions+=t + setlocal noexpandtab + setlocal autoindent + + if &textwidth == 0 + setlocal textwidth=78 + let b:undo_ftplugin .= " tw<" + endif + + let &cpo = s:cpo_save + unlet s:cpo_save +else + let s:cpo_save = &cpo + set cpo&vim + + " Add the Changelog opening mapping + nnoremap o :call open_changelog() + + function! s:open_changelog() + let path = expand('%:p:h') + if exists('b:changelog_path') + let changelog = b:changelog_path + else + if exists('b:changelog_name') + let name = b:changelog_name + else + let name = 'ChangeLog' + endif + while isdirectory(path) + let changelog = path . '/' . name + if filereadable(changelog) + break + endif + let parent = substitute(path, '/\+[^/]*$', "", "") + if path == parent + break + endif + let path = parent + endwhile + endif + if !filereadable(changelog) + return + endif + + if exists('b:changelog_entry_prefix') + let prefix = call(b:changelog_entry_prefix, []) + else + let prefix = substitute(strpart(expand('%:p'), strlen(path)), '^/\+', "", "") . ':' + endif + if !empty(prefix) + let prefix = ' ' . prefix + endif + + let buf = bufnr(changelog) + if buf != -1 + if bufwinnr(buf) != -1 + execute bufwinnr(buf) . 'wincmd w' + else + execute 'sbuffer' buf + endif + else + execute 'split' fnameescape(changelog) + endif + + call s:new_changelog_entry(prefix) + endfunction + + let &cpo = s:cpo_save + unlet s:cpo_save +endif diff --git a/share/vim/vim74/ftplugin/clojure.vim b/share/vim/vim74/ftplugin/clojure.vim new file mode 100644 index 00000000..91aba80f --- /dev/null +++ b/share/vim/vim74/ftplugin/clojure.vim @@ -0,0 +1,79 @@ +" Vim filetype plugin file +" Language: Clojure +" Author: Meikel Brandmeyer +" +" Maintainer: Sung Pae +" URL: https://github.com/guns/vim-clojure-static +" License: Same as Vim +" Last Change: 30 January 2013 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = 'setlocal define< formatoptions< comments< commentstring<' + +" There will be false positives, but this is better than missing the whole set +" of user-defined def* definitions. +setlocal define=\\v[(/]def(ault)@!\\S* + +" Remove 't' from 'formatoptions' to avoid auto-wrapping code. The '+=croql' +" is standard ftplugin boilerplate, although it is arguably intrusive. +setlocal formatoptions-=t formatoptions+=croql + +" Lisp comments are routinely nested (e.g. ;;; SECTION HEADING) +setlocal comments=n:; +setlocal commentstring=;\ %s + +" Provide insert mode completions for special forms and clojure.core. As +" 'omnifunc' is set by popular Clojure REPL client plugins, we also set +" 'completefunc' so that the user has some form of completion available when +" 'omnifunc' is set and no REPL connection exists. +for s:setting in ['omnifunc', 'completefunc'] + if exists('&' . s:setting) && empty(eval('&' . s:setting)) + execute 'setlocal ' . s:setting . '=clojurecomplete#Complete' + let b:undo_ftplugin .= ' | setlocal ' . s:setting . '<' + endif +endfor + +" Take all directories of the CLOJURE_SOURCE_DIRS environment variable +" and add them to the path option. +" +" This is a legacy option for VimClojure users. +if exists('$CLOJURE_SOURCE_DIRS') + for s:dir in split($CLOJURE_SOURCE_DIRS, (has("win32") || has("win64")) ? ';' : ':') + let s:dir = fnameescape(s:dir) + " Whitespace escaping for Windows + let s:dir = substitute(s:dir, '\', '\\\\', 'g') + let s:dir = substitute(s:dir, '\ ', '\\ ', 'g') + execute "setlocal path+=" . s:dir . "/**" + endfor + let b:undo_ftplugin .= ' | setlocal path<' +endif + +" Skip brackets in ignored syntax regions when using the % command +if exists('loaded_matchit') + let b:match_words = &matchpairs + let b:match_skip = 's:comment\|string\|regex\|character' + let b:undo_ftplugin .= ' | unlet! b:match_words b:match_skip' +endif + +" Win32 can filter files in the browse dialog +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "Clojure Source Files (*.clj)\t*.clj\n" . + \ "ClojureScript Source Files (*.cljs)\t*.cljs\n" . + \ "Java Source Files (*.java)\t*.java\n" . + \ "All Files (*.*)\t*.*\n" + let b:undo_ftplugin .= ' | unlet! b:browsefilter' +endif + +let &cpo = s:cpo_save + +unlet! s:cpo_save s:setting s:dir + +" vim:sts=4 sw=4 et: diff --git a/share/vim/vim73/ftplugin/cobol.vim b/share/vim/vim74/ftplugin/cobol.vim similarity index 100% rename from share/vim/vim73/ftplugin/cobol.vim rename to share/vim/vim74/ftplugin/cobol.vim diff --git a/share/vim/vim73/ftplugin/conf.vim b/share/vim/vim74/ftplugin/conf.vim similarity index 100% rename from share/vim/vim73/ftplugin/conf.vim rename to share/vim/vim74/ftplugin/conf.vim diff --git a/share/vim/vim74/ftplugin/config.vim b/share/vim/vim74/ftplugin/config.vim new file mode 100644 index 00000000..7fde42eb --- /dev/null +++ b/share/vim/vim74/ftplugin/config.vim @@ -0,0 +1,42 @@ +" Vim filetype plugin file +" Language: config +" Maintainer: Dan Sharp +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "Bourne Shell Files (*.sh)\t*.sh\n" . + \ "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/sh.vim ftplugin/sh_*.vim ftplugin/sh/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") + let s:browsefilter = b:browsefilter +endif + +" Change the :browse e filter to primarily show configure-related files. +if has("gui_win32") + let b:browsefilter="Configure Scripts (configure.*, config.*)\tconfigure*;config.*\n" . + \ s:browsefilter +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:browsefilter | " . b:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim73/ftplugin/context.vim b/share/vim/vim74/ftplugin/context.vim similarity index 100% rename from share/vim/vim73/ftplugin/context.vim rename to share/vim/vim74/ftplugin/context.vim diff --git a/share/vim/vim73/ftplugin/cpp.vim b/share/vim/vim74/ftplugin/cpp.vim similarity index 100% rename from share/vim/vim73/ftplugin/cpp.vim rename to share/vim/vim74/ftplugin/cpp.vim diff --git a/share/vim/vim73/ftplugin/crm.vim b/share/vim/vim74/ftplugin/crm.vim similarity index 100% rename from share/vim/vim73/ftplugin/crm.vim rename to share/vim/vim74/ftplugin/crm.vim diff --git a/share/vim/vim74/ftplugin/cs.vim b/share/vim/vim74/ftplugin/cs.vim new file mode 100644 index 00000000..7c2cbda3 --- /dev/null +++ b/share/vim/vim74/ftplugin/cs.vim @@ -0,0 +1,29 @@ +" Vim filetype plugin file +" Language: C# +" Maintainer: Johannes Zellner +" Last Change: Tue, 09 Mar 2004 14:09:33 CET + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 +let s:keepcpo= &cpo +set cpo&vim + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting or using "o". +setlocal fo-=t fo+=croql + +" Set 'comments' to format dashed lists in comments. +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,:// + +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "C# Source Files (*.cs)\t*.cs\n" . + \ "All Files (*.*)\t*.*\n" +endif + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/ftplugin/csc.vim b/share/vim/vim74/ftplugin/csc.vim new file mode 100644 index 00000000..3a09c3bf --- /dev/null +++ b/share/vim/vim74/ftplugin/csc.vim @@ -0,0 +1,27 @@ +" Vim filetype plugin file +" Language: csc +" Maintainer: Dan Sharp +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +if exists("loaded_matchit") + let b:match_words= + \ '\:\,' . + \ '\:\:\,' . + \ '\\|\:\' +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:match_words" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim74/ftplugin/csh.vim b/share/vim/vim74/ftplugin/csh.vim new file mode 100644 index 00000000..4ae09f91 --- /dev/null +++ b/share/vim/vim74/ftplugin/csh.vim @@ -0,0 +1,48 @@ +" Vim filetype plugin file +" Language: csh +" Maintainer: Dan Sharp +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal commentstring=#%s +setlocal formatoptions-=t +setlocal formatoptions+=crql + +" Csh: thanks to Johannes Zellner +" - Both foreach and end must appear alone on separate lines. +" - The words else and endif must appear at the beginning of input lines; +" the if must appear alone on its input line or after an else. +" - Each case label and the default label must appear at the start of a +" line. +" - while and end must appear alone on their input lines. +if exists("loaded_matchit") + let b:match_words = + \ '^\s*\.*(.*).*\:'. + \ '^\s*\\s\+\.*(.*).*\:^\s*\:'. + \ '^\s*\,'. + \ '\%(^\s*\\s\+\S\+\|^s*\\).*(.*):'. + \ '\:\:^\s*\,'. + \ '^\s*\.*(.*):^\s*\\s\+:^\s*\:^\s*\' +endif + +" Change the :browse e filter to primarily show csh-related files. +if has("gui_win32") + let b:browsefilter="csh Scripts (*.csh)\t*.csh\n" . + \ "All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal commentstring< formatoptions<" . + \ " | unlet! b:match_words b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim73/ftplugin/css.vim b/share/vim/vim74/ftplugin/css.vim similarity index 100% rename from share/vim/vim73/ftplugin/css.vim rename to share/vim/vim74/ftplugin/css.vim diff --git a/share/vim/vim74/ftplugin/cucumber.vim b/share/vim/vim74/ftplugin/cucumber.vim new file mode 100644 index 00000000..2ec1a597 --- /dev/null +++ b/share/vim/vim74/ftplugin/cucumber.vim @@ -0,0 +1,154 @@ +" Vim filetype plugin +" Language: Cucumber +" Maintainer: Tim Pope +" Last Change: 2013 Jun 01 + +" Only do this when not done yet for this buffer +if (exists("b:did_ftplugin")) + finish +endif +let b:did_ftplugin = 1 + +let s:keepcpo= &cpo +set cpo&vim + +setlocal formatoptions-=t formatoptions+=croql +setlocal comments=:# commentstring=#\ %s +setlocal omnifunc=CucumberComplete + +let b:undo_ftplugin = "setl fo< com< cms< ofu<" + +let b:cucumber_root = expand('%:p:h:s?.*[\/]\%(features\|stories\)\zs[\/].*??') + +if !exists("g:no_plugin_maps") && !exists("g:no_cucumber_maps") + nnoremap :exe jump('edit',v:count) + nnoremap [ :exe jump('edit',v:count) + nnoremap ] :exe jump('edit',v:count) + nnoremap ] :exe jump('split',v:count) + nnoremap :exe jump('split',v:count) + nnoremap d :exe jump('split',v:count) + nnoremap :exe jump('split',v:count) + nnoremap } :exe jump('pedit',v:count) + nnoremap [d :exe jump('pedit',v:count) + nnoremap ]d :exe jump('pedit',v:count) + let b:undo_ftplugin .= + \ "|sil! nunmap " . + \ "|sil! nunmap [" . + \ "|sil! nunmap ]" . + \ "|sil! nunmap ]" . + \ "|sil! nunmap " . + \ "|sil! nunmap d" . + \ "|sil! nunmap " . + \ "|sil! nunmap }" . + \ "|sil! nunmap [d" . + \ "|sil! nunmap ]d" +endif + +function! s:jump(command,count) + let steps = s:steps('.') + if len(steps) == 0 || len(steps) < a:count + return 'echoerr "No matching step found"' + elseif len(steps) > 1 && !a:count + return 'echoerr "Multiple matching steps found"' + else + let c = a:count ? a:count-1 : 0 + return a:command.' +'.steps[c][1].' '.escape(steps[c][0],' %#') + endif +endfunction + +function! s:allsteps() + let step_pattern = '\C^\s*\K\k*\>\s*(\=\s*\zs\S.\{-\}\ze\s*)\=\s*\%(do\|{\)\s*\%(|[^|]*|\s*\)\=\%($\|#\)' + let steps = [] + for file in split(glob(b:cucumber_root.'/**/*.rb'),"\n") + let lines = readfile(file) + let num = 0 + for line in lines + let num += 1 + if line =~ step_pattern + let type = matchstr(line,'\w\+') + let steps += [[file,num,type,matchstr(line,step_pattern)]] + endif + endfor + endfor + return steps +endfunction + +function! s:steps(lnum) + let c = match(getline(a:lnum), '\S') + 1 + while synIDattr(synID(a:lnum,c,1),'name') !~# '^$\|Region$' + let c = c + 1 + endwhile + let step = matchstr(getline(a:lnum)[c-1 : -1],'^\s*\zs.\{-\}\ze\s*$') + return filter(s:allsteps(),'s:stepmatch(v:val[3],step)') +endfunction + +function! s:stepmatch(receiver,target) + if a:receiver =~ '^[''"].*[''"]$' + let pattern = '^'.escape(substitute(a:receiver[1:-2],'$\w\+','(.*)','g'),'/').'$' + elseif a:receiver =~ '^/.*/$' + let pattern = a:receiver[1:-2] + elseif a:receiver =~ '^%r..*.$' + let pattern = escape(a:receiver[3:-2],'/') + else + return 0 + endif + try + let vimpattern = substitute(substitute(pattern,'\\\@ +" Former Maintainers: Michael Piefel +" Stefano Zacchiroli +" Last Change: 2012-01-31 +" License: Vim License +" URL: http://hg.debian.org/hg/pkg-vim/vim/file/unstable/runtime/ftplugin/debchangelog.vim + +" Bug completion requires apt-listbugs installed for Debian packages or +" python-launchpadlib installed for Ubuntu packages + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin=1 + +" {{{1 Local settings (do on every load) +if exists("g:debchangelog_fold_enable") + setlocal foldmethod=expr + setlocal foldexpr=DebGetChangelogFold(v:lnum) + setlocal foldtext=DebChangelogFoldText() +endif + +" Debian changelogs are not supposed to have any other text width, +" so the user cannot override this setting +setlocal tw=78 +setlocal comments=f:* + +" Clean unloading +let b:undo_ftplugin = "setlocal tw< comments< foldmethod< foldexpr< foldtext<" +" }}}1 + +if exists("g:did_changelog_ftplugin") + finish +endif + +" Don't load another plugin (this is global) +let g:did_changelog_ftplugin = 1 + +" {{{1 GUI menu + +" Helper functions returning various data. +" Returns full name, either from $DEBFULLNAME or debianfullname. +" TODO Is there a way to determine name from anywhere else? +function FullName() + if exists("$DEBFULLNAME") + return $DEBFULLNAME + elseif exists("g:debianfullname") + return g:debianfullname + else + return "Your Name" + endif +endfunction + +" Returns email address, from $DEBEMAIL, $EMAIL or debianemail. +function Email() + if exists("$DEBEMAIL") + return $DEBEMAIL + elseif exists("$EMAIL") + return $EMAIL + elseif exists("g:debianemail") + return g:debianemail + else + return "your@email.address" + endif +endfunction + +" Returns date in RFC822 format. +function Date() + let savelang = v:lc_time + execute "language time C" + let dateandtime = strftime("%a, %d %b %Y %X %z") + execute "language time " . savelang + return dateandtime +endfunction + +function WarnIfNotUnfinalised() + if match(getline("."), " -- [[:alpha:]][[:alnum:].]")!=-1 + echohl WarningMsg + echo "The entry has not been unfinalised before editing." + echohl None + return 1 + endif + return 0 +endfunction + +function Finalised() + let savelinenum = line(".") + normal 1G + call search("^ -- ") + if match(getline("."), " -- [[:alpha:]][[:alnum:].]")!=-1 + let returnvalue = 1 + else + let returnvalue = 0 + endif + execute savelinenum + return returnvalue +endfunction + +" These functions implement the menus +function NewVersion() + " The new entry is unfinalised and shall be changed + amenu disable Changelog.New\ Version + amenu enable Changelog.Add\ Entry + amenu enable Changelog.Close\ Bug + amenu enable Changelog.Set\ Distribution + amenu enable Changelog.Set\ Urgency + amenu disable Changelog.Unfinalise + amenu enable Changelog.Finalise + call append(0, substitute(getline(1), '-\([[:digit:]]\+\))', '-$$\1)', '')) + call append(1, "") + call append(2, "") + call append(3, " -- ") + call append(4, "") + call Urgency("low") + normal 1G0 + call search(")") + normal h + normal  + call setline(1, substitute(getline(1), '-\$\$', '-', '')) + if exists("g:debchangelog_fold_enable") + foldopen + endif + call AddEntry() +endfunction + +function AddEntry() + normal 1G + call search("^ -- ") + normal kk + call append(".", " * ") + normal jjj + let warn=WarnIfNotUnfinalised() + normal kk + if warn + echohl MoreMsg + call input("Hit ENTER") + echohl None + endif + startinsert! +endfunction + +function CloseBug() + normal 1G + call search("^ -- ") + let warn=WarnIfNotUnfinalised() + normal kk + call append(".", " * (closes: #" . input("Bug number to close: ") . ")") + normal j^ll + startinsert +endfunction + +function Distribution(dist) + call setline(1, substitute(getline(1), ") [[:lower:] ]*;", ") " . a:dist . ";", "")) +endfunction + +function Urgency(urg) + call setline(1, substitute(getline(1), "urgency=.*$", "urgency=" . a:urg, "")) +endfunction + +function UnfinaliseMenu() + " This means the entry shall be changed + amenu disable Changelog.New\ Version + amenu enable Changelog.Add\ Entry + amenu enable Changelog.Close\ Bug + amenu enable Changelog.Set\ Distribution + amenu enable Changelog.Set\ Urgency + amenu disable Changelog.Unfinalise + amenu enable Changelog.Finalise +endfunction + +function Unfinalise() + call UnfinaliseMenu() + normal 1G + call search("^ -- ") + call setline(".", " -- ") +endfunction + +function FinaliseMenu() + " This means the entry should not be changed anymore + amenu enable Changelog.New\ Version + amenu disable Changelog.Add\ Entry + amenu disable Changelog.Close\ Bug + amenu disable Changelog.Set\ Distribution + amenu disable Changelog.Set\ Urgency + amenu enable Changelog.Unfinalise + amenu disable Changelog.Finalise +endfunction + +function Finalise() + call FinaliseMenu() + normal 1G + call search("^ -- ") + call setline(".", " -- " . FullName() . " <" . Email() . "> " . Date()) +endfunction + + +function MakeMenu() + amenu &Changelog.&New\ Version :call NewVersion() + amenu Changelog.&Add\ Entry :call AddEntry() + amenu Changelog.&Close\ Bug :call CloseBug() + menu Changelog.-sep- + + amenu Changelog.Set\ &Distribution.&unstable :call Distribution("unstable") + amenu Changelog.Set\ Distribution.&frozen :call Distribution("frozen") + amenu Changelog.Set\ Distribution.&stable :call Distribution("stable") + menu Changelog.Set\ Distribution.-sep- + amenu Changelog.Set\ Distribution.frozen\ unstable :call Distribution("frozen unstable") + amenu Changelog.Set\ Distribution.stable\ unstable :call Distribution("stable unstable") + amenu Changelog.Set\ Distribution.stable\ frozen :call Distribution("stable frozen") + amenu Changelog.Set\ Distribution.stable\ frozen\ unstable :call Distribution("stable frozen unstable") + + amenu Changelog.Set\ &Urgency.&low :call Urgency("low") + amenu Changelog.Set\ Urgency.&medium :call Urgency("medium") + amenu Changelog.Set\ Urgency.&high :call Urgency("high") + + menu Changelog.-sep- + amenu Changelog.U&nfinalise :call Unfinalise() + amenu Changelog.&Finalise :call Finalise() + + if Finalised() + call FinaliseMenu() + else + call UnfinaliseMenu() + endif +endfunction + +augroup changelogMenu +au BufEnter * if &filetype == "debchangelog" | call MakeMenu() | endif +au BufLeave * if &filetype == "debchangelog" | silent! aunmenu Changelog | endif +augroup END + +" }}} +" {{{1 folding + +" look for an author name in the [zonestart zoneend] lines searching backward +function! s:getAuthor(zonestart, zoneend) + let linepos = a:zoneend + while linepos >= a:zonestart + let line = getline(linepos) + if line =~ '^ --' + return substitute(line, '^ --\s*\([^<]\+\)\s*.*', '\1', '') + endif + let linepos -= 1 + endwhile + return '[unknown]' +endfunction + +" Look for a package source name searching backward from the givenline and +" returns it. Return the empty string if the package name can't be found +function! DebGetPkgSrcName(lineno) + let lineidx = a:lineno + let pkgname = '' + while lineidx > 0 + let curline = getline(lineidx) + if curline =~ '^\S' + let pkgname = matchlist(curline, '^\(\S\+\).*$')[1] + break + endif + let lineidx = lineidx - 1 + endwhile + return pkgname +endfunction + +function! DebChangelogFoldText() + if v:folddashes == '-' " changelog entry fold + return foldtext() . ' -- ' . s:getAuthor(v:foldstart, v:foldend) . ' ' + endif + return foldtext() +endfunction + +function! DebGetChangelogFold(lnum) + let line = getline(a:lnum) + if line =~ '^\w\+' + return '>1' " beginning of a changelog entry + endif + if line =~ '^\s\+\[.*\]' + return '>2' " beginning of an author-specific chunk + endif + if line =~ '^ --' + return '1' + endif + return '=' +endfunction + +if exists("g:debchangelog_fold_enable") + silent! foldopen! " unfold the entry the cursor is on (usually the first one) +endif + +" }}} + +" {{{1 omnicompletion for Closes: # + +if !exists('g:debchangelog_listbugs_severities') + let g:debchangelog_listbugs_severities = 'critical,grave,serious,important,normal,minor,wishlist' +endif + +fun! DebCompleteBugs(findstart, base) + if a:findstart + let line = getline('.') + + " try to detect whether this is closes: or lp: + let g:debchangelog_complete_mode = 'debbugs' + let try_colidx = col('.') - 1 + let colidx = -1 " default to no-completion-possible + + while try_colidx > 0 && line[try_colidx - 1] =~ '\s\|\d\|#\|,\|:' + let try_colidx = try_colidx - 1 + if line[try_colidx] == '#' && colidx == -1 + " found hash, where we complete from: + let colidx = try_colidx + elseif line[try_colidx] == ':' + if try_colidx > 1 && strpart(line, try_colidx - 2, 3) =~ '\clp:' + let g:debchangelog_complete_mode = 'lp' + endif + break + endif + endwhile + return colidx + else " return matches: + let bug_lines = [] + if g:debchangelog_complete_mode == 'lp' + if ! has('python') + echoerr 'vim must be built with Python support to use LP bug completion' + return + endif + let pkgsrc = DebGetPkgSrcName(line('.')) + python << EOF +import vim +try: + from launchpadlib.launchpad import Launchpad + from lazr.restfulclient.errors import HTTPError + # login anonymously + lp = Launchpad.login_anonymously('debchangelog.vim', 'production') + ubuntu = lp.distributions['ubuntu'] + try: + sp = ubuntu.getSourcePackage(name=vim.eval('pkgsrc')) + status = ('New', 'Incomplete', 'Confirmed', 'Triaged', + 'In Progress', 'Fix Committed') + tasklist = sp.searchTasks(status=status, order_by='id') + liststr = '[' + for task in tasklist: + bug = task.bug + liststr += "'#%d - %s'," % (bug.id, bug.title.replace('\'', '\'\'')) + liststr += ']' + vim.command('silent let bug_lines = %s' % liststr.encode('utf-8')) + except HTTPError: + pass +except ImportError: + vim.command('echoerr \'python-launchpadlib >= 1.5.4 needs to be installed to use Launchpad bug completion\'') +EOF + else + if ! filereadable('/usr/sbin/apt-listbugs') + echoerr 'apt-listbugs not found, you should install it to use Closes bug completion' + return + endif + let pkgsrc = DebGetPkgSrcName(line('.')) + let listbugs_output = system('/usr/sbin/apt-listbugs -s ' . g:debchangelog_listbugs_severities . ' list ' . pkgsrc . ' | grep "^ #" 2> /dev/null') + let bug_lines = split(listbugs_output, '\n') + endif + let completions = [] + for line in bug_lines + let parts = matchlist(line, '^\s*\(#\S\+\)\s*-\s*\(.*\)$') + " filter only those which match a:base: + if parts[1] !~ "^" . a:base + continue + endif + let completion = {} + let completion['word'] = parts[1] + let completion['menu'] = parts[2] + let completion['info'] = parts[0] + let completions += [completion] + endfor + return completions + endif +endfun + +setlocal omnifunc=DebCompleteBugs + +" }}} + +" vim: set foldmethod=marker: diff --git a/share/vim/vim73/ftplugin/debcontrol.vim b/share/vim/vim74/ftplugin/debcontrol.vim similarity index 100% rename from share/vim/vim73/ftplugin/debcontrol.vim rename to share/vim/vim74/ftplugin/debcontrol.vim diff --git a/share/vim/vim73/ftplugin/denyhosts.vim b/share/vim/vim74/ftplugin/denyhosts.vim similarity index 100% rename from share/vim/vim73/ftplugin/denyhosts.vim rename to share/vim/vim74/ftplugin/denyhosts.vim diff --git a/share/vim/vim73/ftplugin/dictconf.vim b/share/vim/vim74/ftplugin/dictconf.vim similarity index 100% rename from share/vim/vim73/ftplugin/dictconf.vim rename to share/vim/vim74/ftplugin/dictconf.vim diff --git a/share/vim/vim73/ftplugin/dictdconf.vim b/share/vim/vim74/ftplugin/dictdconf.vim similarity index 100% rename from share/vim/vim73/ftplugin/dictdconf.vim rename to share/vim/vim74/ftplugin/dictdconf.vim diff --git a/share/vim/vim73/ftplugin/diff.vim b/share/vim/vim74/ftplugin/diff.vim similarity index 100% rename from share/vim/vim73/ftplugin/diff.vim rename to share/vim/vim74/ftplugin/diff.vim diff --git a/share/vim/vim73/ftplugin/dircolors.vim b/share/vim/vim74/ftplugin/dircolors.vim similarity index 100% rename from share/vim/vim73/ftplugin/dircolors.vim rename to share/vim/vim74/ftplugin/dircolors.vim diff --git a/share/vim/vim74/ftplugin/docbk.vim b/share/vim/vim74/ftplugin/docbk.vim new file mode 100644 index 00000000..cbceb6b3 --- /dev/null +++ b/share/vim/vim74/ftplugin/docbk.vim @@ -0,0 +1,24 @@ +" Vim filetype plugin file +" Language: DocBook +" Maintainer: Nikolai Weibull +" Latest Revision: 2012-04-25 + +if exists('b:did_ftplugin') + finish +endif + +if !exists('b:docbk_type') + if expand('%:e') == 'sgml' + let b:docbk_type = 'sgml' + else + let b:docbk_type = 'xml' + endif +endif + +if b:docbk_type == 'sgml' + runtime! ftplugin/sgml.vim ftplugin/sgml_*.vim ftplugin/sgml/*.vim +else + runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim +endif + +let b:undo_ftplugin = "unlet! b:docbk_type" diff --git a/share/vim/vim74/ftplugin/dosbatch.vim b/share/vim/vim74/ftplugin/dosbatch.vim new file mode 100644 index 00000000..dbc02d80 --- /dev/null +++ b/share/vim/vim74/ftplugin/dosbatch.vim @@ -0,0 +1,30 @@ +" Vim filetype plugin file +" Language: MS-DOS .bat files +" Maintainer: Mike Williams +" Last Change: 8th May 2012 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +" BAT comment formatting +setlocal comments=b:rem,b:@rem,b:REM,b:@REM,::: +setlocal formatoptions-=t formatoptions+=rol + +" Define patterns for the browse file filter +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "DOS Batch Files (*.bat, *.cmd)\t*.bat;*.cmd\nAll Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setlocal comments< formatoptions<" + \ . "| unlet! b:browsefiler" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/ftplugin/dosini.vim b/share/vim/vim74/ftplugin/dosini.vim similarity index 100% rename from share/vim/vim73/ftplugin/dosini.vim rename to share/vim/vim74/ftplugin/dosini.vim diff --git a/share/vim/vim74/ftplugin/dtd.vim b/share/vim/vim74/ftplugin/dtd.vim new file mode 100644 index 00000000..6c08f669 --- /dev/null +++ b/share/vim/vim74/ftplugin/dtd.vim @@ -0,0 +1,40 @@ +" Vim filetype plugin file +" Language: dtd +" Maintainer: Dan Sharp +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal commentstring= +setlocal comments=s: + +setlocal formatoptions-=t +if !exists("g:ft_dtd_autocomment") || (g:ft_dtd_autocomment == 1) + setlocal formatoptions+=croql +endif + +if exists("loaded_matchit") + let b:match_words = ',' +endif + +" Change the :browse e filter to primarily show Java-related files. +if has("gui_win32") + let b:browsefilter="DTD Files (*.dtd)\t*.dtd\n" . + \ "XML Files (*.xml)\t*.xml\n" . + \ "All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal commentstring< comments< formatoptions<" . + \ " | unlet! b:matchwords b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim73/ftplugin/dtrace.vim b/share/vim/vim74/ftplugin/dtrace.vim similarity index 100% rename from share/vim/vim73/ftplugin/dtrace.vim rename to share/vim/vim74/ftplugin/dtrace.vim diff --git a/share/vim/vim73/ftplugin/elinks.vim b/share/vim/vim74/ftplugin/elinks.vim similarity index 100% rename from share/vim/vim73/ftplugin/elinks.vim rename to share/vim/vim74/ftplugin/elinks.vim diff --git a/share/vim/vim74/ftplugin/erlang.vim b/share/vim/vim74/ftplugin/erlang.vim new file mode 100644 index 00000000..2bbc345b --- /dev/null +++ b/share/vim/vim74/ftplugin/erlang.vim @@ -0,0 +1,87 @@ +" Vim ftplugin file +" Language: Erlang +" Author: Oscar Hellström +" Contributors: Ricardo Catalinas Jiménez +" Eduardo Lopez (http://github.com/tapichu) +" License: Vim license +" Version: 2012/01/25 + +if exists('b:did_ftplugin') + finish +else + let b:did_ftplugin = 1 +endif + +if exists('s:did_function_definitions') + call s:SetErlangOptions() + finish +else + let s:did_function_definitions = 1 +endif + +let s:cpo_save = &cpo +set cpo&vim + +if !exists('g:erlang_keywordprg') + let g:erlang_keywordprg = 'erl -man' +endif + +if !exists('g:erlang_folding') + let g:erlang_folding = 0 +endif + +let s:erlang_fun_begin = '^\a\w*(.*$' +let s:erlang_fun_end = '^[^%]*\.\s*\(%.*\)\?$' + +function s:SetErlangOptions() + if g:erlang_folding + setlocal foldmethod=expr + setlocal foldexpr=GetErlangFold(v:lnum) + setlocal foldtext=ErlangFoldText() + endif + + setlocal comments=:%%%,:%%,:% + setlocal commentstring=%%s + + setlocal formatoptions+=ro + let &l:keywordprg = g:erlang_keywordprg +endfunction + +function GetErlangFold(lnum) + let lnum = a:lnum + let line = getline(lnum) + + if line =~ s:erlang_fun_end + return '<1' + endif + + if line =~ s:erlang_fun_begin && foldlevel(lnum - 1) == 1 + return '1' + endif + + if line =~ s:erlang_fun_begin + return '>1' + endif + + return '=' +endfunction + +function ErlangFoldText() + let line = getline(v:foldstart) + let foldlen = v:foldend - v:foldstart + 1 + let lines = ' ' . foldlen . ' lines: ' . substitute(line, "[\ \t]*", '', '') + if foldlen < 10 + let lines = ' ' . lines + endif + let retval = '+' . v:folddashes . lines + + return retval +endfunction + +call s:SetErlangOptions() + +let b:undo_ftplugin = "setlocal foldmethod< foldexpr< foldtext<" + \ . " comments< commentstring< formatoptions<" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim74/ftplugin/eruby.vim b/share/vim/vim74/ftplugin/eruby.vim new file mode 100644 index 00000000..9bb8e86f --- /dev/null +++ b/share/vim/vim74/ftplugin/eruby.vim @@ -0,0 +1,102 @@ +" Vim filetype plugin +" Language: eRuby +" Maintainer: Tim Pope +" URL: https://github.com/vim-ruby/vim-ruby +" Release Coordinator: Doug Kearns + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "All Files (*.*)\t*.*\n" +let s:match_words = "" + +if !exists("g:eruby_default_subtype") + let g:eruby_default_subtype = "html" +endif + +if &filetype =~ '^eruby\.' + let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+') +elseif !exists("b:eruby_subtype") + let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") + let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+') + if b:eruby_subtype == '' + let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+$') + endif + if b:eruby_subtype == 'rhtml' + let b:eruby_subtype = 'html' + elseif b:eruby_subtype == 'rb' + let b:eruby_subtype = 'ruby' + elseif b:eruby_subtype == 'yml' + let b:eruby_subtype = 'yaml' + elseif b:eruby_subtype == 'js' + let b:eruby_subtype = 'javascript' + elseif b:eruby_subtype == 'txt' + " Conventional; not a real file type + let b:eruby_subtype = 'text' + elseif b:eruby_subtype == '' + let b:eruby_subtype = g:eruby_default_subtype + endif +endif + +if exists("b:eruby_subtype") && b:eruby_subtype != '' + exe "runtime! ftplugin/".b:eruby_subtype.".vim ftplugin/".b:eruby_subtype."_*.vim ftplugin/".b:eruby_subtype."/*.vim" +else + runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +endif +unlet! b:did_ftplugin + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin + unlet b:undo_ftplugin +endif +if exists("b:browsefilter") + let s:browsefilter = b:browsefilter + unlet b:browsefilter +endif +if exists("b:match_words") + let s:match_words = b:match_words + unlet b:match_words +endif + +runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim +let b:did_ftplugin = 1 + +" Combine the new set of values with those previously included. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin +endif +if exists ("b:browsefilter") + let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter +endif +if exists("b:match_words") + let s:match_words = b:match_words . ',' . s:match_words +endif + +" Change the browse dialog on Win32 to show mainly eRuby-related files +if has("gui_win32") + let b:browsefilter="eRuby Files (*.erb, *.rhtml)\t*.erb;*.rhtml\n" . s:browsefilter +endif + +" Load the combined list of match_words for matchit.vim +if exists("loaded_matchit") + let b:match_words = s:match_words +endif + +" TODO: comments= +setlocal commentstring=<%#%s%> + +let b:undo_ftplugin = "setl cms< " + \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim: nowrap sw=2 sts=2 ts=8: diff --git a/share/vim/vim73/ftplugin/eterm.vim b/share/vim/vim74/ftplugin/eterm.vim similarity index 100% rename from share/vim/vim73/ftplugin/eterm.vim rename to share/vim/vim74/ftplugin/eterm.vim diff --git a/share/vim/vim74/ftplugin/falcon.vim b/share/vim/vim74/ftplugin/falcon.vim new file mode 100644 index 00000000..4fc135b4 --- /dev/null +++ b/share/vim/vim74/ftplugin/falcon.vim @@ -0,0 +1,48 @@ +" Vim filetype plugin file +" Language: Falcon +" Author: Steven Oliver +" Copyright: Copyright (c) 2009-2013 Steven Oliver +" License: You may redistribute this under the same terms as Vim itself +" -------------------------------------------------------------------------- + +" Only do this when not done yet for this buffer +if (exists("b:did_ftplugin")) + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal softtabstop=4 shiftwidth=4 fileencoding=utf-8 +setlocal suffixesadd=.fal,.ftd + +" Matchit support +if exists("loaded_matchit") && !exists("b:match_words") + let b:match_ignorecase = 0 + + let b:match_words = + \ '\<\%(if\|case\|while\|until\|for\|do\|class\)\>=\@!' . + \ ':' . + \ '\<\%(else\|elsif\|when\)\>' . + \ ':' . + \ '\' . + \ ',{:},\[:\],(:)' +endif + +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// + +" Windows allows you to filter the open file dialog +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "Falcon Source Files (*.fal *.ftd)\t*.fal;*.ftd\n" . + \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setlocal tabstop< shiftwidth< expandtab< fileencoding<" + \ . " suffixesadd< comments<" + \ . "| unlet! b:browsefiler" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: set sw=4 sts=4 et tw=80 : diff --git a/share/vim/vim73/ftplugin/fetchmail.vim b/share/vim/vim74/ftplugin/fetchmail.vim similarity index 100% rename from share/vim/vim73/ftplugin/fetchmail.vim rename to share/vim/vim74/ftplugin/fetchmail.vim diff --git a/share/vim/vim73/ftplugin/flexwiki.vim b/share/vim/vim74/ftplugin/flexwiki.vim similarity index 100% rename from share/vim/vim73/ftplugin/flexwiki.vim rename to share/vim/vim74/ftplugin/flexwiki.vim diff --git a/share/vim/vim74/ftplugin/fortran.vim b/share/vim/vim74/ftplugin/fortran.vim new file mode 100644 index 00000000..110dab3a --- /dev/null +++ b/share/vim/vim74/ftplugin/fortran.vim @@ -0,0 +1,123 @@ +" Vim settings file +" Language: Fortran 2008 (and older: Fortran 2003, 95, 90, 77, 66) +" Version: 0.48 +" Last Change: 2012 Apr. 18 +" Maintainer: Ajit J. Thakkar ; +" Usage: Do :help fortran-plugin from Vim +" Credits: +" Useful suggestions were made by Stefano Zacchiroli, Hendrik Merx, and Ben +" Fritz. + +" Only do these settings when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +let s:cposet=&cpoptions +set cpoptions&vim + +" Don't do other file type settings for this buffer +let b:did_ftplugin = 1 + +" Determine whether this is a fixed or free format source file +" if this hasn't been done yet +if !exists("b:fortran_fixed_source") + if exists("fortran_free_source") + " User guarantees free source form + let b:fortran_fixed_source = 0 + elseif exists("fortran_fixed_source") + " User guarantees fixed source form + let b:fortran_fixed_source = 1 + else + " Modern Fortran allows both fixed and free source form + " assume fixed source form unless signs of free source form + " are detected in the first five columns of the first s:lmax lines + " Detection becomes more accurate and time-consuming if more lines + " are checked. Increase the limit below if you keep lots of comments at + " the very top of each file and you have a fast computer + let s:lmax = 500 + if ( s:lmax > line("$") ) + let s:lmax = line("$") + endif + let b:fortran_fixed_source = 1 + let s:ln=1 + while s:ln <= s:lmax + let s:test = strpart(getline(s:ln),0,5) + if s:test !~ '^[Cc*]' && s:test !~ '^ *[!#]' && s:test =~ '[^ 0-9\t]' && s:test !~ '^[ 0-9]*\t' + let b:fortran_fixed_source = 0 + break + endif + let s:ln = s:ln + 1 + endwhile + unlet! s:lmax s:ln s:test + endif +endif + +" Set comments and textwidth according to source type +if (b:fortran_fixed_source == 1) + setlocal comments=:!,:*,:C + " Fixed format requires a textwidth of 72 for code + setlocal tw=72 + " If you need to add "&" on continued lines so that the code is + " compatible with both free and fixed format, then you should do so + " in column 73 and uncomment the next line + " setlocal tw=73 +else + setlocal comments=:! + " Free format allows a textwidth of 132 for code but 80 is more usual + setlocal tw=80 +endif + +" Set commentstring for foldmethod=marker +setlocal cms=!%s + +" Tabs are not a good idea in Fortran so the default is to expand tabs +if !exists("fortran_have_tabs") + setlocal expandtab +endif + +" Set 'formatoptions' to break comment and text lines but allow long lines +setlocal fo+=tcql + +setlocal include=^\\c#\\=\\s*include\\s\\+ +setlocal suffixesadd+=.f08,.f03,.f95,.f90,.for,.f,.F,.f77,.ftn,.fpp + +" Define patterns for the matchit plugin +if !exists("b:match_words") + let s:notend = '\%(\:' . s:notselect. '\:\,' . + \ s:notelse . '\:' . + \ '\:\,'. + \ 'do\s\+\(\d\+\):\%(^\s*\)\@<=\1\s,'. + \ s:notend . '\:\,'. + \ s:notelse . '\:\:\,'. + \ s:notend . '\,'. + \ s:notend . '\:\,'. + \ s:notend . '\:\,'. + \ s:notend . '\:\,'. + \ s:notend . '\:\,'. + \ s:notend . '\:\,'. + \ s:notend . '\:\,'. + \ s:notend . '\' . s:notprocedure . ':\,'. + \ s:notend . '\:\' +endif + +" File filters for :browse e +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "Fortran Files (*.f;*.for;*.f77;*.f90;*.f95;*.f03;*.f08;*.fpp;*.ftn)\t*.f;*.for;*.f77;*.f90;*.f95;*.f03;*.f08;*.fpp;*.ftn\n" . + \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setl fo< com< tw< cms< et< inc<" + \ . "| unlet! b:match_ignorecase b:match_words b:browsefilter" + +let &cpoptions=s:cposet +unlet s:cposet + +" vim:sw=2 diff --git a/share/vim/vim73/ftplugin/framescript.vim b/share/vim/vim74/ftplugin/framescript.vim similarity index 100% rename from share/vim/vim73/ftplugin/framescript.vim rename to share/vim/vim74/ftplugin/framescript.vim diff --git a/share/vim/vim73/ftplugin/fvwm.vim b/share/vim/vim74/ftplugin/fvwm.vim similarity index 100% rename from share/vim/vim73/ftplugin/fvwm.vim rename to share/vim/vim74/ftplugin/fvwm.vim diff --git a/share/vim/vim74/ftplugin/git.vim b/share/vim/vim74/ftplugin/git.vim new file mode 100644 index 00000000..5fe5b2b0 --- /dev/null +++ b/share/vim/vim74/ftplugin/git.vim @@ -0,0 +1,39 @@ +" Vim filetype plugin +" Language: generic git output +" Maintainer: Tim Pope +" Last Change: 2013 May 30 + +" Only do this when not done yet for this buffer +if (exists("b:did_ftplugin")) + finish +endif +let b:did_ftplugin = 1 + +if !exists('b:git_dir') + if expand('%:p') =~# '[\/]\.git[\/]modules[\/]' + " Stay out of the way + elseif expand('%:p') =~# '\.git\>' + let b:git_dir = matchstr(expand('%:p'),'.*\.git\>') + elseif $GIT_DIR != '' + let b:git_dir = $GIT_DIR + endif + if (has('win32') || has('win64')) && exists('b:git_dir') + let b:git_dir = substitute(b:git_dir,'\\','/','g') + endif +endif + +if exists('*shellescape') && exists('b:git_dir') && b:git_dir != '' + if b:git_dir =~# '/\.git$' " Not a bare repository + let &l:path = escape(fnamemodify(b:git_dir,':h'),'\, ').','.&l:path + endif + let &l:path = escape(b:git_dir,'\, ').','.&l:path + let &l:keywordprg = 'git --git-dir='.shellescape(b:git_dir).' show' +else + setlocal keywordprg=git\ show +endif +if has('gui_running') + let &l:keywordprg = substitute(&l:keywordprg,'^git\>','git --no-pager','') +endif + +setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','') +let b:undo_ftplugin = "setl keywordprg< path< includeexpr<" diff --git a/share/vim/vim74/ftplugin/gitcommit.vim b/share/vim/vim74/ftplugin/gitcommit.vim new file mode 100644 index 00000000..e8619004 --- /dev/null +++ b/share/vim/vim74/ftplugin/gitcommit.vim @@ -0,0 +1,67 @@ +" Vim filetype plugin +" Language: git commit file +" Maintainer: Tim Pope +" Last Change: 2013 May 30 + +" Only do this when not done yet for this buffer +if (exists("b:did_ftplugin")) + finish +endif + +runtime! ftplugin/git.vim +let b:did_ftplugin = 1 + +setlocal nomodeline tabstop=8 formatoptions-=croq formatoptions+=tl + +let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions<' + +if &textwidth == 0 + " make sure that log messages play nice with git-log on standard terminals + setlocal textwidth=72 + let b:undo_ftplugin .= "|setl tw<" +endif + +if exists("g:no_gitcommit_commands") || v:version < 700 + finish +endif + +if !exists("b:git_dir") + let b:git_dir = expand("%:p:h") +endif + +command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(0,b:git_dir,) + +function! s:diffcomplete(A,L,P) + let args = "" + if a:P <= match(a:L." -- "," -- ")+3 + let args = args . "-p\n--stat\n--shortstat\n--summary\n--patch-with-stat\n--no-renames\n-B\n-M\n-C\n" + end + if exists("b:git_dir") && a:A !~ '^-' + let tree = fnamemodify(b:git_dir,':h') + if strpart(getcwd(),0,strlen(tree)) == tree + let args = args."\n".system("git diff --cached --name-only") + endif + endif + return args +endfunction + +function! s:gitdiffcached(bang,gitdir,...) + let tree = fnamemodify(a:gitdir,':h') + let name = tempname() + let git = "git" + if strpart(getcwd(),0,strlen(tree)) != tree + let git .= " --git-dir=".(exists("*shellescape") ? shellescape(a:gitdir) : '"'.a:gitdir.'"') + endif + if a:0 + let extra = join(map(copy(a:000),exists("*shellescape") ? 'shellescape(v:val)' : "'\"'.v:val.'\"'")) + else + let extra = "-p --stat=".&columns + endif + call system(git." diff --cached --no-color --no-ext-diff ".extra." > ".(exists("*shellescape") ? shellescape(name) : name)) + exe "pedit ".(exists("*fnameescape") ? fnameescape(name) : name) + wincmd P + let b:git_dir = a:gitdir + command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(0,b:git_dir,) + nnoremap q :q + setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git +endfunction diff --git a/share/vim/vim73/ftplugin/gitconfig.vim b/share/vim/vim74/ftplugin/gitconfig.vim similarity index 100% rename from share/vim/vim73/ftplugin/gitconfig.vim rename to share/vim/vim74/ftplugin/gitconfig.vim diff --git a/share/vim/vim73/ftplugin/gitrebase.vim b/share/vim/vim74/ftplugin/gitrebase.vim similarity index 100% rename from share/vim/vim73/ftplugin/gitrebase.vim rename to share/vim/vim74/ftplugin/gitrebase.vim diff --git a/share/vim/vim73/ftplugin/gitsendemail.vim b/share/vim/vim74/ftplugin/gitsendemail.vim similarity index 100% rename from share/vim/vim73/ftplugin/gitsendemail.vim rename to share/vim/vim74/ftplugin/gitsendemail.vim diff --git a/share/vim/vim73/ftplugin/gpg.vim b/share/vim/vim74/ftplugin/gpg.vim similarity index 100% rename from share/vim/vim73/ftplugin/gpg.vim rename to share/vim/vim74/ftplugin/gpg.vim diff --git a/share/vim/vim74/ftplugin/gprof.vim b/share/vim/vim74/ftplugin/gprof.vim new file mode 100644 index 00000000..750751c3 --- /dev/null +++ b/share/vim/vim74/ftplugin/gprof.vim @@ -0,0 +1,32 @@ +" Language: gprof +" Maintainer: Dominique Pelle +" Last Change: 2013 Jun 09 + +" When cursor is on one line of the gprof call graph, +" calling this function jumps to this function in the call graph. +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin=1 + +fun! GprofJumpToFunctionIndex() + let l:line = getline('.') + if l:line =~ '[\d\+\]$' + " We're in a line in the call graph. + norm! $y% + call search('^' . escape(@", '[]'), 'sw') + norm! zz + elseif l:line =~ '^\(\s\+[0-9\.]\+\)\{3}\s\+' + " We're in line in the flat profile. + norm! 55|eby$ + call search('^\[\d\+\].*\d\s\+' . escape(@", '[]*.') . '\>', 'sW') + norm! zz + endif +endfun + +" Pressing on a line in the gprof flat profile or in +" the call graph, jumps to the corresponding function inside +" the flat profile. +map :call GprofJumpToFunctionIndex() + +" vim:sw=2 fdm=indent diff --git a/share/vim/vim73/ftplugin/group.vim b/share/vim/vim74/ftplugin/group.vim similarity index 100% rename from share/vim/vim73/ftplugin/group.vim rename to share/vim/vim74/ftplugin/group.vim diff --git a/share/vim/vim73/ftplugin/grub.vim b/share/vim/vim74/ftplugin/grub.vim similarity index 100% rename from share/vim/vim73/ftplugin/grub.vim rename to share/vim/vim74/ftplugin/grub.vim diff --git a/share/vim/vim74/ftplugin/haml.vim b/share/vim/vim74/ftplugin/haml.vim new file mode 100644 index 00000000..654f1fca --- /dev/null +++ b/share/vim/vim74/ftplugin/haml.vim @@ -0,0 +1,69 @@ +" Vim filetype plugin +" Language: Haml +" Maintainer: Tim Pope +" Last Change: 2013 Jun 01 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +unlet! b:did_ftplugin +set matchpairs-=<:> + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin + unlet b:undo_ftplugin +endif +if exists("b:browsefilter") + let s:browsefilter = b:browsefilter + unlet b:browsefilter +endif +if exists("b:match_words") + let s:match_words = b:match_words + unlet b:match_words +endif + +runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim +let b:did_ftplugin = 1 + +" Combine the new set of values with those previously included. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin +endif +if exists ("b:browsefilter") + let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter +endif +if exists("b:match_words") + let s:match_words = b:match_words . ',' . s:match_words +endif + +" Change the browse dialog on Win32 to show mainly Haml-related files +if has("gui_win32") + let b:browsefilter="Haml Files (*.haml)\t*.haml\nSass Files (*.sass)\t*.sass\n" . s:browsefilter +endif + +" Load the combined list of match_words for matchit.vim +if exists("loaded_matchit") + let b:match_words = s:match_words +endif + +setlocal comments= commentstring=-#\ %s + +let b:undo_ftplugin = "setl cms< com< " + \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim:set sw=2: diff --git a/share/vim/vim74/ftplugin/hamster.vim b/share/vim/vim74/ftplugin/hamster.vim new file mode 100644 index 00000000..c23adc42 --- /dev/null +++ b/share/vim/vim74/ftplugin/hamster.vim @@ -0,0 +1,62 @@ +" Vim filetype plugin +" Language: Hamster Script +" Version: 2.0.6.0 +" Maintainer: David Fishburn +" Last Change: Wed Nov 08 2006 12:03:09 PM + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo-=C + +let b:undo_ftplugin = "setl fo< com< tw< commentstring<" + \ . "| unlet! b:match_ignorecase b:match_words b:match_skip" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting or using "o". +setlocal fo-=t fo+=croql + +" Use the # sign for comments +setlocal comments=:# + +" Format comments to be up to 78 characters long +if &tw == 0 + setlocal tw=78 +endif + +" Comments start with a double quote +setlocal commentstring=#%s + +" Move around functions. +noremap [[ :call search('^\s*sub\>', "bW") +noremap ]] :call search('^\s*sub\>', "W") +noremap [] :call search('^\s*endsub\>', "bW") +noremap ][ :call search('^\s*endsub\>', "W") + +" Move around comments +noremap ]# :call search('^\s*#\@!', "W") +noremap [# :call search('^\s*#\@!', "bW") + +" Let the matchit plugin know what items can be matched. +if exists("loaded_matchit") + let b:match_ignorecase = 0 + let b:match_words = + \ '\:\:\,' . + \ '\:\:\:\,' . + \ '\:\:\' + + " Ignore ":syntax region" commands, the 'end' argument clobbers if-endif + " let b:match_skip = 'getline(".") =~ "^\\s*sy\\%[ntax]\\s\\+region" || + " \ synIDattr(synID(line("."),col("."),1),"name") =~? "comment\\|string"' +endif + +setlocal ignorecase +let &cpo = s:cpo_save +unlet s:cpo_save +setlocal cpo+=M " makes \%( match \) diff --git a/share/vim/vim73/ftplugin/haskell.vim b/share/vim/vim74/ftplugin/haskell.vim similarity index 100% rename from share/vim/vim73/ftplugin/haskell.vim rename to share/vim/vim74/ftplugin/haskell.vim diff --git a/share/vim/vim74/ftplugin/help.vim b/share/vim/vim74/ftplugin/help.vim new file mode 100644 index 00000000..a0a0f292 --- /dev/null +++ b/share/vim/vim74/ftplugin/help.vim @@ -0,0 +1,22 @@ +" Vim filetype plugin file +" Language: Vim help file +" Maintainer: Nikolai Weibull +" Latest Revision: 2008-07-09 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl fo< tw< cole< cocu<" + +setlocal formatoptions+=tcroql textwidth=78 +if has("conceal") + setlocal cole=2 cocu=nc +endif + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/ftplugin/hostconf.vim b/share/vim/vim74/ftplugin/hostconf.vim similarity index 100% rename from share/vim/vim73/ftplugin/hostconf.vim rename to share/vim/vim74/ftplugin/hostconf.vim diff --git a/share/vim/vim73/ftplugin/hostsaccess.vim b/share/vim/vim74/ftplugin/hostsaccess.vim similarity index 100% rename from share/vim/vim73/ftplugin/hostsaccess.vim rename to share/vim/vim74/ftplugin/hostsaccess.vim diff --git a/share/vim/vim74/ftplugin/html.vim b/share/vim/vim74/ftplugin/html.vim new file mode 100644 index 00000000..418da06a --- /dev/null +++ b/share/vim/vim74/ftplugin/html.vim @@ -0,0 +1,91 @@ +" Vim filetype plugin file +" Language: html +" Maintainer: Dan Sharp +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal matchpairs+=<:> +setlocal commentstring= +setlocal comments=s: + +if exists("g:ft_html_autocomment") && (g:ft_html_autocomment == 1) + setlocal formatoptions-=t formatoptions+=croql +endif + + +if exists('&omnifunc') + " Distinguish between HTML versions + " To use with other HTML versions add another + " elseif condition to match proper DOCTYPE + setlocal omnifunc=htmlcomplete#CompleteTags + + if &filetype == 'xhtml' + let b:html_omni_flavor = 'xhtml10s' + else + let b:html_omni_flavor = 'html401t' + endif + let i = 1 + let line = "" + while i < 10 && i < line("$") + let line = getline(i) + if line =~ '' + let b:html_omni_flavor = 'html40' + endif + if line =~ '\' + let b:html_omni_flavor .= 't' + elseif line =~ '\' + let b:html_omni_flavor .= 'f' + else + let b:html_omni_flavor .= 's' + endif + endif + endif +endif + +" HTML: thanks to Johannes Zellner and Benji Fisher. +if exists("loaded_matchit") + let b:match_ignorecase = 1 + let b:match_words = '<:>,' . + \ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' . + \ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' . + \ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>' +endif + +" Change the :browse e filter to primarily show HTML-related files. +if has("gui_win32") + let b:browsefilter="HTML Files (*.html,*.htm)\t*.htm;*.html\n" . + \ "JavaScript Files (*.js)\t*.js\n" . + \ "Cascading StyleSheets (*.css)\t*.css\n" . + \ "All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal commentstring< matchpairs< omnifunc< comments< formatoptions<" . + \ " | unlet! b:match_ignorecase b:match_skip b:match_words b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim73/ftplugin/htmldjango.vim b/share/vim/vim74/ftplugin/htmldjango.vim similarity index 100% rename from share/vim/vim73/ftplugin/htmldjango.vim rename to share/vim/vim74/ftplugin/htmldjango.vim diff --git a/share/vim/vim73/ftplugin/indent.vim b/share/vim/vim74/ftplugin/indent.vim similarity index 100% rename from share/vim/vim73/ftplugin/indent.vim rename to share/vim/vim74/ftplugin/indent.vim diff --git a/share/vim/vim74/ftplugin/initex.vim b/share/vim/vim74/ftplugin/initex.vim new file mode 100644 index 00000000..0ee3e8d8 --- /dev/null +++ b/share/vim/vim74/ftplugin/initex.vim @@ -0,0 +1,39 @@ +" filetype plugin for TeX and variants +" Language: TeX (ft=initex) +" Maintainer: Benji Fisher, Ph.D. +" Version: 1.0 +" Last Change: Wed 19 Apr 2006 + +" Only do this when not done yet for this buffer. +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer. +let b:did_ftplugin = 1 + +" Avoid problems if running in 'compatible' mode. +let s:save_cpo = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< define< include< sua<" + +" Set 'comments' to format dashed lists in comments +setlocal com=sO:%\ -,mO:%\ \ ,eO:%%,:% + +" Set 'commentstring' to recognize the % comment character: +" (Thanks to Ajit Thakkar.) +setlocal cms=%%s + +" Allow "[d" to be used to find a macro definition: +let &l:define='\\\([egx]\|char\|mathchar\|count\|dimen\|muskip\|skip\|toks\)\=' + \ . 'def\|\\font\|\\\(future\)\=let' + +" Tell Vim to recognize \input bar : +let &l:include = '\\input' +setlocal suffixesadd=.tex + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim:sts=2:sw=2: diff --git a/share/vim/vim74/ftplugin/ishd.vim b/share/vim/vim74/ftplugin/ishd.vim new file mode 100644 index 00000000..33ef1510 --- /dev/null +++ b/share/vim/vim74/ftplugin/ishd.vim @@ -0,0 +1,33 @@ +" Vim filetype plugin file +" Language: InstallShield (ft=ishd) +" Maintainer: Johannes Zellner +" Last Change: Sat, 24 May 2003 11:55:36 CEST + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +setlocal foldmethod=syntax + +" Using line continuation here. +let s:cpo_save = &cpo +set cpo-=C + +" matchit support +if exists("loaded_matchit") + let b:match_ignorecase=0 + let b:match_words= + \ '\%(^\s*\)\@<=\\s\+[^()]\+\s*(:\%(^\s*\)\@<=\\s*$:\%(^\s*\)\@<=\:\%(^\s*\)\@<=\\s*;\s*$,' . + \ '\%(^\s*\)\@<=\\s*$:\%(^\s*\)\@<=\\s\+.\{-}\s*;\s*$,' . + \ '\%(^\s*\)\@<=\\s*(.\{-}):\%(^\s*\)\@<=\<\%(case\|default\)\>:\%(^\s*\)\@<=\\s*;\s*$,' . + \ '\%(^\s*\)\@<=\\s*(.\{-}):\%(^\s*\)\@<=\\s*;\s*$,' . + \ '\%(^\s*\)\@<=\.\{-}\<\%(to\|downto\)\>:\%(^\s*\)\@<=\\s*;\s*$,' . + \ '\%(^\s*\)\@<=\\s*(.\{-})\s*then:\%(^\s*\)\@<=\\s*([^)]*)\s*then:\%(^\s*\)\@<=\:\%(^\s*\)\@<=\\s*;\s*$' +endif + +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "InstallShield Files (*.rul)\t*.rul\n" . + \ "All Files (*.*)\t*.*\n" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim74/ftplugin/java.vim b/share/vim/vim74/ftplugin/java.vim new file mode 100644 index 00000000..292cb6b1 --- /dev/null +++ b/share/vim/vim74/ftplugin/java.vim @@ -0,0 +1,51 @@ +" Vim filetype plugin file +" Language: Java +" Maintainer: Dan Sharp +" Last Change: 2012 Mar 11 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" For filename completion, prefer the .java extension over the .class +" extension. +set suffixes+=.class + +" Enable gf on import statements. Convert . in the package +" name to / and append .java to the name, then search the path. +setlocal includeexpr=substitute(v:fname,'\\.','/','g') +setlocal suffixesadd=.java +if exists("g:ftplugin_java_source_path") + let &l:path=g:ftplugin_java_source_path . ',' . &l:path +endif + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting or using "o". +setlocal formatoptions-=t formatoptions+=croql + +" Set 'comments' to format dashed lists in comments. Behaves just like C. +setlocal comments& comments^=sO:*\ -,mO:*\ \ ,exO:*/ + +setlocal commentstring=//%s + +" Change the :browse e filter to primarily show Java-related files. +if has("gui_win32") + let b:browsefilter="Java Files (*.java)\t*.java\n" . + \ "Properties Files (*.prop*)\t*.prop*\n" . + \ "Manifest Files (*.mf)\t*.mf\n" . + \ "All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal suffixes< suffixesadd<" . + \ " formatoptions< comments< commentstring< path< includeexpr<" . + \ " | unlet! b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim73/ftplugin/javascript.vim b/share/vim/vim74/ftplugin/javascript.vim similarity index 100% rename from share/vim/vim73/ftplugin/javascript.vim rename to share/vim/vim74/ftplugin/javascript.vim diff --git a/share/vim/vim74/ftplugin/jsp.vim b/share/vim/vim74/ftplugin/jsp.vim new file mode 100644 index 00000000..fbba863b --- /dev/null +++ b/share/vim/vim74/ftplugin/jsp.vim @@ -0,0 +1,67 @@ +" Vim filetype plugin file +" Language: jsp +" Maintainer: Dan Sharp +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "Java Files (*.java)\t*.java\n" . + \ "HTML Files (*.html, *.htm)\t*.html;*.htm\n" . + \ "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +unlet b:did_ftplugin + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin + unlet b:undo_ftplugin +endif +if exists("b:browsefilter") + let s:browsefilter = b:browsefilter + unlet b:browsefilter +endif +if exists("b:match_words") + let s:match_words = b:match_words + unlet b:match_words +endif + +runtime! ftplugin/java.vim ftplugin/java_*.vim ftplugin/java/*.vim +let b:did_ftplugin = 1 + +" Combine the new set of values with those previously included. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin +endif +if exists ("b:browsefilter") + let s:browsefilter = b:browsefilter . s:browsefilter +endif +if exists("b:match_words") + let s:match_words = b:match_words . ',' . s:match_words +endif + +" Load the combined list of match_words for matchit.vim +if exists("loaded_matchit") + let b:match_words = s:match_words +endif + +" Change the :browse e filter to primarily show JSP-related files. +if has("gui_win32") + let b:browsefilter="JSP Files (*.jsp)\t*.jsp\n" . s:browsefilter +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:browsefilter b:match_words | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim73/ftplugin/kconfig.vim b/share/vim/vim74/ftplugin/kconfig.vim similarity index 100% rename from share/vim/vim73/ftplugin/kconfig.vim rename to share/vim/vim74/ftplugin/kconfig.vim diff --git a/share/vim/vim74/ftplugin/kwt.vim b/share/vim/vim74/ftplugin/kwt.vim new file mode 100644 index 00000000..05b40d4e --- /dev/null +++ b/share/vim/vim74/ftplugin/kwt.vim @@ -0,0 +1,32 @@ +" Vim filetype plugin file +" Language: Kimwitu++ +" Maintainer: Michael Piefel +" Last Change: 10 March 2012 + +" Behaves almost like C++ +runtime! ftplugin/cpp.vim ftplugin/cpp_*.vim ftplugin/cpp/*.vim + +let s:cpo_save = &cpo +set cpo&vim + +" Limit the browser to related files +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "Kimwitu/Kimwitu++ Files (*.k)\t*.k\n" . + \ "Lex/Flex Files (*.l)\t*.l\n" . + \ "Yacc/Bison Files (*.y)\t*.y\n" . + \ "All Files (*.*)\t*.*\n" +endif + +" Set the errorformat for the Kimwitu++ compiler +set efm+=kc%.%#:\ error\ at\ %f:%l:\ %m + +if exists("b:undo_ftplugin") + let b:undo_ftplugin = b:undo_ftplugin . " | setlocal efm<" + \ . "| unlet! b:browsefiler" +else + let b:undo_ftplugin = "setlocal efm<" + \ . "| unlet! b:browsefiler" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/ftplugin/ld.vim b/share/vim/vim74/ftplugin/ld.vim similarity index 100% rename from share/vim/vim73/ftplugin/ld.vim rename to share/vim/vim74/ftplugin/ld.vim diff --git a/share/vim/vim73/ftplugin/lftp.vim b/share/vim/vim74/ftplugin/lftp.vim similarity index 100% rename from share/vim/vim73/ftplugin/lftp.vim rename to share/vim/vim74/ftplugin/lftp.vim diff --git a/share/vim/vim73/ftplugin/libao.vim b/share/vim/vim74/ftplugin/libao.vim similarity index 100% rename from share/vim/vim73/ftplugin/libao.vim rename to share/vim/vim74/ftplugin/libao.vim diff --git a/share/vim/vim73/ftplugin/limits.vim b/share/vim/vim74/ftplugin/limits.vim similarity index 100% rename from share/vim/vim73/ftplugin/limits.vim rename to share/vim/vim74/ftplugin/limits.vim diff --git a/share/vim/vim73/ftplugin/liquid.vim b/share/vim/vim74/ftplugin/liquid.vim similarity index 100% rename from share/vim/vim73/ftplugin/liquid.vim rename to share/vim/vim74/ftplugin/liquid.vim diff --git a/share/vim/vim74/ftplugin/lisp.vim b/share/vim/vim74/ftplugin/lisp.vim new file mode 100644 index 00000000..8bf6ae41 --- /dev/null +++ b/share/vim/vim74/ftplugin/lisp.vim @@ -0,0 +1,29 @@ +" Vim filetype plugin +" Language: Lisp +" Maintainer: Sergey Khorev +" URL: http://sites.google.com/site/khorser/opensource/vim +" Original author: Dorai Sitaram +" Original URL: http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html +" Last Change: Feb 12, 2013 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +setl comments=:; +setl define=^\\s*(def\\k* +setl formatoptions-=t +setl iskeyword+=+,-,*,/,%,<,=,>,:,$,?,!,@-@,94 +setl lisp +setl commentstring=;%s + +" make comments behaviour like in c.vim +" e.g. insertion of ;;; and ;; on normal "O" or "o" when staying in comment +setl comments^=:;;;,:;;,sr:#\|,mb:\|,ex:\|# +setl formatoptions+=croql + +let b:undo_ftplugin = "setlocal comments< define< formatoptions< iskeyword< lisp< commentstring<" diff --git a/share/vim/vim74/ftplugin/logcheck.vim b/share/vim/vim74/ftplugin/logcheck.vim new file mode 100644 index 00000000..7d4671d8 --- /dev/null +++ b/share/vim/vim74/ftplugin/logcheck.vim @@ -0,0 +1,17 @@ +" Vim filetype plugin file +" Language: Logcheck +" Maintainer: Debian Vim Maintainers +" Last Change: 2012 Jan 15 +" License: Vim License +" URL: http://hg.debian.org/hg/pkg-vim/vim/file/unstable/runtime/ftplugin/logcheck.vim + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl fo<" + +" Do not hard-wrap non-comment lines since each line is a self-contained +" regular expression +setlocal formatoptions-=t diff --git a/share/vim/vim73/ftplugin/loginaccess.vim b/share/vim/vim74/ftplugin/loginaccess.vim similarity index 100% rename from share/vim/vim73/ftplugin/loginaccess.vim rename to share/vim/vim74/ftplugin/loginaccess.vim diff --git a/share/vim/vim73/ftplugin/logindefs.vim b/share/vim/vim74/ftplugin/logindefs.vim similarity index 100% rename from share/vim/vim73/ftplugin/logindefs.vim rename to share/vim/vim74/ftplugin/logindefs.vim diff --git a/share/vim/vim73/ftplugin/logtalk.dict b/share/vim/vim74/ftplugin/logtalk.dict similarity index 100% rename from share/vim/vim73/ftplugin/logtalk.dict rename to share/vim/vim74/ftplugin/logtalk.dict diff --git a/share/vim/vim73/ftplugin/logtalk.vim b/share/vim/vim74/ftplugin/logtalk.vim similarity index 100% rename from share/vim/vim73/ftplugin/logtalk.vim rename to share/vim/vim74/ftplugin/logtalk.vim diff --git a/share/vim/vim73/ftplugin/lprolog.vim b/share/vim/vim74/ftplugin/lprolog.vim similarity index 100% rename from share/vim/vim73/ftplugin/lprolog.vim rename to share/vim/vim74/ftplugin/lprolog.vim diff --git a/share/vim/vim74/ftplugin/lua.vim b/share/vim/vim74/ftplugin/lua.vim new file mode 100644 index 00000000..3454a4d6 --- /dev/null +++ b/share/vim/vim74/ftplugin/lua.vim @@ -0,0 +1,42 @@ +" Vim filetype plugin file. +" Language: Lua 4.0+ +" Maintainer: Max Ischenko +" Last Change: 2012 Mar 07 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +" Set 'formatoptions' to break comment lines but not other lines, and insert +" the comment leader when hitting or using "o". +setlocal fo-=t fo+=croql + +setlocal com=:-- +setlocal cms=--%s +setlocal suffixesadd=.lua + + +" The following lines enable the macros/matchit.vim plugin for +" extended matching with the % key. +if exists("loaded_matchit") + + let b:match_ignorecase = 0 + let b:match_words = + \ '\<\%(do\|function\|if\)\>:' . + \ '\<\%(return\|else\|elseif\)\>:' . + \ '\,' . + \ '\:\' + +endif " exists("loaded_matchit") + +let &cpo = s:cpo_save +unlet s:cpo_save + +let b:undo_ftplugin = "setlocal fo< com< cms< suffixesadd<" diff --git a/share/vim/vim73/ftplugin/m4.vim b/share/vim/vim74/ftplugin/m4.vim similarity index 100% rename from share/vim/vim73/ftplugin/m4.vim rename to share/vim/vim74/ftplugin/m4.vim diff --git a/share/vim/vim74/ftplugin/mail.vim b/share/vim/vim74/ftplugin/mail.vim new file mode 100644 index 00000000..2a6bf4c0 --- /dev/null +++ b/share/vim/vim74/ftplugin/mail.vim @@ -0,0 +1,38 @@ +" Vim filetype plugin file +" Language: Mail +" Maintainer: Bram Moolenaar +" Last Change: 2012 Nov 20 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl modeline< tw< fo< comments<" + +" Don't use modelines in e-mail messages, avoid trojan horses and nasty +" "jokes" (e.g., setting 'textwidth' to 5). +setlocal nomodeline + +" many people recommend keeping e-mail messages 72 chars wide +if &tw == 0 + setlocal tw=72 +endif + +" Set 'formatoptions' to break text lines and keep the comment leader ">". +setlocal fo+=tcql + +" Add n:> to 'comments, in case it was removed elsewhere +setlocal comments+=n:> + +" Add mappings, unless the user doesn't want this. +if !exists("no_plugin_maps") && !exists("no_mail_maps") + " Quote text by inserting "> " + if !hasmapto('MailQuote') + vmap q MailQuote + nmap q MailQuote + endif + vnoremap MailQuote :s/^/> /:noh`` + nnoremap MailQuote :.,$s/^/> /:noh`` +endif diff --git a/share/vim/vim73/ftplugin/mailaliases.vim b/share/vim/vim74/ftplugin/mailaliases.vim similarity index 100% rename from share/vim/vim73/ftplugin/mailaliases.vim rename to share/vim/vim74/ftplugin/mailaliases.vim diff --git a/share/vim/vim73/ftplugin/mailcap.vim b/share/vim/vim74/ftplugin/mailcap.vim similarity index 100% rename from share/vim/vim73/ftplugin/mailcap.vim rename to share/vim/vim74/ftplugin/mailcap.vim diff --git a/share/vim/vim74/ftplugin/make.vim b/share/vim/vim74/ftplugin/make.vim new file mode 100644 index 00000000..fb180c0e --- /dev/null +++ b/share/vim/vim74/ftplugin/make.vim @@ -0,0 +1,33 @@ +" Vim filetype plugin file +" Language: Make +" Maintainer: Bram Moolenaar +" Last Change: 2013 Apr 22 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl et< sts< fo< com< cms< inc<" + +" Make sure a hard tab is used, required for most make programs +setlocal noexpandtab softtabstop=0 + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting or using "o". +setlocal fo-=t fo+=croql + +" Set 'comments' to format dashed lists in comments +setlocal com=sO:#\ -,mO:#\ \ ,b:# + +" Set 'commentstring' to put the marker after a #. +setlocal commentstring=#\ %s + +" Including files. +let &l:include = '^\s*include' + +" For matchit.vim, suggested by Albert Netymk. +if exists("loaded_matchit") + let b:match_words = '\:\:\,\:\' +endif diff --git a/share/vim/vim74/ftplugin/man.vim b/share/vim/vim74/ftplugin/man.vim new file mode 100644 index 00000000..c6e1e9d4 --- /dev/null +++ b/share/vim/vim74/ftplugin/man.vim @@ -0,0 +1,189 @@ +" Vim filetype plugin file +" Language: man +" Maintainer: SungHyun Nam +" Last Change: 2013 Jul 17 + +" To make the ":Man" command available before editing a manual page, source +" this script from your startup vimrc file. + +" If 'filetype' isn't "man", we must have been called to only define ":Man". +if &filetype == "man" + + " Only do this when not done yet for this buffer + if exists("b:did_ftplugin") + finish + endif + let b:did_ftplugin = 1 + + " Ensure Vim is not recursively invoked (man-db does this) + " when doing ctrl-[ on a man page reference. + if exists("$MANPAGER") + let $MANPAGER = "" + endif + + " allow dot and dash in manual page name. + setlocal iskeyword+=\.,- + + " Add mappings, unless the user didn't want this. + if !exists("no_plugin_maps") && !exists("no_man_maps") + if !hasmapto('ManBS') + nmap h ManBS + endif + nnoremap ManBS :%s/.\b//g:setl nomod'' + + nnoremap :call PreGetPage(v:count) + nnoremap :call PopPage() + endif + + let b:undo_ftplugin = "setlocal iskeyword<" + +endif + +if exists(":Man") != 2 + com -nargs=+ Man call s:GetPage() + nmap K :call PreGetPage(0) +endif + +" Define functions only once. +if !exists("s:man_tag_depth") + +let s:man_tag_depth = 0 + +let s:man_sect_arg = "" +let s:man_find_arg = "-w" +try + if !has("win32") && $OSTYPE !~ 'cygwin\|linux' && system('uname -s') =~ "SunOS" && system('uname -r') =~ "^5" + let s:man_sect_arg = "-s" + let s:man_find_arg = "-l" + endif +catch /E145:/ + " Ignore the error in restricted mode +endtry + +func PreGetPage(cnt) + if a:cnt == 0 + let old_isk = &iskeyword + setl iskeyword+=(,) + let str = expand("") + let &l:iskeyword = old_isk + let page = substitute(str, '(*\(\k\+\).*', '\1', '') + let sect = substitute(str, '\(\k\+\)(\([^()]*\)).*', '\2', '') + if match(sect, '^[0-9 ]\+$') == -1 + let sect = "" + endif + if sect == page + let sect = "" + endif + else + let sect = a:cnt + let page = expand("") + endif + call s:GetPage(sect, page) +endfunc + +func GetCmdArg(sect, page) + if a:sect == '' + return a:page + endif + return s:man_sect_arg.' '.a:sect.' '.a:page +endfunc + +func FindPage(sect, page) + let where = system("/usr/bin/man ".s:man_find_arg.' '.s:GetCmdArg(a:sect, a:page)) + if where !~ "^/" + if matchstr(where, " [^ ]*$") !~ "^ /" + return 0 + endif + endif + return 1 +endfunc + +func GetPage(...) + if a:0 >= 2 + let sect = a:1 + let page = a:2 + elseif a:0 >= 1 + let sect = "" + let page = a:1 + else + return + endif + + " To support: nmap K :Man + if page == '' + let page = expand('') + endif + + if sect != "" && s:FindPage(sect, page) == 0 + let sect = "" + endif + if s:FindPage(sect, page) == 0 + echo "\nCannot find a '".page."'." + return + endif + exec "let s:man_tag_buf_".s:man_tag_depth." = ".bufnr("%") + exec "let s:man_tag_lin_".s:man_tag_depth." = ".line(".") + exec "let s:man_tag_col_".s:man_tag_depth." = ".col(".") + let s:man_tag_depth = s:man_tag_depth + 1 + + " Use an existing "man" window if it exists, otherwise open a new one. + if &filetype != "man" + let thiswin = winnr() + exe "norm! \b" + if winnr() > 1 + exe "norm! " . thiswin . "\w" + while 1 + if &filetype == "man" + break + endif + exe "norm! \w" + if thiswin == winnr() + break + endif + endwhile + endif + if &filetype != "man" + new + setl nonu fdc=0 + endif + endif + silent exec "edit $HOME/".page.".".sect."~" + " Avoid warning for editing the dummy file twice + setl buftype=nofile noswapfile + + setl ma nonu nornu nofen + silent exec "norm 1GdG" + let $MANWIDTH = winwidth(0) + silent exec "r!/usr/bin/man ".s:GetCmdArg(sect, page)." | col -b" + " Remove blank lines from top and bottom. + while getline(1) =~ '^\s*$' + silent norm ggdd + endwhile + while getline('$') =~ '^\s*$' + silent norm Gdd + endwhile + 1 + setl ft=man nomod + setl bufhidden=hide + setl nobuflisted +endfunc + +func PopPage() + if s:man_tag_depth > 0 + let s:man_tag_depth = s:man_tag_depth - 1 + exec "let s:man_tag_buf=s:man_tag_buf_".s:man_tag_depth + exec "let s:man_tag_lin=s:man_tag_lin_".s:man_tag_depth + exec "let s:man_tag_col=s:man_tag_col_".s:man_tag_depth + exec s:man_tag_buf."b" + exec s:man_tag_lin + exec "norm ".s:man_tag_col."|" + exec "unlet s:man_tag_buf_".s:man_tag_depth + exec "unlet s:man_tag_lin_".s:man_tag_depth + exec "unlet s:man_tag_col_".s:man_tag_depth + unlet s:man_tag_buf s:man_tag_lin s:man_tag_col + endif +endfunc + +endif + +" vim: set sw=2: diff --git a/share/vim/vim73/ftplugin/manconf.vim b/share/vim/vim74/ftplugin/manconf.vim similarity index 100% rename from share/vim/vim73/ftplugin/manconf.vim rename to share/vim/vim74/ftplugin/manconf.vim diff --git a/share/vim/vim74/ftplugin/markdown.vim b/share/vim/vim74/ftplugin/markdown.vim new file mode 100644 index 00000000..5d6ebecd --- /dev/null +++ b/share/vim/vim74/ftplugin/markdown.vim @@ -0,0 +1,22 @@ +" Vim filetype plugin +" Language: Markdown +" Maintainer: Tim Pope +" Last Change: 2013 May 30 + +if exists("b:did_ftplugin") + finish +endif + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim + +setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s +setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o +setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+ + +if exists('b:undo_ftplugin') + let b:undo_ftplugin .= "|setl cms< com< fo< flp<" +else + let b:undo_ftplugin = "setl cms< com< fo< flp<" +endif + +" vim:set sw=2: diff --git a/share/vim/vim74/ftplugin/matlab.vim b/share/vim/vim74/ftplugin/matlab.vim new file mode 100644 index 00000000..6bfb3d76 --- /dev/null +++ b/share/vim/vim74/ftplugin/matlab.vim @@ -0,0 +1,28 @@ +" Vim filetype plugin file +" Language: matlab +" Maintainer: Jake Wasserman +" Last Changed: 2006 Jan 12 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:save_cpo = &cpo +set cpo-=C + +if exists("loaded_matchit") + let s:conditionalEnd = '\(([^()]*\)\@!\\([^()]*)\)\@!' + let b:match_words = '\\|\\|\\|\:' . + \ s:conditionalEnd . ',\:\:\:' . + \ s:conditionalEnd +endif + +setlocal suffixesadd=.m +setlocal suffixes+=.asv + +let b:undo_ftplugin = "setlocal suffixesadd< suffixes< " + \ . "| unlet! b:match_words" + +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim73/ftplugin/mf.vim b/share/vim/vim74/ftplugin/mf.vim similarity index 100% rename from share/vim/vim73/ftplugin/mf.vim rename to share/vim/vim74/ftplugin/mf.vim diff --git a/share/vim/vim73/ftplugin/modconf.vim b/share/vim/vim74/ftplugin/modconf.vim similarity index 100% rename from share/vim/vim73/ftplugin/modconf.vim rename to share/vim/vim74/ftplugin/modconf.vim diff --git a/share/vim/vim73/ftplugin/mp.vim b/share/vim/vim74/ftplugin/mp.vim similarity index 100% rename from share/vim/vim73/ftplugin/mp.vim rename to share/vim/vim74/ftplugin/mp.vim diff --git a/share/vim/vim73/ftplugin/mplayerconf.vim b/share/vim/vim74/ftplugin/mplayerconf.vim similarity index 100% rename from share/vim/vim73/ftplugin/mplayerconf.vim rename to share/vim/vim74/ftplugin/mplayerconf.vim diff --git a/share/vim/vim73/ftplugin/mrxvtrc.vim b/share/vim/vim74/ftplugin/mrxvtrc.vim similarity index 100% rename from share/vim/vim73/ftplugin/mrxvtrc.vim rename to share/vim/vim74/ftplugin/mrxvtrc.vim diff --git a/share/vim/vim73/ftplugin/msmessages.vim b/share/vim/vim74/ftplugin/msmessages.vim similarity index 100% rename from share/vim/vim73/ftplugin/msmessages.vim rename to share/vim/vim74/ftplugin/msmessages.vim diff --git a/share/vim/vim73/ftplugin/muttrc.vim b/share/vim/vim74/ftplugin/muttrc.vim similarity index 100% rename from share/vim/vim73/ftplugin/muttrc.vim rename to share/vim/vim74/ftplugin/muttrc.vim diff --git a/share/vim/vim73/ftplugin/nanorc.vim b/share/vim/vim74/ftplugin/nanorc.vim similarity index 100% rename from share/vim/vim73/ftplugin/nanorc.vim rename to share/vim/vim74/ftplugin/nanorc.vim diff --git a/share/vim/vim73/ftplugin/netrc.vim b/share/vim/vim74/ftplugin/netrc.vim similarity index 100% rename from share/vim/vim73/ftplugin/netrc.vim rename to share/vim/vim74/ftplugin/netrc.vim diff --git a/share/vim/vim73/ftplugin/nsis.vim b/share/vim/vim74/ftplugin/nsis.vim similarity index 100% rename from share/vim/vim73/ftplugin/nsis.vim rename to share/vim/vim74/ftplugin/nsis.vim diff --git a/share/vim/vim73/ftplugin/objc.vim b/share/vim/vim74/ftplugin/objc.vim similarity index 100% rename from share/vim/vim73/ftplugin/objc.vim rename to share/vim/vim74/ftplugin/objc.vim diff --git a/share/vim/vim74/ftplugin/ocaml.vim b/share/vim/vim74/ftplugin/ocaml.vim new file mode 100644 index 00000000..3ee78490 --- /dev/null +++ b/share/vim/vim74/ftplugin/ocaml.vim @@ -0,0 +1,620 @@ +" Language: OCaml +" Maintainer: David Baelde +" Mike Leary +" Markus Mottl +" Pierre Vittet +" Stefano Zacchiroli +" Vincent Aravantinos +" URL: http://www.ocaml.info/vim/ftplugin/ocaml.vim +" Last Change: +" 2013 Jul 26 - load default compiler settings (MM) +" 2013 Jul 24 - removed superfluous efm-setting (MM) +" 2013 Jul 22 - applied fixes supplied by Hirotaka Hamada (MM) +" 2013 Mar 15 - Improved error format (MM) + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin=1 + +" Use standard compiler settings unless user wants otherwise +if !exists("current_compiler") + :compiler ocaml +endif + +" some macro +if exists('*fnameescape') + function! s:Fnameescape(s) + return fnameescape(a:s) + endfun +else + function! s:Fnameescape(s) + return escape(a:s," \t\n*?[{`$\\%#'\"|!<") + endfun +endif + +" Error handling -- helps moving where the compiler wants you to go +let s:cposet=&cpoptions +set cpo&vim + +" Add mappings, unless the user didn't want this. +if !exists("no_plugin_maps") && !exists("no_ocaml_maps") + " (un)commenting + if !hasmapto('Comment') + nmap c LUncomOn + xmap c BUncomOn + nmap C LUncomOff + xmap C BUncomOff + endif + + nnoremap LUncomOn gI(* *) + nnoremap LUncomOff :s/^(\* \(.*\) \*)/\1/:noh + xnoremap BUncomOn :'<,'>`0i(*`>o0i*)`< + xnoremap BUncomOff :'<,'>`dd`< + + nmap s OCamlSwitchEdit + nmap S OCamlSwitchNewWin + + nmap t OCamlPrintType + xmap t OCamlPrintType +endif + +" Let % jump between structure elements (due to Issac Trotts) +let b:mw = '' +let b:mw = b:mw . ',\:\:\(\\|;;\)' +let b:mw = b:mw . ',\:\:\' +let b:mw = b:mw . ',\<\(for\|while\)\>:\:\,' +let b:mw = b:mw . ',\<\(object\|sig\|struct\|begin\)\>:\' +let b:mw = b:mw . ',\<\(match\|try\)\>:\' +let b:match_words = b:mw + +let b:match_ignorecase=0 + +" switching between interfaces (.mli) and implementations (.ml) +if !exists("g:did_ocaml_switch") + let g:did_ocaml_switch = 1 + nnoremap OCamlSwitchEdit :call OCaml_switch(0) + nnoremap OCamlSwitchNewWin :call OCaml_switch(1) + fun OCaml_switch(newwin) + if (match(bufname(""), "\\.mli$") >= 0) + let fname = s:Fnameescape(substitute(bufname(""), "\\.mli$", ".ml", "")) + if (a:newwin == 1) + exec "new " . fname + else + exec "arge " . fname + endif + elseif (match(bufname(""), "\\.ml$") >= 0) + let fname = s:Fnameescape(bufname("")) . "i" + if (a:newwin == 1) + exec "new " . fname + else + exec "arge " . fname + endif + endif + endfun +endif + +" Folding support + +" Get the modeline because folding depends on indentation +let s:s = line2byte(line('.'))+col('.')-1 +if search('^\s*(\*:o\?caml:') + let s:modeline = getline(".") +else + let s:modeline = "" +endif +if s:s > 0 + exe 'goto' s:s +endif + +" Get the indentation params +let s:m = matchstr(s:modeline,'default\s*=\s*\d\+') +if s:m != "" + let s:idef = matchstr(s:m,'\d\+') +elseif exists("g:omlet_indent") + let s:idef = g:omlet_indent +else + let s:idef = 2 +endif +let s:m = matchstr(s:modeline,'struct\s*=\s*\d\+') +if s:m != "" + let s:i = matchstr(s:m,'\d\+') +elseif exists("g:omlet_indent_struct") + let s:i = g:omlet_indent_struct +else + let s:i = s:idef +endif + +" Set the folding method +if exists("g:ocaml_folding") + setlocal foldmethod=expr + setlocal foldexpr=OMLetFoldLevel(v:lnum) +endif + +let b:undo_ftplugin = "setlocal efm< foldmethod< foldexpr<" + \ . "| unlet! b:mw b:match_words b:match_ignorecase" + + +" - Only definitions below, executed once ------------------------------------- + +if exists("*OMLetFoldLevel") + finish +endif + +function s:topindent(lnum) + let l = a:lnum + while l > 0 + if getline(l) =~ '\s*\%(\\|\\|\\)' + return indent(l) + endif + let l = l-1 + endwhile + return -s:i +endfunction + +function OMLetFoldLevel(l) + + " This is for not merging blank lines around folds to them + if getline(a:l) !~ '\S' + return -1 + endif + + " We start folds for modules, classes, and every toplevel definition + if getline(a:l) =~ '^\s*\%(\\|\\|\\|\\|\\|\\|\\|\\|\\)' + exe 'return ">' (indent(a:l)/s:i)+1 '"' + endif + + " Toplevel let are detected thanks to the indentation + if getline(a:l) =~ '^\s*let\>' && indent(a:l) == s:i+s:topindent(a:l) + exe 'return ">' (indent(a:l)/s:i)+1 '"' + endif + + " We close fold on end which are associated to struct, sig or object. + " We use syntax information to do that. + if getline(a:l) =~ '^\s*end\>' && synIDattr(synID(a:l, indent(a:l)+1, 0), "name") != "ocamlKeyword" + return (indent(a:l)/s:i)+1 + endif + + " Folds end on ;; + if getline(a:l) =~ '^\s*;;' + exe 'return "<' (indent(a:l)/s:i)+1 '"' + endif + + " Comments around folds aren't merged to them. + if synIDattr(synID(a:l, indent(a:l)+1, 0), "name") == "ocamlComment" + return -1 + endif + + return '=' +endfunction + +" Vim support for OCaml .annot files +" +" Last Change: 2007 Jul 17 +" Maintainer: Vincent Aravantinos +" License: public domain +" +" Originally inspired by 'ocaml-dtypes.vim' by Stefano Zacchiroli. +" The source code is quite radically different for we not use python anymore. +" However this plugin should have the exact same behaviour, that's why the +" following lines are the quite exact copy of Stefano's original plugin : +" +" << +" Executing Ocaml_print_type() function will display in the Vim bottom +" line(s) the type of an ocaml value getting it from the corresponding .annot +" file (if any). If Vim is in visual mode, should be "visual" and the +" selected ocaml value correspond to the highlighted text, otherwise ( +" can be anything else) it corresponds to the literal found at the current +" cursor position. +" +" Typing 't' (LocalLeader defaults to '\', see :h LocalLeader) +" will cause " Ocaml_print_type function to be invoked with the right +" argument depending on the current mode (visual or not). +" >> +" +" If you find something not matching this behaviour, please signal it. +" +" Differences are: +" - no need for python support +" + plus : more portable +" + minus: no more lazy parsing, it looks very fast however +" +" - ocamlbuild support, ie. +" + the plugin finds the _build directory and looks for the +" corresponding file inside; +" + if the user decides to change the name of the _build directory thanks +" to the '-build-dir' option of ocamlbuild, the plugin will manage in +" most cases to find it out (most cases = if the source file has a unique +" name among your whole project); +" + if ocamlbuild is not used, the usual behaviour holds; ie. the .annot +" file should be in the same directory as the source file; +" + for vim plugin programmers: +" the variable 'b:_build_dir' contains the inferred path to the build +" directory, even if this one is not named '_build'. +" +" Bonus : +" - latin1 accents are handled +" - lists are handled, even on multiple lines, you don't need the visual mode +" (the cursor must be on the first bracket) +" - parenthesized expressions, arrays, and structures (ie. '(...)', '[|...|]', +" and '{...}') are handled the same way + + " Copied from Stefano's original plugin : + " << + " .annot ocaml file representation + " + " File format (copied verbatim from caml-types.el) + " + " file ::= block * + " block ::= position position annotation * + " position ::= filename num num num + " annotation ::= keyword open-paren data close-paren + " + " is a space character (ASCII 0x20) + " is a line-feed character (ASCII 0x0A) + " num is a sequence of decimal digits + " filename is a string with the lexical conventions of O'Caml + " open-paren is an open parenthesis (ASCII 0x28) + " close-paren is a closed parenthesis (ASCII 0x29) + " data is any sequence of characters where is always followed by + " at least two space characters. + " + " - in each block, the two positions are respectively the start and the + " end of the range described by the block. + " - in a position, the filename is the name of the file, the first num + " is the line number, the second num is the offset of the beginning + " of the line, the third num is the offset of the position itself. + " - the char number within the line is the difference between the third + " and second nums. + " + " For the moment, the only possible keyword is \"type\"." + " >> + + +" 1. Finding the annotation file even if we use ocamlbuild + + " In: two strings representing paths + " Out: one string representing the common prefix between the two paths + function! s:Find_common_path (p1,p2) + let temp = a:p2 + while matchstr(a:p1,temp) == '' + let temp = substitute(temp,'/[^/]*$','','') + endwhile + return temp + endfun + + " After call: + " + " Following information have been put in s:annot_file_list, using + " annot_file_name name as key: + " - annot_file_path : + " path to the .annot file corresponding to the + " source file (dealing with ocamlbuild stuff) + " - _build_path: + " path to the build directory even if this one is + " not named '_build' + " - date_of_last annot: + " Set to 0 until we load the file. It contains the + " date at which the file has been loaded. + function! s:Locate_annotation() + let annot_file_name = s:Fnameescape(expand('%:t:r')).'.annot' + if !exists ("s:annot_file_list[annot_file_name]") + silent exe 'cd' s:Fnameescape(expand('%:p:h')) + " 1st case : the annot file is in the same directory as the buffer (no ocamlbuild) + let annot_file_path = findfile(annot_file_name,'.') + if annot_file_path != '' + let annot_file_path = getcwd().'/'.annot_file_path + let _build_path = '' + else + " 2nd case : the buffer and the _build directory are in the same directory + " .. + " / \ + " / \ + " _build .ml + " + let _build_path = finddir('_build','.') + if _build_path != '' + let _build_path = getcwd().'/'._build_path + let annot_file_path = findfile(annot_file_name,'_build') + if annot_file_path != '' + let annot_file_path = getcwd().'/'.annot_file_path + endif + else + " 3rd case : the _build directory is in a directory higher in the file hierarchy + " (it can't be deeper by ocamlbuild requirements) + " .. + " / \ + " / \ + " _build ... + " \ + " \ + " .ml + " + let _build_path = finddir('_build',';') + if _build_path != '' + let project_path = substitute(_build_path,'/_build$','','') + let path_relative_to_project = s:Fnameescape(substitute(expand('%:p:h'),project_path.'/','','')) + let annot_file_path = findfile(annot_file_name,project_path.'/_build/'.path_relative_to_project) + else + let annot_file_path = findfile(annot_file_name,'**') + "4th case : what if the user decided to change the name of the _build directory ? + " -> we relax the constraints, it should work in most cases + if annot_file_path != '' + " 4a. we suppose the renamed _build directory is in the current directory + let _build_path = matchstr(annot_file_path,'^[^/]*') + if annot_file_path != '' + let annot_file_path = getcwd().'/'.annot_file_path + let _build_path = getcwd().'/'._build_path + endif + else + let annot_file_name = '' + "(Pierre Vittet: I have commented 4b because this was chrashing + "my vim (it produced infinite loop)) + " + " 4b. anarchy : the renamed _build directory may be higher in the hierarchy + " this will work if the file for which we are looking annotations has a unique name in the whole project + " if this is not the case, it may still work, but no warranty here + "let annot_file_path = findfile(annot_file_name,'**;') + "let project_path = s:Find_common_path(annot_file_path,expand('%:p:h')) + "let _build_path = matchstr(annot_file_path,project_path.'/[^/]*') + endif + endif + endif + endif + + if annot_file_path == '' + throw 'E484: no annotation file found' + endif + + silent exe 'cd' '-' + let s:annot_file_list[annot_file_name]= [annot_file_path, _build_path, 0] + endif + endfun + + " This variable contain a dictionnary of list. Each element of the dictionnary + " represent an annotation system. An annotation system is a list with : + " - annotation file name as it's key + " - annotation file path as first element of the contained list + " - build path as second element of the contained list + " - annot_file_last_mod (contain the date of .annot file) as third element + let s:annot_file_list = {} + +" 2. Finding the type information in the annotation file + + " a. The annotation file is opened in vim as a buffer that + " should be (almost) invisible to the user. + + " After call: + " The current buffer is now the one containing the .annot file. + " We manage to keep all this hidden to the user's eye. + function! s:Enter_annotation_buffer(annot_file_path) + let s:current_pos = getpos('.') + let s:current_hidden = &l:hidden + set hidden + let s:current_buf = bufname('%') + if bufloaded(a:annot_file_path) + silent exe 'keepj keepalt' 'buffer' s:Fnameescape(a:annot_file_path) + else + silent exe 'keepj keepalt' 'view' s:Fnameescape(a:annot_file_path) + endif + call setpos(".", [0, 0 , 0 , 0]) + endfun + + " After call: + " The original buffer has been restored in the exact same state as before. + function! s:Exit_annotation_buffer() + silent exe 'keepj keepalt' 'buffer' s:Fnameescape(s:current_buf) + let &l:hidden = s:current_hidden + call setpos('.',s:current_pos) + endfun + + " After call: + " The annot file is loaded and assigned to a buffer. + " This also handles the modification date of the .annot file, eg. after a + " compilation (return an updated annot_file_list). + function! s:Load_annotation(annot_file_name) + let annot = s:annot_file_list[a:annot_file_name] + let annot_file_path = annot[0] + let annot_file_last_mod = 0 + if exists("annot[2]") + let annot_file_last_mod = annot[2] + endif + if bufloaded(annot_file_path) && annot_file_last_mod < getftime(annot_file_path) + " if there is a more recent file + let nr = bufnr(annot_file_path) + silent exe 'keepj keepalt' 'bunload' nr + endif + if !bufloaded(annot_file_path) + call s:Enter_annotation_buffer(annot_file_path) + setlocal nobuflisted + setlocal bufhidden=hide + setlocal noswapfile + setlocal buftype=nowrite + call s:Exit_annotation_buffer() + let annot[2] = getftime(annot_file_path) + " List updated with the new date + let s:annot_file_list[a:annot_file_name] = annot + endif + endfun + + "b. 'search' and 'match' work to find the type information + + "In: - lin1,col1: postion of expression first char + " - lin2,col2: postion of expression last char + "Out: - the pattern to be looked for to find the block + " Must be called in the source buffer (use of line2byte) + function! s:Block_pattern(lin1,lin2,col1,col2) + let start_num1 = a:lin1 + let start_num2 = line2byte(a:lin1) - 1 + let start_num3 = start_num2 + a:col1 + let path = '"\(\\"\|[^"]\)\+"' + let start_pos = path.' '.start_num1.' '.start_num2.' '.start_num3 + let end_num1 = a:lin2 + let end_num2 = line2byte(a:lin2) - 1 + let end_num3 = end_num2 + a:col2 + let end_pos = path.' '.end_num1.' '.end_num2.' '.end_num3 + return '^'.start_pos.' '.end_pos."$" + " rq: the '^' here is not totally correct regarding the annot file "grammar" + " but currently the annotation file respects this, and it's a little bit faster with the '^'; + " can be removed safely. + endfun + + "In: (the cursor position should be at the start of an annotation) + "Out: the type information + " Must be called in the annotation buffer (use of search) + function! s:Match_data() + " rq: idem as previously, in the following, the '^' at start of patterns is not necessary + keepj while search('^type($','ce',line(".")) == 0 + keepj if search('^.\{-}($','e') == 0 + throw "no_annotation" + endif + keepj if searchpair('(','',')') == 0 + throw "malformed_annot_file" + endif + endwhile + let begin = line(".") + 1 + keepj if searchpair('(','',')') == 0 + throw "malformed_annot_file" + endif + let end = line(".") - 1 + return join(getline(begin,end),"\n") + endfun + + "In: the pattern to look for in order to match the block + "Out: the type information (calls s:Match_data) + " Should be called in the annotation buffer + function! s:Extract_type_data(block_pattern, annot_file_name) + let annot_file_path = s:annot_file_list[a:annot_file_name][0] + call s:Enter_annotation_buffer(annot_file_path) + try + if search(a:block_pattern,'e') == 0 + throw "no_annotation" + endif + call cursor(line(".") + 1,1) + let annotation = s:Match_data() + finally + call s:Exit_annotation_buffer() + endtry + return annotation + endfun + + "c. link this stuff with what the user wants + " ie. get the expression selected/under the cursor + + let s:ocaml_word_char = '\w|[À-ÿ]|''' + + "In: the current mode (eg. "visual", "normal", etc.) + "Out: the borders of the expression we are looking for the type + function! s:Match_borders(mode) + if a:mode == "visual" + let cur = getpos(".") + normal `< + let col1 = col(".") + let lin1 = line(".") + normal `> + let col2 = col(".") + let lin2 = line(".") + call cursor(cur[1],cur[2]) + return [lin1,lin2,col1-1,col2] + else + let cursor_line = line(".") + let cursor_col = col(".") + let line = getline('.') + if line[cursor_col-1:cursor_col] == '[|' + let [lin2,col2] = searchpairpos('\[|','','|\]','n') + return [cursor_line,lin2,cursor_col-1,col2+1] + elseif line[cursor_col-1] == '[' + let [lin2,col2] = searchpairpos('\[','','\]','n') + return [cursor_line,lin2,cursor_col-1,col2] + elseif line[cursor_col-1] == '(' + let [lin2,col2] = searchpairpos('(','',')','n') + return [cursor_line,lin2,cursor_col-1,col2] + elseif line[cursor_col-1] == '{' + let [lin2,col2] = searchpairpos('{','','}','n') + return [cursor_line,lin2,cursor_col-1,col2] + else + let [lin1,col1] = searchpos('\v%('.s:ocaml_word_char.'|\.)*','ncb') + let [lin2,col2] = searchpos('\v%('.s:ocaml_word_char.'|\.)*','nce') + if col1 == 0 || col2 == 0 + throw "no_expression" + endif + return [cursor_line,cursor_line,col1-1,col2] + endif + endif + endfun + + "In: the current mode (eg. "visual", "normal", etc.) + "Out: the type information (calls s:Extract_type_data) + function! s:Get_type(mode, annot_file_name) + let [lin1,lin2,col1,col2] = s:Match_borders(a:mode) + return s:Extract_type_data(s:Block_pattern(lin1,lin2,col1,col2), a:annot_file_name) + endfun + + "In: A string destined to be printed in the 'echo buffer'. It has line + "break and 2 space at each line beginning. + "Out: A string destined to be yanked, without space and double space. + function s:unformat_ocaml_type(res) + "Remove end of line. + let res = substitute (a:res, "\n", "", "g" ) + "remove double space + let res =substitute(res , " ", " ", "g") + "remove space at begining of string. + let res = substitute(res, "^ *", "", "g") + return res + endfunction + + "d. main + "In: the current mode (eg. "visual", "normal", etc.) + "After call: the type information is displayed + if !exists("*Ocaml_get_type") + function Ocaml_get_type(mode) + let annot_file_name = s:Fnameescape(expand('%:t:r')).'.annot' + call s:Locate_annotation() + call s:Load_annotation(annot_file_name) + let res = s:Get_type(a:mode, annot_file_name) + " Copy result in the unnamed buffer + let @" = s:unformat_ocaml_type(res) + return res + endfun + endif + + if !exists("*Ocaml_get_type_or_not") + function Ocaml_get_type_or_not(mode) + let t=reltime() + try + let res = Ocaml_get_type(a:mode) + return res + catch + return "" + endtry + endfun + endif + + if !exists("*Ocaml_print_type") + function Ocaml_print_type(mode) + if expand("%:e") == "mli" + echohl ErrorMsg | echo "No annotations for interface (.mli) files" | echohl None + return + endif + try + echo Ocaml_get_type(a:mode) + catch /E484:/ + echohl ErrorMsg | echo "No type annotations (.annot) file found" | echohl None + catch /no_expression/ + echohl ErrorMsg | echo "No expression found under the cursor" | echohl None + catch /no_annotation/ + echohl ErrorMsg | echo "No type annotation found for the given text" | echohl None + catch /malformed_annot_file/ + echohl ErrorMsg | echo "Malformed .annot file" | echohl None + endtry + endfun + endif + +" Maps + nnoremap OCamlPrintType :call Ocaml_print_type("normal") + xnoremap OCamlPrintType :call Ocaml_print_type("visual")`< + +let &cpoptions=s:cposet +unlet s:cposet + +" vim:sw=2 fdm=indent diff --git a/share/vim/vim74/ftplugin/occam.vim b/share/vim/vim74/ftplugin/occam.vim new file mode 100644 index 00000000..e9b7c014 --- /dev/null +++ b/share/vim/vim74/ftplugin/occam.vim @@ -0,0 +1,49 @@ +" Vim filetype plugin file +" Language: occam +" Copyright: Christian Jacobsen , Mario Schweigler +" Maintainer: Mario Schweigler +" Last Change: 23 April 2003 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 +let s:keepcpo= &cpo +set cpo&vim + +"{{{ Indent settings +" Set shift width for indent +setlocal shiftwidth=2 +" Set the tab key size to two spaces +setlocal softtabstop=2 +" Let tab keys always be expanded to spaces +setlocal expandtab +"}}} + +"{{{ Formatting +" Break comment lines and insert comment leader in this case +setlocal formatoptions-=t formatoptions+=cql +setlocal comments+=:-- +" Maximum length of comments is 78 +setlocal textwidth=78 +"}}} + +"{{{ File browsing filters +" Win32 can filter files in the browse dialog +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "All Occam Files (*.occ *.inc)\t*.occ;*.inc\n" . + \ "Occam Include Files (*.inc)\t*.inc\n" . + \ "Occam Source Files (*.occ)\t*.occ\n" . + \ "All Files (*.*)\t*.*\n" +endif +"}}} + +"{{{ Undo settings +let b:undo_ftplugin = "setlocal shiftwidth< softtabstop< expandtab<" + \ . " formatoptions< comments< textwidth<" + \ . "| unlet! b:browsefiler" +"}}} + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/ftplugin/pamconf.vim b/share/vim/vim74/ftplugin/pamconf.vim similarity index 100% rename from share/vim/vim73/ftplugin/pamconf.vim rename to share/vim/vim74/ftplugin/pamconf.vim diff --git a/share/vim/vim74/ftplugin/pascal.vim b/share/vim/vim74/ftplugin/pascal.vim new file mode 100644 index 00000000..5ff18b96 --- /dev/null +++ b/share/vim/vim74/ftplugin/pascal.vim @@ -0,0 +1,20 @@ +" Vim filetype plugin file +" Language: pascal +" Maintainer: Dan Sharp +" Last Changed: 11 Apr 2011 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +if exists("loaded_matchit") + let b:match_ignorecase = 1 " (pascal is case-insensitive) + + let b:match_words = '\<\%(begin\|case\|record\|object\|try\)\>' + let b:match_words .= ':\<^\s*\%(except\|finally\)\>:\' + let b:match_words .= ',\:\' + let b:match_words .= ',\:\' +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:match_words" diff --git a/share/vim/vim73/ftplugin/passwd.vim b/share/vim/vim74/ftplugin/passwd.vim similarity index 100% rename from share/vim/vim73/ftplugin/passwd.vim rename to share/vim/vim74/ftplugin/passwd.vim diff --git a/share/vim/vim73/ftplugin/pdf.vim b/share/vim/vim74/ftplugin/pdf.vim similarity index 100% rename from share/vim/vim73/ftplugin/pdf.vim rename to share/vim/vim74/ftplugin/pdf.vim diff --git a/share/vim/vim74/ftplugin/perl.vim b/share/vim/vim74/ftplugin/perl.vim new file mode 100644 index 00000000..741cfae0 --- /dev/null +++ b/share/vim/vim74/ftplugin/perl.vim @@ -0,0 +1,88 @@ +" Vim filetype plugin file +" Language: Perl +" Maintainer: vim-perl +" Homepage: http://github.com/vim-perl/vim-perl +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change: 2013-07-21 + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal formatoptions-=t +setlocal formatoptions+=crqol +setlocal keywordprg=perldoc\ -f + +setlocal comments=:# +setlocal commentstring=#%s + +" Change the browse dialog on Win32 to show mainly Perl-related files +if has("gui_win32") + let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" . + \ "Perl Modules (*.pm)\t*.pm\n" . + \ "Perl Documentation Files (*.pod)\t*.pod\n" . + \ "All Files (*.*)\t*.*\n" +endif + +" Provided by Ned Konz +"--------------------------------------------- +setlocal include=\\<\\(use\\\|require\\)\\> +setlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\*','',''),'$','.pm','') +setlocal define=[^A-Za-z_] + +" The following line changes a global variable but is necessary to make +" gf and similar commands work. The change to iskeyword was incorrect. +" Thanks to Andrew Pimlott for pointing out the problem. If this causes a +" problem for you, add an after/ftplugin/perl.vim file that contains +" set isfname-=: +set isfname+=: +set iskeyword+=: + +" Set this once, globally. +if !exists("perlpath") + if executable("perl") + try + if &shellxquote != '"' + let perlpath = system('perl -e "print join(q/,/,@INC)"') + else + let perlpath = system("perl -e 'print join(q/,/,@INC)'") + endif + let perlpath = substitute(perlpath,',.$',',,','') + catch /E145:/ + let perlpath = ".,," + endtry + else + " If we can't call perl to get its path, just default to using the + " current directory and the directory of the current file. + let perlpath = ".,," + endif +endif + +" Append perlpath to the existing path value, if it is set. Since we don't +" use += to do it because of the commas in perlpath, we have to handle the +" global / local settings, too. +if &l:path == "" + if &g:path == "" + let &l:path=perlpath + else + let &l:path=&g:path.",".perlpath + endif +else + let &l:path=&l:path.",".perlpath +endif +"--------------------------------------------- + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< kp< path<" . + \ " | unlet! b:browsefilter" + +" proper matching for matchit plugin +let b:match_skip = 's:comment\|string\|perlQQ\|perlShellCommand\|perlHereDoc\|perlSubstitution\|perlTranslation\|perlMatch\|perlFormatField' + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim74/ftplugin/perl6.vim b/share/vim/vim74/ftplugin/perl6.vim new file mode 100644 index 00000000..5318df63 --- /dev/null +++ b/share/vim/vim74/ftplugin/perl6.vim @@ -0,0 +1,77 @@ +" Vim filetype plugin file +" Language: Perl 6 +" Maintainer: vim-perl +" Homepage: http://github.com/vim-perl/vim-perl +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change: 2013-07-21 +" Contributors: Hinrik Örn Sigurðsson +" +" Based on ftplugin/perl.vim by Dan Sharp + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal formatoptions-=t +setlocal formatoptions+=crqol +setlocal keywordprg=p6doc + +setlocal comments=:# +setlocal commentstring=#%s + +" Change the browse dialog on Win32 to show mainly Perl-related files +if has("gui_win32") + let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" . + \ "Perl Modules (*.pm)\t*.pm\n" . + \ "Perl Documentation Files (*.pod)\t*.pod\n" . + \ "All Files (*.*)\t*.*\n" +endif + +" Provided by Ned Konz +"--------------------------------------------- +setlocal include=\\<\\(use\\\|require\\)\\> +setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','') +setlocal define=[^A-Za-z_] + +" The following line changes a global variable but is necessary to make +" gf and similar commands work. Thanks to Andrew Pimlott for pointing out +" the problem. If this causes a " problem for you, add an +" after/ftplugin/perl6.vim file that contains +" set isfname-=: +set isfname+=: +setlocal iskeyword=48-57,_,A-Z,a-z,:,- + +" Set this once, globally. +if !exists("perlpath") + if executable("perl6") + try + if &shellxquote != '"' + let perlpath = system('perl6 -e "@*INC.join(q/,/).say"') + else + let perlpath = system("perl6 -e '@*INC.join(q/,/).say'") + endif + let perlpath = substitute(perlpath,',.$',',,','') + catch /E145:/ + let perlpath = ".,," + endtry + else + " If we can't call perl to get its path, just default to using the + " current directory and the directory of the current file. + let perlpath = ".,," + endif +endif + +let &l:path=perlpath +"--------------------------------------------- + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk<" . + \ " | unlet! b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim74/ftplugin/php.vim b/share/vim/vim74/ftplugin/php.vim new file mode 100644 index 00000000..a2f8b4d8 --- /dev/null +++ b/share/vim/vim74/ftplugin/php.vim @@ -0,0 +1,83 @@ +" Vim filetype plugin file +" Language: php +" Maintainer: Dan Sharp +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:keepcpo= &cpo +set cpo&vim + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "HTML Files (*.html, *.htm)\t*.html;*.htm\n" . + \ "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") + let s:browsefilter = b:browsefilter +endif +if exists("b:match_words") + let s:match_words = b:match_words +endif +if exists("b:match_skip") + unlet b:match_skip +endif + +" Change the :browse e filter to primarily show PHP-related files. +if has("gui_win32") + let b:browsefilter="PHP Files (*.php)\t*.php\n" . s:browsefilter +endif + +" ### +" Provided by Mikolaj Machowski +setlocal include=\\\(require\\\|include\\\)\\\(_once\\\)\\\? +" Disabled changing 'iskeyword', it breaks a command such as "*" +" setlocal iskeyword+=$ + +if exists("loaded_matchit") + let b:match_words = ',\:\,' . + \ '\:\:\:\,' . + \ '\:\,' . + \ '\:\,' . + \ '\:\,' . + \ '\:\,' . + \ '(:),[:],{:},' . + \ s:match_words +endif +" ### + +if exists('&omnifunc') + setlocal omnifunc=phpcomplete#CompletePHP +endif + +" Section jumping: [[ and ]] provided by Antony Scriven +let s:function = '\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function' +let s:class = '\(abstract\s\+\|final\s\+\)*class' +let s:interface = 'interface' +let s:section = '\(.*\%#\)\@!\_^\s*\zs\('.s:function.'\|'.s:class.'\|'.s:interface.'\)' +exe 'nno [[ ?' . escape(s:section, '|') . '?:nohls' +exe 'nno ]] /' . escape(s:section, '|') . '/:nohls' +exe 'ono [[ ?' . escape(s:section, '|') . '?:nohls' +exe 'ono ]] /' . escape(s:section, '|') . '/:nohls' + +setlocal commentstring=/*%s*/ + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal commentstring< include< omnifunc<" . + \ " | unlet! b:browsefilter b:match_words | " . + \ s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/ftplugin/pinfo.vim b/share/vim/vim74/ftplugin/pinfo.vim similarity index 100% rename from share/vim/vim73/ftplugin/pinfo.vim rename to share/vim/vim74/ftplugin/pinfo.vim diff --git a/share/vim/vim74/ftplugin/plaintex.vim b/share/vim/vim74/ftplugin/plaintex.vim new file mode 100644 index 00000000..9e0e4026 --- /dev/null +++ b/share/vim/vim74/ftplugin/plaintex.vim @@ -0,0 +1,37 @@ +" plain TeX filetype plugin +" Language: plain TeX (ft=plaintex) +" Maintainer: Benji Fisher, Ph.D. +" Version: 1.1 +" Last Change: Wed 19 Apr 2006 + +" Only do this when not done yet for this buffer. +if exists("b:did_ftplugin") + finish +endif + +" Start with initex. This will also define b:did_ftplugin and b:undo_ftplugin . +source $VIMRUNTIME/ftplugin/initex.vim + +" Avoid problems if running in 'compatible' mode. +let s:save_cpo = &cpo +set cpo&vim + +let b:undo_ftplugin .= "| unlet! b:match_ignorecase b:match_skip b:match_words" + +" Allow "[d" to be used to find a macro definition: +let &l:define .= '\|\\new\(count\|dimen\|skip\|muskip\|box\|toks\|read\|write' + \ . '\|fam\|insert\)' + +" The following lines enable the macros/matchit.vim plugin for +" extended matching with the % key. +" There is no default meaning for \(...\) etc., but many users define one. +if exists("loaded_matchit") + let b:match_ignorecase = 0 + \ | let b:match_skip = 'r:\\\@ +" Last Change: 24th April 2012 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +" PS comment formatting +setlocal comments=b:% +setlocal formatoptions-=t formatoptions+=rol + +" Define patterns for the matchit macro +if !exists("b:match_words") + let b:match_ignorecase = 0 + let b:match_words = '<<:>>,\:\,\:\,\:\' +endif + +" Define patterns for the browse file filter +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "PostScript Files (*.ps)\t*.ps\n" . + \ "EPS Files (*.eps)\t*.eps\n" . + \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setlocal comments< formatoptions<" + \ . "| unlet! b:browsefiler b:match_ignorecase b:match_words" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/ftplugin/procmail.vim b/share/vim/vim74/ftplugin/procmail.vim similarity index 100% rename from share/vim/vim73/ftplugin/procmail.vim rename to share/vim/vim74/ftplugin/procmail.vim diff --git a/share/vim/vim73/ftplugin/prolog.vim b/share/vim/vim74/ftplugin/prolog.vim similarity index 100% rename from share/vim/vim73/ftplugin/prolog.vim rename to share/vim/vim74/ftplugin/prolog.vim diff --git a/share/vim/vim73/ftplugin/protocols.vim b/share/vim/vim74/ftplugin/protocols.vim similarity index 100% rename from share/vim/vim73/ftplugin/protocols.vim rename to share/vim/vim74/ftplugin/protocols.vim diff --git a/share/vim/vim74/ftplugin/pyrex.vim b/share/vim/vim74/ftplugin/pyrex.vim new file mode 100644 index 00000000..251da39d --- /dev/null +++ b/share/vim/vim74/ftplugin/pyrex.vim @@ -0,0 +1,27 @@ +" Vim filetype plugin file +" Language: Pyrex +" Maintainer: Marco Barisione +" URL: http://marcobari.altervista.org/pyrex_vim.html +" Last Change: 2012 May 18 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" Behaves just like Python +runtime! ftplugin/python.vim ftplugin/python_*.vim ftplugin/python/*.vim + +if has("gui_win32") && exists("b:browsefilter") + let b:browsefilter = "Pyrex files (*.pyx,*.pxd)\t*.pyx;*.pxd\n" . + \ "Python Files (*.py)\t*.py\n" . + \ "C Source Files (*.c)\t*.c\n" . + \ "C Header Files (*.h)\t*.h\n" . + \ "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" . + \ "All Files (*.*)\t*.*\n" +endif + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/ftplugin/python.vim b/share/vim/vim74/ftplugin/python.vim new file mode 100644 index 00000000..2b091a17 --- /dev/null +++ b/share/vim/vim74/ftplugin/python.vim @@ -0,0 +1,48 @@ +" Vim filetype plugin file +" Language: python +" Maintainer: Johannes Zellner +" Last Change: Wed, 21 Apr 2004 13:13:08 CEST + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 +let s:keepcpo= &cpo +set cpo&vim + +setlocal cinkeys-=0# +setlocal indentkeys-=0# +setlocal include=\s*\\(from\\\|import\\) +setlocal includeexpr=substitute(v:fname,'\\.','/','g') +setlocal suffixesadd=.py +setlocal comments-=:% +setlocal commentstring=#%s + +setlocal omnifunc=pythoncomplete#Complete + +set wildignore+=*.pyc + +nnoremap ]] :call Python_jump('/^\(class\\|def\)') +nnoremap [[ :call Python_jump('?^\(class\\|def\)') +nnoremap ]m :call Python_jump('/^\s*\(class\\|def\)') +nnoremap [m :call Python_jump('?^\s*\(class\\|def\)') + +if exists('*Python_jump') | finish | endif + +fun! Python_jump(motion) range + let cnt = v:count1 + let save = @/ " save last search pattern + mark ' + while cnt > 0 + silent! exe a:motion + let cnt = cnt - 1 + endwhile + call histdel('/', -1) + let @/ = save " restore last search pattern +endfun + +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "Python Files (*.py)\t*.py\n" . + \ "All Files (*.*)\t*.*\n" +endif + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/ftplugin/qf.vim b/share/vim/vim74/ftplugin/qf.vim new file mode 100644 index 00000000..98c8f932 --- /dev/null +++ b/share/vim/vim74/ftplugin/qf.vim @@ -0,0 +1,16 @@ +" Vim filetype plugin file +" Language: Vim's quickfix window +" Maintainer: Lech Lorens +" Last Changed: 30 Apr 2012 + +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "set stl<" + +" Display the command that produced the list in the quickfix window: +setlocal stl=%t%{exists('w:quickfix_title')?\ '\ '.w:quickfix_title\ :\ ''}\ %=%-15(%l,%c%V%)\ %P diff --git a/share/vim/vim73/ftplugin/quake.vim b/share/vim/vim74/ftplugin/quake.vim similarity index 100% rename from share/vim/vim73/ftplugin/quake.vim rename to share/vim/vim74/ftplugin/quake.vim diff --git a/share/vim/vim73/ftplugin/racc.vim b/share/vim/vim74/ftplugin/racc.vim similarity index 100% rename from share/vim/vim73/ftplugin/racc.vim rename to share/vim/vim74/ftplugin/racc.vim diff --git a/share/vim/vim73/ftplugin/readline.vim b/share/vim/vim74/ftplugin/readline.vim similarity index 100% rename from share/vim/vim73/ftplugin/readline.vim rename to share/vim/vim74/ftplugin/readline.vim diff --git a/share/vim/vim73/ftplugin/reva.vim b/share/vim/vim74/ftplugin/reva.vim similarity index 100% rename from share/vim/vim73/ftplugin/reva.vim rename to share/vim/vim74/ftplugin/reva.vim diff --git a/share/vim/vim73/ftplugin/rnc.vim b/share/vim/vim74/ftplugin/rnc.vim similarity index 100% rename from share/vim/vim73/ftplugin/rnc.vim rename to share/vim/vim74/ftplugin/rnc.vim diff --git a/share/vim/vim74/ftplugin/rpl.vim b/share/vim/vim74/ftplugin/rpl.vim new file mode 100644 index 00000000..909e141c --- /dev/null +++ b/share/vim/vim74/ftplugin/rpl.vim @@ -0,0 +1,22 @@ +" Vim filetype plugin file +" Language: RPL/2 +" Maintainer: Joël BERTRAND +" Last Change: 2012 Mar 07 +" Version: 0.1 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting or using "o". +setlocal fo-=t fo+=croql + +" Set 'comments' to format dashed lists in comments. +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// + +let b:undo_ftplugin = "setlocal fo< comments<" diff --git a/share/vim/vim73/ftplugin/rst.vim b/share/vim/vim74/ftplugin/rst.vim similarity index 100% rename from share/vim/vim73/ftplugin/rst.vim rename to share/vim/vim74/ftplugin/rst.vim diff --git a/share/vim/vim74/ftplugin/ruby.vim b/share/vim/vim74/ftplugin/ruby.vim new file mode 100644 index 00000000..9630a940 --- /dev/null +++ b/share/vim/vim74/ftplugin/ruby.vim @@ -0,0 +1,395 @@ +" Vim filetype plugin +" Language: Ruby +" Maintainer: Tim Pope +" URL: https://github.com/vim-ruby/vim-ruby +" Release Coordinator: Doug Kearns +" ---------------------------------------------------------------------------- + +if (exists("b:did_ftplugin")) + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +if has("gui_running") && !has("gui_win32") + setlocal keywordprg=ri\ -T\ -f\ bs +else + setlocal keywordprg=ri +endif + +" Matchit support +if exists("loaded_matchit") && !exists("b:match_words") + let b:match_ignorecase = 0 + + let b:match_words = + \ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|def\|begin\)\>=\@!' . + \ ':' . + \ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' . + \ ':' . + \ '\' . + \ ',{:},\[:\],(:)' + + let b:match_skip = + \ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" . + \ "\\'" +endif + +setlocal formatoptions-=t formatoptions+=croql + +setlocal include=^\\s*\\<\\(load\\>\\\|require\\>\\\|autoload\\s*:\\=[\"']\\=\\h\\w*[\"']\\=,\\) +setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','') +setlocal suffixesadd=.rb + +if exists("&ofu") && has("ruby") + setlocal omnifunc=rubycomplete#Complete +endif + +" To activate, :set ballooneval +if has('balloon_eval') && exists('+balloonexpr') + setlocal balloonexpr=RubyBalloonexpr() +endif + + +" TODO: +"setlocal define=^\\s*def + +setlocal comments=:# +setlocal commentstring=#\ %s + +if !exists('g:ruby_version_paths') + let g:ruby_version_paths = {} +endif + +function! s:query_path(root) + let code = "print $:.join %q{,}" + if &shell =~# 'sh' && $PATH !~# '\s' + let prefix = 'env PATH='.$PATH.' ' + else + let prefix = '' + endif + if &shellxquote == "'" + let path_check = prefix.'ruby -e "' . code . '"' + else + let path_check = prefix."ruby -e '" . code . "'" + endif + + let cd = haslocaldir() ? 'lcd' : 'cd' + let cwd = getcwd() + try + exe cd fnameescape(a:root) + let path = split(system(path_check),',') + exe cd fnameescape(cwd) + return path + finally + exe cd fnameescape(cwd) + endtry +endfunction + +function! s:build_path(path) + let path = join(map(copy(a:path), 'v:val ==# "." ? "" : v:val'), ',') + if &g:path !~# '\v^\.%(,/%(usr|emx)/include)=,,$' + let path = substitute(&g:path,',,$',',','') . ',' . path + endif + return path +endfunction + +if !exists('b:ruby_version') && !exists('g:ruby_path') && isdirectory(expand('%:p:h')) + let s:version_file = findfile('.ruby-version', '.;') + if !empty(s:version_file) + let b:ruby_version = get(readfile(s:version_file, '', 1), '') + if !has_key(g:ruby_version_paths, b:ruby_version) + let g:ruby_version_paths[b:ruby_version] = s:query_path(fnamemodify(s:version_file, ':p:h')) + endif + endif +endif + +if exists("g:ruby_path") + let s:ruby_path = type(g:ruby_path) == type([]) ? join(g:ruby_path, ',') : g:ruby_path +elseif has_key(g:ruby_version_paths, get(b:, 'ruby_version', '')) + let s:ruby_paths = g:ruby_version_paths[b:ruby_version] + let s:ruby_path = s:build_path(s:ruby_paths) +else + if !exists('g:ruby_default_path') + if has("ruby") && has("win32") + ruby ::VIM::command( 'let g:ruby_default_path = split("%s",",")' % $:.join(%q{,}) ) + elseif executable('ruby') + let g:ruby_default_path = s:query_path($HOME) + else + let g:ruby_default_path = map(split($RUBYLIB,':'), 'v:val ==# "." ? "" : v:val') + endif + endif + let s:ruby_paths = g:ruby_default_path + let s:ruby_path = s:build_path(s:ruby_paths) +endif + +if stridx(&l:path, s:ruby_path) == -1 + let &l:path = s:ruby_path +endif +if exists('s:ruby_paths') && stridx(&l:tags, join(map(copy(s:ruby_paths),'v:val."/tags"'),',')) == -1 + let &l:tags = &tags . ',' . join(map(copy(s:ruby_paths),'v:val."/tags"'),',') +endif + +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "Ruby Source Files (*.rb)\t*.rb\n" . + \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< tags< kp<" + \."| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip" + \."| if exists('&ofu') && has('ruby') | setl ofu< | endif" + \."| if has('balloon_eval') && exists('+bexpr') | setl bexpr< | endif" + +if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps") + nnoremap [m :call searchsyn('\','rubyDefine','b','n') + nnoremap ]m :call searchsyn('\','rubyDefine','','n') + nnoremap [M :call searchsyn('\','rubyDefine','b','n') + nnoremap ]M :call searchsyn('\','rubyDefine','','n') + xnoremap [m :call searchsyn('\','rubyDefine','b','v') + xnoremap ]m :call searchsyn('\','rubyDefine','','v') + xnoremap [M :call searchsyn('\','rubyDefine','b','v') + xnoremap ]M :call searchsyn('\','rubyDefine','','v') + + nnoremap [[ :call searchsyn('\<\%(class\module\)\>','rubyModule\rubyClass','b','n') + nnoremap ]] :call searchsyn('\<\%(class\module\)\>','rubyModule\rubyClass','','n') + nnoremap [] :call searchsyn('\','rubyModule\rubyClass','b','n') + nnoremap ][ :call searchsyn('\','rubyModule\rubyClass','','n') + xnoremap [[ :call searchsyn('\<\%(class\module\)\>','rubyModule\rubyClass','b','v') + xnoremap ]] :call searchsyn('\<\%(class\module\)\>','rubyModule\rubyClass','','v') + xnoremap [] :call searchsyn('\','rubyModule\rubyClass','b','v') + xnoremap ][ :call searchsyn('\','rubyModule\rubyClass','','v') + + let b:undo_ftplugin = b:undo_ftplugin + \."| sil! exe 'unmap [[' | sil! exe 'unmap ]]' | sil! exe 'unmap []' | sil! exe 'unmap ]['" + \."| sil! exe 'unmap [m' | sil! exe 'unmap ]m' | sil! exe 'unmap [M' | sil! exe 'unmap ]M'" + + if maparg('im','n') == '' + onoremap im :call wrap_i('[m',']M') + onoremap am :call wrap_a('[m',']M') + xnoremap im :call wrap_i('[m',']M') + xnoremap am :call wrap_a('[m',']M') + let b:undo_ftplugin = b:undo_ftplugin + \."| sil! exe 'ounmap im' | sil! exe 'ounmap am'" + \."| sil! exe 'xunmap im' | sil! exe 'xunmap am'" + endif + + if maparg('iM','n') == '' + onoremap iM :call wrap_i('[[','][') + onoremap aM :call wrap_a('[[','][') + xnoremap iM :call wrap_i('[[','][') + xnoremap aM :call wrap_a('[[','][') + let b:undo_ftplugin = b:undo_ftplugin + \."| sil! exe 'ounmap iM' | sil! exe 'ounmap aM'" + \."| sil! exe 'xunmap iM' | sil! exe 'xunmap aM'" + endif + + if maparg("\",'n') == '' + nnoremap :exe v:count1."tag =RubyCursorIdentifier()" + nnoremap g :exe "tjump =RubyCursorIdentifier()" + nnoremap g] :exe "tselect =RubyCursorIdentifier()" + nnoremap ] :exe v:count1."stag =RubyCursorIdentifier()" + nnoremap :exe v:count1."stag =RubyCursorIdentifier()" + nnoremap g :exe "stjump =RubyCursorIdentifier()" + nnoremap g] :exe "stselect =RubyCursorIdentifier()" + nnoremap } :exe "ptag =RubyCursorIdentifier()" + nnoremap g} :exe "ptjump =RubyCursorIdentifier()" + let b:undo_ftplugin = b:undo_ftplugin + \."| sil! exe 'nunmap '| sil! exe 'nunmap g'| sil! exe 'nunmap g]'" + \."| sil! exe 'nunmap ]'| sil! exe 'nunmap '" + \."| sil! exe 'nunmap g'| sil! exe 'nunmap g]'" + \."| sil! exe 'nunmap }'| sil! exe 'nunmap g}'" + endif + + if maparg("gf",'n') == '' + " By using findfile() rather than gf's normal behavior, we prevent + " erroneously editing a directory. + nnoremap gf :exe gf(v:count1,"gf",'edit') + nnoremap f :exe gf(v:count1,"\C-W>f",'split') + nnoremap :exe gf(v:count1,"\C-W>\C-F>",'split') + nnoremap gf :exe gf(v:count1,"\C-W>gf",'tabedit') + let b:undo_ftplugin = b:undo_ftplugin + \."| sil! exe 'nunmap gf' | sil! exe 'nunmap f' | sil! exe 'nunmap ' | sil! exe 'nunmap gf'" + endif +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +if exists("g:did_ruby_ftplugin_functions") + finish +endif +let g:did_ruby_ftplugin_functions = 1 + +function! RubyBalloonexpr() + if !exists('s:ri_found') + let s:ri_found = executable('ri') + endif + if s:ri_found + let line = getline(v:beval_lnum) + let b = matchstr(strpart(line,0,v:beval_col),'\%(\w\|[:.]\)*$') + let a = substitute(matchstr(strpart(line,v:beval_col),'^\w*\%([?!]\|\s*=\)\?'),'\s\+','','g') + let str = b.a + let before = strpart(line,0,v:beval_col-strlen(b)) + let after = strpart(line,v:beval_col+strlen(a)) + if str =~ '^\.' + let str = substitute(str,'^\.','#','g') + if before =~ '\]\s*$' + let str = 'Array'.str + elseif before =~ '}\s*$' + " False positives from blocks here + let str = 'Hash'.str + elseif before =~ "[\"'`]\\s*$" || before =~ '\$\d\+\s*$' + let str = 'String'.str + elseif before =~ '\$\d\+\.\d\+\s*$' + let str = 'Float'.str + elseif before =~ '\$\d\+\s*$' + let str = 'Integer'.str + elseif before =~ '/\s*$' + let str = 'Regexp'.str + else + let str = substitute(str,'^#','.','') + endif + endif + let str = substitute(str,'.*\.\s*to_f\s*\.\s*','Float#','') + let str = substitute(str,'.*\.\s*to_i\%(nt\)\=\s*\.\s*','Integer#','') + let str = substitute(str,'.*\.\s*to_s\%(tr\)\=\s*\.\s*','String#','') + let str = substitute(str,'.*\.\s*to_sym\s*\.\s*','Symbol#','') + let str = substitute(str,'.*\.\s*to_a\%(ry\)\=\s*\.\s*','Array#','') + let str = substitute(str,'.*\.\s*to_proc\s*\.\s*','Proc#','') + if str !~ '^\w' + return '' + endif + silent! let res = substitute(system("ri -f rdoc -T \"".str.'"'),'\n$','','') + if res =~ '^Nothing known about' || res =~ '^Bad argument:' || res =~ '^More than one method' + return '' + endif + return res + else + return "" + endif +endfunction + +function! s:searchsyn(pattern,syn,flags,mode) + norm! m' + if a:mode ==# 'v' + norm! gv + endif + let i = 0 + let cnt = v:count ? v:count : 1 + while i < cnt + let i = i + 1 + let line = line('.') + let col = col('.') + let pos = search(a:pattern,'W'.a:flags) + while pos != 0 && s:synname() !~# a:syn + let pos = search(a:pattern,'W'.a:flags) + endwhile + if pos == 0 + call cursor(line,col) + return + endif + endwhile +endfunction + +function! s:synname() + return synIDattr(synID(line('.'),col('.'),0),'name') +endfunction + +function! s:wrap_i(back,forward) + execute 'norm k'.a:forward + let line = line('.') + execute 'norm '.a:back + if line('.') == line - 1 + return s:wrap_a(a:back,a:forward) + endif + execute 'norm jV'.a:forward.'k' +endfunction + +function! s:wrap_a(back,forward) + execute 'norm '.a:forward + if line('.') < line('$') && getline(line('.')+1) ==# '' + let after = 1 + endif + execute 'norm '.a:back + while getline(line('.')-1) =~# '^\s*#' && line('.') + - + endwhile + if exists('after') + execute 'norm V'.a:forward.'j' + elseif line('.') > 1 && getline(line('.')-1) =~# '^\s*$' + execute 'norm kV'.a:forward + else + execute 'norm V'.a:forward + endif +endfunction + +function! RubyCursorIdentifier() + let asciicode = '\%(\w\|[]})\"'."'".']\)\@\|\<0[xXbBoOdD][[:xdigit:]_]\+\>\)\|'.asciicode + let operator = '\%(\[\]\|<<\|<=>\|[!<>]=\=\|===\=\|[!=]\~\|>>\|\*\*\|\.\.\.\=\|=>\|[~^&|*/%+-]\)' + let method = '\%(\<[_a-zA-Z]\w*\>\%([?!]\|\s*=>\@!\)\=\)' + let global = '$\%([!$&"'."'".'*+,./:;<=>?@\`~]\|-\=\w\+\>\)' + let symbolizable = '\%(\%(@@\=\)\w\+\>\|'.global.'\|'.method.'\|'.operator.'\)' + let pattern = '\C\s*\%('.number.'\|\%(:\@") : stripped +endfunction + +function! s:gf(count,map,edit) abort + if getline('.') =~# '^\s*require_relative\s*\(["'']\).*\1\s*$' + let target = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') + return a:edit.' %:h/'.target.'.rb' + elseif getline('.') =~# '^\s*\%(require[( ]\|load[( ]\|autoload[( ]:\w\+,\)\s*\s*\%(::\)\=File\.expand_path(\(["'']\)\.\./.*\1,\s*__FILE__)\s*$' + let target = matchstr(getline('.'),'\(["'']\)\.\./\zs.\{-\}\ze\1') + return a:edit.' %:h/'.target.'.rb' + elseif getline('.') =~# '^\s*\%(require \|load \|autoload :\w\+,\)\s*\(["'']\).*\1\s*$' + let target = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') + else + let target = expand('') + endif + let found = findfile(target, &path, a:count) + if found ==# '' + return 'norm! '.a:count.a:map + else + return a:edit.' '.fnameescape(found) + endif +endfunction + +" +" Instructions for enabling "matchit" support: +" +" 1. Look for the latest "matchit" plugin at +" +" http://www.vim.org/scripts/script.php?script_id=39 +" +" It is also packaged with Vim, in the $VIMRUNTIME/macros directory. +" +" 2. Copy "matchit.txt" into a "doc" directory (e.g. $HOME/.vim/doc). +" +" 3. Copy "matchit.vim" into a "plugin" directory (e.g. $HOME/.vim/plugin). +" +" 4. Ensure this file (ftplugin/ruby.vim) is installed. +" +" 5. Ensure you have this line in your $HOME/.vimrc: +" filetype plugin on +" +" 6. Restart Vim and create the matchit documentation: +" +" :helptags ~/.vim/doc +" +" Now you can do ":help matchit", and you should be able to use "%" on Ruby +" keywords. Try ":echo b:match_words" to be sure. +" +" Thanks to Mark J. Reed for the instructions. See ":help vimrc" for the +" locations of plugin directories, etc., as there are several options, and it +" differs on Windows. Email gsinclair@soyabean.com.au if you need help. +" + +" vim: nowrap sw=2 sts=2 ts=8: diff --git a/share/vim/vim73/ftplugin/sass.vim b/share/vim/vim74/ftplugin/sass.vim similarity index 100% rename from share/vim/vim73/ftplugin/sass.vim rename to share/vim/vim74/ftplugin/sass.vim diff --git a/share/vim/vim74/ftplugin/scheme.vim b/share/vim/vim74/ftplugin/scheme.vim new file mode 100644 index 00000000..7f3f6372 --- /dev/null +++ b/share/vim/vim74/ftplugin/scheme.vim @@ -0,0 +1,48 @@ +" Vim filetype plugin +" Language: Scheme +" Maintainer: Sergey Khorev +" URL: http://sites.google.com/site/khorser/opensource/vim +" Original author: Dorai Sitaram +" Original URL: http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html +" Last Change: Feb 12, 2013 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Copy-paste from ftplugin/lisp.vim +setl comments=:; +setl define=^\\s*(def\\k* +setl formatoptions-=t +setl iskeyword+=+,-,*,/,%,<,=,>,:,$,?,!,@-@,94 +setl lisp +setl commentstring=;%s + +" make comments behaviour like in c.vim +" e.g. insertion of ;;; and ;; on normal "O" or "o" when staying in comment +setl comments^=:;;;,:;;,sr:#\|,mb:\|,ex:\|# +setl formatoptions+=croql + +" Scheme-specific settings +if exists("b:is_mzscheme") || exists("is_mzscheme") + " improve indenting + setl iskeyword+=#,%,^ + setl lispwords+=module,parameterize,let-values,let*-values,letrec-values + setl lispwords+=define-values,opt-lambda,case-lambda,syntax-rules,with-syntax,syntax-case + setl lispwords+=define-signature,unit,unit/sig,compund-unit/sig,define-values/invoke-unit/sig +endif + +if exists("b:is_chicken") || exists("is_chicken") + " improve indenting + setl iskeyword+=#,%,^ + setl lispwords+=let-optionals,let-optionals*,declare + setl lispwords+=let-values,let*-values,letrec-values + setl lispwords+=define-values,opt-lambda,case-lambda,syntax-rules,with-syntax,syntax-case + setl lispwords+=cond-expand,and-let*,foreign-lambda,foreign-lambda* +endif + +let b:undo_ftplugin = "setlocal comments< define< formatoptions< iskeyword< lispwords< lisp< commentstring<" diff --git a/share/vim/vim73/ftplugin/screen.vim b/share/vim/vim74/ftplugin/screen.vim similarity index 100% rename from share/vim/vim73/ftplugin/screen.vim rename to share/vim/vim74/ftplugin/screen.vim diff --git a/share/vim/vim73/ftplugin/scss.vim b/share/vim/vim74/ftplugin/scss.vim similarity index 100% rename from share/vim/vim73/ftplugin/scss.vim rename to share/vim/vim74/ftplugin/scss.vim diff --git a/share/vim/vim73/ftplugin/sensors.vim b/share/vim/vim74/ftplugin/sensors.vim similarity index 100% rename from share/vim/vim73/ftplugin/sensors.vim rename to share/vim/vim74/ftplugin/sensors.vim diff --git a/share/vim/vim73/ftplugin/services.vim b/share/vim/vim74/ftplugin/services.vim similarity index 100% rename from share/vim/vim73/ftplugin/services.vim rename to share/vim/vim74/ftplugin/services.vim diff --git a/share/vim/vim73/ftplugin/setserial.vim b/share/vim/vim74/ftplugin/setserial.vim similarity index 100% rename from share/vim/vim73/ftplugin/setserial.vim rename to share/vim/vim74/ftplugin/setserial.vim diff --git a/share/vim/vim74/ftplugin/sgml.vim b/share/vim/vim74/ftplugin/sgml.vim new file mode 100644 index 00000000..bf63efbf --- /dev/null +++ b/share/vim/vim74/ftplugin/sgml.vim @@ -0,0 +1,40 @@ +" Vim filetype plugin file +" Language: sgml +" Maintainer: Dan Sharp +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "XML Files (*.xml)\t*.xml\n" . + \ "All Files (*.*)\t*.*\n" + +runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") + let s:browsefilter = b:browsefilter +endif + +" Change the :browse e filter to primarily show xml-related files. +if has("gui_win32") + let b:browsefilter="SGML Files (*.sgml,*.sgm)\t*.sgm*\n" . s:browsefilter +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:browsefilter | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim74/ftplugin/sh.vim b/share/vim/vim74/ftplugin/sh.vim new file mode 100644 index 00000000..593fcec9 --- /dev/null +++ b/share/vim/vim74/ftplugin/sh.vim @@ -0,0 +1,39 @@ +" Vim filetype plugin file +" Language: sh +" Maintainer: Dan Sharp +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal commentstring=#%s + +" Shell: thanks to Johannes Zellner +if exists("loaded_matchit") + let s:sol = '\%(;\s*\|^\s*\)\@<=' " start of line + let b:match_words = + \ s:sol.'if\>:' . s:sol.'elif\>:' . s:sol.'else\>:' . s:sol. 'fi\>,' . + \ s:sol.'\%(for\|while\)\>:' . s:sol. 'done\>,' . + \ s:sol.'case\>:' . s:sol. 'esac\>' +endif + +" Change the :browse e filter to primarily show shell-related files. +if has("gui_win32") + let b:browsefilter="Bourne Shell Scripts (*.sh)\t*.sh\n" . + \ "Korn Shell Scripts (*.ksh)\t*.ksh\n" . + \ "Bash Shell Scripts (*.bash)\t*.bash\n" . + \ "All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal cms< | unlet! b:browsefilter b:match_words" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/share/vim/vim73/ftplugin/sieve.vim b/share/vim/vim74/ftplugin/sieve.vim similarity index 100% rename from share/vim/vim73/ftplugin/sieve.vim rename to share/vim/vim74/ftplugin/sieve.vim diff --git a/share/vim/vim73/ftplugin/slpconf.vim b/share/vim/vim74/ftplugin/slpconf.vim similarity index 100% rename from share/vim/vim73/ftplugin/slpconf.vim rename to share/vim/vim74/ftplugin/slpconf.vim diff --git a/share/vim/vim73/ftplugin/slpreg.vim b/share/vim/vim74/ftplugin/slpreg.vim similarity index 100% rename from share/vim/vim73/ftplugin/slpreg.vim rename to share/vim/vim74/ftplugin/slpreg.vim diff --git a/share/vim/vim73/ftplugin/slpspi.vim b/share/vim/vim74/ftplugin/slpspi.vim similarity index 100% rename from share/vim/vim73/ftplugin/slpspi.vim rename to share/vim/vim74/ftplugin/slpspi.vim diff --git a/share/vim/vim74/ftplugin/spec.vim b/share/vim/vim74/ftplugin/spec.vim new file mode 100644 index 00000000..9778e1cc --- /dev/null +++ b/share/vim/vim74/ftplugin/spec.vim @@ -0,0 +1,175 @@ +" Plugin to update the %changelog section of RPM spec files +" Filename: spec.vim +" Maintainer: Gustavo Niemeyer +" Last Change: 2012 Mar 07 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +if !exists("no_plugin_maps") && !exists("no_spec_maps") + if !hasmapto("SpecChangelog") + map c SpecChangelog + endif +endif + +noremap ' + let b:InPHPcode = 0 + let b:InPHPcode_tofind = s:PHP_startindenttag + endif + endif " }}} + + + if !b:InPHPcode && !b:InPHPcode_and_script + return -1 + endif + + " Indent successive // or # comment the same way the first is {{{ + let addSpecial = 0 + if cline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)' + let addSpecial = b:PHP_outdentSLComments + if b:PHP_LastIndentedWasComment == 1 + return indent(real_PHP_lastindented) + endif + let b:PHP_LastIndentedWasComment = 1 + else + let b:PHP_LastIndentedWasComment = 0 + endif " }}} + + " Indent multiline /* comments correctly {{{ + + if b:PHP_InsideMultilineComment || b:UserIsTypingComment + if cline =~ '^\s*\*\%(\/\)\@!' + if last_line =~ '^\s*/\*' + return indent(lnum) + 1 + else + return indent(lnum) + endif + else + let b:PHP_InsideMultilineComment = 0 + endif + endif + + if !b:PHP_InsideMultilineComment && cline =~ '^\s*/\*' && cline !~ '\*/\s*$' + if getline(v:lnum + 1) !~ '^\s*\*' + return -1 + endif + let b:PHP_InsideMultilineComment = 1 + endif " }}} + + + " Things always indented at col 1 (PHP delimiter: , Heredoc end) {{{ + if cline =~# '^\s*' && b:PHP_outdentphpescape + return 0 + endif + + if cline =~ '^\s*?>' && cline !~# '\|}\)\)\=\|<<<''\=\a\w*''\=$\|^\s*}\)'.endline + + let unstated = '\%(^\s*'.s:blockstart.'.*)\|\%(//.*\)\@\)'.endline + + if ind != b:PHP_default_indenting && cline =~# '^\s*else\%(if\)\=\>' + let b:PHP_CurrentIndentLevel = b:PHP_default_indenting + return indent(FindTheIfOfAnElse(v:lnum, 1)) + elseif cline =~# s:defaultORcase + return FindTheSwitchIndent(v:lnum) + &sw * b:PHP_vintage_case_default_indent + elseif cline =~ '^\s*)\=\s*{' + let previous_line = last_line + let last_line_num = lnum + + while last_line_num > 1 + + if previous_line =~ '^\s*\%(' . s:blockstart . '\|\%([a-zA-Z]\s*\)*function\)' + + let ind = indent(last_line_num) + + if b:PHP_BracesAtCodeLevel + let ind = ind + &sw + endif + + return ind + endif + + let last_line_num = last_line_num - 1 + let previous_line = getline(last_line_num) + endwhile + + elseif last_line =~# unstated && cline !~ '^\s*);\='.endline + let ind = ind + &sw " we indent one level further when the preceding line is not stated + return ind + addSpecial + + elseif (ind != b:PHP_default_indenting || last_line =~ '^[)\]]' ) && last_line =~ terminated " Added || last_line =~ '^)' on 2007-12-30 (array indenting problem broke other things) + let previous_line = last_line + let last_line_num = lnum + let LastLineClosed = 1 + + while 1 + if previous_line =~ '^\s*}\|;\s*}'.endline " XXX + + call cursor(last_line_num, 1) + call search('}\|;\s*}'.endline, 'W') + let oldLastLine = last_line_num + let last_line_num = searchpair('{', '', '}', 'bW', 'Skippmatch()') + + if oldLastLine == last_line_num || getline(last_line_num) =~ '^\s*{' + let last_line_num = GetLastRealCodeLNum(last_line_num - 1) + endif + + let previous_line = getline(last_line_num) + + continue + else + + if getline(last_line_num) =~# '^\s*else\%(if\)\=\>' + let last_line_num = FindTheIfOfAnElse(last_line_num, 0) + continue + endif + + + let last_match = last_line_num + + let one_ahead_indent = indent(last_line_num) + let last_line_num = GetLastRealCodeLNum(last_line_num - 1) + let two_ahead_indent = indent(last_line_num) + let after_previous_line = previous_line + let previous_line = getline(last_line_num) + + + if previous_line =~# s:defaultORcase.'\|{'.endline + break + endif + + if after_previous_line=~# '^\s*'.s:blockstart.'.*)'.endline && previous_line =~# '[;}]'.endline + break + endif + + if one_ahead_indent == two_ahead_indent || last_line_num < 1 + if previous_line =~# '\%(;\|^\s*}\)'.endline || last_line_num < 1 + break + endif + endif + endif + endwhile + + if indent(last_match) != ind + let ind = indent(last_match) + let b:PHP_CurrentIndentLevel = b:PHP_default_indenting + + return ind + addSpecial + endif + endif + + let plinnum = GetLastRealCodeLNum(lnum - 1) + let AntepenultimateLine = getline(plinnum) + + let last_line = substitute(last_line,"\\(//\\|#\\)\\(\\(\\([^\"']*\\([\"']\\)[^\"']*\\5\\)\\+[^\"']*$\\)\\|\\([^\"']*$\\)\\)",'','') + + + if ind == b:PHP_default_indenting + if last_line =~ terminated + let LastLineClosed = 1 + endif + endif + + if !LastLineClosed + + + if last_line =~# '[{(\[]'.endline || last_line =~? '\h\w*\s*(.*,$' && AntepenultimateLine !~ '[,(]'.endline + + if !b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{' + let ind = ind + &sw + endif + + if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1 + let b:PHP_CurrentIndentLevel = ind + + return ind + addSpecial + endif + + elseif last_line =~ '\S\+\s*),'.endline + call cursor(lnum, 1) + call search('),'.endline, 'W') + let openedparent = searchpair('(', '', ')', 'bW', 'Skippmatch()') + if openedparent != lnum + let ind = indent(openedparent) + endif + + elseif last_line =~ '^\s*'.s:blockstart + let ind = ind + &sw + + + elseif AntepenultimateLine =~ '\%(;\%(\s*\%(?>\|}\)\)\=\|<<<''\=\a\w*''\=$\|^\s*}\|{\)'.endline . '\|' . s:defaultORcase + let ind = ind + &sw + endif + + endif + + if cline =~ '^\s*[)\]];\=' + let ind = ind - &sw + endif + + let b:PHP_CurrentIndentLevel = ind + return ind + addSpecial +endfunction diff --git a/share/vim/vim73/indent/postscr.vim b/share/vim/vim74/indent/postscr.vim similarity index 100% rename from share/vim/vim73/indent/postscr.vim rename to share/vim/vim74/indent/postscr.vim diff --git a/share/vim/vim73/indent/pov.vim b/share/vim/vim74/indent/pov.vim similarity index 100% rename from share/vim/vim73/indent/pov.vim rename to share/vim/vim74/indent/pov.vim diff --git a/share/vim/vim73/indent/prolog.vim b/share/vim/vim74/indent/prolog.vim similarity index 100% rename from share/vim/vim73/indent/prolog.vim rename to share/vim/vim74/indent/prolog.vim diff --git a/share/vim/vim73/indent/pyrex.vim b/share/vim/vim74/indent/pyrex.vim similarity index 100% rename from share/vim/vim73/indent/pyrex.vim rename to share/vim/vim74/indent/pyrex.vim diff --git a/share/vim/vim74/indent/python.vim b/share/vim/vim74/indent/python.vim new file mode 100644 index 00000000..4ce3c234 --- /dev/null +++ b/share/vim/vim74/indent/python.vim @@ -0,0 +1,198 @@ +" Vim indent file +" Language: Python +" Maintainer: Bram Moolenaar +" Original Author: David Bustos +" Last Change: 2013 Jul 9 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +" Some preliminary settings +setlocal nolisp " Make sure lisp indenting doesn't supersede us +setlocal autoindent " indentexpr isn't much help otherwise + +setlocal indentexpr=GetPythonIndent(v:lnum) +setlocal indentkeys+=<:>,=elif,=except + +" Only define the function once. +if exists("*GetPythonIndent") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" Come here when loading the script the first time. + +let s:maxoff = 50 " maximum number of lines to look backwards for () + +function GetPythonIndent(lnum) + + " If this line is explicitly joined: If the previous line was also joined, + " line it up with that one, otherwise add two 'shiftwidth' + if getline(a:lnum - 1) =~ '\\$' + if a:lnum > 1 && getline(a:lnum - 2) =~ '\\$' + return indent(a:lnum - 1) + endif + return indent(a:lnum - 1) + (exists("g:pyindent_continue") ? eval(g:pyindent_continue) : (shiftwidth() * 2)) + endif + + " If the start of the line is in a string don't change the indent. + if has('syntax_items') + \ && synIDattr(synID(a:lnum, 1, 1), "name") =~ "String$" + return -1 + endif + + " Search backwards for the previous non-empty line. + let plnum = prevnonblank(v:lnum - 1) + + if plnum == 0 + " This is the first non-empty line, use zero indent. + return 0 + endif + + " If the previous line is inside parenthesis, use the indent of the starting + " line. + " Trick: use the non-existing "dummy" variable to break out of the loop when + " going too far back. + call cursor(plnum, 1) + let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW', + \ "line('.') < " . (plnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + if parlnum > 0 + let plindent = indent(parlnum) + let plnumstart = parlnum + else + let plindent = indent(plnum) + let plnumstart = plnum + endif + + + " When inside parenthesis: If at the first line below the parenthesis add + " two 'shiftwidth', otherwise same as previous line. + " i = (a + " + b + " + c) + call cursor(a:lnum, 1) + let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', + \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + if p > 0 + if p == plnum + " When the start is inside parenthesis, only indent one 'shiftwidth'. + let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', + \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + if pp > 0 + return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth()) + endif + return indent(plnum) + (exists("g:pyindent_open_paren") ? eval(g:pyindent_open_paren) : (shiftwidth() * 2)) + endif + if plnumstart == p + return indent(plnum) + endif + return plindent + endif + + + " Get the line and remove a trailing comment. + " Use syntax highlighting attributes when possible. + let pline = getline(plnum) + let pline_len = strlen(pline) + if has('syntax_items') + " If the last character in the line is a comment, do a binary search for + " the start of the comment. synID() is slow, a linear search would take + " too long on a long line. + if synIDattr(synID(plnum, pline_len, 1), "name") =~ "\\(Comment\\|Todo\\)$" + let min = 1 + let max = pline_len + while min < max + let col = (min + max) / 2 + if synIDattr(synID(plnum, col, 1), "name") =~ "\\(Comment\\|Todo\\)$" + let max = col + else + let min = col + 1 + endif + endwhile + let pline = strpart(pline, 0, min - 1) + endif + else + let col = 0 + while col < pline_len + if pline[col] == '#' + let pline = strpart(pline, 0, col) + break + endif + let col = col + 1 + endwhile + endif + + " If the previous line ended with a colon, indent this line + if pline =~ ':\s*$' + return plindent + shiftwidth() + endif + + " If the previous line was a stop-execution statement... + if getline(plnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\)\>' + " See if the user has already dedented + if indent(a:lnum) > indent(plnum) - shiftwidth() + " If not, recommend one dedent + return indent(plnum) - shiftwidth() + endif + " Otherwise, trust the user + return -1 + endif + + " If the current line begins with a keyword that lines up with "try" + if getline(a:lnum) =~ '^\s*\(except\|finally\)\>' + let lnum = a:lnum - 1 + while lnum >= 1 + if getline(lnum) =~ '^\s*\(try\|except\)\>' + let ind = indent(lnum) + if ind >= indent(a:lnum) + return -1 " indent is already less than this + endif + return ind " line up with previous try or except + endif + let lnum = lnum - 1 + endwhile + return -1 " no matching "try"! + endif + + " If the current line begins with a header keyword, dedent + if getline(a:lnum) =~ '^\s*\(elif\|else\)\>' + + " Unless the previous line was a one-liner + if getline(plnumstart) =~ '^\s*\(for\|if\|try\)\>' + return plindent + endif + + " Or the user has already dedented + if indent(a:lnum) <= plindent - shiftwidth() + return -1 + endif + + return plindent - shiftwidth() + endif + + " When after a () construct we probably want to go back to the start line. + " a = (b + " + c) + " here + if parlnum > 0 + return plindent + endif + + return -1 + +endfunction + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:sw=2 diff --git a/share/vim/vim74/indent/r.vim b/share/vim/vim74/indent/r.vim new file mode 100644 index 00000000..82bdc8bb --- /dev/null +++ b/share/vim/vim74/indent/r.vim @@ -0,0 +1,492 @@ +" Vim indent file +" Language: R +" Author: Jakson Alves de Aquino +" Last Change: Fri Feb 15, 2013 08:11PM + + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentkeys=0{,0},:,!^F,o,O,e +setlocal indentexpr=GetRIndent() + +" Only define the function once. +if exists("*GetRIndent") + finish +endif + +" Options to make the indentation more similar to Emacs/ESS: +if !exists("g:r_indent_align_args") + let g:r_indent_align_args = 1 +endif +if !exists("g:r_indent_ess_comments") + let g:r_indent_ess_comments = 0 +endif +if !exists("g:r_indent_comment_column") + let g:r_indent_comment_column = 40 +endif +if ! exists("g:r_indent_ess_compatible") + let g:r_indent_ess_compatible = 0 +endif + +function s:RDelete_quotes(line) + let i = 0 + let j = 0 + let line1 = "" + let llen = strlen(a:line) + while i < llen + if a:line[i] == '"' + let i += 1 + let line1 = line1 . 's' + while !(a:line[i] == '"' && ((i > 1 && a:line[i-1] == '\' && a:line[i-2] == '\') || a:line[i-1] != '\')) && i < llen + let i += 1 + endwhile + if a:line[i] == '"' + let i += 1 + endif + else + if a:line[i] == "'" + let i += 1 + let line1 = line1 . 's' + while !(a:line[i] == "'" && ((i > 1 && a:line[i-1] == '\' && a:line[i-2] == '\') || a:line[i-1] != '\')) && i < llen + let i += 1 + endwhile + if a:line[i] == "'" + let i += 1 + endif + else + if a:line[i] == "`" + let i += 1 + let line1 = line1 . 's' + while a:line[i] != "`" && i < llen + let i += 1 + endwhile + if a:line[i] == "`" + let i += 1 + endif + endif + endif + endif + if i == llen + break + endif + let line1 = line1 . a:line[i] + let j += 1 + let i += 1 + endwhile + return line1 +endfunction + +" Convert foo(bar()) int foo() +function s:RDelete_parens(line) + if s:Get_paren_balance(a:line, "(", ")") != 0 + return a:line + endif + let i = 0 + let j = 0 + let line1 = "" + let llen = strlen(a:line) + while i < llen + let line1 = line1 . a:line[i] + if a:line[i] == '(' + let nop = 1 + while nop > 0 && i < llen + let i += 1 + if a:line[i] == ')' + let nop -= 1 + else + if a:line[i] == '(' + let nop += 1 + endif + endif + endwhile + let line1 = line1 . a:line[i] + endif + let i += 1 + endwhile + return line1 +endfunction + +function! s:Get_paren_balance(line, o, c) + let line2 = substitute(a:line, a:o, "", "g") + let openp = strlen(a:line) - strlen(line2) + let line3 = substitute(line2, a:c, "", "g") + let closep = strlen(line2) - strlen(line3) + return openp - closep +endfunction + +function! s:Get_matching_brace(linenr, o, c, delbrace) + let line = SanitizeRLine(getline(a:linenr)) + if a:delbrace == 1 + let line = substitute(line, '{$', "", "") + endif + let pb = s:Get_paren_balance(line, a:o, a:c) + let i = a:linenr + while pb != 0 && i > 1 + let i -= 1 + let pb += s:Get_paren_balance(SanitizeRLine(getline(i)), a:o, a:c) + endwhile + return i +endfunction + +" This function is buggy because there 'if's without 'else' +" It must be rewritten relying more on indentation +function! s:Get_matching_if(linenr, delif) +" let filenm = expand("%") +" call writefile([filenm], "/tmp/matching_if_" . a:linenr) + let line = SanitizeRLine(getline(a:linenr)) + if a:delif + let line = substitute(line, "if", "", "g") + endif + let elsenr = 0 + let i = a:linenr + let ifhere = 0 + while i > 0 + let line2 = substitute(line, '\', "xxx", "g") + let elsenr += strlen(line) - strlen(line2) + if line =~ '.*\s*if\s*()' || line =~ '.*\s*if\s*()' + let elsenr -= 1 + if elsenr == 0 + let ifhere = i + break + endif + endif + let i -= 1 + let line = SanitizeRLine(getline(i)) + endwhile + if ifhere + return ifhere + else + return a:linenr + endif +endfunction + +function! s:Get_last_paren_idx(line, o, c, pb) + let blc = a:pb + let line = substitute(a:line, '\t', s:curtabstop, "g") + let theidx = -1 + let llen = strlen(line) + let idx = 0 + while idx < llen + if line[idx] == a:o + let blc -= 1 + if blc == 0 + let theidx = idx + endif + else + if line[idx] == a:c + let blc += 1 + endif + endif + let idx += 1 + endwhile + return theidx + 1 +endfunction + +" Get previous relevant line. Search back until getting a line that isn't +" comment or blank +function s:Get_prev_line(lineno) + let lnum = a:lineno - 1 + let data = getline( lnum ) + while lnum > 0 && (data =~ '^\s*#' || data =~ '^\s*$') + let lnum = lnum - 1 + let data = getline( lnum ) + endwhile + return lnum +endfunction + +" This function is also used by r-plugin/common_global.vim +" Delete from '#' to the end of the line, unless the '#' is inside a string. +function SanitizeRLine(line) + let newline = s:RDelete_quotes(a:line) + let newline = s:RDelete_parens(newline) + let newline = substitute(newline, '#.*', "", "") + let newline = substitute(newline, '\s*$', "", "") + return newline +endfunction + +function GetRIndent() + + let clnum = line(".") " current line + + let cline = getline(clnum) + if cline =~ '^\s*#' + if g:r_indent_ess_comments == 1 + if cline =~ '^\s*###' + return 0 + endif + if cline !~ '^\s*##' + return g:r_indent_comment_column + endif + endif + endif + + let cline = SanitizeRLine(cline) + + if cline =~ '^\s*}' || cline =~ '^\s*}\s*)$' + let indline = s:Get_matching_brace(clnum, '{', '}', 1) + if indline > 0 && indline != clnum + let iline = SanitizeRLine(getline(indline)) + if s:Get_paren_balance(iline, "(", ")") == 0 || iline =~ '(\s*{$' + return indent(indline) + else + let indline = s:Get_matching_brace(indline, '(', ')', 1) + return indent(indline) + endif + endif + endif + + " Find the first non blank line above the current line + let lnum = s:Get_prev_line(clnum) + " Hit the start of the file, use zero indent. + if lnum == 0 + return 0 + endif + + let line = SanitizeRLine(getline(lnum)) + + if &filetype == "rhelp" + if cline =~ '^\\dontshow{' || cline =~ '^\\dontrun{' || cline =~ '^\\donttest{' || cline =~ '^\\testonly{' + return 0 + endif + if line =~ '^\\examples{' || line =~ '^\\usage{' || line =~ '^\\dontshow{' || line =~ '^\\dontrun{' || line =~ '^\\donttest{' || line =~ '^\\testonly{' + return 0 + endif + if line =~ '^\\method{.*}{.*}(.*' + let line = substitute(line, '^\\method{\(.*\)}{.*}', '\1', "") + endif + endif + + if cline =~ '^\s*{' + if g:r_indent_ess_compatible && line =~ ')$' + let nlnum = lnum + let nline = line + while s:Get_paren_balance(nline, '(', ')') < 0 + let nlnum = s:Get_prev_line(nlnum) + let nline = SanitizeRLine(getline(nlnum)) . nline + endwhile + if nline =~ '^\s*function\s*(' && indent(nlnum) == &sw + return 0 + endif + endif + if s:Get_paren_balance(line, "(", ")") == 0 + return indent(lnum) + endif + endif + + " line is an incomplete command: + if line =~ '\<\(if\|while\|for\|function\)\s*()$' || line =~ '\]$' || cline =~ '^\s*[,&|\-\*+<>]') + return indent(lnum) + endif + + if pb > 0 + if &filetype == "rhelp" + let ind = s:Get_last_paren_idx(line, '(', ')', pb) + else + let ind = s:Get_last_paren_idx(getline(lnum), '(', ')', pb) + endif + return ind + endif + + if pb < 0 && line =~ '.*[,&|\-\*+<>]$' + let lnum = s:Get_prev_line(lnum) + while pb < 1 && lnum > 0 + let line = SanitizeRLine(getline(lnum)) + let line = substitute(line, '\t', s:curtabstop, "g") + let ind = strlen(line) + while ind > 0 + if line[ind] == ')' + let pb -= 1 + else + if line[ind] == '(' + let pb += 1 + endif + endif + if pb == 1 + return ind + 1 + endif + let ind -= 1 + endwhile + let lnum -= 1 + endwhile + return 0 + endif + + if bb > 0 + let ind = s:Get_last_paren_idx(getline(lnum), '[', ']', bb) + return ind + endif + endif + + let post_block = 0 + if line =~ '}$' + let lnum = s:Get_matching_brace(lnum, '{', '}', 0) + let line = SanitizeRLine(getline(lnum)) + if lnum > 0 && line =~ '^\s*{' + let lnum = s:Get_prev_line(lnum) + let line = SanitizeRLine(getline(lnum)) + endif + let pb = s:Get_paren_balance(line, '(', ')') + let post_block = 1 + endif + + let post_fun = 0 + if pb < 0 && line !~ ')\s*[,&|\-\*+<>]$' + let post_fun = 1 + while pb < 0 && lnum > 0 + let lnum -= 1 + let linepiece = SanitizeRLine(getline(lnum)) + let pb += s:Get_paren_balance(linepiece, "(", ")") + let line = linepiece . line + endwhile + if line =~ '{$' && post_block == 0 + return indent(lnum) + &sw + endif + + " Now we can do some tests again + if cline =~ '^\s*{' + return indent(lnum) + endif + if post_block == 0 + let newl = SanitizeRLine(line) + if newl =~ '\<\(if\|while\|for\|function\)\s*()$' || newl =~ '\ 0 + let lnum -= 1 + let linepiece = SanitizeRLine(getline(lnum)) + let bb += s:Get_paren_balance(linepiece, "[", "]") + let line = linepiece . line + endwhile + let line = s:RDelete_parens(line) + endif + + let plnum = s:Get_prev_line(lnum) + let ppost_else = 0 + if plnum > 0 + let pline = SanitizeRLine(getline(plnum)) + let ppost_block = 0 + if pline =~ '}$' + let ppost_block = 1 + let plnum = s:Get_matching_brace(plnum, '{', '}', 0) + let pline = SanitizeRLine(getline(plnum)) + if pline =~ '^\s*{$' && plnum > 0 + let plnum = s:Get_prev_line(plnum) + let pline = SanitizeRLine(getline(plnum)) + endif + endif + + if pline =~ 'else$' + let ppost_else = 1 + let plnum = s:Get_matching_if(plnum, 0) + let pline = SanitizeRLine(getline(plnum)) + endif + + if pline =~ '^\s*else\s*if\s*(' + let pplnum = s:Get_prev_line(plnum) + let ppline = SanitizeRLine(getline(pplnum)) + while ppline =~ '^\s*else\s*if\s*(' || ppline =~ '^\s*if\s*()\s*\S$' + let plnum = pplnum + let pline = ppline + let pplnum = s:Get_prev_line(plnum) + let ppline = SanitizeRLine(getline(pplnum)) + endwhile + while ppline =~ '\<\(if\|while\|for\|function\)\s*()$' || ppline =~ '\ 0 + let plnum -= 1 + let linepiece = SanitizeRLine(getline(plnum)) + let ppb += s:Get_paren_balance(linepiece, "(", ")") + let pline = linepiece . pline + endwhile + let pline = s:RDelete_parens(pline) + endif + endif + + let ind = indent(lnum) + let pind = indent(plnum) + + if g:r_indent_align_args == 0 && pb != 0 + let ind += pb * &sw + return ind + endif + + if g:r_indent_align_args == 0 && bb != 0 + let ind += bb * &sw + return ind + endif + + if ind == pind || (ind == (pind + &sw) && pline =~ '{$' && ppost_else == 0) + return ind + endif + + let pline = getline(plnum) + let pbb = s:Get_paren_balance(pline, '[', ']') + + while pind < ind && plnum > 0 && ppb == 0 && pbb == 0 + let ind = pind + let plnum = s:Get_prev_line(plnum) + let pline = getline(plnum) + let ppb = s:Get_paren_balance(pline, '(', ')') + let pbb = s:Get_paren_balance(pline, '[', ']') + while pline =~ '^\s*else' + let plnum = s:Get_matching_if(plnum, 1) + let pline = getline(plnum) + let ppb = s:Get_paren_balance(pline, '(', ')') + let pbb = s:Get_paren_balance(pline, '[', ']') + endwhile + let pind = indent(plnum) + if ind == (pind + &sw) && pline =~ '{$' + return ind + endif + endwhile + + return ind + +endfunction + +" vim: sw=4 diff --git a/share/vim/vim73/indent/readline.vim b/share/vim/vim74/indent/readline.vim similarity index 100% rename from share/vim/vim73/indent/readline.vim rename to share/vim/vim74/indent/readline.vim diff --git a/share/vim/vim73/indent/rpl.vim b/share/vim/vim74/indent/rpl.vim similarity index 100% rename from share/vim/vim73/indent/rpl.vim rename to share/vim/vim74/indent/rpl.vim diff --git a/share/vim/vim74/indent/rst.vim b/share/vim/vim74/indent/rst.vim new file mode 100644 index 00000000..80d3308f --- /dev/null +++ b/share/vim/vim74/indent/rst.vim @@ -0,0 +1,59 @@ +" Vim indent file +" Language: reStructuredText Documentation Format +" Maintainer: Nikolai Weibull +" Latest Revision: 2011-08-03 + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=GetRSTIndent() +setlocal indentkeys=!^F,o,O +setlocal nosmartindent + +if exists("*GetRSTIndent") + finish +endif + +let s:itemization_pattern = '^\s*[-*+]\s' +let s:enumeration_pattern = '^\s*\%(\d\+\|#\)\.\s\+' + +function GetRSTIndent() + let lnum = prevnonblank(v:lnum - 1) + if lnum == 0 + return 0 + endif + + let ind = indent(lnum) + let line = getline(lnum) + + if line =~ s:itemization_pattern + let ind += 2 + elseif line =~ s:enumeration_pattern + let ind += matchend(line, s:enumeration_pattern) + endif + + let line = getline(v:lnum - 1) + + " Indent :FIELD: lines. Don’t match if there is no text after the field or + " if the text ends with a sent-ender. + if line =~ '^:.\+:\s\{-1,\}\S.\+[^.!?:]$' + return matchend(line, '^:.\{-1,}:\s\+') + endif + + if line =~ '^\s*$' + execute lnum + call search('^\s*\%([-*+]\s\|\%(\d\+\|#\)\.\s\|\.\.\|$\)', 'bW') + let line = getline('.') + if line =~ s:itemization_pattern + let ind -= 2 + elseif line =~ s:enumeration_pattern + let ind -= matchend(line, s:enumeration_pattern) + elseif line =~ '^\s*\.\.' + let ind -= 3 + endif + endif + + return ind +endfunction diff --git a/share/vim/vim74/indent/ruby.vim b/share/vim/vim74/indent/ruby.vim new file mode 100644 index 00000000..095b3a43 --- /dev/null +++ b/share/vim/vim74/indent/ruby.vim @@ -0,0 +1,537 @@ +" Vim indent file +" Language: Ruby +" Maintainer: Nikolai Weibull +" URL: https://github.com/vim-ruby/vim-ruby +" Release Coordinator: Doug Kearns + +" 0. Initialization {{{1 +" ================= + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal nosmartindent + +" Now, set up our indentation expression and keys that trigger it. +setlocal indentexpr=GetRubyIndent(v:lnum) +setlocal indentkeys=0{,0},0),0],!^F,o,O,e +setlocal indentkeys+==end,=else,=elsif,=when,=ensure,=rescue,==begin,==end + +" Only define the function once. +if exists("*GetRubyIndent") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" 1. Variables {{{1 +" ============ + +" Regex of syntax group names that are or delimit strings/symbols or are comments. +let s:syng_strcom = '\' + +" Regex of syntax group names that are strings. +let s:syng_string = + \ '\' + +" Regex of syntax group names that are strings or documentation. +let s:syng_stringdoc = + \'\' + +" Expression used to check whether we should skip a match with searchpair(). +let s:skip_expr = + \ "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'" + +" Regex used for words that, at the start of a line, add a level of indent. +let s:ruby_indent_keywords = '^\s*\zs\<\%(module\|class\|def\|if\|for' . + \ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure' . + \ '\|rescue\):\@!\>' . + \ '\|\%([=,*/%+-]\|<<\|>>\|:\s\)\s*\zs' . + \ '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>' + +" Regex used for words that, at the start of a line, remove a level of indent. +let s:ruby_deindent_keywords = + \ '^\s*\zs\<\%(ensure\|else\|rescue\|elsif\|when\|end\):\@!\>' + +" Regex that defines the start-match for the 'end' keyword. +"let s:end_start_regex = '\%(^\|[^.]\)\<\%(module\|class\|def\|if\|for\|while\|until\|case\|unless\|begin\|do\)\>' +" TODO: the do here should be restricted somewhat (only at end of line)? +let s:end_start_regex = + \ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' . + \ '\<\%(module\|class\|def\|if\|for\|while\|until\|case\|unless\|begin\):\@!\>' . + \ '\|\%(^\|[^.:@$]\)\@<=\' + +" Regex that defines the middle-match for the 'end' keyword. +let s:end_middle_regex = '\<\%(ensure\|else\|\%(\%(^\|;\)\s*\)\@<=\\|when\|elsif\):\@!\>' + +" Regex that defines the end-match for the 'end' keyword. +let s:end_end_regex = '\%(^\|[^.:@$]\)\@<=\' + +" Expression used for searchpair() call for finding match for 'end' keyword. +let s:end_skip_expr = s:skip_expr . + \ ' || (expand("") == "do"' . + \ ' && getline(".") =~ "^\\s*\\<\\(while\\|until\\|for\\):\\@!\\>")' + +" Regex that defines continuation lines, not including (, {, or [. +let s:non_bracket_continuation_regex = '\%([\\.,:*/%+]\|\\|%\@ 0 + " Go in and out of blocks comments as necessary. + " If the line isn't empty (with opt. comment) or in a string, end search. + let line = getline(lnum) + if line =~ '^=begin' + if in_block + let in_block = 0 + else + break + endif + elseif !in_block && line =~ '^=end' + let in_block = 1 + elseif !in_block && line !~ '^\s*#.*$' && !(s:IsInStringOrComment(lnum, 1) + \ && s:IsInStringOrComment(lnum, strlen(line))) + break + endif + let lnum = prevnonblank(lnum - 1) + endwhile + return lnum +endfunction + +" Find line above 'lnum' that started the continuation 'lnum' may be part of. +function s:GetMSL(lnum) + " Start on the line we're at and use its indent. + let msl = a:lnum + let msl_body = getline(msl) + let lnum = s:PrevNonBlankNonString(a:lnum - 1) + while lnum > 0 + " If we have a continuation line, or we're in a string, use line as MSL. + " Otherwise, terminate search as we have found our MSL already. + let line = getline(lnum) + + if s:Match(lnum, s:splat_regex) + " If the above line looks like the "*" of a splat, use the current one's + " indentation. + " + " Example: + " Hash[* + " method_call do + " something + " + return msl + elseif s:Match(line, s:non_bracket_continuation_regex) && + \ s:Match(msl, s:non_bracket_continuation_regex) + " If the current line is a non-bracket continuation and so is the + " previous one, keep its indent and continue looking for an MSL. + " + " Example: + " method_call one, + " two, + " three + " + let msl = lnum + elseif s:Match(lnum, s:non_bracket_continuation_regex) && + \ (s:Match(msl, s:bracket_continuation_regex) || s:Match(msl, s:block_continuation_regex)) + " If the current line is a bracket continuation or a block-starter, but + " the previous is a non-bracket one, respect the previous' indentation, + " and stop here. + " + " Example: + " method_call one, + " two { + " three + " + return lnum + elseif s:Match(lnum, s:bracket_continuation_regex) && + \ (s:Match(msl, s:bracket_continuation_regex) || s:Match(msl, s:block_continuation_regex)) + " If both lines are bracket continuations (the current may also be a + " block-starter), use the current one's and stop here + " + " Example: + " method_call( + " other_method_call( + " foo + return msl + elseif s:Match(lnum, s:block_regex) && + \ !s:Match(msl, s:continuation_regex) && + \ !s:Match(msl, s:block_continuation_regex) + " If the previous line is a block-starter and the current one is + " mostly ordinary, use the current one as the MSL. + " + " Example: + " method_call do + " something + " something_else + return msl + else + let col = match(line, s:continuation_regex) + 1 + if (col > 0 && !s:IsInStringOrComment(lnum, col)) + \ || s:IsInString(lnum, strlen(line)) + let msl = lnum + else + break + endif + endif + + let msl_body = getline(msl) + let lnum = s:PrevNonBlankNonString(lnum - 1) + endwhile + return msl +endfunction + +" Check if line 'lnum' has more opening brackets than closing ones. +function s:ExtraBrackets(lnum) + let opening = {'parentheses': [], 'braces': [], 'brackets': []} + let closing = {'parentheses': [], 'braces': [], 'brackets': []} + + let line = getline(a:lnum) + let pos = match(line, '[][(){}]', 0) + + " Save any encountered opening brackets, and remove them once a matching + " closing one has been found. If a closing bracket shows up that doesn't + " close anything, save it for later. + while pos != -1 + if !s:IsInStringOrComment(a:lnum, pos + 1) + if line[pos] == '(' + call add(opening.parentheses, {'type': '(', 'pos': pos}) + elseif line[pos] == ')' + if empty(opening.parentheses) + call add(closing.parentheses, {'type': ')', 'pos': pos}) + else + let opening.parentheses = opening.parentheses[0:-2] + endif + elseif line[pos] == '{' + call add(opening.braces, {'type': '{', 'pos': pos}) + elseif line[pos] == '}' + if empty(opening.braces) + call add(closing.braces, {'type': '}', 'pos': pos}) + else + let opening.braces = opening.braces[0:-2] + endif + elseif line[pos] == '[' + call add(opening.brackets, {'type': '[', 'pos': pos}) + elseif line[pos] == ']' + if empty(opening.brackets) + call add(closing.brackets, {'type': ']', 'pos': pos}) + else + let opening.brackets = opening.brackets[0:-2] + endif + endif + endif + + let pos = match(line, '[][(){}]', pos + 1) + endwhile + + " Find the rightmost brackets, since they're the ones that are important in + " both opening and closing cases + let rightmost_opening = {'type': '(', 'pos': -1} + let rightmost_closing = {'type': ')', 'pos': -1} + + for opening in opening.parentheses + opening.braces + opening.brackets + if opening.pos > rightmost_opening.pos + let rightmost_opening = opening + endif + endfor + + for closing in closing.parentheses + closing.braces + closing.brackets + if closing.pos > rightmost_closing.pos + let rightmost_closing = closing + endif + endfor + + return [rightmost_opening, rightmost_closing] +endfunction + +function s:Match(lnum, regex) + let col = match(getline(a:lnum), '\C'.a:regex) + 1 + return col > 0 && !s:IsInStringOrComment(a:lnum, col) ? col : 0 +endfunction + +function s:MatchLast(lnum, regex) + let line = getline(a:lnum) + let col = match(line, '.*\zs' . a:regex) + while col != -1 && s:IsInStringOrComment(a:lnum, col) + let line = strpart(line, 0, col) + let col = match(line, '.*' . a:regex) + endwhile + return col + 1 +endfunction + +" 3. GetRubyIndent Function {{{1 +" ========================= + +function GetRubyIndent(...) + " 3.1. Setup {{{2 + " ---------- + + " For the current line, use the first argument if given, else v:lnum + let clnum = a:0 ? a:1 : v:lnum + + " Set up variables for restoring position in file. Could use clnum here. + let vcol = col('.') + + " 3.2. Work on the current line {{{2 + " ----------------------------- + + " Get the current line. + let line = getline(clnum) + let ind = -1 + + " If we got a closing bracket on an empty line, find its match and indent + " according to it. For parentheses we indent to its column - 1, for the + " others we indent to the containing line's MSL's level. Return -1 if fail. + let col = matchend(line, '^\s*[]})]') + if col > 0 && !s:IsInStringOrComment(clnum, col) + call cursor(clnum, col) + let bs = strpart('(){}[]', stridx(')}]', line[col - 1]) * 2, 2) + if searchpair(escape(bs[0], '\['), '', bs[1], 'bW', s:skip_expr) > 0 + if line[col-1]==')' && col('.') != col('$') - 1 + let ind = virtcol('.') - 1 + else + let ind = indent(s:GetMSL(line('.'))) + endif + endif + return ind + endif + + " If we have a =begin or =end set indent to first column. + if match(line, '^\s*\%(=begin\|=end\)$') != -1 + return 0 + endif + + " If we have a deindenting keyword, find its match and indent to its level. + " TODO: this is messy + if s:Match(clnum, s:ruby_deindent_keywords) + call cursor(clnum, 1) + if searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW', + \ s:end_skip_expr) > 0 + let msl = s:GetMSL(line('.')) + let line = getline(line('.')) + + if strpart(line, 0, col('.') - 1) =~ '=\s*$' && + \ strpart(line, col('.') - 1, 2) !~ 'do' + let ind = virtcol('.') - 1 + elseif getline(msl) =~ '=\s*\(#.*\)\=$' + let ind = indent(line('.')) + else + let ind = indent(msl) + endif + endif + return ind + endif + + " If we are in a multi-line string or line-comment, don't do anything to it. + if s:IsInStringOrDocumentation(clnum, matchend(line, '^\s*') + 1) + return indent('.') + endif + + " If we are at the closing delimiter of a "<<" heredoc-style string, set the + " indent to 0. + if line =~ '^\k\+\s*$' + \ && s:IsInStringDelimiter(clnum, 1) + \ && search('\V<<'.line, 'nbW') > 0 + return 0 + endif + + " 3.3. Work on the previous line. {{{2 + " ------------------------------- + + " Find a non-blank, non-multi-line string line above the current line. + let lnum = s:PrevNonBlankNonString(clnum - 1) + + " If the line is empty and inside a string, use the previous line. + if line =~ '^\s*$' && lnum != prevnonblank(clnum - 1) + return indent(prevnonblank(clnum)) + endif + + " At the start of the file use zero indent. + if lnum == 0 + return 0 + endif + + " Set up variables for the previous line. + let line = getline(lnum) + let ind = indent(lnum) + + " If the previous line ended with a block opening, add a level of indent. + if s:Match(lnum, s:block_regex) + return indent(s:GetMSL(lnum)) + &sw + endif + + " If the previous line ended with the "*" of a splat, add a level of indent + if line =~ s:splat_regex + return indent(lnum) + &sw + endif + + " If the previous line contained unclosed opening brackets and we are still + " in them, find the rightmost one and add indent depending on the bracket + " type. + " + " If it contained hanging closing brackets, find the rightmost one, find its + " match and indent according to that. + if line =~ '[[({]' || line =~ '[])}]\s*\%(#.*\)\=$' + let [opening, closing] = s:ExtraBrackets(lnum) + + if opening.pos != -1 + if opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0 + if col('.') + 1 == col('$') + return ind + &sw + else + return virtcol('.') + endif + else + let nonspace = matchend(line, '\S', opening.pos + 1) - 1 + return nonspace > 0 ? nonspace : ind + &sw + endif + elseif closing.pos != -1 + call cursor(lnum, closing.pos + 1) + normal! % + + if s:Match(line('.'), s:ruby_indent_keywords) + return indent('.') + &sw + else + return indent('.') + endif + else + call cursor(clnum, vcol) + end + endif + + " If the previous line ended with an "end", match that "end"s beginning's + " indent. + let col = s:Match(lnum, '\%(^\|[^.:@$]\)\\s*\%(#.*\)\=$') + if col > 0 + call cursor(lnum, col) + if searchpair(s:end_start_regex, '', s:end_end_regex, 'bW', + \ s:end_skip_expr) > 0 + let n = line('.') + let ind = indent('.') + let msl = s:GetMSL(n) + if msl != n + let ind = indent(msl) + end + return ind + endif + end + + let col = s:Match(lnum, s:ruby_indent_keywords) + if col > 0 + call cursor(lnum, col) + let ind = virtcol('.') - 1 + &sw + " TODO: make this better (we need to count them) (or, if a searchpair + " fails, we know that something is lacking an end and thus we indent a + " level + if s:Match(lnum, s:end_end_regex) + let ind = indent('.') + endif + return ind + endif + + " 3.4. Work on the MSL line. {{{2 + " -------------------------- + + " Set up variables to use and search for MSL to the previous line. + let p_lnum = lnum + let lnum = s:GetMSL(lnum) + + " If the previous line wasn't a MSL and is continuation return its indent. + " TODO: the || s:IsInString() thing worries me a bit. + if p_lnum != lnum + if s:Match(p_lnum, s:non_bracket_continuation_regex) || s:IsInString(p_lnum,strlen(line)) + return ind + endif + endif + + " Set up more variables, now that we know we wasn't continuation bound. + let line = getline(lnum) + let msl_ind = indent(lnum) + + " If the MSL line had an indenting keyword in it, add a level of indent. + " TODO: this does not take into account contrived things such as + " module Foo; class Bar; end + if s:Match(lnum, s:ruby_indent_keywords) + let ind = msl_ind + &sw + if s:Match(lnum, s:end_end_regex) + let ind = ind - &sw + endif + return ind + endif + + " If the previous line ended with [*+/.,-=], but wasn't a block ending or a + " closing bracket, indent one extra level. + if s:Match(lnum, s:non_bracket_continuation_regex) && !s:Match(lnum, '^\s*\([\])}]\|end\)') + if lnum == p_lnum + let ind = msl_ind + &sw + else + let ind = msl_ind + endif + return ind + endif + + " }}}2 + + return ind +endfunction + +" }}}1 + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:set sw=2 sts=2 ts=8 et: diff --git a/share/vim/vim74/indent/sass.vim b/share/vim/vim74/indent/sass.vim new file mode 100644 index 00000000..b6e2e66e --- /dev/null +++ b/share/vim/vim74/indent/sass.vim @@ -0,0 +1,40 @@ +" Vim indent file +" Language: Sass +" Maintainer: Tim Pope +" Last Change: 2013 May 30 + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal autoindent sw=2 et +setlocal indentexpr=GetSassIndent() +setlocal indentkeys=o,O,*,<:>,!^F + +" Only define the function once. +if exists("*GetSassIndent") + finish +endif + +let s:property = '^\s*:\|^\s*[[:alnum:]#{}-]\+\%(:\|\s*=\)' +let s:extend = '^\s*\%(@extend\|@include\|+\)' + +function! GetSassIndent() + let lnum = prevnonblank(v:lnum-1) + let line = substitute(getline(lnum),'\s\+$','','') + let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','') + let lastcol = strlen(line) + let line = substitute(line,'^\s\+','','') + let indent = indent(lnum) + let cindent = indent(v:lnum) + if line !~ s:property && line !~ s:extend && cline =~ s:property + return indent + &sw + "elseif line =~ s:property && cline !~ s:property + "return indent - &sw + else + return -1 + endif +endfunction + +" vim:set sw=2: diff --git a/share/vim/vim73/indent/scheme.vim b/share/vim/vim74/indent/scheme.vim similarity index 100% rename from share/vim/vim73/indent/scheme.vim rename to share/vim/vim74/indent/scheme.vim diff --git a/share/vim/vim73/indent/scss.vim b/share/vim/vim74/indent/scss.vim similarity index 100% rename from share/vim/vim73/indent/scss.vim rename to share/vim/vim74/indent/scss.vim diff --git a/share/vim/vim74/indent/sdl.vim b/share/vim/vim74/indent/sdl.vim new file mode 100644 index 00000000..ba03f2d3 --- /dev/null +++ b/share/vim/vim74/indent/sdl.vim @@ -0,0 +1,93 @@ +" Vim indent file +" Language: SDL +" Maintainer: Michael Piefel +" Last Change: 10 December 2011 + +" Shamelessly stolen from the Vim-Script indent file + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=GetSDLIndent() +setlocal indentkeys+==~end,=~state,* + +" Only define the function once. +if exists("*GetSDLIndent") +" finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +function! GetSDLIndent() + " Find a non-blank line above the current line. + let lnum = prevnonblank(v:lnum - 1) + + " At the start of the file use zero indent. + if lnum == 0 + return 0 + endif + + let ind = indent(lnum) + let virtuality = '^\s*\(\(virtual\|redefined\|finalized\)\s\+\)\=\s*' + + " Add a single space to comments which use asterisks + if getline(lnum) =~ '^\s*\*' + let ind = ind - 1 + endif + if getline(v:lnum) =~ '^\s*\*' + let ind = ind + 1 + endif + + " Add a 'shiftwidth' after states, different blocks, decision (and alternatives), inputs + if (getline(lnum) =~? '^\s*\(start\|state\|system\|package\|connection\|channel\|alternative\|macro\|operator\|newtype\|select\|substructure\|decision\|generator\|refinement\|service\|method\|exceptionhandler\|asntype\|syntype\|value\|(.*):\|\(priority\s\+\)\=input\|provided\)' + \ || getline(lnum) =~? virtuality . '\(process\|procedure\|block\|object\)') + \ && getline(lnum) !~? 'end[[:alpha:]]\+;$' + let ind = ind + &sw + endif + + " Subtract a 'shiftwidth' after states + if getline(lnum) =~? '^\s*\(stop\|return\>\|nextstate\)' + let ind = ind - &sw + endif + + " Subtract a 'shiftwidth' on on end (uncompleted line) + if getline(v:lnum) =~? '^\s*end\>' + let ind = ind - &sw + endif + + " Put each alternatives where the corresponding decision was + if getline(v:lnum) =~? '^\s*\((.*)\|else\):' + normal k + let ind = indent(searchpair('^\s*decision', '', '^\s*enddecision', 'bW', + \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "sdlString"')) + endif + + " Put each state where the preceding state was + if getline(v:lnum) =~? '^\s*state\>' + let ind = indent(search('^\s*start', 'bW')) + endif + + " Systems and packages are always in column 0 + if getline(v:lnum) =~? '^\s*\(\(end\)\=system\|\(end\)\=package\)' + return 0 + endif + + " Put each end* where the corresponding begin was + if getline(v:lnum) =~? '^\s*end[[:alpha:]]' + normal k + let partner=matchstr(getline(v:lnum), '\(' . virtuality . 'end\)\@<=[[:alpha:]]\+') + let ind = indent(searchpair(virtuality . partner, '', '^\s*end' . partner, 'bW', + \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "sdlString"')) + endif + + return ind +endfunction + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:sw=2 diff --git a/share/vim/vim73/indent/sh.vim b/share/vim/vim74/indent/sh.vim similarity index 100% rename from share/vim/vim73/indent/sh.vim rename to share/vim/vim74/indent/sh.vim diff --git a/share/vim/vim73/indent/sml.vim b/share/vim/vim74/indent/sml.vim similarity index 100% rename from share/vim/vim73/indent/sml.vim rename to share/vim/vim74/indent/sml.vim diff --git a/share/vim/vim73/indent/sql.vim b/share/vim/vim74/indent/sql.vim similarity index 100% rename from share/vim/vim73/indent/sql.vim rename to share/vim/vim74/indent/sql.vim diff --git a/share/vim/vim74/indent/sqlanywhere.vim b/share/vim/vim74/indent/sqlanywhere.vim new file mode 100644 index 00000000..d11c54b5 --- /dev/null +++ b/share/vim/vim74/indent/sqlanywhere.vim @@ -0,0 +1,393 @@ +" Vim indent file +" Language: SQL +" Maintainer: David Fishburn +" Last Change: 2012 Dec 06 +" Version: 3.0 +" Download: http://vim.sourceforge.net/script.php?script_id=495 + +" Notes: +" Indenting keywords are based on Oracle and Sybase Adaptive Server +" Anywhere (ASA). Test indenting was done with ASA stored procedures and +" fuctions and Oracle packages which contain stored procedures and +" functions. +" This has not been tested against Microsoft SQL Server or +" Sybase Adaptive Server Enterprise (ASE) which use the Transact-SQL +" syntax. That syntax does not have end tags for IF's, which makes +" indenting more difficult. +" +" Known Issues: +" The Oracle MERGE statement does not have an end tag associated with +" it, this can leave the indent hanging to the right one too many. +" +" History: +" 3.0 (Dec 2012) +" Added cpo check +" +" 2.0 +" Added the FOR keyword to SQLBlockStart to handle (Alec Tica): +" for i in 1..100 loop +" |<-- I expect to have indentation here +" end loop; +" + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 +let b:current_indent = "sqlanywhere" + +setlocal indentkeys-=0{ +setlocal indentkeys-=0} +setlocal indentkeys-=: +setlocal indentkeys-=0# +setlocal indentkeys-=e + +" This indicates formatting should take place when one of these +" expressions is used. These expressions would normally be something +" you would type at the BEGINNING of a line +" SQL is generally case insensitive, so this files assumes that +" These keywords are something that would trigger an indent LEFT, not +" an indent right, since the SQLBlockStart is used for those keywords +setlocal indentkeys+==~end,=~else,=~elseif,=~elsif,0=~when,0=) + +" GetSQLIndent is executed whenever one of the expressions +" in the indentkeys is typed +setlocal indentexpr=GetSQLIndent() + +" Only define the functions once. +if exists("*GetSQLIndent") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" List of all the statements that start a new block. +" These are typically words that start a line. +" IS is excluded, since it is difficult to determine when the +" ending block is (especially for procedures/functions). +let s:SQLBlockStart = '^\s*\%('. + \ 'if\|else\|elseif\|elsif\|'. + \ 'while\|loop\|do\|for\|'. + \ 'begin\|'. + \ 'case\|when\|merge\|exception'. + \ '\)\>' +let s:SQLBlockEnd = '^\s*\(end\)\>' + +" The indent level is also based on unmatched paranethesis +" If a line has an extra "(" increase the indent +" If a line has an extra ")" decrease the indent +function! s:CountUnbalancedParan( line, paran_to_check ) + let l = a:line + let lp = substitute(l, '[^(]', '', 'g') + let l = a:line + let rp = substitute(l, '[^)]', '', 'g') + + if a:paran_to_check =~ ')' + " echom 'CountUnbalancedParan ) returning: ' . + " \ (strlen(rp) - strlen(lp)) + return (strlen(rp) - strlen(lp)) + elseif a:paran_to_check =~ '(' + " echom 'CountUnbalancedParan ( returning: ' . + " \ (strlen(lp) - strlen(rp)) + return (strlen(lp) - strlen(rp)) + else + " echom 'CountUnbalancedParan unknown paran to check: ' . + " \ a:paran_to_check + return 0 + endif +endfunction + +" Unindent commands based on previous indent level +function! s:CheckToIgnoreRightParan( prev_lnum, num_levels ) + let lnum = a:prev_lnum + let line = getline(lnum) + let ends = 0 + let num_right_paran = a:num_levels + let ignore_paran = 0 + let vircol = 1 + + while num_right_paran > 0 + silent! exec 'norm! '.lnum."G\".vircol."\" + let right_paran = search( ')', 'W' ) + if right_paran != lnum + " This should not happen since there should be at least + " num_right_paran matches for this line + break + endif + let vircol = virtcol(".") + + " if getline(".") =~ '^)' + let matching_paran = searchpair('(', '', ')', 'bW', + \ 's:IsColComment(line("."), col("."))') + + if matching_paran < 1 + " No match found + " echom 'CTIRP - no match found, ignoring' + break + endif + + if matching_paran == lnum + " This was not an unmatched parantenses, start the search again + " again after this column + " echom 'CTIRP - same line match, ignoring' + continue + endif + + " echom 'CTIRP - match: ' . line(".") . ' ' . getline(".") + + if getline(matching_paran) =~? '\(if\|while\)\>' + " echom 'CTIRP - if/while ignored: ' . line(".") . ' ' . getline(".") + let ignore_paran = ignore_paran + 1 + endif + + " One match found, decrease and check for further matches + let num_right_paran = num_right_paran - 1 + + endwhile + + " Fallback - just move back one + " return a:prev_indent - &sw + return ignore_paran +endfunction + +" Based on the keyword provided, loop through previous non empty +" non comment lines to find the statement that initated the keyword. +" Return its indent level +" CASE .. +" WHEN ... +" Should return indent level of CASE +" EXCEPTION .. +" WHEN ... +" something; +" WHEN ... +" Should return indent level of exception. +function! s:GetStmtStarterIndent( keyword, curr_lnum ) + let lnum = a:curr_lnum + + " Default - reduce indent by 1 + let ind = indent(a:curr_lnum) - &sw + + if a:keyword =~? 'end' + exec 'normal! ^' + let stmts = '^\s*\%('. + \ '\\|' . + \ '\%(\%(\\)\|' . + \ '\%(\%(\\)\|' . + \ '\%(\%(\\)\|' . + \ '\%(\%(\\)'. + \ '\)' + let matching_lnum = searchpair(stmts, '', '\\zs', 'bW', + \ 's:IsColComment(line("."), col(".")) == 1') + exec 'normal! $' + if matching_lnum > 0 && matching_lnum < a:curr_lnum + let ind = indent(matching_lnum) + endif + elseif a:keyword =~? 'when' + exec 'normal! ^' + let matching_lnum = searchpair( + \ '\%(\\|\\|\', + \ '', + \ '\%(\%(\\)\|\%(\\)\)', + \ 'bW', + \ 's:IsColComment(line("."), col(".")) == 1') + exec 'normal! $' + if matching_lnum > 0 && matching_lnum < a:curr_lnum + let ind = indent(matching_lnum) + else + let ind = indent(a:curr_lnum) + endif + endif + + return ind +endfunction + + +" Check if the line is a comment +function! s:IsLineComment(lnum) + let rc = synIDattr( + \ synID(a:lnum, + \ match(getline(a:lnum), '\S')+1, 0) + \ , "name") + \ =~? "comment" + + return rc +endfunction + + +" Check if the column is a comment +function! s:IsColComment(lnum, cnum) + let rc = synIDattr(synID(a:lnum, a:cnum, 0), "name") + \ =~? "comment" + + return rc +endfunction + + +" Instead of returning a column position, return +" an appropriate value as a factor of shiftwidth. +function! s:ModuloIndent(ind) + let ind = a:ind + + if ind > 0 + let modulo = ind % &shiftwidth + + if modulo > 0 + let ind = ind - modulo + endif + endif + + return ind +endfunction + + +" Find correct indent of a new line based upon the previous line +function! GetSQLIndent() + let lnum = v:lnum + let ind = indent(lnum) + + " If the current line is a comment, leave the indent as is + " Comment out this additional check since it affects the + " indenting of =, and will not reindent comments as it should + " if s:IsLineComment(lnum) == 1 + " return ind + " endif + + " Get previous non-blank line + let prevlnum = prevnonblank(lnum - 1) + if prevlnum <= 0 + return ind + endif + + if s:IsLineComment(prevlnum) == 1 + if getline(v:lnum) =~ '^\s*\*' + let ind = s:ModuloIndent(indent(prevlnum)) + return ind + 1 + endif + " If the previous line is a comment, then return -1 + " to tell Vim to use the formatoptions setting to determine + " the indent to use + " But only if the next line is blank. This would be true if + " the user is typing, but it would not be true if the user + " is reindenting the file + if getline(v:lnum) =~ '^\s*$' + return -1 + endif + endif + + " echom 'PREVIOUS INDENT: ' . indent(prevlnum) . ' LINE: ' . getline(prevlnum) + + " This is the line you just hit return on, it is not the current line + " which is new and empty + " Based on this line, we can determine how much to indent the new + " line + + " Get default indent (from prev. line) + let ind = indent(prevlnum) + let prevline = getline(prevlnum) + + " Now check what's on the previous line to determine if the indent + " should be changed, for example IF, BEGIN, should increase the indent + " where END IF, END, should decrease the indent. + if prevline =~? s:SQLBlockStart + " Move indent in + let ind = ind + &sw + " echom 'prevl - SQLBlockStart - indent ' . ind . ' line: ' . prevline + elseif prevline =~ '[()]' + if prevline =~ '(' + let num_unmatched_left = s:CountUnbalancedParan( prevline, '(' ) + else + let num_unmatched_left = 0 + endif + if prevline =~ ')' + let num_unmatched_right = s:CountUnbalancedParan( prevline, ')' ) + else + let num_unmatched_right = 0 + " let num_unmatched_right = s:CountUnbalancedParan( prevline, ')' ) + endif + if num_unmatched_left > 0 + " There is a open left paranethesis + " increase indent + let ind = ind + ( &sw * num_unmatched_left ) + elseif num_unmatched_right > 0 + " if it is an unbalanced paranethesis only unindent if + " it was part of a command (ie create table(..) ) + " instead of part of an if (ie if (....) then) which should + " maintain the indent level + let ignore = s:CheckToIgnoreRightParan( prevlnum, num_unmatched_right ) + " echom 'prevl - ) unbalanced - CTIRP - ignore: ' . ignore + + if prevline =~ '^\s*)' + let ignore = ignore + 1 + " echom 'prevl - begins ) unbalanced ignore: ' . ignore + endif + + if (num_unmatched_right - ignore) > 0 + let ind = ind - ( &sw * (num_unmatched_right - ignore) ) + endif + + endif + endif + + + " echom 'CURRENT INDENT: ' . ind . ' LINE: ' . getline(v:lnum) + + " This is a new blank line since we just typed a carriage return + " Check current line; search for simplistic matching start-of-block + let line = getline(v:lnum) + + if line =~? '^\s*els' + " Any line when you type else will automatically back up one + " ident level (ie else, elseif, elsif) + let ind = ind - &sw + " echom 'curr - else - indent ' . ind + elseif line =~? '^\s*end\>' + let ind = s:GetStmtStarterIndent('end', v:lnum) + " General case for end + " let ind = ind - &sw + " echom 'curr - end - indent ' . ind + elseif line =~? '^\s*when\>' + let ind = s:GetStmtStarterIndent('when', v:lnum) + " If the WHEN clause is used with a MERGE or EXCEPTION + " clause, do not change the indent level, since these + " statements do not have a corresponding END statement. + " if stmt_starter =~? 'case' + " let ind = ind - &sw + " endif + " elseif line =~ '^\s*)\s*;\?\s*$' + " elseif line =~ '^\s*)' + elseif line =~ '^\s*)' + let num_unmatched_right = s:CountUnbalancedParan( line, ')' ) + let ignore = s:CheckToIgnoreRightParan( v:lnum, num_unmatched_right ) + " If the line ends in a ), then reduce the indent + " This catches items like: + " CREATE TABLE T1( + " c1 int, + " c2 int + " ); + " But we do not want to unindent a line like: + " IF ( c1 = 1 + " AND c2 = 3 ) THEN + " let num_unmatched_right = s:CountUnbalancedParan( line, ')' ) + " if num_unmatched_right > 0 + " elseif strpart( line, strlen(line)-1, 1 ) =~ ')' + " let ind = ind - &sw + if line =~ '^\s*)' + " let ignore = ignore + 1 + " echom 'curr - begins ) unbalanced ignore: ' . ignore + endif + + if (num_unmatched_right - ignore) > 0 + let ind = ind - ( &sw * (num_unmatched_right - ignore) ) + endif + " endif + endif + + " echom 'final - indent ' . ind + return s:ModuloIndent(ind) +endfunction + +" Restore: +let &cpo= s:keepcpo +unlet s:keepcpo +" vim: ts=4 fdm=marker sw=4 diff --git a/share/vim/vim73/indent/tcl.vim b/share/vim/vim74/indent/tcl.vim similarity index 100% rename from share/vim/vim73/indent/tcl.vim rename to share/vim/vim74/indent/tcl.vim diff --git a/share/vim/vim74/indent/tcsh.vim b/share/vim/vim74/indent/tcsh.vim new file mode 100644 index 00000000..59a9d56f --- /dev/null +++ b/share/vim/vim74/indent/tcsh.vim @@ -0,0 +1,49 @@ +" Vim indent file +" Language: C-shell (tcsh) +" Maintainer: GI , where a='gi1242+vim', b='gmail', c='com' +" Last Modified: Sat 10 Dec 2011 09:23:00 AM EST + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif + +let b:did_indent = 1 + +setlocal indentexpr=TcshGetIndent() +setlocal indentkeys+=e,0=end,0=endsw indentkeys-=0{,0},0),:,0# + +" Only define the function once. +if exists("*TcshGetIndent") + finish +endif + +function TcshGetIndent() + " Find a non-blank line above the current line. + let lnum = prevnonblank(v:lnum - 1) + + " Hit the start of the file, use zero indent. + if lnum == 0 + return 0 + endif + + " Add indent if previous line begins with while or foreach + " OR line ends with case :, default:, else, then or \ + let ind = indent(lnum) + let line = getline(lnum) + if line =~ '\v^\s*%(while|foreach)>|^\s*%(case\s.*:|default:|else)\s*$|%(' + let ind = ind - &sw + endif + + " Subtract indent if current line has on end, endif, case commands + let line = getline(v:lnum) + if line =~ '\v^\s*%(else|end|endif)\s*$' + let ind = ind - &sw + endif + + return ind +endfunction diff --git a/share/vim/vim74/indent/tex.vim b/share/vim/vim74/indent/tex.vim new file mode 100644 index 00000000..7e3a3510 --- /dev/null +++ b/share/vim/vim74/indent/tex.vim @@ -0,0 +1,295 @@ +" Vim indent file +" Language: LaTeX +" Maintainer: YiChao Zhou +" Created: Sat, 16 Feb 2002 16:50:19 +0100 +" Last Change: 2012 Mar 18 19:19:50 +" Version: 0.7 +" Please email me if you found something we can do. Bug report and +" feature request is welcome. + +" Last Update: {{{ +" 25th Sep 2002, by LH : +" (*) better support for the option +" (*) use some regex instead of several '||'. +" Oct 9th, 2003, by JT: +" (*) don't change indentation of lines starting with '%' +" 2005/06/15, Moshe Kaminsky +" (*) New variables: +" g:tex_items, g:tex_itemize_env, g:tex_noindent_env +" 2011/3/6, by Zhou YiChao +" (*) Don't change indentation of lines starting with '%' +" I don't see any code with '%' and it doesn't work properly +" so I add some code. +" (*) New features: Add smartindent-like indent for "{}" and "[]". +" (*) New variables: g:tex_indent_brace +" 2011/9/25, by Zhou Yichao +" (*) Bug fix: smartindent-like indent for "[]" +" (*) New features: Align with "&". +" (*) New variable: g:tex_indent_and. +" 2011/10/23 by Zhou Yichao +" (*) Bug fix: improve the smartindent-like indent for "{}" and +" "[]". +" 2012/02/27 by Zhou Yichao +" (*) Bug fix: support default folding marker. +" (*) Indent with "&" is not very handy. Make it not enable by +" default. +" 2012/03/06 by Zhou Yichao +" (*) Modify "&" behavior and make it default again. Now "&" +" won't align when there are more then one "&" in the previous +" line. +" (*) Add indent "\left(" and "\right)" +" (*) Trust user when in "verbatim" and "lstlisting" +" 2012/03/11 by Zhou Yichao +" (*) Modify "&" so that only indent when current line start with +" "&". +" 2012/03/12 by Zhou Yichao +" (*) Modify indentkeys. +" 2012/03/18 by Zhou Yichao +" (*) Add &cpo +" 2013/05/02 by Zhou Yichao +" (*) Fix problem about GetTeXIndent checker. Thank Albert Netymk +" for reporting this. +" }}} + +" Document: {{{ +" +" To set the following options (ok, currently it's just one), add a line like +" let g:tex_indent_items = 1 +" to your ~/.vimrc. +" +" * g:tex_indent_brace +" +" If this variable is unset or non-zero, it will use smartindent-like style +" for "{}" and "[]" +" +" * g:tex_indent_items +" +" If this variable is set, item-environments are indented like Emacs does +" it, i.e., continuation lines are indented with a shiftwidth. +" +" NOTE: I've already set the variable below; delete the corresponding line +" if you don't like this behaviour. +" +" Per default, it is unset. +" +" set unset +" ---------------------------------------------------------------- +" \begin{itemize} \begin{itemize} +" \item blablabla \item blablabla +" bla bla bla bla bla bla +" \item blablabla \item blablabla +" bla bla bla bla bla bla +" \end{itemize} \end{itemize} +" +" +" * g:tex_items +" +" A list of tokens to be considered as commands for the beginning of an item +" command. The tokens should be separated with '\|'. The initial '\' should +" be escaped. The default is '\\bibitem\|\\item'. +" +" * g:tex_itemize_env +" +" A list of environment names, separated with '\|', where the items (item +" commands matching g:tex_items) may appear. The default is +" 'itemize\|description\|enumerate\|thebibliography'. +" +" * g:tex_noindent_env +" +" A list of environment names. separated with '\|', where no indentation is +" required. The default is 'document\|verbatim'. +" +" * g:tex_indent_and +" +" If this variable is unset or zero, vim will try to align the line with first +" "&". This is pretty useful when you use environment like table or align. +" Note that this feature need to search back some line, so vim may become +" a little slow. +" +" }}} + +" Only define the function once +if exists("b:did_indent") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Define global variable {{{ + +let b:did_indent = 1 + +if !exists("g:tex_indent_items") + let g:tex_indent_items = 1 +endif +if !exists("g:tex_indent_brace") + let g:tex_indent_brace = 1 +endif +if !exists("g:tex_indent_and") + let g:tex_indent_and = 1 +endif +if g:tex_indent_items + if !exists("g:tex_itemize_env") + let g:tex_itemize_env = 'itemize\|description\|enumerate\|thebibliography' + endif + if !exists('g:tex_items') + let g:tex_items = '\\bibitem\|\\item' + endif +else + let g:tex_items = '' +endif + +if !exists("g:tex_indent_paretheses") + let g:tex_indent_paretheses = 1 +endif + +if !exists("g:tex_noindent_env") + let g:tex_noindent_env = 'document\|verbatim\|lstlisting' +endif "}}} + +" VIM Setting " {{{ +setlocal autoindent +setlocal nosmartindent +setlocal indentexpr=GetTeXIndent() +setlocal indentkeys& +exec 'setlocal indentkeys+=[,(,{,),},],\&' . substitute(g:tex_items, '^\|\(\\|\)', ',=', 'g') +let g:tex_items = '^\s*' . substitute(g:tex_items, '^\(\^\\s\*\)*', '', '') +" }}} + +function! GetTeXIndent() " {{{ + " Find a non-blank line above the current line. + let lnum = prevnonblank(v:lnum - 1) + + " Comment line is not what we need. + while lnum != 0 && getline(lnum) =~ '^\s*%' + let lnum = prevnonblank(lnum - 1) + endwhile + + " At the start of the file use zero indent. + if lnum == 0 + return 0 + endif + + let line = substitute(getline(lnum), '%.*', ' ','g') " last line + let cline = substitute(getline(v:lnum), '%.*', ' ', 'g') " current line + + " We are in verbatim, so do what our user what. + if synIDattr(synID(v:lnum, indent(v:lnum), 1), "name") == "texZone" + if empty(cline) + return indent(lnum) + else + return indent(v:lnum) + end + endif + + " You want to align with "&" + if g:tex_indent_and + " Align only when current line start with "&" + if line =~ '&.*\\\\' && cline =~ '^\s*&' + return indent(v:lnum) + stridx(line, "&") - stridx(cline, "&") + endif + + " set line & lnum to the line which doesn't contain "&" + while lnum != 0 && (stridx(line, "&") != -1 || line =~ '^\s*%') + let lnum = prevnonblank(lnum - 1) + let line = getline(lnum) + endwhile + endif + + + if lnum == 0 + return 0 + endif + + let ind = indent(lnum) + + " New code for comment: retain the indent of current line + if cline =~ '^\s*%' + return indent(v:lnum) + endif + + " Add a 'shiftwidth' after beginning of environments. + " Don't add it for \begin{document} and \begin{verbatim} + ""if line =~ '^\s*\\begin{\(.*\)}' && line !~ 'verbatim' + " LH modification : \begin does not always start a line + " ZYC modification : \end after \begin won't cause wrong indent anymore + if line =~ '\\begin{.*}' && line !~ g:tex_noindent_env + let ind = ind + &sw + + if g:tex_indent_items + " Add another sw for item-environments + if line =~ g:tex_itemize_env + let ind = ind + &sw + endif + endif + endif + + " Subtract a 'shiftwidth' when an environment ends + if cline =~ '\\end{.*}' && cline !~ g:tex_noindent_env + + if g:tex_indent_items + " Remove another sw for item-environments + if cline =~ g:tex_itemize_env + let ind = ind - &sw + endif + endif + + let ind = ind - &sw + endif + + if g:tex_indent_brace + let sum1 = 0 + for i in range(0, strlen(line)-1) + if line[i] == "}" || line[i] == "]" || + \ strpart(line, i, 7) == '\right)' + let sum1 = max([0, sum1-1]) + endif + if line[i] == "{" || line[i] == "[" || + \ strpart(line, i, 6) == '\left(' + let sum1 += 1 + endif + endfor + + let sum2 = 0 + for i in reverse(range(0, strlen(cline)-1)) + if cline[i] == "{" || cline[i] == "[" || + \ strpart(cline, i, 6) == '\left(' + let sum2 = max([0, sum2-1]) + endif + if cline[i] == "}" || cline[i] == "]" || + \ strpart(cline, i, 7) == '\right)' + let sum2 += 1 + endif + endfor + + let ind += (sum1 - sum2) * &sw + endif + + if g:tex_indent_paretheses + endif + + " Special treatment for 'item' + " ---------------------------- + + if g:tex_indent_items + + " '\item' or '\bibitem' itself: + if cline =~ g:tex_items + let ind = ind - &sw + endif + + " lines following to '\item' are intented once again: + if line =~ g:tex_items + let ind = ind + &sw + endif + + endif + + return ind +endfunction "}}} + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: set sw=4 textwidth=80: diff --git a/share/vim/vim73/indent/tf.vim b/share/vim/vim74/indent/tf.vim similarity index 100% rename from share/vim/vim73/indent/tf.vim rename to share/vim/vim74/indent/tf.vim diff --git a/share/vim/vim73/indent/tilde.vim b/share/vim/vim74/indent/tilde.vim similarity index 100% rename from share/vim/vim73/indent/tilde.vim rename to share/vim/vim74/indent/tilde.vim diff --git a/share/vim/vim74/indent/treetop.vim b/share/vim/vim74/indent/treetop.vim new file mode 100644 index 00000000..a2af78b8 --- /dev/null +++ b/share/vim/vim74/indent/treetop.vim @@ -0,0 +1,38 @@ +" Vim indent file +" Language: Treetop +" Maintainer: Nikolai Weibull +" Latest Revision: 2011-03-14 + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=GetTreetopIndent() +setlocal indentkeys=0{,0},!^F,o,O,=end +setlocal nosmartindent + +if exists("*GetTreetopIndent") + finish +endif + +function GetTreetopIndent() + let pnum = prevnonblank(v:lnum - 1) + if pnum == 0 + return 0 + endif + + let ind = indent(pnum) + let line = getline(pnum) + + if line =~ '^\s*\%(grammar\|module\|rule\)\>' + let ind += &sw + endif + + let line = getline(v:lnum) + if line =~ '^\s*end\>' + let ind -= &sw + end + + retur ind +endfunction diff --git a/share/vim/vim73/indent/vb.vim b/share/vim/vim74/indent/vb.vim similarity index 100% rename from share/vim/vim73/indent/vb.vim rename to share/vim/vim74/indent/vb.vim diff --git a/share/vim/vim74/indent/verilog.vim b/share/vim/vim74/indent/verilog.vim new file mode 100644 index 00000000..ecca4626 --- /dev/null +++ b/share/vim/vim74/indent/verilog.vim @@ -0,0 +1,223 @@ +" Language: Verilog HDL +" Maintainer: Chih-Tsun Huang +" Last Change: 2011 Dec 10 by Thilo Six +" URL: http://larc.ee.nthu.edu.tw/~cthuang/vim/indent/verilog.vim +" +" Credits: +" Suggestions for improvement, bug reports by +" Leo Butlero +" +" Buffer Variables: +" b:verilog_indent_modules : indenting after the declaration +" of module blocks +" b:verilog_indent_width : indenting width +" b:verilog_indent_verbose : verbose to each indenting +" + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=GetVerilogIndent() +setlocal indentkeys=!^F,o,O,0),=begin,=end,=join,=endcase +setlocal indentkeys+==endmodule,=endfunction,=endtask,=endspecify +setlocal indentkeys+==`else,=`endif + +" Only define the function once. +if exists("*GetVerilogIndent") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +function GetVerilogIndent() + + if exists('b:verilog_indent_width') + let offset = b:verilog_indent_width + else + let offset = &sw + endif + if exists('b:verilog_indent_modules') + let indent_modules = offset + else + let indent_modules = 0 + endif + + " Find a non-blank line above the current line. + let lnum = prevnonblank(v:lnum - 1) + + " At the start of the file use zero indent. + if lnum == 0 + return 0 + endif + + let lnum2 = prevnonblank(lnum - 1) + let curr_line = getline(v:lnum) + let last_line = getline(lnum) + let last_line2 = getline(lnum2) + let ind = indent(lnum) + let ind2 = indent(lnum - 1) + let offset_comment1 = 1 + " Define the condition of an open statement + " Exclude the match of //, /* or */ + let vlog_openstat = '\(\\|\([*/]\)\@<+-/%^&|!=?:]\([*/]\)\@!\)' + " Define the condition when the statement ends with a one-line comment + let vlog_comment = '\(//.*\|/\*.*\*/\s*\)' + if exists('b:verilog_indent_verbose') + let vverb_str = 'INDENT VERBOSE:' + let vverb = 1 + else + let vverb = 0 + endif + + " Indent accoding to last line + " End of multiple-line comment + if last_line =~ '\*/\s*$' && last_line !~ '/\*.\{-}\*/' + let ind = ind - offset_comment1 + if vverb + echo vverb_str "De-indent after a multiple-line comment." + endif + + " Indent after if/else/for/case/always/initial/specify/fork blocks + elseif last_line =~ '`\@' || + \ last_line =~ '^\s*\<\(for\|case\%[[zx]]\)\>' || + \ last_line =~ '^\s*\<\(always\|initial\)\>' || + \ last_line =~ '^\s*\<\(specify\|fork\)\>' + if last_line !~ '\(;\|\\)\s*' . vlog_comment . '*$' || + \ last_line =~ '\(//\|/\*\).*\(;\|\\)\s*' . vlog_comment . '*$' + let ind = ind + offset + if vverb | echo vverb_str "Indent after a block statement." | endif + endif + " Indent after function/task blocks + elseif last_line =~ '^\s*\<\(function\|task\)\>' + if last_line !~ '\\s*' . vlog_comment . '*$' || + \ last_line =~ '\(//\|/\*\).*\(;\|\\)\s*' . vlog_comment . '*$' + let ind = ind + offset + if vverb + echo vverb_str "Indent after function/task block statement." + endif + endif + + " Indent after module/function/task/specify/fork blocks + elseif last_line =~ '^\s*\' + let ind = ind + indent_modules + if vverb && indent_modules + echo vverb_str "Indent after module statement." + endif + if last_line =~ '[(,]\s*' . vlog_comment . '*$' && + \ last_line !~ '\(//\|/\*\).*[(,]\s*' . vlog_comment . '*$' + let ind = ind + offset + if vverb + echo vverb_str "Indent after a multiple-line module statement." + endif + endif + + " Indent after a 'begin' statement + elseif last_line =~ '\(\\)\(\s*:\s*\w\+\)*' . vlog_comment . '*$' && + \ last_line !~ '\(//\|/\*\).*\(\\)' && + \ ( last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$' || + \ last_line2 =~ '^\s*[^=!]\+\s*:\s*' . vlog_comment . '*$' ) + let ind = ind + offset + if vverb | echo vverb_str "Indent after begin statement." | endif + + " De-indent for the end of one-line block + elseif ( last_line !~ '\' || + \ last_line =~ '\(//\|/\*\).*\' ) && + \ last_line2 =~ '\<\(`\@.*' . + \ vlog_comment . '*$' && + \ last_line2 !~ + \ '\(//\|/\*\).*\<\(`\@' && + \ last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$' && + \ ( last_line2 !~ '\' || + \ last_line2 =~ '\(//\|/\*\).*\' ) + let ind = ind - offset + if vverb + echo vverb_str "De-indent after the end of one-line statement." + endif + + " Multiple-line statement (including case statement) + " Open statement + " Ident the first open line + elseif last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' && + \ last_line !~ '\(//\|/\*\).*' . vlog_openstat . '\s*$' && + \ last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$' + let ind = ind + offset + if vverb | echo vverb_str "Indent after an open statement." | endif + + " Close statement + " De-indent for an optional close parenthesis and a semicolon, and only + " if there exists precedent non-whitespace char + elseif last_line =~ ')*\s*;\s*' . vlog_comment . '*$' && + \ last_line !~ '^\s*)*\s*;\s*' . vlog_comment . '*$' && + \ last_line !~ '\(//\|/\*\).*\S)*\s*;\s*' . vlog_comment . '*$' && + \ ( last_line2 =~ vlog_openstat . '\s*' . vlog_comment . '*$' && + \ last_line2 !~ ';\s*//.*$') && + \ last_line2 !~ '^\s*' . vlog_comment . '$' + let ind = ind - offset + if vverb | echo vverb_str "De-indent after a close statement." | endif + + " `ifdef and `else + elseif last_line =~ '^\s*`\<\(ifdef\|else\)\>' + let ind = ind + offset + if vverb + echo vverb_str "Indent after a `ifdef or `else statement." + endif + + endif + + " Re-indent current line + + " De-indent on the end of the block + " join/end/endcase/endfunction/endtask/endspecify + if curr_line =~ '^\s*\<\(join\|end\|endcase\)\>' || + \ curr_line =~ '^\s*\<\(endfunction\|endtask\|endspecify\)\>' + let ind = ind - offset + if vverb | echo vverb_str "De-indent the end of a block." | endif + elseif curr_line =~ '^\s*\' + let ind = ind - indent_modules + if vverb && indent_modules + echo vverb_str "De-indent the end of a module." + endif + + " De-indent on a stand-alone 'begin' + elseif curr_line =~ '^\s*\' + if last_line !~ '^\s*\<\(function\|task\|specify\|module\)\>' && + \ last_line !~ '^\s*\()*\s*;\|)\+\)\s*' . vlog_comment . '*$' && + \ ( last_line =~ + \ '\<\(`\@' || + \ last_line =~ ')\s*' . vlog_comment . '*$' || + \ last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' ) + let ind = ind - offset + if vverb + echo vverb_str "De-indent a stand alone begin statement." + endif + endif + + " De-indent after the end of multiple-line statement + elseif curr_line =~ '^\s*)' && + \ ( last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' || + \ last_line !~ vlog_openstat . '\s*' . vlog_comment . '*$' && + \ last_line2 =~ vlog_openstat . '\s*' . vlog_comment . '*$' ) + let ind = ind - offset + if vverb + echo vverb_str "De-indent the end of a multiple statement." + endif + + " De-indent `else and `endif + elseif curr_line =~ '^\s*`\<\(else\|endif\)\>' + let ind = ind - offset + if vverb | echo vverb_str "De-indent `else and `endif statement." | endif + + endif + + " Return the indention + return ind +endfunction + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:sw=2 diff --git a/share/vim/vim74/indent/vhdl.vim b/share/vim/vim74/indent/vhdl.vim new file mode 100644 index 00000000..3e847b95 --- /dev/null +++ b/share/vim/vim74/indent/vhdl.vim @@ -0,0 +1,423 @@ +" VHDL indent ('93 syntax) +" Language: VHDL +" Maintainer: Gerald Lai +" Version: 1.58 +" Last Change: 2011 Sep 27 +" URL: http://www.vim.org/scripts/script.php?script_id=1450 + +" only load this indent file when no other was loaded +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +" setup indent options for local VHDL buffer +setlocal indentexpr=GetVHDLindent() +setlocal indentkeys=!^F,o,O,0(,0) +setlocal indentkeys+==~begin,=~end\ ,=~end\ ,=~is,=~select,=~when +setlocal indentkeys+==~if,=~then,=~elsif,=~else +setlocal indentkeys+==~case,=~loop,=~for,=~generate,=~record,=~units,=~process,=~block,=~function,=~component,=~procedure +setlocal indentkeys+==~architecture,=~configuration,=~entity,=~package + +" constants +" not a comment +let s:NC = '\%(--.*\)\@ 0 && prevs =~ '^\s*--' + let prevn = prevnonblank(prevn - 1) + let prevs = getline(prevn) + endwhile + let prevs_noi = substitute(prevs, '^\s*', '', '') + + " default indent starts as previous non-comment line's indent + let ind = prevn > 0 ? indent(prevn) : 0 + " backup default + let ind2 = ind + + " indent: special; kill string so it would not affect other filters + " keywords: "report" + string + " where: anywhere in current or previous line + let s0 = s:NC.'\\s*".*"' + if curs =~? s0 + let curs = "" + endif + if prevs =~? s0 + let prevs = "" + endif + + " indent: previous line's comment position, otherwise follow next non-comment line if possible + " keyword: "--" + " where: start of current line + if curs =~ '^\s*--' + let pn = curn - 1 + let ps = getline(pn) + if curs =~ '^\s*--\s' && ps =~ '--' + return indent(pn) + stridx(substitute(ps, '^\s*', '', ''), '--') + else + " find nextnonblank line that is not a comment + let nn = nextnonblank(curn + 1) + let ns = getline(nn) + while nn > 0 && ns =~ '^\s*--' + let nn = nextnonblank(nn + 1) + let ns = getline(nn) + endwhile + let n = indent(nn) + return n != -1 ? n : ind + endif + endif + + " **************************************************************************************** + " indent: align generic variables & port names + " keywords: "procedure" + name, "generic", "map", "port" + "(", provided current line is part of mapping + " where: anywhere in previous 2 lines + " find following previous non-comment line + let pn = prevnonblank(prevn - 1) + let ps = getline(pn) + while pn > 0 && ps =~ '^\s*--' + let pn = prevnonblank(pn - 1) + let ps = getline(pn) + endwhile + if (curs =~ '^\s*)' || curs =~? '^\s*\%(\<\%(procedure\|generic\|map\|port\)\>.*\)\@\s*\S\+\|:[^=]\@=\s*\%(\%(in\|out\|inout\|buffer\|linkage\)\>\|\w\+\s\+:=\)\)') && (prevs =~? s:NC.'\<\%(procedure\s\+\S\+\|generic\|map\|port\)\s*(\%(\s*\w\)\=' || (ps =~? s:NC.'\<\%(procedure\|generic\|map\|port\)'.s:ES && prevs =~ '^\s*(')) + " align closing ")" with opening "(" + if curs =~ '^\s*)' + return ind2 + stridx(prevs_noi, '(') + endif + let m = matchend(prevs_noi, '(\s*\ze\w') + if m != -1 + return ind2 + m + else + if g:vhdl_indent_genportmap + return ind2 + stridx(prevs_noi, '(') + &sw + else + return ind2 + &sw + endif + endif + endif + + " indent: align conditional/select statement + " keywords: variable + "<=" without ";" ending + " where: start of previous line + if prevs =~? '^\s*\S\+\s*<=[^;]*'.s:ES + if g:vhdl_indent_rhsassign + return ind2 + matchend(prevs_noi, '<=\s*\ze.') + else + return ind2 + &sw + endif + endif + + " indent: backtrace previous non-comment lines for next smaller or equal size indent + " keywords: "end" + "record", "units" + " where: start of previous line + " keyword: ")" + " where: start of previous line + " keyword: without "<=" + ";" ending + " where: anywhere in previous line + " keyword: "=>" + ")" ending, provided current line does not begin with ")" + " where: anywhere in previous line + " _note_: indent allowed to leave this filter + let m = 0 + if prevs =~? '^\s*end\s\+\%(record\|units\)\>' + let m = 3 + elseif prevs =~ '^\s*)' + let m = 1 + elseif prevs =~ s:NC.'\%(<=.*\)\@.*'.s:NC.')'.s:ES) + let m = 2 + endif + + if m > 0 + let pn = prevnonblank(prevn - 1) + let ps = getline(pn) + while pn > 0 + let t = indent(pn) + if ps !~ '^\s*--' && (t < ind || (t == ind && m == 3)) + " make sure one of these is true + " keywords: variable + "<=" without ";" ending + " where: start of previous non-comment line + " keywords: "procedure", "generic", "map", "port" + " where: anywhere in previous non-comment line + " keyword: "(" + " where: start of previous non-comment line + if m < 3 && ps !~? '^\s*\S\+\s*<=[^;]*'.s:ES + if ps =~? s:NC.'\<\%(procedure\|generic\|map\|port\)\>' || ps =~ '^\s*(' + let ind = t + endif + break + endif + let ind = t + if m > 1 + " find following previous non-comment line + let ppn = prevnonblank(pn - 1) + let pps = getline(ppn) + while ppn > 0 && pps =~ '^\s*--' + let ppn = prevnonblank(ppn - 1) + let pps = getline(ppn) + endwhile + " indent: follow + " keyword: "select" + " where: end of following previous non-comment line + " keyword: "type" + " where: start of following previous non-comment line + if m == 2 + let s1 = s:NC.'\' + " find previous opening statement of + " keywords: "architecture", "block", "entity", "function", "generate", "procedure", "process" + let s2 = s:NC.s:NE.'\<\%(architecture\|block\|entity\|function\|generate\|procedure\|process\)\>' + + let pn = prevnonblank(curn - 1) + let ps = getline(pn) + while pn > 0 && (ps =~ '^\s*--' || ps !~? s2) + let pn = prevnonblank(pn - 1) + let ps = getline(pn) + + if (ps =~? s:NC.'\') + return indent(pn) - &sw + endif + endwhile + + if (pn == 0) + return ind - &sw + else + return indent(pn) + endif + endif + + " indent: +sw if previous line is previous opening statement + " keywords: "record", "units" + " where: anywhere in current line + if curs =~? s:NC.s:NE.'\<\%(record\|units\)\>' + " find previous opening statement of + " keyword: "type" + let s3 = s:NC.s:NE.'\' + if curs !~? s3.'.*'.s:NC.'\<\%(record\|units\)\>.*'.s:ES && prevs =~? s3 + let ind = ind + &sw + endif + return ind + endif + + " **************************************************************************************** + " indent: 0 + " keywords: "architecture", "configuration", "entity", "library", "package" + " where: start of current line + if curs =~? '^\s*\%(architecture\|configuration\|entity\|library\|package\)\>' + return 0 + endif + + " indent: maintain indent of previous opening statement + " keyword: "is" + " where: start of current line + " find previous opening statement of + " keywords: "architecture", "block", "configuration", "entity", "function", "package", "procedure", "process", "type" + if curs =~? '^\s*\' && prevs =~? s:NC.s:NE.'\<\%(architecture\|block\|configuration\|entity\|function\|package\|procedure\|process\|type\)\>' + return ind2 + endif + + " indent: maintain indent of previous opening statement + " keyword: "then" + " where: start of current line + " find previous opening statement of + " keywords: "elsif", "if" + if curs =~? '^\s*\' && prevs =~? s:NC.'\%(\\|'.s:NE.'\\)' + return ind2 + endif + + " indent: maintain indent of previous opening statement + " keyword: "generate" + " where: start of current line + " find previous opening statement of + " keywords: "for", "if" + if curs =~? '^\s*\' && prevs =~? s:NC.s:NE.'\%(\%(\' + return ind2 + endif + + " indent: +sw + " keywords: "block", "process" + " removed: "begin", "case", "elsif", "if", "loop", "record", "units", "while" + " where: anywhere in previous line + if prevs =~? s:NC.s:NE.'\<\%(block\|process\)\>' + return ind + &sw + endif + + " indent: +sw + " keywords: "architecture", "configuration", "entity", "package" + " removed: "component", "for", "when", "with" + " where: start of previous line + if prevs =~? '^\s*\%(architecture\|configuration\|entity\|package\)\>' + return ind + &sw + endif + + " indent: +sw + " keyword: "select" + " removed: "generate", "is", "=>" + " where: end of previous line + if prevs =~? s:NC.'\" + " where: end of previous line + " _note_: indent allowed to leave this filter + if prevs =~? s:NC.'\%(\\|'.s:NE.'\<\%(loop\|record\|units\)\>\)' || prevs =~? '^\s*\%(component\|else\|for\)\>' || prevs =~? s:NC.'\%('.s:NE.'\\)'.s:ES + let ind = ind + &sw + endif + + " **************************************************************************************** + " indent: -sw + " keywords: "when", provided previous line does not begin with "when", does not end with "is" + " where: start of current line + let s4 = '^\s*when\>' + if curs =~? s4 + if prevs =~? s:NC.'\' + if prevs =~? '^\s*\%(elsif\|'.s5.'\)' + return ind + else + return ind - &sw + endif + endif + + " indent: backtrace previous non-comment lines + " keyword: "end" + "case", "component" + " where: start of current line + let m = 0 + if curs =~? '^\s*end\s\+case\>' + let m = 1 + elseif curs =~? '^\s*end\s\+component\>' + let m = 2 + endif + + if m > 0 + " find following previous non-comment line + let pn = prevn + let ps = getline(pn) + while pn > 0 + if ps !~ '^\s*--' + "indent: -2sw + "keywords: "end" + "case" + "where: start of previous non-comment line + "indent: -sw + "keywords: "when" + "where: start of previous non-comment line + "indent: follow + "keywords: "case" + "where: start of previous non-comment line + if m == 1 + if ps =~? '^\s*end\s\+case\>' + return indent(pn) - 2 * &sw + elseif ps =~? '^\s*when\>' + return indent(pn) - &sw + elseif ps =~? '^\s*case\>' + return indent(pn) + endif + "indent: follow + "keyword: "component" + "where: start of previous non-comment line + elseif m == 2 + if ps =~? '^\s*component\>' + return indent(pn) + endif + endif + endif + let pn = prevnonblank(pn - 1) + let ps = getline(pn) + endwhile + return ind - &sw + endif + + " indent: -sw + " keyword: ")" + " where: start of current line + if curs =~ '^\s*)' + return ind - &sw + endif + + " indent: 0 + " keywords: "end" + "architecture", "configuration", "entity", "package" + " where: start of current line + if curs =~? '^\s*end\s\+\%(architecture\|configuration\|entity\|package\)\>' + return 0 + endif + + " indent: -sw + " keywords: "end" + identifier, ";" + " where: start of current line + "if curs =~? '^\s*end\s\+\w\+\>' + if curs =~? '^\s*end\%(\s\|;'.s:ES.'\)' + return ind - &sw + endif + + " **************************************************************************************** + " indent: maintain indent of previous opening statement + " keywords: without "procedure", "generic", "map", "port" + ":" but not ":=" + "in", "out", "inout", "buffer", "linkage", variable & ":=" + " where: start of current line + if curs =~? '^\s*\%(\<\%(procedure\|generic\|map\|port\)\>.*\)\@\|\w\+\s\+:=\)' + return ind2 + endif + + " return leftover filtered indent + return ind +endfunction diff --git a/share/vim/vim74/indent/vim.vim b/share/vim/vim74/indent/vim.vim new file mode 100644 index 00000000..8c215733 --- /dev/null +++ b/share/vim/vim74/indent/vim.vim @@ -0,0 +1,99 @@ +" Vim indent file +" Language: Vim script +" Maintainer: Bram Moolenaar +" Last Change: 2012 Aug 02 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=GetVimIndent() +setlocal indentkeys+==end,=else,=cat,=fina,=END,0\\ + +let b:undo_indent = "setl indentkeys< indentexpr<" + +" Only define the function once. +if exists("*GetVimIndent") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +function GetVimIndent() + let ignorecase_save = &ignorecase + try + let &ignorecase = 0 + return GetVimIndentIntern() + finally + let &ignorecase = ignorecase_save + endtry +endfunc + +function GetVimIndentIntern() + " Find a non-blank line above the current line. + let lnum = prevnonblank(v:lnum - 1) + + " If the current line doesn't start with '\' and below a line that starts + " with '\', use the indent of the line above it. + if getline(v:lnum) !~ '^\s*\\' + while lnum > 0 && getline(lnum) =~ '^\s*\\' + let lnum = lnum - 1 + endwhile + endif + + " At the start of the file use zero indent. + if lnum == 0 + return 0 + endif + + " Add a 'shiftwidth' after :if, :while, :try, :catch, :finally, :function + " and :else. Add it three times for a line that starts with '\' after + " a line that doesn't (or g:vim_indent_cont if it exists). + let ind = indent(lnum) + if getline(v:lnum) =~ '^\s*\\' && v:lnum > 1 && getline(lnum) !~ '^\s*\\' + if exists("g:vim_indent_cont") + let ind = ind + g:vim_indent_cont + else + let ind = ind + &sw * 3 + endif + elseif getline(lnum) =~ '^\s*aug\%[roup]' && getline(lnum) !~ '^\s*aug\%[roup]\s*!\=\s\+END' + let ind = ind + &sw + else + let line = getline(lnum) + let i = match(line, '\(^\||\)\s*\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\%[lly]\|fu\%[nction]\|el\%[seif]\)\>') + if i >= 0 + let ind += &sw + if strpart(line, i, 1) == '|' && has('syntax_items') + \ && synIDattr(synID(lnum, i, 1), "name") =~ '\(Comment\|String\)$' + let ind -= &sw + endif + endif + endif + + " If the previous line contains an "end" after a pipe, but not in an ":au" + " command. And not when there is a backslash before the pipe. + " And when syntax HL is enabled avoid a match inside a string. + let line = getline(lnum) + let i = match(line, '[^\\]|\s*\(ene\@!\)') + if i > 0 && line !~ '^\s*au\%[tocmd]' + if !has('syntax_items') || synIDattr(synID(lnum, i + 2, 1), "name") !~ '\(Comment\|String\)$' + let ind = ind - &sw + endif + endif + + + " Subtract a 'shiftwidth' on a :endif, :endwhile, :catch, :finally, :endtry, + " :endfun, :else and :augroup END. + if getline(v:lnum) =~ '^\s*\(ene\@!\|cat\|fina\|el\|aug\%[roup]\s*!\=\s\+END\)' + let ind = ind - &sw + endif + + return ind +endfunction + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:sw=2 diff --git a/share/vim/vim73/indent/xf86conf.vim b/share/vim/vim74/indent/xf86conf.vim similarity index 100% rename from share/vim/vim73/indent/xf86conf.vim rename to share/vim/vim74/indent/xf86conf.vim diff --git a/share/vim/vim73/indent/xhtml.vim b/share/vim/vim74/indent/xhtml.vim similarity index 100% rename from share/vim/vim73/indent/xhtml.vim rename to share/vim/vim74/indent/xhtml.vim diff --git a/share/vim/vim74/indent/xinetd.vim b/share/vim/vim74/indent/xinetd.vim new file mode 100644 index 00000000..c8127237 --- /dev/null +++ b/share/vim/vim74/indent/xinetd.vim @@ -0,0 +1,55 @@ +" Vim indent file +" Language: xinetd.conf(5) configuration file +" Maintainer: Nikolai Weibull +" Latest Revision: 2006-12-20 + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=GetXinetdIndent() +setlocal indentkeys=0{,0},!^F,o,O +setlocal nosmartindent + +if exists("*GetXinetdIndent") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +function s:count_braces(lnum, count_open) + let n_open = 0 + let n_close = 0 + let line = getline(a:lnum) + let pattern = '[{}]' + let i = match(line, pattern) + while i != -1 + if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'ld\%(Comment\|String\)' + if line[i] == '{' + let n_open += 1 + elseif line[i] == '}' + if n_open > 0 + let n_open -= 1 + else + let n_close += 1 + endif + endif + endif + let i = match(line, pattern, i + 1) + endwhile + return a:count_open ? n_open : n_close +endfunction + +function GetXinetdIndent() + let pnum = prevnonblank(v:lnum - 1) + if pnum == 0 + return 0 + endif + + return indent(pnum) + s:count_braces(pnum, 1) * &sw + \ - s:count_braces(v:lnum, 0) * &sw +endfunction + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/indent/xml.vim b/share/vim/vim74/indent/xml.vim new file mode 100644 index 00000000..dbe5be5f --- /dev/null +++ b/share/vim/vim74/indent/xml.vim @@ -0,0 +1,107 @@ +" Language: xml +" Maintainer: Johannes Zellner +" Last Change: 2012 Jul 25 +" Notes: 1) does not indent pure non-xml code (e.g. embedded scripts) +" 2) will be confused by unbalanced tags in comments +" or CDATA sections. +" 2009-05-26 patch by Nikolai Weibull +" TODO: implement pre-like tags, see xml_indent_open / xml_indent_close + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 +let s:keepcpo= &cpo +set cpo&vim + +" [-- local settings (must come before aborting the script) --] +setlocal indentexpr=XmlIndentGet(v:lnum,1) +setlocal indentkeys=o,O,*,<>>,<<>,/,{,} + +if !exists('b:xml_indent_open') + let b:xml_indent_open = '.\{-}<\a' + " pre tag, e.g.
+ " let b:xml_indent_open = '.\{-}<[/]\@!\(address\)\@!' +endif + +if !exists('b:xml_indent_close') + let b:xml_indent_close = '.\{-} + " let b:xml_indent_close = '.\{-}XmlIndentWithPattern(line, pat) + let s = substitute('x'.a:line, a:pat, "\1", 'g') + return strlen(substitute(s, "[^\1].*$", '', '')) +endfun + +" [-- check if it's xml --] +fun! XmlIndentSynCheck(lnum) + if '' != &syntax + let syn1 = synIDattr(synID(a:lnum, 1, 1), 'name') + let syn2 = synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name') + if '' != syn1 && syn1 !~ 'xml' && '' != syn2 && syn2 !~ 'xml' + " don't indent pure non-xml code + return 0 + elseif syn1 =~ '^xmlComment' && syn2 =~ '^xmlComment' + " indent comments specially + return -1 + endif + endif + return 1 +endfun + +" [-- return the sum of indents of a:lnum --] +fun! XmlIndentSum(lnum, style, add) + let line = getline(a:lnum) + if a:style == match(line, '^\s*XmlIndentWithPattern(line, b:xml_indent_open) + \ - XmlIndentWithPattern(line, b:xml_indent_close) + \ - XmlIndentWithPattern(line, '.\{-}/>'))) + a:add + else + return a:add + endif +endfun + +fun! XmlIndentGet(lnum, use_syntax_check) + " Find a non-empty line above the current line. + let lnum = prevnonblank(a:lnum - 1) + + " Hit the start of the file, use zero indent. + if lnum == 0 + return 0 + endif + + if a:use_syntax_check + let check_lnum = XmlIndentSynCheck(lnum) + let check_alnum = XmlIndentSynCheck(a:lnum) + if 0 == check_lnum || 0 == check_alnum + return indent(a:lnum) + elseif -1 == check_lnum || -1 == check_alnum + return -1 + endif + endif + + let ind = XmlIndentSum(lnum, -1, indent(lnum)) + let ind = XmlIndentSum(a:lnum, 0, ind) + + return ind +endfun + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:ts=8 diff --git a/share/vim/vim73/indent/xsd.vim b/share/vim/vim74/indent/xsd.vim similarity index 100% rename from share/vim/vim73/indent/xsd.vim rename to share/vim/vim74/indent/xsd.vim diff --git a/share/vim/vim73/indent/xslt.vim b/share/vim/vim74/indent/xslt.vim similarity index 100% rename from share/vim/vim73/indent/xslt.vim rename to share/vim/vim74/indent/xslt.vim diff --git a/share/vim/vim73/indent/yacc.vim b/share/vim/vim74/indent/yacc.vim similarity index 100% rename from share/vim/vim73/indent/yacc.vim rename to share/vim/vim74/indent/yacc.vim diff --git a/share/vim/vim74/indent/yaml.vim b/share/vim/vim74/indent/yaml.vim new file mode 100644 index 00000000..1d037157 --- /dev/null +++ b/share/vim/vim74/indent/yaml.vim @@ -0,0 +1,132 @@ +" Vim indent file +" Language: YAML +" Maintainer: Nikolai Pavlov + +" Only load this indent file when no other was loaded. +if exists('b:did_indent') + finish +endif + +let s:save_cpo = &cpo +set cpo&vim + +let b:did_indent = 1 + +setlocal indentexpr=GetYAMLIndent(v:lnum) +setlocal indentkeys=!^F,o,O,0#,0},0],<:>,- +setlocal nosmartindent + +let b:undo_indent = 'setlocal indentexpr< indentkeys< smartindent<' + +" Only define the function once. +if exists('*GetYAMLIndent') + finish +endif + +if exists('*shiftwidth') + let s:shiftwidth = function('shiftwidth') +else + function s:shiftwidth() + return &shiftwidth + endfunction +endif + +function s:FindPrevLessIndentedLine(lnum, ...) + let prevlnum = prevnonblank(a:lnum-1) + let curindent = a:0 ? a:1 : indent(a:lnum) + while prevlnum + \&& indent(prevlnum) >= curindent + \&& getline(prevlnum) !~# '^\s*#' + let prevlnum = prevnonblank(prevlnum-1) + endwhile + return prevlnum +endfunction + +function s:FindPrevLEIndentedLineMatchingRegex(lnum, regex) + let plilnum = s:FindPrevLessIndentedLine(a:lnum, indent(a:lnum)+1) + while plilnum && getline(plilnum) !~# a:regex + let plilnum = s:FindPrevLessIndentedLine(plilnum) + endwhile + return plilnum +endfunction + +let s:mapkeyregex='\v^\s*%(\''%([^'']|'''')*\'''. + \ '|\"%([^"\\]|\\.)*\"'. + \ '|%(%(\:\ )@!.)*)\:%(\ |$)' +let s:liststartregex='\v^\s*%(\-%(\ |$))' + +function GetYAMLIndent(lnum) + if a:lnum == 1 || !prevnonblank(a:lnum-1) + return 0 + endif + + let prevlnum = prevnonblank(a:lnum-1) + let previndent = indent(prevlnum) + + let line = getline(a:lnum) + if line =~# '^\s*#' && getline(a:lnum-1) =~# '^\s*#' + " Comment blocks should have identical indent + return previndent + elseif line =~# '^\s*[\]}]' + " Lines containing only closing braces should have previous indent + return indent(s:FindPrevLessIndentedLine(a:lnum)) + endif + + " Ignore comment lines when calculating indent + while getline(prevlnum) =~# '^\s*#' + let prevlnum = prevnonblank(prevlnum-1) + if !prevlnum + return previndent + endif + endwhile + + let prevline = getline(prevlnum) + let previndent = indent(prevlnum) + + " Any examples below assume that shiftwidth=2 + if prevline =~# '\v[{[:]$|[:-]\ [|>][+\-]?%(\s+\#.*|\s*)$' + " Mapping key: + " nested mapping: ... + " + " - { + " key: [ + " list value + " ] + " } + " + " - |- + " Block scalar without indentation indicator + return previndent+s:shiftwidth() + elseif prevline =~# '\v[:-]\ [|>]%(\d+[+\-]?|[+\-]?\d+)%(\#.*|\s*)$' + " - |+2 + " block scalar with indentation indicator + "#^^ indent+2, not indent+shiftwidth + return previndent + str2nr(matchstr(prevline, + \'\v([:-]\ [|>])@<=[+\-]?\d+%([+\-]?%(\s+\#.*|\s*)$)@=')) + elseif prevline =~# '\v\"%([^"\\]|\\.)*\\$' + " "Multiline string \ + " with escaped end" + let qidx = match(prevline, '\v\"%([^"\\]|\\.)*\\') + return virtcol([prevlnum, qidx+1]) + elseif line =~# s:liststartregex + " List line should have indent equal to previous list line unless it was + " caught by one of the previous rules + return indent(s:FindPrevLEIndentedLineMatchingRegex(a:lnum, + \ s:liststartregex)) + elseif line =~# s:mapkeyregex + " Same for line containing mapping key + return indent(s:FindPrevLEIndentedLineMatchingRegex(a:lnum, + \ s:mapkeyregex)) + elseif prevline =~# '^\s*- ' + " - List with + " multiline scalar + return previndent+2 + elseif prevline =~# s:mapkeyregex + " Mapping with: value + " that is multiline scalar + return previndent+s:shiftwidth() + endif + return previndent +endfunction + +let &cpo = s:save_cpo diff --git a/share/vim/vim74/indent/zimbu.vim b/share/vim/vim74/indent/zimbu.vim new file mode 100644 index 00000000..9565b108 --- /dev/null +++ b/share/vim/vim74/indent/zimbu.vim @@ -0,0 +1,128 @@ +" Vim indent file +" Language: Zimbu +" Maintainer: Bram Moolenaar +" Last Change: 2012 Sep 08 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal ai nolisp nocin +setlocal indentexpr=GetZimbuIndent(v:lnum) +setlocal indentkeys=0{,0},!^F,o,O,0=ELSE,0=ELSEIF,0=CASE,0=DEFAULT,0=FINALLY + +" We impose recommended defaults: no Tabs, 'shiftwidth' = 2 +setlocal sw=2 et + +let b:undo_indent = "setl et< sw< ai< indentkeys< indentexpr=" + +" Only define the function once. +if exists("*GetZimbuIndent") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Come here when loading the script the first time. + +let s:maxoff = 50 " maximum number of lines to look backwards for () + +func GetZimbuIndent(lnum) + let prevLnum = prevnonblank(a:lnum - 1) + if prevLnum == 0 + " This is the first non-empty line, use zero indent. + return 0 + endif + + " Taken from Python indenting: + " If the previous line is inside parenthesis, use the indent of the starting + " line. + " Trick: use the non-existing "dummy" variable to break out of the loop when + " going too far back. + call cursor(prevLnum, 1) + let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW', + \ "line('.') < " . (prevLnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|String\\|Char\\)$'") + if parlnum > 0 + let plindent = indent(parlnum) + let plnumstart = parlnum + else + let plindent = indent(prevLnum) + let plnumstart = prevLnum + endif + + + " When inside parenthesis: If at the first line below the parenthesis add + " two 'shiftwidth', otherwise same as previous line. + " i = (a + " + b + " + c) + call cursor(a:lnum, 1) + let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', + \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|String\\|Char\\)$'") + if p > 0 + if p == prevLnum + " When the start is inside parenthesis, only indent one 'shiftwidth'. + let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', + \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|String\\|Char\\)$'") + if pp > 0 + return indent(prevLnum) + &sw + endif + return indent(prevLnum) + &sw * 2 + endif + if plnumstart == p + return indent(prevLnum) + endif + return plindent + endif + + let prevline = getline(prevLnum) + let thisline = getline(a:lnum) + + " If this line is not a comment and the previous one is then move the + " previous line further back. + if thisline !~ '^\s*#' + while prevline =~ '^\s*#' + let prevLnum = prevnonblank(prevLnum - 1) + if prevLnum == 0 + " Only comment lines before this, no indent + return 0 + endif + let prevline = getline(prevLnum) + let plindent = indent(prevLnum) + endwhile + endif + + if prevline =~ '^\s*\(IF\|\|ELSEIF\|ELSE\|GENERATE_IF\|\|GENERATE_ELSEIF\|GENERATE_ELSE\|WHILE\|REPEAT\|TRY\|CATCH\|FINALLY\|FOR\|DO\|SWITCH\|CASE\|DEFAULT\|FUNC\|VIRTUAL\|ABSTRACT\|DEFINE\|REPLACE\|FINAL\|PROC\|MAIN\|NEW\|ENUM\|CLASS\|INTERFACE\|BITS\|MODULE\|SHARED\)\>' + let plindent += &sw + endif + if thisline =~ '^\s*\(}\|ELSEIF\>\|ELSE\>\|CATCH\|FINALLY\|GENERATE_ELSEIF\>\|GENERATE_ELSE\>\|UNTIL\>\)' + let plindent -= &sw + endif + if thisline =~ '^\s*\(CASE\>\|DEFAULT\>\)' && prevline !~ '^\s*SWITCH\>' + let plindent -= &sw + endif + + " line up continued comment that started after some code + " String something # comment comment + " # comment + if a:lnum == prevLnum + 1 && thisline =~ '^\s*#' && prevline !~ '^\s*#' + let n = match(prevline, '#') + if n > 1 + let plindent = n + endif + endif + + return plindent +endfunc + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/indent/zsh.vim b/share/vim/vim74/indent/zsh.vim similarity index 100% rename from share/vim/vim73/indent/zsh.vim rename to share/vim/vim74/indent/zsh.vim diff --git a/share/vim/vim73/indoff.vim b/share/vim/vim74/indoff.vim similarity index 100% rename from share/vim/vim73/indoff.vim rename to share/vim/vim74/indoff.vim diff --git a/share/vim/vim73/keymap/README.txt b/share/vim/vim74/keymap/README.txt similarity index 100% rename from share/vim/vim73/keymap/README.txt rename to share/vim/vim74/keymap/README.txt diff --git a/share/vim/vim73/keymap/accents.vim b/share/vim/vim74/keymap/accents.vim similarity index 100% rename from share/vim/vim73/keymap/accents.vim rename to share/vim/vim74/keymap/accents.vim diff --git a/share/vim/vim73/keymap/arabic.vim b/share/vim/vim74/keymap/arabic.vim similarity index 100% rename from share/vim/vim73/keymap/arabic.vim rename to share/vim/vim74/keymap/arabic.vim diff --git a/share/vim/vim73/keymap/arabic_utf-8.vim b/share/vim/vim74/keymap/arabic_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/arabic_utf-8.vim rename to share/vim/vim74/keymap/arabic_utf-8.vim diff --git a/share/vim/vim74/keymap/belarusian-jcuken.vim b/share/vim/vim74/keymap/belarusian-jcuken.vim new file mode 100644 index 00000000..73c84aaa --- /dev/null +++ b/share/vim/vim74/keymap/belarusian-jcuken.vim @@ -0,0 +1,87 @@ +" Vim Keymap file for Belarusian characters, layout 'jcuken', classical variant +" Useful mainly with UTF-8, but may work with other encodings. + +" Derived From: russian-jcuken.vim +" Maintainer: Aliaksei Nestserau +" Last Changed: 2012 Jul 23 + +" All characters are given literally, conversion to another encoding (e.g., +" UTF-8) should work. +scriptencoding utf-8 + +let b:keymap_name = "by" + +loadkeymap +~ Ё CYRILLIC CAPITAL LETTER IO +` ё CYRILLIC SMALL LETTER IO +F А CYRILLIC CAPITAL LETTER A +< Б CYRILLIC CAPITAL LETTER BE +D В CYRILLIC CAPITAL LETTER VE +U Г CYRILLIC CAPITAL LETTER GHE +L Д CYRILLIC CAPITAL LETTER DE +T Е CYRILLIC CAPITAL LETTER IE +: Ж CYRILLIC CAPITAL LETTER ZHE +P З CYRILLIC CAPITAL LETTER ZE +B І CYRILLIC CAPITAL LETTER I +Q Й CYRILLIC CAPITAL LETTER SHORT I +R К CYRILLIC CAPITAL LETTER KA +K Л CYRILLIC CAPITAL LETTER EL +V М CYRILLIC CAPITAL LETTER EM +Y Н CYRILLIC CAPITAL LETTER EN +J О CYRILLIC CAPITAL LETTER O +G П CYRILLIC CAPITAL LETTER PE +H Р CYRILLIC CAPITAL LETTER ER +C С CYRILLIC CAPITAL LETTER ES +N Т CYRILLIC CAPITAL LETTER TE +E У CYRILLIC CAPITAL LETTER U +A Ф CYRILLIC CAPITAL LETTER EF +{ Х CYRILLIC CAPITAL LETTER HA +W Ц CYRILLIC CAPITAL LETTER TSE +X Ч CYRILLIC CAPITAL LETTER CHE +I Ш CYRILLIC CAPITAL LETTER SHA +O Ў CYRILLIC CAPITAL LETTER ASYLLABIC U +} ' APOSTROPHE +S Ы CYRILLIC CAPITAL LETTER YERU +M Ь CYRILLIC CAPITAL LETTER SOFT SIGN +\" Э CYRILLIC CAPITAL LETTER E +> Ю CYRILLIC CAPITAL LETTER YU +Z Я CYRILLIC CAPITAL LETTER YA +f а CYRILLIC SMALL LETTER A +, б CYRILLIC SMALL LETTER BE +d в CYRILLIC SMALL LETTER VE +u г CYRILLIC SMALL LETTER GHE +l д CYRILLIC SMALL LETTER DE +t е CYRILLIC SMALL LETTER IE +; ж CYRILLIC SMALL LETTER ZHE +p з CYRILLIC SMALL LETTER ZE +b і CYRILLIC SMALL LETTER I +q й CYRILLIC SMALL LETTER SHORT I +r к CYRILLIC SMALL LETTER KA +k л CYRILLIC SMALL LETTER EL +v м CYRILLIC SMALL LETTER EM +y н CYRILLIC SMALL LETTER EN +j о CYRILLIC SMALL LETTER O +g п CYRILLIC SMALL LETTER PE +h р CYRILLIC SMALL LETTER ER +c с CYRILLIC SMALL LETTER ES +n т CYRILLIC SMALL LETTER TE +e у CYRILLIC SMALL LETTER U +a ф CYRILLIC SMALL LETTER EF +[ х CYRILLIC SMALL LETTER HA +w ц CYRILLIC SMALL LETTER TSE +x ч CYRILLIC SMALL LETTER CHE +i ш CYRILLIC SMALL LETTER SHA +o ў CYRILLIC SMALL LETTER ASYLLABIC U +] ' APOSTROPHE +s ы CYRILLIC SMALL LETTER YERU +m ь CYRILLIC SMALL LETTER SOFT SIGN +' э CYRILLIC SMALL LETTER E +. ю CYRILLIC SMALL LETTER YU +z я CYRILLIC SMALL LETTER YA +@ " +# ' +$ * +% : +^ , +& . +* ; diff --git a/share/vim/vim73/keymap/bulgarian-bds.vim b/share/vim/vim74/keymap/bulgarian-bds.vim similarity index 100% rename from share/vim/vim73/keymap/bulgarian-bds.vim rename to share/vim/vim74/keymap/bulgarian-bds.vim diff --git a/share/vim/vim73/keymap/bulgarian-phonetic.vim b/share/vim/vim74/keymap/bulgarian-phonetic.vim similarity index 100% rename from share/vim/vim73/keymap/bulgarian-phonetic.vim rename to share/vim/vim74/keymap/bulgarian-phonetic.vim diff --git a/share/vim/vim73/keymap/canfr-win.vim b/share/vim/vim74/keymap/canfr-win.vim similarity index 100% rename from share/vim/vim73/keymap/canfr-win.vim rename to share/vim/vim74/keymap/canfr-win.vim diff --git a/share/vim/vim73/keymap/croatian.vim b/share/vim/vim74/keymap/croatian.vim similarity index 100% rename from share/vim/vim73/keymap/croatian.vim rename to share/vim/vim74/keymap/croatian.vim diff --git a/share/vim/vim73/keymap/croatian_cp1250.vim b/share/vim/vim74/keymap/croatian_cp1250.vim similarity index 100% rename from share/vim/vim73/keymap/croatian_cp1250.vim rename to share/vim/vim74/keymap/croatian_cp1250.vim diff --git a/share/vim/vim73/keymap/croatian_iso-8859-2.vim b/share/vim/vim74/keymap/croatian_iso-8859-2.vim similarity index 100% rename from share/vim/vim73/keymap/croatian_iso-8859-2.vim rename to share/vim/vim74/keymap/croatian_iso-8859-2.vim diff --git a/share/vim/vim73/keymap/croatian_utf-8.vim b/share/vim/vim74/keymap/croatian_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/croatian_utf-8.vim rename to share/vim/vim74/keymap/croatian_utf-8.vim diff --git a/share/vim/vim73/keymap/czech.vim b/share/vim/vim74/keymap/czech.vim similarity index 100% rename from share/vim/vim73/keymap/czech.vim rename to share/vim/vim74/keymap/czech.vim diff --git a/share/vim/vim73/keymap/czech_utf-8.vim b/share/vim/vim74/keymap/czech_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/czech_utf-8.vim rename to share/vim/vim74/keymap/czech_utf-8.vim diff --git a/share/vim/vim73/keymap/dvorak.vim b/share/vim/vim74/keymap/dvorak.vim similarity index 100% rename from share/vim/vim73/keymap/dvorak.vim rename to share/vim/vim74/keymap/dvorak.vim diff --git a/share/vim/vim73/keymap/esperanto.vim b/share/vim/vim74/keymap/esperanto.vim similarity index 100% rename from share/vim/vim73/keymap/esperanto.vim rename to share/vim/vim74/keymap/esperanto.vim diff --git a/share/vim/vim73/keymap/esperanto_utf-8.vim b/share/vim/vim74/keymap/esperanto_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/esperanto_utf-8.vim rename to share/vim/vim74/keymap/esperanto_utf-8.vim diff --git a/share/vim/vim73/keymap/greek.vim b/share/vim/vim74/keymap/greek.vim similarity index 100% rename from share/vim/vim73/keymap/greek.vim rename to share/vim/vim74/keymap/greek.vim diff --git a/share/vim/vim73/keymap/greek_cp1253.vim b/share/vim/vim74/keymap/greek_cp1253.vim similarity index 100% rename from share/vim/vim73/keymap/greek_cp1253.vim rename to share/vim/vim74/keymap/greek_cp1253.vim diff --git a/share/vim/vim73/keymap/greek_cp737.vim b/share/vim/vim74/keymap/greek_cp737.vim similarity index 100% rename from share/vim/vim73/keymap/greek_cp737.vim rename to share/vim/vim74/keymap/greek_cp737.vim diff --git a/share/vim/vim73/keymap/greek_iso-8859-7.vim b/share/vim/vim74/keymap/greek_iso-8859-7.vim similarity index 100% rename from share/vim/vim73/keymap/greek_iso-8859-7.vim rename to share/vim/vim74/keymap/greek_iso-8859-7.vim diff --git a/share/vim/vim73/keymap/greek_utf-8.vim b/share/vim/vim74/keymap/greek_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/greek_utf-8.vim rename to share/vim/vim74/keymap/greek_utf-8.vim diff --git a/share/vim/vim73/keymap/hebrew.vim b/share/vim/vim74/keymap/hebrew.vim similarity index 100% rename from share/vim/vim73/keymap/hebrew.vim rename to share/vim/vim74/keymap/hebrew.vim diff --git a/share/vim/vim73/keymap/hebrew_cp1255.vim b/share/vim/vim74/keymap/hebrew_cp1255.vim similarity index 100% rename from share/vim/vim73/keymap/hebrew_cp1255.vim rename to share/vim/vim74/keymap/hebrew_cp1255.vim diff --git a/share/vim/vim73/keymap/hebrew_iso-8859-8.vim b/share/vim/vim74/keymap/hebrew_iso-8859-8.vim similarity index 100% rename from share/vim/vim73/keymap/hebrew_iso-8859-8.vim rename to share/vim/vim74/keymap/hebrew_iso-8859-8.vim diff --git a/share/vim/vim73/keymap/hebrew_utf-8.vim b/share/vim/vim74/keymap/hebrew_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/hebrew_utf-8.vim rename to share/vim/vim74/keymap/hebrew_utf-8.vim diff --git a/share/vim/vim73/keymap/hebrewp.vim b/share/vim/vim74/keymap/hebrewp.vim similarity index 100% rename from share/vim/vim73/keymap/hebrewp.vim rename to share/vim/vim74/keymap/hebrewp.vim diff --git a/share/vim/vim73/keymap/hebrewp_cp1255.vim b/share/vim/vim74/keymap/hebrewp_cp1255.vim similarity index 100% rename from share/vim/vim73/keymap/hebrewp_cp1255.vim rename to share/vim/vim74/keymap/hebrewp_cp1255.vim diff --git a/share/vim/vim73/keymap/hebrewp_iso-8859-8.vim b/share/vim/vim74/keymap/hebrewp_iso-8859-8.vim similarity index 100% rename from share/vim/vim73/keymap/hebrewp_iso-8859-8.vim rename to share/vim/vim74/keymap/hebrewp_iso-8859-8.vim diff --git a/share/vim/vim73/keymap/hebrewp_utf-8.vim b/share/vim/vim74/keymap/hebrewp_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/hebrewp_utf-8.vim rename to share/vim/vim74/keymap/hebrewp_utf-8.vim diff --git a/share/vim/vim73/keymap/kana.vim b/share/vim/vim74/keymap/kana.vim similarity index 100% rename from share/vim/vim73/keymap/kana.vim rename to share/vim/vim74/keymap/kana.vim diff --git a/share/vim/vim73/keymap/lithuanian-baltic.vim b/share/vim/vim74/keymap/lithuanian-baltic.vim similarity index 100% rename from share/vim/vim73/keymap/lithuanian-baltic.vim rename to share/vim/vim74/keymap/lithuanian-baltic.vim diff --git a/share/vim/vim73/keymap/magyar_utf-8.vim b/share/vim/vim74/keymap/magyar_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/magyar_utf-8.vim rename to share/vim/vim74/keymap/magyar_utf-8.vim diff --git a/share/vim/vim73/keymap/mongolian_utf-8.vim b/share/vim/vim74/keymap/mongolian_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/mongolian_utf-8.vim rename to share/vim/vim74/keymap/mongolian_utf-8.vim diff --git a/share/vim/vim73/keymap/persian-iranian_utf-8.vim b/share/vim/vim74/keymap/persian-iranian_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/persian-iranian_utf-8.vim rename to share/vim/vim74/keymap/persian-iranian_utf-8.vim diff --git a/share/vim/vim73/keymap/persian.vim b/share/vim/vim74/keymap/persian.vim similarity index 100% rename from share/vim/vim73/keymap/persian.vim rename to share/vim/vim74/keymap/persian.vim diff --git a/share/vim/vim73/keymap/pinyin.vim b/share/vim/vim74/keymap/pinyin.vim similarity index 100% rename from share/vim/vim73/keymap/pinyin.vim rename to share/vim/vim74/keymap/pinyin.vim diff --git a/share/vim/vim73/keymap/polish-slash.vim b/share/vim/vim74/keymap/polish-slash.vim similarity index 100% rename from share/vim/vim73/keymap/polish-slash.vim rename to share/vim/vim74/keymap/polish-slash.vim diff --git a/share/vim/vim73/keymap/polish-slash_cp1250.vim b/share/vim/vim74/keymap/polish-slash_cp1250.vim similarity index 100% rename from share/vim/vim73/keymap/polish-slash_cp1250.vim rename to share/vim/vim74/keymap/polish-slash_cp1250.vim diff --git a/share/vim/vim73/keymap/polish-slash_cp852.vim b/share/vim/vim74/keymap/polish-slash_cp852.vim similarity index 100% rename from share/vim/vim73/keymap/polish-slash_cp852.vim rename to share/vim/vim74/keymap/polish-slash_cp852.vim diff --git a/share/vim/vim73/keymap/polish-slash_iso-8859-2.vim b/share/vim/vim74/keymap/polish-slash_iso-8859-2.vim similarity index 100% rename from share/vim/vim73/keymap/polish-slash_iso-8859-2.vim rename to share/vim/vim74/keymap/polish-slash_iso-8859-2.vim diff --git a/share/vim/vim73/keymap/polish-slash_utf-8.vim b/share/vim/vim74/keymap/polish-slash_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/polish-slash_utf-8.vim rename to share/vim/vim74/keymap/polish-slash_utf-8.vim diff --git a/share/vim/vim73/keymap/russian-dvorak.vim b/share/vim/vim74/keymap/russian-dvorak.vim similarity index 100% rename from share/vim/vim73/keymap/russian-dvorak.vim rename to share/vim/vim74/keymap/russian-dvorak.vim diff --git a/share/vim/vim73/keymap/russian-jcuken.vim b/share/vim/vim74/keymap/russian-jcuken.vim similarity index 100% rename from share/vim/vim73/keymap/russian-jcuken.vim rename to share/vim/vim74/keymap/russian-jcuken.vim diff --git a/share/vim/vim73/keymap/russian-jcukenwin.vim b/share/vim/vim74/keymap/russian-jcukenwin.vim similarity index 100% rename from share/vim/vim73/keymap/russian-jcukenwin.vim rename to share/vim/vim74/keymap/russian-jcukenwin.vim diff --git a/share/vim/vim73/keymap/russian-yawerty.vim b/share/vim/vim74/keymap/russian-yawerty.vim similarity index 100% rename from share/vim/vim73/keymap/russian-yawerty.vim rename to share/vim/vim74/keymap/russian-yawerty.vim diff --git a/share/vim/vim73/keymap/serbian-latin.vim b/share/vim/vim74/keymap/serbian-latin.vim similarity index 100% rename from share/vim/vim73/keymap/serbian-latin.vim rename to share/vim/vim74/keymap/serbian-latin.vim diff --git a/share/vim/vim73/keymap/serbian-latin_utf-8.vim b/share/vim/vim74/keymap/serbian-latin_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/serbian-latin_utf-8.vim rename to share/vim/vim74/keymap/serbian-latin_utf-8.vim diff --git a/share/vim/vim73/keymap/serbian.vim b/share/vim/vim74/keymap/serbian.vim similarity index 100% rename from share/vim/vim73/keymap/serbian.vim rename to share/vim/vim74/keymap/serbian.vim diff --git a/share/vim/vim73/keymap/serbian_cp1250.vim b/share/vim/vim74/keymap/serbian_cp1250.vim similarity index 100% rename from share/vim/vim73/keymap/serbian_cp1250.vim rename to share/vim/vim74/keymap/serbian_cp1250.vim diff --git a/share/vim/vim73/keymap/serbian_cp1251.vim b/share/vim/vim74/keymap/serbian_cp1251.vim similarity index 100% rename from share/vim/vim73/keymap/serbian_cp1251.vim rename to share/vim/vim74/keymap/serbian_cp1251.vim diff --git a/share/vim/vim73/keymap/serbian_iso-8859-2.vim b/share/vim/vim74/keymap/serbian_iso-8859-2.vim similarity index 100% rename from share/vim/vim73/keymap/serbian_iso-8859-2.vim rename to share/vim/vim74/keymap/serbian_iso-8859-2.vim diff --git a/share/vim/vim73/keymap/serbian_iso-8859-5.vim b/share/vim/vim74/keymap/serbian_iso-8859-5.vim similarity index 100% rename from share/vim/vim73/keymap/serbian_iso-8859-5.vim rename to share/vim/vim74/keymap/serbian_iso-8859-5.vim diff --git a/share/vim/vim73/keymap/serbian_utf-8.vim b/share/vim/vim74/keymap/serbian_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/serbian_utf-8.vim rename to share/vim/vim74/keymap/serbian_utf-8.vim diff --git a/share/vim/vim73/keymap/sinhala-phonetic_utf-8.vim b/share/vim/vim74/keymap/sinhala-phonetic_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/sinhala-phonetic_utf-8.vim rename to share/vim/vim74/keymap/sinhala-phonetic_utf-8.vim diff --git a/share/vim/vim73/keymap/sinhala.vim b/share/vim/vim74/keymap/sinhala.vim similarity index 100% rename from share/vim/vim73/keymap/sinhala.vim rename to share/vim/vim74/keymap/sinhala.vim diff --git a/share/vim/vim73/keymap/slovak.vim b/share/vim/vim74/keymap/slovak.vim similarity index 100% rename from share/vim/vim73/keymap/slovak.vim rename to share/vim/vim74/keymap/slovak.vim diff --git a/share/vim/vim73/keymap/slovak_cp1250.vim b/share/vim/vim74/keymap/slovak_cp1250.vim similarity index 100% rename from share/vim/vim73/keymap/slovak_cp1250.vim rename to share/vim/vim74/keymap/slovak_cp1250.vim diff --git a/share/vim/vim73/keymap/slovak_iso-8859-2.vim b/share/vim/vim74/keymap/slovak_iso-8859-2.vim similarity index 100% rename from share/vim/vim73/keymap/slovak_iso-8859-2.vim rename to share/vim/vim74/keymap/slovak_iso-8859-2.vim diff --git a/share/vim/vim73/keymap/slovak_utf-8.vim b/share/vim/vim74/keymap/slovak_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/slovak_utf-8.vim rename to share/vim/vim74/keymap/slovak_utf-8.vim diff --git a/share/vim/vim73/keymap/tamil_tscii.vim b/share/vim/vim74/keymap/tamil_tscii.vim similarity index 100% rename from share/vim/vim73/keymap/tamil_tscii.vim rename to share/vim/vim74/keymap/tamil_tscii.vim diff --git a/share/vim/vim73/keymap/thaana-phonetic_utf-8.vim b/share/vim/vim74/keymap/thaana-phonetic_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/thaana-phonetic_utf-8.vim rename to share/vim/vim74/keymap/thaana-phonetic_utf-8.vim diff --git a/share/vim/vim73/keymap/thaana.vim b/share/vim/vim74/keymap/thaana.vim similarity index 100% rename from share/vim/vim73/keymap/thaana.vim rename to share/vim/vim74/keymap/thaana.vim diff --git a/share/vim/vim73/keymap/ukrainian-dvorak.vim b/share/vim/vim74/keymap/ukrainian-dvorak.vim similarity index 100% rename from share/vim/vim73/keymap/ukrainian-dvorak.vim rename to share/vim/vim74/keymap/ukrainian-dvorak.vim diff --git a/share/vim/vim73/keymap/ukrainian-jcuken.vim b/share/vim/vim74/keymap/ukrainian-jcuken.vim similarity index 100% rename from share/vim/vim73/keymap/ukrainian-jcuken.vim rename to share/vim/vim74/keymap/ukrainian-jcuken.vim diff --git a/share/vim/vim73/keymap/vietnamese-viqr_utf-8.vim b/share/vim/vim74/keymap/vietnamese-viqr_utf-8.vim similarity index 100% rename from share/vim/vim73/keymap/vietnamese-viqr_utf-8.vim rename to share/vim/vim74/keymap/vietnamese-viqr_utf-8.vim diff --git a/share/vim/vim73/lang/README.txt b/share/vim/vim74/lang/README.txt similarity index 100% rename from share/vim/vim73/lang/README.txt rename to share/vim/vim74/lang/README.txt diff --git a/share/vim/vim73/lang/menu_af.latin1.vim b/share/vim/vim74/lang/menu_af.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_af.latin1.vim rename to share/vim/vim74/lang/menu_af.latin1.vim diff --git a/share/vim/vim73/lang/menu_af.utf-8.vim b/share/vim/vim74/lang/menu_af.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_af.utf-8.vim rename to share/vim/vim74/lang/menu_af.utf-8.vim diff --git a/share/vim/vim74/lang/menu_af_af.latin1.vim b/share/vim/vim74/lang/menu_af_af.latin1.vim new file mode 100644 index 00000000..46331e7a --- /dev/null +++ b/share/vim/vim74/lang/menu_af_af.latin1.vim @@ -0,0 +1,157 @@ +" Menu Translations: Afrikaas +" Maintainer: Danie Roux +" Last Change: 2012 May 01 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" The translations below are in latin1, but they work for cp1252 and +" iso-8859-15 without conversion as well. +if &enc != "cp1252" && &enc != "iso-8859-15" + scriptencoding latin1 +endif + + +" Help menu +menutrans &Help &Hulp +menutrans &Overview &Oorsig +menutrans &How-to\ links &How-to\ Indeks +"menutrans &GUI &GUI +menutrans &Credits &Met\ dank\ aan +menutrans Co&pying &Kopiereg +menutrans &Find\.\.\. &Soek\.\.\. +menutrans &Version &Weergawe +menutrans &About &Inleiding\ skerm + +" File menu +menutrans &File &Lêer +menutrans &Open\.\.\.:e &Open\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Maak\ oop\ in\ nuwe\ &venster\.\.\.:sp +menutrans &New:enew &Nuut:enew +menutrans &Close:close Maak\ &Toe:close +menutrans &Save:w &Skryf:w +menutrans Save\ &As\.\.\.:w Skryf\ &as\.\.\.:w +menutrans &Print &Druk +menutrans Sa&ve-Exit:wqa Skryf\ en\ verlaat:wqa +menutrans E&xit:qa &Verlaat:qa + +" Edit menu +menutrans &Edit &Wysig +menutrans &Undou Terugu +menutrans &Redo^R Voo&ruit^R +menutrans Rep&eat\. &Herhaal\. +menutrans Cu&t"+x &Knip"+x +menutrans &Copy"+y &Kopiëer"+y +menutrans &Paste"+gP Plak"+gP +menutrans Put\ &Before[p Voeg\ &Voor\ in[p +menutrans Put\ &After]p Voeg\ A>er\ in]p +menutrans &Select\ allggVG Kies\ &AllesggVG +menutrans &Find\.\.\. &Soek\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Soek\ en\ Vervang\.\.\. +menutrans Options\.\.\. Opsies\.\.\. + +" Programming menu +menutrans &Tools &Gereedskap +menutrans &Jump\ to\ this\ tagg^] &Spring\ na\ Etiketg^] +menutrans Jump\ &back^T Spring\ &Terug^T +menutrans Build\ &Tags\ File Genereer\ &Etiket\ Leêr +menutrans &Make:make Voer\ &Make\ uit:make +menutrans &List\ Errors:cl &Foutlys:cl +menutrans L&ist\ Messages:cl! &Boodskaplys:cl! +menutrans &Next\ Error:cn Volgende\ Fout:cn +menutrans &Previous\ Error:cp Vorige\ Fout:cp +menutrans &Older\ List:cold &Ouer\ Lys:cold +menutrans N&ewer\ List:cnew &Nuwer\ Lys:cnew +menutrans Error\ &Window:cwin Foute\ Venster:cwin +menutrans Convert\ to\ HEX:%!xxd Verwissel\ na\ HEX:%!xxd +menutrans Convert\ back:%!xxd\ -r Verwissel\ terug:%!xxd\ -r + +" Names for buffer menu. +menutrans &Buffers &Buffers +menutrans Refresh Verfris +menutrans Delete Verwyder +menutrans Alternate Vorige +menutrans [No\ File] [Geen\ Leêr] + +" Window menu +menutrans &Window &Venster +menutrans &New^Wn &Nuut^Wn +menutrans S&plit^Ws Ver&deel^Ws +menutrans Sp&lit\ To\ #^W^^ Verdeel\ N&a\ #^W^^ +menutrans Split\ &Vertically^Wv Verdeel\ Vertikaal^Wv +menutrans &Close^Wc &Maak\ toe^Wc +menutrans Close\ &Other(s)^Wo Maak\ &Ander\ Toe^Wo +menutrans Ne&xt^Ww Volgende^Ww +menutrans P&revious^WW &Vorige^WW +menutrans &Equal\ Size^W= &Gelyke\ hoogte^W= +menutrans &Max\ Height^W_ &Maksimale\ hoogte^W_ +menutrans M&in\ Height^W1_ Mi&nimale\ hoogte^W1_ +menutrans Max\ Width^W\| Maksimale\ breedte^W\| +menutrans Min\ Width^W1\| Minimale\ breedte^W1\| +menutrans Rotate\ &Up^WR Roteer\ na\ &bo^WR +menutrans Rotate\ &Down^Wr Roteer\ na\ &onder^Wr +menutrans Select\ Fo&nt\.\.\. Kies\ font\.\.\. + +" The popup menu +menutrans &Undo &Terug +menutrans Cu&t Knip +menutrans &Copy &Kopiëer +menutrans &Paste &Plak +menutrans &Delete &Verwyder +menutrans Select\ Blockwise Kies\ per\ Blok +menutrans Select\ &Word Kies\ een\ &Woord +menutrans Select\ &Line Kies\ een\ &Reël +menutrans Select\ &Block Kies\ een\ &Blok +menutrans Select\ &All Kies\ &Alles + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Maak leêr oop + tmenu ToolBar.Save Skryf leêr + tmenu ToolBar.SaveAll Skryf alle leêrs + tmenu ToolBar.Print Druk + tmenu ToolBar.Undo Terug + tmenu ToolBar.Redo Vooruit + tmenu ToolBar.Cut Knip + tmenu ToolBar.Copy Kopiëer + tmenu ToolBar.Paste Plak + tmenu ToolBar.Find Soek... + tmenu ToolBar.FindNext Soek volgende + tmenu ToolBar.FindPrev Soek vorige + tmenu ToolBar.Replace Soek en vervang... + tmenu ToolBar.LoadSesn Laai sessie + tmenu ToolBar.SaveSesn Stoor sessie + tmenu ToolBar.RunScript Voer vim skrip uit + tmenu ToolBar.Make Voer make uit + tmenu ToolBar.Shell Begin dop + tmenu ToolBar.RunCtags Genereer etikette + tmenu ToolBar.TagJump Spring na etiket + tmenu ToolBar.Help Hulp + tmenu ToolBar.FindHelp Soek hulp... + endfun +endif + +" Syntax menu +menutrans &Syntax &Sintaks +menutrans Set\ 'syntax'\ only Stel\ slegs\ 'syntax' +menutrans Set\ 'filetype'\ too Verander\ 'filetype'\ ook +menutrans &Off &Af +menutrans &Manual &Met\ die\ hand +menutrans A&utomatic O&utomaties +menutrans o&n\ (this\ file) Aa&n\ (die\ leêr) +menutrans o&ff\ (this\ file) &Af\ (die\ leêr) +menutrans Co&lor\ test Toets\ die\ &kleure +menutrans &Highlight\ test Toets\ die\ verligting +menutrans &Convert\ to\ HTML Verwissel\ na\ HTML + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_af_af.utf-8.vim b/share/vim/vim74/lang/menu_af_af.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_af_af.utf-8.vim rename to share/vim/vim74/lang/menu_af_af.utf-8.vim diff --git a/share/vim/vim73/lang/menu_ca.latin1.vim b/share/vim/vim74/lang/menu_ca.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_ca.latin1.vim rename to share/vim/vim74/lang/menu_ca.latin1.vim diff --git a/share/vim/vim73/lang/menu_ca.utf-8.vim b/share/vim/vim74/lang/menu_ca.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_ca.utf-8.vim rename to share/vim/vim74/lang/menu_ca.utf-8.vim diff --git a/share/vim/vim74/lang/menu_ca_es.latin1.vim b/share/vim/vim74/lang/menu_ca_es.latin1.vim new file mode 100644 index 00000000..1d77dc92 --- /dev/null +++ b/share/vim/vim74/lang/menu_ca_es.latin1.vim @@ -0,0 +1,317 @@ +" Menu translations for Catalan +" +" Maintainer: Ernest Adrogué +" Last Change: 6 Jun 2008 +" + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" The translations below are in latin1, but they work for cp1252, +" iso-8859-15 without conversion as well. +if &enc != "cp1252" && &enc != "iso-8859-15" + scriptencoding latin1 +endif + +" menú Ajuda +menutrans &Help &Ajuda +menutrans &Overview &Introducció +menutrans &User\ Manual &Manual\ de\ l'usuari +menutrans &How-to\ links Com\ &fer\.\.\.? +menutrans &Find\.\.\. &Cerca\.\.\. +menutrans &Credits &Autors +menutrans Co&pying Con&dicions +menutrans &Sponsor/Register &Patrocini/Registre +menutrans O&rphans &Orfes +menutrans &Version &Versió +menutrans &About &Quant\ a\.\.\. +" text del diàleg Ajuda/Cerca... +let g:menutrans_help_dialog = "Introduïu el terme sobre el qual necessiteu ajuda.\n\nUseu el prefix i_ per ordres d'entrada (p.ex.: i_CTRL-X)\nUseu el prefix c_ per ordres de la línia d'ordres (p.ex.: c_)\nUseu el prefix ' per noms d'opcions (p.ex.: 'shiftwidth')" + +" menú Fitxer +menutrans &File &Fitxer +menutrans &Open\.\.\.:e &Obre\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Obre\ en\ una\ &finestra\ nova\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Obre\ pestanya\.\.\.:tabnew +menutrans &New:enew &Nou:enew +menutrans &Close:close &Tanca:close +menutrans &Save:w &Desa:w +menutrans Save\ &As\.\.\.:sav &Anomena\ i\ desa\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. &Mostra\ les\ diferències\ respecte\.\.\. +menutrans Split\ Patched\ &By\.\.\. Aplica\ les\ modificacions\ de\.\.\. +menutrans &Print &Imprimeix +menutrans Sa&ve-Exit:wqa Desa\ i\ s&urt:wqa +menutrans E&xit:qa &Surt:qa + +" menú Edita +menutrans &Edit &Edita +menutrans &Undou &Desfésu +menutrans &Redo^R &Refés^R +menutrans Rep&eat\. Re&peteix\. +menutrans Cu&t"+x Re&talla"+x +menutrans &Copy"+y &Copia"+y +menutrans &Paste"+gP Engan&xa"+gP +menutrans Put\ &Before[p Posa\ &abans[p +menutrans Put\ &After]p P&osa\ després]p +menutrans &Deletex Suprimeixx +menutrans &Select\ AllggVG &Selecciona-ho\ totggVG +menutrans &Find\.\.\. &Cerca\.\.\. +menutrans &Find/ &Cerca/ +menutrans Find\ and\ Rep&lace Cerca\ i\ s&ubstitueix +menutrans Find\ and\ Rep&lace\.\.\. Cerca\ i\ s&ubstitueix\.\.\. +menutrans Find\ and\ Rep&lace:%s Cerca\ i\ s&ubstitueix:%s +menutrans Find\ and\ Rep&lace:s Cerca\ i\ s&ubstitueix:s +menutrans Settings\ &Window Fin&estra\ d'opcions +menutrans Startup\ &Settings Opcions\ i&nicials +menutrans &Global\ Settings Opcions\ &globals +" submenú Edita/Opcions Globals + menutrans Toggle\ Pattern\ &Highlight:set\ hls! Ressalt\ de\ &patrons:set\ hls! + menutrans Toggle\ &Ignore-case:set\ ic! Sensibilitat\ a\ les\ ma&júscules:set\ ic! + menutrans Toggle\ &Showmatch:set\ sm! &Ressalt\ de\ coincidències:set\ sm! + menutrans &Context\ lines Línies\ de\ co&ntext + menutrans &Virtual\ Edit Edició\ &virtual +" submenú Edita/Opcions Globals/Edició virtual + menutrans Never &Mai + menutrans Block\ Selection &Selecció\ de\ blocs + menutrans Insert\ mode Mode\ d'&inserció + menutrans Block\ and\ Insert &Blocs i inserció + menutrans Always S&empre + menutrans Toggle\ Insert\ &Mode:set\ im! Mode\ d'&inserció:set\ im! + menutrans Toggle\ Vi\ C&ompatible:set\ cp! Co&mpatible\ amb\ Vi:set\ cp! + menutrans Search\ &Path\.\.\. &Ubicacions\.\.\. + menutrans Ta&g\ Files\.\.\. Fitxers\ d'&etiquetes\.\.\. + menutrans Toggle\ &Toolbar &Barra\ d'eines + menutrans Toggle\ &Bottom\ Scrollbar Barra\ de\ &desplaçament\ inferior + menutrans Toggle\ &Left\ Scrollbar Barra\ de\ desplaçament\ e&squerra + menutrans Toggle\ &Right\ Scrollbar Barra\ de\ desplaçament\ dre&ta +menutrans F&ile\ Settings Opcions\ del\ f&itxer +" submenú Edita/Opcions del fitxer + menutrans Toggle\ Line\ &Numbering:set\ nu! &Ennumera\ les\ línies:set\ nu! + menutrans Toggle\ &List\ Mode:set\ list! Mode\ &llista:set\ list! + menutrans Toggle\ Line\ &Wrap:set\ wrap! A&justa\ les\ línies\ llargues:set\ wrap! + menutrans Toggle\ W&rap\ at\ word:set\ lbr! Ajusta\ sense\ partir\ ¶ules:set\ lbr! + menutrans Toggle\ &expand-tab:set\ et! Estén\ les\ ta&bulacions:set\ et! + menutrans Toggle\ &auto-indent:set\ ai! &Sagnia\ automàtica:set\ ai! + menutrans Toggle\ &C-indenting:set\ cin! Sagnia\ estil\ &C:set\ cin! + menutrans &Shiftwidth Sa&gnia + menutrans Soft\ &Tabstop Amplada\ de\ &tabulació + menutrans Te&xt\ Width\.\.\. &Amplada\ del\ text\.\.\. + menutrans &File\ Format\.\.\. &Format\ del\ fitxer\.\.\. +menutrans Select\ Fo&nt\.\.\. &Fosa\.\.\. +menutrans C&olor\ Scheme Es&quema\ de\ colors +" submenú Edita/Esquema de colors + menutrans blue blau + menutrans darkblue blau\ fosc + menutrans default normal + menutrans desert desert + menutrans evening vesprada + menutrans morning matinada + menutrans peachpuff préssec + menutrans shine brillant +menutrans &Keymap &Mapa\ de\ tecles +" submenú Edita/Mapa de tecles + menutrans None Cap + menutrans accents Accents + menutrans arabic Àrab + menutrans czech Txec + menutrans esperanto Esperanto + menutrans greek Grec + menutrans hebrew Hebreu + menutrans hebrewp Hebreu\ (fonètic) + menutrans lithuanian-baltic Lituà\ (bàltic) + menutrans pinyin Mandarí\ (fonètic) + menutrans russian-jcuken Rus\ (jcuken) + menutrans russian-jcukenwin Rus\ (jcukenwin) + menutrans russian-yawerty Rus\ (yawerty) + menutrans serbian Serbi + menutrans serbian-latin Serbi\ (llatí) + menutrans slovak Eslovac +" text del diàleg Edita/Opcions globals/Ubicacions... +let g:menutrans_path_dialog = "Introduïu les ubicacions on cercar fitxers.\nSepareu els noms dels directoris amb una coma." +" text del diàleg Edita/Opcions globals/Fitxers d'etiquetes... +let g:menutrans_tags_dialog = "Introduïu els noms dels fitxers d'etiquetes.\nSepareu els noms amb una coma." +" text del diàleg Edita/Opcions del fitxer/Amplada del text... +let g:menutrans_textwidth_dialog = "Introduïu la nova amplada del text (0 per infinit): " +" text del diàleg Edita/Opcions del fitxer/Format del fitxer... +let g:menutrans_fileformat_dialog = "Seleccioneu el format per escriure el fitxer." + + +" menú Eines +menutrans &Tools Ei&nes +menutrans &Jump\ to\ this\ tagg^] &Salta\ a\ aquesta\ etiquetag^] +menutrans Jump\ &back^T Salta\ en&rere^T +menutrans Build\ &Tags\ File Crea\ un\ fitxer\ d'eti&quetes +menutrans &Spelling &Ortografia +" submenú Eines/Ortografia + menutrans &Spell\ Check\ On Activa\ la\ &revisió\ ortogràfica + menutrans Spell\ Check\ &Off &Desactiva\ la\ revisió\ ortogràfica + menutrans To\ &Next\ error]s Error\ &següent]s + menutrans To\ &Previous\ error[s Error\ &anterior[s + menutrans Suggest\ &Correctionsz= Su&ggerimentsz= + menutrans &Repeat\ correction:spellrepall Re&peteix\ la\ correcció:spellrepall + menutrans Set\ language\ to\ "en" Selecciona\ l'idioma\ "en" + menutrans Set\ language\ to\ "en_au" Selecciona\ l'idioma\ "en_au" + menutrans Set\ language\ to\ "en_ca" Selecciona\ l'idioma\ "en_ca" + menutrans Set\ language\ to\ "en_gb" Selecciona\ l'idioma\ "en_gb" + menutrans Set\ language\ to\ "en_nz" Selecciona\ l'idioma\ "en_nz" + menutrans Set\ language\ to\ "en_us" Selecciona\ l'idioma\ "en_us" + menutrans Set\ language\ to\ "ca" Selecciona\ l'idioma\ "ca" + menutrans Set\ language\ to\ "es" Selecciona\ l'idioma\ "es" + menutrans Set\ language\ to\ "fr" Selecciona\ l'idioma\ "fr" + menutrans Set\ language\ to\ "it" Selecciona\ l'idioma\ "it" + menutrans &Find\ More\ Languages &Cerca\ altres\ idiomes +menutrans &Folding &Plecs +" submenú Eines/Plecs + menutrans &Enable/Disable\ foldszi &Habilita/Deshabilita\ els\ plecszi + menutrans &View\ Cursor\ Linezv &Línia\ del\ cursor\ visiblezv + menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Només\ visible\ la\ línia\ del\ cursorzMzx + menutrans C&lose\ more\ foldszm &Tanca\ més\ plecszm + menutrans &Close\ all\ foldszM Tanca\ t&ots\ els\ plecszM + menutrans O&pen\ more\ foldszr Obre\ &més\ plecszr + menutrans &Open\ all\ foldszR O&bre\ tots\ els\ plecszR + menutrans Fold\ Met&hod Mèto&de +" submenú Eines/Plècs/Mètode + menutrans M&anual M&anual + menutrans I&ndent &Sagnia + menutrans E&xpression E&xpressió + menutrans S&yntax S&intaxi + menutrans &Diff &Diferències + menutrans Ma&rker &Marques + menutrans Create\ &Foldzf &Crea\ un\ pleczf + menutrans &Delete\ Foldzd &Elimina\ un\ pleczd + menutrans Delete\ &All\ FoldszD Elimina\ tot&s\ els\ plecszD + menutrans Fold\ col&umn\ width &Amplada\ de\ la\ columna\ de\ plecs +menutrans &Diff &Diferències +" submenú Eines/Diferències + menutrans &Update &Actualitza + menutrans &Get\ Block &Obtingues\ un\ bloc + menutrans &Put\ Block &Posa\ un\ bloc +menutrans &Make:make Crida\ a\ &make:make +menutrans &List\ Errors:cl Llista\ d'&errors:cl +menutrans L&ist\ Messages:cl! &Llista\ de\ missatges:cl! +menutrans &Next\ Error:cn Error\ se&güent:cn +menutrans &Previous\ Error:cp Error\ an&terior:cp +menutrans &Older\ List:cold Llista\ &antiga:cold +menutrans N&ewer\ List:cnew Llista\ no&va:cnew +menutrans Error\ &Window F&inestra\ d'errors +" submenú Eines/Finestra d'errors + menutrans &Update:cwin &Actualitza:cwin + menutrans &Open:copen &Obre:copen + menutrans &Close:cclose &Tanca:cclose +menutrans &Set\ Compiler &Compilador +menutrans &SeT\ Compiler &Compilador +menutrans &Convert\ to\ HEX:%!xxd Converteix\ a\ &HEX:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Torna\ al\ format\ &original:%!xxd\ -r + + +" menú Buffers +menutrans &Buffers &Buffers +menutrans &Refresh\ menu &Refresca\ el\ menú +menutrans &Delete &Elimina +menutrans &Alternate &Alterna +menutrans &Next &Següent +menutrans &Previous A&nterior +let g:menutrans_no_file = "[Cap fitxer]" + + +" menú Finestra +menutrans &Window F&inestra +menutrans &New^Wn &Nova^Wn +menutrans S&plit^Ws &Divideix^Ws +menutrans Sp&lit\ To\ #^W^^ Divideix\ &en\ #^W^^ +menutrans Split\ &Vertically^Wv Divideix\ &verticalment^Wv +menutrans Split\ File\ E&xplorer E&xplorador\ de\ fitxers +menutrans &Close^Wc &Tanca^Wc +menutrans Close\ &Other(s)^Wo Tanca\ les\ altre&s^Wo +menutrans Move\ &To M&ou\ a +" submenú Finestra/Mou + menutrans &Top^WK &Dalt\ de\ tot^WK + menutrans &Bottom^WJ &Baix\ de\ tot^WJ + menutrans &Left\ side^WH Costat\ &esquerra^WH + menutrans &Right\ side^WL Costat\ d&ret^WL +menutrans Rotate\ &Up^WR Alterna\ cap\ am&unt^WR +menutrans Rotate\ &Down^Wr Alte&rna\ cap\ avall^Wr +menutrans &Equal\ Size^W= &Iguala^W= +menutrans &Max\ Height^W_ Màxima\ &alçada^W_ +menutrans M&in\ Height^W1_ Mínima\ a&lçada^W1_ +menutrans Max\ &Width^W\| Màxima\ a&mplada^W\| +menutrans Min\ Widt&h^W1\| Mínima\ am&plada^W1\| + + +" menú emergent +menutrans &Undo &Desfés +menutrans Cu&t &Retalla +menutrans &Copy &Copia +menutrans &Paste &Enganxa +menutrans &Delete &Suprimeix +menutrans Select\ Blockwise Se&lecció +menutrans Select\ &Word Selecció\ de\ ¶ules +menutrans Select\ &Line Selecció\ de\ &línies +menutrans Select\ &Block Selecció\ de\ bl&ocs +menutrans Select\ &All Selecciona-ho\ &tot + + +" barra d'eines +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Obre un fitxer + tmenu ToolBar.Save Desa el fitxer + tmenu ToolBar.SaveAll Desa tots els fitxers + tmenu ToolBar.Print Imprimeix + tmenu ToolBar.Undo Desfés + tmenu ToolBar.Redo Refés + tmenu ToolBar.Cut Retalla + tmenu ToolBar.Copy Copia + tmenu ToolBar.Paste Enganxa + tmenu ToolBar.Find Cerca + tmenu ToolBar.FindNext Cerca el següent + tmenu ToolBar.FindPrev Cerca l'anterior + tmenu ToolBar.Replace Cerca i substitueix + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Finestra nova + tmenu ToolBar.WinSplit Divideix la finestra + tmenu ToolBar.WinMax Alçada màxima + tmenu ToolBar.WinMin Alçada mínima + tmenu ToolBar.WinVSplit Divideix la finestra verticalment + tmenu ToolBar.WinMaxWidth Amplada màxima + tmenu ToolBar.WinMinWidth Amplada mínima + tmenu ToolBar.WinClose Tanca la finestra + endif + tmenu ToolBar.LoadSesn Carrega una sessió + tmenu ToolBar.SaveSesn Desa la sessió + tmenu ToolBar.RunScript Executa un script + tmenu ToolBar.Make Crida a make + tmenu ToolBar.Shell Obre l'intèrpret d'ordres + tmenu ToolBar.RunCtags Crea un fitxer d'etiquetes + tmenu ToolBar.TagJump Salta a una etiqueta + tmenu ToolBar.Help Ajuda + tmenu ToolBar.FindHelp Cerca a l'ajuda + endfun +endif + + +" menú Sintaxi +menutrans &Syntax &Sintaxi +menutrans &Manual &Manual +menutrans A&utomatic A&utomàtica +menutrans on/off\ for\ &This\ file Activa/Desactiva\ en\ &aquest\ fitxer +menutrans &Show\ filetypes\ in\ menu Mostra\ tots\ els\ &tipus\ al\ menú +menutrans &Off &Desactiva +menutrans Co&lor\ test Prova\ dels\ &colors +menutrans &Highlight\ test Prova\ del\ &ressalt +menutrans &Convert\ to\ HTML Converteix\ a\ &HTML +menutrans Assembly Ensamblador +menutrans Config Configuració +menutrans Set\ '&syntax'\ only Només\ el\ ressalt\ de\ sintaxi +menutrans Set\ '&filetype'\ too Carrega\ també\ els\ plugins + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_ca_es.utf-8.vim b/share/vim/vim74/lang/menu_ca_es.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_ca_es.utf-8.vim rename to share/vim/vim74/lang/menu_ca_es.utf-8.vim diff --git a/share/vim/vim73/lang/menu_chinese(gb)_gb.936.vim b/share/vim/vim74/lang/menu_chinese(gb)_gb.936.vim similarity index 100% rename from share/vim/vim73/lang/menu_chinese(gb)_gb.936.vim rename to share/vim/vim74/lang/menu_chinese(gb)_gb.936.vim diff --git a/share/vim/vim73/lang/menu_chinese(taiwan)_taiwan.950.vim b/share/vim/vim74/lang/menu_chinese(taiwan)_taiwan.950.vim similarity index 100% rename from share/vim/vim73/lang/menu_chinese(taiwan)_taiwan.950.vim rename to share/vim/vim74/lang/menu_chinese(taiwan)_taiwan.950.vim diff --git a/share/vim/vim74/lang/menu_chinese_gb.936.vim b/share/vim/vim74/lang/menu_chinese_gb.936.vim new file mode 100644 index 00000000..e636a423 --- /dev/null +++ b/share/vim/vim74/lang/menu_chinese_gb.936.vim @@ -0,0 +1,268 @@ +" Menu Translations: Simplified Chinese +" Translated By: Yuheng Xie +" Last Change: Tue Apr 18 22:00:00 2006 + +" vim: ts=8 sw=8 noet + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding cp936 + +" Help menu +menutrans &Help °ïÖú(&H) +menutrans &Overview ×ÝÀÀ(&O) +menutrans &User\ Manual Óû§ÊÖ²á(&U) +menutrans &How-to\ links How-to\ Ö¸Òý(&H) +menutrans &Find\.\.\. ²éÕÒ(&F)\.\.\. +menutrans &Credits ÖÂл(&C) +menutrans Co&pying °æȨ(&P) +menutrans &Sponsor/Register ÔÞÖú/×¢²á(&S) +menutrans O&rphans ¹Â¶ù(&R) +menutrans &Version °æ±¾(&V) +menutrans &About ¹ØÓÚ(&A) + +" File menu +menutrans &File Îļþ(&F) +menutrans &Open\.\.\.:e ´ò¿ª(&O)\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp ·Ö¸î²¢´ò¿ª(&L)\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew ´ò¿ª±êÇ©\.\.\.:tabnew +menutrans &New:enew н¨(&N):enew +menutrans &Close:close ¹Ø±Õ(&C):close +menutrans &Save:w ±£´æ(&S):w +menutrans Save\ &As\.\.\.:sav Áí´æΪ(&A)\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. ·Ö¸î±È½Ï(Diff)(&D)\.\.\. +menutrans Split\ Patched\ &By\.\.\. ·Ö¸î´ò²¹¶¡(Patch)(&B)\.\.\. +menutrans &Print ´òÓ¡(&P) +menutrans Sa&ve-Exit:wqa ±£´æ²¢Í˳ö(&V):wqa +menutrans E&xit:qa Í˳ö(&X):qa + +" Edit menu +menutrans &Edit ±à¼­(&E) +menutrans &Undou ³·Ïú(&U)u +menutrans &Redo^R ÖØ×ö(&R)^R +menutrans Rep&eat\. Öظ´ÉϴβÙ×÷(&E)\. +menutrans Cu&t"+x ¼ôÇÐ(&T)"+x +menutrans &Copy"+y ¸´ÖÆ(&C)"+y +menutrans &Paste"+gP Õ³Ìù(&P)"+gP +menutrans Put\ &Before[p Õ³Ìùµ½¹â±êÇ°(&B)[p +menutrans Put\ &After]p Õ³Ìùµ½¹â±êºó(&A)]p +menutrans &Deletex ɾ³ý(&D)x +menutrans &Select\ AllggVG ȫѡ(&S)ggVG +menutrans &Find\.\.\. ²éÕÒ(&F)\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. ²éÕÒºÍÌæ»»(&L)\.\.\. +menutrans &Find/ ²éÕÒ(&F)/ +menutrans Find\ and\ Rep&lace:%s ²éÕÒºÍÌæ»»(&L):%s +menutrans Settings\ &Window É趨´°¿Ú(&W) +menutrans Startup\ &Settings Æô¶¯É趨(&S) +menutrans &Global\ Settings È«¾ÖÉ趨(&G) + +" Edit/Global Settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! ¿ª/¹Øģʽ¸ßÁÁ(&H):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! ¿ª/¹ØºöÂÔ´óСд(&I):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! ¿ª/¹ØÏÔʾÅä¶Ô(&S):set\ sm! +menutrans &Context\ lines ÉÏÏÂÎÄÐÐÊý(&C) + +menutrans &Virtual\ Edit ÐéÄâ±à¼­(&V) +menutrans Never ´Ó²» +menutrans Block\ Selection ¿éÑ¡Ôñ +menutrans Insert\ mode ²åÈëģʽ +menutrans Block\ and\ Insert ¿éÑ¡ÔñºÍ²åÈëģʽ +menutrans Always ×ÜÊÇ + +menutrans Toggle\ Insert\ &Mode:set\ im! ¿ª/¹Ø²åÈëģʽ(&M):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! ¿ª/¹Ø\ Vi\ ¼æÈÝ:set\ cp! +menutrans Search\ &Path\.\.\. ²éÕÒ·¾¶(&P)\.\.\. +menutrans Ta&g\ Files\.\.\. Tag\ Îļþ(&T)\.\.\. + +" GUI options +menutrans Toggle\ &Toolbar ¿ª/¹Ø¹¤¾ßÀ¸(&T) +menutrans Toggle\ &Bottom\ Scrollbar ¿ª/¹Øµ×²¿¹ö¶¯Ìõ(&B) +menutrans Toggle\ &Left\ Scrollbar ¿ª/¹Ø×ó¶Ë¹ö¶¯Ìõ(&L) +menutrans Toggle\ &Right\ Scrollbar ¿ª/¹ØÓҶ˹ö¶¯Ìõ(&R) + +" Edit/File Settings +menutrans F&ile\ Settings ÎļþÉ趨(&I) + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! ¿ª/¹ØÏÔʾÐкÅ(&N):set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! ¿ª/¹Ø\ list\ ģʽ(&L):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! ¿ª/¹ØÕÛÐÐ(&W):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! ¿ª/¹ØÕû´ÊÕÛÐÐ(&R):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! ¿ª/¹ØÀ©Õ¹\ tab(&E):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! ¿ª/¹Ø×Ô¶¯Ëõ½ø(&A):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! ¿ª/¹Ø\ C\ Ëõ½ø(&C):set\ cin! + +" other options +menutrans &Shiftwidth Ëõ½ø¿í¶È(&S) +menutrans Soft\ &Tabstop Soft\ Tab\ ¿í¶È(&T) +menutrans Te&xt\ Width\.\.\. Îı¾¿í¶È(&X)\.\.\. +menutrans &File\ Format\.\.\. Îļþ¸ñʽ(&F)\.\.\. +menutrans C&olor\ Scheme ÅäÉ«·½°¸(&O) +menutrans Select\ Fo&nt\.\.\. Ñ¡Ôñ×ÖÌå(&N)\.\.\. +menutrans &Keymap ¼üÅÌÓ³Éä(&K) + +" Programming menu +menutrans &Tools ¹¤¾ß(&T) +menutrans &Jump\ to\ this\ tagg^] Ìøתµ½Õâ¸ö\ tag(&J)g^] +menutrans Jump\ &back^T Ìøת·µ»Ø(&B)^T +menutrans Build\ &Tags\ File ½¨Á¢\ Tags\ Îļþ(&T) + +" Tools.Spelling Menu +menutrans &Spelling ƴд¼ì²é(&S) +menutrans &Spell\ Check\ On ´ò¿ªÆ´Ð´¼ì²é(&S) +menutrans Spell\ Check\ &Off ¹Ø±Õƴд¼ì²é(&O) +menutrans To\ &Next\ error]s ÉÏÒ»¸ö´íÎó(&N)]s +menutrans To\ &Previous\ error[s ÏÂÒ»¸ö´íÎó(&P)[s +menutrans Suggest\ &Correctionsz= ÐÞÕý½¨Òé(&C)z= +menutrans &Repeat\ correction:spellrepall Öظ´ÐÞÕý(&R):spellrepall +menutrans Set\ language\ to\ "en" É趨ÓïÑÔΪ\ "en" +menutrans Set\ language\ to\ "en_au" É趨ÓïÑÔΪ\ "en_au" +menutrans Set\ language\ to\ "en_ca" É趨ÓïÑÔΪ\ "en_ca" +menutrans Set\ language\ to\ "en_gb" É趨ÓïÑÔΪ\ "en_gb" +menutrans Set\ language\ to\ "en_nz" É趨ÓïÑÔΪ\ "en_nz" +menutrans Set\ language\ to\ "en_us" É趨ÓïÑÔΪ\ "en_us" +menutrans &Find\ More\ Languages ²éÕÒ¸ü¶àÓïÑÔ(&F) + +" Tools.Fold Menu +" open close folds +menutrans &Folding ÕÛµþ(&F) +menutrans &Enable/Disable\ foldszi ÆôÓÃ/½ûÓÃÕÛµþ(&E)zi +menutrans &View\ Cursor\ Linezv ²é¿´´ËÐÐ(&V)zv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx ½ö²é¿´´ËÐÐ(&W)zMzx +menutrans C&lose\ more\ foldszm ¹Ø±Õ¸ü¶àÕÛµþ(&L)zm +menutrans &Close\ all\ foldszM ¹Ø±ÕËùÓÐÕÛµþ(&C)zM +menutrans O&pen\ more\ foldszr ´ò¿ª¸ü¶àÕÛµþ(&P)zr +menutrans &Open\ all\ foldszR ´ò¿ªËùÓÐÕÛµþ(&O)zR +" fold method +menutrans Fold\ Met&hod ÕÛµþ·½·¨(&H) +menutrans M&anual ÊÖ¹¤(&A) +menutrans I&ndent Ëõ½ø(&N) +menutrans E&xpression ±í´ïʽ(&X) +menutrans S&yntax Óï·¨(&Y) +menutrans &Diff ±È½Ï(Diff)(&D) +menutrans Ma&rker ±ê¼Ç(&R) +" create and delete folds +menutrans Create\ &Foldzf ´´½¨ÕÛµþ(&F)zf +menutrans &Delete\ Foldzd ɾ³ýÕÛµþ(&D)zd +menutrans Delete\ &All\ FoldszD ɾ³ýËùÓÐÕÛµþ(&A)zD +" moving around in folds +menutrans Fold\ column\ &width ÕÛµþÀ¸¿í¶È(&W) + +" Tools.Diff Menu +menutrans &Diff ±È½Ï(Diff)(&D) +menutrans &Update ¸üÐÂ(&U) +menutrans &Get\ Block µÃµ½¿é(&G) +menutrans &Put\ Block ·ÅÖÿé(&P) + +menutrans &Make:make Make(&M):make +menutrans &List\ Errors:cl Áгö´íÎó(&L):cl +menutrans L&ist\ Messages:cl! ÁгöÏûÏ¢(&I):cl! +menutrans &Next\ Error:cn ÏÂÒ»¸ö´íÎó(&N):cn +menutrans &Previous\ Error:cp ÉÏÒ»¸ö´íÎó(&P):cp +menutrans &Older\ List:cold ¸ü¾ÉµÄ´íÎóÁбí(&O):cold +menutrans N&ewer\ List:cnew ¸üеĴíÎóÁбí(&E):cnew +menutrans Error\ &Window ´íÎó´°¿Ú(&W) +menutrans &Update:cwin ¸üÐÂ(&U):cwin +menutrans &Open:copen ´ò¿ª(&O):copen +menutrans &Close:cclose ¹Ø±Õ(&C):cclose +menutrans &Convert\ to\ HEX:%!xxd ת»»³ÉÊ®Áù½øÖÆ:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r ת»»·µ»Ø:%!xxd\ -r +menutrans Se&T\ Compiler É趨±àÒëÆ÷(&T) + +" Names for buffer menu. +menutrans &Buffers »º³åÇø(&B) +menutrans &Refresh\ menu ¸üв˵¥(&R) +menutrans &Delete ɾ³ý(&D) +menutrans &Alternate ½»Ìæ(&A) +menutrans &Next ÏÂÒ»¸ö(&N) +menutrans &Previous ÉÏÒ»¸ö(&P) + +" Window menu +menutrans &Window ´°¿Ú(&W) +menutrans &New^Wn н¨(&N)^Wn +menutrans S&plit^Ws ·Ö¸î(&P)^Ws +menutrans Sp&lit\ To\ #^W^^ ·Ö¸îµ½\ #(&L)^W^^ +menutrans Split\ &Vertically^Wv ´¹Ö±·Ö¸î(&V)^Wv +menutrans Split\ File\ E&xplorer ·Ö¸îÎļþä¯ÀÀÆ÷(&X) +menutrans &Close^Wc ¹Ø±Õ(&C)^Wc +menutrans Close\ &Other(s)^Wo ¹Ø±ÕÆäËü´°¿Ú(&O)^Wo +menutrans Move\ &To Òƶ¯µ½(&T) +menutrans &Top^WK ¶¥¶Ë(&T)^WK +menutrans &Bottom^WJ µ×¶Ë(&B)^WJ +menutrans &Left\ side^WH ×ó±ß(&L)^WH +menutrans &Right\ side^WL ÓÒ±ß(&R)^WL +" menutrans Ne&xt^Ww ÏÂÒ»¸ö(&X)^Ww +" menutrans P&revious^WW ÉÏÒ»¸ö(&R)^WW +menutrans Rotate\ &Up^WR ÏòÉÏÂÖ»»(&U)^WR +menutrans Rotate\ &Down^Wr ÏòÏÂÂÖ»»(&D)^Wr +menutrans &Equal\ Size^W= µÈ´ó(&E)^W= +menutrans &Max\ Height^W_ ×î´ó¸ß¶È(&M)^W +menutrans M&in\ Height^W1_ ×îС¸ß¶È(&I)^W1_ +menutrans Max\ &Width^W\| ×î´ó¿í¶È(&W)^W\| +menutrans Min\ Widt&h^W1\| ×îС¿í¶È(&H)^W1\| +" +" The popup menu +menutrans &Undo ³·Ïú(&U) +menutrans Cu&t ¼ôÇÐ(&T) +menutrans &Copy ¸´ÖÆ(&C) +menutrans &Paste Õ³Ìù(&P) +menutrans &Delete ɾ³ý(&D) +menutrans Select\ Blockwise Ñ¡Ôñ¿é +menutrans Select\ &Word Ñ¡Ôñµ¥´Ê(&W) +menutrans Select\ &Sentence Ñ¡Ôñ¾ä×Ó(&S) +menutrans Select\ Pa&ragraph Ñ¡Ôñ¶ÎÂä(&R) +menutrans Select\ &Line Ñ¡ÔñÐÐ(&L) +menutrans Select\ &Block Ñ¡Ôñ¿é(&B) +menutrans Select\ &All ȫѡ(&A) +" +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open ´ò¿ªÎļþ + tmenu ToolBar.Save ±£´æµ±Ç°Îļþ + tmenu ToolBar.SaveAll ±£´æÈ«²¿Îļþ + tmenu ToolBar.Print ´òÓ¡ + tmenu ToolBar.Undo ³·Ïú + tmenu ToolBar.Redo ÖØ×ö + tmenu ToolBar.Cut ¼ôÇе½¼ôÌù°å + tmenu ToolBar.Copy ¸´ÖƵ½¼ôÌù°å + tmenu ToolBar.Paste ´Ó¼ôÌù°åÕ³Ìù + tmenu ToolBar.Find ²éÕÒ... + tmenu ToolBar.FindNext ²éÕÒÏÂÒ»¸ö + tmenu ToolBar.FindPrev ²éÕÒÉÏÒ»¸ö + tmenu ToolBar.Replace ²éÕÒºÍÌæ»»... + tmenu ToolBar.LoadSesn ¼ÓÔػỰ + tmenu ToolBar.SaveSesn ±£´æµ±Ç°»á»° + tmenu ToolBar.RunScript ÔËÐÐ Vim ½Å±¾ + tmenu ToolBar.Make Ö´ÐÐ Make (:make) + tmenu ToolBar.RunCtags ÔÚµ±Ç°Ä¿Â¼½¨Á¢ tags (!ctags -R .) + tmenu ToolBar.TagJump Ìøתµ½¹â±êλÖÃµÄ tag + tmenu ToolBar.Help Vim °ïÖú + tmenu ToolBar.FindHelp ²éÕÒ Vim °ïÖú + endfun +endif + +" Syntax menu +menutrans &Syntax Óï·¨(&S) +menutrans &Show\ filetypes\ in\ menu Ôڲ˵¥ÖÐÏÔʾÎļþÀàÐÍ(&S) +menutrans &Off ¹Ø±Õ(&O) +menutrans &Manual ÊÖ¹¤(&M) +menutrans A&utomatic ×Ô¶¯(&U) +menutrans on/off\ for\ &This\ file ½ö¶ÔÕâ¸öÎļþ¿ª/¹Ø(&T) +menutrans Co&lor\ test É«²Ê²âÊÔ(&L) +menutrans &Highlight\ test ¸ßÁÁ²âÊÔ(&H) +menutrans &Convert\ to\ HTML ת»»³É\ HTML(&C) +menutrans Set\ '&syntax'\ only ½öÉ趨\ 'syntax'(&S) +menutrans Set\ '&filetype'\ too Ò²É趨\ 'filetype'(&F) + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_chinese_taiwan.950.vim b/share/vim/vim74/lang/menu_chinese_taiwan.950.vim new file mode 100644 index 00000000..7631e3e1 --- /dev/null +++ b/share/vim/vim74/lang/menu_chinese_taiwan.950.vim @@ -0,0 +1,290 @@ +" Menu Translations: Traditional Chinese +" Translated By: Hung-Te Lin +" Last Change: 2012 May 01 + +" {{{ Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +" }}} +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding cp950 + +" {{{ Help menu: complete +menutrans &Help »²§U»¡©ú(&H) +" ------------------------------------------------------------------------ +menutrans &Overview »¡©ú¤å¥óÁ`Äý(&O) +menutrans &User\ Manual ¨Ï¥ÎªÌ¤â¥U(&U) +menutrans &How-to\ links ¦p¦ó§@\.\.\.(&H) +menutrans &GUI ¹Ï«¬¬É­±(&G) +menutrans &Credits ·PÁÂ(&C) +menutrans Co&pying ª©Åv(&P) +menutrans &Sponsor/Register ÃÙ§U/µù¥U(&S) +menutrans O&rphans ¬@±Ï©t¨à(&R) +" ------------------------------------------------------------------------ +menutrans &Version µ{¦¡ª©¥»¸ê°T(&V) +menutrans &About Ãö©ó\ Vim(&A) +" }}} + +" {{{ File menu: complete +menutrans &File ÀÉ®×(&F) +" ------------------------------------------------------------------------ +menutrans &Open\.\.\.:e ¶}±Ò(&O)\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp ¤À³Îµøµ¡¨Ã¶}±Ò(&L):sp +menutrans &New:enew ½s¿è·sÀÉ®×(&N):enew +menutrans &Close:close Ãö³¬ÀÉ®×(&C):close +" ------------------------------------------------------------------------ +menutrans &Save:w Àx¦s(&S):w +menutrans Save\ &As\.\.\.:sav ¥t¦s·sÀÉ(&A)\.\.\.:sav +" ------------------------------------------------------------------------ +menutrans Split\ &Diff\ with\.\.\. ¤ñ¸û(&Diff)\.\.\. +menutrans Split\ Patched\ &By\.\.\. °õ¦æPatch(&B)\.\.\. +" ------------------------------------------------------------------------ +menutrans &Print ¦C¦L(&P) +" ------------------------------------------------------------------------ +menutrans Sa&ve-Exit:wqa Àx¦s¨ÃÂ÷¶}(&V):wqa +menutrans E&xit:qa Â÷¶}(&X):qa +" }}} + +" {{{ Edit menu +menutrans &Edit ½s¿è(&E) +" ------------------------------------------------------------------------ +menutrans &Undou ´_­ì(&U)u +menutrans &Redo^R ¨ú®ø¤W¦¸´_­ì(&R)^R +menutrans Rep&eat\. ­«½Æ¤W¦¸°Ê§@(&E)\. +" ------------------------------------------------------------------------ +menutrans Cu&t"+x °Å¤U(&T)"+x +menutrans &Copy"+y ½Æ»s(&C)"+y +menutrans &Paste"+gP ¶K¤W(&P)"+gP +menutrans Put\ &Before[p ¶K¨ì´å¼Ð«e(&B)[p +menutrans Put\ &After]p ¶K¨ì´å¼Ð«á(&A)]p +menutrans &Deletex §R°£(&D)x +menutrans &Select\ AllggVG ¥þ¿ï(&S)ggvG +" ------------------------------------------------------------------------ +menutrans &Find\.\.\. ´M§ä(&F)\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. ´M§ä¨Ã¨ú¥N(&L)\.\.\. +" ------------------------------------------------------------------------ +menutrans Settings\ &Window ³]©wµøµ¡(&W) +menutrans &Global\ Settings ¥þ°ì³]©w(&G) +menutrans F&ile\ Settings ³]©w¦¹ÀÉ®×(&I) +menutrans C&olor\ Scheme °t¦â³]©w(&O) +menutrans &Keymap Áä½L¹ïÀ³(&K) + " "{{{ Keymap: + menutrans None µL + " }}} +menutrans Select\ Fo&nt\.\.\. ³]©w¦r«¬(&N)\.\.\. +" }}} + +" {{{ Edit.FileSettings +menutrans Toggle\ Line\ &Numbering:set\ nu! ¤Á´«Åã¥Ü¦æ¸¹(&N):set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! ¤Á´«Åã¥Ü¦æ§À¤ÎTAB(&L):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! ¤Á´«¦Û°Ê§é¦æÅã¥Ü(&W):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! ¤Á´«§é¦æÅã¥Ü¥i¥ô·NÂ_¥y(&R):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! ¤Á´«®i¶}TAB(&E):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! ¤Á´«¦Û°ÊÁY±Æ(&A):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! ¤Á´«¢Ñ»y¨¥ÁY±Æ(&C):set\ cin! +" ------------------------------------------------------------------------ +menutrans &Shiftwidth ÁY±Æ¼e«×(shiftwidth)(&S) +menutrans Soft\ &Tabstop ³nÅé¼ÒÀÀTAB(softtabstop)(&T) +menutrans Te&xt\ Width\.\.\. ¤å¦r­¶­±¼e«×(textwidth)(&X)\.\.\. +menutrans &File\ Format\.\.\. ³]©wÀɮ׮榡(¹ïÀ³§@·~¨t²Î)(&F)\.\.\. +" }}} + +" {{{ Edit.GlobalSettings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! ¤Á´«°ª«G«×·j´M¦r¦ê(&H):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! ¤Á´«©¿²¤¤j¤p¼g(&I):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! ¤Á´«Åã¥Ü¹ïÀ³¬A¸¹(&S):set\ sm! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! ¤Á´«¶Ç²ÎVi¬Û®e¼Ò¦¡(&O):set\ cp! +menutrans &Context\ lines ¥»¤å«e«á«O¯d¦æ¼Æ(scrolloff)(&C) +menutrans &Virtual\ Edit ´å¼Ð¥ô·N²¾°Ê(virtualedit)(&V) + " {{{ Edit.GlobalSettings.VirtualEdit + menutrans Never ¤£¨Ï¥Î + menutrans Block\ Selection °Ï¶ô¿ï¾Ü®É + menutrans Insert\ mode ´¡¤J¼Ò¦¡®É + menutrans Block\ and\ Insert °Ï¶ô»P´¡¤J¼Ò¦¡ + menutrans Always ¤@ª½¶}±Ò + " }}} +menutrans Toggle\ Insert\ &Mode:set\ im! ¤Á´«´¡¤J¼Ò¦¡(&M):set\ im! +menutrans Search\ &Path\.\.\. ·j´M¸ô®|(&P)\.\.\. +menutrans Ta&g\ Files\.\.\. Tag\ ¼ÐÅÒ¯Á¤ÞÀÉ®×(&G)\.\.\. +" ------------------------------------------------------------------------ +menutrans Toggle\ &Toolbar ¤Á´«¨Ï¥Î¤u¨ã¦C(&T) +menutrans Toggle\ &Bottom\ Scrollbar ¤Á´«¨Ï¥Î©³ºÝ±²°Ê¶b(&B) +menutrans Toggle\ &Left\ Scrollbar ¤Á´«¨Ï¥Î¥ªºÝ±²°Ê¶b(&L) +menutrans Toggle\ &Right\ Scrollbar ¤Á´«¨Ï¥Î¥kºÝ±²°Ê¶b(&R) +" }}} + +" {{{ Tools menu: complete +menutrans &Tools ¤u¨ã(&T) +" ------------------------------------------------------------------------ +menutrans &Jump\ to\ this\ tagg^] À˯Á´å¼Ð³Bªº¼ÐÅÒÃöÁä¦r(tag)(&J)g^] +menutrans Jump\ &back^T ¸õ¦^À˯Á«eªº¦ì¸m(&B)^T +menutrans Build\ &Tags\ File «Ø¥ß¼ÐÅÒ¯Á¤ÞÀÉ\ Tags(&T) +" ------------------------------------------------------------------------ +menutrans &Folding ÂÐÅ|(Fold)³]©w(&F) + " {{{ Tools.Fold + menutrans &Enable/Disable\ foldszi ¤Á´«¨Ï¥Î\ Folding(&E)zi + menutrans &View\ Cursor\ Linezv À˵ø¦¹¼h\ Fold(&V)zv + menutrans Vie&w\ Cursor\ Line\ onlyzMzx ¥uÀ˵ø¦¹\ Fold(&W)zMzx + menutrans C&lose\ more\ foldszm ¦¬°_¤@¼h\ Folds(&L)zm + menutrans &Close\ all\ foldszM ¦¬°_©Ò¦³\ Folds(&C)zM + menutrans O&pen\ more\ foldszr ¥´¶}¤@¼h\ Folds(&P)zr + menutrans &Open\ all\ foldszR ¥´¶}©Ò¦³\ Folds(&O)zR + menutrans Fold\ Met&hod Folding\ ¤è¦¡(&H) + " {{{ Tools.Fold.Method + menutrans M&anual ¤â°Ê«Ø¥ß(&A) + menutrans I&ndent ¨Ì·ÓÁY±Æ(&N) + menutrans E&xpression ¦Û­q¹Bºâ¦¡(&X) + menutrans S&yntax ¨Ì·Ó»yªk³]©w(&Y) + menutrans &Diff Diff(&D) + menutrans Ma&rker ¼Ð°O(Marker)(&R) + " }}} + " ------------------------------------------------------------------------ + menutrans Create\ &Foldzf «Ø¥ß\ Fold(&F)zf + menutrans &Delete\ Foldzd §R°£\ Fold(&D)zd + menutrans Delete\ &All\ FoldszD §R°£©Ò¦³\ Fold(&A)zD + " ------------------------------------------------------------------------ + menutrans Fold\ column\ &width ³]©w\ FoldÄæ¼e(&W) + " }}} +menutrans &Diff Diff(&D) + " {{{ Tools.Diff + menutrans &Update §ó·s(&U) + menutrans &Get\ Block ¨ú±o°Ï¶ô(&G) + menutrans &Put\ Block ¶K¤W°Ï¶ô(&P) + " }}} +" ------------------------------------------------------------------------ +menutrans &Make:make °õ¦æ\ Make(&M):make +menutrans &List\ Errors:cl ¦C¥X½sĶ¿ù»~(&E):cl +menutrans L&ist\ Messages:cl! ¦C¥X©Ò¦³°T®§(&I):cl! +menutrans &Next\ Error:cn ¤U¤@­Ó½sĶ¿ù»~³B(&N):cn +menutrans &Previous\ Error:cp ¤W¤@­Ó½sĶ¿ù»~³B(&P):cp +menutrans &Older\ List:cold À˵ø¿ù»~¦Cªí(&O):cold +menutrans N&ewer\ List:cnew À˵ø·s¿ù»~¦Cªí(&E):cnew +menutrans Error\ &Window ¿ù»~°T®§µøµ¡(&W) + " {{{ Tools.ErrorWindow + menutrans &Update:cwin §ó·s(&U):cwin + menutrans &Open:copen ¶}±Ò(&O):copen + menutrans &Close:cclose Ãö³¬(&C):cclose + " }}} +menutrans &Set\ Compiler ³]©w½sĶ¾¹Compiler(&S) +" ------------------------------------------------------------------------ +menutrans &Convert\ to\ HEX:%!xxd Âà´«¦¨16¶i¦ì½X(&C):%!xxd +menutrans Conve&rt\ back:%!xxd\ -r ±q16¶i¦ì½XÂà´«¦^¤å¦r(&R):%!xxd\ -r +" }}} + +" {{{ Syntax menu: compete +menutrans &Syntax »yªk®ÄªG(&S) +" ------------------------------------------------------------------------ +menutrans &Show\ filetypes\ in\ menu Åã¥Ü©Ò¦³¥i¥ÎÀɮ׮榡(&S) +menutrans Set\ '&syntax'\ only ¥u¨Ï¥Î\ 'syntax'(&S) +menutrans Set\ '&filetype'\ too ¨Ï¥Î\ 'syntax'+'filetype'(&F) +menutrans &Off Ãö³¬®ÄªG(&O) +menutrans &Manual ¤â°Ê³]©w(&M) +menutrans A&utomatic ¦Û°Ê³]©w(&U) +menutrans on/off\ for\ &This\ file ¥u¤Á´«¦¹Àɪº®ÄªG³]©w(&T) +" ------------------------------------------------------------------------ +menutrans Co&lor\ test ¦â±mÅã¥Ü´ú¸Õ(&L) +menutrans &Highlight\ test »yªk®ÄªG´ú¸Õ(&H) +menutrans &Convert\ to\ HTML Âà´«¦¨\ HTML\ ®æ¦¡(&C) +" }}} + +" {{{ Buffers menu: complete +menutrans &Buffers ½w½Ä°Ï(&B) +" ------------------------------------------------------------------------ +menutrans &Refresh\ menu §ó·s(&R) +menutrans &Delete §R°£(&D) +menutrans &Alternate ¤Á´«¤W¦¸½s¿è½w½Ä°Ï(&A) +menutrans &Next ¤U¤@­Ó(&N) +menutrans &Previous «e¤@­Ó(&P) +" ------------------------------------------------------------------------ +" menutrans [No\ file] [µLÀÉ®×] +" }}} + +" {{{ Window menu: complete +menutrans &Window µøµ¡(&W) +" ------------------------------------------------------------------------ +menutrans &New^Wn ¶}·sµøµ¡(&N)^Wn +menutrans S&plit^Ws ¤À³Îµøµ¡(&P)^Ws +menutrans Sp&lit\ To\ #^W^^ ¤À³Î¨ì#(&L)^W^^ +menutrans Split\ &Vertically^Wv ««ª½¤À³Î(&V)^Wv +menutrans Split\ File\ E&xplorer ÀÉ®×Á`ºÞ¦¡¤À³Î(&X) +" ------------------------------------------------------------------------ +menutrans &Close^Wc Ãö³¬µøµ¡(&C)^Wc +menutrans Close\ &Other(s)^Wo Ãö³¬¨ä¥¦µøµ¡(&O)^Wo +" ------------------------------------------------------------------------ +menutrans Move\ &To ²¾¦Ü(&T) + " {{{ Window.MoveTo + menutrans &Top^WK ³»ºÝ(&T)^WK + menutrans &Bottom^WJ ©³ºÝ(&B)^WJ + menutrans &Left\ side^WH ¥ªÃä(&L)^WH + menutrans &Right\ side^WL ¥kÃä(&R)^WL + " }}} +menutrans Rotate\ &Up^WR ¤W²¾µøµ¡(&U)^WR +menutrans Rotate\ &Down^Wr ¤U²¾µøµ¡(&D)^Wr +" ------------------------------------------------------------------------ +menutrans &Equal\ Size^W= ©Ò¦³µøµ¡µ¥°ª(&E)^W= +menutrans &Max\ Height^W_ ³Ì¤j°ª«×(&M)^W +menutrans M&in\ Height^W1_ ³Ì¤p°ª«×(&I)^W1_ +menutrans Max\ &Width^W\| ³Ì¤j¼e«×(&W)^W\| +menutrans Min\ Widt&h^W1\| ³Ì¤p¼e«×(&H)^W1\| +" }}} + +" {{{ The popup menu: complete +menutrans &Undo ´_­ì(&U) +" ------------------------------------------------------------------------ +menutrans Cu&t °Å¤U(&T) +menutrans &Copy ½Æ»s(&C) +menutrans &Paste ¶K¤W(&P) +menutrans &Delete §R°£(&D) +" ------------------------------------------------------------------------ +menutrans Select\ Blockwise Blockwise¦¡¿ï¾Ü +menutrans Select\ &Word ¿ï¾Ü³æ¦r(&W) +menutrans Select\ &Line ¿ï¾Ü¦æ(&L) +menutrans Select\ &Block ¿ï¾Ü°Ï¶ô(&B) +menutrans Select\ &All ¥þ¿ï(&A) +" }}} + +" {{{ The GUI toolbar: complete +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open ¶}±ÒÀÉ®× + tmenu ToolBar.Save Àx¦s¥Ø«e½s¿è¤¤ªºÀÉ®× + tmenu ToolBar.SaveAll Àx¦s¥þ³¡ÀÉ®× + tmenu ToolBar.Print ¦C¦L +" ------------------------------------------------------------------------ + tmenu ToolBar.Undo ´_­ì¤W¦¸ÅÜ°Ê + tmenu ToolBar.Redo ¨ú®ø¤W¦¸´_­ì°Ê§@ +" ------------------------------------------------------------------------ + tmenu ToolBar.Cut °Å¤U¦Ü°Å¶Kï + tmenu ToolBar.Copy ½Æ»s¨ì°Å¶Kï + tmenu ToolBar.Paste ¥Ñ°Å¶Kï¶K¤W +" ------------------------------------------------------------------------ + tmenu ToolBar.Find ´M§ä... + tmenu ToolBar.FindNext §ä¤U¤@­Ó + tmenu ToolBar.FindPrev §ä¤W¤@­Ó + tmenu ToolBar.Replace ¨ú¥N... +" ------------------------------------------------------------------------ + tmenu ToolBar.LoadSesn ¸ü¤J Session + tmenu ToolBar.SaveSesn Àx¦s¥Ø«eªº Session + tmenu ToolBar.RunScript °õ¦æ Vim µ{¦¡ÀÉ +" ------------------------------------------------------------------------ + tmenu ToolBar.Make °õ¦æ Make + tmenu ToolBar.Shell ¶}±Ò¤@­Ó©R¥O¦Cµøµ¡ DosBox + tmenu ToolBar.RunCtags °õ¦æ ctags + tmenu ToolBar.TagJump ¸õ¨ì¥Ø«e´å¼Ð¦ì¸mªº tag + tmenu ToolBar.Help Vim »²§U»¡©ú + tmenu ToolBar.FindHelp ·j´M Vim »¡©ú¤å¥ó + endfun +endif +" }}} + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:foldmethod=marker:nowrap:foldcolumn=2:foldlevel=1 diff --git a/share/vim/vim73/lang/menu_cs.cp1250.vim b/share/vim/vim74/lang/menu_cs.cp1250.vim similarity index 100% rename from share/vim/vim73/lang/menu_cs.cp1250.vim rename to share/vim/vim74/lang/menu_cs.cp1250.vim diff --git a/share/vim/vim73/lang/menu_cs.latin1.vim b/share/vim/vim74/lang/menu_cs.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_cs.latin1.vim rename to share/vim/vim74/lang/menu_cs.latin1.vim diff --git a/share/vim/vim73/lang/menu_cs_cz.cp1250.vim b/share/vim/vim74/lang/menu_cs_cz.cp1250.vim similarity index 100% rename from share/vim/vim73/lang/menu_cs_cz.cp1250.vim rename to share/vim/vim74/lang/menu_cs_cz.cp1250.vim diff --git a/share/vim/vim74/lang/menu_cs_cz.iso_8859-2.vim b/share/vim/vim74/lang/menu_cs_cz.iso_8859-2.vim new file mode 100644 index 00000000..410d548e --- /dev/null +++ b/share/vim/vim74/lang/menu_cs_cz.iso_8859-2.vim @@ -0,0 +1,308 @@ +" Menu Translations: Czech (ISO-8859-2) +" Maintainer: Jiri Sedlak +" Previous maintainer: Jiri Brezina +" Based on: menu.vim (2012-10-21) + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif + +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding iso-8859-2 + +" {{{ File menu +menutrans &File &Soubor +menutrans &Open\.\.\.:e &Otevøít\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Otevøít\ v\ no&vém\ oknì\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Otevøít\ tab\.\.\.:tabnew +menutrans &New:enew &Nový:enew +menutrans &Close:close &Zavøít:close +menutrans &Save:w &Ulo¾it:w +menutrans Save\ &As\.\.\.:sav Ulo¾it\ &jako\.\.\.:sav +if has("printer") || has("unix") + menutrans &Print &Tisk +endif +menutrans Sa&ve-Exit:wqa U&lo¾it\ a\ ukonèit:wqa +menutrans E&xit:qa &Ukonèit:qa + +if has("diff") + menutrans Split\ &Diff\ with\.\.\. Rozdìlit\ okno\ -\ &Diff\.\.\. + menutrans Split\ Patched\ &By\.\.\. Rozdìlit\ okno\ -\ &Patch\.\.\. +endif +" }}} + +" {{{ Edit menu +menutrans &Edit Úpr&avy +menutrans &Undou &Zpìtu +menutrans &Redo^R Z&ru¹it\ vrácení^R +menutrans Rep&eat\. &Opakovat\. +menutrans Cu&t"+x &Vyøíznout"+x +menutrans &Copy"+y &Kopírovat"+y +menutrans &Paste"+gP V&lo¾it"+gP +menutrans Put\ &Before[p Vlo¾it\ &pøed[p +menutrans Put\ &After]p Vlo¾i&t\ za]p +if has("win32") || has("win16") + menutrans &Deletex &Smazatx +endif +menutrans &Select\ AllggVG Vy&brat\ v¹eggVG +if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif") + menutrans &Find\.\.\. &Hledat\.\.\. + menutrans Find\ and\ Rep&lace\.\.\. &Nahradit\.\.\. +else + menutrans Find/ &Hledat/ + menutrans Find\ and\ Rep&lace:%s &Nahradit:%s + menutrans Find\ and\ Rep&lace:s &Nahradit:s +endif +menutrans Settings\ &Window Nastav&ení\ okna +" {{{2 Edit -1 +menutrans Startup\ &Settings Poèáteèní\ &nastavení +menutrans &Global\ Settings &Globální\ nastavení +menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Pøepnout\ zvýraznìní\ vzoru:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Pøepnout\ ignorování\ &VERZÁLEK:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Pøepnout\ &Showmatch\ \{\(\[\])\}:set\ sm! +menutrans &Context\ lines Zobrazit\ konte&xt\ kurzoru +menutrans &Virtual\ Edit Virtuální\ p&ozice\ kurzoru +menutrans Never Nikdy +menutrans Block\ Selection Výbìr\ Bloku +menutrans Insert\ mode Insert\ mód +menutrans Block\ and\ Insert Blok\ a\ Insert +menutrans Always V¾dycky +menutrans Toggle\ Insert\ &Mode:set\ im! Pøepnout\ Insert\ mó&d:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Pøepnout\ kompatibilní\ re¾im\ s\ 'vi':set\ cp! +menutrans Search\ &Path\.\.\. Nastavit\ &cestu\ k\ prohledávání\.\.\. +menutrans Ta&g\ Files\.\.\. Ta&g\ soubory\.\.\. +menutrans Toggle\ &Toolbar Pøepnout\ &Toolbar +menutrans Toggle\ &Bottom\ Scrollbar Pø&epnout\ dolní\ rolovací\ li¹tu +menutrans Toggle\ &Left\ Scrollbar Pøepnout\ &levou\ rolovací\ li¹tu +menutrans Toggle\ &Right\ Scrollbar Pøepnout\ p&ravou\ rolovací\ li¹tu +" {{{2 Edit -2 +menutrans F&ile\ Settings Nastavení\ so&uboru +menutrans Toggle\ Line\ &Numbering:set\ nu! Pøepnout\ èíslování\ øá&dkù:set\ nu! +menutrans Toggle\ relati&ve\ Line\ Numbering:set\ rnu! Pøepnout\ relativní\ èíslování\ øá&dkù:set\ rnu! +menutrans Toggle\ &List\ Mode:set\ list! Pøepnout\ &List\ mód:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Pøepnout\ zala&mování\ øádkù:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Pøepnout\ zl&om\ ve\ slovì:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Pøepnout\ &expand-tab:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Pøepnout\ &auto-indent:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Pøepnout\ &C-indenting:set\ cin! +menutrans &Shiftwidth Nastav&it\ ¹íøku\ od&sazení +menutrans Soft\ &Tabstop Nastavit\ Soft\ &Tabstop +menutrans Te&xt\ Width\.\.\. ©íøka\ te&xtu\.\.\. +menutrans &File\ Format\.\.\. &Formát\ souboru\.\.\. +" {{{2 Edit -3 +menutrans C&olor\ Scheme Barevné\ s&chéma +menutrans &Keymap Klávesová\ m&apa +if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac") + menutrans Select\ Fo&nt\.\.\. Vybrat\ pís&mo\.\.\. +endif +" }}}1 + +" {{{ Programming menu +menutrans &Tools Nást&roje +menutrans &Jump\ to\ this\ tagg^] &Skoèit\ na\ tagg^] +menutrans Jump\ &back^T Skoèit\ &zpìt^T +menutrans Build\ &Tags\ File &Vytvoøit\ soubor\ tagù + +if has("spell") + menutrans &Spelling &Kontrola\ pravopisu + menutrans &Spell\ Check\ On &Zapnout\ kontrolu\ pravopisu + menutrans Spell\ Check\ &Off &Vypnout \kontrolu\ pravopisu + menutrans To\ &Next\ error]s &Dal¹í\ chyba]s + menutrans To\ &Previous\ error[s &Pøedchozí\ chyba[s + menutrans Suggest\ &Correctionsz= &Navrhnout\ opravyz= + menutrans &Repeat\ correction:spellrepall Zopakovat\ &opravu:spellrepall + menutrans Set\ language\ to\ "en" Nastavit\ jazyk\ na\ "en" + menutrans Set\ language\ to\ "en_au" Nastavit\ jazyk\ na\ "en_au" + menutrans Set\ language\ to\ "en_ca" Nastavit\ jazyk\ na\ "en_ca" + menutrans Set\ language\ to\ "en_gb" Nastavit\ jazyk\ na\ "en_gb" + menutrans Set\ language\ to\ "en_nz" Nastavit\ jazyk\ na\ "en_nz" + menutrans Set\ language\ to\ "en_us" Nastavit\ jazyk\ na\ "en_us" + menutrans &Find\ More\ Languages Nalézt\ dal¹í\ &jazyky + let g:menutrans_set_lang_to = "Nastavit jazyk na" +endif + +if has("Folding") + menutrans &Folding &Skládání + menutrans &Enable/Disable\ foldszi &Ano/Nezi + menutrans &View\ Cursor\ Linezv Zobrazit\ øádek\ &kurzoruzv + menutrans Vie&w\ Cursor\ Line\ onlyzMzx Zobrazit\ &pouze\ øádek\ kurzoru\ zMzx + menutrans C&lose\ more\ foldszm Slo¾it\ &jednu\ úroveò\ skladùzm + menutrans &Close\ all\ foldszM Slo¾it\ v¹echny\ skladyzM + menutrans O&pen\ more\ foldszr Pøidat\ jednu\ úroveò\ skladùzr + menutrans &Open\ all\ foldszR &Otevøít\ v¹echny\ skladyzR + menutrans Fold\ Met&hod &Metoda\ skládání + menutrans M&anual &Ruènì + menutrans I&ndent &Odsazení + menutrans E&xpression &Výraz + menutrans S&yntax &Syntaxe + menutrans &Diff &Rozdíly + menutrans Ma&rker &Znaèky + menutrans Create\ &Foldzf Vytvoøit\ &skladzf + menutrans &Delete\ Foldzd Vymazat\ skla&dzd + menutrans Delete\ &All\ FoldszD Vymazat\ v¹echny\ skladyzD + menutrans Fold\ col&umn\ width Sloupec\ zob&razení\ skladù +endif + +if has("diff") + menutrans &Update &Obnovit + menutrans &Get\ Block &Sejmout\ Blok + menutrans &Put\ Block &Vlo¾it\ Blok +endif + +menutrans &Make:make &Make:make +menutrans &List\ Errors:cl Výpis\ &chyb:cl +menutrans L&ist\ Messages:cl! Výp&is\ zpráv:cl! +menutrans &Next\ Error:cn Dal¹í\ ch&yba:cn +menutrans &Previous\ Error:cp &Pøedchozí\ chyba:cp +menutrans &Older\ List:cold Sta&r¹í\ seznam:cold +menutrans N&ewer\ List:cnew N&ovìj¹í\ seznam:cnew +menutrans Error\ &Window Chybové\ o&kno +menutrans SeT\ Compiler Nas&tavení\ kompilátoru +menutrans &Update:cwin O&bnovit:cwin +menutrans &Open:copen &Otevøít:copen +menutrans &Close:cclose &Zavøít:cclose +menutrans Se&T\ Compiler N&astavit\ kompilátor + +menutrans &Convert\ to\ HEX:%!xxd Pøevést\ do\ ¹estnáctkového\ formát&u:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Pø&evést\ zpìt:%!xxd\ -r +" }}} + +" {{{ Syntax menu +menutrans &Syntax Synta&xe +menutrans Set\ '&syntax'\ only Nastavit\ pouze\ 'synta&x' +menutrans Set\ '&filetype'\ too Nastavit\ také\ '&filetype' +menutrans &Off &Vypnout +menutrans &Manual &Ruènì +menutrans A&utomatic A&utomaticky +menutrans on/off\ for\ &This\ file &Pøepnout\ (pro\ tento\ soubor) +menutrans o&ff\ (this\ file) vyp&nout\ (pro\ tento\ soubor) +menutrans Co&lor\ test Test\ &barev +menutrans &Highlight\ test &Test\ zvýrazòování +menutrans &Convert\ to\ HTML Pøevést\ &do\ HTML +menutrans &Show\ filetypes\ in\ menu &Zobrazit\ výbìr\ mo¾ností +" }}} + +" {{{ Menu Buffers +menutrans &Buffers &Buffery +menutrans &Refresh\ menu &Obnovit\ menu +menutrans &Delete Z&ru¹it +menutrans &Alternate &Zmìnit +menutrans &Next &Dal¹í +menutrans &Previous &Pøedchozí +" }}} + +" {{{ Menu Window +menutrans &Window &Okna +menutrans &New^Wn &Nové^Wn +menutrans S&plit^Ws &Rozdìlit^Ws +menutrans Sp&lit\ To\ #^W^^ Ro&zdìlit\ na\ #^W^^ +menutrans Split\ &Vertically^Wv Rozdìlit\ &vertikálnì^Wv +menutrans Split\ File\ E&xplorer Rozdìlit\ -\ File\ E&xplorer +menutrans Move\ &To &Pøesun +menutrans &Top^WK &Nahoru^WK +menutrans &Bottom^WJ &Dolu^WJ +menutrans &Left\ side^WH &Vlevo^WH +menutrans &Right\ side^WL Vp&ravo^WL + +menutrans &Close^Wc Zavøí&t^Wc +menutrans Close\ &Other(s)^Wo Zavøít\ &ostatní^Wo +menutrans Ne&xt^Ww &Dal¹í^Ww +menutrans P&revious^WW &Pøedchozí^WW +menutrans &Equal\ Size^W= &Stejná\ vý¹ka^W= +menutrans &Max\ Height^W_ Maximální\ vý¹&ka^W_ +menutrans M&in\ Height^W1_ M&inimální\ vý¹ka^W1_ +menutrans Max\ &Width^W\| &Maximální\ ¹íøka^W\| +menutrans Min\ Widt&h^W1\| Minimální\ ¹íøk&a^W1\| +menutrans Rotate\ &Up^WR Rotovat\ na&horu^WR +menutrans Rotate\ &Down^Wr Rotovat\ &dolù^Wr + +" {{{ Help menu +menutrans &Help &Nápovìda +menutrans &Overview &Pøehled +menutrans &User\ Manual &U¾ivatelský\ Manuál +menutrans &How-to\ links Ho&wto +menutrans &GUI &Grafické\ rozhraní +menutrans &Credits &Autoøi +menutrans Co&pying &Licenèní\ politika +menutrans &Sponsor/Register Sponzorování/&Registrace +menutrans &Find\.\.\. &Hledat\.\.\. +menutrans O&rphans O&siøelé\ dìti +menutrans &Version &Verze +menutrans &About &O\ aplikaci +" }}} + +" {{{ The popup menu +menutrans &Undo &Zpìt +menutrans Cu&t &Vyøíznout +menutrans &Copy &Kopírovat +menutrans &Paste &Vlo¾it +menutrans &Delete &Smazat +menutrans Select\ Blockwise Vybrat\ blokovì +menutrans Select\ &Word Vybrat\ &slovo +menutrans Select\ Pa&ragraph Vybrat\ &odstavec +menutrans Select\ &Sentence Vybrat\ vì&tu +menutrans Select\ &Line Vybrat\ &øádek +menutrans Select\ &Block Vybrat\ &blok +menutrans Select\ &All Vybrat\ &v¹e +" }}} + +" {{{ The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Otevøít soubor + tmenu ToolBar.Save Ulo¾it soubor + tmenu ToolBar.SaveAll Ulo¾it v¹echny soubory + if has("printer") || has("unix") + tmenu ToolBar.Print Tisk + endif + tmenu ToolBar.Undo Zpìt + tmenu ToolBar.Redo Zru¹it vrácení + tmenu ToolBar.Cut Vyøíznout + tmenu ToolBar.Copy Kopírovat + tmenu ToolBar.Paste Vlo¾it + tmenu ToolBar.Find Hledat... + tmenu ToolBar.FindNext Hledat dal¹í + tmenu ToolBar.FindPrev Hledat pøedchozí + tmenu ToolBar.Replace Nahradit... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nové okno + tmenu ToolBar.WinSplit Rozdìlit okno + tmenu ToolBar.WinMax Maximalizovat okno + tmenu ToolBar.WinMin Minimalizovat okno + tmenu ToolBar.WinClose Zavøít okno + endif + tmenu ToolBar.LoadSesn Naèíst sezení + tmenu ToolBar.SaveSesn Ulo¾it sezení + tmenu ToolBar.RunScript Spustit skript + tmenu ToolBar.Make Spustit make + tmenu ToolBar.Shell Spustit shell + tmenu ToolBar.RunCtags Spustit ctags + tmenu ToolBar.TagJump Skoèit na tag pod kurzorem + tmenu ToolBar.Help Nápovìda + tmenu ToolBar.FindHelp Hledat nápovìdu k... + endfun +endif +" }}} + +" {{{ DIALOG TEXTS +let g:menutrans_no_file = "[®ádný soubor]" +let g:menutrans_help_dialog = "Zadejte hledaný pøíkaz nebo slovo:\n\n\tPøidejte i_ pro pøíkazy vkládacího re¾imu (napø. i_CTRL-X)\n\tPøidejte c_ pro pøíkazy pøíkazové øádky (napø. c_)\n\tPøidejte ' pro jméno volby (napø. 'shiftwidth')" +let g:menutrans_path_dialog = "Zadejte cesty pro vyhledávání souborù. Jednotlivé cesty oddìlte èárkou" +let g:menutrans_tags_dialog = "Zadejte jména souborù s tagy. Jména oddìlte èárkami." +let g:menutrans_textwidth_dialog = "Zadejte délku øádku (0 pro zakázání formátování):" +let g:menutrans_fileformat_dialog = "Vyberte typ konce øádkù" +" }}}" + +let &cpo = s:keepcpo +unlet s:keepcpo + + + +" vim:set foldmethod=marker expandtab tabstop=3 shiftwidth=3: diff --git a/share/vim/vim74/lang/menu_cs_cz.latin1.vim b/share/vim/vim74/lang/menu_cs_cz.latin1.vim new file mode 100644 index 00000000..3bf608de --- /dev/null +++ b/share/vim/vim74/lang/menu_cs_cz.latin1.vim @@ -0,0 +1,3 @@ +" Menu Translations: Czech + +source :p:h/menu_czech_czech_republic.ascii.vim diff --git a/share/vim/vim74/lang/menu_cs_cz.utf-8.vim b/share/vim/vim74/lang/menu_cs_cz.utf-8.vim new file mode 100644 index 00000000..91a8eccd --- /dev/null +++ b/share/vim/vim74/lang/menu_cs_cz.utf-8.vim @@ -0,0 +1,308 @@ +" Menu Translations: Czech (UTF-8) +" Maintainer: Jiri Sedlak +" Previous maintainer: Jiri Brezina +" Based on: menu.vim (2012-10-21) + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif + +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +" {{{ File menu +menutrans &File &Soubor +menutrans &Open\.\.\.:e &Otevřít\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Otevřít\ v\ no&vém\ okně\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Otevřít\ tab\.\.\.:tabnew +menutrans &New:enew &Nový:enew +menutrans &Close:close &Zavřít:close +menutrans &Save:w &Uložit:w +menutrans Save\ &As\.\.\.:sav Uložit\ &jako\.\.\.:sav +if has("printer") || has("unix") + menutrans &Print &Tisk +endif +menutrans Sa&ve-Exit:wqa U&ložit\ a\ ukončit:wqa +menutrans E&xit:qa &Ukončit:qa + +if has("diff") + menutrans Split\ &Diff\ with\.\.\. Rozdělit\ okno\ -\ &Diff\.\.\. + menutrans Split\ Patched\ &By\.\.\. Rozdělit\ okno\ -\ &Patch\.\.\. +endif +" }}} + +" {{{ Edit menu +menutrans &Edit Úpr&avy +menutrans &Undou &Zpětu +menutrans &Redo^R Z&rušit\ vrácení^R +menutrans Rep&eat\. &Opakovat\. +menutrans Cu&t"+x &Vyříznout"+x +menutrans &Copy"+y &Kopírovat"+y +menutrans &Paste"+gP V&ložit"+gP +menutrans Put\ &Before[p Vložit\ &před[p +menutrans Put\ &After]p Vloži&t\ za]p +if has("win32") || has("win16") + menutrans &Deletex &Smazatx +endif +menutrans &Select\ AllggVG Vy&brat\ všeggVG +if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif") + menutrans &Find\.\.\. &Hledat\.\.\. + menutrans Find\ and\ Rep&lace\.\.\. &Nahradit\.\.\. +else + menutrans Find/ &Hledat/ + menutrans Find\ and\ Rep&lace:%s &Nahradit:%s + menutrans Find\ and\ Rep&lace:s &Nahradit:s +endif +menutrans Settings\ &Window Nastav&ení\ okna +" {{{2 Edit -1 +menutrans Startup\ &Settings Počáteční\ &nastavení +menutrans &Global\ Settings &Globální\ nastavení +menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Přepnout\ zvýraznění\ vzoru:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Přepnout\ ignorování\ &VERZÁLEK:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Přepnout\ &Showmatch\ \{\(\[\])\}:set\ sm! +menutrans &Context\ lines Zobrazit\ konte&xt\ kurzoru +menutrans &Virtual\ Edit Virtuální\ p&ozice\ kurzoru +menutrans Never Nikdy +menutrans Block\ Selection Výběr\ Bloku +menutrans Insert\ mode Insert\ mód +menutrans Block\ and\ Insert Blok\ a\ Insert +menutrans Always Vždycky +menutrans Toggle\ Insert\ &Mode:set\ im! Přepnout\ Insert\ mó&d:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Přepnout\ kompatibilní\ režim\ s\ 'vi':set\ cp! +menutrans Search\ &Path\.\.\. Nastavit\ &cestu\ k\ prohledávání\.\.\. +menutrans Ta&g\ Files\.\.\. Ta&g\ soubory\.\.\. +menutrans Toggle\ &Toolbar Přepnout\ &Toolbar +menutrans Toggle\ &Bottom\ Scrollbar Př&epnout\ dolní\ rolovací\ lištu +menutrans Toggle\ &Left\ Scrollbar Přepnout\ &levou\ rolovací\ lištu +menutrans Toggle\ &Right\ Scrollbar Přepnout\ p&ravou\ rolovací\ lištu +" {{{2 Edit -2 +menutrans F&ile\ Settings Nastavení\ so&uboru +menutrans Toggle\ Line\ &Numbering:set\ nu! Přepnout\ číslování\ řá&dků:set\ nu! +menutrans Toggle\ relati&ve\ Line\ Numbering:set\ rnu! Přepnout\ relativní\ číslování\ řá&dků:set\ rnu! +menutrans Toggle\ &List\ Mode:set\ list! Přepnout\ &List\ mód:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Přepnout\ zala&mování\ řádků:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Přepnout\ zl&om\ ve\ slově:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Přepnout\ &expand-tab:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Přepnout\ &auto-indent:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Přepnout\ &C-indenting:set\ cin! +menutrans &Shiftwidth Nastav&it\ šířku\ od&sazení +menutrans Soft\ &Tabstop Nastavit\ Soft\ &Tabstop +menutrans Te&xt\ Width\.\.\. Šířka\ te&xtu\.\.\. +menutrans &File\ Format\.\.\. &Formát\ souboru\.\.\. +" {{{2 Edit -3 +menutrans C&olor\ Scheme Barevné\ s&chéma +menutrans &Keymap Klávesová\ m&apa +if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac") + menutrans Select\ Fo&nt\.\.\. Vybrat\ pís&mo\.\.\. +endif +" }}}1 + +" {{{ Programming menu +menutrans &Tools Nást&roje +menutrans &Jump\ to\ this\ tagg^] &Skočit\ na\ tagg^] +menutrans Jump\ &back^T Skočit\ &zpět^T +menutrans Build\ &Tags\ File &Vytvořit\ soubor\ tagů + +if has("spell") + menutrans &Spelling &Kontrola\ pravopisu + menutrans &Spell\ Check\ On &Zapnout\ kontrolu\ pravopisu + menutrans Spell\ Check\ &Off &Vypnout \kontrolu\ pravopisu + menutrans To\ &Next\ error]s &Další\ chyba]s + menutrans To\ &Previous\ error[s &Předchozí\ chyba[s + menutrans Suggest\ &Correctionsz= &Navrhnout\ opravyz= + menutrans &Repeat\ correction:spellrepall Zopakovat\ &opravu:spellrepall + menutrans Set\ language\ to\ "en" Nastavit\ jazyk\ na\ "en" + menutrans Set\ language\ to\ "en_au" Nastavit\ jazyk\ na\ "en_au" + menutrans Set\ language\ to\ "en_ca" Nastavit\ jazyk\ na\ "en_ca" + menutrans Set\ language\ to\ "en_gb" Nastavit\ jazyk\ na\ "en_gb" + menutrans Set\ language\ to\ "en_nz" Nastavit\ jazyk\ na\ "en_nz" + menutrans Set\ language\ to\ "en_us" Nastavit\ jazyk\ na\ "en_us" + menutrans &Find\ More\ Languages Nalézt\ další\ &jazyky + let g:menutrans_set_lang_to = "Nastavit jazyk na" +endif + +if has("Folding") + menutrans &Folding &Skládání + menutrans &Enable/Disable\ foldszi &Ano/Nezi + menutrans &View\ Cursor\ Linezv Zobrazit\ řádek\ &kurzoruzv + menutrans Vie&w\ Cursor\ Line\ onlyzMzx Zobrazit\ &pouze\ řádek\ kurzoru\ zMzx + menutrans C&lose\ more\ foldszm Složit\ &jednu\ úroveň\ skladůzm + menutrans &Close\ all\ foldszM Složit\ všechny\ skladyzM + menutrans O&pen\ more\ foldszr Přidat\ jednu\ úroveň\ skladůzr + menutrans &Open\ all\ foldszR &Otevřít\ všechny\ skladyzR + menutrans Fold\ Met&hod &Metoda\ skládání + menutrans M&anual &Ručně + menutrans I&ndent &Odsazení + menutrans E&xpression &Výraz + menutrans S&yntax &Syntaxe + menutrans &Diff &Rozdíly + menutrans Ma&rker &Značky + menutrans Create\ &Foldzf Vytvořit\ &skladzf + menutrans &Delete\ Foldzd Vymazat\ skla&dzd + menutrans Delete\ &All\ FoldszD Vymazat\ všechny\ skladyzD + menutrans Fold\ col&umn\ width Sloupec\ zob&razení\ skladů +endif + +if has("diff") + menutrans &Update &Obnovit + menutrans &Get\ Block &Sejmout\ Blok + menutrans &Put\ Block &Vložit\ Blok +endif + +menutrans &Make:make &Make:make +menutrans &List\ Errors:cl Výpis\ &chyb:cl +menutrans L&ist\ Messages:cl! Výp&is\ zpráv:cl! +menutrans &Next\ Error:cn Další\ ch&yba:cn +menutrans &Previous\ Error:cp &Předchozí\ chyba:cp +menutrans &Older\ List:cold Sta&rší\ seznam:cold +menutrans N&ewer\ List:cnew N&ovější\ seznam:cnew +menutrans Error\ &Window Chybové\ o&kno +menutrans SeT\ Compiler Nas&tavení\ kompilátoru +menutrans &Update:cwin O&bnovit:cwin +menutrans &Open:copen &Otevřít:copen +menutrans &Close:cclose &Zavřít:cclose +menutrans Se&T\ Compiler N&astavit\ kompilátor + +menutrans &Convert\ to\ HEX:%!xxd Převést\ do\ šestnáctkového\ formát&u:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Př&evést\ zpět:%!xxd\ -r +" }}} + +" {{{ Syntax menu +menutrans &Syntax Synta&xe +menutrans Set\ '&syntax'\ only Nastavit\ pouze\ 'synta&x' +menutrans Set\ '&filetype'\ too Nastavit\ také\ '&filetype' +menutrans &Off &Vypnout +menutrans &Manual &Ručně +menutrans A&utomatic A&utomaticky +menutrans on/off\ for\ &This\ file &Přepnout\ (pro\ tento\ soubor) +menutrans o&ff\ (this\ file) vyp&nout\ (pro\ tento\ soubor) +menutrans Co&lor\ test Test\ &barev +menutrans &Highlight\ test &Test\ zvýrazňování +menutrans &Convert\ to\ HTML Převést\ &do\ HTML +menutrans &Show\ filetypes\ in\ menu &Zobrazit\ výběr\ možností +" }}} + +" {{{ Menu Buffers +menutrans &Buffers &Buffery +menutrans &Refresh\ menu &Obnovit\ menu +menutrans &Delete Z&rušit +menutrans &Alternate &Změnit +menutrans &Next &Další +menutrans &Previous &Předchozí +" }}} + +" {{{ Menu Window +menutrans &Window &Okna +menutrans &New^Wn &Nové^Wn +menutrans S&plit^Ws &Rozdělit^Ws +menutrans Sp&lit\ To\ #^W^^ Ro&zdělit\ na\ #^W^^ +menutrans Split\ &Vertically^Wv Rozdělit\ &vertikálně^Wv +menutrans Split\ File\ E&xplorer Rozdělit\ -\ File\ E&xplorer +menutrans Move\ &To &Přesun +menutrans &Top^WK &Nahoru^WK +menutrans &Bottom^WJ &Dolu^WJ +menutrans &Left\ side^WH &Vlevo^WH +menutrans &Right\ side^WL Vp&ravo^WL + +menutrans &Close^Wc Zavří&t^Wc +menutrans Close\ &Other(s)^Wo Zavřít\ &ostatní^Wo +menutrans Ne&xt^Ww &Další^Ww +menutrans P&revious^WW &Předchozí^WW +menutrans &Equal\ Size^W= &Stejná\ výška^W= +menutrans &Max\ Height^W_ Maximální\ výš&ka^W_ +menutrans M&in\ Height^W1_ M&inimální\ výška^W1_ +menutrans Max\ &Width^W\| &Maximální\ šířka^W\| +menutrans Min\ Widt&h^W1\| Minimální\ šířk&a^W1\| +menutrans Rotate\ &Up^WR Rotovat\ na&horu^WR +menutrans Rotate\ &Down^Wr Rotovat\ &dolů^Wr + +" {{{ Help menu +menutrans &Help &Nápověda +menutrans &Overview &Přehled +menutrans &User\ Manual &Uživatelský\ Manuál +menutrans &How-to\ links Ho&wto +menutrans &GUI &Grafické\ rozhraní +menutrans &Credits &Autoři +menutrans Co&pying &Licenční\ politika +menutrans &Sponsor/Register Sponzorování/&Registrace +menutrans &Find\.\.\. &Hledat\.\.\. +menutrans O&rphans O&siřelé\ děti +menutrans &Version &Verze +menutrans &About &O\ aplikaci +" }}} + +" {{{ The popup menu +menutrans &Undo &Zpět +menutrans Cu&t &Vyříznout +menutrans &Copy &Kopírovat +menutrans &Paste &Vložit +menutrans &Delete &Smazat +menutrans Select\ Blockwise Vybrat\ blokově +menutrans Select\ &Word Vybrat\ &slovo +menutrans Select\ Pa&ragraph Vybrat\ &odstavec +menutrans Select\ &Sentence Vybrat\ vě&tu +menutrans Select\ &Line Vybrat\ &řádek +menutrans Select\ &Block Vybrat\ &blok +menutrans Select\ &All Vybrat\ &vše +" }}} + +" {{{ The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Otevřít soubor + tmenu ToolBar.Save Uložit soubor + tmenu ToolBar.SaveAll Uložit všechny soubory + if has("printer") || has("unix") + tmenu ToolBar.Print Tisk + endif + tmenu ToolBar.Undo Zpět + tmenu ToolBar.Redo Zrušit vrácení + tmenu ToolBar.Cut Vyříznout + tmenu ToolBar.Copy Kopírovat + tmenu ToolBar.Paste Vložit + tmenu ToolBar.Find Hledat... + tmenu ToolBar.FindNext Hledat další + tmenu ToolBar.FindPrev Hledat předchozí + tmenu ToolBar.Replace Nahradit... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nové okno + tmenu ToolBar.WinSplit Rozdělit okno + tmenu ToolBar.WinMax Maximalizovat okno + tmenu ToolBar.WinMin Minimalizovat okno + tmenu ToolBar.WinClose Zavřít okno + endif + tmenu ToolBar.LoadSesn Načíst sezení + tmenu ToolBar.SaveSesn Uložit sezení + tmenu ToolBar.RunScript Spustit skript + tmenu ToolBar.Make Spustit make + tmenu ToolBar.Shell Spustit shell + tmenu ToolBar.RunCtags Spustit ctags + tmenu ToolBar.TagJump Skočit na tag pod kurzorem + tmenu ToolBar.Help Nápověda + tmenu ToolBar.FindHelp Hledat nápovědu k... + endfun +endif +" }}} + +" {{{ DIALOG TEXTS +let g:menutrans_no_file = "[Žádný soubor]" +let g:menutrans_help_dialog = "Zadejte hledaný příkaz nebo slovo:\n\n\tPřidejte i_ pro příkazy vkládacího režimu (např. i_CTRL-X)\n\tPřidejte c_ pro příkazy příkazové řádky (např. c_)\n\tPřidejte ' pro jméno volby (např. 'shiftwidth')" +let g:menutrans_path_dialog = "Zadejte cesty pro vyhledávání souborů. Jednotlivé cesty oddělte čárkou" +let g:menutrans_tags_dialog = "Zadejte jména souborů s tagy. Jména oddělte čárkami." +let g:menutrans_textwidth_dialog = "Zadejte délku řádku (0 pro zakázání formátování):" +let g:menutrans_fileformat_dialog = "Vyberte typ konce řádků" +" }}}" + +let &cpo = s:keepcpo +unlet s:keepcpo + + + +" vim:set foldmethod=marker expandtab tabstop=3 shiftwidth=3: diff --git a/share/vim/vim74/lang/menu_czech_czech_republic.1250.vim b/share/vim/vim74/lang/menu_czech_czech_republic.1250.vim new file mode 100644 index 00000000..f9c85d03 --- /dev/null +++ b/share/vim/vim74/lang/menu_czech_czech_republic.1250.vim @@ -0,0 +1,308 @@ +" Menu Translations: Czech (CP1250) +" Maintainer: Jiri Sedlak +" Previous maintainer: Jiri Brezina +" Based on: menu.vim (2012-10-21) + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif + +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding cp1250 + +" {{{ File menu +menutrans &File &Soubor +menutrans &Open\.\.\.:e &Otevøít\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Otevøít\ v\ no&vém\ oknì\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Otevøít\ tab\.\.\.:tabnew +menutrans &New:enew &Nový:enew +menutrans &Close:close &Zavøít:close +menutrans &Save:w &Uložit:w +menutrans Save\ &As\.\.\.:sav Uložit\ &jako\.\.\.:sav +if has("printer") || has("unix") + menutrans &Print &Tisk +endif +menutrans Sa&ve-Exit:wqa U&ložit\ a\ ukonèit:wqa +menutrans E&xit:qa &Ukonèit:qa + +if has("diff") + menutrans Split\ &Diff\ with\.\.\. Rozdìlit\ okno\ -\ &Diff\.\.\. + menutrans Split\ Patched\ &By\.\.\. Rozdìlit\ okno\ -\ &Patch\.\.\. +endif +" }}} + +" {{{ Edit menu +menutrans &Edit Úpr&avy +menutrans &Undou &Zpìtu +menutrans &Redo^R Z&rušit\ vrácení^R +menutrans Rep&eat\. &Opakovat\. +menutrans Cu&t"+x &Vyøíznout"+x +menutrans &Copy"+y &Kopírovat"+y +menutrans &Paste"+gP V&ložit"+gP +menutrans Put\ &Before[p Vložit\ &pøed[p +menutrans Put\ &After]p Vloži&t\ za]p +if has("win32") || has("win16") + menutrans &Deletex &Smazatx +endif +menutrans &Select\ AllggVG Vy&brat\ všeggVG +if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif") + menutrans &Find\.\.\. &Hledat\.\.\. + menutrans Find\ and\ Rep&lace\.\.\. &Nahradit\.\.\. +else + menutrans Find/ &Hledat/ + menutrans Find\ and\ Rep&lace:%s &Nahradit:%s + menutrans Find\ and\ Rep&lace:s &Nahradit:s +endif +menutrans Settings\ &Window Nastav&ení\ okna +" {{{2 Edit -1 +menutrans Startup\ &Settings Poèáteèní\ &nastavení +menutrans &Global\ Settings &Globální\ nastavení +menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Pøepnout\ zvýraznìní\ vzoru:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Pøepnout\ ignorování\ &VERZÁLEK:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Pøepnout\ &Showmatch\ \{\(\[\])\}:set\ sm! +menutrans &Context\ lines Zobrazit\ konte&xt\ kurzoru +menutrans &Virtual\ Edit Virtuální\ p&ozice\ kurzoru +menutrans Never Nikdy +menutrans Block\ Selection Výbìr\ Bloku +menutrans Insert\ mode Insert\ mód +menutrans Block\ and\ Insert Blok\ a\ Insert +menutrans Always Vždycky +menutrans Toggle\ Insert\ &Mode:set\ im! Pøepnout\ Insert\ mó&d:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Pøepnout\ kompatibilní\ režim\ s\ 'vi':set\ cp! +menutrans Search\ &Path\.\.\. Nastavit\ &cestu\ k\ prohledávání\.\.\. +menutrans Ta&g\ Files\.\.\. Ta&g\ soubory\.\.\. +menutrans Toggle\ &Toolbar Pøepnout\ &Toolbar +menutrans Toggle\ &Bottom\ Scrollbar Pø&epnout\ dolní\ rolovací\ lištu +menutrans Toggle\ &Left\ Scrollbar Pøepnout\ &levou\ rolovací\ lištu +menutrans Toggle\ &Right\ Scrollbar Pøepnout\ p&ravou\ rolovací\ lištu +" {{{2 Edit -2 +menutrans F&ile\ Settings Nastavení\ so&uboru +menutrans Toggle\ Line\ &Numbering:set\ nu! Pøepnout\ èíslování\ øá&dkù:set\ nu! +menutrans Toggle\ relati&ve\ Line\ Numbering:set\ rnu! Pøepnout\ relativní\ èíslování\ øá&dkù:set\ rnu! +menutrans Toggle\ &List\ Mode:set\ list! Pøepnout\ &List\ mód:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Pøepnout\ zala&mování\ øádkù:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Pøepnout\ zl&om\ ve\ slovì:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Pøepnout\ &expand-tab:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Pøepnout\ &auto-indent:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Pøepnout\ &C-indenting:set\ cin! +menutrans &Shiftwidth Nastav&it\ šíøku\ od&sazení +menutrans Soft\ &Tabstop Nastavit\ Soft\ &Tabstop +menutrans Te&xt\ Width\.\.\. Šíøka\ te&xtu\.\.\. +menutrans &File\ Format\.\.\. &Formát\ souboru\.\.\. +" {{{2 Edit -3 +menutrans C&olor\ Scheme Barevné\ s&chéma +menutrans &Keymap Klávesová\ m&apa +if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac") + menutrans Select\ Fo&nt\.\.\. Vybrat\ pís&mo\.\.\. +endif +" }}}1 + +" {{{ Programming menu +menutrans &Tools Nást&roje +menutrans &Jump\ to\ this\ tagg^] &Skoèit\ na\ tagg^] +menutrans Jump\ &back^T Skoèit\ &zpìt^T +menutrans Build\ &Tags\ File &Vytvoøit\ soubor\ tagù + +if has("spell") + menutrans &Spelling &Kontrola\ pravopisu + menutrans &Spell\ Check\ On &Zapnout\ kontrolu\ pravopisu + menutrans Spell\ Check\ &Off &Vypnout \kontrolu\ pravopisu + menutrans To\ &Next\ error]s &Další\ chyba]s + menutrans To\ &Previous\ error[s &Pøedchozí\ chyba[s + menutrans Suggest\ &Correctionsz= &Navrhnout\ opravyz= + menutrans &Repeat\ correction:spellrepall Zopakovat\ &opravu:spellrepall + menutrans Set\ language\ to\ "en" Nastavit\ jazyk\ na\ "en" + menutrans Set\ language\ to\ "en_au" Nastavit\ jazyk\ na\ "en_au" + menutrans Set\ language\ to\ "en_ca" Nastavit\ jazyk\ na\ "en_ca" + menutrans Set\ language\ to\ "en_gb" Nastavit\ jazyk\ na\ "en_gb" + menutrans Set\ language\ to\ "en_nz" Nastavit\ jazyk\ na\ "en_nz" + menutrans Set\ language\ to\ "en_us" Nastavit\ jazyk\ na\ "en_us" + menutrans &Find\ More\ Languages Nalézt\ další\ &jazyky + let g:menutrans_set_lang_to = "Nastavit jazyk na" +endif + +if has("Folding") + menutrans &Folding &Skládání + menutrans &Enable/Disable\ foldszi &Ano/Nezi + menutrans &View\ Cursor\ Linezv Zobrazit\ øádek\ &kurzoruzv + menutrans Vie&w\ Cursor\ Line\ onlyzMzx Zobrazit\ &pouze\ øádek\ kurzoru\ zMzx + menutrans C&lose\ more\ foldszm Složit\ &jednu\ úroveò\ skladùzm + menutrans &Close\ all\ foldszM Složit\ všechny\ skladyzM + menutrans O&pen\ more\ foldszr Pøidat\ jednu\ úroveò\ skladùzr + menutrans &Open\ all\ foldszR &Otevøít\ všechny\ skladyzR + menutrans Fold\ Met&hod &Metoda\ skládání + menutrans M&anual &Ruènì + menutrans I&ndent &Odsazení + menutrans E&xpression &Výraz + menutrans S&yntax &Syntaxe + menutrans &Diff &Rozdíly + menutrans Ma&rker &Znaèky + menutrans Create\ &Foldzf Vytvoøit\ &skladzf + menutrans &Delete\ Foldzd Vymazat\ skla&dzd + menutrans Delete\ &All\ FoldszD Vymazat\ všechny\ skladyzD + menutrans Fold\ col&umn\ width Sloupec\ zob&razení\ skladù +endif + +if has("diff") + menutrans &Update &Obnovit + menutrans &Get\ Block &Sejmout\ Blok + menutrans &Put\ Block &Vložit\ Blok +endif + +menutrans &Make:make &Make:make +menutrans &List\ Errors:cl Výpis\ &chyb:cl +menutrans L&ist\ Messages:cl! Výp&is\ zpráv:cl! +menutrans &Next\ Error:cn Další\ ch&yba:cn +menutrans &Previous\ Error:cp &Pøedchozí\ chyba:cp +menutrans &Older\ List:cold Sta&rší\ seznam:cold +menutrans N&ewer\ List:cnew N&ovìjší\ seznam:cnew +menutrans Error\ &Window Chybové\ o&kno +menutrans SeT\ Compiler Nas&tavení\ kompilátoru +menutrans &Update:cwin O&bnovit:cwin +menutrans &Open:copen &Otevøít:copen +menutrans &Close:cclose &Zavøít:cclose +menutrans Se&T\ Compiler N&astavit\ kompilátor + +menutrans &Convert\ to\ HEX:%!xxd Pøevést\ do\ šestnáctkového\ formát&u:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Pø&evést\ zpìt:%!xxd\ -r +" }}} + +" {{{ Syntax menu +menutrans &Syntax Synta&xe +menutrans Set\ '&syntax'\ only Nastavit\ pouze\ 'synta&x' +menutrans Set\ '&filetype'\ too Nastavit\ také\ '&filetype' +menutrans &Off &Vypnout +menutrans &Manual &Ruènì +menutrans A&utomatic A&utomaticky +menutrans on/off\ for\ &This\ file &Pøepnout\ (pro\ tento\ soubor) +menutrans o&ff\ (this\ file) vyp&nout\ (pro\ tento\ soubor) +menutrans Co&lor\ test Test\ &barev +menutrans &Highlight\ test &Test\ zvýrazòování +menutrans &Convert\ to\ HTML Pøevést\ &do\ HTML +menutrans &Show\ filetypes\ in\ menu &Zobrazit\ výbìr\ možností +" }}} + +" {{{ Menu Buffers +menutrans &Buffers &Buffery +menutrans &Refresh\ menu &Obnovit\ menu +menutrans &Delete Z&rušit +menutrans &Alternate &Zmìnit +menutrans &Next &Další +menutrans &Previous &Pøedchozí +" }}} + +" {{{ Menu Window +menutrans &Window &Okna +menutrans &New^Wn &Nové^Wn +menutrans S&plit^Ws &Rozdìlit^Ws +menutrans Sp&lit\ To\ #^W^^ Ro&zdìlit\ na\ #^W^^ +menutrans Split\ &Vertically^Wv Rozdìlit\ &vertikálnì^Wv +menutrans Split\ File\ E&xplorer Rozdìlit\ -\ File\ E&xplorer +menutrans Move\ &To &Pøesun +menutrans &Top^WK &Nahoru^WK +menutrans &Bottom^WJ &Dolu^WJ +menutrans &Left\ side^WH &Vlevo^WH +menutrans &Right\ side^WL Vp&ravo^WL + +menutrans &Close^Wc Zavøí&t^Wc +menutrans Close\ &Other(s)^Wo Zavøít\ &ostatní^Wo +menutrans Ne&xt^Ww &Další^Ww +menutrans P&revious^WW &Pøedchozí^WW +menutrans &Equal\ Size^W= &Stejná\ výška^W= +menutrans &Max\ Height^W_ Maximální\ výš&ka^W_ +menutrans M&in\ Height^W1_ M&inimální\ výška^W1_ +menutrans Max\ &Width^W\| &Maximální\ šíøka^W\| +menutrans Min\ Widt&h^W1\| Minimální\ šíøk&a^W1\| +menutrans Rotate\ &Up^WR Rotovat\ na&horu^WR +menutrans Rotate\ &Down^Wr Rotovat\ &dolù^Wr + +" {{{ Help menu +menutrans &Help &Nápovìda +menutrans &Overview &Pøehled +menutrans &User\ Manual &Uživatelský\ Manuál +menutrans &How-to\ links Ho&wto +menutrans &GUI &Grafické\ rozhraní +menutrans &Credits &Autoøi +menutrans Co&pying &Licenèní\ politika +menutrans &Sponsor/Register Sponzorování/&Registrace +menutrans &Find\.\.\. &Hledat\.\.\. +menutrans O&rphans O&siøelé\ dìti +menutrans &Version &Verze +menutrans &About &O\ aplikaci +" }}} + +" {{{ The popup menu +menutrans &Undo &Zpìt +menutrans Cu&t &Vyøíznout +menutrans &Copy &Kopírovat +menutrans &Paste &Vložit +menutrans &Delete &Smazat +menutrans Select\ Blockwise Vybrat\ blokovì +menutrans Select\ &Word Vybrat\ &slovo +menutrans Select\ Pa&ragraph Vybrat\ &odstavec +menutrans Select\ &Sentence Vybrat\ vì&tu +menutrans Select\ &Line Vybrat\ &øádek +menutrans Select\ &Block Vybrat\ &blok +menutrans Select\ &All Vybrat\ &vše +" }}} + +" {{{ The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Otevøít soubor + tmenu ToolBar.Save Uložit soubor + tmenu ToolBar.SaveAll Uložit všechny soubory + if has("printer") || has("unix") + tmenu ToolBar.Print Tisk + endif + tmenu ToolBar.Undo Zpìt + tmenu ToolBar.Redo Zrušit vrácení + tmenu ToolBar.Cut Vyøíznout + tmenu ToolBar.Copy Kopírovat + tmenu ToolBar.Paste Vložit + tmenu ToolBar.Find Hledat... + tmenu ToolBar.FindNext Hledat další + tmenu ToolBar.FindPrev Hledat pøedchozí + tmenu ToolBar.Replace Nahradit... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nové okno + tmenu ToolBar.WinSplit Rozdìlit okno + tmenu ToolBar.WinMax Maximalizovat okno + tmenu ToolBar.WinMin Minimalizovat okno + tmenu ToolBar.WinClose Zavøít okno + endif + tmenu ToolBar.LoadSesn Naèíst sezení + tmenu ToolBar.SaveSesn Uložit sezení + tmenu ToolBar.RunScript Spustit skript + tmenu ToolBar.Make Spustit make + tmenu ToolBar.Shell Spustit shell + tmenu ToolBar.RunCtags Spustit ctags + tmenu ToolBar.TagJump Skoèit na tag pod kurzorem + tmenu ToolBar.Help Nápovìda + tmenu ToolBar.FindHelp Hledat nápovìdu k... + endfun +endif +" }}} + +" {{{ DIALOG TEXTS +let g:menutrans_no_file = "[Žádný soubor]" +let g:menutrans_help_dialog = "Zadejte hledaný pøíkaz nebo slovo:\n\n\tPøidejte i_ pro pøíkazy vkládacího režimu (napø. i_CTRL-X)\n\tPøidejte c_ pro pøíkazy pøíkazové øádky (napø. c_)\n\tPøidejte ' pro jméno volby (napø. 'shiftwidth')" +let g:menutrans_path_dialog = "Zadejte cesty pro vyhledávání souborù. Jednotlivé cesty oddìlte èárkou" +let g:menutrans_tags_dialog = "Zadejte jména souborù s tagy. Jména oddìlte èárkami." +let g:menutrans_textwidth_dialog = "Zadejte délku øádku (0 pro zakázání formátování):" +let g:menutrans_fileformat_dialog = "Vyberte typ konce øádkù" +" }}}" + +let &cpo = s:keepcpo +unlet s:keepcpo + + + +" vim:set foldmethod=marker expandtab tabstop=3 shiftwidth=3: diff --git a/share/vim/vim73/lang/menu_czech_czech_republic.1252.vim b/share/vim/vim74/lang/menu_czech_czech_republic.1252.vim similarity index 100% rename from share/vim/vim73/lang/menu_czech_czech_republic.1252.vim rename to share/vim/vim74/lang/menu_czech_czech_republic.1252.vim diff --git a/share/vim/vim74/lang/menu_czech_czech_republic.ascii.vim b/share/vim/vim74/lang/menu_czech_czech_republic.ascii.vim new file mode 100644 index 00000000..1c4fb3ed --- /dev/null +++ b/share/vim/vim74/lang/menu_czech_czech_republic.ascii.vim @@ -0,0 +1,308 @@ +" Menu Translations: Czech (latin1 - w/o diacritics) +" Maintainer: Jiri Sedlak +" Previous maintainer: Jiri Brezina +" Based on: menu.vim (2012-10-21) + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif + +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding latin1 + +" {{{ File menu +menutrans &File &Soubor +menutrans &Open\.\.\.:e &Otevrit\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Otevrit\ v\ no&vem\ okne\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Otevrit\ tab\.\.\.:tabnew +menutrans &New:enew &Novy:enew +menutrans &Close:close &Zavrit:close +menutrans &Save:w &Ulozit:w +menutrans Save\ &As\.\.\.:sav Ulozit\ &jako\.\.\.:sav +if has("printer") || has("unix") + menutrans &Print &Tisk +endif +menutrans Sa&ve-Exit:wqa U&lozit\ a\ ukoncit:wqa +menutrans E&xit:qa &Ukoncit:qa + +if has("diff") + menutrans Split\ &Diff\ with\.\.\. Rozdelit\ okno\ -\ &Diff\.\.\. + menutrans Split\ Patched\ &By\.\.\. Rozdelit\ okno\ -\ &Patch\.\.\. +endif +" }}} + +" {{{ Edit menu +menutrans &Edit Upr&avy +menutrans &Undou &Zpetu +menutrans &Redo^R Z&rusit\ vraceni^R +menutrans Rep&eat\. &Opakovat\. +menutrans Cu&t"+x &Vyriznout"+x +menutrans &Copy"+y &Kopirovat"+y +menutrans &Paste"+gP V&lozit"+gP +menutrans Put\ &Before[p Vlozit\ &pred[p +menutrans Put\ &After]p Vlozi&t\ za]p +if has("win32") || has("win16") + menutrans &Deletex &Smazatx +endif +menutrans &Select\ AllggVG Vy&brat\ vseggVG +if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif") + menutrans &Find\.\.\. &Hledat\.\.\. + menutrans Find\ and\ Rep&lace\.\.\. &Nahradit\.\.\. +else + menutrans Find/ &Hledat/ + menutrans Find\ and\ Rep&lace:%s &Nahradit:%s + menutrans Find\ and\ Rep&lace:s &Nahradit:s +endif +menutrans Settings\ &Window Nastav&eni\ okna +" {{{2 Edit -1 +menutrans Startup\ &Settings Pocatecni\ &nastaveni +menutrans &Global\ Settings &Globalni\ nastaveni +menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Prepnout\ zvyrazneni\ vzoru:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Prepnout\ ignorovani\ &VERZALEK:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Prepnout\ &Showmatch\ \{\(\[\])\}:set\ sm! +menutrans &Context\ lines Zobrazit\ konte&xt\ kurzoru +menutrans &Virtual\ Edit Virtualni\ p&ozice\ kurzoru +menutrans Never Nikdy +menutrans Block\ Selection Vyber\ Bloku +menutrans Insert\ mode Insert\ mod +menutrans Block\ and\ Insert Blok\ a\ Insert +menutrans Always Vzdycky +menutrans Toggle\ Insert\ &Mode:set\ im! Prepnout\ Insert\ mo&d:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Prepnout\ kompatibilni\ rezim\ s\ 'vi':set\ cp! +menutrans Search\ &Path\.\.\. Nastavit\ &cestu\ k\ prohledavani\.\.\. +menutrans Ta&g\ Files\.\.\. Ta&g\ soubory\.\.\. +menutrans Toggle\ &Toolbar Prepnout\ &Toolbar +menutrans Toggle\ &Bottom\ Scrollbar Pr&epnout\ dolni\ rolovaci\ listu +menutrans Toggle\ &Left\ Scrollbar Prepnout\ &levou\ rolovaci\ listu +menutrans Toggle\ &Right\ Scrollbar Prepnout\ p&ravou\ rolovaci\ listu +" {{{2 Edit -2 +menutrans F&ile\ Settings Nastaveni\ so&uboru +menutrans Toggle\ Line\ &Numbering:set\ nu! Prepnout\ cislovani\ ra&dku:set\ nu! +menutrans Toggle\ relati&ve\ Line\ Numbering:set\ rnu! Prepnout\ relativni\ cislovani\ ra&dku:set\ rnu! +menutrans Toggle\ &List\ Mode:set\ list! Prepnout\ &List\ mod:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Prepnout\ zala&movani\ radku:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Prepnout\ zl&om\ ve\ slove:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Prepnout\ &expand-tab:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Prepnout\ &auto-indent:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Prepnout\ &C-indenting:set\ cin! +menutrans &Shiftwidth Nastav&it\ sirku\ od&sazeni +menutrans Soft\ &Tabstop Nastavit\ Soft\ &Tabstop +menutrans Te&xt\ Width\.\.\. Sirka\ te&xtu\.\.\. +menutrans &File\ Format\.\.\. &Format\ souboru\.\.\. +" {{{2 Edit -3 +menutrans C&olor\ Scheme Barevne\ s&chema +menutrans &Keymap Klavesova\ m&apa +if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac") + menutrans Select\ Fo&nt\.\.\. Vybrat\ pis&mo\.\.\. +endif +" }}}1 + +" {{{ Programming menu +menutrans &Tools Nast&roje +menutrans &Jump\ to\ this\ tagg^] &Skocit\ na\ tagg^] +menutrans Jump\ &back^T Skocit\ &zpet^T +menutrans Build\ &Tags\ File &Vytvorit\ soubor\ tagu + +if has("spell") + menutrans &Spelling &Kontrola\ pravopisu + menutrans &Spell\ Check\ On &Zapnout\ kontrolu\ pravopisu + menutrans Spell\ Check\ &Off &Vypnout \kontrolu\ pravopisu + menutrans To\ &Next\ error]s &Dalsi\ chyba]s + menutrans To\ &Previous\ error[s &Predchozi\ chyba[s + menutrans Suggest\ &Correctionsz= &Navrhnout\ opravyz= + menutrans &Repeat\ correction:spellrepall Zopakovat\ &opravu:spellrepall + menutrans Set\ language\ to\ "en" Nastavit\ jazyk\ na\ "en" + menutrans Set\ language\ to\ "en_au" Nastavit\ jazyk\ na\ "en_au" + menutrans Set\ language\ to\ "en_ca" Nastavit\ jazyk\ na\ "en_ca" + menutrans Set\ language\ to\ "en_gb" Nastavit\ jazyk\ na\ "en_gb" + menutrans Set\ language\ to\ "en_nz" Nastavit\ jazyk\ na\ "en_nz" + menutrans Set\ language\ to\ "en_us" Nastavit\ jazyk\ na\ "en_us" + menutrans &Find\ More\ Languages Nalezt\ dalsi\ &jazyky + let g:menutrans_set_lang_to = "Nastavit jazyk na" +endif + +if has("Folding") + menutrans &Folding &Skladani + menutrans &Enable/Disable\ foldszi &Ano/Nezi + menutrans &View\ Cursor\ Linezv Zobrazit\ radek\ &kurzoruzv + menutrans Vie&w\ Cursor\ Line\ onlyzMzx Zobrazit\ &pouze\ radek\ kurzoru\ zMzx + menutrans C&lose\ more\ foldszm Slozit\ &jednu\ uroven\ skladuzm + menutrans &Close\ all\ foldszM Slozit\ vsechny\ skladyzM + menutrans O&pen\ more\ foldszr Pridat\ jednu\ uroven\ skladuzr + menutrans &Open\ all\ foldszR &Otevrit\ vsechny\ skladyzR + menutrans Fold\ Met&hod &Metoda\ skladani + menutrans M&anual &Rucne + menutrans I&ndent &Odsazeni + menutrans E&xpression &Vyraz + menutrans S&yntax &Syntaxe + menutrans &Diff &Rozdily + menutrans Ma&rker &Znacky + menutrans Create\ &Foldzf Vytvorit\ &skladzf + menutrans &Delete\ Foldzd Vymazat\ skla&dzd + menutrans Delete\ &All\ FoldszD Vymazat\ vsechny\ skladyzD + menutrans Fold\ col&umn\ width Sloupec\ zob&razeni\ skladu +endif + +if has("diff") + menutrans &Update &Obnovit + menutrans &Get\ Block &Sejmout\ Blok + menutrans &Put\ Block &Vlozit\ Blok +endif + +menutrans &Make:make &Make:make +menutrans &List\ Errors:cl Vypis\ &chyb:cl +menutrans L&ist\ Messages:cl! Vyp&is\ zprav:cl! +menutrans &Next\ Error:cn Dalsi\ ch&yba:cn +menutrans &Previous\ Error:cp &Predchozi\ chyba:cp +menutrans &Older\ List:cold Sta&rsi\ seznam:cold +menutrans N&ewer\ List:cnew N&ovejsi\ seznam:cnew +menutrans Error\ &Window Chybove\ o&kno +menutrans SeT\ Compiler Nas&taveni\ kompilatoru +menutrans &Update:cwin O&bnovit:cwin +menutrans &Open:copen &Otevrit:copen +menutrans &Close:cclose &Zavrit:cclose +menutrans Se&T\ Compiler N&astavit\ kompilator + +menutrans &Convert\ to\ HEX:%!xxd Prevest\ do\ sestnactkoveho\ format&u:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Pr&evest\ zpet:%!xxd\ -r +" }}} + +" {{{ Syntax menu +menutrans &Syntax Synta&xe +menutrans Set\ '&syntax'\ only Nastavit\ pouze\ 'synta&x' +menutrans Set\ '&filetype'\ too Nastavit\ take\ '&filetype' +menutrans &Off &Vypnout +menutrans &Manual &Rucne +menutrans A&utomatic A&utomaticky +menutrans on/off\ for\ &This\ file &Prepnout\ (pro\ tento\ soubor) +menutrans o&ff\ (this\ file) vyp&nout\ (pro\ tento\ soubor) +menutrans Co&lor\ test Test\ &barev +menutrans &Highlight\ test &Test\ zvyraznovani +menutrans &Convert\ to\ HTML Prevest\ &do\ HTML +menutrans &Show\ filetypes\ in\ menu &Zobrazit\ vyber\ moznosti +" }}} + +" {{{ Menu Buffers +menutrans &Buffers &Buffery +menutrans &Refresh\ menu &Obnovit\ menu +menutrans &Delete Z&rusit +menutrans &Alternate &Zmenit +menutrans &Next &Dalsi +menutrans &Previous &Predchozi +" }}} + +" {{{ Menu Window +menutrans &Window &Okna +menutrans &New^Wn &Nove^Wn +menutrans S&plit^Ws &Rozdelit^Ws +menutrans Sp&lit\ To\ #^W^^ Ro&zdelit\ na\ #^W^^ +menutrans Split\ &Vertically^Wv Rozdelit\ &vertikalne^Wv +menutrans Split\ File\ E&xplorer Rozdelit\ -\ File\ E&xplorer +menutrans Move\ &To &Presun +menutrans &Top^WK &Nahoru^WK +menutrans &Bottom^WJ &Dolu^WJ +menutrans &Left\ side^WH &Vlevo^WH +menutrans &Right\ side^WL Vp&ravo^WL + +menutrans &Close^Wc Zavri&t^Wc +menutrans Close\ &Other(s)^Wo Zavrit\ &ostatni^Wo +menutrans Ne&xt^Ww &Dalsi^Ww +menutrans P&revious^WW &Predchozi^WW +menutrans &Equal\ Size^W= &Stejna\ vyska^W= +menutrans &Max\ Height^W_ Maximalni\ vys&ka^W_ +menutrans M&in\ Height^W1_ M&inimalni\ vyska^W1_ +menutrans Max\ &Width^W\| &Maximalni\ sirka^W\| +menutrans Min\ Widt&h^W1\| Minimalni\ sirk&a^W1\| +menutrans Rotate\ &Up^WR Rotovat\ na&horu^WR +menutrans Rotate\ &Down^Wr Rotovat\ &dolu^Wr + +" {{{ Help menu +menutrans &Help &Napoveda +menutrans &Overview &Prehled +menutrans &User\ Manual &Uzivatelsky\ Manual +menutrans &How-to\ links Ho&wto +menutrans &GUI &Graficke\ rozhrani +menutrans &Credits &Autori +menutrans Co&pying &Licencni\ politika +menutrans &Sponsor/Register Sponzorovani/&Registrace +menutrans &Find\.\.\. &Hledat\.\.\. +menutrans O&rphans O&sirele\ deti +menutrans &Version &Verze +menutrans &About &O\ aplikaci +" }}} + +" {{{ The popup menu +menutrans &Undo &Zpet +menutrans Cu&t &Vyriznout +menutrans &Copy &Kopirovat +menutrans &Paste &Vlozit +menutrans &Delete &Smazat +menutrans Select\ Blockwise Vybrat\ blokove +menutrans Select\ &Word Vybrat\ &slovo +menutrans Select\ Pa&ragraph Vybrat\ &odstavec +menutrans Select\ &Sentence Vybrat\ ve&tu +menutrans Select\ &Line Vybrat\ &radek +menutrans Select\ &Block Vybrat\ &blok +menutrans Select\ &All Vybrat\ &vse +" }}} + +" {{{ The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Otevrit soubor + tmenu ToolBar.Save Ulozit soubor + tmenu ToolBar.SaveAll Ulozit vsechny soubory + if has("printer") || has("unix") + tmenu ToolBar.Print Tisk + endif + tmenu ToolBar.Undo Zpet + tmenu ToolBar.Redo Zrusit vraceni + tmenu ToolBar.Cut Vyriznout + tmenu ToolBar.Copy Kopirovat + tmenu ToolBar.Paste Vlozit + tmenu ToolBar.Find Hledat... + tmenu ToolBar.FindNext Hledat dalsi + tmenu ToolBar.FindPrev Hledat predchozi + tmenu ToolBar.Replace Nahradit... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nove okno + tmenu ToolBar.WinSplit Rozdelit okno + tmenu ToolBar.WinMax Maximalizovat okno + tmenu ToolBar.WinMin Minimalizovat okno + tmenu ToolBar.WinClose Zavrit okno + endif + tmenu ToolBar.LoadSesn Nacist sezeni + tmenu ToolBar.SaveSesn Ulozit sezeni + tmenu ToolBar.RunScript Spustit skript + tmenu ToolBar.Make Spustit make + tmenu ToolBar.Shell Spustit shell + tmenu ToolBar.RunCtags Spustit ctags + tmenu ToolBar.TagJump Skocit na tag pod kurzorem + tmenu ToolBar.Help Napoveda + tmenu ToolBar.FindHelp Hledat napovedu k... + endfun +endif +" }}} + +" {{{ DIALOG TEXTS +let g:menutrans_no_file = "[Zadny soubor]" +let g:menutrans_help_dialog = "Zadejte hledany prikaz nebo slovo:\n\n\tPridejte i_ pro prikazy vkladaciho rezimu (napr. i_CTRL-X)\n\tPridejte c_ pro prikazy prikazove radky (napr. c_)\n\tPridejte ' pro jmeno volby (napr. 'shiftwidth')" +let g:menutrans_path_dialog = "Zadejte cesty pro vyhledavani souboru. Jednotlive cesty oddelte carkou" +let g:menutrans_tags_dialog = "Zadejte jmena souboru s tagy. Jmena oddelte carkami." +let g:menutrans_textwidth_dialog = "Zadejte delku radku (0 pro zakazani formatovani):" +let g:menutrans_fileformat_dialog = "Vyberte typ konce radku" +" }}}" + +let &cpo = s:keepcpo +unlet s:keepcpo + + + +" vim:set foldmethod=marker expandtab tabstop=3 shiftwidth=3: diff --git a/share/vim/vim73/lang/menu_de.latin1.vim b/share/vim/vim74/lang/menu_de.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_de.latin1.vim rename to share/vim/vim74/lang/menu_de.latin1.vim diff --git a/share/vim/vim73/lang/menu_de.utf-8.vim b/share/vim/vim74/lang/menu_de.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_de.utf-8.vim rename to share/vim/vim74/lang/menu_de.utf-8.vim diff --git a/share/vim/vim74/lang/menu_de_de.latin1.vim b/share/vim/vim74/lang/menu_de_de.latin1.vim new file mode 100644 index 00000000..70feb74d --- /dev/null +++ b/share/vim/vim74/lang/menu_de_de.latin1.vim @@ -0,0 +1,309 @@ +" Menu Translations: German / Deutsch +" Maintainer: Georg Dahn +" Originally By: Marcin Dalecki +" Johannes Zellner +" Last Change: Sat, 11 Mar 2006 22:40:00 CEST +" vim:set foldmethod=marker tabstop=8: + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" The translations below are in latin1, but they work for cp1252 and +" iso-8859-15 without conversion as well. +if &enc != "cp1252" && &enc != "iso-8859-15" + scriptencoding latin1 +endif + +" {{{ FILE / DATEI +menutrans &File &Datei +menutrans &Open\.\.\.:e &Öffnen\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp In\ geteiltem\ &Fenster\ öffnen\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew In\ neuem\ &Tab\ öffnen\.\.\.:tabnew +menutrans &New:enew &Neue\ Datei:enew +menutrans &Close:close S&chließen:close +menutrans &Save:w &Speichern:w +menutrans Save\ &As\.\.\.:sav Speichern\ &als\.\.\.:sav +menutrans &Print &Drucken +menutrans Sa&ve-Exit:wqa Speichern\ und\ Be&enden:wqa +menutrans E&xit:qa &Beenden:qa + +if has("diff") + menutrans Split\ &Diff\ with\.\.\. D&ifferenz\ in\ geteiltem\ Fenster\ mit\.\.\. + menutrans Split\ Patched\ &By\.\.\. &Patch\ in\ geteiltem\ Fenster\ mit\.\.\. +endif +" }}} FILE / DATEI + +" {{{ EDIT / EDITIEREN +menutrans &Edit &Editieren +menutrans &Undou Z&urücku +menutrans &Redo^R Vo&r^R +menutrans Rep&eat\. &Wiederholen\. +menutrans Cu&t"+x &Ausschneiden"+x +menutrans &Copy"+y &Kopieren"+y +menutrans &Paste"+gP Ein&fügen"+gP +menutrans Put\ &Before[p Da&vor\ einfügen[p +menutrans Put\ &After]p Da&nach\ einfügen]p +menutrans &Deletex &Löschenx +menutrans &Select\ AllggVG Alles\ &markierenggVG +menutrans &Find\.\.\. &Suchen\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Suchen\ und\ &Ersetzen\.\.\. + +" [-- SETTINGS --] +" XXX &E would conflict with 'Suchen\ und\ &Ersetzen', see above +menutrans Settings\ &Window E&instellungen\.\.\. +menutrans &Global\ Settings &Globale\ Einstellungen +menutrans Startup\ &Settings &Starteinstellungen + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Hervorhebungen\ ein-\ und\ ausschalten:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Großschreibung\ &ignorieren\ oder\ benutzen:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Anzeige\ des\ passenden\ &Symbols\ ein-\ und\ ausschalten:set\ sm! + +menutrans &Context\ lines &Zusammenhang + +menutrans &Virtual\ Edit &Virtueller\ Editier-Modus +menutrans Never Nie +menutrans Block\ Selection Block-Auswahl +menutrans Insert\ mode Einfüge-Modus +menutrans Block\ and\ Insert Block-Auswahl\ und\ Einfüge-Modus +menutrans Always Immer +menutrans Toggle\ Insert\ &Mode:set\ im! Einfüge-&Modus\ ein-\ und\ ausschalten:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vi-Kompatibilität\ ein-\ und\ ausschalten:set\ cp! + +menutrans Search\ &Path\.\.\. Such-&Pfad\.\.\. +menutrans Ta&g\ Files\.\.\. Ta&g-Dateien\.\.\. + +menutrans Toggle\ &Toolbar Werkzeugleiste\ ein-\ und\ ausschalten +menutrans Toggle\ &Bottom\ Scrollbar Unteren\ Rollbalken\ ein-\ und\ ausschalten +menutrans Toggle\ &Left\ Scrollbar Linken\ Rollbalken\ ein-\ und\ ausschalten +menutrans Toggle\ &Right\ Scrollbar Rechten\ Rollbalken\ ein-\ und\ ausschalten + +" Edit/File Settings +menutrans F&ile\ Settings &Datei-Einstellungen + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! Anzeige\ der\ Zeilen&nummer\ ein-\ und\ ausschalten:set\ nu! +menutrans Toggle\ relati&ve\ Line\ Numbering:set\ rnu! Anzeige\ der\ relati&ven\ Zeilennummer\ ein-\ und\ ausschalten:set\ rnu! +menutrans Toggle\ &List\ Mode:set\ list! &List-Modus\ ein-\ und\ ausschalten:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! &Zeilenumbruch\ ein-\ und\ ausschalten:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Umbruch\ an\ &Wortgrenzen\ ein-\ und\ ausschalten:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! &Erweiterung\ von\ Tabulatoren\ ein-\ und\ ausschalten:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! &Automatische\ Einrückung\ ein-\ und\ ausschalten:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! &C-Einrückung\ ein-\ und\ ausschalten:set\ cin! + +" other options +menutrans &Shiftwidth &Schiebeweite +menutrans Soft\ &Tabstop &Tabulator +menutrans Te&xt\ Width\.\.\. Te&xtbreite\.\.\. +menutrans &File\ Format\.\.\. &Dateiformat\.\.\. +menutrans C&olor\ Scheme F&arbschema\.\.\. +menutrans &Keymap &Tastaturbelegung +" }}} EDIT / EDITIEREN + +" {{{ TOOLS / WERKZEUGE +if has("spell") + menutrans &Spelling &Rechtschreibung + menutrans &Spell\ Check\ On &Rechtschreibprüfung\ an + menutrans Spell\ Check\ &Off Rechtschreibprüfung\ &aus + menutrans To\ &Next\ error]s Zum\ &nächsten\ Fehler]s + menutrans To\ &Previous\ error[s Zum\ &vorherigen\ Fehler[s + menutrans Suggest\ &Correctionsz= &Korrekturvorschlägez= + menutrans &Repeat\ correction:spellrepall &Wiederhole\ Korrektur:spellrepall + menutrans Set\ language\ to\ "en" Verwende\ Wörterbuch\ "en" + menutrans Set\ language\ to\ "en_au" Verwende\ Wörterbuch\ "en_au" + menutrans Set\ language\ to\ "en_ca" Verwende\ Wörterbuch\ "en_ca" + menutrans Set\ language\ to\ "en_gb" Verwende\ Wörterbuch\ "en_gb" + menutrans Set\ language\ to\ "en_nz" Verwende\ Wörterbuch\ "en_nz" + menutrans Set\ language\ to\ "en_us" Verwende\ Wörterbuch\ "en_us" + menutrans Set\ language\ to\ "de" Verwende\ Wörterbuch\ "de" + menutrans &Find\ More\ Languages &Suche\ nach\ Wörterbüchern +endif +if has("folding") + menutrans &Folding Fa<ung + " open close folds + menutrans &Enable/Disable\ foldszi &Ein-\ und\ ausschaltenzi + menutrans &View\ Cursor\ Linezv Momentane\ &Position\ anzeigenzv + menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Ausschließlich\ momentane\ Position\ anzeigenzMzx + menutrans C&lose\ more\ foldszm Faltungen\ &schließenzm + menutrans &Close\ all\ foldszM Alle\ Faltungen\ schließenzM + menutrans O&pen\ more\ foldszr Faltungen\ &öffnenzr + menutrans &Open\ all\ foldszR Alle\ Faltungen\ öffnenzR + " fold method + menutrans Fold\ Met&hod Faltungs-&Methode + menutrans M&anual &Manuell + menutrans I&ndent &Einrückungen + menutrans E&xpression &Ausdruck + menutrans S&yntax &Syntax + menutrans &Diff &Differenz + menutrans Ma&rker Ma&rkierungen + " create and delete folds + " TODO accelerators + menutrans Create\ &Foldzf Faltung\ erzeugenzf + menutrans &Delete\ Foldzd Faltung\ löschenzd + menutrans Delete\ &All\ FoldszD Alle\ Faltungen\ löschenzD + " moving around in folds + menutrans Fold\ column\ &width &Breite\ der\ Faltungsspalte +endif " has folding + +if has("diff") + menutrans &Diff &Differenz + menutrans &Update &Aktualisieren + menutrans &Get\ Block Block\ &einfügen + menutrans &Put\ Block Block\ &übertragen +endif + +menutrans &Tools &Werkzeuge +menutrans &Jump\ to\ this\ tagg^] &Springe\ zum\ Tagg^] +menutrans Jump\ &back^T Springe\ &zurück^T +menutrans Build\ &Tags\ File Erstelle\ &Tag-Datei +menutrans &Make:make &Erstellen:make +menutrans &List\ Errors:cl &Fehler\ anzeigen:cl +menutrans L&ist\ Messages:cl! &Hinweise\ anzeigen:cl! +menutrans &Next\ Error:cn Zum\ &nächsten\ Fehler:cn +menutrans &Previous\ Error:cp Zum\ &vorherigen\ Fehler:cp +menutrans &Older\ List:cold &Ältere\ Liste:cold +menutrans N&ewer\ List:cnew &Neuere\ Liste:cnew + +menutrans Error\ &Window Feh&ler-Fenster +menutrans Se&t\ Compiler &Compiler +menutrans Se&T\ Compiler &Compiler +menutrans &Update:cwin &Aktualisieren:cwin +menutrans &Open:copen &Öffnen:copen +menutrans &Close:cclose &Schließen:cclose + +menutrans &Convert\ to\ HEX:%!xxd Nach\ HE&X\ konvertieren:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Zurück\ konvertieren:%!xxd\ -r +" }}} TOOLS / WERKZEUGE + +" {{{ SYNTAX / SYNTAX +menutrans &Syntax &Syntax +menutrans &Show\ filetypes\ in\ menu Dateitypen\ an&zeigen +menutrans Set\ '&syntax'\ only Nur\ '&syntax'\ setzen +menutrans Set\ '&filetype'\ too Auch\ '&filetype'\ setzen +menutrans &Off &Aus +menutrans &Manual &Manuell +menutrans A&utomatic A&utomatisch +menutrans on/off\ for\ &This\ file An/Aus (diese\ &Datei) +menutrans Co&lor\ test Test\ der\ Farben +menutrans &Highlight\ test Test\ der\ Un&terstreichungen +menutrans &Convert\ to\ HTML Konvertieren\ nach\ &HTML +" }}} SYNTAX / SYNTAX + +" {{{ BUFFERS / PUFFER +menutrans &Buffers &Puffer +menutrans &Refresh\ menu &Aktualisieren +menutrans Delete Löschen +menutrans &Alternate &Wechseln +menutrans &Next &Nächster +menutrans &Previous &Vorheriger +" }}} BUFFERS / PUFFER + +" {{{ WINDOW / ANSICHT +menutrans &Window &Ansicht +menutrans &New^Wn &Neu^Wn +menutrans S&plit^Ws Aufs&palten^Ws +menutrans Split\ &Vertically^Wv &Vertikal\ aufspalten^Wv +menutrans Split\ File\ E&xplorer Ver&zeichnis +menutrans Sp&lit\ To\ #^W^^ Aufspa<en\ in\ #^W^^ +menutrans &Close^Wc &Schließen^Wc +menutrans Close\ &Other(s)^Wo &Andere\ schließen^Wo +menutrans Ne&xt^Ww N&ächstes^Ww +menutrans P&revious^WW Vor&heriges^WW +menutrans &Equal\ Size^W= &Gleiche\ Höhen^W= +menutrans &Max\ Height^W_ &Maximale\ Höhe^W_ +menutrans M&in\ Height^W1_ M&inimale\ Höhe^W1_ +menutrans Max\ &Width^W\| Maximale\ &Breite^W\| +menutrans Min\ Widt&h^W1\| Minimale\ Brei&te^W1\| +menutrans Move\ &To V&erschiebe\ nach +menutrans &Top^WK &Oben^WK +menutrans &Bottom^WJ &Unten^WJ +menutrans &Left\ side^WH &Links^WH +menutrans &Right\ side^WL &Rechts^WL +menutrans Rotate\ &Up^WR Rotiere\ nach\ &oben^WR +menutrans Rotate\ &Down^Wr Rotiere\ nach\ &unten^Wr +menutrans Select\ Fo&nt\.\.\. Auswahl\ der\ Schriftart\.\.\. +" }}} WINDOW / ANSICHT + +" {{{ HELP / HILFE +menutrans &Help &Hilfe +menutrans &Overview &Überblick +menutrans &User\ Manual &Handbuch +menutrans &How-to\ links How-to\ &Index +menutrans &GUI &Graphische\ Oberfläche +menutrans &Credits &Autoren +menutrans Co&pying &Urheberrecht +menutrans O&rphans &Waisen +menutrans &Find\.\.\. &Suchen\.\.\. " conflicts with Edit.Find +menutrans &Version &Version +menutrans &About &Titelseite +" }}} HELP / HILFE + +" {{{ POPUP +menutrans &Undo &Zurück +menutrans Cu&t Aus&schneiden +menutrans &Copy &Kopieren +menutrans &Paste &Einfügen +menutrans &Delete &Löschen +menutrans Select\ Blockwise Auswahl\ blockartig +menutrans Select\ &Word Auswahl\ des\ &Wortes +menutrans Select\ &Sentence Auswahl\ des\ Sa&tzes +menutrans Select\ Pa&ragraph Auswahl\ des\ Absatzes +menutrans Select\ &Line Auswahl\ der\ &Zeile +menutrans Select\ &Block Auswahl\ des\ &Blocks +menutrans Select\ &All &Alles\ Auswählen +" }}} POPUP + +" {{{ TOOLBAR +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Datei öffnen + tmenu ToolBar.Save Datei speichern + tmenu ToolBar.SaveAll Alle Dateien speichern + tmenu ToolBar.Print Drucken + tmenu ToolBar.Undo Zurück + tmenu ToolBar.Redo Wiederholen + tmenu ToolBar.Cut Ausschneiden + tmenu ToolBar.Copy Kopieren + tmenu ToolBar.Paste Einfügen + tmenu ToolBar.Find Suchen... + tmenu ToolBar.FindNext Suche nächsten + tmenu ToolBar.FindPrev Suche vorherigen + tmenu ToolBar.Replace Suchen und Ersetzen... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Neue Ansicht + tmenu ToolBar.WinSplit Ansicht aufspalten + tmenu ToolBar.WinMax Ansicht maximale Höhen + tmenu ToolBar.WinMin Ansicht minimale Höhen + tmenu ToolBar.WinClose Ansicht schließen + endif + tmenu ToolBar.LoadSesn Sitzung laden + tmenu ToolBar.SaveSesn Sitzung speichern + tmenu ToolBar.RunScript Vim-Skript ausführen + tmenu ToolBar.Make Erstellen + tmenu ToolBar.Shell Shell starten + tmenu ToolBar.RunCtags Erstelle Tag-Datei + tmenu ToolBar.TagJump Springe zum Tag + tmenu ToolBar.Help Hilfe! + tmenu ToolBar.FindHelp Hilfe durchsuchen... + endfun +endif +" }}} TOOLBAR + +" {{{ DIALOG TEXTS +let g:menutrans_no_file = "[Keine Datei]" +let g:menutrans_help_dialog = "Geben Sie einen Befehl oder ein Wort ein, für das Sie Hilfe benötigen:\n\nVerwenden Sie i_ für Eingabe ('input') Befehle (z.B.: i_CTRL-X)\nVerwenden Sie c_ für Befehls-Zeilen ('command-line') Befehle (z.B.: c_)\nVerwenden Sie ' für Options-Namen (z.B.: 'shiftwidth')" +let g:menutrans_path_dialog = "Geben Sie Such-Pfade für Dateien ein.\nTrennen Sie die Verzeichnis-Namen durch Kommata." +let g:menutrans_tags_dialog = "Geben Sie die Namen der 'tag'-Dateien ein.\nTrennen Sie die Namen durch Kommata." +let g:menutrans_textwidth_dialog = "Geben Sie eine neue Text-Breite ein (oder 0, um die Formatierung abzuschalten)" +let g:menutrans_fileformat_dialog = "Wählen Sie ein Datei-Format aus" +" }}} + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_de_de.utf-8.vim b/share/vim/vim74/lang/menu_de_de.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_de_de.utf-8.vim rename to share/vim/vim74/lang/menu_de_de.utf-8.vim diff --git a/share/vim/vim73/lang/menu_en_gb.latin1.vim b/share/vim/vim74/lang/menu_en_gb.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_en_gb.latin1.vim rename to share/vim/vim74/lang/menu_en_gb.latin1.vim diff --git a/share/vim/vim73/lang/menu_en_gb.utf-8.vim b/share/vim/vim74/lang/menu_en_gb.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_en_gb.utf-8.vim rename to share/vim/vim74/lang/menu_en_gb.utf-8.vim diff --git a/share/vim/vim73/lang/menu_english_united_kingdom.1252.vim b/share/vim/vim74/lang/menu_english_united_kingdom.1252.vim similarity index 100% rename from share/vim/vim73/lang/menu_english_united_kingdom.1252.vim rename to share/vim/vim74/lang/menu_english_united_kingdom.1252.vim diff --git a/share/vim/vim73/lang/menu_english_united_kingdom.ascii.vim b/share/vim/vim74/lang/menu_english_united_kingdom.ascii.vim similarity index 100% rename from share/vim/vim73/lang/menu_english_united_kingdom.ascii.vim rename to share/vim/vim74/lang/menu_english_united_kingdom.ascii.vim diff --git a/share/vim/vim74/lang/menu_eo.utf-8.vim b/share/vim/vim74/lang/menu_eo.utf-8.vim new file mode 100644 index 00000000..7e363f90 --- /dev/null +++ b/share/vim/vim74/lang/menu_eo.utf-8.vim @@ -0,0 +1,462 @@ +" Menu Translations: Esperanto +" Maintainer: Dominique PELLE +" Last Change: 2012 May 01 +" +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +menutrans &Help &Helpo + +menutrans &Overview &Enhavtabelo +menutrans &User\ Manual &Uzula\ manlibro +menutrans &How-to\ links &Kiel\ fari +menutrans &Find\.\.\. T&rovi\.\.\. +" -sep1- +menutrans &Credits &Dankoj +menutrans Co&pying &Permisilo +menutrans &Sponsor/Register &Subteni/Registriĝi +menutrans O&rphans &Orfoj +" -sep2- +menutrans &Version &Versio +menutrans &About Pri\ &Vim + +let g:menutrans_help_dialog = "Tajpu komandon aŭ serĉendan vorton en la helparo.\n\nAldonu i_ por la komandoj de la enmeta reĝimo (ekz: i_CTRL-X)\nAldonu c_ por redakto de la komanda linio (ekz: c_)\nĈirkaŭi la opciojn per apostrofoj (ekz: 'shiftwidth')" + +menutrans &File &Dosiero + +menutrans &Open\.\.\.:e &Malfermi\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Malfermi\ ÷\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Malfermi\ &langeton\.\.\.:tabnew +menutrans &New:enew &Nova:enew +menutrans &Close:close &Fermi:close +" -SEP1- +menutrans &Save:w &Konservi:w +menutrans Save\ &As\.\.\.:sav Konservi\ ki&el\.\.\.:sav +" -SEP2- +menutrans Split\ &Diff\ with\.\.\. Kom&pari\ divide\.\.\. +menutrans Split\ Patched\ &By\.\.\. &Testi\ flikaĵon\.\.\. +" -SEP3- +menutrans &Print &Presi +" -SEP4- +menutrans Sa&ve-Exit:wqa Konservi\ kaj\ eli&ri:wqa +menutrans E&xit:qa &Eliri:qa + + +menutrans &Edit &Redakti + +menutrans &Undou &Malfariu +menutrans &Redo^R Re&fari^R +menutrans Rep&eat\. R&ipeti\. +" -SEP1- +menutrans Cu&t"+x &Tondi"+x +menutrans &Copy"+y &Kopii"+y +menutrans &Paste"+gP Al&glui"+gP +menutrans Put\ &Before[p Enmeti\ &antaŭ[p +menutrans Put\ &After]p Enmeti\ ma&lantaŭ]p +menutrans &Deletex &Forviŝix +menutrans &Select\ AllggVG A&partigi\ ĉionggVG +" -SEP2- +menutrans &Find\.\.\. &Trovi\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Trovi\ kaj\ a&nstataŭigi\.\.\. +menutrans &Find/ &Trovi/ +menutrans Find\ and\ Rep&lace:%s Trovi\ kaj\ ansta&taŭigi:%s +menutrans Find\ and\ Rep&lace:s Trovi\ kaj\ ansta&taŭigi:s +" -SEP3- +menutrans Settings\ &Window Fenestro\ de\ a&gordoj +menutrans Startup\ &Settings Agordoj\ de\ prav&aloroj +menutrans &Global\ Settings Mallo&kaj\ agordoj + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Baskuli\ emfazon\ de\ ŝa&blono:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Baskuli\ kongruon\ de\ uskle&co:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Baskuli\ kongruon\ de\ kram&poj:set\ sm! + +menutrans &Context\ lines Linioj\ de\ &kunteksto + +menutrans &Virtual\ Edit &Virtuala\ redakto +menutrans Never &Neniam +menutrans Block\ Selection &Bloka\ apartigo +menutrans Insert\ mode &Enmeta\ reĝimo +menutrans Block\ and\ Insert Blo&ko\ kaj\ enmeto +menutrans Always Ĉia&m + +menutrans Toggle\ Insert\ &Mode:set\ im! Baskuli\ &enmetan\ reĝimon:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Baskuli\ kongruon\ kun\ &Vi:set\ cp! +menutrans Search\ &Path\.\.\. &Serĉvojo\ de\ dosieroj\.\.\. +menutrans Ta&g\ Files\.\.\. Dosiero\ de\ etike&doj\.\.\. +" -SEP1- +menutrans Toggle\ &Toolbar Baskuli\ &ilobreton +menutrans Toggle\ &Bottom\ Scrollbar Baskuli\ su&ban\ rulumskalon +menutrans Toggle\ &Left\ Scrollbar Baskuli\ &maldekstran\ rulumskalon +menutrans Toggle\ &Right\ Scrollbar Baskuli\ &dekstran\ rulumskalon + +let g:menutrans_path_dialog = "Tajpu la vojon de serĉo de dosieroj.\nDisigu la dosierujojn per komoj." +let g:menutrans_tags_dialog = "Tajpu la nomojn de dosieroj de etikedoj.\nDisigu la nomojn per komoj." + +menutrans F&ile\ Settings A&gordoj\ de\ dosiero + +menutrans Toggle\ Line\ &Numbering:set\ nu! Baskuli\ &numerojn\ de\ linioj:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Baskuli\ &listan\ reĝimon:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Baskuli\ linifal&don:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Baskuli\ &vortofaldon:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Baskuli\ ekspansio\ de\ &taboj:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Baskuli\ &aŭtokrommarĝenon:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Baskuli\ &C-krommarĝenon:set\ cin! +" -SEP2- +menutrans &Shiftwidth &Larĝo\ de\ krommarĝeno +menutrans Soft\ &Tabstop &Malm&olaj\ taboj +menutrans Te&xt\ Width\.\.\. Larĝo\ de\ te&ksto\.\.\. +menutrans &File\ Format\.\.\. &Formato\ de\ &dosiero\.\.\. + +let g:menutrans_textwidth_dialog = "Tajpu la novan larĝon de teksto\n(0 por malŝalti formatigon)." +let g:menutrans_fileformat_dialog = "Elektu la formaton de la skribonta dosiero." +let g:menutrans_fileformat_choices = " &Unikso \n &Dos \n &Mak \n &Rezigni " + +menutrans C&olor\ Scheme &Koloraro +menutrans &Keymap Klavo&mapo +menutrans None (nenio) +menutrans Select\ Fo&nt\.\.\. Elekti\ &tiparon\.\.\. + + +menutrans &Tools &Iloj + +menutrans &Jump\ to\ this\ tagg^] &Aliri\ al\ tiu\ etikedog^] +menutrans Jump\ &back^T &Retroiri^T +menutrans Build\ &Tags\ File Krei\ &etikedan\ dosieron + +" -SEP1- +menutrans &Spelling &Literumilo +menutrans &Spell\ Check\ On Ŝal&ti\ literumilon +menutrans Spell\ Check\ &Off &Malŝalti\ literumilon +menutrans To\ &Next\ error]s Al\ sek&vonta\ eraro]s +menutrans To\ &Previous\ error[s Al\ an&taŭa\ eraro[s +menutrans Suggest\ &Correctionsz= &Sugesti\ korektojnz= +menutrans &Repeat\ correction:spellrepall R&ipeti\ korekton:spellrepall + +menutrans Set\ language\ to\ "en" Angla +menutrans Set\ language\ to\ "en_au" Angla\ (Aŭstralio) +menutrans Set\ language\ to\ "en_ca" Angla\ (Kanado) +menutrans Set\ language\ to\ "en_gb" Angla\ (Britio) +menutrans Set\ language\ to\ "en_nz" Angla\ (Novzelando) +menutrans Set\ language\ to\ "en_us" Angla\ (Usono) + +menutrans &Find\ More\ Languages &Trovi\ pli\ da\ lingvoj + + +menutrans &Folding &Faldo + +menutrans &Enable/Disable\ foldszi &Baskuli\ faldojnzi +menutrans &View\ Cursor\ Linezv &Vidi\ linion\ de\ kursorozv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Vidi\ nur\ &kursoran\ linionzMzx +menutrans C&lose\ more\ foldszm F&ermi\ pli\ da\ faldojzm +menutrans &Close\ all\ foldszM Fermi\ ĉiu&jn\ faldojnzM +menutrans O&pen\ more\ foldszr &Malfermi\ pli\ da\ faldojzr +menutrans &Open\ all\ foldszR Malfermi\ ĉiuj&n\ faldojnzR +" -SEP1- +menutrans Fold\ Met&hod &Metodo\ de\ faldo + +menutrans M&anual &Permana\ metodo +menutrans I&ndent &Krommarĝeno +menutrans E&xpression &Esprimo +menutrans S&yntax &Sintakso +menutrans &Diff &Komparo +menutrans Ma&rker Ma&rko + +menutrans Create\ &Foldzf &Krei\ faldonzf +menutrans &Delete\ Foldzd Forv&iŝi\ faldonzd +menutrans Delete\ &All\ FoldszD Forviŝi\ ĉiu&jn\ faldojnzD +" -SEP2- +menutrans Fold\ col&umn\ width &Larĝo\ de\ falda\ kolumno + +menutrans &Diff Kom&pari + +menutrans &Update Ĝis&datigi +menutrans &Get\ Block &Akiri\ blokon +menutrans &Put\ Block Enme&ti\ blokon + +" -SEP2- +menutrans &Make:make Lanĉi\ ma&ke:make +menutrans &List\ Errors:cl Listigi\ &erarojn:cl +menutrans L&ist\ Messages:cl! Listigi\ &mesaĝojn:cl! +menutrans &Next\ Error:cn Sek&vanta\ eraro:cn +menutrans &Previous\ Error:cp An&taŭa\ eraro:cp +menutrans &Older\ List:cold Pli\ ma&lnova\ listo:cold +menutrans N&ewer\ List:cnew Pli\ nova\ listo:cnew + +menutrans Error\ &Window &Fenestro\ de\ eraroj + +menutrans &Update:cwin Ĝis&datigi:cwin +menutrans &Open:copen &Malfermi:copen +menutrans &Close:cclose &Fermi:cclose + +" -SEP3- +menutrans &Convert\ to\ HEX:%!xxd Konverti\ al\ deksesuma:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Retrokonverti:%!xxd\ -r + +menutrans Se&T\ Compiler &Elekti\ kompililon + + +menutrans &Buffers &Bufroj + +menutrans Dummy Fikcia +menutrans &Refresh\ menu Ĝis&datigi\ menuon +menutrans &Delete &Forviŝi +menutrans &Alternate &Alterni +menutrans &Next &Sekvanta +menutrans &Previous An&taŭa +" -SEP- + +menutrans &others a&liaj +menutrans &u-z &u-z +let g:menutrans_no_file = "[Neniu dosiero]" + + +menutrans &Window Fene&stro + +menutrans &New^Wn &Nova^Wn +menutrans S&plit^Ws Di&vidi^Ws +menutrans Sp&lit\ To\ #^W^^ Dividi\ &al\ #^W^^ +menutrans Split\ &Vertically^Wv Dividi\ &vertikale^Wv +menutrans Split\ File\ E&xplorer Dividi\ &dosierfoliumilo +" -SEP1- +menutrans &Close^Wc &Fermi^Wc +menutrans Close\ &Other(s)^Wo Fermi\ &aliajn^Wo +" -SEP2- +menutrans Move\ &To &Movu\ al + +menutrans &Top^WK Su&pro^WK +menutrans &Bottom^WJ Su&bo^WJ +menutrans &Left\ side^WH Maldekstra\ &flanko^WH +menutrans &Right\ side^WL Dekstra\ f&lanko^WL + +menutrans Rotate\ &Up^WR Rota&cii\ supre^WR +menutrans Rotate\ &Down^Wr Rotac&ii\ sube^Wr +" -SEP3- +menutrans &Equal\ Size^W= &Egala\ grando^W= +menutrans &Max\ Height^W_ Ma&ksimuma\ alto^W_ +menutrans M&in\ Height^W1_ Mi&nimuma\ alto^W1_ +menutrans Max\ &Width^W\| Maksimuma\ &larĝo^W\| +menutrans Min\ Widt&h^W1\| Minimuma\ lar&ĝo^W1\| + + +" PopUp + +menutrans &Undo &Malfari +" -SEP1- +menutrans Cu&t &Tondi +menutrans &Copy &Kopii +menutrans &Paste &Al&glui +" &Buffers.&Delete overwrites this one +menutrans &Delete &Forviŝi +" -SEP2- +menutrans Select\ Blockwise Apartigi\ &bloke +menutrans Select\ &Word Apartigi\ &vorton +menutrans Select\ &Line Apartigi\ &linion +menutrans Select\ &Block Apartigi\ blo&kon +menutrans Select\ &All Apartigi\ ĉi&on + + +" ToolBar + +menutrans Open Malfermi +menutrans Save Konservi +menutrans SaveAll Konservi\ ĉion +menutrans Print Presi +" -sep1- +menutrans Undo Rezigni +menutrans Redo Refari +" -sep2- +menutrans Cut Tondi +menutrans Copy Kopii +menutrans Paste Alglui +" -sep3- +menutrans Find Trovi +menutrans FindNext Trovi\ sekvanten +menutrans FindPrev Trovi\ antaŭen +menutrans Replace Anstataŭigi +" -sep4- +menutrans New Nova +menutrans WinSplit DividFen +menutrans WinMax MaksFen +menutrans WinMin MinFen +menutrans WinVSplit VDividFen +menutrans WinMaxWidth MaksLarĝFen +menutrans WinMinWidth MinLarĝFen +menutrans WinClose FermFen +" -sep5- +menutrans LoadSesn ŜargSeanc +menutrans SaveSesn KonsSeanc +menutrans RunScript LanĉSkript +" -sep6- +menutrans Make Make +menutrans RunCtags KreiEtik +menutrans TagJump IriAlEtik +" -sep7- +menutrans Help Helpo +menutrans FindHelp SerĉHelp + +fun! Do_toolbar_tmenu() + let did_toolbar_tmenu = 1 + tmenu ToolBar.Open Malfermi dosieron + tmenu ToolBar.Save Konservi aktualan dosieron + tmenu ToolBar.SaveAll Konservi ĉiujn dosierojn + tmenu ToolBar.Print Presi + tmenu ToolBar.Undo Rezigni + tmenu ToolBar.Redo Refari + tmenu ToolBar.Cut Tondi + tmenu ToolBar.Copy Kopii + tmenu ToolBar.Paste Alglui + if !has("gui_athena") + tmenu ToolBar.Find Trovi + tmenu ToolBar.FindNext Trovi sekvanten + tmenu ToolBar.FindPrev Trovi antaŭen + tmenu ToolBar.Replace Anstataŭigi + endif + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nova fenestro + tmenu ToolBar.WinSplit Dividi fenestron + tmenu ToolBar.WinMax Maksimumi fenestron + tmenu ToolBar.WinMin Minimumi fenestron + tmenu ToolBar.WinVSplit Dividi vertikale + tmenu ToolBar.WinMaxWidth Maksimumi larĝon de fenestro + tmenu ToolBar.WinMinWidth Minimumi larĝon de fenestro + tmenu ToolBar.WinClose Fermi fenestron + endif + tmenu ToolBar.LoadSesn Malfermi seancon + tmenu ToolBar.SaveSesn Konservi aktualan seancon + tmenu ToolBar.RunScript Ruli skripton Vim + tmenu ToolBar.Make Lanĉi make + tmenu ToolBar.RunCtags Krei etikedojn + tmenu ToolBar.TagJump Atingi tiun etikedon + tmenu ToolBar.Help Helpo de Vim + tmenu ToolBar.FindHelp Serĉo en helparo +endfun + + +menutrans &Syntax &Sintakso + +menutrans &Off &Malŝalti +menutrans &Manual &Permana +menutrans A&utomatic &Aŭtomata +menutrans on/off\ for\ &This\ file Ŝalti/Malŝalti\ por\ &tiu\ dosiero + +" The Start Of The Syntax Menu +menutrans ABC\ music\ notation ABC\ (muzika\ notacio) +menutrans AceDB\ model Modelo\ AceDB +menutrans Apache\ config Konfiguro\ de\ Apache +menutrans Apache-style\ config Konfiguro\ de\ stilo\ Apache +menutrans ASP\ with\ VBScript ASP\ kun\ VBScript +menutrans ASP\ with\ Perl ASP\ kun\ Perl +menutrans Assembly Asemblilo +menutrans BC\ calculator Kalkulilo\ BC +menutrans BDF\ font Tiparo\ BDF +menutrans BIND\ config Konfiguro\ de\ BIND +menutrans BIND\ zone Zone\ BIND +menutrans Cascading\ Style\ Sheets CSS +menutrans Cfg\ Config\ file Konfigura\ dosiero\ \.cfg +menutrans Cheetah\ template Ŝablono\ Cheetah +menutrans commit\ file Dosiero\ commit +menutrans Generic\ Config\ file Dosiero\ de\ ĝenerala\ konfiguro +menutrans Digital\ Command\ Lang DCL +menutrans DNS/BIND\ zone Regiono\ BIND/DNS +menutrans Dylan\ interface Interfaco\ Dylan +menutrans Dylan\ lid Dylan\ lid +menutrans Elm\ filter\ rules Reguloj\ de\ filtrado\ Elm +menutrans ERicsson\ LANGuage Erlang\ (Lingvo\ de\ Ericsson) +menutrans Essbase\ script Skripto\ Essbase +menutrans Eterm\ config Konfiguro\ de\ Eterm +menutrans Exim\ conf Konfiguro\ de\ Exim +menutrans Fvwm\ configuration Konfiguro\ de\ Fvwm +menutrans Fvwm2\ configuration Konfiguro\ de\ Fvwm2 +menutrans Fvwm2\ configuration\ with\ M4 Konfiguro\ de\ Fvwm2\ kun\ M4 +menutrans GDB\ command\ file Komanda\ dosiero\ de\ GDB +menutrans HTML\ with\ M4 HTML\ kun\ M4 +menutrans Cheetah\ HTML\ template Ŝablono\ Cheetah\ HTML +menutrans IDL\Generic\ IDL Ĝenerala\ IDL\IDL +menutrans IDL\Microsoft\ IDL IDL\IDL\ Mikrosofto +menutrans Indent\ profile Profilo\ Indent +menutrans Inno\ setup Konfiguro\ de\ Inno +menutrans InstallShield\ script Skripto\ InstallShield +menutrans KDE\ script Skripto\ KDE +menutrans LFTP\ config Konfiguro\ de\ LFTP +menutrans LifeLines\ script Skripto\ LifeLines +menutrans Lynx\ Style Stilo\ de\ Lynx +menutrans Lynx\ config Konfiguro\ de\ Lynx +menutrans Man\ page Manlibra\ paĝo +menutrans MEL\ (for\ Maya) MEL\ (por\ Maya) +menutrans 4DOS\ \.bat\ file Dosiero\ \.bat\ 4DOS +menutrans \.bat\/\.cmd\ file Dosiero\ \.bat\/\.cmd +menutrans \.ini\ file Dosiero\ \.ini +menutrans Module\ Definition Difino\ de\ modulo +menutrans Registry Registraro +menutrans Resource\ file Dosiero\ de\ rimedoj +menutrans Novell\ NCF\ batch Staplo\ Novell\ NCF +menutrans NSIS\ script Skripto\ NSIS +menutrans Oracle\ config Konfiguro\ de\ Oracle +menutrans Palm\ resource\ compiler Tradukilo\ de\ rimedoj\ Palm +menutrans PHP\ 3-4 PHP\ 3\ et\ 4 +menutrans Postfix\ main\ config Ĉefa\ konfiguro\ de\ Postfix +menutrans Povray\ scene\ descr Scenejo\ Povray +menutrans Povray\ configuration Konfiguro\ de\ Povray +menutrans Purify\ log Protokolo\ de\ Purify +menutrans Readline\ config Konfiguro\ de\ Readline +menutrans RCS\ log\ output Protokola\ eligo\ de\ RCS +menutrans RCS\ file Dosiero\ RCS +menutrans RockLinux\ package\ desc\. Priskribo\ de\ pakaĵoj\ RockLinux +menutrans Samba\ config Konfiguro\ de\ Samba +menutrans SGML\ catalog Katalogo\ SGML +menutrans SGML\ DTD DTD\ SGML +menutrans SGML\ Declaration Deklaracio\ SGML +menutrans Shell\ script Skripto-ŝelo +menutrans sh\ and\ ksh sh\ kaj\ ksh +menutrans Sinda\ compare Komparo\ Sinda +menutrans Sinda\ input Enigo\ Sinda +menutrans Sinda\ output Eligo\ Sinda +menutrans SKILL\ for\ Diva SKILL\ por\ Diva +menutrans Smarty\ Templates Ŝablono\ Smarty +menutrans SNNS\ network Reto\ SNNS +menutrans SNNS\ pattern Ŝablono\ SNNS +menutrans SNNS\ result Rezulto\ SNNS +menutrans Snort\ Configuration Konfiguro\ de\ Snort +menutrans Squid\ config Konfiguro\ de\ Squid +menutrans Subversion\ commit Commit\ Subversion +menutrans TAK\ compare Komparo\ TAK +menutrans TAK\ input Enigo\ TAK +menutrans TAK\ output Eligo\ TAK +menutrans TeX\ configuration Konfiguro\ de\ TeX +menutrans TF\ mud\ client TF\ (client\ MUD) +menutrans Tidy\ configuration Konfiguro\ de\ Tidy +menutrans Trasys\ input Enigo\ Trasys +menutrans Command\ Line Komanda\ linio +menutrans Geometry Geometrio +menutrans Optics Optiko +menutrans Vim\ help\ file Helpa\ dosiero\ de\ Vim +menutrans Vim\ script Skripto\ Vim +menutrans Viminfo\ file Dosiero\ Viminfo +menutrans Virata\ config Konfiguro\ de\ Virata +menutrans Wget\ config Konfiguro\ de\ wget +menutrans Whitespace\ (add) Spacetoj +menutrans WildPackets\ EtherPeek\ Decoder Malkodilo\ WildPackets\ EtherPeek +menutrans X\ resources Rimedoj\ X +menutrans XXD\ hex\ dump Eligo\ deksesuma\.\ de\ xxd +menutrans XFree86\ Config Konfiguro\ de\ XFree86 +" The End Of The Syntax Menu + +menutrans &Show\ filetypes\ in\ menu &Montri\ dosiertipojn\ en\ menuo +" -SEP1- +menutrans Set\ '&syntax'\ only Ŝalti\ nur\ '&syntax' +menutrans Set\ '&filetype'\ too Ŝalti\ ankaŭ\ '&filetype' +menutrans &Off M&alŝaltita +" -SEP3- +menutrans Co&lor\ test Testo\ de\ &koloroj +menutrans &Highlight\ test Testo\ de\ &emfazo +menutrans &Convert\ to\ HTML Konverti\ al\ &HTML + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_eo_eo.utf-8.vim b/share/vim/vim74/lang/menu_eo_eo.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_eo_eo.utf-8.vim rename to share/vim/vim74/lang/menu_eo_eo.utf-8.vim diff --git a/share/vim/vim73/lang/menu_eo_xx.utf-8.vim b/share/vim/vim74/lang/menu_eo_xx.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_eo_xx.utf-8.vim rename to share/vim/vim74/lang/menu_eo_xx.utf-8.vim diff --git a/share/vim/vim73/lang/menu_es.latin1.vim b/share/vim/vim74/lang/menu_es.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_es.latin1.vim rename to share/vim/vim74/lang/menu_es.latin1.vim diff --git a/share/vim/vim73/lang/menu_es.utf-8.vim b/share/vim/vim74/lang/menu_es.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_es.utf-8.vim rename to share/vim/vim74/lang/menu_es.utf-8.vim diff --git a/share/vim/vim74/lang/menu_es_es.latin1.vim b/share/vim/vim74/lang/menu_es_es.latin1.vim new file mode 100644 index 00000000..97f38a76 --- /dev/null +++ b/share/vim/vim74/lang/menu_es_es.latin1.vim @@ -0,0 +1,323 @@ +" Menu Translations: Español +" Previous translator: Alejandro López-Valencia +" Last translator: Omar Campagne Polaino +" Version: 7.2.245 +" Last Change: 2012 May 01 +" + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" The translations below are in latin1, but they work for cp1252, +" iso-8859-15 without conversion as well. +if &enc != "cp1252" && &enc != "iso-8859-15" + scriptencoding latin1 +endif + + +" Help menu +menutrans &Help Ay&uda +menutrans &Overview Tabla\ de\ &contenidos +menutrans &User\ Manual &Manual\ del\ usuario +menutrans &How-to\ links &Enlaces\ a\ ¿Cómo\ hago\.\.\.? +menutrans &Find\.\.\. &Buscar\ en\ la\ ayuda +menutrans &Credits &Reconocimientos +menutrans O&rphans Ayude\ a\ los\ niños\ &huérfanos +menutrans Co&pying &Términos\ de\ Licencia +menutrans Sponsor/Register Benefactor/Regístrese +menutrans &Version &Versión\ e\ \información\ de\ configuración +menutrans &About &Acerca\ de\ Vim + +" File menu +menutrans &File &Archivo +menutrans &Open\.\.\.:e &Abrir\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp A&brir\ en\ otra\ ventana\.\.\.:sp +menutrans &New:enew &Nuevo:enew +menutrans Open\ Tab\.\.\.:tabnew Abrir\ pes&taña\.\.\.:tabnew +menutrans &Close:close &Cerrar:close +menutrans &Save:w &Guardar:w +menutrans Save\ &As\.\.\.:sav Guardar\ &como\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. &Mostrar\ diferencias\ con\.\.\. +menutrans Split\ Patched\ &By\.\.\. Mostrar\ &parcheado\ por\.\.\. +menutrans &Print &Imprimir +menutrans Sa&ve-Exit:wqa Gua&rdar\ y\ salir:wqa +menutrans E&xit:qa &Salir:qa + +" Edit menu +menutrans &Edit &Editar +menutrans &Undou &Deshaceru +menutrans &Redo^R &Rehacer^R +menutrans Rep&eat\. Repe&tir\. +menutrans Cu&t"+x Cor&tar"+x +menutrans &Copy"+y &Copiar"+y +menutrans &Paste"+gP &Pegar"+gP +menutrans Put\ &Before[p Poner\ &antes[p +menutrans Put\ &After]p Poner\ &después]p +if has("win32") || has("win16") + menutrans &Deletex S&uprimirx +endif +menutrans &Select\ allggVG &Seleccionar\ todoggVG +menutrans &Find\.\.\. &Buscar\.\.\. +menutrans &Find/ &Buscar/ +menutrans Find\ and\ Rep&lace\.\.\. Buscar\ y\ R&eemplazar\.\.\. +menutrans Find\ and\ Rep&lace:%s Buscar\ y\ R&eemplazar:%s +menutrans Find\ and\ Rep&lace Buscar\ y\ R&eemplazar +menutrans Find\ and\ Rep&lace:s Buscar\ y\ R&eemplazar:s +menutrans Settings\ &Window &Ventana\ de\ opciones +menutrans Startup\ &Settings Opciones\ de\ arranque + +" Edit/Global Settings +menutrans &Global\ Settings Opciones\ &globales + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Activar/Desactivar\ &resaltado\ de\ sintaxis:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Activar/Desactivar\ &ignorar\ mayúsculas\ y\ minúsculas:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Activar/Desactivar\ &mostrar\ coincidencias:set\ sm! + +menutrans &Context\ lines Líneas\ de\ &contexto + +menutrans &Virtual\ Edit Edición\ &virtual +menutrans Never Nunca +menutrans Block\ Selection Selección\ de\ bloque +menutrans Insert\ mode Modo\ de\ inserción +menutrans Block\ and\ Insert Bloque\ e\ inserción +menutrans Always Siempre + +menutrans Toggle\ Insert\ &Mode:set\ im! Activar/Desactivar\ modo\ de\ in&serción:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Activar/Desactivar\ compatiblidad\ con\ Vi:set\ cp! + +menutrans Search\ &Path\.\.\. Ruta\ de\ &búsqueda\.\.\. + +menutrans Ta&g\ Files\.\.\. Ficheros\ de\ &etiquetas\.\.\. + +" GUI options +menutrans Toggle\ &Toolbar Ocultar/Mostrar\ barra\ de\ &herramientas +menutrans Toggle\ &Bottom\ Scrollbar Ocultar/Mostrar\ barra\ de\ desplazamiento\ &inferior +menutrans Toggle\ &Left\ Scrollbar Ocultar/Mostrar\ barra\ de\ desplazamiento\ i&zquierda +menutrans Toggle\ &Right\ Scrollbar Ocultar/Mostrar\ barra\ de\ desplazamiento\ &derecha + +let g:menutrans_path_dialog = "Introduzca la ruta de búsqueda para los archivos.\nSepare los nombres de los directorios con una coma." +let g:menutrans_tags_dialog = "Introduzca los nombres de los archivos de tags.\nSepare los nombres con una coma." + +" Edit/File Settings +menutrans F&ile\ Settings Opciones\ del\ &archivo + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! Activar/Desactivar\ &numeración\ de\ líneas:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Activar/Desactivar\ modo\ de\ lista:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Activar/Desactivar\ &quiebre\ de\ líneas:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Activar/Desactivar\ quiebre\ entre\ &palabras:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Activar/Desactivar\ &expansión\ de\ marcas\ de\ \tabulado:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Activar/Desactivar\ &auto-sangrado:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Activar/Desactivar\ sangrado\ &C:set\ cin! + +" other options +menutrans &Shiftwidth Anchura\ del\ &sangrado + +menutrans Soft\ &Tabstop &Tabulado\ «blando» + +menutrans Te&xt\ Width\.\.\. Anchura\ del\ te&xto\.\.\. +let g:menutrans_textwidth_dialog = "Introduzca el nuevo ancho del texto (0 para desactivar el quiebre de línea): " + +menutrans &File\ Format\.\.\. &Formato\ del\ archivo\.\.\. +let g:menutrans_fileformat_dialog = "Seleccione el formato para escribir el archivo" + +menutrans C&olor\ Scheme Esquema\ de\ c&olores +menutrans blue azul +menutrans darkblue azul\ oscuro +menutrans default original +menutrans desert desierto +menutrans evening vespertino +menutrans morning matutino +menutrans peachpuff melocotón +menutrans shine brillante + +menutrans Select\ Fo&nt\.\.\. Seleccionar\ fue&nte\.\.\. + +menutrans &Keymap Asociación\ de\ teclados +menutrans None Ninguna +menutrans accents acentos +menutrans arabic árabe +menutrans czech checo +menutrans greek griego +menutrans hebrew hebreo +menutrans hebrewp hebreo\ fonético +menutrans lithuanian-baltic lituano-báltico +menutrans russian-jcuken ruso-«jcuken» +menutrans russian-jcukenwin ruso-«jcuken»\ Windows +menutrans russian-yawerty ruso-«yawerty» +menutrans serbian-latin serbio-latino +menutrans serbian serbio +menutrans slovak eslovaco + + +" Programming menu +menutrans &Tools &Herramientas +menutrans &Jump\ to\ this\ tagg^] &Saltar\ a\ este\ etiquetag^] +menutrans Jump\ &back^T Saltar\ &atrás^T +menutrans Build\ &Tags\ File Crear\ archivo\ de\ &etiquetas\ +menutrans &Diff Modo\ de\ &diferencias +menutrans &Folding &Plegado +menutrans &Make:make Ejecutar\ «&Make»:make +menutrans &List\ Errors:cl &Lista\ de\ errores:cl +menutrans L&ist\ Messages:cl! L&ista\ de\ mensajes:cl! +menutrans &Next\ Error:cn &Error\ siguiente:cn +menutrans &Previous\ Error:cp Error\ p&revio:cp +menutrans &Older\ List:cold Lista\ de\ &viejos\ a\ nuevos:cold +menutrans N&ewer\ List:cnew Lista\ de\ &nuevos\ a\ viejos:cnew +menutrans Error\ &Window Ven&tana\ de\ errores +menutrans &Set\ Compiler Esco&ger\ el\ compilador\ a\ usar +menutrans &Convert\ to\ HEX:%!xxd Convertir\ a\ formato\ &hexadecimal:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r &Convertir\ al\ formato\ original:%!xxd\ -r + +" Tools.Spelling Menu +menutrans &Spelling Corrección\ ortográfica +menutrans &Spell\ Check\ On &Activar\ corrección\ ortográfica +menutrans Spell\ Check\ &Off &Desactivar\ corrección\ ortográfica +menutrans To\ &Next\ error]s &Siguiente\ error]s +menutrans To\ &Previous\ error[s Error\ &precedente[s +menutrans Suggest\ &Correctionsz= Sugerir\ &correcciónz= +menutrans &Repeat\ correction:spellrepall &Repetir\ corrección:spellrepall +an 40.335.205 &Tools.&Spelling.Castellano\ (es) :set spl=es spell +menutrans Set\ language\ to\ "en" Inglés +menutrans Set\ language\ to\ "en_au" Inglés\ (en_au) +menutrans Set\ language\ to\ "en_ca" Inglés\ (en_ca) +menutrans Set\ language\ to\ "en_gb" Inglés\ (en_gb) +menutrans Set\ language\ to\ "en_nz" Inglés\ (en_nz) +menutrans Set\ language\ to\ "en_us" Inglés\ (en_us) + +menutrans &Find\ More\ Languages &Buscar\ otras\ lenguas + +" Tools.Fold Menu +menutrans &Enable/Disable\ foldszi &Activar/Desactivar\ pliegueszi +menutrans &View\ Cursor\ Linezv &Ver\ línea\ del\ cursorzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Ve&r\ sólo\ la\ línea\ del\ cursorzMzx +menutrans C&lose\ more\ foldszm C&errar\ más\ pliegueszm +menutrans &Close\ all\ foldszM &Cerrar\ todos\ los\ pliegueszM +menutrans O&pen\ more\ foldszr Abrir\ &más\ pliegueszr +menutrans &Open\ all\ foldszR &Abrir\ todos\ los\ pliegueszR +" fold method +menutrans Fold\ Met&hod &Método\ de\ plegado +" create and delete folds +menutrans Create\ &Foldzf Crear\ &plieguezf +menutrans &Delete\ Foldzd &Suprimir\ plieguezd +menutrans Delete\ &All\ FoldszD Suprimir\ &todos\ los\ pliegueszD +" moving around in folds +menutrans Fold\ col&umn\ width A&nchura\ de\ columna\ del\ pliegue + +" Tools.Diff Menu +menutrans &Update &Actualizar +menutrans &Get\ Block &Obtener\ bloque +menutrans &Put\ Block &Poner\ bloque + +"Tools.Error Menu +menutrans &Update:cwin &Actualizar +menutrans &Open:copen A&brir +menutrans &Close:cclose &Cerrar + +" Names for buffer menu. +menutrans &Buffers &Buffers +menutrans &Refresh\ menu &Refrescar\ menú +menutrans &Delete &Suprimir +menutrans &Alternate &Alternar +menutrans &Next Si&guiente +menutrans &Previous &Previo +let g:menutrans_no_file = "[Sin archivo]" + +" Window menu +menutrans &Window &Ventana +menutrans &New^Wn Ventana\ &nueva^Wn +menutrans S&plit^Ws &Dividir\ la\ ventana^Ws +menutrans Sp&lit\ To\ #^W^^ D&ividir\ en\ el\ marcador\ (#)^W^^ +menutrans Split\ &Vertically^Wv Dividir\ &verticalmente^Wv +menutrans Split\ File\ E&xplorer &Abrir\ el\ «Explorador\ de\ archivos» +menutrans &Close^Wc &Cerrar\ esta\ ventana^Wc +menutrans Close\ &Other(s)^Wo Cerrar\ &otra(s)\ ventana(s)^Wo +menutrans Move\ &To Mov&er\ a +menutrans &Top^WK &Arriba^WK +menutrans &Bottom^WJ A&bajo^WJ +menutrans &Left\ side^WH Lado\ &izquierdo^WH +menutrans &Right\ side^WL Lado\ &derecho^WL +menutrans Rotate\ &Up^WR &Rotar\ hacia\ arriba^WR +menutrans Rotate\ &Down^Wr Rotar\ hacia\ a&bajo^Wr +menutrans &Equal\ Size^W= Mismo\ &tamaño^W= +menutrans &Max\ Height^W_ Altura\ &máxima^W_ +menutrans M&in\ Height^W1_ Altura\ mí&nima^W1_ +menutrans Max\ &Width^W\| Anchura\ má&xima^W\| +menutrans Min\ Widt&h^W1\| Anc&hura\ mínima^W1\| + +" The popup menu +menutrans &Undo &Deshacer +menutrans Cu&t Cor&tar +menutrans &Copy &Copiar +menutrans &Paste &Pegar +menutrans &Delete &Borrar +menutrans Select\ Blockwise Seleccionar\ por\ bloque +menutrans Select\ &Word Seleccionar\ &palabra +menutrans Select\ &Line Seleccionar\ una\ &línea +menutrans Select\ &Block Seleccionar\ un\ &bloque +menutrans Select\ &All Seleccionar\ &todo + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Abrir archivo + tmenu ToolBar.Save Guardar archivo + tmenu ToolBar.SaveAll Guardar todos los archivos + tmenu ToolBar.Print Imprimir + tmenu ToolBar.Undo Deshacer + tmenu ToolBar.Redo Rehacer + tmenu ToolBar.Cut Cortar + tmenu ToolBar.Copy Copiar + tmenu ToolBar.Paste Pegar + tmenu ToolBar.Find Buscar... + tmenu ToolBar.FindNext Buscar siguiente + tmenu ToolBar.FindPrev Buscar precedente + tmenu ToolBar.Replace Buscar y reemplazar + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Ventana nueva + tmenu ToolBar.WinSplit Dividir ventana + tmenu ToolBar.WinMax Altura máxima + tmenu ToolBar.WinMin Altura mínima + tmenu ToolBar.WinVSplit Dividir verticalmente + tmenu ToolBar.WinMaxWidth Anchura máxima + tmenu ToolBar.WinMinWidth Anchura mínima + tmenu ToolBar.WinClose Cerrar ventana + endif + tmenu ToolBar.LoadSesn Cargar sesión + tmenu ToolBar.SaveSesn Guardar sesión + tmenu ToolBar.RunScript Ejecutar un archivo de órdenes + tmenu ToolBar.Make Ejecutar «Make» + tmenu ToolBar.Shell Abrir un intérprete de comandos + tmenu ToolBar.RunCtags Generar un archivo de etiquetas + tmenu ToolBar.TagJump Saltar a una etiqueta + tmenu ToolBar.Help Ayuda + tmenu ToolBar.FindHelp Buscar en la ayuda... + endfun +endif + +" Syntax menu +menutrans &Syntax &Sintaxis +menutrans &Show\ filetypes\ in\ menu &Mostrar\ listas\ de\ «tipo\ de\ archivo» +menutrans Set\ '&syntax'\ only Activar\ sólo\ sintaxis +menutrans Set\ '&filetype'\ too Activar\ también\ «tipo\ de\ archivo» +menutrans &Off &Desactivar\ sintaxis +menutrans &Manual Sintaxis\ &manual +menutrans A&utomatic Sintaxis\ a&utomática +menutrans on/off\ for\ &This\ file Activar/Desactivar\ en\ es&te\ archivo +menutrans Co&lor\ test &Prueba\ de\ colores +menutrans &Highlight\ test Prueba\ de\ &resaltado +menutrans &Convert\ to\ HTML &Convertir\ a\ HTML + +" Find Help dialog text +let g:menutrans_help_dialog = "Introduzca un nombre de comando o palabra para obtener ayuda;\n\nAnteponga i_ para comandos de entrada (e.g.: i_CTRL-X)\nAnteponga c_ para comandos de la línea de comandos (e.g.: c_)\nAnteponga ` para un nombre de opción (e.g.: `shiftwidth`)" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_es_es.utf-8.vim b/share/vim/vim74/lang/menu_es_es.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_es_es.utf-8.vim rename to share/vim/vim74/lang/menu_es_es.utf-8.vim diff --git a/share/vim/vim73/lang/menu_fi.latin1.vim b/share/vim/vim74/lang/menu_fi.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_fi.latin1.vim rename to share/vim/vim74/lang/menu_fi.latin1.vim diff --git a/share/vim/vim73/lang/menu_fi.utf-8.vim b/share/vim/vim74/lang/menu_fi.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_fi.utf-8.vim rename to share/vim/vim74/lang/menu_fi.utf-8.vim diff --git a/share/vim/vim74/lang/menu_fi_fi.latin1.vim b/share/vim/vim74/lang/menu_fi_fi.latin1.vim new file mode 100644 index 00000000..6a2c1e90 --- /dev/null +++ b/share/vim/vim74/lang/menu_fi_fi.latin1.vim @@ -0,0 +1,478 @@ +" Menu Translations: Finnish +" Maintainer: Flammie Pirinen +" Last Change: 2012 May 01 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" Translations should be in latin1, if it requires latin9 or even unicode, +" change this: +if &enc != "cp1252" && &enc != "iso-8859-15" && &enc != "iso-8859-1" + scriptencoding latin1 +endif + +" Accels: TMYSPIO +menutrans &File &Tiedosto +" Accels: AJTUSNIDPOE +menutrans &Open\.\.\.:e &Avaa\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Avaa\ &jaettuna\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Avaa\ &tabissa\.\.\.:tabnew +menutrans &New:enew &Uusi:enew +menutrans &Close:close &Sulje:close +" -SEP1- +menutrans &Save:w Talle&nna:w +menutrans Save\ &As\.\.\.:sav Tallenna\ n&imellä\.\.\.:sav +" -SEP2- +menutrans Split\ &Diff\ with\.\.\. Jaa\ &diffillä\.\.\. +menutrans Split\ Patched\ &By\.\.\. Jaa\ &patchilla\.\.\. +" -SEP3- +menutrans &Print Tul&osta +" -SEP4- +menutrans Sa&ve-Exit:wqa Tall&enna\ ja\ lopeta:wqa +menutrans E&xit:qa &Lopeta:qa + + +menutrans &Edit &Muokkaa +" Accels: KPTLOIEJSAHRUYKVNF +menutrans &Undou &Kumoau +menutrans &Redo^R &Palauta^R +menutrans Rep&eat\. &Toista\. +" -SEP1- +menutrans Cu&t"+x &Leikkaa"+x +menutrans &Copy"+y K&opioi"+y +menutrans &Paste"+gP L&iitä"+gP +menutrans Put\ &Before[p Lisää\ &ennen[p +menutrans Put\ &After]p Lisää\ &jälkeen]p +menutrans &Deletex Poi&stax +menutrans &Select\ AllggVG V&alitse\ kaikkiggVG +" -SEP2- +menutrans &Find\.\.\. &Hae\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Hae\ ja\ ko&rvaa\.\.\. +menutrans &Find/ &Hae/ +menutrans Find\ and\ Rep&lace:%s Hae\ ja\ ko&rvaa:%s +menutrans Find\ and\ Rep&lace:s Hae\ ja\ ko&rvaa:s +" -SEP3- +menutrans Settings\ &Window Aset&usikkuna +menutrans Startup\ &Settings &Käynnistysasetukset +menutrans &Global\ Settings &Yleiset\ asetukset +" Submenu: +" Accels: KOSHVYIATLEPR +menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Korostus:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! &Ohita\ kirjaintaso:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! &Suljekorostus:set\ sm! + +menutrans &Context\ lines &Huomioitavat\ kontekstirivit +" Subsubmenu: +" Accels: ELSOA +menutrans &Virtual\ Edit &Virtuaalimuokkaus +menutrans Never &Ei koskaan +menutrans Block\ Selection &Lohkovalinta +menutrans Insert\ mode &Syöttötila +menutrans Block\ and\ Insert L&ohkosyöttötila +menutrans Always &Aina + +menutrans Toggle\ Insert\ &Mode:set\ im! S&yöttötila:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! V&i-tila:set\ cp! +menutrans Search\ &Path\.\.\. H&akupolku\.\.\. +menutrans Ta&g\ Files\.\.\. &Tägitiedostot\.\.\. +" -SEP1- +menutrans Toggle\ &Toolbar Työka&lupalkki +menutrans Toggle\ &Bottom\ Scrollbar Vaakavi&erityspalkki +menutrans Toggle\ &Left\ Scrollbar Vasen\ &pystyvierityspalkki +menutrans Toggle\ &Right\ Scrollbar Oikea\ pystyvie&rityspalkki + +let g:menutrans_path_dialog = "Anna tiedostojen hakupolku.\nErota hakemistot pilkuin." +let g:menutrans_tags_dialog = "Anna tägitiedostojen nimet.\nErota tidostot pilkuin." + +menutrans F&ile\ Settings Tiedostoasetu&kset +" Submenu: +" Accels: NLRSTACIBEM +menutrans Toggle\ Line\ &Numbering:set\ nu! Rivi&numerointi:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! &Listaustila:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! &Rivitys:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! &Sanoittainen rivitys:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Muuta\ &tabit\ väleiksi:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! &Automaattinen\ sisennys:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! &C-kielen\ sisennys:set\ cin! +" -SEP2- +menutrans &Shiftwidth S&isennysleveys +menutrans Soft\ &Tabstop Näennäista&bulointi +menutrans Te&xt\ Width\.\.\. Tekstinl&eveys\.\.\. +menutrans &File\ Format\.\.\. Tiedosto&muoto\.\.\. + +let g:menutrans_textwidth_dialog = "Anna uusi tekstin leveys\n(0 poistaa käytöstä)" +let g:menutrans_fileformat_dialog = "Anaa tiedoston kirjoitusmuoto." +let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Peru " + +menutrans C&olor\ Scheme &Väriteema +menutrans &Keymap &Näppäinkartta +menutrans None Ei mikään +menutrans Select\ Fo&nt\.\.\. Valitse\ &fontti\.\.\. + + +menutrans &Tools T&yökalut +" Accels: ___OTDM__ +menutrans &Jump\ to\ this\ tagg^] Siirry\ tägiing^] +menutrans Jump\ &back^T Siirry\ takaisin^T +menutrans Build\ &Tags\ File Luo\ tägitiedosto + +" -SEP1- +menutrans &Spelling &Oikeinkirjoitus +" Submenu: +" Accels: OSEKT +menutrans &Spell\ Check\ On &Oikaisuluku\ päälle +menutrans Spell\ Check\ &Off &Oikaisuluku\ pois\ päältä +menutrans To\ &Next\ error]s &Seuraavaan\ virheeseen]s +menutrans To\ &Previous\ error[s &Edelliseen\ virheeseen[s +menutrans Suggest\ &Correctionsz= Ehdota\ &korjaustaz= +menutrans &Repeat\ correction:spellrepall &Toista\ korjaus:spellrepall + +menutrans Set\ language\ to\ "en" Aseta\ kieleksi\ en +menutrans Set\ language\ to\ "en_au" Aseta\ kieleksi\ en_au +menutrans Set\ language\ to\ "en_ca" Aseta\ kieleksi\ en_ca +menutrans Set\ language\ to\ "en_gb" Aseta\ kieleksi\ en_gb +menutrans Set\ language\ to\ "en_nz" Aseta\ kieleksi\ en_nz +menutrans Set\ language\ to\ "en_us" Aseta\ kieleksi\ en_us + +menutrans &Find\ More\ Languages Hae\ lisää\ kieliä + + + +menutrans &Folding &Taitokset +" Accels: TNVSAPEOKL +menutrans &Enable/Disable\ foldszi &Taitoksetzi +menutrans &View\ Cursor\ Linezv &Näytä\ kursorin\ rivizv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Näytä\ &vain\ kursorin\ rivizMzx +menutrans C&lose\ more\ foldszm &Sulje\ lisää\ taitoksiazm +menutrans &Close\ all\ foldszM &Sulje\ kaikki\ taitoksetzM +menutrans O&pen\ more\ foldszr &Avaa\ lisää\ taitoksiazr +menutrans &Open\ all\ foldszR &Avaa\ kaikki\ taitoksetzR +" -SEP1- +menutrans Fold\ Met&hod Taitteluta&pa +" Submenu: +" Accels: MILSDM +menutrans M&anual &Manuaalinen +menutrans I&ndent S&isennys +menutrans E&xpression I&lmaus +menutrans S&yntax &Syntaksi +menutrans &Diff &Diff +menutrans Ma&rker &Merkit + +menutrans Create\ &Foldzf T&ee\ taitoszf +menutrans &Delete\ Foldzd P&oista\ taitoszd +menutrans Delete\ &All\ FoldszD Poista\ &kaikki\ taitoksetzD +" -SEP2- +menutrans Fold\ col&umn\ width Taitossarakkeen\ &leveys + +menutrans &Diff &Diffit +" Submenu: +" Accels: PHL +menutrans &Update &Päivitä +menutrans &Get\ Block &Hae\ lohko +menutrans &Put\ Block &Lisää\ lohko + +" -SEP2- +menutrans &Make:make &Make:make +menutrans &List\ Errors:cl Virheluettelo:cl +menutrans L&ist\ Messages:cl! Virheviestit:cl! +menutrans &Next\ Error:cn Seuraava\ virhe:cn +menutrans &Previous\ Error:cp Edellinen\ virhe:cp +menutrans &Older\ List:cold Edellinen\ lista:cold +menutrans N&ewer\ List:cnew Seuraava\ lista:cnew + +menutrans Error\ &Window Virheikkuna +" Submenu: +" Accels: PAS +menutrans &Update:cwin &Päivitä:cwin +menutrans &Open:copen &Avaa:copen +menutrans &Close:cclose &Sulje:cclose + +menutrans Se&T\ Compiler Ase&ta\ kääntäjä +" -SEP3- +menutrans &Convert\ to\ HEX:%!xxd Muunna\ heksoiksi:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Muunna\ takaisin:%!xxd\ -r + + +menutrans &Syntax &Syntaksi +" Accels: NSFPMAT +menutrans &Show\ filetypes\ in\ menu &Näytä\ tiedostotyypit\ valikossa +" -SEP1- +menutrans Set\ '&syntax'\ only Aseta\ vain\ &syntax +menutrans Set\ '&filetype'\ too Aseta\ myös\ &filetype +menutrans &Off &Pois\ päältä +" -SEP3- +menutrans Co&lor\ test Testaa\ värit +menutrans &Highlight\ test Testaa\ korostukset +menutrans &Convert\ to\ HTML Muunna\ HTML:ksi +" -SEP2- +menutrans &Off &Pois\ päältä +menutrans &Manual &Manuaalinen +menutrans A&utomatic &Automaattinen +menutrans on/off\ for\ &This\ file Kytke\ &tälle\ tiedostolle + +" The Start Of The Syntax Menu +menutrans ABC\ music\ notation ABC\ (notation\ musicale) +menutrans AceDB\ model Modèle\ AceDB +menutrans Apache\ config Config\.\ Apache +menutrans Apache-style\ config Config\.\ style\ Apache +menutrans ASP\ with\ VBScript ASP\ avec\ VBScript +menutrans ASP\ with\ Perl ASP\ avec\ Perl +menutrans Assembly Assembleur +menutrans BC\ calculator Calculateur\ BC +menutrans BDF\ font Fonte\ BDF +menutrans BIND\ config Config\.\ BIND +menutrans BIND\ zone Zone\ BIND +menutrans Cascading\ Style\ Sheets Feuilles\ de\ style\ en\ cascade +menutrans Cfg\ Config\ file Fichier\ de\ config\.\ \.cfg +menutrans Cheetah\ template Patron\ Cheetah +menutrans commit\ file Fichier\ commit +menutrans Generic\ Config\ file Fichier\ de\ config\.\ générique +menutrans Digital\ Command\ Lang DCL +menutrans DNS/BIND\ zone Zone\ BIND/DNS +menutrans Dylan\ interface Interface +menutrans Dylan\ lid LID +menutrans Elm\ filter\ rules Règles\ de\ filtrage\ Elm +menutrans ERicsson\ LANGuage Erlang\ (langage\ Ericsson) +menutrans Essbase\ script Script\ Essbase +menutrans Eterm\ config Config\.\ Eterm +menutrans Exim\ conf Config\.\ Exim +menutrans Fvwm\ configuration Config\.\ Fvwm +menutrans Fvwm2\ configuration Config\.\ Fvwm2 +menutrans Fvwm2\ configuration\ with\ M4 Config\.\ Fvwm2\ avec\ M4 +menutrans GDB\ command\ file Fichier\ de\ commandes\ GDB +menutrans HTML\ with\ M4 HTML\ avec\ M4 +menutrans Cheetah\ HTML\ template Patron\ Cheetah\ pour\ HTML +menutrans IDL\Generic\ IDL IDL\IDL\ générique +menutrans IDL\Microsoft\ IDL IDL\IDL\ Microsoft +menutrans Indent\ profile Profil\ Indent +menutrans Inno\ setup Config\.\ Inno +menutrans InstallShield\ script Script\ InstallShield +menutrans KDE\ script Script\ KDE +menutrans LFTP\ config Config\.\ LFTP +menutrans LifeLines\ script Script\ LifeLines +menutrans Lynx\ Style Style\ Lynx +menutrans Lynx\ config Config\.\ Lynx +menutrans Man\ page Page\ Man +menutrans MEL\ (for\ Maya) MEL\ (pour\ Maya) +menutrans 4DOS\ \.bat\ file Fichier\ \.bat\ 4DOS +menutrans \.bat\/\.cmd\ file Fichier\ \.bat\ /\ \.cmd +menutrans \.ini\ file Fichier\ \.ini +menutrans Module\ Definition Définition\ de\ module +menutrans Registry Extrait\ du\ registre +menutrans Resource\ file Fichier\ de\ ressources +menutrans Novell\ NCF\ batch Batch\ Novell\ NCF +menutrans NSIS\ script Script\ NSIS +menutrans Oracle\ config Config\.\ Oracle +menutrans Palm\ resource\ compiler Compil\.\ de\ resources\ Palm +menutrans PHP\ 3-4 PHP\ 3\ et\ 4 +menutrans Postfix\ main\ config Config\.\ Postfix +menutrans Povray\ scene\ descr Scène\ Povray +menutrans Povray\ configuration Config\.\ Povray +menutrans Purify\ log Log\ Purify +menutrans Readline\ config Config\.\ Readline +menutrans RCS\ log\ output Log\ RCS +menutrans RCS\ file Fichier\ RCS +menutrans RockLinux\ package\ desc\. Desc\.\ pkg\.\ RockLinux +menutrans Samba\ config Config\.\ Samba +menutrans SGML\ catalog Catalogue\ SGML +menutrans SGML\ DTD DTD\ SGML +menutrans SGML\ Declaration Déclaration\ SGML +menutrans Shell\ script Script\ shell +menutrans sh\ and\ ksh sh\ et\ ksh +menutrans Sinda\ compare Comparaison\ Sinda +menutrans Sinda\ input Entrée\ Sinda +menutrans Sinda\ output Sortie\ Sinda +menutrans SKILL\ for\ Diva SKILL\ pour\ Diva +menutrans Smarty\ Templates Patrons\ Smarty +menutrans SNNS\ network Réseau\ SNNS +menutrans SNNS\ pattern Motif\ SNNS +menutrans SNNS\ result Résultat\ SNNS +menutrans Snort\ Configuration Config\.\ Snort +menutrans Squid\ config Config\.\ Squid +menutrans Subversion\ commit Commit\ Subversion +menutrans TAK\ compare Comparaison\ TAK +menutrans TAK\ input Entrée\ TAK +menutrans TAK\ output Sortie\ TAK +menutrans TeX\ configuration Config\.\ TeX +menutrans TF\ mud\ client TF\ (client\ MUD) +menutrans Tidy\ configuration Config\.\ Tidy +menutrans Trasys\ input Entrée\ Trasys +menutrans Command\ Line Ligne\ de\ commande +menutrans Geometry Géométrie +menutrans Optics Optiques +menutrans Vim\ help\ file Fichier\ d'aide\ Vim +menutrans Vim\ script Script\ Vim +menutrans Viminfo\ file Fichier\ Viminfo +menutrans Virata\ config Config\.\ Virata +menutrans Wget\ config Config\.\ wget +menutrans Whitespace\ (add) Espaces\ et\ tabulations +menutrans WildPackets\ EtherPeek\ Decoder Décodeur\ WildPackets\ EtherPeek +menutrans X\ resources Resources\ X +menutrans XXD\ hex\ dump Sortie\ hexa\.\ de\ xxd +menutrans XFree86\ Config Config\.\ XFree86 + +menutrans &Buffers &Puskurit +" Accels: VPASE +menutrans Dummy Dummy +menutrans &Refresh\ menu Päivitä\ &valikko +menutrans &Delete &Poista +menutrans &Alternate V&aihda +menutrans &Next &Seuraava +menutrans &Previous &Edellinen +" -SEP- +" (Alphabet menus) +menutrans &others &muut +let g:menutrans_no_file = "[Ei tiedostoja]" + + +menutrans &Window &Ikkuna +" Accels: UJPTSMIYAKOL +menutrans &New^Wn &Uusi\ ikkuna^Wn +menutrans S&plit^Ws &Jaa^Ws +menutrans Sp&lit\ To\ #^W^^ &Jaa\ #^W^^ +menutrans Split\ &Vertically^Wv Jaa\ &pystysuunnassa^Wv +menutrans Split\ File\ E&xplorer Jaa\ &tiedostonhallinnalle +" -SEP1- +menutrans &Close^Wc &Sulje^Wc +menutrans Close\ &Other(s)^Wo Sulje\ &muut^Wo +" -SEP2- +menutrans Move\ &To S&iirrä +" Submenu: +" Accels: YAOV +menutrans &Top^WK &Ylös^WK +menutrans &Bottom^WJ &Alas^WJ +menutrans &Left\ side^WH &Oikealle^WH +menutrans &Right\ side^WL &Vasemmalle^WL + +menutrans Rotate\ &Up^WR Vaihda\ &ylemmäs^WR +menutrans Rotate\ &Down^Wr Vaihda\ &alemmas^Wr +" -SEP3- +menutrans &Equal\ Size^W= Saman\ &kokoisiksi^W= +menutrans &Max\ Height^W_ Enimmäisk&orkeuteen^W_ +menutrans M&in\ Height^W1_ Vähimmäisk&orkeuteen^W1_ +menutrans Max\ &Width^W\| Enimmäis&leveyteen^W\| +menutrans Min\ Widt&h^W1\| Vähimmäis&leveyteen^W1\| + +" (Plugin menus here) +menutrans Plugin Liitännäiset + +menutrans &Help &Ohje +" Accels: YKUHTLROVI +menutrans &Overview &Yleiskatsaus +menutrans &User\ Manual &Käyttöohje +menutrans &How-to\ links K&UINKA-linkkejä +menutrans &Find\.\.\. &Hae\.\.\. +" -sep1- +menutrans &Credits &Tekijät +menutrans Co&pying &Lisenssi +menutrans &Sponsor/Register Sponsoroi/&Rekisteröi +menutrans O&rphans &Orvoista +" -sep2- +menutrans &Version &Versio +menutrans &About T&ietoja + +let g:menutrans_help_dialog = "Anna komento tai sana, jota haetaan ohjeesta.\n\nAloita i_:llä syöttötilan komentoja varten (esim. i_CTRL-X)\nAloita c_:llä komentoriviä varten (esim. c_)\nKirjoita asetukset puolilainausmerkkeijin (esim. 'shiftwidth')" + + +" PopUp + +menutrans &Undo &Kumoa +" -SEP1- +menutrans Cu&t &Leikkaa +menutrans &Copy &Kopioi +menutrans &Paste L&iitä +" &Buffers.&Delete overwrites this one +menutrans &Delete &Poista +" -SEP2- +menutrans Select\ Blockwise Valitse\ lohkoittain +menutrans Select\ &Word Valitse\ &sana +menutrans Select\ &Line Valitse\ &rivi +menutrans Select\ &Block Valitse\ &lohko +menutrans Select\ &All Valitse\ &kaikki + + +" ToolBar + +menutrans Open Avaa +menutrans Save Tallenna +menutrans SaveAll TallennaKaikki +menutrans Print Tulosta +" -sep1- +menutrans Undo Kumoa +menutrans Redo Palauta +" -sep2- +menutrans Cut Leikkaa +menutrans Copy Kopioi +menutrans Paste Liitä +" -sep3- +menutrans Find Etsi +menutrans FindNext EtsiSeur +menutrans FindPrev EtsiEd +menutrans Replace Korvaa +" -sep4- +menutrans New Uusi +menutrans WinSplit JaaIkk +menutrans WinMax IkkMax +menutrans WinMin IkkMin +menutrans WinVSplit JaaIkkV +menutrans WinMaxWidth IkkMaxLev +menutrans WinMinWidth IkkMinLev +menutrans WinClose SuljeIkk +" -sep5- +menutrans LoadSesn AvaaSess +menutrans SaveSesn TallSess +menutrans RunScript AjaSkripti +" -sep6- +menutrans Make Make +menutrans RunCtags AjaCTags +menutrans TagJump TagHypp +" -sep7- +menutrans Help Ohje +menutrans FindHelp OhjeHaku + +fun! Do_toolbar_tmenu() + let did_toolbar_tmenu = 1 + tmenu ToolBar.Open Avaa tiedosto + tmenu ToolBar.Save Tallenna nykyinen tiedosto + tmenu ToolBar.SaveAll Tallenna kaikki tiedostot + tmenu ToolBar.Print Tulosta + tmenu ToolBar.Undo Kumoa + tmenu ToolBar.Redo Palauta + tmenu ToolBar.Cut Leikkaa + tmenu ToolBar.Copy Kopioi + tmenu ToolBar.Paste Liitä + if !has("gui_athena") + tmenu ToolBar.Find Hae + tmenu ToolBar.FindNext Hae seuraava + tmenu ToolBar.FindPrev Hae edellinen + tmenu ToolBar.Replace Korvaa + endif + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Uusi ikkuna + tmenu ToolBar.WinSplit Jaa ikkuna + tmenu ToolBar.WinMax Maximiser fenêtre + tmenu ToolBar.WinMin Minimiser fenêtre + tmenu ToolBar.WinVSplit Fractionner verticalement + tmenu ToolBar.WinMaxWidth Maximiser largeur fenêtre + tmenu ToolBar.WinMinWidth Minimiser largeur fenêtre + tmenu ToolBar.WinClose Fermer fenêtre + endif + tmenu ToolBar.LoadSesn Avaa sessio + tmenu ToolBar.SaveSesn Tallenna nykyinen sessio + tmenu ToolBar.RunScript Lataa vim-skripti + tmenu ToolBar.Make Suorita make + tmenu ToolBar.RunCtags Suorita CTags + tmenu ToolBar.TagJump Hyppää tägiin + tmenu ToolBar.Help Vimin ohje + tmenu ToolBar.FindHelp Etsi ohjeesta +endfun + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim: set fileencoding=latin1 diff --git a/share/vim/vim73/lang/menu_fi_fi.utf-8.vim b/share/vim/vim74/lang/menu_fi_fi.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_fi_fi.utf-8.vim rename to share/vim/vim74/lang/menu_fi_fi.utf-8.vim diff --git a/share/vim/vim73/lang/menu_finnish_finland.1252.vim b/share/vim/vim74/lang/menu_finnish_finland.1252.vim similarity index 100% rename from share/vim/vim73/lang/menu_finnish_finland.1252.vim rename to share/vim/vim74/lang/menu_finnish_finland.1252.vim diff --git a/share/vim/vim73/lang/menu_fr.latin1.vim b/share/vim/vim74/lang/menu_fr.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_fr.latin1.vim rename to share/vim/vim74/lang/menu_fr.latin1.vim diff --git a/share/vim/vim73/lang/menu_fr.utf-8.vim b/share/vim/vim74/lang/menu_fr.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_fr.utf-8.vim rename to share/vim/vim74/lang/menu_fr.utf-8.vim diff --git a/share/vim/vim74/lang/menu_fr_fr.latin1.vim b/share/vim/vim74/lang/menu_fr_fr.latin1.vim new file mode 100644 index 00000000..c4b63c78 --- /dev/null +++ b/share/vim/vim74/lang/menu_fr_fr.latin1.vim @@ -0,0 +1,473 @@ +" Menu Translations: Francais +" Maintainer: Adrien Beau +" First Version: Francois Thunus +" Last Modification: David Blanchet +" Last Change: 2012 May 01 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" The translations below are in latin1, but they work for cp1252 and +" iso-8859-15 without conversion as well. +if &enc != "cp1252" && &enc != "iso-8859-15" && &enc != "iso-8859-1" + scriptencoding latin1 +endif + +menutrans &Help &Aide + +menutrans &Overview &Sommaire +menutrans &User\ Manual &Manuel\ utilisateur +menutrans &How-to\ links &Tâches\ courantes +menutrans &Find\.\.\. Rec&hercher\.\.\. +" -sep1- +menutrans &Credits &Remerciements +menutrans Co&pying &License +menutrans &Sponsor/Register Sponsor/&Enregistrement +menutrans O&rphans &Orphelins +" -sep2- +menutrans &Version &Version +menutrans &About À\ &propos\ de\ Vim + +let g:menutrans_help_dialog = "Entrez une commande ou un mot à rechercher dans l'aide.\n\nAjoutez i_ pour les commandes du mode Insertion (ex: i_CTRL-X)\nAjoutez c_ pour l'édition de la ligne de commande (ex: c_)\nEntourez les options avec des apostrophes (ex: 'shiftwidth')" + + +menutrans &File &Fichier + +menutrans &Open\.\.\.:e &Ouvrir\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Ouvrir\ à\ p&art\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Ouvrir\ dans\ un\ onglet\.\.\.:tabnew +menutrans &New:enew &Nouveau:enew +menutrans &Close:close &Fermer:close +" -SEP1- +menutrans &Save:w &Enregistrer:w +menutrans Save\ &As\.\.\.:sav Enregistrer\ &sous\.\.\.:sav +" -SEP2- +menutrans Split\ &Diff\ with\.\.\. &Difference\ avec\.\.\. +"menutrans Split\ Patched\ &By\.\.\. &Patcher\ avec\.\.\. +menutrans Split\ Patched\ &By\.\.\. &Tester\ un\ patch\.\.\. +" -SEP3- +menutrans &Print &Imprimer +" -SEP4- +menutrans Sa&ve-Exit:wqa En®istrer\ et\ quitter:wqa +menutrans E&xit:qa &Quitter:qa + + +menutrans &Edit &Edition + +menutrans &Undou &Annuleru +menutrans &Redo^R Re&faire^R +menutrans Rep&eat\. R&épéter\. +" -SEP1- +menutrans Cu&t"+x Co&uper"+x +menutrans &Copy"+y Cop&ier"+y +menutrans &Paste"+gP C&oller"+gP +menutrans Put\ &Before[p Placer\ a&vant[p +menutrans Put\ &After]p Placer\ apr&ès]p +menutrans &Deletex Effa&cerx +menutrans &Select\ AllggVG &Sélectionner\ toutggVG +" -SEP2- +menutrans &Find\.\.\. Rec&hercher\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Re&mplacer\.\.\. +menutrans &Find/ Rec&hercher/ +menutrans Find\ and\ Rep&lace:%s Re&mplacer:%s +menutrans Find\ and\ Rep&lace:s Re&mplacer:s +" -SEP3- +menutrans Settings\ &Window Fe&nêtre\ des\ réglages +menutrans &Global\ Settings Réglages\ globau&x + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Surligner\ recherche\ on/off:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! &Ignorer\ casse\ on/off:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Vérifier\ parenth&èses\ on/off:set\ sm! + +menutrans &Context\ lines Lignes\ &autour\ du\ curseur + +menutrans &Virtual\ Edit Édition\ &virtuelle +menutrans Never &Jamais +menutrans Block\ Selection &Sélection\ en\ bloc +menutrans Insert\ mode &Mode\ insertion +menutrans Block\ and\ Insert &Bloc\ et\ insertion +menutrans Always &Toujours + +menutrans Toggle\ Insert\ &Mode:set\ im! I&nsertion\ permanente\ on/off:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! &Compatibilité\ Vi\ on/off:set\ cp! +menutrans Search\ &Path\.\.\. Chemin\ de\ rec&herche\ des\ fichiers\.\.\. +menutrans Ta&g\ Files\.\.\. Fichiers\ d'&étiquettes\.\.\. +" -SEP1- +menutrans Toggle\ &Toolbar Barre\ d'&outils\ on/off +menutrans Toggle\ &Bottom\ Scrollbar Ascenseur\ &horizontal\ on/off +menutrans Toggle\ &Left\ Scrollbar Ascenseur\ à\ ga&uche\ on/off +menutrans Toggle\ &Right\ Scrollbar Ascenseur\ à\ &droite\ on/off + +let g:menutrans_path_dialog = "Entrez le chemin de recherche des fichiers.\nSéparez les répertoires par des virgules." +let g:menutrans_tags_dialog = "Entrez les noms des fichiers d'étiquettes.\nSéparez les noms par des virgules." + +menutrans F&ile\ Settings Réglages\ fichie&r + +menutrans Toggle\ Line\ &Numbering:set\ nu! &Numérotation\ on/off:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Mode\ &listing\ on/off:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! &Retour\ à\ la\ ligne\ on/off:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Retour\ sur\ &mot\ on/off:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! &Tab\.\ en\ espaces\ on/off:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Indentation\ &auto\.\ on/off:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Indent\.\ langage\ &C\ on/off:set\ cin! +" -SEP2- +menutrans &Shiftwidth Largeur\ des\ in&dentations +menutrans Soft\ &Tabstop &Pseudo-tabulations +menutrans Te&xt\ Width\.\.\. Largeur\ du\ te&xte\.\.\. +menutrans &File\ Format\.\.\. Format\ du\ &fichier\.\.\. + +let g:menutrans_textwidth_dialog = "Entrez la nouvelle largeur du texte\n(0 pour désactiver le formattage)." +let g:menutrans_fileformat_dialog = "Choisissez le format dans lequel écrire le fichier." +let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Annuler " + +menutrans C&olor\ Scheme &Jeu\ de\ couleurs +menutrans &Keymap &Type\ de\ clavier +menutrans None (aucun) +menutrans Select\ Fo&nt\.\.\. Sélectionner\ &police\.\.\. + + +menutrans &Tools &Outils + +menutrans &Jump\ to\ this\ tagg^] &Atteindre\ cette\ étiquetteg^] +menutrans Jump\ &back^T Repartir\ en\ arri&ère^T +menutrans Build\ &Tags\ File &Générer\ fichier\ d'étiquettes + +" -SEP1- +menutrans &Spelling &Orthographe +menutrans &Spell\ Check\ On &Activer +menutrans Spell\ Check\ &Off &Désactiver +menutrans To\ &Next\ error]s À\ l'erreur\ &suivante]s +menutrans To\ &Previous\ error[s À\ l'erreur\ &précédente[s +menutrans Suggest\ &Correctionsz= Suggérer\ &correctionz= +menutrans &Repeat\ correction:spellrepall &Reporter\ la\ correction:spellrepall + +an 40.335.205 &Tools.&Spelling.Français\ (fr) :set spl=fr spell +menutrans Set\ language\ to\ "en" Anglais +menutrans Set\ language\ to\ "en_au" Anglais\ (en_au) +menutrans Set\ language\ to\ "en_ca" Anglais\ (en_ca) +menutrans Set\ language\ to\ "en_gb" Anglais\ (en_gb) +menutrans Set\ language\ to\ "en_nz" Anglais\ (en_nz) +menutrans Set\ language\ to\ "en_us" Anglais\ (en_us) + +menutrans &Find\ More\ Languages &Trouver\ d'autres\ langues + + + +menutrans &Folding &Replis + +menutrans &Enable/Disable\ foldszi &Replis\ on/offzi +menutrans &View\ Cursor\ Linezv D&éplier\ ligne\ curseurzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Tout\ plier\ &sauf\ ligne\ curseurzMzx +menutrans C&lose\ more\ foldszm Fermer\ &plus\ de\ repliszm +menutrans &Close\ all\ foldszM F&ermer\ tous\ les\ repliszM +menutrans O&pen\ more\ foldszr Ouvrir\ pl&us\ de\ repliszr +menutrans &Open\ all\ foldszR &Ouvrir\ tous\ les\ repliszR +" -SEP1- +menutrans Fold\ Met&hod &Méthode\ de\ repli + +menutrans M&anual &Manuelle +menutrans I&ndent &Indentation +menutrans E&xpression &Expression +menutrans S&yntax &Syntaxe +menutrans &Diff &Différence +menutrans Ma&rker Ma&rqueurs + +menutrans Create\ &Foldzf &Créer\ replizf +menutrans &Delete\ Foldzd E&ffacer\ replizd +menutrans Delete\ &All\ FoldszD Effacer\ &tous\ les\ repliszD +" -SEP2- +menutrans Fold\ col&umn\ width &Largeur\ colonne\ replis + +menutrans &Diff &Différence + +menutrans &Update &Mettre\ à\ jour +menutrans &Get\ Block Corriger\ &ce\ tampon +menutrans &Put\ Block Corriger\ l'&autre\ tampon + +" -SEP2- +menutrans &Make:make Lancer\ ma&ke:make +menutrans &List\ Errors:cl Lister\ &erreurs:cl +menutrans L&ist\ Messages:cl! Lister\ &messages:cl! +menutrans &Next\ Error:cn Erreur\ &suivante:cn +menutrans &Previous\ Error:cp Erreur\ pr&écédente:cp +"menutrans &Older\ List:cold A&ncienne\ liste:cold +menutrans &Older\ List:cold Liste\ &précédente:cold +"menutrans N&ewer\ List:cnew No&uvelle\ liste:cnew +menutrans N&ewer\ List:cnew Liste\ suivan&te:cnew + +menutrans Error\ &Window &Fenêtre\ d'erreurs + +menutrans &Update:cwin &Mettre\ à\ jour:cwin +menutrans &Open:copen &Ouvrir:copen +menutrans &Close:cclose &Fermer:cclose + +" -SEP3- +menutrans &Convert\ to\ HEX:%!xxd Convertir\ en\ he&xa:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Décon&vertir:%!xxd\ -r + +menutrans Se&T\ Compiler &Type\ de\ compilateur + + +menutrans &Buffers &Tampons + +menutrans Dummy Factice +menutrans &Refresh\ menu &Mettre\ ce\ menu\ à\ jour +menutrans &Delete &Effacer +menutrans &Alternate &Alterner +menutrans &Next &Suivant +menutrans &Previous &Précédent +" -SEP- + +menutrans &others au&tres +menutrans &u-z &uvwxyz +let g:menutrans_no_file = "[Aucun fichier]" + + +menutrans &Window Fe&nêtre + +menutrans &New^Wn &Nouvelle\ fenêtre^Wn +menutrans S&plit^Ws &Fractionner^Ws +menutrans Sp&lit\ To\ #^W^^ Fractionner\ p&our\ #^W^^ +menutrans Split\ &Vertically^Wv Fractionner\ &verticalement^Wv +menutrans Split\ File\ E&xplorer Fractionner\ &explorateur +" -SEP1- +menutrans &Close^Wc Fer&mer^Wc +menutrans Close\ &Other(s)^Wo Fermer\ les\ &autres^Wo +" -SEP2- +menutrans Move\ &To &Déplacer\ vers\ le + +menutrans &Top^WK &Haut^WK +menutrans &Bottom^WJ &Bas^WJ +menutrans &Left\ side^WH Côté\ &gauche^WH +menutrans &Right\ side^WL Côté\ &droit^WL + +menutrans Rotate\ &Up^WR Rotation\ vers\ le\ &haut^WR +menutrans Rotate\ &Down^Wr Rotation\ vers\ le\ &bas^Wr +" -SEP3- +menutrans &Equal\ Size^W= Égaliser\ ta&illes^W= +menutrans &Max\ Height^W_ Hau&teur\ maximale^W_ +menutrans M&in\ Height^W1_ Ha&uteur\ minimale^W1_ +menutrans Max\ &Width^W\| &Largeur\ maximale^W\| +menutrans Min\ Widt&h^W1\| La&rgeur\ minimale^W1\| + + +" PopUp + +menutrans &Undo &Annuler +" -SEP1- +menutrans Cu&t Co&uper +menutrans &Copy Cop&ier +menutrans &Paste C&oller +" &Buffers.&Delete overwrites this one +menutrans &Delete &Effacer +" -SEP2- +menutrans Select\ Blockwise Sélectionner\ &bloc +menutrans Select\ &Word Sélectionner\ &mot +menutrans Select\ &Line Sélectionner\ &ligne +menutrans Select\ &Block Sélectionner\ &bloc +menutrans Select\ &All Sélectionner\ &tout + + +" ToolBar + +menutrans Open Ouvrir +menutrans Save Enreg +menutrans SaveAll EnregTout +menutrans Print Imprimer +" -sep1- +menutrans Undo Annuler +menutrans Redo Refaire +" -sep2- +menutrans Cut Couper +menutrans Copy Copier +menutrans Paste Coller +" -sep3- +menutrans Find Chercher +menutrans FindNext CherchSuiv +menutrans FindPrev CherchPrec +menutrans Replace Remplacer +" -sep4- +menutrans New Nouvelle +menutrans WinSplit FenFract +menutrans WinMax FenMax +menutrans WinMin FenMin +menutrans WinVSplit FenVFract +menutrans WinMaxWidth FenMaxLarg +menutrans WinMinWidth FenMinLarg +menutrans WinClose FenFerme +" -sep5- +menutrans LoadSesn OuvrirSess +menutrans SaveSesn EnregSess +menutrans RunScript LancScript +" -sep6- +menutrans Make Make +menutrans RunCtags CréerEtiqu +menutrans TagJump AllerEtiqu +" -sep7- +menutrans Help Aide +menutrans FindHelp CherchAide + +fun! Do_toolbar_tmenu() + let did_toolbar_tmenu = 1 + tmenu ToolBar.Open Ouvrir fichier + tmenu ToolBar.Save Enregistrer fichier courant + tmenu ToolBar.SaveAll Enregistrer tous les fichiers + tmenu ToolBar.Print Imprimer + tmenu ToolBar.Undo Annuler + tmenu ToolBar.Redo Refaire + tmenu ToolBar.Cut Couper + tmenu ToolBar.Copy Copier + tmenu ToolBar.Paste Coller + if !has("gui_athena") + tmenu ToolBar.Find Rechercher + tmenu ToolBar.FindNext Chercher suivant + tmenu ToolBar.FindPrev Chercher précédent + tmenu ToolBar.Replace Remplacer + endif + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nouvelle fenêtre + tmenu ToolBar.WinSplit Fractionner fenêtre + tmenu ToolBar.WinMax Maximiser fenêtre + tmenu ToolBar.WinMin Minimiser fenêtre + tmenu ToolBar.WinVSplit Fractionner verticalement + tmenu ToolBar.WinMaxWidth Maximiser largeur fenêtre + tmenu ToolBar.WinMinWidth Minimiser largeur fenêtre + tmenu ToolBar.WinClose Fermer fenêtre + endif + tmenu ToolBar.LoadSesn Ouvrir session + tmenu ToolBar.SaveSesn Enregister session courante + tmenu ToolBar.RunScript Lancer un script Vim + tmenu ToolBar.Make Lancer make + tmenu ToolBar.RunCtags Créer les étiquettes + tmenu ToolBar.TagJump Atteindre cette étiquette + tmenu ToolBar.Help Aide de Vim + tmenu ToolBar.FindHelp Rechercher dans l'aide +endfun + + +menutrans &Syntax &Syntaxe + +menutrans &Off Désactiver +menutrans &Manual &Manuelle +menutrans A&utomatic &Automatique +menutrans on/off\ for\ &This\ file On/off\ pour\ &ce\ fichier + +" The Start Of The Syntax Menu +menutrans ABC\ music\ notation ABC\ (notation\ musicale) +menutrans AceDB\ model Modèle\ AceDB +menutrans Apache\ config Config\.\ Apache +menutrans Apache-style\ config Config\.\ style\ Apache +menutrans ASP\ with\ VBScript ASP\ avec\ VBScript +menutrans ASP\ with\ Perl ASP\ avec\ Perl +menutrans Assembly Assembleur +menutrans BC\ calculator Calculateur\ BC +menutrans BDF\ font Fonte\ BDF +menutrans BIND\ config Config\.\ BIND +menutrans BIND\ zone Zone\ BIND +menutrans Cascading\ Style\ Sheets Feuilles\ de\ style\ en\ cascade +menutrans Cfg\ Config\ file Fichier\ de\ config\.\ \.cfg +menutrans Cheetah\ template Patron\ Cheetah +menutrans commit\ file Fichier\ commit +menutrans Generic\ Config\ file Fichier\ de\ config\.\ générique +menutrans Digital\ Command\ Lang DCL +menutrans DNS/BIND\ zone Zone\ BIND/DNS +menutrans Dylan\ interface Interface +menutrans Dylan\ lid LID +menutrans Elm\ filter\ rules Règles\ de\ filtrage\ Elm +menutrans ERicsson\ LANGuage Erlang\ (langage\ Ericsson) +menutrans Essbase\ script Script\ Essbase +menutrans Eterm\ config Config\.\ Eterm +menutrans Exim\ conf Config\.\ Exim +menutrans Fvwm\ configuration Config\.\ Fvwm +menutrans Fvwm2\ configuration Config\.\ Fvwm2 +menutrans Fvwm2\ configuration\ with\ M4 Config\.\ Fvwm2\ avec\ M4 +menutrans GDB\ command\ file Fichier\ de\ commandes\ GDB +menutrans HTML\ with\ M4 HTML\ avec\ M4 +menutrans Cheetah\ HTML\ template Patron\ Cheetah\ pour\ HTML +menutrans IDL\Generic\ IDL IDL\IDL\ générique +menutrans IDL\Microsoft\ IDL IDL\IDL\ Microsoft +menutrans Indent\ profile Profil\ Indent +menutrans Inno\ setup Config\.\ Inno +menutrans InstallShield\ script Script\ InstallShield +menutrans KDE\ script Script\ KDE +menutrans LFTP\ config Config\.\ LFTP +menutrans LifeLines\ script Script\ LifeLines +menutrans Lynx\ Style Style\ Lynx +menutrans Lynx\ config Config\.\ Lynx +menutrans Man\ page Page\ Man +menutrans MEL\ (for\ Maya) MEL\ (pour\ Maya) +menutrans 4DOS\ \.bat\ file Fichier\ \.bat\ 4DOS +menutrans \.bat\/\.cmd\ file Fichier\ \.bat\ /\ \.cmd +menutrans \.ini\ file Fichier\ \.ini +menutrans Module\ Definition Définition\ de\ module +menutrans Registry Extrait\ du\ registre +menutrans Resource\ file Fichier\ de\ ressources +menutrans Novell\ NCF\ batch Batch\ Novell\ NCF +menutrans NSIS\ script Script\ NSIS +menutrans Oracle\ config Config\.\ Oracle +menutrans Palm\ resource\ compiler Compil\.\ de\ resources\ Palm +menutrans PHP\ 3-4 PHP\ 3\ et\ 4 +menutrans Postfix\ main\ config Config\.\ Postfix +menutrans Povray\ scene\ descr Scène\ Povray +menutrans Povray\ configuration Config\.\ Povray +menutrans Purify\ log Log\ Purify +menutrans Readline\ config Config\.\ Readline +menutrans RCS\ log\ output Log\ RCS +menutrans RCS\ file Fichier\ RCS +menutrans RockLinux\ package\ desc\. Desc\.\ pkg\.\ RockLinux +menutrans Samba\ config Config\.\ Samba +menutrans SGML\ catalog Catalogue\ SGML +menutrans SGML\ DTD DTD\ SGML +menutrans SGML\ Declaration Déclaration\ SGML +menutrans Shell\ script Script\ shell +menutrans sh\ and\ ksh sh\ et\ ksh +menutrans Sinda\ compare Comparaison\ Sinda +menutrans Sinda\ input Entrée\ Sinda +menutrans Sinda\ output Sortie\ Sinda +menutrans SKILL\ for\ Diva SKILL\ pour\ Diva +menutrans Smarty\ Templates Patrons\ Smarty +menutrans SNNS\ network Réseau\ SNNS +menutrans SNNS\ pattern Motif\ SNNS +menutrans SNNS\ result Résultat\ SNNS +menutrans Snort\ Configuration Config\.\ Snort +menutrans Squid\ config Config\.\ Squid +menutrans Subversion\ commit Commit\ Subversion +menutrans TAK\ compare Comparaison\ TAK +menutrans TAK\ input Entrée\ TAK +menutrans TAK\ output Sortie\ TAK +menutrans TeX\ configuration Config\.\ TeX +menutrans TF\ mud\ client TF\ (client\ MUD) +menutrans Tidy\ configuration Config\.\ Tidy +menutrans Trasys\ input Entrée\ Trasys +menutrans Command\ Line Ligne\ de\ commande +menutrans Geometry Géométrie +menutrans Optics Optiques +menutrans Vim\ help\ file Fichier\ d'aide\ Vim +menutrans Vim\ script Script\ Vim +menutrans Viminfo\ file Fichier\ Viminfo +menutrans Virata\ config Config\.\ Virata +menutrans Wget\ config Config\.\ wget +menutrans Whitespace\ (add) Espaces\ et\ tabulations +menutrans WildPackets\ EtherPeek\ Decoder Décodeur\ WildPackets\ EtherPeek +menutrans X\ resources Resources\ X +menutrans XXD\ hex\ dump Sortie\ hexa\.\ de\ xxd +menutrans XFree86\ Config Config\.\ XFree86 +" The End Of The Syntax Menu + +menutrans &Show\ filetypes\ in\ menu &Afficher\ tout\ le\ menu +" -SEP1- +menutrans Set\ '&syntax'\ only Changer\ '&syntax'\ seulement +menutrans Set\ '&filetype'\ too Changer\ '&filetype'\ aussi +menutrans &Off &Off +" -SEP3- +menutrans Co&lor\ test Tester\ les\ co&uleurs +menutrans &Highlight\ test Tester\ les\ g&roupes\ de\ surbrillance +menutrans &Convert\ to\ HTML Con&vertir\ en\ HTML + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_fr_fr.utf-8.vim b/share/vim/vim74/lang/menu_fr_fr.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_fr_fr.utf-8.vim rename to share/vim/vim74/lang/menu_fr_fr.utf-8.vim diff --git a/share/vim/vim73/lang/menu_french_france.1252.vim b/share/vim/vim74/lang/menu_french_france.1252.vim similarity index 100% rename from share/vim/vim73/lang/menu_french_france.1252.vim rename to share/vim/vim74/lang/menu_french_france.1252.vim diff --git a/share/vim/vim73/lang/menu_german_germany.1252.vim b/share/vim/vim74/lang/menu_german_germany.1252.vim similarity index 100% rename from share/vim/vim73/lang/menu_german_germany.1252.vim rename to share/vim/vim74/lang/menu_german_germany.1252.vim diff --git a/share/vim/vim73/lang/menu_hu.iso_8859-2.vim b/share/vim/vim74/lang/menu_hu.iso_8859-2.vim similarity index 100% rename from share/vim/vim73/lang/menu_hu.iso_8859-2.vim rename to share/vim/vim74/lang/menu_hu.iso_8859-2.vim diff --git a/share/vim/vim73/lang/menu_hu.utf-8.vim b/share/vim/vim74/lang/menu_hu.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_hu.utf-8.vim rename to share/vim/vim74/lang/menu_hu.utf-8.vim diff --git a/share/vim/vim74/lang/menu_hu_hu.iso_8859-2.vim b/share/vim/vim74/lang/menu_hu_hu.iso_8859-2.vim new file mode 100644 index 00000000..c7821d2b --- /dev/null +++ b/share/vim/vim74/lang/menu_hu_hu.iso_8859-2.vim @@ -0,0 +1,263 @@ +" Menu Translations: Hungarian (Magyar) +" Original Translation: Zoltán Árpádffy +" Maintained By: Kontra Gergely +" Last Change: 2012 May 01 +" I'm working on defining (unaccented) hotkeys for everything. +" I want to remove y and z hotkeys, because on the hungarian keymap they're at +" a differrent place. +" I also want to avoid g and j shortcuts, because you cannot see, wheter +" they're underlined or not. +" If the hotkeys are not uniq (pressing the hotkey doesn't executes the menu, +" just one menupoint is selected), or you find any other undesired behaviour, +" please report it to me. +" All kind of feedback is welcome. +" +" Igyekeztem mindenhez gyorsbillentyût rendelni, lehetõleg nem ékezeteset. +" További tennivaló az y és z gyorsbillentyûk kiirtása, ezenkívül a g, j +" billentyûk irtása is, mivel ez utóbbiak aláhúzott változatát nem könnyû +" felismerni. +" Amennyiben valahol nem egyértelmûk a gyorsbillentyûk (a gyorsbillentyût +" leütve nem hajtódik végre a kiszemelt menüpont, hanem csak kiválasztódik, +" vagy másik menüpont választódik ki), vagy egyéb hibát találsz, kérlek jelezd +" nekem a fenti email címen. +" Mindennemû visszajelzést szívesen fogadok. + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding iso-8859-2 + +" Help menu +menutrans &Help &Súgó +menutrans &Overview Á&ttekintés +menutrans &How-to\ links &HOGYAN\ linkek +menutrans &User\ Manual &Kézikönyv +menutrans &Credits &Szerzõk,\ köszönetek +menutrans Co&pying &Védjegy +menutrans O&rphans Árvá&k +menutrans &Find\.\.\. Ke&resés\.\.\. +menutrans &Version &Verzió +menutrans &About &Névjegy +" File menu +menutrans &File &Fájl +menutrans &Open\.\.\.:e Meg&nyitás\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Megnyitás\ új\ a&blakba\.\.\.:sp +menutrans &New:enew Új\ dok&umentum:enew +menutrans &Close:close Be&zárás:close +menutrans &Save:w &Mentés:w +menutrans Split\ &Diff\ with\.\.\. Össze&hasonlítás\.\.\. +menutrans Split\ Patched\ &By\.\.\. Összehasonlítás\ &patch\ -el\.\.\. +menutrans Save\ &As\.\.\.:sav Menté&s\ másként\.\.\.:w +menutrans &Print Nyomt&atás +menutrans Sa&ve-Exit:wqa Mentés\ és\ k&ilépés:wqa +menutrans E&xit:qa &Kilépés:qa + +" Edit menu +menutrans &Edit S&zerkesztés +menutrans &Undou &Visszavonásu +menutrans &Redo^R Mé&gis^R +menutrans Rep&eat\. &Ismét\. +menutrans Cu&t"+x &Kivágás"+x +menutrans &Copy"+y &Másolás"+y +menutrans &Paste"+gP &Beillesztés"+gP +menutrans Put\ &Before[p Berakás\ e&lé[p +menutrans Put\ &After]p Berakás\ &mögé]p +menutrans &Deletex &Törlésx +menutrans &Select\ allggVG A&z\ összes kijelöléseggvG +menutrans &Find\.\.\. Ke&resés\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Keresés\ és\ c&sere\.\.\. +menutrans Find\ and\ Rep&lace:%s Keresés\ és\ c&sere:%s +menutrans Find\ and\ Rep&lace Keresés\ és\ c&sere +menutrans Find\ and\ Rep&lace:s Keresés\ és\ c&sere:s +menutrans Settings\ &Window &Ablak\ beállításai +menutrans &Global\ Settings Ál&talános\ beállítások +menutrans F&ile\ Settings &Fájl\ beállítások +menutrans C&olor\ Scheme &Színek +menutrans &Keymap Billent&yûzetkiosztás + +" Edit.Global Settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Minta\ kiemelés\ BE/KI:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! &Kis/nagybetû\ azonos/különbözõ:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! &Zárójelpár\ mutatása\ BE/KI:set\ sm! +menutrans &Context\ lines &Kurzor\ ablak\ szélétõl +menutrans &Virtual\ Edit &Virtuális\ szerkesztés +menutrans Never &Soha +menutrans Block\ Selection &Blokk\ kijelölésekor +menutrans Insert\ mode S&zöveg\ bevitelekor +menutrans Block\ and\ Insert Bl&okk\ kijelölésekor\ és\ szöveg\ bevitelekor +menutrans Always &Mindig +menutrans Toggle\ Insert\ &Mode:set\ im! &Szövegbeviteli\ mód\ BE/KI:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! &Vi\ kompatíbilis\ mód\ BE/Ki:set\ cp! +menutrans Search\ &Path\.\.\. Ke&resési\ útvonal\.\.\. +menutrans Ta&g\ Files\.\.\. &Tag\ fájl\.\.\. +menutrans Toggle\ &Toolbar &Eszköztár\ BE/KI +menutrans Toggle\ &Bottom\ Scrollbar &Vízszintes\ Görgetõsáv\ BE/KI +menutrans Toggle\ &Left\ Scrollbar &Bal\ görgetõsáv\ BE/KI +menutrans Toggle\ &Right\ Scrollbar &Jobb\ görgetõsáv\ BE/KI +menutrans None Nincs + +" Edit.File Settings +menutrans Toggle\ Line\ &Numbering:set\ nu! Sorszá&mozás\ BE/KI:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! &Lista\ mód\ BE/KI:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Sor&törés\ BE/KI:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Sortörés\ s&zóvégeknél\ BE/KI:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! &Tab\ kifejtés\ BE/KI:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! &Automatikus\ behúzás\ BE/KI:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! &C-behúzás\ BE/KI:set\ cin! +menutrans &Shiftwidth &Behúzás\ mértéke\ ('sw') +menutrans Soft\ &Tabstop T&abulálás\ mértéke\ ('sts') +menutrans Te&xt\ Width\.\.\. &Szöveg\ szélessége\.\.\. +menutrans &File\ Format\.\.\. &Fájlformátum\.\.\. + +" Tools menu +menutrans &Tools &Eszközök +menutrans &Jump\ to\ this\ tagg^] &Ugrás\ a\ taghozg^] +menutrans Jump\ &back^T Ugrás\ &vissza^T +menutrans Build\ &Tags\ File &Tag\ fájl\ készítése +menutrans &Folding &Behajtások +menutrans &Make:make &Fordítás:make +menutrans &List\ Errors:cl &Hibák\ listája:cl +menutrans L&ist\ Messages:cl! Ü&zenetek\ listája:cl! +menutrans &Next\ Error:cn &Következõ\ &hiba:cn +menutrans &Previous\ Error:cp &Elõzõ\ hiba:cp +menutrans &Older\ List:cold &Régebbi\ lista:cold +menutrans N&ewer\ List:cnew &Újabb\ lista:cnew +menutrans Error\ &Window Hibaablak +menutrans &Update:cwin &Frissítés:cwin +menutrans &Open:copen M&egnyitás:copen +menutrans &Close:cclose Be&zárás:cclose +menutrans &Convert\ to\ HEX:%!xxd Normál->HEX\ nézet:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r HEX->Normál\ nézet:%!xxd\ -r +menutrans &Set\ Compiler Fordító\ &megadása + +" Tools.Folding +menutrans &Enable/Disable\ foldszi Behajtások\ BE&/KIzi +menutrans &View\ Cursor\ Linezv &Aktuális\ sor\ látszikzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Csak\ aktuális\ sor\ látszikzMzx +menutrans C&lose\ more\ foldszm Következõ\ szint\ be&zárásazm +menutrans &Close\ all\ foldszM Összes\ hajtás\ &bezárásazM +menutrans O&pen\ more\ foldszr Következõ\ szint\ ki&nyitásazr +menutrans &Open\ all\ foldszR Összes\ hajtás\ &kinyitásazR +menutrans Fold\ Met&hod Behajtások\ &létrehozása +menutrans M&anual &Kézi +menutrans I&ndent Be&húzás +menutrans E&xpression Ki&fejezés +menutrans S&yntax &Szintaxis +menutrans &Diff &Diff-különbség +menutrans Ma&rker &Jelölés +menutrans Create\ &Foldzf Ú&j\ behajtászf +menutrans &Delete\ Foldzd Behajtás\ &törlésezd +menutrans Delete\ &All\ FoldszD Öss&zes\ behajtás\ törlésezD +menutrans Fold\ col&umn\ width Behajtások\ a\ &margón\ x\ oszlopban + +" Tools.Diff +menutrans &Update &Frissítés +menutrans &Get\ Block Block\ &BE +menutrans &Put\ Block Block\ &KI + + + +" Names for buffer menu. +menutrans &Buffers &Pufferok +menutrans &Refresh\ menu &Frissítés +menutrans Delete &Törlés +menutrans &Alternate &Csere +menutrans &Next &Következõ +menutrans &Previous &Elõzõ + +" Window menu +menutrans &Window &Ablak +menutrans &New^Wn Ú&j^Wn +menutrans S&plit^Ws &Felosztás^Ws +menutrans Sp&lit\ To\ #^W^^ Felosztás\ &#-val^W^^ +menutrans Split\ &Vertically^Wv Felosztás\ Fü&ggõlegesen^Wv +menutrans Split\ File\ E&xplorer Új\ &intézõ +menutrans &Close^Wc Be&zárás^Wc +menutrans Close\ &Other(s)^Wo &Többi\ bezárása^Wo +menutrans Ne&xt^Ww &Következõ^Ww +menutrans P&revious^WW &Elõzõ^WW +menutrans &Equal\ Size^W= &Azonos\ magasság^W= +menutrans &Max\ Height^W_ Ma&x\ magasság^W_ +menutrans M&in\ Height^W1_ &Min\ magasság^W1_ +menutrans Max\ &Width^W\| Max\ &szélesség^W\| +menutrans Min\ Widt&h^W1\| Mi&n\ szélesség^W1\| +menutrans Move\ &To &Elmozdítás +menutrans &Top^WK &Fel^WK +menutrans &Bottom^WJ &Le^WJ +menutrans &Left\ side^WH &Balra^WH +menutrans &Right\ side^WL &Jobbra^WL +menutrans Rotate\ &Up^WR Gördítés\ &felfelé^WR +menutrans Rotate\ &Down^Wr Gördítés\ &lefelé^Wr +menutrans Select\ Fo&nt\.\.\. &Betûtípus\.\.\. + +" The popup menu +menutrans &Undo &Visszavonás +menutrans Cu&t &Kivágás +menutrans &Copy &Másolás +menutrans &Paste &Beillesztés +menutrans &Delete &Törlés +menutrans Select\ Blockwise Kijelölés\ blo&kként +menutrans Select\ &Word S&zó\ kijelölése +menutrans Select\ &Line &Sor\ kijelölése +menutrans Select\ &Block B&lokk\ kijelölése +menutrans Select\ &All A&z\ összes\ kijelölése + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Megnyitás + tmenu ToolBar.Save Mentés + tmenu ToolBar.SaveAll Mindet menti + tmenu ToolBar.Print Nyomtatás + tmenu ToolBar.Undo Visszavonás + tmenu ToolBar.Redo Mégis + tmenu ToolBar.Cut Kivágás + tmenu ToolBar.Copy Másolás + tmenu ToolBar.Paste Beillesztés + tmenu ToolBar.Find Keresés + tmenu ToolBar.FindNext Tovább keresés + tmenu ToolBar.FindPrev Keresés visszafelé + tmenu ToolBar.Replace Keresés/csere + tmenu ToolBar.LoadSesn Munkamenet beolvasás + tmenu ToolBar.SaveSesn Munkamenet mentés + tmenu ToolBar.RunScript Vim program indítás + tmenu ToolBar.Make Projekt építés + tmenu ToolBar.Shell Shell indítás + tmenu ToolBar.RunCtags Tag építés + tmenu ToolBar.TagJump Ugrás a kurzor alatti tagra + tmenu ToolBar.Help Vim súgó + tmenu ToolBar.FindHelp Keresés a Vim súgóban + endfun +endif + +" Syntax menu +menutrans &Syntax Sz&intaxis +menutrans &Show\ filetypes\ in\ menu Fájl&típusok\ menü +menutrans Set\ '&syntax'\ only Csak\ '&syntax' +menutrans Set\ '&filetype'\ too '&filetype'\ is +menutrans &Off &Ki +menutrans &Manual Ké&zi +menutrans A&utomatic A&utomatikus +menutrans on/off\ for\ &This\ file &BE/KI\ ennél\ a\ fájlnál +menutrans Co&lor\ test &Színteszt +menutrans &Highlight\ test Kiemelés\ &teszt +menutrans &Convert\ to\ HTML &HTML\ oldal\ készítése + +" dialog texts +let menutrans_no_file = "[Nincs file]" +let menutrans_help_dialog = "Írd be a kívánt szót vagy parancsot:\n\n A szövegbeviteli parancsok elé írj i_-t (pl.: i_CTRL-X)\nA sorszerkeszõ parancsok elé c_-t (pl.: c_)\nA változókat a ' jellel vedd körül (pl.: 'shiftwidth')" +let g:menutrans_path_dialog = "Írd be a keresett fájl lehetséges elérési útjait, vesszõvel elválasztva" +let g:menutrans_tags_dialog = "Írd be a tag fájl lehetséges elérési útjait, vesszõvel elválasztva" +let g:menutrans_textwidth_dialog = "Írd be a szöveg szélességét (0 = formázás kikapcsolva)" +let g:menutrans_fileformat_dialog = "Válaszd ki a fájl formátumát" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_hu_hu.utf-8.vim b/share/vim/vim74/lang/menu_hu_hu.utf-8.vim new file mode 100644 index 00000000..f3adf918 --- /dev/null +++ b/share/vim/vim74/lang/menu_hu_hu.utf-8.vim @@ -0,0 +1,247 @@ +" Menu Translations: Hungarian (Magyar) +" Original Translation: Zoltán Árpádffy +" Maintained By: Kontra Gergely +" Last Change: 2012 May 01 +" +" This file was converted from menu_hu_hu.iso_8859-2.vim. See there for +" remarks. + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +" Help menu +menutrans &Help &Súgó +menutrans &Overview Á&ttekintés +menutrans &How-to\ links &HOGYAN\ linkek +menutrans &User\ Manual &Kézikönyv +menutrans &Credits &Szerzők,\ köszönetek +menutrans Co&pying &Védjegy +menutrans O&rphans Árvá&k +menutrans &Find\.\.\. Ke&resés\.\.\. +menutrans &Version &Verzió +menutrans &About &Névjegy +" File menu +menutrans &File &Fájl +menutrans &Open\.\.\.:e Meg&nyitás\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Megnyitás\ új\ a&blakba\.\.\.:sp +menutrans &New:enew Új\ dok&umentum:enew +menutrans &Close:close Be&zárás:close +menutrans &Save:w &Mentés:w +menutrans Split\ &Diff\ with\.\.\. Össze&hasonlítás\.\.\. +menutrans Split\ Patched\ &By\.\.\. Összehasonlítás\ &patch\ -el\.\.\. +menutrans Save\ &As\.\.\.:sav Menté&s\ másként\.\.\.:w +menutrans &Print Nyomt&atás +menutrans Sa&ve-Exit:wqa Mentés\ és\ k&ilépés:wqa +menutrans E&xit:qa &Kilépés:qa + +" Edit menu +menutrans &Edit S&zerkesztés +menutrans &Undou &Visszavonásu +menutrans &Redo^R Mé&gis^R +menutrans Rep&eat\. &Ismét\. +menutrans Cu&t"+x &Kivágás"+x +menutrans &Copy"+y &Másolás"+y +menutrans &Paste"+gP &Beillesztés"+gP +menutrans Put\ &Before[p Berakás\ e&lé[p +menutrans Put\ &After]p Berakás\ &mögé]p +menutrans &Deletex &Törlésx +menutrans &Select\ allggVG A&z\ összes kijelöléseggvG +menutrans &Find\.\.\. Ke&resés\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Keresés\ és\ c&sere\.\.\. +menutrans Find\ and\ Rep&lace:%s Keresés\ és\ c&sere:%s +menutrans Find\ and\ Rep&lace Keresés\ és\ c&sere +menutrans Find\ and\ Rep&lace:s Keresés\ és\ c&sere:s +menutrans Settings\ &Window &Ablak\ beállításai +menutrans &Global\ Settings Ál&talános\ beállítások +menutrans F&ile\ Settings &Fájl\ beállítások +menutrans C&olor\ Scheme &Színek +menutrans &Keymap Billent&yűzetkiosztás + +" Edit.Global Settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Minta\ kiemelés\ BE/KI:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! &Kis/nagybetű\ azonos/különböző:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! &Zárójelpár\ mutatása\ BE/KI:set\ sm! +menutrans &Context\ lines &Kurzor\ ablak\ szélétől +menutrans &Virtual\ Edit &Virtuális\ szerkesztés +menutrans Never &Soha +menutrans Block\ Selection &Blokk\ kijelölésekor +menutrans Insert\ mode S&zöveg\ bevitelekor +menutrans Block\ and\ Insert Bl&okk\ kijelölésekor\ és\ szöveg\ bevitelekor +menutrans Always &Mindig +menutrans Toggle\ Insert\ &Mode:set\ im! &Szövegbeviteli\ mód\ BE/KI:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! &Vi\ kompatíbilis\ mód\ BE/Ki:set\ cp! +menutrans Search\ &Path\.\.\. Ke&resési\ útvonal\.\.\. +menutrans Ta&g\ Files\.\.\. &Tag\ fájl\.\.\. +menutrans Toggle\ &Toolbar &Eszköztár\ BE/KI +menutrans Toggle\ &Bottom\ Scrollbar &Vízszintes\ Görgetősáv\ BE/KI +menutrans Toggle\ &Left\ Scrollbar &Bal\ görgetősáv\ BE/KI +menutrans Toggle\ &Right\ Scrollbar &Jobb\ görgetősáv\ BE/KI +menutrans None Nincs + +" Edit.File Settings +menutrans Toggle\ Line\ &Numbering:set\ nu! Sorszá&mozás\ BE/KI:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! &Lista\ mód\ BE/KI:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Sor&törés\ BE/KI:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Sortörés\ s&zóvégeknél\ BE/KI:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! &Tab\ kifejtés\ BE/KI:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! &Automatikus\ behúzás\ BE/KI:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! &C-behúzás\ BE/KI:set\ cin! +menutrans &Shiftwidth &Behúzás\ mértéke\ ('sw') +menutrans Soft\ &Tabstop T&abulálás\ mértéke\ ('sts') +menutrans Te&xt\ Width\.\.\. &Szöveg\ szélessége\.\.\. +menutrans &File\ Format\.\.\. &Fájlformátum\.\.\. + +" Tools menu +menutrans &Tools &Eszközök +menutrans &Jump\ to\ this\ tagg^] &Ugrás\ a\ taghozg^] +menutrans Jump\ &back^T Ugrás\ &vissza^T +menutrans Build\ &Tags\ File &Tag\ fájl\ készítése +menutrans &Folding &Behajtások +menutrans &Make:make &Fordítás:make +menutrans &List\ Errors:cl &Hibák\ listája:cl +menutrans L&ist\ Messages:cl! Ü&zenetek\ listája:cl! +menutrans &Next\ Error:cn &Következő\ &hiba:cn +menutrans &Previous\ Error:cp &Előző\ hiba:cp +menutrans &Older\ List:cold &Régebbi\ lista:cold +menutrans N&ewer\ List:cnew &Újabb\ lista:cnew +menutrans Error\ &Window Hibaablak +menutrans &Update:cwin &Frissítés:cwin +menutrans &Open:copen M&egnyitás:copen +menutrans &Close:cclose Be&zárás:cclose +menutrans &Convert\ to\ HEX:%!xxd Normál->HEX\ nézet:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r HEX->Normál\ nézet:%!xxd\ -r +menutrans &Set\ Compiler Fordító\ &megadása + +" Tools.Folding +menutrans &Enable/Disable\ foldszi Behajtások\ BE&/KIzi +menutrans &View\ Cursor\ Linezv &Aktuális\ sor\ látszikzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Csak\ aktuális\ sor\ látszikzMzx +menutrans C&lose\ more\ foldszm Következő\ szint\ be&zárásazm +menutrans &Close\ all\ foldszM Összes\ hajtás\ &bezárásazM +menutrans O&pen\ more\ foldszr Következő\ szint\ ki&nyitásazr +menutrans &Open\ all\ foldszR Összes\ hajtás\ &kinyitásazR +menutrans Fold\ Met&hod Behajtások\ &létrehozása +menutrans M&anual &Kézi +menutrans I&ndent Be&húzás +menutrans E&xpression Ki&fejezés +menutrans S&yntax &Szintaxis +menutrans &Diff &Diff-különbség +menutrans Ma&rker &Jelölés +menutrans Create\ &Foldzf Ú&j\ behajtászf +menutrans &Delete\ Foldzd Behajtás\ &törlésezd +menutrans Delete\ &All\ FoldszD Öss&zes\ behajtás\ törlésezD +menutrans Fold\ col&umn\ width Behajtások\ a\ &margón\ x\ oszlopban + +" Tools.Diff +menutrans &Update &Frissítés +menutrans &Get\ Block Block\ &BE +menutrans &Put\ Block Block\ &KI + + + +" Names for buffer menu. +menutrans &Buffers &Pufferok +menutrans &Refresh\ menu &Frissítés +menutrans Delete &Törlés +menutrans &Alternate &Csere +menutrans &Next &Következő +menutrans &Previous &Előző + +" Window menu +menutrans &Window &Ablak +menutrans &New^Wn Ú&j^Wn +menutrans S&plit^Ws &Felosztás^Ws +menutrans Sp&lit\ To\ #^W^^ Felosztás\ &#-val^W^^ +menutrans Split\ &Vertically^Wv Felosztás\ Fü&ggőlegesen^Wv +menutrans Split\ File\ E&xplorer Új\ &intéző +menutrans &Close^Wc Be&zárás^Wc +menutrans Close\ &Other(s)^Wo &Többi\ bezárása^Wo +menutrans Ne&xt^Ww &Következő^Ww +menutrans P&revious^WW &Előző^WW +menutrans &Equal\ Size^W= &Azonos\ magasság^W= +menutrans &Max\ Height^W_ Ma&x\ magasság^W_ +menutrans M&in\ Height^W1_ &Min\ magasság^W1_ +menutrans Max\ &Width^W\| Max\ &szélesség^W\| +menutrans Min\ Widt&h^W1\| Mi&n\ szélesség^W1\| +menutrans Move\ &To &Elmozdítás +menutrans &Top^WK &Fel^WK +menutrans &Bottom^WJ &Le^WJ +menutrans &Left\ side^WH &Balra^WH +menutrans &Right\ side^WL &Jobbra^WL +menutrans Rotate\ &Up^WR Gördítés\ &felfelé^WR +menutrans Rotate\ &Down^Wr Gördítés\ &lefelé^Wr +menutrans Select\ Fo&nt\.\.\. &Betűtípus\.\.\. + +" The popup menu +menutrans &Undo &Visszavonás +menutrans Cu&t &Kivágás +menutrans &Copy &Másolás +menutrans &Paste &Beillesztés +menutrans &Delete &Törlés +menutrans Select\ Blockwise Kijelölés\ blo&kként +menutrans Select\ &Word S&zó\ kijelölése +menutrans Select\ &Line &Sor\ kijelölése +menutrans Select\ &Block B&lokk\ kijelölése +menutrans Select\ &All A&z\ összes\ kijelölése + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Megnyitás + tmenu ToolBar.Save Mentés + tmenu ToolBar.SaveAll Mindet menti + tmenu ToolBar.Print Nyomtatás + tmenu ToolBar.Undo Visszavonás + tmenu ToolBar.Redo Mégis + tmenu ToolBar.Cut Kivágás + tmenu ToolBar.Copy Másolás + tmenu ToolBar.Paste Beillesztés + tmenu ToolBar.Find Keresés + tmenu ToolBar.FindNext Tovább keresés + tmenu ToolBar.FindPrev Keresés visszafelé + tmenu ToolBar.Replace Keresés/csere + tmenu ToolBar.LoadSesn Munkamenet beolvasás + tmenu ToolBar.SaveSesn Munkamenet mentés + tmenu ToolBar.RunScript Vim program indítás + tmenu ToolBar.Make Projekt építés + tmenu ToolBar.Shell Shell indítás + tmenu ToolBar.RunCtags Tag építés + tmenu ToolBar.TagJump Ugrás a kurzor alatti tagra + tmenu ToolBar.Help Vim súgó + tmenu ToolBar.FindHelp Keresés a Vim súgóban + endfun +endif + +" Syntax menu +menutrans &Syntax Sz&intaxis +menutrans &Show\ filetypes\ in\ menu Fájl&típusok\ menü +menutrans Set\ '&syntax'\ only Csak\ '&syntax' +menutrans Set\ '&filetype'\ too '&filetype'\ is +menutrans &Off &Ki +menutrans &Manual Ké&zi +menutrans A&utomatic A&utomatikus +menutrans on/off\ for\ &This\ file &BE/KI\ ennél\ a\ fájlnál +menutrans Co&lor\ test &Színteszt +menutrans &Highlight\ test Kiemelés\ &teszt +menutrans &Convert\ to\ HTML &HTML\ oldal\ készítése + +" dialog texts +let menutrans_no_file = "[Nincs file]" +let menutrans_help_dialog = "Írd be a kívánt szót vagy parancsot:\n\n A szövegbeviteli parancsok elé írj i_-t (pl.: i_CTRL-X)\nA sorszerkesző parancsok elé c_-t (pl.: c_)\nA változókat a ' jellel vedd körül (pl.: 'shiftwidth')" +let g:menutrans_path_dialog = "Írd be a keresett fájl lehetséges elérési útjait, vesszővel elválasztva" +let g:menutrans_tags_dialog = "Írd be a tag fájl lehetséges elérési útjait, vesszővel elválasztva" +let g:menutrans_textwidth_dialog = "Írd be a szöveg szélességét (0 = formázás kikapcsolva)" +let g:menutrans_fileformat_dialog = "Válaszd ki a fájl formátumát" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_it.latin1.vim b/share/vim/vim74/lang/menu_it.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_it.latin1.vim rename to share/vim/vim74/lang/menu_it.latin1.vim diff --git a/share/vim/vim73/lang/menu_it.utf-8.vim b/share/vim/vim74/lang/menu_it.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_it.utf-8.vim rename to share/vim/vim74/lang/menu_it.utf-8.vim diff --git a/share/vim/vim74/lang/menu_it_it.latin1.vim b/share/vim/vim74/lang/menu_it_it.latin1.vim new file mode 100644 index 00000000..092136bf --- /dev/null +++ b/share/vim/vim74/lang/menu_it_it.latin1.vim @@ -0,0 +1,356 @@ +" Menu Translations: Italian / Italiano +" Maintainer: Antonio Colombo +" Vlad Sandrini +" Luciano Montanaro +" Last Change: 2012 May 01 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding iso-8859-1 + +" Help / Aiuto +menut &Help &Aiuto +menut &Overview &Panoramica +menut &User\ Manual Manuale\ &Utente +menut &How-to\ links Co&Me\.\.\. +"menut &GUI &GUI +menut &Credits Cr&Editi +menut Co&pying C&Opie +menut &Sponsor/Register &Sponsor/registrazione +menut O&rphans O&Rfani +"menut &Find\.\.\. &Cerca\.\.\. +"NOTA: fa conflitto con 'cerca' nel menu 'modifica' +menut &Version &Versione +menut &About &Intro + +let g:menutrans_help_dialog = "Batti un comando o una parola per cercare aiuto:\n\nPremetti i_ per comandi in modo Input (ad.es.: i_CTRL-X)\nPremetti c_ per comandi che editano la linea-comandi (ad.es.: c_)\nPremetti ' per un nome di opzione (ad.es.: 'shiftwidth')" + +" File menu +"menut &File &File +" +menut &Open\.\.\.:e &Apri\.\.\.:e +menut Sp&lit-Open\.\.\.:sp A&Pri\ nuova\ finestra\.\.\.:sp +menut Open\ Tab\.\.\.:tabnew Apri\ nuova\ &Linguetta\.\.\.:tabnew +menut &New:enew &Nuovo:enew +menut &Close:close &Chiudi:close +menut &Save:w &Salva:w +menut Save\ &As\.\.\.:sav Salva\ &Con\ nome\.\.\.:sav + +if has("diff") + menut Split\ &Diff\ with\.\.\. Finestra\ &Differenza\ con\.\.\. + menut Split\ Patched\ &By\.\.\. Finestra\ patc&H\ da\.\.\. +endif + +menut &Print S&tampa +menut Sa&ve-Exit:wqa Sa&Lva\ ed\ esci:wqa +menut E&xit:qa &Esci:qa + +" Edit / Modifica + +menut &Edit &Modifica +menut &Undou &Annullau +menut &Redo^R &Ripristina^R +menut Rep&eat\. Ri&Peti\. +menut Cu&t"+x &Taglia"+x +menut &Copy"+y &Copia"+y +menut &Paste"+gP &Incolla"+gP +menut Put\ &Before[p &Metti\ davanti[p +menut Put\ &After]p M&Etti\ dietro]p +menut &Deletex Cance&Llax +menut &Select\ allggVG Seleziona\ &TuttoggVG +menut &Select\ AllggVG Seleziona\ &TuttoggVG +menut &Find\.\.\. &Cerca\.\.\. +menut Find\ and\ Rep&lace\.\.\. &Sostituisci\.\.\. +menut Settings\ &Window &Finestra\ impostazioni +menut Startup\ &Settings Impostazioni\ di\ &Avvio +menut &Global\ Settings Impostazioni\ &Globali +menut Question Domanda + +" Edit / Modifica Impostazioni Globali +menut &Global\ Settings Impostazioni\ &Globali +menut Toggle\ Pattern\ &Highlight:set\ hls! &Evidenzia\ ricerche\ Sì/No:set\ hls! +menut Toggle\ &Ignore-case:set\ ic! &Ignora\ maiusc\.-minusc\.\ Sì/No:set\ ic! +menut Toggle\ &Showmatch:set\ sm! Indica\ &Corrispondente\ Sì/No:set\ sm! + +menut &Context\ lines &Linee\ di\ contesto +menut &Virtual\ Edit &Edit\ virtuale + +menut Never Mai +menut Block\ Selection Selezione\ blocco +menut Insert\ mode Modo\ insert +menut Block\ and\ Insert Selezione\ blocco+inserimento +menut Always Sempre + +menut Toggle\ Insert\ &Mode:set\ im! &Modo\ insert\ Sì/No:set\ im! +menut Toggle\ Vi\ C&ompatible:set\ cp! C&Ompatibile\ VI\ Sì/No:set\ cp! +menut Search\ &Path\.\.\. &Percorso\ di\ ricerca\.\.\. +menut Ta&g\ Files\.\.\. File\ ta&G\.\.\. +" +" Opzioni GUI +menut Toggle\ &Toolbar Barra\ s&Trumenti\ Sì/No +menut Toggle\ &Bottom\ Scrollbar Barra\ scorrimento\ in\ &Fondo\ Sì/No +menut Toggle\ &Left\ Scrollbar Barra\ scorrimento\ a\ &Sinistra\ Sì/No +menut Toggle\ &Right\ Scrollbar Barra\ scorrimento\ a\ &Destra\ Sì/No + +let g:menutrans_path_dialog = "Batti percorso di ricerca per i file.\nSepara fra loro i nomi di directory con una virgola." +let g:menutrans_tags_dialog = "Batti nome dei file di tag.\nSepara fra loro i nomi di directory con una virgola." + +" Edit / Impostazioni File +menut F&ile\ Settings &Impostazioni\ file + +" Boolean options +menut Toggle\ Line\ &Numbering:set\ nu! &Numerazione\ \ Sì/No:set\ nu! +menut Toggle\ relati&ve\ Line\ Numbering:set\ rnu! Numerazione\ relati&Va\ Sì/No:set\ rnu! +menut Toggle\ &List\ Mode:set\ list! Modo\ &List\ Sì/No:set\ list! +menut Toggle\ Line\ &Wrap:set\ wrap! Linee\ &Continuate\ Sì/No:set\ wrap! +menut Toggle\ W&rap\ at\ word:set\ lbr! A\ capo\ alla\ &Parola\ Sì/No:set\ lbr! +menut Toggle\ &expand-tab:set\ et! &Espandi\ tabulazione\ Sì/No:set\ et! +menut Toggle\ &auto-indent:set\ ai! Indentazione\ &Automatica\ Sì/No:set ai! +menut Toggle\ &C-indenting:set\ cin! Indentazione\ stile\ &C\ Sì/No:set cin! + +" altre opzioni +menut &Shiftwidth &Spazi\ rientranza +menut Soft\ &Tabstop &Tabulazione\ software +menut Te&xt\ Width\.\.\. Lunghe&Zza\ riga\.\.\. +menut &File\ Format\.\.\. Formato\ &File\.\.\. + +let g:menutrans_textwidth_dialog = "Batti nuova lunghezza linea (0 per inibire la formattazione): " + +let g:menutrans_fileformat_dialog = "Scegli formato con cui scrivere il file" + +menut C&olor\ Scheme Schema\ c&Olori + +menut default normale +menut DEFAULT NORMALE +menut evening notturno +menut EVENING NOTTURNO +menut morning diurno +menut MORNING DIURNO +menut shine brillante +menut SHINE BRILLANTE +menut peachpuff pesca +menut PEACHPUF PESCA + +menut &Keymap &Mappa\ tastiera + +menut None nessuna +menut accents accenti +menut ACCENTS ACCENTI +menut hebrew ebraico +menut HEBREW EBRAICO +menut hebrew_iso-8859-8 ebraico_iso-8859-8 +menut hebrew_cp1255 ebraico_cp1255 +menut hebrew_utf-8 ebraico_utf-8 +menut hebrewp_iso-8859-8 ebraico_p_iso-8859-8 +menut HEBREW- EBRAICO+ +menut hebrewp EBRAICOP +menut HEBREWP EBRAICOP +menut russian-jcuken cirillico-jcuken +menut russian-jcukenwin cirillico-jcuken-win +menut RUSSIAN CIRILLICO +menut RUSSIAN- CIRILLICO- + +menut Select\ Fo&nt\.\.\. Scegli\ &Font\.\.\. + +" Menu strumenti programmazione +menut &Tools &Strumenti + +menut &Jump\ to\ this\ tagg^] &Vai\ a\ questa\ tagg^] +menut Jump\ &back^T Torna\ &Indietro^T +menut Build\ &Tags\ File Costruisci\ file\ &Tags\ + +" Menu ortografia / Spelling +menut &Spelling &Ortografia + +menut &Spell\ Check\ On Attiva\ &Controllo\ ortografico +menut Spell\ Check\ &Off &Disattiva\ controllo\ ortografico +menut To\ &Next\ error]s Errore\ &Seguente]s +menut To\ &Previous\ error[s Errore\ &Precedente[s +menut Suggest\ &Correctionsz= &Suggerimentiz= +menut &Repeat\ correction:spellrepall &Ripeti\ correzione:spellrepall +menut Set\ language\ to\ "en" Imposta\ lingua\ a\ "en" +menut Set\ language\ to\ "en_au" Imposta\ lingua\ a\ "en_au" +menut Set\ language\ to\ "en_ca" Imposta\ lingua\ a\ "en_ca" +menut Set\ language\ to\ "en_gb" Imposta\ lingua\ a\ "en_gb" +menut Set\ language\ to\ "en_nz" Imposta\ lingua\ a\ "en_nz" +menut Set\ language\ to\ "en_us" Imposta\ lingua\ a\ "en_us" +menut Set\ language\ to\ "it" Imposta\ lingua\ a\ "it" +menut Set\ language\ to\ "it_it" Imposta\ lingua\ a\ "it_it" +menut Set\ language\ to\ "it_ch" Imposta\ lingua\ a\ "it_ch" +menut &Find\ More\ Languages &Trova\ altre\ lingue + +" Menu piegature / Fold +if has("folding") + menut &Folding &Piegature + " apri e chiudi piegature + menut &Enable/Disable\ foldszi Pi&egature\ Sì/Nozi + menut &View\ Cursor\ Linezv &Vedi\ linea\ col\ Cursorezv + menut Vie&w\ Cursor\ Line\ onlyzMzx Vedi\ &Solo\ linea\ col\ CursorezMzx + menut C&lose\ more\ foldszm C&Hiudi\ più\ piegaturezm + menut &Close\ all\ foldszM &Chiudi\ tutte\ le\ piegaturezM + menut O&pen\ more\ foldszr A&Pri\ più\ piegaturezr + menut &Open\ all\ foldszR &Apri\ tutte\ le\ piegaturezR + " metodo piegatura + menut Fold\ Met&hod Meto&Do\ piegatura + menut M&anual &Manuale + menut I&ndent &Nidificazione + menut E&xpression &Espressione\ Reg\. + menut S&yntax &Sintassi + menut &Diff &Differenza + menut Ma&rker Mar&Catura + " crea e cancella piegature + menut Create\ &Foldzf Crea\ &Piegaturazf + menut &Delete\ Foldzd &Leva\ piegaturazd + menut Delete\ &All\ FoldszD Leva\ &Tutte\ le\ piegaturezD + " movimenti all'interno delle piegature + menut Fold\ col&umn\ width Larghezza\ piegat&Ure\ in\ colonne +endif " has folding + +if has("diff") + menut &Diff &Differenza + " + menut &Update &Aggiorna + menut &Get\ Block &Importa\ differenze + menut &Put\ Block &Esporta\ differenze +endif " has diff + +menut &Make:make Esegui\ &Make:make + +menut &List\ Errors:cl Lista\ &Errori:cl +menut L&ist\ Messages:cl! Lista\ &Messaggi:cl! +menut &Next\ Error:cn Errore\ s&Uccessivo:cn +menut &Previous\ Error:cp Errore\ &Precedente:cp +menut &Older\ List:cold Lista\ men&O\ recente:cold +menut N&ewer\ List:cnew Lista\ più\ rece&Nte:cnew + +menut Error\ &Window &Finestra\ errori + +menut &Update:cwin A&Ggiorna:cwin +menut &Open:copen &Apri:copen +menut &Close:cclose &Chiudi:cclose + +menut &Convert\ to\ HEX:%!xxd &Converti\ a\ esadecimale:%!xxd +menut Conve&rt\ back:%!xxd\ -r Conve&rti\ da\ esadecimale:%!xxd\ -r + +menut Se&T\ Compiler Impo&Sta\ Compilatore + +" Buffers / Buffer +menut &Buffers &Buffer + +menut &Refresh\ menu A&ggiorna\ menu +menut &Delete &Elimina +menut &Alternate &Alternato +menut &Next &Successivo +menut &Previous &Precedente +menut [No\ File] [Nessun\ File] +" Syntax / Sintassi +menut &Syntax &Sintassi +menut &Show\ filetypes\ in\ menu Mo&Stra\ tipi\ di\ file\ nel\ menu +menut Set\ '&syntax'\ only &S\ Attiva\ solo\ \ 'syntax' +menut Set\ '&filetype'\ too &F\ Attiva\ anche\ 'filetype' +menut &Off &Disattiva +menut &Manual &Manuale +menut A&utomatic A&Utomatico +menut on/off\ for\ &This\ file Attiva\ Sì/No\ su\ ques&To\ file +menut Co&lor\ test Test\ &Colori +menut &Highlight\ test Test\ &Evidenziamento +menut &Convert\ to\ HTML Converti\ ad\ &HTML + +let g:menutrans_no_file = "[Senza nome]" + +" Window / Finestra +menut &Window &Finestra + +menut &New^Wn &Nuova^Wn +menut S&plit^Ws &Dividi\ lo\ schermo^Ws +menut Sp&lit\ To\ #^W^^ D&Ividi\ verso\ #^W^^ +menut Split\ &Vertically^Wv Di&Vidi\ verticalmente^Wv +menut Split\ File\ E&xplorer Aggiungi\ finestra\ e&Xplorer + +menut &Close^Wc &Chiudi^Wc +menut Close\ &Other(s)^Wo C&Hiudi\ altra(e)^Wo + +menut Move\ &To &Muovi\ verso + +menut &Top^WK &Cima^WK +menut &Bottom^WJ &Fondo^WJ +menut &Left\ side^WH Lato\ &Sinistro^WH +menut &Right\ side^WL Lato\ &Destro^WL +menut Rotate\ &Up^WR Ruota\ verso\ l'&Alto^WR +menut Rotate\ &Down^Wr Ruota\ verso\ il\ &Basso^Wr + +menut &Equal\ Size^W= &Uguale\ ampiezza^W= +menut &Max\ Height^W_ &Altezza\ massima^W_ +menut M&in\ Height^W1_ A&Ltezza\ minima^W1_ +menut Max\ &Width^W\| Larghezza\ massima^W\| +menut Min\ Widt&h^W1\| Larghezza\ minima^W1\| + +" The popup menu +menut &Undo &Annulla +menut Cu&t &Taglia +menut &Copy &Copia +menut &Paste &Incolla +menut &Delete &Elimina + +menut Select\ Blockwise Seleziona\ in\ blocco +menut Select\ &Word Seleziona\ &Parola +menut Select\ &Line Seleziona\ &Linea +menut Select\ &Block Seleziona\ &Blocco +menut Select\ &All Seleziona\ t&Utto + +" The GUI Toolbar / Barra Strumenti +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Apri + tmenu ToolBar.Save Salva + tmenu ToolBar.SaveAll Salva Tutto + tmenu ToolBar.Print Stampa + tmenu ToolBar.Undo Annulla + tmenu ToolBar.Redo Ripristina + tmenu ToolBar.Cut Taglia + tmenu ToolBar.Copy Copia + tmenu ToolBar.Paste Incolla + + if !has("gui_athena") + tmenu ToolBar.Find Cerca + tmenu ToolBar.FindNext Cerca Successivo + tmenu ToolBar.FindPrev Cerca Precedente + tmenu ToolBar.Replace Sostituisci + endif + +if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nuova finestra + tmenu ToolBar.WinSplit Dividi finestra + tmenu ToolBar.WinMax Massima ampiezza + tmenu ToolBar.WinMin Minima ampiezza + tmenu ToolBar.WinVSplit Dividi verticalmente + tmenu ToolBar.WinMaxWidth Massima larghezza + tmenu ToolBar.WinMinWidth Minima larghezza + tmenu ToolBar.WinClose Chiudi finestra +endif + + tmenu ToolBar.LoadSesn Carica Sessione + tmenu ToolBar.SaveSesn Salva Sessione + tmenu ToolBar.RunScript Esegui Script + tmenu ToolBar.Make Make + tmenu ToolBar.Shell Shell + tmenu ToolBar.RunCtags Esegui Ctags + tmenu ToolBar.TagJump Vai a Tag + tmenu ToolBar.Help Aiuto + tmenu ToolBar.FindHelp Cerca in Aiuto + endfun +endif + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim: set sw=2 : diff --git a/share/vim/vim73/lang/menu_it_it.utf-8.vim b/share/vim/vim74/lang/menu_it_it.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_it_it.utf-8.vim rename to share/vim/vim74/lang/menu_it_it.utf-8.vim diff --git a/share/vim/vim73/lang/menu_italian_italy.1252.vim b/share/vim/vim74/lang/menu_italian_italy.1252.vim similarity index 100% rename from share/vim/vim73/lang/menu_italian_italy.1252.vim rename to share/vim/vim74/lang/menu_italian_italy.1252.vim diff --git a/share/vim/vim74/lang/menu_ja.cp932.vim b/share/vim/vim74/lang/menu_ja.cp932.vim new file mode 100644 index 00000000..50856d5b --- /dev/null +++ b/share/vim/vim74/lang/menu_ja.cp932.vim @@ -0,0 +1,8 @@ +" Menu Translations: Japanese (for Windows) +" Translated By: MURAOKA Taro +" Last Change: 15-Jun-2012. +" +" Copyright (C) 2004,12 MURAOKA Taro +" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. + +source :p:h/menu_japanese_japan.932.vim diff --git a/share/vim/vim74/lang/menu_ja.euc-jp.vim b/share/vim/vim74/lang/menu_ja.euc-jp.vim new file mode 100644 index 00000000..0eff4d99 --- /dev/null +++ b/share/vim/vim74/lang/menu_ja.euc-jp.vim @@ -0,0 +1,9 @@ +" Menu Translations: Japanese (for UNIX) +" Translated By: MURAOKA Taro +" Last Change: 15-Jun-2012. +" +" Copyright (C) 2004,12 MURAOKA Taro +" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. + +" eucjp is the same as euc-jp. Source the other one from here. +source :p:h/menu_ja_jp.euc-jp.vim diff --git a/share/vim/vim74/lang/menu_ja.eucjp.vim b/share/vim/vim74/lang/menu_ja.eucjp.vim new file mode 100644 index 00000000..0eff4d99 --- /dev/null +++ b/share/vim/vim74/lang/menu_ja.eucjp.vim @@ -0,0 +1,9 @@ +" Menu Translations: Japanese (for UNIX) +" Translated By: MURAOKA Taro +" Last Change: 15-Jun-2012. +" +" Copyright (C) 2004,12 MURAOKA Taro +" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. + +" eucjp is the same as euc-jp. Source the other one from here. +source :p:h/menu_ja_jp.euc-jp.vim diff --git a/share/vim/vim74/lang/menu_ja.ujis.vim b/share/vim/vim74/lang/menu_ja.ujis.vim new file mode 100644 index 00000000..e74ff806 --- /dev/null +++ b/share/vim/vim74/lang/menu_ja.ujis.vim @@ -0,0 +1,9 @@ +" Menu Translations: Japanese (for UNIX) +" Translated By: MURAOKA Taro +" Last Change: 15-Jun-2012. +" +" Copyright (C) 2004,12 MURAOKA Taro +" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. + +" ujis is the same as euc-jp. Source the other one from here. +source :p:h/menu_ja_jp.euc-jp.vim diff --git a/share/vim/vim73/lang/menu_ja.utf-8.vim b/share/vim/vim74/lang/menu_ja.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_ja.utf-8.vim rename to share/vim/vim74/lang/menu_ja.utf-8.vim diff --git a/share/vim/vim74/lang/menu_ja_jp.cp932.vim b/share/vim/vim74/lang/menu_ja_jp.cp932.vim new file mode 100644 index 00000000..50856d5b --- /dev/null +++ b/share/vim/vim74/lang/menu_ja_jp.cp932.vim @@ -0,0 +1,8 @@ +" Menu Translations: Japanese (for Windows) +" Translated By: MURAOKA Taro +" Last Change: 15-Jun-2012. +" +" Copyright (C) 2004,12 MURAOKA Taro +" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. + +source :p:h/menu_japanese_japan.932.vim diff --git a/share/vim/vim74/lang/menu_ja_jp.euc-jp.vim b/share/vim/vim74/lang/menu_ja_jp.euc-jp.vim new file mode 100644 index 00000000..ba622a6a --- /dev/null +++ b/share/vim/vim74/lang/menu_ja_jp.euc-jp.vim @@ -0,0 +1,306 @@ +" vi:set ts=8 sts=8 sw=8 tw=0: +" +" Menu Translations: Japanese (EUC-JP) +" Translated By: MURAOKA Taro +" Last Change: 12-May-2013. +" +" Copyright (C) 2001-13 MURAOKA Taro +" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding euc-jp + +" Help menu +menutrans &Help ¥Ø¥ë¥×(&H) +menutrans &Overview ³µÎ¬(&O) +menutrans &User\ Manual ¥æ¡¼¥¶¥Þ¥Ë¥å¥¢¥ë(&U) +menutrans &How-to\ links &How-to¥ê¥ó¥¯ +menutrans &Credits ¥¯¥ì¥¸¥Ã¥È(&C) +menutrans Co&pying Ãøºî¸¢¾ðÊó(&P) +menutrans &Sponsor/Register ¥¹¥Ý¥ó¥µ¡¼/ÅÐÏ¿(&S) +menutrans O&rphans ¸É»ù(&R) +menutrans &Version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó(&V) +menutrans &About Vim¤Ë¤Ä¤¤¤Æ(&A) + +let g:menutrans_help_dialog = "¥Ø¥ë¥×¤ò¸¡º÷¤·¤¿¤¤¥³¥Þ¥ó¥É¤â¤·¤¯¤Ïñ¸ì¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:\n\nÁÞÆþ¥â¡¼¥É¤Î¥³¥Þ¥ó¥É¤Ë¤Ï i_ ¤òÀèƬ¤ËÉղä·¤Þ¤¹. (Îã: i_CTRL-X)\n¥³¥Þ¥ó¥É¥é¥¤¥óÊÔ½¸¥³¥Þ¥ó¥É¤Ë¤Ï c_ ¤òÀèƬ¤ËÉղä·¤Þ¤¹. (Îã: c_)\n¥ª¥×¥·¥ç¥ó¤Î̾Á°¤Ë¤Ï ' ¤òÉղä·¤Þ¤¹. (Îã: 'shiftwidth')" + +" File menu +menutrans &File ¥Õ¥¡¥¤¥ë(&F) +menutrans &Open\.\.\.:e ³«¤¯(&O)\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp ʬ³ä¤·¤Æ³«¤¯(&L)\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew ¥¿¥Ö¥Ú¡¼¥¸¤Ç³«¤¯:tabnew +menutrans &New:enew ¿·µ¬ºîÀ®(&N):enew +menutrans &Close:close ÊĤ¸¤ë(&C):close +menutrans &Save:w Êݸ(&S):w +menutrans Save\ &As\.\.\.:sav ̾Á°¤òÉÕ¤±¤ÆÊݸ(&A)\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. º¹Ê¬É½¼¨(&D)\.\.\. +menutrans Split\ Patched\ &By\.\.\. ¥Ñ¥Ã¥Á·ë²Ì¤òɽ¼¨(&B)\.\.\. +menutrans &Print °õºþ(&P) +menutrans Sa&ve-Exit:wqa Êݸ¤·¤Æ½ªÎ»(&V):wqa +menutrans E&xit:qa ½ªÎ»(&X):qa + +" Edit menu +menutrans &Edit ÊÔ½¸(&E) +menutrans &Undou ¼è¤ê¾Ã¤¹(&U)u +menutrans &Redo^R ¤â¤¦°ìÅÙ¤ä¤ë(&R)^R +menutrans Rep&eat\. ·«¤êÊÖ¤¹(&E)\. +menutrans Cu&t"+x ÀÚ¤ê¼è¤ê(&T)"+x +menutrans &Copy"+y ¥³¥Ô¡¼(&C)"+y +menutrans &Paste"+gP Ž¤êÉÕ¤±(&P)"+gP +menutrans Put\ &Before[p Á°¤ËŽ¤ë(&B)[p +menutrans Put\ &After]p ¸å¤ËŽ¤ë(&A)]p +menutrans &Deletex ¾Ã¤¹(&D)x +menutrans &Select\ AllggVG Á´¤ÆÁªÂò(&S)ggVG +menutrans &Find\.\.\. ¸¡º÷(&F)\.\.\. +menutrans &Find/ ¸¡º÷(&F)/ +menutrans Find\ and\ Rep&lace\.\.\. ÃÖ´¹(&L)\.\.\. +menutrans Find\ and\ Rep&lace:%s ÃÖ´¹(&L):%s +menutrans Find\ and\ Rep&lace:s ÃÖ´¹(&L):s +"menutrans Options\.\.\. ¥ª¥×¥·¥ç¥ó(&O)\.\.\. +menutrans Settings\ &Window ÀßÄꥦ¥£¥ó¥É¥¦(&W) +menutrans Startup\ &Settings µ¯Æ°»þ¤ÎÀßÄê(&S) + +" Edit/Global Settings +menutrans &Global\ Settings Á´ÂÎÀßÄê(&G) +menutrans Toggle\ Pattern\ &Highlight:set\ hls! + \ ¥Ñ¥¿¡¼¥ó¶¯Ä´ÀÚÂØ(&H):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! + \ Â羮ʸ»ú¶èÊÌÀÚÂØ(&I):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! + \ ¥Þ¥Ã¥Áɽ¼¨ÀÚÂØ(&S):set\ sm! +menutrans &Context\ lines ¥«¡¼¥½¥ë¼þÊÕ¹Ô¿ô(&C) +menutrans &Virtual\ Edit ²¾ÁÛÊÔ½¸(&V) +menutrans Never ̵¸ú +menutrans Block\ Selection ¥Ö¥í¥Ã¥¯ÁªÂò»þ +menutrans Insert\ mode ÁÞÆþ¥â¡¼¥É»þ +menutrans Block\ and\ Insert ¥Ö¥í¥Ã¥¯/ÁÞÆþ¥â¡¼¥É»þ +menutrans Always ¾ï»þ +menutrans Toggle\ Insert\ &Mode:set\ im! + \ ÁÞÆþ(½é¿´¼Ô)¥â¡¼¥ÉÀÚÂØ(&M):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! + \ Vi¸ß´¹¥â¡¼¥ÉÀÚÂØ(&O):set\ cp! +menutrans Search\ &Path\.\.\. ¸¡º÷¥Ñ¥¹(&P)\.\.\. +menutrans Ta&g\ Files\.\.\. ¥¿¥°¥Õ¥¡¥¤¥ë(&G)\.\.\. +" +" GUI options +menutrans Toggle\ &Toolbar ¥Ä¡¼¥ë¥Ð¡¼É½¼¨ÀÚÂØ(&T) +menutrans Toggle\ &Bottom\ Scrollbar ¥¹¥¯¥í¡¼¥ë¥Ð¡¼(²¼)ɽ¼¨ÀÚÂØ(&B) +menutrans Toggle\ &Left\ Scrollbar ¥¹¥¯¥í¡¼¥ë¥Ð¡¼(º¸)ɽ¼¨ÀÚÂØ(&L) +menutrans Toggle\ &Right\ Scrollbar ¥¹¥¯¥í¡¼¥ë¥Ð¡¼(±¦)ɽ¼¨ÀÚÂØ(&R) + +let g:menutrans_path_dialog = "¥Õ¥¡¥¤¥ë¤Î¸¡º÷¥Ñ¥¹¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:\n¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï¥«¥ó¥Þ ( , ) ¤Ç¶èÀڤäƤ¯¤À¤µ¤¤." +let g:menutrans_tags_dialog = "¥¿¥°¥Õ¥¡¥¤¥ë¤Î̾Á°¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:\n̾Á°¤Ï¥«¥ó¥Þ ( , ) ¤Ç¶èÀڤäƤ¯¤À¤µ¤¤." + +" Edit/File Settings + +" Boolean options +menutrans F&ile\ Settings ¥Õ¥¡¥¤¥ëÀßÄê(&I) +menutrans Toggle\ Line\ &Numbering:set\ nu! + \ ¹ÔÈÖ¹æɽ¼¨ÀÚÂØ(&N):set\ nu! +menutrans Toggle\ relati&ve\ Line\ Numbering:set\ rnu! + \ ÁêÂйÔÈÖ¹æɽ¼¨ÀÚÂØ(&V):set\ rnu! +menutrans Toggle\ &List\ Mode:set\ list! + \ ¥ê¥¹¥È¥â¡¼¥ÉÀÚÂØ(&L):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! + \ ¹ÔÀÞÊÖ¤·ÀÚÂØ(&W):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! + \ ñ¸ìÀÞÊÖ¤·ÀÚÂØ(&R):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! + \ ¥¿¥ÖŸ³«ÀÚÂØ(&E):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! + \ ¼«Æ°»ú²¼¤²ÀÚÂØ(&A):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! + \ C¸À¸ì»ú²¼¤²ÀÚÂØ(&C):set\ cin! + +" other options +menutrans &Shiftwidth ¥·¥Õ¥ÈÉý(&S) +menutrans Soft\ &Tabstop ¥½¥Õ¥È¥¦¥§¥¢¥¿¥ÖÉý(&T) +menutrans Te&xt\ Width\.\.\. ¥Æ¥­¥¹¥ÈÉý(&X)\.\.\. +menutrans &File\ Format\.\.\. ²þ¹Ôµ­¹æÁªÂò(&F)\.\.\. + +let g:menutrans_textwidth_dialog = "¥Æ¥­¥¹¥È¤ÎÉý('textwidth')¤òÀßÄꤷ¤Æ¤¯¤À¤µ¤¤ (0¤ÇÀ°·Á¤ò̵¸ú²½):" +let g:menutrans_fileformat_dialog = "¥Õ¥¡¥¤¥ë½ÐÎϤκݤβþ¹Ôµ­¹æ¤Î·Á¼°¤òÁª¤ó¤Ç¤¯¤À¤µ¤¤." +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n¥­¥ã¥ó¥»¥ë(&C)" + +menutrans C&olor\ Scheme ¿§¥Æ¡¼¥ÞÁªÂò(&O) +menutrans &Keymap ¥­¡¼¥Þ¥Ã¥×(&K) +menutrans None ¤Ê¤· + +" Programming menu +menutrans &Tools ¥Ä¡¼¥ë(&T) +menutrans &Jump\ to\ this\ tagg^] ¥¿¥°¥¸¥ã¥ó¥×(&J)g^] +menutrans Jump\ &back^T Ìá¤ë(&B)^T +menutrans Build\ &Tags\ File ¥¿¥°¥Õ¥¡¥¤¥ëºîÀ®(&T) +menutrans &Make:make ¥á¥¤¥¯(&M):make +menutrans &List\ Errors:cl ¥¨¥é¡¼¥ê¥¹¥È(&L):cl +menutrans L&ist\ Messages:cl! ¥á¥Ã¥»¡¼¥¸¥ê¥¹¥È(&I):cl! +menutrans &Next\ Error:cn ¼¡¤Î¥¨¥é¡¼¤Ø(&N):cn +menutrans &Previous\ Error:cp Á°¤Î¥¨¥é¡¼¤Ø(&P):cp +menutrans &Older\ List:cold ¸Å¤¤¥ê¥¹¥È(&O):cold +menutrans N&ewer\ List:cnew ¿·¤·¤¤¥ê¥¹¥È(&E):cnew +menutrans Error\ &Window ¥¨¥é¡¼¥¦¥£¥ó¥É¥¦(&W) +menutrans &Update:cwin ¹¹¿·(&U):cwin +menutrans &Open:copen ³«¤¯(&O):copen +menutrans &Close:cclose ÊĤ¸¤ë(&C):cclose +menutrans &Convert\ to\ HEX:%!xxd HEX¤ØÊÑ´¹(&C):%!xxd +menutrans Conve&rt\ back:%!xxd\ -r HEX¤«¤éµÕÊÑ´¹(&R)%!xxd\ -r +menutrans Se&T\ Compiler ¥³¥ó¥Ñ¥¤¥éÀßÄê(&T) + +" Tools.Spelling Menu +menutrans &Spelling ¥¹¥Ú¥ê¥ó¥°(&S) +menutrans &Spell\ Check\ On ¥¹¥Ú¥ë¥Á¥§¥Ã¥¯Í­¸ú(&S) +menutrans Spell\ Check\ &Off ¥¹¥Ú¥ë¥Á¥§¥Ã¥¯Ìµ¸ú(&O) +menutrans To\ &Next\ error]s ¼¡¤Î¥¨¥é¡¼(&N)]s +menutrans To\ &Previous\ error[s Á°¤Î¥¨¥é¡¼(&P)[s +menutrans Suggest\ &Correctionsz= ½¤Àµ¸õÊä(&C)z= +menutrans &Repeat\ correction:spellrepall ½¤Àµ¤ò·«¤êÊÖ¤¹(&R):spellrepall +menutrans Set\ language\ to\ "en" ¸À¸ì¤ò\ "en"\ ¤ËÀßÄꤹ¤ë +menutrans Set\ language\ to\ "en_au" ¸À¸ì¤ò\ "en_au"\ ¤ËÀßÄꤹ¤ë +menutrans Set\ language\ to\ "en_ca" ¸À¸ì¤ò\ "en_ca"\ ¤ËÀßÄꤹ¤ë +menutrans Set\ language\ to\ "en_gb" ¸À¸ì¤ò\ "en_gb"\ ¤ËÀßÄꤹ¤ë +menutrans Set\ language\ to\ "en_nz" ¸À¸ì¤ò\ "en_nz"\ ¤ËÀßÄꤹ¤ë +menutrans Set\ language\ to\ "en_us" ¸À¸ì¤ò\ "en_us"\ ¤ËÀßÄꤹ¤ë +menutrans &Find\ More\ Languages ¾¤Î¸À¸ì¤ò¸¡º÷¤¹¤ë(&F) + +" Tools.Fold Menu +menutrans &Folding ÀÞ¾ö¤ß(&F) +" open close folds +menutrans &Enable/Disable\ foldszi Í­¸ú/̵¸úÀÚÂØ(&E)zi +menutrans &View\ Cursor\ Linezv ¥«¡¼¥½¥ë¹Ô¤òɽ¼¨(&V)zv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx ¥«¡¼¥½¥ë¹Ô¤À¤±¤òɽ¼¨(&W)zMzx +menutrans C&lose\ more\ foldszm ÀÞ¾ö¤ß¤òÊĤ¸¤ë(&L)zm +menutrans &Close\ all\ foldszM Á´ÀÞ¾ö¤ß¤òÊĤ¸¤ë(&C)zM +menutrans O&pen\ more\ foldszr ÀÞ¾ö¤ß¤ò³«¤¯(&P)zr +menutrans &Open\ all\ foldszR Á´ÀÞ¾ö¤ß¤ò³«¤¯(&O)zR +" fold method +menutrans Fold\ Met&hod ÀÞ¾ö¤ßÊýË¡(&H) +menutrans M&anual ¼êÆ°(&A) +menutrans I&ndent ¥¤¥ó¥Ç¥ó¥È(&N) +menutrans E&xpression ¼°É¾²Á(&X) +menutrans S&yntax ¥·¥ó¥¿¥Ã¥¯¥¹(&Y) +menutrans &Diff º¹Ê¬(&D) +menutrans Ma&rker ¥Þ¡¼¥«¡¼(&R) +" create and delete folds +menutrans Create\ &Foldzf ÀÞ¾ö¤ßºîÀ®(&F)zf +menutrans &Delete\ Foldzd ÀÞ¾ö¤ßºï½ü(&D)zd +menutrans Delete\ &All\ FoldszD Á´ÀÞ¾ö¤ßºï½ü(&A)zD +" moving around in folds +menutrans Fold\ col&umn\ width ÀÞ¾ö¤ß¥«¥é¥àÉý(&U) + +menutrans &Update ¹¹¿·(&U) +menutrans &Get\ Block ¥Ö¥í¥Ã¥¯Ãê½Ð(&G) +menutrans &Put\ Block ¥Ö¥í¥Ã¥¯Å¬ÍÑ(&P) + +" Names for buffer menu. +menutrans &Buffers ¥Ð¥Ã¥Õ¥¡(&B) +menutrans &Refresh\ menu ¥á¥Ë¥å¡¼ºÆÆɹþ(&R) +menutrans &Delete ºï½ü(&D) +menutrans &Alternate ΢¤ØÀÚÂØ(&A) +menutrans &Next ¼¡¤Î¥Ð¥Ã¥Õ¥¡(&N) +menutrans &Previous Á°¤Î¥Ð¥Ã¥Õ¥¡(&P) +menutrans [No\ File] [̵Âê] +let g:menutrans_no_file = "[̵Âê]" + +" Window menu +menutrans &Window ¥¦¥£¥ó¥É¥¦(&W) +menutrans &New^Wn ¿·µ¬ºîÀ®(&N)^Wn +menutrans S&plit^Ws ʬ³ä(&P)^Ws +menutrans Sp&lit\ To\ #^W^^ ΢¥Ð¥Ã¥Õ¥¡¤Øʬ³ä(&L)^W^^ +menutrans Split\ &Vertically^Wv ¿âľʬ³ä(&V)^Wv +menutrans Split\ File\ E&xplorer ¥Õ¥¡¥¤¥ë¥¨¥¯¥¹¥×¥í¡¼¥é(&X) +menutrans &Close^Wc ÊĤ¸¤ë(&C)^Wc +menutrans Move\ &To °ÜÆ°(&T) +menutrans &Top^WK ¾å(&T)^WK +menutrans &Bottom^WJ ²¼(&B)^WJ +menutrans &Left\ side^WH º¸(&L)^WH +menutrans &Right\ side^WL ±¦(&R)^WL +menutrans Close\ &Other(s)^Wo ¾¤òÊĤ¸¤ë(&O)^Wo +menutrans Ne&xt^Ww ¼¡¤Ø(&X)^Ww +menutrans P&revious^WW Á°¤Ø(&R)^WW +menutrans &Equal\ Size^W= Ʊ¤¸¹â¤µ¤Ë(&E)^W= +menutrans &Max\ Height^W_ ºÇÂç¹â¤Ë(&M)^W_ +menutrans M&in\ Height^W1_ ºÇ¾®¹â¤Ë(&i)^W1_ +menutrans Max\ &Width^W\| ºÇÂçÉý¤Ë(&W)^W\| +menutrans Min\ Widt&h^W1\| ºÇ¾®Éý¤Ë(&H)^W1\| +menutrans Rotate\ &Up^WR ¾å¤Ë¥í¡¼¥Æ¡¼¥·¥ç¥ó(&U)^WR +menutrans Rotate\ &Down^Wr ²¼¤Ë¥í¡¼¥Æ¡¼¥·¥ç¥ó(&D)^Wr +menutrans Select\ Fo&nt\.\.\. ¥Õ¥©¥ó¥ÈÀßÄê(&N)\.\.\. + +" The popup menu +menutrans &Undo ¼è¤ê¾Ã¤¹(&U) +menutrans Cu&t ÀÚ¤ê¼è¤ê(&T) +menutrans &Copy ¥³¥Ô¡¼(&C) +menutrans &Paste Ž¤êÉÕ¤±(&P) +menutrans &Delete ºï½ü(&D) +menutrans Select\ Blockwise ¶ë·Á¥Ö¥í¥Ã¥¯ÁªÂò +menutrans Select\ &Word ñ¸ìÁªÂò(&W) +menutrans Select\ &Sentence ʸÁªÂò(&S) +menutrans Select\ Pa&ragraph ÃÊÍîÁªÂò(&R) +menutrans Select\ &Line ¹ÔÁªÂò(&L) +menutrans Select\ &Block ¥Ö¥í¥Ã¥¯ÁªÂò(&B) +menutrans Select\ &All ¤¹¤Ù¤ÆÁªÂò(&A) + +" The GUI toolbar (for Win32 or GTK) +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open ¥Õ¥¡¥¤¥ë¤ò³«¤¯ + tmenu ToolBar.Save ¸½ºß¤Î¥Õ¥¡¥¤¥ë¤òÊݸ + tmenu ToolBar.SaveAll ¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤òÊݸ + tmenu ToolBar.Print °õºþ + tmenu ToolBar.Undo ¼è¤ê¾Ã¤· + tmenu ToolBar.Redo ¤â¤¦°ìÅÙ¤ä¤ë + tmenu ToolBar.Cut ¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤ØÀÚ¤ê¼è¤ê + tmenu ToolBar.Copy ¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤Ø¥³¥Ô¡¼ + tmenu ToolBar.Paste ¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤«¤éŽ¤êÉÕ¤± + tmenu ToolBar.Find ¸¡º÷... + tmenu ToolBar.FindNext ¼¡¤ò¸¡º÷ + tmenu ToolBar.FindPrev Á°¤ò¸¡º÷ + tmenu ToolBar.Replace ÃÖ´¹... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New ¿·µ¬¥¦¥£¥ó¥É¥¦ºîÀ® + tmenu ToolBar.WinSplit ¥¦¥£¥ó¥É¥¦Ê¬³ä + tmenu ToolBar.WinMax ¥¦¥£¥ó¥É¥¦ºÇÂç²½ + tmenu ToolBar.WinMin ¥¦¥£¥ó¥É¥¦ºÇ¾®²½ + tmenu ToolBar.WinClose ¥¦¥£¥ó¥É¥¦¤òÊĤ¸¤ë + endif + tmenu ToolBar.LoadSesn ¥»¥Ã¥·¥ç¥óÆɹþ + tmenu ToolBar.SaveSesn ¥»¥Ã¥·¥ç¥óÊݸ + tmenu ToolBar.RunScript Vim¥¹¥¯¥ê¥×¥È¼Â¹Ô + tmenu ToolBar.Make ¥×¥í¥¸¥§¥¯¥È¤òMake + tmenu ToolBar.Shell ¥·¥§¥ë¤ò³«¤¯ + tmenu ToolBar.RunCtags tagsºîÀ® + tmenu ToolBar.TagJump ¥¿¥°¥¸¥ã¥ó¥× + tmenu ToolBar.Help Vim¥Ø¥ë¥× + tmenu ToolBar.FindHelp Vim¥Ø¥ë¥×¸¡º÷ + endfun +endif + +" Syntax menu +menutrans &Syntax ¥·¥ó¥¿¥Ã¥¯¥¹(&S) +menutrans &Show\ filetypes\ in\ menu Âбþ·Á¼°¤ò¥á¥Ë¥å¡¼¤Ëɽ¼¨(&S) +menutrans Set\ '&syntax'\ only 'syntax'¤À¤±ÀßÄê(&S) +menutrans Set\ '&filetype'\ too 'filetype'¤âÀßÄê(&F) +menutrans &Off ̵¸ú²½(&O) +menutrans &Manual ¼êÆ°ÀßÄê(&M) +menutrans A&utomatic ¼«Æ°ÀßÄê(&U) +menutrans on/off\ for\ &This\ file + \ ¥ª¥ó/¥ª¥ÕÀÚÂØ(&T) +menutrans Co&lor\ test ¥«¥é¡¼¥Æ¥¹¥È(&L) +menutrans &Highlight\ test ¥Ï¥¤¥é¥¤¥È¥Æ¥¹¥È(&H) +menutrans &Convert\ to\ HTML HTML¤Ø¥³¥ó¥Ð¡¼¥È(&C) + +let &cpo = s:keepcpo +unlet s:keepcpo + +" filler to avoid the line above being recognized as a modeline +" filler diff --git a/share/vim/vim74/lang/menu_ja_jp.eucjp.vim b/share/vim/vim74/lang/menu_ja_jp.eucjp.vim new file mode 100644 index 00000000..0eff4d99 --- /dev/null +++ b/share/vim/vim74/lang/menu_ja_jp.eucjp.vim @@ -0,0 +1,9 @@ +" Menu Translations: Japanese (for UNIX) +" Translated By: MURAOKA Taro +" Last Change: 15-Jun-2012. +" +" Copyright (C) 2004,12 MURAOKA Taro +" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. + +" eucjp is the same as euc-jp. Source the other one from here. +source :p:h/menu_ja_jp.euc-jp.vim diff --git a/share/vim/vim74/lang/menu_ja_jp.ujis.vim b/share/vim/vim74/lang/menu_ja_jp.ujis.vim new file mode 100644 index 00000000..e74ff806 --- /dev/null +++ b/share/vim/vim74/lang/menu_ja_jp.ujis.vim @@ -0,0 +1,9 @@ +" Menu Translations: Japanese (for UNIX) +" Translated By: MURAOKA Taro +" Last Change: 15-Jun-2012. +" +" Copyright (C) 2004,12 MURAOKA Taro +" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. + +" ujis is the same as euc-jp. Source the other one from here. +source :p:h/menu_ja_jp.euc-jp.vim diff --git a/share/vim/vim74/lang/menu_ja_jp.utf-8.vim b/share/vim/vim74/lang/menu_ja_jp.utf-8.vim new file mode 100644 index 00000000..7c3431d0 --- /dev/null +++ b/share/vim/vim74/lang/menu_ja_jp.utf-8.vim @@ -0,0 +1,306 @@ +" vi:set ts=8 sts=8 sw=8 tw=0: +" +" Menu Translations: Japanese (UTF-8) +" Translated By: MURAOKA Taro +" Last Change: 12-May-2013. +" +" Copyright (C) 2001-13 MURAOKA Taro +" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +" Help menu +menutrans &Help ヘルプ(&H) +menutrans &Overview 概略(&O) +menutrans &User\ Manual ユーザマニュアル(&U) +menutrans &How-to\ links &How-toリンク +menutrans &Credits クレジット(&C) +menutrans Co&pying 著作権情報(&P) +menutrans &Sponsor/Register スポンサー/登録(&S) +menutrans O&rphans 孤児(&R) +menutrans &Version バージョン情報(&V) +menutrans &About Vimについて(&A) + +let g:menutrans_help_dialog = "ヘルプを検索したいコマンドもしくは単語を入力してください:\n\n挿入モードのコマンドには i_ を先頭に付加します. (例: i_CTRL-X)\nコマンドライン編集コマンドには c_ を先頭に付加します. (例: c_)\nオプションの名前には ' を付加します. (例: 'shiftwidth')" + +" File menu +menutrans &File ファイル(&F) +menutrans &Open\.\.\.:e 開く(&O)\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp 分割して開く(&L)\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew タブページで開く:tabnew +menutrans &New:enew 新規作成(&N):enew +menutrans &Close:close 閉じる(&C):close +menutrans &Save:w 保存(&S):w +menutrans Save\ &As\.\.\.:sav 名前を付けて保存(&A)\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. 差分表示(&D)\.\.\. +menutrans Split\ Patched\ &By\.\.\. パッチ結果を表示(&B)\.\.\. +menutrans &Print 印刷(&P) +menutrans Sa&ve-Exit:wqa 保存して終了(&V):wqa +menutrans E&xit:qa 終了(&X):qa + +" Edit menu +menutrans &Edit 編集(&E) +menutrans &Undou 取り消す(&U)u +menutrans &Redo^R もう一度やる(&R)^R +menutrans Rep&eat\. 繰り返す(&E)\. +menutrans Cu&t"+x 切り取り(&T)"+x +menutrans &Copy"+y コピー(&C)"+y +menutrans &Paste"+gP 貼り付け(&P)"+gP +menutrans Put\ &Before[p 前に貼る(&B)[p +menutrans Put\ &After]p 後に貼る(&A)]p +menutrans &Deletex 消す(&D)x +menutrans &Select\ AllggVG 全て選択(&S)ggVG +menutrans &Find\.\.\. 検索(&F)\.\.\. +menutrans &Find/ 検索(&F)/ +menutrans Find\ and\ Rep&lace\.\.\. 置換(&L)\.\.\. +menutrans Find\ and\ Rep&lace:%s 置換(&L):%s +menutrans Find\ and\ Rep&lace:s 置換(&L):s +"menutrans Options\.\.\. オプション(&O)\.\.\. +menutrans Settings\ &Window 設定ウィンドウ(&W) +menutrans Startup\ &Settings 起動時の設定(&S) + +" Edit/Global Settings +menutrans &Global\ Settings 全体設定(&G) +menutrans Toggle\ Pattern\ &Highlight:set\ hls! + \ パターン強調切替(&H):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! + \ 大小文字区別切替(&I):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! + \ マッチ表示切替(&S):set\ sm! +menutrans &Context\ lines カーソル周辺行数(&C) +menutrans &Virtual\ Edit 仮想編集(&V) +menutrans Never 無効 +menutrans Block\ Selection ブロック選択時 +menutrans Insert\ mode 挿入モード時 +menutrans Block\ and\ Insert ブロック/挿入モード時 +menutrans Always 常時 +menutrans Toggle\ Insert\ &Mode:set\ im! + \ 挿入(初心者)モード切替(&M):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! + \ Vi互換モード切替(&O):set\ cp! +menutrans Search\ &Path\.\.\. 検索パス(&P)\.\.\. +menutrans Ta&g\ Files\.\.\. タグファイル(&G)\.\.\. +" +" GUI options +menutrans Toggle\ &Toolbar ツールバー表示切替(&T) +menutrans Toggle\ &Bottom\ Scrollbar スクロールバー(下)表示切替(&B) +menutrans Toggle\ &Left\ Scrollbar スクロールバー(左)表示切替(&L) +menutrans Toggle\ &Right\ Scrollbar スクロールバー(右)表示切替(&R) + +let g:menutrans_path_dialog = "ファイルの検索パスを入力してください:\nディレクトリ名はカンマ ( , ) で区切ってください." +let g:menutrans_tags_dialog = "タグファイルの名前を入力してください:\n名前はカンマ ( , ) で区切ってください." + +" Edit/File Settings + +" Boolean options +menutrans F&ile\ Settings ファイル設定(&I) +menutrans Toggle\ Line\ &Numbering:set\ nu! + \ 行番号表示切替(&N):set\ nu! +menutrans Toggle\ relati&ve\ Line\ Numbering:set\ rnu! + \ 相対行番号表示切替(&V):set\ rnu! +menutrans Toggle\ &List\ Mode:set\ list! + \ リストモード切替(&L):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! + \ 行折返し切替(&W):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! + \ 単語折返し切替(&R):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! + \ タブ展開切替(&E):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! + \ 自動字下げ切替(&A):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! + \ C言語字下げ切替(&C):set\ cin! + +" other options +menutrans &Shiftwidth シフト幅(&S) +menutrans Soft\ &Tabstop ソフトウェアタブ幅(&T) +menutrans Te&xt\ Width\.\.\. テキスト幅(&X)\.\.\. +menutrans &File\ Format\.\.\. 改行記号選択(&F)\.\.\. + +let g:menutrans_textwidth_dialog = "テキストの幅('textwidth')を設定してください (0で整形を無効化):" +let g:menutrans_fileformat_dialog = "ファイル出力の際の改行記号の形式を選んでください." +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nキャンセル(&C)" + +menutrans C&olor\ Scheme 色テーマ選択(&O) +menutrans &Keymap キーマップ(&K) +menutrans None なし + +" Programming menu +menutrans &Tools ツール(&T) +menutrans &Jump\ to\ this\ tagg^] タグジャンプ(&J)g^] +menutrans Jump\ &back^T 戻る(&B)^T +menutrans Build\ &Tags\ File タグファイル作成(&T) +menutrans &Make:make メイク(&M):make +menutrans &List\ Errors:cl エラーリスト(&L):cl +menutrans L&ist\ Messages:cl! メッセージリスト(&I):cl! +menutrans &Next\ Error:cn 次のエラーへ(&N):cn +menutrans &Previous\ Error:cp 前のエラーへ(&P):cp +menutrans &Older\ List:cold 古いリスト(&O):cold +menutrans N&ewer\ List:cnew 新しいリスト(&E):cnew +menutrans Error\ &Window エラーウィンドウ(&W) +menutrans &Update:cwin 更新(&U):cwin +menutrans &Open:copen 開く(&O):copen +menutrans &Close:cclose 閉じる(&C):cclose +menutrans &Convert\ to\ HEX:%!xxd HEXへ変換(&C):%!xxd +menutrans Conve&rt\ back:%!xxd\ -r HEXから逆変換(&R)%!xxd\ -r +menutrans Se&T\ Compiler コンパイラ設定(&T) + +" Tools.Spelling Menu +menutrans &Spelling スペリング(&S) +menutrans &Spell\ Check\ On スペルチェック有効(&S) +menutrans Spell\ Check\ &Off スペルチェック無効(&O) +menutrans To\ &Next\ error]s 次のエラー(&N)]s +menutrans To\ &Previous\ error[s 前のエラー(&P)[s +menutrans Suggest\ &Correctionsz= 修正候補(&C)z= +menutrans &Repeat\ correction:spellrepall 修正を繰り返す(&R):spellrepall +menutrans Set\ language\ to\ "en" 言語を\ "en"\ に設定する +menutrans Set\ language\ to\ "en_au" 言語を\ "en_au"\ に設定する +menutrans Set\ language\ to\ "en_ca" 言語を\ "en_ca"\ に設定する +menutrans Set\ language\ to\ "en_gb" 言語を\ "en_gb"\ に設定する +menutrans Set\ language\ to\ "en_nz" 言語を\ "en_nz"\ に設定する +menutrans Set\ language\ to\ "en_us" 言語を\ "en_us"\ に設定する +menutrans &Find\ More\ Languages 他の言語を検索する(&F) + +" Tools.Fold Menu +menutrans &Folding 折畳み(&F) +" open close folds +menutrans &Enable/Disable\ foldszi 有効/無効切替(&E)zi +menutrans &View\ Cursor\ Linezv カーソル行を表示(&V)zv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx カーソル行だけを表示(&W)zMzx +menutrans C&lose\ more\ foldszm 折畳みを閉じる(&L)zm +menutrans &Close\ all\ foldszM 全折畳みを閉じる(&C)zM +menutrans O&pen\ more\ foldszr 折畳みを開く(&P)zr +menutrans &Open\ all\ foldszR 全折畳みを開く(&O)zR +" fold method +menutrans Fold\ Met&hod 折畳み方法(&H) +menutrans M&anual 手動(&A) +menutrans I&ndent インデント(&N) +menutrans E&xpression 式評価(&X) +menutrans S&yntax シンタックス(&Y) +menutrans &Diff 差分(&D) +menutrans Ma&rker マーカー(&R) +" create and delete folds +menutrans Create\ &Foldzf 折畳み作成(&F)zf +menutrans &Delete\ Foldzd 折畳み削除(&D)zd +menutrans Delete\ &All\ FoldszD 全折畳み削除(&A)zD +" moving around in folds +menutrans Fold\ col&umn\ width 折畳みカラム幅(&U) + +menutrans &Update 更新(&U) +menutrans &Get\ Block ブロック抽出(&G) +menutrans &Put\ Block ブロック適用(&P) + +" Names for buffer menu. +menutrans &Buffers バッファ(&B) +menutrans &Refresh\ menu メニュー再読込(&R) +menutrans &Delete 削除(&D) +menutrans &Alternate 裏へ切替(&A) +menutrans &Next 次のバッファ(&N) +menutrans &Previous 前のバッファ(&P) +menutrans [No\ File] [無題] +let g:menutrans_no_file = "[無題]" + +" Window menu +menutrans &Window ウィンドウ(&W) +menutrans &New^Wn 新規作成(&N)^Wn +menutrans S&plit^Ws 分割(&P)^Ws +menutrans Sp&lit\ To\ #^W^^ 裏バッファへ分割(&L)^W^^ +menutrans Split\ &Vertically^Wv 垂直分割(&V)^Wv +menutrans Split\ File\ E&xplorer ファイルエクスプローラ(&X) +menutrans &Close^Wc 閉じる(&C)^Wc +menutrans Move\ &To 移動(&T) +menutrans &Top^WK 上(&T)^WK +menutrans &Bottom^WJ 下(&B)^WJ +menutrans &Left\ side^WH 左(&L)^WH +menutrans &Right\ side^WL 右(&R)^WL +menutrans Close\ &Other(s)^Wo 他を閉じる(&O)^Wo +menutrans Ne&xt^Ww 次へ(&X)^Ww +menutrans P&revious^WW 前へ(&R)^WW +menutrans &Equal\ Size^W= 同じ高さに(&E)^W= +menutrans &Max\ Height^W_ 最大高に(&M)^W_ +menutrans M&in\ Height^W1_ 最小高に(&i)^W1_ +menutrans Max\ &Width^W\| 最大幅に(&W)^W\| +menutrans Min\ Widt&h^W1\| 最小幅に(&H)^W1\| +menutrans Rotate\ &Up^WR 上にローテーション(&U)^WR +menutrans Rotate\ &Down^Wr 下にローテーション(&D)^Wr +menutrans Select\ Fo&nt\.\.\. フォント設定(&N)\.\.\. + +" The popup menu +menutrans &Undo 取り消す(&U) +menutrans Cu&t 切り取り(&T) +menutrans &Copy コピー(&C) +menutrans &Paste 貼り付け(&P) +menutrans &Delete 削除(&D) +menutrans Select\ Blockwise 矩形ブロック選択 +menutrans Select\ &Word 単語選択(&W) +menutrans Select\ &Sentence 文選択(&S) +menutrans Select\ Pa&ragraph 段落選択(&R) +menutrans Select\ &Line 行選択(&L) +menutrans Select\ &Block ブロック選択(&B) +menutrans Select\ &All すべて選択(&A) + +" The GUI toolbar (for Win32 or GTK) +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open ファイルを開く + tmenu ToolBar.Save 現在のファイルを保存 + tmenu ToolBar.SaveAll すべてのファイルを保存 + tmenu ToolBar.Print 印刷 + tmenu ToolBar.Undo 取り消し + tmenu ToolBar.Redo もう一度やる + tmenu ToolBar.Cut クリップボードへ切り取り + tmenu ToolBar.Copy クリップボードへコピー + tmenu ToolBar.Paste クリップボードから貼り付け + tmenu ToolBar.Find 検索... + tmenu ToolBar.FindNext 次を検索 + tmenu ToolBar.FindPrev 前を検索 + tmenu ToolBar.Replace 置換... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New 新規ウィンドウ作成 + tmenu ToolBar.WinSplit ウィンドウ分割 + tmenu ToolBar.WinMax ウィンドウ最大化 + tmenu ToolBar.WinMin ウィンドウ最小化 + tmenu ToolBar.WinClose ウィンドウを閉じる + endif + tmenu ToolBar.LoadSesn セッション読込 + tmenu ToolBar.SaveSesn セッション保存 + tmenu ToolBar.RunScript Vimスクリプト実行 + tmenu ToolBar.Make プロジェクトをMake + tmenu ToolBar.Shell シェルを開く + tmenu ToolBar.RunCtags tags作成 + tmenu ToolBar.TagJump タグジャンプ + tmenu ToolBar.Help Vimヘルプ + tmenu ToolBar.FindHelp Vimヘルプ検索 + endfun +endif + +" Syntax menu +menutrans &Syntax シンタックス(&S) +menutrans &Show\ filetypes\ in\ menu 対応形式をメニューに表示(&S) +menutrans Set\ '&syntax'\ only 'syntax'だけ設定(&S) +menutrans Set\ '&filetype'\ too 'filetype'も設定(&F) +menutrans &Off 無効化(&O) +menutrans &Manual 手動設定(&M) +menutrans A&utomatic 自動設定(&U) +menutrans on/off\ for\ &This\ file + \ オン/オフ切替(&T) +menutrans Co&lor\ test カラーテスト(&L) +menutrans &Highlight\ test ハイライトテスト(&H) +menutrans &Convert\ to\ HTML HTMLへコンバート(&C) + +let &cpo = s:keepcpo +unlet s:keepcpo + +" filler to avoid the line above being recognized as a modeline +" filler diff --git a/share/vim/vim74/lang/menu_japanese_japan.932.vim b/share/vim/vim74/lang/menu_japanese_japan.932.vim new file mode 100644 index 00000000..7b775cb2 --- /dev/null +++ b/share/vim/vim74/lang/menu_japanese_japan.932.vim @@ -0,0 +1,306 @@ +" vi:set ts=8 sts=8 sw=8 tw=0: +" +" Menu Translations: Japanese (CP932) +" Translated By: MURAOKA Taro +" Last Change: 12-May-2013. +" +" Copyright (C) 2001-13 MURAOKA Taro +" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding cp932 + +" Help menu +menutrans &Help ƒwƒ‹ƒv(&H) +menutrans &Overview ŠT—ª(&O) +menutrans &User\ Manual ƒ†�[ƒUƒ}ƒjƒ…ƒAƒ‹(&U) +menutrans &How-to\ links &How-toƒŠƒ“ƒN +menutrans &Credits ƒNƒŒƒWƒbƒg(&C) +menutrans Co&pying ’˜�쌠�î•ñ(&P) +menutrans &Sponsor/Register ƒXƒ|ƒ“ƒT�[/“o˜^(&S) +menutrans O&rphans ŒÇŽ™(&R) +menutrans &Version ƒo�[ƒWƒ‡ƒ“�î•ñ(&V) +menutrans &About Vim‚ɂ‚¢‚Ä(&A) + +let g:menutrans_help_dialog = "ƒwƒ‹ƒv‚ðŒŸ�õ‚µ‚½‚¢ƒRƒ}ƒ“ƒh‚à‚µ‚­‚Í’PŒê‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢:\n\n‘}“üƒ‚�[ƒh‚̃Rƒ}ƒ“ƒh‚É‚Í i_ ‚ð�擪‚É•t‰Á‚µ‚Ü‚·. (—á: i_CTRL-X)\nƒRƒ}ƒ“ƒhƒ‰ƒCƒ“•Ò�WƒRƒ}ƒ“ƒh‚É‚Í c_ ‚ð�擪‚É•t‰Á‚µ‚Ü‚·. (—á: c_)\nƒIƒvƒVƒ‡ƒ“‚Ì–¼‘O‚É‚Í ' ‚ð•t‰Á‚µ‚Ü‚·. (—á: 'shiftwidth')" + +" File menu +menutrans &File ƒtƒ@ƒCƒ‹(&F) +menutrans &Open\.\.\.:e ŠJ‚­(&O)\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp •ªŠ„‚µ‚ÄŠJ‚­(&L)\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew ƒ^ƒuƒy�[ƒW‚ÅŠJ‚­:tabnew +menutrans &New:enew �V‹K�ì�¬(&N):enew +menutrans &Close:close •Â‚¶‚é(&C):close +menutrans &Save:w •Û‘¶(&S):w +menutrans Save\ &As\.\.\.:sav –¼‘O‚ð•t‚¯‚Ä•Û‘¶(&A)\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. �·•ª•\Ž¦(&D)\.\.\. +menutrans Split\ Patched\ &By\.\.\. ƒpƒbƒ`Œ‹‰Ê‚ð•\Ž¦(&B)\.\.\. +menutrans &Print ˆó�ü(&P) +menutrans Sa&ve-Exit:wqa •Û‘¶‚µ‚Ä�I—¹(&V):wqa +menutrans E&xit:qa �I—¹(&X):qa + +" Edit menu +menutrans &Edit •Ò�W(&E) +menutrans &Undou Žæ‚è�Á‚·(&U)u +menutrans &Redo^R ‚à‚¤ˆê“x‚â‚é(&R)^R +menutrans Rep&eat\. ŒJ‚è•Ô‚·(&E)\. +menutrans Cu&t"+x �Ø‚èŽæ‚è(&T)"+x +menutrans &Copy"+y ƒRƒs�[(&C)"+y +menutrans &Paste"+gP “\‚è•t‚¯(&P)"+gP +menutrans Put\ &Before[p ‘O‚É“\‚é(&B)[p +menutrans Put\ &After]p Œã‚É“\‚é(&A)]p +menutrans &Deletex �Á‚·(&D)x +menutrans &Select\ AllggVG ‘S‚Ä‘I‘ð(&S)ggVG +menutrans &Find\.\.\. ŒŸ�õ(&F)\.\.\. +menutrans &Find/ ŒŸ�õ(&F)/ +menutrans Find\ and\ Rep&lace\.\.\. ’uŠ·(&L)\.\.\. +menutrans Find\ and\ Rep&lace:%s ’uŠ·(&L):%s +menutrans Find\ and\ Rep&lace:s ’uŠ·(&L):s +"menutrans Options\.\.\. ƒIƒvƒVƒ‡ƒ“(&O)\.\.\. +menutrans Settings\ &Window �Ý’èƒEƒBƒ“ƒhƒE(&W) +menutrans Startup\ &Settings ‹N“®Žž‚Ì�Ý’è(&S) + +" Edit/Global Settings +menutrans &Global\ Settings ‘S‘Ì�Ý’è(&G) +menutrans Toggle\ Pattern\ &Highlight:set\ hls! + \ ƒpƒ^�[ƒ“‹­’²�Ø‘Ö(&H):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! + \ ‘å�¬•¶Žš‹æ•Ê�Ø‘Ö(&I):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! + \ ƒ}ƒbƒ`•\Ž¦�Ø‘Ö(&S):set\ sm! +menutrans &Context\ lines ƒJ�[ƒ\ƒ‹Žü•Ó�s�”(&C) +menutrans &Virtual\ Edit ‰¼‘z•Ò�W(&V) +menutrans Never –³Œø +menutrans Block\ Selection ƒuƒ�ƒbƒN‘I‘ðŽž +menutrans Insert\ mode ‘}“üƒ‚�[ƒhŽž +menutrans Block\ and\ Insert ƒuƒ�ƒbƒN/‘}“üƒ‚�[ƒhŽž +menutrans Always �펞 +menutrans Toggle\ Insert\ &Mode:set\ im! + \ ‘}“ü(�‰�SŽÒ)ƒ‚�[ƒh�Ø‘Ö(&M):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! + \ ViŒÝŠ·ƒ‚�[ƒh�Ø‘Ö(&O):set\ cp! +menutrans Search\ &Path\.\.\. ŒŸ�õƒpƒX(&P)\.\.\. +menutrans Ta&g\ Files\.\.\. ƒ^ƒOƒtƒ@ƒCƒ‹(&G)\.\.\. +" +" GUI options +menutrans Toggle\ &Toolbar ƒc�[ƒ‹ƒo�[•\Ž¦�Ø‘Ö(&T) +menutrans Toggle\ &Bottom\ Scrollbar ƒXƒNƒ��[ƒ‹ƒo�[(‰º)•\Ž¦�Ø‘Ö(&B) +menutrans Toggle\ &Left\ Scrollbar ƒXƒNƒ��[ƒ‹ƒo�[(�¶)•\Ž¦�Ø‘Ö(&L) +menutrans Toggle\ &Right\ Scrollbar ƒXƒNƒ��[ƒ‹ƒo�[(‰E)•\Ž¦�Ø‘Ö(&R) + +let g:menutrans_path_dialog = "ƒtƒ@ƒCƒ‹‚ÌŒŸ�õƒpƒX‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢:\nƒfƒBƒŒƒNƒgƒŠ–¼‚̓Jƒ“ƒ} ( , ) ‚Å‹æ�Ø‚Á‚Ä‚­‚¾‚³‚¢." +let g:menutrans_tags_dialog = "ƒ^ƒOƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢:\n–¼‘O‚̓Jƒ“ƒ} ( , ) ‚Å‹æ�Ø‚Á‚Ä‚­‚¾‚³‚¢." + +" Edit/File Settings + +" Boolean options +menutrans F&ile\ Settings ƒtƒ@ƒCƒ‹�Ý’è(&I) +menutrans Toggle\ Line\ &Numbering:set\ nu! + \ �s”Ô�†•\Ž¦�Ø‘Ö(&N):set\ nu! +menutrans Toggle\ relati&ve\ Line\ Numbering:set\ rnu! + \ ‘Š‘Î�s”Ô�†•\Ž¦�Ø‘Ö(&V):set\ rnu! +menutrans Toggle\ &List\ Mode:set\ list! + \ ƒŠƒXƒgƒ‚�[ƒh�Ø‘Ö(&L):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! + \ �s�Ü•Ô‚µ�Ø‘Ö(&W):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! + \ ’PŒê�Ü•Ô‚µ�Ø‘Ö(&R):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! + \ ƒ^ƒu“WŠJ�Ø‘Ö(&E):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! + \ Ž©“®Žš‰º‚°�Ø‘Ö(&A):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! + \ CŒ¾ŒêŽš‰º‚°�Ø‘Ö(&C):set\ cin! + +" other options +menutrans &Shiftwidth ƒVƒtƒg•�(&S) +menutrans Soft\ &Tabstop ƒ\ƒtƒgƒEƒFƒAƒ^ƒu•�(&T) +menutrans Te&xt\ Width\.\.\. ƒeƒLƒXƒg•�(&X)\.\.\. +menutrans &File\ Format\.\.\. ‰ü�s‹L�†‘I‘ð(&F)\.\.\. + +let g:menutrans_textwidth_dialog = "ƒeƒLƒXƒg‚Ì•�('textwidth')‚ð�ݒ肵‚Ä‚­‚¾‚³‚¢ (0‚Å�®Œ`‚𖳌ø‰»):" +let g:menutrans_fileformat_dialog = "ƒtƒ@ƒCƒ‹�o—Í‚Ì�ۂ̉ü�s‹L�†‚ÌŒ`Ž®‚ð‘I‚ñ‚Å‚­‚¾‚³‚¢." +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nƒLƒƒƒ“ƒZƒ‹(&C)" + +menutrans C&olor\ Scheme �Fƒe�[ƒ}‘I‘ð(&O) +menutrans &Keymap ƒL�[ƒ}ƒbƒv(&K) +menutrans None ‚È‚µ + +" Programming menu +menutrans &Tools ƒc�[ƒ‹(&T) +menutrans &Jump\ to\ this\ tagg^] ƒ^ƒOƒWƒƒƒ“ƒv(&J)g^] +menutrans Jump\ &back^T –ß‚é(&B)^T +menutrans Build\ &Tags\ File ƒ^ƒOƒtƒ@ƒCƒ‹�ì�¬(&T) +menutrans &Make:make ƒ�ƒCƒN(&M):make +menutrans &List\ Errors:cl ƒGƒ‰�[ƒŠƒXƒg(&L):cl +menutrans L&ist\ Messages:cl! ƒ�ƒbƒZ�[ƒWƒŠƒXƒg(&I):cl! +menutrans &Next\ Error:cn ŽŸ‚̃Gƒ‰�[‚Ö(&N):cn +menutrans &Previous\ Error:cp ‘O‚̃Gƒ‰�[‚Ö(&P):cp +menutrans &Older\ List:cold ŒÃ‚¢ƒŠƒXƒg(&O):cold +menutrans N&ewer\ List:cnew �V‚µ‚¢ƒŠƒXƒg(&E):cnew +menutrans Error\ &Window ƒGƒ‰�[ƒEƒBƒ“ƒhƒE(&W) +menutrans &Update:cwin �X�V(&U):cwin +menutrans &Open:copen ŠJ‚­(&O):copen +menutrans &Close:cclose •Â‚¶‚é(&C):cclose +menutrans &Convert\ to\ HEX:%!xxd HEX‚Ö•ÏŠ·(&C):%!xxd +menutrans Conve&rt\ back:%!xxd\ -r HEX‚©‚ç‹t•ÏŠ·(&R)%!xxd\ -r +menutrans Se&T\ Compiler ƒRƒ“ƒpƒCƒ‰�Ý’è(&T) + +" Tools.Spelling Menu +menutrans &Spelling ƒXƒyƒŠƒ“ƒO(&S) +menutrans &Spell\ Check\ On ƒXƒyƒ‹ƒ`ƒFƒbƒN—LŒø(&S) +menutrans Spell\ Check\ &Off ƒXƒyƒ‹ƒ`ƒFƒbƒN–³Œø(&O) +menutrans To\ &Next\ error]s ŽŸ‚̃Gƒ‰�[(&N)]s +menutrans To\ &Previous\ error[s ‘O‚̃Gƒ‰�[(&P)[s +menutrans Suggest\ &Correctionsz= �C�³Œó•â(&C)z= +menutrans &Repeat\ correction:spellrepall �C�³‚ðŒJ‚è•Ô‚·(&R):spellrepall +menutrans Set\ language\ to\ "en" Œ¾Œê‚ð\ "en"\ ‚É�Ý’è‚·‚é +menutrans Set\ language\ to\ "en_au" Œ¾Œê‚ð\ "en_au"\ ‚É�Ý’è‚·‚é +menutrans Set\ language\ to\ "en_ca" Œ¾Œê‚ð\ "en_ca"\ ‚É�Ý’è‚·‚é +menutrans Set\ language\ to\ "en_gb" Œ¾Œê‚ð\ "en_gb"\ ‚É�Ý’è‚·‚é +menutrans Set\ language\ to\ "en_nz" Œ¾Œê‚ð\ "en_nz"\ ‚É�Ý’è‚·‚é +menutrans Set\ language\ to\ "en_us" Œ¾Œê‚ð\ "en_us"\ ‚É�Ý’è‚·‚é +menutrans &Find\ More\ Languages ‘¼‚ÌŒ¾Œê‚ðŒŸ�õ‚·‚é(&F) + +" Tools.Fold Menu +menutrans &Folding �Ü�ô‚Ý(&F) +" open close folds +menutrans &Enable/Disable\ foldszi —LŒø/–³Œø�Ø‘Ö(&E)zi +menutrans &View\ Cursor\ Linezv ƒJ�[ƒ\ƒ‹�s‚ð•\Ž¦(&V)zv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx ƒJ�[ƒ\ƒ‹�s‚¾‚¯‚ð•\Ž¦(&W)zMzx +menutrans C&lose\ more\ foldszm �Ü�ô‚Ý‚ð•Â‚¶‚é(&L)zm +menutrans &Close\ all\ foldszM ‘S�Ü�ô‚Ý‚ð•Â‚¶‚é(&C)zM +menutrans O&pen\ more\ foldszr �Ü�ô‚Ý‚ðŠJ‚­(&P)zr +menutrans &Open\ all\ foldszR ‘S�Ü�ô‚Ý‚ðŠJ‚­(&O)zR +" fold method +menutrans Fold\ Met&hod �Ü�ô‚Ý•û–@(&H) +menutrans M&anual Žè“®(&A) +menutrans I&ndent ƒCƒ“ƒfƒ“ƒg(&N) +menutrans E&xpression Ž®•]‰¿(&X) +menutrans S&yntax ƒVƒ“ƒ^ƒbƒNƒX(&Y) +menutrans &Diff �·•ª(&D) +menutrans Ma&rker ƒ}�[ƒJ�[(&R) +" create and delete folds +menutrans Create\ &Foldzf �Ü�ô‚Ý�ì�¬(&F)zf +menutrans &Delete\ Foldzd �Ü�ô‚Ý�í�œ(&D)zd +menutrans Delete\ &All\ FoldszD ‘S�Ü�ô‚Ý�í�œ(&A)zD +" moving around in folds +menutrans Fold\ col&umn\ width �Ü�ô‚݃Jƒ‰ƒ€•�(&U) + +menutrans &Update �X�V(&U) +menutrans &Get\ Block ƒuƒ�ƒbƒN’Š�o(&G) +menutrans &Put\ Block ƒuƒ�ƒbƒN“K—p(&P) + +" Names for buffer menu. +menutrans &Buffers ƒoƒbƒtƒ@(&B) +menutrans &Refresh\ menu ƒ�ƒjƒ…�[�Ä“Ç�ž(&R) +menutrans &Delete �í�œ(&D) +menutrans &Alternate — ‚Ö�Ø‘Ö(&A) +menutrans &Next ŽŸ‚̃oƒbƒtƒ@(&N) +menutrans &Previous ‘O‚̃oƒbƒtƒ@(&P) +menutrans [No\ File] [–³‘è] +let g:menutrans_no_file = "[–³‘è]" + +" Window menu +menutrans &Window ƒEƒBƒ“ƒhƒE(&W) +menutrans &New^Wn �V‹K�ì�¬(&N)^Wn +menutrans S&plit^Ws •ªŠ„(&P)^Ws +menutrans Sp&lit\ To\ #^W^^ — ƒoƒbƒtƒ@‚Ö•ªŠ„(&L)^W^^ +menutrans Split\ &Vertically^Wv �‚’¼•ªŠ„(&V)^Wv +menutrans Split\ File\ E&xplorer ƒtƒ@ƒCƒ‹ƒGƒNƒXƒvƒ��[ƒ‰(&X) +menutrans &Close^Wc •Â‚¶‚é(&C)^Wc +menutrans Move\ &To ˆÚ“®(&T) +menutrans &Top^WK �ã(&T)^WK +menutrans &Bottom^WJ ‰º(&B)^WJ +menutrans &Left\ side^WH �¶(&L)^WH +menutrans &Right\ side^WL ‰E(&R)^WL +menutrans Close\ &Other(s)^Wo ‘¼‚ð•Â‚¶‚é(&O)^Wo +menutrans Ne&xt^Ww ŽŸ‚Ö(&X)^Ww +menutrans P&revious^WW ‘O‚Ö(&R)^WW +menutrans &Equal\ Size^W= “¯‚¶�‚‚³‚É(&E)^W= +menutrans &Max\ Height^W_ �Å‘å�‚‚É(&M)^W_ +menutrans M&in\ Height^W1_ �Å�¬�‚‚É(&i)^W1_ +menutrans Max\ &Width^W\| �Å‘å•�‚É(&W)^W\| +menutrans Min\ Widt&h^W1\| �Å�¬•�‚É(&H)^W1\| +menutrans Rotate\ &Up^WR �ã‚Ƀ��[ƒe�[ƒVƒ‡ƒ“(&U)^WR +menutrans Rotate\ &Down^Wr ‰º‚Ƀ��[ƒe�[ƒVƒ‡ƒ“(&D)^Wr +menutrans Select\ Fo&nt\.\.\. ƒtƒHƒ“ƒg�Ý’è(&N)\.\.\. + +" The popup menu +menutrans &Undo Žæ‚è�Á‚·(&U) +menutrans Cu&t �Ø‚èŽæ‚è(&T) +menutrans &Copy ƒRƒs�[(&C) +menutrans &Paste “\‚è•t‚¯(&P) +menutrans &Delete �í�œ(&D) +menutrans Select\ Blockwise ‹éŒ`ƒuƒ�ƒbƒN‘I‘ð +menutrans Select\ &Word ’PŒê‘I‘ð(&W) +menutrans Select\ &Sentence •¶‘I‘ð(&S) +menutrans Select\ Pa&ragraph ’i—Ž‘I‘ð(&R) +menutrans Select\ &Line �s‘I‘ð(&L) +menutrans Select\ &Block ƒuƒ�ƒbƒN‘I‘ð(&B) +menutrans Select\ &All ‚·‚ׂđI‘ð(&A) + +" The GUI toolbar (for Win32 or GTK) +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open ƒtƒ@ƒCƒ‹‚ðŠJ‚­ + tmenu ToolBar.Save Œ»�݂̃tƒ@ƒCƒ‹‚ð•Û‘¶ + tmenu ToolBar.SaveAll ‚·‚ׂẴtƒ@ƒCƒ‹‚ð•Û‘¶ + tmenu ToolBar.Print ˆó�ü + tmenu ToolBar.Undo Žæ‚è�Á‚µ + tmenu ToolBar.Redo ‚à‚¤ˆê“x‚â‚é + tmenu ToolBar.Cut ƒNƒŠƒbƒvƒ{�[ƒh‚Ö�Ø‚èŽæ‚è + tmenu ToolBar.Copy ƒNƒŠƒbƒvƒ{�[ƒh‚ÖƒRƒs�[ + tmenu ToolBar.Paste ƒNƒŠƒbƒvƒ{�[ƒh‚©‚ç“\‚è•t‚¯ + tmenu ToolBar.Find ŒŸ�õ... + tmenu ToolBar.FindNext ŽŸ‚ðŒŸ�õ + tmenu ToolBar.FindPrev ‘O‚ðŒŸ�õ + tmenu ToolBar.Replace ’uŠ·... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New �V‹KƒEƒBƒ“ƒhƒE�ì�¬ + tmenu ToolBar.WinSplit ƒEƒBƒ“ƒhƒE•ªŠ„ + tmenu ToolBar.WinMax ƒEƒBƒ“ƒhƒE�ő剻 + tmenu ToolBar.WinMin ƒEƒBƒ“ƒhƒE�Å�¬‰» + tmenu ToolBar.WinClose ƒEƒBƒ“ƒhƒE‚ð•Â‚¶‚é + endif + tmenu ToolBar.LoadSesn ƒZƒbƒVƒ‡ƒ““Ç�ž + tmenu ToolBar.SaveSesn ƒZƒbƒVƒ‡ƒ“•Û‘¶ + tmenu ToolBar.RunScript VimƒXƒNƒŠƒvƒgŽÀ�s + tmenu ToolBar.Make ƒvƒ�ƒWƒFƒNƒg‚ðMake + tmenu ToolBar.Shell ƒVƒFƒ‹‚ðŠJ‚­ + tmenu ToolBar.RunCtags tags�ì�¬ + tmenu ToolBar.TagJump ƒ^ƒOƒWƒƒƒ“ƒv + tmenu ToolBar.Help Vimƒwƒ‹ƒv + tmenu ToolBar.FindHelp Vimƒwƒ‹ƒvŒŸ�õ + endfun +endif + +" Syntax menu +menutrans &Syntax ƒVƒ“ƒ^ƒbƒNƒX(&S) +menutrans &Show\ filetypes\ in\ menu ‘ΉžŒ`Ž®‚ðƒ�ƒjƒ…�[‚É•\Ž¦(&S) +menutrans Set\ '&syntax'\ only 'syntax'‚¾‚¯�Ý’è(&S) +menutrans Set\ '&filetype'\ too 'filetype'‚à�Ý’è(&F) +menutrans &Off –³Œø‰»(&O) +menutrans &Manual Žè“®�Ý’è(&M) +menutrans A&utomatic Ž©“®�Ý’è(&U) +menutrans on/off\ for\ &This\ file + \ ƒIƒ“/ƒIƒt�Ø‘Ö(&T) +menutrans Co&lor\ test ƒJƒ‰�[ƒeƒXƒg(&L) +menutrans &Highlight\ test ƒnƒCƒ‰ƒCƒgƒeƒXƒg(&H) +menutrans &Convert\ to\ HTML HTML‚ÖƒRƒ“ƒo�[ƒg(&C) + +let &cpo = s:keepcpo +unlet s:keepcpo + +" filler to avoid the line above being recognized as a modeline +" filler diff --git a/share/vim/vim73/lang/menu_ko.utf-8.vim b/share/vim/vim74/lang/menu_ko.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_ko.utf-8.vim rename to share/vim/vim74/lang/menu_ko.utf-8.vim diff --git a/share/vim/vim74/lang/menu_ko_kr.euckr.vim b/share/vim/vim74/lang/menu_ko_kr.euckr.vim new file mode 100644 index 00000000..38163848 --- /dev/null +++ b/share/vim/vim74/lang/menu_ko_kr.euckr.vim @@ -0,0 +1,265 @@ +" Menu Translations: Korean +" Maintainer: SungHyun Nam +" Last Change: 2012 May 01 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding euc-kr + +" Help menu +menutrans &Help µµ¿ò¸»(&H) +menutrans &Overview °³°ü(&O) +menutrans &User\ Manual »ç¿ëÀÚ\ ¸Å´º¾ó(&U) +menutrans &How-to\ links ÇÏ¿ìÅõ\ ¸ñ·Ï(&H) +menutrans &GUI GUI(&G) +menutrans &Find\.\.\. ã±â(&F)\.\.\. +menutrans &Credits °í¸¶¿î\ ºÐ(&C) +menutrans Co&pying ÀúÀÛ±Ç(&p) +menutrans &Sponsor/Register ÈÄ¿ø/µî·Ï(&S) +menutrans O&rphans °í¾Æ(&r) +menutrans &Version ¹öÁ¯(&V) +menutrans &About ÀÌ\ ÇÁ·Î±×·¥Àº(&A) + +" File menu +menutrans &File ÆÄÀÏ(&F) +menutrans &Open\.\.\.:e ¿­±â(&O)\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp ³ª´²¼­\ ¿­±â(&l)\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew ÅÇ\ ¿­±â\.\.\.:tabnew +menutrans &New:enew »õ·Î¿î(&N):enew +menutrans &Close:close ´Ý±â(&C):close +menutrans &Save:w ÀúÀå(&S):w +menutrans Save\ &As\.\.\.:sav ´Ù¸¥\ À̸§À¸·Î\ ÀúÀå(&A)\.\.\.:sav +"menutrans Split\ &Diff\ with\.\.\. Split\ &Diff\ with\.\.\. +"menutrans Split\ Patched\ &By\.\.\. Split\ Patched\ &By\.\.\. +menutrans &Print Àμâ(&P) +menutrans Sa&ve-Exit:wqa ÀúÀåÇÏ°í\ ³¡³»±â(&v):wqa +menutrans E&xit:qa ³¡³»±â(&x):qa + +" Edit menu +menutrans &Edit ÆíÁý(&E) +menutrans &Undou Ãë¼Ò(&U)u +menutrans &Redo^R ´Ù½Ã\ ½ÇÇà(&R)^R +menutrans Rep&eat\. µÇÇ®ÀÌ(&e)\. +menutrans Cu&t"+x ÀÚ¸£±â(&t)"+x +menutrans &Copy"+y º¹»ç(&C)"+y +menutrans &Paste"+gP ºÙÀ̱â(&P)"+gP +menutrans Put\ &Before[p ¾Õ¿¡\ ºÙÀ̱â(&B)[p +menutrans Put\ &After]p µÚ¿¡\ ºÙÀ̱â(&A)]p +menutrans &Deletex Áö¿ì±â(&D)x +menutrans &Select\ AllggVG ¸ðµÎ\ °í¸£±â(&S)ggVG +menutrans &Find\.\.\. ã±â(&F)\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. ã¾Æ¼­\ ¹Ù²Ù±â(&l)\.\.\. +menutrans Settings\ &Window ¼³Á¤\ â(&W) +menutrans Startup\ &Settings ½ÃÀÛ\ ¼³Á¤(&S) + +" Edit/Global Settings +menutrans &Global\ Settings Àü¿ª\ ¼³Á¤(&G) +menutrans Toggle\ Pattern\ &Highlight:set\ hls! ÆÐÅÏ\ ÇÏÀ̶óÀÌÆ®\ Åä±Û(&H):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! ´ë¼Ò¹®ÀÚ\ ±¸ºÐ\ Åä±Û(&I):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Showmatch\ Åä±Û(&S):set\ sm! +menutrans &Context\ lines ÄÜÅؽºÆ®\ ÁÙ(&C) +menutrans &Virtual\ Edit °¡»ó\ ÆíÁý(&V) +menutrans Never »ç¿ë\ ¾È\ ÇÔ +menutrans Block\ Selection ºí·°\ °í¸£±â +menutrans Insert\ mode »ðÀÔ\ ¸ðµå +menutrans Block\ and\ Insert ºí·°°ú\ »ðÀÔ +menutrans Always Ç×»ó\ »ç¿ë +menutrans Toggle\ Insert\ &Mode:set\ im! »ðÀÔ\ ¸ðµå\ Åä±Û(&M):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vi\ ȣȯ\ Åä±Û(&o):set\ cp! +menutrans Search\ &Path\.\.\. ã±â\ °æ·Î(&P)\.\.\. +menutrans Ta&g\ Files\.\.\. ²¿¸®Ç¥\ ÆÄÀÏ(&g)\.\.\. + +" GUI options +menutrans Toggle\ &Toolbar µµ±¸¸·´ë\ Åä±Û(&T) +menutrans Toggle\ &Bottom\ Scrollbar ¹Ù´Ú\ ½ºÅ©·Ñ¹Ù\ Åä±Û(&B) +menutrans Toggle\ &Left\ Scrollbar ¿ÞÂÊ\ ½ºÅ©·Ñ¹Ù\ Åä±Û(&L) +menutrans Toggle\ &Right\ Scrollbar ¿À¸¥ÂÊ\ ½ºÅ©·Ñ¹Ù\ Åä±Û(&R) + +" Edit/File Settings +menutrans F&ile\ Settings ÆÄÀÏ\ ¼³Á¤(&i) + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! ÁÙ\ ¹øÈ£ºÙÀ̱â\ Åä±Û(&N):set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! ¸ñ·Ï\ ¸ðµå\ Åä±Û(&L):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! ÁÙ\ Wrap\ Åä±Û(&W):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! ³¹¸»¿¡¼­\ Wrap\ Åä±Û(&r):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! ÅÇ\ È®Àå\ Åä±Û(&e):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! ÀÚµ¿Àε§Æ®\ Åä±Û(&a):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! C-Àε§ÆÃ\ Åä±Û(&C):set\ cin! + +" other options +menutrans &Shiftwidth ½¬ÇÁÆ®\ ³Êºñ(&S) +menutrans Soft\ &Tabstop ¼ÒÇÁÆ®\ ÅǽºÅé(&T) +menutrans Te&xt\ Width\.\.\. ÅؽºÆ®\ ³Êºñ(&x)\.\.\. +menutrans &File\ Format\.\.\. ÆÄÀÏ\ Çü½Ä(&F)\.\.\. +menutrans C&olor\ Scheme Ä÷¯\ ½ºÅ´(&o) +menutrans &Keymap Å°¸Ê(&K) + +menutrans Select\ Fo&nt\.\.\. ±Û²Ã\ °í¸£±â(&F)\.\.\. + +" Programming menu +menutrans &Tools µµ±¸(&T) +menutrans &Jump\ to\ this\ tagg^] ÀÌ\ ²¿¸®Ç¥·Î\ °¡±â(&J)g^] +menutrans Jump\ &back^T µÚ·Î\ °¡±â(&b)^T +menutrans Build\ &Tags\ File ²¿¸®Ç¥\ ÆÄÀÏ\ ¸¸µé±â(&T) + +menutrans &Spelling ¸ÂÃã¹ý\ °Ë»ç(&S) +menutrans &Spell\ Check\ On ¸ÂÃã¹ý\ °Ë»ç\ ½ÃÀÛ(&S) +menutrans Spell\ Check\ &Off ¸ÂÃã¹ý\ °Ë»ç\ ³¡(&O) +menutrans To\ &Next\ error]s ´ÙÀ½\ ¿¡·¯·Î(&N)]s +menutrans To\ &Previous\ error[s ÀÌÀü\ ¿¡·¯·Î(&P)[s +menutrans Suggest\ &Correctionsz= ¼öÁ¤\ Á¦¾È(&C)z= +menutrans &Repeat\ correction:spellrepall ¼öÁ¤\ ¹Ýº¹(&R):spellrepall +menutrans Set\ language\ to\ "en" ¾ð¾î¸¦\ "en"À¸·Î\ ¼³Á¤ +menutrans Set\ language\ to\ "en_au" ¾ð¾î¸¦\ "en_au"·Î\ ¼³Á¤ +menutrans Set\ language\ to\ "en_ca" ¾ð¾î¸¦\ "en_ca"·Î\ ¼³Á¤ +menutrans Set\ language\ to\ "en_gb" ¾ð¾î¸¦\ "en_gb"·Î\ ¼³Á¤ +menutrans Set\ language\ to\ "en_nz" ¾ð¾î¸¦\ "en_nz"À¸·Î\ ¼³Á¤ +menutrans Set\ language\ to\ "en_us" ¾ð¾î¸¦\ "en_us"·Î\ ¼³Á¤ +menutrans &Find\ More\ Languages ´Ù¸¥\ ¾ð¾î\ ã±â(&F) + +" Tools.Fold Menu +menutrans &Folding Á¢±â(&F) +" open close folds +menutrans &Enable/Disable\ foldszi Á¢±â\ »ç¿ë\ Åä±Û(&E)zi +menutrans &View\ Cursor\ Linezv Ä¿¼­\ ÁÙ\ º¸±â(&V)zv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Ä¿¼­\ ÁÙ¸¸\ º¸±â(&w)zMzx +menutrans C&lose\ more\ foldszm ´õ\ ¸¹Àº\ Á¢±â\ ´Ý±â(&l)zm +menutrans &Close\ all\ foldszM ¸ðµç\ Á¢±â\ ´Ý±â(&C)zM +menutrans O&pen\ more\ foldszr ´õ\ ¸¹Àº\ Á¢±â\ ¿­±â(&p)zr +menutrans &Open\ all\ foldszR Á¢Èù\ ºÎºÐ\ ¸ðµÎ\ Æì±â(&O)zR +" fold method +menutrans Fold\ Met&hod Á¢´Â\ ¹æ¹ý(&h) +menutrans M&anual ¼öµ¿(&a) +menutrans I&ndent µé¿©¾²±â(&n) +menutrans E&xpression Ç¥Çö½Ä(&x) +menutrans S&yntax ½ÅÅýº(&y) +"menutrans &Diff &Diff +menutrans Ma&rker ²¿¸®Ç¥(&r) +" create and delete folds +menutrans Create\ &Foldzf Á¢±â\ »ý¼º(&F)zf +menutrans &Delete\ Foldzd Á¢±â\ »èÁ¦(&D)zd +menutrans Delete\ &All\ FoldszD ¸ðµç\ Á¢±â\ »èÁ¦(&A)zD +" moving around in folds +menutrans Fold\ column\ &width Á¢±â\ Ä÷³\ ³Êºñ(&w) + +"menutrans &Diff &Diff +menutrans &Update °»½Å(&U) +menutrans &Get\ Block ºí·°\ °¡Á®¿À±â(&G) +menutrans &Put\ Block ºí·°\ Áý¾î³Ö±â(&P) + +menutrans &Make:make ºôµå(&M):make +menutrans &List\ Errors:cl ¿¡·¯\ ¸ñ·Ï\ º¸±â(&L):cl +menutrans L&ist\ Messages:cl! ¸Þ½ÃÁö\ ¸ñ·Ï\ º¸±â(&i):cl! +menutrans &Next\ Error:cn ´ÙÀ½\ ¿¡·¯(&N):cn +menutrans &Previous\ Error:cp ÀÌÀü\ ¿¡·¯(&P):cp +menutrans &Older\ List:cold ¿À·¡µÈ\ ¸ñ·Ï(&O):cold +menutrans N&ewer\ List:cnew »õ·Î¿î\ ¸ñ·Ï(&e):cnew +menutrans Error\ &Window ¿¡·¯\ â(&W) +menutrans &Update:cwin °»½Å(&U):cwin +menutrans &Open:copen ¿­±â(&O):copen +menutrans &Close:cclose ´Ý±â(&C):cclose +menutrans Se&T\ Compiler ÄÄÆÄÀÏ·¯\ ¼³Á¤(&T) +menutrans &Convert\ to\ HEX:%!mc\ vim:xxd ½ÊÀ°ÁøÀ¸·Î\ º¯È¯:%!mc\ vim:xxd +menutrans &Convert\ to\ HEX:%!xxd ½ÊÀ°ÁøÀ¸·Î\ º¯È¯(&C):%!xxd +menutrans Conve&rt\ back:%!mc\ vim:xxd\ -r ¿ø·¡´ë·Î\ º¯È¯(&r):%!mc\ vim:xxd\ -r +menutrans Conve&rt\ back:%!xxd\ -r ¿ø·¡´ë·Î\ º¯È¯(&r):%!xxd\ -r + +" Names for buffer menu. +menutrans &Buffers ¹öÆÛ(&B) +menutrans &Refresh\ menu Â÷¸²Ç¥\ ´Ù½Ã±×¸®±â(&R) +menutrans &Delete Áö¿ì±â(&D) +menutrans &Alternate ±³Ã¼(&A) +menutrans &Next ´ÙÀ½(&N) +menutrans &Previous ÀÌÀü(&P) + +" Window menu +menutrans &Window â(&W) +menutrans &New^Wn »õ\ â(&N)^Wn +menutrans S&plit^Ws ³ª´©±â(&p)^Ws +menutrans Sp&lit\ To\ #^W^^ #À¸·Î\ ³ª´©±â(&l)^W^^ +menutrans Split\ &Vertically^Wv ¼¼·Î·Î\ ³ª´©±â(&V)^Wv +menutrans Split\ File\ E&xplorer ÆÄÀÏ\ ÀͽºÇ÷η¯\ ³ª´©±â + +menutrans &Close^Wc ´Ý±â(&C)^Wc +menutrans Close\ &Other(s)^Wo ´Ù¸¥\ â\ ´Ý±â(&O)^Wo + +menutrans Move\ &To À̵¿(&T) +menutrans &Top^WK ²À´ë±â(&T)^WK +menutrans &Bottom^WJ ¹Ù´Ú(&B)^WJ +menutrans &Left\ side^WH ¿ÞÂÊ(&L)^WH +menutrans &Right\ side^WL ¿À¸¥ÂÊ(&R)^WL +menutrans Rotate\ &Up^WR À§·Î\ ȸÀü(&U)^WR +menutrans Rotate\ &Down^Wr ¾Æ·¡·Î\ ȸÀü(&D)^Wr + +menutrans &Equal\ Size^W= °°Àº\ ³ôÀÌ·Î(&E)^W= +menutrans &Max\ Height^W_ ÃÖ´ë\ ³ôÀÌ·Î(&M)^W_ +menutrans M&in\ Height^W1_ ÃÖ¼Ò\ ³ôÀÌ·Î(&i)^W1_ +menutrans Max\ &Width^W\| ÃÖ´ë\ ³ÐÀÌ·Î(&W)^W\| +menutrans Min\ Widt&h^W1\| ÃÖ¼Ò\ ³ÐÀÌ·Î(&h)^W1\| + +" The popup menu +menutrans &Undo Ãë¼Ò(&U) +menutrans Cu&t ÀÚ¸£±â(&t) +menutrans &Copy º¹»ç(&C) +menutrans &Paste ºÙÀ̱â(&P) +menutrans &Delete Áö¿ì±â(&D) +menutrans Select\ Blockwise »ç°¢Çü\ °í¸£±â +menutrans Select\ &Word ³¹¸»\ °í¸£±â(&W) +menutrans Select\ &Line ÁÙ\ °í¸£±â(&L) +menutrans Select\ &Block ±¸È¹\ °í¸£±â(&B) +menutrans Select\ &All ¸ðµÎ\ °í¸£±â(&A) + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open ÆÄÀÏ ¿­±â + tmenu ToolBar.Save ÇöÀç ÆÄÀÏ ÀúÀå + tmenu ToolBar.SaveAll ¸ðµÎ ÀúÀå + tmenu ToolBar.Print Àμâ + tmenu ToolBar.Undo Ãë¼Ò + tmenu ToolBar.Redo ´Ù½Ã ½ÇÇà + tmenu ToolBar.Cut ÀÚ¸£±â + tmenu ToolBar.Copy º¹»ç + tmenu ToolBar.Paste ºÙÀ̱â + tmenu ToolBar.Find ã±â... + tmenu ToolBar.FindNext ´ÙÀ½ ã±â + tmenu ToolBar.FindPrev ÀÌÀü ã±â + tmenu ToolBar.Replace ¹Ù²Ù±â + tmenu ToolBar.LoadSesn ¼¼¼Ç Àоî¿À±â + tmenu ToolBar.SaveSesn ¼¼¼Ç ÀúÀå + tmenu ToolBar.RunScript ½ºÅ©¸³Æ® ½ÇÇà + tmenu ToolBar.Make Make + tmenu ToolBar.Shell ½© + tmenu ToolBar.RunCtags ²¿¸®Ç¥ ¸¸µé±â + tmenu ToolBar.TagJump ²¿¸®Ç¥·Î °¡±â + tmenu ToolBar.Help µµ¿ò¸» + tmenu ToolBar.FindHelp µµ¿ò¸» ã±â... + endfun +endif + +" Syntax menu +menutrans &Syntax ¹®¹ý(&S) +menutrans &Show\ filetypes\ in\ menu ¸ðµç\ ¼±Åð¡´ÉÇÑ\ Ç׸ñ\ º¸±â(&S) +menutrans Set\ '&syntax'\ only 'syntax'¸¸\ ¼³Á¤(&s) +menutrans Set\ '&filetype'\ too 'filetype'µµ\ ¼³Á¤(&f) +menutrans &Off ²ô±â(&O) +menutrans &Manual ¼öµ¿(&M) +menutrans A&utomatic ÀÚµ¿(&u) +menutrans on/off\ for\ &This\ file ÀÌ\ ÆÄÀϸ¸\ Äѱâ/²ô±â(&T) + +menutrans Co&lor\ test »ö\ ½ÃÇè(&l) +menutrans &Highlight\ test Highlight\ ½ÃÇè(&H) +menutrans &Convert\ to\ HTML HTML·Î\ º¯È¯(&C) + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_ko_kr.utf-8.vim b/share/vim/vim74/lang/menu_ko_kr.utf-8.vim new file mode 100644 index 00000000..d036853c --- /dev/null +++ b/share/vim/vim74/lang/menu_ko_kr.utf-8.vim @@ -0,0 +1,265 @@ +" Menu Translations: Korean +" Maintainer: SungHyun Nam +" Last Change: 2012 May 01 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +" Help menu +menutrans &Help 도움말(&H) +menutrans &Overview 개관(&O) +menutrans &User\ Manual 사용자\ 매뉴얼(&U) +menutrans &How-to\ links 하우투\ 목록(&H) +menutrans &GUI GUI(&G) +menutrans &Find\.\.\. 찾기(&F)\.\.\. +menutrans &Credits 고마운\ 분(&C) +menutrans Co&pying 저작권(&p) +menutrans &Sponsor/Register 후원/등록(&S) +menutrans O&rphans 고아(&r) +menutrans &Version 버젼(&V) +menutrans &About 이\ 프로그램은(&A) + +" File menu +menutrans &File 파일(&F) +menutrans &Open\.\.\.:e 열기(&O)\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp 나눠서\ 열기(&l)\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew 탭\ 열기\.\.\.:tabnew +menutrans &New:enew 새로운(&N):enew +menutrans &Close:close 닫기(&C):close +menutrans &Save:w 저장(&S):w +menutrans Save\ &As\.\.\.:sav 다른\ 이름으로\ 저장(&A)\.\.\.:sav +"menutrans Split\ &Diff\ with\.\.\. Split\ &Diff\ with\.\.\. +"menutrans Split\ Patched\ &By\.\.\. Split\ Patched\ &By\.\.\. +menutrans &Print 인쇄(&P) +menutrans Sa&ve-Exit:wqa 저장하고\ 끝내기(&v):wqa +menutrans E&xit:qa 끝내기(&x):qa + +" Edit menu +menutrans &Edit 편집(&E) +menutrans &Undou 취소(&U)u +menutrans &Redo^R 다시\ 실행(&R)^R +menutrans Rep&eat\. 되풀이(&e)\. +menutrans Cu&t"+x 자르기(&t)"+x +menutrans &Copy"+y 복사(&C)"+y +menutrans &Paste"+gP 붙이기(&P)"+gP +menutrans Put\ &Before[p 앞에\ 붙이기(&B)[p +menutrans Put\ &After]p 뒤에\ 붙이기(&A)]p +menutrans &Deletex 지우기(&D)x +menutrans &Select\ AllggVG 모두\ 고르기(&S)ggVG +menutrans &Find\.\.\. 찾기(&F)\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. 찾아서\ 바꾸기(&l)\.\.\. +menutrans Settings\ &Window 설정\ 창(&W) +menutrans Startup\ &Settings 시작\ 설정(&S) + +" Edit/Global Settings +menutrans &Global\ Settings 전역\ 설정(&G) +menutrans Toggle\ Pattern\ &Highlight:set\ hls! 패턴\ 하이라이트\ 토글(&H):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! 대소문자\ 구분\ 토글(&I):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Showmatch\ 토글(&S):set\ sm! +menutrans &Context\ lines 콘텍스트\ 줄(&C) +menutrans &Virtual\ Edit 가상\ 편집(&V) +menutrans Never 사용\ 안\ 함 +menutrans Block\ Selection 블럭\ 고르기 +menutrans Insert\ mode 삽입\ 모드 +menutrans Block\ and\ Insert 블럭과\ 삽입 +menutrans Always 항상\ 사용 +menutrans Toggle\ Insert\ &Mode:set\ im! 삽입\ 모드\ 토글(&M):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vi\ 호환\ 토글(&o):set\ cp! +menutrans Search\ &Path\.\.\. 찾기\ 경로(&P)\.\.\. +menutrans Ta&g\ Files\.\.\. 꼬리표\ 파일(&g)\.\.\. + +" GUI options +menutrans Toggle\ &Toolbar 도구막대\ 토글(&T) +menutrans Toggle\ &Bottom\ Scrollbar 바닥\ 스크롤바\ 토글(&B) +menutrans Toggle\ &Left\ Scrollbar 왼쪽\ 스크롤바\ 토글(&L) +menutrans Toggle\ &Right\ Scrollbar 오른쪽\ 스크롤바\ 토글(&R) + +" Edit/File Settings +menutrans F&ile\ Settings 파일\ 설정(&i) + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! 줄\ 번호붙이기\ 토글(&N):set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! 목록\ 모드\ 토글(&L):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! 줄\ Wrap\ 토글(&W):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! 낱말에서\ Wrap\ 토글(&r):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! 탭\ 확장\ 토글(&e):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! 자동인덴트\ 토글(&a):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! C-인덴팅\ 토글(&C):set\ cin! + +" other options +menutrans &Shiftwidth 쉬프트\ 너비(&S) +menutrans Soft\ &Tabstop 소프트\ 탭스톱(&T) +menutrans Te&xt\ Width\.\.\. 텍스트\ 너비(&x)\.\.\. +menutrans &File\ Format\.\.\. 파일\ 형식(&F)\.\.\. +menutrans C&olor\ Scheme 컬러\ 스킴(&o) +menutrans &Keymap 키맵(&K) + +menutrans Select\ Fo&nt\.\.\. 글꼴\ 고르기(&F)\.\.\. + +" Programming menu +menutrans &Tools 도구(&T) +menutrans &Jump\ to\ this\ tagg^] 이\ 꼬리표로\ 가기(&J)g^] +menutrans Jump\ &back^T 뒤로\ 가기(&b)^T +menutrans Build\ &Tags\ File 꼬리표\ 파일\ 만들기(&T) + +menutrans &Spelling 맞춤법\ 검사(&S) +menutrans &Spell\ Check\ On 맞춤법\ 검사\ 시작(&S) +menutrans Spell\ Check\ &Off 맞춤법\ 검사\ 끝(&O) +menutrans To\ &Next\ error]s 다음\ 에러로(&N)]s +menutrans To\ &Previous\ error[s 이전\ 에러로(&P)[s +menutrans Suggest\ &Correctionsz= 수정\ 제안(&C)z= +menutrans &Repeat\ correction:spellrepall 수정\ 반복(&R):spellrepall +menutrans Set\ language\ to\ "en" 언어를\ "en"으로\ 설정 +menutrans Set\ language\ to\ "en_au" 언어를\ "en_au"로\ 설정 +menutrans Set\ language\ to\ "en_ca" 언어를\ "en_ca"로\ 설정 +menutrans Set\ language\ to\ "en_gb" 언어를\ "en_gb"로\ 설정 +menutrans Set\ language\ to\ "en_nz" 언어를\ "en_nz"으로\ 설정 +menutrans Set\ language\ to\ "en_us" 언어를\ "en_us"로\ 설정 +menutrans &Find\ More\ Languages 다른\ 언어\ 찾기(&F) + +" Tools.Fold Menu +menutrans &Folding 접기(&F) +" open close folds +menutrans &Enable/Disable\ foldszi 접기\ 사용\ 토글(&E)zi +menutrans &View\ Cursor\ Linezv 커서\ 줄\ 보기(&V)zv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx 커서\ 줄만\ 보기(&w)zMzx +menutrans C&lose\ more\ foldszm 더\ 많은\ 접기\ 닫기(&l)zm +menutrans &Close\ all\ foldszM 모든\ 접기\ 닫기(&C)zM +menutrans O&pen\ more\ foldszr 더\ 많은\ 접기\ 열기(&p)zr +menutrans &Open\ all\ foldszR 접힌\ 부분\ 모두\ 펴기(&O)zR +" fold method +menutrans Fold\ Met&hod 접는\ 방법(&h) +menutrans M&anual 수동(&a) +menutrans I&ndent 들여쓰기(&n) +menutrans E&xpression 표현식(&x) +menutrans S&yntax 신택스(&y) +"menutrans &Diff &Diff +menutrans Ma&rker 꼬리표(&r) +" create and delete folds +menutrans Create\ &Foldzf 접기\ 생성(&F)zf +menutrans &Delete\ Foldzd 접기\ 삭제(&D)zd +menutrans Delete\ &All\ FoldszD 모든\ 접기\ 삭제(&A)zD +" moving around in folds +menutrans Fold\ column\ &width 접기\ 컬럼\ 너비(&w) + +"menutrans &Diff &Diff +menutrans &Update 갱신(&U) +menutrans &Get\ Block 블럭\ 가져오기(&G) +menutrans &Put\ Block 블럭\ 집어넣기(&P) + +menutrans &Make:make 빌드(&M):make +menutrans &List\ Errors:cl 에러\ 목록\ 보기(&L):cl +menutrans L&ist\ Messages:cl! 메시지\ 목록\ 보기(&i):cl! +menutrans &Next\ Error:cn 다음\ 에러(&N):cn +menutrans &Previous\ Error:cp 이전\ 에러(&P):cp +menutrans &Older\ List:cold 오래된\ 목록(&O):cold +menutrans N&ewer\ List:cnew 새로운\ 목록(&e):cnew +menutrans Error\ &Window 에러\ 창(&W) +menutrans &Update:cwin 갱신(&U):cwin +menutrans &Open:copen 열기(&O):copen +menutrans &Close:cclose 닫기(&C):cclose +menutrans Se&T\ Compiler 컴파일러\ 설정(&T) +menutrans &Convert\ to\ HEX:%!mc\ vim:xxd 십육진으로\ 변환:%!mc\ vim:xxd +menutrans &Convert\ to\ HEX:%!xxd 십육진으로\ 변환(&C):%!xxd +menutrans Conve&rt\ back:%!mc\ vim:xxd\ -r 원래대로\ 변환(&r):%!mc\ vim:xxd\ -r +menutrans Conve&rt\ back:%!xxd\ -r 원래대로\ 변환(&r):%!xxd\ -r + +" Names for buffer menu. +menutrans &Buffers 버퍼(&B) +menutrans &Refresh\ menu 차림표\ 다시그리기(&R) +menutrans &Delete 지우기(&D) +menutrans &Alternate 교체(&A) +menutrans &Next 다음(&N) +menutrans &Previous 이전(&P) + +" Window menu +menutrans &Window 창(&W) +menutrans &New^Wn 새\ 창(&N)^Wn +menutrans S&plit^Ws 나누기(&p)^Ws +menutrans Sp&lit\ To\ #^W^^ #으로\ 나누기(&l)^W^^ +menutrans Split\ &Vertically^Wv 세로로\ 나누기(&V)^Wv +menutrans Split\ File\ E&xplorer 파일\ 익스플로러\ 나누기 + +menutrans &Close^Wc 닫기(&C)^Wc +menutrans Close\ &Other(s)^Wo 다른\ 창\ 닫기(&O)^Wo + +menutrans Move\ &To 이동(&T) +menutrans &Top^WK 꼭대기(&T)^WK +menutrans &Bottom^WJ 바닥(&B)^WJ +menutrans &Left\ side^WH 왼쪽(&L)^WH +menutrans &Right\ side^WL 오른쪽(&R)^WL +menutrans Rotate\ &Up^WR 위로\ 회전(&U)^WR +menutrans Rotate\ &Down^Wr 아래로\ 회전(&D)^Wr + +menutrans &Equal\ Size^W= 같은\ 높이로(&E)^W= +menutrans &Max\ Height^W_ 최대\ 높이로(&M)^W_ +menutrans M&in\ Height^W1_ 최소\ 높이로(&i)^W1_ +menutrans Max\ &Width^W\| 최대\ 넓이로(&W)^W\| +menutrans Min\ Widt&h^W1\| 최소\ 넓이로(&h)^W1\| + +" The popup menu +menutrans &Undo 취소(&U) +menutrans Cu&t 자르기(&t) +menutrans &Copy 복사(&C) +menutrans &Paste 붙이기(&P) +menutrans &Delete 지우기(&D) +menutrans Select\ Blockwise 사각형\ 고르기 +menutrans Select\ &Word 낱말\ 고르기(&W) +menutrans Select\ &Line 줄\ 고르기(&L) +menutrans Select\ &Block 구획\ 고르기(&B) +menutrans Select\ &All 모두\ 고르기(&A) + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open 파일 열기 + tmenu ToolBar.Save 현재 파일 저장 + tmenu ToolBar.SaveAll 모두 저장 + tmenu ToolBar.Print 인쇄 + tmenu ToolBar.Undo 취소 + tmenu ToolBar.Redo 다시 실행 + tmenu ToolBar.Cut 자르기 + tmenu ToolBar.Copy 복사 + tmenu ToolBar.Paste 붙이기 + tmenu ToolBar.Find 찾기... + tmenu ToolBar.FindNext 다음 찾기 + tmenu ToolBar.FindPrev 이전 찾기 + tmenu ToolBar.Replace 바꾸기 + tmenu ToolBar.LoadSesn 세션 읽어오기 + tmenu ToolBar.SaveSesn 세션 저장 + tmenu ToolBar.RunScript 스크립트 실행 + tmenu ToolBar.Make Make + tmenu ToolBar.Shell 쉘 + tmenu ToolBar.RunCtags 꼬리표 만들기 + tmenu ToolBar.TagJump 꼬리표로 가기 + tmenu ToolBar.Help 도움말 + tmenu ToolBar.FindHelp 도움말 찾기... + endfun +endif + +" Syntax menu +menutrans &Syntax 문법(&S) +menutrans &Show\ filetypes\ in\ menu 모든\ 선택가능한\ 항목\ 보기(&S) +menutrans Set\ '&syntax'\ only 'syntax'만\ 설정(&s) +menutrans Set\ '&filetype'\ too 'filetype'도\ 설정(&f) +menutrans &Off 끄기(&O) +menutrans &Manual 수동(&M) +menutrans A&utomatic 자동(&u) +menutrans on/off\ for\ &This\ file 이\ 파일만\ 켜기/끄기(&T) + +menutrans Co&lor\ test 색\ 시험(&l) +menutrans &Highlight\ test Highlight\ 시험(&H) +menutrans &Convert\ to\ HTML HTML로\ 변환(&C) + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_ko_kr.vim b/share/vim/vim74/lang/menu_ko_kr.vim similarity index 100% rename from share/vim/vim73/lang/menu_ko_kr.vim rename to share/vim/vim74/lang/menu_ko_kr.vim diff --git a/share/vim/vim73/lang/menu_nl.latin1.vim b/share/vim/vim74/lang/menu_nl.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_nl.latin1.vim rename to share/vim/vim74/lang/menu_nl.latin1.vim diff --git a/share/vim/vim73/lang/menu_nl.utf-8.vim b/share/vim/vim74/lang/menu_nl.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_nl.utf-8.vim rename to share/vim/vim74/lang/menu_nl.utf-8.vim diff --git a/share/vim/vim74/lang/menu_nl_nl.latin1.vim b/share/vim/vim74/lang/menu_nl_nl.latin1.vim new file mode 100644 index 00000000..e1d4506c --- /dev/null +++ b/share/vim/vim74/lang/menu_nl_nl.latin1.vim @@ -0,0 +1,245 @@ +" Menu Translations: Nederlands +" Maintainer: Bram Moolenaar +" Last Change: 2012 May 01 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" The translations below are in latin1, but they work for cp1252 and +" iso-8859-15 without conversion as well. +if &enc != "cp1252" && &enc != "iso-8859-15" + scriptencoding latin1 +endif + +" Help menu +menutrans &Help &Help +menutrans &Overview &Overzicht +menutrans &User\ Manual Gebruikershandleiding +menutrans &How-to\ links &Hoe-doe-ik\ lijst +"menutrans &GUI &GUI +menutrans &Credits &Met\ dank\ aan +menutrans Co&pying &Copyright +menutrans &Sponsor/Register &Sponsor/Registreer +menutrans O&rphans &Weeskinderen +menutrans &Version &Versie +menutrans &About &Introductiescherm + +" File menu +menutrans &File &Bestand +menutrans &Open\.\.\.:e &Openen\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp In\ nieuw\ &Venster\ openen\.\.\.:sp +menutrans &New:enew &Nieuw:enew +menutrans &Close:close &Sluiten:close +menutrans &Save:w &Bewaren:w +menutrans Save\ &As\.\.\.:sav Bewaren\ als\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Toon\ diff\ met\.\.\. +menutrans Split\ Patched\ &By\.\.\. Toon\ gewijzigd\ door\.\.\. +menutrans &Print Af&drukken +menutrans Sa&ve-Exit:wqa Bewaren\ en\ Afsluiten:wqa +menutrans E&xit:qa &Afsluiten:qa + +" Edit menu +menutrans &Edit Be&werken +menutrans &Undou Terugu +menutrans &Redo^R Voo&ruit^R +menutrans Rep&eat\. &Herhalen\. +menutrans Cu&t"+x &Knippen"+x +menutrans &Copy"+y K&opiëeren"+y +menutrans &Paste"+gP Plakken"+gP +menutrans Put\ &Before[p Ervoor\ invoegen[p +menutrans Put\ &After]p Erachter\ invoegen]p +menutrans &Select\ allggVG Alles\ &MarkerenggVG +menutrans &Find\.\.\. &Zoeken\.\.\. +menutrans &Find/ &Zoeken/ +menutrans Find\ and\ Rep&lace\.\.\. Zoeken\ en\ &Vervangen\.\.\. +menutrans Find\ and\ Rep&lace:%s Zoeken\ en\ &Vervangen:%s +menutrans Find\ and\ Rep&lace Zoeken\ en\ &Vervangen +menutrans Find\ and\ Rep&lace:s Zoeken\ en\ &Vervangen:s +menutrans Settings\ &Window Optievenster +menutrans &Global\ Settings Globale\ Opties +menutrans F&ile\ Settings Bestandopties +menutrans C&olor\ Scheme Kleurenschema +menutrans &Keymap Toetsenbordindeling + +" Edit.Global Settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Flip\ Patroonkleuring:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Flip\ Negeren\ hoofd/kleine\ letters:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Flip\ Showmatch:set\ sm! +menutrans &Context\ lines Contextregels +menutrans &Virtual\ Edit Virtueel\ positioneren +menutrans Never Nooit +menutrans Block\ Selection Bij\ Blokselectie +menutrans Insert\ mode In\ Invoegmode +menutrans Block\ and\ Insert Bij\ Blokselectie\ en\ Invoegmode +menutrans Always Altijd +menutrans Toggle\ Insert\ &Mode:set\ im! Flip\ Invoegmode:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Flip\ Vi\ Compatibiliteit:set\ cp! +menutrans Search\ &Path\.\.\. Zoekpad\.\.\. +menutrans Ta&g\ Files\.\.\. Tag\ Bestanden\.\.\. +menutrans Toggle\ &Toolbar Toon/verberg\ Knoppenbalk +menutrans Toggle\ &Bottom\ Scrollbar Toon/verberg\ onderste\ schuifbalk +menutrans Toggle\ &Left\ Scrollbar Toon/verberg\ linker\ schuifbalk +menutrans Toggle\ &Right\ Scrollbar Toon/verberg\ rechter\ schuifbalk +menutrans None Geen + +" Edit.File Settings +menutrans Toggle\ Line\ &Numbering:set\ nu! Flip\ regelnummers:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Flip\ list\ mode:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Flip\ regelafbreken:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Flip\ afbreken\ op\ woordgrens:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Flip\ tabexpansie:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Flip\ automatisch\ indenteren:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Flip\ C-indenteren:set\ cin! +menutrans Te&xt\ Width\.\.\. Tekstbreedte\.\.\. +menutrans &File\ Format\.\.\. Bestandsformaat\.\.\. + +" Tools menu +menutrans &Tools &Gereedschap +menutrans &Jump\ to\ this\ tagg^] &Spring\ naar\ Tagg^] +menutrans Jump\ &back^T Spring\ &Terug^T +menutrans Build\ &Tags\ File Genereer\ &Tagsbestand +menutrans &Make:make &Make\ uitvoeren:make +menutrans &List\ Errors:cl &Foutenlijst:cl +menutrans L&ist\ Messages:cl! &Berichtenlijst:cl! +menutrans &Next\ Error:cn Volgende\ Fout:cn +menutrans &Previous\ Error:cp Vorige\ Fout:cp +menutrans &Older\ List:cold &Oudere\ Lijst:cold +menutrans N&ewer\ List:cnew &Nieuwere\ Lijst:cnew +menutrans Error\ &Window Foutenvenster +menutrans &Update:cwin &Aanpassen:cwin +menutrans &Open:copen &Openen:copen +menutrans &Close:cclose &Sluiten:cclose +menutrans &Convert\ to\ HEX:%!xxd Converteer\ naar\ HEX:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Converteer\ terug:%!xxd\ -r +menutrans &Set\ Compiler Kies\ Compiler + +" Tools.Folding +menutrans &Enable/Disable\ foldszi Flip\ tonen\ foldszi +menutrans &View\ Cursor\ Linezv Toon\ cursorregelzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Toon\ alleen\ cursorregelzMzx +menutrans C&lose\ more\ foldszm Sluit\ meer\ foldszm +menutrans &Close\ all\ foldszM Sluit\ alle\ foldszM +menutrans O&pen\ more\ foldszr Open\ meer\ foldszr +menutrans &Open\ all\ foldszR Open\ alle\ foldszR +menutrans Fold\ Met&hod Foldwijze +menutrans M&anual Handmatig +menutrans I&ndent Inspringing +menutrans E&xpression Expressie +menutrans S&yntax Syntax +menutrans &Diff Verschillen +menutrans Ma&rker Markeringen +menutrans Create\ &Foldzf maak\ Foldzf +menutrans &Delete\ Foldzd verwijder\ Foldzd +menutrans Delete\ &All\ FoldszD verwijder\ alle\ FoldszD +menutrans Fold\ column\ &width Fold\ kolom\ breedte + +" Tools.Diff +menutrans &Update Verversen +menutrans &Get\ Block Blok\ ophalen\ van\ ander\ venster +menutrans &Put\ Block Blok\ naar\ ander\ venster + +" Names for buffer menu. +menutrans &Buffers &Buffer +menutrans &Refresh\ menu Ververs\ menu +menutrans &Delete Wissen +menutrans &Alternate Vorige +menutrans &Next Vooruit +menutrans &Previous Achteruit + +" Window menu +menutrans &Window &Venster +menutrans &New^Wn &Nieuw^Wn +menutrans S&plit^Ws Splitsen^Ws +menutrans Sp&lit\ To\ #^W^^ Splits\ naar\ #^W^^ +menutrans Split\ &Vertically^Wv Splits\ &Vertikaal^Wv +menutrans Split\ File\ E&xplorer Splits\ Bestandverkenner +menutrans &Close^Wc &Sluiten^Wc +menutrans Close\ &Other(s)^Wo &Sluit\ alle\ andere^Wo +menutrans Ne&xt^Ww Volgende^Ww +menutrans P&revious^WW &Vorige^WW +menutrans &Equal\ Size^W= &Gelijke\ afmetingen^W= +menutrans &Max\ Height^W_ &Maximale\ hoogte^W_ +menutrans M&in\ Height^W1_ Mi&nimale\ hoogte^W1_ +menutrans Max\ &Width^W\| Maximale\ breedte^W\| +menutrans Min\ Widt&h^W1\| Minimale\ breedte^W1\| +menutrans Move\ &To Verplaats\ naar +menutrans &Top^WK Bovenkant^WK +menutrans &Bottom^WJ Onderkant^WJ +menutrans &Left\ side^WH Linkerkant^WH +menutrans &Right\ side^WL Rechterkant^WL +menutrans Rotate\ &Up^WR Roteren\ naar\ &boven^WR +menutrans Rotate\ &Down^Wr Roteren\ naar\ &onder^Wr +menutrans Select\ Fo&nt\.\.\. Selecteer\ font\.\.\. + +" The popup menu +menutrans &Undo &Terug +menutrans Cu&t Knip +menutrans &Copy &Kopiëer +menutrans &Paste &Plak +menutrans &Delete &Wissen +menutrans Select\ Blockwise Selecteer\ per\ Rechthoek +menutrans Select\ &Word Selecteer\ een\ &Woord +menutrans Select\ &Line Selecteer\ een\ &Regel +menutrans Select\ &Block Selecteer\ een\ Recht&hoek +menutrans Select\ &All Selecteer\ &Alles + +" The GUI toolbar (for Win32 or GTK) +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Bestand openen + tmenu ToolBar.Save Bestand opslaan + tmenu ToolBar.SaveAll Alle bestanden opslaan + tmenu ToolBar.Print afdrukken + tmenu ToolBar.Undo terug + tmenu ToolBar.Redo vooruit + tmenu ToolBar.Cut knippen + tmenu ToolBar.Copy Kopiëren + tmenu ToolBar.Paste Plakken + tmenu ToolBar.Find Zoeken... + tmenu ToolBar.FindNext Zoek volgende + tmenu ToolBar.FindPrev Zoek vorige + tmenu ToolBar.Replace Zoek en vervang... + tmenu ToolBar.LoadSesn Sessie Laden + tmenu ToolBar.SaveSesn Sessie opslaan + tmenu ToolBar.RunScript Vim script uitvoeren + tmenu ToolBar.Make Make uitvoeren + tmenu ToolBar.Shell Shell starten + tmenu ToolBar.RunCtags Tags bestand genereren + tmenu ToolBar.TagJump Spring naar tag + tmenu ToolBar.Help Help! + tmenu ToolBar.FindHelp Help vinden... + endfun +endif + +" Syntax menu +menutrans &Syntax &Syntax +menutrans &Show\ filetypes\ in\ menu Toon\ filetypes\ in\ menu +menutrans Set\ '&syntax'\ only Alleen\ 'syntax'\ wijzigen +menutrans Set\ '&filetype'\ too Ook\ 'filetype'\ wijzigen +menutrans &Off &Uit +menutrans &Manual &Handmatig +menutrans A&utomatic A&utomatisch +menutrans on/off\ for\ &This\ file Aan/Uit\ voor\ dit\ Bestand +menutrans Co&lor\ test Test\ de\ &Kleuren +menutrans &Highlight\ test Test\ de\ Markeringen +menutrans &Convert\ to\ HTML Converteren\ naar\ &HTML +menutrans &Show\ individual\ choices Toon\ elke\ keuze + +" dialog texts +let menutrans_no_file = "[Geen Bestand]" +let menutrans_help_dialog = "Typ een commando of woord om help voor te vinden:\n\nVoeg i_ in voor Input mode commandos (bijv. i_CTRL-X)\nVoeg c_ in voor een commando-regel edit commando (bijv. c_)\nVoeg ' in \voor een optie naam (bijv. 'shiftwidth')" +let g:menutrans_path_dialog = "Typ het zoekpad voor bestanden.\nGebruik commas tussen de padnamen." +let g:menutrans_tags_dialog = "Typ namen van tag bestanden.\nGebruik commas tussen de namen." +let g:menutrans_textwidth_dialog = "Typ de nieuwe tekst breedte (0 om formatteren uit the schakelen): " +let g:menutrans_fileformat_dialog = "Selecteer formaat voor het schrijven van het bestand" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_nl_nl.utf-8.vim b/share/vim/vim74/lang/menu_nl_nl.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_nl_nl.utf-8.vim rename to share/vim/vim74/lang/menu_nl_nl.utf-8.vim diff --git a/share/vim/vim73/lang/menu_no.latin1.vim b/share/vim/vim74/lang/menu_no.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_no.latin1.vim rename to share/vim/vim74/lang/menu_no.latin1.vim diff --git a/share/vim/vim73/lang/menu_no.utf-8.vim b/share/vim/vim74/lang/menu_no.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_no.utf-8.vim rename to share/vim/vim74/lang/menu_no.utf-8.vim diff --git a/share/vim/vim74/lang/menu_no_no.latin1.vim b/share/vim/vim74/lang/menu_no_no.latin1.vim new file mode 100644 index 00000000..a64e3434 --- /dev/null +++ b/share/vim/vim74/lang/menu_no_no.latin1.vim @@ -0,0 +1,238 @@ +" Menu Translations: Norwegian / Norsk (Bokmål) +" Maintainer: Øyvind A. Holm +" Last Change: 2012 May 01 +" menu_no_no.latin1.vim 289 2004-05-16 18:00:52Z sunny + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" The translations below are in ISO-8859-1, but they work for ISO-8859-15 and +" CP1252 without conversion as well. +if &enc != "cp1252" && &enc != "iso-8859-15" + scriptencoding latin1 +endif + +menutrans &File &Fil + menutrans &Open\.\.\.:e &Åpne \.\.\.:e + menutrans Sp&lit-Open\.\.\.:sp Åpne\ i\ nytt\ &vindu \.\.\.:sp + menutrans &New:enew &Ny\ fil:enew + menutrans &Close:close L&ukk:close + menutrans &Save:w &Lagre:w + menutrans Save\ &As\.\.\.:sav Lagre\ s&om \.\.\.:sav + if has("diff") + menutrans Split\ &Diff\ with\.\.\. Sa&mmenlign\ med\ ny\ fil \.\.\. + menutrans Split\ Patched\ &By\.\.\. &Patch\ i\ nytt\ vindu \.\.\. + endif + menutrans &Print &Skriv\ ut + menutrans Sa&ve-Exit:wqa Lagre\ o&g\ avslutt:wqa + menutrans E&xit:qa &Avslutt:qa +menutrans &Edit &Rediger + menutrans &Undou &Angreu + menutrans &Redo^R &Gjenopprett^R + menutrans Rep&eat\. &Repeter\. + menutrans Cu&t"+x &Klipp\ ut"+x + menutrans &Copy"+y K&opier"+y + menutrans &Paste"+gP &Lim\ inn"+gP + menutrans Put\ &Before[p Lim\ i&nn\ før\ markør[p + menutrans Put\ &After]p Lim\ inn\ &etter\ markør]p + menutrans &Select\ AllggVG &Merk\ altggVG + menutrans &Find\.\.\. &Søk \.\.\. + menutrans Find\ and\ Rep&lace\.\.\. S&øk\ og\ erstatt \.\.\. + menutrans Settings\ &Window &Innstillinger + menutrans &Global\ Settings Glo&bale\ innstillinger + menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Utheving\ av\ søketekst\ av/på:set\ hls! + menutrans Toggle\ &Ignore-case:set\ ic! &Forskjell\ mellom\ store/små bokstaver\ av/på:set\ ic! + menutrans Toggle\ &Showmatch:set\ sm! &Indikering\ av\ samsvarende\ parentes\ av/på:set\ sm! + menutrans &Context\ lines &Kontekstlinjer + menutrans &Virtual\ Edit Vi&rtuell\ redigering + menutrans Never &Aldri + menutrans Block\ Selection I\ &blokkmodus + menutrans Insert\ mode I\ &Innsettingsmodus + menutrans Block\ and\ Insert I\ Blokk-\ &og\ innsettingsmodus + menutrans Always A&lltid + menutrans Toggle\ Insert\ &Mode:set\ im! Innsettings&modus\ av/på:set\ im! + menutrans Toggle\ Vi\ C&ompatible:set\ cp! &Vi-kompatiblitet\ av/på:set\ cp! + menutrans Search\ &Path\.\.\. &Søkesti \.\.\. + menutrans Ta&g\ Files\.\.\. Ta&gfiler \.\.\. + menutrans Toggle\ &Toolbar Verkt&øylinje + menutrans Toggle\ &Bottom\ Scrollbar Ne&dre\ rullefelt\ av/på + menutrans Toggle\ &Left\ Scrollbar Ve&nstre\ rullefelt\ av/på + menutrans Toggle\ &Right\ Scrollbar &Høyre\ rullefelt\ av/på + menutrans F&ile\ Settings Filo&ppsett + menutrans Toggle\ Line\ &Numbering:set\ nu! &Linjenummer\ av/på:set\ nu! + menutrans Toggle\ &List\ Mode:set\ list! L&istemodus\ av/på:set\ list! + menutrans Toggle\ Line\ &Wrap:set\ wrap! Li&njebryting\ av/på:set\ wrap! + menutrans Toggle\ W&rap\ at\ word:set\ lbr! Linjebryting\ ved\ &ord\ av/på:set\ lbr! + menutrans Toggle\ &expand-tab:set\ et! Utvidelse\ av\ &tabulatorer\ av/på:set\ et! + menutrans Toggle\ &auto-indent:set\ ai! A&utomatisk\ innrykk\ av/på:set\ ai! + menutrans Toggle\ &C-indenting:set\ cin! &C-innrykk\ av/på:set\ cin! + menutrans &Shiftwidth &Størrelse\ på\ innrykk + menutrans Soft\ &Tabstop &Myke\ tabulatorstopp + menutrans Te&xt\ Width\.\.\. Te&kstbredde \.\.\. + menutrans &File\ Format\.\.\. &Filformat \.\.\. + menutrans C&olor\ Scheme &Fargekart + menutrans &Keymap &Tastaturoppsett + menutrans Select\ Fo&nt\.\.\. Skriftt&ype \.\.\. +menutrans &Tools &Verktøy + menutrans &Jump\ to\ this\ tagg^] &Hopp\ til\ tag\ under\ markørg^] + menutrans Jump\ &back^T Hopp\ &tilbake^T + menutrans Build\ &Tags\ File Lag\ ta&gfil + if has("folding") + menutrans &Folding Fol&der + menutrans &Enable/Disable\ foldszi &Folder\ av/påzi + menutrans &View\ Cursor\ Linezv Se\ &markørlinjezv + menutrans Vie&w\ Cursor\ Line\ onlyzMzx Se\ &bare\ markørlinjenzMzx + menutrans C&lose\ more\ foldszm L&ukk\ flere\ folderzm + menutrans &Close\ all\ foldszM Lukk\ &alle\ folderzM + menutrans O&pen\ more\ foldszr &Åpne\ flere\ folderzr + menutrans &Open\ all\ foldszR Å&pne\ alle\ folderzR + menutrans Fold\ Met&hod Foldme&tode + menutrans M&anual &Manuell + menutrans I&ndent &Innrykk + menutrans E&xpression &Uttrykk + menutrans S&yntax &Syntaks + menutrans &Diff &Forskjeller + menutrans Ma&rker M&arkering + menutrans Create\ &Foldzf La&g\ foldzf + menutrans &Delete\ Foldzd &Slett\ foldzd + menutrans Delete\ &All\ FoldszD Sl&ett\ alle\ folderzD + menutrans Fold\ col&umn\ width Bredde\ på\ fold&kolonne + endif + if has("diff") + menutrans &Diff &Forskjeller + menutrans &Update &Oppdater + menutrans &Get\ Block &Hent\ blokk + menutrans &Put\ Block &Putt\ blokk + endif + menutrans &Make:make &Kjør\ "make":make + menutrans &List\ Errors:cl &List\ feil:cl + menutrans L&ist\ Messages:cl! List\ &meldinger:cl! + menutrans &Next\ Error:cn &Neste\ feil:cn + menutrans &Previous\ Error:cp Fo&rrige\ feil:cp + menutrans &Older\ List:cold &Eldre\ liste:cold + menutrans N&ewer\ List:cnew N&yere\ liste:cnew + menutrans Error\ &Window Fe&ilvindu + menutrans &Update:cwin &Oppdater:cwin + menutrans &Open:copen &Åpne:copen + menutrans &Close:cclose &Lukk:cclose + menutrans &Set\ Compiler &Velg\ kompilator + menutrans &Convert\ to\ HEX:%!xxd Konverter\ til\ hek&sadesimal:%!xxd + menutrans Conve&rt\ back:%!xxd\ -r K&onverter\ tilbake:%!xxd\ -r +menutrans &Syntax &Syntaks + menutrans &Show\ filetypes\ in\ menu &Vis\ filtyper\ i\ menyen + menutrans Set\ '&syntax'\ only Sett\ bare\ '&syntax' + menutrans Set\ '&filetype'\ too Sett\ '&filetype'\ også + menutrans &Off &Av + menutrans &Manual &Manuell + menutrans A&utomatic A&utomatisk + menutrans on/off\ for\ &This\ file Av/på\ for\ &denne\ filen + menutrans Co&lor\ test Far&getest + menutrans &Highlight\ test Uthevings&test + menutrans &Convert\ to\ HTML Konverter\ til\ &HTML +menutrans &Buffers &Buffer + menutrans &Refresh\ menu &Oppdater + menutrans Delete &Slett + menutrans &Alternate &Veksle + menutrans &Next &Neste + menutrans &Previous &Forrige + menutrans [No\ File] [Uten\ navn] +menutrans &Window Vi&ndu + menutrans &New^Wn &Nytt^Wn + menutrans S&plit^Ws &Splitt^Ws + menutrans Sp&lit\ To\ #^W^^ Splitt\ &til\ #^W^^ + menutrans Split\ &Vertically^Wv S&plitt\ loddrett^Ws + menutrans Split\ File\ E&xplorer &Filbehandler + menutrans &Close^Wc &Lukk^Wc + menutrans Close\ &Other(s)^Wo Lukk\ &andre^Wo + menutrans Move\ &To Fl&ytt\ til + menutrans &Top^WK &Toppen^WK + menutrans &Bottom^WJ &Bunnen^WJ + menutrans &Left\ side^WH &Venstre\ side^WH + menutrans &Right\ side^WL &Høyre\ side^WL + menutrans Rotate\ &Up^WR Roter\ &opp^WR + menutrans Rotate\ &Down^Wr &Roter\ ned^Wr + menutrans &Equal\ Size^W= Lik\ st&ørrelse^W= + menutrans &Max\ Height^W_ &Maksimal\ høyde^W_ + menutrans M&in\ Height^W1_ M&inimal\ høyde^W1_ + menutrans Max\ &Width^W\| Ma&ksimal\ bredde^W\| + menutrans Min\ Widt&h^W1\| Minimal\ &bredde^W1\| +menutrans &Help &Hjelp + menutrans &Overview &Oversikt + menutrans &User\ Manual &Brukerhåndbok + menutrans &How-to\ links &Førstehjelp + menutrans &Find\.\.\. &Søk \.\.\. + menutrans &Credits &Kreditering + menutrans Co&pying &Programlisens + menutrans &Sponsor/Register S&tøtte/Registrering + menutrans O&rphans Fo&reldreløse + menutrans &Version &Versjon + menutrans &About &Om\ Vim + +" Popup + menutrans &Undo &Angre + menutrans Cu&t Klipp\ &ut + menutrans &Copy &Kopier + menutrans &Paste &Lim\ inn + menutrans &Delete &Slett + menutrans Select\ Blockwise Marker\ blokk&vis + menutrans Select\ &Word Marker\ &ord + menutrans Select\ &Line Marker\ lin&je + menutrans Select\ &Block Marker\ &blokk + menutrans Select\ &All Marker\ al&t + +" Verktøylinje +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfunction Do_toolbar_tmenu + endif + function Do_toolbar_tmenu() + tmenu ToolBar.Open Åpne fil + tmenu ToolBar.Save Lagre fil + tmenu ToolBar.SaveAll Lagre alle filer + tmenu ToolBar.Print Skriv ut + tmenu ToolBar.Undo Angre + tmenu ToolBar.Redo Gjenopprett + tmenu ToolBar.Cut Klipp + tmenu ToolBar.Copy Kopier + tmenu ToolBar.Paste Lim inn + tmenu ToolBar.Find Søk ... + tmenu ToolBar.FindNext Finn neste + tmenu ToolBar.FindPrev Finn forrige + tmenu ToolBar.Replace Søk og erstatt ... + if 0 " Disabled, they are in the Windows menu + tmenu ToolBar.New Nytt vindu + tmenu ToolBar.WinSplit Splitt vindu + tmenu ToolBar.WinMax Maksimal vindushøyde + tmenu ToolBar.WinMin Minimal vindushøyde + tmenu ToolBar.WinClose Lukk vindu + endif + tmenu ToolBar.LoadSesn Åpne økt + tmenu ToolBar.SaveSesn Lagre økt + tmenu ToolBar.RunScript Kjør Vim-skript + tmenu ToolBar.Make Kjør "make" + tmenu ToolBar.Shell Start skall + tmenu ToolBar.RunCtags Oppdater tag-fil + tmenu ToolBar.TagJump Hopp til tag + tmenu ToolBar.Help Hjelp! + tmenu ToolBar.FindHelp Søk i hjelpen ... + endfunction +endif + +" Dialogmeldinger + let g:menutrans_no_file = "[Uten navn]" + let g:menutrans_help_dialog = "Skriv en kommando eller ord du vil ha hjelp om:\n\nLegg til i_ i begynnelsen for inndatametoder (f.eks.: i_CTRL-X)\nLegg til c_ i begynnelsen for kommandoer som redigerer kommandolinjen (f.eks.: c_)\nLegg til ' i begynnelsen for et valgnavn (f.eks.: 'shiftwidth')" + let g:menutrans_path_dialog = "Skriv søkesti for filer.\nSkill katalognavn med komma." + let g:menutrans_tags_dialog = "Skriv navn på tagfiler.\nSkill navnene med komma." + let g:menutrans_textwidth_dialog = "Velg ny tekstbredde (0 for å forhindre formatering): " + let g:menutrans_fileformat_dialog = "Velg filformat som filen skal lagres med" + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim: set ts=8 sw=8 : +" vim600: set fdm=indent : diff --git a/share/vim/vim73/lang/menu_no_no.utf-8.vim b/share/vim/vim74/lang/menu_no_no.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_no_no.utf-8.vim rename to share/vim/vim74/lang/menu_no_no.utf-8.vim diff --git a/share/vim/vim73/lang/menu_pl.cp1250.vim b/share/vim/vim74/lang/menu_pl.cp1250.vim similarity index 100% rename from share/vim/vim73/lang/menu_pl.cp1250.vim rename to share/vim/vim74/lang/menu_pl.cp1250.vim diff --git a/share/vim/vim73/lang/menu_pl_pl.cp1250.vim b/share/vim/vim74/lang/menu_pl_pl.cp1250.vim similarity index 100% rename from share/vim/vim73/lang/menu_pl_pl.cp1250.vim rename to share/vim/vim74/lang/menu_pl_pl.cp1250.vim diff --git a/share/vim/vim74/lang/menu_pl_pl.iso_8859-2.vim b/share/vim/vim74/lang/menu_pl_pl.iso_8859-2.vim new file mode 100644 index 00000000..7bb7294a --- /dev/null +++ b/share/vim/vim74/lang/menu_pl_pl.iso_8859-2.vim @@ -0,0 +1,292 @@ +" Menu Translations: Polish +" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) +" Initial Translation: Marcin Dalecki +" Last Change: 17 May 2010 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding iso-8859-2 + +" Help menu +menutrans &Help Po&moc +menutrans &Overview &Ogólnie +menutrans &User\ Manual Podrêcznik\ &u¿ytkownika +menutrans &How-to\ links &Odno¶niki\ JTZ +menutrans &Find\.\.\. &Szukaj\.\.\. +menutrans &Credits Po&dziêkowania +menutrans Co&pying &Kopiowanie +menutrans &Sponsor/Register &Sponsorowanie/Rejestracja +menutrans O&rphans Sie&roty +menutrans &Version &Wersja +menutrans &About o\ &Programie + +" File menu +menutrans &File &Plik +menutrans &Open\.\.\.:e &Otwórz\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Otwórz\ z\ &podzia³em\.\.\.:sp +menutrans &New:enew &Nowy:enew +menutrans &Close:close &Zamknij:close +menutrans &Save:w Za&pisz:w +menutrans Save\ &As\.\.\.:sav Zapisz\ &jako\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Podziel\ na\ diff-a\ miêdzy\.\.\. +menutrans Split\ Patched\ &By\.\.\. Podziel\ ³atane\ przez\.\.\. +menutrans &Print &Drukuj +menutrans Sa&ve-Exit:wqa W&yj¶cie\ z\ zapisem:wqa +menutrans E&xit:qa &Wyj¶cie:qa +menutrans Open\ Tab\.\.\.:tabnew Otwórz\ &kartê\.\.\.:tabnew + +" Edit menu +menutrans &Edit &Edycja +menutrans &Undou &Cofniju +menutrans &Redo^R &Ponów^R +menutrans Rep&eat\. P&owtórz\. +menutrans Cu&t"+x W&ytnij"+x +menutrans &Copy"+y &Kopiuj"+y +menutrans &Paste"+gP &Wklej"+gP +menutrans Put\ &Before[p Wstaw\ p&rzed[p +menutrans Put\ &After]p Wstaw\ p&o]p +menutrans &Select\ AllggVG Z&aznacz\ ca³o¶æggVG +menutrans &Find\.\.\. &Szukaj\.\.\. +menutrans &Find/ &Szukaj/ +menutrans Find\ and\ Rep&lace\.\.\. &Zamieñ\.\.\. +menutrans Find\ and\ Rep&lace:%s &Zamieñ:%s +menutrans Find\ and\ Rep&lace &Zamieñ +menutrans Find\ and\ Rep&lace:s &Zamieñ:s +menutrans Options\.\.\. Opcje\.\.\. +menutrans Settings\ &Window Ustawienia +menutrans &Global\ Settings Ustawienia\ &globalne +menutrans Startup\ &Settings Ustawienia\ &startowe +menutrans F&ile\ Settings Ustawienia\ dla\ pliku +menutrans Toggle\ Line\ &Numbering:set\ nu! &Numerowanie\ wierszy:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Tryb\ &listowania:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Za&wijanie\ wierszy:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! £amanie\ wie&rsza:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Rozwijani&e\ tabulatorów:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! &Automatyczne\ wciêcia:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Wciêcia\ &C:set\ cin! +menutrans &Shiftwidth &Szeroko¶æ\ wciêcia +menutrans Te&xt\ Width\.\.\. D³ugo¶æ\ linii\.\.\. +menutrans &File\ Format\.\.\. &Format\ pliku\.\.\. +menutrans Soft\ &Tabstop Rozmiar\ &tabulacji +menutrans C&olor\ Scheme Zestawy\ kolorów +menutrans &Keymap Uk³ady\ klawiatury +menutrans None ¿aden +menutrans accents akcenty +menutrans hebrew hebrajski +menutrans hebrewp hebrajski\ p +menutrans russian-jcuken rosyjski-jcuken +menutrans russian-jcukenwin rosyjski-jcukenwin + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Pod¶wietlanie\ &wzorców:set\ hls! + +menutrans Toggle\ &Ignore-case:set\ ic! &Ignorowanie\ wielko¶ci:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! &Pokazywanie\ pasuj±cych:set\ sm! + +menutrans &Context\ lines Wiersze\ &kontekstowe +menutrans &Virtual\ Edit Edycja\ &wirtualna + +menutrans Never Nigdy +menutrans Block\ Selection Zaznaczanie\ blokowe +menutrans Insert\ mode Tryb\ wprowadzania +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Tryb\ zg&odno¶ci\ z\ Vi:set\ cp! +menutrans Block\ and\ Insert Blokowe\ i\ wprowadzanie +menutrans Always Zawsze + +menutrans Toggle\ Insert\ &Mode:set\ im! Tryb\ wprowadzania:set\ im! +menutrans Search\ &Path\.\.\. Scie¿ka\ poszukiwania\.\.\. +menutrans Ta&g\ Files\.\.\. Pliki\ tagów\.\.\. + + +" +" GUI options +menutrans Toggle\ &Toolbar Pasek\ narzêdzi +menutrans Toggle\ &Bottom\ Scrollbar Dolny\ przewijacz +menutrans Toggle\ &Left\ Scrollbar &Lewy\ przewijacz +menutrans Toggle\ &Right\ Scrollbar P&rawy\ przewijacz + +" Programming menu +menutrans &Tools &Narzêdzia +menutrans &Jump\ to\ this\ tagg^] &Skocz\ do\ tagag^] +menutrans Jump\ &back^T Skok\ w\ &ty³^T +menutrans Build\ &Tags\ File &Twórz\ plik\ tagów +" Spelling +menutrans &Spelling Pi&sownia +menutrans &Spell\ Check\ On W³±cz +menutrans Spell\ Check\ &Off Wy³±cz +menutrans To\ &Next\ error]s Do\ &nastêpnego\ b³êdu]s +menutrans To\ &Previous\ error[s Do\ &poprzedniego\ b³êdu[s +menutrans Suggest\ &Correctionsz= Sugestie\ poprawekz= +menutrans &Repeat\ correction:spellrepall Powtór&z\ poprawkê:spellrepall +menutrans Set\ language\ to\ "en" Ustaw\ jêzyk\ na\ "en" +menutrans Set\ language\ to\ "en_au" Ustaw\ jêzyk\ na\ "en_au" +menutrans Set\ language\ to\ "en_ca" Ustaw\ jêzyk\ na\ "en_ca" +menutrans Set\ language\ to\ "en_gb" Ustaw\ jêzyk\ na\ "en_gb" +menutrans Set\ language\ to\ "en_nz" Ustaw\ jêzyk\ na\ "en_nz" +menutrans Set\ language\ to\ "en_us" Ustaw\ jêzyk\ na\ "en_us" +menutrans Set\ language\ to\ "pl" Ustaw\ jêzyk\ na\ "pl" +menutrans &Find\ More\ Languages &Znajd¼\ wiêcej\ jêzyków + +" Folding +menutrans &Folding &Zwijanie +menutrans &Enable/Disable\ foldszi &Zwiñ/rozwiñzi +menutrans &View\ Cursor\ Linezv &Linia\ kursorazv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Tylko\ linia\ kursorazMzx +menutrans C&lose\ more\ foldszm Zwiñ\ wiêcejzm +menutrans &Close\ all\ foldszM Z&wiñ\ wszystkiezM +menutrans &Open\ all\ foldszR Rozwiñ\ wszystkiezR +menutrans O&pen\ more\ foldszr R&ozwiñ\ wiêcejzr + +menutrans Create\ &Foldzf T&wórz\ zawiniêciezf +menutrans &Delete\ Foldzd U&suñ\ zawiniêciezd +menutrans Delete\ &All\ FoldszD &Usuñ\ wszystkie\ zawiniêciazD +menutrans Fold\ column\ &width Szeroko¶æ\ kolumny\ za&winiêæ +menutrans Fold\ Met&hod Me&toda\ zawijania +menutrans M&anual &Rêcznie +menutrans I&ndent W&ciêcie +menutrans E&xpression W&yra¿enie +menutrans S&yntax S&k³adnia +menutrans Ma&rker Zn&acznik + +" Diff +menutrans &Update &Od¶wie¿ +menutrans &Get\ Block &Pobierz\ blok +menutrans &Put\ Block &Wstaw\ blok + +" Make and stuff... +menutrans &Make:make M&ake:make +menutrans &List\ Errors:cl &Poka¿\ b³êdy:cl +menutrans L&ist\ Messages:cl! W&ylicz\ powiadomienia:cl! +menutrans &Next\ Error:cn &Nastêpny\ b³±d:cn +menutrans &Previous\ Error:cp &Poprzedni\ b³±d:cp +menutrans &Older\ List:cold &Starsza\ lista:cold +menutrans N&ewer\ List:cnew N&owsza\ lista:cnew +menutrans Error\ &Window Okno\ b³êdó&w +menutrans &Update:cwin Akt&ualizuj:cwin +menutrans &Close:cclose &Zamknij:cclose +menutrans &Open:copen &Otwórz:copen + +menutrans Se&T\ Compiler U&staw\ kompilator +menutrans &Convert\ to\ HEX:%!xxd Kody\ szesnastkowe:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Zwyk³y\ tekst:%!xxd\ -r + +" Names for buffer menu. +menutrans &Buffers &Bufory +menutrans &Refresh\ menu &Od¶wie¿ +menutrans &Delete &Skasuj +menutrans &Alternate &Zmieñ +menutrans &Next &Nastêpny +menutrans &Previous &Poprzedni +menutrans [No\ File] [Brak\ Pliku] + +" Window menu +menutrans &Window &Widoki +menutrans &New^Wn &Nowy^Wn +menutrans S&plit^Ws Po&dziel^Ws +menutrans Sp&lit\ To\ #^W^^ P&odziel\ na\ #^W^^ +menutrans Split\ &Vertically^Wv Podziel\ pionowo^Wv +menutrans Split\ File\ E&xplorer Otwórz\ mened¿er\ plików + +menutrans &Close^Wc &Zamknij^Wc +menutrans Close\ &Other(s)^Wo Zamknij\ &inne^Wo +menutrans Ne&xt^Ww &Nastêpny^Ww +menutrans P&revious^WW &Poprzedni^WW +menutrans &Equal\ Size^W= &Wyrównaj\ wysoko¶ci^W= +menutrans &Max\ Height^W_ Z&maksymalizuj\ wysoko¶æ^W_ +menutrans M&in\ Height^W1_ Zminim&alizuj\ wysoko¶æ^W1_ +menutrans Max\ Width^W\| Maksymalna\ szeroko¶æ^W\| +menutrans Min\ Width^W1\| Minimalna\ szeroko¶æ^W1\| +menutrans Max\ &Width^W\| Zmaksymalizuj\ szeroko¶æ^W\| +menutrans Min\ Widt&h^W1\| Zminimalizuj\ szeroko¶æ^W1\| +menutrans Move\ &To &Id¼\ do +menutrans &Top^WK &Góra^WK +menutrans &Bottom^WJ &Dó³^WJ +menutrans &Left\ side^WH &Lewa\ strona^WH +menutrans &Right\ side^WL &Prawa\ strona^WL +menutrans Rotate\ &Up^WR Obróæ\ w\ &górê^WR +menutrans Rotate\ &Down^Wr Obróæ\ w\ &dó³^Wr +menutrans Split\ &Vertically^Wv &Podziel\ w\ poziomie^Wv +menutrans Select\ Fo&nt\.\.\. Wybierz\ &czcionkê\.\.\. + +" The popup menu +menutrans &Undo &Cofnij +menutrans Cu&t W&ytnij +menutrans &Copy &Kopiuj +menutrans &Paste &Wklej +menutrans &Delete &Skasuj +menutrans Select\ Blockwise Zaznacz\ &blok +menutrans Select\ &Sentence Zaznacz\ &zdanie +menutrans Select\ Pa&ragraph Zaznacz\ aka&pit +menutrans Select\ &Word Zaznacz\ &s³owo +menutrans Select\ &Line Zaznacz\ w&iersz +menutrans Select\ &Block Zaznacz\ &blok +menutrans Select\ &All Zaznacz\ c&a³o¶æ +menutrans Input\ &Methods Wprowadza&nie + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Otwórz plik + tmenu ToolBar.Save Zapisz bie¿±cy plik + tmenu ToolBar.SaveAll Zapisz wszystkie pliki + tmenu ToolBar.Print Drukuj + tmenu ToolBar.Undo Cofnij + tmenu ToolBar.Redo Ponów + tmenu ToolBar.Cut Wytnij + tmenu ToolBar.Copy Skopiuj + tmenu ToolBar.Paste Wklej + tmenu ToolBar.Find Szukaj... + tmenu ToolBar.FindNext Szukaj nastêpnego + tmenu ToolBar.FindPrev Szukaj poprzedniego + tmenu ToolBar.Replace Szukaj i zamieniaj... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nowy widok + tmenu ToolBar.WinSplit Podziel widok + tmenu ToolBar.WinMax Zmaksymalizuj widok + tmenu ToolBar.WinMin Zminimalizuj widok + tmenu ToolBar.WinClose Zamknij widok + endif + tmenu ToolBar.LoadSesn Za³aduj sesjê + tmenu ToolBar.SaveSesn Zachowaj bie¿±c± sesjê + tmenu ToolBar.RunScript Uruchom skrypt Vima + tmenu ToolBar.Make Wykonaj bie¿±cy projekt + tmenu ToolBar.Shell Otwórz pow³okê + tmenu ToolBar.RunCtags Twórz tagi w bie¿±cym katalogu + tmenu ToolBar.TagJump Skok do taga pod kursorem + tmenu ToolBar.Help Pomoc Vima + tmenu ToolBar.FindHelp Przeszukuj pomoc Vim-a + endfun +endif + +" Syntax menu +menutrans &Syntax &Sk³adnia +menutrans &Show\ filetypes\ in\ menu Poka¿\ typy\ &plików\ w\ menu +menutrans Set\ '&syntax'\ only Ustaw\ tylko\ '&syntax' +menutrans Set\ '&filetype'\ too Ustaw\ równie¿\ '&filetype' +menutrans &Off &Wy³±cz +menutrans &Manual &Rêcznie +menutrans A&utomatic A&utomatyczne +menutrans on/off\ for\ &This\ file w³±cz/w&y³±cz\ dla\ pliku +menutrans Co&lor\ test Test\ &kolorów +menutrans &Highlight\ test &Test\ pod¶wietlania +menutrans &Convert\ to\ HTML Przetwórz\ na\ &HTML + +" dialog texts +let menutrans_no_file = "[Brak pliku]" +let menutrans_help_dialog = "Wprowad¼ komendê lub s³owo, aby otrzymaæ pomoc o:\n\nPrzedrostek i_ oznacza komendê trybu Wprowadzania (np. i_CTRL-X)\nPrzedrostek c_ oznacza komendê edycji wiersza komend (np. c_)\nPrzedrostek ' oznacza nazwê opcji (np. 'shiftwidth')" +let g:menutrans_path_dialog = "Wprowad¼ ¶cie¿kê poszukiwania plików.\nProszê rozdzielaæ nazwy katalogów przecinkiem." +let g:menutrans_tags_dialog = "Podaj nazwy plików tagów.\nProszê rozdzielaæ nazwy przecinkiem." +let g:menutrans_textwidth_dialog = "Wprowad¼ now± szeroko¶æ tekstu (0 wy³±cza przewijanie): " +let g:menutrans_fileformat_dialog = "Wybierz format w którym ten plik ma byæ zapisany" +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Anuluj" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_pl_pl.utf-8.vim b/share/vim/vim74/lang/menu_pl_pl.utf-8.vim new file mode 100644 index 00000000..871b4fad --- /dev/null +++ b/share/vim/vim74/lang/menu_pl_pl.utf-8.vim @@ -0,0 +1,292 @@ +" Menu Translations: Polish +" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) +" Initial Translation: Marcin Dalecki +" Last Change: 17 May 2010 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +" Help menu +menutrans &Help Po&moc +menutrans &Overview &Ogólnie +menutrans &User\ Manual Podręcznik\ &użytkownika +menutrans &How-to\ links &Odnośniki\ JTZ +menutrans &Find\.\.\. &Szukaj\.\.\. +menutrans &Credits Po&dziękowania +menutrans Co&pying &Kopiowanie +menutrans &Sponsor/Register &Sponsorowanie/Rejestracja +menutrans O&rphans Sie&roty +menutrans &Version &Wersja +menutrans &About o\ &Programie + +" File menu +menutrans &File &Plik +menutrans &Open\.\.\.:e &Otwórz\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Otwórz\ z\ &podziałem\.\.\.:sp +menutrans &New:enew &Nowy:enew +menutrans &Close:close &Zamknij:close +menutrans &Save:w Za&pisz:w +menutrans Save\ &As\.\.\.:sav Zapisz\ &jako\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Podziel\ na\ diff-a\ między\.\.\. +menutrans Split\ Patched\ &By\.\.\. Podziel\ łatane\ przez\.\.\. +menutrans &Print &Drukuj +menutrans Sa&ve-Exit:wqa W&yjście\ z\ zapisem:wqa +menutrans E&xit:qa &Wyjście:qa +menutrans Open\ Tab\.\.\.:tabnew Otwórz\ &kartę\.\.\.:tabnew + +" Edit menu +menutrans &Edit &Edycja +menutrans &Undou &Cofniju +menutrans &Redo^R &Ponów^R +menutrans Rep&eat\. P&owtórz\. +menutrans Cu&t"+x W&ytnij"+x +menutrans &Copy"+y &Kopiuj"+y +menutrans &Paste"+gP &Wklej"+gP +menutrans Put\ &Before[p Wstaw\ p&rzed[p +menutrans Put\ &After]p Wstaw\ p&o]p +menutrans &Select\ AllggVG Z&aznacz\ całośćggVG +menutrans &Find\.\.\. &Szukaj\.\.\. +menutrans &Find/ &Szukaj/ +menutrans Find\ and\ Rep&lace\.\.\. &Zamień\.\.\. +menutrans Find\ and\ Rep&lace:%s &Zamień:%s +menutrans Find\ and\ Rep&lace &Zamień +menutrans Find\ and\ Rep&lace:s &Zamień:s +menutrans Options\.\.\. Opcje\.\.\. +menutrans Settings\ &Window Ustawienia +menutrans &Global\ Settings Ustawienia\ &globalne +menutrans Startup\ &Settings Ustawienia\ &startowe +menutrans F&ile\ Settings Ustawienia\ dla\ pliku +menutrans Toggle\ Line\ &Numbering:set\ nu! &Numerowanie\ wierszy:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Tryb\ &listowania:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Za&wijanie\ wierszy:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Łamanie\ wie&rsza:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Rozwijani&e\ tabulatorów:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! &Automatyczne\ wcięcia:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Wcięcia\ &C:set\ cin! +menutrans &Shiftwidth &Szerokość\ wcięcia +menutrans Te&xt\ Width\.\.\. Długość\ linii\.\.\. +menutrans &File\ Format\.\.\. &Format\ pliku\.\.\. +menutrans Soft\ &Tabstop Rozmiar\ &tabulacji +menutrans C&olor\ Scheme Zestawy\ kolorów +menutrans &Keymap Układy\ klawiatury +menutrans None żaden +menutrans accents akcenty +menutrans hebrew hebrajski +menutrans hebrewp hebrajski\ p +menutrans russian-jcuken rosyjski-jcuken +menutrans russian-jcukenwin rosyjski-jcukenwin + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Podświetlanie\ &wzorców:set\ hls! + +menutrans Toggle\ &Ignore-case:set\ ic! &Ignorowanie\ wielkości:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! &Pokazywanie\ pasujących:set\ sm! + +menutrans &Context\ lines Wiersze\ &kontekstowe +menutrans &Virtual\ Edit Edycja\ &wirtualna + +menutrans Never Nigdy +menutrans Block\ Selection Zaznaczanie\ blokowe +menutrans Insert\ mode Tryb\ wprowadzania +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Tryb\ zg&odności\ z\ Vi:set\ cp! +menutrans Block\ and\ Insert Blokowe\ i\ wprowadzanie +menutrans Always Zawsze + +menutrans Toggle\ Insert\ &Mode:set\ im! Tryb\ wprowadzania:set\ im! +menutrans Search\ &Path\.\.\. Scieżka\ poszukiwania\.\.\. +menutrans Ta&g\ Files\.\.\. Pliki\ tagów\.\.\. + + +" +" GUI options +menutrans Toggle\ &Toolbar Pasek\ narzędzi +menutrans Toggle\ &Bottom\ Scrollbar Dolny\ przewijacz +menutrans Toggle\ &Left\ Scrollbar &Lewy\ przewijacz +menutrans Toggle\ &Right\ Scrollbar P&rawy\ przewijacz + +" Programming menu +menutrans &Tools &Narzędzia +menutrans &Jump\ to\ this\ tagg^] &Skocz\ do\ tagag^] +menutrans Jump\ &back^T Skok\ w\ &tył^T +menutrans Build\ &Tags\ File &Twórz\ plik\ tagów +" Spelling +menutrans &Spelling Pi&sownia +menutrans &Spell\ Check\ On Włącz +menutrans Spell\ Check\ &Off Wyłącz +menutrans To\ &Next\ error]s Do\ &następnego\ błędu]s +menutrans To\ &Previous\ error[s Do\ &poprzedniego\ błędu[s +menutrans Suggest\ &Correctionsz= Sugestie\ poprawekz= +menutrans &Repeat\ correction:spellrepall Powtór&z\ poprawkę:spellrepall +menutrans Set\ language\ to\ "en" Ustaw\ język\ na\ "en" +menutrans Set\ language\ to\ "en_au" Ustaw\ język\ na\ "en_au" +menutrans Set\ language\ to\ "en_ca" Ustaw\ język\ na\ "en_ca" +menutrans Set\ language\ to\ "en_gb" Ustaw\ język\ na\ "en_gb" +menutrans Set\ language\ to\ "en_nz" Ustaw\ język\ na\ "en_nz" +menutrans Set\ language\ to\ "en_us" Ustaw\ język\ na\ "en_us" +menutrans Set\ language\ to\ "pl" Ustaw\ język\ na\ "pl" +menutrans &Find\ More\ Languages &Znajdź\ więcej\ języków + +" Folding +menutrans &Folding &Zwijanie +menutrans &Enable/Disable\ foldszi &Zwiń/rozwińzi +menutrans &View\ Cursor\ Linezv &Linia\ kursorazv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Tylko\ linia\ kursorazMzx +menutrans C&lose\ more\ foldszm Zwiń\ więcejzm +menutrans &Close\ all\ foldszM Z&wiń\ wszystkiezM +menutrans &Open\ all\ foldszR Rozwiń\ wszystkiezR +menutrans O&pen\ more\ foldszr R&ozwiń\ więcejzr + +menutrans Create\ &Foldzf T&wórz\ zawinięciezf +menutrans &Delete\ Foldzd U&suń\ zawinięciezd +menutrans Delete\ &All\ FoldszD &Usuń\ wszystkie\ zawinięciazD +menutrans Fold\ column\ &width Szerokość\ kolumny\ za&winięć +menutrans Fold\ Met&hod Me&toda\ zawijania +menutrans M&anual &Ręcznie +menutrans I&ndent W&cięcie +menutrans E&xpression W&yrażenie +menutrans S&yntax S&kładnia +menutrans Ma&rker Zn&acznik + +" Diff +menutrans &Update &Odśwież +menutrans &Get\ Block &Pobierz\ blok +menutrans &Put\ Block &Wstaw\ blok + +" Make and stuff... +menutrans &Make:make M&ake:make +menutrans &List\ Errors:cl &Pokaż\ błędy:cl +menutrans L&ist\ Messages:cl! W&ylicz\ powiadomienia:cl! +menutrans &Next\ Error:cn &Następny\ błąd:cn +menutrans &Previous\ Error:cp &Poprzedni\ błąd:cp +menutrans &Older\ List:cold &Starsza\ lista:cold +menutrans N&ewer\ List:cnew N&owsza\ lista:cnew +menutrans Error\ &Window Okno\ błędó&w +menutrans &Update:cwin Akt&ualizuj:cwin +menutrans &Close:cclose &Zamknij:cclose +menutrans &Open:copen &Otwórz:copen + +menutrans Se&T\ Compiler U&staw\ kompilator +menutrans &Convert\ to\ HEX:%!xxd Kody\ szesnastkowe:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Zwykły\ tekst:%!xxd\ -r + +" Names for buffer menu. +menutrans &Buffers &Bufory +menutrans &Refresh\ menu &Odśwież +menutrans &Delete &Skasuj +menutrans &Alternate &Zmień +menutrans &Next &Następny +menutrans &Previous &Poprzedni +menutrans [No\ File] [Brak\ Pliku] + +" Window menu +menutrans &Window &Widoki +menutrans &New^Wn &Nowy^Wn +menutrans S&plit^Ws Po&dziel^Ws +menutrans Sp&lit\ To\ #^W^^ P&odziel\ na\ #^W^^ +menutrans Split\ &Vertically^Wv Podziel\ pionowo^Wv +menutrans Split\ File\ E&xplorer Otwórz\ menedżer\ plików + +menutrans &Close^Wc &Zamknij^Wc +menutrans Close\ &Other(s)^Wo Zamknij\ &inne^Wo +menutrans Ne&xt^Ww &Następny^Ww +menutrans P&revious^WW &Poprzedni^WW +menutrans &Equal\ Size^W= &Wyrównaj\ wysokości^W= +menutrans &Max\ Height^W_ Z&maksymalizuj\ wysokość^W_ +menutrans M&in\ Height^W1_ Zminim&alizuj\ wysokość^W1_ +menutrans Max\ Width^W\| Maksymalna\ szerokość^W\| +menutrans Min\ Width^W1\| Minimalna\ szerokość^W1\| +menutrans Max\ &Width^W\| Zmaksymalizuj\ szerokość^W\| +menutrans Min\ Widt&h^W1\| Zminimalizuj\ szerokość^W1\| +menutrans Move\ &To &Idź\ do +menutrans &Top^WK &Góra^WK +menutrans &Bottom^WJ &Dół^WJ +menutrans &Left\ side^WH &Lewa\ strona^WH +menutrans &Right\ side^WL &Prawa\ strona^WL +menutrans Rotate\ &Up^WR Obróć\ w\ &górę^WR +menutrans Rotate\ &Down^Wr Obróć\ w\ &dół^Wr +menutrans Split\ &Vertically^Wv &Podziel\ w\ poziomie^Wv +menutrans Select\ Fo&nt\.\.\. Wybierz\ &czcionkę\.\.\. + +" The popup menu +menutrans &Undo &Cofnij +menutrans Cu&t W&ytnij +menutrans &Copy &Kopiuj +menutrans &Paste &Wklej +menutrans &Delete &Skasuj +menutrans Select\ Blockwise Zaznacz\ &blok +menutrans Select\ &Sentence Zaznacz\ &zdanie +menutrans Select\ Pa&ragraph Zaznacz\ aka&pit +menutrans Select\ &Word Zaznacz\ &słowo +menutrans Select\ &Line Zaznacz\ w&iersz +menutrans Select\ &Block Zaznacz\ &blok +menutrans Select\ &All Zaznacz\ c&ałość +menutrans Input\ &Methods Wprowadza&nie + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Otwórz plik + tmenu ToolBar.Save Zapisz bieżący plik + tmenu ToolBar.SaveAll Zapisz wszystkie pliki + tmenu ToolBar.Print Drukuj + tmenu ToolBar.Undo Cofnij + tmenu ToolBar.Redo Ponów + tmenu ToolBar.Cut Wytnij + tmenu ToolBar.Copy Skopiuj + tmenu ToolBar.Paste Wklej + tmenu ToolBar.Find Szukaj... + tmenu ToolBar.FindNext Szukaj następnego + tmenu ToolBar.FindPrev Szukaj poprzedniego + tmenu ToolBar.Replace Szukaj i zamieniaj... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nowy widok + tmenu ToolBar.WinSplit Podziel widok + tmenu ToolBar.WinMax Zmaksymalizuj widok + tmenu ToolBar.WinMin Zminimalizuj widok + tmenu ToolBar.WinClose Zamknij widok + endif + tmenu ToolBar.LoadSesn Załaduj sesję + tmenu ToolBar.SaveSesn Zachowaj bieżącą sesję + tmenu ToolBar.RunScript Uruchom skrypt Vima + tmenu ToolBar.Make Wykonaj bieżący projekt + tmenu ToolBar.Shell Otwórz powłokę + tmenu ToolBar.RunCtags Twórz tagi w bieżącym katalogu + tmenu ToolBar.TagJump Skok do taga pod kursorem + tmenu ToolBar.Help Pomoc Vima + tmenu ToolBar.FindHelp Przeszukuj pomoc Vim-a + endfun +endif + +" Syntax menu +menutrans &Syntax &Składnia +menutrans &Show\ filetypes\ in\ menu Pokaż\ typy\ &plików\ w\ menu +menutrans Set\ '&syntax'\ only Ustaw\ tylko\ '&syntax' +menutrans Set\ '&filetype'\ too Ustaw\ również\ '&filetype' +menutrans &Off &Wyłącz +menutrans &Manual &Ręcznie +menutrans A&utomatic A&utomatyczne +menutrans on/off\ for\ &This\ file włącz/w&yłącz\ dla\ pliku +menutrans Co&lor\ test Test\ &kolorów +menutrans &Highlight\ test &Test\ podświetlania +menutrans &Convert\ to\ HTML Przetwórz\ na\ &HTML + +" dialog texts +let menutrans_no_file = "[Brak pliku]" +let menutrans_help_dialog = "Wprowadź komendę lub słowo, aby otrzymać pomoc o:\n\nPrzedrostek i_ oznacza komendę trybu Wprowadzania (np. i_CTRL-X)\nPrzedrostek c_ oznacza komendę edycji wiersza komend (np. c_)\nPrzedrostek ' oznacza nazwę opcji (np. 'shiftwidth')" +let g:menutrans_path_dialog = "Wprowadź ścieżkę poszukiwania plików.\nProszę rozdzielać nazwy katalogów przecinkiem." +let g:menutrans_tags_dialog = "Podaj nazwy plików tagów.\nProszę rozdzielać nazwy przecinkiem." +let g:menutrans_textwidth_dialog = "Wprowadź nową szerokość tekstu (0 wyłącza przewijanie): " +let g:menutrans_fileformat_dialog = "Wybierz format w którym ten plik ma być zapisany" +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Anuluj" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_polish_poland.1250.vim b/share/vim/vim74/lang/menu_polish_poland.1250.vim new file mode 100644 index 00000000..9dde00dd --- /dev/null +++ b/share/vim/vim74/lang/menu_polish_poland.1250.vim @@ -0,0 +1,292 @@ +" Menu Translations: Polish +" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) +" Initial Translation: Marcin Dalecki +" Last Change: 17 May 2010 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding cp1250 + +" Help menu +menutrans &Help Po&moc +menutrans &Overview &Ogólnie +menutrans &User\ Manual Podrêcznik\ &u¿ytkownika +menutrans &How-to\ links &Odnoœniki\ JTZ +menutrans &Find\.\.\. &Szukaj\.\.\. +menutrans &Credits Po&dziêkowania +menutrans Co&pying &Kopiowanie +menutrans &Sponsor/Register &Sponsorowanie/Rejestracja +menutrans O&rphans Sie&roty +menutrans &Version &Wersja +menutrans &About o\ &Programie + +" File menu +menutrans &File &Plik +menutrans &Open\.\.\.:e &Otwórz\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Otwórz\ z\ &podzia³em\.\.\.:sp +menutrans &New:enew &Nowy:enew +menutrans &Close:close &Zamknij:close +menutrans &Save:w Za&pisz:w +menutrans Save\ &As\.\.\.:sav Zapisz\ &jako\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Podziel\ na\ diff-a\ miêdzy\.\.\. +menutrans Split\ Patched\ &By\.\.\. Podziel\ ³atane\ przez\.\.\. +menutrans &Print &Drukuj +menutrans Sa&ve-Exit:wqa W&yjœcie\ z\ zapisem:wqa +menutrans E&xit:qa &Wyjœcie:qa +menutrans Open\ Tab\.\.\.:tabnew Otwórz\ &kartê\.\.\.:tabnew + +" Edit menu +menutrans &Edit &Edycja +menutrans &Undou &Cofniju +menutrans &Redo^R &Ponów^R +menutrans Rep&eat\. P&owtórz\. +menutrans Cu&t"+x W&ytnij"+x +menutrans &Copy"+y &Kopiuj"+y +menutrans &Paste"+gP &Wklej"+gP +menutrans Put\ &Before[p Wstaw\ p&rzed[p +menutrans Put\ &After]p Wstaw\ p&o]p +menutrans &Select\ AllggVG Z&aznacz\ ca³oœæggVG +menutrans &Find\.\.\. &Szukaj\.\.\. +menutrans &Find/ &Szukaj/ +menutrans Find\ and\ Rep&lace\.\.\. &Zamieñ\.\.\. +menutrans Find\ and\ Rep&lace:%s &Zamieñ:%s +menutrans Find\ and\ Rep&lace &Zamieñ +menutrans Find\ and\ Rep&lace:s &Zamieñ:s +menutrans Options\.\.\. Opcje\.\.\. +menutrans Settings\ &Window Ustawienia +menutrans &Global\ Settings Ustawienia\ &globalne +menutrans Startup\ &Settings Ustawienia\ &startowe +menutrans F&ile\ Settings Ustawienia\ dla\ pliku +menutrans Toggle\ Line\ &Numbering:set\ nu! &Numerowanie\ wierszy:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Tryb\ &listowania:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Za&wijanie\ wierszy:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! £amanie\ wie&rsza:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Rozwijani&e\ tabulatorów:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! &Automatyczne\ wciêcia:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Wciêcia\ &C:set\ cin! +menutrans &Shiftwidth &Szerokoœæ\ wciêcia +menutrans Te&xt\ Width\.\.\. D³ugoœæ\ linii\.\.\. +menutrans &File\ Format\.\.\. &Format\ pliku\.\.\. +menutrans Soft\ &Tabstop Rozmiar\ &tabulacji +menutrans C&olor\ Scheme Zestawy\ kolorów +menutrans &Keymap Uk³ady\ klawiatury +menutrans None ¿aden +menutrans accents akcenty +menutrans hebrew hebrajski +menutrans hebrewp hebrajski\ p +menutrans russian-jcuken rosyjski-jcuken +menutrans russian-jcukenwin rosyjski-jcukenwin + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Podœwietlanie\ &wzorców:set\ hls! + +menutrans Toggle\ &Ignore-case:set\ ic! &Ignorowanie\ wielkoœci:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! &Pokazywanie\ pasuj¹cych:set\ sm! + +menutrans &Context\ lines Wiersze\ &kontekstowe +menutrans &Virtual\ Edit Edycja\ &wirtualna + +menutrans Never Nigdy +menutrans Block\ Selection Zaznaczanie\ blokowe +menutrans Insert\ mode Tryb\ wprowadzania +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Tryb\ zg&odnoœci\ z\ Vi:set\ cp! +menutrans Block\ and\ Insert Blokowe\ i\ wprowadzanie +menutrans Always Zawsze + +menutrans Toggle\ Insert\ &Mode:set\ im! Tryb\ wprowadzania:set\ im! +menutrans Search\ &Path\.\.\. Scie¿ka\ poszukiwania\.\.\. +menutrans Ta&g\ Files\.\.\. Pliki\ tagów\.\.\. + + +" +" GUI options +menutrans Toggle\ &Toolbar Pasek\ narzêdzi +menutrans Toggle\ &Bottom\ Scrollbar Dolny\ przewijacz +menutrans Toggle\ &Left\ Scrollbar &Lewy\ przewijacz +menutrans Toggle\ &Right\ Scrollbar P&rawy\ przewijacz + +" Programming menu +menutrans &Tools &Narzêdzia +menutrans &Jump\ to\ this\ tagg^] &Skocz\ do\ tagag^] +menutrans Jump\ &back^T Skok\ w\ &ty³^T +menutrans Build\ &Tags\ File &Twórz\ plik\ tagów +" Spelling +menutrans &Spelling Pi&sownia +menutrans &Spell\ Check\ On W³¹cz +menutrans Spell\ Check\ &Off Wy³¹cz +menutrans To\ &Next\ error]s Do\ &nastêpnego\ b³êdu]s +menutrans To\ &Previous\ error[s Do\ &poprzedniego\ b³êdu[s +menutrans Suggest\ &Correctionsz= Sugestie\ poprawekz= +menutrans &Repeat\ correction:spellrepall Powtór&z\ poprawkê:spellrepall +menutrans Set\ language\ to\ "en" Ustaw\ jêzyk\ na\ "en" +menutrans Set\ language\ to\ "en_au" Ustaw\ jêzyk\ na\ "en_au" +menutrans Set\ language\ to\ "en_ca" Ustaw\ jêzyk\ na\ "en_ca" +menutrans Set\ language\ to\ "en_gb" Ustaw\ jêzyk\ na\ "en_gb" +menutrans Set\ language\ to\ "en_nz" Ustaw\ jêzyk\ na\ "en_nz" +menutrans Set\ language\ to\ "en_us" Ustaw\ jêzyk\ na\ "en_us" +menutrans Set\ language\ to\ "pl" Ustaw\ jêzyk\ na\ "pl" +menutrans &Find\ More\ Languages &ZnajdŸ\ wiêcej\ jêzyków + +" Folding +menutrans &Folding &Zwijanie +menutrans &Enable/Disable\ foldszi &Zwiñ/rozwiñzi +menutrans &View\ Cursor\ Linezv &Linia\ kursorazv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Tylko\ linia\ kursorazMzx +menutrans C&lose\ more\ foldszm Zwiñ\ wiêcejzm +menutrans &Close\ all\ foldszM Z&wiñ\ wszystkiezM +menutrans &Open\ all\ foldszR Rozwiñ\ wszystkiezR +menutrans O&pen\ more\ foldszr R&ozwiñ\ wiêcejzr + +menutrans Create\ &Foldzf T&wórz\ zawiniêciezf +menutrans &Delete\ Foldzd U&suñ\ zawiniêciezd +menutrans Delete\ &All\ FoldszD &Usuñ\ wszystkie\ zawiniêciazD +menutrans Fold\ column\ &width Szerokoœæ\ kolumny\ za&winiêæ +menutrans Fold\ Met&hod Me&toda\ zawijania +menutrans M&anual &Rêcznie +menutrans I&ndent W&ciêcie +menutrans E&xpression W&yra¿enie +menutrans S&yntax S&k³adnia +menutrans Ma&rker Zn&acznik + +" Diff +menutrans &Update &Odœwie¿ +menutrans &Get\ Block &Pobierz\ blok +menutrans &Put\ Block &Wstaw\ blok + +" Make and stuff... +menutrans &Make:make M&ake:make +menutrans &List\ Errors:cl &Poka¿\ b³êdy:cl +menutrans L&ist\ Messages:cl! W&ylicz\ powiadomienia:cl! +menutrans &Next\ Error:cn &Nastêpny\ b³¹d:cn +menutrans &Previous\ Error:cp &Poprzedni\ b³¹d:cp +menutrans &Older\ List:cold &Starsza\ lista:cold +menutrans N&ewer\ List:cnew N&owsza\ lista:cnew +menutrans Error\ &Window Okno\ b³êdó&w +menutrans &Update:cwin Akt&ualizuj:cwin +menutrans &Close:cclose &Zamknij:cclose +menutrans &Open:copen &Otwórz:copen + +menutrans Se&T\ Compiler U&staw\ kompilator +menutrans &Convert\ to\ HEX:%!xxd Kody\ szesnastkowe:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Zwyk³y\ tekst:%!xxd\ -r + +" Names for buffer menu. +menutrans &Buffers &Bufory +menutrans &Refresh\ menu &Odœwie¿ +menutrans &Delete &Skasuj +menutrans &Alternate &Zmieñ +menutrans &Next &Nastêpny +menutrans &Previous &Poprzedni +menutrans [No\ File] [Brak\ Pliku] + +" Window menu +menutrans &Window &Widoki +menutrans &New^Wn &Nowy^Wn +menutrans S&plit^Ws Po&dziel^Ws +menutrans Sp&lit\ To\ #^W^^ P&odziel\ na\ #^W^^ +menutrans Split\ &Vertically^Wv Podziel\ pionowo^Wv +menutrans Split\ File\ E&xplorer Otwórz\ mened¿er\ plików + +menutrans &Close^Wc &Zamknij^Wc +menutrans Close\ &Other(s)^Wo Zamknij\ &inne^Wo +menutrans Ne&xt^Ww &Nastêpny^Ww +menutrans P&revious^WW &Poprzedni^WW +menutrans &Equal\ Size^W= &Wyrównaj\ wysokoœci^W= +menutrans &Max\ Height^W_ Z&maksymalizuj\ wysokoœæ^W_ +menutrans M&in\ Height^W1_ Zminim&alizuj\ wysokoœæ^W1_ +menutrans Max\ Width^W\| Maksymalna\ szerokoœæ^W\| +menutrans Min\ Width^W1\| Minimalna\ szerokoœæ^W1\| +menutrans Max\ &Width^W\| Zmaksymalizuj\ szerokoœæ^W\| +menutrans Min\ Widt&h^W1\| Zminimalizuj\ szerokoœæ^W1\| +menutrans Move\ &To &IdŸ\ do +menutrans &Top^WK &Góra^WK +menutrans &Bottom^WJ &Dó³^WJ +menutrans &Left\ side^WH &Lewa\ strona^WH +menutrans &Right\ side^WL &Prawa\ strona^WL +menutrans Rotate\ &Up^WR Obróæ\ w\ &górê^WR +menutrans Rotate\ &Down^Wr Obróæ\ w\ &dó³^Wr +menutrans Split\ &Vertically^Wv &Podziel\ w\ poziomie^Wv +menutrans Select\ Fo&nt\.\.\. Wybierz\ &czcionkê\.\.\. + +" The popup menu +menutrans &Undo &Cofnij +menutrans Cu&t W&ytnij +menutrans &Copy &Kopiuj +menutrans &Paste &Wklej +menutrans &Delete &Skasuj +menutrans Select\ Blockwise Zaznacz\ &blok +menutrans Select\ &Sentence Zaznacz\ &zdanie +menutrans Select\ Pa&ragraph Zaznacz\ aka&pit +menutrans Select\ &Word Zaznacz\ &s³owo +menutrans Select\ &Line Zaznacz\ w&iersz +menutrans Select\ &Block Zaznacz\ &blok +menutrans Select\ &All Zaznacz\ c&a³oœæ +menutrans Input\ &Methods Wprowadza&nie + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Otwórz plik + tmenu ToolBar.Save Zapisz bie¿¹cy plik + tmenu ToolBar.SaveAll Zapisz wszystkie pliki + tmenu ToolBar.Print Drukuj + tmenu ToolBar.Undo Cofnij + tmenu ToolBar.Redo Ponów + tmenu ToolBar.Cut Wytnij + tmenu ToolBar.Copy Skopiuj + tmenu ToolBar.Paste Wklej + tmenu ToolBar.Find Szukaj... + tmenu ToolBar.FindNext Szukaj nastêpnego + tmenu ToolBar.FindPrev Szukaj poprzedniego + tmenu ToolBar.Replace Szukaj i zamieniaj... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nowy widok + tmenu ToolBar.WinSplit Podziel widok + tmenu ToolBar.WinMax Zmaksymalizuj widok + tmenu ToolBar.WinMin Zminimalizuj widok + tmenu ToolBar.WinClose Zamknij widok + endif + tmenu ToolBar.LoadSesn Za³aduj sesjê + tmenu ToolBar.SaveSesn Zachowaj bie¿¹c¹ sesjê + tmenu ToolBar.RunScript Uruchom skrypt Vima + tmenu ToolBar.Make Wykonaj bie¿¹cy projekt + tmenu ToolBar.Shell Otwórz pow³okê + tmenu ToolBar.RunCtags Twórz tagi w bie¿¹cym katalogu + tmenu ToolBar.TagJump Skok do taga pod kursorem + tmenu ToolBar.Help Pomoc Vima + tmenu ToolBar.FindHelp Przeszukuj pomoc Vim-a + endfun +endif + +" Syntax menu +menutrans &Syntax &Sk³adnia +menutrans &Show\ filetypes\ in\ menu Poka¿\ typy\ &plików\ w\ menu +menutrans Set\ '&syntax'\ only Ustaw\ tylko\ '&syntax' +menutrans Set\ '&filetype'\ too Ustaw\ równie¿\ '&filetype' +menutrans &Off &Wy³¹cz +menutrans &Manual &Rêcznie +menutrans A&utomatic A&utomatyczne +menutrans on/off\ for\ &This\ file w³¹cz/w&y³¹cz\ dla\ pliku +menutrans Co&lor\ test Test\ &kolorów +menutrans &Highlight\ test &Test\ podœwietlania +menutrans &Convert\ to\ HTML Przetwórz\ na\ &HTML + +" dialog texts +let menutrans_no_file = "[Brak pliku]" +let menutrans_help_dialog = "WprowadŸ komendê lub s³owo, aby otrzymaæ pomoc o:\n\nPrzedrostek i_ oznacza komendê trybu Wprowadzania (np. i_CTRL-X)\nPrzedrostek c_ oznacza komendê edycji wiersza komend (np. c_)\nPrzedrostek ' oznacza nazwê opcji (np. 'shiftwidth')" +let g:menutrans_path_dialog = "WprowadŸ œcie¿kê poszukiwania plików.\nProszê rozdzielaæ nazwy katalogów przecinkiem." +let g:menutrans_tags_dialog = "Podaj nazwy plików tagów.\nProszê rozdzielaæ nazwy przecinkiem." +let g:menutrans_textwidth_dialog = "WprowadŸ now¹ szerokoœæ tekstu (0 wy³¹cza przewijanie): " +let g:menutrans_fileformat_dialog = "Wybierz format w którym ten plik ma byæ zapisany" +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Anuluj" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_pt_br.latin1.vim b/share/vim/vim74/lang/menu_pt_br.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_pt_br.latin1.vim rename to share/vim/vim74/lang/menu_pt_br.latin1.vim diff --git a/share/vim/vim73/lang/menu_pt_br.utf-8.vim b/share/vim/vim74/lang/menu_pt_br.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_pt_br.utf-8.vim rename to share/vim/vim74/lang/menu_pt_br.utf-8.vim diff --git a/share/vim/vim74/lang/menu_pt_br.vim b/share/vim/vim74/lang/menu_pt_br.vim new file mode 100644 index 00000000..f4980ef5 --- /dev/null +++ b/share/vim/vim74/lang/menu_pt_br.vim @@ -0,0 +1,290 @@ +" Menu Translations: Português do Brasil +" Maintainer: José de Paula +" Last Change: 2012 May 01 +" + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" Translations in latin1 (ISO-8859-1), and should work in +" latin9 (ISO-8859-15) + +if &enc != "cp1252" && &enc != "iso-8859-15" + scriptencoding latin1 +endif + +" Help menu +menutrans &Help A&juda +menutrans &Overview &Conteúdo +menutrans &User\ Manual &Manual\ do\ Usuário +menutrans &How-to\ links &Como\ fazer? +menutrans &Find\.\.\. &Procurar\.\.\. +menutrans &Credits &Créditos +menutrans O&rphans &Órfãos +menutrans Co&pying &Licença +menutrans &Sponsor/Register &Doar/Registrar +menutrans &Version &Versão +menutrans &About &Sobre + +" File menu +menutrans &File &Arquivo +menutrans &Open\.\.\.:e A&brir\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Ab&rir\ em\ outra\ janela\.\.\.:sp +menutrans &New:enew &Novo:enew +menutrans &Close:close &Fechar:close +menutrans &Save:w &Salvar:w +menutrans Save\ &As\.\.\.:sav Sa&lvar\ como\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. &Exibir\ diferenças\ com\.\.\. +menutrans Split\ Patched\ &By\.\.\. Ex&ibir\ patcheado\ por\.\.\. +menutrans &Print I&mprimir +menutrans Sa&ve-Exit:wqa Sal&var\ e\ sair:wqa +menutrans E&xit:qa Sai&r:qa + +" Edit menu +menutrans &Edit &Editar +menutrans &Undou &Desfazeru +menutrans &Redo^R &Refazeru +menutrans Rep&eat\. Repe&tir\. +menutrans Cu&t"+x Re&cortar"+x +menutrans &Copy"+y Cop&iar"+y +menutrans &Paste"+gP C&olar"+gP +menutrans Put\ &Before[p Colocar\ &antes[p +menutrans Put\ &After]p Colocar\ &depois]p +menutrans &Select\ allggVG &Selecionar\ tudoggVG +menutrans &Find\.\.\. &Procurar\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Procurar\ e\ substit&uir\.\.\. +menutrans Find\ and\ Rep&lace:%s Procurar\ e\ substit&uir:%s +menutrans Find\ and\ Rep&lace Procurar\ e\ substit&uir +menutrans Find\ and\ Rep&lace:s Procurar\ e\ substituir:s +menutrans Settings\ &Window &Opções +menutrans Startup\ &Settings &Inicialização + +" Edit/Global Settings +menutrans &Global\ Settings Opções\ &Globais + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Ativar/Desativar\ &Realce\ de\ Padrões:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Ativar/Desativar\ &Ignorar\ maiúsculas:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Ativar/Desativar\ &coincidências:set\ sm! + +menutrans &Context\ lines Linhas\ de\ C&ontexto + +menutrans &Virtual\ Edit Edição\ &Virtual +menutrans Never Nunca +menutrans Block\ Selection Seleção\ de\ Bloco +menutrans Insert\ mode Modo\ de\ inserção +menutrans Block\ and\ Insert Bloco\ e\ inserção +menutrans Always Sempre + +menutrans Toggle\ Insert\ &Mode:set\ im! Ativar/Desativar\ Modo\ de\ In&serção:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Ativar/Desativar\ Co&mpatibilidade\ com\ Vi:set\ cp! +menutrans Search\ &Path\.\.\. Camin&ho\ de\ Busca\.\.\. +menutrans Ta&g\ Files\.\.\. Arquivos\ de\ Tags\.\.\. + +" GUI options +menutrans Toggle\ &Toolbar Ocultar/Exibir\ Barra\ de\ &Ferramentas +menutrans Toggle\ &Bottom\ Scrollbar Ocultar/Exibir\ Barra\ de\ &Rolagem\ Inferior +menutrans Toggle\ &Left\ Scrollbar Ocultar/Exibir\ Barra\ de\ R&olagem\ Esquerda +menutrans Toggle\ &Right\ Scrollbar Ocultar/Exibir\ Barra\ de\ Ro&lagem\ Direita +let g:menutrans_path_dialog = "Indique um caminho de procura para os arquivos.\nSepare os nomes dos diretórios com uma vírgula." +let g:menutrans_tags_dialog = "Indique os nomes dos arquivos de tags.\nSepare os nomes com uma vírgula." + +" Edit/File Settings +menutrans F&ile\ Settings Opções\ do\ &Arquivo + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! Ativar/Desativar\ &numeração\ de\ linhas:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Ativar/Desativar\ modo\ &list:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Ativar/Desativar\ &quebra\ de\ linhas:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Ativar/Desativar\ quebra\ na\ &palavra:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Ativar/Desativar\ expansão de tabs:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Ativar/Desativar\ &auto-indentação:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Ativar/Desativar\ indentação estilo &C:set\ cin! + +" other options +menutrans &Shiftwidth Largura\ da\ &indentação + +menutrans Soft\ &Tabstop &Tabulação\ com\ espaços + +menutrans Te&xt\ Width\.\.\. Largura\ do\ te&xto\.\.\. +let g:menutrans_textwidth_dialog = "Digite a nova largura do texto (0 para desativar a formatação): " + +menutrans &File\ Format\.\.\. &Formato\ do\ arquivo\.\.\. +let g:menutrans_fileformat_dialog = "Selecione o formato para gravar o arquivo" + +menutrans C&olor\ Scheme Esquema\ de\ c&ores +menutrans default padrão + +menutrans Select\ Fo&nt\.\.\. Selecionar\ fo&nte\.\.\. + +menutrans &Keymap &Mapa\ de\ teclado +menutrans None Nenhum + +" Programming menu +menutrans &Tools &Ferramentas +menutrans &Jump\ to\ this\ tagg^] &Pular\ para\ este\ tagg^] +menutrans Jump\ &back^T &Voltar^T +menutrans Build\ &Tags\ File &Construir\ Arquivo\ de\ tags +menutrans &Spelling &Ortografia +menutrans &Folding &Dobra +menutrans &Make:make &Make:make +menutrans &List\ Errors:cl &Lista\ de\ erros:cl +menutrans L&ist\ Messages:cl! Li&sta\ de\ mensagens:cl! +menutrans &Next\ Error:cn P&róximo\ erro:cn +menutrans &Previous\ Error:cp &Erro\ anterior:cp +menutrans &Older\ List:cold Listar\ erros\ &antigos:cold +menutrans N&ewer\ List:cnew Listar\ erros\ &novos:cnew +menutrans Error\ &Window &Janela\ de\ erros +menutrans Se&T\ Compiler Def&inir\ Compilador +menutrans &Convert\ to\ HEX:%!xxd Converter\ para\ hexadecimal:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Conver&ter\ de\ volta:%!xxd\ -r + +" Tools.Spelling menu +menutrans &Spell Check On &Ativar Correção Ortográfica +menutrans &Spell Check Off &Desativar Correção Ortográfica +menutrans To &Next error]s &Próximo Erro]s +menutrans To &Previous Error[s Erro A&nterior[s +menutrans Suggest &Correctionsz= &Sugerir Correçõesz= +menutrans &Repeat correction:spellrepall &Repetir Correção:spellrepall + +menutrans Set\ language\ to\ "en" Inglês +menutrans Set\ language\ to\ "en_au" Inglês\ (en_au) +menutrans Set\ language\ to\ "en_ca" Inglês\ (en_ca) +menutrans Set\ language\ to\ "en_gb" Inglês\ (en_gb) +menutrans Set\ language\ to\ "en_nz" Inglês\ (en_nz) +menutrans Set\ language\ to\ "en_us" Inglês\ (en_us) + +menutrans &Find\ More\ Languages &Buscar mais idiomas + +" Tools.Fold Menu +menutrans &Enable/Disable\ foldszi &Ativar/Desativar\ dobraszi +menutrans &View\ Cursor\ Linezv &Ver\ linha\ do\ cursorzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Ve&r\ somente\ linha\ do\ cursorzMzx +menutrans C&lose\ more\ foldszm &Fechar\ mais\ dobraszm +menutrans &Close\ all\ foldszM F&echar\ todas\ as\ dobraszM +menutrans O&pen\ more\ foldszr A&brir\ mais\ dobraszr +menutrans &Open\ all\ foldszR Abr&ir\ todas\ as\ dobraszR +" fold method +menutrans Fold\ Met&hod &Modo\ de\ dobras +menutrans Create\ &Foldzf Criar\ &dobraszf +menutrans &Delete\ Foldzd Remover\ d&obraszd +menutrans Delete\ &All\ FoldszD Remover\ &todas\ as\ dobraszD +" moving around in folds +menutrans Fold\ col&umn\ width &Largura\ da\ coluna\ da\ dobra + +" Tools.Diff Menu +menutrans &Update &Atualizar +menutrans &Get\ Block &Obter\ Bloco +menutrans &Put\ Block &Pôr\ Bloco + +" Tools.Error Menu +menutrans &Update:cwin &Atualizar:cwin +menutrans &Open:copen A&brir:copen +menutrans &Close:cclose &Fechar:cclose + +" Names for buffer menu. +menutrans &Buffers &Buffers +menutrans &Refresh\ menu A&tualizar\ menu +menutrans &Delete &Apagar +menutrans &Alternate A<ernar +menutrans &Next P&róximo +menutrans &Previous A&nterior +let g:menutrans_no_file = "[Sem arquivos]" + +" Window menu +menutrans &Window &Janela +menutrans &New^Wn N&ova^Wn +menutrans S&plit^Ws &Dividir^Ws +menutrans Sp&lit\ To\ #^W^^ D&ividir\ para\ #^W^^ +menutrans Split\ &Vertically^Wv Dividir\ &verticalmente^Wv +menutrans Split\ File\ E&xplorer &Abrir\ Gerenciador\ de\ arquivos +menutrans &Close^Wc &Fechar^Wc +menutrans Close\ &Other(s)^Wo Fechar\ &outra(s)^Wo +menutrans Move\ &To Mover\ ¶ +menutrans &Top^WK A&cima^WK +menutrans &Bottom^WJ A&baixo^WJ +menutrans &Left\ side^WH Lado\ &esquerdo^WH +menutrans &Right\ side^WL Lado\ di&reito^WL +menutrans Rotate\ &Up^WR &Girar\ para\ cima^WR +menutrans Rotate\ &Down^Wr Girar\ para\ bai&xo^Wr +menutrans &Equal\ Size^W= Mesmo\ &Tamanho^W= +menutrans &Max\ Height^W_ Altura\ &Máxima^W_ +menutrans M&in\ Height^W1_ A<ura\ Mínima^W1_ +menutrans Max\ &Width^W\| Larg&ura\ Máxima^W\| +menutrans Min\ Widt&h^W1\| Largura\ Mí&nima^W1\| + +" The popup menu +menutrans &Undo &Desfazer +menutrans Cu&t Recor&tar +menutrans &Copy &Copiar +menutrans &Paste Co&lar +menutrans &Delete &Apagar +menutrans Select\ Blockwise Seleção\ de\ bloco +menutrans Select\ &Word Selecionar\ &Palavra +menutrans Select\ &Line Selecionar\ L&inha +menutrans Select\ &All Selecionar\ T&udo + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Abrir Arquivo + tmenu ToolBar.Save Salvar Arquivo + tmenu ToolBar.SaveAll Salvar Todos os arquivos + tmenu ToolBar.Print Imprimir + tmenu ToolBar.Undo Desfazer + tmenu ToolBar.Redo Refazer + tmenu ToolBar.Cut Recortar + tmenu ToolBar.Copy Copiar + tmenu ToolBar.Paste Colar + tmenu ToolBar.Find Procurar... + tmenu ToolBar.FindNext Procurar Próximo + tmenu ToolBar.FindPrev Procurar Anterior + tmenu ToolBar.Replace Procurar e Substituir + if 0 " disable; these are in the Windoze menu + tmenu ToolBar.New Nova Janela + tmenu ToolBar.WinSplit Dividir Janela + tmenu ToolBar.WinMax Janela Máxima + tmenu ToolBar.WinMin Janela Mínima + tmenu ToolBar.WinVSplit Dividir Verticalmente + tmenu ToolBar.WinMaxWidth Largura Máxima + tmenu ToolBar.WinMinWidth Largura Mínima + tmenu ToolBar.WinClose Fechar Janela + endif + tmenu ToolBar.LoadSesn Carregar Sessão + tmenu ToolBar.SaveSesn Salvar Sessão + tmenu ToolBar.RunScript Executar script + tmenu ToolBar.Make Make + tmenu ToolBar.Shell Abrir um shell + tmenu ToolBar.RunCtags Gerar um arquivo de tags + tmenu ToolBar.TagJump Saltar para um tag + tmenu ToolBar.Help Ajuda + tmenu ToolBar.FindHelp Procurar na Ajuda + endfun +endif + +" Syntax menu +menutrans &Syntax &Sintaxe +"menutrans &Show\ individual\ choices E&xibir\ escolhas\ individuais +menutrans &Show\ filetypes\ in\ menu E&xibir\ tipos\ de\ arquivos\ no\ menu +menutrans Set\ '&syntax'\ only Ativar\ somente\ s&intaxe +menutrans Set\ '&filetype'\ too Ativar\ também\ &tipo\ de\ arquivo +menutrans &Off &Desativar +menutrans &Manual &Manual +menutrans A&utomatic A&utomática +menutrans on/off\ for\ &This\ file Ativar/Desativar\ neste\ &arquivo +menutrans Co&lor\ test T&este\ de\ cores +menutrans &Highlight\ test Teste\ de\ &realce +menutrans &Convert\ to\ HTML &Converter\ para\ HTML + +" Find Help dialog text +let g:menutrans_help_dialog = "Digite um comando ou palavra para obter ajuda;\n\nAnteponha i_ para comandos de entrada (ex.: i_CTRL-X)\nAnteponha c_ para comandos da linha de comandos (ex.: c_)\nAnteponha ` para um nome de opção (ex.: `shiftwidth`)" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_pt_pt.latin1.vim b/share/vim/vim74/lang/menu_pt_pt.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_pt_pt.latin1.vim rename to share/vim/vim74/lang/menu_pt_pt.latin1.vim diff --git a/share/vim/vim73/lang/menu_pt_pt.utf-8.vim b/share/vim/vim74/lang/menu_pt_pt.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_pt_pt.utf-8.vim rename to share/vim/vim74/lang/menu_pt_pt.utf-8.vim diff --git a/share/vim/vim74/lang/menu_pt_pt.vim b/share/vim/vim74/lang/menu_pt_pt.vim new file mode 100644 index 00000000..783be0b9 --- /dev/null +++ b/share/vim/vim74/lang/menu_pt_pt.vim @@ -0,0 +1,269 @@ +" Menu Translations: Português +" adaptado de pt_br. +" Maintainer: Duarte Henriques + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" Translations in latin1 (ISO-8859-1), and should work in +" latin9 (ISO-8859-15) + +if &enc != "cp1252" && &enc != "iso-8859-15" + scriptencoding latin1 +endif + +" Help menu +menutrans &Help A&juda +menutrans &Overview &Conteúdo +menutrans &User\ Manual &Manual\ do\ Utilizador +menutrans &How-to\ links &Como\ fazer? +menutrans &Find\.\.\. &Procurar\.\.\. +menutrans &Credits &Créditos +menutrans O&rphans &Órfãos +menutrans Co&pying &Licença +menutrans &Version &Versão +menutrans &About &Sobre + +" File menu +menutrans &File &Ficheiro +menutrans &Open\.\.\.:e A&brir\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Abrir\ noutra\ &janela\.\.\.:sp +menutrans &New:enew &Novo:enew +menutrans &Close:close &Fechar:close +menutrans &Save:w &Guardar:w +menutrans Save\ &As\.\.\.:sav Gu&ardar\ como\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. &Exibir\ diferenças\ com\.\.\. +menutrans Split\ Patched\ &By\.\.\. Ex&ibir\ patcheado\ por\.\.\. +menutrans &Print Im&primir +menutrans Sa&ve-Exit:wqa Gua&rdar\ e\ sair:wqa +menutrans E&xit:qa Sai&r:qa + +" Edit menu +menutrans &Edit &Editar +menutrans &Undou &Desfazeru +menutrans &Redo^R &Refazeru +menutrans Rep&eat\. Repe&tir\. +menutrans Cu&t"+x &Cortar"+x +menutrans &Copy"+y Cop&iar"+y +menutrans &Paste"+gP C&olar"+gP +menutrans Put\ &Before[p Colocar\ &antes[p +menutrans Put\ &After]p Colocar\ &depois]p +menutrans &Select\ allggVG &Seleccionar\ tudoggVG +menutrans &Find\.\.\. &Procurar\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Procurar\ e\ substit&uir\.\.\. +menutrans Find\ and\ Rep&lace:%s Procurar\ e\ substit&uir:%s +menutrans Find\ and\ Rep&lace Procurar\ e\ substit&uir +menutrans Find\ and\ Rep&lace:s Procurar\ e\ substituir:s +menutrans Settings\ &Window Op&ções + +" Edit/Global Settings +menutrans &Global\ Settings Opções\ &Globais + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Activar/Desactivar\ &Realce\ de\ Padrões:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Activar/Desactivar\ &Ignorar\ maiúsculas:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Activar/Desactivar\ &coincidências:set\ sm! + +menutrans &Context\ lines Linhas\ de\ C&ontexto + +menutrans &Virtual\ Edit Edição\ &Virtual +menutrans Never Nunca +menutrans Block\ Selection Seleção\ de\ Bloco +menutrans Insert\ mode Modo\ de\ inserção +menutrans Block\ and\ Insert Bloco\ e\ inserção +menutrans Always Sempre + +menutrans Toggle\ Insert\ &Mode:set\ im! Activar/Desactivar\ Modo\ de\ In&serção:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Activar/Desactivar\ Co&mpatibilidade\ com\ Vi:set\ cp! +menutrans Search\ &Path\.\.\. Camin&ho\ de\ Busca\.\.\. +menutrans Ta&g\ Files\.\.\. Arquivos\ de\ Tags\.\.\. + +" GUI options +menutrans Toggle\ &Toolbar Ocultar/Exibir\ Barra\ de\ &Ferramentas +menutrans Toggle\ &Bottom\ Scrollbar Ocultar/Exibir\ Barra\ de\ &Rolagem\ Inferior +menutrans Toggle\ &Left\ Scrollbar Ocultar/Exibir\ Barra\ de\ R&olagem\ Esquerda +menutrans Toggle\ &Right\ Scrollbar Ocultar/Exibir\ Barra\ de\ Ro&lagem\ Direita +let g:menutrans_path_dialog = "Indique um caminho de procura para os arquivos.\nSepare os nomes dos diretórios com uma vírgula." +let g:menutrans_tags_dialog = "Indique os nomes dos arquivos de tags.\nSepare os nomes com uma vírgula." + +" Edit/File Settings +menutrans F&ile\ Settings Opções\ do\ &Arquivo + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! Activar/Desactivar\ &numeração\ de\ linhas:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Activar/Desactivar\ modo\ &list:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Activar/Desactivar\ &quebra\ de\ linhas:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Activar/Desactivar\ quebra\ na\ &palavra:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Activar/Desactivar\ expansão de tabs:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Activar/Desactivar\ &auto-indentação:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Activar/Desactivar\ indentação estilo &C:set\ cin! + +" other options +menutrans &Shiftwidth Largura\ da\ &indentação + +menutrans Soft\ &Tabstop &Tabulação\ com\ espaços + +menutrans Te&xt\ Width\.\.\. Largura\ do\ te&xto\.\.\. +let g:menutrans_textwidth_dialog = "Digite a nova largura do texto (0 para desativar a formatação): " + +menutrans &File\ Format\.\.\. &Formato\ do\ arquivo\.\.\. +let g:menutrans_fileformat_dialog = "Selecione o formato para gravar o arquivo" + +menutrans C&olor\ Scheme Esquema\ de\ c&ores +menutrans default padrão + +menutrans Select\ Fo&nt\.\.\. Seleccionar\ fo&nte\.\.\. + +menutrans &Keymap Mapa\ de\ teclado +menutrans None Nenhum + +" Programming menu +menutrans &Tools Fe&rramentas +menutrans &Jump\ to\ this\ tagg^] Saltar\ para\ esta\ &tagg^] +menutrans Jump\ &back^T &Voltar^T +menutrans Build\ &Tags\ File &Construir\ Arquivo\ de\ tags +menutrans &Folding &Dobra +menutrans &Make:make &Make:make +menutrans &List\ Errors:cl &Lista\ de\ erros:cl +menutrans L&ist\ Messages:cl! Li&sta\ de\ mensagens:cl! +menutrans &Next\ Error:cn P&róximo\ erro:cn +menutrans &Previous\ Error:cp &Erro\ anterior:cp +menutrans &Older\ List:cold Listar\ erros\ &antigos:cold +menutrans N&ewer\ List:cnew Listar\ erros\ &novos:cnew +menutrans Error\ &Window &Janela\ de\ erros +menutrans &Set\ Compiler Def&inir\ Compilador +menutrans &Convert\ to\ HEX:%!xxd Converter\ para\ hexadecimal:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Conver&ter\ de\ volta:%!xxd\ -r + +" Tools.Fold Menu +menutrans &Enable/Disable\ foldszi &Activar/Desactivar\ dobraszi +menutrans &View\ Cursor\ Linezv &Ver\ linha\ do\ cursorzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Ve&r\ somente\ linha\ do\ cursorzMzx +menutrans C&lose\ more\ foldszm &Fechar\ mais\ dobraszm +menutrans &Close\ all\ foldszM F&echar\ todas\ as\ dobraszM +menutrans O&pen\ more\ foldszr A&brir\ mais\ dobraszr +menutrans &Open\ all\ foldszR Abr&ir\ todas\ as\ dobraszR +" fold method +menutrans Fold\ Met&hod &Modo\ de\ dobras +menutrans Create\ &Foldzf Criar\ &dobraszf +menutrans &Delete\ Foldzd Remover\ d&obraszd +menutrans Delete\ &All\ FoldszD Remover\ &todas\ as\ dobraszD +" moving around in folds +menutrans Fold\ col&umn\ width &Largura\ da\ coluna\ da\ dobra + +" Tools.Diff Menu +menutrans &Update &Actualizar +menutrans &Get\ Block &Obter\ Bloco +menutrans &Put\ Block &Pôr\ Bloco + +" Tools.Error Menu +menutrans &Update:cwin &Actualizar:cwin +menutrans &Open:copen A&brir:copen +menutrans &Close:cclose &Fechar:cclose + +" Names for buffer menu. +menutrans &Buffers &Buffers +menutrans &Refresh\ menu A&ctualizar\ menu +menutrans &Delete &Apagar +menutrans &Alternate A<ernar +menutrans &Next P&róximo +menutrans &Previous A&nterior +let g:menutrans_no_file = "[Sem arquivos]" + +" Window menu +menutrans &Window &Janela +menutrans &New^Wn N&ova^Wn +menutrans S&plit^Ws &Dividir^Ws +menutrans Sp&lit\ To\ #^W^^ D&ividir\ para\ #^W^^ +menutrans Split\ &Vertically^Wv Dividir\ &verticalmente^Wv +menutrans Split\ File\ E&xplorer &Abrir\ Gerenciador\ de\ arquivos +menutrans &Close^Wc &Fechar^Wc +menutrans Close\ &Other(s)^Wo Fechar\ &outra(s)^Wo +menutrans Move\ &To Mover\ ¶ +menutrans &Top^WK A&cima^WK +menutrans &Bottom^WJ A&baixo^WJ +menutrans &Left\ side^WH Lado\ &esquerdo^WH +menutrans &Right\ side^WL Lado\ di&reito^WL +menutrans Rotate\ &Up^WR &Girar\ para\ cima^WR +menutrans Rotate\ &Down^Wr Girar\ para\ bai&xo^Wr +menutrans &Equal\ Size^W= Mesmo\ &Tamanho^W= +menutrans &Max\ Height^W_ Altura\ &Máxima^W_ +menutrans M&in\ Height^W1_ A<ura\ Mínima^W1_ +menutrans Max\ &Width^W\| Larg&ura\ Máxima^W\| +menutrans Min\ Widt&h^W1\| Largura\ Mí&nima^W1\| + +" The popup menu +menutrans &Undo &Desfazer +menutrans Cu&t Recor&tar +menutrans &Copy &Copiar +menutrans &Paste Co&lar +menutrans &Delete &Apagar +menutrans Select\ Blockwise Seleção\ de\ bloco +menutrans Select\ &Word Seleccionar\ &Palavra +menutrans Select\ &Line Seleccionar\ L&inha +menutrans Select\ &All Seleccionar\ T&udo + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Abrir Arquivo + tmenu ToolBar.Save Salvar Arquivo + tmenu ToolBar.SaveAll Salvar Todos os arquivos + tmenu ToolBar.Print Imprimir + tmenu ToolBar.Undo Desfazer + tmenu ToolBar.Redo Refazer + tmenu ToolBar.Cut Recortar + tmenu ToolBar.Copy Copiar + tmenu ToolBar.Paste Colar + tmenu ToolBar.Find Procurar... + tmenu ToolBar.FindNext Procurar Próximo + tmenu ToolBar.FindPrev Procurar Anterior + tmenu ToolBar.Replace Procurar e Substituir + if 0 " disable; these are in the Windoze menu + tmenu ToolBar.New Nova Janela + tmenu ToolBar.WinSplit Dividir Janela + tmenu ToolBar.WinMax Janela Máxima + tmenu ToolBar.WinMin Janela Mínima + tmenu ToolBar.WinVSplit Dividir Verticalmente + tmenu ToolBar.WinMaxWidth Largura Máxima + tmenu ToolBar.WinMinWidth Largura Mínima + tmenu ToolBar.WinClose Fechar Janela + endif + tmenu ToolBar.LoadSesn Carregar Sessão + tmenu ToolBar.SaveSesn Salvar Sessão + tmenu ToolBar.RunScript Executar script + tmenu ToolBar.Make Make + tmenu ToolBar.Shell Abrir um shell + tmenu ToolBar.RunCtags Gerar um arquivo de tags + tmenu ToolBar.TagJump Saltar para um tag + tmenu ToolBar.Help Ajuda + tmenu ToolBar.FindHelp Procurar na Ajuda + endfun +endif + +" Syntax menu +menutrans &Syntax &Sintaxe +"menutrans &Show\ individual\ choices E&xibir\ escolhas\ individuais +menutrans &Show\ filetypes\ in\ menu E&xibir\ tipos\ de\ arquivos\ no\ menu +menutrans Set\ '&syntax'\ only Activar\ somente\ s&intaxe +menutrans Set\ '&filetype'\ too Activar\ também\ &tipo\ de\ arquivo +menutrans &Off &Desactivar +menutrans &Manual &Manual +menutrans A&utomatic A&utomática +menutrans on/off\ for\ &This\ file Activar/Desactivar\ neste\ &arquivo +menutrans Co&lor\ test T&este\ de\ cores +menutrans &Highlight\ test Teste\ de\ &realce +menutrans &Convert\ to\ HTML &Converter\ para\ HTML + +" Find Help dialog text +let g:menutrans_help_dialog = "Digite um comando ou palavra para obter ajuda;\n\nAnteponha i_ para comandos de entrada (ex.: i_CTRL-X)\nAnteponha c_ para comandos da linha de comandos (ex.: c_)\nAnteponha ` para um nome de opção (ex.: `shiftwidth`)" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_ru.utf-8.vim b/share/vim/vim74/lang/menu_ru.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_ru.utf-8.vim rename to share/vim/vim74/lang/menu_ru.utf-8.vim diff --git a/share/vim/vim74/lang/menu_ru_ru.koi8-r.vim b/share/vim/vim74/lang/menu_ru_ru.koi8-r.vim new file mode 100644 index 00000000..e66b728e --- /dev/null +++ b/share/vim/vim74/lang/menu_ru_ru.koi8-r.vim @@ -0,0 +1,326 @@ +" Menu Translations: Russian +" Maintainer: Sergey Alyoshin +" Previous Maintainer: vassily ragosin +" Last Change: 29 May 2013 +" URL: cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim +" +" $Id: menu_ru_ru.vim,v 1.1 2004/06/13 16:09:10 vimboss Exp $ +" +" Adopted for RuVim project by Vassily Ragosin. +" First translation: Tim Alexeevsky , +" based on ukrainian translation by Bohdan Vlasyuk +" +" +" Quit when menu translations have already been done. +" +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding koi8-r + +" Top +menutrans &File &æÁÊÌ +menutrans &Edit ð&ÒÁ×ËÁ +menutrans &Tools &éÎÓÔÒÕÍÅÎÔÙ +menutrans &Syntax &óÉÎÔÁËÓÉÓ +menutrans &Buffers &âÕÆÅÒÙ +menutrans &Window &ïËÎÏ +menutrans &Help ó&ÐÒÁ×ËÁ +" +" +" +" Help menu +menutrans &Overview &ïÂÚÏÒ +menutrans &User\ Manual òÕËÏ×Ï&ÄÓÔ×Ï\ ÐÏÌØÚÏ×ÁÔÅÌÑ +menutrans &How-to\ links &ëÁË\ ÜÔÏ\ ÓÄÅÌÁÔØ\.\.\. +menutrans &Find\.\.\. &ðÏÉÓË +"-------------------- +menutrans &Credits &âÌÁÇÏÄÁÒÎÏÓÔÉ +menutrans Co&pying &òÁÓÐÒÏÓÔÒÁÎÅÎÉÅ +menutrans &Sponsor/Register ðÏÍÏ&ÝØ/òÅÇÉÓÔÒÁÃÉÑ +menutrans O&rphans &óÉÒÏÔÙ +"-------------------- +menutrans &Version &éÎÆÏÒÍÁÃÉÑ\ Ï\ ÐÒÏÇÒÁÍÍÅ +menutrans &About &úÁÓÔÁ×ËÁ +" +" +" File menu +menutrans &Open\.\.\.:e &ïÔËÒÙÔØ\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp ðÏ&ÄÅÌÉÔØ\ ÏËÎÏ\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew ïÔËÒÙÔØ\ ×&ËÌÁÄËÕ\.\.\.:tabnew +menutrans &New:enew &îÏ×ÙÊ:enew +menutrans &Close:close &úÁËÒÙÔØ:close +"-------------------- +menutrans &Save:w &óÏÈÒÁÎÉÔØ:w +menutrans Save\ &As\.\.\.:sav óÏÈÒÁÎÉÔØ\ &ËÁË\.\.\.:sav +"-------------------- +menutrans Split\ &Diff\ with\.\.\. óÒ&Á×ÎÉÔØ\ Ó\.\.\. +menutrans Split\ Patched\ &By\.\.\. óÒÁ×ÎÉÔØ\ Ó\ ÐÒÉÍÅÎÅÎÉÅÍ\ ÚÁÐ&ÌÁÔËÉ\.\.\. +"-------------------- +menutrans &Print îÁ&ÐÅÞÁÔÁÔØ +menutrans Sa&ve-Exit:wqa ÷Ù&ÈÏÄ\ Ó\ ÓÏÈÒÁÎÅÎÉÅÍ:wqa +menutrans E&xit:qa &÷ÙÈÏÄ:qa +" +" +" Edit menu +menutrans &Undou ï&ÔÍÅÎÉÔØu +menutrans &Redo^R ÷&ÅÒÎÕÔØ^R +menutrans Rep&eat\. ðÏ×ÔÏÒÉÔ&Ø\. +"-------------------- +menutrans Cu&t"+x &÷ÙÒÅÚÁÔØ"+x +menutrans &Copy"+y &ëÏÐÉÒÏ×ÁÔØ"+y +menutrans &Paste"+gP ÷Ë&ÌÅÉÔØ"+gP +menutrans Put\ &Before[p ÷ËÌÅÉÔØ\ ÐÅÒÅ&Ä[p +menutrans Put\ &After]p ÷ËÌÅÉÔØ\ ÐÏ&ÓÌÅ]p +menutrans &Deletex &õÄÁÌÉÔØx +menutrans &Select\ AllggVG ÷&ÙÄÅÌÉÔØ\ ×Ó£ggVG +"-------------------- +" Athena GUI only +menutrans &Find/ &ðÏÉÓË/ +menutrans Find\ and\ Rep&lace:%s ðÏÉÓË\ É\ &ÚÁÍÅÎÁ:%s +" End Athena GUI only +menutrans &Find\.\.\./ &ðÏÉÓË\.\.\./ +menutrans Find\ and\ Rep&lace\.\.\. ðÏÉÓË\ É\ &ÚÁÍÅÎÁ\.\.\. +menutrans Find\ and\ Rep&lace\.\.\.:%s ðÏÉÓË\ É\ &ÚÁÍÅÎÁ\.\.\.:%s +menutrans Find\ and\ Rep&lace\.\.\.:s ðÏÉÓË\ É\ &ÚÁÍÅÎÁ\.\.\.:s +"-------------------- +menutrans Settings\ &Window ïËÎÏ\ ÎÁÓÔÒÏÊËÉ\ &ÏÐÃÉÊ +menutrans Startup\ &Settings îÁÓÔÒÏÊËÉ\ ÚÁÐÕÓ&ËÁ +menutrans &Global\ Settings &çÌÏÂÁÌØÎÙÅ\ ÎÁÓÔÒÏÊËÉ +menutrans F&ile\ Settings îÁÓÔÒÏÊËÉ\ &ÆÁÊÌÏ× +menutrans C&olor\ Scheme &ã×ÅÔÏ×ÁÑ\ ÓÈÅÍÁ +menutrans &Keymap òÁÓËÌÁÄËÁ\ ËÌ&Á×ÉÁÔÕÒÙ +menutrans Select\ Fo&nt\.\.\. ÷ÙÂÏÒ\ &ÛÒÉÆÔÁ\.\.\. +">>>----------------- Edit/Global settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! ðÏÄÓ×ÅÔËÁ\ &ÎÁÊÄÅÎÎÙÈ\ ÓÏÏÔ×ÅÔÓÔ×ÉÊ:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! &òÅÇÉÓÔÒÏÎÅÚÁ×ÉÓÉÍÙÊ\ ÐÏÉÓË:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! ðÏËÁÚÙ×ÁÔØ\ ÐÁÒÎÙÅ\ &ÜÌÅÍÅÎÔÙ:set\ sm! +menutrans &Context\ lines óÔÒ&ÏË\ ×ÏËÒÕÇ\ ËÕÒÓÏÒÁ +menutrans &Virtual\ Edit ÷ÉÒ&ÔÕÁÌØÎÏÅ\ ÒÅÄÁËÔÉÒÏ×ÁÎÉÅ +menutrans Toggle\ Insert\ &Mode:set\ im! òÅÖÉÍ\ &÷ÓÔÁ×ËÉ:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! &óÏ×ÍÅÓÔÉÍÏÓÔØ\ Ó\ Vi:set\ cp! +menutrans Search\ &Path\.\.\. &ðÕÔØ\ ÄÌÑ\ ÐÏÉÓËÁ\ ÆÁÊÌÏ×\.\.\. +menutrans Ta&g\ Files\.\.\. æÁÊÌÙ\ &ÍÅÔÏË\.\.\. +" +menutrans Toggle\ &Toolbar &éÎÓÔÒÕÍÅÎÔÁÌØÎÁÑ\ ÐÁÎÅÌØ +menutrans Toggle\ &Bottom\ Scrollbar ðÏÌÏÓÁ\ ÐÒÏËÒÕÔËÉ\ ×ÎÉ&ÚÕ +menutrans Toggle\ &Left\ Scrollbar ðÏÌÏÓÁ\ ÐÒÏËÒÕÔËÉ\ Ó&ÌÅ×Á +menutrans Toggle\ &Right\ Scrollbar ðÏÌÏÓÁ\ ÐÒÏËÒÕÔËÉ\ ÓÐÒ&Á×Á +">>>->>>------------- Edit/Global settings/Virtual edit +menutrans Never ÷ÙËÌÀÞÅÎÏ +menutrans Block\ Selection ðÒÉ\ ×ÙÄÅÌÅÎÉÉ\ ÂÌÏËÁ +menutrans Insert\ mode ÷\ ÒÅÖÉÍÅ\ ÷ÓÔÁ×ËÉ +menutrans Block\ and\ Insert ðÒÉ\ ×ÙÄÅÌÅÎÉÉ\ ÂÌÏËÁ\ É\ ×\ ÒÅÖÉÍÅ\ ÷ÓÔÁ×ËÉ +menutrans Always ÷ËÌÀÞÅÎÏ\ ×ÓÅÇÄÁ +">>>----------------- Edit/File settings +menutrans Toggle\ Line\ &Numbering:set\ nu! &îÕÍÅÒÁÃÉÑ\ ÓÔÒÏË:set\ nu! +menutrans Toggle\ relati&ve\ Line\ Numbering:set\ rnu! ïÔÎÏÓÉÔÅ&ÌØÎÁÑ\ ÎÕÍÅÒÁÃÉÑ\ ÓÔÒÏË:set\ nru! +menutrans Toggle\ &List\ Mode:set\ list! ïÔÏÂÒÁ&ÖÅÎÉÅ\ ÎÅ×ÉÄÉÍÙÈ\ ÓÉÍ×ÏÌÏ×:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! &ðÅÒÅÎÏÓ\ ÄÌÉÎÎÙÈ\ ÓÔÒÏË:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! ðÅÒÅÎÏÓ\ &ÃÅÌÙÈ\ ÓÌÏ×:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! ðÒÏ&ÂÅÌÙ\ ×ÍÅÓÔÏ\ ÔÁÂÕÌÑÃÉÉ:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! á×ÔÏÍÁÔÉÞÅÓËÏÅ\ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÅ\ &ÏÔÓÔÕÐÏ×:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! æÏÒÍÁÔÉÒÏ×ÁÎÉÅ\ ÏÔÓÔÕÐÏ×\ ×\ &ÓÔÉÌÅ\ C:set\ cin! +">>>--- +menutrans &Shiftwidth ÷ÅÌÉ&ÞÉÎÁ\ ÏÔÓÔÕÐÁ +menutrans Soft\ &Tabstop ûÉÒÉÎÁ\ &ÔÁÂÕÌÑÃÉÉ +menutrans Te&xt\ Width\.\.\. &ûÉÒÉÎÁ\ ÔÅËÓÔÁ\.\.\. +menutrans &File\ Format\.\.\. &æÏÒÍÁÔ\ ÆÁÊÌÁ\.\.\. +" +" +" +" Tools menu +menutrans &Jump\ to\ this\ tagg^] &ðÅÒÅÈÏÄ\ Ë\ ÍÅÔËÅg^] +menutrans Jump\ &back^T &÷ÅÒÎÕÔØÓÑ\ ÎÁÚÁÄ^T +menutrans Build\ &Tags\ File óÏÚÄÁÔØ\ &ÆÁÊÌ\ ÍÅÔÏË +"------------------- +menutrans &Folding òÁÂÏÔÁ\ ÓÏ\ &ÓËÌÁÄËÁÍÉ +menutrans &Spelling ðÒ&Á×ÏÐÉÓÁÎÉÅ +menutrans &Diff &ïÔÌÉÞÉÑ\ (diff) +"------------------- +menutrans &Make:make ëÏ&ÍÐÉÌÑÃÉÑ:make +menutrans &List\ Errors:cl óÐÉÓÏË\ Ï&ÛÉÂÏË:cl +menutrans L&ist\ Messages:cl! óÐÉÓÏË\ ×ÓÅ&È\ ÏÛÉÂÏË\ É\ ÐÒÅÄÕÐÒÅÖÄÅÎÉÊ:cl! +menutrans &Next\ Error:cn óÌÅÄÕ&ÀÝÁÑ\ ÏÛÉÂËÁ:cn +menutrans &Previous\ Error:cp ð&ÒÅÄÙÄÕÝÁÑ\ ÏÛÉÂËÁ:cp +menutrans &Older\ List:cold âÏÌÅÅ\ ÓÔÁÒ&ÙÊ\ ÓÐÉÓÏË\ ÏÛÉÂÏË:cold +menutrans N&ewer\ List:cnew âÏÌÅÅ\ Ó×Å&ÖÉÊ\ ÓÐÉÓÏË\ ÏÛÉÂÏË:cnew +menutrans Error\ &Window ïË&ÎÏ\ ÏÛÉÂÏË +menutrans Se&T\ Compiler ÷ÙÂÏÒ\ &ËÏÍÐÉÌÑÔÏÒÁ +"------------------- +menutrans &Convert\ to\ HEX:%!xxd ð&ÅÒÅ×ÅÓÔÉ\ ×\ HEX:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r ðÅÒÅ×ÅÓÔÉ\ É&Ú\ HEX:%!xxd\ -r +">>>---------------- Tools/Spelling +menutrans &Spell\ Check\ On &÷ËÌ\ ÐÒÏ×ÅÒËÕ\ ÐÒÁ×ÏÐÉÓÁÎÉÑ +menutrans Spell\ Check\ &Off ÷Ù&ËÌ\ ÐÒÏ×ÅÒËÕ\ ÐÒÁ×ÏÐÉÓÁÎÉÑ +menutrans To\ &Next\ error]s &óÌÅÄÕÀÝÁÑ\ ÏÛÉÂËÁ +menutrans To\ &Previous\ error[s &ðÒÅÄÙÄÕÝÁÑ\ ÏÛÉÂËÁ +menutrans Suggest\ &Correctionsz= ðÒÅÄÌÏÖÉÔØ\ ÉÓÐ&ÒÁ×ÌÅÎÉÑ +menutrans &Repeat\ correction:spellrepall ðÏ×&ÔÏÒÉÔØ\ ÉÓÐÒÁ×ÌÅÎÉÅ\ ÄÌÑ\ ×ÓÅÈ +"------------------- +menutrans Set\ language\ to\ "en" õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en" +menutrans Set\ language\ to\ "en_au" õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en_au" +menutrans Set\ language\ to\ "en_ca" õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en_ca" +menutrans Set\ language\ to\ "en_gb" õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en_gb" +menutrans Set\ language\ to\ "en_nz" õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en_nz" +menutrans Set\ language\ to\ "en_us" õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en_us" +menutrans &Find\ More\ Languages &îÁÊÔÉ\ ÂÏÌØÛÅ\ ÑÚÙËÏ× +let g:menutrans_set_lang_to = 'õÓÔÁÎÏ×ÉÔØ ÑÚÙË' +">>>---------------- Folds +menutrans &Enable/Disable\ foldszi ÷ËÌ/×ÙËÌ\ &ÓËÌÁÄËÉzi +menutrans &View\ Cursor\ Linezv ïÔËÒÙÔØ\ ÓÔÒÏËÕ\ Ó\ &ËÕÒÓÏÒÏÍzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx ïÔËÒÙÔØ\ &ÔÏÌØËÏ\ ÓÔÒÏËÕ\ Ó\ ËÕÒÓÏÒÏÍzMzx +menutrans C&lose\ more\ foldszm úÁËÒÙÔØ\ &ÂÏÌØÛÅ\ ÓËÌÁÄÏËzm +menutrans &Close\ all\ foldszM úÁËÒÙÔØ\ &×ÓÅ\ ÓËÌÁÄËÉzM +menutrans &Open\ all\ foldszR ïÔËÒ&ÙÔØ\ ×ÓÅ\ ÓËÌÁÄËÉzR +menutrans O&pen\ more\ foldszr ïÔË&ÒÙÔØ\ ÂÏÌØÛÅ\ ÓËÌÁÄÏËzr +menutrans Fold\ Met&hod &íÅÔÏÄ\ ÓËÌÁÄÏË +menutrans Create\ &Foldzf óÏ&ÚÄÁÔØ\ ÓËÌÁÄËÕzf +menutrans &Delete\ Foldzd õ&ÄÁÌÉÔØ\ ÓËÌÁÄËÕzd +menutrans Delete\ &All\ FoldszD õÄÁÌÉÔØ\ ×Ó&Å\ ÓËÌÁÄËÉzD +menutrans Fold\ col&umn\ width &ûÉÒÉÎÁ\ ËÏÌÏÎËÉ\ ÓËÌÁÄÏË +">>>->>>----------- Tools/Folds/Fold Method +menutrans M&anual ÷ÒÕ&ÞÎÕÀ +menutrans I&ndent ï&ÔÓÔÕÐ +menutrans E&xpression &÷ÙÒÁÖÅÎÉÅ +menutrans S&yntax &óÉÎÔÁËÓÉÓ +menutrans Ma&rker &íÁÒËÅÒÙ +">>>--------------- Tools/Diff +menutrans &Update ï&ÂÎÏ×ÉÔØ +menutrans &Get\ Block éÚÍÅÎÉÔØ\ &ÜÔÏÔ\ ÂÕÆÅÒ +menutrans &Put\ Block éÚÍÅÎÉÔØ\ &ÄÒÕÇÏÊ\ ÂÕÆÅÒ +">>>--------------- Tools/Diff/Error window +menutrans &Update:cwin ï&ÂÎÏ×ÉÔØ:cwin +menutrans &Close:cclose &úÁËÒÙÔØ:cclose +menutrans &Open:copen &ïÔËÒÙÔØ:copen +" +" +" Syntax menu +" +menutrans &Show\ filetypes\ in\ menu ðÏËÁÚÁÔØ\ ÍÅÎÀ\ ÄÌÑ\ ×ÙÂÏÒÁ\ ÔÉÐÁ\ &ÆÁÊÌÁ +menutrans Set\ '&syntax'\ only &éÚÍÅÎÑÔØ\ ÔÏÌØËÏ\ ÚÎÁÞÅÎÉÅ\ 'syntax' +menutrans Set\ '&filetype'\ too éÚÍÅÎÑÔØ\ &ÔÁËÖÅ\ ÚÎÁÞÅÎÉÅ\ 'filetype' +menutrans &Off &ïÔËÌÀÞÉÔØ +menutrans &Manual ÷ÒÕ&ÞÎÕÀ +menutrans A&utomatic &á×ÔÏÍÁÔÉÞÅÓËÉ +menutrans on/off\ for\ &This\ file ÷ËÌ/×ÙËÌ\ ÄÌÑ\ &ÜÔÏÇÏ\ ÆÁÊÌÁ +menutrans Co&lor\ test ðÒÏ×ÅÒËÁ\ &Ã×ÅÔÏ× +menutrans &Highlight\ test ðÒÏ×ÅÒËÁ\ ÐÏÄ&Ó×ÅÔËÉ +menutrans &Convert\ to\ HTML ó&ÄÅÌÁÔØ\ HTML\ Ó\ ÐÏÄÓ×ÅÔËÏÊ +" +" +" Buffers menu +" +menutrans &Refresh\ menu ï&ÂÎÏ×ÉÔØ\ ÍÅÎÀ +menutrans Delete õ&ÄÁÌÉÔØ +menutrans &Alternate &óÏÓÅÄÎÉÊ +menutrans &Next ó&ÌÅÄÕÀÝÉÊ +menutrans &Previous &ðÒÅÄÙÄÕÝÉÊ +menutrans [No\ File] [îÅÔ\ ÆÁÊÌÁ] +" +" +" Window menu +" +menutrans &New^Wn &îÏ×ÏÅ\ ÏËÎÏ^Wn +menutrans S&plit^Ws &òÁÚÄÅÌÉÔØ\ ÏËÎÏ^Ws +menutrans Sp&lit\ To\ #^W^^ ïÔËÒÙÔØ\ &ÓÏÓÅÄÎÉÊ\ ÆÁÊÌ\ ×\ ÎÏ×ÏÍ\ ÏËÎÅ^W^^ +menutrans Split\ &Vertically^Wv òÁÚÄÅÌÉÔØ\ ÐÏ\ &×ÅÒÔÉËÁÌÉ^Wv +menutrans Split\ File\ E&xplorer ïÔËÒÙÔØ\ ÐÒÏ×ÏÄÎÉË\ ÐÏ\ &ÆÁÊÌÏ×ÏÊ\ ÓÉÓÔÅÍÅ +" +menutrans &Close^Wc &úÁËÒÙÔØ\ ÜÔÏ\ ÏËÎÏ^Wc +menutrans Close\ &Other(s)^Wo úÁËÒÙÔØ\ &ÏÓÔÁÌØÎÙÅ\ ÏËÎÁ^Wo +" +menutrans Move\ &To &ðÅÒÅÍÅÓÔÉÔØ +menutrans Rotate\ &Up^WR óÄ×ÉÎÕÔØ\ ××ÅÒ&È^WR +menutrans Rotate\ &Down^Wr óÄ×ÉÎÕÔØ\ ×&ÎÉÚ^Wr +" +menutrans &Equal\ Size^W= ï&ÄÉÎÁËÏ×ÙÊ\ ÒÁÚÍÅÒ^W= +menutrans &Max\ Height^W_ íÁËÓÉÍÁÌØÎÁÑ\ ×&ÙÓÏÔÁ^W_ +menutrans M&in\ Height^W1_ íÉÎÉÍÁÌØÎÁÑ\ ×ÙÓÏ&ÔÁ^W1_ +menutrans Max\ &Width^W\| íÁËÓÉÍÁÌØÎÁÑ\ &ÛÉÒÉÎÁ^W\| +menutrans Min\ Widt&h^W1\| íÉÎÉÍÁÌ&ØÎÁÑ\ ÛÉÒÉÎÁ^W1\| +">>>----------------- Window/Move To +menutrans &Top^WK ÷&×ÅÒÈ^WK +menutrans &Bottom^WJ ÷&ÎÉÚ^WJ +menutrans &Left\ side^WH ÷&ÌÅ×Ï^WH +menutrans &Right\ side^WL ÷&ÐÒÁ×Ï^WL +" +" +" The popup menu +" +" +menutrans &Undo ï&ÔÍÅÎÉÔØ +menutrans Cu&t &÷ÙÒÅÚÁÔØ +menutrans &Copy &ëÏÐÉÒÏ×ÁÔØ +menutrans &Paste ÷Ë&ÌÅÉÔØ +menutrans &Delete &õÄÁÌÉÔØ +menutrans Select\ Blockwise âÌÏËÏ×ÏÅ\ ×ÙÄÅÌÅÎÉÅ +menutrans Select\ &Word ÷ÙÄÅÌÉÔØ\ &ÓÌÏ×Ï +menutrans Select\ &Line ÷ÙÄÅÌÉÔØ\ ÓÔ&ÒÏËÕ +menutrans Select\ &Block ÷ÙÄÅÌÉÔØ\ &ÂÌÏË +menutrans Select\ &All ÷&ÙÄÅÌÉÔØ\ &×Ó£ +" +" The GUI toolbar +" +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open ïÔËÒÙÔØ ÆÁÊÌ + tmenu ToolBar.Save óÏÈÒÁÎÉÔØ ÆÁÊÌ + tmenu ToolBar.SaveAll óÏÈÒÁÎÉÔØ ×ÓÅ ÆÁÊÌÙ + tmenu ToolBar.Print îÁÐÅÞÁÔÁÔØ + tmenu ToolBar.Undo ïÔÍÅÎÉÔØ + tmenu ToolBar.Redo ÷ÅÒÎÕÔØ + tmenu ToolBar.Cut ÷ÙÒÅÚÁÔØ + tmenu ToolBar.Copy ëÏÐÉÒÏ×ÁÔØ + tmenu ToolBar.Paste ÷ËÌÅÉÔØ + tmenu ToolBar.Find ðÏÉÓË... + tmenu ToolBar.FindNext ðÏÉÓË ÓÌÅÄÕÀÝÅÇÏ ÓÏÏÔ×ÅÔÓÔ×ÉÑ + tmenu ToolBar.FindPrev ðÏÉÓË ÐÒÅÄÙÄÕÝÅÇÏ ÓÏÏÔ×ÅÔÓÔ×ÉÑ + tmenu ToolBar.Replace úÁÍÅÎÉÔØ... + tmenu ToolBar.LoadSesn úÁÇÒÕÚÉÔØ ÓÅÁÎÓ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ + tmenu ToolBar.SaveSesn óÏÈÒÁÎÉÔØ ÓÅÁÎÓ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ + tmenu ToolBar.RunScript ÷ÙÐÏÌÎÉÔØ ÓÃÅÎÁÒÉÊ Vim + tmenu ToolBar.Make ëÏÍÐÉÌÑÃÉÑ + tmenu ToolBar.Shell ïÂÏÌÏÞËÁ + tmenu ToolBar.RunCtags óÏÚÄÁÔØ ÆÁÊÌ ÍÅÔÏË + tmenu ToolBar.TagJump ðÅÒÅÊÔÉ Ë ÍÅÔËÅ + tmenu ToolBar.Help óÐÒÁ×ËÁ + tmenu ToolBar.FindHelp îÁÊÔÉ ÓÐÒÁ×ËÕ + endfun +endif +" +" +" Dialog texts +" +" Find in help dialog +" +let g:menutrans_help_dialog = "÷×ÅÄÉÔÅ ËÏÍÁÎÄÕ ÉÌÉ ÓÌÏ×Ï ÄÌÑ ÐÏÉÓËÁ:\n\näÏÂÁ×ØÔÅ i_ ÄÌÑ ÐÏÉÓËÁ ËÏÍÁÎÄ ÒÅÖÉÍÁ ÷ÓÔÁ×ËÉ (ÎÁÐÒÉÍÅÒ, i_CTRL-X)\näÏÂÁ×ØÔÅ c_ ÄÌÑ ÐÏÉÓËÁ ËÏÍÁÎÄ ïÂÙÞÎÏÇÏ ÒÅÖÉÍÁ (ÎÁÐÒÉÍÅÒ, Ó_)\näÏÂÁ×ØÔÅ ' ÄÌÑ ÐÏÉÓËÁ ÓÐÒÁ×ËÉ ÐÏ ÏÐÃÉÉ (ÎÁÐÒÉÍÅÒ, 'shiftwidth')" +" +" Searh path dialog +" +let g:menutrans_path_dialog = "õËÁÖÉÔÅ ÐÕÔØ ÄÌÑ ÐÏÉÓËÁ ÆÁÊÌÏ×.\néÍÅÎÁ ËÁÔÁÌÏÇÏ× ÒÁÚÄÅÌÑÀÔÓÑ ÚÁÐÑÔÙÍÉ." +" +" Tag files dialog +" +let g:menutrans_tags_dialog = "÷×ÅÄÉÔÅ ÉÍÅÎÁ ÆÁÊÌÏ× ÍÅÔÏË (ÞÅÒÅÚ ÚÁÐÑÔÕÀ).\n" +" +" Text width dialog +" +let g:menutrans_textwidth_dialog = "÷×ÅÄÉÔÅ ÛÉÒÉÎÕ ÔÅËÓÔÁ ÄÌÑ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ.\näÌÑ ÏÔÍÅÎÙ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ ××ÅÄÉÔÅ 0." +" +" File format dialog +" +let g:menutrans_fileformat_dialog = "÷ÙÂÅÒÉÔÅ ÆÏÒÍÁÔ ÆÁÊÌÁ." +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nï&ÔÍÅÎÁ" +" +let menutrans_no_file = "[îÅÔ ÆÁÊÌÁ]" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_ru_ru.utf-8.vim b/share/vim/vim74/lang/menu_ru_ru.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_ru_ru.utf-8.vim rename to share/vim/vim74/lang/menu_ru_ru.utf-8.vim diff --git a/share/vim/vim74/lang/menu_ru_ru.vim b/share/vim/vim74/lang/menu_ru_ru.vim new file mode 100644 index 00000000..69616083 --- /dev/null +++ b/share/vim/vim74/lang/menu_ru_ru.vim @@ -0,0 +1,326 @@ +" Menu Translations: Russian +" Maintainer: Sergey Alyoshin +" Previous Maintainer: vassily ragosin +" Last Change: 29 May 2013 +" URL: cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim +" +" $Id: menu_ru_ru.vim,v 1.1 2004/06/13 16:09:10 vimboss Exp $ +" +" Adopted for RuVim project by Vassily Ragosin. +" First translation: Tim Alexeevsky , +" based on ukrainian translation by Bohdan Vlasyuk +" +" +" Quit when menu translations have already been done. +" +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +" Top +menutrans &File &Файл +menutrans &Edit П&равка +menutrans &Tools &Инструменты +menutrans &Syntax &Синтаксис +menutrans &Buffers &Буферы +menutrans &Window &Окно +menutrans &Help С&правка +" +" +" +" Help menu +menutrans &Overview &Обзор +menutrans &User\ Manual Руково&дство\ пользователя +menutrans &How-to\ links &Как\ это\ сделать\.\.\. +menutrans &Find\.\.\. &Поиск +"-------------------- +menutrans &Credits &Благодарности +menutrans Co&pying &Распространение +menutrans &Sponsor/Register Помо&щь/Регистрация +menutrans O&rphans &Сироты +"-------------------- +menutrans &Version &Информация\ о\ программе +menutrans &About &Заставка +" +" +" File menu +menutrans &Open\.\.\.:e &Открыть\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp По&делить\ окно\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Открыть\ в&кладку\.\.\.:tabnew +menutrans &New:enew &Новый:enew +menutrans &Close:close &Закрыть:close +"-------------------- +menutrans &Save:w &Сохранить:w +menutrans Save\ &As\.\.\.:sav Сохранить\ &как\.\.\.:sav +"-------------------- +menutrans Split\ &Diff\ with\.\.\. Ср&авнить\ с\.\.\. +menutrans Split\ Patched\ &By\.\.\. Сравнить\ с\ применением\ зап&латки\.\.\. +"-------------------- +menutrans &Print На&печатать +menutrans Sa&ve-Exit:wqa Вы&ход\ с\ сохранением:wqa +menutrans E&xit:qa &Выход:qa +" +" +" Edit menu +menutrans &Undou О&тменитьu +menutrans &Redo^R В&ернуть^R +menutrans Rep&eat\. Повторит&ь\. +"-------------------- +menutrans Cu&t"+x &Вырезать"+x +menutrans &Copy"+y &Копировать"+y +menutrans &Paste"+gP Вк&леить"+gP +menutrans Put\ &Before[p Вклеить\ пере&д[p +menutrans Put\ &After]p Вклеить\ по&сле]p +menutrans &Deletex &Удалитьx +menutrans &Select\ AllggVG В&ыделить\ всёggVG +"-------------------- +" Athena GUI only +menutrans &Find/ &Поиск/ +menutrans Find\ and\ Rep&lace:%s Поиск\ и\ &замена:%s +" End Athena GUI only +menutrans &Find\.\.\./ &Поиск\.\.\./ +menutrans Find\ and\ Rep&lace\.\.\. Поиск\ и\ &замена\.\.\. +menutrans Find\ and\ Rep&lace\.\.\.:%s Поиск\ и\ &замена\.\.\.:%s +menutrans Find\ and\ Rep&lace\.\.\.:s Поиск\ и\ &замена\.\.\.:s +"-------------------- +menutrans Settings\ &Window Окно\ настройки\ &опций +menutrans Startup\ &Settings Настройки\ запус&ка +menutrans &Global\ Settings &Глобальные\ настройки +menutrans F&ile\ Settings Настройки\ &файлов +menutrans C&olor\ Scheme &Цветовая\ схема +menutrans &Keymap Раскладка\ кл&авиатуры +menutrans Select\ Fo&nt\.\.\. Выбор\ &шрифта\.\.\. +">>>----------------- Edit/Global settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Подсветка\ &найденных\ соответствий:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! &Регистронезависимый\ поиск:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Показывать\ парные\ &элементы:set\ sm! +menutrans &Context\ lines Стр&ок\ вокруг\ курсора +menutrans &Virtual\ Edit Вир&туальное\ редактирование +menutrans Toggle\ Insert\ &Mode:set\ im! Режим\ &Вставки:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! &Совместимость\ с\ Vi:set\ cp! +menutrans Search\ &Path\.\.\. &Путь\ для\ поиска\ файлов\.\.\. +menutrans Ta&g\ Files\.\.\. Файлы\ &меток\.\.\. +" +menutrans Toggle\ &Toolbar &Инструментальная\ панель +menutrans Toggle\ &Bottom\ Scrollbar Полоса\ прокрутки\ вни&зу +menutrans Toggle\ &Left\ Scrollbar Полоса\ прокрутки\ с&лева +menutrans Toggle\ &Right\ Scrollbar Полоса\ прокрутки\ спр&ава +">>>->>>------------- Edit/Global settings/Virtual edit +menutrans Never Выключено +menutrans Block\ Selection При\ выделении\ блока +menutrans Insert\ mode В\ режиме\ Вставки +menutrans Block\ and\ Insert При\ выделении\ блока\ и\ в\ режиме\ Вставки +menutrans Always Включено\ всегда +">>>----------------- Edit/File settings +menutrans Toggle\ Line\ &Numbering:set\ nu! &Нумерация\ строк:set\ nu! +menutrans Toggle\ relati&ve\ Line\ Numbering:set\ rnu! Относите&льная\ нумерация\ строк:set\ nru! +menutrans Toggle\ &List\ Mode:set\ list! Отобра&жение\ невидимых\ символов:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! &Перенос\ длинных\ строк:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Перенос\ &целых\ слов:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Про&белы\ вместо\ табуляции:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Автоматическое\ форматирование\ &отступов:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Форматирование\ отступов\ в\ &стиле\ C:set\ cin! +">>>--- +menutrans &Shiftwidth Вели&чина\ отступа +menutrans Soft\ &Tabstop Ширина\ &табуляции +menutrans Te&xt\ Width\.\.\. &Ширина\ текста\.\.\. +menutrans &File\ Format\.\.\. &Формат\ файла\.\.\. +" +" +" +" Tools menu +menutrans &Jump\ to\ this\ tagg^] &Переход\ к\ меткеg^] +menutrans Jump\ &back^T &Вернуться\ назад^T +menutrans Build\ &Tags\ File Создать\ &файл\ меток +"------------------- +menutrans &Folding Работа\ со\ &складками +menutrans &Spelling Пр&авописание +menutrans &Diff &Отличия\ (diff) +"------------------- +menutrans &Make:make Ко&мпиляция:make +menutrans &List\ Errors:cl Список\ о&шибок:cl +menutrans L&ist\ Messages:cl! Список\ все&х\ ошибок\ и\ предупреждений:cl! +menutrans &Next\ Error:cn Следу&ющая\ ошибка:cn +menutrans &Previous\ Error:cp П&редыдущая\ ошибка:cp +menutrans &Older\ List:cold Более\ стар&ый\ список\ ошибок:cold +menutrans N&ewer\ List:cnew Более\ све&жий\ список\ ошибок:cnew +menutrans Error\ &Window Ок&но\ ошибок +menutrans Se&T\ Compiler Выбор\ &компилятора +"------------------- +menutrans &Convert\ to\ HEX:%!xxd П&еревести\ в\ HEX:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Перевести\ и&з\ HEX:%!xxd\ -r +">>>---------------- Tools/Spelling +menutrans &Spell\ Check\ On &Вкл\ проверку\ правописания +menutrans Spell\ Check\ &Off Вы&кл\ проверку\ правописания +menutrans To\ &Next\ error]s &Следующая\ ошибка +menutrans To\ &Previous\ error[s &Предыдущая\ ошибка +menutrans Suggest\ &Correctionsz= Предложить\ исп&равления +menutrans &Repeat\ correction:spellrepall Пов&торить\ исправление\ для\ всех +"------------------- +menutrans Set\ language\ to\ "en" Установить\ язык\ "en" +menutrans Set\ language\ to\ "en_au" Установить\ язык\ "en_au" +menutrans Set\ language\ to\ "en_ca" Установить\ язык\ "en_ca" +menutrans Set\ language\ to\ "en_gb" Установить\ язык\ "en_gb" +menutrans Set\ language\ to\ "en_nz" Установить\ язык\ "en_nz" +menutrans Set\ language\ to\ "en_us" Установить\ язык\ "en_us" +menutrans &Find\ More\ Languages &Найти\ больше\ языков +let g:menutrans_set_lang_to = 'Установить язык' +">>>---------------- Folds +menutrans &Enable/Disable\ foldszi Вкл/выкл\ &складкиzi +menutrans &View\ Cursor\ Linezv Открыть\ строку\ с\ &курсоромzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Открыть\ &только\ строку\ с\ курсоромzMzx +menutrans C&lose\ more\ foldszm Закрыть\ &больше\ складокzm +menutrans &Close\ all\ foldszM Закрыть\ &все\ складкиzM +menutrans &Open\ all\ foldszR Откр&ыть\ все\ складкиzR +menutrans O&pen\ more\ foldszr Отк&рыть\ больше\ складокzr +menutrans Fold\ Met&hod &Метод\ складок +menutrans Create\ &Foldzf Со&здать\ складкуzf +menutrans &Delete\ Foldzd У&далить\ складкуzd +menutrans Delete\ &All\ FoldszD Удалить\ вс&е\ складкиzD +menutrans Fold\ col&umn\ width &Ширина\ колонки\ складок +">>>->>>----------- Tools/Folds/Fold Method +menutrans M&anual Вру&чную +menutrans I&ndent О&тступ +menutrans E&xpression &Выражение +menutrans S&yntax &Синтаксис +menutrans Ma&rker &Маркеры +">>>--------------- Tools/Diff +menutrans &Update О&бновить +menutrans &Get\ Block Изменить\ &этот\ буфер +menutrans &Put\ Block Изменить\ &другой\ буфер +">>>--------------- Tools/Diff/Error window +menutrans &Update:cwin О&бновить:cwin +menutrans &Close:cclose &Закрыть:cclose +menutrans &Open:copen &Открыть:copen +" +" +" Syntax menu +" +menutrans &Show\ filetypes\ in\ menu Показать\ меню\ для\ выбора\ типа\ &файла +menutrans Set\ '&syntax'\ only &Изменять\ только\ значение\ 'syntax' +menutrans Set\ '&filetype'\ too Изменять\ &также\ значение\ 'filetype' +menutrans &Off &Отключить +menutrans &Manual Вру&чную +menutrans A&utomatic &Автоматически +menutrans on/off\ for\ &This\ file Вкл/выкл\ для\ &этого\ файла +menutrans Co&lor\ test Проверка\ &цветов +menutrans &Highlight\ test Проверка\ под&светки +menutrans &Convert\ to\ HTML С&делать\ HTML\ с\ подсветкой +" +" +" Buffers menu +" +menutrans &Refresh\ menu О&бновить\ меню +menutrans Delete У&далить +menutrans &Alternate &Соседний +menutrans &Next С&ледующий +menutrans &Previous &Предыдущий +menutrans [No\ File] [Нет\ файла] +" +" +" Window menu +" +menutrans &New^Wn &Новое\ окно^Wn +menutrans S&plit^Ws &Разделить\ окно^Ws +menutrans Sp&lit\ To\ #^W^^ Открыть\ &соседний\ файл\ в\ новом\ окне^W^^ +menutrans Split\ &Vertically^Wv Разделить\ по\ &вертикали^Wv +menutrans Split\ File\ E&xplorer Открыть\ проводник\ по\ &файловой\ системе +" +menutrans &Close^Wc &Закрыть\ это\ окно^Wc +menutrans Close\ &Other(s)^Wo Закрыть\ &остальные\ окна^Wo +" +menutrans Move\ &To &Переместить +menutrans Rotate\ &Up^WR Сдвинуть\ ввер&х^WR +menutrans Rotate\ &Down^Wr Сдвинуть\ в&низ^Wr +" +menutrans &Equal\ Size^W= О&динаковый\ размер^W= +menutrans &Max\ Height^W_ Максимальная\ в&ысота^W_ +menutrans M&in\ Height^W1_ Минимальная\ высо&та^W1_ +menutrans Max\ &Width^W\| Максимальная\ &ширина^W\| +menutrans Min\ Widt&h^W1\| Минимал&ьная\ ширина^W1\| +">>>----------------- Window/Move To +menutrans &Top^WK В&верх^WK +menutrans &Bottom^WJ В&низ^WJ +menutrans &Left\ side^WH В&лево^WH +menutrans &Right\ side^WL В&право^WL +" +" +" The popup menu +" +" +menutrans &Undo О&тменить +menutrans Cu&t &Вырезать +menutrans &Copy &Копировать +menutrans &Paste Вк&леить +menutrans &Delete &Удалить +menutrans Select\ Blockwise Блоковое\ выделение +menutrans Select\ &Word Выделить\ &слово +menutrans Select\ &Line Выделить\ ст&року +menutrans Select\ &Block Выделить\ &блок +menutrans Select\ &All В&ыделить\ &всё +" +" The GUI toolbar +" +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Открыть файл + tmenu ToolBar.Save Сохранить файл + tmenu ToolBar.SaveAll Сохранить все файлы + tmenu ToolBar.Print Напечатать + tmenu ToolBar.Undo Отменить + tmenu ToolBar.Redo Вернуть + tmenu ToolBar.Cut Вырезать + tmenu ToolBar.Copy Копировать + tmenu ToolBar.Paste Вклеить + tmenu ToolBar.Find Поиск... + tmenu ToolBar.FindNext Поиск следующего соответствия + tmenu ToolBar.FindPrev Поиск предыдущего соответствия + tmenu ToolBar.Replace Заменить... + tmenu ToolBar.LoadSesn Загрузить сеанс редактирования + tmenu ToolBar.SaveSesn Сохранить сеанс редактирования + tmenu ToolBar.RunScript Выполнить сценарий Vim + tmenu ToolBar.Make Компиляция + tmenu ToolBar.Shell Оболочка + tmenu ToolBar.RunCtags Создать файл меток + tmenu ToolBar.TagJump Перейти к метке + tmenu ToolBar.Help Справка + tmenu ToolBar.FindHelp Найти справку + endfun +endif +" +" +" Dialog texts +" +" Find in help dialog +" +let g:menutrans_help_dialog = "Введите команду или слово для поиска:\n\nДобавьте i_ для поиска команд режима Вставки (например, i_CTRL-X)\nДобавьте c_ для поиска команд Обычного режима (например, с_)\nДобавьте ' для поиска справки по опции (например, 'shiftwidth')" +" +" Searh path dialog +" +let g:menutrans_path_dialog = "Укажите путь для поиска файлов.\nИмена каталогов разделяются запятыми." +" +" Tag files dialog +" +let g:menutrans_tags_dialog = "Введите имена файлов меток (через запятую).\n" +" +" Text width dialog +" +let g:menutrans_textwidth_dialog = "Введите ширину текста для форматирования.\nДля отмены форматирования введите 0." +" +" File format dialog +" +let g:menutrans_fileformat_dialog = "Выберите формат файла." +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nО&тмена" +" +let menutrans_no_file = "[Нет файла]" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_sk.cp1250.vim b/share/vim/vim74/lang/menu_sk.cp1250.vim similarity index 100% rename from share/vim/vim73/lang/menu_sk.cp1250.vim rename to share/vim/vim74/lang/menu_sk.cp1250.vim diff --git a/share/vim/vim73/lang/menu_sk_sk.1250.vim b/share/vim/vim74/lang/menu_sk_sk.1250.vim similarity index 100% rename from share/vim/vim73/lang/menu_sk_sk.1250.vim rename to share/vim/vim74/lang/menu_sk_sk.1250.vim diff --git a/share/vim/vim73/lang/menu_sk_sk.cp1250.vim b/share/vim/vim74/lang/menu_sk_sk.cp1250.vim similarity index 100% rename from share/vim/vim73/lang/menu_sk_sk.cp1250.vim rename to share/vim/vim74/lang/menu_sk_sk.cp1250.vim diff --git a/share/vim/vim74/lang/menu_sk_sk.iso_8859-2.vim b/share/vim/vim74/lang/menu_sk_sk.iso_8859-2.vim new file mode 100644 index 00000000..69de4e7b --- /dev/null +++ b/share/vim/vim74/lang/menu_sk_sk.iso_8859-2.vim @@ -0,0 +1,237 @@ +" Menu Translations: Slovak +" Translated By: Martin Lacko +" Last Change: 2012 May 01 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding iso-8859-2 + +" Help menu +menutrans &Help &Pomocník +menutrans &Overview &Prehµad +menutrans &User\ Manual Po&u¾ívateµský\ manuál +menutrans &How-to\ links &Tipy +menutrans &Find\.\.\. &Nájs»\.\.\. +menutrans &Credits Poï&akovanie +menutrans O&rphans Si&roty +menutrans Co&pying &Licencia +menutrans &Version &Verzia +menutrans &About &O\ programe + +" File menu +menutrans &File &Súbor +menutrans &Open\.\.\.:e &Otvori»\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Ot&vori»\ v\ novom\ okne\.\.\.:sp +menutrans &New:enew &Nový:enew +menutrans &Close:close &Zatvori»:close +menutrans &Save:w &Ulo¾i»:w +menutrans Save\ &As\.\.\.:sav Ulo¾i»\ &ako\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Otvor&i»\ porovnanie\ v\ novom\ okne\ s\.\.\. +menutrans Split\ Patched\ &By\.\.\. Otvo&ri»\ aktualizované\ s\.\.\. +menutrans &Print &Tlaè +menutrans Sa&ve-Exit:wqa U&lo¾i»-Koniec:wqa +menutrans E&xit:qa &Koniec:qa + +" Edit menu +menutrans &Edit &Úpravy +menutrans &Undou &Spä»u +menutrans &Redo^R Z&ru¹i»\ spä»^R +menutrans Rep&eat\. &Opakova»\. +menutrans Cu&t"+x &Vystrihnú»"+x +menutrans &Copy"+y &Kopírova»"+y +menutrans &Paste"+gP V&lo¾i»"+gP +menutrans Put\ &Before[p Vlo¾i»\ &pred[p +menutrans Put\ &After]p Vlo¾i»\ za]p +menutrans &Select\ allggVG Vy&bra»\ v¹etkoggVG +menutrans &Deletex Vy&maza»x +menutrans &Find\.\.\. &Nájs»\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. N&ahradi»\.\.\. +menutrans Settings\ &Window Mo&¾nosti +menutrans &Global\ Settings &Globálne mo¾nosti +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Prepnú»\ paletu\ zvýrazòovania:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Prepnú»\ &ignorovanie veµkosti:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Prepnú»\ &ukáza»\ zhodu:set\ sm! +menutrans &Context\ lines &Kontextové\ riadky +menutrans &Virtual\ Edit &Virtuálne úpravy +menutrans Never Nikdy +menutrans Block\ Selection Blokový\ výber +menutrans Insert\ mode Re¾im\ vkladania +menutrans Block\ and\ Insert Blok\ a\ vkladanie +menutrans Always V¾dy +menutrans Toggle\ Insert\ &Mode:set\ im! Prepnú»\ re¾i&m\ vkladania:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Prepnú»\ vi\ kompatibilitu:set\ cp! +menutrans Search\ &Path\.\.\. Cesta\ &hµadania\.\.\. +menutrans Ta&g\ Files\.\.\. Ta&gové súbory\.\.\. +menutrans Toggle\ &Toolbar Prepnú»\ &panel +menutrans Toggle\ &Bottom\ Scrollbar Prepnú»\ spodný\ posuvník +menutrans Toggle\ &Left\ Scrollbar Prepnú»\ µavý\ posuvník +menutrans Toggle\ &Right\ Scrollbar Prepnú»\ pravý\ posuvník +menutrans F&ile\ Settings Nastavenia\ súboru +menutrans Toggle\ Line\ &Numbering:set\ nu! Prepnú»\ èíslova&nie\ riadkov:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Prepnú»\ re¾im\ &zoznamu:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Prepnú»\ z&alamovanie\ riadkov:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Prepnú»\ za&lamovanie\ slov:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Prepnú»\ roz¹ír&ené\ tabulátory:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Prepnú»\ automatické\ &odsadzovanie:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Prepnú»\ &C-odsadzovanie:set\ cin! +menutrans &Shiftwidth &©írka\ ¹iftu +menutrans Soft\ &Tabstop &Softvérový\ tabulátor +menutrans Te&xt\ Width\.\.\. ©írka\ te&xtu\.\.\. +menutrans &File\ Format\.\.\. &Formát\ súboru\.\.\. +menutrans C&olor\ Scheme Far&ebná\ schéma + +" Programming menu +menutrans &Tools &Nástroje +menutrans &Jump\ to\ this\ tagg^] &Skoèi»\ na\ znaèkug^] +menutrans Jump\ &back^T Sk&oèi»\ spä»^T +menutrans Build\ &Tags\ File &Vytvori»\ súbor\ znaèiek +menutrans &Folding &Vnáranie +menutrans &Enable/Disable\ foldszi Zapnú»/Vypnú»\ vnárani&ezi +menutrans &View\ Cursor\ Linezv Zobrazi»\ kurzoro&vý\ riadokzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Zobrazi»\ iba\ kurzorový\ riadokzMzx +menutrans C&lose\ more\ foldszm Zatvori»\ viac \vnorenízm +menutrans &Close\ all\ foldszM Zatvor&i»\ v¹etky\ vnoreniazM +menutrans O&pen\ more\ foldszr O&tvori»\ viac\ vnorenízr +menutrans &Open\ all\ foldszR &Otvori»\ v¹etky\ vnoreniazR +menutrans Fold\ Met&hod Metó&da\ vnárania +menutrans M&anual M&anuálne +menutrans I&ndent Odsade&nie +menutrans E&xpression &Výraz +menutrans S&yntax S&yntax +menutrans &Diff Roz&diel +menutrans Ma&rker Zna&èkovaè +menutrans Create\ &Foldzf Vyt&vori»\ vnoreniezf +menutrans &Delete\ Foldzd V&ymaza»\ vnoreniezd +menutrans Delete\ &All\ FoldszD Vymaza»\ v¹etky\ vnoreniazD +menutrans Fold\ column\ &width ©írka\ &vkladaného\ ståpca +menutrans &Diff &Rozdiely +menutrans &Update Akt&ualizova» +menutrans &Get\ Block Zob&ra»\ blok +menutrans &Put\ Block &Vlo¾i»\ blok +menutrans Error\ &Window Chybové\ &okno +menutrans &Update:cwin Akt&ualizova»:cwin +menutrans &Open:copen &Otvori»:copen +menutrans &Close:cclose &Zatvori»:cclose +menutrans &Convert\ to\ HEX:%!xxd &Konvertova»\ do\ HEX:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Konve&rtova»\ spä»:%!xxd\ -r +menutrans &Make:make &Make:make +menutrans &List\ Errors:cl Výpis\ &chýb:cl +menutrans L&ist\ Messages:cl! Výp&is\ správ:cl! +menutrans &Next\ Error:cn Ïa&l¹ia\ chyba:cn +menutrans &Previous\ Error:cp &Predchádzajúca\ chyba:cp +menutrans &Older\ List:cold Sta&r¹í\ zoznam:cold +menutrans N&ewer\ List:cnew Nov¹í\ &zoznam:cnew +menutrans Error\ &Window:cwin Chybové\ o&kno:cwin +menutrans &Set\ Compiler Vyberte\ k&ompilátor +menutrans Convert\ to\ HEX:%!xxd Prvies»\ do\ ¹es&tnástkového\ formátu:%!xxd +menutrans Convert\ back:%!xxd\ -r Pr&evies»\ spä»:%!xxd\ -r + +" Names for buffer menu. +menutrans &Buffers &Vyrovnávacia\ pamä» +menutrans &Refresh\ menu Obnovi» +menutrans &Delete Vymaza» +menutrans &Alternate Zmeni» +menutrans &Next Ï&al¹ia +menutrans &Previous &Predchádzajúca +menutrans [No File] [®iadny\ súbor] + +" Window menu +menutrans &Window &Okná +menutrans &New^Wn &Nové^Wn +menutrans S&plit^Ws &Rozdeli»^Ws +menutrans Sp&lit\ To\ #^W^^ Ro&zdeli»\ na\ #^W^^ +menutrans Split\ &Vertically^Wv Rozdeli»\ &vertikálne^Wv +menutrans Split\ File\ E&xplorer Otvori»\ pri&eskumníka +menutrans &Close^Wc Zatvor&i»^Wc +menutrans Close\ &Other(s)^Wo Zatvori»\ i&né^Wo +menutrans Move\ &To Presunú&» +menutrans &Top^WK Na&hor^WK +menutrans &Bottom^WJ Nado&l^WJ +menutrans &Left\ side^WH V&µavo^WJ +menutrans &Right\ side^WL Vprav&o^WL +menutrans Ne&xt^Ww Ï&al¹ie^Ww +menutrans P&revious^WW &Predchádzajúce^WW +menutrans &Equal\ Size^W= Rovnaká\ vý¹&ka^W= +menutrans &Max\ Height^W_ &Maximálna\ vý¹ka^W_ +menutrans M&in\ Height^W1_ Minimálna\ vý&¹ka^W1_ +menutrans Max\ &Width^W\| Maximálna\ ¹írka^W\| +menutrans Min\ Widt&h^W1\| Minimálna ¹irka^W1\| +menutrans Rotate\ &Up^WR Rotova&»\ nahor^WR +menutrans Rotate\ &Down^Wr Rotova»\ na&dol^Wr +menutrans Select\ Fo&nt\.\.\. Vy&bra»\ písmo\.\.\. + +" The popup menu +menutrans &Undo &Spä» +menutrans Cu&t &Vystrihnú» +menutrans &Copy &Kopírova» +menutrans &Paste V&lo¾i» +menutrans &Delete V&ymaza» +menutrans Select\ Blockwise Vybra»\ blokovo +menutrans Select\ &Word Vybra»\ sl&ovo +menutrans Select\ &Line Vybra»\ &riadok +menutrans Select\ &Block Vybra»\ &blok +menutrans Select\ &All Vybra»\ v¹&etko + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Otvori» súbor + tmenu ToolBar.Save Ulo¾i» súbor + tmenu ToolBar.SaveAll Ulo¾i» v¹etky + tmenu ToolBar.Print Tlaè + tmenu ToolBar.Undo Spä» + tmenu ToolBar.Redo Opakova» + tmenu ToolBar.Cut Vystrihnú» + tmenu ToolBar.Copy Kopírova» + tmenu ToolBar.Paste Vlo¾i» + tmenu ToolBar.Find Nájs»... + tmenu ToolBar.FindNext Nájs» ïal¹ie + tmenu ToolBar.FindPrev Nájs» predchádzajúce + tmenu ToolBar.Replace Nahradi»... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nové okno + tmenu ToolBar.WinSplit Rozdeli» okno + tmenu ToolBar.WinMax Maximalizova» okno + tmenu ToolBar.WinMin Minimalizova» okno + tmenu ToolBar.WinVSplit Rozdeli» okno vertikálne + tmenu ToolBar.WinMaxWidth Maximalizova» ¹írku okna + tmenu ToolBar.WinMinWidth Minimalizova» ¹írku okna + tmenu ToolBar.WinClose Zatvori» okno + endif + tmenu ToolBar.LoadSesn Naèíta» sedenie + tmenu ToolBar.SaveSesn Ulo¾i» sedenie + tmenu ToolBar.RunScript Spusti» skript + tmenu ToolBar.Make Spusti» make + tmenu ToolBar.Shell Spusti» ¹el + tmenu ToolBar.RunCtags Spusti» ctags + tmenu ToolBar.TagJump Skoèi» na tag pod kurzorom + tmenu ToolBar.Help Pomocník + tmenu ToolBar.FindHelp Nájs» pomocníka k... + endfun +endif + +" Syntax menu +menutrans &Syntax &Syntax +menutrans Set\ '&syntax'\ only Nastavi»\ iba\ 'syntax' +menutrans Set\ '&filetype'\ too Nastavi»\ aj\ 'filetype' +menutrans &Off &Vypnú» +menutrans &Manual &Ruène +menutrans A&utomatic A&utomaticky +" menutrans o&n\ (this\ file) &Zapnú»\ (pre\ tento\ súbor) +" menutrans o&ff\ (this\ file) Vyp&nú»\ (pre\ tento\ súbor ) +menutrans on/off\ for\ &This\ file Zapnú»/vypnú»\ pre\ &tento\ súbor +menutrans Co&lor\ test Test\ &farieb +menutrans &Highlight\ test &Test\ zvýrazòovania +menutrans &Convert\ to\ HTML &Previes»\ do\ HTML + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_sk_sk.vim b/share/vim/vim74/lang/menu_sk_sk.vim similarity index 100% rename from share/vim/vim73/lang/menu_sk_sk.vim rename to share/vim/vim74/lang/menu_sk_sk.vim diff --git a/share/vim/vim74/lang/menu_sl_si.cp1250.vim b/share/vim/vim74/lang/menu_sl_si.cp1250.vim new file mode 100644 index 00000000..8999b15d --- /dev/null +++ b/share/vim/vim74/lang/menu_sl_si.cp1250.vim @@ -0,0 +1,299 @@ +" Menu Translations: Slovenian / Slovensko +" Maintainer: Mojca Miklavec +" Originally By: Mojca Miklavec +" Last Change: Sat, 17 Jun 2006 +" vim:set foldmethod=marker tabstop=8: + +" TODO: add/check all '&'s + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding cp1250 + +" {{{ FILE / DATOTEKA +menutrans &File &Datoteka +menutrans &Open\.\.\.:e &Odpri\ \.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Odpri\ de&ljeno\ \.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Odpri\ v\ zavi&hku\ \.\.\.:tabnew +menutrans &New:enew &Nova:enew +menutrans &Close:close &Zapri:close +menutrans &Save:w &Shrani:w +menutrans Save\ &As\.\.\.:sav Shrani\ &kot\ \.\.\.:sav +menutrans &Print Na&tisni +menutrans Sa&ve-Exit:wqa Shrani\ in\ &konèaj:wqa +menutrans E&xit:qa &Izhod:qa + +if has("diff") + menutrans Split\ &Diff\ with\.\.\. Primerjaj\ z\ (di&ff)\ \.\.\. + menutrans Split\ Patched\ &By\.\.\. &Popravi\ z\ (patch)\ \.\.\. +endif +" }}} FILE / DATOTEKA + +" {{{ EDIT / UREDI +menutrans &Edit &Uredi +menutrans &Undou &Razveljaviu +menutrans &Redo^R &Obnovi^R +menutrans Rep&eat\. Po&novi\. +menutrans Cu&t"+x &Izreži"+x +menutrans &Copy"+y &Kopiraj"+y +menutrans &Paste"+gP &Prilepi"+gP +menutrans Put\ &Before[p Vrini\ pred[p +menutrans Put\ &After]p Vrini\ za]p +menutrans &Deletex Iz&brišix +menutrans &Select\ allggVG Izberi\ vseggVG +menutrans &Find\.\.\. Po&išèi\ \.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Poišèi\ in\ &zamenjaj\ \.\.\. + +" [-- SETTINGS --] +menutrans Settings\ &Window Nastavitve\ \.\.\. +menutrans Startup\ &Settings Zaèetne\ nastavitve +menutrans &Global\ Settings &Globalne\ nastavitve + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Vkljuèi/izkljuèi\ poudarjanje\ iskanega\ niza:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Vkljuèi/izkljuèi\ loèevanje\ velikih\ in\ malih\ èrk:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Vkljuèi/izkljuèi\ kratek\ skok\ na\ pripadajoèi\ oklepaj:set\ sm! + +menutrans &Context\ lines Št\.\ vidnih\ vrstic\ pred/za\ kurzorjem + +menutrans &Virtual\ Edit Dovoli\ položaj\ kazalèka,\ kjer\ ni\ besedila +menutrans Never Nikoli +menutrans Block\ Selection Le\ med\ izbiranjem\ bloka +menutrans Insert\ mode Le\ v\ naèinu\ za\ pisanje +menutrans Block\ and\ Insert Pri\ obojem +menutrans Always Vedno +menutrans Toggle\ Insert\ &Mode:set\ im! Vkljuèi/izkljuèi\ naèin\ za\ pisanje:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vkljuèi/izkljuèi\ združljivost\ z\ Vi-jem:set\ cp! + +menutrans Search\ &Path\.\.\. Pot\ za\ iskanje\ \.\.\. +menutrans Ta&g\ Files\.\.\. Ta&g-datoteke\.\.\. + +menutrans Toggle\ &Toolbar Pokaži/skrij\ Orodja +menutrans Toggle\ &Bottom\ Scrollbar Pokaži/skrij\ spodnji\ drsnik +menutrans Toggle\ &Left\ Scrollbar Pokaži/skrij\ levi\ drsnik +menutrans Toggle\ &Right\ Scrollbar Pokaži/skrij\ desni\ drsnik + +" Edit/File Settings +menutrans F&ile\ Settings &Nastavitve\ datoteke + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! Pokaži/skrij\ številke\ vrstic:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Pokaži/skrij\ nevidne\ znake:set\ list! " space/tab +menutrans Toggle\ Line\ &Wrap:set\ wrap! Vkljuèi/izkljuèi\ prelome\ vrstic:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Vkljuèi/izkljuèi\ prelome\ vrstic\ med\ besedami:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Vkljuèi/izkljuèi\ zamenjavo\ tabulatorjev\ s\ presledki:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Vkljuèi/izkljuèi\ avtomatsko\ zamikanje\ vrstic:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Vkljuèi/izkljuèi\ C-jevski\ naèin\ zamikanja\ vrstic:set\ cin! + +" other options +menutrans &Shiftwidth Širina\ zamika\ vrstic +menutrans Soft\ &Tabstop Širina\ &tabulatorja +menutrans Te&xt\ Width\.\.\. Širina\ besedila\ \.\.\. +menutrans &File\ Format\.\.\. Format\ &datoteke\ \.\.\. +menutrans C&olor\ Scheme &Barvna\ shema\ \.\.\. +menutrans &Keymap &Keymap +menutrans Select\ Fo&nt\.\.\. Pisava\ \.\.\. +" }}} EDIT / UREDI + +" {{{ TOOLS / ORODJA +menutrans &Tools &Orodja +menutrans &Jump\ to\ this\ tagg^] &Skoèi\ k\ tej\ znaèkig^] +menutrans Jump\ &back^T Skoèi\ Na&zaj^T +menutrans Build\ &Tags\ File Napravi\ datoteke\ z\ znaèkami\ (tag) +if has("spell") + menutrans &Spelling Èrkovalnik + menutrans &Spell\ Check\ On &Vkljuèi + menutrans Spell\ Check\ &Off &Izkljuèi + menutrans To\ &Next\ error]s K\ &naslednji\ napaki]s + menutrans To\ &Previous\ error[s K\ &prejšnji\ napaki[s + menutrans Suggest\ &Correctionsz= Predlagaj\ popravekz= + menutrans &Repeat\ correction:spellrepall Po&novi\ popravke\ na\ vseh\ besedah:spellrepall + menutrans Set\ language\ to\ "en" Angleški\ "en" + menutrans Set\ language\ to\ "en_au" Angleški\ "en_au" + menutrans Set\ language\ to\ "en_ca" Angleški\ "en_ca" + menutrans Set\ language\ to\ "en_gb" Angleški\ "en_gb" + menutrans Set\ language\ to\ "en_nz" Angleški\ "en_nz" + menutrans Set\ language\ to\ "en_us" Angleški\ "en_us" + menutrans Set\ language\ to\ "sl" Slovenski\ "sl" + menutrans Set\ language\ to\ "de" Nemški\ "de" + menutrans Set\ language\ to\ Èrkovalnik:\ + menutrans &Find\ More\ Languages &Ostali\ jeziki +endif +if has("folding") + menutrans &Folding Zvijanje\ kode + " open close folds + menutrans &Enable/Disable\ foldszi Omogoèi/onemogoèi\ zvijanjezi " Omogoèi/onemogoèi\ zavihke + menutrans &View\ Cursor\ Linezv Pokaži\ vrstico\ s\ kazalèkomzv " kjer je kazalec + menutrans Vie&w\ Cursor\ Line\ onlyzMzx Pokaži\ samo\ vrstico\ s\ kazalèkomzMzx + menutrans C&lose\ more\ foldszm Zvij\ naslednji\ nivozm " Zapri\ veè\ zavihkov + menutrans &Close\ all\ foldszM Zvij\ vso\ kodozM " Zapri\ vse\ zavihke + menutrans O&pen\ more\ foldszr Razvij\ en\ nivozr " Odpri\ veè\ zavihkov + menutrans &Open\ all\ foldszR Razvij\ vso\ kodozR " Odpri\ vse\ zavihke + " fold method + menutrans Fold\ Met&hod Kriterij\ za\ zvijanje " Ustvarjanje\ zavihkov + menutrans M&anual &Roèno + menutrans I&ndent Glede\ na\ &poravnavo + menutrans E&xpression Z\ &izrazi\ (foldexpr) + menutrans S&yntax Glede\ na\ &sintakso + menutrans &Diff Razlike\ (&diff) + menutrans Ma&rker Z\ &markerji/oznaèbami + " create and delete folds + " TODO accelerators + menutrans Create\ &Foldzf Ustvari\ zvitekzf + menutrans &Delete\ Foldzd Izbriši\ zvitekzd + menutrans Delete\ &All\ FoldszD Izbriši\ vse\ zvitkezD + " moving around in folds + menutrans Fold\ column\ &width Širina\ drevesa\ z\ zvitki +endif " has folding + +if has("diff") + menutrans &Diff Razlike\ (&Diff) + menutrans &Update &Posodobi + menutrans &Get\ Block &Sprejmi\ (spremeni\ to\ okno) " XXX: check if translation is OK + menutrans &Put\ Block &Pošlji\ (spremeni\ drugo\ okno) +endif + +menutrans &Make:make Napravi\ (&make):make +menutrans &List\ Errors:cl Pokaži\ napake:cl +menutrans L&ist\ Messages:cl! Pokaži\ sporoèila:cl! +menutrans &Next\ Error:cn K\ &naslednji\ napaki:cn +menutrans &Previous\ Error:cp K\ &prejšnji\ napaki:cp +menutrans &Older\ List:cold K\ &starejšemu\ seznamu\ napak:cold +menutrans N&ewer\ List:cnew K\ &novejšemu\ seznamu\ napak:cnew + +menutrans Error\ &Window Okno\ z\ napakami +menutrans &Update:cwin &Posodobi:cwin +menutrans &Open:copen &Odpri:copen +menutrans &Close:cclose &Zapri:cclose + +menutrans &Set\ Compiler Nastavi\ &prevajalnik +menutrans Se&T\ Compiler Nastavi\ &prevajalnik " bug in original translation? + +menutrans &Convert\ to\ HEX:%!xxd Pretvori\ v\ HE&X:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Pretvori\ nazaj:%!xxd\ -r +" }}} TOOLS / ORODJA + +" {{{ SYNTAX / BARVANJE KODE +menutrans &Syntax &Barvanje\ kode +menutrans &Show\ filetypes\ in\ menu Podprte\ vrste\ datotek +menutrans Set\ '&syntax'\ only Samo\ barvanje\ ('&syntax') +menutrans Set\ '&filetype'\ too Tudi\ obnašanje\ ('&filetype') +menutrans &Off &Izkljuèeno +menutrans &Manual &Roèno +menutrans A&utomatic &Avtomatsko +menutrans on/off\ for\ &This\ file Vkljuèi/izkljuèi\ za\ to\ datoteko +menutrans Co&lor\ test Preizkus\ barv +menutrans &Highlight\ test Preizkus\ barvanja\ kode +menutrans &Convert\ to\ HTML Pretvori\ v\ &HTML +" }}} SYNTAX / BARVANJE KODE + +" {{{ BUFFERS / MEDPOMNILNIK +menutrans &Buffers &Medpomnilnik " XXX: ni najbolje: okno bi bolj pristajalo, ampak okno je že +menutrans &Refresh\ menu &Osveži +menutrans Delete &Briši +menutrans &Alternate &Menjaj +menutrans &Next &Naslednji +menutrans &Previous &Prejšnji +menutrans [No\ File] [Brez\ datoteke] +" }}} BUFFERS / MEDPOMNILNIK + +" {{{ WINDOW / OKNO +menutrans &Window &Okno +menutrans &New^Wn &Novo^Wn +menutrans S&plit^Ws Razdeli^Ws +menutrans Split\ &Vertically^Wv Razdeli\ navpièno^Ws +menutrans Split\ File\ E&xplorer Razdeli:\ Vsebina\ mape +menutrans Sp&lit\ To\ #^W^^ Razdeli\ v\ #^W^^ +menutrans &Close^Wc &Zapri^Wc +menutrans Close\ &Other(s)^Wo Zapri\ &ostala^Wo +menutrans Move\ &To Premakni +menutrans &Top^WK &Gor^WK +menutrans &Bottom^WJ &Dol^WJ +menutrans &Left\ side^WH &Levo^WH +menutrans &Right\ side^WL &Desno^WL +menutrans Rotate\ &Up^WR Zavrti\ navzgor^WR +menutrans Rotate\ &Down^Wr Zavrti\ navzdol^Wr +menutrans &Equal\ Size^W= &Enaka\ velikost^W= +menutrans &Max\ Height^W_ Najvišje^W_ +menutrans M&in\ Height^W1_ Najnižje^W1_ +menutrans Max\ &Width^W\| Najširše^W\| +menutrans Min\ Widt&h^W1\| Najožje^W1\| +" }}} WINDOW / OKNO + +" {{{ HELP / POMOÈ +menutrans &Help &Pomoè +menutrans &Overview Hitri\ pregled +menutrans &User\ Manual P&riroènik +menutrans &How-to\ links &How-to\ kazalo +menutrans &Find\.\.\. Po&išèi\ \.\.\. " conflicts with Edit.Find +menutrans &Credits &Avtorji +menutrans Co&pying &Licenca +menutrans &Sponsor/Register Registracija\ in\ &donacije +menutrans O&rphans &Sirotam +menutrans &Version &Verzija +menutrans &About &O\ programu +" }}} HELP / POMOÈ + +" {{{ POPUP +menutrans &Undo &Razveljavi +menutrans Cu&t &Izreži +menutrans &Copy &Kopieraj +menutrans &Paste &Prilepi +menutrans &Delete &Zbriši +menutrans Select\ Blockwise Izbiraj\ po\ blokih +menutrans Select\ &Word Izberi\ &besedo +menutrans Select\ &Sentence Izberi\ &stavek +menutrans Select\ Pa&ragraph Izberi\ &odstavek +menutrans Select\ &Line Izberi\ vrs&tico +menutrans Select\ &Block Izberi\ b&lok +menutrans &Select\ AllggVG Izberi\ &vseggVG +" }}} POPUP + +" {{{ TOOLBAR +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Odpri datoteko + tmenu ToolBar.Save Shrani datoteko + tmenu ToolBar.SaveAll Shrani vse datoteke + tmenu ToolBar.Print Natisni + tmenu ToolBar.Undo Razveljavi + tmenu ToolBar.Redo Obnovi + tmenu ToolBar.Cut Izreži + tmenu ToolBar.Copy Kopiraj + tmenu ToolBar.Paste Prilepi + tmenu ToolBar.Find Najdi ... + tmenu ToolBar.FindNext Najdi naslednje + tmenu ToolBar.FindPrev Najdi prejšnje + tmenu ToolBar.Replace Najdi in zamenjaj ... + tmenu ToolBar.LoadSesn Naloži sejo + tmenu ToolBar.SaveSesn Shrani trenutno sejo + tmenu ToolBar.RunScript Izberi Vim skripto za izvajanje + tmenu ToolBar.Make Napravi trenutni projekt (:make) + tmenu ToolBar.RunCtags Napravi znaèke v trenutnem direktoriju (!ctags -R.) + tmenu ToolBar.TagJump Skoèi k znaèki pod kurzorjem + tmenu ToolBar.Help Pomoè za Vim + tmenu ToolBar.FindHelp Išèi v pomoèi za Vim + endfun +endif +" }}} TOOLBAR + +" {{{ DIALOG TEXTS +let g:menutrans_no_file = "[Brez datoteke]" +let g:menutrans_help_dialog = "Vnesite ukaz ali besedo, za katero želite pomoè:\n\nUporabite predpono i_ za ukaze v naèinu za pisanje (npr.: i_CTRL-X)\nUporabite predpono c_ za ukaze v ukazni vrstici (command-line) (npr.: c_)\nUporabite predpono ' za imena opcij (npr.: 'shiftwidth')" +let g:menutrans_path_dialog = "Vnesite poti za iskanje datotek.\nImena direktorijev loèite z vejico." +let g:menutrans_tags_dialog = "Vnesite imena datotek z znaèkami ('tag').\nImana loèite z vejicami." +let g:menutrans_textwidth_dialog = "Vnesite novo širino besedila (ali 0 za izklop formatiranja): " +let g:menutrans_fileformat_dialog = "Izberite format datoteke" +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Preklièi" +" }}} + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_sl_si.latin2.vim b/share/vim/vim74/lang/menu_sl_si.latin2.vim new file mode 100644 index 00000000..fd503871 --- /dev/null +++ b/share/vim/vim74/lang/menu_sl_si.latin2.vim @@ -0,0 +1,299 @@ +" Menu Translations: Slovenian / Slovensko +" Maintainer: Mojca Miklavec +" Originally By: Mojca Miklavec +" Last Change: Mon, 12 Jun 2006 00:00:00 CEST +" vim:set foldmethod=marker tabstop=8: + +" TODO: add/check all '&'s + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding latin2 + +" {{{ FILE / DATOTEKA +menutrans &File &Datoteka +menutrans &Open\.\.\.:e &Odpri\ \.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Odpri\ de&ljeno\ \.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Odpri\ v\ zavi&hku\ \.\.\.:tabnew +menutrans &New:enew &Nova:enew +menutrans &Close:close &Zapri:close +menutrans &Save:w &Shrani:w +menutrans Save\ &As\.\.\.:sav Shrani\ &kot\ \.\.\.:sav +menutrans &Print Na&tisni +menutrans Sa&ve-Exit:wqa Shrani\ in\ &konèaj:wqa +menutrans E&xit:qa &Izhod:qa + +if has("diff") + menutrans Split\ &Diff\ with\.\.\. Primerjaj\ z\ (di&ff)\ \.\.\. + menutrans Split\ Patched\ &By\.\.\. &Popravi\ z\ (patch)\ \.\.\. +endif +" }}} FILE / DATOTEKA + +" {{{ EDIT / UREDI +menutrans &Edit &Uredi +menutrans &Undou &Razveljaviu +menutrans &Redo^R &Obnovi^R +menutrans Rep&eat\. Po&novi\. +menutrans Cu&t"+x &Izre¾i"+x +menutrans &Copy"+y &Kopiraj"+y +menutrans &Paste"+gP &Prilepi"+gP +menutrans Put\ &Before[p Vrini\ pred[p +menutrans Put\ &After]p Vrini\ za]p +menutrans &Deletex Iz&bri¹ix +menutrans &Select\ allggVG Izberi\ vseggVG +menutrans &Find\.\.\. Po&i¹èi\ \.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Poi¹èi\ in\ &zamenjaj\ \.\.\. + +" [-- SETTINGS --] +menutrans Settings\ &Window Nastavitve\ \.\.\. +menutrans Startup\ &Settings Zaèetne nastavitve +menutrans &Global\ Settings &Globalne\ nastavitve + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Vkljuèi/izkljuèi\ poudarjanje\ iskanega\ niza:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Vkljuèi/izkljuèi\ loèevanje\ velikih\ in\ malih\ èrk:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Vkljuèi/izkljuèi\ kratek\ skok\ na\ pripadajoèi\ oklepaj:set\ sm! + +menutrans &Context\ lines ©t\.\ vidnih\ vrstic\ pred/za\ kurzorjem + +menutrans &Virtual\ Edit Dovoli\ polo¾aj\ kazalèka,\ kjer\ ni\ besedila +menutrans Never Nikoli +menutrans Block\ Selection Le\ med\ izbiranjem\ bloka +menutrans Insert\ mode Le\ v\ naèinu\ za\ pisanje +menutrans Block\ and\ Insert Pri\ obojem +menutrans Always Vedno +menutrans Toggle\ Insert\ &Mode:set\ im! Vkljuèi/izkljuèi\ naèin\ za\ pisanje:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vkljuèi/izkljuèi\ zdru¾ljivost\ z\ Vi-jem:set\ cp! + +menutrans Search\ &Path\.\.\. Pot\ za\ iskanje\ \.\.\. +menutrans Ta&g\ Files\.\.\. Ta&g-datoteke\.\.\. + +menutrans Toggle\ &Toolbar Poka¾i/skrij\ Orodja +menutrans Toggle\ &Bottom\ Scrollbar Poka¾i/skrij\ spodnji\ drsnik +menutrans Toggle\ &Left\ Scrollbar Poka¾i/skrij\ levi\ drsnik +menutrans Toggle\ &Right\ Scrollbar Poka¾i/skrij\ desni\ drsnik + +" Edit/File Settings +menutrans F&ile\ Settings &Nastavitve\ datoteke + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! Poka¾i/skrij\ ¹tevilke\ vrstic:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Poka¾i/skrij\ nevidne\ znake:set\ list! " space/tab +menutrans Toggle\ Line\ &Wrap:set\ wrap! Vkljuèi/izkljuèi\ prelome\ vrstic:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Vkljuèi/izkljuèi\ prelome\ vrstic\ med\ besedami:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Vkljuèi/izkljuèi\ zamenjavo\ tabulatorjev\ s\ presledki:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Vkljuèi/izkljuèi\ avtomatsko\ zamikanje\ vrstic:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Vkljuèi/izkljuèi\ C-jevski\ naèin\ zamikanja\ vrstic:set\ cin! + +" other options +menutrans &Shiftwidth ©irina\ zamika\ vrstic +menutrans Soft\ &Tabstop ©irina &tabulatorja +menutrans Te&xt\ Width\.\.\. ©irina\ besedila\ \.\.\. +menutrans &File\ Format\.\.\. Format\ &datoteke\ \.\.\. +menutrans C&olor\ Scheme &Barvna\ shema\ \.\.\. +menutrans &Keymap &Keymap +menutrans Select\ Fo&nt\.\.\. Pisava\ \.\.\. +" }}} EDIT / UREDI + +" {{{ TOOLS / ORODJA +menutrans &Tools &Orodja +menutrans &Jump\ to\ this\ tagg^] &Skoèi\ k\ tej\ znaèkig^] +menutrans Jump\ &back^T Skoèi\ Na&zaj^T +menutrans Build\ &Tags\ File Napravi\ datoteke\ z\ znaèkami\ (tag) +if has("spell") + menutrans &Spelling Èrkovalnik + menutrans &Spell\ Check\ On &Vkljuèi + menutrans Spell\ Check\ &Off &Izkljuèi + menutrans To\ &Next\ error]s K\ &naslednji\ napaki]s + menutrans To\ &Previous\ error[s K\ &prej¹nji\ napaki[s + menutrans Suggest\ &Correctionsz= Predlagaj\ popravekz= + menutrans &Repeat\ correction:spellrepall Po&novi\ popravke\ na\ vseh\ besedah:spellrepall + menutrans Set\ language\ to\ "en" Èrkovalnik:\ angle¹ki\ "en" + menutrans Set\ language\ to\ "en_au" Èrkovalnik:\ angle¹ki\ "en_au" + menutrans Set\ language\ to\ "en_ca" Èrkovalnik:\ angle¹ki\ "en_ca" + menutrans Set\ language\ to\ "en_gb" Èrkovalnik:\ angle¹ki\ "en_gb" + menutrans Set\ language\ to\ "en_nz" Èrkovalnik:\ angle¹ki\ "en_nz" + menutrans Set\ language\ to\ "en_us" Èrkovalnik:\ angle¹ki\ "en_us" + menutrans Set\ language\ to\ "sl" Èrkovalnik:\ slovenski\ "sl" + menutrans Set\ language\ to\ "de" Èrkovalnik:\ nem¹ki\ "de" + menutrans Set\ language\ to\ Èrkovalnik:\ + menutrans &Find\ More\ Languages &Ostali\ jeziki +endif +if has("folding") + menutrans &Folding Zavihek + " open close folds + menutrans &Enable/Disable\ foldszi Omogoèi/onemogoèi\ zavihkezi + menutrans &View\ Cursor\ Linezv Poka¾i\ vrstico\ s\ kazalcemzv " kjer je kazalec + menutrans Vie&w\ Cursor\ Line\ onlyzMzx Poka¾i\ samo\ vrstico\ s\ kazalcemzMzx + menutrans C&lose\ more\ foldszm Zapri\ veè\ zavihkovzm + menutrans &Close\ all\ foldszM Zapri\ vse\ zavihkezM + menutrans O&pen\ more\ foldszr Odpri\ veè\ zavihkovzr + menutrans &Open\ all\ foldszR Odpri\ vse\ zavihkezR + " fold method + menutrans Fold\ Met&hod Ustvarjanje\ zavihkov + menutrans M&anual &Roèno + menutrans I&ndent Glede\ na\ &poravnavo + menutrans E&xpression Z\ &izrazi\ (foldexpr) + menutrans S&yntax Glede\ na\ &sintakso + menutrans &Diff Razlike\ (&diff) + menutrans Ma&rker Z\ &markerji/oznaèbami + " create and delete folds + " TODO accelerators + menutrans Create\ &Foldzf Ustvari\ zavihekzf + menutrans &Delete\ Foldzd Izbri¹i\ zavihekzd + menutrans Delete\ &All\ FoldszD Izbri¹i\ vse\ zavihkezD + " moving around in folds + menutrans Fold\ column\ &width ©irina\ stolpca\ z\ zavihkom +endif " has folding + +if has("diff") + menutrans &Diff Razlike\ (&Diff) + menutrans &Update &Posodobi + menutrans &Get\ Block &Sprejmi\ (spremeni\ to\ okno) " TODO: check if translation is OK + menutrans &Put\ Block &Po¹lji\ (spremeni\ drugo\ okno) +endif + +menutrans &Make:make Napravi\ (&make):make +menutrans &List\ Errors:cl Poka¾i\ napake:cl +menutrans L&ist\ Messages:cl! Poka¾i\ sporoèila:cl! +menutrans &Next\ Error:cn K\ &naslednji\ napaki:cn +menutrans &Previous\ Error:cp K\ &prej¹nji\ napaki:cp +menutrans &Older\ List:cold K\ &starej¹emu\ seznamu\ napak:cold +menutrans N&ewer\ List:cnew K\ &novej¹emu\ seznamu\ napak:cnew + +menutrans Error\ &Window Okno\ z\ napakami +menutrans &Update:cwin &Posodobi:cwin +menutrans &Open:copen &Odpri:copen +menutrans &Close:cclose &Zapri:cclose + +menutrans &Set\ Compiler Nastavi\ &prevajalnik +menutrans Se&T\ Compiler Nastavi\ &prevajalnik " bug in original translation? + +menutrans &Convert\ to\ HEX:%!xxd Pretvori\ v\ HE&X:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Pretvori\ nazaj:%!xxd\ -r +" }}} TOOLS / ORODJA + +" {{{ SYNTAX / BARVANJE KODE +menutrans &Syntax &Barvanje\ kode +menutrans &Show\ filetypes\ in\ menu Podprte\ vrste\ datotek +menutrans Set\ '&syntax'\ only Samo\ barvanje\ ('&syntax') +menutrans Set\ '&filetype'\ too Tudi\ obna¹anje\ ('&filetype') +menutrans &Off &Izkljuèeno +menutrans &Manual &Roèno +menutrans A&utomatic &Avtomatsko +menutrans on/off\ for\ &This\ file Vkljuèi/izkljuèi\ za\ to\ datoteko +menutrans Co&lor\ test Preizkus\ barv +menutrans &Highlight\ test Preizkus\ barvanja\ kode +menutrans &Convert\ to\ HTML Pretvori\ v\ &HTML +" }}} SYNTAX / BARVANJE KODE + +" {{{ BUFFERS / MEDPOMNILNIK +menutrans &Buffers &Medpomnilnik " XXX: ni najbolje: okno bi bolj pristajalo, ampak okno je ¾e +menutrans &Refresh\ menu &Osve¾i +menutrans Delete &Bri¹i +menutrans &Alternate &Menjaj +menutrans &Next &Naslednji +menutrans &Previous &Prej¹nji +menutrans [No\ File] [Brez\ datoteke] +" }}} BUFFERS / MEDPOMNILNIK + +" {{{ WINDOW / OKNO +menutrans &Window &Okno +menutrans &New^Wn &Novo^Wn +menutrans S&plit^Ws Razdeli^Ws +menutrans Split\ &Vertically^Wv Razdeli\ navpièno^Ws +menutrans Split\ File\ E&xplorer Razdeli:\ Vsebina\ mape +menutrans Sp&lit\ To\ #^W^^ Razdeli\ v\ #^W^^ +menutrans &Close^Wc &Zapri^Wc +menutrans Close\ &Other(s)^Wo Zapri\ &ostala^Wo +menutrans Move\ &To Premakni +menutrans &Top^WK &Gor^WK +menutrans &Bottom^WJ &Dol^WJ +menutrans &Left\ side^WH &Levo^WH +menutrans &Right\ side^WL &Desno^WL +menutrans Rotate\ &Up^WR Zavrti\ navzgor^WR +menutrans Rotate\ &Down^Wr Zavrti\ navzdol^Wr +menutrans &Equal\ Size^W= &Enaka\ velikost^W= +menutrans &Max\ Height^W_ Najvi¹je^W_ +menutrans M&in\ Height^W1_ Najni¾je^W1_ +menutrans Max\ &Width^W\| Naj¹ir¹e^W\| +menutrans Min\ Widt&h^W1\| Najo¾je^W1\| +" }}} WINDOW / OKNO + +" {{{ HELP / POMOÈ +menutrans &Help &Pomoè +menutrans &Overview Hitri\ pregled +menutrans &User\ Manual P&riroènik +menutrans &How-to\ links &How-to\ kazalo +menutrans &Find\.\.\. Po&i¹èi\ \.\.\. " conflicts with Edit.Find +menutrans &Credits &Avtorji +menutrans Co&pying &Licenca +menutrans &Sponsor/Register Registracija\ in\ &donacije +menutrans O&rphans &Sirotam +menutrans &Version &Verzija +menutrans &About &O\ programu +" }}} HELP / POMOÈ + +" {{{ POPUP +menutrans &Undo &Razveljavi +menutrans Cu&t &Izre¾i +menutrans &Copy &Kopieraj +menutrans &Paste &Prilepi +menutrans &Delete &Zbri¹i +menutrans Select\ Blockwise Izbiraj\ po\ blokih +menutrans Select\ &Word Izberi\ &besedo +menutrans Select\ &Sentence Izberi\ &stavek +menutrans Select\ Pa&ragraph Izberi\ &odstavek +menutrans Select\ &Line Izberi\ vrs&tico +menutrans Select\ &Block Izberi\ b&lok +menutrans Select\ &All Izberi\ &vse +" }}} POPUP + +" {{{ TOOLBAR +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Odpri datoteko + tmenu ToolBar.Save Shrani datoteko + tmenu ToolBar.SaveAll Shrani vse datoteke + tmenu ToolBar.Print Natisni + tmenu ToolBar.Undo Razveljavi + tmenu ToolBar.Redo Obnovi + tmenu ToolBar.Cut Izre¾i + tmenu ToolBar.Copy Kopiraj + tmenu ToolBar.Paste Prilepi + tmenu ToolBar.Find Najdi ... + tmenu ToolBar.FindNext Najdi naslednje + tmenu ToolBar.FindPrev Najdi prej¹nje + tmenu ToolBar.Replace Najdi in zamenjaj ... + tmenu ToolBar.LoadSesn Nalo¾i sejo + tmenu ToolBar.SaveSesn Shrani trenutno sejo + tmenu ToolBar.RunScript Izberi Vim skripto za izvajanje + tmenu ToolBar.Make Napravi trenutni projekt (:make) + tmenu ToolBar.RunCtags Napravi znaèke v trenutnem direktoriju (!ctags -R.) + tmenu ToolBar.TagJump Skoèi k znaèki pod kurzorjem + tmenu ToolBar.Help Pomoè za Vim + tmenu ToolBar.FindHelp I¹èi v pomoèi za Vim + endfun +endif +" }}} TOOLBAR + +" {{{ DIALOG TEXTS +let g:menutrans_no_file = "[Brez datoteke]" +let g:menutrans_help_dialog = "Vnesite ukaz ali besedo, za katero ¾elite pomoè:\n\nUporabite predpono i_ za ukaze v naèinu za pisanje (npr.: i_CTRL-X)\nUporabite predpono c_ za ukaze v ukazni vrstici (command-line) (npr.: c_)\nUporabite predpono ' za imena opcij (npr.: 'shiftwidth')" +let g:menutrans_path_dialog = "Vnesite poti za iskanje datotek.\nImena direktorijev loèite z vejico." +let g:menutrans_tags_dialog = "Vnesite imena datotek z znaèkami ('tag').\nImana loèite z vejicami." +let g:menutrans_textwidth_dialog = "Vnesite novo ¹irino besedila (ali 0 za izklop formatiranja): " +let g:menutrans_fileformat_dialog = "Izberite format datoteke" +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Preklièi" +" }}} + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_sl_si.utf-8.vim b/share/vim/vim74/lang/menu_sl_si.utf-8.vim new file mode 100644 index 00000000..7043e62d --- /dev/null +++ b/share/vim/vim74/lang/menu_sl_si.utf-8.vim @@ -0,0 +1,299 @@ +" Menu Translations: Slovenian / Slovensko +" Maintainer: Mojca Miklavec +" Originally By: Mojca Miklavec +" Last Change: Sat, 17 Jun 2006 +" vim:set foldmethod=marker tabstop=8: + +" TODO: add/check all '&'s + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +" {{{ FILE / DATOTEKA +menutrans &File &Datoteka +menutrans &Open\.\.\.:e &Odpri\ \.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Odpri\ de&ljeno\ \.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Odpri\ v\ zavi&hku\ \.\.\.:tabnew +menutrans &New:enew &Nova:enew +menutrans &Close:close &Zapri:close +menutrans &Save:w &Shrani:w +menutrans Save\ &As\.\.\.:sav Shrani\ &kot\ \.\.\.:sav +menutrans &Print Na&tisni +menutrans Sa&ve-Exit:wqa Shrani\ in\ &končaj:wqa +menutrans E&xit:qa &Izhod:qa + +if has("diff") + menutrans Split\ &Diff\ with\.\.\. Primerjaj\ z\ (di&ff)\ \.\.\. + menutrans Split\ Patched\ &By\.\.\. &Popravi\ z\ (patch)\ \.\.\. +endif +" }}} FILE / DATOTEKA + +" {{{ EDIT / UREDI +menutrans &Edit &Uredi +menutrans &Undou &Razveljaviu +menutrans &Redo^R &Obnovi^R +menutrans Rep&eat\. Po&novi\. +menutrans Cu&t"+x &Izreži"+x +menutrans &Copy"+y &Kopiraj"+y +menutrans &Paste"+gP &Prilepi"+gP +menutrans Put\ &Before[p Vrini\ pred[p +menutrans Put\ &After]p Vrini\ za]p +menutrans &Deletex Iz&brišix +menutrans &Select\ allggVG Izberi\ vseggVG +menutrans &Find\.\.\. Po&išči\ \.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Poišči\ in\ &zamenjaj\ \.\.\. + +" [-- SETTINGS --] +menutrans Settings\ &Window Nastavitve\ \.\.\. +menutrans Startup\ &Settings Začetne\ nastavitve +menutrans &Global\ Settings &Globalne\ nastavitve + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Vključi/izključi\ poudarjanje\ iskanega\ niza:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Vključi/izključi\ ločevanje\ velikih\ in\ malih\ črk:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Vključi/izključi\ kratek\ skok\ na\ pripadajoči\ oklepaj:set\ sm! + +menutrans &Context\ lines Št\.\ vidnih\ vrstic\ pred/za\ kurzorjem + +menutrans &Virtual\ Edit Dovoli\ položaj\ kazalčka,\ kjer\ ni\ besedila +menutrans Never Nikoli +menutrans Block\ Selection Le\ med\ izbiranjem\ bloka +menutrans Insert\ mode Le\ v\ načinu\ za\ pisanje +menutrans Block\ and\ Insert Pri\ obojem +menutrans Always Vedno +menutrans Toggle\ Insert\ &Mode:set\ im! Vključi/izključi\ način\ za\ pisanje:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vključi/izključi\ združljivost\ z\ Vi-jem:set\ cp! + +menutrans Search\ &Path\.\.\. Pot\ za\ iskanje\ \.\.\. +menutrans Ta&g\ Files\.\.\. Ta&g-datoteke\.\.\. + +menutrans Toggle\ &Toolbar Pokaži/skrij\ Orodja +menutrans Toggle\ &Bottom\ Scrollbar Pokaži/skrij\ spodnji\ drsnik +menutrans Toggle\ &Left\ Scrollbar Pokaži/skrij\ levi\ drsnik +menutrans Toggle\ &Right\ Scrollbar Pokaži/skrij\ desni\ drsnik + +" Edit/File Settings +menutrans F&ile\ Settings &Nastavitve\ datoteke + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! Pokaži/skrij\ številke\ vrstic:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Pokaži/skrij\ nevidne\ znake:set\ list! " space/tab +menutrans Toggle\ Line\ &Wrap:set\ wrap! Vključi/izključi\ prelome\ vrstic:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Vključi/izključi\ prelome\ vrstic\ med\ besedami:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Vključi/izključi\ zamenjavo\ tabulatorjev\ s\ presledki:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Vključi/izključi\ avtomatsko\ zamikanje\ vrstic:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Vključi/izključi\ C-jevski\ način\ zamikanja\ vrstic:set\ cin! + +" other options +menutrans &Shiftwidth Širina\ zamika\ vrstic +menutrans Soft\ &Tabstop Širina\ &tabulatorja +menutrans Te&xt\ Width\.\.\. Širina\ besedila\ \.\.\. +menutrans &File\ Format\.\.\. Format\ &datoteke\ \.\.\. +menutrans C&olor\ Scheme &Barvna\ shema\ \.\.\. +menutrans &Keymap &Keymap +menutrans Select\ Fo&nt\.\.\. Pisava\ \.\.\. +" }}} EDIT / UREDI + +" {{{ TOOLS / ORODJA +menutrans &Tools &Orodja +menutrans &Jump\ to\ this\ tagg^] &Skoči\ k\ tej\ značkig^] +menutrans Jump\ &back^T Skoči\ Na&zaj^T +menutrans Build\ &Tags\ File Napravi\ datoteke\ z\ značkami\ (tag) +if has("spell") + menutrans &Spelling Črkovalnik + menutrans &Spell\ Check\ On &Vključi + menutrans Spell\ Check\ &Off &Izključi + menutrans To\ &Next\ error]s K\ &naslednji\ napaki]s + menutrans To\ &Previous\ error[s K\ &prejšnji\ napaki[s + menutrans Suggest\ &Correctionsz= Predlagaj\ popravekz= + menutrans &Repeat\ correction:spellrepall Po&novi\ popravke\ na\ vseh\ besedah:spellrepall + menutrans Set\ language\ to\ "en" Angleški\ "en" + menutrans Set\ language\ to\ "en_au" Angleški\ "en_au" + menutrans Set\ language\ to\ "en_ca" Angleški\ "en_ca" + menutrans Set\ language\ to\ "en_gb" Angleški\ "en_gb" + menutrans Set\ language\ to\ "en_nz" Angleški\ "en_nz" + menutrans Set\ language\ to\ "en_us" Angleški\ "en_us" + menutrans Set\ language\ to\ "sl" Slovenski\ "sl" + menutrans Set\ language\ to\ "de" Nemški\ "de" + menutrans Set\ language\ to\ Črkovalnik:\ + menutrans &Find\ More\ Languages &Ostali\ jeziki +endif +if has("folding") + menutrans &Folding Zvijanje\ kode + " open close folds + menutrans &Enable/Disable\ foldszi Omogoči/onemogoči\ zvijanjezi " Omogoči/onemogoči\ zavihke + menutrans &View\ Cursor\ Linezv Pokaži\ vrstico\ s\ kazalčkomzv " kjer je kazalec + menutrans Vie&w\ Cursor\ Line\ onlyzMzx Pokaži\ samo\ vrstico\ s\ kazalčkomzMzx + menutrans C&lose\ more\ foldszm Zvij\ naslednji\ nivozm " Zapri\ več\ zavihkov + menutrans &Close\ all\ foldszM Zvij\ vso\ kodozM " Zapri\ vse\ zavihke + menutrans O&pen\ more\ foldszr Razvij\ en\ nivozr " Odpri\ več\ zavihkov + menutrans &Open\ all\ foldszR Razvij\ vso\ kodozR " Odpri\ vse\ zavihke + " fold method + menutrans Fold\ Met&hod Kriterij\ za\ zvijanje " Ustvarjanje\ zavihkov + menutrans M&anual &Ročno + menutrans I&ndent Glede\ na\ &poravnavo + menutrans E&xpression Z\ &izrazi\ (foldexpr) + menutrans S&yntax Glede\ na\ &sintakso + menutrans &Diff Razlike\ (&diff) + menutrans Ma&rker Z\ &markerji/označbami + " create and delete folds + " TODO accelerators + menutrans Create\ &Foldzf Ustvari\ zvitekzf + menutrans &Delete\ Foldzd Izbriši\ zvitekzd + menutrans Delete\ &All\ FoldszD Izbriši\ vse\ zvitkezD + " moving around in folds + menutrans Fold\ column\ &width Širina\ drevesa\ z\ zvitki +endif " has folding + +if has("diff") + menutrans &Diff Razlike\ (&Diff) + menutrans &Update &Posodobi + menutrans &Get\ Block &Sprejmi\ (spremeni\ to\ okno) " XXX: check if translation is OK + menutrans &Put\ Block &Pošlji\ (spremeni\ drugo\ okno) +endif + +menutrans &Make:make Napravi\ (&make):make +menutrans &List\ Errors:cl Pokaži\ napake:cl +menutrans L&ist\ Messages:cl! Pokaži\ sporočila:cl! +menutrans &Next\ Error:cn K\ &naslednji\ napaki:cn +menutrans &Previous\ Error:cp K\ &prejšnji\ napaki:cp +menutrans &Older\ List:cold K\ &starejšemu\ seznamu\ napak:cold +menutrans N&ewer\ List:cnew K\ &novejšemu\ seznamu\ napak:cnew + +menutrans Error\ &Window Okno\ z\ napakami +menutrans &Update:cwin &Posodobi:cwin +menutrans &Open:copen &Odpri:copen +menutrans &Close:cclose &Zapri:cclose + +menutrans &Set\ Compiler Nastavi\ &prevajalnik +menutrans Se&T\ Compiler Nastavi\ &prevajalnik " bug in original translation? + +menutrans &Convert\ to\ HEX:%!xxd Pretvori\ v\ HE&X:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Pretvori\ nazaj:%!xxd\ -r +" }}} TOOLS / ORODJA + +" {{{ SYNTAX / BARVANJE KODE +menutrans &Syntax &Barvanje\ kode +menutrans &Show\ filetypes\ in\ menu Podprte\ vrste\ datotek +menutrans Set\ '&syntax'\ only Samo\ barvanje\ ('&syntax') +menutrans Set\ '&filetype'\ too Tudi\ obnašanje\ ('&filetype') +menutrans &Off &Izključeno +menutrans &Manual &Ročno +menutrans A&utomatic &Avtomatsko +menutrans on/off\ for\ &This\ file Vključi/izključi\ za\ to\ datoteko +menutrans Co&lor\ test Preizkus\ barv +menutrans &Highlight\ test Preizkus\ barvanja\ kode +menutrans &Convert\ to\ HTML Pretvori\ v\ &HTML +" }}} SYNTAX / BARVANJE KODE + +" {{{ BUFFERS / MEDPOMNILNIK +menutrans &Buffers &Medpomnilnik " XXX: ni najbolje: okno bi bolj pristajalo, ampak okno je že +menutrans &Refresh\ menu &Osveži +menutrans Delete &Briši +menutrans &Alternate &Menjaj +menutrans &Next &Naslednji +menutrans &Previous &Prejšnji +menutrans [No\ File] [Brez\ datoteke] +" }}} BUFFERS / MEDPOMNILNIK + +" {{{ WINDOW / OKNO +menutrans &Window &Okno +menutrans &New^Wn &Novo^Wn +menutrans S&plit^Ws Razdeli^Ws +menutrans Split\ &Vertically^Wv Razdeli\ navpično^Ws +menutrans Split\ File\ E&xplorer Razdeli:\ Vsebina\ mape +menutrans Sp&lit\ To\ #^W^^ Razdeli\ v\ #^W^^ +menutrans &Close^Wc &Zapri^Wc +menutrans Close\ &Other(s)^Wo Zapri\ &ostala^Wo +menutrans Move\ &To Premakni +menutrans &Top^WK &Gor^WK +menutrans &Bottom^WJ &Dol^WJ +menutrans &Left\ side^WH &Levo^WH +menutrans &Right\ side^WL &Desno^WL +menutrans Rotate\ &Up^WR Zavrti\ navzgor^WR +menutrans Rotate\ &Down^Wr Zavrti\ navzdol^Wr +menutrans &Equal\ Size^W= &Enaka\ velikost^W= +menutrans &Max\ Height^W_ Najvišje^W_ +menutrans M&in\ Height^W1_ Najnižje^W1_ +menutrans Max\ &Width^W\| Najširše^W\| +menutrans Min\ Widt&h^W1\| Najožje^W1\| +" }}} WINDOW / OKNO + +" {{{ HELP / POMOČ +menutrans &Help &Pomoč +menutrans &Overview Hitri\ pregled +menutrans &User\ Manual P&riročnik +menutrans &How-to\ links &How-to\ kazalo +menutrans &Find\.\.\. Po&išči\ \.\.\. " conflicts with Edit.Find +menutrans &Credits &Avtorji +menutrans Co&pying &Licenca +menutrans &Sponsor/Register Registracija\ in\ &donacije +menutrans O&rphans &Sirotam +menutrans &Version &Verzija +menutrans &About &O\ programu +" }}} HELP / POMOČ + +" {{{ POPUP +menutrans &Undo &Razveljavi +menutrans Cu&t &Izreži +menutrans &Copy &Kopieraj +menutrans &Paste &Prilepi +menutrans &Delete &Zbriši +menutrans Select\ Blockwise Izbiraj\ po\ blokih +menutrans Select\ &Word Izberi\ &besedo +menutrans Select\ &Sentence Izberi\ &stavek +menutrans Select\ Pa&ragraph Izberi\ &odstavek +menutrans Select\ &Line Izberi\ vrs&tico +menutrans Select\ &Block Izberi\ b&lok +menutrans &Select\ AllggVG Izberi\ &vseggVG +" }}} POPUP + +" {{{ TOOLBAR +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Odpri datoteko + tmenu ToolBar.Save Shrani datoteko + tmenu ToolBar.SaveAll Shrani vse datoteke + tmenu ToolBar.Print Natisni + tmenu ToolBar.Undo Razveljavi + tmenu ToolBar.Redo Obnovi + tmenu ToolBar.Cut Izreži + tmenu ToolBar.Copy Kopiraj + tmenu ToolBar.Paste Prilepi + tmenu ToolBar.Find Najdi ... + tmenu ToolBar.FindNext Najdi naslednje + tmenu ToolBar.FindPrev Najdi prejšnje + tmenu ToolBar.Replace Najdi in zamenjaj ... + tmenu ToolBar.LoadSesn Naloži sejo + tmenu ToolBar.SaveSesn Shrani trenutno sejo + tmenu ToolBar.RunScript Izberi Vim skripto za izvajanje + tmenu ToolBar.Make Napravi trenutni projekt (:make) + tmenu ToolBar.RunCtags Napravi značke v trenutnem direktoriju (!ctags -R.) + tmenu ToolBar.TagJump Skoči k znački pod kurzorjem + tmenu ToolBar.Help Pomoč za Vim + tmenu ToolBar.FindHelp Išči v pomoči za Vim + endfun +endif +" }}} TOOLBAR + +" {{{ DIALOG TEXTS +let g:menutrans_no_file = "[Brez datoteke]" +let g:menutrans_help_dialog = "Vnesite ukaz ali besedo, za katero želite pomoč:\n\nUporabite predpono i_ za ukaze v načinu za pisanje (npr.: i_CTRL-X)\nUporabite predpono c_ za ukaze v ukazni vrstici (command-line) (npr.: c_)\nUporabite predpono ' za imena opcij (npr.: 'shiftwidth')" +let g:menutrans_path_dialog = "Vnesite poti za iskanje datotek.\nImena direktorijev ločite z vejico." +let g:menutrans_tags_dialog = "Vnesite imena datotek z značkami ('tag').\nImana ločite z vejicami." +let g:menutrans_textwidth_dialog = "Vnesite novo širino besedila (ali 0 za izklop formatiranja): " +let g:menutrans_fileformat_dialog = "Izberite format datoteke" +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Prekliči" +" }}} + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_slovak_slovak_republic.1250.vim b/share/vim/vim74/lang/menu_slovak_slovak_republic.1250.vim new file mode 100644 index 00000000..cfc60786 --- /dev/null +++ b/share/vim/vim74/lang/menu_slovak_slovak_republic.1250.vim @@ -0,0 +1,237 @@ +" Menu Translations: Slovak +" Translated By: Martin Lacko +" Last Change: 2012 May 01 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding cp1250 + +" Help menu +menutrans &Help &Pomocník +menutrans &Overview &Preh¾ad +menutrans &User\ Manual Po&užívate¾ský\ manuál +menutrans &How-to\ links &Tipy +menutrans &Find\.\.\. &Nájs�\.\.\. +menutrans &Credits Poï&akovanie +menutrans O&rphans Si&roty +menutrans Co&pying &Licencia +menutrans &Version &Verzia +menutrans &About &O\ programe + +" File menu +menutrans &File &Súbor +menutrans &Open\.\.\.:e &Otvori�\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Ot&vori�\ v\ novom\ okne\.\.\.:sp +menutrans &New:enew &Nový:enew +menutrans &Close:close &Zatvori�:close +menutrans &Save:w &Uloži�:w +menutrans Save\ &As\.\.\.:sav Uloži�\ &ako\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Otvor&i�\ porovnanie\ v\ novom\ okne\ s\.\.\. +menutrans Split\ Patched\ &By\.\.\. Otvo&ri�\ aktualizované\ s\.\.\. +menutrans &Print &Tlaè +menutrans Sa&ve-Exit:wqa U&loži�-Koniec:wqa +menutrans E&xit:qa &Koniec:qa + +" Edit menu +menutrans &Edit &Úpravy +menutrans &Undou &Spä�u +menutrans &Redo^R Z&ruši�\ spä�^R +menutrans Rep&eat\. &Opakova�\. +menutrans Cu&t"+x &Vystrihnú�"+x +menutrans &Copy"+y &Kopírova�"+y +menutrans &Paste"+gP V&loži�"+gP +menutrans Put\ &Before[p Vloži�\ &pred[p +menutrans Put\ &After]p Vloži�\ za]p +menutrans &Select\ allggVG Vy&bra�\ všetkoggVG +menutrans &Deletex Vy&maza�x +menutrans &Find\.\.\. &Nájs�\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. N&ahradi�\.\.\. +menutrans Settings\ &Window Mo&žnosti +menutrans &Global\ Settings &Globálne možnosti +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Prepnú�\ paletu\ zvýrazòovania:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Prepnú�\ &ignorovanie ve¾kosti:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Prepnú�\ &ukáza�\ zhodu:set\ sm! +menutrans &Context\ lines &Kontextové\ riadky +menutrans &Virtual\ Edit &Virtuálne úpravy +menutrans Never Nikdy +menutrans Block\ Selection Blokový\ výber +menutrans Insert\ mode Režim\ vkladania +menutrans Block\ and\ Insert Blok\ a\ vkladanie +menutrans Always Vždy +menutrans Toggle\ Insert\ &Mode:set\ im! Prepnú�\ reži&m\ vkladania:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Prepnú�\ vi\ kompatibilitu:set\ cp! +menutrans Search\ &Path\.\.\. Cesta\ &h¾adania\.\.\. +menutrans Ta&g\ Files\.\.\. Ta&gové súbory\.\.\. +menutrans Toggle\ &Toolbar Prepnú�\ &panel +menutrans Toggle\ &Bottom\ Scrollbar Prepnú�\ spodný\ posuvník +menutrans Toggle\ &Left\ Scrollbar Prepnú�\ ¾avý\ posuvník +menutrans Toggle\ &Right\ Scrollbar Prepnú�\ pravý\ posuvník +menutrans F&ile\ Settings Nastavenia\ súboru +menutrans Toggle\ Line\ &Numbering:set\ nu! Prepnú�\ èíslova&nie\ riadkov:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Prepnú�\ režim\ &zoznamu:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Prepnú�\ z&alamovanie\ riadkov:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Prepnú�\ za&lamovanie\ slov:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Prepnú�\ rozšír&ené\ tabulátory:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Prepnú�\ automatické\ &odsadzovanie:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Prepnú�\ &C-odsadzovanie:set\ cin! +menutrans &Shiftwidth &Šírka\ šiftu +menutrans Soft\ &Tabstop &Softvérový\ tabulátor +menutrans Te&xt\ Width\.\.\. Šírka\ te&xtu\.\.\. +menutrans &File\ Format\.\.\. &Formát\ súboru\.\.\. +menutrans C&olor\ Scheme Far&ebná\ schéma + +" Programming menu +menutrans &Tools &Nástroje +menutrans &Jump\ to\ this\ tagg^] &Skoèi�\ na\ znaèkug^] +menutrans Jump\ &back^T Sk&oèi�\ spä�^T +menutrans Build\ &Tags\ File &Vytvori�\ súbor\ znaèiek +menutrans &Folding &Vnáranie +menutrans &Enable/Disable\ foldszi Zapnú�/Vypnú�\ vnárani&ezi +menutrans &View\ Cursor\ Linezv Zobrazi�\ kurzoro&vý\ riadokzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Zobrazi�\ iba\ kurzorový\ riadokzMzx +menutrans C&lose\ more\ foldszm Zatvori�\ viac \vnorenízm +menutrans &Close\ all\ foldszM Zatvor&i�\ všetky\ vnoreniazM +menutrans O&pen\ more\ foldszr O&tvori�\ viac\ vnorenízr +menutrans &Open\ all\ foldszR &Otvori�\ všetky\ vnoreniazR +menutrans Fold\ Met&hod Metó&da\ vnárania +menutrans M&anual M&anuálne +menutrans I&ndent Odsade&nie +menutrans E&xpression &Výraz +menutrans S&yntax S&yntax +menutrans &Diff Roz&diel +menutrans Ma&rker Zna&èkovaè +menutrans Create\ &Foldzf Vyt&vori�\ vnoreniezf +menutrans &Delete\ Foldzd V&ymaza�\ vnoreniezd +menutrans Delete\ &All\ FoldszD Vymaza�\ všetky\ vnoreniazD +menutrans Fold\ column\ &width Šírka\ &vkladaného\ ståpca +menutrans &Diff &Rozdiely +menutrans &Update Akt&ualizova� +menutrans &Get\ Block Zob&ra�\ blok +menutrans &Put\ Block &Vloži�\ blok +menutrans Error\ &Window Chybové\ &okno +menutrans &Update:cwin Akt&ualizova�:cwin +menutrans &Open:copen &Otvori�:copen +menutrans &Close:cclose &Zatvori�:cclose +menutrans &Convert\ to\ HEX:%!xxd &Konvertova�\ do\ HEX:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Konve&rtova�\ spä�:%!xxd\ -r +menutrans &Make:make &Make:make +menutrans &List\ Errors:cl Výpis\ &chýb:cl +menutrans L&ist\ Messages:cl! Výp&is\ správ:cl! +menutrans &Next\ Error:cn Ïa&lšia\ chyba:cn +menutrans &Previous\ Error:cp &Predchádzajúca\ chyba:cp +menutrans &Older\ List:cold Sta&rší\ zoznam:cold +menutrans N&ewer\ List:cnew Novší\ &zoznam:cnew +menutrans Error\ &Window:cwin Chybové\ o&kno:cwin +menutrans &Set\ Compiler Vyberte\ k&ompilátor +menutrans Convert\ to\ HEX:%!xxd Prvies�\ do\ šes&tnástkového\ formátu:%!xxd +menutrans Convert\ back:%!xxd\ -r Pr&evies�\ spä�:%!xxd\ -r + +" Names for buffer menu. +menutrans &Buffers &Vyrovnávacia\ pamä� +menutrans &Refresh\ menu Obnovi� +menutrans &Delete Vymaza� +menutrans &Alternate Zmeni� +menutrans &Next Ï&alšia +menutrans &Previous &Predchádzajúca +menutrans [No File] [Žiadny\ súbor] + +" Window menu +menutrans &Window &Okná +menutrans &New^Wn &Nové^Wn +menutrans S&plit^Ws &Rozdeli�^Ws +menutrans Sp&lit\ To\ #^W^^ Ro&zdeli�\ na\ #^W^^ +menutrans Split\ &Vertically^Wv Rozdeli�\ &vertikálne^Wv +menutrans Split\ File\ E&xplorer Otvori�\ pri&eskumníka +menutrans &Close^Wc Zatvor&i�^Wc +menutrans Close\ &Other(s)^Wo Zatvori�\ i&né^Wo +menutrans Move\ &To Presunú&� +menutrans &Top^WK Na&hor^WK +menutrans &Bottom^WJ Nado&l^WJ +menutrans &Left\ side^WH V&¾avo^WJ +menutrans &Right\ side^WL Vprav&o^WL +menutrans Ne&xt^Ww Ï&alšie^Ww +menutrans P&revious^WW &Predchádzajúce^WW +menutrans &Equal\ Size^W= Rovnaká\ výš&ka^W= +menutrans &Max\ Height^W_ &Maximálna\ výška^W_ +menutrans M&in\ Height^W1_ Minimálna\ vý&ška^W1_ +menutrans Max\ &Width^W\| Maximálna\ šírka^W\| +menutrans Min\ Widt&h^W1\| Minimálna širka^W1\| +menutrans Rotate\ &Up^WR Rotova&�\ nahor^WR +menutrans Rotate\ &Down^Wr Rotova�\ na&dol^Wr +menutrans Select\ Fo&nt\.\.\. Vy&bra�\ písmo\.\.\. + +" The popup menu +menutrans &Undo &Spä� +menutrans Cu&t &Vystrihnú� +menutrans &Copy &Kopírova� +menutrans &Paste V&loži� +menutrans &Delete V&ymaza� +menutrans Select\ Blockwise Vybra�\ blokovo +menutrans Select\ &Word Vybra�\ sl&ovo +menutrans Select\ &Line Vybra�\ &riadok +menutrans Select\ &Block Vybra�\ &blok +menutrans Select\ &All Vybra�\ vš&etko + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Otvori� súbor + tmenu ToolBar.Save Uloži� súbor + tmenu ToolBar.SaveAll Uloži� všetky + tmenu ToolBar.Print Tlaè + tmenu ToolBar.Undo Spä� + tmenu ToolBar.Redo Opakova� + tmenu ToolBar.Cut Vystrihnú� + tmenu ToolBar.Copy Kopírova� + tmenu ToolBar.Paste Vloži� + tmenu ToolBar.Find Nájs�... + tmenu ToolBar.FindNext Nájs� ïalšie + tmenu ToolBar.FindPrev Nájs� predchádzajúce + tmenu ToolBar.Replace Nahradi�... + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nové okno + tmenu ToolBar.WinSplit Rozdeli� okno + tmenu ToolBar.WinMax Maximalizova� okno + tmenu ToolBar.WinMin Minimalizova� okno + tmenu ToolBar.WinVSplit Rozdeli� okno vertikálne + tmenu ToolBar.WinMaxWidth Maximalizova� šírku okna + tmenu ToolBar.WinMinWidth Minimalizova� šírku okna + tmenu ToolBar.WinClose Zatvori� okno + endif + tmenu ToolBar.LoadSesn Naèíta� sedenie + tmenu ToolBar.SaveSesn Uloži� sedenie + tmenu ToolBar.RunScript Spusti� skript + tmenu ToolBar.Make Spusti� make + tmenu ToolBar.Shell Spusti� šel + tmenu ToolBar.RunCtags Spusti� ctags + tmenu ToolBar.TagJump Skoèi� na tag pod kurzorom + tmenu ToolBar.Help Pomocník + tmenu ToolBar.FindHelp Nájs� pomocníka k... + endfun +endif + +" Syntax menu +menutrans &Syntax &Syntax +menutrans Set\ '&syntax'\ only Nastavi�\ iba\ 'syntax' +menutrans Set\ '&filetype'\ too Nastavi�\ aj\ 'filetype' +menutrans &Off &Vypnú� +menutrans &Manual &Ruène +menutrans A&utomatic A&utomaticky +" menutrans o&n\ (this\ file) &Zapnú�\ (pre\ tento\ súbor) +" menutrans o&ff\ (this\ file) Vyp&nú�\ (pre\ tento\ súbor ) +menutrans on/off\ for\ &This\ file Zapnú�/vypnú�\ pre\ &tento\ súbor +menutrans Co&lor\ test Test\ &farieb +menutrans &Highlight\ test &Test\ zvýrazòovania +menutrans &Convert\ to\ HTML &Previes�\ do\ HTML + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_spanish_spain.850.vim b/share/vim/vim74/lang/menu_spanish_spain.850.vim similarity index 100% rename from share/vim/vim73/lang/menu_spanish_spain.850.vim rename to share/vim/vim74/lang/menu_spanish_spain.850.vim diff --git a/share/vim/vim73/lang/menu_sr.utf-8.vim b/share/vim/vim74/lang/menu_sr.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_sr.utf-8.vim rename to share/vim/vim74/lang/menu_sr.utf-8.vim diff --git a/share/vim/vim74/lang/menu_sr_rs.ascii.vim b/share/vim/vim74/lang/menu_sr_rs.ascii.vim new file mode 100644 index 00000000..8a12dad8 --- /dev/null +++ b/share/vim/vim74/lang/menu_sr_rs.ascii.vim @@ -0,0 +1,263 @@ +" Menu Translations: Serbian +" Maintainer: Aleksandar Jelenak +" Last Change: Fri, 30 May 2003 12:15:30 -0400 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" Help menu +menutrans &Help Pomo&c +menutrans &Overview &Pregled +menutrans &User\ Manual &Uputstvo\ za\ korisnike +menutrans &How-to\ links &Kako\ da\.\.\. +menutrans &Find &Nadji +menutrans &Credits &Zasluge +menutrans Co&pying P&reuzimanje +menutrans O&rphans &Sirocici +menutrans &Version &Verzija +menutrans &About &O\ programu + +" File menu +menutrans &File &Datoteka +menutrans &Open\.\.\.:e &Otvori\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp &Podeli-otvori\.\.\.:sp +menutrans &New:enew &Nova:enew +menutrans &Close:close &Zatvori:close +menutrans &Save:w &Sacuvaj:w +menutrans Save\ &As\.\.\.:sav Sacuvaj\ &kao\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Podeli\ i\ &uporedi\ sa\.\.\. +menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\. +menutrans &Print Sta&mpaj +menutrans Sa&ve-Exit:wqa Sacuvaj\ i\ za&vrsi:wqa +menutrans E&xit:qa K&raj:qa + +" Edit menu +menutrans &Edit &Uredjivanje +menutrans &Undou &Vratiu +menutrans &Redo^R &Povrati^R +menutrans Rep&eat\. P&onovi\. +menutrans Cu&t"+x Ise&ci"+x +menutrans &Copy"+y &Kopiraj"+y +menutrans &Paste"+gP &Ubaci"+gP +menutrans &Paste"+P &Ubaci"+gP +menutrans Put\ &Before[p Stavi\ pre&d[p +menutrans Put\ &After]p Stavi\ &iza]p +menutrans &Deletex Iz&brisix +menutrans &Select\ allggVG Izaberi\ sv&eggVG +menutrans &Find\.\.\. &Nadji\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Nadji\ i\ &zameni\.\.\. +menutrans Settings\ &Window P&rozor\ podesavanja +menutrans &Global\ Settings Op&sta\ podesavanja +menutrans F&ile\ Settings Podesavanja\ za\ da&toteke +menutrans &Shiftwidth &Pomeraj +menutrans Soft\ &Tabstop &Meka\ tabulacija +menutrans Te&xt\ Width\.\.\. &Sirina\ teksta\.\.\. +menutrans &File\ Format\.\.\. &Vrsta\ datoteke\.\.\. +menutrans C&olor\ Scheme Bo&je +menutrans &Keymap Pres&likavanje\ tastature +menutrans Select\ Fo&nt\.\.\. Izbor\ &fonta\.\.\. + +" Edit/Global Settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Naglasi\ &obrazce\ (da/ne):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Zanemari\ \velicinu\ &slova\ (da/ne):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Proveri\ pratecu\ &zagradu\ (da/ne):set\ sm! +menutrans &Context\ lines Vidljivi\ &redovi +menutrans &Virtual\ Edit Virtuelno\ &uredjivanje +menutrans Toggle\ Insert\ &Mode:set\ im! Rezim\ u&nosa\ (da/ne):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! '&Vi'\ saglasno\ (da/ne):set\ cp! +menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\. +menutrans Ta&g\ Files\.\.\. &Datoteke\ oznaka\.\.\. +menutrans Toggle\ &Toolbar Linija\ sa\ &alatkama\ (da/ne) +menutrans Toggle\ &Bottom\ Scrollbar Donja\ l&inija\ klizanja\ (da/ne) +menutrans Toggle\ &Left\ Scrollbar &Leva\ linija\ klizanja\ (da/ne) +menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne) + +" Edit/Global Settings/Virtual Edit +menutrans Never Nikad +menutrans Block\ Selection Izbor\ bloka +menutrans Insert\ mode Rezim\ unosa +menutrans Block\ and\ Insert Blok\ i\ unos +menutrans Always Uvek + +" Edit/File Settings +menutrans Toggle\ Line\ &Numbering:set\ nu! Redni\ &brojevi\ (da/ne):set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Rezim\ &liste\ (da/ne):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Obavijanje\ &redova\ (da/ne):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Prelomi\ &na\ rec\ (da/ne):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Razmaci\ umesto\ &tabulacije\ (da/ne):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Auto-&uvlacenje\ (da/ne):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! &Ce-uvlacenje\ (da/ne):set\ cin! + +" Edit/Keymap +menutrans None Nijedan + +" Tools menu +menutrans &Tools &Alatke +menutrans &Jump\ to\ this\ tagg^] Skoci\ na\ &ovu\ oznakug^] +menutrans Jump\ &back^T Skoci\ &natrag^T +menutrans Build\ &Tags\ File Izgradi\ &datoteku\ oznaka +menutrans &Folding &Podvijanje +menutrans Create\ &Foldzf S&tvori\ podvijutakzf +menutrans &Delete\ Foldzd O&brisi\ podvijutakzd +menutrans Delete\ &All\ FoldszD Obrisi\ sve\ po&dvijutkezD +menutrans Fold\ column\ &width Sirina\ &reda\ podvijutka +menutrans &Diff &Uporedjivanje +menutrans &Make:make 'mak&e':make +menutrans &List\ Errors:cl Spisak\ &gresaka:cl +menutrans L&ist\ Messages:cl! Sp&isak\ poruka:cl! +menutrans &Next\ Error:cn S&ledeca\ greska:cn +menutrans &Previous\ Error:cp Pre&thodna\ greska:cp +menutrans &Older\ List:cold Stari\ spisa&k:cold +menutrans N&ewer\ List:cnew No&vi\ spisak:cnew +menutrans Error\ &Window Prozor\ sa\ g&reskama +menutrans &Set\ Compiler I&zaberi\ prevodioca +menutrans &Convert\ to\ HEX:%!xxd Pretvori\ u\ &HEKS:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Vr&ati\ u\ prvobitan\ oblik:%!xxd\ -r + +" Tools/Folding +menutrans &Enable/Disable\ foldszi &Omoguci/prekini\ podvijanjezi +menutrans &View\ Cursor\ Linezv &Pokazi\ red\ sa\ kursoromzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Pokazi\ &samo\ red\ sa\ kursoromzMzx +menutrans C&lose\ more\ foldszm &Zatvori\ vise\ podvijutakazm +menutrans &Close\ all\ foldszM Zatvori\ s&ve\ podvijutkezM +menutrans O&pen\ more\ foldszr Otvori\ vis&e\ podvijutakazr +menutrans &Open\ all\ foldszR O&tvori\ sve\ podvijutkezR +menutrans Fold\ Met&hod &Nacin\ podvijanja + +" Tools/Folding/Fold Method +menutrans M&anual &Rucno +menutrans I&ndent &Uvucenost +menutrans E&xpression &Izraz +menutrans S&yntax &Sintaksa +"menutrans &Diff +menutrans Ma&rker &Oznaka + +" Tools/Diff +menutrans &Update &Azuriraj +menutrans &Get\ Block &Prihvati\ izmenu +menutrans &Put\ Block Pre&baci\ izmenu + +" Tools/Error Window +menutrans &Update:cwin &Azuriraj:cwin +menutrans &Open:copen &Otvori:copen +menutrans &Close:cclose &Zatvori:cclose + +" Bufers menu +menutrans &Buffers &Baferi +menutrans &Refresh\ menu &Azuriraj +menutrans Delete &Obrisi +menutrans &Alternate A<ernativni +menutrans &Next &Sledeci +menutrans &Previous &Prethodni +menutrans [No\ File] [Nema\ datoteke] + +" Window menu +menutrans &Window &Prozor +menutrans &New^Wn &Novi^Wn +menutrans S&plit^Ws &Podeli^Ws +menutrans Sp&lit\ To\ #^W^^ Podeli\ sa\ &alternativnim^W^^ +menutrans Split\ &Vertically^Wv Podeli\ &uspravno^Wv +menutrans Split\ File\ E&xplorer Podeli\ za\ pregled\ &datoteka +menutrans &Close^Wc &Zatvori^Wc +menutrans Close\ &Other(s)^Wo Zatvori\ &ostale^Wo +"menutrans Ne&xt^Ww &Sledeci^Ww +"menutrans P&revious^WW P&rethodni^WW +menutrans Move\ &To Pre&mesti +menutrans Rotate\ &Up^WR &Kruzno\ nagore^WR +menutrans Rotate\ &Down^Wr Kruzno\ nadol&e^Wr +menutrans &Equal\ Size^W= &Iste\ velicine^W= +menutrans &Max\ Height^W_ Maksimalna\ &visina^W_ +menutrans M&in\ Height^W1_ Minima&lna\ visina^W1_ +menutrans Max\ &Width^W\| Maksimalna\ &sirina^W\| +menutrans Min\ Widt&h^W1\| Minimalna\ si&rina^W1\| + +" Window/Move To +menutrans &Top^WK &Vrh^WK +menutrans &Bottom^WJ &Podnozje^WJ +menutrans &Left\ side^WH U&levo^WH +menutrans &Right\ side^WL U&desno^WL + +" The popup menu +menutrans &Undo &Vrati +menutrans Cu&t &Iseci +menutrans &Copy &Kopiraj +menutrans &Paste &Ubaci +menutrans &Delete I&zbrisi +menutrans Select\ Blockwise Biraj\ &pravougaono +menutrans Select\ &Word Izaberi\ &rec +menutrans Select\ &Line Izaberi\ r&ed +menutrans Select\ &Block Izaberi\ &blok +menutrans Select\ &All Izaberi\ &sve + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Ucitaj + tmenu ToolBar.Save Sacuvaj + tmenu ToolBar.SaveAll Sacuvaj sve + tmenu ToolBar.Print Stampaj + tmenu ToolBar.Undo Vrati + tmenu ToolBar.Redo Povrati + tmenu ToolBar.Cut Iseci + tmenu ToolBar.Copy Kopiraj + tmenu ToolBar.Paste Ubaci + tmenu ToolBar.Find Nadji + tmenu ToolBar.FindNext Nadji sledeci + tmenu ToolBar.FindPrev Nadji prethodni + tmenu ToolBar.Replace Zameni + tmenu ToolBar.New Novi + tmenu ToolBar.WinSplit Podeli prozor + tmenu ToolBar.WinMax Maksimalna visina + tmenu ToolBar.WinMin Minimalna visina + tmenu ToolBar.WinVSplit Podeli uspravno + tmenu ToolBar.WinMaxWidth Maksimalna sirina + tmenu ToolBar.WinMinWidth Minimalna sirina + tmenu ToolBar.WinClose Zatvori prozor + tmenu ToolBar.LoadSesn Ucitaj seansu + tmenu ToolBar.SaveSesn Sacuvaj seansu + tmenu ToolBar.RunScript Izvrsi spis + tmenu ToolBar.Make 'make' + tmenu ToolBar.Shell Operativno okruzenje + tmenu ToolBar.RunCtags Napravi oznake + tmenu ToolBar.TagJump Idi na oznaku + tmenu ToolBar.Help Pomoc + tmenu ToolBar.FindHelp Nadji objasnjenje + endfun +endif + +" Syntax menu +menutrans &Syntax &Sintaksa +menutrans &Show\ filetypes\ in\ menu Izbor\ 'filetype'\ iz\ &menija +menutrans Set\ '&syntax'\ only Pode&si\ 'syntax'\ samo +menutrans Set\ '&filetype'\ too Podesi\ 'filetype'\ &takodje +menutrans &Off &Iskljuceno +menutrans &Manual &Rucno +menutrans A&utomatic &Automatski +menutrans on/off\ for\ &This\ file Da/ne\ za\ ovu\ &datoteku +menutrans Co&lor\ test Provera\ &boja +menutrans &Highlight\ test Provera\ isti&canja +menutrans &Convert\ to\ HTML Pretvori\ &u\ HTML + +" dialog texts +let menutrans_help_dialog = "Unesite naredbu ili rec cije pojasnjenje trazite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog rezima (npr. s_)\nDodajte ' za imena opcija (npr. 'shiftwidth')" + +let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma." + +let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena." + +let g:menutrans_textwidth_dialog = "Unesite novu sirinu teksta (0 sprecava prelom)" + +let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke" + +let menutrans_no_file = "[Nema datoteke]" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_sr_rs.iso_8859-2.vim b/share/vim/vim74/lang/menu_sr_rs.iso_8859-2.vim new file mode 100644 index 00000000..f4b8c68f --- /dev/null +++ b/share/vim/vim74/lang/menu_sr_rs.iso_8859-2.vim @@ -0,0 +1,265 @@ +" Menu Translations: Serbian +" Maintainer: Aleksandar Jelenak +" Last Change: Fri, 30 May 2003 12:04:48 -0400 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding iso8859-2 + +" Help menu +menutrans &Help Pomo&æ +menutrans &Overview &Pregled +menutrans &User\ Manual &Uputstvo\ za\ korisnike +menutrans &How-to\ links &Kako\ da\.\.\. +menutrans &Find &Naði +menutrans &Credits &Zasluge +menutrans Co&pying P&reuzimanje +menutrans O&rphans &Siroèiæi +menutrans &Version &Verzija +menutrans &About &O\ programu + +" File menu +menutrans &File &Datoteka +menutrans &Open\.\.\.:e &Otvori\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp &Podeli-otvori\.\.\.:sp +menutrans &New:enew &Nova:enew +menutrans &Close:close &Zatvori:close +menutrans &Save:w &Saèuvaj:w +menutrans Save\ &As\.\.\.:sav Saèuvaj\ &kao\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Podeli\ i\ &uporedi\ sa\.\.\. +menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\. +menutrans &Print ©ta&mpaj +menutrans Sa&ve-Exit:wqa Saèuvaj\ i\ za&vr¹i:wqa +menutrans E&xit:qa K&raj:qa + +" Edit menu +menutrans &Edit &Ureðivanje +menutrans &Undou &Vratiu +menutrans &Redo^R &Povrati^R +menutrans Rep&eat\. P&onovi\. +menutrans Cu&t"+x Ise&ci"+x +menutrans &Copy"+y &Kopiraj"+y +menutrans &Paste"+gP &Ubaci"+gP +menutrans &Paste"+P &Ubaci"+gP +menutrans Put\ &Before[p Stavi\ pre&d[p +menutrans Put\ &After]p Stavi\ &iza]p +menutrans &Deletex Iz&bri¹ix +menutrans &Select\ allggVG Izaberi\ sv&eggVG +menutrans &Find\.\.\. &Naði\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Naði\ i\ &zameni\.\.\. +menutrans Settings\ &Window P&rozor\ pode¹avanja +menutrans &Global\ Settings Op&¹ta\ pode¹avanja +menutrans F&ile\ Settings Pode¹avanja\ za\ da&toteke +menutrans &Shiftwidth &Pomeraj +menutrans Soft\ &Tabstop &Meka\ tabulacija +menutrans Te&xt\ Width\.\.\. &©irina\ teksta\.\.\. +menutrans &File\ Format\.\.\. &Vrsta\ datoteke\.\.\. +menutrans C&olor\ Scheme Bo&je +menutrans &Keymap Pres&likavanje\ tastature +menutrans Select\ Fo&nt\.\.\. Izbor\ &fonta\.\.\. + +" Edit/Global Settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Naglasi\ &obrazce\ (da/ne):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Zanemari\ \velièinu\ &slova\ (da/ne):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Proveri\ prateæu\ &zagradu\ (da/ne):set\ sm! +menutrans &Context\ lines Vidljivi\ &redovi +menutrans &Virtual\ Edit Virtuelno\ &ureðivanje +menutrans Toggle\ Insert\ &Mode:set\ im! Re¾im\ u&nosa\ (da/ne):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! '&Vi'\ saglasno\ (da/ne):set\ cp! +menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\. +menutrans Ta&g\ Files\.\.\. &Datoteke\ oznaka\.\.\. +menutrans Toggle\ &Toolbar Linija\ sa\ &alatkama\ (da/ne) +menutrans Toggle\ &Bottom\ Scrollbar Donja\ l&inija\ klizanja\ (da/ne) +menutrans Toggle\ &Left\ Scrollbar &Leva\ linija\ klizanja\ (da/ne) +menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne) + +" Edit/Global Settings/Virtual Edit +menutrans Never Nikad +menutrans Block\ Selection Izbor\ bloka +menutrans Insert\ mode Re¾im\ unosa +menutrans Block\ and\ Insert Blok\ i\ unos +menutrans Always Uvek + +" Edit/File Settings +menutrans Toggle\ Line\ &Numbering:set\ nu! Redni\ &brojevi\ (da/ne):set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Re¾im\ &liste\ (da/ne):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Obavijanje\ &redova\ (da/ne):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Prelomi\ &na\ reè\ (da/ne):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Razmaci\ umesto\ &tabulacije\ (da/ne):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Auto-&uvlaèenje\ (da/ne):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! &Ce-uvlaèenje\ (da/ne):set\ cin! + +" Edit/Keymap +menutrans None Nijedan + +" Tools menu +menutrans &Tools &Alatke +menutrans &Jump\ to\ this\ tagg^] Skoèi\ na\ &ovu\ oznakug^] +menutrans Jump\ &back^T Skoèi\ &natrag^T +menutrans Build\ &Tags\ File Izgradi\ &datoteku\ oznaka +menutrans &Folding &Podvijanje +menutrans Create\ &Foldzf S&tvori\ podvijutakzf +menutrans &Delete\ Foldzd O&bri¹i\ podvijutakzd +menutrans Delete\ &All\ FoldszD Obri¹i\ sve\ po&dvijutkezD +menutrans Fold\ column\ &width ©irina\ &reda\ podvijutka +menutrans &Diff &Uporeðivanje +menutrans &Make:make 'mak&e':make +menutrans &List\ Errors:cl Spisak\ &gre¹aka:cl +menutrans L&ist\ Messages:cl! Sp&isak\ poruka:cl! +menutrans &Next\ Error:cn S&ledeæa\ gre¹ka:cn +menutrans &Previous\ Error:cp Pre&thodna\ gre¹ka:cp +menutrans &Older\ List:cold Stari\ spisa&k:cold +menutrans N&ewer\ List:cnew No&vi\ spisak:cnew +menutrans Error\ &Window Prozor\ sa\ g&re¹kama +menutrans &Set\ Compiler I&zaberi\ prevodioca +menutrans &Convert\ to\ HEX:%!xxd Pretvori\ u\ &HEKS:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Vr&ati\ u\ prvobitan\ oblik:%!xxd\ -r + +" Tools/Folding +menutrans &Enable/Disable\ foldszi &Omoguæi/prekini\ podvijanjezi +menutrans &View\ Cursor\ Linezv &Poka¾i\ red\ sa\ kursoromzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Poka¾i\ &samo\ red\ sa\ kursoromzMzx +menutrans C&lose\ more\ foldszm &Zatvori\ vi¹e\ podvijutakazm +menutrans &Close\ all\ foldszM Zatvori\ s&ve\ podvijutkezM +menutrans O&pen\ more\ foldszr Otvori\ vi¹&e\ podvijutakazr +menutrans &Open\ all\ foldszR O&tvori\ sve\ podvijutkezR +menutrans Fold\ Met&hod &Naèin\ podvijanja + +" Tools/Folding/Fold Method +menutrans M&anual &Ruèno +menutrans I&ndent &Uvuèenost +menutrans E&xpression &Izraz +menutrans S&yntax &Sintaksa +"menutrans &Diff +menutrans Ma&rker &Oznaka + +" Tools/Diff +menutrans &Update &A¾uriraj +menutrans &Get\ Block &Prihvati\ izmenu +menutrans &Put\ Block Pre&baci\ izmenu + +" Tools/Error Window +menutrans &Update:cwin &A¾uriraj:cwin +menutrans &Open:copen &Otvori:copen +menutrans &Close:cclose &Zatvori:cclose + +" Bufers menu +menutrans &Buffers &Baferi +menutrans &Refresh\ menu &A¾uriraj +menutrans Delete &Obri¹i +menutrans &Alternate A<ernativni +menutrans &Next &Sledeæi +menutrans &Previous &Prethodni +menutrans [No\ File] [Nema\ datoteke] + +" Window menu +menutrans &Window &Prozor +menutrans &New^Wn &Novi^Wn +menutrans S&plit^Ws &Podeli^Ws +menutrans Sp&lit\ To\ #^W^^ Podeli\ sa\ &alternativnim^W^^ +menutrans Split\ &Vertically^Wv Podeli\ &uspravno^Wv +menutrans Split\ File\ E&xplorer Podeli\ za\ pregled\ &datoteka +menutrans &Close^Wc &Zatvori^Wc +menutrans Close\ &Other(s)^Wo Zatvori\ &ostale^Wo +"menutrans Ne&xt^Ww &Sledeæi^Ww +"menutrans P&revious^WW P&rethodni^WW +menutrans Move\ &To Pre&mesti +menutrans Rotate\ &Up^WR &Kru¾no\ nagore^WR +menutrans Rotate\ &Down^Wr Kru¾no\ nadol&e^Wr +menutrans &Equal\ Size^W= &Iste\ velièine^W= +menutrans &Max\ Height^W_ Maksimalna\ &visina^W_ +menutrans M&in\ Height^W1_ Minima&lna\ visina^W1_ +menutrans Max\ &Width^W\| Maksimalna\ &¹irina^W\| +menutrans Min\ Widt&h^W1\| Minimalna\ ¹i&rina^W1\| + +" Window/Move To +menutrans &Top^WK &Vrh^WK +menutrans &Bottom^WJ &Podno¾je^WJ +menutrans &Left\ side^WH U&levo^WH +menutrans &Right\ side^WL U&desno^WL + +" The popup menu +menutrans &Undo &Vrati +menutrans Cu&t &Iseci +menutrans &Copy &Kopiraj +menutrans &Paste &Ubaci +menutrans &Delete I&zbri¹i +menutrans Select\ Blockwise Biraj\ &pravougaono +menutrans Select\ &Word Izaberi\ &reè +menutrans Select\ &Line Izaberi\ r&ed +menutrans Select\ &Block Izaberi\ &blok +menutrans Select\ &All Izaberi\ &sve + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Uèitaj + tmenu ToolBar.Save Saèuvaj + tmenu ToolBar.SaveAll Saèuvaj sve + tmenu ToolBar.Print ©tampaj + tmenu ToolBar.Undo Vrati + tmenu ToolBar.Redo Povrati + tmenu ToolBar.Cut Iseci + tmenu ToolBar.Copy Kopiraj + tmenu ToolBar.Paste Ubaci + tmenu ToolBar.Find Naði + tmenu ToolBar.FindNext Naði sledeæi + tmenu ToolBar.FindPrev Naði prethodni + tmenu ToolBar.Replace Zameni + tmenu ToolBar.New Novi + tmenu ToolBar.WinSplit Podeli prozor + tmenu ToolBar.WinMax Maksimalna visina + tmenu ToolBar.WinMin Minimalna visina + tmenu ToolBar.WinVSplit Podeli uspravno + tmenu ToolBar.WinMaxWidth Maksimalna ¹irina + tmenu ToolBar.WinMinWidth Minimalna ¹irina + tmenu ToolBar.WinClose Zatvori prozor + tmenu ToolBar.LoadSesn Uèitaj seansu + tmenu ToolBar.SaveSesn Saèuvaj seansu + tmenu ToolBar.RunScript Izvr¹i spis + tmenu ToolBar.Make 'make' + tmenu ToolBar.Shell Operativno okru¾enje + tmenu ToolBar.RunCtags Napravi oznake + tmenu ToolBar.TagJump Idi na oznaku + tmenu ToolBar.Help Pomoæ + tmenu ToolBar.FindHelp Naði obja¹njenje + endfun +endif + +" Syntax menu +menutrans &Syntax &Sintaksa +menutrans &Show\ filetypes\ in\ menu Izbor\ 'filetype'\ iz\ &menija +menutrans Set\ '&syntax'\ only Pode&si\ 'syntax'\ samo +menutrans Set\ '&filetype'\ too Podesi\ 'filetype'\ &takoðe +menutrans &Off &Iskljuèeno +menutrans &Manual &Ruèno +menutrans A&utomatic &Automatski +menutrans on/off\ for\ &This\ file Da/ne\ za\ ovu\ &datoteku +menutrans Co&lor\ test Provera\ &boja +menutrans &Highlight\ test Provera\ isti&canja +menutrans &Convert\ to\ HTML Pretvori\ &u\ HTML + +" dialog texts +let menutrans_help_dialog = "Unesite naredbu ili reè èije poja¹njenje tra¾ite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog re¾ima (npr. s_)\nDodajte ' za imena opcija (npr. 'shiftwidth')" + +let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma." + +let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena." + +let g:menutrans_textwidth_dialog = "Unesite novu ¹irinu teksta (0 spreèava prelom)" + +let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke" + +let menutrans_no_file = "[Nema datoteke]" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_sr_rs.iso_8859-5.vim b/share/vim/vim74/lang/menu_sr_rs.iso_8859-5.vim new file mode 100644 index 00000000..dd3b4368 --- /dev/null +++ b/share/vim/vim74/lang/menu_sr_rs.iso_8859-5.vim @@ -0,0 +1,265 @@ +" Menu Translations: Serbian +" Maintainer: Aleksandar Jelenak +" Last Change: Fri, 30 May 2003 12:02:07 -0400 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding iso8859-5 + +" Help menu +menutrans &Help ¿ÞÜÞ&û +menutrans &Overview &¿àÕÓÛÕÔ +menutrans &User\ Manual &ÃßãâáâÒÞ\ ×Ð\ ÚÞàØáÝØÚÕ +menutrans &How-to\ links &ºÐÚÞ\ ÔÐ\.\.\. +menutrans &Find &½ÐòØ +menutrans &Credits &·ÐáÛãÓÕ +menutrans Co&pying ¿&àÕã×ØÜÐúÕ +menutrans O&rphans &ÁØàÞçØûØ +menutrans &Version &²Õà×ØøÐ +menutrans &About &¾\ ßàÞÓàÐÜã + +" File menu +menutrans &File &´ÐâÞâÕÚÐ +menutrans &Open\.\.\.:e &¾âÒÞàØ\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp &¿ÞÔÕÛØ-ÞâÒÞàØ\.\.\.:sp +menutrans &New:enew &½ÞÒÐ:enew +menutrans &Close:close &·ÐâÒÞàØ:close +menutrans &Save:w &ÁÐçãÒÐø:w +menutrans Save\ &As\.\.\.:sav ÁÐçãÒÐø\ &ÚÐÞ\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. ¿ÞÔÕÛØ\ Ø\ &ãßÞàÕÔØ\ áÐ\.\.\. +menutrans Split\ Patched\ &By\.\.\. ¿Þ&ÔÕÛØ\ Ø\ ßàÕßàÐÒØ\ áÐ\.\.\. +menutrans &Print ÈâÐ&ÜßÐø +menutrans Sa&ve-Exit:wqa ÁÐçãÒÐø\ Ø\ ×Ð&ÒàèØ:wqa +menutrans E&xit:qa º&àÐø:qa + +" Edit menu +menutrans &Edit &ÃàÕòØÒÐúÕ +menutrans &Undou &²àÐâØu +menutrans &Redo^R &¿ÞÒàÐâØ^R +menutrans Rep&eat\. ¿&ÞÝÞÒØ\. +menutrans Cu&t"+x ¸áÕ&æØ"+x +menutrans &Copy"+y &ºÞßØàÐø"+y +menutrans &Paste"+gP &ÃÑÐæØ"+gP +menutrans &Paste"+P &ÃÑÐæØ"+gP +menutrans Put\ &Before[p ÁâÐÒØ\ ßàÕ&Ô[p +menutrans Put\ &After]p ÁâÐÒØ\ &Ø×Ð]p +menutrans &Deletex ¸×&ÑàØèØx +menutrans &Select\ allggVG ¸×ÐÑÕàØ\ áÒ&ÕggVG +menutrans &Find\.\.\. &½ÐòØ\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. ½ÐòØ\ Ø\ &×ÐÜÕÝØ\.\.\. +menutrans Settings\ &Window ¿&àÞ×Þà\ ßÞÔÕèÐÒÐúÐ +menutrans &Global\ Settings ¾ß&èâÐ\ ßÞÔÕèÐÒÐúÐ +menutrans F&ile\ Settings ¿ÞÔÕèÐÒÐúÐ\ ×Ð\ ÔÐ&âÞâÕÚÕ +menutrans &Shiftwidth &¿ÞÜÕàÐø +menutrans Soft\ &Tabstop &¼ÕÚÐ\ âÐÑãÛÐæØøÐ +menutrans Te&xt\ Width\.\.\. &ÈØàØÝÐ\ âÕÚáâÐ\.\.\. +menutrans &File\ Format\.\.\. &²àáâÐ\ ÔÐâÞâÕÚÕ\.\.\. +menutrans C&olor\ Scheme ±Þ&øÕ +menutrans &Keymap ¿àÕá&ÛØÚÐÒÐúÕ\ âÐáâÐâãàÕ +menutrans Select\ Fo&nt\.\.\. ¸×ÑÞà\ &äÞÝâÐ\.\.\. + +" Edit/Global Settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! ½ÐÓÛÐáØ\ &ÞÑàÐ×æÕ\ (ÔÐ/ÝÕ):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! ·ÐÝÕÜÐàØ\ \ÒÕÛØçØÝã\ &áÛÞÒÐ\ (ÔÐ/ÝÕ):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! ¿àÞÒÕàØ\ ßàÐâÕûã\ &×ÐÓàÐÔã\ (ÔÐ/ÝÕ):set\ sm! +menutrans &Context\ lines ²ØÔùØÒØ\ &àÕÔÞÒØ +menutrans &Virtual\ Edit ²ØàâãÕÛÝÞ\ &ãàÕòØÒÐúÕ +menutrans Toggle\ Insert\ &Mode:set\ im! ÀÕÖØÜ\ ã&ÝÞáÐ\ (ÔÐ/ÝÕ):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! '&Vi'\ áÐÓÛÐáÝÞ\ (ÔÐ/ÝÕ):set\ cp! +menutrans Search\ &Path\.\.\. ¿ãâÐúÐ\ &ßàÕâàÐÓÕ\.\.\. +menutrans Ta&g\ Files\.\.\. &´ÐâÞâÕÚÕ\ Þ×ÝÐÚÐ\.\.\. +menutrans Toggle\ &Toolbar »ØÝØøÐ\ áÐ\ &ÐÛÐâÚÐÜÐ\ (ÔÐ/ÝÕ) +menutrans Toggle\ &Bottom\ Scrollbar ´ÞúÐ\ Û&ØÝØøÐ\ ÚÛØ×ÐúÐ\ (ÔÐ/ÝÕ) +menutrans Toggle\ &Left\ Scrollbar &»ÕÒÐ\ ÛØÝØøÐ\ ÚÛØ×ÐúÐ\ (ÔÐ/ÝÕ) +menutrans Toggle\ &Right\ Scrollbar &´ÕáÝÐ\ ÛØÝØøÐ\ ÚÛØ×ÐúÐ\ (ÔÐ/ÝÕ) + +" Edit/Global Settings/Virtual Edit +menutrans Never ½ØÚÐÔ +menutrans Block\ Selection ¸×ÑÞà\ ÑÛÞÚÐ +menutrans Insert\ mode ÀÕÖØÜ\ ãÝÞáÐ +menutrans Block\ and\ Insert ±ÛÞÚ\ Ø\ ãÝÞá +menutrans Always ÃÒÕÚ + +" Edit/File Settings +menutrans Toggle\ Line\ &Numbering:set\ nu! ÀÕÔÝØ\ &ÑàÞøÕÒØ\ (ÔÐ/ÝÕ):set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! ÀÕÖØÜ\ &ÛØáâÕ\ (ÔÐ/ÝÕ):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! ¾ÑÐÒØøÐúÕ\ &àÕÔÞÒÐ\ (ÔÐ/ÝÕ):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! ¿àÕÛÞÜØ\ &ÝÐ\ àÕç\ (ÔÐ/ÝÕ):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! ÀÐ×ÜÐæØ\ ãÜÕáâÞ\ &âÐÑãÛÐæØøÕ\ (ÔÐ/ÝÕ):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! °ãâÞ-&ãÒÛÐçÕúÕ\ (ÔÐ/ÝÕ):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! &ÆÕ-ãÒÛÐçÕúÕ\ (ÔÐ/ÝÕ):set\ cin! + +" Edit/Keymap +menutrans None ½ØøÕÔÐÝ + +" Tools menu +menutrans &Tools &°ÛÐâÚÕ +menutrans &Jump\ to\ this\ tagg^] ÁÚÞçØ\ ÝÐ\ &ÞÒã\ Þ×ÝÐÚãg^] +menutrans Jump\ &back^T ÁÚÞçØ\ &ÝÐâàÐÓ^T +menutrans Build\ &Tags\ File ¸×ÓàÐÔØ\ &ÔÐâÞâÕÚã\ Þ×ÝÐÚÐ +menutrans &Folding &¿ÞÔÒØøÐúÕ +menutrans Create\ &Foldzf Á&âÒÞàØ\ ßÞÔÒØøãâÐÚzf +menutrans &Delete\ Foldzd ¾&ÑàØèØ\ ßÞÔÒØøãâÐÚzd +menutrans Delete\ &All\ FoldszD ¾ÑàØèØ\ áÒÕ\ ßÞ&ÔÒØøãâÚÕzD +menutrans Fold\ column\ &width ÈØàØÝÐ\ &àÕÔÐ\ ßÞÔÒØøãâÚÐ +menutrans &Diff &ÃßÞàÕòØÒÐúÕ +menutrans &Make:make 'mak&Õ':make +menutrans &List\ Errors:cl ÁßØáÐÚ\ &ÓàÕèÐÚÐ:cl +menutrans L&ist\ Messages:cl! Áß&ØáÐÚ\ ßÞàãÚÐ:cl! +menutrans &Next\ Error:cn Á&ÛÕÔÕûÐ\ ÓàÕèÚÐ:cn +menutrans &Previous\ Error:cp ¿àÕ&âåÞÔÝÐ\ ÓàÕèÚÐ:cp +menutrans &Older\ List:cold ÁâÐàØ\ áßØáÐ&Ú:cold +menutrans N&ewer\ List:cnew ½Þ&ÒØ\ áßØáÐÚ:cnew +menutrans Error\ &Window ¿àÞ×Þà\ áÐ\ Ó&àÕèÚÐÜÐ +menutrans &Set\ Compiler ¸&×ÐÑÕàØ\ ßàÕÒÞÔØÞæÐ +menutrans &Convert\ to\ HEX:%!xxd ¿àÕâÒÞàØ\ ã\ &ŵºÁ:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r ²à&ÐâØ\ ã\ ßàÒÞÑØâÐÝ\ ÞÑÛØÚ:%!xxd\ -r + +" Tools/Folding +menutrans &Enable/Disable\ foldszi &¾ÜÞÓãûØ/ßàÕÚØÝØ\ ßÞÔÒØøÐúÕzi +menutrans &View\ Cursor\ Linezv &¿ÞÚÐÖØ\ àÕÔ\ áÐ\ ÚãàáÞàÞÜzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx ¿ÞÚÐÖØ\ &áÐÜÞ\ àÕÔ\ áÐ\ ÚãàáÞàÞÜzMzx +menutrans C&lose\ more\ foldszm &·ÐâÒÞàØ\ ÒØèÕ\ ßÞÔÒØøãâÐÚÐzm +menutrans &Close\ all\ foldszM ·ÐâÒÞàØ\ á&ÒÕ\ ßÞÔÒØøãâÚÕzM +menutrans O&pen\ more\ foldszr ¾âÒÞàØ\ ÒØè&Õ\ ßÞÔÒØøãâÐÚÐzr +menutrans &Open\ all\ foldszR ¾&âÒÞàØ\ áÒÕ\ ßÞÔÒØøãâÚÕzR +menutrans Fold\ Met&hod &½ÐçØÝ\ ßÞÔÒØøÐúÐ + +" Tools/Folding/Fold Method +menutrans M&anual &ÀãçÝÞ +menutrans I&ndent &ÃÒãçÕÝÞáâ +menutrans E&xpression &¸×àÐ× +menutrans S&yntax &ÁØÝâÐÚáÐ +"menutrans &Diff +menutrans Ma&rker &¾×ÝÐÚÐ + +" Tools/Diff +menutrans &Update &°ÖãàØàÐø +menutrans &Get\ Block &¿àØåÒÐâØ\ Ø×ÜÕÝã +menutrans &Put\ Block ¿àÕ&ÑÐæØ\ Ø×ÜÕÝã + +" Tools/Error Window +menutrans &Update:cwin &°ÖãàØàÐø:cwin +menutrans &Open:copen &¾âÒÞàØ:copen +menutrans &Close:cclose &·ÐâÒÞàØ:cclose + +" Bufers menu +menutrans &Buffers &±ÐäÕàØ +menutrans &Refresh\ menu &°ÖãàØàÐø +menutrans Delete &¾ÑàØèØ +menutrans &Alternate °&ÛâÕàÝÐâØÒÝØ +menutrans &Next &ÁÛÕÔÕûØ +menutrans &Previous &¿àÕâåÞÔÝØ +menutrans [No\ File] [½ÕÜÐ\ ÔÐâÞâÕÚÕ] + +" Window menu +menutrans &Window &¿àÞ×Þà +menutrans &New^Wn &½ÞÒØ^Wn +menutrans S&plit^Ws &¿ÞÔÕÛØ^Ws +menutrans Sp&lit\ To\ #^W^^ ¿ÞÔÕÛØ\ áÐ\ &ÐÛâÕàÝÐâØÒÝØÜ^W^^ +menutrans Split\ &Vertically^Wv ¿ÞÔÕÛØ\ &ãáßàÐÒÝÞ^Wv +menutrans Split\ File\ E&xplorer ¿ÞÔÕÛØ\ ×Ð\ ßàÕÓÛÕÔ\ &ÔÐâÞâÕÚÐ +menutrans &Close^Wc &·ÐâÒÞàØ^Wc +menutrans Close\ &Other(s)^Wo ·ÐâÒÞàØ\ &ÞáâÐÛÕ^Wo +"menutrans Ne&xt^Ww &ÁÛÕÔÕûØ^Ww +"menutrans P&revious^WW ¿&àÕâåÞÔÝØ^WW +menutrans Move\ &To ¿àÕ&ÜÕáâØ +menutrans Rotate\ &Up^WR &ºàãÖÝÞ\ ÝÐÓÞàÕ^WR +menutrans Rotate\ &Down^Wr ºàãÖÝÞ\ ÝÐÔÞÛ&Õ^Wr +menutrans &Equal\ Size^W= &¸áâÕ\ ÒÕÛØçØÝÕ^W= +menutrans &Max\ Height^W_ ¼ÐÚáØÜÐÛÝÐ\ &ÒØáØÝÐ^W_ +menutrans M&in\ Height^W1_ ¼ØÝØÜÐ&ÛÝÐ\ ÒØáØÝÐ^W1_ +menutrans Max\ &Width^W\| ¼ÐÚáØÜÐÛÝÐ\ &èØàØÝÐ^W\| +menutrans Min\ Widt&h^W1\| ¼ØÝØÜÐÛÝÐ\ èØ&àØÝÐ^W1\| + +" Window/Move To +menutrans &Top^WK &²àå^WK +menutrans &Bottom^WJ &¿ÞÔÝÞÖøÕ^WJ +menutrans &Left\ side^WH Ã&ÛÕÒÞ^WH +menutrans &Right\ side^WL Ã&ÔÕáÝÞ^WL + +" The popup menu +menutrans &Undo &²àÐâØ +menutrans Cu&t &¸áÕæØ +menutrans &Copy &ºÞßØàÐø +menutrans &Paste &ÃÑÐæØ +menutrans &Delete ¸&×ÑàØèØ +menutrans Select\ Blockwise ±ØàÐø\ &ßàÐÒÞãÓÐÞÝÞ +menutrans Select\ &Word ¸×ÐÑÕàØ\ &àÕç +menutrans Select\ &Line ¸×ÐÑÕàØ\ à&ÕÔ +menutrans Select\ &Block ¸×ÐÑÕàØ\ &ÑÛÞÚ +menutrans Select\ &All ¸×ÐÑÕàØ\ &áÒÕ + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open ÃçØâÐø + tmenu ToolBar.Save ÁÐçãÒÐø + tmenu ToolBar.SaveAll ÁÐçãÒÐø áÒÕ + tmenu ToolBar.Print ÈâÐÜßÐø + tmenu ToolBar.Undo ²àÐâØ + tmenu ToolBar.Redo ¿ÞÒàÐâØ + tmenu ToolBar.Cut ¸áÕæØ + tmenu ToolBar.Copy ºÞßØàÐø + tmenu ToolBar.Paste ÃÑÐæØ + tmenu ToolBar.Find ½ÐòØ + tmenu ToolBar.FindNext ½ÐòØ áÛÕÔÕûØ + tmenu ToolBar.FindPrev ½ÐòØ ßàÕâåÞÔÝØ + tmenu ToolBar.Replace ·ÐÜÕÝØ + tmenu ToolBar.New ½ÞÒØ + tmenu ToolBar.WinSplit ¿ÞÔÕÛØ ßàÞ×Þà + tmenu ToolBar.WinMax ¼ÐÚáØÜÐÛÝÐ ÒØáØÝÐ + tmenu ToolBar.WinMin ¼ØÝØÜÐÛÝÐ ÒØáØÝÐ + tmenu ToolBar.WinVSplit ¿ÞÔÕÛØ ãáßàÐÒÝÞ + tmenu ToolBar.WinMaxWidth ¼ÐÚáØÜÐÛÝÐ èØàØÝÐ + tmenu ToolBar.WinMinWidth ¼ØÝØÜÐÛÝÐ èØàØÝÐ + tmenu ToolBar.WinClose ·ÐâÒÞàØ ßàÞ×Þà + tmenu ToolBar.LoadSesn ÃçØâÐø áÕÐÝáã + tmenu ToolBar.SaveSesn ÁÐçãÒÐø áÕÐÝáã + tmenu ToolBar.RunScript ¸×ÒàèØ áßØá + tmenu ToolBar.Make 'make' + tmenu ToolBar.Shell ¾ßÕàÐâØÒÝÞ ÞÚàãÖÕúÕ + tmenu ToolBar.RunCtags ½ÐßàÐÒØ Þ×ÝÐÚÕ + tmenu ToolBar.TagJump ¸ÔØ ÝÐ Þ×ÝÐÚã + tmenu ToolBar.Help ¿ÞÜÞû + tmenu ToolBar.FindHelp ½ÐòØ ÞÑøÐèúÕúÕ + endfun +endif + +" Syntax menu +menutrans &Syntax &ÁØÝâÐÚáÐ +menutrans &Show\ filetypes\ in\ menu ¸×ÑÞà\ 'filetype'\ Ø×\ &ÜÕÝØøÐ +menutrans Set\ '&syntax'\ only ¿ÞÔÕ&áØ\ 'syntax'\ áÐÜÞ +menutrans Set\ '&filetype'\ too ¿ÞÔÕáØ\ 'filetype'\ &âÐÚÞòÕ +menutrans &Off &¸áÚùãçÕÝÞ +menutrans &Manual &ÀãçÝÞ +menutrans A&utomatic &°ãâÞÜÐâáÚØ +menutrans on/off\ for\ &This\ file ´Ð/ÝÕ\ ×Ð\ ÞÒã\ &ÔÐâÞâÕÚã +menutrans Co&lor\ test ¿àÞÒÕàÐ\ &ÑÞøÐ +menutrans &Highlight\ test ¿àÞÒÕàÐ\ ØáâØ&æÐúÐ +menutrans &Convert\ to\ HTML ¿àÕâÒÞàØ\ &ã\ HTML + +" dialog texts +let menutrans_help_dialog = "ÃÝÕáØâÕ ÝÐàÕÔÑã ØÛØ àÕç çØøÕ ßÞøÐèúÕúÕ âàÐÖØâÕ:\n\n´ÞÔÐøâÕ i_ ×Ð ÝÐàÕÔÑÕ ãÝÞáÐ (Ýßà. i_CTRL-X)\n´ÞÔÐøâÕ c_ ×Ð ÝÐàÕÔÑÕ ÚÞÜÐÝÔÝÞÓ àÕÖØÜÐ (Ýßà. á_)\n´ÞÔÐøâÕ ' ×Ð ØÜÕÝÐ ÞßæØøÐ (Ýßà. 'shiftwidth')" + +let g:menutrans_path_dialog = "ÃÝÕáØâÕ ßãâ ßàÕâàÐÓÕ ×Ð ÔÐâÞâÕÚÕ\nÀÐ×ÔÒÞøØâÕ ×ÐàÕ×ØÜÐ ØÜÕÝÐ ÔØàÕÚâÞàØøãÜÐ." + +let g:menutrans_tags_dialog = "ÃÝÕáØâÕ ØÜÕÝÐ ÔÐâÞâÕÚÐ áÐ Þ×ÝÐÚÐÜÐ\nÀÐ×ÔÒÞøØâÕ ×ÐàÕ×ØÜÐ ØÜÕÝÐ." + +let g:menutrans_textwidth_dialog = "ÃÝÕáØâÕ ÝÞÒã èØàØÝã âÕÚáâÐ (0 áßàÕçÐÒÐ ßàÕÛÞÜ)" + +let g:menutrans_fileformat_dialog = "¸×ÐÑÕàØâÕ Òàáâã ÔÐâÞâÕÚÕ" + +let menutrans_no_file = "[½ÕÜÐ ÔÐâÞâÕÚÕ]" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_sr_rs.utf-8.vim b/share/vim/vim74/lang/menu_sr_rs.utf-8.vim new file mode 100644 index 00000000..b9e536da --- /dev/null +++ b/share/vim/vim74/lang/menu_sr_rs.utf-8.vim @@ -0,0 +1,267 @@ +" Menu Translations: Serbian +" Maintainer: Aleksandar Jelenak +" Last Change: Fri, 30 May 2003 10:17:39 Eastern Daylight Time + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +" Help menu +menutrans &Help Помо&ћ +menutrans &Overview &Преглед +menutrans &User\ Manual &Упутство\ за\ кориснике +menutrans &How-to\ links &Како\ да\.\.\. +menutrans &Find &Нађи +menutrans &Credits &Заслуге +menutrans Co&pying П&реузимање +menutrans O&rphans &Сирочићи +menutrans &Version &Верзија +menutrans &About &О\ програму + +" File menu +menutrans &File &Датотека +menutrans &Open\.\.\.:e &Отвори\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp &Подели-отвори\.\.\.:sp +menutrans &New:enew &Нова:enew +menutrans &Close:close &Затвори:close +menutrans &Save:w &Сачувај:w +menutrans Save\ &As\.\.\.:sav Сачувај\ &као\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Подели\ и\ &упореди\ са\.\.\. +menutrans Split\ Patched\ &By\.\.\. По&дели\ и\ преправи\ са\.\.\. +menutrans &Print Шта&мпај +menutrans Sa&ve-Exit:wqa Сачувај\ и\ за&врши:wqa +menutrans E&xit:qa К&рај:qa + +" Edit menu +menutrans &Edit &Уређивање +menutrans &Undou &Вратиu +menutrans &Redo^R &Поврати^R +menutrans Rep&eat\. П&онови\. +menutrans Cu&t"+x Исе&ци"+x +menutrans &Copy"+y &Копирај"+y +menutrans &Paste"+gP &Убаци"+gP +menutrans &Paste"+P &Убаци"+gP +menutrans Put\ &Before[p Стави\ пре&д[p +menutrans Put\ &After]p Стави\ &иза]p +menutrans &Deletex Из&бришиx +menutrans &Select\ allggVG Изабери\ св&еggVG +menutrans &Find\.\.\. &Нађи\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Нађи\ и\ &замени\.\.\. +menutrans Settings\ &Window П&розор\ подешавања +menutrans &Global\ Settings Оп&шта\ подешавања +menutrans F&ile\ Settings Подешавања\ за\ да&тотеке +menutrans &Shiftwidth &Померај +menutrans Soft\ &Tabstop &Мека\ табулација +menutrans Te&xt\ Width\.\.\. &Ширина\ текста\.\.\. +menutrans &File\ Format\.\.\. &Врста\ датотеке\.\.\. +menutrans C&olor\ Scheme Бо&је +menutrans &Keymap Прес&ликавање\ тастатуре +menutrans Select\ Fo&nt\.\.\. Избор\ &фонта\.\.\. + +" Edit/Global Settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Нагласи\ &образце\ (да/не):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Занемари\ \величину\ &слова\ (да/не):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Провери\ пратећу\ &заграду\ (да/не):set\ sm! +menutrans &Context\ lines Видљиви\ &редови +menutrans &Virtual\ Edit Виртуелно\ &уређивање +menutrans Toggle\ Insert\ &Mode:set\ im! Режим\ у&носа\ (да/не):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! '&Vi'\ сагласно\ (да/не):set\ cp! +menutrans Search\ &Path\.\.\. Путања\ &претраге\.\.\. +menutrans Ta&g\ Files\.\.\. &Датотеке\ ознака\.\.\. +menutrans Toggle\ &Toolbar Линија\ са\ &алаткама\ (да/не) +menutrans Toggle\ &Bottom\ Scrollbar Доња\ л&инија\ клизања\ (да/не) +menutrans Toggle\ &Left\ Scrollbar &Лева\ линија\ клизања\ (да/не) +menutrans Toggle\ &Right\ Scrollbar &Десна\ линија\ клизања\ (да/не) + +" Edit/Global Settings/Virtual Edit +menutrans Never Никад +menutrans Block\ Selection Избор\ блока +menutrans Insert\ mode Режим\ уноса +menutrans Block\ and\ Insert Блок\ и\ унос +menutrans Always Увек + +" Edit/File Settings +menutrans Toggle\ Line\ &Numbering:set\ nu! Редни\ &бројеви\ (да/не):set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Режим\ &листе\ (да/не):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Обавијање\ &редова\ (да/не):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Преломи\ &на\ реч\ (да/не):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Размаци\ уместо\ &табулације\ (да/не):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Ауто-&увлачење\ (да/не):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! &Це-увлачење\ (да/не):set\ cin! + +" Edit/Keymap +menutrans None Ниједан + +" Tools menu +menutrans &Tools &Алатке +menutrans &Jump\ to\ this\ tagg^] Скочи\ на\ &ову\ ознакуg^] +menutrans Jump\ &back^T Скочи\ &натраг^T +menutrans Build\ &Tags\ File Изгради\ &датотеку\ ознака +menutrans &Folding &Подвијање +menutrans Create\ &Foldzf С&твори\ подвијутакzf +menutrans &Delete\ Foldzd О&бриши\ подвијутакzd +menutrans Delete\ &All\ FoldszD Обриши\ све\ по&двијуткеzD +menutrans Fold\ column\ &width Ширина\ &реда\ подвијутка +menutrans &Diff &Упоређивање +menutrans &Make:make 'mak&е':make +menutrans &List\ Errors:cl Списак\ &грешака:cl +menutrans L&ist\ Messages:cl! Сп&исак\ порука:cl! +menutrans &Next\ Error:cn С&ледећа\ грешка:cn +menutrans &Previous\ Error:cp Пре&тходна\ грешка:cp +menutrans &Older\ List:cold Стари\ списа&к:cold +menutrans N&ewer\ List:cnew Но&ви\ списак:cnew +menutrans Error\ &Window Прозор\ са\ г&решкама +menutrans &Set\ Compiler И&забери\ преводиоца +menutrans &Convert\ to\ HEX:%!xxd Претвори\ у\ &ХЕКС:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Вр&ати\ у\ првобитан\ облик:%!xxd\ -r + +" Tools/Folding +menutrans &Enable/Disable\ foldszi &Омогући/прекини\ подвијањеzi +menutrans &View\ Cursor\ Linezv &Покажи\ ред\ са\ курсоромzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Покажи\ &само\ ред\ са\ курсоромzMzx +menutrans C&lose\ more\ foldszm &Затвори\ више\ подвијутакаzm +menutrans &Close\ all\ foldszM Затвори\ с&ве\ подвијуткеzM +menutrans O&pen\ more\ foldszr Отвори\ виш&е\ подвијутакаzr +menutrans &Open\ all\ foldszR О&твори\ све\ подвијуткеzR +menutrans Fold\ Met&hod &Начин\ подвијања + +" Tools/Folding/Fold Method +menutrans M&anual &Ручно +menutrans I&ndent &Увученост +menutrans E&xpression &Израз +menutrans S&yntax &Синтакса +"menutrans &Diff +menutrans Ma&rker &Ознака + +" Tools/Diff +menutrans &Update &Ажурирај +menutrans &Get\ Block &Прихвати\ измену +menutrans &Put\ Block Пре&баци\ измену + +" Tools/Error Window +menutrans &Update:cwin &Ажурирај:cwin +menutrans &Open:copen &Отвори:copen +menutrans &Close:cclose &Затвори:cclose + +" Bufers menu +menutrans &Buffers &Бафери +menutrans &Refresh\ menu &Ажурирај +menutrans Delete &Обриши +menutrans &Alternate А&лтернативни +menutrans &Next &Следећи +menutrans &Previous &Претходни +menutrans [No\ File] [Нема\ датотеке] + +" Window menu +menutrans &Window &Прозор +menutrans &New^Wn &Нови^Wn +menutrans S&plit^Ws &Подели^Ws +menutrans Sp&lit\ To\ #^W^^ Подели\ са\ &алтернативним^W^^ +menutrans Split\ &Vertically^Wv Подели\ &усправно^Wv +menutrans Split\ File\ E&xplorer Подели\ за\ преглед\ &датотека +menutrans &Close^Wc &Затвори^Wc +menutrans Close\ &Other(s)^Wo Затвори\ &остале^Wo +"menutrans Ne&xt^Ww &Следећи^Ww +"menutrans P&revious^WW П&ретходни^WW +menutrans Move\ &To Пре&мести +menutrans Rotate\ &Up^WR &Кружно\ нагоре^WR +menutrans Rotate\ &Down^Wr Кружно\ надол&е^Wr +menutrans &Equal\ Size^W= &Исте\ величине^W= +menutrans &Max\ Height^W_ Максимална\ &висина^W_ +menutrans M&in\ Height^W1_ Минима&лна\ висина^W1_ +menutrans Max\ &Width^W\| Максимална\ &ширина^W\| +menutrans Min\ Widt&h^W1\| Минимална\ ши&рина^W1\| + +" Window/Move To +menutrans &Top^WK &Врх^WK +menutrans &Bottom^WJ &Подножје^WJ +menutrans &Left\ side^WH У&лево^WH +menutrans &Right\ side^WL У&десно^WL + +" The popup menu +menutrans &Undo &Врати +menutrans Cu&t &Исеци +menutrans &Copy &Копирај +menutrans &Paste &Убаци +menutrans &Delete И&збриши +menutrans Select\ Blockwise Бирај\ &правоугаоно +menutrans Select\ &Word Изабери\ &реч +menutrans Select\ &Line Изабери\ р&ед +menutrans Select\ &Block Изабери\ &блок +menutrans Select\ &All Изабери\ &све + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Учитај + tmenu ToolBar.Save Сачувај + tmenu ToolBar.SaveAll Сачувај све + tmenu ToolBar.Print Штампај + tmenu ToolBar.Undo Врати + tmenu ToolBar.Redo Поврати + tmenu ToolBar.Cut Исеци + tmenu ToolBar.Copy Копирај + tmenu ToolBar.Paste Убаци + tmenu ToolBar.Find Нађи + tmenu ToolBar.FindNext Нађи следећи + tmenu ToolBar.FindPrev Нађи претходни + tmenu ToolBar.Replace Замени + tmenu ToolBar.New Нови + tmenu ToolBar.WinSplit Подели прозор + tmenu ToolBar.WinMax Максимална висина + tmenu ToolBar.WinMin Минимална висина + tmenu ToolBar.WinVSplit Подели усправно + tmenu ToolBar.WinMaxWidth Максимална ширина + tmenu ToolBar.WinMinWidth Минимална ширина + tmenu ToolBar.WinClose Затвори прозор + tmenu ToolBar.LoadSesn Учитај сеансу + tmenu ToolBar.SaveSesn Сачувај сеансу + tmenu ToolBar.RunScript Изврши спис + tmenu ToolBar.Make 'make' + tmenu ToolBar.Shell Оперативно окружење + tmenu ToolBar.RunCtags Направи ознаке + tmenu ToolBar.TagJump Иди на ознаку + tmenu ToolBar.Help Помоћ + tmenu ToolBar.FindHelp Нађи објашњење + endfun +endif + +" Syntax menu +menutrans &Syntax &Синтакса +menutrans &Show\ filetypes\ in\ menu Избор\ 'filetype'\ из\ &менија +menutrans Set\ '&syntax'\ only Поде&си\ 'syntax'\ само +menutrans Set\ '&filetype'\ too Подеси\ 'filetype'\ &такође +menutrans &Off &Искључено +menutrans &Manual &Ручно +menutrans A&utomatic &Аутоматски +menutrans on/off\ for\ &This\ file Да/не\ за\ ову\ &датотеку +menutrans Co&lor\ test Провера\ &боја +menutrans &Highlight\ test Провера\ исти&цања +menutrans &Convert\ to\ HTML Претвори\ &у\ HTML + +" dialog texts +let menutrans_help_dialog = "Унесите наредбу или реч чије појашњење тражите:\n\nДодајте i_ за наредбе уноса (нпр. i_CTRL-X)\nДодајте c_ за наредбе командног режима (нпр. с_)\nДодајте ' за имена опција (нпр. 'shiftwidth')" + +let g:menutrans_path_dialog = "Унесите пут претраге за датотеке\nРаздвојите зарезима имена директоријума." + +let g:menutrans_tags_dialog = "Унесите имена датотека са ознакама\nРаздвојите зарезима имена." + +let g:menutrans_textwidth_dialog = "Унесите нову ширину текста (0 спречава прелом)" + +let g:menutrans_fileformat_dialog = "Изаберите врсту датотеке" + +let menutrans_no_file = "[Нема датотеке]" + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim: tw=0 keymap=serbian diff --git a/share/vim/vim73/lang/menu_sr_yu.ascii.vim b/share/vim/vim74/lang/menu_sr_yu.ascii.vim similarity index 100% rename from share/vim/vim73/lang/menu_sr_yu.ascii.vim rename to share/vim/vim74/lang/menu_sr_yu.ascii.vim diff --git a/share/vim/vim73/lang/menu_sr_yu.iso_8859-2.vim b/share/vim/vim74/lang/menu_sr_yu.iso_8859-2.vim similarity index 100% rename from share/vim/vim73/lang/menu_sr_yu.iso_8859-2.vim rename to share/vim/vim74/lang/menu_sr_yu.iso_8859-2.vim diff --git a/share/vim/vim73/lang/menu_sr_yu.iso_8859-5.vim b/share/vim/vim74/lang/menu_sr_yu.iso_8859-5.vim similarity index 100% rename from share/vim/vim73/lang/menu_sr_yu.iso_8859-5.vim rename to share/vim/vim74/lang/menu_sr_yu.iso_8859-5.vim diff --git a/share/vim/vim73/lang/menu_sr_yu.utf-8.vim b/share/vim/vim74/lang/menu_sr_yu.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_sr_yu.utf-8.vim rename to share/vim/vim74/lang/menu_sr_yu.utf-8.vim diff --git a/share/vim/vim73/lang/menu_sv.latin1.vim b/share/vim/vim74/lang/menu_sv.latin1.vim similarity index 100% rename from share/vim/vim73/lang/menu_sv.latin1.vim rename to share/vim/vim74/lang/menu_sv.latin1.vim diff --git a/share/vim/vim73/lang/menu_sv.utf-8.vim b/share/vim/vim74/lang/menu_sv.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_sv.utf-8.vim rename to share/vim/vim74/lang/menu_sv.utf-8.vim diff --git a/share/vim/vim74/lang/menu_sv_se.latin1.vim b/share/vim/vim74/lang/menu_sv_se.latin1.vim new file mode 100644 index 00000000..2e374853 --- /dev/null +++ b/share/vim/vim74/lang/menu_sv_se.latin1.vim @@ -0,0 +1,255 @@ +" Menu Translations: Swedish +" Maintainer: Johan Svedberg +" Last Change: 2012 May 01 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" The translations below are in latin1, but they work for cp1252 and +" iso-8859-15 without conversion as well. +if &enc != "cp1252" && &enc != "iso-8859-15" + scriptencoding latin1 +endif + +" Help menu +menutrans &Help &Hjälp +menutrans &Overview &Översikt +menutrans &User\ Manual &Användarmanual +menutrans &How-to\ links &Hur-göra-länkar +menutrans &Find\.\.\. &Sök\.\.\. +menutrans &Credits &Tack +menutrans Co&pying &Kopieringsrättigheter +menutrans &Sponsor/Register &Sponsra/Registrera +menutrans O&rphans &Föräldralösa +menutrans &Version &Version +menutrans &About &Om + +" File menu +menutrans &File &Arkiv +menutrans &Open\.\.\.:e &Öppna\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Öppna\ i\ splitt-vy\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Öppna\ flik\.\.\.:tabnew +menutrans &New:enew &Ny:enew +menutrans &Close:close S&täng:close +menutrans &Save:w &Spara:w +menutrans Save\ &As\.\.\.:sav Spara\ som\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Dela\ diff\ med\.\.\. +menutrans Split\ Patched\ &By\.\.\. Dela\ lappad\ med\.\.\. +menutrans &Print Skriv\ &ut +menutrans Sa&ve-Exit:wqa Spara\ &och\ avsluta:wqa +menutrans E&xit:qa &Avsluta:qa + +" Edit menu +menutrans &Edit &Redigera +menutrans &Undou &Ångrau +menutrans &Redo^R &Gör\ om^R +menutrans Rep&eat\. &Repetera\. +menutrans Cu&t"+x Klipp\ &ut"+x +menutrans &Copy"+y &Kopiera"+y +menutrans &Paste"+gP Klistra &in"+gP +menutrans Put\ &Before[p Sätt\ in\ &före[p +menutrans Put\ &After]p Sätt\ in\ &efter]p +menutrans &Select\ AllggVG &Markera\ alltggVG +menutrans &Find\.\.\. &Sök\.\.\. +menutrans &Find/ &Sök/ +menutrans Find\ and\ Rep&lace\.\.\. Sök\ och\ ersätt\.\.\. +menutrans Find\ and\ Rep&lace:%s Sök\ och\ ersätt:%s +menutrans Find\ and\ Rep&lace Sök\ och\ ersätt +menutrans Find\ and\ Rep&lace:s Sök\ och\ ersätt:s +menutrans Settings\ &Window In&ställningar +menutrans &Global\ Settings Gl&obala\ inställningar +menutrans F&ile\ Settings Fi&linställningar +menutrans C&olor\ Scheme F&ärgschema +menutrans &Keymap &Tangentbordsuppsättning + +" Edit.Global Settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Växla\ mönsterframhävning:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Växla\ ignorering\ av\ storlek:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Växla\ matchningsvisning:set\ sm! +menutrans &Context\ lines Sammanhangsrader +menutrans &Virtual\ Edit Virtuell\ redigering +menutrans Never Aldrig +menutrans Block\ Selection Blockval +menutrans Insert\ mode Infogningsläge +menutrans Block\ and\ Insert Block\ och\ infogning +menutrans Always Alltid +menutrans Toggle\ Insert\ &Mode:set\ im! Växla\ infogningsläge:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Växla\ Vi-kompabilitet:set\ cp! +menutrans Search\ &Path\.\.\. Sökväg\.\.\. +menutrans Ta&g\ Files\.\.\. Taggfiler\.\.\. +menutrans Toggle\ &Toolbar Växla\ verktygsrad +menutrans Toggle\ &Bottom\ Scrollbar Växla\ rullningslista\ i\ botten +menutrans Toggle\ &Left\ Scrollbar Växla\ vänster\ rullningslista +menutrans Toggle\ &Right\ Scrollbar Växla\ höger\ rullningslista +menutrans None Ingen + +" Edit.File Settings +menutrans Toggle\ Line\ &Numbering:set\ nu! Växla\ radnumrering:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Växla\ listläge:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Växla\ radbrytning:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Växla\ radbrytning\ vid\ ord:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Växla\ tab-expandering:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Växla\ auto-indentering:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Växla\ C-indentering:set\ cin! +menutrans &Shiftwidth Shiftbredd +menutrans Soft\ &Tabstop Mjuk\ tab-stopp +menutrans Te&xt\ Width\.\.\. Textbredd\.\.\. +menutrans &File\ Format\.\.\. Filformat\.\.\. + +" Tools menu +menutrans &Tools &Verktyg +menutrans &Jump\ to\ this\ tagg^] &Hoppa\ till\ den\ här\ taggeng^] +menutrans Jump\ &back^T Hoppa\ tillbaka^T +menutrans Build\ &Tags\ File Bygg\ taggfil +menutrans &Make:make &Bygg:make +menutrans &List\ Errors:cl Listfel:cl +menutrans L&ist\ Messages:cl! Listmeddelande:cl! +menutrans &Next\ Error:cn Nästa\ fel:cn +menutrans &Previous\ Error:cp Tidigare\ fel:cp +menutrans &Older\ List:cold &Äldre\ lista:cold +menutrans N&ewer\ List:cnew &Nyare\ lista:cnew +menutrans Error\ &Window Felfönster +menutrans &Update:cwin &Uppdatera:cwin +menutrans &Open:copen &Öppna:copen +menutrans &Close:cclose &Stäng:cclose +menutrans &Convert\ to\ HEX:%!xxd Konvertera\ till\ HEX:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Konvertera\ tillbaka:%!xxd\ -r +menutrans Se&T\ Compiler Sätt\ &kompilerare + +" Tools.Spelling +menutrans &Spelling &Stavning +menutrans &Spell\ Check\ On &Stavningskontroll\ på +menutrans &Spell\ Check\ Off Stavningskontroll\ &av +menutrans To\ &Next\ error]s Till\ &nästa\ fel +menutrans To\ &Previous\ error[s Till\ &föregående\ fel +menutrans Suggest\ &Correctionsz= Föreslå\ &korrigeringar +menutrans &Repeat\ correction:spellrepall &Upprepa\ korrigering + +" Tools.Folding +menutrans &Enable/Disable\ foldszi Växla\ veckzi +menutrans &View\ Cursor\ Linezv Visa\ markörradzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Visa\ bara\ markörradzMzx +menutrans C&lose\ more\ foldszm Stäng\ mer\ veckzm +menutrans &Close\ all\ foldszM Stäng\ alla\ veckzM +menutrans O&pen\ more\ foldszr Öppna\ mer\ veckzr +menutrans &Open\ all\ foldszR Öppna\ mer\ veckzR +menutrans Fold\ Met&hod Veckmetod +menutrans M&anual Manual +menutrans I&ndent Indentering +menutrans E&xpression Uttryck +menutrans S&yntax Syntax +menutrans &Folding Vikning +menutrans &Diff Differans +menutrans Ma&rker Markering +menutrans Create\ &Foldzf Skapa\ veckzf +menutrans &Delete\ Foldzd Ta\ bort\ veckzd +menutrans Delete\ &All\ FoldszD Ta\ bort\ alla\ veckzD +menutrans Fold\ col&umn\ width Veckcolumnsbredd + +" Tools.Diff +menutrans &Update Uppdatera +menutrans &Get\ Block Hämta\ block +menutrans &Put\ Block Lämna\ block + +" Names for buffer menu. +menutrans &Buffers &Buffertar +menutrans &Refresh\ menu Uppdatera\ meny +menutrans &Delete Ta\ bort +menutrans &Alternate Alternativ +menutrans &Next &Nästa +menutrans &Previous &Tidigare + +" Window menu +menutrans &Window &Fönster +menutrans &New^Wn &Nytt^Wn +menutrans S&plit^Ws Dela^Ws +menutrans Sp&lit\ To\ #^W^^ Dela\ till\ #^W^^ +menutrans Split\ &Vertically^Wv Dela\ &vertikalt^Wv +menutrans Split\ File\ E&xplorer Dela\ filhanterare +menutrans &Close^Wc &Stäng^Wc +menutrans Close\ &Other(s)^Wo &Stäng\ alla\ andra^Wo +menutrans Ne&xt^Ww Nästa^Ww +menutrans P&revious^WW &Tidigare^WW +menutrans &Equal\ Size^W= &Samma\ storlek^W= +menutrans &Max\ Height^W_ &Maximal\ storlek^W_ +menutrans M&in\ Height^W1_ M&inimal\ storlek^W1_ +menutrans Max\ &Width^W\| Maximal\ bredd^W\| +menutrans Min\ Widt&h^W1\| Minimal\ bredd^W1\| +menutrans Move\ &To Flytta\ till +menutrans &Top^WK Toppen^WK +menutrans &Bottom^WJ Botten^WJ +menutrans &Left\ side^WH &Vänstra\ sidan^WH +menutrans &Right\ side^WL &Högra\ sidan^WL +menutrans Rotate\ &Up^WR Rotera\ upp^WR +menutrans Rotate\ &Down^Wr Rotera\ ned^Wr +menutrans Select\ Fo&nt\.\.\. Välj\ typsnitt\.\.\. + +" The popup menu +menutrans &Undo &Ångra +menutrans Cu&t Klipp\ ut +menutrans &Copy &Kopiera +menutrans &Paste &Klistra\ in +menutrans &Delete &Ta\ bort +menutrans Select\ Blockwise Markera\ blockvis +menutrans Select\ &Word Markera\ ord +menutrans Select\ &Line Markera\ rad +menutrans Select\ &Block Markera\ block +menutrans Select\ &All Markera\ allt + +" The GUI toolbar (for Win32 or GTK) +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Öppna fil + tmenu ToolBar.Save Spara aktuell fil + tmenu ToolBar.SaveAll Spara alla filer + tmenu ToolBar.Print Skriv ut + tmenu ToolBar.Undo Ångra + tmenu ToolBar.Redo Gör om + tmenu ToolBar.Cut Klipp ut + tmenu ToolBar.Copy Kopiera + tmenu ToolBar.Paste Klistra in + tmenu ToolBar.Find Sök... + tmenu ToolBar.FindNext Sök nästa + tmenu ToolBar.FindPrev Sök tidigare + tmenu ToolBar.Replace Sök och ersätt... + tmenu ToolBar.LoadSesn Ladda session + tmenu ToolBar.SaveSesn Spara session + tmenu ToolBar.RunScript Kör ett Vim-skript + tmenu ToolBar.Make Bygg aktuellt projekt + tmenu ToolBar.Shell Öppna ett kommandoskal + tmenu ToolBar.RunCtags Kör Ctags + tmenu ToolBar.TagJump Hoppa till tagg under markör + tmenu ToolBar.Help Hjälp + tmenu ToolBar.FindHelp Sök i hjälp + endfun +endif + +" Syntax menu +menutrans &Syntax &Syntax +menutrans &Show\ filetypes\ in\ menu &Visa\ filtyper\ i\ meny +menutrans &Off &Av +menutrans &Manual &Manuellt +menutrans A&utomatic Automatiskt +menutrans on/off\ for\ &This\ file Av/På\ för\ aktuell\ fil +menutrans Co&lor\ test Färgtest +menutrans &Highlight\ test Framhävningstest +menutrans &Convert\ to\ HTML Konvertera\ till\ &HTML + +" dialog texts +let menutrans_no_file = "[Ingen fil]" +let menutrans_help_dialog = "Skriv in ett kommando eller ord som du vill söka hjälp på:\n\nBörja med i_ för infogninglägeskommandon (t.ex. i_CTRL-X)\nBörja med c_ för kommandoradredigeringskommandon (t.ex. c_)\nBörja med ' för ett inställningsnamn (t.ex. 'shiftwidth')" +let g:menutrans_path_dialog = "Skriv in sökväg för filer.\nSeparera katalognamn med komma" +let g:menutrans_tags_dialog = "Skriv in namn på taggfiler.\nSeparera namn med komma." +let g:menutrans_textwidth_dialog = "Välj ny textbredd (0 för att förhindra formatering): " +let g:menutrans_fileformat_dialog = "Välj filformat som filen ska sparas med" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_sv_se.utf-8.vim b/share/vim/vim74/lang/menu_sv_se.utf-8.vim similarity index 100% rename from share/vim/vim73/lang/menu_sv_se.utf-8.vim rename to share/vim/vim74/lang/menu_sv_se.utf-8.vim diff --git a/share/vim/vim74/lang/menu_uk_ua.cp1251.vim b/share/vim/vim74/lang/menu_uk_ua.cp1251.vim new file mode 100644 index 00000000..2e751c88 --- /dev/null +++ b/share/vim/vim74/lang/menu_uk_ua.cp1251.vim @@ -0,0 +1,251 @@ +" Menu Translations: Ukrainian +" Maintainer: Bohdan Vlasyuk +" Last Change: 11 Oct 2001 + +" +" Please, see readme at htpp://www.vstu.edu.ua/~bohdan/vim before any +" complains, and even if you won't complain, read it anyway. +" + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding cp1251 + +" Help menu +menutrans &Help &Äîïîìîãà +menutrans &Overview &Çàãàëüíà\ ²íôîðìàö³ÿ +menutrans &User\ Manual &Êåð³âíèöòâî\ äëÿ\ êîðèñòóâà÷à +menutrans &How-to\ links &ßê-Çðîáèòè? +"menutrans &GUI &GIU +menutrans &Credits &Ïîäÿêè +menutrans Co&pying &Ðîçïîâñþäæåííÿ +menutrans O&rphans &Äîïîìîãà\ ñèðîòàì +menutrans &Version &Âåðñ³ÿ +menutrans &About Ïðî\ &ïðîãðàìó + +" File menu +menutrans &File &Ôàéë +menutrans &Open\.\.\.:e &³äêðèòè\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp &Ðîçä³ëèòè\ â³êíî\.\.\.:sp +menutrans &New:enew &Íîâèé:enew +menutrans &Close:close &Çàêðèòè:close +menutrans &Save:w Çà&ïàì'ÿòàòè:w +menutrans Save\ &As\.\.\.:sav Çàïàì'ÿòàòè\ &ÿê\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Ïî&ð³âíÿòè\ ç\.\.\. +menutrans Split\ Patched\ &By\.\.\. Çà&ëàòàòè\.\.\. +menutrans &Print &Äðóêóâàòè +menutrans Sa&ve-Exit:wqa Çàïèñàòè\ ³\ âè&éòè:wqa +menutrans E&xit:qa &Âèõ³ä:qa + +" Edit menu +menutrans &Edit &Ðåäàãóâàòè +menutrans &Undou &³äì³íèòèu +menutrans &Redo^R &Ïîâåðíóòè^R +menutrans Rep&eat\. Ï&îâòîðèòè\. +menutrans Cu&t"+x Âè&ð³çàòè"+x +menutrans &Copy"+y &Êîï³þâàòè"+y +menutrans &Paste"+gP Â&ñòàâèòè"+gP +menutrans Put\ &Before[p Âñòàâèòè\ ïîïå&ðåäó[p +menutrans Put\ &After]p Âñòàâèòè\ ï&³ñëÿ]p +menutrans &Select\ allggVG Âè&áðàòè\ óñåggVG +menutrans &Find\.\.\. &Çíàéòè\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Çà&ì³íèòè\.\.\. +menutrans Settings\ &Window ³êíî\ &íàëàøòóâàíü +menutrans &Global\ Settings Çàãàëüí³\ íà&ëàøòóâàííÿ +menutrans F&ile\ Settings Íàëàøòóâàííÿ\ äëÿ\ &ôàéëó +menutrans Toggle\ Line\ &Numbering:set\ nu! &Íóìåðàö³ÿ\ ðÿäê³â:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Ðåæèì\ íà&äëèøêîâîãî\ â³äîáðàæåííÿ:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Ðåæèì\ &ïåðåíîñó:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Ïåðåíîñèòè\ óñå\ &ñëîâî:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Êîðèñòóâàòèñÿ\ ñèìâîëîì\ &òàáóëÿö³¿:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Àâòîìàòè÷íèé\ &â³äñòóï:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! ³äñòóïè\ äëÿ\ ìîâè\ &C:set\ cin! +menutrans &Shiftwidth &Çñóâ +menutrans Te&xt\ Width\.\.\. &Øèðèíà\ òåêñòó\.\.\. +menutrans &File\ Format\.\.\. &Ôîðìàò\ ôàéëó\.\.\. +menutrans Soft\ &Tabstop Ïîçèö³ÿ\ &òàáóëÿö³¿ +menutrans C&olor\ Scheme &Êîëüîðè +menutrans Select\ Fo&nt\.\.\. Âèáðàòè\ &øðèôò\.\.\. + + +menutrans &Keymap Ðåæèì\ êëàâ³àòóðè +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Âèä³ëÿòè\ &çðàçîê:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! &Ðîçð³çíÿòè\ \âåëèê³\ òà\ ìàë³\ ë³òåðè:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! &Íåãàéíèé\ ïîøóê:set\ sm! +menutrans &Context\ lines ʳëüê³ñòü\ &âàæëèâèõ\ ðÿäê³â +menutrans &Virtual\ Edit Êóðñîð\ &ðóõàºòüñÿ\ áåç\ ìåæ + +menutrans Never ͳêîëè +menutrans Block\ Selection Âèá³ð\ Áëîêó +menutrans Insert\ mode Ðåæèì\ âñòàâêè +menutrans Block\ and\ Insert Âèá³ð\ ³\ âñòàâêà +menutrans Always Çàâæäè + +menutrans Toggle\ Insert\ &Mode:set\ im! Ðåæèì\ &âñòàâêè:set\ im! +menutrans Search\ &Path\.\.\. &Øëÿõ\ ïîøóêó\.\.\. +menutrans Ta&g\ Files\.\.\. Ôàéëè\ &ïîì³òîê\.\.\. + + +" +" GUI options +menutrans Toggle\ &Toolbar Ïàíåëü\ &³íñòðóìåíò³â +menutrans Toggle\ &Bottom\ Scrollbar &Íèæíÿ\ ë³í³éêà\ çñóâó +menutrans Toggle\ &Left\ Scrollbar &˳âà\ ë³í³éêà\ çñóâó +menutrans Toggle\ &Right\ Scrollbar &Ïðàâà\ ë³í³éêà\ çñóâó + +" Programming menu +menutrans &Tools &²íñòðóìåíòè +menutrans &Jump\ to\ this\ tagg^] &Ïåðåéòè\ äî\ ïîì³òêèg^] +menutrans Jump\ &back^T Ïî&âåðíóòèñÿ^T +menutrans Build\ &Tags\ File &Ñòâîðèòè\ ôàéë\ ïîì³òîê +" Folding +menutrans &Folding &Çãîðòêè +menutrans &Enable/Disable\ foldszi &Äîçâîëèòè/çàáîðîíèòè\ çãîðòêèzi +menutrans &View\ Cursor\ Linezv &Áà÷èòè\ ðÿäîê\ ç\ êóðñîðîìzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Áà÷èòè\ &ëèøå\ ðÿäîê\ ç\ êóðñîðîìzMzx +menutrans C&lose\ more\ foldszm Çàêðèòè\ &á³ëüøå\ çãîðòê³âzm +menutrans &Close\ all\ foldszM Çàêðèòè\ &óñ³\ çãîðòêèzM +menutrans &Open\ all\ foldszR ³äêðèòè\ ó&ñ³\ çãîðòêèzR +menutrans O&pen\ more\ foldszr ³äêðèòè\ á&³ëüøå\ çãîðòê³âzr + +menutrans Create\ &Foldzf Ñ&òâîðèòè\ çãîðòîêzf +menutrans &Delete\ Foldzd &Âèäàëèòè\ çãîðòîêzd +menutrans Delete\ &All\ FoldszD Âèäàëèò&è\ óñ³\ çãîðòêèzD +menutrans Fold\ column\ &width &Òîâùèíà\ ðÿäêà\ çãîðòê³â +menutrans Fold\ Met&hod &Ìåòîä\ çãîðòàííÿ +menutrans M&anual &Ðó÷íèé +menutrans I&ndent &³äñòóï +menutrans E&xpression Â&èðàç +menutrans S&yntax &Ñèíòàêñè÷íî +menutrans Ma&rker Ïî&çíà÷êè + +" Diff +menutrans &Diff Ïî&ð³âíÿííÿ +menutrans &Update &Ïîíîâèòè +menutrans &Get\ Block &Çàïîçè÷èòè\ ð³çíèöþ +menutrans &Put\ Block &Âïðîâàäèòè\ ð³çíèöþ + +" Make and stuff... +menutrans &Make:make &Áóäóâàòè(make):make +menutrans &List\ Errors:cl &Ñïèñîê\ ïîìèëîê:cl +menutrans L&ist\ Messages:cl! Ñï&èñîê\ ïîâ³äîìëåíü:cl! +menutrans &Next\ Error:cn &Íàñòóïíà\ ïîìèëêà:cn +menutrans &Previous\ Error:cp &Ïîïåðåäíÿ\ ïîìèëêà:cp +menutrans &Older\ List:cold &Áóâø³\ ïîìèëêè:cold +menutrans N&ewer\ List:cnew &Ìàéáóòí³\ ïîìèëêè:cnew +menutrans Error\ &Window &³êíî\ ïîìèëîê +menutrans &Update:cwin &Ïîíîâèòè:cwin +menutrans &Close:cclose &Çàêðèòè:cclose +menutrans &Open:copen &³äêðèòè:copen + +menutrans &Set\ Compiler Âñòàíîâèòè\ &êîìï³ëÿòîð +menutrans &Convert\ to\ HEX:%!xxd Ïåðåâåñòè\ â\ ø³ñòíàäöÿòêîâ³\ êîäè:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Ïîâåðíóòè\ â\ äâ³éêîâó\ ôîðìó:%!xxd\ -r + +" Names for buffer menu. +menutrans &Buffers &Áóôåðè +menutrans &Refresh\ menu &Ïîíîâèòè +menutrans Delete &Âèäàëèòè +menutrans &Alternate &Âòîðèííèé +menutrans &Next &Ñë³äóþ÷èé +menutrans &Previous &Ïîïåðåäí³é +menutrans [No\ File] [Íåìàº\ Ôàéëà] + +" Window menu +menutrans &Window &³êíî +menutrans &New^Wn &Íîâå^Wn +menutrans S&plit^Ws &Ðîçä³ëèòè^Ws +menutrans Sp&lit\ To\ #^W^^ Ðîçä³ëèòè\ äëÿ\ &âòîðèííîãî\ ôàéëó^W^^ +menutrans Split\ &Vertically^Wv Ðîçä³ëèòè\ &ïîïåðåê^Wv +"menutrans Split\ &Vertically^Wv &Ðîçä³ëèòè\ ïîïåðåê^Wv +menutrans Split\ File\ E&xplorer Ðîçä³ëèòè\ äëÿ\ &ïåðåãëÿäó\ ôàéë³â + +menutrans &Close^Wc &Çàêðèòè^Wc +menutrans Close\ &Other(s)^Wo Çàêðèòè\ óñ³\ &³íø³^Wo +menutrans Ne&xt^Ww &Íàñòóïíå^Ww +menutrans P&revious^WW &Ïîïåðåäíº^WW +menutrans &Equal\ Size^W= &Âèð³âíÿòè\ ðîçì³ð^W= +menutrans &Max\ Height^W_ Íàé&á³ëüøà\ âèñîòà^W_ +menutrans M&in\ Height^W1_ Íàé&ìåíøà\ âèñîòà^W1_ +menutrans Max\ &Width^W\| Íàéá³&ëüøà\ øèðèíà^W\| +menutrans Min\ Widt&h^W1\| Íàéìåí&øà\ øèðèíà^W1\| +menutrans Move\ &To &Çì³ñòèòè +menutrans &Top^WK Äî&ãîðè^WK +menutrans &Bottom^WJ Äî&íèçó^WJ +menutrans &Left\ side^WH Ó&ë³âî^WH +menutrans &Right\ side^WL Â&ïðàâî^WL +menutrans Rotate\ &Up^WR &Öèêë³÷íî\ äîãîðè^WR +menutrans Rotate\ &Down^Wr Ö&èêë³÷íî\ óíèç^Wr + +" The popup menu +menutrans &Undo &³äì³íèòè +menutrans Cu&t Âè&ð³çàòè +menutrans &Copy &Êîï³þâàòè +menutrans &Paste Â&ñòàâèòè +menutrans &Delete Âè&äàëèòè +menutrans Select\ &Word Âèáðàòè\ &ñëîâî +menutrans Select\ &Line Âèáðàòè\ &ðÿäîê +menutrans Select\ &Block Âèáðàòè\ &áëîê +menutrans Select\ &All Âèáðàòè\ &óñå + + + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open ³äêðèòè ôàéë + tmenu ToolBar.Save Çàïàì'ÿòàòè ôàéë + tmenu ToolBar.SaveAll Çàïàì'ÿòàòè óñ³ ôàéëè + tmenu ToolBar.Print Äðóêóâàòè + tmenu ToolBar.Undo ³äì³íèòè + tmenu ToolBar.Redo Ïîâåðíóòè + tmenu ToolBar.Cut Âèð³çàòè + tmenu ToolBar.Copy Êîï³þâàòè + tmenu ToolBar.Paste Âñòàâèòè + tmenu ToolBar.Find Çíàéòè... + tmenu ToolBar.FindNext Çíàéòè íàñòóïíèé + tmenu ToolBar.FindPrev Çíàéòè ïîïåðåäí³é + tmenu ToolBar.Replace Çàì³íèòè... + tmenu ToolBar.LoadSesn Çàâàíòàæèòè ñåàíñ ðåäàãóâàííÿ + tmenu ToolBar.SaveSesn Çàïàì'ÿòàòè ñåàíñ ðåäàãóâàííÿ + tmenu ToolBar.RunScript Âèêîíàòè ôàéë êîìàíä + tmenu ToolBar.Make Çáóäóâàòè ïðîåêò + tmenu ToolBar.Shell Shell + tmenu ToolBar.RunCtags Ñòâîðèòè ôàéë ïîì³òîê + tmenu ToolBar.TagJump Ïåðåéòè äî ïîì³òêè + tmenu ToolBar.Help Äîïîìîãà + tmenu ToolBar.FindHelp Ïîøóê ó äîïîìîç³ + endfun +endif + +" Syntax menu +menutrans &Syntax &Ñèíòàêñèñ +menutrans Set\ '&syntax'\ only Âñòàíîâëþâàòè\ ëèøå\ '&syntax' +menutrans Set\ '&filetype'\ too Âñòàíîâëþâàòè\ '&filetype'\ òàêîæ +menutrans &Off &Âèìêíåíî +menutrans &Manual &Ðó÷íèé +menutrans A&utomatic &Àâòîìàòè÷íî +menutrans on/off\ for\ &This\ file Ïåðåìêíóòè\ äëÿ\ öüîãî\ &ôàéëà +menutrans Co&lor\ test Ïåðåâ³ðêà\ &êîëüîð³â +menutrans &Highlight\ test &Ïåðåâ³ðêà\ âèä³ëåííÿ +menutrans &Convert\ to\ HTML Ñòâîðèòè\ &HTML + +" dialog texts +let menutrans_no_file = "[Íåìàº\ Ôàéëà]" +let menutrans_help_dialog = "Âêàæ³òü êîìàíäó àáî ñëîâî äëÿ ïîøóêó:\n\nÄîäàéòå i_ äëÿ êîìàíä ðåæèìó âñòàâêè (íàïð. i_CTRL-X)\nÄîäàéòå i_ äëÿ êîìàíäíîãî ðåæèìó (íàïð. ñ_)\nÄîäàéòå ' äëÿ ïîçíà÷åííÿ íàçâè îïö³¿ (íàïð. 'shiftwidth')" +let g:menutrans_path_dialog = "Âêàæ³òü øëÿõ ïîøóêó ôàéë³â\nÐîçä³ëÿéòå íàçâè äèðåêòîð³é êîìàìè." +let g:menutrans_tags_dialog = "Âêàæ³òü íàçâè ôàéë³â ïîì³òîê\nÐîçä³ëÿéòå íàçâè êîìàìè." +let g:menutrans_textwidth_dialog = "Âêàæ³òü íîâó øèðèíó òåêñòó (0 äëÿ â³äì³íè ôîìàòóâàííÿ)" +let g:menutrans_fileformat_dialog = "Âèáåð³òü ôîðìàò ôàéëó" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_uk_ua.koi8-u.vim b/share/vim/vim74/lang/menu_uk_ua.koi8-u.vim new file mode 100644 index 00000000..c44700ef --- /dev/null +++ b/share/vim/vim74/lang/menu_uk_ua.koi8-u.vim @@ -0,0 +1,251 @@ +" Menu Translations: Ukrainian +" Maintainer: Bohdan Vlasyuk +" Last Change: 11 Oct 2001 + +" +" Please, see readme at htpp://www.vstu.edu.ua/~bohdan/vim before any +" complains, and even if you won't complain, read it anyway. +" + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding koi8-u + +" Help menu +menutrans &Help &äÏÐÏÍÏÇÁ +menutrans &Overview &úÁÇÁÌØÎÁ\ ¶ÎÆÏÒÍÁÃ¦Ñ +menutrans &User\ Manual &ëÅÒ¦×ÎÉÃÔ×Ï\ ÄÌÑ\ ËÏÒÉÓÔÕ×ÁÞÁ +menutrans &How-to\ links &ñË-úÒÏÂÉÔÉ? +"menutrans &GUI &GIU +menutrans &Credits &ðÏÄÑËÉ +menutrans Co&pying &òÏÚÐÏ×ÓÀÄÖÅÎÎÑ +menutrans O&rphans &äÏÐÏÍÏÇÁ\ ÓÉÒÏÔÁÍ +menutrans &Version &÷ÅÒÓ¦Ñ +menutrans &About ðÒÏ\ &ÐÒÏÇÒÁÍÕ + +" File menu +menutrans &File &æÁÊÌ +menutrans &Open\.\.\.:e &÷¦ÄËÒÉÔÉ\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp &òÏÚĦÌÉÔÉ\ צËÎÏ\.\.\.:sp +menutrans &New:enew &îÏ×ÉÊ:enew +menutrans &Close:close &úÁËÒÉÔÉ:close +menutrans &Save:w úÁ&ÐÁÍ'ÑÔÁÔÉ:w +menutrans Save\ &As\.\.\.:sav úÁÐÁÍ'ÑÔÁÔÉ\ &ÑË\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. ðÏ&Ò¦×ÎÑÔÉ\ Ú\.\.\. +menutrans Split\ Patched\ &By\.\.\. úÁ&ÌÁÔÁÔÉ\.\.\. +menutrans &Print &äÒÕËÕ×ÁÔÉ +menutrans Sa&ve-Exit:wqa úÁÐÉÓÁÔÉ\ ¦\ ×É&ÊÔÉ:wqa +menutrans E&xit:qa &÷ÉȦÄ:qa + +" Edit menu +menutrans &Edit &òÅÄÁÇÕ×ÁÔÉ +menutrans &Undou &÷¦ÄͦÎÉÔÉu +menutrans &Redo^R &ðÏ×ÅÒÎÕÔÉ^R +menutrans Rep&eat\. ð&Ï×ÔÏÒÉÔÉ\. +menutrans Cu&t"+x ÷É&Ò¦ÚÁÔÉ"+x +menutrans &Copy"+y &ëÏЦÀ×ÁÔÉ"+y +menutrans &Paste"+gP ÷&ÓÔÁ×ÉÔÉ"+gP +menutrans Put\ &Before[p ÷ÓÔÁ×ÉÔÉ\ ÐÏÐÅ&ÒÅÄÕ[p +menutrans Put\ &After]p ÷ÓÔÁ×ÉÔÉ\ Ð&¦ÓÌÑ]p +menutrans &Select\ allggVG ÷É&ÂÒÁÔÉ\ ÕÓÅggVG +menutrans &Find\.\.\. &úÎÁÊÔÉ\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. úÁ&ͦÎÉÔÉ\.\.\. +menutrans Settings\ &Window ÷¦ËÎÏ\ &ÎÁÌÁÛÔÕ×ÁÎØ +menutrans &Global\ Settings úÁÇÁÌØΦ\ ÎÁ&ÌÁÛÔÕ×ÁÎÎÑ +menutrans F&ile\ Settings îÁÌÁÛÔÕ×ÁÎÎÑ\ ÄÌÑ\ &ÆÁÊÌÕ +menutrans Toggle\ Line\ &Numbering:set\ nu! &îÕÍÅÒÁæÑ\ ÒÑÄ˦×:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! òÅÖÉÍ\ ÎÁ&ÄÌÉÛËÏ×ÏÇÏ\ צÄÏÂÒÁÖÅÎÎÑ:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! òÅÖÉÍ\ &ÐÅÒÅÎÏÓÕ:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! ðÅÒÅÎÏÓÉÔÉ\ ÕÓÅ\ &ÓÌÏ×Ï:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! ëÏÒÉÓÔÕ×ÁÔÉÓÑ\ ÓÉÍ×ÏÌÏÍ\ &ÔÁÂÕÌÑæ§:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! á×ÔÏÍÁÔÉÞÎÉÊ\ &צÄÓÔÕÐ:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! ÷¦ÄÓÔÕÐÉ\ ÄÌÑ\ ÍÏ×É\ &C:set\ cin! +menutrans &Shiftwidth &úÓÕ× +menutrans Te&xt\ Width\.\.\. &ûÉÒÉÎÁ\ ÔÅËÓÔÕ\.\.\. +menutrans &File\ Format\.\.\. &æÏÒÍÁÔ\ ÆÁÊÌÕ\.\.\. +menutrans Soft\ &Tabstop ðÏÚÉæÑ\ &ÔÁÂÕÌÑæ§ +menutrans C&olor\ Scheme &ëÏÌØÏÒÉ +menutrans Select\ Fo&nt\.\.\. ÷ÉÂÒÁÔÉ\ &ÛÒÉÆÔ\.\.\. + + +menutrans &Keymap òÅÖÉÍ\ ËÌÁצÁÔÕÒÉ +menutrans Toggle\ Pattern\ &Highlight:set\ hls! ÷ÉĦÌÑÔÉ\ &ÚÒÁÚÏË:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! &òÏÚÒ¦ÚÎÑÔÉ\ \×ÅÌÉ˦\ ÔÁ\ ÍÁ̦\ ̦ÔÅÒÉ:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! &îÅÇÁÊÎÉÊ\ ÐÏÛÕË:set\ sm! +menutrans &Context\ lines ë¦ÌØ˦ÓÔØ\ &×ÁÖÌÉ×ÉÈ\ ÒÑÄË¦× +menutrans &Virtual\ Edit ëÕÒÓÏÒ\ &ÒÕÈÁ¤ÔØÓÑ\ ÂÅÚ\ ÍÅÖ + +menutrans Never î¦ËÏÌÉ +menutrans Block\ Selection ÷ɦÒ\ âÌÏËÕ +menutrans Insert\ mode òÅÖÉÍ\ ×ÓÔÁ×ËÉ +menutrans Block\ and\ Insert ÷ɦÒ\ ¦\ ×ÓÔÁ×ËÁ +menutrans Always úÁ×ÖÄÉ + +menutrans Toggle\ Insert\ &Mode:set\ im! òÅÖÉÍ\ &×ÓÔÁ×ËÉ:set\ im! +menutrans Search\ &Path\.\.\. &ûÌÑÈ\ ÐÏÛÕËÕ\.\.\. +menutrans Ta&g\ Files\.\.\. æÁÊÌÉ\ &ÐÏͦÔÏË\.\.\. + + +" +" GUI options +menutrans Toggle\ &Toolbar ðÁÎÅÌØ\ &¦ÎÓÔÒÕÍÅÎÔ¦× +menutrans Toggle\ &Bottom\ Scrollbar &îÉÖÎÑ\ ̦ΦÊËÁ\ ÚÓÕ×Õ +menutrans Toggle\ &Left\ Scrollbar &ì¦×Á\ ̦ΦÊËÁ\ ÚÓÕ×Õ +menutrans Toggle\ &Right\ Scrollbar &ðÒÁ×Á\ ̦ΦÊËÁ\ ÚÓÕ×Õ + +" Programming menu +menutrans &Tools &¶ÎÓÔÒÕÍÅÎÔÉ +menutrans &Jump\ to\ this\ tagg^] &ðÅÒÅÊÔÉ\ ÄÏ\ ÐÏͦÔËÉg^] +menutrans Jump\ &back^T ðÏ&×ÅÒÎÕÔÉÓÑ^T +menutrans Build\ &Tags\ File &óÔ×ÏÒÉÔÉ\ ÆÁÊÌ\ ÐÏͦÔÏË +" Folding +menutrans &Folding &úÇÏÒÔËÉ +menutrans &Enable/Disable\ foldszi &äÏÚ×ÏÌÉÔÉ/ÚÁÂÏÒÏÎÉÔÉ\ ÚÇÏÒÔËÉzi +menutrans &View\ Cursor\ Linezv &âÁÞÉÔÉ\ ÒÑÄÏË\ Ú\ ËÕÒÓÏÒÏÍzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx âÁÞÉÔÉ\ &ÌÉÛÅ\ ÒÑÄÏË\ Ú\ ËÕÒÓÏÒÏÍzMzx +menutrans C&lose\ more\ foldszm úÁËÒÉÔÉ\ &¦ÌØÛÅ\ ÚÇÏÒÔ˦×zm +menutrans &Close\ all\ foldszM úÁËÒÉÔÉ\ &ÕÓ¦\ ÚÇÏÒÔËÉzM +menutrans &Open\ all\ foldszR ÷¦ÄËÒÉÔÉ\ Õ&Ó¦\ ÚÇÏÒÔËÉzR +menutrans O&pen\ more\ foldszr ÷¦ÄËÒÉÔÉ\ Â&¦ÌØÛÅ\ ÚÇÏÒÔ˦×zr + +menutrans Create\ &Foldzf ó&Ô×ÏÒÉÔÉ\ ÚÇÏÒÔÏËzf +menutrans &Delete\ Foldzd &÷ÉÄÁÌÉÔÉ\ ÚÇÏÒÔÏËzd +menutrans Delete\ &All\ FoldszD ÷ÉÄÁÌÉÔ&É\ ÕÓ¦\ ÚÇÏÒÔËÉzD +menutrans Fold\ column\ &width &ôÏ×ÝÉÎÁ\ ÒÑÄËÁ\ ÚÇÏÒÔË¦× +menutrans Fold\ Met&hod &íÅÔÏÄ\ ÚÇÏÒÔÁÎÎÑ +menutrans M&anual &òÕÞÎÉÊ +menutrans I&ndent &÷¦ÄÓÔÕÐ +menutrans E&xpression ÷&ÉÒÁÚ +menutrans S&yntax &óÉÎÔÁËÓÉÞÎÏ +menutrans Ma&rker ðÏ&ÚÎÁÞËÉ + +" Diff +menutrans &Diff ðÏ&Ò¦×ÎÑÎÎÑ +menutrans &Update &ðÏÎÏ×ÉÔÉ +menutrans &Get\ Block &úÁÐÏÚÉÞÉÔÉ\ Ò¦ÚÎÉÃÀ +menutrans &Put\ Block &÷ÐÒÏ×ÁÄÉÔÉ\ Ò¦ÚÎÉÃÀ + +" Make and stuff... +menutrans &Make:make &âÕÄÕ×ÁÔÉ(make):make +menutrans &List\ Errors:cl &óÐÉÓÏË\ ÐÏÍÉÌÏË:cl +menutrans L&ist\ Messages:cl! óÐ&ÉÓÏË\ ÐÏצÄÏÍÌÅÎØ:cl! +menutrans &Next\ Error:cn &îÁÓÔÕÐÎÁ\ ÐÏÍÉÌËÁ:cn +menutrans &Previous\ Error:cp &ðÏÐÅÒÅÄÎÑ\ ÐÏÍÉÌËÁ:cp +menutrans &Older\ List:cold &âÕ×Û¦\ ÐÏÍÉÌËÉ:cold +menutrans N&ewer\ List:cnew &íÁÊÂÕÔΦ\ ÐÏÍÉÌËÉ:cnew +menutrans Error\ &Window &÷¦ËÎÏ\ ÐÏÍÉÌÏË +menutrans &Update:cwin &ðÏÎÏ×ÉÔÉ:cwin +menutrans &Close:cclose &úÁËÒÉÔÉ:cclose +menutrans &Open:copen &÷¦ÄËÒÉÔÉ:copen + +menutrans &Set\ Compiler ÷ÓÔÁÎÏ×ÉÔÉ\ &ËÏÍЦÌÑÔÏÒ +menutrans &Convert\ to\ HEX:%!xxd ðÅÒÅ×ÅÓÔÉ\ ×\ Û¦ÓÔÎÁÄÃÑÔËÏצ\ ËÏÄÉ:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r ðÏ×ÅÒÎÕÔÉ\ ×\ ÄצÊËÏ×Õ\ ÆÏÒÍÕ:%!xxd\ -r + +" Names for buffer menu. +menutrans &Buffers &âÕÆÅÒÉ +menutrans &Refresh\ menu &ðÏÎÏ×ÉÔÉ +menutrans Delete &÷ÉÄÁÌÉÔÉ +menutrans &Alternate &÷ÔÏÒÉÎÎÉÊ +menutrans &Next &ó̦ÄÕÀÞÉÊ +menutrans &Previous &ðÏÐÅÒÅÄÎ¦Ê +menutrans [No\ File] [îÅÍÁ¤\ æÁÊÌÁ] + +" Window menu +menutrans &Window &÷¦ËÎÏ +menutrans &New^Wn &îÏ×Å^Wn +menutrans S&plit^Ws &òÏÚĦÌÉÔÉ^Ws +menutrans Sp&lit\ To\ #^W^^ òÏÚĦÌÉÔÉ\ ÄÌÑ\ &×ÔÏÒÉÎÎÏÇÏ\ ÆÁÊÌÕ^W^^ +menutrans Split\ &Vertically^Wv òÏÚĦÌÉÔÉ\ &ÐÏÐÅÒÅË^Wv +"menutrans Split\ &Vertically^Wv &òÏÚĦÌÉÔÉ\ ÐÏÐÅÒÅË^Wv +menutrans Split\ File\ E&xplorer òÏÚĦÌÉÔÉ\ ÄÌÑ\ &ÐÅÒÅÇÌÑÄÕ\ ÆÁÊÌ¦× + +menutrans &Close^Wc &úÁËÒÉÔÉ^Wc +menutrans Close\ &Other(s)^Wo úÁËÒÉÔÉ\ ÕÓ¦\ &¦ÎÛ¦^Wo +menutrans Ne&xt^Ww &îÁÓÔÕÐÎÅ^Ww +menutrans P&revious^WW &ðÏÐÅÒÅÄΤ^WW +menutrans &Equal\ Size^W= &÷ÉÒ¦×ÎÑÔÉ\ ÒÏÚͦÒ^W= +menutrans &Max\ Height^W_ îÁÊ&¦ÌØÛÁ\ ×ÉÓÏÔÁ^W_ +menutrans M&in\ Height^W1_ îÁÊ&ÍÅÎÛÁ\ ×ÉÓÏÔÁ^W1_ +menutrans Max\ &Width^W\| îÁʦ&ÌØÛÁ\ ÛÉÒÉÎÁ^W\| +menutrans Min\ Widt&h^W1\| îÁÊÍÅÎ&ÛÁ\ ÛÉÒÉÎÁ^W1\| +menutrans Move\ &To &úͦÓÔÉÔÉ +menutrans &Top^WK äÏ&ÇÏÒÉ^WK +menutrans &Bottom^WJ äÏ&ÎÉÚÕ^WJ +menutrans &Left\ side^WH õ&̦×Ï^WH +menutrans &Right\ side^WL ÷&ÐÒÁ×Ï^WL +menutrans Rotate\ &Up^WR &ãÉË̦ÞÎÏ\ ÄÏÇÏÒÉ^WR +menutrans Rotate\ &Down^Wr ã&ÉË̦ÞÎÏ\ ÕÎÉÚ^Wr + +" The popup menu +menutrans &Undo &÷¦ÄͦÎÉÔÉ +menutrans Cu&t ÷É&Ò¦ÚÁÔÉ +menutrans &Copy &ëÏЦÀ×ÁÔÉ +menutrans &Paste ÷&ÓÔÁ×ÉÔÉ +menutrans &Delete ÷É&ÄÁÌÉÔÉ +menutrans Select\ &Word ÷ÉÂÒÁÔÉ\ &ÓÌÏ×Ï +menutrans Select\ &Line ÷ÉÂÒÁÔÉ\ &ÒÑÄÏË +menutrans Select\ &Block ÷ÉÂÒÁÔÉ\ &ÂÌÏË +menutrans Select\ &All ÷ÉÂÒÁÔÉ\ &ÕÓÅ + + + +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open ÷¦ÄËÒÉÔÉ ÆÁÊÌ + tmenu ToolBar.Save úÁÐÁÍ'ÑÔÁÔÉ ÆÁÊÌ + tmenu ToolBar.SaveAll úÁÐÁÍ'ÑÔÁÔÉ ÕÓ¦ ÆÁÊÌÉ + tmenu ToolBar.Print äÒÕËÕ×ÁÔÉ + tmenu ToolBar.Undo ÷¦ÄͦÎÉÔÉ + tmenu ToolBar.Redo ðÏ×ÅÒÎÕÔÉ + tmenu ToolBar.Cut ÷ÉÒ¦ÚÁÔÉ + tmenu ToolBar.Copy ëÏЦÀ×ÁÔÉ + tmenu ToolBar.Paste ÷ÓÔÁ×ÉÔÉ + tmenu ToolBar.Find úÎÁÊÔÉ... + tmenu ToolBar.FindNext úÎÁÊÔÉ ÎÁÓÔÕÐÎÉÊ + tmenu ToolBar.FindPrev úÎÁÊÔÉ ÐÏÐÅÒÅÄÎ¦Ê + tmenu ToolBar.Replace úÁͦÎÉÔÉ... + tmenu ToolBar.LoadSesn úÁ×ÁÎÔÁÖÉÔÉ ÓÅÁÎÓ ÒÅÄÁÇÕ×ÁÎÎÑ + tmenu ToolBar.SaveSesn úÁÐÁÍ'ÑÔÁÔÉ ÓÅÁÎÓ ÒÅÄÁÇÕ×ÁÎÎÑ + tmenu ToolBar.RunScript ÷ÉËÏÎÁÔÉ ÆÁÊÌ ËÏÍÁÎÄ + tmenu ToolBar.Make úÂÕÄÕ×ÁÔÉ ÐÒÏÅËÔ + tmenu ToolBar.Shell Shell + tmenu ToolBar.RunCtags óÔ×ÏÒÉÔÉ ÆÁÊÌ ÐÏͦÔÏË + tmenu ToolBar.TagJump ðÅÒÅÊÔÉ ÄÏ ÐÏͦÔËÉ + tmenu ToolBar.Help äÏÐÏÍÏÇÁ + tmenu ToolBar.FindHelp ðÏÛÕË Õ ÄÏÐÏÍÏÚ¦ + endfun +endif + +" Syntax menu +menutrans &Syntax &óÉÎÔÁËÓÉÓ +menutrans Set\ '&syntax'\ only ÷ÓÔÁÎÏ×ÌÀ×ÁÔÉ\ ÌÉÛÅ\ '&syntax' +menutrans Set\ '&filetype'\ too ÷ÓÔÁÎÏ×ÌÀ×ÁÔÉ\ '&filetype'\ ÔÁËÏÖ +menutrans &Off &÷ÉÍËÎÅÎÏ +menutrans &Manual &òÕÞÎÉÊ +menutrans A&utomatic &á×ÔÏÍÁÔÉÞÎÏ +menutrans on/off\ for\ &This\ file ðÅÒÅÍËÎÕÔÉ\ ÄÌÑ\ ÃØÏÇÏ\ &ÆÁÊÌÁ +menutrans Co&lor\ test ðÅÒÅצÒËÁ\ &ËÏÌØÏÒ¦× +menutrans &Highlight\ test &ðÅÒÅצÒËÁ\ ×ÉĦÌÅÎÎÑ +menutrans &Convert\ to\ HTML óÔ×ÏÒÉÔÉ\ &HTML + +" dialog texts +let menutrans_no_file = "[îÅÍÁ¤\ æÁÊÌÁ]" +let menutrans_help_dialog = "÷ËÁÖ¦ÔØ ËÏÍÁÎÄÕ ÁÂÏ ÓÌÏ×Ï ÄÌÑ ÐÏÛÕËÕ:\n\näÏÄÁÊÔÅ i_ ÄÌÑ ËÏÍÁÎÄ ÒÅÖÉÍÕ ×ÓÔÁ×ËÉ (ÎÁÐÒ. i_CTRL-X)\näÏÄÁÊÔÅ i_ ÄÌÑ ËÏÍÁÎÄÎÏÇÏ ÒÅÖÉÍÕ (ÎÁÐÒ. Ó_)\näÏÄÁÊÔÅ ' ÄÌÑ ÐÏÚÎÁÞÅÎÎÑ ÎÁÚ×É ÏÐæ§ (ÎÁÐÒ. 'shiftwidth')" +let g:menutrans_path_dialog = "÷ËÁÖ¦ÔØ ÛÌÑÈ ÐÏÛÕËÕ ÆÁÊ̦×\nòÏÚĦÌÑÊÔÅ ÎÁÚ×É ÄÉÒÅËÔÏÒ¦Ê ËÏÍÁÍÉ." +let g:menutrans_tags_dialog = "÷ËÁÖ¦ÔØ ÎÁÚ×É ÆÁÊÌ¦× ÐÏͦÔÏË\nòÏÚĦÌÑÊÔÅ ÎÁÚ×É ËÏÍÁÍÉ." +let g:menutrans_textwidth_dialog = "÷ËÁÖ¦ÔØ ÎÏ×Õ ÛÉÒÉÎÕ ÔÅËÓÔÕ (0 ÄÌÑ ×¦ÄͦÎÉ ÆÏÍÁÔÕ×ÁÎÎÑ)" +let g:menutrans_fileformat_dialog = "÷ÉÂÅÒ¦ÔØ ÆÏÒÍÁÔ ÆÁÊÌÕ" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim74/lang/menu_vi_vn.vim b/share/vim/vim74/lang/menu_vi_vn.vim new file mode 100644 index 00000000..9fbd2c6d --- /dev/null +++ b/share/vim/vim74/lang/menu_vi_vn.vim @@ -0,0 +1,334 @@ +" Menu Translations: Vietnamese +" Maintainer: Phan Vinh Thinh +" Last Change: 12 Mar 2005 +" URL: http://iatp.vspu.ac.ru/phan/vietvim/lang/menu_vi_vn.vim +" +" +" Adopted for VietVim project by Phan Vinh Thinh. +" First translation: Phan Vinh Thinh +" +" +" Quit when menu translations have already been done. +" +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +" Top +menutrans &File &Tập\ tin +menutrans &Edit &Soạn\ thảo +menutrans &Tools Cô&ng\ cụ +menutrans &Syntax &Cú\ pháp +menutrans &Buffers &Bộ\ đệm +menutrans &Window Cử&a\ sổ +menutrans &Help Trợ\ &giúp +" +" +" +" Help menu +menutrans &Overview &Tổng\ quan +menutrans &User\ Manual &Hướng\ dẫn\ sử\ dụng +menutrans &How-to\ links &Làm\ như\ thế\ nào +menutrans &Find\.\.\. Tìm\ &kiếm\.\.\. +"-------------------- +menutrans &Credits Lời\ &cảm\ ơn +menutrans Co&pying &Bản\ quyền +menutrans &Sponsor/Register &Giúp\ đỡ/Đăng\ ký +menutrans O&rphans Trẻ\ &mồ\ côi +"-------------------- +menutrans &Version &Phiên\ bản +menutrans &About &Về\ Vim +" +" +" File menu +menutrans &Open\.\.\.:e &Mở\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp &Chia-Mở\.\.\.:sp +menutrans &New:enew Mớ&i:enew +menutrans &Close:close Đó&ng:close +"-------------------- +menutrans &Save:w &Ghi\ nhớ:w +menutrans Save\ &As\.\.\.:sav Ghi\ n&hư\.\.\.:sav +"-------------------- +menutrans Split\ &Diff\ with\.\.\. &So\ sánh\ với\.\.\. +menutrans Split\ Patched\ &By\.\.\. So\ sánh\ đã\ vá\ lỗi\ &bởi\.\.\. +"-------------------- +menutrans &Print In\ &ra +menutrans Sa&ve-Exit:wqa Ghi\ nhớ\ rồi\ th&oát :wqa +menutrans E&xit:qa &Thoát:qa +" +" +" Edit menu +menutrans &Undou &Hủy\ bướcu +menutrans &Redo^R &Làm\ lại^R +menutrans Rep&eat\. Lặ&p\ lại\. +"-------------------- +menutrans Cu&t"+x &Cắt"+x +menutrans &Copy"+y &Sao\ chép"+y +menutrans &Paste"+gP &Dán"+gP +menutrans Put\ &Before[p Dán\ trướ&c[p +menutrans Put\ &After]p Dán\ sa&u]p +menutrans &Deletex &Xóax +menutrans &Select\ AllggVG Chọ&n\ tất\ cảggVG +"-------------------- +menutrans &Find\.\.\./ &Tìm\ kiếm\.\.\./ +menutrans Find\ and\ Rep&lace\.\.\. Tìm\ kiếm\ &và\ thay\ thế\.\.\. +menutrans Find\ and\ Rep&lace\.\.\.:%s Tìm\ kiếm\ &và\ thay\ thế\.\.\.:%s +menutrans Find\ and\ Rep&lace\.\.\.:s Tìm\ kiếm\ &và\ thay\ thế\.\.\:s +"-------------------- +menutrans Settings\ &Window Cửa\ &sổ\ thiết\ lập +menutrans &Global\ Settings Thiết\ lập\ t&oàn\ cầu +menutrans F&ile\ Settings &Thiết\ lập\ tập\ t&in +menutrans C&olor\ Scheme Phối\ hợp\ màu\ &sắc +menutrans &Keymap Sơ\ đồ\ &bàn\ phím +menutrans Select\ Fo&nt\.\.\. Chọn\ &phông\ chữ\.\.\. +">>>----------------- Edit/Global settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Chiếu\ sáng\ từ\ tìm\ thấy :set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! &Không\ tính\ đến\ kiểu\ chữ:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Cho\ &biết\ phần\ tử\ có\ cặp:set\ sm! +menutrans &Context\ lines Số\ &dòng\ quanh\ con\ trỏ +menutrans &Virtual\ Edit &Soạn\ thảo\ ảo +menutrans Toggle\ Insert\ &Mode:set\ im! Chế\ độ\ chè&n:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Tương\ thích\ với\ &Vi:set\ cp! +menutrans Search\ &Path\.\.\. Đường\ dẫn\ tìm\ &kiếm\.\.\. +menutrans Ta&g\ Files\.\.\. Tập\ tin\ t&hẻ\ ghi\.\.\. +" +menutrans Toggle\ &Toolbar Ẩn/hiện\ th&anh\ công\ cụ +menutrans Toggle\ &Bottom\ Scrollbar Ẩn/hiện\ thanh\ kéo\ nằ&m\ dưới +menutrans Toggle\ &Left\ Scrollbar Ẩn/hiện\ thanh\ ké&o\ bên\ trái +menutrans Toggle\ &Right\ Scrollbar Ẩn/hiện\ thanh\ kéo\ bên\ &phải +">>>->>>------------- Edit/Global settings/Virtual edit +menutrans Never Tắt +menutrans Block\ Selection Khi\ chọn\ khối +menutrans Insert\ mode Trong\ chế\ độ\ Chèn +menutrans Block\ and\ Insert Khi\ chọn\ khối\ và\ Chèn +menutrans Always Luôn\ luôn\ bật +">>>----------------- Edit/File settings +menutrans Toggle\ Line\ &Numbering:set\ nu! Đánh\ &số\ dòng:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! &Chế\ độ\ danh\ sách:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! &Ngắt\ những\ dòng\ dài:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Ngắt\ từ\ nguyên\ &vẹn:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! &Dấu\ trắng\ thay\ cho\ tab:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! &Tự\ động\ thụt\ dòng:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! T&hụt\ dòng\ kiểu\ C:set\ cin! +">>>--- +menutrans &Shiftwidth Chiều\ &rộng\ thụt\ dòng +menutrans Soft\ &Tabstop Chiều\ rộng\ T&ab +menutrans Te&xt\ Width\.\.\. Chiều\ rộng\ văn\ &bản\.\.\. +menutrans &File\ Format\.\.\. Định\ dạng\ tậ&p\ tin\.\.\. +">>>----------------- Edit/File settings/Color Scheme +menutrans default Mặc\ định +">>>----------------- Edit/File settings/Keymap +menutrans None Không\ dùng +menutrans arabic Ả\ rập +menutrans czech Séc +menutrans esperanto Etperantô +menutrans greek Hy\ Lạp +menutrans hebrew Do\ thái +menutrans hebrewp Do\ thái\ p +menutrans lithuania-baltic Lát-vi\ Bal-tíc +menutrans magyar Hungari +menutrans persian-iranian Iran\ Ba\ Tư +menutrans persian Ba\ Tư +menutrans russian-jcuken Nga\ jcuken +menutrans russian-jcukenwin Nga\ jcukenwin +menutrans russian-yawerty Nga\ yawerty +menutrans serbian-latin Xéc-bi\ La-tinh +menutrans serbian Xéc-bi +menutrans slovak slovak +" +" +" +" Tools menu +menutrans &Jump\ to\ this\ tagg^] &Nhảy\ tới\ thẻ\ ghig^] +menutrans Jump\ &back^T &Quay\ lại^T +menutrans Build\ &Tags\ File &Tạo\ tập\ tin\ thẻ\ ghi +"------------------- +menutrans &Folding Nếp\ &gấp +menutrans &Diff &Khác\ biệt (diff) +"------------------- +menutrans &Make:make &Biên\ dịch:make +menutrans &List\ Errors:cl &Danh\ sách\ lỗi:cl +menutrans L&ist\ Messages:cl! Danh\ &sách\ thông\ báo:cl! +menutrans &Next\ Error:cn &Lỗi\ tiếp\ theo:cn +menutrans &Previous\ Error:cp Lỗi\ t&rước:cp +menutrans &Older\ List:cold Danh\ sách\ &cũ\ hơn:cold +menutrans N&ewer\ List:cnew Danh\ sách\ &mới\ hơn:cnew +menutrans Error\ &Window Cử&a\ sổ\ lỗi +menutrans &Set\ Compiler C&họn\ trình\ biên\ dịch +"------------------- +menutrans &Convert\ to\ HEX:%!xxd Ch&uyển\ thành\ HEX:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Chuyển\ từ\ HE&X:%!xxd\ -r +">>>---------------- Folds +menutrans &Enable/Disable\ foldszi &Bật/tắt\ nếp\ gấpzi +menutrans &View\ Cursor\ Linezv &Xem\ dòng\ có\ con\ trỏzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx &Chỉ\ xem\ dòng\ có\ con\ trỏzMzx +menutrans C&lose\ more\ foldszm Đóng\ &nhiều\ nếp\ gấp\ hơnzm +menutrans &Close\ all\ foldszM Đóng\ mọi\ nếp\ &gấpzM +menutrans &Open\ all\ foldszR &Mở\ mọi\ nếp\ gấpzR +menutrans O&pen\ more\ foldszr Mở\ n&hiều\ nếp\ gấp\ hơnzr +menutrans Fold\ Met&hod &Phương\ pháp\ gấp +menutrans Create\ &Foldzf &Tạo\ nếp\ gấpzf +menutrans &Delete\ Foldzd Xó&a\ nếp\ gấpzd +menutrans Delete\ &All\ FoldszD Xóa\ mọ&i\ nếp\ gấpzD +menutrans Fold\ col&umn\ width Chiều\ &rộng\ cột\ nếp\ gấp +">>>->>>----------- Tools/Folds/Fold Method +menutrans M&anual &Thủ\ công +menutrans I&ndent Thụt\ &dòng +menutrans E&xpression &Biểu\ thức +menutrans S&yntax &Cú\ pháp +menutrans Ma&rker &Dấu\ hiệu +">>>--------------- Tools/Diff +menutrans &Update &Cập\ nhật +menutrans &Get\ Block &Thay\ đổi\ bộ\ đệm\ này +menutrans &Put\ Block T&hay\ đổi\ bộ\ đệm\ khác +">>>--------------- Tools/Diff/Error window +menutrans &Update:cwin &Cập\ nhật:cwin +menutrans &Close:cclose Đó&ng:cclose +menutrans &Open:copen &Mở:copen +" +" +" Syntax menu +" +menutrans &Show\ filetypes\ in\ menu &Hiển\ thị\ loại\ tập\ tin\ trong\ trình\ đơn +menutrans Set\ '&syntax'\ only &Chỉ\ thay\ đổi\ giá\ trị\ 'syntax' +menutrans Set\ '&filetype'\ too Th&ay\ đổi\ cả\ giá\ trị\ 'filetype' +menutrans &Off &Tắt +menutrans &Manual &Bằng\ tay +menutrans A&utomatic Tự\ độ&ng +menutrans on/off\ for\ &This\ file Bật\ tắt\ &cho\ tập\ tin\ này +menutrans Co&lor\ test &Kiểm\ tra\ màu\ sắc +menutrans &Highlight\ test Kiểm\ tra\ chiếu\ &sáng +menutrans &Convert\ to\ HTML &Chuyển\ thành\ HTML +">>>---------------- Syntax/AB +menutrans Apache\ config Cấu\ hình\ Apache +menutrans Ant\ build\ file Tập\ tin\ biên\ dịch\ Ant +menutrans Apache-style\ config Cấu\ hình\ phong\ cách\ Apache +menutrans Arc\ Macro\ Language Ngôn\ ngữ\ Macro\ Arc +menutrans Arch\ inventory Kiểm\ kê\ Arch +menutrans ASP\ with\ VBScript ASP\ với\ VBScript +menutrans ASP\ with\ Perl ASP\ với\ Perl +menutrans BC\ calculator Máy\ tính\ BC +menutrans BDF\ font Phông\ chữ\ BDF +menutrans blank không\ dùng +">>>---------------- Syntax/C +menutrans Calendar Lịch +menutrans Cheetah\ template Mẫu\ Cheetah +menutrans Config Cấu\ hình +" +" +" Buffers menu +" +menutrans &Refresh\ menu &Cập\ nhật\ trình\ đơn +menutrans Delete &Xóa +menutrans &Alternate Xen\ &kẽ +menutrans &Next Tiế&p\ theo +menutrans &Previous &Trước +menutrans [No\ File] [Không\ có\ tập\ tin] +" +" +" Window menu +" +menutrans &New^Wn &Mới^Wn +menutrans S&plit^Ws &Chia\ đôi^Ws +menutrans Sp&lit\ To\ #^W^^ Chia\ &tới\ #^W^^ +menutrans Split\ &Vertically^Wv Chia\ &dọc^Wv +menutrans Split\ File\ E&xplorer Mở\ trình\ &duyệt\ tập\ tin +" +menutrans &Close^Wc Đó&ng^Wc +menutrans Close\ &Other(s)^Wo Đóng\ các\ cửa\ sổ\ &khác^Wo +" +menutrans Move\ &To C&huyển\ tới +menutrans Rotate\ &Up^WR &Lên\ trên^WR +menutrans Rotate\ &Down^Wr &Xuống\ dưới^Wr +" +menutrans &Equal\ Size^W= Cân\ &bằng\ kích\ thước^W= +menutrans &Max\ Height^W_ Chiều\ c&ao\ lớn\ nhất^W_ +menutrans M&in\ Height^W1_ Chiều\ ca&o\ nhỏ\ nhất^W1_ +menutrans Max\ &Width^W\| Chiều\ &rộng\ lớn\ nhất^W\| +menutrans Min\ Widt&h^W1\| Chiề&u\ rộng\ nhỏ\ nhất^W1\| +">>>----------------- Window/Move To +menutrans &Top^WK Đầ&u^WK +menutrans &Bottom^WJ &Cuối^WJ +menutrans &Left\ side^WH &Trái^WH +menutrans &Right\ side^WL &Phải^WL +" +" +" The popup menu +" +" +menutrans &Undo &Hủy\ bước +menutrans Cu&t &Cắt +menutrans &Copy &Sao\ chép +menutrans &Paste &Dán +menutrans &Delete &Xóa +menutrans Select\ Blockwise Chọn\ &theo\ khối +menutrans Select\ &Word Chọ&n\ từ +menutrans Select\ &Line Chọn\ dòn&g +menutrans Select\ &Block Chọn\ &khối +menutrans Select\ &All Chọn\ tất\ &cả +" +" The GUI toolbar +" +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open Mở tập tin + tmenu ToolBar.Save Ghi nhớ tập tin + tmenu ToolBar.SaveAll Ghi nhớ tất cả + tmenu ToolBar.Print In ra + tmenu ToolBar.Undo Hủy bước + tmenu ToolBar.Redo Làm lại + tmenu ToolBar.Cut Cắt + tmenu ToolBar.Copy Sao chép + tmenu ToolBar.Paste Dán + tmenu ToolBar.Find Tìm kiếm + tmenu ToolBar.FindNext Tìm tiếp theo + tmenu ToolBar.FindPrev Tìm ngược lại + tmenu ToolBar.Replace Thay thế... + tmenu ToolBar.LoadSesn Nạp buổi làm việc + tmenu ToolBar.SaveSesn Ghi nhớ buổi làm việc + tmenu ToolBar.RunScript Chạy script của Vim + tmenu ToolBar.Make Biên dịch + tmenu ToolBar.Shell Shell + tmenu ToolBar.RunCtags Tạo tập tin thẻ ghi + tmenu ToolBar.TagJump Chuyển tới thẻ ghi + tmenu ToolBar.Help Trợ giúp + tmenu ToolBar.FindHelp Tìm trong trợ giúp + endfun +endif +" +" +" Dialog texts +" +" Find in help dialog +" +let g:menutrans_help_dialog = "Hãy nhập câu lệnh hoặc từ khóa tìm kiếm:\n\nThêm i_ để tìm kiếm câu lệnh của chế độ Nhập Input (Ví dụ, i_CTRL-X)\nThêm c_ để tìm kiếm câu lệnh của chế độ soạn thảo dòng lệnh (Ví dụ, с_)\nThêm ' để tìm kiếm trợ giúp cho một tùy chọn (ví dụ, 'shiftwidth')" +" +" Searh path dialog +" +let g:menutrans_path_dialog = "Hãy chỉ ra đường dẫn để tìm kiếm tập tin.\nTên của thư mục phân cách nhau bởi dấu phẩy." +" +" Tag files dialog +" +let g:menutrans_tags_dialog = "Nhập tên tập tin thẻ ghi (phân cách bởi dấu phẩy).\n" +" +" Text width dialog +" +let g:menutrans_textwidth_dialog = "Hãy nhập chiều rộng văn bản mới.\nNhập 0 để hủy bỏ." +" +" File format dialog +" +let g:menutrans_fileformat_dialog = "Hãy chọn định dạng tập tin." +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Hủy bỏ" +" +let menutrans_no_file = "[không có tập tin]" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_zh.big5.vim b/share/vim/vim74/lang/menu_zh.big5.vim similarity index 100% rename from share/vim/vim73/lang/menu_zh.big5.vim rename to share/vim/vim74/lang/menu_zh.big5.vim diff --git a/share/vim/vim73/lang/menu_zh.cp936.vim b/share/vim/vim74/lang/menu_zh.cp936.vim similarity index 100% rename from share/vim/vim73/lang/menu_zh.cp936.vim rename to share/vim/vim74/lang/menu_zh.cp936.vim diff --git a/share/vim/vim73/lang/menu_zh.cp950.vim b/share/vim/vim74/lang/menu_zh.cp950.vim similarity index 100% rename from share/vim/vim73/lang/menu_zh.cp950.vim rename to share/vim/vim74/lang/menu_zh.cp950.vim diff --git a/share/vim/vim73/lang/menu_zh.gb2312.vim b/share/vim/vim74/lang/menu_zh.gb2312.vim similarity index 100% rename from share/vim/vim73/lang/menu_zh.gb2312.vim rename to share/vim/vim74/lang/menu_zh.gb2312.vim diff --git a/share/vim/vim73/lang/menu_zh_cn.18030.vim b/share/vim/vim74/lang/menu_zh_cn.18030.vim similarity index 100% rename from share/vim/vim73/lang/menu_zh_cn.18030.vim rename to share/vim/vim74/lang/menu_zh_cn.18030.vim diff --git a/share/vim/vim73/lang/menu_zh_cn.cp936.vim b/share/vim/vim74/lang/menu_zh_cn.cp936.vim similarity index 100% rename from share/vim/vim73/lang/menu_zh_cn.cp936.vim rename to share/vim/vim74/lang/menu_zh_cn.cp936.vim diff --git a/share/vim/vim74/lang/menu_zh_cn.gb2312.vim b/share/vim/vim74/lang/menu_zh_cn.gb2312.vim new file mode 100644 index 00000000..a12d94da --- /dev/null +++ b/share/vim/vim74/lang/menu_zh_cn.gb2312.vim @@ -0,0 +1,271 @@ +" Menu Translations: Simplified Chinese +" Translated By: Yuheng Xie +" Last Change: Tue Apr 18 22:00:00 2006 + +" vim: ts=8 sw=8 noet + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +" This causes trouble for a broken iconv (symptom: last character is always +" ??). Without this it works fine anyway, because gbk/cp936 is a superset of +" gb2312. (suggested by Edward L. Fox) +" scriptencoding gb2312 + +" Help menu +menutrans &Help °ïÖú(&H) +menutrans &Overview ×ÝÀÀ(&O) +menutrans &User\ Manual Óû§ÊÖ²á(&U) +menutrans &How-to\ links How-to\ Ö¸Òý(&H) +menutrans &Find\.\.\. ²éÕÒ(&F)\.\.\. +menutrans &Credits ÖÂл(&C) +menutrans Co&pying °æȨ(&P) +menutrans &Sponsor/Register ÔÞÖú/×¢²á(&S) +menutrans O&rphans ¹Â¶ù(&R) +menutrans &Version °æ±¾(&V) +menutrans &About ¹ØÓÚ(&A) + +" File menu +menutrans &File Îļþ(&F) +menutrans &Open\.\.\.:e ´ò¿ª(&O)\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp ·Ö¸î²¢´ò¿ª(&L)\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew ´ò¿ª±êÇ©\.\.\.:tabnew +menutrans &New:enew н¨(&N):enew +menutrans &Close:close ¹Ø±Õ(&C):close +menutrans &Save:w ±£´æ(&S):w +menutrans Save\ &As\.\.\.:sav Áí´æΪ(&A)\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. ·Ö¸î±È½Ï(Diff)(&D)\.\.\. +menutrans Split\ Patched\ &By\.\.\. ·Ö¸î´ò²¹¶¡(Patch)(&B)\.\.\. +menutrans &Print ´òÓ¡(&P) +menutrans Sa&ve-Exit:wqa ±£´æ²¢Í˳ö(&V):wqa +menutrans E&xit:qa Í˳ö(&X):qa + +" Edit menu +menutrans &Edit ±à¼­(&E) +menutrans &Undou ³·Ïú(&U)u +menutrans &Redo^R ÖØ×ö(&R)^R +menutrans Rep&eat\. Öظ´ÉϴβÙ×÷(&E)\. +menutrans Cu&t"+x ¼ôÇÐ(&T)"+x +menutrans &Copy"+y ¸´ÖÆ(&C)"+y +menutrans &Paste"+gP Õ³Ìù(&P)"+gP +menutrans Put\ &Before[p Õ³Ìùµ½¹â±êÇ°(&B)[p +menutrans Put\ &After]p Õ³Ìùµ½¹â±êºó(&A)]p +menutrans &Deletex ɾ³ý(&D)x +menutrans &Select\ AllggVG ȫѡ(&S)ggVG +menutrans &Find\.\.\. ²éÕÒ(&F)\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. ²éÕÒºÍÌæ»»(&L)\.\.\. +menutrans &Find/ ²éÕÒ(&F)/ +menutrans Find\ and\ Rep&lace:%s ²éÕÒºÍÌæ»»(&L):%s +menutrans Settings\ &Window É趨´°¿Ú(&W) +menutrans Startup\ &Settings Æô¶¯É趨(&S) +menutrans &Global\ Settings È«¾ÖÉ趨(&G) + +" Edit/Global Settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! ¿ª/¹Øģʽ¸ßÁÁ(&H):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! ¿ª/¹ØºöÂÔ´óСд(&I):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! ¿ª/¹ØÏÔʾÅä¶Ô(&S):set\ sm! +menutrans &Context\ lines ÉÏÏÂÎÄÐÐÊý(&C) + +menutrans &Virtual\ Edit ÐéÄâ±à¼­(&V) +menutrans Never ´Ó²» +menutrans Block\ Selection ¿éÑ¡Ôñ +menutrans Insert\ mode ²åÈëģʽ +menutrans Block\ and\ Insert ¿éÑ¡ÔñºÍ²åÈëģʽ +menutrans Always ×ÜÊÇ + +menutrans Toggle\ Insert\ &Mode:set\ im! ¿ª/¹Ø²åÈëģʽ(&M):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! ¿ª/¹Ø\ Vi\ ¼æÈÝ:set\ cp! +menutrans Search\ &Path\.\.\. ²éÕÒ·¾¶(&P)\.\.\. +menutrans Ta&g\ Files\.\.\. Tag\ Îļþ(&T)\.\.\. + +" GUI options +menutrans Toggle\ &Toolbar ¿ª/¹Ø¹¤¾ßÀ¸(&T) +menutrans Toggle\ &Bottom\ Scrollbar ¿ª/¹Øµ×²¿¹ö¶¯Ìõ(&B) +menutrans Toggle\ &Left\ Scrollbar ¿ª/¹Ø×ó¶Ë¹ö¶¯Ìõ(&L) +menutrans Toggle\ &Right\ Scrollbar ¿ª/¹ØÓҶ˹ö¶¯Ìõ(&R) + +" Edit/File Settings +menutrans F&ile\ Settings ÎļþÉ趨(&I) + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! ¿ª/¹ØÏÔʾÐкÅ(&N):set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! ¿ª/¹Ø\ list\ ģʽ(&L):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! ¿ª/¹ØÕÛÐÐ(&W):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! ¿ª/¹ØÕû´ÊÕÛÐÐ(&R):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! ¿ª/¹ØÀ©Õ¹\ tab(&E):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! ¿ª/¹Ø×Ô¶¯Ëõ½ø(&A):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! ¿ª/¹Ø\ C\ Ëõ½ø(&C):set\ cin! + +" other options +menutrans &Shiftwidth Ëõ½ø¿í¶È(&S) +menutrans Soft\ &Tabstop Soft\ Tab\ ¿í¶È(&T) +menutrans Te&xt\ Width\.\.\. Îı¾¿í¶È(&X)\.\.\. +menutrans &File\ Format\.\.\. Îļþ¸ñʽ(&F)\.\.\. +menutrans C&olor\ Scheme ÅäÉ«·½°¸(&O) +menutrans Select\ Fo&nt\.\.\. Ñ¡Ôñ×ÖÌå(&N)\.\.\. +menutrans &Keymap ¼üÅÌÓ³Éä(&K) + +" Programming menu +menutrans &Tools ¹¤¾ß(&T) +menutrans &Jump\ to\ this\ tagg^] Ìøתµ½Õâ¸ö\ tag(&J)g^] +menutrans Jump\ &back^T Ìøת·µ»Ø(&B)^T +menutrans Build\ &Tags\ File ½¨Á¢\ Tags\ Îļþ(&T) + +" Tools.Spelling Menu +menutrans &Spelling ƴд¼ì²é(&S) +menutrans &Spell\ Check\ On ´ò¿ªÆ´Ð´¼ì²é(&S) +menutrans Spell\ Check\ &Off ¹Ø±Õƴд¼ì²é(&O) +menutrans To\ &Next\ error]s ÉÏÒ»¸ö´íÎó(&N)]s +menutrans To\ &Previous\ error[s ÏÂÒ»¸ö´íÎó(&P)[s +menutrans Suggest\ &Correctionsz= ÐÞÕý½¨Òé(&C)z= +menutrans &Repeat\ correction:spellrepall Öظ´ÐÞÕý(&R):spellrepall +menutrans Set\ language\ to\ "en" É趨ÓïÑÔΪ\ "en" +menutrans Set\ language\ to\ "en_au" É趨ÓïÑÔΪ\ "en_au" +menutrans Set\ language\ to\ "en_ca" É趨ÓïÑÔΪ\ "en_ca" +menutrans Set\ language\ to\ "en_gb" É趨ÓïÑÔΪ\ "en_gb" +menutrans Set\ language\ to\ "en_nz" É趨ÓïÑÔΪ\ "en_nz" +menutrans Set\ language\ to\ "en_us" É趨ÓïÑÔΪ\ "en_us" +menutrans &Find\ More\ Languages ²éÕÒ¸ü¶àÓïÑÔ(&F) + +" Tools.Fold Menu +" open close folds +menutrans &Folding ÕÛµþ(&F) +menutrans &Enable/Disable\ foldszi ÆôÓÃ/½ûÓÃÕÛµþ(&E)zi +menutrans &View\ Cursor\ Linezv ²é¿´´ËÐÐ(&V)zv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx ½ö²é¿´´ËÐÐ(&W)zMzx +menutrans C&lose\ more\ foldszm ¹Ø±Õ¸ü¶àÕÛµþ(&L)zm +menutrans &Close\ all\ foldszM ¹Ø±ÕËùÓÐÕÛµþ(&C)zM +menutrans O&pen\ more\ foldszr ´ò¿ª¸ü¶àÕÛµþ(&P)zr +menutrans &Open\ all\ foldszR ´ò¿ªËùÓÐÕÛµþ(&O)zR +" fold method +menutrans Fold\ Met&hod ÕÛµþ·½·¨(&H) +menutrans M&anual ÊÖ¹¤(&A) +menutrans I&ndent Ëõ½ø(&N) +menutrans E&xpression ±í´ïʽ(&X) +menutrans S&yntax Óï·¨(&Y) +menutrans &Diff ±È½Ï(Diff)(&D) +menutrans Ma&rker ±ê¼Ç(&R) +" create and delete folds +menutrans Create\ &Foldzf ´´½¨ÕÛµþ(&F)zf +menutrans &Delete\ Foldzd ɾ³ýÕÛµþ(&D)zd +menutrans Delete\ &All\ FoldszD ɾ³ýËùÓÐÕÛµþ(&A)zD +" moving around in folds +menutrans Fold\ column\ &width ÕÛµþÀ¸¿í¶È(&W) + +" Tools.Diff Menu +menutrans &Diff ±È½Ï(Diff)(&D) +menutrans &Update ¸üÐÂ(&U) +menutrans &Get\ Block µÃµ½¿é(&G) +menutrans &Put\ Block ·ÅÖÿé(&P) + +menutrans &Make:make Make(&M):make +menutrans &List\ Errors:cl Áгö´íÎó(&L):cl +menutrans L&ist\ Messages:cl! ÁгöÏûÏ¢(&I):cl! +menutrans &Next\ Error:cn ÏÂÒ»¸ö´íÎó(&N):cn +menutrans &Previous\ Error:cp ÉÏÒ»¸ö´íÎó(&P):cp +menutrans &Older\ List:cold ¸ü¾ÉµÄ´íÎóÁбí(&O):cold +menutrans N&ewer\ List:cnew ¸üеĴíÎóÁбí(&E):cnew +menutrans Error\ &Window ´íÎó´°¿Ú(&W) +menutrans &Update:cwin ¸üÐÂ(&U):cwin +menutrans &Open:copen ´ò¿ª(&O):copen +menutrans &Close:cclose ¹Ø±Õ(&C):cclose +menutrans &Convert\ to\ HEX:%!xxd ת»»³ÉÊ®Áù½øÖÆ:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r ת»»·µ»Ø:%!xxd\ -r +menutrans Se&T\ Compiler É趨±àÒëÆ÷(&T) + +" Names for buffer menu. +menutrans &Buffers »º³åÇø(&B) +menutrans &Refresh\ menu ¸üв˵¥(&R) +menutrans &Delete ɾ³ý(&D) +menutrans &Alternate ½»Ìæ(&A) +menutrans &Next ÏÂÒ»¸ö(&N) +menutrans &Previous ÉÏÒ»¸ö(&P) + +" Window menu +menutrans &Window ´°¿Ú(&W) +menutrans &New^Wn н¨(&N)^Wn +menutrans S&plit^Ws ·Ö¸î(&P)^Ws +menutrans Sp&lit\ To\ #^W^^ ·Ö¸îµ½\ #(&L)^W^^ +menutrans Split\ &Vertically^Wv ´¹Ö±·Ö¸î(&V)^Wv +menutrans Split\ File\ E&xplorer ·Ö¸îÎļþä¯ÀÀÆ÷(&X) +menutrans &Close^Wc ¹Ø±Õ(&C)^Wc +menutrans Close\ &Other(s)^Wo ¹Ø±ÕÆäËü´°¿Ú(&O)^Wo +menutrans Move\ &To Òƶ¯µ½(&T) +menutrans &Top^WK ¶¥¶Ë(&T)^WK +menutrans &Bottom^WJ µ×¶Ë(&B)^WJ +menutrans &Left\ side^WH ×ó±ß(&L)^WH +menutrans &Right\ side^WL ÓÒ±ß(&R)^WL +" menutrans Ne&xt^Ww ÏÂÒ»¸ö(&X)^Ww +" menutrans P&revious^WW ÉÏÒ»¸ö(&R)^WW +menutrans Rotate\ &Up^WR ÏòÉÏÂÖ»»(&U)^WR +menutrans Rotate\ &Down^Wr ÏòÏÂÂÖ»»(&D)^Wr +menutrans &Equal\ Size^W= µÈ´ó(&E)^W= +menutrans &Max\ Height^W_ ×î´ó¸ß¶È(&M)^W +menutrans M&in\ Height^W1_ ×îС¸ß¶È(&I)^W1_ +menutrans Max\ &Width^W\| ×î´ó¿í¶È(&W)^W\| +menutrans Min\ Widt&h^W1\| ×îС¿í¶È(&H)^W1\| +" +" The popup menu +menutrans &Undo ³·Ïú(&U) +menutrans Cu&t ¼ôÇÐ(&T) +menutrans &Copy ¸´ÖÆ(&C) +menutrans &Paste Õ³Ìù(&P) +menutrans &Delete ɾ³ý(&D) +menutrans Select\ Blockwise Ñ¡Ôñ¿é +menutrans Select\ &Word Ñ¡Ôñµ¥´Ê(&W) +menutrans Select\ &Sentence Ñ¡Ôñ¾ä×Ó(&S) +menutrans Select\ Pa&ragraph Ñ¡Ôñ¶ÎÂä(&R) +menutrans Select\ &Line Ñ¡ÔñÐÐ(&L) +menutrans Select\ &Block Ñ¡Ôñ¿é(&B) +menutrans Select\ &All ȫѡ(&A) +" +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open ´ò¿ªÎļþ + tmenu ToolBar.Save ±£´æµ±Ç°Îļþ + tmenu ToolBar.SaveAll ±£´æÈ«²¿Îļþ + tmenu ToolBar.Print ´òÓ¡ + tmenu ToolBar.Undo ³·Ïú + tmenu ToolBar.Redo ÖØ×ö + tmenu ToolBar.Cut ¼ôÇе½¼ôÌù°å + tmenu ToolBar.Copy ¸´ÖƵ½¼ôÌù°å + tmenu ToolBar.Paste ´Ó¼ôÌù°åÕ³Ìù + tmenu ToolBar.Find ²éÕÒ... + tmenu ToolBar.FindNext ²éÕÒÏÂÒ»¸ö + tmenu ToolBar.FindPrev ²éÕÒÉÏÒ»¸ö + tmenu ToolBar.Replace ²éÕÒºÍÌæ»»... + tmenu ToolBar.LoadSesn ¼ÓÔػỰ + tmenu ToolBar.SaveSesn ±£´æµ±Ç°»á»° + tmenu ToolBar.RunScript ÔËÐÐ Vim ½Å±¾ + tmenu ToolBar.Make Ö´ÐÐ Make (:make) + tmenu ToolBar.RunCtags ÔÚµ±Ç°Ä¿Â¼½¨Á¢ tags (!ctags -R .) + tmenu ToolBar.TagJump Ìøתµ½¹â±êλÖÃµÄ tag + tmenu ToolBar.Help Vim °ïÖú + tmenu ToolBar.FindHelp ²éÕÒ Vim °ïÖú + endfun +endif + +" Syntax menu +menutrans &Syntax Óï·¨(&S) +menutrans &Show\ filetypes\ in\ menu Ôڲ˵¥ÖÐÏÔʾÎļþÀàÐÍ(&S) +menutrans &Off ¹Ø±Õ(&O) +menutrans &Manual ÊÖ¹¤(&M) +menutrans A&utomatic ×Ô¶¯(&U) +menutrans on/off\ for\ &This\ file ½ö¶ÔÕâ¸öÎļþ¿ª/¹Ø(&T) +menutrans Co&lor\ test É«²Ê²âÊÔ(&L) +menutrans &Highlight\ test ¸ßÁÁ²âÊÔ(&H) +menutrans &Convert\ to\ HTML ת»»³É\ HTML(&C) +menutrans Set\ '&syntax'\ only ½öÉ趨\ 'syntax'(&S) +menutrans Set\ '&filetype'\ too Ò²É趨\ 'filetype'(&F) + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_zh_cn.gbk.vim b/share/vim/vim74/lang/menu_zh_cn.gbk.vim similarity index 100% rename from share/vim/vim73/lang/menu_zh_cn.gbk.vim rename to share/vim/vim74/lang/menu_zh_cn.gbk.vim diff --git a/share/vim/vim74/lang/menu_zh_cn.utf-8.vim b/share/vim/vim74/lang/menu_zh_cn.utf-8.vim new file mode 100644 index 00000000..956363d2 --- /dev/null +++ b/share/vim/vim74/lang/menu_zh_cn.utf-8.vim @@ -0,0 +1,268 @@ +" Menu Translations: Simplified Chinese +" Translated By: Yuheng Xie +" Last Change: Tue Apr 18 22:00:00 2006 + +" vim: ts=8 sw=8 noet + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +" Help menu +menutrans &Help 帮助(&H) +menutrans &Overview 纵览(&O) +menutrans &User\ Manual 用户手册(&U) +menutrans &How-to\ links How-to\ 指引(&H) +menutrans &Find\.\.\. 查找(&F)\.\.\. +menutrans &Credits 致谢(&C) +menutrans Co&pying 版权(&P) +menutrans &Sponsor/Register 赞助/注册(&S) +menutrans O&rphans 孤儿(&R) +menutrans &Version 版本(&V) +menutrans &About 关于(&A) + +" File menu +menutrans &File 文件(&F) +menutrans &Open\.\.\.:e 打开(&O)\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp 分割并打开(&L)\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew 打开标签\.\.\.:tabnew +menutrans &New:enew 新建(&N):enew +menutrans &Close:close 关闭(&C):close +menutrans &Save:w 保存(&S):w +menutrans Save\ &As\.\.\.:sav 另存为(&A)\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. 分割比较(Diff)(&D)\.\.\. +menutrans Split\ Patched\ &By\.\.\. 分割打补丁(Patch)(&B)\.\.\. +menutrans &Print 打印(&P) +menutrans Sa&ve-Exit:wqa 保存并退出(&V):wqa +menutrans E&xit:qa 退出(&X):qa + +" Edit menu +menutrans &Edit 编辑(&E) +menutrans &Undou 撤销(&U)u +menutrans &Redo^R 重做(&R)^R +menutrans Rep&eat\. 重复上次操作(&E)\. +menutrans Cu&t"+x 剪切(&T)"+x +menutrans &Copy"+y 复制(&C)"+y +menutrans &Paste"+gP 粘贴(&P)"+gP +menutrans Put\ &Before[p 粘贴到光标前(&B)[p +menutrans Put\ &After]p 粘贴到光标后(&A)]p +menutrans &Deletex 删除(&D)x +menutrans &Select\ AllggVG 全选(&S)ggVG +menutrans &Find\.\.\. 查找(&F)\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. 查找和替换(&L)\.\.\. +menutrans &Find/ 查找(&F)/ +menutrans Find\ and\ Rep&lace:%s 查找和替换(&L):%s +menutrans Settings\ &Window 设定窗口(&W) +menutrans Startup\ &Settings 启动设定(&S) +menutrans &Global\ Settings 全局设定(&G) + +" Edit/Global Settings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! 开/关模式高亮(&H):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! 开/关忽略大小写(&I):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! 开/关显示配对(&S):set\ sm! +menutrans &Context\ lines 上下文行数(&C) + +menutrans &Virtual\ Edit 虚拟编辑(&V) +menutrans Never 从不 +menutrans Block\ Selection 块选择 +menutrans Insert\ mode 插入模式 +menutrans Block\ and\ Insert 块选择和插入模式 +menutrans Always 总是 + +menutrans Toggle\ Insert\ &Mode:set\ im! 开/关插入模式(&M):set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! 开/关\ Vi\ 兼容:set\ cp! +menutrans Search\ &Path\.\.\. 查找路径(&P)\.\.\. +menutrans Ta&g\ Files\.\.\. Tag\ 文件(&T)\.\.\. + +" GUI options +menutrans Toggle\ &Toolbar 开/关工具栏(&T) +menutrans Toggle\ &Bottom\ Scrollbar 开/关底部滚动条(&B) +menutrans Toggle\ &Left\ Scrollbar 开/关左端滚动条(&L) +menutrans Toggle\ &Right\ Scrollbar 开/关右端滚动条(&R) + +" Edit/File Settings +menutrans F&ile\ Settings 文件设定(&I) + +" Boolean options +menutrans Toggle\ Line\ &Numbering:set\ nu! 开/关显示行号(&N):set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! 开/关\ list\ 模式(&L):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! 开/关折行(&W):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! 开/关整词折行(&R):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! 开/关扩展\ tab(&E):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! 开/关自动缩进(&A):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! 开/关\ C\ 缩进(&C):set\ cin! + +" other options +menutrans &Shiftwidth 缩进宽度(&S) +menutrans Soft\ &Tabstop Soft\ Tab\ 宽度(&T) +menutrans Te&xt\ Width\.\.\. 文本宽度(&X)\.\.\. +menutrans &File\ Format\.\.\. 文件格式(&F)\.\.\. +menutrans C&olor\ Scheme 配色方案(&O) +menutrans Select\ Fo&nt\.\.\. 选择字体(&N)\.\.\. +menutrans &Keymap 键盘映射(&K) + +" Programming menu +menutrans &Tools 工具(&T) +menutrans &Jump\ to\ this\ tagg^] 跳转到这个\ tag(&J)g^] +menutrans Jump\ &back^T 跳转返回(&B)^T +menutrans Build\ &Tags\ File 建立\ Tags\ 文件(&T) + +" Tools.Spelling Menu +menutrans &Spelling 拼写检查(&S) +menutrans &Spell\ Check\ On 打开拼写检查(&S) +menutrans Spell\ Check\ &Off 关闭拼写检查(&O) +menutrans To\ &Next\ error]s 上一个错误(&N)]s +menutrans To\ &Previous\ error[s 下一个错误(&P)[s +menutrans Suggest\ &Correctionsz= 修正建议(&C)z= +menutrans &Repeat\ correction:spellrepall 重复修正(&R):spellrepall +menutrans Set\ language\ to\ "en" 设定语言为\ "en" +menutrans Set\ language\ to\ "en_au" 设定语言为\ "en_au" +menutrans Set\ language\ to\ "en_ca" 设定语言为\ "en_ca" +menutrans Set\ language\ to\ "en_gb" 设定语言为\ "en_gb" +menutrans Set\ language\ to\ "en_nz" 设定语言为\ "en_nz" +menutrans Set\ language\ to\ "en_us" 设定语言为\ "en_us" +menutrans &Find\ More\ Languages 查找更多语言(&F) + +" Tools.Fold Menu +" open close folds +menutrans &Folding 折叠(&F) +menutrans &Enable/Disable\ foldszi 启用/禁用折叠(&E)zi +menutrans &View\ Cursor\ Linezv 查看此行(&V)zv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx 仅查看此行(&W)zMzx +menutrans C&lose\ more\ foldszm 关闭更多折叠(&L)zm +menutrans &Close\ all\ foldszM 关闭所有折叠(&C)zM +menutrans O&pen\ more\ foldszr 打开更多折叠(&P)zr +menutrans &Open\ all\ foldszR 打开所有折叠(&O)zR +" fold method +menutrans Fold\ Met&hod 折叠方法(&H) +menutrans M&anual 手工(&A) +menutrans I&ndent 缩进(&N) +menutrans E&xpression 表达式(&X) +menutrans S&yntax 语法(&Y) +menutrans &Diff 比较(Diff)(&D) +menutrans Ma&rker 标记(&R) +" create and delete folds +menutrans Create\ &Foldzf 创建折叠(&F)zf +menutrans &Delete\ Foldzd 删除折叠(&D)zd +menutrans Delete\ &All\ FoldszD 删除所有折叠(&A)zD +" moving around in folds +menutrans Fold\ column\ &width 折叠栏宽度(&W) + +" Tools.Diff Menu +menutrans &Diff 比较(Diff)(&D) +menutrans &Update 更新(&U) +menutrans &Get\ Block 得到块(&G) +menutrans &Put\ Block 放置块(&P) + +menutrans &Make:make Make(&M):make +menutrans &List\ Errors:cl 列出错误(&L):cl +menutrans L&ist\ Messages:cl! 列出消息(&I):cl! +menutrans &Next\ Error:cn 下一个错误(&N):cn +menutrans &Previous\ Error:cp 上一个错误(&P):cp +menutrans &Older\ List:cold 更旧的错误列表(&O):cold +menutrans N&ewer\ List:cnew 更新的错误列表(&E):cnew +menutrans Error\ &Window 错误窗口(&W) +menutrans &Update:cwin 更新(&U):cwin +menutrans &Open:copen 打开(&O):copen +menutrans &Close:cclose 关闭(&C):cclose +menutrans &Convert\ to\ HEX:%!xxd 转换成十六进制:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r 转换返回:%!xxd\ -r +menutrans Se&T\ Compiler 设定编译器(&T) + +" Names for buffer menu. +menutrans &Buffers 缓冲区(&B) +menutrans &Refresh\ menu 更新菜单(&R) +menutrans &Delete 删除(&D) +menutrans &Alternate 交替(&A) +menutrans &Next 下一个(&N) +menutrans &Previous 上一个(&P) + +" Window menu +menutrans &Window 窗口(&W) +menutrans &New^Wn 新建(&N)^Wn +menutrans S&plit^Ws 分割(&P)^Ws +menutrans Sp&lit\ To\ #^W^^ 分割到\ #(&L)^W^^ +menutrans Split\ &Vertically^Wv 垂直分割(&V)^Wv +menutrans Split\ File\ E&xplorer 分割文件浏览器(&X) +menutrans &Close^Wc 关闭(&C)^Wc +menutrans Close\ &Other(s)^Wo 关闭其它窗口(&O)^Wo +menutrans Move\ &To 移动到(&T) +menutrans &Top^WK 顶端(&T)^WK +menutrans &Bottom^WJ 底端(&B)^WJ +menutrans &Left\ side^WH 左边(&L)^WH +menutrans &Right\ side^WL 右边(&R)^WL +" menutrans Ne&xt^Ww 下一个(&X)^Ww +" menutrans P&revious^WW 上一个(&R)^WW +menutrans Rotate\ &Up^WR 向上轮换(&U)^WR +menutrans Rotate\ &Down^Wr 向下轮换(&D)^Wr +menutrans &Equal\ Size^W= 等大(&E)^W= +menutrans &Max\ Height^W_ 最大高度(&M)^W +menutrans M&in\ Height^W1_ 最小高度(&I)^W1_ +menutrans Max\ &Width^W\| 最大宽度(&W)^W\| +menutrans Min\ Widt&h^W1\| 最小宽度(&H)^W1\| +" +" The popup menu +menutrans &Undo 撤销(&U) +menutrans Cu&t 剪切(&T) +menutrans &Copy 复制(&C) +menutrans &Paste 粘贴(&P) +menutrans &Delete 删除(&D) +menutrans Select\ Blockwise 选择块 +menutrans Select\ &Word 选择单词(&W) +menutrans Select\ &Sentence 选择句子(&S) +menutrans Select\ Pa&ragraph 选择段落(&R) +menutrans Select\ &Line 选择行(&L) +menutrans Select\ &Block 选择块(&B) +menutrans Select\ &All 全选(&A) +" +" The GUI toolbar +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open 打开文件 + tmenu ToolBar.Save 保存当前文件 + tmenu ToolBar.SaveAll 保存全部文件 + tmenu ToolBar.Print 打印 + tmenu ToolBar.Undo 撤销 + tmenu ToolBar.Redo 重做 + tmenu ToolBar.Cut 剪切到剪贴板 + tmenu ToolBar.Copy 复制到剪贴板 + tmenu ToolBar.Paste 从剪贴板粘贴 + tmenu ToolBar.Find 查找... + tmenu ToolBar.FindNext 查找下一个 + tmenu ToolBar.FindPrev 查找上一个 + tmenu ToolBar.Replace 查找和替换... + tmenu ToolBar.LoadSesn 加载会话 + tmenu ToolBar.SaveSesn 保存当前会话 + tmenu ToolBar.RunScript 运行 Vim 脚本 + tmenu ToolBar.Make 执行 Make (:make) + tmenu ToolBar.RunCtags 在当前目录建立 tags (!ctags -R .) + tmenu ToolBar.TagJump 跳转到光标位置的 tag + tmenu ToolBar.Help Vim 帮助 + tmenu ToolBar.FindHelp 查找 Vim 帮助 + endfun +endif + +" Syntax menu +menutrans &Syntax 语法(&S) +menutrans &Show\ filetypes\ in\ menu 在菜单中显示文件类型(&S) +menutrans &Off 关闭(&O) +menutrans &Manual 手工(&M) +menutrans A&utomatic 自动(&U) +menutrans on/off\ for\ &This\ file 仅对这个文件开/关(&T) +menutrans Co&lor\ test 色彩测试(&L) +menutrans &Highlight\ test 高亮测试(&H) +menutrans &Convert\ to\ HTML 转换成\ HTML(&C) +menutrans Set\ '&syntax'\ only 仅设定\ 'syntax'(&S) +menutrans Set\ '&filetype'\ too 也设定\ 'filetype'(&F) + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/lang/menu_zh_tw.big5.vim b/share/vim/vim74/lang/menu_zh_tw.big5.vim similarity index 100% rename from share/vim/vim73/lang/menu_zh_tw.big5.vim rename to share/vim/vim74/lang/menu_zh_tw.big5.vim diff --git a/share/vim/vim73/lang/menu_zh_tw.cp950.vim b/share/vim/vim74/lang/menu_zh_tw.cp950.vim similarity index 100% rename from share/vim/vim73/lang/menu_zh_tw.cp950.vim rename to share/vim/vim74/lang/menu_zh_tw.cp950.vim diff --git a/share/vim/vim74/lang/menu_zh_tw.utf-8.vim b/share/vim/vim74/lang/menu_zh_tw.utf-8.vim new file mode 100644 index 00000000..7bef83ce --- /dev/null +++ b/share/vim/vim74/lang/menu_zh_tw.utf-8.vim @@ -0,0 +1,291 @@ +" Menu Translations: Traditional Chinese +" Translated By: Hung-Te Lin +" Last Change: 2012 May 01 + +" {{{ Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 +" }}} + +let s:keepcpo= &cpo +set cpo&vim + +scriptencoding utf-8 + +" {{{ Help menu: complete +menutrans &Help 輔助說明(&H) +" ------------------------------------------------------------------------ +menutrans &Overview 說明文件總覽(&O) +menutrans &User\ Manual 使用者手冊(&U) +menutrans &How-to\ links 如何作\.\.\.(&H) +menutrans &GUI 圖型界面(&G) +menutrans &Credits 感謝(&C) +menutrans Co&pying 版權(&P) +menutrans &Sponsor/Register 贊助/註冊(&S) +menutrans O&rphans 拯救孤兒(&R) +" ------------------------------------------------------------------------ +menutrans &Version 程式版本資訊(&V) +menutrans &About 關於\ Vim(&A) +" }}} + +" {{{ File menu: complete +menutrans &File 檔案(&F) +" ------------------------------------------------------------------------ +menutrans &Open\.\.\.:e 開啟(&O)\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp 分割視窗並開啟(&L):sp +menutrans &New:enew 編輯新檔案(&N):enew +menutrans &Close:close 關閉檔案(&C):close +" ------------------------------------------------------------------------ +menutrans &Save:w 儲存(&S):w +menutrans Save\ &As\.\.\.:sav 另存新檔(&A)\.\.\.:sav +" ------------------------------------------------------------------------ +menutrans Split\ &Diff\ with\.\.\. 比較(&Diff)\.\.\. +menutrans Split\ Patched\ &By\.\.\. 執行Patch(&B)\.\.\. +" ------------------------------------------------------------------------ +menutrans &Print 列印(&P) +" ------------------------------------------------------------------------ +menutrans Sa&ve-Exit:wqa 儲存並離開(&V):wqa +menutrans E&xit:qa 離開(&X):qa +" }}} + +" {{{ Edit menu +menutrans &Edit 編輯(&E) +" ------------------------------------------------------------------------ +menutrans &Undou 復原(&U)u +menutrans &Redo^R 取消上次復原(&R)^R +menutrans Rep&eat\. 重複上次動作(&E)\. +" ------------------------------------------------------------------------ +menutrans Cu&t"+x 剪下(&T)"+x +menutrans &Copy"+y 複製(&C)"+y +menutrans &Paste"+gP 貼上(&P)"+gP +menutrans Put\ &Before[p 貼到游標前(&B)[p +menutrans Put\ &After]p 貼到游標後(&A)]p +menutrans &Deletex 刪除(&D)x +menutrans &Select\ AllggVG 全選(&S)ggvG +" ------------------------------------------------------------------------ +menutrans &Find\.\.\. 尋找(&F)\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. 尋找並取代(&L)\.\.\. +" ------------------------------------------------------------------------ +menutrans Settings\ &Window 設定視窗(&W) +menutrans &Global\ Settings 全域設定(&G) +menutrans F&ile\ Settings 設定此檔案(&I) +menutrans C&olor\ Scheme 配色設定(&O) +menutrans &Keymap 鍵盤對應(&K) + " "{{{ Keymap: + menutrans None 無 + " }}} +menutrans Select\ Fo&nt\.\.\. 設定字型(&N)\.\.\. +" }}} + +" {{{ Edit.FileSettings +menutrans Toggle\ Line\ &Numbering:set\ nu! 切換顯示行號(&N):set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! 切換顯示行尾及TAB(&L):set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! 切換自動折行顯示(&W):set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! 切換折行顯示可任意斷句(&R):set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! 切換展開TAB(&E):set\ et! +menutrans Toggle\ &auto-indent:set\ ai! 切換自動縮排(&A):set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! 切換C語言縮排(&C):set\ cin! +" ------------------------------------------------------------------------ +menutrans &Shiftwidth 縮排寬度(shiftwidth)(&S) +menutrans Soft\ &Tabstop 軟體模擬TAB(softtabstop)(&T) +menutrans Te&xt\ Width\.\.\. 文字頁面寬度(textwidth)(&X)\.\.\. +menutrans &File\ Format\.\.\. 設定檔案格式(對應作業系統)(&F)\.\.\. +" }}} + +" {{{ Edit.GlobalSettings +menutrans Toggle\ Pattern\ &Highlight:set\ hls! 切換高亮度搜尋字串(&H):set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! 切換忽略大小寫(&I):set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! 切換顯示對應括號(&S):set\ sm! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! 切換傳統Vi相容模式(&O):set\ cp! +menutrans &Context\ lines 本文前後保留行數(scrolloff)(&C) +menutrans &Virtual\ Edit 游標任意移動(virtualedit)(&V) + " {{{ Edit.GlobalSettings.VirtualEdit + menutrans Never 不使用 + menutrans Block\ Selection 區塊選擇時 + menutrans Insert\ mode 插入模式時 + menutrans Block\ and\ Insert 區塊與插入模式 + menutrans Always 一直開啟 + " }}} +menutrans Toggle\ Insert\ &Mode:set\ im! 切換插入模式(&M):set\ im! +menutrans Search\ &Path\.\.\. 搜尋路徑(&P)\.\.\. +menutrans Ta&g\ Files\.\.\. Tag\ 標籤索引檔案(&G)\.\.\. +" ------------------------------------------------------------------------ +menutrans Toggle\ &Toolbar 切換使用工具列(&T) +menutrans Toggle\ &Bottom\ Scrollbar 切換使用底端捲動軸(&B) +menutrans Toggle\ &Left\ Scrollbar 切換使用左端捲動軸(&L) +menutrans Toggle\ &Right\ Scrollbar 切換使用右端捲動軸(&R) +" }}} + +" {{{ Tools menu: complete +menutrans &Tools 工具(&T) +" ------------------------------------------------------------------------ +menutrans &Jump\ to\ this\ tagg^] 檢索游標處的標籤關鍵字(tag)(&J)g^] +menutrans Jump\ &back^T 跳回檢索前的位置(&B)^T +menutrans Build\ &Tags\ File 建立標籤索引檔\ Tags(&T) +" ------------------------------------------------------------------------ +menutrans &Folding 覆疊(Fold)設定(&F) + " {{{ Tools.Fold + menutrans &Enable/Disable\ foldszi 切換使用\ Folding(&E)zi + menutrans &View\ Cursor\ Linezv 檢視此層\ Fold(&V)zv + menutrans Vie&w\ Cursor\ Line\ onlyzMzx 只檢視此\ Fold(&W)zMzx + menutrans C&lose\ more\ foldszm 收起一層\ Folds(&L)zm + menutrans &Close\ all\ foldszM 收起所有\ Folds(&C)zM + menutrans O&pen\ more\ foldszr 打開一層\ Folds(&P)zr + menutrans &Open\ all\ foldszR 打開所有\ Folds(&O)zR + menutrans Fold\ Met&hod Folding\ 方式(&H) + " {{{ Tools.Fold.Method + menutrans M&anual 手動建立(&A) + menutrans I&ndent 依照縮排(&N) + menutrans E&xpression 自訂運算式(&X) + menutrans S&yntax 依照語法設定(&Y) + menutrans &Diff Diff(&D) + menutrans Ma&rker 標記(Marker)(&R) + " }}} + " ------------------------------------------------------------------------ + menutrans Create\ &Foldzf 建立\ Fold(&F)zf + menutrans &Delete\ Foldzd 刪除\ Fold(&D)zd + menutrans Delete\ &All\ FoldszD 刪除所有\ Fold(&A)zD + " ------------------------------------------------------------------------ + menutrans Fold\ column\ &width 設定\ Fold欄寬(&W) + " }}} +menutrans &Diff Diff(&D) + " {{{ Tools.Diff + menutrans &Update 更新(&U) + menutrans &Get\ Block 取得區塊(&G) + menutrans &Put\ Block 貼上區塊(&P) + " }}} +" ------------------------------------------------------------------------ +menutrans &Make:make 執行\ Make(&M):make +menutrans &List\ Errors:cl 列出編譯錯誤(&E):cl +menutrans L&ist\ Messages:cl! 列出所有訊息(&I):cl! +menutrans &Next\ Error:cn 下一個編譯錯誤處(&N):cn +menutrans &Previous\ Error:cp 上一個編譯錯誤處(&P):cp +menutrans &Older\ List:cold 檢視舊錯誤列表(&O):cold +menutrans N&ewer\ List:cnew 檢視新錯誤列表(&E):cnew +menutrans Error\ &Window 錯誤訊息視窗(&W) + " {{{ Tools.ErrorWindow + menutrans &Update:cwin 更新(&U):cwin + menutrans &Open:copen 開啟(&O):copen + menutrans &Close:cclose 關閉(&C):cclose + " }}} +menutrans &Set\ Compiler 設定編譯器Compiler(&S) +" ------------------------------------------------------------------------ +menutrans &Convert\ to\ HEX:%!xxd 轉換成16進位碼(&C):%!xxd +menutrans Conve&rt\ back:%!xxd\ -r 從16進位碼轉換回文字(&R):%!xxd\ -r +" }}} + +" {{{ Syntax menu: compete +menutrans &Syntax 語法效果(&S) +" ------------------------------------------------------------------------ +menutrans &Show\ filetypes\ in\ menu 顯示所有可用檔案格式(&S) +menutrans Set\ '&syntax'\ only 只使用\ 'syntax'(&S) +menutrans Set\ '&filetype'\ too 使用\ 'syntax'+'filetype'(&F) +menutrans &Off 關閉效果(&O) +menutrans &Manual 手動設定(&M) +menutrans A&utomatic 自動設定(&U) +menutrans on/off\ for\ &This\ file 只切換此檔的效果設定(&T) +" ------------------------------------------------------------------------ +menutrans Co&lor\ test 色彩顯示測試(&L) +menutrans &Highlight\ test 語法效果測試(&H) +menutrans &Convert\ to\ HTML 轉換成\ HTML\ 格式(&C) +" }}} + +" {{{ Buffers menu: complete +menutrans &Buffers 緩衝區(&B) +" ------------------------------------------------------------------------ +menutrans &Refresh\ menu 更新(&R) +menutrans &Delete 刪除(&D) +menutrans &Alternate 切換上次編輯緩衝區(&A) +menutrans &Next 下一個(&N) +menutrans &Previous 前一個(&P) +" ------------------------------------------------------------------------ +" menutrans [No\ file] [無檔案] +" }}} + +" {{{ Window menu: complete +menutrans &Window 視窗(&W) +" ------------------------------------------------------------------------ +menutrans &New^Wn 開新視窗(&N)^Wn +menutrans S&plit^Ws 分割視窗(&P)^Ws +menutrans Sp&lit\ To\ #^W^^ 分割到#(&L)^W^^ +menutrans Split\ &Vertically^Wv 垂直分割(&V)^Wv +menutrans Split\ File\ E&xplorer 檔案總管式分割(&X) +" ------------------------------------------------------------------------ +menutrans &Close^Wc 關閉視窗(&C)^Wc +menutrans Close\ &Other(s)^Wo 關閉其它視窗(&O)^Wo +" ------------------------------------------------------------------------ +menutrans Move\ &To 移至(&T) + " {{{ Window.MoveTo + menutrans &Top^WK 頂端(&T)^WK + menutrans &Bottom^WJ 底端(&B)^WJ + menutrans &Left\ side^WH 左邊(&L)^WH + menutrans &Right\ side^WL 右邊(&R)^WL + " }}} +menutrans Rotate\ &Up^WR 上移視窗(&U)^WR +menutrans Rotate\ &Down^Wr 下移視窗(&D)^Wr +" ------------------------------------------------------------------------ +menutrans &Equal\ Size^W= 所有視窗等高(&E)^W= +menutrans &Max\ Height^W_ 最大高度(&M)^W +menutrans M&in\ Height^W1_ 最小高度(&I)^W1_ +menutrans Max\ &Width^W\| 最大寬度(&W)^W\| +menutrans Min\ Widt&h^W1\| 最小寬度(&H)^W1\| +" }}} + +" {{{ The popup menu: complete +menutrans &Undo 復原(&U) +" ------------------------------------------------------------------------ +menutrans Cu&t 剪下(&T) +menutrans &Copy 複製(&C) +menutrans &Paste 貼上(&P) +menutrans &Delete 刪除(&D) +" ------------------------------------------------------------------------ +menutrans Select\ Blockwise Blockwise式選擇 +menutrans Select\ &Word 選擇單字(&W) +menutrans Select\ &Line 選擇行(&L) +menutrans Select\ &Block 選擇區塊(&B) +menutrans Select\ &All 全選(&A) +" }}} + +" {{{ The GUI toolbar: complete +if has("toolbar") + if exists("*Do_toolbar_tmenu") + delfun Do_toolbar_tmenu + endif + fun Do_toolbar_tmenu() + tmenu ToolBar.Open 開啟檔案 + tmenu ToolBar.Save 儲存目前編輯中的檔案 + tmenu ToolBar.SaveAll 儲存全部檔案 + tmenu ToolBar.Print 列印 +" ------------------------------------------------------------------------ + tmenu ToolBar.Undo 復原上次變動 + tmenu ToolBar.Redo 取消上次復原動作 +" ------------------------------------------------------------------------ + tmenu ToolBar.Cut 剪下至剪貼簿 + tmenu ToolBar.Copy 複製到剪貼簿 + tmenu ToolBar.Paste 由剪貼簿貼上 +" ------------------------------------------------------------------------ + tmenu ToolBar.Find 尋找... + tmenu ToolBar.FindNext 找下一個 + tmenu ToolBar.FindPrev 找上一個 + tmenu ToolBar.Replace 取代... +" ------------------------------------------------------------------------ + tmenu ToolBar.LoadSesn 載入 Session + tmenu ToolBar.SaveSesn 儲存目前的 Session + tmenu ToolBar.RunScript 執行 Vim 程式檔 +" ------------------------------------------------------------------------ + tmenu ToolBar.Make 執行 Make + tmenu ToolBar.Shell 開啟一個命令列視窗 DosBox + tmenu ToolBar.RunCtags 執行 ctags + tmenu ToolBar.TagJump 跳到目前游標位置的 tag + tmenu ToolBar.Help Vim 輔助說明 + tmenu ToolBar.FindHelp 搜尋 Vim 說明文件 + endfun +endif +" }}} + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:foldmethod=marker:nowrap:foldcolumn=2:foldlevel=1 diff --git a/share/vim/vim73/macmap.vim b/share/vim/vim74/macmap.vim similarity index 100% rename from share/vim/vim73/macmap.vim rename to share/vim/vim74/macmap.vim diff --git a/share/vim/vim73/macros.info b/share/vim/vim74/macros.info similarity index 100% rename from share/vim/vim73/macros.info rename to share/vim/vim74/macros.info diff --git a/share/vim/vim73/macros/README.txt b/share/vim/vim74/macros/README.txt similarity index 100% rename from share/vim/vim73/macros/README.txt rename to share/vim/vim74/macros/README.txt diff --git a/share/vim/vim73/macros/README.txt.info b/share/vim/vim74/macros/README.txt.info similarity index 100% rename from share/vim/vim73/macros/README.txt.info rename to share/vim/vim74/macros/README.txt.info diff --git a/share/vim/vim73/macros/dvorak b/share/vim/vim74/macros/dvorak similarity index 100% rename from share/vim/vim73/macros/dvorak rename to share/vim/vim74/macros/dvorak diff --git a/share/vim/vim74/macros/editexisting.vim b/share/vim/vim74/macros/editexisting.vim new file mode 100644 index 00000000..c18f2256 --- /dev/null +++ b/share/vim/vim74/macros/editexisting.vim @@ -0,0 +1,119 @@ +" Vim Plugin: Edit the file with an existing Vim if possible +" Maintainer: Bram Moolenaar +" Last Change: 2013 Feb 24 + +" This is a plugin, drop it in your (Unix) ~/.vim/plugin or (Win32) +" $VIM/vimfiles/plugin directory. Or make a symbolic link, so that you +" automatically use the latest version. + +" This plugin serves two purposes: +" 1. On startup, if we were invoked with one file name argument and the file +" is not modified then try to find another Vim instance that is editing +" this file. If there is one then bring it to the foreground and exit. +" 2. When a file is edited and a swap file exists for it, try finding that +" other Vim and bring it to the foreground. Requires Vim 7, because it +" uses the SwapExists autocommand event. +if v:version < 700 + finish +endif + +" Function that finds the Vim instance that is editing "filename" and brings +" it to the foreground. +func s:EditElsewhere(filename) + let fname_esc = substitute(a:filename, "'", "''", "g") + + let servers = serverlist() + while servers != '' + " Get next server name in "servername"; remove it from "servers". + let i = match(servers, "\n") + if i == -1 + let servername = servers + let servers = '' + else + let servername = strpart(servers, 0, i) + let servers = strpart(servers, i + 1) + endif + + " Skip ourselves. + if servername ==? v:servername + continue + endif + + " Check if this server is editing our file. + if remote_expr(servername, "bufloaded('" . fname_esc . "')") + " Yes, bring it to the foreground. + if has("win32") + call remote_foreground(servername) + endif + call remote_expr(servername, "foreground()") + + if remote_expr(servername, "exists('*EditExisting')") + " Make sure the file is visible in a window (not hidden). + " If v:swapcommand exists and is set, send it to the server. + if exists("v:swapcommand") + let c = substitute(v:swapcommand, "'", "''", "g") + call remote_expr(servername, "EditExisting('" . fname_esc . "', '" . c . "')") + else + call remote_expr(servername, "EditExisting('" . fname_esc . "', '')") + endif + endif + + if !(has('vim_starting') && has('gui_running') && has('gui_win32')) + " Tell the user what is happening. Not when the GUI is starting + " though, it would result in a message box. + echomsg "File is being edited by " . servername + sleep 2 + endif + return 'q' + endif + endwhile + return '' +endfunc + +" When the plugin is loaded and there is one file name argument: Find another +" Vim server that is editing this file right now. +if argc() == 1 && !&modified + if s:EditElsewhere(expand("%:p")) == 'q' + quit + endif +endif + +" Setup for handling the situation that an existing swap file is found. +try + au! SwapExists * let v:swapchoice = s:EditElsewhere(expand(":p")) +catch + " Without SwapExists we don't do anything for ":edit" commands +endtry + +" Function used on the server to make the file visible and possibly execute a +" command. +func! EditExisting(fname, command) + " Get the window number of the file in the current tab page. + let winnr = bufwinnr(a:fname) + if winnr <= 0 + " Not found, look in other tab pages. + let bufnr = bufnr(a:fname) + for i in range(tabpagenr('$')) + if index(tabpagebuflist(i + 1), bufnr) >= 0 + " Make this tab page the current one and find the window number. + exe 'tabnext ' . (i + 1) + let winnr = bufwinnr(a:fname) + break + endif + endfor + endif + + if winnr > 0 + exe winnr . "wincmd w" + elseif exists('*fnameescape') + exe "split " . fnameescape(a:fname) + else + exe "split " . escape(a:fname, " \t\n*?[{`$\\%#'\"|!<") + endif + + if a:command != '' + exe "normal " . a:command + endif + + redraw +endfunc diff --git a/share/vim/vim73/macros/hanoi.info b/share/vim/vim74/macros/hanoi.info similarity index 100% rename from share/vim/vim73/macros/hanoi.info rename to share/vim/vim74/macros/hanoi.info diff --git a/share/vim/vim73/macros/hanoi/click.me b/share/vim/vim74/macros/hanoi/click.me similarity index 100% rename from share/vim/vim73/macros/hanoi/click.me rename to share/vim/vim74/macros/hanoi/click.me diff --git a/share/vim/vim73/macros/hanoi/click.me.info b/share/vim/vim74/macros/hanoi/click.me.info similarity index 100% rename from share/vim/vim73/macros/hanoi/click.me.info rename to share/vim/vim74/macros/hanoi/click.me.info diff --git a/share/vim/vim73/macros/hanoi/hanoi.vim b/share/vim/vim74/macros/hanoi/hanoi.vim similarity index 100% rename from share/vim/vim73/macros/hanoi/hanoi.vim rename to share/vim/vim74/macros/hanoi/hanoi.vim diff --git a/share/vim/vim73/macros/hanoi/poster b/share/vim/vim74/macros/hanoi/poster similarity index 100% rename from share/vim/vim73/macros/hanoi/poster rename to share/vim/vim74/macros/hanoi/poster diff --git a/share/vim/vim73/macros/hanoi/poster.info b/share/vim/vim74/macros/hanoi/poster.info similarity index 100% rename from share/vim/vim73/macros/hanoi/poster.info rename to share/vim/vim74/macros/hanoi/poster.info diff --git a/share/vim/vim74/macros/justify.vim b/share/vim/vim74/macros/justify.vim new file mode 100644 index 00000000..4ef3bf95 --- /dev/null +++ b/share/vim/vim74/macros/justify.vim @@ -0,0 +1,316 @@ +" Function to left and right align text. +" +" Written by: Preben "Peppe" Guldberg +" Created: 980806 14:13 (or around that time anyway) +" Revised: 001103 00:36 (See "Revisions" below) + + +" function Justify( [ textwidth [, maxspaces [, indent] ] ] ) +" +" Justify() will left and right align a line by filling in an +" appropriate amount of spaces. Extra spaces are added to existing +" spaces starting from the right side of the line. As an example, the +" following documentation has been justified. +" +" The function takes the following arguments: + +" textwidth argument +" ------------------ +" If not specified, the value of the 'textwidth' option is used. If +" 'textwidth' is zero a value of 80 is used. +" +" Additionally the arguments 'tw' and '' are accepted. The value of +" 'textwidth' will be used. These are handy, if you just want to specify +" the maxspaces argument. + +" maxspaces argument +" ------------------ +" If specified, alignment will only be done, if the longest space run +" after alignment is no longer than maxspaces. +" +" An argument of '' is accepted, should the user like to specify all +" arguments. +" +" To aid user defined commands, negative values are accepted aswell. +" Using a negative value specifies the default behaviour: any length of +" space runs will be used to justify the text. + +" indent argument +" --------------- +" This argument specifies how a line should be indented. The default is +" to keep the current indentation. +" +" Negative values: Keep current amount of leading whitespace. +" Positive values: Indent all lines with leading whitespace using this +" amount of whitespace. +" +" Note that the value 0, needs to be quoted as a string. This value +" leads to a left flushed text. +" +" Additionally units of 'shiftwidth'/'sw' and 'tabstop'/'ts' may be +" added. In this case, if the value of indent is positive, the amount of +" whitespace to be added will be multiplied by the value of the +" 'shiftwidth' and 'tabstop' settings. If these units are used, the +" argument must be given as a string, eg. Justify('','','2sw'). +" +" If the values of 'sw' or 'tw' are negative, they are treated as if +" they were 0, which means that the text is flushed left. There is no +" check if a negative number prefix is used to change the sign of a +" negative 'sw' or 'ts' value. +" +" As with the other arguments, '' may be used to get the default +" behaviour. + + +" Notes: +" +" If the line, adjusted for space runs and leading/trailing whitespace, +" is wider than the used textwidth, the line will be left untouched (no +" whitespace removed). This should be equivalent to the behaviour of +" :left, :right and :center. +" +" If the resulting line is shorter than the used textwidth it is left +" untouched. +" +" All space runs in the line are truncated before the alignment is +" carried out. +" +" If you have set 'noexpandtab', :retab! is used to replace space runs +" with whitespace using the value of 'tabstop'. This should be +" conformant with :left, :right and :center. +" +" If joinspaces is set, an extra space is added after '.', '?' and '!'. +" If 'cpooptions' include 'j', extra space is only added after '.'. +" (This may on occasion conflict with maxspaces.) + + +" Related mappings: +" +" Mappings that will align text using the current text width, using at +" most four spaces in a space run and keeping current indentation. +nmap _j :%call Justify('tw',4) +vmap _j :call Justify('tw',4) +" +" Mappings that will remove space runs and format lines (might be useful +" prior to aligning the text). +nmap ,gq :%s/\s\+/ /ggq1G +vmap ,gq :s/\s\+/ /ggvgq + + +" User defined command: +" +" The following is an ex command that works as a shortcut to the Justify +" function. Arguments to Justify() can be added after the command. +com! -range -nargs=* Justify ,call Justify() +" +" The following commands are all equivalent: +" +" 1. Simplest use of Justify(): +" :call Justify() +" :Justify +" +" 2. The _j mapping above via the ex command: +" :%Justify tw 4 +" +" 3. Justify visualised text at 72nd column while indenting all +" previously indented text two shiftwidths +" :'<,'>call Justify(72,'','2sw') +" :'<,'>Justify 72 -1 2sw +" +" This documentation has been justified using the following command: +":se et|kz|1;/^" function Justify(/+,'z-g/^" /s/^" //|call Justify(70,3)|s/^/" / + +" Revisions: +" 001103: If 'joinspaces' was set, calculations could be wrong. +" Tabs at start of line could also lead to errors. +" Use setline() instead of "exec 's/foo/bar/' - safer. +" Cleaned up the code a bit. +" +" Todo: Convert maps to the new script specific form + +" Error function +function! Justify_error(message) + echohl Error + echo "Justify([tw, [maxspaces [, indent]]]): " . a:message + echohl None +endfunction + + +" Now for the real thing +function! Justify(...) range + + if a:0 > 3 + call Justify_error("Too many arguments (max 3)") + return 1 + endif + + " Set textwidth (accept 'tw' and '' as arguments) + if a:0 >= 1 + if a:1 =~ '^\(tw\)\=$' + let tw = &tw + elseif a:1 =~ '^\d\+$' + let tw = a:1 + else + call Justify_error("tw must be a number (>0), '' or 'tw'") + return 2 + endif + else + let tw = &tw + endif + if tw == 0 + let tw = 80 + endif + + " Set maximum number of spaces between WORDs + if a:0 >= 2 + if a:2 == '' + let maxspaces = tw + elseif a:2 =~ '^-\d\+$' + let maxspaces = tw + elseif a:2 =~ '^\d\+$' + let maxspaces = a:2 + else + call Justify_error("maxspaces must be a number or ''") + return 3 + endif + else + let maxspaces = tw + endif + if maxspaces <= 1 + call Justify_error("maxspaces should be larger than 1") + return 4 + endif + + " Set the indentation style (accept sw and ts units) + let indent_fix = '' + if a:0 >= 3 + if (a:3 == '') || a:3 =~ '^-[1-9]\d*\(shiftwidth\|sw\|tabstop\|ts\)\=$' + let indent = -1 + elseif a:3 =~ '^-\=0\(shiftwidth\|sw\|tabstop\|ts\)\=$' + let indent = 0 + elseif a:3 =~ '^\d\+\(shiftwidth\|sw\|tabstop\|ts\)\=$' + let indent = substitute(a:3, '\D', '', 'g') + elseif a:3 =~ '^\(shiftwidth\|sw\|tabstop\|ts\)$' + let indent = 1 + else + call Justify_error("indent: a number with 'sw'/'ts' unit") + return 5 + endif + if indent >= 0 + while indent > 0 + let indent_fix = indent_fix . ' ' + let indent = indent - 1 + endwhile + let indent_sw = 0 + if a:3 =~ '\(shiftwidth\|sw\)' + let indent_sw = &sw + elseif a:3 =~ '\(tabstop\|ts\)' + let indent_sw = &ts + endif + let indent_fix2 = '' + while indent_sw > 0 + let indent_fix2 = indent_fix2 . indent_fix + let indent_sw = indent_sw - 1 + endwhile + let indent_fix = indent_fix2 + endif + else + let indent = -1 + endif + + " Avoid substitution reports + let save_report = &report + set report=1000000 + + " Check 'joinspaces' and 'cpo' + if &js == 1 + if &cpo =~ 'j' + let join_str = '\(\. \)' + else + let join_str = '\([.!?!] \)' + endif + endif + + let cur = a:firstline + while cur <= a:lastline + + let str_orig = getline(cur) + let save_et = &et + set et + exec cur . "retab" + let &et = save_et + let str = getline(cur) + + let indent_str = indent_fix + let indent_n = strlen(indent_str) + " Shall we remember the current indentation + if indent < 0 + let indent_orig = matchstr(str_orig, '^\s*') + if strlen(indent_orig) > 0 + let indent_str = indent_orig + let indent_n = strlen(matchstr(str, '^\s*')) + endif + endif + + " Trim trailing, leading and running whitespace + let str = substitute(str, '\s\+$', '', '') + let str = substitute(str, '^\s\+', '', '') + let str = substitute(str, '\s\+', ' ', 'g') + let str_n = strdisplaywidth(str) + + " Possible addition of space after punctuation + if exists("join_str") + let str = substitute(str, join_str, '\1 ', 'g') + endif + let join_n = strdisplaywidth(str) - str_n + + " Can extraspaces be added? + " Note that str_n may be less than strlen(str) [joinspaces above] + if strdisplaywidth(str) <= tw - indent_n && str_n > 0 + " How many spaces should be added + let s_add = tw - str_n - indent_n - join_n + let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n + let s_dup = s_add / s_nr + let s_mod = s_add % s_nr + + " Test if the changed line fits with tw + if 0 <= (str_n + (maxspaces - 1)*s_nr + indent_n) - tw + + " Duplicate spaces + while s_dup > 0 + let str = substitute(str, '\( \+\)', ' \1', 'g') + let s_dup = s_dup - 1 + endwhile + + " Add extra spaces from the end + while s_mod > 0 + let str = substitute(str, '\(\(\s\+\S\+\)\{' . s_mod . '}\)$', ' \1', '') + let s_mod = s_mod - 1 + endwhile + + " Indent the line + if indent_n > 0 + let str = substitute(str, '^', indent_str, '' ) + endif + + " Replace the line + call setline(cur, str) + + " Convert to whitespace + if &et == 0 + exec cur . 'retab!' + endif + + endif " Change of line + endif " Possible change + + let cur = cur + 1 + endwhile + + norm ^ + + let &report = save_report + +endfunction + +" EOF vim: tw=78 ts=8 sw=4 sts=4 noet ai diff --git a/share/vim/vim74/macros/less.bat b/share/vim/vim74/macros/less.bat new file mode 100644 index 00000000..bbe619bc --- /dev/null +++ b/share/vim/vim74/macros/less.bat @@ -0,0 +1,10 @@ +@echo off +rem batch file to start Vim with less.vim. +rem Read stdin if no arguments were given. +rem Written by Ken Takata. + +if "%1"=="" ( + vim --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" - +) else ( + vim --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" %* +) diff --git a/share/vim/vim74/macros/less.sh b/share/vim/vim74/macros/less.sh new file mode 100644 index 00000000..e29958f7 --- /dev/null +++ b/share/vim/vim74/macros/less.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# Shell script to start Vim with less.vim. +# Read stdin if no arguments were given and stdin was redirected. + +if test -t 1; then + if test $# = 0; then + if test -t 0; then + echo "Missing filename" 1>&2 + exit + fi + vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' - + else + vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' "$@" + fi +else + # Output is not a terminal, cat arguments or stdin + if test $# = 0; then + if test -t 0; then + echo "Missing filename" 1>&2 + exit + fi + cat + else + cat "$@" + fi +fi diff --git a/share/vim/vim74/macros/less.vim b/share/vim/vim74/macros/less.vim new file mode 100644 index 00000000..6ae5ebc6 --- /dev/null +++ b/share/vim/vim74/macros/less.vim @@ -0,0 +1,245 @@ +" Vim script to work like "less" +" Maintainer: Bram Moolenaar +" Last Change: 2012 May 18 + +" Avoid loading this file twice, allow the user to define his own script. +if exists("loaded_less") + finish +endif +let loaded_less = 1 + +" If not reading from stdin, skip files that can't be read. +" Exit if there is no file at all. +if argc() > 0 + let s:i = 0 + while 1 + if filereadable(argv(s:i)) + if s:i != 0 + sleep 3 + endif + break + endif + if isdirectory(argv(s:i)) + echomsg "Skipping directory " . argv(s:i) + elseif getftime(argv(s:i)) < 0 + echomsg "Skipping non-existing file " . argv(s:i) + else + echomsg "Skipping unreadable file " . argv(s:i) + endif + echo "\n" + let s:i = s:i + 1 + if s:i == argc() + quit + endif + next + endwhile +endif + +set nocp +syntax on +set so=0 +set hlsearch +set incsearch +nohlsearch +" Don't remember file names and positions +set viminfo= +set nows +" Inhibit screen updates while searching +let s:lz = &lz +set lz + +" Used after each command: put cursor at end and display position +if &wrap + noremap L L0:redraw:file + au VimEnter * normal! L0 +else + noremap L Lg0:redraw:file + au VimEnter * normal! Lg0 +endif + +" When reading from stdin don't consider the file modified. +au VimEnter * set nomod + +" Can't modify the text +set noma + +" Give help +noremap h :call Help() +map H h +fun! s:Help() + echo " One page forward b One page backward" + echo "d Half a page forward u Half a page backward" + echo " One line forward k One line backward" + echo "G End of file g Start of file" + echo "N% percentage in file" + echo "\n" + echo "/pattern Search for pattern ?pattern Search backward for pattern" + echo "n next pattern match N Previous pattern match" + echo "\n" + echo ":n Next file :p Previous file" + echo "\n" + echo "q Quit v Edit file" + let i = input("Hit Enter to continue") +endfun + +" Scroll one page forward +noremap " + \ ]) + +call extend(s:lines, [""]) +if !empty(s:settings.prevent_copy) + call extend(s:lines, + \ ["", + \ "", + \ "
0
", + \ "
", + \ "
" + \ ]) +else + call extend(s:lines, [""]) +endif +if s:settings.no_pre + " if we're not using CSS we use a font tag which can't have a div inside + if s:settings.use_css + call extend(s:lines, ["
"]) + endif +else + call extend(s:lines, ["
"])
+endif
+
+exe s:orgwin . "wincmd w"
+
+" caches of style data
+" initialize to include line numbers if using them
+if s:settings.number_lines
+  let s:stylelist = { s:LINENR_ID : ".LineNr { " . s:CSS1( s:LINENR_ID ) . "}" }
+else
+  let s:stylelist = {}
+endif
+let s:diffstylelist = {
+      \   s:DIFF_A_ID : ".DiffAdd { " . s:CSS1( s:DIFF_A_ID ) . "}",
+      \   s:DIFF_C_ID : ".DiffChange { " . s:CSS1( s:DIFF_C_ID ) . "}",
+      \   s:DIFF_D_ID : ".DiffDelete { " . s:CSS1( s:DIFF_D_ID ) . "}",
+      \   s:DIFF_T_ID : ".DiffText { " . s:CSS1( s:DIFF_T_ID ) . "}"
+      \ }
+
+" set up progress bar in the status line
+if !s:settings.no_progress
+  " ProgressBar Indicator
+  let s:progressbar={}
+
+  " Progessbar specific functions
+  func! s:ProgressBar(title, max_value, winnr)
+    let pgb=copy(s:progressbar)
+    let pgb.title = a:title.' '
+    let pgb.max_value = a:max_value
+    let pgb.winnr = a:winnr
+    let pgb.cur_value = 0
+    let pgb.items = { 'title'   : { 'color' : 'Statusline' },
+	  \'bar'     : { 'color' : 'Statusline' , 'fillcolor' : 'DiffDelete' , 'bg' : 'Statusline' } ,
+	  \'counter' : { 'color' : 'Statusline' } }
+    let pgb.last_value = 0
+    let pgb.needs_redraw = 0
+    " Note that you must use len(split) instead of len() if you want to use 
+    " unicode in title.
+    "
+    " Subtract 3 for spacing around the title.
+    " Subtract 4 for the percentage display.
+    " Subtract 2 for spacing before this.
+    " Subtract 2 more for the '|' on either side of the progress bar
+    let pgb.subtractedlen=len(split(pgb.title, '\zs'))+3+4+2+2
+    let pgb.max_len = 0
+    set laststatus=2
+    return pgb
+  endfun
+
+  " Function: progressbar.calculate_ticks() {{{1
+  func! s:progressbar.calculate_ticks(pb_len)
+    if a:pb_len<=0
+      let pb_len = 100
+    else
+      let pb_len = a:pb_len
+    endif
+    let self.progress_ticks = map(range(pb_len+1), "v:val * self.max_value / pb_len")
+  endfun
+
+  "Function: progressbar.paint()
+  func! s:progressbar.paint()
+    " Recalculate widths.
+    let max_len = winwidth(self.winnr)
+    let pb_len = 0
+    " always true on first call because of initial value of self.max_len
+    if max_len != self.max_len
+      let self.max_len = max_len
+
+      " Progressbar length
+      let pb_len = max_len - self.subtractedlen
+
+      call self.calculate_ticks(pb_len)
+
+      let self.needs_redraw = 1
+      let cur_value = 0
+      let self.pb_len = pb_len
+    else
+      " start searching at the last found index to make the search for the
+      " appropriate tick value normally take 0 or 1 comparisons
+      let cur_value = self.last_value
+      let pb_len = self.pb_len
+    endif
+
+    let cur_val_max = pb_len > 0 ? pb_len : 100
+
+    " find the current progress bar position based on precalculated thresholds
+    while cur_value < cur_val_max && self.cur_value > self.progress_ticks[cur_value]
+      let cur_value += 1
+    endwhile
+
+    " update progress bar
+    if self.last_value != cur_value || self.needs_redraw || self.cur_value == self.max_value
+      let self.needs_redraw = 1
+      let self.last_value = cur_value
+
+      let t_color  = self.items.title.color
+      let b_fcolor = self.items.bar.fillcolor
+      let b_color  = self.items.bar.color
+      let c_color  = self.items.counter.color
+
+      let stl =  "%#".t_color."#%-( ".self.title." %)".
+	    \"%#".b_color."#".
+	    \(pb_len>0 ?
+	    \	('|%#'.b_fcolor."#%-(".repeat(" ",cur_value)."%)".
+	    \	 '%#'.b_color."#".repeat(" ",pb_len-cur_value)."|"):
+	    \	('')).
+	    \"%=%#".c_color."#%( ".printf("%3.d ",100*self.cur_value/self.max_value)."%% %)"
+      call setwinvar(self.winnr, '&stl', stl)
+    endif
+  endfun
+
+  func! s:progressbar.incr( ... )
+    let self.cur_value += (a:0 ? a:1 : 1)
+    " if we were making a general-purpose progress bar, we'd need to limit to a
+    " lower limit as well, but since we always increment with a positive value
+    " in this script, we only need limit the upper value
+    let self.cur_value = (self.cur_value > self.max_value ? self.max_value : self.cur_value)
+    call self.paint()
+  endfun
+  " }}}
+  if s:settings.dynamic_folds
+    " to process folds we make two passes through each line
+    let s:pgb = s:ProgressBar("Processing folds:", line('$')*2, s:orgwin)
+  endif
+endif
+
+" First do some preprocessing for dynamic folding. Do this for the entire file
+" so we don't accidentally start within a closed fold or something.
+let s:allfolds = []
+
+if s:settings.dynamic_folds
+  let s:lnum = 1
+  let s:end = line('$')
+  " save the fold text and set it to the default so we can find fold levels
+  let s:foldtext_save = &foldtext
+  setlocal foldtext&
+
+  " we will set the foldcolumn in the html to the greater of the maximum fold
+  " level and the current foldcolumn setting
+  let s:foldcolumn = &foldcolumn
+
+  " get all info needed to describe currently closed folds
+  while s:lnum <= s:end
+    if foldclosed(s:lnum) == s:lnum
+      " default fold text has '+-' and then a number of dashes equal to fold
+      " level, so subtract 2 from index of first non-dash after the dashes
+      " in order to get the fold level of the current fold
+      let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
+      " store fold info for later use
+      let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
+      call add(s:allfolds, s:newfold)
+      " open the fold so we can find any contained folds
+      execute s:lnum."foldopen"
+    else
+      if !s:settings.no_progress
+	call s:pgb.incr()
+	if s:pgb.needs_redraw
+	  redrawstatus
+	  let s:pgb.needs_redraw = 0
+	endif
+      endif
+      let s:lnum = s:lnum + 1
+    endif
+  endwhile
+
+  " close all folds to get info for originally open folds
+  silent! %foldclose!
+  let s:lnum = 1
+
+  " the originally open folds will be all folds we encounter that aren't
+  " already in the list of closed folds
+  while s:lnum <= s:end
+    if foldclosed(s:lnum) == s:lnum
+      " default fold text has '+-' and then a number of dashes equal to fold
+      " level, so subtract 2 from index of first non-dash after the dashes
+      " in order to get the fold level of the current fold
+      let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
+      let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
+      " only add the fold if we don't already have it
+      if empty(s:allfolds) || index(s:allfolds, s:newfold) == -1
+	let s:newfold.type = "open-fold"
+	call add(s:allfolds, s:newfold)
+      endif
+      " open the fold so we can find any contained folds
+      execute s:lnum."foldopen"
+    else
+      if !s:settings.no_progress
+	call s:pgb.incr()
+	if s:pgb.needs_redraw
+	  redrawstatus
+	  let s:pgb.needs_redraw = 0
+	endif
+      endif
+      let s:lnum = s:lnum + 1
+    endif
+  endwhile
+
+  " sort the folds so that we only ever need to look at the first item in the
+  " list of folds
+  call sort(s:allfolds, "s:FoldCompare")
+
+  let &l:foldtext = s:foldtext_save
+  unlet s:foldtext_save
+
+  " close all folds again so we can get the fold text as we go
+  silent! %foldclose!
+
+  " Go through and remove folds we don't need to (or cannot) process in the
+  " current conversion range
+  "
+  " If a fold is removed which contains other folds, which are included, we need
+  " to adjust the level of the included folds as used by the conversion logic
+  " (avoiding special cases is good)
+  "
+  " Note any time we remove a fold, either all of the included folds are in it,
+  " or none of them, because we only remove a fold if neither its start nor its
+  " end are within the conversion range.
+  let leveladjust = 0
+  for afold in s:allfolds
+    let removed = 0
+    if exists("g:html_start_line") && exists("g:html_end_line")
+      if afold.firstline < g:html_start_line
+	if afold.lastline <= g:html_end_line && afold.lastline >= g:html_start_line
+	  " if a fold starts before the range to convert but stops within the
+	  " range, we need to include it. Make it start on the first converted
+	  " line.
+	  let afold.firstline = g:html_start_line
+	else
+	  " if the fold lies outside the range or the start and stop enclose
+	  " the entire range, don't bother parsing it
+	  call remove(s:allfolds, index(s:allfolds, afold))
+	  let removed = 1
+	  if afold.lastline > g:html_end_line
+	    let leveladjust += 1
+	  endif
+	endif
+      elseif afold.firstline > g:html_end_line
+	" If the entire fold lies outside the range we need to remove it.
+	call remove(s:allfolds, index(s:allfolds, afold))
+	let removed = 1
+      endif
+    elseif exists("g:html_start_line")
+      if afold.firstline < g:html_start_line
+	" if there is no last line, but there is a first line, the end of the
+	" fold will always lie within the region of interest, so keep it
+	let afold.firstline = g:html_start_line
+      endif
+    elseif exists("g:html_end_line")
+      " if there is no first line we default to the first line in the buffer so
+      " the fold start will always be included if the fold itself is included.
+      " If however the entire fold lies outside the range we need to remove it.
+      if afold.firstline > g:html_end_line
+	call remove(s:allfolds, index(s:allfolds, afold))
+	let removed = 1
+      endif
+    endif
+    if !removed
+      let afold.level -= leveladjust
+      if afold.level+1 > s:foldcolumn
+	let s:foldcolumn = afold.level+1
+      endif
+    endif
+  endfor
+
+  " if we've removed folds containing the conversion range from processing,
+  " getting foldtext as we go won't know to open the removed folds, so the
+  " foldtext would be wrong; open them now.
+  "
+  " Note that only when a start and an end line is specified will a fold
+  " containing the current range ever be removed.
+  while leveladjust > 0
+    exe g:html_start_line."foldopen"
+    let leveladjust -= 1
+  endwhile
+endif
+
+" Now loop over all lines in the original text to convert to html.
+" Use html_start_line and html_end_line if they are set.
+if exists("g:html_start_line")
+  let s:lnum = html_start_line
+  if s:lnum < 1 || s:lnum > line("$")
+    let s:lnum = 1
+  endif
+else
+  let s:lnum = 1
+endif
+if exists("g:html_end_line")
+  let s:end = html_end_line
+  if s:end < s:lnum || s:end > line("$")
+    let s:end = line("$")
+  endif
+else
+  let s:end = line("$")
+endif
+
+" stack to keep track of all the folds containing the current line
+let s:foldstack = []
+
+if !s:settings.no_progress
+  let s:pgb = s:ProgressBar("Processing lines:", s:end - s:lnum + 1, s:orgwin)
+endif
+
+if s:settings.number_lines
+  let s:margin = strlen(s:end) + 1
+else
+  let s:margin = 0
+endif
+
+if has('folding') && !s:settings.ignore_folding
+  let s:foldfillchar = &fillchars[matchend(&fillchars, 'fold:')]
+  if s:foldfillchar == ''
+    let s:foldfillchar = '-'
+  endif
+endif
+let s:difffillchar = &fillchars[matchend(&fillchars, 'diff:')]
+if s:difffillchar == ''
+  let s:difffillchar = '-'
+endif
+
+let s:foldId = 0
+
+if !s:settings.expand_tabs
+  " If keeping tabs, add them to printable characters so we keep them when
+  " formatting text (strtrans() doesn't replace printable chars)
+  let s:old_isprint = &isprint
+  setlocal isprint+=9
+endif
+
+while s:lnum <= s:end
+
+  " If there are filler lines for diff mode, show these above the line.
+  let s:filler = diff_filler(s:lnum)
+  if s:filler > 0
+    let s:n = s:filler
+    while s:n > 0
+      let s:new = repeat(s:difffillchar, 3)
+
+      if s:n > 2 && s:n < s:filler && !s:settings.whole_filler
+	let s:new = s:new . " " . s:filler . " inserted lines "
+	let s:n = 2
+      endif
+
+      if !s:settings.no_pre
+	" HTML line wrapping is off--go ahead and fill to the margin
+	" TODO: what about when CSS wrapping is turned on?
+	let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new) - s:margin)
+      else
+	let s:new = s:new . repeat(s:difffillchar, 3)
+      endif
+
+      let s:new = s:HtmlFormat_d(s:new, s:DIFF_D_ID, 0)
+      if s:settings.number_lines
+	" Indent if line numbering is on. Indent gets style of line number
+	" column.
+	let s:new = s:HtmlFormat_n(repeat(' ', s:margin), s:LINENR_ID, 0, 0) . s:new
+      endif
+      if s:settings.dynamic_folds && !s:settings.no_foldcolumn && s:foldcolumn > 0
+	" Indent for foldcolumn if there is one. Assume it's empty, there should
+	" not be a fold for deleted lines in diff mode.
+	let s:new = s:FoldColumn_fill() . s:new
+      endif
+      call add(s:lines, s:new.s:HtmlEndline)
+
+      let s:n = s:n - 1
+    endwhile
+    unlet s:n
+  endif
+  unlet s:filler
+
+  " Start the line with the line number.
+  if s:settings.number_lines
+    let s:numcol = repeat(' ', s:margin - 1 - strlen(s:lnum)) . s:lnum . ' '
+  endif
+
+  let s:new = ""
+
+  if has('folding') && !s:settings.ignore_folding && foldclosed(s:lnum) > -1 && !s:settings.dynamic_folds
+    "
+    " This is the beginning of a folded block (with no dynamic folding)
+    let s:new = foldtextresult(s:lnum)
+    if !s:settings.no_pre
+      " HTML line wrapping is off--go ahead and fill to the margin
+      let s:new = s:new . repeat(s:foldfillchar, &columns - strlen(s:new))
+    endif
+
+    " put numcol in a separate group for sake of unselectable text
+    let s:new = (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, s:lnum): "") . s:HtmlFormat_t(s:new, s:FOLDED_ID, 0)
+
+    " Skip to the end of the fold
+    let s:new_lnum = foldclosedend(s:lnum)
+
+    if !s:settings.no_progress
+      call s:pgb.incr(s:new_lnum - s:lnum)
+    endif
+
+    let s:lnum = s:new_lnum
+
+  else
+    "
+    " A line that is not folded, or doing dynamic folding.
+    "
+    let s:line = getline(s:lnum)
+    let s:len = strlen(s:line)
+
+    if s:settings.dynamic_folds
+      " First insert a closing for any open folds that end on this line
+      while !empty(s:foldstack) && get(s:foldstack,0).lastline == s:lnum-1
+	let s:new = s:new.""
+	call remove(s:foldstack, 0)
+      endwhile
+
+      " Now insert an opening for any new folds that start on this line
+      let s:firstfold = 1
+      while !empty(s:allfolds) && get(s:allfolds,0).firstline == s:lnum
+	let s:foldId = s:foldId + 1
+	let s:new .= ""
+
+
+	" Unless disabled, add a fold column for the opening line of a fold.
+	"
+	" Note that dynamic folds require using css so we just use css to take
+	" care of the leading spaces rather than using   in the case of
+	" html_no_pre to make it easier
+	if !s:settings.no_foldcolumn
+	  " add fold column that can open the new fold
+	  if s:allfolds[0].level > 1 && s:firstfold
+	    let s:new = s:new . s:FoldColumn_build('|', s:allfolds[0].level - 1, 0, "",
+		  \ 'toggle-open FoldColumn','javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
+	  endif
+	  " add the filler spaces separately from the '+' char so that it can be
+	  " shown/hidden separately during a hover unfold
+	  let s:new = s:new . s:FoldColumn_build("+", 1, 0, "",
+		\ 'toggle-open FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+	  " If this is not the last fold we're opening on this line, we need
+	  " to keep the filler spaces hidden if the fold is opened by mouse
+	  " hover. If it is the last fold to open in the line, we shouldn't hide
+	  " them, so don't apply the toggle-filler class.
+	  let s:new = s:new . s:FoldColumn_build(" ", 1, s:foldcolumn - s:allfolds[0].level - 1, "",
+		\ 'toggle-open FoldColumn'. (get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum ?" toggle-filler" :""),
+		\ 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+
+	  " add fold column that can close the new fold
+	  " only add extra blank space if we aren't opening another fold on the
+	  " same line
+	  if get(s:allfolds, 1, {'firstline': 0}).firstline != s:lnum
+	    let s:extra_space = s:foldcolumn - s:allfolds[0].level
+	  else
+	    let s:extra_space = 0
+	  endif
+	  if s:firstfold
+	    " the first fold in a line has '|' characters from folds opened in
+	    " previous lines, before the '-' for this fold
+	    let s:new .= s:FoldColumn_build('|', s:allfolds[0].level - 1, s:extra_space, '-',
+		  \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+	  else
+	    " any subsequent folds in the line only add a single '-'
+	    let s:new = s:new . s:FoldColumn_build("-", 1, s:extra_space, "",
+		  \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+	  endif
+	  let s:firstfold = 0
+	endif
+
+	" Add fold text, moving the span ending to the next line so collapsing
+	" of folds works correctly.
+	" Put numcol in a separate group for sake of unselectable text.
+	let s:new = s:new . (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, 0) : "") . substitute(s:HtmlFormat_t(foldtextresult(s:lnum), s:FOLDED_ID, 0), '', s:HtmlEndline.'\n\0', '')
+	let s:new = s:new . ""
+
+	" open the fold now that we have the fold text to allow retrieval of
+	" fold text for subsequent folds
+	execute s:lnum."foldopen"
+	call insert(s:foldstack, remove(s:allfolds,0))
+	let s:foldstack[0].id = s:foldId
+      endwhile
+
+      " Unless disabled, add a fold column for other lines.
+      "
+      " Note that dynamic folds require using css so we just use css to take
+      " care of the leading spaces rather than using   in the case of
+      " html_no_pre to make it easier
+      if !s:settings.no_foldcolumn
+	if empty(s:foldstack)
+	  " add the empty foldcolumn for unfolded lines if there is a fold
+	  " column at all
+	  if s:foldcolumn > 0
+	    let s:new = s:new . s:FoldColumn_fill()
+	  endif
+	else
+	  " add the fold column for folds not on the opening line
+	  if get(s:foldstack, 0).firstline < s:lnum
+	    let s:new = s:new . s:FoldColumn_build('|', s:foldstack[0].level, s:foldcolumn - s:foldstack[0].level, "",
+		  \ 'FoldColumn', 'javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
+	  endif
+	endif
+      endif
+    endif
+
+    " Now continue with the unfolded line text
+    if s:settings.number_lines
+      let s:new = s:new . s:HtmlFormat_n(s:numcol, s:LINENR_ID, 0, s:lnum)
+    elseif s:settings.line_ids
+      let s:new = s:new . s:HtmlFormat_n("", s:LINENR_ID, 0, s:lnum)
+    endif
+
+    " Get the diff attribute, if any.
+    let s:diffattr = diff_hlID(s:lnum, 1)
+
+    " initialize conceal info to act like not concealed, just in case
+    let s:concealinfo = [0, '']
+
+    " Loop over each character in the line
+    let s:col = 1
+
+    " most of the time we won't use the diff_id, initialize to zero
+    let s:diff_id = 0
+
+    while s:col <= s:len || (s:col == 1 && s:diffattr)
+      let s:startcol = s:col " The start column for processing text
+      if !s:settings.ignore_conceal && has('conceal')
+	let s:concealinfo = synconcealed(s:lnum, s:col)
+      endif
+      if !s:settings.ignore_conceal && s:concealinfo[0]
+	let s:col = s:col + 1
+	" Speed loop (it's small - that's the trick)
+	" Go along till we find a change in the match sequence number (ending
+	" the specific concealed region) or until there are no more concealed
+	" characters.
+	while s:col <= s:len && s:concealinfo == synconcealed(s:lnum, s:col) | let s:col = s:col + 1 | endwhile
+      elseif s:diffattr
+	let s:diff_id = diff_hlID(s:lnum, s:col)
+	let s:id = synID(s:lnum, s:col, 1)
+	let s:col = s:col + 1
+	" Speed loop (it's small - that's the trick)
+	" Go along till we find a change in hlID
+	while s:col <= s:len && s:id == synID(s:lnum, s:col, 1)
+	      \   && s:diff_id == diff_hlID(s:lnum, s:col) |
+	      \     let s:col = s:col + 1 |
+	      \ endwhile
+	if s:len < &columns && !s:settings.no_pre
+	  " Add spaces at the end of the raw text line to extend the changed
+	  " line to the full width.
+	  let s:line = s:line . repeat(' ', &columns - virtcol([s:lnum, s:len]) - s:margin)
+	  let s:len = &columns
+	endif
+      else
+	let s:id = synID(s:lnum, s:col, 1)
+	let s:col = s:col + 1
+	" Speed loop (it's small - that's the trick)
+	" Go along till we find a change in synID
+	while s:col <= s:len && s:id == synID(s:lnum, s:col, 1) | let s:col = s:col + 1 | endwhile
+      endif
+
+      if s:settings.ignore_conceal || !s:concealinfo[0]
+	" Expand tabs if needed
+	let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol)
+	if s:settings.expand_tabs
+	  let s:offset = 0
+	  let s:idx = stridx(s:expandedtab, "\t")
+	  while s:idx >= 0
+	    if has("multi_byte_encoding")
+	      if s:startcol + s:idx == 1
+		let s:i = &ts
+	      else
+		if s:idx == 0
+		  let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:idx + s:offset) . 'c')
+		else
+		  let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
+		endif
+		let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
+		let s:i = &ts - (s:vcol % &ts)
+	      endif
+	      let s:offset -= s:i - 1
+	    else
+	      let s:i = &ts - ((s:idx + s:startcol - 1) % &ts)
+	    endif
+	    let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
+	    let s:idx = stridx(s:expandedtab, "\t")
+	  endwhile
+	end
+
+	" get the highlight group name to use
+	let s:id = synIDtrans(s:id)
+      else
+	" use Conceal highlighting for concealed text
+	let s:id = s:CONCEAL_ID
+	let s:expandedtab = s:concealinfo[1]
+      endif
+
+      " Output the text with the same synID, with class set to the highlight ID
+      " name, unless it has been concealed completely.
+      if strlen(s:expandedtab) > 0
+	let s:new = s:new . s:HtmlFormat(s:expandedtab,  s:id, s:diff_id, "", 0)
+      endif
+    endwhile
+  endif
+
+  call extend(s:lines, split(s:new.s:HtmlEndline, '\n', 1))
+  if !s:settings.no_progress && s:pgb.needs_redraw
+    redrawstatus
+    let s:pgb.needs_redraw = 0
+  endif
+  let s:lnum = s:lnum + 1
+
+  if !s:settings.no_progress
+    call s:pgb.incr()
+  endif
+endwhile
+
+if s:settings.dynamic_folds
+  " finish off any open folds
+  while !empty(s:foldstack)
+    let s:lines[-1].=""
+    call remove(s:foldstack, 0)
+  endwhile
+
+  " add fold column to the style list if not already there
+  let s:id = s:FOLD_C_ID
+  if !has_key(s:stylelist, s:id)
+    let s:stylelist[s:id] = '.FoldColumn { ' . s:CSS1(s:id) . '}'
+  endif
+endif
+
+if s:settings.no_pre
+  if !s:settings.use_css
+    " Close off the font tag that encapsulates the whole 
+    call extend(s:lines, ["", "", ""])
+  else
+    call extend(s:lines, ["
", "", ""]) + endif +else + call extend(s:lines, ["
", "", ""]) +endif + +exe s:newwin . "wincmd w" +call setline(1, s:lines) +unlet s:lines + +" Mangle modelines so Vim doesn't try to use HTML text as a modeline if editing +" this file in the future; need to do this after generating all the text in case +" the modeline text has different highlight groups which all turn out to be +" stripped from the final output. +%s!\v(%(^|\s+)%([Vv]i%(m%([<=>]?\d+)?)?|ex)):!\1\:!ge + +" The generated HTML is admittedly ugly and takes a LONG time to fold. +" Make sure the user doesn't do syntax folding when loading a generated file, +" using a modeline. +call append(line('$'), "") + +" Now, when we finally know which, we define the colors and styles +if s:settings.use_css + 1;/+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc + syn match htmlCssStyleComment contained "\(\)" + syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc + HtmlHiLink htmlStyleArg htmlString +endif + +if main_syntax == "html" + " synchronizing (does not always work if a comment includes legal + " html tags, but doing it right would mean to always start + " at the first line, which is too slow) + syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]" + syn sync match htmlHighlight groupthere javaScript "= 508 || !exists("did_html_syn_inits") + if version < 508 + let did_html_syn_inits = 1 + endif + HtmlHiLink htmlTag Function + HtmlHiLink htmlEndTag Identifier + HtmlHiLink htmlArg Type + HtmlHiLink htmlTagName htmlStatement + HtmlHiLink htmlSpecialTagName Exception + HtmlHiLink htmlValue String + HtmlHiLink htmlSpecialChar Special + + if !exists("html_no_rendering") + HtmlHiLink htmlH1 Title + HtmlHiLink htmlH2 htmlH1 + HtmlHiLink htmlH3 htmlH2 + HtmlHiLink htmlH4 htmlH3 + HtmlHiLink htmlH5 htmlH4 + HtmlHiLink htmlH6 htmlH5 + HtmlHiLink htmlHead PreProc + HtmlHiLink htmlTitle Title + HtmlHiLink htmlBoldItalicUnderline htmlBoldUnderlineItalic + HtmlHiLink htmlUnderlineBold htmlBoldUnderline + HtmlHiLink htmlUnderlineItalicBold htmlBoldUnderlineItalic + HtmlHiLink htmlUnderlineBoldItalic htmlBoldUnderlineItalic + HtmlHiLink htmlItalicUnderline htmlUnderlineItalic + HtmlHiLink htmlItalicBold htmlBoldItalic + HtmlHiLink htmlItalicBoldUnderline htmlBoldUnderlineItalic + HtmlHiLink htmlItalicUnderlineBold htmlBoldUnderlineItalic + HtmlHiLink htmlLink Underlined + HtmlHiLink htmlLeadingSpace None + if !exists("html_my_rendering") + hi def htmlBold term=bold cterm=bold gui=bold + hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline + hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic + hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline + hi def htmlUnderline term=underline cterm=underline gui=underline + hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline + hi def htmlItalic term=italic cterm=italic gui=italic + endif + endif + + HtmlHiLink htmlPreStmt PreProc + HtmlHiLink htmlPreError Error + HtmlHiLink htmlPreProc PreProc + HtmlHiLink htmlPreAttr String + HtmlHiLink htmlPreProcAttrName PreProc + HtmlHiLink htmlPreProcAttrError Error + HtmlHiLink htmlSpecial Special + HtmlHiLink htmlSpecialChar Special + HtmlHiLink htmlString String + HtmlHiLink htmlStatement Statement + HtmlHiLink htmlComment Comment + HtmlHiLink htmlCommentPart Comment + HtmlHiLink htmlValue String + HtmlHiLink htmlCommentError htmlError + HtmlHiLink htmlTagError htmlError + HtmlHiLink htmlEvent javaScript + HtmlHiLink htmlError Error + + HtmlHiLink javaScript Special + HtmlHiLink javaScriptExpression javaScript + HtmlHiLink htmlCssStyleComment Comment + HtmlHiLink htmlCssDefinition Special +endif + +delcommand HtmlHiLink + +let b:current_syntax = "html" + +if main_syntax == 'html' + unlet main_syntax +endif + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: ts=8 diff --git a/share/vim/vim73/syntax/htmlcheetah.vim b/share/vim/vim74/syntax/htmlcheetah.vim similarity index 100% rename from share/vim/vim73/syntax/htmlcheetah.vim rename to share/vim/vim74/syntax/htmlcheetah.vim diff --git a/share/vim/vim73/syntax/htmldjango.vim b/share/vim/vim74/syntax/htmldjango.vim similarity index 100% rename from share/vim/vim73/syntax/htmldjango.vim rename to share/vim/vim74/syntax/htmldjango.vim diff --git a/share/vim/vim73/syntax/htmlm4.vim b/share/vim/vim74/syntax/htmlm4.vim similarity index 100% rename from share/vim/vim73/syntax/htmlm4.vim rename to share/vim/vim74/syntax/htmlm4.vim diff --git a/share/vim/vim73/syntax/htmlos.vim b/share/vim/vim74/syntax/htmlos.vim similarity index 100% rename from share/vim/vim73/syntax/htmlos.vim rename to share/vim/vim74/syntax/htmlos.vim diff --git a/share/vim/vim73/syntax/ia64.vim b/share/vim/vim74/syntax/ia64.vim similarity index 100% rename from share/vim/vim73/syntax/ia64.vim rename to share/vim/vim74/syntax/ia64.vim diff --git a/share/vim/vim73/syntax/ibasic.vim b/share/vim/vim74/syntax/ibasic.vim similarity index 100% rename from share/vim/vim73/syntax/ibasic.vim rename to share/vim/vim74/syntax/ibasic.vim diff --git a/share/vim/vim73/syntax/icemenu.vim b/share/vim/vim74/syntax/icemenu.vim similarity index 100% rename from share/vim/vim73/syntax/icemenu.vim rename to share/vim/vim74/syntax/icemenu.vim diff --git a/share/vim/vim73/syntax/icon.vim b/share/vim/vim74/syntax/icon.vim similarity index 100% rename from share/vim/vim73/syntax/icon.vim rename to share/vim/vim74/syntax/icon.vim diff --git a/share/vim/vim74/syntax/idl.vim b/share/vim/vim74/syntax/idl.vim new file mode 100644 index 00000000..c51850b1 --- /dev/null +++ b/share/vim/vim74/syntax/idl.vim @@ -0,0 +1,326 @@ +" Vim syntax file +" Language: IDL (Interface Description Language) +" Created By: Jody Goldberg +" Maintainer: Michael Geddes +" Last Change: 2012 Jan 11 + + +" This is an experiment. IDL's structure is simple enough to permit a full +" grammar based approach to rather than using a few heuristics. The result +" is large and somewhat repetative but seems to work. + +" There are some Microsoft extensions to idl files that are here. Some of +" them are disabled by defining idl_no_ms_extensions. +" +" The more complex of the extensions are disabled by defining idl_no_extensions. +" +" History: +" 2.0: Michael's new version +" 2.1: Support for Vim 7 spell (Anduin Withers) +" + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +try + set cpo&vim + + if exists("idlsyntax_showerror") + syn match idlError +\S+ skipwhite skipempty nextgroup=idlError + endif + + syn region idlCppQuote start='\]*>" + syn match idlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString + syn region idlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=idlComment,idlCommentError + syn region idlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral,idlString + + " Constants + syn keyword idlConst const skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt + + " Attribute + syn keyword idlROAttr readonly skipempty skipwhite nextgroup=idlAttr + syn keyword idlAttr attribute skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType + + " Types + syn region idlD4 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral + syn keyword idlSeqType contained sequence skipempty skipwhite nextgroup=idlD4 + syn keyword idlBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlSimpDecl + syn keyword idlBaseTypeInt contained short long skipempty skipwhite nextgroup=idlSimpDecl + syn keyword idlBaseType contained unsigned skipempty skipwhite nextgroup=idlBaseTypeInt + syn region idlD1 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlString,idlLiteral + syn keyword idlBaseType contained string skipempty skipwhite nextgroup=idlD1,idlSimpDecl + syn match idlBaseType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlSimpDecl + + " Modules + syn region idlModuleContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule + syn match idlModuleName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlModuleContent,idlError,idlSemiColon + syn keyword idlModule module skipempty skipwhite nextgroup=idlModuleName + + " Interfaces + syn cluster idlCommentable contains=idlComment + syn cluster idlContentCluster contains=idlUnion,idlStruct,idlEnum,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlInterfaceSections + + syn region idlInterfaceContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable + syn match idlInheritFrom2 contained "," skipempty skipwhite nextgroup=idlInheritFrom + syn match idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent + syn match idlInherit contained ":" skipempty skipwhite nextgroup=idlInheritFrom + syn match idlInterfaceName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlError,idlSemiColon + syn keyword idlInterface interface dispinterface skipempty skipwhite nextgroup=idlInterfaceName + syn keyword idlInterfaceSections contained properties methods skipempty skipwhite nextgroup=idlSectionColon,idlError + syn match idlSectionColon contained ":" + + + syn match idlLibraryName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlLibraryContent,idlError,idlSemiColon + syn keyword idlLibrary library skipempty skipwhite nextgroup=idlLibraryName + syn region idlLibraryContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlCommentable,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlImportlib,idlCoclass,idlTypedef,idlInterface + + syn keyword idlImportlib contained importlib skipempty skipwhite nextgroup=idlStringArg + syn region idlStringArg contained start="(" end=")" contains=idlString nextgroup=idlError,idlSemiColon,idlErrorBrace,idlErrorSquareBracket + + syn keyword idlCoclass coclass contained skipempty skipwhite nextgroup=idlCoclassName + syn match idlCoclassName "[a-zA-Z0-9_]\+" contained skipempty skipwhite nextgroup=idlCoclassDefinition,idlError,idlSemiColon + + syn region idlCoclassDefinition contained start="{" end="}" contains=idlCoclassAttributes,idlInterface,idlErrorBracket,idlErrorSquareBracket skipempty skipwhite nextgroup=idlError,idlSemiColon + syn region idlCoclassAttributes contained start=+\[+ end=+]+ skipempty skipwhite nextgroup=idlInterface contains=idlErrorBracket,idlErrorBrace,idlCoclassAttribute + syn keyword idlCoclassAttribute contained default source + "syn keyword idlInterface interface skipempty skipwhite nextgroup=idlInterfaceStubName + + syn match idlImportString +"\f\+"+ skipempty skipwhite nextgroup=idlError,idlSemiColon + syn keyword idlImport import skipempty skipwhite nextgroup=idlImportString + + syn region idlAttributes start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace,idlComment + syn keyword idlAttribute contained propput propget propputref id helpstring object uuid pointer_default + if !exists('idl_no_ms_extensions') + syn keyword idlAttribute contained nonextensible dual version aggregatable restricted hidden noncreatable oleautomation + endif + syn region idlAttributeParam contained start="(" end=")" contains=idlString,idlUuid,idlLiteral,idlErrorBrace,idlErrorSquareBracket + " skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral + syn match idlErrorBrace contained "}" + syn match idlErrorBracket contained ")" + syn match idlErrorSquareBracket contained "\]" + + syn match idlUuid contained +[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}+ + + " Raises + syn keyword idlRaises contained raises skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon + + " Context + syn keyword idlContext contained context skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon + + " Operation + syn match idlParmList contained "," skipempty skipwhite nextgroup=idlOpParms + syn region idlArraySize contained start="\[" end="\]" skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral + syn match idlParmName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlParmList,idlArraySize + syn keyword idlParmInt contained short long skipempty skipwhite nextgroup=idlParmName + syn keyword idlParmType contained unsigned skipempty skipwhite nextgroup=idlParmInt + syn region idlD3 contained start="<" end=">" skipempty skipwhite nextgroup=idlParmName contains=idlString,idlLiteral + syn keyword idlParmType contained string skipempty skipwhite nextgroup=idlD3,idlParmName + syn keyword idlParmType contained void float double char boolean octet any skipempty skipwhite nextgroup=idlParmName + syn match idlParmType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName + syn keyword idlOpParms contained in out inout skipempty skipwhite nextgroup=idlParmType + + if !exists('idl_no_ms_extensions') + syn keyword idlOpParms contained retval optional skipempty skipwhite nextgroup=idlParmType + syn match idlOpParms contained +\<\(iid_is\|defaultvalue\)\s*([^)]*)+ skipempty skipwhite nextgroup=idlParamType + + syn keyword idlVariantType contained BSTR VARIANT VARIANT_BOOL long short unsigned double CURRENCY DATE + syn region idlSafeArray contained matchgroup=idlVariantType start=+SAFEARRAY(\s*+ end=+)+ contains=idlVariantType + endif + + syn region idlOpContents contained start="(" end=")" skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon contains=idlOpParms,idlSafeArray,idlVariantType,@idlCommentable + syn match idlOpName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlOpContents + syn keyword idlOpInt contained short long skipempty skipwhite nextgroup=idlOpName + syn region idlD2 contained start="<" end=">" skipempty skipwhite nextgroup=idlOpName contains=idlString,idlLiteral + syn keyword idlOp contained unsigned skipempty skipwhite nextgroup=idlOpInt + syn keyword idlOp contained string skipempty skipwhite nextgroup=idlD2,idlOpName + syn keyword idlOp contained void float double char boolean octet any skipempty skipwhite nextgroup=idlOpName + syn match idlOp contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlOpName + syn keyword idlOp contained void skipempty skipwhite nextgroup=idlOpName + syn keyword idlOneWayOp contained oneway skipempty skipwhite nextgroup=idOp + + " Enum + syn region idlEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlId,idlAttributes,@idlCommentable + syn match idlEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlEnumContents + syn keyword idlEnum enum skipempty skipwhite nextgroup=idlEnumName,idlEnumContents + + " Typedef + syn keyword idlTypedef typedef skipempty skipwhite nextgroup=idlTypedefOtherTypeQualifier,idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError + + if !exists('idl_no_extensions') + syn keyword idlTypedefOtherTypeQualifier contained struct enum interface nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError skipwhite + + syn region idlDefAttributes contained start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace skipempty skipwhite nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlError + + syn keyword idlDefBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlTypedefDecl,idlError + syn keyword idlDefBaseTypeInt contained short long skipempty skipwhite nextgroup=idlTypedefDecl,idlError + syn match idlDefOtherType contained +\<\k\+\>+ skipempty nextgroup=idlTypedefDecl,idlError + " syn keyword idlDefSeqType contained sequence skipempty skipwhite nextgroup=idlD4 + + " Enum typedef + syn keyword idlDefEnum contained enum skipempty skipwhite nextgroup=idlDefEnumName,idlDefEnumContents + syn match idlDefEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlDefEnumContents,idlTypedefDecl + syn region idlDefEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlTypedefDecl contains=idlId,idlAttributes + + syn match idlTypedefDecl contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlError,idlSemiColon + endif + + " Struct + syn region idlStructContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlBaseType,idlBaseTypeInt,idlSeqType,@idlCommentable,idlEnum,idlUnion + syn match idlStructName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlStructContent + syn keyword idlStruct struct skipempty skipwhite nextgroup=idlStructName + + " Exception + syn keyword idlException exception skipempty skipwhite nextgroup=idlStructName + + " Union + syn match idlColon contained ":" skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt + syn region idlCaseLabel contained start="" skip="::" end=":"me=e-1 skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString + syn keyword idlCase contained case skipempty skipwhite nextgroup=idlCaseLabel + syn keyword idlCase contained default skipempty skipwhite nextgroup=idlColon + syn region idlUnionContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlCase + syn region idlSwitchType contained start="(" end=")" skipempty skipwhite nextgroup=idlUnionContent + syn keyword idlUnionSwitch contained switch skipempty skipwhite nextgroup=idlSwitchType + syn match idlUnionName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlUnionSwitch + syn keyword idlUnion union skipempty skipwhite nextgroup=idlUnionName + + if !exists('idl_no_extensions') + syn sync match idlInterfaceSync grouphere idlInterfaceContent "\<\(disp\)\=interface\>\s\+\k\+\s*:\s*\k\+\_s*{" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable + syn sync maxlines=1000 minlines=100 + else + syn sync lines=200 + endif + " syn sync fromstart + + if !exists("did_idl_syntax_inits") + let did_idl_syntax_inits = 1 + " The default methods for highlighting. Can be overridden later + command -nargs=+ HiLink hi def link + + HiLink idlInclude Include + HiLink idlPreProc PreProc + HiLink idlPreCondit PreCondit + HiLink idlDefine Macro + HiLink idlIncluded String + HiLink idlString String + HiLink idlComment Comment + HiLink idlTodo Todo + HiLink idlLiteral Number + HiLink idlUuid Number + HiLink idlType Type + HiLink idlVariantType idlType + + HiLink idlModule Keyword + HiLink idlInterface Keyword + HiLink idlEnum Keyword + HiLink idlStruct Keyword + HiLink idlUnion Keyword + HiLink idlTypedef Keyword + HiLink idlException Keyword + HiLink idlTypedefOtherTypeQualifier keyword + + HiLink idlModuleName Typedef + HiLink idlInterfaceName Typedef + HiLink idlEnumName Typedef + HiLink idlStructName Typedef + HiLink idlUnionName Typedef + + HiLink idlBaseTypeInt idlType + HiLink idlBaseType idlType + HiLink idlSeqType idlType + HiLink idlD1 Paren + HiLink idlD2 Paren + HiLink idlD3 Paren + HiLink idlD4 Paren + "HiLink idlArraySize Paren + "HiLink idlArraySize1 Paren + HiLink idlModuleContent Paren + HiLink idlUnionContent Paren + HiLink idlStructContent Paren + HiLink idlEnumContents Paren + HiLink idlInterfaceContent Paren + + HiLink idlSimpDecl Identifier + HiLink idlROAttr StorageClass + HiLink idlAttr Keyword + HiLink idlConst StorageClass + + HiLink idlOneWayOp StorageClass + HiLink idlOp idlType + HiLink idlParmType idlType + HiLink idlOpName Function + HiLink idlOpParms SpecialComment + HiLink idlParmName Identifier + HiLink idlInheritFrom Identifier + HiLink idlAttribute SpecialComment + + HiLink idlId Constant + "HiLink idlCase Keyword + HiLink idlCaseLabel Constant + + HiLink idlErrorBracket Error + HiLink idlErrorBrace Error + HiLink idlErrorSquareBracket Error + + HiLink idlImport Keyword + HiLink idlImportString idlString + HiLink idlCoclassAttribute StorageClass + HiLink idlLibrary Keyword + HiLink idlImportlib Keyword + HiLink idlCoclass Keyword + HiLink idlLibraryName Typedef + HiLink idlCoclassName Typedef + " hi idlLibraryContent guifg=red + HiLink idlTypedefDecl Typedef + HiLink idlDefEnum Keyword + HiLink idlDefv1Enum Keyword + HiLink idlDefEnumName Typedef + HiLink idlDefEnumContents Paren + HiLink idlDefBaseTypeInt idlType + HiLink idlDefBaseType idlType + HiLink idlDefSeqType idlType + HiLink idlInterfaceSections Label + + if exists("idlsyntax_showerror") + if exists("idlsyntax_showerror_soft") + hi default idlError guibg=#d0ffd0 + else + HiLink idlError Error + endif + endif + delcommand HiLink + endif + + let b:current_syntax = "idl" +finally + let &cpo = s:cpo_save + unlet s:cpo_save +endtry +" vim: sw=2 et diff --git a/share/vim/vim74/syntax/idlang.vim b/share/vim/vim74/syntax/idlang.vim new file mode 100644 index 00000000..670d080a --- /dev/null +++ b/share/vim/vim74/syntax/idlang.vim @@ -0,0 +1,253 @@ +" Interactive Data Language syntax file (IDL, too [:-)] +" Maintainer: Aleksandar Jelenak +" Last change: 2011 Apr 11 +" Created by: Hermann Rochholz + +" Remove any old syntax stuff hanging around +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syntax case ignore + +syn match idlangStatement "^\s*pro\s" +syn match idlangStatement "^\s*function\s" +syn keyword idlangStatement return continue mod do break +syn keyword idlangStatement compile_opt forward_function goto +syn keyword idlangStatement begin common end of +syn keyword idlangStatement inherits on_ioerror begin + +syn keyword idlangConditional if else then for while case switch +syn keyword idlangConditional endcase endelse endfor endswitch +syn keyword idlangConditional endif endrep endwhile repeat until + +syn match idlangOperator "\ and\ " +syn match idlangOperator "\ eq\ " +syn match idlangOperator "\ ge\ " +syn match idlangOperator "\ gt\ " +syn match idlangOperator "\ le\ " +syn match idlangOperator "\ lt\ " +syn match idlangOperator "\ ne\ " +syn match idlangOperator /\(\ \|(\)not\ /hs=e-3 +syn match idlangOperator "\ or\ " +syn match idlangOperator "\ xor\ " + +syn keyword idlangStop stop pause + +syn match idlangStrucvar "\h\w*\(\.\h\w*\)\+" +syn match idlangStrucvar "[),\]]\(\.\h\w*\)\+"hs=s+1 + +syn match idlangSystem "\!\a\w*\(\.\w*\)\=" + +syn match idlangKeyword "\([(,]\s*\(\$\_s*\)\=\)\@<=/\h\w*" +syn match idlangKeyword "\([(,]\s*\(\$\_s*\)\=\)\@<=\h\w*\s*=" + +syn keyword idlangTodo contained TODO + +syn region idlangString start=+"+ end=+"+ +syn region idlangString start=+'+ end=+'+ + +syn match idlangPreCondit "^\s*@\w*\(\.\a\{3}\)\=" + +syn match idlangRealNumber "\<\d\+\(\.\=\d*e[+-]\=\d\+\|\.\d*d\|\.\d*\|d\)" +syn match idlangRealNumber "\.\d\+\(d\|e[+-]\=\d\+\)\=" + +syn match idlangNumber "\<\.\@!\d\+\.\@!\(b\|u\|us\|s\|l\|ul\|ll\|ull\)\=\>" + +syn match idlangComment "[\;].*$" contains=idlangTodo + +syn match idlangContinueLine "\$\s*\($\|;\)"he=s+1 contains=idlangComment +syn match idlangContinueLine "&\s*\(\h\|;\)"he=s+1 contains=ALL + +syn match idlangDblCommaError "\,\s*\," + +" List of standard routines as of IDL version 5.4. +syn match idlangRoutine "EOS_\a*" +syn match idlangRoutine "HDF_\a*" +syn match idlangRoutine "CDF_\a*" +syn match idlangRoutine "NCDF_\a*" +syn match idlangRoutine "QUERY_\a*" +syn match idlangRoutine "\= 508 || !exists("did_idlang_syn_inits") + if version < 508 + let did_idlang_syn_inits = 1 + command -nargs=+ HiLink hi link +else + command -nargs=+ HiLink hi def link +endif + + HiLink idlangConditional Conditional + HiLink idlangRoutine Type + HiLink idlangStatement Statement + HiLink idlangContinueLine Todo + HiLink idlangRealNumber Float + HiLink idlangNumber Number + HiLink idlangString String + HiLink idlangOperator Operator + HiLink idlangComment Comment + HiLink idlangTodo Todo + HiLink idlangPreCondit Identifier + HiLink idlangDblCommaError Error + HiLink idlangStop Error + HiLink idlangStrucvar PreProc + HiLink idlangSystem Identifier + HiLink idlangKeyword Special + + delcommand HiLink +endif + +let b:current_syntax = "idlang" +" vim: ts=18 diff --git a/share/vim/vim73/syntax/indent.vim b/share/vim/vim74/syntax/indent.vim similarity index 100% rename from share/vim/vim73/syntax/indent.vim rename to share/vim/vim74/syntax/indent.vim diff --git a/share/vim/vim73/syntax/inform.vim b/share/vim/vim74/syntax/inform.vim similarity index 100% rename from share/vim/vim73/syntax/inform.vim rename to share/vim/vim74/syntax/inform.vim diff --git a/share/vim/vim73/syntax/initex.vim b/share/vim/vim74/syntax/initex.vim similarity index 100% rename from share/vim/vim73/syntax/initex.vim rename to share/vim/vim74/syntax/initex.vim diff --git a/share/vim/vim73/syntax/initng.vim b/share/vim/vim74/syntax/initng.vim similarity index 100% rename from share/vim/vim73/syntax/initng.vim rename to share/vim/vim74/syntax/initng.vim diff --git a/share/vim/vim73/syntax/inittab.vim b/share/vim/vim74/syntax/inittab.vim similarity index 100% rename from share/vim/vim73/syntax/inittab.vim rename to share/vim/vim74/syntax/inittab.vim diff --git a/share/vim/vim73/syntax/ipfilter.vim b/share/vim/vim74/syntax/ipfilter.vim similarity index 100% rename from share/vim/vim73/syntax/ipfilter.vim rename to share/vim/vim74/syntax/ipfilter.vim diff --git a/share/vim/vim73/syntax/ishd.vim b/share/vim/vim74/syntax/ishd.vim similarity index 100% rename from share/vim/vim73/syntax/ishd.vim rename to share/vim/vim74/syntax/ishd.vim diff --git a/share/vim/vim73/syntax/iss.vim b/share/vim/vim74/syntax/iss.vim similarity index 100% rename from share/vim/vim73/syntax/iss.vim rename to share/vim/vim74/syntax/iss.vim diff --git a/share/vim/vim74/syntax/ist.vim b/share/vim/vim74/syntax/ist.vim new file mode 100644 index 00000000..131d833c --- /dev/null +++ b/share/vim/vim74/syntax/ist.vim @@ -0,0 +1,75 @@ +" Vim syntax file +" Language: Makeindex style file, *.ist +" Maintainer: Peter Meszaros +" Last Change: 2012 Jan 08 by Thilo Six + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +if version >= 600 + setlocal iskeyword=$,@,48-57,_ +else + set iskeyword=$,@,48-57,_ +endif + +syn case ignore +syn keyword IstInpSpec actual arg_close arg_open encap escape +syn keyword IstInpSpec keyword level quote range_close range_open +syn keyword IstInpSpec page_compositor + +syn keyword IstOutSpec preamble postamble setpage_prefix setpage_suffix group_skip +syn keyword IstOutSpec headings_flag heading_prefix heading_suffix +syn keyword IstOutSpec lethead_flag lethead_prefix lethead_suffix +syn keyword IstOutSpec symhead_positive symhead_negative numhead_positive numhead_negative +syn keyword IstOutSpec item_0 item_1 item_2 item_01 +syn keyword IstOutSpec item_x1 item_12 item_x2 +syn keyword IstOutSpec delim_0 delim_1 delim_2 +syn keyword IstOutSpec delim_n delim_r delim_t +syn keyword IstOutSpec encap_prefix encap_infix encap_suffix +syn keyword IstOutSpec line_max indent_space indent_length +syn keyword IstOutSpec suffix_2p suffix_3p suffix_mp + +syn region IstString matchgroup=IstDoubleQuote start=+"+ skip=+\\"+ end=+"+ contains=IstSpecial +syn match IstCharacter "'.'" +syn match IstNumber "\d\+" +syn match IstComment "^[\t ]*%.*$" contains=IstTodo +syn match IstSpecial "\\\\\|{\|}\|#\|\\n" contained +syn match IstTodo "DEBUG\|TODO" contained + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_dummy_syn_inits") + if version < 508 + let did_dummy_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink IstInpSpec Type + HiLink IstOutSpec Identifier + HiLink IstString String + HiLink IstNumber Number + HiLink IstComment Comment + HiLink IstTodo Todo + HiLink IstSpecial Special + HiLink IstDoubleQuote Label + HiLink IstCharacter Label + + delcommand HiLink +endif + +let b:current_syntax = "ist" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: ts=8 sw=2 diff --git a/share/vim/vim73/syntax/jal.vim b/share/vim/vim74/syntax/jal.vim similarity index 100% rename from share/vim/vim73/syntax/jal.vim rename to share/vim/vim74/syntax/jal.vim diff --git a/share/vim/vim74/syntax/jam.vim b/share/vim/vim74/syntax/jam.vim new file mode 100644 index 00000000..cbd99bb9 --- /dev/null +++ b/share/vim/vim74/syntax/jam.vim @@ -0,0 +1,257 @@ +" Vim syntax file +" Language: JAM +" Maintainer: Ralf Lemke (ralflemk@t-online.de) +" Last change: 2012 Jan 08 by Thilo Six + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +if version >= 600 + setlocal iskeyword=@,48-57,_,- +else + set iskeyword=@,48-57,_,- +endif + +" A bunch of useful jam keywords +syn keyword jamStatement break call dbms flush global include msg parms proc public receive return send unload vars +syn keyword jamConditional if else +syn keyword jamRepeat for while next step + +syn keyword jamTodo contained TODO FIXME XXX +syn keyword jamDBState1 alias binary catquery close close_all_connections column_names connection continue continue_bottom continue_down continue_top continue_up +syn keyword jamDBState2 cursor declare engine execute format occur onentry onerror onexit sql start store unique with +syn keyword jamSQLState1 all alter and any avg between by count create current data database delete distinct drop exists fetch from grant group +syn keyword jamSQLState2 having index insert into like load max min of open order revoke rollback runstats select set show stop sum synonym table to union update values view where bundle + +syn keyword jamLibFunc1 dm_bin_create_occur dm_bin_delete_occur dm_bin_get_dlength dm_bin_get_occur dm_bin_length dm_bin_max_occur dm_bin_set_dlength dm_convert_empty dm_cursor_connection dm_cursor_consistent dm_cursor_engine dm_dbi_init dm_dbms dm_dbms_noexp dm_disable_styles dm_enable_styles dm_exec_sql dm_expand dm_free_sql_info dm_gen_change_execute_using dm_gen_change_select_from dm_gen_change_select_group_by dm_gen_change_select_having dm_gen_change_select_list dm_gen_change_select_order_by dm_gen_change_select_suffix dm_gen_change_select_where dm_gen_get_tv_alias dm_gen_sql_info + +syn keyword jamLibFunc2 dm_get_db_conn_handle dm_get_db_cursor_handle dm_get_driver_option dm_getdbitext dm_init dm_is_connection dm_is_cursor dm_is_engine dm_odb_preserves_cursor dm_reset dm_set_driver_option dm_set_max_fetches dm_set_max_rows_per_fetch dm_set_tm_clear_fast dm_val_relative sm_adjust_area sm_allget sm_amt_format sm_e_amt_format sm_i_amt_format sm_n_amt_format sm_o_amt_format sm_append_bundle_data sm_append_bundle_done sm_append_bundle_item sm_d_at_cur sm_l_at_cur sm_r_at_cur sm_mw_attach_drawing_func sm_mwn_attach_drawing_func sm_mwe_attach_drawing_func sm_xm_attach_drawing_func sm_xmn_attach_drawing_func sm_xme_attach_drawing_func sm_backtab sm_bel sm_bi_comparesm_bi_copy sm_bi_initialize sm_bkrect sm_c_off sm_c_on sm_c_vis sm_calc sm_cancel sm_ckdigit sm_cl_all_mdts sm_cl_unprot sm_clear_array sm_n_clear_array sm_1clear_array sm_n_1clear_array sm_close_window sm_com_load_picture sm_com_QueryInterface sm_com_result sm_com_result_msg sm_com_set_handler sm_copyarray sm_n_copyarray sm_create_bundle + +syn keyword jamLibFunc3 sm_d_msg_line sm_dblval sm_e_dblval sm_i_dblval sm_n_dblval sm_o_dblval sm_dd_able sm_dde_client_connect_cold sm_dde_client_connect_hot sm_dde_client_connect_warm sm_dde_client_disconnect sm_dde_client_off sm_dde_client_on sm_dde_client_paste_link_cold sm_dde_client_paste_link_hot sm_dde_client_paste_link_warm sm_dde_client_request sm_dde_execute sm_dde_install_notify sm_dde_poke sm_dde_server_off sm_dde_server_on sm_delay_cursor sm_deselect sm_dicname sm_disp_off sm_dlength sm_e_dlength sm_i_dlength sm_n_dlength sm_o_dlength sm_do_uinstalls sm_i_doccur sm_o_doccur sm_drawingarea sm_xm_drawingarea sm_dtofield sm_e_dtofield sm_i_dtofield sm_n_dtofield sm_o_dtofield sm_femsg sm_ferr_reset sm_fi_path sm_file_copy sm_file_exists sm_file_move sm_file_remove sm_fi_open sm_fi_path sm_filebox sm_filetypes sm_fio_a2f sm_fio_close sm_fio_editor sm_fio_error sm_fio_error_set sm_fio_f2a sm_fio_getc sm_fio_gets sm_fio_handle sm_fio_open sm_fio_putc sm_fio_puts sm_fio_rewind sm_flush sm_d_form sm_l_form + +syn keyword jamLibFunc4 sm_r_form sm_formlist sm_fptr sm_e_fptr sm_i_fptr sm_n_fptr sm_o_fptr sm_fqui_msg sm_fquiet_err sm_free_bundle sm_ftog sm_e_ftog sm_i_ftog sm_n_ftog sm_o_ftog sm_fval sm_e_fval sm_i_fval sm_n_fval sm_o_fval sm_i_get_bi_data sm_o_get_bi_data sm_get_bundle_data sm_get_bundle_item_count sm_get_bundle_occur_count sm_get_next_bundle_name sm_i_get_tv_bi_data sm_o_get_tv_bi_data sm_getfield sm_e_getfield sm_i_getfield sm_n_getfield sm_o_getfield sm_getkey sm_gofield sm_e_gofield sm_i_gofield sm_n_gofield sm_o_gofield sm_gtof sm_gval sm_i_gtof sm_n_gval sm_hlp_by_name sm_home sm_inimsg sm_initcrt sm_jinitcrt sm_jxinitcrt sm_input sm_inquire sm_install sm_intval sm_e_intval sm_i_intval sm_n_intval sm_o_intval sm_i_ioccur sm_o_ioccur sm_is_bundle sm_is_no sm_e_is_no sm_i_is_no sm_n_is_no sm_o_is_no sm_is_yes sm_e_is_yes sm_i_is_yes sm_n_is_yes sm_o_is_yes sm_isabort sm_iset sm_issv sm_itofield sm_e_itofield sm_i_itofield sm_n_itofield sm_o_itofield sm_jclose sm_jfilebox sm_jform sm_djplcall sm_jplcall + +syn keyword jamLibFunc5 sm_sjplcall sm_jplpublic sm_jplunload sm_jtop sm_jwindow sm_key_integer sm_keyfilter sm_keyhit sm_keyinit sm_n_keyinit sm_keylabel sm_keyoption sm_l_close sm_l_open sm_l_open_syslib sm_last sm_launch sm_h_ldb_fld_get sm_n_ldb_fld_get sm_h_ldb_n_fld_get sm_n_ldb_n_fld_get sm_h_ldb_fld_store sm_n_ldb_fld_store sm_h_ldb_n_fld_store sm_n_ldb_n_fld_store sm_ldb_get_active sm_ldb_get_inactive sm_ldb_get_next_active sm_ldb_get_next_inactive sm_ldb_getfield sm_i_ldb_getfield sm_n_ldb_getfield sm_o_ldb_getfield sm_ldb_h_getfield sm_i_ldb_h_getfield sm_n_ldb_h_getfield sm_o_ldb_h_getfield sm_ldb_handle sm_ldb_init sm_ldb_is_loaded sm_ldb_load sm_ldb_name sm_ldb_next_handle sm_ldb_pop sm_ldb_push sm_ldb_putfield sm_i_ldb_putfield sm_n_ldb_putfield sm_o_ldb_putfield sm_ldb_h_putfield sm_i_ldb_h_putfield sm_n_ldb_h_putfield sm_o_ldb_h_putfield sm_ldb_state_get sm_ldb_h_state_get sm_ldb_state_set sm_ldb_h_state_set sm_ldb_unload sm_ldb_h_unload sm_leave sm_list_objects_count sm_list_objects_end sm_list_objects_next + +syn keyword jamLibFunc6 sm_list_objects_start sm_lngval sm_e_lngval sm_i_lngval sm_n_lngval sm_o_lngval sm_load_screen sm_log sm_lstore sm_ltofield sm_e_ltofield sm_i_ltofield sm_n_ltofield sm_o_ltofield sm_m_flush sm_menu_bar_error sm_menu_change sm_menu_create sm_menu_delete sm_menu_get_int sm_menu_get_str sm_menu_install sm_menu_remove sm_message_box sm_mncrinit6 sm_mnitem_change sm_n_mnitem_change sm_mnitem_create sm_n_mnitem_create sm_mnitem_delete sm_n_mnitem_delete sm_mnitem_get_int sm_n_mnitem_get_int sm_mnitem_get_str sm_n_mnitem_get_str sm_mnscript_load sm_mnscript_unload sm_ms_inquire sm_msg sm_msg_del sm_msg_get sm_msg_read sm_d_msg_read sm_n_msg_read sm_msgfind sm_mts_CreateInstance sm_mts_CreateProperty sm_mts_CreatePropertyGroup sm_mts_DisableCommit sm_mts_EnableCommit sm_mts_GetPropertyValue sm_mts_IsCallerInRole sm_mts_IsInTransaction sm_mts_IsSecurityEnabled sm_mts_PutPropertyValue sm_mts_SetAbort sm_mts_SetComplete sm_mus_time sm_mw_get_client_wnd sm_mw_get_cmd_show sm_mw_get_frame_wnd sm_mw_get_instance + +syn keyword jamLibFunc7 sm_mw_get_prev_instance sm_mw_PrintScreen sm_next_sync sm_nl sm_null sm_e_null sm_i_null sm_n_null sm_o_null sm_obj_call sm_obj_copy sm_obj_copy_id sm_obj_create sm_obj_delete sm_obj_delete_id sm_obj_get_property sm_obj_onerror sm_obj_set_property sm_obj_sort sm_obj_sort_auto sm_occur_no sm_off_gofield sm_e_off_gofield sm_i_off_gofield sm_n_off_gofield sm_o_off_gofield sm_option sm_optmnu_id sm_pinquire sm_popup_at_cur sm_prop_error sm_prop_get_int sm_prop_get_str sm_prop_get_dbl sm_prop_get_x_int sm_prop_get_x_str sm_prop_get_x_dbl sm_prop_get_m_int sm_prop_get_m_str sm_prop_get_m_dbl sm_prop_id sm_prop_name_to_id sm_prop_set_int sm_prop_set_str sm_prop_set_dbl sm_prop_set_x_int sm_prop_set_x_str sm_prop_set_x_dbl sm_prop_set_m_int sm_prop_set_m_str sm_prop_set_m_dbl sm_pset sm_putfield sm_e_putfield sm_i_putfield sm_n_putfield sm_o_putfield sm_raise_exception sm_receive sm_receive_args sm_rescreen sm_resetcrt sm_jresetcrt sm_jxresetcrt sm_resize sm_restore_data sm_return sm_return_args sm_rmformlist sm_rs_data + +syn keyword jamLibFunc8 sm_rw_error_message sm_rw_play_metafile sm_rw_runreport sm_s_val sm_save_data sm_sdtime sm_select sm_send sm_set_help sm_setbkstat sm_setsibling sm_setstatus sm_sh_off sm_shell sm_shrink_to_fit sm_slib_error sm_slib_install sm_slib_load sm_soption sm_strip_amt_ptr sm_e_strip_amt_ptr sm_i_strip_amt_ptr sm_n_strip_amt_ptr sm_o_strip_amt_ptr sm_sv_data sm_sv_free sm_svscreen sm_tab sm_tm_clear sm_tm_clear_model_events sm_tm_command sm_tm_command_emsgset sm_tm_command_errset sm_tm_continuation_validity sm_tm_dbi_checker sm_tm_error sm_tm_errorlog sm_tm_event sm_tm_event_name sm_tm_failure_message sm_tm_handling sm_tm_inquire sm_tm_iset sm_tm_msg_count_error sm_tm_msg_emsg sm_tm_msg_error sm_tm_old_bi_context sm_tm_pcopy sm_tm_pinquire sm_tm_pop_model_event sm_tm_pset sm_tm_push_model_event sm_tmpnam sm_tp_exec sm_tp_free_arg_buf sm_tp_gen_insert sm_tp_gen_sel_return sm_tp_gen_sel_where sm_tp_gen_val_link sm_tp_gen_val_return sm_tp_get_svc_alias sm_tp_get_tux_callid sm_translatecoords sm_tst_all_mdts + +syn keyword jamLibFunc9 sm_udtime sm_ungetkey sm_unload_screen sm_unsvscreen sm_upd_select sm_validate sm_n_validate sm_vinit sm_n_vinit sm_wcount sm_wdeselect sm_web_get_cookie sm_web_invoke_url sm_web_log_error sm_web_save_global sm_web_set_cookie sm_web_unsave_all_globals sm_web_unsave_global sm_mw_widget sm_mwe_widget sm_mwn_widget sm_xm_widget sm_xme_widget sm_xmn_widget sm_win_shrink sm_d_window sm_d_at_cur sm_l_window sm_l_at_cur sm_r_window sm_r_at_cur sm_winsize sm_wrotate sm_wselect sm_n_wselect sm_ww_length sm_n_ww_length sm_ww_read sm_n_ww_read sm_ww_write sm_n_ww_write sm_xlate_table sm_xm_get_base_window sm_xm_get_display + +syn keyword jamVariable1 SM_SCCS_ID SM_ENTERTERM SM_MALLOC SM_CANCEL SM_BADTERM SM_FNUM SM_DZERO SM_EXPONENT SM_INVDATE SM_MATHERR SM_FRMDATA SM_NOFORM SM_FRMERR SM_BADKEY SM_DUPKEY SM_ERROR SM_SP1 SM_SP2 SM_RENTRY SM_MUSTFILL SM_AFOVRFLW SM_TOO_FEW_DIGITS SM_CKDIGIT SM_HITANY SM_NOHELP SM_MAXHELP SM_OUTRANGE SM_ENTERTERM1 SM_SYSDATE SM_DATFRM SM_DATCLR SM_DATINV SM_KSDATA SM_KSERR SM_KSNONE SM_KSMORE SM_DAYA1 SM_DAYA2 SM_DAYA3 SM_DAYA4 SM_DAYA5 SM_DAYA6 SM_DAYA7 SM_DAYL1 SM_DAYL2 SM_DAYL3 SM_DAYL4 SM_DAYL5 SM_DAYL6 SM_DAYL7 SM_MNSCR_LOAD SM_MENU_INSTALL SM_INSTDEFSCRL SM_INSTSCROLL SM_MOREDATA SM_READY SM_WAIT SM_YES SM_NO SM_NOTEMP SM_FRMHELP SM_FILVER SM_ONLYONE SM_WMSMOVE SM_WMSSIZE SM_WMSOFF SM_LPRINT SM_FMODE SM_NOFILE SM_NOSECTN SM_FFORMAT SM_FREAD SM_RX1 SM_RX2 SM_RX3 SM_TABLOOK SM_MISKET SM_ILLKET SM_ILLBRA SM_MISDBLKET SM_ILLDBLKET SM_ILLDBLBRA SM_ILL_RIGHT SM_ILLELSE SM_NUMBER SM_EOT SM_BREAK SM_NOARGS SM_BIGVAR SM_EXCESS SM_EOL SM_FILEIO SM_FOR SM_RCURLY SM_NONAME SM_1JPL_ERR SM_2JPL_ERR SM_3JPL_ERR + +syn keyword jamVariable2 SM_JPLATCH SM_FORMAT SM_DESTINATION SM_ORAND SM_ORATOR SM_ILL_LEFT SM_MISSPARENS SM_ILLCLOSE_COMM SM_FUNCTION SM_EQUALS SM_MISMATCH SM_QUOTE SM_SYNTAX SM_NEXT SM_VERB_UNKNOWN SM_JPLFORM SM_NOT_LOADED SM_GA_FLG SM_GA_CHAR SM_GA_ARG SM_GA_DIG SM_NOFUNC SM_BADPROTO SM_JPLPUBLIC SM_NOCOMPILE SM_NULLEDIT SM_RP_NULL SM_DBI_NOT_INST SM_NOTJY SM_MAXLIB SM_FL_FLLIB SM_TPI_NOT_INST SM_RW_NOT_INST SM_MONA1 SM_MONA2 SM_MONA3 SM_MONA4 SM_MONA5 SM_MONA6 SM_MONA7 SM_MONA8 SM_MONA9 SM_MONA10 SM_MONA11 SM_MONA12 SM_MONL1 SM_MONL2 SM_MONL3 SM_MONL4 SM_MONL5 SM_MONL6 SM_MONL7 SM_MONL8 SM_MONL9 SM_MONL10 SM_MONL11 SM_MONL12 SM_AM SM_PM SM_0DEF_DTIME SM_1DEF_DTIME SM_2DEF_DTIME SM_3DEF_DTIME SM_4DEF_DTIME SM_5DEF_DTIME SM_6DEF_DTIME SM_7DEF_DTIME SM_8DEF_DTIME SM_9DEF_DTIME SM_CALC_DATE SM_BAD_DIGIT SM_BAD_YN SM_BAD_ALPHA SM_BAD_NUM SM_BAD_ALPHNUM SM_DECIMAL SM_1STATS SM_VERNO SM_DIG_ERR SM_YN_ERR SM_LET_ERR SM_NUM_ERR SM_ANUM_ERR SM_REXP_ERR SM_POSN_ERR SM_FBX_OPEN SM_FBX_WINDOW SM_FBX_SIBLING SM_OPENDIR + +syn keyword jamVariable3 SM_GETFILES SM_CHDIR SM_GETCWD SM_UNCLOSED_COMM SM_MB_OKLABEL SM_MB_CANCELLABEL SM_MB_YESLABEL SM_MB_NOLABEL SM_MB_RETRYLABEL SM_MB_IGNORELABEL SM_MB_ABORTLABEL SM_MB_HELPLABEL SM_MB_STOP SM_MB_QUESTION SM_MB_WARNING SM_MB_INFORMATION SM_MB_YESALLLABEL SM_0MN_CURRDEF SM_1MN_CURRDEF SM_2MN_CURRDEF SM_0DEF_CURR SM_1DEF_CURR SM_2DEF_CURR SM_3DEF_CURR SM_4DEF_CURR SM_5DEF_CURR SM_6DEF_CURR SM_7DEF_CURR SM_8DEF_CURR SM_9DEF_CURR SM_SEND_SYNTAX SM_SEND_ITEM SM_SEND_INVALID_BUNDLE SM_RECEIVE_SYNTAX SM_RECEIVE_ITEM_NUMBER SM_RECEIVE_OVERFLOW SM_RECEIVE_ITEM SM_SYNCH_RECEIVE SM_EXEC_FAIL SM_DYNA_HELP_NOT_AVAIL SM_DLL_LOAD_ERR SM_DLL_UNRESOLVED SM_DLL_VERSION_ERR SM_DLL_OPTION_ERR SM_DEMOERR SM_MB_OKALLLABEL SM_MB_NOALLLABEL SM_BADPROP SM_BETWEEN SM_ATLEAST SM_ATMOST SM_PR_ERROR SM_PR_OBJID SM_PR_OBJECT SM_PR_ITEM SM_PR_PROP SM_PR_PROP_ITEM SM_PR_PROP_VAL SM_PR_CONVERT SM_PR_OBJ_TYPE SM_PR_RANGE SM_PR_NO_SET SM_PR_BYND_SCRN SM_PR_WW_SCROLL SM_PR_NO_SYNC SM_PR_TOO_BIG SM_PR_BAD_MASK SM_EXEC_MEM_ERR + +syn keyword jamVariable4 SM_EXEC_NO_PROG SM_PR_NO_KEYSTRUCT SM_REOPEN_AS_SLIB SM_REOPEN_THE_SLIB SM_ERRLIB SM_WARNLIB SM_LIB_DOWNGRADE SM_OLDER SM_NEWER SM_UPGRADE SM_LIB_READONLY SM_LOPEN_ERR SM_LOPEN_WARN SM_MLOPEN_CREAT SM_MLOPEN_INIT SM_LIB_ERR SM_LIB_ISOLATE SM_LIB_NO_ERR SM_LIB_REC_ERR SM_LIB_FATAL_ERR SM_LIB_LERR_FILE SM_LIB_LERR_NOTLIB SM_LIB_LERR_BADVERS SM_LIB_LERR_FORMAT SM_LIB_LERR_BADCM SM_LIB_LERR_LOCK SM_LIB_LERR_RESERVED SM_LIB_LERR_READONLY SM_LIB_LERR_NOENTRY SM_LIB_LERR_BUSY SM_LIB_LERR_ROVERS SM_LIB_LERR_DEFAULT SM_LIB_BADCM SM_LIB_LERR_NEW SM_STANDALONE_MODE SM_FEATURE_RESTRICT FM_CH_LOST FM_JPL_PROMPT FM_YR4 FM_YR2 FM_MON FM_MON2 FM_DATE FM_DATE2 FM_HOUR FM_HOUR2 FM_MIN FM_MIN2 FM_SEC FM_SEC2 FM_YRDAY FM_AMPM FM_DAYA FM_DAYL FM_MONA FM_MONL FM_0MN_DEF_DT FM_1MN_DEF_DT FM_2MN_DEF_DT FM_DAY JM_QTERMINATE JM_HITSPACE JM_HITACK JM_NOJWIN UT_MEMERR UT_P_OPT UT_V_OPT UT_E_BINOPT UT_NO_INPUT UT_SECLONG UT_1FNAME UT_SLINE UT_FILE UT_ERROR UT_WARNING UT_MISSEQ UT_VOPT UT_M2_DESCR + +syn keyword jamVariable5 UT_M2_PROGNAME UT_M2_USAGE UT_M2_O_OPT UT_M2_COM UT_M2_BADTAG UT_M2_MSSQUOT UT_M2_AFTRQUOT UT_M2_DUPSECT UT_M2_BADUCLSS UT_M2_USECPRFX UT_M2_MPTYUSCT UT_M2_DUPMSGTG UT_M2_TOOLONG UT_M2_LONG UT_K2_DESCR UT_K2_PROGNAME UT_K2_USAGE UT_K2_MNEM UT_K2_NKEYDEF UT_K2_DUPKEY UT_K2_NOTFOUND UT_K2_1FNAME UT_K2_VOPT UT_K2_EXCHAR UT_V2_DESCR UT_V2_PROGNAME UT_V2_USAGE UT_V2_SLINE UT_V2_SEQUAL UT_V2_SVARNAME UT_V2_SNAME UT_V2_VOPT UT_V2_1REQ UT_CB_DESCR UT_CB_PROGNAME UT_CB_USAGE UT_CB_VOPT UT_CB_MIEXT UT_CB_AEXT UT_CB_UNKNOWN UT_CB_ISCHEME UT_CB_BKFGS UT_CB_ABGS UT_CB_REC UT_CB_GUI UT_CB_CONT UT_CB_CONTFG UT_CB_AFILE UT_CB_LEFT_QUOTE UT_CB_NO_EQUAL UT_CB_EXTRA_EQ UT_CB_BAD_LHS UT_CB_BAD_RHS UT_CB_BAD_QUOTED UT_CB_FILE UT_CB_FILE_LINE UT_CB_DUP_ALIAS UT_CB_LINE_LOOP UT_CB_BAD_STYLE UT_CB_DUP_STYLE UT_CB_NO_SECT UT_CB_DUP_SCHEME DM_ERROR DM_NODATABASE DM_NOTLOGGEDON DM_ALREADY_ON DM_ARGS_NEEDED DM_LOGON_DENIED DM_BAD_ARGS DM_BAD_CMD DM_NO_MORE_ROWS DM_ABORTED DM_NO_CURSOR DM_MANY_CURSORS DM_KEYWORD + +syn keyword jamVariable6 DM_INVALID_DATE DM_COMMIT DM_ROLLBACK DM_PARSE_ERROR DM_BIND_COUNT DM_BIND_VAR DM_DESC_COL DM_FETCH DM_NO_NAME DM_END_OF_PROC DM_NOCONNECTION DM_NOTSUPPORTED DM_TRAN_PEND DM_NO_TRANSACTION DM_ALREADY_INIT DM_INIT_ERROR DM_MAX_DEPTH DM_NO_PARENT DM_NO_CHILD DM_MODALITY_NOT_FOUND DM_NATIVE_NO_SUPPORT DM_NATIVE_CANCEL DM_TM_ALREADY DM_TM_IN_PROGRESS DM_TM_CLOSE_ERROR DM_TM_BAD_MODE DM_TM_BAD_CLOSE_ACTION DM_TM_INTERNAL DM_TM_MODEL_INTERNAL DM_TM_NO_ROOT DM_TM_NO_TRANSACTION DM_TM_INITIAL_MODE DM_TM_PARENT_NAME DM_TM_BAD_MEMBER DM_TM_FLD_NAM_LEN DM_TM_NO_PARENT DM_TM_BAD_REQUEST DM_TM_CANNOT_GEN_SQL DM_TM_CANNOT_EXEC_SQL DM_TM_DBI_ERROR DM_TM_DISCARD_ALL DM_TM_DISCARD_LATEST DM_TM_CALL_ERROR DM_TM_CALL_TYPE DM_TM_HOOK_MODEL DM_TM_ROOT_NAME DM_TM_TV_INVALID DM_TM_COL_NOT_FOUND DM_TM_BAD_LINK DM_TM_HOOK_MODEL_ERROR DM_TM_ONE_ROW DM_TM_SOME_ROWS DM_TM_GENERAL DM_TM_NO_HOOK DM_TM_NOSET DM_TM_TBLNAME DM_TM_PRIMARY_KEY DM_TM_INCOMPLETE_KEY DM_TM_CMD_MODE DM_TM_NO_SUCH_CMD DM_TM_NO_SUCH_SCOPE + +syn keyword jamVariable7 DM_TM_NO_SUCH_TV DM_TM_EVENT_LOOP DM_TM_UNSUPPORTED DM_TM_NO_MODEL DM_TM_SYNCH_SV DM_TM_WRONG_FORM DM_TM_VC_FIELD DM_TM_VC_DATE DM_TM_VC_TYPE DM_TM_BAD_CONTINUE DM_JDB_OUT_OF_MEMORY DM_JDB_DUPTABLEALIAS DM_JDB_DUPCURSORNAME DM_JDB_NODB DM_JDB_BINDCOUNT DM_JDB_NO_MORE_ROWS DM_JDB_AMBIGUOUS_COLUMN_REF DM_JDB_UNRESOLVED_COLUMN_REF DM_JDB_TABLE_READ_WRITE_CONFLICT DM_JDB_SYNTAX_ERROR DM_JDB_DUP_COLUMN_ASSIGNMENT DM_JDB_NO_MSG_FILE DM_JDB_NO_MSG DM_JDB_NOT_IMPLEMENTED DM_JDB_AGGREGATE_NOT_ALLOWED DM_JDB_TYPE_MISMATCH DM_JDB_NO_CURRENT_ROW DM_JDB_DB_CORRUPT DM_JDB_BUF_OVERFLOW DM_JDB_FILE_IO_ERR DM_JDB_BAD_HANDLE DM_JDB_DUP_TNAME DM_JDB_INVALID_TABLE_OP DM_JDB_TABLE_NOT_FOUND DM_JDB_CONVERSION_FAILED DM_JDB_INVALID_COLUMN_LIST DM_JDB_TABLE_OPEN DM_JDB_BAD_INPUT DM_JDB_DATATYPE_OVERFLOW DM_JDB_DATABASE_EXISTS DM_JDB_DATABASE_OPEN DM_JDB_DUP_CNAME DM_JDB_TMPDATABASE_ERR DM_JDB_INVALID_VALUES_COUNT DM_JDB_INVALID_COLUMN_COUNT DM_JDB_MAX_RECLEN_EXCEEDED DM_JDB_END_OF_GROUP + +syn keyword jamVariable8 TP_EXC_INVALID_CLIENT_COMMAND TP_EXC_INVALID_CLIENT_OPTION TP_EXC_INVALID_COMMAND TP_EXC_INVALID_COMMAND_SYNTAX TP_EXC_INVALID_CONNECTION TP_EXC_INVALID_CONTEXT TP_EXC_INVALID_FORWARD TP_EXC_INVALID_JAM_VARIABLE_REF TP_EXC_INVALID_MONITOR_COMMAND TP_EXC_INVALID_MONITOR_OPTION TP_EXC_INVALID_OPTION TP_EXC_INVALID_OPTION_VALUE TP_EXC_INVALID_SERVER_COMMAND TP_EXC_INVALID_SERVER_OPTION TP_EXC_INVALID_SERVICE TP_EXC_INVALID_TRANSACTION TP_EXC_JIF_ACCESS_FAILED TP_EXC_JIF_LOWER_VERSION TP_EXC_LOGFILE_ERROR TP_EXC_MONITOR_ERROR TP_EXC_NO_OUTSIDE_TRANSACTION TP_EXC_NO_OUTSTANDING_CALLS TP_EXC_NO_OUTSTANDING_MESSAGE TP_EXC_NO_SERVICES_ADVERTISED TP_EXC_NO_SIGNALS TP_EXC_NONTRANSACTIONAL_SERVICE TP_EXC_NONTRANSACTIONAL_ACTION TP_EXC_OUT_OF_MEMORY TP_EXC_POSTING_FAILED TP_EXC_PERMISSION_DENIED TP_EXC_REQUEST_LIMIT TP_EXC_ROLLBACK_COMMITTED TP_EXC_ROLLBACK_FAILED TP_EXC_SERVICE_FAILED TP_EXC_SERVICE_NOT_IN_JIF TP_EXC_SERVICE_PROTOCOL_ERROR TP_EXC_SUBSCRIPTION_LIMIT + +syn keyword jamVariable9 TP_EXC_SUBSCRIPTION_MATCH TP_EXC_SVC_ADVERTISE_LIMIT TP_EXC_SVC_WORK_OUTSTANDING TP_EXC_SVCROUTINE_MISSING TP_EXC_SVRINIT_WORK_OUTSTANDING TP_EXC_TIMEOUT TP_EXC_TRANSACTION_LIMIT TP_EXC_UNLOAD_FAILED TP_EXC_UNSUPPORTED_BUFFER TP_EXC_UNSUPPORTED_BUF_W_SUBT TP_EXC_USER_ABORT TP_EXC_WORK_OUTSTANDING TP_EXC_XA_CLOSE_FAILED TP_EXC_XA_OPEN_FAILED TP_EXC_QUEUE_BAD_MSGID TP_EXC_QUEUE_BAD_NAMESPACE TP_EXC_QUEUE_BAD_QUEUE TP_EXC_QUEUE_CANT_START_TRAN TP_EXC_QUEUE_FULL TP_EXC_QUEUE_MSG_IN_USE TP_EXC_QUEUE_NO_MSG TP_EXC_QUEUE_NOT_IN_QSPACE TP_EXC_QUEUE_RSRC_NOT_OPEN TP_EXC_QUEUE_SPACE_NOT_IN_JIF TP_EXC_QUEUE_TRAN_ABORTED TP_EXC_QUEUE_TRAN_ABSENT TP_EXC_QUEUE_UNEXPECTED TP_EXC_DCE_LOGIN_REQUIRED TP_EXC_ENC_CELL_NAME_REQUIRED TP_EXC_ENC_CONN_INFO_DIFFS TP_EXC_ENC_SVC_REGISTRY_ERROR TP_INVALID_START_ROUTINE TP_JIF_NOT_FOUND TP_JIF_OPEN_ERROR TP_NO_JIF TP_NO_MONITORS_ERROR TP_NO_SESSIONS_ERROR TP_NO_START_ROUTINE TP_ADV_SERVICE TP_ADV_SERVICE_IN_GROUP TP_PRE_SVCHDL_WINOPEN_FAILED + +syn keyword jamVariable10 PV_YES PV_NO TRUE FALSE TM_TRAN_NAME + +" jamCommentGroup allows adding matches for special things in comments +syn cluster jamCommentGroup contains=jamTodo + +" String and Character constants +" Highlight special characters (those which have a backslash) differently +syn match jamSpecial contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" +if !exists("c_no_utf") + syn match jamSpecial contained "\\\(u\x\{4}\|U\x\{8}\)" +endif +if exists("c_no_cformat") + syn region jamString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial +else + syn match jamFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained + syn match jamFormat "%%" contained + syn region jamString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat + hi link jamFormat jamSpecial +endif +syn match jamCharacter "L\='[^\\]'" +syn match jamCharacter "L'[^']*'" contains=jamSpecial +syn match jamSpecialError "L\='\\[^'\"?\\abfnrtv]'" +syn match jamSpecialCharacter "L\='\\['\"?\\abfnrtv]'" +syn match jamSpecialCharacter "L\='\\\o\{1,3}'" +syn match jamSpecialCharacter "'\\x\x\{1,2}'" +syn match jamSpecialCharacter "L'\\x\x\+'" + +"catch errors caused by wrong parenthesis and brackets +syn cluster jamParenGroup contains=jamParenError,jamIncluded,jamSpecial,@jamCommentGroup,jamUserCont,jamUserLabel,jamBitField,jamCommentSkip,jamOctalZero,jamCppOut,jamCppOut2,jamCppSkip,jamFormat,jamNumber,jamFloat,jamOctal,jamOctalError,jamNumbersCom + +syn region jamParen transparent start='(' end=')' contains=ALLBUT,@jamParenGroup,jamErrInBracket +syn match jamParenError "[\])]" +syn match jamErrInParen contained "[\]{}]" +syn region jamBracket transparent start='\[' end=']' contains=ALLBUT,@jamParenGroup,jamErrInParen +syn match jamErrInBracket contained "[);{}]" + +"integer number, or floating point number without a dot and with "f". +syn case ignore +syn match jamNumbers transparent "\<\d\|\,\d" contains=jamNumber,jamFloat,jamOctalError,jamOctal +" Same, but without octal error (for comments) +syn match jamNumbersCom contained transparent "\<\d\|\,\d" contains=jamNumber,jamFloat,jamOctal +syn match jamNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" +"hex number +syn match jamNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" +" Flag the first zero of an octal number as something special +syn match jamOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero +syn match jamOctalZero contained "\<0" +syn match jamFloat contained "\d\+f" +"floating point number, with dot, optional exponent +syn match jamFloat contained "\d\+\,\d*\(e[-+]\=\d\+\)\=[fl]\=" +"floating point number, starting with a dot, optional exponent +syn match jamFloat contained "\,\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +"floating point number, without dot, with exponent +syn match jamFloat contained "\d\+e[-+]\=\d\+[fl]\=\>" +" flag an octal number with wrong digits +syn match jamOctalError contained "0\o*[89]\d*" +syn case match + +syntax match jamOperator1 "\#\#" +syntax match jamOperator6 "/" +syntax match jamOperator2 "+" +syntax match jamOperator3 "*" +syntax match jamOperator4 "-" +syntax match jamOperator5 "|" +syntax match jamOperator6 "/" +syntax match jamOperator7 "&" +syntax match jamOperator8 ":" +syntax match jamOperator9 "<" +syntax match jamOperator10 ">" +syntax match jamOperator11 "!" +syntax match jamOperator12 "%" +syntax match jamOperator13 "^" +syntax match jamOperator14 "@" + +syntax match jamCommentL "//" + +if exists("jam_comment_strings") + " A comment can contain jamString, jamCharacter and jamNumber. + " But a "*/" inside a jamString in a jamComment DOES end the comment! So we + " need to use a special type of jamString: jamCommentString, which also ends on + " "*/", and sees a "*" at the start of the line as comment again. + " Unfortunately this doesn't very well work for // type of comments :-( + syntax match jamCommentSkip contained "^\s*\*\($\|\s\+\)" + syntax region jamCommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=jamSpecial,jamCommentSkip + syntax region jamComment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=jamSpecial + syntax region jamCommentL start="//" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamComment2String,jamCharacter,jamNumbersCom,jamSpaceError + syntax region jamCommentL2 start="^#\|^\s\+\#" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamComment2String,jamCharacter,jamNumbersCom,jamSpaceError + syntax region jamComment start="/\*" end="\*/" contains=@jamCommentGroup,jamCommentString,jamCharacter,jamNumbersCom,jamSpaceError +else + syn region jamCommentL start="//" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamSpaceError + syn region jamCommentL2 start="^\#\|^\s\+\#" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamSpaceError + syn region jamComment start="/\*" end="\*/" contains=@jamCommentGroup,jamSpaceError +endif + +" keep a // comment separately, it terminates a preproc. conditional +syntax match jamCommentError "\*/" + +syntax match jamOperator3Error "*/" + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_jam_syn_inits") + if version < 508 + let did_jam_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink jamCommentL jamComment + HiLink jamCommentL2 jamComment + HiLink jamOperator3Error jamError + HiLink jamConditional Conditional + HiLink jamRepeat Repeat + HiLink jamCharacter Character + HiLink jamSpecialCharacter jamSpecial + HiLink jamNumber Number + HiLink jamParenError jamError + HiLink jamErrInParen jamError + HiLink jamErrInBracket jamError + HiLink jamCommentError jamError + HiLink jamSpaceError jamError + HiLink jamSpecialError jamError + HiLink jamOperator1 jamOperator + HiLink jamOperator2 jamOperator + HiLink jamOperator3 jamOperator + HiLink jamOperator4 jamOperator + HiLink jamOperator5 jamOperator + HiLink jamOperator6 jamOperator + HiLink jamOperator7 jamOperator + HiLink jamOperator8 jamOperator + HiLink jamOperator9 jamOperator + HiLink jamOperator10 jamOperator + HiLink jamOperator11 jamOperator + HiLink jamOperator12 jamOperator + HiLink jamOperator13 jamOperator + HiLink jamOperator14 jamOperator + HiLink jamError Error + HiLink jamStatement Statement + HiLink jamPreCondit PreCondit + HiLink jamCommentError jamError + HiLink jamCommentString jamString + HiLink jamComment2String jamString + HiLink jamCommentSkip jamComment + HiLink jamString String + HiLink jamComment Comment + HiLink jamSpecial SpecialChar + HiLink jamTodo Todo + HiLink jamCppSkip jamCppOut + HiLink jamCppOut2 jamCppOut + HiLink jamCppOut Comment + HiLink jamDBState1 Identifier + HiLink jamDBState2 Identifier + HiLink jamSQLState1 jamSQL + HiLink jamSQLState2 jamSQL + HiLink jamLibFunc1 jamLibFunc + HiLink jamLibFunc2 jamLibFunc + HiLink jamLibFunc3 jamLibFunc + HiLink jamLibFunc4 jamLibFunc + HiLink jamLibFunc5 jamLibFunc + HiLink jamLibFunc6 jamLibFunc + HiLink jamLibFunc7 jamLibFunc + HiLink jamLibFunc8 jamLibFunc + HiLink jamLibFunc9 jamLibFunc + HiLink jamVariable1 jamVariablen + HiLink jamVariable2 jamVariablen + HiLink jamVariable3 jamVariablen + HiLink jamVariable4 jamVariablen + HiLink jamVariable5 jamVariablen + HiLink jamVariable6 jamVariablen + HiLink jamVariable7 jamVariablen + HiLink jamVariable8 jamVariablen + HiLink jamVariable9 jamVariablen + HiLink jamVariable10 jamVariablen + HiLink jamVariablen Constant + HiLink jamSQL Type + HiLink jamLibFunc PreProc + HiLink jamOperator Special + + delcommand HiLink +endif + +let b:current_syntax = "jam" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: ts=8 diff --git a/share/vim/vim73/syntax/jargon.vim b/share/vim/vim74/syntax/jargon.vim similarity index 100% rename from share/vim/vim73/syntax/jargon.vim rename to share/vim/vim74/syntax/jargon.vim diff --git a/share/vim/vim74/syntax/java.vim b/share/vim/vim74/syntax/java.vim new file mode 100644 index 00000000..e5491b26 --- /dev/null +++ b/share/vim/vim74/syntax/java.vim @@ -0,0 +1,352 @@ +" Vim syntax file +" Language: Java +" Maintainer: Claudio Fleiner +" URL: http://www.fleiner.com/vim/syntax/java.vim +" Last Change: 2012 Oct 05 + +" Please check :help java.vim for comments on some of the options available. + +" Quit when a syntax file was already loaded +if !exists("main_syntax") + if version < 600 + syntax clear + elseif exists("b:current_syntax") + finish + endif + " we define it here so that included files can test for it + let main_syntax='java' + syn region javaFold start="{" end="}" transparent fold +endif + +let s:cpo_save = &cpo +set cpo&vim + +" don't use standard HiLink, it will not work with included syntax files +if version < 508 + command! -nargs=+ JavaHiLink hi link +else + command! -nargs=+ JavaHiLink hi def link +endif + +" some characters that cannot be in a java program (outside a string) +syn match javaError "[\\@`]" +syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|[^-]->\|\*\/" + +syn match javaOK "\.\.\." + +" use separate name so that it can be deleted in javacc.vim +syn match javaError2 "#\|=<" +JavaHiLink javaError2 javaError + + + +" keyword definitions +syn keyword javaExternal native package +syn match javaExternal "\\(\s\+static\>\)\?" +syn keyword javaError goto const +syn keyword javaConditional if else switch +syn keyword javaRepeat while for do +syn keyword javaBoolean true false +syn keyword javaConstant null +syn keyword javaTypedef this super +syn keyword javaOperator new instanceof +syn keyword javaType boolean char byte short int long float double +syn keyword javaType void +syn keyword javaStatement return +syn keyword javaStorageClass static synchronized transient volatile final strictfp serializable +syn keyword javaExceptions throw try catch finally +syn keyword javaAssert assert +syn keyword javaMethodDecl synchronized throws +syn keyword javaClassDecl extends implements interface +" to differentiate the keyword class from MyClass.class we use a match here +syn match javaTypedef "\.\s*\"ms=s+1 +syn keyword javaClassDecl enum +syn match javaClassDecl "^class\>" +syn match javaClassDecl "[^.]\s*\"ms=s+1 +syn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>" +syn match javaClassDecl "@interface\>" +syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite +syn match javaUserLabelRef "\k\+" contained +syn match javaVarArg "\.\.\." +syn keyword javaScopeDecl public protected private abstract + +if exists("java_highlight_java_lang_ids") + let java_highlight_all=1 +endif +if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang") + " java.lang.* + syn match javaLangClass "\" + syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException + syn cluster javaTop add=javaR_JavaLang + syn cluster javaClasses add=javaR_JavaLang + JavaHiLink javaR_JavaLang javaR_Java + syn keyword javaC_JavaLang Process RuntimePermission StringKeySet CharacterData01 Class ThreadLocal ThreadLocalMap CharacterData0E Package Character StringCoding Long ProcessImpl ProcessEnvironment Short AssertionStatusDirectives 1PackageInfoProxy UnicodeBlock InheritableThreadLocal AbstractStringBuilder StringEnvironment ClassLoader ConditionalSpecialCasing CharacterDataPrivateUse StringBuffer StringDecoder Entry StringEntry WrappedHook StringBuilder StrictMath State ThreadGroup Runtime CharacterData02 MethodArray Object CharacterDataUndefined Integer Gate Boolean Enum Variable Subset StringEncoder Void Terminator CharsetSD IntegerCache CharacterCache Byte CharsetSE Thread SystemClassLoaderAction CharacterDataLatin1 StringValues StackTraceElement Shutdown ShortCache String ConverterSD ByteCache Lock EnclosingMethodInfo Math Float Value Double SecurityManager LongCache ProcessBuilder StringEntrySet Compiler Number UNIXProcess ConverterSE ExternalData CaseInsensitiveComparator CharacterData00 NativeLibrary + syn cluster javaTop add=javaC_JavaLang + syn cluster javaClasses add=javaC_JavaLang + JavaHiLink javaC_JavaLang javaC_Java + syn keyword javaE_JavaLang IncompatibleClassChangeError InternalError UnknownError ClassCircularityError AssertionError ThreadDeath IllegalAccessError NoClassDefFoundError ClassFormatError UnsupportedClassVersionError NoSuchFieldError VerifyError ExceptionInInitializerError InstantiationError LinkageError NoSuchMethodError Error UnsatisfiedLinkError StackOverflowError AbstractMethodError VirtualMachineError OutOfMemoryError + syn cluster javaTop add=javaE_JavaLang + syn cluster javaClasses add=javaE_JavaLang + JavaHiLink javaE_JavaLang javaE_Java + syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException + syn cluster javaTop add=javaX_JavaLang + syn cluster javaClasses add=javaX_JavaLang + JavaHiLink javaX_JavaLang javaX_Java + + JavaHiLink javaR_Java javaR_ + JavaHiLink javaC_Java javaC_ + JavaHiLink javaE_Java javaE_ + JavaHiLink javaX_Java javaX_ + JavaHiLink javaX_ javaExceptions + JavaHiLink javaR_ javaExceptions + JavaHiLink javaE_ javaExceptions + JavaHiLink javaC_ javaConstant + + syn keyword javaLangObject clone equals finalize getClass hashCode + syn keyword javaLangObject notify notifyAll toString wait + JavaHiLink javaLangObject javaConstant + syn cluster javaTop add=javaLangObject +endif + +if filereadable(expand(":p:h")."/javaid.vim") + source :p:h/javaid.vim +endif + +if exists("java_space_errors") + if !exists("java_no_trail_space_error") + syn match javaSpaceError "\s\+$" + endif + if !exists("java_no_tab_space_error") + syn match javaSpaceError " \+\t"me=e-1 + endif +endif + +syn region javaLabelRegion transparent matchgroup=javaLabel start="\" matchgroup=NONE end=":" contains=javaNumber,javaCharacter +syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel +syn keyword javaLabel default + +" highlighting C++ keywords as errors removed, too many people find it +" annoying. Was: if !exists("java_allow_cpp_keywords") + +" The following cluster contains all java groups except the contained ones +syn cluster javaTop add=javaExternal,javaError,javaError,javaBranch,javaLabelRegion,javaLabel,javaConditional,javaRepeat,javaBoolean,javaConstant,javaTypedef,javaOperator,javaType,javaType,javaStatement,javaStorageClass,javaAssert,javaExceptions,javaMethodDecl,javaClassDecl,javaClassDecl,javaClassDecl,javaScopeDecl,javaError,javaError2,javaUserLabel,javaLangObject,javaAnnotation,javaVarArg + + +" Comments +syn keyword javaTodo contained TODO FIXME XXX +if exists("java_comment_strings") + syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell + syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell + syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar + syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar + syn match javaCommentCharacter contained "'[^\\]'" + syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber + syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber +endif +syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell +syn match javaCommentStar contained "^\s*\*[^/]"me=e-1 +syn match javaCommentStar contained "^\s*\*$" +syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell +JavaHiLink javaCommentString javaString +JavaHiLink javaComment2String javaString +JavaHiLink javaCommentCharacter javaCharacter + +syn cluster javaTop add=javaComment,javaLineComment + +if !exists("java_ignore_javadoc") && main_syntax != 'jsp' + syntax case ignore + " syntax coloring for javadoc comments (HTML) + syntax include @javaHtml :p:h/html.vim + unlet b:current_syntax + " HTML enables spell checking for all text that is not in a syntax item. This + " is wrong for Java (all identifiers would be spell-checked), so it's undone + " here. + syntax spell default + + syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell + syn region javaCommentTitle contained matchgroup=javaDocComment start="/\*\*" matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag + + syn region javaDocTags contained start="{@\(code\|link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" + syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam + syn match javaDocParam contained "\s\S\+" + syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>" + syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam + syn match javaDocSeeTagParam contained @"\_[^"]\+"\|\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend + syntax case match +endif + +" match the special comment /**/ +syn match javaComment "/\*\*/" + +" Strings and constants +syn match javaSpecialError contained "\\." +syn match javaSpecialCharError contained "[^']" +syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" +syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell +" next line disabled, it can cause a crash for a long line +"syn match javaStringError +"\([^"\\]\|\\.\)*$+ +syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError +syn match javaCharacter "'\\''" contains=javaSpecialChar +syn match javaCharacter "'[^\\]'" +syn match javaNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" +syn match javaNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" +syn match javaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" +syn match javaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" + +" unicode characters +syn match javaSpecial "\\u\d\{4\}" + +syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError + +if exists("java_highlight_functions") + if java_highlight_functions == "indent" + syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses + syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses + syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses + syn region javaFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses + else + " This line catches method declarations at any indentation>0, but it assumes + " two things: + " 1. class names are always capitalized (ie: Button) + " 2. method names are never capitalized (except constructors, of course) + syn region javaFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(<[^>]*>\)\=\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*([^0-9]+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses + endif + syn match javaBraces "[{}]" + syn cluster javaTop add=javaFuncDef,javaBraces +endif + +if exists("java_highlight_debug") + + " Strings and constants + syn match javaDebugSpecial contained "\\\d\d\d\|\\." + syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial + syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+ + syn match javaDebugCharacter contained "'[^\\]'" + syn match javaDebugSpecialCharacter contained "'\\.'" + syn match javaDebugSpecialCharacter contained "'\\''" + syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" + syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" + syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" + syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" + syn keyword javaDebugBoolean contained true false + syn keyword javaDebugType contained null this super + syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen + + " to make this work you must define the highlighting for these groups + syn match javaDebug "\= 508 || !exists("did_c_syn_inits") + JavaHiLink javaDebug Debug + JavaHiLink javaDebugString DebugString + JavaHiLink javaDebugStringError javaError + JavaHiLink javaDebugType DebugType + JavaHiLink javaDebugBoolean DebugBoolean + JavaHiLink javaDebugNumber Debug + JavaHiLink javaDebugSpecial DebugSpecial + JavaHiLink javaDebugSpecialCharacter DebugSpecial + JavaHiLink javaDebugCharacter DebugString + JavaHiLink javaDebugParen Debug + + JavaHiLink DebugString String + JavaHiLink DebugSpecial Special + JavaHiLink DebugBoolean Boolean + JavaHiLink DebugType Type + endif +endif + +if exists("java_mark_braces_in_parens_as_errors") + syn match javaInParen contained "[{}]" + JavaHiLink javaInParen javaError + syn cluster javaTop add=javaInParen +endif + +" catch errors caused by wrong parenthesis +syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1 +syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained +syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained +syn match javaParenError ")" +" catch errors caused by wrong square parenthesis +syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1 +syn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained +syn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained +syn match javaParenError "\]" + +JavaHiLink javaParenError javaError + +if !exists("java_minlines") + let java_minlines = 10 +endif +exec "syn sync ccomment javaComment minlines=" . java_minlines + +" The default highlighting. +if version >= 508 || !exists("did_java_syn_inits") + if version < 508 + let did_java_syn_inits = 1 + endif + JavaHiLink javaFuncDef Function + JavaHiLink javaVarArg Function + JavaHiLink javaBraces Function + JavaHiLink javaBranch Conditional + JavaHiLink javaUserLabelRef javaUserLabel + JavaHiLink javaLabel Label + JavaHiLink javaUserLabel Label + JavaHiLink javaConditional Conditional + JavaHiLink javaRepeat Repeat + JavaHiLink javaExceptions Exception + JavaHiLink javaAssert Statement + JavaHiLink javaStorageClass StorageClass + JavaHiLink javaMethodDecl javaStorageClass + JavaHiLink javaClassDecl javaStorageClass + JavaHiLink javaScopeDecl javaStorageClass + JavaHiLink javaBoolean Boolean + JavaHiLink javaSpecial Special + JavaHiLink javaSpecialError Error + JavaHiLink javaSpecialCharError Error + JavaHiLink javaString String + JavaHiLink javaCharacter Character + JavaHiLink javaSpecialChar SpecialChar + JavaHiLink javaNumber Number + JavaHiLink javaError Error + JavaHiLink javaStringError Error + JavaHiLink javaStatement Statement + JavaHiLink javaOperator Operator + JavaHiLink javaComment Comment + JavaHiLink javaDocComment Comment + JavaHiLink javaLineComment Comment + JavaHiLink javaConstant Constant + JavaHiLink javaTypedef Typedef + JavaHiLink javaTodo Todo + JavaHiLink javaAnnotation PreProc + + JavaHiLink javaCommentTitle SpecialComment + JavaHiLink javaDocTags Special + JavaHiLink javaDocParam Function + JavaHiLink javaDocSeeTagParam Function + JavaHiLink javaCommentStar javaComment + + JavaHiLink javaType Type + JavaHiLink javaExternal Include + + JavaHiLink htmlComment Special + JavaHiLink htmlCommentPart Special + JavaHiLink javaSpaceError Error +endif + +delcommand JavaHiLink + +let b:current_syntax = "java" + +if main_syntax == 'java' + unlet main_syntax +endif + +let b:spell_options="contained" +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 diff --git a/share/vim/vim74/syntax/javacc.vim b/share/vim/vim74/syntax/javacc.vim new file mode 100644 index 00000000..5458de75 --- /dev/null +++ b/share/vim/vim74/syntax/javacc.vim @@ -0,0 +1,82 @@ +" Vim syntax file +" Language: JavaCC, a Java Compiler Compiler written by JavaSoft +" Maintainer: Claudio Fleiner +" URL: http://www.fleiner.com/vim/syntax/javacc.vim +" Last Change: 2012 Oct 05 + +" Uses java.vim, and adds a few special things for JavaCC Parser files. +" Those files usually have the extension *.jj + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" source the java.vim file +if version < 600 + source :p:h/java.vim +else + runtime! syntax/java.vim +endif +unlet b:current_syntax + +"remove catching errors caused by wrong parenthesis (does not work in javacc +"files) (first define them in case they have not been defined in java) +syn match javaParen "--" +syn match javaParenError "--" +syn match javaInParen "--" +syn match javaError2 "--" +syn clear javaParen +syn clear javaParenError +syn clear javaInParen +syn clear javaError2 + +" remove function definitions (they look different) (first define in +" in case it was not defined in java.vim) +"syn match javaFuncDef "--" +syn clear javaFuncDef +syn match javaFuncDef "[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)[ \t]*:" contains=javaType + +syn keyword javaccPackages options DEBUG_PARSER DEBUG_LOOKAHEAD DEBUG_TOKEN_MANAGER +syn keyword javaccPackages COMMON_TOKEN_ACTION IGNORE_CASE CHOICE_AMBIGUITY_CHECK +syn keyword javaccPackages OTHER_AMBIGUITY_CHECK STATIC LOOKAHEAD ERROR_REPORTING +syn keyword javaccPackages USER_TOKEN_MANAGER USER_CHAR_STREAM JAVA_UNICODE_ESCAPE +syn keyword javaccPackages UNICODE_INPUT JDK_VERSION +syn match javaccPackages "PARSER_END([^)]*)" +syn match javaccPackages "PARSER_BEGIN([^)]*)" +syn match javaccSpecToken "" +" the dot is necessary as otherwise it will be matched as a keyword. +syn match javaccSpecToken ".LOOKAHEAD("ms=s+1,me=e-1 +syn match javaccToken "<[^> \t]*>" +syn keyword javaccActionToken TOKEN SKIP MORE SPECIAL_TOKEN +syn keyword javaccError DEBUG IGNORE_IN_BNF + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_css_syn_inits") + if version < 508 + let did_css_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + HiLink javaccSpecToken Statement + HiLink javaccActionToken Type + HiLink javaccPackages javaScopeDecl + HiLink javaccToken String + HiLink javaccError Error + delcommand HiLink +endif + +let b:current_syntax = "javacc" +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 diff --git a/share/vim/vim74/syntax/javascript.vim b/share/vim/vim74/syntax/javascript.vim new file mode 100644 index 00000000..1b20f987 --- /dev/null +++ b/share/vim/vim74/syntax/javascript.vim @@ -0,0 +1,143 @@ +" Vim syntax file +" Language: JavaScript +" Maintainer: Claudio Fleiner +" Updaters: Scott Shattuck (ss) +" URL: http://www.fleiner.com/vim/syntax/javascript.vim +" Changes: (ss) added keywords, reserved words, and other identifiers +" (ss) repaired several quoting and grouping glitches +" (ss) fixed regex parsing issue with multiple qualifiers [gi] +" (ss) additional factoring of keywords, globals, and members +" Last Change: 2012 Oct 05 +" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke) + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +" tuning parameters: +" unlet javaScript_fold + +if !exists("main_syntax") + if version < 600 + syntax clear + elseif exists("b:current_syntax") + finish + endif + let main_syntax = 'javascript' +elseif exists("b:current_syntax") && b:current_syntax == "javascript" + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Drop fold if it set but vim doesn't support it. +if version < 600 && exists("javaScript_fold") + unlet javaScript_fold +endif + + +syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained +syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo +syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" +syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo +syn match javaScriptSpecial "\\\d\d\d\|\\." +syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc +syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc + +syn match javaScriptSpecialCharacter "'\\.'" +syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" +syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gim]\{0,2\}\s*$+ end=+/[gim]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline + +syn keyword javaScriptConditional if else switch +syn keyword javaScriptRepeat while for do in +syn keyword javaScriptBranch break continue +syn keyword javaScriptOperator new delete instanceof typeof +syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp +syn keyword javaScriptStatement return with +syn keyword javaScriptBoolean true false +syn keyword javaScriptNull null undefined +syn keyword javaScriptIdentifier arguments this var let +syn keyword javaScriptLabel case default +syn keyword javaScriptException try catch finally throw +syn keyword javaScriptMessage alert confirm prompt status +syn keyword javaScriptGlobal self window top parent +syn keyword javaScriptMember document event location +syn keyword javaScriptDeprecated escape unescape +syn keyword javaScriptReserved abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile + +if exists("javaScript_fold") + syn match javaScriptFunction "\" + syn region javaScriptFunctionFold start="\.*[^};]$" end="^\z1}.*$" transparent fold keepend + + syn sync match javaScriptSync grouphere javaScriptFunctionFold "\" + syn sync match javaScriptSync grouphere NONE "^}" + + setlocal foldmethod=syntax + setlocal foldtext=getline(v:foldstart) +else + syn keyword javaScriptFunction function + syn match javaScriptBraces "[{}\[\]]" + syn match javaScriptParens "[()]" +endif + +syn sync fromstart +syn sync maxlines=100 + +if main_syntax == "javascript" + syn sync ccomment javaScriptComment +endif + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_javascript_syn_inits") + if version < 508 + let did_javascript_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + HiLink javaScriptComment Comment + HiLink javaScriptLineComment Comment + HiLink javaScriptCommentTodo Todo + HiLink javaScriptSpecial Special + HiLink javaScriptStringS String + HiLink javaScriptStringD String + HiLink javaScriptCharacter Character + HiLink javaScriptSpecialCharacter javaScriptSpecial + HiLink javaScriptNumber javaScriptValue + HiLink javaScriptConditional Conditional + HiLink javaScriptRepeat Repeat + HiLink javaScriptBranch Conditional + HiLink javaScriptOperator Operator + HiLink javaScriptType Type + HiLink javaScriptStatement Statement + HiLink javaScriptFunction Function + HiLink javaScriptBraces Function + HiLink javaScriptError Error + HiLink javaScrParenError javaScriptError + HiLink javaScriptNull Keyword + HiLink javaScriptBoolean Boolean + HiLink javaScriptRegexpString String + + HiLink javaScriptIdentifier Identifier + HiLink javaScriptLabel Label + HiLink javaScriptException Exception + HiLink javaScriptMessage Keyword + HiLink javaScriptGlobal Keyword + HiLink javaScriptMember Keyword + HiLink javaScriptDeprecated Exception + HiLink javaScriptReserved Keyword + HiLink javaScriptDebug Debug + HiLink javaScriptConstant Label + + delcommand HiLink +endif + +let b:current_syntax = "javascript" +if main_syntax == 'javascript' + unlet main_syntax +endif +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/jess.vim b/share/vim/vim74/syntax/jess.vim similarity index 100% rename from share/vim/vim73/syntax/jess.vim rename to share/vim/vim74/syntax/jess.vim diff --git a/share/vim/vim73/syntax/jgraph.vim b/share/vim/vim74/syntax/jgraph.vim similarity index 100% rename from share/vim/vim73/syntax/jgraph.vim rename to share/vim/vim74/syntax/jgraph.vim diff --git a/share/vim/vim74/syntax/jovial.vim b/share/vim/vim74/syntax/jovial.vim new file mode 100644 index 00000000..7c638417 --- /dev/null +++ b/share/vim/vim74/syntax/jovial.vim @@ -0,0 +1,110 @@ +" Vim syntax file +" Language: JOVIAL J73 +" Version: 1.2 +" Maintainer: Paul McGinnis +" Last Change: 2011/06/17 +" Remark: Based on MIL-STD-1589C for JOVIAL J73 language + +" Quit when a (custom) syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +syn case ignore + +syn keyword jovialTodo TODO FIXME XXX contained + +" JOVIAL beads - first digit is number of bits, [0-9A-V] is the bit value +" representing 0-31 (for 5 bits on the bead) +syn match jovialBitConstant "[1-5]B'[0-9A-V]'" + +syn match jovialNumber "\<\d\+\>" + +syn match jovialFloat "\d\+E[-+]\=\d\+" +syn match jovialFloat "\d\+\.\d*\(E[-+]\=\d\+\)\=" +syn match jovialFloat "\.\d\+\(E[-+]\=\d\+\)\=" + +syn region jovialComment start=/"/ end=/"/ contains=jovialTodo +syn region jovialComment start=/%/ end=/%/ contains=jovialTodo + +" JOVIAL variable names. This rule is to prevent conflicts with strings. +" Handle special case where ' character can be part of a JOVIAL variable name. +syn match jovialIdentifier "[A-Z\$][A-Z0-9'\$]\+" + +syn region jovialString start="\s*'" skip=/''/ end=/'/ oneline + +" JOVIAL compiler directives -- see Section 9 in MIL-STD-1589C +syn region jovialPreProc start="\s*![A-Z]\+" end=/;/ + +syn keyword jovialOperator AND OR NOT XOR EQV MOD + +" See Section 2.1 in MIL-STD-1589C for data types +syn keyword jovialType ITEM B C P V +syn match jovialType "\" +syn match jovialType "\" +syn match jovialType "\" +syn match jovialType "\" + +syn keyword jovialStorageClass STATIC CONSTANT PARALLEL BLOCK N M D W + +syn keyword jovialStructure TABLE STATUS + +syn keyword jovialConstant NULL + +syn keyword jovialBoolean FALSE TRUE + +syn keyword jovialTypedef TYPE + +syn keyword jovialStatement ABORT BEGIN BY BYREF BYRES BYVAL CASE COMPOOL +syn keyword jovialStatement DEF DEFAULT DEFINE ELSE END EXIT FALLTHRU FOR +syn keyword jovialStatement GOTO IF INLINE INSTANCE LABEL LIKE OVERLAY POS +syn keyword jovialStatement PROC PROGRAM REC REF RENT REP RETURN START STOP +syn keyword jovialStatement TERM THEN WHILE + +" JOVIAL extensions, see section 8.2.2 in MIL-STD-1589C +syn keyword jovialStatement CONDITION ENCAPSULATION EXPORTS FREE HANDLER IN INTERRUPT NEW +syn keyword jovialStatement PROTECTED READONLY REGISTER SIGNAL TO UPDATE WITH WRITEONLY ZONE + +" implementation specific constants and functions, see section 1.4 in MIL-STD-1589C +syn keyword jovialConstant BITSINBYTE BITSINWORD LOCSINWORD +syn keyword jovialConstant BYTESINWORD BITSINPOINTER INTPRECISION +syn keyword jovialConstant FLOATPRECISION FIXEDPRECISION FLOATRADIX +syn keyword jovialConstant MAXFLOATPRECISION MAXFIXEDPRECISION +syn keyword jovialConstant MAXINTSIZE MAXBYTES MAXBITS +syn keyword jovialConstant MAXTABLESIZE MAXSTOP MINSTOP MAXSIGDIGITS +syn keyword jovialFunction BYTEPOS MAXINT MININT +syn keyword jovialFunction IMPLFLOATPRECISION IMPLFIXEDPRECISION IMPLINTSIZE +syn keyword jovialFunction MINSIZE MINFRACTION MINSCALE MINRELPRECISION +syn keyword jovialFunction MAXFLOAT MINFLOAT FLOATRELPRECISION +syn keyword jovialFunction FLOATUNDERFLOW MAXFIXED MINFIXED + +" JOVIAL built-in functions +syn keyword jovialFunction LOC NEXT BIT BYTE SHIFTL SHIFTR ABS SGN BITSIZE +syn keyword jovialFunction BYTESIZE WORDSIZE LBOUND UBOUND NWDSEN FIRST +syn keyword jovialFunction LAST NENT + +" Define the default highlighting. +hi def link jovialBitConstant Number +hi def link jovialBoolean Boolean +hi def link jovialComment Comment +hi def link jovialConstant Constant +hi def link jovialFloat Float +hi def link jovialFunction Function +" No color highlighting for JOVIAL identifiers. See above, +" this is to prevent confusion with JOVIAL strings +"hi def link jovialIdentifier Identifier +hi def link jovialNumber Number +hi def link jovialOperator Operator +hi def link jovialPreProc PreProc +hi def link jovialStatement Statement +hi def link jovialStorageClass StorageClass +hi def link jovialString String +hi def link jovialStructure Structure +hi def link jovialTodo Todo +hi def link jovialType Type +hi def link jovialTypedef Typedef + + +let b:current_syntax = "jovial" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/jproperties.vim b/share/vim/vim74/syntax/jproperties.vim similarity index 100% rename from share/vim/vim73/syntax/jproperties.vim rename to share/vim/vim74/syntax/jproperties.vim diff --git a/share/vim/vim73/syntax/jsp.vim b/share/vim/vim74/syntax/jsp.vim similarity index 100% rename from share/vim/vim73/syntax/jsp.vim rename to share/vim/vim74/syntax/jsp.vim diff --git a/share/vim/vim73/syntax/kconfig.vim b/share/vim/vim74/syntax/kconfig.vim similarity index 100% rename from share/vim/vim73/syntax/kconfig.vim rename to share/vim/vim74/syntax/kconfig.vim diff --git a/share/vim/vim73/syntax/kix.vim b/share/vim/vim74/syntax/kix.vim similarity index 100% rename from share/vim/vim73/syntax/kix.vim rename to share/vim/vim74/syntax/kix.vim diff --git a/share/vim/vim73/syntax/kscript.vim b/share/vim/vim74/syntax/kscript.vim similarity index 100% rename from share/vim/vim73/syntax/kscript.vim rename to share/vim/vim74/syntax/kscript.vim diff --git a/share/vim/vim74/syntax/kwt.vim b/share/vim/vim74/syntax/kwt.vim new file mode 100644 index 00000000..4c2c9d9d --- /dev/null +++ b/share/vim/vim74/syntax/kwt.vim @@ -0,0 +1,87 @@ +" Vim syntax file +" Language: kimwitu++ +" Maintainer: Michael Piefel +" Last Change: 2 May 2001 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Read the C++ syntax to start with +if version < 600 + source :p:h/cpp.vim +else + runtime! syntax/cpp.vim + unlet b:current_syntax +endif + +" kimwitu++ extentions + +" Don't stop at eol, messes around with CPP mode, but gives line spanning +" strings in unparse rules +syn region cCppString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat +syn keyword cType integer real casestring nocasestring voidptr list +syn keyword cType uview rview uview_enum rview_enum + +" avoid unparsing rule sth:view being scanned as label +syn clear cUserCont +syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel contained +syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel contained +syn match cUserCont "^\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained +syn match cUserCont ";\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained + +" highlight phylum decls +syn match kwtPhylum "^\I\i*:$" +syn match kwtPhylum "^\I\i*\s*{\s*\(!\|\I\)\i*\s*}\s*:$" + +syn keyword kwtStatement with foreach afterforeach provided +syn match kwtDecl "%\(uviewvar\|rviewvar\)" +syn match kwtDecl "^%\(uview\|rview\|ctor\|dtor\|base\|storageclass\|list\|attr\|member\|option\)" +syn match kwtOption "no-csgio\|no-unparse\|no-rewrite\|no-printdot\|no-hashtables\|smart-pointer\|weak-pointer" +syn match kwtSep "^%}$" +syn match kwtSep "^%{\(\s\+\I\i*\)*$" +syn match kwtCast "\= 508 || !exists("did_kwt_syn_inits") + if version < 508 + let did_kwt_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink kwtStatement cppStatement + HiLink kwtDecl cppStatement + HiLink kwtCast cppStatement + HiLink kwtSep Delimiter + HiLink kwtViews Label + HiLink kwtPhylum Type + HiLink kwtOption PreProc + "HiLink cText Comment + + delcommand HiLink +endif + +syn sync lines=300 + +let b:current_syntax = "kwt" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/lace.vim b/share/vim/vim74/syntax/lace.vim similarity index 100% rename from share/vim/vim73/syntax/lace.vim rename to share/vim/vim74/syntax/lace.vim diff --git a/share/vim/vim73/syntax/latte.vim b/share/vim/vim74/syntax/latte.vim similarity index 100% rename from share/vim/vim73/syntax/latte.vim rename to share/vim/vim74/syntax/latte.vim diff --git a/share/vim/vim73/syntax/ld.vim b/share/vim/vim74/syntax/ld.vim similarity index 100% rename from share/vim/vim73/syntax/ld.vim rename to share/vim/vim74/syntax/ld.vim diff --git a/share/vim/vim73/syntax/ldapconf.vim b/share/vim/vim74/syntax/ldapconf.vim similarity index 100% rename from share/vim/vim73/syntax/ldapconf.vim rename to share/vim/vim74/syntax/ldapconf.vim diff --git a/share/vim/vim73/syntax/ldif.vim b/share/vim/vim74/syntax/ldif.vim similarity index 100% rename from share/vim/vim73/syntax/ldif.vim rename to share/vim/vim74/syntax/ldif.vim diff --git a/share/vim/vim74/syntax/lex.vim b/share/vim/vim74/syntax/lex.vim new file mode 100644 index 00000000..b7aff34d --- /dev/null +++ b/share/vim/vim74/syntax/lex.vim @@ -0,0 +1,144 @@ +" Vim syntax file +" Language: Lex +" Maintainer: Charles E. Campbell +" Last Change: Nov 14, 2012 +" Version: 14 +" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax +" +" Option: +" lex_uses_cpp : if this variable exists, then C++ is loaded rather than C + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Read the C/C++ syntax to start with +let s:Cpath= fnameescape(expand(":p:h").(exists("g:lex_uses_cpp")? "/cpp.vim" : "/c.vim")) +if !filereadable(s:Cpath) + for s:Cpath in split(globpath(&rtp,(exists("g:lex_uses_cpp")? "syntax/cpp.vim" : "syntax/c.vim")),"\n") + if filereadable(fnameescape(s:Cpath)) + let s:Cpath= fnameescape(s:Cpath) + break + endif + endfor +endif +exe "syn include @lexCcode ".s:Cpath + +" --- ========= --- +" --- Lex stuff --- +" --- ========= --- + +" Options Section +syn match lexOptions '^%\s*option\>.*$' contains=lexPatString + +" Abbreviations Section +if has("folding") + syn region lexAbbrvBlock fold start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState +else + syn region lexAbbrvBlock start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState +endif +syn match lexAbbrv "^\I\i*\s"me=e-1 skipwhite contained nextgroup=lexAbbrvRegExp +syn match lexAbbrv "^%[sx]" contained +syn match lexAbbrvRegExp "\s\S.*$"lc=1 contained nextgroup=lexAbbrv,lexInclude +if has("folding") + syn region lexInclude fold matchgroup=lexSep start="^%{" end="%}" contained contains=@lexCcode + syn region lexAbbrvComment fold start="^\s\+/\*" end="\*/" contains=@Spell + syn region lexAbbrvComment fold start="\%^/\*" end="\*/" contains=@Spell + syn region lexStartState fold matchgroup=lexAbbrv start="^%\a\+" end="$" contained +else + syn region lexInclude matchgroup=lexSep start="^%{" end="%}" contained contains=@lexCcode + syn region lexAbbrvComment start="^\s\+/\*" end="\*/" contains=@Spell + syn region lexAbbrvComment start="\%^/\*" end="\*/" contains=@Spell + syn region lexStartState matchgroup=lexAbbrv start="^%\a\+" end="$" contained +endif + +"%% : Patterns {Actions} +if has("folding") + syn region lexPatBlock fold matchgroup=Todo start="^%%$" matchgroup=Todo end="^%\ze%$" skipnl skipwhite nextgroup=lexFinalCodeBlock contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude + syn region lexPat fold start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 skipwhite contained nextgroup=lexMorePat,lexPatSep,lexPattern contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace + syn region lexPatInclude fold matchgroup=lexSep start="^%{" end="%}" contained contains=lexPatCode + syn region lexBrace fold start="\[" skip=+\\\\\|\\+ end="]" contained + syn region lexPatString fold matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained +else + syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite nextgroup=lexFinalCodeBlock contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude + syn region lexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 skipwhite contained nextgroup=lexMorePat,lexPatSep,lexPattern contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace + syn region lexPatInclude matchgroup=lexSep start="^%{" end="%}" contained contains=lexPatCode + syn region lexBrace start="\[" skip=+\\\\\|\\+ end="]" contained + syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained +endif +syn match lexPatTag "^<\I\i*\(,\I\i*\)*>" contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep +syn match lexPatTagZone "^<\I\i*\(,\I\i*\)*>\s\+\ze{" contained nextgroup=lexPatTagZoneStart +syn match lexPatTag +^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+ contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep + +" Lex Patterns +syn region lexPattern start='[^ \t{}]' end="$" contained contains=lexPatRange +syn region lexPatRange matchgroup=Delimiter start='\[' skip='\\\\\|\\.' end='\]' contains=lexEscape +syn match lexEscape '\%(\\\\\)*\\.' contained + +if has("folding") + syn region lexPatTagZoneStart matchgroup=lexPatTag fold start='{' end='}' contained contains=lexPat,lexPatComment + syn region lexPatComment start="\s\+/\*" end="\*/" fold skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell +else + syn region lexPatTagZoneStart matchgroup=lexPatTag start='{' end='}' contained contains=lexPat,lexPatComment + syn region lexPatComment start="\s\+/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell +endif +syn match lexPatCodeLine "[^{\[].*" contained contains=@lexCcode +syn match lexMorePat "\s*|\s*$" skipnl contained nextgroup=lexPat,lexPatTag,lexPatComment +syn match lexPatSep "\s\+" contained nextgroup=lexMorePat,lexPatCode,lexPatCodeLine +syn match lexSlashQuote +\(\\\\\)*\\"+ contained +if has("folding") + syn region lexPatCode matchgroup=Delimiter start="{" end="}" fold skipnl contained contains=@lexCcode,lexCFunctions +else + syn region lexPatCode matchgroup=Delimiter start="{" end="}" skipnl contained contains=@lexCcode,lexCFunctions +endif + +" Lex "functions" which may appear in C/C++ code blocks +syn keyword lexCFunctions BEGIN input unput woutput yyleng yylook yytext +syn keyword lexCFunctions ECHO output winput wunput yyless yymore yywrap + +" %% +" lexAbbrevBlock +" %% +" lexPatBlock +" %% +" lexFinalCodeBlock +syn region lexFinalCodeBlock matchgroup=Todo start="%$"me=e-1 end="\%$" contained contains=@lexCcode + +" includes several ALLBUTs; these have to be treated so as to exclude lex* groups +syn cluster cParenGroup add=lex.* +syn cluster cDefineGroup add=lex.* +syn cluster cPreProcGroup add=lex.* +syn cluster cMultiGroup add=lex.* + +" Synchronization +syn sync clear +syn sync minlines=500 +syn sync match lexSyncPat grouphere lexPatBlock "^%[a-zA-Z]" +syn sync match lexSyncPat groupthere lexPatBlock "^<$" +syn sync match lexSyncPat groupthere lexPatBlock "^%%$" + +" The default highlighting. +hi def link lexAbbrvComment lexPatComment +hi def link lexAbbrvRegExp Macro +hi def link lexAbbrv SpecialChar +hi def link lexBrace lexPat +hi def link lexCFunctions Function +hi def link lexCstruct cStructure +hi def link lexMorePat SpecialChar +hi def link lexOptions PreProc +hi def link lexPatComment Comment +hi def link lexPat Function +hi def link lexPatString Function +hi def link lexPatTag Special +hi def link lexPatTagZone lexPatTag +hi def link lexSep Delimiter +hi def link lexSlashQuote lexPat +hi def link lexStartState Statement + +let b:current_syntax = "lex" + +" vim:ts=10 diff --git a/share/vim/vim73/syntax/lftp.vim b/share/vim/vim74/syntax/lftp.vim similarity index 100% rename from share/vim/vim73/syntax/lftp.vim rename to share/vim/vim74/syntax/lftp.vim diff --git a/share/vim/vim73/syntax/lhaskell.vim b/share/vim/vim74/syntax/lhaskell.vim similarity index 100% rename from share/vim/vim73/syntax/lhaskell.vim rename to share/vim/vim74/syntax/lhaskell.vim diff --git a/share/vim/vim73/syntax/libao.vim b/share/vim/vim74/syntax/libao.vim similarity index 100% rename from share/vim/vim73/syntax/libao.vim rename to share/vim/vim74/syntax/libao.vim diff --git a/share/vim/vim73/syntax/lifelines.vim b/share/vim/vim74/syntax/lifelines.vim similarity index 100% rename from share/vim/vim73/syntax/lifelines.vim rename to share/vim/vim74/syntax/lifelines.vim diff --git a/share/vim/vim73/syntax/lilo.vim b/share/vim/vim74/syntax/lilo.vim similarity index 100% rename from share/vim/vim73/syntax/lilo.vim rename to share/vim/vim74/syntax/lilo.vim diff --git a/share/vim/vim73/syntax/limits.vim b/share/vim/vim74/syntax/limits.vim similarity index 100% rename from share/vim/vim73/syntax/limits.vim rename to share/vim/vim74/syntax/limits.vim diff --git a/share/vim/vim74/syntax/liquid.vim b/share/vim/vim74/syntax/liquid.vim new file mode 100644 index 00000000..295a9177 --- /dev/null +++ b/share/vim/vim74/syntax/liquid.vim @@ -0,0 +1,138 @@ +" Vim syntax file +" Language: Liquid +" Maintainer: Tim Pope +" Filenames: *.liquid +" Last Change: 2013 May 30 + +if exists('b:current_syntax') + finish +endif + +if !exists('main_syntax') + let main_syntax = 'liquid' +endif + +if !exists('g:liquid_default_subtype') + let g:liquid_default_subtype = 'html' +endif + +if !exists('b:liquid_subtype') && main_syntax == 'liquid' + let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") + let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+') + if b:liquid_subtype == '' + let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+') + endif + if b:liquid_subtype == '' + let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$') + endif + if b:liquid_subtype == '' + let b:liquid_subtype = g:liquid_default_subtype + endif +endif + +if exists('b:liquid_subtype') && b:liquid_subtype != '' + exe 'runtime! syntax/'.b:liquid_subtype.'.vim' + unlet! b:current_syntax +endif + +syn case match + +if exists('b:liquid_subtype') && b:liquid_subtype != 'yaml' + " YAML Front Matter + syn include @liquidYamlTop syntax/yaml.vim + unlet! b:current_syntax + syn region liquidYamlHead start="\%^---$" end="^---\s*$" keepend contains=@liquidYamlTop,@Spell +endif + +if !exists('g:liquid_highlight_types') + let g:liquid_highlight_types = [] +endif + +if !exists('s:subtype') + let s:subtype = exists('b:liquid_subtype') ? b:liquid_subtype : '' + + for s:type in map(copy(g:liquid_highlight_types),'matchstr(v:val,"[^=]*$")') + if s:type =~ '\.' + let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*') + endif + exe 'syn include @liquidHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim' + unlet! b:current_syntax + endfor + unlet! s:type + + if s:subtype == '' + unlet! b:liquid_subtype + else + let b:liquid_subtype = s:subtype + endif + unlet s:subtype +endif + +syn region liquidStatement matchgroup=liquidDelimiter start="{%" end="%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend +syn region liquidExpression matchgroup=liquidDelimiter start="{{" end="}}" contains=@liquidExpression containedin=ALLBUT,@liquidExempt keepend +syn region liquidComment matchgroup=liquidDelimiter start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend +syn region liquidRaw matchgroup=liquidDelimiter start="{%\s*raw\s*%}" end="{%\s*endraw\s*%}" contains=TOP,@liquidExempt containedin=ALLBUT,@liquidExempt keepend + +syn cluster liquidExempt contains=liquidStatement,liquidExpression,liquidComment,liquidRaw,@liquidStatement,liquidYamlHead +syn cluster liquidStatement contains=liquidConditional,liquidRepeat,liquidKeyword,@liquidExpression +syn cluster liquidExpression contains=liquidOperator,liquidString,liquidNumber,liquidFloat,liquidBoolean,liquidNull,liquidEmpty,liquidPipe,liquidForloop + +syn keyword liquidKeyword highlight nextgroup=liquidTypeHighlight skipwhite contained +syn keyword liquidKeyword endhighlight contained +syn region liquidHighlight start="{%\s*highlight\s\+\w\+\s*%}" end="{% endhighlight %}" keepend + +for s:type in g:liquid_highlight_types + exe 'syn match liquidTypeHighlight "\<'.matchstr(s:type,'[^=]*').'\>" contained' + exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*%}" end="{% endhighlight %}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') +endfor +unlet! s:type + +syn region liquidString matchgroup=liquidQuote start=+"+ end=+"+ contained +syn region liquidString matchgroup=liquidQuote start=+'+ end=+'+ contained +syn match liquidNumber "-\=\<\d\+\>" contained +syn match liquidFloat "-\=\<\d\+\>\.\.\@!\%(\d\+\>\)\=" contained +syn keyword liquidBoolean true false contained +syn keyword liquidNull null nil contained +syn match liquidEmpty "\" contained + +syn keyword liquidOperator and or not contained +syn match liquidPipe '|' contained skipwhite nextgroup=liquidFilter + +syn keyword liquidFilter date capitalize downcase upcase first last join sort size strip_html strip_newlines newline_to_br replace replace_first remove remove_first truncate truncatewords prepend append minus plus times divided_by contained + +syn keyword liquidConditional if elsif else endif unless endunless case when endcase ifchanged endifchanged contained +syn keyword liquidRepeat for endfor tablerow endtablerow in contained +syn match liquidRepeat "\%({%\s*\)\@<=empty\>" contained +syn keyword liquidKeyword assign cycle include with contained + +syn keyword liquidForloop forloop nextgroup=liquidForloopDot contained +syn match liquidForloopDot "\." nextgroup=liquidForloopAttribute contained +syn keyword liquidForloopAttribute length index index0 rindex rindex0 first last contained + +syn keyword liquidTablerowloop tablerowloop nextgroup=liquidTablerowloopDot contained +syn match liquidTablerowloopDot "\." nextgroup=liquidTableForloopAttribute contained +syn keyword liquidTablerowloopAttribute length index index0 col col0 index0 rindex rindex0 first last col_first col_last contained + +hi def link liquidDelimiter PreProc +hi def link liquidComment Comment +hi def link liquidTypeHighlight Type +hi def link liquidConditional Conditional +hi def link liquidRepeat Repeat +hi def link liquidKeyword Keyword +hi def link liquidOperator Operator +hi def link liquidString String +hi def link liquidQuote Delimiter +hi def link liquidNumber Number +hi def link liquidFloat Float +hi def link liquidEmpty liquidNull +hi def link liquidNull liquidBoolean +hi def link liquidBoolean Boolean +hi def link liquidFilter Function +hi def link liquidForloop Identifier +hi def link liquidForloopAttribute Identifier + +let b:current_syntax = 'liquid' + +if exists('main_syntax') && main_syntax == 'liquid' + unlet main_syntax +endif diff --git a/share/vim/vim74/syntax/lisp.vim b/share/vim/vim74/syntax/lisp.vim new file mode 100644 index 00000000..74ec20bb --- /dev/null +++ b/share/vim/vim74/syntax/lisp.vim @@ -0,0 +1,625 @@ +" Vim syntax file +" Language: Lisp +" Maintainer: Dr. Charles E. Campbell, Jr. +" Last Change: Nov 16, 2010 +" Version: 22 +" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax +" +" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols +" taken from the HyperSpec +" Clisp additions courtesy of http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/emacs/lisp.vim + +" --------------------------------------------------------------------- +" Load Once: {{{1 +" For vim-version 5.x: Clear all syntax items +" For vim-version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if version >= 600 + setlocal iskeyword=38,42,43,45,47-58,60-62,64-90,97-122,_ +else + set iskeyword=38,42,43,45,47-58,60-62,64-90,97-122,_ +endif + +if exists("g:lispsyntax_ignorecase") || exists("g:lispsyntax_clisp") + set ignorecase +endif + +" --------------------------------------------------------------------- +" Clusters: {{{1 +syn cluster lispAtomCluster contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite +syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispEscapeSpecial,lispSymbol,lispVar,lispLeadWhite +if exists("g:lisp_instring") + syn cluster lispListCluster contains=@lispBaseListCluster,lispString,lispInString,lispInStringString +else + syn cluster lispListCluster contains=@lispBaseListCluster,lispString +endif + +syn case ignore + +" --------------------------------------------------------------------- +" Lists: {{{1 +syn match lispSymbol contained ![^()'`,"; \t]\+! +syn match lispBarSymbol contained !|..\{-}|! +if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 + syn region lispParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1 + syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2 + syn region lispParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen3 + syn region lispParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen4 + syn region lispParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen5 + syn region lispParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen6 + syn region lispParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen7 + syn region lispParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen8 + syn region lispParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen9 + syn region lispParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen0 +else + syn region lispList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=@lispListCluster + syn region lispBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=@lispListCluster +endif + +" --------------------------------------------------------------------- +" Atoms: {{{1 +syn match lispAtomMark "'" +syn match lispAtom "'("me=e-1 contains=lispAtomMark nextgroup=lispAtomList +syn match lispAtom "'[^ \t()]\+" contains=lispAtomMark +syn match lispAtomBarSymbol !'|..\{-}|! contains=lispAtomMark +syn region lispAtom start=+'"+ skip=+\\"+ end=+"+ +syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString,lispEscapeSpecial +syn match lispAtomNmbr contained "\<\d\+" +syn match lispLeadWhite contained "^\s\+" + +" --------------------------------------------------------------------- +" Standard Lisp Functions and Macros: {{{1 +syn keyword lispFunc * find-method pprint-indent +syn keyword lispFunc ** find-package pprint-linear +syn keyword lispFunc *** find-restart pprint-logical-block +syn keyword lispFunc + find-symbol pprint-newline +syn keyword lispFunc ++ finish-output pprint-pop +syn keyword lispFunc +++ first pprint-tab +syn keyword lispFunc - fixnum pprint-tabular +syn keyword lispFunc / flet prin1 +syn keyword lispFunc // float prin1-to-string +syn keyword lispFunc /// float-digits princ +syn keyword lispFunc /= float-precision princ-to-string +syn keyword lispFunc 1+ float-radix print +syn keyword lispFunc 1- float-sign print-not-readable +syn keyword lispFunc < floating-point-inexact print-not-readable-object +syn keyword lispFunc <= floating-point-invalid-operation print-object +syn keyword lispFunc = floating-point-overflow print-unreadable-object +syn keyword lispFunc > floating-point-underflow probe-file +syn keyword lispFunc >= floatp proclaim +syn keyword lispFunc abort floor prog +syn keyword lispFunc abs fmakunbound prog* +syn keyword lispFunc access force-output prog1 +syn keyword lispFunc acons format prog2 +syn keyword lispFunc acos formatter progn +syn keyword lispFunc acosh fourth program-error +syn keyword lispFunc add-method fresh-line progv +syn keyword lispFunc adjoin fround provide +syn keyword lispFunc adjust-array ftruncate psetf +syn keyword lispFunc adjustable-array-p ftype psetq +syn keyword lispFunc allocate-instance funcall push +syn keyword lispFunc alpha-char-p function pushnew +syn keyword lispFunc alphanumericp function-keywords putprop +syn keyword lispFunc and function-lambda-expression quote +syn keyword lispFunc append functionp random +syn keyword lispFunc apply gbitp random-state +syn keyword lispFunc applyhook gcd random-state-p +syn keyword lispFunc apropos generic-function rassoc +syn keyword lispFunc apropos-list gensym rassoc-if +syn keyword lispFunc aref gentemp rassoc-if-not +syn keyword lispFunc arithmetic-error get ratio +syn keyword lispFunc arithmetic-error-operands get-decoded-time rational +syn keyword lispFunc arithmetic-error-operation get-dispatch-macro-character rationalize +syn keyword lispFunc array get-internal-real-time rationalp +syn keyword lispFunc array-dimension get-internal-run-time read +syn keyword lispFunc array-dimension-limit get-macro-character read-byte +syn keyword lispFunc array-dimensions get-output-stream-string read-char +syn keyword lispFunc array-displacement get-properties read-char-no-hang +syn keyword lispFunc array-element-type get-setf-expansion read-delimited-list +syn keyword lispFunc array-has-fill-pointer-p get-setf-method read-eval-print +syn keyword lispFunc array-in-bounds-p get-universal-time read-from-string +syn keyword lispFunc array-rank getf read-line +syn keyword lispFunc array-rank-limit gethash read-preserving-whitespace +syn keyword lispFunc array-row-major-index go read-sequence +syn keyword lispFunc array-total-size graphic-char-p reader-error +syn keyword lispFunc array-total-size-limit handler-bind readtable +syn keyword lispFunc arrayp handler-case readtable-case +syn keyword lispFunc ash hash-table readtablep +syn keyword lispFunc asin hash-table-count real +syn keyword lispFunc asinh hash-table-p realp +syn keyword lispFunc assert hash-table-rehash-size realpart +syn keyword lispFunc assoc hash-table-rehash-threshold reduce +syn keyword lispFunc assoc-if hash-table-size reinitialize-instance +syn keyword lispFunc assoc-if-not hash-table-test rem +syn keyword lispFunc atan host-namestring remf +syn keyword lispFunc atanh identity remhash +syn keyword lispFunc atom if remove +syn keyword lispFunc base-char if-exists remove-duplicates +syn keyword lispFunc base-string ignorable remove-if +syn keyword lispFunc bignum ignore remove-if-not +syn keyword lispFunc bit ignore-errors remove-method +syn keyword lispFunc bit-and imagpart remprop +syn keyword lispFunc bit-andc1 import rename-file +syn keyword lispFunc bit-andc2 in-package rename-package +syn keyword lispFunc bit-eqv in-package replace +syn keyword lispFunc bit-ior incf require +syn keyword lispFunc bit-nand initialize-instance rest +syn keyword lispFunc bit-nor inline restart +syn keyword lispFunc bit-not input-stream-p restart-bind +syn keyword lispFunc bit-orc1 inspect restart-case +syn keyword lispFunc bit-orc2 int-char restart-name +syn keyword lispFunc bit-vector integer return +syn keyword lispFunc bit-vector-p integer-decode-float return-from +syn keyword lispFunc bit-xor integer-length revappend +syn keyword lispFunc block integerp reverse +syn keyword lispFunc boole interactive-stream-p room +syn keyword lispFunc boole-1 intern rotatef +syn keyword lispFunc boole-2 internal-time-units-per-second round +syn keyword lispFunc boole-and intersection row-major-aref +syn keyword lispFunc boole-andc1 invalid-method-error rplaca +syn keyword lispFunc boole-andc2 invoke-debugger rplacd +syn keyword lispFunc boole-c1 invoke-restart safety +syn keyword lispFunc boole-c2 invoke-restart-interactively satisfies +syn keyword lispFunc boole-clr isqrt sbit +syn keyword lispFunc boole-eqv keyword scale-float +syn keyword lispFunc boole-ior keywordp schar +syn keyword lispFunc boole-nand labels search +syn keyword lispFunc boole-nor lambda second +syn keyword lispFunc boole-orc1 lambda-list-keywords sequence +syn keyword lispFunc boole-orc2 lambda-parameters-limit serious-condition +syn keyword lispFunc boole-set last set +syn keyword lispFunc boole-xor lcm set-char-bit +syn keyword lispFunc boolean ldb set-difference +syn keyword lispFunc both-case-p ldb-test set-dispatch-macro-character +syn keyword lispFunc boundp ldiff set-exclusive-or +syn keyword lispFunc break least-negative-double-float set-macro-character +syn keyword lispFunc broadcast-stream least-negative-long-float set-pprint-dispatch +syn keyword lispFunc broadcast-stream-streams least-negative-normalized-double-float set-syntax-from-char +syn keyword lispFunc built-in-class least-negative-normalized-long-float setf +syn keyword lispFunc butlast least-negative-normalized-short-float setq +syn keyword lispFunc byte least-negative-normalized-single-float seventh +syn keyword lispFunc byte-position least-negative-short-float shadow +syn keyword lispFunc byte-size least-negative-single-float shadowing-import +syn keyword lispFunc call-arguments-limit least-positive-double-float shared-initialize +syn keyword lispFunc call-method least-positive-long-float shiftf +syn keyword lispFunc call-next-method least-positive-normalized-double-float short-float +syn keyword lispFunc capitalize least-positive-normalized-long-float short-float-epsilon +syn keyword lispFunc car least-positive-normalized-short-float short-float-negative-epsilon +syn keyword lispFunc case least-positive-normalized-single-float short-site-name +syn keyword lispFunc catch least-positive-short-float signal +syn keyword lispFunc ccase least-positive-single-float signed-byte +syn keyword lispFunc cdr length signum +syn keyword lispFunc ceiling let simple-condition +syn keyword lispFunc cell-error let* simple-array +syn keyword lispFunc cell-error-name lisp simple-base-string +syn keyword lispFunc cerror lisp-implementation-type simple-bit-vector +syn keyword lispFunc change-class lisp-implementation-version simple-bit-vector-p +syn keyword lispFunc char list simple-condition-format-arguments +syn keyword lispFunc char-bit list* simple-condition-format-control +syn keyword lispFunc char-bits list-all-packages simple-error +syn keyword lispFunc char-bits-limit list-length simple-string +syn keyword lispFunc char-code listen simple-string-p +syn keyword lispFunc char-code-limit listp simple-type-error +syn keyword lispFunc char-control-bit load simple-vector +syn keyword lispFunc char-downcase load-logical-pathname-translations simple-vector-p +syn keyword lispFunc char-equal load-time-value simple-warning +syn keyword lispFunc char-font locally sin +syn keyword lispFunc char-font-limit log single-flaot-epsilon +syn keyword lispFunc char-greaterp logand single-float +syn keyword lispFunc char-hyper-bit logandc1 single-float-epsilon +syn keyword lispFunc char-int logandc2 single-float-negative-epsilon +syn keyword lispFunc char-lessp logbitp sinh +syn keyword lispFunc char-meta-bit logcount sixth +syn keyword lispFunc char-name logeqv sleep +syn keyword lispFunc char-not-equal logical-pathname slot-boundp +syn keyword lispFunc char-not-greaterp logical-pathname-translations slot-exists-p +syn keyword lispFunc char-not-lessp logior slot-makunbound +syn keyword lispFunc char-super-bit lognand slot-missing +syn keyword lispFunc char-upcase lognor slot-unbound +syn keyword lispFunc char/= lognot slot-value +syn keyword lispFunc char< logorc1 software-type +syn keyword lispFunc char<= logorc2 software-version +syn keyword lispFunc char= logtest some +syn keyword lispFunc char> logxor sort +syn keyword lispFunc char>= long-float space +syn keyword lispFunc character long-float-epsilon special +syn keyword lispFunc characterp long-float-negative-epsilon special-form-p +syn keyword lispFunc check-type long-site-name special-operator-p +syn keyword lispFunc cis loop speed +syn keyword lispFunc class loop-finish sqrt +syn keyword lispFunc class-name lower-case-p stable-sort +syn keyword lispFunc class-of machine-instance standard +syn keyword lispFunc clear-input machine-type standard-char +syn keyword lispFunc clear-output machine-version standard-char-p +syn keyword lispFunc close macro-function standard-class +syn keyword lispFunc clrhash macroexpand standard-generic-function +syn keyword lispFunc code-char macroexpand-1 standard-method +syn keyword lispFunc coerce macroexpand-l standard-object +syn keyword lispFunc commonp macrolet step +syn keyword lispFunc compilation-speed make-array storage-condition +syn keyword lispFunc compile make-array store-value +syn keyword lispFunc compile-file make-broadcast-stream stream +syn keyword lispFunc compile-file-pathname make-char stream-element-type +syn keyword lispFunc compiled-function make-concatenated-stream stream-error +syn keyword lispFunc compiled-function-p make-condition stream-error-stream +syn keyword lispFunc compiler-let make-dispatch-macro-character stream-external-format +syn keyword lispFunc compiler-macro make-echo-stream streamp +syn keyword lispFunc compiler-macro-function make-hash-table streamup +syn keyword lispFunc complement make-instance string +syn keyword lispFunc complex make-instances-obsolete string-capitalize +syn keyword lispFunc complexp make-list string-char +syn keyword lispFunc compute-applicable-methods make-load-form string-char-p +syn keyword lispFunc compute-restarts make-load-form-saving-slots string-downcase +syn keyword lispFunc concatenate make-method string-equal +syn keyword lispFunc concatenated-stream make-package string-greaterp +syn keyword lispFunc concatenated-stream-streams make-pathname string-left-trim +syn keyword lispFunc cond make-random-state string-lessp +syn keyword lispFunc condition make-sequence string-not-equal +syn keyword lispFunc conjugate make-string string-not-greaterp +syn keyword lispFunc cons make-string-input-stream string-not-lessp +syn keyword lispFunc consp make-string-output-stream string-right-strim +syn keyword lispFunc constantly make-symbol string-right-trim +syn keyword lispFunc constantp make-synonym-stream string-stream +syn keyword lispFunc continue make-two-way-stream string-trim +syn keyword lispFunc control-error makunbound string-upcase +syn keyword lispFunc copy-alist map string/= +syn keyword lispFunc copy-list map-into string< +syn keyword lispFunc copy-pprint-dispatch mapc string<= +syn keyword lispFunc copy-readtable mapcan string= +syn keyword lispFunc copy-seq mapcar string> +syn keyword lispFunc copy-structure mapcon string>= +syn keyword lispFunc copy-symbol maphash stringp +syn keyword lispFunc copy-tree mapl structure +syn keyword lispFunc cos maplist structure-class +syn keyword lispFunc cosh mask-field structure-object +syn keyword lispFunc count max style-warning +syn keyword lispFunc count-if member sublim +syn keyword lispFunc count-if-not member-if sublis +syn keyword lispFunc ctypecase member-if-not subseq +syn keyword lispFunc debug merge subsetp +syn keyword lispFunc decf merge-pathname subst +syn keyword lispFunc declaim merge-pathnames subst-if +syn keyword lispFunc declaration method subst-if-not +syn keyword lispFunc declare method-combination substitute +syn keyword lispFunc decode-float method-combination-error substitute-if +syn keyword lispFunc decode-universal-time method-qualifiers substitute-if-not +syn keyword lispFunc defclass min subtypep +syn keyword lispFunc defconstant minusp svref +syn keyword lispFunc defgeneric mismatch sxhash +syn keyword lispFunc define-compiler-macro mod symbol +syn keyword lispFunc define-condition most-negative-double-float symbol-function +syn keyword lispFunc define-method-combination most-negative-fixnum symbol-macrolet +syn keyword lispFunc define-modify-macro most-negative-long-float symbol-name +syn keyword lispFunc define-setf-expander most-negative-short-float symbol-package +syn keyword lispFunc define-setf-method most-negative-single-float symbol-plist +syn keyword lispFunc define-symbol-macro most-positive-double-float symbol-value +syn keyword lispFunc defmacro most-positive-fixnum symbolp +syn keyword lispFunc defmethod most-positive-long-float synonym-stream +syn keyword lispFunc defpackage most-positive-short-float synonym-stream-symbol +syn keyword lispFunc defparameter most-positive-single-float sys +syn keyword lispFunc defsetf muffle-warning system +syn keyword lispFunc defstruct multiple-value-bind t +syn keyword lispFunc deftype multiple-value-call tagbody +syn keyword lispFunc defun multiple-value-list tailp +syn keyword lispFunc defvar multiple-value-prog1 tan +syn keyword lispFunc delete multiple-value-seteq tanh +syn keyword lispFunc delete-duplicates multiple-value-setq tenth +syn keyword lispFunc delete-file multiple-values-limit terpri +syn keyword lispFunc delete-if name-char the +syn keyword lispFunc delete-if-not namestring third +syn keyword lispFunc delete-package nbutlast throw +syn keyword lispFunc denominator nconc time +syn keyword lispFunc deposit-field next-method-p trace +syn keyword lispFunc describe nil translate-logical-pathname +syn keyword lispFunc describe-object nintersection translate-pathname +syn keyword lispFunc destructuring-bind ninth tree-equal +syn keyword lispFunc digit-char no-applicable-method truename +syn keyword lispFunc digit-char-p no-next-method truncase +syn keyword lispFunc directory not truncate +syn keyword lispFunc directory-namestring notany two-way-stream +syn keyword lispFunc disassemble notevery two-way-stream-input-stream +syn keyword lispFunc division-by-zero notinline two-way-stream-output-stream +syn keyword lispFunc do nreconc type +syn keyword lispFunc do* nreverse type-error +syn keyword lispFunc do-all-symbols nset-difference type-error-datum +syn keyword lispFunc do-exeternal-symbols nset-exclusive-or type-error-expected-type +syn keyword lispFunc do-external-symbols nstring type-of +syn keyword lispFunc do-symbols nstring-capitalize typecase +syn keyword lispFunc documentation nstring-downcase typep +syn keyword lispFunc dolist nstring-upcase unbound-slot +syn keyword lispFunc dotimes nsublis unbound-slot-instance +syn keyword lispFunc double-float nsubst unbound-variable +syn keyword lispFunc double-float-epsilon nsubst-if undefined-function +syn keyword lispFunc double-float-negative-epsilon nsubst-if-not unexport +syn keyword lispFunc dpb nsubstitute unintern +syn keyword lispFunc dribble nsubstitute-if union +syn keyword lispFunc dynamic-extent nsubstitute-if-not unless +syn keyword lispFunc ecase nth unread +syn keyword lispFunc echo-stream nth-value unread-char +syn keyword lispFunc echo-stream-input-stream nthcdr unsigned-byte +syn keyword lispFunc echo-stream-output-stream null untrace +syn keyword lispFunc ed number unuse-package +syn keyword lispFunc eighth numberp unwind-protect +syn keyword lispFunc elt numerator update-instance-for-different-class +syn keyword lispFunc encode-universal-time nunion update-instance-for-redefined-class +syn keyword lispFunc end-of-file oddp upgraded-array-element-type +syn keyword lispFunc endp open upgraded-complex-part-type +syn keyword lispFunc enough-namestring open-stream-p upper-case-p +syn keyword lispFunc ensure-directories-exist optimize use-package +syn keyword lispFunc ensure-generic-function or use-value +syn keyword lispFunc eq otherwise user +syn keyword lispFunc eql output-stream-p user-homedir-pathname +syn keyword lispFunc equal package values +syn keyword lispFunc equalp package-error values-list +syn keyword lispFunc error package-error-package vector +syn keyword lispFunc etypecase package-name vector-pop +syn keyword lispFunc eval package-nicknames vector-push +syn keyword lispFunc eval-when package-shadowing-symbols vector-push-extend +syn keyword lispFunc evalhook package-use-list vectorp +syn keyword lispFunc evenp package-used-by-list warn +syn keyword lispFunc every packagep warning +syn keyword lispFunc exp pairlis when +syn keyword lispFunc export parse-error wild-pathname-p +syn keyword lispFunc expt parse-integer with-accessors +syn keyword lispFunc extended-char parse-namestring with-compilation-unit +syn keyword lispFunc fboundp pathname with-condition-restarts +syn keyword lispFunc fceiling pathname-device with-hash-table-iterator +syn keyword lispFunc fdefinition pathname-directory with-input-from-string +syn keyword lispFunc ffloor pathname-host with-open-file +syn keyword lispFunc fifth pathname-match-p with-open-stream +syn keyword lispFunc file-author pathname-name with-output-to-string +syn keyword lispFunc file-error pathname-type with-package-iterator +syn keyword lispFunc file-error-pathname pathname-version with-simple-restart +syn keyword lispFunc file-length pathnamep with-slots +syn keyword lispFunc file-namestring peek-char with-standard-io-syntax +syn keyword lispFunc file-position phase write +syn keyword lispFunc file-stream pi write-byte +syn keyword lispFunc file-string-length plusp write-char +syn keyword lispFunc file-write-date pop write-line +syn keyword lispFunc fill position write-sequence +syn keyword lispFunc fill-pointer position-if write-string +syn keyword lispFunc find position-if-not write-to-string +syn keyword lispFunc find-all-symbols pprint y-or-n-p +syn keyword lispFunc find-class pprint-dispatch yes-or-no-p +syn keyword lispFunc find-if pprint-exit-if-list-exhausted zerop +syn keyword lispFunc find-if-not pprint-fill + +syn match lispFunc "\" +if exists("g:lispsyntax_clisp") + " CLISP FFI: + syn match lispFunc "\<\(ffi:\)\?with-c-\(place\|var\)\>" + syn match lispFunc "\<\(ffi:\)\?with-foreign-\(object\|string\)\>" + syn match lispFunc "\<\(ffi:\)\?default-foreign-\(language\|library\)\>" + syn match lispFunc "\<\([us]_\?\)\?\(element\|deref\|cast\|slot\|validp\)\>" + syn match lispFunc "\<\(ffi:\)\?set-foreign-pointer\>" + syn match lispFunc "\<\(ffi:\)\?allocate-\(deep\|shallow\)\>" + syn match lispFunc "\<\(ffi:\)\?c-lines\>" + syn match lispFunc "\<\(ffi:\)\?foreign-\(value\|free\|variable\|function\|object\)\>" + syn match lispFunc "\<\(ffi:\)\?foreign-address\(-null\|unsigned\)\?\>" + syn match lispFunc "\<\(ffi:\)\?undigned-foreign-address\>" + syn match lispFunc "\<\(ffi:\)\?c-var-\(address\|object\)\>" + syn match lispFunc "\<\(ffi:\)\?typeof\>" + syn match lispFunc "\<\(ffi:\)\?\(bit\)\?sizeof\>" +" CLISP Macros, functions et al: + syn match lispFunc "\<\(ext:\)\?with-collect\>" + syn match lispFunc "\<\(ext:\)\?letf\*\?\>" + syn match lispFunc "\<\(ext:\)\?finalize\>\>" + syn match lispFunc "\<\(ext:\)\?memoized\>" + syn match lispFunc "\<\(ext:\)\?getenv\>" + syn match lispFunc "\<\(ext:\)\?convert-string-\(to\|from\)-bytes\>" + syn match lispFunc "\<\(ext:\)\?ethe\>" + syn match lispFunc "\<\(ext:\)\?with-gensyms\>" + syn match lispFunc "\<\(ext:\)\?open-http\>" + syn match lispFunc "\<\(ext:\)\?string-concat\>" + syn match lispFunc "\<\(ext:\)\?with-http-\(in\|out\)put\>" + syn match lispFunc "\<\(ext:\)\?with-html-output\>" + syn match lispFunc "\<\(ext:\)\?expand-form\>" + syn match lispFunc "\<\(ext:\)\?\(without-\)\?package-lock\>" + syn match lispFunc "\<\(ext:\)\?re-export\>" + syn match lispFunc "\<\(ext:\)\?saveinitmem\>" + syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(integer\|float\)\>" + syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(char\|byte\)-sequence\>" + syn match lispFunc "\<\(custom:\)\?\*system-package-list\*\>" + syn match lispFunc "\<\(custom:\)\?\*ansi\*\>" +endif + +" --------------------------------------------------------------------- +" Lisp Keywords (modifiers): {{{1 +syn keyword lispKey :abort :from-end :overwrite +syn keyword lispKey :adjustable :gensym :predicate +syn keyword lispKey :append :host :preserve-whitespace +syn keyword lispKey :array :if-does-not-exist :pretty +syn keyword lispKey :base :if-exists :print +syn keyword lispKey :case :include :print-function +syn keyword lispKey :circle :index :probe +syn keyword lispKey :conc-name :inherited :radix +syn keyword lispKey :constructor :initial-contents :read-only +syn keyword lispKey :copier :initial-element :rehash-size +syn keyword lispKey :count :initial-offset :rehash-threshold +syn keyword lispKey :create :initial-value :rename +syn keyword lispKey :default :input :rename-and-delete +syn keyword lispKey :defaults :internal :size +syn keyword lispKey :device :io :start +syn keyword lispKey :direction :junk-allowed :start1 +syn keyword lispKey :directory :key :start2 +syn keyword lispKey :displaced-index-offset :length :stream +syn keyword lispKey :displaced-to :level :supersede +syn keyword lispKey :element-type :name :test +syn keyword lispKey :end :named :test-not +syn keyword lispKey :end1 :new-version :type +syn keyword lispKey :end2 :nicknames :use +syn keyword lispKey :error :output :verbose +syn keyword lispKey :escape :output-file :version +syn keyword lispKey :external +" defpackage arguments +syn keyword lispKey :documentation :shadowing-import-from :modern :export +syn keyword lispKey :case-sensitive :case-inverted :shadow :import-from :intern +" lambda list keywords +syn keyword lispKey &allow-other-keys &aux &body +syn keyword lispKey &environment &key &optional &rest &whole +" make-array argument +syn keyword lispKey :fill-pointer +" readtable-case values +syn keyword lispKey :upcase :downcase :preserve :invert +" eval-when situations +syn keyword lispKey :load-toplevel :compile-toplevel :execute +" ANSI Extended LOOP: +syn keyword lispKey :while :until :for :do :if :then :else :when :unless :in +syn keyword lispKey :across :finally :collect :nconc :maximize :minimize :sum +syn keyword lispKey :and :with :initially :append :into :count :end :repeat +syn keyword lispKey :always :never :thereis :from :to :upto :downto :below +syn keyword lispKey :above :by :on :being :each :the :hash-key :hash-keys +syn keyword lispKey :hash-value :hash-values :using :of-type :upfrom :downfrom +if exists("g:lispsyntax_clisp") + " CLISP FFI: + syn keyword lispKey :arguments :return-type :library :full :malloc-free + syn keyword lispKey :none :alloca :in :out :in-out :stdc-stdcall :stdc :c + syn keyword lispKey :language :built-in :typedef :external + syn keyword lispKey :fini :init-once :init-always +endif + +" --------------------------------------------------------------------- +" Standard Lisp Variables: {{{1 +syn keyword lispVar *applyhook* *load-pathname* *print-pprint-dispatch* +syn keyword lispVar *break-on-signals* *load-print* *print-pprint-dispatch* +syn keyword lispVar *break-on-signals* *load-truename* *print-pretty* +syn keyword lispVar *break-on-warnings* *load-verbose* *print-radix* +syn keyword lispVar *compile-file-pathname* *macroexpand-hook* *print-readably* +syn keyword lispVar *compile-file-pathname* *modules* *print-right-margin* +syn keyword lispVar *compile-file-truename* *package* *print-right-margin* +syn keyword lispVar *compile-file-truename* *print-array* *query-io* +syn keyword lispVar *compile-print* *print-base* *random-state* +syn keyword lispVar *compile-verbose* *print-case* *read-base* +syn keyword lispVar *compile-verbose* *print-circle* *read-default-float-format* +syn keyword lispVar *debug-io* *print-escape* *read-eval* +syn keyword lispVar *debugger-hook* *print-gensym* *read-suppress* +syn keyword lispVar *default-pathname-defaults* *print-length* *readtable* +syn keyword lispVar *error-output* *print-level* *standard-input* +syn keyword lispVar *evalhook* *print-lines* *standard-output* +syn keyword lispVar *features* *print-miser-width* *terminal-io* +syn keyword lispVar *gensym-counter* *print-miser-width* *trace-output* + +" --------------------------------------------------------------------- +" Strings: {{{1 +syn region lispString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell +if exists("g:lisp_instring") + syn region lispInString keepend matchgroup=Delimiter start=+"(+rs=s+1 skip=+|.\{-}|+ matchgroup=Delimiter end=+)"+ contains=@lispBaseListCluster,lispInStringString + syn region lispInStringString start=+\\"+ skip=+\\\\+ end=+\\"+ contained +endif + +" --------------------------------------------------------------------- +" Shared with Xlisp, Declarations, Macros, Functions: {{{1 +syn keyword lispDecl defmacro do-all-symbols labels +syn keyword lispDecl defsetf do-external-symbols let +syn keyword lispDecl deftype do-symbols locally +syn keyword lispDecl defun dotimes macrolet +syn keyword lispDecl do* flet multiple-value-bind +if exists("g:lispsyntax_clisp") + " CLISP FFI: + syn match lispDecl "\<\(ffi:\)\?def-c-\(var\|const\|enum\|type\|struct\)\>" + syn match lispDecl "\<\(ffi:\)\?def-call-\(out\|in\)\>" + syn match lispDecl "\<\(ffi:\)\?c-\(function\|struct\|pointer\|string\)\>" + syn match lispDecl "\<\(ffi:\)\?c-ptr\(-null\)\?\>" + syn match lispDecl "\<\(ffi:\)\?c-array\(-ptr\|-max\)\?\>" + syn match lispDecl "\<\(ffi:\)\?[us]\?\(char\|short\|int\|long\)\>" + syn match lispDecl "\<\(win32:\|w32\)\?d\?word\>" + syn match lispDecl "\<\([us]_\?\)\?int\(8\|16\|32\|64\)\(_t\)\?\>" + syn keyword lispDecl size_t off_t time_t handle +endif + +" --------------------------------------------------------------------- +" Numbers: supporting integers and floating point numbers {{{1 +syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\=" +syn match lispNumber "-\=\(\d\+/\d\+\)" + +syn match lispEscapeSpecial "\*\w[a-z_0-9-]*\*" +syn match lispEscapeSpecial !#|[^()'`,"; \t]\+|#! +syn match lispEscapeSpecial !#x\x\+! +syn match lispEscapeSpecial !#o\o\+! +syn match lispEscapeSpecial !#b[01]\+! +syn match lispEscapeSpecial !#\\[ -}\~]! +syn match lispEscapeSpecial !#[':][^()'`,"; \t]\+! +syn match lispEscapeSpecial !#([^()'`,"; \t]\+)! +syn match lispEscapeSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)! +syn match lispEscapeSpecial "\<+[a-zA-Z_][a-zA-Z_0-9-]*+\>" + +syn match lispConcat "\s\.\s" +syn match lispParenError ")" + +" --------------------------------------------------------------------- +" Comments: {{{1 +syn cluster lispCommentGroup contains=lispTodo,@Spell +syn match lispComment ";.*$" contains=@lispCommentGroup +syn region lispCommentRegion start="#|" end="|#" contains=lispCommentRegion,@lispCommentGroup +syn keyword lispTodo contained combak combak: todo todo: + +" --------------------------------------------------------------------- +" Synchronization: {{{1 +syn sync lines=100 + +" --------------------------------------------------------------------- +" Define Highlighting: {{{1 +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 + command -nargs=+ HiLink hi def link + + HiLink lispCommentRegion lispComment + HiLink lispAtomNmbr lispNumber + HiLink lispAtomMark lispMark + HiLink lispInStringString lispString + + HiLink lispAtom Identifier + HiLink lispAtomBarSymbol Special + HiLink lispBarSymbol Special + HiLink lispComment Comment + HiLink lispConcat Statement + HiLink lispDecl Statement + HiLink lispFunc Statement + HiLink lispKey Type + HiLink lispMark Delimiter + HiLink lispNumber Number + HiLink lispParenError Error + HiLink lispEscapeSpecial Type + HiLink lispString String + HiLink lispTodo Todo + HiLink lispVar Statement + + if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 + if &bg == "dark" + hi def hlLevel0 ctermfg=red guifg=red1 + hi def hlLevel1 ctermfg=yellow guifg=orange1 + hi def hlLevel2 ctermfg=green guifg=yellow1 + hi def hlLevel3 ctermfg=cyan guifg=greenyellow + hi def hlLevel4 ctermfg=magenta guifg=green1 + hi def hlLevel5 ctermfg=red guifg=springgreen1 + hi def hlLevel6 ctermfg=yellow guifg=cyan1 + hi def hlLevel7 ctermfg=green guifg=slateblue1 + hi def hlLevel8 ctermfg=cyan guifg=magenta1 + hi def hlLevel9 ctermfg=magenta guifg=purple1 + else + hi def hlLevel0 ctermfg=red guifg=red3 + hi def hlLevel1 ctermfg=darkyellow guifg=orangered3 + hi def hlLevel2 ctermfg=darkgreen guifg=orange2 + hi def hlLevel3 ctermfg=blue guifg=yellow3 + hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4 + hi def hlLevel5 ctermfg=red guifg=green4 + hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3 + hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4 + hi def hlLevel8 ctermfg=blue guifg=darkslateblue + hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet + endif + endif + + delcommand HiLink +endif + +let b:current_syntax = "lisp" + +" --------------------------------------------------------------------- +" vim: ts=8 nowrap fdm=marker diff --git a/share/vim/vim73/syntax/lite.vim b/share/vim/vim74/syntax/lite.vim similarity index 100% rename from share/vim/vim73/syntax/lite.vim rename to share/vim/vim74/syntax/lite.vim diff --git a/share/vim/vim73/syntax/litestep.vim b/share/vim/vim74/syntax/litestep.vim similarity index 100% rename from share/vim/vim73/syntax/litestep.vim rename to share/vim/vim74/syntax/litestep.vim diff --git a/share/vim/vim73/syntax/loginaccess.vim b/share/vim/vim74/syntax/loginaccess.vim similarity index 100% rename from share/vim/vim73/syntax/loginaccess.vim rename to share/vim/vim74/syntax/loginaccess.vim diff --git a/share/vim/vim74/syntax/logindefs.vim b/share/vim/vim74/syntax/logindefs.vim new file mode 100644 index 00000000..59d18e7e --- /dev/null +++ b/share/vim/vim74/syntax/logindefs.vim @@ -0,0 +1,174 @@ +" Vim syntax file +" Language: login.defs(5) configuration file +" Maintainer: Nikolai Weibull +" Latest Revision: 2010-11-29 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn match logindefsBegin display '^' + \ nextgroup= + \ logindefsComment, + \ @logindefsKeyword + \ skipwhite + +syn region logindefsComment display oneline start='^\s*#' end='$' + \ contains=logindefsTodo,@Spell + +syn keyword logindefsTodo contained TODO FIXME XXX NOTE + +syn cluster logindefsKeyword contains= + \ logindefsBooleanKeyword, + \ logindefsEncryptKeyword, + \ logindefsNumberKeyword, + \ logindefsPathKeyword, + \ logindefsPathsKeyword, + \ logindefsStringKeyword + +syn keyword logindefsBooleanKeyword contained + \ CHFN_AUTH + \ CHSH_AUTH + \ CREATE_HOME + \ DEFAULT_HOME + \ FAILLOG_ENAB + \ LASTLOG_ENAB + \ LOG_OK_LOGINS + \ LOG_UNKFAIL_ENAB + \ MAIL_CHECK_ENAB + \ MD5_CRYPT_ENAB + \ OBSCURE_CHECKS_ENAB + \ PASS_ALWAYS_WARN + \ PORTTIME_CHECKS_ENAB + \ QUOTAS_ENAB + \ SU_WHEEL_ONLY + \ SYSLOG_SG_ENAB + \ SYSLOG_SU_ENAB + \ USERGROUPS_ENAB + \ nextgroup=logindefsBoolean skipwhite + +syn keyword logindefsBoolean contained yes no + +syn keyword logindefsEncryptKeyword contained + \ ENCRYPT_METHOD + \ nextgroup=logindefsEncryptMethod skipwhite + +syn keyword logindefsEncryptMethod contained + \ DES + \ MD5 + \ SHA256 + \ SHA512 + +syn keyword logindefsNumberKeyword contained + \ ERASECHAR + \ FAIL_DELAY + \ GID_MAX + \ GID_MIN + \ KILLCHAR + \ LOGIN_RETRIES + \ LOGIN_TIMEOUT + \ MAX_MEMBERS_PER_GROUP + \ PASS_CHANGE_TRIES + \ PASS_MAX_DAYS + \ PASS_MIN_DAYS + \ PASS_WARN_AGE + \ PASS_MAX_LEN + \ PASS_MIN_LEN + \ SHA_CRYPT_MAX_ROUNDS + \ SHA_CRYPT_MIN_ROUNDS + \ SYS_GID_MAX + \ SYS_GID_MIN + \ SYS_UID_MAX + \ SYS_UID_MIN + \ UID_MAX + \ UID_MIN + \ ULIMIT + \ UMASK + \ nextgroup=@logindefsNumber skipwhite + +syn cluster logindefsNumber contains= + \ logindefsDecimal, + \ logindefsHex, + \ logindefsOctal, + \ logindefsOctalError + +syn match logindefsDecimal contained '\<\d\+\>' + +syn match logindefsHex contained display '\<0x\x\+\>' + +syn match logindefsOctal contained display '\<0\o\+\>' + \ contains=logindefsOctalZero +syn match logindefsOctalZero contained display '\<0' + +syn match logindefsOctalError contained display '\<0\o*[89]\d*\>' + +syn keyword logindefsPathKeyword contained + \ ENVIRON_FILE + \ FAKE_SHELL + \ FTMP_FILE + \ HUSHLOGIN_FILE + \ ISSUE_FILE + \ MAIL_DIR + \ MAIL_FILE + \ NOLOGINS_FILE + \ SULOG_FILE + \ TTYTYPE_FILE + \ nextgroup=logindefsPath skipwhite + +syn match logindefsPath contained '[[:graph:]]\+' + +syn keyword logindefsPathsKeyword contained + \ CONSOLE + \ ENV_PATH + \ ENV_SUPATH + \ MOTD_FILE + \ nextgroup=logindefsPaths skipwhite + +syn match logindefsPaths contained '[^:]\+' + \ nextgroup=logindefsPathDelim + +syn match logindefsPathDelim contained ':' nextgroup=logindefsPaths + +syn keyword logindefsStringKeyword contained + \ CHFN_RESTRICT + \ CONSOLE_GROUPS + \ ENV_HZ + \ ENV_TZ + \ LOGIN_STRING + \ SU_NAME + \ TTYGROUP + \ TTYPERM + \ USERDEL_CMD + \ nextgroup=logindefsString skipwhite + +syn match logindefsString contained '[[:graph:]]\+' + +hi def link logindefsComment Comment +hi def link logindefsTodo Todo +hi def link logindefsKeyword Keyword +hi def link logindefsBooleanKeyword logindefsKeyword +hi def link logindefsEncryptKeyword logindefsKeyword +hi def link logindefsNumberKeyword logindefsKeyword +hi def link logindefsPathKeyword logindefsKeyword +hi def link logindefsPathsKeyword logindefsKeyword +hi def link logindefsStringKeyword logindefsKeyword +hi def link logindefsBoolean Boolean +hi def link logindefsEncryptMethod Type +hi def link logindefsNumber Number +hi def link logindefsDecimal logindefsNumber +hi def link logindefsHex logindefsNumber +hi def link logindefsOctal logindefsNumber +hi def link logindefsOctalZero PreProc +hi def link logindefsOctalError Error +hi def link logindefsPath String +hi def link logindefsPaths logindefsPath +hi def link logindefsPathDelim Delimiter +hi def link logindefsString String + +let b:current_syntax = "logindefs" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim74/syntax/logtalk.vim b/share/vim/vim74/syntax/logtalk.vim new file mode 100644 index 00000000..be34c7ed --- /dev/null +++ b/share/vim/vim74/syntax/logtalk.vim @@ -0,0 +1,450 @@ +" Vim syntax file +" +" Language: Logtalk +" Maintainer: Paulo Moura +" Last Change: February 4, 2012 + + +" Quit when a syntax file was already loaded: + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Logtalk is case sensitive: + +syn case match + + +" Logtalk variables + +syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>" + + +" Logtalk clause functor + +syn match logtalkOperator ":-" + + +" Logtalk quoted atoms and strings + +syn region logtalkString start=+"+ skip=+\\"+ end=+"+ +syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+ contains=logtalkEscapeSequence + +syn match logtalkEscapeSequence contained "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)" + + +" Logtalk message sending operators + +syn match logtalkOperator "::" +syn match logtalkOperator ":" +syn match logtalkOperator "\^\^" + + +" Logtalk external call + +syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL + + +" Logtalk opening entity directives + +syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment +syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment +syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment + + +" Logtalk closing entity directives + +syn match logtalkCloseEntityDir ":- end_object\." +syn match logtalkCloseEntityDir ":- end_protocol\." +syn match logtalkCloseEntityDir ":- end_category\." + + +" Logtalk entity relations + +syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained +syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained +syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained +syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained +syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained +syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="complements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained + + +" Logtalk directives + +syn region logtalkDir matchgroup=logtalkDirTag start=":- if(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- elif(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn match logtalkDirTag ":- else\." +syn match logtalkDirTag ":- endif\." +syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- coinductive(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom +syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn match logtalkDirTag ":- dynamic\." +syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_non_terminal(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- set_logtalk_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- synchronized(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn match logtalkDirTag ":- synchronized\." +syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn match logtalkDirTag ":- threaded\." + + +" Prolog directives + +syn region logtalkDir matchgroup=logtalkDirTag start=":- ensure_loaded(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- include(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- set_prolog_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL + + +" Module directives + +syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- reexport(" matchgroup=logtalkDirTag end=")\." contains=ALL +syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL + + +" Logtalk built-in predicates + +syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze(" + +syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze(" + +syn match logtalkBuiltIn "\" +syn match logtalkKeyword "\" +syn match logtalkKeyword "\" +syn match logtalkOperator "->" +syn match logtalkKeyword "\" +syn match logtalkOperator "@>=" + + +" Term creation and decomposition + +syn match logtalkKeyword "\" + + +" Arithemtic comparison + +syn match logtalkOperator "=:=" +syn match logtalkOperator "=\\=" +syn match logtalkOperator "<" +syn match logtalkOperator "=<" +syn match logtalkOperator ">" +syn match logtalkOperator ">=" + + +" Stream selection and control + +syn match logtalkKeyword "\<\(curren\|se\)t_\(in\|out\)put\ze(" +syn match logtalkKeyword "\" +syn match logtalkKeyword "\" +syn match logtalkKeyword "\" + + +" Term input/output + +syn match logtalkKeyword "\" + + +" Atomic term processing + +syn match logtalkKeyword "\" + + +" Sorting + +syn match logtalkKeyword "\<\(key\)\?sort\ze(" + + +" Evaluable functors + +syn match logtalkOperator "+" +syn match logtalkOperator "-" +syn match logtalkOperator "\*" +syn match logtalkOperator "//" +syn match logtalkOperator "/" +syn match logtalkKeyword "\" +syn match logtalkKeyword "\" +syn match logtalkKeyword "\" +syn match logtalkKeyword "\" +syn match logtalkKeyword "\>" +syn match logtalkOperator "<<" +syn match logtalkOperator "/\\" +syn match logtalkOperator "\\/" +syn match logtalkOperator "\\" + + +" Logtalk list operator + +syn match logtalkOperator "|" + + +" Logtalk existential quantifier operator + +syn match logtalkOperator "\^" + + +" Logtalk numbers + +syn match logtalkNumber "\<\d\+\>" +syn match logtalkNumber "\<\d\+\.\d\+\>" +syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>" +syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>" +syn match logtalkNumber "\<0'.\|0''\|0'\"\>" +syn match logtalkNumber "\<0b[0-1]\+\>" +syn match logtalkNumber "\<0o\o\+\>" +syn match logtalkNumber "\<0x\x\+\>" + + +" Logtalk end-of-clause + +syn match logtalkOperator "\." + + +" Logtalk comments + +syn region logtalkBlockComment start="/\*" end="\*/" fold +syn match logtalkLineComment "%.*" + +syn cluster logtalkComment contains=logtalkBlockComment,logtalkLineComment + + +" Logtalk conditional compilation folding + +syn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE +syn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP +syn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP +syn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP + + + +" Logtalk entity folding + +syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL +syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL +syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL + + +syn sync ccomment logtalkBlockComment maxlines=50 + + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet + +if version >= 508 || !exists("did_logtalk_syn_inits") + if version < 508 + let did_logtalk_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink logtalkBlockComment Comment + HiLink logtalkLineComment Comment + + HiLink logtalkOpenEntityDir Normal + HiLink logtalkOpenEntityDirTag PreProc + + HiLink logtalkIfContainer PreProc + HiLink logtalkIf PreProc + HiLink logtalkElseIf PreProc + HiLink logtalkElse PreProc + + HiLink logtalkEntity Normal + + HiLink logtalkEntityRel Normal + HiLink logtalkEntityRelTag PreProc + + HiLink logtalkCloseEntityDir PreProc + + HiLink logtalkDir Normal + HiLink logtalkDirTag PreProc + + HiLink logtalkAtom String + HiLink logtalkString String + HiLink logtalkEscapeSequence SpecialChar + + HiLink logtalkNumber Number + + HiLink logtalkKeyword Keyword + + HiLink logtalkBuiltIn Keyword + HiLink logtalkBuiltInMethod Keyword + + HiLink logtalkOperator Operator + + HiLink logtalkExtCall Normal + HiLink logtalkExtCallTag Operator + + HiLink logtalkVariable Identifier + + delcommand HiLink + +endif + + +let b:current_syntax = "logtalk" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/lotos.vim b/share/vim/vim74/syntax/lotos.vim similarity index 100% rename from share/vim/vim73/syntax/lotos.vim rename to share/vim/vim74/syntax/lotos.vim diff --git a/share/vim/vim74/syntax/lout.vim b/share/vim/vim74/syntax/lout.vim new file mode 100644 index 00000000..9a34328a --- /dev/null +++ b/share/vim/vim74/syntax/lout.vim @@ -0,0 +1,153 @@ +" Vim syntax file +" Language: Lout +" Maintainer: Christian V. J. Brüssow +" Last Change: So 12 Feb 2012 15:15:03 CET +" Filenames: *.lout,*.lt +" URL: http://www.cvjb.de/comp/vim/lout.vim + +" $Id: lout.vim,v 1.4 2012/02/12 15:16:17 bruessow Exp $ +" +" Lout: Basser Lout document formatting system. + +" Many Thanks to... +" +" 2012-02-12: +" Thilo Six send a patch for cpoptions. +" See the discussion at http://thread.gmane.org/gmane.editors.vim.devel/32151 + + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save=&cpo +set cpo&vim + +" Lout is case sensitive +syn case match + +" Synchronization, I know it is a huge number, but normal texts can be +" _very_ long ;-) +syn sync lines=1000 + +" Characters allowed in keywords +" I don't know if 128-255 are allowed in ANS-FORHT +if version >= 600 + setlocal iskeyword=@,48-57,.,@-@,_,192-255 +else + set iskeyword=@,48-57,.,@-@,_,192-255 +endif + +" Some special keywords +syn keyword loutTodo contained TODO lout Lout LOUT +syn keyword loutDefine def macro + +" Some big structures +syn keyword loutKeyword @Begin @End @Figure @Tab +syn keyword loutKeyword @Book @Doc @Document @Report +syn keyword loutKeyword @Introduction @Abstract @Appendix +syn keyword loutKeyword @Chapter @Section @BeginSections @EndSections + +" All kind of Lout keywords +syn match loutFunction '\<@[^ \t{}]\+\>' + +" Braces -- Don`t edit these lines! +syn match loutMBraces '[{}]' +syn match loutIBraces '[{}]' +syn match loutBBrace '[{}]' +syn match loutBIBraces '[{}]' +syn match loutHeads '[{}]' + +" Unmatched braces. +syn match loutBraceError '}' + +" End of multi-line definitions, like @Document, @Report and @Book. +syn match loutEOmlDef '^//$' + +" Grouping of parameters and objects. +syn region loutObject transparent matchgroup=Delimiter start='{' matchgroup=Delimiter end='}' contains=ALLBUT,loutBraceError + +" The NULL object has a special meaning +syn keyword loutNULL {} + +" Comments +syn region loutComment start='\#' end='$' contains=loutTodo + +" Double quotes +syn region loutSpecial start=+"+ skip=+\\\\\|\\"+ end=+"+ + +" ISO-LATIN-1 characters created with @Char, or Adobe symbols +" created with @Sym +syn match loutSymbols '@\(\(Char\)\|\(Sym\)\)\s\+[A-Za-z]\+' + +" Include files +syn match loutInclude '@IncludeGraphic\s\+\k\+' +syn region loutInclude start='@\(\(SysInclude\)\|\(IncludeGraphic\)\|\(Include\)\)\s*{' end='}' + +" Tags +syn match loutTag '@\(\(Tag\)\|\(PageMark\)\|\(PageOf\)\|\(NumberOf\)\)\s\+\k\+' +syn region loutTag start='@Tag\s*{' end='}' + +" Equations +syn match loutMath '@Eq\s\+\k\+' +syn region loutMath matchgroup=loutMBraces start='@Eq\s*{' matchgroup=loutMBraces end='}' contains=ALLBUT,loutBraceError +" +" Fonts +syn match loutItalic '@I\s\+\k\+' +syn region loutItalic matchgroup=loutIBraces start='@I\s*{' matchgroup=loutIBraces end='}' contains=ALLBUT,loutBraceError +syn match loutBold '@B\s\+\k\+' +syn region loutBold matchgroup=loutBBraces start='@B\s*{' matchgroup=loutBBraces end='}' contains=ALLBUT,loutBraceError +syn match loutBoldItalic '@BI\s\+\k\+' +syn region loutBoldItalic matchgroup=loutBIBraces start='@BI\s*{' matchgroup=loutBIBraces end='}' contains=ALLBUT,loutBraceError +syn region loutHeadings matchgroup=loutHeads start='@\(\(Title\)\|\(Caption\)\)\s*{' matchgroup=loutHeads end='}' contains=ALLBUT,loutBraceError + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_lout_syn_inits") + if version < 508 + let did_lout_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " The default methods for highlighting. Can be overrriden later. + HiLink loutTodo Todo + HiLink loutDefine Define + HiLink loutEOmlDef Define + HiLink loutFunction Function + HiLink loutBraceError Error + HiLink loutNULL Special + HiLink loutComment Comment + HiLink loutSpecial Special + HiLink loutSymbols Character + HiLink loutInclude Include + HiLink loutKeyword Keyword + HiLink loutTag Tag + HiLink loutMath Number + + " HiLink Not really needed here, but I think it is more consistent. + HiLink loutMBraces loutMath + hi loutItalic term=italic cterm=italic gui=italic + HiLink loutIBraces loutItalic + hi loutBold term=bold cterm=bold gui=bold + HiLink loutBBraces loutBold + hi loutBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic + HiLink loutBIBraces loutBoldItalic + hi loutHeadings term=bold cterm=bold guifg=indianred + HiLink loutHeads loutHeadings + + delcommand HiLink +endif + +let b:current_syntax = "lout" + +let &cpo=s:cpo_save +unlet s:cpo_save + +" vim:ts=8:sw=4:nocindent:smartindent: diff --git a/share/vim/vim74/syntax/lpc.vim b/share/vim/vim74/syntax/lpc.vim new file mode 100644 index 00000000..e948f3d7 --- /dev/null +++ b/share/vim/vim74/syntax/lpc.vim @@ -0,0 +1,460 @@ +" Vim syntax file +" Language: LPC +" Maintainer: Shizhu Pan +" URL: http://poet.tomud.com/pub/lpc.vim.bz2 +" Last Change: 2011 Dec 10 by Thilo Six +" Comments: If you are using Vim 6.2 or later, see :h lpc.vim for +" file type recognizing, if not, you had to use modeline. + + +" Nodule: This is the start nodule. {{{1 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Nodule: Keywords {{{1 + +" LPC keywords +" keywords should always be highlighted so "contained" is not used. +syn cluster lpcKeywdGrp contains=lpcConditional,lpcLabel,lpcOperator,lpcRepeat,lpcStatement,lpcModifier,lpcReserved + +syn keyword lpcConditional if else switch +syn keyword lpcLabel case default +syn keyword lpcOperator catch efun in inherit +syn keyword lpcRepeat do for foreach while +syn keyword lpcStatement break continue return + +syn match lpcEfunError /efun[^:]/ display + +" Illegal to use keyword as function +" It's not working, maybe in the next version. +syn keyword lpcKeywdError contained if for foreach return switch while + +" These are keywords only because they take lvalue or type as parameter, +" so these keywords should only be used as function but cannot be names of +" user-defined functions. +syn keyword lpcKeywdFunc new parse_command sscanf time_expression + +" Nodule: Type and modifiers {{{1 + +" Type names list. + +" Special types +syn keyword lpcType void mixed unknown +" Scalar/Value types. +syn keyword lpcType int float string +" Pointer types. +syn keyword lpcType array buffer class function mapping object +" Other types. +if exists("lpc_compat_32") + syn keyword lpcType closure status funcall +else + syn keyword lpcError closure status + syn keyword lpcType multiset +endif + +" Type modifier. +syn keyword lpcModifier nomask private public +syn keyword lpcModifier varargs virtual + +" sensible modifiers +if exists("lpc_pre_v22") + syn keyword lpcReserved nosave protected ref + syn keyword lpcModifier static +else + syn keyword lpcError static + syn keyword lpcModifier nosave protected ref +endif + +" Nodule: Applies {{{1 + +" Match a function declaration or function pointer +syn match lpcApplyDecl excludenl /->\h\w*(/me=e-1 contains=lpcApplies transparent display + +" We should note that in func_spec.c the efun definition syntax is so +" complicated that I use such a long regular expression to describe. +syn match lpcLongDecl excludenl /\(\s\|\*\)\h\+\s\h\+(/me=e-1 contains=@lpcEfunGroup,lpcType,@lpcKeywdGrp transparent display + +" this is form for all functions +" ->foo() form had been excluded +syn match lpcFuncDecl excludenl /\h\w*(/me=e-1 contains=lpcApplies,@lpcEfunGroup,lpcKeywdError transparent display + +" The (: :) parenthesis or $() forms a function pointer +syn match lpcFuncName /(:\s*\h\+\s*:)/me=e-1 contains=lpcApplies,@lpcEfunGroup transparent display contained +syn match lpcFuncName /(:\s*\h\+,/ contains=lpcApplies,@lpcEfunGroup transparent display contained +syn match lpcFuncName /\$(\h\+)/ contains=lpcApplies,@lpcEfunGroup transparent display contained + +" Applies list. +" system applies +syn keyword lpcApplies contained __INIT clean_up create destructor heart_beat id init move_or_destruct reset +" interactive +syn keyword lpcApplies contained catch_tell logon net_dead process_input receive_message receive_snoop telnet_suboption terminal_type window_size write_prompt +" master applies +syn keyword lpcApplies contained author_file compile_object connect crash creator_file domain_file epilog error_handler flag get_bb_uid get_root_uid get_save_file_name log_error make_path_absolute object_name preload privs_file retrieve_ed_setup save_ed_setup slow_shutdown +syn keyword lpcApplies contained valid_asm valid_bind valid_compile_to_c valid_database valid_hide valid_link valid_object valid_override valid_read valid_save_binary valid_seteuid valid_shadow valid_socket valid_write +" parsing +syn keyword lpcApplies contained inventory_accessible inventory_visible is_living parse_command_adjectiv_id_list parse_command_adjective_id_list parse_command_all_word parse_command_id_list parse_command_plural_id_list parse_command_prepos_list parse_command_users parse_get_environment parse_get_first_inventory parse_get_next_inventory parser_error_message + + +" Nodule: Efuns {{{1 + +syn cluster lpcEfunGroup contains=lpc_efuns,lpcOldEfuns,lpcNewEfuns,lpcKeywdFunc + +" Compat32 efuns +if exists("lpc_compat_32") + syn keyword lpc_efuns contained closurep heart_beat_info m_delete m_values m_indices query_once_interactive strstr +else + syn match lpcErrFunc /#`\h\w*/ + " Shell compatible first line comment. + syn region lpcCommentFunc start=/^#!/ end=/$/ +endif + +" pre-v22 efuns which are removed in newer versions. +syn keyword lpcOldEfuns contained tail dump_socket_status + +" new efuns after v22 should be added here! +syn keyword lpcNewEfuns contained socket_status + +" LPC efuns list. +" DEBUG efuns Not included. +" New efuns should NOT be added to this list, see v22 efuns above. +" Efuns list {{{2 +syn keyword lpc_efuns contained acos add_action all_inventory all_previous_objects allocate allocate_buffer allocate_mapping apply arrayp asin atan author_stats +syn keyword lpc_efuns contained bind break_string bufferp +syn keyword lpc_efuns contained cache_stats call_other call_out call_out_info call_stack capitalize catch ceil check_memory children classp clear_bit clone_object clonep command commands copy cos cp crc32 crypt ctime +syn keyword lpc_efuns contained db_close db_commit db_connect db_exec db_fetch db_rollback db_status debug_info debugmalloc debug_message deep_inherit_list deep_inventory destruct disable_commands disable_wizard domain_stats dumpallobj dump_file_descriptors dump_prog +syn keyword lpc_efuns contained each ed ed_cmd ed_start enable_commands enable_wizard environment error errorp eval_cost evaluate exec exp explode export_uid external_start +syn keyword lpc_efuns contained fetch_variable file_length file_name file_size filter filter_array filter_mapping find_call_out find_living find_object find_player first_inventory floatp floor flush_messages function_exists function_owner function_profile functionp functions +syn keyword lpc_efuns contained generate_source get_char get_config get_dir geteuid getuid +syn keyword lpc_efuns contained heart_beats +syn keyword lpc_efuns contained id_matrix implode in_edit in_input inherit_list inherits input_to interactive intp +syn keyword lpc_efuns contained keys +syn keyword lpc_efuns contained link living livings load_object localtime log log10 lookat_rotate lower_case lpc_info +syn keyword lpc_efuns contained malloc_check malloc_debug malloc_status map map_array map_delete map_mapping mapp master match_path max_eval_cost member_array memory_info memory_summary message mkdir moncontrol move_object mud_status +syn keyword lpc_efuns contained named_livings network_stats next_bit next_inventory notify_fail nullp +syn keyword lpc_efuns contained objectp objects oldcrypt opcprof origin +syn keyword lpc_efuns contained parse_add_rule parse_add_synonym parse_command parse_dump parse_init parse_my_rules parse_refresh parse_remove parse_sentence pluralize pointerp pow present previous_object printf process_string process_value program_info +syn keyword lpc_efuns contained query_ed_mode query_heart_beat query_host_name query_idle query_ip_name query_ip_number query_ip_port query_load_average query_notify_fail query_privs query_replaced_program query_shadowing query_snoop query_snooping query_verb +syn keyword lpc_efuns contained random read_buffer read_bytes read_file receive reclaim_objects refs regexp reg_assoc reload_object remove_action remove_call_out remove_interactive remove_shadow rename repeat_string replace_program replace_string replaceable reset_eval_cost resolve restore_object restore_variable rm rmdir rotate_x rotate_y rotate_z rusage +syn keyword lpc_efuns contained save_object save_variable say scale set_author set_bit set_eval_limit set_heart_beat set_hide set_light set_living_name set_malloc_mask set_privs set_reset set_this_player set_this_user seteuid shadow shallow_inherit_list shout shutdown sin sizeof snoop socket_accept socket_acquire socket_address socket_bind socket_close socket_connect socket_create socket_error socket_listen socket_release socket_write sort_array sprintf sqrt stat store_variable strcmp stringp strlen strsrch +syn keyword lpc_efuns contained tan tell_object tell_room terminal_colour test_bit this_interactive this_object this_player this_user throw time to_float to_int trace traceprefix translate typeof +syn keyword lpc_efuns contained undefinedp unique_array unique_mapping upper_case uptime userp users +syn keyword lpc_efuns contained values variables virtualp +syn keyword lpc_efuns contained wizardp write write_buffer write_bytes write_file + +" Nodule: Constants {{{1 + +" LPC Constants. +" like keywords, constants are always highlighted, be careful to choose only +" the constants we used to add to this list. +syn keyword lpcConstant __ARCH__ __COMPILER__ __DIR__ __FILE__ __OPTIMIZATION__ __PORT__ __VERSION__ +" Defines in options.h are all predefined in LPC sources surrounding by +" two underscores. Do we need to include all of that? +syn keyword lpcConstant __SAVE_EXTENSION__ __HEARTBEAT_INTERVAL__ +" from the documentation we know that these constants remains only for +" backward compatibility and should not be used any more. +syn keyword lpcConstant HAS_ED HAS_PRINTF HAS_RUSAGE HAS_DEBUG_LEVEL +syn keyword lpcConstant MUD_NAME F__THIS_OBJECT + +" Nodule: Todo for this file. {{{1 + +" TODO : need to check for LPC4 syntax and other series of LPC besides +" v22, b21 and l32, if you had a good idea, contact me at poet@mudbuilder.net +" and I will be appreciated about that. + +" Notes about some FAQ: +" +" About variables : We adopts the same behavior for C because almost all the +" LPC programmers are also C programmers, so we don't need separate settings +" for C and LPC. That is the reason why I don't change variables like +" "c_no_utf"s to "lpc_no_utf"s. +" +" Copy : Some of the following seems to be copied from c.vim but not quite +" the same in details because the syntax for C and LPC is different. +" +" Color scheme : this syntax file had been thouroughly tested to work well +" for all of the dark-backgrounded color schemes Vim has provided officially, +" and it should be quite Ok for all of the bright-backgrounded color schemes, +" of course it works best for the color scheme that I am using, download it +" from http://poet.tomud.com/pub/ps_color.vim.bz2 if you want to try it. +" + +" Nodule: String and Character {{{1 + + +" String and Character constants +" Highlight special characters (those which have a backslash) differently +syn match lpcSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" +if !exists("c_no_utf") + syn match lpcSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" +endif + +" LPC version of sprintf() format, +syn match lpcFormat display "%\(\d\+\)\=[-+ |=#@:.]*\(\d\+\)\=\('\I\+'\|'\I*\\'\I*'\)\=[OsdicoxXf]" contained +syn match lpcFormat display "%%" contained +syn region lpcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lpcSpecial,lpcFormat +" lpcCppString: same as lpcString, but ends at end of line +syn region lpcCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=lpcSpecial,lpcFormat + +" LPC preprocessor for the text formatting short cuts +" Thanks to Dr. Charles E. Campbell +" he suggests the best way to do this. +syn region lpcTextString start=/@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial +syn region lpcArrayString start=/@@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial + +" Character +syn match lpcCharacter "L\='[^\\]'" +syn match lpcCharacter "L'[^']*'" contains=lpcSpecial +syn match lpcSpecialError "L\='\\[^'\"?\\abefnrtv]'" +syn match lpcSpecialCharacter "L\='\\['\"?\\abefnrtv]'" +syn match lpcSpecialCharacter display "L\='\\\o\{1,3}'" +syn match lpcSpecialCharacter display "'\\x\x\{1,2}'" +syn match lpcSpecialCharacter display "L'\\x\x\+'" + +" Nodule: White space {{{1 + +" when wanted, highlight trailing white space +if exists("c_space_errors") + if !exists("c_no_trail_space_error") + syn match lpcSpaceError display excludenl "\s\+$" + endif + if !exists("c_no_tab_space_error") + syn match lpcSpaceError display " \+\t"me=e-1 + endif +endif + +" Nodule: Parenthesis and brackets {{{1 + +" catch errors caused by wrong parenthesis and brackets +syn cluster lpcParenGroup contains=lpcParenError,lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcCommentSkip,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom +syn region lpcParen transparent start='(' end=')' contains=ALLBUT,@lpcParenGroup,lpcCppParen,lpcErrInBracket,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcKeywdError +" lpcCppParen: same as lpcParen but ends at end-of-line; used in lpcDefine +syn region lpcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInBracket,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcKeywdError +syn match lpcParenError display ")" +syn match lpcParenError display "\]" +" for LPC: +" Here we should consider the array ({ }) parenthesis and mapping ([ ]) +" parenthesis and multiset (< >) parenthesis. +syn match lpcErrInParen display contained "[^^]{"ms=s+1 +syn match lpcErrInParen display contained "\(}\|\]\)[^)]"me=e-1 +syn region lpcBracket transparent start='\[' end=']' contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcCppParen,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError +" lpcCppBracket: same as lpcParen but ends at end-of-line; used in lpcDefine +syn region lpcCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError +syn match lpcErrInBracket display contained "[);{}]" + +" Nodule: Numbers {{{1 + +" integer number, or floating point number without a dot and with "f". +syn case ignore +syn match lpcNumbers display transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctalError,lpcOctal +" Same, but without octal error (for comments) +syn match lpcNumbersCom display contained transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctal +syn match lpcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" +" hex number +syn match lpcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" +" Flag the first zero of an octal number as something special +syn match lpcOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=lpcOctalZero +syn match lpcOctalZero display contained "\<0" +syn match lpcFloat display contained "\d\+f" +" floating point number, with dot, optional exponent +syn match lpcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" +" floating point number, starting with a dot, optional exponent +syn match lpcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +" floating point number, without dot, with exponent +syn match lpcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" +" flag an octal number with wrong digits +syn match lpcOctalError display contained "0\o*[89]\d*" +syn case match + +" Nodule: Comment string {{{1 + +" lpcCommentGroup allows adding matches for special things in comments +syn keyword lpcTodo contained TODO FIXME XXX +syn cluster lpcCommentGroup contains=lpcTodo + +if exists("c_comment_strings") + " A comment can contain lpcString, lpcCharacter and lpcNumber. + syntax match lpcCommentSkip contained "^\s*\*\($\|\s\+\)" + syntax region lpcCommentString contained start=+L\=\\\@" skip="\\$" end="$" end="//"me=s-1 contains=lpcComment,lpcCppString,lpcCharacter,lpcCppParen,lpcParenError,lpcNumbers,lpcCommentError,lpcSpaceError +syn match lpcPreCondit display "^\s*#\s*\(else\|endif\)\>" +if !exists("c_no_if0") + syn region lpcCppOut start="^\s*#\s*if\s\+0\+\>" end=".\|$" contains=lpcCppOut2 + syn region lpcCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=lpcSpaceError,lpcCppSkip + syn region lpcCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=lpcSpaceError,lpcCppSkip +endif +syn region lpcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn match lpcIncluded display contained "<[^>]*>" +syn match lpcInclude display "^\s*#\s*include\>\s*["<]" contains=lpcIncluded +syn match lpcLineSkip "\\$" +syn cluster lpcPreProcGroup contains=lpcPreCondit,lpcIncluded,lpcInclude,lpcDefine,lpcErrInParen,lpcErrInBracket,lpcUserLabel,lpcSpecial,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcString,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcParen,lpcBracket,lpcMulti,lpcKeywdError +syn region lpcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@lpcPreProcGroup + +if exists("lpc_pre_v22") + syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup +else + syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup +endif + +" Nodule: User labels {{{1 + +" Highlight Labels +" User labels in LPC is not allowed, only "case x" and "default" is supported +syn cluster lpcMultiGroup contains=lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcCppParen,lpcCppBracket,lpcCppString,lpcKeywdError +syn region lpcMulti transparent start='\(case\|default\|public\|protected\|private\)' skip='::' end=':' contains=ALLBUT,@lpcMultiGroup + +syn cluster lpcLabelGroup contains=lpcUserLabel +syn match lpcUserCont display "^\s*lpc:$" contains=@lpcLabelGroup + +" Don't want to match anything +syn match lpcUserLabel display "lpc" contained + +" Nodule: Initializations {{{1 + +if exists("c_minlines") + let b:c_minlines = c_minlines +else + if !exists("c_no_if0") + let b:c_minlines = 50 " #if 0 constructs can be long + else + let b:c_minlines = 15 " mostly for () constructs + endif +endif +exec "syn sync ccomment lpcComment minlines=" . b:c_minlines + +" Make sure these options take place since we no longer depend on file type +" plugin for C +setlocal cindent +setlocal fo-=t fo+=croql +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// + +" Win32 can filter files in the browse dialog +if has("gui_win32") && !exists("b:browsefilter") + let b:browsefilter = "LPC Source Files (*.c *.d *.h)\t*.c;*.d;*.h\n" . + \ "LPC Data Files (*.scr *.o *.dat)\t*.scr;*.o;*.dat\n" . + \ "Text Documentation (*.txt)\t*.txt\n" . + \ "All Files (*.*)\t*.*\n" +endif + +" Nodule: Highlight links {{{1 + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_lpc_syn_inits") + if version < 508 + let did_lpc_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink lpcModifier lpcStorageClass + + HiLink lpcQuotedFmt lpcFormat + HiLink lpcFormat lpcSpecial + HiLink lpcCppString lpcString " Cpp means + " C Pre-Processor + HiLink lpcCommentL lpcComment + HiLink lpcCommentStart lpcComment + HiLink lpcUserLabel lpcLabel + HiLink lpcSpecialCharacter lpcSpecial + HiLink lpcOctal lpcPreProc + HiLink lpcOctalZero lpcSpecial " LPC will treat octal numbers + " as decimals, programmers should + " be aware of that. + HiLink lpcEfunError lpcError + HiLink lpcKeywdError lpcError + HiLink lpcOctalError lpcError + HiLink lpcParenError lpcError + HiLink lpcErrInParen lpcError + HiLink lpcErrInBracket lpcError + HiLink lpcCommentError lpcError + HiLink lpcCommentStartError lpcError + HiLink lpcSpaceError lpcError + HiLink lpcSpecialError lpcError + HiLink lpcErrFunc lpcError + + if exists("lpc_pre_v22") + HiLink lpcOldEfuns lpc_efuns + HiLink lpcNewEfuns lpcError + else + HiLink lpcOldEfuns lpcReserved + HiLink lpcNewEfuns lpc_efuns + endif + HiLink lpc_efuns lpcFunction + + HiLink lpcReserved lpcPreProc + HiLink lpcTextString lpcString " This should be preprocessors, but + HiLink lpcArrayString lpcPreProc " let's make some difference + " between text and array + + HiLink lpcIncluded lpcString + HiLink lpcCommentString lpcString + HiLink lpcComment2String lpcString + HiLink lpcCommentSkip lpcComment + HiLink lpcCommentFunc lpcComment + + HiLink lpcCppSkip lpcCppOut + HiLink lpcCppOut2 lpcCppOut + HiLink lpcCppOut lpcComment + + " Standard type below + HiLink lpcApplies Special + HiLink lpcCharacter Character + HiLink lpcComment Comment + HiLink lpcConditional Conditional + HiLink lpcConstant Constant + HiLink lpcDefine Macro + HiLink lpcError Error + HiLink lpcFloat Float + HiLink lpcFunction Function + HiLink lpcIdentifier Identifier + HiLink lpcInclude Include + HiLink lpcLabel Label + HiLink lpcNumber Number + HiLink lpcOperator Operator + HiLink lpcPreCondit PreCondit + HiLink lpcPreProc PreProc + HiLink lpcRepeat Repeat + HiLink lpcStatement Statement + HiLink lpcStorageClass StorageClass + HiLink lpcString String + HiLink lpcStructure Structure + HiLink lpcSpecial LineNr + HiLink lpcTodo Todo + HiLink lpcType Type + + delcommand HiLink +endif + +" Nodule: This is the end nodule. {{{1 + +let b:current_syntax = "lpc" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:ts=8:nosta:sw=2:ai:si: +" vim600:set fdm=marker: }}}1 diff --git a/share/vim/vim73/syntax/lprolog.vim b/share/vim/vim74/syntax/lprolog.vim similarity index 100% rename from share/vim/vim73/syntax/lprolog.vim rename to share/vim/vim74/syntax/lprolog.vim diff --git a/share/vim/vim73/syntax/lscript.vim b/share/vim/vim74/syntax/lscript.vim similarity index 100% rename from share/vim/vim73/syntax/lscript.vim rename to share/vim/vim74/syntax/lscript.vim diff --git a/share/vim/vim74/syntax/lsl.vim b/share/vim/vim74/syntax/lsl.vim new file mode 100644 index 00000000..3b2baa06 --- /dev/null +++ b/share/vim/vim74/syntax/lsl.vim @@ -0,0 +1,277 @@ +" Vim syntax file +" Language: Linden Scripting Language +" Maintainer: Timo Frenay +" Last Change: 2012 Apr 30 + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" Initializations +syn case match + +" Keywords +syn keyword lslKeyword default do else for if jump return state while + +" Types +syn keyword lslType float integer key list quaternion rotation string vector + +" Labels +syn match lslLabel +@\h\w*+ display + +" Constants +syn keyword lslConstant +\ ACTIVE AGENT AGENT_ALWAYS_RUN AGENT_ATTACHMENTS AGENT_AWAY AGENT_BUSY +\ AGENT_CROUCHING AGENT_FLYING AGENT_IN_AIR AGENT_MOUSELOOK AGENT_ON_OBJECT +\ AGENT_SCRIPTED AGENT_SITTING AGENT_TYPING AGENT_WALKING ALL_SIDES ANIM_ON +\ ATTACH_BACK ATTACH_BELLY ATTACH_CHEST ATTACH_CHIN ATTACH_HEAD +\ ATTACH_HUD_BOTTOM ATTACH_HUD_BOTTOM_LEFT ATTACH_HUD_BOTTOM_RIGHT +\ ATTACH_HUD_CENTER_1 ATTACH_HUD_CENTER_2 ATTACH_HUD_TOP_CENTER +\ ATTACH_HUD_TOP_LEFT ATTACH_HUD_TOP_RIGHT ATTACH_LEAR ATTACH_LEYE ATTACH_LFOOT +\ ATTACH_LHAND ATTACH_LHIP ATTACH_LLARM ATTACH_LLLEG ATTACH_LPEC +\ ATTACH_LSHOULDER ATTACH_LUARM ATTACH_LULEG ATTACH_MOUTH ATTACH_NOSE +\ ATTACH_PELVIS ATTACH_REAR ATTACH_REYE ATTACH_RFOOT ATTACH_RHAND ATTACH_RHIP +\ ATTACH_RLARM ATTACH_RLLEG ATTACH_RPEC ATTACH_RSHOULDER ATTACH_RUARM +\ ATTACH_RULEG CAMERA_ACTIVE CAMERA_BEHINDNESS_ANGLE CAMERA_BEHINDNESS_LAG +\ CAMERA_DISTANCE CAMERA_FOCUS CAMERA_FOCUS_LAG CAMERA_FOCUS_LOCKED +\ CAMERA_FOCUS_OFFSET CAMERA_FOCUS_THRESHOLD CAMERA_PITCH CAMERA_POSITION +\ CAMERA_POSITION_LAG CAMERA_POSITION_LOCKED CAMERA_POSITION_THRESHOLD +\ CHANGED_ALLOWED_DROP CHANGED_COLOR CHANGED_INVENTORY CHANGED_LINK +\ CHANGED_OWNER CHANGED_REGION CHANGED_SCALE CHANGED_SHAPE CHANGED_TELEPORT +\ CHANGED_TEXTURE CLICK_ACTION_BUY CLICK_ACTION_NONE CLICK_ACTION_OPEN +\ CLICK_ACTION_OPEN_MEDIA CLICK_ACTION_PAY CLICK_ACTION_PLAY CLICK_ACTION_SIT +\ CLICK_ACTION_TOUCH CONTROL_BACK CONTROL_DOWN CONTROL_FWD CONTROL_LBUTTON +\ CONTROL_LEFT CONTROL_ML_LBUTTON CONTROL_RIGHT CONTROL_ROT_LEFT +\ CONTROL_ROT_RIGHT CONTROL_UP DATA_BORN DATA_NAME DATA_ONLINE DATA_PAYINFO +\ DATA_RATING DATA_SIM_POS DATA_SIM_RATING DATA_SIM_STATUS DEBUG_CHANNEL +\ DEG_TO_RAD EOF FALSE HTTP_BODY_MAXLENGTH HTTP_BODY_TRUNCATED HTTP_METHOD +\ HTTP_MIMETYPE HTTP_VERIFY_CERT INVENTORY_ALL INVENTORY_ANIMATION +\ INVENTORY_BODYPART INVENTORY_CLOTHING INVENTORY_GESTURE INVENTORY_LANDMARK +\ INVENTORY_NONE INVENTORY_NOTECARD INVENTORY_OBJECT INVENTORY_SCRIPT +\ INVENTORY_SOUND INVENTORY_TEXTURE LAND_LARGE_BRUSH LAND_LEVEL LAND_LOWER +\ LAND_MEDIUM_BRUSH LAND_NOISE LAND_RAISE LAND_REVERT LAND_SMALL_BRUSH +\ LAND_SMOOTH LINK_ALL_CHILDREN LINK_ALL_OTHERS LINK_ROOT LINK_SET LINK_THIS +\ LIST_STAT_GEOMETRIC_MEAN LIST_STAT_MAX LIST_STAT_MEAN LIST_STAT_MEDIAN +\ LIST_STAT_MIN LIST_STAT_NUM_COUNT LIST_STAT_RANGE LIST_STAT_STD_DEV +\ LIST_STAT_SUM LIST_STAT_SUM_SQUARES LOOP MASK_BASE MASK_EVERYONE MASK_GROUP +\ MASK_NEXT MASK_OWNER NULL_KEY OBJECT_CREATOR OBJECT_DESC OBJECT_GROUP +\ OBJECT_NAME OBJECT_OWNER OBJECT_POS OBJECT_ROT OBJECT_UNKNOWN_DETAIL +\ OBJECT_VELOCITY PARCEL_COUNT_GROUP PARCEL_COUNT_OTHER PARCEL_COUNT_OWNER +\ PARCEL_COUNT_SELECTED PARCEL_COUNT_TEMP PARCEL_COUNT_TOTAL PARCEL_DETAILS_AREA +\ PARCEL_DETAILS_DESC PARCEL_DETAILS_GROUP PARCEL_DETAILS_NAME +\ PARCEL_DETAILS_OWNER PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY +\ PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS PARCEL_FLAG_ALLOW_CREATE_OBJECTS +\ PARCEL_FLAG_ALLOW_DAMAGE PARCEL_FLAG_ALLOW_FLY +\ PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY PARCEL_FLAG_ALLOW_GROUP_SCRIPTS +\ PARCEL_FLAG_ALLOW_LANDMARK PARCEL_FLAG_ALLOW_SCRIPTS +\ PARCEL_FLAG_ALLOW_TERRAFORM PARCEL_FLAG_LOCAL_SOUND_ONLY +\ PARCEL_FLAG_RESTRICT_PUSHOBJECT PARCEL_FLAG_USE_ACCESS_GROUP +\ PARCEL_FLAG_USE_ACCESS_LIST PARCEL_FLAG_USE_BAN_LIST +\ PARCEL_FLAG_USE_LAND_PASS_LIST PARCEL_MEDIA_COMMAND_AGENT +\ PARCEL_MEDIA_COMMAND_AUTO_ALIGN PARCEL_MEDIA_COMMAND_DESC +\ PARCEL_MEDIA_COMMAND_LOOP PARCEL_MEDIA_COMMAND_LOOP_SET +\ PARCEL_MEDIA_COMMAND_PAUSE PARCEL_MEDIA_COMMAND_PLAY PARCEL_MEDIA_COMMAND_SIZE +\ PARCEL_MEDIA_COMMAND_STOP PARCEL_MEDIA_COMMAND_TEXTURE +\ PARCEL_MEDIA_COMMAND_TIME PARCEL_MEDIA_COMMAND_TYPE +\ PARCEL_MEDIA_COMMAND_UNLOAD PARCEL_MEDIA_COMMAND_URL PASSIVE +\ PAYMENT_INFO_ON_FILE PAYMENT_INFO_USED PAY_DEFAULT PAY_HIDE PERM_ALL PERM_COPY +\ PERM_MODIFY PERM_MOVE PERM_TRANSFER PERMISSION_ATTACH PERMISSION_CHANGE_LINKS +\ PERMISSION_CONTROL_CAMERA PERMISSION_DEBIT PERMISSION_TAKE_CONTROLS +\ PERMISSION_TRACK_CAMERA PERMISSION_TRIGGER_ANIMATION PI PI_BY_TWO PING_PONG +\ PRIM_BUMP_BARK PRIM_BUMP_BLOBS PRIM_BUMP_BRICKS PRIM_BUMP_BRIGHT +\ PRIM_BUMP_CHECKER PRIM_BUMP_CONCRETE PRIM_BUMP_DARK PRIM_BUMP_DISKS +\ PRIM_BUMP_GRAVEL PRIM_BUMP_LARGETILE PRIM_BUMP_NONE PRIM_BUMP_SHINY +\ PRIM_BUMP_SIDING PRIM_BUMP_STONE PRIM_BUMP_STUCCO PRIM_BUMP_SUCTION +\ PRIM_BUMP_TILE PRIM_BUMP_WEAVE PRIM_BUMP_WOOD PRIM_CAST_SHADOWS PRIM_COLOR +\ PRIM_FLEXIBLE PRIM_FULLBRIGHT PRIM_HOLE_CIRCLE PRIM_HOLE_DEFAULT +\ PRIM_HOLE_SQUARE PRIM_HOLE_TRIANGLE PRIM_MATERIAL PRIM_MATERIAL_FLESH +\ PRIM_MATERIAL_GLASS PRIM_MATERIAL_LIGHT PRIM_MATERIAL_METAL +\ PRIM_MATERIAL_PLASTIC PRIM_MATERIAL_RUBBER PRIM_MATERIAL_STONE +\ PRIM_MATERIAL_WOOD PRIM_PHANTOM PRIM_PHYSICS PRIM_POINT_LIGHT PRIM_POSITION +\ PRIM_ROTATION PRIM_SCULPT_TYPE_CYLINDER PRIM_SCULPT_TYPE_PLANE +\ PRIM_SCULPT_TYPE_SPHERE PRIM_SCULPT_TYPE_TORUS PRIM_SHINY_HIGH PRIM_SHINY_LOW +\ PRIM_SHINY_MEDIUM PRIM_SHINY_NONE PRIM_SIZE PRIM_TEMP_ON_REZ PRIM_TEXGEN +\ PRIM_TEXGEN_DEFAULT PRIM_TEXGEN_PLANAR PRIM_TEXTURE PRIM_TYPE PRIM_TYPE_BOX +\ PRIM_TYPE_BOX PRIM_TYPE_CYLINDER PRIM_TYPE_CYLINDER PRIM_TYPE_LEGACY +\ PRIM_TYPE_PRISM PRIM_TYPE_PRISM PRIM_TYPE_RING PRIM_TYPE_SCULPT +\ PRIM_TYPE_SPHERE PRIM_TYPE_SPHERE PRIM_TYPE_TORUS PRIM_TYPE_TORUS +\ PRIM_TYPE_TUBE PRIM_TYPE_TUBE PSYS_PART_BEAM_MASK PSYS_PART_BOUNCE_MASK +\ PSYS_PART_DEAD_MASK PSYS_PART_EMISSIVE_MASK PSYS_PART_END_ALPHA +\ PSYS_PART_END_COLOR PSYS_PART_END_SCALE PSYS_PART_FLAGS +\ PSYS_PART_FOLLOW_SRC_MASK PSYS_PART_FOLLOW_VELOCITY_MASK +\ PSYS_PART_INTERP_COLOR_MASK PSYS_PART_INTERP_SCALE_MASK PSYS_PART_MAX_AGE +\ PSYS_PART_RANDOM_ACCEL_MASK PSYS_PART_RANDOM_VEL_MASK PSYS_PART_START_ALPHA +\ PSYS_PART_START_COLOR PSYS_PART_START_SCALE PSYS_PART_TARGET_LINEAR_MASK +\ PSYS_PART_TARGET_POS_MASK PSYS_PART_TRAIL_MASK PSYS_PART_WIND_MASK +\ PSYS_SRC_ACCEL PSYS_SRC_ANGLE_BEGIN PSYS_SRC_ANGLE_END +\ PSYS_SRC_BURST_PART_COUNT PSYS_SRC_BURST_RADIUS PSYS_SRC_BURST_RATE +\ PSYS_SRC_BURST_SPEED_MAX PSYS_SRC_BURST_SPEED_MIN PSYS_SRC_INNERANGLE +\ PSYS_SRC_MAX_AGE PSYS_SRC_OMEGA PSYS_SRC_OUTERANGLE PSYS_SRC_PATTERN +\ PSYS_SRC_PATTERN_ANGLE PSYS_SRC_PATTERN_ANGLE_CONE +\ PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY PSYS_SRC_PATTERN_DROP +\ PSYS_SRC_PATTERN_EXPLODE PSYS_SRC_TARGET_KEY PSYS_SRC_TEXTURE PUBLIC_CHANNEL +\ RAD_TO_DEG REGION_FLAG_ALLOW_DAMAGE REGION_FLAG_ALLOW_DIRECT_TELEPORT +\ REGION_FLAG_BLOCK_FLY REGION_FLAG_BLOCK_TERRAFORM +\ REGION_FLAG_DISABLE_COLLISIONS REGION_FLAG_DISABLE_PHYSICS +\ REGION_FLAG_FIXED_SUN REGION_FLAG_RESTRICT_PUSHOBJECT REGION_FLAG_SANDBOX +\ REMOTE_DATA_CHANNEL REMOTE_DATA_REPLY REMOTE_DATA_REQUEST REVERSE ROTATE SCALE +\ SCRIPTED SMOOTH SQRT2 STATUS_BLOCK_GRAB STATUS_CAST_SHADOWS STATUS_DIE_AT_EDGE +\ STATUS_PHANTOM STATUS_PHYSICS STATUS_RETURN_AT_EDGE STATUS_ROTATE_X +\ STATUS_ROTATE_Y STATUS_ROTATE_Z STATUS_SANDBOX STRING_TRIM STRING_TRIM_HEAD +\ STRING_TRIM_TAIL TRUE TWO_PI TYPE_FLOAT TYPE_INTEGER TYPE_INVALID TYPE_KEY +\ TYPE_ROTATION TYPE_STRING TYPE_VECTOR VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY +\ VEHICLE_ANGULAR_DEFLECTION_TIMESCALE VEHICLE_ANGULAR_FRICTION_TIMESCALE +\ VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE VEHICLE_ANGULAR_MOTOR_DIRECTION +\ VEHICLE_ANGULAR_MOTOR_TIMESCALE VEHICLE_BANKING_EFFICIENCY VEHICLE_BANKING_MIX +\ VEHICLE_BANKING_TIMESCALE VEHICLE_BUOYANCY VEHICLE_FLAG_CAMERA_DECOUPLED +\ VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT VEHICLE_FLAG_HOVER_TERRAIN_ONLY +\ VEHICLE_FLAG_HOVER_UP_ONLY VEHICLE_FLAG_HOVER_WATER_ONLY +\ VEHICLE_FLAG_LIMIT_MOTOR_UP VEHICLE_FLAG_LIMIT_ROLL_ONLY +\ VEHICLE_FLAG_MOUSELOOK_BANK VEHICLE_FLAG_MOUSELOOK_STEER +\ VEHICLE_FLAG_NO_DEFLECTION_UP VEHICLE_HOVER_EFFICIENCY VEHICLE_HOVER_HEIGHT +\ VEHICLE_HOVER_TIMESCALE VEHICLE_LINEAR_DEFLECTION_EFFICIENCY +\ VEHICLE_LINEAR_DEFLECTION_TIMESCALE VEHICLE_LINEAR_FRICTION_TIMESCALE +\ VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE VEHICLE_LINEAR_MOTOR_TIMESCALE +\ VEHICLE_LINEAR_MOTOR_DIRECTION VEHICLE_LINEAR_MOTOR_OFFSET +\ VEHICLE_REFERENCE_FRAME VEHICLE_TYPE_AIRPLANE VEHICLE_TYPE_BALLOON +\ VEHICLE_TYPE_BOAT VEHICLE_TYPE_CAR VEHICLE_TYPE_NONE VEHICLE_TYPE_SLED +\ VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY VEHICLE_VERTICAL_ATTRACTION_TIMESCALE +\ ZERO_ROTATION ZERO_VECTOR + +" Events +syn keyword lslEvent +\ attach at_rot_target at_target changed collision collision_end collision_start +\ control dataserver email http_response land_collision land_collision_end +\ land_collision_start link_message listen money moving_end moving_start +\ not_at_rot_target no_sensor object_rez on_rez remote_data run_time_permissions +\ sensor state_entry state_exit timer touch touch_end touch_start not_at_target + +" Functions +syn keyword lslFunction +\ llAbs llAcos llAddToLandBanList llAddToLandPassList llAdjustSoundVolume +\ llAllowInventoryDrop llAngleBetween llApplyImpulse llApplyRotationalImpulse +\ llAsin llAtan2 llAttachToAvatar llAvatarOnSitTarget llAxes2Rot llAxisAngle2Rot +\ llBase64ToInteger llBase64ToString llBreakAllLinks llBreakLink llCSV2List +\ llCeil llClearCameraParams llCloseRemoteDataChannel llCloud llCollisionFilter +\ llCollisionSound llCollisionSprite llCos llCreateLink llDeleteSubList +\ llDeleteSubString llDetachFromAvatar llDetectedGrab llDetectedGroup +\ llDetectedKey llDetectedLinkNumber llDetectedName llDetectedOwner +\ llDetectedPos llDetectedRot llDetectedType llDetectedVel llDialog llDie +\ llDumpList2String llEdgeOfWorld llEjectFromLand llEmail llEscapeURL +\ llEuler2Rot llFabs llFloor llForceMouselook llFrand llGetAccel llGetAgentInfo +\ llGetAgentSize llGetAlpha llGetAndResetTime llGetAnimation llGetAnimationList +\ llGetAttached llGetBoundingBox llGetCameraPos llGetCameraRot llGetCenterOfMass +\ llGetColor llGetCreator llGetDate llGetEnergy llGetForce llGetFreeMemory +\ llGetGMTclock llGetGeometricCenter llGetInventoryCreator llGetInventoryKey +\ llGetInventoryName llGetInventoryNumber llGetInventoryPermMask +\ llGetInventoryType llGetKey llGetLandOwnerAt llGetLinkKey llGetLinkName +\ llGetLinkNumber llGetListEntryType llGetListLength llGetLocalPos llGetLocalRot +\ llGetMass llGetNextEmail llGetNotecardLine llGetNumberOfNotecardLines +\ llGetNumberOfPrims llGetNumberOfSides llGetObjectDesc llGetObjectDetails +\ llGetObjectMass llGetObjectName llGetObjectPermMask llGetObjectPrimCount +\ llGetOmega llGetOwner llGetOwnerKey llGetParcelDetails llGetParcelFlags +\ llGetParcelMaxPrims llGetParcelPrimCount llGetParcelPrimOwners +\ llGetPermissions llGetPermissionsKey llGetPos llGetPrimitiveParams +\ llGetRegionCorner llGetRegionFPS llGetRegionFlags llGetRegionName +\ llGetRegionTimeDilation llGetRootPosition llGetRootRotation llGetRot +\ llGetScale llGetScriptName llGetScriptState llGetSimulatorHostname +\ llGetStartParameter llGetStatus llGetSubString llGetSunDirection llGetTexture +\ llGetTextureOffset llGetTextureRot llGetTextureScale llGetTime llGetTimeOfDay +\ llGetTimestamp llGetTorque llGetUnixTime llGetVel llGetWallclock +\ llGiveInventory llGiveInventoryList llGiveMoney llGodLikeRezObject llGround +\ llGroundContour llGroundNormal llGroundRepel llGroundSlope llHTTPRequest +\ llInsertString llInstantMessage llIntegerToBase64 llKey2Name llList2CSV +\ llList2Float llList2Integer llList2Key llList2List llList2ListStrided +\ llList2Rot llList2String llList2Vector llListFindList llListInsertList +\ llListRandomize llListReplaceList llListSort llListStatistics llListen +\ llListenControl llListenRemove llLoadURL llLog llLog10 llLookAt llLoopSound +\ llLoopSoundMaster llLoopSoundSlave llMD5String llMakeExplosion llMakeFire +\ llMakeFountain llMakeSmoke llMapDestination llMessageLinked llMinEventDelay +\ llModPow llModifyLand llMoveToTarget llOffsetTexture llOpenRemoteDataChannel +\ llOverMyLand llOwnerSay llParcelMediaCommandList llParcelMediaQuery +\ llParseString2List llParseStringKeepNulls llParticleSystem llPassCollisions +\ llPassTouches llPlaySound llPlaySoundSlave llPointAt llPow llPreloadSound +\ llPushObject llRefreshPrimURL llRegionSay llReleaseCamera llReleaseControls +\ llRemoteDataReply llRemoteDataSetRegion llRemoteLoadScript +\ llRemoteLoadScriptPin llRemoveFromLandBanList llRemoveFromLandPassList +\ llRemoveInventory llRemoveVehicleFlags llRequestAgentData +\ llRequestInventoryData llRequestPermissions llRequestSimulatorData +\ llResetLandBanList llResetLandPassList llResetOtherScript llResetScript +\ llResetTime llRezAtRoot llRezObject llRot2Angle llRot2Axis llRot2Euler +\ llRot2Fwd llRot2Left llRot2Up llRotBetween llRotLookAt llRotTarget +\ llRotTargetRemove llRotateTexture llRound llSameGroup llSay llScaleTexture +\ llScriptDanger llSendRemoteData llSensor llSensorRemove llSensorRepeat +\ llSetAlpha llSetBuoyancy llSetCameraAtOffset llSetCameraEyeOffset +\ llSetCameraParams llSetClickAction llSetColor llSetDamage llSetForce +\ llSetForceAndTorque llSetHoverHeight llSetInventoryPermMask llSetLinkAlpha +\ llSetLinkColor llSetLinkPrimitiveParams llSetLinkTexture llSetLocalRot +\ llSetObjectDesc llSetObjectName llSetObjectPermMask llSetParcelMusicURL +\ llSetPayPrice llSetPos llSetPrimURL llSetPrimitiveParams +\ llSetRemoteScriptAccessPin llSetRot llSetScale llSetScriptState llSetSitText +\ llSetSoundQueueing llSetSoundRadius llSetStatus llSetText llSetTexture +\ llSetTextureAnim llSetTimerEvent llSetTorque llSetTouchText llSetVehicleFlags +\ llSetVehicleFloatParam llSetVehicleRotationParam llSetVehicleType +\ llSetVehicleVectorParam llShout llSin llSitTarget llSleep llSound +\ llSoundPreload llSqrt llStartAnimation llStopAnimation llStopHover +\ llStopLookAt llStopMoveToTarget llStopPointAt llStopSound llStringLength +\ llStringToBase64 llStringTrim llSubStringIndex llTakeCamera llTakeControls +\ llTan llTarget llTargetOmega llTargetRemove llTeleportAgentHome llToLower +\ llToUpper llTriggerSound llTriggerSoundLimited llUnSit llUnescapeURL llVecDist +\ llVecMag llVecNorm llVolumeDetect llWater llWhisper llWind llXorBase64Strings +\ llXorBase64StringsCorrect + +" Operators +syn match lslOperator +[-!%&*+/<=>^|~]+ display + +" Numbers +syn match lslNumber +-\=\%(\<\d\+\|\%(\<\d\+\)\=\.\d\+\)\%([Ee][-+]\=\d\+\)\=\>\|\<0x\x\+\>+ display + +" Vectors and rotations +syn match lslVectorRot +<[-\t +.0-9A-Za-z_]\+\%(,[-\t +.0-9A-Za-z_]\+\)\{2,3}>+ contains=lslNumber display + +" Vector and rotation properties +syn match lslProperty +\.\@<=[sxyz]\>+ display + +" Strings +syn region lslString start=+"+ skip=+\\.+ end=+"+ contains=lslSpecialChar,@Spell +syn match lslSpecialChar +\\.+ contained display + +" Keys +syn match lslKey +"\x\{8}-\x\{4}-\x\{4}-\x\{4}-\x\{12}"+ display + +" Parentheses, braces and brackets +syn match lslBlock +[][(){}]+ display + +" Typecast operators +syn match lslTypecast +(\%(float\|integer\|key\|list\|quaternion\|rotation\|string\|vector\))+ contains=lslType display + +" Comments +syn match lslComment +//.*+ contains=@Spell + +" Define the default highlighting. +hi def link lslKeyword Keyword +hi def link lslType Type +hi def link lslLabel Label +hi def link lslConstant Constant +hi def link lslEvent PreProc +hi def link lslFunction Function +hi def link lslOperator Operator +hi def link lslNumber Number +hi def link lslVectorRot Special +hi def link lslProperty Identifier +hi def link lslString String +hi def link lslSpecialChar SpecialChar +hi def link lslKey Special +hi def link lslBlock Special +hi def link lslTypecast Operator +hi def link lslComment Comment + +let b:current_syntax = "lsl" + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/lss.vim b/share/vim/vim74/syntax/lss.vim similarity index 100% rename from share/vim/vim73/syntax/lss.vim rename to share/vim/vim74/syntax/lss.vim diff --git a/share/vim/vim74/syntax/lua.vim b/share/vim/vim74/syntax/lua.vim new file mode 100644 index 00000000..3ff80b1e --- /dev/null +++ b/share/vim/vim74/syntax/lua.vim @@ -0,0 +1,367 @@ +" Vim syntax file +" Language: Lua 4.0, Lua 5.0, Lua 5.1 and Lua 5.2 +" Maintainer: Marcus Aurelius Farias +" First Author: Carlos Augusto Teixeira Mendes +" Last Change: 2012 Aug 12 +" Options: lua_version = 4 or 5 +" lua_subversion = 0 (4.0, 5.0) or 1 (5.1) or 2 (5.2) +" default 5.2 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +if !exists("lua_version") + " Default is lua 5.2 + let lua_version = 5 + let lua_subversion = 2 +elseif !exists("lua_subversion") + " lua_version exists, but lua_subversion doesn't. So, set it to 0 + let lua_subversion = 0 +endif + +syn case match + +" syncing method +syn sync minlines=100 + +" Comments +syn keyword luaTodo contained TODO FIXME XXX +syn match luaComment "--.*$" contains=luaTodo,@Spell +if lua_version == 5 && lua_subversion == 0 + syn region luaComment matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell + syn region luaInnerComment contained transparent start="\[\[" end="\]\]" +elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) + " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc. + syn region luaComment matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell +endif + +" First line may start with #! +syn match luaComment "\%^#!.*" + +" catch errors caused by wrong parenthesis and wrong curly brackets or +" keywords placed outside their respective blocks +syn region luaParen transparent start='(' end=')' contains=ALLBUT,luaParenError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement +syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaBraceError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement + +syn match luaParenError ")" +syn match luaBraceError "}" +syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>" + +" function ... end +syn region luaFunctionBlock transparent matchgroup=luaFunction start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn + +" if ... then +syn region luaIfThen transparent matchgroup=luaCond start="\" end="\"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaIn nextgroup=luaThenEnd skipwhite skipempty + +" then ... end +syn region luaThenEnd contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaThenEnd,luaIn + +" elseif ... then +syn region luaElseifThen contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn + +" else +syn keyword luaElse contained else + +" do ... end +syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn + +" repeat ... until +syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn + +" while ... do +syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaIn nextgroup=luaBlock skipwhite skipempty + +" for ... do and for ... in ... do +syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd nextgroup=luaBlock skipwhite skipempty + +syn keyword luaIn contained in + +" other keywords +syn keyword luaStatement return local break +if lua_version > 5 || (lua_version == 5 && lua_subversion >= 2) + syn keyword luaStatement goto + syn match luaLabel "::\I\i*::" +endif +syn keyword luaOperator and or not +syn keyword luaConstant nil +if lua_version > 4 + syn keyword luaConstant true false +endif + +" Strings +if lua_version < 5 + syn match luaSpecial contained "\\[\\abfnrtv\'\"]\|\\[[:digit:]]\{,3}" +elseif lua_version == 5 + if lua_subversion == 0 + syn match luaSpecial contained #\\[\\abfnrtv'"[\]]\|\\[[:digit:]]\{,3}# + syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell + else + if lua_subversion == 1 + syn match luaSpecial contained #\\[\\abfnrtv'"]\|\\[[:digit:]]\{,3}# + else " Lua 5.2 + syn match luaSpecial contained #\\[\\abfnrtvz'"]\|\\x[[:xdigit:]]\{2}\|\\[[:digit:]]\{,3}# + endif + syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell + endif +endif +syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell +syn region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell + +" integer number +syn match luaNumber "\<\d\+\>" +" floating point number, with dot, optional exponent +syn match luaNumber "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\=\>" +" floating point number, starting with a dot, optional exponent +syn match luaNumber "\.\d\+\%([eE][-+]\=\d\+\)\=\>" +" floating point number, without dot, with exponent +syn match luaNumber "\<\d\+[eE][-+]\=\d\+\>" + +" hex numbers +if lua_version >= 5 + if lua_subversion == 1 + syn match luaNumber "\<0[xX]\x\+\>" + elseif lua_subversion >= 2 + syn match luaNumber "\<0[xX][[:xdigit:].]\+\%([pP][-+]\=\d\+\)\=\>" + endif +endif + +syn keyword luaFunc assert collectgarbage dofile error next +syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION + +if lua_version == 4 + syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo + syn keyword luaFunc call copytagmethods dostring + syn keyword luaFunc foreach foreachi getglobal getn + syn keyword luaFunc gettagmethod globals newtag + syn keyword luaFunc setglobal settag settagmethod sort + syn keyword luaFunc tag tinsert tremove + syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR + syn keyword luaFunc openfile closefile flush seek + syn keyword luaFunc setlocale execute remove rename tmpname + syn keyword luaFunc getenv date clock exit + syn keyword luaFunc readfrom writeto appendto read write + syn keyword luaFunc PI abs sin cos tan asin + syn keyword luaFunc acos atan atan2 ceil floor + syn keyword luaFunc mod frexp ldexp sqrt min max log + syn keyword luaFunc log10 exp deg rad random + syn keyword luaFunc randomseed strlen strsub strlower strupper + syn keyword luaFunc strchar strrep ascii strbyte + syn keyword luaFunc format strfind gsub + syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook +elseif lua_version == 5 + syn keyword luaFunc getmetatable setmetatable + syn keyword luaFunc ipairs pairs + syn keyword luaFunc pcall xpcall + syn keyword luaFunc _G loadfile rawequal require + if lua_subversion == 0 + syn keyword luaFunc getfenv setfenv + syn keyword luaFunc loadstring unpack + syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME + else + syn keyword luaFunc load select + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + if lua_subversion == 1 + syn keyword luaFunc getfenv setfenv + syn keyword luaFunc loadstring module unpack + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + elseif lua_subversion == 2 + syn keyword luaFunc _ENV rawlen + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + endif + syn match luaFunc /\/ + endif + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + if lua_subversion == 0 + syn match luaFunc /\/ + else + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + endif + if lua_subversion == 0 + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + elseif lua_subversion == 1 + syn match luaFunc /\/ + elseif lua_subversion == 2 + syn match luaFunc /\/ + syn match luaFunc /\/ + endif + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + if lua_subversion == 0 + syn match luaFunc /\/ + syn match luaFunc /\/ + else + if lua_subversion == 1 + syn match luaFunc /\/ + endif + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + endif + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + if lua_subversion == 1 + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + elseif lua_subversion == 2 + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + syn match luaFunc /\/ + endif +endif + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_lua_syntax_inits") + if version < 508 + let did_lua_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink luaStatement Statement + HiLink luaRepeat Repeat + HiLink luaFor Repeat + HiLink luaString String + HiLink luaString2 String + HiLink luaNumber Number + HiLink luaOperator Operator + HiLink luaIn Operator + HiLink luaConstant Constant + HiLink luaCond Conditional + HiLink luaElse Conditional + HiLink luaFunction Function + HiLink luaComment Comment + HiLink luaTodo Todo + HiLink luaTable Structure + HiLink luaError Error + HiLink luaParenError Error + HiLink luaBraceError Error + HiLink luaSpecial SpecialChar + HiLink luaFunc Identifier + HiLink luaLabel Label + + delcommand HiLink +endif + +let b:current_syntax = "lua" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: et ts=8 sw=2 diff --git a/share/vim/vim74/syntax/lynx.vim b/share/vim/vim74/syntax/lynx.vim new file mode 100644 index 00000000..fa7c26f6 --- /dev/null +++ b/share/vim/vim74/syntax/lynx.vim @@ -0,0 +1,140 @@ +" Vim syntax file +" Language: Lynx configuration file (lynx.cfg) +" Maintainer: Doug Kearns +" Last Change: 2013 Jun 20 + +" Lynx 2.8.7 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn match lynxStart "^" transparent skipwhite nextgroup=lynxOption + +syn match lynxComment "\(^\|\s\+\)#.*$" contains=lynxTodo + +syn keyword lynxTodo TODO NOTE FIXME XXX contained + +syn match lynxDelimiter ":" skipwhite nextgroup=lynxBoolean,lynxNumber,lynxNone,lynxRCOption + +syn case ignore +syn keyword lynxBoolean TRUE FALSE ON OFF contained +syn keyword lynxNone NONE contained +syn case match + +syn match lynxNumber "-\=\<\d\+\>" contained + +"{{{ Options +syn case ignore +syn keyword lynxOption ACCEPT_ALL_COOKIES ALERTSECS ALWAYS_RESUBMIT_POSTS + \ ALWAYS_TRUSTED_EXEC ANONFTP_PASSWORD ASSUMED_COLOR + \ ASSUMED_DOC_CHARSET_CHOICE ASSUME_CHARSET ASSUME_LOCAL_CHARSET + \ ASSUME_UNREC_CHARSET AUTO_SESSION AUTO_UNCACHE_DIRLISTS BAD_HTML + \ BIBP_BIBHOST BIBP_GLOBAL_SERVER BLOCK_MULTI_BOOKMARKS BOLD_H1 + \ BOLD_HEADERS BOLD_NAME_ANCHORS BOOKMARK_FILE BROKEN_FTP_EPSV + \ BROKEN_FTP_RETR BZIP2_PATH CASE_SENSITIVE_ALWAYS_ON + \ CASE_SENSITIVE_SEARCHING CHARACTER_SET CHARSETS_DIRECTORY + \ CHARSET_SWITCH_RULES CHECKMAIL CHMOD_PATH COLLAPSE_BR_TAGS COLOR + \ COLOR_STYLE COMPRESS_PATH CONNECT_TIMEOUT COOKIE_ACCEPT_DOMAINS + \ COOKIE_FILE COOKIE_LOOSE_INVALID_DOMAINS + \ COOKIE_QUERY_INVALID_DOMAINS COOKIE_REJECT_DOMAINS COOKIE_SAVE_FILE + \ COOKIE_STRICT_INVALID_DOMAINS COPY_PATH CSO_PROXY CSWING_PATH + \ DEBUGSECS DEFAULT_BOOKMARK_FILE DEFAULT_CACHE_SIZE DEFAULT_COLORS + \ DEFAULT_EDITOR DEFAULT_INDEX_FILE DEFAULT_KEYPAD_MODE + \ DEFAULT_KEYPAD_MODE_IS_NUMBERS_AS_ARROWS DEFAULT_USER_MODE + \ DEFAULT_VIRTUAL_MEMORY_SIZE DELAYSECS DIRED_MENU DIR_LIST_ORDER + \ DIR_LIST_STYLE DISPLAY DISPLAY_CHARSET_CHOICE DOWNLOADER EMACS_KEYS + \ EMACS_KEYS_ALWAYS_ON ENABLE_LYNXRC ENABLE_SCROLLBACK EXTERNAL + \ FILE_EDITOR FILE_SORTING_METHOD FINGER_PROXY FOCUS_WINDOW + \ FORCE_8BIT_TOUPPER FORCE_COOKIE_PROMPT FORCE_EMPTY_HREFLESS_A + \ FORCE_SSL_COOKIES_SECURE FORCE_SSL_PROMPT FORMS_OPTIONS FTP_FORMAT + \ FTP_PASSIVE FTP_PROXY GLOBAL_EXTENSION_MAP GLOBAL_MAILCAP + \ GOPHER_PROXY GOTOBUFFER GZIP_PATH HELPFILE HIDDEN_LINK_MARKER + \ HISTORICAL_COMMENTS HTMLSRC_ATTRNAME_XFORM HTMLSRC_TAGNAME_XFORM + \ HTTPS_PROXY HTTP_PROXY INCLUDE INFLATE_PATH INFOSECS INSTALL_PATH + \ JUMPBUFFER JUMPFILE JUMP_PROMPT JUSTIFY JUSTIFY_MAX_VOID_PERCENT + \ KBLAYOUT KEYBOARD_LAYOUT KEYMAP KEYPAD_MODE + \ LEFTARROW_IN_TEXTFIELD_PROMPT LINEEDIT_MODE LIST_FORMAT + \ LIST_NEWS_DATES LIST_NEWS_NUMBERS LOCALE_CHARSET LOCALHOST_ALIAS + \ LOCAL_DOMAIN LOCAL_EXECUTION_LINKS_ALWAYS_ON + \ LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE LYNXCGI_DOCUMENT_ROOT + \ LYNXCGI_ENVIRONMENT LYNX_HOST_NAME LYNX_SIG_FILE MAIL_ADRS + \ MAIL_SYSTEM_ERROR_LOGGING MAKE_LINKS_FOR_ALL_IMAGES + \ MAKE_PSEUDO_ALTS_FOR_INLINES MAX_COOKIES_BUFFER MAX_COOKIES_DOMAIN + \ MAX_COOKIES_GLOBAL MESSAGESECS MINIMAL_COMMENTS MKDIR_PATH + \ MULTI_BOOKMARK MULTI_BOOKMARK_SUPPORT MV_PATH NCR_IN_BOOKMARKS + \ NESTED_TABLES NEWSPOST_PROXY NEWSREPLY_PROXY NEWS_CHUNK_SIZE + \ NEWS_MAX_CHUNK NEWS_POSTING NEWS_PROXY NNTPSERVER NNTP_PROXY + \ NONRESTARTING_SIGWINCH NO_DOT_FILES NO_FILE_REFERER + \ NO_FORCED_CORE_DUMP NO_FROM_HEADER NO_ISMAP_IF_USEMAP NO_MARGINS + \ NO_PAUSE NO_PROXY NO_REFERER_HEADER NO_TABLE_CENTER NO_TITLE + \ NUMBER_FIELDS_ON_LEFT NUMBER_LINKS_ON_LEFT OUTGOING_MAIL_CHARSET + \ PARTIAL PARTIAL_THRES PERSISTENT_COOKIES PERSONAL_EXTENSION_MAP + \ PERSONAL_MAILCAP PERSONAL_MAIL_ADDRESS POSITIONABLE_EDITOR + \ PREFERRED_CHARSET PREFERRED_ENCODING PREFERRED_LANGUAGE + \ PREFERRED_MEDIA_TYPES PREPEND_BASE_TO_SOURCE + \ PREPEND_CHARSET_TO_SOURCE PRETTYSRC PRETTYSRC_SPEC + \ PRETTYSRC_VIEW_NO_ANCHOR_NUMBERING PRINTER QUIT_DEFAULT_YES RAW_MODE + \ READ_TIMEOUT REFERER_WITH_QUERY REPLAYSECS REUSE_TEMPFILES + \ RLOGIN_PATH RM_PATH RMDIR_PATH RULE RULESFILE + \ RUN_ALL_EXECUTION_LINKS RUN_EXECUTION_LINKS_LOCAL SAVE_SPACE + \ SCAN_FOR_BURIED_NEWS_REFS SCREEN_SIZE SCROLLBAR SCROLLBAR_ARROW + \ SEEK_FRAG_AREA_IN_CUR SEEK_FRAG_MAP_IN_CUR SELECT_POPUPS + \ SEND_USERAGENT SESSION_FILE SESSION_LIMIT SET_COOKIES SETFONT_PATH + \ SHOW_COLOR SHOW_CURSOR SHOW_DOTFILES SHOW_KB_NAME SHOW_KB_RATE + \ SNEWSPOST_PROXY SNEWSREPLY_PROXY SNEWS_PROXY SOFT_DQUOTES + \ SOURCE_CACHE SOURCE_CACHE_FOR_ABORTED SSL_CERT_FILE STARTFILE + \ STATUS_BUFFER_SIZE STRIP_DOTDOT_URLS SUBSTITUTE_UNDERSCORES + \ SUB_BOOKMARKS SUFFIX SUFFIX_ORDER SYSLOG_REQUESTED_URLS SYSLOG_TEXT + \ SYSTEM_EDITOR SYSTEM_MAIL SYSTEM_MAIL_FLAGS TAGSOUP TAR_PATH + \ TELNET_PATH TEXTFIELDS_NEED_ACTIVATION TIMEOUT TN3270_PATH + \ TOUCH_PATH TRIM_INPUT_FIELDS TRUSTED_EXEC TRUSTED_LYNXCGI + \ UNCOMPRESS_PATH UNDERLINE_LINKS UNZIP_PATH UPLOADER + \ URL_DOMAIN_PREFIXES URL_DOMAIN_SUFFIXES USERAGENT USER_MODE + \ USE_FIXED_RECORDS USE_MOUSE USE_SELECT_POPUPS UUDECODE_PATH + \ VERBOSE_IMAGES VIEWER VISITED_LINKS VI_KEYS VI_KEYS_ALWAYS_ON + \ WAIS_PROXY XHTML_PARSING XLOADIMAGE_COMMAND ZCAT_PATH ZIP_PATH + \ contained nextgroup=lynxDelimiter +syn keyword lynxRCOption accept_all_cookies assume_charset auto_session + \ bookmark_file case_sensitive_searching character_set + \ cookie_accept_domains cookie_file cookie_loose_invalid_domains + \ cookie_query_invalid_domains cookie_reject_domains + \ cookie_strict_invalid_domains dir_list_style display emacs_keys + \ file_editor file_sorting_method force_cookie_prompt force_ssl_prompt + \ ftp_passive kblayout keypad_mode lineedit_mode locale_charset + \ make_links_for_all_images make_pseudo_alts_for_inlines + \ multi_bookmark no_pause personal_mail_address preferred_charset + \ preferred_encoding preferred_language preferred_media_types raw_mode + \ run_all_execution_links run_execution_links_on_local_files scrollbar + \ select_popups send_useragent session_file set_cookies show_color + \ show_cursor show_dotfiles show_kb_rate sub_bookmarks tagsoup + \ underline_links user_mode useragent verbose_images vi_keys + \ visited_links + \ contained nextgroup=lynxDelimiter +syn case match +" }}} + +" cfg2html.pl formatting directives +syn match lynxFormatDir "^\.h\d\s.*$" +syn match lynxFormatDir "^\.\(ex\|nf\)\(\s\+\d\+\)\=$" +syn match lynxFormatDir "^\.fi$" + +hi def link lynxBoolean Boolean +hi def link lynxComment Comment +hi def link lynxDelimiter Special +hi def link lynxFormatDir Special +hi def link lynxNone Constant +hi def link lynxNumber Number +hi def link lynxOption Identifier +hi def link lynxRCOption lynxOption +hi def link lynxTodo Todo + +let b:current_syntax = "lynx" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 fdm=marker: diff --git a/share/vim/vim73/syntax/m4.vim b/share/vim/vim74/syntax/m4.vim similarity index 100% rename from share/vim/vim73/syntax/m4.vim rename to share/vim/vim74/syntax/m4.vim diff --git a/share/vim/vim74/syntax/mail.vim b/share/vim/vim74/syntax/mail.vim new file mode 100644 index 00000000..823c6b41 --- /dev/null +++ b/share/vim/vim74/syntax/mail.vim @@ -0,0 +1,112 @@ +" Vim syntax file +" Language: Mail file +" Previous Maintainer: Felix von Leitner +" Maintainer: GI , where a='gi1242+vim', b='gmail', c='com' +" Last Change: Thu 02 Feb 2012 08:47:04 PM EST + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" The mail header is recognized starting with a "keyword:" line and ending +" with an empty line or other line that can't be in the header. All lines of +" the header are highlighted. Headers of quoted messages (quoted with >) are +" also highlighted. + +" Syntax clusters +syn cluster mailHeaderFields contains=mailHeaderKey,mailSubject,mailHeaderEmail,@mailLinks +syn cluster mailLinks contains=mailURL,mailEmail +syn cluster mailQuoteExps contains=mailQuoteExp1,mailQuoteExp2,mailQuoteExp3,mailQuoteExp4,mailQuoteExp5,mailQuoteExp6 + +syn case match +" For "From " matching case is required. The "From " is not matched in quoted +" emails +" According to RFC 2822 any printable ASCII character can appear in a field +" name, except ':'. +syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 fold +syn match mailHeaderKey contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$" + +" Nothing else depends on case. +syn case ignore + +" Headers in properly quoted (with "> " or ">") emails are matched +syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 fold + +" Usenet headers +syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$" + + +syn region mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$" +syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" fold +syn match mailHeaderKey contained contains=@NoSpell "\v(^(\> ?)*)@<=date:" +syn match mailSubject contained "\v^subject:.*$" fold +syn match mailSubject contained contains=@NoSpell "\v(^(\> ?)+)@<=subject:.*$" + +" Anything in the header between < and > is an email address +syn match mailHeaderEmail contained contains=@NoSpell "<.\{-}>" + +" Mail Signatures. (Begin with "-- ", end with change in quote level) +syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1 fold +syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1 fold + +" Treat verbatim Text special. +syn region mailVerbatim contains=@NoSpell keepend start="^#v+$" end="^#v-$" fold +syn region mailVerbatim contains=@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)#v+$" end="\z1#v-$" fold + +" URLs start with a known protocol or www,web,w3. +syn match mailURL contains=@NoSpell `\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^' <>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^' <>"]+)[a-z0-9/]` +syn match mailEmail contains=@NoSpell "\v[_=a-z\./+0-9-]+\@[a-z0-9._-]+\a{2}" + +" Make sure quote markers in regions (header / signature) have correct color +syn match mailQuoteExp1 contained "\v^(\> ?)" +syn match mailQuoteExp2 contained "\v^(\> ?){2}" +syn match mailQuoteExp3 contained "\v^(\> ?){3}" +syn match mailQuoteExp4 contained "\v^(\> ?){4}" +syn match mailQuoteExp5 contained "\v^(\> ?){5}" +syn match mailQuoteExp6 contained "\v^(\> ?){6}" + +" Even and odd quoted lines. Order is important here! +syn region mailQuoted6 keepend contains=mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold +syn region mailQuoted5 keepend contains=mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold +syn region mailQuoted4 keepend contains=mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold +syn region mailQuoted3 keepend contains=mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold +syn region mailQuoted2 keepend contains=mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{1}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold +syn region mailQuoted1 keepend contains=mailQuoted2,mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z([a-z]\+>\|[]|}>]\)" end="^\z1\@!" fold + +" Need to sync on the header. Assume we can do that within 100 lines +if exists("mail_minlines") + exec "syn sync minlines=" . mail_minlines +else + syn sync minlines=100 +endif + +" Define the default highlighting. +hi def link mailVerbatim Special +hi def link mailHeader Statement +hi def link mailHeaderKey Type +hi def link mailSignature PreProc +hi def link mailHeaderEmail mailEmail +hi def link mailEmail Special +hi def link mailURL String +hi def link mailSubject Title +hi def link mailQuoted1 Comment +hi def link mailQuoted3 mailQuoted1 +hi def link mailQuoted5 mailQuoted1 +hi def link mailQuoted2 Identifier +hi def link mailQuoted4 mailQuoted2 +hi def link mailQuoted6 mailQuoted2 +hi def link mailQuoteExp1 mailQuoted1 +hi def link mailQuoteExp2 mailQuoted2 +hi def link mailQuoteExp3 mailQuoted3 +hi def link mailQuoteExp4 mailQuoted4 +hi def link mailQuoteExp5 mailQuoted5 +hi def link mailQuoteExp6 mailQuoted6 + +let b:current_syntax = "mail" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/mailaliases.vim b/share/vim/vim74/syntax/mailaliases.vim similarity index 100% rename from share/vim/vim73/syntax/mailaliases.vim rename to share/vim/vim74/syntax/mailaliases.vim diff --git a/share/vim/vim74/syntax/mailcap.vim b/share/vim/vim74/syntax/mailcap.vim new file mode 100644 index 00000000..bd230406 --- /dev/null +++ b/share/vim/vim74/syntax/mailcap.vim @@ -0,0 +1,35 @@ +" Vim syntax file +" Language: Mailcap configuration file +" Maintainer: Doug Kearns +" Last Change: 2013 Jun 01 + +if exists("b:current_syntax") + finish +endif + +syn match mailcapComment "^#.*" + +syn region mailcapString start=+"+ end=+"+ contains=mailcapSpecial oneline + +syn match mailcapDelimiter "\\\@" +syn match mailcapFieldname "\<\(compose\|composetyped\|print\|edit\|test\|x11-bitmap\|nametemplate\|textualnewlines\|description\|x-\w+\)\>\ze\s*=" +syn match mailcapTypeField "^\(text\|image\|audio\|video\|application\|message\|multipart\|model\|x-[[:graph:]]\+\)\(/\(\*\|[[:graph:]]\+\)\)\=\ze\s*;" +syn case match + +hi def link mailcapComment Comment +hi def link mailcapDelimiter Delimiter +hi def link mailcapFlag Statement +hi def link mailcapFieldname Statement +hi def link mailcapSpecial Identifier +hi def link mailcapTypeField Type +hi def link mailcapString String + +let b:current_syntax = "mailcap" + +" vim: ts=8 diff --git a/share/vim/vim74/syntax/make.vim b/share/vim/vim74/syntax/make.vim new file mode 100644 index 00000000..6fd46aaa --- /dev/null +++ b/share/vim/vim74/syntax/make.vim @@ -0,0 +1,143 @@ +" Vim syntax file +" Language: Makefile +" Maintainer: Claudio Fleiner +" URL: http://www.fleiner.com/vim/syntax/make.vim +" Last Change: 2012 Oct 05 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + + +" some special characters +syn match makeSpecial "^\s*[@+-]\+" +syn match makeNextLine "\\\n\s*" + +" some directives +syn match makePreCondit "^ *\(ifeq\>\|else\>\|endif\>\|ifneq\>\|ifdef\>\|ifndef\>\)" +syn match makeInclude "^ *[-s]\=include" +syn match makeStatement "^ *vpath" +syn match makeExport "^ *\(export\|unexport\)\>" +syn match makeOverride "^ *override" +hi link makeOverride makeStatement +hi link makeExport makeStatement + +" catch unmatched define/endef keywords. endef only matches it is by itself on a line, possibly followed by a commend +syn region makeDefine start="^\s*define\s" end="^\s*endef\s*\(#.*\)\?$" contains=makeStatement,makeIdent,makePreCondit,makeDefine + +" Microsoft Makefile specials +syn case ignore +syn match makeInclude "^! *include" +syn match makePreCondit "! *\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|elseif\|else if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>" +syn case match + +" identifiers +syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent,makeSString,makeDString +syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent,makeSString,makeDString +syn match makeIdent "\$\$\w*" +syn match makeIdent "\$[^({]" +syn match makeIdent "^ *\a\w*\s*[:+?!*]="me=e-2 +syn match makeIdent "^ *\a\w*\s*="me=e-1 +syn match makeIdent "%" + +" Makefile.in variables +syn match makeConfig "@[A-Za-z0-9_]\+@" + +" make targets +" syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>" +syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1 nextgroup=makeSource +syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2 nextgroup=makeSource + +syn region makeTarget transparent matchgroup=makeTarget start="^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"rs=e-1 end=";"re=e-1,me=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine skipnl nextGroup=makeCommands +syn match makeTarget "^[A-Za-z0-9_./$()%*@-][A-Za-z0-9_./\t $()%*@-]*::\=\s*$" contains=makeIdent,makeSpecTarget skipnl nextgroup=makeCommands,makeCommandError + +syn region makeSpecTarget transparent matchgroup=makeSpecTarget start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*:\{1,2}[^:=]"rs=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine skipnl nextGroup=makeCommands +syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*::\=\s*$" contains=makeIdent skipnl nextgroup=makeCommands,makeCommandError + +syn match makeCommandError "^\s\+\S.*" contained +syn region makeCommands start=";"hs=s+1 start="^\t" end="^[^\t#]"me=e-1,re=e-1 end="^$" contained contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString nextgroup=makeCommandError +syn match makeCmdNextLine "\\\n."he=e-1 contained + + +" Statements / Functions (GNU make) +syn match makeStatement contained "(\(subst\|abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1 + +" Comment +if exists("make_microsoft") + syn match makeComment "#.*" contains=@Spell,makeTodo +elseif !exists("make_no_comments") + syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo + syn match makeComment "#$" contains=@Spell +endif +syn keyword makeTodo TODO FIXME XXX contained + +" match escaped quotes and any other escaped character +" except for $, as a backslash in front of a $ does +" not make it a standard character, but instead it will +" still act as the beginning of a variable +" The escaped char is not highlightet currently +syn match makeEscapedChar "\\[^$]" + + +syn region makeDString start=+\(\\\)\@= 508 || !exists("did_make_syn_inits") + if version < 508 + let did_make_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink makeNextLine makeSpecial + HiLink makeCmdNextLine makeSpecial + HiLink makeSpecTarget Statement + if !exists("make_no_commands") + HiLink makeCommands Number + endif + HiLink makeImplicit Function + HiLink makeTarget Function + HiLink makeInclude Include + HiLink makePreCondit PreCondit + HiLink makeStatement Statement + HiLink makeIdent Identifier + HiLink makeSpecial Special + HiLink makeComment Comment + HiLink makeDString String + HiLink makeSString String + HiLink makeBString Function + HiLink makeError Error + HiLink makeTodo Todo + HiLink makeDefine Define + HiLink makeCommandError Error + HiLink makeConfig PreCondit + delcommand HiLink +endif + +let b:current_syntax = "make" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: ts=8 diff --git a/share/vim/vim74/syntax/mallard.vim b/share/vim/vim74/syntax/mallard.vim new file mode 100644 index 00000000..b2a77b00 --- /dev/null +++ b/share/vim/vim74/syntax/mallard.vim @@ -0,0 +1,37 @@ +" Vim syntax file +" Language: Mallard +" Maintainer: Jaromir Hradilek +" URL: https://github.com/jhradilek/vim-syntax +" Last Change: 11 February 2013 +" Description: A syntax file for the Mallard markup language according to +" Mallard 1.0 DRAFT as of 2013-02-11. + +if exists("b:current_syntax") + finish +endif + +do Syntax xml +syn cluster xmlTagHook add=mallardTagName +syn spell toplevel +syn case match + +syn keyword mallardTagName app cite cmd code col colgroup comment contained +syn keyword mallardTagName credit desc em email example figure contained +syn keyword mallardTagName file gui guiseq info input item key contained +syn keyword mallardTagName keyseq license link links list listing contained +syn keyword mallardTagName media name note output p page quote contained +syn keyword mallardTagName revision screen section span steps contained +syn keyword mallardTagName subtitle synopsis sys table tbody td contained +syn keyword mallardTagName terms tfoot thead title tr tree var contained +syn keyword mallardTagName years contained + +syn region mallardComment start="" end=""me=e-10 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend +syn region mallardEmphasis start="" end="
"me=e-5 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend +syn region mallardTitle start="" end=""me=e-8 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend + +hi def link mallardComment Comment +hi def link mallardTagName Statement +hi def link mallardTitle Title +hi def mallardEmphasis term=italic cterm=italic gui=italic + +let b:current_syntax = "mallard" diff --git a/share/vim/vim73/syntax/man.vim b/share/vim/vim74/syntax/man.vim similarity index 100% rename from share/vim/vim73/syntax/man.vim rename to share/vim/vim74/syntax/man.vim diff --git a/share/vim/vim73/syntax/manconf.vim b/share/vim/vim74/syntax/manconf.vim similarity index 100% rename from share/vim/vim73/syntax/manconf.vim rename to share/vim/vim74/syntax/manconf.vim diff --git a/share/vim/vim73/syntax/manual.vim b/share/vim/vim74/syntax/manual.vim similarity index 100% rename from share/vim/vim73/syntax/manual.vim rename to share/vim/vim74/syntax/manual.vim diff --git a/share/vim/vim73/syntax/maple.vim b/share/vim/vim74/syntax/maple.vim similarity index 100% rename from share/vim/vim73/syntax/maple.vim rename to share/vim/vim74/syntax/maple.vim diff --git a/share/vim/vim74/syntax/markdown.vim b/share/vim/vim74/syntax/markdown.vim new file mode 100644 index 00000000..068115e9 --- /dev/null +++ b/share/vim/vim74/syntax/markdown.vim @@ -0,0 +1,134 @@ +" Vim syntax file +" Language: Markdown +" Maintainer: Tim Pope +" Filenames: *.markdown +" Last Change: 2013 May 30 + +if exists("b:current_syntax") + finish +endif + +if !exists('main_syntax') + let main_syntax = 'markdown' +endif + +runtime! syntax/html.vim +unlet! b:current_syntax + +if !exists('g:markdown_fenced_languages') + let g:markdown_fenced_languages = [] +endif +for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")') + if s:type =~ '\.' + let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*') + endif + exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim' + unlet! b:current_syntax +endfor +unlet! s:type + +syn sync minlines=10 +syn case ignore + +syn match markdownValid '[<>]\c[a-z/$!]\@!' +syn match markdownValid '&\%(#\=\w*;\)\@!' + +syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock,htmlSpecialChar + +syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule +syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError + +syn match markdownH1 "^.\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink +syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink + +syn match markdownHeadingRule "^[=-]\+$" contained + +syn region markdownH1 matchgroup=markdownHeadingDelimiter start="##\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained +syn region markdownH2 matchgroup=markdownHeadingDelimiter start="###\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained +syn region markdownH3 matchgroup=markdownHeadingDelimiter start="####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained +syn region markdownH4 matchgroup=markdownHeadingDelimiter start="#####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained +syn region markdownH5 matchgroup=markdownHeadingDelimiter start="######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained +syn region markdownH6 matchgroup=markdownHeadingDelimiter start="#######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained + +syn match markdownBlockquote ">\%(\s\|$\)" contained nextgroup=@markdownBlock + +syn region markdownCodeBlock start=" \|\t" end="$" contained + +" TODO: real nesting +syn match markdownListMarker "\%(\t\| \{0,4\}\)[-*+]\%(\s\+\S\)\@=" contained +syn match markdownOrderedListMarker "\%(\t\| \{0,4}\)\<\d\+\.\%(\s\+\S\)\@=" contained + +syn match markdownRule "\* *\* *\*[ *]*$" contained +syn match markdownRule "- *- *-[ -]*$" contained + +syn match markdownLineBreak " \{2,\}$" + +syn region markdownIdDeclaration matchgroup=markdownLinkDelimiter start="^ \{0,3\}!\=\[" end="\]:" oneline keepend nextgroup=markdownUrl skipwhite +syn match markdownUrl "\S\+" nextgroup=markdownUrlTitle skipwhite contained +syn region markdownUrl matchgroup=markdownUrlDelimiter start="<" end=">" oneline keepend nextgroup=markdownUrlTitle skipwhite contained +syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+"+ keepend contained +syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained +syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained + +syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^]]*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" keepend nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart +syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained +syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained +syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline + +syn region markdownItalic start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart +syn region markdownItalic start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart +syn region markdownBold start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart,markdownItalic +syn region markdownBold start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart,markdownItalic +syn region markdownBoldItalic start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart +syn region markdownBoldItalic start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart +syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart +syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart +syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*```.*$" end="^\s*```\ze\s*$" keepend + +if main_syntax ==# 'markdown' + for s:type in g:markdown_fenced_languages + exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*```'.matchstr(s:type,'[^=]*').'\>.*$" end="^\s*```\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') + endfor + unlet! s:type +endif + +syn match markdownEscape "\\[][\\`*_{}()#+.!-]" +syn match markdownError "\w\@<=_\w\@=" + +hi def link markdownH1 htmlH1 +hi def link markdownH2 htmlH2 +hi def link markdownH3 htmlH3 +hi def link markdownH4 htmlH4 +hi def link markdownH5 htmlH5 +hi def link markdownH6 htmlH6 +hi def link markdownHeadingRule markdownRule +hi def link markdownHeadingDelimiter Delimiter +hi def link markdownOrderedListMarker markdownListMarker +hi def link markdownListMarker htmlTagName +hi def link markdownBlockquote Comment +hi def link markdownRule PreProc + +hi def link markdownLinkText htmlLink +hi def link markdownIdDeclaration Typedef +hi def link markdownId Type +hi def link markdownAutomaticLink markdownUrl +hi def link markdownUrl Float +hi def link markdownUrlTitle String +hi def link markdownIdDelimiter markdownLinkDelimiter +hi def link markdownUrlDelimiter htmlTag +hi def link markdownUrlTitleDelimiter Delimiter + +hi def link markdownItalic htmlItalic +hi def link markdownBold htmlBold +hi def link markdownBoldItalic htmlBoldItalic +hi def link markdownCodeDelimiter Delimiter + +hi def link markdownEscape Special +hi def link markdownError Error + +let b:current_syntax = "markdown" +if main_syntax ==# 'markdown' + unlet main_syntax +endif + +" vim:set sw=2: diff --git a/share/vim/vim74/syntax/masm.vim b/share/vim/vim74/syntax/masm.vim new file mode 100644 index 00000000..1711601f --- /dev/null +++ b/share/vim/vim74/syntax/masm.vim @@ -0,0 +1,355 @@ +" Vim syntax file +" Language: Microsoft Macro Assembler (80x86) +" Orig Author: Rob Brady +" Maintainer: Wu Yongwei +" Last Change: $Date: 2012/02/04 12:45:39 $ +" $Revision: 1.46 $ + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn case ignore + + +syn match masmIdentifier "[@a-z_$?][@a-z0-9_$?]*" +syn match masmLabel "^\s*[@a-z_$?][@a-z0-9_$?]*:"he=e-1 + +syn match masmDecimal "[-+]\?\d\+[dt]\?" +syn match masmBinary "[-+]\?[0-1]\+[by]" "put this before hex or 0bfh dies! +syn match masmOctal "[-+]\?[0-7]\+[oq]" +syn match masmHexadecimal "[-+]\?[0-9]\x*h" +syn match masmFloatRaw "[-+]\?[0-9]\x*r" +syn match masmFloat "[-+]\?\d\+\.\(\d*\(E[-+]\?\d\+\)\?\)\?" + +syn match masmComment ";.*" contains=@Spell +syn region masmComment start=+COMMENT\s*\z(\S\)+ end=+\z1.*+ contains=@Spell +syn region masmString start=+'+ end=+'+ oneline contains=@Spell +syn region masmString start=+"+ end=+"+ oneline contains=@Spell + +syn region masmTitleArea start=+\" +syn match masmOperator "CARRY?" +syn match masmOperator "OVERFLOW?" +syn match masmOperator "PARITY?" +syn match masmOperator "SIGN?" +syn match masmOperator "ZERO?" +syn keyword masmDirective ALIAS ASSUME CATSTR COMM DB DD DF DOSSEG DQ DT +syn keyword masmDirective DW ECHO ELSE ELSEIF ELSEIF1 ELSEIF2 ELSEIFB +syn keyword masmDirective ELSEIFDEF ELSEIFDIF ELSEIFDIFI ELSEIFE +syn keyword masmDirective ELSEIFIDN ELSEIFIDNI ELSEIFNB ELSEIFNDEF END +syn keyword masmDirective ENDIF ENDM ENDP ENDS EQU EVEN EXITM EXTERN +syn keyword masmDirective EXTERNDEF EXTRN FOR FORC GOTO GROUP IF IF1 IF2 +syn keyword masmDirective IFB IFDEF IFDIF IFDIFI IFE IFIDN IFIDNI IFNB +syn keyword masmDirective IFNDEF INCLUDE INCLUDELIB INSTR INVOKE IRP +syn keyword masmDirective IRPC LABEL LOCAL MACRO NAME OPTION ORG PAGE +syn keyword masmDirective POPCONTEXT PROC PROTO PUBLIC PURGE PUSHCONTEXT +syn keyword masmDirective RECORD REPEAT REPT SEGMENT SIZESTR STRUC +syn keyword masmDirective STRUCT SUBSTR SUBTITLE SUBTTL TEXTEQU TITLE +syn keyword masmDirective TYPEDEF UNION WHILE +syn match masmDirective "\.8086\>" +syn match masmDirective "\.8087\>" +syn match masmDirective "\.NO87\>" +syn match masmDirective "\.186\>" +syn match masmDirective "\.286\>" +syn match masmDirective "\.286C\>" +syn match masmDirective "\.286P\>" +syn match masmDirective "\.287\>" +syn match masmDirective "\.386\>" +syn match masmDirective "\.386C\>" +syn match masmDirective "\.386P\>" +syn match masmDirective "\.387\>" +syn match masmDirective "\.486\>" +syn match masmDirective "\.486P\>" +syn match masmDirective "\.586\>" +syn match masmDirective "\.586P\>" +syn match masmDirective "\.686\>" +syn match masmDirective "\.686P\>" +syn match masmDirective "\.K3D\>" +syn match masmDirective "\.MMX\>" +syn match masmDirective "\.XMM\>" +syn match masmDirective "\.ALPHA\>" +syn match masmDirective "\.DOSSEG\>" +syn match masmDirective "\.SEQ\>" +syn match masmDirective "\.CODE\>" +syn match masmDirective "\.CONST\>" +syn match masmDirective "\.DATA\>" +syn match masmDirective "\.DATA?" +syn match masmDirective "\.EXIT\>" +syn match masmDirective "\.FARDATA\>" +syn match masmDirective "\.FARDATA?" +syn match masmDirective "\.MODEL\>" +syn match masmDirective "\.STACK\>" +syn match masmDirective "\.STARTUP\>" +syn match masmDirective "\.IF\>" +syn match masmDirective "\.ELSE\>" +syn match masmDirective "\.ELSEIF\>" +syn match masmDirective "\.ENDIF\>" +syn match masmDirective "\.REPEAT\>" +syn match masmDirective "\.UNTIL\>" +syn match masmDirective "\.UNTILCXZ\>" +syn match masmDirective "\.WHILE\>" +syn match masmDirective "\.ENDW\>" +syn match masmDirective "\.BREAK\>" +syn match masmDirective "\.CONTINUE\>" +syn match masmDirective "\.ERR\>" +syn match masmDirective "\.ERR1\>" +syn match masmDirective "\.ERR2\>" +syn match masmDirective "\.ERRB\>" +syn match masmDirective "\.ERRDEF\>" +syn match masmDirective "\.ERRDIF\>" +syn match masmDirective "\.ERRDIFI\>" +syn match masmDirective "\.ERRE\>" +syn match masmDirective "\.ERRIDN\>" +syn match masmDirective "\.ERRIDNI\>" +syn match masmDirective "\.ERRNB\>" +syn match masmDirective "\.ERRNDEF\>" +syn match masmDirective "\.ERRNZ\>" +syn match masmDirective "\.LALL\>" +syn match masmDirective "\.SALL\>" +syn match masmDirective "\.XALL\>" +syn match masmDirective "\.LFCOND\>" +syn match masmDirective "\.SFCOND\>" +syn match masmDirective "\.TFCOND\>" +syn match masmDirective "\.CREF\>" +syn match masmDirective "\.NOCREF\>" +syn match masmDirective "\.XCREF\>" +syn match masmDirective "\.LIST\>" +syn match masmDirective "\.NOLIST\>" +syn match masmDirective "\.XLIST\>" +syn match masmDirective "\.LISTALL\>" +syn match masmDirective "\.LISTIF\>" +syn match masmDirective "\.NOLISTIF\>" +syn match masmDirective "\.LISTMACRO\>" +syn match masmDirective "\.NOLISTMACRO\>" +syn match masmDirective "\.LISTMACROALL\>" +syn match masmDirective "\.FPO\>" +syn match masmDirective "\.RADIX\>" +syn match masmDirective "\.SAFESEH\>" +syn match masmDirective "%OUT\>" +syn match masmDirective "ALIGN\>" +syn match masmOption "ALIGN([0-9]\+)" + +syn keyword masmRegister AX BX CX DX SI DI BP SP +syn keyword masmRegister CS DS SS ES FS GS +syn keyword masmRegister AH BH CH DH AL BL CL DL +syn keyword masmRegister EAX EBX ECX EDX ESI EDI EBP ESP +syn keyword masmRegister CR0 CR2 CR3 CR4 +syn keyword masmRegister DR0 DR1 DR2 DR3 DR6 DR7 +syn keyword masmRegister TR3 TR4 TR5 TR6 TR7 +syn match masmRegister "ST([0-7])" + +" x86-64 registers +syn keyword masmRegister RAX RBX RCX RDX RSI RDI RBP RSP +syn keyword masmRegister R8 R9 R10 R11 R12 R13 R14 R15 +syn keyword masmRegister R8D R9D R10D R11D R12D R13D R14D R15D +syn keyword masmRegister R8W R9W R10W R11W R12W R13W R14W R15W +syn keyword masmRegister R8B R9B R10B R11B R12B R13B R14B R15B + +" Instruction prefixes +syn keyword masmOpcode LOCK REP REPE REPNE REPNZ REPZ + +" 8086/8088 opcodes +syn keyword masmOpcode AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD +syn keyword masmOpcode CLI CMC CMP CMPS CMPSB CMPSW CWD DAA DAS DEC +syn keyword masmOpcode DIV ESC HLT IDIV IMUL IN INC INT INTO IRET +syn keyword masmOpcode JCXZ JMP LAHF LDS LEA LES LODS LODSB LODSW +syn keyword masmOpcode LOOP LOOPE LOOPEW LOOPNE LOOPNEW LOOPNZ +syn keyword masmOpcode LOOPNZW LOOPW LOOPZ LOOPZW MOV MOVS MOVSB +syn keyword masmOpcode MOVSW MUL NEG NOP NOT OR OUT POP POPF PUSH +syn keyword masmOpcode PUSHF RCL RCR RET RETF RETN ROL ROR SAHF SAL +syn keyword masmOpcode SAR SBB SCAS SCASB SCASW SHL SHR STC STD STI +syn keyword masmOpcode STOS STOSB STOSW SUB TEST WAIT XCHG XLAT XLATB +syn keyword masmOpcode XOR +syn match masmOpcode "J\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" + +" 80186 opcodes +syn keyword masmOpcode BOUND ENTER INS INSB INSW LEAVE OUTS OUTSB +syn keyword masmOpcode OUTSW POPA PUSHA PUSHW + +" 80286 opcodes +syn keyword masmOpcode ARPL LAR LSL SGDT SIDT SLDT SMSW STR VERR VERW + +" 80286/80386 privileged opcodes +syn keyword masmOpcode CLTS LGDT LIDT LLDT LMSW LTR + +" 80386 opcodes +syn keyword masmOpcode BSF BSR BT BTC BTR BTS CDQ CMPSD CWDE INSD +syn keyword masmOpcode IRETD IRETDF IRETF JECXZ LFS LGS LODSD LOOPD +syn keyword masmOpcode LOOPED LOOPNED LOOPNZD LOOPZD LSS MOVSD MOVSX +syn keyword masmOpcode MOVZX OUTSD POPAD POPFD PUSHAD PUSHD PUSHFD +syn keyword masmOpcode SCASD SHLD SHRD STOSD +syn match masmOpcode "SET\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" + +" 80486 opcodes +syn keyword masmOpcode BSWAP CMPXCHG INVD INVLPG WBINVD XADD + +" Floating-point opcodes as of 487 +syn keyword masmOpFloat F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX +syn keyword masmOpFloat FNCLEX FCOM FCOMP FCOMPP FCOS FDECSTP FDISI +syn keyword masmOpFloat FNDISI FDIV FDIVP FDIVR FDIVRP FENI FNENI +syn keyword masmOpFloat FFREE FIADD FICOM FICOMP FIDIV FIDIVR FILD +syn keyword masmOpFloat FIMUL FINCSTP FINIT FNINIT FIST FISTP FISUB +syn keyword masmOpFloat FISUBR FLD FLDCW FLDENV FLDLG2 FLDLN2 FLDL2E +syn keyword masmOpFloat FLDL2T FLDPI FLDZ FLD1 FMUL FMULP FNOP FPATAN +syn keyword masmOpFloat FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FNSAVE +syn keyword masmOpFloat FSCALE FSETPM FSIN FSINCOS FSQRT FST FSTCW +syn keyword masmOpFloat FNSTCW FSTENV FNSTENV FSTP FSTSW FNSTSW FSUB +syn keyword masmOpFloat FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP FUCOMPP +syn keyword masmOpFloat FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1 + +" Floating-point opcodes in Pentium and later processors +syn keyword masmOpFloat FCMOVE FCMOVNE FCMOVB FCMOVBE FCMOVNB FCMOVNBE +syn keyword masmOpFloat FCMOVU FCMOVNU FCOMI FUCOMI FCOMIP FUCOMIP +syn keyword masmOpFloat FXSAVE FXRSTOR + +" MMX opcodes (Pentium w/ MMX, Pentium II, and later) +syn keyword masmOpcode MOVD MOVQ PACKSSWB PACKSSDW PACKUSWB +syn keyword masmOpcode PUNPCKHBW PUNPCKHWD PUNPCKHDQ +syn keyword masmOpcode PUNPCKLBW PUNPCKLWD PUNPCKLDQ +syn keyword masmOpcode PADDB PADDW PADDD PADDSB PADDSW PADDUSB PADDUSW +syn keyword masmOpcode PSUBB PSUBW PSUBD PSUBSB PSUBSW PSUBUSB PSUBUSW +syn keyword masmOpcode PMULHW PMULLW PMADDWD +syn keyword masmOpcode PCMPEQB PCMPEQW PCMPEQD PCMPGTB PCMPGTW PCMPGTD +syn keyword masmOpcode PAND PANDN POR PXOR +syn keyword masmOpcode PSLLW PSLLD PSLLQ PSRLW PSRLD PSRLQ PSRAW PSRAD +syn keyword masmOpcode EMMS + +" SSE opcodes (Pentium III and later) +syn keyword masmOpcode MOVAPS MOVUPS MOVHPS MOVHLPS MOVLPS MOVLHPS +syn keyword masmOpcode MOVMSKPS MOVSS +syn keyword masmOpcode ADDPS ADDSS SUBPS SUBSS MULPS MULSS DIVPS DIVSS +syn keyword masmOpcode RCPPS RCPSS SQRTPS SQRTSS RSQRTPS RSQRTSS +syn keyword masmOpcode MAXPS MAXSS MINPS MINSS +syn keyword masmOpcode CMPPS CMPSS COMISS UCOMISS +syn keyword masmOpcode ANDPS ANDNPS ORPS XORPS +syn keyword masmOpcode SHUFPS UNPCKHPS UNPCKLPS +syn keyword masmOpcode CVTPI2PS CVTSI2SS CVTPS2PI CVTTPS2PI +syn keyword masmOpcode CVTSS2SI CVTTSS2SI +syn keyword masmOpcode LDMXCSR STMXCSR +syn keyword masmOpcode PAVGB PAVGW PEXTRW PINSRW PMAXUB PMAXSW +syn keyword masmOpcode PMINUB PMINSW PMOVMSKB PMULHUW PSADBW PSHUFW +syn keyword masmOpcode MASKMOVQ MOVNTQ MOVNTPS SFENCE +syn keyword masmOpcode PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA + +" SSE2 opcodes (Pentium 4 and later) +syn keyword masmOpcode MOVAPD MOVUPD MOVHPD MOVLPD MOVMSKPD MOVSD +syn keyword masmOpcode ADDPD ADDSD SUBPD SUBSD MULPD MULSD DIVPD DIVSD +syn keyword masmOpcode SQRTPD SQRTSD MAXPD MAXSD MINPD MINSD +syn keyword masmOpcode ANDPD ANDNPD ORPD XORPD +syn keyword masmOpcode CMPPD CMPSD COMISD UCOMISD +syn keyword masmOpcode SHUFPD UNPCKHPD UNPCKLPD +syn keyword masmOpcode CVTPD2PI CVTTPD2PI CVTPI2PD CVTPD2DQ +syn keyword masmOpcode CVTTPD2DQ CVTDQ2PD CVTPS2PD CVTPD2PS +syn keyword masmOpcode CVTSS2SD CVTSD2SS CVTSD2SI CVTTSD2SI CVTSI2SD +syn keyword masmOpcode CVTDQ2PS CVTPS2DQ CVTTPS2DQ +syn keyword masmOpcode MOVDQA MOVDQU MOVQ2DQ MOVDQ2Q PMULUDQ +syn keyword masmOpcode PADDQ PSUBQ PSHUFLW PSHUFHW PSHUFD +syn keyword masmOpcode PSLLDQ PSRLDQ PUNPCKHQDQ PUNPCKLQDQ +syn keyword masmOpcode CLFLUSH LFENCE MFENCE PAUSE MASKMOVDQU +syn keyword masmOpcode MOVNTPD MOVNTDQ MOVNTI + +" SSE3 opcodes (Pentium 4 w/ Hyper-Threading and later) +syn keyword masmOpcode FISTTP LDDQU ADDSUBPS ADDSUBPD +syn keyword masmOpcode HADDPS HSUBPS HADDPD HSUBPD +syn keyword masmOpcode MOVSHDUP MOVSLDUP MOVDDUP MONITOR MWAIT + +" Other opcodes in Pentium and later processors +syn keyword masmOpcode CMPXCHG8B CPUID UD2 +syn keyword masmOpcode RSM RDMSR WRMSR RDPMC RDTSC SYSENTER SYSEXIT +syn match masmOpcode "CMOV\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" + + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_masm_syntax_inits") + if version < 508 + let did_masm_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " The default methods for highlighting. Can be overridden later + HiLink masmLabel PreProc + HiLink masmComment Comment + HiLink masmDirective Statement + HiLink masmType Type + HiLink masmOperator Type + HiLink masmOption Special + HiLink masmRegister Special + HiLink masmString String + HiLink masmText String + HiLink masmTitle Title + HiLink masmOpcode Statement + HiLink masmOpFloat Statement + + HiLink masmHexadecimal Number + HiLink masmDecimal Number + HiLink masmOctal Number + HiLink masmBinary Number + HiLink masmFloatRaw Number + HiLink masmFloat Number + + HiLink masmIdentifier Identifier + + syntax sync minlines=50 + + delcommand HiLink +endif + +let b:current_syntax = "masm" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/mason.vim b/share/vim/vim74/syntax/mason.vim similarity index 100% rename from share/vim/vim73/syntax/mason.vim rename to share/vim/vim74/syntax/mason.vim diff --git a/share/vim/vim73/syntax/master.vim b/share/vim/vim74/syntax/master.vim similarity index 100% rename from share/vim/vim73/syntax/master.vim rename to share/vim/vim74/syntax/master.vim diff --git a/share/vim/vim74/syntax/matlab.vim b/share/vim/vim74/syntax/matlab.vim new file mode 100644 index 00000000..3828f3e8 --- /dev/null +++ b/share/vim/vim74/syntax/matlab.vim @@ -0,0 +1,125 @@ +" Vim syntax file +" Language: Matlab +" Maintainer: Maurizio Tranchero - maurizio(.)tranchero(@)gmail(.)com +" Credits: Preben 'Peppe' Guldberg +" Original author: Mario Eusebio +" Last Change: Wed Jan 13 11:12:34 CET 2010 +" sinh added to matlab implicit commands +" Change History: +" - 'global' and 'persistent' keyword are now recognized + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn keyword matlabStatement return +syn keyword matlabLabel case switch +syn keyword matlabConditional else elseif end if otherwise +syn keyword matlabRepeat do for while +" MT_ADDON - added exception-specific keywords +syn keyword matlabExceptions try catch +syn keyword matlabOO classdef properties events methods + +syn keyword matlabTodo contained TODO +syn keyword matlabScope global persistent + +" If you do not want these operators lit, uncommment them and the "hi link" below +syn match matlabArithmeticOperator "[-+]" +syn match matlabArithmeticOperator "\.\=[*/\\^]" +syn match matlabRelationalOperator "[=~]=" +syn match matlabRelationalOperator "[<>]=\=" +syn match matlabLogicalOperator "[&|~]" + +syn match matlabLineContinuation "\.\{3}" + +"syn match matlabIdentifier "\<\a\w*\>" + +" String +" MT_ADDON - added 'skip' in order to deal with 'tic' escaping sequence +syn region matlabString start=+'+ end=+'+ oneline skip=+''+ + +" If you don't like tabs +syn match matlabTab "\t" + +" Standard numbers +syn match matlabNumber "\<\d\+[ij]\=\>" +" floating point number, with dot, optional exponent +syn match matlabFloat "\<\d\+\(\.\d*\)\=\([edED][-+]\=\d\+\)\=[ij]\=\>" +" floating point number, starting with a dot, optional exponent +syn match matlabFloat "\.\d\+\([edED][-+]\=\d\+\)\=[ij]\=\>" + +" Transpose character and delimiters: Either use just [...] or (...) aswell +syn match matlabDelimiter "[][]" +"syn match matlabDelimiter "[][()]" +syn match matlabTransposeOperator "[])a-zA-Z0-9.]'"lc=1 + +syn match matlabSemicolon ";" + +syn match matlabComment "%.*$" contains=matlabTodo,matlabTab +" MT_ADDON - correctly highlights words after '...' as comments +syn match matlabComment "\.\.\..*$" contains=matlabTodo,matlabTab +syn region matlabMultilineComment start=+%{+ end=+%}+ contains=matlabTodo,matlabTab + +syn keyword matlabOperator break zeros default margin round ones rand +syn keyword matlabOperator ceil floor size clear zeros eye mean std cov + +syn keyword matlabFunction error eval function + +syn keyword matlabImplicit abs acos atan asin cos cosh exp log prod sum +syn keyword matlabImplicit log10 max min sign sin sinh sqrt tan reshape + +syn match matlabError "-\=\<\d\+\.\d\+\.[^*/\\^]" +syn match matlabError "-\=\<\d\+\.\d\+[eEdD][-+]\=\d\+\.\([^*/\\^]\)" + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_matlab_syntax_inits") + if version < 508 + let did_matlab_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink matlabTransposeOperator matlabOperator + HiLink matlabOperator Operator + HiLink matlabLineContinuation Special + HiLink matlabLabel Label + HiLink matlabConditional Conditional + HiLink matlabExceptions Conditional + HiLink matlabRepeat Repeat + HiLink matlabTodo Todo + HiLink matlabString String + HiLink matlabDelimiter Identifier + HiLink matlabTransposeOther Identifier + HiLink matlabNumber Number + HiLink matlabFloat Float + HiLink matlabFunction Function + HiLink matlabError Error + HiLink matlabImplicit matlabStatement + HiLink matlabStatement Statement + HiLink matlabOO Statement + HiLink matlabSemicolon SpecialChar + HiLink matlabComment Comment + HiLink matlabMultilineComment Comment + HiLink matlabScope Type + + HiLink matlabArithmeticOperator matlabOperator + HiLink matlabRelationalOperator matlabOperator + HiLink matlabLogicalOperator matlabOperator + +"optional highlighting + "HiLink matlabIdentifier Identifier + "HiLink matlabTab Error + + delcommand HiLink +endif + +let b:current_syntax = "matlab" + +"EOF vim: ts=8 noet tw=100 sw=8 sts=0 diff --git a/share/vim/vim73/syntax/maxima.vim b/share/vim/vim74/syntax/maxima.vim similarity index 100% rename from share/vim/vim73/syntax/maxima.vim rename to share/vim/vim74/syntax/maxima.vim diff --git a/share/vim/vim73/syntax/mel.vim b/share/vim/vim74/syntax/mel.vim similarity index 100% rename from share/vim/vim73/syntax/mel.vim rename to share/vim/vim74/syntax/mel.vim diff --git a/share/vim/vim73/syntax/messages.vim b/share/vim/vim74/syntax/messages.vim similarity index 100% rename from share/vim/vim73/syntax/messages.vim rename to share/vim/vim74/syntax/messages.vim diff --git a/share/vim/vim73/syntax/mf.vim b/share/vim/vim74/syntax/mf.vim similarity index 100% rename from share/vim/vim73/syntax/mf.vim rename to share/vim/vim74/syntax/mf.vim diff --git a/share/vim/vim73/syntax/mgl.vim b/share/vim/vim74/syntax/mgl.vim similarity index 100% rename from share/vim/vim73/syntax/mgl.vim rename to share/vim/vim74/syntax/mgl.vim diff --git a/share/vim/vim73/syntax/mgp.vim b/share/vim/vim74/syntax/mgp.vim similarity index 100% rename from share/vim/vim73/syntax/mgp.vim rename to share/vim/vim74/syntax/mgp.vim diff --git a/share/vim/vim73/syntax/mib.vim b/share/vim/vim74/syntax/mib.vim similarity index 100% rename from share/vim/vim73/syntax/mib.vim rename to share/vim/vim74/syntax/mib.vim diff --git a/share/vim/vim74/syntax/mma.vim b/share/vim/vim74/syntax/mma.vim new file mode 100644 index 00000000..c63beb11 --- /dev/null +++ b/share/vim/vim74/syntax/mma.vim @@ -0,0 +1,331 @@ +" Vim syntax file +" Language: Mathematica +" Maintainer: steve layland +" Last Change: 2012 Feb 03 by Thilo Six +" Source: http://members.wri.com/layland/vim/syntax/mma.vim +" http://vim.sourceforge.net/scripts/script.php?script_id=1273 +" Id: $Id: mma.vim,v 1.4 2006/04/14 20:40:38 vimboss Exp $ +" NOTE: +" +" Empty .m files will automatically be presumed as Matlab files +" unless you have the following in your .vimrc: +" +" let filetype_m="mma" +" +" I also recommend setting the default 'Comment' hilighting to something +" other than the color used for 'Function', since both are plentiful in +" most mathematica files, and they are often the same color (when using +" background=dark). +" +" Credits: +" o Original Mathematica syntax version written by +" Wolfgang Waltenberger +" o Some ideas like the CommentStar,CommentTitle were adapted +" from the Java vim syntax file by Claudio Fleiner. Thanks! +" o Everything else written by steve +" +" Bugs: +" o Vim 6.1 didn't really have support for character classes +" of other named character classes. For example, [\a\d] +" didn't work. Therefore, a lot of this code uses explicit +" character classes instead: [0-9a-zA-Z] +" +" TODO: +" folding +" fix nesting +" finish populating popular symbols + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Group Definitions: +syntax cluster mmaNotes contains=mmaTodo,mmaFixme +syntax cluster mmaComments contains=mmaComment,mmaFunctionComment,mmaItem,mmaFunctionTitle,mmaCommentStar +syntax cluster mmaCommentStrings contains=mmaLooseQuote,mmaCommentString,mmaUnicode +syntax cluster mmaStrings contains=@mmaCommentStrings,mmaString +syntax cluster mmaTop contains=mmaOperator,mmaGenericFunction,mmaPureFunction,mmaVariable + +" Predefined Constants: +" to list all predefined Symbols would be too insane... +" it's probably smarter to define a select few, and get the rest from +" context if absolutely necessary. +" TODO - populate this with other often used Symbols + +" standard fixed symbols: +syntax keyword mmaVariable True False None Automatic All Null C General + +" mathematical constants: +syntax keyword mmaVariable Pi I E Infinity ComplexInfinity Indeterminate GoldenRatio EulerGamma Degree Catalan Khinchin Glaisher + +" stream data / atomic heads: +syntax keyword mmaVariable Byte Character Expression Number Real String Word EndOfFile Integer Symbol + +" sets: +syntax keyword mmaVariable Integers Complexes Reals Booleans Rationals + +" character classes: +syntax keyword mmaPattern DigitCharacter LetterCharacter WhitespaceCharacter WordCharacter EndOfString StartOfString EndOfLine StartOfLine WordBoundary + +" SelectionMove directions/units: +syntax keyword mmaVariable Next Previous After Before Character Word Expression TextLine CellContents Cell CellGroup EvaluationCell ButtonCell GeneratedCell Notebook +syntax keyword mmaVariable CellTags CellStyle CellLabel + +" TableForm positions: +syntax keyword mmaVariable Above Below Left Right + +" colors: +syntax keyword mmaVariable Black Blue Brown Cyan Gray Green Magenta Orange Pink Purple Red White Yellow + +" function attributes +syntax keyword mmaVariable Protected Listable OneIdentity Orderless Flat Constant NumericFunction Locked ReadProtected HoldFirst HoldRest HoldAll HoldAllComplete SequenceHold NHoldFirst NHoldRest NHoldAll Temporary Stub + +" Comment Sections: +" this: +" :that: +syntax match mmaItem "\%(^[( |*\t]*\)\@<=\%(:\+\|\w\)\w\+\%( \w\+\)\{0,3}:" contained contains=@mmaNotes + +" Comment Keywords: +syntax keyword mmaTodo TODO NOTE HEY contained +syntax match mmaTodo "X\{3,}" contained +syntax keyword mmaFixme FIX[ME] FIXTHIS BROKEN contained +syntax match mmaFixme "BUG\%( *\#\=[0-9]\+\)\=" contained +" yay pirates... +syntax match mmaFixme "\%(Y\=A\+R\+G\+\|GRR\+\|CR\+A\+P\+\)\%(!\+\)\=" contained + +" EmPHAsis: +" this unnecessary, but whatever :) +syntax match mmaemPHAsis "\%(^\|\s\)\([_/]\)[a-zA-Z0-9]\+\%([- \t':]\+[a-zA-Z0-9]\+\)*\1\%(\s\|$\)" contained contains=mmaemPHAsis +syntax match mmaemPHAsis "\%(^\|\s\)(\@]\@!" contains=mmaOperator +"pattern default: +syntax match mmaPattern ": *[^ ,]\+[\], ]\@=" contains=@mmaCommentStrings,@mmaTop,mmaOperator +"pattern head/test: +syntax match mmaPattern "[A-Za-z0-9`]*_\+\%(\a\+\)\=\%(?([^)]\+)\|?[^\]},]\+\)\=" contains=@mmaTop,@mmaCommentStrings,mmaPatternError + +" Operators: +" /: ^= ^:= UpValue +" /; Conditional +" := = DownValue +" == === || +" != =!= && Logic +" >= <= < > +" += -= *= +" /= ++ -- Math +" ^* +" -> :> Rules +" @@ @@@ Apply +" /@ //@ Map +" /. //. Replace +" // @ Function application +" <> ~~ String/Pattern join +" ~ infix operator +" . : Pattern operators +syntax match mmaOperator "\%(@\{1,3}\|//[.@]\=\)" +syntax match mmaOperator "\%(/[;:@.]\=\|\^\=:\==\)" +syntax match mmaOperator "\%([-:=]\=>\|<=\=\)" +"syntax match mmaOperator "\%(++\=\|--\=\|[/+-*]=\|[^*]\)" +syntax match mmaOperator "[*+=^.:?-]" +syntax match mmaOperator "\%(\~\~\=\)" +syntax match mmaOperator "\%(=\{2,3}\|=\=!=\|||\=\|&&\|!\)" contains=ALLBUT,mmaPureFunction + +" Symbol Tags: +" "SymbolName::item" +"syntax match mmaSymbol "`\=[a-zA-Z$]\+[0-9a-zA-Z$]*\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*" contained +syntax match mmaMessage "`\=\([a-zA-Z$]\+[0-9a-zA-Z$]*\)\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*::\a\+" contains=mmaMessageType +syntax match mmaMessageType "::\a\+"hs=s+2 contained + +" Pure Functions: +syntax match mmaPureFunction "#\%(#\|\d\+\)\=" +syntax match mmaPureFunction "&" + +" Named Functions: +" Since everything is pretty much a function, get this straight +" from context +syntax match mmaGenericFunction "[A-Za-z0-9`]\+\s*\%([@[]\|/:\|/\=/@\)\@=" contains=mmaOperator +syntax match mmaGenericFunction "\~\s*[^~]\+\s*\~"hs=s+1,he=e-1 contains=mmaOperator,mmaBoring +syntax match mmaGenericFunction "//\s*[A-Za-z0-9`]\+"hs=s+2 contains=mmaOperator + +" Numbers: +syntax match mmaNumber "\<\%(\d\+\.\=\d*\|\d*\.\=\d\+\)\>" +syntax match mmaNumber "`\d\+\%(\d\@!\.\|\>\)" + +" Special Characters: +" \[Name] named character +" \ooo octal +" \.xx 2 digit hex +" \:xxxx 4 digit hex (multibyte unicode) +syntax match mmaUnicode "\\\[\w\+\d*\]" +syntax match mmaUnicode "\\\%(\x\{3}\|\.\x\{2}\|:\x\{4}\)" + +" Syntax Errors: +syntax match mmaError "\*)" containedin=ALLBUT,@mmaComments,@mmaStrings +syntax match mmaError "\%([/]{3,}\|[&:|+*?~-]\{3,}\|[.=]\{4,}\|_\@<=\.\{2,}\|`\{2,}\)" containedin=ALLBUT,@mmaComments,@mmaStrings + +" Punctuation: +" things that shouldn't really be highlighted, or highlighted +" in they're own group if you _really_ want. :) +" ( ) { } +" TODO - use Delimiter group? +syntax match mmaBoring "[(){}]" contained + +" ------------------------------------ +" future explorations... +" ------------------------------------ +" Function Arguments: +" anything between brackets [] +" (fold) +"syntax region mmaArgument start="\[" end="\]" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold + +" Lists: +" (fold) +"syntax region mmaLists start="{" end="}" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold + +" Regions: +" (fold) +"syntax region mmaRegion start="(\*\+[^<]* \*)" containedin=ALLBUT,@mmaStrings transparent fold keepend + +" show fold text +set commentstring='(*%s*)' +"set foldtext=MmaFoldText() + +"function MmaFoldText() +" let line = getline(v:foldstart) +" +" let lines = v:foldend-v:foldstart+1 +" +" let sub = substitute(line, '(\*\+|\*\+)|[-*_]\+', '', 'g') +" +" if match(line, '(\*') != -1 +" let lines = lines.' line comment' +" else +" let lines = lines.' lines' +" endif +" +" return v:folddashes.' '.lines.' '.sub +"endf + +"this is slow for computing folds, but it does so accurately +syntax sync fromstart + +" but this seems to do alright for non fold syntax coloring. +" for folding, however, it doesn't get the nesting right. +" TODO - find sync group for multiline modules? ick... + +" sync multi line comments +"syntax sync match syncComments groupthere NONE "\*)" +"syntax sync match syncComments groupthere mmaComment "(\*" + +"set foldmethod=syntax +"set foldnestmax=1 +"set foldminlines=15 + +if version >= 508 || !exists("did_mma_syn_inits") + if version < 508 + let did_mma_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " NOTE - the following links are not guaranteed to + " look good under all colorschemes. You might need to + " :so $VIMRUNTIME/syntax/hitest.vim and tweak these to + " look good in yours + + + HiLink mmaComment Comment + HiLink mmaCommentStar Comment + HiLink mmaFunctionComment Comment + HiLink mmaLooseQuote Comment + HiLink mmaGenericFunction Function + HiLink mmaVariable Identifier +" HiLink mmaSymbol Identifier + HiLink mmaOperator Operator + HiLink mmaPatternOp Operator + HiLink mmaPureFunction Operator + HiLink mmaString String + HiLink mmaCommentString String + HiLink mmaUnicode String + HiLink mmaMessage Type + HiLink mmaNumber Type + HiLink mmaPattern Type + HiLink mmaError Error + HiLink mmaFixme Error + HiLink mmaPatternError Error + HiLink mmaTodo Todo + HiLink mmaemPHAsis Special + HiLink mmaFunctionTitle Special + HiLink mmaMessageType Special + HiLink mmaItem Preproc + + delcommand HiLink +endif + +let b:current_syntax = "mma" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim74/syntax/mmix.vim b/share/vim/vim74/syntax/mmix.vim new file mode 100644 index 00000000..79ca7814 --- /dev/null +++ b/share/vim/vim74/syntax/mmix.vim @@ -0,0 +1,163 @@ +" Vim syntax file +" Language: MMIX +" Maintainer: Dirk Hüsken, +" Last Change: 2012 Jun 01 +" (Dominique Pelle added @Spell) +" Filenames: *.mms +" URL: http://homepages.uni-tuebingen.de/student/dirk.huesken/vim/syntax/mmix.vim + +" Limitations: Comments must start with either % or // +" (preferably %, Knuth-Style) + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case ignore + +" MMIX data types +syn keyword mmixType byte wyde tetra octa + +" different literals... +syn match decNumber "[0-9]*" +syn match octNumber "0[0-7][0-7]\+" +syn match hexNumber "#[0-9a-fA-F]\+" +syn region mmixString start=+"+ skip=+\\"+ end=+"+ contains=@Spell +syn match mmixChar "'.'" + +" ...and more special MMIX stuff +syn match mmixAt "@" +syn keyword mmixSegments Data_Segment Pool_Segment Stack_Segment + +syn match mmixIdentifier "[a-z_][a-z0-9_]*" + +" labels (for branches etc) +syn match mmixLabel "^[a-z0-9_:][a-z0-9_]*" +syn match mmixLabel "[0-9][HBF]" + +" pseudo-operations +syn keyword mmixPseudo is loc greg + +" comments +syn match mmixComment "%.*" contains=@Spell +syn match mmixComment "//.*" contains=@Spell +syn match mmixComment "^\*.*" contains=@Spell + + +syn keyword mmixOpcode trap fcmp fun feql fadd fix fsub fixu +syn keyword mmixOpcode fmul fcmpe fune feqle fdiv fsqrt frem fint + +syn keyword mmixOpcode floti flotui sfloti sflotui i +syn keyword mmixOpcode muli mului divi divui +syn keyword mmixOpcode addi addui subi subui +syn keyword mmixOpcode 2addui 4addui 8addui 16addui +syn keyword mmixOpcode cmpi cmpui negi negui +syn keyword mmixOpcode sli slui sri srui +syn keyword mmixOpcode bnb bzb bpb bodb +syn keyword mmixOpcode bnnb bnzb bnpb bevb +syn keyword mmixOpcode pbnb pbzb pbpb pbodb +syn keyword mmixOpcode pbnnb pbnzb pbnpb pbevb +syn keyword mmixOpcode csni cszi cspi csodi +syn keyword mmixOpcode csnni csnzi csnpi csevi +syn keyword mmixOpcode zsni zszi zspi zsodi +syn keyword mmixOpcode zsnni zsnzi zsnpi zsevi +syn keyword mmixOpcode ldbi ldbui ldwi ldwui +syn keyword mmixOpcode ldti ldtui ldoi ldoui +syn keyword mmixOpcode ldsfi ldhti cswapi ldunci +syn keyword mmixOpcode ldvtsi preldi pregoi goi +syn keyword mmixOpcode stbi stbui stwi stwui +syn keyword mmixOpcode stti sttui stoi stoui +syn keyword mmixOpcode stsfi sthti stcoi stunci +syn keyword mmixOpcode syncdi presti syncidi pushgoi +syn keyword mmixOpcode ori orni nori xori +syn keyword mmixOpcode andi andni nandi nxori +syn keyword mmixOpcode bdifi wdifi tdifi odifi +syn keyword mmixOpcode muxi saddi mori mxori +syn keyword mmixOpcode muli mului divi divui + +syn keyword mmixOpcode flot flotu sflot sflotu +syn keyword mmixOpcode mul mulu div divu +syn keyword mmixOpcode add addu sub subu +syn keyword mmixOpcode 2addu 4addu 8addu 16addu +syn keyword mmixOpcode cmp cmpu neg negu +syn keyword mmixOpcode sl slu sr sru +syn keyword mmixOpcode bn bz bp bod +syn keyword mmixOpcode bnn bnz bnp bev +syn keyword mmixOpcode pbn pbz pbp pbod +syn keyword mmixOpcode pbnn pbnz pbnp pbev +syn keyword mmixOpcode csn csz csp csod +syn keyword mmixOpcode csnn csnz csnp csev +syn keyword mmixOpcode zsn zsz zsp zsod +syn keyword mmixOpcode zsnn zsnz zsnp zsev +syn keyword mmixOpcode ldb ldbu ldw ldwu +syn keyword mmixOpcode ldt ldtu ldo ldou +syn keyword mmixOpcode ldsf ldht cswap ldunc +syn keyword mmixOpcode ldvts preld prego go +syn keyword mmixOpcode stb stbu stw stwu +syn keyword mmixOpcode stt sttu sto stou +syn keyword mmixOpcode stsf stht stco stunc +syn keyword mmixOpcode syncd prest syncid pushgo +syn keyword mmixOpcode or orn nor xor +syn keyword mmixOpcode and andn nand nxor +syn keyword mmixOpcode bdif wdif tdif odif +syn keyword mmixOpcode mux sadd mor mxor + +syn keyword mmixOpcode seth setmh setml setl inch incmh incml incl +syn keyword mmixOpcode orh ormh orml orl andh andmh andml andnl +syn keyword mmixOpcode jmp pushj geta put +syn keyword mmixOpcode pop resume save unsave sync swym get trip +syn keyword mmixOpcode set lda + +" switch back to being case sensitive +syn case match + +" general-purpose and special-purpose registers +syn match mmixRegister "$[0-9]*" +syn match mmixRegister "r[A-Z]" +syn keyword mmixRegister rBB rTT rWW rXX rYY rZZ + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_mmix_syntax_inits") + if version < 508 + let did_mmix_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " The default methods for highlighting. Can be overridden later + HiLink mmixAt Type + HiLink mmixPseudo Type + HiLink mmixRegister Special + HiLink mmixSegments Type + + HiLink mmixLabel Special + HiLink mmixComment Comment + HiLink mmixOpcode Keyword + + HiLink hexNumber Number + HiLink decNumber Number + HiLink octNumber Number + + HiLink mmixString String + HiLink mmixChar String + + HiLink mmixType Type + HiLink mmixIdentifier Normal + HiLink mmixSpecialComment Comment + + " My default color overrides: + " hi mmixSpecialComment ctermfg=red + "hi mmixLabel ctermfg=lightcyan + " hi mmixType ctermbg=black ctermfg=brown + + delcommand HiLink +endif + +let b:current_syntax = "mmix" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/mmp.vim b/share/vim/vim74/syntax/mmp.vim similarity index 100% rename from share/vim/vim73/syntax/mmp.vim rename to share/vim/vim74/syntax/mmp.vim diff --git a/share/vim/vim73/syntax/modconf.vim b/share/vim/vim74/syntax/modconf.vim similarity index 100% rename from share/vim/vim73/syntax/modconf.vim rename to share/vim/vim74/syntax/modconf.vim diff --git a/share/vim/vim73/syntax/model.vim b/share/vim/vim74/syntax/model.vim similarity index 100% rename from share/vim/vim73/syntax/model.vim rename to share/vim/vim74/syntax/model.vim diff --git a/share/vim/vim73/syntax/modsim3.vim b/share/vim/vim74/syntax/modsim3.vim similarity index 100% rename from share/vim/vim73/syntax/modsim3.vim rename to share/vim/vim74/syntax/modsim3.vim diff --git a/share/vim/vim73/syntax/modula2.vim b/share/vim/vim74/syntax/modula2.vim similarity index 100% rename from share/vim/vim73/syntax/modula2.vim rename to share/vim/vim74/syntax/modula2.vim diff --git a/share/vim/vim73/syntax/modula3.vim b/share/vim/vim74/syntax/modula3.vim similarity index 100% rename from share/vim/vim73/syntax/modula3.vim rename to share/vim/vim74/syntax/modula3.vim diff --git a/share/vim/vim74/syntax/monk.vim b/share/vim/vim74/syntax/monk.vim new file mode 100644 index 00000000..afe2b561 --- /dev/null +++ b/share/vim/vim74/syntax/monk.vim @@ -0,0 +1,234 @@ +" Vim syntax file +" Language: Monk (See-Beyond Technologies) +" Maintainer: Mike Litherland +" Last Change: 2012 Feb 03 by Thilo Six + +" This syntax file is good enough for my needs, but others +" may desire more features. Suggestions and bug reports +" are solicited by the author (above). + +" Originally based on the Scheme syntax file by: + +" Maintainer: Dirk van Deun +" Last Change: April 30, 1998 + +" In fact it's almost identical. :) + +" The original author's notes: +" This script incorrectly recognizes some junk input as numerals: +" parsing the complete system of Scheme numerals using the pattern +" language is practically impossible: I did a lax approximation. + +" Initializing: + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn case ignore + +" Fascist highlighting: everything that doesn't fit the rules is an error... + +syn match monkError oneline ![^ \t()";]*! +syn match monkError oneline ")" + +" Quoted and backquoted stuff + +syn region monkQuoted matchgroup=Delimiter start="['`]" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc + +syn region monkQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc +syn region monkQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc + +syn region monkStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc +syn region monkStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc + +syn region monkUnquote matchgroup=Delimiter start="," end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc +syn region monkUnquote matchgroup=Delimiter start=",@" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc + +syn region monkUnquote matchgroup=Delimiter start=",(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc +syn region monkUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc + +syn region monkUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc +syn region monkUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc + +" R5RS Scheme Functions and Syntax: + +if version < 600 + set iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_ +else + setlocal iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_ +endif + +syn keyword monkSyntax lambda and or if cond case define let let* letrec +syn keyword monkSyntax begin do delay set! else => +syn keyword monkSyntax quote quasiquote unquote unquote-splicing +syn keyword monkSyntax define-syntax let-syntax letrec-syntax syntax-rules + +syn keyword monkFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car! +syn keyword monkFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr +syn keyword monkFunc cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr +syn keyword monkFunc cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr +syn keyword monkFunc cddaar cddadr cdddar cddddr null? list? list length +syn keyword monkFunc append reverse list-ref memq memv member assq assv assoc +syn keyword monkFunc symbol? symbol->string string->symbol number? complex? +syn keyword monkFunc real? rational? integer? exact? inexact? = < > <= >= +syn keyword monkFunc zero? positive? negative? odd? even? max min + * - / abs +syn keyword monkFunc quotient remainder modulo gcd lcm numerator denominator +syn keyword monkFunc floor ceiling truncate round rationalize exp log sin cos +syn keyword monkFunc tan asin acos atan sqrt expt make-rectangular make-polar +syn keyword monkFunc real-part imag-part magnitude angle exact->inexact +syn keyword monkFunc inexact->exact number->string string->number char=? +syn keyword monkFunc char-ci=? char? char-ci>? char<=? +syn keyword monkFunc char-ci<=? char>=? char-ci>=? char-alphabetic? char? +syn keyword monkFunc char-numeric? char-whitespace? char-upper-case? +syn keyword monkFunc char-lower-case? +syn keyword monkFunc char->integer integer->char char-upcase char-downcase +syn keyword monkFunc string? make-string string string-length string-ref +syn keyword monkFunc string-set! string=? string-ci=? string? string-ci>? string<=? string-ci<=? string>=? +syn keyword monkFunc string-ci>=? substring string-append vector? make-vector +syn keyword monkFunc vector vector-length vector-ref vector-set! procedure? +syn keyword monkFunc apply map for-each call-with-current-continuation +syn keyword monkFunc call-with-input-file call-with-output-file input-port? +syn keyword monkFunc output-port? current-input-port current-output-port +syn keyword monkFunc open-input-file open-output-file close-input-port +syn keyword monkFunc close-output-port eof-object? read read-char peek-char +syn keyword monkFunc write display newline write-char call/cc +syn keyword monkFunc list-tail string->list list->string string-copy +syn keyword monkFunc string-fill! vector->list list->vector vector-fill! +syn keyword monkFunc force with-input-from-file with-output-to-file +syn keyword monkFunc char-ready? load transcript-on transcript-off eval +syn keyword monkFunc dynamic-wind port? values call-with-values +syn keyword monkFunc monk-report-environment null-environment +syn keyword monkFunc interaction-environment + +" Keywords specific to STC's implementation + +syn keyword monkFunc $event-clear $event-parse $event->string $make-event-map +syn keyword monkFunc $resolve-event-definition change-pattern copy copy-strip +syn keyword monkFunc count-data-children count-map-children count-rep data-map +syn keyword monkFunc duplicate duplicate-strip file-check file-lookup get +syn keyword monkFunc insert list-lookup node-has-data? not-verify path? +syn keyword monkFunc path-defined-as-repeating? path-nodeclear path-nodedepth +syn keyword monkFunc path-nodename path-nodeparentname path->string path-valid? +syn keyword monkFunc regex string->path timestamp uniqueid verify + +" Keywords from the Monk function library (from e*Gate 4.1 programmers ref) +syn keyword monkFunc allcap? capitalize char-punctuation? char-substitute +syn keyword monkFunc char-to-char conv count-used-children degc->degf +syn keyword monkFunc diff-two-dates display-error empty-string? fail_id +syn keyword monkFunc fail_id_if fail_translation fail_translation_if +syn keyword monkFunc find-get-after find-get-before get-timestamp julian-date? +syn keyword monkFunc julian->standard leap-year? map-string not-empty-string? +syn keyword monkFunc standard-date? standard->julian string-begins-with? +syn keyword monkFunc string-contains? string-ends-with? string-search-from-left +syn keyword monkFunc string-search-from-right string->ssn strip-punct +syn keyword monkFunc strip-string substring=? symbol-table-get symbol-table-put +syn keyword monkFunc trim-string-left trim-string-right valid-decimal? +syn keyword monkFunc valid-integer? verify-type + +" Writing out the complete description of Scheme numerals without +" using variables is a day's work for a trained secretary... +" This is a useful lax approximation: + +syn match monkNumber oneline "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*" +syn match monkError oneline ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t()";][^ \t()";]*! + +syn match monkOther oneline ![+-][ \t()";]!me=e-1 +syn match monkOther oneline ![+-]$! +" ... so that a single + or -, inside a quoted context, would not be +" interpreted as a number (outside such contexts, it's a monkFunc) + +syn match monkDelimiter oneline !\.[ \t()";]!me=e-1 +syn match monkDelimiter oneline !\.$! +" ... and a single dot is not a number but a delimiter + +" Simple literals: + +syn match monkBoolean oneline "#[tf]" +syn match monkError oneline !#[tf][^ \t()";]\+! + +syn match monkChar oneline "#\\" +syn match monkChar oneline "#\\." +syn match monkError oneline !#\\.[^ \t()";]\+! +syn match monkChar oneline "#\\space" +syn match monkError oneline !#\\space[^ \t()";]\+! +syn match monkChar oneline "#\\newline" +syn match monkError oneline !#\\newline[^ \t()";]\+! + +" This keeps all other stuff unhighlighted, except *stuff* and : + +syn match monkOther oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*, +syn match monkError oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, + +syn match monkOther oneline "\.\.\." +syn match monkError oneline !\.\.\.[^ \t()";]\+! +" ... a special identifier + +syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t()";],me=e-1 +syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$, +syn match monkError oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, + +syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t()";],me=e-1 +syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$, +syn match monkError oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, + +" Monk input and output structures +syn match monkSyntax oneline "\(\~input\|\[I\]->\)[^ \t]*" +syn match monkFunc oneline "\(\~output\|\[O\]->\)[^ \t]*" + +" Non-quoted lists, and strings: + +syn region monkStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL +syn region monkStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL + +syn region monkString start=+"+ skip=+\\[\\"]+ end=+"+ + +" Comments: + +syn match monkComment ";.*$" + +" Synchronization and the wrapping up... + +syn sync match matchPlace grouphere NONE "^[^ \t]" +" ... i.e. synchronize on a line that starts at the left margin + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_monk_syntax_inits") + if version < 508 + let did_monk_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink monkSyntax Statement + HiLink monkFunc Function + + HiLink monkString String + HiLink monkChar Character + HiLink monkNumber Number + HiLink monkBoolean Boolean + + HiLink monkDelimiter Delimiter + HiLink monkConstant Constant + + HiLink monkComment Comment + HiLink monkError Error + + delcommand HiLink +endif + +let b:current_syntax = "monk" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/moo.vim b/share/vim/vim74/syntax/moo.vim similarity index 100% rename from share/vim/vim73/syntax/moo.vim rename to share/vim/vim74/syntax/moo.vim diff --git a/share/vim/vim73/syntax/mp.vim b/share/vim/vim74/syntax/mp.vim similarity index 100% rename from share/vim/vim73/syntax/mp.vim rename to share/vim/vim74/syntax/mp.vim diff --git a/share/vim/vim73/syntax/mplayerconf.vim b/share/vim/vim74/syntax/mplayerconf.vim similarity index 100% rename from share/vim/vim73/syntax/mplayerconf.vim rename to share/vim/vim74/syntax/mplayerconf.vim diff --git a/share/vim/vim74/syntax/mrxvtrc.vim b/share/vim/vim74/syntax/mrxvtrc.vim new file mode 100644 index 00000000..2ef434d2 --- /dev/null +++ b/share/vim/vim74/syntax/mrxvtrc.vim @@ -0,0 +1,282 @@ +" Description : Vim syntax file for mrxvtrc (for mrxvt-0.5.0 and up) +" Created : Wed 26 Apr 2006 01:20:53 AM CDT +" Modified : Thu 02 Feb 2012 08:37:45 PM EST +" Maintainer : GI , where a='gi1242+vim', b='gmail', c='com' + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn case match + +" Errors +syn match mrxvtrcError contained '\v\S+' + +" Comments +syn match mrxvtrcComment contains=@Spell '^\s*[!#].*$' +syn match mrxvtrcComment '\v^\s*[#!]\s*\w+[.*]\w+.*:.*' + +" +" Options. +" +syn match mrxvtrcClass '\v^\s*\w+[.*]' + \ nextgroup=mrxvtrcOptions,mrxvtrcProfile,@mrxvtrcPOpts,mrxvtrcError + +" Boolean options +syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError + \ highlightTabOnBell syncTabTitle hideTabbar + \ autohideTabbar bottomTabbar hideButtons + \ syncTabIcon veryBoldFont maximized + \ fullscreen reverseVideo loginShell + \ jumpScroll scrollBar scrollbarRight + \ scrollbarFloating scrollTtyOutputInhibit + \ scrollTtyKeypress transparentForce + \ transparentScrollbar transparentMenubar + \ transparentTabbar tabUsePixmap utmpInhibit + \ visualBell mapAlert meta8 + \ mouseWheelScrollPage multibyte_cursor + \ tripleclickwords showMenu xft xftNomFont + \ xftSlowOutput xftAntialias xftHinting + \ xftAutoHint xftGlobalAdvance cmdAllTabs + \ protectSecondary thai borderLess + \ overrideRedirect broadcast smartResize + \ pointerBlank cursorBlink noSysConfig + \ disableMacros linuxHomeEndKey sessionMgt + \ boldColors smoothResize useFifo veryBright +syn match mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError + \ '\v' +syn match mrxvtrcBColon contained skipwhite + \ nextgroup=mrxvtrcBoolVal,mrxvtrcError ':' +syn case ignore +syn keyword mrxvtrcBoolVal contained skipwhite nextgroup=mrxvtrcError + \ 0 1 yes no on off true false +syn case match + +" Color options +syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcCColon,mrxvtrcError + \ ufBackground textShadow tabForeground + \ itabForeground tabBackground itabBackground + \ scrollColor troughColor highlightColor + \ cursorColor cursorColor2 pointerColor + \ borderColor tintColor +syn match mrxvtrcOptions contained nextgroup=mrxvtrcCColon,mrxvtrcError + \ '\v' +syn match mrxvtrcCColon contained skipwhite + \ nextgroup=mrxvtrcColorVal ':' +syn match mrxvtrcColorVal contained skipwhite nextgroup=mrxvtrcError + \ '\v#[0-9a-fA-F]{6}' + +" Numeric options +syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcNColon,mrxvtrcError + \ maxTabWidth minVisibleTabs + \ scrollbarThickness xftmSize xftSize desktop + \ externalBorder internalBorder lineSpace + \ pointerBlankDelay cursorBlinkInterval + \ shading backgroundFade bgRefreshInterval + \ fading opacity opacityDegree xftPSize +syn match mrxvtrcNColon contained skipwhite + \ nextgroup=mrxvtrcNumVal,mrxvtrcError ':' +syn match mrxvtrcNumVal contained skipwhite nextgroup=mrxvtrcError + \ '\v[+-]?<(0[0-7]+|\d+|0x[0-9a-f]+)>' + +" String options +syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError + \ tabTitle termName title clientName iconName + \ bellCommand backspaceKey deleteKey + \ printPipe cutChars answerbackString + \ smClientID geometry path boldFont xftFont + \ xftmFont xftPFont inputMethod + \ greektoggle_key menu menubarPixmap + \ scrollbarPixmap tabbarPixmap appIcon + \ multichar_encoding initProfileList +syn match mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError + \ '\v' +syn match mrxvtrcSColon contained skipwhite nextgroup=mrxvtrcStrVal ':' +syn match mrxvtrcStrVal contained '\v\S.*' + +" Profile options +syn cluster mrxvtrcPOpts contains=mrxvtrcPSOpts,mrxvtrcPCOpts,mrxvtrcPNOpts +syn match mrxvtrcProfile contained nextgroup=@mrxvtrcPOpts,mrxvtrcError + \ '\vprofile\d+\.' +syn keyword mrxvtrcPSOpts contained nextgroup=mrxvtrcSColon,mrxvtrcError + \ tabTitle command holdExitText holdExitTitle + \ Pixmap workingDirectory titleFormat + \ winTitleFormat +syn keyword mrxvtrcPCOpts contained nextgroup=mrxvtrcCColon,mrxvtrcError + \ background foreground +syn keyword mrxvtrcPNOpts contained nextgroup=mrxvtrcNColon,mrxvtrcError + \ holdExit saveLines + +" scrollbarStyle +syn match mrxvtrcOptions contained skipwhite + \ nextgroup=mrxvtrcSBstyle,mrxvtrcError + \ '\v' + +" +" Highlighting groups +" +hi def link mrxvtrcError Error +hi def link mrxvtrcComment Comment + +hi def link mrxvtrcClass Statement +hi def link mrxvtrcOptions mrxvtrcClass +hi def link mrxvtrcBColon mrxvtrcClass +hi def link mrxvtrcCColon mrxvtrcClass +hi def link mrxvtrcNColon mrxvtrcClass +hi def link mrxvtrcSColon mrxvtrcClass +hi def link mrxvtrcProfile mrxvtrcClass +hi def link mrxvtrcPSOpts mrxvtrcClass +hi def link mrxvtrcPCOpts mrxvtrcClass +hi def link mrxvtrcPNOpts mrxvtrcClass + +hi def link mrxvtrcBoolVal Boolean +hi def link mrxvtrcStrVal String +hi def link mrxvtrcColorVal Constant +hi def link mrxvtrcNumVal Number + +hi def link mrxvtrcSBstyle mrxvtrcStrVal +hi def link mrxvtrcSBalign mrxvtrcStrVal +hi def link mrxvtrcTSmode mrxvtrcStrVal +hi def link mrxvtrcGrkKbd mrxvtrcStrVal +hi def link mrxvtrcXftWt mrxvtrcStrVal +hi def link mrxvtrcXftSl mrxvtrcStrVal +hi def link mrxvtrcXftWd mrxvtrcStrVal +hi def link mrxvtrcXftHt mrxvtrcStrVal +hi def link mrxvtrcPedit mrxvtrcStrVal +hi def link mrxvtrcMod mrxvtrcStrVal +hi def link mrxvtrcSelSty mrxvtrcStrVal + +hi def link mrxvtrcMacro Identifier +hi def link mrxvtrcKey mrxvtrcClass +hi def link mrxvtrcTitle mrxvtrcStrVal +hi def link mrxvtrcShell Special +hi def link mrxvtrcCmd PreProc +hi def link mrxvtrcSubwin mrxvtrcStrVal + +let b:current_syntax = "mrxvtrc" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim74/syntax/msidl.vim b/share/vim/vim74/syntax/msidl.vim new file mode 100644 index 00000000..79585beb --- /dev/null +++ b/share/vim/vim74/syntax/msidl.vim @@ -0,0 +1,97 @@ +" Vim syntax file +" Language: MS IDL (Microsoft dialect of Interface Description Language) +" Maintainer: Vadim Zeitlin +" Last Change: 2012 Feb 12 by Thilo Six + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Misc basic +syn match msidlId "[a-zA-Z][a-zA-Z0-9_]*" +syn match msidlUUID "{\?[[:xdigit:]]\{8}-\([[:xdigit:]]\{4}-\)\{3}[[:xdigit:]]\{12}}\?" +syn region msidlString start=/"/ skip=/\\\(\\\\\)*"/ end=/"/ +syn match msidlLiteral "\d\+\(\.\d*\)\=" +syn match msidlLiteral "\.\d\+" +syn match msidlSpecial contained "[]\[{}:]" + +" Comments +syn keyword msidlTodo contained TODO FIXME XXX +syn region msidlComment start="/\*" end="\*/" contains=msidlTodo +syn match msidlComment "//.*" contains=msidlTodo +syn match msidlCommentError "\*/" + +" C style Preprocessor +syn region msidlIncluded contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+ +syn match msidlIncluded contained "<[^>]*>" +syn match msidlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=msidlIncluded,msidlString +syn region msidlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=msidlComment,msidlCommentError +syn region msidlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=msidlLiteral, msidlString + +" Attributes +syn keyword msidlAttribute contained in out propget propput propputref retval +syn keyword msidlAttribute contained aggregatable appobject binadable coclass control custom default defaultbind defaultcollelem defaultvalue defaultvtable dispinterface displaybind dual entry helpcontext helpfile helpstring helpstringdll hidden id immediatebind lcid library licensed nonbrowsable noncreatable nonextensible oleautomation optional object public readonly requestedit restricted source string uidefault usesgetlasterror vararg version +syn match msidlAttribute /uuid(.*)/he=s+4 contains=msidlUUID +syn match msidlAttribute /helpstring(.*)/he=s+10 contains=msidlString +syn region msidlAttributes start="\[" end="]" keepend contains=msidlSpecial,msidlString,msidlAttribute,msidlComment,msidlCommentError + +" Keywords +syn keyword msidlEnum enum +syn keyword msidlImport import importlib +syn keyword msidlStruct interface library coclass +syn keyword msidlTypedef typedef + +" Types +syn keyword msidlStandardType byte char double float hyper int long short void wchar_t +syn keyword msidlStandardType BOOL BSTR HRESULT VARIANT VARIANT_BOOL +syn region msidlSafeArray start="SAFEARRAY(" end=")" contains=msidlStandardType + +syn sync lines=50 + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_msidl_syntax_inits") + if version < 508 + let did_msidl_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink msidlInclude Include + HiLink msidlPreProc PreProc + HiLink msidlPreCondit PreCondit + HiLink msidlDefine Macro + HiLink msidlIncluded String + HiLink msidlString String + HiLink msidlComment Comment + HiLink msidlTodo Todo + HiLink msidlSpecial SpecialChar + HiLink msidlLiteral Number + HiLink msidlUUID Number + + HiLink msidlImport Include + HiLink msidlEnum StorageClass + HiLink msidlStruct Structure + HiLink msidlTypedef Typedef + HiLink msidlAttribute StorageClass + + HiLink msidlStandardType Type + HiLink msidlSafeArray Type + + delcommand HiLink +endif + +let b:current_syntax = "msidl" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vi: set ts=8 sw=4: diff --git a/share/vim/vim73/syntax/msmessages.vim b/share/vim/vim74/syntax/msmessages.vim similarity index 100% rename from share/vim/vim73/syntax/msmessages.vim rename to share/vim/vim74/syntax/msmessages.vim diff --git a/share/vim/vim73/syntax/msql.vim b/share/vim/vim74/syntax/msql.vim similarity index 100% rename from share/vim/vim73/syntax/msql.vim rename to share/vim/vim74/syntax/msql.vim diff --git a/share/vim/vim73/syntax/mupad.vim b/share/vim/vim74/syntax/mupad.vim similarity index 100% rename from share/vim/vim73/syntax/mupad.vim rename to share/vim/vim74/syntax/mupad.vim diff --git a/share/vim/vim73/syntax/mush.vim b/share/vim/vim74/syntax/mush.vim similarity index 100% rename from share/vim/vim73/syntax/mush.vim rename to share/vim/vim74/syntax/mush.vim diff --git a/share/vim/vim74/syntax/muttrc.vim b/share/vim/vim74/syntax/muttrc.vim new file mode 100644 index 00000000..abe9bfd7 --- /dev/null +++ b/share/vim/vim74/syntax/muttrc.vim @@ -0,0 +1,796 @@ +" Vim syntax file +" Language: Mutt setup files +" Original: Preben 'Peppe' Guldberg +" Maintainer: Kyle Wheeler +" Last Change: 2 Feb 2012 + +" This file covers mutt version 1.5.21 (and most of the mercurial tip) +" Included are also a few features from 1.4.2.1 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Set the keyword characters +if version < 600 + set isk=@,48-57,_,- +else + setlocal isk=@,48-57,_,- +endif + +" handling optional variables +if !exists("use_mutt_sidebar") + let use_mutt_sidebar=0 +endif + +syn match muttrcComment "^# .*$" contains=@Spell +syn match muttrcComment "^#[^ ].*$" +syn match muttrcComment "^#$" +syn match muttrcComment "[^\\]#.*$"lc=1 + +" Escape sequences (back-tick and pipe goes here too) +syn match muttrcEscape +\\[#tnr"'Cc ]+ +syn match muttrcEscape +[`|]+ +syn match muttrcEscape +\\$+ + +" The variables takes the following arguments +"syn match muttrcString contained "=\s*[^ #"'`]\+"lc=1 contains=muttrcEscape +syn region muttrcString contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString +syn region muttrcString contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction +syn match muttrcStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcString,muttrcStringNL + +syn region muttrcShellString matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand + +syn match muttrcRXChars contained /[^\\][][.*?+]\+/hs=s+1 +syn match muttrcRXChars contained /[][|()][.*?+]*/ +syn match muttrcRXChars contained /['"]^/ms=s+1 +syn match muttrcRXChars contained /$['"]/me=e-1 +syn match muttrcRXChars contained /\\/ +" Why does muttrcRXString2 work with one \ when muttrcRXString requires two? +syn region muttrcRXString contained skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars +syn region muttrcRXString contained skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars +syn region muttrcRXString contained skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars +" For some reason, skip refuses to match backslashes here... +syn region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXChars +syn region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXChars +syn region muttrcRXString2 contained skipwhite start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars +syn region muttrcRXString2 contained skipwhite start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars + +" these must be kept synchronized with muttrcRXString, but are intended for +" muttrcRXHooks +syn region muttrcRXHookString contained keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL +syn region muttrcRXHookString contained keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL +syn region muttrcRXHookString contained keepend skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL +syn region muttrcRXHookString contained keepend skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL +syn region muttrcRXHookString contained keepend matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL +syn match muttrcRXHookStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL + +" these are exclusively for args lists (e.g. -rx pat pat pat ...) +syn region muttrcRXPat contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat +syn region muttrcRXPat contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat +syn match muttrcRXPat contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat +syn match muttrcRXDef contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat + +syn match muttrcSpecial +\(['"]\)!\1+ + +syn match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable +syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString +syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString +syn match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable +syn match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable +syn match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable +syn match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn match muttrcSetNumAssignment contained skipwhite /=\s*'\d\+'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr + +" Now catch some email addresses and headers (purified version from mail.vim) +syn match muttrcEmail "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+" +syn match muttrcHeader "\<\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\=" + +syn match muttrcKeySpecial contained +\%(\\[Cc'"]\|\^\|\\[01]\d\{2}\)+ +syn match muttrcKey contained "\S\+" contains=muttrcKeySpecial,muttrcKeyName +syn region muttrcKey contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=muttrcKeySpecial,muttrcKeyName +syn region muttrcKey contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=muttrcKeySpecial,muttrcKeyName +syn match muttrcKeyName contained "\" +syn match muttrcKeyName contained "\\[trne]" +syn match muttrcKeyName contained "\c<\%(BackSpace\|BackTab\|Delete\|Down\|End\|Enter\|Esc\|Home\|Insert\|Left\|PageDown\|PageUp\|Return\|Right\|Space\|Tab\|Up\)>" +syn match muttrcKeyName contained "" + +syn keyword muttrcVarBool skipwhite contained allow_8bit allow_ansi arrow_cursor ascii_chars askbcc askcc attach_split auto_tag autoedit beep beep_new nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained bounce_delivered braille_friendly check_new check_mbox_size nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained collapse_unread confirmappend confirmcreate crypt_autoencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained crypt_autopgp crypt_autosign crypt_autosmime crypt_replyencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained crypt_replysign crypt_replysignencrypted crypt_timestamp nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained crypt_use_gpgme crypt_use_pka delete_untag digest_collapse duplicate_threads nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained edit_hdrs edit_headers encode_from envelope_from fast_reply nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained fcc_clear followup_to force_name forw_decode nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained forw_decrypt forw_quote forward_decode forward_decrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained forward_quote hdrs header help hidden_host hide_limited nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained hide_missing hide_thread_subject hide_top_limited nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained hide_top_missing honor_disposition ignore_linear_white_space ignore_list_reply_to imap_check_subscribed nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained imap_list_subscribed imap_passive imap_peek imap_servernoise nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained implicit_autoview include_onlyfirst keep_flagged nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained mailcap_sanitize maildir_header_cache_verify maildir_trash nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained mark_old markers menu_move_off menu_scroll message_cache_clean meta_key nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained metoo mh_purge mime_forward_decode narrow_tree pager_stop nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained pgp_auto_decode pgp_auto_traditional pgp_autoencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained pgp_autoinline pgp_autosign pgp_check_exit nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained pgp_create_traditional pgp_ignore_subkeys pgp_long_ids nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained pgp_replyencrypt pgp_replyinline pgp_replysign nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained pgp_replysignencrypted pgp_retainable_sigs pgp_show_unusable nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained pgp_strict_enc pgp_use_gpg_agent pipe_decode pipe_split nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained pop_auth_try_all pop_last print_decode print_split nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained prompt_after read_only reply_self resolve reverse_alias nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained reverse_name reverse_realname rfc2047_parameters save_address nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained save_empty save_name score sig_dashes sig_on_top nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained smart_wrap smime_ask_cert_label smime_decrypt_use_default_key nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained smime_is_default sort_re ssl_force_tls ssl_use_sslv2 nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained ssl_use_sslv3 ssl_use_tlsv1 ssl_usesystemcerts ssl_verify_dates ssl_verify_host status_on_top nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained strict_mime strict_threads suspend text_flowed thorough_search nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained thread_received tilde uncollapse_jump use_8bitmime nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained use_domain use_envelope_from use_from use_idn use_ipv6 nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained user_agent wait_key weed wrap_search write_bcc nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr + +syn keyword muttrcVarBool skipwhite contained noallow_8bit noallow_ansi noarrow_cursor noascii_chars noaskbcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained noaskcc noattach_split noauto_tag noautoedit nobeep nobeep_new nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nobounce_delivered nobraille_friendly nocheck_new nocollapse_unread nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained noconfirmappend noconfirmcreate nocrypt_autoencrypt nocrypt_autopgp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nocrypt_autosign nocrypt_autosmime nocrypt_replyencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nocrypt_replysign nocrypt_replysignencrypted nocrypt_timestamp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nocrypt_use_gpgme nodelete_untag nodigest_collapse noduplicate_threads nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained noedit_hdrs noedit_headers noencode_from noenvelope_from nofast_reply nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nofcc_clear nofollowup_to noforce_name noforw_decode nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained noforw_decrypt noforw_quote noforward_decode noforward_decrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained noforward_quote nohdrs noheader nohelp nohidden_host nohide_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nohide_missing nohide_thread_subject nohide_top_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nohide_top_missing nohonor_disposition noignore_list_reply_to noimap_check_subscribed nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained noimap_list_subscribed noimap_passive noimap_peek noimap_servernoise nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained noimplicit_autoview noinclude_onlyfirst nokeep_flagged nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nomailcap_sanitize nomaildir_header_cache_verify nomaildir_trash nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nomark_old nomarkers nomenu_move_off nomenu_scroll nometa_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nometoo nomh_purge nomime_forward_decode nonarrow_tree nopager_stop nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nopgp_auto_decode nopgp_auto_traditional nopgp_autoencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nopgp_autoinline nopgp_autosign nopgp_check_exit nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nopgp_create_traditional nopgp_ignore_subkeys nopgp_long_ids nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nopgp_replyencrypt nopgp_replyinline nopgp_replysign nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nopgp_replysignencrypted nopgp_retainable_sigs nopgp_show_unusable nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nopgp_strict_enc nopgp_use_gpg_agent nopipe_decode nopipe_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nopop_auth_try_all nopop_last noprint_decode noprint_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained noprompt_after noread_only noreply_self noresolve noreverse_alias nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained noreverse_name noreverse_realname norfc2047_parameters nosave_address nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nosave_empty nosave_name noscore nosig_dashes nosig_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nosmart_wrap nosmime_ask_cert_label nosmime_decrypt_use_default_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nosmime_is_default nosort_re nossl_force_tls nossl_use_sslv2 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nossl_use_sslv3 nossl_use_tlsv1 nossl_usesystemcerts nostatus_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nostrict_threads nosuspend notext_flowed nothorough_search nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nothread_received notilde nouncollapse_jump nouse_8bitmime nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nouse_domain nouse_envelope_from nouse_from nouse_idn nouse_ipv6 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained nouser_agent nowait_key noweed nowrap_search nowrite_bcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr + +syn keyword muttrcVarBool skipwhite contained invallow_8bit invallow_ansi invarrow_cursor invascii_chars invaskbcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invaskcc invattach_split invauto_tag invautoedit invbeep invbeep_new nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invbounce_delivered invbraille_friendly invcheck_new invcollapse_unread nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invconfirmappend invconfirmcreate invcrypt_autoencrypt invcrypt_autopgp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invcrypt_autosign invcrypt_autosmime invcrypt_replyencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invcrypt_replysign invcrypt_replysignencrypted invcrypt_timestamp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invcrypt_use_gpgme invdelete_untag invdigest_collapse invduplicate_threads nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invedit_hdrs invedit_headers invencode_from invenvelope_from invfast_reply nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invfcc_clear invfollowup_to invforce_name invforw_decode nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invforw_decrypt invforw_quote invforward_decode invforward_decrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invforward_quote invhdrs invheader invhelp invhidden_host invhide_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invhide_missing invhide_thread_subject invhide_top_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invhide_top_missing invhonor_disposition invignore_list_reply_to invimap_check_subscribed nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invimap_list_subscribed invimap_passive invimap_peek invimap_servernoise nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invimplicit_autoview invinclude_onlyfirst invkeep_flagged nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invmailcap_sanitize invmaildir_header_cache_verify invmaildir_trash nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invmark_old invmarkers invmenu_move_off invmenu_scroll invmeta_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invmetoo invmh_purge invmime_forward_decode invnarrow_tree invpager_stop nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invpgp_auto_decode invpgp_auto_traditional invpgp_autoencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invpgp_autoinline invpgp_autosign invpgp_check_exit nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invpgp_create_traditional invpgp_ignore_subkeys invpgp_long_ids nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invpgp_replyencrypt invpgp_replyinline invpgp_replysign nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invpgp_replysignencrypted invpgp_retainable_sigs invpgp_show_unusable nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invpgp_strict_enc invpgp_use_gpg_agent invpipe_decode invpipe_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invpop_auth_try_all invpop_last invprint_decode invprint_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invprompt_after invread_only invreply_self invresolve invreverse_alias nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invreverse_name invreverse_realname invrfc2047_parameters invsave_address nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invsave_empty invsave_name invscore invsig_dashes invsig_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invsmart_wrap invsmime_ask_cert_label invsmime_decrypt_use_default_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invsmime_is_default invsort_re invssl_force_tls invssl_use_sslv2 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invssl_use_sslv3 invssl_use_tlsv1 invssl_usesystemcerts invstatus_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invstrict_threads invsuspend invtext_flowed invthorough_search nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invthread_received invtilde invuncollapse_jump invuse_8bitmime nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invuse_domain invuse_envelope_from invuse_from invuse_idn invuse_ipv6 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarBool skipwhite contained invuser_agent invwait_key invweed invwrap_search invwrite_bcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +if use_mutt_sidebar == 1 + syn keyword muttrcVarBool skipwhite contained sidebar_visible sidebar_sort nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +endif + +syn keyword muttrcVarQuad skipwhite contained abort_nosubject abort_unmodified bounce copy nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained crypt_verify_sig delete fcc_attach forward_edit honor_followup_to nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained include mime_forward mime_forward_rest mime_fwd move nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained pgp_mime_auto pgp_verify_sig pop_delete pop_reconnect nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained postpone print quit recall reply_to ssl_starttls nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr + +syn keyword muttrcVarQuad skipwhite contained noabort_nosubject noabort_unmodified nobounce nocopy nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained nocrypt_verify_sig nodelete nofcc_attach noforward_edit nohonor_followup_to nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained noinclude nomime_forward nomime_forward_rest nomime_fwd nomove nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained nopgp_mime_auto nopgp_verify_sig nopop_delete nopop_reconnect nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained nopostpone noprint noquit norecall noreply_to nossl_starttls nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr + +syn keyword muttrcVarQuad skipwhite contained invabort_nosubject invabort_unmodified invbounce invcopy nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained invcrypt_verify_sig invdelete invfcc_attach invforward_edit invhonor_followup_to nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained invinclude invmime_forward invmime_forward_rest invmime_fwd invmove nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained invpgp_mime_auto invpgp_verify_sig invpop_delete invpop_reconnect nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarQuad skipwhite contained invpostpone invprint invquit invrecall invreply_to invssl_starttls nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr + +syn keyword muttrcVarNum skipwhite contained connect_timeout history imap_keepalive imap_pipeline_depth mail_check nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarNum skipwhite contained menu_context net_inc pager_context pager_index_lines pgp_timeout nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarNum skipwhite contained pop_checkinterval read_inc save_history score_threshold_delete nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarNum skipwhite contained score_threshold_flag score_threshold_read search_context sendmail_wait sleep_time nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarNum skipwhite contained smime_timeout ssl_min_dh_prime_bits timeout time_inc wrap wrapmargin nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarNum skipwhite contained write_inc nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +if use_mutt_sidebar == 1 + syn keyword muttrcVarNum skipwhite contained sidebar_width nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +endif + +syn match muttrcFormatErrors contained /%./ + +syn match muttrcStrftimeEscapes contained /%[AaBbCcDdeFGgHhIjklMmnpRrSsTtUuVvWwXxYyZz+%]/ +syn match muttrcStrftimeEscapes contained /%E[cCxXyY]/ +syn match muttrcStrftimeEscapes contained /%O[BdeHImMSuUVwWy]/ + +syn region muttrcIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcQueryFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcAliasFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcAliasFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcAttachFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcAttachFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcComposeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcComposeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcFolderFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcFolderFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcMixFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcMixFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcPGPFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcPGPFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcPGPCmdFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcPGPCmdFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcStatusFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcStatusFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcSmimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcSmimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr + +" The following info was pulled from hdr_format_str in hdrline.c +syn match muttrcIndexFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[aAbBcCdDeEfFHilLmMnNOPsStTuvXyYZ%]/ +syn match muttrcIndexFormatEscapes contained /%[>|*]./ +syn match muttrcIndexFormatConditionals contained /%?[EFHlLMNOXyY]?/ nextgroup=muttrcFormatConditionals2 +" The following info was pulled from alias_format_str in addrbook.c +syn match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/ +" The following info was pulled from query_format_str in query.c +syn match muttrcQueryFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[acent%]/ +syn match muttrcQueryFormatConditionals contained /%?[e]?/ nextgroup=muttrcFormatConditionals2 +" The following info was pulled from mutt_attach_fmt in recvattach.c +syn match muttrcAttachFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CcDdefImMnQstTuX%]/ +syn match muttrcAttachFormatEscapes contained /%[>|*]./ +syn match muttrcAttachFormatConditionals contained /%?[CcdDefInmMQstTuX]?/ nextgroup=muttrcFormatConditionals2 +syn match muttrcFormatConditionals2 contained /[^?]*?/ +" The following info was pulled from compose_format_str in compose.c +syn match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/ +syn match muttrcComposeFormatEscapes contained /%[>|*]./ +" The following info was pulled from folder_format_str in browser.c +syn match muttrcFolderFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CDdfFglNstu%]/ +syn match muttrcFolderFormatEscapes contained /%[>|*]./ +syn match muttrcFolderFormatConditionals contained /%?[N]?/ +" The following info was pulled from mix_entry_fmt in remailer.c +syn match muttrcMixFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ncsa%]/ +syn match muttrcMixFormatConditionals contained /%?[ncsa]?/ +" The following info was pulled from crypt_entry_fmt in crypt-gpgme.c +" and pgp_entry_fmt in pgpkey.c (note that crypt_entry_fmt supports +" 'p', but pgp_entry_fmt does not). +syn match muttrcPGPFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[nkualfctp%]/ +syn match muttrcPGPFormatConditionals contained /%?[nkualfct]?/ +" The following info was pulled from _mutt_fmt_pgp_command in +" pgpinvoke.c +syn match muttrcPGPCmdFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[pfsar%]/ +syn match muttrcPGPCmdFormatConditionals contained /%?[pfsar]?/ nextgroup=muttrcFormatConditionals2 +" The following info was pulled from status_format_str in status.c +syn match muttrcStatusFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[bdfFhlLmMnopPrsStuvV%]/ +syn match muttrcStatusFormatEscapes contained /%[>|*]./ +syn match muttrcStatusFormatConditionals contained /%?[bdFlLmMnoptuV]?/ nextgroup=muttrcFormatConditionals2 +" This matches the documentation, but directly contradicts the code +" (according to the code, this should be identical to the +" muttrcPGPCmdFormatEscapes +syn match muttrcPGPGetKeysFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[r%]/ +" The following info was pulled from _mutt_fmt_smime_command in +" smime.c +syn match muttrcSmimeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[Cciskaf%]/ +syn match muttrcSmimeFormatConditionals contained /%?[Cciskaf]?/ nextgroup=muttrcFormatConditionals2 + +syn region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes +syn region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes +syn region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes +syn region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes +syn region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes + +syn keyword muttrcVarStr contained skipwhite attribution index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt +syn match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=muttrcIndexFormatStr +syn keyword muttrcVarStr contained skipwhite alias_format nextgroup=muttrcVarEqualsAliasFmt +syn match muttrcVarEqualsAliasFmt contained skipwhite "=" nextgroup=muttrcAliasFormatStr +syn keyword muttrcVarStr contained skipwhite attach_format nextgroup=muttrcVarEqualsAttachFmt +syn match muttrcVarEqualsAttachFmt contained skipwhite "=" nextgroup=muttrcAttachFormatStr +syn keyword muttrcVarStr contained skipwhite compose_format nextgroup=muttrcVarEqualsComposeFmt +syn match muttrcVarEqualsComposeFmt contained skipwhite "=" nextgroup=muttrcComposeFormatStr +syn keyword muttrcVarStr contained skipwhite folder_format nextgroup=muttrcVarEqualsFolderFmt +syn match muttrcVarEqualsFolderFmt contained skipwhite "=" nextgroup=muttrcFolderFormatStr +syn keyword muttrcVarStr contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt +syn match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr +syn keyword muttrcVarStr contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt +syn match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr +syn keyword muttrcVarStr contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt +syn match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr +syn keyword muttrcVarStr contained skipwhite pgp_decode_command pgp_verify_command pgp_decrypt_command pgp_clearsign_command pgp_sign_command pgp_encrypt_sign_command pgp_encrypt_only_command pgp_import_command pgp_export_command pgp_verify_key_command pgp_list_secring_command pgp_list_pubring_command nextgroup=muttrcVarEqualsPGPCmdFmt +syn match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr +syn keyword muttrcVarStr contained skipwhite status_format nextgroup=muttrcVarEqualsStatusFmt +syn match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr +syn keyword muttrcVarStr contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt +syn match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr +syn keyword muttrcVarStr contained skipwhite smime_decrypt_command smime_verify_command smime_verify_opaque_command smime_sign_command smime_sign_opaque_command smime_encrypt_command smime_pk7out_command smime_get_cert_command smime_get_signer_cert_command smime_import_cert_command smime_get_cert_email_command nextgroup=muttrcVarEqualsSmimeFmt +syn match muttrcVarEqualsSmimeFmt contained skipwhite "=" nextgroup=muttrcSmimeFormatStr +syn keyword muttrcVarStr contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt +syn match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr + +syn match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr + +syn match muttrcVarStr contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite alias_file assumed_charset attach_charset attach_sep nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite certificate_file charset config_charset content_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite default_hook display_filter dotlock_program dsn_notify nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite dsn_return editor entropy_file envelope_from_address escape folder nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite forw_format forward_format from gecos_mask hdr_format nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite header_cache header_cache_compress header_cache_pagesize nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite history_file hostname imap_authenticators nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite imap_delim_chars imap_headers imap_idle imap_login imap_pass nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite imap_user indent_str indent_string ispell locale mailcap_path nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite mask mbox mbox_type message_cachedir mh_seq_flagged mh_seq_replied nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite mh_seq_unseen mixmaster msg_format pager nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite pgp_good_sign nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite pgp_mime_signature_filename nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite pgp_mime_signature_description pgp_sign_as nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite pgp_sort_keys nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite pipe_sep pop_authenticators pop_host pop_pass pop_user post_indent_str nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite post_indent_string postponed preconnect print_cmd print_command nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite query_command quote_regexp realname record reply_regexp send_charset nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite sendmail shell signature simple_search smileys smime_ca_location nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite smime_certificates smime_default_key nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite smime_encrypt_with nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite smime_keys smime_sign_as nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite smtp_url smtp_authenticators smtp_pass sort sort_alias sort_aux nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite sort_browser spam_separator spoolfile ssl_ca_certificates_file ssl_client_cert nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcVarStr contained skipwhite status_chars tmpdir to_chars tunnel visual nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +if use_mutt_sidebar == 1 + syn keyword muttrcVarStr skipwhite contained sidebar_delim nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +endif + +" Present in 1.4.2.1 (pgp_create_traditional was a bool then) +syn keyword muttrcVarBool contained skipwhite imap_force_ssl noimap_force_ssl invimap_force_ssl nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +"syn keyword muttrcVarQuad contained pgp_create_traditional nopgp_create_traditional invpgp_create_traditional +syn keyword muttrcVarStr contained skipwhite alternates nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr + +syn keyword muttrcMenu contained alias attach browser compose editor index pager postpone pgp mix query generic +syn match muttrcMenuList "\S\+" contained contains=muttrcMenu +syn match muttrcMenuCommas /,/ contained + +syn keyword muttrcHooks contained skipwhite account-hook charset-hook iconv-hook message-hook folder-hook mbox-hook save-hook fcc-hook fcc-save-hook send-hook send2-hook reply-hook crypt-hook + +syn keyword muttrcCommand auto_view alternative_order exec unalternative_order +syn keyword muttrcCommand hdr_order iconv-hook ignore mailboxes my_hdr unmailboxes +syn keyword muttrcCommand pgp-hook push score source unauto_view unhdr_order +syn keyword muttrcCommand unignore unmono unmy_hdr unscore +syn keyword muttrcCommand mime_lookup unmime_lookup ungroup +syn keyword muttrcCommand unalternative_order +syn keyword muttrcCommand skipwhite charset-hook nextgroup=muttrcRXString +syn keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks + +syn keyword muttrcCommand skipwhite spam nextgroup=muttrcSpamPattern +syn region muttrcSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL +syn region muttrcSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL + +syn keyword muttrcCommand skipwhite nospam nextgroup=muttrcNoSpamPattern +syn region muttrcNoSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern +syn region muttrcNoSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern + +syn match muttrcAttachmentsMimeType contained "[*a-z0-9_-]\+/[*a-z0-9._-]\+\s*" skipwhite nextgroup=muttrcAttachmentsMimeType +syn match muttrcAttachmentsFlag contained "[+-]\%([AI]\|inline\|attachment\)\s\+" skipwhite nextgroup=muttrcAttachmentsMimeType +syn match muttrcAttachmentsLine "^\s*\%(un\)\?attachments\s\+" skipwhite nextgroup=muttrcAttachmentsFlag + +syn match muttrcUnHighlightSpace contained "\%(\s\+\|\\$\)" + +syn keyword muttrcAsterisk contained * +syn keyword muttrcListsKeyword lists skipwhite nextgroup=muttrcGroupDef,muttrcComment +syn keyword muttrcListsKeyword unlists skipwhite nextgroup=muttrcAsterisk,muttrcComment + +syn keyword muttrcSubscribeKeyword subscribe nextgroup=muttrcGroupDef,muttrcComment +syn keyword muttrcSubscribeKeyword unsubscribe nextgroup=muttrcAsterisk,muttrcComment + +syn keyword muttrcAlternateKeyword contained alternates unalternates +syn region muttrcAlternatesLine keepend start=+^\s*\%(un\)\?alternates\s+ skip=+\\$+ end=+$+ contains=muttrcAlternateKeyword,muttrcGroupDef,muttrcRXPat,muttrcUnHighlightSpace,muttrcComment + +" muttrcVariable includes a prefix because partial strings are considered +" valid. +syn match muttrcVariable contained "\\\@]\+" contains=muttrcEmail +syn match muttrcFunction contained "\<\%(attach\|bounce\|copy\|delete\|display\|flag\|forward\|parent\|pipe\|postpone\|print\|recall\|resend\|save\|send\|tag\|undelete\)-message\>" +syn match muttrcFunction contained "\<\%(delete\|next\|previous\|read\|tag\|break\|undelete\)-thread\>" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\<\%(backward\|capitalize\|downcase\|forward\|kill\|upcase\)-word\>" +syn match muttrcFunction contained "\<\%(delete\|filter\|first\|last\|next\|pipe\|previous\|print\|save\|select\|tag\|undelete\)-entry\>" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\" +syn match muttrcFunction contained "\<\%(backspace\|backward-char\|bol\|bottom\|bottom-page\|buffy-cycle\|clear-flag\|complete\%(-query\)\?\|copy-file\|create-alias\|detach-file\|eol\|exit\|extract-keys\|\%(imap-\)\?fetch-mail\|forget-passphrase\|forward-char\|group-reply\|help\|ispell\|jump\|limit\|list-reply\|mail\|mail-key\|mark-as-new\|middle-page\|new-mime\|noop\|pgp-menu\|query\|query-append\|quit\|quote-char\|read-subthread\|redraw-screen\|refresh\|rename-file\|reply\|select-new\|set-flag\|shell-escape\|skip-quoted\|sort\|subscribe\|sync-mailbox\|top\|top-page\|transpose-chars\|unsubscribe\|untag-pattern\|verify-key\|what-key\|write-fcc\)\>" +if use_mutt_sidebar == 1 + syn match muttrcFunction contained "\]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName + +syn keyword muttrcCommand set skipwhite nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcCommand unset skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcCommand reset skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syn keyword muttrcCommand toggle skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr + +" First, functions that take regular expressions: +syn match muttrcRXHookNot contained /!\s*/ skipwhite nextgroup=muttrcRXHookString,muttrcRXHookStringNL +syn match muttrcRXHooks /\<\%(account\|folder\)-hook\>/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXHookString,muttrcRXHookStringNL + +" Now, functions that take patterns +syn match muttrcPatHookNot contained /!\s*/ skipwhite nextgroup=muttrcPattern +syn match muttrcPatHooks /\<\%(mbox\|crypt\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern +syn match muttrcPatHooks /\<\%(message\|reply\|send\|send2\|save\|\|fcc\%(-save\)\?\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcOptPattern + +syn match muttrcBindFunction contained /\S\+\>/ skipwhite contains=muttrcFunction +syn match muttrcBindFunctionNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindFunction,muttrcBindFunctionNL +syn match muttrcBindKey contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcBindFunction,muttrcBindFunctionNL +syn match muttrcBindKeyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindKey,muttrcBindKeyNL +syn match muttrcBindMenuList contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcBindKey,muttrcBindKeyNL +syn match muttrcBindMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindMenuList,muttrcBindMenuListNL +syn keyword muttrcCommand skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL + +syn region muttrcMacroDescr contained keepend skipwhite start=+\s*\S+ms=e skip=+\\ + end=+ \|$+me=s +syn region muttrcMacroDescr contained keepend skipwhite start=+'+ms=e skip=+\\'+ end=+'+me=s +syn region muttrcMacroDescr contained keepend skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s +syn match muttrcMacroDescrNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroDescr,muttrcMacroDescrNL +syn region muttrcMacroBody contained skipwhite start="\S" skip='\\ \|\\$' end=' \|$' contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL +syn region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'\|\%(\%(\\\\\)\@]\+>/ contains=muttrcEmail nextgroup=muttrcAliasComma +syn match muttrcAliasEncEmailNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL +syn match muttrcAliasNameNoParens contained /[^<(@]\+\s\+/ nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL +syn region muttrcAliasName contained matchgroup=Type start=/(/ end=/)/ skipwhite +syn match muttrcAliasNameNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasName,muttrcAliasNameNL +syn match muttrcAliasENNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL +syn match muttrcAliasKey contained /\s*[^- \t]\S\+/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL +syn match muttrcAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL +syn keyword muttrcCommand skipwhite alias nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL + +syn match muttrcUnAliasKey contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL +syn match muttrcUnAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL +syn keyword muttrcCommand skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL + +syn match muttrcSimplePat contained "!\?\^\?[~][ADEFgGklNOpPQRSTuUvV=$]" +syn match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s*\%([<>-][0-9]\+[kM]\?\|[0-9]\+[kM]\?[-]\%([0-9]\+[kM]\?\)\?\)" +syn match muttrcSimplePat contained "!\?\^\?[~][dr]\s*\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\|\%(`[^`]\+`\)\|\%(\$[a-zA-Z0-9_-]\+\)\)" contains=muttrcShellString,muttrcVariable +syn match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatRXContainer +syn match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString +syn match muttrcSimplePat contained "!\?\^\?[=][bcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString +syn region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat +"syn match muttrcSimplePat contained /'[^~=%][^']*/ contains=muttrcRXString +syn region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+ +syn region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+ +syn region muttrcSimplePatString contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 +syn region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXString +syn region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXString +syn region muttrcSimplePatRXContainer contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString +syn match muttrcSimplePatMetas contained /[(|)]/ + +syn match muttrcOptSimplePat contained skipwhite /[~=%!(^].*/ contains=muttrcSimplePat,muttrcSimplePatMetas +syn match muttrcOptSimplePat contained skipwhite /[^~=%!(^].*/ contains=muttrcRXString +syn region muttrcOptPattern contained matchgroup=Type keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL +syn region muttrcOptPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL +syn region muttrcOptPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL +syn match muttrcOptPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL +syn match muttrcOptPattern contained skipwhite /[.]/ nextgroup=muttrcString,muttrcStringNL +" Keep muttrcPattern and muttrcOptPattern synchronized +syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas +syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas +syn region muttrcPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat +syn match muttrcPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat +syn match muttrcPattern contained skipwhite /[.]/ +syn region muttrcPatternInner contained keepend start=+"[~=%!(^]+ms=s+1 skip=+\\"+ end=+"+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas +syn region muttrcPatternInner contained keepend start=+'[~=%!(^]+ms=s+1 skip=+\\'+ end=+'+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas + +" Colour definitions takes object, foreground and background arguments (regexps excluded). +syn match muttrcColorMatchCount contained "[0-9]\+" +syn match muttrcColorMatchCountNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL +syn region muttrcColorRXPat contained start=+\s*'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL +syn region muttrcColorRXPat contained start=+\s*"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL +syn keyword muttrcColorField contained attachment body bold error hdrdefault header index indicator markers message normal quoted search signature status tilde tree underline +syn match muttrcColorField contained "\" +if use_mutt_sidebar == 1 + syn keyword muttrcColorField contained sidebar_new +endif +syn keyword muttrcColor contained black blue cyan default green magenta red white yellow +syn keyword muttrcColor contained brightblack brightblue brightcyan brightdefault brightgreen brightmagenta brightred brightwhite brightyellow +syn match muttrcColor contained "\<\%(bright\)\=color\d\{1,3}\>" +" Now for the structure of the color line +syn match muttrcColorRXNL contained skipnl "\s*\\$" nextgroup=muttrcColorRXPat,muttrcColorRXNL +syn match muttrcColorBG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL +syn match muttrcColorBGNL contained skipnl "\s*\\$" nextgroup=muttrcColorBG,muttrcColorBGNL +syn match muttrcColorFG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL +syn match muttrcColorFGNL contained skipnl "\s*\\$" nextgroup=muttrcColorFG,muttrcColorFGNL +syn match muttrcColorContext contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorFG,muttrcColorFGNL +syn match muttrcColorNL contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL +syn match muttrcColorKeyword contained /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL +syn region muttrcColorLine keepend start=/^\s*color\s\+\%(index\|header\)\@!/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace +" Now for the structure of the color index line +syn match muttrcPatternNL contained skipnl "\s*\\$" nextgroup=muttrcPattern,muttrcPatternNL +syn match muttrcColorBGI contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcPattern,muttrcPatternNL +syn match muttrcColorBGNLI contained skipnl "\s*\\$" nextgroup=muttrcColorBGI,muttrcColorBGNLI +syn match muttrcColorFGI contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGI,muttrcColorBGNLI +syn match muttrcColorFGNLI contained skipnl "\s*\\$" nextgroup=muttrcColorFGI,muttrcColorFGNLI +syn match muttrcColorContextI contained /\s*\/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGI,muttrcColorFGNLI +syn match muttrcColorNLI contained skipnl "\s*\\$" nextgroup=muttrcColorContextI,muttrcColorNLI +syn match muttrcColorKeywordI contained skipwhite /\/ nextgroup=muttrcColorContextI,muttrcColorNLI +syn region muttrcColorLine keepend skipwhite start=/\/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordI,muttrcComment,muttrcUnHighlightSpace +" Now for the structure of the color header line +syn match muttrcRXPatternNL contained skipnl "\s*\\$" nextgroup=muttrcRXString,muttrcRXPatternNL +syn match muttrcColorBGH contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcRXString,muttrcRXPatternNL +syn match muttrcColorBGNLH contained skipnl "\s*\\$" nextgroup=muttrcColorBGH,muttrcColorBGNLH +syn match muttrcColorFGH contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGH,muttrcColorBGNLH +syn match muttrcColorFGNLH contained skipnl "\s*\\$" nextgroup=muttrcColorFGH,muttrcColorFGNLH +syn match muttrcColorContextH contained /\s*\/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGH,muttrcColorFGNLH +syn match muttrcColorNLH contained skipnl "\s*\\$" nextgroup=muttrcColorContextH,muttrcColorNLH +syn match muttrcColorKeywordH contained skipwhite /\/ nextgroup=muttrcColorContextH,muttrcColorNLH +syn region muttrcColorLine keepend skipwhite start=/\/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordH,muttrcComment,muttrcUnHighlightSpace +" And now color's brother: +syn region muttrcUnColorPatterns contained skipwhite start=+\s*'+ end=+'+ skip=+\\'+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL +syn region muttrcUnColorPatterns contained skipwhite start=+\s*"+ end=+"+ skip=+\\"+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL +syn match muttrcUnColorPatterns contained skipwhite /\s*[^'"\s]\S\*/ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL +syn match muttrcUnColorPatNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL +syn match muttrcUnColorAll contained skipwhite /[*]/ +syn match muttrcUnColorAPNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL +syn match muttrcUnColorIndex contained skipwhite /\s*index\s\+/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL +syn match muttrcUnColorIndexNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL +syn match muttrcUnColorKeyword contained skipwhite /^\s*uncolor\s\+/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL +syn region muttrcUnColorLine keepend start=+^\s*uncolor\s+ skip=+\\$+ end=+$+ contains=muttrcUnColorKeyword,muttrcComment,muttrcUnHighlightSpace + +" Mono are almost like color (ojects inherited from color) +syn keyword muttrcMonoAttrib contained bold none normal reverse standout underline +syn keyword muttrcMono contained mono skipwhite nextgroup=muttrcColorField +syn match muttrcMonoLine "^\s*mono\s\+\S\+" skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_muttrc_syntax_inits") + if version < 508 + let did_muttrc_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink muttrcComment Comment + HiLink muttrcEscape SpecialChar + HiLink muttrcRXChars SpecialChar + HiLink muttrcString String + HiLink muttrcRXString String + HiLink muttrcRXString2 String + HiLink muttrcSpecial Special + HiLink muttrcHooks Type + HiLink muttrcGroupFlag Type + HiLink muttrcGroupDef Macro + HiLink muttrcAddrDef muttrcGroupFlag + HiLink muttrcRXDef muttrcGroupFlag + HiLink muttrcRXPat String + HiLink muttrcAliasGroupName Macro + HiLink muttrcAliasKey Identifier + HiLink muttrcUnAliasKey Identifier + HiLink muttrcAliasEncEmail Identifier + HiLink muttrcAliasParens Type + HiLink muttrcSetNumAssignment Number + HiLink muttrcSetBoolAssignment Boolean + HiLink muttrcSetQuadAssignment Boolean + HiLink muttrcSetStrAssignment String + HiLink muttrcEmail Special + HiLink muttrcVariableInner Special + HiLink muttrcEscapedVariable String + HiLink muttrcHeader Type + HiLink muttrcKeySpecial SpecialChar + HiLink muttrcKey Type + HiLink muttrcKeyName SpecialChar + HiLink muttrcVarBool Identifier + HiLink muttrcVarQuad Identifier + HiLink muttrcVarNum Identifier + HiLink muttrcVarStr Identifier + HiLink muttrcMenu Identifier + HiLink muttrcCommand Keyword + HiLink muttrcMacroDescr String + HiLink muttrcAction Macro + HiLink muttrcBadAction Error + HiLink muttrcBindFunction Error + HiLink muttrcBindMenuList Error + HiLink muttrcFunction Macro + HiLink muttrcGroupKeyword muttrcCommand + HiLink muttrcGroupLine Error + HiLink muttrcSubscribeKeyword muttrcCommand + HiLink muttrcSubscribeLine Error + HiLink muttrcListsKeyword muttrcCommand + HiLink muttrcListsLine Error + HiLink muttrcAlternateKeyword muttrcCommand + HiLink muttrcAlternatesLine Error + HiLink muttrcAttachmentsLine muttrcCommand + HiLink muttrcAttachmentsFlag Type + HiLink muttrcAttachmentsMimeType String + HiLink muttrcColorLine Error + HiLink muttrcColorContext Error + HiLink muttrcColorContextI Identifier + HiLink muttrcColorContextH Identifier + HiLink muttrcColorKeyword muttrcCommand + HiLink muttrcColorKeywordI muttrcColorKeyword + HiLink muttrcColorKeywordH muttrcColorKeyword + HiLink muttrcColorField Identifier + HiLink muttrcColor Type + HiLink muttrcColorFG Error + HiLink muttrcColorFGI Error + HiLink muttrcColorFGH Error + HiLink muttrcColorBG Error + HiLink muttrcColorBGI Error + HiLink muttrcColorBGH Error + HiLink muttrcMonoAttrib muttrcColor + HiLink muttrcMono muttrcCommand + HiLink muttrcSimplePat Identifier + HiLink muttrcSimplePatString Macro + HiLink muttrcSimplePatMetas Special + HiLink muttrcPattern Error + HiLink muttrcUnColorLine Error + HiLink muttrcUnColorKeyword muttrcCommand + HiLink muttrcUnColorIndex Identifier + HiLink muttrcShellString muttrcEscape + HiLink muttrcRXHooks muttrcCommand + HiLink muttrcRXHookNot Type + HiLink muttrcPatHooks muttrcCommand + HiLink muttrcPatHookNot Type + HiLink muttrcFormatConditionals2 Type + HiLink muttrcIndexFormatStr muttrcString + HiLink muttrcIndexFormatEscapes muttrcEscape + HiLink muttrcIndexFormatConditionals muttrcFormatConditionals2 + HiLink muttrcAliasFormatStr muttrcString + HiLink muttrcAliasFormatEscapes muttrcEscape + HiLink muttrcAttachFormatStr muttrcString + HiLink muttrcAttachFormatEscapes muttrcEscape + HiLink muttrcAttachFormatConditionals muttrcFormatConditionals2 + HiLink muttrcComposeFormatStr muttrcString + HiLink muttrcComposeFormatEscapes muttrcEscape + HiLink muttrcFolderFormatStr muttrcString + HiLink muttrcFolderFormatEscapes muttrcEscape + HiLink muttrcFolderFormatConditionals muttrcFormatConditionals2 + HiLink muttrcMixFormatStr muttrcString + HiLink muttrcMixFormatEscapes muttrcEscape + HiLink muttrcMixFormatConditionals muttrcFormatConditionals2 + HiLink muttrcPGPFormatStr muttrcString + HiLink muttrcPGPFormatEscapes muttrcEscape + HiLink muttrcPGPFormatConditionals muttrcFormatConditionals2 + HiLink muttrcPGPCmdFormatStr muttrcString + HiLink muttrcPGPCmdFormatEscapes muttrcEscape + HiLink muttrcPGPCmdFormatConditionals muttrcFormatConditionals2 + HiLink muttrcStatusFormatStr muttrcString + HiLink muttrcStatusFormatEscapes muttrcEscape + HiLink muttrcStatusFormatConditionals muttrcFormatConditionals2 + HiLink muttrcPGPGetKeysFormatStr muttrcString + HiLink muttrcPGPGetKeysFormatEscapes muttrcEscape + HiLink muttrcSmimeFormatStr muttrcString + HiLink muttrcSmimeFormatEscapes muttrcEscape + HiLink muttrcSmimeFormatConditionals muttrcFormatConditionals2 + HiLink muttrcTimeEscapes muttrcEscape + HiLink muttrcPGPTimeEscapes muttrcEscape + HiLink muttrcStrftimeEscapes Type + HiLink muttrcStrftimeFormatStr muttrcString + HiLink muttrcFormatErrors Error + + HiLink muttrcBindFunctionNL SpecialChar + HiLink muttrcBindKeyNL SpecialChar + HiLink muttrcBindMenuListNL SpecialChar + HiLink muttrcMacroDescrNL SpecialChar + HiLink muttrcMacroBodyNL SpecialChar + HiLink muttrcMacroKeyNL SpecialChar + HiLink muttrcMacroMenuListNL SpecialChar + HiLink muttrcColorMatchCountNL SpecialChar + HiLink muttrcColorNL SpecialChar + HiLink muttrcColorRXNL SpecialChar + HiLink muttrcColorBGNL SpecialChar + HiLink muttrcColorFGNL SpecialChar + HiLink muttrcAliasNameNL SpecialChar + HiLink muttrcAliasENNL SpecialChar + HiLink muttrcAliasNL SpecialChar + HiLink muttrcUnAliasNL SpecialChar + HiLink muttrcAliasGroupDefNL SpecialChar + HiLink muttrcAliasEncEmailNL SpecialChar + HiLink muttrcPatternNL SpecialChar + HiLink muttrcUnColorPatNL SpecialChar + HiLink muttrcUnColorAPNL SpecialChar + HiLink muttrcUnColorIndexNL SpecialChar + HiLink muttrcStringNL SpecialChar + + delcommand HiLink +endif + +let b:current_syntax = "muttrc" + +let &cpo = s:cpo_save +unlet s:cpo_save +"EOF vim: ts=8 noet tw=100 sw=8 sts=0 ft=vim diff --git a/share/vim/vim73/syntax/mysql.vim b/share/vim/vim74/syntax/mysql.vim similarity index 100% rename from share/vim/vim73/syntax/mysql.vim rename to share/vim/vim74/syntax/mysql.vim diff --git a/share/vim/vim73/syntax/named.vim b/share/vim/vim74/syntax/named.vim similarity index 100% rename from share/vim/vim73/syntax/named.vim rename to share/vim/vim74/syntax/named.vim diff --git a/share/vim/vim73/syntax/nanorc.vim b/share/vim/vim74/syntax/nanorc.vim similarity index 100% rename from share/vim/vim73/syntax/nanorc.vim rename to share/vim/vim74/syntax/nanorc.vim diff --git a/share/vim/vim74/syntax/nasm.vim b/share/vim/vim74/syntax/nasm.vim new file mode 100644 index 00000000..a6ed0566 --- /dev/null +++ b/share/vim/vim74/syntax/nasm.vim @@ -0,0 +1,527 @@ +" Vim syntax file +" Language: NASM - The Netwide Assembler (v0.98) +" Maintainer: Andriy Sokolov +" Original Author: Manuel M.H. Stol +" Former Maintainer: Manuel M.H. Stol +" Last Change: 2012 Feb 7 +" NASM Home: http://www.nasm.us/ + + + +" Setup Syntax: +" Clear old syntax settings +if version < 600 + syn clear +elseif exists("b:current_syntax") + finish +endif +" Assembler syntax is case insensetive +syn case ignore + + + +" Vim search and movement commands on identifers +if version < 600 + " Comments at start of a line inside which to skip search for indentifiers + set comments=:; + " Identifier Keyword characters (defines \k) + set iskeyword=@,48-57,#,$,.,?,@-@,_,~ +else + " Comments at start of a line inside which to skip search for indentifiers + setlocal comments=:; + " Identifier Keyword characters (defines \k) + setlocal iskeyword=@,48-57,#,$,.,?,@-@,_,~ +endif + + + +" Comments: +syn region nasmComment start=";" keepend end="$" contains=@nasmGrpInComments +syn region nasmSpecialComment start=";\*\*\*" keepend end="$" +syn keyword nasmInCommentTodo contained TODO FIXME XXX[XXXXX] +syn cluster nasmGrpInComments contains=nasmInCommentTodo +syn cluster nasmGrpComments contains=@nasmGrpInComments,nasmComment,nasmSpecialComment + + + +" Label Identifiers: +" in NASM: 'Everything is a Label' +" Definition Label = label defined by %[i]define or %[i]assign +" Identifier Label = label defined as first non-keyword on a line or %[i]macro +syn match nasmLabelError "$\=\(\d\+\K\|[#.@]\|\$\$\k\)\k*\>" +syn match nasmLabel "\<\(\h\|[?@]\)\k*\>" +syn match nasmLabel "[\$\~]\(\h\|[?@]\)\k*\>"lc=1 +" Labels starting with one or two '.' are special +syn match nasmLocalLabel "\<\.\(\w\|[#$?@~]\)\k*\>" +syn match nasmLocalLabel "\<\$\.\(\w\|[#$?@~]\)\k*\>"ms=s+1 +if !exists("nasm_no_warn") + syn match nasmLabelWarn "\<\~\=\$\=[_.][_.\~]*\>" +endif +if exists("nasm_loose_syntax") + syn match nasmSpecialLabel "\<\.\.@\k\+\>" + syn match nasmSpecialLabel "\<\$\.\.@\k\+\>"ms=s+1 + if !exists("nasm_no_warn") + syn match nasmLabelWarn "\<\$\=\.\.@\(\d\|[#$\.~]\)\k*\>" + endif + " disallow use of nasm internal label format + syn match nasmLabelError "\<\$\=\.\.@\d\+\.\k*\>" +else + syn match nasmSpecialLabel "\<\.\.@\(\h\|[?@]\)\k*\>" + syn match nasmSpecialLabel "\<\$\.\.@\(\h\|[?@]\)\k*\>"ms=s+1 +endif +" Labels can be dereferenced with '$' to destinguish them from reserved words +syn match nasmLabelError "\<\$\K\k*\s*:" +syn match nasmLabelError "^\s*\$\K\k*\>" +syn match nasmLabelError "\<\~\s*\(\k*\s*:\|\$\=\.\k*\)" + + + +" Constants: +syn match nasmStringError +["']+ +syn match nasmString +\("[^"]\{-}"\|'[^']\{-}'\)+ +syn match nasmBinNumber "\<[0-1]\+b\>" +syn match nasmBinNumber "\<\~[0-1]\+b\>"lc=1 +syn match nasmOctNumber "\<\o\+q\>" +syn match nasmOctNumber "\<\~\o\+q\>"lc=1 +syn match nasmDecNumber "\<\d\+\>" +syn match nasmDecNumber "\<\~\d\+\>"lc=1 +syn match nasmHexNumber "\<\(\d\x*h\|0x\x\+\|\$\d\x*\)\>" +syn match nasmHexNumber "\<\~\(\d\x*h\|0x\x\+\|\$\d\x*\)\>"lc=1 +syn match nasmFltNumber "\<\d\+\.\d*\(e[+-]\=\d\+\)\=\>" +syn keyword nasmFltNumber Inf Infinity Indefinite NaN SNaN QNaN +syn match nasmNumberError "\<\~\s*\d\+\.\d*\(e[+-]\=\d\+\)\=\>" + + +" Netwide Assembler Storage Directives: +" Storage types +syn keyword nasmTypeError DF EXTRN FWORD RESF TBYTE +syn keyword nasmType FAR NEAR SHORT +syn keyword nasmType BYTE WORD DWORD QWORD DQWORD HWORD DHWORD TWORD +syn keyword nasmType CDECL FASTCALL NONE PASCAL STDCALL +syn keyword nasmStorage DB DW DD DQ DDQ DT +syn keyword nasmStorage RESB RESW RESD RESQ RESDQ REST +syn keyword nasmStorage EXTERN GLOBAL COMMON +" Structured storage types +syn match nasmTypeError "\<\(AT\|I\=\(END\)\=\(STRUCT\=\|UNION\)\|I\=END\)\>" +syn match nasmStructureLabel contained "\<\(AT\|I\=\(END\)\=\(STRUCT\=\|UNION\)\|I\=END\)\>" +" structures cannot be nested (yet) -> use: 'keepend' and 're=' +syn cluster nasmGrpCntnStruc contains=ALLBUT,@nasmGrpInComments,nasmMacroDef,@nasmGrpInMacros,@nasmGrpInPreCondits,nasmStructureDef,@nasmGrpInStrucs +syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*STRUCT\>"hs=e-5 end="^\s*ENDSTRUCT\>"re=e-9 contains=@nasmGrpCntnStruc +syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*STRUC\>"hs=e-4 end="^\s*ENDSTRUC\>"re=e-8 contains=@nasmGrpCntnStruc +syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="\" end="\" contains=@nasmGrpCntnStruc,nasmInStructure +" union types are not part of nasm (yet) +"syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*UNION\>"hs=e-4 end="^\s*ENDUNION\>"re=e-8 contains=@nasmGrpCntnStruc +"syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="\" end="\" contains=@nasmGrpCntnStruc,nasmInStructure +syn match nasmInStructure contained "^\s*AT\>"hs=e-1 +syn cluster nasmGrpInStrucs contains=nasmStructure,nasmInStructure,nasmStructureLabel + + + +" PreProcessor Instructions: +" NAsm PreProcs start with %, but % is not a character +syn match nasmPreProcError "%{\=\(%\=\k\+\|%%\+\k*\|[+-]\=\d\+\)}\=" +if exists("nasm_loose_syntax") + syn cluster nasmGrpNxtCtx contains=nasmStructureLabel,nasmLabel,nasmLocalLabel,nasmSpecialLabel,nasmLabelError,nasmPreProcError +else + syn cluster nasmGrpNxtCtx contains=nasmStructureLabel,nasmLabel,nasmLabelError,nasmPreProcError +endif + +" Multi-line macro +syn cluster nasmGrpCntnMacro contains=ALLBUT,@nasmGrpInComments,nasmStructureDef,@nasmGrpInStrucs,nasmMacroDef,@nasmGrpPreCondits,nasmMemReference,nasmInMacPreCondit,nasmInMacStrucDef +syn region nasmMacroDef matchgroup=nasmMacro keepend start="^\s*%macro\>"hs=e-5 start="^\s*%imacro\>"hs=e-6 end="^\s*%endmacro\>"re=e-9 contains=@nasmGrpCntnMacro,nasmInMacStrucDef +if exists("nasm_loose_syntax") + syn match nasmInMacLabel contained "%\(%\k\+\>\|{%\k\+}\)" + syn match nasmInMacLabel contained "%\($\+\(\w\|[#\.?@~]\)\k*\>\|{$\+\(\w\|[#\.?@~]\)\k*}\)" + syn match nasmInMacPreProc contained "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=nasmStructureLabel,nasmLabel,nasmInMacParam,nasmLocalLabel,nasmSpecialLabel,nasmLabelError,nasmPreProcError + if !exists("nasm_no_warn") + syn match nasmInMacLblWarn contained "%\(%[$\.]\k*\>\|{%[$\.]\k*}\)" + syn match nasmInMacLblWarn contained "%\($\+\(\d\|[#\.@~]\)\k*\|{\$\+\(\d\|[#\.@~]\)\k*}\)" + hi link nasmInMacCatLabel nasmInMacLblWarn + else + hi link nasmInMacCatLabel nasmInMacLabel + endif +else + syn match nasmInMacLabel contained "%\(%\(\w\|[#?@~]\)\k*\>\|{%\(\w\|[#?@~]\)\k*}\)" + syn match nasmInMacLabel contained "%\($\+\(\h\|[?@]\)\k*\>\|{$\+\(\h\|[?@]\)\k*}\)" + hi link nasmInMacCatLabel nasmLabelError +endif +syn match nasmInMacCatLabel contained "\d\K\k*"lc=1 +syn match nasmInMacLabel contained "\d}\k\+"lc=2 +if !exists("nasm_no_warn") + syn match nasmInMacLblWarn contained "%\(\($\+\|%\)[_~][._~]*\>\|{\($\+\|%\)[_~][._~]*}\)" +endif +syn match nasmInMacPreProc contained "^\s*%pop\>"hs=e-3 +syn match nasmInMacPreProc contained "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=@nasmGrpNxtCtx +" structures cannot be nested (yet) -> use: 'keepend' and 're=' +syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*STRUCT\>"hs=e-5 end="^\s*ENDSTRUCT\>"re=e-9 contains=@nasmGrpCntnMacro +syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*STRUC\>"hs=e-4 end="^\s*ENDSTRUC\>"re=e-8 contains=@nasmGrpCntnMacro +syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="\" end="\" contains=@nasmGrpCntnMacro,nasmInStructure +" union types are not part of nasm (yet) +"syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*UNION\>"hs=e-4 end="^\s*ENDUNION\>"re=e-8 contains=@nasmGrpCntnMacro +"syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="\" end="\" contains=@nasmGrpCntnMacro,nasmInStructure +syn region nasmInMacPreConDef contained transparent matchgroup=nasmInMacPreCondit start="^\s*%ifnidni\>"hs=e-7 start="^\s*%if\(idni\|n\(ctx\|def\|idn\|num\|str\)\)\>"hs=e-6 start="^\s*%if\(ctx\|def\|idn\|nid\|num\|str\)\>"hs=e-5 start="^\s*%ifid\>"hs=e-4 start="^\s*%if\>"hs=e-2 end="%endif\>" contains=@nasmGrpCntnMacro,nasmInMacPreCondit,nasmInPreCondit +" Todo: allow STRUC/ISTRUC to be used inside preprocessor conditional block +syn match nasmInMacPreCondit contained transparent "ctx\s"lc=3 skipwhite nextgroup=@nasmGrpNxtCtx +syn match nasmInMacPreCondit contained "^\s*%elifctx\>"hs=e-7 skipwhite nextgroup=@nasmGrpNxtCtx +syn match nasmInMacPreCondit contained "^\s*%elifnctx\>"hs=e-8 skipwhite nextgroup=@nasmGrpNxtCtx +syn match nasmInMacParamNum contained "\<\d\+\.list\>"me=e-5 +syn match nasmInMacParamNum contained "\<\d\+\.nolist\>"me=e-7 +syn match nasmInMacDirective contained "\.\(no\)\=list\>" +syn match nasmInMacMacro contained transparent "macro\s"lc=5 skipwhite nextgroup=nasmStructureLabel +syn match nasmInMacMacro contained "^\s*%rotate\>"hs=e-6 +syn match nasmInMacParam contained "%\([+-]\=\d\+\|{[+-]\=\d\+}\)" +" nasm conditional macro operands/arguments +" Todo: check feasebility; add too nasmGrpInMacros, etc. +"syn match nasmInMacCond contained "\<\(N\=\([ABGL]E\=\|[CEOSZ]\)\|P[EO]\=\)\>" +syn cluster nasmGrpInMacros contains=nasmMacro,nasmInMacMacro,nasmInMacParam,nasmInMacParamNum,nasmInMacDirective,nasmInMacLabel,nasmInMacLblWarn,nasmInMacMemRef,nasmInMacPreConDef,nasmInMacPreCondit,nasmInMacPreProc,nasmInMacStrucDef + +" Context pre-procs that are better used inside a macro +if exists("nasm_ctx_outside_macro") + syn region nasmPreConditDef transparent matchgroup=nasmCtxPreCondit start="^\s*%ifnctx\>"hs=e-6 start="^\s*%ifctx\>"hs=e-5 end="%endif\>" contains=@nasmGrpCntnPreCon + syn match nasmCtxPreProc "^\s*%pop\>"hs=e-3 + if exists("nasm_loose_syntax") + syn match nasmCtxLocLabel "%$\+\(\w\|[#.?@~]\)\k*\>" + else + syn match nasmCtxLocLabel "%$\+\(\h\|[?@]\)\k*\>" + endif + syn match nasmCtxPreProc "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=@nasmGrpNxtCtx + syn match nasmCtxPreCondit contained transparent "ctx\s"lc=3 skipwhite nextgroup=@nasmGrpNxtCtx + syn match nasmCtxPreCondit contained "^\s*%elifctx\>"hs=e-7 skipwhite nextgroup=@nasmGrpNxtCtx + syn match nasmCtxPreCondit contained "^\s*%elifnctx\>"hs=e-8 skipwhite nextgroup=@nasmGrpNxtCtx + if exists("nasm_no_warn") + hi link nasmCtxPreCondit nasmPreCondit + hi link nasmCtxPreProc nasmPreProc + hi link nasmCtxLocLabel nasmLocalLabel + else + hi link nasmCtxPreCondit nasmPreProcWarn + hi link nasmCtxPreProc nasmPreProcWarn + hi link nasmCtxLocLabel nasmLabelWarn + endif +endif + +" Conditional assembly +syn cluster nasmGrpCntnPreCon contains=ALLBUT,@nasmGrpInComments,@nasmGrpInMacros,@nasmGrpInStrucs +syn region nasmPreConditDef transparent matchgroup=nasmPreCondit start="^\s*%ifnidni\>"hs=e-7 start="^\s*%if\(idni\|n\(def\|idn\|num\|str\)\)\>"hs=e-6 start="^\s*%if\(def\|idn\|nid\|num\|str\)\>"hs=e-5 start="^\s*%ifid\>"hs=e-4 start="^\s*%if\>"hs=e-2 end="%endif\>" contains=@nasmGrpCntnPreCon +syn match nasmInPreCondit contained "^\s*%el\(if\|se\)\>"hs=e-4 +syn match nasmInPreCondit contained "^\s*%elifid\>"hs=e-6 +syn match nasmInPreCondit contained "^\s*%elif\(def\|idn\|nid\|num\|str\)\>"hs=e-7 +syn match nasmInPreCondit contained "^\s*%elif\(n\(def\|idn\|num\|str\)\|idni\)\>"hs=e-8 +syn match nasmInPreCondit contained "^\s*%elifnidni\>"hs=e-9 +syn cluster nasmGrpInPreCondits contains=nasmPreCondit,nasmInPreCondit,nasmCtxPreCondit +syn cluster nasmGrpPreCondits contains=nasmPreConditDef,@nasmGrpInPreCondits,nasmCtxPreProc,nasmCtxLocLabel + +" Other pre-processor statements +syn match nasmPreProc "^\s*%\(rep\|use\)\>"hs=e-3 +syn match nasmPreProc "^\s*%line\>"hs=e-4 +syn match nasmPreProc "^\s*%\(clear\|error\|fatal\)\>"hs=e-5 +syn match nasmPreProc "^\s*%\(endrep\|strlen\|substr\)\>"hs=e-6 +syn match nasmPreProc "^\s*%\(exitrep\|warning\)\>"hs=e-7 +syn match nasmDefine "^\s*%undef\>"hs=e-5 +syn match nasmDefine "^\s*%\(assign\|define\)\>"hs=e-6 +syn match nasmDefine "^\s*%i\(assign\|define\)\>"hs=e-7 +syn match nasmDefine "^\s*%unmacro\>"hs=e-7 +syn match nasmInclude "^\s*%include\>"hs=e-7 +" Todo: Treat the line tail after %fatal, %error, %warning as text + +" Multiple pre-processor instructions on single line detection (obsolete) +"syn match nasmPreProcError +^\s*\([^\t "%';][^"%';]*\|[^\t "';][^"%';]\+\)%\a\+\>+ +syn cluster nasmGrpPreProcs contains=nasmMacroDef,@nasmGrpInMacros,@nasmGrpPreCondits,nasmPreProc,nasmDefine,nasmInclude,nasmPreProcWarn,nasmPreProcError + + + +" Register Identifiers: +" Register operands: +syn match nasmGen08Register "\<[A-D][HL]\>" +syn match nasmGen16Register "\<\([A-D]X\|[DS]I\|[BS]P\)\>" +syn match nasmGen32Register "\" +syn match nasmGen64Register "\" +syn match nasmSegRegister "\<[C-GS]S\>" +syn match nasmSpcRegister "\" +syn match nasmFpuRegister "\" +syn match nasmMmxRegister "\" +syn match nasmSseRegister "\" +syn match nasmCtrlRegister "\" +syn match nasmDebugRegister "\" +syn match nasmTestRegister "\" +syn match nasmRegisterError "\<\(CR[15-9]\|DR[4-58-9]\|TR[0-28-9]\)\>" +syn match nasmRegisterError "\" +syn match nasmRegisterError "\\)" +syn match nasmRegisterError "\" +" Memory reference operand (address): +syn match nasmMemRefError "[[\]]" +syn cluster nasmGrpCntnMemRef contains=ALLBUT,@nasmGrpComments,@nasmGrpPreProcs,@nasmGrpInStrucs,nasmMemReference,nasmMemRefError +syn match nasmInMacMemRef contained "\[[^;[\]]\{-}\]" contains=@nasmGrpCntnMemRef,nasmPreProcError,nasmInMacLabel,nasmInMacLblWarn,nasmInMacParam +syn match nasmMemReference "\[[^;[\]]\{-}\]" contains=@nasmGrpCntnMemRef,nasmPreProcError,nasmCtxLocLabel + + + +" Netwide Assembler Directives: +" Compilation constants +syn keyword nasmConstant __BITS__ __DATE__ __FILE__ __FORMAT__ __LINE__ +syn keyword nasmConstant __NASM_MAJOR__ __NASM_MINOR__ __NASM_VERSION__ +syn keyword nasmConstant __TIME__ +" Instruction modifiers +syn match nasmInstructnError "\" +syn match nasmInstrModifier "\(^\|:\)\s*[C-GS]S\>"ms=e-1 +syn keyword nasmInstrModifier A16 A32 O16 O32 +syn match nasmInstrModifier "\"lc=5,ms=e-1 +" the 'to' keyword is not allowed for fpu-pop instructions (yet) +"syn match nasmInstrModifier "\"lc=6,ms=e-1 +" NAsm directives +syn keyword nasmRepeat TIMES +syn keyword nasmDirective ALIGN[B] INCBIN EQU NOSPLIT SPLIT +syn keyword nasmDirective ABSOLUTE BITS SECTION SEGMENT +syn keyword nasmDirective ENDSECTION ENDSEGMENT +syn keyword nasmDirective __SECT__ +" Macro created standard directives: (requires %include) +syn case match +syn keyword nasmStdDirective ENDPROC EPILOGUE LOCALS PROC PROLOGUE USES +syn keyword nasmStdDirective ENDIF ELSE ELIF ELSIF IF +"syn keyword nasmStdDirective BREAK CASE DEFAULT ENDSWITCH SWITCH +"syn keyword nasmStdDirective CASE OF ENDCASE +syn keyword nasmStdDirective DO ENDFOR ENDWHILE FOR REPEAT UNTIL WHILE EXIT +syn case ignore +" Format specific directives: (all formats) +" (excluded: extension directives to section, global, common and extern) +syn keyword nasmFmtDirective ORG +syn keyword nasmFmtDirective EXPORT IMPORT GROUP UPPERCASE SEG WRT +syn keyword nasmFmtDirective LIBRARY +syn case match +syn keyword nasmFmtDirective _GLOBAL_OFFSET_TABLE_ __GLOBAL_OFFSET_TABLE_ +syn keyword nasmFmtDirective ..start ..got ..gotoff ..gotpc ..plt ..sym +syn case ignore + + + +" Standard Instructions: +syn match nasmInstructnError "\<\(F\=CMOV\|SET\)N\=\a\{0,2}\>" +syn keyword nasmInstructnError CMPS MOVS LCS LODS STOS XLAT +syn match nasmStdInstruction "\" +syn match nasmInstructnError "\\s*[^:]"he=e-1 +syn match nasmStdInstruction "\<\(CMOV\|J\|SET\)\(N\=\([ABGL]E\=\|[CEOSZ]\)\|P[EO]\=\)\>" +syn match nasmStdInstruction "\" +syn keyword nasmStdInstruction AAA AAD AAM AAS ADC ADD AND +syn keyword nasmStdInstruction BOUND BSF BSR BSWAP BT[C] BTR BTS +syn keyword nasmStdInstruction CALL CBW CDQ CLC CLD CMC CMP CMPSB CMPSD CMPSW CMPSQ +syn keyword nasmStdInstruction CMPXCHG CMPXCHG8B CPUID CWD[E] CQO +syn keyword nasmStdInstruction DAA DAS DEC DIV ENTER +syn keyword nasmStdInstruction IDIV IMUL INC INT[O] IRET[D] IRETW IRETQ +syn keyword nasmStdInstruction JCXZ JECXZ JMP +syn keyword nasmStdInstruction LAHF LDS LEA LEAVE LES LFS LGS LODSB LODSD LODSQ +syn keyword nasmStdInstruction LODSW LOOP[E] LOOPNE LOOPNZ LOOPZ LSS +syn keyword nasmStdInstruction MOVSB MOVSD MOVSW MOVSX MOVSQ MOVZX MUL NEG NOP NOT +syn keyword nasmStdInstruction OR POPA[D] POPAW POPF[D] POPFW POPFQ +syn keyword nasmStdInstruction PUSH[AD] PUSHAW PUSHF[D] PUSHFW PUSHFQ +syn keyword nasmStdInstruction RCL RCR RETF RET[N] ROL ROR +syn keyword nasmStdInstruction SAHF SAL SAR SBB SCASB SCASD SCASW +syn keyword nasmStdInstruction SHL[D] SHR[D] STC STD STOSB STOSD STOSW STOSQ SUB +syn keyword nasmStdInstruction TEST XADD XCHG XLATB XOR +syn keyword nasmStdInstruction LFENCE MFENCE SFENCE + + +" System Instructions: (usually privileged) +" Verification of pointer parameters +syn keyword nasmSysInstruction ARPL LAR LSL VERR VERW +" Addressing descriptor tables +syn keyword nasmSysInstruction LLDT SLDT LGDT SGDT +" Multitasking +syn keyword nasmSysInstruction LTR STR +" Coprocessing and Multiprocessing (requires fpu and multiple cpu's resp.) +syn keyword nasmSysInstruction CLTS LOCK WAIT +" Input and Output +syn keyword nasmInstructnError INS OUTS +syn keyword nasmSysInstruction IN INSB INSW INSD OUT OUTSB OUTSB OUTSW OUTSD +" Interrupt control +syn keyword nasmSysInstruction CLI STI LIDT SIDT +" System control +syn match nasmSysInstruction "\"me=s+3 +syn keyword nasmSysInstruction HLT INVD LMSW +syn keyword nasmSseInstruction PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA +syn keyword nasmSseInstruction RSM SFENCE SMSW SYSENTER SYSEXIT UD2 WBINVD +" TLB (Translation Lookahead Buffer) testing +syn match nasmSysInstruction "\"me=s+3 +syn keyword nasmSysInstruction INVLPG + +" Debugging Instructions: (privileged) +syn match nasmDbgInstruction "\"me=s+3 +syn keyword nasmDbgInstruction INT1 INT3 RDMSR RDTSC RDPMC WRMSR + + +" Floating Point Instructions: (requires FPU) +syn match nasmFpuInstruction "\" +syn keyword nasmFpuInstruction F2XM1 FABS FADD[P] FBLD FBSTP +syn keyword nasmFpuInstruction FCHS FCLEX FCOM[IP] FCOMP[P] FCOS +syn keyword nasmFpuInstruction FDECSTP FDISI FDIV[P] FDIVR[P] FENI FFREE +syn keyword nasmFpuInstruction FIADD FICOM[P] FIDIV[R] FILD +syn keyword nasmFpuInstruction FIMUL FINCSTP FINIT FIST[P] FISUB[R] +syn keyword nasmFpuInstruction FLD[1] FLDCW FLDENV FLDL2E FLDL2T FLDLG2 +syn keyword nasmFpuInstruction FLDLN2 FLDPI FLDZ FMUL[P] +syn keyword nasmFpuInstruction FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE +syn keyword nasmFpuInstruction FNSTCW FNSTENV FNSTSW FNSTSW +syn keyword nasmFpuInstruction FPATAN FPREM[1] FPTAN FRNDINT FRSTOR +syn keyword nasmFpuInstruction FSAVE FSCALE FSETPM FSIN FSINCOS FSQRT +syn keyword nasmFpuInstruction FSTCW FSTENV FST[P] FSTSW FSUB[P] FSUBR[P] +syn keyword nasmFpuInstruction FTST FUCOM[IP] FUCOMP[P] +syn keyword nasmFpuInstruction FXAM FXCH FXTRACT FYL2X FYL2XP1 + + +" Multi Media Xtension Packed Instructions: (requires MMX unit) +" Standard MMX instructions: (requires MMX1 unit) +syn match nasmInstructnError "\" +syn match nasmInstructnError "\" +syn keyword nasmMmxInstruction EMMS MOVD MOVQ +syn keyword nasmMmxInstruction PACKSSDW PACKSSWB PACKUSWB PADDB PADDD PADDW +syn keyword nasmMmxInstruction PADDSB PADDSW PADDUSB PADDUSW PAND[N] +syn keyword nasmMmxInstruction PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD PCMPGTW +syn keyword nasmMmxInstruction PMACHRIW PMADDWD PMULHW PMULLW POR +syn keyword nasmMmxInstruction PSLLD PSLLQ PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW +syn keyword nasmMmxInstruction PSUBB PSUBD PSUBW PSUBSB PSUBSW PSUBUSB PSUBUSW +syn keyword nasmMmxInstruction PUNPCKHBW PUNPCKHDQ PUNPCKHWD +syn keyword nasmMmxInstruction PUNPCKLBW PUNPCKLDQ PUNPCKLWD PXOR +" Extended MMX instructions: (requires MMX2/SSE unit) +syn keyword nasmMmxInstruction MASKMOVQ MOVNTQ +syn keyword nasmMmxInstruction PAVGB PAVGW PEXTRW PINSRW PMAXSW PMAXUB +syn keyword nasmMmxInstruction PMINSW PMINUB PMOVMSKB PMULHUW PSADBW PSHUFW + + +" Streaming SIMD Extension Packed Instructions: (requires SSE unit) +syn match nasmInstructnError "\" +syn match nasmSseInstruction "\" +syn keyword nasmSseInstruction ADDPS ADDSS ANDNPS ANDPS +syn keyword nasmSseInstruction COMISS CVTPI2PS CVTPS2PI +syn keyword nasmSseInstruction CVTSI2SS CVTSS2SI CVTTPS2PI CVTTSS2SI +syn keyword nasmSseInstruction DIVPS DIVSS FXRSTOR FXSAVE LDMXCSR +syn keyword nasmSseInstruction MAXPS MAXSS MINPS MINSS MOVAPS MOVHLPS MOVHPS +syn keyword nasmSseInstruction MOVLHPS MOVLPS MOVMSKPS MOVNTPS MOVSS MOVUPS +syn keyword nasmSseInstruction MULPS MULSS +syn keyword nasmSseInstruction ORPS RCPPS RCPSS RSQRTPS RSQRTSS +syn keyword nasmSseInstruction SHUFPS SQRTPS SQRTSS STMXCSR SUBPS SUBSS +syn keyword nasmSseInstruction UCOMISS UNPCKHPS UNPCKLPS XORPS + + +" Three Dimensional Now Packed Instructions: (requires 3DNow! unit) +syn keyword nasmNowInstruction FEMMS PAVGUSB PF2ID PFACC PFADD PFCMPEQ PFCMPGE +syn keyword nasmNowInstruction PFCMPGT PFMAX PFMIN PFMUL PFRCP PFRCPIT1 +syn keyword nasmNowInstruction PFRCPIT2 PFRSQIT1 PFRSQRT PFSUB[R] PI2FD +syn keyword nasmNowInstruction PMULHRWA PREFETCH[W] + + +" Vendor Specific Instructions: +" Cyrix instructions (requires Cyrix processor) +syn keyword nasmCrxInstruction PADDSIW PAVEB PDISTIB PMAGW PMULHRW[C] PMULHRIW +syn keyword nasmCrxInstruction PMVGEZB PMVLZB PMVNZB PMVZB PSUBSIW +syn keyword nasmCrxInstruction RDSHR RSDC RSLDT SMINT SMINTOLD SVDC SVLDT SVTS +syn keyword nasmCrxInstruction WRSHR +" AMD instructions (requires AMD processor) +syn keyword nasmAmdInstruction SYSCALL SYSRET + + +" Undocumented Instructions: +syn match nasmUndInstruction "\"me=s+3 +syn keyword nasmUndInstruction CMPXCHG486 IBTS ICEBP INT01 INT03 LOADALL +syn keyword nasmUndInstruction LOADALL286 LOADALL386 SALC SMI UD1 UMOV XBTS + + + +" Synchronize Syntax: +syn sync clear +syn sync minlines=50 "for multiple region nesting +syn sync match nasmSync grouphere nasmMacroDef "^\s*%i\=macro\>"me=s-1 +syn sync match nasmSync grouphere NONE "^\s*%endmacro\>" + + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later : only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_nasm_syntax_inits") + if version < 508 + let did_nasm_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " Sub Links: + HiLink nasmInMacDirective nasmDirective + HiLink nasmInMacLabel nasmLocalLabel + HiLink nasmInMacLblWarn nasmLabelWarn + HiLink nasmInMacMacro nasmMacro + HiLink nasmInMacParam nasmMacro + HiLink nasmInMacParamNum nasmDecNumber + HiLink nasmInMacPreCondit nasmPreCondit + HiLink nasmInMacPreProc nasmPreProc + HiLink nasmInPreCondit nasmPreCondit + HiLink nasmInStructure nasmStructure + HiLink nasmStructureLabel nasmStructure + + " Comment Group: + HiLink nasmComment Comment + HiLink nasmSpecialComment SpecialComment + HiLink nasmInCommentTodo Todo + + " Constant Group: + HiLink nasmString String + HiLink nasmStringError Error + HiLink nasmBinNumber Number + HiLink nasmOctNumber Number + HiLink nasmDecNumber Number + HiLink nasmHexNumber Number + HiLink nasmFltNumber Float + HiLink nasmNumberError Error + + " Identifier Group: + HiLink nasmLabel Identifier + HiLink nasmLocalLabel Identifier + HiLink nasmSpecialLabel Special + HiLink nasmLabelError Error + HiLink nasmLabelWarn Todo + + " PreProc Group: + HiLink nasmPreProc PreProc + HiLink nasmDefine Define + HiLink nasmInclude Include + HiLink nasmMacro Macro + HiLink nasmPreCondit PreCondit + HiLink nasmPreProcError Error + HiLink nasmPreProcWarn Todo + + " Type Group: + HiLink nasmType Type + HiLink nasmStorage StorageClass + HiLink nasmStructure Structure + HiLink nasmTypeError Error + + " Directive Group: + HiLink nasmConstant Constant + HiLink nasmInstrModifier Operator + HiLink nasmRepeat Repeat + HiLink nasmDirective Keyword + HiLink nasmStdDirective Operator + HiLink nasmFmtDirective Keyword + + " Register Group: + HiLink nasmCtrlRegister Special + HiLink nasmDebugRegister Debug + HiLink nasmTestRegister Special + HiLink nasmRegisterError Error + HiLink nasmMemRefError Error + + " Instruction Group: + HiLink nasmStdInstruction Statement + HiLink nasmSysInstruction Statement + HiLink nasmDbgInstruction Debug + HiLink nasmFpuInstruction Statement + HiLink nasmMmxInstruction Statement + HiLink nasmSseInstruction Statement + HiLink nasmNowInstruction Statement + HiLink nasmAmdInstruction Special + HiLink nasmCrxInstruction Special + HiLink nasmUndInstruction Todo + HiLink nasmInstructnError Error + + delcommand HiLink +endif + +let b:current_syntax = "nasm" + +" vim:ts=8 sw=4 diff --git a/share/vim/vim73/syntax/nastran.vim b/share/vim/vim74/syntax/nastran.vim similarity index 100% rename from share/vim/vim73/syntax/nastran.vim rename to share/vim/vim74/syntax/nastran.vim diff --git a/share/vim/vim74/syntax/natural.vim b/share/vim/vim74/syntax/natural.vim new file mode 100644 index 00000000..4fbc916b --- /dev/null +++ b/share/vim/vim74/syntax/natural.vim @@ -0,0 +1,215 @@ +" Vim syntax file +" +" Language: NATURAL +" Version: 2.1.0.5 +" Maintainer: Marko von Oppen +" Last Changed: 2012-02-05 18:50:43 +" Support: http://www.von-oppen.com/ + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when this syntax file was already loaded +if v:version < 600 + syntax clear + set iskeyword+=-,*,#,+,_,/ +elseif exists("b:current_syntax") + finish +else + setlocal iskeyword+=-,*,#,+,_,/ +endif + +let s:cpo_save = &cpo +set cpo&vim + +" NATURAL is case insensitive +syntax case ignore + +" preprocessor +syn keyword naturalInclude include nextgroup=naturalObjName skipwhite + +" define data +syn keyword naturalKeyword define data end-define +syn keyword naturalKeyword independent global parameter local redefine view +syn keyword naturalKeyword const[ant] init initial + +" loops +syn keyword naturalLoop read end-read end-work find end-find histogram end-histogram +syn keyword naturalLoop end-all sort end-sort sorted descending ascending +syn keyword naturalRepeat repeat end-repeat while until for step end-for +syn keyword naturalKeyword in file with field starting from ending at thru by isn where +syn keyword naturalError on error end-error +syn keyword naturalKeyword accept reject end-enddata number unique retain as release +syn keyword naturalKeyword start end-start break end-break physical page top sequence +syn keyword naturalKeyword end-toppage end-endpage end-endfile before processing +syn keyword naturalKeyword end-before + +" conditionals +syn keyword naturalConditional if then else end-if end-norec +syn keyword naturalConditional decide end-decide value when condition none any + +" assignment / calculation +syn keyword naturalKeyword reset assign move left right justified compress to into edited +syn keyword naturalKeyword add subtract multiply divide compute name +syn keyword naturalKeyword all giving remainder rounded leaving space numeric +syn keyword naturalKeyword examine full replace giving separate delimiter modified +syn keyword naturalKeyword suspend identical suppress + +" program flow +syn keyword naturalFlow callnat fetch return enter escape bottom top stack formatted +syn keyword naturalFlow command call +syn keyword naturalflow end-subroutine routine + +" file operations +syn keyword naturalKeyword update store get delete end transaction work once close + +" other keywords +syn keyword naturalKeyword first every of no record[s] found ignore immediate +syn keyword naturalKeyword set settime key control stop terminate + +" in-/output +syn keyword naturalKeyword write display input reinput notitle nohdr map newpage +syn keyword naturalKeyword alarm text help eject index window base size +syn keyword naturalKeyword format printer skip lines + +" functions +syn keyword naturalKeyword abs atn cos exp frac int log sgn sin sqrt tan val old +syn keyword naturalKeyword pos + +" report mode keywords +syn keyword naturalRMKeyword same loop obtain indexed do doend + +" Subroutine name +syn keyword naturalFlow perform subroutine nextgroup=naturalFunction skipwhite +syn match naturalFunction "\<[a-z][-_a-z0-9]*\>" + +syn keyword naturalFlow using nextgroup=naturalKeyword,naturalObjName skipwhite +syn match naturalObjName "\<[a-z][-_a-z0-9]\{,7}\>" + +" Labels +syn match naturalLabel "\<[+#a-z][-_#a-z0-9]*\." +syn match naturalRef "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>" + +" mark keyword special handling +syn keyword naturalKeyword mark nextgroup=naturalMark skipwhite +syn match naturalMark "\<\*[a-z][-_#.a-z0-9]*\>" + +" System variables +syn match naturalSysVar "\<\*[a-z][-a-z0-9]*\>" + +"integer number, or floating point number without a dot. +syn match naturalNumber "\<-\=\d\+\>" +"floating point number, with dot +syn match naturalNumber "\<-\=\d\+\.\d\+\>" +"floating point number, starting with a dot +syn match naturalNumber "\.\d\+" + +" Formats in write statement +syn match naturalFormat "\<\d\+[TX]\>" + +" String and Character contstants +syn match naturalString "H'\x\+'" +syn region naturalString start=+"+ end=+"+ +syn region naturalString start=+'+ end=+'+ + +" Type definition +syn match naturalAttribute "\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>" +syn match naturalType contained "\<[ABINP]\d\+\(,\d\+\)\=\>" +syn match naturalType contained "\<[CL]\>" + +" "TODO" / other comments +syn keyword naturalTodo contained todo test +syn match naturalCommentMark contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1 + +" comments +syn region naturalComment start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark +syn region naturalComment start="^\*[ *]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark +syn region naturalComment start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark +syn match naturalComment "^\*$" +syn match naturalComment "^\d\{4} \*$"lc=5 +" /* is legal syntax in parentheses e.g. "#ident(label./*)" +syn region naturalPComment contained start="/\*\s*[^),]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark + +" operators +syn keyword naturalOperator and or not eq ne gt lt ge le mask scan modified + +" constants +syn keyword naturalBoolean true false +syn match naturalLineNo "^\d\{4}" + +" identifiers +syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1 +syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*$" +syn match naturalLegalIdent "[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*" + +" parentheses +syn region naturalPar matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment +syn match naturalLineRef "(\d\{4})" + +" build syntax groups +syntax cluster naturalConstant contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean + +" folding +if v:version >= 600 + set foldignore=* +endif + + +if v:version >= 508 || !exists("did_natural_syntax_inits") + if v:version < 508 + let did_natural_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + " The default methods for highlighting. Can be overridden later + + " Constants + HiLink naturalFormat Constant + HiLink naturalAttribute Constant + HiLink naturalNumber Number + HiLink naturalString String + HiLink naturalBoolean Boolean + + " All kinds of keywords + HiLink naturalConditional Conditional + HiLink naturalRepeat Repeat + HiLink naturalLoop Repeat + HiLink naturalFlow Keyword + HiLink naturalError Keyword + HiLink naturalKeyword Keyword + HiLink naturalOperator Operator + HiLink naturalParGui Operator + + " Labels + HiLink naturalLabel Label + HiLink naturalRefLabel Label + + " Comments + HiLink naturalPComment Comment + HiLink naturalComment Comment + HiLink naturalTodo Todo + HiLink naturalCommentMark PreProc + + HiLink naturalInclude Include + HiLink naturalSysVar Identifier + HiLink naturalLineNo LineNr + HiLink naturalLineRef Error + HiLink naturalSpecial Special + HiLink naturalComKey Todo + + " illegal things + HiLink naturalRMKeyword Error + HiLink naturalLegalIdent Error + + HiLink naturalType Type + HiLink naturalFunction Function + HiLink naturalObjName PreProc + + delcommand HiLink +endif + +let b:current_syntax = "natural" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:set ts=8 sw=8 noet ft=vim list: diff --git a/share/vim/vim73/syntax/ncf.vim b/share/vim/vim74/syntax/ncf.vim similarity index 100% rename from share/vim/vim73/syntax/ncf.vim rename to share/vim/vim74/syntax/ncf.vim diff --git a/share/vim/vim73/syntax/netrc.vim b/share/vim/vim74/syntax/netrc.vim similarity index 100% rename from share/vim/vim73/syntax/netrc.vim rename to share/vim/vim74/syntax/netrc.vim diff --git a/share/vim/vim74/syntax/netrw.vim b/share/vim/vim74/syntax/netrw.vim new file mode 100644 index 00000000..a319d7cb --- /dev/null +++ b/share/vim/vim74/syntax/netrw.vim @@ -0,0 +1,115 @@ +" Language : Netrw Remote-Directory Listing Syntax +" Maintainer : Charles E. Campbell, Jr. +" Last change: Dec 18, 2012 +" Version : 17 +" --------------------------------------------------------------------- + +" Syntax Clearing: {{{1 +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" --------------------------------------------------------------------- +" Directory List Syntax Highlighting: {{{1 +syn cluster NetrwGroup contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion,netrwCopyTgt +syn cluster NetrwTreeGroup contains=netrwDir,netrwSymLink,netrwExe + +syn match netrwPlain "\(\S\+ \)*\S\+" contains=@NoSpell +syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell +syn match netrwDir "\.\{1,2}/" contains=netrwClassify,@NoSpell +syn match netrwDir "\%(\S\+ \)*\S\+/" contains=netrwClassify,@NoSpell +syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" skipwhite contains=netrwDateSep,@NoSpell nextgroup=netrwTime +syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell +syn match netrwExe "\%(\S\+ \)*\S*[^~]\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell +syn match netrwTreeBar "^\%([-+|] \)\+" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup +syn match netrwTreeBarSpace " " contained + +syn match netrwClassify "[*=|@/]\ze\%(\s\{2,}\|$\)" contained +syn match netrwDateSep "/" contained +syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep +syn match netrwTimeSep ":" + +syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup,@NoSpell +syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite contains=@NoSpell nextgroup=netrwHidePat +syn match netrwSlash "/" contained +syn match netrwHidePat "[^,]\+" contained skipwhite contains=@NoSpell nextgroup=netrwHideSep +syn match netrwHideSep "," contained skipwhite nextgroup=netrwHidePat +syn match netrwSortBy "Sorted by" contained transparent skipwhite nextgroup=netrwList +syn match netrwSortSeq "Sort sequence:" contained transparent skipwhite nextgroup=netrwList +syn match netrwCopyTgt "Copy/Move Tgt:" contained transparent skipwhite nextgroup=netrwList +syn match netrwList ".*$" contained contains=netrwComma,@NoSpell +syn match netrwComma "," contained +syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd,@NoSpell keepend contained +syn match netrwHelpCmd "\S\ze:" contained skipwhite contains=@NoSpell nextgroup=netrwCmdSep +syn match netrwCmdSep ":" contained nextgroup=netrwCmdNote +syn match netrwCmdNote ".\{-}\ze " contained contains=@NoSpell +syn match netrwVersion "(netrw.*)" contained contains=@NoSpell + +" ----------------------------- +" Special filetype highlighting {{{1 +" ----------------------------- +if exists("g:netrw_special_syntax") && netrw_special_syntax + syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell + syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell + if has("unix") + syn match netrwCoreDump "\" contains=netrwTreeBar,@NoSpell + endif + syn match netrwLex "\(\S\+ \)*\S\+\.\%(l\|lex\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwYacc "\(\S\+ \)*\S\+\.y\>" contains=netrwTreeBar,@NoSpell + syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell + syn match netrwDoc "\(\S\+ \)*\S\+\.\%(doc\|txt\|pdf\|ps\)" contains=netrwTreeBar,@NoSpell + syn match netrwHdr "\(\S\+ \)*\S\+\.\%(h\|hpp\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell + syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwTags "\" contains=netrwTreeBar,@NoSpell + syn match netrwTilde "\(\S\+ \)*\S\+\~\*\=\>" contains=netrwTreeBar,@NoSpell + syn match netrwTmp "\\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell +endif + +" --------------------------------------------------------------------- +" Highlighting Links: {{{1 +if !exists("did_drchip_netrwlist_syntax") + let did_drchip_netrwlist_syntax= 1 + hi default link netrwClassify Function + hi default link netrwCmdSep Delimiter + hi default link netrwComment Comment + hi default link netrwDir Directory + hi default link netrwHelpCmd Function + hi default link netrwHidePat Statement + hi default link netrwHideSep netrwComment + hi default link netrwList Statement + hi default link netrwVersion Identifier + hi default link netrwSymLink Question + hi default link netrwExe PreProc + hi default link netrwDateSep Delimiter + + hi default link netrwTreeBar Special + hi default link netrwTimeSep netrwDateSep + hi default link netrwComma netrwComment + hi default link netrwHide netrwComment + hi default link netrwMarkFile TabLineSel + + " special syntax highlighting (see :he g:netrw_special_syntax) + hi default link netrwBak NonText + hi default link netrwCompress Folded + hi default link netrwCoreDump WarningMsg + hi default link netrwData DiffChange + hi default link netrwHdr netrwPlain + hi default link netrwLex netrwPlain + hi default link netrwLib DiffChange + hi default link netrwMakefile DiffChange + hi default link netrwObj Folded + hi default link netrwTilde Folded + hi default link netrwTmp Folded + hi default link netrwTags Folded + hi default link netrwYacc netrwPlain +endif + +" Current Syntax: {{{1 +let b:current_syntax = "netrwlist" +" --------------------------------------------------------------------- +" vim: ts=8 fdm=marker diff --git a/share/vim/vim74/syntax/ninja.vim b/share/vim/vim74/syntax/ninja.vim new file mode 100644 index 00000000..d8132678 --- /dev/null +++ b/share/vim/vim74/syntax/ninja.vim @@ -0,0 +1,81 @@ +" ninja build file syntax. +" Language: ninja build file as described at +" http://martine.github.com/ninja/manual.html +" Version: 1.3 +" Last Change: 2013/04/16 +" Maintainer: Nicolas Weber +" Version 1.3 of this script is in the upstream vim repository and will be +" included in the next vim release. If you change this, please send your change +" upstream. + +" ninja lexer and parser are at +" https://github.com/martine/ninja/blob/master/src/lexer.in.cc +" https://github.com/martine/ninja/blob/master/src/manifest_parser.cc + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn case match + +syn match ninjaComment /#.*/ contains=@Spell + +" Toplevel statements are the ones listed here and +" toplevel variable assignments (ident '=' value). +" lexer.in.cc, ReadToken() and manifest_parser.cc, Parse() +syn match ninjaKeyword "^build\>" +syn match ninjaKeyword "^rule\>" +syn match ninjaKeyword "^pool\>" +syn match ninjaKeyword "^default\>" +syn match ninjaKeyword "^include\>" +syn match ninjaKeyword "^subninja\>" + +" Both 'build' and 'rule' begin a variable scope that ends +" on the first line without indent. 'rule' allows only a +" limited set of magic variables, 'build' allows general +" let assignments. +" manifest_parser.cc, ParseRule() +syn region ninjaRule start="^rule" end="^\ze\S" contains=ALL transparent +syn keyword ninjaRuleCommand contained command deps depfile description generator + \ pool restat rspfile rspfile_content + +syn region ninjaPool start="^pool" end="^\ze\S" contains=ALL transparent +syn keyword ninjaPoolCommand contained depth + +" Strings are parsed as follows: +" lexer.in.cc, ReadEvalString() +" simple_varname = [a-zA-Z0-9_-]+; +" varname = [a-zA-Z0-9_.-]+; +" $$ -> $ +" $\n -> line continuation +" '$ ' -> escaped space +" $simple_varname -> variable +" ${varname} -> variable + +syn match ninjaWrapLineOperator "\$$" +syn match ninjaSimpleVar "\$[a-zA-Z0-9_-]\+" +syn match ninjaVar "\${[a-zA-Z0-9_.-]\+}" + +" operators are: +" variable assignment = +" rule definition : +" implicit dependency | +" order-only dependency || +syn match ninjaOperator "\(=\|:\||\|||\)\ze\s" + +hi def link ninjaComment Comment +hi def link ninjaKeyword Keyword +hi def link ninjaRuleCommand Statement +hi def link ninjaPoolCommand Statement +hi def link ninjaWrapLineOperator ninjaOperator +hi def link ninjaOperator Operator +hi def link ninjaSimpleVar ninjaVar +hi def link ninjaVar Identifier + +let b:current_syntax = "ninja" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/nosyntax.vim b/share/vim/vim74/syntax/nosyntax.vim similarity index 100% rename from share/vim/vim73/syntax/nosyntax.vim rename to share/vim/vim74/syntax/nosyntax.vim diff --git a/share/vim/vim73/syntax/nqc.vim b/share/vim/vim74/syntax/nqc.vim similarity index 100% rename from share/vim/vim73/syntax/nqc.vim rename to share/vim/vim74/syntax/nqc.vim diff --git a/share/vim/vim74/syntax/nroff.vim b/share/vim/vim74/syntax/nroff.vim new file mode 100644 index 00000000..280ba9e7 --- /dev/null +++ b/share/vim/vim74/syntax/nroff.vim @@ -0,0 +1,264 @@ +" VIM syntax file +" Language: nroff/groff +" Maintainer: Pedro Alejandro López-Valencia +" URL: http://vorbote.wordpress.com/ +" Last Change: 2012 Feb 2 +" +" {{{1 Acknowledgements +" +" ACKNOWLEDGEMENTS: +" +" My thanks to Jérôme Plût , who was the +" creator and maintainer of this syntax file for several years. +" May I be as good at it as he has been. +" +" {{{1 Todo +" +" TODO: +" +" * Write syntax highlighting files for the preprocessors, +" and integrate with nroff.vim. +" +" +" {{{1 Start syntax highlighting. +" +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +" +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" +" {{{1 plugin settings... +" +" {{{2 enable spacing error highlighting +" +if exists("nroff_space_errors") + syn match nroffError /\s\+$/ + syn match nroffSpaceError /[.,:;!?]\s\{2,}/ +endif +" +" +" {{{1 Special file settings +" +" {{{2 ms exdented paragraphs are not in the default paragraphs list. +" +setlocal paragraphs+=XP +" +" {{{2 Activate navigation to preporcessor sections. +" +if exists("b:preprocs_as_sections") + setlocal sections=EQTSPS[\ G1GS +endif + +" {{{1 Escape sequences +" ------------------------------------------------------------ + +syn match nroffEscChar /\\[CN]/ nextgroup=nroffEscCharArg +syn match nroffEscape /\\[*fgmnYV]/ nextgroup=nroffEscRegPar,nroffEscRegArg +syn match nroffEscape /\\s[+-]\=/ nextgroup=nroffSize +syn match nroffEscape /\\[$AbDhlLRvxXZ]/ nextgroup=nroffEscPar,nroffEscArg + +syn match nroffEscRegArg /./ contained +syn match nroffEscRegArg2 /../ contained +syn match nroffEscRegPar /(/ contained nextgroup=nroffEscRegArg2 +syn match nroffEscArg /./ contained +syn match nroffEscArg2 /../ contained +syn match nroffEscPar /(/ contained nextgroup=nroffEscArg2 +syn match nroffSize /\((\d\)\=\d/ contained + +syn region nroffEscCharArg start=/'/ end=/'/ contained +syn region nroffEscArg start=/'/ end=/'/ contained contains=nroffEscape,@nroffSpecial + +if exists("b:nroff_is_groff") + syn region nroffEscRegArg matchgroup=nroffEscape start=/\[/ end=/\]/ contained oneline + syn region nroffSize matchgroup=nroffEscape start=/\[/ end=/\]/ contained +endif + +syn match nroffEscape /\\[adprtu{}]/ +syn match nroffEscape /\\$/ +syn match nroffEscape /\\\$[@*]/ + +" {{{1 Strings and special characters +" ------------------------------------------------------------ + +syn match nroffSpecialChar /\\[\\eE?!-]/ +syn match nroffSpace "\\[&%~|^0)/,]" +syn match nroffSpecialChar /\\(../ + +if exists("b:nroff_is_groff") + syn match nroffSpecialChar /\\\[[^]]*]/ + syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\?/ end=/\\?/ oneline +endif + +syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\!/ end=/$/ oneline + +syn cluster nroffSpecial contains=nroffSpecialChar,nroffSpace + + +syn region nroffString start=/"/ end=/"/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained +syn region nroffString start=/'/ end=/'/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained + + +" {{{1 Numbers and units +" ------------------------------------------------------------ +syn match nroffNumBlock /[0-9.]\a\=/ contained contains=nroffNumber +syn match nroffNumber /\d\+\(\.\d*\)\=/ contained nextgroup=nroffUnit,nroffBadChar +syn match nroffNumber /\.\d\+)/ contained nextgroup=nroffUnit,nroffBadChar +syn match nroffBadChar /./ contained +syn match nroffUnit /[icpPszmnvMu]/ contained + + +" {{{1 Requests +" ------------------------------------------------------------ + +" Requests begin with . or ' at the beginning of a line, or +" after .if or .ie. + +syn match nroffReqLeader /^[.']/ nextgroup=nroffReqName skipwhite +syn match nroffReqLeader /[.']/ contained nextgroup=nroffReqName skipwhite + +if exists("b:nroff_is_groff") +" +" GNU troff allows long request names +" + syn match nroffReqName /[^\t \\\[?]\+/ contained nextgroup=nroffReqArg +else + syn match nroffReqName /[^\t \\\[?]\{1,2}/ contained nextgroup=nroffReqArg +endif + +syn region nroffReqArg start=/\S/ skip=/\\$/ end=/$/ contained contains=nroffEscape,@nroffSpecial,nroffString,nroffError,nroffSpaceError,nroffNumBlock,nroffComment + +" {{{2 Conditional: .if .ie .el +syn match nroffReqName /\(if\|ie\)/ contained nextgroup=nroffCond skipwhite +syn match nroffReqName /el/ contained nextgroup=nroffReqLeader skipwhite +syn match nroffCond /\S\+/ contained nextgroup=nroffReqLeader skipwhite + +" {{{2 String definition: .ds .as +syn match nroffReqname /[da]s/ contained nextgroup=nroffDefIdent skipwhite +syn match nroffDefIdent /\S\+/ contained nextgroup=nroffDefinition skipwhite +syn region nroffDefinition matchgroup=nroffSpecialChar start=/"/ matchgroup=NONE end=/\\"/me=e-2 skip=/\\$/ start=/\S/ end=/$/ contained contains=nroffDefSpecial +syn match nroffDefSpecial /\\$/ contained +syn match nroffDefSpecial /\\\((.\)\=./ contained + +if exists("b:nroff_is_groff") + syn match nroffDefSpecial /\\\[[^]]*]/ contained +endif + +" {{{2 Macro definition: .de .am, also diversion: .di +syn match nroffReqName /\(d[ei]\|am\)/ contained nextgroup=nroffIdent skipwhite +syn match nroffIdent /[^[?( \t]\+/ contained +if exists("b:nroff_is_groff") + syn match nroffReqName /als/ contained nextgroup=nroffIdent skipwhite +endif + +" {{{2 Register definition: .rn .rr +syn match nroffReqName /[rn]r/ contained nextgroup=nroffIdent skipwhite +if exists("b:nroff_is_groff") + syn match nroffReqName /\(rnn\|aln\)/ contained nextgroup=nroffIdent skipwhite +endif + + +" {{{1 eqn/tbl/pic +" ------------------------------------------------------------ +" +" XXX: write proper syntax highlight for eqn / tbl / pic ? +" + +syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/ +syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/ +syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/ +syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/ +syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/ +syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/ + +" {{{1 Comments +" ------------------------------------------------------------ + +syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./ +syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo +syn match nroffComment /^'''.*/ contains=nroffTodo + +if exists("b:nroff_is_groff") + syn match nroffComment "\\#.*$" contains=nroffTodo +endif + +syn keyword nroffTodo TODO XXX FIXME contained + +" {{{1 Hilighting +" ------------------------------------------------------------ +" + +" +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +" +if version >= 508 || !exists("did_nroff_syn_inits") + + if version < 508 + let did_nroff_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink nroffEscChar nroffSpecialChar + HiLink nroffEscCharAr nroffSpecialChar + HiLink nroffSpecialChar SpecialChar + HiLink nroffSpace Delimiter + + HiLink nroffEscRegArg2 nroffEscRegArg + HiLink nroffEscRegArg nroffIdent + + HiLink nroffEscArg2 nroffEscArg + HiLink nroffEscPar nroffEscape + + HiLink nroffEscRegPar nroffEscape + HiLink nroffEscArg nroffEscape + HiLink nroffSize nroffEscape + HiLink nroffEscape Preproc + + HiLink nroffIgnore Comment + HiLink nroffComment Comment + HiLink nroffTodo Todo + + HiLink nroffReqLeader nroffRequest + HiLink nroffReqName nroffRequest + HiLink nroffRequest Statement + HiLink nroffCond PreCondit + HiLink nroffDefIdent nroffIdent + HiLink nroffIdent Identifier + + HiLink nroffEquation PreProc + HiLink nroffTable PreProc + HiLink nroffPicture PreProc + HiLink nroffRefer PreProc + HiLink nroffGrap PreProc + HiLink nroffGremlin PreProc + + HiLink nroffNumber Number + HiLink nroffBadChar nroffError + HiLink nroffSpaceError nroffError + HiLink nroffError Error + + HiLink nroffPreserve String + HiLink nroffString String + HiLink nroffDefinition String + HiLink nroffDefSpecial Special + + delcommand HiLink + +endif + +let b:current_syntax = "nroff" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim600: set fdm=marker fdl=2: diff --git a/share/vim/vim73/syntax/nsis.vim b/share/vim/vim74/syntax/nsis.vim similarity index 100% rename from share/vim/vim73/syntax/nsis.vim rename to share/vim/vim74/syntax/nsis.vim diff --git a/share/vim/vim73/syntax/obj.vim b/share/vim/vim74/syntax/obj.vim similarity index 100% rename from share/vim/vim73/syntax/obj.vim rename to share/vim/vim74/syntax/obj.vim diff --git a/share/vim/vim74/syntax/objc.vim b/share/vim/vim74/syntax/objc.vim new file mode 100644 index 00000000..1f61e50b --- /dev/null +++ b/share/vim/vim74/syntax/objc.vim @@ -0,0 +1,437 @@ +" Vim syntax file +" Language: Objective-C +" Maintainer: Kazunobu Kuriyama +" Last Change: 2013 Jun 13 +" Remark: Modern Objective-C Edition + +""" Preparation for loading ObjC stuff +if exists("b:current_syntax") + finish +endif +if &filetype != 'objcpp' + syn clear + runtime! syntax/c.vim +endif +let s:cpo_save = &cpo +set cpo&vim + +""" ObjC proper stuff follows... + +syn keyword objcPreProcMacro __OBJC__ __OBJC2__ __clang__ + +" Defined Types +syn keyword objcPrincipalType id Class SEL IMP BOOL instancetype +syn keyword objcUsefulTerm nil Nil NO YES + +" Preprocessor Directives +syn region objcImported display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn match objcImported display contained "<[^>]*>" +syn match objcImport display "^\s*\(%:\|#\)\s*import\>\s*["<]" contains=objcImported + +" ObjC Compiler Directives +syn match objcObjDef display /@interface\>\|@implementation\>\|@end\>\|@class\>/ +syn match objcProtocol display /@protocol\>\|@optional\>\|@required\>/ +syn match objcProperty display /@property\>\|@synthesize\>\|@dynamic\>/ +syn match objcIvarScope display /@private\>\|@protected\>\|@public\>/ +syn match objcInternalRep display /@selector\>\|@encode\>/ +syn match objcException display /@try\>\|@throw\>\|@catch\|@finally\>/ +syn match objcThread display /@synchronized\>/ +syn match objcPool display /@autoreleasepool\>/ +syn match objcModuleImport display /@import\>/ + +" ObjC Constant Strings +syn match objcSpecial display contained "%@" +syn region objcString start=+\(@"\|"\)+ skip=+\\\\\|\\"+ end=+"+ contains=cFormat,cSpecial,objcSpecial + +" ObjC Hidden Arguments +syn keyword objcHiddenArgument self _cmd super + +" ObjC Type Qualifiers for Blocks +syn keyword objcBlocksQualifier __block +" ObjC Type Qualifiers for Object Lifetime +syn keyword objcObjectLifetimeQualifier __strong __weak __unsafe_unretained __autoreleasing +" ObjC Type Qualifiers for Toll-Free Bridge +syn keyword objcTollFreeBridgeQualifier __bridge __bridge_retained __bridge_transfer + +" ObjC Type Qualifiers for Remote Messaging +syn match objcRemoteMessagingQualifier display contained /\((\s*oneway\s\+\|(\s*in\s\+\|(\s*out\s\+\|(\s*inout\s\+\|(\s*bycopy\s\+\(in\(out\)\?\|out\)\?\|(\s*byref\s\+\(in\(out\)\?\|out\)\?\)/hs=s+1 + +" shorthand +syn cluster objcTypeQualifier contains=objcBlocksQualifier,objcObjectLifetimeQualifier,objcTollFreeBridgeQualifier,objcRemoteMessagingQualifier + +" ObjC Fast Enumeration +syn match objcFastEnumKeyword display /\sin\(\s\|$\)/ + +" ObjC Literal Syntax +syn match objcLiteralSyntaxNumber display /@\(YES\>\|NO\>\|\d\|-\|+\)/ contains=cNumber,cFloat,cOctal +syn match objcLiteralSyntaxSpecialChar display /@'/ contains=cSpecialCharacter +syn match objcLiteralSyntaxChar display /@'[^\\]'/ +syn match objcLiteralSyntaxOp display /@\((\|\[\|{\)/me=e-1,he=e-1 + +" ObjC Declared Property Attributes +syn match objDeclPropAccessorNameAssign display /\s*=\s*/ contained +syn region objcDeclPropAccessorName display start=/\(getter\|setter\)/ end=/\h\w*/ contains=objDeclPropAccessorNameAssign +syn keyword objcDeclPropAccessorType readonly readwrite contained +syn keyword objcDeclPropAssignSemantics assign retain copy contained +syn keyword objcDeclPropAtomicity nonatomic contained +syn keyword objcDeclPropARC strong weak contained +syn region objcDeclProp display transparent keepend start=/@property\s*(/ end=/)/ contains=objcProperty,objcDeclPropAccessorName,objcDeclPropAccessorType,objcDeclPropAssignSemantics,objcDeclPropAtomicity,objcDeclPropARC + +" To distinguish colons in methods and dictionaries from those in C's labels. +syn match objcColon display /^\s*\h\w*\s*\:\(\s\|.\)/me=e-1,he=e-1 + +" To distinguish a protocol list from system header files +syn match objcProtocolList display /<\h\w*\(\s*,\s*\h\w*\)*>/ contains=objcPrincipalType,cType,Type + +" shorthand +syn cluster objcCEntities contains=cType,cStructure,cStorageClass,cString,cCharacter,cSpecialCharacter,cNumbers,cConstant,cOperator,cComment,cCommentL,cStatement,cLabel,cConditional,cRepeat +syn cluster objcObjCEntities contains=objcHiddenArgument,objcPrincipalType,objcString,objcUsefulTerm,objcProtocol,objcInternalRep,objcException,objcThread,objcPool,objcModuleImport,@objcTypeQualifier,objcLiteralSyntaxNumber,objcLiteralSyntaxOp,objcLiteralSyntaxChar,objcLiteralSyntaxSpecialChar,objcProtocolList,objcColon,objcFastEnumKeyword,objcType,objcClass,objcMacro,objcEnum,objcEnumValue,objcExceptionValue,objcNotificationValue,objcConstVar,objcPreProcMacro + +" Objective-C Message Expressions +syn region objcMethodCall start=/\[/ end=/\]/ contains=objcMethodCall,objcBlocks,@objcObjCEntities,@objcCEntities + +" To distinguish class method and instance method +syn match objcInstanceMethod display /^s*-\s*/ +syn match objcClassMethod display /^s*+\s*/ + +" ObjC Blocks +syn region objcBlocks start=/\(\^\s*([^)]\+)\s*{\|\^\s*{\)/ end=/}/ contains=objcBlocks,objcMethodCall,@objcObjCEntities,@objcCEntities + +syn cluster cParenGroup add=objcMethodCall +syn cluster cPreProcGroup add=objcMethodCall + +""" Foundation Framework +syn match objcClass /Protocol\s*\*/me=s+8,he=s+8 + +""""""""""""""""" +" NSObjCRuntime.h +syn keyword objcType NSInteger NSUInteger NSComparator +syn keyword objcEnum NSComparisonResult +syn keyword objcEnumValue NSOrderedAscending NSOrderedSame NSOrderedDescending +syn keyword objcEnum NSEnumerationOptions +syn keyword objcEnumValue NSEnumerationConcurrent NSEnumerationReverse +syn keyword objcEnum NSSortOptions +syn keyword objcEnumValue NSSortConcurrent NSSortStable +syn keyword objcEnumValue NSNotFound +syn keyword objcMacro NSIntegerMax NSIntegerMin NSUIntegerMax +" NSRange.h +syn keyword objcType NSRange NSRangePointer +" NSGeometry.h +syn keyword objcType NSPoint NSPointPointer NSPointArray NSSize NSSizePointer NSSizeArray NSRect NSRectPointer NSRectArray +syn keyword objcEnum NSRectEdge +syn keyword objcEnumValue NSMinXEdge NSMinYEdge NSMaxXEdge NSMaxYEdge +syn keyword objcConstVar NSZeroPoint NSZeroSize NSZeroRect +syn keyword cType CGFloat CGPoint CGSize CGRect +syn keyword objcEnum NSAlignmentOptions +syn keyword objcEnumValue NSAlignMinXInward NSAlignMinYInward NSAlignMaxXInward NSAlignMaxYInward NSAlignWidthInward NSAlignHeightInward NSAlignMinXOutward NSAlignMinYOutward NSAlignMaxXOutward NSAlignMaxYOutward NSAlignWidthOutward NSAlignHeightOutward NSAlignMinXNearest NSAlignMinYNearest NSAlignMaxXNearest NSAlignMaxYNearest NSAlignWidthNearest NSAlignHeightNearest NSAlignRectFlipped NSAlignAllEdgesInward NSAlignAllEdgesOutward NSAlignAllEdgesNearest +" NSDecimal.h +syn keyword objcType NSDecimal +syn keyword objcEnum NSRoundingMode +syn keyword objcEnumValue NSRoundPlain NSRoundDown NSRoundUp NSRoundBankers +syn keyword objcEnum NSCalculationError +syn keyword objcEnumValue NSCalculationNoError NSCalculationLossOfPrecision NSCalculationUnderflow NSCalculationOverflow NSCalculationDivideByZero +" NSDate.h +syn match objcClass /NSDate\s*\*/me=s+6,he=s+6 +syn keyword objcType NSTimeInterval +syn keyword objcNotificationValue NSSystemClockDidChangeNotification +syn keyword objcMacro NSTimeIntervalSince1970 +" NSZone.h +syn match objcType /NSZone\s*\*/me=s+6,he=s+6 +" NSError.h +syn match objcClass /NSError\s*\*/me=s+7,he=s+7 +syn keyword objcConstVar NSCocoaErrorDomain NSPOSIXErrorDomain NSOSStatusErrorDomain NSMachErrorDomain NSUnderlyingErrorKey NSLocalizedDescriptionKey NSLocalizedFailureReasonErrorKey NSLocalizedRecoverySuggestionErrorKey NSLocalizedRecoveryOptionsErrorKey NSRecoveryAttempterErrorKey NSHelpAnchorErrorKey NSStringEncodingErrorKey NSURLErrorKey NSFilePathErrorKey +" NSException.h +syn match objcClass /NSException\s*\*/me=s+11,he=s+11 +syn keyword objcType NSUncaughtExceptionHandler +syn keyword objcConstVar NSGenericException NSRangeException NSInvalidArgumentException NSInternalInconsistencyException NSMallocException NSObjectInaccessibleException NSObjectNotAvailableException NSDestinationInvalidException NSPortTimeoutException NSInvalidSendPortException NSInvalidReceivePortException NSPortSendException NSPortReceiveException NSOldStyleException +" NSNotification.h +syn match objcClass /NSNotification\s*\*/me=s+14,he=s+14 +syn match objcClass /NSNotificationCenter\s*\*/me=s+20,he=s+20 +" NSDistributedNotificationCenter.h +syn match objcClass /NSDistributedNotificationCenter\s*\*/me=s+31,he=s+31 +syn keyword objcConstVar NSLocalNotificationCenterType +syn keyword objcEnum NSNotificationSuspensionBehavior +syn keyword objcEnumValue NSNotificationSuspensionBehaviorDrop NSNotificationSuspensionBehaviorCoalesce NSNotificationSuspensionBehaviorHold NSNotificationSuspensionBehaviorHold NSNotificationSuspensionBehaviorDeliverImmediately +syn keyword objcEnumValue NSNotificationDeliverImmediately NSNotificationPostToAllSessions +" NSNotificationQueue.h +syn match objcClass /NSNotificationQueue\s*\*/me=s+19,he=s+19 +syn keyword objcEnum NSPostingStyle +syn keyword objcEnumValue NSPostWhenIdle NSPostASAP NSPostNow +syn keyword objcEnum NSNotificationCoalescing +syn keyword objcEnumValue NSNotificationNoCoalescing NSNotificationCoalescingOnName NSNotificationCoalescingOnSender +" NSEnumerator.h +syn match objcClass /NSEnumerator\s*\*/me=s+12,he=s+12 +" NSIndexSet.h +syn match objcClass /NSIndexSet\s*\*/me=s+10,he=s+10 +syn match objcClass /NSMutableIndexSet\s*\*/me=s+17,he=s+17 +" NSCharecterSet.h +syn match objcClass /NSCharacterSet\s*\*/me=s+14,he=s+14 +" NSURL.h +syn match objcClass /NSURL\s*\*/me=s+5,he=s+5 +syn keyword objcEnum NSURLBookmarkCreationOptions +syn keyword objcEnumValue NSURLBookmarkCreationPreferFileIDResolution NSURLBookmarkCreationMinimalBookmark NSURLBookmarkCreationSuitableForBookmarkFile NSURLBookmarkCreationWithSecurityScope NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess +syn keyword objcEnum NSURLBookmarkResolutionOptions +syn keyword objcEnumValue NSURLBookmarkResolutionWithoutUI NSURLBookmarkResolutionWithoutMounting NSURLBookmarkResolutionWithSecurityScope +syn keyword objcType NSURLBookmarkFileCreationOptions +syn keyword objcConstVar NSURLFileScheme NSURLKeysOfUnsetValuesKey +syn keyword objcConstVar NSURLNameKey NSURLLocalizedNameKey NSURLIsRegularFileKey NSURLIsDirectoryKey NSURLIsSymbolicLinkKey NSURLIsVolumeKey NSURLIsPackageKey NSURLIsSystemImmutableKey NSURLIsUserImmutableKey NSURLIsHiddenKey NSURLHasHiddenExtensionKey NSURLCreationDateKey NSURLContentAccessDateKey NSURLContentModificationDateKey NSURLAttributeModificationDateKey NSURLLinkCountKey NSURLParentDirectoryURLKey NSURLVolumeURLKey NSURLTypeIdentifierKey NSURLLocalizedTypeDescriptionKey NSURLLabelNumberKey NSURLLabelColorKey NSURLLocalizedLabelKey NSURLEffectiveIconKey NSURLCustomIconKey NSURLFileResourceIdentifierKey NSURLVolumeIdentifierKey NSURLPreferredIOBlockSizeKey NSURLIsReadableKey NSURLIsWritableKey NSURLIsExecutableKey NSURLFileSecurityKey NSURLIsExcludedFromBackupKey NSURLPathKey NSURLIsMountTriggerKey NSURLFileResourceTypeKey +syn keyword objcConstVar NSURLFileResourceTypeNamedPipe NSURLFileResourceTypeCharacterSpecial NSURLFileResourceTypeDirectory NSURLFileResourceTypeBlockSpecial NSURLFileResourceTypeRegular NSURLFileResourceTypeSymbolicLink NSURLFileResourceTypeSocket NSURLFileResourceTypeUnknown +syn keyword objcConstVar NSURLFileSizeKey NSURLFileAllocatedSizeKey NSURLTotalFileSizeKey NSURLTotalFileAllocatedSizeKey NSURLIsAliasFileKey +syn keyword objcConstVar NSURLVolumeLocalizedFormatDescriptionKey NSURLVolumeTotalCapacityKey NSURLVolumeAvailableCapacityKey NSURLVolumeResourceCountKey NSURLVolumeSupportsPersistentIDsKey NSURLVolumeSupportsSymbolicLinksKey NSURLVolumeSupportsHardLinksKey NSURLVolumeSupportsJournalingKey NSURLVolumeIsJournalingKey NSURLVolumeSupportsSparseFilesKey NSURLVolumeSupportsZeroRunsKey NSURLVolumeSupportsCaseSensitiveNamesKey NSURLVolumeSupportsCasePreservedNamesKey NSURLVolumeSupportsRootDirectoryDatesKey NSURLVolumeSupportsVolumeSizesKey NSURLVolumeSupportsRenamingKey NSURLVolumeSupportsAdvisoryFileLockingKey NSURLVolumeSupportsExtendedSecurityKey NSURLVolumeIsBrowsableKey NSURLVolumeMaximumFileSizeKey NSURLVolumeIsEjectableKey NSURLVolumeIsRemovableKey NSURLVolumeIsInternalKey NSURLVolumeIsAutomountedKey NSURLVolumeIsLocalKey NSURLVolumeIsReadOnlyKey NSURLVolumeCreationDateKey NSURLVolumeURLForRemountingKey NSURLVolumeUUIDStringKey NSURLVolumeNameKey NSURLVolumeLocalizedNameKey +syn keyword objcConstVar NSURLIsUbiquitousItemKey NSURLUbiquitousItemHasUnresolvedConflictsKey NSURLUbiquitousItemIsDownloadedKey NSURLUbiquitousItemIsDownloadingKey NSURLUbiquitousItemIsUploadedKey NSURLUbiquitousItemIsUploadingKey NSURLUbiquitousItemPercentDownloadedKey NSURLUbiquitousItemPercentUploadedKey +"""""""""""" +" NSString.h +syn match objcClass /NSString\s*\*/me=s+8,he=s+8 +syn match objcClass /NSMutableString\s*\*/me=s+15,he=s+15 +syn keyword objcType unichar +syn keyword objcExceptionValue NSParseErrorException NSCharacterConversionException +syn keyword objcMacro NSMaximumStringLength +syn keyword objcEnum NSStringCompareOptions +syn keyword objcEnumValue NSCaseInsensitiveSearch NSLiteralSearch NSBackwardsSearch NSAnchoredSearch NSNumericSearch NSDiacriticInsensitiveSearch NSWidthInsensitiveSearch NSForcedOrderingSearch NSRegularExpressionSearch +syn keyword objcEnum NSStringEncoding +syn keyword objcEnumValue NSASCIIStringEncoding NSNEXTSTEPStringEncoding NSJapaneseEUCStringEncoding NSUTF8StringEncoding NSISOLatin1StringEncoding NSSymbolStringEncoding NSNonLossyASCIIStringEncoding NSShiftJISStringEncoding NSISOLatin2StringEncoding NSUnicodeStringEncoding NSWindowsCP1251StringEncoding NSWindowsCP1252StringEncoding NSWindowsCP1253StringEncoding NSWindowsCP1254StringEncoding NSWindowsCP1250StringEncoding NSISO2022JPStringEncoding NSMacOSRomanStringEncoding NSUTF16StringEncoding NSUTF16BigEndianStringEncoding NSUTF16LittleEndianStringEncoding NSUTF32StringEncoding NSUTF32BigEndianStringEncoding NSUTF32LittleEndianStringEncoding +syn keyword objcEnum NSStringEncodingConversionOptions +syn keyword objcEnumValue NSStringEncodingConversionAllowLossy NSStringEncodingConversionExternalRepresentation +syn keyword objcEnum NSStringEnumerationOptions +syn keyword objcEnumValue NSStringEnumerationByLines NSStringEnumerationByParagraphs NSStringEnumerationByComposedCharacterSequences NSStringEnumerationByWords NSStringEnumerationBySentences NSStringEnumerationReverse NSStringEnumerationSubstringNotRequired NSStringEnumerationLocalized +" NSAttributedString.h +syn match objcClass /NSAttributedString\s*\*/me=s+18,he=s+18 +syn match objcClass /NSMutableAttributedString\s*\*/me=s+25,he=s+25 +syn keyword objcEnum NSAttributedStringEnumerationOptions +syn keyword objcEnumValue NSAttributedStringEnumerationReverse NSAttributedStringEnumerationLongestEffectiveRangeNotRequired +" NSValue.h +syn match objcClass /NSValue\s*\*/me=s+7,he=s+7 +syn match objcClass /NSNumber\s*\*/me=s+8,he=s+8 +" NSDecimalNumber.h +syn match objcClass /NSDecimalNumber\s*\*/me=s+15,he=s+15 +syn match objcClass /NSDecimalNumberHandler\s*\*/me=s+22,he=s+22 +syn keyword objcExceptionValue NSDecimalNumberExactnessException NSDecimalNumberOverflowException NSDecimalNumberUnderflowException NSDecimalNumberDivideByZeroException +" NSData.h +syn match objcClass /NSData\s*\*/me=s+6,he=s+6 +syn match objcClass /NSMutableData\s*\*/me=s+13,he=s+13 +syn keyword objcEnum NSDataReadingOptions +syn keyword objcEnumValue NSDataReadingMappedIfSafe NSDataReadingUncached NSDataReadingMappedAlways NSDataReadingMapped NSMappedRead NSUncachedRead +syn keyword objcEnum NSDataWritingOptions +syn keyword objcEnumValue NSDataWritingAtomic NSDataWritingWithoutOverwriting NSDataWritingFileProtectionNone NSDataWritingFileProtectionComplete NSDataWritingFileProtectionCompleteUnlessOpen NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication NSDataWritingFileProtectionMask NSAtomicWrite +syn keyword objcEnum NSDataSearchOptions +syn keyword objcEnumValue NSDataSearchBackwards NSDataSearchAnchored +" NSArray.h +syn match objcClass /NSArray\s*\*/me=s+7,he=s+7 +syn match objcClass /NSMutableArray\s*\*/me=s+14,he=s+14 +syn keyword objcEnum NSBinarySearchingOptions +syn keyword objcEnumValue NSBinarySearchingFirstEqual NSBinarySearchingLastEqual NSBinarySearchingInsertionIndex +" NSDictionary.h +syn match objcClass /NSDictionary\s*\*/me=s+12,he=s+12 +syn match objcClass /NSMutableDictionary\s*\*/me=s+19,he=s+19 +" NSSet.h +syn match objcClass /NSSet\s*\*/me=s+5,me=s+5 +syn match objcClass /NSMutableSet\s*\*/me=s+12,me=s+12 +syn match objcClass /NSCountedSet\s*\*/me=s+12,me=s+12 +" NSOrderedSet.h +syn match objcClass /NSOrderedSet\s*\*/me=s+12,me=s+12 +syn match objcClass /NSMutableOrderedSet\s*\*/me=s+19,me=s+19 +""""""""""""""""""" +" NSPathUtilities.h +syn keyword objcEnum NSSearchPathDirectory +syn keyword objcEnumValue NSApplicationDirectory NSDemoApplicationDirectory NSDeveloperApplicationDirectory NSAdminApplicationDirectory NSLibraryDirectory NSDeveloperDirectory NSUserDirectory NSDocumentationDirectory NSDocumentDirectory NSCoreServiceDirectory NSAutosavedInformationDirectory NSDesktopDirectory NSCachesDirectory NSApplicationSupportDirectory NSDownloadsDirectory NSInputMethodsDirectory NSMoviesDirectory NSMusicDirectory NSPicturesDirectory NSPrinterDescriptionDirectory NSSharedPublicDirectory NSPreferencePanesDirectory NSApplicationScriptsDirectory NSItemReplacementDirectory NSAllApplicationsDirectory NSAllLibrariesDirectory NSTrashDirectory +syn keyword objcEnum NSSearchPathDomainMask +syn keyword objcEnumValue NSUserDomainMask NSLocalDomainMask NSNetworkDomainMask NSSystemDomainMask NSAllDomainsMask +" NSFileManger.h +syn match objcClass /NSFileManager\s*\*/me=s+13,he=s+13 +syn match objcClass /NSDirectoryEnumerator\s*\*/me=s+21,he=s+21 +syn keyword objcEnum NSVolumeEnumerationOptions +syn keyword objcEnumValue NSVolumeEnumerationSkipHiddenVolumes NSVolumeEnumerationProduceFileReferenceURLs +syn keyword objcEnum NSDirectoryEnumerationOptions +syn keyword objcEnumValue NSDirectoryEnumerationSkipsSubdirectoryDescendants NSDirectoryEnumerationSkipsPackageDescendants NSDirectoryEnumerationSkipsHiddenFiles +syn keyword objcEnum NSFileManagerItemReplacementOptions +syn keyword objcEnumValue NSFileManagerItemReplacementUsingNewMetadataOnly NSFileManagerItemReplacementWithoutDeletingBackupItem +syn keyword objcNotificationValue NSUbiquityIdentityDidChangeNotification +syn keyword objcConstVar NSFileType NSFileTypeDirectory NSFileTypeRegular NSFileTypeSymbolicLink NSFileTypeSocket NSFileTypeCharacterSpecial NSFileTypeBlockSpecial NSFileTypeUnknown NSFileSize NSFileModificationDate NSFileReferenceCount NSFileDeviceIdentifier NSFileOwnerAccountName NSFileGroupOwnerAccountName NSFilePosixPermissions NSFileSystemNumber NSFileSystemFileNumber NSFileExtensionHidden NSFileHFSCreatorCode NSFileHFSTypeCode NSFileImmutable NSFileAppendOnly NSFileCreationDate NSFileOwnerAccountID NSFileGroupOwnerAccountID NSFileBusy NSFileProtectionKey NSFileProtectionNone NSFileProtectionComplete NSFileProtectionCompleteUnlessOpen NSFileProtectionCompleteUntilFirstUserAuthentication NSFileSystemSize NSFileSystemFreeSize NSFileSystemNodes NSFileSystemFreeNodes +" NSFileHandle.h +syn match objcClass /NSFileHandle\s*\*/me=s+12,he=s+12 +syn keyword objcExceptionValue NSFileHandleOperationException +syn keyword objcNotificationValue NSFileHandleReadCompletionNotification NSFileHandleReadToEndOfFileCompletionNotification NSFileHandleConnectionAcceptedNotification NSFileHandleDataAvailableNotification NSFileHandleNotificationDataItem NSFileHandleNotificationFileHandleItem NSFileHandleNotificationMonitorModes +syn match objcClass /NSPipe\s*\*/me=s+6,he=s+6 +"""""""""""" +" NSLocale.h +syn match objcClass /NSLocale\s*\*/me=s+8,he=s+8 +syn keyword objcEnum NSLocaleLanguageDirection +syn keyword objcEnumValue NSLocaleLanguageDirectionUnknown NSLocaleLanguageDirectionLeftToRight NSLocaleLanguageDirectionRightToLeft NSLocaleLanguageDirectionTopToBottom NSLocaleLanguageDirectionBottomToTop +syn keyword objcNotificationValue NSCurrentLocaleDidChangeNotification +syn keyword objcConstVar NSLocaleIdentifier NSLocaleLanguageCode NSLocaleCountryCode NSLocaleScriptCode NSLocaleVariantCode NSLocaleExemplarCharacterSet NSLocaleCalendar NSLocaleCollationIdentifier NSLocaleUsesMetricSystem NSLocaleMeasurementSystem NSLocaleDecimalSeparator NSLocaleGroupingSeparator NSLocaleCurrencySymbol NSLocaleCurrencyCode NSLocaleCollatorIdentifier NSLocaleQuotationBeginDelimiterKey NSLocaleQuotationEndDelimiterKey NSLocaleAlternateQuotationBeginDelimiterKey NSLocaleAlternateQuotationEndDelimiterKey NSGregorianCalendar NSBuddhistCalendar NSChineseCalendar NSHebrewCalendar NSIslamicCalendar NSIslamicCivilCalendar NSJapaneseCalendar NSRepublicOfChinaCalendar NSPersianCalendar NSIndianCalendar NSISO8601Calendar +" NSFormatter.h +syn match objcClass /NSFormatter\s*\*/me=s+11,he=s+11 +" NSNumberFormatter.h +syn match objcClass /NSNumberFormatter\s*\*/me=s+17,he=s+17 +syn keyword objcEnum NSNumberFormatterStyle +syn keyword objcEnumValue NSNumberFormatterNoStyle NSNumberFormatterDecimalStyle NSNumberFormatterCurrencyStyle NSNumberFormatterPercentStyle NSNumberFormatterScientificStyle NSNumberFormatterSpellOutStyle +syn keyword objcEnum NSNumberFormatterBehavior +syn keyword objcEnumValue NSNumberFormatterBehaviorDefault NSNumberFormatterBehavior10_0 NSNumberFormatterBehavior10_4 +syn keyword objcEnum NSNumberFormatterPadPosition +syn keyword objcEnumValue NSNumberFormatterPadBeforePrefix NSNumberFormatterPadAfterPrefix NSNumberFormatterPadBeforeSuffix NSNumberFormatterPadAfterSuffix +syn keyword objcEnum NSNumberFormatterRoundingMode +syn keyword objcEnumValue NSNumberFormatterRoundCeiling NSNumberFormatterRoundFloor NSNumberFormatterRoundDown NSNumberFormatterRoundUp NSNumberFormatterRoundHalfEven NSNumberFormatterRoundHalfDown NSNumberFormatterRoundHalfUp +" NSDateFormatter.h +syn match objcClass /NSDateFormatter\s*\*/me=s+15,he=s+15 +syn keyword objcEnum NSDateFormatterStyle +syn keyword objcEnumValue NSDateFormatterNoStyle NSDateFormatterShortStyle NSDateFormatterMediumStyle NSDateFormatterLongStyle NSDateFormatterFullStyle +syn keyword objcEnum NSDateFormatterBehavior +syn keyword objcEnumValue NSDateFormatterBehaviorDefault NSDateFormatterBehavior10_0 NSDateFormatterBehavior10_4 +" NSCalendar.h +syn match objcClass /NSCalendar\s*\*/me=s+10,he=s+10 +syn keyword objcEnum NSCalendarUnit +syn keyword objcEnumValue NSEraCalendarUnit NSYearCalendarUnit NSMonthCalendarUnit NSDayCalendarUnit NSHourCalendarUnit NSMinuteCalendarUnit NSSecondCalendarUnit NSWeekCalendarUnit NSWeekdayCalendarUnit NSWeekdayOrdinalCalendarUnit NSQuarterCalendarUnit NSWeekOfMonthCalendarUnit NSWeekOfYearCalendarUnit NSYearForWeekOfYearCalendarUnit NSCalendarCalendarUnit NSTimeZoneCalendarUnit +syn keyword objcEnumValue NSWrapCalendarComponents NSUndefinedDateComponent +syn match objcClass /NSDateComponents\s*\*/me=s+16,he=s+16 +" NSTimeZone.h +syn match objcClass /NSTimeZone\s*\*/me=s+10,he=s+10 +syn keyword objcEnum NSTimeZoneNameStyle +syn keyword objcEnumValue NSTimeZoneNameStyleStandard NSTimeZoneNameStyleShortStandard NSTimeZoneNameStyleDaylightSaving NSTimeZoneNameStyleShortDaylightSaving NSTimeZoneNameStyleGeneric NSTimeZoneNameStyleShortGeneric +syn keyword objcNotificationValue NSSystemTimeZoneDidChangeNotification +""""""""""" +" NSCoder.h +syn match objcClass /NSCoder\s*\*/me=s+7,he=s+7 +" NSArchiver.h +syn match objcClass /NSArchiver\s*\*/me=s+10,he=s+10 +syn match objcClass /NSUnarchiver\s*\*/me=s+12,he=s+12 +syn keyword objcExceptionValue NSInconsistentArchiveException +" NSKeyedArchiver.h +syn match objcClass /NSKeyedArchiver\s*\*/me=s+15,he=s+15 +syn match objcClass /NSKeyedUnarchiver\s*\*/me=s+17,he=s+17 +syn keyword objcExceptionValue NSInvalidArchiveOperationException NSInvalidUnarchiveOperationException +"""""""""""""""""" +" NSPropertyList.h +syn keyword objcEnum NSPropertyListMutabilityOptions +syn keyword objcEnumValue NSPropertyListImmutable NSPropertyListMutableContainers NSPropertyListMutableContainersAndLeaves +syn keyword objcEnum NSPropertyListFormat +syn keyword objcEnumValue NSPropertyListOpenStepFormat NSPropertyListXMLFormat_v1_0 NSPropertyListBinaryFormat_v1_0 +syn keyword objcType NSPropertyListReadOptions NSPropertyListWriteOptions +" NSUserDefaults.h +syn match objcClass /NSUserDefaults\s*\*/me=s+14,he=s+14 +syn keyword objcConstVar NSGlobalDomain NSArgumentDomain NSRegistrationDomain +syn keyword objcNotificationValue NSUserDefaultsDidChangeNotification +" NSBundle.h +syn match objcClass /NSBundle\s*\*/me=s+8,he=s+8 +syn keyword objcEnumValue NSBundleExecutableArchitectureI386 NSBundleExecutableArchitecturePPC NSBundleExecutableArchitectureX86_64 NSBundleExecutableArchitecturePPC64 +syn keyword objcNotificationValue NSBundleDidLoadNotification NSLoadedClasses +""""""""""""""""" +" NSProcessInfo.h +syn match objcClass /NSProcessInfo\s*\*/me=s+13,he=s+13 +syn keyword objcEnumValue NSWindowsNTOperatingSystem NSWindows95OperatingSystem NSSolarisOperatingSystem NSHPUXOperatingSystem NSMACHOperatingSystem NSSunOSOperatingSystem NSOSF1OperatingSystem +" NSTask.h +syn match objcClass /NSTask\s*\*/me=s+6,he=s+6 +syn keyword objcEnum NSTaskTerminationReason +syn keyword objcEnumValue NSTaskTerminationReasonExit NSTaskTerminationReasonUncaughtSignal +syn keyword objcNotificationValue NSTaskDidTerminateNotification +" NSThread.h +syn match objcClass /NSThread\s*\*/me=s+8,he=s+8 +syn keyword objcNotificationValue NSWillBecomeMultiThreadedNotification NSDidBecomeSingleThreadedNotification NSThreadWillExitNotification +" NSLock.h +syn match objcClass /NSLock\s*\*/me=s+6,he=s+6 +syn match objcClass /NSConditionLock\s*\*/me=s+15,he=s+15 +syn match objcClass /NSRecursiveLock\s*\*/me=s+15,he=s+15 +" NSDictributedLock +syn match objcClass /NSDistributedLock\s*\*/me=s+17,he=s+17 +" NSOperation.h +"""""""""""""""" +syn match objcClass /NSOperation\s*\*/me=s+11,he=s+11 +syn keyword objcEnum NSOperationQueuePriority +syn keyword objcEnumValue NSOperationQueuePriorityVeryLow NSOperationQueuePriorityLow NSOperationQueuePriorityNormal NSOperationQueuePriorityHigh NSOperationQueuePriorityVeryHigh +syn match objcClass /NSBlockOperation\s*\*/me=s+16,he=s+16 +syn match objcClass /NSInvocationOperation\s*\*/me=s+21,he=s+21 +syn keyword objcExceptionValue NSInvocationOperationVoidResultException NSInvocationOperationCancelledException +syn match objcClass /NSOperationQueue\s*\*/me=s+16,he=s+16 +syn keyword objcEnumValue NSOperationQueueDefaultMaxConcurrentOperationCount +" NSConnection.h +syn match objcClass /NSConnection\s*\*/me=s+12,he=s+12 +syn keyword objcConstVar NSConnectionReplyMode +syn keyword objcNotificationValue NSConnectionDidDieNotification NSConnectionDidInitializeNotification +syn keyword objcExceptionValue NSFailedAuthenticationException +" NSPort.h +syn match objcClass /NSPort\s*\*/me=s+6,he=s+6 +syn keyword objcType NSSocketNativeHandle +syn keyword objcNotificationValue NSPortDidBecomeInvalidNotification +syn match objcClass /NSMachPort\s*\*/me=s+10,he=s+10 +syn keyword objcEnumValue NSMachPortDeallocateNone NSMachPortDeallocateSendRight NSMachPortDeallocateReceiveRight +syn match objcClass /NSMessagePort\s*\*/me=s+13,he=s+13 +syn match objcClass /NSSocketPort\s*\*/me=s+12,he=s+12 +" NSPortMessage.h +syn match objcClass /NSPortMessage\s*\*/me=s+13,he=s+13 +" NSDistantObject.h +syn match objcClass /NSDistantObject\s*\*/me=s+15,he=s+15 +" NSPortNameServer.h +syn match objcClass /NSPortNameServer\s*\*/me=s+16,he=s+16 +syn match objcClass /NSMessagePortNameServer\s*\*/me=s+23,he=s+23 +syn match objcClass /NSSocketPortNameServer\s*\*/me=s+22,he=s+22 +" NSHost.h +syn match objcClass /NSHost\s*\*/me=s+6,he=s+6 +" NSInvocation.h +syn match objcClass /NSInvocation\s*\*/me=s+12,he=s+12 +" NSMethodSignature.h +syn match objcClass /NSMethodSignature\s*\*/me=s+17,he=s+17 +""""" +" NSScanner.h +syn match objcClass /NSScanner\s*\*/me=s+9,he=s+9 +" NSTimer.h +syn match objcClass /NSTimer\s*\*/me=s+7,he=s+7 +" NSAutoreleasePool.h +syn match objcClass /NSAutoreleasePool\s*\*/me=s+17,he=s+17 +" NSRunLoop.h +syn match objcClass /NSRunLoop\s*\*/me=s+9,he=s+9 +syn keyword objcConstVar NSDefaultRunLoopMode NSRunLoopCommonModes +" NSNull.h +syn match objcClass /NSNull\s*\*/me=s+6,he=s+6 +" NSProxy.h +syn match objcClass /NSProxy\s*\*/me=s+7,he=s+7 +" NSObject.h +syn match objcClass /NSObject\s*\*/me=s+8,he=s+8 + +""" Default Highlighting +hi def link objcPreProcMacro cConstant +hi def link objcPrincipalType cType +hi def link objcUsefulTerm cConstant +hi def link objcImport cInclude +hi def link objcImported cString +hi def link objcObjDef cOperator +hi def link objcProtocol cOperator +hi def link objcProperty cOperator +hi def link objcIvarScope cOperator +hi def link objcInternalRep cOperator +hi def link objcException cOperator +hi def link objcThread cOperator +hi def link objcPool cOperator +hi def link objcModuleImport cOperator +hi def link objcSpecial cSpecial +hi def link objcString cString +hi def link objcHiddenArgument cStatement +hi def link objcBlocksQualifier cStorageClass +hi def link objcObjectLifetimeQualifier cStorageClass +hi def link objcTollFreeBridgeQualifier cStorageClass +hi def link objcRemoteMessagingQualifier cStorageClass +hi def link objcFastEnumKeyword cStatement +hi def link objcLiteralSyntaxNumber cNumber +hi def link objcLiteralSyntaxChar cCharacter +hi def link objcLiteralSyntaxSpecialChar cCharacter +hi def link objcLiteralSyntaxOp cOperator +hi def link objcDeclPropAccessorName cConstant +hi def link objcDeclPropAccessorType cConstant +hi def link objcDeclPropAssignSemantics cConstant +hi def link objcDeclPropAtomicity cConstant +hi def link objcDeclPropARC cConstant +hi def link objcInstanceMethod Function +hi def link objcClassMethod Function +hi def link objcType cType +hi def link objcClass cType +hi def link objcMacro cConstant +hi def link objcEnum cType +hi def link objcEnumValue cConstant +hi def link objcExceptionValue cConstant +hi def link objcNotificationValue cConstant +hi def link objcConstVar cConstant + +""" Final step +let b:current_syntax = "objc" +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 sw=2 sts=2 diff --git a/share/vim/vim73/syntax/objcpp.vim b/share/vim/vim74/syntax/objcpp.vim similarity index 100% rename from share/vim/vim73/syntax/objcpp.vim rename to share/vim/vim74/syntax/objcpp.vim diff --git a/share/vim/vim74/syntax/ocaml.vim b/share/vim/vim74/syntax/ocaml.vim new file mode 100644 index 00000000..24116f0e --- /dev/null +++ b/share/vim/vim74/syntax/ocaml.vim @@ -0,0 +1,331 @@ +" Vim syntax file +" Language: OCaml +" Filenames: *.ml *.mli *.mll *.mly +" Maintainers: Markus Mottl +" Karl-Heinz Sylla +" Issac Trotts +" URL: http://www.ocaml.info/vim/syntax/ocaml.vim +" Last Change: 2012 May 12 - Added Dominique Pellé's spell checking patch (MM) +" 2012 Feb 01 - Improved module path highlighting (MM) +" 2010 Oct 11 - Added highlighting of lnot (MM, thanks to Erick Matsen) + +" A minor patch was applied to the official version so that object/end +" can be distinguished from begin/end, which is used for indentation, +" and folding. (David Baelde) + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") && b:current_syntax == "ocaml" + finish +endif + +" OCaml is case sensitive. +syn case match + +" Access to the method of an object +syn match ocamlMethod "#" + +" Script headers highlighted like comments +syn match ocamlComment "^#!.*" contains=@Spell + +" Scripting directives +syn match ocamlScript "^#\<\(quit\|labels\|warnings\|directory\|cd\|load\|use\|install_printer\|remove_printer\|require\|thread\|trace\|untrace\|untrace_all\|print_depth\|print_length\|camlp4o\)\>" + +" lowercase identifier - the standard way to match +syn match ocamlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/ + +syn match ocamlKeyChar "|" + +" Errors +syn match ocamlBraceErr "}" +syn match ocamlBrackErr "\]" +syn match ocamlParenErr ")" +syn match ocamlArrErr "|]" + +syn match ocamlCommentErr "\*)" + +syn match ocamlCountErr "\" +syn match ocamlCountErr "\" + +if !exists("ocaml_revised") + syn match ocamlDoErr "\" +endif + +syn match ocamlDoneErr "\" +syn match ocamlThenErr "\" + +" Error-highlighting of "end" without synchronization: +" as keyword or as error (default) +if exists("ocaml_noend_error") + syn match ocamlKeyword "\" +else + syn match ocamlEndErr "\" +endif + +" Some convenient clusters +syn cluster ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr + +syn cluster ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr + +syn cluster ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlPreMPRestr,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod,ocamlVal + + +" Enclosing delimiters +syn region ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr +syn region ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}" contains=ALLBUT,@ocamlContained,ocamlBraceErr +syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr +syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr + + +" Comments +syn region ocamlComment start="(\*" end="\*)" contains=@Spell,ocamlComment,ocamlTodo +syn keyword ocamlTodo contained TODO FIXME XXX NOTE + + +" Objects +syn region ocamlEnd matchgroup=ocamlObject start="\" matchgroup=ocamlObject end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr + + +" Blocks +if !exists("ocaml_revised") + syn region ocamlEnd matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr +endif + + +" "for" +syn region ocamlNone matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\<\(to\|downto\)\>" contains=ALLBUT,@ocamlContained,ocamlCountErr + + +" "do" +if !exists("ocaml_revised") + syn region ocamlDo matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlDoneErr +endif + +" "if" +syn region ocamlNone matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlThenErr + + +"" Modules + +" "sig" +syn region ocamlSig matchgroup=ocamlModule start="\" matchgroup=ocamlModule end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule +syn region ocamlModSpec matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr + +" "open" +syn region ocamlNone matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*\>" contains=@ocamlAllErrs,ocamlComment + +" "include" +syn match ocamlKeyword "\" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod + +" "module" - somewhat complicated stuff ;-) +syn region ocamlModule matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDef +syn region ocamlPreDef start="."me=e-1 matchgroup=ocamlKeyword end="\l\|=\|)"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlModTypeRestr,ocamlModTRWith nextgroup=ocamlModPreRHS +syn region ocamlModParam start="([^*]" end=")" contained contains=@ocamlAENoParen,ocamlModParam1,ocamlVal +syn match ocamlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlPreMPRestr + +syn region ocamlPreMPRestr start="."me=e-1 end=")"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlMPRestr,ocamlModTypeRestr + +syn region ocamlMPRestr start=":" end="."me=e-1 contained contains=@ocamlComment skipwhite skipempty nextgroup=ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3 +syn region ocamlMPRestr1 matchgroup=ocamlModule start="\ssig\s\=" matchgroup=ocamlModule end="\" contained contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule +syn region ocamlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=ocamlKeyword end="->" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam skipwhite skipempty nextgroup=ocamlFuncWith,ocamlMPRestr2 +syn match ocamlMPRestr3 "\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*" contained +syn match ocamlModPreRHS "=" contained skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod +syn keyword ocamlKeyword val +syn region ocamlVal matchgroup=ocamlKeyword start="\" matchgroup=ocamlLCIdentifier end="\<\l\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment,ocamlFullMod skipwhite skipempty nextgroup=ocamlMPRestr +syn region ocamlModRHS start="." end=". *\w\|([^*]"me=e-2 contained contains=ocamlComment skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod +syn match ocamlFullMod "\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=ocamlFuncWith + +syn region ocamlFuncWith start="([^*]"me=e-1 end=")" contained contains=ocamlComment,ocamlWith,ocamlFuncStruct skipwhite skipempty nextgroup=ocamlFuncWith +syn region ocamlFuncStruct matchgroup=ocamlModule start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=ocamlModule end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr + +syn match ocamlModTypeRestr "\<\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*\>" contained +syn region ocamlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@ocamlAENoParen,ocamlWith +syn match ocamlWith "\<\(\u\(\w\|'\)* *\. *\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlWithRest +syn region ocamlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@ocamlContained + +" "struct" +syn region ocamlStruct matchgroup=ocamlModule start="\<\(module\s\+\)\=struct\>" matchgroup=ocamlModule end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr + +" "module type" +syn region ocamlKeyword start="\\s*\\(\s*\\)\=" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef +syn match ocamlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s+1 skipwhite skipempty nextgroup=ocamlFullMod + +syn keyword ocamlKeyword and as assert class +syn keyword ocamlKeyword constraint else +syn keyword ocamlKeyword exception external fun + +syn keyword ocamlKeyword in inherit initializer +syn keyword ocamlKeyword land lazy let match +syn keyword ocamlKeyword method mutable new of +syn keyword ocamlKeyword parser private raise rec +syn keyword ocamlKeyword try type +syn keyword ocamlKeyword virtual when while with + +if exists("ocaml_revised") + syn keyword ocamlKeyword do value + syn keyword ocamlBoolean True False +else + syn keyword ocamlKeyword function + syn keyword ocamlBoolean true false + syn match ocamlKeyChar "!" +endif + +syn keyword ocamlType array bool char exn float format format4 +syn keyword ocamlType int int32 int64 lazy_t list nativeint option +syn keyword ocamlType string unit + +syn keyword ocamlOperator asr lnot lor lsl lsr lxor mod not + +syn match ocamlConstructor "(\s*)" +syn match ocamlConstructor "\[\s*\]" +syn match ocamlConstructor "\[|\s*>|]" +syn match ocamlConstructor "\[<\s*>\]" +syn match ocamlConstructor "\u\(\w\|'\)*\>" + +" Polymorphic variants +syn match ocamlConstructor "`\w\(\w\|'\)*\>" + +" Module prefix +syn match ocamlModPath "\u\(\w\|'\)* *\."he=e-1 + +syn match ocamlCharacter "'\\\d\d\d'\|'\\[\'ntbr]'\|'.'" +syn match ocamlCharacter "'\\x\x\x'" +syn match ocamlCharErr "'\\\d\d'\|'\\\d'" +syn match ocamlCharErr "'\\[^\'ntbr]'" +syn region ocamlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell + +syn match ocamlFunDef "->" +syn match ocamlRefAssign ":=" +syn match ocamlTopStop ";;" +syn match ocamlOperator "\^" +syn match ocamlOperator "::" + +syn match ocamlOperator "&&" +syn match ocamlOperator "<" +syn match ocamlOperator ">" +syn match ocamlAnyVar "\<_\>" +syn match ocamlKeyChar "|[^\]]"me=e-1 +syn match ocamlKeyChar ";" +syn match ocamlKeyChar "\~" +syn match ocamlKeyChar "?" +syn match ocamlKeyChar "\*" +syn match ocamlKeyChar "=" + +if exists("ocaml_revised") + syn match ocamlErr "<-" +else + syn match ocamlOperator "<-" +endif + +syn match ocamlNumber "\<-\=\d\(_\|\d\)*[l|L|n]\?\>" +syn match ocamlNumber "\<-\=0[x|X]\(\x\|_\)\+[l|L|n]\?\>" +syn match ocamlNumber "\<-\=0[o|O]\(\o\|_\)\+[l|L|n]\?\>" +syn match ocamlNumber "\<-\=0[b|B]\([01]\|_\)\+[l|L|n]\?\>" +syn match ocamlFloat "\<-\=\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>" + +" Labels +syn match ocamlLabel "\~\(\l\|_\)\(\w\|'\)*"lc=1 +syn match ocamlLabel "?\(\l\|_\)\(\w\|'\)*"lc=1 +syn region ocamlLabel transparent matchgroup=ocamlLabel start="?(\(\l\|_\)\(\w\|'\)*"lc=2 end=")"me=e-1 contains=ALLBUT,@ocamlContained,ocamlParenErr + + +" Synchronization +syn sync minlines=50 +syn sync maxlines=500 + +if !exists("ocaml_revised") + syn sync match ocamlDoSync grouphere ocamlDo "\" + syn sync match ocamlDoSync groupthere ocamlDo "\" +endif + +if exists("ocaml_revised") + syn sync match ocamlEndSync grouphere ocamlEnd "\<\(object\)\>" +else + syn sync match ocamlEndSync grouphere ocamlEnd "\<\(begin\|object\)\>" +endif + +syn sync match ocamlEndSync groupthere ocamlEnd "\" +syn sync match ocamlStructSync grouphere ocamlStruct "\" +syn sync match ocamlStructSync groupthere ocamlStruct "\" +syn sync match ocamlSigSync grouphere ocamlSig "\" +syn sync match ocamlSigSync groupthere ocamlSig "\" + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_ocaml_syntax_inits") + if version < 508 + let did_ocaml_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink ocamlBraceErr Error + HiLink ocamlBrackErr Error + HiLink ocamlParenErr Error + HiLink ocamlArrErr Error + + HiLink ocamlCommentErr Error + + HiLink ocamlCountErr Error + HiLink ocamlDoErr Error + HiLink ocamlDoneErr Error + HiLink ocamlEndErr Error + HiLink ocamlThenErr Error + + HiLink ocamlCharErr Error + + HiLink ocamlErr Error + + HiLink ocamlComment Comment + + HiLink ocamlModPath Include + HiLink ocamlObject Include + HiLink ocamlModule Include + HiLink ocamlModParam1 Include + HiLink ocamlModType Include + HiLink ocamlMPRestr3 Include + HiLink ocamlFullMod Include + HiLink ocamlModTypeRestr Include + HiLink ocamlWith Include + HiLink ocamlMTDef Include + + HiLink ocamlScript Include + + HiLink ocamlConstructor Constant + + HiLink ocamlVal Keyword + HiLink ocamlModPreRHS Keyword + HiLink ocamlMPRestr2 Keyword + HiLink ocamlKeyword Keyword + HiLink ocamlMethod Include + HiLink ocamlFunDef Keyword + HiLink ocamlRefAssign Keyword + HiLink ocamlKeyChar Keyword + HiLink ocamlAnyVar Keyword + HiLink ocamlTopStop Keyword + HiLink ocamlOperator Keyword + + HiLink ocamlBoolean Boolean + HiLink ocamlCharacter Character + HiLink ocamlNumber Number + HiLink ocamlFloat Float + HiLink ocamlString String + + HiLink ocamlLabel Identifier + + HiLink ocamlType Type + + HiLink ocamlTodo Todo + + HiLink ocamlEncl Keyword + + delcommand HiLink +endif + +let b:current_syntax = "ocaml" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/occam.vim b/share/vim/vim74/syntax/occam.vim similarity index 100% rename from share/vim/vim73/syntax/occam.vim rename to share/vim/vim74/syntax/occam.vim diff --git a/share/vim/vim73/syntax/omnimark.vim b/share/vim/vim74/syntax/omnimark.vim similarity index 100% rename from share/vim/vim73/syntax/omnimark.vim rename to share/vim/vim74/syntax/omnimark.vim diff --git a/share/vim/vim73/syntax/openroad.vim b/share/vim/vim74/syntax/openroad.vim similarity index 100% rename from share/vim/vim73/syntax/openroad.vim rename to share/vim/vim74/syntax/openroad.vim diff --git a/share/vim/vim74/syntax/opl.vim b/share/vim/vim74/syntax/opl.vim new file mode 100644 index 00000000..1b07e359 --- /dev/null +++ b/share/vim/vim74/syntax/opl.vim @@ -0,0 +1,102 @@ +" Vim syntax file +" Language: OPL +" Maintainer: Czo +" Last Change: 2012 Feb 03 by Thilo Six +" $Id: opl.vim,v 1.1 2004/06/13 17:34:11 vimboss Exp $ + +" Open Psion Language... (EPOC16/EPOC32) + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" case is not significant +syn case ignore + +" A bunch of useful OPL keywords +syn keyword OPLStatement proc endp abs acos addr adjustalloc alert alloc app +syn keyword OPLStatement append appendsprite asc asin at atan back beep +syn keyword OPLStatement begintrans bookmark break busy byref cache +syn keyword OPLStatement cachehdr cacherec cachetidy call cancel caption +syn keyword OPLStatement changesprite chr$ clearflags close closesprite cls +syn keyword OPLStatement cmd$ committrans compact compress const continue +syn keyword OPLStatement copy cos count create createsprite cursor +syn keyword OPLStatement datetosecs datim$ day dayname$ days daystodate +syn keyword OPLStatement dbuttons dcheckbox dchoice ddate declare dedit +syn keyword OPLStatement deditmulti defaultwin deg delete dfile dfloat +syn keyword OPLStatement dialog diaminit diampos dinit dir$ dlong do dow +syn keyword OPLStatement dposition drawsprite dtext dtime dxinput edit else +syn keyword OPLStatement elseif enda endif endv endwh entersend entersend0 +syn keyword OPLStatement eof erase err err$ errx$ escape eval exist exp ext +syn keyword OPLStatement external find findfield findlib first fix$ flags +syn keyword OPLStatement flt font freealloc gat gborder gbox gbutton +syn keyword OPLStatement gcircle gclock gclose gcls gcolor gcopy gcreate +syn keyword OPLStatement gcreatebit gdrawobject gellipse gen$ get get$ +syn keyword OPLStatement getcmd$ getdoc$ getevent getevent32 geteventa32 +syn keyword OPLStatement geteventc getlibh gfill gfont ggmode ggrey gheight +syn keyword OPLStatement gidentity ginfo ginfo32 ginvert giprint glineby +syn keyword OPLStatement glineto gloadbit gloadfont global gmove gorder +syn keyword OPLStatement goriginx goriginy goto gotomark gpatt gpeekline +syn keyword OPLStatement gpoly gprint gprintb gprintclip grank gsavebit +syn keyword OPLStatement gscroll gsetpenwidth gsetwin gstyle gtmode gtwidth +syn keyword OPLStatement gunloadfont gupdate guse gvisible gwidth gx +syn keyword OPLStatement gxborder gxprint gy hex$ hour iabs icon if include +syn keyword OPLStatement input insert int intf intrans key key$ keya keyc +syn keyword OPLStatement killmark kmod last lclose left$ len lenalloc +syn keyword OPLStatement linklib ln loadlib loadm loc local lock log lopen +syn keyword OPLStatement lower$ lprint max mcard mcasc mean menu mid$ min +syn keyword OPLStatement minit minute mkdir modify month month$ mpopup +syn keyword OPLStatement newobj newobjh next notes num$ odbinfo off onerr +syn keyword OPLStatement open openr opx os parse$ path pause peek pi +syn keyword OPLStatement pointerfilter poke pos position possprite print +syn keyword OPLStatement put rad raise randomize realloc recsize rename +syn keyword OPLStatement rept$ return right$ rmdir rnd rollback sci$ screen +syn keyword OPLStatement screeninfo second secstodate send setdoc setflags +syn keyword OPLStatement setname setpath sin space sqr statuswin +syn keyword OPLStatement statwininfo std stop style sum tan testevent trap +syn keyword OPLStatement type uadd unloadlib unloadm until update upper$ +syn keyword OPLStatement use usr usr$ usub val var vector week while year +" syn keyword OPLStatement rem + + +syn match OPLNumber "\<\d\+\>" +syn match OPLNumber "\<\d\+\.\d*\>" +syn match OPLNumber "\.\d\+\>" + +syn region OPLString start=+"+ end=+"+ +syn region OPLComment start="REM[\t ]" end="$" +syn match OPLMathsOperator "-\|=\|[:<>+\*^/\\]" + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_OPL_syntax_inits") + if version < 508 + let did_OPL_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink OPLStatement Statement + HiLink OPLNumber Number + HiLink OPLString String + HiLink OPLComment Comment + HiLink OPLMathsOperator Conditional +" HiLink OPLError Error + + delcommand HiLink +endif + +let b:current_syntax = "opl" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: ts=8 diff --git a/share/vim/vim73/syntax/ora.vim b/share/vim/vim74/syntax/ora.vim similarity index 100% rename from share/vim/vim73/syntax/ora.vim rename to share/vim/vim74/syntax/ora.vim diff --git a/share/vim/vim74/syntax/pamconf.vim b/share/vim/vim74/syntax/pamconf.vim new file mode 100644 index 00000000..e3c8ba87 --- /dev/null +++ b/share/vim/vim74/syntax/pamconf.vim @@ -0,0 +1,120 @@ +" Vim syntax file +" Language: pam(8) configuration file +" Maintainer: Nikolai Weibull +" Latest Revision: 2011-08-03 + + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn match pamconfService '^[[:graph:]]\+' + \ nextgroup=pamconfType, + \ pamconfServiceLineCont skipwhite + +syn keyword pamconfTodo contained TODO FIXME XXX NOTE + +syn region pamconfComment display oneline start='#' end='$' + \ contains=pamconfTodo,@Spell + +syn match pamconfServiceLineCont contained '\\$' + \ nextgroup=pamconfType, + \ pamconfServiceLineCont skipwhite skipnl + +syn keyword pamconfType account auth password session + \ nextgroup=pamconfControl, + \ pamconfTypeLineCont skipwhite + +syn match pamconfTypeLineCont contained '\\$' + \ nextgroup=pamconfControl, + \ pamconfTypeLineCont skipwhite skipnl + +syn keyword pamconfControl contained requisite required sufficient + \ optional include substack + \ nextgroup=pamconfMPath, + \ pamconfControlLineContH skipwhite + +syn match pamconfControlBegin '\[' nextgroup=pamconfControlValues, + \ pamconfControlLineCont skipwhite + +syn match pamconfControlLineCont contained '\\$' + \ nextgroup=pamconfControlValues, + \ pamconfControlLineCont skipwhite skipnl + +syn keyword pamconfControlValues contained success open_err symbol_err + \ service_err system_err buf_err + \ perm_denied auth_err cred_insufficient + \ authinfo_unavail user_unknown maxtries + \ new_authtok_reqd acct_expired session_err + \ cred_unavail cred_expired cred_err + \ no_module_data conv_err authtok_err + \ authtok_recover_err authtok_lock_busy + \ authtok_disable_aging try_again ignore + \ abort authtok_expired module_unknown + \ bad_item and default + \ nextgroup=pamconfControlValueEq + +syn match pamconfControlValueEq contained '=' + \ nextgroup=pamconfControlActionN, + \ pamconfControlAction + +syn match pamconfControlActionN contained '\d\+\>' + \ nextgroup=pamconfControlValues, + \ pamconfControlLineCont,pamconfControlEnd + \ skipwhite +syn keyword pamconfControlAction contained ignore bad die ok done reset + \ nextgroup=pamconfControlValues, + \ pamconfControlLineCont,pamconfControlEnd + \ skipwhite + +syn match pamconfControlEnd contained '\]' + \ nextgroup=pamconfMPath, + \ pamconfControlLineContH skipwhite + +syn match pamconfControlLineContH contained '\\$' + \ nextgroup=pamconfMPath, + \ pamconfControlLineContH skipwhite skipnl + +syn match pamconfMPath contained '\S\+' + \ nextgroup=pamconfMPathLineCont, + \ pamconfArgs skipwhite + +syn match pamconfArgs contained '\S\+' + \ nextgroup=pamconfArgsLineCont, + \ pamconfArgs skipwhite + +syn match pamconfMPathLineCont contained '\\$' + \ nextgroup=pamconfMPathLineCont, + \ pamconfArgs skipwhite skipnl + +syn match pamconfArgsLineCont contained '\\$' + \ nextgroup=pamconfArgsLineCont, + \ pamconfArgs skipwhite skipnl + +hi def link pamconfTodo Todo +hi def link pamconfComment Comment +hi def link pamconfService Statement +hi def link pamconfServiceLineCont Special +hi def link pamconfType Type +hi def link pamconfTypeLineCont pamconfServiceLineCont +hi def link pamconfControl Macro +hi def link pamconfControlBegin Delimiter +hi def link pamconfControlLineContH pamconfServiceLineCont +hi def link pamconfControlLineCont pamconfServiceLineCont +hi def link pamconfControlValues Identifier +hi def link pamconfControlValueEq Operator +hi def link pamconfControlActionN Number +hi def link pamconfControlAction Identifier +hi def link pamconfControlEnd Delimiter +hi def link pamconfMPath String +hi def link pamconfMPathLineCont pamconfServiceLineCont +hi def link pamconfArgs Normal +hi def link pamconfArgsLineCont pamconfServiceLineCont + +let b:current_syntax = "pamconf" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/papp.vim b/share/vim/vim74/syntax/papp.vim similarity index 100% rename from share/vim/vim73/syntax/papp.vim rename to share/vim/vim74/syntax/papp.vim diff --git a/share/vim/vim73/syntax/pascal.vim b/share/vim/vim74/syntax/pascal.vim similarity index 100% rename from share/vim/vim73/syntax/pascal.vim rename to share/vim/vim74/syntax/pascal.vim diff --git a/share/vim/vim73/syntax/passwd.vim b/share/vim/vim74/syntax/passwd.vim similarity index 100% rename from share/vim/vim73/syntax/passwd.vim rename to share/vim/vim74/syntax/passwd.vim diff --git a/share/vim/vim73/syntax/pcap.vim b/share/vim/vim74/syntax/pcap.vim similarity index 100% rename from share/vim/vim73/syntax/pcap.vim rename to share/vim/vim74/syntax/pcap.vim diff --git a/share/vim/vim73/syntax/pccts.vim b/share/vim/vim74/syntax/pccts.vim similarity index 100% rename from share/vim/vim73/syntax/pccts.vim rename to share/vim/vim74/syntax/pccts.vim diff --git a/share/vim/vim73/syntax/pdf.vim b/share/vim/vim74/syntax/pdf.vim similarity index 100% rename from share/vim/vim73/syntax/pdf.vim rename to share/vim/vim74/syntax/pdf.vim diff --git a/share/vim/vim74/syntax/perl.vim b/share/vim/vim74/syntax/perl.vim new file mode 100644 index 00000000..c09373a5 --- /dev/null +++ b/share/vim/vim74/syntax/perl.vim @@ -0,0 +1,589 @@ +" Vim syntax file +" Language: Perl 5 +" Maintainer: vim-perl +" Homepage: http://github.com/vim-perl/vim-perl/tree/master +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change: 2013-07-23 +" Contributors: Andy Lester +" Hinrik Örn Sigurðsson +" Lukas Mai +" Nick Hibma +" Sonia Heimann +" Rob Hoelz +" and many others. +" +" Please download the most recent version first, before mailing +" any comments. +" +" The following parameters are available for tuning the +" perl syntax highlighting, with defaults given: +" +" let perl_include_pod = 1 +" unlet perl_no_scope_in_variables +" unlet perl_no_extended_vars +" unlet perl_string_as_statement +" unlet perl_no_sync_on_sub +" unlet perl_no_sync_on_global_var +" let perl_sync_dist = 100 +" unlet perl_fold +" unlet perl_fold_blocks +" unlet perl_nofold_packages +" let perl_nofold_subs = 1 +" unlet perl_fold_anonymous_subs + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +if exists('®expengine') + let s:regexpengine=®expengine + set regexpengine=1 +endif + +" POD starts with ^= and ends with ^=cut + +if !exists("perl_include_pod") || perl_include_pod == 1 + " Include a while extra syntax file + syn include @Pod syntax/pod.vim + unlet b:current_syntax + if exists("perl_fold") + syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend fold extend + syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend fold extend + else + syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend + syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend + endif +else + " Use only the bare minimum of rules + if exists("perl_fold") + syn region perlPOD start="^=[a-z]" end="^=cut" fold + else + syn region perlPOD start="^=[a-z]" end="^=cut" + endif +endif + + +syn cluster perlTop contains=TOP + +syn region perlBraces start="{" end="}" transparent extend + +" All keywords +" +syn match perlConditional "\<\%(if\|elsif\|unless\|given\|when\|default\)\>" +syn match perlConditional "\\)\|\>\)" contains=perlElseIfError skipwhite skipnl skipempty +syn match perlRepeat "\<\%(while\|for\%(each\)\=\|do\|until\|continue\)\>" +syn match perlOperator "\<\%(defined\|undef\|eq\|ne\|[gl][et]\|cmp\|not\|and\|or\|xor\|not\|bless\|ref\|do\)\>" +" for some reason, adding this as the nextgroup for perlControl fixes BEGIN +" folding issues... +syn match perlFakeGroup "" contained +syn match perlControl "\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>\_s*" nextgroup=perlFakeGroup + +syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>" +syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>" +syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|uc\%(first\)\=\)\>" +syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>" +syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>" +syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>" +syn match perlStatementHash "\<\%(delete\|each\|exists\|keys\|values\)\>" +syn match perlStatementIOfunc "\<\%(syscall\|dbmopen\|dbmclose\)\>" +syn match perlStatementFiledesc "\<\%(binmode\|close\%(dir\)\=\|eof\|fileno\|getc\|lstat\|printf\=\|read\%(dir\|line\|pipe\)\|rewinddir\|say\|select\|stat\|tell\%(dir\)\=\|write\)\>" nextgroup=perlFiledescStatementNocomma skipwhite +syn match perlStatementFiledesc "\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read\|seek\%(dir\)\=\|sys\%(open\|read\|seek\|write\)\|truncate\)\>" nextgroup=perlFiledescStatementComma skipwhite +syn match perlStatementVector "\" +syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>" +syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>" +syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\)\>" +syn match perlStatementInclude "\<\%(require\|import\)\>" +syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\=" +syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>" +syn match perlStatementSocket "\<\%(accept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>" +syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>" +syn match perlStatementNetwork "\<\%(\%(end\|[gs]et\)\%(host\|net\|proto\|serv\)ent\|get\%(\%(host\|net\)by\%(addr\|name\)\|protoby\%(name\|number\)\|servby\%(name\|port\)\)\)\>" +syn match perlStatementPword "\<\%(get\%(pw\%(uid\|nam\)\|gr\%(gid\|nam\)\|login\)\)\|\%(end\|[gs]et\)\%(pw\|gr\)ent\>" +syn match perlStatementTime "\<\%(gmtime\|localtime\|time\)\>" + +syn match perlStatementMisc "\<\%(warn\|format\|formline\|reset\|scalar\|prototype\|lock\|tied\=\|untie\)\>" + +syn keyword perlTodo TODO TODO: TBD TBD: FIXME FIXME: XXX XXX: NOTE NOTE: contained + +syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\<\%(map\|grep\|sort\|printf\=\|say\|system\|exec\)\>\s*{" end="}" contains=@perlTop,perlBraces extend + +syn match perlLabel "^\s*\h\w*\s*::\@!\%(\ is *not* considered as part of the +" variable - there again, too complicated and too slow. + +" Special variables first ($^A, ...) and ($|, $', ...) +syn match perlVarPlain "$^[ACDEFHILMNOPRSTVWX]\=" +syn match perlVarPlain "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]" +syn match perlVarPlain "%+" +syn match perlVarPlain "$\%(0\|[1-9]\d*\)" +" Same as above, but avoids confusion in $::foo (equivalent to $main::foo) +syn match perlVarPlain "$::\@!" +" These variables are not recognized within matches. +syn match perlVarNotInMatches "$[|)]" +" This variable is not recognized within matches delimited by m//. +syn match perlVarSlash "$/" + +" And plain identifiers +syn match perlPackageRef "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\=\%(::\|'\)\I"ms=s+1,me=e-1 contained + +" To not highlight packages in variables as a scope reference - i.e. in +" $pack::var, pack:: is a scope, just set "perl_no_scope_in_variables" +" If you don't want complex things like @{${"foo"}} to be processed, +" just set the variable "perl_no_extended_vars"... + +if !exists("perl_no_scope_in_variables") + syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod + syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef + syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod +else + syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod + syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" + syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod +endif + +if !exists("perl_no_extended_vars") + syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlBraces + syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained + syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained + syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained + syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained + syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained + syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend + syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend + syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend + syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend + syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend + syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contains=perlVarSimpleMemberName contained extend + syn match perlVarSimpleMemberName "\I\i*" contained + syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend + syn match perlPackageConst "__PACKAGE__" nextgroup=perlMethod + syn match perlMethod "->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod +endif + +" File Descriptors +syn match perlFiledescRead "<\h\w*>" + +syn match perlFiledescStatementComma "(\=\s*\u\w*\s*,"me=e-1 transparent contained contains=perlFiledescStatement +syn match perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement + +syn match perlFiledescStatement "\u\w*" contained + +" Special characters in strings and matches +syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend +syn match perlSpecialStringU2 "\\." extend contained contains=NONE +syn match perlSpecialStringU "\\\\" contained +syn match perlSpecialMatch "\\[1-9]" contained extend +syn match perlSpecialMatch "\\g\%(\d\+\|{\%(-\=\d\+\|\h\w*\)}\)" contained +syn match perlSpecialMatch "\\k\%(<\h\w*>\|'\h\w*'\)" contained +syn match perlSpecialMatch "{\d\+\%(,\%(\d\+\)\=\)\=}" contained +syn match perlSpecialMatch "\[[]-]\=[^\[\]]*[]-]\=\]" contained extend +syn match perlSpecialMatch "[+*()?.]" contained +syn match perlSpecialMatch "(?[#:=!]" contained +syn match perlSpecialMatch "(?[impsx]*\%(-[imsx]\+\)\=)" contained +syn match perlSpecialMatch "(?\%([-+]\=\d\+\|R\))" contained +syn match perlSpecialMatch "(?\%(&\|P[>=]\)\h\w*)" contained +syn match perlSpecialMatch "(\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\=\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\=\|ACCEPT\))" contained + +" Possible errors +" +" Highlight lines with only whitespace (only in blank delimited here documents) as errors +syn match perlNotEmptyLine "^\s\+$" contained +" Highlight "} else if (...) {", it should be "} else { if (...) { " or "} elsif (...) {" +syn match perlElseIfError "else\_s*if" containedin=perlConditional +syn keyword perlElseIfError elseif containedin=perlConditional + +" Variable interpolation +" +" These items are interpolated inside "" strings and similar constructs. +syn cluster perlInterpDQ contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock +" These items are interpolated inside '' strings and similar constructs. +syn cluster perlInterpSQ contains=perlSpecialStringU,perlSpecialStringU2 +" These items are interpolated inside m// matches and s/// substitutions. +syn cluster perlInterpSlash contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock +" These items are interpolated inside m## matches and s### substitutions. +syn cluster perlInterpMatch contains=@perlInterpSlash,perlVarSlash + +" Shell commands +syn region perlShellCommand matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ keepend + +" Constants +" +" Numbers +syn match perlNumber "\<\%(0\%(x\x[[:xdigit:]_]*\|b[01][01_]*\|\o[0-7_]*\|\)\|[1-9][[:digit:]_]*\)\>" +syn match perlFloat "\<\d[[:digit:]_]*[eE][\-+]\=\d\+" +syn match perlFloat "\<\d[[:digit:]_]*\.[[:digit:]_]*\%([eE][\-+]\=\d\+\)\=" +syn match perlFloat "\.[[:digit:]][[:digit:]_]*\%([eE][\-+]\=\d\+\)\=" + +syn match perlString "\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV +syn match perlVStringV "\+ extend contained contains=perlAnglesSQ,@perlInterpSQ keepend + +syn region perlParensDQ start=+(+ end=+)+ extend contained contains=perlParensDQ,@perlInterpDQ keepend +syn region perlBracketsDQ start=+\[+ end=+\]+ extend contained contains=perlBracketsDQ,@perlInterpDQ keepend +syn region perlBracesDQ start=+{+ end=+}+ extend contained contains=perlBracesDQ,@perlInterpDQ keepend +syn region perlAnglesDQ start=+<+ end=+>+ extend contained contains=perlAnglesDQ,@perlInterpDQ keepend + + +" Simple version of searches and matches +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]'([{<#]\)+ end=+\z1[msixpodualgc]*+ contains=@perlInterpMatch keepend extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@ and m[] which allows for comments and extra whitespace in the pattern +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@[msixpodualgc]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend +syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[msixpodualgcer]*+ contained contains=@perlInterpSQ keepend extend + +" Translations +" perlMatch is the first part, perlTranslation* is the second, translator part. +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@[cdsr]*+ contains=perlAnglesSQ contained + + +" Strings and q, qq, qw and qr expressions + +syn region perlStringUnexpanded matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ keepend extend +syn region perlString matchgroup=perlStringStartEnd start=+"+ end=+"+ contains=@perlInterpDQ keepend extend +syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend extend +syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ keepend extend + +syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpDQ keepend extend +syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpDQ,perlAnglesDQ keepend extend + +syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ keepend extend + +syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<'/]\)+ end=+\z1[imosx]*+ contains=@perlInterpMatch keepend extend +syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@ and qr[] which allows for comments and extra whitespace in the pattern +syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@[imosx]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend extend +syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\zs\_[^)]\+" contained +syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError +syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype,perlComment + +syn match perlFunction +\\_s*+ nextgroup=perlSubName + +if !exists("perl_no_scope_in_variables") + syn match perlFunctionPRef "\h\w*::" contained + syn match perlFunctionName "\h\w*[^:]" contained +else + syn match perlFunctionName "\h[[:alnum:]_:]*" contained +endif + +" The => operator forces a bareword to the left of it to be interpreted as +" a string +syn match perlString "\I\@\)\@=" + +" All other # are comments, except ^#! +syn match perlComment "#.*" contains=perlTodo,@Spell extend +syn match perlSharpBang "^#!.*" + +" Formats +syn region perlFormat matchgroup=perlStatementIOFunc start="^\s*\~]\+\%(\.\.\.\)\=" contained +syn match perlFormatField "[@^]#[#.]*" contained +syn match perlFormatField "@\*" contained +syn match perlFormatField "@[^A-Za-z_|<>~#*]"me=e-1 contained +syn match perlFormatField "@$" contained + +" __END__ and __DATA__ clauses +if exists("perl_fold") + syntax region perlDATA start="^__DATA__$" skip="." end="." fold + syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA fold +else + syntax region perlDATA start="^__DATA__$" skip="." end="." + syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA +endif + +" +" Folding + +if exists("perl_fold") + " Note: this bit must come before the actual highlighting of the "package" + " keyword, otherwise this will screw up Pod lines that match /^package/ + if !exists("perl_nofold_packages") + syn region perlPackageFold start="^package \S\+;\s*\%(#.*\)\=$" end="^1;\=\s*\%(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend + endif + if !exists("perl_nofold_subs") + if exists("perl_fold_anonymous_subs") && perl_fold_anonymous_subs + syn region perlSubFold start="\[^\n;]*{" end="}" transparent fold keepend extend + syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\)\>\s*{" end="}" transparent fold keepend + else + syn region perlSubFold start="^\z(\s*\)\.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend + syn region perlSubFold start="^\z(\s*\)\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend + endif + endif + + if exists("perl_fold_blocks") + syn region perlBlockFold start="^\z(\s*\)\%(if\|elsif\|unless\|for\|while\|until\|given\)\s*(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" start="^\z(\s*\)foreach\s*\%(\%(my\|our\)\=\s*\S\+\s*\)\=(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend + syn region perlBlockFold start="^\z(\s*\)\%(do\|else\)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend + endif + + setlocal foldmethod=syntax + syn sync fromstart +else + " fromstart above seems to set minlines even if perl_fold is not set. + syn sync minlines=0 +endif + +command -nargs=+ HiLink hi def link + +" NOTE: If you're linking new highlight groups to perlString, please also put +" them into b:match_skip in ftplugin/perl.vim. + +" The default highlighting. +HiLink perlSharpBang PreProc +HiLink perlControl PreProc +HiLink perlInclude Include +HiLink perlSpecial Special +HiLink perlString String +HiLink perlCharacter Character +HiLink perlNumber Number +HiLink perlFloat Float +HiLink perlType Type +HiLink perlIdentifier Identifier +HiLink perlLabel Label +HiLink perlStatement Statement +HiLink perlConditional Conditional +HiLink perlRepeat Repeat +HiLink perlOperator Operator +HiLink perlFunction Keyword +HiLink perlSubName Function +HiLink perlSubPrototype Type +HiLink perlSubAttributes PreProc +HiLink perlSubAttributesCont perlSubAttributes +HiLink perlComment Comment +HiLink perlTodo Todo +if exists("perl_string_as_statement") + HiLink perlStringStartEnd perlStatement +else + HiLink perlStringStartEnd perlString +endif +HiLink perlVStringV perlStringStartEnd +HiLink perlList perlStatement +HiLink perlMisc perlStatement +HiLink perlVarPlain perlIdentifier +HiLink perlVarPlain2 perlIdentifier +HiLink perlArrow perlIdentifier +HiLink perlFiledescRead perlIdentifier +HiLink perlFiledescStatement perlIdentifier +HiLink perlVarSimpleMember perlIdentifier +HiLink perlVarSimpleMemberName perlString +HiLink perlVarNotInMatches perlIdentifier +HiLink perlVarSlash perlIdentifier +HiLink perlQQ perlString +HiLink perlHereDoc perlString +HiLink perlStringUnexpanded perlString +HiLink perlSubstitutionSQ perlString +HiLink perlSubstitutionGQQ perlString +HiLink perlTranslationGQ perlString +HiLink perlMatch perlString +HiLink perlMatchStartEnd perlStatement +HiLink perlFormatName perlIdentifier +HiLink perlFormatField perlString +HiLink perlPackageDecl perlType +HiLink perlStorageClass perlType +HiLink perlPackageRef perlType +HiLink perlStatementPackage perlStatement +HiLink perlStatementStorage perlStatement +HiLink perlStatementControl perlStatement +HiLink perlStatementScalar perlStatement +HiLink perlStatementRegexp perlStatement +HiLink perlStatementNumeric perlStatement +HiLink perlStatementList perlStatement +HiLink perlStatementHash perlStatement +HiLink perlStatementIOfunc perlStatement +HiLink perlStatementFiledesc perlStatement +HiLink perlStatementVector perlStatement +HiLink perlStatementFiles perlStatement +HiLink perlStatementFlow perlStatement +HiLink perlStatementInclude perlStatement +HiLink perlStatementProc perlStatement +HiLink perlStatementSocket perlStatement +HiLink perlStatementIPC perlStatement +HiLink perlStatementNetwork perlStatement +HiLink perlStatementPword perlStatement +HiLink perlStatementTime perlStatement +HiLink perlStatementMisc perlStatement +HiLink perlStatementIndirObj perlStatement +HiLink perlFunctionName perlIdentifier +HiLink perlMethod perlIdentifier +HiLink perlFunctionPRef perlType +HiLink perlPOD perlComment +HiLink perlShellCommand perlString +HiLink perlSpecialAscii perlSpecial +HiLink perlSpecialDollar perlSpecial +HiLink perlSpecialString perlSpecial +HiLink perlSpecialStringU perlSpecial +HiLink perlSpecialMatch perlSpecial +HiLink perlDATA perlComment + +" NOTE: Due to a bug in Vim (or more likely, a misunderstanding on my part), +" I had to remove the transparent property from the following regions +" in order to get them to highlight correctly. Feel free to remove +" these and reinstate the transparent property if you know how. +HiLink perlParensSQ perlString +HiLink perlBracketsSQ perlString +HiLink perlBracesSQ perlString +HiLink perlAnglesSQ perlString + +HiLink perlParensDQ perlString +HiLink perlBracketsDQ perlString +HiLink perlBracesDQ perlString +HiLink perlAnglesDQ perlString + +HiLink perlSpecialStringU2 perlString + +" Possible errors +HiLink perlNotEmptyLine Error +HiLink perlElseIfError Error +HiLink perlSubPrototypeError Error +HiLink perlSubError Error + +delcommand HiLink + +" Syncing to speed up processing +" +if !exists("perl_no_sync_on_sub") + syn sync match perlSync grouphere NONE "^\s*\" + syn sync match perlSync grouphere NONE "^}" +endif + +if !exists("perl_no_sync_on_global_var") + syn sync match perlSync grouphere NONE "^$\I[[:alnum:]_:]+\s*=\s*{" + syn sync match perlSync grouphere NONE "^[@%]\I[[:alnum:]_:]+\s*=\s*(" +endif + +if exists("perl_sync_dist") + execute "syn sync maxlines=" . perl_sync_dist +else + syn sync maxlines=100 +endif + +syn sync match perlSyncPOD grouphere perlPOD "^=pod" +syn sync match perlSyncPOD grouphere perlPOD "^=head" +syn sync match perlSyncPOD grouphere perlPOD "^=item" +syn sync match perlSyncPOD grouphere NONE "^=cut" + +let b:current_syntax = "perl" + +if exists('®expengine') + let ®expengine=s:regexpengine + unlet s:regexpengine +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" XXX Change to sts=4:sw=4 +" vim:ts=8:sts=2:sw=2:expandtab:ft=vim diff --git a/share/vim/vim74/syntax/perl6.vim b/share/vim/vim74/syntax/perl6.vim new file mode 100644 index 00000000..3d82ced8 --- /dev/null +++ b/share/vim/vim74/syntax/perl6.vim @@ -0,0 +1,2255 @@ +" Vim syntax file +" Language: Perl 6 +" Maintainer: vim-perl +" Homepage: http://github.com/vim-perl/vim-perl/tree/master +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change: 2013-07-21 + +" Contributors: Luke Palmer +" Moritz Lenz +" Hinrik Örn Sigurðsson +" +" This is a big undertaking. Perl 6 is the sort of language that only Perl +" can parse. But I'll do my best to get vim to. +" +" You can associate the extension ".pl" with the filetype "perl6" by setting +" autocmd BufNewFile,BufRead *.pl setf perl6 +" in your ~/.vimrc. But that will infringe on Perl 5, so you might want to +" put a modeline near the beginning or end of your Perl 6 files instead: +" # vim: filetype=perl6 + +" TODO: +" * Deal with s:Perl5// +" * m:s// is a match, not a substitution +" * Make these highlight as strings, not operators: +" <==> <=:=> <===> <=~> <« »> «>» «<» +" * Allow more keywords to match as function calls(leave() is export(), etc) +" * Optimization: use nextgroup instead of lookaround (:help syn-nextgroup) +" * Fix s''' substitutions being matched as package names +" * Match s/// and m/// better, so things like "$s/" won't match +" * Add more support for folding (:help syn-fold) +" * Add more syntax syncing hooks (:help syn-sync) +" * Q//: +" :to, :heredoc +" interpolate \q:s{$scalar} (though the spec isn't very clear on it) +" +" Impossible TODO?: +" * Unspace +" * Unicode bracketing characters for quoting (there are so many) +" * Various tricks depending on context. I.e. we can't know when Perl +" expects «*» to be a string or a hyperoperator. The latter is presumably +" more common, so that's what we assume. +" * Selective highlighting of Pod formatting codes with the :allow option +" * Arbitrary number, order, and negation of adverbs to Q//, q//, qq//. +" Currently only the first adverb is considered significant. Anything +" more would require an exponential amount of regexes, making this +" already slow syntax file even slower. +" +" If you want to have Pir code inside Q:PIR// strings highlighted, do: +" let perl6_embedded_pir=1 +" +" The above requires pir.vim, which you can find in Parrot's repository: +" https://svn.parrot.org/parrot/trunk/editor/ +" +" Some less than crucial things have been made optional to speed things up. +" Look at the comments near the if/else branches in this file to see exactly +" which features are affected. "perl6_extended_all" enables everything. +" +" The defaults are: +" +" unlet perl6_extended_comments +" unlet perl6_extended_q +" unlet perl6_extended_all + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" identifiers +syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*" + +" This is used in the for loops below +" Don't use the "syn keyword" construct because that always has higher +" priority than matches/regions, so the words can't be autoquoted with +" the "=>" and "p5=>" operators. All the lookaround stuff is to make sure +" we don't match them as part of some other identifier. +let s:before_keyword = " display \"\\%(\\k\\|\\K\\@<=[-']\\)\\@.;\\]" +syn match p6Operator display "\%(:\@\)" +" "i" requires a digit to the left, and no keyword char to the right +syn match p6Operator display "\d\@<=i\k\@!" +" index overloading +syn match p6Operator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)" + +" all infix operators except nonassocative ones +let s:infix_a = [ + \ "div % mod +& +< +> \\~& ?& \\~< \\~> +| +\\^ \\~| \\~\\^ ?| ?\\^ xx x", + \ "\\~ && & also <== ==> <<== ==>> == != < <= > >= \\~\\~ eq ne lt le gt", + \ "ge =:= === eqv before after \\^\\^ min max \\^ff ff\\^ \\^ff\\^", + \ "\\^fff fff\\^ \\^fff\\^ fff ff ::= := \\.= => , : p5=> Z minmax", + \ "\\.\\.\\. and andthen or orelse xor \\^ += -= /= \\*= \\~= //= ||=", + \ "+ - \\*\\* \\* // / \\~ || |", +\ ] +" nonassociative infix operators +let s:infix_n = "but does <=> leg cmp \\.\\. \\.\\.\\^\\^ \\^\\.\\. \\^\\.\\.\\^" + +let s:infix_a_long = join(s:infix_a, " ") +let s:infix_a_words = split(s:infix_a_long) +let s:infix_a_pattern = join(s:infix_a_words, "\\|") + +let s:infix_n_words = split(s:infix_n) +let s:infix_n_pattern = join(s:infix_n_words, "\\|") + +let s:both = [s:infix_a_pattern, s:infix_n_pattern] +let s:infix = join(s:both, "\\|") + +let s:infix_assoc = "!\\?\\%(" . s:infix_a_pattern . "\\)" +let s:infix = "!\\?\\%(" . s:infix . "\\)" + +unlet s:infix_a s:infix_a_long s:infix_a_words s:infix_a_pattern +unlet s:infix_n s:infix_n_pattern s:both + +" [+] reduce +exec "syn match p6ReduceOp display \"\\k\\@" + +" does is a type constraint sometimes +syn match p6TypeConstraint display "does\%(\s*\%(\k\|[-']\K\@=\)\)\@=" + +" int is a type sometimes +syn match p6Type display "\\%(\s*(\|\s\+\d\)\@!" + +" these Routine names are also Properties, if preceded by "is" +syn match p6Property display "\%(is\s\+\)\@<=\%(signature\|context\|also\|shape\)" + +" The sigil in ::*Package +syn match p6PackageTwigil display "\%(::\)\@<=\*" + +" $ +syn region p6MatchVarSigil + \ matchgroup=p6Variable + \ start="\$\%(<<\@!\)\@=" + \ end=">\@<=" + \ contains=p6MatchVar + +syn region p6MatchVar + \ matchgroup=p6Twigil + \ start="<" + \ end=">" + \ contained + +" Contextualizers +syn match p6Context display "\<\%(item\|list\|slice\|hash\)\>" +syn match p6Context display "\%(\$\|@\|%\|&\|@@\)(\@=" + +" the "$" placeholder in "$var1, $, var2 = @list" +syn match p6Placeholder display "\%(,\s*\)\@<=\$\%(\K\|\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" + \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" + \ end="\z1\zs" + \ contained + \ contains=TOP + \ keepend + +syn region p6InterpArray + \ matchgroup=p6Context + \ start="@\ze()\@!" + \ start="@@\ze()\@!" + \ skip="([^)]*)" + \ end=")\zs" + \ contained + \ contains=TOP + +syn region p6InterpHash + \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" + \ end="\z1\zs" + \ contained + \ contains=TOP + \ keepend + +syn region p6InterpHash + \ matchgroup=p6Context + \ start="%\ze()\@!" + \ skip="([^)]*)" + \ end=")\zs" + \ contained + \ contains=TOP + +syn region p6InterpFunction + \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" + \ end="\z1\zs" + \ contained + \ contains=TOP + \ keepend + +syn region p6InterpFunction + \ matchgroup=p6Context + \ start="&\ze()\@!" + \ skip="([^)]*)" + \ end=")\zs" + \ contained + \ contains=TOP + +syn region p6InterpClosure + \ start="\\\@" contained +syn match p6EscCloseFrench display "\\»" contained +syn match p6EscBackTick display "\\`" contained +syn match p6EscForwardSlash display "\\/" contained +syn match p6EscVerticalBar display "\\|" contained +syn match p6EscExclamation display "\\!" contained +syn match p6EscComma display "\\," contained +syn match p6EscDollar display "\\\$" contained +syn match p6EscCloseCurly display "\\}" contained +syn match p6EscCloseBracket display "\\\]" contained + +" misc escapes +syn match p6EscOctOld display "\\\d\{1,3}" contained +syn match p6EscNull display "\\0\d\@!" contained +syn match p6EscCodePoint display "\%(\\c\)\@<=\%(\d\|\S\|\[\)\@=" contained nextgroup=p6CodePoint +syn match p6EscHex display "\%(\\x\)\@<=\%(\x\|\[\)\@=" contained nextgroup=p6HexSequence +syn match p6EscOct display "\%(\\o\)\@<=\%(\o\|\[\)\@=" contained nextgroup=p6OctSequence +syn match p6EscQQ display "\\qq" contained nextgroup=p6QQSequence +syn match p6EscOpenCurly display "\\{" contained +syn match p6EscHash display "\\#" contained +syn match p6EscBackSlash display "\\\\" contained + +syn region p6QQSequence + \ matchgroup=p6Escape + \ start="\[" + \ skip="\[[^\]]*]" + \ end="]" + \ contained + \ transparent + \ contains=@p6Interp_qq + +syn match p6CodePoint display "\%(\d\+\|\S\)" contained +syn region p6CodePoint + \ matchgroup=p6Escape + \ start="\[" + \ end="]" + \ contained + +syn match p6HexSequence display "\x\+" contained +syn region p6HexSequence + \ matchgroup=p6Escape + \ start="\[" + \ end="]" + \ contained + +syn match p6OctSequence display "\o\+" contained +syn region p6OctSequence + \ matchgroup=p6Escape + \ start="\[" + \ end="]" + \ contained + +" matches :key, :!key, :$var, :key, etc +" Since we don't know in advance how the adverb ends, we use a trick. +" Consume nothing with the start pattern (\ze at the beginning), +" while capturing the whole adverb into \z1 and then putting it before +" the match start (\zs) of the end pattern. +syn region p6Adverb + \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)" + \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@ +" FIXME: not sure how to distinguish this from the "less than" operator +" in all cases. For now, it matches if any of the following is true: +" +" * There is whitespace missing on either side of the "<", since +" people tend to put spaces around "less than" +" * It comes after "enum", "for", "any", "all", or "none" +" * It's the first or last thing on a line (ignoring whitespace) +" * It's preceded by "= " +" +" It never matches when: +" +" * Preceded by [<+~=] (e.g. <>, =<$foo>) +" * Followed by [-=] (e.g. <--, <=, <==) +syn region p6StringAngle + \ matchgroup=p6Quote + \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" + \ start="\%(\s\|[<+~=]\)\@\|[-=]\{1,2}>\@!\)\@!" + \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" + \ start="\%(^\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" + \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" + \ skip="\\\@" + \ end=">" + \ contains=p6InnerAnglesOne,p6EscBackSlash,p6EscCloseAngle + +syn region p6InnerAnglesOne + \ matchgroup=p6StringAngle + \ start="<" + \ skip="\\\@" + \ end=">" + \ transparent + \ contained + \ contains=p6InnerAnglesOne + +" <> +syn region p6StringAngles + \ matchgroup=p6Quote + \ start="<<=\@!" + \ skip="\\\@" + \ end=">>" + \ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ + +syn region p6InnerAnglesTwo + \ matchgroup=p6StringAngles + \ start="<<" + \ skip="\\\@" + \ end=">>" + \ transparent + \ contained + \ contains=p6InnerAnglesTwo + +" «words» +syn region p6StringFrench + \ matchgroup=p6Quote + \ start="«" + \ skip="\\\@" nextgroup=p6QPairs skipwhite skipempty +syn match p6QPairs contained transparent skipwhite skipempty nextgroup=p6StringQ,p6StringQ_PIR "\%(\_s*:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)*" + +if exists("perl6_embedded_pir") + syn include @p6PIR syntax/pir.vim +endif + +" hardcoded set of delimiters +let s:delims = [ + \ ["\\\"", "\\\"", "p6EscDoubleQuote", "\\\\\\@", "p6EscCloseAngle", "\\%(\\\\\\@\\|<[^>]*>\\)"], + \ ["«", "»", "p6EscCloseFrench", "\\%(\\\\\\@>", "p6EscCloseAngle", "\\%(\\\\\\@>\\|<<\\%([^>]\\|>>\\@!\\)*>>\\)"]) + call add(s:delims, ["\\s\\@<=<<<", ">>>", "p6EscCloseAngle", "\\%(\\\\\\@>>\\|<<<\\%([^>]\\|>\\%(>>\\)\\@!\\)*>>>\\)"]) +endif + +if !exists("perl6_extended_q") && !exists("perl6_extended_all") + " simple version, no special highlighting within the string + for [start_delim, end_delim, end_group, skip] in s:delims + exec "syn region p6StringQ matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=".end_group." contained" + endfor + + if exists("perl6_embedded_pir") + " highlight embedded PIR code + for [start_delim, end_delim, end_group, skip] in s:delims + exec "syn region p6StringQ_PIR matchgroup=p6Quote start=\"\\%(Q\\s*:PIR\\s*\\)\\@<=".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6PIR,".end_group." contained" + endfor + endif +else + let s:before = "syn region p6StringQ matchgroup=p6Quote start=\"\\%(" + let s:after = "\\%(\\_s*:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\?\\)*\\_s*\\)\\@<=" + + let s:adverbs = [ + \ ["s", "scalar"], + \ ["a", "array"], + \ ["h", "hash"], + \ ["f", "function"], + \ ["c", "closure"], + \ ["b", "backslash"], + \ ["w", "words"], + \ ["ww", "quotewords"], + \ ["x", "exec"], + \ ] + + " these can't be conjoined with q and qq (e.g. as qqq and qqqq) + let s:q_adverbs = [ + \ ["q", "single"], + \ ["qq", "double"], + \ ] + + for [start_delim, end_delim, end_group, skip] in s:delims + " Q, q, and qq with any number of (ignored) adverbs + exec s:before ."Q". s:after .start_delim."\" end=\"". end_delim ."\""." contained" + exec s:before ."q". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q"." contained" + exec s:before ."qq". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq"." contained" + + for [short, long] in s:adverbs + " Qs, qs, qqs, Qa, qa, qqa, etc, with ignored adverbs + exec s:before ."Q".short. s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" + exec s:before ."q".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" + exec s:before ."qq".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" + + " Q, q, and qq, with one significant adverb + exec s:before ."Q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" + for [q_short, q_long] in s:q_adverbs + exec s:before ."Q\\s*:\\%(".q_short."\\|".q_long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".q_long." contained" + endfor + exec s:before ."q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" + exec s:before ."qq\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" + + for [short2, long2] in s:adverbs + " Qs, qs, qqs, Qa, qa, qqa, etc, with one significant adverb + exec s:before ."Q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".long2." contained" + for [q_short2, q_long2] in s:q_adverbs + exec s:before ."Q".short."\\s*:\\%(".q_short2."\\|".q_long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".q_long2." contained" + endfor + exec s:before ."q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long.",@p6Interp_".long2." contained" + exec s:before ."qq".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long.",@p6Interp_".long2." contained" + endfor + endfor + endfor + unlet s:before s:after s:adverbs s:q_adverbs +endif +unlet s:delims + +" Match these so something else above can't. E.g. the "q" in "role q { }" +" should not be considered a string +syn match p6Normal display "\%(\<\%(role\|grammar\|slang\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" + +" :key +syn match p6Operator display ":\@ and p5=> autoquoting +syn match p6StringP5Auto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+p5=>" +syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\%(p5\)\@" +syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+=>" +syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*p5\ze=>" + +" Hyperoperators. Needs to come after the quoting operators (<>, «», etc) +exec "syn match p6HyperOp display \"»" .s:infix."»\\?\"" +exec "syn match p6HyperOp display \"«\\?".s:infix."«\"" +exec "syn match p6HyperOp display \"»" .s:infix."«\"" +exec "syn match p6HyperOp display \"«" .s:infix. "»\"" + +exec "syn match p6HyperOp display \">>" .s:infix."\\%(>>\\)\\?\"" +exec "syn match p6HyperOp display \"\\%(<<\\)\\?".s:infix."<<\"" +exec "syn match p6HyperOp display \">>" .s:infix."<<\"" +exec "syn match p6HyperOp display \"<<" .s:infix.">>\"" +unlet s:infix + +" Regexes and grammars + +syn match p6RegexName display "\%(\<\%(regex\|rule\|token\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" nextgroup=p6RegexBlockCrap skipwhite skipempty +syn match p6RegexBlockCrap "[^{]*" nextgroup=p6RegexBlock skipwhite skipempty transparent contained + +syn region p6RegexBlock + \ matchgroup=p6Normal + \ start="{" + \ end="}" + \ contained + \ contains=@p6Regexen,@p6Variables + +" Perl 6 regex bits + +syn cluster p6Regexen + \ add=p6RxMeta + \ add=p6RxEscape + \ add=p6EscHex + \ add=p6EscOct + \ add=p6EscNull + \ add=p6RxAnchor + \ add=p6RxCapture + \ add=p6RxGroup + \ add=p6RxAlternation + \ add=p6RxAdverb + \ add=p6RxAdverbArg + \ add=p6RxStorage + \ add=p6RxAssertion + \ add=p6RxQuoteWords + \ add=p6RxClosure + \ add=p6RxStringSQ + \ add=p6RxStringDQ + \ add=p6Comment + +syn match p6RxMeta display contained ".\%(\k\|\s\)\@" + \ contained + \ contains=@p6Regexen,@p6Variables,p6RxCharClass,p6RxAssertCall +syn region p6RxAssertCall + \ matchgroup=p6Normal + \ start="\%(::\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\@<=(\@=" + \ end=")\@<=" + \ contained + \ contains=TOP +syn region p6RxCharClass + \ matchgroup=p6StringSpecial2 + \ start="\%(<[-!+?]\?\)\@<=\[" + \ skip="\\]" + \ end="]" + \ contained + \ contains=p6RxRange,p6RxEscape,p6EscHex,p6EscOct,p6EscNull +syn region p6RxQuoteWords + \ matchgroup=p6StringSpecial2 + \ start="< " + \ end=">" + \ contained +syn region p6RxAdverb + \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\)" + \ end="\z1\zs" + \ contained + \ contains=TOP + \ keepend +syn region p6RxAdverbArg + \ start="\%(:!\?\K\%(\k\|[-']\K\@=\)*\)\@<=(" + \ skip="([^)]*)" + \ end=")" + \ contained + \ contains=TOP +syn region p6RxStorage + \ matchgroup=p6Operator + \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@=" + \ end="$" + \ contains=TOP + \ contained + +" Perl 5 regex bits + +syn cluster p6RegexP5Base + \ add=p6RxP5Escape + \ add=p6RxP5Oct + \ add=p6RxP5Hex + \ add=p6RxP5EscMeta + \ add=p6RxP5CodePoint + \ add=p6RxP5Prop + +" normal regex stuff +syn cluster p6RegexP5 + \ add=@p6RegexP5Base + \ add=p6RxP5Quantifier + \ add=p6RxP5Meta + \ add=p6RxP5QuoteMeta + \ add=p6RxP5ParenMod + \ add=p6RxP5Verb + \ add=p6RxP5Count + \ add=p6RxP5Named + \ add=p6RxP5ReadRef + \ add=p6RxP5WriteRef + \ add=p6RxP5CharClass + \ add=p6RxP5Anchor + +" inside character classes +syn cluster p6RegexP5Class + \ add=@p6RegexP5Base + \ add=p6RxP5Posix + \ add=p6RxP5Range + +syn match p6RxP5Escape display contained "\\\S" +syn match p6RxP5CodePoint display contained "\\c\S\@=" nextgroup=p6RxP5CPId +syn match p6RxP5CPId display contained "\S" +syn match p6RxP5Oct display contained "\\\%(\o\{1,3}\)\@=" nextgroup=p6RxP5OctSeq +syn match p6RxP5OctSeq display contained "\o\{1,3}" +syn match p6RxP5Anchor display contained "[\^$]" +syn match p6RxP5Hex display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=p6RxP5HexSeq +syn match p6RxP5HexSeq display contained "\x\{1,2}" +syn region p6RxP5HexSeq + \ matchgroup=p6RxP5Escape + \ start="{" + \ end="}" + \ contained +syn region p6RxP5Named + \ matchgroup=p6RxP5Escape + \ start="\%(\\N\)\@<={" + \ end="}" + \ contained +syn match p6RxP5Quantifier display contained "\%([+*]\|(\@" + \ contained +syn match p6RxP5WriteRef display contained "\\g\%(\d\|{\)\@=" nextgroup=p6RxP5WriteRefId +syn match p6RxP5WriteRefId display contained "\d\+" +syn region p6RxP5WriteRefId + \ matchgroup=p6RxP5Escape + \ start="{" + \ end="}" + \ contained +syn match p6RxP5Prop display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=p6RxP5PropId +syn match p6RxP5PropId display contained "\a" +syn region p6RxP5PropId + \ matchgroup=p6RxP5Escape + \ start="{" + \ end="}" + \ contained +syn match p6RxP5Meta display contained "[(|).]" +syn match p6RxP5ParenMod display contained "(\@<=?\@=" nextgroup=p6RxP5Mod,p6RxP5ModName,p6RxP5Code +syn match p6RxP5Mod display contained "?\%(<\?=\|<\?!\|[#:|]\)" +syn match p6RxP5Mod display contained "?-\?[impsx]\+" +syn match p6RxP5Mod display contained "?\%([-+]\?\d\+\|R\)" +syn match p6RxP5Mod display contained "?(DEFINE)" +syn match p6RxP5Mod display contained "?\%(&\|P[>=]\)" nextgroup=p6RxP5ModDef +syn match p6RxP5ModDef display contained "\h\w*" +syn region p6RxP5ModName + \ matchgroup=p6StringSpecial + \ start="?'" + \ end="'" + \ contained +syn region p6RxP5ModName + \ matchgroup=p6StringSpecial + \ start="?P\?<" + \ end=">" + \ contained +syn region p6RxP5Code + \ matchgroup=p6StringSpecial + \ start="??\?{" + \ end="})\@=" + \ contained + \ contains=TOP +syn match p6RxP5EscMeta display contained "\\[?*.{}()[\]|\^$]" +syn match p6RxP5Count display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=p6RxP5CountId +syn region p6RxP5CountId + \ matchgroup=p6RxP5Escape + \ start="{" + \ end="}" + \ contained +syn match p6RxP5Verb display contained "(\@<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)" +syn region p6RxP5QuoteMeta + \ matchgroup=p6RxP5Escape + \ start="\\Q" + \ end="\\E" + \ contained + \ contains=@p6Variables,p6EscBackSlash +syn region p6RxP5CharClass + \ matchgroup=p6StringSpecial + \ start="\[\^\?" + \ skip="\\]" + \ end="]" + \ contained + \ contains=@p6RegexP5Class +syn region p6RxP5Posix + \ matchgroup=p6RxP5Escape + \ start="\[:" + \ end=":]" + \ contained +syn match p6RxP5Range display contained "-" + +" 'string' inside a regex +syn region p6RxStringSQ + \ matchgroup=p6Quote + \ start="'" + \ skip="\\\@, mm, rx +syn region p6Match + \ matchgroup=p6Quote + \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!>\@!" + \ skip="\\>" + \ end=">" + \ contains=@p6Regexen,@p6Variables + +" m«foo», mm«foo», rx«foo» +syn region p6Match + \ matchgroup=p6Quote + \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@ +syn region p6Match + \ matchgroup=p6Quote + \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!" + \ skip="\\>" + \ end=">" + \ contains=@p6Regexen,@p6Variables + +" s«foo» +syn region p6Match + \ matchgroup=p6Quote + \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@ +syn region p6Match + \ matchgroup=p6Quote + \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!" + \ skip="\\>" + \ end=">" + \ contains=@p6RegexP5,p6Variables + +" m:P5«» +syn region p6Match + \ matchgroup=p6Quote + \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@]*>" + \ end=">" + \ matchgroup=p6Error + \ start="^#<" + \ contains=p6Attention,p6Comment +syn region p6Comment + \ matchgroup=p6Comment + \ start="^\@]\|>>\@!\)*>>" + \ end=">>" + \ matchgroup=p6Error + \ start="^#<<" + \ contains=p6Attention,p6Comment + syn region p6Comment + \ matchgroup=p6Comment + \ start="^\@]\|>\%(>>\)\@!\)*>>>" + \ end=">>>" + \ matchgroup=p6Error + \ start="^#<<<" + \ contains=p6Attention,p6Comment + + syn region p6Comment + \ matchgroup=p6Comment + \ start="^\@" + \ end="^\ze\%(\s*$\|=\K\)" + \ contains=p6PodAbbrCodeType + \ keepend + +syn region p6PodAbbrCodeType + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="^\ze\%(\s*$\|=\K\)" + \ contained + \ contains=p6PodName,p6PodAbbrCode + +syn region p6PodAbbrCode + \ start="^" + \ end="^\ze\%(\s*$\|=\K\)" + \ contained + +" Abbreviated blocks (everything is a comment) +syn region p6PodAbbrRegion + \ matchgroup=p6PodPrefix + \ start="^=\zecomment\>" + \ end="^\ze\%(\s*$\|=\K\)" + \ contains=p6PodAbbrCommentType + \ keepend + +syn region p6PodAbbrCommentType + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="^\ze\%(\s*$\|=\K\)" + \ contained + \ contains=p6PodComment,p6PodAbbrNoCode + +" Abbreviated blocks (implicit code allowed) +syn region p6PodAbbrRegion + \ matchgroup=p6PodPrefix + \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>" + \ end="^\ze\%(\s*$\|=\K\)" + \ contains=p6PodAbbrType + \ keepend + +syn region p6PodAbbrType + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="^\ze\%(\s*$\|=\K\)" + \ contained + \ contains=p6PodName,p6PodAbbr + +syn region p6PodAbbr + \ start="^" + \ end="^\ze\%(\s*$\|=\K\)" + \ contained + \ contains=@p6PodFormat,p6PodImplicitCode + +" Abbreviated block to end-of-file +syn region p6PodAbbrRegion + \ matchgroup=p6PodPrefix + \ start="^=\zeEND\>" + \ end="\%$" + \ contains=p6PodAbbrEOFType + \ keepend + +syn region p6PodAbbrEOFType + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="\%$" + \ contained + \ contains=p6PodName,p6PodAbbrEOF + +syn region p6PodAbbrEOF + \ start="^" + \ end="\%$" + \ contained + \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode + +" Directives +syn region p6PodDirectRegion + \ matchgroup=p6PodPrefix + \ start="^=\%(config\|use\)\>" + \ end="^\ze\%([^=]\|=\K\|\s*$\)" + \ contains=p6PodDirectArgRegion + \ keepend + +syn region p6PodDirectArgRegion + \ matchgroup=p6PodType + \ start="\S\+" + \ end="^\ze\%([^=]\|=\K\|\s*$\)" + \ contained + \ contains=p6PodDirectConfigRegion + +syn region p6PodDirectConfigRegion + \ start="" + \ end="^\ze\%([^=]\|=\K\|\s*$\)" + \ contained + \ contains=@p6PodConfig + +" =encoding is a special directive +syn region p6PodDirectRegion + \ matchgroup=p6PodPrefix + \ start="^=encoding\>" + \ end="^\ze\%([^=]\|=\K\|\s*$\)" + \ contains=p6PodEncodingArgRegion + \ keepend + +syn region p6PodEncodingArgRegion + \ matchgroup=p6PodName + \ start="\S\+" + \ end="^\ze\%([^=]\|=\K\|\s*$\)" + \ contained + +" Paragraph blocks (implicit code forbidden) +syn region p6PodParaRegion + \ matchgroup=p6PodPrefix + \ start="^=for\>" + \ end="^\ze\%(\s*$\|=\K\)" + \ contains=p6PodParaNoCodeTypeRegion + \ keepend + \ extend + +syn region p6PodParaNoCodeTypeRegion + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="^\ze\%(\s*$\|=\K\)" + \ contained + \ contains=p6PodParaNoCode,p6PodParaConfigRegion + +syn region p6PodParaConfigRegion + \ start="" + \ end="^\ze\%([^=]\|=\k\@\ze\s*code\>" + \ end="^\ze\%(\s*$\|=\K\)" + \ contains=p6PodParaCodeTypeRegion + \ keepend + \ extend + +syn region p6PodParaCodeTypeRegion + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="^\ze\%(\s*$\|=\K\)" + \ contained + \ contains=p6PodParaCode,p6PodParaConfigRegion + +syn region p6PodParaCode + \ start="^[^=]" + \ end="^\ze\%(\s*$\|=\K\)" + \ contained + +" Paragraph blocks (implicit code allowed) +syn region p6PodParaRegion + \ matchgroup=p6PodPrefix + \ start="^=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" + \ end="^\ze\%(\s*$\|=\K\)" + \ contains=p6PodParaTypeRegion + \ keepend + \ extend + +syn region p6PodParaTypeRegion + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="^\ze\%(\s*$\|=\K\)" + \ contained + \ contains=p6PodPara,p6PodParaConfigRegion + +syn region p6PodPara + \ start="^[^=]" + \ end="^\ze\%(\s*$\|=\K\)" + \ contained + \ contains=@p6PodFormat,p6PodImplicitCode + +" Paragraph block to end-of-file +syn region p6PodParaRegion + \ matchgroup=p6PodPrefix + \ start="^=for\>\ze\s\+END\>" + \ end="\%$" + \ contains=p6PodParaEOFTypeRegion + \ keepend + \ extend + +syn region p6PodParaEOFTypeRegion + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="\%$" + \ contained + \ contains=p6PodParaEOF,p6PodParaConfigRegion + +syn region p6PodParaEOF + \ start="^[^=]" + \ end="\%$" + \ contained + \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode + +" Delimited blocks (implicit code forbidden) +syn region p6PodDelimRegion + \ matchgroup=p6PodPrefix + \ start="^=begin\>" + \ end="^=end\>" + \ contains=p6PodDelimNoCodeTypeRegion + \ keepend + \ extend + +syn region p6PodDelimNoCodeTypeRegion + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="^\ze=end\>" + \ contained + \ contains=p6PodDelimNoCode,p6PodDelimConfigRegion + +syn region p6PodDelimConfigRegion + \ start="" + \ end="^\ze\%([^=]\|=\K\|\s*$\)" + \ contained + \ contains=@p6PodConfig + +syn region p6PodDelimNoCode + \ start="^" + \ end="^\ze=end\>" + \ contained + \ contains=@p6PodNestedBlocks,@p6PodFormat + +" Delimited blocks (everything is code) +syn region p6PodDelimRegion + \ matchgroup=p6PodPrefix + \ start="^=begin\>\ze\s*code\>" + \ end="^=end\>" + \ contains=p6PodDelimCodeTypeRegion + \ keepend + \ extend + +syn region p6PodDelimCodeTypeRegion + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="^\ze=end\>" + \ contained + \ contains=p6PodDelimCode,p6PodDelimConfigRegion + +syn region p6PodDelimCode + \ start="^" + \ end="^\ze=end\>" + \ contained + \ contains=@p6PodNestedBlocks + +" Delimited blocks (implicit code allowed) +syn region p6PodDelimRegion + \ matchgroup=p6PodPrefix + \ start="^=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" + \ end="^=end\>" + \ contains=p6PodDelimTypeRegion + \ keepend + \ extend + +syn region p6PodDelimTypeRegion + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="^\ze=end\>" + \ contained + \ contains=p6PodDelim,p6PodDelimConfigRegion + +syn region p6PodDelim + \ start="^" + \ end="^\ze=end\>" + \ contained + \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode + +" Delimited block to end-of-file +syn region p6PodDelimRegion + \ matchgroup=p6PodPrefix + \ start="^=begin\>\ze\s\+END\>" + \ end="\%$" + \ contains=p6PodDelimEOFTypeRegion + \ extend + +syn region p6PodDelimEOFTypeRegion + \ matchgroup=p6PodType + \ start="\K\k*" + \ end="\%$" + \ contained + \ contains=p6PodDelimEOF,p6PodDelimConfigRegion + +syn region p6PodDelimEOF + \ start="^" + \ end="\%$" + \ contained + \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode + +syn cluster p6PodConfig + \ add=p6PodConfigOperator + \ add=p6PodExtraConfig + \ add=p6StringAuto + \ add=p6PodAutoQuote + \ add=p6StringSQ + +syn region p6PodParens + \ start="(" + \ end=")" + \ contained + \ contains=p6Number,p6StringSQ + +syn match p6PodAutoQuote display contained "=>" +syn match p6PodConfigOperator display contained ":!\?" nextgroup=p6PodConfigOption +syn match p6PodConfigOption display contained "[^[:space:](<]\+" nextgroup=p6PodParens,p6StringAngle +syn match p6PodExtraConfig display contained "^=" +syn match p6PodVerticalBar display contained "|" +syn match p6PodColon display contained ":" +syn match p6PodSemicolon display contained ";" +syn match p6PodComma display contained "," +syn match p6PodImplicitCode display contained "^\s.*" + +syn region p6PodDelimEndRegion + \ matchgroup=p6PodType + \ start="\%(^=end\>\)\@<=" + \ end="\K\k*" + +" These may appear inside delimited blocks +syn cluster p6PodNestedBlocks + \ add=p6PodAbbrRegion + \ add=p6PodDirectRegion + \ add=p6PodParaRegion + \ add=p6PodDelimRegion + \ add=p6PodDelimEndRegion + +" Pod formatting codes + +syn cluster p6PodFormat + \ add=p6PodFormatOne + \ add=p6PodFormatTwo + \ add=p6PodFormatThree + \ add=p6PodFormatFrench + +" Balanced angles found inside formatting codes. Ensures proper nesting. + +syn region p6PodFormatAnglesOne + \ matchgroup=p6PodFormat + \ start="<" + \ skip="<[^>]*>" + \ end=">" + \ transparent + \ contained + \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne + +syn region p6PodFormatAnglesTwo + \ matchgroup=p6PodFormat + \ start="<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ transparent + \ contained + \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo + +syn region p6PodFormatAnglesThree + \ matchgroup=p6PodFormat + \ start="<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ transparent + \ contained + \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree + +syn region p6PodFormatAnglesFrench + \ matchgroup=p6PodFormat + \ start="«" + \ skip="«[^»]*»" + \ end="»" + \ transparent + \ contained + \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree + +" All formatting codes + +syn region p6PodFormatOne + \ matchgroup=p6PodFormatCode + \ start="\u<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne + +syn region p6PodFormatTwo + \ matchgroup=p6PodFormatCode + \ start="\u<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo + +syn region p6PodFormatThree + \ matchgroup=p6PodFormatCode + \ start="\u<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree + +syn region p6PodFormatFrench + \ matchgroup=p6PodFormatCode + \ start="\u«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree + +" C<> and V<> don't allow nested formatting formatting codes + +syn region p6PodFormatOne + \ matchgroup=p6PodFormatCode + \ start="[CV]<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=p6PodFormatAnglesOne + +syn region p6PodFormatTwo + \ matchgroup=p6PodFormatCode + \ start="[CV]<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=p6PodFormatAnglesTwo + +syn region p6PodFormatThree + \ matchgroup=p6PodFormatCode + \ start="[CV]<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=p6PodFormatAnglesThree + +syn region p6PodFormatFrench + \ matchgroup=p6PodFormatCode + \ start="[CV]«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=p6PodFormatAnglesFrench + +" L<> can have a "|" separator + +syn region p6PodFormatOne + \ matchgroup=p6PodFormatCode + \ start="L<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar + +syn region p6PodFormatTwo + \ matchgroup=p6PodFormatCode + \ start="L<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar + +syn region p6PodFormatThree + \ matchgroup=p6PodFormatCode + \ start="L<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar + +syn region p6PodFormatFrench + \ matchgroup=p6PodFormatCode + \ start="L«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar + +" E<> can have a ";" separator + +syn region p6PodFormatOne + \ matchgroup=p6PodFormatCode + \ start="E<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodSemiColon + +syn region p6PodFormatTwo + \ matchgroup=p6PodFormatCode + \ start="E<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodSemiColon + +syn region p6PodFormatThree + \ matchgroup=p6PodFormatCode + \ start="E<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon + +syn region p6PodFormatFrench + \ matchgroup=p6PodFormatCode + \ start="E«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon + +" M<> can have a ":" separator + +syn region p6PodFormatOne + \ matchgroup=p6PodFormatCode + \ start="M<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodColon + +syn region p6PodFormatTwo + \ matchgroup=p6PodFormatCode + \ start="M<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodColon + +syn region p6PodFormatThree + \ matchgroup=p6PodFormatCode + \ start="M<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon + +syn region p6PodFormatFrench + \ matchgroup=p6PodFormatCode + \ start="M«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon + +" D<> can have "|" and ";" separators + +syn region p6PodFormatOne + \ matchgroup=p6PodFormatCode + \ start="D<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon + +syn region p6PodFormatTwo + \ matchgroup=p6PodFormatCode + \ start="D<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=p6PodFormatAngleTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon + +syn region p6PodFormatThree + \ matchgroup=p6PodFormatCode + \ start="D<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon + +syn region p6PodFormatFrench + \ matchgroup=p6PodFormatCode + \ start="D«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon + +" X<> can have "|", "," and ";" separators + +syn region p6PodFormatOne + \ matchgroup=p6PodFormatCode + \ start="X<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon,p6PodComma + +syn region p6PodFormatTwo + \ matchgroup=p6PodFormatCode + \ start="X<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon,p6PodComma + +syn region p6PodFormatThree + \ matchgroup=p6PodFormatCode + \ start="X<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma + +syn region p6PodFormatFrench + \ matchgroup=p6PodFormatCode + \ start="X«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_perl6_syntax_inits") + if version < 508 + let did_perl6_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink p6EscOctOld p6Error + HiLink p6PackageTwigil p6Twigil + HiLink p6StringAngle p6String + HiLink p6StringFrench p6String + HiLink p6StringAngles p6String + HiLink p6StringSQ p6String + HiLink p6StringDQ p6String + HiLink p6StringQ p6String + HiLink p6RxStringSQ p6String + HiLink p6RxStringDQ p6String + HiLink p6Substitution p6String + HiLink p6Transliteration p6String + HiLink p6StringAuto p6String + HiLink p6StringP5Auto p6String + HiLink p6Key p6String + HiLink p6Match p6String + HiLink p6RegexBlock p6String + HiLink p6RxP5CharClass p6String + HiLink p6RxP5QuoteMeta p6String + HiLink p6RxCharClass p6String + HiLink p6RxQuoteWords p6String + HiLink p6ReduceOp p6Operator + HiLink p6ReverseCrossOp p6Operator + HiLink p6HyperOp p6Operator + HiLink p6QuoteQ p6Operator + HiLink p6RxRange p6StringSpecial + HiLink p6RxAnchor p6StringSpecial + HiLink p6RxP5Anchor p6StringSpecial + HiLink p6CodePoint p6StringSpecial + HiLink p6RxMeta p6StringSpecial + HiLink p6RxP5Range p6StringSpecial + HiLink p6RxP5CPId p6StringSpecial + HiLink p6RxP5Posix p6StringSpecial + HiLink p6RxP5Mod p6StringSpecial + HiLink p6RxP5HexSeq p6StringSpecial + HiLink p6RxP5OctSeq p6StringSpecial + HiLink p6RxP5WriteRefId p6StringSpecial + HiLink p6HexSequence p6StringSpecial + HiLink p6OctSequence p6StringSpecial + HiLink p6RxP5Named p6StringSpecial + HiLink p6RxP5PropId p6StringSpecial + HiLink p6RxP5Quantifier p6StringSpecial + HiLink p6RxP5CountId p6StringSpecial + HiLink p6RxP5Verb p6StringSpecial + HiLink p6Escape p6StringSpecial2 + HiLink p6EscNull p6StringSpecial2 + HiLink p6EscHash p6StringSpecial2 + HiLink p6EscQQ p6StringSpecial2 + HiLink p6EscQuote p6StringSpecial2 + HiLink p6EscDoubleQuote p6StringSpecial2 + HiLink p6EscBackTick p6StringSpecial2 + HiLink p6EscForwardSlash p6StringSpecial2 + HiLink p6EscVerticalBar p6StringSpecial2 + HiLink p6EscExclamation p6StringSpecial2 + HiLink p6EscDollar p6StringSpecial2 + HiLink p6EscOpenCurly p6StringSpecial2 + HiLink p6EscCloseCurly p6StringSpecial2 + HiLink p6EscCloseBracket p6StringSpecial2 + HiLink p6EscCloseAngle p6StringSpecial2 + HiLink p6EscCloseFrench p6StringSpecial2 + HiLink p6EscBackSlash p6StringSpecial2 + HiLink p6RxEscape p6StringSpecial2 + HiLink p6RxCapture p6StringSpecial2 + HiLink p6RxAlternation p6StringSpecial2 + HiLink p6RxP5 p6StringSpecial2 + HiLink p6RxP5ReadRef p6StringSpecial2 + HiLink p6RxP5Oct p6StringSpecial2 + HiLink p6RxP5Hex p6StringSpecial2 + HiLink p6RxP5EscMeta p6StringSpecial2 + HiLink p6RxP5Meta p6StringSpecial2 + HiLink p6RxP5Escape p6StringSpecial2 + HiLink p6RxP5CodePoint p6StringSpecial2 + HiLink p6RxP5WriteRef p6StringSpecial2 + HiLink p6RxP5Prop p6StringSpecial2 + + HiLink p6Property Tag + HiLink p6Attention Todo + HiLink p6Type Type + HiLink p6Error Error + HiLink p6BlockLabel Label + HiLink p6Float Float + HiLink p6Normal Normal + HiLink p6Package Normal + HiLink p6PackageScope Normal + HiLink p6Number Number + HiLink p6VersionNum Number + HiLink p6String String + HiLink p6Repeat Repeat + HiLink p6Keyword Keyword + HiLink p6Pragma Keyword + HiLink p6Module Keyword + HiLink p6DeclareRoutine Keyword + HiLink p6VarStorage Special + HiLink p6FlowControl Special + HiLink p6NumberBase Special + HiLink p6Twigil Special + HiLink p6StringSpecial2 Special + HiLink p6VersionDot Special + HiLink p6Comment Comment + HiLink p6Include Include + HiLink p6Shebang PreProc + HiLink p6ClosureTrait PreProc + HiLink p6Routine Function + HiLink p6Operator Operator + HiLink p6Version Operator + HiLink p6Context Operator + HiLink p6Quote Delimiter + HiLink p6TypeConstraint PreCondit + HiLink p6Exception Exception + HiLink p6Placeholder Identifier + HiLink p6Variable Identifier + HiLink p6VarSlash Identifier + HiLink p6VarNum Identifier + HiLink p6VarExclam Identifier + HiLink p6VarMatch Identifier + HiLink p6VarName Identifier + HiLink p6MatchVar Identifier + HiLink p6RxP5ReadRefId Identifier + HiLink p6RxP5ModDef Identifier + HiLink p6RxP5ModName Identifier + HiLink p6Conditional Conditional + HiLink p6StringSpecial SpecialChar + + HiLink p6PodAbbr p6Pod + HiLink p6PodAbbrEOF p6Pod + HiLink p6PodAbbrNoCode p6Pod + HiLink p6PodAbbrCode p6PodCode + HiLink p6PodPara p6Pod + HiLink p6PodParaEOF p6Pod + HiLink p6PodParaNoCode p6Pod + HiLink p6PodParaCode p6PodCode + HiLink p6PodDelim p6Pod + HiLink p6PodDelimEOF p6Pod + HiLink p6PodDelimNoCode p6Pod + HiLink p6PodDelimCode p6PodCode + HiLink p6PodImplicitCode p6PodCode + HiLink p6PodExtraConfig p6PodPrefix + HiLink p6PodVerticalBar p6PodFormatCode + HiLink p6PodColon p6PodFormatCode + HiLink p6PodSemicolon p6PodFormatCode + HiLink p6PodComma p6PodFormatCode + HiLink p6PodFormatOne p6PodFormat + HiLink p6PodFormatTwo p6PodFormat + HiLink p6PodFormatThree p6PodFormat + HiLink p6PodFormatFrench p6PodFormat + + HiLink p6PodType Type + HiLink p6PodConfigOption String + HiLink p6PodCode PreProc + HiLink p6Pod Comment + HiLink p6PodComment Comment + HiLink p6PodAutoQuote Operator + HiLink p6PodConfigOperator Operator + HiLink p6PodPrefix Statement + HiLink p6PodName Identifier + HiLink p6PodFormatCode SpecialChar + HiLink p6PodFormat SpecialComment + + delcommand HiLink +endif + +" Syncing to speed up processing +"syn sync match p6SyncPod groupthere p6PodAbbrRegion "^=\K\k*\>" +"syn sync match p6SyncPod groupthere p6PodDirectRegion "^=\%(config\|use\|encoding\)\>" +"syn sync match p6SyncPod groupthere p6PodParaRegion "^=for\>" +"syn sync match p6SyncPod groupthere p6PodDelimRegion "^=begin\>" +"syn sync match p6SyncPod groupthere p6PodDelimEndRegion "^=end\>" + +" Let's just sync whole file, the other methods aren't reliable (or I don't +" know how to use them reliably) +syn sync fromstart + +setlocal foldmethod=syntax + +let b:current_syntax = "perl6" + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:ts=8:sts=4:sw=4:expandtab:ft=vim diff --git a/share/vim/vim74/syntax/pf.vim b/share/vim/vim74/syntax/pf.vim new file mode 100644 index 00000000..1a8f34bb --- /dev/null +++ b/share/vim/vim74/syntax/pf.vim @@ -0,0 +1,76 @@ +" pf syntax file +" Language: OpenBSD packet filter configuration (pf.conf) +" Original Author: Camiel Dobbelaar +" Maintainer: Lauri Tirkkonen +" Last Change: 2013 Apr 02 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +setlocal foldmethod=syntax +syn sync fromstart + +syn cluster pfNotLS contains=pfTodo,pfVarAssign +syn keyword pfCmd altq anchor antispoof binat nat pass +syn keyword pfCmd queue rdr scrub table set +syn keyword pfService auth bgp domain finger ftp http https ident +syn keyword pfService imap irc isakmp kerberos mail nameserver nfs +syn keyword pfService nntp ntp pop3 portmap pptp rpcbind rsync smtp +syn keyword pfService snmp snmptrap socks ssh sunrpc syslog telnet +syn keyword pfService tftp www +syn keyword pfTodo TODO XXX contained +syn keyword pfWildAddr all any +syn match pfCmd /block\s/ +syn match pfComment /#.*$/ contains=pfTodo +syn match pfCont /\\$/ +syn match pfErrClose /}/ +syn match pfIPv4 /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ +syn match pfIPv6 /[a-fA-F0-9:]*::[a-fA-F0-9:.]*/ +syn match pfIPv6 /[a-fA-F0-9:]\+:[a-fA-F0-9:]\+:[a-fA-F0-9:.]\+/ +syn match pfNetmask /\/\d\+/ +syn match pfNum /[a-zA-Z0-9_:.]\@/ +syn match pfVar /$[a-zA-Z][a-zA-Z0-9_]*/ +syn match pfVarAssign /^\s*[a-zA-Z][a-zA-Z0-9_]*\s*=/me=e-1 +syn region pfFold1 start=/^#\{1}>/ end=/^#\{1,3}>/me=s-1 transparent fold +syn region pfFold2 start=/^#\{2}>/ end=/^#\{2,3}>/me=s-1 transparent fold +syn region pfFold3 start=/^#\{3}>/ end=/^#\{3}>/me=s-1 transparent fold +syn region pfList start=/{/ end=/}/ transparent contains=ALLBUT,pfErrClose,@pfNotLS +syn region pfString start=/"/ end=/"/ transparent contains=ALLBUT,pfString,@pfNotLS +syn region pfString start=/'/ end=/'/ transparent contains=ALLBUT,pfString,@pfNotLS + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_c_syn_inits") + if version < 508 + let did_c_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink pfCmd Statement + HiLink pfComment Comment + HiLink pfCont Statement + HiLink pfErrClose Error + HiLink pfIPv4 Type + HiLink pfIPv6 Type + HiLink pfNetmask Constant + HiLink pfNum Constant + HiLink pfService Constant + HiLink pfTable Identifier + HiLink pfTodo Todo + HiLink pfVar Identifier + HiLink pfVarAssign Identifier + HiLink pfWildAddr Type + + delcommand HiLink +endif + +let b:current_syntax = "pf" diff --git a/share/vim/vim74/syntax/pfmain.vim b/share/vim/vim74/syntax/pfmain.vim new file mode 100644 index 00000000..a0904457 --- /dev/null +++ b/share/vim/vim74/syntax/pfmain.vim @@ -0,0 +1,1644 @@ +" Vim syntax file +" Language: Postfix main.cf configuration +" Maintainer: KELEMEN Peter +" Last Update: Hong Xu +" Last Change: 2011 May 14 +" Version: 0.40 +" URL: http://cern.ch/fuji/vim/syntax/pfmain.vim +" Comment: Based on Postfix 2.9 defaults. + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if version >= 600 + setlocal iskeyword=@,48-57,_,- +else + set iskeyword=@,48-57,_,- +endif + +syntax case match +syntax sync minlines=1 + +syntax keyword pfmainConf 2bounce_notice_recipient +syntax keyword pfmainConf access_map_defer_code +syntax keyword pfmainConf access_map_reject_code +syntax keyword pfmainConf address_verify_cache_cleanup_interval +syntax keyword pfmainConf address_verify_default_transport +syntax keyword pfmainConf address_verify_local_transport +syntax keyword pfmainConf address_verify_map +syntax keyword pfmainConf address_verify_negative_cache +syntax keyword pfmainConf address_verify_negative_expire_time +syntax keyword pfmainConf address_verify_negative_refresh_time +syntax keyword pfmainConf address_verify_poll_count +syntax keyword pfmainConf address_verify_poll_delay +syntax keyword pfmainConf address_verify_positive_expire_time +syntax keyword pfmainConf address_verify_positive_refresh_time +syntax keyword pfmainConf address_verify_relay_transport +syntax keyword pfmainConf address_verify_relayhost +syntax keyword pfmainConf address_verify_sender +syntax keyword pfmainConf address_verify_sender_dependent_default_transport_maps +syntax keyword pfmainConf address_verify_sender_dependent_relayhost_maps +syntax keyword pfmainConf address_verify_service_name +syntax keyword pfmainConf address_verify_transport_maps +syntax keyword pfmainConf address_verify_virtual_transport +syntax keyword pfmainConf alias_database +syntax keyword pfmainConf alias_maps +syntax keyword pfmainConf allow_mail_to_commands +syntax keyword pfmainConf allow_mail_to_files +syntax keyword pfmainConf allow_min_user +syntax keyword pfmainConf allow_percent_hack +syntax keyword pfmainConf allow_untrusted_routing +syntax keyword pfmainConf alternate_config_directories +syntax keyword pfmainConf always_bcc +syntax keyword pfmainConf anvil_rate_time_unit +syntax keyword pfmainConf anvil_status_update_time +syntax keyword pfmainConf append_at_myorigin +syntax keyword pfmainConf append_dot_mydomain +syntax keyword pfmainConf application_event_drain_time +syntax keyword pfmainConf authorized_flush_users +syntax keyword pfmainConf authorized_mailq_users +syntax keyword pfmainConf authorized_submit_users +syntax keyword pfmainConf backwards_bounce_logfile_compatibility +syntax keyword pfmainConf berkeley_db_create_buffer_size +syntax keyword pfmainConf berkeley_db_read_buffer_size +syntax keyword pfmainConf best_mx_transport +syntax keyword pfmainConf biff +syntax keyword pfmainConf body_checks +syntax keyword pfmainConf body_checks_size_limit +syntax keyword pfmainConf bounce_notice_recipient +syntax keyword pfmainConf bounce_queue_lifetime +syntax keyword pfmainConf bounce_service_name +syntax keyword pfmainConf bounce_size_limit +syntax keyword pfmainConf bounce_template_file +syntax keyword pfmainConf broken_sasl_auth_clients +syntax keyword pfmainConf canonical_classes +syntax keyword pfmainConf canonical_maps +syntax keyword pfmainConf cleanup_service_name +syntax keyword pfmainConf command_directory +syntax keyword pfmainConf command_execution_directory +syntax keyword pfmainConf command_expansion_filter +syntax keyword pfmainConf command_time_limit +syntax keyword pfmainConf config_directory +syntax keyword pfmainConf connection_cache_protocol_timeout +syntax keyword pfmainConf connection_cache_service_name +syntax keyword pfmainConf connection_cache_status_update_time +syntax keyword pfmainConf connection_cache_ttl_limit +syntax keyword pfmainConf content_filter +syntax keyword pfmainConf cyrus_sasl_config_path +syntax keyword pfmainConf daemon_directory +syntax keyword pfmainConf daemon_timeout +syntax keyword pfmainConf data_directory +syntax keyword pfmainConf debug_peer_level +syntax keyword pfmainConf debug_peer_list +syntax keyword pfmainConf default_database_type +syntax keyword pfmainConf default_delivery_slot_cost +syntax keyword pfmainConf default_delivery_slot_discount +syntax keyword pfmainConf default_delivery_slot_loan +syntax keyword pfmainConf default_destination_concurrency_failed_cohort_limit +syntax keyword pfmainConf default_destination_concurrency_limit +syntax keyword pfmainConf default_destination_concurrency_negative_feedback +syntax keyword pfmainConf default_destination_concurrency_positive_feedback +syntax keyword pfmainConf default_destination_rate_delay +syntax keyword pfmainConf default_destination_recipient_limit +syntax keyword pfmainConf default_extra_recipient_limit +syntax keyword pfmainConf default_filter_nexthop +syntax keyword pfmainConf default_minimum_delivery_slots +syntax keyword pfmainConf default_privs +syntax keyword pfmainConf default_process_limit +syntax keyword pfmainConf default_rbl_reply +syntax keyword pfmainConf default_recipient_limit +syntax keyword pfmainConf default_recipient_refill_delay +syntax keyword pfmainConf default_recipient_refill_limit +syntax keyword pfmainConf default_transport +syntax keyword pfmainConf default_verp_delimiters +syntax keyword pfmainConf defer_code +syntax keyword pfmainConf defer_service_name +syntax keyword pfmainConf defer_transports +syntax keyword pfmainConf delay_logging_resolution_limit +syntax keyword pfmainConf delay_notice_recipient +syntax keyword pfmainConf delay_warning_time +syntax keyword pfmainConf deliver_lock_attempts +syntax keyword pfmainConf deliver_lock_delay +syntax keyword pfmainConf destination_concurrency_feedback_debug +syntax keyword pfmainConf detect_8bit_encoding_header +syntax keyword pfmainConf disable_dns_lookups +syntax keyword pfmainConf disable_mime_input_processing +syntax keyword pfmainConf disable_mime_output_conversion +syntax keyword pfmainConf disable_verp_bounces +syntax keyword pfmainConf disable_vrfy_command +syntax keyword pfmainConf dnsblog_reply_delay +syntax keyword pfmainConf dnsblog_service_name +syntax keyword pfmainConf dont_remove +syntax keyword pfmainConf double_bounce_sender +syntax keyword pfmainConf duplicate_filter_limit +syntax keyword pfmainConf empty_address_default_transport_maps_lookup_key +syntax keyword pfmainConf empty_address_recipient +syntax keyword pfmainConf empty_address_relayhost_maps_lookup_key +syntax keyword pfmainConf enable_long_queue_ids +syntax keyword pfmainConf enable_original_recipient +syntax keyword pfmainConf error_notice_recipient +syntax keyword pfmainConf error_service_name +syntax keyword pfmainConf execution_directory_expansion_filter +syntax keyword pfmainConf expand_owner_alias +syntax keyword pfmainConf export_environment +syntax keyword pfmainConf fallback_transport +syntax keyword pfmainConf fallback_transport_maps +syntax keyword pfmainConf fast_flush_domains +syntax keyword pfmainConf fast_flush_purge_time +syntax keyword pfmainConf fast_flush_refresh_time +syntax keyword pfmainConf fault_injection_code +syntax keyword pfmainConf flush_service_name +syntax keyword pfmainConf fork_attempts +syntax keyword pfmainConf fork_delay +syntax keyword pfmainConf forward_expansion_filter +syntax keyword pfmainConf forward_path +syntax keyword pfmainConf frozen_delivered_to +syntax keyword pfmainConf hash_queue_depth +syntax keyword pfmainConf hash_queue_names +syntax keyword pfmainConf header_address_token_limit +syntax keyword pfmainConf header_checks +syntax keyword pfmainConf header_size_limit +syntax keyword pfmainConf helpful_warnings +syntax keyword pfmainConf home_mailbox +syntax keyword pfmainConf hopcount_limit +syntax keyword pfmainConf html_directory +syntax keyword pfmainConf ignore_mx_lookup_error +syntax keyword pfmainConf import_environment +syntax keyword pfmainConf in_flow_delay +syntax keyword pfmainConf inet_interfaces +syntax keyword pfmainConf inet_protocols +syntax keyword pfmainConf initial_destination_concurrency +syntax keyword pfmainConf internal_mail_filter_classes +syntax keyword pfmainConf invalid_hostname_reject_code +syntax keyword pfmainConf ipc_idle +syntax keyword pfmainConf ipc_timeout +syntax keyword pfmainConf ipc_ttl +syntax keyword pfmainConf line_length_limit +syntax keyword pfmainConf lmtp_address_preference +syntax keyword pfmainConf lmtp_bind_address +syntax keyword pfmainConf lmtp_bind_address6 +syntax keyword pfmainConf lmtp_body_checks +syntax keyword pfmainConf lmtp_cname_overrides_servername +syntax keyword pfmainConf lmtp_connect_timeout +syntax keyword pfmainConf lmtp_connection_cache_destinations +syntax keyword pfmainConf lmtp_connection_cache_on_demand +syntax keyword pfmainConf lmtp_connection_cache_time_limit +syntax keyword pfmainConf lmtp_connection_reuse_time_limit +syntax keyword pfmainConf lmtp_data_done_timeout +syntax keyword pfmainConf lmtp_data_init_timeout +syntax keyword pfmainConf lmtp_data_xfer_timeout +syntax keyword pfmainConf lmtp_defer_if_no_mx_address_found +syntax keyword pfmainConf lmtp_destination_concurrency_limit +syntax keyword pfmainConf lmtp_destination_recipient_limit +syntax keyword pfmainConf lmtp_discard_lhlo_keyword_address_maps +syntax keyword pfmainConf lmtp_discard_lhlo_keywords +syntax keyword pfmainConf lmtp_dns_resolver_options +syntax keyword pfmainConf lmtp_enforce_tls +syntax keyword pfmainConf lmtp_generic_maps +syntax keyword pfmainConf lmtp_header_checks +syntax keyword pfmainConf lmtp_host_lookup +syntax keyword pfmainConf lmtp_lhlo_name +syntax keyword pfmainConf lmtp_lhlo_timeout +syntax keyword pfmainConf lmtp_line_length_limit +syntax keyword pfmainConf lmtp_mail_timeout +syntax keyword pfmainConf lmtp_mime_header_checks +syntax keyword pfmainConf lmtp_mx_address_limit +syntax keyword pfmainConf lmtp_mx_session_limit +syntax keyword pfmainConf lmtp_nested_header_checks +syntax keyword pfmainConf lmtp_per_record_deadline +syntax keyword pfmainConf lmtp_pix_workaround_delay_time +syntax keyword pfmainConf lmtp_pix_workaround_maps +syntax keyword pfmainConf lmtp_pix_workaround_threshold_time +syntax keyword pfmainConf lmtp_pix_workarounds +syntax keyword pfmainConf lmtp_quit_timeout +syntax keyword pfmainConf lmtp_quote_rfc821_envelope +syntax keyword pfmainConf lmtp_randomize_addresses +syntax keyword pfmainConf lmtp_rcpt_timeout +syntax keyword pfmainConf lmtp_reply_filter +syntax keyword pfmainConf lmtp_rset_timeout +syntax keyword pfmainConf lmtp_sasl_auth_cache_name +syntax keyword pfmainConf lmtp_sasl_auth_cache_time +syntax keyword pfmainConf lmtp_sasl_auth_enable +syntax keyword pfmainConf lmtp_sasl_auth_soft_bounce +syntax keyword pfmainConf lmtp_sasl_mechanism_filter +syntax keyword pfmainConf lmtp_sasl_password_maps +syntax keyword pfmainConf lmtp_sasl_path +syntax keyword pfmainConf lmtp_sasl_security_options +syntax keyword pfmainConf lmtp_sasl_tls_security_options +syntax keyword pfmainConf lmtp_sasl_tls_verified_security_options +syntax keyword pfmainConf lmtp_sasl_type +syntax keyword pfmainConf lmtp_send_xforward_command +syntax keyword pfmainConf lmtp_sender_dependent_authentication +syntax keyword pfmainConf lmtp_skip_5xx_greeting +syntax keyword pfmainConf lmtp_starttls_timeout +syntax keyword pfmainConf lmtp_tcp_port +syntax keyword pfmainConf lmtp_tls_CAfile +syntax keyword pfmainConf lmtp_tls_CApath +syntax keyword pfmainConf lmtp_tls_block_early_mail_reply +syntax keyword pfmainConf lmtp_tls_cert_file +syntax keyword pfmainConf lmtp_tls_ciphers +syntax keyword pfmainConf lmtp_tls_dcert_file +syntax keyword pfmainConf lmtp_tls_dkey_file +syntax keyword pfmainConf lmtp_tls_eccert_file +syntax keyword pfmainConf lmtp_tls_eckey_file +syntax keyword pfmainConf lmtp_tls_enforce_peername +syntax keyword pfmainConf lmtp_tls_exclude_ciphers +syntax keyword pfmainConf lmtp_tls_fingerprint_cert_match +syntax keyword pfmainConf lmtp_tls_fingerprint_digest +syntax keyword pfmainConf lmtp_tls_key_file +syntax keyword pfmainConf lmtp_tls_loglevel +syntax keyword pfmainConf lmtp_tls_mandatory_ciphers +syntax keyword pfmainConf lmtp_tls_mandatory_exclude_ciphers +syntax keyword pfmainConf lmtp_tls_mandatory_protocols +syntax keyword pfmainConf lmtp_tls_note_starttls_offer +syntax keyword pfmainConf lmtp_tls_per_site +syntax keyword pfmainConf lmtp_tls_policy_maps +syntax keyword pfmainConf lmtp_tls_protocols +syntax keyword pfmainConf lmtp_tls_scert_verifydepth +syntax keyword pfmainConf lmtp_tls_secure_cert_match +syntax keyword pfmainConf lmtp_tls_security_level +syntax keyword pfmainConf lmtp_tls_session_cache_database +syntax keyword pfmainConf lmtp_tls_session_cache_timeout +syntax keyword pfmainConf lmtp_tls_verify_cert_match +syntax keyword pfmainConf lmtp_use_tls +syntax keyword pfmainConf lmtp_xforward_timeout +syntax keyword pfmainConf local_command_shell +syntax keyword pfmainConf local_destination_concurrency_limit +syntax keyword pfmainConf local_destination_recipient_limit +syntax keyword pfmainConf local_header_rewrite_clients +syntax keyword pfmainConf local_recipient_maps +syntax keyword pfmainConf local_transport +syntax keyword pfmainConf luser_relay +syntax keyword pfmainConf mail_name +syntax keyword pfmainConf mail_owner +syntax keyword pfmainConf mail_release_date +syntax keyword pfmainConf mail_spool_directory +syntax keyword pfmainConf mail_version +syntax keyword pfmainConf mailbox_command +syntax keyword pfmainConf mailbox_command_maps +syntax keyword pfmainConf mailbox_delivery_lock +syntax keyword pfmainConf mailbox_size_limit +syntax keyword pfmainConf mailbox_transport +syntax keyword pfmainConf mailbox_transport_maps +syntax keyword pfmainConf mailq_path +syntax keyword pfmainConf manpage_directory +syntax keyword pfmainConf maps_rbl_domains +syntax keyword pfmainConf maps_rbl_reject_code +syntax keyword pfmainConf master_service_disable +syntax keyword pfmainConf masquerade_classes +syntax keyword pfmainConf masquerade_domains +syntax keyword pfmainConf masquerade_exceptions +syntax keyword pfmainConf max_idle +syntax keyword pfmainConf max_use +syntax keyword pfmainConf maximal_backoff_time +syntax keyword pfmainConf maximal_queue_lifetime +syntax keyword pfmainConf message_reject_characters +syntax keyword pfmainConf message_size_limit +syntax keyword pfmainConf message_strip_characters +syntax keyword pfmainConf milter_command_timeout +syntax keyword pfmainConf milter_connect_macros +syntax keyword pfmainConf milter_connect_timeout +syntax keyword pfmainConf milter_content_timeout +syntax keyword pfmainConf milter_data_macros +syntax keyword pfmainConf milter_default_action +syntax keyword pfmainConf milter_end_of_data_macros +syntax keyword pfmainConf milter_end_of_header_macros +syntax keyword pfmainConf milter_header_checks +syntax keyword pfmainConf milter_helo_macros +syntax keyword pfmainConf milter_macro_daemon_name +syntax keyword pfmainConf milter_macro_v +syntax keyword pfmainConf milter_mail_macros +syntax keyword pfmainConf milter_protocol +syntax keyword pfmainConf milter_rcpt_macros +syntax keyword pfmainConf milter_unknown_command_macros +syntax keyword pfmainConf mime_boundary_length_limit +syntax keyword pfmainConf mime_header_checks +syntax keyword pfmainConf mime_nesting_limit +syntax keyword pfmainConf minimal_backoff_time +syntax keyword pfmainConf multi_instance_directories +syntax keyword pfmainConf multi_instance_enable +syntax keyword pfmainConf multi_instance_group +syntax keyword pfmainConf multi_instance_name +syntax keyword pfmainConf multi_instance_wrapper +syntax keyword pfmainConf multi_recipient_bounce_reject_code +syntax keyword pfmainConf mydestination +syntax keyword pfmainConf mydomain +syntax keyword pfmainConf myhostname +syntax keyword pfmainConf mynetworks +syntax keyword pfmainConf mynetworks_style +syntax keyword pfmainConf myorigin +syntax keyword pfmainConf nested_header_checks +syntax keyword pfmainConf newaliases_path +syntax keyword pfmainConf non_fqdn_reject_code +syntax keyword pfmainConf non_smtpd_milters +syntax keyword pfmainConf notify_classes +syntax keyword pfmainConf owner_request_special +syntax keyword pfmainConf parent_domain_matches_subdomains +syntax keyword pfmainConf permit_mx_backup_networks +syntax keyword pfmainConf pickup_service_name +syntax keyword pfmainConf plaintext_reject_code +syntax keyword pfmainConf postmulti_control_commands +syntax keyword pfmainConf postmulti_start_commands +syntax keyword pfmainConf postmulti_stop_commands +syntax keyword pfmainConf postscreen_access_list +syntax keyword pfmainConf postscreen_bare_newline_action +syntax keyword pfmainConf postscreen_bare_newline_enable +syntax keyword pfmainConf postscreen_bare_newline_ttl +syntax keyword pfmainConf postscreen_blacklist_action +syntax keyword pfmainConf postscreen_cache_cleanup_interval +syntax keyword pfmainConf postscreen_cache_map +syntax keyword pfmainConf postscreen_cache_retention_time +syntax keyword pfmainConf postscreen_client_connection_count_limit +syntax keyword pfmainConf postscreen_command_count_limit +syntax keyword pfmainConf postscreen_command_filter +syntax keyword pfmainConf postscreen_command_time_limit +syntax keyword pfmainConf postscreen_disable_vrfy_command +syntax keyword pfmainConf postscreen_discard_ehlo_keyword_address_maps +syntax keyword pfmainConf postscreen_discard_ehlo_keywords +syntax keyword pfmainConf postscreen_dnsbl_action +syntax keyword pfmainConf postscreen_dnsbl_reply_map +syntax keyword pfmainConf postscreen_dnsbl_sites +syntax keyword pfmainConf postscreen_dnsbl_threshold +syntax keyword pfmainConf postscreen_dnsbl_ttl +syntax keyword pfmainConf postscreen_enforce_tls +syntax keyword pfmainConf postscreen_expansion_filter +syntax keyword pfmainConf postscreen_forbidden_commands +syntax keyword pfmainConf postscreen_greet_action +syntax keyword pfmainConf postscreen_greet_banner +syntax keyword pfmainConf postscreen_greet_ttl +syntax keyword pfmainConf postscreen_greet_wait +syntax keyword pfmainConf postscreen_helo_required +syntax keyword pfmainConf postscreen_non_smtp_command_action +syntax keyword pfmainConf postscreen_non_smtp_command_enable +syntax keyword pfmainConf postscreen_non_smtp_command_ttl +syntax keyword pfmainConf postscreen_pipelining_action +syntax keyword pfmainConf postscreen_pipelining_enable +syntax keyword pfmainConf postscreen_pipelining_ttl +syntax keyword pfmainConf postscreen_post_queue_limit +syntax keyword pfmainConf postscreen_pre_queue_limit +syntax keyword pfmainConf postscreen_reject_footer +syntax keyword pfmainConf postscreen_tls_security_level +syntax keyword pfmainConf postscreen_use_tls +syntax keyword pfmainConf postscreen_watchdog_timeout +syntax keyword pfmainConf postscreen_whitelist_interfaces +syntax keyword pfmainConf prepend_delivered_header +syntax keyword pfmainConf process_id +syntax keyword pfmainConf process_id_directory +syntax keyword pfmainConf process_name +syntax keyword pfmainConf propagate_unmatched_extensions +syntax keyword pfmainConf proxy_interfaces +syntax keyword pfmainConf proxy_read_maps +syntax keyword pfmainConf proxy_write_maps +syntax keyword pfmainConf proxymap_service_name +syntax keyword pfmainConf proxywrite_service_name +syntax keyword pfmainConf qmgr_clog_warn_time +syntax keyword pfmainConf qmgr_fudge_factor +syntax keyword pfmainConf qmgr_message_active_limit +syntax keyword pfmainConf qmgr_message_recipient_limit +syntax keyword pfmainConf qmgr_message_recipient_minimum +syntax keyword pfmainConf qmqpd_authorized_clients +syntax keyword pfmainConf qmqpd_client_port_logging +syntax keyword pfmainConf qmqpd_error_delay +syntax keyword pfmainConf qmqpd_timeout +syntax keyword pfmainConf queue_directory +syntax keyword pfmainConf queue_file_attribute_count_limit +syntax keyword pfmainConf queue_minfree +syntax keyword pfmainConf queue_run_delay +syntax keyword pfmainConf queue_service_name +syntax keyword pfmainConf rbl_reply_maps +syntax keyword pfmainConf readme_directory +syntax keyword pfmainConf receive_override_options +syntax keyword pfmainConf recipient_bcc_maps +syntax keyword pfmainConf recipient_canonical_classes +syntax keyword pfmainConf recipient_canonical_maps +syntax keyword pfmainConf recipient_delimiter +syntax keyword pfmainConf reject_code +syntax keyword pfmainConf reject_tempfail_action +syntax keyword pfmainConf relay_clientcerts +syntax keyword pfmainConf relay_destination_concurrency_limit +syntax keyword pfmainConf relay_destination_recipient_limit +syntax keyword pfmainConf relay_domains +syntax keyword pfmainConf relay_domains_reject_code +syntax keyword pfmainConf relay_recipient_maps +syntax keyword pfmainConf relay_transport +syntax keyword pfmainConf relayhost +syntax keyword pfmainConf relocated_maps +syntax keyword pfmainConf remote_header_rewrite_domain +syntax keyword pfmainConf require_home_directory +syntax keyword pfmainConf reset_owner_alias +syntax keyword pfmainConf resolve_dequoted_address +syntax keyword pfmainConf resolve_null_domain +syntax keyword pfmainConf resolve_numeric_domain +syntax keyword pfmainConf rewrite_service_name +syntax keyword pfmainConf sample_directory +syntax keyword pfmainConf send_cyrus_sasl_authzid +syntax keyword pfmainConf sender_bcc_maps +syntax keyword pfmainConf sender_canonical_classes +syntax keyword pfmainConf sender_canonical_maps +syntax keyword pfmainConf sender_dependent_default_transport_maps +syntax keyword pfmainConf sender_dependent_relayhost_maps +syntax keyword pfmainConf sendmail_path +syntax keyword pfmainConf service_throttle_time +syntax keyword pfmainConf setgid_group +syntax keyword pfmainConf show_user_unknown_table_name +syntax keyword pfmainConf showq_service_name +syntax keyword pfmainConf smtp_address_preference +syntax keyword pfmainConf smtp_always_send_ehlo +syntax keyword pfmainConf smtp_bind_address +syntax keyword pfmainConf smtp_bind_address6 +syntax keyword pfmainConf smtp_body_checks +syntax keyword pfmainConf smtp_cname_overrides_servername +syntax keyword pfmainConf smtp_connect_timeout +syntax keyword pfmainConf smtp_connection_cache_destinations +syntax keyword pfmainConf smtp_connection_cache_on_demand +syntax keyword pfmainConf smtp_connection_cache_time_limit +syntax keyword pfmainConf smtp_connection_reuse_time_limit +syntax keyword pfmainConf smtp_data_done_timeout +syntax keyword pfmainConf smtp_data_init_timeout +syntax keyword pfmainConf smtp_data_xfer_timeout +syntax keyword pfmainConf smtp_defer_if_no_mx_address_found +syntax keyword pfmainConf smtp_destination_concurrency_limit +syntax keyword pfmainConf smtp_destination_recipient_limit +syntax keyword pfmainConf smtp_discard_ehlo_keyword_address_maps +syntax keyword pfmainConf smtp_discard_ehlo_keywords +syntax keyword pfmainConf smtp_dns_resolver_options +syntax keyword pfmainConf smtp_enforce_tls +syntax keyword pfmainConf smtp_fallback_relay +syntax keyword pfmainConf smtp_generic_maps +syntax keyword pfmainConf smtp_header_checks +syntax keyword pfmainConf smtp_helo_name +syntax keyword pfmainConf smtp_helo_timeout +syntax keyword pfmainConf smtp_host_lookup +syntax keyword pfmainConf smtp_line_length_limit +syntax keyword pfmainConf smtp_mail_timeout +syntax keyword pfmainConf smtp_mime_header_checks +syntax keyword pfmainConf smtp_mx_address_limit +syntax keyword pfmainConf smtp_mx_session_limit +syntax keyword pfmainConf smtp_nested_header_checks +syntax keyword pfmainConf smtp_never_send_ehlo +syntax keyword pfmainConf smtp_pix_workaround_delay_time +syntax keyword pfmainConf smtp_pix_workaround_maps +syntax keyword pfmainConf smtp_pix_workaround_threshold_time +syntax keyword pfmainConf smtp_pix_workarounds +syntax keyword pfmainConf smtp_quit_timeout +syntax keyword pfmainConf smtp_quote_rfc821_envelope +syntax keyword pfmainConf smtp_randomize_addresses +syntax keyword pfmainConf smtp_rcpt_timeout +syntax keyword pfmainConf smtp_reply_filter +syntax keyword pfmainConf smtp_rset_timeout +syntax keyword pfmainConf smtp_sasl_auth_cache_name +syntax keyword pfmainConf smtp_sasl_auth_cache_time +syntax keyword pfmainConf smtp_sasl_auth_enable +syntax keyword pfmainConf smtp_sasl_auth_soft_bounce +syntax keyword pfmainConf smtp_sasl_mechanism_filter +syntax keyword pfmainConf smtp_sasl_password_maps +syntax keyword pfmainConf smtp_sasl_path +syntax keyword pfmainConf smtp_sasl_security_options +syntax keyword pfmainConf smtp_sasl_tls_security_options +syntax keyword pfmainConf smtp_sasl_tls_verified_security_options +syntax keyword pfmainConf smtp_sasl_type +syntax keyword pfmainConf smtp_send_xforward_command +syntax keyword pfmainConf smtp_sender_dependent_authentication +syntax keyword pfmainConf smtp_skip_5xx_greeting +syntax keyword pfmainConf smtp_skip_quit_response +syntax keyword pfmainConf smtp_starttls_timeout +syntax keyword pfmainConf smtp_tls_CAfile +syntax keyword pfmainConf smtp_tls_CApath +syntax keyword pfmainConf smtp_tls_block_early_mail_reply +syntax keyword pfmainConf smtp_tls_cert_file +syntax keyword pfmainConf smtp_tls_cipherlist +syntax keyword pfmainConf smtp_tls_ciphers +syntax keyword pfmainConf smtp_tls_dcert_file +syntax keyword pfmainConf smtp_tls_dkey_file +syntax keyword pfmainConf smtp_tls_eccert_file +syntax keyword pfmainConf smtp_tls_eckey_file +syntax keyword pfmainConf smtp_tls_enforce_peername +syntax keyword pfmainConf smtp_tls_exclude_ciphers +syntax keyword pfmainConf smtp_tls_fingerprint_cert_match +syntax keyword pfmainConf smtp_tls_fingerprint_digest +syntax keyword pfmainConf smtp_tls_key_file +syntax keyword pfmainConf smtp_tls_loglevel +syntax keyword pfmainConf smtp_tls_mandatory_ciphers +syntax keyword pfmainConf smtp_tls_mandatory_exclude_ciphers +syntax keyword pfmainConf smtp_tls_mandatory_protocols +syntax keyword pfmainConf smtp_tls_note_starttls_offer +syntax keyword pfmainConf smtp_tls_per_site +syntax keyword pfmainConf smtp_tls_policy_maps +syntax keyword pfmainConf smtp_tls_protocols +syntax keyword pfmainConf smtp_tls_scert_verifydepth +syntax keyword pfmainConf smtp_tls_secure_cert_match +syntax keyword pfmainConf smtp_tls_security_level +syntax keyword pfmainConf smtp_tls_session_cache_database +syntax keyword pfmainConf smtp_tls_session_cache_timeout +syntax keyword pfmainConf smtp_tls_verify_cert_match +syntax keyword pfmainConf smtp_use_tls +syntax keyword pfmainConf smtp_xforward_timeout +syntax keyword pfmainConf smtpd_authorized_verp_clients +syntax keyword pfmainConf smtpd_authorized_xclient_hosts +syntax keyword pfmainConf smtpd_authorized_xforward_hosts +syntax keyword pfmainConf smtpd_banner +syntax keyword pfmainConf smtpd_client_connection_count_limit +syntax keyword pfmainConf smtpd_client_connection_rate_limit +syntax keyword pfmainConf smtpd_client_event_limit_exceptions +syntax keyword pfmainConf smtpd_client_message_rate_limit +syntax keyword pfmainConf smtpd_client_new_tls_session_rate_limit +syntax keyword pfmainConf smtpd_client_port_logging +syntax keyword pfmainConf smtpd_client_recipient_rate_limit +syntax keyword pfmainConf smtpd_client_restrictions +syntax keyword pfmainConf smtpd_command_filter +syntax keyword pfmainConf smtpd_data_restrictions +syntax keyword pfmainConf smtpd_delay_open_until_valid_rcpt +syntax keyword pfmainConf smtpd_delay_reject +syntax keyword pfmainConf smtpd_discard_ehlo_keyword_address_maps +syntax keyword pfmainConf smtpd_discard_ehlo_keywords +syntax keyword pfmainConf smtpd_end_of_data_restrictions +syntax keyword pfmainConf smtpd_enforce_tls +syntax keyword pfmainConf smtpd_error_sleep_time +syntax keyword pfmainConf smtpd_etrn_restrictions +syntax keyword pfmainConf smtpd_expansion_filter +syntax keyword pfmainConf smtpd_forbidden_commands +syntax keyword pfmainConf smtpd_hard_error_limit +syntax keyword pfmainConf smtpd_helo_required +syntax keyword pfmainConf smtpd_helo_restrictions +syntax keyword pfmainConf smtpd_history_flush_threshold +syntax keyword pfmainConf smtpd_junk_command_limit +syntax keyword pfmainConf smtpd_milters +syntax keyword pfmainConf smtpd_noop_commands +syntax keyword pfmainConf smtpd_null_access_lookup_key +syntax keyword pfmainConf smtpd_peername_lookup +syntax keyword pfmainConf smtpd_per_record_deadline +syntax keyword pfmainConf smtpd_policy_service_max_idle +syntax keyword pfmainConf smtpd_policy_service_max_ttl +syntax keyword pfmainConf smtpd_policy_service_timeout +syntax keyword pfmainConf smtpd_proxy_ehlo +syntax keyword pfmainConf smtpd_proxy_filter +syntax keyword pfmainConf smtpd_proxy_options +syntax keyword pfmainConf smtpd_proxy_timeout +syntax keyword pfmainConf smtpd_recipient_limit +syntax keyword pfmainConf smtpd_recipient_overshoot_limit +syntax keyword pfmainConf smtpd_recipient_restrictions +syntax keyword pfmainConf smtpd_reject_footer +syntax keyword pfmainConf smtpd_reject_unlisted_recipient +syntax keyword pfmainConf smtpd_reject_unlisted_sender +syntax keyword pfmainConf smtpd_restriction_classes +syntax keyword pfmainConf smtpd_sasl_auth_enable +syntax keyword pfmainConf smtpd_sasl_authenticated_header +syntax keyword pfmainConf smtpd_sasl_exceptions_networks +syntax keyword pfmainConf smtpd_sasl_local_domain +syntax keyword pfmainConf smtpd_sasl_path +syntax keyword pfmainConf smtpd_sasl_security_options +syntax keyword pfmainConf smtpd_sasl_tls_security_options +syntax keyword pfmainConf smtpd_sasl_type +syntax keyword pfmainConf smtpd_sender_login_maps +syntax keyword pfmainConf smtpd_sender_restrictions +syntax keyword pfmainConf smtpd_service_name +syntax keyword pfmainConf smtpd_soft_error_limit +syntax keyword pfmainConf smtpd_starttls_timeout +syntax keyword pfmainConf smtpd_timeout +syntax keyword pfmainConf smtpd_tls_CAfile +syntax keyword pfmainConf smtpd_tls_CApath +syntax keyword pfmainConf smtpd_tls_always_issue_session_ids +syntax keyword pfmainConf smtpd_tls_ask_ccert +syntax keyword pfmainConf smtpd_tls_auth_only +syntax keyword pfmainConf smtpd_tls_ccert_verifydepth +syntax keyword pfmainConf smtpd_tls_cert_file +syntax keyword pfmainConf smtpd_tls_cipherlist +syntax keyword pfmainConf smtpd_tls_ciphers +syntax keyword pfmainConf smtpd_tls_dcert_file +syntax keyword pfmainConf smtpd_tls_dh1024_param_file +syntax keyword pfmainConf smtpd_tls_dh512_param_file +syntax keyword pfmainConf smtpd_tls_dkey_file +syntax keyword pfmainConf smtpd_tls_eccert_file +syntax keyword pfmainConf smtpd_tls_eckey_file +syntax keyword pfmainConf smtpd_tls_eecdh_grade +syntax keyword pfmainConf smtpd_tls_exclude_ciphers +syntax keyword pfmainConf smtpd_tls_fingerprint_digest +syntax keyword pfmainConf smtpd_tls_key_file +syntax keyword pfmainConf smtpd_tls_loglevel +syntax keyword pfmainConf smtpd_tls_mandatory_ciphers +syntax keyword pfmainConf smtpd_tls_mandatory_exclude_ciphers +syntax keyword pfmainConf smtpd_tls_mandatory_protocols +syntax keyword pfmainConf smtpd_tls_protocols +syntax keyword pfmainConf smtpd_tls_received_header +syntax keyword pfmainConf smtpd_tls_req_ccert +syntax keyword pfmainConf smtpd_tls_security_level +syntax keyword pfmainConf smtpd_tls_session_cache_database +syntax keyword pfmainConf smtpd_tls_session_cache_timeout +syntax keyword pfmainConf smtpd_tls_wrappermode +syntax keyword pfmainConf smtpd_use_tls +syntax keyword pfmainConf soft_bounce +syntax keyword pfmainConf stale_lock_time +syntax keyword pfmainConf stress +syntax keyword pfmainConf strict_7bit_headers +syntax keyword pfmainConf strict_8bitmime +syntax keyword pfmainConf strict_8bitmime_body +syntax keyword pfmainConf strict_mime_encoding_domain +syntax keyword pfmainConf strict_rfc821_envelopes +syntax keyword pfmainConf strict_7bit_headers +syntax keyword pfmainConf strict_8bitmime +syntax keyword pfmainConf strict_8bitmime_body +syntax keyword pfmainConf strict_mailbox_ownership +syntax keyword pfmainConf strict_mime_encoding_domain +syntax keyword pfmainConf strict_rfc821_envelopes +syntax keyword pfmainConf sun_mailtool_compatibility +syntax keyword pfmainConf swap_bangpath +syntax keyword pfmainConf syslog_facility +syntax keyword pfmainConf syslog_name +syntax keyword pfmainConf tcp_windowsize +syntax keyword pfmainConf tls_append_default_CA +syntax keyword pfmainConf tls_daemon_random_bytes +syntax keyword pfmainConf tls_disable_workarounds +syntax keyword pfmainConf tls_eecdh_strong_curve +syntax keyword pfmainConf tls_eecdh_ultra_curve +syntax keyword pfmainConf tls_export_cipherlist +syntax keyword pfmainConf tls_high_cipherlist +syntax keyword pfmainConf tls_low_cipherlist +syntax keyword pfmainConf tls_medium_cipherlist +syntax keyword pfmainConf tls_null_cipherlist +syntax keyword pfmainConf tls_preempt_cipherlist +syntax keyword pfmainConf tls_random_bytes +syntax keyword pfmainConf tls_random_exchange_name +syntax keyword pfmainConf tls_random_prng_update_period +syntax keyword pfmainConf tls_random_reseed_period +syntax keyword pfmainConf tls_random_source +syntax keyword pfmainConf tlsproxy_enforce_tls +syntax keyword pfmainConf tlsproxy_service_name +syntax keyword pfmainConf tlsproxy_tls_CAfile +syntax keyword pfmainConf tlsproxy_tls_CApath +syntax keyword pfmainConf tlsproxy_tls_always_issue_session_ids +syntax keyword pfmainConf tlsproxy_tls_ask_ccert +syntax keyword pfmainConf tlsproxy_tls_ccert_verifydepth +syntax keyword pfmainConf tlsproxy_tls_cert_file +syntax keyword pfmainConf tlsproxy_tls_ciphers +syntax keyword pfmainConf tlsproxy_tls_dcert_file +syntax keyword pfmainConf tlsproxy_tls_dh1024_param_file +syntax keyword pfmainConf tlsproxy_tls_dh512_param_file +syntax keyword pfmainConf tlsproxy_tls_dkey_file +syntax keyword pfmainConf tlsproxy_tls_eccert_file +syntax keyword pfmainConf tlsproxy_tls_eckey_file +syntax keyword pfmainConf tlsproxy_tls_eecdh_grade +syntax keyword pfmainConf tlsproxy_tls_exclude_ciphers +syntax keyword pfmainConf tlsproxy_tls_fingerprint_digest +syntax keyword pfmainConf tlsproxy_tls_key_file +syntax keyword pfmainConf tlsproxy_tls_loglevel +syntax keyword pfmainConf tlsproxy_tls_mandatory_ciphers +syntax keyword pfmainConf tlsproxy_tls_mandatory_exclude_ciphers +syntax keyword pfmainConf tlsproxy_tls_mandatory_protocols +syntax keyword pfmainConf tlsproxy_tls_protocols +syntax keyword pfmainConf tlsproxy_tls_req_ccert +syntax keyword pfmainConf tlsproxy_tls_security_level +syntax keyword pfmainConf tlsproxy_tls_session_cache_timeout +syntax keyword pfmainConf tlsproxy_use_tls +syntax keyword pfmainConf tlsproxy_watchdog_timeout +syntax keyword pfmainConf trace_service_name +syntax keyword pfmainConf transport_delivery_slot_cost +syntax keyword pfmainConf transport_delivery_slot_discount +syntax keyword pfmainConf transport_delivery_slot_loan +syntax keyword pfmainConf transport_destination_concurrency_failed_cohort_limit +syntax keyword pfmainConf transport_destination_concurrency_limit +syntax keyword pfmainConf transport_destination_concurrency_negative_feedback +syntax keyword pfmainConf transport_destination_concurrency_positive_feedback +syntax keyword pfmainConf transport_destination_rate_delay +syntax keyword pfmainConf transport_destination_recipient_limit +syntax keyword pfmainConf transport_extra_recipient_limit +syntax keyword pfmainConf transport_initial_destination_concurrency +syntax keyword pfmainConf transport_maps +syntax keyword pfmainConf transport_minimum_delivery_slots +syntax keyword pfmainConf transport_recipient_limit +syntax keyword pfmainConf transport_recipient_refill_delay +syntax keyword pfmainConf transport_recipient_refill_limit +syntax keyword pfmainConf transport_retry_time +syntax keyword pfmainConf trigger_timeout +syntax keyword pfmainConf undisclosed_recipients_header +syntax keyword pfmainConf unknown_address_reject_code +syntax keyword pfmainConf unknown_address_tempfail_action +syntax keyword pfmainConf unknown_client_reject_code +syntax keyword pfmainConf unknown_helo_hostname_tempfail_action +syntax keyword pfmainConf unknown_hostname_reject_code +syntax keyword pfmainConf unknown_local_recipient_reject_code +syntax keyword pfmainConf unknown_relay_recipient_reject_code +syntax keyword pfmainConf unknown_virtual_alias_reject_code +syntax keyword pfmainConf unknown_virtual_mailbox_reject_code +syntax keyword pfmainConf unverified_recipient_defer_code +syntax keyword pfmainConf unverified_recipient_reject_code +syntax keyword pfmainConf unverified_recipient_reject_reason +syntax keyword pfmainConf unverified_recipient_tempfail_action +syntax keyword pfmainConf unverified_sender_defer_code +syntax keyword pfmainConf unverified_sender_reject_code +syntax keyword pfmainConf unverified_sender_reject_reason +syntax keyword pfmainConf unverified_sender_tempfail_action +syntax keyword pfmainConf verp_delimiter_filter +syntax keyword pfmainConf virtual_alias_domains +syntax keyword pfmainConf virtual_alias_expansion_limit +syntax keyword pfmainConf virtual_alias_maps +syntax keyword pfmainConf virtual_alias_recursion_limit +syntax keyword pfmainConf virtual_destination_concurrency_limit +syntax keyword pfmainConf virtual_destination_recipient_limit +syntax keyword pfmainConf virtual_gid_maps +syntax keyword pfmainConf virtual_mailbox_base +syntax keyword pfmainConf virtual_mailbox_domains +syntax keyword pfmainConf virtual_mailbox_limit +syntax keyword pfmainConf virtual_mailbox_lock +syntax keyword pfmainConf virtual_mailbox_maps +syntax keyword pfmainConf virtual_minimum_uid +syntax keyword pfmainConf virtual_transport +syntax keyword pfmainConf virtual_uid_maps +syntax match pfmainRef "$\<2bounce_notice_recipient\>" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" +syntax match pfmainRef "$\" + +syntax keyword pfmainWord all +syntax keyword pfmainWord check_address_map +syntax keyword pfmainWord check_ccert_access +syntax keyword pfmainWord check_client_access +syntax keyword pfmainWord check_etrn_access +syntax keyword pfmainWord check_helo_access +syntax keyword pfmainWord check_helo_mx_access +syntax keyword pfmainWord check_helo_ns_access +syntax keyword pfmainWord check_policy_service +syntax keyword pfmainWord check_recipient_access +syntax keyword pfmainWord check_recipient_maps +syntax keyword pfmainWord check_recipient_mx_access +syntax keyword pfmainWord check_recipient_ns_access +syntax keyword pfmainWord check_relay_domains +syntax keyword pfmainWord check_sender_access +syntax keyword pfmainWord check_sender_mx_access +syntax keyword pfmainWord check_sender_ns_access +syntax keyword pfmainWord class +syntax keyword pfmainWord client_address +syntax keyword pfmainWord client_port +syntax keyword pfmainWord defer_if_permit +syntax keyword pfmainWord defer_if_reject +syntax keyword pfmainWord dns +syntax keyword pfmainWord drop +syntax keyword pfmainWord dunno +syntax keyword pfmainWord enforce +syntax keyword pfmainWord envelope_recipient +syntax keyword pfmainWord envelope_sender +syntax keyword pfmainWord export +syntax keyword pfmainWord header_recipient +syntax keyword pfmainWord header_sender +syntax keyword pfmainWord high +syntax keyword pfmainWord host +syntax keyword pfmainWord ignore +syntax keyword pfmainWord ipv4 +syntax keyword pfmainWord ipv6 +syntax keyword pfmainWord localtime +syntax keyword pfmainWord low +syntax keyword pfmainWord medium +syntax keyword pfmainWord native +syntax keyword pfmainWord null +syntax keyword pfmainWord permit +syntax keyword pfmainWord permit_auth_destination +syntax keyword pfmainWord permit_inet_interfaces +syntax keyword pfmainWord permit_mx_backup +syntax keyword pfmainWord permit_mynetworks +syntax keyword pfmainWord permit_naked_ip_address +syntax keyword pfmainWord permit_sasl_authenticated +syntax keyword pfmainWord permit_tls_all_clientcerts +syntax keyword pfmainWord permit_tls_clientcerts +syntax keyword pfmainWord reject +syntax keyword pfmainWord reject_authenticated_sender_login_mismatch +syntax keyword pfmainWord reject_invalid_helo_hostname +syntax keyword pfmainWord reject_invalid_hostname +syntax keyword pfmainWord reject_maps_rbl +syntax keyword pfmainWord reject_multi_recipient_bounce +syntax keyword pfmainWord reject_non_fqdn_helo_hostname +syntax keyword pfmainWord reject_non_fqdn_hostname +syntax keyword pfmainWord reject_non_fqdn_recipient +syntax keyword pfmainWord reject_non_fqdn_sender +syntax keyword pfmainWord reject_plaintext_session +syntax keyword pfmainWord reject_rbl +syntax keyword pfmainWord reject_rbl_client +syntax keyword pfmainWord reject_rhsbl_client +syntax keyword pfmainWord reject_rhsbl_helo +syntax keyword pfmainWord reject_rhsbl_recipient +syntax keyword pfmainWord reject_rhsbl_sender +syntax keyword pfmainWord reject_sender_login_mismatch +syntax keyword pfmainWord reject_unauth_destination +syntax keyword pfmainWord reject_unauth_pipelining +syntax keyword pfmainWord reject_unknown_address +syntax keyword pfmainWord reject_unknown_client +syntax keyword pfmainWord reject_unknown_client_hostname +syntax keyword pfmainWord reject_unknown_forward_client_hostname +syntax keyword pfmainWord reject_unknown_helo_hostname +syntax keyword pfmainWord reject_unknown_hostname +syntax keyword pfmainWord reject_unknown_recipient_domain +syntax keyword pfmainWord reject_unknown_reverse_client_hostname +syntax keyword pfmainWord reject_unknown_sender_domain +syntax keyword pfmainWord reject_unlisted_recipient +syntax keyword pfmainWord reject_unlisted_sender +syntax keyword pfmainWord reject_unverified_recipient +syntax keyword pfmainWord reject_unverified_sender +syntax keyword pfmainWord sleep +syntax keyword pfmainWord smtpd_access_maps +syntax keyword pfmainWord server_name +syntax keyword pfmainWord speed_adjust +syntax keyword pfmainWord subnet +syntax keyword pfmainWord warn_if_reject +syntax keyword pfmainWord CRYPTOPRO_TLSEXT_BUG +syntax keyword pfmainWord DONT_INSERT_EMPTY_FRAGMENTS +syntax keyword pfmainWord LEGACY_SERVER_CONNECT +syntax keyword pfmainWord MICROSOFT_BIG_SSLV3_BUFFER +syntax keyword pfmainWord MICROSOFT_SESS_ID_BUG +syntax keyword pfmainWord MSIE_SSLV2_RSA_PADDING +syntax keyword pfmainWord NETSCAPE_CHALLENGE_BUG +syntax keyword pfmainWord NETSCAPE_REUSE_CIPHER_CHANGE_BUG +syntax keyword pfmainWord SSLEAY_080_CLIENT_DH_BUG +syntax keyword pfmainWord SSLREF2_REUSE_CERT_TYPE_BUG +syntax keyword pfmainWord TLS_BLOCK_PADDING_BUG +syntax keyword pfmainWord TLS_D5_BUG +syntax keyword pfmainWord TLS_ROLLBACK_BUG + +syntax keyword pfmainDict btree cidr environ hash nis pcre proxy regexp sdbm sdbm static tcp unix +syntax keyword pfmainQueueDir incoming active deferred corrupt hold +syntax keyword pfmainTransport smtp lmtp unix local relay uucp virtual +syntax keyword pfmainLock fcntl flock dotlock +syntax keyword pfmainAnswer yes no + +syntax match pfmainComment "#.*$" +syntax match pfmainNumber "\<\d\+\>" +syntax match pfmainTime "\<\d\+[hmsd]\>" +syntax match pfmainIP "\<\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\>" +syntax match pfmainVariable "\$\w\+" contains=pfmainRef + +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" + +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" +syntax match pfmainSpecial "\" + +if version >= 508 || !exists("pfmain_syntax_init") + if version < 508 + let pfmain_syntax_init = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink pfmainConf Statement + HiLink pfmainRef PreProc + HiLink pfmainWord identifier + + HiLink pfmainDict Type + HiLink pfmainQueueDir Constant + HiLink pfmainTransport Constant + HiLink pfmainLock Constant + HiLink pfmainAnswer Constant + + HiLink pfmainComment Comment + HiLink pfmainNumber Number + HiLink pfmainTime Number + HiLink pfmainIP Number + HiLink pfmainVariable Error + HiLink pfmainSpecial Special + + delcommand HiLink +endif + +let b:current_syntax = "pfmain" + +" vim: ts=8 sw=2 diff --git a/share/vim/vim74/syntax/php.vim b/share/vim/vim74/syntax/php.vim new file mode 100644 index 00000000..ac3b20c0 --- /dev/null +++ b/share/vim/vim74/syntax/php.vim @@ -0,0 +1,703 @@ +" Vim syntax file +" Language: php PHP 3/4/5 +" Maintainer: Jason Woofenden +" Last Change: Dec 11, 2012 +" URL: https://gitorious.org/jasonwoof/vim-syntax/blobs/master/php.vim +" Former Maintainers: Peter Hodge +" Debian VIM Maintainers +" +" Note: If you are using a colour terminal with dark background, you will probably find +" the 'elflord' colorscheme is much better for PHP's syntax than the default +" colourscheme, because elflord's colours will better highlight the break-points +" (Statements) in your code. +" +" Options: php_sql_query = 1 for SQL syntax highlighting inside strings +" php_htmlInStrings = 1 for HTML syntax highlighting inside strings +" php_baselib = 1 for highlighting baselib functions +" php_asp_tags = 1 for highlighting ASP-style short tags +" php_parent_error_close = 1 for highlighting parent error ] or ) +" php_parent_error_open = 1 for skipping an php end tag, if there exists an open ( or [ without a closing one +" php_oldStyle = 1 for using old colorstyle +" php_noShortTags = 1 don't sync as php +" php_folding = 1 for folding classes and functions +" php_folding = 2 for folding all { } regions +" php_sync_method = x +" x=-1 to sync by search ( default ) +" x>0 to sync at least x lines backwards +" x=0 to sync from start +" +" Added by Peter Hodge On June 9, 2006: +" php_special_functions = 1|0 to highlight functions with abnormal behaviour +" php_alt_comparisons = 1|0 to highlight comparison operators in an alternate colour +" php_alt_assignByReference = 1|0 to highlight '= &' in an alternate colour +" +" Note: these all default to 1 (On), so you would set them to '0' to turn them off. +" E.g., in your .vimrc or _vimrc file: +" let php_special_functions = 0 +" let php_alt_comparisons = 0 +" let php_alt_assignByReference = 0 +" Unletting these variables will revert back to their default (On). +" +" +" Note: +" Setting php_folding=1 will match a closing } by comparing the indent +" before the class or function keyword with the indent of a matching }. +" Setting php_folding=2 will match all of pairs of {,} ( see known +" bugs ii ) + +" Known Bugs: +" - setting php_parent_error_close on and php_parent_error_open off +" has these two leaks: +" i) A closing ) or ] inside a string match to the last open ( or [ +" before the string, when the the closing ) or ] is on the same line +" where the string started. In this case a following ) or ] after +" the string would be highlighted as an error, what is incorrect. +" ii) Same problem if you are setting php_folding = 2 with a closing +" } inside an string on the first line of this string. + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if !exists("main_syntax") + let main_syntax = 'php' +endif + +if version < 600 + unlet! php_folding + if exists("php_sync_method") && !php_sync_method + let php_sync_method=-1 + endif + so :p:h/html.vim +else + runtime! syntax/html.vim + unlet b:current_syntax +endif + +" accept old options +if !exists("php_sync_method") + if exists("php_minlines") + let php_sync_method=php_minlines + else + let php_sync_method=-1 + endif +endif + +if exists("php_parentError") && !exists("php_parent_error_open") && !exists("php_parent_error_close") + let php_parent_error_close=1 + let php_parent_error_open=1 +endif + +syn cluster htmlPreproc add=phpRegion,phpRegionAsp,phpRegionSc + +if version < 600 + syn include @sqlTop :p:h/sql.vim +else + syn include @sqlTop syntax/sql.vim +endif +syn sync clear +unlet b:current_syntax +syn cluster sqlTop remove=sqlString,sqlComment +if exists( "php_sql_query") + syn cluster phpAddStrings contains=@sqlTop +endif + +if exists( "php_htmlInStrings") + syn cluster phpAddStrings add=@htmlTop +endif + +" make sure we can use \ at the begining of the line to do a continuation +let s:cpo_save = &cpo +set cpo&vim + +syn case match + +" Env Variables +syn keyword phpEnvVar GATEWAY_INTERFACE SERVER_NAME SERVER_SOFTWARE SERVER_PROTOCOL REQUEST_METHOD QUERY_STRING DOCUMENT_ROOT HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION HTTP_HOST HTTP_REFERER HTTP_USER_AGENT REMOTE_ADDR REMOTE_PORT SCRIPT_FILENAME SERVER_ADMIN SERVER_PORT SERVER_SIGNATURE PATH_TRANSLATED SCRIPT_NAME REQUEST_URI contained + +" Internal Variables +syn keyword phpIntVar GLOBALS PHP_ERRMSG PHP_SELF HTTP_GET_VARS HTTP_POST_VARS HTTP_COOKIE_VARS HTTP_POST_FILES HTTP_ENV_VARS HTTP_SERVER_VARS HTTP_SESSION_VARS HTTP_RAW_POST_DATA HTTP_STATE_VARS _GET _POST _COOKIE _FILES _SERVER _ENV _SERVER _REQUEST _SESSION contained + +" Constants +syn keyword phpCoreConstant PHP_VERSION PHP_OS DEFAULT_INCLUDE_PATH PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_BINDIR PHP_LIBDIR PHP_DATADIR PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_ALL contained + +syn case ignore + +syn keyword phpConstant __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__ __DIR__ __NAMESPACE__ contained + + +" Function and Methods ripped from php_manual_de.tar.gz Jan 2003 +syn keyword phpFunctions apache_child_terminate apache_get_modules apache_get_version apache_getenv apache_lookup_uri apache_note apache_request_headers apache_response_headers apache_setenv ascii2ebcdic ebcdic2ascii getallheaders virtual contained +syn keyword phpFunctions array_change_key_case array_chunk array_combine array_count_values array_diff_assoc array_diff_uassoc array_diff array_fill array_filter array_flip array_intersect_assoc array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_push array_rand array_reduce array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_unique array_unshift array_values array_walk array arsort asort compact count current each end extract in_array key krsort ksort list natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort contained +syn keyword phpFunctions aspell_check aspell_new aspell_suggest contained +syn keyword phpFunctions bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub contained +syn keyword phpFunctions bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite contained +syn keyword phpFunctions cal_days_in_month cal_from_jd cal_info cal_to_jd easter_date easter_days frenchtojd gregoriantojd jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd juliantojd unixtojd contained +syn keyword phpFunctions ccvs_add ccvs_auth ccvs_command ccvs_count ccvs_delete ccvs_done ccvs_init ccvs_lookup ccvs_new ccvs_report ccvs_return ccvs_reverse ccvs_sale ccvs_status ccvs_textvalue ccvs_void contained +syn keyword phpFunctions call_user_method_array call_user_method class_exists get_class_methods get_class_vars get_class get_declared_classes get_object_vars get_parent_class is_a is_subclass_of method_exists contained +syn keyword phpFunctions com VARIANT com_addref com_get com_invoke com_isenum com_load_typelib com_load com_propget com_propput com_propset com_release com_set contained +syn keyword phpFunctions cpdf_add_annotation cpdf_add_outline cpdf_arc cpdf_begin_text cpdf_circle cpdf_clip cpdf_close cpdf_closepath_fill_stroke cpdf_closepath_stroke cpdf_closepath cpdf_continue_text cpdf_curveto cpdf_end_text cpdf_fill_stroke cpdf_fill cpdf_finalize_page cpdf_finalize cpdf_global_set_document_limits cpdf_import_jpeg cpdf_lineto cpdf_moveto cpdf_newpath cpdf_open cpdf_output_buffer cpdf_page_init cpdf_place_inline_image cpdf_rect cpdf_restore cpdf_rlineto cpdf_rmoveto cpdf_rotate_text cpdf_rotate cpdf_save_to_file cpdf_save cpdf_scale cpdf_set_action_url cpdf_set_char_spacing cpdf_set_creator cpdf_set_current_page cpdf_set_font_directories cpdf_set_font_map_file cpdf_set_font cpdf_set_horiz_scaling cpdf_set_keywords cpdf_set_leading cpdf_set_page_animation cpdf_set_subject cpdf_set_text_matrix cpdf_set_text_pos cpdf_set_text_rendering cpdf_set_text_rise cpdf_set_title cpdf_set_viewer_preferences cpdf_set_word_spacing cpdf_setdash cpdf_setflat cpdf_setgray_fill cpdf_setgray_stroke cpdf_setgray cpdf_setlinecap cpdf_setlinejoin cpdf_setlinewidth cpdf_setmiterlimit cpdf_setrgbcolor_fill cpdf_setrgbcolor_stroke cpdf_setrgbcolor cpdf_show_xy cpdf_show cpdf_stringwidth cpdf_stroke cpdf_text cpdf_translate contained +syn keyword phpFunctions crack_check crack_closedict crack_getlastmessage crack_opendict contained +syn keyword phpFunctions ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit contained +syn keyword phpFunctions curl_close curl_errno curl_error curl_exec curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_setopt curl_version contained +syn keyword phpFunctions cybercash_base64_decode cybercash_base64_encode cybercash_decr cybercash_encr contained +syn keyword phpFunctions cyrus_authenticate cyrus_bind cyrus_close cyrus_connect cyrus_query cyrus_unbind contained +syn keyword phpFunctions checkdate date getdate gettimeofday gmdate gmmktime gmstrftime localtime microtime mktime strftime strtotime time contained +syn keyword phpFunctions dba_close dba_delete dba_exists dba_fetch dba_firstkey dba_handlers dba_insert dba_key_split dba_list dba_nextkey dba_open dba_optimize dba_popen dba_replace dba_sync contained +syn keyword phpFunctions dbase_add_record dbase_close dbase_create dbase_delete_record dbase_get_header_info dbase_get_record_with_names dbase_get_record dbase_numfields dbase_numrecords dbase_open dbase_pack dbase_replace_record contained +syn keyword phpFunctions dblist dbmclose dbmdelete dbmexists dbmfetch dbmfirstkey dbminsert dbmnextkey dbmopen dbmreplace contained +syn keyword phpFunctions dbplus_add dbplus_aql dbplus_chdir dbplus_close dbplus_curr dbplus_errcode dbplus_errno dbplus_find dbplus_first dbplus_flush dbplus_freealllocks dbplus_freelock dbplus_freerlocks dbplus_getlock dbplus_getunique dbplus_info dbplus_last dbplus_lockrel dbplus_next dbplus_open dbplus_prev dbplus_rchperm dbplus_rcreate dbplus_rcrtexact dbplus_rcrtlike dbplus_resolve dbplus_restorepos dbplus_rkeys dbplus_ropen dbplus_rquery dbplus_rrename dbplus_rsecindex dbplus_runlink dbplus_rzap dbplus_savepos dbplus_setindex dbplus_setindexbynumber dbplus_sql dbplus_tcl dbplus_tremove dbplus_undo dbplus_undoprepare dbplus_unlockrel dbplus_unselect dbplus_update dbplus_xlockrel dbplus_xunlockrel contained +syn keyword phpFunctions dbx_close dbx_compare dbx_connect dbx_error dbx_escape_string dbx_fetch_row dbx_query dbx_sort contained +syn keyword phpFunctions dio_close dio_fcntl dio_open dio_read dio_seek dio_stat dio_tcsetattr dio_truncate dio_write contained +syn keyword phpFunctions chdir chroot dir closedir getcwd opendir readdir rewinddir scandir contained +syn keyword phpFunctions domxml_new_doc domxml_open_file domxml_open_mem domxml_version domxml_xmltree domxml_xslt_stylesheet_doc domxml_xslt_stylesheet_file domxml_xslt_stylesheet xpath_eval_expression xpath_eval xpath_new_context xptr_eval xptr_new_context contained +syn keyword phpMethods name specified value create_attribute create_cdata_section create_comment create_element_ns create_element create_entity_reference create_processing_instruction create_text_node doctype document_element dump_file dump_mem get_element_by_id get_elements_by_tagname html_dump_mem xinclude entities internal_subset name notations public_id system_id get_attribute_node get_attribute get_elements_by_tagname has_attribute remove_attribute set_attribute tagname add_namespace append_child append_sibling attributes child_nodes clone_node dump_node first_child get_content has_attributes has_child_nodes insert_before is_blank_node last_child next_sibling node_name node_type node_value owner_document parent_node prefix previous_sibling remove_child replace_child replace_node set_content set_name set_namespace unlink_node data target process result_dump_file result_dump_mem contained +syn keyword phpFunctions dotnet_load contained +syn keyword phpFunctions debug_backtrace debug_print_backtrace error_log error_reporting restore_error_handler set_error_handler trigger_error user_error contained +syn keyword phpFunctions escapeshellarg escapeshellcmd exec passthru proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec system contained +syn keyword phpFunctions fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor contained +syn keyword phpFunctions fbsql_affected_rows fbsql_autocommit fbsql_change_user fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_select_db fbsql_set_lob_mode fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_tablename fbsql_username fbsql_warnings contained +syn keyword phpFunctions fdf_add_doc_javascript fdf_add_template fdf_close fdf_create fdf_enum_values fdf_errno fdf_error fdf_get_ap fdf_get_attachment fdf_get_encoding fdf_get_file fdf_get_flags fdf_get_opt fdf_get_status fdf_get_value fdf_get_version fdf_header fdf_next_field_name fdf_open_string fdf_open fdf_remove_item fdf_save_string fdf_save fdf_set_ap fdf_set_encoding fdf_set_file fdf_set_flags fdf_set_javascript_action fdf_set_opt fdf_set_status fdf_set_submit_form_action fdf_set_target_frame fdf_set_value fdf_set_version contained +syn keyword phpFunctions filepro_fieldcount filepro_fieldname filepro_fieldtype filepro_fieldwidth filepro_retrieve filepro_rowcount filepro contained +syn keyword phpFunctions basename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink contained +syn keyword phpFunctions fribidi_log2vis contained +syn keyword phpFunctions ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype contained +syn keyword phpFunctions call_user_func_array call_user_func create_function func_get_arg func_get_args func_num_args function_exists get_defined_functions register_shutdown_function register_tick_function unregister_tick_function contained +syn keyword phpFunctions bind_textdomain_codeset bindtextdomain dcgettext dcngettext dgettext dngettext gettext ngettext textdomain contained +syn keyword phpFunctions gmp_abs gmp_add gmp_and gmp_clrbit gmp_cmp gmp_com gmp_div_q gmp_div_qr gmp_div_r gmp_div gmp_divexact gmp_fact gmp_gcd gmp_gcdext gmp_hamdist gmp_init gmp_intval gmp_invert gmp_jacobi gmp_legendre gmp_mod gmp_mul gmp_neg gmp_or gmp_perfect_square gmp_popcount gmp_pow gmp_powm gmp_prob_prime gmp_random gmp_scan0 gmp_scan1 gmp_setbit gmp_sign gmp_sqrt gmp_sqrtrem gmp_sqrtrm gmp_strval gmp_sub gmp_xor contained +syn keyword phpFunctions header headers_list headers_sent setcookie contained +syn keyword phpFunctions hw_api_attribute hwapi_hgcsp hw_api_content hw_api_object contained +syn keyword phpMethods key langdepvalue value values checkin checkout children mimetype read content copy dbstat dcstat dstanchors dstofsrcanchors count reason find ftstat hwstat identify info insert insertanchor insertcollection insertdocument link lock move assign attreditable count insert remove title value object objectbyanchor parents description type remove replace setcommitedversion srcanchors srcsofdst unlock user userlist contained +syn keyword phpFunctions hw_Array2Objrec hw_changeobject hw_Children hw_ChildrenObj hw_Close hw_Connect hw_connection_info hw_cp hw_Deleteobject hw_DocByAnchor hw_DocByAnchorObj hw_Document_Attributes hw_Document_BodyTag hw_Document_Content hw_Document_SetContent hw_Document_Size hw_dummy hw_EditText hw_Error hw_ErrorMsg hw_Free_Document hw_GetAnchors hw_GetAnchorsObj hw_GetAndLock hw_GetChildColl hw_GetChildCollObj hw_GetChildDocColl hw_GetChildDocCollObj hw_GetObject hw_GetObjectByQuery hw_GetObjectByQueryColl hw_GetObjectByQueryCollObj hw_GetObjectByQueryObj hw_GetParents hw_GetParentsObj hw_getrellink hw_GetRemote hw_getremotechildren hw_GetSrcByDestObj hw_GetText hw_getusername hw_Identify hw_InCollections hw_Info hw_InsColl hw_InsDoc hw_insertanchors hw_InsertDocument hw_InsertObject hw_mapid hw_Modifyobject hw_mv hw_New_Document hw_objrec2array hw_Output_Document hw_pConnect hw_PipeDocument hw_Root hw_setlinkroot hw_stat hw_Unlock hw_Who contained +syn keyword phpFunctions ibase_add_user ibase_affected_rows ibase_blob_add ibase_blob_cancel ibase_blob_close ibase_blob_create ibase_blob_echo ibase_blob_get ibase_blob_import ibase_blob_info ibase_blob_open ibase_close ibase_commit_ret ibase_commit ibase_connect ibase_delete_user ibase_drop_db ibase_errcode ibase_errmsg ibase_execute ibase_fetch_assoc ibase_fetch_object ibase_fetch_row ibase_field_info ibase_free_event_handler ibase_free_query ibase_free_result ibase_gen_id ibase_modify_user ibase_name_result ibase_num_fields ibase_num_params ibase_param_info ibase_pconnect ibase_prepare ibase_query ibase_rollback_ret ibase_rollback ibase_set_event_handler ibase_timefmt ibase_trans ibase_wait_event contained +syn keyword phpFunctions iconv_get_encoding iconv_mime_decode_headers iconv_mime_decode iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr iconv ob_iconv_handler contained +syn keyword phpFunctions ifx_affected_rows ifx_blobinfile_mode ifx_byteasvarchar ifx_close ifx_connect ifx_copy_blob ifx_create_blob ifx_create_char ifx_do ifx_error ifx_errormsg ifx_fetch_row ifx_fieldproperties ifx_fieldtypes ifx_free_blob ifx_free_char ifx_free_result ifx_get_blob ifx_get_char ifx_getsqlca ifx_htmltbl_result ifx_nullformat ifx_num_fields ifx_num_rows ifx_pconnect ifx_prepare ifx_query ifx_textasvarchar ifx_update_blob ifx_update_char ifxus_close_slob ifxus_create_slob ifxus_free_slob ifxus_open_slob ifxus_read_slob ifxus_seek_slob ifxus_tell_slob ifxus_write_slob contained +syn keyword phpFunctions exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data contained +syn keyword phpFunctions imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct imap_check imap_clearflag_full imap_close imap_createmailbox imap_delete imap_deletemailbox imap_errors imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchstructure imap_get_quota imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers imap_last_error imap_list imap_listmailbox imap_listscan imap_listsubscribed imap_lsub imap_mail_compose imap_mail_copy imap_mail_move imap_mail imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open imap_ping imap_qprint imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers imap_rfc822_write_address imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode imap_utf7_encode imap_utf8 contained +syn keyword phpFunctions assert_options assert dl extension_loaded get_cfg_var get_current_user get_defined_constants get_extension_funcs get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_required_files getenv getlastmod getmygid getmyinode getmypid getmyuid getopt getrusage ini_alter ini_get_all ini_get ini_restore ini_set main memory_get_usage php_ini_scanned_files php_logo_guid php_sapi_name php_uname phpcredits phpinfo phpversion putenv restore_include_path set_include_path set_magic_quotes_runtime set_time_limit version_compare zend_logo_guid zend_version contained +syn keyword phpFunctions ingres_autocommit ingres_close ingres_commit ingres_connect ingres_fetch_array ingres_fetch_object ingres_fetch_row ingres_field_length ingres_field_name ingres_field_nullable ingres_field_precision ingres_field_scale ingres_field_type ingres_num_fields ingres_num_rows ingres_pconnect ingres_query ingres_rollback contained +syn keyword phpFunctions ircg_channel_mode ircg_disconnect ircg_fetch_error_msg ircg_get_username ircg_html_encode ircg_ignore_add ircg_ignore_del ircg_is_conn_alive ircg_join ircg_kick ircg_lookup_format_messages ircg_msg ircg_nick ircg_nickname_escape ircg_nickname_unescape ircg_notice ircg_part ircg_pconnect ircg_register_format_messages ircg_set_current ircg_set_file ircg_set_on_die ircg_topic ircg_whois contained +syn keyword phpFunctions java_last_exception_clear java_last_exception_get contained +syn keyword phpFunctions json_decode json_encode json_last_error contained +syn keyword phpFunctions ldap_8859_to_t61 ldap_add ldap_bind ldap_close ldap_compare ldap_connect ldap_count_entries ldap_delete ldap_dn2ufn ldap_err2str ldap_errno ldap_error ldap_explode_dn ldap_first_attribute ldap_first_entry ldap_first_reference ldap_free_result ldap_get_attributes ldap_get_dn ldap_get_entries ldap_get_option ldap_get_values_len ldap_get_values ldap_list ldap_mod_add ldap_mod_del ldap_mod_replace ldap_modify ldap_next_attribute ldap_next_entry ldap_next_reference ldap_parse_reference ldap_parse_result ldap_read ldap_rename ldap_search ldap_set_option ldap_set_rebind_proc ldap_sort ldap_start_tls ldap_t61_to_8859 ldap_unbind contained +syn keyword phpFunctions lzf_compress lzf_decompress lzf_optimized_for contained +syn keyword phpFunctions ezmlm_hash mail contained +syn keyword phpFunctions mailparse_determine_best_xfer_encoding mailparse_msg_create mailparse_msg_extract_part_file mailparse_msg_extract_part mailparse_msg_free mailparse_msg_get_part_data mailparse_msg_get_part mailparse_msg_get_structure mailparse_msg_parse_file mailparse_msg_parse mailparse_rfc822_parse_addresses mailparse_stream_encode mailparse_uudecode_all contained +syn keyword phpFunctions abs acos acosh asin asinh atan2 atan atanh base_convert bindec ceil cos cosh decbin dechex decoct deg2rad exp expm1 floor fmod getrandmax hexdec hypot is_finite is_infinite is_nan lcg_value log10 log1p log max min mt_getrandmax mt_rand mt_srand octdec pi pow rad2deg rand round sin sinh sqrt srand tan tanh contained +syn keyword phpFunctions mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_ereg_match mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_get_info mb_http_input mb_http_output mb_internal_encoding mb_language mb_output_handler mb_parse_str mb_preferred_mime_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_strlen mb_strpos mb_strrpos mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr contained +syn keyword phpFunctions mcal_append_event mcal_close mcal_create_calendar mcal_date_compare mcal_date_valid mcal_day_of_week mcal_day_of_year mcal_days_in_month mcal_delete_calendar mcal_delete_event mcal_event_add_attribute mcal_event_init mcal_event_set_alarm mcal_event_set_category mcal_event_set_class mcal_event_set_description mcal_event_set_end mcal_event_set_recur_daily mcal_event_set_recur_monthly_mday mcal_event_set_recur_monthly_wday mcal_event_set_recur_none mcal_event_set_recur_weekly mcal_event_set_recur_yearly mcal_event_set_start mcal_event_set_title mcal_expunge mcal_fetch_current_stream_event mcal_fetch_event mcal_is_leap_year mcal_list_alarms mcal_list_events mcal_next_recurrence mcal_open mcal_popen mcal_rename_calendar mcal_reopen mcal_snooze mcal_store_event mcal_time_valid mcal_week_of_year contained +syn keyword phpFunctions mcrypt_cbc mcrypt_cfb mcrypt_create_iv mcrypt_decrypt mcrypt_ecb mcrypt_enc_get_algorithms_name mcrypt_enc_get_block_size mcrypt_enc_get_iv_size mcrypt_enc_get_key_size mcrypt_enc_get_modes_name mcrypt_enc_get_supported_key_sizes mcrypt_enc_is_block_algorithm_mode mcrypt_enc_is_block_algorithm mcrypt_enc_is_block_mode mcrypt_enc_self_test mcrypt_encrypt mcrypt_generic_deinit mcrypt_generic_end mcrypt_generic_init mcrypt_generic mcrypt_get_block_size mcrypt_get_cipher_name mcrypt_get_iv_size mcrypt_get_key_size mcrypt_list_algorithms mcrypt_list_modes mcrypt_module_close mcrypt_module_get_algo_block_size mcrypt_module_get_algo_key_size mcrypt_module_get_supported_key_sizes mcrypt_module_is_block_algorithm_mode mcrypt_module_is_block_algorithm mcrypt_module_is_block_mode mcrypt_module_open mcrypt_module_self_test mcrypt_ofb mdecrypt_generic contained +syn keyword phpFunctions mcve_adduser mcve_adduserarg mcve_bt mcve_checkstatus mcve_chkpwd mcve_chngpwd mcve_completeauthorizations mcve_connect mcve_connectionerror mcve_deleteresponse mcve_deletetrans mcve_deleteusersetup mcve_deluser mcve_destroyconn mcve_destroyengine mcve_disableuser mcve_edituser mcve_enableuser mcve_force mcve_getcell mcve_getcellbynum mcve_getcommadelimited mcve_getheader mcve_getuserarg mcve_getuserparam mcve_gft mcve_gl mcve_gut mcve_initconn mcve_initengine mcve_initusersetup mcve_iscommadelimited mcve_liststats mcve_listusers mcve_maxconntimeout mcve_monitor mcve_numcolumns mcve_numrows mcve_override mcve_parsecommadelimited mcve_ping mcve_preauth mcve_preauthcompletion mcve_qc mcve_responseparam mcve_return mcve_returncode mcve_returnstatus mcve_sale mcve_setblocking mcve_setdropfile mcve_setip mcve_setssl_files mcve_setssl mcve_settimeout mcve_settle mcve_text_avs mcve_text_code mcve_text_cv mcve_transactionauth mcve_transactionavs mcve_transactionbatch mcve_transactioncv mcve_transactionid mcve_transactionitem mcve_transactionssent mcve_transactiontext mcve_transinqueue mcve_transnew mcve_transparam mcve_transsend mcve_ub mcve_uwait mcve_verifyconnection mcve_verifysslcert mcve_void contained +syn keyword phpFunctions mhash_count mhash_get_block_size mhash_get_hash_name mhash_keygen_s2k mhash contained +syn keyword phpFunctions mime_content_type contained +syn keyword phpFunctions ming_setcubicthreshold ming_setscale ming_useswfversion SWFAction SWFBitmap swfbutton_keypress SWFbutton SWFDisplayItem SWFFill SWFFont SWFGradient SWFMorph SWFMovie SWFShape SWFSprite SWFText SWFTextField contained +syn keyword phpMethods getHeight getWidth addAction addShape setAction setdown setHit setOver setUp addColor move moveTo multColor remove Rotate rotateTo scale scaleTo setDepth setName setRatio skewX skewXTo skewY skewYTo moveTo rotateTo scaleTo skewXTo skewYTo getwidth addEntry getshape1 getshape2 add nextframe output remove save setbackground setdimension setframes setrate streammp3 addFill drawCurve drawCurveTo drawLine drawLineTo movePen movePenTo setLeftFill setLine setRightFill add nextframe remove setframes addString getWidth moveTo setColor setFont setHeight setSpacing addstring align setbounds setcolor setFont setHeight setindentation setLeftMargin setLineSpacing setMargins setname setrightMargin contained +syn keyword phpFunctions connection_aborted connection_status connection_timeout constant define defined die eval exit get_browser highlight_file highlight_string ignore_user_abort pack show_source sleep uniqid unpack usleep contained +syn keyword phpFunctions udm_add_search_limit udm_alloc_agent udm_api_version udm_cat_list udm_cat_path udm_check_charset udm_check_stored udm_clear_search_limits udm_close_stored udm_crc32 udm_errno udm_error udm_find udm_free_agent udm_free_ispell_data udm_free_res udm_get_doc_count udm_get_res_field udm_get_res_param udm_load_ispell_data udm_open_stored udm_set_agent_param contained +syn keyword phpFunctions msession_connect msession_count msession_create msession_destroy msession_disconnect msession_find msession_get_array msession_get msession_getdata msession_inc msession_list msession_listvar msession_lock msession_plugin msession_randstr msession_set_array msession_set msession_setdata msession_timeout msession_uniq msession_unlock contained +syn keyword phpFunctions msql_affected_rows msql_close msql_connect msql_create_db msql_createdb msql_data_seek msql_dbname msql_drop_db msql_dropdb msql_error msql_fetch_array msql_fetch_field msql_fetch_object msql_fetch_row msql_field_seek msql_fieldflags msql_fieldlen msql_fieldname msql_fieldtable msql_fieldtype msql_free_result msql_freeresult msql_list_dbs msql_list_fields msql_list_tables msql_listdbs msql_listfields msql_listtables msql_num_fields msql_num_rows msql_numfields msql_numrows msql_pconnect msql_query msql_regcase msql_result msql_select_db msql_selectdb msql_tablename msql contained +syn keyword phpFunctions mssql_bind mssql_close mssql_connect mssql_data_seek mssql_execute mssql_fetch_array mssql_fetch_assoc mssql_fetch_batch mssql_fetch_field mssql_fetch_object mssql_fetch_row mssql_field_length mssql_field_name mssql_field_seek mssql_field_type mssql_free_result mssql_free_statement mssql_get_last_message mssql_guid_string mssql_init mssql_min_error_severity mssql_min_message_severity mssql_next_result mssql_num_fields mssql_num_rows mssql_pconnect mssql_query mssql_result mssql_rows_affected mssql_select_db contained +syn keyword phpFunctions muscat_close muscat_get muscat_give muscat_setup_net muscat_setup contained +syn keyword phpFunctions mysql_affected_rows mysql_change_user mysql_client_encoding mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_name mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_free_result mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_num_fields mysql_num_rows mysql_pconnect mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_stat mysql_tablename mysql_thread_id mysql_unbuffered_query contained +syn keyword phpFunctions mysqli_affected_rows mysqli_autocommit mysqli_bind_param mysqli_bind_result mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect mysqli_data_seek mysqli_debug mysqli_disable_reads_from_master mysqli_disable_rpl_parse mysqli_dump_debug_info mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_errno mysqli_error mysqli_execute mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_fetch mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_client_info mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_master_query mysqli_num_fields mysqli_num_rows mysqli_options mysqli_param_count mysqli_ping mysqli_prepare_result mysqli_prepare mysqli_profiler mysqli_query mysqli_read_query_result mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reload mysqli_rollback mysqli_rpl_parse_enabled mysqli_rpl_probe mysqli_rpl_query_type mysqli_select_db mysqli_send_long_data mysqli_send_query mysqli_slave_query mysqli_ssl_set mysqli_stat mysqli_stmt_affected_rows mysqli_stmt_close mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_store_result mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count contained +syn keyword phpFunctions ncurses_addch ncurses_addchnstr ncurses_addchstr ncurses_addnstr ncurses_addstr ncurses_assume_default_colors ncurses_attroff ncurses_attron ncurses_attrset ncurses_baudrate ncurses_beep ncurses_bkgd ncurses_bkgdset ncurses_border ncurses_bottom_panel ncurses_can_change_color ncurses_cbreak ncurses_clear ncurses_clrtobot ncurses_clrtoeol ncurses_color_content ncurses_color_set ncurses_curs_set ncurses_def_prog_mode ncurses_def_shell_mode ncurses_define_key ncurses_del_panel ncurses_delay_output ncurses_delch ncurses_deleteln ncurses_delwin ncurses_doupdate ncurses_echo ncurses_echochar ncurses_end ncurses_erase ncurses_erasechar ncurses_filter ncurses_flash ncurses_flushinp ncurses_getch ncurses_getmaxyx ncurses_getmouse ncurses_getyx ncurses_halfdelay ncurses_has_colors ncurses_has_ic ncurses_has_il ncurses_has_key ncurses_hide_panel ncurses_hline ncurses_inch ncurses_init_color ncurses_init_pair ncurses_init ncurses_insch ncurses_insdelln ncurses_insertln ncurses_insstr ncurses_instr ncurses_isendwin ncurses_keyok ncurses_keypad ncurses_killchar ncurses_longname ncurses_meta ncurses_mouse_trafo ncurses_mouseinterval ncurses_mousemask ncurses_move_panel ncurses_move ncurses_mvaddch ncurses_mvaddchnstr ncurses_mvaddchstr ncurses_mvaddnstr ncurses_mvaddstr ncurses_mvcur ncurses_mvdelch ncurses_mvgetch ncurses_mvhline ncurses_mvinch ncurses_mvvline ncurses_mvwaddstr ncurses_napms ncurses_new_panel ncurses_newpad ncurses_newwin ncurses_nl ncurses_nocbreak ncurses_noecho ncurses_nonl ncurses_noqiflush ncurses_noraw ncurses_pair_content ncurses_panel_above ncurses_panel_below ncurses_panel_window ncurses_pnoutrefresh ncurses_prefresh ncurses_putp ncurses_qiflush ncurses_raw ncurses_refresh ncurses_replace_panel ncurses_reset_prog_mode ncurses_reset_shell_mode ncurses_resetty ncurses_savetty ncurses_scr_dump ncurses_scr_init ncurses_scr_restore ncurses_scr_set ncurses_scrl ncurses_show_panel ncurses_slk_attr ncurses_slk_attroff ncurses_slk_attron ncurses_slk_attrset ncurses_slk_clear ncurses_slk_color ncurses_slk_init ncurses_slk_noutrefresh ncurses_slk_refresh ncurses_slk_restore ncurses_slk_set ncurses_slk_touch ncurses_standend ncurses_standout ncurses_start_color ncurses_termattrs ncurses_termname ncurses_timeout ncurses_top_panel ncurses_typeahead ncurses_ungetch ncurses_ungetmouse ncurses_update_panels ncurses_use_default_colors ncurses_use_env ncurses_use_extended_names ncurses_vidattr ncurses_vline ncurses_waddch ncurses_waddstr ncurses_wattroff ncurses_wattron ncurses_wattrset ncurses_wborder ncurses_wclear ncurses_wcolor_set ncurses_werase ncurses_wgetch ncurses_whline ncurses_wmouse_trafo ncurses_wmove ncurses_wnoutrefresh ncurses_wrefresh ncurses_wstandend ncurses_wstandout ncurses_wvline contained +syn keyword phpFunctions checkdnsrr closelog debugger_off debugger_on define_syslog_variables dns_check_record dns_get_mx dns_get_record fsockopen gethostbyaddr gethostbyname gethostbynamel getmxrr getprotobyname getprotobynumber getservbyname getservbyport ip2long long2ip openlog pfsockopen socket_get_status socket_set_blocking socket_set_timeout syslog contained +syn keyword phpFunctions yp_all yp_cat yp_err_string yp_errno yp_first yp_get_default_domain yp_master yp_match yp_next yp_order contained +syn keyword phpFunctions notes_body notes_copy_db notes_create_db notes_create_note notes_drop_db notes_find_note notes_header_info notes_list_msgs notes_mark_read notes_mark_unread notes_nav_create notes_search notes_unread notes_version contained +syn keyword phpFunctions nsapi_request_headers nsapi_response_headers nsapi_virtual contained +syn keyword phpFunctions aggregate_info aggregate_methods_by_list aggregate_methods_by_regexp aggregate_methods aggregate_properties_by_list aggregate_properties_by_regexp aggregate_properties aggregate aggregation_info deaggregate contained +syn keyword phpFunctions ocibindbyname ocicancel ocicloselob ocicollappend ocicollassign ocicollassignelem ocicollgetelem ocicollmax ocicollsize ocicolltrim ocicolumnisnull ocicolumnname ocicolumnprecision ocicolumnscale ocicolumnsize ocicolumntype ocicolumntyperaw ocicommit ocidefinebyname ocierror ociexecute ocifetch ocifetchinto ocifetchstatement ocifreecollection ocifreecursor ocifreedesc ocifreestatement ociinternaldebug ociloadlob ocilogoff ocilogon ocinewcollection ocinewcursor ocinewdescriptor ocinlogon ocinumcols ociparse ociplogon ociresult ocirollback ocirowcount ocisavelob ocisavelobfile ociserverversion ocisetprefetch ocistatementtype ociwritelobtofile ociwritetemporarylob contained +syn keyword phpFunctions odbc_autocommit odbc_binmode odbc_close_all odbc_close odbc_columnprivileges odbc_columns odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns odbc_procedures odbc_result_all odbc_result odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics odbc_tableprivileges odbc_tables contained +syn keyword phpFunctions openssl_csr_export_to_file openssl_csr_export openssl_csr_new openssl_csr_sign openssl_error_string openssl_free_key openssl_get_privatekey openssl_get_publickey openssl_open openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_seal openssl_sign openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_free openssl_x509_parse openssl_x509_read contained +syn keyword phpFunctions ora_bind ora_close ora_columnname ora_columnsize ora_columntype ora_commit ora_commitoff ora_commiton ora_do ora_error ora_errorcode ora_exec ora_fetch_into ora_fetch ora_getcolumn ora_logoff ora_logon ora_numcols ora_numrows ora_open ora_parse ora_plogon ora_rollback contained +syn keyword phpFunctions flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars contained +syn keyword phpFunctions overload contained +syn keyword phpFunctions ovrimos_close ovrimos_commit ovrimos_connect ovrimos_cursor ovrimos_exec ovrimos_execute ovrimos_fetch_into ovrimos_fetch_row ovrimos_field_len ovrimos_field_name ovrimos_field_num ovrimos_field_type ovrimos_free_result ovrimos_longreadlen ovrimos_num_fields ovrimos_num_rows ovrimos_prepare ovrimos_result_all ovrimos_result ovrimos_rollback contained +syn keyword phpFunctions pcntl_exec pcntl_fork pcntl_signal pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig contained +syn keyword phpFunctions preg_grep preg_match_all preg_match preg_quote preg_replace_callback preg_replace preg_split contained +syn keyword phpFunctions pdf_add_annotation pdf_add_bookmark pdf_add_launchlink pdf_add_locallink pdf_add_note pdf_add_outline pdf_add_pdflink pdf_add_thumbnail pdf_add_weblink pdf_arc pdf_arcn pdf_attach_file pdf_begin_page pdf_begin_pattern pdf_begin_template pdf_circle pdf_clip pdf_close_image pdf_close_pdi_page pdf_close_pdi pdf_close pdf_closepath_fill_stroke pdf_closepath_stroke pdf_closepath pdf_concat pdf_continue_text pdf_curveto pdf_delete pdf_end_page pdf_end_pattern pdf_end_template pdf_endpath pdf_fill_stroke pdf_fill pdf_findfont pdf_get_buffer pdf_get_font pdf_get_fontname pdf_get_fontsize pdf_get_image_height pdf_get_image_width pdf_get_majorversion pdf_get_minorversion pdf_get_parameter pdf_get_pdi_parameter pdf_get_pdi_value pdf_get_value pdf_initgraphics pdf_lineto pdf_makespotcolor pdf_moveto pdf_new pdf_open_CCITT pdf_open_file pdf_open_gif pdf_open_image_file pdf_open_image pdf_open_jpeg pdf_open_memory_image pdf_open_pdi_page pdf_open_pdi pdf_open_png pdf_open_tiff pdf_open pdf_place_image pdf_place_pdi_page pdf_rect pdf_restore pdf_rotate pdf_save pdf_scale pdf_set_border_color pdf_set_border_dash pdf_set_border_style pdf_set_char_spacing pdf_set_duration pdf_set_font pdf_set_horiz_scaling pdf_set_info_author pdf_set_info_creator pdf_set_info_keywords pdf_set_info_subject pdf_set_info_title pdf_set_info pdf_set_leading pdf_set_parameter pdf_set_text_matrix pdf_set_text_pos pdf_set_text_rendering pdf_set_text_rise pdf_set_value pdf_set_word_spacing pdf_setcolor pdf_setdash pdf_setflat pdf_setfont pdf_setgray_fill pdf_setgray_stroke pdf_setgray pdf_setlinecap pdf_setlinejoin pdf_setlinewidth pdf_setmatrix pdf_setmiterlimit pdf_setpolydash pdf_setrgbcolor_fill pdf_setrgbcolor_stroke pdf_setrgbcolor pdf_show_boxed pdf_show_xy pdf_show pdf_skew pdf_stringwidth pdf_stroke pdf_translate contained +syn keyword phpFunctions pfpro_cleanup pfpro_init pfpro_process_raw pfpro_process pfpro_version contained +syn keyword phpFunctions pg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_string pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_type pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_pconnect pg_ping pg_port pg_put_line pg_query pg_result_error pg_result_seek pg_result_status pg_select pg_send_query pg_set_client_encoding pg_trace pg_tty pg_unescape_bytea pg_untrace pg_update contained +syn keyword phpFunctions posix_ctermid posix_get_last_error posix_getcwd posix_getegid posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid posix_isatty posix_kill posix_mkfifo posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid posix_setuid posix_strerror posix_times posix_ttyname posix_uname contained +syn keyword phpFunctions printer_abort printer_close printer_create_brush printer_create_dc printer_create_font printer_create_pen printer_delete_brush printer_delete_dc printer_delete_font printer_delete_pen printer_draw_bmp printer_draw_chord printer_draw_elipse printer_draw_line printer_draw_pie printer_draw_rectangle printer_draw_roundrect printer_draw_text printer_end_doc printer_end_page printer_get_option printer_list printer_logical_fontheight printer_open printer_select_brush printer_select_font printer_select_pen printer_set_option printer_start_doc printer_start_page printer_write contained +syn keyword phpFunctions pspell_add_to_personal pspell_add_to_session pspell_check pspell_clear_session pspell_config_create pspell_config_ignore pspell_config_mode pspell_config_personal pspell_config_repl pspell_config_runtogether pspell_config_save_repl pspell_new_config pspell_new_personal pspell_new pspell_save_wordlist pspell_store_replacement pspell_suggest contained +syn keyword phpFunctions qdom_error qdom_tree contained +syn keyword phpFunctions readline_add_history readline_clear_history readline_completion_function readline_info readline_list_history readline_read_history readline_write_history readline contained +syn keyword phpFunctions recode_file recode_string recode contained +syn keyword phpFunctions ereg_replace ereg eregi_replace eregi split spliti sql_regcase contained +syn keyword phpFunctions ftok msg_get_queue msg_receive msg_remove_queue msg_send msg_set_queue msg_stat_queue sem_acquire sem_get sem_release sem_remove shm_attach shm_detach shm_get_var shm_put_var shm_remove_var shm_remove contained +syn keyword phpFunctions sesam_affected_rows sesam_commit sesam_connect sesam_diagnostic sesam_disconnect sesam_errormsg sesam_execimm sesam_fetch_array sesam_fetch_result sesam_fetch_row sesam_field_array sesam_field_name sesam_free_result sesam_num_fields sesam_query sesam_rollback sesam_seek_row sesam_settransaction contained +syn keyword phpFunctions session_cache_expire session_cache_limiter session_decode session_destroy session_encode session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id session_register session_save_path session_set_cookie_params session_set_save_handler session_start session_unregister session_unset session_write_close contained +syn keyword phpFunctions shmop_close shmop_delete shmop_open shmop_read shmop_size shmop_write contained +syn keyword phpFunctions snmp_get_quick_print snmp_set_quick_print snmpget snmprealwalk snmpset snmpwalk snmpwalkoid contained +syn keyword phpFunctions socket_accept socket_bind socket_clear_error socket_close socket_connect socket_create_listen socket_create_pair socket_create socket_get_option socket_getpeername socket_getsockname socket_iovec_add socket_iovec_alloc socket_iovec_delete socket_iovec_fetch socket_iovec_free socket_iovec_set socket_last_error socket_listen socket_read socket_readv socket_recv socket_recvfrom socket_recvmsg socket_select socket_send socket_sendmsg socket_sendto socket_set_block socket_set_nonblock socket_set_option socket_shutdown socket_strerror socket_write socket_writev contained +syn keyword phpFunctions sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_fetch_array sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_query sqlite_rewind sqlite_seek sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query contained +syn keyword phpFunctions stream_context_create stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_filter_append stream_filter_prepend stream_filter_register stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_get_name stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_wrapper_register contained +syn keyword phpFunctions addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string count_chars crc32 crypt explode fprintf get_html_translation_table hebrev hebrevc html_entity_decode htmlentities htmlspecialchars implode join levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br number_format ord parse_str print printf quoted_printable_decode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_compare substr_count substr_replace substr trim ucfirst ucwords vprintf vsprintf wordwrap contained +syn keyword phpFunctions swf_actiongeturl swf_actiongotoframe swf_actiongotolabel swf_actionnextframe swf_actionplay swf_actionprevframe swf_actionsettarget swf_actionstop swf_actiontogglequality swf_actionwaitforframe swf_addbuttonrecord swf_addcolor swf_closefile swf_definebitmap swf_definefont swf_defineline swf_definepoly swf_definerect swf_definetext swf_endbutton swf_enddoaction swf_endshape swf_endsymbol swf_fontsize swf_fontslant swf_fonttracking swf_getbitmapinfo swf_getfontinfo swf_getframe swf_labelframe swf_lookat swf_modifyobject swf_mulcolor swf_nextid swf_oncondition swf_openfile swf_ortho2 swf_ortho swf_perspective swf_placeobject swf_polarview swf_popmatrix swf_posround swf_pushmatrix swf_removeobject swf_rotate swf_scale swf_setfont swf_setframe swf_shapearc swf_shapecurveto3 swf_shapecurveto swf_shapefillbitmapclip swf_shapefillbitmaptile swf_shapefilloff swf_shapefillsolid swf_shapelinesolid swf_shapelineto swf_shapemoveto swf_showframe swf_startbutton swf_startdoaction swf_startshape swf_startsymbol swf_textwidth swf_translate swf_viewport contained +syn keyword phpFunctions sybase_affected_rows sybase_close sybase_connect sybase_data_seek sybase_deadlock_retry_count sybase_fetch_array sybase_fetch_assoc sybase_fetch_field sybase_fetch_object sybase_fetch_row sybase_field_seek sybase_free_result sybase_get_last_message sybase_min_client_severity sybase_min_error_severity sybase_min_message_severity sybase_min_server_severity sybase_num_fields sybase_num_rows sybase_pconnect sybase_query sybase_result sybase_select_db sybase_set_message_handler sybase_unbuffered_query contained +syn keyword phpFunctions tidy_access_count tidy_clean_repair tidy_config_count tidy_diagnose tidy_error_count tidy_get_body tidy_get_config tidy_get_error_buffer tidy_get_head tidy_get_html_ver tidy_get_html tidy_get_output tidy_get_release tidy_get_root tidy_get_status tidy_getopt tidy_is_xhtml tidy_load_config tidy_parse_file tidy_parse_string tidy_repair_file tidy_repair_string tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count contained +syn keyword phpMethods attributes children get_attr get_nodes has_children has_siblings is_asp is_comment is_html is_jsp is_jste is_text is_xhtml is_xml next prev tidy_node contained +syn keyword phpFunctions token_get_all token_name contained +syn keyword phpFunctions base64_decode base64_encode get_meta_tags http_build_query parse_url rawurldecode rawurlencode urldecode urlencode contained +syn keyword phpFunctions doubleval empty floatval get_defined_vars get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export contained +syn keyword phpFunctions vpopmail_add_alias_domain_ex vpopmail_add_alias_domain vpopmail_add_domain_ex vpopmail_add_domain vpopmail_add_user vpopmail_alias_add vpopmail_alias_del_domain vpopmail_alias_del vpopmail_alias_get_all vpopmail_alias_get vpopmail_auth_user vpopmail_del_domain_ex vpopmail_del_domain vpopmail_del_user vpopmail_error vpopmail_passwd vpopmail_set_user_quota contained +syn keyword phpFunctions w32api_deftype w32api_init_dtype w32api_invoke_function w32api_register_function w32api_set_call_method contained +syn keyword phpFunctions wddx_add_vars wddx_deserialize wddx_packet_end wddx_packet_start wddx_serialize_value wddx_serialize_vars contained +syn keyword phpFunctions utf8_decode utf8_encode xml_error_string xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse_into_struct xml_parse xml_parser_create_ns xml_parser_create xml_parser_free xml_parser_get_option xml_parser_set_option xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler contained +syn keyword phpFunctions xmlrpc_decode_request xmlrpc_decode xmlrpc_encode_request xmlrpc_encode xmlrpc_get_type xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback xmlrpc_server_register_method xmlrpc_set_type contained +syn keyword phpFunctions xslt_create xslt_errno xslt_error xslt_free xslt_output_process xslt_set_base xslt_set_encoding xslt_set_error_handler xslt_set_log xslt_set_sax_handler xslt_set_sax_handlers xslt_set_scheme_handler xslt_set_scheme_handlers contained +syn keyword phpFunctions yaz_addinfo yaz_ccl_conf yaz_ccl_parse yaz_close yaz_connect yaz_database yaz_element yaz_errno yaz_error yaz_es_result yaz_get_option yaz_hits yaz_itemorder yaz_present yaz_range yaz_record yaz_scan_result yaz_scan yaz_schema yaz_search yaz_set_option yaz_sort yaz_syntax yaz_wait contained +syn keyword phpFunctions zip_close zip_entry_close zip_entry_compressedsize zip_entry_compressionmethod zip_entry_filesize zip_entry_name zip_entry_open zip_entry_read zip_open zip_read contained +syn keyword phpFunctions gzclose gzcompress gzdeflate gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress gzwrite readgzfile zlib_get_coding_type contained + +if exists( "php_baselib" ) + syn keyword phpMethods query next_record num_rows affected_rows nf f p np num_fields haltmsg seek link_id query_id metadata table_names nextid connect halt free register unregister is_registered delete url purl self_url pself_url hidden_session add_query padd_query reimport_get_vars reimport_post_vars reimport_cookie_vars set_container set_tokenname release_token put_headers get_id get_id put_id freeze thaw gc reimport_any_vars start url purl login_if is_authenticated auth_preauth auth_loginform auth_validatelogin auth_refreshlogin auth_registerform auth_doregister start check have_perm permsum perm_invalid contained + syn keyword phpFunctions page_open page_close sess_load sess_save contained +endif + +" Conditional +syn keyword phpConditional declare else enddeclare endswitch elseif endif if switch contained + +" Repeat +syn keyword phpRepeat as do endfor endforeach endwhile for foreach while contained + +" Repeat +syn keyword phpLabel case default switch contained + +" Statement +syn keyword phpStatement return break continue exit goto contained + +" Keyword +syn keyword phpKeyword var const contained + +" Type +syn keyword phpType bool[ean] int[eger] real double float string array object NULL contained + +" Structure +syn keyword phpStructure namespace extends implements instanceof parent self contained + +" Operator +syn match phpOperator "[-=+%^&|*!.~?:]" contained display +syn match phpOperator "[-+*/%^&|.]=" contained display +syn match phpOperator "/[^*/]"me=e-1 contained display +syn match phpOperator "\$" contained display +syn match phpOperator "&&\|\" contained display +syn match phpOperator "||\|\" contained display +syn match phpRelation "[!=<>]=" contained display +syn match phpRelation "[<>]" contained display +syn match phpMemberSelector "->" contained display +syn match phpVarSelector "\$" contained display + +" Identifier +syn match phpIdentifier "$\h\w*" contained contains=phpEnvVar,phpIntVar,phpVarSelector display +syn match phpIdentifierSimply "${\h\w*}" contains=phpOperator,phpParent contained display +syn region phpIdentifierComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend +syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained + +" Interpolated indentifiers (inside strings) + syn match phpBrackets "[][}{]" contained display + " errors + syn match phpInterpSimpleError "\[[^]]*\]" contained display " fallback (if nothing else matches) + syn match phpInterpSimpleError "->[^a-zA-Z_]" contained display + " make sure these stay above the correct DollarCurlies so they don't take priority + syn match phpInterpBogusDollarCurley "${[^}]*}" contained display " fallback (if nothing else matches) + syn match phpinterpSimpleBracketsInner "\w\+" contained + syn match phpInterpSimpleBrackets "\[\h\w*]" contained contains=phpBrackets,phpInterpSimpleBracketsInner + syn match phpInterpSimpleBrackets "\[\d\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner + syn match phpInterpSimpleBrackets "\[0[xX]\x\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner + syn match phpInterpSimple "\$\h\w*\(\[[^]]*\]\|->\h\w*\)\?" contained contains=phpInterpSimpleBrackets,phpIdentifier,phpInterpSimpleError,phpMethods,phpMemberSelector display + syn match phpInterpVarname "\h\w*" contained + syn match phpInterpMethodName "\h\w*" contained " default color + syn match phpInterpSimpleCurly "\${\h\w*}" contains=phpInterpVarname contained extend + syn region phpInterpDollarCurley1Helper matchgroup=phpParent start="{" end="\[" contains=phpInterpVarname contained + syn region phpInterpDollarCurly1 matchgroup=phpParent start="\${\h\w*\["rs=s+1 end="]}" contains=phpInterpDollarCurley1Helper,@phpClConst contained extend + + syn match phpInterpDollarCurley2Helper "{\h\w*->" contains=phpBrackets,phpInterpVarname,phpMemberSelector contained + + syn region phpInterpDollarCurly2 matchgroup=phpParent start="\${\h\w*->"rs=s+1 end="}" contains=phpInterpDollarCurley2Helper,phpInterpMethodName contained + + syn match phpInterpBogusDollarCurley "${\h\w*->}" contained display + syn match phpInterpBogusDollarCurley "${\h\w*\[]}" contained display + + syn region phpInterpComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend + syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained + " define a cluster to get all interpolation syntaxes for double-quoted strings + syn cluster phpInterpDouble contains=phpInterpSimple,phpInterpSimpleCurly,phpInterpDollarCurly1,phpInterpDollarCurly2,phpInterpBogusDollarCurley,phpInterpComplex + +" Methoden +syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display + +" Include +syn keyword phpInclude include require include_once require_once use contained + +" Peter Hodge - added 'clone' keyword +" Define +syn keyword phpDefine new clone contained + +" Boolean +syn keyword phpBoolean true false contained + +" Number +syn match phpNumber "-\=\<\d\+\>" contained display +syn match phpNumber "\<0x\x\{1,8}\>" contained display + +" Float +syn match phpFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" contained display + +" Backslash escapes + syn case match + " for double quotes and heredoc + syn match phpBackslashSequences "\\[fnrtv\\\"$]" contained display + syn match phpBackslashSequences "\\\d\{1,3}" contained contains=phpOctalError display + syn match phpBackslashSequences "\\x\x\{1,2}" contained display + " additional sequence for double quotes only + syn match phpBackslashDoubleQuote "\\[\"]" contained display + " for single quotes only + syn match phpBackslashSingleQuote "\\[\\']" contained display + syn case ignore + + +" Error +syn match phpOctalError "[89]" contained display +if exists("php_parent_error_close") + syn match phpParentError "[)\]}]" contained display +endif + +" Todo +syn keyword phpTodo todo fixme xxx contained + +" Comment +if exists("php_parent_error_open") + syn region phpComment start="/\*" end="\*/" contained contains=phpTodo +else + syn region phpComment start="/\*" end="\*/" contained contains=phpTodo extend +endif +if version >= 600 + syn match phpComment "#.\{-}\(?>\|$\)\@=" contained contains=phpTodo + syn match phpComment "//.\{-}\(?>\|$\)\@=" contained contains=phpTodo +else + syn match phpComment "#.\{-}$" contained contains=phpTodo + syn match phpComment "#.\{-}?>"me=e-2 contained contains=phpTodo + syn match phpComment "//.\{-}$" contained contains=phpTodo + syn match phpComment "//.\{-}?>"me=e-2 contained contains=phpTodo +endif + +" String +if exists("php_parent_error_open") + syn region phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpBackslashSequences,phpBackslashDoubleQuote,@phpInterpDouble contained keepend + syn region phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpBackslashSequences,phpIdentifierSimply,phpIdentifierComplex contained keepend + syn region phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpBackslashSingleQuote contained keepend +else + syn region phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpBackslashSequences,phpBackslashDoubleQuote,@phpInterpDouble contained extend keepend + syn region phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpBackslashSequences,phpIdentifierSimply,phpIdentifierComplex contained extend keepend + syn region phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpBackslashSingleQuote contained keepend extend +endif + +" HereDoc and NowDoc +if version >= 600 + syn case match + + " HereDoc + syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\I\i*\)\2$" end="^\z1\(;\=$\)\@=" contained contains=phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar keepend extend +" including HTML,JavaScript,SQL even if not enabled via options + syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar keepend extend + syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar keepend extend + syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar keepend extend + + " NowDoc + syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\I\i*\)'$" end="^\z1\(;\=$\)\@=" contained keepend extend +" including HTML,JavaScript,SQL even if not enabled via options + syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@htmlTop keepend extend + syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop keepend extend + syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript keepend extend + syn case ignore +endif + +" Parent +if exists("php_parent_error_close") || exists("php_parent_error_open") + syn match phpParent "[{}]" contained + syn region phpParent matchgroup=Delimiter start="(" end=")" contained contains=@phpClInside transparent + syn region phpParent matchgroup=Delimiter start="\[" end="\]" contained contains=@phpClInside transparent + if !exists("php_parent_error_close") + syn match phpParent "[\])]" contained + endif +else + syn match phpParent "[({[\]})]" contained +endif + +syn cluster phpClConst contains=phpFunctions,phpIdentifier,phpConditional,phpRepeat,phpStatement,phpOperator,phpRelation,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpFloat,phpKeyword,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstant,phpCoreConstant,phpException +syn cluster phpClInside contains=@phpClConst,phpComment,phpLabel,phpParent,phpParentError,phpInclude,phpHereDoc,phpNowDoc +syn cluster phpClFunction contains=@phpClInside,phpDefine,phpParentError,phpStorageClass +syn cluster phpClTop contains=@phpClFunction,phpFoldFunction,phpFoldClass,phpFoldInterface,phpFoldTry,phpFoldCatch + +" Php Region +if exists("php_parent_error_open") + if exists("php_noShortTags") + syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop + else + syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop + endif + syn region phpRegionSc matchgroup=Delimiter start=++ contains=@phpClTop + if exists("php_asp_tags") + syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop + endif +else + if exists("php_noShortTags") + syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop keepend + else + syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop keepend + endif + syn region phpRegionSc matchgroup=Delimiter start=++ contains=@phpClTop keepend + if exists("php_asp_tags") + syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop keepend + endif +endif + +" Fold +if exists("php_folding") && php_folding==1 +" match one line constructs here and skip them at folding + syn keyword phpSCKeyword abstract final private protected public static contained + syn keyword phpFCKeyword function contained + syn keyword phpStorageClass global contained + syn match phpDefine "\(\s\|^\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\(\s\+.*[;}]\)\@=" contained contains=phpSCKeyword + syn match phpStructure "\(\s\|^\)\(abstract\s\+\|final\s\+\)*class\(\s\+.*}\)\@=" contained + syn match phpStructure "\(\s\|^\)interface\(\s\+.*}\)\@=" contained + syn match phpException "\(\s\|^\)try\(\s\+.*}\)\@=" contained + syn match phpException "\(\s\|^\)catch\(\s\+.*}\)\@=" contained + + set foldmethod=syntax + syn region phpFoldHtmlInside matchgroup=Delimiter start="?>" end="" end="-]@]\=?[<>]@!" contained containedin=phpRegion + + " highlight the 'instanceof' operator as a comparison operator rather than a structure + syntax case ignore + syntax keyword phpComparison instanceof contained containedin=phpRegion + + hi link phpComparison Statement +endif + +" ================================================================ + +" Sync +if php_sync_method==-1 + if exists("php_noShortTags") + syn sync match phpRegionSync grouphere phpRegion "^\s*\s*$+ + if exists("php_asp_tags") + syn sync match phpRegionSync grouphere phpRegionAsp "^\s*<%\(=\)\=\s*$" + endif + syn sync match phpRegionSync grouphere NONE "^\s*?>\s*$" + syn sync match phpRegionSync grouphere NONE "^\s*%>\s*$" + syn sync match phpRegionSync grouphere phpRegion "function\s.*(.*\$" + "syn sync match phpRegionSync grouphere NONE "/\i*>\s*$" +elseif php_sync_method>0 + exec "syn sync minlines=" . php_sync_method +else + exec "syn sync fromstart" +endif + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_php_syn_inits") + if version < 508 + let did_php_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink phpConstant Constant + HiLink phpCoreConstant Constant + HiLink phpComment Comment + HiLink phpException Exception + HiLink phpBoolean Boolean + HiLink phpStorageClass StorageClass + HiLink phpSCKeyword StorageClass + HiLink phpFCKeyword Define + HiLink phpStructure Structure + HiLink phpStringSingle String + HiLink phpStringDouble String + HiLink phpBacktick String + HiLink phpNumber Number + HiLink phpFloat Float + HiLink phpMethods Function + HiLink phpFunctions Function + HiLink phpBaselib Function + HiLink phpRepeat Repeat + HiLink phpConditional Conditional + HiLink phpLabel Label + HiLink phpStatement Statement + HiLink phpKeyword Statement + HiLink phpType Type + HiLink phpInclude Include + HiLink phpDefine Define + HiLink phpBackslashSequences SpecialChar + HiLink phpBackslashDoubleQuote SpecialChar + HiLink phpBackslashSingleQuote SpecialChar + HiLink phpParent Delimiter + HiLink phpBrackets Delimiter + HiLink phpIdentifierConst Delimiter + HiLink phpParentError Error + HiLink phpOctalError Error + HiLink phpInterpSimpleError Error + HiLink phpInterpBogusDollarCurley Error + HiLink phpInterpDollarCurly1 Error + HiLink phpInterpDollarCurly2 Error + HiLink phpInterpSimpleBracketsInner String + HiLink phpInterpSimpleCurly Delimiter + HiLink phpInterpVarname Identifier + HiLink phpTodo Todo + HiLink phpMemberSelector Structure + if exists("php_oldStyle") + hi phpIntVar guifg=Red ctermfg=DarkRed + hi phpEnvVar guifg=Red ctermfg=DarkRed + hi phpOperator guifg=SeaGreen ctermfg=DarkGreen + hi phpVarSelector guifg=SeaGreen ctermfg=DarkGreen + hi phpRelation guifg=SeaGreen ctermfg=DarkGreen + hi phpIdentifier guifg=DarkGray ctermfg=Brown + hi phpIdentifierSimply guifg=DarkGray ctermfg=Brown + else + HiLink phpIntVar Identifier + HiLink phpEnvVar Identifier + HiLink phpOperator Operator + HiLink phpVarSelector Operator + HiLink phpRelation Operator + HiLink phpIdentifier Identifier + HiLink phpIdentifierSimply Identifier + endif + + delcommand HiLink +endif + +let b:current_syntax = "php" + +if main_syntax == 'php' + unlet main_syntax +endif + +" put cpoptions back the way we found it +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 sts=2 sw=2 expandtab diff --git a/share/vim/vim73/syntax/phtml.vim b/share/vim/vim74/syntax/phtml.vim similarity index 100% rename from share/vim/vim73/syntax/phtml.vim rename to share/vim/vim74/syntax/phtml.vim diff --git a/share/vim/vim73/syntax/pic.vim b/share/vim/vim74/syntax/pic.vim similarity index 100% rename from share/vim/vim73/syntax/pic.vim rename to share/vim/vim74/syntax/pic.vim diff --git a/share/vim/vim73/syntax/pike.vim b/share/vim/vim74/syntax/pike.vim similarity index 100% rename from share/vim/vim73/syntax/pike.vim rename to share/vim/vim74/syntax/pike.vim diff --git a/share/vim/vim73/syntax/pilrc.vim b/share/vim/vim74/syntax/pilrc.vim similarity index 100% rename from share/vim/vim73/syntax/pilrc.vim rename to share/vim/vim74/syntax/pilrc.vim diff --git a/share/vim/vim74/syntax/pine.vim b/share/vim/vim74/syntax/pine.vim new file mode 100644 index 00000000..4c64b9bb --- /dev/null +++ b/share/vim/vim74/syntax/pine.vim @@ -0,0 +1,372 @@ +" Vim syntax file +" Language: Pine (email program) run commands +" Maintainer: David Pascoe +" Last Change: Thu Feb 27 10:18:48 WST 2003, update for pine 4.53 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if version >= 600 + setlocal iskeyword=@,48-57,_,128-167,224-235,- +else + set iskeyword=@,48-57,_,128-167,224-235,- +endif + +syn keyword pineConfig addrbook-sort-rule +syn keyword pineConfig address-book +syn keyword pineConfig addressbook-formats +syn keyword pineConfig alt-addresses +syn keyword pineConfig bugs-additional-data +syn keyword pineConfig bugs-address +syn keyword pineConfig bugs-fullname +syn keyword pineConfig character-set +syn keyword pineConfig color-style +syn keyword pineConfig compose-mime +syn keyword pineConfig composer-wrap-column +syn keyword pineConfig current-indexline-style +syn keyword pineConfig cursor-style +syn keyword pineConfig customized-hdrs +syn keyword pineConfig debug-memory +syn keyword pineConfig default-composer-hdrs +syn keyword pineConfig default-fcc +syn keyword pineConfig default-saved-msg-folder +syn keyword pineConfig disable-these-authenticators +syn keyword pineConfig disable-these-drivers +syn keyword pineConfig display-filters +syn keyword pineConfig download-command +syn keyword pineConfig download-command-prefix +syn keyword pineConfig editor +syn keyword pineConfig elm-style-save +syn keyword pineConfig empty-header-message +syn keyword pineConfig fcc-name-rule +syn keyword pineConfig feature-level +syn keyword pineConfig feature-list +syn keyword pineConfig file-directory +syn keyword pineConfig folder-collections +syn keyword pineConfig folder-extension +syn keyword pineConfig folder-sort-rule +syn keyword pineConfig font-char-set +syn keyword pineConfig font-name +syn keyword pineConfig font-size +syn keyword pineConfig font-style +syn keyword pineConfig forced-abook-entry +syn keyword pineConfig form-letter-folder +syn keyword pineConfig global-address-book +syn keyword pineConfig goto-default-rule +syn keyword pineConfig header-in-reply +syn keyword pineConfig image-viewer +syn keyword pineConfig inbox-path +syn keyword pineConfig incoming-archive-folders +syn keyword pineConfig incoming-folders +syn keyword pineConfig incoming-startup-rule +syn keyword pineConfig index-answered-background-color +syn keyword pineConfig index-answered-foreground-color +syn keyword pineConfig index-deleted-background-color +syn keyword pineConfig index-deleted-foreground-color +syn keyword pineConfig index-format +syn keyword pineConfig index-important-background-color +syn keyword pineConfig index-important-foreground-color +syn keyword pineConfig index-new-background-color +syn keyword pineConfig index-new-foreground-color +syn keyword pineConfig index-recent-background-color +syn keyword pineConfig index-recent-foreground-color +syn keyword pineConfig index-to-me-background-color +syn keyword pineConfig index-to-me-foreground-color +syn keyword pineConfig index-unseen-background-color +syn keyword pineConfig index-unseen-foreground-color +syn keyword pineConfig initial-keystroke-list +syn keyword pineConfig kblock-passwd-count +syn keyword pineConfig keylabel-background-color +syn keyword pineConfig keylabel-foreground-color +syn keyword pineConfig keyname-background-color +syn keyword pineConfig keyname-foreground-color +syn keyword pineConfig last-time-prune-questioned +syn keyword pineConfig last-version-used +syn keyword pineConfig ldap-servers +syn keyword pineConfig literal-signature +syn keyword pineConfig local-address +syn keyword pineConfig local-fullname +syn keyword pineConfig mail-check-interval +syn keyword pineConfig mail-directory +syn keyword pineConfig mailcap-search-path +syn keyword pineConfig mimetype-search-path +syn keyword pineConfig new-version-threshold +syn keyword pineConfig news-active-file-path +syn keyword pineConfig news-collections +syn keyword pineConfig news-spool-directory +syn keyword pineConfig newsrc-path +syn keyword pineConfig nntp-server +syn keyword pineConfig normal-background-color +syn keyword pineConfig normal-foreground-color +syn keyword pineConfig old-style-reply +syn keyword pineConfig operating-dir +syn keyword pineConfig patterns +syn keyword pineConfig patterns-filters +syn keyword pineConfig patterns-filters2 +syn keyword pineConfig patterns-indexcolors +syn keyword pineConfig patterns-other +syn keyword pineConfig patterns-roles +syn keyword pineConfig patterns-scores +syn keyword pineConfig patterns-scores2 +syn keyword pineConfig personal-name +syn keyword pineConfig personal-print-category +syn keyword pineConfig personal-print-command +syn keyword pineConfig postponed-folder +syn keyword pineConfig print-font-char-set +syn keyword pineConfig print-font-name +syn keyword pineConfig print-font-size +syn keyword pineConfig print-font-style +syn keyword pineConfig printer +syn keyword pineConfig prompt-background-color +syn keyword pineConfig prompt-foreground-color +syn keyword pineConfig pruned-folders +syn keyword pineConfig pruning-rule +syn keyword pineConfig quote1-background-color +syn keyword pineConfig quote1-foreground-color +syn keyword pineConfig quote2-background-color +syn keyword pineConfig quote2-foreground-color +syn keyword pineConfig quote3-background-color +syn keyword pineConfig quote3-foreground-color +syn keyword pineConfig read-message-folder +syn keyword pineConfig remote-abook-history +syn keyword pineConfig remote-abook-metafile +syn keyword pineConfig remote-abook-validity +syn keyword pineConfig reply-indent-string +syn keyword pineConfig reply-leadin +syn keyword pineConfig reverse-background-color +syn keyword pineConfig reverse-foreground-color +syn keyword pineConfig rsh-command +syn keyword pineConfig rsh-open-timeout +syn keyword pineConfig rsh-path +syn keyword pineConfig save-by-sender +syn keyword pineConfig saved-msg-name-rule +syn keyword pineConfig scroll-margin +syn keyword pineConfig selectable-item-background-color +syn keyword pineConfig selectable-item-foreground-color +syn keyword pineConfig sending-filters +syn keyword pineConfig sendmail-path +syn keyword pineConfig show-all-characters +syn keyword pineConfig signature-file +syn keyword pineConfig smtp-server +syn keyword pineConfig sort-key +syn keyword pineConfig speller +syn keyword pineConfig ssh-command +syn keyword pineConfig ssh-open-timeout +syn keyword pineConfig ssh-path +syn keyword pineConfig standard-printer +syn keyword pineConfig status-background-color +syn keyword pineConfig status-foreground-color +syn keyword pineConfig status-message-delay +syn keyword pineConfig suggest-address +syn keyword pineConfig suggest-fullname +syn keyword pineConfig tcp-open-timeout +syn keyword pineConfig tcp-query-timeout +syn keyword pineConfig tcp-read-warning-timeout +syn keyword pineConfig tcp-write-warning-timeout +syn keyword pineConfig threading-display-style +syn keyword pineConfig threading-expanded-character +syn keyword pineConfig threading-index-style +syn keyword pineConfig threading-indicator-character +syn keyword pineConfig threading-lastreply-character +syn keyword pineConfig title-background-color +syn keyword pineConfig title-foreground-color +syn keyword pineConfig titlebar-color-style +syn keyword pineConfig upload-command +syn keyword pineConfig upload-command-prefix +syn keyword pineConfig url-viewers +syn keyword pineConfig use-only-domain-name +syn keyword pineConfig user-domain +syn keyword pineConfig user-id +syn keyword pineConfig user-id +syn keyword pineConfig user-input-timeout +syn keyword pineConfig viewer-hdr-colors +syn keyword pineConfig viewer-hdrs +syn keyword pineConfig viewer-overlap +syn keyword pineConfig window-position + +syn keyword pineOption allow-changing-from +syn keyword pineOption allow-talk +syn keyword pineOption alternate-compose-menu +syn keyword pineOption assume-slow-link +syn keyword pineOption auto-move-read-msgs +syn keyword pineOption auto-open-next-unread +syn keyword pineOption auto-unzoom-after-apply +syn keyword pineOption auto-zoom-after-select +syn keyword pineOption cache-remote-pinerc +syn keyword pineOption check-newmail-when-quitting +syn keyword pineOption combined-addrbook-display +syn keyword pineOption combined-folder-display +syn keyword pineOption combined-subdirectory-display +syn keyword pineOption compose-cut-from-cursor +syn keyword pineOption compose-maps-delete-key-to-ctrl-d +syn keyword pineOption compose-rejects-unqualified-addrs +syn keyword pineOption compose-send-offers-first-filter +syn keyword pineOption compose-sets-newsgroup-without-confirm +syn keyword pineOption confirm-role-even-for-default +syn keyword pineOption continue-tab-without-confirm +syn keyword pineOption delete-skips-deleted +syn keyword pineOption disable-2022-jp-conversions +syn keyword pineOption disable-busy-alarm +syn keyword pineOption disable-charset-conversions +syn keyword pineOption disable-config-cmd +syn keyword pineOption disable-keyboard-lock-cmd +syn keyword pineOption disable-keymenu +syn keyword pineOption disable-password-caching +syn keyword pineOption disable-password-cmd +syn keyword pineOption disable-pipes-in-sigs +syn keyword pineOption disable-pipes-in-templates +syn keyword pineOption disable-roles-setup-cmd +syn keyword pineOption disable-roles-sig-edit +syn keyword pineOption disable-roles-template-edit +syn keyword pineOption disable-sender +syn keyword pineOption disable-shared-namespaces +syn keyword pineOption disable-signature-edit-cmd +syn keyword pineOption disable-take-last-comma-first +syn keyword pineOption enable-8bit-esmtp-negotiation +syn keyword pineOption enable-8bit-nntp-posting +syn keyword pineOption enable-aggregate-command-set +syn keyword pineOption enable-alternate-editor-cmd +syn keyword pineOption enable-alternate-editor-implicitly +syn keyword pineOption enable-arrow-navigation +syn keyword pineOption enable-arrow-navigation-relaxed +syn keyword pineOption enable-background-sending +syn keyword pineOption enable-bounce-cmd +syn keyword pineOption enable-cruise-mode +syn keyword pineOption enable-cruise-mode-delete +syn keyword pineOption enable-delivery-status-notification +syn keyword pineOption enable-dot-files +syn keyword pineOption enable-dot-folders +syn keyword pineOption enable-exit-via-lessthan-command +syn keyword pineOption enable-fast-recent-test +syn keyword pineOption enable-flag-cmd +syn keyword pineOption enable-flag-screen-implicitly +syn keyword pineOption enable-full-header-and-text +syn keyword pineOption enable-full-header-cmd +syn keyword pineOption enable-goto-in-file-browser +syn keyword pineOption enable-incoming-folders +syn keyword pineOption enable-jump-shortcut +syn keyword pineOption enable-lame-list-mode +syn keyword pineOption enable-mail-check-cue +syn keyword pineOption enable-mailcap-param-substitution +syn keyword pineOption enable-mouse-in-xterm +syn keyword pineOption enable-msg-view-addresses +syn keyword pineOption enable-msg-view-attachments +syn keyword pineOption enable-msg-view-forced-arrows +syn keyword pineOption enable-msg-view-urls +syn keyword pineOption enable-msg-view-web-hostnames +syn keyword pineOption enable-newmail-in-xterm-icon +syn keyword pineOption enable-partial-match-lists +syn keyword pineOption enable-print-via-y-command +syn keyword pineOption enable-reply-indent-string-editing +syn keyword pineOption enable-rules-under-take +syn keyword pineOption enable-search-and-replace +syn keyword pineOption enable-sigdashes +syn keyword pineOption enable-suspend +syn keyword pineOption enable-tab-completion +syn keyword pineOption enable-take-export +syn keyword pineOption enable-tray-icon +syn keyword pineOption enable-unix-pipe-cmd +syn keyword pineOption enable-verbose-smtp-posting +syn keyword pineOption expanded-view-of-addressbooks +syn keyword pineOption expanded-view-of-distribution-lists +syn keyword pineOption expanded-view-of-folders +syn keyword pineOption expose-hidden-config +syn keyword pineOption expunge-only-manually +syn keyword pineOption expunge-without-confirm +syn keyword pineOption expunge-without-confirm-everywhere +syn keyword pineOption fcc-on-bounce +syn keyword pineOption fcc-only-without-confirm +syn keyword pineOption fcc-without-attachments +syn keyword pineOption include-attachments-in-reply +syn keyword pineOption include-header-in-reply +syn keyword pineOption include-text-in-reply +syn keyword pineOption ldap-result-to-addrbook-add +syn keyword pineOption mark-fcc-seen +syn keyword pineOption mark-for-cc +syn keyword pineOption news-approximates-new-status +syn keyword pineOption news-deletes-across-groups +syn keyword pineOption news-offers-catchup-on-close +syn keyword pineOption news-post-without-validation +syn keyword pineOption news-read-in-newsrc-order +syn keyword pineOption next-thread-without-confirm +syn keyword pineOption old-growth +syn keyword pineOption pass-control-characters-as-is +syn keyword pineOption prefer-plain-text +syn keyword pineOption preserve-start-stop-characters +syn keyword pineOption print-formfeed-between-messages +syn keyword pineOption print-includes-from-line +syn keyword pineOption print-index-enabled +syn keyword pineOption print-offers-custom-cmd-prompt +syn keyword pineOption quell-attachment-extra-prompt +syn keyword pineOption quell-berkeley-format-timezone +syn keyword pineOption quell-content-id +syn keyword pineOption quell-dead-letter-on-cancel +syn keyword pineOption quell-empty-directories +syn keyword pineOption quell-extra-post-prompt +syn keyword pineOption quell-folder-internal-msg +syn keyword pineOption quell-imap-envelope-update +syn keyword pineOption quell-lock-failure-warnings +syn keyword pineOption quell-maildomain-warning +syn keyword pineOption quell-news-envelope-update +syn keyword pineOption quell-partial-fetching +syn keyword pineOption quell-ssl-largeblocks +syn keyword pineOption quell-status-message-beeping +syn keyword pineOption quell-timezone-comment-when-sending +syn keyword pineOption quell-user-lookup-in-passwd-file +syn keyword pineOption quit-without-confirm +syn keyword pineOption reply-always-uses-reply-to +syn keyword pineOption save-aggregates-copy-sequence +syn keyword pineOption save-will-advance +syn keyword pineOption save-will-not-delete +syn keyword pineOption save-will-quote-leading-froms +syn keyword pineOption scramble-message-id +syn keyword pineOption select-without-confirm +syn keyword pineOption selectable-item-nobold +syn keyword pineOption separate-folder-and-directory-entries +syn keyword pineOption show-cursor +syn keyword pineOption show-plain-text-internally +syn keyword pineOption show-selected-in-boldface +syn keyword pineOption signature-at-bottom +syn keyword pineOption single-column-folder-list +syn keyword pineOption slash-collapses-entire-thread +syn keyword pineOption spell-check-before-sending +syn keyword pineOption store-window-position-in-config +syn keyword pineOption strip-from-sigdashes-on-reply +syn keyword pineOption tab-visits-next-new-message-only +syn keyword pineOption termdef-takes-precedence +syn keyword pineOption thread-index-shows-important-color +syn keyword pineOption try-alternative-authentication-driver-first +syn keyword pineOption unselect-will-not-advance +syn keyword pineOption use-current-dir +syn keyword pineOption use-function-keys +syn keyword pineOption use-sender-not-x-sender +syn keyword pineOption use-subshell-for-suspend +syn keyword pineOption vertical-folder-list + +syn match pineComment "^#.*$" + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_pine_syn_inits") + if version < 508 + let did_pine_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink pineConfig Type + HiLink pineComment Comment + HiLink pineOption Macro + delcommand HiLink +endif + +let b:current_syntax = "pine" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/pinfo.vim b/share/vim/vim74/syntax/pinfo.vim similarity index 100% rename from share/vim/vim73/syntax/pinfo.vim rename to share/vim/vim74/syntax/pinfo.vim diff --git a/share/vim/vim73/syntax/plaintex.vim b/share/vim/vim74/syntax/plaintex.vim similarity index 100% rename from share/vim/vim73/syntax/plaintex.vim rename to share/vim/vim74/syntax/plaintex.vim diff --git a/share/vim/vim74/syntax/pli.vim b/share/vim/vim74/syntax/pli.vim new file mode 100644 index 00000000..f8d7e51c --- /dev/null +++ b/share/vim/vim74/syntax/pli.vim @@ -0,0 +1,278 @@ +" Vim syntax file +" Modified from http://plnet.org/files/vim/ +" using keywords from http://www.kednos.com/pli/docs/reference_manual/6291pro_contents.html +" 2012-11-13 Alan Thompson + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case ignore + +" Todo. +syn keyword pl1Todo TODO FIXME XXX DEBUG NOTE + +" pl1CommentGroup allows adding matches for special things in comments +" 20010723az: Added this so that these could be matched in comments... +syn cluster pl1CommentGroup contains=pl1Todo + +syn match pl1Garbage "[^ \t()]" +syn match pl1Identifier "[a-z][a-z0-9$_#]*" +syn match pl1HostIdentifier ":[a-z][a-z0-9$_#]*" + +" 20010723az: When wanted, highlight the trailing whitespace -- this is +" based on c_space_errors +if exists("c_space_errors") + if !exists("c_no_trail_space_error") + syn match pl1SpaceError "\s\+$" + endif + if !exists("c_no_tab_space_error") + syn match pl1SpaceError " \+\t"me=e-1 + endif +endif + +" Symbols. +syn match pl1Symbol "\(;\|,\|\.\)" +syn match pl1PreProcSym "%" + +" Operators. +syn match pl1Operator "\(&\|:\|!\|+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)" +syn match pl1Operator "\(\^\|\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)" + +" Attributes +syn keyword pl1Attribute BACKWARDS BUFFERED BUF CONNECTED CONN CONSTANT EVENT +syn keyword pl1Attribute EXCLUSIVE EXCL FORMAT GENERIC IRREDUCIBLE IRRED LOCAL +syn keyword pl1Attribute REDUCIBLE RED TASK TRANSIENT UNBUFFERED UNBUF ALIGNED ANY +syn keyword pl1Attribute AREA AUTOMATIC AUTO BASED BUILTIN CONDITION COND CONTROLLED +syn keyword pl1Attribute CTL DEFINED DEF DIRECT ENVIRONMENT ENV EXTERNAL EXT FILE +syn keyword pl1Attribute GLOBALDEF GLOBALREF INITIAL INIT INPUT INTERNAL INT KEYED +syn keyword pl1Attribute LABEL LIKE LIST MEMBER NONVARYING NONVAR OPTIONAL OPTIONS +syn keyword pl1Attribute OUTPUT PARAMETER PARM PICTURE PIC POSITION POS PRECISION +syn keyword pl1Attribute PREC PRINT READONLY RECORD REFER RETURNS SEQUENTIAL SEQL +syn keyword pl1Attribute STATIC STREAM STRUCTURE TRUNCATE UNALIGNED UNAL UNION UPDATE +syn keyword pl1Attribute VARIABLE VARYING VAR COMPLEX CPLX REAL BINARY BIN BIT +syn keyword pl1Attribute CHARACTER CHAR DECIMAL DEC DESCRIPTOR DESC DIMENSION DIM +syn keyword pl1Attribute FIXED FLOAT OFFSET POINTER PTR REFERENCE VALUE VAL + +" Functions +syn keyword pl1Function AFTER ALL ANY BEFORE COMPLETION CPLN CONJG COUNT +syn keyword pl1Function CURRENTSTORAGE CSTG DATAFIELD DECAT DOT ERF ERFC IMAG +syn keyword pl1Function ONCOUNT ONFIELD ONLOC POLY PRIORITY REPEAT SAMEKEY STATUS +syn keyword pl1Function STORAGE STG ABS ACOS ACTUALCOUNT ADD ADDR ADDREL ALLOCATION +syn keyword pl1Function ALLOCN ASIN ATAN ATAND ATANH BOOL BYTE BYTESIZE CEIL COLLATE +syn keyword pl1Function COPY COS COSD COSH DATE DATETIME DECODE DISPLAY DIVIDE EMPTY +syn keyword pl1Function ENCODE ERROR EVERY EXP EXTEND FLOOR FLUSH FREE HBOUND HIGH +syn keyword pl1Function INDEX INFORM INT LBOUND LENGTH LINE LINENO LOG LOG10 LOG2 +syn keyword pl1Function LOW LTRIM MAX MAXLENGTH MIN MOD MULTIPLY NEXT_VOLUME NULL +syn keyword pl1Function ONARGSLIST ONCHAR ONCODE ONFILE ONKEY ONSOURCE PAGENO POSINT +syn keyword pl1Function PRESENT PROD RANK RELEASE RESIGNAL REVERSE REWIND ROUND +syn keyword pl1Function RTRIM SEARCH SIGN SIN SIND SINH SIZE SOME SPACEBLOCK SQRT +syn keyword pl1Function STRING SUBSTR SUBTRACT SUM TAN TAND TANH TIME TRANSLATE TRIM +syn keyword pl1Function TRUNC UNSPEC VALID VARIANT VERIFY WARN + +" Other keywords +syn keyword pl1Other ATTENTION ATTN C CONVERSION CONV DATA NAME NOCONVERSION +syn keyword pl1Other NOCONV NOFIXEDOVERFLOW NOFOFL NOOVERFLOW NOSIZE +syn keyword pl1Other NOSTRINGRANGE NOSTRG NOSTRINGSIZE NOSTRZ NOSUBSCRIPTRANGE +syn keyword pl1Other NOSUBRG NOZERODIVIDE NOZDIV OVERFLOW OFL PENDING RECORD +syn keyword pl1Other REENTRANT SIZE STRINGRANGE STRG STRINGSIZE STRZ +syn keyword pl1Other SUBSCRIPTRANGE SUBRG TRANSMIT A ANYCONDITION APPEND B B1 B2 +syn keyword pl1Other B3 B4 BACKUP_DATE BATCH BLOCK_BOUNDARY_FORMAT BLOCK_IO +syn keyword pl1Other BLOCK_SIZE BUCKET_SIZE BY CANCEL_CONTROL_O +syn keyword pl1Other CARRIAGE_RETURN_FORMAT COLUMN COL CONTIGUOUS +syn keyword pl1Other CONTIGUOUS_BEST_TRY CONVERSION CONV CREATION_DATE +syn keyword pl1Other CURRENT_POSITION DEFAULT_FILE_NAME DEFERRED_WRITE E EDIT +syn keyword pl1Other ENDFILE ENDPAGE EXPIRATION_DATE EXTENSION_SIZE F FAST_DELETE +syn keyword pl1Other FILE_ID FILE_ID_TO FILE_SIZE FINISH FIXEDOVERFLOW FOFL +syn keyword pl1Other FIXED_CONTROL_FROM FIXED_CONTROL_SIZE FIXED_CONTROL_SIZE_TO +syn keyword pl1Other FIXED_CONTROL_TO FIXED_LENGTH_RECORDS FROM GROUP_PROTECTION +syn keyword pl1Other IDENT IGNORE_LINE_MARKS IN INDEXED INDEX_NUMBER INITIAL_FILL +syn keyword pl1Other INTO KEY KEYFROM KEYTO LINESIZE LOCK_ON_READ LOCK_ON_WRITE +syn keyword pl1Other MAIN MANUAL_UNLOCKING MATCH_GREATER MATCH_GREATER_EQUAL +syn keyword pl1Other MATCH_NEXT MATCH_NEXT_EQUAL MAXIMUM_RECORD_NUMBER +syn keyword pl1Other MAXIMUM_RECORD_SIZE MULTIBLOCK_COUNT MULTIBUFFER_COUNT +syn keyword pl1Other NOLOCK NONEXISTENT_RECORD NONRECURSIVE NO_ECHO NO_FILTER +syn keyword pl1Other NO_SHARE OVERFLOW OFL OWNER_GROUP OWNER_ID OWNER_MEMBER +syn keyword pl1Other OWNER_PROTECTION P PAGE PAGESIZE PRINTER_FORMAT PROMPT +syn keyword pl1Other PURGE_TYPE_AHEAD R READ_AHEAD READ_CHECK READ_REGARDLESS +syn keyword pl1Other RECORD_ID RECORD_ID_ACCESS RECORD_ID_TO RECURSIVE REPEAT +syn keyword pl1Other RETRIEVAL_POINTERS REVISION_DATE REWIND_ON_CLOSE +syn keyword pl1Other REWIND_ON_OPEN SCALARVARYING SET SHARED_READ SHARED_WRITE +syn keyword pl1Other SKIP SPOOL STORAGE STRINGRANGE STRG SUBSCRIPTRANGE SUBRG +syn keyword pl1Other SUPERSEDE SYSIN SYSPRINT SYSTEM_PROTECTION TAB TEMPORARY +syn keyword pl1Other TIMEOUT_PERIOD TITLE TO UNDEFINEDFILE UNDF UNDERFLOW UFL +syn keyword pl1Other UNTIL USER_OPEN VAXCONDITION WAIT_FOR_RECORD WHILE +syn keyword pl1Other WORLD_PROTECTION WRITE_BEHIND WRITE_CHECK X ZERODIVIDE ZDIV + +" PreProcessor keywords +syn keyword pl1PreProc ACTIVATE DEACTIVATE DECLARE DCL DICTIONARY DO END ERROR +syn keyword pl1PreProc FATAL GOTO IF INCLUDE INFORM LIST NOLIST PAGE PROCEDURE PROC +syn keyword pl1PreProc REPLACE RETURN SBTTL TITLE WARN THEN ELSE + +" Statements +syn keyword pl1Statement CALL SUB ENTRY BY NAME CASE CHECK COPY DEFAULT DFT DELAY +syn keyword pl1Statement DESCRIPTORS DISPLAY EXIT FETCH HALT IGNORE LIST LOCATE +syn keyword pl1Statement NOCHECK NOLOCK NONE ORDER RANGE RELEASE REORDER REPLY SNAP +syn keyword pl1Statement SYSTEM TAB UNLOCK WAIT ALLOCATE ALLOC BEGIN CALL CLOSE +syn keyword pl1Statement DECLARE DCL DELETE DO ELSE END FORMAT GET GOTO GO TO IF +syn keyword pl1Statement LEAVE NORESCAN ON OPEN OTHERWISE OTHER PROCEDURE PROC PUT +syn keyword pl1Statement READ RESCAN RETURN REVERT REWRITE SELECT SIGNAL SNAP +syn keyword pl1Statement STATEMENT STOP SYSTEM THEN WHEN WRITE + +" PL1's own keywords +" syn match pl1Keyword "\" +" syn match pl1Keyword "\.COUNT\>"hs=s+1 +" syn match pl1Keyword "\.EXISTS\>"hs=s+1 +" syn match pl1Keyword "\.FIRST\>"hs=s+1 +" syn match pl1Keyword "\.LAST\>"hs=s+1 +" syn match pl1Keyword "\.DELETE\>"hs=s+1 +" syn match pl1Keyword "\.PREV\>"hs=s+1 +" syn match pl1Keyword "\.NEXT\>"hs=s+1 + +if exists("pl1_highlight_triggers") + syn keyword pl1Trigger INSERTING UPDATING DELETING +endif + +" Conditionals. +syn keyword pl1Conditional ELSIF ELSE IF +syn match pl1Conditional "\" + +" Loops. +syn keyword pl1Repeat FOR LOOP WHILE FORALL +syn match pl1Repeat "\" + +" Various types of comments. +" 20010723az: Added the ability to treat strings within comments just like +" C does. +if exists("c_comment_strings") + syntax match pl1CommentSkip contained "^\s*\*\($\|\s\+\)" + syntax region pl1CommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=pl1CommentSkip + syntax region pl1Comment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" + syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError + syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError +else + syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1SpaceError + syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1SpaceError +endif + +" 20010723az: These are the old comment commands ... commented out. +" syn match pl1Comment "--.*$" contains=pl1Todo +" syn region pl1Comment start="/\*" end="\*/" contains=pl1Todo +syn sync ccomment pl1Comment +syn sync ccomment pl1CommentL + +" To catch unterminated string literals. +syn match pl1StringError "'.*$" + +" Various types of literals. +" 20010723az: Added stuff for comment matching. +syn match pl1Numbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral +syn match pl1NumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral +syn match pl1IntLiteral contained "[+-]\=\d\+" +syn match pl1FloatLiteral contained "[+-]\=\d\+\.\d*" +syn match pl1FloatLiteral contained "[+-]\=\d*\.\d*" +"syn match pl1FloatLiteral "[+-]\=\([0-9]*\.[0-9]\+\|[0-9]\+\.[0-9]\+\)\(e[+-]\=[0-9]\+\)\=" +syn match pl1CharLiteral "'[^']'" +syn match pl1StringLiteral "'\([^']\|''\)*'" +syn keyword pl1BooleanLiteral TRUE FALSE NULL + +" The built-in types. +syn keyword pl1Storage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN +syn keyword pl1Storage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL +syn keyword pl1Storage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR +syn keyword pl1Storage INT INTEGER INTERVAL LOB LONG MINUTE +syn keyword pl1Storage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB +syn keyword pl1Storage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER +syn keyword pl1Storage POSITIVE POSITIVEN PRECISION RAW REAL RECORD +syn keyword pl1Storage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME +syn keyword pl1Storage TIMESTAMP TIMESTAMP_UNCONSTRAINED +syn keyword pl1Storage TIMESTAMP_TZ_UNCONSTRAINED +syn keyword pl1Storage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR +syn keyword pl1Storage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE + +" A type-attribute is really a type. +" 20020916bp: Removed leading part of pattern to avoid highlighting the +" object +syn match pl1TypeAttribute "%\(TYPE\|ROWTYPE\)\>" + +" All other attributes. +syn match pl1Attribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>" + +" Catch errors caused by wrong parentheses and brackets +" 20010723az: significantly more powerful than the values -- commented out +" below the replaced values. This adds the C functionality to PL/SQL. +syn cluster pl1ParenGroup contains=pl1ParenError,@pl1CommentGroup,pl1CommentSkip,pl1IntLiteral,pl1FloatLiteral,pl1NumbersCom +if exists("c_no_bracket_error") + syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup + syn match pl1ParenError ")" + syn match pl1ErrInParen contained "[{}]" +else + syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup,pl1ErrInBracket + syn match pl1ParenError "[\])]" + syn match pl1ErrInParen contained "[{}]" + syn region pl1Bracket transparent start='\[' end=']' contains=ALLBUT,@pl1ParenGroup,pl1ErrInParen + syn match pl1ErrInBracket contained "[);{}]" +endif +" syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,pl1ParenError +" syn match pl1ParenError ")" + +" Syntax Synchronizing +syn sync minlines=10 maxlines=100 + +" Define the default highlighting. +" For version 5.x and earlier, only when not done already. +" For version 5.8 and later, only when and item doesn't have highlighting +" yet. +if version >= 508 || !exists("did_pl1_syn_inits") + if version < 508 + let did_pl1_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink pl1Attribute Macro + HiLink pl1BlockError Error + HiLink pl1BooleanLiteral Boolean + HiLink pl1CharLiteral Character + HiLink pl1Comment Comment + HiLink pl1CommentL Comment + HiLink pl1Conditional Conditional + HiLink pl1Error Error + HiLink pl1ErrInBracket Error + HiLink pl1ErrInBlock Error + HiLink pl1ErrInParen Error + HiLink pl1Exception Function + HiLink pl1FloatLiteral Float + HiLink pl1Function Function + HiLink pl1Garbage Error + HiLink pl1HostIdentifier Label + HiLink pl1Identifier Normal + HiLink pl1IntLiteral Number + HiLink pl1Operator Operator + HiLink pl1Paren Normal + HiLink pl1ParenError Error + HiLink pl1SpaceError Error + HiLink pl1Pseudo PreProc + HiLink pl1PreProc PreProc + HiLink pl1PreProcSym PreProc + HiLink pl1Keyword Keyword + HiLink pl1Other Keyword + HiLink pl1Repeat Repeat + HiLink pl1Statement Keyword + HiLink pl1Storage StorageClass + HiLink pl1StringError Error + HiLink pl1StringLiteral String + HiLink pl1CommentString String + HiLink pl1Comment2String String + HiLink pl1Symbol Normal + HiLink pl1Trigger Function + HiLink pl1TypeAttribute StorageClass + HiLink pl1Todo Todo + + delcommand HiLink +endif + +let b:current_syntax = "pl1" diff --git a/share/vim/vim73/syntax/plm.vim b/share/vim/vim74/syntax/plm.vim similarity index 100% rename from share/vim/vim73/syntax/plm.vim rename to share/vim/vim74/syntax/plm.vim diff --git a/share/vim/vim73/syntax/plp.vim b/share/vim/vim74/syntax/plp.vim similarity index 100% rename from share/vim/vim73/syntax/plp.vim rename to share/vim/vim74/syntax/plp.vim diff --git a/share/vim/vim73/syntax/plsql.vim b/share/vim/vim74/syntax/plsql.vim similarity index 100% rename from share/vim/vim73/syntax/plsql.vim rename to share/vim/vim74/syntax/plsql.vim diff --git a/share/vim/vim74/syntax/po.vim b/share/vim/vim74/syntax/po.vim new file mode 100644 index 00000000..c09b9603 --- /dev/null +++ b/share/vim/vim74/syntax/po.vim @@ -0,0 +1,140 @@ +" Vim syntax file +" Language: po (gettext) +" Maintainer: Dwayne Bailey +" Last Change: 2012 Apr 30 +" Contributors: Dwayne Bailey (Most advanced syntax highlighting) +" Leonardo Fontenelle (Spell checking) +" Nam SungHyun (Original maintainer) + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +syn sync minlines=10 + +" Identifiers +syn match poStatementMsgCTxt "^msgctxt" +syn match poStatementMsgidplural "^msgid_plural" contained +syn match poPluralCaseN "[0-9]" contained +syn match poStatementMsgstr "^msgstr\(\[[0-9]\]\)" contains=poPluralCaseN + +" Simple HTML and XML highlighting +syn match poHtml "<\_[^<>]\+>" contains=poHtmlTranslatables,poLineBreak +syn match poHtmlNot +"<[^<]\+>"+ms=s+1,me=e-1 +syn region poHtmlTranslatables start=+\(abbr\|alt\|content\|summary\|standby\|title\)=\\"+ms=e-1 end=+\\"+ contained contains=@Spell +syn match poLineBreak +"\n"+ contained + +" Translation blocks +syn region poMsgCTxt matchgroup=poStatementMsgCTxt start=+^msgctxt "+rs=e-1 matchgroup=poStringCTxt end=+^msgid "+me=s-1 contains=poStringCTxt +syn region poMsgID matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\(\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid +syn region poMsgSTR matchgroup=poStatementMsgstr start=+^msgstr\(\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr +syn region poStringCTxt start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn region poStringID start=+"+ skip=+\\\\\|\\"+ end=+"+ contained + \ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAcceleratorId,poHtmlNot,poVariable +syn region poStringSTR start=+"+ skip=+\\\\\|\\"+ end=+"+ contained + \ contains=@Spell,poSpecial,poFormat,poHeaderItem,poCommentKDEError,poHeaderUndefined,poPluralKDEError,poMsguniqError,poKDEdesktopFile,poHtml,poAcceleratorStr,poHtmlNot,poVariable + +" Header and Copyright +syn match poHeaderItem "\(Project-Id-Version\|Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language-Team\|Language\|MIME-Version\|Content-Type\|Content-Transfer-Encoding\|Plural-Forms\|X-Generator\): " contained +syn match poHeaderUndefined "\(PACKAGE VERSION\|YEAR-MO-DA HO:MI+ZONE\|FULL NAME \|LANGUAGE \|CHARSET\|ENCODING\|INTEGER\|EXPRESSION\)" contained +syn match poCopyrightUnset "SOME DESCRIPTIVE TITLE\|FIRST AUTHOR , YEAR\|Copyright (C) YEAR Free Software Foundation, Inc\|YEAR THE PACKAGE\'S COPYRIGHT HOLDER\|PACKAGE" contained + +" Translation comment block including: translator comment, automatic coments, flags and locations +syn match poComment "^#.*$" +syn keyword poFlagFuzzy fuzzy contained +syn match poCommentTranslator "^# .*$" contains=poCopyrightUnset +syn match poCommentAutomatic "^#\..*$" +syn match poCommentSources "^#:.*$" +syn match poCommentFlags "^#,.*$" contains=poFlagFuzzy + +" Translations (also includes header fields as they appear in a translation msgstr) +syn region poCommentKDE start=+"_: +ms=s+1 end="\\n" end="\"\n^msgstr"me=s-1 contained +syn region poCommentKDEError start=+"\(\|\s\+\)_:+ms=s+1 end="\\n" end=+"\n\n+me=s-1 contained +syn match poPluralKDE +"_n: +ms=s+1 contained +syn region poPluralKDEError start=+"\(\|\s\+\)_n:+ms=s+1 end="\"\n\n"me=s-1 contained +syn match poSpecial contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" +syn match poFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained +syn match poFormat "%%" contained + +" msguniq and msgcat conflicts +syn region poMsguniqError matchgroup=poMsguniqErrorMarkers start="#-#-#-#-#" end='#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)\\n' contained + +" Obsolete messages +syn match poObsolete "^#\~.*$" + +" KDE Name= handling +syn match poKDEdesktopFile "\"\(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1 + +" Accelerator keys - this messes up if the preceding or following char is a multibyte unicode char +syn match poAcceleratorId contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 +syn match poAcceleratorStr contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell + +" Variables simple +syn match poVariable contained "%\d" + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_po_syn_inits") + if version < 508 + let did_po_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink poCommentSources PreProc + HiLink poComment Comment + HiLink poCommentAutomatic Comment + HiLink poCommentTranslator Comment + HiLink poCommentFlags Special + HiLink poCopyrightUnset Todo + HiLink poFlagFuzzy Todo + HiLink poObsolete Comment + + HiLink poStatementMsgid Statement + HiLink poStatementMsgstr Statement + HiLink poStatementMsgidplural Statement + HiLink poStatementMsgCTxt Statement + HiLink poPluralCaseN Constant + + HiLink poStringCTxt Comment + HiLink poStringID String + HiLink poStringSTR String + HiLink poCommentKDE Comment + HiLink poCommentKDEError Error + HiLink poPluralKDE Comment + HiLink poPluralKDEError Error + HiLink poHeaderItem Identifier + HiLink poHeaderUndefined Todo + HiLink poKDEdesktopFile Identifier + + HiLink poHtml Identifier + HiLink poHtmlNot String + HiLink poHtmlTranslatables String + HiLink poLineBreak String + + HiLink poFormat poSpecial + HiLink poSpecial Special + HiLink poAcceleratorId Special + HiLink poAcceleratorStr Special + HiLink poVariable Special + + HiLink poMsguniqError Special + HiLink poMsguniqErrorMarkers Comment + + delcommand HiLink +endif + +let b:current_syntax = "po" + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:set ts=8 sts=2 sw=2 noet: diff --git a/share/vim/vim74/syntax/pod.vim b/share/vim/vim74/syntax/pod.vim new file mode 100644 index 00000000..b9f2e085 --- /dev/null +++ b/share/vim/vim74/syntax/pod.vim @@ -0,0 +1,189 @@ +" Vim syntax file +" Language: Perl POD format +" Maintainer: vim-perl +" Previously: Scott Bigham +" Homepage: http://github.com/vim-perl/vim-perl +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change: 2013-07-21 + +" To add embedded POD documentation highlighting to your syntax file, add +" the commands: +" +" syn include @Pod :p:h/pod.vim +" syn region myPOD start="^=pod" start="^=head" end="^=cut" keepend contained contains=@Pod +" +" and add myPod to the contains= list of some existing region, probably a +" comment. The "keepend" flag is needed because "=cut" is matched as a +" pattern in its own right. + + +" Remove any old syntax stuff hanging around (this is suppressed +" automatically by ":syn include" if necessary). +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" POD commands +syn match podCommand "^=encoding" nextgroup=podCmdText contains=@NoSpell +syn match podCommand "^=head[1234]" nextgroup=podCmdText contains=@NoSpell +syn match podCommand "^=item" nextgroup=podCmdText contains=@NoSpell +syn match podCommand "^=over" nextgroup=podOverIndent skipwhite contains=@NoSpell +syn match podCommand "^=back" contains=@NoSpell +syn match podCommand "^=cut" contains=@NoSpell +syn match podCommand "^=pod" contains=@NoSpell +syn match podCommand "^=for" nextgroup=podForKeywd skipwhite contains=@NoSpell +syn match podCommand "^=begin" nextgroup=podForKeywd skipwhite contains=@NoSpell +syn match podCommand "^=end" nextgroup=podForKeywd skipwhite contains=@NoSpell + +" Text of a =head1, =head2 or =item command +syn match podCmdText ".*$" contained contains=podFormat,@NoSpell + +" Indent amount of =over command +syn match podOverIndent "\d\+" contained contains=@NoSpell + +" Formatter identifier keyword for =for, =begin and =end commands +syn match podForKeywd "\S\+" contained contains=@NoSpell + +" An indented line, to be displayed verbatim +syn match podVerbatimLine "^\s.*$" contains=@NoSpell + +" Inline textual items handled specially by POD +syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell +syn match podSpecial "[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell + +" Special formatting sequences +syn region podFormat start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell +syn region podFormat start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell +syn match podFormat "Z<>" +syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell +syn match podEscape "\I\i*>"me=e-1 contained contains=@NoSpell +syn match podEscape2 "\d\+>"me=e-1 contained contains=@NoSpell + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_pod_syntax_inits") + if version < 508 + let did_pod_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink podCommand Statement + HiLink podCmdText String + HiLink podOverIndent Number + HiLink podForKeywd Identifier + HiLink podFormat Identifier + HiLink podVerbatimLine PreProc + HiLink podSpecial Identifier + HiLink podEscape String + HiLink podEscape2 Number + + delcommand HiLink +endif + +if exists("perl_pod_spellcheck_headings") + " Spell-check headings + syn clear podCmdText + syn match podCmdText ".*$" contained contains=podFormat +endif + +if exists("perl_pod_formatting") + " By default, escapes like C<> are not checked for spelling. Remove B<> + " and I<> from the list of escapes. + syn clear podFormat + syn region podFormat start="[CLF]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell + syn region podFormat start="[CLF]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell + + " Don't spell-check inside E<>, but ensure that the E< itself isn't + " marked as a spelling mistake. + syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell + + " Z<> is a mock formatting code. Ensure Z<> on its own isn't marked as a + " spelling mistake. + syn match podFormat "Z<>" contains=podEscape,podEscape2,@NoSpell + + " These are required so that whatever is *within* B<...>, I<...>, etc. is + " spell-checked, but not the B, I, ... itself. + syn match podBoldOpen "B<" contains=@NoSpell + syn match podItalicOpen "I<" contains=@NoSpell + syn match podNoSpaceOpen "S<" contains=@NoSpell + syn match podIndexOpen "X<" contains=@NoSpell + + " Same as above but for the << >> syntax. + syn match podBoldAlternativeDelimOpen "B<< " contains=@NoSpell + syn match podItalicAlternativeDelimOpen "I<< " contains=@NoSpell + syn match podNoSpaceAlternativeDelimOpen "S<< " contains=@NoSpell + syn match podIndexAlternativeDelimOpen "X<< " contains=@NoSpell + + " Add support for spell checking text inside B<>, I<>, S<> and X<>. + syn region podBold start="B<[^<]"me=e end=">" oneline contains=podBoldItalic,podBoldOpen + syn region podBoldAlternativeDelim start="B<<\s" end="\s>>" oneline contains=podBoldAlternativeDelimOpen + + syn region podItalic start="I<[^<]"me=e end=">" oneline contains=podItalicBold,podItalicOpen + syn region podItalicAlternativeDelim start="I<<\s" end="\s>>" oneline contains=podItalicAlternativeDelimOpen + + " Nested bold/italic and vice-versa + syn region podBoldItalic contained start="I<[^<]"me=e end=">" oneline + syn region podItalicBold contained start="B<[^<]"me=e end=">" oneline + + syn region podNoSpace start="S<[^<]"ms=s-2 end=">"me=e oneline contains=podNoSpaceOpen + syn region podNoSpaceAlternativeDelim start="S<<\s"ms=s-2 end="\s>>"me=e oneline contains=podNoSpaceAlternativeDelimOpen + + syn region podIndex start="X<[^<]"ms=s-2 end=">"me=e oneline contains=podIndexOpen + syn region podIndexAlternativeDelim start="X<<\s"ms=s-2 end="\s>>"me=e oneline contains=podIndexAlternativeDelimOpen + + " Restore this (otherwise B<> is shown as bold inside verbatim) + syn match podVerbatimLine "^\s.*$" contains=@NoSpell + + " Ensure formatted text can be displayed in headings and items + syn clear podCmdText + + if exists("perl_pod_spellcheck_headings") + syn match podCmdText ".*$" contained contains=podFormat,podBold, + \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim, + \podBoldOpen,podItalicOpen,podBoldAlternativeDelimOpen, + \podItalicAlternativeDelimOpen,podNoSpaceOpen + else + syn match podCmdText ".*$" contained contains=podFormat,podBold, + \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim, + \@NoSpell + endif + + " Specify how to display these + hi def podBold term=bold cterm=bold gui=bold + + hi link podBoldAlternativeDelim podBold + hi link podBoldAlternativeDelimOpen podBold + hi link podBoldOpen podBold + + hi link podNoSpace Identifier + hi link podNoSpaceAlternativeDelim Identifier + + hi link podIndex Identifier + hi link podIndexAlternativeDelim Identifier + + hi def podItalic term=italic cterm=italic gui=italic + + hi link podItalicAlternativeDelim podItalic + hi link podItalicAlternativeDelimOpen podItalic + hi link podItalicOpen podItalic + + hi def podBoldItalic term=italic,bold cterm=italic,bold gui=italic,bold + hi def podItalicBold term=italic,bold cterm=italic,bold gui=italic,bold +endif + +let b:current_syntax = "pod" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/postscr.vim b/share/vim/vim74/syntax/postscr.vim similarity index 100% rename from share/vim/vim73/syntax/postscr.vim rename to share/vim/vim74/syntax/postscr.vim diff --git a/share/vim/vim74/syntax/pov.vim b/share/vim/vim74/syntax/pov.vim new file mode 100644 index 00000000..4c1fd962 --- /dev/null +++ b/share/vim/vim74/syntax/pov.vim @@ -0,0 +1,150 @@ +" Vim syntax file +" Language: PoV-Ray(tm) 3.7 Scene Description Language +" Maintainer: David Necas (Yeti) +" Last Change: 2011-04-23 +" Required Vim Version: 6.0 + +" Setup +if version >= 600 + " Quit when a syntax file was already loaded + if exists("b:current_syntax") + finish + endif +else + " Croak when an old Vim is sourcing us. + echo "Sorry, but this syntax file relies on Vim 6 features. Either upgrade Vim or use a version of " . expand(":t:r") . " syntax file appropriate for Vim " . version/100 . "." . version %100 . "." + finish +endif + +syn case match + +" Top level stuff +syn keyword povCommands global_settings +syn keyword povObjects array atmosphere background bicubic_patch blob box camera component cone cubic cylinder disc fog height_field isosurface julia_fractal lathe light_group light_source mesh mesh2 object ovus parametric pattern photons plane poly polygon polynomial prism quadric quartic rainbow sky_sphere smooth_triangle sor sphere sphere_sweep spline superellipsoid text torus triangle +syn keyword povCSG clipped_by composite contained_by difference intersection merge union +syn keyword povAppearance interior material media texture interior_texture texture_list +syn keyword povGlobalSettings ambient_light assumed_gamma charset hf_gray_16 irid_wavelength max_intersections max_trace_level number_of_waves radiosity noise_generator +syn keyword povTransform inverse matrix rotate scale translate transform + +" Descriptors +syn keyword povDescriptors finish inside_vector normal pigment uv_mapping uv_vectors vertex_vectors +syn keyword povDescriptors adc_bailout always_sample brightness count error_bound distance_maximum gray_threshold load_file low_error_factor maximum_reuse max_sample media minimum_reuse mm_per_unit nearest_count normal pretrace_end pretrace_start recursion_limit save_file +syn keyword povDescriptors color colour rgb rgbt rgbf rgbft srgb srgbf srgbt srgbft +syn match povDescriptors "\<\(red\|green\|blue\|gray\)\>" +syn keyword povDescriptors bump_map color_map colour_map image_map material_map pigment_map quick_color quick_colour normal_map texture_map image_pattern pigment_pattern +syn keyword povDescriptors ambient brilliance conserve_energy crand diffuse fresnel irid metallic phong phong_size refraction reflection reflection_exponent roughness specular subsurface +syn keyword povDescriptors cylinder fisheye mesh_camera omnimax orthographic panoramic perspective spherical ultra_wide_angle +syn keyword povDescriptors agate aoi average brick boxed bozo bumps cells checker crackle cylindrical dents facets function gradient granite hexagon julia leopard magnet mandel marble onion pavement planar quilted radial ripples slope spherical spiral1 spiral2 spotted square tiles tile2 tiling toroidal triangular waves wood wrinkles +syn keyword povDescriptors density_file +syn keyword povDescriptors area_light shadowless spotlight parallel +syn keyword povDescriptors absorption confidence density emission intervals ratio samples scattering variance +syn keyword povDescriptors distance fog_alt fog_offset fog_type turb_depth +syn keyword povDescriptors b_spline bezier_spline cubic_spline evaluate face_indices form linear_spline max_gradient natural_spline normal_indices normal_vectors quadratic_spline uv_indices +syn keyword povDescriptors target + +" Modifiers +syn keyword povModifiers caustics dispersion dispersion_samples fade_color fade_colour fade_distance fade_power ior +syn keyword povModifiers bounded_by double_illuminate hierarchy hollow no_shadow open smooth sturm threshold water_level +syn keyword povModifiers importance no_radiosity +syn keyword povModifiers hypercomplex max_iteration precision quaternion slice +syn keyword povModifiers conic_sweep linear_sweep +syn keyword povModifiers flatness type u_steps v_steps +syn keyword povModifiers aa_level aa_threshold adaptive area_illumination falloff jitter looks_like media_attenuation media_interaction method point_at radius tightness +syn keyword povModifiers angle aperture bokeh blur_samples confidence direction focal_point h_angle location look_at right sky up v_angle variance +syn keyword povModifiers all bump_size gamma interpolate map_type once premultiplied slope_map use_alpha use_color use_colour use_index +syn match povModifiers "\<\(filter\|transmit\)\>" +syn keyword povModifiers black_hole agate_turb brick_size control0 control1 cubic_wave density_map flip frequency interpolate inverse lambda metric mortar octaves offset omega phase poly_wave ramp_wave repeat scallop_wave sine_wave size strength triangle_wave thickness turbulence turb_depth type warp +syn keyword povModifiers eccentricity extinction +syn keyword povModifiers arc_angle falloff_angle width +syn keyword povModifiers accuracy all_intersections altitude autostop circular collect coords cutaway_textures dist_exp expand_thresholds exponent exterior gather global_lights major_radius max_trace no_bump_scale no_image no_reflection orient orientation pass_through precompute projected_through range_divider solid spacing split_union tolerance + +" Words not marked `reserved' in documentation, but... +syn keyword povBMPType alpha exr gif hdr iff jpeg pgm png pot ppm sys tga tiff +syn keyword povFontType ttf contained +syn keyword povDensityType df3 contained +syn keyword povCharset ascii utf8 contained + +" Math functions on floats, vectors and strings +syn keyword povFunctions abs acos acosh asc asin asinh atan atan2 atanh bitwise_and bitwise_or bitwise_xor ceil cos cosh defined degrees dimensions dimension_size div exp file_exists floor inside int internal ln log max min mod pow prod radians rand seed select sin sinh sqrt strcmp strlen sum tan tanh val vdot vlength vstr vturbulence +syn keyword povFunctions min_extent max_extent trace vcross vrotate vaxis_rotate vnormalize vturbulence +syn keyword povFunctions chr concat datetime now substr str strupr strlwr +syn keyword povJuliaFunctions acosh asinh atan cosh cube pwr reciprocal sinh sqr tanh + +" Specialities +syn keyword povConsts clock clock_delta clock_on final_clock final_frame frame_number initial_clock initial_frame input_file_name image_width image_height false no off on pi true version yes +syn match povConsts "\<[tuvxyz]\>" +syn match povDotItem "\.\@<=\(blue\|green\|gray\|filter\|red\|transmit\|hf\|t\|u\|v\|x\|y\|z\)\>" display + +" Comments +syn region povComment start="/\*" end="\*/" contains=povTodo,povComment +syn match povComment "//.*" contains=povTodo +syn match povCommentError "\*/" +syn sync ccomment povComment +syn sync minlines=50 +syn keyword povTodo TODO FIXME XXX NOT contained +syn cluster povPRIVATE add=povTodo + +" Language directives +syn match povConditionalDir "#\s*\(else\|end\|for\|if\|ifdef\|ifndef\|switch\|while\)\>" +syn match povLabelDir "#\s*\(break\|case\|default\|range\)\>" +syn match povDeclareDir "#\s*\(declare\|default\|local\|macro\|undef\|version\)\>" nextgroup=povDeclareOption skipwhite +syn keyword povDeclareOption deprecated once contained nextgroup=povDeclareOption skipwhite +syn match povIncludeDir "#\s*include\>" +syn match povFileDir "#\s*\(fclose\|fopen\|read\|write\)\>" +syn keyword povFileDataType uint8 sint8 unit16be uint16le sint16be sint16le sint32le sint32be +syn match povMessageDir "#\s*\(debug\|error\|render\|statistics\|warning\)\>" +syn region povFileOpen start="#\s*fopen\>" skip=+"[^"]*"+ matchgroup=povOpenType end="\<\(read\|write\|append\)\>" contains=ALLBUT,PovParenError,PovBraceError,@PovPRIVATE transparent keepend + +" Literal strings +syn match povSpecialChar "\\u\x\{4}\|\\\d\d\d\|\\." contained +syn region povString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=povSpecialChar oneline +syn cluster povPRIVATE add=povSpecialChar + +" Catch errors caused by wrong parenthesization +syn region povParen start='(' end=')' contains=ALLBUT,povParenError,@povPRIVATE transparent +syn match povParenError ")" +syn region povBrace start='{' end='}' contains=ALLBUT,povBraceError,@povPRIVATE transparent +syn match povBraceError "}" + +" Numbers +syn match povNumber "\(^\|\W\)\@<=[+-]\=\(\d\+\)\=\.\=\d\+\([eE][+-]\=\d\+\)\=" + +" Define the default highlighting +hi def link povComment Comment +hi def link povTodo Todo +hi def link povNumber Number +hi def link povString String +hi def link povFileOpen Constant +hi def link povConsts Constant +hi def link povDotItem povSpecial +hi def link povBMPType povSpecial +hi def link povCharset povSpecial +hi def link povDensityType povSpecial +hi def link povFontType povSpecial +hi def link povOpenType povSpecial +hi def link povSpecialChar povSpecial +hi def link povSpecial Special +hi def link povConditionalDir PreProc +hi def link povLabelDir PreProc +hi def link povDeclareDir Define +hi def link povDeclareOption Define +hi def link povIncludeDir Include +hi def link povFileDir PreProc +hi def link povFileDataType Special +hi def link povMessageDir Debug +hi def link povAppearance povDescriptors +hi def link povObjects povDescriptors +hi def link povGlobalSettings povDescriptors +hi def link povDescriptors Type +hi def link povJuliaFunctions PovFunctions +hi def link povModifiers povFunctions +hi def link povFunctions Function +hi def link povCommands Operator +hi def link povTransform Operator +hi def link povCSG Operator +hi def link povParenError povError +hi def link povBraceError povError +hi def link povCommentError povError +hi def link povError Error + +let b:current_syntax = "pov" diff --git a/share/vim/vim74/syntax/povini.vim b/share/vim/vim74/syntax/povini.vim new file mode 100644 index 00000000..726fe1fc --- /dev/null +++ b/share/vim/vim74/syntax/povini.vim @@ -0,0 +1,62 @@ +" Vim syntax file +" Language: PoV-Ray(tm) 3.7 configuration/initialization files +" Maintainer: David Necas (Yeti) +" Last Change: 2011-04-24 +" Required Vim Version: 6.0 + +" Setup +if version >= 600 + " Quit when a syntax file was already loaded + if exists("b:current_syntax") + finish + endif +else + " Croak when an old Vim is sourcing us. + echo "Sorry, but this syntax file relies on Vim 6 features. Either upgrade Vim or usea version of " . expand(":t:r") . " syntax file appropriate for Vim " . version/100 . "." . version %100 . "." + finish +endif + +syn case ignore + +" Syntax +syn match poviniInclude "^\s*[^[+-;]\S*\s*$" contains=poviniSection +syn match poviniLabel "^.\{-1,}\ze=" transparent contains=poviniKeyword nextgroup=poviniBool,poviniNumber +syn keyword poviniBool On Off True False Yes No +syn match poviniNumber "\<\d*\.\=\d\+\>" +syn keyword poviniKeyword Clock Initial_Frame Final_Frame Frame_Final Frame_Step Initial_Clock Final_Clock Subset_Start_Frame Subset_End_Frame Cyclic_Animation Clockless_Animation Real_Time_Raytracing Field_Render Odd_Field Work_Threads +syn keyword poviniKeyword Width Height Start_Column Start_Row End_Column End_Row Test_Abort Test_Abort_Count Continue_Trace Create_Ini +syn keyword poviniKeyword Display Video_Mode Palette Display_Gamma Pause_When_Done Verbose Draw_Vistas Preview_Start_Size Preview_End_Size Render_Block_Size Render_Block_Step Render_Pattern Max_Image_Buffer_Memory +syn keyword poviniKeyword Output_to_File Output_File_Type Output_Alpha Bits_Per_Color Output_File_Name Buffer_Output Buffer_Size Dither Dither_Method File_Gamma +syn keyword poviniKeyword BSP_Base BSP_Child BSP_Isect BSP_Max BSP_Miss +syn keyword poviniKeyword Histogram_Type Histogram_Grid_Size Histogram_Name +syn keyword poviniKeyword Input_File_Name Include_Header Library_Path Version +syn keyword poviniKeyword Debug_Console Fatal_Console Render_Console Statistic_Console Warning_Console All_Console Debug_File Fatal_File Render_File Statistic_File Warning_File All_File Warning_Level +syn keyword poviniKeyword Quality Bounding Bounding_Method Bounding_Threshold Light_Buffer Vista_Buffer Remove_Bounds Split_Unions Antialias Sampling_Method Antialias_Threshold Jitter Jitter_Amount Antialias_Depth Antialias_Gamma +syn keyword poviniKeyword Pre_Scene_Return Pre_Frame_Return Post_Scene_Return Post_Frame_Return User_Abort_Return Fatal_Error_Return +syn keyword poviniKeyword Radiosity Radiosity_File_Name Radiosity_From_File Radiosity_To_File Radiosity_Vain_Pretrace High_Reproducibility +syn match poviniShellOut "^\s*\(Pre_Scene_Command\|Pre_Frame_Command\|Post_Scene_Command\|Post_Frame_Command\|User_Abort_Command\|Fatal_Error_Command\)\>" nextgroup=poviniShellOutEq skipwhite +syn match poviniShellOutEq "=" nextgroup=poviniShellOutRHS skipwhite contained +syn match poviniShellOutRHS "[^;]\+" skipwhite contained contains=poviniShellOutSpecial +syn match poviniShellOutSpecial "%[osnkhw%]" contained +syn keyword poviniDeclare Declare +syn match poviniComment ";.*$" +syn match poviniOption "^\s*[+-]\S*" +syn match poviniIncludeLabel "^\s*Include_INI\s*=" nextgroup=poviniIncludedFile skipwhite +syn match poviniIncludedFile "[^;]\+" contains=poviniSection contained +syn region poviniSection start="\[" end="\]" + +" Define the default highlighting +hi def link poviniSection Special +hi def link poviniComment Comment +hi def link poviniDeclare poviniKeyword +hi def link poviniShellOut poviniKeyword +hi def link poviniIncludeLabel poviniKeyword +hi def link poviniKeyword Type +hi def link poviniShellOutSpecial Special +hi def link poviniIncludedFile poviniInclude +hi def link poviniInclude Include +hi def link poviniOption Keyword +hi def link poviniBool Constant +hi def link poviniNumber Number + +let b:current_syntax = "povini" diff --git a/share/vim/vim73/syntax/ppd.vim b/share/vim/vim74/syntax/ppd.vim similarity index 100% rename from share/vim/vim73/syntax/ppd.vim rename to share/vim/vim74/syntax/ppd.vim diff --git a/share/vim/vim73/syntax/ppwiz.vim b/share/vim/vim74/syntax/ppwiz.vim similarity index 100% rename from share/vim/vim73/syntax/ppwiz.vim rename to share/vim/vim74/syntax/ppwiz.vim diff --git a/share/vim/vim73/syntax/prescribe.vim b/share/vim/vim74/syntax/prescribe.vim similarity index 100% rename from share/vim/vim73/syntax/prescribe.vim rename to share/vim/vim74/syntax/prescribe.vim diff --git a/share/vim/vim73/syntax/privoxy.vim b/share/vim/vim74/syntax/privoxy.vim similarity index 100% rename from share/vim/vim73/syntax/privoxy.vim rename to share/vim/vim74/syntax/privoxy.vim diff --git a/share/vim/vim73/syntax/procmail.vim b/share/vim/vim74/syntax/procmail.vim similarity index 100% rename from share/vim/vim73/syntax/procmail.vim rename to share/vim/vim74/syntax/procmail.vim diff --git a/share/vim/vim74/syntax/progress.vim b/share/vim/vim74/syntax/progress.vim new file mode 100644 index 00000000..85a54a65 --- /dev/null +++ b/share/vim/vim74/syntax/progress.vim @@ -0,0 +1,329 @@ +" Vim syntax file +" Language: Progress 4GL +" Filename extensions: *.p (collides with Pascal), +" *.i (collides with assembler) +" *.w (collides with cweb) +" Maintainer: Philip Uren Remove SPAXY spam block +" Contributors: Matthew Stickney +" Chris Ruprecht +" Mikhail Kuperblum +" John Florian +" Version: 13 +" Last Change: Nov 11 2012 + +" For version 5.x: Clear all syntax item +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +if version >= 600 + setlocal iskeyword=@,48-57,_,-,!,#,$,% +else + set iskeyword=@,48-57,_,-,!,#,$,% +endif + +" The Progress editor doesn't cope with tabs very well. +set expandtab + +syn case ignore + +" Progress Blocks of code and mismatched "end." errors. +syn match ProgressEndError "\" +syn region ProgressDoBlock transparent matchgroup=ProgressDo start="\" matchgroup=ProgressDo end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction +syn region ProgressForBlock transparent matchgroup=ProgressFor start="\" matchgroup=ProgressFor end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction +syn region ProgressRepeatBlock transparent matchgroup=ProgressRepeat start="\" matchgroup=ProgressRepeat end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction +syn region ProgressCaseBlock transparent matchgroup=ProgressCase start="\" matchgroup=ProgressCase end="\\|\" contains=ALLBUT,ProgressProcedure,ProgressFunction + +" These are Progress reserved words, +" and they could go in ProgressReserved, +" but I found it more helpful to highlight them in a different color. +syn keyword ProgressConditional if else then when otherwise +syn keyword ProgressFor each where + +" Make those TODO and debugging notes stand out! +syn keyword ProgressTodo contained TODO BUG FIX +syn keyword ProgressDebug contained DEBUG +syn keyword ProgressDebug debugger + +" If you like to highlight the whole line of +" the start and end of procedures +" to make the whole block of code stand out: +syn match ProgressProcedure "^\s*procedure.*" +syn match ProgressProcedure "^\s*end\s\s*procedure.*" +syn match ProgressFunction "^\s*function.*" +syn match ProgressFunction "^\s*end\s\s*function.*" +" ... otherwise use this: +" syn keyword ProgressFunction procedure function + +syn keyword ProgressReserved accum[ulate] active-form active-window add alias all alter ambig[uous] analyz[e] and any apply as asc[ending] +syn keyword ProgressReserved assign asynchronous at attr[-space] audit-control audit-policy authorization auto-ret[urn] avail[able] back[ground] +syn keyword ProgressReserved before-h[ide] begins bell between big-endian blank break buffer-comp[are] buffer-copy by by-pointer by-variant-point[er] call +syn keyword ProgressReserved can-do can-find case case-sen[sitive] cast center[ed] check chr clear clipboard codebase-locator colon color column-lab[el] +syn keyword ProgressReserved col[umns] com-self compiler connected control copy-lob count-of cpstream create current current-changed current-lang[uage] +syn keyword ProgressReserved current-window current_date curs[or] database dataservers dataset dataset-handle db-remote-host dbcodepage dbcollation dbname +syn keyword ProgressReserved dbparam dbrest[rictions] dbtaskid dbtype dbvers[ion] dde deblank debug-list debugger decimals declare default +syn keyword ProgressReserved default-noxl[ate] default-window def[ine] delete delimiter desc[ending] dict[ionary] disable discon[nect] disp[lay] distinct do dos +syn keyword ProgressReserved down drop dynamic-cast dynamic-func[tion] dynamic-new each editing else enable encode end entry error-stat[us] escape +syn keyword ProgressReserved etime event-procedure except exclusive[-lock] exclusive-web[-user] exists export false fetch field[s] file-info[rmation] +syn keyword ProgressReserved fill find find-case-sensitive find-global find-next-occurrence find-prev-occurrence find-select find-wrap-around first +syn keyword ProgressReserved first-of focus font for form[at] fram[e] frame-col frame-db frame-down frame-field frame-file frame-inde[x] frame-line +syn keyword ProgressReserved frame-name frame-row frame-val[ue] from from-c[hars] from-p[ixels] function-call-type gateway[s] get-attr-call-type get-byte +syn keyword ProgressReserved get-codepage[s] get-coll[ations] get-column get-error-column get-error-row get-file-name get-file-offse[t] get-key-val[ue] +syn keyword ProgressReserved get-message-type get-row getbyte global go-on go-pend[ing] grant graphic-e[dge] group having header help hide host-byte-order if +syn keyword ProgressReserved import in index indicator input input-o[utput] insert into is is-attr[-space] join kblabel key-code key-func[tion] key-label +syn keyword ProgressReserved keycode keyfunc[tion] keylabel keys keyword label last last-even[t] last-key last-of lastkey ldbname leave library like +syn keyword ProgressReserved like-sequential line-count[er] listi[ng] little-endian locked log-manager lookup machine-class map member message message-lines mouse +syn keyword ProgressReserved mpe new next next-prompt no no-attr[-space] no-error no-f[ill] no-help no-hide no-label[s] no-lobs no-lock no-map +syn keyword ProgressReserved no-mes[sage] no-pause no-prefe[tch] no-return-val[ue] no-undo no-val[idate] no-wait not now null num-ali[ases] num-dbs num-entries +syn keyword ProgressReserved of off old on open opsys option or os-append os-command os-copy os-create-dir os-delete os-dir os-drive[s] os-error +syn keyword ProgressReserved os-rename otherwise output overlay page page-bot[tom] page-num[ber] page-top param[eter] password-field pause pdbname +syn keyword ProgressReserved persist[ent] pixels preproc[ess] privileges proc-ha[ndle] proc-st[atus] procedure-call-type process profiler program-name progress +syn keyword ProgressReserved prompt[-for] promsgs propath provers[ion] publish put put-byte put-key-val[ue] putbyte query query-tuning quit r-index +syn keyword ProgressReserved rcode-info[rmation] read-available read-exact-num readkey recid record-len[gth] rect[angle] release repeat reposition retain retry return +syn keyword ProgressReserved return-val[ue] revert revoke row-created row-deleted row-modified row-unmodified run save sax-comple[te] sax-parser-error +syn keyword ProgressReserved sax-running sax-uninitialized sax-write-begin sax-write-complete sax-write-content sax-write-element sax-write-error +syn keyword ProgressReserved sax-write-idle sax-write-tag schema screen screen-io screen-lines scroll sdbname search search-self search-target security-policy +syn keyword ProgressReserved seek select self session set set-attr-call-type setuser[id] share[-lock] shared show-stat[s] skip some source-procedure +syn keyword ProgressReserved space status stream stream-handle stream-io string-xref subscribe super system-dialog table table-handle target-procedure +syn keyword ProgressReserved term[inal] text text-cursor text-seg[-grow] then this-object this-procedure time title to today top-only trans[action] trigger +syn keyword ProgressReserved triggers trim true underl[ine] undo unform[atted] union unique unix unless-hidden unsubscribe up update use-index use-revvideo +syn keyword ProgressReserved use-underline user[id] using value values view view-as wait-for web-con[text] when where while window window-delayed-min[imize] +syn keyword ProgressReserved window-maxim[ized] window-minim[ized] window-normal with work-tab[le] workfile write xcode xcode-session-key xref xref-xml yes + +" Strings. Handles embedded quotes. +" Note that, for some reason, Progress doesn't use the backslash, "\" +" as the escape character; it uses tilde, "~". +syn region ProgressString matchgroup=ProgressQuote start=+"+ end=+"+ skip=+\~'\|\~\~\|\~"+ contains=@Spell +syn region ProgressString matchgroup=ProgressQuote start=+'+ end=+'+ skip=+\~'\|\~\~\|\~"+ contains=@Spell + +syn match ProgressIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>()" + +" syn match ProgressDelimiter "()" + +syn match ProgressMatrixDelimiter "[][]" +" If you prefer you can highlight the range: +"syn match ProgressMatrixDelimiter "[\d\+\.\.\d\+]" + +syn match ProgressNumber "\<\-\=\d\+\(u\=l\=\|lu\|f\)\>" +syn match ProgressByte "\$[0-9a-fA-F]\+" + +" More values: Logicals, and Progress's unknown value, ?. +syn match ProgressNumber "?" +syn keyword ProgressNumber true false yes no + +" If you don't like tabs: +syn match ProgressShowTab "\t" + +" If you don't like white space on the end of lines, uncomment this: +" syn match ProgressSpaceError "\s\+$" + +syn region ProgressComment start="/\*" end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug,@Spell +syn region ProgressInclude start="^[ ]*[{]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,ProgressComment +syn region ProgressPreProc start="&" end="\>" contained + +" This next line works reasonably well. +" syn match ProgressOperator "[!;|)(:.><+*=-]" +" +" Progress allows a '-' to be part of an identifier. To be considered +" the subtraction/negation operation operator it needs a non-word +" character on either side. Also valid are cases where the minus +" operation appears at the beginning or end of a line. +" This next line trips up on "no-undo" etc. +" syn match ProgressOperator "[!;|)(:.><+*=]\|\W-\W\|^-\W\|\W-$" +syn match ProgressOperator "[!;|)(:.><+*=]\|\s-\s\|^-\s\|\s-$" + +syn keyword ProgressOperator <= <> >= +syn keyword ProgressOperator abs[olute] accelerator accept-changes accept-row-changes across active actor add-buffer add-calc-col[umn] +syn keyword ProgressOperator add-columns-from add-events-proc[edure] add-fields-from add-first add-header-entry add-index-field add-interval add-last +syn keyword ProgressOperator add-like-col[umn] add-like-field add-like-index add-new-field add-new-index add-rel[ation] add-schema-location add-source-buffer +syn keyword ProgressOperator add-super-proc[edure] adm-data advise after-buffer after-rowid after-table alert-box allow-column-searching allow-replication alternate-key +syn keyword ProgressOperator always-on-top ansi-only anywhere append append-child appl-alert[-boxes] appl-context-id application apply-callback appserver-info +syn keyword ProgressOperator appserver-password appserver-userid array-m[essage] ask-overwrite assembly async-request-count async-request-handle attach-data-source +syn keyword ProgressOperator attached-pairlist attach attribute-names audit-enabled audit-event-context authentication-failed auto-comp[letion] auto-delete +syn keyword ProgressOperator auto-delete-xml auto-end-key auto-endkey auto-go auto-ind[ent] auto-resize auto-synchronize auto-val[idate] auto-z[ap] automatic +syn keyword ProgressOperator available-formats ave[rage] avg backward[s] base-ade base-key basic-logging batch[-mode] batch-size before-buffer before-rowid +syn keyword ProgressOperator before-table begin-event-group bgc[olor] binary bind bind-where blob block-iteration-display border-b[ottom-chars] +syn keyword ProgressOperator border-bottom-p[ixels] border-l[eft-chars] border-left-p[ixels] border-r[ight-chars] border-right-p[ixels] border-t[op-chars] +syn keyword ProgressOperator border-top-p[ixels] both bottom box box-select[able] browse buffer buffer-chars buffer-create buffer-delete buffer-field buffer-handle +syn keyword ProgressOperator buffer-lines buffer-n[ame] buffer-releas[e] buffer-validate buffer-value button[s] by-reference by-value byte bytes-read +syn keyword ProgressOperator bytes-written cache cache-size call-name call-type can-crea[te] can-dele[te] can-query can-read can-set can-writ[e] cancel-break +syn keyword ProgressOperator cancel-button cancel-requests cancelled caps careful-paint catch cdecl chained char[acter] character_length charset checked +syn keyword ProgressOperator child-buffer child-num choose class class-type clear-appl-context clear-log clear-select[ion] clear-sort-arrow[s] +syn keyword ProgressOperator client-connection-id client-principal client-tty client-type client-workstation clob clone-node close close-log code codepage +syn keyword ProgressOperator codepage-convert col-of collate colon-align[ed] color-table column-bgc[olor] column-codepage column-dcolor column-fgc[olor] +syn keyword ProgressOperator column-font column-movable column-of column-pfc[olor] column-read-only column-resizable column-sc[rolling] com-handle combo-box +syn keyword ProgressOperator command compare[s] compile complete config-name connect constructor contents context context-help context-help-file +syn keyword ProgressOperator context-help-id context-pop[up] control-box control-fram[e] convert convert-to-offs[et] copy-dataset copy-sax-attributes +syn keyword ProgressOperator copy-temp-table count cpcase cpcoll cpint[ernal] cplog cpprint cprcodein cprcodeout cpterm crc-val[ue] create-like +syn keyword ProgressOperator create-like-sequential create-node create-node-namespace create-result-list-entry create-test-file current-column current-env[ironment] +syn keyword ProgressOperator current-iteration current-query current-result-row current-row-modified current-value cursor-char cursor-line cursor-offset data-b[ind] +syn keyword ProgressOperator data-entry-ret[urn] data-rel[ation] data-source data-source-complete-map data-source-modified data-source-rowid data-t[ype] date +syn keyword ProgressOperator date-f[ormat] day db-references dcolor dde-error dde-i[d] dde-item dde-name dde-topic debu[g] debug-alert +syn keyword ProgressOperator declare-namespace decrypt default-buffer-handle default-but[ton] default-commit default-ex[tension] default-string +syn keyword ProgressOperator default-value define-user-event-manager defined delete-char delete-current-row delete-header-entry delete-line delete-node +syn keyword ProgressOperator delete-result-list-entry delete-selected-row delete-selected-rows descript[ion] deselect-focused-row deselect-rows deselect-selected-row +syn keyword ProgressOperator destructor detach-data-source dialog-box dir directory disable-auto-zap disable-connections disable-dump-triggers +syn keyword ProgressOperator disable-load-triggers disabled display-message display-timezone display-t[ype] domain-description domain-name domain-type double +syn keyword ProgressOperator drag-enabled drop-down drop-down-list drop-target dump dump-logging-now dynamic dynamic-current-value dynamic-next-value echo +syn keyword ProgressOperator edge[-chars] edge-p[ixels] edit-can-paste edit-can-undo edit-clear edit-copy edit-cut edit-paste edit-undo editor empty +syn keyword ProgressOperator empty-dataset empty-temp-table enable-connections enabled encoding encrypt encrypt-audit-mac-key encryption-salt end-document +syn keyword ProgressOperator end-element end-event-group end-file-drop end-key end-user-prompt endkey entered entry-types-list eq error error-col[umn] +syn keyword ProgressOperator error-object-detail error-row error-stack-trace error-string event-group-id event-procedure-context event-t[ype] events exclusive-id +syn keyword ProgressOperator execute execution-log exp expand expandable expire explicit export-principal extended extent external extract +syn keyword ProgressOperator fetch-selected-row fgc[olor] file file-create-d[ate] file-create-t[ime] file-mod-d[ate] file-mod-t[ime] file-name file-off[set] +syn keyword ProgressOperator file-size file-type filename fill-in fill-mode fill-where-string filled filters final finally find-by-rowid find-current +syn keyword ProgressOperator find-first find-last find-unique finder first-async[-request] first-buffer first-child first-column first-data-source +syn keyword ProgressOperator first-dataset first-form first-object first-proc[edure] first-query first-serv[er] first-server-socket first-socket +syn keyword ProgressOperator first-tab-i[tem] fit-last-column fix-codepage fixed-only flat-button float focused-row focused-row-selected font-table force-file +syn keyword ProgressOperator fore[ground] foreign-key-hidden form-input form-long-input formatte[d] forward-only forward[s] fragmen[t] frame-spa[cing] frame-x +syn keyword ProgressOperator frame-y frequency from-cur[rent] full-height[-chars] full-height-p[ixels] full-pathn[ame] full-width[-chars] +syn keyword ProgressOperator full-width-p[ixels] function ge generate-pbe-key generate-pbe-salt generate-random-key generate-uuid get get-attribute get-attribute-node +syn keyword ProgressOperator get-binary-data get-bits get-blue[-value] get-browse-col[umn] get-buffer-handle get-byte-order get-bytes get-bytes-available +syn keyword ProgressOperator get-callback-proc-context get-callback-proc-name get-cgi-list get-cgi-long-value get-cgi-value get-changes get-child get-child-rel[ation] +syn keyword ProgressOperator get-config-value get-curr[ent] get-dataset-buffer get-dir get-document-element get-double get-dropped-file get-dynamic get-file +syn keyword ProgressOperator get-firs[t] get-float get-green[-value] get-header-entr[y] get-index-by-namespace-name get-index-by-qname get-iteration get-last +syn keyword ProgressOperator get-localname-by-index get-long get-message get-next get-node get-number get-parent get-pointer-value get-prev get-printers get-property +syn keyword ProgressOperator get-qname-by-index get-red[-value] get-rel[ation] get-repositioned-row get-rgb[-value] get-selected[-widget] get-serialized get-short +syn keyword ProgressOperator get-signature get-size get-socket-option get-source-buffer get-string get-tab-item get-text-height[-chars] get-text-height-p[ixels] +syn keyword ProgressOperator get-text-width[-chars] get-text-width-p[ixels] get-top-buffer get-type-by-index get-type-by-namespace-name get-type-by-qname +syn keyword ProgressOperator get-unsigned-long get-unsigned-short get-uri-by-index get-value-by-index get-value-by-namespace-name get-value-by-qname +syn keyword ProgressOperator get-wait[-state] grayed grid-factor-h[orizontal] grid-factor-v[ertical] grid-snap grid-unit-height[-chars] grid-unit-height-p[ixels] +syn keyword ProgressOperator grid-unit-width[-chars] grid-unit-width-p[ixels] grid-visible group-box gt guid handle handler has-lobs has-records height[-chars] +syn keyword ProgressOperator height-p[ixels] help-topic hex-decode hex-encode hidden hint hori[zontal] html-charset html-end-of-line html-end-of-page +syn keyword ProgressOperator html-frame-begin html-frame-end html-header-begin html-header-end html-title-begin html-title-end hwnd icfparam[eter] icon +syn keyword ProgressOperator ignore-current-mod[ified] image image-down image-insensitive image-size image-size-c[hars] image-size-p[ixels] image-up immediate-display +syn keyword ProgressOperator implements import-node import-principal in-handle increment-exclusive-id index-hint index-info[rmation] indexed-reposition +syn keyword ProgressOperator info[rmation] inherit-bgc[olor] inherit-fgc[olor] inherits init[ial] initial-dir initial-filter initialize-document-type initiate +syn keyword ProgressOperator inner inner-chars inner-lines input-value insert-attribute insert-b[acktab] insert-before insert-file insert-row +syn keyword ProgressOperator insert-string insert-t[ab] instantiating-procedure int[eger] interface internal-entries interval invoke is-clas[s] +syn keyword ProgressOperator is-codepage-fixed is-column-codepage is-lead-byte is-open is-parameter-set is-row-selected is-selected is-xml iso-date item +syn keyword ProgressOperator items-per-row join-by-sqldb keep-connection-open keep-frame-z[-order] keep-messages keep-security-cache keep-tab-order key +syn keyword ProgressOperator keyword-all label-bgc[olor] label-dc[olor] label-fgc[olor] label-font label-pfc[olor] labels landscape language[s] large +syn keyword ProgressOperator large-to-small last-async[-request] last-batch last-child last-form last-object last-proce[dure] last-serv[er] last-server-socket +syn keyword ProgressOperator last-socket last-tab-i[tem] lc le leading left left-align[ed] left-trim length line list-events list-item-pairs list-items +syn keyword ProgressOperator list-property-names list-query-attrs list-set-attrs list-widgets literal-question load load-domains load-icon load-image load-image-down +syn keyword ProgressOperator load-image-insensitive load-image-up load-mouse-p[ointer] load-picture load-small-icon lob-dir local-host local-name local-port +syn keyword ProgressOperator locator-column-number locator-line-number locator-public-id locator-system-id locator-type lock-registration log log-audit-event +syn keyword ProgressOperator log-entry-types log-threshold logfile-name logging-level logical login-expiration-timestamp login-host login-state logout long[char] +syn keyword ProgressOperator longchar-to-node-value lookahead lower lt mandatory manual-highlight margin-extra margin-height[-chars] margin-height-p[ixels] +syn keyword ProgressOperator margin-width[-chars] margin-width-p[ixels] mark-new mark-row-state matches max-button max-chars max-data-guess max-height[-chars] +syn keyword ProgressOperator max-height-p[ixels] max-rows max-size max-val[ue] max-width[-chars] max-width-p[ixels] maximize max[imum] maximum-level memory memptr +syn keyword ProgressOperator memptr-to-node-value menu menu-bar menu-item menu-k[ey] menu-m[ouse] menubar merge-by-field merge-changes merge-row-changes message-area +syn keyword ProgressOperator message-area-font method min-button min-column-width-c[hars] min-column-width-p[ixels] min-height[-chars] min-height-p[ixels] +syn keyword ProgressOperator min-schema-marshal min-size min-val[ue] min-width[-chars] min-width-p[ixels] min[imum] modified mod[ulo] month mouse-p[ointer] movable +syn keyword ProgressOperator move-after[-tab-item] move-befor[e-tab-item] move-col[umn] move-to-b[ottom] move-to-eof move-to-t[op] mtime multi-compile multiple +syn keyword ProgressOperator multiple-key multitasking-interval must-exist must-understand name namespace-prefix namespace-uri native ne needs-appserver-prompt +syn keyword ProgressOperator needs-prompt nested new-instance new-row next-col[umn] next-rowid next-sibling next-tab-ite[m] next-value no-apply +syn keyword ProgressOperator no-array-m[essage] no-assign no-attr-l[ist] no-auto-validate no-bind-where no-box no-console no-convert no-current-value no-debug +syn keyword ProgressOperator no-drag no-echo no-empty-space no-focus no-index-hint no-inherit-bgc[olor] no-inherit-fgc[olor] no-join-by-sqldb no-lookahead +syn keyword ProgressOperator no-row-markers no-schema-marshal no-scrollbar-v[ertical] no-separate-connection no-separators no-tab[-stop] no-und[erline] +syn keyword ProgressOperator no-word-wrap node-value node-value-to-longchar node-value-to-memptr nonamespace-schema-location none normalize not-active +syn keyword ProgressOperator num-buffers num-but[tons] num-child-relations num-children num-col[umns] num-copies num-dropped-files num-fields num-formats +syn keyword ProgressOperator num-header-entries num-items num-iterations num-lines num-locked-col[umns] num-log-files num-messages num-parameters num-references +syn keyword ProgressOperator num-relations num-repl[aced] num-results num-selected-rows num-selected[-widgets] num-source-buffers num-tabs num-to-retain +syn keyword ProgressOperator num-top-buffers num-visible-col[umns] numeric numeric-dec[imal-point] numeric-f[ormat] numeric-sep[arator] object ok ok-cancel +syn keyword ProgressOperator on-frame[-border] ordered-join ordinal orientation origin-handle origin-rowid os-getenv outer outer-join override owner owner-document +syn keyword ProgressOperator page-size page-wid[th] paged parent parent-buffer parent-rel[ation] parse-status partial-key pascal pathname +syn keyword ProgressOperator pbe-hash-alg[orithm] pbe-key-rounds perf[ormance] persistent-cache-disabled persistent-procedure pfc[olor] pixels-per-col[umn] +syn keyword ProgressOperator pixels-per-row popup-m[enu] popup-o[nly] portrait position precision prefer-dataset prepare-string prepared presel[ect] prev +syn keyword ProgressOperator prev-col[umn] prev-sibling prev-tab-i[tem] primary printer printer-control-handle printer-hdc printer-name printer-port +syn keyword ProgressOperator printer-setup private private-d[ata] proce[dure] procedure-name progress-s[ource] property protected proxy proxy-password +syn keyword ProgressOperator proxy-userid public public-id published-events put-bits put-bytes put-double put-float put-long put-short put-string +syn keyword ProgressOperator put-unsigned-long put-unsigned-short query-close query-off-end query-open query-prepare question quoter radio-buttons radio-set random +syn keyword ProgressOperator raw raw-transfer read read-file read-only read-xml read-xmlschema real recursive reference-only refresh +syn keyword ProgressOperator refresh-audit-policy refreshable register-domain reject-changes reject-row-changes rejected relation-fi[elds] relations-active remote +syn keyword ProgressOperator remote-host remote-port remove-attribute remove-child remove-events-proc[edure] remove-super-proc[edure] replace replace-child +syn keyword ProgressOperator replace-selection-text replication-create replication-delete replication-write reposition-back[ward] reposition-forw[ard] reposition-to-row +syn keyword ProgressOperator reposition-to-rowid request reset resiza[ble] resize restart-row restart-rowid result retain-s[hape] retry-cancel return-ins[erted] +syn keyword ProgressOperator return-to-start-di[r] return-value-data-type returns reverse-from rgb-v[alue] right right-align[ed] right-trim roles round rounded +syn keyword ProgressOperator routine-level row row-height[-chars] row-height-p[ixels] row-ma[rkers] row-of row-resizable row-state rowid rule run-proc[edure] +syn keyword ProgressOperator save-as save-file save-row-changes save-where-string sax-attributes sax-parse sax-parse-first sax-parse-next sax-reader +syn keyword ProgressOperator sax-writer schema-change schema-location schema-marshal schema-path screen-val[ue] scroll-bars scroll-delta scroll-offset +syn keyword ProgressOperator scroll-to-current-row scroll-to-i[tem] scroll-to-selected-row scrollable scrollbar-h[orizontal] scrollbar-v[ertical] +syn keyword ProgressOperator scrolled-row-pos[ition] scrolling seal seal-timestamp section select-all select-focused-row select-next-row select-prev-row select-row +syn keyword ProgressOperator selectable selected selection-end selection-list selection-start selection-text send sensitive separate-connection +syn keyword ProgressOperator separator-fgc[olor] separators server server-connection-bo[und] server-connection-bound-re[quest] server-connection-co[ntext] +syn keyword ProgressOperator server-connection-id server-operating-mode server-socket session-end session-id set-actor set-appl-context set-attribute +syn keyword ProgressOperator set-attribute-node set-blue[-value] set-break set-buffers set-byte-order set-callback set-callback-procedure set-client set-commit +syn keyword ProgressOperator set-connect-procedure set-contents set-db-client set-dynamic set-green[-value] set-input-source set-must-understand set-node +syn keyword ProgressOperator set-numeric-form[at] set-option set-output-destination set-parameter set-pointer-val[ue] set-property set-read-response-procedure +syn keyword ProgressOperator set-red[-value] set-repositioned-row set-rgb[-value] set-rollback set-selection set-serialized set-size set-socket-option +syn keyword ProgressOperator set-sort-arrow set-wait[-state] short show-in-task[bar] side-label-h[andle] side-lab[els] silent simple single single-character size +syn keyword ProgressOperator size-c[hars] size-p[ixels] skip-deleted-rec[ord] slider small-icon small-title smallint soap-fault soap-fault-actor +syn keyword ProgressOperator soap-fault-code soap-fault-detail soap-fault-string soap-header soap-header-entryref socket sort sort-ascending sort-number source +syn keyword ProgressOperator sql sqrt ssl-server-name standalone start-document start-element start[ing] startup-parameters state-detail static +syn keyword ProgressOperator status-area status-area-font stdcall stop stop-parsing stoppe[d] stored-proc[edure] stretch-to-fit strict string string-value +syn keyword ProgressOperator sub-ave[rage] sub-count sub-max[imum] sub-menu sub-menu-help sub-min[imum] sub-total subst[itute] substr[ing] subtype sum +syn keyword ProgressOperator super-proc[edures] suppress-namespace-processing suppress-w[arnings] suspend symmetric-encryption-algorithm symmetric-encryption-iv +syn keyword ProgressOperator symmetric-encryption-key symmetric-support synchronize system-alert[-boxes] system-help system-id tab-position tab-stop table-crc-list +syn keyword ProgressOperator table-list table-num[ber] target temp-dir[ectory] temp-table temp-table-prepar[e] terminate text-selected three-d through throw +syn keyword ProgressOperator thru tic-marks time-source timezone title-bgc[olor] title-dc[olor] title-fgc[olor] title-fo[nt] to-rowid toggle-box +syn keyword ProgressOperator tooltip tooltips top top-nav-query topic total tracking-changes trailing trans-init-proc[edure] transaction-mode +syn keyword ProgressOperator transpar[ent] trunc[ate] ttcodepage type type-of unbox unbuff[ered] unique-id unique-match unload unsigned-byte unsigned-integer +syn keyword ProgressOperator unsigned-long unsigned-short update-attribute upper url url-decode url-encode url-password url-userid use use-dic[t-exps] +syn keyword ProgressOperator use-filename use-text use-widget-pool user-id valid-event valid-handle valid-object validate validate-expressio[n] +syn keyword ProgressOperator validate-message validate-seal validate-xml validation-enabled var[iable] verb[ose] version vert[ical] view-first-column-on-reopen +syn keyword ProgressOperator virtual-height[-chars] virtual-height-p[ixels] virtual-width[-chars] virtual-width-p[ixels] visible void wait warning weekday where-string +syn keyword ProgressOperator widget widget-e[nter] widget-h[andle] widget-id widget-l[eave] widget-pool width[-chars] width-p[ixels] window-name +syn keyword ProgressOperator window-sta[te] window-sys[tem] word-index word-wrap work-area-height-p[ixels] work-area-width-p[ixels] work-area-x work-area-y +syn keyword ProgressOperator write-cdata write-characters write-comment write-data-element write-empty-element write-entity-ref write-external-dtd +syn keyword ProgressOperator write-fragment write-message write-processing-instruction write-status write-xml write-xmlschema x x-document x-noderef x-of +syn keyword ProgressOperator xml-data-type xml-node-name xml-node-type xml-schema-pat[h] xml-suppress-namespace-processing y y-of year year-offset yes-no +syn keyword ProgressOperator yes-no-cancel + +syn keyword ProgressType char[acter] int[eger] int64 dec[imal] log[ical] da[te] datetime datetime-tz + +syn sync lines=800 + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_progress_syntax_inits") + if version < 508 + let did_progress_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " The default methods for highlighting. Can be overridden later. + HiLink ProgressByte Number + HiLink ProgressCase Repeat + HiLink ProgressComment Comment + HiLink ProgressConditional Conditional + HiLink ProgressDebug Debug + HiLink ProgressDo Repeat + HiLink ProgressEndError Error + HiLink ProgressFor Repeat + HiLink ProgressFunction Procedure + HiLink ProgressIdentifier Identifier + HiLink ProgressInclude Include + HiLink ProgressMatrixDelimiter Identifier + HiLink ProgressNumber Number + HiLink ProgressOperator Operator + HiLink ProgressPreProc PreProc + HiLink ProgressProcedure Procedure + HiLink ProgressQuote Delimiter + HiLink ProgressRepeat Repeat + HiLink ProgressReserved Statement + HiLink ProgressSpaceError Error + HiLink ProgressString String + HiLink ProgressTodo Todo + HiLink ProgressType Statement + HiLink ProgressShowTab Error + + delcommand HiLink +endif + +let b:current_syntax = "progress" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 sw=8 diff --git a/share/vim/vim74/syntax/prolog.vim b/share/vim/vim74/syntax/prolog.vim new file mode 100644 index 00000000..f5f0e673 --- /dev/null +++ b/share/vim/vim74/syntax/prolog.vim @@ -0,0 +1,123 @@ +" Vim syntax file +" Language: PROLOG +" Maintainers: Thomas Koehler +" Last Change: 2013 May 23 +" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim + +" There are two sets of highlighting in here: +" If the "prolog_highlighting_clean" variable exists, it is rather sparse. +" Otherwise you get more highlighting. + +" Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Prolog is case sensitive. +syn case match + +" Very simple highlighting for comments, clause heads and +" character codes. It respects prolog strings and atoms. + +syn region prologCComment start=+/\*+ end=+\*/+ +syn match prologComment +%.*+ + +syn keyword prologKeyword module meta_predicate multifile dynamic +syn match prologCharCode +0'\\\=.+ +syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+ +syn region prologClause matchgroup=prologClauseHead start=+^\s*[a-z]\w*+ matchgroup=Normal end=+\.\s\|\.$+ contains=ALLBUT,prologClause + +if !exists("prolog_highlighting_clean") + + " some keywords + " some common predicates are also highlighted as keywords + " is there a better solution? + syn keyword prologKeyword abolish current_output peek_code + syn keyword prologKeyword append current_predicate put_byte + syn keyword prologKeyword arg current_prolog_flag put_char + syn keyword prologKeyword asserta fail put_code + syn keyword prologKeyword assertz findall read + syn keyword prologKeyword at_end_of_stream float read_term + syn keyword prologKeyword atom flush_output repeat + syn keyword prologKeyword atom_chars functor retract + syn keyword prologKeyword atom_codes get_byte set_input + syn keyword prologKeyword atom_concat get_char set_output + syn keyword prologKeyword atom_length get_code set_prolog_flag + syn keyword prologKeyword atomic halt set_stream_position + syn keyword prologKeyword bagof integer setof + syn keyword prologKeyword call is stream_property + syn keyword prologKeyword catch nl sub_atom + syn keyword prologKeyword char_code nonvar throw + syn keyword prologKeyword char_conversion number true + syn keyword prologKeyword clause number_chars unify_with_occurs_check + syn keyword prologKeyword close number_codes var + syn keyword prologKeyword compound once write + syn keyword prologKeyword copy_term op write_canonical + syn keyword prologKeyword current_char_conversion open write_term + syn keyword prologKeyword current_input peek_byte writeq + syn keyword prologKeyword current_op peek_char + + syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|=" + syn match prologAsIs "===\|\\===\|<=\|=>" + + syn match prologNumber "\<[0123456789]*\>'\@!" + syn match prologCommentError "\*/" + syn match prologSpecialCharacter ";" + syn match prologSpecialCharacter "!" + syn match prologSpecialCharacter ":-" + syn match prologSpecialCharacter "-->" + syn match prologQuestion "?-.*\." contains=prologNumber + + +endif + +syn sync maxlines=50 + + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_prolog_syn_inits") + if version < 508 + let did_prolog_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " The default highlighting. + HiLink prologComment Comment + HiLink prologCComment Comment + HiLink prologCharCode Special + + if exists ("prolog_highlighting_clean") + + HiLink prologKeyword Statement + HiLink prologClauseHead Statement + HiLink prologClause Normal + + else + + HiLink prologKeyword Keyword + HiLink prologClauseHead Constant + HiLink prologClause Normal + HiLink prologQuestion PreProc + HiLink prologSpecialCharacter Special + HiLink prologNumber Number + HiLink prologAsIs Normal + HiLink prologCommentError Error + HiLink prologAtom String + HiLink prologString String + HiLink prologOperator Operator + + endif + + delcommand HiLink +endif + +let b:current_syntax = "prolog" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/promela.vim b/share/vim/vim74/syntax/promela.vim similarity index 100% rename from share/vim/vim73/syntax/promela.vim rename to share/vim/vim74/syntax/promela.vim diff --git a/share/vim/vim74/syntax/proto.vim b/share/vim/vim74/syntax/proto.vim new file mode 100644 index 00000000..4d6a77e8 --- /dev/null +++ b/share/vim/vim74/syntax/proto.vim @@ -0,0 +1,74 @@ +" syntax file for Protocol Buffers - Google's data interchange format +" +" Copyright 2008 Google Inc. All rights reserved. +" +" Permission is hereby granted, free of charge, to any person obtaining a copy +" of this software and associated documentation files (the "Software"), to deal +" in the Software without restriction, including without limitation the rights +" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +" copies of the Software, and to permit persons to whom the Software is +" furnished to do so, subject to the following conditions: +" +" The above copyright notice and this permission notice shall be included in +" all copies or substantial portions of the Software. +" +" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +" THE SOFTWARE. +" +" http://code.google.com/p/protobuf/ + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case match + +syn keyword protoTodo contained TODO FIXME XXX +syn cluster protoCommentGrp contains=protoTodo + +syn keyword protoSyntax syntax import option +syn keyword protoStructure package message group +syn keyword protoRepeat optional required repeated +syn keyword protoDefault default +syn keyword protoExtend extend extensions to max +syn keyword protoRPC service rpc returns + +syn keyword protoType int32 int64 uint32 uint64 sint32 sint64 +syn keyword protoType fixed32 fixed64 sfixed32 sfixed64 +syn keyword protoType float double bool string bytes +syn keyword protoTypedef enum +syn keyword protoBool true false + +syn match protoInt /-\?\<\d\+\>/ +syn match protoInt /\<0[xX]\x+\>/ +syn match protoFloat /\<-\?\d*\(\.\d*\)\?/ +syn region protoComment start="\/\*" end="\*\/" contains=@protoCommentGrp +syn region protoComment start="//" skip="\\$" end="$" keepend contains=@protoCommentGrp +syn region protoString start=/"/ skip=/\\./ end=/"/ +syn region protoString start=/'/ skip=/\\./ end=/'/ + +hi def link protoTodo Todo + +hi def link protoSyntax Include +hi def link protoStructure Structure +hi def link protoRepeat Repeat +hi def link protoDefault Keyword +hi def link protoExtend Keyword +hi def link protoRPC Keyword +hi def link protoType Type +hi def link protoTypedef Typedef +hi def link protoBool Boolean + +hi def link protoInt Number +hi def link protoFloat Float +hi def link protoComment Comment +hi def link protoString String + +let b:current_syntax = "proto" diff --git a/share/vim/vim73/syntax/protocols.vim b/share/vim/vim74/syntax/protocols.vim similarity index 100% rename from share/vim/vim73/syntax/protocols.vim rename to share/vim/vim74/syntax/protocols.vim diff --git a/share/vim/vim73/syntax/psf.vim b/share/vim/vim74/syntax/psf.vim similarity index 100% rename from share/vim/vim73/syntax/psf.vim rename to share/vim/vim74/syntax/psf.vim diff --git a/share/vim/vim73/syntax/ptcap.vim b/share/vim/vim74/syntax/ptcap.vim similarity index 100% rename from share/vim/vim73/syntax/ptcap.vim rename to share/vim/vim74/syntax/ptcap.vim diff --git a/share/vim/vim73/syntax/purifylog.vim b/share/vim/vim74/syntax/purifylog.vim similarity index 100% rename from share/vim/vim73/syntax/purifylog.vim rename to share/vim/vim74/syntax/purifylog.vim diff --git a/share/vim/vim73/syntax/pyrex.vim b/share/vim/vim74/syntax/pyrex.vim similarity index 100% rename from share/vim/vim73/syntax/pyrex.vim rename to share/vim/vim74/syntax/pyrex.vim diff --git a/share/vim/vim74/syntax/python.vim b/share/vim/vim74/syntax/python.vim new file mode 100644 index 00000000..71b4405e --- /dev/null +++ b/share/vim/vim74/syntax/python.vim @@ -0,0 +1,303 @@ +" Vim syntax file +" Language: Python +" Maintainer: Neil Schemenauer +" Last Change: 2013 Feb 26 +" Credits: Zvezdan Petkovic +" Neil Schemenauer +" Dmitry Vasiliev +" +" This version is a major rewrite by Zvezdan Petkovic. +" +" - introduced highlighting of doctests +" - updated keywords, built-ins, and exceptions +" - corrected regular expressions for +" +" * functions +" * decorators +" * strings +" * escapes +" * numbers +" * space error +" +" - corrected synchronization +" - more highlighting is ON by default, except +" - space error highlighting is OFF by default +" +" Optional highlighting can be controlled using these variables. +" +" let python_no_builtin_highlight = 1 +" let python_no_doctest_code_highlight = 1 +" let python_no_doctest_highlight = 1 +" let python_no_exception_highlight = 1 +" let python_no_number_highlight = 1 +" let python_space_error_highlight = 1 +" +" All the options above can be switched on together. +" +" let python_highlight_all = 1 +" + +" For version 5.x: Clear all syntax items. +" For version 6.x: Quit when a syntax file was already loaded. +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" We need nocompatible mode in order to continue lines with backslashes. +" Original setting will be restored. +let s:cpo_save = &cpo +set cpo&vim + +" Keep Python keywords in alphabetical order inside groups for easy +" comparison with the table in the 'Python Language Reference' +" http://docs.python.org/reference/lexical_analysis.html#keywords. +" Groups are in the order presented in NAMING CONVENTIONS in syntax.txt. +" Exceptions come last at the end of each group (class and def below). +" +" Keywords 'with' and 'as' are new in Python 2.6 +" (use 'from __future__ import with_statement' in Python 2.5). +" +" Some compromises had to be made to support both Python 3.0 and 2.6. +" We include Python 3.0 features, but when a definition is duplicated, +" the last definition takes precedence. +" +" - 'False', 'None', and 'True' are keywords in Python 3.0 but they are +" built-ins in 2.6 and will be highlighted as built-ins below. +" - 'exec' is a built-in in Python 3.0 and will be highlighted as +" built-in below. +" - 'nonlocal' is a keyword in Python 3.0 and will be highlighted. +" - 'print' is a built-in in Python 3.0 and will be highlighted as +" built-in below (use 'from __future__ import print_function' in 2.6) +" +syn keyword pythonStatement False, None, True +syn keyword pythonStatement as assert break continue del exec global +syn keyword pythonStatement lambda nonlocal pass print return with yield +syn keyword pythonStatement class def nextgroup=pythonFunction skipwhite +syn keyword pythonConditional elif else if +syn keyword pythonRepeat for while +syn keyword pythonOperator and in is not or +syn keyword pythonException except finally raise try +syn keyword pythonInclude from import + +" Decorators (new in Python 2.4) +syn match pythonDecorator "@" display nextgroup=pythonFunction skipwhite +" The zero-length non-grouping match before the function name is +" extremely important in pythonFunction. Without it, everything is +" interpreted as a function inside the contained environment of +" doctests. +" A dot must be allowed because of @MyClass.myfunc decorators. +syn match pythonFunction + \ "\%(\%(def\s\|class\s\|@\)\s*\)\@<=\h\%(\w\|\.\)*" contained + +syn match pythonComment "#.*$" contains=pythonTodo,@Spell +syn keyword pythonTodo FIXME NOTE NOTES TODO XXX contained + +" Triple-quoted strings can contain doctests. +syn region pythonString + \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" + \ contains=pythonEscape,@Spell +syn region pythonString + \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend + \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell +syn region pythonRawString + \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" + \ contains=@Spell +syn region pythonRawString + \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend + \ contains=pythonSpaceError,pythonDoctest,@Spell + +syn match pythonEscape +\\[abfnrtv'"\\]+ contained +syn match pythonEscape "\\\o\{1,3}" contained +syn match pythonEscape "\\x\x\{2}" contained +syn match pythonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained +" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/ +syn match pythonEscape "\\N{\a\+\%(\s\a\+\)*}" contained +syn match pythonEscape "\\$" + +if exists("python_highlight_all") + if exists("python_no_builtin_highlight") + unlet python_no_builtin_highlight + endif + if exists("python_no_doctest_code_highlight") + unlet python_no_doctest_code_highlight + endif + if exists("python_no_doctest_highlight") + unlet python_no_doctest_highlight + endif + if exists("python_no_exception_highlight") + unlet python_no_exception_highlight + endif + if exists("python_no_number_highlight") + unlet python_no_number_highlight + endif + let python_space_error_highlight = 1 +endif + +" It is very important to understand all details before changing the +" regular expressions below or their order. +" The word boundaries are *not* the floating-point number boundaries +" because of a possible leading or trailing decimal point. +" The expressions below ensure that all valid number literals are +" highlighted, and invalid number literals are not. For example, +" +" - a decimal point in '4.' at the end of a line is highlighted, +" - a second dot in 1.0.0 is not highlighted, +" - 08 is not highlighted, +" - 08e0 or 08j are highlighted, +" +" and so on, as specified in the 'Python Language Reference'. +" http://docs.python.org/reference/lexical_analysis.html#numeric-literals +if !exists("python_no_number_highlight") + " numbers (including longs and complex) + syn match pythonNumber "\<0[oO]\=\o\+[Ll]\=\>" + syn match pythonNumber "\<0[xX]\x\+[Ll]\=\>" + syn match pythonNumber "\<0[bB][01]\+[Ll]\=\>" + syn match pythonNumber "\<\%([1-9]\d*\|0\)[Ll]\=\>" + syn match pythonNumber "\<\d\+[jJ]\>" + syn match pythonNumber "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" + syn match pythonNumber + \ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@=" + syn match pythonNumber + \ "\%(^\|\W\)\@<=\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>" +endif + +" Group the built-ins in the order in the 'Python Library Reference' for +" easier comparison. +" http://docs.python.org/library/constants.html +" http://docs.python.org/library/functions.html +" http://docs.python.org/library/functions.html#non-essential-built-in-functions +" Python built-in functions are in alphabetical order. +if !exists("python_no_builtin_highlight") + " built-in constants + " 'False', 'True', and 'None' are also reserved words in Python 3.0 + syn keyword pythonBuiltin False True None + syn keyword pythonBuiltin NotImplemented Ellipsis __debug__ + " built-in functions + syn keyword pythonBuiltin abs all any bin bool chr classmethod + syn keyword pythonBuiltin compile complex delattr dict dir divmod + syn keyword pythonBuiltin enumerate eval filter float format + syn keyword pythonBuiltin frozenset getattr globals hasattr hash + syn keyword pythonBuiltin help hex id input int isinstance + syn keyword pythonBuiltin issubclass iter len list locals map max + syn keyword pythonBuiltin min next object oct open ord pow print + syn keyword pythonBuiltin property range repr reversed round set + syn keyword pythonBuiltin setattr slice sorted staticmethod str + syn keyword pythonBuiltin sum super tuple type vars zip __import__ + " Python 2.6 only + syn keyword pythonBuiltin basestring callable cmp execfile file + syn keyword pythonBuiltin long raw_input reduce reload unichr + syn keyword pythonBuiltin unicode xrange + " Python 3.0 only + syn keyword pythonBuiltin ascii bytearray bytes exec memoryview + " non-essential built-in functions; Python 2.6 only + syn keyword pythonBuiltin apply buffer coerce intern +endif + +" From the 'Python Library Reference' class hierarchy at the bottom. +" http://docs.python.org/library/exceptions.html +if !exists("python_no_exception_highlight") + " builtin base exceptions (only used as base classes for other exceptions) + syn keyword pythonExceptions BaseException Exception + syn keyword pythonExceptions ArithmeticError EnvironmentError + syn keyword pythonExceptions LookupError + " builtin base exception removed in Python 3.0 + syn keyword pythonExceptions StandardError + " builtin exceptions (actually raised) + syn keyword pythonExceptions AssertionError AttributeError BufferError + syn keyword pythonExceptions EOFError FloatingPointError GeneratorExit + syn keyword pythonExceptions IOError ImportError IndentationError + syn keyword pythonExceptions IndexError KeyError KeyboardInterrupt + syn keyword pythonExceptions MemoryError NameError NotImplementedError + syn keyword pythonExceptions OSError OverflowError ReferenceError + syn keyword pythonExceptions RuntimeError StopIteration SyntaxError + syn keyword pythonExceptions SystemError SystemExit TabError TypeError + syn keyword pythonExceptions UnboundLocalError UnicodeError + syn keyword pythonExceptions UnicodeDecodeError UnicodeEncodeError + syn keyword pythonExceptions UnicodeTranslateError ValueError VMSError + syn keyword pythonExceptions WindowsError ZeroDivisionError + " builtin warnings + syn keyword pythonExceptions BytesWarning DeprecationWarning FutureWarning + syn keyword pythonExceptions ImportWarning PendingDeprecationWarning + syn keyword pythonExceptions RuntimeWarning SyntaxWarning UnicodeWarning + syn keyword pythonExceptions UserWarning Warning +endif + +if exists("python_space_error_highlight") + " trailing whitespace + syn match pythonSpaceError display excludenl "\s\+$" + " mixed tabs and spaces + syn match pythonSpaceError display " \+\t" + syn match pythonSpaceError display "\t\+ " +endif + +" Do not spell doctests inside strings. +" Notice that the end of a string, either ''', or """, will end the contained +" doctest too. Thus, we do *not* need to have it as an end pattern. +if !exists("python_no_doctest_highlight") + if !exists("python_no_doctest_code_highlight") + syn region pythonDoctest + \ start="^\s*>>>\s" end="^\s*$" + \ contained contains=ALLBUT,pythonDoctest,@Spell + syn region pythonDoctestValue + \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$" + \ contained + else + syn region pythonDoctest + \ start="^\s*>>>" end="^\s*$" + \ contained contains=@NoSpell + endif +endif + +" Sync at the beginning of class, function, or method definition. +syn sync match pythonSync grouphere NONE "^\s*\%(def\|class\)\s\+\h\w*\s*(" + +if version >= 508 || !exists("did_python_syn_inits") + if version <= 508 + let did_python_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " The default highlight links. Can be overridden later. + HiLink pythonStatement Statement + HiLink pythonConditional Conditional + HiLink pythonRepeat Repeat + HiLink pythonOperator Operator + HiLink pythonException Exception + HiLink pythonInclude Include + HiLink pythonDecorator Define + HiLink pythonFunction Function + HiLink pythonComment Comment + HiLink pythonTodo Todo + HiLink pythonString String + HiLink pythonRawString String + HiLink pythonEscape Special + if !exists("python_no_number_highlight") + HiLink pythonNumber Number + endif + if !exists("python_no_builtin_highlight") + HiLink pythonBuiltin Function + endif + if !exists("python_no_exception_highlight") + HiLink pythonExceptions Structure + endif + if exists("python_space_error_highlight") + HiLink pythonSpaceError Error + endif + if !exists("python_no_doctest_highlight") + HiLink pythonDoctest Special + HiLink pythonDoctestValue Define + endif + + delcommand HiLink +endif + +let b:current_syntax = "python" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:set sw=2 sts=2 ts=8 noet: diff --git a/share/vim/vim73/syntax/qf.vim b/share/vim/vim74/syntax/qf.vim similarity index 100% rename from share/vim/vim73/syntax/qf.vim rename to share/vim/vim74/syntax/qf.vim diff --git a/share/vim/vim73/syntax/quake.vim b/share/vim/vim74/syntax/quake.vim similarity index 100% rename from share/vim/vim73/syntax/quake.vim rename to share/vim/vim74/syntax/quake.vim diff --git a/share/vim/vim74/syntax/r.vim b/share/vim/vim74/syntax/r.vim new file mode 100644 index 00000000..5e76e7af --- /dev/null +++ b/share/vim/vim74/syntax/r.vim @@ -0,0 +1,221 @@ +" Vim syntax file +" Language: R (GNU S) +" Maintainer: Jakson Aquino +" Former Maintainers: Vaidotas Zemlys +" Tom Payne +" Last Change: Sun May 19, 2013 05:59PM +" Filenames: *.R *.r *.Rhistory *.Rt +" +" NOTE: The highlighting of R functions is defined in the +" r-plugin/functions.vim, which is part of vim-r-plugin2: +" http://www.vim.org/scripts/script.php?script_id=2628 +" +" CONFIGURATION: +" syntax folding can be turned on by +" +" let r_syntax_folding = 1 +" +" Some lines of code were borrowed from Zhuojun Chen. + +if exists("b:current_syntax") + finish +endif + +setlocal iskeyword=@,48-57,_,. + +if exists("g:r_syntax_folding") + setlocal foldmethod=syntax +endif + +syn case match + +" Comment +syn match rComment contains=@Spell "#.*" + +" Roxygen +syn match rOKeyword contained "@\(param\|return\|name\|rdname\|examples\|include\|docType\)" +syn match rOKeyword contained "@\(S3method\|TODO\|aliases\|alias\|assignee\|author\|callGraphDepth\|callGraph\)" +syn match rOKeyword contained "@\(callGraphPrimitives\|concept\|exportClass\|exportMethod\|exportPattern\|export\|formals\)" +syn match rOKeyword contained "@\(format\|importClassesFrom\|importFrom\|importMethodsFrom\|import\|keywords\)" +syn match rOKeyword contained "@\(method\|nord\|note\|references\|seealso\|setClass\|slot\|source\|title\|usage\)" +syn match rOComment contains=@Spell,rOKeyword "#'.*" + + +if &filetype == "rhelp" + " string enclosed in double quotes + syn region rString contains=rSpecial,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/ + " string enclosed in single quotes + syn region rString contains=rSpecial,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/ +else + " string enclosed in double quotes + syn region rString contains=rSpecial,rStrError,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/ + " string enclosed in single quotes + syn region rString contains=rSpecial,rStrError,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/ +endif + +syn match rStrError display contained "\\." + + +" New line, carriage return, tab, backspace, bell, feed, vertical tab, backslash +syn match rSpecial display contained "\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\" + +" Hexadecimal and Octal digits +syn match rSpecial display contained "\\\(x\x\{1,2}\|[0-8]\{1,3}\)" + +" Unicode characters +syn match rSpecial display contained "\\u\x\{1,4}" +syn match rSpecial display contained "\\U\x\{1,8}" +syn match rSpecial display contained "\\u{\x\{1,4}}" +syn match rSpecial display contained "\\U{\x\{1,8}}" + +" Statement +syn keyword rStatement break next return +syn keyword rConditional if else +syn keyword rRepeat for in repeat while + +" Constant (not really) +syn keyword rConstant T F LETTERS letters month.abb month.name pi +syn keyword rConstant R.version.string + +syn keyword rNumber NA_integer_ NA_real_ NA_complex_ NA_character_ + +" Constants +syn keyword rConstant NULL +syn keyword rBoolean FALSE TRUE +syn keyword rNumber NA Inf NaN + +" integer +syn match rInteger "\<\d\+L" +syn match rInteger "\<0x\([0-9]\|[a-f]\|[A-F]\)\+L" +syn match rInteger "\<\d\+[Ee]+\=\d\+L" + +" number with no fractional part or exponent +syn match rNumber "\<\d\+\>" +" hexadecimal number +syn match rNumber "\<0x\([0-9]\|[a-f]\|[A-F]\)\+" + +" floating point number with integer and fractional parts and optional exponent +syn match rFloat "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\=" +" floating point number with no integer part and optional exponent +syn match rFloat "\<\.\d\+\([Ee][-+]\=\d\+\)\=" +" floating point number with no fractional part and optional exponent +syn match rFloat "\<\d\+[Ee][-+]\=\d\+" + +" complex number +syn match rComplex "\<\d\+i" +syn match rComplex "\<\d\++\d\+i" +syn match rComplex "\<0x\([0-9]\|[a-f]\|[A-F]\)\+i" +syn match rComplex "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\=i" +syn match rComplex "\<\.\d\+\([Ee][-+]\=\d\+\)\=i" +syn match rComplex "\<\d\+[Ee][-+]\=\d\+i" + +syn match rOperator "&" +syn match rOperator '-' +syn match rOperator '\*' +syn match rOperator '+' +syn match rOperator '=' +if &filetype != "rmd" && &filetype != "rrst" + syn match rOperator "[|!<>^~/:]" +else + syn match rOperator "[|!<>^~`/:]" +endif +syn match rOperator "%\{2}\|%\S*%" +syn match rOpError '\*\{3}' +syn match rOpError '//' +syn match rOpError '&&&' +syn match rOpError '|||' +syn match rOpError '<<' +syn match rOpError '>>' + +syn match rArrow "<\{1,2}-" +syn match rArrow "->\{1,2}" + +" Special +syn match rDelimiter "[,;:]" + +" Error +if exists("g:r_syntax_folding") + syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError fold + syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError fold + syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError fold +else + syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError + syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError + syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError +endif + +syn match rError "[)\]}]" +syn match rBraceError "[)}]" contained +syn match rCurlyError "[)\]]" contained +syn match rParenError "[\]}]" contained + +" Source list of R functions. The list is produced by the Vim-R-plugin +" http://www.vim.org/scripts/script.php?script_id=2628 +runtime r-plugin/functions.vim + +syn match rDollar display contained "\$" +syn match rDollar display contained "@" + +" List elements will not be highlighted as functions: +syn match rLstElmt "\$[a-zA-Z0-9\\._]*" contains=rDollar +syn match rLstElmt "@[a-zA-Z0-9\\._]*" contains=rDollar + +" Functions that may add new objects +syn keyword rPreProc library require attach detach source + +if &filetype == "rhelp" + syn match rHelpIdent '\\method' + syn match rHelpIdent '\\S4method' +endif + +" Type +syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame + +" Name of object with spaces +if &filetype != "rmd" && &filetype != "rrst" + syn region rNameWSpace start="`" end="`" +endif + +if &filetype == "rhelp" + syn match rhPreProc "^#ifdef.*" + syn match rhPreProc "^#endif.*" + syn match rhSection "\\dontrun\>" +endif + +" Define the default highlighting. +hi def link rArrow Statement +hi def link rBoolean Boolean +hi def link rBraceError Error +hi def link rComment Comment +hi def link rOComment Comment +hi def link rComplex Number +hi def link rConditional Conditional +hi def link rConstant Constant +hi def link rCurlyError Error +hi def link rDelimiter Delimiter +hi def link rDollar SpecialChar +hi def link rError Error +hi def link rFloat Float +hi def link rFunction Function +hi def link rHelpIdent Identifier +hi def link rhPreProc PreProc +hi def link rhSection PreCondit +hi def link rInteger Number +hi def link rLstElmt Normal +hi def link rNameWSpace Normal +hi def link rNumber Number +hi def link rOperator Operator +hi def link rOpError Error +hi def link rParenError Error +hi def link rPreProc PreProc +hi def link rRepeat Repeat +hi def link rSpecial SpecialChar +hi def link rStatement Statement +hi def link rString String +hi def link rStrError Error +hi def link rType Type +hi def link rOKeyword Title + +let b:current_syntax="r" + +" vim: ts=8 sw=2 diff --git a/share/vim/vim73/syntax/racc.vim b/share/vim/vim74/syntax/racc.vim similarity index 100% rename from share/vim/vim73/syntax/racc.vim rename to share/vim/vim74/syntax/racc.vim diff --git a/share/vim/vim73/syntax/radiance.vim b/share/vim/vim74/syntax/radiance.vim similarity index 100% rename from share/vim/vim73/syntax/radiance.vim rename to share/vim/vim74/syntax/radiance.vim diff --git a/share/vim/vim74/syntax/ratpoison.vim b/share/vim/vim74/syntax/ratpoison.vim new file mode 100644 index 00000000..9fc59bec --- /dev/null +++ b/share/vim/vim74/syntax/ratpoison.vim @@ -0,0 +1,280 @@ +" Vim syntax file +" Language: Ratpoison configuration/commands file ( /etc/ratpoisonrc ~/.ratpoisonrc ) +" Maintainer: Magnus Woldrich +" URL: http://github.com/trapd00r/vim-syntax-ratpoison +" Last Change: 2011 Apr 11 +" Previous Maintainer: Doug Kearns + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn match ratpoisonComment "^\s*#.*$" contains=ratpoisonTodo + +syn keyword ratpoisonTodo TODO NOTE FIXME XXX contained + +syn case ignore +syn keyword ratpoisonBooleanArg on off contained +syn case match + +syn keyword ratpoisonCommandArg abort addhook alias banish chdir contained +syn keyword ratpoisonCommandArg clrunmanaged cnext colon compat cother contained +syn keyword ratpoisonCommandArg cprev curframe dedicate definekey delete contained +syn keyword ratpoisonCommandArg delkmap describekey echo escape exec contained +syn keyword ratpoisonCommandArg fdump focus focusdown focuslast focusleft contained +syn keyword ratpoisonCommandArg focusprev focusright focusup frestore fselect contained +syn keyword ratpoisonCommandArg gdelete getenv getsel gmerge gmove contained +syn keyword ratpoisonCommandArg gnew gnewbg gnext gprev gravity contained +syn keyword ratpoisonCommandArg groups gselect help hsplit inext contained +syn keyword ratpoisonCommandArg info iother iprev kill lastmsg contained +syn keyword ratpoisonCommandArg license link listhook meta msgwait contained +syn keyword ratpoisonCommandArg newkmap newwm next nextscreen number contained +syn keyword ratpoisonCommandArg only other prev prevscreen prompt contained +syn keyword ratpoisonCommandArg putsel quit ratclick rathold ratrelwarp contained +syn keyword ratpoisonCommandArg ratwarp readkey redisplay redo remhook contained +syn keyword ratpoisonCommandArg remove resize restart rudeness sdump contained +syn keyword ratpoisonCommandArg select set setenv sfdump shrink contained +syn keyword ratpoisonCommandArg source sselect startup_message time title contained +syn keyword ratpoisonCommandArg tmpwm unalias undefinekey undo unmanage contained +syn keyword ratpoisonCommandArg unsetenv verbexec version vsplit warp contained +syn keyword ratpoisonCommandArg windows contained + +syn match ratpoisonGravityArg "\<\(n\|north\)\>" contained +syn match ratpoisonGravityArg "\<\(nw\|northwest\)\>" contained +syn match ratpoisonGravityArg "\<\(ne\|northeast\)\>" contained +syn match ratpoisonGravityArg "\<\(w\|west\)\>" contained +syn match ratpoisonGravityArg "\<\(c\|center\)\>" contained +syn match ratpoisonGravityArg "\<\(e\|east\)\>" contained +syn match ratpoisonGravityArg "\<\(s\|south\)\>" contained +syn match ratpoisonGravityArg "\<\(sw\|southwest\)\>" contained +syn match ratpoisonGravityArg "\<\(se\|southeast\)\>" contained +syn case match + +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(F[1-9][0-9]\=\|\(\a\|\d\)\)\>" contained nextgroup=ratpoisonCommandArg skipwhite + +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(space\|exclam\|quotedbl\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(numbersign\|dollar\|percent\|ampersand\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(apostrophe\|quoteright\|parenleft\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(parenright\|asterisk\|plus\|comma\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(minus\|period\|slash\|colon\|semicolon\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(less\|equal\|greater\|question\|at\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(bracketleft\|backslash\|bracketright\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(asciicircum\|underscore\|grave\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(quoteleft\|braceleft\|bar\|braceright\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(asciitilde\)\>" contained nextgroup=ratpoisonCommandArg skipwhite + +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(BackSpace\|Tab\|Linefeed\|Clear\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Return\|Pause\|Scroll_Lock\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Sys_Req\|Escape\|Delete\)\>" contained nextgroup=ratpoisonCommandArg skipwhite + +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Home\|Left\|Up\|Right\|Down\|Prior\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Page_Up\|Next\|Page_Down\|End\|Begin\)\>" contained nextgroup=ratpoisonCommandArg skipwhite + +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Select\|Print\|Execute\|Insert\|Undo\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Redo\|Menu\|Find\|Cancel\|Help\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Break\|Mode_switch\|script_switch\|Num_Lock\)\>" contained nextgroup=ratpoisonCommandArg skipwhite + +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Space\|Tab\|Enter\|F[1234]\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Home\|Left\|Up\|Right\|Down\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Prior\|Page_Up\|Next\|Page_Down\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(End\|Begin\|Insert\|Delete\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Equal\|Multiply\|Add\|Separator\)\>" contained nextgroup=ratpoisonCommandArg skipwhite +syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Subtract\|Decimal\|Divide\|\d\)\>" contained nextgroup=ratpoisonCommandArg skipwhite + +syn match ratpoisonHookArg "\<\(key\|switchwin\|switchframe\|switchgroup\|quit\|restart\)\>" contained + +syn match ratpoisonNumberArg "\<\d\+\>" contained nextgroup=ratpoisonNumberArg skipwhite + +syn keyword ratpoisonSetArg barborder contained nextgroup=ratpoisonNumberArg +syn keyword ratpoisonSetArg bargravity contained nextgroup=ratpoisonGravityArg +syn keyword ratpoisonSetArg barpadding contained nextgroup=ratpoisonNumberArg +syn keyword ratpoisonSetArg bgcolor +syn keyword ratpoisonSetArg border contained nextgroup=ratpoisonNumberArg +syn keyword ratpoisonSetArg fgcolor +syn keyword ratpoisonSetArg fwcolor +syn keyword ratpoisonSetArg bwcolor +syn keyword ratpoisonSetArg historysize +syn keyword ratpoisonSetArg historycompaction +syn keyword ratpoisonSetArg historyexpansion +syn keyword ratpoisonSetArg topkmap +syn keyword ratpoisonSetArg barinpadding +syn keyword ratpoisonSetArg font +syn keyword ratpoisonSetArg framesels +syn keyword ratpoisonSetArg inputwidth contained nextgroup=ratpoisonNumberArg +syn keyword ratpoisonSetArg maxsizegravity contained nextgroup=ratpoisonGravityArg +syn keyword ratpoisonSetArg padding contained nextgroup=ratpoisonNumberArg +syn keyword ratpoisonSetArg resizeunit contained nextgroup=ratpoisonNumberArg +syn keyword ratpoisonSetArg transgravity contained nextgroup=ratpoisonGravityArg +syn keyword ratpoisonSetArg waitcursor contained nextgroup=ratpoisonNumberArg +syn keyword ratpoisonSetArg winfmt contained nextgroup=ratpoisonWinFmtArg +syn keyword ratpoisonSetArg wingravity contained nextgroup=ratpoisonGravityArg +syn keyword ratpoisonSetArg winliststyle contained nextgroup=ratpoisonWinListArg +syn keyword ratpoisonSetArg winname contained nextgroup=ratpoisonWinNameArg + +syn match ratpoisonWinFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite + +syn match ratpoisonWinListArg "\<\(row\|column\)\>" contained + +syn match ratpoisonWinNameArg "\<\(name\|title\|class\)\>" contained + +syn match ratpoisonDefCommand "^\s*set\s*" nextgroup=ratpoisonSetArg +syn match ratpoisonDefCommand "^\s*defbarborder\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonDefCommand "^\s*defbargravity\s*" nextgroup=ratpoisonGravityArg +syn match ratpoisonDefCommand "^\s*defbarpadding\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonDefCommand "^\s*defbgcolor\s*" +syn match ratpoisonDefCommand "^\s*defborder\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonDefCommand "^\s*deffgcolor\s*" +syn match ratpoisonDefCommand "^\s*deffont\s*" +syn match ratpoisonDefCommand "^\s*defframesels\s*" +syn match ratpoisonDefCommand "^\s*definputwidth\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonDefCommand "^\s*defmaxsizegravity\s*" nextgroup=ratpoisonGravityArg +syn match ratpoisonDefCommand "^\s*defpadding\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonDefCommand "^\s*defresizeunit\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonDefCommand "^\s*deftransgravity\s*" nextgroup=ratpoisonGravityArg +syn match ratpoisonDefCommand "^\s*defwaitcursor\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonDefCommand "^\s*defwinfmt\s*" nextgroup=ratpoisonWinFmtArg +syn match ratpoisonDefCommand "^\s*defwingravity\s*" nextgroup=ratpoisonGravityArg +syn match ratpoisonDefCommand "^\s*defwinliststyle\s*" nextgroup=ratpoisonWinListArg +syn match ratpoisonDefCommand "^\s*defwinname\s*" nextgroup=ratpoisonWinNameArg +syn match ratpoisonDefCommand "^\s*msgwait\s*" nextgroup=ratpoisonNumberArg + +syn match ratpoisonStringCommand "^\s*\zsaddhook\ze\s*" nextgroup=ratpoisonHookArg +syn match ratpoisonStringCommand "^\s*\zsalias\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsbind\ze\s*" nextgroup=ratpoisonKeySeqArg +syn match ratpoisonStringCommand "^\s*\zschdir\ze\s*" +syn match ratpoisonStringCommand "^\s*\zscolon\ze\s*" nextgroup=ratpoisonCommandArg +syn match ratpoisonStringCommand "^\s*\zsdedicate\ze\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonStringCommand "^\s*\zsdefinekey\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsdelkmap\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsdescribekey\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsecho\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsescape\ze\s*" nextgroup=ratpoisonKeySeqArg +syn match ratpoisonStringCommand "^\s*\zsexec\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsfdump\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsfrestore\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsgdelete\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsgetenv\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsgravity\ze\s*" nextgroup=ratpoisonGravityArg +syn match ratpoisonStringCommand "^\s*\zsgselect\ze\s*" +syn match ratpoisonStringCommand "^\s*\zslink\ze\s*" nextgroup=ratpoisonKeySeqArg +syn match ratpoisonStringCommand "^\s*\zslisthook\ze\s*" nextgroup=ratpoisonHookArg +syn match ratpoisonStringCommand "^\s*\zsnewkmap\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsnewwm\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsnumber\ze\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonStringCommand "^\s*\zsprompt\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsratwarp\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsratrelwarp\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsratclick\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsrathold\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsreadkey\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsremhook\ze\s*" nextgroup=ratpoisonHookArg +syn match ratpoisonStringCommand "^\s*\zsresize\ze\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonStringCommand "^\s*\zsrudeness\ze\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonStringCommand "^\s*\zsselect\ze\s*" nextgroup=ratpoisonNumberArg +syn match ratpoisonStringCommand "^\s*\zssetenv\ze\s*" +syn match ratpoisonStringCommand "^\s*\zssource\ze\s*" +syn match ratpoisonStringCommand "^\s*\zssselect\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsstartup_message\ze\s*" nextgroup=ratpoisonBooleanArg +syn match ratpoisonStringCommand "^\s*\zstitle\ze\s*" +syn match ratpoisonStringCommand "^\s*\zstmpwm\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsunalias\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsunbind\ze\s*" nextgroup=ratpoisonKeySeqArg +syn match ratpoisonStringCommand "^\s*\zsundefinekey\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsunmanage\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsunsetenv\ze\s*" +syn match ratpoisonStringCommand "^\s*\zsverbexec\ze\s*" +syn match ratpoisonStringCommand "^\s*\zswarp\ze\s*" nextgroup=ratpoisonBooleanArg + +syn match ratpoisonVoidCommand "^\s*\zsabort\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsbanish\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsclrunmanaged\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zscnext\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zscompat\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zscother\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zscprev\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zscurframe\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsdelete\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsfocusdown\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsfocuslast\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsfocusleft\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsfocusprev\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsfocusright\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsfocusup\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsfocus\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsfselect\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsgetsel\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsgmerge\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsgmove\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsgnewbg\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsgnew\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsgnext\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsgprev\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsgroups\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zshelp\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zshsplit\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsinext\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsinfo\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsiother\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsiprev\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zskill\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zslastmsg\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zslicense\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsmeta\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsnextscreen\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsnext\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsonly\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsother\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsprevscreen\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsprev\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsputsel\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsquit\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsredisplay\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsredo\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsremove\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsrestart\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zssdump\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zssfdump\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsshrink\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zssplit\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zstime\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsundo\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsversion\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zsvsplit\ze\s*$" +syn match ratpoisonVoidCommand "^\s*\zswindows\ze\s*$" + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_ratpoison_syn_inits") + if version < 508 + let did_ratpoison_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink ratpoisonBooleanArg Boolean + HiLink ratpoisonCommandArg Keyword + HiLink ratpoisonComment Comment + HiLink ratpoisonDefCommand Identifier + HiLink ratpoisonGravityArg Constant + HiLink ratpoisonKeySeqArg Special + HiLink ratpoisonNumberArg Number + HiLink ratpoisonSetArg Keyword + HiLink ratpoisonStringCommand Identifier + HiLink ratpoisonTodo Todo + HiLink ratpoisonVoidCommand Identifier + HiLink ratpoisonWinFmtArg Special + HiLink ratpoisonWinNameArg Constant + HiLink ratpoisonWinListArg Constant + + delcommand HiLink +endif + +let b:current_syntax = "ratpoison" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/rc.vim b/share/vim/vim74/syntax/rc.vim similarity index 100% rename from share/vim/vim73/syntax/rc.vim rename to share/vim/vim74/syntax/rc.vim diff --git a/share/vim/vim74/syntax/rcs.vim b/share/vim/vim74/syntax/rcs.vim new file mode 100644 index 00000000..e45d5fdb --- /dev/null +++ b/share/vim/vim74/syntax/rcs.vim @@ -0,0 +1,76 @@ +" Vim syntax file +" Language: RCS file +" Maintainer: Dmitry Vasiliev +" URL: https://github.com/hdima/vim-scripts/blob/master/syntax/rcs.vim +" Last Change: 2012-02-11 +" Filenames: *,v +" Version: 1.12 + +" Options: +" rcs_folding = 1 For folding strings + +" For version 5.x: Clear all syntax items. +" For version 6.x: Quit when a syntax file was already loaded. +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" RCS file must end with a newline. +syn match rcsEOFError ".\%$" containedin=ALL + +" Keywords. +syn keyword rcsKeyword head branch access symbols locks strict +syn keyword rcsKeyword comment expand date author state branches +syn keyword rcsKeyword next desc log +syn keyword rcsKeyword text nextgroup=rcsTextStr skipwhite skipempty + +" Revision numbers and dates. +syn match rcsNumber "\<[0-9.]\+\>" display + +" Strings. +if exists("rcs_folding") && has("folding") + " Folded strings. + syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" fold contains=rcsSpecial + syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" fold contained contains=rcsSpecial,rcsDiffLines +else + syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" contains=rcsSpecial + syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" contained contains=rcsSpecial,rcsDiffLines +endif +syn match rcsSpecial "@@" contained +syn match rcsDiffLines "[da]\d\+ \d\+$" contained + +" Synchronization. +syn sync clear +if exists("rcs_folding") && has("folding") + syn sync fromstart +else + " We have incorrect folding if following sync patterns is turned on. + syn sync match rcsSync grouphere rcsString "[0-9.]\+\(\s\|\n\)\+log\(\s\|\n\)\+@"me=e-1 + syn sync match rcsSync grouphere rcsTextStr "@\(\s\|\n\)\+text\(\s\|\n\)\+@"me=e-1 +endif + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already. +" For version 5.8 and later: only when an item doesn't have highlighting yet. +if version >= 508 || !exists("did_rcs_syn_inits") + if version <= 508 + let did_rcs_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink rcsKeyword Keyword + HiLink rcsNumber Identifier + HiLink rcsString String + HiLink rcsTextStr String + HiLink rcsSpecial Special + HiLink rcsDiffLines Special + HiLink rcsEOFError Error + + delcommand HiLink +endif + +let b:current_syntax = "rcs" diff --git a/share/vim/vim73/syntax/rcslog.vim b/share/vim/vim74/syntax/rcslog.vim similarity index 100% rename from share/vim/vim73/syntax/rcslog.vim rename to share/vim/vim74/syntax/rcslog.vim diff --git a/share/vim/vim74/syntax/readline.vim b/share/vim/vim74/syntax/readline.vim new file mode 100644 index 00000000..091722e5 --- /dev/null +++ b/share/vim/vim74/syntax/readline.vim @@ -0,0 +1,395 @@ +" Vim syntax file +" Language: readline(3) configuration file +" Maintainer: Nikolai Weibull +" Latest Revision: 2012-04-25 +" readline_has_bash - if defined add support for bash specific +" settings/functions + +if exists('b:current_syntax') + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +setlocal iskeyword+=- + +syn match readlineKey contained + \ '\S' + \ nextgroup=readlineKeyTerminator + +syn match readlineBegin display '^' + \ nextgroup=readlineComment, + \ readlineConditional, + \ readlineInclude, + \ readlineKeyName, + \ readlineKey, + \ readlineKeySeq, + \ readlineKeyword + \ skipwhite + +syn region readlineComment contained display oneline + \ start='#' + \ end='$' + \ contains=readlineTodo, + \ @Spell + +syn keyword readlineTodo contained + \ TODO + \ FIXME + \ XXX + \ NOTE + +syn match readlineConditional contained + \ '$if\>' + \ nextgroup=readlineTest, + \ readlineTestApp + \ skipwhite + +syn keyword readlineTest contained + \ mode + \ nextgroup=readlineTestModeEq + +syn match readlineTestModeEq contained + \ '=' + \ nextgroup=readlineEditingMode + +syn keyword readlineTest contained + \ term + \ nextgroup=readlineTestTermEq + +syn match readlineTestTermEq contained + \ '=' + \ nextgroup=readlineTestTerm + +syn match readlineTestTerm contained + \ '\S\+' + +syn match readlineTestApp contained + \ '\S\+' + +syn match readlineConditional contained display + \ '$\%(else\|endif\)\>' + +syn match readlineInclude contained display + \ '$include\>' + \ nextgroup=readlinePath + +syn match readlinePath contained display + \ '.\+' + +syn case ignore +syn match readlineKeyName contained display + \ nextgroup=readlineKeySeparator, + \ readlineKeyTerminator + \ '\%(Control\|Del\|Esc\|Escape\|LFD\|Meta\|Newline\|Ret\|Return\|Rubout\|Space\|Spc\|Tab\)' +syn case match + +syn match readlineKeySeparator contained + \ '-' + \ nextgroup=readlineKeyName, + \ readlineKey + +syn match readlineKeyTerminator contained + \ ':' + \ nextgroup=readlineFunction + \ skipwhite + +syn region readlineKeySeq contained display oneline + \ start=+"+ + \ skip=+\\\\\|\\"+ + \ end=+"+ + \ contains=readlineKeyEscape + \ nextgroup=readlineKeyTerminator + +syn match readlineKeyEscape contained display + \ +\\\([CM]-\|[e\\"'abdfnrtv]\|\o\{3}\|x\x\{2}\)+ + +syn keyword readlineKeyword contained + \ set + \ nextgroup=readlineVariable + \ skipwhite + +syn keyword readlineVariable contained + \ nextgroup=readlineBellStyle + \ skipwhite + \ bell-style + +syn keyword readlineVariable contained + \ nextgroup=readlineBoolean + \ skipwhite + \ bind-tty-special-chars + \ completion-ignore-case + \ completion-map-case + \ convert-meta + \ disable-completion + \ echo-control-characters + \ enable-keypad + \ enable-meta-key + \ expand-tilde + \ history-preserve-point + \ horizontal-scroll-mode + \ input-meta + \ meta-flag + \ mark-directories + \ mark-modified-lines + \ mark-symlinked-directories + \ match-hidden-files + \ menu-complete-display-prefix + \ output-meta + \ page-completions + \ print-completions-horizontally + \ revert-all-at-newline + \ show-all-if-ambiguous + \ show-all-if-unmodified + \ skip-completed-text + \ visible-stats + +syn keyword readlineVariable contained + \ nextgroup=readlineString + \ skipwhite + \ comment-begin + \ isearch-terminators + +syn keyword readlineVariable contained + \ nextgroup=readlineNumber + \ skipwhite + \ completion-display-width + \ completion-prefix-display-length + \ completion-query-items + \ history-size + +syn keyword readlineVariable contained + \ nextgroup=readlineEditingMode + \ skipwhite + \ editing-mode + +syn keyword readlineVariable contained + \ nextgroup=readlineKeymap + \ skipwhite + \ keymap + +syn keyword readlineBellStyle contained + \ audible + \ visible + \ none + +syn case ignore +syn keyword readlineBoolean contained + \ on + \ off +syn case match + +syn region readlineString contained display oneline + \ matchgroup=readlineStringDelimiter + \ start=+"+ + \ skip=+\\\\\|\\"+ + \ end=+"+ + +syn match readlineNumber contained display + \ '[+-]\d\+\>' + +syn keyword readlineEditingMode contained + \ emacs + \ vi + +syn match readlineKeymap contained display + \ 'emacs\%(-\%(standard\|meta\|ctlx\)\)\=\|vi\%(-\%(move\|command\|insert\)\)\=' + +syn keyword readlineFunction contained + \ beginning-of-line + \ end-of-line + \ forward-char + \ backward-char + \ forward-word + \ backward-word + \ clear-screen + \ redraw-current-line + \ + \ accept-line + \ previous-history + \ next-history + \ beginning-of-history + \ end-of-history + \ reverse-search-history + \ forward-search-history + \ non-incremental-reverse-search-history + \ non-incremental-forward-search-history + \ history-search-forward + \ history-search-backward + \ yank-nth-arg + \ yank-last-arg + \ + \ delete-char + \ backward-delete-char + \ forward-backward-delete-char + \ quoted-insert + \ tab-insert + \ self-insert + \ transpose-chars + \ transpose-words + \ upcase-word + \ downcase-word + \ capitalize-word + \ overwrite-mode + \ + \ kill-line + \ backward-kill-line + \ unix-line-discard + \ kill-whole-line + \ kill-word + \ backward-kill-word + \ unix-word-rubout + \ unix-filename-rubout + \ delete-horizontal-space + \ kill-region + \ copy-region-as-kill + \ copy-backward-word + \ copy-forward-word + \ yank + \ yank-pop + \ + \ digit-argument + \ universal-argument + \ + \ complete + \ possible-completions + \ insert-completions + \ menu-complete + \ menu-complete-backward + \ delete-char-or-list + \ + \ start-kbd-macro + \ end-kbd-macro + \ call-last-kbd-macro + \ + \ re-read-init-file + \ abort + \ do-uppercase-version + \ prefix-meta + \ undo + \ revert-line + \ tilde-expand + \ set-mark + \ exchange-point-and-mark + \ character-search + \ character-search-backward + \ skip-csi-sequence + \ insert-comment + \ dump-functions + \ dump-variables + \ dump-macros + \ emacs-editing-mode + \ vi-editing-mode + \ + \ vi-eof-maybe + \ vi-movement-mode + \ vi-undo + \ vi-match + \ vi-tilde-expand + \ vi-complete + \ vi-char-search + \ vi-redo + \ vi-search + \ vi-arg-digit + \ vi-append-eol + \ vi-prev-word + \ vi-change-to + \ vi-delete-to + \ vi-end-word + \ vi-char-search + \ vi-fetch-history + \ vi-insert-beg + \ vi-search-again + \ vi-put + \ vi-replace + \ vi-subst + \ vi-char-search + \ vi-next-word + \ vi-yank-to + \ vi-first-print + \ vi-yank-arg + \ vi-goto-mark + \ vi-append-mode + \ vi-prev-word + \ vi-change-to + \ vi-delete-to + \ vi-end-word + \ vi-char-search + \ vi-insert-mode + \ vi-set-mark + \ vi-search-again + \ vi-put + \ vi-change-char + \ vi-subst + \ vi-char-search + \ vi-undo + \ vi-next-word + \ vi-delete + \ vi-yank-to + \ vi-column + \ vi-change-case + +if exists("readline_has_bash") + syn keyword readlineFunction contained + \ shell-expand-line + \ history-expand-line + \ magic-space + \ alias-expand-line + \ history-and-alias-expand-line + \ insert-last-argument + \ operate-and-get-next + \ forward-backward-delete-char + \ delete-char-or-list + \ complete-filename + \ possible-filename-completions + \ complete-username + \ possible-username-completions + \ complete-variable + \ possible-variable-completions + \ complete-hostname + \ possible-hostname-completions + \ complete-command + \ possible-command-completions + \ dynamic-complete-history + \ complete-into-braces + \ glob-expand-word + \ glob-list-expansions + \ display-shell-version + \ glob-complete-word + \ edit-and-execute-command +endif + +hi def link readlineKey readlineKeySeq +hi def link readlineComment Comment +hi def link readlineTodo Todo +hi def link readlineConditional Conditional +hi def link readlineTest Type +hi def link readlineDelimiter Delimiter +hi def link readlineTestModeEq readlineEq +hi def link readlineTestTermEq readlineEq +hi def link readlineTestTerm readlineString +hi def link readlineTestAppEq readlineEq +hi def link readlineTestApp readlineString +hi def link readlineInclude Include +hi def link readlinePath String +hi def link readlineKeyName SpecialChar +hi def link readlineKeySeparator readlineKeySeq +hi def link readlineKeyTerminator readlineDelimiter +hi def link readlineKeySeq String +hi def link readlineKeyEscape SpecialChar +hi def link readlineKeyword Keyword +hi def link readlineVariable Identifier +hi def link readlineBellStyle Constant +hi def link readlineBoolean Boolean +hi def link readlineString String +hi def link readlineStringDelimiter readlineString +hi def link readlineNumber Number +hi def link readlineEditingMode Constant +hi def link readlineKeymap Constant +hi def link readlineFunction Function + +let b:current_syntax = 'readline' + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/rebol.vim b/share/vim/vim74/syntax/rebol.vim similarity index 100% rename from share/vim/vim73/syntax/rebol.vim rename to share/vim/vim74/syntax/rebol.vim diff --git a/share/vim/vim74/syntax/redif.vim b/share/vim/vim74/syntax/redif.vim new file mode 100644 index 00000000..1b83c077 --- /dev/null +++ b/share/vim/vim74/syntax/redif.vim @@ -0,0 +1,972 @@ +" Vim syntax file +" Language: ReDIF +" Maintainer: Axel Castellane +" Last Change: 2013 April 17 +" Original Author: Axel Castellane +" Source: http://openlib.org/acmes/root/docu/redif_1.html +" File Extension: rdf +" Note: The ReDIF format is used by RePEc. + +" To be compatible with Vim 5.8 use: +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" ReDIF is case-insensitive +syntax case ignore + +" Structure: Some fields determine what fields can come next. For example: +" Template-Type +" *-Name +" File-URL +" *-Institution +" Those fields span a syntax region over several lines so that these regions +" can only contain their respective items. + +" Any line which is not a correct template or part of an argument is an error. +" This comes at the very beginning, so it has the lowest priority and will +" only match if nothing else did. +syntax match redifWrongLine /^.\+/ display + +highlight def link redifWrongLine redifError + +" Comments must start with # and it must be the first character of the line, +" otherwise I believe that they are considered as part of an argument. +syntax match redifComment /^#.*/ containedin=ALL display + +" Defines the 9 possible multi-lines regions of Template-Type and the fields +" they can contain. +syntax region redifRegionTemplatePaper start=/^Template-Type:\_s*ReDIF-Paper \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsPaper,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold +syntax region redifRegionTemplateArticle start=/^Template-Type:\_s*ReDIF-Article \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsArticle,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold +syntax region redifRegionTemplateChapter start=/^Template-Type:\_s*ReDIF-Chapter \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsChapter,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold +syntax region redifRegionTemplateBook start=/^Template-Type:\_s*ReDIF-Book \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsBook,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold +syntax region redifRegionTemplateSoftware start=/^Template-Type:\_s*ReDIF-Software \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsSoftware,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold +syntax region redifRegionTemplateArchive start=/^Template-Type:\_s*ReDIF-Archive \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsArchive,redifWrongLine fold +syntax region redifRegionTemplateSeries start=/^Template-Type:\_s*ReDIF-Series \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsSeries,redifWrongLine,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold +syntax region redifRegionTemplateInstitution start=/^Template-Type:\_s*ReDIF-Institution \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsInstitution,redifWrongLine,redifRegionClusterPrimary,redifRegionClusterSecondary,redifRegionClusterTertiary,redifRegionClusterQuaternary fold +syntax region redifRegionTemplatePerson start=/^Template-Type:\_s*ReDIF-Person \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsPerson,redifWrongLine,redifRegionClusterWorkplace fold + +" All fields are foldable (These come before clusters, so they have lower +" priority). So they are contained in a foldable syntax region. +syntax region redifContainerFieldsPaper start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldRevisionDate,redifFieldPublicationStatus,redifFieldNote,redifFieldLength,redifFieldSeries,redifFieldAvailability,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldTemplateType,redifWrongLine contained transparent fold +syntax region redifContainerFieldsArticle start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationStatus,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldJournal,redifFieldVolume,redifFieldYear,redifFieldIssue,redifFieldMonth,redifFieldPages,redifFieldNumber,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold +syntax region redifContainerFieldsChapter start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfWork,redifFieldTitle,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldBookTitle,redifFieldYear,redifFieldMonth,redifFieldPages,redifFieldChapter,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldInBook,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold +syntax region redifContainerFieldsBook start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldContactEmail,redifFieldYear,redifFieldMonth,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldHasChapter,redifFieldPrice,redifFieldOrderURL,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationDate,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold +syntax region redifContainerFieldsSoftware start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfWork,redifFieldTitle,redifFieldProgrammingLanguage,redifFieldAbstract,redifFieldNumber,redifFieldVersion,redifFieldClassificationJEL,redifFieldKeywords,redifFieldSize,redifFieldSeries,redifFieldCreationDate,redifFieldRevisionDate,redifFieldNote,redifFieldRequires,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold +syntax region redifContainerFieldsArchive start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfArchive,redifFieldURL,redifFieldMaintainerEmail,redifFieldName,redifFieldMaintainerName,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldClassificationJEL,redifFieldHomepage,redifFieldDescription,redifFieldNotification,redifFieldRestriction,redifFieldTemplateType,redifWrongLine contained transparent fold +syntax region redifContainerFieldsSeries start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldName,redifFieldHandleOfSeries,redifFieldMaintainerEmail,redifFieldType,redifFieldOrderEmail,redifFieldOrderHomepage,redifFieldOrderPostal,redifFieldPrice,redifFieldRestriction,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldMaintainerName,redifFieldDescription,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNotification,redifFieldISSN,redifFieldFollowup,redifFieldPredecessor,redifFieldTemplateType,redifWrongLine contained transparent fold +syntax region redifContainerFieldsInstitution start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfInstitution,redifFieldPrimaryDefunct,redifFieldSecondaryDefunct,redifFieldTertiaryDefunct,redifFieldTemplateType,redifWrongLine contained transparent fold +syntax region redifContainerFieldsPerson start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfPerson,redifFieldNameFull,redifFieldNameFirst,redifFieldNameLast,redifFieldNamePrefix,redifFieldNameMiddle,redifFieldNameSuffix,redifFieldNameASCII,redifFieldEmail,redifFieldHomepage,redifFieldFax,redifFieldPostal,redifFieldPhone,redifFieldWorkplaceOrganization,redifFieldAuthorPaper,redifFieldAuthorArticle,redifFieldAuthorSoftware,redifFieldAuthorBook,redifFieldAuthorChapter,redifFieldEditorBook,redifFieldEditorSeries,redifFieldClassificationJEL,redifFieldShortId,redifFieldLastLoginDate,redifFieldRegisteredDate,redifWrongLine contained transparent fold + +" Defines the 10 possible clusters and what they can contain +" A field not in the cluster ends the cluster. +syntax region redifRegionClusterWorkplace start=/^Workplace-Name:/ skip=/^Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsWorkplace fold +syntax region redifRegionClusterPrimary start=/^Primary-Name:/ skip=/^Primary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsPrimary fold +syntax region redifRegionClusterSecondary start=/^Secondary-Name:/ skip=/^Secondary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsSecondary fold +syntax region redifRegionClusterTertiary start=/^Tertiary-Name:/ skip=/^Tertiary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsTertiary fold +syntax region redifRegionClusterQuaternary start=/^Quaternary-Name:/ skip=/^Quaternary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsQuaternary fold +syntax region redifRegionClusterProvider start=/^Provider-Name:/ skip=/^Provider-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsProvider fold +syntax region redifRegionClusterPublisher start=/^Publisher-Name:/ skip=/^Publisher-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsPublisher fold +syntax region redifRegionClusterAuthor start=/^Author-Name:/ skip=/^Author-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifRegionClusterAuthorWorkplace,redifContainerFieldsAuthor fold +syntax region redifRegionClusterEditor start=/^Editor-Name:/ skip=/^Editor-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifRegionClusterEditorWorkplace,redifContainerFieldsEditor fold +syntax region redifRegionClusterFile start=/^File-URL:/ skip=/^File-\%(Format\|Function\|Size\|Restriction\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsFile fold + +" The foldable containers of the clusters. +syntax region redifContainerFieldsWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldWorkplaceName,redifFieldWorkplaceHomepage,redifFieldWorkplaceNameEnglish,redifFieldWorkplacePostal,redifFieldWorkplaceLocation,redifFieldWorkplaceEmail,redifFieldWorkplacePhone,redifFieldWorkplaceFax,redifFieldWorkplaceInstitution,redifWrongLine contained transparent fold +syntax region redifContainerFieldsPrimary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldPrimaryName,redifFieldPrimaryHomepage,redifFieldPrimaryNameEnglish,redifFieldPrimaryPostal,redifFieldPrimaryLocation,redifFieldPrimaryEmail,redifFieldPrimaryPhone,redifFieldPrimaryFax,redifFieldPrimaryInstitution,redifWrongLine contained transparent fold +syntax region redifContainerFieldsSecondary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldSecondaryName,redifFieldSecondaryHomepage,redifFieldSecondaryNameEnglish,redifFieldSecondaryPostal,redifFieldSecondaryLocation,redifFieldSecondaryEmail,redifFieldSecondaryPhone,redifFieldSecondaryFax,redifFieldSecondaryInstitution,redifWrongLine contained transparent fold +syntax region redifContainerFieldsTertiary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTertiaryName,redifFieldTertiaryHomepage,redifFieldTertiaryNameEnglish,redifFieldTertiaryPostal,redifFieldTertiaryLocation,redifFieldTertiaryEmail,redifFieldTertiaryPhone,redifFieldTertiaryFax,redifFieldTertiaryInstitution,redifWrongLine contained transparent fold +syntax region redifContainerFieldsQuaternary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldQuaternaryName,redifFieldQuaternaryHomepage,redifFieldQuaternaryNameEnglish,redifFieldQuaternaryPostal,redifFieldQuaternaryLocation,redifFieldQuaternaryEmail,redifFieldQuaternaryPhone,redifFieldQuaternaryFax,redifFieldQuaternaryInstitution,redifWrongLine contained transparent fold +syntax region redifContainerFieldsProvider start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldProviderName,redifFieldProviderHomepage,redifFieldProviderNameEnglish,redifFieldProviderPostal,redifFieldProviderLocation,redifFieldProviderEmail,redifFieldProviderPhone,redifFieldProviderFax,redifFieldProviderInstitution,redifWrongLine contained transparent fold +syntax region redifContainerFieldsPublisher start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldPublisherName,redifFieldPublisherHomepage,redifFieldPublisherNameEnglish,redifFieldPublisherPostal,redifFieldPublisherLocation,redifFieldPublisherEmail,redifFieldPublisherPhone,redifFieldPublisherFax,redifFieldPublisherInstitution,redifWrongLine contained transparent fold +syntax region redifContainerFieldsAuthor start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldAuthorName,redifFieldAuthorNameFirst,redifFieldAuthorNameLast,redifFieldAuthorHomepage,redifFieldAuthorEmail,redifFieldAuthorFax,redifFieldAuthorPostal,redifFieldAuthorPhone,redifFieldAuthorPerson,redifWrongLine contained transparent fold +syntax region redifContainerFieldsEditor start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldEditorName,redifFieldEditorNameFirst,redifFieldEditorNameLast,redifFieldEditorHomepage,redifFieldEditorEmail,redifFieldEditorFax,redifFieldEditorPostal,redifFieldEditorPhone,redifFieldEditorPerson,redifWrongLine contained transparent fold +syntax region redifContainerFieldsFile start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldFileURL,redifFieldFileFormat,redifFieldFileFunction,redifFieldFileSize,redifFieldFileRestriction,redifWrongLine contained transparent fold + +" The two clusters in cluster (must be presented after to have priority over +" fields containers) +syntax region redifRegionClusterAuthorWorkplace start=/^Author-Workplace-Name:/ skip=/^Author-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsAuthorWorkplace fold +syntax region redifRegionClusterEditorWorkplace start=/^Editor-Workplace-Name:/ skip=/^Editor-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsEditorWorkplace fold + +" Their foldable fields containers +syntax region redifContainerFieldsAuthorWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldAuthorWorkplaceName,redifFieldAuthorWorkplaceHomepage,redifFieldAuthorWorkplaceNameEnglish,redifFieldAuthorWorkplacePostal,redifFieldAuthorWorkplaceLocation,redifFieldAuthorWorkplaceEmail,redifFieldAuthorWorkplacePhone,redifFieldAuthorWorkplaceFax,redifFieldAuthorWorkplaceInstitution,redifWrongLine contained transparent fold +syntax region redifContainerFieldsEditorWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldEditorWorkplaceName,redifFieldEditorWorkplaceHomepage,redifFieldEditorWorkplaceNameEnglish,redifFieldEditorWorkplacePostal,redifFieldEditorWorkplaceLocation,redifFieldEditorWorkplaceEmail,redifFieldEditorWorkplacePhone,redifFieldEditorWorkplaceFax,redifFieldEditorWorkplaceInstitution,redifWrongLine contained transparent fold + +" All the possible fields +" Note: The "Handle" field is handled a little bit differently, because it +" does not have the same meaning depending on the Template-Type. See: +" /redifFieldHandleOf.... +syntax match redifFieldAbstract /^Abstract:/ skipwhite skipempty nextgroup=redifArgumentAbstract contained +syntax match redifFieldArticleHandle /^Article-Handle:/ skipwhite skipempty nextgroup=redifArgumentArticleHandle contained +syntax match redifFieldAuthorArticle /^Author-Article:/ skipwhite skipempty nextgroup=redifArgumentAuthorArticle contained +syntax match redifFieldAuthorBook /^Author-Book:/ skipwhite skipempty nextgroup=redifArgumentAuthorBook contained +syntax match redifFieldAuthorChapter /^Author-Chapter:/ skipwhite skipempty nextgroup=redifArgumentAuthorChapter contained +syntax match redifFieldAuthorEmail /^Author-Email:/ skipwhite skipempty nextgroup=redifArgumentAuthorEmail contained +syntax match redifFieldAuthorFax /^Author-Fax:/ skipwhite skipempty nextgroup=redifArgumentAuthorFax contained +syntax match redifFieldAuthorHomepage /^Author-Homepage:/ skipwhite skipempty nextgroup=redifArgumentAuthorHomepage contained +syntax match redifFieldAuthorName /^Author-Name:/ skipwhite skipempty nextgroup=redifArgumentAuthorName contained +syntax match redifFieldAuthorNameFirst /^Author-Name-First:/ skipwhite skipempty nextgroup=redifArgumentAuthorNameFirst contained +syntax match redifFieldAuthorNameLast /^Author-Name-Last:/ skipwhite skipempty nextgroup=redifArgumentAuthorNameLast contained +syntax match redifFieldAuthorPaper /^Author-Paper:/ skipwhite skipempty nextgroup=redifArgumentAuthorPaper contained +syntax match redifFieldAuthorPerson /^Author-Person:/ skipwhite skipempty nextgroup=redifArgumentAuthorPerson contained +syntax match redifFieldAuthorPhone /^Author-Phone:/ skipwhite skipempty nextgroup=redifArgumentAuthorPhone contained +syntax match redifFieldAuthorPostal /^Author-Postal:/ skipwhite skipempty nextgroup=redifArgumentAuthorPostal contained +syntax match redifFieldAuthorSoftware /^Author-Software:/ skipwhite skipempty nextgroup=redifArgumentAuthorSoftware contained +syntax match redifFieldAuthorWorkplaceEmail /^Author-Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceEmail contained +syntax match redifFieldAuthorWorkplaceFax /^Author-Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceFax contained +syntax match redifFieldAuthorWorkplaceHomepage /^Author-Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceHomepage contained +syntax match redifFieldAuthorWorkplaceInstitution /^Author-Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceInstitution contained +syntax match redifFieldAuthorWorkplaceLocation /^Author-Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceLocation contained +syntax match redifFieldAuthorWorkplaceName /^Author-Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceName contained +syntax match redifFieldAuthorWorkplaceNameEnglish /^Author-Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceNameEnglish contained +syntax match redifFieldAuthorWorkplacePhone /^Author-Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplacePhone contained +syntax match redifFieldAuthorWorkplacePostal /^Author-Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplacePostal contained +syntax match redifFieldAvailability /^Availability:/ skipwhite skipempty nextgroup=redifArgumentAvailability contained +syntax match redifFieldBookHandle /^Book-Handle:/ skipwhite skipempty nextgroup=redifArgumentBookHandle contained +syntax match redifFieldBookTitle /^Book-Title:/ skipwhite skipempty nextgroup=redifArgumentBookTitle contained +syntax match redifFieldChapterHandle /^Chapter-Handle:/ skipwhite skipempty nextgroup=redifArgumentChapterHandle contained +syntax match redifFieldChapter /^Chapter:/ skipwhite skipempty nextgroup=redifArgumentChapter contained +syntax match redifFieldClassificationJEL /^Classification-JEL:/ skipwhite skipempty nextgroup=redifArgumentClassificationJEL contained +syntax match redifFieldContactEmail /^Contact-Email:/ skipwhite skipempty nextgroup=redifArgumentContactEmail contained +syntax match redifFieldCreationDate /^Creation-Date:/ skipwhite skipempty nextgroup=redifArgumentCreationDate contained +syntax match redifFieldDescription /^Description:/ skipwhite skipempty nextgroup=redifArgumentDescription contained +syntax match redifFieldEdition /^Edition:/ skipwhite skipempty nextgroup=redifArgumentEdition contained +syntax match redifFieldEditorBook /^Editor-Book:/ skipwhite skipempty nextgroup=redifArgumentEditorBook contained +syntax match redifFieldEditorEmail /^Editor-Email:/ skipwhite skipempty nextgroup=redifArgumentEditorEmail contained +syntax match redifFieldEditorFax /^Editor-Fax:/ skipwhite skipempty nextgroup=redifArgumentEditorFax contained +syntax match redifFieldEditorHomepage /^Editor-Homepage:/ skipwhite skipempty nextgroup=redifArgumentEditorHomepage contained +syntax match redifFieldEditorName /^Editor-Name:/ skipwhite skipempty nextgroup=redifArgumentEditorName contained +syntax match redifFieldEditorNameFirst /^Editor-Name-First:/ skipwhite skipempty nextgroup=redifArgumentEditorNameFirst contained +syntax match redifFieldEditorNameLast /^Editor-Name-Last:/ skipwhite skipempty nextgroup=redifArgumentEditorNameLast contained +syntax match redifFieldEditorPerson /^Editor-Person:/ skipwhite skipempty nextgroup=redifArgumentEditorPerson contained +syntax match redifFieldEditorPhone /^Editor-Phone:/ skipwhite skipempty nextgroup=redifArgumentEditorPhone contained +syntax match redifFieldEditorPostal /^Editor-Postal:/ skipwhite skipempty nextgroup=redifArgumentEditorPostal contained +syntax match redifFieldEditorSeries /^Editor-Series:/ skipwhite skipempty nextgroup=redifArgumentEditorSeries contained +syntax match redifFieldEditorWorkplaceEmail /^Editor-Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceEmail contained +syntax match redifFieldEditorWorkplaceFax /^Editor-Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceFax contained +syntax match redifFieldEditorWorkplaceHomepage /^Editor-Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceHomepage contained +syntax match redifFieldEditorWorkplaceInstitution /^Editor-Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceInstitution contained +syntax match redifFieldEditorWorkplaceLocation /^Editor-Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceLocation contained +syntax match redifFieldEditorWorkplaceName /^Editor-Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceName contained +syntax match redifFieldEditorWorkplaceNameEnglish /^Editor-Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceNameEnglish contained +syntax match redifFieldEditorWorkplacePhone /^Editor-Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplacePhone contained +syntax match redifFieldEditorWorkplacePostal /^Editor-Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplacePostal contained +syntax match redifFieldEmail /^Email:/ skipwhite skipempty nextgroup=redifArgumentEmail contained +syntax match redifFieldFax /^Fax:/ skipwhite skipempty nextgroup=redifArgumentFax contained +syntax match redifFieldFileFormat /^File-Format:/ skipwhite skipempty nextgroup=redifArgumentFileFormat contained +syntax match redifFieldFileFunction /^File-Function:/ skipwhite skipempty nextgroup=redifArgumentFileFunction contained +syntax match redifFieldFileRestriction /^File-Restriction:/ skipwhite skipempty nextgroup=redifArgumentFileRestriction contained +syntax match redifFieldFileSize /^File-Size:/ skipwhite skipempty nextgroup=redifArgumentFileSize contained +syntax match redifFieldFileURL /^File-URL:/ skipwhite skipempty nextgroup=redifArgumentFileURL contained +syntax match redifFieldFollowup /^Followup:/ skipwhite skipempty nextgroup=redifArgumentFollowup contained +syntax match redifFieldHandleOfArchive /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfArchive contained +syntax match redifFieldHandleOfInstitution /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfInstitution contained +syntax match redifFieldHandleOfPerson /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfPerson contained +syntax match redifFieldHandleOfSeries /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfSeries contained +syntax match redifFieldHandleOfWork /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfWork contained +syntax match redifFieldHasChapter /^HasChapter:/ skipwhite skipempty nextgroup=redifArgumentHasChapter contained +syntax match redifFieldHomepage /^Homepage:/ skipwhite skipempty nextgroup=redifArgumentHomepage contained +syntax match redifFieldInBook /^In-Book:/ skipwhite skipempty nextgroup=redifArgumentInBook contained +syntax match redifFieldISBN /^ISBN:/ skipwhite skipempty nextgroup=redifArgumentISBN contained +syntax match redifFieldISSN /^ISSN:/ skipwhite skipempty nextgroup=redifArgumentISSN contained +syntax match redifFieldIssue /^Issue:/ skipwhite skipempty nextgroup=redifArgumentIssue contained +syntax match redifFieldJournal /^Journal:/ skipwhite skipempty nextgroup=redifArgumentJournal contained +syntax match redifFieldKeywords /^Keywords:/ skipwhite skipempty nextgroup=redifArgumentKeywords contained +syntax match redifFieldKeywords /^Keywords:/ skipwhite skipempty nextgroup=redifArgumentKeywords contained +syntax match redifFieldLanguage /^Language:/ skipwhite skipempty nextgroup=redifArgumentLanguage contained +syntax match redifFieldLastLoginDate /^Last-Login-Date:/ skipwhite skipempty nextgroup=redifArgumentLastLoginDate contained +syntax match redifFieldLength /^Length:/ skipwhite skipempty nextgroup=redifArgumentLength contained +syntax match redifFieldMaintainerEmail /^Maintainer-Email:/ skipwhite skipempty nextgroup=redifArgumentMaintainerEmail contained +syntax match redifFieldMaintainerFax /^Maintainer-Fax:/ skipwhite skipempty nextgroup=redifArgumentMaintainerFax contained +syntax match redifFieldMaintainerName /^Maintainer-Name:/ skipwhite skipempty nextgroup=redifArgumentMaintainerName contained +syntax match redifFieldMaintainerPhone /^Maintainer-Phone:/ skipwhite skipempty nextgroup=redifArgumentMaintainerPhone contained +syntax match redifFieldMonth /^Month:/ skipwhite skipempty nextgroup=redifArgumentMonth contained +syntax match redifFieldNameASCII /^Name-ASCII:/ skipwhite skipempty nextgroup=redifArgumentNameASCII contained +syntax match redifFieldNameFirst /^Name-First:/ skipwhite skipempty nextgroup=redifArgumentNameFirst contained +syntax match redifFieldNameFull /^Name-Full:/ skipwhite skipempty nextgroup=redifArgumentNameFull contained +syntax match redifFieldNameLast /^Name-Last:/ skipwhite skipempty nextgroup=redifArgumentNameLast contained +syntax match redifFieldNameMiddle /^Name-Middle:/ skipwhite skipempty nextgroup=redifArgumentNameMiddle contained +syntax match redifFieldNamePrefix /^Name-Prefix:/ skipwhite skipempty nextgroup=redifArgumentNamePrefix contained +syntax match redifFieldNameSuffix /^Name-Suffix:/ skipwhite skipempty nextgroup=redifArgumentNameSuffix contained +syntax match redifFieldName /^Name:/ skipwhite skipempty nextgroup=redifArgumentName contained +syntax match redifFieldNote /^Note:/ skipwhite skipempty nextgroup=redifArgumentNote contained +syntax match redifFieldNotification /^Notification:/ skipwhite skipempty nextgroup=redifArgumentNotification contained +syntax match redifFieldNumber /^Number:/ skipwhite skipempty nextgroup=redifArgumentNumber contained +syntax match redifFieldOrderEmail /^Order-Email:/ skipwhite skipempty nextgroup=redifArgumentOrderEmail contained +syntax match redifFieldOrderHomepage /^Order-Homepage:/ skipwhite skipempty nextgroup=redifArgumentOrderHomepage contained +syntax match redifFieldOrderPostal /^Order-Postal:/ skipwhite skipempty nextgroup=redifArgumentOrderPostal contained +syntax match redifFieldOrderURL /^Order-URL:/ skipwhite skipempty nextgroup=redifArgumentOrderURL contained +syntax match redifFieldPages /^Pages:/ skipwhite skipempty nextgroup=redifArgumentPages contained +syntax match redifFieldPaperHandle /^Paper-Handle:/ skipwhite skipempty nextgroup=redifArgumentPaperHandle contained +syntax match redifFieldPhone /^Phone:/ skipwhite skipempty nextgroup=redifArgumentPhone contained +syntax match redifFieldPostal /^Postal:/ skipwhite skipempty nextgroup=redifArgumentPostal contained +syntax match redifFieldPredecessor /^Predecessor:/ skipwhite skipempty nextgroup=redifArgumentPredecessor contained +syntax match redifFieldPrice /^Price:/ skipwhite skipempty nextgroup=redifArgumentPrice contained +syntax match redifFieldPrimaryDefunct /^Primary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentPrimaryDefunct contained +syntax match redifFieldPrimaryEmail /^Primary-Email:/ skipwhite skipempty nextgroup=redifArgumentPrimaryEmail contained +syntax match redifFieldPrimaryFax /^Primary-Fax:/ skipwhite skipempty nextgroup=redifArgumentPrimaryFax contained +syntax match redifFieldPrimaryHomepage /^Primary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentPrimaryHomepage contained +syntax match redifFieldPrimaryInstitution /^Primary-Institution:/ skipwhite skipempty nextgroup=redifArgumentPrimaryInstitution contained +syntax match redifFieldPrimaryLocation /^Primary-Location:/ skipwhite skipempty nextgroup=redifArgumentPrimaryLocation contained +syntax match redifFieldPrimaryName /^Primary-Name:/ skipwhite skipempty nextgroup=redifArgumentPrimaryName contained +syntax match redifFieldPrimaryNameEnglish /^Primary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentPrimaryNameEnglish contained +syntax match redifFieldPrimaryPhone /^Primary-Phone:/ skipwhite skipempty nextgroup=redifArgumentPrimaryPhone contained +syntax match redifFieldPrimaryPostal /^Primary-Postal:/ skipwhite skipempty nextgroup=redifArgumentPrimaryPostal contained +syntax match redifFieldProgrammingLanguage /^Programming-Language:/ skipwhite skipempty nextgroup=redifArgumentProgrammingLanguage contained +syntax match redifFieldProviderEmail /^Provider-Email:/ skipwhite skipempty nextgroup=redifArgumentProviderEmail contained +syntax match redifFieldProviderFax /^Provider-Fax:/ skipwhite skipempty nextgroup=redifArgumentProviderFax contained +syntax match redifFieldProviderHomepage /^Provider-Homepage:/ skipwhite skipempty nextgroup=redifArgumentProviderHomepage contained +syntax match redifFieldProviderInstitution /^Provider-Institution:/ skipwhite skipempty nextgroup=redifArgumentProviderInstitution contained +syntax match redifFieldProviderLocation /^Provider-Location:/ skipwhite skipempty nextgroup=redifArgumentProviderLocation contained +syntax match redifFieldProviderName /^Provider-Name:/ skipwhite skipempty nextgroup=redifArgumentProviderName contained +syntax match redifFieldProviderNameEnglish /^Provider-Name-English:/ skipwhite skipempty nextgroup=redifArgumentProviderNameEnglish contained +syntax match redifFieldProviderPhone /^Provider-Phone:/ skipwhite skipempty nextgroup=redifArgumentProviderPhone contained +syntax match redifFieldProviderPostal /^Provider-Postal:/ skipwhite skipempty nextgroup=redifArgumentProviderPostal contained +syntax match redifFieldPublicationDate /^Publication-Date:/ skipwhite skipempty nextgroup=redifArgumentPublicationDate contained +syntax match redifFieldPublicationStatus /^Publication-Status:/ skipwhite skipempty nextgroup=redifArgumentPublicationStatus contained +syntax match redifFieldPublicationType /^Publication-Type:/ skipwhite skipempty nextgroup=redifArgumentPublicationType contained +syntax match redifFieldQuaternaryEmail /^Quaternary-Email:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryEmail contained +syntax match redifFieldQuaternaryFax /^Quaternary-Fax:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryFax contained +syntax match redifFieldQuaternaryHomepage /^Quaternary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryHomepage contained +syntax match redifFieldQuaternaryInstitution /^Quaternary-Institution:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryInstitution contained +syntax match redifFieldQuaternaryLocation /^Quaternary-Location:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryLocation contained +syntax match redifFieldQuaternaryName /^Quaternary-Name:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryName contained +syntax match redifFieldQuaternaryNameEnglish /^Quaternary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryNameEnglish contained +syntax match redifFieldQuaternaryPhone /^Quaternary-Phone:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryPhone contained +syntax match redifFieldQuaternaryPostal /^Quaternary-Postal:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryPostal contained +syntax match redifFieldRegisteredDate /^Registered-Date:/ skipwhite skipempty nextgroup=redifArgumentRegisteredDate contained +syntax match redifFieldRequires /^Requires:/ skipwhite skipempty nextgroup=redifArgumentRequires contained +syntax match redifFieldRestriction /^Restriction:/ skipwhite skipempty nextgroup=redifArgumentRestriction contained +syntax match redifFieldRevisionDate /^Revision-Date:/ skipwhite skipempty nextgroup=redifArgumentRevisionDate contained +syntax match redifFieldSecondaryDefunct /^Secondary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentSecondaryDefunct contained +syntax match redifFieldSecondaryEmail /^Secondary-Email:/ skipwhite skipempty nextgroup=redifArgumentSecondaryEmail contained +syntax match redifFieldSecondaryFax /^Secondary-Fax:/ skipwhite skipempty nextgroup=redifArgumentSecondaryFax contained +syntax match redifFieldSecondaryHomepage /^Secondary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentSecondaryHomepage contained +syntax match redifFieldSecondaryInstitution /^Secondary-Institution:/ skipwhite skipempty nextgroup=redifArgumentSecondaryInstitution contained +syntax match redifFieldSecondaryLocation /^Secondary-Location:/ skipwhite skipempty nextgroup=redifArgumentSecondaryLocation contained +syntax match redifFieldSecondaryName /^Secondary-Name:/ skipwhite skipempty nextgroup=redifArgumentSecondaryName contained +syntax match redifFieldSecondaryNameEnglish /^Secondary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentSecondaryNameEnglish contained +syntax match redifFieldSecondaryPhone /^Secondary-Phone:/ skipwhite skipempty nextgroup=redifArgumentSecondaryPhone contained +syntax match redifFieldSecondaryPostal /^Secondary-Postal:/ skipwhite skipempty nextgroup=redifArgumentSecondaryPostal contained +syntax match redifFieldSeries /^Series:/ skipwhite skipempty nextgroup=redifArgumentSeries contained +syntax match redifFieldShortId /^Short-Id:/ skipwhite skipempty nextgroup=redifArgumentShortId contained +syntax match redifFieldSize /^Size:/ skipwhite skipempty nextgroup=redifArgumentSize contained +syntax match redifFieldSoftwareHandle /^Software-Handle:/ skipwhite skipempty nextgroup=redifArgumentSoftwareHandle contained +syntax match redifFieldTemplateType /^Template-Type:/ skipwhite skipempty nextgroup=redifArgumentTemplateType contained +syntax match redifFieldTertiaryDefunct /^Tertiary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentTertiaryDefunct contained +syntax match redifFieldTertiaryEmail /^Tertiary-Email:/ skipwhite skipempty nextgroup=redifArgumentTertiaryEmail contained +syntax match redifFieldTertiaryFax /^Tertiary-Fax:/ skipwhite skipempty nextgroup=redifArgumentTertiaryFax contained +syntax match redifFieldTertiaryHomepage /^Tertiary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentTertiaryHomepage contained +syntax match redifFieldTertiaryInstitution /^Tertiary-Institution:/ skipwhite skipempty nextgroup=redifArgumentTertiaryInstitution contained +syntax match redifFieldTertiaryLocation /^Tertiary-Location:/ skipwhite skipempty nextgroup=redifArgumentTertiaryLocation contained +syntax match redifFieldTertiaryName /^Tertiary-Name:/ skipwhite skipempty nextgroup=redifArgumentTertiaryName contained +syntax match redifFieldTertiaryNameEnglish /^Tertiary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentTertiaryNameEnglish contained +syntax match redifFieldTertiaryPhone /^Tertiary-Phone:/ skipwhite skipempty nextgroup=redifArgumentTertiaryPhone contained +syntax match redifFieldTertiaryPostal /^Tertiary-Postal:/ skipwhite skipempty nextgroup=redifArgumentTertiaryPostal contained +syntax match redifFieldTitle /^Title:/ skipwhite skipempty nextgroup=redifArgumentTitle contained +syntax match redifFieldType /^Type:/ skipwhite skipempty nextgroup=redifArgumentType contained +syntax match redifFieldURL /^URL:/ skipwhite skipempty nextgroup=redifArgumentURL contained +syntax match redifFieldVersion /^Version:/ skipwhite skipempty nextgroup=redifArgumentVersion contained +syntax match redifFieldVolume /^Volume:/ skipwhite skipempty nextgroup=redifArgumentVolume contained +syntax match redifFieldWorkplaceEmail /^Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceEmail contained +syntax match redifFieldWorkplaceFax /^Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceFax contained +syntax match redifFieldWorkplaceHomepage /^Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceHomepage contained +syntax match redifFieldWorkplaceInstitution /^Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceInstitution contained +syntax match redifFieldWorkplaceLocation /^Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceLocation contained +syntax match redifFieldWorkplaceName /^Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceName contained +syntax match redifFieldWorkplaceNameEnglish /^Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceNameEnglish contained +syntax match redifFieldWorkplaceOrganization /^Workplace-Organization:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceOrganization contained +syntax match redifFieldWorkplacePhone /^Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentWorkplacePhone contained +syntax match redifFieldWorkplacePostal /^Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentWorkplacePostal contained +syntax match redifFieldYear /^Year:/ skipwhite skipempty nextgroup=redifArgumentYear contained + +highlight def link redifFieldAbstract redifField +highlight def link redifFieldArticleHandle redifField +highlight def link redifFieldAuthorArticle redifField +highlight def link redifFieldAuthorBook redifField +highlight def link redifFieldAuthorChapter redifField +highlight def link redifFieldAuthorEmail redifField +highlight def link redifFieldAuthorFax redifField +highlight def link redifFieldAuthorHomepage redifField +highlight def link redifFieldAuthorName redifField +highlight def link redifFieldAuthorNameFirst redifField +highlight def link redifFieldAuthorNameLast redifField +highlight def link redifFieldAuthorPaper redifField +highlight def link redifFieldAuthorPerson redifField +highlight def link redifFieldAuthorPhone redifField +highlight def link redifFieldAuthorPostal redifField +highlight def link redifFieldAuthorSoftware redifField +highlight def link redifFieldAuthorWorkplaceEmail redifField +highlight def link redifFieldAuthorWorkplaceFax redifField +highlight def link redifFieldAuthorWorkplaceHomepage redifField +highlight def link redifFieldAuthorWorkplaceInstitution redifField +highlight def link redifFieldAuthorWorkplaceLocation redifField +highlight def link redifFieldAuthorWorkplaceName redifField +highlight def link redifFieldAuthorWorkplaceNameEnglish redifField +highlight def link redifFieldAuthorWorkplacePhone redifField +highlight def link redifFieldAuthorWorkplacePostal redifField +highlight def link redifFieldAvailability redifField +highlight def link redifFieldBookHandle redifField +highlight def link redifFieldBookTitle redifField +highlight def link redifFieldChapterHandle redifField +highlight def link redifFieldChapter redifField +highlight def link redifFieldClassificationJEL redifField +highlight def link redifFieldContactEmail redifField +highlight def link redifFieldCreationDate redifField +highlight def link redifFieldDescription redifField +highlight def link redifFieldEdition redifField +highlight def link redifFieldEditorBook redifField +highlight def link redifFieldEditorEmail redifField +highlight def link redifFieldEditorFax redifField +highlight def link redifFieldEditorHomepage redifField +highlight def link redifFieldEditorName redifField +highlight def link redifFieldEditorNameFirst redifField +highlight def link redifFieldEditorNameLast redifField +highlight def link redifFieldEditorPerson redifField +highlight def link redifFieldEditorPhone redifField +highlight def link redifFieldEditorPostal redifField +highlight def link redifFieldEditorSeries redifField +highlight def link redifFieldEditorWorkplaceEmail redifField +highlight def link redifFieldEditorWorkplaceFax redifField +highlight def link redifFieldEditorWorkplaceHomepage redifField +highlight def link redifFieldEditorWorkplaceInstitution redifField +highlight def link redifFieldEditorWorkplaceLocation redifField +highlight def link redifFieldEditorWorkplaceName redifField +highlight def link redifFieldEditorWorkplaceNameEnglish redifField +highlight def link redifFieldEditorWorkplacePhone redifField +highlight def link redifFieldEditorWorkplacePostal redifField +highlight def link redifFieldEmail redifField +highlight def link redifFieldFax redifField +highlight def link redifFieldFileFormat redifField +highlight def link redifFieldFileFunction redifField +highlight def link redifFieldFileRestriction redifField +highlight def link redifFieldFileSize redifField +highlight def link redifFieldFileURL redifField +highlight def link redifFieldFollowup redifField +highlight def link redifFieldHandleOfArchive redifField +highlight def link redifFieldHandleOfInstitution redifField +highlight def link redifFieldHandleOfPerson redifField +highlight def link redifFieldHandleOfSeries redifField +highlight def link redifFieldHandleOfWork redifField +highlight def link redifFieldHasChapter redifField +highlight def link redifFieldHomepage redifField +highlight def link redifFieldInBook redifField +highlight def link redifFieldISBN redifField +highlight def link redifFieldISSN redifField +highlight def link redifFieldIssue redifField +highlight def link redifFieldJournal redifField +highlight def link redifFieldKeywords redifField +highlight def link redifFieldKeywords redifField +highlight def link redifFieldLanguage redifField +highlight def link redifFieldLastLoginDate redifField +highlight def link redifFieldLength redifField +highlight def link redifFieldMaintainerEmail redifField +highlight def link redifFieldMaintainerFax redifField +highlight def link redifFieldMaintainerName redifField +highlight def link redifFieldMaintainerPhone redifField +highlight def link redifFieldMonth redifField +highlight def link redifFieldNameASCII redifField +highlight def link redifFieldNameFirst redifField +highlight def link redifFieldNameFull redifField +highlight def link redifFieldNameLast redifField +highlight def link redifFieldNameMiddle redifField +highlight def link redifFieldNamePrefix redifField +highlight def link redifFieldNameSuffix redifField +highlight def link redifFieldName redifField +highlight def link redifFieldNote redifField +highlight def link redifFieldNotification redifField +highlight def link redifFieldNumber redifField +highlight def link redifFieldOrderEmail redifField +highlight def link redifFieldOrderHomepage redifField +highlight def link redifFieldOrderPostal redifField +highlight def link redifFieldOrderURL redifField +highlight def link redifFieldPages redifField +highlight def link redifFieldPaperHandle redifField +highlight def link redifFieldPhone redifField +highlight def link redifFieldPostal redifField +highlight def link redifFieldPredecessor redifField +highlight def link redifFieldPrice redifField +highlight def link redifFieldPrimaryDefunct redifField +highlight def link redifFieldPrimaryEmail redifField +highlight def link redifFieldPrimaryFax redifField +highlight def link redifFieldPrimaryHomepage redifField +highlight def link redifFieldPrimaryInstitution redifField +highlight def link redifFieldPrimaryLocation redifField +highlight def link redifFieldPrimaryName redifField +highlight def link redifFieldPrimaryNameEnglish redifField +highlight def link redifFieldPrimaryPhone redifField +highlight def link redifFieldPrimaryPostal redifField +highlight def link redifFieldProgrammingLanguage redifField +highlight def link redifFieldProviderEmail redifField +highlight def link redifFieldProviderFax redifField +highlight def link redifFieldProviderHomepage redifField +highlight def link redifFieldProviderInstitution redifField +highlight def link redifFieldProviderLocation redifField +highlight def link redifFieldProviderName redifField +highlight def link redifFieldProviderNameEnglish redifField +highlight def link redifFieldProviderPhone redifField +highlight def link redifFieldProviderPostal redifField +highlight def link redifFieldPublicationDate redifField +highlight def link redifFieldPublicationStatus redifField +highlight def link redifFieldPublicationType redifField +highlight def link redifFieldQuaternaryEmail redifField +highlight def link redifFieldQuaternaryFax redifField +highlight def link redifFieldQuaternaryHomepage redifField +highlight def link redifFieldQuaternaryInstitution redifField +highlight def link redifFieldQuaternaryLocation redifField +highlight def link redifFieldQuaternaryName redifField +highlight def link redifFieldQuaternaryNameEnglish redifField +highlight def link redifFieldQuaternaryPhone redifField +highlight def link redifFieldQuaternaryPostal redifField +highlight def link redifFieldRegisteredDate redifField +highlight def link redifFieldRequires redifField +highlight def link redifFieldRestriction redifField +highlight def link redifFieldRevisionDate redifField +highlight def link redifFieldSecondaryDefunct redifField +highlight def link redifFieldSecondaryEmail redifField +highlight def link redifFieldSecondaryFax redifField +highlight def link redifFieldSecondaryHomepage redifField +highlight def link redifFieldSecondaryInstitution redifField +highlight def link redifFieldSecondaryLocation redifField +highlight def link redifFieldSecondaryName redifField +highlight def link redifFieldSecondaryNameEnglish redifField +highlight def link redifFieldSecondaryPhone redifField +highlight def link redifFieldSecondaryPostal redifField +highlight def link redifFieldSeries redifField +highlight def link redifFieldShortId redifField +highlight def link redifFieldSize redifField +highlight def link redifFieldSoftwareHandle redifField +highlight def link redifFieldTemplateType redifField +highlight def link redifFieldTertiaryDefunct redifField +highlight def link redifFieldTertiaryEmail redifField +highlight def link redifFieldTertiaryFax redifField +highlight def link redifFieldTertiaryHomepage redifField +highlight def link redifFieldTertiaryInstitution redifField +highlight def link redifFieldTertiaryLocation redifField +highlight def link redifFieldTertiaryName redifField +highlight def link redifFieldTertiaryNameEnglish redifField +highlight def link redifFieldTertiaryPhone redifField +highlight def link redifFieldTertiaryPostal redifField +highlight def link redifFieldTitle redifField +highlight def link redifFieldTitle redifField +highlight def link redifFieldType redifField +highlight def link redifFieldURL redifField +highlight def link redifFieldVersion redifField +highlight def link redifFieldVolume redifField +highlight def link redifFieldWorkplaceEmail redifField +highlight def link redifFieldWorkplaceFax redifField +highlight def link redifFieldWorkplaceHomepage redifField +highlight def link redifFieldWorkplaceInstitution redifField +highlight def link redifFieldWorkplaceLocation redifField +highlight def link redifFieldWorkplaceName redifField +highlight def link redifFieldWorkplaceNameEnglish redifField +highlight def link redifFieldWorkplaceOrganization redifField +highlight def link redifFieldWorkplacePhone redifField +highlight def link redifFieldWorkplacePostal redifField +highlight def link redifFieldYear redifField + +" Deprecated +" same as Provider-* +" nextgroup=redifArgumentProvider* +syntax match redifFieldPublisherEmail /^Publisher-Email:/ skipwhite skipempty nextgroup=redifArgumentProviderEmail contained +syntax match redifFieldPublisherFax /^Publisher-Fax:/ skipwhite skipempty nextgroup=redifArgumentProviderFax contained +syntax match redifFieldPublisherHomepage /^Publisher-Homepage:/ skipwhite skipempty nextgroup=redifArgumentProviderHomepage contained +syntax match redifFieldPublisherInstitution /^Publisher-Institution:/ skipwhite skipempty nextgroup=redifArgumentProviderInstitution contained +syntax match redifFieldPublisherLocation /^Publisher-Location:/ skipwhite skipempty nextgroup=redifArgumentProviderLocation contained +syntax match redifFieldPublisherName /^Publisher-Name:/ skipwhite skipempty nextgroup=redifArgumentProviderName contained +syntax match redifFieldPublisherNameEnglish /^Publisher-Name-English:/ skipwhite skipempty nextgroup=redifArgumentProviderNameEnglish contained +syntax match redifFieldPublisherPhone /^Publisher-Phone:/ skipwhite skipempty nextgroup=redifArgumentProviderPhone contained +syntax match redifFieldPublisherPostal /^Publisher-Postal:/ skipwhite skipempty nextgroup=redifArgumentProviderPostal contained + +highlight def link redifFieldPublisherEmail redifFieldDeprecated +highlight def link redifFieldPublisherFax redifFieldDeprecated +highlight def link redifFieldPublisherHomepage redifFieldDeprecated +highlight def link redifFieldPublisherInstitution redifFieldDeprecated +highlight def link redifFieldPublisherLocation redifFieldDeprecated +highlight def link redifFieldPublisherName redifFieldDeprecated +highlight def link redifFieldPublisherNameEnglish redifFieldDeprecated +highlight def link redifFieldPublisherPhone redifFieldDeprecated +highlight def link redifFieldPublisherPostal redifFieldDeprecated + +" Standard arguments +" By default, they contain all the argument until another field is started: +" start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 +" For arguments that must not span more than one line, use a match: +" /\%(^\S\{-}:\)\@!\S.*/ +" AND ADD "display" +" This is faster. +" +" Those arguments are not highlighted so far. They are here for future +" extensions. +" TODO Find more RegEx for these arguments +" TODO Fax, Phone +" TODO URL, Homepage +" TODO Keywords +" TODO Classification-JEL +" TODO Short-Id, Author-Person, Editor-Person +" +" Arguments that may span several lines: +syntax region redifArgumentAuthorWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentFileFunction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentIssue start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentJournal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentOrderPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentPrice start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentPrimaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentPrimaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentProviderLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentProviderPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentQuaternaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentQuaternaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentRequires start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentSecondaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentSecondaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentSize start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentTertiaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentTertiaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentVersion start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained + +" Arguments that may not span several lines: +" If you are sure that these arguments cannot span several lines, change +" them to a match: +" /\%(^\S\{-}:\)\@!\S.*/ +" AND ADD "display" after "contained" +" You can use this command on each line that you want to change: +" :s+\Vregion \(\w\+\) start=/\\%(^\\S\\{-}:\\)\\@!\\S/ end=/^\\S\\{-}:/me=s-1 contained+match \1 /\\%(^\\S\\{-}:\\)\\@!\\S.*/ contained display +syntax region redifArgumentAuthorFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorPerson start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentAuthorWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorPerson start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentEditorWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentFileURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentMaintainerFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentMaintainerName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentMaintainerPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentNameFull start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentNameMiddle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentNamePrefix start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentNameSuffix start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentNumber start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentOrderHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentOrderURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentPrimaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentPrimaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentPrimaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentPrimaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentPrimaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentProviderFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentProviderHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentProviderName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentProviderNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentProviderPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentQuaternaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentQuaternaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentQuaternaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentQuaternaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentQuaternaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentSecondaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentSecondaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentSecondaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentSecondaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentSecondaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentSeries start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentShortId start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentTertiaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentTertiaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentTertiaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentTertiaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentTertiaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained +syntax region redifArgumentWorkplaceOrganization start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained + +" Special arguments +" Those arguments require special values +" TODO Improve some RegEx +" TODO Improve Emails +" TODO Improve ISBN +" TODO Improve ISSN +" TODO Improve spell check (add words from economics. +" expl=macroeconometrics, Schumpeterian, IS-LM, etc.) +" +" Template-Type +syntax match redifArgumentTemplateType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectTemplateType contained display +syntax match redifCorrectTemplateType /ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\)/ nextgroup=redifTemplateVersionNumberContainer contained display +syntax match redifTemplateVersionNumberContainer /.\+/ contains=redifTemplateVersionNumber contained display +syntax match redifTemplateVersionNumber / \d\+\.\d\+/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentTemplateType redifError +highlight def link redifCorrectTemplateType Constant +highlight def link redifTemplateVersionNumber Number +highlight def link redifTemplateVersionNumberContainer redifError + +" Handles: +" +" Handles of Works: +syntax match redifArgumentHandleOfWork /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentAuthorArticle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentAuthorBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentAuthorChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentAuthorPaper /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentAuthorSoftware /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentEditorBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentEditorSeries /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentInBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentHasChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentArticleHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentBookHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentChapterHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentPaperHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifArgumentSoftwareHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display +syntax match redifCorrectHandleOfWork /RePEc:\a\a\a:\%(_\@!\w\)\{6}:\S\+/ contains=redifForbiddenCharactersInHandle,redifBestPracticeInHandle nextgroup=redifWrongLineEnding contained display +" TODO Are those characters really forbidden??? +syntax match redifForbiddenCharactersInHandle /[\/*?"<>|]/ contained display +syntax match redifBestPracticeInHandle /\<\%([vi]:[1-9]\d*\|y:[1-9]\d\{3}\|p:[1-9]\d*-[1-9]\d*\|i:\%(jan\|feb\|mar\|apr\|may\|jun\|jul\|aug\|sep\|oct\|nov\|dec\|spr\|sum\|aut\|win\|spe\|Q[1-4]\|\d\d-\d\d\)\|Q:[1-4]\)\>/ contained display + +highlight def link redifArgumentHandleOfWork redifError +highlight def link redifArgumentAuthorArticle redifError +highlight def link redifArgumentAuthorBook redifError +highlight def link redifArgumentAuthorChapter redifError +highlight def link redifArgumentAuthorPaper redifError +highlight def link redifArgumentAuthorSoftware redifError +highlight def link redifArgumentEditorBook redifError +highlight def link redifArgumentEditorSeries redifError +highlight def link redifArgumentInBook redifError +highlight def link redifArgumentHasChapter redifError +highlight def link redifArgumentArticleHandle redifError +highlight def link redifArgumentBookHandle redifError +highlight def link redifArgumentChapterHandle redifError +highlight def link redifArgumentPaperHandle redifError +highlight def link redifArgumentSoftwareHandle redifError +highlight def link redifForbiddenCharactersInHandle redifError +highlight def link redifBestPracticeInHandle redifSpecial + +" Handles of Series: +syntax match redifArgumentHandleOfSeries /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display +syntax match redifArgumentFollowup /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display +syntax match redifArgumentPredecessor /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display +syntax match redifCorrectHandleOfSeries /RePEc:\a\a\a:\%(_\@!\w\)\{6}/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentHandleOfSeries redifError +highlight def link redifArgumentFollowup redifError +highlight def link redifArgumentPredecessor redifError + +" Handles of Archives: +syntax match redifArgumentHandleOfArchive /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfArchive contained display +syntax match redifCorrectHandleOfArchive /RePEc:\a\a\a/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentHandleOfArchive redifError + +" Handles of Person: +syntax match redifArgumentHandleOfPerson /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfPerson contained display +syntax match redifCorrectHandleOfPerson /\%(\%(:\@!\S\)\{-}:\)\{2}[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\):\S\+/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentHandleOfPerson redifError + +" Handles of Institution: +syntax match redifArgumentAuthorWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentEditorWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentPrimaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentProviderInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentPublisherInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentQuaternaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentSecondaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentTertiaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentHandleOfInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentPrimaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentSecondaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +syntax match redifArgumentTertiaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display +" TODO Are digits authorized? Apparently not. +" Country codes: +" http://www.iso.org/iso/country_codes/iso_3166_code_lists/country_names_and_code_elements.htm +syntax match redifCorrectHandleOfInstitution /RePEc:\a\a\a:\a\{5}\(ea\|af\|ax\|al\|dz\|as\|ad\|ao\|ai\|aq\|ag\|ar\|am\|aw\|au\|at\|az\|bs\|bh\|bd\|bb\|by\|be\|bz\|bj\|bm\|bt\|bo\|bq\|ba\|bw\|bv\|br\|io\|bn\|bg\|bf\|bi\|kh\|cm\|ca\|cv\|ky\|cf\|td\|cl\|cn\|cx\|cc\|co\|km\|cg\|cd\|ck\|cr\|ci\|hr\|cu\|cw\|cy\|cz\|dk\|dj\|dm\|do\|ec\|eg\|sv\|gq\|er\|ee\|et\|fk\|fo\|fj\|fi\|fr\|gf\|pf\|tf\|ga\|gm\|ge\|de\|gh\|gi\|gr\|gl\|gd\|gp\|gu\|gt\|gg\|gn\|gw\|gy\|ht\|hm\|va\|hn\|hk\|hu\|is\|in\|id\|ir\|iq\|ie\|im\|il\|it\|jm\|jp\|je\|jo\|kz\|ke\|ki\|kp\|kr\|kw\|kg\|la\|lv\|lb\|ls\|lr\|ly\|li\|lt\|lu\|mo\|mk\|mg\|mw\|my\|mv\|ml\|mt\|mh\|mq\|mr\|mu\|yt\|mx\|fm\|md\|mc\|mn\|me\|ms\|ma\|mz\|mm\|na\|nr\|np\|nl\|nc\|nz\|ni\|ne\|ng\|nu\|nf\|mp\|no\|om\|pk\|pw\|ps\|pa\|pg\|py\|pe\|ph\|pn\|pl\|pt\|pr\|qa\|re\|ro\|ru\|rw\|bl\|sh\|kn\|lc\|mf\|pm\|vc\|ws\|sm\|st\|sa\|sn\|rs\|sc\|sl\|sg\|sx\|sk\|si\|sb\|so\|za\|gs\|ss\|es\|lk\|sd\|sr\|sj\|sz\|se\|ch\|sy\|tw\|tj\|tz\|th\|tl\|tg\|tk\|to\|tt\|tn\|tr\|tm\|tc\|tv\|ug\|ua\|ae\|gb\|us\|um\|uy\|uz\|vu\|ve\|vn\|vg\|vi\|wf\|eh\|ye\|zm\|zw\)/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentHandleOfInstitution redifError +highlight def link redifArgumentPrimaryDefunct redifError +highlight def link redifArgumentSecondaryDefunct redifError +highlight def link redifArgumentTertiaryDefunct redifError + +" Emails: +syntax match redifArgumentAuthorEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentAuthorWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentContactEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentEditorEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentEditorWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentMaintainerEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentOrderEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentPrimaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentProviderEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentPublisherEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentQuaternaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentSecondaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentTertiaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifArgumentWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display +syntax match redifCorrectEmail /\%(@\@!\S\)\+@\%(@\@!\S\)\+/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentAuthorEmail redifError +highlight def link redifArgumentAuthorWorkplaceEmail redifError +highlight def link redifArgumentContactEmail redifError +highlight def link redifArgumentEditorEmail redifError +highlight def link redifArgumentEditorWorkplaceEmail redifError +highlight def link redifArgumentEmail redifError +highlight def link redifArgumentMaintainerEmail redifError +highlight def link redifArgumentOrderEmail redifError +highlight def link redifArgumentPrimaryEmail redifError +highlight def link redifArgumentProviderEmail redifError +highlight def link redifArgumentPublisherEmail redifError +highlight def link redifArgumentQuaternaryEmail redifError +highlight def link redifArgumentSecondaryEmail redifError +highlight def link redifArgumentTertiaryEmail redifError +highlight def link redifArgumentWorkplaceEmail redifError + +" Language +" Source: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes +syntax match redifArgumentLanguage /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectLanguage contained display +syntax match redifCorrectLanguage /\<\(aa\|ab\|af\|ak\|als\|am\|an\|ang\|ar\|arc\|as\|ast\|av\|ay\|az\|ba\|bar\|bat-smg\|bcl\|be\|be-x-old\|bg\|bh\|bi\|bm\|bn\|bo\|bpy\|br\|bs\|bug\|bxr\|ca\|ce\|ceb\|ch\|cho\|chr\|chy\|co\|cr\|cs\|csb\|cu\|cv\|cy\|da\|de\|diq\|dsb\|dv\|dz\|ee\|el\|en\|eo\|es\|et\|eu\|ext\|fa\|ff\|fi\|fiu-vro\|fj\|fo\|fr\|frp\|fur\|fy\|ga\|gd\|gil\|gl\|gn\|got\|gu\|gv\|ha\|haw\|he\|hi\|ho\|hr\|ht\|hu\|hy\|hz\|ia\|id\|ie\|ig\|ii\|ik\|ilo\|io\|is\|it\|iu\|ja\|jbo\|jv\|ka\|kg\|ki\|kj\|kk\|kl\|km\|kn\|khw\|ko\|kr\|ks\|ksh\|ku\|kv\|kw\|ky\|la\|lad\|lan\|lb\|lg\|li\|lij\|lmo\|ln\|lo\|lt\|lv\|map-bms\|mg\|mh\|mi\|mk\|ml\|mn\|mo\|mr\|ms\|mt\|mus\|my\|na\|nah\|nap\|nd\|nds\|nds-nl\|ne\|new\|ng\|nl\|nn\|no\|nr\|nso\|nrm\|nv\|ny\|oc\|oj\|om\|or\|os\|pa\|pag\|pam\|pap\|pdc\|pi\|pih\|pl\|pms\|ps\|pt\|qu\|rm\|rmy\|rn\|ro\|roa-rup\|ru\|rw\|sa\|sc\|scn\|sco\|sd\|se\|sg\|sh\|si\|simple\|sk\|sl\|sm\|sn\|so\|sq\|sr\|ss\|st\|su\|sv\|sw\|ta\|te\|tet\|tg\|th\|ti\|tk\|tl\|tlh\|tn\|to\|tpi\|tr\|ts\|tt\|tum\|tw\|ty\|udm\|ug\|uk\|ur\|uz\|ve\|vi\|vec\|vls\|vo\|wa\|war\|wo\|xal\|xh\|yi\|yo\|za\|zh\|zh-min-nan\|zh-yue\|zu\)\>/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentLanguage redifError +highlight def link redifCorrectLanguage redifSpecial + +" Length +" Based on the example in the documentation. But apparently any field is +" possible +syntax region redifArgumentLength start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifGoodLength contained +syntax match redifGoodLength /1 page\|[1-9]\d*\%( pages\)\=/ contained display + +highlight def link redifGoodLength redifSpecial + +" Publication-Type +syntax match redifArgumentPublicationType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectPublicationType contained display +syntax match redifCorrectPublicationType /\<\(journal article\|book\|book chapter\|working paper\|conference paper\|report\|other\)\>/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentPublicationType redifError +highlight def link redifCorrectPublicationType redifSpecial + +" Publication-Status +syntax region redifArgumentPublicationStatus start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifSpecialPublicationStatus contained +syntax match redifSpecialPublicationStatus /published\|forthcoming/ nextgroup=redifCorrectPublicationStatus contained display +syntax region redifCorrectPublicationStatus start=/./ end=/^\S\{-}:/me=s-1 contained + +highlight def link redifArgumentPublicationStatus redifError +highlight def link redifSpecialPublicationStatus redifSpecial + +" Month +" TODO Are numbers also allowed? +syntax match redifArgumentMonth /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodMonth contained display +syntax match redifGoodMonth /\<\(Jan\%(uary\)\=\|Feb\%(ruary\)\=\|Mar\%(ch\)\=\|Apr\%(il\)\=\|May\|June\=\|July\=\|Aug\%(ust\)\=\|Sep\%(tember\)\=\|Oct\%(ober\)\=\|Nov\%(ember\)\=\|Dec\%(ember\)\=\)\>/ contained display + +highlight def link redifGoodMonth redifSpecial + +" Integers: Volume, Chapter +syntax match redifArgumentVolume /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectInteger contained display +syntax match redifArgumentChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectInteger contained display +syntax match redifCorrectInteger /[1-9]\d*/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentVolume redifError +highlight def link redifArgumentChapter redifError + +" Year +syntax match redifArgumentYear /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectYear contained display +syntax match redifCorrectYear /[1-9]\d\{3}/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentYear redifError + +" Edition +" Based on the example in the documentation. +syntax match redifArgumentEdition /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodEdition contained display +syntax match redifGoodEdition /1st\|2nd\|3rd\|[4-9]th\|[1-9]\d*\%(1st\|2nd\|3rd\|[4-9]th\)\|[1-9]\d*/ contained display + +highlight def link redifGoodEdition redifSpecial + +" ISBN +syntax match redifArgumentISBN /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodISBN contained display +syntax match redifGoodISBN /\d[0-9-]\{8,15}\d/ contained display + +highlight def link redifGoodISBN redifSpecial + +" ISSN +syntax match redifArgumentISSN /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodISSN contained display +syntax match redifGoodISSN /\d\{4}-\d\{3}[0-9X]/ contained display + +highlight def link redifGoodISSN redifSpecial + +" File-Size +" Based on the example in the documentation. +syntax region redifArgumentFileSize start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifGoodSize contained +syntax match redifGoodSize /kb\|bytes/ contained display + +highlight def link redifGoodSize redifSpecial + +" Type +syntax match redifArgumentType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectType contained display +syntax match redifCorrectType /ReDIF-Paper\|ReDIF-Software\|ReDIF-Article\|ReDIF-Chapter\|ReDIF-Book/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentType redifError +highlight def link redifCorrectType redifSpecial + +" Dates: Publication-Date, Creation-Date, Revision-Date, +" Last-Login-Date, Registration-Date +syntax match redifArgumentCreationDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display +syntax match redifArgumentLastLoginDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display +syntax match redifArgumentPublicationDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display +syntax match redifArgumentRegisteredDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display +syntax match redifArgumentRevisionDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display +syntax match redifCorrectDate /[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\=\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\=\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\=\)\=/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentCreationDate redifError +highlight def link redifArgumentLastLoginDate redifError +highlight def link redifArgumentPublicationDate redifError +highlight def link redifArgumentRegisteredDate redifError +highlight def link redifArgumentRevisionDate redifError + +" Classification-JEL +syntax match redifArgumentClassificationJEL /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectJEL contained display +syntax match redifCorrectJEL /\<\%(\u\d\{,2}[,; \t]\s*\)*\u\d\{,2}/ contains=redifSpecialJEL nextgroup=redifWrongLineEnding contained display +syntax match redifSpecialJEL /\<\u\d\{,2}/ contained display + +highlight def link redifArgumentClassificationJEL redifError +highlight def link redifSpecialJEL redifSpecial + +" Pages +syntax match redifArgumentPages /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectPages contained display +syntax match redifCorrectPages /[1-9]\d*-[1-9]\d*/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifArgumentPages redifError + +" Name-ASCII +syntax match redifArgumentNameASCII /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectNameASCII contained display +syntax match redifCorrectNameASCII /[ -~]/ contained display + +highlight def link redifArgumentNameASCII redifError + +" Programming-Language +syntax match redifArgumentProgrammingLanguage /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodProgrammingLanguage contained display +syntax match redifGoodProgrammingLanguage /\/ nextgroup=redifWrongLineEnding contained display + +highlight def link redifGoodProgrammingLanguage redifSpecial + +" File-Format +" TODO The link in the documentation that gives the list of possible formats is broken. +" ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/media-types +" These are based on the examples in the documentation. +syntax match redifArgumentFileFormat /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodFormat contained display +syntax match redifGoodFormat "\a\+/[[:alpha:]+-]\+" nextgroup=redifWrongLineEnding contains=redifSpecialFormat contained display +syntax match redifSpecialFormat "application/atom+xml\|application/ecmascript\|application/EDI-X12\|application/EDIFACT\|application/json\|application/javascript\|application/octet-stream\|application/ogg\|application/pdf\|application/postscript\|application/rdf+xml\|application/rss+xml\|application/soap+xml\|application/font-woff\|application/xhtml+xml\|application/xml\|application/xml-dtd\|application/xop+xml\|application/zip\|application/gzip\|audio/basic\|audio/L24\|audio/mp4\|audio/mpeg\|audio/ogg\|audio/vorbis\|audio/vnd.rn-realaudio\|audio/vnd.wave\|audio/webm\|image/gif\|image/jpeg\|image/pjpeg\|image/png\|image/svg+xml\|image/tiff\|image/vnd.microsoft.icon\|message/http\|message/imdn+xml\|message/partial\|message/rfc822\|model/example\|model/iges\|model/mesh\|model/vrml\|model/x3d+binary\|model/x3d+vrml\|model/x3d+xml\|multipart/mixed\|multipart/alternative\|multipart/related\|multipart/form-data\|multipart/signed\|multipart/encrypted\|text/cmd\|text/css\|text/csv\|text/html\|text/javascript\|text/plain\|text/vcard\|text/xml\|video/mpeg\|video/mp4\|video/ogg\|video/quicktime\|video/webm\|video/x-matroska\|video/x-ms-wmv\|video/x-flv" contained display + +highlight def link redifSpecialFormat redifSpecial +highlight def link redifArgumentFileFormat redifError + +" Keywords +" Spell checked +syntax match redifArgumentKeywords /\%(^\S\{-}:\)\@!\S.*/ contains=@Spell,redifKeywordsSemicolon contained +syntax match redifKeywordsSemicolon /;/ contained + +highlight def link redifKeywordsSemicolon redifSpecial + +" Other spell-checked arguments +" Very useful when copy-pasting abstracts that may contain hyphens or +" ligatures. +syntax region redifArgumentAbstract start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained +syntax region redifArgumentAvailability start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained +syntax region redifArgumentBookTitle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained +syntax region redifArgumentDescription start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained +syntax region redifArgumentFileRestriction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained +syntax region redifArgumentNote start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained +syntax region redifArgumentNotification start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained +syntax region redifArgumentRestriction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained +syntax region redifArgumentTitle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained + +" Wrong line ending +syntax match redifWrongLineEnding /.\+/ contained display + +highlight def link redifWrongLineEnding redifError + +" Final highlight +highlight def link redifComment Comment +highlight def link redifError Error +highlight def link redifField Identifier +highlight def link redifFieldDeprecated Identifier +highlight def link redifSpecial Special +" For deprecated fields: +highlight redifFieldDeprecated term=undercurl cterm=undercurl gui=undercurl guisp=DarkGrey + +" Sync: The template-type (ReDIF-Paper, ReDIF-Archive, etc.) influences which +" fields can follow. Thus sync must search backwards for it. +" +" I would like to simply ask VIM to search backward for the first occurence of +" /^Template-Type:/, but it does not seem to be possible, so I have to start +" from the beginning of the file... This might slow down a lot for files that +" contain a lot of Template-Type statements. +syntax sync fromstart + +" The problem with syntax sync match (tried below), it is that, for example, +" it cannot realize when it is inside a Author-Name cluster, which is inside a +" Template-Type template... +" +" TODO Is this linecont pattern really useful? It seems to work anyway... +"syntax sync linecont /^\(Template-Type:\)\=\s*$/ +" TODO This sync is surprising... It seems to work on several lines even +" though I replaced \_s* by \s*, even without the linecont pattern... +"syntax sync match redifSyncForTemplatePaper groupthere redifRegionTemplatePaper /^Template-Type:\s*ReDIF-Paper \d\+\.\d\+/ +"syntax sync match redifSyncForTemplateArticle groupthere redifRegionTemplateArticle /^Template-Type:\s*ReDIF-Article \d\+\.\d\+/ +"syntax sync match redifSyncForTemplateChapter groupthere redifRegionTemplateChapter /^Template-Type:\s*ReDIF-Chapter \d\+\.\d\+/ +"syntax sync match redifSyncForTemplateBook groupthere redifRegionTemplateBook /^Template-Type:\s*ReDIF-Book \d\+\.\d\+/ +"syntax sync match redifSyncForTemplateSoftware groupthere redifRegionTemplateSoftware /^Template-Type:\s*ReDIF-Software \d\+\.\d\+/ +"syntax sync match redifSyncForTemplateArchive groupthere redifRegionTemplateArchive /^Template-Type:\s*ReDIF-Archive \d\+\.\d\+/ +"syntax sync match redifSyncForTemplateSeries groupthere redifRegionTemplateSeries /^Template-Type:\s*ReDIF-Series \d\+\.\d\+/ +"syntax sync match redifSyncForTemplateInstitution groupthere redifRegionTemplateInstitution /^Template-Type:\s*ReDIF-Institution \d\+\.\d\+/ +"syntax sync match redifSyncForTemplatePerson groupthere redifRegionTemplatePerson /^Template-Type:\s*ReDIF-Person \d\+\.\d\+/ + +" I do not really know how sync linebreaks works, but it helps when making +" changes on the argument when this argument is not on the same line than its +" field. I just assume that people won't leave more than one line of +" whitespace between fields and arguments (which is already very unlikely) +" hence the value of 2. +syntax sync linebreaks=2 + +" Since folding is defined by the syntax, set foldmethod to syntax. +set foldmethod=syntax + +" Set "b:current_syntax" to the name of the syntax at the end: +let b:current_syntax="redif" diff --git a/share/vim/vim73/syntax/registry.vim b/share/vim/vim74/syntax/registry.vim similarity index 100% rename from share/vim/vim73/syntax/registry.vim rename to share/vim/vim74/syntax/registry.vim diff --git a/share/vim/vim73/syntax/remind.vim b/share/vim/vim74/syntax/remind.vim similarity index 100% rename from share/vim/vim73/syntax/remind.vim rename to share/vim/vim74/syntax/remind.vim diff --git a/share/vim/vim74/syntax/resolv.vim b/share/vim/vim74/syntax/resolv.vim new file mode 100644 index 00000000..06d6885c --- /dev/null +++ b/share/vim/vim74/syntax/resolv.vim @@ -0,0 +1,88 @@ +" Vim syntax file +" Language: resolver configuration file +" Maintainer: Radu Dineiu +" URL: https://raw.github.com/rid9/vim-resolv/master/resolv.vim +" Last Change: 2013 May 21 +" Version: 1.0 +" +" Credits: +" David Necas (Yeti) +" Stefano Zacchiroli + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Errors, comments and operators +syn match resolvError /./ +syn match resolvComment /\s*[#;].*$/ +syn match resolvOperator /[\/:]/ contained + +" IP +syn cluster resolvIPCluster contains=resolvIPError,resolvIPSpecial +syn match resolvIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained +syn match resolvIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained + +" General +syn match resolvIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@resolvIPCluster +syn match resolvIPNetmask contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?/ contains=resolvOperator,@resolvIPCluster +syn match resolvHostname contained /\w\{-}\.[-0-9A-Za-z_\.]*/ + +" Particular +syn match resolvIPNameserver contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\s\|$\)\)\+/ contains=@resolvIPCluster +syn match resolvHostnameSearch contained /\%(\%([-0-9A-Za-z_]\+\.\)*[-0-9A-Za-z_]\+\.\?\%(\s\|$\)\)\+/ +syn match resolvIPNetmaskSortList contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?\%(\s\|$\)\)\+/ contains=resolvOperator,@resolvIPCluster + +" Identifiers +syn match resolvNameserver /^\s*nameserver\>/ nextgroup=resolvIPNameserver skipwhite +syn match resolvLwserver /^\s*lwserver\>/ nextgroup=resolvIPNameserver skipwhite +syn match resolvDomain /^\s*domain\>/ nextgroup=resolvHostname skipwhite +syn match resolvSearch /^\s*search\>/ nextgroup=resolvHostnameSearch skipwhite +syn match resolvSortList /^\s*sortlist\>/ nextgroup=resolvIPNetmaskSortList skipwhite +syn match resolvOptions /^\s*options\>/ nextgroup=resolvOption skipwhite + +" Options +syn match resolvOption /\<\%(debug\|no_tld_query\|rotate\|no-check-names\|inet6\)\>/ contained nextgroup=resolvOption skipwhite +syn match resolvOption /\<\%(ndots\|timeout\|attempts\):\d\+\>/ contained contains=resolvOperator nextgroup=resolvOption skipwhite + +" Additional errors +syn match resolvError /^search .\{257,}/ + +if version >= 508 || !exists("did_config_syntax_inits") + if version < 508 + let did_config_syntax_inits = 1 + command! -nargs=+ HiLink hi link + else + command! -nargs=+ HiLink hi def link + endif + + HiLink resolvIP Number + HiLink resolvIPNetmask Number + HiLink resolvHostname String + HiLink resolvOption String + + HiLink resolvIPNameserver Number + HiLink resolvHostnameSearch String + HiLink resolvIPNetmaskSortList Number + + HiLink resolvNameServer Identifier + HiLink resolvLwserver Identifier + HiLink resolvDomain Identifier + HiLink resolvSearch Identifier + HiLink resolvSortList Identifier + HiLink resolvOptions Identifier + + HiLink resolvComment Comment + HiLink resolvOperator Operator + HiLink resolvError Error + HiLink resolvIPError Error + HiLink resolvIPSpecial Special + + delcommand HiLink +endif + +let b:current_syntax = "resolv" + +" vim: ts=8 ft=vim diff --git a/share/vim/vim74/syntax/reva.vim b/share/vim/vim74/syntax/reva.vim new file mode 100644 index 00000000..03dfc9d4 --- /dev/null +++ b/share/vim/vim74/syntax/reva.vim @@ -0,0 +1,196 @@ +" Vim syntax file +" Language: Reva Forth +" Version: 2011.2 +" Last Change: 2012/02/13 +" Maintainer: Ron Aaron +" URL: http://ronware.org/reva/ +" Filetypes: *.rf *.frt +" NOTE: You should also have the ftplugin/reva.vim file to set 'isk' + +" For version 5.x: Clear all syntax items and don't load +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear + echo "Reva syntax file requires version 6.0 or later of vim!" + finish +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn clear + +" Synchronization method +syn sync ccomment +syn sync maxlines=100 + + +syn case ignore +" Some special, non-FORTH keywords +"syn keyword revaTodo contained todo fixme bugbug todo: bugbug: note: +syn match revaTodo contained '\(todo\|fixme\|bugbug\|note\)[:]*' +syn match revaTodo contained 'copyright\(\s(c)\)\=\(\s[0-9]\{2,4}\)\=' + +syn match revaHelpDesc '\S.*' contained +syn match revaHelpStuff '\<\(def\|stack\|ctx\|ver\|os\|related\):\s.*' +syn region revaHelpStuff start='\' end='^\S' contains=revaHelpDesc +syn region revaEOF start='\<|||\>' end='{$}' contains=revaHelpStuff + + +syn case match +" basic mathematical and logical operators +syn keyword revaoperators + - * / mod /mod negate abs min max umin umax +syn keyword revaoperators and or xor not invert 1+ 1- +syn keyword revaoperators m+ */ */mod m* um* m*/ um/mod fm/mod sm/rem +syn keyword revaoperators d+ d- dnegate dabs dmin dmax > < = >> << u< <> + + +" stack manipulations +syn keyword revastack drop nip dup over tuck swap rot -rot ?dup pick roll +syn keyword revastack 2drop 2nip 2dup 2over 2swap 2rot 3drop +syn keyword revastack >r r> r@ rdrop +" syn keyword revastack sp@ sp! rp@ rp! + +" address operations +syn keyword revamemory @ ! +! c@ c! 2@ 2! align aligned allot allocate here free resize +syn keyword revaadrarith chars char+ cells cell+ cell cell- 2cell+ 2cell- 3cell+ 4cell+ +syn keyword revamemblks move fill + +" conditionals +syn keyword revacond if else then =if >if if if0 ;; catch throw + +" iterations +syn keyword revaloop while repeat until again +syn keyword revaloop do loop i j leave unloop skip more + +" new words +syn match revaColonDef '\ immediate +syn keyword revadefine compile literal ' ['] + +" Built in words +com! -nargs=+ Builtin syn keyword revaBuiltin +Builtin execute ahead interp bye >body here pad words make +Builtin accept close cr creat delete ekey emit fsize ioerr key? +Builtin mtime open/r open/rw read rename seek space spaces stat +Builtin tell type type_ write (seek) (argv) (save) 0; 0drop; +Builtin >class >lz >name >xt alias alias: appname argc asciiz, asciizl, +Builtin body> clamp depth disassemble findprev fnvhash getenv here, +Builtin iterate last! last@ later link lz> lzmax os parse/ peek +Builtin peek-n pop prior push put rp@ rpick save setenv slurp +Builtin stack-empty? stack-iterate stack-size stack: THROW_BADFUNC +Builtin THROW_BADLIB THROW_GENERIC used xt>size z, +Builtin +lplace +place -chop /char /string bounds c+lplace c+place +Builtin chop cmp cmpi count lc lcount lplace place quote rsplit search split +Builtin zcount zt \\char +Builtin chdir g32 k32 u32 getcwd getpid hinst osname stdin stdout +Builtin (-lib) (bye) (call) (else) (find) (func) (here) (if (lib) (s0) (s^) +Builtin (to~) (while) >in >rel ?literal appstart cold compiling? context? d0 default_class +Builtin defer? dict dolstr dostr find-word h0 if) interp isa onexit +Builtin onstartup pdoes pop>ebx prompt rel> rp0 s0 src srcstr state str0 then,> then> tib +Builtin tp vector vector! word? xt? .ver revaver revaver# && '' 'constant 'context +Builtin 'create 'defer 'does 'forth 'inline 'macro 'macront 'notail 'value 'variable +Builtin (.r) (context) (create) (header) (hide) (inline) (p.r) (words~) (xfind) +Builtin ++ -- , -2drop -2nip -link -swap . .2x .classes .contexts .funcs .libs .needs .r +Builtin .rs .x 00; 0do 0if 1, 2, 3, 2* 2/ 2constant 2variable 3dup 4dup ;then >base >defer +Builtin >rr ? ?do @execute @rem appdir argv as back base base! between chain cleanup-libs +Builtin cmove> context?? ctrl-c ctx>name data: defer: defer@def dictgone do_cr eleave +Builtin endcase endof eval exception exec false find func: header heapgone help help/ +Builtin hex# hide inline{ last lastxt lib libdir literal, makeexename mnotail ms ms@ +Builtin newclass noop nosavedict notail nul of off on p: padchar parse parseln +Builtin parsews rangeof rdepth remains reset reva revaused rol8 rr> scratch setclass sp +Builtin strof super> temp time&date true turnkey? undo vfunc: w! w@ +Builtin xchg xchg2 xfind xt>name xwords { {{ }} } _+ _1+ _1- pathsep case \|| +" p[ [''] [ ['] + + +" debugging +syn keyword revadebug .s dump see + +" basic character operations +" syn keyword revaCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY +" syn keyword revaCharOps KEY? TIB CR +" syn match revaCharOps '\d >digit digit> >single >double >number >float + +" contexts +syn keyword revavocs forth macro inline +syn keyword revavocs context: +syn match revavocs /\<\~[^~ ]*/ +syn match revavocs /[^~ ]*\~\>/ + +" numbers +syn keyword revamath decimal hex base binary octal +syn match revainteger '\<-\=[0-9.]*[0-9.]\+\>' +" recognize hex and binary numbers, the '$' and '%' notation is for greva +syn match revainteger '\<\$\x*\x\+\>' " *1* --- dont't mess +syn match revainteger '\<\x*\d\x*\>' " *2* --- this order! +syn match revainteger '\<%[0-1]*[0-1]\+\>' +syn match revainteger "\<'.\>" + +" Strings +" syn region revaString start=+\.\?\"+ end=+"+ end=+$+ +syn region revaString start=/"/ skip=/\\"/ end=/"/ + +" Comments +syn region revaComment start='\\S\s' end='.*' contains=revaTodo +syn match revaComment '\.(\s[^)]\{-})' contains=revaTodo +syn region revaComment start='(\s' skip='\\)' end=')' contains=revaTodo +syn match revaComment '(\s[^\-]*\-\-[^\-]\{-})' contains=revaTodo +syn match revaComment '\<|\s.*$' contains=revaTodo +syn match revaColonDef '\<:m\?\s*[^ \t]\+\>' contains=revaComment + +" Include files +syn match revaInclude '\<\(include\|needs\)\s\+\S\+' + + +" Define the default highlighting. +if !exists("did_reva_syntax_inits") + let did_reva_syntax_inits=1 + " The default methods for highlighting. Can be overriden later. + hi def link revaEOF cIf0 + hi def link revaHelpStuff special + hi def link revaHelpDesc Comment + hi def link revaTodo Todo + hi def link revaOperators Operator + hi def link revaMath Number + hi def link revaInteger Number + hi def link revaStack Special + hi def link revaFStack Special + hi def link revaSP Special + hi def link revaMemory Operator + hi def link revaAdrArith Function + hi def link revaMemBlks Function + hi def link revaCond Conditional + hi def link revaLoop Repeat + hi def link revaColonDef Define + hi def link revaEndOfColonDef Define + hi def link revaDefine Define + hi def link revaDebug Debug + hi def link revaCharOps Character + hi def link revaConversion String + hi def link revaForth Statement + hi def link revaVocs Statement + hi def link revaString String + hi def link revaComment Comment + hi def link revaClassDef Define + hi def link revaEndOfClassDef Define + hi def link revaObjectDef Define + hi def link revaEndOfObjectDef Define + hi def link revaInclude Include + hi def link revaBuiltin Keyword +endif + +let b:current_syntax = "reva" +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8:sw=4:nocindent:smartindent: diff --git a/share/vim/vim74/syntax/rexx.vim b/share/vim/vim74/syntax/rexx.vim new file mode 100644 index 00000000..ef698a53 --- /dev/null +++ b/share/vim/vim74/syntax/rexx.vim @@ -0,0 +1,331 @@ +" Vim syntax file +" Language: Rexx +" Maintainer: Thomas Geulig +" Last Change: 2012 Sep 14, added support for new ooRexx 4.0 features +" URL: http://www.geulig.de/vim/rexx.vim +" Special Thanks to Dan Sharp and Rony G. Flatscher +" for comments and additions + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case ignore + +" add to valid identifier chars +setlocal iskeyword+=. +setlocal iskeyword+=! +setlocal iskeyword+=? + +" ---rgf, position important: must be before comments etc. ! +syn match rexxOperator "[=|\/\\\+\*\[\],;:<>&\~%\-]" + +" rgf syn match rexxIdentifier "\<[a-zA-Z\!\?_]\([a-zA-Z0-9._?!]\)*\>" +syn match rexxIdentifier "\<\K\k*\>" +syn match rexxEnvironmentSymbol "\<\.\k\+\>" + +" A Keyword is the first symbol in a clause. A clause begins at the start +" of a line or after a semicolon. THEN, ELSE, OTHERWISE, and colons are always +" followed by an implied semicolon. +syn match rexxClause "\(^\|;\|:\|then \|else \|when \|otherwise \)\s*\S*" contains=ALLBUT,rexxParse2,rexxRaise2,rexxForward2 + +" Considered keywords when used together in a phrase and begin a clause +syn match rexxParse "\\|version\)\>" containedin=rexxClause contains=rexxParse2 +syn match rexxParse2 "\" containedin=rexxParse + +syn match rexxKeyword contained "\" +syn match rexxKeyword contained "\<\(address\|trace\)\( value\)\?\>" +syn match rexxKeyword contained "\" + +syn match rexxKeyword contained "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\(\s\+forever\)\?\>" +syn match rexxKeyword contained "\\s*\(strict\s*\)\?\" + +" Another keyword phrase, separated to aid highlighting in rexxFunction +syn match rexxRegularCallSignal contained "\<\(call\|signal\)\s\(\s*on\>\|\s*off\>\)\@!\(\k\+\ze\|\ze(\)\(\s*\|;\|$\|(\)" +syn region rexxLabel contained start="\<\(call\|signal\)\>\s*\zs\(\k*\|(\)" end="\ze\(\s*\|;\|$\|(\)" containedin=rexxRegularCallSignal + +syn match rexxExceptionHandling contained "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>.*\(;\|$\)" contains=rexxComment + +" hilite label given after keyword "name" +syn match rexxLabel "name\s\+\zs\k\+\ze" containedin=rexxExceptionHandling +" hilite condition name (serves as label) +syn match rexxLabel "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>\s*\zs\k\+\ze\s*\(;\|$\)" containedin=rexxExceptionHandling +" user exception handling, hilite user defined name +syn region rexxLabel contained start="user\s\+\zs\k" end="\ze\(\s\|;\|$\)" containedin=rexxExceptionHandling + +" Considered keywords when they begin a clause +syn match rexxKeywordStatements "\<\(arg\|catch\|do\|drop\|end\|exit\|expose\|finally\|forward\|if\|interpret\|iterate\|leave\|loop\|nop\)\>" +syn match rexxKeywordStatements "\<\(options\|pull\|push\|queue\|raise\|reply\|return\|say\|select\|trace\)\>" + +" Conditional keywords starting a new statement +syn match rexxConditional "\<\(then\|else\|when\|otherwise\)\(\s*\|;\|\_$\|\)\>" contains=rexxKeywordStatements + +" Conditional phrases +syn match rexxLoopKeywords "\<\(to\|by\|for\|until\|while\|over\)\>" containedin=doLoopSelectLabelRegion + +" must be after Conditional phrases! +syn match doLoopSelectLabelRegion "\<\(do\|loop\|select\)\>\s\+\(label\s\+\)\?\(\s\+\k\+\s\+\zs\\)\?\k*\(\s\+forever\)\?\(\s\|;\|$\)" contains=doLoopSelectLabelRegion,rexxStartValueAssignment,rexxLoopKeywords + +" color label's name +syn match rexxLabel2 "\<\(do\|loop\|select\)\>\s\+label\s\+\zs\k*\ze" containedin=doLoopSelectLabelRegion + +" make sure control variable is normal +" TODO: re-activate ? +"rgf syn match rexxControlVariable "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\s\+\zs.*\ze\s\+\" containedin=doLoopSelectLabelRegion + +" make sure control variable assignment is normal +syn match rexxStartValueAssignment "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\s\+\zs.*\ze\(=.*\)\?\s\+\" containedin=doLoopSelectLabelRegion + +" highlight label name +syn match endIterateLeaveLabelRegion "\<\(end\|leave\|iterate\)\>\(\s\+\K\k*\)" contains=rexxLabel2 +syn match rexxLabel2 "\<\(end\|leave\|iterate\)\>\s\+\zs\k*\ze" containedin=endIterateLeaveLabelRegion + +" Guard statement +syn match rexxGuard "\(^\|;\|:\)\s*\\s\+\<\(on\|off\)\>" + +" Trace statement +syn match rexxTrace "\(^\|;\|:\)\s*\\s\+\<\K\k*\>" + +" Raise statement +" syn match rexxRaise "\(^\|;\|:\)\s\+\\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\?" contains=rexxRaise2 +syn match rexxRaise "\(^\|;\|:\)\s*\\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\?" contains=rexxRaise2 +syn match rexxRaise2 "\<\(additional\|array\|description\|exit\|propagate\|return\)\>" containedin=rexxRaise + +" Forward statement +syn match rexxForward "\(^\|;\|:\)\\s*" contains=rexxForward2 +syn match rexxForward2 "\<\(arguments\|array\|continue\|message\|class\|to\)\>" contained + +" Functions/Procedures +syn match rexxFunction "\<\<[a-zA-Z\!\?_]\k*\>("me=e-1 +syn match rexxFunction "[()]" + +" String constants +syn region rexxString start=+"+ skip=+""+ end=+"\(x\|b\)\?+ oneline +syn region rexxString start=+'+ skip=+''+ end=+'\(x\|b\)\?+ oneline + +syn region rexxParen transparent start='(' end=')' contains=ALLBUT,rexxParenError,rexxTodo,rexxLabel,rexxKeyword +" Catch errors caused by wrong parenthesis +syn match rexxParenError ")" +syn match rexxInParen "[\\[\\]{}]" + +" Comments +syn region rexxComment start="/\*" end="\*/" contains=rexxTodo,rexxComment +syn match rexxCommentError "\*/" +syn region rexxLineComment start="--" end="\_$" oneline + +" Highlight User Labels +" check for labels between comments, labels stated in a statement in the middle of a line +syn match rexxLabel "\(\_^\|;\)\s*\(\/\*.*\*\/\)*\s*\k\+\s*\(\/\*.*\*\/\)*\s*:"me=e-1 contains=rexxTodo,rexxComment + +syn keyword rexxTodo contained TODO FIXME XXX + +" ooRexx messages +syn region rexxMessageOperator start="\(\~\|\~\~\)" end="\(\S\|\s\)"me=e-1 +syn match rexxMessage "\(\~\|\~\~\)\s*\<\.*[a-zA-Z]\([a-zA-Z0-9._?!]\)*\>" contains=rexxMessageOperator + +" line continuations, take care of (line-)comments after it +syn match rexxLineContinue ",\ze\s*\(--.*\|\/\*.*\)*$" + +" the following is necessary, otherwise three consecutive dashes will cause it to highlight the first one +syn match rexxLineContinue "-\ze-\@!\s*\(--.*\|\s*\/\*.*\)\?$" + +" Special Variables +syn keyword rexxSpecialVariable sigl rc result self super +syn keyword rexxSpecialVariable .environment .error .input .local .methods .output .rs .stderr .stdin .stdout .stdque + +" Constants +syn keyword rexxConst .true .false .nil .endOfLine .line .context + +" Rexx numbers +" int like number +syn match rexxNumber '\d\+' contained +syn match rexxNumber '[-+]\s*\d\+' contained + +" Floating point number with decimal +syn match rexxNumber '\d\+\.\d*' contained +syn match rexxNumber '[-+]\s*\d\+\.\d*' contained + +" Floating point like number with E +syn match rexxNumber '[-+]\s*\d*[eE][\-+]\d\+' contained +syn match rexxNumber '\d*[eE][\-+]\d\+' contained + +" Floating point like number with E and decimal point (+,-) +syn match rexxNumber '[-+]\s*\d*\.\d*[eE][\-+]\d\+' contained +syn match rexxNumber '\d*\.\d*[eE][\-+]\d\+' contained + + +" ooRexx builtin classes (as of version 3.2.0, fall 2007), first define dot to be o.k. in keywords +syn keyword rexxBuiltinClass .Alarm .ArgUtil .Array .Bag .CaselessColumnComparator +syn keyword rexxBuiltinClass .CaselessComparator .CaselessDescendingComparator .CircularQueue +syn keyword rexxBuiltinClass .Class .Collection .ColumnComparator .Comparable .Comparator +syn keyword rexxBuiltinClass .DateTime .DescendingComparator .Directory .File .InputOutputStream +syn keyword rexxBuiltinClass .InputStream .InvertingComparator .List .MapCollection +syn keyword rexxBuiltinClass .Message .Method .Monitor .MutableBuffer .Object +syn keyword rexxBuiltinClass .OrderedCollection .OutputStream .Package .Properties .Queue +syn keyword rexxBuiltinClass .RegularExpression .Relation .RexxContext .RexxQueue .Routine +syn keyword rexxBuiltinClass .Set .SetCollection .Stem .Stream +syn keyword rexxBuiltinClass .StreamSupplier .String .Supplier .Table .TimeSpan + +" Windows-only classes +syn keyword rexxBuiltinClass .AdvancedControls .AnimatedButton .BaseDialog .ButtonControl +syn keyword rexxBuiltinClass .CategoryDialog .CheckBox .CheckList .ComboBox .DialogControl +syn keyword rexxBuiltinClass .DialogExtensions .DlgArea .DlgAreaU .DynamicDialog +syn keyword rexxBuiltinClass .EditControl .InputBox .IntegerBox .ListBox .ListChoice +syn keyword rexxBuiltinClass .ListControl .MenuObject .MessageExtensions .MultiInputBox +syn keyword rexxBuiltinClass .MultiListChoice .OLEObject .OLEVariant +syn keyword rexxBuiltinClass .PasswordBox .PlainBaseDialog .PlainUserDialog +syn keyword rexxBuiltinClass .ProgressBar .ProgressIndicator .PropertySheet .RadioButton +syn keyword rexxBuiltinClass .RcDialog .ResDialog .ScrollBar .SingleSelection .SliderControl +syn keyword rexxBuiltinClass .StateIndicator .StaticControl .TabControl .TimedMessage +syn keyword rexxBuiltinClass .TreeControl .UserDialog .VirtualKeyCodes .WindowBase +syn keyword rexxBuiltinClass .WindowExtensions .WindowObject .WindowsClassesBase .WindowsClipboard +syn keyword rexxBuiltinClass .WindowsEventLog .WindowsManager .WindowsProgramManager .WindowsRegistry + +" BSF4ooRexx classes +syn keyword rexxBuiltinClass .BSF .bsf.dialog .bsf_proxy +syn keyword rexxBuiltinClass .UNO .UNO_ENUM .UNO_CONSTANTS .UNO_PROPERTIES + +" ooRexx directives, ---rgf location important, otherwise directives in top of file not matched! +syn region rexxClassDirective start="::\s*class\s*"ms=e+1 end="\ze\(\s\|;\|$\)" +syn region rexxMethodDirective start="::\s*method\s*"ms=e+1 end="\ze\(\s\|;\|$\)" +syn region rexxRequiresDirective start="::\s*requires\s*"ms=e+1 end="\ze\(\s\|;\|$\)" +syn region rexxRoutineDirective start="::\s*routine\s*"ms=e+1 end="\ze\(\s\|;\|$\)" +syn region rexxAttributeDirective start="::\s*attribute\s*"ms=e+1 end="\ze\(\s\|;\|$\)" +" rgf, 2012-09-09 +syn region rexxOptionsDirective start="::\s*options\s*"ms=e+1 end="\ze\(\s\|;\|$\)" +syn region rexxConstantDirective start="::\s*constant\s*"ms=e+1 end="\ze\(\s\|;\|$\)" + +syn region rexxDirective start="\(^\|;\)\s*::\s*\w\+" end="\($\|;\)" contains=rexxString,rexxNumber,rexxComment,rexxLineComment,rexxClassDirective,rexxMethodDirective,rexxRoutineDirective,rexxRequiresDirective,rexxAttributeDirective,rexxOptionsDirective,rexxConstantDirective keepend + +syn match rexxOptionsDirective2 "\<\(digits\|form\|fuzz\|trace\)\>" containedin = rexxOptionsDirective3 +syn region rexxOptionsDirective3 start="\(^\|;\)\s*::\s*options\s"ms=e+1 end="\($\|;\)" contains=rexxString,rexxNumber,rexxVariable,rexxComment,rexxLineComment containedin = rexxDirective + + +syn region rexxVariable start="\zs\<\(\.\)\@!\K\k\+\>\ze\s*\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)" end="\(\_$\|.\)"me=e-1 +syn match rexxVariable "\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)\s*\zs\K\k*\ze" + +" rgf, 2007-07-22: unfortunately, the entire region is colored (not only the +" patterns), hence useless (vim 7.0)! (syntax-docs hint that that should work) +" attempt: just colorize the parenthesis in matching colors, keep content +" transparent to keep the formatting already done to it! +" TODO: test on 7.3 +" syn region par1 matchgroup=par1 start="(" matchgroup=par1 end=")" transparent contains=par2 +" syn region par2 matchgroup=par2 start="(" matchgroup=par2 end=")" transparent contains=par3 contained +" syn region par3 matchgroup=par3 start="(" matchgroup=par3 end=")" transparent contains=par4 contained +" syn region par4 matchgroup=par4 start="(" matchgroup=par4 end=")" transparent contains=par5 contained +" syn region par5 matchgroup=par5 start="(" matchgroup=par5 end=")" transparent contains=par1 contained + +" this will colorize the entire region, removing any colorizing already done! +" syn region par1 matchgroup=par1 start="(" end=")" contains=par2 +" syn region par2 matchgroup=par2 start="(" end=")" contains=par3 contained +" syn region par3 matchgroup=par3 start="(" end=")" contains=par4 contained +" syn region par4 matchgroup=par4 start="(" end=")" contains=par5 contained +" syn region par5 matchgroup=par5 start="(" end=")" contains=par1 contained + +hi par1 ctermfg=red guifg=red "guibg=grey +hi par2 ctermfg=blue guifg=blue "guibg=grey +hi par3 ctermfg=darkgreen guifg=darkgreen "guibg=grey +hi par4 ctermfg=darkyellow guifg=darkyellow "guibg=grey +hi par5 ctermfg=darkgrey guifg=darkgrey "guibg=grey + +" line continuation (trailing comma or single dash) +syn sync linecont "\(,\|-\ze-\@!\)\ze\s*\(--.*\|\/\*.*\)*$" + +" if !exists("rexx_minlines") +" let rexx_minlines = 500 +" endif +" exec "syn sync ccomment rexxComment minlines=" . rexx_minlines + +" always scan from start, PCs have long become to be powerful enough for that +exec "syn sync fromstart" + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_rexx_syn_inits") + if version < 508 + let did_rexx_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " make binary and hex strings stand out + hi rexxStringConstant term=bold,underline ctermfg=5 cterm=bold guifg=darkMagenta gui=bold + + HiLink rexxLabel2 Function + HiLink doLoopSelectLabelRegion rexxKeyword + HiLink endIterateLeaveLabelRegion rexxKeyword + HiLink rexxLoopKeywords rexxKeyword " Todo + + HiLink rexxNumber Normal "DiffChange +" HiLink rexxIdentifier DiffChange + + HiLink rexxRegularCallSignal Statement + HiLink rexxExceptionHandling Statement + + HiLink rexxLabel Function + HiLink rexxCharacter Character + HiLink rexxParenError rexxError + HiLink rexxInParen rexxError + HiLink rexxCommentError rexxError + HiLink rexxError Error + HiLink rexxKeyword Statement + HiLink rexxKeywordStatements Statement + + HiLink rexxFunction Function + HiLink rexxString String + HiLink rexxComment Comment + HiLink rexxTodo Todo + HiLink rexxSpecialVariable Special + HiLink rexxConditional rexxKeyword + + HiLink rexxOperator Operator + HiLink rexxMessageOperator rexxOperator + HiLink rexxLineComment Comment + + HiLink rexxLineContinue WildMenu + + HiLink rexxDirective rexxKeyword + HiLink rexxClassDirective Type + HiLink rexxMethodDirective rexxFunction + HiLink rexxAttributeDirective rexxFunction + HiLink rexxRequiresDirective Include + HiLink rexxRoutineDirective rexxFunction + +" rgf, 2012-09-09 + HiLink rexxOptionsDirective rexxFunction + HiLink rexxOptionsDirective2 rexxOptionsDirective + HiLink rexxOptionsDirective3 Normal " rexxOptionsDirective + + HiLink rexxConstantDirective rexxFunction + + HiLink rexxConst Constant + HiLink rexxTypeSpecifier Type + HiLink rexxBuiltinClass rexxTypeSpecifier + + HiLink rexxEnvironmentSymbol rexxConst + HiLink rexxMessage rexxFunction + + HiLink rexxParse rexxKeyword + HiLink rexxParse2 rexxParse + + HiLink rexxGuard rexxKeyword + HiLink rexxTrace rexxKeyword + + HiLink rexxRaise rexxKeyword + HiLink rexxRaise2 rexxRaise + + HiLink rexxForward rexxKeyword + HiLink rexxForward2 rexxForward + + delcommand HiLink +endif + +let b:current_syntax = "rexx" + +"vim: ts=8 diff --git a/share/vim/vim74/syntax/rhelp.vim b/share/vim/vim74/syntax/rhelp.vim new file mode 100644 index 00000000..0c07861d --- /dev/null +++ b/share/vim/vim74/syntax/rhelp.vim @@ -0,0 +1,236 @@ +" Vim syntax file +" Language: R Help File +" Maintainer: Jakson Aquino +" Former Maintainer: Johannes Ranke +" Last Change: Fri Oct 14, 2011 09:54PM +" Version: 0.7.4 +" SVN: $Id: rhelp.vim 90 2010-11-22 10:58:11Z ranke $ +" Remarks: - Includes R syntax highlighting in the appropriate +" sections if an r.vim file is in the same directory or in the +" default debian location. +" - There is no Latex markup in equations +" - Thanks to Will Gray for finding and fixing a bug +" - No support for \if, \ifelse and \out as I don't understand +" them and have no examples at hand (help welcome). +" - No support for \var tag within quoted string (dito) + +" Version Clears: {{{1 +" For version 5.x: Clear all syntax items +" For version 6.x and 7.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case match + +" R help identifiers {{{1 +syn region rhelpIdentifier matchgroup=rhelpSection start="\\name{" end="}" +syn region rhelpIdentifier matchgroup=rhelpSection start="\\alias{" end="}" +syn region rhelpIdentifier matchgroup=rhelpSection start="\\pkg{" end="}" contains=rhelpLink +syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end="}" contained +syn region rhelpIdentifier matchgroup=rhelpSection start="\\Rdversion{" end="}" + +" Highlighting of R code using an existing r.vim syntax file if available {{{1 +syn include @R syntax/r.vim + +" Strings {{{1 +syn region rhelpString start=/"/ skip=/\\"/ end=/"/ contains=rhelpSpecialChar,rhelpCodeSpecial,rhelpLink contained + +" Special characters in R strings +syn match rhelpCodeSpecial display contained "\\\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\" + +" Special characters ( \$ \& \% \# \{ \} \_) +syn match rhelpSpecialChar "\\[$&%#{}_]" + + +" R code {{{1 +syn match rhelpDots "\\dots" containedin=@R +syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpLink,rhelpIdentifier,rhelpString,rhelpSpecialChar,rhelpSection +syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpIdentifier,rhelpS4method +syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end="}" contains=@R +syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end="}" contains=@R +syn region rhelpRcode matchgroup=Delimiter start="\\code{" skip='\\\@" +syn match rhelpKeyword "\\ge" +syn match rhelpKeyword "\\le" +syn match rhelpKeyword "\\alpha" +syn match rhelpKeyword "\\beta" +syn match rhelpKeyword "\\gamma" +syn match rhelpKeyword "\\delta" +syn match rhelpKeyword "\\epsilon" +syn match rhelpKeyword "\\zeta" +syn match rhelpKeyword "\\eta" +syn match rhelpKeyword "\\theta" +syn match rhelpKeyword "\\iota" +syn match rhelpKeyword "\\kappa" +syn match rhelpKeyword "\\lambda" +syn match rhelpKeyword "\\mu" +syn match rhelpKeyword "\\nu" +syn match rhelpKeyword "\\xi" +syn match rhelpKeyword "\\omicron" +syn match rhelpKeyword "\\pi" +syn match rhelpKeyword "\\rho" +syn match rhelpKeyword "\\sigma" +syn match rhelpKeyword "\\tau" +syn match rhelpKeyword "\\upsilon" +syn match rhelpKeyword "\\phi" +syn match rhelpKeyword "\\chi" +syn match rhelpKeyword "\\psi" +syn match rhelpKeyword "\\omega" +syn match rhelpKeyword "\\Alpha" +syn match rhelpKeyword "\\Beta" +syn match rhelpKeyword "\\Gamma" +syn match rhelpKeyword "\\Delta" +syn match rhelpKeyword "\\Epsilon" +syn match rhelpKeyword "\\Zeta" +syn match rhelpKeyword "\\Eta" +syn match rhelpKeyword "\\Theta" +syn match rhelpKeyword "\\Iota" +syn match rhelpKeyword "\\Kappa" +syn match rhelpKeyword "\\Lambda" +syn match rhelpKeyword "\\Mu" +syn match rhelpKeyword "\\Nu" +syn match rhelpKeyword "\\Xi" +syn match rhelpKeyword "\\Omicron" +syn match rhelpKeyword "\\Pi" +syn match rhelpKeyword "\\Rho" +syn match rhelpKeyword "\\Sigma" +syn match rhelpKeyword "\\Tau" +syn match rhelpKeyword "\\Upsilon" +syn match rhelpKeyword "\\Phi" +syn match rhelpKeyword "\\Chi" +syn match rhelpKeyword "\\Psi" +syn match rhelpKeyword "\\Omega" + +" Links {{{1 +syn region rhelpLink matchgroup=rhelpSection start="\\link{" end="}" contained keepend extend +syn region rhelpLink matchgroup=rhelpSection start="\\link\[.\{-}\]{" end="}" contained keepend extend +syn region rhelpLink matchgroup=rhelpSection start="\\linkS4class{" end="}" contained keepend extend + +" Verbatim like {{{1 +syn region rhelpVerbatim matchgroup=rhelpType start="\\samp{" skip='\\\@" +syn match rhelpType "\\strong\>" +syn match rhelpType "\\bold\>" +syn match rhelpType "\\sQuote\>" +syn match rhelpType "\\dQuote\>" +syn match rhelpType "\\preformatted\>" +syn match rhelpType "\\kbd\>" +syn match rhelpType "\\eqn\>" +syn match rhelpType "\\deqn\>" +syn match rhelpType "\\file\>" +syn match rhelpType "\\email\>" +syn match rhelpType "\\url\>" +syn match rhelpType "\\href\>" +syn match rhelpType "\\var\>" +syn match rhelpType "\\env\>" +syn match rhelpType "\\option\>" +syn match rhelpType "\\command\>" +syn match rhelpType "\\newcommand\>" +syn match rhelpType "\\renewcommand\>" +syn match rhelpType "\\dfn\>" +syn match rhelpType "\\cite\>" +syn match rhelpType "\\acronym\>" + +" rhelp sections {{{1 +syn match rhelpSection "\\encoding\>" +syn match rhelpSection "\\title\>" +syn match rhelpSection "\\item\>" +syn match rhelpSection "\\description\>" +syn match rhelpSection "\\concept\>" +syn match rhelpSection "\\arguments\>" +syn match rhelpSection "\\details\>" +syn match rhelpSection "\\value\>" +syn match rhelpSection "\\references\>" +syn match rhelpSection "\\note\>" +syn match rhelpSection "\\author\>" +syn match rhelpSection "\\seealso\>" +syn match rhelpSection "\\keyword\>" +syn match rhelpSection "\\docType\>" +syn match rhelpSection "\\format\>" +syn match rhelpSection "\\source\>" +syn match rhelpSection "\\itemize\>" +syn match rhelpSection "\\describe\>" +syn match rhelpSection "\\enumerate\>" +syn match rhelpSection "\\item " +syn match rhelpSection "\\item$" +syn match rhelpSection "\\tabular{[lcr]*}" +syn match rhelpSection "\\dontrun\>" +syn match rhelpSection "\\dontshow\>" +syn match rhelpSection "\\testonly\>" +syn match rhelpSection "\\donttest\>" + +" Freely named Sections {{{1 +syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end="}" +syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end="}" + +syn match rhelpDelimiter "{\|\[\|(\|)\|\]\|}" + +" R help file comments {{{1 +syn match rhelpComment /%.*$/ + +" Error {{{1 +syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim +syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim +syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim +syn match rhelpError /[)\]}]/ +syn match rhelpBraceError /[)}]/ contained +syn match rhelpCurlyError /[)\]]/ contained +syn match rhelpParenError /[\]}]/ contained + +" Define the default highlighting {{{1 +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_rhelp_syntax_inits") + if version < 508 + let did_rhelp_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + HiLink rhelpVerbatim String + HiLink rhelpDelimiter Delimiter + HiLink rhelpIdentifier Identifier + HiLink rhelpString String + HiLink rhelpCodeSpecial Special + HiLink rhelpKeyword Keyword + HiLink rhelpDots Keyword + HiLink rhelpLink Underlined + HiLink rhelpType Type + HiLink rhelpSection PreCondit + HiLink rhelpError Error + HiLink rhelpBraceError Error + HiLink rhelpCurlyError Error + HiLink rhelpParenError Error + HiLink rhelpPreProc PreProc + HiLink rhelpDelimiter Delimiter + HiLink rhelpComment Comment + HiLink rhelpRComment Comment + HiLink rhelpSpecialChar SpecialChar + delcommand HiLink +endif + +let b:current_syntax = "rhelp" +" vim: foldmethod=marker: diff --git a/share/vim/vim73/syntax/rib.vim b/share/vim/vim74/syntax/rib.vim similarity index 100% rename from share/vim/vim73/syntax/rib.vim rename to share/vim/vim74/syntax/rib.vim diff --git a/share/vim/vim73/syntax/rnc.vim b/share/vim/vim74/syntax/rnc.vim similarity index 100% rename from share/vim/vim73/syntax/rnc.vim rename to share/vim/vim74/syntax/rnc.vim diff --git a/share/vim/vim74/syntax/rng.vim b/share/vim/vim74/syntax/rng.vim new file mode 100644 index 00000000..1ef864c7 --- /dev/null +++ b/share/vim/vim74/syntax/rng.vim @@ -0,0 +1,25 @@ +" Vim syntax file +" Language: RELAX NG +" Maintainer: Jaromir Hradilek +" URL: https://github.com/jhradilek/vim-rng +" Last Change: 25 March 2013 +" Description: A syntax file for RELAX NG, a schema language for XML + +if exists('b:current_syntax') + finish +endif + +do Syntax xml +syn spell toplevel +syn cluster xmlTagHook add=rngTagName +syn case match + +syn keyword rngTagName anyName attribute choice data define div contained +syn keyword rngTagName element empty except externalRef grammar contained +syn keyword rngTagName group include interleave list mixed name contained +syn keyword rngTagName notAllowed nsName oneOrMore optional param contained +syn keyword rngTagName parentRef ref start text value zeroOrMore contained + +hi def link rngTagName Statement + +let b:current_syntax = 'rng' diff --git a/share/vim/vim73/syntax/rnoweb.vim b/share/vim/vim74/syntax/rnoweb.vim similarity index 100% rename from share/vim/vim73/syntax/rnoweb.vim rename to share/vim/vim74/syntax/rnoweb.vim diff --git a/share/vim/vim73/syntax/robots.vim b/share/vim/vim74/syntax/robots.vim similarity index 100% rename from share/vim/vim73/syntax/robots.vim rename to share/vim/vim74/syntax/robots.vim diff --git a/share/vim/vim73/syntax/rpcgen.vim b/share/vim/vim74/syntax/rpcgen.vim similarity index 100% rename from share/vim/vim73/syntax/rpcgen.vim rename to share/vim/vim74/syntax/rpcgen.vim diff --git a/share/vim/vim74/syntax/rpl.vim b/share/vim/vim74/syntax/rpl.vim new file mode 100644 index 00000000..6457803a --- /dev/null +++ b/share/vim/vim74/syntax/rpl.vim @@ -0,0 +1,496 @@ +" Vim syntax file +" Language: RPL/2 +" Version: 0.15.15 against RPL/2 version 4.00pre7i +" Last Change: 2012 Feb 03 by Thilo Six +" Maintainer: Joël BERTRAND +" URL: http://www.makalis.fr/~bertrand/rpl2/download/vim/indent/rpl.vim +" Credits: Nothing + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Keyword characters (not used) +" set iskeyword=33-127 + +" Case sensitive +syntax case match + +" Constants +syntax match rplConstant "\(^\|\s\+\)\(e\|i\)\ze\($\|\s\+\)" + +" Any binary number +syntax match rplBinaryError "\(^\|\s\+\)#\s*\S\+b\ze" +syntax match rplBinary "\(^\|\s\+\)#\s*[01]\+b\ze\($\|\s\+\)" +syntax match rplOctalError "\(^\|\s\+\)#\s*\S\+o\ze" +syntax match rplOctal "\(^\|\s\+\)#\s*\o\+o\ze\($\|\s\+\)" +syntax match rplDecimalError "\(^\|\s\+\)#\s*\S\+d\ze" +syntax match rplDecimal "\(^\|\s\+\)#\s*\d\+d\ze\($\|\s\+\)" +syntax match rplHexadecimalError "\(^\|\s\+\)#\s*\S\+h\ze" +syntax match rplHexadecimal "\(^\|\s\+\)#\s*\x\+h\ze\($\|\s\+\)" + +" Case unsensitive +syntax case ignore + +syntax match rplControl "\(^\|\s\+\)abort\ze\($\|\s\+\)" +syntax match rplControl "\(^\|\s\+\)kill\ze\($\|\s\+\)" +syntax match rplControl "\(^\|\s\+\)cont\ze\($\|\s\+\)" +syntax match rplControl "\(^\|\s\+\)halt\ze\($\|\s\+\)" +syntax match rplControl "\(^\|\s\+\)cmlf\ze\($\|\s\+\)" +syntax match rplControl "\(^\|\s\+\)sst\ze\($\|\s\+\)" + +syntax match rplConstant "\(^\|\s\+\)pi\ze\($\|\s\+\)" + +syntax match rplStatement "\(^\|\s\+\)return\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)last\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)syzeval\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)wait\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)type\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)kind\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)eval\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)use\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)remove\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)external\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)dup\([2n]\|\)\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)drop\([2n]\|\)\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)depth\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)roll\(d\|\)\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)pick\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)rot\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)swap\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)over\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)clear\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)warranty\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)copyright\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)convert\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)date\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)time\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)mem\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)clmf\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)->num\ze\($\|\s\+\)" +syntax match rplStatement "\(^\|\s\+\)help\ze\($\|\s\+\)" + +syntax match rplStorage "\(^\|\s\+\)get\(i\|r\|c\|\)\ze\($\|\s\+\)" +syntax match rplStorage "\(^\|\s\+\)put\(i\|r\|c\|\)\ze\($\|\s\+\)" +syntax match rplStorage "\(^\|\s\+\)rcl\ze\($\|\s\+\)" +syntax match rplStorage "\(^\|\s\+\)purge\ze\($\|\s\+\)" +syntax match rplStorage "\(^\|\s\+\)sinv\ze\($\|\s\+\)" +syntax match rplStorage "\(^\|\s\+\)sneg\ze\($\|\s\+\)" +syntax match rplStorage "\(^\|\s\+\)sconj\ze\($\|\s\+\)" +syntax match rplStorage "\(^\|\s\+\)steq\ze\($\|\s\+\)" +syntax match rplStorage "\(^\|\s\+\)rceq\ze\($\|\s\+\)" +syntax match rplStorage "\(^\|\s\+\)vars\ze\($\|\s\+\)" +syntax match rplStorage "\(^\|\s\+\)clusr\ze\($\|\s\+\)" +syntax match rplStorage "\(^\|\s\+\)sto\([+-/\*]\|\)\ze\($\|\s\+\)" + +syntax match rplAlgConditional "\(^\|\s\+\)ift\(e\|\)\ze\($\|\s\+\)" + +syntax match rplOperator "\(^\|\s\+\)and\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)\(x\|\)or\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)not\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)same\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)==\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)<=\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)=<\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)=>\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)>=\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)<>\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)>\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)<\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)[+-]\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)[/\*]\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)\^\ze\($\|\s\+\)" +syntax match rplOperator "\(^\|\s\+\)\*\*\ze\($\|\s\+\)" + +syntax match rplBoolean "\(^\|\s\+\)true\ze\($\|\s\+\)" +syntax match rplBoolean "\(^\|\s\+\)false\ze\($\|\s\+\)" + +syntax match rplReadWrite "\(^\|\s\+\)store\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)recall\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)\(\|wf\|un\)lock\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)open\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)close\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)delete\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)create\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)format\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)rewind\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)backspace\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)\(\|re\)write\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)read\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)inquire\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)sync\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)append\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)suppress\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)seek\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)pr\(1\|int\|st\|stc\|lcd\|var\|usr\|md\)\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)paper\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)cr\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)erase\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)disp\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)input\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)prompt\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)key\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)cllcd\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)\(\|re\)draw\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)drax\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)indep\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)depnd\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)res\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)axes\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)label\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)pmin\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)pmax\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)centr\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)persist\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)title\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)\(slice\|auto\|log\|\)scale\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)eyept\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)\(p\|s\)par\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)function\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)polar\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)scatter\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)plotter\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)wireframe\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)parametric\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)slice\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)\*w\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)\*h\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)\*d\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)\*s\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)->lcd\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)lcd->\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)edit\ze\($\|\s\+\)" +syntax match rplReadWrite "\(^\|\s\+\)visit\ze\($\|\s\+\)" + +syntax match rplIntrinsic "\(^\|\s\+\)abs\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)arg\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)conj\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)re\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)im\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)mant\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)xpon\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)ceil\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)fact\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)fp\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)floor\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)inv\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)ip\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)max\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)min\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)mod\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)neg\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)relax\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)sign\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)sq\(\|rt\)\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)xroot\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)cos\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)sin\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)tan\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)tg\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)a\(\|rc\)cos\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)a\(\|rc\)sin\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)atan\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)arctg\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)cosh\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)sinh\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)tanh\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|arg\)th\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)arg[cst]h\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)log\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)ln\(\|1\)\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)exp\(\|m\)\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)trn\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)con\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)idn\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)rdm\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)rsd\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)cnrm\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)cross\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)d[eo]t\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)[cr]swp\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)rci\(j\|\)\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(in\|de\)cr\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)bessel\ze\($\|\s\+\)" + +syntax match rplIntrinsic "\(^\|\s\+\)\(\|g\)egvl\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|g\)\(\|l\|r\)egv\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)rnrm\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(std\|fix\|sci\|eng\)\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(rad\|deg\)\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|n\)rand\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)rdz\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|i\)fft\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(dec\|bin\|oct\|hex\)\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)rclf\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)stof\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)[cs]f\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)chr\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)num\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)pos\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)sub\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)size\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(st\|rc\)ws\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(r\|s\)\(r\|l\)\(\|b\)\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)as\(r\|l\)\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(int\|der\)\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)stos\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|r\)cls\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)drws\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)scls\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)ns\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)tot\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)mean\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)sdev\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)var\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)maxs\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)mins\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)cov\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)cols\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)s\(x\(\|y\|2\)\|y\(\|2\)\)\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(x\|y\)col\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)corr\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)utp[cfnt]\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)comb\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)perm\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)lu\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)[lu]chol\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)schur\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)%\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)%ch\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)%t\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)hms->\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)->hms\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)hms+\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)hms-\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)d->r\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)r->d\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)b->r\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)r->b\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)c->r\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)r->c\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)r->p\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)p->r\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)str->\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)->str\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)array->\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)->array\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)list->\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)->list\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)s+\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)s-\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)col-\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)col+\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)row-\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)row+\ze\($\|\s\+\)" +syntax match rplIntrinsic "\(^\|\s\+\)->q\ze\($\|\s\+\)" + +syntax match rplObsolete "\(^\|\s\+\)arry->\ze\($\|\s\+\)"hs=e-5 +syntax match rplObsolete "\(^\|\s\+\)->arry\ze\($\|\s\+\)"hs=e-5 + +" Conditional structures +syntax match rplConditionalError "\(^\|\s\+\)case\ze\($\|\s\+\)"hs=e-3 +syntax match rplConditionalError "\(^\|\s\+\)then\ze\($\|\s\+\)"hs=e-3 +syntax match rplConditionalError "\(^\|\s\+\)else\ze\($\|\s\+\)"hs=e-3 +syntax match rplConditionalError "\(^\|\s\+\)elseif\ze\($\|\s\+\)"hs=e-5 +syntax match rplConditionalError "\(^\|\s\+\)end\ze\($\|\s\+\)"hs=e-2 +syntax match rplConditionalError "\(^\|\s\+\)\(step\|next\)\ze\($\|\s\+\)"hs=e-3 +syntax match rplConditionalError "\(^\|\s\+\)until\ze\($\|\s\+\)"hs=e-4 +syntax match rplConditionalError "\(^\|\s\+\)repeat\ze\($\|\s\+\)"hs=e-5 +syntax match rplConditionalError "\(^\|\s\+\)default\ze\($\|\s\+\)"hs=e-6 + +" FOR/(CYCLE)/(EXIT)/NEXT +" FOR/(CYCLE)/(EXIT)/STEP +" START/(CYCLE)/(EXIT)/NEXT +" START/(CYCLE)/(EXIT)/STEP +syntax match rplCycle "\(^\|\s\+\)\(cycle\|exit\)\ze\($\|\s\+\)" +syntax region rplForNext matchgroup=rplRepeat start="\(^\|\s\+\)\(for\|start\)\ze\($\|\s\+\)" end="\(^\|\s\+\)\(next\|step\)\ze\($\|\s\+\)" contains=ALL keepend extend + +" ELSEIF/END +syntax region rplElseifEnd matchgroup=rplConditional start="\(^\|\s\+\)elseif\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd keepend + +" ELSE/END +syntax region rplElseEnd matchgroup=rplConditional start="\(^\|\s\+\)else\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd,rplThenEnd,rplElseifEnd keepend + +" THEN/END +syntax region rplThenEnd matchgroup=rplConditional start="\(^\|\s\+\)then\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained containedin=rplIfEnd contains=ALLBUT,rplThenEnd keepend + +" IF/END +syntax region rplIfEnd matchgroup=rplConditional start="\(^\|\s\+\)if\(err\|\)\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplElseEnd,rplElseifEnd keepend extend +" if end is accepted ! +" select end too ! + +" CASE/THEN +syntax region rplCaseThen matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)then\ze\($\|\s\+\)" contains=ALLBUT,rplCaseThen,rplCaseEnd,rplThenEnd keepend extend contained containedin=rplCaseEnd + +" CASE/END +syntax region rplCaseEnd matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplCaseEnd,rplThenEnd,rplElseEnd keepend extend contained containedin=rplSelectEnd + +" DEFAULT/END +syntax region rplDefaultEnd matchgroup=rplConditional start="\(^\|\s\+\)default\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplDefaultEnd keepend contained containedin=rplSelectEnd + +" SELECT/END +syntax region rplSelectEnd matchgroup=rplConditional start="\(^\|\s\+\)select\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplThenEnd keepend extend +" select end is accepted ! + +" DO/UNTIL/END +syntax region rplUntilEnd matchgroup=rplConditional start="\(^\|\s\+\)until\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplUntilEnd contained containedin=rplDoUntil extend keepend +syntax region rplDoUntil matchgroup=rplConditional start="\(^\|\s\+\)do\ze\($\|\s\+\)" end="\(^\|\s\+\)until\ze\($\|\s\+\)" contains=ALL keepend extend + +" WHILE/REPEAT/END +syntax region rplRepeatEnd matchgroup=rplConditional start="\(^\|\s\+\)repeat\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplRepeatEnd contained containedin=rplWhileRepeat extend keepend +syntax region rplWhileRepeat matchgroup=rplConditional start="\(^\|\s\+\)while\ze\($\|\s\+\)" end="\(^\|\s\+\)repeat\ze\($\|\s\+\)" contains=ALL keepend extend + +" Comments +syntax match rplCommentError "\*/" +syntax region rplCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1 +syntax region rplCommentLine start="\(^\|\s\+\)//\ze" skip="\\$" end="$" contains=NONE keepend extend +syntax region rplComment start="\(^\|\s\+\)/\*\ze" end="\*/" contains=rplCommentString keepend extend + +" Catch errors caused by too many right parentheses +syntax region rplParen transparent start="(" end=")" contains=ALLBUT,rplParenError,rplComplex,rplIncluded keepend extend +syntax match rplParenError ")" + +" Subroutines +" Catch errors caused by too many right '>>' +syntax match rplSubError "\(^\|\s\+\)>>\ze\($\|\s\+\)"hs=e-1 +syntax region rplSub matchgroup=rplSubDelimitor start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageSub keepend extend + +" Expressions +syntax region rplExpr start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError + +" Local variables +syntax match rplStorageError "\(^\|\s\+\)->\ze\($\|\s\+\)"hs=e-1 +syntax region rplStorageSub matchgroup=rplStorage start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageExpr contained containedin=rplLocalStorage keepend extend +syntax region rplStorageExpr matchgroup=rplStorage start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError extend contained containedin=rplLocalStorage +syntax region rplLocalStorage matchgroup=rplStorage start="\(^\|\s\+\)->\ze\($\|\s\+\)" end="\(^\|\s\+\)\(<<\ze\($\|\s\+\)\|'\)" contains=rplStorageSub,rplStorageExpr,rplComment,rplCommentLine keepend extend + +" Catch errors caused by too many right brackets +syntax match rplArrayError "\]" +syntax match rplArray "\]" contained containedin=rplArray +syntax region rplArray matchgroup=rplArray start="\[" end="\]" contains=ALLBUT,rplArrayError keepend extend + +" Catch errors caused by too many right '}' +syntax match rplListError "}" +syntax match rplList "}" contained containedin=rplList +syntax region rplList matchgroup=rplList start="{" end="}" contains=ALLBUT,rplListError,rplIncluded keepend extend + +" cpp is used by RPL/2 +syntax match rplPreProc "\_^#\s*\(define\|undef\)\>" +syntax match rplPreProc "\_^#\s*\(warning\|error\)\>" +syntax match rplPreCondit "\_^#\s*\(if\|ifdef\|ifndef\|elif\|else\|endif\)\>" +syntax match rplIncluded contained "\<<\s*\S*\s*>\>" +syntax match rplInclude "\_^#\s*include\>\s*["<]" contains=rplIncluded,rplString +"syntax match rplExecPath "\%^\_^#!\s*\S*" +syntax match rplExecPath "\%^\_^#!\p*\_$" + +" Any integer +syntax match rplInteger "\(^\|\s\+\)[-+]\=\d\+\ze\($\|\s\+\)" + +" Floating point number +" [S][ip].[fp] +syntax match rplFloat "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\(\d*\)\=\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign +" [S]ip[.fp]E[S]exp +syntax match rplFloat "\(^\|\s\+\)[-+]\=\d\+\([\.,]\d*\)\=[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign +" [S].fpE[S]exp +syntax match rplFloat "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\d\+[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign +syntax match rplPoint "\<[\.,]\>" +syntax match rplSign "\<[+-]\>" + +" Complex number +" (x,y) +syntax match rplComplex "\(^\|\s\+\)([-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=\s*,\s*[-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)" +" (x.y) +syntax match rplComplex "\(^\|\s\+\)([-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=\s*\.\s*[-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)" + +" Strings +syntax match rplStringGuilles "\\\"" +syntax match rplStringAntislash "\\\\" +syntax region rplString start=+\(^\|\s\+\)"+ end=+"\ze\($\|\s\+\)+ contains=rplStringGuilles,rplStringAntislash + +syntax match rplTab "\t" transparent + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_rpl_syntax_inits") + if version < 508 + let did_rpl_syntax_inits = 1 + command -nargs=+ HiLink highlight link + else + command -nargs=+ HiLink highlight default link + endif + + " The default highlighting. + + HiLink rplControl Statement + HiLink rplStatement Statement + HiLink rplAlgConditional Conditional + HiLink rplConditional Repeat + HiLink rplConditionalError Error + HiLink rplRepeat Repeat + HiLink rplCycle Repeat + HiLink rplUntil Repeat + HiLink rplIntrinsic Special + HiLink rplStorage StorageClass + HiLink rplStorageExpr StorageClass + HiLink rplStorageError Error + HiLink rplReadWrite rplIntrinsic + + HiLink rplOperator Operator + + HiLink rplList Special + HiLink rplArray Special + HiLink rplConstant Identifier + HiLink rplExpr Type + + HiLink rplString String + HiLink rplStringGuilles String + HiLink rplStringAntislash String + + HiLink rplBinary Boolean + HiLink rplOctal Boolean + HiLink rplDecimal Boolean + HiLink rplHexadecimal Boolean + HiLink rplInteger Number + HiLink rplFloat Float + HiLink rplComplex Float + HiLink rplBoolean Identifier + + HiLink rplObsolete Todo + + HiLink rplPreCondit PreCondit + HiLink rplInclude Include + HiLink rplIncluded rplString + HiLink rplInclude Include + HiLink rplExecPath Include + HiLink rplPreProc PreProc + HiLink rplComment Comment + HiLink rplCommentLine Comment + HiLink rplCommentString Comment + HiLink rplSubDelimitor rplStorage + HiLink rplCommentError Error + HiLink rplParenError Error + HiLink rplSubError Error + HiLink rplArrayError Error + HiLink rplListError Error + HiLink rplTab Error + HiLink rplBinaryError Error + HiLink rplOctalError Error + HiLink rplDecimalError Error + HiLink rplHexadecimalError Error + + delcommand HiLink +endif + +let b:current_syntax = "rpl" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: ts=8 tw=132 diff --git a/share/vim/vim74/syntax/rst.vim b/share/vim/vim74/syntax/rst.vim new file mode 100644 index 00000000..159d14ef --- /dev/null +++ b/share/vim/vim74/syntax/rst.vim @@ -0,0 +1,196 @@ +" Vim syntax file +" Language: reStructuredText documentation format +" Maintainer: Nikolai Weibull +" Latest Revision: 2013-06-03 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn case ignore + +syn match rstSections "^\%(\([=`:.'"~^_*+#-]\)\1\+\n\)\=.\+\n\([=`:.'"~^_*+#-]\)\2\+$" + +syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/ + +syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis, + \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference, + \ rstInlineInternalTargets,rstFootnoteReference,rstHyperlinkReference + +syn region rstLiteralBlock matchgroup=rstDelimiter + \ start='::\_s*\n\ze\z(\s\+\)' skip='^$' end='^\z1\@!' + \ contains=@NoSpell + +syn region rstQuotedLiteralBlock matchgroup=rstDelimiter + \ start="::\_s*\n\ze\z([!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]\)" + \ end='^\z1\@!' contains=@NoSpell + +syn region rstDoctestBlock oneline display matchgroup=rstDelimiter + \ start='^>>>\s' end='^$' + +syn region rstTable transparent start='^\n\s*+[-=+]\+' end='^$' + \ contains=rstTableLines,@rstCruft +syn match rstTableLines contained display '|\|+\%(=\+\|-\+\)\=' + +syn region rstSimpleTable transparent + \ start='^\n\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$' + \ end='^$' + \ contains=rstSimpleTableLines,@rstCruft +syn match rstSimpleTableLines contained display + \ '^\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$' +syn match rstSimpleTableLines contained display + \ '^\%(\s*\)\@>\%(\%(-\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(-\+\)\@>\%(\s*\)\@>\)\+\)\@>$' + +syn cluster rstDirectives contains=rstFootnote,rstCitation, + \ rstHyperlinkTarget,rstExDirective + +syn match rstExplicitMarkup '^\.\.\_s' + \ nextgroup=@rstDirectives,rstComment,rstSubstitutionDefinition + +let s:ReferenceName = '[[:alnum:]]\+\%([_.-][[:alnum:]]\+\)*' + +syn keyword rstTodo contained FIXME TODO XXX NOTE + +execute 'syn region rstComment contained' . + \ ' start=/.*/' + \ ' end=/^\s\@!/ contains=rstTodo' + +execute 'syn region rstFootnote contained matchgroup=rstDirective' . + \ ' start=+\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]\_s+' . + \ ' skip=+^$+' . + \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell' + +execute 'syn region rstCitation contained matchgroup=rstDirective' . + \ ' start=+\[' . s:ReferenceName . '\]\_s+' . + \ ' skip=+^$+' . + \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell' + +syn region rstHyperlinkTarget contained matchgroup=rstDirective + \ start='_\%(_\|[^:\\]*\%(\\.[^:\\]*\)*\):\_s' skip=+^$+ end=+^\s\@!+ + +syn region rstHyperlinkTarget contained matchgroup=rstDirective + \ start='_`[^`\\]*\%(\\.[^`\\]*\)*`:\_s' skip=+^$+ end=+^\s\@!+ + +syn region rstHyperlinkTarget matchgroup=rstDirective + \ start=+^__\_s+ skip=+^$+ end=+^\s\@!+ + +execute 'syn region rstExDirective contained matchgroup=rstDirective' . + \ ' start=+' . s:ReferenceName . '::\_s+' . + \ ' skip=+^$+' . + \ ' end=+^\s\@!+ contains=@rstCruft' + +execute 'syn match rstSubstitutionDefinition contained' . + \ ' /|' . s:ReferenceName . '|\_s\+/ nextgroup=@rstDirectives' + +function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_right) + execute 'syn region rst' . a:name . + \ ' start=+' . a:char_left . '\zs' . a:start . + \ '\ze[^[:space:]' . a:char_right . a:start[strlen(a:start) - 1] . ']+' . + \ a:middle . + \ ' end=+\S' . a:end . '\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+' +endfunction + +function! s:DefineInlineMarkup(name, start, middle, end) + let middle = a:middle != "" ? + \ (' skip=+\\\\\|\\' . a:middle . '+') : + \ "" + + call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, "'", "'") + call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '"', '"') + call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '(', ')') + call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\[', '\]') + call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '{', '}') + call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '<', '>') + + call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\%(^\|\s\|[/:]\)', '') + + execute 'syn match rst' . a:name . + \ ' +\%(^\|\s\|[''"([{/:.,;!?\\-]\)+' + + execute 'hi def link rst' . a:name . 'Delimiter' . ' rst' . a:name +endfunction + +call s:DefineInlineMarkup('Emphasis', '\*', '\*', '\*') +call s:DefineInlineMarkup('StrongEmphasis', '\*\*', '\*', '\*\*') +call s:DefineInlineMarkup('InterpretedTextOrHyperlinkReference', '`', '`', '`_\{0,2}') +call s:DefineInlineMarkup('InlineLiteral', '``', "", '``') +call s:DefineInlineMarkup('SubstitutionReference', '|', '|', '|_\{0,2}') +call s:DefineInlineMarkup('InlineInternalTargets', '_`', '`', '`') + +" TODO: Can’t remember why these two can’t be defined like the ones above. +execute 'syn match rstFootnoteReference contains=@NoSpell' . + \ ' +\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]_+' + +execute 'syn match rstCitationReference contains=@NoSpell' . + \ ' +\[' . s:ReferenceName . '\]_\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+' + +execute 'syn match rstHyperlinkReference' . + \ ' /\<' . s:ReferenceName . '__\=\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)/' + +syn match rstStandaloneHyperlink contains=@NoSpell + \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]" + +syn region rstCodeBlock contained matchgroup=rstDirective + \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s+ + \ skip=+^$+ + \ end=+^\s\@!+ + \ contains=@NoSpell +syn cluster rstDirectives add=rstCodeBlock + +if !exists('g:rst_syntax_code_list') + let g:rst_syntax_code_list = ['vim', 'java', 'cpp', 'lisp', 'php', 'python', 'perl'] +endif + +for code in g:rst_syntax_code_list + unlet! b:current_syntax + exe 'syn include @rst'.code.' syntax/'.code.'.vim' + exe 'syn region rstDirective'.code.' matchgroup=rstDirective fold ' + \.'start=#\%(sourcecode\|code\%(-block\)\=\)::\s\+'.code.'\s*$# ' + \.'skip=#^$# ' + \.'end=#^\s\@!# contains=@NoSpell,@rst'.code + exe 'syn cluster rstDirectives add=rstDirective'.code +endfor + +" TODO: Use better syncing. +syn sync minlines=50 linebreaks=2 + +hi def link rstTodo Todo +hi def link rstComment Comment +hi def link rstSections Title +hi def link rstTransition rstSections +hi def link rstLiteralBlock String +hi def link rstQuotedLiteralBlock String +hi def link rstDoctestBlock PreProc +hi def link rstTableLines rstDelimiter +hi def link rstSimpleTableLines rstTableLines +hi def link rstExplicitMarkup rstDirective +hi def link rstDirective Keyword +hi def link rstFootnote String +hi def link rstCitation String +hi def link rstHyperlinkTarget String +hi def link rstExDirective String +hi def link rstSubstitutionDefinition rstDirective +hi def link rstDelimiter Delimiter +" TODO: I dunno... +hi def rstEmphasis term=italic cterm=italic gui=italic +hi def link rstStrongEmphasis Special +"term=bold cterm=bold gui=bold +hi def link rstInterpretedTextOrHyperlinkReference Identifier +hi def link rstInlineLiteral String +hi def link rstSubstitutionReference PreProc +hi def link rstInlineInternalTargets Identifier +hi def link rstFootnoteReference Identifier +hi def link rstCitationReference Identifier +hi def link rstHyperLinkReference Identifier +hi def link rstStandaloneHyperlink Identifier +hi def link rstCodeBlock String + +let b:current_syntax = "rst" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/rtf.vim b/share/vim/vim74/syntax/rtf.vim similarity index 100% rename from share/vim/vim73/syntax/rtf.vim rename to share/vim/vim74/syntax/rtf.vim diff --git a/share/vim/vim74/syntax/ruby.vim b/share/vim/vim74/syntax/ruby.vim new file mode 100644 index 00000000..28f553de --- /dev/null +++ b/share/vim/vim74/syntax/ruby.vim @@ -0,0 +1,371 @@ +" Vim syntax file +" Language: Ruby +" Maintainer: Doug Kearns +" URL: https://github.com/vim-ruby/vim-ruby +" Release Coordinator: Doug Kearns +" ---------------------------------------------------------------------------- +" +" Previous Maintainer: Mirko Nasato +" Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN) +" ---------------------------------------------------------------------------- + +if exists("b:current_syntax") + finish +endif + +if has("folding") && exists("ruby_fold") + setlocal foldmethod=syntax +endif + +syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo + +if exists("ruby_space_errors") + if !exists("ruby_no_trail_space_error") + syn match rubySpaceError display excludenl "\s\+$" + endif + if !exists("ruby_no_tab_space_error") + syn match rubySpaceError display " \+\t"me=e-1 + endif +endif + +" Operators +if exists("ruby_operators") + syn match rubyOperator "[~!^&|*/%+-]\|\%(class\s*\)\@\|<=\|\%(<\|\>\|>=\|=\@\|\*\*\|\.\.\.\|\.\.\|::" + syn match rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!=" + syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop +endif + +" Expression Substitution and Backslash Notation +syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display +syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display +syn match rubyQuoteEscape "\\[\\']" contained display + +syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop +syn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable +syn match rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained +syn match rubyInterpolation "#\$\%(-\w\|\W\)" display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable +syn match rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)" display contained +syn region rubyNoInterpolation start="\\#{" end="}" contained +syn match rubyNoInterpolation "\\#{" display contained +syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained +syn match rubyNoInterpolation "\\#\$\W" display contained + +syn match rubyDelimEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE + +syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained +syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained +syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained +syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained + +" These are mostly Oniguruma ready +syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained +syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial +syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline +syn match rubyRegexpCharClass "\\[DdHhSsWw]" contained display +syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained +syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained +syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display +syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display +syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display +syn match rubyRegexpDot "\." contained display +syn match rubyRegexpSpecial "|" contained display +syn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display +syn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display +syn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display +syn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display +syn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display + +syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape +syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets +syn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment + +" Numbers and ASCII Codes +syn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@" display +syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display +syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display +syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display +syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@" display +syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@" display + +" Identifiers +syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent +syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent + +syn match rubyConstant "\%(\%([.@$]\@\|::\)\@=\%(\s*(\)\@!" +syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display +syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display +syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)" +syn match rubySymbol "[]})\"':]\@\|<=\|<\|===\|[=!]=\|[=!]\~\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" +syn match rubySymbol "[]})\"':]\@_,;:!?/.'"@$*\&+0]\)" +syn match rubySymbol "[]})\"':]\@\@!\)\=" +syn match rubySymbol "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1 +syn match rubySymbol "[]})\"':]\@\|{\)\s*\)\@<=|" end="|" oneline display contains=rubyBlockParameter + +syn match rubyInvalidVariable "$[^ A-Za-z_-]" +syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~]# +syn match rubyPredefinedVariable "$\d\+" display +syn match rubyPredefinedVariable "$_\>" display +syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display +syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display +syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display +syn match rubyPredefinedConstant "\%(\%(\.\@\%(\s*(\)\@!" +syn match rubyPredefinedConstant "\%(\%(\.\@\%(\s*(\)\@!" +syn match rubyPredefinedConstant "\%(\%(\.\@\%(\s*(\)\@!" +syn match rubyPredefinedConstant "\%(\%(\.\@\%(\s*(\)\@!" + +" Normal Regular Expression +syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold +syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold + +" Generalized Regular Expression +syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold +syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold +syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold +syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold +syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold + +" Normal String and Shell Command Output +syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial,@Spell fold +syn region rubyString matchgroup=rubyStringDelimiter start="'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape,@Spell fold +syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold + +" Generalized Single Quoted String, Symbol and Array of Strings +syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape +syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape +syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape +syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape +syn region rubyString matchgroup=rubyStringDelimiter start="%q " end=" " skip="\\\\\|\\)" fold +syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)" end="\z1" skip="\\\\\|\\\z1" fold +syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape +syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape +syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape +syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape + +" Generalized Double Quoted String and Array of Strings and Shell Command Output +" Note: %= is not matched here as the beginning of a double quoted string +syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[QWIx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[QWIx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[QWIx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[QWIx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[QWIx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx] " end=" " skip="\\\\\|\\)" contains=@rubyStringSpecial fold + +" Here Document +syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration + +syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter + +" Keywords +" Note: the following keywords have already been defined: +" begin case class def do end for if module unless until while +syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!" +syn match rubyOperator "\[?!]\@!" +syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!" +syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise +syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!" + +" Expensive Mode - match 'end' with the appropriate opening keyword for syntax +" based folding and special highlighting of module/class/method definitions +if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive") + syn match rubyDefine "\" nextgroup=rubyAliasDeclaration skipwhite skipnl + syn match rubyDefine "\" nextgroup=rubyMethodDeclaration skipwhite skipnl + syn match rubyDefine "\" nextgroup=rubyFunction skipwhite skipnl + syn match rubyClass "\" nextgroup=rubyClassDeclaration skipwhite skipnl + syn match rubyModule "\" nextgroup=rubyModuleDeclaration skipwhite skipnl + + syn region rubyMethodBlock start="\" matchgroup=rubyDefine end="\%(\" contains=ALLBUT,@rubyNotTop fold + syn region rubyBlock start="\" matchgroup=rubyClass end="\" contains=ALLBUT,@rubyNotTop fold + syn region rubyBlock start="\" matchgroup=rubyModule end="\" contains=ALLBUT,@rubyNotTop fold + + " modifiers + syn match rubyConditionalModifier "\<\%(if\|unless\)\>" display + syn match rubyRepeatModifier "\<\%(while\|until\)\>" display + + syn region rubyDoBlock matchgroup=rubyControl start="\" end="\" contains=ALLBUT,@rubyNotTop fold + " curly bracket block or hash literal + syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop fold + syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@" end="\" contains=ALLBUT,@rubyNotTop fold + syn region rubyCaseExpression matchgroup=rubyConditional start="\" end="\" contains=ALLBUT,@rubyNotTop fold + syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" end="\%(\%(\%(\.\@" contains=ALLBUT,@rubyNotTop fold + + syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression + syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression + + syn match rubyExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression + syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock + + " statements with optional 'do' + syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" matchgroup=rubyOptionalDo end="\%(\\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop + syn region rubyRepeatExpression start="\[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" matchgroup=rubyRepeat end="\" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold + + if !exists("ruby_minlines") + let ruby_minlines = 500 + endif + exec "syn sync minlines=" . ruby_minlines + +else + syn match rubyControl "\[?!]\@!" nextgroup=rubyMethodDeclaration skipwhite skipnl + syn match rubyControl "\[?!]\@!" nextgroup=rubyClassDeclaration skipwhite skipnl + syn match rubyControl "\[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl + syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!" + syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!" +endif + +" Special Methods +if !exists("ruby_no_special_methods") + syn keyword rubyAccess public protected private public_class_method private_class_method public_constant private_constant module_function + " attr is a common variable name + syn match rubyAttribute "\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!" + syn keyword rubyAttribute attr_accessor attr_reader attr_writer + syn match rubyControl "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>[?!]\@!\)" + syn keyword rubyEval eval class_eval instance_eval module_eval + syn keyword rubyException raise fail catch throw + " false positive with 'include?' + syn match rubyInclude "\[?!]\@!" + syn keyword rubyInclude autoload extend load prepend require require_relative + syn keyword rubyKeyword callcc caller lambda proc +endif + +" Comments and Documentation +syn match rubySharpBang "\%^#!.*" display +syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE XXX todo contained +syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell +if !exists("ruby_no_comment_fold") + syn region rubyMultilineComment start="\%(\%(^\s*#.*\n\)\@" transparent contains=NONE +syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE +syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE +syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE + +syn match rubyKeywordAsMethod "\<\%(alias\|begin\|case\|class\|def\|do\|end\)[?!]" transparent contains=NONE +syn match rubyKeywordAsMethod "\<\%(if\|module\|undef\|unless\|until\|while\)[?!]" transparent contains=NONE + +syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE +syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE +syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE +syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE +syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE +syn match rubyKeywordAsMethod "\%(\%(\.\@" transparent contains=NONE + +" __END__ Directive +syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold + +hi def link rubyClass rubyDefine +hi def link rubyModule rubyDefine +hi def link rubyMethodExceptional rubyDefine +hi def link rubyDefine Define +hi def link rubyFunction Function +hi def link rubyConditional Conditional +hi def link rubyConditionalModifier rubyConditional +hi def link rubyExceptional rubyConditional +hi def link rubyRepeat Repeat +hi def link rubyRepeatModifier rubyRepeat +hi def link rubyOptionalDo rubyRepeat +hi def link rubyControl Statement +hi def link rubyInclude Include +hi def link rubyInteger Number +hi def link rubyASCIICode Character +hi def link rubyFloat Float +hi def link rubyBoolean Boolean +hi def link rubyException Exception +if !exists("ruby_no_identifiers") + hi def link rubyIdentifier Identifier +else + hi def link rubyIdentifier NONE +endif +hi def link rubyClassVariable rubyIdentifier +hi def link rubyConstant Type +hi def link rubyGlobalVariable rubyIdentifier +hi def link rubyBlockParameter rubyIdentifier +hi def link rubyInstanceVariable rubyIdentifier +hi def link rubyPredefinedIdentifier rubyIdentifier +hi def link rubyPredefinedConstant rubyPredefinedIdentifier +hi def link rubyPredefinedVariable rubyPredefinedIdentifier +hi def link rubySymbol Constant +hi def link rubyKeyword Keyword +hi def link rubyOperator Operator +hi def link rubyBeginEnd Statement +hi def link rubyAccess Statement +hi def link rubyAttribute Statement +hi def link rubyEval Statement +hi def link rubyPseudoVariable Constant + +hi def link rubyComment Comment +hi def link rubyData Comment +hi def link rubyDataDirective Delimiter +hi def link rubyDocumentation Comment +hi def link rubyTodo Todo + +hi def link rubyQuoteEscape rubyStringEscape +hi def link rubyStringEscape Special +hi def link rubyInterpolationDelimiter Delimiter +hi def link rubyNoInterpolation rubyString +hi def link rubySharpBang PreProc +hi def link rubyRegexpDelimiter rubyStringDelimiter +hi def link rubySymbolDelimiter rubyStringDelimiter +hi def link rubyStringDelimiter Delimiter +hi def link rubyHeredoc rubyString +hi def link rubyString String +hi def link rubyRegexpEscape rubyRegexpSpecial +hi def link rubyRegexpQuantifier rubyRegexpSpecial +hi def link rubyRegexpAnchor rubyRegexpSpecial +hi def link rubyRegexpDot rubyRegexpCharClass +hi def link rubyRegexpCharClass rubyRegexpSpecial +hi def link rubyRegexpSpecial Special +hi def link rubyRegexpComment Comment +hi def link rubyRegexp rubyString + +hi def link rubyInvalidVariable Error +hi def link rubyError Error +hi def link rubySpaceError rubyError + +let b:current_syntax = "ruby" + +" vim: nowrap sw=2 sts=2 ts=8 noet: diff --git a/share/vim/vim73/syntax/samba.vim b/share/vim/vim74/syntax/samba.vim similarity index 100% rename from share/vim/vim73/syntax/samba.vim rename to share/vim/vim74/syntax/samba.vim diff --git a/share/vim/vim74/syntax/sas.vim b/share/vim/vim74/syntax/sas.vim new file mode 100644 index 00000000..dc70e1fd --- /dev/null +++ b/share/vim/vim74/syntax/sas.vim @@ -0,0 +1,284 @@ +" Vim syntax file +" Language: SAS +" Maintainer: James Kidd +" Last Change: 2012 Apr 20 +" Corrected bug causing some keywords to appear as strings instead +" 18 Jul 2008 by Paulo Tanimoto +" Fixed comments with * taking multiple lines. +" Fixed highlighting of macro keywords. +" Added words to cases that didn't fit anywhere. +" 02 Jun 2003 +" Added highlighting for additional keywords and such; +" Attempted to match SAS default syntax colors; +" Changed syncing so it doesn't lose colors on large blocks; +" Much thanks to Bob Heckel for knowledgeable tweaking. +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case ignore + +syn region sasString start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn region sasString start=+'+ skip=+\\\\\|\\"+ end=+'+ + +" Want region from 'cards;' to ';' to be captured (Bob Heckel) +syn region sasCards start="^\s*CARDS.*" end="^\s*;\s*$" +syn region sasCards start="^\s*DATALINES.*" end="^\s*;\s*$" + +syn match sasNumber "-\=\<\d*\.\=[0-9_]\>" + +" Block comment +syn region sasComment start="/\*" end="\*/" contains=sasTodo + +" Ignore misleading //JCL SYNTAX... (Bob Heckel) +syn region sasComment start="[^/][^/]/\*" end="\*/" contains=sasTodo + +" Previous code for comments was written by Bob Heckel +" Comments with * may take multiple lines (Paulo Tanimoto) +syn region sasComment start=";\s*\*"hs=s+1 end=";" contains=sasTodo + +" Comments with * starting after a semicolon (Paulo Tanimoto) +syn region sasComment start="^\s*\*" end=";" contains=sasTodo + +" This line defines macro variables in code. HiLink at end of file +" defines the color scheme. Begin region with ampersand and end with +" any non-word character offset by -1; put ampersand in the skip list +" just in case it is used to concatenate macro variable values. + +" Thanks to ronald höllwarth for this fix to an intra-versioning +" problem with this little feature + +if version < 600 + syn region sasMacroVar start="\&" skip="[_&]" end="\W"he=e-1 +else " for the older Vim's just do it their way ... + syn region sasMacroVar start="&" skip="[_&]" end="\W"he=e-1 +endif + + +" I dont think specific PROCs need to be listed if use this line (Bob Heckel). +syn match sasProc "^\s*PROC \w\+" +syn keyword sasStep RUN QUIT DATA + + +" Base SAS Procs - version 8.1 + +syn keyword sasConditional DO ELSE END IF THEN UNTIL WHILE + +syn keyword sasStatement ABORT ARRAY ATTRIB BY CALL CARDS CARDS4 CATNAME +syn keyword sasStatement CONTINUE DATALINES DATALINES4 DELETE DISPLAY +syn keyword sasStatement DM DROP ENDSAS ERROR FILE FILENAME FOOTNOTE +syn keyword sasStatement FORMAT GOTO INFILE INFORMAT INPUT KEEP +syn keyword sasStatement LABEL LEAVE LENGTH LIBNAME LINK LIST LOSTCARD +syn keyword sasStatement MERGE MISSING MODIFY OPTIONS OUTPUT PAGE +syn keyword sasStatement PUT REDIRECT REMOVE RENAME REPLACE RETAIN +syn keyword sasStatement RETURN SELECT SET SKIP STARTSAS STOP TITLE +syn keyword sasStatement UPDATE WAITSAS WHERE WINDOW X SYSTASK + +" Keywords that are used in Proc SQL +" I left them as statements because SAS's enhanced editor highlights +" them the same as normal statements used in data steps (Jim Kidd) + +syn keyword sasStatement ADD AND ALTER AS CASCADE CHECK CREATE +syn keyword sasStatement DELETE DESCRIBE DISTINCT DROP FOREIGN +syn keyword sasStatement FROM GROUP HAVING INDEX INSERT INTO IN +syn keyword sasStatement KEY LIKE MESSAGE MODIFY MSGTYPE NOT +syn keyword sasStatement NULL ON OR ORDER PRIMARY REFERENCES +syn keyword sasStatement RESET RESTRICT SELECT SET TABLE +syn keyword sasStatement UNIQUE UPDATE VALIDATE VIEW WHERE + +" Match declarations have to appear one per line (Paulo Tanimoto) +syn match sasStatement "FOOTNOTE\d" +syn match sasStatement "TITLE\d" + +" Match declarations have to appear one per line (Paulo Tanimoto) +syn match sasMacro "%BQUOTE" +syn match sasMacro "%NRBQUOTE" +syn match sasMacro "%CMPRES" +syn match sasMacro "%QCMPRES" +syn match sasMacro "%COMPSTOR" +syn match sasMacro "%DATATYP" +syn match sasMacro "%DISPLAY" +syn match sasMacro "%DO" +syn match sasMacro "%ELSE" +syn match sasMacro "%END" +syn match sasMacro "%EVAL" +syn match sasMacro "%GLOBAL" +syn match sasMacro "%GOTO" +syn match sasMacro "%IF" +syn match sasMacro "%INDEX" +syn match sasMacro "%INPUT" +syn match sasMacro "%KEYDEF" +syn match sasMacro "%LABEL" +syn match sasMacro "%LEFT" +syn match sasMacro "%LENGTH" +syn match sasMacro "%LET" +syn match sasMacro "%LOCAL" +syn match sasMacro "%LOWCASE" +syn match sasMacro "%MACRO" +syn match sasMacro "%MEND" +syn match sasMacro "%NRBQUOTE" +syn match sasMacro "%NRQUOTE" +syn match sasMacro "%NRSTR" +syn match sasMacro "%PUT" +syn match sasMacro "%QCMPRES" +syn match sasMacro "%QLEFT" +syn match sasMacro "%QLOWCASE" +syn match sasMacro "%QSCAN" +syn match sasMacro "%QSUBSTR" +syn match sasMacro "%QSYSFUNC" +syn match sasMacro "%QTRIM" +syn match sasMacro "%QUOTE" +syn match sasMacro "%QUPCASE" +syn match sasMacro "%SCAN" +syn match sasMacro "%STR" +syn match sasMacro "%SUBSTR" +syn match sasMacro "%SUPERQ" +syn match sasMacro "%SYSCALL" +syn match sasMacro "%SYSEVALF" +syn match sasMacro "%SYSEXEC" +syn match sasMacro "%SYSFUNC" +syn match sasMacro "%SYSGET" +syn match sasMacro "%SYSLPUT" +syn match sasMacro "%SYSPROD" +syn match sasMacro "%SYSRC" +syn match sasMacro "%SYSRPUT" +syn match sasMacro "%THEN" +syn match sasMacro "%TO" +syn match sasMacro "%TRIM" +syn match sasMacro "%UNQUOTE" +syn match sasMacro "%UNTIL" +syn match sasMacro "%UPCASE" +syn match sasMacro "%VERIFY" +syn match sasMacro "%WHILE" +syn match sasMacro "%WINDOW" + +" SAS Functions + +syn keyword sasFunction ABS ADDR AIRY ARCOS ARSIN ATAN ATTRC ATTRN +syn keyword sasFunction BAND BETAINV BLSHIFT BNOT BOR BRSHIFT BXOR +syn keyword sasFunction BYTE CDF CEIL CEXIST CINV CLOSE CNONCT COLLATE +syn keyword sasFunction COMPBL COMPOUND COMPRESS COS COSH CSS CUROBS +syn keyword sasFunction CV DACCDB DACCDBSL DACCSL DACCSYD DACCTAB +syn keyword sasFunction DAIRY DATE DATEJUL DATEPART DATETIME DAY +syn keyword sasFunction DCLOSE DEPDB DEPDBSL DEPDBSL DEPSL DEPSL +syn keyword sasFunction DEPSYD DEPSYD DEPTAB DEPTAB DEQUOTE DHMS +syn keyword sasFunction DIF DIGAMMA DIM DINFO DNUM DOPEN DOPTNAME +syn keyword sasFunction DOPTNUM DREAD DROPNOTE DSNAME ERF ERFC EXIST +syn keyword sasFunction EXP FAPPEND FCLOSE FCOL FDELETE FETCH FETCHOBS +syn keyword sasFunction FEXIST FGET FILEEXIST FILENAME FILEREF FINFO +syn keyword sasFunction FINV FIPNAME FIPNAMEL FIPSTATE FLOOR FNONCT +syn keyword sasFunction FNOTE FOPEN FOPTNAME FOPTNUM FPOINT FPOS +syn keyword sasFunction FPUT FREAD FREWIND FRLEN FSEP FUZZ FWRITE +syn keyword sasFunction GAMINV GAMMA GETOPTION GETVARC GETVARN HBOUND +syn keyword sasFunction HMS HOSTHELP HOUR IBESSEL INDEX INDEXC +syn keyword sasFunction INDEXW INPUT INPUTC INPUTN INT INTCK INTNX +syn keyword sasFunction INTRR IRR JBESSEL JULDATE KURTOSIS LAG LBOUND +syn keyword sasFunction LEFT LENGTH LGAMMA LIBNAME LIBREF LOG LOG10 +syn keyword sasFunction LOG2 LOGPDF LOGPMF LOGSDF LOWCASE MAX MDY +syn keyword sasFunction MEAN MIN MINUTE MOD MONTH MOPEN MORT N +syn keyword sasFunction NETPV NMISS NORMAL NOTE NPV OPEN ORDINAL +syn keyword sasFunction PATHNAME PDF PEEK PEEKC PMF POINT POISSON POKE +syn keyword sasFunction PROBBETA PROBBNML PROBCHI PROBF PROBGAM +syn keyword sasFunction PROBHYPR PROBIT PROBNEGB PROBNORM PROBT PUT +syn keyword sasFunction PUTC PUTN QTR QUOTE RANBIN RANCAU RANEXP +syn keyword sasFunction RANGAM RANGE RANK RANNOR RANPOI RANTBL RANTRI +syn keyword sasFunction RANUNI REPEAT RESOLVE REVERSE REWIND RIGHT +syn keyword sasFunction ROUND SAVING SCAN SDF SECOND SIGN SIN SINH +syn keyword sasFunction SKEWNESS SOUNDEX SPEDIS SQRT STD STDERR STFIPS +syn keyword sasFunction STNAME STNAMEL SUBSTR SUM SYMGET SYSGET SYSMSG +syn keyword sasFunction SYSPROD SYSRC SYSTEM TAN TANH TIME TIMEPART +syn keyword sasFunction TINV TNONCT TODAY TRANSLATE TRANWRD TRIGAMMA +syn keyword sasFunction TRIM TRIMN TRUNC UNIFORM UPCASE USS VAR +syn keyword sasFunction VARFMT VARINFMT VARLABEL VARLEN VARNAME +syn keyword sasFunction VARNUM VARRAY VARRAYX VARTYPE VERIFY VFORMAT +syn keyword sasFunction VFORMATD VFORMATDX VFORMATN VFORMATNX VFORMATW +syn keyword sasFunction VFORMATWX VFORMATX VINARRAY VINARRAYX VINFORMAT +syn keyword sasFunction VINFORMATD VINFORMATDX VINFORMATN VINFORMATNX +syn keyword sasFunction VINFORMATW VINFORMATWX VINFORMATX VLABEL +syn keyword sasFunction VLABELX VLENGTH VLENGTHX VNAME VNAMEX VTYPE +syn keyword sasFunction VTYPEX WEEKDAY YEAR YYQ ZIPFIPS ZIPNAME ZIPNAMEL +syn keyword sasFunction ZIPSTATE + +" Handy settings for using vim with log files +syn keyword sasLogMsg NOTE +syn keyword sasWarnMsg WARNING +syn keyword sasErrMsg ERROR + +" Always contained in a comment (Bob Heckel) +syn keyword sasTodo TODO TBD FIXME contained + +" These don't fit anywhere else (Bob Heckel). +" Added others that were missing. +syn keyword sasUnderscore _ALL_ _AUTOMATIC_ _CHARACTER_ _INFILE_ _N_ _NAME_ _NULL_ _NUMERIC_ _USER_ _WEBOUT_ + +" End of SAS Functions + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet + +if version >= 508 || !exists("did_sas_syntax_inits") + if version < 508 + let did_sas_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " Default sas enhanced editor color syntax + hi sComment term=bold cterm=NONE ctermfg=Green ctermbg=Black gui=NONE guifg=DarkGreen guibg=White + hi sCard term=bold cterm=NONE ctermfg=Black ctermbg=Yellow gui=NONE guifg=Black guibg=LightYellow + hi sDate_Time term=NONE cterm=bold ctermfg=Green ctermbg=Black gui=bold guifg=SeaGreen guibg=White + hi sKeyword term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=NONE guifg=Blue guibg=White + hi sFmtInfmt term=NONE cterm=NONE ctermfg=LightGreen ctermbg=Black gui=NONE guifg=SeaGreen guibg=White + hi sString term=NONE cterm=NONE ctermfg=Magenta ctermbg=Black gui=NONE guifg=Purple guibg=White + hi sText term=NONE cterm=NONE ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White + hi sNumber term=NONE cterm=bold ctermfg=Green ctermbg=Black gui=bold guifg=SeaGreen guibg=White + hi sProc term=NONE cterm=bold ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White + hi sSection term=NONE cterm=bold ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White + hi mDefine term=NONE cterm=bold ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White + hi mKeyword term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=NONE guifg=Blue guibg=White + hi mReference term=NONE cterm=bold ctermfg=White ctermbg=Black gui=bold guifg=Blue guibg=White + hi mSection term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White + hi mText term=NONE cterm=NONE ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White + +" Colors that closely match SAS log colors for default color scheme + hi lError term=NONE cterm=NONE ctermfg=Red ctermbg=Black gui=none guifg=Red guibg=White + hi lWarning term=NONE cterm=NONE ctermfg=Green ctermbg=Black gui=none guifg=Green guibg=White + hi lNote term=NONE cterm=NONE ctermfg=Cyan ctermbg=Black gui=none guifg=Blue guibg=White + + + " Special hilighting for the SAS proc section + + HiLink sasComment sComment + HiLink sasConditional sKeyword + HiLink sasStep sSection + HiLink sasFunction sKeyword + HiLink sasMacro mKeyword + HiLink sasMacroVar NonText + HiLink sasNumber sNumber + HiLink sasStatement sKeyword + HiLink sasString sString + HiLink sasProc sProc + " (Bob Heckel) + HiLink sasTodo Todo + HiLink sasErrMsg lError + HiLink sasWarnMsg lWarning + HiLink sasLogMsg lNote + HiLink sasCards sCard + " (Bob Heckel) + HiLink sasUnderscore PreProc + delcommand HiLink +endif + +" Syncronize from beginning to keep large blocks from losing +" syntax coloring while moving through code. +syn sync fromstart + +let b:current_syntax = "sas" + +" vim: ts=8 diff --git a/share/vim/vim74/syntax/sass.vim b/share/vim/vim74/syntax/sass.vim new file mode 100644 index 00000000..2ea07226 --- /dev/null +++ b/share/vim/vim74/syntax/sass.vim @@ -0,0 +1,98 @@ +" Vim syntax file +" Language: Sass +" Maintainer: Tim Pope +" Filenames: *.sass +" Last Change: 2013 May 30 + +if exists("b:current_syntax") + finish +endif + +runtime! syntax/css.vim + +syn case ignore + +syn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp +syn cluster sassCssAttributes contains=css.*Attr,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp + +syn region sassDefinition matchgroup=cssBraces start="{" end="}" contains=TOP + +syn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition +syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute +syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute +syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation +syn match sassDefault "!default\>" contained +syn match sassVariable "!\%(important\>\|default\>\)\@![[:alnum:]_-]\+" +syn match sassVariable "$[[:alnum:]_-]\+" +syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite +syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite + +syn match sassFunction "\<\%(rgb\|rgba\|red\|green\|blue\|mix\)\>(\@=" contained +syn match sassFunction "\<\%(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\|lighten\|darken\|saturate\|desaturate\|grayscale\|complement\)\>(\@=" contained +syn match sassFunction "\<\%(alpha\|opacity\|rgba\|opacify\|fade-in\|transparentize\|fade-out\)\>(\@=" contained +syn match sassFunction "\<\%(unquote\|quote\)\>(\@=" contained +syn match sassFunction "\<\%(percentage\|round\|ceil\|floor\|abs\)\>(\@=" contained +syn match sassFunction "\<\%(type-of\|unit\|unitless\|comparable\)\>(\@=" contained + +syn region sassInterpolation matchgroup=sassInterpolationDelimiter start="#{" end="}" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,cssPseudoClass,sassProperty + +syn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute +syn match sassMixin "^=" nextgroup=sassMixinName skipwhite +syn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName skipwhite +syn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName +syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite +syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend" +syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassMixinName skipwhite + +syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute +syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function" nextgroup=sassFunctionName skipwhite +syn match sassReturn "\%([{};]\s*\|^\s*\)\@<=@return" + +syn match sassEscape "^\s*\zs\\" +syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId +syn match sassId "[[:alnum:]_-]\+" contained +syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass +syn match sassClass "[[:alnum:]_-]\+" contained +syn match sassAmpersand "&" + +" TODO: Attribute namespaces +" TODO: Arithmetic (including strings and concatenation) + +syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType +syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction +syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction +syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\|each\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction +syn keyword sassFor from to through in contained + +syn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained +syn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell +syn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell + +hi def link sassCssComment sassComment +hi def link sassComment Comment +hi def link sassDefault cssImportant +hi def link sassVariable Identifier +hi def link sassFunction Function +hi def link sassMixing PreProc +hi def link sassMixin PreProc +hi def link sassPlaceholder PreProc +hi def link sassExtend PreProc +hi def link sassFunctionDecl PreProc +hi def link sassReturn PreProc +hi def link sassTodo Todo +hi def link sassInclude Include +hi def link sassDebug sassControl +hi def link sassWarn sassControl +hi def link sassControl PreProc +hi def link sassFor PreProc +hi def link sassEscape Special +hi def link sassIdChar Special +hi def link sassClassChar Special +hi def link sassInterpolationDelimiter Delimiter +hi def link sassAmpersand Character +hi def link sassId Identifier +hi def link sassClass Type + +let b:current_syntax = "sass" + +" vim:set sw=2: diff --git a/share/vim/vim73/syntax/sather.vim b/share/vim/vim74/syntax/sather.vim similarity index 100% rename from share/vim/vim73/syntax/sather.vim rename to share/vim/vim74/syntax/sather.vim diff --git a/share/vim/vim74/syntax/scheme.vim b/share/vim/vim74/syntax/scheme.vim new file mode 100644 index 00000000..a210b0c7 --- /dev/null +++ b/share/vim/vim74/syntax/scheme.vim @@ -0,0 +1,330 @@ +" Vim syntax file +" Language: Scheme (R5RS + some R6RS extras) +" Last Change: 2012 May 13 +" Maintainer: Sergey Khorev +" Original author: Dirk van Deun + +" This script incorrectly recognizes some junk input as numerals: +" parsing the complete system of Scheme numerals using the pattern +" language is practically impossible: I did a lax approximation. + +" MzScheme extensions can be activated with setting is_mzscheme variable + +" Suggestions and bug reports are solicited by the author. + +" Initializing: + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn case ignore + +" Fascist highlighting: everything that doesn't fit the rules is an error... + +syn match schemeError ![^ \t()\[\]";]*! +syn match schemeError ")" + +" Quoted and backquoted stuff + +syn region schemeQuoted matchgroup=Delimiter start="['`]" end=![ \t()\[\]";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc + +syn region schemeQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc +syn region schemeQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc + +syn region schemeStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc +syn region schemeStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc + +" Popular Scheme extension: +" using [] as well as () +syn region schemeStrucRestricted matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc +syn region schemeStrucRestricted matchgroup=Delimiter start="#\[" matchgroup=Delimiter end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc + +syn region schemeUnquote matchgroup=Delimiter start="," end=![ \t\[\]()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc +syn region schemeUnquote matchgroup=Delimiter start=",@" end=![ \t\[\]()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc + +syn region schemeUnquote matchgroup=Delimiter start=",(" end=")" contains=ALL +syn region schemeUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALL + +syn region schemeUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc +syn region schemeUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc + +syn region schemeUnquote matchgroup=Delimiter start=",\[" end="\]" contains=ALL +syn region schemeUnquote matchgroup=Delimiter start=",@\[" end="\]" contains=ALL + +syn region schemeUnquote matchgroup=Delimiter start=",#\[" end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc +syn region schemeUnquote matchgroup=Delimiter start=",@#\[" end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc + +" R5RS Scheme Functions and Syntax: + +if version < 600 + set iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_ +else + setlocal iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_ +endif + +syn keyword schemeSyntax lambda and or if cond case define let let* letrec +syn keyword schemeSyntax begin do delay set! else => +syn keyword schemeSyntax quote quasiquote unquote unquote-splicing +syn keyword schemeSyntax define-syntax let-syntax letrec-syntax syntax-rules +" R6RS +syn keyword schemeSyntax define-record-type fields protocol + +syn keyword schemeFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car! +syn keyword schemeFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr +syn keyword schemeFunc cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr +syn keyword schemeFunc cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr +syn keyword schemeFunc cddaar cddadr cdddar cddddr null? list? list length +syn keyword schemeFunc append reverse list-ref memq memv member assq assv assoc +syn keyword schemeFunc symbol? symbol->string string->symbol number? complex? +syn keyword schemeFunc real? rational? integer? exact? inexact? = < > <= >= +syn keyword schemeFunc zero? positive? negative? odd? even? max min + * - / abs +syn keyword schemeFunc quotient remainder modulo gcd lcm numerator denominator +syn keyword schemeFunc floor ceiling truncate round rationalize exp log sin cos +syn keyword schemeFunc tan asin acos atan sqrt expt make-rectangular make-polar +syn keyword schemeFunc real-part imag-part magnitude angle exact->inexact +syn keyword schemeFunc inexact->exact number->string string->number char=? +syn keyword schemeFunc char-ci=? char? char-ci>? char<=? +syn keyword schemeFunc char-ci<=? char>=? char-ci>=? char-alphabetic? char? +syn keyword schemeFunc char-numeric? char-whitespace? char-upper-case? +syn keyword schemeFunc char-lower-case? +syn keyword schemeFunc char->integer integer->char char-upcase char-downcase +syn keyword schemeFunc string? make-string string string-length string-ref +syn keyword schemeFunc string-set! string=? string-ci=? string? string-ci>? string<=? string-ci<=? string>=? +syn keyword schemeFunc string-ci>=? substring string-append vector? make-vector +syn keyword schemeFunc vector vector-length vector-ref vector-set! procedure? +syn keyword schemeFunc apply map for-each call-with-current-continuation +syn keyword schemeFunc call-with-input-file call-with-output-file input-port? +syn keyword schemeFunc output-port? current-input-port current-output-port +syn keyword schemeFunc open-input-file open-output-file close-input-port +syn keyword schemeFunc close-output-port eof-object? read read-char peek-char +syn keyword schemeFunc write display newline write-char call/cc +syn keyword schemeFunc list-tail string->list list->string string-copy +syn keyword schemeFunc string-fill! vector->list list->vector vector-fill! +syn keyword schemeFunc force with-input-from-file with-output-to-file +syn keyword schemeFunc char-ready? load transcript-on transcript-off eval +syn keyword schemeFunc dynamic-wind port? values call-with-values +syn keyword schemeFunc scheme-report-environment null-environment +syn keyword schemeFunc interaction-environment +" R6RS +syn keyword schemeFunc make-eq-hashtable make-eqv-hashtable make-hashtable +syn keyword schemeFunc hashtable? hashtable-size hashtable-ref hashtable-set! +syn keyword schemeFunc hashtable-delete! hashtable-contains? hashtable-update! +syn keyword schemeFunc hashtable-copy hashtable-clear! hashtable-keys +syn keyword schemeFunc hashtable-entries hashtable-equivalence-function hashtable-hash-function +syn keyword schemeFunc hashtable-mutable? equal-hash string-hash string-ci-hash symbol-hash +syn keyword schemeFunc find for-all exists filter partition fold-left fold-right +syn keyword schemeFunc remp remove remv remq memp assp cons* + +" ... so that a single + or -, inside a quoted context, would not be +" interpreted as a number (outside such contexts, it's a schemeFunc) + +syn match schemeDelimiter !\.[ \t\[\]()";]!me=e-1 +syn match schemeDelimiter !\.$! +" ... and a single dot is not a number but a delimiter + +" This keeps all other stuff unhighlighted, except *stuff* and : + +syn match schemeOther ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*, +syn match schemeError ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, + +syn match schemeOther "\.\.\." +syn match schemeError !\.\.\.[^ \t\[\]()";]\+! +" ... a special identifier + +syn match schemeConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*[ \t\[\]()";],me=e-1 +syn match schemeConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*$, +syn match schemeError ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, + +syn match schemeConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1 +syn match schemeConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$, +syn match schemeError ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, + +" Non-quoted lists, and strings: + +syn region schemeStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL +syn region schemeStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL + +syn region schemeStruc matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=ALL +syn region schemeStruc matchgroup=Delimiter start="#\[" matchgroup=Delimiter end="\]" contains=ALL + +" Simple literals: +syn region schemeString start=+\%(\\\)\@?^_~0-9+.@#%]\+" + " anything limited by |'s is identifier + syn match schemeOther "|[^|]\+|" + + syn match schemeCharacter "#\\\%(return\|tab\)" + + " Modules require stmt + syn keyword schemeExtSyntax module require dynamic-require lib prefix all-except prefix-all-except rename + " modules provide stmt + syn keyword schemeExtSyntax provide struct all-from all-from-except all-defined all-defined-except + " Other from MzScheme + syn keyword schemeExtSyntax with-handlers when unless instantiate define-struct case-lambda syntax-case + syn keyword schemeExtSyntax free-identifier=? bound-identifier=? module-identifier=? syntax-object->datum + syn keyword schemeExtSyntax datum->syntax-object + syn keyword schemeExtSyntax let-values let*-values letrec-values set!-values fluid-let parameterize begin0 + syn keyword schemeExtSyntax error raise opt-lambda define-values unit unit/sig define-signature + syn keyword schemeExtSyntax invoke-unit/sig define-values/invoke-unit/sig compound-unit/sig import export + syn keyword schemeExtSyntax link syntax quasisyntax unsyntax with-syntax + + syn keyword schemeExtFunc format system-type current-extension-compiler current-extension-linker + syn keyword schemeExtFunc use-standard-linker use-standard-compiler + syn keyword schemeExtFunc find-executable-path append-object-suffix append-extension-suffix + syn keyword schemeExtFunc current-library-collection-paths current-extension-compiler-flags make-parameter + syn keyword schemeExtFunc current-directory build-path normalize-path current-extension-linker-flags + syn keyword schemeExtFunc file-exists? directory-exists? delete-directory/files delete-directory delete-file + syn keyword schemeExtFunc system compile-file system-library-subpath getenv putenv current-standard-link-libraries + syn keyword schemeExtFunc remove* file-size find-files fold-files directory-list shell-execute split-path + syn keyword schemeExtFunc current-error-port process/ports process printf fprintf open-input-string open-output-string + syn keyword schemeExtFunc get-output-string + " exceptions + syn keyword schemeExtFunc exn exn:application:arity exn:application:continuation exn:application:fprintf:mismatch + syn keyword schemeExtFunc exn:application:mismatch exn:application:type exn:application:mismatch exn:break exn:i/o:filesystem exn:i/o:port + syn keyword schemeExtFunc exn:i/o:port:closed exn:i/o:tcp exn:i/o:udp exn:misc exn:misc:application exn:misc:unsupported exn:module exn:read + syn keyword schemeExtFunc exn:read:non-char exn:special-comment exn:syntax exn:thread exn:user exn:variable exn:application:mismatch + syn keyword schemeExtFunc exn? exn:application:arity? exn:application:continuation? exn:application:fprintf:mismatch? exn:application:mismatch? + syn keyword schemeExtFunc exn:application:type? exn:application:mismatch? exn:break? exn:i/o:filesystem? exn:i/o:port? exn:i/o:port:closed? + syn keyword schemeExtFunc exn:i/o:tcp? exn:i/o:udp? exn:misc? exn:misc:application? exn:misc:unsupported? exn:module? exn:read? exn:read:non-char? + syn keyword schemeExtFunc exn:special-comment? exn:syntax? exn:thread? exn:user? exn:variable? exn:application:mismatch? + " Command-line parsing + syn keyword schemeExtFunc command-line current-command-line-arguments once-any help-labels multi once-each + + " syntax quoting, unquoting and quasiquotation + syn region schemeUnquote matchgroup=Delimiter start="#," end=![ \t\[\]()";]!me=e-1 contains=ALL + syn region schemeUnquote matchgroup=Delimiter start="#,@" end=![ \t\[\]()";]!me=e-1 contains=ALL + syn region schemeUnquote matchgroup=Delimiter start="#,(" end=")" contains=ALL + syn region schemeUnquote matchgroup=Delimiter start="#,@(" end=")" contains=ALL + syn region schemeUnquote matchgroup=Delimiter start="#,\[" end="\]" contains=ALL + syn region schemeUnquote matchgroup=Delimiter start="#,@\[" end="\]" contains=ALL + syn region schemeQuoted matchgroup=Delimiter start="#['`]" end=![ \t()\[\]";]!me=e-1 contains=ALL + syn region schemeQuoted matchgroup=Delimiter start="#['`](" matchgroup=Delimiter end=")" contains=ALL +endif + + +if exists("b:is_chicken") || exists("is_chicken") + " multiline comment + syntax region schemeMultilineComment start=/#|/ end=/|#/ contains=@Spell,schemeMultilineComment + + syn match schemeOther "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" + syn match schemeExtSyntax "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" + + syn keyword schemeExtSyntax unit uses declare hide foreign-declare foreign-parse foreign-parse/spec + syn keyword schemeExtSyntax foreign-lambda foreign-lambda* define-external define-macro load-library + syn keyword schemeExtSyntax let-values let*-values letrec-values ->string require-extension + syn keyword schemeExtSyntax let-optionals let-optionals* define-foreign-variable define-record + syn keyword schemeExtSyntax pointer tag-pointer tagged-pointer? define-foreign-type + syn keyword schemeExtSyntax require require-for-syntax cond-expand and-let* receive argc+argv + syn keyword schemeExtSyntax fixnum? fx= fx> fx< fx>= fx<= fxmin fxmax + syn keyword schemeExtFunc ##core#inline ##sys#error ##sys#update-errno + + " here-string + syn region schemeString start=+#<<\s*\z(.*\)+ end=+^\z1$+ contains=@Spell + + if filereadable(expand(":p:h")."/cpp.vim") + unlet! b:current_syntax + syn include @ChickenC :p:h/cpp.vim + syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-declare "+ end=+")\@=+ contains=@ChickenC + syn region ChickenC matchgroup=schemeComment start=+foreign-declare\s*#<<\z(.*\)$+hs=s+15 end=+^\z1$+ contains=@ChickenC + syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse "+ end=+")\@=+ contains=@ChickenC + syn region ChickenC matchgroup=schemeComment start=+foreign-parse\s*#<<\z(.*\)$+hs=s+13 end=+^\z1$+ contains=@ChickenC + syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse/spec "+ end=+")\@=+ contains=@ChickenC + syn region ChickenC matchgroup=schemeComment start=+foreign-parse/spec\s*#<<\z(.*\)$+hs=s+18 end=+^\z1$+ contains=@ChickenC + syn region ChickenC matchgroup=schemeComment start=+#>+ end=+<#+ contains=@ChickenC + syn region ChickenC matchgroup=schemeComment start=+#>?+ end=+<#+ contains=@ChickenC + syn region ChickenC matchgroup=schemeComment start=+#>!+ end=+<#+ contains=@ChickenC + syn region ChickenC matchgroup=schemeComment start=+#>\$+ end=+<#+ contains=@ChickenC + syn region ChickenC matchgroup=schemeComment start=+#>%+ end=+<#+ contains=@ChickenC + endif + + " suggested by Alex Queiroz + syn match schemeExtSyntax "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" + syn region schemeString start=+#<#\s*\z(.*\)+ end=+^\z1$+ contains=@Spell +endif + +" Synchronization and the wrapping up... + +syn sync match matchPlace grouphere NONE "^[^ \t]" +" ... i.e. synchronize on a line that starts at the left margin + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_scheme_syntax_inits") + if version < 508 + let did_scheme_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink schemeSyntax Statement + HiLink schemeFunc Function + + HiLink schemeString String + HiLink schemeCharacter Character + HiLink schemeNumber Number + HiLink schemeBoolean Boolean + + HiLink schemeDelimiter Delimiter + HiLink schemeConstant Constant + + HiLink schemeComment Comment + HiLink schemeMultilineComment Comment + HiLink schemeError Error + + HiLink schemeExtSyntax Type + HiLink schemeExtFunc PreProc + delcommand HiLink +endif + +let b:current_syntax = "scheme" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/scilab.vim b/share/vim/vim74/syntax/scilab.vim similarity index 100% rename from share/vim/vim73/syntax/scilab.vim rename to share/vim/vim74/syntax/scilab.vim diff --git a/share/vim/vim73/syntax/screen.vim b/share/vim/vim74/syntax/screen.vim similarity index 100% rename from share/vim/vim73/syntax/screen.vim rename to share/vim/vim74/syntax/screen.vim diff --git a/share/vim/vim73/syntax/scss.vim b/share/vim/vim74/syntax/scss.vim similarity index 100% rename from share/vim/vim73/syntax/scss.vim rename to share/vim/vim74/syntax/scss.vim diff --git a/share/vim/vim74/syntax/sd.vim b/share/vim/vim74/syntax/sd.vim new file mode 100644 index 00000000..7fa0e044 --- /dev/null +++ b/share/vim/vim74/syntax/sd.vim @@ -0,0 +1,81 @@ +" Language: streaming descriptor file +" Maintainer: Puria Nafisi Azizi (pna) +" License: This file can be redistribued and/or modified under the same terms +" as Vim itself. +" URL: http://netstudent.polito.it/vim_syntax/ +" Last Change: 2012 Feb 03 by Thilo Six + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" Always ignore case +syn case ignore + +" Comments +syn match sdComment /\s*[#;].*$/ + +" IP Adresses +syn cluster sdIPCluster contains=sdIPError,sdIPSpecial +syn match sdIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained +syn match sdIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained +syn match sdIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@sdIPCluster + +" Statements +syn keyword sdStatement AGGREGATE AUDIO_CHANNELS +syn keyword sdStatement BYTE_PER_PCKT BIT_PER_SAMPLE BITRATE +syn keyword sdStatement CLOCK_RATE CODING_TYPE CREATOR +syn match sdStatement /^\s*CODING_TYPE\>/ nextgroup=sdCoding skipwhite +syn match sdStatement /^\s*ENCODING_NAME\>/ nextgroup=sdEncoding skipwhite +syn keyword sdStatement FILE_NAME FRAME_LEN FRAME_RATE FORCE_FRAME_RATE +syn keyword sdStatement LICENSE +syn match sdStatement /^\s*MEDIA_SOURCE\>/ nextgroup=sdSource skipwhite +syn match sdStatement /^\s*MULTICAST\>/ nextgroup=sdIP skipwhite +syn keyword sdStatement PAYLOAD_TYPE PKT_LEN PRIORITY +syn keyword sdStatement SAMPLE_RATE +syn keyword sdStatement TITLE TWIN +syn keyword sdStatement VERIFY + +" Known Options +syn keyword sdEncoding H26L MPV MP2T MP4V-ES +syn keyword sdCoding FRAME SAMPLE +syn keyword sdSource STORED LIVE + +"Specials +syn keyword sdSpecial TRUE FALSE NULL +syn keyword sdDelimiter STREAM STREAM_END +syn match sdError /^search .\{257,}/ + +if version >= 508 || !exists("did_config_syntax_inits") + if version < 508 + let did_config_syntax_inits = 1 + command! -nargs=+ HiLink hi link + else + command! -nargs=+ HiLink hi def link + endif + + HiLink sdIP Number + HiLink sdHostname Type + HiLink sdEncoding Identifier + HiLink sdCoding Identifier + HiLink sdSource Identifier + HiLink sdComment Comment + HiLink sdIPError Error + HiLink sdError Error + HiLink sdStatement Statement + HiLink sdIPSpecial Special + HiLink sdSpecial Special + HiLink sdDelimiter Delimiter + + delcommand HiLink +endif + +let b:current_syntax = "sd" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/sdc.vim b/share/vim/vim74/syntax/sdc.vim similarity index 100% rename from share/vim/vim73/syntax/sdc.vim rename to share/vim/vim74/syntax/sdc.vim diff --git a/share/vim/vim74/syntax/sdl.vim b/share/vim/vim74/syntax/sdl.vim new file mode 100644 index 00000000..b524b722 --- /dev/null +++ b/share/vim/vim74/syntax/sdl.vim @@ -0,0 +1,167 @@ +" Vim syntax file +" Language: SDL +" Maintainer: Michael Piefel +" Last Change: 2 May 2001 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if !exists("sdl_2000") + syntax case ignore +endif + +" A bunch of useful SDL keywords +syn keyword sdlStatement task else nextstate +syn keyword sdlStatement in out with from interface +syn keyword sdlStatement to via env and use +syn keyword sdlStatement process procedure block system service type +syn keyword sdlStatement endprocess endprocedure endblock endsystem +syn keyword sdlStatement package endpackage connection endconnection +syn keyword sdlStatement channel endchannel connect +syn keyword sdlStatement synonym dcl signal gate timer signallist signalset +syn keyword sdlStatement create output set reset call +syn keyword sdlStatement operators literals +syn keyword sdlStatement active alternative any as atleast constants +syn keyword sdlStatement default endalternative endmacro endoperator +syn keyword sdlStatement endselect endsubstructure external +syn keyword sdlStatement if then fi for import macro macrodefinition +syn keyword sdlStatement macroid mod nameclass nodelay not operator or +syn keyword sdlStatement parent provided referenced rem +syn keyword sdlStatement select spelling substructure xor +syn keyword sdlNewState state endstate +syn keyword sdlInput input start stop return none save priority +syn keyword sdlConditional decision enddecision join +syn keyword sdlVirtual virtual redefined finalized adding inherits +syn keyword sdlExported remote exported export + +if !exists("sdl_no_96") + syn keyword sdlStatement all axioms constant endgenerator endrefinement endservice + syn keyword sdlStatement error fpar generator literal map noequality ordering + syn keyword sdlStatement refinement returns revealed reverse service signalroute + syn keyword sdlStatement view viewed + syn keyword sdlExported imported +endif + +if exists("sdl_2000") + syn keyword sdlStatement abstract aggregation association break choice composition + syn keyword sdlStatement continue endmethod handle method + syn keyword sdlStatement ordered private protected public + syn keyword sdlException exceptionhandler endexceptionhandler onexception + syn keyword sdlException catch new raise + " The same in uppercase + syn keyword sdlStatement TASK ELSE NEXTSTATE + syn keyword sdlStatement IN OUT WITH FROM INTERFACE + syn keyword sdlStatement TO VIA ENV AND USE + syn keyword sdlStatement PROCESS PROCEDURE BLOCK SYSTEM SERVICE TYPE + syn keyword sdlStatement ENDPROCESS ENDPROCEDURE ENDBLOCK ENDSYSTEM + syn keyword sdlStatement PACKAGE ENDPACKAGE CONNECTION ENDCONNECTION + syn keyword sdlStatement CHANNEL ENDCHANNEL CONNECT + syn keyword sdlStatement SYNONYM DCL SIGNAL GATE TIMER SIGNALLIST SIGNALSET + syn keyword sdlStatement CREATE OUTPUT SET RESET CALL + syn keyword sdlStatement OPERATORS LITERALS + syn keyword sdlStatement ACTIVE ALTERNATIVE ANY AS ATLEAST CONSTANTS + syn keyword sdlStatement DEFAULT ENDALTERNATIVE ENDMACRO ENDOPERATOR + syn keyword sdlStatement ENDSELECT ENDSUBSTRUCTURE EXTERNAL + syn keyword sdlStatement IF THEN FI FOR IMPORT MACRO MACRODEFINITION + syn keyword sdlStatement MACROID MOD NAMECLASS NODELAY NOT OPERATOR OR + syn keyword sdlStatement PARENT PROVIDED REFERENCED REM + syn keyword sdlStatement SELECT SPELLING SUBSTRUCTURE XOR + syn keyword sdlNewState STATE ENDSTATE + syn keyword sdlInput INPUT START STOP RETURN NONE SAVE PRIORITY + syn keyword sdlConditional DECISION ENDDECISION JOIN + syn keyword sdlVirtual VIRTUAL REDEFINED FINALIZED ADDING INHERITS + syn keyword sdlExported REMOTE EXPORTED EXPORT + + syn keyword sdlStatement ABSTRACT AGGREGATION ASSOCIATION BREAK CHOICE COMPOSITION + syn keyword sdlStatement CONTINUE ENDMETHOD ENDOBJECT ENDVALUE HANDLE METHOD OBJECT + syn keyword sdlStatement ORDERED PRIVATE PROTECTED PUBLIC + syn keyword sdlException EXCEPTIONHANDLER ENDEXCEPTIONHANDLER ONEXCEPTION + syn keyword sdlException CATCH NEW RAISE +endif + +" String and Character contstants +" Highlight special characters (those which have a backslash) differently +syn match sdlSpecial contained "\\\d\d\d\|\\." +syn region sdlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial +syn region sdlString start=+'+ skip=+''+ end=+'+ + +" No, this doesn't happen, I just wanted to scare you. SDL really allows all +" these characters for identifiers; fortunately, keywords manage without them. +" set iskeyword=@,48-57,_,192-214,216-246,248-255,- + +syn region sdlComment start="/\*" end="\*/" +syn region sdlComment start="comment" end=";" +syn region sdlComment start="--" end="--\|$" +syn match sdlCommentError "\*/" + +syn keyword sdlOperator present +syn keyword sdlType integer real natural duration pid boolean time +syn keyword sdlType character charstring ia5string +syn keyword sdlType self now sender offspring +syn keyword sdlStructure asntype endasntype syntype endsyntype struct + +if !exists("sdl_no_96") + syn keyword sdlStructure newtype endnewtype +endif + +if exists("sdl_2000") + syn keyword sdlStructure object endobject value endvalue + " The same in uppercase + syn keyword sdlStructure OBJECT ENDOBJECT VALUE ENDVALUE + syn keyword sdlOperator PRESENT + syn keyword sdlType INTEGER NATURAL DURATION PID BOOLEAN TIME + syn keyword sdlType CHARSTRING IA5STRING + syn keyword sdlType SELF NOW SENDER OFFSPRING + syn keyword sdlStructure ASNTYPE ENDASNTYPE SYNTYPE ENDSYNTYPE STRUCT +endif + +" ASN.1 in SDL +syn case match +syn keyword sdlType SET OF BOOLEAN INTEGER REAL BIT OCTET +syn keyword sdlType SEQUENCE CHOICE +syn keyword sdlType STRING OBJECT IDENTIFIER NULL + +syn sync ccomment sdlComment + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_sdl_syn_inits") + if version < 508 + let did_sdl_syn_inits = 1 + command -nargs=+ HiLink hi link + command -nargs=+ Hi hi + else + command -nargs=+ HiLink hi def link + command -nargs=+ Hi hi def + endif + + HiLink sdlException Label + HiLink sdlConditional sdlStatement + HiLink sdlVirtual sdlStatement + HiLink sdlExported sdlFlag + HiLink sdlCommentError sdlError + HiLink sdlOperator Operator + HiLink sdlStructure sdlType + Hi sdlStatement term=bold ctermfg=4 guifg=Blue + Hi sdlFlag term=bold ctermfg=4 guifg=Blue gui=italic + Hi sdlNewState term=italic ctermfg=2 guifg=Magenta gui=underline + Hi sdlInput term=bold guifg=Red + HiLink sdlType Type + HiLink sdlString String + HiLink sdlComment Comment + HiLink sdlSpecial Special + HiLink sdlError Error + + delcommand HiLink + delcommand Hi +endif + +let b:current_syntax = "sdl" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/sed.vim b/share/vim/vim74/syntax/sed.vim similarity index 100% rename from share/vim/vim73/syntax/sed.vim rename to share/vim/vim74/syntax/sed.vim diff --git a/share/vim/vim74/syntax/sendpr.vim b/share/vim/vim74/syntax/sendpr.vim new file mode 100644 index 00000000..6cf9395f --- /dev/null +++ b/share/vim/vim74/syntax/sendpr.vim @@ -0,0 +1,38 @@ +" Vim syntax file +" Language: FreeBSD send-pr file +" Maintainer: Hendrik Scholz +" Last Change: 2012 Feb 03 +" +" http://raisdorf.net/files/misc/send-pr.vim + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn match sendprComment /^SEND-PR:/ +" email address +syn match sendprType /<[a-zA-Z0-9\-\_\.]*@[a-zA-Z0-9\-\_\.]*>/ +" ^> lines +syn match sendprString /^>[a-zA-Z\-]*:/ +syn region sendprLabel start="\[" end="\]" +syn match sendprString /^To:/ +syn match sendprString /^From:/ +syn match sendprString /^Reply-To:/ +syn match sendprString /^Cc:/ +syn match sendprString /^X-send-pr-version:/ +syn match sendprString /^X-GNATS-Notify:/ + +hi def link sendprComment Comment +hi def link sendprType Type +hi def link sendprString String +hi def link sendprLabel Label + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/sensors.vim b/share/vim/vim74/syntax/sensors.vim similarity index 100% rename from share/vim/vim73/syntax/sensors.vim rename to share/vim/vim74/syntax/sensors.vim diff --git a/share/vim/vim73/syntax/services.vim b/share/vim/vim74/syntax/services.vim similarity index 100% rename from share/vim/vim73/syntax/services.vim rename to share/vim/vim74/syntax/services.vim diff --git a/share/vim/vim73/syntax/setserial.vim b/share/vim/vim74/syntax/setserial.vim similarity index 100% rename from share/vim/vim73/syntax/setserial.vim rename to share/vim/vim74/syntax/setserial.vim diff --git a/share/vim/vim73/syntax/sgml.vim b/share/vim/vim74/syntax/sgml.vim similarity index 100% rename from share/vim/vim73/syntax/sgml.vim rename to share/vim/vim74/syntax/sgml.vim diff --git a/share/vim/vim74/syntax/sgmldecl.vim b/share/vim/vim74/syntax/sgmldecl.vim new file mode 100644 index 00000000..13551b21 --- /dev/null +++ b/share/vim/vim74/syntax/sgmldecl.vim @@ -0,0 +1,85 @@ +" Vim syntax file +" Language: SGML (SGML Declaration ) +" Last Change: jueves, 28 de diciembre de 2000, 13:51:44 CLST +" Maintainer: "Daniel A. Molina W." +" You can modify and maintain this file, in other case send comments +" the maintainer email address. + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +syn case ignore + +syn region sgmldeclDeclBlock transparent start=++ +syn region sgmldeclTagBlock transparent start=+<+ end=+>+ + \ contains=ALLBUT, + \ @sgmlTagError,@sgmlErrInTag +syn region sgmldeclComment contained start=+--+ end=+--+ + +syn keyword sgmldeclDeclKeys SGML CHARSET CAPACITY SCOPE SYNTAX + \ FEATURES + +syn keyword sgmldeclTypes BASESET DESCSET DOCUMENT NAMING DELIM + \ NAMES QUANTITY SHUNCHAR DOCTYPE + \ ELEMENT ENTITY ATTLIST NOTATION + \ TYPE + +syn keyword sgmldeclStatem CONTROLS FUNCTION NAMECASE MINIMIZE + \ LINK OTHER APPINFO REF ENTITIES + +syn keyword sgmldeclVariables TOTALCAP GRPCAP ENTCAP DATATAG OMITTAG RANK + \ SIMPLE IMPLICIT EXPLICIT CONCUR SUBDOC FORMAL ATTCAP + \ ATTCHCAP AVGRPCAP ELEMCAP ENTCHCAP IDCAP IDREFCAP + \ SHORTTAG + +syn match sgmldeclNConst contained +[0-9]\++ + +syn region sgmldeclString contained start=+"+ end=+"+ + +syn keyword sgmldeclBool YES NO + +syn keyword sgmldeclSpecial SHORTREF SGMLREF UNUSED NONE GENERAL + \ SEEALSO ANY + +syn sync lines=250 + + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_sgmldecl_syntax_init") + if version < 508 + let did_sgmldecl_syntax_init = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink sgmldeclDeclKeys Keyword + HiLink sgmldeclTypes Type + HiLink sgmldeclConst Constant + HiLink sgmldeclNConst Constant + HiLink sgmldeclString String + HiLink sgmldeclDeclBlock Normal + HiLink sgmldeclBool Boolean + HiLink sgmldeclSpecial Special + HiLink sgmldeclComment Comment + HiLink sgmldeclStatem Statement + HiLink sgmldeclVariables Type + + delcommand HiLink +endif + +let b:current_syntax = "sgmldecl" + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:set tw=78 ts=4: diff --git a/share/vim/vim74/syntax/sgmllnx.vim b/share/vim/vim74/syntax/sgmllnx.vim new file mode 100644 index 00000000..28224f60 --- /dev/null +++ b/share/vim/vim74/syntax/sgmllnx.vim @@ -0,0 +1,67 @@ +" Vim syntax file +" Language: SGML-linuxdoc (supported by old sgmltools-1.x) +" Maintainer: SungHyun Nam +" Last Change: 2013 May 13 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case ignore + +" tags +syn region sgmllnxEndTag start=++ contains=sgmllnxTagN,sgmllnxTagError +syn region sgmllnxTag start=+<[^/]+ end=+>+ contains=sgmllnxTagN,sgmllnxTagError +syn match sgmllnxTagN contained +<\s*[-a-zA-Z0-9]\++ms=s+1 contains=sgmllnxTagName +syn match sgmllnxTagN contained ++ +syn region sgmllnxDocType start=++ + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_sgmllnx_syn_inits") + if version < 508 + let did_sgmllnx_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink sgmllnxTag2 Function + HiLink sgmllnxTagN2 Function + HiLink sgmllnxTag Special + HiLink sgmllnxEndTag Special + HiLink sgmllnxParen Special + HiLink sgmllnxEntity Type + HiLink sgmllnxDocEnt Type + HiLink sgmllnxTagName Statement + HiLink sgmllnxComment Comment + HiLink sgmllnxSpecial Special + HiLink sgmllnxDocType PreProc + HiLink sgmllnxTagError Error + + delcommand HiLink +endif + +let b:current_syntax = "sgmllnx" + +" vim:set tw=78 ts=8 sts=2 sw=2 noet: diff --git a/share/vim/vim74/syntax/sh.vim b/share/vim/vim74/syntax/sh.vim new file mode 100644 index 00000000..0bec249d --- /dev/null +++ b/share/vim/vim74/syntax/sh.vim @@ -0,0 +1,705 @@ +" Vim syntax file +" Language: shell (sh) Korn shell (ksh) bash (sh) +" Maintainer: Charles E. Campbell +" Previous Maintainer: Lennart Schultz +" Last Change: Jul 02, 2013 +" Version: 131 +" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax +" For options and settings, please use: :help ft-sh-syntax +" This file includes many ideas from ?ric Brunet (eric.brunet@ens.fr) + +" For version 5.x: Clear all syntax items {{{1 +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" AFAICT "." should be considered part of the iskeyword. Using iskeywords in +" syntax is dicey, so the following code permits the user to +" g:sh_isk set to a string : specify iskeyword. +" g:sh_noisk exists : don't change iskeyword +" g:sh_noisk does not exist : (default) append "." to iskeyword +if exists("g:sh_isk") && type(g:sh_isk) == 1 " user specifying iskeyword + exe "setl isk=".g:sh_isk +elseif !exists("g:sh_noisk") " optionally prevent appending '.' to iskeyword + setl isk+=. +endif + +" trying to answer the question: which shell is /bin/sh, really? +" If the user has not specified any of g:is_kornshell, g:is_bash, g:is_posix, g:is_sh, then guess. +if !exists("g:is_kornshell") && !exists("g:is_bash") && !exists("g:is_posix") && !exists("g:is_sh") + let s:shell = "" + if executable("/bin/sh") + let s:shell = resolve("/bin/sh") + elseif executable("/usr/bin/sh") + let s:shell = resolve("/usr/bin/sh") + endif + if s:shell =~ 'bash$' + let g:is_bash= 1 + elseif s:shell =~ 'ksh$' + let g:is_kornshell = 1 + elseif s:shell =~ 'dash$' + let g:is_posix = 1 + endif + unlet s:shell +endif + +" handling /bin/sh with is_kornshell/is_sh {{{1 +" b:is_sh is set when "#! /bin/sh" is found; +" However, it often is just a masquerade by bash (typically Linux) +" or kornshell (typically workstations with Posix "sh"). +" So, when the user sets "g:is_bash", "g:is_kornshell", +" or "g:is_posix", a b:is_sh is converted into b:is_bash/b:is_kornshell, +" respectively. +if !exists("b:is_kornshell") && !exists("b:is_bash") + if exists("g:is_posix") && !exists("g:is_kornshell") + let g:is_kornshell= g:is_posix + endif + if exists("g:is_kornshell") + let b:is_kornshell= 1 + if exists("b:is_sh") + unlet b:is_sh + endif + elseif exists("g:is_bash") + let b:is_bash= 1 + if exists("b:is_sh") + unlet b:is_sh + endif + else + let b:is_sh= 1 + endif +endif + +" set up default g:sh_fold_enabled {{{1 +if !exists("g:sh_fold_enabled") + let g:sh_fold_enabled= 0 +elseif g:sh_fold_enabled != 0 && !has("folding") + let g:sh_fold_enabled= 0 + echomsg "Ignoring g:sh_fold_enabled=".g:sh_fold_enabled."; need to re-compile vim for +fold support" +endif +if !exists("s:sh_fold_functions") + let s:sh_fold_functions= and(g:sh_fold_enabled,1) +endif +if !exists("s:sh_fold_heredoc") + let s:sh_fold_heredoc = and(g:sh_fold_enabled,2) +endif +if !exists("s:sh_fold_ifdofor") + let s:sh_fold_ifdofor = and(g:sh_fold_enabled,4) +endif +if g:sh_fold_enabled && &fdm == "manual" + " Given that the user provided g:sh_fold_enabled + " AND g:sh_fold_enabled is manual (usual default) + " implies a desire for syntax-based folding + setl fdm=syntax +endif + +" sh syntax is case sensitive {{{1 +syn case match + +" Clusters: contains=@... clusters {{{1 +"================================== +syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK +if exists("b:is_kornshell") + syn cluster ErrorList add=shDTestError +endif +syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shDeref,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement +syn cluster shArithList contains=@shArithParenList,shParenError +syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange +syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq +"syn cluster shColonList contains=@shCaseList +syn cluster shCommandSubList contains=shArithmetic,shDeref,shDerefSimple,shEcho,shEscape,shNumber,shOption,shPosnParm,shExSingleQuote,shSingleQuote,shExDoubleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest,shCtrlSeq,shSpecial,shCmdParenRegion +syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial +syn cluster shDblQuoteList contains=shCommandSub,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial +syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPPS +syn cluster shDerefVarList contains=shDerefOp,shDerefVarArray,shDerefOpError +syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shEscape,shExpr,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote +syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq +syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest +syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq +if exists("b:is_kornshell") || exists("b:is_bash") + syn cluster shFunctionList add=shRepeat + syn cluster shFunctionList add=shDblBrace,shDblParen +endif +syn cluster shHereBeginList contains=@shCommandSubList +syn cluster shHereList contains=shBeginHere,shHerePayload +syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload +syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr +syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo +syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest,@shErrorList,shSet,shOption +syn cluster shSubShList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator +syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shExDoubleQuote,shDoubleQuote,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shTestOpr,shTest,shCtrlSeq +" Echo: {{{1 +" ==== +" This one is needed INSIDE a CommandSub, so that `echo bla` be correct +syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment +syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment +syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]' + +" This must be after the strings, so that ... \" will be correct +syn region shEmbeddedEcho contained matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shExDoubleQuote,shDoubleQuote,shCharClass,shCtrlSeq + +" Alias: {{{1 +" ===== +if exists("b:is_kornshell") || exists("b:is_bash") + syn match shStatement "\" + syn region shAlias matchgroup=shStatement start="\\s\+\(\h[-._[:alnum:]]\+\)\@=" skip="\\$" end="\>\|`" + syn region shAlias matchgroup=shStatement start="\\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="=" +endif + +" Error Codes: {{{1 +" ============ +if !exists("g:sh_no_error") + syn match shDoError "\" + syn match shIfError "\" + syn match shInError "\" + syn match shCaseError ";;" + syn match shEsacError "\" + syn match shCurlyError "}" + syn match shParenError ")" + syn match shOK '\.\(done\|fi\|in\|esac\)' + if exists("b:is_kornshell") + syn match shDTestError "]]" + endif + syn match shTestError "]" +endif + +" Options: {{{1 +" ==================== +syn match shOption "\s\zs[-+][-_a-zA-Z0-9#]\+" +syn match shOption "\s\zs--[^ \t$`'"|);]\+" + +" File Redirection Highlighted As Operators: {{{1 +"=========================================== +syn match shRedir "\d\=>\(&[-0-9]\)\=" +syn match shRedir "\d\=>>-\=" +syn match shRedir "\d\=<\(&[-0-9]\)\=" +syn match shRedir "\d<<-\=" + +" Operators: {{{1 +" ========== +syn match shOperator "<<\|>>" contained +syn match shOperator "[!&;|]" contained +syn match shOperator "\[[[^:]\|\]]" contained +syn match shOperator "!\==" skipwhite nextgroup=shPattern +syn match shPattern "\<\S\+\())\)\@=" contained contains=shExSingleQuote,shSingleQuote,shExDoubleQuote,shDoubleQuote,shDeref + +" Subshells: {{{1 +" ========== +syn region shExpr transparent matchgroup=shExprRegion start="{" end="}" contains=@shExprList2 nextgroup=shMoreSpecial +syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")" contains=@shSubShList nextgroup=shMoreSpecial + +" Tests: {{{1 +"======= +syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial +syn region shTest transparent matchgroup=shStatement start="\=\|!=\|==\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]" +syn match shTestOpr contained '=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern +syn match shTestPattern contained '\w\+' +syn match shTestDoubleQuote contained '\%(\%(\\\\\)*\\\)\@" matchgroup=shConditional end="\" contains=@shLoopList + syn region shIf fold transparent matchgroup=shConditional start="\+ end="\<;\_s*then\>" end="\" contains=@shIfList + syn region shFor fold matchgroup=shLoop start="\+ end="\<;\_s*then\>" end="\" contains=@shIfList + syn region shFor matchgroup=shLoop start="\\ze\_s*((' +endif +if exists("b:is_kornshell") || exists("b:is_bash") + syn cluster shCaseList add=shRepeat + syn cluster shFunctionList add=shRepeat + syn region shRepeat matchgroup=shLoop start="\#\=" +syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained +if exists("b:is_bash") + syn match shSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained +endif +if exists("b:is_bash") + syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial + syn region shExDoubleQuote matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,shSpecial +elseif !exists("g:sh_no_error") + syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial + syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial +endif +syn region shSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=@Spell +syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@" contained +syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shSetIdentifier +syn match shSetIdentifier "=" contained nextgroup=shCmdParenRegion,shPattern,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shSingleQuote,shExSingleQuote +syn region shAtExpr contained start="@(" end=")" contains=@shIdList +if exists("b:is_bash") + syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\\ze[^/]" end="\ze[;|)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList +elseif exists("b:is_kornshell") + syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList +else + syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList +endif + +" Functions: {{{1 +if !exists("g:is_posix") + syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo +endif + +if exists("b:is_bash") + if s:sh_fold_functions + syn region shFunctionOne fold matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionTwo fold matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + else + syn region shFunctionOne matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList + syn region shFunctionTwo matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained + endif +else + if s:sh_fold_functions + syn region shFunctionOne fold matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionTwo fold matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + else + syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList + syn region shFunctionTwo matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained + endif +endif + +" Parameter Dereferencing: {{{1 +" ======================== +syn match shDerefSimple "\$\%(\k\+\|\d\)" +syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray +if !exists("g:sh_no_error") + syn match shDerefWordError "[^}$[]" contained +endif +syn match shDerefSimple "\$[-#*@!?]" +syn match shDerefSimple "\$\$" +if exists("b:is_bash") || exists("b:is_kornshell") + syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList + syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList +endif + +" bash: ${!prefix*} and ${#parameter}: {{{1 +" ==================================== +if exists("b:is_bash") + syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOp + syn match shDerefVar contained "{\@<=!\k\+" nextgroup=@shDerefVarList +endif + +syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOpError +syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp +syn match shDerefVar contained "{\@<=\k\+" nextgroup=@shDerefVarList + +" sh ksh bash : ${var[... ]...} array reference: {{{1 +syn region shDerefVarArray contained matchgroup=shDeref start="\[" end="]" contains=@shCommandSubList nextgroup=shDerefOp,shDerefOpError + +" Special ${parameter OPERATOR word} handling: {{{1 +" sh ksh bash : ${parameter:-word} word is default value +" sh ksh bash : ${parameter:=word} assign word as default value +" sh ksh bash : ${parameter:?word} display word if parameter is null +" sh ksh bash : ${parameter:+word} use word if parameter is not null, otherwise nothing +" ksh bash : ${parameter#pattern} remove small left pattern +" ksh bash : ${parameter##pattern} remove large left pattern +" ksh bash : ${parameter%pattern} remove small right pattern +" ksh bash : ${parameter%%pattern} remove large right pattern +" bash : ${parameter^pattern} Case modification +" bash : ${parameter^^pattern} Case modification +" bash : ${parameter,pattern} Case modification +" bash : ${parameter,,pattern} Case modification +syn cluster shDerefPatternList contains=shDerefPattern,shDerefString +if !exists("g:sh_no_error") + syn match shDerefOpError contained ":[[:punct:]]" +endif +syn match shDerefOp contained ":\=[-=?]" nextgroup=@shDerefPatternList +syn match shDerefOp contained ":\=+" nextgroup=@shDerefPatternList +if exists("b:is_bash") || exists("b:is_kornshell") + syn match shDerefOp contained "#\{1,2}" nextgroup=@shDerefPatternList + syn match shDerefOp contained "%\{1,2}" nextgroup=@shDerefPatternList + syn match shDerefPattern contained "[^{}]\+" contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern + syn region shDerefPattern contained start="{" end="}" contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern + syn match shDerefEscape contained '\%(\\\\\)*\\.' +endif +if exists("b:is_bash") + syn match shDerefOp contained "[,^]\{1,2}" nextgroup=@shDerefPatternList +endif +syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@" +syn sync match shCaseEsacSync groupthere shCaseEsac "\" +syn sync match shDoSync grouphere shDo "\" +syn sync match shDoSync groupthere shDo "\" +syn sync match shForSync grouphere shFor "\" +syn sync match shForSync groupthere shFor "\" +syn sync match shIfSync grouphere shIf "\" +syn sync match shIfSync groupthere shIf "\" +syn sync match shUntilSync grouphere shRepeat "\" +syn sync match shWhileSync grouphere shRepeat "\" + +" Default Highlighting: {{{1 +" ===================== +hi def link shArithRegion shShellVariables +hi def link shAtExpr shSetList +hi def link shBeginHere shRedir +hi def link shCaseBar shConditional +hi def link shCaseCommandSub shCommandSub +hi def link shCaseDoubleQuote shDoubleQuote +hi def link shCaseIn shConditional +hi def link shQuote shOperator +hi def link shCaseSingleQuote shSingleQuote +hi def link shCaseStart shConditional +hi def link shCmdSubRegion shShellVariables +hi def link shColon shComment +hi def link shDerefOp shOperator +hi def link shDerefPOL shDerefOp +hi def link shDerefPPS shDerefOp +hi def link shDeref shShellVariables +hi def link shDerefDelim shOperator +hi def link shDerefSimple shDeref +hi def link shDerefSpecial shDeref +hi def link shDerefString shDoubleQuote +hi def link shDerefVar shDeref +hi def link shDoubleQuote shString +hi def link shEcho shString +hi def link shEchoDelim shOperator +hi def link shEchoQuote shString +hi def link shForPP shLoop +hi def link shEmbeddedEcho shString +hi def link shEscape shCommandSub +hi def link shExDoubleQuote shDoubleQuote +hi def link shExSingleQuote shSingleQuote +hi def link shFunction Function +hi def link shHereDoc shString +hi def link shHerePayload shHereDoc +hi def link shLoop shStatement +hi def link shMoreSpecial shSpecial +hi def link shOption shCommandSub +hi def link shPattern shString +hi def link shParen shArithmetic +hi def link shPosnParm shShellVariables +hi def link shQuickComment shComment +hi def link shRange shOperator +hi def link shRedir shOperator +hi def link shSetListDelim shOperator +hi def link shSetOption shOption +hi def link shSingleQuote shString +hi def link shSource shOperator +hi def link shStringSpecial shSpecial +hi def link shSubShRegion shOperator +hi def link shTestOpr shConditional +hi def link shTestPattern shString +hi def link shTestDoubleQuote shString +hi def link shTestSingleQuote shString +hi def link shVariable shSetList +hi def link shWrapLineOperator shOperator + +if exists("b:is_bash") + hi def link bashAdminStatement shStatement + hi def link bashSpecialVariables shShellVariables + hi def link bashStatement shStatement + hi def link shFunctionParen Delimiter + hi def link shFunctionDelim Delimiter + hi def link shCharClass shSpecial +endif +if exists("b:is_kornshell") + hi def link kshSpecialVariables shShellVariables + hi def link kshStatement shStatement + hi def link shFunctionParen Delimiter +endif + +if !exists("g:sh_no_error") + hi def link shCaseError Error + hi def link shCondError Error + hi def link shCurlyError Error + hi def link shDerefError Error + hi def link shDerefOpError Error + hi def link shDerefWordError Error + hi def link shDoError Error + hi def link shEsacError Error + hi def link shIfError Error + hi def link shInError Error + hi def link shParenError Error + hi def link shTestError Error + if exists("b:is_kornshell") + hi def link shDTestError Error + endif +endif + +hi def link shArithmetic Special +hi def link shCharClass Identifier +hi def link shSnglCase Statement +hi def link shCommandSub Special +hi def link shComment Comment +hi def link shConditional Conditional +hi def link shCtrlSeq Special +hi def link shExprRegion Delimiter +hi def link shFunctionKey Function +hi def link shFunctionName Function +hi def link shNumber Number +hi def link shOperator Operator +hi def link shRepeat Repeat +hi def link shSet Statement +hi def link shSetList Identifier +hi def link shShellVariables PreProc +hi def link shSpecial Special +hi def link shStatement Statement +hi def link shString String +hi def link shTodo Todo +hi def link shAlias Identifier +hi def link shRedir01 shRedir +hi def link shRedir02 shRedir +hi def link shRedir03 shRedir +hi def link shRedir04 shRedir +hi def link shRedir05 shRedir +hi def link shRedir06 shRedir +hi def link shRedir07 shRedir +hi def link shRedir08 shRedir +hi def link shRedir09 shRedir +hi def link shRedir10 shRedir +hi def link shRedir11 shRedir +hi def link shRedir12 shRedir +hi def link shRedir13 shRedir +hi def link shRedir14 shRedir +hi def link shRedir15 shRedir +hi def link shRedir16 shRedir +hi def link shRedir17 shRedir +hi def link shRedir18 shRedir +hi def link shRedir19 shRedir +hi def link shRedir20 shRedir +hi def link shRedir21 shRedir +hi def link shRedir22 shRedir +hi def link shRedir23 shRedir +hi def link shRedir24 shRedir +hi def link shRedir25 shRedir +hi def link shRedir26 shRedir +hi def link shRedir27 shRedir +hi def link shRedir28 shRedir +hi def link shRedir29 shRedir +hi def link shRedir30 shRedir +hi def link shRedir31 shRedir +hi def link shRedir32 shRedir + +" Set Current Syntax: {{{1 +" =================== +if exists("b:is_bash") + let b:current_syntax = "bash" +elseif exists("b:is_kornshell") + let b:current_syntax = "ksh" +else + let b:current_syntax = "sh" +endif + +" vim: ts=16 fdm=marker diff --git a/share/vim/vim73/syntax/sicad.vim b/share/vim/vim74/syntax/sicad.vim similarity index 100% rename from share/vim/vim73/syntax/sicad.vim rename to share/vim/vim74/syntax/sicad.vim diff --git a/share/vim/vim73/syntax/sieve.vim b/share/vim/vim74/syntax/sieve.vim similarity index 100% rename from share/vim/vim73/syntax/sieve.vim rename to share/vim/vim74/syntax/sieve.vim diff --git a/share/vim/vim73/syntax/simula.vim b/share/vim/vim74/syntax/simula.vim similarity index 100% rename from share/vim/vim73/syntax/simula.vim rename to share/vim/vim74/syntax/simula.vim diff --git a/share/vim/vim73/syntax/sinda.vim b/share/vim/vim74/syntax/sinda.vim similarity index 100% rename from share/vim/vim73/syntax/sinda.vim rename to share/vim/vim74/syntax/sinda.vim diff --git a/share/vim/vim73/syntax/sindacmp.vim b/share/vim/vim74/syntax/sindacmp.vim similarity index 100% rename from share/vim/vim73/syntax/sindacmp.vim rename to share/vim/vim74/syntax/sindacmp.vim diff --git a/share/vim/vim73/syntax/sindaout.vim b/share/vim/vim74/syntax/sindaout.vim similarity index 100% rename from share/vim/vim73/syntax/sindaout.vim rename to share/vim/vim74/syntax/sindaout.vim diff --git a/share/vim/vim74/syntax/sisu.vim b/share/vim/vim74/syntax/sisu.vim new file mode 100644 index 00000000..23d73254 --- /dev/null +++ b/share/vim/vim74/syntax/sisu.vim @@ -0,0 +1,265 @@ +" SiSU Vim syntax file +" SiSU Maintainer: Ralph Amissah +" SiSU Markup: SiSU (sisu-4.0.9) +" Last Change: 2013-02-22 +" URL (sisu-4.1.0): +"(originally looked at Ruby Vim by Mirko Nasato) + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +else +endif +let s:cpo_save = &cpo +set cpo&vim + +"% "Errors: +syn match sisu_error contains=sisu_link,sisu_error_wspace "" + +"% "Markers Identifiers: +if !exists("sisu_no_identifiers") + syn match sisu_mark_endnote "\~^" + syn match sisu_break contains=@NoSpell " \\\\\( \|$\)\|
\|
" + syn match sisu_control contains=@NoSpell "^\(-\\\\-\|=\\\\=\|-\.\.-\|<:p[bn]>\)\s*$" + syn match sisu_control contains=@NoSpell "^<:\(bo\|---\)>\s*$" + syn match sisu_marktail "[~-]#" + syn match sisu_control "\"" + syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" + syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" + syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+" + syn match sisu_link " \*\~\S\+" + syn match sisu_action "^<:insert\d\+>" + syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^._-]\+\.ss[it]$" + syn match sisu_require contains=@NoSpell "^<<{[a-zA-Z0-9^._-]\+\.ss[it]}$" + syn match sisu_structure "^:A\~$" + +"% "Document Sub Headers: + syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content + syn match sisu_sub_header_creator "^\s\+:\(author\|editor\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution + syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license + syn match sisu_sub_header_classify "^\s\+:\(topic_register\|keywords\|subject\|dewey\|loc\):\s" + syn match sisu_sub_header_identifier "^\s\+:\(oclc\|isbn\):\s" + syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s" + syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s" + syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|substitute\|omit\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|stamp\|promo\|ad\|manpage\|home_button_text\|home_button_image\|cover_image\|footer\):\s" + syn match sisu_sub_header_notes "^\s\+:\(description\|abstract\|comment\|coverage\|relation\|source\|history\|type\|format\|prefix\|prefix_[ab]\|suffix\):\s" + +"% "semantic markers: (ignore) + syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]" + syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]" + syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]" + syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]" + syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1" + syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+" + syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1" + syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+" +endif + +"% "URLs Numbers And ASCII Codes: +syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" +syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)" + +"% "Tuned Error: (is error if not already matched) +syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" +syn match sisu_error contains=sisu_error "
]" + +"% "Simple Paired Enclosed Markup: +"url/link +syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" + +"% "Document Header: +" title +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" creator +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" dates +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_date matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" publisher +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" rights +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" classify document +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" identifier document +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_identifier matchgroup=sisu_header start="^[@]identifier:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" original language (depreciated) +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" notes +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" links of interest +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" make, processing instructions +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" + +"% "Headings: +syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$" + +"% "Block Group Text: +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table" +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$" +" block, group, poem, alt +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\(block\|group\|poem\|alt\){" end="^}\(block\|group\|poem\|alt\)" +" code +syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code" + +"% "Endnotes: +" regular endnote or asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" +" numbered asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" +" endnote content marker (for binary content marking) +syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$" + +"% "Links And Images: +" image with url link (and possibly footnote of url) +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline +" sisu outputs, short notation +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline +" image +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline + +"% "Some Line Operations: +" bold line +syn region sisu_bold contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^!_ " end=" \\\\\|$" +" indent and bullet paragraph +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$" +" indent and bullet (bold start) paragraph +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\)!_\? " end=" \\\\\|$" +" hanging indent paragraph [proposed] +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9] " end="$" +" hanging indent (bold start/ definition) paragraph [proposed] +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9]!_\? " end=" \\\\\|$" +" list numbering +syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" + +"% "Font Face Curly Brackets: +"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline +" book index: +syn region sisu_index matchgroup=sisu_index_block start="^={" end="}" +" emphasis: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" +" bold: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" +" underscore: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" +" italics: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/" +" added: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" +" superscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" +" subscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," +" monospace: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#" +" strikethrough: +syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" + +"% "Single Words Bold Italicise Etc: (depreciated) +syn region sisu_bold contains=sisu_error matchgroup=sisu_bold start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline +syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline +"misc +syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline + +"% "Expensive Mode: +if !exists("sisu_no_expensive") +else " not Expensive + syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline +endif " Expensive? + +"% "Headers And Headings: (Document Instructions) +syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" +syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" + +"% "Errors: +syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]" +syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" +syn match sisu_error_wspace contains=sisu_error_wspace "\s\+$" +syn match sisu_error contains=sisu_error_wspace "\t\+" +syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+" +syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]" +syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$" +syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$" +syn match sisu_error contains=sisu_error "\s\+.{{" +syn match sisu_error contains=sisu_error "^\~\s*$" +syn match sisu_error contains=sisu_error "^0\~.*" +syn match sisu_error contains=sisu_error "^[1-9]\~\s*$" +syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$" +syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]" +syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*" +syn match sisu_error contains=sisu_error "{\~^\S\+" +syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]" +syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']" +syn match sisu_error contains=sisu_error "" +"errors for filetype sisu, though not error in 'metaverse': +syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>" +syn match sisu_error "/\?<\([biu]\)>[^()]\{-}\n$" + +"% "Error Exceptions: +syn match sisu_control "\n$" "contains=ALL +"syn match sisu_control " //" +syn match sisu_error "%{" +syn match sisu_error "
_\?https\?:\S\+\|_\?https\?:\S\+
" +syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]" +syn match sisu_comment "^%\{1,2\}.\+" + +"% "Definitions Default Highlighting: +hi def link sisu_normal Normal +hi def link sisu_bold Statement +hi def link sisu_header PreProc +hi def link sisu_header_content Normal +hi def link sisu_sub_header_title Statement +hi def link sisu_sub_header_creator Statement +hi def link sisu_sub_header_date Statement +hi def link sisu_sub_header_publisher Statement +hi def link sisu_sub_header_rights Statement +hi def link sisu_sub_header_classify Statement +hi def link sisu_sub_header_identifier Statement +hi def link sisu_sub_header_original Statement +hi def link sisu_sub_header_links Statement +hi def link sisu_sub_header_notes Statement +hi def link sisu_sub_header_make Statement +hi def link sisu_heading Title +hi def link sisu_structure Operator +hi def link sisu_contain Include +hi def link sisu_mark_endnote Delimiter +hi def link sisu_require NonText +hi def link sisu_link NonText +hi def link sisu_linked String +hi def link sisu_fontface Delimiter +hi def link sisu_strikeout DiffDelete +hi def link sisu_content_alt Special +hi def link sisu_sem_content SpecialKey +hi def link sisu_sem_block Special +hi def link sisu_sem_marker Visual +"hi def link sisu_sem_marker Structure +hi def link sisu_sem_marker_block MatchParen +hi def link sisu_sem_ex_marker FoldColumn +hi def link sisu_sem_ex_marker_block Folded +hi def link sisu_sem_ex_content Comment +"hi def link sisu_sem_ex_content SpecialKey +hi def link sisu_sem_ex_block Comment +hi def link sisu_index SpecialKey +hi def link sisu_index_block Visual +hi def link sisu_content_endnote Special +hi def link sisu_control Delimiter +hi def link sisu_ocn Include +hi def link sisu_number Number +hi def link sisu_identifier Function +hi def link sisu_underline Underlined +hi def link sisu_markpara Include +hi def link sisu_marktail Include +hi def link sisu_mark Identifier +hi def link sisu_break Structure +hi def link sisu_html Type +hi def link sisu_action Identifier +hi def link sisu_comment Comment +hi def link sisu_error_sem_marker Error +hi def link sisu_error_wspace Error +hi def link sisu_error Error +let b:current_syntax = "sisu" +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/skill.vim b/share/vim/vim74/syntax/skill.vim similarity index 100% rename from share/vim/vim73/syntax/skill.vim rename to share/vim/vim74/syntax/skill.vim diff --git a/share/vim/vim73/syntax/sl.vim b/share/vim/vim74/syntax/sl.vim similarity index 100% rename from share/vim/vim73/syntax/sl.vim rename to share/vim/vim74/syntax/sl.vim diff --git a/share/vim/vim73/syntax/slang.vim b/share/vim/vim74/syntax/slang.vim similarity index 100% rename from share/vim/vim73/syntax/slang.vim rename to share/vim/vim74/syntax/slang.vim diff --git a/share/vim/vim74/syntax/slice.vim b/share/vim/vim74/syntax/slice.vim new file mode 100644 index 00000000..4e2f9a86 --- /dev/null +++ b/share/vim/vim74/syntax/slice.vim @@ -0,0 +1,91 @@ +" Vim syntax file +" Language: Slice (ZeroC's Specification Language for Ice) +" Maintainer: Morel Bodin +" Last Change: 2005 Dec 03 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" The Slice keywords + +syn keyword sliceType bool byte double float int long short string void +syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws +syn keyword sliceConstruct class enum exception dictionary interface module LocalObject Object sequence struct +syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws +syn keyword sliceBoolean false true + +" Include directives +syn region sliceIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn match sliceIncluded display contained "<[^>]*>" +syn match sliceInclude display "^\s*#\s*include\>\s*["<]" contains=sliceIncluded + +" Double-include guards +syn region sliceGuard start="^#\(define\|ifndef\|endif\)" end="$" + +" Strings and characters +syn region sliceString start=+"+ end=+"+ + +" Numbers (shamelessly ripped from c.vim, only slightly modified) +"integer number, or floating point number without a dot and with "f". +syn case ignore +syn match sliceNumbers display transparent "\<\d\|\.\d" contains=sliceNumber,sliceFloat,sliceOctal +syn match sliceNumber display contained "\d\+" +"hex number +syn match sliceNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" +" Flag the first zero of an octal number as something special +syn match sliceOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=sliceOctalZero +syn match sliceOctalZero display contained "\<0" +syn match sliceFloat display contained "\d\+f" +"floating point number, with dot, optional exponent +syn match sliceFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" +"floating point number, starting with a dot, optional exponent +syn match sliceFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +"floating point number, without dot, with exponent +syn match sliceFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" +" flag an octal number with wrong digits +syn case match + + +" Comments +syn region sliceComment start="/\*" end="\*/" +syn match sliceComment "//.*" + +syn sync ccomment sliceComment + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_slice_syn_inits") + if version < 508 + let did_slice_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink sliceComment Comment + HiLink sliceConstruct Keyword + HiLink sliceType Type + HiLink sliceString String + HiLink sliceIncluded String + HiLink sliceQualifier Keyword + HiLink sliceInclude Include + HiLink sliceGuard PreProc + HiLink sliceBoolean Boolean + HiLink sliceFloat Number + HiLink sliceNumber Number + HiLink sliceOctal Number + HiLink sliceOctalZero Special + HiLink sliceNumberError Special + + delcommand HiLink +endif + +let b:current_syntax = "slice" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/slpconf.vim b/share/vim/vim74/syntax/slpconf.vim similarity index 100% rename from share/vim/vim73/syntax/slpconf.vim rename to share/vim/vim74/syntax/slpconf.vim diff --git a/share/vim/vim73/syntax/slpreg.vim b/share/vim/vim74/syntax/slpreg.vim similarity index 100% rename from share/vim/vim73/syntax/slpreg.vim rename to share/vim/vim74/syntax/slpreg.vim diff --git a/share/vim/vim73/syntax/slpspi.vim b/share/vim/vim74/syntax/slpspi.vim similarity index 100% rename from share/vim/vim73/syntax/slpspi.vim rename to share/vim/vim74/syntax/slpspi.vim diff --git a/share/vim/vim73/syntax/slrnrc.vim b/share/vim/vim74/syntax/slrnrc.vim similarity index 100% rename from share/vim/vim73/syntax/slrnrc.vim rename to share/vim/vim74/syntax/slrnrc.vim diff --git a/share/vim/vim73/syntax/slrnsc.vim b/share/vim/vim74/syntax/slrnsc.vim similarity index 100% rename from share/vim/vim73/syntax/slrnsc.vim rename to share/vim/vim74/syntax/slrnsc.vim diff --git a/share/vim/vim73/syntax/sm.vim b/share/vim/vim74/syntax/sm.vim similarity index 100% rename from share/vim/vim73/syntax/sm.vim rename to share/vim/vim74/syntax/sm.vim diff --git a/share/vim/vim73/syntax/smarty.vim b/share/vim/vim74/syntax/smarty.vim similarity index 100% rename from share/vim/vim73/syntax/smarty.vim rename to share/vim/vim74/syntax/smarty.vim diff --git a/share/vim/vim73/syntax/smcl.vim b/share/vim/vim74/syntax/smcl.vim similarity index 100% rename from share/vim/vim73/syntax/smcl.vim rename to share/vim/vim74/syntax/smcl.vim diff --git a/share/vim/vim74/syntax/smil.vim b/share/vim/vim74/syntax/smil.vim new file mode 100644 index 00000000..6b5a0028 --- /dev/null +++ b/share/vim/vim74/syntax/smil.vim @@ -0,0 +1,159 @@ +" Vim syntax file +" Language: SMIL (Synchronized Multimedia Integration Language) +" Maintainer: Herve Foucher +" URL: http://www.helio.org/vim/syntax/smil.vim +" Last Change: 2012 Feb 03 by Thilo Six + +" To learn more about SMIL, please refer to http://www.w3.org/AudioVideo/ +" and to http://www.helio.org/products/smil/tutorial/ + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" SMIL is case sensitive +syn case match + +" illegal characters +syn match smilError "[<>&]" +syn match smilError "[()&]" + +if !exists("main_syntax") + let main_syntax = 'smil' +endif + +" tags +syn match smilSpecial contained "\\\d\d\d\|\\." +syn match smilSpecial contained "(" +syn match smilSpecial contained "id(" +syn match smilSpecial contained ")" +syn keyword smilSpecial contained remove freeze true false on off overdub caption new pause replace +syn keyword smilSpecial contained first last +syn keyword smilSpecial contained fill meet slice scroll hidden +syn region smilString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=smilSpecial +syn region smilString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=smilSpecial +syn match smilValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 +syn region smilEndTag start=++ contains=smilTagN,smilTagError +syn region smilTag start=+<[^/]+ end=+>+ contains=smilTagN,smilString,smilArg,smilValue,smilTagError,smilEvent,smilCssDefinition +syn match smilTagN contained +<\s*[-a-zA-Z0-9]\++ms=s+1 contains=smilTagName,smilSpecialTagName +syn match smilTagN contained +]<"ms=s+1 + +" tag names +syn keyword smilTagName contained smil head body anchor a switch region layout meta +syn match smilTagName contained "root-layout" +syn keyword smilTagName contained par seq +syn keyword smilTagName contained animation video img audio ref text textstream +syn match smilTagName contained "\<\(head\|body\)\>" + + +" legal arg names +syn keyword smilArg contained dur begin end href target id coords show title abstract author copyright alt +syn keyword smilArg contained left top width height fit src name content fill longdesc repeat type +syn match smilArg contained "z-index" +syn match smilArg contained " end-sync" +syn match smilArg contained " region" +syn match smilArg contained "background-color" +syn match smilArg contained "system-bitrate" +syn match smilArg contained "system-captions" +syn match smilArg contained "system-overdub-or-caption" +syn match smilArg contained "system-language" +syn match smilArg contained "system-required" +syn match smilArg contained "system-screen-depth" +syn match smilArg contained "system-screen-size" +syn match smilArg contained "clip-begin" +syn match smilArg contained "clip-end" +syn match smilArg contained "skip-content" + + +" SMIL Boston ext. +" This are new SMIL functionnalities seen on www.w3.org on August 3rd 1999 + +" Animation +syn keyword smilTagName contained animate set move +syn keyword smilArg contained calcMode from to by additive values origin path +syn keyword smilArg contained accumulate hold attribute +syn match smilArg contained "xml:link" +syn keyword smilSpecial contained discrete linear spline parent layout +syn keyword smilSpecial contained top left simple + +" Linking +syn keyword smilTagName contained area +syn keyword smilArg contained actuate behavior inline sourceVolume +syn keyword smilArg contained destinationVolume destinationPlaystate tabindex +syn keyword smilArg contained class style lang dir onclick ondblclick onmousedown onmouseup onmouseover onmousemove onmouseout onkeypress onkeydown onkeyup shape nohref accesskey onfocus onblur +syn keyword smilSpecial contained play pause stop rect circ poly child par seq + +" Media Object +syn keyword smilTagName contained rtpmap +syn keyword smilArg contained port transport encoding payload clipBegin clipEnd +syn match smilArg contained "fmt-list" + +" Timing and Synchronization +syn keyword smilTagName contained excl +syn keyword smilArg contained beginEvent endEvent eventRestart endSync repeatCount repeatDur +syn keyword smilArg contained syncBehavior syncTolerance +syn keyword smilSpecial contained canSlip locked + +" special characters +syn match smilSpecialChar "&[^;]*;" + +if exists("smil_wrong_comments") + syn region smilComment start=++ +else + syn region smilComment start=++ contains=smilCommentPart,smilCommentError + syn match smilCommentError contained "[^>+ + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_smil_syntax_inits") + if version < 508 + let did_smil_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink smilTag Function + HiLink smilEndTag Identifier + HiLink smilArg Type + HiLink smilTagName smilStatement + HiLink smilSpecialTagName Exception + HiLink smilValue Value + HiLink smilSpecialChar Special + + HiLink smilSpecial Special + HiLink smilSpecialChar Special + HiLink smilString String + HiLink smilStatement Statement + HiLink smilComment Comment + HiLink smilCommentPart Comment + HiLink smilPreProc PreProc + HiLink smilValue String + HiLink smilCommentError smilError + HiLink smilTagError smilError + HiLink smilError Error + + delcommand HiLink +endif + +let b:current_syntax = "smil" + +if main_syntax == 'smil' + unlet main_syntax +endif + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: ts=8 diff --git a/share/vim/vim73/syntax/smith.vim b/share/vim/vim74/syntax/smith.vim similarity index 100% rename from share/vim/vim73/syntax/smith.vim rename to share/vim/vim74/syntax/smith.vim diff --git a/share/vim/vim73/syntax/sml.vim b/share/vim/vim74/syntax/sml.vim similarity index 100% rename from share/vim/vim73/syntax/sml.vim rename to share/vim/vim74/syntax/sml.vim diff --git a/share/vim/vim73/syntax/snnsnet.vim b/share/vim/vim74/syntax/snnsnet.vim similarity index 100% rename from share/vim/vim73/syntax/snnsnet.vim rename to share/vim/vim74/syntax/snnsnet.vim diff --git a/share/vim/vim74/syntax/snnspat.vim b/share/vim/vim74/syntax/snnspat.vim new file mode 100644 index 00000000..5bfa48e6 --- /dev/null +++ b/share/vim/vim74/syntax/snnspat.vim @@ -0,0 +1,72 @@ +" Vim syntax file +" Language: SNNS pattern file +" Maintainer: Davide Alberani +" Last Change: 2012 Feb 03 by Thilo Six +" Version: 0.2 +" URL: http://digilander.iol.it/alberanid/vim/syntax/snnspat.vim +" +" SNNS http://www-ra.informatik.uni-tuebingen.de/SNNS/ +" is a simulator for neural networks. + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" anything that isn't part of the header, a comment or a number +" is wrong +syn match snnspatError ".*" +" hoping that matches any kind of notation... +syn match snnspatAccepted "\([-+]\=\(\d\+\.\|\.\)\=\d\+\([Ee][-+]\=\d\+\)\=\)" +syn match snnspatAccepted "\s" +syn match snnspatBrac "\[\s*\d\+\(\s\|\d\)*\]" contains=snnspatNumbers + +" the accepted fields in the header +syn match snnspatNoHeader "No\. of patterns\s*:\s*" contained +syn match snnspatNoHeader "No\. of input units\s*:\s*" contained +syn match snnspatNoHeader "No\. of output units\s*:\s*" contained +syn match snnspatNoHeader "No\. of variable input dimensions\s*:\s*" contained +syn match snnspatNoHeader "No\. of variable output dimensions\s*:\s*" contained +syn match snnspatNoHeader "Maximum input dimensions\s*:\s*" contained +syn match snnspatNoHeader "Maximum output dimensions\s*:\s*" contained +syn match snnspatGen "generated at.*" contained contains=snnspatNumbers +syn match snnspatGen "SNNS pattern definition file [Vv]\d\.\d" contained contains=snnspatNumbers + +" the header, what is not an accepted field, is an error +syn region snnspatHeader start="^SNNS" end="^\s*[-+\.]\=[0-9#]"me=e-2 contains=snnspatNoHeader,snnspatNumbers,snnspatGen,snnspatBrac + +" numbers inside the header +syn match snnspatNumbers "\d" contained +syn match snnspatComment "#.*$" contains=snnspatTodo +syn keyword snnspatTodo TODO XXX FIXME contained + +if version >= 508 || !exists("did_snnspat_syn_inits") + if version < 508 + let did_snnspat_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink snnspatGen Statement + HiLink snnspatHeader Error + HiLink snnspatNoHeader Define + HiLink snnspatNumbers Number + HiLink snnspatComment Comment + HiLink snnspatError Error + HiLink snnspatTodo Todo + HiLink snnspatAccepted NONE + HiLink snnspatBrac NONE + + delcommand HiLink +endif + +let b:current_syntax = "snnspat" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: ts=8 sw=2 diff --git a/share/vim/vim73/syntax/snnsres.vim b/share/vim/vim74/syntax/snnsres.vim similarity index 100% rename from share/vim/vim73/syntax/snnsres.vim rename to share/vim/vim74/syntax/snnsres.vim diff --git a/share/vim/vim73/syntax/snobol4.vim b/share/vim/vim74/syntax/snobol4.vim similarity index 100% rename from share/vim/vim73/syntax/snobol4.vim rename to share/vim/vim74/syntax/snobol4.vim diff --git a/share/vim/vim73/syntax/spec.vim b/share/vim/vim74/syntax/spec.vim similarity index 100% rename from share/vim/vim73/syntax/spec.vim rename to share/vim/vim74/syntax/spec.vim diff --git a/share/vim/vim73/syntax/specman.vim b/share/vim/vim74/syntax/specman.vim similarity index 100% rename from share/vim/vim73/syntax/specman.vim rename to share/vim/vim74/syntax/specman.vim diff --git a/share/vim/vim74/syntax/spice.vim b/share/vim/vim74/syntax/spice.vim new file mode 100644 index 00000000..200e1aae --- /dev/null +++ b/share/vim/vim74/syntax/spice.vim @@ -0,0 +1,88 @@ +" Vim syntax file +" Language: Spice circuit simulator input netlist +" Maintainer: Noam Halevy +" Last Change: 2012 Jun 01 +" (Dominique Pelle added @Spell) +" +" This is based on sh.vim by Lennart Schultz +" but greatly simplified + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" spice syntax is case INsensitive +syn case ignore + +syn keyword spiceTodo contained TODO + +syn match spiceComment "^ \=\*.*$" contains=@Spell +syn match spiceComment "\$.*$" contains=@Spell + +" Numbers, all with engineering suffixes and optional units +"========================================================== +"floating point number, with dot, optional exponent +syn match spiceNumber "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" +"floating point number, starting with a dot, optional exponent +syn match spiceNumber "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" +"integer number with optional exponent +syn match spiceNumber "\<[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" + +" Misc +"===== +syn match spiceWrapLineOperator "\\$" +syn match spiceWrapLineOperator "^+" + +syn match spiceStatement "^ \=\.\I\+" + +" Matching pairs of parentheses +"========================================== +syn region spiceParen transparent matchgroup=spiceOperator start="(" end=")" contains=ALLBUT,spiceParenError +syn region spiceSinglequote matchgroup=spiceOperator start=+'+ end=+'+ + +" Errors +"======= +syn match spiceParenError ")" + +" Syncs +" ===== +syn sync minlines=50 + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_spice_syntax_inits") + if version < 508 + let did_spice_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink spiceTodo Todo + HiLink spiceWrapLineOperator spiceOperator + HiLink spiceSinglequote spiceExpr + HiLink spiceExpr Function + HiLink spiceParenError Error + HiLink spiceStatement Statement + HiLink spiceNumber Number + HiLink spiceComment Comment + HiLink spiceOperator Operator + + delcommand HiLink +endif + +let b:current_syntax = "spice" + +" insert the following to $VIM/syntax/scripts.vim +" to autodetect HSpice netlists and text listing output: +" +" " Spice netlists and text listings +" elseif getline(1) =~ 'spice\>' || getline("$") =~ '^\.end' +" so :p:h/spice.vim + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/splint.vim b/share/vim/vim74/syntax/splint.vim similarity index 100% rename from share/vim/vim73/syntax/splint.vim rename to share/vim/vim74/syntax/splint.vim diff --git a/share/vim/vim74/syntax/spup.vim b/share/vim/vim74/syntax/spup.vim new file mode 100644 index 00000000..07e9708e --- /dev/null +++ b/share/vim/vim74/syntax/spup.vim @@ -0,0 +1,282 @@ +" Vim syntax file +" Language: Speedup, plant simulator from AspenTech +" Maintainer: Stefan.Schwarzer +" URL: http://www.ndh.net/home/sschwarzer/download/spup.vim +" Last Change: 2012 Feb 03 by Thilo Six +" Filename: spup.vim + +" Bugs +" - in the appropriate sections keywords are always highlighted +" even if they are not used with the appropriate meaning; +" example: in +" MODEL demonstration +" TYPE +" *area AS area +" both "area" are highlighted as spupType. +" +" If you encounter problems or have questions or suggestions, mail me + +" Remove old syntax stuff +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" don't hightlight several keywords like subsections +"let strict_subsections = 1 + +" highlight types usually found in DECLARE section +if !exists("hightlight_types") + let highlight_types = 1 +endif + +" one line comment syntax (# comments) +" 1. allow appended code after comment, do not complain +" 2. show code beginnig with the second # as an error +" 3. show whole lines with more than one # as an error +if !exists("oneline_comments") + let oneline_comments = 2 +endif + +" Speedup SECTION regions +syn case ignore +syn region spupCdi matchgroup=spupSection start="^CDI" end="^\*\*\*\*" contains=spupCdiSubs,@spupOrdinary +syn region spupConditions matchgroup=spupSection start="^CONDITIONS" end="^\*\*\*\*" contains=spupConditionsSubs,@spupOrdinary,spupConditional,spupOperator,spupCode +syn region spupDeclare matchgroup=spupSection start="^DECLARE" end="^\*\*\*\*" contains=spupDeclareSubs,@spupOrdinary,spupTypes,spupCode +syn region spupEstimation matchgroup=spupSection start="^ESTIMATION" end="^\*\*\*\*" contains=spupEstimationSubs,@spupOrdinary +syn region spupExternal matchgroup=spupSection start="^EXTERNAL" end="^\*\*\*\*" contains=spupExternalSubs,@spupOrdinary +syn region spupFlowsheet matchgroup=spupSection start="^FLOWSHEET" end="^\*\*\*\*" contains=spupFlowsheetSubs,@spupOrdinary,spupStreams,@spupTextproc +syn region spupFunction matchgroup=spupSection start="^FUNCTION" end="^\*\*\*\*" contains=spupFunctionSubs,@spupOrdinary,spupHelp,spupCode,spupTypes +syn region spupGlobal matchgroup=spupSection start="^GLOBAL" end="^\*\*\*\*" contains=spupGlobalSubs,@spupOrdinary +syn region spupHomotopy matchgroup=spupSection start="^HOMOTOPY" end="^\*\*\*\*" contains=spupHomotopySubs,@spupOrdinary +syn region spupMacro matchgroup=spupSection start="^MACRO" end="^\*\*\*\*" contains=spupMacroSubs,@spupOrdinary,@spupTextproc,spupTypes,spupStreams,spupOperator +syn region spupModel matchgroup=spupSection start="^MODEL" end="^\*\*\*\*" contains=spupModelSubs,@spupOrdinary,spupConditional,spupOperator,spupTypes,spupStreams,@spupTextproc,spupHelp +syn region spupOperation matchgroup=spupSection start="^OPERATION" end="^\*\*\*\*" contains=spupOperationSubs,@spupOrdinary,@spupTextproc +syn region spupOptions matchgroup=spupSection start="^OPTIONS" end="^\*\*\*\*" contains=spupOptionsSubs,@spupOrdinary +syn region spupProcedure matchgroup=spupSection start="^PROCEDURE" end="^\*\*\*\*" contains=spupProcedureSubs,@spupOrdinary,spupHelp,spupCode,spupTypes +syn region spupProfiles matchgroup=spupSection start="^PROFILES" end="^\*\*\*\*" contains=@spupOrdinary,@spupTextproc +syn region spupReport matchgroup=spupSection start="^REPORT" end="^\*\*\*\*" contains=spupReportSubs,@spupOrdinary,spupHelp,@spupTextproc +syn region spupTitle matchgroup=spupSection start="^TITLE" end="^\*\*\*\*" contains=spupTitleSubs,spupComment,spupConstant,spupError +syn region spupUnit matchgroup=spupSection start="^UNIT" end="^\*\*\*\*" contains=spupUnitSubs,@spupOrdinary + +" Subsections +syn keyword spupCdiSubs INPUT FREE OUTPUT LINEARTIME MINNONZERO CALCULATE FILES SCALING contained +syn keyword spupDeclareSubs TYPE STREAM contained +syn keyword spupEstimationSubs ESTIMATE SSEXP DYNEXP RESULT contained +syn keyword spupExternalSubs TRANSMIT RECEIVE contained +syn keyword spupFlowsheetSubs STREAM contained +syn keyword spupFunctionSubs INPUT OUTPUT contained +syn keyword spupGlobalSubs VARIABLES MAXIMIZE MINIMIZE CONSTRAINT contained +syn keyword spupHomotopySubs VARY OPTIONS contained +syn keyword spupMacroSubs MODEL FLOWSHEET contained +syn keyword spupModelSubs CATEGORY SET TYPE STREAM EQUATION PROCEDURE contained +syn keyword spupOperationSubs SET PRESET INITIAL SSTATE FREE contained +syn keyword spupOptionsSubs ROUTINES TRANSLATE EXECUTION contained +syn keyword spupProcedureSubs INPUT OUTPUT SPACE PRECALL POSTCALL DERIVATIVE STREAM contained +" no subsections for Profiles +syn keyword spupReportSubs SET INITIAL FIELDS FIELDMARK DISPLAY WITHIN contained +syn keyword spupUnitSubs ROUTINES SET contained + +" additional keywords for subsections +if !exists( "strict_subsections" ) + syn keyword spupConditionsSubs STOP PRINT contained + syn keyword spupDeclareSubs UNIT SET COMPONENTS THERMO OPTIONS contained + syn keyword spupEstimationSubs VARY MEASURE INITIAL contained + syn keyword spupFlowsheetSubs TYPE FEED PRODUCT INPUT OUTPUT CONNECTION OF IS contained + syn keyword spupMacroSubs CONNECTION STREAM SET INPUT OUTPUT OF IS FEED PRODUCT TYPE contained + syn keyword spupModelSubs AS ARRAY OF INPUT OUTPUT CONNECTION contained + syn keyword spupOperationSubs WITHIN contained + syn keyword spupReportSubs LEFT RIGHT CENTER CENTRE UOM TIME DATE VERSION RELDATE contained + syn keyword spupUnitSubs IS A contained +endif + +" Speedup data types +if exists( "highlight_types" ) + syn keyword spupTypes act_coeff_liq area coefficient concentration contained + syn keyword spupTypes control_signal cond_liq cond_vap cp_mass_liq contained + syn keyword spupTypes cp_mol_liq cp_mol_vap cv_mol_liq cv_mol_vap contained + syn keyword spupTypes diffus_liq diffus_vap delta_p dens_mass contained + syn keyword spupTypes dens_mass_sol dens_mass_liq dens_mass_vap dens_mol contained + syn keyword spupTypes dens_mol_sol dens_mol_liq dens_mol_vap enthflow contained + syn keyword spupTypes enth_mass enth_mass_liq enth_mass_vap enth_mol contained + syn keyword spupTypes enth_mol_sol enth_mol_liq enth_mol_vap entr_mol contained + syn keyword spupTypes entr_mol_sol entr_mol_liq entr_mol_vap fraction contained + syn keyword spupTypes flow_mass flow_mass_liq flow_mass_vap flow_mol contained + syn keyword spupTypes flow_mol_vap flow_mol_liq flow_vol flow_vol_vap contained + syn keyword spupTypes flow_vol_liq fuga_vap fuga_liq fuga_sol contained + syn keyword spupTypes gibb_mol_sol heat_react heat_trans_coeff contained + syn keyword spupTypes holdup_heat holdup_heat_liq holdup_heat_vap contained + syn keyword spupTypes holdup_mass holdup_mass_liq holdup_mass_vap contained + syn keyword spupTypes holdup_mol holdup_mol_liq holdup_mol_vap k_value contained + syn keyword spupTypes length length_delta length_short liqfraction contained + syn keyword spupTypes liqmassfraction mass massfraction molefraction contained + syn keyword spupTypes molweight moment_inertia negative notype percent contained + syn keyword spupTypes positive pressure press_diff press_drop press_rise contained + syn keyword spupTypes ratio reaction reaction_mass rotation surf_tens contained + syn keyword spupTypes temperature temperature_abs temp_diff temp_drop contained + syn keyword spupTypes temp_rise time vapfraction vapmassfraction contained + syn keyword spupTypes velocity visc_liq visc_vap volume zmom_rate contained + syn keyword spupTypes seg_rate smom_rate tmom_rate zmom_mass seg_mass contained + syn keyword spupTypes smom_mass tmom_mass zmom_holdup seg_holdup contained + syn keyword spupTypes smom_holdup tmom_holdup contained +endif + +" stream types +syn keyword spupStreams mainstream vapour liquid contained + +" "conditional" keywords +syn keyword spupConditional IF THEN ELSE ENDIF contained +" Operators, symbols etc. +syn keyword spupOperator AND OR NOT contained +syn match spupSymbol "[,\-+=:;*/\"<>@%()]" contained +syn match spupSpecial "[&\$?]" contained +" Surprisingly, Speedup allows no unary + instead of the - +syn match spupError "[(=+\-*/]\s*+\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained +syn match spupError "[(=+\-*/]\s*+\d\+\.\([ed][+-]\=\d\+\)\=\>"lc=1 contained +syn match spupError "[(=+\-*/]\s*+\d*\.\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained +" String +syn region spupString start=+"+ end=+"+ oneline contained +syn region spupString start=+'+ end=+'+ oneline contained +" Identifier +syn match spupIdentifier "\<[a-z][a-z0-9_]*\>" contained +" Textprocessor directives +syn match spupTextprocGeneric "?[a-z][a-z0-9_]*\>" contained +syn region spupTextprocError matchgroup=spupTextprocGeneric start="?ERROR" end="?END"he=s-1 contained +" Number, without decimal point +syn match spupNumber "-\=\d\+\([ed][+-]\=\d\+\)\=" contained +" Number, allows 1. before exponent +syn match spupNumber "-\=\d\+\.\([ed][+-]\=\d\+\)\=" contained +" Number allows .1 before exponent +syn match spupNumber "-\=\d*\.\d\+\([ed][+-]\=\d\+\)\=" contained +" Help subsections +syn region spupHelp start="^HELP"hs=e+1 end="^\$ENDHELP"he=s-1 contained +" Fortran code +syn region spupCode start="^CODE"hs=e+1 end="^\$ENDCODE"he=s-1 contained +" oneline comments +if oneline_comments > 3 + oneline_comments = 2 " default +endif +if oneline_comments == 1 + syn match spupComment "#[^#]*#\=" +elseif oneline_comments == 2 + syn match spupError "#.*$" + syn match spupComment "#[^#]*" nextgroup=spupError +elseif oneline_comments == 3 + syn match spupComment "#[^#]*" + syn match spupError "#[^#]*#.*" +endif +" multiline comments +syn match spupOpenBrace "{" contained +syn match spupError "}" +syn region spupComment matchgroup=spupComment2 start="{" end="}" keepend contains=spupOpenBrace + +syn cluster spupOrdinary contains=spupNumber,spupIdentifier,spupSymbol +syn cluster spupOrdinary add=spupError,spupString,spupComment +syn cluster spupTextproc contains=spupTextprocGeneric,spupTextprocError + +" define syncronizing; especially OPERATION sections can become very large +syn sync clear +syn sync minlines=100 +syn sync maxlines=500 + +syn sync match spupSyncOperation grouphere spupOperation "^OPERATION" +syn sync match spupSyncCdi grouphere spupCdi "^CDI" +syn sync match spupSyncConditions grouphere spupConditions "^CONDITIONS" +syn sync match spupSyncDeclare grouphere spupDeclare "^DECLARE" +syn sync match spupSyncEstimation grouphere spupEstimation "^ESTIMATION" +syn sync match spupSyncExternal grouphere spupExternal "^EXTERNAL" +syn sync match spupSyncFlowsheet grouphere spupFlowsheet "^FLOWSHEET" +syn sync match spupSyncFunction grouphere spupFunction "^FUNCTION" +syn sync match spupSyncGlobal grouphere spupGlobal "^GLOBAL" +syn sync match spupSyncHomotopy grouphere spupHomotopy "^HOMOTOPY" +syn sync match spupSyncMacro grouphere spupMacro "^MACRO" +syn sync match spupSyncModel grouphere spupModel "^MODEL" +syn sync match spupSyncOperation grouphere spupOperation "^OPERATION" +syn sync match spupSyncOptions grouphere spupOptions "^OPTIONS" +syn sync match spupSyncProcedure grouphere spupProcedure "^PROCEDURE" +syn sync match spupSyncProfiles grouphere spupProfiles "^PROFILES" +syn sync match spupSyncReport grouphere spupReport "^REPORT" +syn sync match spupSyncTitle grouphere spupTitle "^TITLE" +syn sync match spupSyncUnit grouphere spupUnit "^UNIT" + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_spup_syn_inits") + if version < 508 + let did_spup_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink spupCdi spupSection + HiLink spupConditions spupSection + HiLink spupDeclare spupSection + HiLink spupEstimation spupSection + HiLink spupExternal spupSection + HiLink spupFlowsheet spupSection + HiLink spupFunction spupSection + HiLink spupGlobal spupSection + HiLink spupHomotopy spupSection + HiLink spupMacro spupSection + HiLink spupModel spupSection + HiLink spupOperation spupSection + HiLink spupOptions spupSection + HiLink spupProcedure spupSection + HiLink spupProfiles spupSection + HiLink spupReport spupSection + HiLink spupTitle spupConstant " this is correct, truly ;) + HiLink spupUnit spupSection + + HiLink spupCdiSubs spupSubs + HiLink spupConditionsSubs spupSubs + HiLink spupDeclareSubs spupSubs + HiLink spupEstimationSubs spupSubs + HiLink spupExternalSubs spupSubs + HiLink spupFlowsheetSubs spupSubs + HiLink spupFunctionSubs spupSubs + HiLink spupHomotopySubs spupSubs + HiLink spupMacroSubs spupSubs + HiLink spupModelSubs spupSubs + HiLink spupOperationSubs spupSubs + HiLink spupOptionsSubs spupSubs + HiLink spupProcedureSubs spupSubs + HiLink spupReportSubs spupSubs + HiLink spupUnitSubs spupSubs + + HiLink spupCode Normal + HiLink spupComment Comment + HiLink spupComment2 spupComment + HiLink spupConditional Statement + HiLink spupConstant Constant + HiLink spupError Error + HiLink spupHelp Normal + HiLink spupIdentifier Identifier + HiLink spupNumber Constant + HiLink spupOperator Special + HiLink spupOpenBrace spupError + HiLink spupSection Statement + HiLink spupSpecial spupTextprocGeneric + HiLink spupStreams Type + HiLink spupString Constant + HiLink spupSubs Statement + HiLink spupSymbol Special + HiLink spupTextprocError Normal + HiLink spupTextprocGeneric PreProc + HiLink spupTypes Type + + delcommand HiLink +endif + +let b:current_syntax = "spup" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim:ts=8 diff --git a/share/vim/vim73/syntax/spyce.vim b/share/vim/vim74/syntax/spyce.vim similarity index 100% rename from share/vim/vim73/syntax/spyce.vim rename to share/vim/vim74/syntax/spyce.vim diff --git a/share/vim/vim73/syntax/sql.vim b/share/vim/vim74/syntax/sql.vim similarity index 100% rename from share/vim/vim73/syntax/sql.vim rename to share/vim/vim74/syntax/sql.vim diff --git a/share/vim/vim74/syntax/sqlanywhere.vim b/share/vim/vim74/syntax/sqlanywhere.vim new file mode 100644 index 00000000..05b05c9f --- /dev/null +++ b/share/vim/vim74/syntax/sqlanywhere.vim @@ -0,0 +1,908 @@ +" Vim syntax file +" Language: SQL, Adaptive Server Anywhere +" Maintainer: David Fishburn +" Last Change: 2013 May 13 +" Version: 16.0.0 + +" Description: Updated to Adaptive Server Anywhere 16.0.0 +" Updated to Adaptive Server Anywhere 12.0.1 (including spatial data) +" Updated to Adaptive Server Anywhere 11.0.1 +" Updated to Adaptive Server Anywhere 10.0.1 +" Updated to Adaptive Server Anywhere 9.0.2 +" Updated to Adaptive Server Anywhere 9.0.1 +" Updated to Adaptive Server Anywhere 9.0.0 +" +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case ignore + +" The SQL reserved words, defined as keywords. + +syn keyword sqlSpecial false null true + +" common functions +syn keyword sqlFunction abs argn avg bintohex bintostr +syn keyword sqlFunction byte_length byte_substr char_length +syn keyword sqlFunction compare count count_big datalength date +syn keyword sqlFunction date_format dateadd datediff datename +syn keyword sqlFunction datepart day dayname days debug_eng +syn keyword sqlFunction dense_rank density dialect difference +syn keyword sqlFunction dow estimate estimate_source evaluate +syn keyword sqlFunction experience_estimate explanation +syn keyword sqlFunction get_identity graphical_plan +syn keyword sqlFunction graphical_ulplan greater grouping +syn keyword sqlFunction hextobin hextoint hour hours identity +syn keyword sqlFunction ifnull index_estimate inttohex isdate +syn keyword sqlFunction isencrypted isnull isnumeric +syn keyword sqlFunction lang_message length lesser like_end +syn keyword sqlFunction like_start list long_ulplan lookup max +syn keyword sqlFunction min minute minutes month monthname +syn keyword sqlFunction months newid now nullif number +syn keyword sqlFunction percent_rank plan quarter rand rank +syn keyword sqlFunction regexp_compile regexp_compile_patindex +syn keyword sqlFunction remainder rewrite rowid second seconds +syn keyword sqlFunction short_ulplan similar sortkey soundex +syn keyword sqlFunction stddev stack_trace str string strtobin strtouuid stuff +syn keyword sqlFunction subpartition substr substring sum switchoffset sysdatetimeoffset +syn keyword sqlFunction textptr todate todatetimeoffset today totimestamp traceback transactsql +syn keyword sqlFunction ts_index_statistics ts_table_statistics +syn keyword sqlFunction tsequal ulplan user_id user_name utc_now +syn keyword sqlFunction uuidtostr varexists variance watcomsql +syn keyword sqlFunction weeks wsql_state year years ymd + +" 9.0.1 functions +syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot +syn keyword sqlFunction char_length coalesce dateformat datetime degrees exp +syn keyword sqlFunction floor getdate insertstr +syn keyword sqlFunction log log10 lower mod pi power +syn keyword sqlFunction property radians replicate round sign sin +syn keyword sqlFunction sqldialect tan truncate truncnum +syn keyword sqlFunction base64_encode base64_decode +syn keyword sqlFunction hash compress decompress encrypt decrypt + +" 11.0.1 functions +syn keyword sqlFunction connection_extended_property text_handle_vector_match +syn keyword sqlFunction read_client_file write_client_file + +" 12.0.1 functions +syn keyword sqlFunction http_response_header + +" string functions +syn keyword sqlFunction ascii char left ltrim repeat +syn keyword sqlFunction space right rtrim trim lcase ucase +syn keyword sqlFunction locate charindex patindex replace +syn keyword sqlFunction errormsg csconvert + +" property functions +syn keyword sqlFunction db_id db_name property_name +syn keyword sqlFunction property_description property_number +syn keyword sqlFunction next_connection next_database property +syn keyword sqlFunction connection_property db_property db_extended_property +syn keyword sqlFunction event_parmeter event_condition event_condition_name + +" sa_ procedures +syn keyword sqlFunction sa_add_index_consultant_analysis +syn keyword sqlFunction sa_add_workload_query +syn keyword sqlFunction sa_app_deregister +syn keyword sqlFunction sa_app_get_infoStr +syn keyword sqlFunction sa_app_get_status +syn keyword sqlFunction sa_app_register +syn keyword sqlFunction sa_app_registration_unlock +syn keyword sqlFunction sa_app_set_infoStr +syn keyword sqlFunction sa_audit_string +syn keyword sqlFunction sa_check_commit +syn keyword sqlFunction sa_checkpoint_execute +syn keyword sqlFunction sa_conn_activity +syn keyword sqlFunction sa_conn_compression_info +syn keyword sqlFunction sa_conn_deregister +syn keyword sqlFunction sa_conn_info +syn keyword sqlFunction sa_conn_properties +syn keyword sqlFunction sa_conn_properties_by_conn +syn keyword sqlFunction sa_conn_properties_by_name +syn keyword sqlFunction sa_conn_register +syn keyword sqlFunction sa_conn_set_status +syn keyword sqlFunction sa_create_analysis_from_query +syn keyword sqlFunction sa_db_info +syn keyword sqlFunction sa_db_properties +syn keyword sqlFunction sa_disable_auditing_type +syn keyword sqlFunction sa_disable_index +syn keyword sqlFunction sa_disk_free_space +syn keyword sqlFunction sa_enable_auditing_type +syn keyword sqlFunction sa_enable_index +syn keyword sqlFunction sa_end_forward_to +syn keyword sqlFunction sa_eng_properties +syn keyword sqlFunction sa_event_schedules +syn keyword sqlFunction sa_exec_script +syn keyword sqlFunction sa_flush_cache +syn keyword sqlFunction sa_flush_statistics +syn keyword sqlFunction sa_forward_to +syn keyword sqlFunction sa_get_dtt +syn keyword sqlFunction sa_get_histogram +syn keyword sqlFunction sa_get_request_profile +syn keyword sqlFunction sa_get_request_profile_sub +syn keyword sqlFunction sa_get_request_times +syn keyword sqlFunction sa_get_server_messages +syn keyword sqlFunction sa_get_simulated_scale_factors +syn keyword sqlFunction sa_get_workload_capture_status +syn keyword sqlFunction sa_index_density +syn keyword sqlFunction sa_index_levels +syn keyword sqlFunction sa_index_statistics +syn keyword sqlFunction sa_internal_alter_index_ability +syn keyword sqlFunction sa_internal_create_analysis_from_query +syn keyword sqlFunction sa_internal_disk_free_space +syn keyword sqlFunction sa_internal_get_dtt +syn keyword sqlFunction sa_internal_get_histogram +syn keyword sqlFunction sa_internal_get_request_times +syn keyword sqlFunction sa_internal_get_simulated_scale_factors +syn keyword sqlFunction sa_internal_get_workload_capture_status +syn keyword sqlFunction sa_internal_index_density +syn keyword sqlFunction sa_internal_index_levels +syn keyword sqlFunction sa_internal_index_statistics +syn keyword sqlFunction sa_internal_java_loaded_classes +syn keyword sqlFunction sa_internal_locks +syn keyword sqlFunction sa_internal_pause_workload_capture +syn keyword sqlFunction sa_internal_procedure_profile +syn keyword sqlFunction sa_internal_procedure_profile_summary +syn keyword sqlFunction sa_internal_read_backup_history +syn keyword sqlFunction sa_internal_recommend_indexes +syn keyword sqlFunction sa_internal_reset_identity +syn keyword sqlFunction sa_internal_resume_workload_capture +syn keyword sqlFunction sa_internal_start_workload_capture +syn keyword sqlFunction sa_internal_stop_index_consultant +syn keyword sqlFunction sa_internal_stop_workload_capture +syn keyword sqlFunction sa_internal_table_fragmentation +syn keyword sqlFunction sa_internal_table_page_usage +syn keyword sqlFunction sa_internal_table_stats +syn keyword sqlFunction sa_internal_virtual_sysindex +syn keyword sqlFunction sa_internal_virtual_sysixcol +syn keyword sqlFunction sa_java_loaded_classes +syn keyword sqlFunction sa_jdk_version +syn keyword sqlFunction sa_locks +syn keyword sqlFunction sa_make_object +syn keyword sqlFunction sa_pause_workload_capture +syn keyword sqlFunction sa_proc_debug_attach_to_connection +syn keyword sqlFunction sa_proc_debug_connect +syn keyword sqlFunction sa_proc_debug_detach_from_connection +syn keyword sqlFunction sa_proc_debug_disconnect +syn keyword sqlFunction sa_proc_debug_get_connection_name +syn keyword sqlFunction sa_proc_debug_release_connection +syn keyword sqlFunction sa_proc_debug_request +syn keyword sqlFunction sa_proc_debug_version +syn keyword sqlFunction sa_proc_debug_wait_for_connection +syn keyword sqlFunction sa_procedure_profile +syn keyword sqlFunction sa_procedure_profile_summary +syn keyword sqlFunction sa_read_backup_history +syn keyword sqlFunction sa_recommend_indexes +syn keyword sqlFunction sa_recompile_views +syn keyword sqlFunction sa_remove_index_consultant_analysis +syn keyword sqlFunction sa_remove_index_consultant_workload +syn keyword sqlFunction sa_reset_identity +syn keyword sqlFunction sa_resume_workload_capture +syn keyword sqlFunction sa_server_option +syn keyword sqlFunction sa_set_simulated_scale_factor +syn keyword sqlFunction sa_setremoteuser +syn keyword sqlFunction sa_setsubscription +syn keyword sqlFunction sa_start_recording_commits +syn keyword sqlFunction sa_start_workload_capture +syn keyword sqlFunction sa_statement_text +syn keyword sqlFunction sa_stop_index_consultant +syn keyword sqlFunction sa_stop_recording_commits +syn keyword sqlFunction sa_stop_workload_capture +syn keyword sqlFunction sa_sync +syn keyword sqlFunction sa_sync_sub +syn keyword sqlFunction sa_table_fragmentation +syn keyword sqlFunction sa_table_page_usage +syn keyword sqlFunction sa_table_stats +syn keyword sqlFunction sa_update_index_consultant_workload +syn keyword sqlFunction sa_validate +syn keyword sqlFunction sa_virtual_sysindex +syn keyword sqlFunction sa_virtual_sysixcol + +" sp_ procedures +syn keyword sqlFunction sp_addalias +syn keyword sqlFunction sp_addauditrecord +syn keyword sqlFunction sp_adddumpdevice +syn keyword sqlFunction sp_addgroup +syn keyword sqlFunction sp_addlanguage +syn keyword sqlFunction sp_addlogin +syn keyword sqlFunction sp_addmessage +syn keyword sqlFunction sp_addremotelogin +syn keyword sqlFunction sp_addsegment +syn keyword sqlFunction sp_addserver +syn keyword sqlFunction sp_addthreshold +syn keyword sqlFunction sp_addtype +syn keyword sqlFunction sp_adduser +syn keyword sqlFunction sp_auditdatabase +syn keyword sqlFunction sp_auditlogin +syn keyword sqlFunction sp_auditobject +syn keyword sqlFunction sp_auditoption +syn keyword sqlFunction sp_auditsproc +syn keyword sqlFunction sp_bindefault +syn keyword sqlFunction sp_bindmsg +syn keyword sqlFunction sp_bindrule +syn keyword sqlFunction sp_changedbowner +syn keyword sqlFunction sp_changegroup +syn keyword sqlFunction sp_checknames +syn keyword sqlFunction sp_checkperms +syn keyword sqlFunction sp_checkreswords +syn keyword sqlFunction sp_clearstats +syn keyword sqlFunction sp_column_privileges +syn keyword sqlFunction sp_columns +syn keyword sqlFunction sp_commonkey +syn keyword sqlFunction sp_configure +syn keyword sqlFunction sp_cursorinfo +syn keyword sqlFunction sp_databases +syn keyword sqlFunction sp_datatype_info +syn keyword sqlFunction sp_dboption +syn keyword sqlFunction sp_dbremap +syn keyword sqlFunction sp_depends +syn keyword sqlFunction sp_diskdefault +syn keyword sqlFunction sp_displaylogin +syn keyword sqlFunction sp_dropalias +syn keyword sqlFunction sp_dropdevice +syn keyword sqlFunction sp_dropgroup +syn keyword sqlFunction sp_dropkey +syn keyword sqlFunction sp_droplanguage +syn keyword sqlFunction sp_droplogin +syn keyword sqlFunction sp_dropmessage +syn keyword sqlFunction sp_dropremotelogin +syn keyword sqlFunction sp_dropsegment +syn keyword sqlFunction sp_dropserver +syn keyword sqlFunction sp_dropthreshold +syn keyword sqlFunction sp_droptype +syn keyword sqlFunction sp_dropuser +syn keyword sqlFunction sp_estspace +syn keyword sqlFunction sp_extendsegment +syn keyword sqlFunction sp_fkeys +syn keyword sqlFunction sp_foreignkey +syn keyword sqlFunction sp_getmessage +syn keyword sqlFunction sp_help +syn keyword sqlFunction sp_helpconstraint +syn keyword sqlFunction sp_helpdb +syn keyword sqlFunction sp_helpdevice +syn keyword sqlFunction sp_helpgroup +syn keyword sqlFunction sp_helpindex +syn keyword sqlFunction sp_helpjoins +syn keyword sqlFunction sp_helpkey +syn keyword sqlFunction sp_helplanguage +syn keyword sqlFunction sp_helplog +syn keyword sqlFunction sp_helpprotect +syn keyword sqlFunction sp_helpremotelogin +syn keyword sqlFunction sp_helpsegment +syn keyword sqlFunction sp_helpserver +syn keyword sqlFunction sp_helpsort +syn keyword sqlFunction sp_helptext +syn keyword sqlFunction sp_helpthreshold +syn keyword sqlFunction sp_helpuser +syn keyword sqlFunction sp_indsuspect +syn keyword sqlFunction sp_lock +syn keyword sqlFunction sp_locklogin +syn keyword sqlFunction sp_logdevice +syn keyword sqlFunction sp_login_environment +syn keyword sqlFunction sp_modifylogin +syn keyword sqlFunction sp_modifythreshold +syn keyword sqlFunction sp_monitor +syn keyword sqlFunction sp_password +syn keyword sqlFunction sp_pkeys +syn keyword sqlFunction sp_placeobject +syn keyword sqlFunction sp_primarykey +syn keyword sqlFunction sp_procxmode +syn keyword sqlFunction sp_recompile +syn keyword sqlFunction sp_remap +syn keyword sqlFunction sp_remote_columns +syn keyword sqlFunction sp_remote_exported_keys +syn keyword sqlFunction sp_remote_imported_keys +syn keyword sqlFunction sp_remote_pcols +syn keyword sqlFunction sp_remote_primary_keys +syn keyword sqlFunction sp_remote_procedures +syn keyword sqlFunction sp_remote_tables +syn keyword sqlFunction sp_remoteoption +syn keyword sqlFunction sp_rename +syn keyword sqlFunction sp_renamedb +syn keyword sqlFunction sp_reportstats +syn keyword sqlFunction sp_reset_tsql_environment +syn keyword sqlFunction sp_role +syn keyword sqlFunction sp_server_info +syn keyword sqlFunction sp_servercaps +syn keyword sqlFunction sp_serverinfo +syn keyword sqlFunction sp_serveroption +syn keyword sqlFunction sp_setlangalias +syn keyword sqlFunction sp_setreplicate +syn keyword sqlFunction sp_setrepproc +syn keyword sqlFunction sp_setreptable +syn keyword sqlFunction sp_spaceused +syn keyword sqlFunction sp_special_columns +syn keyword sqlFunction sp_sproc_columns +syn keyword sqlFunction sp_statistics +syn keyword sqlFunction sp_stored_procedures +syn keyword sqlFunction sp_syntax +syn keyword sqlFunction sp_table_privileges +syn keyword sqlFunction sp_tables +syn keyword sqlFunction sp_tsql_environment +syn keyword sqlFunction sp_tsql_feature_not_supported +syn keyword sqlFunction sp_unbindefault +syn keyword sqlFunction sp_unbindmsg +syn keyword sqlFunction sp_unbindrule +syn keyword sqlFunction sp_volchanged +syn keyword sqlFunction sp_who +syn keyword sqlFunction xp_scanf +syn keyword sqlFunction xp_sprintf + +" server functions +syn keyword sqlFunction col_length +syn keyword sqlFunction col_name +syn keyword sqlFunction index_col +syn keyword sqlFunction object_id +syn keyword sqlFunction object_name +syn keyword sqlFunction proc_role +syn keyword sqlFunction show_role +syn keyword sqlFunction xp_cmdshell +syn keyword sqlFunction xp_msver +syn keyword sqlFunction xp_read_file +syn keyword sqlFunction xp_real_cmdshell +syn keyword sqlFunction xp_real_read_file +syn keyword sqlFunction xp_real_sendmail +syn keyword sqlFunction xp_real_startmail +syn keyword sqlFunction xp_real_startsmtp +syn keyword sqlFunction xp_real_stopmail +syn keyword sqlFunction xp_real_stopsmtp +syn keyword sqlFunction xp_real_write_file +syn keyword sqlFunction xp_scanf +syn keyword sqlFunction xp_sendmail +syn keyword sqlFunction xp_sprintf +syn keyword sqlFunction xp_startmail +syn keyword sqlFunction xp_startsmtp +syn keyword sqlFunction xp_stopmail +syn keyword sqlFunction xp_stopsmtp +syn keyword sqlFunction xp_write_file + +" http functions +syn keyword sqlFunction http_header http_variable +syn keyword sqlFunction next_http_header next_http_response_header next_http_variable +syn keyword sqlFunction sa_set_http_header sa_set_http_option +syn keyword sqlFunction sa_http_variable_info sa_http_header_info + +" http functions 9.0.1 +syn keyword sqlFunction http_encode http_decode +syn keyword sqlFunction html_encode html_decode + +" XML function support +syn keyword sqlFunction openxml xmlelement xmlforest xmlgen xmlconcat xmlagg +syn keyword sqlFunction xmlattributes + +" Spatial Compatibility Functions +syn keyword sqlFunction ST_BdMPolyFromText +syn keyword sqlFunction ST_BdMPolyFromWKB +syn keyword sqlFunction ST_BdPolyFromText +syn keyword sqlFunction ST_BdPolyFromWKB +syn keyword sqlFunction ST_CPolyFromText +syn keyword sqlFunction ST_CPolyFromWKB +syn keyword sqlFunction ST_CircularFromTxt +syn keyword sqlFunction ST_CircularFromWKB +syn keyword sqlFunction ST_CompoundFromTxt +syn keyword sqlFunction ST_CompoundFromWKB +syn keyword sqlFunction ST_GeomCollFromTxt +syn keyword sqlFunction ST_GeomCollFromWKB +syn keyword sqlFunction ST_GeomFromText +syn keyword sqlFunction ST_GeomFromWKB +syn keyword sqlFunction ST_LineFromText +syn keyword sqlFunction ST_LineFromWKB +syn keyword sqlFunction ST_MCurveFromText +syn keyword sqlFunction ST_MCurveFromWKB +syn keyword sqlFunction ST_MLineFromText +syn keyword sqlFunction ST_MLineFromWKB +syn keyword sqlFunction ST_MPointFromText +syn keyword sqlFunction ST_MPointFromWKB +syn keyword sqlFunction ST_MPolyFromText +syn keyword sqlFunction ST_MPolyFromWKB +syn keyword sqlFunction ST_MSurfaceFromTxt +syn keyword sqlFunction ST_MSurfaceFromWKB +syn keyword sqlFunction ST_OrderingEquals +syn keyword sqlFunction ST_PointFromText +syn keyword sqlFunction ST_PointFromWKB +syn keyword sqlFunction ST_PolyFromText +syn keyword sqlFunction ST_PolyFromWKB +" Spatial Structural Methods +syn keyword sqlFunction ST_CoordDim +syn keyword sqlFunction ST_CurveN +syn keyword sqlFunction ST_Dimension +syn keyword sqlFunction ST_EndPoint +syn keyword sqlFunction ST_ExteriorRing +syn keyword sqlFunction ST_GeometryN +syn keyword sqlFunction ST_GeometryType +syn keyword sqlFunction ST_InteriorRingN +syn keyword sqlFunction ST_Is3D +syn keyword sqlFunction ST_IsClosed +syn keyword sqlFunction ST_IsEmpty +syn keyword sqlFunction ST_IsMeasured +syn keyword sqlFunction ST_IsRing +syn keyword sqlFunction ST_IsSimple +syn keyword sqlFunction ST_IsValid +syn keyword sqlFunction ST_NumCurves +syn keyword sqlFunction ST_NumGeometries +syn keyword sqlFunction ST_NumInteriorRing +syn keyword sqlFunction ST_NumPoints +syn keyword sqlFunction ST_PointN +syn keyword sqlFunction ST_StartPoint +"Spatial Computation +syn keyword sqlFunction ST_Length +syn keyword sqlFunction ST_Area +syn keyword sqlFunction ST_Centroid +syn keyword sqlFunction ST_Area +syn keyword sqlFunction ST_Centroid +syn keyword sqlFunction ST_IsWorld +syn keyword sqlFunction ST_Perimeter +syn keyword sqlFunction ST_PointOnSurface +syn keyword sqlFunction ST_Distance +" Spatial Input/Output +syn keyword sqlFunction ST_AsBinary +syn keyword sqlFunction ST_AsGML +syn keyword sqlFunction ST_AsGeoJSON +syn keyword sqlFunction ST_AsSVG +syn keyword sqlFunction ST_AsSVGAggr +syn keyword sqlFunction ST_AsText +syn keyword sqlFunction ST_AsWKB +syn keyword sqlFunction ST_AsWKT +syn keyword sqlFunction ST_AsXML +syn keyword sqlFunction ST_GeomFromBinary +syn keyword sqlFunction ST_GeomFromShape +syn keyword sqlFunction ST_GeomFromText +syn keyword sqlFunction ST_GeomFromWKB +syn keyword sqlFunction ST_GeomFromWKT +syn keyword sqlFunction ST_GeomFromXML +" Spatial Cast Methods +syn keyword sqlFunction ST_CurvePolyToPoly +syn keyword sqlFunction ST_CurveToLine +syn keyword sqlFunction ST_ToCircular +syn keyword sqlFunction ST_ToCompound +syn keyword sqlFunction ST_ToCurve +syn keyword sqlFunction ST_ToCurvePoly +syn keyword sqlFunction ST_ToGeomColl +syn keyword sqlFunction ST_ToLineString +syn keyword sqlFunction ST_ToMultiCurve +syn keyword sqlFunction ST_ToMultiLine +syn keyword sqlFunction ST_ToMultiPoint +syn keyword sqlFunction ST_ToMultiPolygon +syn keyword sqlFunction ST_ToMultiSurface +syn keyword sqlFunction ST_ToPoint +syn keyword sqlFunction ST_ToPolygon +syn keyword sqlFunction ST_ToSurface + +" Array functions 16.x +syn keyword sqlFunction array array_agg array_max_cardinality trim_array +syn keyword sqlFunction error_line error_message error_procedure +syn keyword sqlFunction error_sqlcode error_sqlstate error_stack_trace + + +" keywords +syn keyword sqlKeyword absolute accent access account action active activate add address admin +syn keyword sqlKeyword aes_decrypt after aggregate algorithm allow_dup_row allow allowed alter +syn keyword sqlKeyword always and angular ansi_substring any as append apply +syn keyword sqlKeyword arbiter array asc ascii ase +syn keyword sqlKeyword assign at atan2 atomic attended +syn keyword sqlKeyword audit auditing authentication authorization axis +syn keyword sqlKeyword autoincrement autostop batch bcp before +syn keyword sqlKeyword between bit_and bit_length bit_or bit_substr bit_xor +syn keyword sqlKeyword blank blanks block +syn keyword sqlKeyword both bottom unbounded breaker bufferpool +syn keyword sqlKeyword build bulk by byte bytes cache calibrate calibration +syn keyword sqlKeyword cancel capability cardinality cascade cast +syn keyword sqlKeyword catalog catch ceil change changes char char_convert +syn keyword sqlKeyword check checkpointlog checksum class classes client cmp +syn keyword sqlKeyword cluster clustered collation +syn keyword sqlKeyword column columns +syn keyword sqlKeyword command comments committed commitid comparisons +syn keyword sqlKeyword compatible component compressed compute computes +syn keyword sqlKeyword concat configuration confirm conflict connection +syn keyword sqlKeyword console consolidate consolidated +syn keyword sqlKeyword constraint constraints content +syn keyword sqlKeyword convert coordinate coordinator copy count count_set_bits +syn keyword sqlKeyword crc createtime critical cross cube cume_dist +syn keyword sqlKeyword current cursor data data database +syn keyword sqlKeyword current_timestamp current_user cycle +syn keyword sqlKeyword databases datatype dba dbfile +syn keyword sqlKeyword dbspace dbspaces dbspacename debug decoupled +syn keyword sqlKeyword decrypted default defaults default_dbspace deferred +syn keyword sqlKeyword definer definition +syn keyword sqlKeyword delay deleting delimited dependencies desc +syn keyword sqlKeyword description deterministic directory +syn keyword sqlKeyword disable disabled disallow distinct disksandbox disk_sandbox +syn keyword sqlKeyword dn do domain download duplicate +syn keyword sqlKeyword dsetpass dttm dynamic each earth editproc effective ejb +syn keyword sqlKeyword elimination ellipsoid else elseif +syn keyword sqlKeyword email empty enable encapsulated encrypted encryption end +syn keyword sqlKeyword encoding endif engine environment erase error errors escape escapes event +syn keyword sqlKeyword event_parameter every exception exclude excluded exclusive exec +syn keyword sqlKeyword existing exists expanded expiry express exprtype extended_property +syn keyword sqlKeyword external externlogin factor failover false +syn keyword sqlKeyword fastfirstrow feature fieldproc file files filler +syn keyword sqlKeyword fillfactor final finish first first_keyword first_value +syn keyword sqlKeyword flattening +syn keyword sqlKeyword following force foreign format forjson forxml forxml_sep fp frame +syn keyword sqlKeyword free freepage french fresh full function +syn keyword sqlKeyword gb generic get_bit go global grid +syn keyword sqlKeyword group handler hash having header hexadecimal +syn keyword sqlKeyword hidden high history hg hng hold holdlock host +syn keyword sqlKeyword hours http_body http_session_timeout id identified identity ignore +syn keyword sqlKeyword ignore_dup_key ignore_dup_row immediate +syn keyword sqlKeyword in inactiv inactive inactivity included increment incremental +syn keyword sqlKeyword index index_enabled index_lparen indexonly info information +syn keyword sqlKeyword inheritance inline inner inout insensitive inserting +syn keyword sqlKeyword instead +syn keyword sqlKeyword internal intersection into introduced inverse invoker +syn keyword sqlKeyword iq is isolation +syn keyword sqlKeyword jar java java_location java_main_userid java_vm_options +syn keyword sqlKeyword jconnect jdk join json kb key keys keep language last +syn keyword sqlKeyword last_keyword last_value lateral latitude +syn keyword sqlKeyword ld ldap left len linear lf ln level like +syn keyword sqlKeyword limit local location log +syn keyword sqlKeyword logging logical login logscan long longitude low lru ls +syn keyword sqlKeyword main major manage manual mark master +syn keyword sqlKeyword match matched materialized max maxvalue maximum mb measure median membership +syn keyword sqlKeyword merge metadata methods migrate minimum minor minutes minvalue mirror +syn keyword sqlKeyword mode modify monitor move mru multiplex +syn keyword sqlKeyword name named namespaces national native natural new next nextval +syn keyword sqlKeyword ngram no noholdlock nolock nonclustered none normal not +syn keyword sqlKeyword notify null nullable_constant nulls +syn keyword sqlKeyword object objects oem_string of off offline offset olap +syn keyword sqlKeyword old on online only openstring operator +syn keyword sqlKeyword optimization optimizer option +syn keyword sqlKeyword or order ordinality organization others out outer over owner +syn keyword sqlKeyword package packetsize padding page pages +syn keyword sqlKeyword paglock parallel parameter parent part partial +syn keyword sqlKeyword partition partitions partner password path pctfree +syn keyword sqlKeyword permissions perms plan planar policy polygon populate port postfilter preceding +syn keyword sqlKeyword precisionprefetch prefilter prefix preserve preview previous +syn keyword sqlKeyword primary prior priority priqty private privilege privileges procedure profile profiling +syn keyword sqlKeyword property_is_cumulative property_is_numeric public publication publish publisher +syn keyword sqlKeyword quiesce quote quotes range readclientfile readcommitted reader readfile readonly +syn keyword sqlKeyword readpast readuncommitted readwrite rebuild +syn keyword sqlKeyword received recompile recover recursive references +syn keyword sqlKeyword referencing regex regexp regexp_substr relative relocate +syn keyword sqlKeyword rename repeatable repeatableread replicate replication +syn keyword sqlKeyword requests request_timeout required rereceive resend reserve reset +syn keyword sqlKeyword resizing resolve resource respect restart +syn keyword sqlKeyword restrict result retain retries +syn keyword sqlKeyword returns reverse right role roles +syn keyword sqlKeyword rollup root row row_number rowlock rows rowtype +syn keyword sqlKeyword sa_index_hash sa_internal_fk_verify sa_internal_termbreak +syn keyword sqlKeyword sa_order_preserving_hash sa_order_preserving_hash_big sa_order_preserving_hash_prefix +syn keyword sqlKeyword sa_file_free_pages sa_internal_type_from_catalog sa_internal_valid_hash +syn keyword sqlKeyword sa_internal_validate_value sa_json_element +syn keyword sqlKeyword scale schedule schema scope script scripted scroll search seconds secqty security +syn keyword sqlKeyword semi send sensitive sent sequence serializable +syn keyword sqlKeyword server severity session set_bit set_bits sets +syn keyword sqlKeyword shapefile share side simple since site size skip +syn keyword sqlKeyword snap snapshot soapheader soap_header +syn keyword sqlKeyword spatial split some sorted_data +syn keyword sqlKeyword sql sqlcode sqlid sqlflagger sqlstate sqrt square +syn keyword sqlKeyword stacker stale state statement statistics status stddev_pop stddev_samp +syn keyword sqlKeyword stemmer stogroup stoplist storage store +syn keyword sqlKeyword strip stripesizekb striping subpages subscribe subscription +syn keyword sqlKeyword subtransaction suser_id suser_name suspend synchronization +syn keyword sqlKeyword syntax_error table tables tablock +syn keyword sqlKeyword tablockx target tb temp template temporary term then ties +syn keyword sqlKeyword timezone timeout tls to to_char to_nchar tolerance top +syn keyword sqlKeyword trace traced_plan tracing +syn keyword sqlKeyword transfer transform transaction transactional treat tries +syn keyword sqlKeyword true try tsequal type tune uncommitted unconditionally +syn keyword sqlKeyword unenforced unicode unique unistr unit unknown unlimited unload +syn keyword sqlKeyword unpartition unquiesce updatetime updating updlock upgrade upload +syn keyword sqlKeyword upper usage use user +syn keyword sqlKeyword using utc utilities validproc +syn keyword sqlKeyword value values varchar variable +syn keyword sqlKeyword varying var_pop var_samp vcat verbosity +syn keyword sqlKeyword verify versions view virtual wait +syn keyword sqlKeyword warning wd web when where with with_auto +syn keyword sqlKeyword with_auto with_cube with_rollup without +syn keyword sqlKeyword with_lparen within word work workload write writefile +syn keyword sqlKeyword writeclientfile writer writers writeserver xlock +syn keyword sqlKeyword war xml zeros zone +" XML +syn keyword sqlKeyword raw auto elements explicit +" HTTP support +syn keyword sqlKeyword authorization secure url service next_soap_header +" HTTP 9.0.2 new procedure keywords +syn keyword sqlKeyword namespace certificate certificates clientport proxy trusted_certificates_file +" OLAP support 9.0.0 +syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept +syn keyword sqlKeyword regr_count regr_r2 regr_avgx regr_avgy +syn keyword sqlKeyword regr_sxx regr_syy regr_sxy + +" Alternate keywords +syn keyword sqlKeyword character dec options proc reference +syn keyword sqlKeyword subtrans tran syn keyword + +" Login Mode Options +syn keyword sqlKeywordLogin standard integrated kerberos LDAPUA +syn keyword sqlKeywordLogin cloudadmin mixed + +" Spatial Predicates +syn keyword sqlKeyword ST_Contains +syn keyword sqlKeyword ST_ContainsFilter +syn keyword sqlKeyword ST_CoveredBy +syn keyword sqlKeyword ST_CoveredByFilter +syn keyword sqlKeyword ST_Covers +syn keyword sqlKeyword ST_CoversFilter +syn keyword sqlKeyword ST_Crosses +syn keyword sqlKeyword ST_Disjoint +syn keyword sqlKeyword ST_Equals +syn keyword sqlKeyword ST_EqualsFilter +syn keyword sqlKeyword ST_Intersects +syn keyword sqlKeyword ST_IntersectsFilter +syn keyword sqlKeyword ST_IntersectsRect +syn keyword sqlKeyword ST_OrderingEquals +syn keyword sqlKeyword ST_Overlaps +syn keyword sqlKeyword ST_Relate +syn keyword sqlKeyword ST_Touches +syn keyword sqlKeyword ST_Within +syn keyword sqlKeyword ST_WithinFilter +" Spatial Set operations +syn keyword sqlKeyword ST_Affine +syn keyword sqlKeyword ST_Boundary +syn keyword sqlKeyword ST_Buffer +syn keyword sqlKeyword ST_ConvexHull +syn keyword sqlKeyword ST_ConvexHullAggr +syn keyword sqlKeyword ST_Difference +syn keyword sqlKeyword ST_Intersection +syn keyword sqlKeyword ST_IntersectionAggr +syn keyword sqlKeyword ST_SymDifference +syn keyword sqlKeyword ST_Union +syn keyword sqlKeyword ST_UnionAggr +" Spatial Bounds +syn keyword sqlKeyword ST_Envelope +syn keyword sqlKeyword ST_EnvelopeAggr +syn keyword sqlKeyword ST_Lat +syn keyword sqlKeyword ST_LatMax +syn keyword sqlKeyword ST_LatMin +syn keyword sqlKeyword ST_Long +syn keyword sqlKeyword ST_LongMax +syn keyword sqlKeyword ST_LongMin +syn keyword sqlKeyword ST_M +syn keyword sqlKeyword ST_MMax +syn keyword sqlKeyword ST_MMin +syn keyword sqlKeyword ST_Point +syn keyword sqlKeyword ST_X +syn keyword sqlKeyword ST_XMax +syn keyword sqlKeyword ST_XMin +syn keyword sqlKeyword ST_Y +syn keyword sqlKeyword ST_YMax +syn keyword sqlKeyword ST_YMin +syn keyword sqlKeyword ST_Z +syn keyword sqlKeyword ST_ZMax +syn keyword sqlKeyword ST_ZMin +" Spatial Collection Aggregates +syn keyword sqlKeyword ST_GeomCollectionAggr +syn keyword sqlKeyword ST_LineStringAggr +syn keyword sqlKeyword ST_MultiCurveAggr +syn keyword sqlKeyword ST_MultiLineStringAggr +syn keyword sqlKeyword ST_MultiPointAggr +syn keyword sqlKeyword ST_MultiPolygonAggr +syn keyword sqlKeyword ST_MultiSurfaceAggr +syn keyword sqlKeyword ST_Perimeter +syn keyword sqlKeyword ST_PointOnSurface +" Spatial SRS +syn keyword sqlKeyword ST_CompareWKT +syn keyword sqlKeyword ST_FormatWKT +syn keyword sqlKeyword ST_ParseWKT +syn keyword sqlKeyword ST_TransformGeom +syn keyword sqlKeyword ST_GeometryTypeFromBaseType +syn keyword sqlKeyword ST_SnapToGrid +syn keyword sqlKeyword ST_Transform +syn keyword sqlKeyword ST_SRID +syn keyword sqlKeyword ST_SRIDFromBaseType +syn keyword sqlKeyword ST_LoadConfigurationData +" Spatial Indexes +syn keyword sqlKeyword ST_LinearHash +syn keyword sqlKeyword ST_LinearUnHash + +syn keyword sqlOperator in any some all between exists +syn keyword sqlOperator like escape not is and or +syn keyword sqlOperator minus +syn keyword sqlOperator prior distinct unnest + +syn keyword sqlStatement allocate alter attach backup begin break call case catch +syn keyword sqlStatement checkpoint clear close comment commit configure connect +syn keyword sqlStatement continue create deallocate declare delete describe +syn keyword sqlStatement detach disconnect drop except execute exit explain fetch +syn keyword sqlStatement for forward from get goto grant help if include +syn keyword sqlStatement input insert install intersect leave load lock loop +syn keyword sqlStatement message open output parameters passthrough +syn keyword sqlStatement prepare print put raiserror read readtext refresh release +syn keyword sqlStatement remote remove reorganize resignal restore resume +syn keyword sqlStatement return revoke rollback save savepoint select +syn keyword sqlStatement set setuser signal start stop synchronize +syn keyword sqlStatement system trigger truncate try union unload update +syn keyword sqlStatement validate waitfor whenever while window writetext + + +syn keyword sqlType char nchar long varchar nvarchar text ntext uniqueidentifierstr xml +syn keyword sqlType bigint bit decimal double varbit +syn keyword sqlType float int integer numeric +syn keyword sqlType smallint tinyint real +syn keyword sqlType money smallmoney +syn keyword sqlType date datetime datetimeoffset smalldatetime time timestamp +syn keyword sqlType binary image varray varbinary uniqueidentifier +syn keyword sqlType unsigned +" Spatial types +syn keyword sqlType st_geometry st_point st_curve st_surface st_geomcollection +syn keyword sqlType st_linestring st_circularstring st_compoundcurve +syn keyword sqlType st_curvepolygon st_polygon +syn keyword sqlType st_multipoint st_multicurve st_multisurface +syn keyword sqlType st_multilinestring st_multipolygon + +syn keyword sqlOption Allow_nulls_by_default +syn keyword sqlOption Allow_read_client_file +syn keyword sqlOption Allow_snapshot_isolation +syn keyword sqlOption Allow_write_client_file +syn keyword sqlOption Ansi_blanks +syn keyword sqlOption Ansi_close_cursors_on_rollback +syn keyword sqlOption Ansi_permissions +syn keyword sqlOption Ansi_substring +syn keyword sqlOption Ansi_update_constraints +syn keyword sqlOption Ansinull +syn keyword sqlOption Auditing +syn keyword sqlOption Auditing_options +syn keyword sqlOption Auto_commit_on_create_local_temp_index +syn keyword sqlOption Background_priority +syn keyword sqlOption Blocking +syn keyword sqlOption Blocking_others_timeout +syn keyword sqlOption Blocking_timeout +syn keyword sqlOption Chained +syn keyword sqlOption Checkpoint_time +syn keyword sqlOption Cis_option +syn keyword sqlOption Cis_rowset_size +syn keyword sqlOption Close_on_endtrans +syn keyword sqlOption Collect_statistics_on_dml_updates +syn keyword sqlOption Conn_auditing +syn keyword sqlOption Connection_authentication +syn keyword sqlOption Continue_after_raiserror +syn keyword sqlOption Conversion_error +syn keyword sqlOption Cooperative_commit_timeout +syn keyword sqlOption Cooperative_commits +syn keyword sqlOption Database_authentication +syn keyword sqlOption Date_format +syn keyword sqlOption Date_order +syn keyword sqlOption db_publisher +syn keyword sqlOption Debug_messages +syn keyword sqlOption Dedicated_task +syn keyword sqlOption Default_dbspace +syn keyword sqlOption Default_timestamp_increment +syn keyword sqlOption Delayed_commit_timeout +syn keyword sqlOption Delayed_commits +syn keyword sqlOption Divide_by_zero_error +syn keyword sqlOption Escape_character +syn keyword sqlOption Exclude_operators +syn keyword sqlOption Extended_join_syntax +syn keyword sqlOption Extern_login_credentials +syn keyword sqlOption Fire_triggers +syn keyword sqlOption First_day_of_week +syn keyword sqlOption For_xml_null_treatment +syn keyword sqlOption Force_view_creation +syn keyword sqlOption Global_database_id +syn keyword sqlOption Http_session_timeout +syn keyword sqlOption Http_connection_pool_basesize +syn keyword sqlOption Http_connection_pool_timeout +syn keyword sqlOption Integrated_server_name +syn keyword sqlOption Isolation_level +syn keyword sqlOption Java_class_path +syn keyword sqlOption Java_location +syn keyword sqlOption Java_main_userid +syn keyword sqlOption Java_vm_options +syn keyword sqlOption Lock_rejected_rows +syn keyword sqlOption Log_deadlocks +syn keyword sqlOption Login_mode +syn keyword sqlOption Login_procedure +syn keyword sqlOption Materialized_view_optimization +syn keyword sqlOption Max_client_statements_cached +syn keyword sqlOption Max_cursor_count +syn keyword sqlOption Max_hash_size +syn keyword sqlOption Max_plans_cached +syn keyword sqlOption Max_priority +syn keyword sqlOption Max_query_tasks +syn keyword sqlOption Max_recursive_iterations +syn keyword sqlOption Max_statement_count +syn keyword sqlOption Max_temp_space +syn keyword sqlOption Min_password_length +syn keyword sqlOption Min_role_admins +syn keyword sqlOption Nearest_century +syn keyword sqlOption Non_keywords +syn keyword sqlOption Odbc_describe_binary_as_varbinary +syn keyword sqlOption Odbc_distinguish_char_and_varchar +syn keyword sqlOption Oem_string +syn keyword sqlOption On_charset_conversion_failure +syn keyword sqlOption On_tsql_error +syn keyword sqlOption Optimization_goal +syn keyword sqlOption Optimization_level +syn keyword sqlOption Optimization_workload +syn keyword sqlOption Pinned_cursor_percent_of_cache +syn keyword sqlOption Post_login_procedure +syn keyword sqlOption Precision +syn keyword sqlOption Prefetch +syn keyword sqlOption Preserve_source_format +syn keyword sqlOption Prevent_article_pkey_update +syn keyword sqlOption Priority +syn keyword sqlOption Progress_messages +syn keyword sqlOption Query_mem_timeout +syn keyword sqlOption Quoted_identifier +syn keyword sqlOption Read_past_deleted +syn keyword sqlOption Recovery_time +syn keyword sqlOption Remote_idle_timeout +syn keyword sqlOption Replicate_all +syn keyword sqlOption Request_timeout +syn keyword sqlOption Reserved_keywords +syn keyword sqlOption Return_date_time_as_string +syn keyword sqlOption Rollback_on_deadlock +syn keyword sqlOption Row_counts +syn keyword sqlOption Scale +syn keyword sqlOption Secure_feature_key +syn keyword sqlOption Sort_collation +syn keyword sqlOption Sql_flagger_error_level +syn keyword sqlOption Sql_flagger_warning_level +syn keyword sqlOption String_rtruncation +syn keyword sqlOption st_geometry_asbinary_format +syn keyword sqlOption st_geometry_astext_format +syn keyword sqlOption st_geometry_asxml_format +syn keyword sqlOption st_geometry_describe_type +syn keyword sqlOption st_geometry_interpolation +syn keyword sqlOption st_geometry_on_invalid +syn keyword sqlOption Subsume_row_locks +syn keyword sqlOption Suppress_tds_debugging +syn keyword sqlOption Synchronize_mirror_on_commit +syn keyword sqlOption Tds_empty_string_is_null +syn keyword sqlOption Temp_space_limit_check +syn keyword sqlOption Time_format +syn keyword sqlOption Time_zone_adjustment +syn keyword sqlOption Timestamp_format +syn keyword sqlOption Timestamp_with_time_zone_format +syn keyword sqlOption Truncate_timestamp_values +syn keyword sqlOption Tsql_outer_joins +syn keyword sqlOption Tsql_variables +syn keyword sqlOption Updatable_statement_isolation +syn keyword sqlOption Update_statistics +syn keyword sqlOption Upgrade_database_capability +syn keyword sqlOption User_estimates +syn keyword sqlOption Uuid_has_hyphens +syn keyword sqlOption Verify_password_function +syn keyword sqlOption Wait_for_commit +syn keyword sqlOption Webservice_namespace_host +syn keyword sqlOption Webservice_sessionid_name + +" Strings and characters: +syn region sqlString start=+"+ end=+"+ contains=@Spell +syn region sqlString start=+'+ end=+'+ contains=@Spell + +" Numbers: +syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" + +" Comments: +syn region sqlDashComment start=/--/ end=/$/ contains=@Spell +syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell +syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell +syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell +syn sync ccomment sqlComment +syn sync ccomment sqlDashComment +syn sync ccomment sqlSlashComment + +hi def link sqlDashComment Comment +hi def link sqlSlashComment Comment +hi def link sqlMultiComment Comment +hi def link sqlNumber Number +hi def link sqlOperator Operator +hi def link sqlSpecial Special +hi def link sqlKeyword Keyword +hi def link sqlStatement Statement +hi def link sqlString String +hi def link sqlType Type +hi def link sqlFunction Function +hi def link sqlOption PreProc + +let b:current_syntax = "sqlanywhere" + +" vim:sw=4: diff --git a/share/vim/vim73/syntax/sqlforms.vim b/share/vim/vim74/syntax/sqlforms.vim similarity index 100% rename from share/vim/vim73/syntax/sqlforms.vim rename to share/vim/vim74/syntax/sqlforms.vim diff --git a/share/vim/vim74/syntax/sqlhana.vim b/share/vim/vim74/syntax/sqlhana.vim new file mode 100644 index 00000000..1410e99e --- /dev/null +++ b/share/vim/vim74/syntax/sqlhana.vim @@ -0,0 +1,293 @@ +" Vim syntax file +" Language: SQL, SAP HANA In Memory Database +" Maintainer: David Fishburn +" Last Change: 2012 Oct 23 +" Version: SP4 b (Q2 2012) +" Homepage: http://www.vim.org/scripts/script.php?script_id=4275 + +" Description: Updated to SAP HANA SP4 +" +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case ignore + +" The SQL reserved words, defined as keywords. +" These were pulled from the following SQL reference: +" http://help.sap.com/hana/hana_sql_en.pdf +" An easy approach is to copy all text from the PDF +" into a Vim buffer. The keywords are in UPPER case, +" so you can run the following commands to be left with +" mainly the UPPER case words: +" 1. Delete all words that do not begin with a Capital +" %s/\(\<[^A-Z]\w*\>\)//g +" 2. Remove all words where the 2nd letter is not a Capital +" %s/\(\<[A-Z][^A-Z]\w*\>\)//g +" 3. Remove all non-word (or space) characters +" %s/[^0-9A-Za-z_ ]*//g +" 4. Remove some known words +" %s/\<\(SAP\|HANA\|OK\|AG\|IBM\|DB2\|AIX\|POWER\d\+\|UNIX\)\>//g +" 5. Remove blank lines and trailing spaces +" %s/\s\+$//g +" %s/^\s\+//g +" %s/^$\n//g +" 6. Convert spaces to newlines remove single character +" %s/[ ]\+/\r/g +" %g/^\w$/d +" 7. Sort and remove duplicates +" :sort +" :Uniq +" 8. Use the WhatsMissing plugin against the sqlhana.vim file. +" 9. Generated a file of all UPPER cased words which should not +" be in the syntax file. These items should be removed +" from the list in step 7. You can use WhatsNotMissing +" between step 7 and this new file to weed out the words +" we know are not syntax related. +" 10. Use the WhatsMissingRemoveMatches to remove the words +" from step 9. + +syn keyword sqlSpecial false null true + +" Supported Functions for Date/Time types +syn keyword sqlFunction ADD_DAYS ADD_MONTHS ADD_SECONDS ADD_YEARS COALESCE +syn keyword sqlFunction CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_UTCDATE +syn keyword sqlFunction CURRENT_UTCTIME CURRENT_UTCTIMESTAMP +syn keyword sqlFunction DAYNAME DAYOFMONTH DAYOFYEAR DAYS_BETWEEN EXTRACT +syn keyword sqlFunction GREATEST HOUR IFNULL ISOWEEK LAST_DAY LEAST LOCALTOUTC +syn keyword sqlFunction MINUTE MONTH MONTHNAME NEXT_DAY NOW QUARTER SECOND +syn keyword sqlFunction SECONDS_BETWEEN UTCTOLOCAL WEEK WEEKDAY YEAR + +syn keyword sqlFunction TO_CHAR TO_DATE TO_DATS TO_NCHAR TO_TIME TO_TIMESTAMP UTCTOLOCAL + +" Aggregate +syn keyword sqlFunction COUNT MIN MAX SUM AVG STDDEV VAR + +" Datatype conversion +syn keyword sqlFunction CAST TO_ALPHANUM TO_BIGINT TO_BINARY TO_BLOB TO_CHAR TO_CLOB +syn keyword sqlFunction TO_DATE TO_DATS TO_DECIMAL TO_DOUBLE TO_INT TO_INTEGER TO_NCHAR +syn keyword sqlFunction TO_NCLOB TO_NVARCHAR TO_REAL TO_SECONDDATE TO_SMALLDECIMAL +syn keyword sqlFunction TO_SMALLINT TO_TIME TO_TIMESTAMP TO_TINYINT TO_VARCHAR TO_VARBINARY + +" Number functions +syn keyword sqlFunction ABS ACOS ASIN ATAN ATAN2 BINTOHEX BITAND CEIL COS COSH COT +syn keyword sqlFunction EXP FLOOR GREATEST HEXTOBIN LEAST LN LOG MOD POWER ROUND +syn keyword sqlFunction SIGN SIN SINH SQRT TAN TANH UMINUS + +" String functions +syn keyword sqlFunction ASCII CHAR CONCAT LCASE LENGTH LOCATE LOWER LPAD LTRIM +syn keyword sqlFunction NCHAR REPLACE RPAD RTRIM SUBSTR_AFTER SUBSTR_BEFORE +syn keyword sqlFunction SUBSTRING TRIM UCASE UNICODE UPPER + +" Miscellaneous functions +syn keyword sqlFunction COALESCE CURRENT_CONNECTION CURRENT_SCHEMA CURRENT_USER +syn keyword sqlFunction GROUPING_ID IFNULL MAP NULLIF SESSION_CONTEXT SESSION_USER SYSUUIDSQL +syn keyword sqlFunction GET_NUM_SERVERS + + +" sp_ procedures +" syn keyword sqlFunction sp_addalias + + +" Reserved keywords +syn keyword sqlkeyword ALL AS AT BEFORE +syn keyword sqlkeyword BEGIN BOTH BY +syn keyword sqlkeyword CONDITION +syn keyword sqlkeyword CURRVAL CURSOR DECLARE +syn keyword sqlkeyword DISTINCT DO ELSE ELSEIF ELSIF +syn keyword sqlkeyword END EXCEPTION EXEC +syn keyword sqlkeyword FOR FROM GROUP +syn keyword sqlkeyword HAVING IN +syn keyword sqlkeyword INOUT INTO IS +syn keyword sqlkeyword LEADING +syn keyword sqlkeyword LOOP MINUS NATURAL NEXTVAL +syn keyword sqlkeyword OF ON ORDER OUT +syn keyword sqlkeyword PRIOR RETURN RETURNS REVERSE +syn keyword sqlkeyword ROWID SELECT +syn keyword sqlkeyword SQL START STOP SYSDATE +syn keyword sqlkeyword SYSTIME SYSTIMESTAMP SYSUUID +syn keyword sqlkeyword TRAILING USING UTCDATE +syn keyword sqlkeyword UTCTIME UTCTIMESTAMP VALUES +syn keyword sqlkeyword WHILE +syn keyword sqlkeyword ANY SOME EXISTS ESCAPE + +" IF keywords +syn keyword sqlkeyword IF + +" CASE keywords +syn keyword sqlKeyword WHEN THEN + +" Syntax rules common to TEXT and SHORTTEXT keywords +syn keyword sqlKeyword LANGUAGE DETECTION LINGUISTIC +syn keyword sqlkeyword MIME TYPE +syn keyword sqlkeyword EXACT WEIGHT FUZZY FUZZINESSTHRESHOLD SEARCH +syn keyword sqlkeyword PHRASE INDEX RATIO REBUILD +syn keyword sqlkeyword CONFIGURATION +syn keyword sqlkeyword SEARCH ONLY +syn keyword sqlkeyword FAST PREPROCESS +syn keyword sqlkeyword SYNC SYNCHRONOUS ASYNC ASYNCHRONOUS FLUSH QUEUE +syn keyword sqlkeyword EVERY AFTER MINUTES DOCUMENTS SUSPEND + +" Statement keywords (i.e. after ALTER or CREATE) +syn keyword sqlkeyword AUDIT POLICY +syn keyword sqlkeyword FULLTEXT +syn keyword sqlkeyword SEQUENCE RESTART +syn keyword sqlkeyword TABLE +syn keyword sqlkeyword PROCEDURE STATISTICS +syn keyword sqlkeyword SCHEMA +syn keyword sqlkeyword SYNONYM +syn keyword sqlkeyword VIEW +syn keyword sqlkeyword COLUMN +syn keyword sqlkeyword SYSTEM LICENSE +syn keyword sqlkeyword SESSION +syn keyword sqlkeyword CANCEL WORK +syn keyword sqlkeyword PLAN CACHE +syn keyword sqlkeyword LOGGING NOLOGGING RETENTION +syn keyword sqlkeyword RECONFIGURE SERVICE +syn keyword sqlkeyword RESET MONITORING +syn keyword sqlkeyword SAVE DURATION PERFTRACE FUNCTION_PROFILER +syn keyword sqlkeyword SAVEPOINT +syn keyword sqlkeyword USER +syn keyword sqlkeyword ROLE +syn keyword sqlkeyword ASC DESC +syn keyword sqlkeyword OWNED +syn keyword sqlkeyword DEPENDENCIES SCRAMBLE + +" Create sequence +syn keyword sqlkeyword INCREMENT MAXVALUE MINVALUE CYCLE + +" Create table +syn keyword sqlkeyword HISTORY GLOBAL LOCAL TEMPORARY + +" Create trigger +syn keyword sqlkeyword TRIGGER REFERENCING EACH DEFAULT +syn keyword sqlkeyword SIGNAL RESIGNAL MESSAGE_TEXT OLD NEW +syn keyword sqlkeyword EXIT HANDLER SQL_ERROR_CODE +syn keyword sqlkeyword TARGET CONDITION SIGNAL + +" Alter table +syn keyword sqlkeyword ADD DROP MODIFY GENERATED ALWAYS +syn keyword sqlkeyword UNIQUE BTREE CPBTREE PRIMARY KEY +syn keyword sqlkeyword CONSTRAINT PRELOAD NONE +syn keyword sqlkeyword ROW THREADS BATCH +syn keyword sqlkeyword MOVE PARTITION TO LOCATION PHYSICAL OTHERS +syn keyword sqlkeyword ROUNDROBIN PARTITIONS HASH RANGE VALUE +syn keyword sqlkeyword PERSISTENT DELTA AUTO AUTOMERGE + +" Create audit policy +syn keyword sqlkeyword AUDITING SUCCESSFUL UNSUCCESSFUL +syn keyword sqlkeyword PRIVILEGE STRUCTURED CHANGE LEVEL +syn keyword sqlkeyword EMERGENCY ALERT CRITICAL WARNING INFO + +" Privileges +syn keyword sqlkeyword DEBUG EXECUTE + +" Schema +syn keyword sqlkeyword CASCADE RESTRICT PARAMETERS SCAN + +" Traces +syn keyword sqlkeyword CLIENT CRASHDUMP EMERGENCYDUMP +syn keyword sqlkeyword INDEXSERVER NAMESERVER DAEMON +syn keyword sqlkeyword CLEAR REMOVE TRACES + +" Reclaim +syn keyword sqlkeyword RECLAIM DATA VOLUME VERSION SPACE DEFRAGMENT SPARSIFY + +" Join +syn keyword sqlkeyword INNER OUTER LEFT RIGHT FULL CROSS JOIN +syn keyword sqlkeyword GROUPING SETS ROLLUP CUBE +syn keyword sqlkeyword BEST LIMIT OFFSET +syn keyword sqlkeyword WITH SUBTOTAL BALANCE TOTAL +syn keyword sqlkeyword TEXT_FILTER FILL UP SORT MATCHES TOP +syn keyword sqlkeyword RESULT OVERVIEW PREFIX MULTIPLE RESULTSETS + +" Lock +syn keyword sqlkeyword EXCLUSIVE MODE NOWAIT + +" Transaction +syn keyword sqlkeyword TRANSACTION ISOLATION READ COMMITTED +syn keyword sqlkeyword REPEATABLE SERIALIZABLE WRITE + +" Saml +syn keyword sqlkeyword SAML ASSERTION PROVIDER SUBJECT ISSUER + +" User +syn keyword sqlkeyword PASSWORD IDENTIFIED EXTERNALLY ATTEMPTS ATTEMPTS +syn keyword sqlkeyword ENABLE DISABLE OFF LIFETIME FORCE DEACTIVATE +syn keyword sqlkeyword ACTIVATE IDENTITY KERBEROS + +" Grant +syn keyword sqlkeyword ADMIN BACKUP CATALOG SCENARIO INIFILE MONITOR +syn keyword sqlkeyword OPTIMIZER OPTION +syn keyword sqlkeyword RESOURCE STRUCTUREDPRIVILEGE TRACE + +" Import +syn keyword sqlkeyword CSV FILE CONTROL NO CHECK SKIP FIRST LIST +syn keyword sqlkeyword RECORD DELIMITED FIELD OPTIONALLY ENCLOSED FORMAT + +" Roles +syn keyword sqlkeyword PUBLIC CONTENT_ADMIN MODELING MONITORING + +" Miscellaneous +syn keyword sqlkeyword APPLICATION BINARY IMMEDIATE COREFILE SECURITY DEFINER +syn keyword sqlkeyword DUMMY INVOKER MATERIALIZED MESSEGE_TEXT PARAMETER PARAMETERS +syn keyword sqlkeyword PART +syn keyword sqlkeyword CONSTANT SQLEXCEPTION SQLWARNING + +syn keyword sqlOperator WHERE BETWEEN LIKE NULL CONTAINS +syn keyword sqlOperator AND OR NOT CASE +syn keyword sqlOperator UNION INTERSECT EXCEPT + +syn keyword sqlStatement ALTER CALL CALLS CREATE DROP RENAME TRUNCATE +syn keyword sqlStatement DELETE INSERT UPDATE EXPLAIN +syn keyword sqlStatement MERGE REPLACE UPSERT SELECT +syn keyword sqlStatement SET UNSET LOAD UNLOAD +syn keyword sqlStatement CONNECT DISCONNECT COMMIT LOCK ROLLBACK +syn keyword sqlStatement GRANT REVOKE +syn keyword sqlStatement EXPORT IMPORT + + +syn keyword sqlType DATE TIME SECONDDATE TIMESTAMP TINYINT SMALLINT +syn keyword sqlType INT INTEGER BIGINT SMALLDECIMAL DECIMAL +syn keyword sqlType REAL DOUBLE FLOAT +syn keyword sqlType VARCHAR NVARCHAR ALPHANUM SHORTTEXT VARBINARY +syn keyword sqlType BLOB CLOB NCLOB TEXT DAYDATE + +syn keyword sqlOption Webservice_namespace_host + +" Strings and characters: +syn region sqlString start=+"+ end=+"+ contains=@Spell +syn region sqlString start=+'+ end=+'+ contains=@Spell + +" Numbers: +syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" + +" Comments: +syn region sqlDashComment start=/--/ end=/$/ contains=@Spell +syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell +syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell +syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell +syn sync ccomment sqlComment +syn sync ccomment sqlDashComment +syn sync ccomment sqlSlashComment + +hi def link sqlDashComment Comment +hi def link sqlSlashComment Comment +hi def link sqlMultiComment Comment +hi def link sqlNumber Number +hi def link sqlOperator Operator +hi def link sqlSpecial Special +hi def link sqlKeyword Keyword +hi def link sqlStatement Statement +hi def link sqlString String +hi def link sqlType Type +hi def link sqlFunction Function +hi def link sqlOption PreProc + +let b:current_syntax = "sqlhana" + +" vim:sw=4: diff --git a/share/vim/vim73/syntax/sqlinformix.vim b/share/vim/vim74/syntax/sqlinformix.vim similarity index 100% rename from share/vim/vim73/syntax/sqlinformix.vim rename to share/vim/vim74/syntax/sqlinformix.vim diff --git a/share/vim/vim73/syntax/sqlj.vim b/share/vim/vim74/syntax/sqlj.vim similarity index 100% rename from share/vim/vim73/syntax/sqlj.vim rename to share/vim/vim74/syntax/sqlj.vim diff --git a/share/vim/vim73/syntax/sqloracle.vim b/share/vim/vim74/syntax/sqloracle.vim similarity index 100% rename from share/vim/vim73/syntax/sqloracle.vim rename to share/vim/vim74/syntax/sqloracle.vim diff --git a/share/vim/vim74/syntax/sqr.vim b/share/vim/vim74/syntax/sqr.vim new file mode 100644 index 00000000..8c9e7b49 --- /dev/null +++ b/share/vim/vim74/syntax/sqr.vim @@ -0,0 +1,295 @@ +" Vim syntax file +" Language: Structured Query Report Writer (SQR) +" Maintainer: Nathan Stratton Treadway (nathanst at ontko dot com) +" URL: http://www.ontko.com/sqr/#editor_config_files +" +" Modification History: +" 2002-Apr-12: Updated for SQR v6.x +" 2002-Jul-30: Added { and } to iskeyword definition +" 2003-Oct-15: Allow "." in variable names +" highlight entire open '... literal when it contains +" "''" inside it (e.g. "'I can''t say" is treated +" as one open string, not one terminated and one open) +" {} variables can occur inside of '...' literals +" +" Thanks to the previous maintainer of this file, Jeff Lanzarotta: +" http://lanzarotta.tripod.com/vim.html +" jefflanzarotta at yahoo dot com + +" For version 5.x, clear all syntax items. +" For version 6.x, quit when a syntax file was already loaded. +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if version >= 600 + setlocal iskeyword=@,48-57,_,-,#,$,{,} +else + set iskeyword=@,48-57,_,-,#,$,{,} +endif + +syn case ignore + +" BEGIN GENERATED SECTION ============================================ + +" Generated by generate_vim_syntax.sqr at 2002/04/11 13:04 +" (based on the UltraEdit syntax file for SQR 6.1.4 +" found at http://www.ontko.com/sqr/#editor_config_files ) + +syn keyword sqrSection begin-footing begin-heading begin-procedure +syn keyword sqrSection begin-program begin-report begin-setup +syn keyword sqrSection end-footing end-heading end-procedure +syn keyword sqrSection end-program end-report end-setup + +syn keyword sqrParagraph alter-color-map alter-connection +syn keyword sqrParagraph alter-locale alter-printer alter-report +syn keyword sqrParagraph begin-document begin-execute begin-select +syn keyword sqrParagraph begin-sql declare-chart declare-image +syn keyword sqrParagraph declare-color-map declare-connection +syn keyword sqrParagraph declare-layout declare-printer +syn keyword sqrParagraph declare-report declare-procedure +syn keyword sqrParagraph declare-toc declare-variable end-declare +syn keyword sqrParagraph end-document end-select exit-select end-sql +syn keyword sqrParagraph load-lookup + +syn keyword sqrReserved #current-column #current-date #current-line +syn keyword sqrReserved #end-file #page-count #return-status +syn keyword sqrReserved #sql-count #sql-status #sqr-max-columns +syn keyword sqrReserved #sqr-max-lines #sqr-pid #sqr-toc-level +syn keyword sqrReserved #sqr-toc-page $sqr-database {sqr-database} +syn keyword sqrReserved $sqr-dbcs {sqr-dbcs} $sqr-encoding +syn keyword sqrReserved {sqr-encoding} $sqr-encoding-console +syn keyword sqrReserved {sqr-encoding-console} +syn keyword sqrReserved $sqr-encoding-database +syn keyword sqrReserved {sqr-encoding-database} +syn keyword sqrReserved $sqr-encoding-file-input +syn keyword sqrReserved {sqr-encoding-file-input} +syn keyword sqrReserved $sqr-encoding-file-output +syn keyword sqrReserved {sqr-encoding-file-output} +syn keyword sqrReserved $sqr-encoding-report-input +syn keyword sqrReserved {sqr-encoding-report-input} +syn keyword sqrReserved $sqr-encoding-report-output +syn keyword sqrReserved {sqr-encoding-report-output} +syn keyword sqrReserved $sqr-encoding-source {sqr-encoding-source} +syn keyword sqrReserved $sql-error $sqr-hostname {sqr-hostname} +syn keyword sqrReserved $sqr-locale $sqr-platform {sqr-platform} +syn keyword sqrReserved $sqr-program $sqr-report $sqr-toc-text +syn keyword sqrReserved $sqr-ver $username + +syn keyword sqrPreProc #define #else #end-if #endif #if #ifdef +syn keyword sqrPreProc #ifndef #include + +syn keyword sqrCommand add array-add array-divide array-multiply +syn keyword sqrCommand array-subtract ask break call clear-array +syn keyword sqrCommand close columns commit concat connect +syn keyword sqrCommand create-array create-color-palette date-time +syn keyword sqrCommand display divide do dollar-symbol else encode +syn keyword sqrCommand end-evaluate end-if end-while evaluate +syn keyword sqrCommand execute extract find get get-color goto +syn keyword sqrCommand graphic if input last-page let lookup +syn keyword sqrCommand lowercase mbtosbs money-symbol move +syn keyword sqrCommand multiply new-page new-report next-column +syn keyword sqrCommand next-listing no-formfeed open page-number +syn keyword sqrCommand page-size position print print-bar-code +syn keyword sqrCommand print-chart print-direct print-image +syn keyword sqrCommand printer-deinit printer-init put read +syn keyword sqrCommand rollback security set-color set-delay-print +syn keyword sqrCommand set-generations set-levels set-members +syn keyword sqrCommand sbtombs show stop string subtract toc-entry +syn keyword sqrCommand unstring uppercase use use-column +syn keyword sqrCommand use-printer-type use-procedure use-report +syn keyword sqrCommand while write + +syn keyword sqrParam 3d-effects after after-bold after-page +syn keyword sqrParam after-report after-toc and as at-end before +syn keyword sqrParam background batch-mode beep before-bold +syn keyword sqrParam before-page before-report before-toc blink +syn keyword sqrParam bold border bottom-margin box break by +syn keyword sqrParam caption center char char-size char-width +syn keyword sqrParam chars-inch chart-size checksum cl +syn keyword sqrParam clear-line clear-screen color color-palette +syn keyword sqrParam cs color_ data-array +syn keyword sqrParam data-array-column-count +syn keyword sqrParam data-array-column-labels +syn keyword sqrParam data-array-row-count data-labels date +syn keyword sqrParam date-edit-mask date-seperator +syn keyword sqrParam day-of-week-case day-of-week-full +syn keyword sqrParam day-of-week-short decimal decimal-seperator +syn keyword sqrParam default-numeric delay distinct dot-leader +syn keyword sqrParam edit-option-ad edit-option-am +syn keyword sqrParam edit-option-bc edit-option-na +syn keyword sqrParam edit-option-pm encoding entry erase-page +syn keyword sqrParam extent field fill fixed fixed_nolf float +syn keyword sqrParam font font-style font-type footing +syn keyword sqrParam footing-size foreground for-append +syn keyword sqrParam for-reading for-reports for-tocs +syn keyword sqrParam for-writing format formfeed from goto-top +syn keyword sqrParam group having heading heading-size height +syn keyword sqrParam horz-line image-size in indentation +syn keyword sqrParam init-string input-date-edit-mask insert +syn keyword sqrParam integer into item-color item-size key +syn keyword sqrParam layout left-margin legend legend-placement +syn keyword sqrParam legend-presentation legend-title level +syn keyword sqrParam line-height line-size line-width lines-inch +syn keyword sqrParam local locale loops max-columns max-lines +syn keyword sqrParam maxlen money money-edit-mask money-sign +syn keyword sqrParam money-sign-location months-case months-full +syn keyword sqrParam months-short name need newline newpage +syn keyword sqrParam no-advance nolf noline noprompt normal not +syn keyword sqrParam nowait number number-edit-mask on-break +syn keyword sqrParam on-error or order orientation page-depth +syn keyword sqrParam paper-size pie-segment-explode +syn keyword sqrParam pie-segment-percent-display +syn keyword sqrParam pie-segment-quantity-display pitch +syn keyword sqrParam point-markers point-size printer +syn keyword sqrParam printer-type quiet record reset-string +syn keyword sqrParam return_value reverse right-margin rows save +syn keyword sqrParam select size skip skiplines sort source +syn keyword sqrParam sqr-database sqr-platform startup-file +syn keyword sqrParam status stop sub-title symbol-set system +syn keyword sqrParam table text thousand-seperator +syn keyword sqrParam time-seperator times title to toc +syn keyword sqrParam top-margin type underline update using +syn keyword sqrParam value vary vert-line wait warn when +syn keyword sqrParam when-other where with x-axis-grid +syn keyword sqrParam x-axis-label x-axis-major-increment +syn keyword sqrParam x-axis-major-tick-marks x-axis-max-value +syn keyword sqrParam x-axis-min-value x-axis-minor-increment +syn keyword sqrParam x-axis-minor-tick-marks x-axis-rotate +syn keyword sqrParam x-axis-scale x-axis-tick-mark-placement xor +syn keyword sqrParam y-axis-grid y-axis-label +syn keyword sqrParam y-axis-major-increment +syn keyword sqrParam y-axis-major-tick-marks y-axis-max-value +syn keyword sqrParam y-axis-min-value y-axis-minor-increment +syn keyword sqrParam y-axis-minor-tick-marks y-axis-scale +syn keyword sqrParam y-axis-tick-mark-placement y2-type +syn keyword sqrParam y2-data-array y2-data-array-row-count +syn keyword sqrParam y2-data-array-column-count +syn keyword sqrParam y2-data-array-column-labels +syn keyword sqrParam y2-axis-color-palette y2-axis-label +syn keyword sqrParam y2-axis-major-increment +syn keyword sqrParam y2-axis-major-tick-marks y2-axis-max-value +syn keyword sqrParam y2-axis-min-value y2-axis-minor-increment +syn keyword sqrParam y2-axis-minor-tick-marks y2-axis-scale + +syn keyword sqrFunction abs acos asin atan array ascii asciic ceil +syn keyword sqrFunction cos cosh chr cond deg delete dateadd +syn keyword sqrFunction datediff datenow datetostr e10 exp edit +syn keyword sqrFunction exists floor getenv instr instrb isblank +syn keyword sqrFunction isnull log log10 length lengthb lengthp +syn keyword sqrFunction lengtht lower lpad ltrim mod nvl power rad +syn keyword sqrFunction round range replace roman rpad rtrim rename +syn keyword sqrFunction sign sin sinh sqrt substr substrb substrp +syn keyword sqrFunction substrt strtodate tan tanh trunc to_char +syn keyword sqrFunction to_multi_byte to_number to_single_byte +syn keyword sqrFunction transform translate unicode upper wrapdepth + +" END GENERATED SECTION ============================================== + +" Variables +syn match sqrVariable /\(\$\|#\|&\)\(\k\|\.\)*/ + + +" Debug compiler directives +syn match sqrPreProc /\s*#debug\a\=\(\s\|$\)/ +syn match sqrSubstVar /{\k*}/ + + +" Strings +" Note: if an undoubled ! is found, this is not a valid string +" (SQR will treat the end of the line as a comment) +syn match sqrString /'\(!!\|[^!']\)*'/ contains=sqrSubstVar +syn match sqrStrOpen /'\(!!\|''\|[^!']\)*$/ +" If we find a ' followed by an unmatched ! before a matching ', +" flag the error. +syn match sqrError /'\(!!\|[^'!]\)*![^!]/me=e-1 +syn match sqrError /'\(!!\|[^'!]\)*!$/ + +" Numbers: +syn match sqrNumber /-\=\<\d*\.\=[0-9_]\>/ + + + +" Comments: +" Handle comments that start with "!=" specially; they are only valid +" in the first column of the source line. Also, "!!" is only treated +" as a start-comment if there is only whitespace ahead of it on the line. + +syn keyword sqrTodo TODO FIXME XXX DEBUG NOTE ### +syn match sqrTodo /???/ + +if version >= 600 + " See also the sqrString section above for handling of ! characters + " inside of strings. (Those patterns override the ones below.) + syn match sqrComment /!\@= 508 || !exists("did_sqr_syn_inits") + if version < 508 + let did_sqr_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink sqrSection Statement + HiLink sqrParagraph Statement + HiLink sqrReserved Statement + HiLink sqrParameter Statement + HiLink sqrPreProc PreProc + HiLink sqrSubstVar PreProc + HiLink sqrCommand Statement + HiLink sqrParam Type + HiLink sqrFunction Special + + HiLink sqrString String + HiLink sqrStrOpen Todo + HiLink sqrNumber Number + HiLink sqrVariable Identifier + + HiLink sqrComment Comment + HiLink sqrTodo Todo + HiLink sqrError Error + + delcommand HiLink +endif + +let b:current_syntax = "sqr" + +" vim: ts=8 sw=2 diff --git a/share/vim/vim73/syntax/squid.vim b/share/vim/vim74/syntax/squid.vim similarity index 100% rename from share/vim/vim73/syntax/squid.vim rename to share/vim/vim74/syntax/squid.vim diff --git a/share/vim/vim74/syntax/sshconfig.vim b/share/vim/vim74/syntax/sshconfig.vim new file mode 100644 index 00000000..6d4de6c6 --- /dev/null +++ b/share/vim/vim74/syntax/sshconfig.vim @@ -0,0 +1,219 @@ +" Vim syntax file +" Language: OpenSSH client configuration file (ssh_config) +" Author: David Necas (Yeti) +" Maintainer: Leonard Ehrenfried +" Last Change: 2012 Feb 24 +" SSH Version: 5.9p1 +" + +" Setup +if version >= 600 + if exists("b:current_syntax") + finish + endif +else + syntax clear +endif + +if version >= 600 + setlocal iskeyword=_,-,a-z,A-Z,48-57 +else + set iskeyword=_,-,a-z,A-Z,48-57 +endif + + +" case on +syn case match + + +" Comments +syn match sshconfigComment "^#.*$" contains=sshconfigTodo +syn match sshconfigComment "\s#.*$" contains=sshconfigTodo + +syn keyword sshconfigTodo TODO FIXME NOTE contained + + +" Constants +syn keyword sshconfigYesNo yes no ask +syn keyword sshconfigYesNo any auto +syn keyword sshconfigYesNo force autoask none + +syn keyword sshconfigCipher 3des blowfish +syn keyword sshconfigCiphers aes128-cbc 3des-cbc blowfish blowfish-cbc cast128-cbc +syn keyword sshconfigCiphers aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr +syn keyword sshconfigCiphers arcfour arcfour128 arcfour256 cast128-cbc + +syn keyword sshconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96 +syn keyword sshconfigMAC hmac-md5-96 +syn keyword sshconfigMAC hmac-sha2-256 hmac-sha2-256-96 hmac-sha2-512 +syn keyword sshconfigMAC hmac-sha2-512-96 +syn match sshconfigMAC "\" + +syn keyword sshconfigHostKeyAlg ssh-rsa ssh-dss +syn match sshconfigHostKeyAlg "\" +syn match sshconfigHostKeyAlg "\" +syn match sshconfigHostKeyAlg "\" +syn match sshconfigHostKeyAlg "\" +syn match sshconfigHostKeyAlg "\" +syn match sshconfigHostKeyAlg "\" +syn match sshconfigHostKeyAlg "\" +syn keyword sshconfigHostKeyAlg ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 + +syn keyword sshconfigPreferredAuth hostbased publickey password gssapi-with-mic +syn keyword sshconfigPreferredAuth keyboard-interactive + +syn keyword sshconfigLogLevel QUIET FATAL ERROR INFO VERBOSE +syn keyword sshconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3 +syn keyword sshconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1 +syn keyword sshconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 +syn keyword sshconfigAddressFamily inet inet6 + +syn match sshconfigIPQoS "af1[1234]" +syn match sshconfigIPQoS "af2[23]" +syn match sshconfigIPQoS "af3[123]" +syn match sshconfigIPQoS "af4[123]" +syn match sshconfigIPQoS "cs[0-7]" +syn keyword sshconfigIPQoS ef lowdelay throughput reliability +syn keyword sshconfigKbdInteractive bsdauth pam skey + +syn keyword sshconfigKexAlgo ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 +syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha256 +syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha1 +syn keyword sshconfigKexAlgo diffie-hellman-group14-sha1 +syn keyword sshconfigKexAlgo diffie-hellman-group1-sha1 + +syn keyword sshconfigTunnel point-to-point ethernet + +syn match sshconfigVar "%[rhplLdun]\>" +syn match sshconfigSpecial "[*?]" +syn match sshconfigNumber "\d\+" +syn match sshconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>" +syn match sshconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>" +syn match sshconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}[:/]\d\+\>" +syn match sshconfigHostPort "\(Host \)\@<=.\+" +syn match sshconfigHostPort "\(HostName \)\@<=.\+" + +" case off +syn case ignore + + +" Keywords +syn keyword sshconfigHostSect Host + +syn keyword sshconfigKeyword AddressFamily +syn keyword sshconfigKeyword BatchMode +syn keyword sshconfigKeyword BindAddress +syn keyword sshconfigKeyword ChallengeResponseAuthentication +syn keyword sshconfigKeyword CheckHostIP +syn keyword sshconfigKeyword Cipher +syn keyword sshconfigKeyword Ciphers +syn keyword sshconfigKeyword ClearAllForwardings +syn keyword sshconfigKeyword Compression +syn keyword sshconfigKeyword CompressionLevel +syn keyword sshconfigKeyword ConnectTimeout +syn keyword sshconfigKeyword ConnectionAttempts +syn keyword sshconfigKeyword ControlMaster +syn keyword sshconfigKeyword ControlPath +syn keyword sshconfigKeyword ControlPersist +syn keyword sshconfigKeyword DynamicForward +syn keyword sshconfigKeyword EnableSSHKeysign +syn keyword sshconfigKeyword EscapeChar +syn keyword sshconfigKeyword ExitOnForwardFailure +syn keyword sshconfigKeyword ForwardAgent +syn keyword sshconfigKeyword ForwardX11 +syn keyword sshconfigKeyword ForwardX11Timeout +syn keyword sshconfigKeyword ForwardX11Trusted +syn keyword sshconfigKeyword GSSAPIAuthentication +syn keyword sshconfigKeyword GSSAPIClientIdentity +syn keyword sshconfigKeyword GSSAPIDelegateCredentials +syn keyword sshconfigKeyword GSSAPIKeyExchange +syn keyword sshconfigKeyword GSSAPIRenewalForcesRekey +syn keyword sshconfigKeyword GSSAPIServerIdentity +syn keyword sshconfigKeyword GSSAPITrustDNS +syn keyword sshconfigKeyword GSSAPITrustDns +syn keyword sshconfigKeyword GatewayPorts +syn keyword sshconfigKeyword GlobalKnownHostsFile +syn keyword sshconfigKeyword HashKnownHosts +syn keyword sshconfigKeyword HostKeyAlgorithms +syn keyword sshconfigKeyword HostKeyAlias +syn keyword sshconfigKeyword HostName +syn keyword sshconfigKeyword HostbasedAuthentication +syn keyword sshconfigKeyword IPQoS +syn keyword sshconfigKeyword IdentitiesOnly +syn keyword sshconfigKeyword IdentityFile +syn keyword sshconfigKeyword KbdInteractiveAuthentication +syn keyword sshconfigKeyword KbdInteractiveDevices +syn keyword sshconfigKeyword KexAlgorithms +syn keyword sshconfigKeyword LocalCommand +syn keyword sshconfigKeyword LocalForward +syn keyword sshconfigKeyword LogLevel +syn keyword sshconfigKeyword MACs +syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost +syn keyword sshconfigKeyword NumberOfPasswordPrompts +syn keyword sshconfigKeyword PKCS11Provider +syn keyword sshconfigKeyword PasswordAuthentication +syn keyword sshconfigKeyword PermitLocalCommand +syn keyword sshconfigKeyword Port +syn keyword sshconfigKeyword PreferredAuthentications +syn keyword sshconfigKeyword Protocol +syn keyword sshconfigKeyword ProxyCommand +syn keyword sshconfigKeyword PubkeyAuthentication +syn keyword sshconfigKeyword RSAAuthentication +syn keyword sshconfigKeyword RekeyLimit +syn keyword sshconfigKeyword RemoteForward +syn keyword sshconfigKeyword RequestTTY +syn keyword sshconfigKeyword RhostsRSAAuthentication +syn keyword sshconfigKeyword SendEnv +syn keyword sshconfigKeyword ServerAliveCountMax +syn keyword sshconfigKeyword ServerAliveInterval +syn keyword sshconfigKeyword SmartcardDevice +syn keyword sshconfigKeyword StrictHostKeyChecking +syn keyword sshconfigKeyword TCPKeepAlive +syn keyword sshconfigKeyword Tunnel +syn keyword sshconfigKeyword TunnelDevice +syn keyword sshconfigKeyword UseBlacklistedKeys +syn keyword sshconfigKeyword UsePrivilegedPort +syn keyword sshconfigKeyword User +syn keyword sshconfigKeyword UserKnownHostsFile +syn keyword sshconfigKeyword VerifyHostKeyDNS +syn keyword sshconfigKeyword VisualHostKey +syn keyword sshconfigKeyword XAuthLocation + +" Define the default highlighting +if version >= 508 || !exists("did_sshconfig_syntax_inits") + if version < 508 + let did_sshconfig_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink sshconfigComment Comment + HiLink sshconfigTodo Todo + HiLink sshconfigHostPort sshconfigConstant + HiLink sshconfigNumber sshconfigConstant + HiLink sshconfigConstant Constant + HiLink sshconfigYesNo sshconfigEnum + HiLink sshconfigCipher sshconfigEnum + HiLink sshconfigCiphers sshconfigEnum + HiLink sshconfigMAC sshconfigEnum + HiLink sshconfigHostKeyAlg sshconfigEnum + HiLink sshconfigLogLevel sshconfigEnum + HiLink sshconfigSysLogFacility sshconfigEnum + HiLink sshconfigAddressFamily sshconfigEnum + HiLink sshconfigIPQoS sshconfigEnum + HiLink sshconfigKbdInteractive sshconfigEnum + HiLink sshconfigKexAlgo sshconfigEnum + HiLink sshconfigTunnel sshconfigEnum + HiLink sshconfigPreferredAuth sshconfigEnum + HiLink sshconfigVar sshconfigEnum + HiLink sshconfigEnum Identifier + HiLink sshconfigSpecial Special + HiLink sshconfigKeyword Keyword + HiLink sshconfigHostSect Type + delcommand HiLink +endif + +let b:current_syntax = "sshconfig" + +" vim:set ts=8 sw=2 sts=2: diff --git a/share/vim/vim74/syntax/sshdconfig.vim b/share/vim/vim74/syntax/sshdconfig.vim new file mode 100644 index 00000000..53bc09de --- /dev/null +++ b/share/vim/vim74/syntax/sshdconfig.vim @@ -0,0 +1,215 @@ +" Vim syntax file +" Language: OpenSSH server configuration file (sshd_config) +" Maintainer: David Necas (Yeti) +" Maintainer: Leonard Ehrenfried +" Modified By: Thilo Six +" Originally: 2009-07-09 +" Last Change: 2011 Oct 31 +" SSH Version: 5.9p1 +" + +" Setup +if version >= 600 + if exists("b:current_syntax") + finish + endif +else + syntax clear +endif + +if version >= 600 + setlocal iskeyword=_,-,a-z,A-Z,48-57 +else + set iskeyword=_,-,a-z,A-Z,48-57 +endif + + +" case on +syn case match + + +" Comments +syn match sshdconfigComment "^#.*$" contains=sshdconfigTodo +syn match sshdconfigComment "\s#.*$" contains=sshdconfigTodo + +syn keyword sshdconfigTodo TODO FIXME NOTE contained + +" Constants +syn keyword sshdconfigYesNo yes no none + +syn keyword sshdconfigAddressFamily any inet inet6 + +syn keyword sshdconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc +syn keyword sshdconfigCipher aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr +syn keyword sshdconfigCipher arcfour arcfour128 arcfour256 cast128-cbc + +syn keyword sshdconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96 +syn keyword sshdconfigMAC hmac-md5-96 +syn keyword sshdconfigMAC hmac-sha2-256 hmac-sha256-96 hmac-sha2-512 +syn keyword sshdconfigMAC hmac-sha2-512-96 +syn match sshdconfigMAC "\" + +syn keyword sshdconfigRootLogin without-password forced-commands-only + +syn keyword sshdconfigLogLevel QUIET FATAL ERROR INFO VERBOSE +syn keyword sshdconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3 +syn keyword sshdconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1 +syn keyword sshdconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 + +syn keyword sshdconfigCompression delayed + +syn match sshdconfigIPQoS "af1[1234]" +syn match sshdconfigIPQoS "af2[23]" +syn match sshdconfigIPQoS "af3[123]" +syn match sshdconfigIPQoS "af4[123]" +syn match sshdconfigIPQoS "cs[0-7]" +syn keyword sshdconfigIPQoS ef lowdelay throughput reliability + +syn keyword sshdconfigKexAlgo ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 +syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha256 +syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha1 +syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha1 +syn keyword sshdconfigKexAlgo diffie-hellman-group1-sha1 + +syn keyword sshdconfigTunnel point-to-point ethernet + +syn keyword sshdconfigSubsystem internal-sftp + +syn match sshdconfigVar "%[hu]\>" +syn match sshdconfigVar "%%" + +syn match sshdconfigSpecial "[*?]" + +syn match sshdconfigNumber "\d\+" +syn match sshdconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>" +syn match sshdconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>" +" FIXME: this matches quite a few things which are NOT valid IPv6 addresses +syn match sshdconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}:\d\+\>" +syn match sshdconfigTime "\<\(\d\+[sSmMhHdDwW]\)\+\>" + + +" case off +syn case ignore + + +" Keywords +syn keyword sshdconfigMatch Host User Group Address + +syn keyword sshdconfigKeyword AcceptEnv +syn keyword sshdconfigKeyword AddressFamily +syn keyword sshdconfigKeyword AllowAgentForwarding +syn keyword sshdconfigKeyword AllowGroups +syn keyword sshdconfigKeyword AllowTcpForwarding +syn keyword sshdconfigKeyword AllowUsers +syn keyword sshdconfigKeyword AuthorizedKeysFile +syn keyword sshdconfigKeyword AuthorizedPrincipalsFile +syn keyword sshdconfigKeyword Banner +syn keyword sshdconfigKeyword ChallengeResponseAuthentication +syn keyword sshdconfigKeyword ChrootDirectory +syn keyword sshdconfigKeyword Ciphers +syn keyword sshdconfigKeyword ClientAliveCountMax +syn keyword sshdconfigKeyword ClientAliveInterval +syn keyword sshdconfigKeyword Compression +syn keyword sshdconfigKeyword DebianBanner +syn keyword sshdconfigKeyword DenyGroups +syn keyword sshdconfigKeyword DenyUsers +syn keyword sshdconfigKeyword ForceCommand +syn keyword sshdconfigKeyword GSSAPIAuthentication +syn keyword sshdconfigKeyword GSSAPICleanupCredentials +syn keyword sshdconfigKeyword GSSAPIKeyExchange +syn keyword sshdconfigKeyword GSSAPIStoreCredentialsOnRekey +syn keyword sshdconfigKeyword GSSAPIStrictAcceptorCheck +syn keyword sshdconfigKeyword GatewayPorts +syn keyword sshdconfigKeyword HostCertificate +syn keyword sshdconfigKeyword HostKey +syn keyword sshdconfigKeyword HostbasedAuthentication +syn keyword sshdconfigKeyword HostbasedUsesNameFromPacketOnly +syn keyword sshdconfigKeyword IPQoS +syn keyword sshdconfigKeyword IgnoreRhosts +syn keyword sshdconfigKeyword IgnoreUserKnownHosts +syn keyword sshdconfigKeyword KbdInteractiveAuthentication +syn keyword sshdconfigKeyword KerberosAuthentication +syn keyword sshdconfigKeyword KerberosGetAFSToken +syn keyword sshdconfigKeyword KerberosOrLocalPasswd +syn keyword sshdconfigKeyword KerberosTicketCleanup +syn keyword sshdconfigKeyword KexAlgorithms +syn keyword sshdconfigKeyword KeyRegenerationInterval +syn keyword sshdconfigKeyword ListenAddress +syn keyword sshdconfigKeyword LogLevel +syn keyword sshdconfigKeyword LoginGraceTime +syn keyword sshdconfigKeyword MACs +syn keyword sshdconfigKeyword Match +syn keyword sshdconfigKeyword MaxAuthTries +syn keyword sshdconfigKeyword MaxSessions +syn keyword sshdconfigKeyword MaxStartups +syn keyword sshdconfigKeyword PasswordAuthentication +syn keyword sshdconfigKeyword PermitBlacklistedKeys +syn keyword sshdconfigKeyword PermitEmptyPasswords +syn keyword sshdconfigKeyword PermitOpen +syn keyword sshdconfigKeyword PermitRootLogin +syn keyword sshdconfigKeyword PermitTunnel +syn keyword sshdconfigKeyword PermitUserEnvironment +syn keyword sshdconfigKeyword PidFile +syn keyword sshdconfigKeyword Port +syn keyword sshdconfigKeyword PrintLastLog +syn keyword sshdconfigKeyword PrintMotd +syn keyword sshdconfigKeyword Protocol +syn keyword sshdconfigKeyword PubkeyAuthentication +syn keyword sshdconfigKeyword RSAAuthentication +syn keyword sshdconfigKeyword RevokedKeys +syn keyword sshdconfigKeyword RhostsRSAAuthentication +syn keyword sshdconfigKeyword ServerKeyBits +syn keyword sshdconfigKeyword ShowPatchLevel +syn keyword sshdconfigKeyword StrictModes +syn keyword sshdconfigKeyword Subsystem +syn keyword sshdconfigKeyword SyslogFacility +syn keyword sshdconfigKeyword TCPKeepAlive +syn keyword sshdconfigKeyword TrustedUserCAKeys +syn keyword sshdconfigKeyword UseDNS +syn keyword sshdconfigKeyword UseLogin +syn keyword sshdconfigKeyword UsePAM +syn keyword sshdconfigKeyword UsePrivilegeSeparation +syn keyword sshdconfigKeyword X11DisplayOffset +syn keyword sshdconfigKeyword X11Forwarding +syn keyword sshdconfigKeyword X11UseLocalhost +syn keyword sshdconfigKeyword XAuthLocation + + +" Define the default highlighting +if version >= 508 || !exists("did_sshdconfig_syntax_inits") + if version < 508 + let did_sshdconfig_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink sshdconfigComment Comment + HiLink sshdconfigTodo Todo + HiLink sshdconfigHostPort sshdconfigConstant + HiLink sshdconfigTime sshdconfigConstant + HiLink sshdconfigNumber sshdconfigConstant + HiLink sshdconfigConstant Constant + HiLink sshdconfigYesNo sshdconfigEnum + HiLink sshdconfigAddressFamily sshdconfigEnum + HiLink sshdconfigCipher sshdconfigEnum + HiLink sshdconfigMAC sshdconfigEnum + HiLink sshdconfigRootLogin sshdconfigEnum + HiLink sshdconfigLogLevel sshdconfigEnum + HiLink sshdconfigSysLogFacility sshdconfigEnum + HiLink sshdconfigVar sshdconfigEnum + HiLink sshdconfigCompression sshdconfigEnum + HiLink sshdconfigIPQoS sshdconfigEnum + HiLink sshdconfigKexAlgo sshdconfigEnum + HiLink sshdconfigTunnel sshdconfigEnum + HiLink sshdconfigSubsystem sshdconfigEnum + HiLink sshdconfigEnum Function + HiLink sshdconfigSpecial Special + HiLink sshdconfigKeyword Keyword + HiLink sshdconfigMatch Type + delcommand HiLink +endif + +let b:current_syntax = "sshdconfig" + +" vim:set ts=8 sw=2 sts=2: diff --git a/share/vim/vim74/syntax/st.vim b/share/vim/vim74/syntax/st.vim new file mode 100644 index 00000000..47aa07de --- /dev/null +++ b/share/vim/vim74/syntax/st.vim @@ -0,0 +1,108 @@ +" Vim syntax file +" Language: Smalltalk +" Maintainer: Arndt Hesse +" Last Change: 2012 Feb 12 by Thilo Six + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" some Smalltalk keywords and standard methods +syn keyword stKeyword super self class true false new not +syn keyword stKeyword notNil isNil inspect out nil +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" +syn match stMethod "\:" + +" the block of local variables of a method +syn region stLocalVariables start="^[ \t]*|" end="|" + +" the Smalltalk comment +syn region stComment start="\"" end="\"" + +" the Smalltalk strings and single characters +syn region stString start='\'' skip="''" end='\'' +syn match stCharacter "$." + +syn case ignore + +" the symols prefixed by a '#' +syn match stSymbol "\(#\<[a-z_][a-z0-9_]*\>\)" +syn match stSymbol "\(#'[^']*'\)" + +" the variables in a statement block for loops +syn match stBlockVariable "\(:[ \t]*\<[a-z_][a-z0-9_]*\>[ \t]*\)\+|" contained + +" some representations of numbers +syn match stNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" +syn match stFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" +syn match stFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" + +syn case match + +" a try to higlight paren mismatches +syn region stParen transparent start='(' end=')' contains=ALLBUT,stParenError +syn match stParenError ")" +syn region stBlock transparent start='\[' end='\]' contains=ALLBUT,stBlockError +syn match stBlockError "\]" +syn region stSet transparent start='{' end='}' contains=ALLBUT,stSetError +syn match stSetError "}" + +hi link stParenError stError +hi link stSetError stError +hi link stBlockError stError + +" synchronization for syntax analysis +syn sync minlines=50 + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_st_syntax_inits") + if version < 508 + let did_st_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink stKeyword Statement + HiLink stMethod Statement + HiLink stComment Comment + HiLink stCharacter Constant + HiLink stString Constant + HiLink stSymbol Special + HiLink stNumber Type + HiLink stFloat Type + HiLink stError Error + HiLink stLocalVariables Identifier + HiLink stBlockVariable Identifier + + delcommand HiLink +endif + +let b:current_syntax = "st" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/stata.vim b/share/vim/vim74/syntax/stata.vim similarity index 100% rename from share/vim/vim73/syntax/stata.vim rename to share/vim/vim74/syntax/stata.vim diff --git a/share/vim/vim73/syntax/stp.vim b/share/vim/vim74/syntax/stp.vim similarity index 100% rename from share/vim/vim73/syntax/stp.vim rename to share/vim/vim74/syntax/stp.vim diff --git a/share/vim/vim73/syntax/strace.vim b/share/vim/vim74/syntax/strace.vim similarity index 100% rename from share/vim/vim73/syntax/strace.vim rename to share/vim/vim74/syntax/strace.vim diff --git a/share/vim/vim74/syntax/sudoers.vim b/share/vim/vim74/syntax/sudoers.vim new file mode 100644 index 00000000..fffc1cf8 --- /dev/null +++ b/share/vim/vim74/syntax/sudoers.vim @@ -0,0 +1,342 @@ +" Vim syntax file +" Language: sudoers(5) configuration files +" Maintainer: Nikolai Weibull +" Latest Revision: 2011-02-24 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" TODO: instead of 'skipnl', we would like to match a specific group that would +" match \\$ and then continue with the nextgroup, actually, the skipnl doesn't +" work... +" TODO: treat 'ALL' like a special (yay, a bundle of new rules!!!) + +syn match sudoersUserSpec '^' nextgroup=@sudoersUserInSpec skipwhite + +syn match sudoersSpecEquals contained '=' nextgroup=@sudoersCmndSpecList skipwhite + +syn cluster sudoersCmndSpecList contains=sudoersUserRunasBegin,sudoersPASSWD,@sudoersCmndInSpec + +syn keyword sudoersTodo contained TODO FIXME XXX NOTE + +syn region sudoersComment display oneline start='#' end='$' contains=sudoersTodo + +syn keyword sudoersAlias User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl +syn keyword sudoersAlias Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl +syn keyword sudoersAlias Cmnd_Alias nextgroup=sudoersCmndAlias skipwhite skipnl + +syn match sudoersUserAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersUserAliasEquals skipwhite skipnl +syn match sudoersUserNameInList contained '\<\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl +syn match sudoersUIDInList contained '#\d\+\>' nextgroup=@sudoersUserList skipwhite skipnl +syn match sudoersGroupInList contained '%\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl +syn match sudoersUserNetgroupInList contained '+\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl +syn match sudoersUserAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserList skipwhite skipnl + +syn match sudoersUserName contained '\<\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl +syn match sudoersUID contained '#\d\+\>' nextgroup=@sudoersParameter skipwhite skipnl +syn match sudoersGroup contained '%\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl +syn match sudoersUserNetgroup contained '+\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl +syn match sudoersUserAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl + +syn match sudoersUserNameInSpec contained '\<\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl +syn match sudoersUIDInSpec contained '#\d\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl +syn match sudoersGroupInSpec contained '%\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl +syn match sudoersUserNetgroupInSpec contained '+\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl +syn match sudoersUserAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserSpec skipwhite skipnl + +syn match sudoersUserNameInRunas contained '\<\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl +syn match sudoersUIDInRunas contained '#\d\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl +syn match sudoersGroupInRunas contained '%\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl +syn match sudoersUserNetgroupInRunas contained '+\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl +syn match sudoersUserAliasInRunas contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserRunas skipwhite skipnl + +syn match sudoersHostAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersHostAliasEquals skipwhite skipnl +syn match sudoersHostNameInList contained '\<\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl +syn match sudoersIPAddrInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostList skipwhite skipnl +syn match sudoersNetworkInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostList skipwhite skipnl +syn match sudoersHostNetgroupInList contained '+\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl +syn match sudoersHostAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostList skipwhite skipnl + +syn match sudoersHostName contained '\<\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl +syn match sudoersIPAddr contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersParameter skipwhite skipnl +syn match sudoersNetwork contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersParameter skipwhite skipnl +syn match sudoersHostNetgroup contained '+\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl +syn match sudoersHostAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl + +syn match sudoersHostNameInSpec contained '\<\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl +syn match sudoersIPAddrInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostSpec skipwhite skipnl +syn match sudoersNetworkInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostSpec skipwhite skipnl +syn match sudoersHostNetgroupInSpec contained '+\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl +syn match sudoersHostAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostSpec skipwhite skipnl + +syn match sudoersCmndAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersCmndAliasEquals skipwhite skipnl +syn match sudoersCmndNameInList contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndList,sudoersCommandEmpty,sudoersCommandArgs skipwhite +syn match sudoersCmndAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersCmndList skipwhite skipnl + +syn match sudoersCmndNameInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndSpec,sudoersCommandEmptyInSpec,sudoersCommandArgsInSpec skipwhite +syn match sudoersCmndAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersCmndSpec skipwhite skipnl + +syn match sudoersUserAliasEquals contained '=' nextgroup=@sudoersUserInList skipwhite skipnl +syn match sudoersUserListComma contained ',' nextgroup=@sudoersUserInList skipwhite skipnl +syn match sudoersUserListColon contained ':' nextgroup=sudoersUserAlias skipwhite skipnl +syn cluster sudoersUserList contains=sudoersUserListComma,sudoersUserListColon + +syn match sudoersUserSpecComma contained ',' nextgroup=@sudoersUserInSpec skipwhite skipnl +syn cluster sudoersUserSpec contains=sudoersUserSpecComma,@sudoersHostInSpec + +syn match sudoersUserRunasBegin contained '(' nextgroup=@sudoersUserInRunas skipwhite skipnl +syn match sudoersUserRunasComma contained ',' nextgroup=@sudoersUserInRunas skipwhite skipnl +syn match sudoersUserRunasEnd contained ')' nextgroup=sudoersPASSWD,@sudoersCmndInSpec skipwhite skipnl +syn cluster sudoersUserRunas contains=sudoersUserRunasComma,@sudoersUserInRunas,sudoersUserRunasEnd + + +syn match sudoersHostAliasEquals contained '=' nextgroup=@sudoersHostInList skipwhite skipnl +syn match sudoersHostListComma contained ',' nextgroup=@sudoersHostInList skipwhite skipnl +syn match sudoersHostListColon contained ':' nextgroup=sudoersHostAlias skipwhite skipnl +syn cluster sudoersHostList contains=sudoersHostListComma,sudoersHostListColon + +syn match sudoersHostSpecComma contained ',' nextgroup=@sudoersHostInSpec skipwhite skipnl +syn cluster sudoersHostSpec contains=sudoersHostSpecComma,sudoersSpecEquals + + +syn match sudoersCmndAliasEquals contained '=' nextgroup=@sudoersCmndInList skipwhite skipnl +syn match sudoersCmndListComma contained ',' nextgroup=@sudoersCmndInList skipwhite skipnl +syn match sudoersCmndListColon contained ':' nextgroup=sudoersCmndAlias skipwhite skipnl +syn cluster sudoersCmndList contains=sudoersCmndListComma,sudoersCmndListColon + +syn match sudoersCmndSpecComma contained ',' nextgroup=@sudoersCmndSpecList skipwhite skipnl +syn match sudoersCmndSpecColon contained ':' nextgroup=@sudoersUserInSpec skipwhite skipnl +syn cluster sudoersCmndSpec contains=sudoersCmndSpecComma,sudoersCmndSpecColon + +syn cluster sudoersUserInList contains=sudoersUserNegationInList,sudoersUserNameInList,sudoersUIDInList,sudoersGroupInList,sudoersUserNetgroupInList,sudoersUserAliasInList +syn cluster sudoersHostInList contains=sudoersHostNegationInList,sudoersHostNameInList,sudoersIPAddrInList,sudoersNetworkInList,sudoersHostNetgroupInList,sudoersHostAliasInList +syn cluster sudoersCmndInList contains=sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList + +syn cluster sudoersUser contains=sudoersUserNegation,sudoersUserName,sudoersUID,sudoersGroup,sudoersUserNetgroup,sudoersUserAliasRef +syn cluster sudoersHost contains=sudoersHostNegation,sudoersHostName,sudoersIPAddr,sudoersNetwork,sudoersHostNetgroup,sudoersHostAliasRef + +syn cluster sudoersUserInSpec contains=sudoersUserNegationInSpec,sudoersUserNameInSpec,sudoersUIDInSpec,sudoersGroupInSpec,sudoersUserNetgroupInSpec,sudoersUserAliasInSpec +syn cluster sudoersHostInSpec contains=sudoersHostNegationInSpec,sudoersHostNameInSpec,sudoersIPAddrInSpec,sudoersNetworkInSpec,sudoersHostNetgroupInSpec,sudoersHostAliasInSpec +syn cluster sudoersUserInRunas contains=sudoersUserNegationInRunas,sudoersUserNameInRunas,sudoersUIDInRunas,sudoersGroupInRunas,sudoersUserNetgroupInRunas,sudoersUserAliasInRunas +syn cluster sudoersCmndInSpec contains=sudoersCmndNegationInSpec,sudoersCmndNameInSpec,sudoersCmndAliasInSpec + +syn match sudoersUserNegationInList contained '!\+' nextgroup=@sudoersUserInList skipwhite skipnl +syn match sudoersHostNegationInList contained '!\+' nextgroup=@sudoersHostInList skipwhite skipnl +syn match sudoersCmndNegationInList contained '!\+' nextgroup=@sudoersCmndInList skipwhite skipnl + +syn match sudoersUserNegation contained '!\+' nextgroup=@sudoersUser skipwhite skipnl +syn match sudoersHostNegation contained '!\+' nextgroup=@sudoersHost skipwhite skipnl + +syn match sudoersUserNegationInSpec contained '!\+' nextgroup=@sudoersUserInSpec skipwhite skipnl +syn match sudoersHostNegationInSpec contained '!\+' nextgroup=@sudoersHostInSpec skipwhite skipnl +syn match sudoersUserNegationInRunas contained '!\+' nextgroup=@sudoersUserInRunas skipwhite skipnl +syn match sudoersCmndNegationInSpec contained '!\+' nextgroup=@sudoersCmndInSpec skipwhite skipnl + +syn match sudoersCommandArgs contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgs,@sudoersCmndList skipwhite +syn match sudoersCommandEmpty contained '""' nextgroup=@sudoersCmndList skipwhite skipnl + +syn match sudoersCommandArgsInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgsInSpec,@sudoersCmndSpec skipwhite +syn match sudoersCommandEmptyInSpec contained '""' nextgroup=@sudoersCmndSpec skipwhite skipnl + +syn keyword sudoersDefaultEntry Defaults nextgroup=sudoersDefaultTypeAt,sudoersDefaultTypeColon,sudoersDefaultTypeGreaterThan,@sudoersParameter skipwhite skipnl +syn match sudoersDefaultTypeAt contained '@' nextgroup=@sudoersHost skipwhite skipnl +syn match sudoersDefaultTypeColon contained ':' nextgroup=@sudoersUser skipwhite skipnl +syn match sudoersDefaultTypeGreaterThan contained '>' nextgroup=@sudoersUser skipwhite skipnl + +" TODO: could also deal with special characters here +syn match sudoersBooleanParameter contained '!' nextgroup=sudoersBooleanParameter skipwhite skipnl +syn keyword sudoersBooleanParameter contained skipwhite skipnl + \ always_set_home + \ authenticate + \ closefrom_override + \ env_editor + \ env_reset + \ fqdn + \ ignore_dot + \ ignore_local_sudoers + \ insults + \ log_host + \ log_year + \ long_otp_prompt + \ mail_always + \ mail_badpass + \ mail_no_host + \ mail_no_perms + \ mail_no_user + \ noexec + \ path_info + \ passprompt_override + \ preserve_groups + \ requiretty + \ root_sudo + \ rootpw + \ runaspw + \ set_home + \ set_logname + \ setenv + \ shell_noargs + \ stay_setuid + \ targetpw + \ tty_tickets + \ visiblepw + +syn keyword sudoersIntegerParameter contained + \ nextgroup=sudoersIntegerParameterEquals + \ skipwhite skipnl + \ closefrom + \ passwd_tries + \ loglinelen + \ passwd_timeout + \ timestamp_timeout + \ umask + +syn keyword sudoersStringParameter contained + \ nextgroup=sudoersStringParameterEquals + \ skipwhite skipnl + \ badpass_message + \ editor + \ mailsub + \ noexec_file + \ passprompt + \ runas_default + \ syslog_badpri + \ syslog_goodpri + \ sudoers_locale + \ timestampdir + \ timestampowner + \ askpass + \ env_file + \ exempt_group + \ lecture + \ lecture_file + \ listpw + \ logfile + \ mailerflags + \ mailerpath + \ mailfrom + \ mailto + \ secure_path + \ syslog + \ verifypw + +syn keyword sudoersListParameter contained + \ nextgroup=sudoersListParameterEquals + \ skipwhite skipnl + \ env_check + \ env_delete + \ env_keep + +syn match sudoersParameterListComma contained ',' nextgroup=@sudoersParameter skipwhite skipnl + +syn cluster sudoersParameter contains=sudoersBooleanParameter,sudoersIntegerParameter,sudoersStringParameter,sudoersListParameter + +syn match sudoersIntegerParameterEquals contained '[+-]\==' nextgroup=sudoersIntegerValue skipwhite skipnl +syn match sudoersStringParameterEquals contained '[+-]\==' nextgroup=sudoersStringValue skipwhite skipnl +syn match sudoersListParameterEquals contained '[+-]\==' nextgroup=sudoersListValue skipwhite skipnl + +syn match sudoersIntegerValue contained '\d\+' nextgroup=sudoersParameterListComma skipwhite skipnl +syn match sudoersStringValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl +syn region sudoersStringValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl +syn match sudoersListValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl +syn region sudoersListValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl + +syn match sudoersPASSWD contained '\%(NO\)\=PASSWD:' nextgroup=@sudoersCmndInSpec skipwhite + +hi def link sudoersSpecEquals Operator +hi def link sudoersTodo Todo +hi def link sudoersComment Comment +hi def link sudoersAlias Keyword +hi def link sudoersUserAlias Identifier +hi def link sudoersUserNameInList String +hi def link sudoersUIDInList Number +hi def link sudoersGroupInList PreProc +hi def link sudoersUserNetgroupInList PreProc +hi def link sudoersUserAliasInList PreProc +hi def link sudoersUserName String +hi def link sudoersUID Number +hi def link sudoersGroup PreProc +hi def link sudoersUserNetgroup PreProc +hi def link sudoersUserAliasRef PreProc +hi def link sudoersUserNameInSpec String +hi def link sudoersUIDInSpec Number +hi def link sudoersGroupInSpec PreProc +hi def link sudoersUserNetgroupInSpec PreProc +hi def link sudoersUserAliasInSpec PreProc +hi def link sudoersUserNameInRunas String +hi def link sudoersUIDInRunas Number +hi def link sudoersGroupInRunas PreProc +hi def link sudoersUserNetgroupInRunas PreProc +hi def link sudoersUserAliasInRunas PreProc +hi def link sudoersHostAlias Identifier +hi def link sudoersHostNameInList String +hi def link sudoersIPAddrInList Number +hi def link sudoersNetworkInList Number +hi def link sudoersHostNetgroupInList PreProc +hi def link sudoersHostAliasInList PreProc +hi def link sudoersHostName String +hi def link sudoersIPAddr Number +hi def link sudoersNetwork Number +hi def link sudoersHostNetgroup PreProc +hi def link sudoersHostAliasRef PreProc +hi def link sudoersHostNameInSpec String +hi def link sudoersIPAddrInSpec Number +hi def link sudoersNetworkInSpec Number +hi def link sudoersHostNetgroupInSpec PreProc +hi def link sudoersHostAliasInSpec PreProc +hi def link sudoersCmndAlias Identifier +hi def link sudoersCmndNameInList String +hi def link sudoersCmndAliasInList PreProc +hi def link sudoersCmndNameInSpec String +hi def link sudoersCmndAliasInSpec PreProc +hi def link sudoersUserAliasEquals Operator +hi def link sudoersUserListComma Delimiter +hi def link sudoersUserListColon Delimiter +hi def link sudoersUserSpecComma Delimiter +hi def link sudoersUserRunasBegin Delimiter +hi def link sudoersUserRunasComma Delimiter +hi def link sudoersUserRunasEnd Delimiter +hi def link sudoersHostAliasEquals Operator +hi def link sudoersHostListComma Delimiter +hi def link sudoersHostListColon Delimiter +hi def link sudoersHostSpecComma Delimiter +hi def link sudoersCmndAliasEquals Operator +hi def link sudoersCmndListComma Delimiter +hi def link sudoersCmndListColon Delimiter +hi def link sudoersCmndSpecComma Delimiter +hi def link sudoersCmndSpecColon Delimiter +hi def link sudoersUserNegationInList Operator +hi def link sudoersHostNegationInList Operator +hi def link sudoersCmndNegationInList Operator +hi def link sudoersUserNegation Operator +hi def link sudoersHostNegation Operator +hi def link sudoersUserNegationInSpec Operator +hi def link sudoersHostNegationInSpec Operator +hi def link sudoersUserNegationInRunas Operator +hi def link sudoersCmndNegationInSpec Operator +hi def link sudoersCommandArgs String +hi def link sudoersCommandEmpty Special +hi def link sudoersDefaultEntry Keyword +hi def link sudoersDefaultTypeAt Special +hi def link sudoersDefaultTypeColon Special +hi def link sudoersDefaultTypeGreaterThan Special +hi def link sudoersBooleanParameter Identifier +hi def link sudoersIntegerParameter Identifier +hi def link sudoersStringParameter Identifier +hi def link sudoersListParameter Identifier +hi def link sudoersParameterListComma Delimiter +hi def link sudoersIntegerParameterEquals Operator +hi def link sudoersStringParameterEquals Operator +hi def link sudoersListParameterEquals Operator +hi def link sudoersIntegerValue Number +hi def link sudoersStringValue String +hi def link sudoersListValue String +hi def link sudoersPASSWD Special + +let b:current_syntax = "sudoers" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/svg.vim b/share/vim/vim74/syntax/svg.vim similarity index 100% rename from share/vim/vim73/syntax/svg.vim rename to share/vim/vim74/syntax/svg.vim diff --git a/share/vim/vim74/syntax/svn.vim b/share/vim/vim74/syntax/svn.vim new file mode 100644 index 00000000..83803e33 --- /dev/null +++ b/share/vim/vim74/syntax/svn.vim @@ -0,0 +1,57 @@ +" Vim syntax file +" Language: Subversion (svn) commit file +" Maintainer: Dmitry Vasiliev +" URL: https://github.com/hdima/vim-scripts/blob/master/syntax/svn.vim +" Last Change: 2012-07-21 +" Filenames: svn-commit*.tmp +" Version: 1.9 + +" Contributors: +" Stefano Zacchiroli +" A. S. Budden +" Myk Taylor +" Ingo Karkat + +" For version 5.x: Clear all syntax items. +" For version 6.x: Quit when a syntax file was already loaded. +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn region svnText start="\%^" end="^--.*--$"me=s-1 contains=@Spell + +syn region svnRegion start="^--.*--$" end="\%$" contains=ALL +syn match svnRemoved "^D .*$" contained +syn match svnRenamed "^R[ M][ U][ +] .*$" contained +syn match svnAdded "^A[ M][ U][ +] .*$" contained +syn match svnModified "^M[ M][ U] .*$" contained +syn match svnProperty "^_M[ U] .*$" contained + +" Synchronization. +syn sync clear +syn sync match svnSync grouphere svnRegion "^--.*--$"me=s-1 + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already. +" For version 5.8 and later: only when an item doesn't have highlighting yet. +if version >= 508 || !exists("did_svn_syn_inits") + if version <= 508 + let did_svn_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink svnRegion Comment + HiLink svnRemoved Constant + HiLink svnAdded Identifier + HiLink svnModified Special + HiLink svnProperty Special + HiLink svnRenamed Special + + delcommand HiLink +endif + +let b:current_syntax = "svn" diff --git a/share/vim/vim73/syntax/syncolor.vim b/share/vim/vim74/syntax/syncolor.vim similarity index 100% rename from share/vim/vim73/syntax/syncolor.vim rename to share/vim/vim74/syntax/syncolor.vim diff --git a/share/vim/vim74/syntax/synload.vim b/share/vim/vim74/syntax/synload.vim new file mode 100644 index 00000000..48b5956b --- /dev/null +++ b/share/vim/vim74/syntax/synload.vim @@ -0,0 +1,78 @@ +" Vim syntax support file +" Maintainer: Bram Moolenaar +" Last Change: 2012 Sep 25 + +" This file sets up for syntax highlighting. +" It is loaded from "syntax.vim" and "manual.vim". +" 1. Set the default highlight groups. +" 2. Install Syntax autocommands for all the available syntax files. + +if !has("syntax") + finish +endif + +" let others know that syntax has been switched on +let syntax_on = 1 + +" Set the default highlighting colors. Use a color scheme if specified. +if exists("colors_name") + exe "colors " . colors_name +else + runtime! syntax/syncolor.vim +endif + +" Line continuation is used here, remove 'C' from 'cpoptions' +let s:cpo_save = &cpo +set cpo&vim + +" First remove all old syntax autocommands. +au! Syntax + +au Syntax * call s:SynSet() + +fun! s:SynSet() + " clear syntax for :set syntax=OFF and any syntax name that doesn't exist + syn clear + if exists("b:current_syntax") + unlet b:current_syntax + endif + + let s = expand("") + if s == "ON" + " :set syntax=ON + if &filetype == "" + echohl ErrorMsg + echo "filetype unknown" + echohl None + endif + let s = &filetype + elseif s == "OFF" + let s = "" + endif + + if s != "" + " Load the syntax file(s). When there are several, separated by dots, + " load each in sequence. + for name in split(s, '\.') + exe "runtime! syntax/" . name . ".vim syntax/" . name . "/*.vim" + endfor + endif +endfun + + +" Handle adding doxygen to other languages (C, C++, C#, IDL) +au Syntax c,cpp,cs,idl,php + \ if (exists('b:load_doxygen_syntax') && b:load_doxygen_syntax) + \ || (exists('g:load_doxygen_syntax') && g:load_doxygen_syntax) + \ | runtime! syntax/doxygen.vim + \ | endif + + +" Source the user-specified syntax highlighting file +if exists("mysyntaxfile") && filereadable(expand(mysyntaxfile)) + execute "source " . mysyntaxfile +endif + +" Restore 'cpoptions' +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/syntax.vim b/share/vim/vim74/syntax/syntax.vim similarity index 100% rename from share/vim/vim73/syntax/syntax.vim rename to share/vim/vim74/syntax/syntax.vim diff --git a/share/vim/vim74/syntax/sysctl.vim b/share/vim/vim74/syntax/sysctl.vim new file mode 100644 index 00000000..748054fd --- /dev/null +++ b/share/vim/vim74/syntax/sysctl.vim @@ -0,0 +1,39 @@ +" Vim syntax file +" Language: sysctl.conf(5) configuration file +" Maintainer: Nikolai Weibull +" Latest Revision: 2011-05-02 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn match sysctlBegin display '^' + \ nextgroup=sysctlToken,sysctlComment skipwhite + +syn match sysctlToken contained display '[^=]\+' + \ nextgroup=sysctlTokenEq skipwhite + +syn match sysctlTokenEq contained display '=' nextgroup=sysctlValue skipwhite + +syn region sysctlValue contained display oneline + \ matchgroup=sysctlValue start='\S' + \ matchgroup=Normal end='\s*$' + +syn keyword sysctlTodo contained TODO FIXME XXX NOTE + +syn region sysctlComment display oneline start='^\s*[#;]' end='$' + \ contains=sysctlTodo,@Spell + +hi def link sysctlTodo Todo +hi def link sysctlComment Comment +hi def link sysctlToken Identifier +hi def link sysctlTokenEq Operator +hi def link sysctlValue String + +let b:current_syntax = "sysctl" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/tads.vim b/share/vim/vim74/syntax/tads.vim similarity index 100% rename from share/vim/vim73/syntax/tads.vim rename to share/vim/vim74/syntax/tads.vim diff --git a/share/vim/vim73/syntax/tags.vim b/share/vim/vim74/syntax/tags.vim similarity index 100% rename from share/vim/vim73/syntax/tags.vim rename to share/vim/vim74/syntax/tags.vim diff --git a/share/vim/vim73/syntax/tak.vim b/share/vim/vim74/syntax/tak.vim similarity index 100% rename from share/vim/vim73/syntax/tak.vim rename to share/vim/vim74/syntax/tak.vim diff --git a/share/vim/vim73/syntax/takcmp.vim b/share/vim/vim74/syntax/takcmp.vim similarity index 100% rename from share/vim/vim73/syntax/takcmp.vim rename to share/vim/vim74/syntax/takcmp.vim diff --git a/share/vim/vim73/syntax/takout.vim b/share/vim/vim74/syntax/takout.vim similarity index 100% rename from share/vim/vim73/syntax/takout.vim rename to share/vim/vim74/syntax/takout.vim diff --git a/share/vim/vim73/syntax/tar.vim b/share/vim/vim74/syntax/tar.vim similarity index 100% rename from share/vim/vim73/syntax/tar.vim rename to share/vim/vim74/syntax/tar.vim diff --git a/share/vim/vim74/syntax/taskdata.vim b/share/vim/vim74/syntax/taskdata.vim new file mode 100644 index 00000000..b37c70cc --- /dev/null +++ b/share/vim/vim74/syntax/taskdata.vim @@ -0,0 +1,48 @@ +" Vim syntax file +" Language: task data +" Maintainer: John Florian +" Updated: Wed Jul 8 19:46:20 EDT 2009 + + +" For version 5.x: Clear all syntax items. +" For version 6.x: Quit when a syntax file was already loaded. +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" Key Names for values. +syn keyword taskdataKey description due end entry imask mask parent +syn keyword taskdataKey priority project recur start status tags uuid +syn match taskdataKey "annotation_\d\+" +syn match taskdataUndo "^time.*$" +syn match taskdataUndo "^\(old \|new \|---\)" + +" Values associated with key names. +" +" Strings +syn region taskdataString matchgroup=Normal start=+"+ end=+"+ + \ contains=taskdataEncoded,taskdataUUID,@Spell +" +" Special Embedded Characters (e.g., ",") +syn match taskdataEncoded "&\a\+;" contained +" UUIDs +syn match taskdataUUID "\x\{8}-\(\x\{4}-\)\{3}\x\{12}" contained + + +" The default methods for highlighting. Can be overridden later. +hi def link taskdataEncoded Function +hi def link taskdataKey Statement +hi def link taskdataString String +hi def link taskdataUUID Special +hi def link taskdataUndo Type + +let b:current_syntax = "taskdata" + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:noexpandtab diff --git a/share/vim/vim74/syntax/taskedit.vim b/share/vim/vim74/syntax/taskedit.vim new file mode 100644 index 00000000..170153c0 --- /dev/null +++ b/share/vim/vim74/syntax/taskedit.vim @@ -0,0 +1,40 @@ +" Vim syntax file +" Language: support for 'task 42 edit' +" Maintainer: John Florian +" Updated: Wed Jul 8 19:46:32 EDT 2009 + + +" For version 5.x: Clear all syntax items. +" For version 6.x: Quit when a syntax file was already loaded. +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +syn match taskeditHeading "^\s*#\s*Name\s\+Editable details\s*$" contained +syn match taskeditHeading "^\s*#\s*-\+\s\+-\+\s*$" contained +syn match taskeditReadOnly "^\s*#\s*\(UU\)\?ID:.*$" contained +syn match taskeditReadOnly "^\s*#\s*Status:.*$" contained +syn match taskeditReadOnly "^\s*#\s*i\?Mask:.*$" contained +syn match taskeditKey "^ *.\{-}:" nextgroup=taskeditString +syn match taskeditComment "^\s*#.*$" + \ contains=taskeditReadOnly,taskeditHeading +syn match taskeditString ".*$" contained contains=@Spell + + +" The default methods for highlighting. Can be overridden later. +hi def link taskeditComment Comment +hi def link taskeditHeading Function +hi def link taskeditKey Statement +hi def link taskeditReadOnly Special +hi def link taskeditString String + +let b:current_syntax = "taskedit" + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:noexpandtab diff --git a/share/vim/vim74/syntax/tasm.vim b/share/vim/vim74/syntax/tasm.vim new file mode 100644 index 00000000..2f855961 --- /dev/null +++ b/share/vim/vim74/syntax/tasm.vim @@ -0,0 +1,128 @@ +" Vim syntax file +" Language: TASM: turbo assembler by Borland +" Maintaner: FooLman of United Force +" Last Change: 2012 Feb 03 by Thilo Six + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn case ignore +syn match tasmLabel "^[\ \t]*[@a-z_$][a-z0-9_$@]*\ *:" +syn keyword tasmDirective ALIAS ALIGN ARG ASSUME %BIN CATSRT CODESEG +syn match tasmDirective "\<\(byte\|word\|dword\|qword\)\ ptr\>" +" CALL extended syntax +syn keyword tasmDirective COMM %CONDS CONST %CREF %CREFALL %CREFREF +syn keyword tasmDirective %CREFUREF %CTLS DATASEG DB DD %DEPTH DF DISPLAY +syn keyword tasmDirective DOSSEG DP DQ DT DW ELSE EMUL END ENDIF +" IF XXXX +syn keyword tasmDirective ENDM ENDP ENDS ENUM EQU ERR EVEN EVENDATA EXITCODE +syn keyword tasmDirective EXITM EXTRN FARDATA FASTIMUL FLIPFLAG GETFIELD GLOBAL +syn keyword tasmDirective GOTO GROUP IDEAL %INCL INCLUDE INCLUDELIB INSTR IRP +"JMP +syn keyword tasmDirective IRPC JUMPS LABEL LARGESTACK %LINUM %LIST LOCAL +syn keyword tasmDirective LOCALS MACRO %MACS MASKFLAG MASM MASM51 MODEL +syn keyword tasmDirective MULTERRS NAME %NEWPAGE %NOCONDS %NOCREF %NOCTLS +syn keyword tasmDirective NOEMUL %NOINCL NOJUMPS %NOLIST NOLOCALS %NOMACS +syn keyword tasmDirective NOMASM51 NOMULTERRS NOSMART %NOSYMS %NOTRUNC NOWARN +syn keyword tasmDirective %PAGESIZE %PCNT PNO87 %POPLCTL POPSTATE PROC PROCDESC +syn keyword tasmDirective PROCTYPE PUBLIC PUBLICDLL PURGE %PUSHCTL PUSHSTATE +"rept, ret +syn keyword tasmDirective QUIRKS RADIX RECORD RETCODE SEGMENT SETFIELD +syn keyword tasmDirective SETFLAG SIZESTR SMALLSTACK SMART STACK STARTUPCODE +syn keyword tasmDirective STRUC SUBSTR %SUBTTL %SYMS TABLE %TABSIZE TBLINIT +syn keyword tasmDirective TBLINST TBLPTR TESTFLAG %TEXT %TITLE %TRUNC TYPEDEF +syn keyword tasmDirective UDATASEG UFARDATA UNION USES VERSION WAR WHILE ?DEBUG + +syn keyword tasmInstruction AAA AAD AAM AAS ADC ADD AND ARPL BOUND BSF BSR +syn keyword tasmInstruction BSWAP BT BTC BTR BTS CALL CBW CLC CLD CLI CLTS +syn keyword tasmInstruction CMC CMP CMPXCHG CMPXCHG8B CPUID CWD CDQ CWDE +syn keyword tasmInstruction DAA DAS DEC DIV ENTER RETN RETF F2XM1 +syn keyword tasmCoprocInstr FABS FADD FADDP FBLD FBSTP FCHG FCOM FCOM2 FCOMI +syn keyword tasmCoprocInstr FCOMIP FCOMP FCOMP3 FCOMP5 FCOMPP FCOS FDECSTP +syn keyword tasmCoprocInstr FDISI FDIV FDIVP FDIVR FENI FFREE FFREEP FIADD +syn keyword tasmCoprocInstr FICOM FICOMP FIDIV FIDIVR FILD FIMUL FINIT FINCSTP +syn keyword tasmCoprocInstr FIST FISTP FISUB FISUBR FLD FLD1 FLDCW FLDENV +syn keyword tasmCoprocInstr FLDL2E FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP +syn keyword tasmCoprocInstr FNCLEX FNINIT FNOP FNSAVE FNSTCW FNSTENV FNSTSW +syn keyword tasmCoprocInstr FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSCALE +syn keyword tasmCoprocInstr FSETPM FSIN FSINCOM FSQRT FST FSTP FSTP1 FSTP8 +syn keyword tasmCoprocInstr FSTP9 FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI +syn keyword tasmCoprocInstr FUCOMPP FWAIT FXAM FXCH FXCH4 FXCH7 FXTRACT FYL2X +syn keyword tasmCoprocInstr FYL2XP1 FSTCW FCHS FSINCOS +syn keyword tasmInstruction IDIV IMUL IN INC INT INTO INVD INVLPG IRET JMP +syn keyword tasmInstruction LAHF LAR LDS LEA LEAVE LES LFS LGDT LGS LIDT LLDT +syn keyword tasmInstruction LMSW LOCK LODSB LSL LSS LTR MOV MOVSX MOVZX MUL +syn keyword tasmInstruction NEG NOP NOT OR OUT POP POPA POPAD POPF POPFD PUSH +syn keyword tasmInstruction PUSHA PUSHAD PUSHF PUSHFD RCL RCR RDMSR RDPMC RDTSC +syn keyword tasmInstruction REP RET ROL ROR RSM SAHF SAR SBB SGDT SHL SAL SHLD +syn keyword tasmInstruction SHR SHRD SIDT SMSW STC STD STI STR SUB TEST VERR +syn keyword tasmInstruction VERW WBINVD WRMSR XADD XCHG XLAT XOR +syn keyword tasmMMXinst EMMS MOVD MOVQ PACKSSDW PACKSSWB PACKUSWB PADDB +syn keyword tasmMMXinst PADDD PADDSB PADDSB PADDSW PADDUSB PADDUSW PADDW +syn keyword tasmMMXinst PAND PANDN PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD +syn keyword tasmMMXinst PCMPGTW PMADDWD PMULHW PMULLW POR PSLLD PSLLQ +syn keyword tasmMMXinst PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD +syn keyword tasmMMXinst PSUBSB PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW +syn keyword tasmMMXinst PUNPCKHBQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD +syn keyword tasmMMXinst PXOR +"FCMOV +syn match tasmInstruction "\<\(CMPS\|MOVS\|OUTS\|SCAS\|STOS\|LODS\|INS\)[BWD]" +syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABCGLESXZ]\>" +syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABGL]E\>" +syn match tasmInstruction "\<\(LOOP\|REP\)N\=[EZ]\=\>" +syn match tasmRegister "\<[A-D][LH]\>" +syn match tasmRegister "\" +syn match tasmRegister "\<[C-GS]S\>" +syn region tasmComment start=";" end="$" +"HACK! comment ? ... selection +syn region tasmComment start="comment \+\$" end="\$" +syn region tasmComment start="comment \+\~" end="\~" +syn region tasmComment start="comment \+#" end="#" +syn region tasmString start="'" end="'" +syn region tasmString start='"' end='"' + +syn match tasmDec "\<-\=[0-9]\+\.\=[0-9]*\>" +syn match tasmHex "\<[0-9][0-9A-F]*H\>" +syn match tasmOct "\<[0-7]\+O\>" +syn match tasmBin "\<[01]\+B\>" + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_tasm_syntax_inits") + if version < 508 + let did_tasm_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink tasmString String + HiLink tasmDec Number + HiLink tasmHex Number + HiLink tasmOct Number + HiLink tasmBin Number + HiLink tasmInstruction Keyword + HiLink tasmCoprocInstr Keyword + HiLink tasmMMXInst Keyword + HiLink tasmDirective PreProc + HiLink tasmRegister Identifier + HiLink tasmProctype PreProc + HiLink tasmComment Comment + HiLink tasmLabel Label + + delcommand HiLink +endif + +let b:curret_syntax = "tasm" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/tcl.vim b/share/vim/vim74/syntax/tcl.vim similarity index 100% rename from share/vim/vim73/syntax/tcl.vim rename to share/vim/vim74/syntax/tcl.vim diff --git a/share/vim/vim73/syntax/tcsh.vim b/share/vim/vim74/syntax/tcsh.vim similarity index 100% rename from share/vim/vim73/syntax/tcsh.vim rename to share/vim/vim74/syntax/tcsh.vim diff --git a/share/vim/vim73/syntax/terminfo.vim b/share/vim/vim74/syntax/terminfo.vim similarity index 100% rename from share/vim/vim73/syntax/terminfo.vim rename to share/vim/vim74/syntax/terminfo.vim diff --git a/share/vim/vim74/syntax/tex.vim b/share/vim/vim74/syntax/tex.vim new file mode 100644 index 00000000..7bb28159 --- /dev/null +++ b/share/vim/vim74/syntax/tex.vim @@ -0,0 +1,1329 @@ +" Vim syntax file +" Language: TeX +" Maintainer: Charles E. Campbell +" Last Change: Jun 24, 2013 +" Version: 79 +" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX +" +" Notes: {{{1 +" +" 1. If you have a \begin{verbatim} that appears to overrun its boundaries, +" use %stopzone. +" +" 2. Run-on equations ($..$ and $$..$$, particularly) can also be stopped +" by suitable use of %stopzone. +" +" 3. If you have a slow computer, you may wish to modify +" +" syn sync maxlines=200 +" syn sync minlines=50 +" +" to values that are more to your liking. +" +" 4. There is no match-syncing for $...$ and $$...$$; hence large +" equation blocks constructed that way may exhibit syncing problems. +" (there's no difference between begin/end patterns) +" +" 5. If you have the variable "g:tex_no_error" defined then none of the +" lexical error-checking will be done. +" +" ie. let g:tex_no_error=1 + +" Version Clears: {{{1 +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif +let s:keepcpo= &cpo +set cpo&vim +scriptencoding utf-8 + +" Define the default highlighting. {{{1 +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_tex_syntax_inits") + let did_tex_syntax_inits = 1 + if version < 508 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif +endif +if exists("g:tex_no_error") && g:tex_no_error + let s:tex_no_error= 1 +endif + +" by default, enable all region-based highlighting +let s:tex_fast= "bcmMprsSvV" +if exists("g:tex_fast") + if type(g:tex_fast) != 1 + " g:tex_fast exists and is not a string, so + " turn off all optional region-based highighting + let s:tex_fast= "" + else + let s:tex_fast= g:tex_fast + endif + let s:tex_no_error= 1 +else + let s:tex_fast= "bcmMprsSvV" +endif + +" let user determine which classes of concealment will be supported +" a=accents/ligatures d=delimiters m=math symbols g=Greek s=superscripts/subscripts +if !exists("g:tex_conceal") + let s:tex_conceal= 'abdmgsS' +else + let s:tex_conceal= g:tex_conceal +endif + +" Determine whether or not to use "*.sty" mode {{{1 +" The user may override the normal determination by setting +" g:tex_stylish to 1 (for "*.sty" mode) +" or to 0 else (normal "*.tex" mode) +" or on a buffer-by-buffer basis with b:tex_stylish +let s:extfname=expand("%:e") +if exists("g:tex_stylish") + let b:tex_stylish= g:tex_stylish +elseif !exists("b:tex_stylish") + if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx" + let b:tex_stylish= 1 + else + let b:tex_stylish= 0 + endif +endif + +" handle folding {{{1 +if !exists("g:tex_fold_enabled") + let g:tex_fold_enabled= 0 +elseif g:tex_fold_enabled && !has("folding") + let g:tex_fold_enabled= 0 + echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support" +endif +if g:tex_fold_enabled && &fdm == "manual" + setl fdm=syntax +endif + +" (La)TeX keywords: uses the characters 0-9,a-z,A-Z,192-255 only... {{{1 +" but _ is the only one that causes problems. +" One may override this iskeyword setting by providing +" g:tex_isk +if exists("g:tex_isk") + exe "setlocal isk=".g:tex_isk +else + setlocal isk=48-57,a-z,A-Z,192-255 +endif +if b:tex_stylish + setlocal isk+=@-@ +endif +if exists("g:tex_nospell") && g:tex_nospell && !exists("g:tex_comment_nospell") + let g:tex_comment_nospell= 1 +endif + +" Clusters: {{{1 +" -------- +syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texBeginEnd,texBeginEndName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle +if !exists("s:tex_no_error") + syn cluster texCmdGroup add=texMathError +endif +syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement +syn cluster texFoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texItalStyle,texNoSpell +syn cluster texBoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texBoldItalStyle,texNoSpell +syn cluster texItalGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texItalStyle,texItalBoldStyle,texNoSpell +if !exists("g:tex_nospell") || !g:tex_nospell + syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,@Spell + syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,@Spell,texStyleMatcher +else + syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption + syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher +endif +syn cluster texPreambleMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption +syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter +if !exists("tex_no_math") + syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ + syn cluster texMatchGroup add=@texMathZones + syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2 + syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone + syn cluster texMathZoneGroup contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle + if !exists("s:tex_no_error") + syn cluster texMathMatchGroup add=texMathError + syn cluster texMathZoneGroup add=texMathError + endif + syn cluster texMathZoneGroup add=@NoSpell + " following used in the \part \chapter \section \subsection \subsubsection + " \paragraph \subparagraph \author \title highlighting + syn cluster texDocGroup contains=texPartZone,@texPartGroup + syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone + syn cluster texChapterGroup contains=texSectionZone,texParaZone + syn cluster texSectionGroup contains=texSubSectionZone,texParaZone + syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone + syn cluster texSubSubSectionGroup contains=texParaZone + syn cluster texParaGroup contains=texSubParaZone + if has("conceal") && &enc == 'utf-8' + syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol + syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol + endif +endif + +" Try to flag {} and () mismatches: {{{1 +if s:tex_fast =~ 'm' + if !exists("s:tex_no_error") + syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup,texError + syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup,texError,@NoSpell + else + syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup + syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup + endif + if !exists("g:tex_nospell") || !g:tex_nospell + syn region texParen start="(" end=")" contains=@texMatchGroup,@Spell + else + syn region texParen start="(" end=")" contains=@texMatchGroup + endif +endif +if !exists("s:tex_no_error") + syn match texError "[}\])]" +endif +if s:tex_fast =~ 'M' + if !exists("tex_no_math") + if !exists("s:tex_no_error") + syn match texMathError "}" contained + endif + syn region texMathMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup + endif +endif + +" TeX/LaTeX keywords: {{{1 +" Instead of trying to be All Knowing, I just match \..alphameric.. +" Note that *.tex files may not have "@" in their \commands +if exists("g:tex_tex") || b:tex_stylish + syn match texStatement "\\[a-zA-Z@]\+" +else + syn match texStatement "\\\a\+" + if !exists("s:tex_no_error") + syn match texError "\\\a*@[a-zA-Z@]*" + endif +endif + +" TeX/LaTeX delimiters: {{{1 +syn match texDelimiter "&" +syn match texDelimiter "\\\\" +syn match texDelimiter "[{}]" + +" Tex/Latex Options: {{{1 +syn match texOption "[^\\]\zs#\d\+\|^#\d\+" + +" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1 +if b:tex_stylish + syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 + syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 +else + syn match texAccent "\\[bcdvuH]\A"me=e-1 + syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1 +endif +syn match texAccent "\\[bcdvuH]$" +syn match texAccent +\\[=^.\~"`']+ +syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+ +syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$" + +" \begin{}/\end{} section markers: {{{1 +syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName +if s:tex_fast =~ 'm' + syn region texBeginEndName matchgroup=Delimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment + syn region texBeginEndModifier matchgroup=Delimiter start="\[" end="]" contained contains=texComment,@NoSpell +endif + +" \documentclass, \documentstyle, \usepackage: {{{1 +syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs +if s:tex_fast =~ 'm' + syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell +endif + +" Preamble syntax-based folding support: {{{1 +if g:tex_fold_enabled && has("folding") + syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup +endif + +" TeX input: {{{1 +syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement +syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt +syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt +syn match texInputCurlies "[{}]" contained +if s:tex_fast =~ 'm' + syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained contains=texComment +endif + +" Type Styles (LaTeX 2.09): {{{1 +syn match texTypeStyle "\\rm\>" +syn match texTypeStyle "\\em\>" +syn match texTypeStyle "\\bf\>" +syn match texTypeStyle "\\it\>" +syn match texTypeStyle "\\sl\>" +syn match texTypeStyle "\\sf\>" +syn match texTypeStyle "\\sc\>" +syn match texTypeStyle "\\tt\>" + +" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1 +if s:tex_conceal !~ 'b' + syn match texTypeStyle "\\textbf\>" + syn match texTypeStyle "\\textit\>" +endif +syn match texTypeStyle "\\textmd\>" +syn match texTypeStyle "\\textrm\>" +syn match texTypeStyle "\\textsc\>" +syn match texTypeStyle "\\textsf\>" +syn match texTypeStyle "\\textsl\>" +syn match texTypeStyle "\\texttt\>" +syn match texTypeStyle "\\textup\>" +syn match texTypeStyle "\\emph\>" + +syn match texTypeStyle "\\mathbb\>" +syn match texTypeStyle "\\mathbf\>" +syn match texTypeStyle "\\mathcal\>" +syn match texTypeStyle "\\mathfrak\>" +syn match texTypeStyle "\\mathit\>" +syn match texTypeStyle "\\mathnormal\>" +syn match texTypeStyle "\\mathrm\>" +syn match texTypeStyle "\\mathsf\>" +syn match texTypeStyle "\\mathtt\>" + +syn match texTypeStyle "\\rmfamily\>" +syn match texTypeStyle "\\sffamily\>" +syn match texTypeStyle "\\ttfamily\>" + +syn match texTypeStyle "\\itshape\>" +syn match texTypeStyle "\\scshape\>" +syn match texTypeStyle "\\slshape\>" +syn match texTypeStyle "\\upshape\>" + +syn match texTypeStyle "\\bfseries\>" +syn match texTypeStyle "\\mdseries\>" + +" Some type sizes: {{{1 +syn match texTypeSize "\\tiny\>" +syn match texTypeSize "\\scriptsize\>" +syn match texTypeSize "\\footnotesize\>" +syn match texTypeSize "\\small\>" +syn match texTypeSize "\\normalsize\>" +syn match texTypeSize "\\large\>" +syn match texTypeSize "\\Large\>" +syn match texTypeSize "\\LARGE\>" +syn match texTypeSize "\\huge\>" +syn match texTypeSize "\\Huge\>" + +" Spacecodes (TeX'isms): {{{1 +" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x +syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar +syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained + +" Sections, subsections, etc: {{{1 +if s:tex_fast =~ 'p' + if !exists("g:tex_nospell") || !g:tex_nospell + if g:tex_fold_enabled && has("folding") + syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup,@Spell + syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texPartGroup,@Spell + syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texChapterGroup,@Spell + syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSectionGroup,@Spell + syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSectionGroup,@Spell + syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSubSectionGroup,@Spell + syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texParaGroup,@Spell + syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@Spell + syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' fold contains=@texFoldGroup,@Spell + syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup,@Spell + else + syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell + syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell + syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell + syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell + syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell + syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell + syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup,@Spell + syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@Spell + syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell + syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell + endif + else + if g:tex_fold_enabled && has("folding") + syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup + syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texPartGroup + syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texChapterGroup + syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSectionGroup + syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSectionGroup + syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSubSectionGroup + syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texParaGroup + syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup + syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' fold contains=@texFoldGroup + syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup + else + syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup + syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup + syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup + syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup + syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup + syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup + syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup + syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup + syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup + syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup + endif + endif +endif + +" particular support for bold and italic {{{1 +if s:tex_fast =~ 'b' + if s:tex_conceal =~ 'b' + syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" end="}" concealends contains=@texBoldGroup + syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" end="}" concealends contains=@texItalGroup + syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" end="}" concealends contains=@texItalGroup + syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" end="}" concealends contains=@texBoldGroup + endif +endif + +" Bad Math (mismatched): {{{1 +if !exists("g:tex_no_math") && !exists("s:tex_no_error") + syn match texBadMath "\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|subequations\|smallmatrix\|xxalignat\)\s*}" + syn match texBadMath "\\end\s*{\s*\(align\|alignat\|displaymath\|displaymath\|eqnarray\|equation\|flalign\|gather\|math\|multline\|xalignat\)\*\=\s*}" + syn match texBadMath "\\[\])]" +endif + +" Math Zones: {{{1 +if !exists("tex_no_math") + " TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2 + " Starred forms are created if starform is true. Starred + " forms have syntax group and synchronization groups with a + " "S" appended. Handles: cluster, syntax, sync, and HiLink. + fun! TexNewMathZone(sfx,mathzone,starform) + let grpname = "texMathZone".a:sfx + let syncname = "texSyncMathZone".a:sfx + if g:tex_fold_enabled + let foldcmd= " fold" + else + let foldcmd= "" + endif + exe "syn cluster texMathZones add=".grpname + if s:tex_fast =~ 'M' + exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd + exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' + exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' + endif + exe 'hi def link '.grpname.' texMath' + if a:starform + let grpname = "texMathZone".a:sfx.'S' + let syncname = "texSyncMathZone".a:sfx.'S' + exe "syn cluster texMathZones add=".grpname + if s:tex_fast =~ 'M' + exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd + exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' + exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' + endif + exe 'hi def link '.grpname.' texMath' + endif + endfun + + " Standard Math Zones: {{{2 + call TexNewMathZone("A","align",1) + call TexNewMathZone("B","alignat",1) + call TexNewMathZone("C","displaymath",1) + call TexNewMathZone("D","eqnarray",1) + call TexNewMathZone("E","equation",1) + call TexNewMathZone("F","flalign",1) + call TexNewMathZone("G","gather",1) + call TexNewMathZone("H","math",1) + call TexNewMathZone("I","multline",1) + call TexNewMathZone("J","subequations",0) + call TexNewMathZone("K","xalignat",1) + call TexNewMathZone("L","xxalignat",0) + + " Inline Math Zones: {{{2 + if s:tex_fast =~ 'M' + if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'd' + syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup + syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup + syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup + syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" concealends keepend contains=@texMathZoneGroup + else + syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup + syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup + syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup + syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup + endif + syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup + endif + + syn match texMathOper "[_^=]" contained + + " Text Inside Math Zones: {{{2 + if s:tex_fast =~ 'M' + if !exists("g:tex_nospell") || !g:tex_nospell + syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell + else + syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup + endif + endif + + " \left..something.. and \right..something.. support: {{{2 + syn match texMathDelimBad contained "\S" + if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'm' + syn match texMathDelim contained "\\left\\{\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={ + syn match texMathDelim contained "\\right\\}\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=} + let s:texMathDelimList=[ + \ ['<' , '<'] , + \ ['>' , '>'] , + \ ['(' , '('] , + \ [')' , ')'] , + \ ['\[' , '['] , + \ [']' , ']'] , + \ ['\\{' , '{'] , + \ ['\\}' , '}'] , + \ ['|' , '|'] , + \ ['\\|' , '‖'] , + \ ['\\backslash' , '\'] , + \ ['\\downarrow' , '↓'] , + \ ['\\Downarrow' , '⇓'] , + \ ['\\langle' , '<'] , + \ ['\\lbrace' , '['] , + \ ['\\lceil' , '⌈'] , + \ ['\\lfloor' , '⌊'] , + \ ['\\lgroup' , '⌊'] , + \ ['\\lmoustache' , '⎛'] , + \ ['\\rangle' , '>'] , + \ ['\\rbrace' , ']'] , + \ ['\\rceil' , '⌉'] , + \ ['\\rfloor' , '⌋'] , + \ ['\\rgroup' , '⌋'] , + \ ['\\rmoustache' , '⎞'] , + \ ['\\uparrow' , '↑'] , + \ ['\\Uparrow' , '↑'] , + \ ['\\updownarrow', '↕'] , + \ ['\\Updownarrow', '⇕']] + syn match texMathDelim '\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad + for texmath in s:texMathDelimList + exe "syn match texMathDelim '\\\\[bB]igg\\=[lr]\\=".texmath[0]."' contained conceal cchar=".texmath[1] + endfor + + else + syn match texMathDelim contained "\\\(left\|right\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad + syn match texMathDelim contained "\\[bB]igg\=[lr]\=\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad + syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad + syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]" + syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow + syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow + syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow + syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow + syn keyword texMathDelimKey contained lbrace lvert rfloor + endif + syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>" + syn match texMathDelim contained "\\lefteqn\>" +endif + +" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1 +syn match texSpecialChar "\\[$&%#{}_]" +if b:tex_stylish + syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1 +else + syn match texSpecialChar "\\[SP@]\A"me=e-1 +endif +syn match texSpecialChar "\\\\" +if !exists("tex_no_math") + syn match texOnlyMath "[_^]" +endif +syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S" +if s:tex_conceal !~ 'S' + syn match texSpecialChar '\\glq\>' contained conceal cchar=‚ + syn match texSpecialChar '\\grq\>' contained conceal cchar=‘ + syn match texSpecialChar '\\glqq\>' contained conceal cchar=„ + syn match texSpecialChar '\\grqq\>' contained conceal cchar=“ + syn match texSpecialChar '\\hyp\>' contained conceal cchar=- +endif + +" Comments: {{{1 +" Normal TeX LaTeX : %.... +" Documented TeX Format: ^^A... -and- leading %s (only) +if !exists("g:tex_comment_nospell") || !g:tex_comment_nospell + syn cluster texCommentGroup contains=texTodo,@Spell +else + syn cluster texCommentGroup contains=texTodo,@NoSpell +endif +syn case ignore +syn keyword texTodo contained combak fixme todo xxx +syn case match +if s:extfname == "dtx" + syn match texComment "\^\^A.*$" contains=@texCommentGroup + syn match texComment "^%\+" contains=@texCommentGroup +else + if g:tex_fold_enabled + " allows syntax-folding of 2 or more contiguous comment lines + " single-line comments are not folded + syn match texComment "%.*$" contains=@texCommentGroup + if s:tex_fast =~ 'c' + syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' fold + syn region texNoSpell contained fold matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell + endif + else + syn match texComment "%.*$" contains=@texCommentGroup + if s:tex_fast =~ 'c' + syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell + endif + endif +endif + +" Separate lines used for verb` and verb# so that the end conditions {{{1 +" will appropriately terminate. +" If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there. +if s:tex_fast =~ 'v' + if exists("g:tex_verbspell") && g:tex_verbspell + syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell + " listings package: + syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" contains=@Spell + if version < 600 + syn region texZone start="\\verb\*\=`" end="`\|%stopzone\>" contains=@Spell + syn region texZone start="\\verb\*\=#" end="#\|%stopzone\>" contains=@Spell + else + if b:tex_stylish + syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell + else + syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" contains=@Spell + endif + endif + else + syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" + if version < 600 + syn region texZone start="\\verb\*\=`" end="`\|%stopzone\>" + syn region texZone start="\\verb\*\=#" end="#\|%stopzone\>" + else + if b:tex_stylish + syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" + else + syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" + endif + endif + endif +endif + +" Tex Reference Zones: {{{1 +if s:tex_fast =~ 'r' + syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup + syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup + syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup + syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup + syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup + syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup + syn region texRefOption contained matchgroup=Delimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite + syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite +endif +syn match texRefZone '\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite + +" Handle newcommand, newenvironment : {{{1 +syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl +if s:tex_fast =~ 'V' + syn region texCmdName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl + syn region texCmdArgs contained matchgroup=Delimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl + syn region texCmdBody contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=Delimiter end="}" contains=@texCmdGroup +endif +syn match texNewEnv "\\newenvironment\>" nextgroup=texEnvName skipwhite skipnl +if s:tex_fast =~ 'V' + syn region texEnvName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl + syn region texEnvBgn contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup + syn region texEnvEnd contained matchgroup=Delimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup +endif + +" Definitions/Commands: {{{1 +syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl +if b:tex_stylish + syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl + syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl +else + syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl + syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl +endif +syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl +syn match texDefParm contained "#\d\+" + +" TeX Lengths: {{{1 +syn match texLength "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>" + +" TeX String Delimiters: {{{1 +syn match texString "\(``\|''\|,,\)" + +" makeatletter -- makeatother sections +if !exists("s:tex_no_error") + if s:tex_fast =~ 'S' + syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained + endif + syn match texStyleStatement "\\[a-zA-Z@]\+" contained + if s:tex_fast =~ 'S' + syn region texStyleMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained + syn region texStyleMatcher matchgroup=Delimiter start="\[" end="]" contains=@texStyleGroup,texError contained + endif +endif + +" Conceal mode support (supports set cole=2) {{{1 +if has("conceal") && &enc == 'utf-8' + + " Math Symbols {{{2 + " (many of these symbols were contributed by Björn Winckler) + if s:tex_conceal =~ 'm' + let s:texMathList=[ + \ ['|' , '‖'], + \ ['aleph' , 'ℵ'], + \ ['amalg' , '∐'], + \ ['angle' , '∠'], + \ ['approx' , '≈'], + \ ['ast' , '∗'], + \ ['asymp' , '≍'], + \ ['backepsilon' , '∍'], + \ ['backsimeq' , '≃'], + \ ['backslash' , '∖'], + \ ['barwedge' , '⊼'], + \ ['because' , '∵'], + \ ['between' , '≬'], + \ ['bigcap' , '∩'], + \ ['bigcirc' , '○'], + \ ['bigcup' , '∪'], + \ ['bigodot' , '⊙'], + \ ['bigoplus' , '⊕'], + \ ['bigotimes' , '⊗'], + \ ['bigsqcup' , '⊔'], + \ ['bigtriangledown', '∇'], + \ ['bigtriangleup' , '∆'], + \ ['bigvee' , '⋁'], + \ ['bigwedge' , '⋀'], + \ ['blacksquare' , '∎'], + \ ['bot' , '⊥'], + \ ['bowtie' , '⋈'], + \ ['boxdot' , '⊡'], + \ ['boxminus' , '⊟'], + \ ['boxplus' , '⊞'], + \ ['boxtimes' , '⊠'], + \ ['bullet' , '•'], + \ ['bumpeq' , '≏'], + \ ['Bumpeq' , '≎'], + \ ['cap' , '∩'], + \ ['Cap' , '⋒'], + \ ['cdot' , '·'], + \ ['cdots' , '⋯'], + \ ['circ' , '∘'], + \ ['circeq' , '≗'], + \ ['circlearrowleft', '↺'], + \ ['circlearrowright', '↻'], + \ ['circledast' , '⊛'], + \ ['circledcirc' , '⊚'], + \ ['clubsuit' , '♣'], + \ ['complement' , '∁'], + \ ['cong' , '≅'], + \ ['coprod' , '∐'], + \ ['copyright' , '©'], + \ ['cup' , '∪'], + \ ['Cup' , '⋓'], + \ ['curlyeqprec' , '⋞'], + \ ['curlyeqsucc' , '⋟'], + \ ['curlyvee' , '⋎'], + \ ['curlywedge' , '⋏'], + \ ['dagger' , '†'], + \ ['dashv' , '⊣'], + \ ['ddagger' , '‡'], + \ ['ddots' , '⋱'], + \ ['diamond' , '⋄'], + \ ['diamondsuit' , '♢'], + \ ['div' , '÷'], + \ ['doteq' , '≐'], + \ ['doteqdot' , '≑'], + \ ['dotplus' , '∔'], + \ ['dots' , '…'], + \ ['dotsb' , '⋯'], + \ ['dotsc' , '…'], + \ ['dotsi' , '⋯'], + \ ['dotso' , '…'], + \ ['doublebarwedge' , '⩞'], + \ ['downarrow' , '↓'], + \ ['Downarrow' , '⇓'], + \ ['ell' , 'ℓ'], + \ ['emptyset' , '∅'], + \ ['eqcirc' , '≖'], + \ ['eqsim' , '≂'], + \ ['eqslantgtr' , '⪖'], + \ ['eqslantless' , '⪕'], + \ ['equiv' , '≡'], + \ ['exists' , '∃'], + \ ['fallingdotseq' , '≒'], + \ ['flat' , '♭'], + \ ['forall' , '∀'], + \ ['frown' , '⁔'], + \ ['ge' , '≥'], + \ ['geq' , '≥'], + \ ['geqq' , '≧'], + \ ['gets' , '←'], + \ ['gg' , '⟫'], + \ ['gneqq' , '≩'], + \ ['gtrdot' , '⋗'], + \ ['gtreqless' , '⋛'], + \ ['gtrless' , '≷'], + \ ['gtrsim' , '≳'], + \ ['hbar' , 'ℏ'], + \ ['heartsuit' , '♡'], + \ ['hookleftarrow' , '↩'], + \ ['hookrightarrow' , '↪'], + \ ['iiint' , '∭'], + \ ['iint' , '∬'], + \ ['Im' , 'ℑ'], + \ ['imath' , 'ɩ'], + \ ['in' , '∈'], + \ ['infty' , '∞'], + \ ['int' , '∫'], + \ ['lceil' , '⌈'], + \ ['ldots' , '…'], + \ ['le' , '≤'], + \ ['leadsto' , '↝'], + \ ['left(' , '('], + \ ['left\[' , '['], + \ ['left\\{' , '{'], + \ ['leftarrow' , '⟵'], + \ ['Leftarrow' , '⟸'], + \ ['leftarrowtail' , '↢'], + \ ['leftharpoondown', '↽'], + \ ['leftharpoonup' , '↼'], + \ ['leftrightarrow' , '↔'], + \ ['Leftrightarrow' , '⇔'], + \ ['leftrightsquigarrow', '↭'], + \ ['leftthreetimes' , '⋋'], + \ ['leq' , '≤'], + \ ['leq' , '≤'], + \ ['leqq' , '≦'], + \ ['lessdot' , '⋖'], + \ ['lesseqgtr' , '⋚'], + \ ['lesssim' , '≲'], + \ ['lfloor' , '⌊'], + \ ['ll' , '≪'], + \ ['lmoustache' , '╭'], + \ ['lneqq' , '≨'], + \ ['ltimes' , '⋉'], + \ ['mapsto' , '↦'], + \ ['measuredangle' , '∡'], + \ ['mid' , '∣'], + \ ['models' , '╞'], + \ ['mp' , '∓'], + \ ['nabla' , '∇'], + \ ['natural' , '♮'], + \ ['ncong' , '≇'], + \ ['ne' , '≠'], + \ ['nearrow' , '↗'], + \ ['neg' , '¬'], + \ ['neq' , '≠'], + \ ['nexists' , '∄'], + \ ['ngeq' , '≱'], + \ ['ngeqq' , '≱'], + \ ['ngtr' , '≯'], + \ ['ni' , '∋'], + \ ['nleftarrow' , '↚'], + \ ['nLeftarrow' , '⇍'], + \ ['nLeftrightarrow', '⇎'], + \ ['nleq' , '≰'], + \ ['nleqq' , '≰'], + \ ['nless' , '≮'], + \ ['nmid' , '∤'], + \ ['notin' , '∉'], + \ ['nprec' , '⊀'], + \ ['nrightarrow' , '↛'], + \ ['nRightarrow' , '⇏'], + \ ['nsim' , '≁'], + \ ['nsucc' , '⊁'], + \ ['ntriangleleft' , '⋪'], + \ ['ntrianglelefteq', '⋬'], + \ ['ntriangleright' , '⋫'], + \ ['ntrianglerighteq', '⋭'], + \ ['nvdash' , '⊬'], + \ ['nvDash' , '⊭'], + \ ['nVdash' , '⊮'], + \ ['nwarrow' , '↖'], + \ ['odot' , '⊙'], + \ ['oint' , '∮'], + \ ['ominus' , '⊖'], + \ ['oplus' , '⊕'], + \ ['oslash' , '⊘'], + \ ['otimes' , '⊗'], + \ ['owns' , '∋'], + \ ['P' , '¶'], + \ ['parallel' , '║'], + \ ['partial' , '∂'], + \ ['perp' , '⊥'], + \ ['pitchfork' , '⋔'], + \ ['pm' , '±'], + \ ['prec' , '≺'], + \ ['precapprox' , '⪷'], + \ ['preccurlyeq' , '≼'], + \ ['preceq' , '⪯'], + \ ['precnapprox' , '⪹'], + \ ['precneqq' , '⪵'], + \ ['precsim' , '≾'], + \ ['prime' , '′'], + \ ['prod' , '∏'], + \ ['propto' , '∝'], + \ ['rceil' , '⌉'], + \ ['Re' , 'ℜ'], + \ ['rfloor' , '⌋'], + \ ['right)' , ')'], + \ ['right]' , ']'], + \ ['right\\}' , '}'], + \ ['rightarrow' , '⟶'], + \ ['Rightarrow' , '⟹'], + \ ['rightarrowtail' , '↣'], + \ ['rightleftharpoons', '⇌'], + \ ['rightsquigarrow', '↝'], + \ ['rightthreetimes', '⋌'], + \ ['risingdotseq' , '≓'], + \ ['rmoustache' , '╮'], + \ ['rtimes' , '⋊'], + \ ['S' , '§'], + \ ['searrow' , '↘'], + \ ['setminus' , '∖'], + \ ['sharp' , '♯'], + \ ['sim' , '∼'], + \ ['simeq' , '⋍'], + \ ['smile' , '‿'], + \ ['spadesuit' , '♠'], + \ ['sphericalangle' , '∢'], + \ ['sqcap' , '⊓'], + \ ['sqcup' , '⊔'], + \ ['sqsubset' , '⊏'], + \ ['sqsubseteq' , '⊑'], + \ ['sqsupset' , '⊐'], + \ ['sqsupseteq' , '⊒'], + \ ['star' , '✫'], + \ ['subset' , '⊂'], + \ ['Subset' , '⋐'], + \ ['subseteq' , '⊆'], + \ ['subseteqq' , '⫅'], + \ ['subsetneq' , '⊊'], + \ ['subsetneqq' , '⫋'], + \ ['succ' , '≻'], + \ ['succapprox' , '⪸'], + \ ['succcurlyeq' , '≽'], + \ ['succeq' , '⪰'], + \ ['succnapprox' , '⪺'], + \ ['succneqq' , '⪶'], + \ ['succsim' , '≿'], + \ ['sum' , '∑'], + \ ['supset' , '⊃'], + \ ['Supset' , '⋑'], + \ ['supseteq' , '⊇'], + \ ['supseteqq' , '⫆'], + \ ['supsetneq' , '⊋'], + \ ['supsetneqq' , '⫌'], + \ ['surd' , '√'], + \ ['swarrow' , '↙'], + \ ['therefore' , '∴'], + \ ['times' , '×'], + \ ['to' , '→'], + \ ['top' , '⊤'], + \ ['triangle' , '∆'], + \ ['triangleleft' , '⊲'], + \ ['trianglelefteq' , '⊴'], + \ ['triangleq' , '≜'], + \ ['triangleright' , '⊳'], + \ ['trianglerighteq', '⊵'], + \ ['twoheadleftarrow', '↞'], + \ ['twoheadrightarrow', '↠'], + \ ['uparrow' , '↑'], + \ ['Uparrow' , '⇑'], + \ ['updownarrow' , '↕'], + \ ['Updownarrow' , '⇕'], + \ ['varnothing' , '∅'], + \ ['vartriangle' , '∆'], + \ ['vdash' , '⊢'], + \ ['vDash' , '⊨'], + \ ['Vdash' , '⊩'], + \ ['vdots' , '⋮'], + \ ['vee' , '∨'], + \ ['veebar' , '⊻'], + \ ['Vvdash' , '⊪'], + \ ['wedge' , '∧'], + \ ['wp' , '℘'], + \ ['wr' , '≀']] +" \ ['jmath' , 'X'] +" \ ['uminus' , 'X'] +" \ ['uplus' , 'X'] + for texmath in s:texMathList + if texmath[0] =~ '\w$' + exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1] + else + exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1] + endif + endfor + + if &ambw == "double" + syn match texMathSymbol '\\gg\>' contained conceal cchar=≫ + syn match texMathSymbol '\\ll\>' contained conceal cchar=≪ + else + syn match texMathSymbol '\\gg\>' contained conceal cchar=⟫ + syn match texMathSymbol '\\ll\>' contained conceal cchar=⟪ + endif + + syn match texMathSymbol '\\hat{a}' contained conceal cchar=â + syn match texMathSymbol '\\hat{A}' contained conceal cchar= + syn match texMathSymbol '\\hat{c}' contained conceal cchar=ĉ + syn match texMathSymbol '\\hat{C}' contained conceal cchar=Ĉ + syn match texMathSymbol '\\hat{e}' contained conceal cchar=ê + syn match texMathSymbol '\\hat{E}' contained conceal cchar=Ê + syn match texMathSymbol '\\hat{g}' contained conceal cchar=ĝ + syn match texMathSymbol '\\hat{G}' contained conceal cchar=Ĝ + syn match texMathSymbol '\\hat{i}' contained conceal cchar=î + syn match texMathSymbol '\\hat{I}' contained conceal cchar=Î + syn match texMathSymbol '\\hat{o}' contained conceal cchar=ô + syn match texMathSymbol '\\hat{O}' contained conceal cchar=Ô + syn match texMathSymbol '\\hat{s}' contained conceal cchar=ŝ + syn match texMathSymbol '\\hat{S}' contained conceal cchar=Ŝ + syn match texMathSymbol '\\hat{u}' contained conceal cchar=û + syn match texMathSymbol '\\hat{U}' contained conceal cchar=Û + syn match texMathSymbol '\\hat{w}' contained conceal cchar=ŵ + syn match texMathSymbol '\\hat{W}' contained conceal cchar=Ŵ + syn match texMathSymbol '\\hat{y}' contained conceal cchar=ŷ + syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ + endif + + " Greek {{{2 + if s:tex_conceal =~ 'g' + fun! s:Greek(group,pat,cchar) + exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar + endfun + call s:Greek('texGreek','\\alpha\>' ,'α') + call s:Greek('texGreek','\\beta\>' ,'β') + call s:Greek('texGreek','\\gamma\>' ,'γ') + call s:Greek('texGreek','\\delta\>' ,'δ') + call s:Greek('texGreek','\\epsilon\>' ,'ϵ') + call s:Greek('texGreek','\\varepsilon\>' ,'ε') + call s:Greek('texGreek','\\zeta\>' ,'ζ') + call s:Greek('texGreek','\\eta\>' ,'η') + call s:Greek('texGreek','\\theta\>' ,'θ') + call s:Greek('texGreek','\\vartheta\>' ,'ϑ') + call s:Greek('texGreek','\\kappa\>' ,'κ') + call s:Greek('texGreek','\\lambda\>' ,'λ') + call s:Greek('texGreek','\\mu\>' ,'μ') + call s:Greek('texGreek','\\nu\>' ,'ν') + call s:Greek('texGreek','\\xi\>' ,'ξ') + call s:Greek('texGreek','\\pi\>' ,'π') + call s:Greek('texGreek','\\varpi\>' ,'ϖ') + call s:Greek('texGreek','\\rho\>' ,'ρ') + call s:Greek('texGreek','\\varrho\>' ,'ϱ') + call s:Greek('texGreek','\\sigma\>' ,'σ') + call s:Greek('texGreek','\\varsigma\>' ,'ς') + call s:Greek('texGreek','\\tau\>' ,'τ') + call s:Greek('texGreek','\\upsilon\>' ,'υ') + call s:Greek('texGreek','\\phi\>' ,'φ') + call s:Greek('texGreek','\\varphi\>' ,'ϕ') + call s:Greek('texGreek','\\chi\>' ,'χ') + call s:Greek('texGreek','\\psi\>' ,'ψ') + call s:Greek('texGreek','\\omega\>' ,'ω') + call s:Greek('texGreek','\\Gamma\>' ,'Γ') + call s:Greek('texGreek','\\Delta\>' ,'Δ') + call s:Greek('texGreek','\\Theta\>' ,'Θ') + call s:Greek('texGreek','\\Lambda\>' ,'Λ') + call s:Greek('texGreek','\\Xi\>' ,'Χ') + call s:Greek('texGreek','\\Pi\>' ,'Π') + call s:Greek('texGreek','\\Sigma\>' ,'Σ') + call s:Greek('texGreek','\\Upsilon\>' ,'Υ') + call s:Greek('texGreek','\\Phi\>' ,'Φ') + call s:Greek('texGreek','\\Psi\>' ,'Ψ') + call s:Greek('texGreek','\\Omega\>' ,'Ω') + delfun s:Greek + endif + + " Superscripts/Subscripts {{{2 + if s:tex_conceal =~ 's' + if s:tex_fast =~ 's' + syn region texSuperscript matchgroup=Delimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher + syn region texSubscript matchgroup=Delimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher + endif + fun! s:SuperSub(group,leader,pat,cchar) + exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar + exe 'syn match '.a:group."s '".a:pat."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s' + endfun + call s:SuperSub('texSuperscript','\^','0','⁰') + call s:SuperSub('texSuperscript','\^','1','¹') + call s:SuperSub('texSuperscript','\^','2','²') + call s:SuperSub('texSuperscript','\^','3','³') + call s:SuperSub('texSuperscript','\^','4','⁴') + call s:SuperSub('texSuperscript','\^','5','⁵') + call s:SuperSub('texSuperscript','\^','6','⁶') + call s:SuperSub('texSuperscript','\^','7','⁷') + call s:SuperSub('texSuperscript','\^','8','⁸') + call s:SuperSub('texSuperscript','\^','9','⁹') + call s:SuperSub('texSuperscript','\^','a','ᵃ') + call s:SuperSub('texSuperscript','\^','b','ᵇ') + call s:SuperSub('texSuperscript','\^','c','ᶜ') + call s:SuperSub('texSuperscript','\^','d','ᵈ') + call s:SuperSub('texSuperscript','\^','e','ᵉ') + call s:SuperSub('texSuperscript','\^','f','ᶠ') + call s:SuperSub('texSuperscript','\^','g','ᵍ') + call s:SuperSub('texSuperscript','\^','h','ʰ') + call s:SuperSub('texSuperscript','\^','i','ⁱ') + call s:SuperSub('texSuperscript','\^','j','ʲ') + call s:SuperSub('texSuperscript','\^','k','ᵏ') + call s:SuperSub('texSuperscript','\^','l','ˡ') + call s:SuperSub('texSuperscript','\^','m','ᵐ') + call s:SuperSub('texSuperscript','\^','n','ⁿ') + call s:SuperSub('texSuperscript','\^','o','ᵒ') + call s:SuperSub('texSuperscript','\^','p','ᵖ') + call s:SuperSub('texSuperscript','\^','r','ʳ') + call s:SuperSub('texSuperscript','\^','s','ˢ') + call s:SuperSub('texSuperscript','\^','t','ᵗ') + call s:SuperSub('texSuperscript','\^','u','ᵘ') + call s:SuperSub('texSuperscript','\^','v','ᵛ') + call s:SuperSub('texSuperscript','\^','w','ʷ') + call s:SuperSub('texSuperscript','\^','x','ˣ') + call s:SuperSub('texSuperscript','\^','y','ʸ') + call s:SuperSub('texSuperscript','\^','z','ᶻ') + call s:SuperSub('texSuperscript','\^','A','ᴬ') + call s:SuperSub('texSuperscript','\^','B','ᴮ') + call s:SuperSub('texSuperscript','\^','D','ᴰ') + call s:SuperSub('texSuperscript','\^','E','ᴱ') + call s:SuperSub('texSuperscript','\^','G','ᴳ') + call s:SuperSub('texSuperscript','\^','H','ᴴ') + call s:SuperSub('texSuperscript','\^','I','ᴵ') + call s:SuperSub('texSuperscript','\^','J','ᴶ') + call s:SuperSub('texSuperscript','\^','K','ᴷ') + call s:SuperSub('texSuperscript','\^','L','ᴸ') + call s:SuperSub('texSuperscript','\^','M','ᴹ') + call s:SuperSub('texSuperscript','\^','N','ᴺ') + call s:SuperSub('texSuperscript','\^','O','ᴼ') + call s:SuperSub('texSuperscript','\^','P','ᴾ') + call s:SuperSub('texSuperscript','\^','R','ᴿ') + call s:SuperSub('texSuperscript','\^','T','ᵀ') + call s:SuperSub('texSuperscript','\^','U','ᵁ') + call s:SuperSub('texSuperscript','\^','W','ᵂ') + call s:SuperSub('texSuperscript','\^',',','︐') + call s:SuperSub('texSuperscript','\^',':','︓') + call s:SuperSub('texSuperscript','\^',';','︔') + call s:SuperSub('texSuperscript','\^','+','⁺') + call s:SuperSub('texSuperscript','\^','-','⁻') + call s:SuperSub('texSuperscript','\^','<','˂') + call s:SuperSub('texSuperscript','\^','>','˃') + call s:SuperSub('texSuperscript','\^','/','ˊ') + call s:SuperSub('texSuperscript','\^','(','⁽') + call s:SuperSub('texSuperscript','\^',')','⁾') + call s:SuperSub('texSuperscript','\^','\.','˙') + call s:SuperSub('texSuperscript','\^','=','˭') + call s:SuperSub('texSubscript','_','0','₀') + call s:SuperSub('texSubscript','_','1','₁') + call s:SuperSub('texSubscript','_','2','₂') + call s:SuperSub('texSubscript','_','3','₃') + call s:SuperSub('texSubscript','_','4','₄') + call s:SuperSub('texSubscript','_','5','₅') + call s:SuperSub('texSubscript','_','6','₆') + call s:SuperSub('texSubscript','_','7','₇') + call s:SuperSub('texSubscript','_','8','₈') + call s:SuperSub('texSubscript','_','9','₉') + call s:SuperSub('texSubscript','_','a','ₐ') + call s:SuperSub('texSubscript','_','e','ₑ') + call s:SuperSub('texSubscript','_','i','ᵢ') + call s:SuperSub('texSubscript','_','o','ₒ') + call s:SuperSub('texSubscript','_','u','ᵤ') + call s:SuperSub('texSubscript','_',',','︐') + call s:SuperSub('texSubscript','_','+','₊') + call s:SuperSub('texSubscript','_','-','₋') + call s:SuperSub('texSubscript','_','/','ˏ') + call s:SuperSub('texSubscript','_','(','₍') + call s:SuperSub('texSubscript','_',')','₎') + call s:SuperSub('texSubscript','_','\.','‸') + call s:SuperSub('texSubscript','_','r','ᵣ') + call s:SuperSub('texSubscript','_','v','ᵥ') + call s:SuperSub('texSubscript','_','x','ₓ') + call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ') + call s:SuperSub('texSubscript','_','\\delta\>','ᵨ') + call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ') + call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ') + call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ') + delfun s:SuperSub + endif + + " Accented characters: {{{2 + if s:tex_conceal =~ 'a' + if b:tex_stylish + syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 + syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 + else + fun! s:Accents(chr,...) + let i= 1 + for accent in ["`","\\'","^",'"','\~','\.',"c","H","k","r","u","v"] + if i > a:0 + break + endif + if strlen(a:{i}) == 0 || a:{i} == ' ' || a:{i} == '?' + let i= i + 1 + continue + endif + if accent =~ '\a' + exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i} + else + exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i} + endif + let i= i + 1 + endfor + endfun + " \` \' \^ \" \~ \. \c \H \k \r \u \v + call s:Accents('a','à','á','â','ä','ã','ȧ',' ',' ','ą','å','ă','ă') + call s:Accents('A','À','Á','Â','Ä','Ã','Ȧ',' ',' ','Ą','Å','Ă','Ă') + call s:Accents('c',' ','ć','ĉ',' ',' ','ċ','ç',' ',' ',' ',' ','č') + call s:Accents('C',' ','Ć','Ĉ',' ',' ','Ċ','Ç',' ',' ',' ',' ','Č') + call s:Accents('d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ď') + call s:Accents('D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ď') + call s:Accents('e','è','é','ê','ë','ẽ','ė','ȩ',' ','ę',' ','ĕ','ě') + call s:Accents('E','È','É','Ê','Ë','Ẽ','Ė','Ȩ',' ','Ę',' ','Ĕ','Ě') + call s:Accents('g',' ','ǵ','ĝ',' ',' ','ġ','ģ',' ',' ',' ','ğ',' ') + call s:Accents('G',' ','Ǵ','Ĝ',' ',' ','Ġ','Ģ',' ',' ',' ','Ğ',' ') + call s:Accents('h',' ',' ','ĥ',' ',' ',' ',' ',' ',' ',' ',' ','ȟ') + call s:Accents('H',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ȟ') + call s:Accents('i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ','ĭ',' ') + call s:Accents('I','Ì','Í','Î','Ï','Ĩ','İ',' ',' ',' ',' ','Ĭ',' ') + call s:Accents('J',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ǰ') + call s:Accents('k',' ',' ',' ',' ',' ',' ','ķ',' ',' ',' ',' ',' ') + call s:Accents('K',' ',' ',' ',' ',' ',' ','Ķ',' ',' ',' ',' ',' ') + call s:Accents('l',' ','ĺ','ľ',' ',' ',' ','ļ',' ',' ',' ',' ','ľ') + call s:Accents('L',' ','Ĺ','Ľ',' ',' ',' ','Ļ',' ',' ',' ',' ','Ľ') + call s:Accents('n',' ','ń',' ',' ','ñ',' ','ņ',' ',' ',' ',' ','ň') + call s:Accents('N',' ','Ń',' ',' ','Ñ',' ','Ņ',' ',' ',' ',' ','Ň') + call s:Accents('o','ò','ó','ô','ö','õ','ȯ',' ','ő','ǫ',' ','ŏ',' ') + call s:Accents('O','Ò','Ó','Ô','Ö','Õ','Ȯ',' ','Ő','Ǫ',' ','Ŏ',' ') + call s:Accents('r',' ','ŕ',' ',' ',' ',' ','ŗ',' ',' ',' ',' ','ř') + call s:Accents('R',' ','Ŕ',' ',' ',' ',' ','Ŗ',' ',' ',' ',' ','Ř') + call s:Accents('s',' ','ś','ŝ',' ',' ',' ','ş',' ','ȿ',' ',' ','š') + call s:Accents('S',' ','Ś','Ŝ',' ',' ',' ','Ş',' ',' ',' ',' ','Š') + call s:Accents('t',' ',' ',' ',' ',' ',' ','ţ',' ',' ',' ',' ','ť') + call s:Accents('T',' ',' ',' ',' ',' ',' ','Ţ',' ',' ',' ',' ','Ť') + call s:Accents('u','ù','ú','û','ü','ũ',' ',' ','ű','ų','ů','ŭ','ǔ') + call s:Accents('U','Ù','Ú','Û','Ü','Ũ',' ',' ','Ű','Ų','Ů','Ŭ','Ǔ') + call s:Accents('w',' ',' ','ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ') + call s:Accents('W',' ',' ','Ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ') + call s:Accents('y','ỳ','ý','ŷ','ÿ','ỹ',' ',' ',' ',' ',' ',' ',' ') + call s:Accents('Y','Ỳ','Ý','Ŷ','Ÿ','Ỹ',' ',' ',' ',' ',' ',' ',' ') + call s:Accents('z',' ','ź',' ',' ',' ','ż',' ',' ',' ',' ',' ','ž') + call s:Accents('Z',' ','Ź',' ',' ',' ','Ż',' ',' ',' ',' ',' ','Ž') + call s:Accents('\\i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ','ĭ',' ') + " \` \' \^ \" \~ \. \c \H \k \r \u \v + delfun s:Accents + syn match texAccent '\\aa\>' conceal cchar=å + syn match texAccent '\\AA\>' conceal cchar=Å + syn match texAccent '\\o\>' conceal cchar=ø + syn match texAccent '\\O\>' conceal cchar=Ø + syn match texLigature '\\AE\>' conceal cchar=Æ + syn match texLigature '\\ae\>' conceal cchar=æ + syn match texLigature '\\oe\>' conceal cchar=œ + syn match texLigature '\\OE\>' conceal cchar=Œ + syn match texLigature '\\ss\>' conceal cchar=ß + endif + endif +endif + +" --------------------------------------------------------------------- +" LaTeX synchronization: {{{1 +syn sync maxlines=200 +syn sync minlines=50 + +syn sync match texSyncStop groupthere NONE "%stopzone\>" + +" Synchronization: {{{1 +" The $..$ and $$..$$ make for impossible sync patterns +" (one can't tell if a "$$" starts or stops a math zone by itself) +" The following grouptheres coupled with minlines above +" help improve the odds of good syncing. +if !exists("tex_no_math") + syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}" + syn sync match texSyncMathZoneA groupthere NONE "\\end{center}" + syn sync match texSyncMathZoneA groupthere NONE "\\end{description}" + syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}" + syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}" + syn sync match texSyncMathZoneA groupthere NONE "\\end{table}" + syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}" + syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>" +endif + +" --------------------------------------------------------------------- +" Highlighting: {{{1 +if did_tex_syntax_inits == 1 + let did_tex_syntax_inits= 2 + " TeX highlighting groups which should share similar highlighting + if !exists("s:tex_no_error") + if !exists("g:tex_no_math") + HiLink texBadMath texError + HiLink texMathDelimBad texError + HiLink texMathError texError + if !b:tex_stylish + HiLink texOnlyMath texError + endif + endif + HiLink texError Error + endif + + hi texBoldStyle gui=bold cterm=bold + hi texItalStyle gui=italic cterm=italic + hi texBoldItalStyle gui=bold,italic cterm=bold,italic + hi texItalBoldStyle gui=bold,italic cterm=bold,italic + HiLink texCite texRefZone + HiLink texDefCmd texDef + HiLink texDefName texDef + HiLink texDocType texCmdName + HiLink texDocTypeArgs texCmdArgs + HiLink texInputFileOpt texCmdArgs + HiLink texInputCurlies texDelimiter + HiLink texLigature texSpecialChar + if !exists("tex_no_math") + HiLink texMathDelimSet1 texMathDelim + HiLink texMathDelimSet2 texMathDelim + HiLink texMathDelimKey texMathDelim + HiLink texMathMatcher texMath + HiLink texAccent texStatement + HiLink texGreek texStatement + HiLink texSuperscript texStatement + HiLink texSubscript texStatement + HiLink texSuperscripts texSuperscript + HiLink texSubscripts texSubscript + HiLink texMathSymbol texStatement + HiLink texMathZoneV texMath + HiLink texMathZoneW texMath + HiLink texMathZoneX texMath + HiLink texMathZoneY texMath + HiLink texMathZoneV texMath + HiLink texMathZoneZ texMath + endif + HiLink texBeginEnd texCmdName + HiLink texBeginEndName texSection + HiLink texSpaceCode texStatement + HiLink texStyleStatement texStatement + HiLink texTypeSize texType + HiLink texTypeStyle texType + + " Basic TeX highlighting groups + HiLink texCmdArgs Number + HiLink texCmdName Statement + HiLink texComment Comment + HiLink texDef Statement + HiLink texDefParm Special + HiLink texDelimiter Delimiter + HiLink texInput Special + HiLink texInputFile Special + HiLink texLength Number + HiLink texMath Special + HiLink texMathDelim Statement + HiLink texMathOper Operator + HiLink texNewCmd Statement + HiLink texNewEnv Statement + HiLink texOption Number + HiLink texRefZone Special + HiLink texSection PreCondit + HiLink texSpaceCodeChar Special + HiLink texSpecialChar SpecialChar + HiLink texStatement Statement + HiLink texString String + HiLink texTodo Todo + HiLink texType Type + HiLink texZone PreCondit + + delcommand HiLink +endif + +" Cleanup: {{{1 +unlet s:extfname +let b:current_syntax = "tex" +let &cpo = s:keepcpo +unlet s:keepcpo +" vim: ts=8 fdm=marker diff --git a/share/vim/vim73/syntax/texinfo.vim b/share/vim/vim74/syntax/texinfo.vim similarity index 100% rename from share/vim/vim73/syntax/texinfo.vim rename to share/vim/vim74/syntax/texinfo.vim diff --git a/share/vim/vim73/syntax/texmf.vim b/share/vim/vim74/syntax/texmf.vim similarity index 100% rename from share/vim/vim73/syntax/texmf.vim rename to share/vim/vim74/syntax/texmf.vim diff --git a/share/vim/vim73/syntax/tf.vim b/share/vim/vim74/syntax/tf.vim similarity index 100% rename from share/vim/vim73/syntax/tf.vim rename to share/vim/vim74/syntax/tf.vim diff --git a/share/vim/vim74/syntax/tidy.vim b/share/vim/vim74/syntax/tidy.vim new file mode 100644 index 00000000..c24796ed --- /dev/null +++ b/share/vim/vim74/syntax/tidy.vim @@ -0,0 +1,145 @@ +" Vim syntax file +" Language: HMTL Tidy configuration file (/etc/tidyrc ~/.tidyrc) +" Maintainer: Doug Kearns +" Last Change: 2013 June 01 + +if exists("b:current_syntax") + finish +endif + +setlocal iskeyword=@,48-57,- + +syn match tidyComment "^\s*//.*$" contains=tidyTodo +syn match tidyComment "^\s*#.*$" contains=tidyTodo +syn keyword tidyTodo TODO NOTE FIXME XXX contained + +syn match tidyAssignment "^[a-z0-9-]\+:\s*.*$" contains=tidyOption,@tidyValue,tidyDelimiter +syn match tidyDelimiter ":" contained + +syn match tidyNewTagAssignment "^new-\l\+-tags:\s*.*$" contains=tidyNewTagOption,tidyNewTagDelimiter,tidyNewTagValue,tidyDelimiter +syn match tidyNewTagDelimiter "," contained +syn match tidyNewTagValue "\<\w\+\>" contained + +syn case ignore +syn keyword tidyBoolean t[rue] f[alse] y[es] n[o] contained +syn case match +syn match tidyDoctype "\<\%(omit\|auto\|strict\|loose\|transitional\|user\)\>" contained +" NOTE: use match rather than keyword here so that tidyEncoding 'raw' does not +" always have precedence over tidyOption 'raw' +syn match tidyEncoding "\<\%(ascii\|latin0\|latin1\|raw\|utf8\|iso2022\|mac\|utf16le\|utf16be\|utf16\|win1252\|ibm858\|big5\|shiftjis\)\>" contained +syn match tidyNewline "\<\%(LF\|CRLF\|CR\)\>" +syn match tidyNumber "\<\d\+\>" contained +syn match tidyRepeat "\<\%(keep-first\|keep-last\)\>" contained +syn region tidyString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained oneline +syn region tidyString start=+'+ skip=+\\\\\|\\'+ end=+'+ contained oneline +syn cluster tidyValue contains=tidyBoolean,tidyDoctype,tidyEncoding,tidyNewline,tidyNumber,tidyRepeat,tidyString + +syn match tidyOption "^accessibility-check" contained +syn match tidyOption "^add-xml-decl" contained +syn match tidyOption "^add-xml-pi" contained +syn match tidyOption "^add-xml-space" contained +syn match tidyOption "^alt-text" contained +syn match tidyOption "^anchor-as-name" contained +syn match tidyOption "^ascii-chars" contained +syn match tidyOption "^assume-xml-procins" contained +syn match tidyOption "^bare" contained +syn match tidyOption "^break-before-br" contained +syn match tidyOption "^char-encoding" contained +syn match tidyOption "^clean" contained +syn match tidyOption "^css-prefix" contained +syn match tidyOption "^decorate-inferred-ul" contained +syn match tidyOption "^doctype" contained +syn match tidyOption "^doctype-mode" contained +syn match tidyOption "^drop-empty-paras" contained +syn match tidyOption "^drop-font-tags" contained +syn match tidyOption "^drop-proprietary-attributes" contained +syn match tidyOption "^enclose-block-text" contained +syn match tidyOption "^enclose-text" contained +syn match tidyOption "^error-file" contained +syn match tidyOption "^escape-cdata" contained +syn match tidyOption "^fix-backslash" contained +syn match tidyOption "^fix-bad-comments" contained +syn match tidyOption "^fix-uri" contained +syn match tidyOption "^force-output" contained +syn match tidyOption "^gnu-emacs" contained +syn match tidyOption "^gnu-emacs-file" contained +syn match tidyOption "^hide-comments" contained +syn match tidyOption "^hide-endtags" contained +syn match tidyOption "^indent" contained +syn match tidyOption "^indent-attributes" contained +syn match tidyOption "^indent-cdata" contained +syn match tidyOption "^indent-spaces" contained +syn match tidyOption "^input-encoding" contained +syn match tidyOption "^input-xml" contained +syn match tidyOption "^join-classes" contained +syn match tidyOption "^join-styles" contained +syn match tidyOption "^keep-time" contained +syn match tidyOption "^language" contained +syn match tidyOption "^literal-attributes" contained +syn match tidyOption "^logical-emphasis" contained +syn match tidyOption "^lower-literals" contained +syn match tidyOption "^markup" contained +syn match tidyOption "^merge-divs" contained +syn match tidyOption "^merge-spans" contained +syn match tidyOption "^ncr" contained +syn match tidyOption "^newline" contained +syn match tidyOption "^numeric-entities" contained +syn match tidyOption "^output-bom" contained +syn match tidyOption "^output-encoding" contained +syn match tidyOption "^output-file" contained +syn match tidyOption "^output-html" contained +syn match tidyOption "^output-xhtml" contained +syn match tidyOption "^output-xml" contained +syn match tidyOption "^preserve-entities" contained +syn match tidyOption "^punctuation-wrap" contained +syn match tidyOption "^quiet" contained +syn match tidyOption "^quote-ampersand" contained +syn match tidyOption "^quote-marks" contained +syn match tidyOption "^quote-nbsp" contained +syn match tidyOption "^raw" contained +syn match tidyOption "^repeated-attributes" contained +syn match tidyOption "^replace-color" contained +syn match tidyOption "^show-body-only" contained +syn match tidyOption "^show-errors" contained +syn match tidyOption "^show-warnings" contained +syn match tidyOption "^slide-style" contained +syn match tidyOption "^sort-attributes" contained +syn match tidyOption "^split" contained +syn match tidyOption "^tab-size" contained +syn match tidyOption "^tidy-mark" contained +syn match tidyOption "^uppercase-attributes" contained +syn match tidyOption "^uppercase-tags" contained +syn match tidyOption "^word-2000" contained +syn match tidyOption "^wrap" contained +syn match tidyOption "^wrap-asp" contained +syn match tidyOption "^wrap-attributes" contained +syn match tidyOption "^wrap-jste" contained +syn match tidyOption "^wrap-php" contained +syn match tidyOption "^wrap-script-literals" contained +syn match tidyOption "^wrap-sections" contained +syn match tidyOption "^write-back" contained +syn match tidyOption "^vertical-space" contained + +syn match tidyNewTagOption "^new-blocklevel-tags" contained +syn match tidyNewTagOption "^new-empty-tags" contained +syn match tidyNewTagOption "^new-inline-tags" contained +syn match tidyNewTagOption "^new-pre-tags" contained + +hi def link tidyBoolean Boolean +hi def link tidyComment Comment +hi def link tidyDelimiter Special +hi def link tidyDoctype Constant +hi def link tidyEncoding Constant +hi def link tidyNewline Constant +hi def link tidyNewTagDelimiter Special +hi def link tidyNewTagOption Identifier +hi def link tidyNewTagValue Constant +hi def link tidyNumber Number +hi def link tidyOption Identifier +hi def link tidyRepeat Constant +hi def link tidyString String +hi def link tidyTodo Todo + +let b:current_syntax = "tidy" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/tilde.vim b/share/vim/vim74/syntax/tilde.vim similarity index 100% rename from share/vim/vim73/syntax/tilde.vim rename to share/vim/vim74/syntax/tilde.vim diff --git a/share/vim/vim73/syntax/tli.vim b/share/vim/vim74/syntax/tli.vim similarity index 100% rename from share/vim/vim73/syntax/tli.vim rename to share/vim/vim74/syntax/tli.vim diff --git a/share/vim/vim73/syntax/tpp.vim b/share/vim/vim74/syntax/tpp.vim similarity index 100% rename from share/vim/vim73/syntax/tpp.vim rename to share/vim/vim74/syntax/tpp.vim diff --git a/share/vim/vim73/syntax/trasys.vim b/share/vim/vim74/syntax/trasys.vim similarity index 100% rename from share/vim/vim73/syntax/trasys.vim rename to share/vim/vim74/syntax/trasys.vim diff --git a/share/vim/vim74/syntax/treetop.vim b/share/vim/vim74/syntax/treetop.vim new file mode 100644 index 00000000..921c5bea --- /dev/null +++ b/share/vim/vim74/syntax/treetop.vim @@ -0,0 +1,110 @@ +" Vim syntax file +" Language: Treetop +" Maintainer: Nikolai Weibull +" Latest Revision: 2011-03-14 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn keyword treetopTodo + \ contained + \ TODO + \ FIXME + \ XXX + \ NOTE + +syn match treetopComment + \ '#.*' + \ display + \ contains=treetopTodo + +syn include @treetopRuby syntax/ruby.vim +unlet b:current_syntax + +syn keyword treetopKeyword + \ require + \ end +syn region treetopKeyword + \ matchgroup=treetopKeyword + \ start='\<\%(grammar\|include\|module\)\>\ze\s' + \ end='$' + \ transparent + \ oneline + \ keepend + \ contains=@treetopRuby +syn keyword treetopKeyword + \ rule + \ nextgroup=treetopRuleName + \ skipwhite skipnl + +syn match treetopGrammarName + \ '\u\w*' + \ contained + +syn match treetopRubyModuleName + \ '\u\w*' + \ contained + +syn match treetopRuleName + \ '\h\w*' + \ contained + +syn region treetopString + \ matchgroup=treetopStringDelimiter + \ start=+"+ + \ end=+"+ +syn region treetopString + \ matchgroup=treetopStringDelimiter + \ start=+'+ + \ end=+'+ + +syn region treetopCharacterClass + \ matchgroup=treetopCharacterClassDelimiter + \ start=+\[+ + \ skip=+\\\]+ + \ end=+\]+ + +syn region treetopRubyBlock + \ matchgroup=treetopRubyBlockDelimiter + \ start=+{+ + \ end=+}+ + \ contains=@treetopRuby + +syn region treetopSemanticPredicate + \ matchgroup=treetopSemanticPredicateDelimiter + \ start=+[!&]{+ + \ end=+}+ + \ contains=@treetopRuby + +syn region treetopSubclassDeclaration + \ matchgroup=treetopSubclassDeclarationDelimiter + \ start=+<+ + \ end=+>+ + \ contains=@treetopRuby + +syn match treetopEllipsis + \ +''+ + +hi def link treetopTodo Todo +hi def link treetopComment Comment +hi def link treetopKeyword Keyword +hi def link treetopGrammarName Constant +hi def link treetopRubyModuleName Constant +hi def link treetopRuleName Identifier +hi def link treetopString String +hi def link treetopStringDelimiter treetopString +hi def link treetopCharacterClass treetopString +hi def link treetopCharacterClassDelimiter treetopCharacterClass +hi def link treetopRubyBlockDelimiter PreProc +hi def link treetopSemanticPredicateDelimiter PreProc +hi def link treetopSubclassDeclarationDelimiter PreProc +hi def link treetopEllipsis Special + +let b:current_syntax = 'treetop' + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/share/vim/vim73/syntax/trustees.vim b/share/vim/vim74/syntax/trustees.vim similarity index 100% rename from share/vim/vim73/syntax/trustees.vim rename to share/vim/vim74/syntax/trustees.vim diff --git a/share/vim/vim74/syntax/tsalt.vim b/share/vim/vim74/syntax/tsalt.vim new file mode 100644 index 00000000..887d6b75 --- /dev/null +++ b/share/vim/vim74/syntax/tsalt.vim @@ -0,0 +1,219 @@ +" Vim syntax file +" Language: Telix (Modem Comm Program) SALT Script +" Maintainer: Sean M. McKee +" Last Change: 2012 Feb 03 by Thilo Six +" Version Info: @(#)tsalt.vim 1.5 97/12/16 08:11:15 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" turn case matching off +syn case ignore + +"FUNCTIONS +" Character Handling Functions +syn keyword tsaltFunction IsAscii IsAlNum IsAlpha IsCntrl IsDigit +syn keyword tsaltFunction IsLower IsUpper ToLower ToUpper + +" Connect Device Operations +syn keyword tsaltFunction Carrier cInp_Cnt cGetC cGetCT cPutC cPutN +syn keyword tsaltFunction cPutS cPutS_TR FlushBuf Get_Baud +syn keyword tsaltFunction Get_DataB Get_Port Get_StopB Hangup +syn keyword tsaltFunction KillConnectDevice MakeConnectDevice +syn keyword tsaltFunction Send_Brk Set_ConnectDevice Set_Port + +" File Input/Output Operations +syn keyword tsaltFunction fClearErr fClose fDelete fError fEOF fFlush +syn keyword tsaltFunction fGetC fGetS FileAttr FileFind FileSize +syn keyword tsaltFunction FileTime fnStrip fOpen fPutC fPutS fRead +syn keyword tsaltFunction fRename fSeek fTell fWrite + +" File Transfers and Logs +syn keyword tsaltFunction Capture Capture_Stat Printer Receive Send +syn keyword tsaltFunction Set_DefProt UsageLog Usage_Stat UStamp + +" Input String Matching +syn keyword tsaltFunction Track Track_AddChr Track_Free Track_Hit +syn keyword tsaltFunction WaitFor + +" Keyboard Operations +syn keyword tsaltFunction InKey InKeyW KeyGet KeyLoad KeySave KeySet + +" Miscellaneous Functions +syn keyword tsaltFunction ChatMode Dos Dial DosFunction ExitTelix +syn keyword tsaltFunction GetEnv GetFon HelpScreen LoadFon NewDir +syn keyword tsaltFunction Randon Redial RedirectDOS Run +syn keyword tsaltFunction Set_Terminal Show_Directory TelixVersion +syn keyword tsaltFunction Terminal TransTab Update_Term + +" Script Management +syn keyword tsaltFunction ArgCount Call CallD CompileScript GetRunPath +syn keyword tsaltFunction Is_Loaded Load_Scr ScriptVersion +syn keyword tsaltFunction TelixForWindows Unload_Scr + +" Sound Functions +syn keyword tsaltFunction Alarm PlayWave Tone + +" String Handling +syn keyword tsaltFunction CopyChrs CopyStr DelChrs GetS GetSXY +syn keyword tsaltFunction InputBox InsChrs ItoS SetChr StoI StrCat +syn keyword tsaltFunction StrChr StrCompI StrLen StrLower StrMaxLen +syn keyword tsaltFunction StrPos StrPosI StrUpper SubChr SubChrs +syn keyword tsaltFunction SubStr + +" Time, Date, and Timer Operations +syn keyword tsaltFunction CurTime Date Delay Delay_Scr Get_OnlineTime +syn keyword tsaltFunction tDay tHour tMin tMonth tSec tYear Time +syn keyword tsaltFunction Time_Up Timer_Free Time_Restart +syn keyword tsaltFunction Time_Start Time_Total + +" Video Operations +syn keyword tsaltFunction Box CNewLine Cursor_OnOff Clear_Scr +syn keyword tsaltFunction GetTermHeight GetTermWidth GetX GetY +syn keyword tsaltFunction GotoXY MsgBox NewLine PrintC PrintC_Trm +syn keyword tsaltFunction PrintN PrintN_Trm PrintS PrintS_Trm +syn keyword tsaltFunction PrintSC PRintSC_Trm +syn keyword tsaltFunction PStrA PStrAXY Scroll Status_Wind vGetChr +syn keyword tsaltFunction vGetChrs vGetChrsA vPutChr vPutChrs +syn keyword tsaltFunction vPutChrsA vRstrArea vSaveArea + +" Dynamic Data Exchange (DDE) Operations +syn keyword tsaltFunction DDEExecute DDEInitate DDEPoke DDERequest +syn keyword tsaltFunction DDETerminate DDETerminateAll +"END FUNCTIONS + +"PREDEFINED VARAIABLES +syn keyword tsaltSysVar _add_lf _alarm_on _answerback_str _asc_rcrtrans +syn keyword tsaltSysVar _asc_remabort _asc_rlftrans _asc_scpacing +syn keyword tsaltSysVar _asc_scrtrans _asc_secho _asc_slpacing +syn keyword tsaltSysVar _asc_spacechr _asc_striph _back_color +syn keyword tsaltSysVar _capture_fname _connect_str _dest_bs +syn keyword tsaltSysVar _dial_pause _dial_time _dial_post +syn keyword tsaltSysVar _dial_pref1 _dial_pref2 _dial_pref3 +syn keyword tsaltSysVar _dial_pref4 _dir_prog _down_dir +syn keyword tsaltSysVar _entry_bbstype _entry_comment _entry_enum +syn keyword tsaltSysVar _entry_name _entry_num _entry_logonname +syn keyword tsaltSysVar _entry_pass _fore_color _image_file +syn keyword tsaltSysVar _local_echo _mdm_hang_str _mdm_init_str +syn keyword tsaltSysVar _no_connect1 _no_connect2 _no_connect3 +syn keyword tsaltSysVar _no_connect4 _no_connect5 _redial_stop +syn keyword tsaltSysVar _scr_chk_key _script_dir _sound_on +syn keyword tsaltSysVar _strip_high _swap_bs _telix_dir _up_dir +syn keyword tsaltSysVar _usage_fname _zmodauto _zmod_rcrash +syn keyword tsaltSysVar _zmod_scrash +"END PREDEFINED VARAIABLES + +"TYPE +syn keyword tsaltType str int +"END TYPE + +"KEYWORDS +syn keyword tsaltStatement goto break return continue +syn keyword tsaltConditional if then else +syn keyword tsaltRepeat while for do +"END KEYWORDS + +syn keyword tsaltTodo contained TODO + +" the rest is pretty close to C ----------------------------------------- + +" String and Character constants +" Highlight special characters (those which have a backslash) differently +syn match tsaltSpecial contained "\^\d\d\d\|\^." +syn region tsaltString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tsaltSpecial +syn match tsaltCharacter "'[^\\]'" +syn match tsaltSpecialCharacter "'\\.'" + +"catch errors caused by wrong parenthesis +syn region tsaltParen transparent start='(' end=')' contains=ALLBUT,tsaltParenError,tsaltIncluded,tsaltSpecial,tsaltTodo +syn match tsaltParenError ")" +syn match tsaltInParen contained "[{}]" + +hi link tsaltParenError tsaltError +hi link tsaltInParen tsaltError + +"integer number, or floating point number without a dot and with "f". +syn match tsaltNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" +"floating point number, with dot, optional exponent +syn match tsaltFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" +"floating point number, starting with a dot, optional exponent +syn match tsaltFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +"floating point number, without dot, with exponent +syn match tsaltFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" +"hex number +syn match tsaltNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>" +"syn match cIdentifier "\<[a-z_][a-z0-9_]*\>" + +syn region tsaltComment start="/\*" end="\*/" contains=cTodo +syn match tsaltComment "//.*" contains=cTodo +syn match tsaltCommentError "\*/" + +syn region tsaltPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tsaltComment,tsaltString,tsaltCharacter,tsaltNumber,tsaltCommentError +syn region tsaltIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn match tsaltIncluded contained "<[^>]*>" +syn match tsaltInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=tsaltIncluded +"syn match TelixSalyLineSkip "\\$" +syn region tsaltDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tsaltPreCondit,tsaltIncluded,tsaltInclude,tsaltDefine,tsaltInParen +syn region tsaltPreProc start="^[ \t]*#[ \t]*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tsaltPreCondit,tsaltIncluded,tsaltInclude,tsaltDefine,tsaltInParen + +" Highlight User Labels +syn region tsaltMulti transparent start='?' end=':' contains=ALLBUT,tsaltIncluded,tsaltSpecial,tsaltTodo + +syn sync ccomment tsaltComment + + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_tsalt_syntax_inits") + if version < 508 + let did_tsalt_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink tsaltFunction Statement + HiLink tsaltSysVar Type + "HiLink tsaltLibFunc UserDefFunc + "HiLink tsaltConstants Type + "HiLink tsaltFuncArg Type + "HiLink tsaltOperator Operator + "HiLink tsaltLabel Label + "HiLink tsaltUserLabel Label + HiLink tsaltConditional Conditional + HiLink tsaltRepeat Repeat + HiLink tsaltCharacter SpecialChar + HiLink tsaltSpecialCharacter SpecialChar + HiLink tsaltNumber Number + HiLink tsaltFloat Float + HiLink tsaltCommentError tsaltError + HiLink tsaltInclude Include + HiLink tsaltPreProc PreProc + HiLink tsaltDefine Macro + HiLink tsaltIncluded tsaltString + HiLink tsaltError Error + HiLink tsaltStatement Statement + HiLink tsaltPreCondit PreCondit + HiLink tsaltType Type + HiLink tsaltString String + HiLink tsaltComment Comment + HiLink tsaltSpecial Special + HiLink tsaltTodo Todo + + delcommand HiLink +endif + +let b:current_syntax = "tsalt" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: ts=8 diff --git a/share/vim/vim73/syntax/tsscl.vim b/share/vim/vim74/syntax/tsscl.vim similarity index 100% rename from share/vim/vim73/syntax/tsscl.vim rename to share/vim/vim74/syntax/tsscl.vim diff --git a/share/vim/vim73/syntax/tssgm.vim b/share/vim/vim74/syntax/tssgm.vim similarity index 100% rename from share/vim/vim73/syntax/tssgm.vim rename to share/vim/vim74/syntax/tssgm.vim diff --git a/share/vim/vim73/syntax/tssop.vim b/share/vim/vim74/syntax/tssop.vim similarity index 100% rename from share/vim/vim73/syntax/tssop.vim rename to share/vim/vim74/syntax/tssop.vim diff --git a/share/vim/vim74/syntax/tt2.vim b/share/vim/vim74/syntax/tt2.vim new file mode 100644 index 00000000..5321e277 --- /dev/null +++ b/share/vim/vim74/syntax/tt2.vim @@ -0,0 +1,210 @@ +" Language: TT2 (Perl Template Toolkit) +" Maintainer: vim-perl +" Author: Moriki, Atsushi <4woods+vim@gmail.com> +" Homepage: http://github.com/vim-perl/vim-perl +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change: 2013-07-21 +" +" Instration: +" put tt2.vim and tt2html.vim in to your syntax diretory. +" +" add below in your filetype.vim. +" au BufNewFile,BufRead *.tt2 setf tt2 +" or +" au BufNewFile,BufRead *.tt2 +" \ if ( getline(1) . getline(2) . getline(3) =~ '<\chtml' | +" \ && getline(1) . getline(2) . getline(3) !~ '<[%?]' ) | +" \ || getline(1) =~ '' +" "PHP" +" :let b:tt2_syn_tags = '' +" "TT2 and HTML" +" :let b:tt2_syn_tags = '\[% %] ' +" +" Changes: +" 0.1.3 +" Changed fileformat from 'dos' to 'unix' +" Deleted 'echo' that print obstructive message +" 0.1.2 +" Added block comment syntax +" e.g. [%# COMMENT +" COMMENT TOO %] +" [%# IT'S SAFE %] HERE IS OUTSIDE OF TT2 DIRECTIVE +" [% # WRONG!! %] HERE STILL BE COMMENT +" 0.1.1 +" Release +" 0.1.0 +" Internal +" +" License: follow Vim :help uganda +" + +if !exists("b:tt2_syn_tags") + let b:tt2_syn_tags = '\[% %]' + "let b:tt2_syn_tags = '\[% %] \[\* \*]' +endif + +if !exists("b:tt2_syn_inc_perl") + let b:tt2_syn_inc_perl = 1 +endif + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn case match + +syn cluster tt2_top_cluster contains=tt2_perlcode,tt2_tag_region + +" TT2 TAG Region +if exists("b:tt2_syn_tags") + + let s:str = b:tt2_syn_tags . ' ' + let s:str = substitute(s:str,'^ \+','','g') + let s:str = substitute(s:str,' \+',' ','g') + + while stridx(s:str,' ') > 0 + + let s:st = strpart(s:str,0,stridx(s:str,' ')) + let s:str = substitute(s:str,'[^ ]* ','',"") + + let s:ed = strpart(s:str,0,stridx(s:str,' ')) + let s:str = substitute(s:str,'[^ ]* ','',"") + + exec 'syn region tt2_tag_region '. + \ 'matchgroup=tt2_tag '. + \ 'start=+\(' . s:st .'\)[-]\=+ '. + \ 'end=+[-]\=\(' . s:ed . '\)+ '. + \ 'contains=@tt2_statement_cluster keepend extend' + + exec 'syn region tt2_commentblock_region '. + \ 'matchgroup=tt2_tag '. + \ 'start=+\(' . s:st .'\)[-]\=\(#\)\@=+ '. + \ 'end=+[-]\=\(' . s:ed . '\)+ '. + \ 'keepend extend' + + "Include Perl syntax when 'PERL' 'RAWPERL' block + if b:tt2_syn_inc_perl + syn include @Perl $VIMRUNTIME/syntax/perl.vim + exec 'syn region tt2_perlcode '. + \ 'start=+\(\(RAW\)\=PERL\s*[-]\=' . s:ed . '\(\n\)\=\)\@<=+ ' . + \ 'end=+' . s:st . '[-]\=\s*END+me=s-1 contains=@Perl keepend' + endif + + "echo 'TAGS ' . s:st . ' ' . s:ed + unlet s:st + unlet s:ed + endwhile + +else + + syn region tt2_tag_region + \ matchgroup=tt2_tag + \ start=+\(\[%\)[-]\=+ + \ end=+[-]\=%\]+ + \ contains=@tt2_statement_cluster keepend extend + + syn region tt2_commentblock_region + \ matchgroup=tt2_tag + \ start=+\(\[%\)[-]\=#+ + \ end=+[-]\=%\]+ + \ keepend extend + + "Include Perl syntax when 'PERL' 'RAWPERL' block + if b:tt2_syn_inc_perl + syn include @Perl $VIMRUNTIME/syntax/perl.vim + syn region tt2_perlcode + \ start=+\(\(RAW\)\=PERL\s*[-]\=%]\(\n\)\=\)\@<=+ + \ end=+\[%[-]\=\s*END+me=s-1 + \ contains=@Perl keepend + endif +endif + +" Directive +syn keyword tt2_directive contained + \ GET CALL SET DEFAULT DEBUG + \ LAST NEXT BREAK STOP BLOCK + \ IF IN UNLESS ELSIF FOR FOREACH WHILE SWITCH CASE + \ USE PLUGIN MACRO META + \ TRY FINAL RETURN LAST + \ CLEAR TO STEP AND OR NOT MOD DIV + \ ELSE PERL RAWPERL END +syn match tt2_directive +|+ contained +syn keyword tt2_directive contained nextgroup=tt2_string_q,tt2_string_qq,tt2_blockname skipwhite skipempty + \ INSERT INCLUDE PROCESS WRAPPER FILTER + \ THROW CATCH +syn keyword tt2_directive contained nextgroup=tt2_def_tag skipwhite skipempty + \ TAGS + +syn match tt2_def_tag "\S\+\s\+\S\+\|\<\w\+\>" contained + +syn match tt2_variable +\I\w*+ contained +syn match tt2_operator "[+*/%:?-]" contained +syn match tt2_operator "\<\(mod\|div\|or\|and\|not\)\>" contained +syn match tt2_operator "[!=<>]=\=\|&&\|||" contained +syn match tt2_operator "\(\s\)\@<=_\(\s\)\@=" contained +syn match tt2_operator "=>\|," contained +syn match tt2_deref "\([[:alnum:]_)\]}]\s*\)\@<=\." contained +syn match tt2_comment +#.*$+ contained extend +syn match tt2_func +\<\I\w*\(\s*(\)\@=+ contained nextgroup=tt2_bracket_r skipempty skipwhite +" +syn region tt2_bracket_r start=+(+ end=+)+ contained contains=@tt2_statement_cluster keepend extend +syn region tt2_bracket_b start=+\[+ end=+]+ contained contains=@tt2_statement_cluster keepend extend +syn region tt2_bracket_b start=+{+ end=+}+ contained contains=@tt2_statement_cluster keepend extend + +syn region tt2_string_qq start=+"+ end=+"+ skip=+\\"+ contained contains=tt2_ivariable keepend extend +syn region tt2_string_q start=+'+ end=+'+ skip=+\\'+ contained keepend extend + +syn match tt2_ivariable +\$\I\w*\>\(\.\I\w*\>\)*+ contained +syn match tt2_ivariable +\${\I\w*\>\(\.\I\w*\>\)*}+ contained + +syn match tt2_number "\d\+" contained +syn match tt2_number "\d\+\.\d\+" contained +syn match tt2_number "0x\x\+" contained +syn match tt2_number "0\o\+" contained + +syn match tt2_blockname "\f\+" contained nextgroup=tt2_blockname_joint skipwhite skipempty +syn match tt2_blockname "$\w\+" contained contains=tt2_ivariable nextgroup=tt2_blockname_joint skipwhite skipempty +syn region tt2_blockname start=+"+ end=+"+ skip=+\\"+ contained contains=tt2_ivariable nextgroup=tt2_blockname_joint keepend skipwhite skipempty +syn region tt2_blockname start=+'+ end=+'+ skip=+\\'+ contained nextgroup=tt2_blockname_joint keepend skipwhite skipempty +syn match tt2_blockname_joint "+" contained nextgroup=tt2_blockname skipwhite skipempty + +syn cluster tt2_statement_cluster contains=tt2_directive,tt2_variable,tt2_operator,tt2_string_q,tt2_string_qq,tt2_deref,tt2_comment,tt2_func,tt2_bracket_b,tt2_bracket_r,tt2_number + +" Synchronizing +syn sync minlines=50 + +hi def link tt2_tag Type +hi def link tt2_tag_region Type +hi def link tt2_commentblock_region Comment +hi def link tt2_directive Statement +hi def link tt2_variable Identifier +hi def link tt2_ivariable Identifier +hi def link tt2_operator Statement +hi def link tt2_string_qq String +hi def link tt2_string_q String +hi def link tt2_blockname String +hi def link tt2_comment Comment +hi def link tt2_func Function +hi def link tt2_number Number + +if exists("b:tt2_syn_tags") + unlet b:tt2_syn_tags +endif + +let b:current_syntax = "tt2" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:ts=4:sw=4 diff --git a/share/vim/vim74/syntax/tt2html.vim b/share/vim/vim74/syntax/tt2html.vim new file mode 100644 index 00000000..ac5744f3 --- /dev/null +++ b/share/vim/vim74/syntax/tt2html.vim @@ -0,0 +1,20 @@ +" Language: TT2 embedded with HTML +" Maintainer: vim-perl +" Author: Moriki, Atsushi <4woods+vim@gmail.com> +" Homepage: http://github.com/vim-perl/vim-perl +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change: 2013-07-21 + +if exists("b:current_syntax") + finish +endif + +runtime! syntax/html.vim +unlet b:current_syntax + +runtime! syntax/tt2.vim +unlet b:current_syntax + +syn cluster htmlPreProc add=@tt2_top_cluster + +let b:current_syntax = "tt2html" diff --git a/share/vim/vim74/syntax/tt2js.vim b/share/vim/vim74/syntax/tt2js.vim new file mode 100644 index 00000000..350df57d --- /dev/null +++ b/share/vim/vim74/syntax/tt2js.vim @@ -0,0 +1,20 @@ +" Language: TT2 embedded with Javascript +" Maintainer: Andy Lester +" Author: Yates, Peter +" Homepage: http://github.com/vim-perl/vim-perl +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change: 2013-07-21 + +if exists("b:current_syntax") + finish +endif + +runtime! syntax/javascript.vim +unlet b:current_syntax + +runtime! syntax/tt2.vim +unlet b:current_syntax + +syn cluster javascriptPreProc add=@tt2_top_cluster + +let b:current_syntax = "tt2js" diff --git a/share/vim/vim73/syntax/uc.vim b/share/vim/vim74/syntax/uc.vim similarity index 100% rename from share/vim/vim73/syntax/uc.vim rename to share/vim/vim74/syntax/uc.vim diff --git a/share/vim/vim73/syntax/udevconf.vim b/share/vim/vim74/syntax/udevconf.vim similarity index 100% rename from share/vim/vim73/syntax/udevconf.vim rename to share/vim/vim74/syntax/udevconf.vim diff --git a/share/vim/vim73/syntax/udevperm.vim b/share/vim/vim74/syntax/udevperm.vim similarity index 100% rename from share/vim/vim73/syntax/udevperm.vim rename to share/vim/vim74/syntax/udevperm.vim diff --git a/share/vim/vim73/syntax/udevrules.vim b/share/vim/vim74/syntax/udevrules.vim similarity index 100% rename from share/vim/vim73/syntax/udevrules.vim rename to share/vim/vim74/syntax/udevrules.vim diff --git a/share/vim/vim74/syntax/uil.vim b/share/vim/vim74/syntax/uil.vim new file mode 100644 index 00000000..b5421bcf --- /dev/null +++ b/share/vim/vim74/syntax/uil.vim @@ -0,0 +1,85 @@ +" Vim syntax file +" Language: Motif UIL (User Interface Language) +" Maintainer: Thomas Koehler +" Last Change: 2013 May 23 +" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/uil.vim + +" Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" A bunch of useful keywords +syn keyword uilType arguments callbacks color +syn keyword uilType compound_string controls end +syn keyword uilType exported file include +syn keyword uilType module object procedure +syn keyword uilType user_defined xbitmapfile + +syn keyword uilTodo contained TODO + +" String and Character constants +" Highlight special characters (those which have a backslash) differently +syn match uilSpecial contained "\\\d\d\d\|\\." +syn region uilString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell,uilSpecial +syn match uilCharacter "'[^\\]'" +syn region uilString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@Spell,uilSpecial +syn match uilSpecialCharacter "'\\.'" +syn match uilSpecialStatement "Xm[^ =(){}:;]*" +syn match uilSpecialFunction "MrmNcreateCallback" +syn match uilRessource "XmN[^ =(){}:;]*" + +syn match uilNumber "-\=\<\d*\.\=\d\+\(e\=f\=\|[uU]\=[lL]\=\)\>" +syn match uilNumber "0[xX]\x\+\>" + +syn region uilComment start="/\*" end="\*/" contains=@Spell,uilTodo +syn match uilComment "!.*" contains=@Spell,uilTodo +syn match uilCommentError "\*/" + +syn region uilPreCondit start="^#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=uilComment,uilString,uilCharacter,uilNumber,uilCommentError +syn match uilIncluded contained "<[^>]*>" +syn match uilInclude "^#\s*include\s\+." contains=uilString,uilIncluded +syn match uilLineSkip "\\$" +syn region uilDefine start="^#\s*\(define\>\|undef\>\)" end="$" contains=uilLineSkip,uilComment,uilString,uilCharacter,uilNumber,uilCommentError + +syn sync ccomment uilComment + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_uil_syn_inits") + if version < 508 + let did_uil_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " The default highlighting. + HiLink uilCharacter uilString + HiLink uilSpecialCharacter uilSpecial + HiLink uilNumber uilString + HiLink uilCommentError uilError + HiLink uilInclude uilPreCondit + HiLink uilDefine uilPreCondit + HiLink uilIncluded uilString + HiLink uilSpecialFunction uilRessource + HiLink uilRessource Identifier + HiLink uilSpecialStatement Keyword + HiLink uilError Error + HiLink uilPreCondit PreCondit + HiLink uilType Type + HiLink uilString String + HiLink uilComment Comment + HiLink uilSpecial Special + HiLink uilTodo Todo + + delcommand HiLink +endif + + +let b:current_syntax = "uil" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/updatedb.vim b/share/vim/vim74/syntax/updatedb.vim similarity index 100% rename from share/vim/vim73/syntax/updatedb.vim rename to share/vim/vim74/syntax/updatedb.vim diff --git a/share/vim/vim74/syntax/upstart.vim b/share/vim/vim74/syntax/upstart.vim new file mode 100644 index 00000000..b3f2b9e6 --- /dev/null +++ b/share/vim/vim74/syntax/upstart.vim @@ -0,0 +1,112 @@ +" Vim syntax file +" Language: Upstart job files +" Maintainer: Michael Biebl +" James Hunt +" Last Change: 2012 Jan 16 +" License: The Vim license +" Version: 0.4 +" Remark: Syntax highlighting for Upstart (init(8)) job files. +" +" It is inspired by the initng syntax file and includes sh.vim to do the +" highlighting of script blocks. + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let is_bash = 1 +syn include @Shell syntax/sh.vim + +syn case match + +" avoid need to use 'match' for most events +setlocal iskeyword+=- + +syn match upstartComment /#.*$/ contains=upstartTodo +syn keyword upstartTodo TODO FIXME contained + +syn region upstartString start=/"/ end=/"/ skip=/\\"/ + +syn region upstartScript matchgroup=upstartStatement start="script" end="end script" contains=@upstartShellCluster + +syn cluster upstartShellCluster contains=@Shell + +" one argument +syn keyword upstartStatement description author version instance expect +syn keyword upstartStatement pid kill normal console env exit export +syn keyword upstartStatement umask nice oom chroot chdir exec + +" two arguments +syn keyword upstartStatement limit + +" one or more arguments (events) +syn keyword upstartStatement emits + +syn keyword upstartStatement on start stop + +" flag, no parameter +syn keyword upstartStatement respawn service instance manual debug task + +" prefix for exec or script +syn keyword upstartOption pre-start post-start pre-stop post-stop + +" option for kill +syn keyword upstartOption timeout +" option for oom +syn keyword upstartOption never +" options for console +syn keyword upstartOption output owner +" options for expect +syn keyword upstartOption fork daemon +" options for limit +syn keyword upstartOption unlimited + +" 'options' for start/stop on +syn keyword upstartOption and or + +" Upstart itself and associated utilities +syn keyword upstartEvent runlevel +syn keyword upstartEvent started +syn keyword upstartEvent starting +syn keyword upstartEvent startup +syn keyword upstartEvent stopped +syn keyword upstartEvent stopping +syn keyword upstartEvent control-alt-delete +syn keyword upstartEvent keyboard-request +syn keyword upstartEvent power-status-changed + +" D-Bus +syn keyword upstartEvent dbus-activation + +" Display Manager (ie gdm) +syn keyword upstartEvent desktop-session-start +syn keyword upstartEvent login-session-start + +" mountall +syn keyword upstartEvent all-swaps +syn keyword upstartEvent filesystem +syn keyword upstartEvent mounted +syn keyword upstartEvent mounting +syn keyword upstartEvent local-filesystems +syn keyword upstartEvent remote-filesystems +syn keyword upstartEvent virtual-filesystems + +" SysV umountnfs.sh +syn keyword upstartEvent mounted-remote-filesystems + +" upstart-udev-bridge and ifup/down +syn match upstartEvent /\<\i\{-1,}-device-\(added\|removed\|up\|down\)/ + +" upstart-socket-bridge +syn keyword upstartEvent socket + +hi def link upstartComment Comment +hi def link upstartTodo Todo +hi def link upstartString String +hi def link upstartStatement Statement +hi def link upstartOption Type +hi def link upstartEvent Define + +let b:current_syntax = "upstart" diff --git a/share/vim/vim74/syntax/upstreamdat.vim b/share/vim/vim74/syntax/upstreamdat.vim new file mode 100644 index 00000000..7be80673 --- /dev/null +++ b/share/vim/vim74/syntax/upstreamdat.vim @@ -0,0 +1,296 @@ +" Vim syntax file +" Language: Innovation Data Processing upstream.dat file +" Maintainer: Rob Owens +" Latest Revision: 2013-06-17 + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +syn keyword upstreamdat_Parameter ACCEPTPCREMOTE +syn keyword upstreamdat_Parameter ACCEPTREMOTE +syn keyword upstreamdat_Parameter ACTION +syn keyword upstreamdat_Parameter ACTIVATEONENTRY +syn keyword upstreamdat_Parameter ARCHIVEBIT +syn keyword upstreamdat_Parameter ARCHIVEBIT +syn keyword upstreamdat_Parameter ASCTOEBC +syn keyword upstreamdat_Parameter ASRBACKUP +syn keyword upstreamdat_Parameter ATTENDED +syn keyword upstreamdat_Parameter AUTHORITATIVE +syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE +syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE +syn keyword upstreamdat_Parameter BACKUPPROFILE +syn keyword upstreamdat_Parameter BACKUPPROFILE2 +syn keyword upstreamdat_Parameter BACKUPREPARSEFILES +syn keyword upstreamdat_Parameter BACKUPREPARSEFILES +syn keyword upstreamdat_Parameter BACKUPVERIFY +syn keyword upstreamdat_Parameter BLANKTRUNC +syn keyword upstreamdat_Parameter CALCDASDSIZE +syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS +syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS +syn keyword upstreamdat_Parameter COMPRESSLEVEL +syn keyword upstreamdat_Parameter CONTROLFILE +syn keyword upstreamdat_Parameter DASDOVERRIDE +syn keyword upstreamdat_Parameter DATELIMIT +syn keyword upstreamdat_Parameter DATELIMIT +syn keyword upstreamdat_Parameter DAYSOLD +syn keyword upstreamdat_Parameter DAYSOLD +syn keyword upstreamdat_Parameter DELETED +syn keyword upstreamdat_Parameter DELETED +syn keyword upstreamdat_Parameter DELETEPROMPTS +syn keyword upstreamdat_Parameter DELETEPROMPTS +syn keyword upstreamdat_Parameter DESTINATION +syn keyword upstreamdat_Parameter DESTINATION +syn keyword upstreamdat_Parameter DIRDELETE +syn keyword upstreamdat_Parameter DIRECTORVMC +syn keyword upstreamdat_Parameter DIRONLYRESTOREOK +syn keyword upstreamdat_Parameter DIRSONLY +syn keyword upstreamdat_Parameter DIRSONLY +syn keyword upstreamdat_Parameter DISASTERRECOVERY +syn keyword upstreamdat_Parameter DISPLAY +syn keyword upstreamdat_Parameter DRIVEALIAS +syn keyword upstreamdat_Parameter DRIVEALIAS +syn keyword upstreamdat_Parameter DUALCOPY +syn keyword upstreamdat_Parameter DUPDAYS +syn keyword upstreamdat_Parameter DUPLICATE +syn keyword upstreamdat_Parameter EBCTOASC +syn keyword upstreamdat_Parameter ENCRYPT +syn keyword upstreamdat_Parameter ENCRYPTLEVEL +syn keyword upstreamdat_Parameter EXCLUDELISTNAME +syn keyword upstreamdat_Parameter FAILBACKUPONERROR +syn keyword upstreamdat_Parameter FAILBACKUPONERROR +syn keyword upstreamdat_Parameter FAILIFNOFILES +syn keyword upstreamdat_Parameter FAILIFNOFILES +syn keyword upstreamdat_Parameter FAILIFSKIP +syn keyword upstreamdat_Parameter FAILJOB +syn keyword upstreamdat_Parameter FAILRESTOREONERROR +syn keyword upstreamdat_Parameter FAILRESTOREONERROR +syn keyword upstreamdat_Parameter FILEDATE +syn keyword upstreamdat_Parameter FILEDATE +syn keyword upstreamdat_Parameter FILEDELETE +syn keyword upstreamdat_Parameter FILEDELETE +syn keyword upstreamdat_Parameter FILES +syn keyword upstreamdat_Parameter FILES +syn keyword upstreamdat_Parameter FILESOPENFORUPDAT +syn keyword upstreamdat_Parameter FILESOPENFORUPDAT +syn keyword upstreamdat_Parameter FILETRANSFER +syn keyword upstreamdat_Parameter GETREMOTEFILES +syn keyword upstreamdat_Parameter HARDLINKDB +syn keyword upstreamdat_Parameter HARDLINKS +syn keyword upstreamdat_Parameter HARDLINKS +syn keyword upstreamdat_Parameter HIDDENFILES +syn keyword upstreamdat_Parameter HIDDENFILES +syn keyword upstreamdat_Parameter HOLDTAPE +syn keyword upstreamdat_Parameter HOLDUSERDIRS +syn keyword upstreamdat_Parameter HOSTFILENAME +syn keyword upstreamdat_Parameter HOSTRECORD +syn keyword upstreamdat_Parameter HOSTSORT +syn keyword upstreamdat_Parameter IGNOREPLUGINSFORRESTORE +syn keyword upstreamdat_Parameter INCRDB +syn keyword upstreamdat_Parameter INCRDBARCHIVEBIT +syn keyword upstreamdat_Parameter INCRDBDELETEDFILES +syn keyword upstreamdat_Parameter INCREMENTAL +syn keyword upstreamdat_Parameter INCREMENTAL +syn keyword upstreamdat_Parameter INQOPTIONS +syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT +syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT +syn keyword upstreamdat_Parameter JOBOPTIONS +syn keyword upstreamdat_Parameter JOBRETURNCODEMAP +syn keyword upstreamdat_Parameter JOBWAITTIMELIMIT +syn keyword upstreamdat_Parameter KEEPALIVE +syn keyword upstreamdat_Parameter LANINTERFACE +syn keyword upstreamdat_Parameter LANWSNAME +syn keyword upstreamdat_Parameter LANWSPASSWORD +syn keyword upstreamdat_Parameter LASTACCESS +syn keyword upstreamdat_Parameter LASTACCESS +syn keyword upstreamdat_Parameter LATESTDATE +syn keyword upstreamdat_Parameter LATESTDATE +syn keyword upstreamdat_Parameter LATESTTIME +syn keyword upstreamdat_Parameter LATESTTIME +syn keyword upstreamdat_Parameter LATESTVERSION +syn keyword upstreamdat_Parameter LINEBLOCK +syn keyword upstreamdat_Parameter LINETRUNC +syn keyword upstreamdat_Parameter LISTENFORREMOTE +syn keyword upstreamdat_Parameter LOCALBACKUP +syn keyword upstreamdat_Parameter LOCALBACKUPDIR +syn keyword upstreamdat_Parameter LOCALBACKUPMAX +syn keyword upstreamdat_Parameter LOCALBACKUPMAXFILESIZE +syn keyword upstreamdat_Parameter LOCALBACKUPMAXSIZE +syn keyword upstreamdat_Parameter LOCALEXCLUDEFILE +syn keyword upstreamdat_Parameter LOCALPARAMETERS +syn keyword upstreamdat_Parameter LOCALPASSWORD +syn keyword upstreamdat_Parameter LOCALRESTORE +syn keyword upstreamdat_Parameter LOCALUSER +syn keyword upstreamdat_Parameter LOFS +syn keyword upstreamdat_Parameter LOGNONFATAL +syn keyword upstreamdat_Parameter MAXBACKUPFILESFAIL +syn keyword upstreamdat_Parameter MAXBACKUPTIME +syn keyword upstreamdat_Parameter MAXDUPS +syn keyword upstreamdat_Parameter MAXFILENAMESIZE +syn keyword upstreamdat_Parameter MAXKFILESIZE +syn keyword upstreamdat_Parameter MAXLOGDAYS +syn keyword upstreamdat_Parameter MAXRESTOREFILESFAIL +syn keyword upstreamdat_Parameter MAXRESTORETIME +syn keyword upstreamdat_Parameter MAXRETRY +syn keyword upstreamdat_Parameter MAXRPTDAYS +syn keyword upstreamdat_Parameter MERGE +syn keyword upstreamdat_Parameter MIGRBITS +syn keyword upstreamdat_Parameter MIGRBITS +syn keyword upstreamdat_Parameter MINCOMPRESSSIZE +syn keyword upstreamdat_Parameter MINIMIZE +syn keyword upstreamdat_Parameter MODIFYFILE +syn keyword upstreamdat_Parameter MOUNTPOINTS +syn keyword upstreamdat_Parameter MOUNTPOINTS +syn keyword upstreamdat_Parameter NDS +syn keyword upstreamdat_Parameter NDS +syn keyword upstreamdat_Parameter NEWFILECOMPARE +syn keyword upstreamdat_Parameter NFSBELOW +syn keyword upstreamdat_Parameter NODATAOK +syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL +syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL +syn keyword upstreamdat_Parameter NONFILEDATABITMAP +syn keyword upstreamdat_Parameter NONFILEDATABITMAP +syn keyword upstreamdat_Parameter NOPOINTRESTORE +syn keyword upstreamdat_Parameter NOSPECINHERITANCE +syn keyword upstreamdat_Parameter NOTIFYEVENTS +syn keyword upstreamdat_Parameter NOTIFYFAILUREATTACHMENT +syn keyword upstreamdat_Parameter NOTIFYSUCCESSATTACHMENT +syn keyword upstreamdat_Parameter NOTIFYTARGETS +syn keyword upstreamdat_Parameter NOUIDGIDNAMES +syn keyword upstreamdat_Parameter NOUIDGIDNAMES +syn keyword upstreamdat_Parameter NOVELLMIGRATE +syn keyword upstreamdat_Parameter NOVELLMIGRATE +syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT +syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT +syn keyword upstreamdat_Parameter NOVELLPROFILE +syn keyword upstreamdat_Parameter NOVELLRECALL +syn keyword upstreamdat_Parameter NTFSADDPERMISSION +syn keyword upstreamdat_Parameter NTFSADDPERMISSION +syn keyword upstreamdat_Parameter NTREGRESTORE +syn keyword upstreamdat_Parameter OSTYPE +syn keyword upstreamdat_Parameter OUTPORT +syn keyword upstreamdat_Parameter PACKFLUSHAFTERFILE +syn keyword upstreamdat_Parameter PACKRECSIZE +syn keyword upstreamdat_Parameter PARAMETER +syn keyword upstreamdat_Parameter PASSWORD +syn keyword upstreamdat_Parameter PATHNAME +syn keyword upstreamdat_Parameter PATHNAME +syn keyword upstreamdat_Parameter PERFORMBITMAP +syn keyword upstreamdat_Parameter PERFORMNUMRECORDS +syn keyword upstreamdat_Parameter PERFORMRECORDSIZE +syn keyword upstreamdat_Parameter PLUGIN +syn keyword upstreamdat_Parameter PLUGIN +syn keyword upstreamdat_Parameter PLUGINPARAMETERS +syn keyword upstreamdat_Parameter PLUGINPARAMETERS +syn keyword upstreamdat_Parameter POSTJOB +syn keyword upstreamdat_Parameter PREJOB +syn keyword upstreamdat_Parameter PRTYCLASS +syn keyword upstreamdat_Parameter PRTYLEVEL +syn keyword upstreamdat_Parameter RECALLCLEANUP +syn keyword upstreamdat_Parameter RECALLOFFLINEFILES +syn keyword upstreamdat_Parameter RECALLOFFLINEFILES +syn keyword upstreamdat_Parameter RECORDSIZE +syn keyword upstreamdat_Parameter REMOTEADDR +syn keyword upstreamdat_Parameter REMOTEAPPLPREF +syn keyword upstreamdat_Parameter REMOTEAPPLRETRY +syn keyword upstreamdat_Parameter REMOTECONNECTTYPE +syn keyword upstreamdat_Parameter REMOTEFLAGS +syn keyword upstreamdat_Parameter REMOTEIPADAPTER +syn keyword upstreamdat_Parameter REMOTELOCALPARAMETERS +syn keyword upstreamdat_Parameter REMOTELOGMODE +syn keyword upstreamdat_Parameter REMOTELUNAME +syn keyword upstreamdat_Parameter REMOTEMAXRETRIES +syn keyword upstreamdat_Parameter REMOTEMODENAME +syn keyword upstreamdat_Parameter REMOTEPARAMETERFILE +syn keyword upstreamdat_Parameter REMOTEPORT +syn keyword upstreamdat_Parameter REMOTEREQUEST +syn keyword upstreamdat_Parameter REMOTERESTART +syn keyword upstreamdat_Parameter REMOTEROUTE +syn keyword upstreamdat_Parameter REMOTETARGETNAME +syn keyword upstreamdat_Parameter REMOTETCP +syn keyword upstreamdat_Parameter REMOTETIMEOUT +syn keyword upstreamdat_Parameter REMOTETMAXRETRY +syn keyword upstreamdat_Parameter REMOTETPN +syn keyword upstreamdat_Parameter REMOTEUSAPPL +syn keyword upstreamdat_Parameter REMOTEVERIFY +syn keyword upstreamdat_Parameter REMOTEWTOCOMP +syn keyword upstreamdat_Parameter REPORTNAME +syn keyword upstreamdat_Parameter REPORTOPTIONS +syn keyword upstreamdat_Parameter RESTARTLASTFILE +syn keyword upstreamdat_Parameter RESTART +syn keyword upstreamdat_Parameter RESTARTTYPE +syn keyword upstreamdat_Parameter RESTARTVERSIONDATE +syn keyword upstreamdat_Parameter RESTOREARCHIVEBIT +syn keyword upstreamdat_Parameter RESTORECHECKPOINT +syn keyword upstreamdat_Parameter RESTOREDATELIMIT +syn keyword upstreamdat_Parameter RESTOREDATELIMIT +syn keyword upstreamdat_Parameter RESTOREFILEFAIL +syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS +syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS +syn keyword upstreamdat_Parameter RESTORESEGMENTS +syn keyword upstreamdat_Parameter RESTORESEGMENTS +syn keyword upstreamdat_Parameter RESTORETODIFFFS +syn keyword upstreamdat_Parameter RETAIN +syn keyword upstreamdat_Parameter RETAIN +syn keyword upstreamdat_Parameter ROOTENTRY +syn keyword upstreamdat_Parameter ROOTENTRY +syn keyword upstreamdat_Parameter SAN +syn keyword upstreamdat_Parameter SCHEDULENAME +syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE +syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE +syn keyword upstreamdat_Parameter SEGMENTSIZE +syn keyword upstreamdat_Parameter SEGMENTSIZE +syn keyword upstreamdat_Parameter SENDHOSTDETAILS +syn keyword upstreamdat_Parameter SINGLEFS +syn keyword upstreamdat_Parameter SIZETRC +syn keyword upstreamdat_Parameter SKIP +syn keyword upstreamdat_Parameter SKIPBACKUPSCAN +syn keyword upstreamdat_Parameter SKIPOLD +syn keyword upstreamdat_Parameter SKIPOLD +syn keyword upstreamdat_Parameter SMSTARGETSERVICENAME +syn keyword upstreamdat_Parameter SMSTSA +syn keyword upstreamdat_Parameter SOLO +syn keyword upstreamdat_Parameter SORTBACKUP +syn keyword upstreamdat_Parameter SOSDISK +syn keyword upstreamdat_Parameter SOSDISK +syn keyword upstreamdat_Parameter SOSTIMESTAMP +syn keyword upstreamdat_Parameter SOSTIMESTAMP +syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH +syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH +syn keyword upstreamdat_Parameter SPECNUMBER +syn keyword upstreamdat_Parameter SPECNUMBER +syn keyword upstreamdat_Parameter SPECTYPE +syn keyword upstreamdat_Parameter SPECTYPE +syn keyword upstreamdat_Parameter STARTTIME +syn keyword upstreamdat_Parameter STORAGETYPE +syn keyword upstreamdat_Parameter SUBDIRECTORIES +syn keyword upstreamdat_Parameter SUBDIRECTORIES +syn keyword upstreamdat_Parameter SWITCHTOTAPEMB +syn keyword upstreamdat_Parameter TCPADDRESS +syn keyword upstreamdat_Parameter TCPTIMEOUT +syn keyword upstreamdat_Parameter TIMEOVERRIDE +syn keyword upstreamdat_Parameter TRACE +syn keyword upstreamdat_Parameter TRANSLATE +syn keyword upstreamdat_Parameter ULTRACOMP +syn keyword upstreamdat_Parameter ULTREG +syn keyword upstreamdat_Parameter ULTUPD +syn keyword upstreamdat_Parameter UNCMACHINEALIAS +syn keyword upstreamdat_Parameter UNCMACHINEALIAS +syn keyword upstreamdat_Parameter USEALEBRA +syn keyword upstreamdat_Parameter USECONTROLFILE +syn keyword upstreamdat_Parameter USEGID +syn keyword upstreamdat_Parameter USERID +syn keyword upstreamdat_Parameter USEUID +syn keyword upstreamdat_Parameter USNOUIDGIDERRORS +syn keyword upstreamdat_Parameter UTF8 +syn keyword upstreamdat_Parameter VAULTNUMBER +syn keyword upstreamdat_Parameter VERSIONDATE +syn keyword upstreamdat_Parameter WRITESPARSE +syn keyword upstreamdat_Parameter XFERECORDSIZE +syn keyword upstreamdat_Parameter XFERRECSEP +syn keyword upstreamdat_Parameter XFERRECUSECR + +hi def link upstreamdat_Parameter Type + +let b:current_syntax = "upstreamdat" diff --git a/share/vim/vim74/syntax/upstreaminstalllog.vim b/share/vim/vim74/syntax/upstreaminstalllog.vim new file mode 100644 index 00000000..fb23fdcc --- /dev/null +++ b/share/vim/vim74/syntax/upstreaminstalllog.vim @@ -0,0 +1,27 @@ +" Vim syntax file +" Language: Innovation Data Processing UPSTREAMInstall.log file +" Maintainer: Rob Owens +" Latest Revision: 2013-06-17 + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" Date: +syn match upstreaminstalllog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/ +" Msg Types: +syn match upstreaminstalllog_MsgD /Msg #MSI\d\{4,5}D/ +syn match upstreaminstalllog_MsgE /Msg #MSI\d\{4,5}E/ +syn match upstreaminstalllog_MsgI /Msg #MSI\d\{4,5}I/ +syn match upstreaminstalllog_MsgW /Msg #MSI\d\{4,5}W/ +" IP Address: +syn match upstreaminstalllog_IPaddr / \d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ + +hi def link upstreaminstalllog_Date Underlined +hi def link upstreaminstalllog_MsgD Type +hi def link upstreaminstalllog_MsgE Error +hi def link upstreaminstalllog_MsgW Constant +hi def link upstreaminstalllog_IPaddr Identifier + +let b:current_syntax = "upstreaminstalllog" diff --git a/share/vim/vim74/syntax/upstreamlog.vim b/share/vim/vim74/syntax/upstreamlog.vim new file mode 100644 index 00000000..1161ecfc --- /dev/null +++ b/share/vim/vim74/syntax/upstreamlog.vim @@ -0,0 +1,53 @@ +" Vim syntax file +" Language: Innovation Data Processing upstream.log file +" Maintainer: Rob Owens +" Latest Revision: 2013-07-26 + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" Date: +syn match upstreamlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/ +" Msg Types: +syn match upstreamlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=upstreamlog_Process skipwhite +syn match upstreamlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=upstreamlog_Process skipwhite +syn match upstreamlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=upstreamlog_Process skipwhite +syn match upstreamlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=upstreamlog_Process skipwhite +" Processes: +syn region upstreamlog_Process start="(" end=")" contained +" IP Address: +syn match upstreamlog_IPaddr /\( \|(\)\zs\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ +" Profile: +syn match upstreamlog_Profile /Using default configuration for profile \zs\S\{1,8}\ze/ +syn match upstreamlog_Profile /Now running profile \zs\S\{1,8}\ze/ +syn match upstreamlog_Profile /in profile set \zs\S\{1,8}\ze/ +syn match upstreamlog_Profile /Migrate disk backup from profile \zs\S\{1,8}\ze/ +syn match upstreamlog_Profile /Profileset=\zs\S\{1,8}\ze,/ +syn match upstreamlog_Profile /Vault \(disk\|tape\) backup to vault \d\{1,4} from profile \zs\S\{1,8}\ze/ +syn match upstreamlog_Profile /Profile name \zs\"\S\{1,8}\"/ +syn match upstreamlog_Profile / Profile: \zs\S\{1,8}/ +syn match upstreamlog_Profile / Profile: \zs\S\{1,8}\ze, / +syn match upstreamlog_Profile /, profile: \zs\S\{1,8}\ze,/ +syn match upstreamlog_Profile /found Profile: \zs\S\{1,8}\ze,/ +syn match upstreamlog_Profile /Backup Profile: \zs\ze Version date/ +syn match upstreamlog_Profile /Full of \zs\S\{1,8}\ze$/ +syn match upstreamlog_Profile /Incr. of \zs\S\{1,8}\ze$/ +syn match upstreamlog_Profile /Profile=\zs\S\{1,8}\ze,/ +" Target: +syn region upstreamlog_Target start="Computer: \zs" end="\ze[\]\)]" +syn region upstreamlog_Target start="Computer name \zs" end="\ze," +syn region upstreamlog_Target start="request to registered name \zs" end=" " + + +hi def link upstreamlog_Date Underlined +hi def link upstreamlog_MsgD Type +hi def link upstreamlog_MsgE Error +hi def link upstreamlog_MsgW Constant +hi def link upstreamlog_Process Statement +hi def link upstreamlog_IPaddr Identifier +hi def link upstreamlog_Profile Identifier +hi def link upstreamlog_Target Identifier + +let b:current_syntax = "upstreamlog" diff --git a/share/vim/vim74/syntax/usserverlog.vim b/share/vim/vim74/syntax/usserverlog.vim new file mode 100644 index 00000000..7cd50b32 --- /dev/null +++ b/share/vim/vim74/syntax/usserverlog.vim @@ -0,0 +1,59 @@ +" Vim syntax file +" Language: Innovation Data Processing usserver.log file +" Maintainer: Rob Owens +" Latest Revision: 2013-07-26 + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" Date: +syn match usserverlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/ +" Msg Types: +syn match usserverlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=usserverlog_Process skipwhite +syn match usserverlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=usserverlog_Process skipwhite +syn match usserverlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=usserverlog_Process skipwhite +syn match usserverlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=usserverlog_Process skipwhite +" Processes: +syn region usserverlog_Process start="(" end=")" contained +" IP Address: +syn match usserverlog_IPaddr /\( \|(\)\zs\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ +" Profile: +syn match usserverlog_Profile /Using default configuration for profile \zs\S\{1,8}\ze/ +syn match usserverlog_Profile /Now running profile \zs\S\{1,8}\ze/ +syn match usserverlog_Profile /in profile set \zs\S\{1,8}\ze/ +syn match usserverlog_Profile /Migrate disk backup from profile \zs\S\{1,8}\ze/ +syn match usserverlog_Profile /Using profile prefix for profile \zs\S\{1,8}\ze/ +syn match usserverlog_Profile /Add\/update profile \zs\S\{1,8}\ze/ +syn match usserverlog_Profile /Profileset=\zs\S\{1,8}\ze,/ +syn match usserverlog_Profile /profileset=\zs\S\{1,8}\ze/ +syn match usserverlog_Profile /Vault \(disk\|tape\) backup to vault \d\{1,4} from profile \zs\S\{1,8}\ze/ +syn match usserverlog_Profile /Profile name \zs\"\S\{1,8}\"/ +syn match usserverlog_Profile / Profile: \zs\S\{1,8}/ +syn match usserverlog_Profile / Profile: \zs\S\{1,8}\ze, / +syn match usserverlog_Profile /, profile: \zs\S\{1,8}\ze,/ +syn match usserverlog_Profile /Expecting Profile: \zs\S\{1,8}\ze,/ +syn match usserverlog_Profile /found Profile: \zs\S\{1,8}\ze,/ +syn match usserverlog_Profile /Profile \zs\S\{1,8} \zeis a member of group: / +syn match usserverlog_Profile /Backup Profile: \zs\ze Version date/ +syn match usserverlog_Profile /Full of \zs\S\{1,8}\ze$/ +syn match usserverlog_Profile /Incr. of \zs\S\{1,8}\ze$/ +syn match usserverlog_Profile /Profile=\zs\S\{1,8}\ze,/ +" Target: +syn region usserverlog_Target start="Computer: \zs" end="\ze[\]\)]" +syn region usserverlog_Target start="Computer name \zs" end="\ze," +syn region usserverlog_Target start="Registration add request successful \zs" end="$" +syn region usserverlog_Target start="request to registered name \zs" end=" " +syn region usserverlog_Target start=", sending to \zs" end="$" + +hi def link usserverlog_Date Underlined +hi def link usserverlog_MsgD Type +hi def link usserverlog_MsgE Error +hi def link usserverlog_MsgW Constant +hi def link usserverlog_Process Statement +hi def link usserverlog_IPaddr Identifier +hi def link usserverlog_Profile Identifier +hi def link usserverlog_Target Identifier + +let b:current_syntax = "usserverlog" diff --git a/share/vim/vim74/syntax/usw2kagtlog.vim b/share/vim/vim74/syntax/usw2kagtlog.vim new file mode 100644 index 00000000..93157313 --- /dev/null +++ b/share/vim/vim74/syntax/usw2kagtlog.vim @@ -0,0 +1,49 @@ +" Vim syntax file +" Language: Innovation Data Processing USW2KAgt.log file +" Maintainer: Rob Owens +" Latest Revision: 2013-07-26 + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" Date: +syn match usw2kagtlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/ +" Msg Types: +syn match usw2kagtlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=usw2kagtlog_Process skipwhite +syn match usw2kagtlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=usw2kagtlog_Process skipwhite +syn match usw2kagtlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=usw2kagtlog_Process skipwhite +syn match usw2kagtlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=usw2kagtlog_Process skipwhite +" Processes: +syn region usw2kagtlog_Process start="(" end=")" contained +syn region usw2kagtlog_Process start="Starting the processing for a \zs\"" end="\ze client request" +syn region usw2kagtlog_Process start="Ending the processing for a \zs\"" end="\ze client request" +" IP Address: +syn match usw2kagtlog_IPaddr / \d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ +" Profile: + +syn match usw2kagtlog_Profile /Profile name \zs\"\S\{1,8}\"/ +syn match usw2kagtlog_Profile / Profile: \zs\S\{1,8}/ +syn match usw2kagtlog_Profile / Profile: \zs\S\{1,8}\ze, / +syn match usw2kagtlog_Profile /Backup Profile: \zs\ze Version date/ +syn match usw2kagtlog_Profile /Full of \zs\S\{1,8}\ze$/ +syn match usw2kagtlog_Profile /Incr. of \zs\S\{1,8}\ze$/ +syn match usw2kagtlog_Profile /profile name "\zs\S\{1,8}\ze"/ +" Target: +syn region usw2kagtlog_Target start="Computer: \zs" end="\ze[\]\)]" +syn region usw2kagtlog_Target start="Computer name \zs" end="\ze," +" Agent Keywords: +syn keyword usw2kagtlog_Agentword opened closed + +hi def link usw2kagtlog_Date Underlined +hi def link usw2kagtlog_MsgD Type +hi def link usw2kagtlog_MsgE Error +hi def link usw2kagtlog_MsgW Constant +hi def link usw2kagtlog_Process Statement +hi def link usw2kagtlog_IPaddr Identifier +hi def link usw2kagtlog_Profile Identifier +hi def link usw2kagtlog_Target Identifier +hi def link usw2kagtlog_Agentword Special + +let b:current_syntax = "usw2kagentlog" diff --git a/share/vim/vim74/syntax/valgrind.vim b/share/vim/vim74/syntax/valgrind.vim new file mode 100644 index 00000000..48e9564a --- /dev/null +++ b/share/vim/vim74/syntax/valgrind.vim @@ -0,0 +1,104 @@ +" Vim syntax file +" Language: Valgrind Memory Debugger Output +" Maintainer: Roger Luethi +" Program URL: http://devel-home.kde.org/~sewardj/ +" Last Change: 2012 Apr 30 +" +" Notes: mostly based on strace.vim and xml.vim + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +syn case match +syn sync minlines=50 + +syn match valgrindSpecLine "^[+-]\{2}\d\+[+-]\{2}.*$" + +syn region valgrindRegion + \ start=+^==\z(\d\+\)== \w.*$+ + \ skip=+^==\z1==\( \| .*\)$+ + \ end=+^+ + \ fold + \ keepend + \ contains=valgrindPidChunk,valgrindLine + +syn region valgrindPidChunk + \ start=+\(^==\)\@<=+ + \ end=+\(==\)\@=+ + \ contained + \ contains=valgrindPid0,valgrindPid1,valgrindPid2,valgrindPid3,valgrindPid4,valgrindPid5,valgrindPid6,valgrindPid7,valgrindPid8,valgrindPid9 + \ keepend + +syn match valgrindPid0 "\d\+0=" contained +syn match valgrindPid1 "\d\+1=" contained +syn match valgrindPid2 "\d\+2=" contained +syn match valgrindPid3 "\d\+3=" contained +syn match valgrindPid4 "\d\+4=" contained +syn match valgrindPid5 "\d\+5=" contained +syn match valgrindPid6 "\d\+6=" contained +syn match valgrindPid7 "\d\+7=" contained +syn match valgrindPid8 "\d\+8=" contained +syn match valgrindPid9 "\d\+9=" contained + +syn region valgrindLine + \ start=+\(^==\d\+== \)\@<=+ + \ end=+$+ + \ keepend + \ contained + \ contains=valgrindOptions,valgrindMsg,valgrindLoc + +syn match valgrindOptions "[ ]\{3}-.*$" contained + +syn match valgrindMsg "\S.*$" contained + \ contains=valgrindError,valgrindNote,valgrindSummary +syn match valgrindError "\(Invalid\|\d\+ errors\|.* definitely lost\).*$" contained +syn match valgrindNote ".*still reachable.*" contained +syn match valgrindSummary ".*SUMMARY:" contained + +syn match valgrindLoc "\s\+\(by\|at\|Address\).*$" contained + \ contains=valgrindAt,valgrindAddr,valgrindFunc,valgrindBin,valgrindSrc +syn match valgrindAt "at\s\@=" contained +syn match valgrindAddr "\(\W\)\@<=0x\x\+" contained +syn match valgrindFunc "\(: \)\@<=\w\+" contained +syn match valgrindBin "\((\(with\|\)in \)\@<=\S\+\()\)\@=" contained +syn match valgrindSrc "\((\)\@<=.*:\d\+\()\)\@=" contained + +" Define the default highlighting + +hi def link valgrindSpecLine Type +"hi def link valgrindRegion Special + +hi def link valgrindPid0 Special +hi def link valgrindPid1 Comment +hi def link valgrindPid2 Type +hi def link valgrindPid3 Constant +hi def link valgrindPid4 Number +hi def link valgrindPid5 Identifier +hi def link valgrindPid6 Statement +hi def link valgrindPid7 Error +hi def link valgrindPid8 LineNr +hi def link valgrindPid9 Normal +"hi def link valgrindLine Special + +hi def link valgrindOptions Type +"hi def link valgrindMsg Special +"hi def link valgrindLoc Special + +hi def link valgrindError Special +hi def link valgrindNote Comment +hi def link valgrindSummary Type + +hi def link valgrindAt Special +hi def link valgrindAddr Number +hi def link valgrindFunc Type +hi def link valgrindBin Comment +hi def link valgrindSrc Statement + +let b:current_syntax = "valgrind" + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/share/vim/vim73/syntax/vb.vim b/share/vim/vim74/syntax/vb.vim similarity index 100% rename from share/vim/vim73/syntax/vb.vim rename to share/vim/vim74/syntax/vb.vim diff --git a/share/vim/vim73/syntax/vera.vim b/share/vim/vim74/syntax/vera.vim similarity index 100% rename from share/vim/vim73/syntax/vera.vim rename to share/vim/vim74/syntax/vera.vim diff --git a/share/vim/vim74/syntax/verilog.vim b/share/vim/vim74/syntax/verilog.vim new file mode 100644 index 00000000..f4d21d07 --- /dev/null +++ b/share/vim/vim74/syntax/verilog.vim @@ -0,0 +1,136 @@ +" Vim syntax file +" Language: Verilog +" Maintainer: Mun Johl +" Last Update: Wed Jul 20 16:04:19 PDT 2011 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Set the local value of the 'iskeyword' option. +" NOTE: '?' was added so that verilogNumber would be processed correctly when +" '?' is the last character of the number. +if version >= 600 + setlocal iskeyword=@,48-57,63,_,192-255 +else + set iskeyword=@,48-57,63,_,192-255 +endif + +" A bunch of useful Verilog keywords + +syn keyword verilogStatement always and assign automatic buf +syn keyword verilogStatement bufif0 bufif1 cell cmos +syn keyword verilogStatement config deassign defparam design +syn keyword verilogStatement disable edge endconfig +syn keyword verilogStatement endfunction endgenerate endmodule +syn keyword verilogStatement endprimitive endspecify endtable endtask +syn keyword verilogStatement event force function +syn keyword verilogStatement generate genvar highz0 highz1 ifnone +syn keyword verilogStatement incdir include initial inout input +syn keyword verilogStatement instance integer large liblist +syn keyword verilogStatement library localparam macromodule medium +syn keyword verilogStatement module nand negedge nmos nor +syn keyword verilogStatement noshowcancelled not notif0 notif1 or +syn keyword verilogStatement output parameter pmos posedge primitive +syn keyword verilogStatement pull0 pull1 pulldown pullup +syn keyword verilogStatement pulsestyle_onevent pulsestyle_ondetect +syn keyword verilogStatement rcmos real realtime reg release +syn keyword verilogStatement rnmos rpmos rtran rtranif0 rtranif1 +syn keyword verilogStatement scalared showcancelled signed small +syn keyword verilogStatement specify specparam strong0 strong1 +syn keyword verilogStatement supply0 supply1 table task time tran +syn keyword verilogStatement tranif0 tranif1 tri tri0 tri1 triand +syn keyword verilogStatement trior trireg unsigned use vectored wait +syn keyword verilogStatement wand weak0 weak1 wire wor xnor xor +syn keyword verilogLabel begin end fork join +syn keyword verilogConditional if else case casex casez default endcase +syn keyword verilogRepeat forever repeat while for + +syn keyword verilogTodo contained TODO FIXME + +syn match verilogOperator "[&|~>" +syn match verilogGlobal "`celldefine" +syn match verilogGlobal "`default_nettype" +syn match verilogGlobal "`define" +syn match verilogGlobal "`else" +syn match verilogGlobal "`elsif" +syn match verilogGlobal "`endcelldefine" +syn match verilogGlobal "`endif" +syn match verilogGlobal "`ifdef" +syn match verilogGlobal "`ifndef" +syn match verilogGlobal "`include" +syn match verilogGlobal "`line" +syn match verilogGlobal "`nounconnected_drive" +syn match verilogGlobal "`resetall" +syn match verilogGlobal "`timescale" +syn match verilogGlobal "`unconnected_drive" +syn match verilogGlobal "`undef" +syn match verilogGlobal "$[a-zA-Z0-9_]\+\>" + +syn match verilogConstant "\<[A-Z][A-Z0-9_]\+\>" + +syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[bB]\s*[0-1_xXzZ?]\+\>" +syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[oO]\s*[0-7_xXzZ?]\+\>" +syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[dD]\s*[0-9_xXzZ?]\+\>" +syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[hH]\s*[0-9a-fA-F_xXzZ?]\+\>" +syn match verilogNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>" + +syn region verilogString start=+"+ skip=+\\"+ end=+"+ contains=verilogEscape,@Spell +syn match verilogEscape +\\[nt"\\]+ contained +syn match verilogEscape "\\\o\o\=\o\=" contained + +" Directives +syn match verilogDirective "//\s*synopsys\>.*$" +syn region verilogDirective start="/\*\s*synopsys\>" end="\*/" +syn region verilogDirective start="//\s*synopsys dc_script_begin\>" end="//\s*synopsys dc_script_end\>" + +syn match verilogDirective "//\s*\$s\>.*$" +syn region verilogDirective start="/\*\s*\$s\>" end="\*/" +syn region verilogDirective start="//\s*\$s dc_script_begin\>" end="//\s*\$s dc_script_end\>" + +"Modify the following as needed. The trade-off is performance versus +"functionality. +syn sync minlines=50 + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_verilog_syn_inits") + if version < 508 + let did_verilog_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " The default highlighting. + HiLink verilogCharacter Character + HiLink verilogConditional Conditional + HiLink verilogRepeat Repeat + HiLink verilogString String + HiLink verilogTodo Todo + HiLink verilogComment Comment + HiLink verilogConstant Constant + HiLink verilogLabel Label + HiLink verilogNumber Number + HiLink verilogOperator Special + HiLink verilogStatement Statement + HiLink verilogGlobal Define + HiLink verilogDirective SpecialComment + HiLink verilogEscape Special + + delcommand HiLink +endif + +let b:current_syntax = "verilog" + +" vim: ts=8 diff --git a/share/vim/vim73/syntax/verilogams.vim b/share/vim/vim74/syntax/verilogams.vim similarity index 100% rename from share/vim/vim73/syntax/verilogams.vim rename to share/vim/vim74/syntax/verilogams.vim diff --git a/share/vim/vim73/syntax/vgrindefs.vim b/share/vim/vim74/syntax/vgrindefs.vim similarity index 100% rename from share/vim/vim73/syntax/vgrindefs.vim rename to share/vim/vim74/syntax/vgrindefs.vim diff --git a/share/vim/vim74/syntax/vhdl.vim b/share/vim/vim74/syntax/vhdl.vim new file mode 100644 index 00000000..5d978ccd --- /dev/null +++ b/share/vim/vim74/syntax/vhdl.vim @@ -0,0 +1,190 @@ +" Vim syntax file +" Language: VHDL +" Maintainer: Czo +" Credits: Stephan Hegel +" Last Change: 2012 Jun 01 +" (Dominique Pelle added @Spell) + +" VHSIC Hardware Description Language +" Very High Scale Integrated Circuit + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" This is not VHDL. I use the C-Preprocessor cpp to generate different binaries +" from one VHDL source file. Unfortunately there is no preprocessor for VHDL +" available. If you don't like this, please remove the following lines. +syn match cDefine "^#ifdef[ ]\+[A-Za-z_]\+" +syn match cDefine "^#endif" + +" case is not significant +syn case ignore + +" VHDL keywords +syn keyword vhdlStatement access after alias all assert +syn keyword vhdlStatement architecture array attribute +syn keyword vhdlStatement begin block body buffer bus +syn keyword vhdlStatement case component configuration constant +syn keyword vhdlStatement disconnect downto +syn keyword vhdlStatement elsif end entity exit +syn keyword vhdlStatement file for function +syn keyword vhdlStatement generate generic group guarded +syn keyword vhdlStatement impure in inertial inout is +syn keyword vhdlStatement label library linkage literal loop +syn keyword vhdlStatement map +syn keyword vhdlStatement new next null +syn keyword vhdlStatement of on open others out +syn keyword vhdlStatement package port postponed procedure process pure +syn keyword vhdlStatement range record register reject report return +syn keyword vhdlStatement select severity signal shared +syn keyword vhdlStatement subtype +syn keyword vhdlStatement then to transport type +syn keyword vhdlStatement unaffected units until use +syn keyword vhdlStatement variable wait when while with +syn keyword vhdlStatement note warning error failure + +" Special match for "if" and "else" since "else if" shouldn't be highlighted. +" The right keyword is "elsif" +syn match vhdlStatement "\<\(if\|else\)\>" +syn match vhdlNone "\$" +syn match vhdlNone "\\s" + +" Predefined VHDL types +syn keyword vhdlType bit bit_vector +syn keyword vhdlType character boolean integer real time +syn keyword vhdlType string severity_level +" Predefined standard ieee VHDL types +syn keyword vhdlType positive natural signed unsigned +syn keyword vhdlType line text +syn keyword vhdlType std_logic std_logic_vector +syn keyword vhdlType std_ulogic std_ulogic_vector +" Predefined non standard VHDL types for Mentor Graphics Sys1076/QuickHDL +syn keyword vhdlType qsim_state qsim_state_vector +syn keyword vhdlType qsim_12state qsim_12state_vector +syn keyword vhdlType qsim_strength +" Predefined non standard VHDL types for Alliance VLSI CAD +syn keyword vhdlType mux_bit mux_vector reg_bit reg_vector wor_bit wor_vector + +" array attributes +syn match vhdlAttribute "\'high" +syn match vhdlAttribute "\'left" +syn match vhdlAttribute "\'length" +syn match vhdlAttribute "\'low" +syn match vhdlAttribute "\'range" +syn match vhdlAttribute "\'reverse_range" +syn match vhdlAttribute "\'right" +syn match vhdlAttribute "\'ascending" +" block attributes +syn match vhdlAttribute "\'behaviour" +syn match vhdlAttribute "\'structure" +syn match vhdlAttribute "\'simple_name" +syn match vhdlAttribute "\'instance_name" +syn match vhdlAttribute "\'path_name" +syn match vhdlAttribute "\'foreign" +" signal attribute +syn match vhdlAttribute "\'active" +syn match vhdlAttribute "\'delayed" +syn match vhdlAttribute "\'event" +syn match vhdlAttribute "\'last_active" +syn match vhdlAttribute "\'last_event" +syn match vhdlAttribute "\'last_value" +syn match vhdlAttribute "\'quiet" +syn match vhdlAttribute "\'stable" +syn match vhdlAttribute "\'transaction" +syn match vhdlAttribute "\'driving" +syn match vhdlAttribute "\'driving_value" +" type attributes +syn match vhdlAttribute "\'base" +syn match vhdlAttribute "\'high" +syn match vhdlAttribute "\'left" +syn match vhdlAttribute "\'leftof" +syn match vhdlAttribute "\'low" +syn match vhdlAttribute "\'pos" +syn match vhdlAttribute "\'pred" +syn match vhdlAttribute "\'rightof" +syn match vhdlAttribute "\'succ" +syn match vhdlAttribute "\'val" +syn match vhdlAttribute "\'image" +syn match vhdlAttribute "\'value" + +syn keyword vhdlBoolean true false + +" for this vector values case is significant +syn case match +" Values for standard VHDL types +syn match vhdlVector "\'[0L1HXWZU\-\?]\'" +" Values for non standard VHDL types qsim_12state for Mentor Graphics Sys1076/QuickHDL +syn keyword vhdlVector S0S S1S SXS S0R S1R SXR S0Z S1Z SXZ S0I S1I SXI +syn case ignore + +syn match vhdlVector "B\"[01_]\+\"" +syn match vhdlVector "O\"[0-7_]\+\"" +syn match vhdlVector "X\"[0-9a-f_]\+\"" +syn match vhdlCharacter "'.'" +syn region vhdlString start=+"+ end=+"+ contains=@Spell + +" floating numbers +syn match vhdlNumber "-\=\<\d\+\.\d\+\(E[+\-]\=\d\+\)\>" +syn match vhdlNumber "-\=\<\d\+\.\d\+\>" +syn match vhdlNumber "0*2#[01_]\+\.[01_]\+#\(E[+\-]\=\d\+\)\=" +syn match vhdlNumber "0*16#[0-9a-f_]\+\.[0-9a-f_]\+#\(E[+\-]\=\d\+\)\=" +" integer numbers +syn match vhdlNumber "-\=\<\d\+\(E[+\-]\=\d\+\)\>" +syn match vhdlNumber "-\=\<\d\+\>" +syn match vhdlNumber "0*2#[01_]\+#\(E[+\-]\=\d\+\)\=" +syn match vhdlNumber "0*16#[0-9a-f_]\+#\(E[+\-]\=\d\+\)\=" +" operators +syn keyword vhdlOperator and nand or nor xor xnor +syn keyword vhdlOperator rol ror sla sll sra srl +syn keyword vhdlOperator mod rem abs not +syn match vhdlOperator "[&><=:+\-*\/|]" +syn match vhdlSpecial "[().,;]" +" time +syn match vhdlTime "\<\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>" +syn match vhdlTime "\<\d\+\.\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>" + +syn match vhdlComment "--.*$" contains=@Spell +" syn match vhdlGlobal "[\'$#~!%@?\^\[\]{}\\]" + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_vhdl_syntax_inits") + if version < 508 + let did_vhdl_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink cDefine PreProc + HiLink vhdlSpecial Special + HiLink vhdlStatement Statement + HiLink vhdlCharacter String + HiLink vhdlString String + HiLink vhdlVector String + HiLink vhdlBoolean String + HiLink vhdlComment Comment + HiLink vhdlNumber String + HiLink vhdlTime String + HiLink vhdlType Type + HiLink vhdlOperator Type + HiLink vhdlGlobal Error + HiLink vhdlAttribute Type + + delcommand HiLink +endif + +let b:current_syntax = "vhdl" + +let &cpo = s:cpo_save +unlet s:cpo_save +" vim: ts=8 diff --git a/share/vim/vim74/syntax/vim.vim b/share/vim/vim74/syntax/vim.vim new file mode 100644 index 00000000..b3914e7f --- /dev/null +++ b/share/vim/vim74/syntax/vim.vim @@ -0,0 +1,922 @@ +" Vim syntax file +" Language: Vim 7.3 script +" Maintainer: Dr. Charles E. Campbell, Jr. +" Last Change: Jul 05, 2013 +" Version: 7.3-26 +" Automatically generated keyword lists: {{{1 + +" Quit when a syntax file was already loaded {{{2 +if exists("b:current_syntax") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" vimTodo: contains common special-notices for comments {{{2 +" Use the vimCommentGroup cluster to add your own. +syn keyword vimTodo contained COMBAK FIXME TODO XXX +syn cluster vimCommentGroup contains=vimTodo,@Spell + +" regular vim commands {{{2 +syn keyword vimCommand contained a arga[dd] ar[gs] bar bn[ext] breaka[dd] bu bw[ipeout] caddf[ile] cd cgete[xpr] checkt[ime] cmdname cnf com con[tinue] cq[uit] cw[indow] delc[ommand] diffg[et] diffpu[t] dig[raphs] dr[op] earlier el[se] endfo[r] ene[w] filename fin[d] folddoc[losed] fu[nction] gui helpg[rep] ia in j[oin] kee[pmarks] laddf[ile] lb[uffer] le[ft] lgetb[uffer] l[ist] lN lNf lo[adview] lpf[ile] luado mak[e] menut[ranslate] mks[ession] mod[e] n new noautocmd on[ly] pc[lose] popu p[rint] promptr[epl] ptn pts[elect] py[thon] quote redi[r] res[ize] ru rv[iminfo] sbf[irst] sbr[ewind] scscope sfir[st] sim[alt] sme snoreme spe spellw[rong] star st[op] sunmenu syn ta tabf[ind] tabnew tabr[ewind] tcld[o] tj[ump] tN tp[revious] tu u[ndo] unlo[ckvar] verb[ose] vim[grep] vne[w] win wn[ext] w[rite] xa[ll] XMLent xunme +syn keyword vimCommand contained ab argd[elete] argu[ment] bd[elete] bN[ext] breakd[el] buf c cal[l] ce[nter] cg[etfile] cl cn cNf comc[lear] cope[n] cr[ewind] d d[elete] diffo diffsplit di[splay] ds[earch] ec elsei[f] endfun ex files fini[sh] foldd[oopen] g gvim helpt[ags] iabc[lear] index ju[mps] l lan lc[d] lefta[bove] lgete[xpr] ll lne lnf[ile] locale lp[revious] luafile Man mes mksp[ell] m[ove] N n[ext] noh[lsearch] o[pen] pe popu[p] P[rint] ps[earch] ptN pu[t] python3 r red[o] ret[ab] rub[y] sal[l] sbl[ast] sb[uffer] se[t] sh[ell] sl smenu snoremenu spelld[ump] sp[lit] start stopi[nsert] sus[pend] sync tab tabfir[st] tabn[ext] tabs tclf[ile] tl[ast] tn[ext] tr tu[nmenu] undoj[oin] uns[ilent] ve[rsion] vimgrepa[dd] vs[plit] winc[md] wN[ext] ws[verb] x[it] XMLns xunmenu +syn keyword vimCommand contained abc[lear] argdo as[cii] bel[owright] bo[tright] breakl[ist] bufdo cabc[lear] cat[ch] cex[pr] c[hange] cla[st] cN cnf[ile] comment co[py] cs de delf diffoff difft dj[ump] dsp[lit] echoe[rr] em[enu] endf[unction] exi[t] filet fir[st] foldo[pen] get h hi if intro k la lan[guage] lch[dir] let@ lg[etfile] lla[st] lnew[er] lNf[ile] loc[kmarks] lr[ewind] lv[imgrep] ma[rk] messages mkv mv nbc[lose] N[ext] nu[mber] opt[ions] ped[it] pp[op] pro pta[g] ptn[ext] pw[d] q re redr[aw] retu[rn] rubyd[o] san[dbox] sbm[odified] scrip setf[iletype] si sla[st] sn[ext] s@\n@\=\r" spe[llgood] spr[evious] startg[replace] sts[elect] sv[iew] syncbind tabc[lose] tabl[ast] tabN[ext] ta[g] te[aroff] tm tN[ext] tr[ewind] u undol[ist] up[date] vert[ical] vi[sual] w windo wp[revious] wundo xmapc[lear] xnoreme xwininfo +syn keyword vimCommand contained abo[veleft] arge[dit] au bf[irst] bp[revious] br[ewind] b[uffer] cad cb[uffer] cf[ile] changes cl[ist] cnew[er] cNf[ile] comp[iler] count cscope debug delf[unction] DiffOrig diffthis dl[ist] dwim echom[sg] emenu* en[dif] exu[sage] filetype fix[del] for go[to] ha[rdcopy] hid[e] ij[ump] is[earch] keepa lad la[st] lcl[ose] lex[pr] lgr[ep] lli[st] lne[xt] lo lockv[ar] ls lvimgrepa[dd] marks mk mkvie[w] mz nb[key] nkf o ownsyntax pe[rl] pr profd[el] ptf[irst] ptN[ext] py qa[ll] r[ead] redraws[tatus] rew[ind] rubyf[ile] sa[rgument] sbn[ext] scripte[ncoding] setg[lobal] sig sl[eep] sN[ext] so spelli[nfo] sre[wind] star[tinsert] sun[hide] sw[apname] synlist tabd[o] tabm[ove] tabo[nly] tags tf[irst] tm[enu] TOhtml try un unh[ide] v vi viu[sage] wa[ll] winp[os] wq wv[iminfo] xme xnoremenu y[ank] +syn keyword vimCommand contained al[l] argg[lobal] bad[d] bl[ast] br bro[wse] buffers caddb[uffer] cc cfir[st] chd[ir] clo[se] cn[ext] col[der] con cpf[ile] cstag debugg[reedy] delm[arks] diffp diffu[pdate] do e echon en endt[ry] f fin fo[ld] fu gr[ep] h[elp] his[tory] il[ist] isp[lit] keepalt laddb[uffer] lat lcs lf[ile] lgrepa[dd] lmak[e] lN[ext] loadk lol[der] lt[ag] lw[indow] mat[ch] mkdir mkv[imrc] mzf[ile] nbs[tart] nmapc[lear] ol[dfiles] p perld[o] pre[serve] prof[ile] ptj[ump] ptp[revious] py3 q[uit] rec[over] reg[isters] ri[ght] rundo sav[eas] sbN[ext] scrip[tnames] setl[ocal] sign sm[agic] sni[ff] sor[t] spellr[epall] st startr[eplace] sunme sy t tabe[dit] tabN tabp[revious] tc[l] th[row] tn to[pleft] ts[elect] una[bbreviate] unl ve vie[w] vmapc[lear] wh[ile] win[size] wqa[ll] x xmenu xterm errormsg +syn keyword vimCommand contained ar argl[ocal] ba[ll] bm[odified] brea[k] browseset bun[load] cad[dexpr] ccl[ose] cgetb[uffer] che[ckpath] cmapc[lear] cN[ext] colo[rscheme] conf[irm] cp[revious] cuna[bbrev] del di diffpatch dig doau ea e[dit] endf endw[hile] f[ile] fina[lly] foldc[lose] fun grepa[dd] helpf[ind] i imapc[lear] iuna[bbrev] keepj[umps] lad[dexpr] later lcscope lfir[st] lh[elpgrep] lmapc[lear] lnf loadkeymap lop[en] lua ma menut mk[exrc] mo mz[scheme] ne noa omapc[lear] P po[p] prev[ious] promptf[ind] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red Ren rightb[elow] ru[ntime] sba[ll] sbp[revious] scs sf[ind] sil[ent] sm[ap] sno[magic] so[urce] spellu[ndo] sta[g] stj[ump] +syn match vimCommand contained "\
'^ + are used to follow the directory changes during the make process, + providing in the part, a relative (if possible) directory + path to the erroneous file. + + +1) GCC: + Recognized lines are of the format: + - ^In file included from ::^ + Line following this one is used as + is always 'e' (error) + is always '0' + + - ^::^ + is always 'e' (error) + is always '0' + + +2) AIX: + Recognized lines are of the format: + - ^"", line .: <> () ", + + +3) HPUX: + Recognized lines are of the format: + - ^cc: "", line : : ^ + is always '0' + + +4) SOLARIS: + Recognized lines are of the format: + - ^"", line : warning: ^ + This assumes is "W" + is always '0' + + - ^"", line : ^ + This assumes is "E" + is always '0' + + +5) ATT / NCR: + Recognized lines are of the format: + - ^ "",L/C<>:^ + or + - ^ "",L/C:^ + Following lines beginning with a pipe (|) are continuation + lines, and are therefore appended to the + + - ^ "",L:^ + is '0' + Following lines beginning with a pipe (|) are continuation + lines, and are therefore appended to the + + +6) SGI-IRIX: + Recognized lines are of the format: + - ^cfe: : : : ^ + or + ^cfe: : , line : ^ + Following lines beginning with a dash (-) are "column-bar" + that end with a caret in the column of the error. These lines + are analyzed to generate the . diff --git a/share/vim/vim73/tools/efm_filter.pl b/share/vim/vim74/tools/efm_filter.pl similarity index 100% rename from share/vim/vim73/tools/efm_filter.pl rename to share/vim/vim74/tools/efm_filter.pl diff --git a/share/vim/vim73/tools/efm_filter.txt b/share/vim/vim74/tools/efm_filter.txt similarity index 100% rename from share/vim/vim73/tools/efm_filter.txt rename to share/vim/vim74/tools/efm_filter.txt diff --git a/share/vim/vim74/tools/efm_perl.pl b/share/vim/vim74/tools/efm_perl.pl new file mode 100644 index 00000000..1aab2d4e --- /dev/null +++ b/share/vim/vim74/tools/efm_perl.pl @@ -0,0 +1,153 @@ +#!/usr/bin/perl -w + +# vimparse.pl - Reformats the error messages of the Perl interpreter for use +# with the quickfix mode of Vim +# +# Copyright (c) 2001 by Joerg Ziefle +# You may use and distribute this software under the same terms as Perl itself. +# +# Usage: put one of the two configurations below in your ~/.vimrc (without the +# description and '# ') and enjoy (be sure to adjust the paths to vimparse.pl +# before): +# +# Program is run interactively with 'perl -w': +# +# set makeprg=$HOME/bin/vimparse.pl\ %\ $* +# set errorformat=%f:%l:%m +# +# Program is only compiled with 'perl -wc': +# +# set makeprg=$HOME/bin/vimparse.pl\ -c\ %\ $* +# set errorformat=%f:%l:%m +# +# Usage: +# vimparse.pl [-c] [-f ] [programargs] +# +# -c compile only, don't run (perl -wc) +# -f write errors to +# +# Example usages: +# * From the command line: +# vimparse.pl program.pl +# +# vimparse.pl -c -f errorfile program.pl +# Then run vim -q errorfile to edit the errors with Vim. +# +# * From Vim: +# Edit in Vim (and save, if you don't have autowrite on), then +# type ':mak' or ':mak args' (args being the program arguments) +# to error check. +# +# Version history: +# 0.2 (04/12/2001): +# * First public version (sent to Bram) +# * -c command line option for compiling only +# * grammatical fix: 'There was 1 error.' +# * bug fix for multiple arguments +# * more error checks +# * documentation (top of file, &usage) +# * minor code clean ups +# 0.1 (02/02/2001): +# * Initial version +# * Basic functionality +# +# Todo: +# * test on more systems +# * use portable way to determine the location of perl ('use Config') +# * include option that shows perldiag messages for each error +# * allow to pass in program by STDIN +# * more intuitive behaviour if no error is found (show message) +# +# Tested under SunOS 5.7 with Perl 5.6.0. Let me know if it's not working for +# you. + +use strict; +use Getopt::Std; + +use vars qw/$opt_c $opt_f $opt_h/; # needed for Getopt in combination with use strict 'vars' + +use constant VERSION => 0.2; + +getopts('cf:h'); + +&usage if $opt_h; # not necessarily needed, but good for further extension + +if (defined $opt_f) { + + open FILE, "> $opt_f" or do { + warn "Couldn't open $opt_f: $!. Using STDOUT instead.\n"; + undef $opt_f; + }; + +}; + +my $handle = (defined $opt_f ? \*FILE : \*STDOUT); + +(my $file = shift) or &usage; # display usage if no filename is supplied +my $args = (@ARGV ? ' ' . join ' ', @ARGV : ''); + +my @lines = `perl @{[defined $opt_c ? '-c ' : '' ]} -w "$file$args" 2>&1`; + +my $errors = 0; +foreach my $line (@lines) { + + chomp($line); + my ($file, $lineno, $message, $rest); + + if ($line =~ /^(.*)\sat\s(.*)\sline\s(\d+)(\.|,\snear\s\".*\")$/) { + + ($message, $file, $lineno, $rest) = ($1, $2, $3, $4); + $errors++; + $message .= $rest if ($rest =~ s/^,//); + print $handle "$file:$lineno:$message\n"; + + } else { next }; + +} + +if (defined $opt_f) { + + my $msg; + if ($errors == 1) { + + $msg = "There was 1 error.\n"; + + } else { + + $msg = "There were $errors errors.\n"; + + }; + + print STDOUT $msg; + close FILE; + unlink $opt_f unless $errors; + +}; + +sub usage { + + (local $0 = $0) =~ s/^.*\/([^\/]+)$/$1/; # remove path from name of program + print<] [programargs] + + -c compile only, don't run (executes 'perl -wc') + -f write errors to + +Examples: + * At the command line: + $0 program.pl + Displays output on STDOUT. + + $0 -c -f errorfile program.pl + Then run 'vim -q errorfile' to edit the errors with Vim. + + * In Vim: + Edit in Vim (and save, if you don't have autowrite on), then + type ':mak' or ':mak args' (args being the program arguments) + to error check. +EOT + + exit 0; + +}; diff --git a/share/vim/vim73/tools/mve.awk b/share/vim/vim74/tools/mve.awk similarity index 100% rename from share/vim/vim73/tools/mve.awk rename to share/vim/vim74/tools/mve.awk diff --git a/share/vim/vim73/tools/mve.txt b/share/vim/vim74/tools/mve.txt similarity index 100% rename from share/vim/vim73/tools/mve.txt rename to share/vim/vim74/tools/mve.txt diff --git a/share/vim/vim73/tools/pltags.pl b/share/vim/vim74/tools/pltags.pl similarity index 100% rename from share/vim/vim73/tools/pltags.pl rename to share/vim/vim74/tools/pltags.pl diff --git a/share/vim/vim73/tools/ref b/share/vim/vim74/tools/ref similarity index 100% rename from share/vim/vim73/tools/ref rename to share/vim/vim74/tools/ref diff --git a/share/vim/vim73/tools/shtags.1 b/share/vim/vim74/tools/shtags.1 similarity index 100% rename from share/vim/vim73/tools/shtags.1 rename to share/vim/vim74/tools/shtags.1 diff --git a/share/vim/vim73/tools/shtags.pl b/share/vim/vim74/tools/shtags.pl similarity index 100% rename from share/vim/vim73/tools/shtags.pl rename to share/vim/vim74/tools/shtags.pl diff --git a/share/vim/vim73/tools/unicode.vim b/share/vim/vim74/tools/unicode.vim similarity index 100% rename from share/vim/vim73/tools/unicode.vim rename to share/vim/vim74/tools/unicode.vim diff --git a/share/vim/vim73/tools/vim132 b/share/vim/vim74/tools/vim132 similarity index 100% rename from share/vim/vim73/tools/vim132 rename to share/vim/vim74/tools/vim132 diff --git a/share/vim/vim74/tools/vim_vs_net.cmd b/share/vim/vim74/tools/vim_vs_net.cmd new file mode 100644 index 00000000..bea6353f --- /dev/null +++ b/share/vim/vim74/tools/vim_vs_net.cmd @@ -0,0 +1,24 @@ +@rem +@rem To use this with Visual Studio .Net +@rem Tools->External Tools... +@rem Add +@rem Title - Vim +@rem Command - d:\files\util\vim_vs_net.cmd +@rem Arguments - +$(CurLine) $(ItemPath) +@rem Init Dir - Empty +@rem +@rem Courtesy of Brian Sturk +@rem +@rem --remote-silent +%1 is a command +954, move ahead 954 lines +@rem --remote-silent %2 full path to file +@rem In Vim +@rem :h --remote-silent for more details +@rem +@rem --servername VS_NET +@rem This will create a new instance of vim called VS_NET. So if you +open +@rem multiple files from VS, they will use the same instance of Vim. +@rem This allows you to have multiple copies of Vim running, but you can +@rem control which one has VS files in it. +@rem +start /b gvim.exe --servername VS_NET --remote-silent "%1" "%2" diff --git a/share/vim/vim73/tools/vimm b/share/vim/vim74/tools/vimm similarity index 100% rename from share/vim/vim73/tools/vimm rename to share/vim/vim74/tools/vimm diff --git a/share/vim/vim73/tools/vimspell.sh b/share/vim/vim74/tools/vimspell.sh similarity index 100% rename from share/vim/vim73/tools/vimspell.sh rename to share/vim/vim74/tools/vimspell.sh diff --git a/share/vim/vim73/tools/vimspell.txt b/share/vim/vim74/tools/vimspell.txt similarity index 100% rename from share/vim/vim73/tools/vimspell.txt rename to share/vim/vim74/tools/vimspell.txt diff --git a/share/vim/vim73/tools/xcmdsrv_client.c b/share/vim/vim74/tools/xcmdsrv_client.c similarity index 100% rename from share/vim/vim73/tools/xcmdsrv_client.c rename to share/vim/vim74/tools/xcmdsrv_client.c diff --git a/share/vim/vim73/tutor.info b/share/vim/vim74/tutor.info similarity index 100% rename from share/vim/vim73/tutor.info rename to share/vim/vim74/tutor.info diff --git a/share/vim/vim74/tutor/Makefile b/share/vim/vim74/tutor/Makefile new file mode 100644 index 00000000..35fe8216 --- /dev/null +++ b/share/vim/vim74/tutor/Makefile @@ -0,0 +1,100 @@ +# Makefile for the Vim tutor. +# +# The Japanese tutor exists in three encodings. Use the UTF-8 version as the +# original and create the others with conversion. +# +# Similarly for Russian and Korean + +all: tutor.utf-8 \ + tutor.bar \ + tutor.ca.utf-8 \ + tutor.de.utf-8 \ + tutor.el tutor.el.cp737 \ + tutor.eo \ + tutor.es.utf-8 \ + tutor.fr.utf-8 \ + tutor.hr tutor.hr.cp1250 \ + tutor.hu tutor.hu.cp1250 \ + tutor.it.utf-8 \ + tutor.ja.sjis tutor.ja.euc \ + tutor.ko.euc \ + tutor.nl \ + tutor.no.utf-8 \ + tutor.nb \ + tutor.nb.utf-8 \ + tutor.ru tutor.ru.cp1251 \ + tutor.sv.utf-8 \ + tutor.zh.utf-8 + +tutor.utf-8: tutor + iconv -f ISO-8859-1 -t UTF-8 tutor > tutor.utf-8 + +tutor.bar: tutor.bar.utf-8 + iconv -f UTF-8 -t ISO-8859-1 tutor.bar.utf-8 > tutor.bar + +tutor.ca.utf-8: tutor.ca + iconv -f ISO-8859-1 -t UTF-8 tutor.ca > tutor.ca.utf-8 + +tutor.eo: tutor.eo.utf-8 + iconv -f UTF-8 -t ISO-8859-3 tutor.eo.utf-8 > tutor.eo + +tutor.de.utf-8: tutor.de + iconv -f ISO-8859-1 -t UTF-8 tutor.de > tutor.de.utf-8 + +tutor.el: tutor.el.utf-8 + iconv -f UTF-8 -t ISO-8859-7 tutor.el.utf-8 > tutor.el + +tutor.el.cp737: tutor.el.utf-8 + iconv -f UTF-8 -t cp737 tutor.el.utf-8 > tutor.el.cp737 + +tutor.es.utf-8: tutor.es + iconv -f ISO-8859-1 -t UTF-8 tutor.es > tutor.es.utf-8 + +tutor.fr.utf-8: tutor.fr + iconv -f ISO-8859-1 -t UTF-8 tutor.fr > tutor.fr.utf-8 + +tutor.hu: tutor.hu.utf-8 + iconv -f UTF-8 -t ISO-8859-2 tutor.hu.utf-8 > tutor.hu + +tutor.hu.cp1250: tutor.hu.utf-8 + iconv -f UTF-8 -t cp1250 tutor.hu.utf-8 > tutor.hu.cp1250 + +tutor.hr: tutor.hr.utf-8 + iconv -f UTF-8 -t ISO-8859-2 tutor.hr.utf-8 > tutor.hr + +tutor.hr.cp1250: tutor.hr.utf-8 + iconv -f UTF-8 -t cp1250 tutor.hr.utf-8 > tutor.hr.cp1250 + +tutor.ja.sjis: tutor.ja.utf-8 + nkf -WXs tutor.ja.utf-8 > tutor.ja.sjis + +tutor.ja.euc: tutor.ja.utf-8 + nkf -WXe tutor.ja.utf-8 > tutor.ja.euc + +tutor.ko.euc: tutor.ko.utf-8 + iconv -f UTF-8 -t EUC-KR tutor.ko.utf-8 > tutor.ko.euc + +tutor.nl: tutor.nl.utf-8 + iconv -f UTF-8 -t ISO-8859-1 tutor.nl.utf-8 > tutor.nl + +tutor.no.utf-8: tutor.no + iconv -f ISO-8859-1 -t UTF-8 tutor.no > tutor.no.utf-8 + +# nb is an alias for no +tutor.nb: tutor.no + cp tutor.no tutor.nb + +tutor.nb.utf-8: tutor.no.utf-8 + cp tutor.no.utf-8 tutor.nb.utf-8 + +tutor.ru: tutor.ru.utf-8 + iconv -f UTF-8 -t KOI8-R tutor.ru.utf-8 > tutor.ru + +tutor.ru.cp1251: tutor.ru.utf-8 + iconv -f UTF-8 -t cp1251 tutor.ru.utf-8 > tutor.ru.cp1251 + +tutor.sv.utf-8: tutor.sv + iconv -f ISO-8859-1 -t UTF-8 tutor.sv > tutor.sv.utf-8 + +tutor.zh.utf-8: tutor.zh.big5 + iconv -f BIG-5 -t UTF-8 tutor.zh.big5 > tutor.zh.utf-8 diff --git a/share/vim/vim73/tutor/README.el.cp737.txt b/share/vim/vim74/tutor/README.el.cp737.txt similarity index 100% rename from share/vim/vim73/tutor/README.el.cp737.txt rename to share/vim/vim74/tutor/README.el.cp737.txt diff --git a/share/vim/vim73/tutor/README.el.txt b/share/vim/vim74/tutor/README.el.txt similarity index 100% rename from share/vim/vim73/tutor/README.el.txt rename to share/vim/vim74/tutor/README.el.txt diff --git a/share/vim/vim73/tutor/README.txt b/share/vim/vim74/tutor/README.txt similarity index 100% rename from share/vim/vim73/tutor/README.txt rename to share/vim/vim74/tutor/README.txt diff --git a/share/vim/vim73/tutor/README.txt.info b/share/vim/vim74/tutor/README.txt.info similarity index 100% rename from share/vim/vim73/tutor/README.txt.info rename to share/vim/vim74/tutor/README.txt.info diff --git a/share/vim/vim74/tutor/tutor b/share/vim/vim74/tutor/tutor new file mode 100644 index 00000000..da28a153 --- /dev/null +++ b/share/vim/vim74/tutor/tutor @@ -0,0 +1,970 @@ +=============================================================================== += W e l c o m e t o t h e V I M T u t o r - Version 1.7 = +=============================================================================== + + Vim is a very powerful editor that has many commands, too many to + explain in a tutor such as this. This tutor is designed to describe + enough of the commands that you will be able to easily use Vim as + an all-purpose editor. + + The approximate time required to complete the tutor is 25-30 minutes, + depending upon how much time is spent with experimentation. + + ATTENTION: + The commands in the lessons will modify the text. Make a copy of this + file to practise on (if you started "vimtutor" this is already a copy). + + It is important to remember that this tutor is set up to teach by + use. That means that you need to execute the commands to learn them + properly. If you only read the text, you will forget the commands! + + Now, make sure that your Shift-Lock key is NOT depressed and press + the j key enough times to move the cursor so that Lesson 1.1 + completely fills the screen. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.1: MOVING THE CURSOR + + + ** To move the cursor, press the h,j,k,l keys as indicated. ** + ^ + k Hint: The h key is at the left and moves left. + < h l > The l key is at the right and moves right. + j The j key looks like a down arrow. + v + 1. Move the cursor around the screen until you are comfortable. + + 2. Hold down the down key (j) until it repeats. + Now you know how to move to the next lesson. + + 3. Using the down key, move to Lesson 1.2. + +NOTE: If you are ever unsure about something you typed, press to place + you in Normal mode. Then retype the command you wanted. + +NOTE: The cursor keys should also work. But using hjkl you will be able to + move around much faster, once you get used to it. Really! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.2: EXITING VIM + + + !! NOTE: Before executing any of the steps below, read this entire lesson!! + + 1. Press the key (to make sure you are in Normal mode). + + 2. Type: :q! . + This exits the editor, DISCARDING any changes you have made. + + 3. When you see the shell prompt, type the command that got you into this + tutor. That would be: vimtutor + + 4. If you have these steps memorized and are confident, execute steps + 1 through 3 to exit and re-enter the editor. + +NOTE: :q! discards any changes you made. In a few lessons you + will learn how to save the changes to a file. + + 5. Move the cursor down to Lesson 1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.3: TEXT EDITING - DELETION + + + ** Press x to delete the character under the cursor. ** + + 1. Move the cursor to the line below marked --->. + + 2. To fix the errors, move the cursor until it is on top of the + character to be deleted. + + 3. Press the x key to delete the unwanted character. + + 4. Repeat steps 2 through 4 until the sentence is correct. + +---> The ccow jumpedd ovverr thhe mooon. + + 5. Now that the line is correct, go on to Lesson 1.4. + +NOTE: As you go through this tutor, do not try to memorize, learn by usage. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.4: TEXT EDITING - INSERTION + + + ** Press i to insert text. ** + + 1. Move the cursor to the first line below marked --->. + + 2. To make the first line the same as the second, move the cursor on top + of the first character AFTER where the text is to be inserted. + + 3. Press i and type in the necessary additions. + + 4. As each error is fixed press to return to Normal mode. + Repeat steps 2 through 4 to correct the sentence. + +---> There is text misng this . +---> There is some text missing from this line. + + 5. When you are comfortable inserting text move to lesson 1.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.5: TEXT EDITING - APPENDING + + + ** Press A to append text. ** + + 1. Move the cursor to the first line below marked --->. + It does not matter on what character the cursor is in that line. + + 2. Press A and type in the necessary additions. + + 3. As the text has been appended press to return to Normal mode. + + 4. Move the cursor to the second line marked ---> and repeat + steps 2 and 3 to correct this sentence. + +---> There is some text missing from th + There is some text missing from this line. +---> There is also some text miss + There is also some text missing here. + + 5. When you are comfortable appending text move to lesson 1.6. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.6: EDITING A FILE + + ** Use :wq to save a file and exit. ** + + !! NOTE: Before executing any of the steps below, read this entire lesson!! + + 1. Exit this tutor as you did in lesson 1.2: :q! + Or, if you have access to another terminal, do the following there. + + 2. At the shell prompt type this command: vim tutor + 'vim' is the command to start the Vim editor, 'tutor' is the name of the + file you wish to edit. Use a file that may be changed. + + 3. Insert and delete text as you learned in the previous lessons. + + 4. Save the file with changes and exit Vim with: :wq + + 5. If you have quit vimtutor in step 1 restart the vimtutor and move down to + the following summary. + + 6. After reading the above steps and understanding them: do it. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1 SUMMARY + + + 1. The cursor is moved using either the arrow keys or the hjkl keys. + h (left) j (down) k (up) l (right) + + 2. To start Vim from the shell prompt type: vim FILENAME + + 3. To exit Vim type: :q! to trash all changes. + OR type: :wq to save the changes. + + 4. To delete the character at the cursor type: x + + 5. To insert or append text type: + i type inserted text insert before the cursor + A type appended text append after the line + +NOTE: Pressing will place you in Normal mode or will cancel + an unwanted and partially completed command. + +Now continue with Lesson 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.1: DELETION COMMANDS + + + ** Type dw to delete a word. ** + + 1. Press to make sure you are in Normal mode. + + 2. Move the cursor to the line below marked --->. + + 3. Move the cursor to the beginning of a word that needs to be deleted. + + 4. Type dw to make the word disappear. + + NOTE: The letter d will appear on the last line of the screen as you type + it. Vim is waiting for you to type w . If you see another character + than d you typed something wrong; press and start over. + +---> There are a some words fun that don't belong paper in this sentence. + + 5. Repeat steps 3 and 4 until the sentence is correct and go to Lesson 2.2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.2: MORE DELETION COMMANDS + + + ** Type d$ to delete to the end of the line. ** + + 1. Press to make sure you are in Normal mode. + + 2. Move the cursor to the line below marked --->. + + 3. Move the cursor to the end of the correct line (AFTER the first . ). + + 4. Type d$ to delete to the end of the line. + +---> Somebody typed the end of this line twice. end of this line twice. + + + 5. Move on to Lesson 2.3 to understand what is happening. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.3: ON OPERATORS AND MOTIONS + + + Many commands that change text are made from an operator and a motion. + The format for a delete command with the d delete operator is as follows: + + d motion + + Where: + d - is the delete operator. + motion - is what the operator will operate on (listed below). + + A short list of motions: + w - until the start of the next word, EXCLUDING its first character. + e - to the end of the current word, INCLUDING the last character. + $ - to the end of the line, INCLUDING the last character. + + Thus typing de will delete from the cursor to the end of the word. + +NOTE: Pressing just the motion while in Normal mode without an operator will + move the cursor as specified. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.4: USING A COUNT FOR A MOTION + + + ** Typing a number before a motion repeats it that many times. ** + + 1. Move the cursor to the start of the line marked ---> below. + + 2. Type 2w to move the cursor two words forward. + + 3. Type 3e to move the cursor to the end of the third word forward. + + 4. Type 0 (zero) to move to the start of the line. + + 5. Repeat steps 2 and 3 with different numbers. + +---> This is just a line with words you can move around in. + + 6. Move on to Lesson 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.5: USING A COUNT TO DELETE MORE + + + ** Typing a number with an operator repeats it that many times. ** + + In the combination of the delete operator and a motion mentioned above you + insert a count before the motion to delete more: + d number motion + + 1. Move the cursor to the first UPPER CASE word in the line marked --->. + + 2. Type d2w to delete the two UPPER CASE words + + 3. Repeat steps 1 and 2 with a different count to delete the consecutive + UPPER CASE words with one command + +---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.6: OPERATING ON LINES + + + ** Type dd to delete a whole line. ** + + Due to the frequency of whole line deletion, the designers of Vi decided + it would be easier to simply type two d's to delete a line. + + 1. Move the cursor to the second line in the phrase below. + 2. Type dd to delete the line. + 3. Now move to the fourth line. + 4. Type 2dd to delete two lines. + +---> 1) Roses are red, +---> 2) Mud is fun, +---> 3) Violets are blue, +---> 4) I have a car, +---> 5) Clocks tell time, +---> 6) Sugar is sweet +---> 7) And so are you. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.7: THE UNDO COMMAND + + + ** Press u to undo the last commands, U to fix a whole line. ** + + 1. Move the cursor to the line below marked ---> and place it on the + first error. + 2. Type x to delete the first unwanted character. + 3. Now type u to undo the last command executed. + 4. This time fix all the errors on the line using the x command. + 5. Now type a capital U to return the line to its original state. + 6. Now type u a few times to undo the U and preceding commands. + 7. Now type CTRL-R (keeping CTRL key pressed while hitting R) a few times + to redo the commands (undo the undo's). + +---> Fiix the errors oon thhis line and reeplace them witth undo. + + 8. These are very useful commands. Now move on to the Lesson 2 Summary. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2 SUMMARY + + + 1. To delete from the cursor up to the next word type: dw + 2. To delete from the cursor to the end of a line type: d$ + 3. To delete a whole line type: dd + + 4. To repeat a motion prepend it with a number: 2w + 5. The format for a change command is: + operator [number] motion + where: + operator - is what to do, such as d for delete + [number] - is an optional count to repeat the motion + motion - moves over the text to operate on, such as w (word), + $ (to the end of line), etc. + + 6. To move to the start of the line use a zero: 0 + + 7. To undo previous actions, type: u (lowercase u) + To undo all the changes on a line, type: U (capital U) + To undo the undo's, type: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.1: THE PUT COMMAND + + + ** Type p to put previously deleted text after the cursor. ** + + 1. Move the cursor to the first ---> line below. + + 2. Type dd to delete the line and store it in a Vim register. + + 3. Move the cursor to the c) line, ABOVE where the deleted line should go. + + 4. Type p to put the line below the cursor. + + 5. Repeat steps 2 through 4 to put all the lines in correct order. + +---> d) Can you learn too? +---> b) Violets are blue, +---> c) Intelligence is learned, +---> a) Roses are red, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.2: THE REPLACE COMMAND + + + ** Type rx to replace the character at the cursor with x . ** + + 1. Move the cursor to the first line below marked --->. + + 2. Move the cursor so that it is on top of the first error. + + 3. Type r and then the character which should be there. + + 4. Repeat steps 2 and 3 until the first line is equal to the second one. + +---> Whan this lime was tuoed in, someone presswd some wrojg keys! +---> When this line was typed in, someone pressed some wrong keys! + + 5. Now move on to Lesson 3.3. + +NOTE: Remember that you should be learning by doing, not memorization. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.3: THE CHANGE OPERATOR + + + ** To change until the end of a word, type ce . ** + + 1. Move the cursor to the first line below marked --->. + + 2. Place the cursor on the u in lubw. + + 3. Type ce and the correct word (in this case, type ine ). + + 4. Press and move to the next character that needs to be changed. + + 5. Repeat steps 3 and 4 until the first sentence is the same as the second. + +---> This lubw has a few wptfd that mrrf changing usf the change operator. +---> This line has a few words that need changing using the change operator. + +Notice that ce deletes the word and places you in Insert mode. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.4: MORE CHANGES USING c + + + ** The change operator is used with the same motions as delete. ** + + 1. The change operator works in the same way as delete. The format is: + + c [number] motion + + 2. The motions are the same, such as w (word) and $ (end of line). + + 3. Move to the first line below marked --->. + + 4. Move the cursor to the first error. + + 5. Type c$ and type the rest of the line like the second and press . + +---> The end of this line needs some help to make it like the second. +---> The end of this line needs to be corrected using the c$ command. + +NOTE: You can use the Backspace key to correct mistakes while typing. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3 SUMMARY + + + 1. To put back text that has just been deleted, type p . This puts the + deleted text AFTER the cursor (if a line was deleted it will go on the + line below the cursor). + + 2. To replace the character under the cursor, type r and then the + character you want to have there. + + 3. The change operator allows you to change from the cursor to where the + motion takes you. eg. Type ce to change from the cursor to the end of + the word, c$ to change to the end of a line. + + 4. The format for change is: + + c [number] motion + +Now go on to the next lesson. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.1: CURSOR LOCATION AND FILE STATUS + + ** Type CTRL-G to show your location in the file and the file status. + Type G to move to a line in the file. ** + + NOTE: Read this entire lesson before executing any of the steps!! + + 1. Hold down the Ctrl key and press g . We call this CTRL-G. + A message will appear at the bottom of the page with the filename and the + position in the file. Remember the line number for Step 3. + +NOTE: You may see the cursor position in the lower right corner of the screen + This happens when the 'ruler' option is set (see :help 'ruler' ) + + 2. Press G to move you to the bottom of the file. + Type gg to move you to the start of the file. + + 3. Type the number of the line you were on and then G . This will + return you to the line you were on when you first pressed CTRL-G. + + 4. If you feel confident to do this, execute steps 1 through 3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.2: THE SEARCH COMMAND + + + ** Type / followed by a phrase to search for the phrase. ** + + 1. In Normal mode type the / character. Notice that it and the cursor + appear at the bottom of the screen as with the : command. + + 2. Now type 'errroor' . This is the word you want to search for. + + 3. To search for the same phrase again, simply type n . + To search for the same phrase in the opposite direction, type N . + + 4. To search for a phrase in the backward direction, use ? instead of / . + + 5. To go back to where you came from press CTRL-O (Keep Ctrl down while + pressing the letter o). Repeat to go back further. CTRL-I goes forward. + +---> "errroor" is not the way to spell error; errroor is an error. +NOTE: When the search reaches the end of the file it will continue at the + start, unless the 'wrapscan' option has been reset. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.3: MATCHING PARENTHESES SEARCH + + + ** Type % to find a matching ),], or } . ** + + 1. Place the cursor on any (, [, or { in the line below marked --->. + + 2. Now type the % character. + + 3. The cursor will move to the matching parenthesis or bracket. + + 4. Type % to move the cursor to the other matching bracket. + + 5. Move the cursor to another (,),[,],{ or } and see what % does. + +---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + + +NOTE: This is very useful in debugging a program with unmatched parentheses! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.4: THE SUBSTITUTE COMMAND + + + ** Type :s/old/new/g to substitute 'new' for 'old'. ** + + 1. Move the cursor to the line below marked --->. + + 2. Type :s/thee/the . Note that this command only changes the + first occurrence of "thee" in the line. + + 3. Now type :s/thee/the/g . Adding the g flag means to substitute + globally in the line, change all occurrences of "thee" in the line. + +---> thee best time to see thee flowers is in thee spring. + + 4. To change every occurrence of a character string between two lines, + type :#,#s/old/new/g where #,# are the line numbers of the range + of lines where the substitution is to be done. + Type :%s/old/new/g to change every occurrence in the whole file. + Type :%s/old/new/gc to find every occurrence in the whole file, + with a prompt whether to substitute or not. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4 SUMMARY + + + 1. CTRL-G displays your location in the file and the file status. + G moves to the end of the file. + number G moves to that line number. + gg moves to the first line. + + 2. Typing / followed by a phrase searches FORWARD for the phrase. + Typing ? followed by a phrase searches BACKWARD for the phrase. + After a search type n to find the next occurrence in the same direction + or N to search in the opposite direction. + CTRL-O takes you back to older positions, CTRL-I to newer positions. + + 3. Typing % while the cursor is on a (,),[,],{, or } goes to its match. + + 4. To substitute new for the first old in a line type :s/old/new + To substitute new for all 'old's on a line type :s/old/new/g + To substitute phrases between two line #'s type :#,#s/old/new/g + To substitute all occurrences in the file type :%s/old/new/g + To ask for confirmation each time add 'c' :%s/old/new/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.1: HOW TO EXECUTE AN EXTERNAL COMMAND + + + ** Type :! followed by an external command to execute that command. ** + + 1. Type the familiar command : to set the cursor at the bottom of the + screen. This allows you to enter a command-line command. + + 2. Now type the ! (exclamation point) character. This allows you to + execute any external shell command. + + 3. As an example type ls following the ! and then hit . This + will show you a listing of your directory, just as if you were at the + shell prompt. Or use :!dir if ls doesn't work. + +NOTE: It is possible to execute any external command this way, also with + arguments. + +NOTE: All : commands must be finished by hitting + From here on we will not always mention it. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.2: MORE ON WRITING FILES + + + ** To save the changes made to the text, type :w FILENAME. ** + + 1. Type :!dir or :!ls to get a listing of your directory. + You already know you must hit after this. + + 2. Choose a filename that does not exist yet, such as TEST. + + 3. Now type: :w TEST (where TEST is the filename you chose.) + + 4. This saves the whole file (the Vim Tutor) under the name TEST. + To verify this, type :!dir or :!ls again to see your directory. + +NOTE: If you were to exit Vim and start it again with vim TEST , the file + would be an exact copy of the tutor when you saved it. + + 5. Now remove the file by typing (MS-DOS): :!del TEST + or (Unix): :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.3: SELECTING TEXT TO WRITE + + + ** To save part of the file, type v motion :w FILENAME ** + + 1. Move the cursor to this line. + + 2. Press v and move the cursor to the fifth item below. Notice that the + text is highlighted. + + 3. Press the : character. At the bottom of the screen :'<,'> will appear. + + 4. Type w TEST , where TEST is a filename that does not exist yet. Verify + that you see :'<,'>w TEST before you press . + + 5. Vim will write the selected lines to the file TEST. Use :!dir or :!ls + to see it. Do not remove it yet! We will use it in the next lesson. + +NOTE: Pressing v starts Visual selection. You can move the cursor around + to make the selection bigger or smaller. Then you can use an operator + to do something with the text. For example, d deletes the text. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.4: RETRIEVING AND MERGING FILES + + + ** To insert the contents of a file, type :r FILENAME ** + + 1. Place the cursor just above this line. + +NOTE: After executing Step 2 you will see text from Lesson 5.3. Then move + DOWN to see this lesson again. + + 2. Now retrieve your TEST file using the command :r TEST where TEST is + the name of the file you used. + The file you retrieve is placed below the cursor line. + + 3. To verify that a file was retrieved, cursor back and notice that there + are now two copies of Lesson 5.3, the original and the file version. + +NOTE: You can also read the output of an external command. For example, + :r !ls reads the output of the ls command and puts it below the + cursor. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5 SUMMARY + + + 1. :!command executes an external command. + + Some useful examples are: + (MS-DOS) (Unix) + :!dir :!ls - shows a directory listing. + :!del FILENAME :!rm FILENAME - removes file FILENAME. + + 2. :w FILENAME writes the current Vim file to disk with name FILENAME. + + 3. v motion :w FILENAME saves the Visually selected lines in file + FILENAME. + + 4. :r FILENAME retrieves disk file FILENAME and puts it below the + cursor position. + + 5. :r !dir reads the output of the dir command and puts it below the + cursor position. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.1: THE OPEN COMMAND + + + ** Type o to open a line below the cursor and place you in Insert mode. ** + + 1. Move the cursor to the line below marked --->. + + 2. Type the lowercase letter o to open up a line BELOW the cursor and place + you in Insert mode. + + 3. Now type some text and press to exit Insert mode. + +---> After typing o the cursor is placed on the open line in Insert mode. + + 4. To open up a line ABOVE the cursor, simply type a capital O , rather + than a lowercase o. Try this on the line below. + +---> Open up a line above this by typing O while the cursor is on this line. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.2: THE APPEND COMMAND + + + ** Type a to insert text AFTER the cursor. ** + + 1. Move the cursor to the start of the line below marked --->. + + 2. Press e until the cursor is on the end of li . + + 3. Type an a (lowercase) to append text AFTER the cursor. + + 4. Complete the word like the line below it. Press to exit Insert + mode. + + 5. Use e to move to the next incomplete word and repeat steps 3 and 4. + +---> This li will allow you to pract appendi text to a line. +---> This line will allow you to practice appending text to a line. + +NOTE: a, i and A all go to the same Insert mode, the only difference is where + the characters are inserted. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.3: ANOTHER WAY TO REPLACE + + + ** Type a capital R to replace more than one character. ** + + 1. Move the cursor to the first line below marked --->. Move the cursor to + the beginning of the first xxx . + + 2. Now press R and type the number below it in the second line, so that it + replaces the xxx . + + 3. Press to leave Replace mode. Notice that the rest of the line + remains unmodified. + + 4. Repeat the steps to replace the remaining xxx. + +---> Adding 123 to xxx gives you xxx. +---> Adding 123 to 456 gives you 579. + +NOTE: Replace mode is like Insert mode, but every typed character deletes an + existing character. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.4: COPY AND PASTE TEXT + + + ** Use the y operator to copy text and p to paste it ** + + 1. Go to the line marked with ---> below and place the cursor after "a)". + + 2. Start Visual mode with v and move the cursor to just before "first". + + 3. Type y to yank (copy) the highlighted text. + + 4. Move the cursor to the end of the next line: j$ + + 5. Type p to put (paste) the text. Then type: a second . + + 6. Use Visual mode to select " item.", yank it with y , move to the end of + the next line with j$ and put the text there with p . + +---> a) this is the first item. + b) + + NOTE: you can also use y as an operator; yw yanks one word. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.5: SET OPTION + + + ** Set an option so a search or substitute ignores case ** + + 1. Search for 'ignore' by entering: /ignore + Repeat several times by pressing n . + + 2. Set the 'ic' (Ignore case) option by entering: :set ic + + 3. Now search for 'ignore' again by pressing n + Notice that Ignore and IGNORE are now also found. + + 4. Set the 'hlsearch' and 'incsearch' options: :set hls is + + 5. Now type the search command again and see what happens: /ignore + + 6. To disable ignoring case enter: :set noic + +NOTE: To remove the highlighting of matches enter: :nohlsearch +NOTE: If you want to ignore case for just one search command, use \c + in the phrase: /ignore\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6 SUMMARY + + 1. Type o to open a line BELOW the cursor and start Insert mode. + Type O to open a line ABOVE the cursor. + + 2. Type a to insert text AFTER the cursor. + Type A to insert text after the end of the line. + + 3. The e command moves to the end of a word. + + 4. The y operator yanks (copies) text, p puts (pastes) it. + + 5. Typing a capital R enters Replace mode until is pressed. + + 6. Typing ":set xxx" sets the option "xxx". Some options are: + 'ic' 'ignorecase' ignore upper/lower case when searching + 'is' 'incsearch' show partial matches for a search phrase + 'hls' 'hlsearch' highlight all matching phrases + You can either use the long or the short option name. + + 7. Prepend "no" to switch an option off: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7.1: GETTING HELP + + + ** Use the on-line help system ** + + Vim has a comprehensive on-line help system. To get started, try one of + these three: + - press the key (if you have one) + - press the key (if you have one) + - type :help + + Read the text in the help window to find out how the help works. + Type CTRL-W CTRL-W to jump from one window to another. + Type :q to close the help window. + + You can find help on just about any subject, by giving an argument to the + ":help" command. Try these (don't forget pressing ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7.2: CREATE A STARTUP SCRIPT + + + ** Enable Vim features ** + + Vim has many more features than Vi, but most of them are disabled by + default. To start using more features you have to create a "vimrc" file. + + 1. Start editing the "vimrc" file. This depends on your system: + :e ~/.vimrc for Unix + :e $VIM/_vimrc for MS-Windows + + 2. Now read the example "vimrc" file contents: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Write the file with: + :w + + The next time you start Vim it will use syntax highlighting. + You can add all your preferred settings to this "vimrc" file. + For more information type :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7.3: COMPLETION + + + ** Command line completion with CTRL-D and ** + + 1. Make sure Vim is not in compatible mode: :set nocp + + 2. Look what files exist in the directory: :!ls or :!dir + + 3. Type the start of a command: :e + + 4. Press CTRL-D and Vim will show a list of commands that start with "e". + + 5. Press and Vim will complete the command name to ":edit". + + 6. Now add a space and the start of an existing file name: :edit FIL + + 7. Press . Vim will complete the name (if it is unique). + +NOTE: Completion works for many commands. Just try pressing CTRL-D and + . It is especially useful for :help . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7 SUMMARY + + + 1. Type :help or press or to open a help window. + + 2. Type :help cmd to find help on cmd . + + 3. Type CTRL-W CTRL-W to jump to another window + + 4. Type :q to close the help window + + 5. Create a vimrc startup script to keep your preferred settings. + + 6. When typing a : command, press CTRL-D to see possible completions. + Press to use one completion. + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + This concludes the Vim Tutor. It was intended to give a brief overview of + the Vim editor, just enough to allow you to use the editor fairly easily. + It is far from complete as Vim has many many more commands. Read the user + manual next: ":help user-manual". + + For further reading and studying, this book is recommended: + Vim - Vi Improved - by Steve Oualline + Publisher: New Riders + The first book completely dedicated to Vim. Especially useful for beginners. + There are many examples and pictures. + See http://iccf-holland.org/click5.html + + This book is older and more about Vi than Vim, but also recommended: + Learning the Vi Editor - by Linda Lamb + Publisher: O'Reilly & Associates Inc. + It is a good book to get to know almost anything you want to do with Vi. + The sixth edition also includes information on Vim. + + This tutorial was written by Michael C. Pierce and Robert K. Ware, + Colorado School of Mines using ideas supplied by Charles Smith, + Colorado State University. E-mail: bware@mines.colorado.edu. + + Modified for Vim by Bram Moolenaar. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim74/tutor/tutor.bar b/share/vim/vim74/tutor/tutor.bar new file mode 100644 index 00000000..43fcdb8d --- /dev/null +++ b/share/vim/vim74/tutor/tutor.bar @@ -0,0 +1,981 @@ +=============================================================================== += G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7 = +=============================================================================== + + Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z + vil, däß myn s allsand in aynn Schainer wie dönn daader unterbräng. Der + Schainer ist yso aufbaut, däß yr halt netty die Befelh allsand bringt, wost + brauchst, däßst mit iem für s Eerste wirklich öbbs anfangen kanst. + Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; dös haisst, + wennst di nit grooß mit n Pröbln und Tüftln aufhaltst. + + OBACHT: + Die Faudungen, wost daader finddst, gaand istig s Gwort öndern. Dösswögn + machst eyn n Böstn glei ayn Aamum von derer Dautticht daader. Haast alsnan + dös Gwort daader mit n Befelh "vimtutor bar" ausherlaassn, ist s ee schoon + ayn Aamum. + Mir kan s nit oft gnueg sagn, däß der Schainer daader istig gan n Üebn + ghoert. Also muesst schoon aau die Befelh +ausfüern, wennst ys gscheid ler- + nen willst. Mit n Lösn yllain ist s +nit taan! + + Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest + glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich), hinst däßst + de gantze Letzn 1.1 auf n Bildschirm haast. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.1: MIT N MÖRKL UMAYNANDFARN + +** Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt. ** + ^ Ayn Öslsbrugg: + k De Tastn h ist winster und +geet aau gan winster. + < h l > S l leit zesm und richtt si gan zesm. + j S j kan myn wie aynn Pfeil gan unt seghn. + v Mit n k kimmst gan n KOPF. + 1. Ietz ruedertst ainfach mit n Mörkl auf n Bildschirm umaynand, hinst däßst + di sicher füelst. + 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso + kimmst gan dyr naehstn Letzn. + + 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2. + +Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft + zipfst ; naacher bist wider ganz gwon in dyr Befelhs-Artweis. + + + Nöbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter. Aber + hjkl seind z haissn s Wimm-Urgstain; und de "Hörtn" seind ganz dyr- + für, däß myn bei +dene bleibt. Pröblt s ainfach aus! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.2: ÖNN WIMM AUSSCHALTTN + + + ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÜERST, LIS LIEBER ZEERST DE GANTZE LET- + ZN! + + 1. Druck d -Tastn, dyrmitst aau gwiß in dyr Befelhs-Artweis bist. + + 2. Demmlt :q! . + Daa dyrmit benddst ys Blat und verwirffst allss, wasst öbbenn göndert + haast. + + 3. Balst önn Eingib seghst, gib dö Faudung ein, wo di zo dönn Schainer brun- + gen haat, also vimtutor bar . + + 4. Also, wenn ietz allsse sitzt, naacherd füerst d Schritt 1 hinst 3 aus, mit + wasst ys Blat verlaasst und aft wider einhinkimmst. + +Anmörkung: Mit :q! verwirffst allss, wasst göndert older enther gschribn + haast. In aynn Öttlych Letznen lernst acht, wiest dös allss in ayner + Dautticht speichertst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.3: GWORT BARECHTN - LÖSCHN + + + ** Druck x , dyrmitst dös Zaichen unter n Mörkl löschst. ** + + 1. Bewög di mit n Mörkl auf de mit ---> angmörkte Zeil unt. + + 2. Zo n Faeler Verbössern farst mit n Mörkl netty auf dös Zaichen, dös wo + glöscht ghoert. + + 3. Druck de Tastn x , däßst dös überflüssige Zaichen löschst. + + 4. Ietz tuest so lang weiter mit 2 hinst 4, hinst däß dyr Saz stimmt. + +---> De Kkuue sprangg übber nn Maanad. + + 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter. + +Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn, + allss auswendig z lernen; nän, lern ainfach mit n Anwenddn! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.4: GWORT BARECHTN - EINFÜEGN + + + ** Druck i , dyrmitst öbbs einfüegst. ** + + 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil, wo mit ---> angeet. + + 2. Dyrmitst de eerste Zeil wie de zwaitte machst, bewög önn Mörkl auf dös + eerste Zaichen NAACH derer Stöll, daa wo s Gwort eingfüegt werdn sollt. + + 3. Druck i und gib dös ein, was abgeet. + + 4. Wenn ieweils ayn Faeler verweitert ist, aft druck ; dyrmit kimmst + gan dyr Befelhsartweis zrugg. + So, und ietz tuest ainfach yso weiter, hinst däß dyr Saz stimmt. + +---> Daader gt dd öbbs b. +---> Daader geet diend öbbs ab. + + 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.5: GWORT BARECHTN - ANFÜEGN + + + ** Druck A gan n Gwort Anfüegn. ** + + 1. Gee mit n Mörkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat. + Daa ist s gleich, wo gnaun dyr Mörkl in derer Zeil steet. + + 2. Demmlt A und gib de entspröchetn Ergöntzungen ein. + + 3. Wennst mit n Anfüegn förtig bist, aft druckst , däßst wider eyn de + Befelhsartweis zruggkimmst. + + 4. So, und ietz geest aft non gan dyr zwaittn mit ---> angmörktn Zeil; und + daadl machst ys netty yso. + +---> In derer Zeil gee + In derer Zeil geet ayn Weeng ayn Gwort ab. +---> Aau daader stee + Aau daader steet öbbs Unvollstöndigs. + + 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.6: AYN DAUTTICHT BARECHTN + + + ** Mit :wq speichertst ayn Dautticht und verlaasst önn Wimm ganz. ** + + !! OBACHT: Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze + Letzn durch!! + + 1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! ! + + 2. Gib dö Faudung eyn n Eingib ein: vim Schainer . 'vim' ruefft s Blat + auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit + haast also ayn Dautticht, dö wost barechtn kanst. + + 3. Ietz füegst öbbs ein older löschst öbbs, wiest ys in de vorignen Letznen + glernt haast. + + 4. Speichert de gönderte Dautticht und verlaaß önn Wimm mit :wq . + + 5. Schmeiß önn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung. + + 6. Aft däßst de obignen Schritt glösn und käppt haast, kanst ys durchfüern. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 1 + + + 1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert. + h (winst) j (ab) k (auf) l (zes) + + 2. Um önn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT . + + 3. Willst önn Wimm verlaassn und aau allss verwerffen, aft gibst ein: + und :q! . + Gan n Verlaassn und Speichern aber zipfst und :wq . + + 4. Willst dös Zaichen löschn, daa wo dyr Mörkl drauf ist, demmltst x . + + 5. Willst öbbs vor n Mörkl eingöbn, zipfst i und drafter . + Mechst ys aber eyn s Zeilnend anhinhöngen, benutzt ys A . + Und ainfach naach n Mörkl füegst ys mit a ein. + +Anmörkung: Druckst , kimmst eyn de Befelhsartweis zrugg older brichst + ayn Faudung ab, dö wo dyr schiefgangen ist. + + Ietz tue mit dyr Letzn 2 weiter. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.1.: LÖSHFAUDUNGEN + + + ** Demmlt dw , dyrmitst ayn Wort löschst. ** + + 1. Druck , dyrmit s aau gwiß ist, däßst in dyr Befelhsartweis bist. + + 2. Bewög önn Mörkl zo dyr mit ---> angmörktn Zeil unt. + + 3. Und daa geest ietz auf n Anfang von aynn Wort, dös wo glöscht ghoert. + + 4. Zipf dw , däßst dös gantze Wort löschst. + + Nöbnbei: Dyr Buechstabn d erscheint auf dyr lösstn Zeil von n Bildschirm, + sobaldst n eingibst. Dyr Wimm wartt ietz drauf, däß öbbs kimmt, al- + so daader ayn w . Seghst freilich öbbs Anderts wie ayn d , + naacherd haast öbbs Falschs demmlt. Druck aft und pröblt + s non aynmaal. +---> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin. + + 5. Äfert d Schritt 3 und 4, hinst däß dyr Saz pässt, und gee aft gan dyr + Letzn 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN + + + ** Gib d$ ein, däßst hinst eyn s Zeilnend löschst. ** + + 1. Druck , dyrmitst aau gwiß in dyr Befelhsartweis bist. + + 2. Bewög önn Mörkl hinst eyn de mit ---> angmörkte Zeil untn. + + 3. Gee mit n Mörkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn . . + + 4. Zipf d$ , däßst hinst eyn s End von dyr Zeil löschst. + +---> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn. + + + 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.3: PFEMERER UND WOLENDER + + + Vil Faudungen, wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo- + lend zamm. Bal i also öbbs löschn will, schreib i ainsting d und aft s "Wo- + lend", dös haisst also, "wolend", "wohin" däß i will - older was i halt gnaun + löschn will. + + + + + + + Daader also, was i wie löschn kan: + w - hinst eyn n Anfang von n naehstn Wort AANE dönn sein eersts Zaichen. + e - gan n End von n ietzundn Wort MIT dönn seinn lösstn Zaichen. + $ - zo n End von dyr Zeil MIT derer irn lösstn Zaichen. + + Also löscht de Tastnfolg de allss umbb n Mörkl hinst eyn s Wortend. +Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mörkl + entspröchet weiter. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN + + + ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel entspröchet oft gangen. ** + + 1. Bewög önn Mörkl gan n Anfang von dyr Zeil mit ---> dyrvor unt. + + 2. Zipf 2w , däßst mit n Mörkl zwai Wörter weitergeest. + + 3. Zipf 3e , däßst mit n Mörkl auf s End von n drittn Wort kimmst. + + 4. Zipf 0 (aynn Nuller), däßst eyn n Anfang von dyr Zeil hinkimmst. + + 5. Widerhol d Schritt 2 und 3 mit verschaidne Zöler. + + ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern. + + 6. Gee weiter gan dyr Letzn 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN + + + ** Ayn Zal vor aynn Pfemerer füert dönn entspröchet oft aus. ** + + Also, i mecht löschn, und zwaar öbbs Bestimmts, und dös so und so oft: Daa + dyrzue benutz i aynn Zöler: + d Zöler Wolend (also önn Bewögungsschrit) + + 1. Bewög önn Mörkl zo n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an- + gmörktn Zeil. + + 2. Demmlt d2w , dyrmitst de ganz grooßgschribnen Wörter löschst. + + 3. Äfert d Schritt 1 und 2 mit dönn entspröchetn Zöler, dyrmitst de drauf- + folgetn ganz großgschribnen Wörter mit ayner ainzignen Faudung löschst: + + +---> Dö ABC DE Zeil FGHI JK LMN OP mit Wörter ist Q RS TUV ietz berichtigt. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.6: ARECHTN AUF ZEILN + + + ** Zipf dd , um ayn gantze Zeil z löschn. ** + + Weil s gro oft vürkimmt, däß myn gantze Zeiln löscht, kaamend schoon d Ent- + wickler von n Urwimm daa drauf, däß myn ainfach dd gan dönn Zwök schreibt. + + + 1. Bewög önn Mörkl gan dyr zwaittn Zeil in n untignen "Gedicht". + 2. Zipf dd , um dö Zeil z löschn. + 3. Ietz bewögst di gan dyr viertn Zeil. + 4. Zipf 2dd , um zwo Zeiln zo n Löschn. + +---> 1) Roosn seind root; +---> 2) Drunter ist s Koot. +---> 3) Veigerln seind blau. +---> 4) Umgrabn tuet s d Sau. +---> 5) D Ur sait de Zeit, +---> 6) Sait, däß s mi freut, +---> 7) Dirndl, dein Gschau. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN) + + + ** Zipf u , dyrmitst de lösstn Faudungen ruggltst ** + ** older U , um ayn gantze Zeil widerherzstölln. ** + + 1. Bewög önn Mörkl gan dyr mit ---> angmörktn Zeil unt und gee dyrmit auf n + eerstn Faeler. + 2. Zipf x , däßst dös eerste z vile Zaichen löschst. + 3. Ietz demmlt u , dyrmitst de lösste Faudung ruggltst. + 4. Ietz behöb allsand Faeler auf dyr Zeil mit dyr Hilf von n Befelh x . + 5. Aft gibst ayn U (grooß) ein, däßst de Zeil wider yso hinbringst, wie s + gwösn ist. + 6. So, und ietz demmltst so oft u , hinst däßst s U und de andern Fau- + dungen rugggöngig gmacht haast. + 7. Und ietzet widerum schreibst so oft r , hinst däßst allsand Be- + felh widerhergstöllt, z haissn allsse rugg-grugglt haast (also d Rugggön- + gigmachungen rugggöngig gmacht). +---> Beerichtig d Faeller voon dehrer Zeiil und sttöll s mitt n Ruggruggln wi- + der her. + 8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter. + Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 2 + + + 1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf: dw + 2. Um umbb n Mörkl hinst eyn s End von dyr Zeil zo n Löschn, demmlt d$ + 3. Dyrmitst ayn gantze Zeil löschst, gib ein: dd + 4. Mechst ayn Bewögung, ayn "Wolend", öfters, stöll de entspröchete Zal dyr- + vor: 3dw older aau: d3w + 5. Dyr Pfueg für ayn Önderungsfaudung lautt yso: + Pfemerer [Zal] Bewögungsschrit (Wolend) + Und dös haisst: + Dyr PFEMERER gibt an, WAS taan ghoert, öbbenn d = löschn (»delete«). + [ZAL] - Ayn Zal KAN myn angöbn, wenn myn halt ayn Wolend öfter habn will. + S WOLEND, also dyr Schrit WOHIN, besagt, auf was i aushin will, öbbenn + auf aynn Wortanfang ( w ), s End von dyr Zeil ( $ ) und so weiter. + + 6. Däßst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller: 0 + + 7. Um öbbs Vorigs wider z ruggln, gib ein: u (klain also) + Um allsand Önderungen in ayner Zeil z ruggln, haast: U (also grooß) + Um "rugg-z-ruggln", also allss wider herzstölln, zipf: r + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.1: ANFÜEGN (»put«) + + + ** Zipf p , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. ** + + 1. Bewög önn Mörkl gan dyr eerstn untignen Zeil mit ---> dyrvor. + + 2. Zipf dd , um sele Zeil z löschn und dyrmit in ayner Wimm-Osn zo n Spei- + chern. + + 3. Bewög önn Mörkl gan dyr Zeil c), ÜBER derer, daa wo de glöschte Zeil ein- + hinkemmen sollt. + + 4. So, und ietz gibst ainfach p ein, und schoon haast dö Zeil unter derer + mit n Mörkl drinn. + 5. Äfert d Schritt 2 hinst 4, hinst däßst allsand Zeiln yso naachynaynand + haast, wie s hinghoernd. + +---> d) Kanst du dös aau? +---> b) Veigerln seind blau. +---> c) Bedachtn kan myn lernen. +---> a) Roosn seind root. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.2: ERSÖTZN (»replace«) + + + ** Zipf rx , um dös Zaichen unter n Mörkl durch x z ersötzn. ** + + 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil mit ---> dyrvor. + + 2. Bewög önn Mörkl, hinst däß yr auf n eerstn Faeler steet. + + 3. Zipf r und drafter dös Zaichen, wo dyrfür daa hinghoert. + + 4. Widerhol d Schritt 2 und 3, hinst däßst de eerste Zeil gmaeß dyr zwaittn + berichtigt haast: +---> Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft! +---> Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft! + + 5. Ietz tue mit dyr Letzn 3.3 weiter. + +Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn + mit n Auswendiglernen! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.3: ÖNDERN (»change«) + + + ** Um hinst eyn s Wortend z öndern, zipf ce . ** + + 1. Gee mit n Mörkl auf de eerste mit ---> angmörkte Zeil. + + 2. Ietz farst netty auf s "s" von Wstwr hin. + + 3. Zipf ce ein und aft d Wortberichtigung, daader also örter . + + 4. Druck und bewög önn Mörkl zo n naehstn Zaichen, wo göndert ghoert. + + 5. Äfert d Schritt 3 und 4, hinst däß dyr eerste Saz wie dyr zwaitte ist. + +---> Ainige Wstwr von derer Zlww ghhnnd mit n Öndern-Pfemerer gaauu. +---> Ainige Wörter von derer Zeil ghoernd mit n Öndern-Pfemerer göndert. + +ce löscht also s Wort und schlaaufft di eyn d Eingaab-Artweis. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.4.: NON MEERER ÖNDERUNGEN PFELFS c + + + ** D Löshfaudung c arechtt mit de nömlichnen Wolender wie dö mit d ** + + 1. Dyr Önder-Pfemerer arechtt anleich wie d Löshfaudung mit d , und zwaar + yso: + c [Zal] Bewögungsschrit (Wolend) + + 2. D Wolender seind de gleichn, öbbenn w für Wort und $ für s Zeilnend. + + + 3. Bewög di zo dyr eerstn untignen Zeil mit ---> . + + 4. Ietz geest auf dönn eerstn Faeler. + + 5. Zipf c$ , gib önn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft + . +---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn. +---> S End von derer Zeil sollt mit n Befelh c$ berichtigt werdn. + +Denk allweil dran, däßst iederzeit mit dyr Ruggtastn Faeler ausbössern kanst. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 3 + + + 1. Um ayn vorher glöschts Gwort anzfüegn, zipf p . Daa dyrmit werd dös + gantze Gwort NAACH n Mörkl angfüegt. Wenn s ayn gantze Zeil gwösn ist, + werd dö sel als de Zeil unterhalb n Mörkl eingfüegt. + + 2. Um dös Zaichen unter n Mörkl, also wo dyr Mörkl ist, z ersötzn, zipf r + und aft dös Zaichen, wost daadl habn willst. + + 3. Dyr Önderungspfemerer ( c = »change«) laasst ainn umbb n Mörkl hinst eyn s + End von n Wolend öndern. Zipf ce , dyrmitst umbb n Mörkl hinst eyn s End + von n Wort öndertst, und c$ hinst eyn s End von dyr Zeil. + + 4. Für d Önderung lautt dyr Pfueg: + + c [Zal] Wolend + +Ietz tue mit dyr naehstn Letzn weiter. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND + +** Demmlt g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. ** + ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. ** + +Anmörkung: Lis dö gantze Letzn daader durch, ee wennst iewign öbbs unternimmst! + + 1. Druck g . Auf dös hin erscheint auf derer Seitt ganz unt ayn Dar- + standsmeldung mit n Dauttichtnam und n Befand innerhalb dyr Dautticht. + Mörk dyr de Zeilnnummer für n Schrit 3. + +Anmörkung: Müglicherweis seghst aau önn Mörklbefand in n zesmen untern Bild- + schirmögg. Aft ist s "Lindl" (»ruler«) eingstöllt; meerer über dös + laasst dyr dyr Befelh :help 'ruler' ausher. + 2. Druck G , um an s End von dyr Dautticht z kemmen. + gg gibst ein, däßst gan n Anfang von dyr Dautticht aufhinkimmst. + + 3. Gib d Nummer von derer Zeil ein, daa wost vorher warst, und aft non G . + Dös bringt di zrugg gan seler Zeil, daa wost stuenddst, wiest dös eerste + Maal g gadruckst. + + 4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.2: DYR BEFELH ZO N SUECHEN + + + ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. ** + + 1. Du gibst also in dyr Befelhsartweis s Zaichen / ein. Dös sel wie aau dyr + Mörkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung : . + + 2. Ietz zipf Faeeler . Netty um dös 'Faeeler' willst ietz suechen. + + 3. Willst um gnaun dönn Ausdruk weitersuechen, zipf ainfach n (wie »next«). + Willst hinzrugg suechen, aft gibst N ein. + + 4. Um von Haus aus zruggaus z suechen, nimm ? statt / her. + + 5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, nimm o , und dös + öfter, wennst weiter zrugg willst. Mit i widerum kimmst vorwärts. + +---> Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler + +Anmörkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi- + der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wär auf aus. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.3: DE GÖGNKLAMMERN FINDDN + + + ** Zipf % , um de entspröchete Klammer ) , ] older } z finddn. ** + + 1. Sötz önn Mörkl auf iewign aine von dene drei Klammern ( , [ older { + in dyr untignen Zeil, wo mit ---> angmörkt ist. + + 2. Ietzet zipf s Zaichen % . + + 3. Dyr Mörkl geet ietz auf de pässete schliessete Klammer. + + 4. Ietz demmlt % , und dyrmit kimmst gan dyr öffneretn Klammer zrugg. + + 5. Sötz önn Mörkl auf ayn anderne Klammer von ({[]}) und pröblt % aus. + +---> Dös ( ist blooß ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. )) + +Anmörkung: Um dö Müglichkeit gaast bsunders froo sein, wennst aynmaal in aynn + Spaichgwort verzweiflt ayn faelete Gögnklammer suechst! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«) + + + ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Ersötzn. ** + + 1. Gee mit n Mörkl zo dyr unt steehetn mit ---> angmörktn Zeil. + + 2. Zipf :s/dee/de . Der Befelh ersötzt alsnan grad dös +eerste "dee", + wo vürkimmt. + + 3. Ietz pröblt s mit :s/dee/de/g . Dös zuesötzliche g ("Pflok" nennt myn + öbbs Sölchers) bewirkt, däß allss, was dyrmit kennzaichnet ist, innerhalb + von dyr ainn Zeil ersötzt werd. + +---> Dee schoenste Zeit, däß myn dee Blüemln anschaut, ist dee schoene Lan- + gesszeit. + 4. Um ietz allsand Suechbegriff innerhalb von zwo Zeiln zo n Öndern, zipf + :#,#s/alt/neu/g , wobei # ieweils für de eerste und lösste Zeil von dönn + Pfraich steet. + :%s/alt/neu/g zipfst, däßst d Vürkemmen in dyr gantzn Dautticht öndertst. + Mit :%s/alt/neu/gc finddst allsand Vürkemmen in dyr gsamtn Dautticht; + daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 4 + + 1. g zaigt dönn ietzundn Dauttichtbefand und önn Darstand dyrvon an. + G bringt di an s End von dyr Dautticht. + G bringt di gan dyr entspröchetn Zeilnnummer. + gg geet +grad yso. + gg bringt di zo dyr eerstn Zeil. + 2. D Eingaab von / mit aynn Ausdruk suecht VÜRSHLING um dönn Ausdruk. + Gibst ? und aynn Suechbegrif ein, suecht s um dönn ÄRSHLING. + Zipf naach ayner Suech n ; naacherd werd in de gleiche Richtung weiter- + gsuecht. Mit N geet s umkeerter weiter. + o bringt di zo ölterne Befändd zrugg, i zo neuerne. + + 3. D Eingaab von % , wenn dyr Mörkl auf ainer von dene Klammern steet: ({[ + )]} , bringt di zo dyr Gögnklammer. + + 4. Um dös eerste Vürkemmen von "alt" in ayner Zeil durch "neu" z ersötzn, + zipf :s/alt/neu . + Um allsand in ayner Zeil z ersötzn, zipf :s/alt/neu/g . + Mechst allss in zwo Zeiln ersötzn, demmlt zo n Beispil :5,6s/alt/neu/g . + Mechst allss in dyr gantzn Dautticht ersötzn, gib ein: :%s/alt/neu/g . + Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÜERN + + + ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach :! ein. ** + + 1. Zipf dönn bekanntn Befelh : , dyrmitst mit n Mörkl auf n Bildschirm + ganz abhin kimmst. Draufhin kanst aynn gwonen Gfäßbefelh eingöbn. + + 2. Zeerst kimmt aber non ayn Ruefzaichen ! . Und ietzet haast d Müglich- + keit, ayn beliebige ausserige Gfäßfaudung auszfüern. + + 3. Als Beispil zipf :!ls ; und schoon haast ayn Auflistung von deinn + Verzaichniss, netty wie wennst ganz gwon in n Eingib wärst. Geet ls + aus iewign aynn Grund nit, aft pröblt s mit :!dir . + +Also non aynmaal: Mit dönn Angang kan ayn iede beliebige ausserige Faudung aus- + gfüert werdn, aau mit Auerwerdd. + +Und wolgmörkt: Alle Befelh, wo mit : angeend, müessend mit bstö- + tigt werdn. Dös dyrsagn myr fürbaß +niemer. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.2: NON MEERER DRÜBER, WIE MYN DAUTTICHTN SCHREIBT + + + ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM . ** + + 1. Zipf :!dir older :!ls , däßst dyr ayn Auflistung von deinn Verzaich- + niss ausherlaasst. Däßst drafter eingöbn muesst, waisst ee schoon. + + 2. Suech dyr aynn Dauttichtnam aus, dönn wo s non nit geit, öbbenn POCH . + + 3. Ietz demmlt: :w POCH (also mit POCH als dönn neuen Dauttichtnam). + + 4. Dös speichert ietz de gantze Dautticht, also önn Wimmschainer, unter dönn + Nam POCH. Dös kanst leicht überprüeffen, indem däßst ainfach :!ls older + :!dir zipfst und dyrmit deinn Verzaichnissinhalt seghst. + +Anmörkung: Stigst ietz aus n Wimm aus und gännst n aft wider mit vim POCH , + naacherd wär dö Dautticht ayn gnaune Aamum von n Schainer dyrselbn, + wiest n gspeichert haast. + + 5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit :!del POCH + beziehungsweis bei aynn Unixgebäu mit :!rm POCH . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN + +** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT ** + + 1. Ruck önn Mörkl auf netty dö Zeil daader. + + 2. Demmlt v und gee mit n Mörkl auf dönn fümftn Auflistungspunt untet. Du + seghst glei, däß s Gwort vürherghöbt erscheint. + + 3. Druck s Zaichen : . Ganz unt auf n Bildschirm erscheint :'<,'> . + + 4. Zipf w POCH , wobei s dönn Dauttichtnam POCH non nit geit. Vergwiß di, + däßst dös :'<,'>w POCH aau +seghst, ee wennst druckst. + + 5. Dyr Wimm schreibt de ausgwaltn Zeiln eyn de Dautticht POCH einhin. Benutz + :!dir older :!ls , däßst dös überprüeffst. Lösh s fein nit öbbenn! Mir + brauchend s nömlich für de naehste Letzn. + +Anmörkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um- + aynandfarn, um d Auswal z veröndern. Drafter kan myn mit yn aynn + Pfemerer mit dönn Gwort öbbs machen. Zo n Beispil löscht d dös + Gwort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN + + + ** Um önn Inhalt von ayner Dautticht einzlösn, zipf :r DAUTTICHTNAM ** + + 1. Sötz önn Mörkl über dö Zeil daader. + +OBACHT: Aft däßst önn Schrit 2 ausgfüert haast, seghst auf aynmaal öbbs aus + dyr Letzn 5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi- + derfinddst. + 2. Ietz lis dein Dautticht POCH ein, indem däßst d Faudung :r POCH aus- + füerst, wobei wie gsait POCH für dönn von dir ausgsuechtn Dauttichtnam + steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt. + + 3. Um zo n Überprüeffen, ob de Dautticht aau gwiß einglösn ist, gee zrugg; + und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 5.3. geit, s + Urniss und de eingfüegte Dauttichtfassung. + +Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei- + spil list :r !ls d Ausgaab von dyr Faudung ls ein und füegt s + unterhalb n Mörkl ein. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 5 + + + 1. :!FAUDUNG füert aynn ausserignen Befelh aus. + + Daader ayn Öttlych gwänddte Beispiler: + (Fenstl) (Unix - Linux) + :!dir :!ls - listt s Verzaichniss auf. + :!del DAUTTICHT :!rm DAUTTICHT - verweitert sele Dautticht. + + 2. :w DAUTTICHT speichert de ietzunde Wimmdautticht unter dönn besagtn Nam. + + 3. v WOLEND :w DAUTTICHTNAM schreibt de sichtisch ausgwaltn Zeiln eyn de + Dautticht mit seln Nam. + + 4. :r DAUTTICHTNAM ladt sele Dautticht und füegt s unterhalb n Mörklbefand + ein. + + 5. :r !dir list d Ausgaab von dyr Faudung dir und füegt s unterhalb n + Mörklbefand ein. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.1: ZEIL ÖFFNEN (»open«) + + + ** Zipf o , um ayn Zeil unterhalb n Mörkl z öffnen und eyn d ** + ** Einfüegartweis z kemmen. ** + + 1. Bewög önn Mörkl zo dyr eerstn mit ---> angmörktn Zeil unt. + + 2. Zipf o (klain), um ayn Zeil UNTERHALB n Mörkl z öffnen und mit dyr Ein- + füegartweis weiterztuen. + + 3. Ietzet zipf ayn Weeng öbbs und druck , um d Einfüegartweis z ver- + laassn. +---> Mit o werd dyr Mörkl in dyr Einfüegartweis auf de offene Zeil gsötzt. + + 4. Um ayn Zeil OBERHALB n Mörkl aufzmachen, gib ainfach ayn groosss O statt + yn aynn klainen ein. Versuech dös auf dyr untignen Zeil. + +---> Öffnet ayn Zeil über derer daader mit O , wenn dyr Mörkl auf derer Zeil + ist. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.2: GWORT ANFÜEGN (»append«) + + + ** Zipf a , um öbbs NAACH n Mörkl einzfüegn. ** + + 1. Bewög önn Mörkl gan n Anfang von dyr eerstn Üebungszeil mit ---> unt. + + 2. Druck e , hinst däß dyr Mörkl an n End von Zei steet. + + 3. Zipf ayn klains a , um öbbs NAACH n Mörkl anzfüegn. + + 4. Vergöntz dös Wort wie in dyr Zeil drunter. Druck , um d Schreib- + Artweis z verlaassn. + + 5. Bewög di mit e zo n naehstn ungantzn Wort und widerhol d Schritt 3 und + 4. + +---> Dö Ze biett ayn Glögn , ayn Gwort in ayner Zeil anzfü. +---> Dö Zeil biett ayn Glögnet, ayn Gwort in ayner Zeil anzfüegn. + +Anmörkung: a , i und A bringend ainn gleichermaaßn eyn d Einfüegartweis; + dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«) + + + ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z ersötzn. ** + + 1. Bewög önn Mörkl zo dyr eerstn untignen, mit ---> angmörktn Zeil. + Gee mit n Mörkl gan n Anfang von n eerstn xxx . + + 2. Ietz druck R und zipf sele Zal, wo drunter in dyr zwaittn Zeil steet, + yso däß de sel s xxx ersötzt. + + 3. Druck , um d Ersötzungsartweis z verlaassn. Du gspannst, däß dyr + Rest von dyr Zeil unveröndert bleibt. + + 4. Äfert die Schritt, um dös überblibne xxx z ersötzn. + +---> S Zunddn von 123 zo xxx ergibt xxx. +---> S Zunddn von 123 zo 456 ergibt 579. + +Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis, aber ayn ieds eindem- + mlte Zaichen löscht ayn vorhanddns. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.4: GWORT AAMEN UND EINFÜEGN + + ** Benutz önn Pfemerer y , um öbbs z aamen, und p , um öbbs einzfüegn. ** + + 1. Gee zo dyr mit ---> angmörktn Zeil unt und sötz önn Mörkl hinter "a)". + + 2. Ginn d Sichtisch-Artweis mit v und bewög önn Mörkl gnaun vor "eerste". + + 3. Zipf y , um dönn vürherghöbtn Tail z aamen. + + 4. Bewög önn Mörkl gan n End von dyr naehstn Zeil: j$ + + 5. Demmlt p , um dös Gwort einzfüegn, und aft: a zwaitte . + + 6. Benutz d Sichtischartweis, um " Eintrag." auszwaln, aam s mittls y , be- + wög di gan n End von dyr naehstn Zeil mit j$ und füeg s Gwort dortn mit + p an. + +---> a) dös ist dyr eerste Eintrag. + b) +Anmörkung: Du kanst y aau als Pfemerer verwenddn; yw zo n Beispil aamt + hinst eyn n naehstn Wortanfang (aane dönn selber). +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.5: SCHALTTER SÖTZN + +** Sötz aynn Schaltter yso, däß ayn Suech older Ersötzung Grooß- und Klain- ** + ** schreibung übergeet. ** + + 1. Suech um 'übergee", indem däßst /übergee eingibst. + Widerhol d Suech ayn Öttlych Maal, indem däßst de Tastn n druckst. + + 2. Sötz de Zwisl - önn Schaltter - 'ic' (»ignore case«), indem däßst :set ic + eingibst. + 3. Ietz suech wider um 'übergee' und tue aau wider mit n weiter. Daa fallt + dyr auf, däß ietz öbbenn aau Übergee und ÜBERGEE hergeet. + + 4. Sötz de Zwisln 'hlsearch' und 'incsearch' pfelfs: :set hls is + + 5. Widerhol d Suech und bobacht, was ietz gschieght: /übergee + + 6. Däßst grooß und klain wider gwon unterscheidst, zipf: :set noic + +Anmörkung: Mechst de Tröffer niemer vürherghöbt seghn, gib ein: :nohlsearch +Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \c + in n Suechausdruk: /übergee\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 6 + + 1. Zipf o , um ayn Zeil UNTERHALB n Mörkl z öffnen und d Einfüegartweis z + ginnen. + Zipf O , um ayn Zeil OBERHALB n Mörkl z öffnen. + + 2. Zipf a , um NAACH n Mörkl ayn Gwort einzfüegn. + Zipf A , um ayn Gwort naach n Zeilnend anzfüegn. + + 3. D Faudung e bringt di gan n End von aynn Wort. + + 4. Dyr Pfemerer y (»yank«) aamt öbbs, p (»put«) füegt dös ein. + + 5. Ayn groosss R geet eyn d Ersötzungsartweis, hinst däß myn druckt. + + 6. D Eingaab von ":set xxx" sötzt de Zwisl "xxx". Ayn Öttlych Zwisln seind: + 'ic' 'ignorecase' Grooß/klain wurst bei ayner Suech + 'is' 'incsearch' Zaig aau schoon ayn Tailüberainstimmung + 'hls' 'hlsearch' Höb allsand pässetn Ausdrück vürher + Dyr Schaltternam kan in dyr Kurz- older Langform angöbn werdn. + + 7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst: :set noic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.1: AYN HILFGWORT AUFRUEFFEN + + + ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung". ** + + Eyn n Wimm ist ayn ausfüerliche "Gebrauchsanweisung" einbaut. Für s Eerste + pröblt ainfach ains von dene dreu aus: + - Druck d -Tastn, wennst öbbenn aine haast. + - Druck de Tastn , fallsst ys haast. + - Zipf :help + + Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie dös mit dyr Hilf geet. + Demmlt w w , um von ainn Fenster zo n andern zo n Springen. + Demmlt :q , um s Hilffenster zo n Schliessn. + + Du kanst zo so guet wie allssand ayn Hilf finddn, indem däßst yn dyr Faudung + :help aynn Auerwerd naachstöllst und istig nit vergisst. Pröblt dös: + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF + + + ** Mutz önn Wimm mit de einbautn Faehigkeitn auf. ** + + Dyr Wimm besitzt ayn Wösn Schäftungen, wo über n Urwimm aushingeend, aber de + meerern dyrvon seind in dyr Vorgaab ausgschaltt. Dyrmitst meerer aus n Wimm + ausherholst, erstöllst ayn "vimrc"-Dautticht. + + 1. Lög ayn "vimrc"-Dautticht an; dös geet ie naach Betribsgebäu verschidn: + :e ~/.vimrc für s Unix + :e $VIM/_vimrc bei n Fenstl + + 2. Ietz lis önn Inhalt von dyr Beispil-"vimrc"-Dautticht ein: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Speichert de Dautticht mit: + :w + + 4. Bei n naehstn Gin von n Wimm ist aft d Füegnussvürherhöbung zuegschalttn. + Du kanst dyr allss eyn dö Dautticht einhinschreibn, wasst bständig habn + willst. Meerer dyrzue erfarst unter: :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.3: VERGÖNTZN + + + ** Befelhszeilnvergöntzung mit d und ** + + 1. Vergwiß di, däß dyr Wimm nit auf n Urwimm-"Glais" fart: :set nocp + + 2. Schaug naach, wölcherne Dauttichtn däß s in n Verzaichniss geit: :!ls + older :!dir + 3. Zipf önn Anfang von ayner Faudung: :e + + 4. Druck d , und dyr Wimm zaigt ayn Listn von Faudungen, wo mit "e" + angeend. + 5. Druck , und dyr Wimm vervollstöndigt önn Faudungsnam zo ":edit". + + 6. Füeg ayn Laerzaichen und önn Anfang von ayner besteehetn Dautticht an: + :edit DAU + + 7. Druck . Dyr Wimm vergöntzt önn Nam, dös haisst, wenn yr aindeuttig + ist. +Anmörkung: D Vergöntzung geit s für aynn Hauffen Faudungen. Versuech ainfach + d und . Bsunders nützlich ist dös bei :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 7 + + + 1. Zipf :help oder druck oder , um ayn Hilffenster z öffnen. + + 2. Zipf :help FAUDUNG , um auf ayn Hilf gan aynn Befelh z kemmen. + + 3. Zipf w w , um zo n andern Fenster z springen. + + 4. Zipf :q , um s Hilffenster z schliessn. + + 5. Erstöll ayn vimrc-Ginschripf zuer Sicherung von deine Mötzneinstöllungen. + + 6. Druck d , aft däßst naach : ayn Faudung angfangt haast, dyr- + mitst mügliche Vergöntzungen anzaigt kriegst. + Druck für ain Vervollstöndigung yllain. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Dös wär ietzet s End von n Wimmschainer. Gangen ist s daa drum, aynn kurtzn + und bündignen Überblik über s Blat WIMM z lifern, netty vil gnueg, däß myn + für s Eerste wirklich öbbs dyrmit anfangen kan. Dyrmit ist s aber auf kain + Weitn non nit taan; dyr Wimm haat schoon non vil meerer auf Lager. Lis als + Naehsts aynmaal s Benutzerhandbuech: :help user-manual + + Zo n Weiterlösn und Weiterlernen wör dös Buech daader zo n Empfelhen: + Vim - Vi Improved - von n OUALLINE Steve + Verlaag: New Riders + Dös ist dös eerste Buech, wo ganz yn n Wimm gwidmt ist, netty dös Grechte für + Anfönger. Es haat ayn Wösn Beispiler und aau Bilder drinn. + See http://iccf-holland.org/click5.html + + Dös folgete Buech ist schoon ölter und meerer über n Urwimm als wie über n + Wimm, aber aau zo n Empfelhen: Textbearbeitung mit dem vi-Editor - von dyr + LAMB Linda und n ROBBINS Arnold - Verlaag O'Reilly - Buechlaittzal (ISBN): + 3897211262 + In dönn Buech kan myn fast allss finddn, was myn mit n Urwimm angeen mecht. + De söxte Ausgaab enthaltt aau schoon öbbs über n Wimm. + Als ietzunde Bezugniss für d Fassung 7 und ayn pfrenge Einfüerung dient dös + folgete Buech: + vim ge-packt von n WOBST Reinhard + mitp-Verlaag, Buechlaittzal 978-3-8266-1781-2 + Trotz dyr recht pfrengen Darstöllung ist s durch seine viln nützlichnen Bei- + spiler aau für Einsteiger grad grecht. Probhaeupster und de Beispilschripfer + seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html + + Verfasst habnd dönn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr + Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwürff, wo + dyr SMITH Charles von dyr Kolraader Allschuel (Colorado State University) + zuer Verfüegung gstöllt haat. Gundpost: bware@mines.colorado.edu + Für n Wimm haat n dyr MOOLENAAR Bram barechtt. + De bairische Übersötzung stammt von n HELL Sepp 2009, ayn Weeng überarechtt + 2011. Sein Gundpostbrächt ist sturmibund@t-online.de + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim74/tutor/tutor.bar.utf-8 b/share/vim/vim74/tutor/tutor.bar.utf-8 new file mode 100644 index 00000000..b8e4d103 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.bar.utf-8 @@ -0,0 +1,981 @@ +=============================================================================== += G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7 = +=============================================================================== + + Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z + vil, däß myn s allsand in aynn Schainer wie dönn daader unterbräng. Der + Schainer ist yso aufbaut, däß yr halt netty die Befelh allsand bringt, wost + brauchst, däßst mit iem für s Eerste wirklich öbbs anfangen kanst. + Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; dös haisst, + wennst di nit grooß mit n Pröbln und Tüftln aufhaltst. + + OBACHT: + Die Faudungen, wost daader finddst, gaand istig s Gwort öndern. Dösswögn + machst eyn n Böstn glei ayn Aamum von derer Dautticht daader. Haast alsnan + dös Gwort daader mit n Befelh "vimtutor bar" ausherlaassn, ist s ee schoon + ayn Aamum. + Mir kan s nit oft gnueg sagn, däß der Schainer daader istig gan n Üebn + ghoert. Also muesst schoon aau die Befelh +ausfüern, wennst ys gscheid ler- + nen willst. Mit n Lösn yllain ist s +nit taan! + + Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest + glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich), hinst däßst + de gantze Letzn 1.1 auf n Bildschirm haast. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.1: MIT N MÖRKL UMAYNANDFARN + +** Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt. ** + ^ Ayn Öslsbrugg: + k De Tastn h ist winster und +geet aau gan winster. + < h l > S l leit zesm und richtt si gan zesm. + j S j kan myn wie aynn Pfeil gan unt seghn. + v Mit n k kimmst gan n KOPF. + 1. Ietz ruedertst ainfach mit n Mörkl auf n Bildschirm umaynand, hinst däßst + di sicher füelst. + 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso + kimmst gan dyr naehstn Letzn. + + 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2. + +Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft + zipfst ; naacher bist wider ganz gwon in dyr Befelhs-Artweis. + + + Nöbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter. Aber + hjkl seind z haissn s Wimm-Urgstain; und de "Hörtn" seind ganz dyr- + für, däß myn bei +dene bleibt. Pröblt s ainfach aus! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.2: ÖNN WIMM AUSSCHALTTN + + + ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÜERST, LIS LIEBER ZEERST DE GANTZE LET- + ZN! + + 1. Druck d -Tastn, dyrmitst aau gwiß in dyr Befelhs-Artweis bist. + + 2. Demmlt :q! . + Daa dyrmit benddst ys Blat und verwirffst allss, wasst öbbenn göndert + haast. + + 3. Balst önn Eingib seghst, gib dö Faudung ein, wo di zo dönn Schainer brun- + gen haat, also vimtutor bar . + + 4. Also, wenn ietz allsse sitzt, naacherd füerst d Schritt 1 hinst 3 aus, mit + wasst ys Blat verlaasst und aft wider einhinkimmst. + +Anmörkung: Mit :q! verwirffst allss, wasst göndert older enther gschribn + haast. In aynn Öttlych Letznen lernst acht, wiest dös allss in ayner + Dautticht speichertst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.3: GWORT BARECHTN - LÖSCHN + + + ** Druck x , dyrmitst dös Zaichen unter n Mörkl löschst. ** + + 1. Bewög di mit n Mörkl auf de mit ---> angmörkte Zeil unt. + + 2. Zo n Faeler Verbössern farst mit n Mörkl netty auf dös Zaichen, dös wo + glöscht ghoert. + + 3. Druck de Tastn x , däßst dös überflüssige Zaichen löschst. + + 4. Ietz tuest so lang weiter mit 2 hinst 4, hinst däß dyr Saz stimmt. + +---> De Kkuue sprangg übber nn Maanad. + + 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter. + +Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn, + allss auswendig z lernen; nän, lern ainfach mit n Anwenddn! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.4: GWORT BARECHTN - EINFÜEGN + + + ** Druck i , dyrmitst öbbs einfüegst. ** + + 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil, wo mit ---> angeet. + + 2. Dyrmitst de eerste Zeil wie de zwaitte machst, bewög önn Mörkl auf dös + eerste Zaichen NAACH derer Stöll, daa wo s Gwort eingfüegt werdn sollt. + + 3. Druck i und gib dös ein, was abgeet. + + 4. Wenn ieweils ayn Faeler verweitert ist, aft druck ; dyrmit kimmst + gan dyr Befelhsartweis zrugg. + So, und ietz tuest ainfach yso weiter, hinst däß dyr Saz stimmt. + +---> Daader gt dd öbbs b. +---> Daader geet diend öbbs ab. + + 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.5: GWORT BARECHTN - ANFÜEGN + + + ** Druck A gan n Gwort Anfüegn. ** + + 1. Gee mit n Mörkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat. + Daa ist s gleich, wo gnaun dyr Mörkl in derer Zeil steet. + + 2. Demmlt A und gib de entspröchetn Ergöntzungen ein. + + 3. Wennst mit n Anfüegn förtig bist, aft druckst , däßst wider eyn de + Befelhsartweis zruggkimmst. + + 4. So, und ietz geest aft non gan dyr zwaittn mit ---> angmörktn Zeil; und + daadl machst ys netty yso. + +---> In derer Zeil gee + In derer Zeil geet ayn Weeng ayn Gwort ab. +---> Aau daader stee + Aau daader steet öbbs Unvollstöndigs. + + 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.6: AYN DAUTTICHT BARECHTN + + + ** Mit :wq speichertst ayn Dautticht und verlaasst önn Wimm ganz. ** + + !! OBACHT: Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze + Letzn durch!! + + 1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! ! + + 2. Gib dö Faudung eyn n Eingib ein: vim Schainer . 'vim' ruefft s Blat + auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit + haast also ayn Dautticht, dö wost barechtn kanst. + + 3. Ietz füegst öbbs ein older löschst öbbs, wiest ys in de vorignen Letznen + glernt haast. + + 4. Speichert de gönderte Dautticht und verlaaß önn Wimm mit :wq . + + 5. Schmeiß önn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung. + + 6. Aft däßst de obignen Schritt glösn und käppt haast, kanst ys durchfüern. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 1 + + + 1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert. + h (winst) j (ab) k (auf) l (zes) + + 2. Um önn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT . + + 3. Willst önn Wimm verlaassn und aau allss verwerffen, aft gibst ein: + und :q! . + Gan n Verlaassn und Speichern aber zipfst und :wq . + + 4. Willst dös Zaichen löschn, daa wo dyr Mörkl drauf ist, demmltst x . + + 5. Willst öbbs vor n Mörkl eingöbn, zipfst i und drafter . + Mechst ys aber eyn s Zeilnend anhinhöngen, benutzt ys A . + Und ainfach naach n Mörkl füegst ys mit a ein. + +Anmörkung: Druckst , kimmst eyn de Befelhsartweis zrugg older brichst + ayn Faudung ab, dö wo dyr schiefgangen ist. + + Ietz tue mit dyr Letzn 2 weiter. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.1.: LÖSHFAUDUNGEN + + + ** Demmlt dw , dyrmitst ayn Wort löschst. ** + + 1. Druck , dyrmit s aau gwiß ist, däßst in dyr Befelhsartweis bist. + + 2. Bewög önn Mörkl zo dyr mit ---> angmörktn Zeil unt. + + 3. Und daa geest ietz auf n Anfang von aynn Wort, dös wo glöscht ghoert. + + 4. Zipf dw , däßst dös gantze Wort löschst. + + Nöbnbei: Dyr Buechstabn d erscheint auf dyr lösstn Zeil von n Bildschirm, + sobaldst n eingibst. Dyr Wimm wartt ietz drauf, däß öbbs kimmt, al- + so daader ayn w . Seghst freilich öbbs Anderts wie ayn d , + naacherd haast öbbs Falschs demmlt. Druck aft und pröblt + s non aynmaal. +---> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin. + + 5. Äfert d Schritt 3 und 4, hinst däß dyr Saz pässt, und gee aft gan dyr + Letzn 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN + + + ** Gib d$ ein, däßst hinst eyn s Zeilnend löschst. ** + + 1. Druck , dyrmitst aau gwiß in dyr Befelhsartweis bist. + + 2. Bewög önn Mörkl hinst eyn de mit ---> angmörkte Zeil untn. + + 3. Gee mit n Mörkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn . . + + 4. Zipf d$ , däßst hinst eyn s End von dyr Zeil löschst. + +---> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn. + + + 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.3: PFEMERER UND WOLENDER + + + Vil Faudungen, wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo- + lend zamm. Bal i also öbbs löschn will, schreib i ainsting d und aft s "Wo- + lend", dös haisst also, "wolend", "wohin" däß i will - older was i halt gnaun + löschn will. + + + + + + + Daader also, was i wie löschn kan: + w - hinst eyn n Anfang von n naehstn Wort AANE dönn sein eersts Zaichen. + e - gan n End von n ietzundn Wort MIT dönn seinn lösstn Zaichen. + $ - zo n End von dyr Zeil MIT derer irn lösstn Zaichen. + + Also löscht de Tastnfolg de allss umbb n Mörkl hinst eyn s Wortend. +Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mörkl + entspröchet weiter. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN + + + ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel entspröchet oft gangen. ** + + 1. Bewög önn Mörkl gan n Anfang von dyr Zeil mit ---> dyrvor unt. + + 2. Zipf 2w , däßst mit n Mörkl zwai Wörter weitergeest. + + 3. Zipf 3e , däßst mit n Mörkl auf s End von n drittn Wort kimmst. + + 4. Zipf 0 (aynn Nuller), däßst eyn n Anfang von dyr Zeil hinkimmst. + + 5. Widerhol d Schritt 2 und 3 mit verschaidne Zöler. + + ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern. + + 6. Gee weiter gan dyr Letzn 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN + + + ** Ayn Zal vor aynn Pfemerer füert dönn entspröchet oft aus. ** + + Also, i mecht löschn, und zwaar öbbs Bestimmts, und dös so und so oft: Daa + dyrzue benutz i aynn Zöler: + d Zöler Wolend (also önn Bewögungsschrit) + + 1. Bewög önn Mörkl zo n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an- + gmörktn Zeil. + + 2. Demmlt d2w , dyrmitst de ganz grooßgschribnen Wörter löschst. + + 3. Äfert d Schritt 1 und 2 mit dönn entspröchetn Zöler, dyrmitst de drauf- + folgetn ganz großgschribnen Wörter mit ayner ainzignen Faudung löschst: + + +---> Dö ABC DE Zeil FGHI JK LMN OP mit Wörter ist Q RS TUV ietz berichtigt. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.6: ARECHTN AUF ZEILN + + + ** Zipf dd , um ayn gantze Zeil z löschn. ** + + Weil s gro oft vürkimmt, däß myn gantze Zeiln löscht, kaamend schoon d Ent- + wickler von n Urwimm daa drauf, däß myn ainfach dd gan dönn Zwök schreibt. + + + 1. Bewög önn Mörkl gan dyr zwaittn Zeil in n untignen "Gedicht". + 2. Zipf dd , um dö Zeil z löschn. + 3. Ietz bewögst di gan dyr viertn Zeil. + 4. Zipf 2dd , um zwo Zeiln zo n Löschn. + +---> 1) Roosn seind root; +---> 2) Drunter ist s Koot. +---> 3) Veigerln seind blau. +---> 4) Umgrabn tuet s d Sau. +---> 5) D Ur sait de Zeit, +---> 6) Sait, däß s mi freut, +---> 7) Dirndl, dein Gschau. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN) + + + ** Zipf u , dyrmitst de lösstn Faudungen ruggltst ** + ** older U , um ayn gantze Zeil widerherzstölln. ** + + 1. Bewög önn Mörkl gan dyr mit ---> angmörktn Zeil unt und gee dyrmit auf n + eerstn Faeler. + 2. Zipf x , däßst dös eerste z vile Zaichen löschst. + 3. Ietz demmlt u , dyrmitst de lösste Faudung ruggltst. + 4. Ietz behöb allsand Faeler auf dyr Zeil mit dyr Hilf von n Befelh x . + 5. Aft gibst ayn U (grooß) ein, däßst de Zeil wider yso hinbringst, wie s + gwösn ist. + 6. So, und ietz demmltst so oft u , hinst däßst s U und de andern Fau- + dungen rugggöngig gmacht haast. + 7. Und ietzet widerum schreibst so oft r , hinst däßst allsand Be- + felh widerhergstöllt, z haissn allsse rugg-grugglt haast (also d Rugggön- + gigmachungen rugggöngig gmacht). +---> Beerichtig d Faeller voon dehrer Zeiil und sttöll s mitt n Ruggruggln wi- + der her. + 8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter. + Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 2 + + + 1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf: dw + 2. Um umbb n Mörkl hinst eyn s End von dyr Zeil zo n Löschn, demmlt d$ + 3. Dyrmitst ayn gantze Zeil löschst, gib ein: dd + 4. Mechst ayn Bewögung, ayn "Wolend", öfters, stöll de entspröchete Zal dyr- + vor: 3dw older aau: d3w + 5. Dyr Pfueg für ayn Önderungsfaudung lautt yso: + Pfemerer [Zal] Bewögungsschrit (Wolend) + Und dös haisst: + Dyr PFEMERER gibt an, WAS taan ghoert, öbbenn d = löschn (»delete«). + [ZAL] - Ayn Zal KAN myn angöbn, wenn myn halt ayn Wolend öfter habn will. + S WOLEND, also dyr Schrit WOHIN, besagt, auf was i aushin will, öbbenn + auf aynn Wortanfang ( w ), s End von dyr Zeil ( $ ) und so weiter. + + 6. Däßst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller: 0 + + 7. Um öbbs Vorigs wider z ruggln, gib ein: u (klain also) + Um allsand Önderungen in ayner Zeil z ruggln, haast: U (also grooß) + Um "rugg-z-ruggln", also allss wider herzstölln, zipf: r + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.1: ANFÜEGN (»put«) + + + ** Zipf p , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. ** + + 1. Bewög önn Mörkl gan dyr eerstn untignen Zeil mit ---> dyrvor. + + 2. Zipf dd , um sele Zeil z löschn und dyrmit in ayner Wimm-Osn zo n Spei- + chern. + + 3. Bewög önn Mörkl gan dyr Zeil c), ÜBER derer, daa wo de glöschte Zeil ein- + hinkemmen sollt. + + 4. So, und ietz gibst ainfach p ein, und schoon haast dö Zeil unter derer + mit n Mörkl drinn. + 5. Äfert d Schritt 2 hinst 4, hinst däßst allsand Zeiln yso naachynaynand + haast, wie s hinghoernd. + +---> d) Kanst du dös aau? +---> b) Veigerln seind blau. +---> c) Bedachtn kan myn lernen. +---> a) Roosn seind root. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.2: ERSÖTZN (»replace«) + + + ** Zipf rx , um dös Zaichen unter n Mörkl durch x z ersötzn. ** + + 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil mit ---> dyrvor. + + 2. Bewög önn Mörkl, hinst däß yr auf n eerstn Faeler steet. + + 3. Zipf r und drafter dös Zaichen, wo dyrfür daa hinghoert. + + 4. Widerhol d Schritt 2 und 3, hinst däßst de eerste Zeil gmaeß dyr zwaittn + berichtigt haast: +---> Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft! +---> Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft! + + 5. Ietz tue mit dyr Letzn 3.3 weiter. + +Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn + mit n Auswendiglernen! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.3: ÖNDERN (»change«) + + + ** Um hinst eyn s Wortend z öndern, zipf ce . ** + + 1. Gee mit n Mörkl auf de eerste mit ---> angmörkte Zeil. + + 2. Ietz farst netty auf s "s" von Wstwr hin. + + 3. Zipf ce ein und aft d Wortberichtigung, daader also örter . + + 4. Druck und bewög önn Mörkl zo n naehstn Zaichen, wo göndert ghoert. + + 5. Äfert d Schritt 3 und 4, hinst däß dyr eerste Saz wie dyr zwaitte ist. + +---> Ainige Wstwr von derer Zlww ghhnnd mit n Öndern-Pfemerer gaauu. +---> Ainige Wörter von derer Zeil ghoernd mit n Öndern-Pfemerer göndert. + +ce löscht also s Wort und schlaaufft di eyn d Eingaab-Artweis. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.4.: NON MEERER ÖNDERUNGEN PFELFS c + + + ** D Löshfaudung c arechtt mit de nömlichnen Wolender wie dö mit d ** + + 1. Dyr Önder-Pfemerer arechtt anleich wie d Löshfaudung mit d , und zwaar + yso: + c [Zal] Bewögungsschrit (Wolend) + + 2. D Wolender seind de gleichn, öbbenn w für Wort und $ für s Zeilnend. + + + 3. Bewög di zo dyr eerstn untignen Zeil mit ---> . + + 4. Ietz geest auf dönn eerstn Faeler. + + 5. Zipf c$ , gib önn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft + . +---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn. +---> S End von derer Zeil sollt mit n Befelh c$ berichtigt werdn. + +Denk allweil dran, däßst iederzeit mit dyr Ruggtastn Faeler ausbössern kanst. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 3 + + + 1. Um ayn vorher glöschts Gwort anzfüegn, zipf p . Daa dyrmit werd dös + gantze Gwort NAACH n Mörkl angfüegt. Wenn s ayn gantze Zeil gwösn ist, + werd dö sel als de Zeil unterhalb n Mörkl eingfüegt. + + 2. Um dös Zaichen unter n Mörkl, also wo dyr Mörkl ist, z ersötzn, zipf r + und aft dös Zaichen, wost daadl habn willst. + + 3. Dyr Önderungspfemerer ( c = »change«) laasst ainn umbb n Mörkl hinst eyn s + End von n Wolend öndern. Zipf ce , dyrmitst umbb n Mörkl hinst eyn s End + von n Wort öndertst, und c$ hinst eyn s End von dyr Zeil. + + 4. Für d Önderung lautt dyr Pfueg: + + c [Zal] Wolend + +Ietz tue mit dyr naehstn Letzn weiter. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND + +** Demmlt g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. ** + ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. ** + +Anmörkung: Lis dö gantze Letzn daader durch, ee wennst iewign öbbs unternimmst! + + 1. Druck g . Auf dös hin erscheint auf derer Seitt ganz unt ayn Dar- + standsmeldung mit n Dauttichtnam und n Befand innerhalb dyr Dautticht. + Mörk dyr de Zeilnnummer für n Schrit 3. + +Anmörkung: Müglicherweis seghst aau önn Mörklbefand in n zesmen untern Bild- + schirmögg. Aft ist s "Lindl" (»ruler«) eingstöllt; meerer über dös + laasst dyr dyr Befelh :help 'ruler' ausher. + 2. Druck G , um an s End von dyr Dautticht z kemmen. + gg gibst ein, däßst gan n Anfang von dyr Dautticht aufhinkimmst. + + 3. Gib d Nummer von derer Zeil ein, daa wost vorher warst, und aft non G . + Dös bringt di zrugg gan seler Zeil, daa wost stuenddst, wiest dös eerste + Maal g gadruckst. + + 4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.2: DYR BEFELH ZO N SUECHEN + + + ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. ** + + 1. Du gibst also in dyr Befelhsartweis s Zaichen / ein. Dös sel wie aau dyr + Mörkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung : . + + 2. Ietz zipf Faeeler . Netty um dös 'Faeeler' willst ietz suechen. + + 3. Willst um gnaun dönn Ausdruk weitersuechen, zipf ainfach n (wie »next«). + Willst hinzrugg suechen, aft gibst N ein. + + 4. Um von Haus aus zruggaus z suechen, nimm ? statt / her. + + 5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, nimm o , und dös + öfter, wennst weiter zrugg willst. Mit i widerum kimmst vorwärts. + +---> Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler + +Anmörkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi- + der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wär auf aus. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.3: DE GÖGNKLAMMERN FINDDN + + + ** Zipf % , um de entspröchete Klammer ) , ] older } z finddn. ** + + 1. Sötz önn Mörkl auf iewign aine von dene drei Klammern ( , [ older { + in dyr untignen Zeil, wo mit ---> angmörkt ist. + + 2. Ietzet zipf s Zaichen % . + + 3. Dyr Mörkl geet ietz auf de pässete schliessete Klammer. + + 4. Ietz demmlt % , und dyrmit kimmst gan dyr öffneretn Klammer zrugg. + + 5. Sötz önn Mörkl auf ayn anderne Klammer von ({[]}) und pröblt % aus. + +---> Dös ( ist blooß ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. )) + +Anmörkung: Um dö Müglichkeit gaast bsunders froo sein, wennst aynmaal in aynn + Spaichgwort verzweiflt ayn faelete Gögnklammer suechst! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«) + + + ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Ersötzn. ** + + 1. Gee mit n Mörkl zo dyr unt steehetn mit ---> angmörktn Zeil. + + 2. Zipf :s/dee/de . Der Befelh ersötzt alsnan grad dös +eerste "dee", + wo vürkimmt. + + 3. Ietz pröblt s mit :s/dee/de/g . Dös zuesötzliche g ("Pflok" nennt myn + öbbs Sölchers) bewirkt, däß allss, was dyrmit kennzaichnet ist, innerhalb + von dyr ainn Zeil ersötzt werd. + +---> Dee schoenste Zeit, däß myn dee Blüemln anschaut, ist dee schoene Lan- + gesszeit. + 4. Um ietz allsand Suechbegriff innerhalb von zwo Zeiln zo n Öndern, zipf + :#,#s/alt/neu/g , wobei # ieweils für de eerste und lösste Zeil von dönn + Pfraich steet. + :%s/alt/neu/g zipfst, däßst d Vürkemmen in dyr gantzn Dautticht öndertst. + Mit :%s/alt/neu/gc finddst allsand Vürkemmen in dyr gsamtn Dautticht; + daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 4 + + 1. g zaigt dönn ietzundn Dauttichtbefand und önn Darstand dyrvon an. + G bringt di an s End von dyr Dautticht. + G bringt di gan dyr entspröchetn Zeilnnummer. + gg geet +grad yso. + gg bringt di zo dyr eerstn Zeil. + 2. D Eingaab von / mit aynn Ausdruk suecht VÜRSHLING um dönn Ausdruk. + Gibst ? und aynn Suechbegrif ein, suecht s um dönn ÄRSHLING. + Zipf naach ayner Suech n ; naacherd werd in de gleiche Richtung weiter- + gsuecht. Mit N geet s umkeerter weiter. + o bringt di zo ölterne Befändd zrugg, i zo neuerne. + + 3. D Eingaab von % , wenn dyr Mörkl auf ainer von dene Klammern steet: ({[ + )]} , bringt di zo dyr Gögnklammer. + + 4. Um dös eerste Vürkemmen von "alt" in ayner Zeil durch "neu" z ersötzn, + zipf :s/alt/neu . + Um allsand in ayner Zeil z ersötzn, zipf :s/alt/neu/g . + Mechst allss in zwo Zeiln ersötzn, demmlt zo n Beispil :5,6s/alt/neu/g . + Mechst allss in dyr gantzn Dautticht ersötzn, gib ein: :%s/alt/neu/g . + Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÜERN + + + ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach :! ein. ** + + 1. Zipf dönn bekanntn Befelh : , dyrmitst mit n Mörkl auf n Bildschirm + ganz abhin kimmst. Draufhin kanst aynn gwonen Gfäßbefelh eingöbn. + + 2. Zeerst kimmt aber non ayn Ruefzaichen ! . Und ietzet haast d Müglich- + keit, ayn beliebige ausserige Gfäßfaudung auszfüern. + + 3. Als Beispil zipf :!ls ; und schoon haast ayn Auflistung von deinn + Verzaichniss, netty wie wennst ganz gwon in n Eingib wärst. Geet ls + aus iewign aynn Grund nit, aft pröblt s mit :!dir . + +Also non aynmaal: Mit dönn Angang kan ayn iede beliebige ausserige Faudung aus- + gfüert werdn, aau mit Auerwerdd. + +Und wolgmörkt: Alle Befelh, wo mit : angeend, müessend mit bstö- + tigt werdn. Dös dyrsagn myr fürbaß +niemer. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.2: NON MEERER DRÜBER, WIE MYN DAUTTICHTN SCHREIBT + + + ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM . ** + + 1. Zipf :!dir older :!ls , däßst dyr ayn Auflistung von deinn Verzaich- + niss ausherlaasst. Däßst drafter eingöbn muesst, waisst ee schoon. + + 2. Suech dyr aynn Dauttichtnam aus, dönn wo s non nit geit, öbbenn POCH . + + 3. Ietz demmlt: :w POCH (also mit POCH als dönn neuen Dauttichtnam). + + 4. Dös speichert ietz de gantze Dautticht, also önn Wimmschainer, unter dönn + Nam POCH. Dös kanst leicht überprüeffen, indem däßst ainfach :!ls older + :!dir zipfst und dyrmit deinn Verzaichnissinhalt seghst. + +Anmörkung: Stigst ietz aus n Wimm aus und gännst n aft wider mit vim POCH , + naacherd wär dö Dautticht ayn gnaune Aamum von n Schainer dyrselbn, + wiest n gspeichert haast. + + 5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit :!del POCH + beziehungsweis bei aynn Unixgebäu mit :!rm POCH . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN + +** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT ** + + 1. Ruck önn Mörkl auf netty dö Zeil daader. + + 2. Demmlt v und gee mit n Mörkl auf dönn fümftn Auflistungspunt untet. Du + seghst glei, däß s Gwort vürherghöbt erscheint. + + 3. Druck s Zaichen : . Ganz unt auf n Bildschirm erscheint :'<,'> . + + 4. Zipf w POCH , wobei s dönn Dauttichtnam POCH non nit geit. Vergwiß di, + däßst dös :'<,'>w POCH aau +seghst, ee wennst druckst. + + 5. Dyr Wimm schreibt de ausgwaltn Zeiln eyn de Dautticht POCH einhin. Benutz + :!dir older :!ls , däßst dös überprüeffst. Lösh s fein nit öbbenn! Mir + brauchend s nömlich für de naehste Letzn. + +Anmörkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um- + aynandfarn, um d Auswal z veröndern. Drafter kan myn mit yn aynn + Pfemerer mit dönn Gwort öbbs machen. Zo n Beispil löscht d dös + Gwort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN + + + ** Um önn Inhalt von ayner Dautticht einzlösn, zipf :r DAUTTICHTNAM ** + + 1. Sötz önn Mörkl über dö Zeil daader. + +OBACHT: Aft däßst önn Schrit 2 ausgfüert haast, seghst auf aynmaal öbbs aus + dyr Letzn 5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi- + derfinddst. + 2. Ietz lis dein Dautticht POCH ein, indem däßst d Faudung :r POCH aus- + füerst, wobei wie gsait POCH für dönn von dir ausgsuechtn Dauttichtnam + steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt. + + 3. Um zo n Überprüeffen, ob de Dautticht aau gwiß einglösn ist, gee zrugg; + und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 5.3. geit, s + Urniss und de eingfüegte Dauttichtfassung. + +Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei- + spil list :r !ls d Ausgaab von dyr Faudung ls ein und füegt s + unterhalb n Mörkl ein. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 5 + + + 1. :!FAUDUNG füert aynn ausserignen Befelh aus. + + Daader ayn Öttlych gwänddte Beispiler: + (Fenstl) (Unix - Linux) + :!dir :!ls - listt s Verzaichniss auf. + :!del DAUTTICHT :!rm DAUTTICHT - verweitert sele Dautticht. + + 2. :w DAUTTICHT speichert de ietzunde Wimmdautticht unter dönn besagtn Nam. + + 3. v WOLEND :w DAUTTICHTNAM schreibt de sichtisch ausgwaltn Zeiln eyn de + Dautticht mit seln Nam. + + 4. :r DAUTTICHTNAM ladt sele Dautticht und füegt s unterhalb n Mörklbefand + ein. + + 5. :r !dir list d Ausgaab von dyr Faudung dir und füegt s unterhalb n + Mörklbefand ein. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.1: ZEIL ÖFFNEN (»open«) + + + ** Zipf o , um ayn Zeil unterhalb n Mörkl z öffnen und eyn d ** + ** Einfüegartweis z kemmen. ** + + 1. Bewög önn Mörkl zo dyr eerstn mit ---> angmörktn Zeil unt. + + 2. Zipf o (klain), um ayn Zeil UNTERHALB n Mörkl z öffnen und mit dyr Ein- + füegartweis weiterztuen. + + 3. Ietzet zipf ayn Weeng öbbs und druck , um d Einfüegartweis z ver- + laassn. +---> Mit o werd dyr Mörkl in dyr Einfüegartweis auf de offene Zeil gsötzt. + + 4. Um ayn Zeil OBERHALB n Mörkl aufzmachen, gib ainfach ayn groosss O statt + yn aynn klainen ein. Versuech dös auf dyr untignen Zeil. + +---> Öffnet ayn Zeil über derer daader mit O , wenn dyr Mörkl auf derer Zeil + ist. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.2: GWORT ANFÜEGN (»append«) + + + ** Zipf a , um öbbs NAACH n Mörkl einzfüegn. ** + + 1. Bewög önn Mörkl gan n Anfang von dyr eerstn Üebungszeil mit ---> unt. + + 2. Druck e , hinst däß dyr Mörkl an n End von Zei steet. + + 3. Zipf ayn klains a , um öbbs NAACH n Mörkl anzfüegn. + + 4. Vergöntz dös Wort wie in dyr Zeil drunter. Druck , um d Schreib- + Artweis z verlaassn. + + 5. Bewög di mit e zo n naehstn ungantzn Wort und widerhol d Schritt 3 und + 4. + +---> Dö Ze biett ayn Glögn , ayn Gwort in ayner Zeil anzfü. +---> Dö Zeil biett ayn Glögnet, ayn Gwort in ayner Zeil anzfüegn. + +Anmörkung: a , i und A bringend ainn gleichermaaßn eyn d Einfüegartweis; + dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«) + + + ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z ersötzn. ** + + 1. Bewög önn Mörkl zo dyr eerstn untignen, mit ---> angmörktn Zeil. + Gee mit n Mörkl gan n Anfang von n eerstn xxx . + + 2. Ietz druck R und zipf sele Zal, wo drunter in dyr zwaittn Zeil steet, + yso däß de sel s xxx ersötzt. + + 3. Druck , um d Ersötzungsartweis z verlaassn. Du gspannst, däß dyr + Rest von dyr Zeil unveröndert bleibt. + + 4. Äfert die Schritt, um dös überblibne xxx z ersötzn. + +---> S Zunddn von 123 zo xxx ergibt xxx. +---> S Zunddn von 123 zo 456 ergibt 579. + +Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis, aber ayn ieds eindem- + mlte Zaichen löscht ayn vorhanddns. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.4: GWORT AAMEN UND EINFÜEGN + + ** Benutz önn Pfemerer y , um öbbs z aamen, und p , um öbbs einzfüegn. ** + + 1. Gee zo dyr mit ---> angmörktn Zeil unt und sötz önn Mörkl hinter "a)". + + 2. Ginn d Sichtisch-Artweis mit v und bewög önn Mörkl gnaun vor "eerste". + + 3. Zipf y , um dönn vürherghöbtn Tail z aamen. + + 4. Bewög önn Mörkl gan n End von dyr naehstn Zeil: j$ + + 5. Demmlt p , um dös Gwort einzfüegn, und aft: a zwaitte . + + 6. Benutz d Sichtischartweis, um " Eintrag." auszwaln, aam s mittls y , be- + wög di gan n End von dyr naehstn Zeil mit j$ und füeg s Gwort dortn mit + p an. + +---> a) dös ist dyr eerste Eintrag. + b) +Anmörkung: Du kanst y aau als Pfemerer verwenddn; yw zo n Beispil aamt + hinst eyn n naehstn Wortanfang (aane dönn selber). +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.5: SCHALTTER SÖTZN + +** Sötz aynn Schaltter yso, däß ayn Suech older Ersötzung Grooß- und Klain- ** + ** schreibung übergeet. ** + + 1. Suech um 'übergee", indem däßst /übergee eingibst. + Widerhol d Suech ayn Öttlych Maal, indem däßst de Tastn n druckst. + + 2. Sötz de Zwisl - önn Schaltter - 'ic' (»ignore case«), indem däßst :set ic + eingibst. + 3. Ietz suech wider um 'übergee' und tue aau wider mit n weiter. Daa fallt + dyr auf, däß ietz öbbenn aau Übergee und ÜBERGEE hergeet. + + 4. Sötz de Zwisln 'hlsearch' und 'incsearch' pfelfs: :set hls is + + 5. Widerhol d Suech und bobacht, was ietz gschieght: /übergee + + 6. Däßst grooß und klain wider gwon unterscheidst, zipf: :set noic + +Anmörkung: Mechst de Tröffer niemer vürherghöbt seghn, gib ein: :nohlsearch +Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \c + in n Suechausdruk: /übergee\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 6 + + 1. Zipf o , um ayn Zeil UNTERHALB n Mörkl z öffnen und d Einfüegartweis z + ginnen. + Zipf O , um ayn Zeil OBERHALB n Mörkl z öffnen. + + 2. Zipf a , um NAACH n Mörkl ayn Gwort einzfüegn. + Zipf A , um ayn Gwort naach n Zeilnend anzfüegn. + + 3. D Faudung e bringt di gan n End von aynn Wort. + + 4. Dyr Pfemerer y (»yank«) aamt öbbs, p (»put«) füegt dös ein. + + 5. Ayn groosss R geet eyn d Ersötzungsartweis, hinst däß myn druckt. + + 6. D Eingaab von ":set xxx" sötzt de Zwisl "xxx". Ayn Öttlych Zwisln seind: + 'ic' 'ignorecase' Grooß/klain wurst bei ayner Suech + 'is' 'incsearch' Zaig aau schoon ayn Tailüberainstimmung + 'hls' 'hlsearch' Höb allsand pässetn Ausdrück vürher + Dyr Schaltternam kan in dyr Kurz- older Langform angöbn werdn. + + 7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst: :set noic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.1: AYN HILFGWORT AUFRUEFFEN + + + ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung". ** + + Eyn n Wimm ist ayn ausfüerliche "Gebrauchsanweisung" einbaut. Für s Eerste + pröblt ainfach ains von dene dreu aus: + - Druck d -Tastn, wennst öbbenn aine haast. + - Druck de Tastn , fallsst ys haast. + - Zipf :help + + Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie dös mit dyr Hilf geet. + Demmlt w w , um von ainn Fenster zo n andern zo n Springen. + Demmlt :q , um s Hilffenster zo n Schliessn. + + Du kanst zo so guet wie allssand ayn Hilf finddn, indem däßst yn dyr Faudung + :help aynn Auerwerd naachstöllst und istig nit vergisst. Pröblt dös: + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF + + + ** Mutz önn Wimm mit de einbautn Faehigkeitn auf. ** + + Dyr Wimm besitzt ayn Wösn Schäftungen, wo über n Urwimm aushingeend, aber de + meerern dyrvon seind in dyr Vorgaab ausgschaltt. Dyrmitst meerer aus n Wimm + ausherholst, erstöllst ayn "vimrc"-Dautticht. + + 1. Lög ayn "vimrc"-Dautticht an; dös geet ie naach Betribsgebäu verschidn: + :e ~/.vimrc für s Unix + :e $VIM/_vimrc bei n Fenstl + + 2. Ietz lis önn Inhalt von dyr Beispil-"vimrc"-Dautticht ein: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Speichert de Dautticht mit: + :w + + 4. Bei n naehstn Gin von n Wimm ist aft d Füegnussvürherhöbung zuegschalttn. + Du kanst dyr allss eyn dö Dautticht einhinschreibn, wasst bständig habn + willst. Meerer dyrzue erfarst unter: :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.3: VERGÖNTZN + + + ** Befelhszeilnvergöntzung mit d und ** + + 1. Vergwiß di, däß dyr Wimm nit auf n Urwimm-"Glais" fart: :set nocp + + 2. Schaug naach, wölcherne Dauttichtn däß s in n Verzaichniss geit: :!ls + older :!dir + 3. Zipf önn Anfang von ayner Faudung: :e + + 4. Druck d , und dyr Wimm zaigt ayn Listn von Faudungen, wo mit "e" + angeend. + 5. Druck , und dyr Wimm vervollstöndigt önn Faudungsnam zo ":edit". + + 6. Füeg ayn Laerzaichen und önn Anfang von ayner besteehetn Dautticht an: + :edit DAU + + 7. Druck . Dyr Wimm vergöntzt önn Nam, dös haisst, wenn yr aindeuttig + ist. +Anmörkung: D Vergöntzung geit s für aynn Hauffen Faudungen. Versuech ainfach + d und . Bsunders nützlich ist dös bei :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 7 + + + 1. Zipf :help oder druck oder , um ayn Hilffenster z öffnen. + + 2. Zipf :help FAUDUNG , um auf ayn Hilf gan aynn Befelh z kemmen. + + 3. Zipf w w , um zo n andern Fenster z springen. + + 4. Zipf :q , um s Hilffenster z schliessn. + + 5. Erstöll ayn vimrc-Ginschripf zuer Sicherung von deine Mötzneinstöllungen. + + 6. Druck d , aft däßst naach : ayn Faudung angfangt haast, dyr- + mitst mügliche Vergöntzungen anzaigt kriegst. + Druck für ain Vervollstöndigung yllain. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Dös wär ietzet s End von n Wimmschainer. Gangen ist s daa drum, aynn kurtzn + und bündignen Überblik über s Blat WIMM z lifern, netty vil gnueg, däß myn + für s Eerste wirklich öbbs dyrmit anfangen kan. Dyrmit ist s aber auf kain + Weitn non nit taan; dyr Wimm haat schoon non vil meerer auf Lager. Lis als + Naehsts aynmaal s Benutzerhandbuech: :help user-manual + + Zo n Weiterlösn und Weiterlernen wör dös Buech daader zo n Empfelhen: + Vim - Vi Improved - von n OUALLINE Steve + Verlaag: New Riders + Dös ist dös eerste Buech, wo ganz yn n Wimm gwidmt ist, netty dös Grechte für + Anfönger. Es haat ayn Wösn Beispiler und aau Bilder drinn. + See http://iccf-holland.org/click5.html + + Dös folgete Buech ist schoon ölter und meerer über n Urwimm als wie über n + Wimm, aber aau zo n Empfelhen: Textbearbeitung mit dem vi-Editor - von dyr + LAMB Linda und n ROBBINS Arnold - Verlaag O'Reilly - Buechlaittzal (ISBN): + 3897211262 + In dönn Buech kan myn fast allss finddn, was myn mit n Urwimm angeen mecht. + De söxte Ausgaab enthaltt aau schoon öbbs über n Wimm. + Als ietzunde Bezugniss für d Fassung 7 und ayn pfrenge Einfüerung dient dös + folgete Buech: + vim ge-packt von n WOBST Reinhard + mitp-Verlaag, Buechlaittzal 978-3-8266-1781-2 + Trotz dyr recht pfrengen Darstöllung ist s durch seine viln nützlichnen Bei- + spiler aau für Einsteiger grad grecht. Probhaeupster und de Beispilschripfer + seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html + + Verfasst habnd dönn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr + Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwürff, wo + dyr SMITH Charles von dyr Kolraader Allschuel (Colorado State University) + zuer Verfüegung gstöllt haat. Gundpost: bware@mines.colorado.edu + Für n Wimm haat n dyr MOOLENAAR Bram barechtt. + De bairische Übersötzung stammt von n HELL Sepp 2009, ayn Weeng überarechtt + 2011. Sein Gundpostbrächt ist sturmibund@t-online.de + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.ca b/share/vim/vim74/tutor/tutor.ca similarity index 100% rename from share/vim/vim73/tutor/tutor.ca rename to share/vim/vim74/tutor/tutor.ca diff --git a/share/vim/vim73/tutor/tutor.ca.utf-8 b/share/vim/vim74/tutor/tutor.ca.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.ca.utf-8 rename to share/vim/vim74/tutor/tutor.ca.utf-8 diff --git a/share/vim/vim73/tutor/tutor.cs b/share/vim/vim74/tutor/tutor.cs similarity index 100% rename from share/vim/vim73/tutor/tutor.cs rename to share/vim/vim74/tutor/tutor.cs diff --git a/share/vim/vim73/tutor/tutor.cs.cp1250 b/share/vim/vim74/tutor/tutor.cs.cp1250 similarity index 100% rename from share/vim/vim73/tutor/tutor.cs.cp1250 rename to share/vim/vim74/tutor/tutor.cs.cp1250 diff --git a/share/vim/vim73/tutor/tutor.cs.utf-8 b/share/vim/vim74/tutor/tutor.cs.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.cs.utf-8 rename to share/vim/vim74/tutor/tutor.cs.utf-8 diff --git a/share/vim/vim74/tutor/tutor.de b/share/vim/vim74/tutor/tutor.de new file mode 100644 index 00000000..a78335a8 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.de @@ -0,0 +1,980 @@ +=============================================================================== += W i l l k o m m e n im V I M T u t o r - Version 1.7D = +=============================================================================== + + Vim ist ein sehr mächtiger Editor, der viele Befehle bereitstellt; zu viele, + um alle in einem Tutor wie diesem zu erklären. Dieser Tutor ist so + gestaltet, um genug Befehle vorzustellen, dass Du die Fähigkeit erlangst, + Vim mit Leichtigkeit als einen Allzweck-Editor zu benutzen. + Die Zeit für das Durcharbeiten dieses Tutors beträgt ca. 25-30 Minuten, + abhängig davon, wie viel Zeit Du mit Experimentieren verbringst. + + ACHTUNG: + Die in den Lektionen angewendeten Kommandos werden den Text modifizieren. + Erstelle eine Kopie dieser Datei, in der Du üben willst (falls Du "vimtutor" + aufgerufen hast, ist dies bereits eine Kopie). + + Es ist wichtig, sich zu vergegenwärtigen, dass dieser Tutor für das Anwenden + konzipiert ist. Das bedeutet, dass Du die Befehle ausführen musst, um sie + richtig zu lernen. Wenn Du nur den Text liest, vergisst Du die Befehle! + + Jetzt stelle sicher, dass Deine Umstelltaste NICHT gedrückt ist und betätige + die j Taste genügend Male, um den Cursor nach unten zu bewegen, so dass + Lektion 1.1 den Bildschirm vollkommen ausfüllt. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.1: BEWEGEN DES CURSORS + + ** Um den Cursor zu bewegen, drücke die h,j,k,l Tasten wie unten gezeigt. ** + ^ Hilfestellung: + k Die h Taste befindet sich links und bewegt nach links. + < h l > Die l Taste liegt rechts und bewegt nach rechts. + j Die j Taste ähnelt einem Pfeil nach unten. + v + 1. Bewege den Cursor auf dem Bildschirm umher, bis Du Dich sicher fühlst. + + 2. Halte die Nach-Unten-Taste (j) gedrückt, bis sie sich wiederholt. + Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst. + + 3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.2 zu bewegen. + +Bemerkung: Immer, wenn Du Dir unsicher bist über das, was Du getippt hast, + drücke , um Dich in den Normalmodus zu begeben. + Dann gib das gewünschte Kommando noch einmal ein. + +Bemerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du + hjkl benutzt, wirst Du in der Lage sein, Dich sehr viel schneller + umherzubewegen, wenn Du Dich einmal daran gewöhnt hast. Wirklich! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.2: VIM BEENDEN + + + !! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies + diese gesamte Lektion!! + + 1. Drücke die Taste (um sicherzustellen, dass Du im Normalmodus bist). + + 2. Tippe: :q! . + Dies beendet den Editor und VERWIRFT alle Änderungen, die Du gemacht hast. + + 3. Wenn Du die Eingabeaufforderung siehst, gib das Kommando ein, das Dich zu + diesem Tutor geführt hat. Dies wäre: vimtutor + + 4. Wenn Du Dir diese Schritte eingeprägt hast und Du Dich sicher fühlst, + führe Schritte 1 bis 3 aus, um den Editor zu verlassen und wieder + hineinzugelangen. + +Bemerkung: :q! verwirft alle Änderungen, die Du gemacht hast. In + einigen Lektionen lernst Du , die Änderungen in einer Datei zu speichern. + + 5. Bewege den Cursor abwärts zu Lektion 1.3. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.3: TEXT EDITIEREN - LÖSCHEN + + + ** Drücke x um das Zeichen unter dem Cursor zu löschen. ** + + 1. Bewege den Cursor zu der mit ---> markierten Zeile unten. + + 2. Um die Fehler zu beheben, bewege den Cursor, bis er auf dem Zeichen steht, + das gelöscht werden soll. + + 3. Drücke die x Taste, um das überflüssige Zeichen zu löschen. + + 4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist. + +---> Die Kkuh sprangg übber deen Moond. + + 5. Wenn nun die Zeile korrekt ist, gehe weiter zur Lektion 1.4. + +Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu + lernen, lerne vielmehr durch Anwenden. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.4: TEXT EDITIEREN - EINFÜGEN + + + ** Drücke i , um Text einzufügen. ** + + 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. + + 2. Um die erste Zeile mit der zweiten gleichzumachen, bewege den Cursor auf + das erste Zeichen NACH der Stelle, wo der Text eingefügt werden soll. + + 3. Drücke i und gib die notwendigen Ergänzungen ein. + + 4. Wenn jeweils ein Fehler beseitigt ist, drücke , um zum Normalmodus + zurückzukehren. + Wiederhole die Schritte 2 bis 4, um den Satz zu korrigieren. + +---> In dieser ft etwas . +---> In dieser Zeile fehlt etwas Text. + + 5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.5: TEXT EDITIEREN - ANFÜGEN + + + ** Drücke A , um Text anzufügen. ** + + 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. + Es ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht. + + 2. Drücke A und gib die nötigen Ergänzungen ein. + + 3. Wenn das Anfügen abgeschlossen ist, drücke , um in den Normalmodus + zurückzukehren. + + 4. Bewege den Cursor zur zweiten mit ---> markierten Zeile und wiederhole + die Schritte 2 und 3, um den Satz zu korrigieren. + +---> In dieser Zeile feh + In dieser Zeile fehlt etwas Text. +---> Auch hier steh + Auch hier steht etwas Unvollständiges. + + 5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.6. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.6: EINE DATEI EDITIEREN + + + ** Benutze :wq , um eine Datei zu speichern und Vim zu verlassen. ** + + !! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies + diese gesamte Lektion!! + + 1. Verlasse den Editor so wie in Lektion 1.2: :q! + + 2. Gib dieses Kommando in die Eingabeaufforderung ein: vim tutor + 'vim' ist der Aufruf des Editors, 'tutor' ist die zu editierende Datei. + Benutze eine Datei, die geändert werden kann. + + 3. Füge Text ein oder lösche ihn, wie Du in den vorigen Lektionen gelernt + hast. + + 4. Speichere die geänderte Datei und verlasse Vim mit: :wq + + 5. Starte den vimtutor neu und bewege Dich zu der folgenden Zusammenfassung. + + 6. Nachdem Du obige Schritte gelesen und verstanden hast, führe sie durch. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 1 + + + 1. Der Cursor wird mit den Pfeiltasten oder den Tasten hjkl bewegt. + h (links) j (unten) k (aufwärts) l (rechts) + + 2. Um Vim von der Eingabeaufforderung auszuführen, tippe: vim DATEI + + 3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe: + :q! . + ODER tippe: :wq , um die Änderungen zu speichern. + + 4. Um das Zeichen unter dem Cursor zu löschen, tippe: x + + 5. Um Text einzufügen oder anzufügen, tippe: + i Einzufügenden Text eingeben Einfügen vor dem Cursor + A Anzufügenden Text eingeben Anfügen nach dem Zeilendene + +Bemerkung: Drücken von bringt Dich in den Normalmodus oder bricht ein + ungewolltes, erst teilweise eingegebenes Kommando ab. + + Nun fahre mit Lektion 2 fort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.1: LÖSCHKOMMANDOS + + + ** Tippe dw , um ein Wort zu löschen. ** + + 1. Drücke um sicherzustellen, dass Du im Normalmodus bist. + + 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. + + 3. Bewege den Cursor zum Anfang eines Wortes, das gelöscht werden soll. + + 4. Tippe dw , um das Wort zu entfernen. + + Bemerkung: Der Buchstabe d erscheint auf der letzten Zeile des Bildschirms, + wenn Du ihn eingibst. Vim wartet darauf, daß Du w eingibst. Wenn Du + ein anderes Zeichen als d siehst, hast Du etwas falsches getippt; + drücke und beginne neu. + +---> Einige Wörter lustig gehören nicht Papier in diesen Satz. + + 5. Wiederhole die Schritte 3 und 4, bis der Satz korrekt ist und gehe + danach zur Lektion 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.2: WEITERE LÖSCHKOMMANDOS + + + ** Tippe d$ , um bis zum Ende der Zeile zu löschen. ** + + 1. Drücke , um sicherzustellen, dass Du im Normalmodus bist. + + 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. + + 3. Bewege den Cursor zum Ende der korrekten Zeile (NACH dem ersten . ). + + 4. Tippe d$ , um bis zum Ende der Zeile zu löschen. + +---> Jemand hat das Ende der Zeile doppelt eingegeben. doppelt eingegeben. + + + 5. Gehe weiter zur Lektion 2.3 , um zu verstehen, was hierbei passiert. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.3: ÜBER OPERATOREN UND BEWEGUNGSZÜGE + + + Viele Kommandos, die Text ändern, setzen sich aus einem Operator und einer + Bewegung zusammen. Das Format für ein Löschkommando mit dem Löschoperator d + lautet wie folgt: + + d Bewegung + + wobei: + d - der Löschoperator + Bewegung - worauf der Löschoperator angewandt wird (unten aufgelistet). + + Eine kleine Auflistung von Bewegungen: + w - bis zum Beginn des nächsten Wortes OHNE dessen erstes Zeichen. + e - zum Ende des aktuellen Wortes MIT dessen letztem Zeichen. + $ - zum Ende der Zeile MIT dem letzen Zeichen. + + Dementsprechend löscht die Eingabe von de vom Cursor an bis zum Wortende. + +Bemerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den + Cursor entsprechend. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.4: ANWENDUNG EINES ZÄHLERS FÜR EINEN BEWEGUNGSSCHRITT + + + ** Die Eingabe einer Zahl vor einem Bewegungsschritt wiederholt diesen. ** + + 1. Bewege den Cursor zum Beginn der mit ---> markierten Zeile unten. + + 2. Tippe 2w , um den Cursor zwei Wörter vorwärts zu bewegen. + + 3. Tippe 3e , um den Cursor zum Ende des dritten Wortes zu bewegen. + + 4. Tippe 0 (Null) , um zum Anfang der Zeile zu gelangen. + + 5. Wiederhole Schritte 2 und 3 mit verschiedenen Zählern. + + ---> Dies ist nur eine Zeile aus Wörten um sich darin herumzubewegen. + + 6. Gehe weiter zu Lektion 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.5: ANWENDUNG EINES ZÄHLERS FÜR MEHRERE LÖSCHVORGÄNGE + + + ** Die Eingabe einer Zahl mit einem Operator wiederholt diesen mehrfach. ** + + Für die Kombination des Löschoperators und einem Bewegungsschritt (siehe + oben) stellt man dem Bewegungsschritt einen Zähler voran, um mehr zu löschen: + d Nummer Bewegungsschritt + + 1. Bewege den Cursor zum ersten Wort in GROSSBUCHSTABEN in der mit ---> + markieren Zeile. + + 2. Tippe d2w , um die zwei Wörter in GROSSBUCHSTABEN zu löschen. + + 3. Wiederhole Schritte 1 und 2 mit einem anderen Zähler, um die + darauffolgenden Wörter in GROSSBUCHSTABEN mit einem einzigen Kommando + zu löschen. + +---> Diese ABC DE Zeile FGHI JK LMN OP mit Wörtern ist Q RS TUV bereinigt. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.6: ARBEITEN AUF ZEILEN + + + ** Tippe dd , um eine ganze Zeile zu löschen. ** + + Wegen der Häufigkeit, dass man ganze Zeilen löscht, kamen die Entwickler von + Vi darauf, dass es leichter wäre, einfach zwei d's einzugeben, um eine Zeile + zu löschen. + + 1. Bewege den Cursor zur zweiten Zeile in der unten stehenden Redewendung. + 2. Tippe dd , um die Zeile zu löschen. + 3. Nun bewege Dich zur vierten Zeile. + 4. Tippe 2dd , um zwei Zeilen zu löschen. + +---> 1) Rosen sind rot, +---> 2) Matsch ist lustig, +---> 3) Veilchen sind blau, +---> 4) Ich habe ein Auto, +---> 5) Die Uhr sagt die Zeit, +---> 6) Zucker ist süß, +---> 7) So wie Du auch. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.7: RÜCKGÄNGIG MACHEN (UNDO) + + + ** Tippe u , um die letzten Kommandos rückgängig zu machen ** + ** oder U um eine ganze Zeile wiederherzustellen. ** + + 1. Bewege den Cursor zu der mit ---> markierten Zeile unten + und setze ihn auf den ersten Fehler. + 2. Tippe x , um das erste unerwünschte Zeichen zu löschen. + 3. Nun tippe u um das soeben ausgeführte Kommando rückgängig zu machen. + 4. Jetzt behebe alle Fehler auf der Zeile mit Hilfe des x Kommandos. + 5. Nun tippe ein großes U , um die Zeile in ihren Ursprungszustand + wiederherzustellen. + 6. Nun tippe u einige Male, um das U und die vorhergehenden Kommandos + rückgängig zu machen. + 7. Nun tippe CTRL-R (halte CTRL gedrückt und drücke R) mehrere Male, um die + Kommandos wiederherzustellen (die Rückgängigmachungen rückgängig machen). + +---> Beehebe die Fehller diesser Zeile und sttelle sie mitt 'undo' wieder her. + + 8. Dies sind sehr nützliche Kommandos. + Nun gehe weiter zur Zusammenfassung von Lektion 2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 2 + + + 1. Um vom Cursor bis zum nächsten Wort zu löschen, tippe: dw + 2. Um vom Cursor bis zum Ende einer Zeile zu löschen, tippe: d$ + 3. Um eine ganze Zeile zu löschen, tippe: dd + + 4. Um eine Bewegung zu wiederholen, stelle eine Nummer voran: 2w + 5. Das Format für ein Änderungskommando ist: + Operator [Anzahl] Bewegungsschritt + wobei: + Operator - gibt an, was getan werden soll, zum Beispiel d für delete + [Anzahl] - ein optionaler Zähler, um den Bewegungsschritt zu wiederholen + Bewegungsschritt - Bewegung über den zu ändernden Text, so wie + w (Wort), $ (zum Ende der Zeile), etc. + + 6. Um Dich zum Anfang der Zeile zu begeben, benutze die Null: 0 + + 7. Um vorherige Aktionen rückgängig zu machen, tippe: u (kleines u) + Um alle Änderungen auf einer Zeile rückgängig zu machen: U (großes U) + Um die Rückgängigmachungen rückgängig zu machen, tippe: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 3.1: ANFÜGEN (PUT) + + + ** Tippe p , um vorher gelöschten Text nach dem Cursor anzufügen. ** + + 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. + + 2. Tippe dd , um die Zeile zu löschen und sie in einem Vim-Register zu + speichern. + + 3. Bewege den Cursor zur Zeile c), ÜBER derjenigen, wo die gelöschte Zeile + platziert werden soll. + + 4. Tippe p , um die Zeile unterhalb des Cursors zu platzieren. + + 5. Wiederhole die Schritte 2 bis 4, um alle Zeilen in die richtige + Reihenfolge zu bringen. + +---> d) Kannst Du das auch? +---> b) Veilchen sind blau, +---> c) Intelligenz ist erlernbar, +---> a) Rosen sind rot, +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 3.2: ERSETZEN (REPLACE) + + + ** Tippe rx , um das Zeichen unter dem Cursor durch x zu ersetzen. ** + + 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. + + 2. Bewege den Cursor, bis er sich auf dem ersten Fehler befindet. + + 3. Tippe r und anschließend das Zeichen, welches dort stehen sollte. + + 4. Wiederhole Schritte 2 und 3, bis die erste Zeile gleich der zweiten ist. + +---> Als diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt! +---> Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt! + + 5. Nun fahre fort mit Lektion 3.2. + +Bemerkung: Erinnere Dich, dass Du durch Anwenden lernen solltest, nicht durch + Auswendiglernen. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 3.3: ÄNDERN (CHANGE) + + + ** Um eine Änderung bis zum Wortende durchzuführen, tippe ce . ** + + 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. + + 2. Platziere den Cursor auf das s von Wstwr. + + 3. Tippe ce und die Wortkorrektur ein (in diesem Fall tippe örter ). + + 4. Drücke und bewege den Cursor zum nächsten zu ändernden Zeichen. + + 5. Wiederhole Schritte 3 und 4 bis der erste Satz gleich dem zweiten ist. + +---> Einige Wstwr dieser Zlaww lasdjlaf mit dem Ändern-Operator gaaauu werden. +---> Einige Wörter dieser Zeile sollen mit dem Ändern-Operator geändert werden. + +Bemerke, dass ce das Wort löscht und Dich in den Eingabemodus versetzt. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 3.4: MEHR ÄNDERUNGEN MITTELS c + + + ** Das change-Kommando arbeitet mit denselben Bewegungen wie delete. ** + + 1. Der change Operator arbeitet in gleicher Weise wie delete. Das Format ist: + + c [Anzahl] Bewegungsschritt + + 2. Die Bewegungsschritte sind die gleichen , so wie w (Wort) und $ + (Zeilenende). + + 3. Bewege Dich zur ersten unten stehenden mit ---> markierten Zeile. + + 4. Bewege den Cursor zum ersten Fehler. + + 5. Tippe c$ , gib den Rest der Zeile wie in der zweiten ein, drücke . + +---> Das Ende dieser Zeile soll an die zweite Zeile angeglichen werden. +---> Das Ende dieser Zeile soll mit dem c$ Kommando korrigiert werden. + +Bemerkung: Du kannst die Rücktaste benutzen, um Tippfehler zu korrigieren. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 3 + + + 1. Um einen vorher gelöschten Text anzufügen, tippe p . Dies fügt den + gelöschten Text NACH dem Cursor an (wenn eine ganze Zeile gelöscht wurde, + wird diese in die Zeile unter dem Cursor eingefügt). + + 2. Um das Zeichen unter dem Cursor zu ersetzen, tippe r und das an dieser + Stelle gewünschte Zeichen. + + 3. Der Änderungs- (change) Operator erlaubt, vom Cursor bis zum Ende des + Bewegungsschrittes zu ändern. Tippe ce , um eine Änderung vom Cursor bis + zum Ende des Wortes vorzunehmen; c$ bis zum Ende einer Zeile. + + 4. Das Format für change ist: + + c [Anzahl] Bewegungsschritt + + Nun fahre mit der nächsten Lektion fort. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 4.1: CURSORPOSITION UND DATEISTATUS + + ** Tippe CTRL-G , um Deine Dateiposition sowie den Dateistatus anzuzeigen. ** + ** Tippe G , um Dich zu einer Zeile in der Datei zu begeben. ** + +Bemerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!! + + 1. Halte die Ctrl Taste unten und drücke g . Dies nennen wir wir CTRL-G. + Eine Statusmeldung am Fuß der Seite erscheint mit dem Dateinamen und der + Position innerhalb der Datei. Merke Dir die Zeilennummer für Schritt 3. + +Bemerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten + Bildschirmecke. Dies ist Folge der 'ruler' Option (siehe :help 'ruler') + + 2. Drücke G , um Dich zum Ende der Datei zu begeben. + Tippe gg , um Dich zum Anfang der Datei zu begeben. + + 3. Gib die Nummer der Zeile ein, auf der Du vorher warst, gefolgt von G . + Dies bringt Dich zurück zu der Zeile, auf der Du gestanden hast, als Du + das erste Mal CTRL-G gedrückt hast. + + 4. Wenn Du Dich sicher genug fühlst, führe die Schritte 1 bis 3 aus. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 4.2: DAS SUCHEN - KOMMANDO + + + ** Tippe / gefolgt von einem Ausdruck, um nach dem Ausdruck zu suchen. ** + + 1. Im Normalmodus, tippe das / Zeichen. Bemerke, dass das / und der + Cursor am Fuß des Schirms erscheinen, so wie beim : Kommando. + + 2. Nun tippe 'Fehhler' . Dies ist das Wort, nach dem Du suchen willst. + + 3. Um nach demselben Ausdruck weiterzusuchen, tippe einfach n (für next). + Um nach demselben Ausdruck in der Gegenrichtung zu suchen, tippe N . + + 4. Um nach einem Ausdruck rückwärts zu suchen , benutze ? statt / . + + 5. Um dahin zurückzukehren, von wo Du gekommen bist, drücke CTRL-O (Halte + Ctrl unten und drücke den Buchstaben o). Wiederhole dies, um weiter + zurückzugehen. CTRL-I bringt dich vorwärts. + +---> Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler +Bemerkung: Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang + fortgesetzt, es sei denn, die 'wrapscan' Option wurde abgeschaltet. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 4.3: PASSENDE KLAMMERN FINDEN + + + ** Tippe % , um eine korrespondierende Klammer ),], oder } zu finden. ** + + 1. Platziere den Cursor auf irgendeines der Zeichen (, [, oder { in der unten + stehenden Zeile, die mit ---> markiert ist. + + 2. Nun tippe das % Zeichen. + + 3. Der Cursor bewegt sich zur passenden gegenüberliegenden Klammer. + + 4. Tippe % , um den Cursor zur anderen passenden Klammer zu bewegen. + + 5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere % aus. + +---> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern } darin. )) + +Bemerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem + Programmtext, in dem passende Klammern fehlen! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE) + + + ** Tippe :s/alt/neu/g , um 'alt' durch 'neu' zu ersetzen. ** + + 1. Bewege den Cursor zu der unten stehenden mit ---> markierten Zeile. + + 2. Tippe :s/diee/die . Bemerke, dass der Befehl nur das erste + Vorkommen von "diee" ersetzt. + + 3. Nun tippe :s/diee/die/g . Das Zufügen des Flags g bedeutet, eine + globale Ersetzung über die Zeile durchzuführen, was alle Vorkommen von + "diee" auf der Zeile ersetzt. + +---> diee schönste Zeit, um diee Blumen anzuschauen, ist diee Frühlingszeit. + + 4. Um alle Vorkommen einer Zeichenkette innerhalb zweier Zeilen zu ändern, + tippe :#,#s/alt/neu/g wobei #,# die Zeilennummern des Zeilenbereiches + sind, in dem die Ersetzung durchgeführt werden soll. + Tippe :%s/alt/neu/g um alle Vorkommen in der gesamten Datei zu ändern. + Tippe :%s/alt/neu/gc um alle Vorkommen in der gesamten Datei zu finden + mit einem Fragedialog, ob ersetzt werden soll oder nicht. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 4 + + 1. CTRL-G zeigt die aktuelle Dateiposition sowie den Dateistatus. + G bringt Dich zum Ende der Datei. + Nummer G bringt Dich zur entsprechenden Zeilennummer. + gg bringt Dich zur ersten Zeile. + + 2. Die Eingabe von / plus einem Ausdruck sucht VORWÄRTS nach dem Ausdruck. + Die Eingabe von ? plus einem Ausdruck sucht RÜCKWÄRTS nach dem Ausdruck. + Tippe nach einer Suche n , um das nächste Vorkommen in der gleichen + Richtung zu finden; oder N , um in der Gegenrichtung zu suchen. + CTRL-O bringt Dich zurück zu älteren Positionen, CTRL-I zu neueren. + + 3. Die Eingabe von % , wenn der Cursor sich auf (,),[,],{, oder } + befindet, bringt Dich zur Gegenklammer. + + 4. Um das erste Vorkommen von "alt" in einer Zeile durch "neu" zu ersetzen, + tippe :s/alt/neu + Um alle Vorkommen von "alt" in der Zeile ersetzen, tippe :s/alt/neu/g + Um Ausdrücke innerhalb zweier Zeilennummern zu ersetzen, :#,#s/alt/neu/g + Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g + Für eine jedmalige Bestätigung, addiere 'c' (confirm) :%s/alt/neu/gc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 5.1: AUSFÜHREN EINES EXTERNEN KOMMANDOS + + + ** Gib :! , gefolgt von einem externen Kommando ein, um es auszuführen. ** + + 1. Tippe das vertraute Kommando : , um den Cursor auf den Fuß des Schirms + zu setzen. Dies erlaubt Dir, ein Kommandozeilen-Kommando einzugeben. + + 2. Nun tippe ein ! (Ausrufezeichen). Dies ermöglicht Dir, ein beliebiges, + externes Shellkommando auszuführen. + + 3. Als Beispiel tippe ls nach dem ! und drücke . Dies zeigt + eine Auflistung Deines Verzeichnisses; genauso, als wenn Du auf der + Eingabeaufforderung wärst. Oder verwende :!dir , falls ls nicht geht. + +Bemerkung: Mit dieser Methode kann jedes beliebige externe Kommando + ausgeführt werden, auch mit Argumenten. + +Bemerkung: Alle : Kommandos müssen durch Eingabe von + abgeschlossen werden. Von jetzt an erwähnen wir dies nicht jedesmal. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 5.2: MEHR ÜBER DAS SCHREIBEN VON DATEIEN + + +** Um am Text durchgeführte Änderungen zu speichern, tippe :w DATEINAME. ** + + 1. Tippe :!dir oder :!ls , um eine Auflistung Deines Verzeichnisses zu + erhalten. Du weißt nun bereits, dass Du danach eingeben musst. + + 2. Wähle einen Dateinamen, der noch nicht existiert, z.B. TEST. + + 3. Nun tippe: :w TEST (wobei TEST der gewählte Dateiname ist). + + 4. Dies speichert die ganze Datei (den Vim Tutor) unter dem Namen TEST. + Um dies zu überprüfen, tippe nochmals :!ls bzw. !dir, um Deinen + Verzeichnisinhalt zu sehen. + +Bemerkung: Würdest Du Vim jetzt beenden und danach wieder mit vim TEST + starten, dann wäre diese Datei eine exakte Kopie des Tutors zu dem + Zeitpunkt, als Du ihn gespeichert hast. + + 5. Nun entferne die Datei durch Eingabe von (MS-DOS): :!del TEST + oder (Unix): :!rm TEST +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN + +** Um einen Abschnitt der Datei zu speichern, tippe v Bewegung :w DATEI ** + + 1. Bewege den Cursor zu dieser Zeile. + + 2. Tippe v und bewege den Cursor zum fünften Auflistungspunkt unten. + Bemerke, daß der Text hervorgehoben wird. + + 3. Drücke das Zeichen : . Am Fuß des Schirms erscheint :'<,'> . + + 4. Tippe w TEST , wobei TEST ein noch nicht vorhandener Dateiname ist. + Vergewissere Dich, daß Du :'<,'>w TEST siehst, bevor Du Enter drückst. + + 5. Vim schreibt die ausgewählten Zeilen in die Datei TEST. Benutze :!dir + oder :!ls , um sie zu sehen. Lösche sie noch nicht! Wir werden sie in + der nächsten Lektion benutzen. + +Bemerkung: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor + umherbewegen, um die Auswahl größer oder kleiner zu machen. Anschließend + kann man einen Operator anwenden, um mit dem Text etwas zu tun. Zum + Beispiel löscht d den Text. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 5.4: EINLESEN UND ZUSAMMENFÜHREN VON DATEIEN + + + ** Um den Inhalt einer Datei einzulesen, tippe :r DATEINAME ** + + 1. Platziere den Cursor überhalb dieser Zeile. + +BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 + sehen. Dann bewege Dich wieder ABWÄRTS, um diese Lektion wiederzusehen. + + 2. Nun lies Deine Datei TEST ein indem Du das Kommando :r TEST ausführst, + wobei TEST der von Dir verwendete Dateiname ist. + Die eingelesene Datei wird unterhalb der Cursorzeile eingefügt. + + 3. Um zu überprüfen, dass die Datei eingelesen wurde, gehe zurück und siehe, + dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und die + eingefügte Dateiversion. + +Bemerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum + Beispiel liest :r !ls die Ausgabe des Kommandos ls ein und platziert + sie unterhalb des Cursors. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 5 + + + 1. :!Kommando führt ein externes Kommando aus. + + Einige nützliche Beispiele sind + (MS-DOS) (Unix) + :!dir :!ls - zeigt eine Verzeichnisauflistung. + :!del DATEINAME :!rm DATEINAME - entfernt Datei DATEINAME. + + 2. :w DATEINAME speichert die aktuelle Vim-Datei unter dem Namen DATEINAME. + + 3. v Bewegung :w DATEINAME schreibt die Visuell ausgewählten Zeilen in + die Datei DATEINAME. + + 4. :r DATEINAME lädt die Datei DATEINAME und fügt sie unterhalb der + Cursorposition ein. + + 5. :r !dir liest die Ausgabe des Kommandos dir und fügt sie unterhalb der + Cursorposition ein. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.1: ZEILEN ÖFFNEN (OPEN) + + + ** Tippe o , um eine Zeile unterhalb des Cursors zu öffnen und Dich in ** + ** den Einfügemodus zu begeben. ** + + 1. Bewege den Cursor zu der ersten mit ---> markierten Zeile unten. + + 2. Tippe o (klein geschrieben), um eine Zeile UNTERHALB des Cursos zu öffnen + und Dich in den Einfügemodus zu begeben. + + 3. Nun tippe etwas Text und drücke , um den Einfügemodus zu verlassen. + +---> Mit o wird der Cursor auf der offenen Zeile im Einfügemodus platziert. + + 4. Um eine Zeile ÜBERHALB des Cursos aufzumachen, gib einfach ein großes O + statt einem kleinen o ein. Versuche dies auf der unten stehenden Zeile. + +---> Öffne eine Zeile über dieser mit O , wenn der Cursor auf dieser Zeile ist. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.2: TEXT ANFÜGEN (APPEND) + + + ** Tippe a , um Text NACH dem Cursor einzufügen. ** + + 1. Bewege den Cursor zum Anfang der ersten Übungszeile mit ---> unten. + + 2. Drücke e , bis der Cursor am Ende von Zei steht. + + 3. Tippe ein kleines a , um Text NACH dem Cursor anzufügen. + + 4. Vervollständige das Wort so wie in der Zeile darunter. Drücke , + um den Einfügemodus zu verlassen. + + 5. Bewege Dich mit e zum nächsten unvollständigen Wort und wiederhole + Schritte 3 und 4. + +---> Diese Zei bietet Gelegen , Text in einer Zeile anzufü. +---> Diese Zeile bietet Gelegenheit, Text in einer Zeile anzufügen. + +Bemerkung: a, i und A gehen alle gleichermaßen in den Einfügemodus; der + einzige Unterschied ist, wo die Zeichen eingefügt werden. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.3: EINE ANDERE ART DES ERSETZENS (REPLACE) + + + ** Tippe ein großes R , um mehr als ein Zeichen zu ersetzen. ** + + 1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile. + Bewege den Cursor zum Anfang des ersten xxx . + + 2. Nun drücke R und tippe die Nummer, die darunter in der zweiten Zeile + steht, so das diese das xxx ersetzt. + + 3. Drücke , um den Ersetzungsmodus zu verlassen. Bemerke, daß der Rest + der Zeile unverändert bleibt. + + 4. Wiederhole die Schritte, um das verbliebene xxx zu ersetzen. + +---> Das Addieren von 123 zu xxx ergibt xxx. +---> Das Addieren von 123 zu 456 ergibt 579. + +Bemerkung: Der Ersetzungsmodus ist wie der Einfügemodus, aber jedes eingetippte + Zeichen löscht ein vorhandenes Zeichen. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.4: TEXT KOPIEREN UND EINFÜGEN + + ** Benutze den y Operator, um Text zu kopieren; p , um ihn einzufügen ** + + 1. Gehe zu der mit ---> markierten Zeile unten, setze den Cursor hinter "a)". + + 2. Starte den Visuellen Modus mit v , bewege den Cursor genau vor "erste". + + 3. Tippe y , um den hervorgehoben Text zu kopieren. + + 4. Bewege den Cursor zum Ende der nächsten Zeile: j$ + + 5. Tippe p , um den Text einzufügen und anschließend: a zweite . + + 6. Benutze den Visuellen Modus, um " Eintrag." auszuwählen, kopiere mittels + y , bewege Dich zum Ende der nächsten Zeile mit j$ und füge den Text + dort mit p an. + +---> a) dies ist der erste Eintrag. + b) + +Bemerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.5: OPTIONEN SETZEN + + ** Setze eine Option so, dass eine Suche oder eine Ersetzung Groß- ** + ** und Kleinschreibung ignoriert ** + + 1. Suche nach 'ignoriere', indem Du /ignoriere eingibst. + Wiederhole die Suche einige Male, indem Du die n - Taste drückst. + + 2. Setze die 'ic' (Ignore case) - Option, indem Du :set ic eingibst. + + 3. Nun suche wieder nach 'ignoriere', indem Du n tippst. + Bemerke, daß jetzt Ignoriere und auch IGNORIERE gefunden wird. + + 4. Setze die 'hlsearch' und 'incsearch' - Optionen: :set hls is + + 5. Wiederhole die Suche und beobachte, was passiert: /ignoriere + + 6. Um das Ignorieren von Groß/Kleinschreibung abzuschalten, tippe: :set noic + +Bemerkung: Um die Hervorhebung der Treffer zu enfernen, gib ein: :nohlsearch +Bemerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze + \c im Suchausdruck: /ignoriere\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 6 + + 1. Tippe o , um eine Zeile UNTER dem Cursor zu öffnen und den Einfügemodus + zu starten. + Tippe O , um eine Zeile ÜBER dem Cursor zu öffnen. + + 2. Tippe a , um Text NACH dem Cursor anzufügen. + Tippe A , um Text nach dem Zeilenende anzufügen. + + 3. Das Kommando e bringt Dich zum Ende eines Wortes. + + 4. Der Operator y (yank) kopiert Text, p (put) fügt ihn ein. + + 5. Ein großes R geht in den Ersetzungsmodus bis zum Drücken von . + + 6. Die Eingabe von ":set xxx" setzt die Option "xxx". Einige Optionen sind: + 'ic' 'ignorecase' Ignoriere Groß/Kleinschreibung bei einer Suche + 'is' 'incsearch' Zeige Teilübereinstimmungen für einen Suchausdruck + 'hls' 'hlsearch' Hebe alle passenden Ausdrücke hervor + Der Optionsname kann in der Kurz- oder der Langform angegeben werden. + + 7. Stelle einer Option "no" voran, um sie abzuschalten: :set noic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 7.1 : AUFRUFEN VON HILFE + + + ** Nutze das eingebaute Hilfesystem ** + + Vim besitzt ein umfassendes eingebautes Hilfesystem. Für den Anfang probiere + eins der drei folgenden Dinge aus: + - Drücke die - Taste (falls Du eine besitzt) + - Drücke die Taste (falls Du eine besitzt) + - Tippe :help + + Lies den Text im Hilfefenster, um zu verstehen wie die Hilfe funktioniert. + Tippe CTRL-W CTRL-W , um von einem Fenster zum anderen zu springen. + Tippe :q , um das Hilfefenster zu schließen. + + Du kannst Hilfe zu praktisch jedem Thema finden, indem Du dem ":help"- + Kommando ein Argument gibst. Probiere folgendes ( nicht vergessen): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 7.2: ERSTELLE EIN START-SKRIPT + + + ** Aktiviere die eingebauten Funktionalitäten von Vim ** + + Vim besitzt viele Funktionalitäten, die über Vi hinausgehen, aber die meisten + von ihnen sind standardmäßig deaktiviert. Um mehr Funktionalitäten zu nutzen, + musst Du eine "vimrc" - Datei erstellen. + + 1. Starte das Editieren der "vimrc"-Datei, abhängig von Deinem System: + :e ~/.vimrc für Unix + :e $VIM/_vimrc für MS-Windows + + 2. Nun lies den Inhalt der Beispiel-"vimrc"-Datei ein: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Speichere die Datei mit: + :w + + Beim nächsten Start von Vim wird die Syntaxhervorhebung aktiviert sein. + Du kannst all Deine bevorzugten Optionen zu dieser "vimrc"-Datei zufügen. + Für mehr Informationen tippe :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 7.3: VERVOLLSTÄNDIGEN + + + ** Kommandozeilenvervollständigung mit CTRL-D and ** + + 1. Stelle sicher, daß Vim nicht im vi-Kompatibilitätsmodus ist: :set nocp + + 2. Siehe nach, welche Dateien im Verzeichnis existieren: :!ls oder :dir + + 3. Tippe den Beginn eines Komandos: :e + + 4. Drücke CTRL-D und Vim zeigt eine Liste mit "e" beginnender Kommandos. + + 5. Drücke und Vim vervollständigt den Kommandonamen zu ":edit". + + 6. Nun füge ein Leerzeichen und den Beginn einer existierenden Datei an: + :edit DAT + + 7. Drücke . Vim vervollständigt den Namen (falls er eindeutig ist). + +Bemerkung: Vervollständigung funktioniert für viele Kommandos. Versuche + einfach CTRL-D und . Dies ist insbesondere nützlich für :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 7 + + + 1. Tippe :help oder drücke oder , um ein Hilfefenster zu öffnen. + + 2. Tippe :help Kommando , um Hilfe über Kommando zu erhalten. + + 3. Tippe CTRL-W CTRL-W , um zum anderen Fenster zu springen. + + 4. Tippe :q , um das Hilfefenster zu schließen. + + 5. Erstelle ein vimrc - Startskript zur Sicherung bevorzugter Einstellungen. + + 6. Drücke CTRL-D nach dem Tippen eines Kommandos : , um mögliche + Vervollständigungen zu sehen. + Drücke für eine einzige Vervollständigung. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Damit ist der Vim Tutor beendet. Die Intention war, einen kurzen und + bündigen Überblick über den Vim Editor zu liefern; gerade genug, um relativ + leicht mit ihm umgehen zu können. Der Vim Tutor hat nicht den geringsten + Anspruch auf Vollständigkeit; Vim hat noch weitaus mehr Kommandos. Lies als + nächstes das User Manual: ":help user-manual". + + Für weiteres Lesen und Lernen ist folgendes Buch empfohlen : + Vim - Vi Improved - von Steve Oualline + Verlag: New Riders + Das erste Buch, welches durchgängig Vim gewidmet ist. Besonders nützlich + für Anfänger. Viele Beispiele und Bilder sind enthalten. + Siehe http://iccf-holland.org/click5.html + + Folgendes Buch ist älter und mehr über Vi als Vim, aber auch empfehlenswert: + Textbearbeitung mit dem vi-Editor - von Linda Lamb und Arnold Robbins + Verlag O'Reilly - ISBN: 3897211262 + In diesem Buch kann man fast alles finden, was man mit Vi tun möchte. + Die sechste Ausgabe enthält auch Informationen über Vim. + + Als aktuelle Referenz für Version 6.2 und knappe Einführung dient das + folgende Buch: + vim ge-packt von Reinhard Wobst + mitp-Verlag, ISBN 3-8266-1425-9 + Trotz der kompakten Darstellung ist es durch viele nützliche Beispiele auch + für Einsteiger empfehlenswert. Probekapitel und die Beispielskripte sind + online erhältlich. Siehe http://iccf-holland.org/click5.html + + Dieses Tutorial wurde geschrieben von Michael C. Pierce and Robert K. Ware, + Colorado School of Mines. Es benutzt Ideen, die Charles Smith, Colorado State + University, zur Verfügung stellte. E-mail: bware@mines.colorado.edu. + + Bearbeitet für Vim von Bram Moolenaar. + Deutsche Übersetzung von Joachim Hofmann 2007. E-mail: Joachim.Hof@gmx.de + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim74/tutor/tutor.de.utf-8 b/share/vim/vim74/tutor/tutor.de.utf-8 new file mode 100644 index 00000000..9d5f6681 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.de.utf-8 @@ -0,0 +1,980 @@ +=============================================================================== += W i l l k o m m e n im V I M T u t o r - Version 1.7D = +=============================================================================== + + Vim ist ein sehr mächtiger Editor, der viele Befehle bereitstellt; zu viele, + um alle in einem Tutor wie diesem zu erklären. Dieser Tutor ist so + gestaltet, um genug Befehle vorzustellen, dass Du die Fähigkeit erlangst, + Vim mit Leichtigkeit als einen Allzweck-Editor zu benutzen. + Die Zeit für das Durcharbeiten dieses Tutors beträgt ca. 25-30 Minuten, + abhängig davon, wie viel Zeit Du mit Experimentieren verbringst. + + ACHTUNG: + Die in den Lektionen angewendeten Kommandos werden den Text modifizieren. + Erstelle eine Kopie dieser Datei, in der Du üben willst (falls Du "vimtutor" + aufgerufen hast, ist dies bereits eine Kopie). + + Es ist wichtig, sich zu vergegenwärtigen, dass dieser Tutor für das Anwenden + konzipiert ist. Das bedeutet, dass Du die Befehle ausführen musst, um sie + richtig zu lernen. Wenn Du nur den Text liest, vergisst Du die Befehle! + + Jetzt stelle sicher, dass Deine Umstelltaste NICHT gedrückt ist und betätige + die j Taste genügend Male, um den Cursor nach unten zu bewegen, so dass + Lektion 1.1 den Bildschirm vollkommen ausfüllt. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.1: BEWEGEN DES CURSORS + + ** Um den Cursor zu bewegen, drücke die h,j,k,l Tasten wie unten gezeigt. ** + ^ Hilfestellung: + k Die h Taste befindet sich links und bewegt nach links. + < h l > Die l Taste liegt rechts und bewegt nach rechts. + j Die j Taste ähnelt einem Pfeil nach unten. + v + 1. Bewege den Cursor auf dem Bildschirm umher, bis Du Dich sicher fühlst. + + 2. Halte die Nach-Unten-Taste (j) gedrückt, bis sie sich wiederholt. + Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst. + + 3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.2 zu bewegen. + +Bemerkung: Immer, wenn Du Dir unsicher bist über das, was Du getippt hast, + drücke , um Dich in den Normalmodus zu begeben. + Dann gib das gewünschte Kommando noch einmal ein. + +Bemerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du + hjkl benutzt, wirst Du in der Lage sein, Dich sehr viel schneller + umherzubewegen, wenn Du Dich einmal daran gewöhnt hast. Wirklich! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.2: VIM BEENDEN + + + !! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies + diese gesamte Lektion!! + + 1. Drücke die Taste (um sicherzustellen, dass Du im Normalmodus bist). + + 2. Tippe: :q! . + Dies beendet den Editor und VERWIRFT alle Änderungen, die Du gemacht hast. + + 3. Wenn Du die Eingabeaufforderung siehst, gib das Kommando ein, das Dich zu + diesem Tutor geführt hat. Dies wäre: vimtutor + + 4. Wenn Du Dir diese Schritte eingeprägt hast und Du Dich sicher fühlst, + führe Schritte 1 bis 3 aus, um den Editor zu verlassen und wieder + hineinzugelangen. + +Bemerkung: :q! verwirft alle Änderungen, die Du gemacht hast. In + einigen Lektionen lernst Du , die Änderungen in einer Datei zu speichern. + + 5. Bewege den Cursor abwärts zu Lektion 1.3. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.3: TEXT EDITIEREN - LÖSCHEN + + + ** Drücke x um das Zeichen unter dem Cursor zu löschen. ** + + 1. Bewege den Cursor zu der mit ---> markierten Zeile unten. + + 2. Um die Fehler zu beheben, bewege den Cursor, bis er auf dem Zeichen steht, + das gelöscht werden soll. + + 3. Drücke die x Taste, um das überflüssige Zeichen zu löschen. + + 4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist. + +---> Die Kkuh sprangg übber deen Moond. + + 5. Wenn nun die Zeile korrekt ist, gehe weiter zur Lektion 1.4. + +Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu + lernen, lerne vielmehr durch Anwenden. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.4: TEXT EDITIEREN - EINFÜGEN + + + ** Drücke i , um Text einzufügen. ** + + 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. + + 2. Um die erste Zeile mit der zweiten gleichzumachen, bewege den Cursor auf + das erste Zeichen NACH der Stelle, wo der Text eingefügt werden soll. + + 3. Drücke i und gib die notwendigen Ergänzungen ein. + + 4. Wenn jeweils ein Fehler beseitigt ist, drücke , um zum Normalmodus + zurückzukehren. + Wiederhole die Schritte 2 bis 4, um den Satz zu korrigieren. + +---> In dieser ft etwas . +---> In dieser Zeile fehlt etwas Text. + + 5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.5: TEXT EDITIEREN - ANFÜGEN + + + ** Drücke A , um Text anzufügen. ** + + 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. + Es ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht. + + 2. Drücke A und gib die nötigen Ergänzungen ein. + + 3. Wenn das Anfügen abgeschlossen ist, drücke , um in den Normalmodus + zurückzukehren. + + 4. Bewege den Cursor zur zweiten mit ---> markierten Zeile und wiederhole + die Schritte 2 und 3, um den Satz zu korrigieren. + +---> In dieser Zeile feh + In dieser Zeile fehlt etwas Text. +---> Auch hier steh + Auch hier steht etwas Unvollständiges. + + 5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.6. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 1.6: EINE DATEI EDITIEREN + + + ** Benutze :wq , um eine Datei zu speichern und Vim zu verlassen. ** + + !! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies + diese gesamte Lektion!! + + 1. Verlasse den Editor so wie in Lektion 1.2: :q! + + 2. Gib dieses Kommando in die Eingabeaufforderung ein: vim tutor + 'vim' ist der Aufruf des Editors, 'tutor' ist die zu editierende Datei. + Benutze eine Datei, die geändert werden kann. + + 3. Füge Text ein oder lösche ihn, wie Du in den vorigen Lektionen gelernt + hast. + + 4. Speichere die geänderte Datei und verlasse Vim mit: :wq + + 5. Starte den vimtutor neu und bewege Dich zu der folgenden Zusammenfassung. + + 6. Nachdem Du obige Schritte gelesen und verstanden hast, führe sie durch. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 1 + + + 1. Der Cursor wird mit den Pfeiltasten oder den Tasten hjkl bewegt. + h (links) j (unten) k (aufwärts) l (rechts) + + 2. Um Vim von der Eingabeaufforderung auszuführen, tippe: vim DATEI + + 3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe: + :q! . + ODER tippe: :wq , um die Änderungen zu speichern. + + 4. Um das Zeichen unter dem Cursor zu löschen, tippe: x + + 5. Um Text einzufügen oder anzufügen, tippe: + i Einzufügenden Text eingeben Einfügen vor dem Cursor + A Anzufügenden Text eingeben Anfügen nach dem Zeilendene + +Bemerkung: Drücken von bringt Dich in den Normalmodus oder bricht ein + ungewolltes, erst teilweise eingegebenes Kommando ab. + + Nun fahre mit Lektion 2 fort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.1: LÖSCHKOMMANDOS + + + ** Tippe dw , um ein Wort zu löschen. ** + + 1. Drücke um sicherzustellen, dass Du im Normalmodus bist. + + 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. + + 3. Bewege den Cursor zum Anfang eines Wortes, das gelöscht werden soll. + + 4. Tippe dw , um das Wort zu entfernen. + + Bemerkung: Der Buchstabe d erscheint auf der letzten Zeile des Bildschirms, + wenn Du ihn eingibst. Vim wartet darauf, daß Du w eingibst. Wenn Du + ein anderes Zeichen als d siehst, hast Du etwas falsches getippt; + drücke und beginne neu. + +---> Einige Wörter lustig gehören nicht Papier in diesen Satz. + + 5. Wiederhole die Schritte 3 und 4, bis der Satz korrekt ist und gehe + danach zur Lektion 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.2: WEITERE LÖSCHKOMMANDOS + + + ** Tippe d$ , um bis zum Ende der Zeile zu löschen. ** + + 1. Drücke , um sicherzustellen, dass Du im Normalmodus bist. + + 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. + + 3. Bewege den Cursor zum Ende der korrekten Zeile (NACH dem ersten . ). + + 4. Tippe d$ , um bis zum Ende der Zeile zu löschen. + +---> Jemand hat das Ende der Zeile doppelt eingegeben. doppelt eingegeben. + + + 5. Gehe weiter zur Lektion 2.3 , um zu verstehen, was hierbei passiert. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.3: ÜBER OPERATOREN UND BEWEGUNGSZÜGE + + + Viele Kommandos, die Text ändern, setzen sich aus einem Operator und einer + Bewegung zusammen. Das Format für ein Löschkommando mit dem Löschoperator d + lautet wie folgt: + + d Bewegung + + wobei: + d - der Löschoperator + Bewegung - worauf der Löschoperator angewandt wird (unten aufgelistet). + + Eine kleine Auflistung von Bewegungen: + w - bis zum Beginn des nächsten Wortes OHNE dessen erstes Zeichen. + e - zum Ende des aktuellen Wortes MIT dessen letztem Zeichen. + $ - zum Ende der Zeile MIT dem letzen Zeichen. + + Dementsprechend löscht die Eingabe von de vom Cursor an bis zum Wortende. + +Bemerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den + Cursor entsprechend. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.4: ANWENDUNG EINES ZÄHLERS FÜR EINEN BEWEGUNGSSCHRITT + + + ** Die Eingabe einer Zahl vor einem Bewegungsschritt wiederholt diesen. ** + + 1. Bewege den Cursor zum Beginn der mit ---> markierten Zeile unten. + + 2. Tippe 2w , um den Cursor zwei Wörter vorwärts zu bewegen. + + 3. Tippe 3e , um den Cursor zum Ende des dritten Wortes zu bewegen. + + 4. Tippe 0 (Null) , um zum Anfang der Zeile zu gelangen. + + 5. Wiederhole Schritte 2 und 3 mit verschiedenen Zählern. + + ---> Dies ist nur eine Zeile aus Wörten um sich darin herumzubewegen. + + 6. Gehe weiter zu Lektion 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.5: ANWENDUNG EINES ZÄHLERS FÜR MEHRERE LÖSCHVORGÄNGE + + + ** Die Eingabe einer Zahl mit einem Operator wiederholt diesen mehrfach. ** + + Für die Kombination des Löschoperators und einem Bewegungsschritt (siehe + oben) stellt man dem Bewegungsschritt einen Zähler voran, um mehr zu löschen: + d Nummer Bewegungsschritt + + 1. Bewege den Cursor zum ersten Wort in GROSSBUCHSTABEN in der mit ---> + markieren Zeile. + + 2. Tippe d2w , um die zwei Wörter in GROSSBUCHSTABEN zu löschen. + + 3. Wiederhole Schritte 1 und 2 mit einem anderen Zähler, um die + darauffolgenden Wörter in GROSSBUCHSTABEN mit einem einzigen Kommando + zu löschen. + +---> Diese ABC DE Zeile FGHI JK LMN OP mit Wörtern ist Q RS TUV bereinigt. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.6: ARBEITEN AUF ZEILEN + + + ** Tippe dd , um eine ganze Zeile zu löschen. ** + + Wegen der Häufigkeit, dass man ganze Zeilen löscht, kamen die Entwickler von + Vi darauf, dass es leichter wäre, einfach zwei d's einzugeben, um eine Zeile + zu löschen. + + 1. Bewege den Cursor zur zweiten Zeile in der unten stehenden Redewendung. + 2. Tippe dd , um die Zeile zu löschen. + 3. Nun bewege Dich zur vierten Zeile. + 4. Tippe 2dd , um zwei Zeilen zu löschen. + +---> 1) Rosen sind rot, +---> 2) Matsch ist lustig, +---> 3) Veilchen sind blau, +---> 4) Ich habe ein Auto, +---> 5) Die Uhr sagt die Zeit, +---> 6) Zucker ist süß, +---> 7) So wie Du auch. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 2.7: RÜCKGÄNGIG MACHEN (UNDO) + + + ** Tippe u , um die letzten Kommandos rückgängig zu machen ** + ** oder U um eine ganze Zeile wiederherzustellen. ** + + 1. Bewege den Cursor zu der mit ---> markierten Zeile unten + und setze ihn auf den ersten Fehler. + 2. Tippe x , um das erste unerwünschte Zeichen zu löschen. + 3. Nun tippe u um das soeben ausgeführte Kommando rückgängig zu machen. + 4. Jetzt behebe alle Fehler auf der Zeile mit Hilfe des x Kommandos. + 5. Nun tippe ein großes U , um die Zeile in ihren Ursprungszustand + wiederherzustellen. + 6. Nun tippe u einige Male, um das U und die vorhergehenden Kommandos + rückgängig zu machen. + 7. Nun tippe CTRL-R (halte CTRL gedrückt und drücke R) mehrere Male, um die + Kommandos wiederherzustellen (die Rückgängigmachungen rückgängig machen). + +---> Beehebe die Fehller diesser Zeile und sttelle sie mitt 'undo' wieder her. + + 8. Dies sind sehr nützliche Kommandos. + Nun gehe weiter zur Zusammenfassung von Lektion 2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 2 + + + 1. Um vom Cursor bis zum nächsten Wort zu löschen, tippe: dw + 2. Um vom Cursor bis zum Ende einer Zeile zu löschen, tippe: d$ + 3. Um eine ganze Zeile zu löschen, tippe: dd + + 4. Um eine Bewegung zu wiederholen, stelle eine Nummer voran: 2w + 5. Das Format für ein Änderungskommando ist: + Operator [Anzahl] Bewegungsschritt + wobei: + Operator - gibt an, was getan werden soll, zum Beispiel d für delete + [Anzahl] - ein optionaler Zähler, um den Bewegungsschritt zu wiederholen + Bewegungsschritt - Bewegung über den zu ändernden Text, so wie + w (Wort), $ (zum Ende der Zeile), etc. + + 6. Um Dich zum Anfang der Zeile zu begeben, benutze die Null: 0 + + 7. Um vorherige Aktionen rückgängig zu machen, tippe: u (kleines u) + Um alle Änderungen auf einer Zeile rückgängig zu machen: U (großes U) + Um die Rückgängigmachungen rückgängig zu machen, tippe: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 3.1: ANFÜGEN (PUT) + + + ** Tippe p , um vorher gelöschten Text nach dem Cursor anzufügen. ** + + 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. + + 2. Tippe dd , um die Zeile zu löschen und sie in einem Vim-Register zu + speichern. + + 3. Bewege den Cursor zur Zeile c), ÜBER derjenigen, wo die gelöschte Zeile + platziert werden soll. + + 4. Tippe p , um die Zeile unterhalb des Cursors zu platzieren. + + 5. Wiederhole die Schritte 2 bis 4, um alle Zeilen in die richtige + Reihenfolge zu bringen. + +---> d) Kannst Du das auch? +---> b) Veilchen sind blau, +---> c) Intelligenz ist erlernbar, +---> a) Rosen sind rot, +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 3.2: ERSETZEN (REPLACE) + + + ** Tippe rx , um das Zeichen unter dem Cursor durch x zu ersetzen. ** + + 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. + + 2. Bewege den Cursor, bis er sich auf dem ersten Fehler befindet. + + 3. Tippe r und anschließend das Zeichen, welches dort stehen sollte. + + 4. Wiederhole Schritte 2 und 3, bis die erste Zeile gleich der zweiten ist. + +---> Als diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt! +---> Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt! + + 5. Nun fahre fort mit Lektion 3.2. + +Bemerkung: Erinnere Dich, dass Du durch Anwenden lernen solltest, nicht durch + Auswendiglernen. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 3.3: ÄNDERN (CHANGE) + + + ** Um eine Änderung bis zum Wortende durchzuführen, tippe ce . ** + + 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. + + 2. Platziere den Cursor auf das s von Wstwr. + + 3. Tippe ce und die Wortkorrektur ein (in diesem Fall tippe örter ). + + 4. Drücke und bewege den Cursor zum nächsten zu ändernden Zeichen. + + 5. Wiederhole Schritte 3 und 4 bis der erste Satz gleich dem zweiten ist. + +---> Einige Wstwr dieser Zlaww lasdjlaf mit dem Ändern-Operator gaaauu werden. +---> Einige Wörter dieser Zeile sollen mit dem Ändern-Operator geändert werden. + +Bemerke, dass ce das Wort löscht und Dich in den Eingabemodus versetzt. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 3.4: MEHR ÄNDERUNGEN MITTELS c + + + ** Das change-Kommando arbeitet mit denselben Bewegungen wie delete. ** + + 1. Der change Operator arbeitet in gleicher Weise wie delete. Das Format ist: + + c [Anzahl] Bewegungsschritt + + 2. Die Bewegungsschritte sind die gleichen , so wie w (Wort) und $ + (Zeilenende). + + 3. Bewege Dich zur ersten unten stehenden mit ---> markierten Zeile. + + 4. Bewege den Cursor zum ersten Fehler. + + 5. Tippe c$ , gib den Rest der Zeile wie in der zweiten ein, drücke . + +---> Das Ende dieser Zeile soll an die zweite Zeile angeglichen werden. +---> Das Ende dieser Zeile soll mit dem c$ Kommando korrigiert werden. + +Bemerkung: Du kannst die Rücktaste benutzen, um Tippfehler zu korrigieren. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 3 + + + 1. Um einen vorher gelöschten Text anzufügen, tippe p . Dies fügt den + gelöschten Text NACH dem Cursor an (wenn eine ganze Zeile gelöscht wurde, + wird diese in die Zeile unter dem Cursor eingefügt). + + 2. Um das Zeichen unter dem Cursor zu ersetzen, tippe r und das an dieser + Stelle gewünschte Zeichen. + + 3. Der Änderungs- (change) Operator erlaubt, vom Cursor bis zum Ende des + Bewegungsschrittes zu ändern. Tippe ce , um eine Änderung vom Cursor bis + zum Ende des Wortes vorzunehmen; c$ bis zum Ende einer Zeile. + + 4. Das Format für change ist: + + c [Anzahl] Bewegungsschritt + + Nun fahre mit der nächsten Lektion fort. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 4.1: CURSORPOSITION UND DATEISTATUS + + ** Tippe CTRL-G , um Deine Dateiposition sowie den Dateistatus anzuzeigen. ** + ** Tippe G , um Dich zu einer Zeile in der Datei zu begeben. ** + +Bemerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!! + + 1. Halte die Ctrl Taste unten und drücke g . Dies nennen wir wir CTRL-G. + Eine Statusmeldung am Fuß der Seite erscheint mit dem Dateinamen und der + Position innerhalb der Datei. Merke Dir die Zeilennummer für Schritt 3. + +Bemerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten + Bildschirmecke. Dies ist Folge der 'ruler' Option (siehe :help 'ruler') + + 2. Drücke G , um Dich zum Ende der Datei zu begeben. + Tippe gg , um Dich zum Anfang der Datei zu begeben. + + 3. Gib die Nummer der Zeile ein, auf der Du vorher warst, gefolgt von G . + Dies bringt Dich zurück zu der Zeile, auf der Du gestanden hast, als Du + das erste Mal CTRL-G gedrückt hast. + + 4. Wenn Du Dich sicher genug fühlst, führe die Schritte 1 bis 3 aus. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 4.2: DAS SUCHEN - KOMMANDO + + + ** Tippe / gefolgt von einem Ausdruck, um nach dem Ausdruck zu suchen. ** + + 1. Im Normalmodus, tippe das / Zeichen. Bemerke, dass das / und der + Cursor am Fuß des Schirms erscheinen, so wie beim : Kommando. + + 2. Nun tippe 'Fehhler' . Dies ist das Wort, nach dem Du suchen willst. + + 3. Um nach demselben Ausdruck weiterzusuchen, tippe einfach n (für next). + Um nach demselben Ausdruck in der Gegenrichtung zu suchen, tippe N . + + 4. Um nach einem Ausdruck rückwärts zu suchen , benutze ? statt / . + + 5. Um dahin zurückzukehren, von wo Du gekommen bist, drücke CTRL-O (Halte + Ctrl unten und drücke den Buchstaben o). Wiederhole dies, um weiter + zurückzugehen. CTRL-I bringt dich vorwärts. + +---> Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler +Bemerkung: Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang + fortgesetzt, es sei denn, die 'wrapscan' Option wurde abgeschaltet. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 4.3: PASSENDE KLAMMERN FINDEN + + + ** Tippe % , um eine korrespondierende Klammer ),], oder } zu finden. ** + + 1. Platziere den Cursor auf irgendeines der Zeichen (, [, oder { in der unten + stehenden Zeile, die mit ---> markiert ist. + + 2. Nun tippe das % Zeichen. + + 3. Der Cursor bewegt sich zur passenden gegenüberliegenden Klammer. + + 4. Tippe % , um den Cursor zur anderen passenden Klammer zu bewegen. + + 5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere % aus. + +---> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern } darin. )) + +Bemerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem + Programmtext, in dem passende Klammern fehlen! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE) + + + ** Tippe :s/alt/neu/g , um 'alt' durch 'neu' zu ersetzen. ** + + 1. Bewege den Cursor zu der unten stehenden mit ---> markierten Zeile. + + 2. Tippe :s/diee/die . Bemerke, dass der Befehl nur das erste + Vorkommen von "diee" ersetzt. + + 3. Nun tippe :s/diee/die/g . Das Zufügen des Flags g bedeutet, eine + globale Ersetzung über die Zeile durchzuführen, was alle Vorkommen von + "diee" auf der Zeile ersetzt. + +---> diee schönste Zeit, um diee Blumen anzuschauen, ist diee Frühlingszeit. + + 4. Um alle Vorkommen einer Zeichenkette innerhalb zweier Zeilen zu ändern, + tippe :#,#s/alt/neu/g wobei #,# die Zeilennummern des Zeilenbereiches + sind, in dem die Ersetzung durchgeführt werden soll. + Tippe :%s/alt/neu/g um alle Vorkommen in der gesamten Datei zu ändern. + Tippe :%s/alt/neu/gc um alle Vorkommen in der gesamten Datei zu finden + mit einem Fragedialog, ob ersetzt werden soll oder nicht. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 4 + + 1. CTRL-G zeigt die aktuelle Dateiposition sowie den Dateistatus. + G bringt Dich zum Ende der Datei. + Nummer G bringt Dich zur entsprechenden Zeilennummer. + gg bringt Dich zur ersten Zeile. + + 2. Die Eingabe von / plus einem Ausdruck sucht VORWÄRTS nach dem Ausdruck. + Die Eingabe von ? plus einem Ausdruck sucht RÜCKWÄRTS nach dem Ausdruck. + Tippe nach einer Suche n , um das nächste Vorkommen in der gleichen + Richtung zu finden; oder N , um in der Gegenrichtung zu suchen. + CTRL-O bringt Dich zurück zu älteren Positionen, CTRL-I zu neueren. + + 3. Die Eingabe von % , wenn der Cursor sich auf (,),[,],{, oder } + befindet, bringt Dich zur Gegenklammer. + + 4. Um das erste Vorkommen von "alt" in einer Zeile durch "neu" zu ersetzen, + tippe :s/alt/neu + Um alle Vorkommen von "alt" in der Zeile ersetzen, tippe :s/alt/neu/g + Um Ausdrücke innerhalb zweier Zeilennummern zu ersetzen, :#,#s/alt/neu/g + Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g + Für eine jedmalige Bestätigung, addiere 'c' (confirm) :%s/alt/neu/gc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 5.1: AUSFÜHREN EINES EXTERNEN KOMMANDOS + + + ** Gib :! , gefolgt von einem externen Kommando ein, um es auszuführen. ** + + 1. Tippe das vertraute Kommando : , um den Cursor auf den Fuß des Schirms + zu setzen. Dies erlaubt Dir, ein Kommandozeilen-Kommando einzugeben. + + 2. Nun tippe ein ! (Ausrufezeichen). Dies ermöglicht Dir, ein beliebiges, + externes Shellkommando auszuführen. + + 3. Als Beispiel tippe ls nach dem ! und drücke . Dies zeigt + eine Auflistung Deines Verzeichnisses; genauso, als wenn Du auf der + Eingabeaufforderung wärst. Oder verwende :!dir , falls ls nicht geht. + +Bemerkung: Mit dieser Methode kann jedes beliebige externe Kommando + ausgeführt werden, auch mit Argumenten. + +Bemerkung: Alle : Kommandos müssen durch Eingabe von + abgeschlossen werden. Von jetzt an erwähnen wir dies nicht jedesmal. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 5.2: MEHR ÜBER DAS SCHREIBEN VON DATEIEN + + +** Um am Text durchgeführte Änderungen zu speichern, tippe :w DATEINAME. ** + + 1. Tippe :!dir oder :!ls , um eine Auflistung Deines Verzeichnisses zu + erhalten. Du weißt nun bereits, dass Du danach eingeben musst. + + 2. Wähle einen Dateinamen, der noch nicht existiert, z.B. TEST. + + 3. Nun tippe: :w TEST (wobei TEST der gewählte Dateiname ist). + + 4. Dies speichert die ganze Datei (den Vim Tutor) unter dem Namen TEST. + Um dies zu überprüfen, tippe nochmals :!ls bzw. !dir, um Deinen + Verzeichnisinhalt zu sehen. + +Bemerkung: Würdest Du Vim jetzt beenden und danach wieder mit vim TEST + starten, dann wäre diese Datei eine exakte Kopie des Tutors zu dem + Zeitpunkt, als Du ihn gespeichert hast. + + 5. Nun entferne die Datei durch Eingabe von (MS-DOS): :!del TEST + oder (Unix): :!rm TEST +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN + +** Um einen Abschnitt der Datei zu speichern, tippe v Bewegung :w DATEI ** + + 1. Bewege den Cursor zu dieser Zeile. + + 2. Tippe v und bewege den Cursor zum fünften Auflistungspunkt unten. + Bemerke, daß der Text hervorgehoben wird. + + 3. Drücke das Zeichen : . Am Fuß des Schirms erscheint :'<,'> . + + 4. Tippe w TEST , wobei TEST ein noch nicht vorhandener Dateiname ist. + Vergewissere Dich, daß Du :'<,'>w TEST siehst, bevor Du Enter drückst. + + 5. Vim schreibt die ausgewählten Zeilen in die Datei TEST. Benutze :!dir + oder :!ls , um sie zu sehen. Lösche sie noch nicht! Wir werden sie in + der nächsten Lektion benutzen. + +Bemerkung: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor + umherbewegen, um die Auswahl größer oder kleiner zu machen. Anschließend + kann man einen Operator anwenden, um mit dem Text etwas zu tun. Zum + Beispiel löscht d den Text. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 5.4: EINLESEN UND ZUSAMMENFÜHREN VON DATEIEN + + + ** Um den Inhalt einer Datei einzulesen, tippe :r DATEINAME ** + + 1. Platziere den Cursor überhalb dieser Zeile. + +BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 + sehen. Dann bewege Dich wieder ABWÄRTS, um diese Lektion wiederzusehen. + + 2. Nun lies Deine Datei TEST ein indem Du das Kommando :r TEST ausführst, + wobei TEST der von Dir verwendete Dateiname ist. + Die eingelesene Datei wird unterhalb der Cursorzeile eingefügt. + + 3. Um zu überprüfen, dass die Datei eingelesen wurde, gehe zurück und siehe, + dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und die + eingefügte Dateiversion. + +Bemerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum + Beispiel liest :r !ls die Ausgabe des Kommandos ls ein und platziert + sie unterhalb des Cursors. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 5 + + + 1. :!Kommando führt ein externes Kommando aus. + + Einige nützliche Beispiele sind + (MS-DOS) (Unix) + :!dir :!ls - zeigt eine Verzeichnisauflistung. + :!del DATEINAME :!rm DATEINAME - entfernt Datei DATEINAME. + + 2. :w DATEINAME speichert die aktuelle Vim-Datei unter dem Namen DATEINAME. + + 3. v Bewegung :w DATEINAME schreibt die Visuell ausgewählten Zeilen in + die Datei DATEINAME. + + 4. :r DATEINAME lädt die Datei DATEINAME und fügt sie unterhalb der + Cursorposition ein. + + 5. :r !dir liest die Ausgabe des Kommandos dir und fügt sie unterhalb der + Cursorposition ein. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.1: ZEILEN ÖFFNEN (OPEN) + + + ** Tippe o , um eine Zeile unterhalb des Cursors zu öffnen und Dich in ** + ** den Einfügemodus zu begeben. ** + + 1. Bewege den Cursor zu der ersten mit ---> markierten Zeile unten. + + 2. Tippe o (klein geschrieben), um eine Zeile UNTERHALB des Cursos zu öffnen + und Dich in den Einfügemodus zu begeben. + + 3. Nun tippe etwas Text und drücke , um den Einfügemodus zu verlassen. + +---> Mit o wird der Cursor auf der offenen Zeile im Einfügemodus platziert. + + 4. Um eine Zeile ÜBERHALB des Cursos aufzumachen, gib einfach ein großes O + statt einem kleinen o ein. Versuche dies auf der unten stehenden Zeile. + +---> Öffne eine Zeile über dieser mit O , wenn der Cursor auf dieser Zeile ist. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.2: TEXT ANFÜGEN (APPEND) + + + ** Tippe a , um Text NACH dem Cursor einzufügen. ** + + 1. Bewege den Cursor zum Anfang der ersten Übungszeile mit ---> unten. + + 2. Drücke e , bis der Cursor am Ende von Zei steht. + + 3. Tippe ein kleines a , um Text NACH dem Cursor anzufügen. + + 4. Vervollständige das Wort so wie in der Zeile darunter. Drücke , + um den Einfügemodus zu verlassen. + + 5. Bewege Dich mit e zum nächsten unvollständigen Wort und wiederhole + Schritte 3 und 4. + +---> Diese Zei bietet Gelegen , Text in einer Zeile anzufü. +---> Diese Zeile bietet Gelegenheit, Text in einer Zeile anzufügen. + +Bemerkung: a, i und A gehen alle gleichermaßen in den Einfügemodus; der + einzige Unterschied ist, wo die Zeichen eingefügt werden. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.3: EINE ANDERE ART DES ERSETZENS (REPLACE) + + + ** Tippe ein großes R , um mehr als ein Zeichen zu ersetzen. ** + + 1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile. + Bewege den Cursor zum Anfang des ersten xxx . + + 2. Nun drücke R und tippe die Nummer, die darunter in der zweiten Zeile + steht, so das diese das xxx ersetzt. + + 3. Drücke , um den Ersetzungsmodus zu verlassen. Bemerke, daß der Rest + der Zeile unverändert bleibt. + + 4. Wiederhole die Schritte, um das verbliebene xxx zu ersetzen. + +---> Das Addieren von 123 zu xxx ergibt xxx. +---> Das Addieren von 123 zu 456 ergibt 579. + +Bemerkung: Der Ersetzungsmodus ist wie der Einfügemodus, aber jedes eingetippte + Zeichen löscht ein vorhandenes Zeichen. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.4: TEXT KOPIEREN UND EINFÜGEN + + ** Benutze den y Operator, um Text zu kopieren; p , um ihn einzufügen ** + + 1. Gehe zu der mit ---> markierten Zeile unten, setze den Cursor hinter "a)". + + 2. Starte den Visuellen Modus mit v , bewege den Cursor genau vor "erste". + + 3. Tippe y , um den hervorgehoben Text zu kopieren. + + 4. Bewege den Cursor zum Ende der nächsten Zeile: j$ + + 5. Tippe p , um den Text einzufügen und anschließend: a zweite . + + 6. Benutze den Visuellen Modus, um " Eintrag." auszuwählen, kopiere mittels + y , bewege Dich zum Ende der nächsten Zeile mit j$ und füge den Text + dort mit p an. + +---> a) dies ist der erste Eintrag. + b) + +Bemerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.5: OPTIONEN SETZEN + + ** Setze eine Option so, dass eine Suche oder eine Ersetzung Groß- ** + ** und Kleinschreibung ignoriert ** + + 1. Suche nach 'ignoriere', indem Du /ignoriere eingibst. + Wiederhole die Suche einige Male, indem Du die n - Taste drückst. + + 2. Setze die 'ic' (Ignore case) - Option, indem Du :set ic eingibst. + + 3. Nun suche wieder nach 'ignoriere', indem Du n tippst. + Bemerke, daß jetzt Ignoriere und auch IGNORIERE gefunden wird. + + 4. Setze die 'hlsearch' und 'incsearch' - Optionen: :set hls is + + 5. Wiederhole die Suche und beobachte, was passiert: /ignoriere + + 6. Um das Ignorieren von Groß/Kleinschreibung abzuschalten, tippe: :set noic + +Bemerkung: Um die Hervorhebung der Treffer zu enfernen, gib ein: :nohlsearch +Bemerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze + \c im Suchausdruck: /ignoriere\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 6 + + 1. Tippe o , um eine Zeile UNTER dem Cursor zu öffnen und den Einfügemodus + zu starten. + Tippe O , um eine Zeile ÜBER dem Cursor zu öffnen. + + 2. Tippe a , um Text NACH dem Cursor anzufügen. + Tippe A , um Text nach dem Zeilenende anzufügen. + + 3. Das Kommando e bringt Dich zum Ende eines Wortes. + + 4. Der Operator y (yank) kopiert Text, p (put) fügt ihn ein. + + 5. Ein großes R geht in den Ersetzungsmodus bis zum Drücken von . + + 6. Die Eingabe von ":set xxx" setzt die Option "xxx". Einige Optionen sind: + 'ic' 'ignorecase' Ignoriere Groß/Kleinschreibung bei einer Suche + 'is' 'incsearch' Zeige Teilübereinstimmungen für einen Suchausdruck + 'hls' 'hlsearch' Hebe alle passenden Ausdrücke hervor + Der Optionsname kann in der Kurz- oder der Langform angegeben werden. + + 7. Stelle einer Option "no" voran, um sie abzuschalten: :set noic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 7.1 : AUFRUFEN VON HILFE + + + ** Nutze das eingebaute Hilfesystem ** + + Vim besitzt ein umfassendes eingebautes Hilfesystem. Für den Anfang probiere + eins der drei folgenden Dinge aus: + - Drücke die - Taste (falls Du eine besitzt) + - Drücke die Taste (falls Du eine besitzt) + - Tippe :help + + Lies den Text im Hilfefenster, um zu verstehen wie die Hilfe funktioniert. + Tippe CTRL-W CTRL-W , um von einem Fenster zum anderen zu springen. + Tippe :q , um das Hilfefenster zu schließen. + + Du kannst Hilfe zu praktisch jedem Thema finden, indem Du dem ":help"- + Kommando ein Argument gibst. Probiere folgendes ( nicht vergessen): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 7.2: ERSTELLE EIN START-SKRIPT + + + ** Aktiviere die eingebauten Funktionalitäten von Vim ** + + Vim besitzt viele Funktionalitäten, die über Vi hinausgehen, aber die meisten + von ihnen sind standardmäßig deaktiviert. Um mehr Funktionalitäten zu nutzen, + musst Du eine "vimrc" - Datei erstellen. + + 1. Starte das Editieren der "vimrc"-Datei, abhängig von Deinem System: + :e ~/.vimrc für Unix + :e $VIM/_vimrc für MS-Windows + + 2. Nun lies den Inhalt der Beispiel-"vimrc"-Datei ein: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Speichere die Datei mit: + :w + + Beim nächsten Start von Vim wird die Syntaxhervorhebung aktiviert sein. + Du kannst all Deine bevorzugten Optionen zu dieser "vimrc"-Datei zufügen. + Für mehr Informationen tippe :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 7.3: VERVOLLSTÄNDIGEN + + + ** Kommandozeilenvervollständigung mit CTRL-D and ** + + 1. Stelle sicher, daß Vim nicht im vi-Kompatibilitätsmodus ist: :set nocp + + 2. Siehe nach, welche Dateien im Verzeichnis existieren: :!ls oder :dir + + 3. Tippe den Beginn eines Komandos: :e + + 4. Drücke CTRL-D und Vim zeigt eine Liste mit "e" beginnender Kommandos. + + 5. Drücke und Vim vervollständigt den Kommandonamen zu ":edit". + + 6. Nun füge ein Leerzeichen und den Beginn einer existierenden Datei an: + :edit DAT + + 7. Drücke . Vim vervollständigt den Namen (falls er eindeutig ist). + +Bemerkung: Vervollständigung funktioniert für viele Kommandos. Versuche + einfach CTRL-D und . Dies ist insbesondere nützlich für :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZUSAMMENFASSUNG VON LEKTION 7 + + + 1. Tippe :help oder drücke oder , um ein Hilfefenster zu öffnen. + + 2. Tippe :help Kommando , um Hilfe über Kommando zu erhalten. + + 3. Tippe CTRL-W CTRL-W , um zum anderen Fenster zu springen. + + 4. Tippe :q , um das Hilfefenster zu schließen. + + 5. Erstelle ein vimrc - Startskript zur Sicherung bevorzugter Einstellungen. + + 6. Drücke CTRL-D nach dem Tippen eines Kommandos : , um mögliche + Vervollständigungen zu sehen. + Drücke für eine einzige Vervollständigung. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Damit ist der Vim Tutor beendet. Die Intention war, einen kurzen und + bündigen Überblick über den Vim Editor zu liefern; gerade genug, um relativ + leicht mit ihm umgehen zu können. Der Vim Tutor hat nicht den geringsten + Anspruch auf Vollständigkeit; Vim hat noch weitaus mehr Kommandos. Lies als + nächstes das User Manual: ":help user-manual". + + Für weiteres Lesen und Lernen ist folgendes Buch empfohlen : + Vim - Vi Improved - von Steve Oualline + Verlag: New Riders + Das erste Buch, welches durchgängig Vim gewidmet ist. Besonders nützlich + für Anfänger. Viele Beispiele und Bilder sind enthalten. + Siehe http://iccf-holland.org/click5.html + + Folgendes Buch ist älter und mehr über Vi als Vim, aber auch empfehlenswert: + Textbearbeitung mit dem vi-Editor - von Linda Lamb und Arnold Robbins + Verlag O'Reilly - ISBN: 3897211262 + In diesem Buch kann man fast alles finden, was man mit Vi tun möchte. + Die sechste Ausgabe enthält auch Informationen über Vim. + + Als aktuelle Referenz für Version 6.2 und knappe Einführung dient das + folgende Buch: + vim ge-packt von Reinhard Wobst + mitp-Verlag, ISBN 3-8266-1425-9 + Trotz der kompakten Darstellung ist es durch viele nützliche Beispiele auch + für Einsteiger empfehlenswert. Probekapitel und die Beispielskripte sind + online erhältlich. Siehe http://iccf-holland.org/click5.html + + Dieses Tutorial wurde geschrieben von Michael C. Pierce and Robert K. Ware, + Colorado School of Mines. Es benutzt Ideen, die Charles Smith, Colorado State + University, zur Verfügung stellte. E-mail: bware@mines.colorado.edu. + + Bearbeitet für Vim von Bram Moolenaar. + Deutsche Übersetzung von Joachim Hofmann 2007. E-mail: Joachim.Hof@gmx.de + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.el b/share/vim/vim74/tutor/tutor.el similarity index 100% rename from share/vim/vim73/tutor/tutor.el rename to share/vim/vim74/tutor/tutor.el diff --git a/share/vim/vim73/tutor/tutor.el.cp737 b/share/vim/vim74/tutor/tutor.el.cp737 similarity index 100% rename from share/vim/vim73/tutor/tutor.el.cp737 rename to share/vim/vim74/tutor/tutor.el.cp737 diff --git a/share/vim/vim73/tutor/tutor.el.utf-8 b/share/vim/vim74/tutor/tutor.el.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.el.utf-8 rename to share/vim/vim74/tutor/tutor.el.utf-8 diff --git a/share/vim/vim74/tutor/tutor.eo b/share/vim/vim74/tutor/tutor.eo new file mode 100644 index 00000000..c075ec7a --- /dev/null +++ b/share/vim/vim74/tutor/tutor.eo @@ -0,0 +1,991 @@ +============================================================================== += B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7 = +============================================================================== + + Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili + por æion klarigi en instruilo kiel æi tiu. Æi tiu instruilo estas + fasonita por priskribi sufiæajn komandojn, por ke vi kapablu uzi Vim + kun sufiæa facileco. + + La tempo bezonata por plenumi la kurson estas 25-30 minutoj, kaj dependas + de kiom da tempo estas uzata por eksperimenti. + + ATENTU: + La komandoj en la lecionoj þanøos la tekston. Kopiu tiun æi dosieron + por ekzerci vin (se vi lanæis "vimtutor", tiam estas jam kopio). + + Gravas memori, ke æi tiu instruilo estas organizata por instrui per + la uzo. Tio signifas, ke vi devas plenumi la komandojn por bone lerni + ilin. Se vi nur legas la tekston, vi forgesos la komandojn! + + Nun, certigu, ke la majuskla baskulo NE estas en reøimo majuskla, + kaj premu la klavon j sufiæe da fojoj por movi la kursoron, kaj por + ke la leciono 1.1 plenigu la ekranon. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.1: MOVI LA KURSORON + + + ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. ** + ^ + k Konsilo: La klavo h estas la plej liva kaj movas liven. + < h l > La klavo l estas la plej dekstra kaj movas dekstren. + j La klavo j aspektas kiel malsuprena sago. + v + 1. Movu la kursoron sur la ekrano øis kiam vi sentas vin komforta. + + 2. Premu la klavon (j) øis kiam øi ripetas. + Vi nun scias, kiel moviøi al la sekvanta leciono + + 3. Uzante la malsuprenan klavon, moviøu al la leciono 1.2. + +RIMARKO: Se vi dubas pri tio, kion vi premis, premu por reiri al + la normala reøimo. Tiam repremu la deziratan komandon. + +RIMARKO: La klavoj de la kursoro devus ankaý funkcii. Sed uzante hjkl, + vi kapablos moviøi pli rapide post kiam vi kutimiøos. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.2: ELIRI EL VIM + + + !! RIMARKO: Antaý ol plenumi iujn subajn paþojn ajn, legu la tutan lecionon!! + + 1. Premu la klavon (por certigi, ke vi estas en normala reøimo). + + 2. Tajpu: :q! . + Tio eliras el la rekdaktilo, SEN konservi la þanøojn, kiujn vi faris. + + 3. Kiam vi vidas la þelinviton, tajpu la komandon kiun vi uzis por eniri + en æi tiu instruilo. Tio estus: vimtutor + + 4. Se vi memoris tiujn paþojn kaj sentas vin memfida, plenumu la paþojn + 1 øis 3 por eliri kaj reeniri la redaktilon. + +RIMARKO: :q! eliras sen konservi la þanøojn, kiujn vi faris. + Post kelkaj lecionoj, vi lernos kiel konservi la þanøojn al dosiero. + + 5. Movu la kursoron suben øis la leciono 1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.3: REDAKTO DE TEKSTO - FORVIÞO + + + ** Premu x por forviþi la signon sub la kursoro. ** + + 1. Movu la kursoron al la suba linio markita per --->. + + 2. Por korekti la erarojn, movu la kursoron øis kiam øi estas sur la + forviþenda signo. + + 3. Premu la klavon x por forviþi la nedeziratan signon. + + 4. Ripetu paþojn 2 øis 4 øis kiam la frazo estas øusta. + + +---> La boovinno saaltiss ssur laa luuno. + + 5. Post kiam la linio estas øusta, iru al la leciono 1.4 + +RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.4: REDAKTO DE TEKSTO - ENMETO + + + ** Premu i por enmeti tekston. ** + + 1. Movu la kursoron al la unua suba linio markita per --->. + + 2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan + signon post kie la teksto estas enmetenda. + + 3. Premu i kaj tajpu la bezonatajn aldonojn. + + 4. Premu kiam la eraroj estas korektitaj por reiri al la normala + reøimo. Ripetu la paþojn 2 øis 4 por korekti la frazon. + +---> Mank en æi linio. +---> Mankas teksto en æi tiu linio. + + 5. Kiam vi sentas vin komforta pri enmeto de teksto, moviøu al la + leciono 1.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.5: REDAKTO DE TEKSTO - POSTALDONO + + + ** Premu A por postaldoni tekston. ** + + 1. Movu la kursoron al la unua suba linio markita per --->. + Ne gravas sur kiu signo estas la kursoro. + + 2. Premu majusklan A kaj tajpu la bezonatajn aldonojn. + + 3. Post kiam la teksto estas aldonita, premu por reiri al la normala + reøimo. + + 4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la + paþojn 2 kaj 3 por korekti la frazon. + +---> Mankas teksto el ti + Mankas teksto el tiu linio. +---> Mankas ankaý teks + Mankas ankaý teksto æi tie. + + 5 Kiam vi sentas vin komforta pri postaldono de teksto, moviøu al la + leciono 1.6 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.6: REDAKTI DOSIERON + + ** Uzu :wq por konservi dosieron kaj eliri. ** + + !! RIMARKO: Antaý ol plenumi iun suban paþon ajn, legu la tutan lecionon!! + + 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q! + Aý, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie. + + 2. Æe la þelinvito, tajpu æi tiun komandon: vim tutor + 'vim' estas la komando por lanæi la redaktilon Vim, 'tutor' estas la + dosiernomo de la dosiero, kiun vi volas redakti. Uzu dosieron, kiu + þanøeblas. + + 3. Enmetu kaj forviþu tekston, kiel vi lernis en la antaýaj lecionoj. + + 4. Konservu la dosieron kun þanøoj kaj eliru el Vim per: :wq + + 5. Se vi eliris la instruilon vimtutor en paþo 1, restartigu la intruilon + vimtutor kaj moviøu suben al la sekvanta resumo. + + 6. Post kiam vi legis la suprajn paþojn, kaj komprenis ilin: faru ilin. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1 RESUMO + + + 1. La kursoro moviøas aý per la sagoklavoj, aý per la klavoj hjkl. + h (liven) j (suben) k (supren) l (dekstren) + + 2. Por lanæi Vim el la þelinvito, tajpu: vim DOSIERNOMO + + 3. Por eliri el Vim, tajpu: :q! por rezigni la þanøojn + + 4. Por forviþi la signojn æe la pozicio de la kursoro, tajpu: x + + 5. Por enmeti aý postaldoni tekston, tajpu: + i tajpu enmetendan tekston + enmetas tekston antaý la kursoro + + A tajpu la postaldonendan tekston + postaldonas post la kursoro + +RIMARKO: Premo de iras al la normala reøimo, aý rezignas la + nedeziratan aý parte plenumita komando. + +Nun daýrigu al la leciono 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.1: KOMANDOJ DE FORVIÞO + + + ** Tajpu dw por forviþi vorton. ** + + 1. Premu por certigi, ke vi estas en normala reøimo. + + 2. Movu la kursoron al la linio markita per --->. + + 3. Movu la kursoron al la komenco de vorto, kiu forviþendas. + + 4. Tajpu dw por forviþi la vorton. + + RIMARKO: La litero d aperos en la lasta linio sur la ekrano kiam vi + tajpas øin. Vim atendas øis kiam vi tajpas w . Se vi vidas + alian signon ol d vi tajpis ion mise; premu kaj + rekomencu. + +---> Estas iuj vortoj kiuj Zamenhof ne devus esti akuzativo en æi tiu frazo. + + 5. Ripetu paþojn 3 kaj 4 øis kiam la frazo estas øusta kaj moviøu al la + leciono 2.2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.2: PLIAJ KOMANDOJ DE FORVIÞO + + + ** Tajpu d$ por forviþi la finon de la linio. ** + + 1. Premu por certigi, ke vi estas en normala reøimo. + + 2. Movu la kursoron sur la suban linion markita per --->. + + 3. Movu la kursoron æe la fino de la øusta linio (POST la unua . ). + + 4. Tajpu d$ por forivþi øis la fino de la linio. + +---> Iu tajpis la finon de æi tiu linio dufoje. fino de æi tiu linio dufoje. + + + 5. Moviøu al la leciono 2.3 por kompreni kio okazas. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ + + + Multaj komandoj, kiuj þanøas la tekston, estas faritaj de operatoro kaj + movo. La formato de komando de forviþo per la operatoro de forviþo d + estas kiel sekvas: + + d movo + + Kie: + d - estas la operatoro de movo + movo - estas tio, pri kio la operatoro operacios (listigita sube) + + Mallonga listo de movoj: + w - øis la komenco de la sekvanta vorto, krom øia unua signo. + e - øis la fino de la nuna vorto, krom la lasta signo. + $ - øis la fino de la linio, krom la lasta signo. + + Do tajpo de 'de' forviþos ekde la kursoro øis la fino de la vorto. + +RIMARKO: Premo de nur la movo en Normala reøimo sen operatoro movos + la kursoron kiel specifite. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.4: UZI NOMBRON POR MOVO + + ** Tajpo de nombro antaý movo ripetas øin laýfoje. ** + + 1. Movu la kursoron æe la komenco de la suba linio markita per --->. + + 2. Tajpu 2w por movi la kursoron je du vortoj antaýen. + + 3. Tajpu 3e por movi la kursoron æe la fino de la tria vorto antaýen. + + 4. Tajpu 0 (nul) por moviøi æe la komenco de la linio. + + + 5. Ripetu paþojn 2 øis 3 kun malsamaj nombroj. + +---> Tio estas nur linio kun vortoj, kie vi povas moviøi. + + 6. Moviøu al la leciono 2.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.5: UZI NOMBRON POR FORVIÞI PLI + + + ** Tajpo de nombro kun operatoro ripetas øin laýfoje. ** + + En la kombina¼o de la operatoro de forviþo, kaj movo kiel menciita + æi-supre, eblas aldoni nombron antaý la movo por pli forviþi: + d nombro movo + + 1. Movu la kursoron æe la unua MAJUSKLA vorto en la linio markita per --->. + + 2. Tajpu d2w por forviþi la du MAJUSKLAJN vortojn + + 3. Ripetu paþojn 1 øis 2 per malsama nombro por forviþi la sinsekvajn + MAJUSKLAJN vortojn per unu komando + +---> Tiu AB CDE linio FGHI JK LMN OP de vortoj estas Q RS TUV purigita. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.6: OPERACII SUR LINIOJ + + + ** Tajpu dd por forviþi tutan linion. ** + + Pro la ofteco de forviþo de tuta linio, la verkisto de Vi decidis, ke + estus pli facile simple tajpi du d-ojn por forviþi linion. + + 1. Movu la kursoron sur la duan linion en la suba frazo. + 2. Tajpu dd por forviþi la linion. + 3. Nun moviøu al la kvara linio. + 4. Tajpu 2dd por forviþi du liniojn. + +---> 1) Rozoj estas ruøaj, +---> 2) Þlimo estas amuza, +---> 3) Violoj estas bluaj, +---> 4) Mi havas aýton, +---> 5) Horloøoj diras kioma horo estas, +---> 6) Sukero estas dolæa, +---> 7) Kaj tiel vi estas. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.7: LA KOMANDO DE MALFARO + + + ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. ** + + 1. Movu la kursoron æe la suba linio markita per ---> kaj metu øin sur + la unuan eraron. + 2. Tajpu x por forviþi la unuan nedeziratan signon. + 3. Nun tajpu u por malfari la lastan plenumitan komandon. + 4. Æi-foje, riparu æiujn erarojn en la linio kaj øia originala stato. + 5. Nun tajpu majusklan U por igi la linion al øia antaýa stato. + 6. Nun tajpu u kelkfoje por malfari la U kaj antaýajn komandojn. + 7. Nun tajpu CTRL-R (premante la CTRL klavon dum vi premas R) kelkfoje + por refari la komandojn (malfari la malfarojn). + +---> Koorektii la erarojn sur tiuu æi liniio kaj remettu illlin per malfaro. + + 8. Tiuj estas tre utilaj komandoj. Nun moviøu al la leciono 2 RESUMO. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2 RESUMO + + + 1. Por forviþi ekde la kursoro øis la sekvanta vorto, tajpu: dw + 2. Por forviþi ekde la kursoro øis la fino de la linio, tajpu: d$ + 3. Por forviþi tutan linion, tajpu: dd + + 4. Por ripeti movon, antaýmetu nombron: 2w + 5. La formato de þanøa komando estas: + operatoro [nombro] movo + + kie: + operatoro - estas tio, kio farendas, kiel d por forviþi + [nombro] - estas opcia nombro por ripeti la movon + movo - movas sur la teksto por operacii, kiel ekzemple w (vorto), + $ (øis fino de linio), ktp. + + 6. Por moviøi al la komenco de la linio, uzu nul: 0 + + 7. Por malfari antaýajn agojn, tajpu: u (minuskla u) + Por malfari æiujn þanøojn sur la linio, tajpu: U (majuskla U) + Por refari la malfarojn, tajpu: CTRL-R + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.1 LA KOMANDO DE METO + + + ** Tajpu p por meti tekston forviþitan antaýe post la kursoro. ** + + 1. Movu la kursoron æe la unua ---> suba linio. + + 2. Tajpu dd por forviþi la linion kaj konservi øin ene de reøistro de Vim. + + 3. Movu la kursoron æe la linio c), SUPER kie la forviþita linio devus esti. + + 4. Tajpu p por meti la linion sub la kursoron. + + 5. Ripetu la paþojn 2 øis 4 por meti æiujn liniojn en la øusta ordo. + +---> d) Æu ankaý vi povas lerni? +---> b) Violoj estas bluaj, +---> c) Inteligenteco lerneblas, +---> a) Rozoj estas ruøaj, + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.2 LA KOMANDO DE ANSTATAÝIGO + + + ** Tajpu rx por anstataýigi la signon æe la kursoro per x . ** + + + 1. Movu la kursoron æe la unua suba linio markita per --->. + + 2. Movu la kursoron øis la unua eraro. + + 3. Tajpu r kaj la signon, kiu devus esti tie. + + 4. Ripetu paþojn 2 kaj 3 øis kiam la unua linio egalas la duan. + +---> Kiem tiu lanio estis tajpita, iu pramis la naøuftajn klovojn! +---> Kiam tiu linio estis tajpita, iu premis la neøustajn klavojn! + + 5. Nun moviøu al la leciono 3.3. + +RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.3 LA OPERATORO DE ÞANØO + + + ** Por þanøi øis la fino de la vorto, tajpu ce . ** + + 1. Movu la kursoron æe la unua suba linio markita per --->. + + 2. Metu la kursoron sur la d en lduzw + + 3. Tajpu ce kaj la øustan vorton (en tiu æi kazo, tajpu inio ). + + 4. Premu kaj moviøu al la sekvanta signo, kiu bezonas þanøon. + + 5. Ripetu la paþojn 3 kaj 4 øis kiam la unua frazo egalas la duan. + +---> Tiu lduzw havas kelkajn vortojn, kiii bezas þanøon per la þanøooto. +---> Tiu linio havas kelkajn vortojn, kiuj bezonas þanøon per la þanøoperatoro. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.4 PLIAJ ÞANØOJ PER c + + + ** La operatoro de þanøo uzeblas kun la sama movo kiel forviþo. ** + + 1. La operatoro de þanøo funkcias sammaniere kiel forviþo. La formato estas: + + c [nombro] movo + + 2. La movoj estas samaj, kiel ekzemple w (vorto) kaj $ (fino de linio). + + 3. Moviøu æe la unua suba linio markita per --->. + + 4. Movu la kursoron al la unua eraro. + + 5. Tajpu c$ kaj tajpu la reston de la linio kiel la dua kaj premu . + +---> La fino de æi tiu linio bezonas helpon por igi øin same kiel la dua. +---> La fino de æi tiu linio bezonas korektojn per uzo de la komando c$ + +RIMARKO: Vi povas uzi la klavon Retropaþo por korekti erarojn dum vi tajpas. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3 RESUMO + + + 1. Por remeti tekston, kiun vi ¼us forviþis, tajpu p. Tio metas la + forviþitan tekston POST la kursoro (se linio estis forviþita, øi + iros en la linion sub la kursoro). + + 2. Por anstataýigi la signon sub la kursoro, tajpu r kaj tiam la signon + kion vi deziras havi tie. + + 3. La operatoro de þanøo ebligas al vi þanøi ekde la kursoro, øis kie + la movo iras. Ekz. tajpu ce por þanøi ekde la kursoro øis la fino + de la vorto, c$ por þanøi øis la fino de la linio. + + 4. La formato de þanøo estas: + + c [nombro] movo + +Nun daýrigu al la sekvanta leciono. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO + + + ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton. + Tajpu G por moviøi al linio en la dosiero. ** + + RIMARKO: Legu la tutan lecionon antaý ol plenumi iun paþon ajn!! + + 1. Premu la klavon Ctrl kaj premu g . Oni nomas tion CTRL-G. + Mesaøo aperos æe la suba parto de la paøo kun la dosiernomo kaj la + pozicio en la dosiero. Memoru la numeron de la linio por paþo 3. + + RIMARKO: Vi eble vidas la pozicion de la kursoro æe la suba dekstra + angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas + þaltita (vidu :help 'ruler') + + 2. Premu G por moviøi æe la subo de la dosiero. + Tajpu gg por moviøi æe la komenco de la dosiero. + + 3. Tajpu la numeron de la linio kie vi estis kaj poste G . Tio removos + vin al la linio, kie vi estis kiam vi unue premis CTRL-G. + + 4. Se vi sentas vin komforta, plenumu paþojn 1 øis 3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.2 LA KOMANDO DE SERÆO + + + ** Tajpu / kaj poste frazon por seræi la frazon. ** + + 1. En normala reøimo, tajpu la / signon. Rimarku, ke øi kaj la kursoro + aperas æe la suba parto de la ekrano kiel por la : komando. + + 2. Nun tajpu 'errarro' . + Tio estas la vorto, kion vi volas seræi. + + 3. Por seræi la saman frazon denove, simple tajpu n . + Por seræi la saman frazon denove en la retrodirekto, tajpu N . + + 4. Por seræi frazon en la retrodirekto, uzu ? anstataý / . + + 5. Por reiri tien, el kie vi venis, premu CTRL-O (Premu Ctrl kaj o + literon o). Ripetu por pli retroiri. CTRL-I iras antaýen. + +---> "errarro" ne estas maniero por literumi eraro; errarro estas eraro. + +RIMARKO: Kiam la seræo atingas la finon de la dosiero, øi daýras æe la + komenco, krom se la agordo 'wrapscan' estas malþaltita. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.3 SERÆO DE KONGRUAJ KRAMPOJ + + + ** Tajpu % por trovi kongruan ), ] aý } ** + + 1. Poziciu la kursoron sur iun (, [ aý { en la linio markita per --->. + + 2. Nun tajpu la % signon. + + 3. La kursoro moviøas al la kongrua krampo. + + 4. Tajpu % por movi la kursoron al la alia kongrua krampo. + + 5. Movu la kursoron al la alia (, ), [, ], {, } kaj observu tion, + kion % faras. + +---> Æi tiu ( estas testa linio kun (-oj, [-oj, ]-oj kaj {-oj, }-oj en øi. )) + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.4 LA KOMANDO DE ANSTATAýIGO + + + ** Tajpu :s/malnova/nova/g por anstataýigi 'nova' per 'malnova'. ** + + 1. Movu la kursoron al la suba linio markita per --->. + + 2. Tajpu :s/laa/la . Rimarku, ke la komando þanøas nur la + unuan okaza¼on de "laa" en la linio. + + 3. Nun tajpu :s/laa/la/g . Aldono de g opcio signifas mallokan + anstataýigon en la linio. Øi þanøas æiujn okaza¼ojn de "laa" en la + linio. + +---> laa plej bona tempo por vidi florojn estas en laa printempo. + + 4. Por þanøi æiujn okaza¼ojn de iu æena signo inter du linioj, + tajpu :#,#s/malnova/nova/g kie #,# estas la numeroj de linioj de la + intervalo de la linioj kie la anstataýigo + okazos. + Tajpu :%s/malnova/nova/g por þanøi æiujn okaza¼ojn en la tuta + dosiero. + Tajpu :s/malnova/nova/gc por trovi æiujn okaza¼ojn en la tuta + dosiero, kun invitilo æu anstataýigi + aý ne. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4 RESUMO + + 1. CTRL-G vidigas vian pozicion en la dosiero kaj la staton de la dosiero. + G movas la kursoron al la fino de la dosiero. + numero G movas la kursoron al numero de tiu linio. + gg movas la kursoron al la unua linio. + + 2. Tajpo de / kaj frazon seræas la frazon antaýen. + Tajpo de ? kaj frazon seræas la frazon malantaýen. + Post seræo, tajpu n por trovi la sekvantan okaza¼on en la sama direkto aý + N por seræi en la mala direkto. + CTRL-O movas vin al la antaýaj pozicioj, CTRL-I al la novaj pozicioj. + + 3. Tajpo de % kiam la kursoro estas sur (,),[,],{ aý } moviøas al øia + kongruo. + + 4. Por anstataýigi 'nova' en la unua 'malnova' en linio :s/malnova/nova + Por anstataýigi 'nova' en æiuj 'malnova'-oj en linio :s/malnova/nova/g + Por anstataýigi frazon inter du #-aj linioj :#,#s/malnova/nova/g + Por anstataýigi æiujn okaza¼ojn en la dosiero :%s/malnova/nova/g + Por demandi konfirmon æiu-foje, aldonu 'c' :%s/malnova/nova/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON + + + ** Tajpu :! sekvata de ekstera komando por plenumi la komandon. ** + + 1. Tajpu la konatan komandon : por pozicii la kursoron æe la suba parto + de la ekrano. Tio ebligas tajpadon de komando en komanda linio. + + 2. Nun tajpu la ! (krisigno) signon. Tio ebligas al vi plenumi iun + eksteran þelan komandon ajn. + + 3. Ekzemple, tajpu ls post ! kaj tajpu . Tio listigos la + enhavon de la dosierujo, same kiel se vi estis en þela invito. + Aý uzu :!dir se ls ne funkcias. + +RIMARKO: Eblas plenumi iun eksteran komandon ajn tiamaniere, ankaý kun + argumentoj. + +RIMARKO: Æiuj : komandoj devas finiøi per tajpo de + Ekde nun, ni ne plu mencios tion. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.2 PLI PRI KONSERVO DE DOSIERO + + + ** Por konservi la faritajn þanøojn en la teksto, tajpu :w DOSIERNOMO. ** + + 1. Tajpu !dir aý !ls por akiri liston de via dosierujo. + Vi jam scias, ke vi devas tajpi post tio. + + 2. Elektu dosieron, kiu ankoraý ne ekzistas, kiel ekzemple TESTO. + + 3. Nun tajpu: :w TESTO (kie TESTO estas la elektita dosiernomo) + + 4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO. + Por kontroli tion, tajpu :!dir aý :!ls denove por vidigi vian + dosierujon. + +RIMARKO: Se vi volus eliri el Vim kaj restartigi øin denove per vim TESTO, + la dosiero estus precize same kiel kopio de la instruilo kiam vi + konservis øin. + + 5. Nun forviþu la dosieron tajpante (MS-DOS): :!del TESTO + aý (UNIKSO): :!rm TESTO + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.3 APARTIGI KONSERVENDAN TESTON + + + ** Por konservi parton de la dosiero, tajpu v movo :w DOSIERNOMO ** + + 1. Movu la kursoron al tiu linio. + + 2. Premu v kaj movu la kursoron al la kvina suba ero. Rimarku, ke la + teksto emfaziøas. + + 3. Premu la : signon. Æe la fino de la ekrano :'<,'> aperos. + + 4. Tajpu w TESTO , kie TESTO estas dosiernomo, kiu ankoraý ne ekzistas. + Kontrolu, ke vi vidas :'<,'>w TESTO antaý premi . + + 5. Vim konservos la apartigitajn liniojn al la dosiero TESTO. Uzu :dir + aý :!ls por vidigi øin. Ne forviþu øin. Ni uzos øin en la sekvanta + leciono. + +RIMARKO: Premo de v komencas Viduman apartigon. Vi povas movi la kursoron + por pligrandigi aý malpligrandigi la apartigon. Tiam vi povas uzi + operatoron por plenumi ion kun la teksto. Ekzemple, d forviþas + la tekston. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN + + + ** Por enmeti la enhavon de dosiero, tajpu :r DOSIERNOMON ** + + 1. Movu la kursoron ¼us super æi tiu linio. + +RIMARKO: Post plenumo de paþo 2, vi vidos tekston el la leciono 5.3. Tiam + moviøu SUBEN por vidi tiun lecionon denove. + + 2. Nun akiru vian dosieron TESTO uzante la komandon :r TESTO kie TESTO + estas la nomo de la dosiero, kiun vi uzis. + La dosiero, kion vi akiras, estas metita sub la linio de la kursoro. + + 3. Por kontroli, æu la dosiero akiriøis, retromovu la kursoron kaj rimarku, + ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem + de la dosiero. + +RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, + :r !ls legas la eliron de la komando ls kaj metas øin sub la + kursoron. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5 RESUMO + + + 1. :!komando plenumas eksteran komandon. + + Iuj utilaj ekzemploj estas: + (MS-DOS) (UNIKSO) + :!dir :!ls - listigas dosierujon + :!del DOSIERNOMO :!rm DOSIERNOMO - forviþas la dosieron DOSIERNOMO + + 2. :w DOSIERNOMO konservas la nunan dosieron de Vim al disko kun la + nomo DOSIERNOMO. + + 3. v movo :w DOSIERNOMO konservas la Viduman apartigon de linioj en + dosiero DOSIERNOMO. + + 4. :r DOSIERNOMO akiras la dosieron DOSIERNOMO el la disko kaj metas + øin sub la pozicion de la kursoro. + + 5. :r !dir legas la eligon de la komando dir kaj metas øin sub la + pozicion de la kursoro. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.1 LA KOMANDO DE MALFERMO + + + ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan reøimon. ** + + 1. Movu la kursoron al la suba linio markita per --->. + + 2. Tajpu la minusklan literon o por malfermi linion SUB la kursoro kaj + eniri la Enmetan reøimon. + + 3. Nun tajpu tekston kaj premu por eliri la Enmetan reøimon. + +---> Post tajpo de o la kursoro moviøas al la malfermata linio en + Enmeta reøimo. + + 4. Por malfermi linion SUPER la kursoro, nur tajpu majusklan O , + anstataý minusklan o. Provu tion per la suba linio. + +---> Malfermu linion SUPER tiu tajpante O dum la kursoro estas sur tiu linio. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.2 LA KOMANDO DE POSTALDONO + + + ** Tajpu a por enmeti POST la kursoro. ** + + 1. Movu la kursoron æe la komenco de la linio markita per --->. + + 2. Premu e øis kiam la kursoro estas æe la fino de li. + + 3. Tajpu a (minuskle) por aldoni tekston POST la kursoro. + + 4. Kompletigu la vorton same kiel la linio sub øi. Premu por + eliri la Enmetan reøimon. + + 5. Uzu e por moviøi al la sekvanta nekompleta vorto kaj ripetu + paþojn 3 kaj 4. + +---> Æi tiu lin ebligos vin ekz vin postal tekston al linio. +---> Æi tiu linio ebligos vin ekzerci vin postaldoni tekston al linio. + +RIMARKO: Æiu a, i kaj A iras al la sama Enmeta reøimo, la nura malsamo + estas tie, kie la signoj estas enmetitaj. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.3 ALIA MANIERO POR ANSTATAÝIGI + + + ** Tajpu majusklan R por anstataýigi pli ol unu signo. ** + + 1. Movu la kursoron al la unua suba linio markita per --->. Movu la + kursoron al la komenco de la unua xxx . + + 2. Nun premu R kaj tajpu la nombron sub øi en la dua linio, por ke øi + anstataýigu la xxx . + + 3. Premu por foriri la Anstataýigan reøimon. Rimarku, ke la cetera + parto de la linio restas neþanøata. + + 4. Ripetu la paþojn por anstataýigi la restantajn xxx. + +---> Aldono de 123 al xxx donas al vi xxx. +---> Aldono de 123 al 456 donas al vi 579. + +RIMARKO: Anstataýiga reøimo estas same kiel Enmeta reøimo, sed æiu signo + tajpita forviþas ekzistan signon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.4 KOPII KAJ ALGLUI TEKSTON + + + ** Uzu la y operatoron por kopii tekston, kaj p por alglui øin ** + + + 1. Iru al la linio markita per ---> sube kaj poziciu la kursoron post "a)". + + 2. Komencu la Viduman reøimon per v kaj movu la kursoron ¼us antaý "unua". + + 3. Tajpu y por kopii la emfazitan tekston. + + 4. Movu la kursoron æe la fino de la linio: j$ + + 5. Tajpu p por alglui la tekston. Tiam tajpu: a dua . + + 6. Uzu Viduman reøimon por apartigi " ero.", kopiu øin per y , moviøu + æe la fino de la sekvanta linio per j$ kaj algluu la tekston tie + per p . + +---> a) tio estas la unua ero. + b) + +RIMARKO: vi povas ankaý uzi y kiel operatoro; yw kopias unu vorton. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.5 AGORDI OPCION + + + ** Agordu opcion por ke seræo aý anstataýigo ignoru usklecon ** + + 1. Seræu 'ignori' per tajpo de /ignori + Ripetu plurfoje premante n . + + 2. Þaltu la opcion 'ic' (ignori usklecon) per: :set ic + + 3. Nun seræu 'ignori' denove premante n + Rimarku, ke Ignori kaj IGNORI estas nun troveblas. + + 4. Þaltu la opciojn 'hlsearch' kaj 'incsearch': :set hls is + + 5. Nun retajpu la seræan komandon kaj vidu kio okazas: /ignore + + 6. Por malþalti ignoron de uskleco: :set noic + +RIMARKO: Por forigi emfazon de kongruo, tajpu: :nohlsearch +RIMARKO: Se vi deziras ignori usklecon por nur unu seræa komando, uzu \c + en la frazo: /ignore\c + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6 RESUMO + + 1. Tajpu o por malfermi linion SUB la kursoro kaj eki en Enmeta reøimo. + 1. Tajpu O por malfermi linion SUPER la kursoro. + + 2. Tajpu a por enmeti tekston POST la kursoro. + Tajpu A por enmeti tekston post la fino de la linio. + + 3. La e komando movas la kursoron al la fino de vorto. + + 4. la y operatoro kopias tekston, p algluas øin. + + 5. Tajpo de majuskla R eniras la Anstataýigan reøimon øis kiam + estas premita. + + 6. Tajpo de ":set xxx" þaltas la opcion "xxx". Iuj opcioj estas: + 'ic' 'ignorecase' ignori usklecon dum seræo + 'is' 'incsearch' montru partan kongruon dum seræo + 'hls' 'hlsearch' emfazas æiujn kongruajn frazojn + Vi povas uzi aý la longan, aý la mallongan nomon de opcio. + + 7. Antaýaldonu "no" por malþalti la opcion: :set noic + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7.1 AKIRI HELPON + + + ** Uzu la helpan sistemon ** + + Vim havas ampleksan helpan sistemon. Por komenciøi, provu unu el la tiuj + tri: + - premu la klavon (se vi havas øin) + - premu la klavon (se vi havas øin) + - tajpu :help + + Legu la tekston en la helpfenestro por trovi kiel helpo funkcias. + Tajpu CTRL-W CTRL-W por salti de unu fenestro al la alia. + Tajpu :q por fermi la helpan fenestron. + + Vi povas trovi helpon pri io ajn aldonante argumenton al la komando + ":help". Provu tiujn (ne forgesu premi ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7.2 KREI STARTAN SKRIPTON + + + ** Ebligu kapablojn de Vim ** + + Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaýlte + malþaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc". + + 1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo: + :e ~/.vimrc por Unikso + :e $VIM/_vimrc por MS-Vindozo + + 2. Nun legu la enhavon de la ekzempla "vimrc" + :r $VIMRUNTIME/vimrc_example.vim + + 3. Konservu la dosieron per: + :w + + La sekvantan fojon, kiam vi lanæas Vim, øi uzos sintaksan emfazon. + Vi povas aldoni æiujn viajn preferatajn agordojn al tiu dosiero "vimrc". + Por pli da informoj, tajpu :help vimrc-intro + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7.3 KOMPLETIGO + + + ** Kompletigo de komanda linio per CTRL-D kaj ** + + 1. Certigu ke Vim estas en kongrua reøimo: :set nocp + + 2. Rigardu tiujn dosierojn, kiuj ekzistas en la dosierujo: :!ls aý :!dir + + 3. Tajpu la komencon de komando: :e + + 4. Premu CTRL-D kaj Vim montros liston de komandoj, kiuj komencas per "e". + + 5. Premu kaj Vim kompletigos la nomon de la komando al ":edit". + + 6. Nun aldonu spaceton kaj la komencon de ekzistanta nomo: :edit DOSI + + 7. Premu . Vim kompletigos la nomon (se øi estas unika) + +RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj + . Estas aparte utila por :help . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7 RESUMO + + + 1. Tajpu :help aý premu por malfermi helpan fenestron. + + 2. Tajpu :help kmd por trovi helpon pri kmd. + + 3. Tajpu CTRL-W CTRL-W por salti al alia fenestro. + + 4. Tajpu :q to fermi la helpan fenestron. + + 5. Kreu komencan skripton vimrc por konservi viajn agordojn. + + 6. Kiam vi tajpas : komandon, premu CTRL-D por vidi æiujn kompleteblojn. + Premu por uzi unu kompletigon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Tio konkludas la instruilon de Vim. Øi celis doni mallongan superrigardon + de la redaktilo Vim, nur tion kio sufiæas por ebligi al vi facilan uzon de + la redaktilo. Estas nepre nekompleta, æar Vim havas multajn multajn pliajn + komandojn. Legu la manlibron: ":help user-manual". + + Tiu instruilo estis verkita de Michael C. Pierce kaj Robert K. Ware, + el la Koloradia Lernejo de Minejoj (Colorado School of Mines) uzante + ideojn provizitajn de Charles Smith el la Stata Universitato de Koloradio + (Colorado State University) + + Retpoþto: bware@mines.colorado.edu. + + Modifita por Vim de Bram Moolenaar. + + Esperantigita fare de Dominique Pellé, 2008-04-01 + Retpoþto: dominique.pelle@gmail.com + Lasta þanøo: 2011-11-27 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim74/tutor/tutor.eo.utf-8 b/share/vim/vim74/tutor/tutor.eo.utf-8 new file mode 100644 index 00000000..44d7b29a --- /dev/null +++ b/share/vim/vim74/tutor/tutor.eo.utf-8 @@ -0,0 +1,991 @@ +============================================================================== += B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7 = +============================================================================== + + Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili + por ĉion klarigi en instruilo kiel ĉi tiu. Ĉi tiu instruilo estas + fasonita por priskribi sufiĉajn komandojn, por ke vi kapablu uzi Vim + kun sufiĉa facileco. + + La tempo bezonata por plenumi la kurson estas 25-30 minutoj, kaj dependas + de kiom da tempo estas uzata por eksperimenti. + + ATENTU: + La komandoj en la lecionoj ŝanĝos la tekston. Kopiu tiun ĉi dosieron + por ekzerci vin (se vi lanĉis "vimtutor", tiam estas jam kopio). + + Gravas memori, ke ĉi tiu instruilo estas organizata por instrui per + la uzo. Tio signifas, ke vi devas plenumi la komandojn por bone lerni + ilin. Se vi nur legas la tekston, vi forgesos la komandojn! + + Nun, certigu, ke la majuskla baskulo NE estas en reĝimo majuskla, + kaj premu la klavon j sufiĉe da fojoj por movi la kursoron, kaj por + ke la leciono 1.1 plenigu la ekranon. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.1: MOVI LA KURSORON + + + ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. ** + ^ + k Konsilo: La klavo h estas la plej liva kaj movas liven. + < h l > La klavo l estas la plej dekstra kaj movas dekstren. + j La klavo j aspektas kiel malsuprena sago. + v + 1. Movu la kursoron sur la ekrano ĝis kiam vi sentas vin komforta. + + 2. Premu la klavon (j) ĝis kiam ĝi ripetas. + Vi nun scias, kiel moviĝi al la sekvanta leciono + + 3. Uzante la malsuprenan klavon, moviĝu al la leciono 1.2. + +RIMARKO: Se vi dubas pri tio, kion vi premis, premu por reiri al + la normala reĝimo. Tiam repremu la deziratan komandon. + +RIMARKO: La klavoj de la kursoro devus ankaŭ funkcii. Sed uzante hjkl, + vi kapablos moviĝi pli rapide post kiam vi kutimiĝos. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.2: ELIRI EL VIM + + + !! RIMARKO: Antaŭ ol plenumi iujn subajn paŝojn ajn, legu la tutan lecionon!! + + 1. Premu la klavon (por certigi, ke vi estas en normala reĝimo). + + 2. Tajpu: :q! . + Tio eliras el la rekdaktilo, SEN konservi la ŝanĝojn, kiujn vi faris. + + 3. Kiam vi vidas la ŝelinviton, tajpu la komandon kiun vi uzis por eniri + en ĉi tiu instruilo. Tio estus: vimtutor + + 4. Se vi memoris tiujn paŝojn kaj sentas vin memfida, plenumu la paŝojn + 1 ĝis 3 por eliri kaj reeniri la redaktilon. + +RIMARKO: :q! eliras sen konservi la ŝanĝojn, kiujn vi faris. + Post kelkaj lecionoj, vi lernos kiel konservi la ŝanĝojn al dosiero. + + 5. Movu la kursoron suben ĝis la leciono 1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.3: REDAKTO DE TEKSTO - FORVIŜO + + + ** Premu x por forviŝi la signon sub la kursoro. ** + + 1. Movu la kursoron al la suba linio markita per --->. + + 2. Por korekti la erarojn, movu la kursoron ĝis kiam ĝi estas sur la + forviŝenda signo. + + 3. Premu la klavon x por forviŝi la nedeziratan signon. + + 4. Ripetu paŝojn 2 ĝis 4 ĝis kiam la frazo estas ĝusta. + + +---> La boovinno saaltiss ssur laa luuno. + + 5. Post kiam la linio estas ĝusta, iru al la leciono 1.4 + +RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.4: REDAKTO DE TEKSTO - ENMETO + + + ** Premu i por enmeti tekston. ** + + 1. Movu la kursoron al la unua suba linio markita per --->. + + 2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan + signon post kie la teksto estas enmetenda. + + 3. Premu i kaj tajpu la bezonatajn aldonojn. + + 4. Premu kiam la eraroj estas korektitaj por reiri al la normala + reĝimo. Ripetu la paŝojn 2 ĝis 4 por korekti la frazon. + +---> Mank en ĉi linio. +---> Mankas teksto en ĉi tiu linio. + + 5. Kiam vi sentas vin komforta pri enmeto de teksto, moviĝu al la + leciono 1.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.5: REDAKTO DE TEKSTO - POSTALDONO + + + ** Premu A por postaldoni tekston. ** + + 1. Movu la kursoron al la unua suba linio markita per --->. + Ne gravas sur kiu signo estas la kursoro. + + 2. Premu majusklan A kaj tajpu la bezonatajn aldonojn. + + 3. Post kiam la teksto estas aldonita, premu por reiri al la normala + reĝimo. + + 4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la + paŝojn 2 kaj 3 por korekti la frazon. + +---> Mankas teksto el ti + Mankas teksto el tiu linio. +---> Mankas ankaŭ teks + Mankas ankaŭ teksto ĉi tie. + + 5 Kiam vi sentas vin komforta pri postaldono de teksto, moviĝu al la + leciono 1.6 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.6: REDAKTI DOSIERON + + ** Uzu :wq por konservi dosieron kaj eliri. ** + + !! RIMARKO: Antaŭ ol plenumi iun suban paŝon ajn, legu la tutan lecionon!! + + 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q! + Aŭ, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie. + + 2. Ĉe la ŝelinvito, tajpu ĉi tiun komandon: vim tutor + 'vim' estas la komando por lanĉi la redaktilon Vim, 'tutor' estas la + dosiernomo de la dosiero, kiun vi volas redakti. Uzu dosieron, kiu + ŝanĝeblas. + + 3. Enmetu kaj forviŝu tekston, kiel vi lernis en la antaŭaj lecionoj. + + 4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per: :wq + + 5. Se vi eliris la instruilon vimtutor en paŝo 1, restartigu la intruilon + vimtutor kaj moviĝu suben al la sekvanta resumo. + + 6. Post kiam vi legis la suprajn paŝojn, kaj komprenis ilin: faru ilin. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1 RESUMO + + + 1. La kursoro moviĝas aŭ per la sagoklavoj, aŭ per la klavoj hjkl. + h (liven) j (suben) k (supren) l (dekstren) + + 2. Por lanĉi Vim el la ŝelinvito, tajpu: vim DOSIERNOMO + + 3. Por eliri el Vim, tajpu: :q! por rezigni la ŝanĝojn + + 4. Por forviŝi la signojn ĉe la pozicio de la kursoro, tajpu: x + + 5. Por enmeti aŭ postaldoni tekston, tajpu: + i tajpu enmetendan tekston + enmetas tekston antaŭ la kursoro + + A tajpu la postaldonendan tekston + postaldonas post la kursoro + +RIMARKO: Premo de iras al la normala reĝimo, aŭ rezignas la + nedeziratan aŭ parte plenumita komando. + +Nun daŭrigu al la leciono 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.1: KOMANDOJ DE FORVIŜO + + + ** Tajpu dw por forviŝi vorton. ** + + 1. Premu por certigi, ke vi estas en normala reĝimo. + + 2. Movu la kursoron al la linio markita per --->. + + 3. Movu la kursoron al la komenco de vorto, kiu forviŝendas. + + 4. Tajpu dw por forviŝi la vorton. + + RIMARKO: La litero d aperos en la lasta linio sur la ekrano kiam vi + tajpas ĝin. Vim atendas ĝis kiam vi tajpas w . Se vi vidas + alian signon ol d vi tajpis ion mise; premu kaj + rekomencu. + +---> Estas iuj vortoj kiuj Zamenhof ne devus esti akuzativo en ĉi tiu frazo. + + 5. Ripetu paŝojn 3 kaj 4 ĝis kiam la frazo estas ĝusta kaj moviĝu al la + leciono 2.2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.2: PLIAJ KOMANDOJ DE FORVIŜO + + + ** Tajpu d$ por forviŝi la finon de la linio. ** + + 1. Premu por certigi, ke vi estas en normala reĝimo. + + 2. Movu la kursoron sur la suban linion markita per --->. + + 3. Movu la kursoron ĉe la fino de la ĝusta linio (POST la unua . ). + + 4. Tajpu d$ por forivŝi ĝis la fino de la linio. + +---> Iu tajpis la finon de ĉi tiu linio dufoje. fino de ĉi tiu linio dufoje. + + + 5. Moviĝu al la leciono 2.3 por kompreni kio okazas. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ + + + Multaj komandoj, kiuj ŝanĝas la tekston, estas faritaj de operatoro kaj + movo. La formato de komando de forviŝo per la operatoro de forviŝo d + estas kiel sekvas: + + d movo + + Kie: + d - estas la operatoro de movo + movo - estas tio, pri kio la operatoro operacios (listigita sube) + + Mallonga listo de movoj: + w - ĝis la komenco de la sekvanta vorto, krom ĝia unua signo. + e - ĝis la fino de la nuna vorto, krom la lasta signo. + $ - ĝis la fino de la linio, krom la lasta signo. + + Do tajpo de 'de' forviŝos ekde la kursoro ĝis la fino de la vorto. + +RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos + la kursoron kiel specifite. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.4: UZI NOMBRON POR MOVO + + ** Tajpo de nombro antaŭ movo ripetas ĝin laŭfoje. ** + + 1. Movu la kursoron ĉe la komenco de la suba linio markita per --->. + + 2. Tajpu 2w por movi la kursoron je du vortoj antaŭen. + + 3. Tajpu 3e por movi la kursoron ĉe la fino de la tria vorto antaŭen. + + 4. Tajpu 0 (nul) por moviĝi ĉe la komenco de la linio. + + + 5. Ripetu paŝojn 2 ĝis 3 kun malsamaj nombroj. + +---> Tio estas nur linio kun vortoj, kie vi povas moviĝi. + + 6. Moviĝu al la leciono 2.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.5: UZI NOMBRON POR FORVIŜI PLI + + + ** Tajpo de nombro kun operatoro ripetas ĝin laŭfoje. ** + + En la kombinaĵo de la operatoro de forviŝo, kaj movo kiel menciita + ĉi-supre, eblas aldoni nombron antaŭ la movo por pli forviŝi: + d nombro movo + + 1. Movu la kursoron ĉe la unua MAJUSKLA vorto en la linio markita per --->. + + 2. Tajpu d2w por forviŝi la du MAJUSKLAJN vortojn + + 3. Ripetu paŝojn 1 ĝis 2 per malsama nombro por forviŝi la sinsekvajn + MAJUSKLAJN vortojn per unu komando + +---> Tiu AB CDE linio FGHI JK LMN OP de vortoj estas Q RS TUV purigita. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.6: OPERACII SUR LINIOJ + + + ** Tajpu dd por forviŝi tutan linion. ** + + Pro la ofteco de forviŝo de tuta linio, la verkisto de Vi decidis, ke + estus pli facile simple tajpi du d-ojn por forviŝi linion. + + 1. Movu la kursoron sur la duan linion en la suba frazo. + 2. Tajpu dd por forviŝi la linion. + 3. Nun moviĝu al la kvara linio. + 4. Tajpu 2dd por forviŝi du liniojn. + +---> 1) Rozoj estas ruĝaj, +---> 2) Ŝlimo estas amuza, +---> 3) Violoj estas bluaj, +---> 4) Mi havas aŭton, +---> 5) Horloĝoj diras kioma horo estas, +---> 6) Sukero estas dolĉa, +---> 7) Kaj tiel vi estas. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.7: LA KOMANDO DE MALFARO + + + ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. ** + + 1. Movu la kursoron ĉe la suba linio markita per ---> kaj metu ĝin sur + la unuan eraron. + 2. Tajpu x por forviŝi la unuan nedeziratan signon. + 3. Nun tajpu u por malfari la lastan plenumitan komandon. + 4. Ĉi-foje, riparu ĉiujn erarojn en la linio kaj ĝia originala stato. + 5. Nun tajpu majusklan U por igi la linion al ĝia antaŭa stato. + 6. Nun tajpu u kelkfoje por malfari la U kaj antaŭajn komandojn. + 7. Nun tajpu CTRL-R (premante la CTRL klavon dum vi premas R) kelkfoje + por refari la komandojn (malfari la malfarojn). + +---> Koorektii la erarojn sur tiuu ĉi liniio kaj remettu illlin per malfaro. + + 8. Tiuj estas tre utilaj komandoj. Nun moviĝu al la leciono 2 RESUMO. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2 RESUMO + + + 1. Por forviŝi ekde la kursoro ĝis la sekvanta vorto, tajpu: dw + 2. Por forviŝi ekde la kursoro ĝis la fino de la linio, tajpu: d$ + 3. Por forviŝi tutan linion, tajpu: dd + + 4. Por ripeti movon, antaŭmetu nombron: 2w + 5. La formato de ŝanĝa komando estas: + operatoro [nombro] movo + + kie: + operatoro - estas tio, kio farendas, kiel d por forviŝi + [nombro] - estas opcia nombro por ripeti la movon + movo - movas sur la teksto por operacii, kiel ekzemple w (vorto), + $ (ĝis fino de linio), ktp. + + 6. Por moviĝi al la komenco de la linio, uzu nul: 0 + + 7. Por malfari antaŭajn agojn, tajpu: u (minuskla u) + Por malfari ĉiujn ŝanĝojn sur la linio, tajpu: U (majuskla U) + Por refari la malfarojn, tajpu: CTRL-R + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.1 LA KOMANDO DE METO + + + ** Tajpu p por meti tekston forviŝitan antaŭe post la kursoro. ** + + 1. Movu la kursoron ĉe la unua ---> suba linio. + + 2. Tajpu dd por forviŝi la linion kaj konservi ĝin ene de reĝistro de Vim. + + 3. Movu la kursoron ĉe la linio c), SUPER kie la forviŝita linio devus esti. + + 4. Tajpu p por meti la linion sub la kursoron. + + 5. Ripetu la paŝojn 2 ĝis 4 por meti ĉiujn liniojn en la ĝusta ordo. + +---> d) Ĉu ankaŭ vi povas lerni? +---> b) Violoj estas bluaj, +---> c) Inteligenteco lerneblas, +---> a) Rozoj estas ruĝaj, + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.2 LA KOMANDO DE ANSTATAŬIGO + + + ** Tajpu rx por anstataŭigi la signon ĉe la kursoro per x . ** + + + 1. Movu la kursoron ĉe la unua suba linio markita per --->. + + 2. Movu la kursoron ĝis la unua eraro. + + 3. Tajpu r kaj la signon, kiu devus esti tie. + + 4. Ripetu paŝojn 2 kaj 3 ĝis kiam la unua linio egalas la duan. + +---> Kiem tiu lanio estis tajpita, iu pramis la naĝuftajn klovojn! +---> Kiam tiu linio estis tajpita, iu premis la neĝustajn klavojn! + + 5. Nun moviĝu al la leciono 3.3. + +RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.3 LA OPERATORO DE ŜANĜO + + + ** Por ŝanĝi ĝis la fino de la vorto, tajpu ce . ** + + 1. Movu la kursoron ĉe la unua suba linio markita per --->. + + 2. Metu la kursoron sur la d en lduzw + + 3. Tajpu ce kaj la ĝustan vorton (en tiu ĉi kazo, tajpu inio ). + + 4. Premu kaj moviĝu al la sekvanta signo, kiu bezonas ŝanĝon. + + 5. Ripetu la paŝojn 3 kaj 4 ĝis kiam la unua frazo egalas la duan. + +---> Tiu lduzw havas kelkajn vortojn, kiii bezas ŝanĝon per la ŝanĝooto. +---> Tiu linio havas kelkajn vortojn, kiuj bezonas ŝanĝon per la ŝanĝoperatoro. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.4 PLIAJ ŜANĜOJ PER c + + + ** La operatoro de ŝanĝo uzeblas kun la sama movo kiel forviŝo. ** + + 1. La operatoro de ŝanĝo funkcias sammaniere kiel forviŝo. La formato estas: + + c [nombro] movo + + 2. La movoj estas samaj, kiel ekzemple w (vorto) kaj $ (fino de linio). + + 3. Moviĝu ĉe la unua suba linio markita per --->. + + 4. Movu la kursoron al la unua eraro. + + 5. Tajpu c$ kaj tajpu la reston de la linio kiel la dua kaj premu . + +---> La fino de ĉi tiu linio bezonas helpon por igi ĝin same kiel la dua. +---> La fino de ĉi tiu linio bezonas korektojn per uzo de la komando c$ + +RIMARKO: Vi povas uzi la klavon Retropaŝo por korekti erarojn dum vi tajpas. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3 RESUMO + + + 1. Por remeti tekston, kiun vi ĵus forviŝis, tajpu p. Tio metas la + forviŝitan tekston POST la kursoro (se linio estis forviŝita, ĝi + iros en la linion sub la kursoro). + + 2. Por anstataŭigi la signon sub la kursoro, tajpu r kaj tiam la signon + kion vi deziras havi tie. + + 3. La operatoro de ŝanĝo ebligas al vi ŝanĝi ekde la kursoro, ĝis kie + la movo iras. Ekz. tajpu ce por ŝanĝi ekde la kursoro ĝis la fino + de la vorto, c$ por ŝanĝi ĝis la fino de la linio. + + 4. La formato de ŝanĝo estas: + + c [nombro] movo + +Nun daŭrigu al la sekvanta leciono. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO + + + ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton. + Tajpu G por moviĝi al linio en la dosiero. ** + + RIMARKO: Legu la tutan lecionon antaŭ ol plenumi iun paŝon ajn!! + + 1. Premu la klavon Ctrl kaj premu g . Oni nomas tion CTRL-G. + Mesaĝo aperos ĉe la suba parto de la paĝo kun la dosiernomo kaj la + pozicio en la dosiero. Memoru la numeron de la linio por paŝo 3. + + RIMARKO: Vi eble vidas la pozicion de la kursoro ĉe la suba dekstra + angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas + ŝaltita (vidu :help 'ruler') + + 2. Premu G por moviĝi ĉe la subo de la dosiero. + Tajpu gg por moviĝi ĉe la komenco de la dosiero. + + 3. Tajpu la numeron de la linio kie vi estis kaj poste G . Tio removos + vin al la linio, kie vi estis kiam vi unue premis CTRL-G. + + 4. Se vi sentas vin komforta, plenumu paŝojn 1 ĝis 3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.2 LA KOMANDO DE SERĈO + + + ** Tajpu / kaj poste frazon por serĉi la frazon. ** + + 1. En normala reĝimo, tajpu la / signon. Rimarku, ke ĝi kaj la kursoro + aperas ĉe la suba parto de la ekrano kiel por la : komando. + + 2. Nun tajpu 'errarro' . + Tio estas la vorto, kion vi volas serĉi. + + 3. Por serĉi la saman frazon denove, simple tajpu n . + Por serĉi la saman frazon denove en la retrodirekto, tajpu N . + + 4. Por serĉi frazon en la retrodirekto, uzu ? anstataŭ / . + + 5. Por reiri tien, el kie vi venis, premu CTRL-O (Premu Ctrl kaj o + literon o). Ripetu por pli retroiri. CTRL-I iras antaŭen. + +---> "errarro" ne estas maniero por literumi eraro; errarro estas eraro. + +RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la + komenco, krom se la agordo 'wrapscan' estas malŝaltita. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.3 SERĈO DE KONGRUAJ KRAMPOJ + + + ** Tajpu % por trovi kongruan ), ] aŭ } ** + + 1. Poziciu la kursoron sur iun (, [ aŭ { en la linio markita per --->. + + 2. Nun tajpu la % signon. + + 3. La kursoro moviĝas al la kongrua krampo. + + 4. Tajpu % por movi la kursoron al la alia kongrua krampo. + + 5. Movu la kursoron al la alia (, ), [, ], {, } kaj observu tion, + kion % faras. + +---> Ĉi tiu ( estas testa linio kun (-oj, [-oj, ]-oj kaj {-oj, }-oj en ĝi. )) + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.4 LA KOMANDO DE ANSTATAŭIGO + + + ** Tajpu :s/malnova/nova/g por anstataŭigi 'nova' per 'malnova'. ** + + 1. Movu la kursoron al la suba linio markita per --->. + + 2. Tajpu :s/laa/la . Rimarku, ke la komando ŝanĝas nur la + unuan okazaĵon de "laa" en la linio. + + 3. Nun tajpu :s/laa/la/g . Aldono de g opcio signifas mallokan + anstataŭigon en la linio. Ĝi ŝanĝas ĉiujn okazaĵojn de "laa" en la + linio. + +---> laa plej bona tempo por vidi florojn estas en laa printempo. + + 4. Por ŝanĝi ĉiujn okazaĵojn de iu ĉena signo inter du linioj, + tajpu :#,#s/malnova/nova/g kie #,# estas la numeroj de linioj de la + intervalo de la linioj kie la anstataŭigo + okazos. + Tajpu :%s/malnova/nova/g por ŝanĝi ĉiujn okazaĵojn en la tuta + dosiero. + Tajpu :s/malnova/nova/gc por trovi ĉiujn okazaĵojn en la tuta + dosiero, kun invitilo ĉu anstataŭigi + aŭ ne. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4 RESUMO + + 1. CTRL-G vidigas vian pozicion en la dosiero kaj la staton de la dosiero. + G movas la kursoron al la fino de la dosiero. + numero G movas la kursoron al numero de tiu linio. + gg movas la kursoron al la unua linio. + + 2. Tajpo de / kaj frazon serĉas la frazon antaŭen. + Tajpo de ? kaj frazon serĉas la frazon malantaŭen. + Post serĉo, tajpu n por trovi la sekvantan okazaĵon en la sama direkto aŭ + N por serĉi en la mala direkto. + CTRL-O movas vin al la antaŭaj pozicioj, CTRL-I al la novaj pozicioj. + + 3. Tajpo de % kiam la kursoro estas sur (,),[,],{ aŭ } moviĝas al ĝia + kongruo. + + 4. Por anstataŭigi 'nova' en la unua 'malnova' en linio :s/malnova/nova + Por anstataŭigi 'nova' en ĉiuj 'malnova'-oj en linio :s/malnova/nova/g + Por anstataŭigi frazon inter du #-aj linioj :#,#s/malnova/nova/g + Por anstataŭigi ĉiujn okazaĵojn en la dosiero :%s/malnova/nova/g + Por demandi konfirmon ĉiu-foje, aldonu 'c' :%s/malnova/nova/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON + + + ** Tajpu :! sekvata de ekstera komando por plenumi la komandon. ** + + 1. Tajpu la konatan komandon : por pozicii la kursoron ĉe la suba parto + de la ekrano. Tio ebligas tajpadon de komando en komanda linio. + + 2. Nun tajpu la ! (krisigno) signon. Tio ebligas al vi plenumi iun + eksteran ŝelan komandon ajn. + + 3. Ekzemple, tajpu ls post ! kaj tajpu . Tio listigos la + enhavon de la dosierujo, same kiel se vi estis en ŝela invito. + Aŭ uzu :!dir se ls ne funkcias. + +RIMARKO: Eblas plenumi iun eksteran komandon ajn tiamaniere, ankaŭ kun + argumentoj. + +RIMARKO: Ĉiuj : komandoj devas finiĝi per tajpo de + Ekde nun, ni ne plu mencios tion. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.2 PLI PRI KONSERVO DE DOSIERO + + + ** Por konservi la faritajn ŝanĝojn en la teksto, tajpu :w DOSIERNOMO. ** + + 1. Tajpu !dir aŭ !ls por akiri liston de via dosierujo. + Vi jam scias, ke vi devas tajpi post tio. + + 2. Elektu dosieron, kiu ankoraŭ ne ekzistas, kiel ekzemple TESTO. + + 3. Nun tajpu: :w TESTO (kie TESTO estas la elektita dosiernomo) + + 4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO. + Por kontroli tion, tajpu :!dir aŭ :!ls denove por vidigi vian + dosierujon. + +RIMARKO: Se vi volus eliri el Vim kaj restartigi ĝin denove per vim TESTO, + la dosiero estus precize same kiel kopio de la instruilo kiam vi + konservis ĝin. + + 5. Nun forviŝu la dosieron tajpante (MS-DOS): :!del TESTO + aŭ (UNIKSO): :!rm TESTO + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.3 APARTIGI KONSERVENDAN TESTON + + + ** Por konservi parton de la dosiero, tajpu v movo :w DOSIERNOMO ** + + 1. Movu la kursoron al tiu linio. + + 2. Premu v kaj movu la kursoron al la kvina suba ero. Rimarku, ke la + teksto emfaziĝas. + + 3. Premu la : signon. Ĉe la fino de la ekrano :'<,'> aperos. + + 4. Tajpu w TESTO , kie TESTO estas dosiernomo, kiu ankoraŭ ne ekzistas. + Kontrolu, ke vi vidas :'<,'>w TESTO antaŭ premi . + + 5. Vim konservos la apartigitajn liniojn al la dosiero TESTO. Uzu :dir + aŭ :!ls por vidigi ĝin. Ne forviŝu ĝin. Ni uzos ĝin en la sekvanta + leciono. + +RIMARKO: Premo de v komencas Viduman apartigon. Vi povas movi la kursoron + por pligrandigi aŭ malpligrandigi la apartigon. Tiam vi povas uzi + operatoron por plenumi ion kun la teksto. Ekzemple, d forviŝas + la tekston. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN + + + ** Por enmeti la enhavon de dosiero, tajpu :r DOSIERNOMON ** + + 1. Movu la kursoron ĵus super ĉi tiu linio. + +RIMARKO: Post plenumo de paŝo 2, vi vidos tekston el la leciono 5.3. Tiam + moviĝu SUBEN por vidi tiun lecionon denove. + + 2. Nun akiru vian dosieron TESTO uzante la komandon :r TESTO kie TESTO + estas la nomo de la dosiero, kiun vi uzis. + La dosiero, kion vi akiras, estas metita sub la linio de la kursoro. + + 3. Por kontroli, ĉu la dosiero akiriĝis, retromovu la kursoron kaj rimarku, + ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem + de la dosiero. + +RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, + :r !ls legas la eliron de la komando ls kaj metas ĝin sub la + kursoron. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5 RESUMO + + + 1. :!komando plenumas eksteran komandon. + + Iuj utilaj ekzemploj estas: + (MS-DOS) (UNIKSO) + :!dir :!ls - listigas dosierujon + :!del DOSIERNOMO :!rm DOSIERNOMO - forviŝas la dosieron DOSIERNOMO + + 2. :w DOSIERNOMO konservas la nunan dosieron de Vim al disko kun la + nomo DOSIERNOMO. + + 3. v movo :w DOSIERNOMO konservas la Viduman apartigon de linioj en + dosiero DOSIERNOMO. + + 4. :r DOSIERNOMO akiras la dosieron DOSIERNOMO el la disko kaj metas + ĝin sub la pozicion de la kursoro. + + 5. :r !dir legas la eligon de la komando dir kaj metas ĝin sub la + pozicion de la kursoro. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.1 LA KOMANDO DE MALFERMO + + + ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan reĝimon. ** + + 1. Movu la kursoron al la suba linio markita per --->. + + 2. Tajpu la minusklan literon o por malfermi linion SUB la kursoro kaj + eniri la Enmetan reĝimon. + + 3. Nun tajpu tekston kaj premu por eliri la Enmetan reĝimon. + +---> Post tajpo de o la kursoro moviĝas al la malfermata linio en + Enmeta reĝimo. + + 4. Por malfermi linion SUPER la kursoro, nur tajpu majusklan O , + anstataŭ minusklan o. Provu tion per la suba linio. + +---> Malfermu linion SUPER tiu tajpante O dum la kursoro estas sur tiu linio. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.2 LA KOMANDO DE POSTALDONO + + + ** Tajpu a por enmeti POST la kursoro. ** + + 1. Movu la kursoron ĉe la komenco de la linio markita per --->. + + 2. Premu e ĝis kiam la kursoro estas ĉe la fino de li. + + 3. Tajpu a (minuskle) por aldoni tekston POST la kursoro. + + 4. Kompletigu la vorton same kiel la linio sub ĝi. Premu por + eliri la Enmetan reĝimon. + + 5. Uzu e por moviĝi al la sekvanta nekompleta vorto kaj ripetu + paŝojn 3 kaj 4. + +---> Ĉi tiu lin ebligos vin ekz vin postal tekston al linio. +---> Ĉi tiu linio ebligos vin ekzerci vin postaldoni tekston al linio. + +RIMARKO: Ĉiu a, i kaj A iras al la sama Enmeta reĝimo, la nura malsamo + estas tie, kie la signoj estas enmetitaj. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.3 ALIA MANIERO POR ANSTATAŬIGI + + + ** Tajpu majusklan R por anstataŭigi pli ol unu signo. ** + + 1. Movu la kursoron al la unua suba linio markita per --->. Movu la + kursoron al la komenco de la unua xxx . + + 2. Nun premu R kaj tajpu la nombron sub ĝi en la dua linio, por ke ĝi + anstataŭigu la xxx . + + 3. Premu por foriri la Anstataŭigan reĝimon. Rimarku, ke la cetera + parto de la linio restas neŝanĝata. + + 4. Ripetu la paŝojn por anstataŭigi la restantajn xxx. + +---> Aldono de 123 al xxx donas al vi xxx. +---> Aldono de 123 al 456 donas al vi 579. + +RIMARKO: Anstataŭiga reĝimo estas same kiel Enmeta reĝimo, sed ĉiu signo + tajpita forviŝas ekzistan signon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.4 KOPII KAJ ALGLUI TEKSTON + + + ** Uzu la y operatoron por kopii tekston, kaj p por alglui ĝin ** + + + 1. Iru al la linio markita per ---> sube kaj poziciu la kursoron post "a)". + + 2. Komencu la Viduman reĝimon per v kaj movu la kursoron ĵus antaŭ "unua". + + 3. Tajpu y por kopii la emfazitan tekston. + + 4. Movu la kursoron ĉe la fino de la linio: j$ + + 5. Tajpu p por alglui la tekston. Tiam tajpu: a dua . + + 6. Uzu Viduman reĝimon por apartigi " ero.", kopiu ĝin per y , moviĝu + ĉe la fino de la sekvanta linio per j$ kaj algluu la tekston tie + per p . + +---> a) tio estas la unua ero. + b) + +RIMARKO: vi povas ankaŭ uzi y kiel operatoro; yw kopias unu vorton. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.5 AGORDI OPCION + + + ** Agordu opcion por ke serĉo aŭ anstataŭigo ignoru usklecon ** + + 1. Serĉu 'ignori' per tajpo de /ignori + Ripetu plurfoje premante n . + + 2. Ŝaltu la opcion 'ic' (ignori usklecon) per: :set ic + + 3. Nun serĉu 'ignori' denove premante n + Rimarku, ke Ignori kaj IGNORI estas nun troveblas. + + 4. Ŝaltu la opciojn 'hlsearch' kaj 'incsearch': :set hls is + + 5. Nun retajpu la serĉan komandon kaj vidu kio okazas: /ignore + + 6. Por malŝalti ignoron de uskleco: :set noic + +RIMARKO: Por forigi emfazon de kongruo, tajpu: :nohlsearch +RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c + en la frazo: /ignore\c + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6 RESUMO + + 1. Tajpu o por malfermi linion SUB la kursoro kaj eki en Enmeta reĝimo. + 1. Tajpu O por malfermi linion SUPER la kursoro. + + 2. Tajpu a por enmeti tekston POST la kursoro. + Tajpu A por enmeti tekston post la fino de la linio. + + 3. La e komando movas la kursoron al la fino de vorto. + + 4. la y operatoro kopias tekston, p algluas ĝin. + + 5. Tajpo de majuskla R eniras la Anstataŭigan reĝimon ĝis kiam + estas premita. + + 6. Tajpo de ":set xxx" ŝaltas la opcion "xxx". Iuj opcioj estas: + 'ic' 'ignorecase' ignori usklecon dum serĉo + 'is' 'incsearch' montru partan kongruon dum serĉo + 'hls' 'hlsearch' emfazas ĉiujn kongruajn frazojn + Vi povas uzi aŭ la longan, aŭ la mallongan nomon de opcio. + + 7. Antaŭaldonu "no" por malŝalti la opcion: :set noic + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7.1 AKIRI HELPON + + + ** Uzu la helpan sistemon ** + + Vim havas ampleksan helpan sistemon. Por komenciĝi, provu unu el la tiuj + tri: + - premu la klavon (se vi havas ĝin) + - premu la klavon (se vi havas ĝin) + - tajpu :help + + Legu la tekston en la helpfenestro por trovi kiel helpo funkcias. + Tajpu CTRL-W CTRL-W por salti de unu fenestro al la alia. + Tajpu :q por fermi la helpan fenestron. + + Vi povas trovi helpon pri io ajn aldonante argumenton al la komando + ":help". Provu tiujn (ne forgesu premi ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7.2 KREI STARTAN SKRIPTON + + + ** Ebligu kapablojn de Vim ** + + Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaŭlte + malŝaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc". + + 1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo: + :e ~/.vimrc por Unikso + :e $VIM/_vimrc por MS-Vindozo + + 2. Nun legu la enhavon de la ekzempla "vimrc" + :r $VIMRUNTIME/vimrc_example.vim + + 3. Konservu la dosieron per: + :w + + La sekvantan fojon, kiam vi lanĉas Vim, ĝi uzos sintaksan emfazon. + Vi povas aldoni ĉiujn viajn preferatajn agordojn al tiu dosiero "vimrc". + Por pli da informoj, tajpu :help vimrc-intro + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7.3 KOMPLETIGO + + + ** Kompletigo de komanda linio per CTRL-D kaj ** + + 1. Certigu ke Vim estas en kongrua reĝimo: :set nocp + + 2. Rigardu tiujn dosierojn, kiuj ekzistas en la dosierujo: :!ls aŭ :!dir + + 3. Tajpu la komencon de komando: :e + + 4. Premu CTRL-D kaj Vim montros liston de komandoj, kiuj komencas per "e". + + 5. Premu kaj Vim kompletigos la nomon de la komando al ":edit". + + 6. Nun aldonu spaceton kaj la komencon de ekzistanta nomo: :edit DOSI + + 7. Premu . Vim kompletigos la nomon (se ĝi estas unika) + +RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj + . Estas aparte utila por :help . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7 RESUMO + + + 1. Tajpu :help aŭ premu por malfermi helpan fenestron. + + 2. Tajpu :help kmd por trovi helpon pri kmd. + + 3. Tajpu CTRL-W CTRL-W por salti al alia fenestro. + + 4. Tajpu :q to fermi la helpan fenestron. + + 5. Kreu komencan skripton vimrc por konservi viajn agordojn. + + 6. Kiam vi tajpas : komandon, premu CTRL-D por vidi ĉiujn kompleteblojn. + Premu por uzi unu kompletigon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Tio konkludas la instruilon de Vim. Ĝi celis doni mallongan superrigardon + de la redaktilo Vim, nur tion kio sufiĉas por ebligi al vi facilan uzon de + la redaktilo. Estas nepre nekompleta, ĉar Vim havas multajn multajn pliajn + komandojn. Legu la manlibron: ":help user-manual". + + Tiu instruilo estis verkita de Michael C. Pierce kaj Robert K. Ware, + el la Koloradia Lernejo de Minejoj (Colorado School of Mines) uzante + ideojn provizitajn de Charles Smith el la Stata Universitato de Koloradio + (Colorado State University) + + Retpoŝto: bware@mines.colorado.edu. + + Modifita por Vim de Bram Moolenaar. + + Esperantigita fare de Dominique Pellé, 2008-04-01 + Retpoŝto: dominique.pelle@gmail.com + Lasta ŝanĝo: 2011-11-27 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.es b/share/vim/vim74/tutor/tutor.es similarity index 100% rename from share/vim/vim73/tutor/tutor.es rename to share/vim/vim74/tutor/tutor.es diff --git a/share/vim/vim73/tutor/tutor.es.utf-8 b/share/vim/vim74/tutor/tutor.es.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.es.utf-8 rename to share/vim/vim74/tutor/tutor.es.utf-8 diff --git a/share/vim/vim74/tutor/tutor.fr b/share/vim/vim74/tutor/tutor.fr new file mode 100644 index 00000000..ec852358 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.fr @@ -0,0 +1,1038 @@ +=============================================================================== += B i e n v e n u e dans l e T u t o r i e l de V I M - Version 1.7 = +=============================================================================== + + Vim est un éditeur très puissant qui a trop de commandes pour pouvoir + toutes les expliquer dans un cours comme celui-ci, qui est conçu pour en + décrire suffisamment afin de vous permettre d'utiliser simplement Vim. + + Le temps requis pour suivre ce cours est d'environ 25 à 30 minutes, selon + le temps que vous passerez à expérimenter. + + ATTENTION : + Les commandes utilisées dans les leçons modifieront le texte. Faites une + copie de ce fichier afin de vous entraîner dessus (si vous avez lancé + "vimtutor" ceci est déjà une copie). + + Il est important de garder en tête que ce cours est conçu pour apprendre + par la pratique. Cela signifie que vous devez exécuter les commandes + pour les apprendre correctement. Si vous vous contentez de lire le texte, + vous oublierez les commandes ! + + Maintenant, vérifiez que votre clavier n'est PAS verrouillé en + majuscules, et appuyez la touche j le nombre de fois suffisant pour + que la Leçon 1.1 remplisse complètement l'écran. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.1 : DÉPLACEMENT DU CURSEUR + + + ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. ** + ^ + k Astuce : La touche h est à gauche et déplace à gauche. + < h l > La touche l est à droite et déplace à droite. + j La touche j ressemble à une flèche vers le bas. + v + 1. Déplacez le curseur sur l'écran jusqu'à vous sentir à l'aise. + + 2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète. + Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante. + + 3. En utilisant la touche Bas, allez à la Leçon 1.2. + +NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap> + pour revenir en mode Normal. Puis retapez la commande que vous vouliez. + +NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant + hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que + vous aurez pris l'habitude. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.2 : SORTIR DE VIM + + + !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !! + + 1. Appuyez la touche <Échap> (pour être sûr d'être en mode Normal). + + 2. Tapez : :q! + Ceci quitte l'éditeur SANS enregistrer les changements que vous avez + faits. + + 3. Lorsque l'invite du shell vous sera présentée, tapez la commande qui + vous a mené dans ce tutoriel. Cela pourrait être : vimtutor + + 4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes + 1 à 3 pour sortir puis rentrer dans l'éditeur. + +NOTE : :q! annule tous les changements que vous avez faits. Dans + quelques leçons, vous apprendrez à enregistrer les changements. + + 5. Déplacez le curseur à la Leçon 1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT + + + ** Appuyez x pour effacer le caractère sous le curseur. ** + + 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. + + 2. Pour corriger les erreurs, déplacez le curseur jusqu'à ce qu'il soit + sur un caractère à effacer. + + 3. Appuyez la touche x pour effacer le caractère redondant. + + 4. Répétez les étapes 2 à 4 jusqu'à ce que la phrase soit correcte. + +---> La vvache à sautéé au-ddessus dde la luune. + + 5. Maintenant que la ligne est correcte, passez à la Leçon 1.4. + +NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par + la pratique. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.4 : ÉDITION DE TEXTE - INSERTION + + + ** Appuyez i pour insérer du texte. ** + + 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. + + 2. Pour rendre la première ligne identique à la seconde, mettez le curseur + sur le premier caractère APRÈS l'endroit où insérer le texte. + + 3. Appuyez i et tapez les caractères qui manquent. + + 4. Une fois qu'une erreur est corrigée, appuyez <Échap> pour revenir en mode + Normal. Répétez les étapes 2 à 4 pour corriger la phrase. + +---> Il mnqe caractères cette . +---> Il manque des caractères dans cette ligne. + + 5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez à la + Leçon 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.5 : ÉDITION DE TEXTE - AJOUTER + + + ** Appuyez A pour ajouter du text. ** + + 1. Déplacez le curseur sur la première ligne ci-dessous marquée --->. + Peu importe sur quel caractère se trouve le curseur sur cette ligne. + + 2. Appuyez A et tapez les ajouts nécessaires. + + 3. Quand le texte a été ajouté, appuyez <Échap> pour revenir en mode + Normal. + + 4. Déplacez le curseur sur la seconde ligne marquée ---> et répétez les + étapes 2 et 3 pour corriger la phrase. + +---> Il manque du texte à partir de cet + Il manque du texte à partir de cette ligne. +---> Il manque aussi du te + Il manque aussi du texte ici. + + 5. Quand vous vous sentez suffisamment à l'aise pour ajouter du texte, + allez à la Leçon 1.6. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.6 : ÉDITER UN FICHIER + + + ** Utilisez :wq pour enregistrer un fichier et sortir. ** + +!! NOTE : Lisez toute la leçon avant d'exécuter les instructions ci-dessous !! + + 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.2 : :q! + Ou, si vous avez accès à un autre terminal, exécutez y les actions + qui suivent. + + 2. À l'invite du shell, tapez cette commande : vim tutor + 'vim' est la commande pour démarrer l'éditeur Vim, 'tutor' est le + nom du fichier que vous souhaitez éditer. Utilisez un fichier qui peut + être modifié. + + 3. Insérez et effacez du texte comme vous l'avez appris dans les leçons + précédentes. + + 4. Enregistrez le fichier avec les changements et sortez de Vim avec : + :wq + + 5. Si vous avez quitté vimtutor à l'étape 1, recommencez vimtutor et + déplacez-vous en bas vers le résumé suivant. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 1 + + + 1. Le curseur se déplace avec les touches fléchées ou les touches hjkl. + h (gauche) j (bas) k (haut) l (droite) + + 2. Pour démarrer Vim à l'invite du shell tapez : vim FICHIER + + 3. Pour quitter Vim tapez : <Échap> :q! pour perdre tous les + changements. + OU tapez : <Échap> :wq pour enregistrer les + changements. + + 4. Pour effacer un caractère sous le curseur tapez : x + + 5. Pour insérer ou ajouter du texte tapez : + i tapez le texte à insérer avant le curseur <Échap> + A tapez le texte à ajouter après le curseur <Échap> + +NOTE : Appuyer <Échap> vous place en mode Normal ou annule une commande + partiellement tapée dont vous ne voulez plus. + +Passez maintenant à la leçon 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.1 : COMMANDES D'EFFACEMENT + + + ** Tapez dw pour effacer un mot. ** + + 1. Appuyez <Échap> pour être sûr d'être en mode Normal. + + 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. + + 3. Placez le curseur sur le début d'un mot qui a besoin d'être effacé. + + 4. Tapez dw pour faire disparaître ce mot. + +NOTE : La lettre d apparaîtra sur la dernière ligne de l'écran lors de + votre frappe. Vim attend que vous tapiez w . Si vous voyez un autre + caractère que d vous avez tapé autre chose ; appuyez <Échap> et + recommencez. + +---> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne. + + 5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez + à la Leçon 2.2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS + + + ** Tapez d$ pour effacer jusqu'à la fin de la ligne. ** + + 1. Appuyez <Échap> pour être sûr d'être en mode Normal. + + 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. + + 3. Déplacez le curseur jusqu'à la fin de la ligne correcte (APRÈS le + premier . ). + + 4. Tapez d$ pour effacer jusqu'à la fin de la ligne. + +---> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois. + + 5. Allez à la Leçon 2.3 pour comprendre ce qui se passe. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS + + + Plusieurs commandes qui changent le texte sont constituées d'un opérateur + et d'un mouvement. Le format pour une commande d'effacement avec l'opérateur + d d'effacement est le suivant : + + d mouvement + + Où : + d - est l'opérateur d'effacement + mouvement - est le mouvement sur lequel agit l'opérateur (listés + ci-dessous) + + Une courte liste de mouvements : + w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère. + e - jusqu'à la fin du mot courant, en EXCLUANT son dernier caractère. + $ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère. + + Ainsi, taper de va effacer depuis le curseur jusqu'à la fin du mot. + +NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le + curseur comme indiqué. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT + + + ** Taper un nombre avant un mouvement le répète autant de fois. ** + + 1. Déplacez le curseur au début de la ligne marquée ---> ci-dessous. + + 2. Tapez 2w pour déplacer le curseur de 2 mots vers l'avant. + + 3. Tapez 3e pour déplacer le curseur à la fin du troisième mot vers + l'avant. + + 4. Tapez 0 (zéro) pour déplacer au début de la ligne. + + 5. Répétez les étapes 2 et 3 avec des quantificateurs différents. + +---> Ceci est juste une ligne avec des mots où vous pouvez vous déplacer. + + 6. Déplacez-vous à la Leçon 2.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS + + + ** Taper un nombre avec un opérateur le répète autant de fois. ** + + Outre la combinaison de l'opérateur d'effacement avec un déplacement + mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur) + pour effacer encore plus : + d nombre déplacement + + 1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne + marquée --->. + + 2. Tapez d2w pour effacer les deux mots en MAJUSCULES. + + 3. Répétez les étapes 1 et 2 avec des quantificateurs différents pour + effacer les mots suivants en MAJUSCULES à l'aide d'une commande. + +---> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoyée. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.6 : OPÉREZ SUR DES LIGNES + + + ** Tapez dd pour effacer une ligne complète. ** + + Vu le nombre de fois où l'on efface des lignes complètes, les concepteurs + de Vi ont décidé qu'il serait plus facile de taper simplement deux d + pour effacer une ligne. + + 1. Placez le curseur sur la seconde ligne de la phrase ci-dessous. + 2. Tapez dd pour effacer la ligne. + 3. Maintenant allez à la quatrième ligne. + 4. Tapez 2dd pour effacer deux lignes. + +---> 1) Les roses sont rouges, +---> 2) La boue c'est drôle, +---> 3) Les violettes sont bleues, +---> 4) J'ai une voiture, +---> 5) Les horloges donnent l'heure, +---> 6) Le sucre est doux +---> 7) Tout comme vous. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.7 : L'ANNULATION + + + ** Tapez u pour annuler les dernières commandes. ** + ** Tapez U pour récupérer toute une ligne. ** + + 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous et placez-le sur + la première erreur. + 2. Tapez x pour effacer le premier caractère redondant. + 3. Puis tapez u pour annuler la dernière commande exécutée. + 4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande x . + 5. Puis tapez un U majuscule pour remettre la ligne dans son état initial. + 6. Puis tapez u deux-trois fois pour annuler le U et les commandes + précédentes. + 7. Maintenant tapez CTRL-R (maintenez la touche CTRL enfoncée pendant que + vous appuyez R) deux-trois fois pour refaire les commandes (annuler + les annulations). + +---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'. + + 8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la + Leçon 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 2 + + + 1. Pour effacer du curseur jusqu'au mot suivant tapez : dw + + 2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez : d$ + + 3. Pour effacer toute une ligne tapez : dd + + 4. Pour répéter un déplacement ajoutez un quantificateur : 2w + + 5. Le format d'une commande de changement est : + + opérateur [nombre] déplacement + + Où : + opérateur - est ce qu'il faut faire, comme d pour effacer. + [nombre] - un quantificateur optionnel pour répéter le déplacement. + déplacement - déplace le long du texte à opérer, tel que w (mot), + $ (jusqu'à la fin de ligne), etc. + + 6. Pour se déplacer au début de ligne, utilisez un zéro : 0 + + 5. Pour annuler des actions précédentes, tapez : u (u minuscule) + Pour annuler tous les changements sur une ligne tapez : U (U majuscule) + Pour annuler l'annulation tapez : CTRL-R + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 3.1 : LE COLLAGE + + + ** Tapez p pour placer après le curseur ce qui vient d'être effacé. ** + + 1. Placez le curseur sur la première ligne ci-dessous marquée --->. + + 2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim. + + 3. Déplacez le curseur sur la ligne c) au-dessus où vous voulez remettre la + ligne effacée. + + 4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur. + + 5. Répétez les étapes 2 à 4 pour mettre toutes les lignes dans le bon ordre. + +---> d) Et vous, qu'apprenez-vous ? +---> b) Les violettes sont bleues, +---> c) L'intelligence s'apprend, +---> a) Les roses sont rouges, + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 3.2 : LA COMMANDE DE REMPLACEMENT + + + ** Tapez rx pour remplacer un caractère sous le curseur par x . ** + + 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. + + 2. Placez le curseur de manière à ce qu'il surplombe la première erreur. + + 3. Tapez r suivi du caractère qui doit corriger l'erreur. + + 4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit égale + à la seconde. + +---> Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe ! +---> Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe ! + + 5. Maintenant, allez à la Leçon 3.3. + +NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par + mémorisation. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 3.3 : L'OPÉRATEUR DE CHANGEMENT + + + ** Pour changer jusqu'à la fin d'un mot, tapez ce .** + + 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. + + 2. Placez le curseur sur le u de luhko. + + 3. Tapez ce et corrigez le mot (dans notre cas, tapez 'igne'.) + + 4. Appuyez <Échap> et placez-vous sur le prochain caractère qui doit + être changé. + + 5. Répétez les étapes 3 et 4 jusqu'à ce que la première phrase soit + identique à la seconde. + +---> Cette luhko contient quelques myqa qui ont ricne d'être chantufip. +---> Cette ligne contient quelques mots qui ont besoin d'être changés. + +Notez que ce efface le mot et vous place ensuite en mode Insertion. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c + + + ** L'opérateur de changement fonctionne avec les mêmes déplacements + que l'effacement. ** + + 1. L'opérateur de changement fonctionne de la même manière que + l'effacement. Le format est : + + c [nombre] déplacement + + 2. Les déplacements sont identiques : w (mot) et $ (fin de ligne). + + 3. Déplacez-vous sur la première ligne marquée ---> ci-dessous. + + 4. Placez le curseur sur la première erreur. + + 5. Tapez c$ et tapez le reste de la ligne afin qu'elle soit identique + à la seconde ligne, puis tapez <Échap>. + +---> La fin de cette ligne doit être rendue identique à la seconde. +---> La fin de cette ligne doit être corrigée avec la commande c$ . + +NOTE : Vous pouvez utiliser la touche Retour Arrière pour corriger les + erreurs lorsque vous tapez. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 3 + + + 1. Pour remettre le texte qui a déjà été effacé, tapez p . Cela Place le + texte effacé APRÈS le curseur (si une ligne complète a été effacée, elle + sera placée sous la ligne du curseur). + + 2. Pour remplacer le caractère sous le curseur, tapez r suivi du caractère + qui remplacera l'original. + + 3. L'opérateur de changement vous permet de changer depuis la position du + curseur jusqu'où le déplacement vous amène. Par exemple, tapez ce + pour changer du curseur jusqu'à la fin du mot, c$ pour changer jusqu'à + la fin d'une ligne. + + 4. Le format pour le changement est : + + c [nombre] déplacement + +Passez maintenant à la leçon suivante. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER + + + ** Tapez CTRL-G pour afficher votre position dans le fichier et son état. + Tapez G pour vous rendre à une ligne donnée du fichier. ** + +NOTE : Lisez toute cette leçon avant d'effectuer l'une des étapes !! + + 1. Maintenez enfoncée la touche CTRL et appuyez sur g . On appelle cela + CTRL-G. Une ligne d'état va apparaître en bas de l'écran avec le nom + du fichier et le numéro de la ligne où vous êtes. Notez ce numéro, il + servira lors de l'étape 3. + +NOTE : Vous pouvez peut-être voir le curseur en bas à droite de l'écran. + Ceci arrive quand l'option 'ruler' est activée (voir :help 'ruler') + + 2. Tapez G pour vous déplacer à la fin du fichier. + Tapez gg pour vous déplacer au début du fichier. + + 3. Tapez le numéro de la ligne où vous étiez suivi de G . Cela vous + ramènera à la ligne où vous étiez au départ quand vous aviez appuyé + CTRL-G. + + 4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 4.2 : LA RECHERCHE + + + ** Tapez / suivi d'un texte pour rechercher ce texte. ** + + 1. Tapez le caractère / en mode Normal. Notez que celui-ci et le curseur + apparaissent en bas de l'écran, comme lorsque l'on utilise : . + + 2. Puis tapez 'errreuur' . C'est le mot que vous voulez rechercher. + + 3. Pour rechercher à nouveau le même texte, tapez simplement n . + Pour rechercher le même texte dans la direction opposée, tapez N . + + 4. Pour rechercher une phrase dans la direction opposée, utilisez ? + au lieu de / . + +---> erreur ne s'écrit pas "errreuur" ; errreuur est une erreur. + +NOTE : Quand la recherche atteint la fin du fichier, elle reprend au début + sauf si l'option 'wrapscan' est désactivée. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES + + + ** Tapez % pour trouver des ), ] ou } correspondants. ** + + 1. Placez le curseur sur l'un des (, [ ou { de la ligne marquée ---> + ci-dessous. + + 2. Puis tapez le caractère % . + + 3. Le curseur se déplacera sur la parenthèse out crochet correspondant. + + 4. Tapez % pour replacer le curseur sur la parenthèse ou crochet + correspondant. + + 5. Déplacez le curseur sur un autre (,),[,],{ ou } et regardez ce que + fait % . + +---> Voici ( une ligne de test contenant des (, des [ ] et des { } )). + +NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qui + contient des parenthèses déséquilibrées ! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 4.4 : LA COMMANDE DE SUBSTITUTION + + + ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** + + 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. + + 2. Tapez :s/lee/le . Notez que cette commande change seulement la + première occurrence de "lee" dans la ligne. + + 3. Puis tapez :s/lee/le/g . L'ajout du drapeau g ordonne de faire une + substitution globale sur la ligne, et change toutes les occurrences de + "lee" sur la ligne. + +---> lee meilleur moment pour regarder lees fleurs est pendant lee printemps. + + 4. Pour changer toutes les occurrences d'un texte, entre deux lignes, + tapez :#,#s/ancien/nouveau/g où #,# sont les numéros de lignes de la + plage où la substitution doit être faite. + Tapez :%s/ancien/nouveau/g pour changer toutes les occurrences dans + tout le fichier. + Tapez :%s/ancien/nouveau/gc pour trouver toutes les occurrences dans + tout le fichier avec une invite pour + confirmer ou infirmer chaque substitution. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 4 + + + 1. CTRL-G affiche la position dans le fichier et l'état de celui-ci. + G déplace à la fin du fichier. + nombre G déplace au numéro de ligne. + gg déplace à la première ligne. + + 2. Taper / suivi d'un texte recherche ce texte vers l'AVANT. + Taper ? suivi d'un texte recherche ce texte vers l'ARRIÈRE. + Après une recherche tapez n pour trouver l'occurrence suivante dans la + même direction ou Maj-N pour rechercher dans la direction opposée. + + 3. Taper % lorsque le curseur est sur (, ), [, ], { ou } déplace + celui-ci sur le caractère correspondant. + + 4. Pour remplacer le premier aa par bb sur une ligne tapez :s/aa/bb + Pour remplacer tous les aa par bb sur une ligne tapez :s/aa/bb/g + Pour remplacer du texte entre deux numéros de ligne tapez :#,#s/aa/bb/g + Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g + Pour demander une confirmation à chaque fois ajoutez 'c' :%s/aa/bb/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE + + + ** Tapez :! suivi d'une commande externe pour exécuter cette commande. ** + + 1. Tapez le : familier pour mettre le curseur en bas de l'écran. Cela vous + permet de saisir une commande. + + 2. Puis tapez un ! (point d'exclamation). Cela vous permet d'exécuter + n'importe quelle commande valide pour votre interpréteur (shell). + + 3. Par exemple, tapez ls après le ! et appuyez . Ceci affichera + la liste des fichiers du répertoire courant, comme si vous aviez tapé la + commande à l'invite du shell. Utilisez :!dir si :!ls ne marche pas. + +NOTE : Il est possible d'exécuter n'importe quelle commande externe de cette + manière, avec ou sans argument. + +NOTE : Toutes les commandes : doivent finir par la frappe de . + À partir de maintenant, nous ne le mentionnerons plus. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS + + + ** Pour enregistrer les changements faits au texte, tapez :w FICHIER . ** + + 1. Tapez :!dir ou :!ls pour avoir la liste des fichiers dans le + répertoire courant. Vous savez déjà qu'il faut appuyer après + cela. + + 2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST. + + 3. Puis tapez :w TEST (où TEST est le nom que vous avez choisi). + + 4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST. + Pour le vérifier, tapez :!dir ou :!ls de nouveau pour revisualiser + votre répertoire. + +NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST, + celui-ci sera une copie exacte de ce cours au moment où vous l'avez + enregistré. + + 5. Maintenant, effacez le fichier en tapant (MS-DOS) : :!del TEST + ou (Unix) : :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 5.3 : SÉLECTION DU TEXTE À ENREGISTRER + + + ** Pour enregistrer une portion du fichier, + tapez : v déplacement :w FICHIER ** + + 1. Déplacez le curseur sur cette ligne. + + 2. Appuyez v et déplacez le curseur vers la cinquième ligne plus bas. + Remarquez que le texte est en surbrillance. + + 3. Appuyez : . En bas de l'écran :'<,'> va apparaître. + + 4. Tapez w TEST , où TEST est un nom de fichier qui n'existe pas. + Vérifiez que vous voyez :'<,'>w TEST avant de d'appuyer sur . + + 5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST. + Utilisez :!dir ou :!ls pour le voir. Ne l'effacez pas encore ! + Nous allons l'utiliser dans la leçon suivante. + +NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le + curseur pour agrandir ou rétrécir la sélection. Puis vous pouvez + utiliser un opérateur pour faire quelque chose sur le texte. Par + exemple, d efface le texte. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS + + + ** Pour insérer le contenu d'un fichier, tapez :r FICHIER ** + + 1. Placez le curseur juste au-dessus de cette ligne. + +NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3. + Puis déplacez-vous vers le bas pour voir cette leçon à nouveau. + + 2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST + où TEST est le nom de votre fichier. + Le fichier que vous récupérez est placé au-dessous de la ligne du curseur. + + 4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez + qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle + contenue dans le fichier. + +NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, + :r !ls lit la sortie de la commande ls et la place sous la ligne du + curseur. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 5 + + + 1. :!commande exécute une commande externe. + + Quelques exemples pratiques : + (MS-DOS) (Unix) + :!dir :!ls affiche le contenu du répertoire courant. + :!del FICHIER :!rm FICHIER efface FICHIER. + + 2. :w FICHIER enregistre le fichier Vim courant sur le disque avec pour + nom FICHIER. + + 3. v déplacement :w FICHIER sauvegarde les lignes de la sélection Visuelle + dans le fichier FICHIER. + + 4. :r FICHIER récupère le contenu du fichier FICHIER et l'insère sous la + position du curseur. + + 5. :r !dir lit la sortie de la commande dir et l'insère sous la position + du curseur. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.1 : LA COMMANDE D'OUVERTURE + + +** Tapez o pour ouvrir une ligne sous le curseur et y aller en Insertion. ** + + 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. + + 2. Tapez la lettre o minuscule pour ouvrir une ligne SOUS le curseur et + vous y placer en mode Insertion. + + 3. Puis tapez du texte et appuyez <Échap> pour sortir du mode Insertion. + +---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. + + 4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un O + majuscule, plutôt qu'un o minuscule. Faites un essai sur la ligne + ci-dessous. + +---> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.2 : LA COMMANDE D'AJOUT + + + ** Tapez a pour insérer du texte APRÈS le curseur. ** + + 1. Placez le curseur au début de la ligne marquée ---> ci-dessous. + + 2. Appuyez e jusqu'à ce que le curseur soit sur la fin de li . + + 3. Appuyez a (minuscule) pour ajouter du texte APRÈS le curseur. + + 4. Complétez le mot comme dans la ligne dessous. Appuyez <Échap> pour + sortir du mode Insertion. + + 5. Utilisez e pour vous déplacer vers le mot incomplet suivant et + répétez les étapes 3 et 4. + +---> Cette li vous perm de pratiq l'ajout de t dans une ligne. +---> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne. + +NOTE : a, i, A vont tous dans le même mode Insertion, la seule différence + est l'endroit où les caractères sont insérés. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.3 : UNE AUTRE MANIÈRE DE REMPLACER + + + ** Tapez un R majuscule pour remplacer plus d'un caractère. ** + + 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. + Déplacez le curseur sur le début du premier xxx . + + 2. Appuyez maintenant R et tapez le nombre dessous dans la deuxième ligne, + de manière à remplacer le xxx . + + 3. Appuyez <Échap> pour quitter le mode Remplacement. Notez que le reste de + la ligne demeure inchangé. + + 4. Répétez les étapes pour remplacer les xxx restants. + + +---> L'ajout de 123 à xxx donne xxx. +---> L'ajout de 123 à 456 donne 579. + +NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les + caractères tapés effacent un caractère existant. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.4 : COPIER ET COLLER DU TEXTE + + + ** Utilisez l'opérateur y pour copier du texte et p pour le coller ** + + 1. Allez à la ligne marquée ---> ci-dessous et placez le curseur après "a)". + + 2. Démarrez le mode Visuel avec v et déplacez le curseur juste devant + "premier". + + 3. Tapez y pour copier le texte en surbrillance. + + 4. Déplacez le curseur à la fin de la ligne suivante : j$ + + 5. Tapez p pour coller le texte. Puis tapez : un second <Échap> . + + 6. Utilisez le mode Visuel pour sélectionner "élément", copiez-le avec y , + déplacez-vous à la fin de la ligne suivant avec j$ et collez le texte + à cet endroit avec p . + +---> a) ceci est le premier élément. + b) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.4 : RÉGLAGE DES OPTIONS + + + ** Réglons une option afin que la recherche et la substitution ignore la + casse des caractères. ** + + 1. Recherchez 'ignore' en tapant : /ignore + Répétez ceci plusieurs fois en utilisant la touche n . + + 2. Activez l'option 'ic' (ignorer casse) en tapant :set ic . + + 3. Puis cherchez 'ignore' de nouveau en utilisant n . + Remarquez que Ignore et IGNORE sont maintenant aussi trouvés. + + 4. Activez les options 'hlsearch' et 'incsearch' avec :set hls is . + + 5. Puis recommencez une recherche, et faites bien attention à ce qui se + produit : /ignore + + 6. Pour désactiver 'ignorer casse', entrez : :set noic + +NOTE : Pour enlever la surbrillance des résultats, entrez : :nohlsearch + +NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez + \c dans la phrase : /ignore\c + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 6 + + + 1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion. + Taper O ouvre une ligne au-DESSUS du curseur. + + 2. Taper a pour insérer du texte APRÈS le curseur. + Taper A pour insérer du texte après la fin de ligne. + + 3. Taper e déplace à la fin du mot. + + 4. Taper y copie du texte, p le colle. + + 5. Taper R majuscule active le mode Remplacement jusqu'à ce qu' <Échap> + soit appuyé. + + 6. Taper ":set xxx" active l'option "xxx". Quelques options sont : + 'ic' 'ingnorecase' pour ignorer la casse lors des recherches. + 'is' 'incsearch' pour montrer les appariements partiels. + 'hls' 'hlsearch' pour mettre en surbrillance les appariements. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 7.1 : OBTENIR DE L'AIDE + + + ** Utiliser le système d'aide en ligne. ** + + Vim a un système complet d'aide en ligne. Pour y accéder, essayez l'une de + ces trois méthodes : + - appuyez la touche (si vous en avez une) + - appuyez la touche (si vous en avez une) + - tapez :help + + + Lisez le texte dans la fenêtre d'aide pour savoir comment fonctionne l'aide. + Tapez CTRL-W CTRL-W pour sauter d'une fenêtre à l'autre. + Tapez :q pour fermer la fenêtre d'aide. + + Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant + des arguments à la commande :help . Essayez par exemple (n'oubliez pas + d'appuyer sur ) : + + :help w + :help c_CTRL-D + :help c_ ** + + 1. Mettez Vim soit en mode non compatible : set nocp + + 2. Regardez quels fichiers existent dans le répertoire : !ls ou !dir + + 3. Tapez le début d'une commande : :e + + 4. Appuyez CTRL-D et Vim affichera une liste de commandes qui commencent + par "e". + + 5. Appuyez et Vim complétera le nom de la commande : ":edit" + + 6. Ajoutez maintenant un espace et le début d'un fichier existant : + :edit FIC + + 7 Appuyez . Vim va compléter le nom (s'il est unique). + +NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez + d'appuyer CTRL-D et . C'est utile en particulier pour :help . + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 7 + + + 1. Tapez :help ou appuyez ou pour ouvrir la fenêtre d'aide. + + 2. Tapez :help cmd pour trouver l'aide sur cmd . + + 3. Tapez CTRL-W CTRL-W pour sauter à une autre fenêtre. + + 4. Tapez :q pour fermer la fenêtre d'aide. + + 5. Créez un script de démarrage vimrc pour conserver vos réglages préférés. + + 6. Quand vous tapez une commande : appuyez CTRL-D pour voir les + complètements possibles. Appuyez pour utiliser un complètement. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de + l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur + relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup + plus de commandes. Un Manuel de l'utilisateur est disponible en anglais : + :help user-manual + + Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en + français. Il parle plus de Vi que de Vim, mais pourra vous être utile. + L'éditeur Vi - Collection Précis et concis - par Arnold Robbins + Éditeur : O'Reilly France + ISBN : 2-84177-102-4 + + Deux livres en anglais sont également mentionnés dans la version originale + de ce tutoriel, dont un qui traite spécifiquement de Vim. Merci de vous y + référer si vous êtes intéressés. + + Ce tutoriel a été écrit par Michael C. Pierce et Robert K. Ware de l'École + des Mines du Colorado et reprend des idées fournies par Charles Smith, + Université d'État du Colorado. E-mail : bware@mines.colorado.edu. + + Modifié pour Vim par Bram Moolenar. + Traduit en français par Adrien Beau, en avril 2001. + Dernières mises à jour par Dominique Pellé. + + E-mail : dominique.pelle@gmail.com + Last Change : 2013 May 10 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim74/tutor/tutor.fr.utf-8 b/share/vim/vim74/tutor/tutor.fr.utf-8 new file mode 100644 index 00000000..d07d1baf --- /dev/null +++ b/share/vim/vim74/tutor/tutor.fr.utf-8 @@ -0,0 +1,1038 @@ +=============================================================================== += B i e n v e n u e dans l e T u t o r i e l de V I M - Version 1.7 = +=============================================================================== + + Vim est un éditeur très puissant qui a trop de commandes pour pouvoir + toutes les expliquer dans un cours comme celui-ci, qui est conçu pour en + décrire suffisamment afin de vous permettre d'utiliser simplement Vim. + + Le temps requis pour suivre ce cours est d'environ 25 à 30 minutes, selon + le temps que vous passerez à expérimenter. + + ATTENTION : + Les commandes utilisées dans les leçons modifieront le texte. Faites une + copie de ce fichier afin de vous entraîner dessus (si vous avez lancé + "vimtutor" ceci est déjà une copie). + + Il est important de garder en tête que ce cours est conçu pour apprendre + par la pratique. Cela signifie que vous devez exécuter les commandes + pour les apprendre correctement. Si vous vous contentez de lire le texte, + vous oublierez les commandes ! + + Maintenant, vérifiez que votre clavier n'est PAS verrouillé en + majuscules, et appuyez la touche j le nombre de fois suffisant pour + que la Leçon 1.1 remplisse complètement l'écran. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.1 : DÉPLACEMENT DU CURSEUR + + + ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. ** + ^ + k Astuce : La touche h est à gauche et déplace à gauche. + < h l > La touche l est à droite et déplace à droite. + j La touche j ressemble à une flèche vers le bas. + v + 1. Déplacez le curseur sur l'écran jusqu'à vous sentir à l'aise. + + 2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète. + Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante. + + 3. En utilisant la touche Bas, allez à la Leçon 1.2. + +NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap> + pour revenir en mode Normal. Puis retapez la commande que vous vouliez. + +NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant + hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que + vous aurez pris l'habitude. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.2 : SORTIR DE VIM + + + !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !! + + 1. Appuyez la touche <Échap> (pour être sûr d'être en mode Normal). + + 2. Tapez : :q! + Ceci quitte l'éditeur SANS enregistrer les changements que vous avez + faits. + + 3. Lorsque l'invite du shell vous sera présentée, tapez la commande qui + vous a mené dans ce tutoriel. Cela pourrait être : vimtutor + + 4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes + 1 à 3 pour sortir puis rentrer dans l'éditeur. + +NOTE : :q! annule tous les changements que vous avez faits. Dans + quelques leçons, vous apprendrez à enregistrer les changements. + + 5. Déplacez le curseur à la Leçon 1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT + + + ** Appuyez x pour effacer le caractère sous le curseur. ** + + 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. + + 2. Pour corriger les erreurs, déplacez le curseur jusqu'à ce qu'il soit + sur un caractère à effacer. + + 3. Appuyez la touche x pour effacer le caractère redondant. + + 4. Répétez les étapes 2 à 4 jusqu'à ce que la phrase soit correcte. + +---> La vvache à sautéé au-ddessus dde la luune. + + 5. Maintenant que la ligne est correcte, passez à la Leçon 1.4. + +NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par + la pratique. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.4 : ÉDITION DE TEXTE - INSERTION + + + ** Appuyez i pour insérer du texte. ** + + 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. + + 2. Pour rendre la première ligne identique à la seconde, mettez le curseur + sur le premier caractère APRÈS l'endroit où insérer le texte. + + 3. Appuyez i et tapez les caractères qui manquent. + + 4. Une fois qu'une erreur est corrigée, appuyez <Échap> pour revenir en mode + Normal. Répétez les étapes 2 à 4 pour corriger la phrase. + +---> Il mnqe caractères cette . +---> Il manque des caractères dans cette ligne. + + 5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez à la + Leçon 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.5 : ÉDITION DE TEXTE - AJOUTER + + + ** Appuyez A pour ajouter du text. ** + + 1. Déplacez le curseur sur la première ligne ci-dessous marquée --->. + Peu importe sur quel caractère se trouve le curseur sur cette ligne. + + 2. Appuyez A et tapez les ajouts nécessaires. + + 3. Quand le texte a été ajouté, appuyez <Échap> pour revenir en mode + Normal. + + 4. Déplacez le curseur sur la seconde ligne marquée ---> et répétez les + étapes 2 et 3 pour corriger la phrase. + +---> Il manque du texte à partir de cet + Il manque du texte à partir de cette ligne. +---> Il manque aussi du te + Il manque aussi du texte ici. + + 5. Quand vous vous sentez suffisamment à l'aise pour ajouter du texte, + allez à la Leçon 1.6. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.6 : ÉDITER UN FICHIER + + + ** Utilisez :wq pour enregistrer un fichier et sortir. ** + +!! NOTE : Lisez toute la leçon avant d'exécuter les instructions ci-dessous !! + + 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.2 : :q! + Ou, si vous avez accès à un autre terminal, exécutez y les actions + qui suivent. + + 2. À l'invite du shell, tapez cette commande : vim tutor + 'vim' est la commande pour démarrer l'éditeur Vim, 'tutor' est le + nom du fichier que vous souhaitez éditer. Utilisez un fichier qui peut + être modifié. + + 3. Insérez et effacez du texte comme vous l'avez appris dans les leçons + précédentes. + + 4. Enregistrez le fichier avec les changements et sortez de Vim avec : + :wq + + 5. Si vous avez quitté vimtutor à l'étape 1, recommencez vimtutor et + déplacez-vous en bas vers le résumé suivant. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 1 + + + 1. Le curseur se déplace avec les touches fléchées ou les touches hjkl. + h (gauche) j (bas) k (haut) l (droite) + + 2. Pour démarrer Vim à l'invite du shell tapez : vim FICHIER + + 3. Pour quitter Vim tapez : <Échap> :q! pour perdre tous les + changements. + OU tapez : <Échap> :wq pour enregistrer les + changements. + + 4. Pour effacer un caractère sous le curseur tapez : x + + 5. Pour insérer ou ajouter du texte tapez : + i tapez le texte à insérer avant le curseur <Échap> + A tapez le texte à ajouter après le curseur <Échap> + +NOTE : Appuyer <Échap> vous place en mode Normal ou annule une commande + partiellement tapée dont vous ne voulez plus. + +Passez maintenant à la leçon 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.1 : COMMANDES D'EFFACEMENT + + + ** Tapez dw pour effacer un mot. ** + + 1. Appuyez <Échap> pour être sûr d'être en mode Normal. + + 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. + + 3. Placez le curseur sur le début d'un mot qui a besoin d'être effacé. + + 4. Tapez dw pour faire disparaître ce mot. + +NOTE : La lettre d apparaîtra sur la dernière ligne de l'écran lors de + votre frappe. Vim attend que vous tapiez w . Si vous voyez un autre + caractère que d vous avez tapé autre chose ; appuyez <Échap> et + recommencez. + +---> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne. + + 5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez + à la Leçon 2.2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS + + + ** Tapez d$ pour effacer jusqu'à la fin de la ligne. ** + + 1. Appuyez <Échap> pour être sûr d'être en mode Normal. + + 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. + + 3. Déplacez le curseur jusqu'à la fin de la ligne correcte (APRÈS le + premier . ). + + 4. Tapez d$ pour effacer jusqu'à la fin de la ligne. + +---> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois. + + 5. Allez à la Leçon 2.3 pour comprendre ce qui se passe. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS + + + Plusieurs commandes qui changent le texte sont constituées d'un opérateur + et d'un mouvement. Le format pour une commande d'effacement avec l'opérateur + d d'effacement est le suivant : + + d mouvement + + Où : + d - est l'opérateur d'effacement + mouvement - est le mouvement sur lequel agit l'opérateur (listés + ci-dessous) + + Une courte liste de mouvements : + w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère. + e - jusqu'à la fin du mot courant, en EXCLUANT son dernier caractère. + $ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère. + + Ainsi, taper de va effacer depuis le curseur jusqu'à la fin du mot. + +NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le + curseur comme indiqué. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT + + + ** Taper un nombre avant un mouvement le répète autant de fois. ** + + 1. Déplacez le curseur au début de la ligne marquée ---> ci-dessous. + + 2. Tapez 2w pour déplacer le curseur de 2 mots vers l'avant. + + 3. Tapez 3e pour déplacer le curseur à la fin du troisième mot vers + l'avant. + + 4. Tapez 0 (zéro) pour déplacer au début de la ligne. + + 5. Répétez les étapes 2 et 3 avec des quantificateurs différents. + +---> Ceci est juste une ligne avec des mots où vous pouvez vous déplacer. + + 6. Déplacez-vous à la Leçon 2.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS + + + ** Taper un nombre avec un opérateur le répète autant de fois. ** + + Outre la combinaison de l'opérateur d'effacement avec un déplacement + mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur) + pour effacer encore plus : + d nombre déplacement + + 1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne + marquée --->. + + 2. Tapez d2w pour effacer les deux mots en MAJUSCULES. + + 3. Répétez les étapes 1 et 2 avec des quantificateurs différents pour + effacer les mots suivants en MAJUSCULES à l'aide d'une commande. + +---> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoyée. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.6 : OPÉREZ SUR DES LIGNES + + + ** Tapez dd pour effacer une ligne complète. ** + + Vu le nombre de fois où l'on efface des lignes complètes, les concepteurs + de Vi ont décidé qu'il serait plus facile de taper simplement deux d + pour effacer une ligne. + + 1. Placez le curseur sur la seconde ligne de la phrase ci-dessous. + 2. Tapez dd pour effacer la ligne. + 3. Maintenant allez à la quatrième ligne. + 4. Tapez 2dd pour effacer deux lignes. + +---> 1) Les roses sont rouges, +---> 2) La boue c'est drôle, +---> 3) Les violettes sont bleues, +---> 4) J'ai une voiture, +---> 5) Les horloges donnent l'heure, +---> 6) Le sucre est doux +---> 7) Tout comme vous. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.7 : L'ANNULATION + + + ** Tapez u pour annuler les dernières commandes. ** + ** Tapez U pour récupérer toute une ligne. ** + + 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous et placez-le sur + la première erreur. + 2. Tapez x pour effacer le premier caractère redondant. + 3. Puis tapez u pour annuler la dernière commande exécutée. + 4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande x . + 5. Puis tapez un U majuscule pour remettre la ligne dans son état initial. + 6. Puis tapez u deux-trois fois pour annuler le U et les commandes + précédentes. + 7. Maintenant tapez CTRL-R (maintenez la touche CTRL enfoncée pendant que + vous appuyez R) deux-trois fois pour refaire les commandes (annuler + les annulations). + +---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'. + + 8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la + Leçon 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 2 + + + 1. Pour effacer du curseur jusqu'au mot suivant tapez : dw + + 2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez : d$ + + 3. Pour effacer toute une ligne tapez : dd + + 4. Pour répéter un déplacement ajoutez un quantificateur : 2w + + 5. Le format d'une commande de changement est : + + opérateur [nombre] déplacement + + Où : + opérateur - est ce qu'il faut faire, comme d pour effacer. + [nombre] - un quantificateur optionnel pour répéter le déplacement. + déplacement - déplace le long du texte à opérer, tel que w (mot), + $ (jusqu'à la fin de ligne), etc. + + 6. Pour se déplacer au début de ligne, utilisez un zéro : 0 + + 5. Pour annuler des actions précédentes, tapez : u (u minuscule) + Pour annuler tous les changements sur une ligne tapez : U (U majuscule) + Pour annuler l'annulation tapez : CTRL-R + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 3.1 : LE COLLAGE + + + ** Tapez p pour placer après le curseur ce qui vient d'être effacé. ** + + 1. Placez le curseur sur la première ligne ci-dessous marquée --->. + + 2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim. + + 3. Déplacez le curseur sur la ligne c) au-dessus où vous voulez remettre la + ligne effacée. + + 4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur. + + 5. Répétez les étapes 2 à 4 pour mettre toutes les lignes dans le bon ordre. + +---> d) Et vous, qu'apprenez-vous ? +---> b) Les violettes sont bleues, +---> c) L'intelligence s'apprend, +---> a) Les roses sont rouges, + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 3.2 : LA COMMANDE DE REMPLACEMENT + + + ** Tapez rx pour remplacer un caractère sous le curseur par x . ** + + 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. + + 2. Placez le curseur de manière à ce qu'il surplombe la première erreur. + + 3. Tapez r suivi du caractère qui doit corriger l'erreur. + + 4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit égale + à la seconde. + +---> Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe ! +---> Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe ! + + 5. Maintenant, allez à la Leçon 3.3. + +NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par + mémorisation. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 3.3 : L'OPÉRATEUR DE CHANGEMENT + + + ** Pour changer jusqu'à la fin d'un mot, tapez ce .** + + 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. + + 2. Placez le curseur sur le u de luhko. + + 3. Tapez ce et corrigez le mot (dans notre cas, tapez 'igne'.) + + 4. Appuyez <Échap> et placez-vous sur le prochain caractère qui doit + être changé. + + 5. Répétez les étapes 3 et 4 jusqu'à ce que la première phrase soit + identique à la seconde. + +---> Cette luhko contient quelques myqa qui ont ricne d'être chantufip. +---> Cette ligne contient quelques mots qui ont besoin d'être changés. + +Notez que ce efface le mot et vous place ensuite en mode Insertion. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c + + + ** L'opérateur de changement fonctionne avec les mêmes déplacements + que l'effacement. ** + + 1. L'opérateur de changement fonctionne de la même manière que + l'effacement. Le format est : + + c [nombre] déplacement + + 2. Les déplacements sont identiques : w (mot) et $ (fin de ligne). + + 3. Déplacez-vous sur la première ligne marquée ---> ci-dessous. + + 4. Placez le curseur sur la première erreur. + + 5. Tapez c$ et tapez le reste de la ligne afin qu'elle soit identique + à la seconde ligne, puis tapez <Échap>. + +---> La fin de cette ligne doit être rendue identique à la seconde. +---> La fin de cette ligne doit être corrigée avec la commande c$ . + +NOTE : Vous pouvez utiliser la touche Retour Arrière pour corriger les + erreurs lorsque vous tapez. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 3 + + + 1. Pour remettre le texte qui a déjà été effacé, tapez p . Cela Place le + texte effacé APRÈS le curseur (si une ligne complète a été effacée, elle + sera placée sous la ligne du curseur). + + 2. Pour remplacer le caractère sous le curseur, tapez r suivi du caractère + qui remplacera l'original. + + 3. L'opérateur de changement vous permet de changer depuis la position du + curseur jusqu'où le déplacement vous amène. Par exemple, tapez ce + pour changer du curseur jusqu'à la fin du mot, c$ pour changer jusqu'à + la fin d'une ligne. + + 4. Le format pour le changement est : + + c [nombre] déplacement + +Passez maintenant à la leçon suivante. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER + + + ** Tapez CTRL-G pour afficher votre position dans le fichier et son état. + Tapez G pour vous rendre à une ligne donnée du fichier. ** + +NOTE : Lisez toute cette leçon avant d'effectuer l'une des étapes !! + + 1. Maintenez enfoncée la touche CTRL et appuyez sur g . On appelle cela + CTRL-G. Une ligne d'état va apparaître en bas de l'écran avec le nom + du fichier et le numéro de la ligne où vous êtes. Notez ce numéro, il + servira lors de l'étape 3. + +NOTE : Vous pouvez peut-être voir le curseur en bas à droite de l'écran. + Ceci arrive quand l'option 'ruler' est activée (voir :help 'ruler') + + 2. Tapez G pour vous déplacer à la fin du fichier. + Tapez gg pour vous déplacer au début du fichier. + + 3. Tapez le numéro de la ligne où vous étiez suivi de G . Cela vous + ramènera à la ligne où vous étiez au départ quand vous aviez appuyé + CTRL-G. + + 4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 4.2 : LA RECHERCHE + + + ** Tapez / suivi d'un texte pour rechercher ce texte. ** + + 1. Tapez le caractère / en mode Normal. Notez que celui-ci et le curseur + apparaissent en bas de l'écran, comme lorsque l'on utilise : . + + 2. Puis tapez 'errreuur' . C'est le mot que vous voulez rechercher. + + 3. Pour rechercher à nouveau le même texte, tapez simplement n . + Pour rechercher le même texte dans la direction opposée, tapez N . + + 4. Pour rechercher une phrase dans la direction opposée, utilisez ? + au lieu de / . + +---> erreur ne s'écrit pas "errreuur" ; errreuur est une erreur. + +NOTE : Quand la recherche atteint la fin du fichier, elle reprend au début + sauf si l'option 'wrapscan' est désactivée. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES + + + ** Tapez % pour trouver des ), ] ou } correspondants. ** + + 1. Placez le curseur sur l'un des (, [ ou { de la ligne marquée ---> + ci-dessous. + + 2. Puis tapez le caractère % . + + 3. Le curseur se déplacera sur la parenthèse out crochet correspondant. + + 4. Tapez % pour replacer le curseur sur la parenthèse ou crochet + correspondant. + + 5. Déplacez le curseur sur un autre (,),[,],{ ou } et regardez ce que + fait % . + +---> Voici ( une ligne de test contenant des (, des [ ] et des { } )). + +NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qui + contient des parenthèses déséquilibrées ! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 4.4 : LA COMMANDE DE SUBSTITUTION + + + ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** + + 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. + + 2. Tapez :s/lee/le . Notez que cette commande change seulement la + première occurrence de "lee" dans la ligne. + + 3. Puis tapez :s/lee/le/g . L'ajout du drapeau g ordonne de faire une + substitution globale sur la ligne, et change toutes les occurrences de + "lee" sur la ligne. + +---> lee meilleur moment pour regarder lees fleurs est pendant lee printemps. + + 4. Pour changer toutes les occurrences d'un texte, entre deux lignes, + tapez :#,#s/ancien/nouveau/g où #,# sont les numéros de lignes de la + plage où la substitution doit être faite. + Tapez :%s/ancien/nouveau/g pour changer toutes les occurrences dans + tout le fichier. + Tapez :%s/ancien/nouveau/gc pour trouver toutes les occurrences dans + tout le fichier avec une invite pour + confirmer ou infirmer chaque substitution. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 4 + + + 1. CTRL-G affiche la position dans le fichier et l'état de celui-ci. + G déplace à la fin du fichier. + nombre G déplace au numéro de ligne. + gg déplace à la première ligne. + + 2. Taper / suivi d'un texte recherche ce texte vers l'AVANT. + Taper ? suivi d'un texte recherche ce texte vers l'ARRIÈRE. + Après une recherche tapez n pour trouver l'occurrence suivante dans la + même direction ou Maj-N pour rechercher dans la direction opposée. + + 3. Taper % lorsque le curseur est sur (, ), [, ], { ou } déplace + celui-ci sur le caractère correspondant. + + 4. Pour remplacer le premier aa par bb sur une ligne tapez :s/aa/bb + Pour remplacer tous les aa par bb sur une ligne tapez :s/aa/bb/g + Pour remplacer du texte entre deux numéros de ligne tapez :#,#s/aa/bb/g + Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g + Pour demander une confirmation à chaque fois ajoutez 'c' :%s/aa/bb/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE + + + ** Tapez :! suivi d'une commande externe pour exécuter cette commande. ** + + 1. Tapez le : familier pour mettre le curseur en bas de l'écran. Cela vous + permet de saisir une commande. + + 2. Puis tapez un ! (point d'exclamation). Cela vous permet d'exécuter + n'importe quelle commande valide pour votre interpréteur (shell). + + 3. Par exemple, tapez ls après le ! et appuyez . Ceci affichera + la liste des fichiers du répertoire courant, comme si vous aviez tapé la + commande à l'invite du shell. Utilisez :!dir si :!ls ne marche pas. + +NOTE : Il est possible d'exécuter n'importe quelle commande externe de cette + manière, avec ou sans argument. + +NOTE : Toutes les commandes : doivent finir par la frappe de . + À partir de maintenant, nous ne le mentionnerons plus. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS + + + ** Pour enregistrer les changements faits au texte, tapez :w FICHIER . ** + + 1. Tapez :!dir ou :!ls pour avoir la liste des fichiers dans le + répertoire courant. Vous savez déjà qu'il faut appuyer après + cela. + + 2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST. + + 3. Puis tapez :w TEST (où TEST est le nom que vous avez choisi). + + 4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST. + Pour le vérifier, tapez :!dir ou :!ls de nouveau pour revisualiser + votre répertoire. + +NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST, + celui-ci sera une copie exacte de ce cours au moment où vous l'avez + enregistré. + + 5. Maintenant, effacez le fichier en tapant (MS-DOS) : :!del TEST + ou (Unix) : :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 5.3 : SÉLECTION DU TEXTE À ENREGISTRER + + + ** Pour enregistrer une portion du fichier, + tapez : v déplacement :w FICHIER ** + + 1. Déplacez le curseur sur cette ligne. + + 2. Appuyez v et déplacez le curseur vers la cinquième ligne plus bas. + Remarquez que le texte est en surbrillance. + + 3. Appuyez : . En bas de l'écran :'<,'> va apparaître. + + 4. Tapez w TEST , où TEST est un nom de fichier qui n'existe pas. + Vérifiez que vous voyez :'<,'>w TEST avant de d'appuyer sur . + + 5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST. + Utilisez :!dir ou :!ls pour le voir. Ne l'effacez pas encore ! + Nous allons l'utiliser dans la leçon suivante. + +NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le + curseur pour agrandir ou rétrécir la sélection. Puis vous pouvez + utiliser un opérateur pour faire quelque chose sur le texte. Par + exemple, d efface le texte. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS + + + ** Pour insérer le contenu d'un fichier, tapez :r FICHIER ** + + 1. Placez le curseur juste au-dessus de cette ligne. + +NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3. + Puis déplacez-vous vers le bas pour voir cette leçon à nouveau. + + 2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST + où TEST est le nom de votre fichier. + Le fichier que vous récupérez est placé au-dessous de la ligne du curseur. + + 4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez + qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle + contenue dans le fichier. + +NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, + :r !ls lit la sortie de la commande ls et la place sous la ligne du + curseur. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 5 + + + 1. :!commande exécute une commande externe. + + Quelques exemples pratiques : + (MS-DOS) (Unix) + :!dir :!ls affiche le contenu du répertoire courant. + :!del FICHIER :!rm FICHIER efface FICHIER. + + 2. :w FICHIER enregistre le fichier Vim courant sur le disque avec pour + nom FICHIER. + + 3. v déplacement :w FICHIER sauvegarde les lignes de la sélection Visuelle + dans le fichier FICHIER. + + 4. :r FICHIER récupère le contenu du fichier FICHIER et l'insère sous la + position du curseur. + + 5. :r !dir lit la sortie de la commande dir et l'insère sous la position + du curseur. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.1 : LA COMMANDE D'OUVERTURE + + +** Tapez o pour ouvrir une ligne sous le curseur et y aller en Insertion. ** + + 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. + + 2. Tapez la lettre o minuscule pour ouvrir une ligne SOUS le curseur et + vous y placer en mode Insertion. + + 3. Puis tapez du texte et appuyez <Échap> pour sortir du mode Insertion. + +---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. + + 4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un O + majuscule, plutôt qu'un o minuscule. Faites un essai sur la ligne + ci-dessous. + +---> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.2 : LA COMMANDE D'AJOUT + + + ** Tapez a pour insérer du texte APRÈS le curseur. ** + + 1. Placez le curseur au début de la ligne marquée ---> ci-dessous. + + 2. Appuyez e jusqu'à ce que le curseur soit sur la fin de li . + + 3. Appuyez a (minuscule) pour ajouter du texte APRÈS le curseur. + + 4. Complétez le mot comme dans la ligne dessous. Appuyez <Échap> pour + sortir du mode Insertion. + + 5. Utilisez e pour vous déplacer vers le mot incomplet suivant et + répétez les étapes 3 et 4. + +---> Cette li vous perm de pratiq l'ajout de t dans une ligne. +---> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne. + +NOTE : a, i, A vont tous dans le même mode Insertion, la seule différence + est l'endroit où les caractères sont insérés. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.3 : UNE AUTRE MANIÈRE DE REMPLACER + + + ** Tapez un R majuscule pour remplacer plus d'un caractère. ** + + 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. + Déplacez le curseur sur le début du premier xxx . + + 2. Appuyez maintenant R et tapez le nombre dessous dans la deuxième ligne, + de manière à remplacer le xxx . + + 3. Appuyez <Échap> pour quitter le mode Remplacement. Notez que le reste de + la ligne demeure inchangé. + + 4. Répétez les étapes pour remplacer les xxx restants. + + +---> L'ajout de 123 à xxx donne xxx. +---> L'ajout de 123 à 456 donne 579. + +NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les + caractères tapés effacent un caractère existant. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.4 : COPIER ET COLLER DU TEXTE + + + ** Utilisez l'opérateur y pour copier du texte et p pour le coller ** + + 1. Allez à la ligne marquée ---> ci-dessous et placez le curseur après "a)". + + 2. Démarrez le mode Visuel avec v et déplacez le curseur juste devant + "premier". + + 3. Tapez y pour copier le texte en surbrillance. + + 4. Déplacez le curseur à la fin de la ligne suivante : j$ + + 5. Tapez p pour coller le texte. Puis tapez : un second <Échap> . + + 6. Utilisez le mode Visuel pour sélectionner "élément", copiez-le avec y , + déplacez-vous à la fin de la ligne suivant avec j$ et collez le texte + à cet endroit avec p . + +---> a) ceci est le premier élément. + b) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.4 : RÉGLAGE DES OPTIONS + + + ** Réglons une option afin que la recherche et la substitution ignore la + casse des caractères. ** + + 1. Recherchez 'ignore' en tapant : /ignore + Répétez ceci plusieurs fois en utilisant la touche n . + + 2. Activez l'option 'ic' (ignorer casse) en tapant :set ic . + + 3. Puis cherchez 'ignore' de nouveau en utilisant n . + Remarquez que Ignore et IGNORE sont maintenant aussi trouvés. + + 4. Activez les options 'hlsearch' et 'incsearch' avec :set hls is . + + 5. Puis recommencez une recherche, et faites bien attention à ce qui se + produit : /ignore + + 6. Pour désactiver 'ignorer casse', entrez : :set noic + +NOTE : Pour enlever la surbrillance des résultats, entrez : :nohlsearch + +NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez + \c dans la phrase : /ignore\c + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 6 + + + 1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion. + Taper O ouvre une ligne au-DESSUS du curseur. + + 2. Taper a pour insérer du texte APRÈS le curseur. + Taper A pour insérer du texte après la fin de ligne. + + 3. Taper e déplace à la fin du mot. + + 4. Taper y copie du texte, p le colle. + + 5. Taper R majuscule active le mode Remplacement jusqu'à ce qu' <Échap> + soit appuyé. + + 6. Taper ":set xxx" active l'option "xxx". Quelques options sont : + 'ic' 'ingnorecase' pour ignorer la casse lors des recherches. + 'is' 'incsearch' pour montrer les appariements partiels. + 'hls' 'hlsearch' pour mettre en surbrillance les appariements. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 7.1 : OBTENIR DE L'AIDE + + + ** Utiliser le système d'aide en ligne. ** + + Vim a un système complet d'aide en ligne. Pour y accéder, essayez l'une de + ces trois méthodes : + - appuyez la touche (si vous en avez une) + - appuyez la touche (si vous en avez une) + - tapez :help + + + Lisez le texte dans la fenêtre d'aide pour savoir comment fonctionne l'aide. + Tapez CTRL-W CTRL-W pour sauter d'une fenêtre à l'autre. + Tapez :q pour fermer la fenêtre d'aide. + + Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant + des arguments à la commande :help . Essayez par exemple (n'oubliez pas + d'appuyer sur ) : + + :help w + :help c_CTRL-D + :help c_ ** + + 1. Mettez Vim soit en mode non compatible : set nocp + + 2. Regardez quels fichiers existent dans le répertoire : !ls ou !dir + + 3. Tapez le début d'une commande : :e + + 4. Appuyez CTRL-D et Vim affichera une liste de commandes qui commencent + par "e". + + 5. Appuyez et Vim complétera le nom de la commande : ":edit" + + 6. Ajoutez maintenant un espace et le début d'un fichier existant : + :edit FIC + + 7 Appuyez . Vim va compléter le nom (s'il est unique). + +NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez + d'appuyer CTRL-D et . C'est utile en particulier pour :help . + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 7 + + + 1. Tapez :help ou appuyez ou pour ouvrir la fenêtre d'aide. + + 2. Tapez :help cmd pour trouver l'aide sur cmd . + + 3. Tapez CTRL-W CTRL-W pour sauter à une autre fenêtre. + + 4. Tapez :q pour fermer la fenêtre d'aide. + + 5. Créez un script de démarrage vimrc pour conserver vos réglages préférés. + + 6. Quand vous tapez une commande : appuyez CTRL-D pour voir les + complètements possibles. Appuyez pour utiliser un complètement. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de + l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur + relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup + plus de commandes. Un Manuel de l'utilisateur est disponible en anglais : + :help user-manual + + Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en + français. Il parle plus de Vi que de Vim, mais pourra vous être utile. + L'éditeur Vi - Collection Précis et concis - par Arnold Robbins + Éditeur : O'Reilly France + ISBN : 2-84177-102-4 + + Deux livres en anglais sont également mentionnés dans la version originale + de ce tutoriel, dont un qui traite spécifiquement de Vim. Merci de vous y + référer si vous êtes intéressés. + + Ce tutoriel a été écrit par Michael C. Pierce et Robert K. Ware de l'École + des Mines du Colorado et reprend des idées fournies par Charles Smith, + Université d'État du Colorado. E-mail : bware@mines.colorado.edu. + + Modifié pour Vim par Bram Moolenar. + Traduit en français par Adrien Beau, en avril 2001. + Dernières mises à jour par Dominique Pellé. + + E-mail : dominique.pelle@gmail.com + Last Change : 2013 May 10 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim74/tutor/tutor.hr b/share/vim/vim74/tutor/tutor.hr new file mode 100644 index 00000000..90443bf6 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.hr @@ -0,0 +1,972 @@ +=============================================================================== += D o b r o d o ¹ l i u VIM p r i r u è n i k - Verzija 1.7 = +=============================================================================== + + Vim je vrlo moæan editor koji ima mnogo naredbi, previ¹e da bi ih + se svih ovdje spomenulo. Namjena priruènika je objasniti dovoljno + naredbi kako bi poèetnici znatno lak¹e koristili ovaj svestran editor. + + Pribli¾no vrijeme potrebno za uspje¹an zavr¹etak priruènika je oko + 30 minuta a ovisi o tome koliko æe te vremena odvojiti za vje¾banje. + + UPOZORENJE: + Naredbe u ovom priruèniku æe promijeniti ovaj tekst. + Napravite kopiju ove datoteke kako bi ste na istoj vje¾bali + (ako ste pokrenuli "vimtutor" ovo je veæ kopija). + + Vrlo je va¾no primijetiti da je ovaj priruènik namijenjen za vje¾banje. + Preciznije, morate izvr¹iti naredbe u Vim-u kako bi ste iste nauèili + pravilno koristiti. Ako samo èitate tekst, zaboraviti æe te naredbe! + + Ako je CapsLock ukljuèen ISKLJUÈITE ga. Pritiskajte tipku j kako + bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.1: POMICANJE KURSORA + + + ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano ** + ^ + k Savjet: h tipka je lijevo i pomièe kursor lijevo. + < h l > l tipka je desno i pomièe kursor desno. + j j izgleda kao strelica usmjerena dolje. + v + 1. Pomièite kursor po ekranu dok se ne naviknete na kori¹tenje. + + 2. Dr¾ite tipku (j) pritisnutom. + Sada znate kako doæi do sljedeæe lekcije. + + 3. Koristeæi tipku j prijeðite na sljedeæu lekciju 1.2. + +NAPOMENA: Ako niste sigurni ¹to ste zapravo pritisnuli uvijek koristite + tipku kako bi pre¹li u Normal mod i onda poku¹ajte ponovno. + +NAPOMENA: Kursorske tipke rade isto. Kori¹tenje hjkl tipaka je znatno + br¾e, nakon ¹to se jednom naviknete na njihovo kori¹tenje. Stvarno! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.2: IZLAZ IZ VIM-a + + + !! UPOZORENJE: Prije izvoðenja bilo kojeg koraka, + proèitajte cijelu lekciju!! + + 1. Pritisnite tipku (Vim je sada u Normal modu). + + 2. Otipkajte: :q! . + Izlaz iz editora, GUBE se sve napravljene promjene. + + 3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula + ovaj priruènik: vimtutor + + 4. Ako ste upamtili ove korake, izvr¹ite ih redom od 1 do 3 + kako bi ponovno pokrenuli editor. + +NAPOMENA: :q! poni¹tava sve promjene koje ste napravili. + U sljedeæim lekcijama nauèit æe te kako promjene saèuvati. + + 5. Pomaknite kursor na Lekciju 1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.3: PROMJENA TEKSTA - BRISANJE + + + ** Pritisnite x za brisanje znaka pod kursorom. ** + + 1. Pomaknite kursor na liniju oznaèenu s --->. + + 2. Kako bi ste ispravili pogre¹ke, pomièite kursor dok se + ne bude nalazio na slovu kojeg trebate izbrisati. + + 3. Pritisnite tipku x kako bi uklonili ne¾eljeno slovo. + + 4. Ponovite korake od 2 do 4 dok ne ispravite sve pogre¹ke. + +---> KKKravaa jee presskoèila mmjeseccc. + + 5. Nakon ¹to ispravite liniju, prijeðite na lekciju 1.4. + +NAPOMENA: Koristeæi ovaj priruènik ne poku¹avajte pamtiti + veæ uèite primjenom. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE + + + ** Pritisnite i za ubacivanje teksta ispred kursora. ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + + 2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite + kursor na prvi znak POSLIJE kojeg æe te utipkati potreban tekst. + + 3. Pritisnite i te utipkajte potrebne nadopune. + + 4. Nakon ¹to ispravite pogre¹ku pritisnite kako bi vratili Vim + u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogre¹ke. + +---> Nedje no teka od v lin. +---> Nedostaje ne¹to teksta od ove linije. + + 5. Prijeðite na sljedeæu lekciju. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE + + + ** Pritisnite A za dodavanje teksta. ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + Nije va¾no na kojem se slovu nalazi kursor na toj liniji. + + 2. Pritisnite A i napravite potrebne promjene. + + 3. Nakon ¹to ste dodali tekst, pritisnite + za povratak u Normal mod. + + 4. Pomaknite kursor na drugu liniju oznaèenu s ---> + i ponovite korake 2 i 3 dok ne popravite tekst. + +---> Ima ne¹to teksta koji nedostaje n + Ima ne¹to teksta koji nedostaje na ovoj liniji. +---> Ima ne¹to teksta koji ne + Ima ne¹to teksta koji nedostaje ba¹ ovdje. + + 5. Prijeðite na lekciju 1.6. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.6: PROMJENA DATOTEKE + + + ** Koristite :wq za spremanje teksta i napu¹tanje Vim-a. ** + + !! UPOZORENJE: Prije izvr¹avanja bilo kojeg koraka, proèitajte lekciju!! + + 1. Izaðite iz programa kao sto ste napravili u lekciji 1.2: :q! + + 2. Iz ljuske utipkajte sljedeæu naredbu: vim tutor + 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju + ¾elite ureðivati. Koristite datoteku koju imate ovlasti mijenjati. + + 3. Ubacite i izbri¹ite tekst kao ¹to ste to napravili u lekcijama prije. + + 4. Saèuvajte promjenjeni tekst i izaðite iz Vim-a: :wq + + 5. Ponovno pokrenite vimtutor i nastavite èitati sa¾etak koji sljedi. + + 6. Nakon sto proèitate gornje korake i u potpunosti ih razumijete: + izvr¹ite ih. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1 SA®ETAK + + + 1. Kursor se pomièe strelicama ili pomoæu hjkl tipaka. + h (lijevo) j (dolje) k (gore) l (desno) + + 2. Pokretanje Vim-a iz ljuske: vim IME_DATOTEKE + + 3. Izlaz: :q! sve promjene su izgubljene. + ILI: :wq promjene su saèuvane. + + 4. Brisanje znaka na kojem se nalazi kursor: x + + 5. Ubacivanja ili dodavanje teksta: + i utipkajte tekst unos ispred kursora + A utipkajte tekst dodavanje na kraju linije + +NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i + prekida ne¾eljenu ili djelomièno zavr¹enu naredbu. + +Nastavite èitati Lekciju 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.1: NAREDBE BRISANJA + + + ** Tipkajte dw za brisanje rijeèi. ** + + 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. + + 2. Pomaknite kursor na liniju oznaèenu s --->. + + 3. Pomaknite kursor na poèetak rijeèi koju treba izbrisati. + + 4. Otipkajte dw kako bi uklonili rijeè. + +NAPOMENA: Vim æe prikazati slovo d na zadnjoj liniji kad ga otipkate. + Vim èeka da otipkate w . Ako je prikazano neko drugo slovo, + krivo ste otipkali; pritisnite i poku¹ajte ponovno. + +---> Neke rijeèi smije¹no ne pripadaju na papir ovoj reèenici. + + 5. Ponovite korake 3 i 4 dok ne ispravite reèenicu; + prijeðite na Lekciju 2.2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.2: JO© BRISANJA + + + ** Otipkajte d$ za brisanje znakova do kraja linije. ** + + 1. Pritisnite kako bi bili + sigurni da je Vim u Normal modu. + + 2. Pomaknite kursor na liniju oznaèenu s --->. + + 3. Pomaknite kursor do kraja ispravne reèenice + (POSLJE prve . ). + + 4. Otipkajte d$ + kako bi izbrisali sve znakove do kraja linije. + +---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. + + 5. Prijeðite na Lekciju 2.3 za bolje obja¹njenje. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA + + + Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. + Oblik naredbe brisanja sa d operatorom je sljedeæi: + + d pokret + + Pri èemu je: + d - operator brisanja. + pokret - ono na èemu æe se operacija izvr¹avati (navedeno u nastavku). + + Kratka lista pokreta: + w - sve do poèetka sljedeæe rijeèi, NE UKLJUÈUJUÆI prvo slovo. + e - sve do kraja trenutaène rijeèi, UKLJUÈUJUÆI zadnje slovo. + $ - sve do kraje linije, UKLJUÈUJUÆI zadnje slovo. + + Tipkanjem de æe se brisati od kursora do kraja rijeèi. + +NAPOMENA: Pritiskajuæi samo pokrete dok ste u Normal modu bez operatora æe + pomicati kursor kao ¹to je navedeno. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.4: KORI©TENJE BROJANJA ZA POKRETE + + + ** Tipkanjem nekog broja prije pokreta, pokret se izvr¹ava toliko puta. ** + + 1. Pomaknite kursor na liniju oznaèenu s --->. + + 2. Otipkajte 2w da pomaknete kursor dvije rijeèi naprijed. + + 3. Otipkajte 3e da pomaknete kursor na kraj treæe rijeèi naprijed. + + 4. Otipkajte 0 (nulu) da pomaknete kursor na poèetak linije. + + 5. Ponovite korake 2 i 3 s nekim drugim brojevima. + +---> Reèenica sa rijeèima po kojoj mo¾ete pomicati kursor. + + 6. Prijeðite na Lekciju 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.5: KORI©TENJE BROJANJA ZA VEÆE BRISANJE + + + ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** + + U kombinaciji operatora brisanja i pokreta spomenutih iznad + ubacujete broj prije pokreta kako bi izbrisali vi¹e znakova: + + d broj pokret + + 1. Pomaknite kursor na prvo slovo u rijeèi sa VELIKIM SLOVIMA + oznaèenu s --->. + + 2. Otipkajte 2dw da izbri¹ete dvije rijeèi sa VELIKIM SLOVIMA + + 3. Ponovite korake 1 i 2 sa razlièitim brojevima da izbri¹ete + uzastopne rijeèi sa VELIKIM SLOVIMA sa samo jednom naredbom. + +---> ova ABCÈÆ DÐE linija FGHI JK LMN OP rijeèi je RS© TUVZ® popravljena. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.6: OPERIRANJE NAD LINIJAMA + + + ** Otipkajte dd za brisanje cijele linije. ** + + Zbog uèestalosti brisanja cijelih linija, dizajneri Vi-a su odluèili da + je lak¹e brisati linije tipkanjem d dvaput. + + 1. Pomaknite kursor na drugu liniju u donjoj kitici. + 2. Otipkajte dd kako bi izbrisali liniju. + 3. Pomaknite kursor na èetvrtu liniju. + 4. Otipkajte 2dd kako bi izbrisali dvije linije. + +---> 1) Ru¾e su crvene, +---> 2) Pla¾a je super, +---> 3) Ljubice su plave, +---> 4) Imam auto, +---> 5) Satovi ukazuju vrijeme, +---> 6) ©eæer je sladak +---> 7) Kao i ti. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.7: NAREDBA PONI©TENJA + + + ** Pritisnite u za poni¹tenje zadnje naredbe, U za cijelu liniju. ** + + 1. Pomaknite kursor na liniju oznaèenu s ---> i postavite kursor na prvu + pogre¹ku. + 2. Otipkajte x kako bi izbrisali prvi ne¾eljeni znak. + 3. Otipkajte u kako bi poni¹tili zadnju izvr¹enu naredbu. + 4. Ovaj put ispravite sve pogre¹ke na liniji koristeæi x naredbu. + 5. Sada utipkajte veliko U kako bi poni¹tili sve promjene + na liniji, vraæajuæi je u prija¹nje stanje. + 6. Sada utipkajte u nekoliko puta kako bi poni¹tili U + i prija¹nje naredbe. + 7. Sada utipkajte CTRL-R (dr¾eæi CTRL tipku pritisnutom dok + ne pritisnete R) nekoliko puta kako bi vratili promjene + (poni¹tili poni¹tenja). + +---> Poopravite pogre¹ke nna ovvoj liniji ii pooni¹titeee ih. + + 8. Vrlo korisne naredbe. Prijeðite na sa¾etak Lekcije 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2 SA®ETAK + + + 1. Brisanje od kursora do sljedeæe rijeèi: dw + 2. Brisanje od kursora do kraja linije: d$ + 3. Brisanje cijele linije: dd + + 4. Za ponavljanje pokreta prethodite mu broj: 2w + 5. Oblik naredbe mijenjanja: + operator [broj] pokret + gdje je: + operator - ¹to napraviti, npr. d za brisanje + [broj] - neobavezan broj ponavljanja pokreta + pokret - kretanje po tekstu po kojem se operira, + kao ¹to je: w (rijeè), $ (kraj linije), itd. + + 6. Postavljanje kursora na poèetak linije: 0 + + 7. Za poni¹tenje prethodnih promjena, pritisnite: u (malo u) + Za poni¹tenje svih promjena na liniji, pritisnite: U (veliko U) + Za vraæanja promjena, utipkajte: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.1: NAREDBA POSTAVI + + + ** p za unos prethodno izbrisanog teksta iza kursora. ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + + 2. Otipkajte dd kako bi izbrisali liniju i spremili je u Vim registar. + + 3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti. + + 4. Otipkajte p kako bi postavili liniju ispod kursora. + + 5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom + rasporedu. + +---> d) Mo¾e¹ li i ti nauèiti? +---> b) Ljubice su plave, +---> c) Inteligencija je nauèena, +---> a) Ru¾e su crvene, + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.2: NAREDBA PROMJENE + + + ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + + 2. Pomaknite kursor tako da se nalazi na prvoj pogre¹ci. + + 3. Otipkajte r i nakon toga ispravan znak na tom mjestu. + + 4. Ponovite korake 2 i 3 sve dok prva + linije ne bude istovjetna drugoj. + +---> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! +---> Kada je ova linija tipkana, netko je pritiskao krive tipke! + + 5. Prijeðite na Lekciju 3.2. + +NAPOMENA: Prisjetite da trebate uèiti vje¾banjem, ne pamæenjem. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.3: OPERATOR MIJENJANJA + + + ** Za mijenjanje do kraja rijeèi, istipkajte ce . ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + + 2. Postavite kursor na a u lackmb. + + 3. Otipkajte ce i ispravite rijeè (u ovom sluèaju otipkajte inija ). + + 4. Pritisnite i pomaknite kursor na sljedeæi znak + kojeg je potrebno ispraviti. + + 5. Ponovite korake 3 i 4 sve dok prva reèenica ne postane istovjetna + drugoj. + +---> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz. +---> Ova linija ima nekoliko rijeèi koje treba mijenjati. + +Primijetite da ce bri¹e rijeè i postavlja Vim u Insert mod. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.4: JO© MIJENJANJA KORI©TENJEM c + + + ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** + + 1. Operator mijenjanja se koristi na isti naèin kao i operator brisanja: + + c [broj] pokret + + 2. Pokreti su isti, npr: w (rijeè) i $ (kraj linije). + + 3. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + + 4. Pomaknite kursor na prvu pogre¹ku. + + 5. Otipkajte c$ i utipkajte ostatak linije tako da bude istovjetna + drugoj te pritisnite . + +---> Kraj ove linije treba pomoæ tako da izgleda kao linija ispod. +---> Kraj ove linije treba ispraviti kori¹tenjem c$ naredbe. + +NAPOMENA: Mo¾ete koristiti Backspace za ispravljanje gre¹aka. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3 SA®ETAK + + + 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo + postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se + postavlja na liniju ispod kursora). + + 2. Za promjenu znaka na kojem se nalazi kursor, pritisnite r i nakon toga + ¾eljeni znak. + + 3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do + koje dovede pokret. tj. Otipkajte ce za mijenjanje od kursora do kraja + rijeèi, c$ za mijenjanje od kursora do kraja linije. + + 4. Oblik naredbe mijenjanja: + + c [broj] pokret + +Prijeðite na sljedeæu lekciju. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE + + ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. + Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** + +NAPOMENA: Proèitajte cijelu lekciju prije izvr¹enja bilo kojeg koraka!! + + 1. Dr¾ite Ctrl tipku pritisnutom i pritisnite g . Ukratko: CTRL-G. + Vim æe ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom + kursora u datoteci. Zapamtite broj linije za 3. korak. + +NAPOMENA: Mo¾ete vidjeti poziciju kursora u donjem desnom kutu ako + je postavka 'ruler' aktivirana (obja¹njeno u 6. lekciji). + + 2. Pritisnite G za pomicanje kursora na kraj datoteke. + Otipkajte gg za pomicanje kursora na poèetak datoteke. + + 3. Otipkajte broj linije na kojoj ste bili maloprije i zatim G . Kursor + æe se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G. + + 4. Ako ste spremni, izvr¹ite korake od 1 do 3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.2: NAREDBE TRA®ENJA + + ** Otipkajte / i nakon toga izraz kojeg ¾elite tra¾iti. ** + + 1. U Normal modu otipkajte / znak. Primijetite da se znak + pojavio zajedno sa kursorom na dnu ekrana kao kod : naredbe. + + 2. Sada otipkajte 'grrrre¹ka' . To je rijeè koju zapravo tra¾ite. + + 3. Za ponovno tra¾enje istog izraza, otipkajte n . + Za tra¾enje istog izraza ali u suprotnom smjeru, otipkajte N . + + 4. Za tra¾enje izraza unatrag, koristite ? umjesto / . + + 5. Za povratak na prethodnu poziciju koristite CTRL-O (dr¾ite Ctrl + pritisnutim dok ne pritisnete tipku o). Ponavljajte sve dok se ne + vratite na poèetak. CTRL-I slièno kao CTRL-O ali u suprotnom smjeru. + +---> "pogrrrre¹ka" je pogre¹no; umjesto pogrrrre¹ka treba stajati pogre¹ka. + +NAPOMENA: Ako se tra¾enjem doðe do kraja datoteke nastavit æe se od njenog + poèetka osim ako je postavka 'wrapscan' deaktivirana. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.3: TRA®ENJE PRIPADAJUÆE ZAGRADE + + + ** Otipkajte % za pronalazak pripadajuæe ), ] ili } . ** + + 1. Postavite kursor na bilo koju od ( , [ ili { + otvorenih zagrada u liniji oznaèenoj s --->. + + 2. Otipkajte znak % . + + 3. Kursor æe se pomaknuti na pripadajuæu zatvorenu zagradu. + + 4. Otipkajte % kako bi pomakli kursor na drugu pripadajuæu zagradu. + + 5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite % naredbu. + +---> Linija ( testiranja obiènih ( [ uglatih ] i { vitièastih } zagrada.)) + + +NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajuæim zagradama! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.4: NAREDBE ZAMIJENE + + + ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** + + 1. Pomaknite kursor na liniju oznaèenu s --->. + + 2. Otipkajte :s/cvræè/cvrè . Primjetite da ova naredba zamjenjuje + samo prvi "cvræè" u liniji. + + 3. Otipkajte :s/cvræè/cvrè/g . Dodavanje g stavke znaèi da æe se naredba + izvr¹iti na cijeloj liniji, zamjenjivanjem svih "cvræè" u liniji. + +---> i cvræèi cvræèi cvræèak na èvoru crne smrèe. + + 4. Za zamjenu svih izraza u rasponu dviju linija, + otipkajte :#,#s/staro/novo/g #,# su brojevi linije datoteke na kojima + te izmeðu njih æe se izvr¹iti zamjena. + Otipkajte :%s/staro/novo/g za zamjenu svih izraza u cijeloj datoteci. + Otipkajte :%s/staro/novo/gc za pronalazak svakog izraza u datoteci i + potvrdu zamjene. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4 SA®ETAK + + + 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. + G postavlja kursor na zadnju liniju datoteke. + broj G postavlja kursor na broj liniju. + gg postavlja kursor na prvu liniju. + + 2. Tipkanje / sa izrazom tra¾i UNAPRIJED taj izraz. + Tipkanje ? sa izrazom tra¾i UNATRAG taj izraz. + Nakon naredbe tra¾enja koristite n za pronalazak izraza u istom + smjeru, i N za pronalazak istog izraza ali u suprotnom smjeru. + CTRL-O vraæa kursor na prethodnu poziciju, CTRL-I na sljedeæu poziciju. + + 3. Tipkanje % dok je kursor na zagradi pomièe ga na pripadajuæu zagradu. + + 4. Za zamjenu prvog izraza staro za izraz novo :s/staro/novo + Za zamjenu svih izraza staro na cijeloj liniji :s/staro/novo/g + Za zamjenu svih izraza staro u rasponu linija #,# :#,#s/staro/novo/g + Za zamjenu u cijeloj datoteci :%s/staro/novo/g + Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.1: IZVR©AVANJE VANJSKIH NAREDBI + + + ** Otipkajte :! sa vanjskom naredbom koju ¾elite izvr¹iti. ** + + 1. Otipkajte poznatu naredbu : kako bi kursor premjestili na dno + ekrana. Time omoguæavate unos naredbe u naredbenoj liniji. + + 2. Otipkajte znak ! (uskliènik). Tako omoguæavate + izvr¹avanje naredbe vanjske ljuske. + + 3. Kao primjer otipkajte ls nakon ! te pritisnite . + Ovo æe prikazati sadr¾aj direktorija, kao da ste u ljusci. + Koristite :!dir ako :!ls ne radi. + +NAPOMENA: Moguæe je izvr¹avati bilo koju vanjsku naredbu na ovaj naèin, + zajedno sa njenim argumentima. + +NAPOMENA: Sve : naredbe se izvr¹avaju nakon ¹to pritisnete + U daljnjem tekstu to neæe uvijek biti napomenuto. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.2: VI©E O SPREMANJU DATOTEKA + + ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** + + 1. Otipkajte :!dir ili :!ls za pregled direktorija. + Veæ znate da morate pritisnuti na kraju tipkanja. + + 2. Izaberite ime datoteke koja jo¹ ne postoji, npr. TEST. + + 3. Otipkajte: :w TEST (gdje je TEST ime koje ste prethodno odabrali.) + + 4. Time æe te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST. + Za provjeru, otipkajte ponovno :!dir ili :!ls + za pregled direktorija. + +NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , + datoteka bi bila potpuna kopija ove datoteke u trenutku + kada ste je spremili. + + 5. Izbri¹ite datoteku tako da otipkate (MS-DOS): :!del TEST + ili (Unix): :!rm TEST + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.3: SPREMANJE OZNAÈENOG TEKSTA + + + ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** + + 1. Pomaknite kursor na ovu liniju. + + 2. Pritisnite v i pomaknite kursor pet linija ispod ove. + Primijetite promjenu, oznaèeni tekst se razlikuje od obiènog. + + 3. Pritisnite : znak. Na dnu ekrana pojavit æe se :'<,'> . + + 4. Otipkajte w TEST , pritom je TEST ime datoteke koja jo¹ ne postoji. + Provjerite da zaista pi¹e :'<,'>w TEST + prije nego ¹to pritisnite . + + 5. Vim æe spremiti oznaèeni tekst u TEST. Provjerite sa :!dir ili :!ls . + Nemojte je jo¹ brisati! Koristiti æe te je u sljedeæoj lekciji. + +NAPOMENA: Tipka v zapoèinje Vizualno oznaèavanje. Mo¾ete pomicati kursor + unaokolo kako bi mijenjali velièinu oznaèenog teksta. Mo¾ete + koristiti i operatore. Npr, d æe izbrisati oznaèeni tekst. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.4: UÈITAVANJE DATOTEKA + + + ** Za ubacivanje sadr¾aja datoteke, otipkajte :r IME_DATOTEKE ** + + 1. Postavite kursor iznad ove linije. + +NAPOMENA: Nakon ¹to izvr¹ite 2. korak vidjeti æe te tekst iz Lekcije 5.3. + Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. + + 2. Uèitajte va¹u TEST datoteku koristeæi naredbu :r TEST + gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji. + Sadr¾aj uèitane datoteke je ubaèen liniju ispod kursora. + + 3. Kako bi provjerili da je datoteka uèitana, vratite kursor unatrag i + primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. + +NAPOMENA: Mo¾ete takoðer uèitati ispis vanjske naredbe. Npr, :r !ls + æe uèitati ispis ls naredbe i postaviti ispis liniju ispod + kursora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5 SA®ETAK + + + 1. :!naredba izvr¹ava vanjsku naredbu. + + Korisni primjeri: + (MS-DOS) (Unix) + :!dir :!ls - pregled direktorija. + :!del DATOTEKA :!rm DATOTEKA - bri¹e datoteku DATOTEKA. + + 2. :w DATOTEKA zapisuje trenutaènu datoteku na disk sa imenom DATOTEKA. + + 3. v pokret :w IME_DATOTEKE sprema vizualno oznaèene linije u + datoteku IME_DATOTEKE. + + 4. :r IME_DATOTEKE uèitava datoteku IME_DATOTEKE sa diska i stavlja + njen sadr¾aj liniju ispod kursora. + + 5. :r !dir uèitava ispis naredbe dir i postavlja sadr¾aj ispisa liniju + ispod kursora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.1: NAREDBA OTVORI + + + ** Pritisnite o kako bi otvorili liniju ispod kursora + i pre¹li u Insert mod. ** + + 1. Pomaknite kursor na sljedeæu liniju oznaèenu s --->. + + 2. Otipkajte malo o kako bi otvorili novu liniju ISPOD kursora + i pre¹li u Insert mod. + + 3. Otipkajte ne¹to teksta i nakon toga pritisnite + kako bi napustili Insert mod. + +---> Nakon ¹to pritisnete o kursor æe preæi u novu liniju u Insert mod. + + 4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O , + Poku¹ajte na donjoj liniji oznaèenoj s --->. + +---> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.2: NAREDBA DODAJ + + + ** Otipkajte a za dodavanje teksta IZA kursora. ** + + 1. Pomaknite kursor na poèetak sljedeæe linije oznaèene s --->. + + 2. Tipkajte e dok se kursor ne nalazi na kraju li . + + 3. Otipkajte a (malo) kako bi dodali tekst IZA kursora. + + 4. Dopunite rijeè kao ¹to je na liniji ispod. + Pritisnite za izlaz iz Insert moda. + + 5. Sa e prijeðite na sljedeæu nepotpunu rijeè i ponovite korake 3 i 4. + +---> Ova li omoguæava vje dodav teksta nekoj liniji. +---> Ova linija omoguæava vje¾banje dodavanja teksta nekoj liniji. + +NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina + razlika je u poziciji od koje æe se tekst ubacivati. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.3: DRUGI NAÈIN MIJENJANJA + + + ** Otipkajte veliko R kako bi zamijelili vi¹e od jednog znaka. ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + Pomaknite kursor na poèetak prvog xxx . + + 2. Pritisnite R i otipkajte broj koji je liniju ispod, + tako da zamijeni xxx . + + 3. Pritisnite za izlaz iz Replace moda. + Primijetite da je ostatak linije ostao nepromjenjen. + + 5. Ponovite korake kako bi zamijenili preostali xxx. + +---> Zbrajanje: 123 plus xxx je xxx. +---> Zbrajanje: 123 plus 456 je 579. + +NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, + svaki otipkani znak bri¹e veæ postojeæi. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA + + + ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** + + 1. Pomaknite kursor na liniju s ---> i postavite kursor nakon "a)". + + 2. Pokrenite Visual mod sa v i pomaknite kursor sve do ispred "prva". + + 3. Pritisnite y kako bi kopirali oznaèeni tekst. + + 4. Pomaknite kursor do kraja sljedeæe linije: j$ + + 5. Pritisnite p kako bi zalijepili tekst. Onda utipkajte: druga . + + 6. Koristite Visual mod kako bi oznaèili " linija.", kopirajte: y , kursor + postavite na kraj sljedeæe linije: j$ i ondje zalijepite tekst: p . + +---> a) ovo je prva linija. + b) + +NAPOMENA: mo¾ete koristiti y kao operator; yw kopira jednu rijeè. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.5: MIJENJANJE POSTAVKI + + + ** Postavka: naredbe tra¾enja i zamijene ne razlikuju VELIKA i mala slova ** + + 1. Potra¾ite 'razlika' tipkanjem: /razlika + Nekoliko puta ponovite pritiskanjem n . + + 2. Aktivirajte 'ic' (Ignore case) postavku: :set ic + + 3. Ponovno potra¾ite 'razlika' tipkanjem n + Primijetite da su sada i RAZLIKA i Razlika pronaðeni. + + 4. Aktivirajte 'hlsearch' i 'incsearch' postavke: :set hls is + + 5. Otipkajte naredbu tra¾enja i primijetite razlike: /razlika + + 6. Za deaktiviranje ic postavke koristite: :set noic + +NAPOMENA: Za neoznaèavanje pronaðenih izraza otipkajte: :nohlsearch +NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi + koristite \c u izrazu: /razlika\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6 SA®ETAK + + 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. + Pritisnite O za otvaranje linije IZNAD kursora. + + 2. Pritisnite a za unos teksta IZA kursora. + Pritisnite A za unos teksta na kraju linije. + + 3. Naredba e pomièe kursor na kraj rijeèi. + + 4. Operator y kopira tekst, p ga lijepi. + + 5. Tipkanjem velikog R Vim prelazi u Replace mod dok ne pritisnete . + + 6. Tipkanjem ":set xxx" aktivira postavku "xxx". Neke postavke su: + 'ic' 'ignorecase' ne razlikuje velika/mala slova pri tra¾enju + 'is' 'incsearch' tra¾i nedovr¹ene izraze + 'hls' 'hlsearch' oznaèi sve pronaðene izraze + Mo¾ete koristite dugo ili kratko ime postavke. + + 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7.1: DOBIVANJE POMOÆI + + + ** Koristite on-line sustav pomoæi ** + + Vim ima detaljan on-line sustav pomoæi. + Za poèetak, poku¹ajte jedno od sljedeæeg: + - pritisnite tipku (ako je va¹a tipkovnica ima) + - pritisnite tipku (ako je va¹a tipkovnica ima) + - utipkajte :help + + Proèitajte tekst u prozoru pomoæi kako bi ste se znali slu¾iti istom. + Tipkanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. + Otipkajte :q kako bi zatvorili prozor pomoæi. + + Pronaæi æe te pomoæ o bilo kojoj temi, tako da dodate upit samoj + ":help" naredbi. Poku¹ajte (ne zaboravite pritisnuti ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7.2: PRAVLJENJE SKRIPTE + + + ** Aktivirajte Vim moguænosti ** + + Vim ima mnogo vi¹e alata od Vi-ja, ali veæina njih nije aktivirana. + Kako bi mogli koristiti vi¹e moguænosti napravite "vimrc" datoteku. + + 1. Uredite "vimrc" datoteku. Ovo ovisi o va¹em sistemu: + :e ~/.vimrc za Unix + :e $VIM/_vimrc za MS-Windows + + 2. Sada uèitajte primjer sadr¾aja "vimrc" datoteke: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Saèuvajte datoteku sa: + :w + + Sljedeæeg puta kada pokrenete Vim, bojanje sintakse teksta biti æe + aktivirano. Sve va¹e postavke mo¾ete dodati u "vimrc" datoteku. + Za vi¹e informacija otipkajte :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7.3: AUTOMATSKO DOVR©AVANJE + + + ** Dovr¹avanje iz naredbene linije pomoæu CTRL-D i ** + + 1. Provjerite da Vim nije u Vi modu: :set nocp + + 2. Pogledajte koje datoteke postoje u direktoriju: :!ls or :!dir + + 3. Otipkajte poèetak naredbe: :e + + 4. Tipkajte CTRL-D i prikazati æe se lista naredbi koje zapoèinju sa "e". + + 5. Pritisnite i Vim æe dopuniti unos u naredbu ":edit". + + 6. Dodajte razmak i poèetak datoteke: :edit FIL + + 7. Pritisnite . Vim æe nadopuniti ime datoteke (ako je jedinstveno). + +NAPOMENA: Moguæe je dopuniti mnoge naredbe. Koristite CTRL-D i . + Naroèito je korisno za :help naredbe. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7 SA®ETAK + + + 1. Otipkajte :help ili pritisnite ili za pomoæ. + + 2. Otipkajte :help naredba kako bi dobili pomoæ za naredba . + + 3. Otipkajte CTRL-W CTRL-W za prelazak u drugi prozor + + 4. Otipkajte :q kako bi zatvorili prozor pomoæi + + 5. Napravite vimrc skriptu za podizanje kako bi u nju spremali + va¹e omiljene postavke. + + 6. Kada tipkate naredbu koja zapoèinje sa : + pritisnite CTRL-D kako bi vidjeli moguæe valjane vrijednosti. + Pritisnite kako bi odabrali jednu od njih. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Kraj. Cilj priruènika je da poka¾e kratak pregled Vim editora, tek toliko + da omoguæi njegovo kori¹tenje. Priruènik nije potpun jer Vim ima mnogo vi¹e + naredbi. Za vi¹e informacija: ":help user-manual". + + Za èitanje i kori¹tenje, preporuèamo: + Vim - Vi Improved - by Steve Oualline + Izdavaè: New Riders + Prva knjiga potpuno posveæena Vim-u. Vrlo korisna za poèetnike. + Sa mnogo primjera i slika. + Posjetite http://iccf-holland.org/click5.html + + Sljedeæa knjiga je ne¹to starija i vi¹e o Vi-u nego o Vim-u, preporuèamo: + Learning the Vi Editor - by Linda Lamb + Izdavaè: O'Reilly & Associates Inc. + Solidna knjiga, mo¾ete saznati skoro sve ¹to mo¾ete napraviti + u Vi-u. ©esto izdanje ima ne¹to informacija i o Vim-u. + + Ovaj priruènik su napisali: Michael C. Pierce i Robert K. Ware, + Colorado School of Mines koristeæi ideje Charles Smith, + Colorado State University. E-po¹ta: bware@mines.colorado.edu. + + Naknadne promjene napravio je Bram Moolenaar. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Preveo na hrvatski: Paul B. Mahol + Preinaka 1.42, Lipanj 2008 + + diff --git a/share/vim/vim74/tutor/tutor.hr.cp1250 b/share/vim/vim74/tutor/tutor.hr.cp1250 new file mode 100644 index 00000000..1956a8ab --- /dev/null +++ b/share/vim/vim74/tutor/tutor.hr.cp1250 @@ -0,0 +1,972 @@ +=============================================================================== += D o b r o d o š l i u VIM p r i r u è n i k - Verzija 1.7 = +=============================================================================== + + Vim je vrlo moæan editor koji ima mnogo naredbi, previše da bi ih + se svih ovdje spomenulo. Namjena priruènika je objasniti dovoljno + naredbi kako bi poèetnici znatno lakše koristili ovaj svestran editor. + + Približno vrijeme potrebno za uspješan završetak priruènika je oko + 30 minuta a ovisi o tome koliko æe te vremena odvojiti za vježbanje. + + UPOZORENJE: + Naredbe u ovom priruèniku æe promijeniti ovaj tekst. + Napravite kopiju ove datoteke kako bi ste na istoj vježbali + (ako ste pokrenuli "vimtutor" ovo je veæ kopija). + + Vrlo je važno primijetiti da je ovaj priruènik namijenjen za vježbanje. + Preciznije, morate izvršiti naredbe u Vim-u kako bi ste iste nauèili + pravilno koristiti. Ako samo èitate tekst, zaboraviti æe te naredbe! + + Ako je CapsLock ukljuèen ISKLJUÈITE ga. Pritiskajte tipku j kako + bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.1: POMICANJE KURSORA + + + ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano ** + ^ + k Savjet: h tipka je lijevo i pomièe kursor lijevo. + < h l > l tipka je desno i pomièe kursor desno. + j j izgleda kao strelica usmjerena dolje. + v + 1. Pomièite kursor po ekranu dok se ne naviknete na korištenje. + + 2. Držite tipku (j) pritisnutom. + Sada znate kako doæi do sljedeæe lekcije. + + 3. Koristeæi tipku j prijeðite na sljedeæu lekciju 1.2. + +NAPOMENA: Ako niste sigurni što ste zapravo pritisnuli uvijek koristite + tipku kako bi prešli u Normal mod i onda pokušajte ponovno. + +NAPOMENA: Kursorske tipke rade isto. Korištenje hjkl tipaka je znatno + brže, nakon što se jednom naviknete na njihovo korištenje. Stvarno! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.2: IZLAZ IZ VIM-a + + + !! UPOZORENJE: Prije izvoðenja bilo kojeg koraka, + proèitajte cijelu lekciju!! + + 1. Pritisnite tipku (Vim je sada u Normal modu). + + 2. Otipkajte: :q! . + Izlaz iz editora, GUBE se sve napravljene promjene. + + 3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula + ovaj priruènik: vimtutor + + 4. Ako ste upamtili ove korake, izvršite ih redom od 1 do 3 + kako bi ponovno pokrenuli editor. + +NAPOMENA: :q! poništava sve promjene koje ste napravili. + U sljedeæim lekcijama nauèit æe te kako promjene saèuvati. + + 5. Pomaknite kursor na Lekciju 1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.3: PROMJENA TEKSTA - BRISANJE + + + ** Pritisnite x za brisanje znaka pod kursorom. ** + + 1. Pomaknite kursor na liniju oznaèenu s --->. + + 2. Kako bi ste ispravili pogreške, pomièite kursor dok se + ne bude nalazio na slovu kojeg trebate izbrisati. + + 3. Pritisnite tipku x kako bi uklonili neželjeno slovo. + + 4. Ponovite korake od 2 do 4 dok ne ispravite sve pogreške. + +---> KKKravaa jee presskoèila mmjeseccc. + + 5. Nakon što ispravite liniju, prijeðite na lekciju 1.4. + +NAPOMENA: Koristeæi ovaj priruènik ne pokušavajte pamtiti + veæ uèite primjenom. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE + + + ** Pritisnite i za ubacivanje teksta ispred kursora. ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + + 2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite + kursor na prvi znak POSLIJE kojeg æe te utipkati potreban tekst. + + 3. Pritisnite i te utipkajte potrebne nadopune. + + 4. Nakon što ispravite pogrešku pritisnite kako bi vratili Vim + u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogreške. + +---> Nedje no teka od v lin. +---> Nedostaje nešto teksta od ove linije. + + 5. Prijeðite na sljedeæu lekciju. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE + + + ** Pritisnite A za dodavanje teksta. ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + Nije važno na kojem se slovu nalazi kursor na toj liniji. + + 2. Pritisnite A i napravite potrebne promjene. + + 3. Nakon što ste dodali tekst, pritisnite + za povratak u Normal mod. + + 4. Pomaknite kursor na drugu liniju oznaèenu s ---> + i ponovite korake 2 i 3 dok ne popravite tekst. + +---> Ima nešto teksta koji nedostaje n + Ima nešto teksta koji nedostaje na ovoj liniji. +---> Ima nešto teksta koji ne + Ima nešto teksta koji nedostaje baš ovdje. + + 5. Prijeðite na lekciju 1.6. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.6: PROMJENA DATOTEKE + + + ** Koristite :wq za spremanje teksta i napuštanje Vim-a. ** + + !! UPOZORENJE: Prije izvršavanja bilo kojeg koraka, proèitajte lekciju!! + + 1. Izaðite iz programa kao sto ste napravili u lekciji 1.2: :q! + + 2. Iz ljuske utipkajte sljedeæu naredbu: vim tutor + 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju + želite ureðivati. Koristite datoteku koju imate ovlasti mijenjati. + + 3. Ubacite i izbrišite tekst kao što ste to napravili u lekcijama prije. + + 4. Saèuvajte promjenjeni tekst i izaðite iz Vim-a: :wq + + 5. Ponovno pokrenite vimtutor i nastavite èitati sažetak koji sljedi. + + 6. Nakon sto proèitate gornje korake i u potpunosti ih razumijete: + izvršite ih. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1 SAŽETAK + + + 1. Kursor se pomièe strelicama ili pomoæu hjkl tipaka. + h (lijevo) j (dolje) k (gore) l (desno) + + 2. Pokretanje Vim-a iz ljuske: vim IME_DATOTEKE + + 3. Izlaz: :q! sve promjene su izgubljene. + ILI: :wq promjene su saèuvane. + + 4. Brisanje znaka na kojem se nalazi kursor: x + + 5. Ubacivanja ili dodavanje teksta: + i utipkajte tekst unos ispred kursora + A utipkajte tekst dodavanje na kraju linije + +NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i + prekida neželjenu ili djelomièno završenu naredbu. + +Nastavite èitati Lekciju 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.1: NAREDBE BRISANJA + + + ** Tipkajte dw za brisanje rijeèi. ** + + 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. + + 2. Pomaknite kursor na liniju oznaèenu s --->. + + 3. Pomaknite kursor na poèetak rijeèi koju treba izbrisati. + + 4. Otipkajte dw kako bi uklonili rijeè. + +NAPOMENA: Vim æe prikazati slovo d na zadnjoj liniji kad ga otipkate. + Vim èeka da otipkate w . Ako je prikazano neko drugo slovo, + krivo ste otipkali; pritisnite i pokušajte ponovno. + +---> Neke rijeèi smiješno ne pripadaju na papir ovoj reèenici. + + 5. Ponovite korake 3 i 4 dok ne ispravite reèenicu; + prijeðite na Lekciju 2.2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.2: JOŠ BRISANJA + + + ** Otipkajte d$ za brisanje znakova do kraja linije. ** + + 1. Pritisnite kako bi bili + sigurni da je Vim u Normal modu. + + 2. Pomaknite kursor na liniju oznaèenu s --->. + + 3. Pomaknite kursor do kraja ispravne reèenice + (POSLJE prve . ). + + 4. Otipkajte d$ + kako bi izbrisali sve znakove do kraja linije. + +---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. + + 5. Prijeðite na Lekciju 2.3 za bolje objašnjenje. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA + + + Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. + Oblik naredbe brisanja sa d operatorom je sljedeæi: + + d pokret + + Pri èemu je: + d - operator brisanja. + pokret - ono na èemu æe se operacija izvršavati (navedeno u nastavku). + + Kratka lista pokreta: + w - sve do poèetka sljedeæe rijeèi, NE UKLJUÈUJUÆI prvo slovo. + e - sve do kraja trenutaène rijeèi, UKLJUÈUJUÆI zadnje slovo. + $ - sve do kraje linije, UKLJUÈUJUÆI zadnje slovo. + + Tipkanjem de æe se brisati od kursora do kraja rijeèi. + +NAPOMENA: Pritiskajuæi samo pokrete dok ste u Normal modu bez operatora æe + pomicati kursor kao što je navedeno. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.4: KORIŠTENJE BROJANJA ZA POKRETE + + + ** Tipkanjem nekog broja prije pokreta, pokret se izvršava toliko puta. ** + + 1. Pomaknite kursor na liniju oznaèenu s --->. + + 2. Otipkajte 2w da pomaknete kursor dvije rijeèi naprijed. + + 3. Otipkajte 3e da pomaknete kursor na kraj treæe rijeèi naprijed. + + 4. Otipkajte 0 (nulu) da pomaknete kursor na poèetak linije. + + 5. Ponovite korake 2 i 3 s nekim drugim brojevima. + +---> Reèenica sa rijeèima po kojoj možete pomicati kursor. + + 6. Prijeðite na Lekciju 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.5: KORIŠTENJE BROJANJA ZA VEÆE BRISANJE + + + ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** + + U kombinaciji operatora brisanja i pokreta spomenutih iznad + ubacujete broj prije pokreta kako bi izbrisali više znakova: + + d broj pokret + + 1. Pomaknite kursor na prvo slovo u rijeèi sa VELIKIM SLOVIMA + oznaèenu s --->. + + 2. Otipkajte 2dw da izbrišete dvije rijeèi sa VELIKIM SLOVIMA + + 3. Ponovite korake 1 i 2 sa razlièitim brojevima da izbrišete + uzastopne rijeèi sa VELIKIM SLOVIMA sa samo jednom naredbom. + +---> ova ABCÈÆ DÐE linija FGHI JK LMN OP rijeèi je RSŠ TUVZŽ popravljena. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.6: OPERIRANJE NAD LINIJAMA + + + ** Otipkajte dd za brisanje cijele linije. ** + + Zbog uèestalosti brisanja cijelih linija, dizajneri Vi-a su odluèili da + je lakše brisati linije tipkanjem d dvaput. + + 1. Pomaknite kursor na drugu liniju u donjoj kitici. + 2. Otipkajte dd kako bi izbrisali liniju. + 3. Pomaknite kursor na èetvrtu liniju. + 4. Otipkajte 2dd kako bi izbrisali dvije linije. + +---> 1) Ruže su crvene, +---> 2) Plaža je super, +---> 3) Ljubice su plave, +---> 4) Imam auto, +---> 5) Satovi ukazuju vrijeme, +---> 6) Šeæer je sladak +---> 7) Kao i ti. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.7: NAREDBA PONIŠTENJA + + + ** Pritisnite u za poništenje zadnje naredbe, U za cijelu liniju. ** + + 1. Pomaknite kursor na liniju oznaèenu s ---> i postavite kursor na prvu + pogrešku. + 2. Otipkajte x kako bi izbrisali prvi neželjeni znak. + 3. Otipkajte u kako bi poništili zadnju izvršenu naredbu. + 4. Ovaj put ispravite sve pogreške na liniji koristeæi x naredbu. + 5. Sada utipkajte veliko U kako bi poništili sve promjene + na liniji, vraæajuæi je u prijašnje stanje. + 6. Sada utipkajte u nekoliko puta kako bi poništili U + i prijašnje naredbe. + 7. Sada utipkajte CTRL-R (držeæi CTRL tipku pritisnutom dok + ne pritisnete R) nekoliko puta kako bi vratili promjene + (poništili poništenja). + +---> Poopravite pogreške nna ovvoj liniji ii pooništiteee ih. + + 8. Vrlo korisne naredbe. Prijeðite na sažetak Lekcije 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2 SAŽETAK + + + 1. Brisanje od kursora do sljedeæe rijeèi: dw + 2. Brisanje od kursora do kraja linije: d$ + 3. Brisanje cijele linije: dd + + 4. Za ponavljanje pokreta prethodite mu broj: 2w + 5. Oblik naredbe mijenjanja: + operator [broj] pokret + gdje je: + operator - što napraviti, npr. d za brisanje + [broj] - neobavezan broj ponavljanja pokreta + pokret - kretanje po tekstu po kojem se operira, + kao što je: w (rijeè), $ (kraj linije), itd. + + 6. Postavljanje kursora na poèetak linije: 0 + + 7. Za poništenje prethodnih promjena, pritisnite: u (malo u) + Za poništenje svih promjena na liniji, pritisnite: U (veliko U) + Za vraæanja promjena, utipkajte: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.1: NAREDBA POSTAVI + + + ** p za unos prethodno izbrisanog teksta iza kursora. ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + + 2. Otipkajte dd kako bi izbrisali liniju i spremili je u Vim registar. + + 3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti. + + 4. Otipkajte p kako bi postavili liniju ispod kursora. + + 5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom + rasporedu. + +---> d) Možeš li i ti nauèiti? +---> b) Ljubice su plave, +---> c) Inteligencija je nauèena, +---> a) Ruže su crvene, + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.2: NAREDBA PROMJENE + + + ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + + 2. Pomaknite kursor tako da se nalazi na prvoj pogrešci. + + 3. Otipkajte r i nakon toga ispravan znak na tom mjestu. + + 4. Ponovite korake 2 i 3 sve dok prva + linije ne bude istovjetna drugoj. + +---> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! +---> Kada je ova linija tipkana, netko je pritiskao krive tipke! + + 5. Prijeðite na Lekciju 3.2. + +NAPOMENA: Prisjetite da trebate uèiti vježbanjem, ne pamæenjem. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.3: OPERATOR MIJENJANJA + + + ** Za mijenjanje do kraja rijeèi, istipkajte ce . ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + + 2. Postavite kursor na a u lackmb. + + 3. Otipkajte ce i ispravite rijeè (u ovom sluèaju otipkajte inija ). + + 4. Pritisnite i pomaknite kursor na sljedeæi znak + kojeg je potrebno ispraviti. + + 5. Ponovite korake 3 i 4 sve dok prva reèenica ne postane istovjetna + drugoj. + +---> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz. +---> Ova linija ima nekoliko rijeèi koje treba mijenjati. + +Primijetite da ce briše rijeè i postavlja Vim u Insert mod. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.4: JOŠ MIJENJANJA KORIŠTENJEM c + + + ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** + + 1. Operator mijenjanja se koristi na isti naèin kao i operator brisanja: + + c [broj] pokret + + 2. Pokreti su isti, npr: w (rijeè) i $ (kraj linije). + + 3. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + + 4. Pomaknite kursor na prvu pogrešku. + + 5. Otipkajte c$ i utipkajte ostatak linije tako da bude istovjetna + drugoj te pritisnite . + +---> Kraj ove linije treba pomoæ tako da izgleda kao linija ispod. +---> Kraj ove linije treba ispraviti korištenjem c$ naredbe. + +NAPOMENA: Možete koristiti Backspace za ispravljanje grešaka. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3 SAŽETAK + + + 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo + postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se + postavlja na liniju ispod kursora). + + 2. Za promjenu znaka na kojem se nalazi kursor, pritisnite r i nakon toga + željeni znak. + + 3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do + koje dovede pokret. tj. Otipkajte ce za mijenjanje od kursora do kraja + rijeèi, c$ za mijenjanje od kursora do kraja linije. + + 4. Oblik naredbe mijenjanja: + + c [broj] pokret + +Prijeðite na sljedeæu lekciju. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE + + ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. + Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** + +NAPOMENA: Proèitajte cijelu lekciju prije izvršenja bilo kojeg koraka!! + + 1. Držite Ctrl tipku pritisnutom i pritisnite g . Ukratko: CTRL-G. + Vim æe ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom + kursora u datoteci. Zapamtite broj linije za 3. korak. + +NAPOMENA: Možete vidjeti poziciju kursora u donjem desnom kutu ako + je postavka 'ruler' aktivirana (objašnjeno u 6. lekciji). + + 2. Pritisnite G za pomicanje kursora na kraj datoteke. + Otipkajte gg za pomicanje kursora na poèetak datoteke. + + 3. Otipkajte broj linije na kojoj ste bili maloprije i zatim G . Kursor + æe se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G. + + 4. Ako ste spremni, izvršite korake od 1 do 3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.2: NAREDBE TRAŽENJA + + ** Otipkajte / i nakon toga izraz kojeg želite tražiti. ** + + 1. U Normal modu otipkajte / znak. Primijetite da se znak + pojavio zajedno sa kursorom na dnu ekrana kao kod : naredbe. + + 2. Sada otipkajte 'grrrreška' . To je rijeè koju zapravo tražite. + + 3. Za ponovno traženje istog izraza, otipkajte n . + Za traženje istog izraza ali u suprotnom smjeru, otipkajte N . + + 4. Za traženje izraza unatrag, koristite ? umjesto / . + + 5. Za povratak na prethodnu poziciju koristite CTRL-O (držite Ctrl + pritisnutim dok ne pritisnete tipku o). Ponavljajte sve dok se ne + vratite na poèetak. CTRL-I slièno kao CTRL-O ali u suprotnom smjeru. + +---> "pogrrrreška" je pogrešno; umjesto pogrrrreška treba stajati pogreška. + +NAPOMENA: Ako se traženjem doðe do kraja datoteke nastavit æe se od njenog + poèetka osim ako je postavka 'wrapscan' deaktivirana. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.3: TRAŽENJE PRIPADAJUÆE ZAGRADE + + + ** Otipkajte % za pronalazak pripadajuæe ), ] ili } . ** + + 1. Postavite kursor na bilo koju od ( , [ ili { + otvorenih zagrada u liniji oznaèenoj s --->. + + 2. Otipkajte znak % . + + 3. Kursor æe se pomaknuti na pripadajuæu zatvorenu zagradu. + + 4. Otipkajte % kako bi pomakli kursor na drugu pripadajuæu zagradu. + + 5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite % naredbu. + +---> Linija ( testiranja obiènih ( [ uglatih ] i { vitièastih } zagrada.)) + + +NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajuæim zagradama! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.4: NAREDBE ZAMIJENE + + + ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** + + 1. Pomaknite kursor na liniju oznaèenu s --->. + + 2. Otipkajte :s/cvræè/cvrè . Primjetite da ova naredba zamjenjuje + samo prvi "cvræè" u liniji. + + 3. Otipkajte :s/cvræè/cvrè/g . Dodavanje g stavke znaèi da æe se naredba + izvršiti na cijeloj liniji, zamjenjivanjem svih "cvræè" u liniji. + +---> i cvræèi cvræèi cvræèak na èvoru crne smrèe. + + 4. Za zamjenu svih izraza u rasponu dviju linija, + otipkajte :#,#s/staro/novo/g #,# su brojevi linije datoteke na kojima + te izmeðu njih æe se izvršiti zamjena. + Otipkajte :%s/staro/novo/g za zamjenu svih izraza u cijeloj datoteci. + Otipkajte :%s/staro/novo/gc za pronalazak svakog izraza u datoteci i + potvrdu zamjene. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4 SAŽETAK + + + 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. + G postavlja kursor na zadnju liniju datoteke. + broj G postavlja kursor na broj liniju. + gg postavlja kursor na prvu liniju. + + 2. Tipkanje / sa izrazom traži UNAPRIJED taj izraz. + Tipkanje ? sa izrazom traži UNATRAG taj izraz. + Nakon naredbe traženja koristite n za pronalazak izraza u istom + smjeru, i N za pronalazak istog izraza ali u suprotnom smjeru. + CTRL-O vraæa kursor na prethodnu poziciju, CTRL-I na sljedeæu poziciju. + + 3. Tipkanje % dok je kursor na zagradi pomièe ga na pripadajuæu zagradu. + + 4. Za zamjenu prvog izraza staro za izraz novo :s/staro/novo + Za zamjenu svih izraza staro na cijeloj liniji :s/staro/novo/g + Za zamjenu svih izraza staro u rasponu linija #,# :#,#s/staro/novo/g + Za zamjenu u cijeloj datoteci :%s/staro/novo/g + Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.1: IZVRŠAVANJE VANJSKIH NAREDBI + + + ** Otipkajte :! sa vanjskom naredbom koju želite izvršiti. ** + + 1. Otipkajte poznatu naredbu : kako bi kursor premjestili na dno + ekrana. Time omoguæavate unos naredbe u naredbenoj liniji. + + 2. Otipkajte znak ! (uskliènik). Tako omoguæavate + izvršavanje naredbe vanjske ljuske. + + 3. Kao primjer otipkajte ls nakon ! te pritisnite . + Ovo æe prikazati sadržaj direktorija, kao da ste u ljusci. + Koristite :!dir ako :!ls ne radi. + +NAPOMENA: Moguæe je izvršavati bilo koju vanjsku naredbu na ovaj naèin, + zajedno sa njenim argumentima. + +NAPOMENA: Sve : naredbe se izvršavaju nakon što pritisnete + U daljnjem tekstu to neæe uvijek biti napomenuto. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.2: VIŠE O SPREMANJU DATOTEKA + + ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** + + 1. Otipkajte :!dir ili :!ls za pregled direktorija. + Veæ znate da morate pritisnuti na kraju tipkanja. + + 2. Izaberite ime datoteke koja još ne postoji, npr. TEST. + + 3. Otipkajte: :w TEST (gdje je TEST ime koje ste prethodno odabrali.) + + 4. Time æe te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST. + Za provjeru, otipkajte ponovno :!dir ili :!ls + za pregled direktorija. + +NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , + datoteka bi bila potpuna kopija ove datoteke u trenutku + kada ste je spremili. + + 5. Izbrišite datoteku tako da otipkate (MS-DOS): :!del TEST + ili (Unix): :!rm TEST + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.3: SPREMANJE OZNAÈENOG TEKSTA + + + ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** + + 1. Pomaknite kursor na ovu liniju. + + 2. Pritisnite v i pomaknite kursor pet linija ispod ove. + Primijetite promjenu, oznaèeni tekst se razlikuje od obiènog. + + 3. Pritisnite : znak. Na dnu ekrana pojavit æe se :'<,'> . + + 4. Otipkajte w TEST , pritom je TEST ime datoteke koja još ne postoji. + Provjerite da zaista piše :'<,'>w TEST + prije nego što pritisnite . + + 5. Vim æe spremiti oznaèeni tekst u TEST. Provjerite sa :!dir ili :!ls . + Nemojte je još brisati! Koristiti æe te je u sljedeæoj lekciji. + +NAPOMENA: Tipka v zapoèinje Vizualno oznaèavanje. Možete pomicati kursor + unaokolo kako bi mijenjali velièinu oznaèenog teksta. Možete + koristiti i operatore. Npr, d æe izbrisati oznaèeni tekst. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.4: UÈITAVANJE DATOTEKA + + + ** Za ubacivanje sadržaja datoteke, otipkajte :r IME_DATOTEKE ** + + 1. Postavite kursor iznad ove linije. + +NAPOMENA: Nakon što izvršite 2. korak vidjeti æe te tekst iz Lekcije 5.3. + Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. + + 2. Uèitajte vašu TEST datoteku koristeæi naredbu :r TEST + gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji. + Sadržaj uèitane datoteke je ubaèen liniju ispod kursora. + + 3. Kako bi provjerili da je datoteka uèitana, vratite kursor unatrag i + primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. + +NAPOMENA: Možete takoðer uèitati ispis vanjske naredbe. Npr, :r !ls + æe uèitati ispis ls naredbe i postaviti ispis liniju ispod + kursora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5 SAŽETAK + + + 1. :!naredba izvršava vanjsku naredbu. + + Korisni primjeri: + (MS-DOS) (Unix) + :!dir :!ls - pregled direktorija. + :!del DATOTEKA :!rm DATOTEKA - briše datoteku DATOTEKA. + + 2. :w DATOTEKA zapisuje trenutaènu datoteku na disk sa imenom DATOTEKA. + + 3. v pokret :w IME_DATOTEKE sprema vizualno oznaèene linije u + datoteku IME_DATOTEKE. + + 4. :r IME_DATOTEKE uèitava datoteku IME_DATOTEKE sa diska i stavlja + njen sadržaj liniju ispod kursora. + + 5. :r !dir uèitava ispis naredbe dir i postavlja sadržaj ispisa liniju + ispod kursora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.1: NAREDBA OTVORI + + + ** Pritisnite o kako bi otvorili liniju ispod kursora + i prešli u Insert mod. ** + + 1. Pomaknite kursor na sljedeæu liniju oznaèenu s --->. + + 2. Otipkajte malo o kako bi otvorili novu liniju ISPOD kursora + i prešli u Insert mod. + + 3. Otipkajte nešto teksta i nakon toga pritisnite + kako bi napustili Insert mod. + +---> Nakon što pritisnete o kursor æe preæi u novu liniju u Insert mod. + + 4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O , + Pokušajte na donjoj liniji oznaèenoj s --->. + +---> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.2: NAREDBA DODAJ + + + ** Otipkajte a za dodavanje teksta IZA kursora. ** + + 1. Pomaknite kursor na poèetak sljedeæe linije oznaèene s --->. + + 2. Tipkajte e dok se kursor ne nalazi na kraju li . + + 3. Otipkajte a (malo) kako bi dodali tekst IZA kursora. + + 4. Dopunite rijeè kao što je na liniji ispod. + Pritisnite za izlaz iz Insert moda. + + 5. Sa e prijeðite na sljedeæu nepotpunu rijeè i ponovite korake 3 i 4. + +---> Ova li omoguæava vje dodav teksta nekoj liniji. +---> Ova linija omoguæava vježbanje dodavanja teksta nekoj liniji. + +NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina + razlika je u poziciji od koje æe se tekst ubacivati. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.3: DRUGI NAÈIN MIJENJANJA + + + ** Otipkajte veliko R kako bi zamijelili više od jednog znaka. ** + + 1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->. + Pomaknite kursor na poèetak prvog xxx . + + 2. Pritisnite R i otipkajte broj koji je liniju ispod, + tako da zamijeni xxx . + + 3. Pritisnite za izlaz iz Replace moda. + Primijetite da je ostatak linije ostao nepromjenjen. + + 5. Ponovite korake kako bi zamijenili preostali xxx. + +---> Zbrajanje: 123 plus xxx je xxx. +---> Zbrajanje: 123 plus 456 je 579. + +NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, + svaki otipkani znak briše veæ postojeæi. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA + + + ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** + + 1. Pomaknite kursor na liniju s ---> i postavite kursor nakon "a)". + + 2. Pokrenite Visual mod sa v i pomaknite kursor sve do ispred "prva". + + 3. Pritisnite y kako bi kopirali oznaèeni tekst. + + 4. Pomaknite kursor do kraja sljedeæe linije: j$ + + 5. Pritisnite p kako bi zalijepili tekst. Onda utipkajte: druga . + + 6. Koristite Visual mod kako bi oznaèili " linija.", kopirajte: y , kursor + postavite na kraj sljedeæe linije: j$ i ondje zalijepite tekst: p . + +---> a) ovo je prva linija. + b) + +NAPOMENA: možete koristiti y kao operator; yw kopira jednu rijeè. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.5: MIJENJANJE POSTAVKI + + + ** Postavka: naredbe traženja i zamijene ne razlikuju VELIKA i mala slova ** + + 1. Potražite 'razlika' tipkanjem: /razlika + Nekoliko puta ponovite pritiskanjem n . + + 2. Aktivirajte 'ic' (Ignore case) postavku: :set ic + + 3. Ponovno potražite 'razlika' tipkanjem n + Primijetite da su sada i RAZLIKA i Razlika pronaðeni. + + 4. Aktivirajte 'hlsearch' i 'incsearch' postavke: :set hls is + + 5. Otipkajte naredbu traženja i primijetite razlike: /razlika + + 6. Za deaktiviranje ic postavke koristite: :set noic + +NAPOMENA: Za neoznaèavanje pronaðenih izraza otipkajte: :nohlsearch +NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi + koristite \c u izrazu: /razlika\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6 SAŽETAK + + 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. + Pritisnite O za otvaranje linije IZNAD kursora. + + 2. Pritisnite a za unos teksta IZA kursora. + Pritisnite A za unos teksta na kraju linije. + + 3. Naredba e pomièe kursor na kraj rijeèi. + + 4. Operator y kopira tekst, p ga lijepi. + + 5. Tipkanjem velikog R Vim prelazi u Replace mod dok ne pritisnete . + + 6. Tipkanjem ":set xxx" aktivira postavku "xxx". Neke postavke su: + 'ic' 'ignorecase' ne razlikuje velika/mala slova pri traženju + 'is' 'incsearch' traži nedovršene izraze + 'hls' 'hlsearch' oznaèi sve pronaðene izraze + Možete koristite dugo ili kratko ime postavke. + + 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7.1: DOBIVANJE POMOÆI + + + ** Koristite on-line sustav pomoæi ** + + Vim ima detaljan on-line sustav pomoæi. + Za poèetak, pokušajte jedno od sljedeæeg: + - pritisnite tipku (ako je vaša tipkovnica ima) + - pritisnite tipku (ako je vaša tipkovnica ima) + - utipkajte :help + + Proèitajte tekst u prozoru pomoæi kako bi ste se znali služiti istom. + Tipkanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. + Otipkajte :q kako bi zatvorili prozor pomoæi. + + Pronaæi æe te pomoæ o bilo kojoj temi, tako da dodate upit samoj + ":help" naredbi. Pokušajte (ne zaboravite pritisnuti ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7.2: PRAVLJENJE SKRIPTE + + + ** Aktivirajte Vim moguænosti ** + + Vim ima mnogo više alata od Vi-ja, ali veæina njih nije aktivirana. + Kako bi mogli koristiti više moguænosti napravite "vimrc" datoteku. + + 1. Uredite "vimrc" datoteku. Ovo ovisi o vašem sistemu: + :e ~/.vimrc za Unix + :e $VIM/_vimrc za MS-Windows + + 2. Sada uèitajte primjer sadržaja "vimrc" datoteke: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Saèuvajte datoteku sa: + :w + + Sljedeæeg puta kada pokrenete Vim, bojanje sintakse teksta biti æe + aktivirano. Sve vaše postavke možete dodati u "vimrc" datoteku. + Za više informacija otipkajte :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7.3: AUTOMATSKO DOVRŠAVANJE + + + ** Dovršavanje iz naredbene linije pomoæu CTRL-D i ** + + 1. Provjerite da Vim nije u Vi modu: :set nocp + + 2. Pogledajte koje datoteke postoje u direktoriju: :!ls or :!dir + + 3. Otipkajte poèetak naredbe: :e + + 4. Tipkajte CTRL-D i prikazati æe se lista naredbi koje zapoèinju sa "e". + + 5. Pritisnite i Vim æe dopuniti unos u naredbu ":edit". + + 6. Dodajte razmak i poèetak datoteke: :edit FIL + + 7. Pritisnite . Vim æe nadopuniti ime datoteke (ako je jedinstveno). + +NAPOMENA: Moguæe je dopuniti mnoge naredbe. Koristite CTRL-D i . + Naroèito je korisno za :help naredbe. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7 SAŽETAK + + + 1. Otipkajte :help ili pritisnite ili za pomoæ. + + 2. Otipkajte :help naredba kako bi dobili pomoæ za naredba . + + 3. Otipkajte CTRL-W CTRL-W za prelazak u drugi prozor + + 4. Otipkajte :q kako bi zatvorili prozor pomoæi + + 5. Napravite vimrc skriptu za podizanje kako bi u nju spremali + vaše omiljene postavke. + + 6. Kada tipkate naredbu koja zapoèinje sa : + pritisnite CTRL-D kako bi vidjeli moguæe valjane vrijednosti. + Pritisnite kako bi odabrali jednu od njih. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Kraj. Cilj priruènika je da pokaže kratak pregled Vim editora, tek toliko + da omoguæi njegovo korištenje. Priruènik nije potpun jer Vim ima mnogo više + naredbi. Za više informacija: ":help user-manual". + + Za èitanje i korištenje, preporuèamo: + Vim - Vi Improved - by Steve Oualline + Izdavaè: New Riders + Prva knjiga potpuno posveæena Vim-u. Vrlo korisna za poèetnike. + Sa mnogo primjera i slika. + Posjetite http://iccf-holland.org/click5.html + + Sljedeæa knjiga je nešto starija i više o Vi-u nego o Vim-u, preporuèamo: + Learning the Vi Editor - by Linda Lamb + Izdavaè: O'Reilly & Associates Inc. + Solidna knjiga, možete saznati skoro sve što možete napraviti + u Vi-u. Šesto izdanje ima nešto informacija i o Vim-u. + + Ovaj priruènik su napisali: Michael C. Pierce i Robert K. Ware, + Colorado School of Mines koristeæi ideje Charles Smith, + Colorado State University. E-pošta: bware@mines.colorado.edu. + + Naknadne promjene napravio je Bram Moolenaar. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Preveo na hrvatski: Paul B. Mahol + Preinaka 1.42, Lipanj 2008 + + diff --git a/share/vim/vim74/tutor/tutor.hr.utf-8 b/share/vim/vim74/tutor/tutor.hr.utf-8 new file mode 100644 index 00000000..79838ec7 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.hr.utf-8 @@ -0,0 +1,972 @@ +=============================================================================== += D o b r o d o š l i u VIM p r i r u č n i k - Verzija 1.7 = +=============================================================================== + + Vim je vrlo moćan editor koji ima mnogo naredbi, previše da bi ih + se svih ovdje spomenulo. Namjena priručnika je objasniti dovoljno + naredbi kako bi početnici znatno lakše koristili ovaj svestran editor. + + Približno vrijeme potrebno za uspješan završetak priručnika je oko + 30 minuta a ovisi o tome koliko će te vremena odvojiti za vježbanje. + + UPOZORENJE: + Naredbe u ovom priručniku će promijeniti ovaj tekst. + Napravite kopiju ove datoteke kako bi ste na istoj vježbali + (ako ste pokrenuli "vimtutor" ovo je već kopija). + + Vrlo je važno primijetiti da je ovaj priručnik namijenjen za vježbanje. + Preciznije, morate izvršiti naredbe u Vim-u kako bi ste iste naučili + pravilno koristiti. Ako samo čitate tekst, zaboraviti će te naredbe! + + Ako je CapsLock uključen ISKLJUČITE ga. Pritiskajte tipku j kako + bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.1: POMICANJE KURSORA + + + ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano ** + ^ + k Savjet: h tipka je lijevo i pomiče kursor lijevo. + < h l > l tipka je desno i pomiče kursor desno. + j j izgleda kao strelica usmjerena dolje. + v + 1. Pomičite kursor po ekranu dok se ne naviknete na korištenje. + + 2. Držite tipku (j) pritisnutom. + Sada znate kako doći do sljedeće lekcije. + + 3. Koristeći tipku j prijeđite na sljedeću lekciju 1.2. + +NAPOMENA: Ako niste sigurni što ste zapravo pritisnuli uvijek koristite + tipku kako bi prešli u Normal mod i onda pokušajte ponovno. + +NAPOMENA: Kursorske tipke rade isto. Korištenje hjkl tipaka je znatno + brže, nakon što se jednom naviknete na njihovo korištenje. Stvarno! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.2: IZLAZ IZ VIM-a + + + !! UPOZORENJE: Prije izvođenja bilo kojeg koraka, + pročitajte cijelu lekciju!! + + 1. Pritisnite tipku (Vim je sada u Normal modu). + + 2. Otipkajte: :q! . + Izlaz iz editora, GUBE se sve napravljene promjene. + + 3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula + ovaj priručnik: vimtutor + + 4. Ako ste upamtili ove korake, izvršite ih redom od 1 do 3 + kako bi ponovno pokrenuli editor. + +NAPOMENA: :q! poništava sve promjene koje ste napravili. + U sljedećim lekcijama naučit će te kako promjene sačuvati. + + 5. Pomaknite kursor na Lekciju 1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.3: PROMJENA TEKSTA - BRISANJE + + + ** Pritisnite x za brisanje znaka pod kursorom. ** + + 1. Pomaknite kursor na liniju označenu s --->. + + 2. Kako bi ste ispravili pogreške, pomičite kursor dok se + ne bude nalazio na slovu kojeg trebate izbrisati. + + 3. Pritisnite tipku x kako bi uklonili neželjeno slovo. + + 4. Ponovite korake od 2 do 4 dok ne ispravite sve pogreške. + +---> KKKravaa jee presskočila mmjeseccc. + + 5. Nakon što ispravite liniju, prijeđite na lekciju 1.4. + +NAPOMENA: Koristeći ovaj priručnik ne pokušavajte pamtiti + već učite primjenom. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE + + + ** Pritisnite i za ubacivanje teksta ispred kursora. ** + + 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. + + 2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite + kursor na prvi znak POSLIJE kojeg će te utipkati potreban tekst. + + 3. Pritisnite i te utipkajte potrebne nadopune. + + 4. Nakon što ispravite pogrešku pritisnite kako bi vratili Vim + u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogreške. + +---> Nedje no teka od v lin. +---> Nedostaje nešto teksta od ove linije. + + 5. Prijeđite na sljedeću lekciju. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE + + + ** Pritisnite A za dodavanje teksta. ** + + 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. + Nije važno na kojem se slovu nalazi kursor na toj liniji. + + 2. Pritisnite A i napravite potrebne promjene. + + 3. Nakon što ste dodali tekst, pritisnite + za povratak u Normal mod. + + 4. Pomaknite kursor na drugu liniju označenu s ---> + i ponovite korake 2 i 3 dok ne popravite tekst. + +---> Ima nešto teksta koji nedostaje n + Ima nešto teksta koji nedostaje na ovoj liniji. +---> Ima nešto teksta koji ne + Ima nešto teksta koji nedostaje baš ovdje. + + 5. Prijeđite na lekciju 1.6. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1.6: PROMJENA DATOTEKE + + + ** Koristite :wq za spremanje teksta i napuštanje Vim-a. ** + + !! UPOZORENJE: Prije izvršavanja bilo kojeg koraka, pročitajte lekciju!! + + 1. Izađite iz programa kao sto ste napravili u lekciji 1.2: :q! + + 2. Iz ljuske utipkajte sljedeću naredbu: vim tutor + 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju + želite uređivati. Koristite datoteku koju imate ovlasti mijenjati. + + 3. Ubacite i izbrišite tekst kao što ste to napravili u lekcijama prije. + + 4. Sačuvajte promjenjeni tekst i izađite iz Vim-a: :wq + + 5. Ponovno pokrenite vimtutor i nastavite čitati sažetak koji sljedi. + + 6. Nakon sto pročitate gornje korake i u potpunosti ih razumijete: + izvršite ih. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 1 SAŽETAK + + + 1. Kursor se pomiče strelicama ili pomoću hjkl tipaka. + h (lijevo) j (dolje) k (gore) l (desno) + + 2. Pokretanje Vim-a iz ljuske: vim IME_DATOTEKE + + 3. Izlaz: :q! sve promjene su izgubljene. + ILI: :wq promjene su sačuvane. + + 4. Brisanje znaka na kojem se nalazi kursor: x + + 5. Ubacivanja ili dodavanje teksta: + i utipkajte tekst unos ispred kursora + A utipkajte tekst dodavanje na kraju linije + +NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i + prekida neželjenu ili djelomično završenu naredbu. + +Nastavite čitati Lekciju 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.1: NAREDBE BRISANJA + + + ** Tipkajte dw za brisanje riječi. ** + + 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. + + 2. Pomaknite kursor na liniju označenu s --->. + + 3. Pomaknite kursor na početak riječi koju treba izbrisati. + + 4. Otipkajte dw kako bi uklonili riječ. + +NAPOMENA: Vim će prikazati slovo d na zadnjoj liniji kad ga otipkate. + Vim čeka da otipkate w . Ako je prikazano neko drugo slovo, + krivo ste otipkali; pritisnite i pokušajte ponovno. + +---> Neke riječi smiješno ne pripadaju na papir ovoj rečenici. + + 5. Ponovite korake 3 i 4 dok ne ispravite rečenicu; + prijeđite na Lekciju 2.2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.2: JOŠ BRISANJA + + + ** Otipkajte d$ za brisanje znakova do kraja linije. ** + + 1. Pritisnite kako bi bili + sigurni da je Vim u Normal modu. + + 2. Pomaknite kursor na liniju označenu s --->. + + 3. Pomaknite kursor do kraja ispravne rečenice + (POSLJE prve . ). + + 4. Otipkajte d$ + kako bi izbrisali sve znakove do kraja linije. + +---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. + + 5. Prijeđite na Lekciju 2.3 za bolje objašnjenje. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA + + + Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. + Oblik naredbe brisanja sa d operatorom je sljedeći: + + d pokret + + Pri čemu je: + d - operator brisanja. + pokret - ono na čemu će se operacija izvršavati (navedeno u nastavku). + + Kratka lista pokreta: + w - sve do početka sljedeće riječi, NE UKLJUČUJUĆI prvo slovo. + e - sve do kraja trenutačne riječi, UKLJUČUJUĆI zadnje slovo. + $ - sve do kraje linije, UKLJUČUJUĆI zadnje slovo. + + Tipkanjem de će se brisati od kursora do kraja riječi. + +NAPOMENA: Pritiskajući samo pokrete dok ste u Normal modu bez operatora će + pomicati kursor kao što je navedeno. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.4: KORIŠTENJE BROJANJA ZA POKRETE + + + ** Tipkanjem nekog broja prije pokreta, pokret se izvršava toliko puta. ** + + 1. Pomaknite kursor na liniju označenu s --->. + + 2. Otipkajte 2w da pomaknete kursor dvije riječi naprijed. + + 3. Otipkajte 3e da pomaknete kursor na kraj treće riječi naprijed. + + 4. Otipkajte 0 (nulu) da pomaknete kursor na početak linije. + + 5. Ponovite korake 2 i 3 s nekim drugim brojevima. + +---> Rečenica sa riječima po kojoj možete pomicati kursor. + + 6. Prijeđite na Lekciju 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.5: KORIŠTENJE BROJANJA ZA VEĆE BRISANJE + + + ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** + + U kombinaciji operatora brisanja i pokreta spomenutih iznad + ubacujete broj prije pokreta kako bi izbrisali više znakova: + + d broj pokret + + 1. Pomaknite kursor na prvo slovo u riječi sa VELIKIM SLOVIMA + označenu s --->. + + 2. Otipkajte 2dw da izbrišete dvije riječi sa VELIKIM SLOVIMA + + 3. Ponovite korake 1 i 2 sa različitim brojevima da izbrišete + uzastopne riječi sa VELIKIM SLOVIMA sa samo jednom naredbom. + +---> ova ABCČĆ DĐE linija FGHI JK LMN OP riječi je RSŠ TUVZŽ popravljena. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.6: OPERIRANJE NAD LINIJAMA + + + ** Otipkajte dd za brisanje cijele linije. ** + + Zbog učestalosti brisanja cijelih linija, dizajneri Vi-a su odlučili da + je lakše brisati linije tipkanjem d dvaput. + + 1. Pomaknite kursor na drugu liniju u donjoj kitici. + 2. Otipkajte dd kako bi izbrisali liniju. + 3. Pomaknite kursor na četvrtu liniju. + 4. Otipkajte 2dd kako bi izbrisali dvije linije. + +---> 1) Ruže su crvene, +---> 2) Plaža je super, +---> 3) Ljubice su plave, +---> 4) Imam auto, +---> 5) Satovi ukazuju vrijeme, +---> 6) Šećer je sladak +---> 7) Kao i ti. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2.7: NAREDBA PONIŠTENJA + + + ** Pritisnite u za poništenje zadnje naredbe, U za cijelu liniju. ** + + 1. Pomaknite kursor na liniju označenu s ---> i postavite kursor na prvu + pogrešku. + 2. Otipkajte x kako bi izbrisali prvi neželjeni znak. + 3. Otipkajte u kako bi poništili zadnju izvršenu naredbu. + 4. Ovaj put ispravite sve pogreške na liniji koristeći x naredbu. + 5. Sada utipkajte veliko U kako bi poništili sve promjene + na liniji, vraćajući je u prijašnje stanje. + 6. Sada utipkajte u nekoliko puta kako bi poništili U + i prijašnje naredbe. + 7. Sada utipkajte CTRL-R (držeći CTRL tipku pritisnutom dok + ne pritisnete R) nekoliko puta kako bi vratili promjene + (poništili poništenja). + +---> Poopravite pogreške nna ovvoj liniji ii pooništiteee ih. + + 8. Vrlo korisne naredbe. Prijeđite na sažetak Lekcije 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 2 SAŽETAK + + + 1. Brisanje od kursora do sljedeće riječi: dw + 2. Brisanje od kursora do kraja linije: d$ + 3. Brisanje cijele linije: dd + + 4. Za ponavljanje pokreta prethodite mu broj: 2w + 5. Oblik naredbe mijenjanja: + operator [broj] pokret + gdje je: + operator - što napraviti, npr. d za brisanje + [broj] - neobavezan broj ponavljanja pokreta + pokret - kretanje po tekstu po kojem se operira, + kao što je: w (riječ), $ (kraj linije), itd. + + 6. Postavljanje kursora na početak linije: 0 + + 7. Za poništenje prethodnih promjena, pritisnite: u (malo u) + Za poništenje svih promjena na liniji, pritisnite: U (veliko U) + Za vraćanja promjena, utipkajte: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.1: NAREDBA POSTAVI + + + ** p za unos prethodno izbrisanog teksta iza kursora. ** + + 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. + + 2. Otipkajte dd kako bi izbrisali liniju i spremili je u Vim registar. + + 3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti. + + 4. Otipkajte p kako bi postavili liniju ispod kursora. + + 5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom + rasporedu. + +---> d) Možeš li i ti naučiti? +---> b) Ljubice su plave, +---> c) Inteligencija je naučena, +---> a) Ruže su crvene, + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.2: NAREDBA PROMJENE + + + ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** + + 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. + + 2. Pomaknite kursor tako da se nalazi na prvoj pogrešci. + + 3. Otipkajte r i nakon toga ispravan znak na tom mjestu. + + 4. Ponovite korake 2 i 3 sve dok prva + linije ne bude istovjetna drugoj. + +---> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! +---> Kada je ova linija tipkana, netko je pritiskao krive tipke! + + 5. Prijeđite na Lekciju 3.2. + +NAPOMENA: Prisjetite da trebate učiti vježbanjem, ne pamćenjem. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.3: OPERATOR MIJENJANJA + + + ** Za mijenjanje do kraja riječi, istipkajte ce . ** + + 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. + + 2. Postavite kursor na a u lackmb. + + 3. Otipkajte ce i ispravite riječ (u ovom slučaju otipkajte inija ). + + 4. Pritisnite i pomaknite kursor na sljedeći znak + kojeg je potrebno ispraviti. + + 5. Ponovite korake 3 i 4 sve dok prva rečenica ne postane istovjetna + drugoj. + +---> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz. +---> Ova linija ima nekoliko riječi koje treba mijenjati. + +Primijetite da ce briše riječ i postavlja Vim u Insert mod. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3.4: JOŠ MIJENJANJA KORIŠTENJEM c + + + ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** + + 1. Operator mijenjanja se koristi na isti način kao i operator brisanja: + + c [broj] pokret + + 2. Pokreti su isti, npr: w (riječ) i $ (kraj linije). + + 3. Pomaknite kursor na prvu sljedeću liniju označenu s --->. + + 4. Pomaknite kursor na prvu pogrešku. + + 5. Otipkajte c$ i utipkajte ostatak linije tako da bude istovjetna + drugoj te pritisnite . + +---> Kraj ove linije treba pomoć tako da izgleda kao linija ispod. +---> Kraj ove linije treba ispraviti korištenjem c$ naredbe. + +NAPOMENA: Možete koristiti Backspace za ispravljanje grešaka. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 3 SAŽETAK + + + 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo + postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se + postavlja na liniju ispod kursora). + + 2. Za promjenu znaka na kojem se nalazi kursor, pritisnite r i nakon toga + željeni znak. + + 3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do + koje dovede pokret. tj. Otipkajte ce za mijenjanje od kursora do kraja + riječi, c$ za mijenjanje od kursora do kraja linije. + + 4. Oblik naredbe mijenjanja: + + c [broj] pokret + +Prijeđite na sljedeću lekciju. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE + + ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. + Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** + +NAPOMENA: Pročitajte cijelu lekciju prije izvršenja bilo kojeg koraka!! + + 1. Držite Ctrl tipku pritisnutom i pritisnite g . Ukratko: CTRL-G. + Vim će ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom + kursora u datoteci. Zapamtite broj linije za 3. korak. + +NAPOMENA: Možete vidjeti poziciju kursora u donjem desnom kutu ako + je postavka 'ruler' aktivirana (objašnjeno u 6. lekciji). + + 2. Pritisnite G za pomicanje kursora na kraj datoteke. + Otipkajte gg za pomicanje kursora na početak datoteke. + + 3. Otipkajte broj linije na kojoj ste bili maloprije i zatim G . Kursor + će se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G. + + 4. Ako ste spremni, izvršite korake od 1 do 3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.2: NAREDBE TRAŽENJA + + ** Otipkajte / i nakon toga izraz kojeg želite tražiti. ** + + 1. U Normal modu otipkajte / znak. Primijetite da se znak + pojavio zajedno sa kursorom na dnu ekrana kao kod : naredbe. + + 2. Sada otipkajte 'grrrreška' . To je riječ koju zapravo tražite. + + 3. Za ponovno traženje istog izraza, otipkajte n . + Za traženje istog izraza ali u suprotnom smjeru, otipkajte N . + + 4. Za traženje izraza unatrag, koristite ? umjesto / . + + 5. Za povratak na prethodnu poziciju koristite CTRL-O (držite Ctrl + pritisnutim dok ne pritisnete tipku o). Ponavljajte sve dok se ne + vratite na početak. CTRL-I slično kao CTRL-O ali u suprotnom smjeru. + +---> "pogrrrreška" je pogrešno; umjesto pogrrrreška treba stajati pogreška. + +NAPOMENA: Ako se traženjem dođe do kraja datoteke nastavit će se od njenog + početka osim ako je postavka 'wrapscan' deaktivirana. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.3: TRAŽENJE PRIPADAJUĆE ZAGRADE + + + ** Otipkajte % za pronalazak pripadajuće ), ] ili } . ** + + 1. Postavite kursor na bilo koju od ( , [ ili { + otvorenih zagrada u liniji označenoj s --->. + + 2. Otipkajte znak % . + + 3. Kursor će se pomaknuti na pripadajuću zatvorenu zagradu. + + 4. Otipkajte % kako bi pomakli kursor na drugu pripadajuću zagradu. + + 5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite % naredbu. + +---> Linija ( testiranja običnih ( [ uglatih ] i { vitičastih } zagrada.)) + + +NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajućim zagradama! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4.4: NAREDBE ZAMIJENE + + + ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** + + 1. Pomaknite kursor na liniju označenu s --->. + + 2. Otipkajte :s/cvrćč/cvrč . Primjetite da ova naredba zamjenjuje + samo prvi "cvrćč" u liniji. + + 3. Otipkajte :s/cvrćč/cvrč/g . Dodavanje g stavke znači da će se naredba + izvršiti na cijeloj liniji, zamjenjivanjem svih "cvrćč" u liniji. + +---> i cvrćči cvrćči cvrćčak na čvoru crne smrče. + + 4. Za zamjenu svih izraza u rasponu dviju linija, + otipkajte :#,#s/staro/novo/g #,# su brojevi linije datoteke na kojima + te između njih će se izvršiti zamjena. + Otipkajte :%s/staro/novo/g za zamjenu svih izraza u cijeloj datoteci. + Otipkajte :%s/staro/novo/gc za pronalazak svakog izraza u datoteci i + potvrdu zamjene. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 4 SAŽETAK + + + 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. + G postavlja kursor na zadnju liniju datoteke. + broj G postavlja kursor na broj liniju. + gg postavlja kursor na prvu liniju. + + 2. Tipkanje / sa izrazom traži UNAPRIJED taj izraz. + Tipkanje ? sa izrazom traži UNATRAG taj izraz. + Nakon naredbe traženja koristite n za pronalazak izraza u istom + smjeru, i N za pronalazak istog izraza ali u suprotnom smjeru. + CTRL-O vraća kursor na prethodnu poziciju, CTRL-I na sljedeću poziciju. + + 3. Tipkanje % dok je kursor na zagradi pomiče ga na pripadajuću zagradu. + + 4. Za zamjenu prvog izraza staro za izraz novo :s/staro/novo + Za zamjenu svih izraza staro na cijeloj liniji :s/staro/novo/g + Za zamjenu svih izraza staro u rasponu linija #,# :#,#s/staro/novo/g + Za zamjenu u cijeloj datoteci :%s/staro/novo/g + Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.1: IZVRŠAVANJE VANJSKIH NAREDBI + + + ** Otipkajte :! sa vanjskom naredbom koju želite izvršiti. ** + + 1. Otipkajte poznatu naredbu : kako bi kursor premjestili na dno + ekrana. Time omogućavate unos naredbe u naredbenoj liniji. + + 2. Otipkajte znak ! (uskličnik). Tako omogućavate + izvršavanje naredbe vanjske ljuske. + + 3. Kao primjer otipkajte ls nakon ! te pritisnite . + Ovo će prikazati sadržaj direktorija, kao da ste u ljusci. + Koristite :!dir ako :!ls ne radi. + +NAPOMENA: Moguće je izvršavati bilo koju vanjsku naredbu na ovaj način, + zajedno sa njenim argumentima. + +NAPOMENA: Sve : naredbe se izvršavaju nakon što pritisnete + U daljnjem tekstu to neće uvijek biti napomenuto. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.2: VIŠE O SPREMANJU DATOTEKA + + ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** + + 1. Otipkajte :!dir ili :!ls za pregled direktorija. + Već znate da morate pritisnuti na kraju tipkanja. + + 2. Izaberite ime datoteke koja još ne postoji, npr. TEST. + + 3. Otipkajte: :w TEST (gdje je TEST ime koje ste prethodno odabrali.) + + 4. Time će te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST. + Za provjeru, otipkajte ponovno :!dir ili :!ls + za pregled direktorija. + +NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , + datoteka bi bila potpuna kopija ove datoteke u trenutku + kada ste je spremili. + + 5. Izbrišite datoteku tako da otipkate (MS-DOS): :!del TEST + ili (Unix): :!rm TEST + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.3: SPREMANJE OZNAČENOG TEKSTA + + + ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** + + 1. Pomaknite kursor na ovu liniju. + + 2. Pritisnite v i pomaknite kursor pet linija ispod ove. + Primijetite promjenu, označeni tekst se razlikuje od običnog. + + 3. Pritisnite : znak. Na dnu ekrana pojavit će se :'<,'> . + + 4. Otipkajte w TEST , pritom je TEST ime datoteke koja još ne postoji. + Provjerite da zaista piše :'<,'>w TEST + prije nego što pritisnite . + + 5. Vim će spremiti označeni tekst u TEST. Provjerite sa :!dir ili :!ls . + Nemojte je još brisati! Koristiti će te je u sljedećoj lekciji. + +NAPOMENA: Tipka v započinje Vizualno označavanje. Možete pomicati kursor + unaokolo kako bi mijenjali veličinu označenog teksta. Možete + koristiti i operatore. Npr, d će izbrisati označeni tekst. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5.4: UČITAVANJE DATOTEKA + + + ** Za ubacivanje sadržaja datoteke, otipkajte :r IME_DATOTEKE ** + + 1. Postavite kursor iznad ove linije. + +NAPOMENA: Nakon što izvršite 2. korak vidjeti će te tekst iz Lekcije 5.3. + Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. + + 2. Učitajte vašu TEST datoteku koristeći naredbu :r TEST + gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji. + Sadržaj učitane datoteke je ubačen liniju ispod kursora. + + 3. Kako bi provjerili da je datoteka učitana, vratite kursor unatrag i + primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. + +NAPOMENA: Možete također učitati ispis vanjske naredbe. Npr, :r !ls + će učitati ispis ls naredbe i postaviti ispis liniju ispod + kursora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 5 SAŽETAK + + + 1. :!naredba izvršava vanjsku naredbu. + + Korisni primjeri: + (MS-DOS) (Unix) + :!dir :!ls - pregled direktorija. + :!del DATOTEKA :!rm DATOTEKA - briše datoteku DATOTEKA. + + 2. :w DATOTEKA zapisuje trenutačnu datoteku na disk sa imenom DATOTEKA. + + 3. v pokret :w IME_DATOTEKE sprema vizualno označene linije u + datoteku IME_DATOTEKE. + + 4. :r IME_DATOTEKE učitava datoteku IME_DATOTEKE sa diska i stavlja + njen sadržaj liniju ispod kursora. + + 5. :r !dir učitava ispis naredbe dir i postavlja sadržaj ispisa liniju + ispod kursora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.1: NAREDBA OTVORI + + + ** Pritisnite o kako bi otvorili liniju ispod kursora + i prešli u Insert mod. ** + + 1. Pomaknite kursor na sljedeću liniju označenu s --->. + + 2. Otipkajte malo o kako bi otvorili novu liniju ISPOD kursora + i prešli u Insert mod. + + 3. Otipkajte nešto teksta i nakon toga pritisnite + kako bi napustili Insert mod. + +---> Nakon što pritisnete o kursor će preći u novu liniju u Insert mod. + + 4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O , + Pokušajte na donjoj liniji označenoj s --->. + +---> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.2: NAREDBA DODAJ + + + ** Otipkajte a za dodavanje teksta IZA kursora. ** + + 1. Pomaknite kursor na početak sljedeće linije označene s --->. + + 2. Tipkajte e dok se kursor ne nalazi na kraju li . + + 3. Otipkajte a (malo) kako bi dodali tekst IZA kursora. + + 4. Dopunite riječ kao što je na liniji ispod. + Pritisnite za izlaz iz Insert moda. + + 5. Sa e prijeđite na sljedeću nepotpunu riječ i ponovite korake 3 i 4. + +---> Ova li omogućava vje dodav teksta nekoj liniji. +---> Ova linija omogućava vježbanje dodavanja teksta nekoj liniji. + +NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina + razlika je u poziciji od koje će se tekst ubacivati. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.3: DRUGI NAČIN MIJENJANJA + + + ** Otipkajte veliko R kako bi zamijelili više od jednog znaka. ** + + 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. + Pomaknite kursor na početak prvog xxx . + + 2. Pritisnite R i otipkajte broj koji je liniju ispod, + tako da zamijeni xxx . + + 3. Pritisnite za izlaz iz Replace moda. + Primijetite da je ostatak linije ostao nepromjenjen. + + 5. Ponovite korake kako bi zamijenili preostali xxx. + +---> Zbrajanje: 123 plus xxx je xxx. +---> Zbrajanje: 123 plus 456 je 579. + +NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, + svaki otipkani znak briše već postojeći. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA + + + ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** + + 1. Pomaknite kursor na liniju s ---> i postavite kursor nakon "a)". + + 2. Pokrenite Visual mod sa v i pomaknite kursor sve do ispred "prva". + + 3. Pritisnite y kako bi kopirali označeni tekst. + + 4. Pomaknite kursor do kraja sljedeće linije: j$ + + 5. Pritisnite p kako bi zalijepili tekst. Onda utipkajte: druga . + + 6. Koristite Visual mod kako bi označili " linija.", kopirajte: y , kursor + postavite na kraj sljedeće linije: j$ i ondje zalijepite tekst: p . + +---> a) ovo je prva linija. + b) + +NAPOMENA: možete koristiti y kao operator; yw kopira jednu riječ. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6.5: MIJENJANJE POSTAVKI + + + ** Postavka: naredbe traženja i zamijene ne razlikuju VELIKA i mala slova ** + + 1. Potražite 'razlika' tipkanjem: /razlika + Nekoliko puta ponovite pritiskanjem n . + + 2. Aktivirajte 'ic' (Ignore case) postavku: :set ic + + 3. Ponovno potražite 'razlika' tipkanjem n + Primijetite da su sada i RAZLIKA i Razlika pronađeni. + + 4. Aktivirajte 'hlsearch' i 'incsearch' postavke: :set hls is + + 5. Otipkajte naredbu traženja i primijetite razlike: /razlika + + 6. Za deaktiviranje ic postavke koristite: :set noic + +NAPOMENA: Za neoznačavanje pronađenih izraza otipkajte: :nohlsearch +NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi + koristite \c u izrazu: /razlika\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 6 SAŽETAK + + 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. + Pritisnite O za otvaranje linije IZNAD kursora. + + 2. Pritisnite a za unos teksta IZA kursora. + Pritisnite A za unos teksta na kraju linije. + + 3. Naredba e pomiče kursor na kraj riječi. + + 4. Operator y kopira tekst, p ga lijepi. + + 5. Tipkanjem velikog R Vim prelazi u Replace mod dok ne pritisnete . + + 6. Tipkanjem ":set xxx" aktivira postavku "xxx". Neke postavke su: + 'ic' 'ignorecase' ne razlikuje velika/mala slova pri traženju + 'is' 'incsearch' traži nedovršene izraze + 'hls' 'hlsearch' označi sve pronađene izraze + Možete koristite dugo ili kratko ime postavke. + + 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7.1: DOBIVANJE POMOĆI + + + ** Koristite on-line sustav pomoći ** + + Vim ima detaljan on-line sustav pomoći. + Za početak, pokušajte jedno od sljedećeg: + - pritisnite tipku (ako je vaša tipkovnica ima) + - pritisnite tipku (ako je vaša tipkovnica ima) + - utipkajte :help + + Pročitajte tekst u prozoru pomoći kako bi ste se znali služiti istom. + Tipkanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. + Otipkajte :q kako bi zatvorili prozor pomoći. + + Pronaći će te pomoć o bilo kojoj temi, tako da dodate upit samoj + ":help" naredbi. Pokušajte (ne zaboravite pritisnuti ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7.2: PRAVLJENJE SKRIPTE + + + ** Aktivirajte Vim mogućnosti ** + + Vim ima mnogo više alata od Vi-ja, ali većina njih nije aktivirana. + Kako bi mogli koristiti više mogućnosti napravite "vimrc" datoteku. + + 1. Uredite "vimrc" datoteku. Ovo ovisi o vašem sistemu: + :e ~/.vimrc za Unix + :e $VIM/_vimrc za MS-Windows + + 2. Sada učitajte primjer sadržaja "vimrc" datoteke: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Sačuvajte datoteku sa: + :w + + Sljedećeg puta kada pokrenete Vim, bojanje sintakse teksta biti će + aktivirano. Sve vaše postavke možete dodati u "vimrc" datoteku. + Za više informacija otipkajte :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7.3: AUTOMATSKO DOVRŠAVANJE + + + ** Dovršavanje iz naredbene linije pomoću CTRL-D i ** + + 1. Provjerite da Vim nije u Vi modu: :set nocp + + 2. Pogledajte koje datoteke postoje u direktoriju: :!ls or :!dir + + 3. Otipkajte početak naredbe: :e + + 4. Tipkajte CTRL-D i prikazati će se lista naredbi koje započinju sa "e". + + 5. Pritisnite i Vim će dopuniti unos u naredbu ":edit". + + 6. Dodajte razmak i početak datoteke: :edit FIL + + 7. Pritisnite . Vim će nadopuniti ime datoteke (ako je jedinstveno). + +NAPOMENA: Moguće je dopuniti mnoge naredbe. Koristite CTRL-D i . + Naročito je korisno za :help naredbe. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcija 7 SAŽETAK + + + 1. Otipkajte :help ili pritisnite ili za pomoć. + + 2. Otipkajte :help naredba kako bi dobili pomoć za naredba . + + 3. Otipkajte CTRL-W CTRL-W za prelazak u drugi prozor + + 4. Otipkajte :q kako bi zatvorili prozor pomoći + + 5. Napravite vimrc skriptu za podizanje kako bi u nju spremali + vaše omiljene postavke. + + 6. Kada tipkate naredbu koja započinje sa : + pritisnite CTRL-D kako bi vidjeli moguće valjane vrijednosti. + Pritisnite kako bi odabrali jednu od njih. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Kraj. Cilj priručnika je da pokaže kratak pregled Vim editora, tek toliko + da omogući njegovo korištenje. Priručnik nije potpun jer Vim ima mnogo više + naredbi. Za više informacija: ":help user-manual". + + Za čitanje i korištenje, preporučamo: + Vim - Vi Improved - by Steve Oualline + Izdavač: New Riders + Prva knjiga potpuno posvećena Vim-u. Vrlo korisna za početnike. + Sa mnogo primjera i slika. + Posjetite http://iccf-holland.org/click5.html + + Sljedeća knjiga je nešto starija i više o Vi-u nego o Vim-u, preporučamo: + Learning the Vi Editor - by Linda Lamb + Izdavač: O'Reilly & Associates Inc. + Solidna knjiga, možete saznati skoro sve što možete napraviti + u Vi-u. Šesto izdanje ima nešto informacija i o Vim-u. + + Ovaj priručnik su napisali: Michael C. Pierce i Robert K. Ware, + Colorado School of Mines koristeći ideje Charles Smith, + Colorado State University. E-pošta: bware@mines.colorado.edu. + + Naknadne promjene napravio je Bram Moolenaar. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Preveo na hrvatski: Paul B. Mahol + Preinaka 1.42, Lipanj 2008 + + diff --git a/share/vim/vim74/tutor/tutor.hu b/share/vim/vim74/tutor/tutor.hu new file mode 100644 index 00000000..2a7afce6 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.hu @@ -0,0 +1,830 @@ +=============================================================================== +== Ü d v ö z ö l j ü k a V I M - o k t a t ó b a n - 1.5-ös verzió == +=============================================================================== + + A Vim egy nagyon hatékony szerkesztõ, amelynek rengeteg utasítása + van, túl sok, hogy egy ilyen oktatóban (tutorban), mint az itteni + mindet elmagyarázzuk. Ez az oktató arra törekszik, hogy annyit + elmagyarázzon, amennyi elég, hogy könnyedén használjuk a Vim-et, az + általános célú szövegszerkesztõt. + + A feladatok megoldásához 25-30 perc szükséges attól függõen, + mennyit töltünk a kísérletezéssel. + + A leckében szereplõ utasítások módosítani fogják a szöveget. + Készítsen másolatot errõl a fájlról, ha gyakorolni akar. + (Ha "vimtutor"-ral indította, akkor ez már egy másolat.) + + Fontos megérteni, hogy ez az oktató cselekedve taníttat. + Ez azt jelenti, hogy Önnek ajánlott végrehajtania az utasításokat, + hogy megfelelõen megtanulja azokat. Ha csak olvassa, elfelejti! + + Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és + Nyomja meg megfelelõ számúszor a j gombot, hogy az 1.1-es + lecke teljesen a képernyõn legyen! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.1. lecke: A KURZOR MOZGATÁSA + + + ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. ** + ^ + k Tipp: A h billentyû van balra, és balra mozgat + < h l > A l billentyû van jobbra, és jobbra mozgat + j A j billentyû olyan, mint egy lefele nyíl + v + 1. Mozgassa a kurzort körbe az ablakban, amíg hozzá nem szokik! + + 2. Tartsa lenyomva a lefelét (j), akkor ismétlõdik! +---> Most tudja, hogyan mehet a következõ leckére. + + 3. A lefelé gomb használatával menjen a 1.2. leckére! + +Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy + normál módba kerüljön, és ismételje meg a parancsot! + +Megj: A kurzor gomboknak is mûködniük kell, de a hjkl használatával + sokkal gyorsabban tud, mozogni, ha hozzászokik. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.2. lecke: BE ÉS KILÉPÉS A VIMBÕL + + + !! MEGJ: Mielõtt végrehajtja az alábbi lépéseket, olvassa végig a leckét !! + + 1. Nyomja meg az gombot (hogy biztosan normál módban legyen). + + 2. Írja: :q! . + +---> Ezzel kilép a szerkesztõbõl a változások MENTÉSE NÉLKÜL. + Ha menteni szeretné a változásokat és kilépni, írja: + :wq + + 3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe az + oktatóba hozza: + Ez valószínûleg: vimtutor + Normális esetben ezt írná: vim tutor.hu + +---> 'vim' jelenti a vimbe belépést, 'tutor.hu' a fájl, amit szerkeszteni kíván. + + 4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket + 1-tõl 3-ig, hogy kilépjen és visszatérjen a szerkesztõbe. Azután + menjen az 1.3. leckére. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS + + +** Normál módban nyomjon x-et, hogy a kurzor alatti karaktert törölje. ** + + 1. Mozgassa a kurzort a ---> kezdetû sorra! + + 2. A hibák kijavításához mozgassa a kurzort amíg a törlendõ karakter + fölé nem ér. + + 3. Nyomja meg az x gombot, hogy törölje a nem kívánt karaktert. + + 4. Ismételje a 2, 3, 4-es lépéseket, hogy kijavítsa a mondatot. + +---> ÕÕszi éjjjell izziik aa galaggonya rruuhája. + + 5. Ha a sor helyes, ugorjon a 1.4. leckére. + +MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS + + + ** Normál módban i megnyomásával lehet beilleszteni. ** + + 1. Az alábbi elsõ ---> kezdetû sorra menjen. + + 2. Ahhoz, hogy az elsõt azonossá tegye a másodikkal, mozgassa a kurzort + az elsõ karakterre, amely UTÁN szöveget kell beszúrni. + + 3. Nyomjon i-t és írja be a megfelelõ szöveget. + + 4. Amikor mindent beírt, nyomjon -et, hogy Normál módba visszatérjen. + Ismételje a 2 és 4 közötti lépéseket, hogy kijavítsa a mondatot. + +---> Az átható soól hizik pár ész. +---> Az itt látható sorból hiányzik pár rész. + + 5. Ha már begyakorolta a beszúrást, menjen az alábbi összefoglalóra. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1. LECKE ÖSSZEFOGLALÓJA + + + 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. + h (balra) j (le) k (fel) l (jobbra) + + 2. A Vimbe (a $ prompttól) így léphet be: vim FILENAME + + 3. A Vimbõl így léphet ki: :q! a változtatások eldobásával. + vagy így: :wq a változások mentésével. + + 4. A kurzor alatti karakter törlése normál módban: x + + 5. Szöveg beszúrása a kurzor után normál módban: + i gépelje be a szöveget + +MEGJ: Az megnyomása normál módba viszi, vagy megszakít egy nem befejezett + részben befejezett parancsot. + +Most folytassuk a 2. leckével! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.1. lecke: TÖRLÕ UTASÍTÁSOK + + + ** dw töröl a szó végéig. ** + + 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! + + 2. Mozgassa a kurzort a ---> kezdetû sorra! + + 3. Mozgassa a kurzort arra annak a szónak az elejére, amit törölni szeretne. + Törölje az állatokat a mondatból. + + 4. A szó törléséhez írja: dw + + MEGJ: Ha rosszul kezdte az utasítást csak nyomjon gombot + a megszakításához. + +---> Pár szó kutya nem uhu illik pingvin a mondatba tehén. + + 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.2. lecke: MÉG TÖBB TÖRLÕ UTASÍTÁS + + + ** d$ beírásával a sor végéig törölhet. ** + + 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! + + 2. Mozgassa a kurzort a ---> kezdetû sorra! + + 3. Mozgassa a kurzort a helyes sor végére (az elsõ . UTÁN)! + + 4. d$ begépelésével törölje a sor végét! + +---> Valaki a sor végét kétszer gépelte be. kétszer gépelte be. + + + 5. Menjen a 2.3. leckére, hogy megértse mi történt! + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.3. lecke: UTASÍTÁSOKRÓL ÉS MOZGÁSOKRÓL + + + A d (delete=törlés) utasítás formája a következõ: + + [szám] d mozgás VAGY d [szám] mozgás + Ahol: + szám - hányszor hajtódjon végre a parancs (elhagyható, alapérték=1). + d - a törlés (delete) utasítás. + mozgás - amin a parancsnak teljesülnie kell (alább listázva). + + Mozgások rövid listája: + w - a kurzortól a szó végéig, beleértve a szóközt. + e - a kurzortól a szó végéig, NEM beleértve a szóközt. + $ - a kurzortól a sor végéig. + +MEGJ: Csupán a mozgás begépelésével (parancs nélkül) + a kurzor mozgás által megadott helyre kerül. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.4. lecke: EGÉSZ SOROK FELDOLGOZÁSA + + + ** dd beírásával törölheti az egész sort. ** + + A teljes sor törlésének gyakorisága miatt a Vi tervezõi elhatározták, + hogy könnyebb lenne csupán a d-t kétszer megnyomni, hogy egy sort töröljünk. + + 1. Mozgassa a kurzort az alábbi kifejezések második sorára! + 2. dd begépelésével törölje a sort! + 3. Menjen a 3. (eredetileg 4.) sorra! + 4. 2dd (ugyebár szám-utasítás-mozgás) begépelésével töröljön két sort! + + 1) Alvó szegek a jéghideg homokban, + 2) - kezdi a költõ - + 3) Plakátmagányban ázó éjjelek. + 4) Pingvinek ne féljetek, + 5) Távolról egy vaku villant, + 6) Égve hagytad a folyosón a villanyt. + 7) Ma ontják véremet. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS + + +** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. ** + + 1. Menjünk az alábbi ---> kezdetû sor elsõ hibájára! + 2. x lenyomásával törölje az elsõ felesleges karaktert! + 3. u megnyomásával vonja vissza az utolsónak végrehajtott utasítást! + 4. Másodjára javítson ki minden hibát a sorban az x utasítással! + 5. Most nagy U -val állítsa vissza a sor eredeti állapotát! + 6. Nyomja meg az u gombot párszor, hogy az U és az azt megelõzõ utasításokat + visszaállítsa! + 7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a + visszavont parancsokat (redo)! + +---> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. + + 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2. LECKE ÖSSZEFOGLALÓJA + + + 1. Törlés a kurzortól a szó végéig: dw + + 2. Törlés a kurzortól a sor végéig: d$ + + 3. Egész sor törlése: dd + + 4. Egy utasítás alakja normál módban: + + [szám] utasítás mozgás VAGY utasítás [szám] mozgás + ahol: + szám - hányszor ismételjük a parancsot + utasítás - mit tegyünk, pl. d a törléskor + mozgás - mire hasson az utasítás, például w (szó=word), + $ (a sor végéig), stb. + + 5. Az elõzõ tett visszavonása (undo): u (kis u) + A sor összes változásának visszavonása: U (nagy U) + Visszavonások visszavonása: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.1. lecke: A BEILLESZTÉS (PUT) PARANCS + + + ** p leütésével az utolsónak töröltet a kurzor után illeszthetjük. ** + + 1. Mozgassuk a kurzort az alábbi sorok elsõ sorára. + + 2. dd leütésével töröljük a sort és eltárolódik a Vim pufferében. + + 3. Mozgassuk a kurzort azelõtt a sor ELÕTTI sorba, ahová mozgatni + szeretnénk a törölt sort. + + 4. Normál módban írjunk p betût a törölt sor beillesztéséhez. + + 5. Folytassuk a 2-4. utasításokkal hogy a helyes sorrendet kapjuk. + + d) Can you learn too? + b) Violets are blue, + c) Intelligence is learned, + a) Roses are red, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS + + +** r és a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. ** + + 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! + + 2. Mozgassuk a kurzort az elsõ hiba fölé! + + 3. r majd a kívánt karakter leütésével változtassuk meg a hibásat! + + 4. A 2. és 3. lépésekkel javítsuk az összes hibát! + +---> Whan this lime was tuoed in, someone presswd some wrojg keys! +---> When this line was typed in, someone pressed some wrong keys! + + 5. Menjünk a 3.2. leckére! + +MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.3. lecke: A CSERE (CHANGE) PARANCS + + + ** A szó egy részének megváltoztatásához írjuk: cw . ** + + 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! + + 2. Vigye a kurzort a Ezen szó z betûje fölé! + + 3. cw és a helyes szórész (itt 'bben') beírásával javítsa a szót! + + 4. lenyomása után a következõ hibára ugorjon (az elsõ cserélendõ + karakterre)! + + 5. A 3. és 4. lépések ismétlésével az elsõ mondatot tegye a másodikkal + azonossá! + +---> Ezen a sorrrrr pár szóra meg kell változzanak a change utaskírésõ. +---> Ebben a sorban pár szót meg kell változtatni a change utasítással. + +Vegyük észre, hogy a cw nem csak a szót írja át, hanem beszúró +(insert) módba vált. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.4. lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL + + + ** A c utasítás használható ugyanazokkal az mozgásokkal mint a törlés ** + + 1. A change utasítás a törléssel azonosan viselkedik. A forma: + + [szám] c mozgás OR c [szám] mozgás + + 2. A mozgások is azonosak, pl. w (szó), $ (sorvég), stb. + + 3. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! + + 4. Menjünk az elsõ hibára! + + 5. c$ begépelésével a sorvégeket tegyük azonossá és nyomjunk -et! + +---> Ennek a sornak a vége kiigazításra szorul, hogy megegyezzen a másodikkal. +---> Ennek a sornak a vége a c$ paranccsal változtatható meg. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3. LECKE ÖSSZEFOGLALÓJA + + + 1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget + a kurzor UTÁN helyezi (ha sor került törlésre, a kurzor alatti sorba). + + 2. A kurzor alatti karakter átírásához az r-et és azt a karaktert + nyomjuk, amellyel az eredetit felül szeretnénk írni. + + 3. A változtatás (c) utasítás a karaktertõl az mozgás végéig + változtatja meg az mozgást. Például a cw a kurzortól a szó végéig, + a c$ a sor végéig. + + 4. A változtatás formátuma: + + [szám] c mozgás VAGY c [szám] mozgás + +Ugorjunk a következõ leckére! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.1. lecke: HELY ÉS FÁJLÁLLAPOT + + + ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát. + SHIFT-G leütésével a fájl adott sorára ugorhatunk. ** + + Megj: Olvassuk el az egész leckét a lépések végrehajtása elõtt!! + + 1. Tartsuk nyomva a Ctrl gombot és nyomjunk g-t. Az állapotsor + megjelenik a lap alján a fájlnévvel és az aktuális sor sorszámával. + Jegyezzük meg a sorszámot a 3. lépéshez! + + 2. Nyomjunk Shift-G-t a lap aljára ugráshoz! + + 3. Üssük be az eredeti sor számát, majd üssünk shift-G-t! Ezzel + visszajutunk az eredeti sorra ahol Ctrl-g-t nyomtunk. + (A beírt szám NEM fog megjelenni a képernyõn.) + + 4. Ha megjegyezte a feladatot, hajtsa végre az 1-3. lépéseket! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.2. lecke: A KERESÉS (SEARCH) PARANCS + + + ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. ** + + 1. Normál módban üssünk / karaktert! Ez és a kurzor megjelenik + a képernyõ alján, ahogy a : utasítás is. + + 2. Írjuk be: 'hiibaa' ! Ez az a szó amit keresünk. + + 3. A kifejezés újabb kereséséhez üssük le egyszerûen: n . + A kifejezés ellenkezõ irányban történõ kereséséhez ezt üssük be: Shift-N . + + 4. Ha visszafelé szeretne keresni, akkor ? kell a / helyett. + +---> "hiibaa" nem a helyes módja a hiba leírásának; a hiibaa egy hiba. + +Megj: Ha a keresés eléri a fájl végét, akkor az elején kezdi. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.3. lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE + + + ** % leütésével megtaláljuk a ),], vagy } párját. ** + + 1. Helyezze a kurzort valamelyik (, [, vagy { zárójelre a ---> kezdetû + sorban! + + 2. Üssön % karaktert! + + 3. A kurzor a zárójel párjára fog ugrani. + + 4. % leütésével visszaugrik az eredeti zárójelre. + +---> Ez ( egy tesztsor (-ekkel, [-ekkel ] és {-ekkel } a sorban. )) + +Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a + zárójelek nem párosak! + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA + + + ** :s/régi/új/g begépelésével az 'új'-ra cseréljük a 'régi'-t. ** + + 1. Menjünk a ---> kezdetû sorra! + + 2. Írjuk be: :s/eggy/egy . Ekkor csak az elsõ változik meg a + sorban. + + 3. Most ezt írjuk: :s/eggy/egg/g amely globálisan helyettesít + a sorban, azaz minden elõfordulást. + Ez a sorban minden elõfordulást helyettesít. + +---> eggy heggy meggy, szembe jön eggy másik heggy. + + 4. Két sor között a karaktersor minden elõfordulásának helyettesítése: + :#,#s/régi/új/g ahol #,# a két sor sorszáma. + :%s/régi/új/g a fájlbeli összes elõfordulás helyettesítése. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4. LECKE ÖSSZEFOGLALÓJA + + + 1. Ctrl-g kiírja az kurzor helyét a fájlban és a fájl állapotát. + Shift-G a fájl végére megy, gg az elejére. Egy szám után + Shift-G az adott számú sorra ugrik. + + 2. / után egy kifejezés ELÕREFELE keresi a kifejezést. + 2. ? után egy kifejezés VISSZAFELE keresi a kifejezést. + Egy keresés után az n a következõ elõfordulást keresi azonos irányban + Shift-N az ellenkezõ irányban keres. + + 3. % begépelésével, ha (,),[,],{, vagy } karakteren vagyunk a zárójel + párjára ugrik. + + 4. az elsõ régi helyettesítése újjal a sorban :s/régi/új + az összes régi helyettesítése újjal a sorban :s/régi/új/g + két sor közötti kifejezésekre :#,#s/régi/új/g + # helyén az aktuális sor (.) és az utolsó ($) is állhat :.,$/régi/új/g + A fájlbeli összes elõfordulás helyettesítése :%s/régi/új/g + Mindenkori megerõsítésre vár 'c' hatására :%s/régi/új/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.1. lecke: KÜLSÕ PARANCS VÉGREHAJTÁSA + + + ** :! után külsõ parancsot írva végrehajtódik a parancs. ** + + 1. Írjuk be az ismerõs : parancsot, hogy a kurzort a képernyõ aljára + helyezzük. Ez lehetõvé teszi egy parancs beírását. + + 2. ! (felkiáltójel) beírásával tegyük lehetõvé külsõ héj (shell)-parancs + végrehajtását. + + 3. Írjunk például ls parancsot a ! után majd üssünk -t. Ez ki + fogja listázni a könyvtárunkat ugyanúgy, mintha a shell promptnál + lennénk. Vagy írja ezt :!dir ha az ls nem mûködik. + +Megj: Ilymódon bármely külsõ utasítás végrehajtható. + +Megj: Minden : parancs után -t kell ütni. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.2. lecke: BÕVEBBEN A FÁJLOK ÍRÁSÁRÓL + + + ** A fájlok változásait így írhatjuk ki :w FÁJLNÉV. ** + + 1. :!dir vagy :!ls beírásával listázzuk a könyvtárunkat! + Ön már tudja, hogy -t kell ütnie utána. + + 2. Válasszon egy fájlnevet, amely még nem létezik pl. TESZT! + + 3. Írja: :w TESZT (ahol TESZT a választott fájlnév)! + + 4. Ez elmenti a teljes fájlt (a Vim oktatóját) TESZT néven. + Ellenõrzésképp írjuk ismét :!dir hogy lássuk a könyvtárat! + (Felfelé gombbal : után az elõzõ utasítások visszahozhatóak.) + +Megj: Ha Ön kilépne a Vimbõl és és visszatérne a TESZT fájlnévvel, akkor a + fájl az oktató mentéskori pontos másolata lenne. + + 5. Távolítsa el a fájlt (MS-DOS): :!del TESZT + vagy (Unix): :!rm TESZT + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.3. lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA + + + ** A fájl egy részének kiírásához írja :#,# w FÁJLNÉV ** + + 1. :!dir vagy :!ls beírásával listázza a könyvtárat, és válasszon egy + megfelelõ fájlnevet, pl. TESZT. + + 2. Mozgassa a kurzort ennek az oldalnak a tetejére, és nyomjon + Ctrl-g-t, hogy megtudja a sorszámot. JEGYEZZE MEG A SZÁMOT! + + 3. Most menjen a lap aljára, és üsse be ismét: Ctrl-g. EZT A SZÁMOT + IS JEGYEZZE MEG! + + 4. Ha csak ezt a részét szeretné menteni a fájlnak, írja :#,# w TESZT + ahol #,# a két sorszám, amit megjegyzett, TESZT az Ön fájlneve. + + 5. Ismét nézze meg, hogy a fájl ott van (:!dir) de NE törölje. + + 6. Vimben létezik egy másik lehetõség: nyomja meg a Shift-V gombpárt + az elsõ menteni kívánt soron, majd menjen le az utolsóra, ezután + írja :w TESZT2 Ekkor a TESZT2 fájlba kerül a kijelölt rész. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.4. lecke: FÁJLOK VISSZAÁLLÍTÁSA ÉS ÖSSZEFÛZÉSE + + + ** Egy fájl tartalmának beillesztéséhez írja :r FÁJLNÉV ** + + 1. :!dir beírásával nézze meg, hogy az Ön TESZT fájlja létezik még. + + 2. Helyezze a kurzort ennek az oldalnak a tetejére. + +MEGJ: A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva + keresse meg ismét ezt a leckét. + + 3. Most szúrja be a TESZT nevû fájlt a :r TESZT paranccsal, ahol + TESZT az Ön fájljának a neve. + +MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. + + 4. Hogy ellenõrizzük, hogy a fájlt tényleg beillesztettük, menjen + vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti + mellett a fájlból bemásolt is ott van. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5. LECKE ÖSSZEFOGLALÓJA + + + 1. :!parancs végrehajt egy külsõ utasítást. + + Pár hasznos példa: + (MS-DOS) (Unix) + :!dir :!ls - könyvtárlista kiírása. + :!del FÁJLNÉV :!rm FÁJLNÉV - FÁJLNÉV nevû fájl törlése. + + 2. :w FÁJLNÉV kiírja a jelenlegi Vim-fájlt a lemezre FÁJNÉV néven. + + 3. :#,#w FÁJLNÉV kiírja a két sorszám (#) közötti sorokat FÁJLNÉV-be + Másik lehetõség, hogy a kezdõsornál Shift-v-t nyom lemegy az utolsó + sorra, majd ezt üti be :w FÁJLNÉV + + 4. :r FÁJLNÉV beolvassa a FÁJLNÉV fájlt és behelyezi a jelenlegi fájlba + a kurzorpozíció utáni sorba. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.1. lecke: A MEGNYITÁS (OPEN) PARANCS + + +** o beírásával nyit egy új sort a kurzor alatt és beszúró módba vált ** + + 1. Mozgassuk a kurzort a ---> kezdetû sorra. + + 2. o (kicsi) beírásával nyisson egy sort a kurzor ALATT! Ekkor + automatikusan beszúró (insert) módba kerül. + + 3. Másolja le a ---> jelû sort és megnyomásával lépjen ki + a beszúró módból. + +---> Az o lenyomása után a kurzor a következõ sor elején áll beszúró módban. + + 4. A kurzor FELETTI sor megnyitásához egyszerûen nagy O betût írjon +kicsi helyett. Próbálja ki a következõ soron! +Nyisson egy új sort efelett Shift-O megnyomásával, mialatt a kurzor +ezen a soron áll. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.2. lecke: AZ APPEND PARANCS + + + ** a lenyomásával a kurzor UTÁN szúrhatunk szöveget. ** + + 1. Mozgassuk a kurzort a következõ ---> kezdetû sor végére úgy, + hogy normál módban $-t ír be. + + 2. Kis "a" leütésével szöveget szúrhat be AMÖGÉ a karakter mögé, + amelyen a kurzor áll. + (A nagy "A" az egész sor végére írja a szöveget.) + +Megj: A Vimben a sor legvégére is lehet állni, azonban ez elõdjében + a Vi-ban nem lehetséges, ezért abban az a nélkül elég körülményes + a sor végéhez szöveget írni. + + 3. Egészítse ki az elsõ sort. Vegye észre, hogy az a utasítás (append) + teljesen egyezik az i-vel (insert) csupán a beszúrt szöveg helye + különbözik. + +---> Ez a sor lehetõvé teszi Önnek, hogy gyakorolja +---> Ez a sor lehetõvé teszi Önnek, hogy gyakorolja a sor végére beillesztést. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.3. lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA + + + ** Nagy R beírásával írhat felül több mint egy karaktert. ** + + 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! + + 2. Helyezze a kurzort az elsõ szó elejére amely eltér a második + ---> kezdetû sor tartalmától (a 'az utolsóval' résztõl). + + 3. Nyomjon R karaktert és írja át a szöveg maradékát az elsõ sorban + úgy, hogy a két sor egyezõ legyen. + +---> Az elsõ sort tegye azonossá az utolsóval: használja a gombokat. +---> Az elsõ sort tegye azonossá a másodikkal: írjon R-t és az új szöveget. + + 4. Jegyezzük meg, ha -et nyomok, akkor a változatlanul hagyott + szövegek változatlanok maradnak. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.4. lecke: BEÁLLÍTÁSOK + +** Állítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetûktõl ** + + 1. Keressük meg az 'ignore'-t az beírva: + /ignore + Ezt ismételjük többször az n billentyûvel + + 2. Állítsuk be az 'ic' (Ignore case) lehetõséget így: + :set ic + + 3. Most keressünk ismét az 'ignore'-ra n-nel + Ismételjük meg többször a keresést: n + + 4. Állítsuk be a 'hlsearch' és 'incsearch' lehetõségeket: + :set hls is + + 5. Most ismét írjuk be a keresõparancsot, és lássuk mi történik: + /ignore + + 6. A kiemelést szüntessük meg alábbi utasítások egyikével: + :set nohls vagy :nohlsearch +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6. LECKE ÖSSZEFOGLALÓJA + + + 1. o beírásával új sort nyitunk meg a sor ALATT és a kurzor az új + sorban lesz beszúrás-módban. + Nagy O a sor FELETT nyit új sort, és oda kerül a kurzor. + + 2. a beírásával az aktuális karaktertõl UTÁN (jobbra) szúrhatunk be szöveget. + Nagy A automatikusan a sor legvégéhez adja hozzá a szöveget. + + 3. A nagy R beütésével átíró (replace) módba kerülünk lenyomásáig. + + 4. ":set xxx" beírásával az "xxx" opció állítható be. + + + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 7. lecke: AZ ON-LINE SÚGÓ PARANCSAI + + + ** Az online súgórendszer használata ** + + A Vim részletes súgóval rendelkezik. Induláshoz a következõk egyikét + tegye: + - nyomja meg a gombot (ha van ilyen) + - nyomja meg az gombot (ha van ilyen) + - írja be: :help + + :q beírásával zárhatja be a súgóablakot. + + Majdnem minden témakörrõl találhat súgót, argumentum megadásával + ":help" utasítás . Próbálja az alábbiakat ki (-t ne felejtsük): + + :help w + :help c_, 2006-2012 + diff --git a/share/vim/vim74/tutor/tutor.hu.cp1250 b/share/vim/vim74/tutor/tutor.hu.cp1250 new file mode 100644 index 00000000..2a7afce6 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.hu.cp1250 @@ -0,0 +1,830 @@ +=============================================================================== +== Ü d v ö z ö l j ü k a V I M - o k t a t ó b a n - 1.5-ös verzió == +=============================================================================== + + A Vim egy nagyon hatékony szerkesztõ, amelynek rengeteg utasítása + van, túl sok, hogy egy ilyen oktatóban (tutorban), mint az itteni + mindet elmagyarázzuk. Ez az oktató arra törekszik, hogy annyit + elmagyarázzon, amennyi elég, hogy könnyedén használjuk a Vim-et, az + általános célú szövegszerkesztõt. + + A feladatok megoldásához 25-30 perc szükséges attól függõen, + mennyit töltünk a kísérletezéssel. + + A leckében szereplõ utasítások módosítani fogják a szöveget. + Készítsen másolatot errõl a fájlról, ha gyakorolni akar. + (Ha "vimtutor"-ral indította, akkor ez már egy másolat.) + + Fontos megérteni, hogy ez az oktató cselekedve taníttat. + Ez azt jelenti, hogy Önnek ajánlott végrehajtania az utasításokat, + hogy megfelelõen megtanulja azokat. Ha csak olvassa, elfelejti! + + Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és + Nyomja meg megfelelõ számúszor a j gombot, hogy az 1.1-es + lecke teljesen a képernyõn legyen! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.1. lecke: A KURZOR MOZGATÁSA + + + ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. ** + ^ + k Tipp: A h billentyû van balra, és balra mozgat + < h l > A l billentyû van jobbra, és jobbra mozgat + j A j billentyû olyan, mint egy lefele nyíl + v + 1. Mozgassa a kurzort körbe az ablakban, amíg hozzá nem szokik! + + 2. Tartsa lenyomva a lefelét (j), akkor ismétlõdik! +---> Most tudja, hogyan mehet a következõ leckére. + + 3. A lefelé gomb használatával menjen a 1.2. leckére! + +Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy + normál módba kerüljön, és ismételje meg a parancsot! + +Megj: A kurzor gomboknak is mûködniük kell, de a hjkl használatával + sokkal gyorsabban tud, mozogni, ha hozzászokik. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.2. lecke: BE ÉS KILÉPÉS A VIMBÕL + + + !! MEGJ: Mielõtt végrehajtja az alábbi lépéseket, olvassa végig a leckét !! + + 1. Nyomja meg az gombot (hogy biztosan normál módban legyen). + + 2. Írja: :q! . + +---> Ezzel kilép a szerkesztõbõl a változások MENTÉSE NÉLKÜL. + Ha menteni szeretné a változásokat és kilépni, írja: + :wq + + 3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe az + oktatóba hozza: + Ez valószínûleg: vimtutor + Normális esetben ezt írná: vim tutor.hu + +---> 'vim' jelenti a vimbe belépést, 'tutor.hu' a fájl, amit szerkeszteni kíván. + + 4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket + 1-tõl 3-ig, hogy kilépjen és visszatérjen a szerkesztõbe. Azután + menjen az 1.3. leckére. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS + + +** Normál módban nyomjon x-et, hogy a kurzor alatti karaktert törölje. ** + + 1. Mozgassa a kurzort a ---> kezdetû sorra! + + 2. A hibák kijavításához mozgassa a kurzort amíg a törlendõ karakter + fölé nem ér. + + 3. Nyomja meg az x gombot, hogy törölje a nem kívánt karaktert. + + 4. Ismételje a 2, 3, 4-es lépéseket, hogy kijavítsa a mondatot. + +---> ÕÕszi éjjjell izziik aa galaggonya rruuhája. + + 5. Ha a sor helyes, ugorjon a 1.4. leckére. + +MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS + + + ** Normál módban i megnyomásával lehet beilleszteni. ** + + 1. Az alábbi elsõ ---> kezdetû sorra menjen. + + 2. Ahhoz, hogy az elsõt azonossá tegye a másodikkal, mozgassa a kurzort + az elsõ karakterre, amely UTÁN szöveget kell beszúrni. + + 3. Nyomjon i-t és írja be a megfelelõ szöveget. + + 4. Amikor mindent beírt, nyomjon -et, hogy Normál módba visszatérjen. + Ismételje a 2 és 4 közötti lépéseket, hogy kijavítsa a mondatot. + +---> Az átható soól hizik pár ész. +---> Az itt látható sorból hiányzik pár rész. + + 5. Ha már begyakorolta a beszúrást, menjen az alábbi összefoglalóra. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1. LECKE ÖSSZEFOGLALÓJA + + + 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. + h (balra) j (le) k (fel) l (jobbra) + + 2. A Vimbe (a $ prompttól) így léphet be: vim FILENAME + + 3. A Vimbõl így léphet ki: :q! a változtatások eldobásával. + vagy így: :wq a változások mentésével. + + 4. A kurzor alatti karakter törlése normál módban: x + + 5. Szöveg beszúrása a kurzor után normál módban: + i gépelje be a szöveget + +MEGJ: Az megnyomása normál módba viszi, vagy megszakít egy nem befejezett + részben befejezett parancsot. + +Most folytassuk a 2. leckével! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.1. lecke: TÖRLÕ UTASÍTÁSOK + + + ** dw töröl a szó végéig. ** + + 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! + + 2. Mozgassa a kurzort a ---> kezdetû sorra! + + 3. Mozgassa a kurzort arra annak a szónak az elejére, amit törölni szeretne. + Törölje az állatokat a mondatból. + + 4. A szó törléséhez írja: dw + + MEGJ: Ha rosszul kezdte az utasítást csak nyomjon gombot + a megszakításához. + +---> Pár szó kutya nem uhu illik pingvin a mondatba tehén. + + 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.2. lecke: MÉG TÖBB TÖRLÕ UTASÍTÁS + + + ** d$ beírásával a sor végéig törölhet. ** + + 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! + + 2. Mozgassa a kurzort a ---> kezdetû sorra! + + 3. Mozgassa a kurzort a helyes sor végére (az elsõ . UTÁN)! + + 4. d$ begépelésével törölje a sor végét! + +---> Valaki a sor végét kétszer gépelte be. kétszer gépelte be. + + + 5. Menjen a 2.3. leckére, hogy megértse mi történt! + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.3. lecke: UTASÍTÁSOKRÓL ÉS MOZGÁSOKRÓL + + + A d (delete=törlés) utasítás formája a következõ: + + [szám] d mozgás VAGY d [szám] mozgás + Ahol: + szám - hányszor hajtódjon végre a parancs (elhagyható, alapérték=1). + d - a törlés (delete) utasítás. + mozgás - amin a parancsnak teljesülnie kell (alább listázva). + + Mozgások rövid listája: + w - a kurzortól a szó végéig, beleértve a szóközt. + e - a kurzortól a szó végéig, NEM beleértve a szóközt. + $ - a kurzortól a sor végéig. + +MEGJ: Csupán a mozgás begépelésével (parancs nélkül) + a kurzor mozgás által megadott helyre kerül. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.4. lecke: EGÉSZ SOROK FELDOLGOZÁSA + + + ** dd beírásával törölheti az egész sort. ** + + A teljes sor törlésének gyakorisága miatt a Vi tervezõi elhatározták, + hogy könnyebb lenne csupán a d-t kétszer megnyomni, hogy egy sort töröljünk. + + 1. Mozgassa a kurzort az alábbi kifejezések második sorára! + 2. dd begépelésével törölje a sort! + 3. Menjen a 3. (eredetileg 4.) sorra! + 4. 2dd (ugyebár szám-utasítás-mozgás) begépelésével töröljön két sort! + + 1) Alvó szegek a jéghideg homokban, + 2) - kezdi a költõ - + 3) Plakátmagányban ázó éjjelek. + 4) Pingvinek ne féljetek, + 5) Távolról egy vaku villant, + 6) Égve hagytad a folyosón a villanyt. + 7) Ma ontják véremet. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS + + +** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. ** + + 1. Menjünk az alábbi ---> kezdetû sor elsõ hibájára! + 2. x lenyomásával törölje az elsõ felesleges karaktert! + 3. u megnyomásával vonja vissza az utolsónak végrehajtott utasítást! + 4. Másodjára javítson ki minden hibát a sorban az x utasítással! + 5. Most nagy U -val állítsa vissza a sor eredeti állapotát! + 6. Nyomja meg az u gombot párszor, hogy az U és az azt megelõzõ utasításokat + visszaállítsa! + 7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a + visszavont parancsokat (redo)! + +---> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. + + 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2. LECKE ÖSSZEFOGLALÓJA + + + 1. Törlés a kurzortól a szó végéig: dw + + 2. Törlés a kurzortól a sor végéig: d$ + + 3. Egész sor törlése: dd + + 4. Egy utasítás alakja normál módban: + + [szám] utasítás mozgás VAGY utasítás [szám] mozgás + ahol: + szám - hányszor ismételjük a parancsot + utasítás - mit tegyünk, pl. d a törléskor + mozgás - mire hasson az utasítás, például w (szó=word), + $ (a sor végéig), stb. + + 5. Az elõzõ tett visszavonása (undo): u (kis u) + A sor összes változásának visszavonása: U (nagy U) + Visszavonások visszavonása: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.1. lecke: A BEILLESZTÉS (PUT) PARANCS + + + ** p leütésével az utolsónak töröltet a kurzor után illeszthetjük. ** + + 1. Mozgassuk a kurzort az alábbi sorok elsõ sorára. + + 2. dd leütésével töröljük a sort és eltárolódik a Vim pufferében. + + 3. Mozgassuk a kurzort azelõtt a sor ELÕTTI sorba, ahová mozgatni + szeretnénk a törölt sort. + + 4. Normál módban írjunk p betût a törölt sor beillesztéséhez. + + 5. Folytassuk a 2-4. utasításokkal hogy a helyes sorrendet kapjuk. + + d) Can you learn too? + b) Violets are blue, + c) Intelligence is learned, + a) Roses are red, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS + + +** r és a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. ** + + 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! + + 2. Mozgassuk a kurzort az elsõ hiba fölé! + + 3. r majd a kívánt karakter leütésével változtassuk meg a hibásat! + + 4. A 2. és 3. lépésekkel javítsuk az összes hibát! + +---> Whan this lime was tuoed in, someone presswd some wrojg keys! +---> When this line was typed in, someone pressed some wrong keys! + + 5. Menjünk a 3.2. leckére! + +MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.3. lecke: A CSERE (CHANGE) PARANCS + + + ** A szó egy részének megváltoztatásához írjuk: cw . ** + + 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! + + 2. Vigye a kurzort a Ezen szó z betûje fölé! + + 3. cw és a helyes szórész (itt 'bben') beírásával javítsa a szót! + + 4. lenyomása után a következõ hibára ugorjon (az elsõ cserélendõ + karakterre)! + + 5. A 3. és 4. lépések ismétlésével az elsõ mondatot tegye a másodikkal + azonossá! + +---> Ezen a sorrrrr pár szóra meg kell változzanak a change utaskírésõ. +---> Ebben a sorban pár szót meg kell változtatni a change utasítással. + +Vegyük észre, hogy a cw nem csak a szót írja át, hanem beszúró +(insert) módba vált. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.4. lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL + + + ** A c utasítás használható ugyanazokkal az mozgásokkal mint a törlés ** + + 1. A change utasítás a törléssel azonosan viselkedik. A forma: + + [szám] c mozgás OR c [szám] mozgás + + 2. A mozgások is azonosak, pl. w (szó), $ (sorvég), stb. + + 3. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! + + 4. Menjünk az elsõ hibára! + + 5. c$ begépelésével a sorvégeket tegyük azonossá és nyomjunk -et! + +---> Ennek a sornak a vége kiigazításra szorul, hogy megegyezzen a másodikkal. +---> Ennek a sornak a vége a c$ paranccsal változtatható meg. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3. LECKE ÖSSZEFOGLALÓJA + + + 1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget + a kurzor UTÁN helyezi (ha sor került törlésre, a kurzor alatti sorba). + + 2. A kurzor alatti karakter átírásához az r-et és azt a karaktert + nyomjuk, amellyel az eredetit felül szeretnénk írni. + + 3. A változtatás (c) utasítás a karaktertõl az mozgás végéig + változtatja meg az mozgást. Például a cw a kurzortól a szó végéig, + a c$ a sor végéig. + + 4. A változtatás formátuma: + + [szám] c mozgás VAGY c [szám] mozgás + +Ugorjunk a következõ leckére! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.1. lecke: HELY ÉS FÁJLÁLLAPOT + + + ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát. + SHIFT-G leütésével a fájl adott sorára ugorhatunk. ** + + Megj: Olvassuk el az egész leckét a lépések végrehajtása elõtt!! + + 1. Tartsuk nyomva a Ctrl gombot és nyomjunk g-t. Az állapotsor + megjelenik a lap alján a fájlnévvel és az aktuális sor sorszámával. + Jegyezzük meg a sorszámot a 3. lépéshez! + + 2. Nyomjunk Shift-G-t a lap aljára ugráshoz! + + 3. Üssük be az eredeti sor számát, majd üssünk shift-G-t! Ezzel + visszajutunk az eredeti sorra ahol Ctrl-g-t nyomtunk. + (A beírt szám NEM fog megjelenni a képernyõn.) + + 4. Ha megjegyezte a feladatot, hajtsa végre az 1-3. lépéseket! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.2. lecke: A KERESÉS (SEARCH) PARANCS + + + ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. ** + + 1. Normál módban üssünk / karaktert! Ez és a kurzor megjelenik + a képernyõ alján, ahogy a : utasítás is. + + 2. Írjuk be: 'hiibaa' ! Ez az a szó amit keresünk. + + 3. A kifejezés újabb kereséséhez üssük le egyszerûen: n . + A kifejezés ellenkezõ irányban történõ kereséséhez ezt üssük be: Shift-N . + + 4. Ha visszafelé szeretne keresni, akkor ? kell a / helyett. + +---> "hiibaa" nem a helyes módja a hiba leírásának; a hiibaa egy hiba. + +Megj: Ha a keresés eléri a fájl végét, akkor az elején kezdi. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.3. lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE + + + ** % leütésével megtaláljuk a ),], vagy } párját. ** + + 1. Helyezze a kurzort valamelyik (, [, vagy { zárójelre a ---> kezdetû + sorban! + + 2. Üssön % karaktert! + + 3. A kurzor a zárójel párjára fog ugrani. + + 4. % leütésével visszaugrik az eredeti zárójelre. + +---> Ez ( egy tesztsor (-ekkel, [-ekkel ] és {-ekkel } a sorban. )) + +Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a + zárójelek nem párosak! + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA + + + ** :s/régi/új/g begépelésével az 'új'-ra cseréljük a 'régi'-t. ** + + 1. Menjünk a ---> kezdetû sorra! + + 2. Írjuk be: :s/eggy/egy . Ekkor csak az elsõ változik meg a + sorban. + + 3. Most ezt írjuk: :s/eggy/egg/g amely globálisan helyettesít + a sorban, azaz minden elõfordulást. + Ez a sorban minden elõfordulást helyettesít. + +---> eggy heggy meggy, szembe jön eggy másik heggy. + + 4. Két sor között a karaktersor minden elõfordulásának helyettesítése: + :#,#s/régi/új/g ahol #,# a két sor sorszáma. + :%s/régi/új/g a fájlbeli összes elõfordulás helyettesítése. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4. LECKE ÖSSZEFOGLALÓJA + + + 1. Ctrl-g kiírja az kurzor helyét a fájlban és a fájl állapotát. + Shift-G a fájl végére megy, gg az elejére. Egy szám után + Shift-G az adott számú sorra ugrik. + + 2. / után egy kifejezés ELÕREFELE keresi a kifejezést. + 2. ? után egy kifejezés VISSZAFELE keresi a kifejezést. + Egy keresés után az n a következõ elõfordulást keresi azonos irányban + Shift-N az ellenkezõ irányban keres. + + 3. % begépelésével, ha (,),[,],{, vagy } karakteren vagyunk a zárójel + párjára ugrik. + + 4. az elsõ régi helyettesítése újjal a sorban :s/régi/új + az összes régi helyettesítése újjal a sorban :s/régi/új/g + két sor közötti kifejezésekre :#,#s/régi/új/g + # helyén az aktuális sor (.) és az utolsó ($) is állhat :.,$/régi/új/g + A fájlbeli összes elõfordulás helyettesítése :%s/régi/új/g + Mindenkori megerõsítésre vár 'c' hatására :%s/régi/új/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.1. lecke: KÜLSÕ PARANCS VÉGREHAJTÁSA + + + ** :! után külsõ parancsot írva végrehajtódik a parancs. ** + + 1. Írjuk be az ismerõs : parancsot, hogy a kurzort a képernyõ aljára + helyezzük. Ez lehetõvé teszi egy parancs beírását. + + 2. ! (felkiáltójel) beírásával tegyük lehetõvé külsõ héj (shell)-parancs + végrehajtását. + + 3. Írjunk például ls parancsot a ! után majd üssünk -t. Ez ki + fogja listázni a könyvtárunkat ugyanúgy, mintha a shell promptnál + lennénk. Vagy írja ezt :!dir ha az ls nem mûködik. + +Megj: Ilymódon bármely külsõ utasítás végrehajtható. + +Megj: Minden : parancs után -t kell ütni. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.2. lecke: BÕVEBBEN A FÁJLOK ÍRÁSÁRÓL + + + ** A fájlok változásait így írhatjuk ki :w FÁJLNÉV. ** + + 1. :!dir vagy :!ls beírásával listázzuk a könyvtárunkat! + Ön már tudja, hogy -t kell ütnie utána. + + 2. Válasszon egy fájlnevet, amely még nem létezik pl. TESZT! + + 3. Írja: :w TESZT (ahol TESZT a választott fájlnév)! + + 4. Ez elmenti a teljes fájlt (a Vim oktatóját) TESZT néven. + Ellenõrzésképp írjuk ismét :!dir hogy lássuk a könyvtárat! + (Felfelé gombbal : után az elõzõ utasítások visszahozhatóak.) + +Megj: Ha Ön kilépne a Vimbõl és és visszatérne a TESZT fájlnévvel, akkor a + fájl az oktató mentéskori pontos másolata lenne. + + 5. Távolítsa el a fájlt (MS-DOS): :!del TESZT + vagy (Unix): :!rm TESZT + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.3. lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA + + + ** A fájl egy részének kiírásához írja :#,# w FÁJLNÉV ** + + 1. :!dir vagy :!ls beírásával listázza a könyvtárat, és válasszon egy + megfelelõ fájlnevet, pl. TESZT. + + 2. Mozgassa a kurzort ennek az oldalnak a tetejére, és nyomjon + Ctrl-g-t, hogy megtudja a sorszámot. JEGYEZZE MEG A SZÁMOT! + + 3. Most menjen a lap aljára, és üsse be ismét: Ctrl-g. EZT A SZÁMOT + IS JEGYEZZE MEG! + + 4. Ha csak ezt a részét szeretné menteni a fájlnak, írja :#,# w TESZT + ahol #,# a két sorszám, amit megjegyzett, TESZT az Ön fájlneve. + + 5. Ismét nézze meg, hogy a fájl ott van (:!dir) de NE törölje. + + 6. Vimben létezik egy másik lehetõség: nyomja meg a Shift-V gombpárt + az elsõ menteni kívánt soron, majd menjen le az utolsóra, ezután + írja :w TESZT2 Ekkor a TESZT2 fájlba kerül a kijelölt rész. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.4. lecke: FÁJLOK VISSZAÁLLÍTÁSA ÉS ÖSSZEFÛZÉSE + + + ** Egy fájl tartalmának beillesztéséhez írja :r FÁJLNÉV ** + + 1. :!dir beírásával nézze meg, hogy az Ön TESZT fájlja létezik még. + + 2. Helyezze a kurzort ennek az oldalnak a tetejére. + +MEGJ: A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva + keresse meg ismét ezt a leckét. + + 3. Most szúrja be a TESZT nevû fájlt a :r TESZT paranccsal, ahol + TESZT az Ön fájljának a neve. + +MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. + + 4. Hogy ellenõrizzük, hogy a fájlt tényleg beillesztettük, menjen + vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti + mellett a fájlból bemásolt is ott van. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5. LECKE ÖSSZEFOGLALÓJA + + + 1. :!parancs végrehajt egy külsõ utasítást. + + Pár hasznos példa: + (MS-DOS) (Unix) + :!dir :!ls - könyvtárlista kiírása. + :!del FÁJLNÉV :!rm FÁJLNÉV - FÁJLNÉV nevû fájl törlése. + + 2. :w FÁJLNÉV kiírja a jelenlegi Vim-fájlt a lemezre FÁJNÉV néven. + + 3. :#,#w FÁJLNÉV kiírja a két sorszám (#) közötti sorokat FÁJLNÉV-be + Másik lehetõség, hogy a kezdõsornál Shift-v-t nyom lemegy az utolsó + sorra, majd ezt üti be :w FÁJLNÉV + + 4. :r FÁJLNÉV beolvassa a FÁJLNÉV fájlt és behelyezi a jelenlegi fájlba + a kurzorpozíció utáni sorba. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.1. lecke: A MEGNYITÁS (OPEN) PARANCS + + +** o beírásával nyit egy új sort a kurzor alatt és beszúró módba vált ** + + 1. Mozgassuk a kurzort a ---> kezdetû sorra. + + 2. o (kicsi) beírásával nyisson egy sort a kurzor ALATT! Ekkor + automatikusan beszúró (insert) módba kerül. + + 3. Másolja le a ---> jelû sort és megnyomásával lépjen ki + a beszúró módból. + +---> Az o lenyomása után a kurzor a következõ sor elején áll beszúró módban. + + 4. A kurzor FELETTI sor megnyitásához egyszerûen nagy O betût írjon +kicsi helyett. Próbálja ki a következõ soron! +Nyisson egy új sort efelett Shift-O megnyomásával, mialatt a kurzor +ezen a soron áll. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.2. lecke: AZ APPEND PARANCS + + + ** a lenyomásával a kurzor UTÁN szúrhatunk szöveget. ** + + 1. Mozgassuk a kurzort a következõ ---> kezdetû sor végére úgy, + hogy normál módban $-t ír be. + + 2. Kis "a" leütésével szöveget szúrhat be AMÖGÉ a karakter mögé, + amelyen a kurzor áll. + (A nagy "A" az egész sor végére írja a szöveget.) + +Megj: A Vimben a sor legvégére is lehet állni, azonban ez elõdjében + a Vi-ban nem lehetséges, ezért abban az a nélkül elég körülményes + a sor végéhez szöveget írni. + + 3. Egészítse ki az elsõ sort. Vegye észre, hogy az a utasítás (append) + teljesen egyezik az i-vel (insert) csupán a beszúrt szöveg helye + különbözik. + +---> Ez a sor lehetõvé teszi Önnek, hogy gyakorolja +---> Ez a sor lehetõvé teszi Önnek, hogy gyakorolja a sor végére beillesztést. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.3. lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA + + + ** Nagy R beírásával írhat felül több mint egy karaktert. ** + + 1. Mozgassuk a kurzort az elsõ ---> kezdetû sorra! + + 2. Helyezze a kurzort az elsõ szó elejére amely eltér a második + ---> kezdetû sor tartalmától (a 'az utolsóval' résztõl). + + 3. Nyomjon R karaktert és írja át a szöveg maradékát az elsõ sorban + úgy, hogy a két sor egyezõ legyen. + +---> Az elsõ sort tegye azonossá az utolsóval: használja a gombokat. +---> Az elsõ sort tegye azonossá a másodikkal: írjon R-t és az új szöveget. + + 4. Jegyezzük meg, ha -et nyomok, akkor a változatlanul hagyott + szövegek változatlanok maradnak. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.4. lecke: BEÁLLÍTÁSOK + +** Állítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetûktõl ** + + 1. Keressük meg az 'ignore'-t az beírva: + /ignore + Ezt ismételjük többször az n billentyûvel + + 2. Állítsuk be az 'ic' (Ignore case) lehetõséget így: + :set ic + + 3. Most keressünk ismét az 'ignore'-ra n-nel + Ismételjük meg többször a keresést: n + + 4. Állítsuk be a 'hlsearch' és 'incsearch' lehetõségeket: + :set hls is + + 5. Most ismét írjuk be a keresõparancsot, és lássuk mi történik: + /ignore + + 6. A kiemelést szüntessük meg alábbi utasítások egyikével: + :set nohls vagy :nohlsearch +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6. LECKE ÖSSZEFOGLALÓJA + + + 1. o beírásával új sort nyitunk meg a sor ALATT és a kurzor az új + sorban lesz beszúrás-módban. + Nagy O a sor FELETT nyit új sort, és oda kerül a kurzor. + + 2. a beírásával az aktuális karaktertõl UTÁN (jobbra) szúrhatunk be szöveget. + Nagy A automatikusan a sor legvégéhez adja hozzá a szöveget. + + 3. A nagy R beütésével átíró (replace) módba kerülünk lenyomásáig. + + 4. ":set xxx" beírásával az "xxx" opció állítható be. + + + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 7. lecke: AZ ON-LINE SÚGÓ PARANCSAI + + + ** Az online súgórendszer használata ** + + A Vim részletes súgóval rendelkezik. Induláshoz a következõk egyikét + tegye: + - nyomja meg a gombot (ha van ilyen) + - nyomja meg az gombot (ha van ilyen) + - írja be: :help + + :q beírásával zárhatja be a súgóablakot. + + Majdnem minden témakörrõl találhat súgót, argumentum megadásával + ":help" utasítás . Próbálja az alábbiakat ki (-t ne felejtsük): + + :help w + :help c_, 2006-2012 + diff --git a/share/vim/vim74/tutor/tutor.hu.utf-8 b/share/vim/vim74/tutor/tutor.hu.utf-8 new file mode 100644 index 00000000..67adcc56 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.hu.utf-8 @@ -0,0 +1,830 @@ +=============================================================================== +== Ü d v ö z ö l j ü k a V I M - o k t a t ó b a n - 1.5-ös verzió == +=============================================================================== + + A Vim egy nagyon hatékony szerkesztő, amelynek rengeteg utasítása + van, túl sok, hogy egy ilyen oktatóban (tutorban), mint az itteni + mindet elmagyarázzuk. Ez az oktató arra törekszik, hogy annyit + elmagyarázzon, amennyi elég, hogy könnyedén használjuk a Vim-et, az + általános célú szövegszerkesztőt. + + A feladatok megoldásához 25-30 perc szükséges attól függően, + mennyit töltünk a kísérletezéssel. + + A leckében szereplő utasítások módosítani fogják a szöveget. + Készítsen másolatot erről a fájlról, ha gyakorolni akar. + (Ha "vimtutor"-ral indította, akkor ez már egy másolat.) + + Fontos megérteni, hogy ez az oktató cselekedve taníttat. + Ez azt jelenti, hogy Önnek ajánlott végrehajtania az utasításokat, + hogy megfelelően megtanulja azokat. Ha csak olvassa, elfelejti! + + Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és + Nyomja meg megfelelő számúszor a j gombot, hogy az 1.1-es + lecke teljesen a képernyőn legyen! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.1. lecke: A KURZOR MOZGATÁSA + + + ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. ** + ^ + k Tipp: A h billentyű van balra, és balra mozgat + < h l > A l billentyű van jobbra, és jobbra mozgat + j A j billentyű olyan, mint egy lefele nyíl + v + 1. Mozgassa a kurzort körbe az ablakban, amíg hozzá nem szokik! + + 2. Tartsa lenyomva a lefelét (j), akkor ismétlődik! +---> Most tudja, hogyan mehet a következő leckére. + + 3. A lefelé gomb használatával menjen a 1.2. leckére! + +Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy + normál módba kerüljön, és ismételje meg a parancsot! + +Megj: A kurzor gomboknak is működniük kell, de a hjkl használatával + sokkal gyorsabban tud, mozogni, ha hozzászokik. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.2. lecke: BE ÉS KILÉPÉS A VIMBŐL + + + !! MEGJ: Mielőtt végrehajtja az alábbi lépéseket, olvassa végig a leckét !! + + 1. Nyomja meg az gombot (hogy biztosan normál módban legyen). + + 2. Írja: :q! . + +---> Ezzel kilép a szerkesztőből a változások MENTÉSE NÉLKÜL. + Ha menteni szeretné a változásokat és kilépni, írja: + :wq + + 3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe az + oktatóba hozza: + Ez valószínűleg: vimtutor + Normális esetben ezt írná: vim tutor.hu + +---> 'vim' jelenti a vimbe belépést, 'tutor.hu' a fájl, amit szerkeszteni kíván. + + 4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket + 1-től 3-ig, hogy kilépjen és visszatérjen a szerkesztőbe. Azután + menjen az 1.3. leckére. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS + + +** Normál módban nyomjon x-et, hogy a kurzor alatti karaktert törölje. ** + + 1. Mozgassa a kurzort a ---> kezdetű sorra! + + 2. A hibák kijavításához mozgassa a kurzort amíg a törlendő karakter + fölé nem ér. + + 3. Nyomja meg az x gombot, hogy törölje a nem kívánt karaktert. + + 4. Ismételje a 2, 3, 4-es lépéseket, hogy kijavítsa a mondatot. + +---> ŐŐszi éjjjell izziik aa galaggonya rruuhája. + + 5. Ha a sor helyes, ugorjon a 1.4. leckére. + +MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS + + + ** Normál módban i megnyomásával lehet beilleszteni. ** + + 1. Az alábbi első ---> kezdetű sorra menjen. + + 2. Ahhoz, hogy az elsőt azonossá tegye a másodikkal, mozgassa a kurzort + az első karakterre, amely UTÁN szöveget kell beszúrni. + + 3. Nyomjon i-t és írja be a megfelelő szöveget. + + 4. Amikor mindent beírt, nyomjon -et, hogy Normál módba visszatérjen. + Ismételje a 2 és 4 közötti lépéseket, hogy kijavítsa a mondatot. + +---> Az átható soól hizik pár ész. +---> Az itt látható sorból hiányzik pár rész. + + 5. Ha már begyakorolta a beszúrást, menjen az alábbi összefoglalóra. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1. LECKE ÖSSZEFOGLALÓJA + + + 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. + h (balra) j (le) k (fel) l (jobbra) + + 2. A Vimbe (a $ prompttól) így léphet be: vim FILENAME + + 3. A Vimből így léphet ki: :q! a változtatások eldobásával. + vagy így: :wq a változások mentésével. + + 4. A kurzor alatti karakter törlése normál módban: x + + 5. Szöveg beszúrása a kurzor után normál módban: + i gépelje be a szöveget + +MEGJ: Az megnyomása normál módba viszi, vagy megszakít egy nem befejezett + részben befejezett parancsot. + +Most folytassuk a 2. leckével! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.1. lecke: TÖRLŐ UTASÍTÁSOK + + + ** dw töröl a szó végéig. ** + + 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! + + 2. Mozgassa a kurzort a ---> kezdetű sorra! + + 3. Mozgassa a kurzort arra annak a szónak az elejére, amit törölni szeretne. + Törölje az állatokat a mondatból. + + 4. A szó törléséhez írja: dw + + MEGJ: Ha rosszul kezdte az utasítást csak nyomjon gombot + a megszakításához. + +---> Pár szó kutya nem uhu illik pingvin a mondatba tehén. + + 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.2. lecke: MÉG TÖBB TÖRLŐ UTASÍTÁS + + + ** d$ beírásával a sor végéig törölhet. ** + + 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! + + 2. Mozgassa a kurzort a ---> kezdetű sorra! + + 3. Mozgassa a kurzort a helyes sor végére (az első . UTÁN)! + + 4. d$ begépelésével törölje a sor végét! + +---> Valaki a sor végét kétszer gépelte be. kétszer gépelte be. + + + 5. Menjen a 2.3. leckére, hogy megértse mi történt! + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.3. lecke: UTASÍTÁSOKRÓL ÉS MOZGÁSOKRÓL + + + A d (delete=törlés) utasítás formája a következő: + + [szám] d mozgás VAGY d [szám] mozgás + Ahol: + szám - hányszor hajtódjon végre a parancs (elhagyható, alapérték=1). + d - a törlés (delete) utasítás. + mozgás - amin a parancsnak teljesülnie kell (alább listázva). + + Mozgások rövid listája: + w - a kurzortól a szó végéig, beleértve a szóközt. + e - a kurzortól a szó végéig, NEM beleértve a szóközt. + $ - a kurzortól a sor végéig. + +MEGJ: Csupán a mozgás begépelésével (parancs nélkül) + a kurzor mozgás által megadott helyre kerül. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.4. lecke: EGÉSZ SOROK FELDOLGOZÁSA + + + ** dd beírásával törölheti az egész sort. ** + + A teljes sor törlésének gyakorisága miatt a Vi tervezői elhatározták, + hogy könnyebb lenne csupán a d-t kétszer megnyomni, hogy egy sort töröljünk. + + 1. Mozgassa a kurzort az alábbi kifejezések második sorára! + 2. dd begépelésével törölje a sort! + 3. Menjen a 3. (eredetileg 4.) sorra! + 4. 2dd (ugyebár szám-utasítás-mozgás) begépelésével töröljön két sort! + + 1) Alvó szegek a jéghideg homokban, + 2) - kezdi a költő - + 3) Plakátmagányban ázó éjjelek. + 4) Pingvinek ne féljetek, + 5) Távolról egy vaku villant, + 6) Égve hagytad a folyosón a villanyt. + 7) Ma ontják véremet. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS + + +** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. ** + + 1. Menjünk az alábbi ---> kezdetű sor első hibájára! + 2. x lenyomásával törölje az első felesleges karaktert! + 3. u megnyomásával vonja vissza az utolsónak végrehajtott utasítást! + 4. Másodjára javítson ki minden hibát a sorban az x utasítással! + 5. Most nagy U -val állítsa vissza a sor eredeti állapotát! + 6. Nyomja meg az u gombot párszor, hogy az U és az azt megelőző utasításokat + visszaállítsa! + 7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a + visszavont parancsokat (redo)! + +---> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. + + 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 2. LECKE ÖSSZEFOGLALÓJA + + + 1. Törlés a kurzortól a szó végéig: dw + + 2. Törlés a kurzortól a sor végéig: d$ + + 3. Egész sor törlése: dd + + 4. Egy utasítás alakja normál módban: + + [szám] utasítás mozgás VAGY utasítás [szám] mozgás + ahol: + szám - hányszor ismételjük a parancsot + utasítás - mit tegyünk, pl. d a törléskor + mozgás - mire hasson az utasítás, például w (szó=word), + $ (a sor végéig), stb. + + 5. Az előző tett visszavonása (undo): u (kis u) + A sor összes változásának visszavonása: U (nagy U) + Visszavonások visszavonása: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.1. lecke: A BEILLESZTÉS (PUT) PARANCS + + + ** p leütésével az utolsónak töröltet a kurzor után illeszthetjük. ** + + 1. Mozgassuk a kurzort az alábbi sorok első sorára. + + 2. dd leütésével töröljük a sort és eltárolódik a Vim pufferében. + + 3. Mozgassuk a kurzort azelőtt a sor ELŐTTI sorba, ahová mozgatni + szeretnénk a törölt sort. + + 4. Normál módban írjunk p betűt a törölt sor beillesztéséhez. + + 5. Folytassuk a 2-4. utasításokkal hogy a helyes sorrendet kapjuk. + + d) Can you learn too? + b) Violets are blue, + c) Intelligence is learned, + a) Roses are red, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS + + +** r és a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. ** + + 1. Mozgassuk a kurzort az első ---> kezdetű sorra! + + 2. Mozgassuk a kurzort az első hiba fölé! + + 3. r majd a kívánt karakter leütésével változtassuk meg a hibásat! + + 4. A 2. és 3. lépésekkel javítsuk az összes hibát! + +---> Whan this lime was tuoed in, someone presswd some wrojg keys! +---> When this line was typed in, someone pressed some wrong keys! + + 5. Menjünk a 3.2. leckére! + +MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.3. lecke: A CSERE (CHANGE) PARANCS + + + ** A szó egy részének megváltoztatásához írjuk: cw . ** + + 1. Mozgassuk a kurzort az első ---> kezdetű sorra! + + 2. Vigye a kurzort a Ezen szó z betűje fölé! + + 3. cw és a helyes szórész (itt 'bben') beírásával javítsa a szót! + + 4. lenyomása után a következő hibára ugorjon (az első cserélendő + karakterre)! + + 5. A 3. és 4. lépések ismétlésével az első mondatot tegye a másodikkal + azonossá! + +---> Ezen a sorrrrr pár szóra meg kell változzanak a change utaskíréső. +---> Ebben a sorban pár szót meg kell változtatni a change utasítással. + +Vegyük észre, hogy a cw nem csak a szót írja át, hanem beszúró +(insert) módba vált. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3.4. lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL + + + ** A c utasítás használható ugyanazokkal az mozgásokkal mint a törlés ** + + 1. A change utasítás a törléssel azonosan viselkedik. A forma: + + [szám] c mozgás OR c [szám] mozgás + + 2. A mozgások is azonosak, pl. w (szó), $ (sorvég), stb. + + 3. Mozgassuk a kurzort az első ---> kezdetű sorra! + + 4. Menjünk az első hibára! + + 5. c$ begépelésével a sorvégeket tegyük azonossá és nyomjunk -et! + +---> Ennek a sornak a vége kiigazításra szorul, hogy megegyezzen a másodikkal. +---> Ennek a sornak a vége a c$ paranccsal változtatható meg. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 3. LECKE ÖSSZEFOGLALÓJA + + + 1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget + a kurzor UTÁN helyezi (ha sor került törlésre, a kurzor alatti sorba). + + 2. A kurzor alatti karakter átírásához az r-et és azt a karaktert + nyomjuk, amellyel az eredetit felül szeretnénk írni. + + 3. A változtatás (c) utasítás a karaktertől az mozgás végéig + változtatja meg az mozgást. Például a cw a kurzortól a szó végéig, + a c$ a sor végéig. + + 4. A változtatás formátuma: + + [szám] c mozgás VAGY c [szám] mozgás + +Ugorjunk a következő leckére! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.1. lecke: HELY ÉS FÁJLÁLLAPOT + + + ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát. + SHIFT-G leütésével a fájl adott sorára ugorhatunk. ** + + Megj: Olvassuk el az egész leckét a lépések végrehajtása előtt!! + + 1. Tartsuk nyomva a Ctrl gombot és nyomjunk g-t. Az állapotsor + megjelenik a lap alján a fájlnévvel és az aktuális sor sorszámával. + Jegyezzük meg a sorszámot a 3. lépéshez! + + 2. Nyomjunk Shift-G-t a lap aljára ugráshoz! + + 3. Üssük be az eredeti sor számát, majd üssünk shift-G-t! Ezzel + visszajutunk az eredeti sorra ahol Ctrl-g-t nyomtunk. + (A beírt szám NEM fog megjelenni a képernyőn.) + + 4. Ha megjegyezte a feladatot, hajtsa végre az 1-3. lépéseket! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.2. lecke: A KERESÉS (SEARCH) PARANCS + + + ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. ** + + 1. Normál módban üssünk / karaktert! Ez és a kurzor megjelenik + a képernyő alján, ahogy a : utasítás is. + + 2. Írjuk be: 'hiibaa' ! Ez az a szó amit keresünk. + + 3. A kifejezés újabb kereséséhez üssük le egyszerűen: n . + A kifejezés ellenkező irányban történő kereséséhez ezt üssük be: Shift-N . + + 4. Ha visszafelé szeretne keresni, akkor ? kell a / helyett. + +---> "hiibaa" nem a helyes módja a hiba leírásának; a hiibaa egy hiba. + +Megj: Ha a keresés eléri a fájl végét, akkor az elején kezdi. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.3. lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE + + + ** % leütésével megtaláljuk a ),], vagy } párját. ** + + 1. Helyezze a kurzort valamelyik (, [, vagy { zárójelre a ---> kezdetű + sorban! + + 2. Üssön % karaktert! + + 3. A kurzor a zárójel párjára fog ugrani. + + 4. % leütésével visszaugrik az eredeti zárójelre. + +---> Ez ( egy tesztsor (-ekkel, [-ekkel ] és {-ekkel } a sorban. )) + +Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a + zárójelek nem párosak! + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA + + + ** :s/régi/új/g begépelésével az 'új'-ra cseréljük a 'régi'-t. ** + + 1. Menjünk a ---> kezdetű sorra! + + 2. Írjuk be: :s/eggy/egy . Ekkor csak az első változik meg a + sorban. + + 3. Most ezt írjuk: :s/eggy/egg/g amely globálisan helyettesít + a sorban, azaz minden előfordulást. + Ez a sorban minden előfordulást helyettesít. + +---> eggy heggy meggy, szembe jön eggy másik heggy. + + 4. Két sor között a karaktersor minden előfordulásának helyettesítése: + :#,#s/régi/új/g ahol #,# a két sor sorszáma. + :%s/régi/új/g a fájlbeli összes előfordulás helyettesítése. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 4. LECKE ÖSSZEFOGLALÓJA + + + 1. Ctrl-g kiírja az kurzor helyét a fájlban és a fájl állapotát. + Shift-G a fájl végére megy, gg az elejére. Egy szám után + Shift-G az adott számú sorra ugrik. + + 2. / után egy kifejezés ELŐREFELE keresi a kifejezést. + 2. ? után egy kifejezés VISSZAFELE keresi a kifejezést. + Egy keresés után az n a következő előfordulást keresi azonos irányban + Shift-N az ellenkező irányban keres. + + 3. % begépelésével, ha (,),[,],{, vagy } karakteren vagyunk a zárójel + párjára ugrik. + + 4. az első régi helyettesítése újjal a sorban :s/régi/új + az összes régi helyettesítése újjal a sorban :s/régi/új/g + két sor közötti kifejezésekre :#,#s/régi/új/g + # helyén az aktuális sor (.) és az utolsó ($) is állhat :.,$/régi/új/g + A fájlbeli összes előfordulás helyettesítése :%s/régi/új/g + Mindenkori megerősítésre vár 'c' hatására :%s/régi/új/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.1. lecke: KÜLSŐ PARANCS VÉGREHAJTÁSA + + + ** :! után külső parancsot írva végrehajtódik a parancs. ** + + 1. Írjuk be az ismerős : parancsot, hogy a kurzort a képernyő aljára + helyezzük. Ez lehetővé teszi egy parancs beírását. + + 2. ! (felkiáltójel) beírásával tegyük lehetővé külső héj (shell)-parancs + végrehajtását. + + 3. Írjunk például ls parancsot a ! után majd üssünk -t. Ez ki + fogja listázni a könyvtárunkat ugyanúgy, mintha a shell promptnál + lennénk. Vagy írja ezt :!dir ha az ls nem működik. + +Megj: Ilymódon bármely külső utasítás végrehajtható. + +Megj: Minden : parancs után -t kell ütni. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.2. lecke: BŐVEBBEN A FÁJLOK ÍRÁSÁRÓL + + + ** A fájlok változásait így írhatjuk ki :w FÁJLNÉV. ** + + 1. :!dir vagy :!ls beírásával listázzuk a könyvtárunkat! + Ön már tudja, hogy -t kell ütnie utána. + + 2. Válasszon egy fájlnevet, amely még nem létezik pl. TESZT! + + 3. Írja: :w TESZT (ahol TESZT a választott fájlnév)! + + 4. Ez elmenti a teljes fájlt (a Vim oktatóját) TESZT néven. + Ellenőrzésképp írjuk ismét :!dir hogy lássuk a könyvtárat! + (Felfelé gombbal : után az előző utasítások visszahozhatóak.) + +Megj: Ha Ön kilépne a Vimből és és visszatérne a TESZT fájlnévvel, akkor a + fájl az oktató mentéskori pontos másolata lenne. + + 5. Távolítsa el a fájlt (MS-DOS): :!del TESZT + vagy (Unix): :!rm TESZT + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.3. lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA + + + ** A fájl egy részének kiírásához írja :#,# w FÁJLNÉV ** + + 1. :!dir vagy :!ls beírásával listázza a könyvtárat, és válasszon egy + megfelelő fájlnevet, pl. TESZT. + + 2. Mozgassa a kurzort ennek az oldalnak a tetejére, és nyomjon + Ctrl-g-t, hogy megtudja a sorszámot. JEGYEZZE MEG A SZÁMOT! + + 3. Most menjen a lap aljára, és üsse be ismét: Ctrl-g. EZT A SZÁMOT + IS JEGYEZZE MEG! + + 4. Ha csak ezt a részét szeretné menteni a fájlnak, írja :#,# w TESZT + ahol #,# a két sorszám, amit megjegyzett, TESZT az Ön fájlneve. + + 5. Ismét nézze meg, hogy a fájl ott van (:!dir) de NE törölje. + + 6. Vimben létezik egy másik lehetőség: nyomja meg a Shift-V gombpárt + az első menteni kívánt soron, majd menjen le az utolsóra, ezután + írja :w TESZT2 Ekkor a TESZT2 fájlba kerül a kijelölt rész. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5.4. lecke: FÁJLOK VISSZAÁLLÍTÁSA ÉS ÖSSZEFŰZÉSE + + + ** Egy fájl tartalmának beillesztéséhez írja :r FÁJLNÉV ** + + 1. :!dir beírásával nézze meg, hogy az Ön TESZT fájlja létezik még. + + 2. Helyezze a kurzort ennek az oldalnak a tetejére. + +MEGJ: A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva + keresse meg ismét ezt a leckét. + + 3. Most szúrja be a TESZT nevű fájlt a :r TESZT paranccsal, ahol + TESZT az Ön fájljának a neve. + +MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. + + 4. Hogy ellenőrizzük, hogy a fájlt tényleg beillesztettük, menjen + vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti + mellett a fájlból bemásolt is ott van. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 5. LECKE ÖSSZEFOGLALÓJA + + + 1. :!parancs végrehajt egy külső utasítást. + + Pár hasznos példa: + (MS-DOS) (Unix) + :!dir :!ls - könyvtárlista kiírása. + :!del FÁJLNÉV :!rm FÁJLNÉV - FÁJLNÉV nevű fájl törlése. + + 2. :w FÁJLNÉV kiírja a jelenlegi Vim-fájlt a lemezre FÁJNÉV néven. + + 3. :#,#w FÁJLNÉV kiírja a két sorszám (#) közötti sorokat FÁJLNÉV-be + Másik lehetőség, hogy a kezdősornál Shift-v-t nyom lemegy az utolsó + sorra, majd ezt üti be :w FÁJLNÉV + + 4. :r FÁJLNÉV beolvassa a FÁJLNÉV fájlt és behelyezi a jelenlegi fájlba + a kurzorpozíció utáni sorba. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.1. lecke: A MEGNYITÁS (OPEN) PARANCS + + +** o beírásával nyit egy új sort a kurzor alatt és beszúró módba vált ** + + 1. Mozgassuk a kurzort a ---> kezdetű sorra. + + 2. o (kicsi) beírásával nyisson egy sort a kurzor ALATT! Ekkor + automatikusan beszúró (insert) módba kerül. + + 3. Másolja le a ---> jelű sort és megnyomásával lépjen ki + a beszúró módból. + +---> Az o lenyomása után a kurzor a következő sor elején áll beszúró módban. + + 4. A kurzor FELETTI sor megnyitásához egyszerűen nagy O betűt írjon +kicsi helyett. Próbálja ki a következő soron! +Nyisson egy új sort efelett Shift-O megnyomásával, mialatt a kurzor +ezen a soron áll. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.2. lecke: AZ APPEND PARANCS + + + ** a lenyomásával a kurzor UTÁN szúrhatunk szöveget. ** + + 1. Mozgassuk a kurzort a következő ---> kezdetű sor végére úgy, + hogy normál módban $-t ír be. + + 2. Kis "a" leütésével szöveget szúrhat be AMÖGÉ a karakter mögé, + amelyen a kurzor áll. + (A nagy "A" az egész sor végére írja a szöveget.) + +Megj: A Vimben a sor legvégére is lehet állni, azonban ez elődjében + a Vi-ban nem lehetséges, ezért abban az a nélkül elég körülményes + a sor végéhez szöveget írni. + + 3. Egészítse ki az első sort. Vegye észre, hogy az a utasítás (append) + teljesen egyezik az i-vel (insert) csupán a beszúrt szöveg helye + különbözik. + +---> Ez a sor lehetővé teszi Önnek, hogy gyakorolja +---> Ez a sor lehetővé teszi Önnek, hogy gyakorolja a sor végére beillesztést. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.3. lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA + + + ** Nagy R beírásával írhat felül több mint egy karaktert. ** + + 1. Mozgassuk a kurzort az első ---> kezdetű sorra! + + 2. Helyezze a kurzort az első szó elejére amely eltér a második + ---> kezdetű sor tartalmától (a 'az utolsóval' résztől). + + 3. Nyomjon R karaktert és írja át a szöveg maradékát az első sorban + úgy, hogy a két sor egyező legyen. + +---> Az első sort tegye azonossá az utolsóval: használja a gombokat. +---> Az első sort tegye azonossá a másodikkal: írjon R-t és az új szöveget. + + 4. Jegyezzük meg, ha -et nyomok, akkor a változatlanul hagyott + szövegek változatlanok maradnak. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6.4. lecke: BEÁLLÍTÁSOK + +** Állítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetűktől ** + + 1. Keressük meg az 'ignore'-t az beírva: + /ignore + Ezt ismételjük többször az n billentyűvel + + 2. Állítsuk be az 'ic' (Ignore case) lehetőséget így: + :set ic + + 3. Most keressünk ismét az 'ignore'-ra n-nel + Ismételjük meg többször a keresést: n + + 4. Állítsuk be a 'hlsearch' és 'incsearch' lehetőségeket: + :set hls is + + 5. Most ismét írjuk be a keresőparancsot, és lássuk mi történik: + /ignore + + 6. A kiemelést szüntessük meg alábbi utasítások egyikével: + :set nohls vagy :nohlsearch +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 6. LECKE ÖSSZEFOGLALÓJA + + + 1. o beírásával új sort nyitunk meg a sor ALATT és a kurzor az új + sorban lesz beszúrás-módban. + Nagy O a sor FELETT nyit új sort, és oda kerül a kurzor. + + 2. a beírásával az aktuális karaktertől UTÁN (jobbra) szúrhatunk be szöveget. + Nagy A automatikusan a sor legvégéhez adja hozzá a szöveget. + + 3. A nagy R beütésével átíró (replace) módba kerülünk lenyomásáig. + + 4. ":set xxx" beírásával az "xxx" opció állítható be. + + + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 7. lecke: AZ ON-LINE SÚGÓ PARANCSAI + + + ** Az online súgórendszer használata ** + + A Vim részletes súgóval rendelkezik. Induláshoz a következők egyikét + tegye: + - nyomja meg a gombot (ha van ilyen) + - nyomja meg az gombot (ha van ilyen) + - írja be: :help + + :q beírásával zárhatja be a súgóablakot. + + Majdnem minden témakörről találhat súgót, argumentum megadásával + ":help" utasítás . Próbálja az alábbiakat ki (-t ne felejtsük): + + :help w + :help c_, 2006-2012 + diff --git a/share/vim/vim73/tutor/tutor.info b/share/vim/vim74/tutor/tutor.info similarity index 100% rename from share/vim/vim73/tutor/tutor.info rename to share/vim/vim74/tutor/tutor.info diff --git a/share/vim/vim73/tutor/tutor.it b/share/vim/vim74/tutor/tutor.it similarity index 100% rename from share/vim/vim73/tutor/tutor.it rename to share/vim/vim74/tutor/tutor.it diff --git a/share/vim/vim73/tutor/tutor.it.utf-8 b/share/vim/vim74/tutor/tutor.it.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.it.utf-8 rename to share/vim/vim74/tutor/tutor.it.utf-8 diff --git a/share/vim/vim74/tutor/tutor.ja.euc b/share/vim/vim74/tutor/tutor.ja.euc new file mode 100644 index 00000000..2160e00e --- /dev/null +++ b/share/vim/vim74/tutor/tutor.ja.euc @@ -0,0 +1,977 @@ +=============================================================================== += V I M ¶µ ËÜ (¥Á¥å¡¼¥È¥ê¥¢¥ë) ¤Ø ¤è ¤¦ ¤³ ¤½ - Version 1.7 = +=============================================================================== + + Vim ¤Ï¡¢¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ÇÀâÌÀ¤¹¤ë¤Ë¤Ï¿¤¹¤®¤ëÄø¤Î¥³¥Þ¥ó¥É¤òÈ÷¤¨¤¿Èó¾ï + ¤Ë¶¯ÎϤʥ¨¥Ç¥£¥¿¡¼¤Ç¤¹¡£¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ï¡¢¤¢¤Ê¤¿¤¬ Vim ¤òËüǽ¥¨¥Ç¥£ + ¥¿¡¼¤È¤·¤Æ»È¤¤¤³¤Ê¤»¤ë¤è¤¦¤Ë¤Ê¤ë¤Î¤Ë½½Ê¬¤Ê¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤ÆÀâÌÀ¤ò¤¹¤ë¤è¤¦ + ¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ + + ¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò´°Î»¤¹¤ë¤Î¤ËɬÍפʻþ´Ö¤Ï¡¢³Ð¤¨¤¿¥³¥Þ¥ó¥É¤ò»î¤¹¤Î¤Ë¤É¤ì¤À + ¤±»þ´Ö¤ò»È¤¦¤Î¤«¤Ë¤â¤è¤ê¤Þ¤¹¤¬¡¢¤ª¤è¤½25¤«¤é30ʬ¤Ç¤¹¡£ + + ATTENTION: + °Ê²¼¤ÎÎý½¬ÍÑ¥³¥Þ¥ó¥É¤Ë¤Ï¤³¤Îʸ¾Ï¤òÊѹ¹¤¹¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£Îý½¬¤ò»Ï¤á¤ëÁ° + ¤Ë¥³¥Ô¡¼¤òºîÀ®¤·¤Þ¤·¤ç¤¦("vimtutor"¤·¤¿¤Ê¤é¤Ð¡¢´û¤Ë¥³¥Ô¡¼¤µ¤ì¤Æ¤¤¤Þ¤¹)¡£ + + ¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤¬¡¢»È¤¦¤³¤È¤Ç³Ð¤¨¤é¤ì¤ë»ÅÁȤߤˤʤäƤ¤¤ë¤³¤È¤ò¡¢¿´¤· + ¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Àµ¤·¤¯³Ø½¬¤¹¤ë¤Ë¤Ï¥³¥Þ¥ó¥É¤ò¼ÂºÝ¤Ë»î¤µ¤Ê¤±¤ì¤Ð + ¤Ê¤é¤Ê¤¤¤Î¤Ç¤¹¡£Ê¸¾Ï¤òÆɤó¤À¤À¤±¤Ê¤é¤Ð¡¢¤­¤Ã¤È˺¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹!¡£ + + ¤µ¤¡¡¢Caps¥í¥Ã¥¯(Shift-Lock)¥­¡¼¤¬²¡¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤·¤¿¸å¡¢²èÌÌ¤Ë + ¥ì¥Ã¥¹¥ó1.1 ¤¬Á´Éôɽ¼¨¤µ¤ì¤ë¤È¤³¤í¤Þ¤Ç¡¢j ¥­¡¼¤ò²¡¤·¤Æ¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ + ¤·¤ç¤¦¡£ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 1.1: ¥«¡¼¥½¥ë¤Î°ÜÆ° + + + ** ¥«¡¼¥½¥ë¤ò°ÜÆ°¤¹¤ë¤Ë¤Ï¡¢¼¨¤µ¤ì¤ëÍÍ¤Ë h,j,k,l ¤ò²¡¤·¤Þ¤¹ ** + ^ + k ¥Ò¥ó¥È: h ¥­¡¼¤Ïº¸Êý¸þ¤Ë°ÜÆ°¤·¤Þ¤¹¡£ + < h l > l ¥­¡¼¤Ï±¦Êý¸þ¤Ë°ÜÆ°¤·¤Þ¤¹¡£ + j j ¥­¡¼¤Ï²¼Ìð°õ¥­¡¼¤Î¤è¤¦¤Ê¥­¡¼¤Ç¤¹¡£ + v + 1. °ÜÆ°¤Ë´·¤ì¤ë¤Þ¤Ç¡¢¥¹¥¯¥ê¡¼¥ó¤Ç¥«¡¼¥½¥ë°ÜÆ°¤µ¤»¤Þ¤·¤ç¤¦¡£ + + 2. ²¼¤Ø¤Î¥­¡¼(j)¤ò²¡¤·¤Ä¤Å¤±¤ë¤È¡¢Ï¢Â³¤·¤Æ°ÜÆ°¤Ç¤­¤Þ¤¹¡£ + ¤³¤ì¤Ç¼¡¤Î¥ì¥Ã¥¹¥ó¤Ë°ÜÆ°¤¹¤ëÊýË¡¤¬¤ï¤«¤ê¤Þ¤·¤¿¤Í¡£ + + 3. ²¼¤Ø¤Î¥­¡¼¤ò»È¤Ã¤Æ¡¢¥ì¥Ã¥¹¥ó1.2 ¤Ë°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + +NOTE: ²¿¤ò¥¿¥¤¥×¤·¤Æ¤¤¤ë¤«È½¤é¤Ê¤¯¤Ê¤Ã¤¿¤é¡¢¤ò²¡¤·¤Æ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤· + ¤Þ¤¹¡£¤½¤ì¤«¤éÆþÎϤ·¤è¤¦¤È¤·¤Æ¤¤¤¿¥³¥Þ¥ó¥É¤òºÆÆþÎϤ·¤Þ¤·¤ç¤¦¡£ + +NOTE: ¥«¡¼¥½¥ë¥­¡¼¤Ç¤â°ÜÆ°¤Ç¤­¤Þ¤¹¡£¤·¤«¤· hjkl ¤Ë°ìÅÙ´·¤ì¤Æ¤·¤Þ¤¨¤Ð¡¢¤Ï¤ë¤« + ¤Ë®¤¯°ÜÆ°¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤Ç¤·¤ç¤¦¡£¤¤¤ä¥Þ¥¸¤Ç! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 1.2: VIM ¤Îµ¯Æ°¤È½ªÎ» + + + !! NOTE: °Ê²¼¤Î¤¢¤é¤æ¤ë¥¹¥Æ¥Ã¥×¤ò¹Ô¤¦Á°¤Ë¡¢¤³¤Î¥ì¥Ã¥¹¥ó¤òÆɤߤޤ·¤ç¤¦!! + + 1. ¥­¡¼¤ò²¡¤·¤Þ¤·¤ç¤¦¡£(³Î¼Â¤Ë¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤¹¤ë¤¿¤á) + + 2. ¼¡¤Î¤è¤¦¤Ë¥¿¥¤¥×: :q! + ¤³¤ì¤Ë¤è¤êÊÔ½¸¤·¤¿ÆâÍƤòÊݸ¤»¤º¤Ë¥¨¥Ç¥£¥¿¤¬½ªÎ»¤·¤Þ¤¹¡£ + + 3. ¥·¥§¥ë¥×¥í¥ó¥×¥È¤¬½Ð¤Æ¤­¤¿¤é¡¢¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò»Ï¤á¤ë°Ù¤Ë¤Ë¥³¥Þ¥ó¥É + ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ + ¤½¤Î¥³¥Þ¥ó¥É¤Ï: vimtutor + + 4. ¤³¤ì¤Þ¤Ç¤Î¥¹¥Æ¥Ã¥×¤ò³Ð¤¨¼«¿®¤¬¤Ä¤¤¤¿¤Ê¤é¤Ð¡¢¥¹¥Æ¥Ã¥× 1 ¤«¤é 3 ¤Þ¤Ç¤ò¼Â + ºÝ¤Ë»î¤·¤Æ¡¢Vim ¤ò1ÅÙ½ªÎ»¤·¤Æ¤«¤éºÆ¤Óµ¯Æ°¤·¤Þ¤·¤ç¤¦¡£ + +NOTE: :q! ¤ÏÁ´¤Æ¤ÎÊѹ¹¤òÇË´þ¤·¤Þ¤¹¡£¥ì¥Ã¥¹¥ó¤Ë¤ÆÊѹ¹¤ò¥Õ¥¡¥¤¥ë¤ËÊÝ + ¸¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤âÊÙ¶¯¤·¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£ + + 5. 1.3¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤µ¤»¤Þ¤·¤ç¤¦¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 1.3: ¥Æ¥­¥¹¥ÈÊÔ½¸ - ºï½ü + + + ** ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤Æ¥«¡¼¥½¥ë¤Î²¼¤Îʸ»ú¤òºï½ü¤¹¤ë¤Ë¤Ï x ¤ò²¡¤·¤Þ¤¹ ** + + 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 2. ´Ö°ã¤¤¤ò½¤Àµ¤¹¤ë¤¿¤á¤Ë¡¢ºï½ü¤¹¤ëºÇ½é¤Îʸ»ú¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ + + 3. ÉÔɬÍפÊʸ»ú¤ò x ¤ò²¡¤·¤Æºï½ü¤·¤Þ¤·¤ç¤¦¡£ + + 4. ʸ¤¬Àµ¤·¤¯¤Ê¤ë¤Þ¤Ç ¥¹¥Æ¥Ã¥× 2 ¤«¤é 4 ¤ò·«¤êÊÖ¤·¤Þ¤·¤ç¤¦¡£ + +---> ¤½¤Î ¤¦¤¦¤µ¤® ¤Ï ¤Ä¤Ä¤­¤­ ¤ò ¤³¤¨¤¨¤Æ¤Æ ¤È¤Ó¤Ï¤Í¤¿¤¿ + + 5. ¹Ô¤¬Àµ¤·¤¯¤Ê¤Ã¤¿¤é¡¢¥ì¥Ã¥¹¥ó 1.4 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + +NOTE: Á´¤Æ¤Î¥ì¥Ã¥¹¥ó¤òÄ̤¸¤Æ¡¢³Ð¤¨¤è¤¦¤È¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¼ÂºÝ¤Ë¤ä¤Ã¤Æ¤ß¤Þ¤·¤ç¤¦¡£ + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 1.4: ¥Æ¥­¥¹¥ÈÊÔ½¸ - ÁÞÆþ + + + ** ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤Æ¥Æ¥­¥¹¥È¤òÁÞÆþ¤¹¤ë¤Ë¤Ï i ¤ò²¡¤·¤Þ¤¹ ** + + 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿ºÇ½é¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 2. 1¹ÔÌܤò2¹ÔÌܤÈƱ¤¸Íͤˤ¹¤ë¤¿¤á¤Ë¡¢¥Æ¥­¥¹¥È¤òÁÞÆþ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤°ÌÃÖ + ¤Î¼¡¤Îʸ»ú¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ + + 3. i ¥­¡¼¤ò²¡¤·¤Æ¤«¤é¡¢Äɲä¬É¬ÍפÊʸ»ú¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + + 4. ´Ö°ã¤¤¤ò½¤Àµ¤·¤¿¤é ¤ò²¡¤·¤Æ¥³¥Þ¥ó¥É¥â¡¼¥É¤ËÌá¤ê¡¢Àµ¤·¤¤Ê¸¤Ë¤Ê¤ëÍÍ + ¤Ë¥¹¥Æ¥Ã¥× 2 ¤«¤é 4 ¤ò·«¤êÊÖ¤·¤Þ¤·¤ç¤¦¡£ + +---> ¤³¤Î ¤Ë¤Ï ­¤ê¤Ê¤¤ ¥Æ¥­¥¹¥È ¤¢¤ë¡£ +---> ¤³¤Î ¹Ô ¤Ë¤Ï ´ö¤Ä¤« ­¤ê¤Ê¤¤ ¥Æ¥­¥¹¥È ¤¬ ¤¢¤ë¡£ + + 5. ÁÞÆþ¤ÎÊýË¡¤¬¤ï¤«¤Ã¤¿¤é¥ì¥Ã¥¹¥ó 1.5 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 1.5: ¥Æ¥­¥¹¥ÈÊÔ½¸ - Äɲà + + + ** ¥Æ¥­¥¹¥È¤òÄɲ乤ë¤Ë¤Ï A ¤ò²¡¤·¤Þ¤·¤ç¤¦ ** + + 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿ºÇ½é¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + ¥«¡¼¥½¥ë¤¬¤½¤Îʸ»ú¾å¤Ë¤¢¤Ã¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ + + 2. Äɲä¬É¬Íפʾì½ê¤Ç A ¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + + 3. ¥Æ¥­¥¹¥È¤òÄɲä·½ª¤¨¤¿¤é¡¢ ¤ò²¡¤·¤Æ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤ËÌá¤ê¤Þ¤·¤ç¤¦¡£ + + 4. 2¹ÔÌܤΠ---> ¤È¼¨¤µ¤ì¤¿¾ì½ê¤Ø°ÜÆ°¤·¡¢¥¹¥Æ¥Ã¥× 2 ¤«¤é 3 ¤ò·«¤êÊÖ¤·¤Æʸˡ + ¤ò½¤Àµ¤·¤Þ¤·¤ç¤¦¡£ + +---> ¤³¤³¤Ë¤Ï´Ö°ã¤Ã¤¿¥Æ¥­¥¹¥È¤¬¤¢¤ê + ¤³¤³¤Ë¤Ï´Ö°ã¤Ã¤¿¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤¹¡£ +---> ¤³¤³¤Ë¤â´Ö°ã¤Ã¤¿¥Æ¥­¥¹ + ¤³¤³¤Ë¤â´Ö°ã¤Ã¤¿¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤¹¡£ + + 5. ¥Æ¥­¥¹¥È¤ÎÄɲ䬷ڲ÷¤Ë¤Ê¤Ã¤Æ¤­¤¿¤é¥ì¥Ã¥¹¥ó 1.6 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 1.6: ¥Õ¥¡¥¤¥ë¤ÎÊÔ½¸ + + + ** ¥Õ¥¡¥¤¥ë¤òÊݸ¤·¤Æ½ªÎ»¤¹¤ë¤Ë¤Ï :wq ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** + + !! NOTE: °Ê²¼¤Î¥¹¥Æ¥Ã¥×¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¡¢¤Þ¤ºÁ´ÂΤòÆɤó¤Ç¤¯¤À¤µ¤¤!! + + 1. ¥ì¥Ã¥¹¥ó 1.2 ¤Ç¤ä¤Ã¤¿¤è¤¦¤Ë :q! ¤ò¥¿¥¤¥×¤·¤Æ¡¢¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò½ªÎ» + ¤·¤Þ¤¹¡£¤¢¤ë¤¤¤Ï¡¢Ê̤ÎüËö¤¬¤¢¤ë¾ì¹ç¤Ï¤½¤³¤Ç°Ê²¼¤ÎÆâÍƤò¹Ô¤Ã¤Æ¤â¤«¤Þ¤¤ + ¤Þ¤»¤ó¡£ + + 2. ¥·¥§¥ë¥×¥í¥ó¥×¥È¤Ç¤³¤Î¥³¥Þ¥ó¥É¤ò¥¿¥¤¥×¤·¤Þ¤¹: vim tutor + 'vim'¤¬ Vim ¥¨¥Ç¥£¥¿¤òµ¯Æ°¤¹¤ë¥³¥Þ¥ó¥É¡¢'tutor' ¤ÏÊÔ½¸¤·¤¿¤¤¥Õ¥¡¥¤¥ë¤Î + ̾Á°¤Ç¤¹¡£Êѹ¹¤·¤Æ¤â¤è¤¤¥Õ¥¡¥¤¥ë¤ò»È¤¤¤Þ¤·¤ç¤¦¡£ + + 3. Á°¤Î¥ì¥Ã¥¹¥ó¤Ç³Ø¤ó¤À¤è¤¦¤Ë¡¢¥Æ¥­¥¹¥È¤òÁÞÆþ¡¢ºï½ü¤·¤Þ¤¹¡£ + + 4. Êѹ¹¤ò¥Õ¥¡¥¤¥ë¤ËÊݸ¤·¤Þ¤¹: :wq + + 5. ¥¹¥Æ¥Ã¥× 1 ¤Ç vimtutuor ¤ò½ªÎ»¤·¤¿¾ì¹ç¤Ï vimtutor ¤òºÆÅÙµ¯Æ°¤·¡¢°Ê²¼¤Î + Í×Ìó¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + + 6. °Ê¾å¤Î¥¹¥Æ¥Ã¥×¤òÆɤó¤ÇÍý²ò¤·¤¿¾å¤Ç¤³¤ì¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 1 Í×Ìó + + + 1. ¥«¡¼¥½¥ë¤ÏÌð°õ¥­¡¼¤â¤·¤¯¤Ï hjkl ¥­¡¼¤Ç°ÜÆ°¤·¤Þ¤¹¡£ + h (º¸) j (²¼) k (¾å) l (±¦) + + 2. Vim ¤òµ¯Æ°¤¹¤ë¤Ë¤Ï¥×¥í¥ó¥×¥È¤«¤é vim ¥Õ¥¡¥¤¥ë̾ ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ + + 3. Vim ¤ò½ªÎ»¤¹¤ë¤Ë¤Ï :q! ¤È¥¿¥¤¥×¤·¤Þ¤¹(Êѹ¹¤òÇË´þ)¡£ + ¤â¤·¤¯¤Ï :wq ¤È¥¿¥¤¥×¤·¤Þ¤¹(Êѹ¹¤òÊݸ)¡£ + + 4. ¥«¡¼¥½¥ë¤Î²¼¤Îʸ»ú¤òºï½ü¤¹¤ë¤Ë¤Ï¡¢¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç x ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ + + 5. ¥«¡¼¥½¥ë¤Î°ÌÃÖ¤Ëʸ»ú¤òÁÞÆþ¤¹¤ë¤Ë¤Ï¡¢¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç i ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ + i ¥Æ¥­¥¹¥È¤Î¥¿¥¤¥× ¥«¡¼¥½¥ë°ÌÃÖ¤ËÄɲà + A ¥Æ¥­¥¹¥È¤ÎÄɲà ¹ÔËö¤ËÄɲà + +NOTE: ¥­¡¼¤ò²¡¤¹¤È¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë°Ü¹Ô¤·¤Þ¤¹¡£¤½¤ÎºÝ¡¢´Ö°ã¤Ã¤¿¤êÆþÎÏÅÓ + Ãæ¤Î¥³¥Þ¥ó¥É¤ò¼è¤ê¾Ã¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ + +¤µ¤Æ¡¢Â³¤±¤Æ¥ì¥Ã¥¹¥ó 2 ¤ò»Ï¤á¤Þ¤·¤ç¤¦¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 2.1: ºï½ü¥³¥Þ¥ó¥É + + + ** ñ¸ì¤ÎËöÈø¤Þ¤Ç¤òºï½ü¤¹¤ë¤Ë¤Ï dw ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦ ** + + 1. ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç¤¢¤ë¤³¤È¤ò³Îǧ¤¹¤ë¤¿¤á¤Ë ¤ò²¡¤·¤Þ¤·¤ç¤¦¡£ + + 2. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 3. ¾Ã¤·¤¿¤¤Ã±¸ì¤ÎÀèƬ¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 4. ñ¸ì¤òºï½ü¤¹¤ë¤¿¤á¤Ë dw ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + + NOTE: ¥¿¥¤¥×¤¹¤ë¤È¡¢dw ¤È¤¤¤¦Ê¸»ú¤¬¥¹¥¯¥ê¡¼¥ó¤ÎºÇ²¼¹Ô¤Ë¸½¤ï¤ì¤Þ¤¹¡£ + ¥¿¥¤¥×¤ò´Ö°ã¤Ã¤Æ¤·¤Þ¤Ã¤¿»þ¤Ë¤Ï ¤ò²¡¤·¤Æ¤ä¤êľ¤·¤Þ¤·¤ç¤¦¡£ + +---> ¤³¤Î ʸ »æ ¤Ë¤Ï ¤¤¤¯¤Ä¤«¤Î ¤¿¤Î¤·¤¤ ɬÍפΤʤ¤ ñ¸ì ¤¬ ´Þ¤Þ¤ì¤Æ ¤¤¤Þ¤¹¡£ + + 5. 3 ¤«¤é 4 ¤Þ¤Ç¤òʸ¤¬Àµ¤·¤¯¤Ê¤ë¤Þ¤Ç·«¤êÊÖ¤·¡¢¥ì¥Ã¥¹¥ó 2.2 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 2.2: ¤½¤Î¾¤Îºï½ü¥³¥Þ¥ó¥É + + + ** ¹Ô¤ÎËöÈø¤Þ¤Ç¤òºï½ü¤¹¤ë¤Ë¤Ï d$ ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦ ** + + 1. ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç¤¢¤ë¤³¤È¤ò³Îǧ¤¹¤ë¤Î¤Ë ¤ò²¡¤·¤Þ¤·¤ç¤¦¡£ + + 2. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 3. Àµ¤·¤¤Ê¸¤ÎËöÈø¤Ø¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦(ºÇ½é¤Î ¡£ ¤Î¸å¤Ç¤¹)¡£ + + 4. ¹ÔËö¤Þ¤Çºï½ü¤¹¤ë¤Î¤Ë d$ ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + +---> 狼¤¬¤³¤Î¹Ô¤ÎºÇ¸å¤ò2ÅÙ¥¿¥¤¥×¤·¤Þ¤·¤¿¡£ 2ÅÙ¥¿¥¤¥×¤·¤Þ¤·¤¿¡£ + + + 5. ¤É¤¦¤¤¤¦¤³¤È¤«Íý²ò¤¹¤ë¤¿¤á¤Ë¡¢¥ì¥Ã¥¹¥ó 2.3 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 2.3: ¥ª¥Ú¥ì¡¼¥¿¤È¥â¡¼¥·¥ç¥ó + + + ¿¤¯¤Î¥³¥Þ¥ó¥É¤Ï¥ª¥Ú¥ì¡¼¥¿¤È¥â¡¼¥·¥ç¥ó¤«¤é¥Æ¥­¥¹¥È¤ËÊѹ¹¤ò²Ã¤¨¤Þ¤¹¡£ + ºï½ü¥³¥Þ¥ó¥É d ¤Î¥ª¥Ú¥ì¡¼¥¿¤Ï¼¡¤ÎÍͤˤʤäƤ¤¤Þ¤¹: + + d ¥â¡¼¥·¥ç¥ó + + ¤½¤ì¤¾¤ì: + d - ºï½ü¥³¥Þ¥ó¥É¡£ + ¥â¡¼¥·¥ç¥ó - ²¿¤ËÂФ·¤ÆƯ¤­¤«¤±¤ë¤«(°Ê²¼¤Ëµó¤²¤Þ¤¹)¡£ + + ¥ª¥Ú¥ì¡¼¥¿¤Î°ìÉô°ìÍ÷: + w - ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¶õÇò¤ò´Þ¤àñ¸ì¤ÎËöÈø¤Þ¤Ç¡£ + e - ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¶õÇò¤ò´Þ¤Þ¤Ê¤¤Ã±¸ì¤ÎËöÈø¤Þ¤Ç¡£ + $ - ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¹ÔËö¤Þ¤Ç¡£ + + ¤Ä¤Þ¤ê de ¤È¥¿¥¤¥×¤¹¤ë¤È¡¢¥«¡¼¥½¥ë°ÌÃÖ¤«¤éñ¸ì¤Î½ª¤ï¤ê¤Þ¤Ç¤òºï½ü¤·¤Þ¤¹¡£ + +NOTE: ËÁ¸±¤·¤¿¤¤¿Í¤Ï¡¢¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ë¤Æ¥³¥Þ¥ó¥É¤Ê¤·¤Ë¥â¡¼¥·¥ç¥ó¤ò²¡¤·¤Æ + ¤ß¤Þ¤·¤ç¤¦¡£¥«¡¼¥½¥ë¤¬ÌÜŪ¸ì°ìÍ÷¤Ç¼¨¤µ¤ì¤ë°ÌÃ֤˰ÜÆ°¤¹¤ë¤Ï¤º¤Ç¤¹¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 2.4: ¥â¡¼¥·¥ç¥ó¤Ë¥«¥¦¥ó¥È¤ò»ÈÍѤ¹¤ë + + + ** ²¿²ó¤â¹Ô¤¤¤¿¤¤·«¤êÊÖ¤·¤Î¥â¡¼¥·¥ç¥ó¤ÎÁ°¤Ë¿ôÃͤò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** + + 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤ÎÀèƬ¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ + + 2. 2w ¤ò¥¿¥¤¥×¤·¤Æñ¸ì2¤ÄʬÁ°¤Ë°ÜÆ°¤·¤Þ¤¹¡£ + + 3. 3e ¤ò¥¿¥¤¥×¤·¤Æ3¤ÄÌܤÎñ¸ì¤Î½ªÃ¼¤Ë°ÜÆ°¤·¤Þ¤¹¡£ + + 4. 0 (¥¼¥í)¤ò¥¿¥¤¥×¤·¤Æ¹ÔƬ¤Ë°ÜÆ°¤·¤Þ¤¹¡£ + + 5. ¥¹¥Æ¥Ã¥× 2 ¤È 3 ¤ò°ã¤¦¿ôÃͤò»È¤Ã¤Æ·«¤êÊÖ¤·¤Þ¤¹¡£ + +---> This is just a line with words you can move around in. + + 6. ¥ì¥Ã¥¹¥ó 2.5 ¤Ë¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 2.5: ¤è¤ê¿¤¯¤òºï½ü¤¹¤ë¤¿¤á¤Ë¥«¥¦¥ó¥È¤ò»ÈÍѤ¹¤ë + + + ** ¥ª¥Ú¥ì¡¼¥¿¤È¥«¥¦¥ó¥È¤ò¥¿¥¤¥×¤¹¤ë¤È¡¢¤½¤ÎÁàºî¤¬Ê£¿ô²ó·«¤êÊÖ¤µ¤ì¤Þ¤¹¡£ ** + + ´û½Ò¤Îºï½ü¤Î¥ª¥Ú¥ì¡¼¥¿¤È¥â¡¼¥·¥ç¥ó¤ÎÁȤ߹ç¤ï¤»¤Ë¥«¥¦¥ó¥È¤òÄɲ乤뤳¤È¤Ç¡¢ + ¤è¤ê¿¤¯¤Îºï½ü¤¬¹Ô¤¨¤Þ¤¹: + d ¿ôÃÍ ¥â¡¼¥·¥ç¥ó + + 1. ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Î¹ÔƬÉôʬ¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 2. UPPER CASE ¤Îñ¸ì2¤Ä¤ò d2w ¤È¥¿¥¤¥×¤·¤Æºï½ü¤·¤Þ¤¹¡£ + + 3. UPPER CASE ¤È¤¤¤¦Ï¢Â³¤·¤¿Ã±¸ì¤ò¡¢1¤Ä¤Î¥³¥Þ¥ó¥É¤È°Û¤Ê¤ë¥«¥¦¥ó¥È¤ò»ØÄꤷ¡¢ + ¥¹¥Æ¥Ã¥× 1 ¤È 2 ¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ + +---> ¤³¤ÎABC DE¹Ô¤ÎFGHI JK LMN OPñ¸ì¤ÏQ RS TUVåºÎï¤Ë¤Ê¤Ã¤¿¡£ + +NOTE: ¥ª¥Ú¥ì¡¼¥¿ d ¤È¥â¡¼¥·¥ç¥ó¤Î´Ö¤Ë¥«¥¦¥ó¥È¤ò»È¤Ã¤¿¾ì¹ç¡¢¥ª¥Ú¥ì¡¼¥¿¤Î¤Ê¤¤ + ¾ì¹ç¤Î¥â¡¼¥·¥ç¥ó¤Î¤è¤¦¤ËÆ°ºî¤·¤Þ¤¹¡£ + Îã: 3dw ¤È d3w ¤ÏƱÅù¤Ç¡¢3w ¤òºï½ü¤·¤Þ¤¹¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 2.6: ¹Ô¤ÎÁàºî + + + ** ¹ÔÁ´ÂΤòºï½ü¤¹¤ë¤Ë¤Ï dd ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** + + ¹ÔÁ´ÂΤòºï½ü¤¹¤ëÉÑÅÙ¤¬Â¿¤¤¤Î¤Ç¡¢Vi¤Î¥Ç¥¶¥¤¥Ê¡¼¤Ï¹Ô¤Îºï½ü¤ò d ¤Î2²ó¥¿¥¤¥×¤È + ¤¤¤¦´Êñ¤Ê¤â¤Î¤Ë·è¤á¤Þ¤·¤¿¡£ + + 1. °Ê²¼¤Î¶ç¤Î2¹ÔÌܤ˥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ + 2. dd ¤È¥¿¥¤¥×¤·¤Æ¹Ô¤òºï½ü¤·¤Þ¤¹¡£ + 3. ¤µ¤é¤Ë4¹ÔÌܤ˰ÜÆ°¤·¤Þ¤¹¡£ + 4. 2dd ¤È¥¿¥¤¥×¤·¤Æ2¹Ô¤òºï½ü¤·¤Þ¤¹¡£ + +---> 1) ¥Ð¥é¤ÏÀÖ¤¤¡¢ +---> 2) ¤Ä¤Þ¤é¤Ê¤¤¤â¤Î¤Ï³Ú¤·¤¤¡¢ +---> 3) ¥¹¥ß¥ì¤ÏÀĤ¤¡¢ +---> 4) »ä¤Ï¼Ö¤ò¤â¤Ã¤Æ¤¤¤ë¡¢ +---> 5) »þ·×¤¬»þ¹ï¤ò¹ð¤²¤ë¡¢ +---> 6) º½Åü¤Ï´Å¤¤ +---> 7) ¥ª¥Þ¥¨¥â¥Ê¡¼ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 2.7: ¤ä¤êľ¤·¥³¥Þ¥ó¥É + + + ** ºÇ¸å¤Î¥³¥Þ¥ó¥É¤ò¼è¤ê¾Ã¤¹¤Ë¤Ï u ¤ò²¡¤·¤Þ¤¹¡£U ¤Ï¹ÔÁ´ÂΤμè¾Ã¤Ç¤¹¡£ ** + + 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¡¢ºÇ½é¤Î´Ö°ã¤¤¤Ë¥«¡¼¥½¥ë + ¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + 2. x ¤ò¥¿¥¤¥×¤·¤Æ¤¤¤é¤Ê¤¤ÀèƬ¤Îʸ»ú¤òºï½ü¤·¤Þ¤·¤ç¤¦¡£ + 3. ¤µ¤¡¡¢u ¤ò¥¿¥¤¥×¤·¤ÆºÇ¸å¤Ë¼Â¹Ô¤·¤¿¥³¥Þ¥ó¥É¤ò¼è¤ê¾Ã¤·¤Þ¤·¤ç¤¦¡£ + 4. º£Å٤ϡ¢x ¤ò»ÈÍѤ·¤Æ¸í¤ê¤òÁ´¤Æ½¤Àµ¤·¤Þ¤·¤ç¤¦¡£ + 5. Âçʸ»ú¤Î U ¤ò¥¿¥¤¥×¤·¤Æ¡¢¹Ô¤ò¸µ¤Î¾õÂÖ¤ËÌᤷ¤Þ¤·¤ç¤¦¡£ + 6. u ¤ò¥¿¥¤¥×¤·¤ÆľÁ°¤Î U ¥³¥Þ¥ó¥É¤ò¼è¾Ã¤·¤Þ¤·¤ç¤¦¡£ + 7. ¤Ç¤Ï¥³¥Þ¥ó¥É¤òºÆ¼Â¹Ô¤¹¤ë¤Î¤Ë CTRL-R (CTRL ¤ò²¡¤·¤¿¤Þ¤Þ R ¤òÂǤÄ)¤ò¿ô²ó + ¥¿¥¤¥×¤·¤Æ¤ß¤Þ¤·¤ç¤¦(¼è¾Ã¤Î¼è¾Ã)¡£ + +---> ¤³¤Î¤Î¹Ô¤Î¤Î´Ö°ã¤¤¤ò½¤Àµ¡¹¤·¡¢¸å¤Ç¤½¤ì¤é¤Î½¤Àµ¤ò¤ò¼è¾Ã¤·¤Þ¤Þ¤¹¤¹¡£ + + 8. ¤³¤ì¤Ï¤È¤Æ¤âÊØÍø¤Ê¥³¥Þ¥ó¥É¤Ç¤¹¡£¤µ¤¡¥ì¥Ã¥¹¥ó 2 Í×Ìó¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 2 Í×Ìó + + + 1. ¥«¡¼¥½¥ë°ÌÃÖ¤«¤éñ¸ì¤ÎËöÈø¤Þ¤Ç¤òºï½ü¤¹¤ë¤Ë¤Ï dw ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ + 2. ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¹Ô¤ÎËöÈø¤Þ¤Ç¤òºï½ü¤¹¤ë¤Ë¤Ï d$ ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ + 3. ¹ÔÁ´ÂΤòºï½ü¤¹¤ë¤Ë¤Ï dd ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ + + 4. ¥â¡¼¥·¥ç¥ó¤ò·«¤êÊÖ¤¹¤Ë¤Ï¿ôÃͤòÉÕÍ¿¤·¤Þ¤¹: 2w + 5. Êѹ¹¤ËÍѤ¤¤ë¥³¥Þ¥ó¥É¤Î·Á¼°¤Ï + ¥ª¥Ú¥ì¡¼¥¿ [¿ôÃÍ] ¥â¡¼¥·¥ç¥ó + + ¤½¤ì¤¾¤ì: + ¥ª¥Ú¥ì¡¼¥¿ - ºï½ü d ¤ÎÎà¤Ç²¿¤ò¤¹¤ë¤«¡£ + ¿ôÃÍ - ¤½¤Î¥³¥Þ¥ó¥É¤ò²¿²ó·«¤êÊÖ¤¹¤«¡£ + ¥â¡¼¥·¥ç¥ó - w (ñ¸ì)¤ä $ (¹ÔËö)¤Ê¤É¤ÎÎà¤Ç¡¢¥Æ¥­¥¹¥È¤Î²¿¤ËÂФ·¤ÆƯ¤­¤« + ¤±¤ë¤«¡£ + + 6. ¹Ô¤ÎÀèƬ¤Ë°ÜÆ°¤¹¤ë¤Ë¤Ï¥¼¥í¤ò»ÈÍѤ·¤Þ¤¹: 0 + + 7. Á°²ó¤ÎÆ°ºî¤ò¼è¾Ã¤¹: u (¾®Ê¸»ú u) + ¹ÔÁ´ÂΤÎÊѹ¹¤ò¼è¾Ã¤¹: U (Âçʸ»ú U) + ¼è¾Ã¤·¤Î¼è¾Ã¤·: CTRL-R +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 3.1: Ž¤êÉÕ¤±¥³¥Þ¥ó¥É + + + ** ºÇ¸å¤Ëºï½ü¤µ¤ì¤¿¹Ô¤ò¥«¡¼¥½¥ë¤Î¸å¤ËŽ¤êÉÕ¤±¤ë¤Ë¤Ï p ¤ò¥¿¥¤¥×¤·¤Þ¤¹ ** + + 1. °Ê²¼¤ÎÃÊÍî¤ÎºÇ½é¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 2. dd ¤È¥¿¥¤¥×¤·¤Æ¹Ô¤òºï½ü¤·¡¢Vim ¤Î¥Ð¥Ã¥Õ¥¡¤Ë³ÊǼ¤·¤Þ¤·¤ç¤¦¡£ + + 3. ºï½ü¤·¤¿¹Ô¤¬ËÜÍ褢¤ë¤Ù¤­°ÌÃ֤ξå¤Î¹Ô¤Þ¤Ç¡¢¥«¡¼¥½¥ë¤ò°ÜÆ°¤µ¤»¤Þ¤·¤ç¤¦¡£ + + 4. ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç p ¤ò¥¿¥¤¥×¤·¤Æ³ÊǼ¤·¤¿¹Ô¤ò²èÌ̤ËÌᤷ¤Þ¤¹¡£ + + 5. ½çÈÖ¤¬Àµ¤·¤¯¤Ê¤ëÍͤ˥¹¥Æ¥Ã¥× 2 ¤«¤é 4 ¤ò·«¤êÊÖ¤·¤Þ¤·¤ç¤¦¡£ + + d) µ®Êý¤â³Ø¤Ö¤³¤È¤¬¤Ç¤­¤ë? + b) ¥¹¥ß¥ì¤ÏÀĤ¤¡¢ + c) ÃηäȤϳؤ֤â¤Î¡¢ + a) ¥Ð¥é¤ÏÀÖ¤¤¡¢ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 3.2: ÃÖ¤­´¹¤¨¥³¥Þ¥ó¥É + + + ** ¥«¡¼¥½¥ë¤Î²¼¤Îʸ»ú¤òÃÖ¤­´¹¤¨¤ë¤Ë¤Ï r ¤ò¥¿¥¤¥×¤·¤Þ¤¹ ** + + 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿ºÇ½é¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 2. ºÇ½é¤Î´Ö°ã¤¤¤ÎÀèƬ¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 3. r ¤È¥¿¥¤¥×¤·¡¢´Ö°ã¤Ã¤Æ¤¤¤ëʸ»ú¤òÃÖ¤­´¹¤¨¤ë¡¢Àµ¤·¤¤Ê¸»ú¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + + 4. ºÇ½é¤Î¹Ô¤¬Àµ¤·¤¯¤Ê¤ë¤Þ¤Ç¥¹¥Æ¥Ã¥× 2 ¤«¤é 3 ¤ò·«¤êÊÖ¤·¤Þ¤·¤ç¤¦¡£ + +---> ¤³¤Î¹ç¤ò¿ÍÎϤ·¤¿»þ¤Í¡¢¤½¤Î¿Í¤Ï´ö¤Ä¤«Ìä°ã¤Ã¤¿¥­¡¼¤ò²¡¤·¤â¤·¤¿! +---> ¤³¤Î¹Ô¤òÆþÎϤ·¤¿»þ¤Ë¡¢¤½¤Î¿Í¤Ï´ö¤Ä¤«´Ö°ã¤Ã¤¿¥­¡¼¤ò²¡¤·¤Þ¤·¤¿! + + 5. ¤µ¤¡¡¢¥ì¥Ã¥¹¥ó 3.3 ¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + +NOTE: ¼ÂºÝ¤Ë»î¤·¤Þ¤·¤ç¤¦¡£·è¤·¤Æ³Ð¤¨¤ë¤À¤±¤Ë¤Ï¤·¤Ê¤¤¤³¤È¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 3.3: Êѹ¹¥³¥Þ¥ó¥É + + + ** ñ¸ì¤Î°ìÉô¡¢¤â¤·¤¯¤ÏÁ´ÂΤòÊѹ¹¤¹¤ë¤Ë¤Ï cw ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** + + 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿ºÇ½é¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 2. lubw ¤Î u ¤Î°ÌÃ֤˥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 3. cw ¤È¥¿¥¤¥×¤·¡¢Àµ¤·¤¤Ã±¸ì¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦(¤³¤Î¾ì¹ç 'ine' ¤È¥¿¥¤¥×)¡£ + + 4. ¼¡¤Î´Ö°ã¤¤(Êѹ¹¤¹¤Ù¤­Ê¸»ú¤ÎÀèƬ)¤Ë°ÜÆ°¤¹¤ë¤¿¤á¤Ë ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ + + 5. ºÇ½é¤Î¹Ô¤¬¼¡¤Î¹Ô¤ÎÍͤˤʤë¤Þ¤Ç¥¹¥Æ¥Ã¥× 3 ¤È 4 ¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ + +---> This lubw has a few wptfd that mrrf changing usf the change operator. +---> This line has a few words that need changing using the change operator. + +cw ¤Ïñ¸ì¤òÊѹ¹¤¹¤ë¤À¤±¤Ç¤Ê¤¯¡¢ÁÞÆþ¤â¹Ô¤¨¤ë¤³¤È¤ËÃí°Õ¤·¤Þ¤·¤ç¤¦¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 3.4: c ¤ò»ÈÍѤ·¤¿¤½¤Î¾¤ÎÊѹ¹ + + + ** Êѹ¹¥³¥Þ¥ó¥É¤Ï¡¢ºï½ü¥³¥Þ¥ó¥É¤ÈƱ¤¸Íͤ˥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ·¤Þ¤¹ ** + + 1. Êѹ¹¥³¥Þ¥ó¥É¤Ï¡¢ºï½ü¥³¥Þ¥ó¥É¤ÈƱ¤¸¤è¤¦¤ÊÆ°ºî¤ò¤·¤Þ¤¹¡£¤½¤Î·Á¼°¤Ï + + c [¿ôÃÍ] ¥â¡¼¥·¥ç¥ó + + 2. ¥ª¥Ö¥¸¥§¥¯¥È¤âƱ¤¸¤Ç¡¢w ¤Ïñ¸ì¡¢ $ ¤Ï¹ÔËö¤Ê¤É¤È¤¤¤Ã¤¿¤â¤Î¤Ç¤¹¡£ + + 3. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 4. ºÇ½é¤Î´Ö°ã¤¤¤Ø¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 5. c$ ¤È¥¿¥¤¥×¤·¤Æ¹Ô¤Î»Ä¤ê¤ò£²¹ÔÌܤÎÍͤˤ·¡¢ ¤ò²¡¤·¤Þ¤·¤ç¤¦¡£ + +---> The end of this line needs some help to make it like the second. +---> The end of this line needs to be corrected using the c$ command. + +NOTE: ¥¿¥¤¥×Ãæ¤Î´Ö°ã¤¤¤Ï¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹¥­¡¼¤ò»È¤Ã¤Æľ¤¹¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 3 Í×Ìó + + + 1. ´û¤Ëºï½ü¤µ¤ì¤¿¥Æ¥­¥¹¥È¤òºÆÇÛÃÖ¤¹¤ë¤Ë¤Ï¡¢p ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£¤³¤ì¤Ïºï½ü¤µ + ¤ì¤¿¥Æ¥­¥¹¥È¤ò¥«¡¼¥½¥ë¤Î¸å¤ËÁÞÆþ¤·¤Þ¤¹(¹Ôñ°Ì¤Çºï½ü¤µ¤ì¤¿¤Î¤Ê¤é¤Ð¡¢¥«¡¼ + ¥½¥ë¤Î¤¢¤ë¼¡¤Î¹Ô¤ËÁÞÆþ¤µ¤ì¤Þ¤¹)¡£ + + 2. ¥«¡¼¥½¥ë¤Î²¼¤Îʸ»ú¤òÃÖ¤­´¹¤¨¤ë¤Ë¤Ï¡¢r ¤ò¥¿¥¤¥×¤·¤¿¸å¡¢¤½¤ì¤òÃÖ¤­´¹¤¨¤ë + ʸ»ú¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ + + 3. Êѹ¹¥³¥Þ¥ó¥É¤Ç¤Ï¥«¡¼¥½¥ë°ÌÃÖ¤«¤éÆÃÄê¤Î¥â¡¼¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤ë½ªÃ¼¤Þ¤Ç¤òÊÑ + ¹¹¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£Î㤨¤Ð cw ¤Ê¤é¤Ð¥«¡¼¥½¥ë°ÌÃÖ¤«¤éñ¸ì¤Î½ª¤ï¤ê¤Þ¤Ç¡¢ + c$ ¤Ê¤é¤Ð¹Ô¤Î½ª¤ï¤ê¤Þ¤Ç¤òÊѹ¹¤·¤Þ¤¹¡£ + + 4. Êѹ¹¥³¥Þ¥ó¥É¤Î·Á¼°¤Ï + + c [¿ôÃÍ] ¥â¡¼¥·¥ç¥ó + +¤µ¤¡¡¢¼¡¤Î¥ì¥Ã¥¹¥ó¤Ø¿Ê¤ß¤Þ¤·¤ç¤¦¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 4.1: °ÌÃ֤ȥե¡¥¤¥ë¤Î¾ðÊó + + ** ¥Õ¥¡¥¤¥ëÆâ¤Ç¤Î°ÌÃ֤ȥե¡¥¤¥ë¤Î¾õÂÖ¤òɽ¼¨¤¹¤ë¤Ë¤Ï CTRL-G ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ + ¥Õ¥¡¥¤¥ëÆâ¤Î¤¢¤ë¹Ô¤Ë°ÜÆ°¤¹¤ë¤Ë¤Ï G ¤ò¥¿¥¤¥×¤·¤Þ¤¹ ** + + NOTE: ¥¹¥Æ¥Ã¥×¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¡¢¤³¤Î¥ì¥Ã¥¹¥óÁ´¤Æ¤ËÌܤòÄ̤·¤Þ¤·¤ç¤¦!! + + 1. CTRL ¤ò²¡¤·¤¿¤Þ¤Þ g ¤ò²¡¤·¤Þ¤·¤ç¤¦¡£¤³¤ÎÁàºî¤ò CTRL-G ¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£ + ¥Ú¡¼¥¸¤Î°ìÈÖ²¼¤Ë¥Õ¥¡¥¤¥ë̾¤È¹ÔÈֹ椬ɽ¼¨¤µ¤ì¤ë¤Ï¤º¤Ç¤¹¡£ ¥¹¥Æ¥Ã¥× 3¤Î¤¿¤á + ¤Ë¹ÔÈÖ¹æ¤ò³Ð¤¨¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£ + +NOTE: ²èÌ̤ᦲ¼¶ù¤Ë¥«¡¼¥½¥ë¤Î°ÌÃÖ¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤³¤ì¤Ï + 'ruler' ¥ª¥×¥·¥ç¥ó(:help 'ruler' ¤ò»²¾È)¤òÀßÄꤹ¤ë¤³¤È¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£ + + 2. ºÇ²¼¹Ô¤Ë°ÜÆ°¤¹¤ë¤¿¤á¤Ë G ¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + ¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤Ë°ÜÆ°¤¹¤ë¤Ë¤Ï gg ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + + 3. Àè¤Û¤É¤Î¹Ô¤ÎÈÖ¹æ¤ò¥¿¥¤¥×¤· G ¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ºÇ½é¤Ë CTRL-G ¤ò²¡¤·¤¿¹Ô + ¤ËÌá¤Ã¤ÆÍè¤ë¤Ï¤º¤Ç¤¹¡£ + + 4. ¼«¿®¤¬»ý¤Æ¤¿¤é¥¹¥Æ¥Ã¥× 1 ¤«¤é 3 ¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 4.2: ¸¡º÷¥³¥Þ¥ó¥É + + + ** ¸ì¶ç¤ò¸¡º÷¤¹¤ë¤Ë¤Ï / ¤È¡¢Á°Êý¸¡º÷¤¹¤ë¸ì¶ç¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£** + + 1. ¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç / ¤È¤¤¤¦Ê¸»ú¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£²èÌÌ°ìÈÖ²¼¤Ë : ¥³¥Þ¥ó¥É¤È + Ʊ¤¸ÍÍ¤Ë / ¤¬¸½¤ì¤ë¤³¤È¤Ëµ¤¤Å¤¯¤Ç¤·¤ç¤¦¡£ + + 2. ¤Ç¤Ï¡¢'errroor' ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£¤³¤ì¤¬¸¡º÷¤·¤¿¤¤Ã±¸ì¤Ç¤¹¡£ + + 3. Ʊ¤¸¸ì¤ò¤â¤¦°ìÅÙ¸¡º÷¤¹¤ë¤È¤­¤Ï ñ¤Ë n ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ + µÕÊý¸þ¤Ë¸ì¶ç¤ò¸¡º÷¤¹¤ë¤È¤­¤Ï N ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ + + 4. µÕÊý¸þ¤Ë¸ì¶ç¤ò¸¡º÷¤¹¤ë¾ì¹ç¤Ï¡¢/ ¤ÎÂå¤ï¤ê¤Ë ? ¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£ + + 5. ¸µ¤Î¾ì½ê¤ËÌá¤ë¤Ë¤Ï CTRL-O (Ctrl ¤ò²¡¤·Â³¤±¤Ê¤¬¤é o ʸ»ú¥¿¥¤¥×)¤ò¥¿¥¤¥×¤· + ¤Þ¤¹¡£¤µ¤é¤ËÌá¤ë¤Ë¤Ï¤³¤ì¤ò·«¤êÊÖ¤·¤Þ¤¹¡£CTRL-I ¤ÏÁ°Êý¸þ¤Ç¤¹¡£ + +---> "errroor" ¤Ï error ¤È¥¹¥Ú¥ë¤¬°ã¤¤¤Þ¤¹; errroor ¤Ï¤¤¤ï¤æ¤ë error ¤Ç¤¹¡£ +NOTE: ¸¡º÷¤¬¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤Ë㤹¤ë¤È¡¢¥ª¥×¥·¥ç¥ó 'wrapscan' ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë + ¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤«¤é¸¡º÷¤ò³¹Ô¤·¤Þ¤¹¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 4.3: Âбþ¤¹¤ë³ç¸Ì¤ò¸¡º÷ + + + ** Âбþ¤¹¤ë ),] ¤ä } ¤ò¸¡º÷¤¹¤ë¤Ë¤Ï % ¤ò¥¿¥¤¥×¤·¤Þ¤¹ ** + + 1. ²¼¤Î ---> ¤Ç¼¨¤µ¤ì¤¿¹Ô¤Ç (,[ ¤« { ¤Î¤É¤ì¤«¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 2. ¤½¤³¤Ç % ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + + 3. ¥«¡¼¥½¥ë¤ÏÂбþ¤¹¤ë³ç¸Ì¤Ë°ÜÆ°¤¹¤ë¤Ï¤º¤Ç¤¹¡£ + + 4. ºÇ½é¤Î³ç¸Ì¤Ë°ÜÆ°¤¹¤ë¤Ë¤Ï % ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + + 5. ¾¤Î (,),[,],{ ¤ä } ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¡¢% ¤¬²¿¤ò¤·¤Æ¤¤¤ë¤«³Îǧ¤·¤Þ¤·¤ç¤¦¡£ + +---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + + +NOTE: ¤³¤Îµ¡Ç½¤Ï³ç¸Ì¤¬°ìÃפ·¤Æ¤¤¤Ê¤¤¥×¥í¥°¥é¥à¤ò¥Ç¥Ð¥Ã¥°¤¹¤ë¤Î¤Ë¤È¤Æ¤âÌòΩ¤Á + ¤Þ¤¹¡£ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 4.4: ´Ö°ã¤¤¤òÊѹ¹¤¹¤ëÊýË¡ + + + ** 'old' ¤ò 'new' ¤ËÃÖ´¹¤¹¤ë¤Ë¤Ï :s/old/new/g ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** + + 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 2. :s/thee/the ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï¤½¤Î¹Ô¤ÇºÇ½é¤Ë¸« + ¤Ä¤«¤Ã¤¿¤â¤Î¤Ë¤À¤±¹Ô¤Ê¤ï¤ì¤ë¤³¤È¤Ëµ¤¤ò¤Ä¤±¤Þ¤·¤ç¤¦¡£ + + 3. ¤Ç¤Ï :s/thee/the/g ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£¹ÔÁ´ÂΤòÃÖ´¹¤¹¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ + ¤³¤ÎÊѹ¹¤Ï¤½¤Î¹Ô¤Ç¸«¤Ä¤«¤Ã¤¿Á´¤Æ¤Î²Õ½ê¤ËÂФ·¤Æ¹Ô¤Ê¤ï¤ì¤Þ¤¹¡£ + +---> thee best time to see thee flowers is in thee spring. + + 4. Ê£¿ô¹Ô¤«¤é¸«¤Ä¤«¤ëʸ»ú¤òÊѹ¹¤¹¤ë¤Ë¤Ï + :#,#s/old/new/g #,# ¤Ë¤ÏÃÖ¤­´¹¤¨¤ëÈϰϤγ«»Ï¤È½ªÎ»¤Î¹ÔÈÖ¹æ¤ò»ØÄꤷ¤Þ + ¤¹¡£ + :%s/old/new/g ¥Õ¥¡¥¤¥ëÁ´ÂΤǸ«¤Ä¤«¤ë¤â¤Î¤ËÂФ·¤ÆÊѹ¹¤¹¤ë¡£ + :%s/old/new/gc ¥Õ¥¡¥¤¥ëÁ´ÂΤǸ«¤Ä¤«¤ë¤â¤Î¤ËÂФ·¤Æ¡¢1¤Ä1¤Ä³Îǧ¤ò¤È¤ê¤Ê + ¤¬¤éÊѹ¹¤¹¤ë¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 4 Í×Ìó + + + 1. CTRL-G ¤Ï¥Õ¥¡¥¤¥ë¤Ç¤Î°ÌÃ֤ȥե¡¥¤¥ë¤Î¾ÜºÙ¤òɽ¼¨¤·¤Þ¤¹¡£ + G ¤Ï¥Õ¥¡¥¤¥ë¤ÎºÇ²¼¹Ô¤Ë°ÜÆ°¤·¤Þ¤¹¡£ + ¿ôÃÍ G ¤Ï¤½¤Î¹Ô¤Ë°ÜÆ°¤·¤Þ¤¹¡£ + gg ¤ÏÀèƬ¹Ô¤Ë°ÜÆ°¤·¤Þ¤¹¡£ + + 2. / ¤Î¸å¤Ë¸ì¶ç¤ò¥¿¥¤¥×¤¹¤ë¤ÈÁ°Êý¤Ë¸ì¶ç¤ò¸¡º÷¤·¤Þ¤¹¡£ + ? ¤Î¸å¤Ë¸ì¶ç¤ò¥¿¥¤¥×¤¹¤ë¤È¸åÊý¤Ë¸ì¶ç¤ò¸¡º÷¤·¤Þ¤¹¡£ + ¸¡º÷¤Î¸å¤Î n ¤ÏƱ¤¸Êý¸þ¤Î¼¡¤Î¸¡º÷¤ò¡¢N ¤ÏµÕÊý¸þ¤Î¸¡º÷¤ò¤·¤Þ¤¹¡£ + CTRL-O ¤Ï¾ì½ê¤òÁ°¤Ë°Ü¤·¡¢CTRL-I ¤Ï¾ì½ê¤ò¼¡¤Ë°ÜÆ°¤·¤Þ¤¹¡£ + + 3. (,),[,],{, ¤â¤·¤¯¤Ï } ¾å¤Ë¥«¡¼¥½¥ë¤¬¤¢¤ë¾õÂÖ¤Ç % ¤ò¥¿¥¤¥×¤¹¤ë¤ÈÂФˤʤëʸ + »ú¤Ø°ÜÆ°¤·¤Þ¤¹¡£ + + 4. ¸½ºß¹Ô¤ÎºÇ½é¤Î old ¤ò new ¤ËÃÖ´¹¤¹¤ë¡£ :s/old/new + ¸½ºß¹Ô¤ÎÁ´¤Æ¤Î old ¤ò new ¤ËÃÖ´¹¤¹¤ë¡£ :s/old/new/g + 2¤Ä¤Î # ´Ö¤Ç¸ì¶ç¤òÃÖ´¹¤¹¤ë¡£ :#,#s/old/new/g + ¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÎÁ´¤Æ¤Î¸¡º÷¸ì¶ç¤òÃÖ´¹¤¹¤ë¡£ :%s/old/new/g + 'c' ¤ò²Ã¤¨¤ë¤ÈÃÖ´¹¤ÎÅ٤˳Îǧ¤òµá¤á¤ë¡£ :%s/old/new/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 5.1: ³°Éô¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ëÊýË¡ + + + ** :! ¤Î¸å¤Ë¼Â¹Ô¤¹¤ë³°Éô¥³¥Þ¥ó¥É¤ò¥¿¥¤¥×¤·¤Þ¤¹ ** + + 1. ²èÌ̤κDz¼Éô¤Ë¥«¡¼¥½¥ë¤¬°ÜÆ°¤¹¤ë¤è¤¦¡¢´·¤ì¿Æ¤·¤ó¤À : ¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + ¤³¤ì¤Ç¥³¥Þ¥ó¥É¤¬¥¿¥¤¥×¤Ç¤­¤ëÍͤˤʤê¤Þ¤¹¡£ + + 2. ¤³¤³¤Ç ! ¤È¤¤¤¦Ê¸»ú(´¶Ã²Éä)¤ò¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + ¤³¤ì¤Ç³°Éô¥·¥§¥ë¥³¥Þ¥ó¥É¤¬¼Â¹Ô¤Ç¤­¤ëÍͤˤʤê¤Þ¤¹¡£ + + 3. Îã¤È¤·¤Æ ! ¤Ë³¤±¤Æ ls ¤È¥¿¥¤¥×¤· ¤ò²¡¤·¤Þ¤·¤ç¤¦¡£ + ¥·¥§¥ë¥×¥í¥ó¥×¥È¤Î¤è¤¦¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤Î°ìÍ÷¤¬É½¼¨¤µ¤ì¤ë¤Ï¤º¤Ç¤¹¡£ + ¤â¤·¤¯¤Ï ls ¤¬Æ°¤«¤Ê¤¤¤Ê¤é¤Ð :!dir ¤ò»ÈÍѤ·¤Þ¤·¤ç¤¦¡£ + +NOTE: ¤³¤ÎÊýË¡¤Ë¤è¤Ã¤Æ¤¢¤é¤æ¤ë¥³¥Þ¥ó¥É¤¬¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤â¤Á¤í¤ó°ú¿ô + ¤âÍ¿¤¨¤é¤ì¤Þ¤¹¡£ + +NOTE: Á´¤Æ¤Î : ¥³¥Þ¥ó¥É¤Ï ¤ò²¡¤·¤Æ½ªÎ»¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ + °Ê¹ß¤Ç¤Ï¤³¤Î¤³¤È¤Ë¸ÀµÚ¤·¤Þ¤»¤ó¡£ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 5.2: ¤½¤Î¾¤Î¥Õ¥¡¥¤¥ë¤Ø½ñ¤­¹þ¤ß + + + ** ¥Õ¥¡¥¤¥ë¤ØÊѹ¹¤òÊݸ¤¹¤ë¤Ë¤Ï :w ¥Õ¥¡¥¤¥ë̾ ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** + + 1. ¥Ç¥£¥ì¥¯¥È¥ê¤Î°ìÍ÷¤òÆÀ¤ë¤¿¤á¤Ë :!dir ¤â¤·¤¯¤Ï :!ls ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦¡£ + ¤³¤Î¤¢¤È ¤ò²¡¤¹¤Î¤Ï´û¤Ë¤´Â¸ÃΤǤ¹¤Í¡£ + + 2. TEST ¤Î¤è¤¦¤Ë¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë̵¤¤¥Õ¥¡¥¤¥ë̾¤ò°ì¤ÄÁª¤Ó¤Þ¤¹¡£ + + 3. ¤Ç¤Ï :w TEST ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦ (TEST ¤Ï¡¢Áª¤ó¤À¥Õ¥¡¥¤¥ë̾¤Ç¤¹)¡£ + + 4. ¤³¤ì¤Ë¤è¤ê¥Õ¥¡¥¤¥ëÁ´ÂΤ¬ TEST ¤È¤¤¤¦Ì¾Á°¤ÇÊݸ¤µ¤ì¤Þ¤¹¡£ + ¤â¤¦°ìÅÙ :!dir ¤â¤·¤¯¤Ï :!ls ¤È¥¿¥¤¥×¤·¤Æ³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£ + +NOTE: ¤³¤³¤Ç Vim ¤ò½ªÎ»¤·¡¢¥Õ¥¡¥¤¥ë̾ TEST ¤È¶¦¤Ëµ¯Æ°¤¹¤ë¤È¡¢Êݸ¤·¤¿»þ¤Î + ¥Á¥å¡¼¥È¥ê¥¢¥ë¤ÎÊ£À½¤¬¤Ç¤­¾å¤¬¤ë¤Ï¤º¤Ç¤¹¡£ + + 5. ¤µ¤é¤Ë¡¢¼¡¤Î¤è¤¦¤Ë¥¿¥¤¥×¤·¤Æ¥Õ¥¡¥¤¥ë¤ò¾Ã¤·¤Þ¤·¤ç¤¦(MS-DOS): :!del TEST + ¤â¤·¤¯¤Ï(Unix): :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 5.3: ÁªÂò¤·¤¿½ñ¤­¹þ¤ß + + +** ¥Õ¥¡¥¤¥ë¤Î°ÌÃÖ¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢v ¥â¡¼¥·¥ç¥ó¤È :w FILENAME ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ ** + + 1. ¤³¤Î¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ + + 2. v ¤ò²¡¤·¡¢°Ê²¼¤ÎÂè5¹àÌܤ˥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£¥Æ¥­¥¹¥È¤¬¶¯Ä´É½¼¨¤µ¤ì¤ë¤Î + ¤ËÃíÌܤ·¤Æ²¼¤µ¤¤¡£ + + 3. ʸ»ú : ¤ò²¡¤¹¤È¡¢²èÌ̤κDz¼Éô¤Ë :'<,'> ¤¬¸½¤ì¤Þ¤¹¡£ + + 4. w TEST (TEST ¤Ï¸ºß¤·¤Ê¤¤¥Õ¥¡¥¤¥ë̾)¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ + ¤ò²¡¤¹Á°¤Ë :'<,'>w TEST ¤È¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Æ²¼¤µ¤¤¡£ + + 5. Vim ¤Ï TEST ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ËÁªÂò¤µ¤ì¤¿¹Ô¤ò½ñ¤­¹þ¤à¤Ç¤·¤ç¤¦¡£ + !dir ¤â¤·¤¯¤Ï !ls ¤Ç¤½¤ì¤ò³Îǧ¤·¤Þ¤¹¡£ + ¤½¤ì¤Ïºï½ü¤·¤Ê¤¤¤Ç¤ª¤¤¤Æ²¼¤µ¤¤¡£¼¡¤Î¥ì¥Ã¥¹¥ó¤Ç»ÈÍѤ·¤Þ¤¹¡£ + +NOTE: v ¤ò²¡¤¹¤È¡¢Visual ÁªÂò¤¬»Ï¤Þ¤ê¤Þ¤¹¡£¥«¡¼¥½¥ë¤òÆ°¤«¤¹¤³¤È¤Ç¡¢ÁªÂòÈϰϤò + Â礭¤¯¤â¾®¤µ¤¯¤â¤Ç¤­¤Þ¤¹¡£¤µ¤é¤Ë¡¢¤½¤ÎÁªÂòÈϰϤËÂФ·¤Æ¥ª¥Ú¥ì¡¼¥¿¤òŬÍÑ + ¤­¤Þ¤¹¡£Î㤨¤Ð d ¤Ï¥Æ¥­¥¹¥È¤òºï½ü¤·¤Þ¤¹¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 5.4: ¥Õ¥¡¥¤¥ë¤Î¼è¹þ¤È¹çÊ» + + + ** ¥Õ¥¡¥¤¥ë¤ÎÃæ¿È¤òÁÞÆþ¤¹¤ë¤Ë¤Ï :r ¥Õ¥¡¥¤¥ë̾ ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** + + 1. ¥«¡¼¥½¥ë¤ò°Ê²¼¤Î¹Ô¤Ë¹ç¤ï¤»¤Þ¤¹¡£ + +NOTE: ¥¹¥Æ¥Ã¥× 2 ¤Î¼Â¹Ô¸å¡¢¥ì¥Ã¥¹¥ó 5.3 ¤Î¥Æ¥­¥¹¥È¤¬¸½¤ì¤Þ¤¹¡£²¼¤Ë²¼¤¬¤Ã¤Æ¤³ + ¤Î¥ì¥Ã¥¹¥ó¤Ë°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 2. ¤Ç¤Ï TEST ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò :r TEST ¤È¤¤¤¦¥³¥Þ¥ó¥É¤ÇÆɤ߹þ¤ß¤Þ¤·¤ç¤¦¡£ + ¤³¤³¤Ç¤¤¤¦ TEST ¤Ï»È¤¦¥Õ¥¡¥¤¥ë¤Î̾Á°¤Î¤³¤È¤Ç¤¹¡£ + Æɤ߹þ¤Þ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï¡¢¥«¡¼¥½¥ë¹Ô¤Î²¼¤Ë¤¢¤ê¤Þ¤¹¡£ + + 3. ¼è¹þ¤ó¤À¥Õ¥¡¥¤¥ë¤ò³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¥«¡¼¥½¥ë¤òÌ᤹¤È¡¢¥ì¥Ã¥¹¥ó5.3 ¤Î + ¥ª¥ê¥¸¥Ê¥ë¤È¥Õ¥¡¥¤¥ë¤Ë¤è¤ë¤â¤Î¤Î2¤Ä¤¬¤¢¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£ + +NOTE: ³°Éô¥³¥Þ¥ó¥É¤Î½ÐÎϤòÆɤ߹þ¤à¤³¤È¤â½ÐÍè¤Þ¤¹¡£Î㤨¤Ð¡¢ + :r !ls ¤Ï ls ¥³¥Þ¥ó¥É¤Î½ÐÎϤò¥«¡¼¥½¥ë°Ê²¼¤ËÆɤ߹þ¤ß¤Þ¤¹¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 5 Í×Ìó + + + 1. :!command ¤Ë¤è¤Ã¤Æ ³°Éô¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ + + ¤è¤¯»È¤¦Îã: + (MS-DOS) (Unix) + :!dir :!ls - ¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î°ìÍ÷¤ò¸«¤ë¡£ + :!del FILENAME :!rm FILENAME - ¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë¡£ + + 2. :w ¥Õ¥¡¥¤¥ë̾ ¤Ë¤è¤Ã¤Æ¥Õ¥¡¥¤¥ë̾¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬¥Ç¥£¥¹¥¯¤Ë½ñ¤­¹þ¤Þ¤ì¤ë¡£ + + 3. v ¥â¡¼¥·¥ç¥ó¤Ç :w FILENAME ¤È¤¹¤ë¤È¡¢¥Ó¥¸¥å¥¢¥ëÁªÂò¹Ô¤¬¥Õ¥¡¥¤¥ë¤ËÊݸ¤µ + ¤ì¤ë¡£ + + 4. :r ¥Õ¥¡¥¤¥ë̾ ¤Ë¤è¤ê¥Õ¥¡¥¤¥ë̾¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬¥Ç¥£¥¹¥¯¤è¤ê¼è¹þ¤Þ¤ì¡¢ + ¥«¡¼¥½¥ë°ÌÃ֤β¼¤ËÁÞÆþ¤µ¤ì¤ë¡£ + + 5. :r !dir ¤Ï dir ¥³¥Þ¥ó¥É¤Î½ÐÎϤò¥«¡¼¥½¥ë°ÌÃְʲ¼¤ËÆɤ߹þ¤à¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 6.1: ¥ª¡¼¥×¥ó¥³¥Þ¥ó¥É + + + ** o ¤ò¥¿¥¤¥×¤¹¤ë¤È¡¢¥«¡¼¥½¥ë¤Î²¼¤Î¹Ô¤¬³«¤­¡¢ÁÞÆþ¥â¡¼¥É¤ËÆþ¤ê¤Þ¤¹ ** + + 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 2. o (¾®Ê¸»ú) ¤ò¥¿¥¤¥×¤·¤Æ¡¢¥«¡¼¥½¥ë¤Î²¼¤Î¹Ô¤ò³«¤­¡¢ÁÞÆþ¥â¡¼¥É¤ËÆþ¤ê¤Þ¤¹¡£ + + 3. ¤µ¤é¤ËÁÞÆþ¥â¡¼¥É¤ò½ªÎ»¤¹¤ë°Ù¤Ë ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ + +---> o ¤ò¥¿¥¤¥×¤¹¤ë¤È¥«¡¼¥½¥ë¤Ï³«¤¤¤¿¹Ô¤Ø°ÜÆ°¤·ÁÞÆþ¥â¡¼¥É¤ËÆþ¤ê¤Þ¤¹¡£ + + 4. ¥«¡¼¥½¥ë¤Î¾å¤Î¹Ô¤ËÁÞÆþ¤¹¤ë¤Ë¤Ï¡¢¾®Ê¸»ú¤Î o ¤Ç¤Ï¤Ê¤¯¡¢Ã±½ã¤ËÂçʸ»ú¤Î O + ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£¼¡¤Î¹Ô¤Ç»î¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£ + +---> ¤³¤Î¹Ô¤Î¾å¤ØÁÞÆþ¤¹¤ë¤Ë¤Ï¡¢¤³¤Î¹Ô¤Ø¥«¡¼¥½¥ë¤òÃÖ¤¤¤Æ O ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 6.2: Äɲå³¥Þ¥ó¥É + + + ** ¥«¡¼¥½¥ë¤Î¼¡¤Î°ÌÃÖ¤«¤é¥Æ¥­¥¹¥È¤òÄɲ乤ë¤Ë¤Ï a ¤È¥¿¥¤¥×¤·¤Þ¤¹ ** + + 1. ¥«¡¼¥½¥ë¤ò ---> ¤Ç¼¨¤µ¤ì¤¿¹Ô¤Ø°ÜÆ°¤·¤Þ¤·¤ç¤¦¡£ + + 2. e ¤ò²¡¤·¤Æ li ¤Î½ªÃ¼Éô¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ + + 3. ¥«¡¼¥½¥ë¤Î¸å¤í¤Ë¥Æ¥­¥¹¥È¤òÄɲ乤뤿¤á¤Ë a (¾®Ê¸»ú) ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£ + + 4. ¤½¤Î²¼¤Î¹Ô¤Î¤è¤¦¤Êñ¸ì¤Ë´°À®¤µ¤»¤Þ¤¹¡£ÁÞÆþ¥â¡¼¥É¤òÈ´¤±¤ë°Ù¤Ë ¤ò²¡ + ¤·¤Þ¤¹¡£ + + 5. e ¤ò»È¤Ã¤Æ¼¡¤ÎÉÔ´°Á´¤Êñ¸ì¤Ø°ÜÆ°¤·¡¢¥¹¥Æ¥Ã¥× 3 ¤È 4 ¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ + +---> This li will allow you to pract appendi text to a line. +---> This line will allow you to practice appending text to a line. + +NOTE: a, i ¤È A ¤ÏƱ¤¸ÁÞÆþ¥â¡¼¥É¤Ø°Ü¤ê¤Þ¤¹¤¬¡¢Ê¸»ú¤¬ÁÞÆþ¤µ¤ì¤ë°ÌÃÖ¤À¤±¤¬°Û¤Ê¤ê + ¤Þ¤¹¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 6.3: ¤½¤Î¾¤ÎÃÖ´¹ÊýË¡ + + + ** 1ʸ»ú°Ê¾å¤òÃÖ¤­´¹¤¨¤ë¤Ë¤ÏÂçʸ»ú¤Î R ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦ ** + + 1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ºÇ½é¤Î xxx ¤ÎÀèƬ¤Ë°ÜÆ°¤· + ¤Þ¤¹¡£ + + 2. R ¤ò²¡¤·¤Æ¡¢2¹ÔÌܤοôÃͤò¥¿¥¤¥×¤¹¤ë¤³¤È¤Ç¡¢xxx ¤¬ÃÖ´¹¤µ¤ì¤Þ¤¹¡£ + + 3. ÃÖ´¹¥â¡¼¥É¤òÈ´¤±¤ë¤Ë¤Ï ¤ò²¡¤·¤Þ¤¹¡£¹Ô¤Î»Ä¤ê¤¬Êѹ¹¤µ¤ì¤Æ¤¤¤Ê¤¤¤Þ¤Þ¤Ë + ¤Ê¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ + + 4. »Ä¤Ã¤¿ xxx ¤ò¥¹¥Æ¥Ã¥×¤ò·«¤êÊÖ¤·¤ÆÃÖ´¹¤·¤Þ¤·¤ç¤¦¡£ + +---> Adding 123 to xxx gives you xxx. +---> Adding 123 to 456 gives you 579. + +NOTE: ÃÖ´¹¥â¡¼¥É¤ÏÁÞÆþ¥â¡¼¥É¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢Á´¤Æ¤Î¥¿¥¤¥×¤µ¤ì¤¿Ê¸»ú¤Ï´û¸¤Îʸ»ú + ¤òºï½ü¤·¤Þ¤¹¡£ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 6.4: ¥Æ¥­¥¹¥È¤Î¥³¥Ô¡¼¤È¥Ú¡¼¥¹¥È + + + ** ¥Æ¥­¥¹¥È¤Î¥³¥Ô¡¼¤Ë¤Ï¥ª¥Ú¥ì¡¼¥¿ y ¤ò¡¢¥Ú¡¼¥¹¥È¤Ë¤Ï p ¤ò»È¤¤¤Þ¤¹ ** + + 1. ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ø°ÜÆ°¤·¡¢¥«¡¼¥½¥ë¤ò "a)" ¤Î¸å¤ËÃÖ¤¤¤Æ¤ª¤­¤Þ¤¹¡£ + + 2. v ¤Ç¥Ó¥¸¥å¥¢¥ë¥â¡¼¥É¤ò³«»Ï¤·¡¢"first"¤Î¼êÁ°¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹¡£ + + 3. y ¤ò¥¿¥¤¥×¤·¤Æ¶¯Ä´É½¼¨¤µ¤ì¤¿¥Æ¥­¥¹¥È¤ò yank (¥³¥Ô¡¼)¤·¤Þ¤¹¡£ + + 4. ¼¡¤Î¹Ô¤Î¹ÔËö¤Þ¤Ç¥«¡¼¥½¥ë¤ò°ÜÆ°¤·¤Þ¤¹: j$ + + 5. p ¤ò²¡¤·¤ÆŽ¤êÉÕ¤±(put)¤Æ¤«¤é¡¢¼¡¤ò¥¿¥¤¥×¤·¤Þ¤¹: a second + + 6. ¥Ó¥¸¥å¥¢¥ë¥â¡¼¥É¤Ç " item." ¤òÁªÂò¤·¡¢y ¤Ç¥ä¥ó¥¯¡¢¼¡¤Î¹Ô¤Î¹ÔËö¤Þ¤Ç j$ ¤Ç + °ÜÆ°¤·¡¢ p ¤Ç¥Æ¥­¥¹¥È¤ò¤½¤³¤Ë put ¤·¤Þ¤¹¡£ + +---> a) this is the first item. + b) + + NOTE: ñ¸ì¤ò1¤Ä yank ¤¹¤ë¤Î¤Ë y ¤ò¥ª¥Ú¥ì¡¼¥¿¤È¤·¤Æ yw ¤È¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 6.5: ¥ª¥×¥·¥ç¥ó¤ÎÀßÄê + + + ** ¸¡º÷¤äÃÖ´¹¤ÎºÝ¤ËÂçʸ»ú/¾®Ê¸»ú¤ò̵»ë¤¹¤ë¤Ë¤Ï¡¢¥ª¥×¥·¥ç¥ó¤òÀßÄꤷ¤Þ¤¹ ** + + 1. ¼¡¤ÎÍͤËÆþÎϤ·¤Æ 'ignore' ¤ò¸¡º÷¤·¤Þ¤·¤ç¤¦: /ignore + n ¤ò²¡¤·¤Æ²¿ÅÙ¤«¸¡º÷¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ + + 2. ¼¡¤ÎÍͤËÆþÎϤ·¤Æ 'ic' (Ignore Case ¤Îά) ¥ª¥×¥·¥ç¥ó¤òÀßÄꤷ¤Þ¤¹: :set ic + + 3. ¤Ç¤Ï n ¤Ë¤è¤Ã¤Æ¤â¤¦1ÅÙ 'ignore' ¤ò¸¡º÷¤·¤Þ¤¹¡£ + n ¤ò²¡¤·¤Æ¤µ¤é¤Ë¿ô²ó¸¡º÷¤ò·«¤êÊÖ¤·¤Þ¤·¤ç¤¦¡£ + + 4. 'hlsearch' ¤È 'incsearch' ¥ª¥×¥·¥ç¥ó¤òÀßÄꤷ¤Þ¤·¤ç¤¦: :set hls is + + 5. ¸¡º÷¥³¥Þ¥ó¥É¤òºÆÆþÎϤ·¤Æ¡¢²¿¤¬µ¯¤³¤ë¤«¸«¤Æ¤ß¤Þ¤·¤ç¤¦: /ignore + + 6. Âçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤ò̵¸ú¤Ë¤¹¤ë¤Ë¤Ï¼¡¤ÎÍͤËÆþÎϤ·¤Þ¤¹: :set noic + +NOTE: ¥Þ¥Ã¥Á¤Î¶¯Ä´É½¼¨¤ò¤ä¤á¤ë¤Ë¤Ï¼¡¤ÎÍͤËÆþÎϤ·¤Þ¤¹: :nohlsearch +NOTE: 1¤Ä¤Î¸¡º÷¥³¥Þ¥ó¥É¤À¤±Âçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤ò¤ä¤á¤¿¤¤¤Ê¤é¤Ð¡¢¥Õ¥ì¡¼¥º¤Ë \c + ¤ò»ÈÍѤ·¤Þ¤¹: /ignore\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 6 Í×Ìó + + 1. o ¤ò¥¿¥¤¥×¤¹¤ë¤È¥«¡¼¥½¥ë¤Î²¼¤Î¹Ô¤ò³«¤±¤Æ¡¢¤½¤³¤ÇÁÞÆþ¥â¡¼¥É¤Ë¤Ê¤ë¡£ + O (Âçʸ»ú) ¤ò¥¿¥¤¥×¤¹¤ë¤È¥«¡¼¥½¥ë¤Î¾å¤Î¹Ô¤ÇÁÞÆþ¥â¡¼¥É¤Ë¤Ê¤ë¡£ + + 2. ¥«¡¼¥½¥ë¾å¤Îʸ»ú¤Î¼¡¤«¤é¥Æ¥­¥¹¥È¤òÄɲ乤ë¤Ë¤Ï a ¤È¥¿¥¤¥×¤¹¤ë¡£ + ¹ÔËö¤Ë¼«Æ°¤Ç¥Æ¥­¥¹¥È¤òÁÞÆþ¤¹¤ë¤Ë¤ÏÂçʸ»ú A ¤ò¥¿¥¤¥×¤¹¤ë¡£ + + 3. e ¥³¥Þ¥ó¥É¤Ïñ¸ì¤Î½ªÃ¼Éô¥«¡¼¥½¥ë¤ò°ÜÆ°¤¹¤ë¡£ + + 4. y ¥ª¥Ú¥ì¡¼¥¿¤Ï¥Æ¥­¥¹¥È¤ò yank (¥³¥Ô¡¼)¤·¡¢p ¤Ï¤½¤ì¤ò put (¥Ú¡¼¥¹¥È)¤¹¤ë¡£ + + 5. Âçʸ»ú¤Î R ¤ò¥¿¥¤¥×¤¹¤ë¤ÈÃÖ´¹¥â¡¼¥É¤ËÆþ¤ê¡¢¤ò²¡¤¹¤ÈÈ´¤±¤ë¡£ + + 6. ":set xxx" ¤È¥¿¥¤¥×¤¹¤ë¤È¥ª¥×¥·¥ç¥ó "xxx" ¤¬ÀßÄꤵ¤ì¤ë¡£ + 'ic' 'ignorecase' ¸¡º÷»þ¤ËÂçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤·¤Ê¤¤ + 'is' 'incsearch' ¸¡º÷¥Õ¥ì¡¼¥º¤ËÉôʬ¥Þ¥Ã¥Á¤·¤Æ¤¤¤ëÉôʬ¤òɽ¼¨¤¹¤ë + 'hls' 'hlsearch' ¥Þ¥Ã¥Á¤¹¤ë¤¹¤Ù¤ò¶¯Ä´É½¼¨¤¹¤ë + Ť¤Êý¡¢Ã»¤¤Êý¡¢¤É¤Á¤é¤Î¥ª¥×¥·¥ç¥ó̾¤Ç¤â»ÈÍѤǤ­¤Þ¤¹¡£ + + 7. "no" ¤òÉÕÍ¿¤·¡¢¥ª¥×¥·¥ç¥ó¤ò̵¸ú¤Ë¤·¤Þ¤¹: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 7.1: ¥ª¥ó¥é¥¤¥ó¥Ø¥ë¥×¥³¥Þ¥ó¥É + + + ** ¥ª¥ó¥é¥¤¥ó¥Ø¥ë¥×¤ò»ÈÍѤ·¤Þ¤·¤ç¤¦ ** + + Vim ¤Ë¤Ï¹­ÈϤˤ錄¤ë¥ª¥ó¥é¥¤¥ó¥Ø¥ë¥×¥·¥¹¥Æ¥à¤¬¤¢¤ê¤Þ¤¹¡£ + ¥Ø¥ë¥×¤ò³«»Ï¤¹¤ë¤Ë¤Ï¡¢¤³¤ì¤é3¤Ä¤Î¤É¤ì¤«1¤Ä¤ò»î¤·¤Æ¤ß¤Þ¤·¤ç¤¦: + - ¥Ø¥ë¥×¥­¡¼ ¤ò²¡¤¹(¤â¤·¤¢¤ë¤Ê¤é¤Ð)¡£ + - ¥­¡¼¤ò²¡¤¹(¤â¤·¤¢¤ë¤Ê¤é¤Ð)¡£ + - :help ¤È¥¿¥¤¥×¤¹¤ë¡£ + + ¥Ø¥ë¥×¥¦¥£¥ó¥É¥¦¤Î¥Æ¥­¥¹¥È¤òÆɤà¤È¡¢¥Ø¥ë¥×¤ÎÆ°ºî¤¬Íý²ò¤Ç¤­¤Þ¤¹¡£ + CTRL-W CTRL-W ¤È¥¿¥¤¥×¤¹¤ë¤È ¥Ø¥ë¥×¥¦¥£¥ó¥É¥¦¤Ø¥¸¥ã¥ó¥×¤·¤Þ¤¹¡£ + :q ¤È¥¿¥¤¥×¤¹¤ë¤È ¥Ø¥ë¥×¥¦¥£¥ó¥É¥¦¤¬ÊĤ¸¤é¤ì¤Þ¤¹¡£ + + ":help" ¥³¥Þ¥ó¥É¤Ë°ú¿ô¤òÍ¿¤¨¤ë¤³¤È¤Ë¤è¤ê¡¢¤¢¤é¤æ¤ëÂê̾¤Î¥Ø¥ë¥×¤ò¸«¤Ä¤±¤ë¤³¤È + ¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤é¤ò»î¤·¤Æ¤ß¤Þ¤·¤ç¤¦( ¤ò¥¿¥¤¥×¤·Ëº¤ì¤Ê¤¤¤è¤¦¤Ë): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 7.2: µ¯Æ°¥¹¥¯¥ê¥×¥È¤ÎºîÀ® + + ** Vim ¤ÎÆÃħ¤òȯ´ø¤¹¤ë ** + + Vim ¤Ë¤Ï Vi ¤è¤ê¤â¿¤¯¤ÎÆÃħ¤òƧ¤Þ¤¨¤Æ¤¤¤Þ¤¹¤¬¡¢¤½¤Î¤Û¤È¤ó¤É¤Ï½é´ü¾õÂÖ¤Ë¤Æ + »ÈÍÑÉԲĤȤʤäƤ¤¤Þ¤¹¡£¤è¤ê¿¤¯¤ÎÆÃħ¤ò»È¤¤¤Ï¤¸¤á¤ë¤Ë¤Ï "vimrc" ¥Õ¥¡¥¤¥ë + ¤òºîÀ®¤·¤Þ¤¹¡£ + + 1. "vimrc" ¥Õ¥¡¥¤¥ë¤ÎÊÔ½¸¤ò³«»Ï¤¹¤ë¡£¤³¤ì¤Ï¥·¥¹¥Æ¥à¤Ë°Í¸¤·¤Þ¤¹¡£ + :edit ~/.vimrc UNIX ¸þ¤± + :edit $VIM/_vimrc MS-Windows ¸þ¤± + + 2. ¤³¤³¤Ç¥µ¥ó¥×¥ë¤Î "vimrc" ¤òÆɤ߹þ¤ß¤Þ¤¹¡£ + :read $VIMRUNTIME/vimrc_example.vim + + 3. °Ê²¼¤Î¤è¤¦¤Ë¥Õ¥¡¥¤¥ë¤Ø½ñ¤­¹þ¤ß¤Þ¤¹¡£ + :write + + ¼¡²ó Vim ¤òµ¯Æ°¤¹¤ë¤È¡¢¿§¤Å¤±¹½Ê¸¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£ + ¤³¤Î "vimrc" ¥Õ¥¡¥¤¥ë¤Ø¡¢¤ª¹¥¤ß¤ÎÀßÄê¤òÄɲ乤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ + ¤è¤ê¿¤¯¤Î¾ðÊó¤òÆÀ¤ë¤Ë¤Ï :help vimrc-intro ¤È¥¿¥¤¥×¤·¤Þ¤¹¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 7.3: Êä´° + + + ** CTRL-D ¤È ¤Ç¥³¥Þ¥ó¥É¥é¥¤¥ó¤òÊä´°¤¹¤ë ** + + 1. ¥³¥ó¥Ñ¥Á¥â¡¼¥É¤Ç¤Ê¤¤¤³¤È¤ò³Îǧ¤·¤Þ¤¹: :set nocp + + 2. ¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ëºß¤ë¥Õ¥¡¥¤¥ë¤ò :!ls ¤« :!dir ¤Ç³Îǧ¤·¤Þ¤¹¡£ + + 3. ¥³¥Þ¥ó¥É¤Î³«»Ï¤ò¥¿¥¤¥×¤·¤Þ¤¹: :e + + 4. CTRL-D ¤ò²¡¤¹¤È Vim ¤Ï "e" ¤«¤é»Ï¤Þ¤ë¥³¥Þ¥ó¥É¤Î°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£ + + 5. ¤ò²¡¤¹¤È Vim ¤Ï ":edit" ¤È¤¤¤¦¥³¥Þ¥ó¥É̾¤òÊä´°¤·¤Þ¤¹¡£ + + 6. ¤µ¤é¤Ë¶õÇò¤È¡¢´û¸¤Î¥Õ¥¡¥¤¥ë̾¤Î»Ï¤Þ¤ê¤ò²Ã¤¨¤Þ¤¹: :edit FIL + + 7. ¤ò²¡¤¹¤È Vim ¤Ï̾Á°¤òÊä´°¤·¤Þ¤¹¡£(¤â¤·°ì¤Ä¤·¤«Ìµ¤«¤Ã¤¿¾ì¹ç) + +NOTE: Êä´°¤Ï¿¤¯¤Î¥³¥Þ¥ó¥É¤ÇÆ°ºî¤·¤Þ¤¹¡£¤½¤·¤Æ CTRL-D ¤È ²¡¤·¤Æ¤ß¤Æ¤¯¤À + ¤µ¤¤¡£ÆÃ¤Ë :help ¤ÎºÝ¤ËÌòΩ¤Á¤Þ¤¹¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ¥ì¥Ã¥¹¥ó 7 Í×Ìó + + + 1. ¥Ø¥ë¥×¥¦¥£¥ó¥É¥¦¤ò³«¤¯¤Ë¤Ï :help ¤È¤¹¤ë¤« ¤â¤·¤¯¤Ï ¤ò²¡¤¹¡£ + + 2. ¥³¥Þ¥ó¥É(cmd)¤Î¥Ø¥ë¥×¤ò¸¡º÷¤¹¤ë¤Ë¤Ï :help cmd ¤È¥¿¥¤¥×¤¹¤ë¡£ + + 3. Ê̤Υ¦¥£¥ó¥É¥¦¤Ø¥¸¥ã¥ó¥×¤¹¤ë¤Ë¤Ï CTRL-W CTRL-W ¤È¥¿¥¤¥×¤¹¤ë¡£ + + 4. ¥Ø¥ë¥×¥¦¥£¥ó¥É¥¦¤òÊĤ¸¤ë¤Ë¤Ï :q ¤È¥¿¥¤¥×¤¹¤ë¡£ + + 5. ¤ª¹¥¤ß¤ÎÀßÄê¤òÊÝ¤Ä¤Ë¤Ï vimrc µ¯Æ°¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë¡£ + + 6. : command ¤Ç²Äǽ¤ÊÊä´°¤ò¸«¤ë¤Ë¤Ï CTRL-D ¤ò¥¿¥¤¥×¤¹¤ë¡£ + Êä´°¤ò»ÈÍѤ¹¤ë¤Ë¤Ï ¤ò²¡¤¹¡£ + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + ¤³¤ì¤Ë¤Æ Vim ¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ò½ª¤ï¤ê¤Þ¤¹¡£¥¨¥Ç¥£¥¿¤ò´Êñ¤Ë¡¢¤·¤«¤â½¼Ê¬¤Ë + »È¤¦¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤È¡¢Vim ¤Î»ý¤Ä³µÇ°¤ÎÍ×ÅÀ¤Î¤ß¤òÅÁ¤¨¤è¤¦¤È¤·¤Þ¤·¤¿¡£ + Vim ¤Ë¤Ï¤µ¤é¤Ë¿¤¯¤Î¥³¥Þ¥ó¥É¤¬¤¢¤ê¡¢¤³¤³¤ÇÁ´¤Æ¤òÀâÌÀ¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ + °Ê¹ß¤Ï¥æ¡¼¥¶¥Þ¥Ë¥å¥¢¥ë¤ò»²¾È¤¯¤À¤µ¤¤: ":help user-manual" + + ¤³¤ì°Ê¸å¤Î³Ø½¬¤Î¤¿¤á¤Ë¡¢¼¡¤ÎËܤò¿äÁ¦¤·¤Þ¤¹¡£ + Vim - Vi Improved - by Steve Oualline + ½ÐÈǼÒ: New Riders + ºÇ½é¤ÎËܤϴ°Á´¤Ë Vim ¤Î¤¿¤á¤Ë½ñ¤«¤ì¤Þ¤·¤¿¡£¤È¤ê¤ï¤±½é¿´¼Ô¤Ë¤Ï¤ª¾©¤á¤Ç¤¹¡£ + ¿¤¯¤ÎÎãÂê¤ä¿ÞÈǤ¬·ÇºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ + ¼¡¤ÎURL¤ò»²¾È¤·¤Æ²¼¤µ¤¤ http://iccf-holland.org/click5.html + + ¼¡¤Ï Vim ¤è¤ê¤â Vi ¤Ë¤Ä¤¤¤Æ½ñ¤«¤ì¤¿¸Å¤¤ËܤǤ¹¤¬¿äÁ¦¤·¤Þ¤¹: + Learning the Vi Editor - by Linda Lamb + ½ÐÈǼÒ: O'Reilly & Associates Inc. + Vi ¤Ç¤ä¤ê¤¿¤¤¤È»×¤¦¤³¤È¤Û¤ÜÁ´¤Æ¤òÃΤ뤳¤È¤¬¤Ç¤­¤ëÎɽñ¤Ç¤¹¡£ + Âè6ÈǤǤϡ¢Vim ¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤â´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ + + ¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ï Colorado State University ¤Î Charles Smith ¤Î¥¢¥¤¥Ç¥¢ + ¤ò´ð¤Ë¡¢Colorado School of Mines ¤Î Michael C. Pierce ¤È Robert K. Ware ¤Î + ξ̾¤Ë¤è¤Ã¤Æ½ñ¤«¤ì¤Þ¤·¤¿¡£ E-mail: bware@mines.colorado.edu. + + Modified for Vim by Bram Moolenaar. + + ÆüËܸìÌõ ¾¾ËÜ ÂÙ¹° + ´Æ½¤ ¼²¬ ÂÀϺ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + vi:set ts=8 sts=4 sw=4 tw=78: diff --git a/share/vim/vim74/tutor/tutor.ja.sjis b/share/vim/vim74/tutor/tutor.ja.sjis new file mode 100644 index 00000000..2a6de3ad --- /dev/null +++ b/share/vim/vim74/tutor/tutor.ja.sjis @@ -0,0 +1,977 @@ +=============================================================================== += V I M ‹³ –{ (ƒ`ƒ…�[ƒgƒŠƒAƒ‹) ‚Ö ‚æ ‚¤ ‚± ‚» - Version 1.7 = +=============================================================================== + + Vim ‚Í�A‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚Å�à–¾‚·‚é‚É‚Í‘½‚·‚¬‚é’ö‚̃Rƒ}ƒ“ƒh‚ð”õ‚¦‚½”ñ�í + ‚É‹­—͂ȃGƒfƒBƒ^�[‚Å‚·�B‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚Í�A‚ ‚È‚½‚ª Vim ‚𖜔\ƒGƒfƒB + ƒ^�[‚Æ‚µ‚ÄŽg‚¢‚±‚È‚¹‚é‚悤‚É‚È‚é‚Ì‚É�\•ª‚ȃRƒ}ƒ“ƒh‚ɂ‚¢‚Ä�à–¾‚ð‚·‚é‚悤 + ‚È‚Á‚Ä‚¢‚Ü‚·�B + + ƒ`ƒ…�[ƒgƒŠƒAƒ‹‚ðŠ®—¹‚·‚é‚Ì‚É•K—v‚ÈŽžŠÔ‚Í�AŠo‚¦‚½ƒRƒ}ƒ“ƒh‚ðŽŽ‚·‚̂ɂǂꂾ + ‚¯ŽžŠÔ‚ðŽg‚¤‚Ì‚©‚É‚à‚æ‚è‚Ü‚·‚ª�A‚¨‚æ‚»25‚©‚ç30•ª‚Å‚·�B + + ATTENTION: + ˆÈ‰º‚Ì—û�K—pƒRƒ}ƒ“ƒh‚É‚Í‚±‚Ì•¶�Í‚ð•Ï�X‚·‚é‚à‚Ì‚à‚ ‚è‚Ü‚·�B—û�K‚ðŽn‚ß‚é‘O + ‚ɃRƒs�[‚ð�ì�¬‚µ‚Ü‚µ‚傤("vimtutor"‚µ‚½‚È‚ç‚Î�AŠù‚ɃRƒs�[‚³‚ê‚Ä‚¢‚Ü‚·)�B + + ‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚ª�AŽg‚¤‚±‚Æ‚ÅŠo‚¦‚ç‚ê‚éŽd‘g‚Ý‚É‚È‚Á‚Ä‚¢‚邱‚Æ‚ð�A�S‚µ + ‚Ä‚¨‚©‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ�B�³‚µ‚­Šw�K‚·‚é‚ɂ̓Rƒ}ƒ“ƒh‚ðŽÀ�Û‚ÉŽŽ‚³‚È‚¯‚ê‚Î + ‚È‚ç‚È‚¢‚Ì‚Å‚·�B•¶�Í‚ð“Ç‚ñ‚¾‚¾‚¯‚È‚ç‚Î�A‚«‚Á‚Æ–Y‚ê‚Ä‚µ‚Ü‚¢‚Ü‚·!�B + + ‚³‚Ÿ�ACapsƒ�ƒbƒN(Shift-Lock)ƒL�[‚ª‰Ÿ‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚ðŠm”F‚µ‚½Œã�A‰æ–Ê‚É + ƒŒƒbƒXƒ“1.1 ‚ª‘S•”•\Ž¦‚³‚ê‚é‚Æ‚±‚ë‚Ü‚Å�Aj ƒL�[‚ð‰Ÿ‚µ‚ăJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü + ‚µ‚傤�B +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 1.1: ƒJ�[ƒ\ƒ‹‚̈ړ® + + + ** ƒJ�[ƒ\ƒ‹‚ðˆÚ“®‚·‚é‚É‚Í�AŽ¦‚³‚ê‚é—l‚É h,j,k,l ‚ð‰Ÿ‚µ‚Ü‚· ** + ^ + k ƒqƒ“ƒg: h ƒL�[‚Í�¶•ûŒü‚Ɉړ®‚µ‚Ü‚·�B + < h l > l ƒL�[‚͉E•ûŒü‚Ɉړ®‚µ‚Ü‚·�B + j j ƒL�[‚͉º–îˆóƒL�[‚̂悤‚ȃL�[‚Å‚·�B + v + 1. ˆÚ“®‚ÉŠµ‚ê‚é‚Ü‚Å�AƒXƒNƒŠ�[ƒ“‚ŃJ�[ƒ\ƒ‹ˆÚ“®‚³‚¹‚Ü‚µ‚傤�B + + 2. ‰º‚ւ̃L�[(j)‚ð‰Ÿ‚µ‚‚¯‚é‚Æ�A˜A‘±‚µ‚Ĉړ®‚Å‚«‚Ü‚·�B + ‚±‚ê‚ÅŽŸ‚̃ŒƒbƒXƒ“‚Ɉړ®‚·‚é•û–@‚ª‚í‚©‚è‚Ü‚µ‚½‚Ë�B + + 3. ‰º‚ւ̃L�[‚ðŽg‚Á‚Ä�AƒŒƒbƒXƒ“1.2 ‚Ɉړ®‚µ‚Ü‚µ‚傤�B + +NOTE: ‰½‚ðƒ^ƒCƒv‚µ‚Ä‚¢‚é‚©”»‚ç‚È‚­‚È‚Á‚½‚ç�A‚ð‰Ÿ‚µ‚ăm�[ƒ}ƒ‹ƒ‚�[ƒh‚É‚µ + ‚Ü‚·�B‚»‚ê‚©‚ç“ü—Í‚µ‚悤‚Æ‚µ‚Ä‚¢‚½ƒRƒ}ƒ“ƒh‚ð�Ä“ü—Í‚µ‚Ü‚µ‚傤�B + +NOTE: ƒJ�[ƒ\ƒ‹ƒL�[‚Å‚àˆÚ“®‚Å‚«‚Ü‚·�B‚µ‚©‚µ hjkl ‚Ɉê“xŠµ‚ê‚Ä‚µ‚Ü‚¦‚Î�A‚Í‚é‚© + ‚É‘¬‚­ˆÚ“®‚·‚邱‚Æ‚ª‚Å‚«‚é‚Å‚µ‚傤�B‚¢‚âƒ}ƒW‚Å! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 1.2: VIM ‚Ì‹N“®‚Æ�I—¹ + + + !! NOTE: ˆÈ‰º‚Ì‚ ‚ç‚ä‚éƒXƒeƒbƒv‚ð�s‚¤‘O‚É�A‚±‚̃ŒƒbƒXƒ“‚ð“Ç‚Ý‚Ü‚µ‚傤!! + + 1. ƒL�[‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B(ŠmŽÀ‚Ƀm�[ƒ}ƒ‹ƒ‚�[ƒh‚É‚·‚邽‚ß) + + 2. ŽŸ‚̂悤‚Ƀ^ƒCƒv: :q! + ‚±‚ê‚É‚æ‚è•Ò�W‚µ‚½“à—e‚ð•Û‘¶‚¹‚¸‚ɃGƒfƒBƒ^‚ª�I—¹‚µ‚Ü‚·�B + + 3. ƒVƒFƒ‹ƒvƒ�ƒ“ƒvƒg‚ª�o‚Ä‚«‚½‚ç�A‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚ðŽn‚ß‚éˆ×‚ɂɃRƒ}ƒ“ƒh + ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B + ‚»‚̃Rƒ}ƒ“ƒh‚Í: vimtutor + + 4. ‚±‚ê‚܂ł̃Xƒeƒbƒv‚ðŠo‚¦Ž©�M‚ª‚‚¢‚½‚È‚ç‚Î�AƒXƒeƒbƒv 1 ‚©‚ç 3 ‚Ü‚Å‚ðŽÀ + �Û‚ÉŽŽ‚µ‚Ä�AVim ‚ð1“x�I—¹‚µ‚Ä‚©‚ç�Ä‚Ñ‹N“®‚µ‚Ü‚µ‚傤�B + +NOTE: :q! ‚Í‘S‚Ä‚Ì•Ï�X‚ð”jŠü‚µ‚Ü‚·�BƒŒƒbƒXƒ“‚É‚Ä•Ï�X‚ðƒtƒ@ƒCƒ‹‚É•Û + ‘¶‚·‚é•û–@‚ɂ‚¢‚Ä‚à•×‹­‚µ‚Ä‚¢‚«‚Ü‚µ‚傤�B + + 5. 1.3‚܂ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚³‚¹‚Ü‚µ‚傤�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 1.3: ƒeƒLƒXƒg•Ò�W - �í�œ + + + ** ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚ɂăJ�[ƒ\ƒ‹‚̉º‚Ì•¶Žš‚ð�í�œ‚·‚é‚É‚Í x ‚ð‰Ÿ‚µ‚Ü‚· ** + + 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 2. ŠÔˆá‚¢‚ð�C�³‚·‚邽‚ß‚É�A�í�œ‚·‚é�Å�‰‚Ì•¶Žš‚܂ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B + + 3. •s•K—v‚È•¶Žš‚ð x ‚ð‰Ÿ‚µ‚Ä�í�œ‚µ‚Ü‚µ‚傤�B + + 4. •¶‚ª�³‚µ‚­‚È‚é‚Ü‚Å ƒXƒeƒbƒv 2 ‚©‚ç 4 ‚ðŒJ‚è•Ô‚µ‚Ü‚µ‚傤�B + +---> ‚»‚Ì ‚¤‚¤‚³‚¬ ‚Í ‚‚‚«‚« ‚ð ‚±‚¦‚¦‚Ä‚Ä ‚Æ‚Ñ‚Í‚Ë‚½‚½ + + 5. �s‚ª�³‚µ‚­‚È‚Á‚½‚ç�AƒŒƒbƒXƒ“ 1.4 ‚Ö�i‚Ý‚Ü‚µ‚傤�B + +NOTE: ‘S‚ẴŒƒbƒXƒ“‚ð’Ê‚¶‚Ä�AŠo‚¦‚悤‚Æ‚·‚é‚Ì‚Å‚Í‚È‚­ŽÀ�Û‚É‚â‚Á‚Ä‚Ý‚Ü‚µ‚傤�B + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 1.4: ƒeƒLƒXƒg•Ò�W - ‘}“ü + + + ** ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚ɂăeƒLƒXƒg‚ð‘}“ü‚·‚é‚É‚Í i ‚ð‰Ÿ‚µ‚Ü‚· ** + + 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�Å�‰‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 2. 1�s–Ú‚ð2�s–Ú‚Æ“¯‚¶—l‚É‚·‚邽‚ß‚É�AƒeƒLƒXƒg‚ð‘}“ü‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢ˆÊ’u + ‚ÌŽŸ‚Ì•¶Žš‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B + + 3. i ƒL�[‚ð‰Ÿ‚µ‚Ä‚©‚ç�A’ljÁ‚ª•K—v‚È•¶Žš‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B + + 4. ŠÔˆá‚¢‚ð�C�³‚µ‚½‚ç ‚ð‰Ÿ‚µ‚ăRƒ}ƒ“ƒhƒ‚�[ƒh‚É–ß‚è�A�³‚µ‚¢•¶‚É‚È‚é—l + ‚ɃXƒeƒbƒv 2 ‚©‚ç 4 ‚ðŒJ‚è•Ô‚µ‚Ü‚µ‚傤�B + +---> ‚±‚Ì ‚É‚Í ‘«‚è‚È‚¢ ƒeƒLƒXƒg ‚ ‚é�B +---> ‚±‚Ì �s ‚É‚Í Šô‚‚© ‘«‚è‚È‚¢ ƒeƒLƒXƒg ‚ª ‚ ‚é�B + + 5. ‘}“ü‚Ì•û–@‚ª‚í‚©‚Á‚½‚烌ƒbƒXƒ“ 1.5 ‚Ö�i‚Ý‚Ü‚µ‚傤�B + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 1.5: ƒeƒLƒXƒg•Ò�W - ’ljÁ + + + ** ƒeƒLƒXƒg‚ð’ljÁ‚·‚é‚É‚Í A ‚ð‰Ÿ‚µ‚Ü‚µ‚傤 ** + + 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�Å�‰‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + ƒJ�[ƒ\ƒ‹‚ª‚»‚Ì•¶Žš�ã‚É‚ ‚Á‚Ä‚à‚©‚Ü‚¢‚Ü‚¹‚ñ�B + + 2. ’ljÁ‚ª•K—v‚È�ê�Š‚Å A ‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B + + 3. ƒeƒLƒXƒg‚ð’ljÁ‚µ�I‚¦‚½‚ç�A ‚ð‰Ÿ‚µ‚ăm�[ƒ}ƒ‹ƒ‚�[ƒh‚É–ß‚è‚Ü‚µ‚傤�B + + 4. 2�s–Ú‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�ê�Š‚ÖˆÚ“®‚µ�AƒXƒeƒbƒv 2 ‚©‚ç 3 ‚ðŒJ‚è•Ô‚µ‚Ä•¶–@ + ‚ð�C�³‚µ‚Ü‚µ‚傤�B + +---> ‚±‚±‚É‚ÍŠÔˆá‚Á‚½ƒeƒLƒXƒg‚ª‚ ‚è + ‚±‚±‚É‚ÍŠÔˆá‚Á‚½ƒeƒLƒXƒg‚ª‚ ‚è‚Ü‚·�B +---> ‚±‚±‚É‚àŠÔˆá‚Á‚½ƒeƒLƒX + ‚±‚±‚É‚àŠÔˆá‚Á‚½ƒeƒLƒXƒg‚ª‚ ‚è‚Ü‚·�B + + 5. ƒeƒLƒXƒg‚̒ljÁ‚ªŒy‰õ‚É‚È‚Á‚Ä‚«‚½‚烌ƒbƒXƒ“ 1.6 ‚Ö�i‚Ý‚Ü‚µ‚傤�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 1.6: ƒtƒ@ƒCƒ‹‚Ì•Ò�W + + + ** ƒtƒ@ƒCƒ‹‚ð•Û‘¶‚µ‚Ä�I—¹‚·‚é‚É‚Í :wq ‚ƃ^ƒCƒv‚µ‚Ü‚· ** + + !! NOTE: ˆÈ‰º‚̃Xƒeƒbƒv‚ðŽÀ�s‚·‚é‘O‚É�A‚Ü‚¸‘S‘Ì‚ð“Ç‚ñ‚Å‚­‚¾‚³‚¢!! + + 1. ƒŒƒbƒXƒ“ 1.2 ‚Å‚â‚Á‚½‚悤‚É :q! ‚ðƒ^ƒCƒv‚µ‚Ä�A‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚ð�I—¹ + ‚µ‚Ü‚·�B‚ ‚é‚¢‚Í�A•Ê‚Ì’[––‚ª‚ ‚é�ê�‡‚Í‚»‚±‚ňȉº‚Ì“à—e‚ð�s‚Á‚Ä‚à‚©‚Ü‚¢ + ‚Ü‚¹‚ñ�B + + 2. ƒVƒFƒ‹ƒvƒ�ƒ“ƒvƒg‚Å‚±‚̃Rƒ}ƒ“ƒh‚ðƒ^ƒCƒv‚µ‚Ü‚·: vim tutor + 'vim'‚ª Vim ƒGƒfƒBƒ^‚ð‹N“®‚·‚éƒRƒ}ƒ“ƒh�A'tutor' ‚Í•Ò�W‚µ‚½‚¢ƒtƒ@ƒCƒ‹‚Ì + –¼‘O‚Å‚·�B•Ï�X‚µ‚Ä‚à‚æ‚¢ƒtƒ@ƒCƒ‹‚ðŽg‚¢‚Ü‚µ‚傤�B + + 3. ‘O‚̃ŒƒbƒXƒ“‚ÅŠw‚ñ‚¾‚悤‚É�AƒeƒLƒXƒg‚ð‘}“ü�A�í�œ‚µ‚Ü‚·�B + + 4. •Ï�X‚ðƒtƒ@ƒCƒ‹‚É•Û‘¶‚µ‚Ü‚·: :wq + + 5. ƒXƒeƒbƒv 1 ‚Å vimtutuor ‚ð�I—¹‚µ‚½�ê�‡‚Í vimtutor ‚ð�Ä“x‹N“®‚µ�AˆÈ‰º‚Ì + —v–ñ‚Ö�i‚Ý‚Ü‚µ‚傤�B + + 6. ˆÈ�ã‚̃Xƒeƒbƒv‚ð“Ç‚ñ‚Å—�‰ð‚µ‚½�ã‚Å‚±‚ê‚ðŽÀ�s‚µ‚Ü‚µ‚傤�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 1 —v–ñ + + + 1. ƒJ�[ƒ\ƒ‹‚Í–îˆóƒL�[‚à‚µ‚­‚Í hjkl ƒL�[‚ňړ®‚µ‚Ü‚·�B + h (�¶) j (‰º) k (�ã) l (‰E) + + 2. Vim ‚ð‹N“®‚·‚é‚ɂ̓vƒ�ƒ“ƒvƒg‚©‚ç vim ƒtƒ@ƒCƒ‹–¼ ‚ƃ^ƒCƒv‚µ‚Ü‚·�B + + 3. Vim ‚ð�I—¹‚·‚é‚É‚Í :q! ‚ƃ^ƒCƒv‚µ‚Ü‚·(•Ï�X‚ð”jŠü)�B + ‚à‚µ‚­‚Í :wq ‚ƃ^ƒCƒv‚µ‚Ü‚·(•Ï�X‚ð•Û‘¶)�B + + 4. ƒJ�[ƒ\ƒ‹‚̉º‚Ì•¶Žš‚ð�í�œ‚·‚é‚É‚Í�Aƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å x ‚ƃ^ƒCƒv‚µ‚Ü‚·�B + + 5. ƒJ�[ƒ\ƒ‹‚̈ʒu‚É•¶Žš‚ð‘}“ü‚·‚é‚É‚Í�Aƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å i ‚ƃ^ƒCƒv‚µ‚Ü‚·�B + i ƒeƒLƒXƒg‚̃^ƒCƒv ƒJ�[ƒ\ƒ‹ˆÊ’u‚ɒljÁ + A ƒeƒLƒXƒg‚̒ljÁ �s––‚ɒljÁ + +NOTE: ƒL�[‚ð‰Ÿ‚·‚ƃm�[ƒ}ƒ‹ƒ‚�[ƒh‚ɈÚ�s‚µ‚Ü‚·�B‚»‚Ì�Û�AŠÔˆá‚Á‚½‚è“ü—Í“r + ’†‚̃Rƒ}ƒ“ƒh‚ðŽæ‚è�Á‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·�B + +‚³‚Ä�A‘±‚¯‚ăŒƒbƒXƒ“ 2 ‚ðŽn‚ß‚Ü‚µ‚傤�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 2.1: �í�œƒRƒ}ƒ“ƒh + + + ** ’PŒê‚Ì––”ö‚Ü‚Å‚ð�í�œ‚·‚é‚É‚Í dw ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤 ** + + 1. ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å‚ ‚邱‚Æ‚ðŠm”F‚·‚邽‚ß‚É ‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B + + 2. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 3. �Á‚µ‚½‚¢’PŒê‚Ì�擪‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 4. ’PŒê‚ð�í�œ‚·‚邽‚ß‚É dw ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B + + NOTE: ƒ^ƒCƒv‚·‚é‚Æ�Adw ‚Æ‚¢‚¤•¶Žš‚ªƒXƒNƒŠ�[ƒ“‚Ì�ʼnº�s‚ÉŒ»‚í‚ê‚Ü‚·�B + ƒ^ƒCƒv‚ðŠÔˆá‚Á‚Ä‚µ‚Ü‚Á‚½Žž‚É‚Í ‚ð‰Ÿ‚µ‚Ä‚â‚è’¼‚µ‚Ü‚µ‚傤�B + +---> ‚±‚Ì •¶ Ž† ‚É‚Í ‚¢‚­‚‚©‚Ì ‚½‚Ì‚µ‚¢ •K—v‚Ì‚È‚¢ ’PŒê ‚ª ŠÜ‚Ü‚ê‚Ä ‚¢‚Ü‚·�B + + 5. 3 ‚©‚ç 4 ‚܂ł𕶂ª�³‚µ‚­‚È‚é‚Ü‚ÅŒJ‚è•Ô‚µ�AƒŒƒbƒXƒ“ 2.2 ‚Ö�i‚Ý‚Ü‚µ‚傤�B + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 2.2: ‚»‚Ì‘¼‚Ì�í�œƒRƒ}ƒ“ƒh + + + ** �s‚Ì––”ö‚Ü‚Å‚ð�í�œ‚·‚é‚É‚Í d$ ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤 ** + + 1. ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å‚ ‚邱‚Æ‚ðŠm”F‚·‚é‚Ì‚É ‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B + + 2. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 3. �³‚µ‚¢•¶‚Ì––”ö‚ÖƒJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤(�Å�‰‚Ì �B ‚ÌŒã‚Å‚·)�B + + 4. �s––‚Ü‚Å�í�œ‚·‚é‚Ì‚É d$ ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B + +---> ’N‚©‚ª‚±‚Ì�s‚Ì�ÅŒã‚ð2“xƒ^ƒCƒv‚µ‚Ü‚µ‚½�B 2“xƒ^ƒCƒv‚µ‚Ü‚µ‚½�B + + + 5. ‚Ç‚¤‚¢‚¤‚±‚Æ‚©—�‰ð‚·‚邽‚ß‚É�AƒŒƒbƒXƒ“ 2.3 ‚Ö�i‚Ý‚Ü‚µ‚傤�B + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 2.3: ƒIƒyƒŒ�[ƒ^‚ƃ‚�[ƒVƒ‡ƒ“ + + + ‘½‚­‚̃Rƒ}ƒ“ƒh‚̓IƒyƒŒ�[ƒ^‚ƃ‚�[ƒVƒ‡ƒ“‚©‚çƒeƒLƒXƒg‚É•Ï�X‚ð‰Á‚¦‚Ü‚·�B + �í�œƒRƒ}ƒ“ƒh d ‚̃IƒyƒŒ�[ƒ^‚ÍŽŸ‚Ì—l‚É‚È‚Á‚Ä‚¢‚Ü‚·: + + d ƒ‚�[ƒVƒ‡ƒ“ + + ‚»‚ꂼ‚ê: + d - �í�œƒRƒ}ƒ“ƒh�B + ƒ‚�[ƒVƒ‡ƒ“ - ‰½‚ɑ΂µ‚Ä“­‚«‚©‚¯‚é‚©(ˆÈ‰º‚É‹“‚°‚Ü‚·)�B + + ƒIƒyƒŒ�[ƒ^‚̈ꕔˆê——: + w - ƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç‹ó”’‚ðŠÜ‚Þ’PŒê‚Ì––”ö‚Ü‚Å�B + e - ƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç‹ó”’‚ðŠÜ‚Ü‚È‚¢’PŒê‚Ì––”ö‚Ü‚Å�B + $ - ƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç�s––‚Ü‚Å�B + + ‚‚܂è de ‚ƃ^ƒCƒv‚·‚é‚Æ�AƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç’PŒê‚Ì�I‚í‚è‚Ü‚Å‚ð�í�œ‚µ‚Ü‚·�B + +NOTE: –`Œ¯‚µ‚½‚¢�l‚Í�Aƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚ɂăRƒ}ƒ“ƒh‚È‚µ‚Ƀ‚�[ƒVƒ‡ƒ“‚ð‰Ÿ‚µ‚Ä + ‚Ý‚Ü‚µ‚傤�BƒJ�[ƒ\ƒ‹‚ª–Ú“IŒêˆê——‚ÅŽ¦‚³‚ê‚éˆÊ’u‚Ɉړ®‚·‚é‚Í‚¸‚Å‚·�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 2.4: ƒ‚�[ƒVƒ‡ƒ“‚ɃJƒEƒ“ƒg‚ðŽg—p‚·‚é + + + ** ‰½‰ñ‚à�s‚¢‚½‚¢ŒJ‚è•Ô‚µ‚̃‚�[ƒVƒ‡ƒ“‚Ì‘O‚É�”’l‚ðƒ^ƒCƒv‚µ‚Ü‚·�B ** + + 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚Ì�擪‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B + + 2. 2w ‚ðƒ^ƒCƒv‚µ‚Ä’PŒê2‚•ª‘O‚Ɉړ®‚µ‚Ü‚·�B + + 3. 3e ‚ðƒ^ƒCƒv‚µ‚Ä3‚–ڂ̒PŒê‚Ì�I’[‚Ɉړ®‚µ‚Ü‚·�B + + 4. 0 (ƒ[ƒ�)‚ðƒ^ƒCƒv‚µ‚Ä�s“ª‚Ɉړ®‚µ‚Ü‚·�B + + 5. ƒXƒeƒbƒv 2 ‚Æ 3 ‚ðˆá‚¤�”’l‚ðŽg‚Á‚ÄŒJ‚è•Ô‚µ‚Ü‚·�B + +---> This is just a line with words you can move around in. + + 6. ƒŒƒbƒXƒ“ 2.5 ‚É�i‚Ý‚Ü‚µ‚傤�B + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 2.5: ‚æ‚葽‚­‚ð�í�œ‚·‚邽‚߂ɃJƒEƒ“ƒg‚ðŽg—p‚·‚é + + + ** ƒIƒyƒŒ�[ƒ^‚ƃJƒEƒ“ƒg‚ðƒ^ƒCƒv‚·‚é‚Æ�A‚»‚Ì‘€�삪•¡�”‰ñŒJ‚è•Ô‚³‚ê‚Ü‚·�B ** + + Šù�q‚Ì�í�œ‚̃IƒyƒŒ�[ƒ^‚ƃ‚�[ƒVƒ‡ƒ“‚Ì‘g‚Ý�‡‚킹‚ɃJƒEƒ“ƒg‚ð’ljÁ‚·‚邱‚Æ‚Å�A + ‚æ‚葽‚­‚Ì�í�œ‚ª�s‚¦‚Ü‚·: + d �”’l ƒ‚�[ƒVƒ‡ƒ“ + + 1. ---> ‚ÆŽ¦‚³‚ꂽ�s‚Ì�s“ª•”•ª‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 2. UPPER CASE ‚Ì’PŒê2‚‚ð d2w ‚ƃ^ƒCƒv‚µ‚Ä�í�œ‚µ‚Ü‚·�B + + 3. UPPER CASE ‚Æ‚¢‚¤˜A‘±‚µ‚½’PŒê‚ð�A1‚‚̃Rƒ}ƒ“ƒh‚ƈقȂéƒJƒEƒ“ƒg‚ðŽw’肵�A + ƒXƒeƒbƒv 1 ‚Æ 2 ‚ðŒJ‚è•Ô‚µ‚Ü‚·�B + +---> ‚±‚ÌABC DE�s‚ÌFGHI JK LMN OP’PŒê‚ÍQ RS TUVãY—í‚É‚È‚Á‚½�B + +NOTE: ƒIƒyƒŒ�[ƒ^ d ‚ƃ‚�[ƒVƒ‡ƒ“‚̊ԂɃJƒEƒ“ƒg‚ðŽg‚Á‚½�ê�‡�AƒIƒyƒŒ�[ƒ^‚Ì‚È‚¢ + �ê�‡‚̃‚�[ƒVƒ‡ƒ“‚̂悤‚É“®�삵‚Ü‚·�B + —á: 3dw ‚Æ d3w ‚Í“¯“™‚Å�A3w ‚ð�í�œ‚µ‚Ü‚·�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 2.6: �s‚Ì‘€�ì + + + ** �s‘S‘Ì‚ð�í�œ‚·‚é‚É‚Í dd ‚ƃ^ƒCƒv‚µ‚Ü‚· ** + + �s‘S‘Ì‚ð�í�œ‚·‚é•p“x‚ª‘½‚¢‚Ì‚Å�AVi‚̃fƒUƒCƒi�[‚Í�s‚Ì�í�œ‚ð d ‚Ì2‰ñƒ^ƒCƒv‚Æ + ‚¢‚¤ŠÈ’P‚È‚à‚Ì‚ÉŒˆ‚ß‚Ü‚µ‚½�B + + 1. ˆÈ‰º‚Ì‹å‚Ì2�s–ڂɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B + 2. dd ‚ƃ^ƒCƒv‚µ‚Ä�s‚ð�í�œ‚µ‚Ü‚·�B + 3. ‚³‚ç‚É4�s–ڂɈړ®‚µ‚Ü‚·�B + 4. 2dd ‚ƃ^ƒCƒv‚µ‚Ä2�s‚ð�í�œ‚µ‚Ü‚·�B + +---> 1) ƒoƒ‰‚Í�Ô‚¢�A +---> 2) ‚‚܂ç‚È‚¢‚à‚Ì‚ÍŠy‚µ‚¢�A +---> 3) ƒXƒ~ƒŒ‚Í�‚¢�A +---> 4) Ž„‚ÍŽÔ‚ð‚à‚Á‚Ä‚¢‚é�A +---> 5) ŽžŒv‚ªŽž��‚ð��‚°‚é�A +---> 6) �»“œ‚͊¢ +---> 7) ƒIƒ}ƒGƒ‚ƒi�[ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 2.7: ‚â‚è’¼‚µƒRƒ}ƒ“ƒh + + + ** �ÅŒã‚̃Rƒ}ƒ“ƒh‚ðŽæ‚è�Á‚·‚É‚Í u ‚ð‰Ÿ‚µ‚Ü‚·�BU ‚Í�s‘S‘Ì‚ÌŽæ�Á‚Å‚·�B ** + + 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ�A�Å�‰‚̊ԈႢ‚ɃJ�[ƒ\ƒ‹ + ‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + 2. x ‚ðƒ^ƒCƒv‚µ‚Ä‚¢‚ç‚È‚¢�擪‚Ì•¶Žš‚ð�í�œ‚µ‚Ü‚µ‚傤�B + 3. ‚³‚Ÿ�Au ‚ðƒ^ƒCƒv‚µ‚Ä�ÅŒã‚ÉŽÀ�s‚µ‚½ƒRƒ}ƒ“ƒh‚ðŽæ‚è�Á‚µ‚Ü‚µ‚傤�B + 4. �¡“x‚Í�Ax ‚ðŽg—p‚µ‚ÄŒë‚è‚ð‘S‚Ä�C�³‚µ‚Ü‚µ‚傤�B + 5. ‘啶Žš‚Ì U ‚ðƒ^ƒCƒv‚µ‚Ä�A�s‚ðŒ³‚Ì�ó‘Ô‚É–ß‚µ‚Ü‚µ‚傤�B + 6. u ‚ðƒ^ƒCƒv‚µ‚Ä’¼‘O‚Ì U ƒRƒ}ƒ“ƒh‚ðŽæ�Á‚µ‚Ü‚µ‚傤�B + 7. ‚ł̓Rƒ}ƒ“ƒh‚ð�ÄŽÀ�s‚·‚é‚Ì‚É CTRL-R (CTRL ‚ð‰Ÿ‚µ‚½‚Ü‚Ü R ‚ð‘Å‚Â)‚ð�”‰ñ + ƒ^ƒCƒv‚µ‚Ä‚Ý‚Ü‚µ‚傤(Žæ�Á‚ÌŽæ�Á)�B + +---> ‚±‚Ì‚Ì�s‚̂̊ԈႢ‚ð�C�³�X‚µ�AŒã‚Å‚»‚ê‚ç‚Ì�C�³‚ð‚ðŽæ�Á‚µ‚Ü‚Ü‚·‚·�B + + 8. ‚±‚ê‚Í‚Æ‚Ä‚à•Ö—˜‚ȃRƒ}ƒ“ƒh‚Å‚·�B‚³‚ŸƒŒƒbƒXƒ“ 2 —v–ñ‚Ö�i‚Ý‚Ü‚µ‚傤�B + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 2 —v–ñ + + + 1. ƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç’PŒê‚Ì––”ö‚Ü‚Å‚ð�í�œ‚·‚é‚É‚Í dw ‚ƃ^ƒCƒv‚µ‚Ü‚·�B + 2. ƒJ�[ƒ\ƒ‹ˆÊ’u‚©‚ç�s‚Ì––”ö‚Ü‚Å‚ð�í�œ‚·‚é‚É‚Í d$ ‚ƃ^ƒCƒv‚µ‚Ü‚·�B + 3. �s‘S‘Ì‚ð�í�œ‚·‚é‚É‚Í dd ‚ƃ^ƒCƒv‚µ‚Ü‚·�B + + 4. ƒ‚�[ƒVƒ‡ƒ“‚ðŒJ‚è•Ô‚·‚É‚Í�”’l‚ð•t—^‚µ‚Ü‚·: 2w + 5. •Ï�X‚É—p‚¢‚éƒRƒ}ƒ“ƒh‚ÌŒ`Ž®‚Í + ƒIƒyƒŒ�[ƒ^ [�”’l] ƒ‚�[ƒVƒ‡ƒ“ + + ‚»‚ꂼ‚ê: + ƒIƒyƒŒ�[ƒ^ - �í�œ d ‚̗ނʼn½‚ð‚·‚é‚©�B + �”’l - ‚»‚̃Rƒ}ƒ“ƒh‚ð‰½‰ñŒJ‚è•Ô‚·‚©�B + ƒ‚�[ƒVƒ‡ƒ“ - w (’PŒê)‚â $ (�s––)‚È‚Ç‚Ì—Þ‚Å�AƒeƒLƒXƒg‚̉½‚ɑ΂µ‚Ä“­‚«‚© + ‚¯‚é‚©�B + + 6. �s‚Ì�擪‚Ɉړ®‚·‚é‚ɂ̓[ƒ�‚ðŽg—p‚µ‚Ü‚·: 0 + + 7. ‘O‰ñ‚Ì“®�ì‚ðŽæ�Á‚·: u (�¬•¶Žš u) + �s‘S‘Ì‚Ì•Ï�X‚ðŽæ�Á‚·: U (‘啶Žš U) + Žæ�Á‚µ‚ÌŽæ�Á‚µ: CTRL-R +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 3.1: “\‚è•t‚¯ƒRƒ}ƒ“ƒh + + + ** �ÅŒã‚É�í�œ‚³‚ꂽ�s‚ðƒJ�[ƒ\ƒ‹‚ÌŒã‚É“\‚è•t‚¯‚é‚É‚Í p ‚ðƒ^ƒCƒv‚µ‚Ü‚· ** + + 1. ˆÈ‰º‚Ì’i—Ž‚Ì�Å�‰‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 2. dd ‚ƃ^ƒCƒv‚µ‚Ä�s‚ð�í�œ‚µ�AVim ‚̃oƒbƒtƒ@‚ÉŠi”[‚µ‚Ü‚µ‚傤�B + + 3. �í�œ‚µ‚½�s‚ª–{—ˆ‚ ‚é‚ׂ«ˆÊ’u‚Ì�ã‚Ì�s‚Ü‚Å�AƒJ�[ƒ\ƒ‹‚ðˆÚ“®‚³‚¹‚Ü‚µ‚傤�B + + 4. ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å p ‚ðƒ^ƒCƒv‚µ‚ÄŠi”[‚µ‚½�s‚ð‰æ–Ê‚É–ß‚µ‚Ü‚·�B + + 5. �‡”Ô‚ª�³‚µ‚­‚È‚é—l‚ɃXƒeƒbƒv 2 ‚©‚ç 4 ‚ðŒJ‚è•Ô‚µ‚Ü‚µ‚傤�B + + d) ‹M•û‚àŠw‚Ô‚±‚Æ‚ª‚Å‚«‚é? + b) ƒXƒ~ƒŒ‚Í�‚¢�A + c) ’mŒb‚Æ‚ÍŠw‚Ô‚à‚Ì�A + a) ƒoƒ‰‚Í�Ô‚¢�A + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 3.2: ’u‚«Š·‚¦ƒRƒ}ƒ“ƒh + + + ** ƒJ�[ƒ\ƒ‹‚̉º‚Ì•¶Žš‚ð’u‚«Š·‚¦‚é‚É‚Í r ‚ðƒ^ƒCƒv‚µ‚Ü‚· ** + + 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�Å�‰‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 2. �Å�‰‚̊ԈႢ‚Ì�擪‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 3. r ‚ƃ^ƒCƒv‚µ�AŠÔˆá‚Á‚Ä‚¢‚镶Žš‚ð’u‚«Š·‚¦‚é�A�³‚µ‚¢•¶Žš‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B + + 4. �Å�‰‚Ì�s‚ª�³‚µ‚­‚È‚é‚܂ŃXƒeƒbƒv 2 ‚©‚ç 3 ‚ðŒJ‚è•Ô‚µ‚Ü‚µ‚傤�B + +---> ‚±‚Ì�‡‚ð�l—Í‚µ‚½Žž‚Ë�A‚»‚Ì�l‚ÍŠô‚‚©–âˆá‚Á‚½ƒL�[‚ð‰Ÿ‚µ‚à‚µ‚½! +---> ‚±‚Ì�s‚ð“ü—Í‚µ‚½Žž‚É�A‚»‚Ì�l‚ÍŠô‚‚©ŠÔˆá‚Á‚½ƒL�[‚ð‰Ÿ‚µ‚Ü‚µ‚½! + + 5. ‚³‚Ÿ�AƒŒƒbƒXƒ“ 3.3 ‚Ö�i‚Ý‚Ü‚µ‚傤�B + +NOTE: ŽÀ�Û‚ÉŽŽ‚µ‚Ü‚µ‚傤�BŒˆ‚µ‚ÄŠo‚¦‚邾‚¯‚É‚Í‚µ‚È‚¢‚±‚Æ�B + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 3.3: •Ï�XƒRƒ}ƒ“ƒh + + + ** ’PŒê‚̈ꕔ�A‚à‚µ‚­‚Í‘S‘Ì‚ð•Ï�X‚·‚é‚É‚Í cw ‚ƃ^ƒCƒv‚µ‚Ü‚· ** + + 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�Å�‰‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 2. lubw ‚Ì u ‚̈ʒu‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 3. cw ‚ƃ^ƒCƒv‚µ�A�³‚µ‚¢’PŒê‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤(‚±‚Ì�ê�‡ 'ine' ‚ƃ^ƒCƒv)�B + + 4. ŽŸ‚̊ԈႢ(•Ï�X‚·‚ׂ«•¶Žš‚Ì�擪)‚Ɉړ®‚·‚邽‚ß‚É ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B + + 5. �Å�‰‚Ì�s‚ªŽŸ‚Ì�s‚Ì—l‚É‚È‚é‚܂ŃXƒeƒbƒv 3 ‚Æ 4 ‚ðŒJ‚è•Ô‚µ‚Ü‚·�B + +---> This lubw has a few wptfd that mrrf changing usf the change operator. +---> This line has a few words that need changing using the change operator. + +cw ‚Í’PŒê‚ð•Ï�X‚·‚邾‚¯‚Å‚È‚­�A‘}“ü‚à�s‚¦‚邱‚Æ‚É’�ˆÓ‚µ‚Ü‚µ‚傤�B + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 3.4: c ‚ðŽg—p‚µ‚½‚»‚Ì‘¼‚Ì•Ï�X + + + ** •Ï�XƒRƒ}ƒ“ƒh‚Í�A�í�œƒRƒ}ƒ“ƒh‚Æ“¯‚¶—l‚ɃIƒuƒWƒFƒNƒg‚ðŽg—p‚µ‚Ü‚· ** + + 1. •Ï�XƒRƒ}ƒ“ƒh‚Í�A�í�œƒRƒ}ƒ“ƒh‚Æ“¯‚¶‚悤‚È“®�ì‚ð‚µ‚Ü‚·�B‚»‚ÌŒ`Ž®‚Í + + c [�”’l] ƒ‚�[ƒVƒ‡ƒ“ + + 2. ƒIƒuƒWƒFƒNƒg‚à“¯‚¶‚Å�Aw ‚Í’PŒê�A $ ‚Í�s––‚È‚Ç‚Æ‚¢‚Á‚½‚à‚Ì‚Å‚·�B + + 3. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 4. �Å�‰‚̊ԈႢ‚ÖƒJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 5. c$ ‚ƃ^ƒCƒv‚µ‚Ä�s‚ÌŽc‚è‚ð‚Q�s–Ú‚Ì—l‚É‚µ�A ‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B + +---> The end of this line needs some help to make it like the second. +---> The end of this line needs to be corrected using the c$ command. + +NOTE: ƒ^ƒCƒv’†‚̊ԈႢ‚̓oƒbƒNƒXƒy�[ƒXƒL�[‚ðŽg‚Á‚Ä’¼‚·‚±‚Æ‚à‚Å‚«‚Ü‚·�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 3 —v–ñ + + + 1. Šù‚É�í�œ‚³‚ꂽƒeƒLƒXƒg‚ð�Ä”z’u‚·‚é‚É‚Í�Ap ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B‚±‚ê‚Í�í�œ‚³ + ‚ꂽƒeƒLƒXƒg‚ðƒJ�[ƒ\ƒ‹‚ÌŒã‚É‘}“ü‚µ‚Ü‚·(�s’PˆÊ‚Å�í�œ‚³‚ꂽ‚Ì‚È‚ç‚Î�AƒJ�[ + ƒ\ƒ‹‚Ì‚ ‚鎟‚Ì�s‚É‘}“ü‚³‚ê‚Ü‚·)�B + + 2. ƒJ�[ƒ\ƒ‹‚̉º‚Ì•¶Žš‚ð’u‚«Š·‚¦‚é‚É‚Í�Ar ‚ðƒ^ƒCƒv‚µ‚½Œã�A‚»‚ê‚ð’u‚«Š·‚¦‚é + •¶Žš‚ðƒ^ƒCƒv‚µ‚Ü‚·�B + + 3. •Ï�XƒRƒ}ƒ“ƒh‚ł̓J�[ƒ\ƒ‹ˆÊ’u‚©‚ç“Á’è‚̃‚�[ƒVƒ‡ƒ“‚ÅŽw’肳‚ê‚é�I’[‚Ü‚Å‚ð•Ï + �X‚·‚邱‚Æ‚ª‰Â”\‚Å‚·�B—Ⴆ‚Î cw ‚È‚ç‚΃J�[ƒ\ƒ‹ˆÊ’u‚©‚ç’PŒê‚Ì�I‚í‚è‚Ü‚Å�A + c$ ‚È‚ç‚Î�s‚Ì�I‚í‚è‚Ü‚Å‚ð•Ï�X‚µ‚Ü‚·�B + + 4. •Ï�XƒRƒ}ƒ“ƒh‚ÌŒ`Ž®‚Í + + c [�”’l] ƒ‚�[ƒVƒ‡ƒ“ + +‚³‚Ÿ�AŽŸ‚̃ŒƒbƒXƒ“‚Ö�i‚Ý‚Ü‚µ‚傤�B + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 4.1: ˆÊ’u‚ƃtƒ@ƒCƒ‹‚Ì�î•ñ + + ** ƒtƒ@ƒCƒ‹“à‚ł̈ʒu‚ƃtƒ@ƒCƒ‹‚Ì�ó‘Ô‚ð•\Ž¦‚·‚é‚É‚Í CTRL-G ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B + ƒtƒ@ƒCƒ‹“à‚Ì‚ ‚é�s‚Ɉړ®‚·‚é‚É‚Í G ‚ðƒ^ƒCƒv‚µ‚Ü‚· ** + + NOTE: ƒXƒeƒbƒv‚ðŽÀ�s‚·‚é‘O‚É�A‚±‚̃ŒƒbƒXƒ“‘S‚Ä‚É–Ú‚ð’Ê‚µ‚Ü‚µ‚傤!! + + 1. CTRL ‚ð‰Ÿ‚µ‚½‚Ü‚Ü g ‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B‚±‚Ì‘€�ì‚ð CTRL-G ‚ƌĂñ‚Å‚¢‚Ü‚·�B + ƒy�[ƒW‚̈ê”Ô‰º‚Ƀtƒ@ƒCƒ‹–¼‚Æ�s”Ô�†‚ª•\Ž¦‚³‚ê‚é‚Í‚¸‚Å‚·�B ƒXƒeƒbƒv 3‚Ì‚½‚ß + ‚É�s”Ô�†‚ðŠo‚¦‚Ä‚¨‚«‚Ü‚µ‚傤�B + +NOTE: ‰æ–ʂ̉E‰º‹÷‚ɃJ�[ƒ\ƒ‹‚̈ʒu‚ª•\Ž¦‚³‚ê‚Ä‚¢‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ�B‚±‚ê‚Í + 'ruler' ƒIƒvƒVƒ‡ƒ“(:help 'ruler' ‚ðŽQ�Æ)‚ð�Ý’è‚·‚邱‚Æ‚Å•\Ž¦‚³‚ê‚Ü‚·�B + + 2. �ʼnº�s‚Ɉړ®‚·‚邽‚ß‚É G ‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B + ƒtƒ@ƒCƒ‹‚Ì�擪‚Ɉړ®‚·‚é‚É‚Í gg ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B + + 3. �æ‚Ù‚Ç‚Ì�s‚Ì”Ô�†‚ðƒ^ƒCƒv‚µ G ‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B�Å�‰‚É CTRL-G ‚ð‰Ÿ‚µ‚½�s + ‚É–ß‚Á‚Ä—ˆ‚é‚Í‚¸‚Å‚·�B + + 4. Ž©�M‚ªŽ�‚Ä‚½‚çƒXƒeƒbƒv 1 ‚©‚ç 3 ‚ðŽÀ�s‚µ‚Ü‚µ‚傤�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 4.2: ŒŸ�õƒRƒ}ƒ“ƒh + + + ** Œê‹å‚ðŒŸ�õ‚·‚é‚É‚Í / ‚Æ�A‘O•ûŒŸ�õ‚·‚éŒê‹å‚ðƒ^ƒCƒv‚µ‚Ü‚·�B** + + 1. ƒm�[ƒ}ƒ‹ƒ‚�[ƒh‚Å / ‚Æ‚¢‚¤•¶Žš‚ðƒ^ƒCƒv‚µ‚Ü‚·�B‰æ–ʈê”Ô‰º‚É : ƒRƒ}ƒ“ƒh‚Æ + “¯‚¶—l‚É / ‚ªŒ»‚ê‚邱‚Æ‚É‹C‚­‚Å‚µ‚傤�B + + 2. ‚Å‚Í�A'errroor' ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B‚±‚ꂪŒŸ�õ‚µ‚½‚¢’PŒê‚Å‚·�B + + 3. “¯‚¶Œê‚ð‚à‚¤ˆê“xŒŸ�õ‚·‚é‚Æ‚«‚Í ’P‚É n ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B + ‹t•ûŒü‚ÉŒê‹å‚ðŒŸ�õ‚·‚é‚Æ‚«‚Í N ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B + + 4. ‹t•ûŒü‚ÉŒê‹å‚ðŒŸ�õ‚·‚é�ê�‡‚Í�A/ ‚Ì‘ã‚í‚è‚É ? ƒRƒ}ƒ“ƒh‚ðŽg—p‚µ‚Ü‚·�B + + 5. Œ³‚Ì�ê�Š‚É–ß‚é‚É‚Í CTRL-O (Ctrl ‚ð‰Ÿ‚µ‘±‚¯‚È‚ª‚ç o •¶Žšƒ^ƒCƒv)‚ðƒ^ƒCƒv‚µ + ‚Ü‚·�B‚³‚ç‚É–ß‚é‚É‚Í‚±‚ê‚ðŒJ‚è•Ô‚µ‚Ü‚·�BCTRL-I ‚Í‘O•ûŒü‚Å‚·�B + +---> "errroor" ‚Í error ‚ƃXƒyƒ‹‚ªˆá‚¢‚Ü‚·; errroor ‚Í‚¢‚í‚ä‚é error ‚Å‚·�B +NOTE: ŒŸ�õ‚ªƒtƒ@ƒCƒ‹‚Ì�I‚í‚è‚É’B‚·‚é‚Æ�AƒIƒvƒVƒ‡ƒ“ 'wrapscan' ‚ª�ݒ肳‚ê‚Ä‚¢‚é + �ê�‡‚Í�Aƒtƒ@ƒCƒ‹‚Ì�擪‚©‚猟�õ‚ð‘±�s‚µ‚Ü‚·�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 4.3: ‘Ήž‚·‚銇ŒÊ‚ðŒŸ�õ + + + ** ‘Ήž‚·‚é ),] ‚â } ‚ðŒŸ�õ‚·‚é‚É‚Í % ‚ðƒ^ƒCƒv‚µ‚Ü‚· ** + + 1. ‰º‚Ì ---> ‚ÅŽ¦‚³‚ꂽ�s‚Å (,[ ‚© { ‚Ì‚Ç‚ê‚©‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 2. ‚»‚±‚Å % ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B + + 3. ƒJ�[ƒ\ƒ‹‚͑Ήž‚·‚銇ŒÊ‚Ɉړ®‚·‚é‚Í‚¸‚Å‚·�B + + 4. �Å�‰‚ÌŠ‡ŒÊ‚Ɉړ®‚·‚é‚É‚Í % ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B + + 5. ‘¼‚Ì (,),[,],{ ‚â } ‚ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ�A% ‚ª‰½‚ð‚µ‚Ä‚¢‚é‚©Šm”F‚µ‚Ü‚µ‚傤�B + +---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + + +NOTE: ‚±‚Ì‹@”\‚ÍŠ‡ŒÊ‚ªˆê’v‚µ‚Ä‚¢‚È‚¢ƒvƒ�ƒOƒ‰ƒ€‚ðƒfƒoƒbƒO‚·‚é‚Ì‚É‚Æ‚Ä‚à–𗧂¿ + ‚Ü‚·�B + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 4.4: ŠÔˆá‚¢‚ð•Ï�X‚·‚é•û–@ + + + ** 'old' ‚ð 'new' ‚É’uŠ·‚·‚é‚É‚Í :s/old/new/g ‚ƃ^ƒCƒv‚µ‚Ü‚· ** + + 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 2. :s/thee/the ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B‚±‚̃Rƒ}ƒ“ƒh‚Í‚»‚Ì�s‚Å�Å�‰‚ÉŒ© + ‚‚©‚Á‚½‚à‚Ì‚É‚¾‚¯�s‚È‚í‚ê‚邱‚Æ‚É‹C‚ð‚‚¯‚Ü‚µ‚傤�B + + 3. ‚Å‚Í :s/thee/the/g ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B�s‘S‘Ì‚ð’uŠ·‚·‚邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·�B + ‚±‚Ì•Ï�X‚Í‚»‚Ì�s‚ÅŒ©‚‚©‚Á‚½‘S‚ẲÓ�Š‚ɑ΂µ‚Ä�s‚È‚í‚ê‚Ü‚·�B + +---> thee best time to see thee flowers is in thee spring. + + 4. •¡�”�s‚©‚猩‚‚©‚镶Žš‚ð•Ï�X‚·‚é‚É‚Í + :#,#s/old/new/g #,# ‚É‚Í’u‚«Š·‚¦‚é”͈͂̊JŽn‚Æ�I—¹‚Ì�s”Ô�†‚ðŽw’肵‚Ü + ‚·�B + :%s/old/new/g ƒtƒ@ƒCƒ‹‘S‘Ì‚ÅŒ©‚‚©‚é‚à‚̂ɑ΂µ‚Ä•Ï�X‚·‚é�B + :%s/old/new/gc ƒtƒ@ƒCƒ‹‘S‘Ì‚ÅŒ©‚‚©‚é‚à‚̂ɑ΂µ‚Ä�A1‚Â1‚Šm”F‚ð‚Æ‚è‚È + ‚ª‚ç•Ï�X‚·‚é�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 4 —v–ñ + + + 1. CTRL-G ‚̓tƒ@ƒCƒ‹‚ł̈ʒu‚ƃtƒ@ƒCƒ‹‚Ì�Ú�ׂð•\Ž¦‚µ‚Ü‚·�B + G ‚̓tƒ@ƒCƒ‹‚Ì�ʼnº�s‚Ɉړ®‚µ‚Ü‚·�B + �”’l G ‚Í‚»‚Ì�s‚Ɉړ®‚µ‚Ü‚·�B + gg ‚Í�擪�s‚Ɉړ®‚µ‚Ü‚·�B + + 2. / ‚ÌŒã‚ÉŒê‹å‚ðƒ^ƒCƒv‚·‚é‚Æ‘O•û‚ÉŒê‹å‚ðŒŸ�õ‚µ‚Ü‚·�B + ? ‚ÌŒã‚ÉŒê‹å‚ðƒ^ƒCƒv‚·‚é‚ÆŒã•û‚ÉŒê‹å‚ðŒŸ�õ‚µ‚Ü‚·�B + ŒŸ�õ‚ÌŒã‚Ì n ‚Í“¯‚¶•ûŒü‚ÌŽŸ‚ÌŒŸ�õ‚ð�AN ‚Í‹t•ûŒü‚ÌŒŸ�õ‚ð‚µ‚Ü‚·�B + CTRL-O ‚Í�ê�Š‚ð‘O‚Ɉڂµ�ACTRL-I ‚Í�ê�Š‚ðŽŸ‚ÉˆÚ“®‚µ‚Ü‚·�B + + 3. (,),[,],{, ‚à‚µ‚­‚Í } �ã‚ɃJ�[ƒ\ƒ‹‚ª‚ ‚é�ó‘Ô‚Å % ‚ðƒ^ƒCƒv‚·‚é‚Ƒ΂ɂȂ镶 + Žš‚ÖˆÚ“®‚µ‚Ü‚·�B + + 4. Œ»�Ý�s‚Ì�Å�‰‚Ì old ‚ð new ‚É’uŠ·‚·‚é�B :s/old/new + Œ»�Ý�s‚Ì‘S‚Ä‚Ì old ‚ð new ‚É’uŠ·‚·‚é�B :s/old/new/g + 2‚Â‚Ì # ŠÔ‚ÅŒê‹å‚ð’uŠ·‚·‚é�B :#,#s/old/new/g + ƒtƒ@ƒCƒ‹‚Ì’†‚Ì‘S‚Ä‚ÌŒŸ�õŒê‹å‚ð’uŠ·‚·‚é�B :%s/old/new/g + 'c' ‚ð‰Á‚¦‚é‚Æ’uŠ·‚Ì“x‚ÉŠm”F‚ð‹�‚ß‚é�B :%s/old/new/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 5.1: ŠO•”ƒRƒ}ƒ“ƒh‚ðŽÀ�s‚·‚é•û–@ + + + ** :! ‚ÌŒã‚ÉŽÀ�s‚·‚éŠO•”ƒRƒ}ƒ“ƒh‚ðƒ^ƒCƒv‚µ‚Ü‚· ** + + 1. ‰æ–Ê‚Ì�ʼnº•”‚ɃJ�[ƒ\ƒ‹‚ªˆÚ“®‚·‚é‚悤�AŠµ‚ê�e‚µ‚ñ‚¾ : ‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B + ‚±‚ê‚ŃRƒ}ƒ“ƒh‚ªƒ^ƒCƒv‚Å‚«‚é—l‚É‚È‚è‚Ü‚·�B + + 2. ‚±‚±‚Å ! ‚Æ‚¢‚¤•¶Žš(Š´’Q•„)‚ðƒ^ƒCƒv‚µ‚Ü‚µ‚傤�B + ‚±‚ê‚ÅŠO•”ƒVƒFƒ‹ƒRƒ}ƒ“ƒh‚ªŽÀ�s‚Å‚«‚é—l‚É‚È‚è‚Ü‚·�B + + 3. —á‚Æ‚µ‚Ä ! ‚É‘±‚¯‚Ä ls ‚ƃ^ƒCƒv‚µ ‚ð‰Ÿ‚µ‚Ü‚µ‚傤�B + ƒVƒFƒ‹ƒvƒ�ƒ“ƒvƒg‚̂悤‚ɃfƒBƒŒƒNƒgƒŠ‚̈ꗗ‚ª•\Ž¦‚³‚ê‚é‚Í‚¸‚Å‚·�B + ‚à‚µ‚­‚Í ls ‚ª“®‚©‚È‚¢‚È‚ç‚Î :!dir ‚ðŽg—p‚µ‚Ü‚µ‚傤�B + +NOTE: ‚±‚Ì•û–@‚É‚æ‚Á‚Ä‚ ‚ç‚ä‚éƒRƒ}ƒ“ƒh‚ªŽÀ�s‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B‚à‚¿‚ë‚ñˆø�” + ‚à—^‚¦‚ç‚ê‚Ü‚·�B + +NOTE: ‘S‚Ä‚Ì : ƒRƒ}ƒ“ƒh‚Í ‚ð‰Ÿ‚µ‚Ä�I—¹‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ�B + ˆÈ�~‚Å‚Í‚±‚Ì‚±‚Æ‚ÉŒ¾‹y‚µ‚Ü‚¹‚ñ�B + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 5.2: ‚»‚Ì‘¼‚̃tƒ@ƒCƒ‹‚Ö�‘‚«�ž‚Ý + + + ** ƒtƒ@ƒCƒ‹‚Ö•Ï�X‚ð•Û‘¶‚·‚é‚É‚Í :w ƒtƒ@ƒCƒ‹–¼ ‚ƃ^ƒCƒv‚µ‚Ü‚· ** + + 1. ƒfƒBƒŒƒNƒgƒŠ‚̈ꗗ‚𓾂邽‚ß‚É :!dir ‚à‚µ‚­‚Í :!ls ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤�B + ‚±‚Ì‚ ‚Æ ‚ð‰Ÿ‚·‚Ì‚ÍŠù‚É‚²‘¶’m‚Å‚·‚Ë�B + + 2. TEST ‚̂悤‚É�A‚»‚̃fƒBƒŒƒNƒgƒŠ‚É–³‚¢ƒtƒ@ƒCƒ‹–¼‚ðˆê‚‘I‚Ñ‚Ü‚·�B + + 3. ‚Å‚Í :w TEST ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤 (TEST ‚Í�A‘I‚ñ‚¾ƒtƒ@ƒCƒ‹–¼‚Å‚·)�B + + 4. ‚±‚ê‚É‚æ‚èƒtƒ@ƒCƒ‹‘S‘Ì‚ª TEST ‚Æ‚¢‚¤–¼‘O‚Å•Û‘¶‚³‚ê‚Ü‚·�B + ‚à‚¤ˆê“x :!dir ‚à‚µ‚­‚Í :!ls ‚ƃ^ƒCƒv‚µ‚ÄŠm”F‚µ‚Ä‚Ý‚Ü‚µ‚傤�B + +NOTE: ‚±‚±‚Å Vim ‚ð�I—¹‚µ�Aƒtƒ@ƒCƒ‹–¼ TEST ‚Æ‹¤‚É‹N“®‚·‚é‚Æ�A•Û‘¶‚µ‚½Žž‚Ì + ƒ`ƒ…�[ƒgƒŠƒAƒ‹‚Ì•¡�»‚ª‚Å‚«�オ‚é‚Í‚¸‚Å‚·�B + + 5. ‚³‚ç‚É�AŽŸ‚̂悤‚Ƀ^ƒCƒv‚µ‚ătƒ@ƒCƒ‹‚ð�Á‚µ‚Ü‚µ‚傤(MS-DOS): :!del TEST + ‚à‚µ‚­‚Í(Unix): :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 5.3: ‘I‘ð‚µ‚½�‘‚«�ž‚Ý + + +** ƒtƒ@ƒCƒ‹‚̈ʒu‚ð•Û‘¶‚·‚é‚É‚Í�Av ƒ‚�[ƒVƒ‡ƒ“‚Æ :w FILENAME ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B ** + + 1. ‚±‚Ì�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B + + 2. v ‚ð‰Ÿ‚µ�AˆÈ‰º‚Ì‘æ5�€–ڂɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�BƒeƒLƒXƒg‚ª‹­’²•\Ž¦‚³‚ê‚é‚Ì + ‚É’�–Ú‚µ‚ĉº‚³‚¢�B + + 3. •¶Žš : ‚ð‰Ÿ‚·‚Æ�A‰æ–Ê‚Ì�ʼnº•”‚É :'<,'> ‚ªŒ»‚ê‚Ü‚·�B + + 4. w TEST (TEST ‚Í‘¶�Ý‚µ‚È‚¢ƒtƒ@ƒCƒ‹–¼)‚ðƒ^ƒCƒv‚µ‚Ü‚·�B + ‚ð‰Ÿ‚·‘O‚É :'<,'>w TEST ‚Æ‚È‚Á‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚ĉº‚³‚¢�B + + 5. Vim ‚Í TEST ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚É‘I‘ð‚³‚ê‚½�s‚ð�‘‚«�ž‚Þ‚Å‚µ‚傤�B + !dir ‚à‚µ‚­‚Í !ls ‚Å‚»‚ê‚ðŠm”F‚µ‚Ü‚·�B + ‚»‚ê‚Í�í�œ‚µ‚È‚¢‚Å‚¨‚¢‚ĉº‚³‚¢�BŽŸ‚̃ŒƒbƒXƒ“‚ÅŽg—p‚µ‚Ü‚·�B + +NOTE: v ‚ð‰Ÿ‚·‚Æ�AVisual ‘I‘ð‚ªŽn‚Ü‚è‚Ü‚·�BƒJ�[ƒ\ƒ‹‚ð“®‚©‚·‚±‚Æ‚Å�A‘I‘ð”͈͂ð + ‘å‚«‚­‚à�¬‚³‚­‚à‚Å‚«‚Ü‚·�B‚³‚ç‚É�A‚»‚Ì‘I‘ð”͈͂ɑ΂µ‚ăIƒyƒŒ�[ƒ^‚ð“K—p + ‚«‚Ü‚·�B—Ⴆ‚Î d ‚̓eƒLƒXƒg‚ð�í�œ‚µ‚Ü‚·�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 5.4: ƒtƒ@ƒCƒ‹‚ÌŽæ�ž‚Æ�‡•¹ + + + ** ƒtƒ@ƒCƒ‹‚Ì’†�g‚ð‘}“ü‚·‚é‚É‚Í :r ƒtƒ@ƒCƒ‹–¼ ‚ƃ^ƒCƒv‚µ‚Ü‚· ** + + 1. ƒJ�[ƒ\ƒ‹‚ðˆÈ‰º‚Ì�s‚É�‡‚킹‚Ü‚·�B + +NOTE: ƒXƒeƒbƒv 2 ‚ÌŽÀ�sŒã�AƒŒƒbƒXƒ“ 5.3 ‚̃eƒLƒXƒg‚ªŒ»‚ê‚Ü‚·�B‰º‚ɉº‚ª‚Á‚Ä‚± + ‚̃ŒƒbƒXƒ“‚Ɉړ®‚µ‚Ü‚µ‚傤�B + + 2. ‚Å‚Í TEST ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ð :r TEST ‚Æ‚¢‚¤ƒRƒ}ƒ“ƒh‚Å“Ç‚Ý�ž‚Ý‚Ü‚µ‚傤�B + ‚±‚±‚Å‚¢‚¤ TEST ‚ÍŽg‚¤ƒtƒ@ƒCƒ‹‚Ì–¼‘O‚Ì‚±‚Æ‚Å‚·�B + “Ç‚Ý�ž‚܂ꂽƒtƒ@ƒCƒ‹‚Í�AƒJ�[ƒ\ƒ‹�s‚̉º‚É‚ ‚è‚Ü‚·�B + + 3. Žæ�ž‚ñ‚¾ƒtƒ@ƒCƒ‹‚ðŠm”F‚µ‚Ä‚Ý‚Ü‚µ‚傤�BƒJ�[ƒ\ƒ‹‚ð–ß‚·‚Æ�AƒŒƒbƒXƒ“5.3 ‚Ì + ƒIƒŠƒWƒiƒ‹‚ƃtƒ@ƒCƒ‹‚É‚æ‚é‚à‚Ì‚Ì2‚‚ª‚ ‚邱‚Æ‚ª‚í‚©‚è‚Ü‚·�B + +NOTE: ŠO•”ƒRƒ}ƒ“ƒh‚Ì�o—Í‚ð“Ç‚Ý�ž‚Þ‚±‚Æ‚à�o—ˆ‚Ü‚·�B—Ⴆ‚Î�A + :r !ls ‚Í ls ƒRƒ}ƒ“ƒh‚Ì�o—Í‚ðƒJ�[ƒ\ƒ‹ˆÈ‰º‚É“Ç‚Ý�ž‚Ý‚Ü‚·�B + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 5 —v–ñ + + + 1. :!command ‚É‚æ‚Á‚Ä ŠO•”ƒRƒ}ƒ“ƒh‚ðŽÀ�s‚µ‚Ü‚·�B + + ‚æ‚­Žg‚¤—á: + (MS-DOS) (Unix) + :!dir :!ls - ƒfƒBƒŒƒNƒgƒŠ“à‚̈ꗗ‚ðŒ©‚é�B + :!del FILENAME :!rm FILENAME - ƒtƒ@ƒCƒ‹‚ð�í�œ‚·‚é�B + + 2. :w ƒtƒ@ƒCƒ‹–¼ ‚É‚æ‚Á‚ătƒ@ƒCƒ‹–¼‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ªƒfƒBƒXƒN‚É�‘‚«�ž‚Ü‚ê‚é�B + + 3. v ƒ‚�[ƒVƒ‡ƒ“‚Å :w FILENAME ‚Æ‚·‚é‚Æ�AƒrƒWƒ…ƒAƒ‹‘I‘ð�s‚ªƒtƒ@ƒCƒ‹‚É•Û‘¶‚³ + ‚ê‚é�B + + 4. :r ƒtƒ@ƒCƒ‹–¼ ‚É‚æ‚èƒtƒ@ƒCƒ‹–¼‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ªƒfƒBƒXƒN‚æ‚èŽæ�ž‚Ü‚ê�A + ƒJ�[ƒ\ƒ‹ˆÊ’u‚̉º‚É‘}“ü‚³‚ê‚é�B + + 5. :r !dir ‚Í dir ƒRƒ}ƒ“ƒh‚Ì�o—Í‚ðƒJ�[ƒ\ƒ‹ˆÊ’uˆÈ‰º‚É“Ç‚Ý�ž‚Þ�B + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 6.1: ƒI�[ƒvƒ“ƒRƒ}ƒ“ƒh + + + ** o ‚ðƒ^ƒCƒv‚·‚é‚Æ�AƒJ�[ƒ\ƒ‹‚̉º‚Ì�s‚ªŠJ‚«�A‘}“üƒ‚�[ƒh‚É“ü‚è‚Ü‚· ** + + 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚µ‚傤�B + + 2. o (�¬•¶Žš) ‚ðƒ^ƒCƒv‚µ‚Ä�AƒJ�[ƒ\ƒ‹‚̉º‚Ì�s‚ðŠJ‚«�A‘}“üƒ‚�[ƒh‚É“ü‚è‚Ü‚·�B + + 3. ‚³‚ç‚É‘}“üƒ‚�[ƒh‚ð�I—¹‚·‚éˆ×‚É ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B + +---> o ‚ðƒ^ƒCƒv‚·‚é‚ƃJ�[ƒ\ƒ‹‚ÍŠJ‚¢‚½�s‚ÖˆÚ“®‚µ‘}“üƒ‚�[ƒh‚É“ü‚è‚Ü‚·�B + + 4. ƒJ�[ƒ\ƒ‹‚Ì�ã‚Ì�s‚É‘}“ü‚·‚é‚É‚Í�A�¬•¶Žš‚Ì o ‚Å‚Í‚È‚­�A’P�ƒ‚ɑ啶Žš‚Ì O + ‚ðƒ^ƒCƒv‚µ‚Ü‚·�BŽŸ‚Ì�s‚ÅŽŽ‚µ‚Ä‚Ý‚Ü‚µ‚傤�B + +---> ‚±‚Ì�s‚Ì�ã‚Ö‘}“ü‚·‚é‚É‚Í�A‚±‚Ì�s‚ÖƒJ�[ƒ\ƒ‹‚ð’u‚¢‚Ä O ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 6.2: ’ljÁƒRƒ}ƒ“ƒh + + + ** ƒJ�[ƒ\ƒ‹‚ÌŽŸ‚̈ʒu‚©‚çƒeƒLƒXƒg‚ð’ljÁ‚·‚é‚É‚Í a ‚ƃ^ƒCƒv‚µ‚Ü‚· ** + + 1. ƒJ�[ƒ\ƒ‹‚ð ---> ‚ÅŽ¦‚³‚ꂽ�s‚ÖˆÚ“®‚µ‚Ü‚µ‚傤�B + + 2. e ‚ð‰Ÿ‚µ‚Ä li ‚Ì�I’[•”‚܂ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B + + 3. ƒJ�[ƒ\ƒ‹‚ÌŒã‚ë‚ɃeƒLƒXƒg‚ð’ljÁ‚·‚邽‚ß‚É a (�¬•¶Žš) ‚ðƒ^ƒCƒv‚µ‚Ü‚·�B + + 4. ‚»‚̉º‚Ì�s‚̂悤‚È’PŒê‚ÉŠ®�¬‚³‚¹‚Ü‚·�B‘}“üƒ‚�[ƒh‚𔲂¯‚éˆ×‚É ‚ð‰Ÿ + ‚µ‚Ü‚·�B + + 5. e ‚ðŽg‚Á‚ÄŽŸ‚Ì•sŠ®‘S‚È’PŒê‚ÖˆÚ“®‚µ�AƒXƒeƒbƒv 3 ‚Æ 4 ‚ðŒJ‚è•Ô‚µ‚Ü‚·�B + +---> This li will allow you to pract appendi text to a line. +---> This line will allow you to practice appending text to a line. + +NOTE: a, i ‚Æ A ‚Í“¯‚¶‘}“üƒ‚�[ƒh‚ÖˆÚ‚è‚Ü‚·‚ª�A•¶Žš‚ª‘}“ü‚³‚ê‚éˆÊ’u‚¾‚¯‚ªˆÙ‚È‚è + ‚Ü‚·�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 6.3: ‚»‚Ì‘¼‚Ì’uŠ·•û–@ + + + ** 1•¶ŽšˆÈ�ã‚ð’u‚«Š·‚¦‚é‚ɂ͑啶Žš‚Ì R ‚ƃ^ƒCƒv‚µ‚Ü‚µ‚傤 ** + + 1. ˆÈ‰º‚Ì ---> ‚ÆŽ¦‚³‚ꂽ�s‚ɃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B�Å�‰‚Ì xxx ‚Ì�擪‚Ɉړ®‚µ + ‚Ü‚·�B + + 2. R ‚ð‰Ÿ‚µ‚Ä�A2�s–Ú‚Ì�”’l‚ðƒ^ƒCƒv‚·‚邱‚Æ‚Å�Axxx ‚ª’uŠ·‚³‚ê‚Ü‚·�B + + 3. ’uŠ·ƒ‚�[ƒh‚𔲂¯‚é‚É‚Í ‚ð‰Ÿ‚µ‚Ü‚·�B�s‚ÌŽc‚肪•Ï�X‚³‚ê‚Ä‚¢‚È‚¢‚Ü‚Ü‚É + ‚Ȃ邱‚Æ‚É’�ˆÓ‚µ‚Ä‚­‚¾‚³‚¢�B + + 4. Žc‚Á‚½ xxx ‚ðƒXƒeƒbƒv‚ðŒJ‚è•Ô‚µ‚Ä’uŠ·‚µ‚Ü‚µ‚傤�B + +---> Adding 123 to xxx gives you xxx. +---> Adding 123 to 456 gives you 579. + +NOTE: ’uŠ·ƒ‚�[ƒh‚Í‘}“üƒ‚�[ƒh‚ÉŽ—‚Ä‚¢‚Ü‚·‚ª�A‘S‚Ẵ^ƒCƒv‚³‚ꂽ•¶Žš‚ÍŠù‘¶‚Ì•¶Žš + ‚ð�í�œ‚µ‚Ü‚·�B + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 6.4: ƒeƒLƒXƒg‚̃Rƒs�[‚ƃy�[ƒXƒg + + + ** ƒeƒLƒXƒg‚̃Rƒs�[‚ɂ̓IƒyƒŒ�[ƒ^ y ‚ð�Aƒy�[ƒXƒg‚É‚Í p ‚ðŽg‚¢‚Ü‚· ** + + 1. ---> ‚ÆŽ¦‚³‚ꂽ�s‚ÖˆÚ“®‚µ�AƒJ�[ƒ\ƒ‹‚ð "a)" ‚ÌŒã‚É’u‚¢‚Ä‚¨‚«‚Ü‚·�B + + 2. v ‚ŃrƒWƒ…ƒAƒ‹ƒ‚�[ƒh‚ðŠJŽn‚µ�A"first"‚ÌŽè‘O‚܂ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·�B + + 3. y ‚ðƒ^ƒCƒv‚µ‚Ä‹­’²•\Ž¦‚³‚ꂽƒeƒLƒXƒg‚ð yank (ƒRƒs�[)‚µ‚Ü‚·�B + + 4. ŽŸ‚Ì�s‚Ì�s––‚܂ŃJ�[ƒ\ƒ‹‚ðˆÚ“®‚µ‚Ü‚·: j$ + + 5. p ‚ð‰Ÿ‚µ‚Ä“\‚è•t‚¯(put)‚Ä‚©‚ç�AŽŸ‚ðƒ^ƒCƒv‚µ‚Ü‚·: a second + + 6. ƒrƒWƒ…ƒAƒ‹ƒ‚�[ƒh‚Å " item." ‚ð‘I‘ð‚µ�Ay ‚Ń„ƒ“ƒN�AŽŸ‚Ì�s‚Ì�s––‚Ü‚Å j$ ‚Å + ˆÚ“®‚µ�A p ‚ŃeƒLƒXƒg‚ð‚»‚±‚É put ‚µ‚Ü‚·�B + +---> a) this is the first item. + b) + + NOTE: ’PŒê‚ð1‚ yank ‚·‚é‚Ì‚É y ‚ðƒIƒyƒŒ�[ƒ^‚Æ‚µ‚Ä yw ‚Æ‚·‚邱‚Æ‚à�o—ˆ‚Ü‚·�B +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 6.5: ƒIƒvƒVƒ‡ƒ“‚Ì�Ý’è + + + ** ŒŸ�õ‚â’uŠ·‚Ì�ۂɑ啶Žš/�¬•¶Žš‚𖳎‹‚·‚é‚É‚Í�AƒIƒvƒVƒ‡ƒ“‚ð�ݒ肵‚Ü‚· ** + + 1. ŽŸ‚Ì—l‚É“ü—Í‚µ‚Ä 'ignore' ‚ðŒŸ�õ‚µ‚Ü‚µ‚傤: /ignore + n ‚ð‰Ÿ‚µ‚ĉ½“x‚©ŒŸ�õ‚ðŒJ‚è•Ô‚µ‚Ü‚·�B + + 2. ŽŸ‚Ì—l‚É“ü—Í‚µ‚Ä 'ic' (Ignore Case ‚Ì—ª) ƒIƒvƒVƒ‡ƒ“‚ð�ݒ肵‚Ü‚·: :set ic + + 3. ‚Å‚Í n ‚É‚æ‚Á‚Ä‚à‚¤1“x 'ignore' ‚ðŒŸ�õ‚µ‚Ü‚·�B + n ‚ð‰Ÿ‚µ‚Ä‚³‚ç‚É�”‰ñŒŸ�õ‚ðŒJ‚è•Ô‚µ‚Ü‚µ‚傤�B + + 4. 'hlsearch' ‚Æ 'incsearch' ƒIƒvƒVƒ‡ƒ“‚ð�ݒ肵‚Ü‚µ‚傤: :set hls is + + 5. ŒŸ�õƒRƒ}ƒ“ƒh‚ð�Ä“ü—Í‚µ‚Ä�A‰½‚ª‹N‚±‚é‚©Œ©‚Ä‚Ý‚Ü‚µ‚傤: /ignore + + 6. ‘啶Žš�¬•¶Žš‚Ì‹æ•Ê‚𖳌ø‚É‚·‚é‚É‚ÍŽŸ‚Ì—l‚É“ü—Í‚µ‚Ü‚·: :set noic + +NOTE: ƒ}ƒbƒ`‚Ì‹­’²•\Ž¦‚ð‚â‚ß‚é‚É‚ÍŽŸ‚Ì—l‚É“ü—Í‚µ‚Ü‚·: :nohlsearch +NOTE: 1‚‚̌Ÿ�õƒRƒ}ƒ“ƒh‚¾‚¯‘啶Žš�¬•¶Žš‚Ì‹æ•Ê‚ð‚â‚ß‚½‚¢‚È‚ç‚Î�AƒtƒŒ�[ƒY‚É \c + ‚ðŽg—p‚µ‚Ü‚·: /ignore\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 6 —v–ñ + + 1. o ‚ðƒ^ƒCƒv‚·‚é‚ƃJ�[ƒ\ƒ‹‚̉º‚Ì�s‚ðŠJ‚¯‚Ä�A‚»‚±‚Å‘}“üƒ‚�[ƒh‚É‚È‚é�B + O (‘啶Žš) ‚ðƒ^ƒCƒv‚·‚é‚ƃJ�[ƒ\ƒ‹‚Ì�ã‚Ì�s‚Å‘}“üƒ‚�[ƒh‚É‚È‚é�B + + 2. ƒJ�[ƒ\ƒ‹�ã‚Ì•¶Žš‚ÌŽŸ‚©‚çƒeƒLƒXƒg‚ð’ljÁ‚·‚é‚É‚Í a ‚ƃ^ƒCƒv‚·‚é�B + �s––‚ÉŽ©“®‚ŃeƒLƒXƒg‚ð‘}“ü‚·‚é‚ɂ͑啶Žš A ‚ðƒ^ƒCƒv‚·‚é�B + + 3. e ƒRƒ}ƒ“ƒh‚Í’PŒê‚Ì�I’[•”ƒJ�[ƒ\ƒ‹‚ðˆÚ“®‚·‚é�B + + 4. y ƒIƒyƒŒ�[ƒ^‚̓eƒLƒXƒg‚ð yank (ƒRƒs�[)‚µ�Ap ‚Í‚»‚ê‚ð put (ƒy�[ƒXƒg)‚·‚é�B + + 5. ‘啶Žš‚Ì R ‚ðƒ^ƒCƒv‚·‚é‚Æ’uŠ·ƒ‚�[ƒh‚É“ü‚è�A‚ð‰Ÿ‚·‚Æ”²‚¯‚é�B + + 6. ":set xxx" ‚ƃ^ƒCƒv‚·‚é‚ƃIƒvƒVƒ‡ƒ“ "xxx" ‚ª�ݒ肳‚ê‚é�B + 'ic' 'ignorecase' ŒŸ�õŽž‚ɑ啶Žš�¬•¶Žš‚Ì‹æ•Ê‚µ‚È‚¢ + 'is' 'incsearch' ŒŸ�õƒtƒŒ�[ƒY‚É•”•ªƒ}ƒbƒ`‚µ‚Ä‚¢‚é•”•ª‚ð•\Ž¦‚·‚é + 'hls' 'hlsearch' ƒ}ƒbƒ`‚·‚é‚·‚×‚ð‹­’²•\Ž¦‚·‚é + ’·‚¢•û�A’Z‚¢•û�A‚Ç‚¿‚ç‚̃IƒvƒVƒ‡ƒ“–¼‚Å‚àŽg—p‚Å‚«‚Ü‚·�B + + 7. "no" ‚ð•t—^‚µ�AƒIƒvƒVƒ‡ƒ“‚𖳌ø‚É‚µ‚Ü‚·: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 7.1: ƒIƒ“ƒ‰ƒCƒ“ƒwƒ‹ƒvƒRƒ}ƒ“ƒh + + + ** ƒIƒ“ƒ‰ƒCƒ“ƒwƒ‹ƒv‚ðŽg—p‚µ‚Ü‚µ‚傤 ** + + Vim ‚É‚Í�L”͂ɂ킽‚éƒIƒ“ƒ‰ƒCƒ“ƒwƒ‹ƒvƒVƒXƒeƒ€‚ª‚ ‚è‚Ü‚·�B + ƒwƒ‹ƒv‚ðŠJŽn‚·‚é‚É‚Í�A‚±‚ê‚ç3‚‚̂ǂꂩ1‚Â‚ðŽŽ‚µ‚Ä‚Ý‚Ü‚µ‚傤: + - ƒwƒ‹ƒvƒL�[ ‚ð‰Ÿ‚·(‚à‚µ‚ ‚é‚È‚ç‚Î)�B + - ƒL�[‚ð‰Ÿ‚·(‚à‚µ‚ ‚é‚È‚ç‚Î)�B + - :help ‚ƃ^ƒCƒv‚·‚é�B + + ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚̃eƒLƒXƒg‚ð“Ç‚Þ‚Æ�Aƒwƒ‹ƒv‚Ì“®�삪—�‰ð‚Å‚«‚Ü‚·�B + CTRL-W CTRL-W ‚ƃ^ƒCƒv‚·‚é‚Æ ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ÖƒWƒƒƒ“ƒv‚µ‚Ü‚·�B + :q ‚ƃ^ƒCƒv‚·‚é‚Æ ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ª•Â‚¶‚ç‚ê‚Ü‚·�B + + ":help" ƒRƒ}ƒ“ƒh‚Ɉø�”‚ð—^‚¦‚邱‚Æ‚É‚æ‚è�A‚ ‚ç‚ä‚é‘è–¼‚̃wƒ‹ƒv‚ðŒ©‚Â‚¯‚邱‚Æ + ‚ª‚Å‚«‚Ü‚·�B‚±‚ê‚ç‚ðŽŽ‚µ‚Ä‚Ý‚Ü‚µ‚傤( ‚ðƒ^ƒCƒv‚µ–Y‚ê‚È‚¢‚悤‚É): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 7.2: ‹N“®ƒXƒNƒŠƒvƒg‚Ì�ì�¬ + + ** Vim ‚Ì“Á’¥‚ð”­Šö‚·‚é ** + + Vim ‚É‚Í Vi ‚æ‚è‚à‘½‚­‚Ì“Á’¥‚𓥂܂¦‚Ä‚¢‚Ü‚·‚ª�A‚»‚Ì‚Ù‚Æ‚ñ‚Ç‚Í�‰Šú�ó‘Ô‚É‚Ä + Žg—p•s‰Â‚Æ‚È‚Á‚Ä‚¢‚Ü‚·�B‚æ‚葽‚­‚Ì“Á’¥‚ðŽg‚¢‚Í‚¶‚ß‚é‚É‚Í "vimrc" ƒtƒ@ƒCƒ‹ + ‚ð�ì�¬‚µ‚Ü‚·�B + + 1. "vimrc" ƒtƒ@ƒCƒ‹‚Ì•Ò�W‚ðŠJŽn‚·‚é�B‚±‚ê‚̓VƒXƒeƒ€‚Ɉˑ¶‚µ‚Ü‚·�B + :edit ~/.vimrc UNIX Œü‚¯ + :edit $VIM/_vimrc MS-Windows Œü‚¯ + + 2. ‚±‚±‚ŃTƒ“ƒvƒ‹‚Ì "vimrc" ‚ð“Ç‚Ý�ž‚Ý‚Ü‚·�B + :read $VIMRUNTIME/vimrc_example.vim + + 3. ˆÈ‰º‚̂悤‚Ƀtƒ@ƒCƒ‹‚Ö�‘‚«�ž‚Ý‚Ü‚·�B + :write + + ŽŸ‰ñ Vim ‚ð‹N“®‚·‚é‚Æ�A�F‚¯�\•¶‚ªŽg‚¦‚é‚悤‚É‚È‚é‚Å‚µ‚傤�B + ‚±‚Ì "vimrc" ƒtƒ@ƒCƒ‹‚Ö�A‚¨�D‚Ý‚Ì�Ý’è‚ð’ljÁ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B + ‚æ‚葽‚­‚Ì�î•ñ‚𓾂é‚É‚Í :help vimrc-intro ‚ƃ^ƒCƒv‚µ‚Ü‚·�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 7.3: •âŠ® + + + ** CTRL-D ‚Æ ‚ŃRƒ}ƒ“ƒhƒ‰ƒCƒ“‚ð•âŠ®‚·‚é ** + + 1. ƒRƒ“ƒpƒ`ƒ‚�[ƒh‚Å‚È‚¢‚±‚Æ‚ðŠm”F‚µ‚Ü‚·: :set nocp + + 2. Œ»�݂̃fƒBƒŒƒNƒgƒŠ‚É�Ý‚éƒtƒ@ƒCƒ‹‚ð :!ls ‚© :!dir ‚ÅŠm”F‚µ‚Ü‚·�B + + 3. ƒRƒ}ƒ“ƒh‚ÌŠJŽn‚ðƒ^ƒCƒv‚µ‚Ü‚·: :e + + 4. CTRL-D ‚ð‰Ÿ‚·‚Æ Vim ‚Í "e" ‚©‚çŽn‚Ü‚éƒRƒ}ƒ“ƒh‚̈ꗗ‚ð•\Ž¦‚µ‚Ü‚·�B + + 5. ‚ð‰Ÿ‚·‚Æ Vim ‚Í ":edit" ‚Æ‚¢‚¤ƒRƒ}ƒ“ƒh–¼‚ð•âŠ®‚µ‚Ü‚·�B + + 6. ‚³‚ç‚É‹ó”’‚Æ�AŠù‘¶‚̃tƒ@ƒCƒ‹–¼‚ÌŽn‚Ü‚è‚ð‰Á‚¦‚Ü‚·: :edit FIL + + 7. ‚ð‰Ÿ‚·‚Æ Vim ‚Í–¼‘O‚ð•âŠ®‚µ‚Ü‚·�B(‚à‚µˆê‚‚µ‚©–³‚©‚Á‚½�ê�‡) + +NOTE: •âŠ®‚Í‘½‚­‚̃Rƒ}ƒ“ƒh‚Å“®�삵‚Ü‚·�B‚»‚µ‚Ä CTRL-D ‚Æ ‰Ÿ‚µ‚Ä‚Ý‚Ä‚­‚¾ + ‚³‚¢�B“Á‚É :help ‚Ì�ۂɖ𗧂¿‚Ü‚·�B + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ƒŒƒbƒXƒ“ 7 —v–ñ + + + 1. ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ðŠJ‚­‚É‚Í :help ‚Æ‚·‚é‚© ‚à‚µ‚­‚Í ‚ð‰Ÿ‚·�B + + 2. ƒRƒ}ƒ“ƒh(cmd)‚̃wƒ‹ƒv‚ðŒŸ�õ‚·‚é‚É‚Í :help cmd ‚ƃ^ƒCƒv‚·‚é�B + + 3. •Ê‚̃EƒBƒ“ƒhƒE‚ÖƒWƒƒƒ“ƒv‚·‚é‚É‚Í CTRL-W CTRL-W ‚ƃ^ƒCƒv‚·‚é�B + + 4. ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ð•Â‚¶‚é‚É‚Í :q ‚ƃ^ƒCƒv‚·‚é�B + + 5. ‚¨�D‚Ý‚Ì�Ý’è‚ð•Û‚Â‚É‚Í vimrc ‹N“®ƒXƒNƒŠƒvƒg‚ð�ì�¬‚·‚é�B + + 6. : command ‚ʼn”\‚ȕ⊮‚ðŒ©‚é‚É‚Í CTRL-D ‚ðƒ^ƒCƒv‚·‚é�B + •âŠ®‚ðŽg—p‚·‚é‚É‚Í ‚ð‰Ÿ‚·�B + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + ‚±‚ê‚É‚Ä Vim ‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚ð�I‚í‚è‚Ü‚·�BƒGƒfƒBƒ^‚ðŠÈ’P‚É�A‚µ‚©‚à�[•ª‚É + Žg‚¤‚±‚Æ‚ª‚Å‚«‚é‚悤‚É‚Æ�AVim ‚ÌŽ�‚ŠT”O‚Ì—v“_‚Ì‚Ý‚ð“`‚¦‚悤‚Æ‚µ‚Ü‚µ‚½�B + Vim ‚É‚Í‚³‚ç‚É‘½‚­‚̃Rƒ}ƒ“ƒh‚ª‚ ‚è�A‚±‚±‚Å‘S‚Ä‚ð�à–¾‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñ�B + ˆÈ�~‚̓†�[ƒUƒ}ƒjƒ…ƒAƒ‹‚ðŽQ�Æ‚­‚¾‚³‚¢: ":help user-manual" + + ‚±‚êˆÈŒã‚ÌŠw�K‚Ì‚½‚ß‚É�AŽŸ‚Ì–{‚ð�„‘E‚µ‚Ü‚·�B + Vim - Vi Improved - by Steve Oualline + �o”ÅŽÐ: New Riders + �Å�‰‚Ì–{‚ÍŠ®‘S‚É Vim ‚Ì‚½‚ß‚É�‘‚©‚ê‚Ü‚µ‚½�B‚Æ‚è‚킯�‰�SŽÒ‚É‚Í‚¨�§‚ß‚Å‚·�B + ‘½‚­‚Ì—á‘è‚â�}”Å‚ªŒf�Ú‚³‚ê‚Ä‚¢‚Ü‚·�B + ŽŸ‚ÌURL‚ðŽQ�Æ‚µ‚ĉº‚³‚¢ http://iccf-holland.org/click5.html + + ŽŸ‚Í Vim ‚æ‚è‚à Vi ‚ɂ‚¢‚Ä�‘‚©‚ꂽŒÃ‚¢–{‚Å‚·‚ª�„‘E‚µ‚Ü‚·: + Learning the Vi Editor - by Linda Lamb + �o”ÅŽÐ: O'Reilly & Associates Inc. + Vi ‚Å‚â‚肽‚¢‚ÆŽv‚¤‚±‚Æ‚Ù‚Ú‘S‚Ä‚ð’m‚邱‚Æ‚ª‚Å‚«‚é—Ç�‘‚Å‚·�B + ‘æ6”Å‚Å‚Í�AVim ‚ɂ‚¢‚Ä‚Ì�î•ñ‚àŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·�B + + ‚±‚̃`ƒ…�[ƒgƒŠƒAƒ‹‚Í Colorado State University ‚Ì Charles Smith ‚̃AƒCƒfƒA + ‚ðŠî‚É�AColorado School of Mines ‚Ì Michael C. Pierce ‚Æ Robert K. Ware ‚Ì + —¼–¼‚É‚æ‚Á‚Ä�‘‚©‚ê‚Ü‚µ‚½�B E-mail: bware@mines.colorado.edu. + + Modified for Vim by Bram Moolenaar. + + “ú–{Œê–ó �¼–{ ‘×�O + ŠÄ�C ‘º‰ª ‘¾˜Y + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + vi:set ts=8 sts=4 sw=4 tw=78: diff --git a/share/vim/vim74/tutor/tutor.ja.utf-8 b/share/vim/vim74/tutor/tutor.ja.utf-8 new file mode 100644 index 00000000..66a818ad --- /dev/null +++ b/share/vim/vim74/tutor/tutor.ja.utf-8 @@ -0,0 +1,977 @@ +=============================================================================== += V I M 教 本 (チュートリアル) へ よ う こ そ - Version 1.7 = +=============================================================================== + + Vim は、このチュートリアルで説明するには多すぎる程のコマンドを備えた非常 + に強力なエディターです。このチュートリアルは、あなたが Vim を万能エディ + ターとして使いこなせるようになるのに十分なコマンドについて説明をするよう + なっています。 + + チュートリアルを完了するのに必要な時間は、覚えたコマンドを試すのにどれだ + け時間を使うのかにもよりますが、およそ25から30分です。 + + ATTENTION: + 以下の練習用コマンドにはこの文章を変更するものもあります。練習を始める前 + にコピーを作成しましょう("vimtutor"したならば、既にコピーされています)。 + + このチュートリアルが、使うことで覚えられる仕組みになっていることを、心し + ておかなければなりません。正しく学習するにはコマンドを実際に試さなければ + ならないのです。文章を読んだだけならば、きっと忘れてしまいます!。 + + さぁ、Capsロック(Shift-Lock)キーが押されていないことを確認した後、画面に + レッスン1.1 が全部表示されるところまで、j キーを押してカーソルを移動しま + しょう。 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.1: カーソルの移動 + + + ** カーソルを移動するには、示される様に h,j,k,l を押します ** + ^ + k ヒント: h キーは左方向に移動します。 + < h l > l キーは右方向に移動します。 + j j キーは下矢印キーのようなキーです。 + v + 1. 移動に慣れるまで、スクリーンでカーソル移動させましょう。 + + 2. 下へのキー(j)を押しつづけると、連続して移動できます。 + これで次のレッスンに移動する方法がわかりましたね。 + + 3. 下へのキーを使って、レッスン1.2 に移動しましょう。 + +NOTE: 何をタイプしているか判らなくなったら、を押してノーマルモードにし + ます。それから入力しようとしていたコマンドを再入力しましょう。 + +NOTE: カーソルキーでも移動できます。しかし hjkl に一度慣れてしまえば、はるか + に速く移動することができるでしょう。いやマジで! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.2: VIM の起動と終了 + + + !! NOTE: 以下のあらゆるステップを行う前に、このレッスンを読みましょう!! + + 1. キーを押しましょう。(確実にノーマルモードにするため) + + 2. 次のようにタイプ: :q! + これにより編集した内容を保存せずにエディタが終了します。 + + 3. シェルプロンプトが出てきたら、このチュートリアルを始める為ににコマンド + をタイプします。 + そのコマンドは: vimtutor + + 4. これまでのステップを覚え自信がついたならば、ステップ 1 から 3 までを実 + 際に試して、Vim を1度終了してから再び起動しましょう。 + +NOTE: :q! は全ての変更を破棄します。レッスンにて変更をファイルに保 + 存する方法についても勉強していきましょう。 + + 5. 1.3までカーソルを移動させましょう。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.3: テキスト編集 - 削除 + + + ** ノーマルモードにてカーソルの下の文字を削除するには x を押します ** + + 1. 以下の ---> と示された行にカーソルを移動しましょう。 + + 2. 間違いを修正するために、削除する最初の文字までカーソルを移動します。 + + 3. 不必要な文字を x を押して削除しましょう。 + + 4. 文が正しくなるまで ステップ 2 から 4 を繰り返しましょう。 + +---> その ううさぎ は つつきき を こええてて とびはねたた + + 5. 行が正しくなったら、レッスン 1.4 へ進みましょう。 + +NOTE: 全てのレッスンを通じて、覚えようとするのではなく実際にやってみましょう。 + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.4: テキスト編集 - 挿入 + + + ** ノーマルモードにてテキストを挿入するには i を押します ** + + 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 + + 2. 1行目を2行目と同じ様にするために、テキストを挿入しなければならない位置 + の次の文字にカーソルを移動します。 + + 3. i キーを押してから、追加が必要な文字をタイプしましょう。 + + 4. 間違いを修正したら を押してコマンドモードに戻り、正しい文になる様 + にステップ 2 から 4 を繰り返しましょう。 + +---> この には 足りない テキスト ある。 +---> この 行 には 幾つか 足りない テキスト が ある。 + + 5. 挿入の方法がわかったらレッスン 1.5 へ進みましょう。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.5: テキスト編集 - 追加 + + + ** テキストを追加するには A を押しましょう ** + + 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 + カーソルがその文字上にあってもかまいません。 + + 2. 追加が必要な場所で A をタイプしましょう。 + + 3. テキストを追加し終えたら、 を押してノーマルモードに戻りましょう。 + + 4. 2行目の ---> と示された場所へ移動し、ステップ 2 から 3 を繰り返して文法 + を修正しましょう。 + +---> ここには間違ったテキストがあり + ここには間違ったテキストがあります。 +---> ここにも間違ったテキス + ここにも間違ったテキストがあります。 + + 5. テキストの追加が軽快になってきたらレッスン 1.6 へ進みましょう。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.6: ファイルの編集 + + + ** ファイルを保存して終了するには :wq とタイプします ** + + !! NOTE: 以下のステップを実行する前に、まず全体を読んでください!! + + 1. レッスン 1.2 でやったように :q! をタイプして、このチュートリアルを終了 + します。あるいは、別の端末がある場合はそこで以下の内容を行ってもかまい + ません。 + + 2. シェルプロンプトでこのコマンドをタイプします: vim tutor + 'vim'が Vim エディタを起動するコマンド、'tutor' は編集したいファイルの + 名前です。変更してもよいファイルを使いましょう。 + + 3. 前のレッスンで学んだように、テキストを挿入、削除します。 + + 4. 変更をファイルに保存します: :wq + + 5. ステップ 1 で vimtutuor を終了した場合は vimtutor を再度起動し、以下の + 要約へ進みましょう。 + + 6. 以上のステップを読んで理解した上でこれを実行しましょう。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1 要約 + + + 1. カーソルは矢印キーもしくは hjkl キーで移動します。 + h (左) j (下) k (上) l (右) + + 2. Vim を起動するにはプロンプトから vim ファイル名 とタイプします。 + + 3. Vim を終了するには :q! とタイプします(変更を破棄)。 + もしくは :wq とタイプします(変更を保存)。 + + 4. カーソルの下の文字を削除するには、ノーマルモードで x とタイプします。 + + 5. カーソルの位置に文字を挿入するには、ノーマルモードで i とタイプします。 + i テキストのタイプ カーソル位置に追加 + A テキストの追加 行末に追加 + +NOTE: キーを押すとノーマルモードに移行します。その際、間違ったり入力途 + 中のコマンドを取り消すことができます。 + +さて、続けてレッスン 2 を始めましょう。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.1: 削除コマンド + + + ** 単語の末尾までを削除するには dw とタイプしましょう ** + + 1. ノーマルモードであることを確認するために を押しましょう。 + + 2. 以下の ---> と示された行にカーソルを移動しましょう。 + + 3. 消したい単語の先頭にカーソルを移動しましょう。 + + 4. 単語を削除するために dw とタイプしましょう。 + + NOTE: タイプすると、dw という文字がスクリーンの最下行に現われます。 + タイプを間違ってしまった時には を押してやり直しましょう。 + +---> この 文 紙 には いくつかの たのしい 必要のない 単語 が 含まれて います。 + + 5. 3 から 4 までを文が正しくなるまで繰り返し、レッスン 2.2 へ進みましょう。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.2: その他の削除コマンド + + + ** 行の末尾までを削除するには d$ とタイプしましょう ** + + 1. ノーマルモードであることを確認するのに を押しましょう。 + + 2. 以下の ---> と示された行にカーソルを移動しましょう。 + + 3. 正しい文の末尾へカーソルを移動しましょう(最初の 。 の後です)。 + + 4. 行末まで削除するのに d$ とタイプしましょう。 + +---> 誰かがこの行の最後を2度タイプしました。 2度タイプしました。 + + + 5. どういうことか理解するために、レッスン 2.3 へ進みましょう。 + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.3: オペレータとモーション + + + 多くのコマンドはオペレータとモーションからテキストに変更を加えます。 + 削除コマンド d のオペレータは次の様になっています: + + d モーション + + それぞれ: + d - 削除コマンド。 + モーション - 何に対して働きかけるか(以下に挙げます)。 + + オペレータの一部一覧: + w - カーソル位置から空白を含む単語の末尾まで。 + e - カーソル位置から空白を含まない単語の末尾まで。 + $ - カーソル位置から行末まで。 + + つまり de とタイプすると、カーソル位置から単語の終わりまでを削除します。 + +NOTE: 冒険したい人は、ノーマルモードにてコマンドなしにモーションを押して + みましょう。カーソルが目的語一覧で示される位置に移動するはずです。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.4: モーションにカウントを使用する + + + ** 何回も行いたい繰り返しのモーションの前に数値をタイプします。 ** + + 1. 以下の ---> と示された行の先頭にカーソルを移動します。 + + 2. 2w をタイプして単語2つ分前に移動します。 + + 3. 3e をタイプして3つ目の単語の終端に移動します。 + + 4. 0 (ゼロ)をタイプして行頭に移動します。 + + 5. ステップ 2 と 3 を違う数値を使って繰り返します。 + +---> This is just a line with words you can move around in. + + 6. レッスン 2.5 に進みましょう。 + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.5: より多くを削除するためにカウントを使用する + + + ** オペレータとカウントをタイプすると、その操作が複数回繰り返されます。 ** + + 既述の削除のオペレータとモーションの組み合わせにカウントを追加することで、 + より多くの削除が行えます: + d 数値 モーション + + 1. ---> と示された行の行頭部分にカーソルを移動しましょう。 + + 2. UPPER CASE の単語2つを d2w とタイプして削除します。 + + 3. UPPER CASE という連続した単語を、1つのコマンドと異なるカウントを指定し、 + ステップ 1 と 2 を繰り返します。 + +---> このABC DE行のFGHI JK LMN OP単語はQ RS TUV綺麗になった。 + +NOTE: オペレータ d とモーションの間にカウントを使った場合、オペレータのない + 場合のモーションのように動作します。 + 例: 3dw と d3w は同等で、3w を削除します。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.6: 行の操作 + + + ** 行全体を削除するには dd とタイプします ** + + 行全体を削除する頻度が多いので、Viのデザイナーは行の削除を d の2回タイプと + いう簡単なものに決めました。 + + 1. 以下の句の2行目にカーソルを移動します。 + 2. dd とタイプして行を削除します。 + 3. さらに4行目に移動します。 + 4. 2dd とタイプして2行を削除します。 + +---> 1) バラは赤い、 +---> 2) つまらないものは楽しい、 +---> 3) スミレは青い、 +---> 4) 私は車をもっている、 +---> 5) 時計が時刻を告げる、 +---> 6) 砂糖は甘い +---> 7) オマエモナー + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.7: やり直しコマンド + + + ** 最後のコマンドを取り消すには u を押します。U は行全体の取消です。 ** + + 1. 以下の ---> と示された行にカーソルを移動し、最初の間違いにカーソル + を移動しましょう。 + 2. x をタイプしていらない先頭の文字を削除しましょう。 + 3. さぁ、u をタイプして最後に実行したコマンドを取り消しましょう。 + 4. 今度は、x を使用して誤りを全て修正しましょう。 + 5. 大文字の U をタイプして、行を元の状態に戻しましょう。 + 6. u をタイプして直前の U コマンドを取消しましょう。 + 7. ではコマンドを再実行するのに CTRL-R (CTRL を押したまま R を打つ)を数回 + タイプしてみましょう(取消の取消)。 + +---> このの行のの間違いを修正々し、後でそれらの修正をを取消しまますす。 + + 8. これはとても便利なコマンドです。さぁレッスン 2 要約へ進みましょう。 + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2 要約 + + + 1. カーソル位置から単語の末尾までを削除するには dw とタイプします。 + 2. カーソル位置から行の末尾までを削除するには d$ とタイプします。 + 3. 行全体を削除するには dd とタイプします。 + + 4. モーションを繰り返すには数値を付与します: 2w + 5. 変更に用いるコマンドの形式は + オペレータ [数値] モーション + + それぞれ: + オペレータ - 削除 d の類で何をするか。 + 数値 - そのコマンドを何回繰り返すか。 + モーション - w (単語)や $ (行末)などの類で、テキストの何に対して働きか + けるか。 + + 6. 行の先頭に移動するにはゼロを使用します: 0 + + 7. 前回の動作を取消す: u (小文字 u) + 行全体の変更を取消す: U (大文字 U) + 取消しの取消し: CTRL-R +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 3.1: 貼り付けコマンド + + + ** 最後に削除された行をカーソルの後に貼り付けるには p をタイプします ** + + 1. 以下の段落の最初の行にカーソルを移動しましょう。 + + 2. dd とタイプして行を削除し、Vim のバッファに格納しましょう。 + + 3. 削除した行が本来あるべき位置の上の行まで、カーソルを移動させましょう。 + + 4. ノーマルモードで p をタイプして格納した行を画面に戻します。 + + 5. 順番が正しくなる様にステップ 2 から 4 を繰り返しましょう。 + + d) 貴方も学ぶことができる? + b) スミレは青い、 + c) 知恵とは学ぶもの、 + a) バラは赤い、 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 3.2: 置き換えコマンド + + + ** カーソルの下の文字を置き換えるには r をタイプします ** + + 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 + + 2. 最初の間違いの先頭にカーソルを移動しましょう。 + + 3. r とタイプし、間違っている文字を置き換える、正しい文字をタイプしましょう。 + + 4. 最初の行が正しくなるまでステップ 2 から 3 を繰り返しましょう。 + +---> この合を人力した時ね、その人は幾つか問違ったキーを押しもした! +---> この行を入力した時に、その人は幾つか間違ったキーを押しました! + + 5. さぁ、レッスン 3.3 へ進みましょう。 + +NOTE: 実際に試しましょう。決して覚えるだけにはしないこと。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 3.3: 変更コマンド + + + ** 単語の一部、もしくは全体を変更するには cw とタイプします ** + + 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 + + 2. lubw の u の位置にカーソルを移動しましょう。 + + 3. cw とタイプし、正しい単語をタイプしましょう(この場合 'ine' とタイプ)。 + + 4. 次の間違い(変更すべき文字の先頭)に移動するために をタイプします。 + + 5. 最初の行が次の行の様になるまでステップ 3 と 4 を繰り返します。 + +---> This lubw has a few wptfd that mrrf changing usf the change operator. +---> This line has a few words that need changing using the change operator. + +cw は単語を変更するだけでなく、挿入も行えることに注意しましょう。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 3.4: c を使用したその他の変更 + + + ** 変更コマンドは、削除コマンドと同じ様にオブジェクトを使用します ** + + 1. 変更コマンドは、削除コマンドと同じような動作をします。その形式は + + c [数値] モーション + + 2. オブジェクトも同じで、w は単語、 $ は行末などといったものです。 + + 3. 以下の ---> と示された行にカーソルを移動しましょう。 + + 4. 最初の間違いへカーソルを移動しましょう。 + + 5. c$ とタイプして行の残りを2行目の様にし、 を押しましょう。 + +---> The end of this line needs some help to make it like the second. +---> The end of this line needs to be corrected using the c$ command. + +NOTE: タイプ中の間違いはバックスペースキーを使って直すこともできます。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 3 要約 + + + 1. 既に削除されたテキストを再配置するには、p をタイプします。これは削除さ + れたテキストをカーソルの後に挿入します(行単位で削除されたのならば、カー + ソルのある次の行に挿入されます)。 + + 2. カーソルの下の文字を置き換えるには、r をタイプした後、それを置き換える + 文字をタイプします。 + + 3. 変更コマンドではカーソル位置から特定のモーションで指定される終端までを変 + 更することが可能です。例えば cw ならばカーソル位置から単語の終わりまで、 + c$ ならば行の終わりまでを変更します。 + + 4. 変更コマンドの形式は + + c [数値] モーション + +さぁ、次のレッスンへ進みましょう。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 4.1: 位置とファイルの情報 + + ** ファイル内での位置とファイルの状態を表示するには CTRL-G をタイプします。 + ファイル内のある行に移動するには G をタイプします ** + + NOTE: ステップを実行する前に、このレッスン全てに目を通しましょう!! + + 1. CTRL を押したまま g を押しましょう。この操作を CTRL-G と呼んでいます。 + ページの一番下にファイル名と行番号が表示されるはずです。 ステップ 3のため + に行番号を覚えておきましょう。 + +NOTE: 画面の右下隅にカーソルの位置が表示されているかもしれません。これは + 'ruler' オプション(:help 'ruler' を参照)を設定することで表示されます。 + + 2. 最下行に移動するために G をタイプしましょう。 + ファイルの先頭に移動するには gg とタイプしましょう。 + + 3. 先ほどの行の番号をタイプし G をタイプしましょう。最初に CTRL-G を押した行 + に戻って来るはずです。 + + 4. 自信が持てたらステップ 1 から 3 を実行しましょう。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 4.2: 検索コマンド + + + ** 語句を検索するには / と、前方検索する語句をタイプします。** + + 1. ノーマルモードで / という文字をタイプします。画面一番下に : コマンドと + 同じ様に / が現れることに気づくでしょう。 + + 2. では、'errroor' とタイプしましょう。これが検索したい単語です。 + + 3. 同じ語をもう一度検索するときは 単に n をタイプします。 + 逆方向に語句を検索するときは N をタイプします。 + + 4. 逆方向に語句を検索する場合は、/ の代わりに ? コマンドを使用します。 + + 5. 元の場所に戻るには CTRL-O (Ctrl を押し続けながら o 文字タイプ)をタイプし + ます。さらに戻るにはこれを繰り返します。CTRL-I は前方向です。 + +---> "errroor" は error とスペルが違います; errroor はいわゆる error です。 +NOTE: 検索がファイルの終わりに達すると、オプション 'wrapscan' が設定されている + 場合は、ファイルの先頭から検索を続行します。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 4.3: 対応する括弧を検索 + + + ** 対応する ),] や } を検索するには % をタイプします ** + + 1. 下の ---> で示された行で (,[ か { のどれかにカーソルを移動しましょう。 + + 2. そこで % とタイプしましょう。 + + 3. カーソルは対応する括弧に移動するはずです。 + + 4. 最初の括弧に移動するには % とタイプしましょう。 + + 5. 他の (,),[,],{ や } でカーソルを移動し、% が何をしているか確認しましょう。 + +---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + + +NOTE: この機能は括弧が一致していないプログラムをデバッグするのにとても役立ち + ます。 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 4.4: 間違いを変更する方法 + + + ** 'old' を 'new' に置換するには :s/old/new/g とタイプします ** + + 1. 以下の ---> と示された行にカーソルを移動しましょう。 + + 2. :s/thee/the とタイプしましょう。このコマンドはその行で最初に見 + つかったものにだけ行なわれることに気をつけましょう。 + + 3. では :s/thee/the/g とタイプしましょう。行全体を置換することを意味します。 + この変更はその行で見つかった全ての箇所に対して行なわれます。 + +---> thee best time to see thee flowers is in thee spring. + + 4. 複数行から見つかる文字を変更するには + :#,#s/old/new/g #,# には置き換える範囲の開始と終了の行番号を指定しま + す。 + :%s/old/new/g ファイル全体で見つかるものに対して変更する。 + :%s/old/new/gc ファイル全体で見つかるものに対して、1つ1つ確認をとりな + がら変更する。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 4 要約 + + + 1. CTRL-G はファイルでの位置とファイルの詳細を表示します。 + G はファイルの最下行に移動します。 + 数値 G はその行に移動します。 + gg は先頭行に移動します。 + + 2. / の後に語句をタイプすると前方に語句を検索します。 + ? の後に語句をタイプすると後方に語句を検索します。 + 検索の後の n は同じ方向の次の検索を、N は逆方向の検索をします。 + CTRL-O は場所を前に移し、CTRL-I は場所を次に移動します。 + + 3. (,),[,],{, もしくは } 上にカーソルがある状態で % をタイプすると対になる文 + 字へ移動します。 + + 4. 現在行の最初の old を new に置換する。 :s/old/new + 現在行の全ての old を new に置換する。 :s/old/new/g + 2つの # 間で語句を置換する。 :#,#s/old/new/g + ファイルの中の全ての検索語句を置換する。 :%s/old/new/g + 'c' を加えると置換の度に確認を求める。 :%s/old/new/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 5.1: 外部コマンドを実行する方法 + + + ** :! の後に実行する外部コマンドをタイプします ** + + 1. 画面の最下部にカーソルが移動するよう、慣れ親しんだ : をタイプしましょう。 + これでコマンドがタイプできる様になります。 + + 2. ここで ! という文字(感嘆符)をタイプしましょう。 + これで外部シェルコマンドが実行できる様になります。 + + 3. 例として ! に続けて ls とタイプし を押しましょう。 + シェルプロンプトのようにディレクトリの一覧が表示されるはずです。 + もしくは ls が動かないならば :!dir を使用しましょう。 + +NOTE: この方法によってあらゆるコマンドが実行することができます。もちろん引数 + も与えられます。 + +NOTE: 全ての : コマンドは を押して終了しなければなりません。 + 以降ではこのことに言及しません。 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 5.2: その他のファイルへ書き込み + + + ** ファイルへ変更を保存するには :w ファイル名 とタイプします ** + + 1. ディレクトリの一覧を得るために :!dir もしくは :!ls とタイプしましょう。 + このあと を押すのは既にご存知ですね。 + + 2. TEST のように、そのディレクトリに無いファイル名を一つ選びます。 + + 3. では :w TEST とタイプしましょう (TEST は、選んだファイル名です)。 + + 4. これによりファイル全体が TEST という名前で保存されます。 + もう一度 :!dir もしくは :!ls とタイプして確認してみましょう。 + +NOTE: ここで Vim を終了し、ファイル名 TEST と共に起動すると、保存した時の + チュートリアルの複製ができ上がるはずです。 + + 5. さらに、次のようにタイプしてファイルを消しましょう(MS-DOS): :!del TEST + もしくは(Unix): :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 5.3: 選択した書き込み + + +** ファイルの位置を保存するには、v モーションと :w FILENAME をタイプします。 ** + + 1. この行にカーソルを移動します。 + + 2. v を押し、以下の第5項目にカーソルを移動します。テキストが強調表示されるの + に注目して下さい。 + + 3. 文字 : を押すと、画面の最下部に :'<,'> が現れます。 + + 4. w TEST (TEST は存在しないファイル名)をタイプします。 + を押す前に :'<,'>w TEST となっていることを確認して下さい。 + + 5. Vim は TEST というファイルに選択された行を書き込むでしょう。 + !dir もしくは !ls でそれを確認します。 + それは削除しないでおいて下さい。次のレッスンで使用します。 + +NOTE: v を押すと、Visual 選択が始まります。カーソルを動かすことで、選択範囲を + 大きくも小さくもできます。さらに、その選択範囲に対してオペレータを適用 + きます。例えば d はテキストを削除します。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 5.4: ファイルの取込と合併 + + + ** ファイルの中身を挿入するには :r ファイル名 とタイプします ** + + 1. カーソルを以下の行に合わせます。 + +NOTE: ステップ 2 の実行後、レッスン 5.3 のテキストが現れます。下に下がってこ + のレッスンに移動しましょう。 + + 2. では TEST というファイルを :r TEST というコマンドで読み込みましょう。 + ここでいう TEST は使うファイルの名前のことです。 + 読み込まれたファイルは、カーソル行の下にあります。 + + 3. 取込んだファイルを確認してみましょう。カーソルを戻すと、レッスン5.3 の + オリジナルとファイルによるものの2つがあることがわかります。 + +NOTE: 外部コマンドの出力を読み込むことも出来ます。例えば、 + :r !ls は ls コマンドの出力をカーソル以下に読み込みます。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 5 要約 + + + 1. :!command によって 外部コマンドを実行します。 + + よく使う例: + (MS-DOS) (Unix) + :!dir :!ls - ディレクトリ内の一覧を見る。 + :!del FILENAME :!rm FILENAME - ファイルを削除する。 + + 2. :w ファイル名 によってファイル名というファイルがディスクに書き込まれる。 + + 3. v モーションで :w FILENAME とすると、ビジュアル選択行がファイルに保存さ + れる。 + + 4. :r ファイル名 によりファイル名というファイルがディスクより取込まれ、 + カーソル位置の下に挿入される。 + + 5. :r !dir は dir コマンドの出力をカーソル位置以下に読み込む。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6.1: オープンコマンド + + + ** o をタイプすると、カーソルの下の行が開き、挿入モードに入ります ** + + 1. 以下の ---> と示された行にカーソルを移動しましょう。 + + 2. o (小文字) をタイプして、カーソルの下の行を開き、挿入モードに入ります。 + + 3. さらに挿入モードを終了する為に をタイプします。 + +---> o をタイプするとカーソルは開いた行へ移動し挿入モードに入ります。 + + 4. カーソルの上の行に挿入するには、小文字の o ではなく、単純に大文字の O + をタイプします。次の行で試してみましょう。 + +---> この行の上へ挿入するには、この行へカーソルを置いて O をタイプします。 + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6.2: 追加コマンド + + + ** カーソルの次の位置からテキストを追加するには a とタイプします ** + + 1. カーソルを ---> で示された行へ移動しましょう。 + + 2. e を押して li の終端部までカーソルを移動します。 + + 3. カーソルの後ろにテキストを追加するために a (小文字) をタイプします。 + + 4. その下の行のような単語に完成させます。挿入モードを抜ける為に を押 + します。 + + 5. e を使って次の不完全な単語へ移動し、ステップ 3 と 4 を繰り返します。 + +---> This li will allow you to pract appendi text to a line. +---> This line will allow you to practice appending text to a line. + +NOTE: a, i と A は同じ挿入モードへ移りますが、文字が挿入される位置だけが異なり + ます。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6.3: その他の置換方法 + + + ** 1文字以上を置き換えるには大文字の R とタイプしましょう ** + + 1. 以下の ---> と示された行にカーソルを移動します。最初の xxx の先頭に移動し + ます。 + + 2. R を押して、2行目の数値をタイプすることで、xxx が置換されます。 + + 3. 置換モードを抜けるには を押します。行の残りが変更されていないままに + なることに注意してください。 + + 4. 残った xxx をステップを繰り返して置換しましょう。 + +---> Adding 123 to xxx gives you xxx. +---> Adding 123 to 456 gives you 579. + +NOTE: 置換モードは挿入モードに似ていますが、全てのタイプされた文字は既存の文字 + を削除します。 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6.4: テキストのコピーとペースト + + + ** テキストのコピーにはオペレータ y を、ペーストには p を使います ** + + 1. ---> と示された行へ移動し、カーソルを "a)" の後に置いておきます。 + + 2. v でビジュアルモードを開始し、"first"の手前までカーソルを移動します。 + + 3. y をタイプして強調表示されたテキストを yank (コピー)します。 + + 4. 次の行の行末までカーソルを移動します: j$ + + 5. p を押して貼り付け(put)てから、次をタイプします: a second + + 6. ビジュアルモードで " item." を選択し、y でヤンク、次の行の行末まで j$ で + 移動し、 p でテキストをそこに put します。 + +---> a) this is the first item. + b) + + NOTE: 単語を1つ yank するのに y をオペレータとして yw とすることも出来ます。 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6.5: オプションの設定 + + + ** 検索や置換の際に大文字/小文字を無視するには、オプションを設定します ** + + 1. 次の様に入力して 'ignore' を検索しましょう: /ignore + n を押して何度か検索を繰り返します。 + + 2. 次の様に入力して 'ic' (Ignore Case の略) オプションを設定します: :set ic + + 3. では n によってもう1度 'ignore' を検索します。 + n を押してさらに数回検索を繰り返しましょう。 + + 4. 'hlsearch' と 'incsearch' オプションを設定しましょう: :set hls is + + 5. 検索コマンドを再入力して、何が起こるか見てみましょう: /ignore + + 6. 大文字小文字の区別を無効にするには次の様に入力します: :set noic + +NOTE: マッチの強調表示をやめるには次の様に入力します: :nohlsearch +NOTE: 1つの検索コマンドだけ大文字小文字の区別をやめたいならば、フレーズに \c + を使用します: /ignore\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6 要約 + + 1. o をタイプするとカーソルの下の行を開けて、そこで挿入モードになる。 + O (大文字) をタイプするとカーソルの上の行で挿入モードになる。 + + 2. カーソル上の文字の次からテキストを追加するには a とタイプする。 + 行末に自動でテキストを挿入するには大文字 A をタイプする。 + + 3. e コマンドは単語の終端部カーソルを移動する。 + + 4. y オペレータはテキストを yank (コピー)し、p はそれを put (ペースト)する。 + + 5. 大文字の R をタイプすると置換モードに入り、を押すと抜ける。 + + 6. ":set xxx" とタイプするとオプション "xxx" が設定される。 + 'ic' 'ignorecase' 検索時に大文字小文字の区別しない + 'is' 'incsearch' 検索フレーズに部分マッチしている部分を表示する + 'hls' 'hlsearch' マッチするすべを強調表示する + 長い方、短い方、どちらのオプション名でも使用できます。 + + 7. "no" を付与し、オプションを無効にします: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 7.1: オンラインヘルプコマンド + + + ** オンラインヘルプを使用しましょう ** + + Vim には広範にわたるオンラインヘルプシステムがあります。 + ヘルプを開始するには、これら3つのどれか1つを試してみましょう: + - ヘルプキー を押す(もしあるならば)。 + - キーを押す(もしあるならば)。 + - :help とタイプする。 + + ヘルプウィンドウのテキストを読むと、ヘルプの動作が理解できます。 + CTRL-W CTRL-W とタイプすると ヘルプウィンドウへジャンプします。 + :q とタイプすると ヘルプウィンドウが閉じられます。 + + ":help" コマンドに引数を与えることにより、あらゆる題名のヘルプを見つけること + ができます。これらを試してみましょう( をタイプし忘れないように): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 7.2: 起動スクリプトの作成 + + ** Vim の特徴を発揮する ** + + Vim には Vi よりも多くの特徴を踏まえていますが、そのほとんどは初期状態にて + 使用不可となっています。より多くの特徴を使いはじめるには "vimrc" ファイル + を作成します。 + + 1. "vimrc" ファイルの編集を開始する。これはシステムに依存します。 + :edit ~/.vimrc UNIX 向け + :edit $VIM/_vimrc MS-Windows 向け + + 2. ここでサンプルの "vimrc" を読み込みます。 + :read $VIMRUNTIME/vimrc_example.vim + + 3. 以下のようにファイルへ書き込みます。 + :write + + 次回 Vim を起動すると、色づけ構文が使えるようになるでしょう。 + この "vimrc" ファイルへ、お好みの設定を追加することができます。 + より多くの情報を得るには :help vimrc-intro とタイプします。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 7.3: 補完 + + + ** CTRL-D と でコマンドラインを補完する ** + + 1. コンパチモードでないことを確認します: :set nocp + + 2. 現在のディレクトリに在るファイルを :!ls か :!dir で確認します。 + + 3. コマンドの開始をタイプします: :e + + 4. CTRL-D を押すと Vim は "e" から始まるコマンドの一覧を表示します。 + + 5. を押すと Vim は ":edit" というコマンド名を補完します。 + + 6. さらに空白と、既存のファイル名の始まりを加えます: :edit FIL + + 7. を押すと Vim は名前を補完します。(もし一つしか無かった場合) + +NOTE: 補完は多くのコマンドで動作します。そして CTRL-D と 押してみてくだ + さい。特に :help の際に役立ちます。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 7 要約 + + + 1. ヘルプウィンドウを開くには :help とするか もしくは を押す。 + + 2. コマンド(cmd)のヘルプを検索するには :help cmd とタイプする。 + + 3. 別のウィンドウへジャンプするには CTRL-W CTRL-W とタイプする。 + + 4. ヘルプウィンドウを閉じるには :q とタイプする。 + + 5. お好みの設定を保つには vimrc 起動スクリプトを作成する。 + + 6. : command で可能な補完を見るには CTRL-D をタイプする。 + 補完を使用するには を押す。 + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + これにて Vim のチュートリアルを終わります。エディタを簡単に、しかも充分に + 使うことができるようにと、Vim の持つ概念の要点のみを伝えようとしました。 + Vim にはさらに多くのコマンドがあり、ここで全てを説明することはできません。 + 以降はユーザマニュアルを参照ください: ":help user-manual" + + これ以後の学習のために、次の本を推薦します。 + Vim - Vi Improved - by Steve Oualline + 出版社: New Riders + 最初の本は完全に Vim のために書かれました。とりわけ初心者にはお奨めです。 + 多くの例題や図版が掲載されています。 + 次のURLを参照して下さい http://iccf-holland.org/click5.html + + 次は Vim よりも Vi について書かれた古い本ですが推薦します: + Learning the Vi Editor - by Linda Lamb + 出版社: O'Reilly & Associates Inc. + Vi でやりたいと思うことほぼ全てを知ることができる良書です。 + 第6版では、Vim についての情報も含まれています。 + + このチュートリアルは Colorado State University の Charles Smith のアイデア + を基に、Colorado School of Mines の Michael C. Pierce と Robert K. Ware の + 両名によって書かれました。 E-mail: bware@mines.colorado.edu. + + Modified for Vim by Bram Moolenaar. + + 日本語訳 松本 泰弘 + 監修 村岡 太郎 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + vi:set ts=8 sts=4 sw=4 tw=78: diff --git a/share/vim/vim74/tutor/tutor.ko.euc b/share/vim/vim74/tutor/tutor.ko.euc new file mode 100644 index 00000000..95282f86 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.ko.euc @@ -0,0 +1,812 @@ +=============================================================================== += ºö ±æÀâÀÌ (VIM Tutor) ¿¡ ¿À½Å °ÍÀ» ȯ¿µÇÕ´Ï´Ù - Version 1.5 = +=============================================================================== + + ºö(Vim)Àº ÀÌ ±æÀâÀÌ¿¡¼­ ´Ù ¼³¸íÇÒ ¼ö ¾øÀ» ¸¸Å­ ¸¹Àº ¸í·ÉÀ» °¡Áø + ¸Å¿ì °­·ÂÇÑ ÆíÁý±âÀÔ´Ï´Ù. ÀÌ ±æÀâÀÌ´Â ºöÀ» ½±°Ô ÀüõÈÄ ÆíÁý±â·Î »ç¿ëÇÒ + ¼ö ÀÖµµ·Ï ÃæºÐÇÑ ¸í·É¿¡ ´ëÇØ ¼³¸íÇÏ°í ÀÖ½À´Ï´Ù. + + ÀÌ ±æÀâÀ̸¦ ¶¼´Â µ¥¿¡´Â ½Ç½ÀÇÏ´Â µ¥¿¡ ¾ó¸¶³ª ½Ã°£À» ¾²´Â °¡¿¡ µû¶ó¼­ + 25-30 ºÐ Á¤µµ°¡ °É¸³´Ï´Ù. + + ÀÌ ¿¬½À¿¡ Æ÷ÇÔµÈ ¸í·ÉÀº ³»¿ëÀ» °íĨ´Ï´Ù. ÀÌ ÆÄÀÏÀÇ º¹»çº»À» ¸¸µé¾î¼­ + ¿¬½ÀÇϼ¼¿ä. (vimtutor ¸¦ ÅëÇØ ½ÃÀÛÇß´Ù¸é, ÀÌ¹Ì º¹»çº»À» »ç¿ëÇÏ´Â + ÁßÀÔ´Ï´Ù.) + + Áß¿äÇÑ °ÍÀº, ÀÌ ±æÀâÀÌ°¡ Á÷Á¢ ½áº¸¸é¼­ ¹è¿ìµµ·Ï °í·ÁµÇ¾î ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. + ¸í·ÉÀ» Á¦´ë·Î ÀÍÈ÷·Á¸é, Á÷Á¢ ½ÇÇàÇغ¸´Â °ÍÀÌ ÇÊ¿äÇÕ´Ï´Ù. ³»¿ëÀ» Àд + °Í¸¸À¸·Î´Â, ¸í·ÉÀ» Àؾî¹ö¸®°Ô µÉ °ÍÀÔ´Ï´Ù. + + ÀÚ ÀÌÁ¦, Caps Lock(Shift-Lock) Å°°¡ ´­·ÁÀÖÁö ¾ÊÀºÁö È®ÀÎÇغ¸½Ã°í, j Å°¸¦ + ÃæºÐÈ÷ ´­·¯¼­ Lesson 1.1ÀÌ È­¸é¿¡ °¡µæ Â÷µµ·Ï ¿òÁ÷¿©º¾½Ã´Ù. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.1: Ä¿¼­ ¿òÁ÷À̱â + + ** Ä¿¼­¸¦ ¿òÁ÷ÀÌ·Á¸é, Ç¥½ÃµÈ ´ë·Î h,j,k,l Å°¸¦ ´©¸£½Ê½Ã¿À. ** + ^ + k ÈùÆ®: h Å°´Â ¿ÞÂÊ¿¡ ÀÖÀ¸¸ç, ¿ÞÂÊÀ¸·Î ¿òÁ÷ÀÔ´Ï´Ù. + < h l > l Å°´Â ¿À¸¥ÂÊ¿¡ ÀÖÀ¸¸ç, ¿À¸¥ÂÊÀ¸·Î + j ¿òÁ÷ÀÔ´Ï´Ù. + v j Å°´Â ¾Æ·¡¹æÇâ È­»ìǥó·³ »ý°å½À´Ï´Ù. + + 1. Àͼ÷ÇØÁú ¶§±îÁö Ä¿¼­¸¦ ½ºÅ©¸° »ó¿¡¼­ ¿òÁ÷¿© º¸½Ê½Ã¿À. + + 2. ¾Æ·¡ ¹æÇâÅ° (j)¸¦ ¹Ýº¹ÀÔ·ÂÀÌ µÉ ¶§±îÁö ´©¸£°í °è½Ê½Ã¿À. +---> ÀÌÁ¦ ´ÙÀ½ lessonÀ¸·Î °¡´Â ¹æ¹ýÀ» ¾Ë°Ô µÇ¾ú½À´Ï´Ù. + + 3. ¾Æ·¡ ¹æÇâÅ°¸¦ ÀÌ¿ëÇÏ¿©, Lesson 1.2 ·Î °¡½Ê½Ã¿À. + +Âü°í: ¿øÇÏÁö ¾Ê´Â ¹«¾ð°¡°¡ ÀÔ·ÂÀÌ µÇ¾ú´Ù¸é, ¸¦ ´­·¯¼­, ¸í·É ¸ðµå·Î + µ¹¾Æ°¡½Ê½Ã¿À. ±× ÈÄ¿¡ ¿øÇÏ´Â ¸í·ÉÀ» ´Ù½Ã ÀÔ·ÂÇϽʽÿÀ. + +Âü°í: Ä¿¼­Å° ¶ÇÇÑ ÀÛµ¿ÇÒ °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ hjkl¿¡ Àͼ÷ÇØÁö¸é, Ä¿¼­Å°º¸´Ù + ÈξÀ ºü¸£°Ô À̵¿ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.2: ºöÀ» ½ÃÀÛÇÏ°í ³¡³»±â + + + !! ÁÖÀÇ: ¾Æ·¡ ÀÖ´Â ´Ü°è¸¦ ½ÇÇàÇϱâ Àü¿¡, ÀÌ lesson Àüü¸¦ ÀÐÀ¸½Ê½Ã¿À!! + + 1. Å°¸¦ ´­·¯¼­ È®½ÇÇÏ°Ô ¸í·É ¸ðµå·Î ºüÁ® ³ª¿É´Ï´Ù. + + 2. ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù: :q! + +---> ÀÌ·¸°Ô Çϸé, ¹Ù²ï ³»¿ëÀ» *ÀúÀåÇÏÁö ¾Ê°í* ÆíÁý±â¸¦ ºüÁ®³ª°©´Ï´Ù. + ÀúÀåÇÑ ÈÄ ºüÁ®³ª°¡·Á¸é ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù: + :wq + + 3. ½© ÇÁ·ÒÇÁÆ®°¡ º¸Àδٸé, ´Ù½Ã ±æÀâÀÌ·Î µ¹¾Æ¿À±â À§ÇØ ´ÙÀ½°ú °°ÀÌ + ÀÔ·ÂÇÕ´Ï´Ù. + vimtutor + ¶Ç´Â ´ÙÀ½°ú °°À» ¼öµµ ÀÖ½À´Ï´Ù. + vim tutor.ko + +---> 'vim' Àº ºö ÆíÁý±â·Î µé¾î°¡´Â °ÍÀ» ¶æÇϸç, 'tutor.ko'´Â ÆíÁýÇÏ·Á´Â + ÆÄÀÏÀ» ¶æÇÕ´Ï´Ù. + + 4. À§¿¡¼­ À̾߱âÇÑ ´Ü°è¸¦ ±â¾ïÇÏ¿´À¸¸ç, È®½ÅÀÌ ¼­¸é, 1¿¡¼­ 3±îÁö¸¦ + ¼öÇàÇÏ¿© ÆíÁý±â¸¦ ³ª°¬´Ù°¡ ´Ù½Ã µé¾î¿Íº¸½Ê½Ã¿À. ±× ÈÄ Ä¿¼­¸¦ ¾Æ·¡·Î + ¿òÁ÷¿© Lesson 1.3 À¸·Î °¡½Ê½Ã¿À. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.3: ÅؽºÆ® ÆíÁý - Áö¿ì±â + + +** ¸í·É ¸ðµå¿¡¼­ x ¸¦ ´©¸£¸é Ä¿¼­°¡ À§Ä¡ÇÑ °÷ÀÇ ±ÛÀÚ¸¦ Áö¿ï ¼ö ÀÖ½À´Ï´Ù. ** + + 1. ----> ·Î Ç¥½ÃµÈ °÷À¸·Î Ä¿¼­¸¦ ¿Å°Üº¸½Ê½Ã¿À. + + 2. ¿ÀŸ¸¦ ¼öÁ¤Çϱâ À§ÇØ, Ä¿¼­¸¦ Áö¿ï ±ÛÀÚ À§·Î ¿òÁ÷¿© º¸½Ê½Ã¿À. + + 3. x Å°¸¦ ´­·¯¼­ Áö¿ö¾ßÇÒ ±ÛÀÚ¸¦ Áö¿ì½Ê½Ã¿À. + + 4. 2¿¡¼­ 4±îÁö¸¦ ¹Ýº¹ÇÏ¿© ¹®ÀåÀÌ ¿Ã¹Ù¸£°Ô µÇµµ·Ï ÇÏ¿© º¸½Ê½Ã¿À. + +---> The ccow jumpedd ovverr thhe mooon. + + 5. ¹®ÀåÀÌ Á¤È®ÇØÁ³´Ù¸é, Lesson 1.4·Î °¡½Ê½Ã¿À. + +ÁÖÀÇ: ÀÌ ±æÀâÀ̸¦ º¸¸é¼­ ¿Ü¿ì·Á°í ÇÏÁö¸»°í, Á÷Á¢ »ç¿ëÇغ¸¸é¼­ ÀÍÈ÷±æ + ¹Ù¶ø´Ï´Ù. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.4: ÅؽºÆ® ÆíÁý - »ðÀÔ (INSERTION) + + + ** ¸í·É ¸ðµå¿¡¼­ i ¸¦ ´©¸£¸é ÅؽºÆ®¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. ** + + 1. Ä¿¼­¸¦ ù¹ø° ---> ·Î Ç¥½ÃµÈ ÁÙ·Î ¿òÁ÷ÀÔ´Ï´Ù. + + 2. ù¹ø° ÁÙÀ» µÎ¹ø° ÁÙ°ú ¶È°°ÀÌ ¸¸µé°ÍÀÔ´Ï´Ù. ÅؽºÆ®°¡ µé¾î°¡¾ßÇÒ + °÷ ´ÙÀ½ºÎÅÍ Ã¹¹ø° ±ÛÀÚ À§¿¡ Ä¿¼­¸¦ ¿Å°Ü ³õ½À´Ï´Ù. + + 3. i Å°¸¦ ´©¸¥ ÈÄ, ÇÊ¿äÇÑ ³»¿ëÀ» ÀÔ·ÂÇÕ´Ï´Ù. + + 4. ¼öÁ¤ÇÑ ÈÄ¿¡´Â ¸¦ ´­·¯¼­ ¸í·É ¸ðµå·Î µ¹¾Æ°©´Ï´Ù. + ¹®ÀåÀ» ¿Ã¹Ù¸£°Ô ¸¸µé±â À§ÇØ 2¿¡¼­ 4ÀÇ °úÁ¤À» ¹Ýº¹ÇÕ´Ï´Ù. + +---> There is text misng this . +---> There is some text missing from this line. + + 5. ÅؽºÆ®¸¦ »ðÀÔÇÏ´Â µ¥¿¡ Àͼ÷ÇØÁ³´Ù¸é, ¿ä¾àÀ» ºÁÁֽʽÿÀ. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 1 ¿ä¾à + + + 1. Ä¿¼­¸¦ ¿òÁ÷ÀÏ ¶§¿¡´Â È­»ìÇ¥ Å°³ª hjkl Å°¸¦ ÀÌ¿ëÇÕ´Ï´Ù. + h (¿ÞÂÊ) j (¾Æ·¡) k (À§) l (¿À¸¥ÂÊ) + + 2. ½© ÇÁ·ÒÇÁÆ®¿¡¼­ ºöÀ» ½ÃÀÛÇÏ·Á¸é vim FILENAME + + 3. ¼öÁ¤ÇÑ ³»¿ëÀ» ¹«½ÃÇÑ Ã¤·Î ºö¿¡¼­ ºüÁ®³ª°¡·Á¸é :q! + ÀúÀåÇÑ ÈÄ ºö¿¡¼­ ºüÁ®³ª°¡·Á¸é :wq + + 4. ¸í·É ¸ðµå¿¡¼­ Ä¿¼­°¡ À§Ä¡ÇÑ °÷ÀÇ ±ÛÀÚ¸¦ Áö¿ì·Á¸é x ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. + + 5. ¸í·É ¸ðµå¿¡¼­ Ä¿¼­°¡ À§Ä¡ÇÑ °÷¿¡ ÅؽºÆ®¸¦ »ðÀÔÇÏ·Á¸é + i ¸¦ ´©¸¥ ÈÄ ÅؽºÆ®¸¦ ÀÔ·ÂÇÏ°í ¸¦ ´©¸¨´Ï´Ù. + +Âü°í: ´Â ¸í·É ¸ðµå·Î µ¹¾Æ°¡´Â µ¥ ¾²¸ç, ¿øÄ¡ ¾Ê´Â ¸í·ÉÀ̳ª ¿ÏÀüÈ÷ ÀԷµÇÁö + ¾ÊÀº ¸í·ÉÀ» Ãë¼ÒÇÏ´Â µ¥¿¡µµ ¾¹´Ï´Ù. + +±×·³ Lesson 2¸¦ ½ÃÀÛÇսôÙ. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.1: »èÁ¦(DELETION) ¸í·É + + + ** ÇÑ ´Ü¾î¸¦ ³¡±îÁö Áö¿ì·Á¸é dw ¶ó°í Ä¡¸é µË´Ï´Ù. ** + + 1. Å°¸¦ ´­·¯¼­ È®½ÇÇÏ°Ô ¸í·É ¸ðµå·Î ºüÁ® ³ª¿É´Ï´Ù. + + 2. ¾Æ·¡¿¡ ---> ·Î Ç¥½ÃµÈ ÁÙ ±îÁö Ä¿¼­¸¦ ¿Å±é´Ï´Ù. + + 3. Áö¿ö¾ßÇÒ ´Ü¾îÀÇ Ã³À½À¸·Î Ä¿¼­¸¦ ¿Å±é´Ï´Ù. + + 4. dw ¶ó°í Ãļ­ ±× ´Ü¾î¸¦ Áö¿ó´Ï´Ù. + + ÁÖÀÇ: À§¿¡¼­ ¸»ÇÑ´ë·Î Çϸé È­¸éÀÇ ¸¶Áö¸· ÁÙ¿¡ dw ¶ó´Â ±ÛÀÚ°¡ Ç¥½ÃµË´Ï´Ù. + À߸ø ÃÆ´Ù¸é, ¸¦ ´­·¯¼­ ´Ù½Ã ½ÃÀÛÇϽʽÿÀ. + +---> There are a some words fun that don't belong paper in this sentence. + + 5. 3, 4¹ø °úÁ¤À» ´Ù½Ã ÇÏ¿© ¹®ÀåÀ» Á¤È®ÇÏ°Ô ¸¸µç µÚ Lesson 2.2·Î °¡½Ê½Ã¿À. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.2: ´Ù¸¥ »èÁ¦ ¸í·É + + ** d$ ¶ó°í Ä¡¸é ±× ÁÙ ³¡±îÁö Áö¿öÁý´Ï´Ù. ** + + 1. Å°¸¦ ´­·¯¼­ È®½ÇÇÏ°Ô ¸í·É ¸ðµå·Î ºüÁ® ³ª¿É´Ï´Ù. + + 2. ¾Æ·¡¿¡ ---> ·Î Ç¥½ÃµÈ ÁÙ ±îÁö Ä¿¼­¸¦ ¿Å±é´Ï´Ù. + + 3. ¿Ã¹Ù¸¥ ÁÙÀÇ ³¡À¸·Î Ä¿¼­¸¦ ¿Å±é´Ï´Ù. (ù¹ø°·Î ³ª¿À´Â . ´ÙÀ½ÀÔ´Ï´Ù.) + + 4. d$ ¶ó°í Ãļ­ ÁÙ ³¡±îÁö Áö¿ó´Ï´Ù. + +---> Somebody typed the end of this line twice. end of this line twice. + + + 5. ¾î¶² ÀÏÀÌ ÀϾ´ÂÁö ÀÌÇØÇϱâ À§ÇØ Lesson 2.3 À¸·Î °¡½Ê½Ã¿À. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.3: ¸í·É°ú Àû¿ë ´ë»ó¿¡ ´ëÇØ + + + »èÁ¦ ¸í·É dÀÇ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù. + + [Ƚ¼ö] d ´ë»ó ¶Ç´Â d [Ƚ¼ö] ´ë»ó + ¿©±â¼­ + Ƚ¼ö - ¸í·ÉÀ» ¸î ¹ø ¼öÇàÇÒ Áö (¿É¼Ç, ±âº»°ª=1). + d - Áö¿ì´Â ¸í·É + ´ë»ó - ¾Æ·¡¿¡ Á¦½ÃµÈ ´ë»ó¿¡ ´ëÇØ ¸í·ÉÀ» ¼öÇà + + Àû¿ë °¡´ÉÇÑ ´ë»óÀÇ Á¾·ù: + w - Ä¿¼­¿¡¼­ ±× ´Ü¾îÀÇ ³¡±îÁö (°ø¹é Æ÷ÇÔ.) + e - Ä¿¼­¿¡¼­ ±× ´Ü¾îÀÇ ³¡±îÁö (°ø¹éÀ» Æ÷ÇÔÇÏÁö ¾ÊÀ½.) + $ - Ä¿¼­¿¡¼­ ±× ÁÙÀÇ ³¡±îÁö + +Âü°í: È£±â½ÉÀÌ ÀÖ´Ù¸é, ¸í·É ¸ðµå¿¡¼­ ¸í·É ¾øÀÌ ´ë»óÀ» ÀÔ·ÂÇغ¸½Ê½Ã¿À. + À§¿¡¼­ À̾߱âÇÑ ´ë»óÀÇ ¸ñ·Ï¿¡ µû¶ó Ä¿¼­°¡ ¿òÁ÷ÀÌ°Ô µË´Ï´Ù. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.4: '¸í·É-´ë»ó' ¿¡ ´ëÇÑ ¿¹¿Ü + + + ** dd ¶ó°í Ä¡¸é ÁÙ Àüü¸¦ Áö¿ó´Ï´Ù. ** + + ÁÙ Àüü¸¦ Áö¿ì´Â ÀÏÀÌ Àæ±â ¶§¹®¿¡, Vi¸¦ µðÀÚÀÎ ÇÑ »ç¶÷µéÀº, °£´ÜÈ÷ d¸¦ + µÎ¹ø ¿¬´Þ¾Æ Ä¡¸é ÇÑ ÁÙÀ» Áö¿ï ¼ö ÀÖµµ·Ï ÇÏ¿´½À´Ï´Ù. + + 1. Ä¿¼­¸¦ ¾Æ·¡ ³ª¿Â ´Ü¶ôÀÇ µÎ¹ø° ÁÙ·Î °¡Á®°¡½Ê½Ã¿À. + 2. dd ¸¦ ÀÔ·ÂÇÏ¿© ±× ÁÙÀ» Áö¿ì½Ê½Ã¿À. + 3. ±×·± ´ÙÀ½ ³×¹ø° ÁÙ·Î °¡½Ê½Ã¿À. + 4. 2dd ¶ó°í ÀÔ·ÂÇÏ¿© µÎÁÙÀ» Áö¿ó´Ï´Ù. ( Ƚ¼ö-¸í·É-´ë»óÀ» ±â¾ïÇϼ¼¿ä. ) + + 1) Roses are red, + 2) Mud is fun, + 3) Violets are blue, + 4) I have a car, + 5) Clocks tell time, + 6) Sugar is sweet + 7) And so are you. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.5: Ãë¼Ò(UNDO) ¸í·É + + + ** u ¸¦ ´©¸£¸é ¸¶Áö¸· ¸í·ÉÀÌ Ãë¼ÒµÇ¸ç, U ´Â ÁÙ Àüü¸¦ ¼öÁ¤ÇÕ´Ï´Ù. ** + + 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ÁÙ·Î À̵¿ÇÑ ÈÄ Ã¹¹ø° À߸øµÈ ºÎºÐ À§·Î ¿Å±é´Ï´Ù. + 2. x ¸¦ ÀÔ·ÂÇÏ¿© ù¹ø° À߸øµÈ ±ÛÀÚ¸¦ Áö¿ó´Ï´Ù. + 3. ±×·³ ÀÌÁ¦ u ¸¦ ÀÔ·ÂÇÏ¿© ¸¶Áö¸·À¸·Î ¼öÇàµÈ ¸í·ÉÀ» Ãë¼ÒÇÕ´Ï´Ù. + 4. À̹ø¿¡´Â x ¸í·ÉÀ» ÀÌ¿ëÇÏ¿© ±× ÁÙÀÇ ¸ðµç ¿¡·¯¸¦ ¼öÁ¤Çغ¾½Ã´Ù. + 5. ´ë¹®ÀÚ U ¸¦ ´­·¯¼­ ±× ÁÙÀ» ¿ø·¡ »óÅ·Πµ¹·Á³õ¾Æ º¸½Ê½Ã¿À. + 6. À̹ø¿¡´Â u ¸¦ ¸î ¹ø ´­·¯¼­ U ¿Í ÀÌÀü ¸í·ÉÀ» Ãë¼ÒÇغ¾½Ã´Ù. + 7. CTRL-R (CTRL Å°¸¦ ´©¸¥ »óÅ¿¡¼­ RÀ» ´©¸£´Â °Í) À» ¸î ¹ø ´­·¯¼­ + ¸í·ÉÀ» ´Ù½Ã ½ÇÇàÇغ¾½Ã´Ù. (Ãë¼ÒÇÑ °ÍÀ» Ãë¼ÒÇÔ.) + +---> Fiix the errors oon thhis line and reeplace them witth undo. + + 8. ÀÌ ¸í·ÉÀº ¸Å¿ì À¯¿ëÇÕ´Ï´Ù. ±×·³ Lesson 2 ¿ä¾àÀ¸·Î ³Ñ¾î°¡µµ·Ï ÇսôÙ. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 2 ¿ä¾à + + + 1. Ä¿¼­°¡ À§Ä¡ÇÑ °÷ºÎÅÍ ´Ü¾îÀÇ ³¡±îÁö Áö¿ì·Á¸é: dw + + 2. Ä¿¼­°¡ À§Ä¡ÇÑ °÷ºÎÅÍ ÁÙ ³¡±îÁö Áö¿ì·Á¸é: d$ + + 3. ÁÙ Àüü¸¦ Áö¿ì·Á¸é: dd + + 4. ¸í·É ¸ðµå¿¡¼­ ³»¸®´Â ¸í·ÉÀÇ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù: + + [Ƚ¼ö] ¸í·É ´ë»ó ¶Ç´Â ¸í·É [Ƚ¼ö] ´ë»ó + ¿©±â¼­: + Ƚ¼ö - ±× ¸í·ÉÀ» ¸î ¹ø ¹Ýº¹ÇÒ °ÍÀΰ¡ + ¸í·É - ¾î¶² ¸í·ÉÀ» ³»¸± °ÍÀΰ¡ ( ¿¹¸¦ µé¾î, »èÁ¦ÀÎ °æ¿ì´Â d ) + ´ë»ó - ¸í·ÉÀÌ µ¿ÀÛÇÒ ´ë»ó, ¿¹¸¦ µé¾î w (´Ü¾î), $ (ÁÙÀÇ ³¡) µî. + + 5. ÀÌÀü ÇൿÀ» Ãë¼ÒÇÏ·Á¸é: u (¼Ò¹®ÀÚ u) + ÇÑ ÁÙ¿¡¼­ ¼öÁ¤ÇÑ °ÍÀ» ¸ðµÎ Ãë¼ÒÇÏ·Á¸é: U (´ë¹®ÀÚ U) + Ãë¼ÒÇÑ °ÍÀ» ´Ù½Ã ½ÇÇàÇÏ·Á¸é: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.1: ºÙÀ̱â(PUT) ¸í·É + + + ** p ¸¦ ÀÔ·ÂÇÏ¿© ¸¶Áö¸·À¸·Î Áö¿î ³»¿ëÀ» Ä¿¼­ µÚ¿¡ ºÙÀÔ´Ï´Ù. ** + + 1. ¾Æ·¡¿¡ ÀÖ´Â ¹®´ÜÀÇ Ã¹ ÁÙ·Î Ä¿¼­¸¦ ¿òÁ÷À̽ʽÿÀ. + + 2. dd ¸¦ ÀÔ·ÂÇÏ¿© ±× ÁÙÀ» Áö¿ö¼­ ºöÀÇ ¹öÆÛ¿¡ ÀúÀåÇÕ´Ï´Ù. + + 3. ¾Æ±î Áö¿î ÁÙÀÌ °¡¾ßÇÒ À§Ä¡ÀÇ *À­ÁÙ·Î* Ä¿¼­¸¦ ¿Å±é´Ï´Ù. + + 4. ¸í·É ¸ðµå¿¡¼­, p ¸¦ ÀÔ·ÂÇÏ¿© ±× ÁÙÀ» Á¦´ë·Î µÈ ÀÚ¸®·Î ¿Å±é´Ï´Ù. + + 5. 2¿¡¼­ 4¸¦ ¹Ýº¹ÇÏ¿© ¸ðµç ÁÙÀÇ ¼ø¼­¸¦ ¹Ù·Î ÀâÀ¸½Ê½Ã¿À. + + d) Can you learn too? + b) Violets are blue, + c) Intelligence is learned, + a) Roses are red, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.2: ġȯ(REPLACE) ¸í·É + + + ** Ä¿¼­ ¾Æ·¡ÀÇ ±ÛÀÚ Çϳª¸¦ ¹Ù²Ù·Á¸é, r À» ´©¸¥ ÈÄ ¹Ù²Ü ±ÛÀÚ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. ** + + 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ù ÁÙ·Î ¿Å±é´Ï´Ù. + + 2. Ä¿¼­¸¦ À߸øµÈ ù ºÎºÐÀ¸·Î ¿Å±é´Ï´Ù. + + 3. r À» ´©¸¥ ÈÄ, À߸øµÈ ºÎºÐÀ» °íÃÄ ¾µ ±ÛÀÚ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. + + 4. 2¿¡¼­ 3ÀÇ °úÁ¤À» ¹Ýº¹ÇÏ¿©, ù ÁÙÀÇ ¿À·ù¸¦ ¼öÁ¤ÇϽʽÿÀ. + +---> Whan this lime was tuoed in, someone presswd some wrojg keys! +---> When this line was typed in, someone pressed some wrong keys! + + 5. Lesson 3.2 ·Î À̵¿ÇսôÙ. + +ÁÖÀÇ: ¿Ü¿ìÁö ¸»°í, Á÷Á¢ Çغ¸¸é¼­ ÀÍÇô¾ß ÇÑ´Ù´Â °ÍÀ» ÀØÁö ¸¶½Ê½Ã¿À. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.3: º¯È¯(CHANGE) ¸í·É + + + ** ÇÑ ´Ü¾îÀÇ ÀϺγª Àüü¸¦ ¹Ù²Ù·Á¸é, cw ¸¦ Ä¡½Ê½Ã¿À. ** + + 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ùÁÙ·Î ¿Å±é´Ï´Ù. + + 2. Ä¿¼­¸¦ lubw ¿¡¼­ u À§¿¡ ¿Ã·Á³õ½À´Ï´Ù. + + 3. cw ¶ó°í ¸í·ÉÇÑ ÈÄ ´Ü¾î¸¦ Á¤È®ÇÏ°Ô ¼öÁ¤ÇÕ´Ï´Ù. (ÀÌ °æ¿ì, 'ine' ¸¦ Ĩ´Ï´Ù.) + + 4. ¸¦ ´©¸¥ ÈÄ ´ÙÀ½ ¿¡·¯·Î °©´Ï´Ù (¼öÁ¤µÇ¾î¾ßÇÒ Ã¹ ±ÛÀÚ·Î °©´Ï´Ù.) + + 5. 3¿¡¼­ 4ÀÇ °úÁ¤À» ¹Ýº¹ÇÏ¿© ù¹ø° ¹®ÀåÀ» µÎ¹ø° ¹®Àå°ú °°µµ·Ï ¸¸µì´Ï´Ù. + +---> This lubw has a few wptfd that mrrf changing usf the change command. +---> This line has a few words that need changing using the change command. + +cw ´Â ´Ü¾î¸¦ ġȯÇÏ´Â °Í »Ó¸¸ ¾Æ´Ï¶ó, ³»¿ëÀ» »ðÀÔÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù´Â °Í¿¡ +ÁÖÀÇÇսôÙ. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.4: c ¸¦ ÀÌ¿ëÇÑ ´Ù¸¥ º¯È¯ ¸í·É + + + ** º¯È¯ ¸í·ÉÀº »èÁ¦ÇÒ ¶§ ÀÌ¿ëÇÑ ´ë»ó¿¡ ´ëÇØ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ** + + 1. º¯È¯ ¸í·ÉÀº »èÁ¦¿Í µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î µ¿ÀÛÇÕ´Ï´Ù. Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù: + + [Ƚ¼ö] c ´ë»ó ¶Ç´Â c [Ƚ¼ö] ´ë»ó + + 2. Àû¿ë °¡´ÉÇÑ ´ë»ó ¿ª½Ã °°½À´Ï´Ù. w (´Ü¾î), $ (ÁÙÀÇ ³¡) µîÀÌ ÀÖ½À´Ï´Ù. + + 3. ---> ·Î Ç¥½ÃµÈ ùÁÙ·Î À̵¿ÇÕ´Ï´Ù. + + 4. ù ¿¡·¯ À§·Î Ä¿¼­¸¦ ¿Å±é´Ï´Ù. + + 5. c$ ¸¦ ÀÔ·ÂÇÏ¿©, ±× ÁÙÀÇ ³ª¸ÓÁö°¡ µÎ¹ø° ÁÙó·³ µÇµµ·Ï ¼öÁ¤ÇÑ ÈÄ ¸¦ + ´©¸£½Ê½Ã¿À. + +---> The end of this line needs some help to make it like the second. +---> The end of this line needs to be corrected using the c$ command. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 3 ¿ä¾à + + + 1. ÀÌ¹Ì Áö¿î ³»¿ëÀ» µÇµ¹¸®·Á¸é, p ¸¦ ´©¸£½Ê½Ã¿À. ÀÌ ¸í·ÉÀº Ä¿¼­ *´ÙÀ½¿¡* + Áö¿öÁø ³»¿ëÀ» ºÙÀÔ´Ï´Ù(PUT). (ÇÑ ÁÙÀ» Áö¿î °æ¿ì¿¡´Â Ä¿¼­ ´ÙÀ½ ÁÙ¿¡ + Áö¿öÁø ³»¿ëÀÌ ºÙ½À´Ï´Ù.) + + 2. Ä¿¼­ ¾Æ·¡ÀÇ ±ÛÀÚ¸¦ ġȯÇÏ·Á¸é(REPLACE), r À» ´©¸¥ ÈÄ ¿ø·¡ ±ÛÀÚ ´ë½Å + ¹Ù²Ù¾î ³ÖÀ» ±ÛÀÚ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. + + 3. º¯È¯ ¸í·É(CHANGE)Àº Ä¿¼­¿¡¼­ ºÎÅÍ ÁöÁ¤ÇÑ ´ë»óÀÇ ³¡±îÁö ¹Ù²Ü ¼ö ÀÖ´Â + ¸í·ÉÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, Ä¿¼­ À§Ä¡¿¡¼­ ´Ü¾îÀÇ ³¡±îÁö ¹Ù²Ù·Á¸é, cw ¸¦ + ÀÔ·ÂÇÏ¸é µÇ¸ç, c$ ´Â ÁÙ ³¡±îÁö ¹Ù²Ù´Â µ¥ ¾²ÀÔ´Ï´Ù. + + 4. º¯È¯ ¸í·ÉÀÇ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù: + + [Ƚ¼ö] c ´ë»ó ¶Ç´Â c [Ƚ¼ö] ´ë»ó + +°è¼ÓÇؼ­ ´ÙÀ½ Lesson À» ÁøÇàÇսôÙ. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.1: À§Ä¡¿Í ÆÄÀÏÀÇ »óÅ + + + ** CTRL-g ¸¦ ´©¸£¸é ÆÄÀÏ ³»¿¡¼­ÀÇ ÇöÀç À§Ä¡¿Í ÆÄÀÏÀÇ »óŸ¦ º¼ ¼ö ÀÖ½À´Ï´Ù. + SHIFT-G ¸¦ ´©¸£¸é ÆÄÀÏ ³»ÀÇ ÁÙ·Î À̵¿ÇÕ´Ï´Ù. ** + + ÁÖÀÇ: ¾Æ·¡ÀÇ ´Ü°è¸¦ µû¶óÇϱâ Àü¿¡, ÀÌ Lesson Àüü¸¦ ¸ÕÀú ÀÐÀ¸½Ê½Ã¿À. + + 1. CTRL Å°¸¦ ´©¸¥ »óÅ¿¡¼­ g ¸¦ ´©¸¨´Ï´Ù. ÆÄÀÏ À̸§°ú ÇöÀç À§Ä¡ÇÑ ÁÙÀÌ + Ç¥½ÃµÈ »óÅÂÁÙÀÌ È­¸é ¾Æ·¡¿¡ Ç¥½ÃµÉ °ÍÀÔ´Ï´Ù. 3¹ø° ´Ü°è¸¦ À§ÇØ ±× + ÁÙ ¹øÈ£¸¦ ±â¾ïÇÏ°í °è½Ê½Ã¿À. + + 2. SHIFT-G ¸¦ ´©¸£¸é ÆÄÀÏÀÇ ¸¶Áö¸·À¸·Î À̵¿ÇÕ´Ï´Ù. + + 3. ¾Æ±î ±â¾ïÇß´ø ÁÙ ¹øÈ£¸¦ ÀÔ·ÂÇÑ ÈÄ SHIFT-G ¸¦ ´©¸£½Ê½Ã¿À. ÀÌ·¸°Ô Çϸé + óÀ½¿¡ CTRL-g ¸¦ ´­·¶´ø Àå¼Ò·Î µÇµ¹¾Æ°¡°Ô µÉ °ÍÀÔ´Ï´Ù. + (¹øÈ£¸¦ ÀÔ·ÂÇÒ ¶§, ÀÌ°ÍÀº È­¸é¿¡ Ç¥½ÃµÇÁö ¾Ê½À´Ï´Ù.) + + 4. ÀÚ½ÅÀÌ »ý°å´Ù¸é, 1¿¡¼­ 3±îÁö¸¦ ½ÇÇàÇغ¸½Ê½Ã¿À. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.2: ã±â ¸í·É + + + ** / ¸¦ ´©¸¥ ÈÄ °Ë»öÇÒ ¹®±¸¸¦ ÀÔ·ÂÇϽʽÿÀ. ** + + 1. ¸í·É ¸ðµå¿¡¼­ / ¸¦ ÀÔ·ÂÇϽʽÿÀ. : ¸í·É¿¡¼­¿Í ¸¶Âù°¡Áö·Î, È­¸é ¾Æ·¡¿¡ + / ¿Í Ä¿¼­°¡ Ç¥½ÃµÉ °ÍÀÔ´Ï´Ù. + + 2. 'errroor' ¶ó°í Ä£ ÈÄ ¸¦ Ä¡½Ê½Ã¿À. ÀÌ ´Ü¾î¸¦ ãÀ¸·Á°í ÇÕ´Ï´Ù. + + 3. °°Àº ¹®±¸¸¦ ´Ù½Ã ãÀ¸·Á¸é, °£´ÜÈ÷ n À» ÀÔ·ÂÇϽʽÿÀ. + °°Àº ¹®±¸¸¦ ¹Ý´ë ¹æÇâÀ¸·Î ãÀ¸·Á¸é, Shift-N À» ÀÔ·ÂÇϽʽÿÀ. + + 4. ¹®±¸¸¦ ¿ª¹æÇâÀ¸·Î ãÀ¸·Á¸é, / ´ë½Å ? ¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù. + +---> "errroor" is not the way to spell error; errroor is an error. + +Âü°í: ã´Â Áß¿¡ ÆÄÀÏÀÇ ³¡¿¡ ´Ù´Ù¸£°Ô µÇ¸é, ÆÄÀÏÀÇ Ã³À½ºÎÅÍ ´Ù½Ã ã°Ô µË´Ï´Ù. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.3: °ýÈ£ÀÇ Â¦ ã±â + + + ** % ¸¦ ´­·¯¼­ ), ], } ÀÇ Â¦À» ã½À´Ï´Ù. ** + + 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ÁÙÀÇ (, [, { Áß Çϳª¿¡ °¡Á®´Ù ³õ½À´Ï´Ù. + + 2. % ¸¦ ÀÔ·ÂÇØ º¾½Ã´Ù. + + 3. Ä¿¼­°¡ ¦ÀÌ ¸Â´Â °ýÈ£·Î À̵¿ÇÒ °ÍÀÔ´Ï´Ù. + + 4. % ¸¦ ÀÔ·ÂÇÏ¿©, ÀÌÀü °ýÈ£·Î µÇµ¹¾Æ ¿É½Ã´Ù. + +---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + +Âü°í: ¦ÀÌ ¸ÂÁö ¾Ê´Â °ýÈ£°¡ ÀÖ´Â ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ ¶§¿¡ ¸Å¿ì À¯¿ëÇÕ´Ï´Ù! + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.4: ¿¡·¯¸¦ ¼öÁ¤ÇÏ´Â ¹æ¹ý + + + ** :s/old/new/g Çϸé 'old' ¸¦ 'new' ·Î ġȯ(SUBTITUTE)ÇÕ´Ï´Ù. ** + + 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ÁÙ¿¡ °¡Á®´Ù ³õ½À´Ï´Ù. + + 2. :s/thee/the ¸¦ ÀÔ·ÂÇÑ ÈÄ ¸¦ Ĩ´Ï´Ù. ÀÌ ¸í·ÉÀº ±× ÁÙ¿¡¼­ + óÀ½À¸·Î ¹ß°ßµÈ °Í¸¸ ¹Ù²Û´Ù´Â °Í¿¡ ÁÖÀÇÇϽʽÿÀ. + + 3. À̹ø¿¡´Â :s/thee/the/g ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. ÀÌ´Â ±× ÁÙ Àüü(globally)¸¦ + ġȯÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. + +---> thee best time to see thee flowers is in thee spring. + + 4. µÎ ÁÙ »çÀÌÀÇ ¸ðµç ¹®ÀÚ¿­¿¡ ´ëÇØ Ä¡È¯ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù, + :#,#s/old/new/g #,# ´Â µÎ ÁÙÀÇ ÁÙ¹øÈ£¸¦ ¶æÇÕ´Ï´Ù. + :%s/old/new/g ÆÄÀÏ Àüü¿¡¼­ ¹ß°ßµÈ ¸ðµç °ÍÀ» ġȯÇÏ´Â °æ¿ìÀÔ´Ï´Ù. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 4 ¿ä¾à + + + 1. CTRL-g ´Â ÆÄÀÏÀÇ »óÅÂ¿Í ÆÄÀÏ ³»¿¡¼­ÀÇ ÇöÀç À§Ä¡¸¦ Ç¥½ÃÇÕ´Ï´Ù. + SHIFT-G ´Â ÆÄÀÏÀÇ ³¡À¸·Î À̵¿ÇÕ´Ï´Ù. ÁÙ¹øÈ£¸¦ ÀÔ·ÂÇÑ ÈÄ SHIFT-G¸¦ + ÀÔ·ÂÇϸé, ±× ÁÙ·Î À̵¿ÇÕ´Ï´Ù. + + 2. / ¸¦ ÀÔ·ÂÇÑ ÈÄ ¹®±¸¸¦ ÀÔ·ÂÇÏ¸é ±× ¹®±¸¸¦ ¾Æ·§¹æÇâÀ¸·Î ã½À´Ï´Ù. + ? ¸¦ ÀÔ·ÂÇÑ ÈÄ ¹®±¸¸¦ ÀÔ·ÂÇϸé À­¹æÇâÀ¸·Î ã½À´Ï´Ù. + °Ë»ö ÈÄ, n À» ÀÔ·ÂÇÏ¸é °°Àº ¹æÇâÀ¸·Î ´ÙÀ½ ¹®±¸¸¦ ãÀ¸¸ç, + Shift-N À» ÀÔ·ÂÇÏ¸é ¹Ý´ë ¹æÇâÀ¸·Î ã½À´Ï´Ù. + + 3. Ä¿¼­°¡ (,),[,],{,} À§¿¡ ÀÖÀ» ¶§¿¡ % ¸¦ ÀÔ·ÂÇÏ¸é »óÀÀÇϴ ¦À» + ã¾Æ°©´Ï´Ù. + + 4. ¾î¶² ÁÙ¿¡ óÀ½ µîÀåÇÏ´Â old¸¦ new·Î ¹Ù²Ù·Á¸é :s/old/new + ÇÑ ÁÙ¿¡ µîÀåÇÏ´Â ¸ðµç old¸¦ new·Î ¹Ù²Ù·Á¸é :s/old/new/g + µÎ ÁÙ #,# »çÀÌ¿¡¼­ ġȯÀ» ÇÏ·Á¸é :#,#s/old/new/g + ÆÄÀÏ ³»ÀÇ ¸ðµç ¹®±¸¸¦ ġȯÇÏ·Á¸é :%s/old/new/g + ¹Ù²Ü ¶§¸¶´Ù È®ÀÎÀ» °ÅÄ¡·Á¸é 'c'¸¦ ºÙ¿©¼­ :%s/old/new/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.1: ¿ÜºÎ ¸í·É ½ÇÇàÇÏ´Â ¹æ¹ý + + + ** :! À» ÀÔ·ÂÇÑ ÈÄ ½ÇÇàÇÏ·Á´Â ¸í·ÉÀ» ÀÔ·ÂÇϽʽÿÀ. ** + + 1. Ä£¼÷ÇÑ ¸í·ÉÀÎ : ¸¦ ÀÔ·ÂÇϸé Ä¿¼­°¡ È­¸é ¾Æ·¡·Î À̵¿ÇÕ´Ï´Ù. ¸í·ÉÀ» + ÀÔ·ÂÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. + + 2. ÀÌÁ¦ ! (´À³¦Ç¥) ¸¦ ÀÔ·ÂÇϽʽÿÀ. ÀÌ·¸°Ô ÇÏ¸é ¿ÜºÎ ½© ¸í·ÉÀ» ½ÇÇàÇÒ + ¼ö ÀÖ½À´Ï´Ù. + + 3. ½ÃÇè»ï¾Æ ! ´ÙÀ½¿¡ ls ¸¦ ÀÔ·ÂÇÑ ÈÄ ¸¦ Ãĺ¸½Ê½Ã¿À. ½© ÇÁ·ÒÇÁÆ® + ¿¡¼­Ã³·³ µð·ºÅ丮ÀÇ ¸ñ·ÏÀÌ Ãâ·ÂµÉ °ÍÀÔ´Ï´Ù. ls °¡ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù¸é + :!dir À» ½ÃµµÇØ º¸½Ê½Ã¿À. + +Âü°í: ¾î¶² ¿ÜºÎ ¸í·Éµµ ÀÌ ¹æ¹ýÀ¸·Î ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. + +Âü°í: ¸ðµç : ¸í·ÉÀº ¸¦ ÃÄ¾ß ¸¶¹«¸® µË´Ï´Ù. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.2: º¸´Ù ÀÚ¼¼ÇÑ ÆÄÀÏ ÀúÀå + + + ** ¼öÁ¤µÈ ³»¿ëÀ» ÆÄÀÏ·Î ÀúÀåÇÏ·Á¸é, :w FILENAME ÇϽʽÿÀ. ** + + 1. :!dir ¶Ç´Â :!ls ¸¦ ÀÔ·ÂÇÏ¿© µð·ºÅ丮ÀÇ ¸®½ºÆ®¸¦ ¾ò¾î¿É´Ï´Ù. + À§ÀÇ ¸í·É ÈÄ ¸¦ ÃľßÇÑ´Ù´Â °ÍÀº ÀÌ¹Ì ¾Ë°í ÀÖÀ» °ÍÀÔ´Ï´Ù. + + 2. TEST ó·³ Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏ À̸§À» Çϳª °í¸£½Ê½Ã¿À. + + 3. ÀÌÁ¦ :w TEST ¶ó°í ÀÔ·ÂÇϽʽÿÀ. (TEST´Â ´ç½ÅÀÌ ¼±ÅÃÇÑ ÆÄÀÏ À̸§ÀÔ´Ï´Ù.) + + 4. ÀÌ·¸°Ô ÇÏ¸é ºö ±æÀâÀÌ ÆÄÀÏ Àüü¸¦ TEST¶ó´Â À̸§À¸·Î ÀúÀåÇÕ´Ï´Ù. + È®ÀÎÇÏ·Á¸é, :!dir À» ´Ù½Ã ÀÔ·ÂÇÏ¿©, µð·ºÅ丮¸¦ »ìÆ캸½Ê½Ã¿À. + +Âü°í: ºöÀ» Á¾·áÇÑ ÈÄ, ºöÀ» ´Ù½Ã ½ÇÇàÇÏ¿© TEST¶ó´Â ÆÄÀÏÀ» ¿­¸é, ±× ÆÄÀÏÀº + ÀúÀåÇßÀ» ¶§¿Í ¿Ïº®È÷ °°Àº º¹»çº»ÀÏ °ÍÀÔ´Ï´Ù. + + 5. ÀÌÁ¦ ±× ÆÄÀÏÀ» Áö¿ó½Ã´Ù. + (MS-DOS¿¡¼­): !del TEST + (Unix¿¡¼­): !rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.3: ¼±ÅÃÀûÀ¸·Î ÀúÀåÇÏ´Â ¸í·É + + + ** ÆÄÀÏÀÇ ÀϺθ¦ ÀúÀåÇÏ·Á¸é, :#,# w FILENAME ÇϽʽÿÀ. ** + + 1. ´Ù½Ã Çѹø, :!dir À̳ª :!ls ¸¦ ÀÔ·ÂÇÏ¿© µð·ºÅ丮ÀÇ ¸ñ·ÏÀ» ¹Þ¾Æ¿Â ÈÄ + TEST °°Àº ÀûÇÕÇÑ À̸§À» ¼±ÅÃÇÕ´Ï´Ù. + + 2. Ä¿¼­¸¦ ÀÌ ÆäÀÌÁöÀÇ Ã³À½À¸·Î ¿Å±ä ÈÄ, Ctrl-g ¸¦ ÀÔ·ÂÇÏ¿© ±× ÁÙÀÇ ÁÙ¹øÈ£¸¦ + ¾Ë¾Æ³À´Ï´Ù. ÀÌ ¹øÈ£¸¦ ±â¾ïÇϽʽÿÀ! + + 3. ÀÌÁ¦ ÀÌ ÆäÀÌÁöÀÇ ¸¶Áö¸·À¸·Î °¡¼­ Ctrl-g ¸¦ ´Ù½Ã ÀÔ·ÂÇϽʽÿÀ. ÀÌ ÁÙÀÇ + ÁÙ¹øÈ£ ¶ÇÇÑ ±â¾ïÇϽʽÿÀ! + + 4. ¾î¶² ¼½¼Ç¸¸ ÆÄÀÏ·Î ÀúÀåÇÏ·Á¸é, :#,# w TEST ¸¦ ÀÔ·ÂÇÏ¸é µË´Ï´Ù. ÀÌ ¶§ + #,# ´Â ¾Æ±î ±â¾ïÇß´ø ½ÃÀÛ°ú ³¡ ÁÙ¹øÈ£ ÀÔ´Ï´Ù. TEST´Â ÆÄÀÏ À̸§ÀÔ´Ï´Ù. + + 5. :!dir À» ÀÌ¿ëÇÏ¿© ÆÄÀÏÀÌ ¸¸µé¾îÁ³´ÂÁö È®ÀÎÇϽʽÿÀ. Áö¿ìÁö´Â ¸¶½Ê½Ã¿À. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.4: ÆÄÀÏ ÀоîµéÀ̱â, ÇÕÄ¡±â + + + ** ¾î¶² ÆÄÀÏÀÇ ³»¿ëÀ» »ðÀÔÇÏ·Á¸é, :r FILENAME ÇϽʽÿÀ ** + + 1. :!dir À» ÀÔ·ÂÇÏ¿© ¾Æ±î ¸¸µç TEST ÆÄÀÏÀÌ ±×´ë·Î ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ. + + 2. Ä¿¼­¸¦ ÀÌ ÆäÀÌÁöÀÇ Ã³À½À¸·Î ¿òÁ÷À̽ʽÿÀ. + +ÁÖÀÇ: 3¹ø° ´Ü°è¸¦ ½ÇÇàÇϸé, Lesson 5.3 À» º¸°Ô µÉ °ÍÀÔ´Ï´Ù. ±×·¸°Ô µÇ¸é + ÀÌ lessonÀ¸·Î ´Ù½Ã ³»·Á¿À½Ê½Ã¿À. + + 3. ÀÌÁ¦ TEST ÆÄÀÏÀ» ÀоîµéÀԽôÙ. :r TEST ¸í·ÉÀ» »ç¿ëÇϽʽÿÀ. TEST ´Â + ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù. + +Âü°í: ÀоîµéÀÎ ÆÄÀÏÀº Ä¿¼­°¡ À§Ä¡ÇÑ ÁöÁ¡¿¡¼­ºÎÅÍ ³õÀÌ°Ô µË´Ï´Ù. + + 4. ÆÄÀÏÀÌ Àоîµé¿©Áø °ÍÀ» È®ÀÎÇϱâ À§ÇØ, µÚ·Î À̵¿Çؼ­ ±âÁ¸ ¹öÀü°ú ÆÄÀÏ¿¡¼­ + ÀоîµéÀÎ ¹öÀü, ÀÌ·¸°Ô Lesson 5.3 ÀÌ µÎ¹ø ¹Ýº¹µÇ¾úÀ½À» È®ÀÎÇϽʽÿÀ. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 5 ¿ä¾à + + + 1. :!command ¸¦ ÀÌ¿ëÇÏ¿© ¿ÜºÎ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù. + + À¯¿ëÇÑ ¿¹: + (MS-DOS) (Unix) + :!dir :!ls - µð·ºÅ丮ÀÇ ¸ñ·ÏÀ» º¸¿©ÁØ´Ù. + :!del FILENAME :!rm FILENAME - FILENAMEÀ̶ó´Â ÆÄÀÏÀ» Áö¿î´Ù. + + 2. :w FILENAME Çϸé ÇöÀç ºö¿¡¼­ »ç¿ëÇÏ´Â ÆÄÀÏÀ» FILENAMEÀ̶ó´Â À̸§À¸·Î + µð½ºÅ©¿¡ ÀúÀåÇÕ´Ï´Ù. + + 3. :#,#w FILENAME Çϸé #ºÎÅÍ #±îÁöÀÇ ÁÙÀ» FILENAMEÀ̶ó´Â ÆÄÀÏ·Î ÀúÀåÇÕ´Ï´Ù. + + 4. :r FILENAME Àº µð½ºÅ©¿¡¼­ FILENAMEÀ̶ó´Â ÆÄÀÏÀ» ºÒ·¯µé¿©¼­ Ä¿¼­ À§Ä¡ + µÚ¿¡ ÇöÀç ÆÄÀÏÀ» Áý¾î³Ö½À´Ï´Ù. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.1: »õ ÁÙ ¿­±â(OPEN) ¸í·É + + + ** o ¸¦ ´©¸£¸é Ä¿¼­ ¾Æ·¡¿¡ ÁÙÀ» ¸¸µé°í ÆíÁý ¸ðµå°¡ µË´Ï´Ù. ** + + 1. ¾Æ·¡¿¡ ---> ·Î Ç¥½ÃµÈ ÁÙ·Î Ä¿¼­¸¦ ¿Å±â½Ê½Ã¿À. + + 2. o (¼Ò¹®ÀÚ)¸¦ Ãļ­ Ä¿¼­ *¾Æ·¡¿¡* ÁÙÀ» Çϳª ¿©½Ê½Ã¿À. ÆíÁý ¸ðµå°¡ µË´Ï´Ù. + Insert mode. + + 3. ---> ·Î Ç¥½ÃµÈ ÁÙÀ» º¹»çÇÑ ÈÄ ¸¦ ´­·¯¼­ ÆíÁý ¸ðµå¿¡¼­ ³ª¿À½Ê½Ã¿À. + +---> After typing o the cursor is placed on the open line in Insert mode. + + 4. Ä¿¼­ *À§¿¡* ÁÙÀ» Çϳª ¸¸µå·Á¸é, ¼Ò¹®ÀÚ o ´ë½Å ´ë¹®ÀÚ O ¸¦ Ä¡¸é µË´Ï´Ù. + ¾Æ·¡ ÀÖ´Â ÁÙ¿¡ ´ëÇØ ÀÌ ¸í·ÉÀ» ³»·Áº¸½Ê½Ã¿À. +Open up a line above this by typing Shift-O while the cursor is on this line. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.2: Ãß°¡(APPEND) ¸í·É + + + ** a ¸¦ ´©¸£¸é Ä¿¼­ *´ÙÀ½¿¡* ±ÛÀ» ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. ** + + 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ù¹ø° ÁÙÀÇ ³¡À¸·Î ¿Å±é´Ï´Ù. ¸í·É ¸ðµå¿¡¼­ + $ ¸¦ ÀÌ¿ëÇϽʽÿÀ. + + 2. ¼Ò¹®ÀÚ a ¸¦ Ä¿¼­ ¾Æ·¡ ±ÛÀÚ *´ÙÀ½*¿¡ ±ÛÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. + (´ë¹®ÀÚ A´Â ±× ÁÙÀÇ ³¡¿¡ Ãß°¡ÇÕ´Ï´Ù.) + +Âü°í: ±×·¸°Ô ÇÏ½Ã¸é °íÀÛ ÁÙÀÇ ³¡¿¡ Ãß°¡¸¦ Çϱâ À§ÇØ i¸¦ ´©¸£°í, Ä¿¼­ ¾Æ·¡¿¡ + ÀÖ´ø ±ÛÀÚ¸¦ ¹Ýº¹ÇÏ°í, ±ÛÀ» ³¢¿ö³Ö°í, ¸¦ ´­·¯ ¸í·É ¸ðµå·Î µ¹¾Æ¿Í¼­, + Ä¿¼­¸¦ ¿À¸¥ÂÊÀ¸·Î ¿Å±â°í ¸¶Áö¸·À¸·Î x±îÁö ´­·¯¾ß ÇÏ´Â ¹ø°Å·Î¿òÀ» ÇÇÇÏ½Ç + ¼ö ÀÖ½À´Ï´Ù. + + 3. ÀÌÁ¦ ù ÁÙÀ» ¿Ï¼ºÇϽʽÿÀ. Ãß°¡ ¸í·ÉÀº ÅؽºÆ®°¡ ÀԷµǴ À§Ä¡ ¿Ü¿¡´Â + ÆíÁý ¸ðµå¿Í ¿ÏÀüÈ÷ °°´Ù´Â °ÍÀ» À¯³äÇϽʽÿÀ. + +---> This line will allow you to practice +---> This line will allow you to practice appending text to the end of a line. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.3: ġȯ(REPLACE) ÀÇ ´Ù¸¥ ¹öÀü + + + ** ´ë¹®ÀÚ R À» ÀÔ·ÂÇϸé Çϳª ÀÌ»óÀÇ ±ÛÀÚ¸¦ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ** + + 1. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ ù¹ø° ÁÙ·Î ¿Å±â½Ê½Ã¿À. + + 2. Ä¿¼­¸¦ ---> ·Î Ç¥½ÃµÈ µÎ¹ø° ÁÙ°ú ´Ù¸¥ ù¹ø° ´Ü¾î À§·Î ¿Å±â½Ê½Ã¿À. + ('last' ÀÔ´Ï´Ù.) + + 3. R À» ÀÔ·ÂÇÑ ÈÄ Ã¹¹ø° ÁÙÀÇ ¿¹Àü ÅؽºÆ® À§¿¡ »õ·Î¿î ±ÛÀ» ÀÔ·ÂÇÏ¿© + ³ª¸ÓÁö ³»¿ëÀÌ µÎ¹ø° ÁÙ°ú °°¾ÆÁöµµ·Ï ¹Ù²ß½Ã´Ù. + +---> To make the first line the same as the last on this page use the keys. +---> To make the first line the same as the second, type R and the new text. + + 4. ¸¦ ´­·¯¼­ ³ª°¡¸é, ¹Ù²îÁö ¾ÊÀº ÅؽºÆ®´Â ±×´ë·Î ³²°Ô µË´Ï´Ù. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.4: ¿É¼Ç ¼³Á¤(SET) + + ** ã±â³ª ¹Ù²Ù±â¿¡¼­ ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ¾ø¾Ö±â À§ÇØ ¿É¼ÇÀ» ¼³Á¤ÇÕ´Ï´Ù ** + + 1. ´ÙÀ½À» ÀÔ·ÂÇÏ¿© 'ignore' ¸¦ ãÀ¸½Ê½Ã¿À: + /ignore + n Å°¸¦ ÀÌ¿ëÇÏ¿© ¿©·¯¹ø ¹Ýº¹ÇϽʽÿÀ. + + 2. 'ic' (´ë¼Ò¹®ÀÚ ±¸º° ¾ÈÇÔ, Ignore case) ¿É¼ÇÀ» ¼³Á¤ÇϽʽÿÀ: + :set ic + + 3. n Å°¸¦ ´­·¯¼­ 'ignore' ¸¦ ´Ù½Ã ã¾Æº¸½Ê½Ã¿À. + n Å°¸¦ °è¼Ó ´­·¯¼­ ¿©·¯¹ø ãÀ¸½Ê½Ã¿À. + + 4. 'hlsearch' ¿Í 'incsearch' ¿É¼ÇÀ» ¼³Á¤ÇսôÙ. + :set hls is + + 5. ã±â ¸í·ÉÀ» ´Ù½Ã ÀÔ·ÂÇÏ¿©, ¾î¶² ÀÏÀÌ ÀϾ´ÂÁö È®ÀÎÇØ º¸½Ê½Ã¿À: + /ignore + + 6. ãÀº ³»¿ëÀÌ °­Á¶(HIGHLIGHT)µÈ °ÍÀ» ¾ø¾Ö·Á¸é, ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù: + :nohlsearch +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 6 ¿ä¾à + + + 1. o ¸¦ ÀÔ·ÂÇϸé Ä¿¼­ *¾Æ·¡¿¡* ÇÑ ÁÙÀÌ ¿­¸®¸ç, Ä¿¼­´Â ÆíÁý ¸ðµå·Î + ¿­¸° ÁÙ À§¿¡ À§Ä¡ÇÏ°Ô µË´Ï´Ù. + ´ë¹®ÀÚ O ¸¦ ÀÔ·ÂÇϸé Ä¿¼­°¡ ÀÖ´Â ÁÙÀÇ *À§·Î* »õ ÁÙÀ» ¿­°Ô µË´Ï´Ù. + + 2. a ¸¦ ÀÔ·ÂÇϸé Ä¿¼­ *´ÙÀ½¿¡* ±ÛÀ» ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. + ´ë¹®ÀÚ A ¸¦ ÀÔ·ÂÇϸé ÀÚµ¿À¸·Î ±× ÁÙÀÇ ³¡¿¡ ±ÛÀÚ¸¦ Ãß°¡ÇÏ°Ô µË´Ï´Ù. + + 3. ´ë¹®ÀÚ R À» ÀÔ·ÂÇÏ¸é ¸¦ ´­·¯¼­ ³ª°¡±â Àü±îÁö ¹Ù²Ù±â ¸ðµå°¡ µË´Ï´Ù. + + 4. ":set xxx" ¸¦ Çϸé "xxx" ¿É¼ÇÀÌ ¼³Á¤µË´Ï´Ù. + + + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 7: ¿Â¶óÀÎ µµ¿ò¸» ¸í·É + + + ** ¿Â¶óÀÎ µµ¿ò¸» ½Ã½ºÅÛ »ç¿ëÇϱâ ** + + ºöÀº Æø ³ÐÀº ¿Â¶óÀÎ µµ¿ò¸» ½Ã½ºÅÛÀ» Á¦°øÇÕ´Ï´Ù. µµ¿ò¸»À» º¸·Á¸é, + ´ÙÀ½ ¼¼°¡Áö Áß Çϳª¸¦ ½ÃµµÇغ¸½Ê½Ã¿À: + - Å°¸¦ ´©¸¥´Ù. (Å°°¡ ÀÖ´Â °æ¿ì) + - Å°¸¦ ´©¸¥´Ù. (Å°°¡ ÀÖ´Â °æ¿ì) + - :help ¶ó°í ÀÔ·ÂÇÑ´Ù. + + µµ¿ò¸» âÀ» ´ÝÀ¸·Á¸é :q ¶ó°í ÀÔ·ÂÇϽʽÿÀ. + + ":help" ¶ó´Â ¸í·É¿¡ ÀÎÀÚ¸¦ ÁÖ¸é ¾î¶² ÁÖÁ¦¿¡ °üÇÑ µµ¿ò¸»À» ãÀ» ¼ö ÀÖ½À´Ï´Ù. + ´ÙÀ½ ¸í·ÉÀ» ³»·Á º¸½Ê½Ã¿À. ( Å°¸¦ ´©¸£´Â °ÍÀ» ÀØÁö ¸¶½Ê½Ã¿À.) + + :help w + :help c_ l 키는 오른쪽에 있으며, 오른쪽으로 + j 움직입니다. + v j 키는 아래방향 화살표처럼 생겼습니다. + + 1. 익숙해질 때까지 커서를 스크린 상에서 움직여 보십시오. + + 2. 아래 방향키 (j)를 반복입력이 될 때까지 누르고 계십시오. +---> 이제 다음 lesson으로 가는 방법을 알게 되었습니다. + + 3. 아래 방향키를 이용하여, Lesson 1.2 로 가십시오. + +참고: 원하지 않는 무언가가 입력이 되었다면, 를 눌러서, 명령 모드로 + 돌아가십시오. 그 후에 원하는 명령을 다시 입력하십시오. + +참고: 커서키 또한 작동할 것입니다. 하지만 hjkl에 익숙해지면, 커서키보다 + 훨씬 빠르게 이동할 수 있을 것입니다. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.2: 빔을 시작하고 끝내기 + + + !! 주의: 아래 있는 단계를 실행하기 전에, 이 lesson 전체를 읽으십시오!! + + 1. 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다. + + 2. 다음과 같이 입력합니다: :q! + +---> 이렇게 하면, 바뀐 내용을 *저장하지 않고* 편집기를 빠져나갑니다. + 저장한 후 빠져나가려면 다음과 같이 입력합니다: + :wq + + 3. 쉘 프롬프트가 보인다면, 다시 길잡이로 돌아오기 위해 다음과 같이 + 입력합니다. + vimtutor + 또는 다음과 같을 수도 있습니다. + vim tutor.ko + +---> 'vim' 은 빔 편집기로 들어가는 것을 뜻하며, 'tutor.ko'는 편집하려는 + 파일을 뜻합니다. + + 4. 위에서 이야기한 단계를 기억하였으며, 확신이 서면, 1에서 3까지를 + 수행하여 편집기를 나갔다가 다시 들어와보십시오. 그 후 커서를 아래로 + 움직여 Lesson 1.3 으로 가십시오. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.3: 텍스트 편집 - 지우기 + + +** 명령 모드에서 x 를 누르면 커서가 위치한 곳의 글자를 지울 수 있습니다. ** + + 1. ----> 로 표시된 곳으로 커서를 옮겨보십시오. + + 2. 오타를 수정하기 위해, 커서를 지울 글자 위로 움직여 보십시오. + + 3. x 키를 눌러서 지워야할 글자를 지우십시오. + + 4. 2에서 4까지를 반복하여 문장이 올바르게 되도록 하여 보십시오. + +---> The ccow jumpedd ovverr thhe mooon. + + 5. 문장이 정확해졌다면, Lesson 1.4로 가십시오. + +주의: 이 길잡이를 보면서 외우려고 하지말고, 직접 사용해보면서 익히길 + 바랍니다. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.4: 텍스트 편집 - 삽입 (INSERTION) + + + ** 명령 모드에서 i 를 누르면 텍스트를 입력할 수 있습니다. ** + + 1. 커서를 첫번째 ---> 로 표시된 줄로 움직입니다. + + 2. 첫번째 줄을 두번째 줄과 똑같이 만들것입니다. 텍스트가 들어가야할 + 곳 다음부터 첫번째 글자 위에 커서를 옮겨 놓습니다. + + 3. i 키를 누른 후, 필요한 내용을 입력합니다. + + 4. 수정한 후에는 를 눌러서 명령 모드로 돌아갑니다. + 문장을 올바르게 만들기 위해 2에서 4의 과정을 반복합니다. + +---> There is text misng this . +---> There is some text missing from this line. + + 5. 텍스트를 삽입하는 데에 익숙해졌다면, 요약을 봐주십시오. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 1 요약 + + + 1. 커서를 움직일 때에는 화살표 키나 hjkl 키를 이용합니다. + h (왼쪽) j (아래) k (위) l (오른쪽) + + 2. 쉘 프롬프트에서 빔을 시작하려면 vim FILENAME + + 3. 수정한 내용을 무시한 채로 빔에서 빠져나가려면 :q! + 저장한 후 빔에서 빠져나가려면 :wq + + 4. 명령 모드에서 커서가 위치한 곳의 글자를 지우려면 x 를 입력합니다. + + 5. 명령 모드에서 커서가 위치한 곳에 텍스트를 삽입하려면 + i 를 누른 후 텍스트를 입력하고 를 누릅니다. + +참고: 는 명령 모드로 돌아가는 데 쓰며, 원치 않는 명령이나 완전히 입력되지 + 않은 명령을 취소하는 데에도 씁니다. + +그럼 Lesson 2를 시작합시다. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.1: 삭제(DELETION) 명령 + + + ** 한 단어를 끝까지 지우려면 dw 라고 치면 됩니다. ** + + 1. 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다. + + 2. 아래에 ---> 로 표시된 줄 까지 커서를 옮깁니다. + + 3. 지워야할 단어의 처음으로 커서를 옮깁니다. + + 4. dw 라고 쳐서 그 단어를 지웁니다. + + 주의: 위에서 말한대로 하면 화면의 마지막 줄에 dw 라는 글자가 표시됩니다. + 잘못 쳤다면, 를 눌러서 다시 시작하십시오. + +---> There are a some words fun that don't belong paper in this sentence. + + 5. 3, 4번 과정을 다시 하여 문장을 정확하게 만든 뒤 Lesson 2.2로 가십시오. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.2: 다른 삭제 명령 + + ** d$ 라고 치면 그 줄 끝까지 지워집니다. ** + + 1. 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다. + + 2. 아래에 ---> 로 표시된 줄 까지 커서를 옮깁니다. + + 3. 올바른 줄의 끝으로 커서를 옮깁니다. (첫번째로 나오는 . 다음입니다.) + + 4. d$ 라고 쳐서 줄 끝까지 지웁니다. + +---> Somebody typed the end of this line twice. end of this line twice. + + + 5. 어떤 일이 일어났는지 이해하기 위해 Lesson 2.3 으로 가십시오. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.3: 명령과 적용 대상에 대해 + + + 삭제 명령 d의 형식은 다음과 같습니다. + + [횟수] d 대상 또는 d [횟수] 대상 + 여기서 + 횟수 - 명령을 몇 번 수행할 지 (옵션, 기본값=1). + d - 지우는 명령 + 대상 - 아래에 제시된 대상에 대해 명령을 수행 + + 적용 가능한 대상의 종류: + w - 커서에서 그 단어의 끝까지 (공백 포함.) + e - 커서에서 그 단어의 끝까지 (공백을 포함하지 않음.) + $ - 커서에서 그 줄의 끝까지 + +참고: 호기심이 있다면, 명령 모드에서 명령 없이 대상을 입력해보십시오. + 위에서 이야기한 대상의 목록에 따라 커서가 움직이게 됩니다. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.4: '명령-대상' 에 대한 예외 + + + ** dd 라고 치면 줄 전체를 지웁니다. ** + + 줄 전체를 지우는 일이 잦기 때문에, Vi를 디자인 한 사람들은, 간단히 d를 + 두번 연달아 치면 한 줄을 지울 수 있도록 하였습니다. + + 1. 커서를 아래 나온 단락의 두번째 줄로 가져가십시오. + 2. dd 를 입력하여 그 줄을 지우십시오. + 3. 그런 다음 네번째 줄로 가십시오. + 4. 2dd 라고 입력하여 두줄을 지웁니다. ( 횟수-명령-대상을 기억하세요. ) + + 1) Roses are red, + 2) Mud is fun, + 3) Violets are blue, + 4) I have a car, + 5) Clocks tell time, + 6) Sugar is sweet + 7) And so are you. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.5: 취소(UNDO) 명령 + + + ** u 를 누르면 마지막 명령이 취소되며, U 는 줄 전체를 수정합니다. ** + + 1. 커서를 ---> 로 표시된 줄로 이동한 후 첫번째 잘못된 부분 위로 옮깁니다. + 2. x 를 입력하여 첫번째 잘못된 글자를 지웁니다. + 3. 그럼 이제 u 를 입력하여 마지막으로 수행된 명령을 취소합니다. + 4. 이번에는 x 명령을 이용하여 그 줄의 모든 에러를 수정해봅시다. + 5. 대문자 U 를 눌러서 그 줄을 원래 상태로 돌려놓아 보십시오. + 6. 이번에는 u 를 몇 번 눌러서 U 와 이전 명령을 취소해봅시다. + 7. CTRL-R (CTRL 키를 누른 상태에서 R을 누르는 것) 을 몇 번 눌러서 + 명령을 다시 실행해봅시다. (취소한 것을 취소함.) + +---> Fiix the errors oon thhis line and reeplace them witth undo. + + 8. 이 명령은 매우 유용합니다. 그럼 Lesson 2 요약으로 넘어가도록 합시다. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 2 요약 + + + 1. 커서가 위치한 곳부터 단어의 끝까지 지우려면: dw + + 2. 커서가 위치한 곳부터 줄 끝까지 지우려면: d$ + + 3. 줄 전체를 지우려면: dd + + 4. 명령 모드에서 내리는 명령의 형식은 다음과 같습니다: + + [횟수] 명령 대상 또는 명령 [횟수] 대상 + 여기서: + 횟수 - 그 명령을 몇 번 반복할 것인가 + 명령 - 어떤 명령을 내릴 것인가 ( 예를 들어, 삭제인 경우는 d ) + 대상 - 명령이 동작할 대상, 예를 들어 w (단어), $ (줄의 끝) 등. + + 5. 이전 행동을 취소하려면: u (소문자 u) + 한 줄에서 수정한 것을 모두 취소하려면: U (대문자 U) + 취소한 것을 다시 실행하려면: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.1: 붙이기(PUT) 명령 + + + ** p 를 입력하여 마지막으로 지운 내용을 커서 뒤에 붙입니다. ** + + 1. 아래에 있는 문단의 첫 줄로 커서를 움직이십시오. + + 2. dd 를 입력하여 그 줄을 지워서 빔의 버퍼에 저장합니다. + + 3. 아까 지운 줄이 가야할 위치의 *윗줄로* 커서를 옮깁니다. + + 4. 명령 모드에서, p 를 입력하여 그 줄을 제대로 된 자리로 옮깁니다. + + 5. 2에서 4를 반복하여 모든 줄의 순서를 바로 잡으십시오. + + d) Can you learn too? + b) Violets are blue, + c) Intelligence is learned, + a) Roses are red, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.2: 치환(REPLACE) 명령 + + + ** 커서 아래의 글자 하나를 바꾸려면, r 을 누른 후 바꿀 글자를 입력합니다. ** + + 1. 커서를 ---> 로 표시된 첫 줄로 옮깁니다. + + 2. 커서를 잘못된 첫 부분으로 옮깁니다. + + 3. r 을 누른 후, 잘못된 부분을 고쳐 쓸 글자를 입력합니다. + + 4. 2에서 3의 과정을 반복하여, 첫 줄의 오류를 수정하십시오. + +---> Whan this lime was tuoed in, someone presswd some wrojg keys! +---> When this line was typed in, someone pressed some wrong keys! + + 5. Lesson 3.2 로 이동합시다. + +주의: 외우지 말고, 직접 해보면서 익혀야 한다는 것을 잊지 마십시오. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.3: 변환(CHANGE) 명령 + + + ** 한 단어의 일부나 전체를 바꾸려면, cw 를 치십시오. ** + + 1. 커서를 ---> 로 표시된 첫줄로 옮깁니다. + + 2. 커서를 lubw 에서 u 위에 올려놓습니다. + + 3. cw 라고 명령한 후 단어를 정확하게 수정합니다. (이 경우, 'ine' 를 칩니다.) + + 4. 를 누른 후 다음 에러로 갑니다 (수정되어야할 첫 글자로 갑니다.) + + 5. 3에서 4의 과정을 반복하여 첫번째 문장을 두번째 문장과 같도록 만듭니다. + +---> This lubw has a few wptfd that mrrf changing usf the change command. +---> This line has a few words that need changing using the change command. + +cw 는 단어를 치환하는 것 뿐만 아니라, 내용을 삽입할 수 있도록 한다는 것에 +주의합시다. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.4: c 를 이용한 다른 변환 명령 + + + ** 변환 명령은 삭제할 때 이용한 대상에 대해 적용할 수 있습니다. ** + + 1. 변환 명령은 삭제와 동일한 방식으로 동작합니다. 형식은 다음과 같습니다: + + [횟수] c 대상 또는 c [횟수] 대상 + + 2. 적용 가능한 대상 역시 같습니다. w (단어), $ (줄의 끝) 등이 있습니다. + + 3. ---> 로 표시된 첫줄로 이동합니다. + + 4. 첫 에러 위로 커서를 옮깁니다. + + 5. c$ 를 입력하여, 그 줄의 나머지가 두번째 줄처럼 되도록 수정한 후 를 + 누르십시오. + +---> The end of this line needs some help to make it like the second. +---> The end of this line needs to be corrected using the c$ command. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 3 요약 + + + 1. 이미 지운 내용을 되돌리려면, p 를 누르십시오. 이 명령은 커서 *다음에* + 지워진 내용을 붙입니다(PUT). (한 줄을 지운 경우에는 커서 다음 줄에 + 지워진 내용이 붙습니다.) + + 2. 커서 아래의 글자를 치환하려면(REPLACE), r 을 누른 후 원래 글자 대신 + 바꾸어 넣을 글자를 입력합니다. + + 3. 변환 명령(CHANGE)은 커서에서 부터 지정한 대상의 끝까지 바꿀 수 있는 + 명령입니다. 예를 들어, 커서 위치에서 단어의 끝까지 바꾸려면, cw 를 + 입력하면 되며, c$ 는 줄 끝까지 바꾸는 데 쓰입니다. + + 4. 변환 명령의 형식은 다음과 같습니다: + + [횟수] c 대상 또는 c [횟수] 대상 + +계속해서 다음 Lesson 을 진행합시다. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.1: 위치와 파일의 상태 + + + ** CTRL-g 를 누르면 파일 내에서의 현재 위치와 파일의 상태를 볼 수 있습니다. + SHIFT-G 를 누르면 파일 내의 줄로 이동합니다. ** + + 주의: 아래의 단계를 따라하기 전에, 이 Lesson 전체를 먼저 읽으십시오. + + 1. CTRL 키를 누른 상태에서 g 를 누릅니다. 파일 이름과 현재 위치한 줄이 + 표시된 상태줄이 화면 아래에 표시될 것입니다. 3번째 단계를 위해 그 + 줄 번호를 기억하고 계십시오. + + 2. SHIFT-G 를 누르면 파일의 마지막으로 이동합니다. + + 3. 아까 기억했던 줄 번호를 입력한 후 SHIFT-G 를 누르십시오. 이렇게 하면 + 처음에 CTRL-g 를 눌렀던 장소로 되돌아가게 될 것입니다. + (번호를 입력할 때, 이것은 화면에 표시되지 않습니다.) + + 4. 자신이 생겼다면, 1에서 3까지를 실행해보십시오. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.2: 찾기 명령 + + + ** / 를 누른 후 검색할 문구를 입력하십시오. ** + + 1. 명령 모드에서 / 를 입력하십시오. : 명령에서와 마찬가지로, 화면 아래에 + / 와 커서가 표시될 것입니다. + + 2. 'errroor' 라고 친 후 를 치십시오. 이 단어를 찾으려고 합니다. + + 3. 같은 문구를 다시 찾으려면, 간단히 n 을 입력하십시오. + 같은 문구를 반대 방향으로 찾으려면, Shift-N 을 입력하십시오. + + 4. 문구를 역방향으로 찾으려면, / 대신 ? 를 이용하면 됩니다. + +---> "errroor" is not the way to spell error; errroor is an error. + +참고: 찾는 중에 파일의 끝에 다다르게 되면, 파일의 처음부터 다시 찾게 됩니다. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.3: 괄호의 짝 찾기 + + + ** % 를 눌러서 ), ], } 의 짝을 찾습니다. ** + + 1. 커서를 ---> 로 표시된 줄의 (, [, { 중 하나에 가져다 놓습니다. + + 2. % 를 입력해 봅시다. + + 3. 커서가 짝이 맞는 괄호로 이동할 것입니다. + + 4. % 를 입력하여, 이전 괄호로 되돌아 옵시다. + +---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + +참고: 짝이 맞지 않는 괄호가 있는 프로그램을 디버깅할 때에 매우 유용합니다! + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.4: 에러를 수정하는 방법 + + + ** :s/old/new/g 하면 'old' 를 'new' 로 치환(SUBTITUTE)합니다. ** + + 1. 커서를 ---> 로 표시된 줄에 가져다 놓습니다. + + 2. :s/thee/the 를 입력한 후 를 칩니다. 이 명령은 그 줄에서 + 처음으로 발견된 것만 바꾼다는 것에 주의하십시오. + + 3. 이번에는 :s/thee/the/g 를 입력합니다. 이는 그 줄 전체(globally)를 + 치환한다는 것을 의미합니다. + +---> thee best time to see thee flowers is in thee spring. + + 4. 두 줄 사이의 모든 문자열에 대해 치환하려면 다음과 같이 합니다, + :#,#s/old/new/g #,# 는 두 줄의 줄번호를 뜻합니다. + :%s/old/new/g 파일 전체에서 발견된 모든 것을 치환하는 경우입니다. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 4 요약 + + + 1. CTRL-g 는 파일의 상태와 파일 내에서의 현재 위치를 표시합니다. + SHIFT-G 는 파일의 끝으로 이동합니다. 줄번호를 입력한 후 SHIFT-G를 + 입력하면, 그 줄로 이동합니다. + + 2. / 를 입력한 후 문구를 입력하면 그 문구를 아랫방향으로 찾습니다. + ? 를 입력한 후 문구를 입력하면 윗방향으로 찾습니다. + 검색 후, n 을 입력하면 같은 방향으로 다음 문구를 찾으며, + Shift-N 을 입력하면 반대 방향으로 찾습니다. + + 3. 커서가 (,),[,],{,} 위에 있을 때에 % 를 입력하면 상응하는 짝을 + 찾아갑니다. + + 4. 어떤 줄에 처음 등장하는 old를 new로 바꾸려면 :s/old/new + 한 줄에 등장하는 모든 old를 new로 바꾸려면 :s/old/new/g + 두 줄 #,# 사이에서 치환을 하려면 :#,#s/old/new/g + 파일 내의 모든 문구를 치환하려면 :%s/old/new/g + 바꿀 때마다 확인을 거치려면 'c'를 붙여서 :%s/old/new/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.1: 외부 명령 실행하는 방법 + + + ** :! 을 입력한 후 실행하려는 명령을 입력하십시오. ** + + 1. 친숙한 명령인 : 를 입력하면 커서가 화면 아래로 이동합니다. 명령을 + 입력할 수 있게 됩니다. + + 2. 이제 ! (느낌표) 를 입력하십시오. 이렇게 하면 외부 쉘 명령을 실행할 + 수 있습니다. + + 3. 시험삼아 ! 다음에 ls 를 입력한 후 를 쳐보십시오. 쉘 프롬프트 + 에서처럼 디렉토리의 목록이 출력될 것입니다. ls 가 동작하지 않는다면 + :!dir 을 시도해 보십시오. + +참고: 어떤 외부 명령도 이 방법으로 실행할 수 있습니다. + +참고: 모든 : 명령은 를 쳐야 마무리 됩니다. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.2: 보다 자세한 파일 저장 + + + ** 수정된 내용을 파일로 저장하려면, :w FILENAME 하십시오. ** + + 1. :!dir 또는 :!ls 를 입력하여 디렉토리의 리스트를 얻어옵니다. + 위의 명령 후 를 쳐야한다는 것은 이미 알고 있을 것입니다. + + 2. TEST 처럼 존재하지 않는 파일 이름을 하나 고르십시오. + + 3. 이제 :w TEST 라고 입력하십시오. (TEST는 당신이 선택한 파일 이름입니다.) + + 4. 이렇게 하면 빔 길잡이 파일 전체를 TEST라는 이름으로 저장합니다. + 확인하려면, :!dir 을 다시 입력하여, 디렉토리를 살펴보십시오. + +참고: 빔을 종료한 후, 빔을 다시 실행하여 TEST라는 파일을 열면, 그 파일은 + 저장했을 때와 완벽히 같은 복사본일 것입니다. + + 5. 이제 그 파일을 지웁시다. + (MS-DOS에서): !del TEST + (Unix에서): !rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.3: 선택적으로 저장하는 명령 + + + ** 파일의 일부를 저장하려면, :#,# w FILENAME 하십시오. ** + + 1. 다시 한번, :!dir 이나 :!ls 를 입력하여 디렉토리의 목록을 받아온 후 + TEST 같은 적합한 이름을 선택합니다. + + 2. 커서를 이 페이지의 처음으로 옮긴 후, Ctrl-g 를 입력하여 그 줄의 줄번호를 + 알아냅니다. 이 번호를 기억하십시오! + + 3. 이제 이 페이지의 마지막으로 가서 Ctrl-g 를 다시 입력하십시오. 이 줄의 + 줄번호 또한 기억하십시오! + + 4. 어떤 섹션만 파일로 저장하려면, :#,# w TEST 를 입력하면 됩니다. 이 때 + #,# 는 아까 기억했던 시작과 끝 줄번호 입니다. TEST는 파일 이름입니다. + + 5. :!dir 을 이용하여 파일이 만들어졌는지 확인하십시오. 지우지는 마십시오. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.4: 파일 읽어들이기, 합치기 + + + ** 어떤 파일의 내용을 삽입하려면, :r FILENAME 하십시오 ** + + 1. :!dir 을 입력하여 아까 만든 TEST 파일이 그대로 있는지 확인하십시오. + + 2. 커서를 이 페이지의 처음으로 움직이십시오. + +주의: 3번째 단계를 실행하면, Lesson 5.3 을 보게 될 것입니다. 그렇게 되면 + 이 lesson으로 다시 내려오십시오. + + 3. 이제 TEST 파일을 읽어들입시다. :r TEST 명령을 사용하십시오. TEST 는 + 파일의 이름입니다. + +참고: 읽어들인 파일은 커서가 위치한 지점에서부터 놓이게 됩니다. + + 4. 파일이 읽어들여진 것을 확인하기 위해, 뒤로 이동해서 기존 버전과 파일에서 + 읽어들인 버전, 이렇게 Lesson 5.3 이 두번 반복되었음을 확인하십시오. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 5 요약 + + + 1. :!command 를 이용하여 외부 명령을 실행합니다. + + 유용한 예: + (MS-DOS) (Unix) + :!dir :!ls - 디렉토리의 목록을 보여준다. + :!del FILENAME :!rm FILENAME - FILENAME이라는 파일을 지운다. + + 2. :w FILENAME 하면 현재 빔에서 사용하는 파일을 FILENAME이라는 이름으로 + 디스크에 저장합니다. + + 3. :#,#w FILENAME 하면 #부터 #까지의 줄을 FILENAME이라는 파일로 저장합니다. + + 4. :r FILENAME 은 디스크에서 FILENAME이라는 파일을 불러들여서 커서 위치 + 뒤에 현재 파일을 집어넣습니다. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.1: 새 줄 열기(OPEN) 명령 + + + ** o 를 누르면 커서 아래에 줄을 만들고 편집 모드가 됩니다. ** + + 1. 아래에 ---> 로 표시된 줄로 커서를 옮기십시오. + + 2. o (소문자)를 쳐서 커서 *아래에* 줄을 하나 여십시오. 편집 모드가 됩니다. + Insert mode. + + 3. ---> 로 표시된 줄을 복사한 후 를 눌러서 편집 모드에서 나오십시오. + +---> After typing o the cursor is placed on the open line in Insert mode. + + 4. 커서 *위에* 줄을 하나 만드려면, 소문자 o 대신 대문자 O 를 치면 됩니다. + 아래 있는 줄에 대해 이 명령을 내려보십시오. +Open up a line above this by typing Shift-O while the cursor is on this line. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.2: 추가(APPEND) 명령 + + + ** a 를 누르면 커서 *다음에* 글을 입력할 수 있습니다. ** + + 1. 커서를 ---> 로 표시된 첫번째 줄의 끝으로 옮깁니다. 명령 모드에서 + $ 를 이용하십시오. + + 2. 소문자 a 를 커서 아래 글자 *다음*에 글을 추가할 수 있습니다. + (대문자 A는 그 줄의 끝에 추가합니다.) + +참고: 그렇게 하시면 고작 줄의 끝에 추가를 하기 위해 i를 누르고, 커서 아래에 + 있던 글자를 반복하고, 글을 끼워넣고, 를 눌러 명령 모드로 돌아와서, + 커서를 오른쪽으로 옮기고 마지막으로 x까지 눌러야 하는 번거로움을 피하실 + 수 있습니다. + + 3. 이제 첫 줄을 완성하십시오. 추가 명령은 텍스트가 입력되는 위치 외에는 + 편집 모드와 완전히 같다는 것을 유념하십시오. + +---> This line will allow you to practice +---> This line will allow you to practice appending text to the end of a line. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.3: 치환(REPLACE) 의 다른 버전 + + + ** 대문자 R 을 입력하면 하나 이상의 글자를 바꿀 수 있습니다. ** + + 1. 커서를 ---> 로 표시된 첫번째 줄로 옮기십시오. + + 2. 커서를 ---> 로 표시된 두번째 줄과 다른 첫번째 단어 위로 옮기십시오. + ('last' 입니다.) + + 3. R 을 입력한 후 첫번째 줄의 예전 텍스트 위에 새로운 글을 입력하여 + 나머지 내용이 두번째 줄과 같아지도록 바꿉시다. + +---> To make the first line the same as the last on this page use the keys. +---> To make the first line the same as the second, type R and the new text. + + 4. 를 눌러서 나가면, 바뀌지 않은 텍스트는 그대로 남게 됩니다. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.4: 옵션 설정(SET) + + ** 찾기나 바꾸기에서 대소문자 구분을 없애기 위해 옵션을 설정합니다 ** + + 1. 다음을 입력하여 'ignore' 를 찾으십시오: + /ignore + n 키를 이용하여 여러번 반복하십시오. + + 2. 'ic' (대소문자 구별 안함, Ignore case) 옵션을 설정하십시오: + :set ic + + 3. n 키를 눌러서 'ignore' 를 다시 찾아보십시오. + n 키를 계속 눌러서 여러번 찾으십시오. + + 4. 'hlsearch' 와 'incsearch' 옵션을 설정합시다. + :set hls is + + 5. 찾기 명령을 다시 입력하여, 어떤 일이 일어나는지 확인해 보십시오: + /ignore + + 6. 찾은 내용이 강조(HIGHLIGHT)된 것을 없애려면, 다음과 같이 입력합니다: + :nohlsearch +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 6 요약 + + + 1. o 를 입력하면 커서 *아래에* 한 줄이 열리며, 커서는 편집 모드로 + 열린 줄 위에 위치하게 됩니다. + 대문자 O 를 입력하면 커서가 있는 줄의 *위로* 새 줄을 열게 됩니다. + + 2. a 를 입력하면 커서 *다음에* 글을 입력할 수 있습니다. + 대문자 A 를 입력하면 자동으로 그 줄의 끝에 글자를 추가하게 됩니다. + + 3. 대문자 R 을 입력하면 를 눌러서 나가기 전까지 바꾸기 모드가 됩니다. + + 4. ":set xxx" 를 하면 "xxx" 옵션이 설정됩니다. + + + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LESSON 7: 온라인 도움말 명령 + + + ** 온라인 도움말 시스템 사용하기 ** + + 빔은 폭 넓은 온라인 도움말 시스템을 제공합니다. 도움말을 보려면, + 다음 세가지 중 하나를 시도해보십시오: + - 키를 누른다. (키가 있는 경우) + - 키를 누른다. (키가 있는 경우) + - :help 라고 입력한다. + + 도움말 창을 닫으려면 :q 라고 입력하십시오. + + ":help" 라는 명령에 인자를 주면 어떤 주제에 관한 도움말을 찾을 수 있습니다. + 다음 명령을 내려 보십시오. ( 키를 누르는 것을 잊지 마십시오.) + + :help w + :help c_ l-tasten er til høyre og flytter til høyre. + j j-tasten ser ut som en pil som peker nedover. + v + 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. + + 2. Hold inne nedovertasten (j) til den repeterer. + Nå vet du hvordan du beveger deg til neste leksjon. + + 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. + +Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til + normalmodus. Skriv deretter kommandoen du ønsket på nytt. + +Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til + å bevege markøren mye raskere når du er blitt vant til det. Helt sant! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.2: AVSLUTTE VIM + + + !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! + + 1. Trykk -tasten (for å forsikre deg om at du er i normalmodus). + + 2. Skriv: :q! . + Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. + + 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne + innføringen. Den er: vimtutor + + 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å + avslutte og starte editoren på nytt. + +MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen + få leksjoner vil du lære hvordan du lagrer forandringene til en fil. + + 5. Flytt markøren ned til leksjon 1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.3: REDIGERING AV TEKST -- SLETTING + + + ** Trykk x for å slette tegnet under markøren. ** + + 1. Flytt markøren til den første linjen merket med --->. + + 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som + skal slettes. + + 3. Trykk tasten x for å slette det uønskede tegnet. + + 4. Repeter punkt 2 til 4 til setningen er lik den som er under. + +---> Hessstennnn brrråsnudddde ii gaaata. +---> Hesten bråsnudde i gata. + + 5. Nå som linjen er korrekt, gå til leksjon 1.4. + +MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men + bruk dem helt til de sitter. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING + + + ** Trykk i for å sette inn tekst. ** + + 1. Flytt markøren til den første linjen som er merket med --->. + + 2. For å gjøre den første linjen lik den andre, flytt markøren til den står + på tegnet ETTER posisjonen der teksten skal settes inn. + + 3. Trykk i og skriv inn teksten som mangler. + + 4. Etterhvert som hver feil er fikset, trykk for å returnere til + normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. + +---> Det er tkst som mnglr . +---> Det er ganske mye tekst som mangler her. + + 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen + nedenfor. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL + + + ** Trykk A for å legge til tekst. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. + Det har ikke noe å si hvor markøren er plassert på den linjen. + + 2. Trykk A og skriv inn det som skal legges til. + + 3. Når teksten er lagt til, trykk for å returnere til normalmodusen. + + 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og + 3 for å reparere denne setningen. + +---> Det mangler noe tekst p + Det mangler noe tekst på denne linjen. +---> Det mangler også litt tek + Det mangler også litt tekst på denne linjen. + + 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.6: REDIGERE EN FIL + + + ** Bruk :wq for å lagre en fil og avslutte. ** + + !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! + + 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! + + 2. Skriv denne kommandoen på kommandolinja: vim tutor + «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila + som du vil redigere. Bruk en fil som kan forandres. + + 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. + + 4. Lagre filen med forandringene og avslutt Vim med: :wq + + 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. + + 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 1 + + + 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. + h (venstre) j (ned) k (opp) l (høyre) + + 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN + + 3. For å avslutte Vim, skriv: :q! for å forkaste endringer. + ELLER skriv: :wq for å lagre forandringene. + + 4. For å slette tegnet under markøren, trykk: x + + 5. For å sette inn eller legge til tekst, trykk: + i skriv innsatt tekst sett inn før markøren + A skriv tillagt tekst legg til på slutten av linjen + +MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket + og delvis fullført kommando. + + Nå kan du gå videre til leksjon 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.1: SLETTEKOMMANDOER + + + ** Trykk dw for å slette et ord. ** + + 1. Trykk for å være sikker på at du er i normalmodus. + + 2. Flytt markøren til den første linjen nedenfor merket --->. + + 3. Flytt markøren til begynnelsen av ordet som skal slettes. + + 4. Trykk dw og ordet vil forsvinne. + +MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når + du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet + tegn enn d har du skrevet noe feil; trykk og start på nytt. + +---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. +---> Det er tre ord som ikke hører hjemme i denne setningen. + + 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå + deretter til leksjon 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.2: FLERE SLETTEKOMMANDOER + + + ** Trykk d$ for å slette til slutten av linjen. ** + + 1. Trykk for å være sikker på at du er i normalmodus. + + 2. Flytt markøren til linjen nedenfor merket --->. + + 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). + + 4. Trykk d$ for å slette alt til slutten av linjen. + +---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. + + 5. Gå til leksjon 2.3 for å forstå hva som skjer. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.3: OM OPERATORER OG BEVEGELSER + + + Mange kommandoer som forandrer teksten er laget ut i fra en operator og en + bevegelse. Formatet for en slettekommando med sletteoperatoren d er: + + d bevegelse + + Der: + d - er sletteoperatoren. + bevegelse - er hva operatoren vil opere på (listet nedenfor). + + En kort liste med bevegelser: + w - til starten av det neste ordet, UNNTATT det første tegnet. + e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. + $ - til slutten av linjen, INKLUDERT det siste tegnet. + + Ved å skrive de vil altså alt fra markøren til slutten av ordet bli + slettet. + +MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil + markøren flyttes som spesifisert. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE + + + ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** + + 1. Flytt markøren til starten av linjen markert ---> nedenfor. + + 2. Skriv 2w for å flytte markøren to ord framover. + + 3. Skriv 3e for å flytte markøren framover til slutten av det tredje + ordet. + + 4. Skriv 0 (null) for å flytte til starten av linjen. + + 5. Repeter steg 2 og 3 med forskjellige tall. + +---> Dette er en linje med noen ord som du kan bevege deg rundt på. + + 6. Gå videre til leksjon 2.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER + + + ** Et tall sammen med en operator repeterer den så mange ganger. ** + + I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du + inn antall før bevegelsen for å slette mer: + d nummer bevegelse + + 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert + med --->. + + 2. Skriv 2dw for å slette de to ordene med store bokstaver. + + 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende + ordene som har store bokstaver. + +---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. + +MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å + bruke bevegelsen uten en operator. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.6: OPERERE PÅ LINJER + + + ** Trykk dd for å slette en hel linje. ** + + På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at + det vil være lettere å rett og slett trykke to d-er for å slette en linje. + + 1. Flytt markøren til den andre linjen i verset nedenfor. + 2. Trykk dd å slette linjen. + 3. Flytt deretter til den fjerde linjen. + 4. Trykk 2dd for å slette to linjer. + +---> 1) Roser er røde, +---> 2) Gjørme er gøy, +---> 3) Fioler er blå, +---> 4) Jeg har en bil, +---> 5) Klokker viser tiden, +---> 6) Druer er søte +---> 7) Og du er likeså. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.7: ANGRE-KOMMANDOEN + + + ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** + + 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den + første feilen. + 2. Trykk x for å slette det første uønskede tegnet. + 3. Trykk så u for å angre den siste utførte kommandoen. + 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . + 5. Trykk nå en stor U for å sette linjen tilbake til det den var + originalt. + 6. Trykk u noen ganger for å angre U og foregående kommandoer. + 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen + ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). + +---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. + + 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av + leksjon 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 2 + + + 1. For å slette fra markøren fram til det neste ordet, trykk: dw + 2. For å slette fra markøren til slutten av en linje, trykk: d$ + 3. For å slette en hel linje, trykk: dd + + 4. For å repetere en bevegelse, sett et nummer foran: 2w + 5. Formatet for en forandringskommando er: + operator [nummer] bevegelse + der: + operator - hva som skal gjøres, f.eks. d for å slette + [nummer] - et valgfritt antall for å repetere bevegelsen + bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), + $ (til slutten av linjen) og så videre. + + 6. For å gå til starten av en linje, bruk en null: 0 + + 7. For å angre tidligere endringer, skriv: u (liten u) + For å angre alle forandringer på en linje, skriv: U (stor U) + For å omgjøre angringen, trykk: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.1: «LIM INN»-KOMMANDOEN + + + ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** + + 1. Flytt markøren til den første linjen med ---> nedenfor. + + 2. Trykk dd for å slette linjen og lagre den i et Vim-register. + + 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. + + 4. Trykk p for å legge linjen under markøren. + + 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. + +---> d) Kan du også lære? +---> b) Fioler er blå, +---> c) Intelligens må læres, +---> a) Roser er røde, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.2: «ERSTATT»-KOMMANDOEN + + + ** Trykk rx for å erstatte tegnet under markøren med x. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. + + 2. Flytt markøren så den står oppå den første feilen. + + 3. Trykk r og deretter tegnet som skal være der. + + 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. + +---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! +---> Da denne linjen ble skrevet, var det noen som trykket feile taster! + + 5. Gå videre til leksjon 3.2. + +MERK: Husk at du bør lære ved å BRUKE, ikke pugge. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.3: «FORANDRE»-OPERATOREN + + + ** For å forandre til slutten av et ord, trykk ce . ** + + 1. Flytt markøren til den første linjen nedenfor som er merket --->. + + 2. Plasser markøren på u i «lubjwr». + + 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). + + 4. Trykk og gå til det neste tegnet som skal forandres. + + 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. + +---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. +---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. + +Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c + + + ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** + + 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: + + c [nummer] bevegelse + + 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en + linje). + + 3. Gå til den første linjen nedenfor som er merket --->. + + 4. Flytt markøren til den første feilen. + + 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . + +---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. +---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. + +MERK: Du kan bruke slettetasten for å rette feil mens du skriver. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 3 + + + 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette + limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet + vil den bli limt inn på linjen under markøren). + + 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som + du vil ha der. + + 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen + tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten + av ordet, c$ for å forandre til slutten av linjen. + + 4. Formatet for «forandre» er: + + c [nummer] bevegelse + +Nå kan du gå til neste leksjon. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS + + ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. + Trykk G for å gå til en spesifikk linje i filen. ** + + Merk: Les hele leksjonen før du utfører noen av punktene! + + 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding + vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i + filen. Husk linjenummeret for bruk i steg 3. + +Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette + skjer når «ruler»-valget er satt (forklart i leksjon 6). + + 2. Trykk G for å gå til bunnen av filen. + Skriv gg for å gå til begynnelsen av filen. + + 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg + tilbake til linjen du var på da du først trykket CTRL-G. + + 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.2: SØKEKOMMANDOEN + + ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** + + 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og + markøren kommer til syne på bunnen av skjermen i likhet med + «:»-kommandoene. + + 2. Skriv «feeeiil» og trykk . Dette er teksten du vil lete etter. + + 3. For å finne neste forekomst av søkestrengen, trykk n . + For å lete etter samme søketeksten i motsatt retning, trykk N . + + 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . + + 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens + du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I + går framover. + +---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. +Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt + hvis «wrapscan»-valget er resatt. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.3: FINN SAMSVARENDE PARENTESER + + + ** Trykk % for å finne en samsvarende ), ] eller } . ** + + 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. + + 2. Trykk % . + + 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. + + 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. + + 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. + +---> Dette ( er en testlinje med (, [ ] og { } i den )). + +Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert + antall parenteser! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.4: ERSTATT-KOMMANDOEN + + + ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** + + 1. Flytt markøren til linjen nedenfor som er merket med --->. + + 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare + forandrer den første forekomsten av «deen» på linjen. + + 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global + erstatning på linjen og erstatter alle forekomster av «deen» på linjen. + +---> deen som kan kaste deen tyngste steinen lengst er deen beste + + 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, + skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for + linjeområdet erstatningen skal gjøres. + Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. + Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og + deretter spørre om teksten skal erstattes eller + ikke. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 4 + + + 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. + G går til slutten av filen. + nummer G går til det linjenummeret. + gg går til den første linjen. + + 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. + Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. + Etter et søk kan du trykke n for å finne neste forekomst i den samme + retningen eller N for å lete i motsatt retning. + CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. + + 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den + som samsvarer. + + 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny + Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g + Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g + Erstatte alle forekomster i en fil: :%s/gammel/ny/g + For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO + + + ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** + + 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av + skjermen. Dette lar deg skrive en kommandolinjekommando. + + 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst + ekstern kommando. + + 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil + nå få en liste over filene i katalogen, akkurat som om du hadde kjørt + kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis + «ls» ikke virker. + +MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med + parametere. + +MERK: Alle «:»-kommandoer må avsluttes med . Fra dette punktet er det + ikke alltid vi nevner det. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.2: MER OM LAGRING AV FILER + + + ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** + + 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du + vet allerede at du må trykke etter dette. + + 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . + + 3. Skriv :w TEST (der TEST er filnavnet du velger). + + 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å + sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av + katalogen. + +Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», + ville filen vært en eksakt kopi av innføringen da du lagret den. + + 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende + operativsystem, eller :!del TEST hvis du bruker MS-DOS. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES + + + ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** + + 1. Flytt markøren til denne linjen. + + 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke + til at teksten blir markert. + + 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. + + 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller + at du ser :'<,'>w TEST før du trykker Enter. + + 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller :!ls + for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. + +MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for + å gjøre det valgte området større eller mindre. Deretter kan du bruke en + operator for å gjøre noe med teksten. For eksempel sletter d teksten. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER + + + ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** + + 1. Plasser markøren like over denne linjen. + +MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter + NED for å se denne leksjonen igjen. + + 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på + filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. + + 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av + leksjon 5.3, originalen og denne versjonen. + +MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls + leser utdataene av ls-kommandoen og legger dem nedenfor markøren. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 5 + + + 1. :!kommando utfører en ekstern kommandio. + + Noen nyttige eksempler er: + (MS-DOS) (Unix) + :!dir :!ls - List filene i katalogen. + :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. + + 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . + + 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen + FILNAVN. + + 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. + + 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor + markørposisjonen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN + + + ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til + innsettingsmodus ** + + 1. Flytt markøren til linjen nedenfor merket --->. + + 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i + innsettingsmodus. + + 3. Skriv litt tekst og trykk for å gå ut av innsettingsmodusen. + +---> Etter at o er skrevet blir markøren plassert på den tomme linjen. + + 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O + istedenfor en liten o . Prøv dette på linjen nedenfor. + +---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.2: «LEGG TIL»-KOMMANDOEN + + + ** Skriv a for å legge til tekst ETTER markøren. ** + + 1. Flytt markøren til starten av linjen merket ---> nedenfor. + + 2. Trykk e til markøren er på slutten av «li». + + 3. Trykk a (liten a) for å legge til tekst ETTER markøren. + + 4. Fullfør ordet sånn som på linjen nedenfor. Trykk for å gå ut av + innsettingsmodusen. + + 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og + 4. + +---> Denne li lar deg øve på å leg til tek på en linje. +---> Denne linjen lar deg øve på å legge til tekst på en linje. + +Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste + forskjellen er hvor tegnene blir satt inn. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ + + + ** Skriv en stor R for å erstatte mer enn ett tegn. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren + til begynnelsen av den første «xxx»-en. + + 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så + det erstatter xxx. + + 3. Trykk for å gå ut av erstatningsmodusen. Legg merke til at resten + av linjen forblir uforandret. + + 4. Repeter stegene for å erstatte den gjenværende xxx. + +---> Ved å legge 123 til xxx får vi xxx. +---> Ved å legge 123 til 456 får vi 579. + +MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives + erstatter et eksisterende tegn. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.4: KOPIERE OG LIME INN TEKST + + + ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** + + 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». + + 2. Gå inn i visuell modus med v og flytt markøren til like før «første». + + 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. + + 4. Flytt markøren til slutten av den neste linjen: j$ + + 5. Trykk p for å lime inn teksten. Trykk deretter: a andre . + + 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til + slutten av den neste linjen med j$ og legg inn teksten der med p . + +---> a) Dette er det første valget. + b) + +Merk: Du kan også bruke y som en operator; yw kopierer ett ord. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.5: SETT VALG + + + ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** + + 1. Let etter «ignore» ved å skrive: /ignore + Repeter flere ganger ved å trykke n . + + 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic + + 3. Søk etter «ignore» igjen ved å trykke n . + Legg merke til at både «Ignore» og «IGNORE» blir funnet. + + 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is + + 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore + + 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic + +Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch +Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk + \c i uttrykket: /ignore\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 6 + + 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i + innsettingsmodus. + Trykk O for å åpne en linje OVER markøren. + + 2. Skriv a for å sette inn tekst ETTER markøren. + Skriv A for å sette inn tekst etter slutten av linjen. + + 3. Kommandoen e går til slutten av et ord. + + 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. + + 5. Ved å trykke R går du inn i erstatningsmodus helt til trykkes. + + 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: + «ic» «ignorecase» ignorer store/små bokstaver under søk + «is» «incsearch» vis delvise treff for en søketekst + «hls» «hlsearch» uthev alle søketreff + + 7. Legg til «no» foran valget for å slå det av: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.1: FÅ HJELP + + + ** Bruk det innebygde hjelpesystemet. ** + + Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av + disse måtene: + - Trykk Hjelp-tasten (hvis du har en) + - Trykk F1-tasten (hvis du har en) + - Skriv :help + + Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. + Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet + Skriv :q for å lukke hjelpevinduet. + + Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til + «:help»-kommandoen. Prøv disse (ikke glem å trykke ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.2: LAG ET OPPSTARTSSKRIPT + + + ** Slå på funksjoner i Vim ** + + Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av + som standard. For å begynne å bruke flere funksjoner må du lage en + «vimrc»-fil. + + 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: + :e ~/.vimrc for Unix + :e $VIM/_vimrc for MS Windows + + 2. Les inn eksempelfilen for «vimrc»: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Lagre filen med: + :w + + Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til + alle dine foretrukne oppsett i denne «vimrc»-filen. + For mer informasjon, skriv :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.3: FULLFØRING + + + ** Kommandolinjefullføring med CTRL-D og ** + + 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp + + 2. Se hvilke filer som er i katalogen: :!ls eller :!dir + + 3. Skriv starten på en kommando: :e + + 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med + «e». + + 5. Trykk og Vim vil fullføre kommandonavnet til «:edit». + + 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL + + 7. Trykk . Vim vil fullføre navnet (hvis det er unikt). + +MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og + . Det er spesielt nyttig for bruk sammen med :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 7 + + + 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. + + 2. Skriv :help kommando for å få hjelp om kommando . + + 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. + + 4. Trykk :q for å lukke hjelpevinduet. + + 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. + + 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige + fullføringer. Trykk for å bruke en fullføring. + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Her slutter innføringen i Vim. Den var ment som en rask oversikt over + editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på + langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen + ved å skrive :help user-manual . + + For videre lesing og studier, kan denne boken anbefales: + «Vim - Vi Improved» av Steve Oualline + Utgiver: New Riders + Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for + nybegynnere. Inneholder mange eksempler og illustrasjoner. + Se http://iccf-holland.org/click5.html + + Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: + «Learning the Vi Editor» av Linda Lamb + Utgiver: O'Reilly & Associates Inc. + Det er en god bok for å få vite omtrent hva som helst om Vi. + Den sjette utgaven inneholder også informasjon om Vim. + + Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, + Colorado School of Mines med idéer av Charles Smith, Colorado State + University. E-mail: bware@mines.colorado.edu . + + Modifisert for Vim av Bram Moolenaar. + Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org + Id: tutor.no 406 2007-03-18 22:48:36Z sunny + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +vim: set ts=8 : diff --git a/share/vim/vim74/tutor/tutor.nb.utf-8 b/share/vim/vim74/tutor/tutor.nb.utf-8 new file mode 100644 index 00000000..f9d49c2a --- /dev/null +++ b/share/vim/vim74/tutor/tutor.nb.utf-8 @@ -0,0 +1,973 @@ +=============================================================================== += V e l k o m m e n t i l i n n f ø r i n g e n i V i m -- Ver. 1.7 = +=============================================================================== + + Vim er en meget kraftig editor med mange kommandoer, alt for mange til å + kunne gå gjennom alle i en innføring som denne. Den er beregnet på å + sette deg inn i bruken av nok kommandoer så du vil være i stand til lett + å kunne bruke Vim som en editor til alle formål. + + Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30 + minutter, avhengig av hvor mye tid du bruker til eksperimentering. + + MERK: + Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne + filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er + dette allerede en kopi). + + Det er viktig å huske at denne innføringen er beregnet på læring gjennom + bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig. + Hvis du bare leser teksten, vil du glemme kommandoene! + + Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for + å flytte markøren helt til leksjon 1.1 fyller skjermen. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.1: FLYTTING AV MARKØREN + + + ** For å flytte markøren, trykk tastene h, j, k, l som vist. ** + ^ + k Tips: h-tasten er til venstre og flytter til venstre. + < h l > l-tasten er til høyre og flytter til høyre. + j j-tasten ser ut som en pil som peker nedover. + v + 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. + + 2. Hold inne nedovertasten (j) til den repeterer. + Nå vet du hvordan du beveger deg til neste leksjon. + + 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. + +Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til + normalmodus. Skriv deretter kommandoen du ønsket på nytt. + +Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til + å bevege markøren mye raskere når du er blitt vant til det. Helt sant! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.2: AVSLUTTE VIM + + + !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! + + 1. Trykk -tasten (for å forsikre deg om at du er i normalmodus). + + 2. Skriv: :q! . + Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. + + 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne + innføringen. Den er: vimtutor + + 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å + avslutte og starte editoren på nytt. + +MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen + få leksjoner vil du lære hvordan du lagrer forandringene til en fil. + + 5. Flytt markøren ned til leksjon 1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.3: REDIGERING AV TEKST -- SLETTING + + + ** Trykk x for å slette tegnet under markøren. ** + + 1. Flytt markøren til den første linjen merket med --->. + + 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som + skal slettes. + + 3. Trykk tasten x for å slette det uønskede tegnet. + + 4. Repeter punkt 2 til 4 til setningen er lik den som er under. + +---> Hessstennnn brrråsnudddde ii gaaata. +---> Hesten bråsnudde i gata. + + 5. Nå som linjen er korrekt, gå til leksjon 1.4. + +MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men + bruk dem helt til de sitter. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING + + + ** Trykk i for å sette inn tekst. ** + + 1. Flytt markøren til den første linjen som er merket med --->. + + 2. For å gjøre den første linjen lik den andre, flytt markøren til den står + på tegnet ETTER posisjonen der teksten skal settes inn. + + 3. Trykk i og skriv inn teksten som mangler. + + 4. Etterhvert som hver feil er fikset, trykk for å returnere til + normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. + +---> Det er tkst som mnglr . +---> Det er ganske mye tekst som mangler her. + + 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen + nedenfor. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL + + + ** Trykk A for å legge til tekst. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. + Det har ikke noe å si hvor markøren er plassert på den linjen. + + 2. Trykk A og skriv inn det som skal legges til. + + 3. Når teksten er lagt til, trykk for å returnere til normalmodusen. + + 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og + 3 for å reparere denne setningen. + +---> Det mangler noe tekst p + Det mangler noe tekst på denne linjen. +---> Det mangler også litt tek + Det mangler også litt tekst på denne linjen. + + 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.6: REDIGERE EN FIL + + + ** Bruk :wq for å lagre en fil og avslutte. ** + + !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! + + 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! + + 2. Skriv denne kommandoen på kommandolinja: vim tutor + «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila + som du vil redigere. Bruk en fil som kan forandres. + + 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. + + 4. Lagre filen med forandringene og avslutt Vim med: :wq + + 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. + + 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 1 + + + 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. + h (venstre) j (ned) k (opp) l (høyre) + + 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN + + 3. For å avslutte Vim, skriv: :q! for å forkaste endringer. + ELLER skriv: :wq for å lagre forandringene. + + 4. For å slette tegnet under markøren, trykk: x + + 5. For å sette inn eller legge til tekst, trykk: + i skriv innsatt tekst sett inn før markøren + A skriv tillagt tekst legg til på slutten av linjen + +MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket + og delvis fullført kommando. + + Nå kan du gå videre til leksjon 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.1: SLETTEKOMMANDOER + + + ** Trykk dw for å slette et ord. ** + + 1. Trykk for å være sikker på at du er i normalmodus. + + 2. Flytt markøren til den første linjen nedenfor merket --->. + + 3. Flytt markøren til begynnelsen av ordet som skal slettes. + + 4. Trykk dw og ordet vil forsvinne. + +MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når + du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet + tegn enn d har du skrevet noe feil; trykk og start på nytt. + +---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. +---> Det er tre ord som ikke hører hjemme i denne setningen. + + 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå + deretter til leksjon 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.2: FLERE SLETTEKOMMANDOER + + + ** Trykk d$ for å slette til slutten av linjen. ** + + 1. Trykk for å være sikker på at du er i normalmodus. + + 2. Flytt markøren til linjen nedenfor merket --->. + + 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). + + 4. Trykk d$ for å slette alt til slutten av linjen. + +---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. + + 5. Gå til leksjon 2.3 for å forstå hva som skjer. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.3: OM OPERATORER OG BEVEGELSER + + + Mange kommandoer som forandrer teksten er laget ut i fra en operator og en + bevegelse. Formatet for en slettekommando med sletteoperatoren d er: + + d bevegelse + + Der: + d - er sletteoperatoren. + bevegelse - er hva operatoren vil opere på (listet nedenfor). + + En kort liste med bevegelser: + w - til starten av det neste ordet, UNNTATT det første tegnet. + e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. + $ - til slutten av linjen, INKLUDERT det siste tegnet. + + Ved å skrive de vil altså alt fra markøren til slutten av ordet bli + slettet. + +MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil + markøren flyttes som spesifisert. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE + + + ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** + + 1. Flytt markøren til starten av linjen markert ---> nedenfor. + + 2. Skriv 2w for å flytte markøren to ord framover. + + 3. Skriv 3e for å flytte markøren framover til slutten av det tredje + ordet. + + 4. Skriv 0 (null) for å flytte til starten av linjen. + + 5. Repeter steg 2 og 3 med forskjellige tall. + +---> Dette er en linje med noen ord som du kan bevege deg rundt på. + + 6. Gå videre til leksjon 2.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER + + + ** Et tall sammen med en operator repeterer den så mange ganger. ** + + I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du + inn antall før bevegelsen for å slette mer: + d nummer bevegelse + + 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert + med --->. + + 2. Skriv 2dw for å slette de to ordene med store bokstaver. + + 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende + ordene som har store bokstaver. + +---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. + +MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å + bruke bevegelsen uten en operator. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.6: OPERERE PÅ LINJER + + + ** Trykk dd for å slette en hel linje. ** + + På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at + det vil være lettere å rett og slett trykke to d-er for å slette en linje. + + 1. Flytt markøren til den andre linjen i verset nedenfor. + 2. Trykk dd å slette linjen. + 3. Flytt deretter til den fjerde linjen. + 4. Trykk 2dd for å slette to linjer. + +---> 1) Roser er røde, +---> 2) Gjørme er gøy, +---> 3) Fioler er blå, +---> 4) Jeg har en bil, +---> 5) Klokker viser tiden, +---> 6) Druer er søte +---> 7) Og du er likeså. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.7: ANGRE-KOMMANDOEN + + + ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** + + 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den + første feilen. + 2. Trykk x for å slette det første uønskede tegnet. + 3. Trykk så u for å angre den siste utførte kommandoen. + 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . + 5. Trykk nå en stor U for å sette linjen tilbake til det den var + originalt. + 6. Trykk u noen ganger for å angre U og foregående kommandoer. + 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen + ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). + +---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. + + 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av + leksjon 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 2 + + + 1. For å slette fra markøren fram til det neste ordet, trykk: dw + 2. For å slette fra markøren til slutten av en linje, trykk: d$ + 3. For å slette en hel linje, trykk: dd + + 4. For å repetere en bevegelse, sett et nummer foran: 2w + 5. Formatet for en forandringskommando er: + operator [nummer] bevegelse + der: + operator - hva som skal gjøres, f.eks. d for å slette + [nummer] - et valgfritt antall for å repetere bevegelsen + bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), + $ (til slutten av linjen) og så videre. + + 6. For å gå til starten av en linje, bruk en null: 0 + + 7. For å angre tidligere endringer, skriv: u (liten u) + For å angre alle forandringer på en linje, skriv: U (stor U) + For å omgjøre angringen, trykk: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.1: «LIM INN»-KOMMANDOEN + + + ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** + + 1. Flytt markøren til den første linjen med ---> nedenfor. + + 2. Trykk dd for å slette linjen og lagre den i et Vim-register. + + 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. + + 4. Trykk p for å legge linjen under markøren. + + 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. + +---> d) Kan du også lære? +---> b) Fioler er blå, +---> c) Intelligens må læres, +---> a) Roser er røde, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.2: «ERSTATT»-KOMMANDOEN + + + ** Trykk rx for å erstatte tegnet under markøren med x. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. + + 2. Flytt markøren så den står oppå den første feilen. + + 3. Trykk r og deretter tegnet som skal være der. + + 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. + +---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! +---> Da denne linjen ble skrevet, var det noen som trykket feile taster! + + 5. Gå videre til leksjon 3.2. + +MERK: Husk at du bør lære ved å BRUKE, ikke pugge. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.3: «FORANDRE»-OPERATOREN + + + ** For å forandre til slutten av et ord, trykk ce . ** + + 1. Flytt markøren til den første linjen nedenfor som er merket --->. + + 2. Plasser markøren på u i «lubjwr». + + 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). + + 4. Trykk og gå til det neste tegnet som skal forandres. + + 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. + +---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. +---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. + +Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c + + + ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** + + 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: + + c [nummer] bevegelse + + 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en + linje). + + 3. Gå til den første linjen nedenfor som er merket --->. + + 4. Flytt markøren til den første feilen. + + 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . + +---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. +---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. + +MERK: Du kan bruke slettetasten for å rette feil mens du skriver. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 3 + + + 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette + limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet + vil den bli limt inn på linjen under markøren). + + 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som + du vil ha der. + + 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen + tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten + av ordet, c$ for å forandre til slutten av linjen. + + 4. Formatet for «forandre» er: + + c [nummer] bevegelse + +Nå kan du gå til neste leksjon. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS + + ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. + Trykk G for å gå til en spesifikk linje i filen. ** + + Merk: Les hele leksjonen før du utfører noen av punktene! + + 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding + vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i + filen. Husk linjenummeret for bruk i steg 3. + +Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette + skjer når «ruler»-valget er satt (forklart i leksjon 6). + + 2. Trykk G for å gå til bunnen av filen. + Skriv gg for å gå til begynnelsen av filen. + + 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg + tilbake til linjen du var på da du først trykket CTRL-G. + + 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.2: SØKEKOMMANDOEN + + ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** + + 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og + markøren kommer til syne på bunnen av skjermen i likhet med + «:»-kommandoene. + + 2. Skriv «feeeiil» og trykk . Dette er teksten du vil lete etter. + + 3. For å finne neste forekomst av søkestrengen, trykk n . + For å lete etter samme søketeksten i motsatt retning, trykk N . + + 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . + + 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens + du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I + går framover. + +---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. +Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt + hvis «wrapscan»-valget er resatt. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.3: FINN SAMSVARENDE PARENTESER + + + ** Trykk % for å finne en samsvarende ), ] eller } . ** + + 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. + + 2. Trykk % . + + 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. + + 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. + + 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. + +---> Dette ( er en testlinje med (, [ ] og { } i den )). + +Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert + antall parenteser! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.4: ERSTATT-KOMMANDOEN + + + ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** + + 1. Flytt markøren til linjen nedenfor som er merket med --->. + + 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare + forandrer den første forekomsten av «deen» på linjen. + + 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global + erstatning på linjen og erstatter alle forekomster av «deen» på linjen. + +---> deen som kan kaste deen tyngste steinen lengst er deen beste + + 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, + skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for + linjeområdet erstatningen skal gjøres. + Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. + Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og + deretter spørre om teksten skal erstattes eller + ikke. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 4 + + + 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. + G går til slutten av filen. + nummer G går til det linjenummeret. + gg går til den første linjen. + + 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. + Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. + Etter et søk kan du trykke n for å finne neste forekomst i den samme + retningen eller N for å lete i motsatt retning. + CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. + + 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den + som samsvarer. + + 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny + Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g + Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g + Erstatte alle forekomster i en fil: :%s/gammel/ny/g + For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO + + + ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** + + 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av + skjermen. Dette lar deg skrive en kommandolinjekommando. + + 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst + ekstern kommando. + + 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil + nå få en liste over filene i katalogen, akkurat som om du hadde kjørt + kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis + «ls» ikke virker. + +MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med + parametere. + +MERK: Alle «:»-kommandoer må avsluttes med . Fra dette punktet er det + ikke alltid vi nevner det. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.2: MER OM LAGRING AV FILER + + + ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** + + 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du + vet allerede at du må trykke etter dette. + + 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . + + 3. Skriv :w TEST (der TEST er filnavnet du velger). + + 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å + sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av + katalogen. + +Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», + ville filen vært en eksakt kopi av innføringen da du lagret den. + + 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende + operativsystem, eller :!del TEST hvis du bruker MS-DOS. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES + + + ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** + + 1. Flytt markøren til denne linjen. + + 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke + til at teksten blir markert. + + 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. + + 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller + at du ser :'<,'>w TEST før du trykker Enter. + + 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller :!ls + for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. + +MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for + å gjøre det valgte området større eller mindre. Deretter kan du bruke en + operator for å gjøre noe med teksten. For eksempel sletter d teksten. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER + + + ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** + + 1. Plasser markøren like over denne linjen. + +MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter + NED for å se denne leksjonen igjen. + + 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på + filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. + + 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av + leksjon 5.3, originalen og denne versjonen. + +MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls + leser utdataene av ls-kommandoen og legger dem nedenfor markøren. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 5 + + + 1. :!kommando utfører en ekstern kommandio. + + Noen nyttige eksempler er: + (MS-DOS) (Unix) + :!dir :!ls - List filene i katalogen. + :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. + + 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . + + 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen + FILNAVN. + + 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. + + 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor + markørposisjonen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN + + + ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til + innsettingsmodus ** + + 1. Flytt markøren til linjen nedenfor merket --->. + + 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i + innsettingsmodus. + + 3. Skriv litt tekst og trykk for å gå ut av innsettingsmodusen. + +---> Etter at o er skrevet blir markøren plassert på den tomme linjen. + + 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O + istedenfor en liten o . Prøv dette på linjen nedenfor. + +---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.2: «LEGG TIL»-KOMMANDOEN + + + ** Skriv a for å legge til tekst ETTER markøren. ** + + 1. Flytt markøren til starten av linjen merket ---> nedenfor. + + 2. Trykk e til markøren er på slutten av «li». + + 3. Trykk a (liten a) for å legge til tekst ETTER markøren. + + 4. Fullfør ordet sånn som på linjen nedenfor. Trykk for å gå ut av + innsettingsmodusen. + + 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og + 4. + +---> Denne li lar deg øve på å leg til tek på en linje. +---> Denne linjen lar deg øve på å legge til tekst på en linje. + +Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste + forskjellen er hvor tegnene blir satt inn. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ + + + ** Skriv en stor R for å erstatte mer enn ett tegn. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren + til begynnelsen av den første «xxx»-en. + + 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så + det erstatter xxx. + + 3. Trykk for å gå ut av erstatningsmodusen. Legg merke til at resten + av linjen forblir uforandret. + + 4. Repeter stegene for å erstatte den gjenværende xxx. + +---> Ved å legge 123 til xxx får vi xxx. +---> Ved å legge 123 til 456 får vi 579. + +MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives + erstatter et eksisterende tegn. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.4: KOPIERE OG LIME INN TEKST + + + ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** + + 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». + + 2. Gå inn i visuell modus med v og flytt markøren til like før «første». + + 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. + + 4. Flytt markøren til slutten av den neste linjen: j$ + + 5. Trykk p for å lime inn teksten. Trykk deretter: a andre . + + 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til + slutten av den neste linjen med j$ og legg inn teksten der med p . + +---> a) Dette er det første valget. + b) + +Merk: Du kan også bruke y som en operator; yw kopierer ett ord. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.5: SETT VALG + + + ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** + + 1. Let etter «ignore» ved å skrive: /ignore + Repeter flere ganger ved å trykke n . + + 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic + + 3. Søk etter «ignore» igjen ved å trykke n . + Legg merke til at både «Ignore» og «IGNORE» blir funnet. + + 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is + + 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore + + 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic + +Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch +Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk + \c i uttrykket: /ignore\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 6 + + 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i + innsettingsmodus. + Trykk O for å åpne en linje OVER markøren. + + 2. Skriv a for å sette inn tekst ETTER markøren. + Skriv A for å sette inn tekst etter slutten av linjen. + + 3. Kommandoen e går til slutten av et ord. + + 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. + + 5. Ved å trykke R går du inn i erstatningsmodus helt til trykkes. + + 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: + «ic» «ignorecase» ignorer store/små bokstaver under søk + «is» «incsearch» vis delvise treff for en søketekst + «hls» «hlsearch» uthev alle søketreff + + 7. Legg til «no» foran valget for å slå det av: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.1: FÅ HJELP + + + ** Bruk det innebygde hjelpesystemet. ** + + Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av + disse måtene: + - Trykk Hjelp-tasten (hvis du har en) + - Trykk F1-tasten (hvis du har en) + - Skriv :help + + Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. + Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet + Skriv :q for å lukke hjelpevinduet. + + Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til + «:help»-kommandoen. Prøv disse (ikke glem å trykke ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.2: LAG ET OPPSTARTSSKRIPT + + + ** Slå på funksjoner i Vim ** + + Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av + som standard. For å begynne å bruke flere funksjoner må du lage en + «vimrc»-fil. + + 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: + :e ~/.vimrc for Unix + :e $VIM/_vimrc for MS Windows + + 2. Les inn eksempelfilen for «vimrc»: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Lagre filen med: + :w + + Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til + alle dine foretrukne oppsett i denne «vimrc»-filen. + For mer informasjon, skriv :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.3: FULLFØRING + + + ** Kommandolinjefullføring med CTRL-D og ** + + 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp + + 2. Se hvilke filer som er i katalogen: :!ls eller :!dir + + 3. Skriv starten på en kommando: :e + + 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med + «e». + + 5. Trykk og Vim vil fullføre kommandonavnet til «:edit». + + 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL + + 7. Trykk . Vim vil fullføre navnet (hvis det er unikt). + +MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og + . Det er spesielt nyttig for bruk sammen med :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 7 + + + 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. + + 2. Skriv :help kommando for å få hjelp om kommando . + + 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. + + 4. Trykk :q for å lukke hjelpevinduet. + + 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. + + 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige + fullføringer. Trykk for å bruke en fullføring. + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Her slutter innføringen i Vim. Den var ment som en rask oversikt over + editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på + langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen + ved å skrive :help user-manual . + + For videre lesing og studier, kan denne boken anbefales: + «Vim - Vi Improved» av Steve Oualline + Utgiver: New Riders + Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for + nybegynnere. Inneholder mange eksempler og illustrasjoner. + Se http://iccf-holland.org/click5.html + + Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: + «Learning the Vi Editor» av Linda Lamb + Utgiver: O'Reilly & Associates Inc. + Det er en god bok for å få vite omtrent hva som helst om Vi. + Den sjette utgaven inneholder også informasjon om Vim. + + Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, + Colorado School of Mines med idéer av Charles Smith, Colorado State + University. E-mail: bware@mines.colorado.edu . + + Modifisert for Vim av Bram Moolenaar. + Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org + Id: tutor.no 406 2007-03-18 22:48:36Z sunny + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +vim: set ts=8 : diff --git a/share/vim/vim74/tutor/tutor.nl b/share/vim/vim74/tutor/tutor.nl new file mode 100644 index 00000000..7b4d392e --- /dev/null +++ b/share/vim/vim74/tutor/tutor.nl @@ -0,0 +1,950 @@ + ========================================================================== + = W e l k o m b i j d e V I M l e s s e n - Versie 1.7 = + ========================================================================== + + Vim is een krachtige editor met veel commando's, te veel om uit te leggen + in lessen zoals deze. Deze lessen zijn bedoeld om voldoende commando's te + behandelen om je in staat te stellen met Vim te werken als een editor voor + algemeen gebruik. + + Deze lessen zullen 25 tot 30 minuten in beslag nemen, afhankelijk van de + tijd die wordt besteed aan het uitproberen van de commando's. + + LET OP: + Door de commando's in deze lessen verandert de tekst. Maak een kopie van + dit bestand om mee te oefenen (als je "vimtutor" uitvoerde, is dit al een + kopie). + + Deze lessen zijn bedoeld om al doende te leren. Dat betekent dat je de + commando's moet uitvoeren om ze goed te leren kennen. Als je de tekst + alleen maar doorleest, zal je de commando's niet leren! + + Zorg ervoor dat de toets NIET is ingedrukt en druk vaak genoeg + op de j-toets om de cursor zo te bewegen dat les 1.1 volledig op het + scherm staat. + + LET OP: In deze lessen worden omwille van de duidelijkheid vaak spaties + gebruikt binnen een commando (bv. "40 G" of "operator [getal] beweging"). + Tik deze spaties echter NIET. Ze verstoren de werking. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.1: VERPLAATS DE CURSOR + + ** De cursor wordt verplaatst met de toetsen h, j, k, l zoals aangegeven. ** + ^ + k Hint: De h is de meest linkse en beweegt naar links. + < h l > De l is de meest rechtse en beweegt naar rechts. + j De j lijkt op een pijl naar beneden. + v + + 1. Beweeg de cursor over het scherm om er vertrouwd mee te raken. + + 2. Druk de omlaag-toets (j) tot hij repeteert. + Nu weet je hoe je de volgende les bereikt. + + 3. Gebruik de omlaag-toets om naar les 1.2 te gaan. + + OPMERKING: Als je twijfelt aan wat je tikte, druk om in de opdracht- + modus te komen. Tik daarna het commando dat bedoeld wordt. + + OPMERKING: Pijltjes-toetsen werken ook. Met de hjkl-toetsen kan je sneller + rondbewegen, als je er eenmaal aan gewend bent. Echt waar! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.2: VIM AFSLUITEN + + !! LET OP: Lees deze les goed door voordat je iets uitvoert!! + + 1. Druk de toets (om zeker in de opdrachtmodus te zitten). + + 2. Tik :q! + Hiermee wordt de editor afgesloten. Alle veranderingen gaan VERLOREN. + + 3. Nu zie je de shell-prompt. Tik het commando waarmee je deze lessen + hebt opgeroepen. Dat is normaal gesproken: vimtutor + + 4. Als je deze stappen goed hebt doorgelezen, voer dan de stappen 1 tot 3 + uit om de editor te verlaten en weer op te starten. + + LET OP: :q! verwerpt alle veranderingen die je aanbracht. Een paar + lessen verder zal je leren hoe veranderingen worden opgeslagen in + een bestand. + + 5. Beweeg de cursor omlaag naar les 1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.3: TEKST BEWERKEN - WISSEN + + ** Tik x om het teken onder de cursor te wissen. ** + + 1. Ga met de cursor naar de regel verderop met --->. + + 2. Zet de cursor op een teken dat moet worden gewist om een fout te + herstellen. + + 3. Tik x om het ongewenste teken te wissen. + + 4. Herhaal deze stappen tot de regel goed is. + + ---> Vi kkent eenn opdracccchtmodus en een invooegmmmmodus. + + 5. Nu de regel gecorrigeerd is kan je naar les 1.4 gaan. + + LET OP: Probeer de lessen niet uit je hoofd te leren. Leer al doende. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.4: TEKST BEWERKEN - INVOEGEN + + ** Tik i ('insert') om tekst in te voegen. ** + + 1. Ga met de cursor naar de eerste regel verderop met --->. + + 2. Maak de eerste regel gelijk aan de tweede. Zet daarvoor de cursor op + de plaats waar tekst moet worden ingevoegd. + + 3. Tik i en daarna de nodige aanvullingen. + + 4. Tik na elke herstelde fout om terug te keren in de opdrachtmodus. + Herhaal de stappen 2 tot 4 om de zin te verbeteren. + + ---> Aan regel ontekt wat . + ---> Aan deze regel ontbreekt wat tekst. + + 5. Ga naar les 1.5 als je gewend bent aan het invoegen van tekst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.5: TEKST BEWERKEN - TOEVOEGEN + + ** Tik A ('append') om tekst toe te voegen. ** + + 1. Ga met de cursor naar de eerste regel verderop met --->. + Het maakt niet uit waar de cursor in deze regel staat. + + 2. Tik hoofdletter A en tik de nodige aanvullingen. + + 3. Tik nadat de tekst is aangevuld. Zo keer je terug in de + opdrachtmodus. + + 4. Ga naar de tweede regel verderop met ---> en herhaal stap 2 en 3 + om deze zin te corrigeren. + + ---> Er ontbreekt wat tekst aan de + Er ontbreekt wat tekst aan deze regel. + ---> Hier ontbreekt ook w + Hier ontbreekt ook wat tekst. + + 5. Ga naar les 1.6 als je vertrouwd bent geraakt aan het toevoegen + van tekst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.6: EEN BESTAND EDITTEN + + ** Gebruik :wq om een bestand op te slaan en de editor te verlaten. ** + + !! LET OP: Lees deze les helemaal door voordat je een van de volgende + stappen uitvoert!! + + 1. Verlaat deze les zoals je in les 1.2 deed: :q! + Of gebruik een andere terminal als je daar de beschikking over hebt. Doe + daar het volgende. + + 2. Tik het volgende commando na de shell-prompt: vim les + 'vim' (vaak ook 'vi') is het commando om de Vim-editor te starten, + 'les' is de naam van het bestand, dat je gaat bewerken. Kies een andere + naam als er al een bestand 'les' bestaat, dat niet veranderd mag worden. + + 3. Voeg naar eigen keus tekst toe, zoals je geleerd hebt in eerdere lessen. + + 4. Sla het bestand met de wijzigingen op en verlaat Vim met :wq + + 5. Herstart vimtutor als je deze bij stap 1 hebt verlaten en ga verder met + de volgende samenvatting. + + 6. Voer deze stappen uit nadat je ze hebt gelezen en begrepen. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 1 + + 1. De cursor wordt bewogen met de pijltjestoetsen of de hjkl-toetsen. + h (links) j (omlaag) k (omhoog) l (rechts) + + 2. Start Vim van de shell-prompt. Tik: vim BESTANDSNAAM + + 3. Sluit Vim af met :q! om de veranderingen weg te gooien. + OF tik :wq om de veranderingen te bewaren. + + 4. Wis het teken onder de cursor met: x + + 5. Invoegen of toevoegen van tekst, tik: + i en daarna de in te voegen tekst voeg in vanaf de cursor + A en daarna de toe te voegen tekst voeg toe achter de regel + + OPMERKING: Met kom je terug in opdrachtmodus en wordt een ongewenst + of gedeeltelijk uitgevoerd commando afgebroken. + + Ga nu verder met les 2.1. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.1: WIS-COMMANDO'S + + ** Tik dw ('delete word') om een woord te wissen. ** + + 1. Druk op om zeker in de opdrachtmodus te zijn. + + 2. Ga naar de regel hieronder, die met ---> begint. + + 3. Ga met de cursor naar het begin van een woord dat moet worden gewist. + + 4. Met het tikken van dw verdwijnt het woord. + + OPMERKING: De letter d verschijnt op de laatste regel van het scherm + zodra je hem tikt. Vim is aan het wachten tot je de w tikt. + Als je een ander teken dan d ziet, heb je iets verkeerds + getikt. Druk op en begin opnieuw. + + NOG EEN OPMERKING: Dit werkt alleen als de optie 'showcmd' is ingeschakeld. + Dat gebeurt met :set showcmd + + ---> Er zijn een het paar ggg woorden, die niet in deze len zin thuishoren. + + 5. Herhaal de stappen 3 en 4 tot de zin goed is en ga naar les 2.2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.2: MEER WIS-COMMANDO'S + + ** Tik d$ om te wissen tot het einde van de regel. ** + + 1. Druk op om zeker in de opdrachtmodus te zijn. + + 2. Ga naar de regel hieronder, die met ---> begint. + + 3. Ga met de cursor naar het einde van de correcte regel (NA de eerste . ). + + 4. Tik d$ om te wissen tot het einde van de regel. + + ---> Iemand heeft het einde van deze regel dubbel getikt. dubbel getikt. + + 5. Ga naar les 2.3 voor uitleg. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.3: OVER OPERATOREN EN BEWEGINGEN + + Veel commando's die de tekst veranderen, bestaan uit een operator en een + beweging. De samenstelling van een wis-commando met de operator d is: + d beweging + + Daarbij is: + d - de wis-operator + beweging - het bereik waarop de operator werkt (zie het lijstje hieronder) + + Een korte lijst van bewegingen vanaf de cursor: + w - tot het begin van het volgende woord, ZONDER het eerste teken daarvan. + e - tot het einde van het huidige woord, INCLUSIEF het laatste teken. + $ - tot het einde van de regel, INCLUSIEF het laatste teken. + + Het tikken van de wist tekst vanaf de cursor tot het eind van het woord. + + OPMERKING: Het intikken van alleen maar de beweging, zonder een operator, + in de opdrachtmodus beweegt de cursor (respectievelijk naar het + volgende woord, naar het eind van het huidige woord en naar het + eind van de regel). + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.4: GEBRUIK VAN EEN TELLER BIJ EEN BEWEGING + + ** Een getal voor een beweging herhaalt het zoveel keer. ** + + 1. Ga naar de regel hieronder, die met ---> begint. + + 2. Tik 2w zodat de cursor twee woorden vooruit gaat. + + 3. Tik 3e zodat de cursor naar het einde van het derde woord gaat. + + 4. Tik 0 (nul) om naar het begin van de regel te gaan. + + 5. Herhaal de stappen 2 en 3 met andere getallen. + + ---> Dit is een regel met woorden waarin je heen en weer kan bewegen. + + 6. Ga verder met les 2.5. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.5: GEBRUIK EEN TELLER OM MEER TE WISSEN + + ** Een getal met een operator zorgt dat deze zoveel keer wordt herhaald. ** + + Bij de combinatie van wis-operator en beweging kan je voor de beweging een + teller zetten om meer te wissen: + d [teller] beweging + + 1. Ga naar het eerste woord in HOOFDLETTERS in de regel na --->. + + 2. Met d2w worden twee woorden (in dit voorbeeld in hoofdletters) gewist. + + 3. Herhaal de stappen 1 en 2 met verschillende tellers om de verschillende + woorden in hoofdletters met één commando te wissen. + + ---> deze ABC DE regel FGHI JK LMN OP is QZ RS ontdaan van rommel. + + OPMERKING: De teller kan ook aan het begin staan: d2w en 2dw werken allebei. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.6: BEWERKING VAN HELE REGELS + + ** Tik dd om een hele regel te wissen. ** + + Omdat het wissen van een hele regel vaak voorkomt, besloten de ontwerpers + van Vi dat met het tikken van dd simpelweg een hele regel gewist wordt. + + 1. Ga met de cursor naar de tweede regel van de zinnetjes hieronder. + + 2. Tik dd om de regel te wissen. + + 3. Ga nu naar de vierde regel. + + 4. Tik 2dd om twee regels te wissen. + + ---> 1) Rozen zijn rood. + ---> 2) Modder is leuk. + ---> 3) Viooltjes zijn blauw. + ---> 4) Ik heb een auto. + ---> 5) De klok slaat de tijd. + ---> 6) Suiker is zoet. + ---> 7) En dat ben jij ook. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.7: HET COMMANDO HERSTEL + + ** u maakt het laatste commando ongedaan, U herstelt een hele regel. ** + + 1. Ga met de cursor naar de regel hieronder met ---> en zet hem + op de eerste fout. + + 2. Tik x om het eerste ongewenste teken te wissen. + + 3. Tik nu u en maak daarmee het vorige commando ongedaan. + + 4. Herstel nu alle fouten in de regel met het x commando. + + 5. Tik een hoofdletter U om de regel in z'n oorspronkelijke staat terug + te brengen. + + 6. Tik nu een paar keer u en herstel daarmee de U en eerdere commando's. + + 7. Tik nu een paar keer CTRL-R (Ctrl-toets ingedrukt houden en R tikken) en + voer daarmee de commando's opnieuw uit: 'redo' oftewel 'undo de undo's'. + + ---> Heerstel de fouten inn deeze regel en brenng ze weer terugg met undo. + + 8. Dit zijn heel nuttige commando's. Ga verder met samenvatting van les 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 2 + + 1. Wis van de cursor tot het volgende woord met dw + + 2. Wis van de cursor tot het eind van de regel met d$ + + 3. Wis de hele regel met dd + + 4. Herhaal een beweging door er een getal voor te zetten: 2w + + 5. De opbouw van een wijzigingscommando is: + operator [getal] beweging + daarbij is: + operator - wat er moet gebeuren, bijvoorbeeld d om te wissen + [getal] - een (niet-verplichte) teller om 'beweging' te herhalen + beweging - een beweging door de te wijzigen tekst zoals w (woord) + of $ (tot het einde van de regel) enz. + + 6. Ga naar het begin van de regel met nul: 0 + + 7. Undo de voorgaande actie met u (kleine letter) + Undo alle veranderingen in een regel met U (hoofdletter) + Undo de undo's met CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 3.1: HET COMMANDO PLAK + + ** Tik p ('put') en plak daarmee zojuist gewiste tekst na te cursor. ** + + 1. Ga met de cursor naar de eerste regel met ---> hierna. + + 2. Wis de regel met dd en bewaar hem zodoende in een Vim-register. + + 3. Ga naar de c-regel, waar de gewiste regel ONDER moet komen. + + 4. Tik p om de regel terug te zetten onder de regel met de cursor. + + 5. Herhaal de stappen 2 tot 4 om de regels in de goede volgorde te zetten. + +---> d) Krijg je het ook onder de knie? +---> b) Viooltjes zijn blauw, +---> c) Begrip is te leren, +---> a) Rozen zijn rood, + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 3.2: HET COMMANDO VERVANG + + ** Tik rx ('replace') om het teken onder de cursor te vervangen door x. ** + + 1. Ga naar de eerste regel hieronder met --->. + + 2. Zet de cursor op de eerste fout. + + 3. Tik r en dan het teken dat er hoort te staan. + + 4. Herhaal de stappen 2 en 3 tot de eerste regel gelijk is aan de tweede. + + ---> Bij het tokken van dezf hegel heeft iemamd verklerde letters getikt. + ---> Bij het tikken van deze regel heeft iemand verkeerde letters getikt. + + 5. Ga nu naar les 3.3. + + LET OP: Door het te doen, leer je beter dan door het uit je hoofd te leren. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 3.3: HET COMMANDO VERANDER + + ** Tik ce om te veranderen tot het einde van een woord. ** + + 1. Ga met de cursor naar de eerste regel hieronder met --->. + + 2. Zet de cursor op de u van ruch. + + 3. Tik ce en de juiste letters (in dit geval "egel"). + + 4. Druk en ga naar het volgende teken dat moet worden veranderd. + + 5. Herhaal de stappen 3 en 4 tot de eerste regel gelijk is aan de tweede. + + ---> In deze ruch staan een paar weedrim die veranderd moud worden. + ---> In deze regel staan een paar woorden die veranderd moeten worden. + + LET OP: Met ce wordt (het laatste deel van) een woord gewist en kom je + in de invoegmodus. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 3.4: MEER VERANDERINGEN MET c + + 1. Het commando verander ('change') werkt op dezelfde manier als wis. De + opbouw is: + c [teller] beweging + + 2. De bewegingen zijn hetzelfde, zoals w (woord) en $ (einde regel). + + 3. Ga naar de eerste regel hieronder met --->. + + 4. Zet de cursor op de eerste fout. + + 5. Tik c$ en tik de rest van de regel zodat hij gelijk wordt aan de + tweede en sluit af met . + + ---> Het einde van deze regel moet precies zo worden als de tweede regel. + ---> Het einde van deze regel moet gecorrigeerd worden met het commando c$. + + OPMERKING: Je kan de toets gebruiken om tikfouten te herstellen. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 3 + + 1. Tik p om tekst terug te plakken, die zojuist is gewist. Dit zet de + gewiste tekst ACHTER de cursor (als een hele regel is gewist komt deze + op de regel ONDER de cursor. + + 2. Het teken waarop de cursor staat wordt vervangen met r gevolgd door + het teken dat je daar wilt hebben. + + 3. Het commando 'verander' stelt je in staat om tekst te veranderen vanaf + de cursor tot waar de 'beweging' je brengt. Dat wil zeggen: tik ce om + te veranderen vanaf de cursor tot het einde van het woord, c$ om te + veranderen tot het einde van de regel. + + 4. De opbouw van het commando verander is: + c [teller] beweging + + Ga nu naar de volgende les. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 4.1: PLAATS VAN DE CURSOR EN STATUS VAN HET BESTAND + + ** CTRL-G laat zien waar (regelnummer) je je bevindt en wat de status van + het bestand is. Met [nummer] G ga je naar een bepaalde regel. ** + + LET OP: Lees de hele les voordat je een stap uitvoert!! + + 1. Hou de Ctrl-toets ingedrukt en tik g . Dit noemen we CTRL-G. + Onderaan de pagina verschijnt een boodschap met de bestandsnaam en de + positie in het bestand. Onthou het regelnummer voor stap 3. + + OPMERKING: Als de optie 'ruler' aan staat, wordt de positie van de cursor + (regelnummer, kolom) steeds in de rechter-onderhoek van het + scherm vermeld. In dit geval vermeldt CTRL-G geen regelnummer. + CTRL-G geeft ook de status aan, namelijk of de tekst veranderd + is ('modified') sinds het de laatste keer is opgeslagen. + + 2. Tik hoofdletter G om naar het einde van het bestand te gaan. + Tik gg om naar het begin van het bestand te gaan. + + 3. Tik het regelnummer waar je bij stap 1 was en daarna G . Dit brengt je + terug naar de regel waar je was toen je de eerste keer CTRL-G tikte. + + 4. Voer de stappen 1 tot 3 uit als je dit goed hebt gelezen. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 4.2: HET COMMANDO ZOEKEN + + ** Met /ZOEK wordt naar de zoekterm (één of meer woorden) gezocht. ** + + 1. Tik in de opdrachtmodus het teken / . Je ziet dat het met de cursor + aan de onderkant van het scherm verschijnt, zoals bij het :-commando. + + 2. Tik nu 'ffouut' . Dit is het woord waarnaar gezocht wordt. + + 3. Tik n om verder te zoeken met dezelfde zoekterm. + Zoek met N met dezelfde zoekterm in de tegenovergestelde richting. + + 4. Zoek in achterwaartse richting met ?zoekterm in plaats van / . + + 5. Keer terug naar de vorige hit met CTRL-O (hou Ctrl-toets ingedrukt en + tik letter o). Herhaal om verder terug te gaan. CTRL-I gaat vooruit. + + ---> "ffouut" is niet de juiste spelling van fout, ffouut is een fout. + + OPMERKING: Als zoeken het einde van het bestand bereikt, wordt vanaf het + begin doorgezocht, tenzij de optie 'wrapscan' is uitgeschakeld. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 4.3: GA NAAR CORRESPONDERENDE HAAKJES + + ** Tik % om naar corresponderende ), ] of } te gaan. ** + + 1. Zet de cursor op een (, [ of { in de regel hieronder met --->. + + 2. Tik dan het teken % . + + 3. De cursor gaan naar het overeenkomstige haakje. + + 4. Met opnieuw % gaat de cursor terug naar het eerste haakje. + + 5. Plaats de cursor op een ander haakje en bekijk wat % doet. + + ---> Dit ( is een testregel met ('s, ['s ] en {'s } erin. )) + + OPMERKING: Dit is nuttig bij het debuggen van een programma waarin haakjes + niet corresponderen. Met de optie 'showmatch' wordt ook + aangegeven of haakjes corresponderen, maar de cursor wordt niet + (blijvend) verplaatst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 4.4: HET VERVANG COMMANDO + + ** Tik :s/oud/nieuw/g om 'oud' door 'nieuw' te vervangen. ** + + 1. Ga met de cursor naar de regel hieronder met --->. + + 2. Tik :s/dee/de . Zoals je ziet, vervangt ('substitute') dit + commando alleen de eerste "dee" in de regel. + + 3. Tik nu :s/dee/de/g . Met de g-vlag ('global') wordt elke "dee" in de + regel vervangen. + + ---> dee beste tijd om dee bloemen te zien is in dee lente. + + 4. Om in (een deel van) een tekst elk 'oud' te vervangen door 'nieuw': + tik :#,#s/oud/nieuw/g waar #,# de regelnummers zijn die het gebied + begrenzen waarin wordt vervangen. + tik :%s/oud/nieuw/g om alles te vervangen in het hele bestand. + tik :%s/oud/nieuw/gc om elke 'oud' in het hele bestand te vinden + en te vragen of er vervangen moet worden. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 4 + + 1. CTRL-G laat positie in het bestand zien en de status van het bestand. + G verplaatst je naar het einde van het bestand. + nummer G verplaatst je naar regelnummer. + gg verplaatst je naar de eerste regel. + + 2. Met / en een zoekterm wordt VOORWAARTS gezocht naar de term. + Met ? en een zoekterm wordt ACHTERWAARTS gezocht naar de term. + Tik n na een zoekopdracht om de volgende hit te vinden, + of tik N om in de andere richting te zoeken. + CTRL-O brengt je naar eerdere hit, CTRL-I naar nieuwere. + + 3. Tik % terwijl de cursor op een haakje ([{}]) staat, om naar het + corresponderende haakje te gaan. + + 4. :s/oud/nieuw vervangt het eerste 'oud' in een regel door 'nieuw'. + :s/oud/nieuw/g vervangt elk 'oud' in een regel door 'nieuw'. + :#,#s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' tussen de regelnummers. + :%s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' in het hele bestand. + Voeg c toe (:%s/oud/nieuw/gc) om elke keer om bevestiging + ('confirmation') te vragen. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 5.1: HOE EEN EXTERN COMMANDO WORDT UITGEVOERD + + ** Tik :! gevolgd door een extern commando om dat uit te voeren. ** + + 1. Tik het commando : waarmee de cursor op de onderste regel van het + scherm komt te staan. Nu kan je een opdracht geven via de commando-regel. + + 2. Tik een ! (uitroepteken). Dit stelt je in staat om elk shell-commando + uit te voeren. + + 3. Tik bijvoorbeeld ls na het uitroepteken en daarna . Hiermee + krijg je de inhoud van je map te zien, net alsof je de opdracht gaf + vanaf de shell-prompt. Probeer :!dir als het niet werkt. + + OPMERKING: Elk extern commando kan op deze manier uitgevoerd worden, ook + met argumenten. + + OPMERKING: Alle commando's na : moeten worden afgesloten met . + Vanaf nu zullen we dat niet meer altijd vermelden. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 5.2: MEER OVER HET OPSLAAN VAN BESTANDEN + + ** Tik :w BESTANDSNAAM om de tekst mèt veranderingen op te slaan. ** + + 1. Tik :!dir of :!ls om de inhoud van je map te tonen. Je weet + inmiddels dat je daarna een moet tikken. + + 2. Kies een bestandsnaam die nog niet bestaat, bijvoorbeeld TEST. + + 3. Tik nu: :w TEST (als je de naam TEST hebt gekozen). + + 4. Hierdoor wordt het hele bestand (de VIM lessen) opgeslagen onder de + naam TEST. Tik weer :!dir of :!ls om dit te controleren. + + OPMERKING: Als je Vim zou verlaten en opnieuw zou starten met vim TEST is + het bestand een exacte kopie van de lessen, zoals je ze opsloeg. + + 5. Wis het bestand nu met de opdracht (MS-DOS) :!del TEST + of (Unix) :!rm TEST + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 5.3: EEN DEEL VAN DE TEKST OPSLAAN + + ** Sla een deel van het bestand op met v beweging :w BESTANDSNAAM ** + + 1. Ga naar deze regel. + + 2. Tik v en ga met de cursor naar stap 5 hieronder. Je ziet dat de + tekst oplicht. + + 3. Tik : . Onderaan het scherm zal :'<,'> verschijnen. + + 4. Tik w TEST , waar TEST een bestandsnaam is, die nog niet bestaat. + Controleer dat je :'<,'>w TEST ziet staan voordat je tikt. + + 5. Vim slaat nu de geselecteerde regels op in het bestand TEST. Met + :!dir of !ls kan je dat zien. Wis het nog niet! We zullen het in + de volgende les gebruiken. + + OPMERKING: Het tikken van v zet zichtbare modus ('visual selection') aan. + Je kan de cursor rondbewegen om de selectie groter of kleiner + te maken. Vervolgens kan je een commando gebruiken om iets met + de tekst te doen. Met d bijvoorbeeld wis je de tekst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 5.4: OPHALEN EN SAMENVOEGEN VAN BESTANDEN + + ** Tik :r BESTANDSNAAM om de inhoud van een bestand in te voegen. ** + + 1. Zet de cursor precies boven deze regel. + + OPMERKING: Na het uitvoeren van stap 2 zie je tekst van les 5.3. Scrol + daarna naar beneden om deze les weer te zien. + + 2. Haal nu het bestand TEST op met het commando :r TEST . + Het bestand dat je ophaalt komt onder de regel waarin de cursor staat. + + 3. Controleer dat er een bestand is opgehaald. Ga met de cursor omhoog. + Dan zie je de tekst van les 5.3 dubbel, het origineel en de versie uit + het bestand. + + OPMERKING: Je kan ook de uitvoer van een extern commando inlezen. Om een + voorbeeld te geven: :r !ls leest de uitvoer van het commando + ls en zet dat onder de regel waarin de cursor staat. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 5 + + 1. :!COMMANDO voert een extern commando uit. + Enkele bruikbare voorbeelden zijn: + (MS-DOS) (Unix) + :!dir :!ls - laat de inhoud van een map zien + :!del BESTAND :!rm BESTAND - wist bestand BESTAND + + 2. :w BESTANDSNAAM schrijft het huidige Vim-bestand naar disk met de + naam BESTANDSNAAM. + + 3. v beweging :w BESTANDSNAAM laat je in zichtbare modus een fragment + selecteren, dat wordt opgeslagen in het bestand BESTANDSNAAM. + + 4. :r BESTANDSNAAM haalt het bestand BESTANDSNAAM op en voegt het onder + de cursor-positie in de tekst in. + + 5. :r !dir leest de uitvoer van het externe commando dir en zet het onder + de cursor-positie. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 6.1: HET COMMANDO OPEN + + ** Tik o om een regel onder de cursor te openen in invoegmodus. ** + + 1. Ga naar de eerste regel beneden met --->. + + 2. Tik de kleine letter o en open daarmee een regel ONDER de cursor en + ga naar de invoegmodus. + + 3. Tik wat tekst in en sluit af met om de invoegmodus te verlaten. + + ---> Als je o tikt, komt de cursor in een nieuwe regel in invoegmodus. + + 4. Om een regel BOVEN de cursor te openen, moet je gewoon een hoofdletter + O tikken in plaats van een kleine letter. Probeer dat vanaf de volgende + regel. + + ---> Open een regel hierboven. Tik een O terwijl de cursor hier staat. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 6.2: HET COMMANDO TOEVOEGEN + + ** Tik a om tekst toe te voegen ACHTER de cursor. ** + + 1. Ga naar het begin van de regel beneden met --->. + + 2. Tik e tot de cursor op het einde van "ste" staat. + + 3. Tik een (kleine letter) a ('append') om toe te voegen ACHTER de cursor. + + 4. Vul het woord aan zoals in de volgende regel. Druk om de + invoegmodus te verlaten. + + 5. Ga met e naar het einde van het volgende onvolledige woord en herhaal + de stappen 3 en 4. + + ---> Deze regel ste je in staat om te oef in het toevo van tekst. + Deze regel stelt je in staat om te oefenen in het toevoegen van tekst. + + OPMERKING: a, i en A openen allemaal dezelfde invoegmodus, het enige + verschil is waar tekens worden ingevoegd. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 6.3: VERVANGEN OP EEN ANDERE MANIER + + ** Tik een hoofdletter R om meer dan één teken te vervangen. ** + + 1. Ga naar de eerste regel beneden met --->. Ga met de cursor naar het + begin van de eerste "xxx" . + + 2. Tik nu R en daarna het getal eronder in de tweede regel, zodat xxx + wordt vervangen. + + 3. Druk om de vervangmodus te verlaten. Je ziet dat de rest van de + regel ongewijzigd blijft. + + 4. Herhaal de stappen om de overgebleven xxx te vervangen. + + ---> Optellen van 123 en xxx geeft je xxx. + ---> Optellen van 123 en 456 geeft je 579. + + OPMERKING: Vervangmodus lijkt op invoegmodus, maar elk teken dat je tikt, + vervangt een bestaand teken. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 6.4: TEKST KOPIËREN EN PLAKKEN + + ** Gebruik y om tekst te kopiëren en p om te plakken. ** + + 1. Ga naar de regel beneden met ---> en zet de cursor achter "a)". + + 2. Zet zichtbare modus aan met v en zet de cursor juist voor "eerste". + + 3. Tik y ('yank') om de opgelichte tekst ("dit is het") te kopiëren. + + 4. Ga met j$ met de cursor naar het einde van de volgende regel. + + 5. Plak de gekopieerde tekst met p en tik a tweede . + + 6. Selecteer in zichtbare modus "onderdeel", kopieer het met y en + ga met j$ naar het einde van de tweede regel. Plak de tekst daar + met p . + + ---> a) dit is het eerste onderdeel + b) + + OPMERKING: Je kan y ook als operator gebruiken; yw kopieert een woord, + yy een hele regel. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 6.5: OPTIES GEBRUIKEN + + ** Gebruik een optie voor al dan niet hoofdlettergevoelig zoeken. ** + + 1. Zoek naar 'hoofdlettergevoelig' met /hoofdlettergevoelig + Herhaal het zoeken enkele keren door n te tikken. + + 2. Schakel de optie 'ic' ('ignore case', niet-hoofdlettergevoelig) in + met :set ic + + 3. Zoek met n opnieuw naar 'hoofdlettergevoelig'. Je ziet dat + Hoofdlettergevoelig en HOOFDLETTERGEVOELIG nu ook gevonden worden. + + 4. Schakel de opties 'hlsearch' (treffers oplichten) en 'incsearch' (toon + gedeeltelijke treffers bij intikken) in met :set hls is + + 5. Tik weer /hoofdlettergevoelig en kijk wat er gebeurt. + + 6. Schakel 'hoofdlettergevoelig' weer in met :set noic + + OPMERKING: Schakel het oplichten van treffers uit met :nohlsearch + + OPMERKING: Om bij een enkel zoek-commando de hoofdlettergevoeligheid om + te draaien kan \c worden gebruikt na de zoekterm: + /hoofdlettergevoelig\c . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 6 + + 1. Tik o om een regel te openen ONDER de cursor en invoegmodus te starten. + Tik O om een regel te openen BOVEN de cursor. + + 2. Tik a om tekst toe te voegen NA de cursor. + Tik A om tekst toe te voegen aan het einde van de regel. + + 3. Het commando e beweegt de cursor naar het einde van een woord. + + 4. De operator y yankt (kopieert) tekst, p zet het terug (plakt). + + 5. Met hoofdletter R wordt de vervangmodus geopend, met afgesloten. + + 6. Met :set xxx wordt optie 'xxx' ingeschakeld. Opties zijn bijvoorbeeld: + ic ignorecase geen verschil hoofdletters/kleine letters bij zoeken + is incsearch toon gedeeltelijke treffers tijdens intikken zoekterm + hls hlsearch laat alle treffers oplichten + Je kan zowel de lange als de korte naam van een optie gebruiken. + + 7. Zet 'no' voor de naam om een optie uit te schakelen: :set noic + schakelt 'ic' uit. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 7.1: HULP INROEPEN + + ** Het gebruik van ingebouwde hulp. ** + + Vim heeft een uitgebreid ingebouwd hulpsysteem. Probeer, om te beginnen, + één van deze drie: + - druk de toets (als je die hebt) + - druk de toets (als je die hebt) + - tik :help + + Lees de tekst in het help-venster om te leren hoe 'help' werkt. + Tik CTRL-W CTRL-W om van het ene venster naar het andere te gaan. + Met :q wordt het help-venster gesloten. + + Je kan hulp vinden over nagenoeg elk onderwerp door een argument aan het + commando :help toe te voegen. Probeer deze (en vergeet niet): + :help w + :help c_CTRL-D + :help insert-index + :help user-manual + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 7.2: SCHRIJF EEN CONFIGURATIEBESTAND + + ** Mogelijkheden van Vim uitbreiden. ** + + Vim kent veel meer mogelijkheden dan Vi, maar de meeste zijn standaard + uitgeschakeld. Om meer functies te gebruiken moet je een 'vimrc'-bestand + schrijven. + + 1. Bewerk het bestand 'vimrc'. Hoe dat moet hangt af van je systeem: + :e ~/.vimrc voor Unix + :e $VIM/_vimrc voor MS-Windows + + 2. Lees de inhoud van het voorbeeld-bestand: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Sla het bestand op met :w + + De volgende keer dat je Vim start wordt 'syntaxiskleuring' gebruiken. + Je kan al je voorkeursinstellingen toevoegen aan dit 'vimrc'-bestand. + Tik :help vimrc-intro voor meer informatie. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 7.3: AANVULLEN + + ** Aanvullen van de 'command line' met CTRL-D en . ** + + 1. Zorg dat Vim niet in 'compatible mode' is met :set nocp + + 2. Kijk welke bestanden zich in de map bevinden met :!ls of :!dir + + 3. Tik het begin van een commando: :e + + 4. Met CTRL-D toont Vim een lijst commando's, die met "e" beginnen. + + 5. Druk enkele keren . Vim laat aanvullingen zien, zoals ":edit", + dat we hier gebruiken. + + 6. Voeg een spatie toe en de eerste letter(s) van een bestaande + bestandsnaam: :edit BESTAND + + 7. Druk . Vim vult de naam aan (als hij uniek is). + + OPMERKING: Aanvullen werkt bij tal van commando's. Probeer gewoon CTRL-D + en . Het is bijzonder nuttig bij :help . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 7 + + 1. Tik :help of druk of om een help-venster te openen. + + 2. Tik :help CMD voor hulp over CMD . + + 3. Tik CTRL-W CTRL-W om naar een ander venster te gaan. + + 4. Tik :q om het help-venster te sluiten. + + 5. Maak een bestand met de naam 'vimrc' voor je voorkeursinstellingen. + + 6. Druk CTRL-D tijdens het intikken van een :-commando om mogelijke + aanvullingen te zien. Druk om aanvullen te gebruiken. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Hiermee komen de Vim-lessen tot een einde. Ze waren bedoeld om een kort + overzicht te geven van de Vim-editor, juist voldoende om de editor + redelijk makkelijk te gebruiken. Deze lessen zijn verre van volledig. Vim + kent veel meer commando's. Lees hierna de handleiding voor gebruikers: + ":help user-manual". + + Voor verdere studie wordt aanbevolen: + Vim - Vi Improved - door Steve Oualline + Uitgever: New Riders + Dit is het eerste boek dat geheel aan Vim is gewijd. Speciaal geschikt + voor beginners. Met veel voorbeelden en afbeeldingen. + Zie http://iccf-holland.org/click5.html + + Het volgende boek is ouder en gaat meer over Vi dan Vim, maar het wordt + toch aanbevolen: + Learning the Vi Editor - door Linda Lamb + Uitgever: O'Reilly & Associates Inc. + Het is een goed boek om nagenoeg alles te weten te komen dat je met Vi + zou willen doen. De zesde en vooral de nieuwe zevende druk (onder de + titel Learning the Vi and Vim Editors door Arnold Robbins, Elbert Hannah + & Linda Lamb) bevat ook informatie over Vim. + + Deze lessen zijn geschreven door Michael C. Pierce en Robert K. Ware, + Colorado School of Mines met gebruikmaking van ideeën van Charles Smith + van de Colorado State University. E-mail: bware@mines.colorado.edu. + + Aangepast voor Vim door Bram Moolenaar. + + Nederlandse vertaling door Rob Bishoff, april 2012 + e-mail: rob.bishoff@hccnet.nl) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim74/tutor/tutor.nl.utf-8 b/share/vim/vim74/tutor/tutor.nl.utf-8 new file mode 100644 index 00000000..715c8d3d --- /dev/null +++ b/share/vim/vim74/tutor/tutor.nl.utf-8 @@ -0,0 +1,950 @@ + ========================================================================== + = W e l k o m b i j d e V I M l e s s e n - Versie 1.7 = + ========================================================================== + + Vim is een krachtige editor met veel commando's, te veel om uit te leggen + in lessen zoals deze. Deze lessen zijn bedoeld om voldoende commando's te + behandelen om je in staat te stellen met Vim te werken als een editor voor + algemeen gebruik. + + Deze lessen zullen 25 tot 30 minuten in beslag nemen, afhankelijk van de + tijd die wordt besteed aan het uitproberen van de commando's. + + LET OP: + Door de commando's in deze lessen verandert de tekst. Maak een kopie van + dit bestand om mee te oefenen (als je "vimtutor" uitvoerde, is dit al een + kopie). + + Deze lessen zijn bedoeld om al doende te leren. Dat betekent dat je de + commando's moet uitvoeren om ze goed te leren kennen. Als je de tekst + alleen maar doorleest, zal je de commando's niet leren! + + Zorg ervoor dat de toets NIET is ingedrukt en druk vaak genoeg + op de j-toets om de cursor zo te bewegen dat les 1.1 volledig op het + scherm staat. + + LET OP: In deze lessen worden omwille van de duidelijkheid vaak spaties + gebruikt binnen een commando (bv. "40 G" of "operator [getal] beweging"). + Tik deze spaties echter NIET. Ze verstoren de werking. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.1: VERPLAATS DE CURSOR + + ** De cursor wordt verplaatst met de toetsen h, j, k, l zoals aangegeven. ** + ^ + k Hint: De h is de meest linkse en beweegt naar links. + < h l > De l is de meest rechtse en beweegt naar rechts. + j De j lijkt op een pijl naar beneden. + v + + 1. Beweeg de cursor over het scherm om er vertrouwd mee te raken. + + 2. Druk de omlaag-toets (j) tot hij repeteert. + Nu weet je hoe je de volgende les bereikt. + + 3. Gebruik de omlaag-toets om naar les 1.2 te gaan. + + OPMERKING: Als je twijfelt aan wat je tikte, druk om in de opdracht- + modus te komen. Tik daarna het commando dat bedoeld wordt. + + OPMERKING: Pijltjes-toetsen werken ook. Met de hjkl-toetsen kan je sneller + rondbewegen, als je er eenmaal aan gewend bent. Echt waar! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.2: VIM AFSLUITEN + + !! LET OP: Lees deze les goed door voordat je iets uitvoert!! + + 1. Druk de toets (om zeker in de opdrachtmodus te zitten). + + 2. Tik :q! + Hiermee wordt de editor afgesloten. Alle veranderingen gaan VERLOREN. + + 3. Nu zie je de shell-prompt. Tik het commando waarmee je deze lessen + hebt opgeroepen. Dat is normaal gesproken: vimtutor + + 4. Als je deze stappen goed hebt doorgelezen, voer dan de stappen 1 tot 3 + uit om de editor te verlaten en weer op te starten. + + LET OP: :q! verwerpt alle veranderingen die je aanbracht. Een paar + lessen verder zal je leren hoe veranderingen worden opgeslagen in + een bestand. + + 5. Beweeg de cursor omlaag naar les 1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.3: TEKST BEWERKEN - WISSEN + + ** Tik x om het teken onder de cursor te wissen. ** + + 1. Ga met de cursor naar de regel verderop met --->. + + 2. Zet de cursor op een teken dat moet worden gewist om een fout te + herstellen. + + 3. Tik x om het ongewenste teken te wissen. + + 4. Herhaal deze stappen tot de regel goed is. + + ---> Vi kkent eenn opdracccchtmodus en een invooegmmmmodus. + + 5. Nu de regel gecorrigeerd is kan je naar les 1.4 gaan. + + LET OP: Probeer de lessen niet uit je hoofd te leren. Leer al doende. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.4: TEKST BEWERKEN - INVOEGEN + + ** Tik i ('insert') om tekst in te voegen. ** + + 1. Ga met de cursor naar de eerste regel verderop met --->. + + 2. Maak de eerste regel gelijk aan de tweede. Zet daarvoor de cursor op + de plaats waar tekst moet worden ingevoegd. + + 3. Tik i en daarna de nodige aanvullingen. + + 4. Tik na elke herstelde fout om terug te keren in de opdrachtmodus. + Herhaal de stappen 2 tot 4 om de zin te verbeteren. + + ---> Aan regel ontekt wat . + ---> Aan deze regel ontbreekt wat tekst. + + 5. Ga naar les 1.5 als je gewend bent aan het invoegen van tekst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.5: TEKST BEWERKEN - TOEVOEGEN + + ** Tik A ('append') om tekst toe te voegen. ** + + 1. Ga met de cursor naar de eerste regel verderop met --->. + Het maakt niet uit waar de cursor in deze regel staat. + + 2. Tik hoofdletter A en tik de nodige aanvullingen. + + 3. Tik nadat de tekst is aangevuld. Zo keer je terug in de + opdrachtmodus. + + 4. Ga naar de tweede regel verderop met ---> en herhaal stap 2 en 3 + om deze zin te corrigeren. + + ---> Er ontbreekt wat tekst aan de + Er ontbreekt wat tekst aan deze regel. + ---> Hier ontbreekt ook w + Hier ontbreekt ook wat tekst. + + 5. Ga naar les 1.6 als je vertrouwd bent geraakt aan het toevoegen + van tekst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 1.6: EEN BESTAND EDITTEN + + ** Gebruik :wq om een bestand op te slaan en de editor te verlaten. ** + + !! LET OP: Lees deze les helemaal door voordat je een van de volgende + stappen uitvoert!! + + 1. Verlaat deze les zoals je in les 1.2 deed: :q! + Of gebruik een andere terminal als je daar de beschikking over hebt. Doe + daar het volgende. + + 2. Tik het volgende commando na de shell-prompt: vim les + 'vim' (vaak ook 'vi') is het commando om de Vim-editor te starten, + 'les' is de naam van het bestand, dat je gaat bewerken. Kies een andere + naam als er al een bestand 'les' bestaat, dat niet veranderd mag worden. + + 3. Voeg naar eigen keus tekst toe, zoals je geleerd hebt in eerdere lessen. + + 4. Sla het bestand met de wijzigingen op en verlaat Vim met :wq + + 5. Herstart vimtutor als je deze bij stap 1 hebt verlaten en ga verder met + de volgende samenvatting. + + 6. Voer deze stappen uit nadat je ze hebt gelezen en begrepen. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 1 + + 1. De cursor wordt bewogen met de pijltjestoetsen of de hjkl-toetsen. + h (links) j (omlaag) k (omhoog) l (rechts) + + 2. Start Vim van de shell-prompt. Tik: vim BESTANDSNAAM + + 3. Sluit Vim af met :q! om de veranderingen weg te gooien. + OF tik :wq om de veranderingen te bewaren. + + 4. Wis het teken onder de cursor met: x + + 5. Invoegen of toevoegen van tekst, tik: + i en daarna de in te voegen tekst voeg in vanaf de cursor + A en daarna de toe te voegen tekst voeg toe achter de regel + + OPMERKING: Met kom je terug in opdrachtmodus en wordt een ongewenst + of gedeeltelijk uitgevoerd commando afgebroken. + + Ga nu verder met les 2.1. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.1: WIS-COMMANDO'S + + ** Tik dw ('delete word') om een woord te wissen. ** + + 1. Druk op om zeker in de opdrachtmodus te zijn. + + 2. Ga naar de regel hieronder, die met ---> begint. + + 3. Ga met de cursor naar het begin van een woord dat moet worden gewist. + + 4. Met het tikken van dw verdwijnt het woord. + + OPMERKING: De letter d verschijnt op de laatste regel van het scherm + zodra je hem tikt. Vim is aan het wachten tot je de w tikt. + Als je een ander teken dan d ziet, heb je iets verkeerds + getikt. Druk op en begin opnieuw. + + NOG EEN OPMERKING: Dit werkt alleen als de optie 'showcmd' is ingeschakeld. + Dat gebeurt met :set showcmd + + ---> Er zijn een het paar ggg woorden, die niet in deze len zin thuishoren. + + 5. Herhaal de stappen 3 en 4 tot de zin goed is en ga naar les 2.2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.2: MEER WIS-COMMANDO'S + + ** Tik d$ om te wissen tot het einde van de regel. ** + + 1. Druk op om zeker in de opdrachtmodus te zijn. + + 2. Ga naar de regel hieronder, die met ---> begint. + + 3. Ga met de cursor naar het einde van de correcte regel (NA de eerste . ). + + 4. Tik d$ om te wissen tot het einde van de regel. + + ---> Iemand heeft het einde van deze regel dubbel getikt. dubbel getikt. + + 5. Ga naar les 2.3 voor uitleg. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.3: OVER OPERATOREN EN BEWEGINGEN + + Veel commando's die de tekst veranderen, bestaan uit een operator en een + beweging. De samenstelling van een wis-commando met de operator d is: + d beweging + + Daarbij is: + d - de wis-operator + beweging - het bereik waarop de operator werkt (zie het lijstje hieronder) + + Een korte lijst van bewegingen vanaf de cursor: + w - tot het begin van het volgende woord, ZONDER het eerste teken daarvan. + e - tot het einde van het huidige woord, INCLUSIEF het laatste teken. + $ - tot het einde van de regel, INCLUSIEF het laatste teken. + + Het tikken van de wist tekst vanaf de cursor tot het eind van het woord. + + OPMERKING: Het intikken van alleen maar de beweging, zonder een operator, + in de opdrachtmodus beweegt de cursor (respectievelijk naar het + volgende woord, naar het eind van het huidige woord en naar het + eind van de regel). + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.4: GEBRUIK VAN EEN TELLER BIJ EEN BEWEGING + + ** Een getal voor een beweging herhaalt het zoveel keer. ** + + 1. Ga naar de regel hieronder, die met ---> begint. + + 2. Tik 2w zodat de cursor twee woorden vooruit gaat. + + 3. Tik 3e zodat de cursor naar het einde van het derde woord gaat. + + 4. Tik 0 (nul) om naar het begin van de regel te gaan. + + 5. Herhaal de stappen 2 en 3 met andere getallen. + + ---> Dit is een regel met woorden waarin je heen en weer kan bewegen. + + 6. Ga verder met les 2.5. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.5: GEBRUIK EEN TELLER OM MEER TE WISSEN + + ** Een getal met een operator zorgt dat deze zoveel keer wordt herhaald. ** + + Bij de combinatie van wis-operator en beweging kan je voor de beweging een + teller zetten om meer te wissen: + d [teller] beweging + + 1. Ga naar het eerste woord in HOOFDLETTERS in de regel na --->. + + 2. Met d2w worden twee woorden (in dit voorbeeld in hoofdletters) gewist. + + 3. Herhaal de stappen 1 en 2 met verschillende tellers om de verschillende + woorden in hoofdletters met één commando te wissen. + + ---> deze ABC DE regel FGHI JK LMN OP is QZ RS ontdaan van rommel. + + OPMERKING: De teller kan ook aan het begin staan: d2w en 2dw werken allebei. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.6: BEWERKING VAN HELE REGELS + + ** Tik dd om een hele regel te wissen. ** + + Omdat het wissen van een hele regel vaak voorkomt, besloten de ontwerpers + van Vi dat met het tikken van dd simpelweg een hele regel gewist wordt. + + 1. Ga met de cursor naar de tweede regel van de zinnetjes hieronder. + + 2. Tik dd om de regel te wissen. + + 3. Ga nu naar de vierde regel. + + 4. Tik 2dd om twee regels te wissen. + + ---> 1) Rozen zijn rood. + ---> 2) Modder is leuk. + ---> 3) Viooltjes zijn blauw. + ---> 4) Ik heb een auto. + ---> 5) De klok slaat de tijd. + ---> 6) Suiker is zoet. + ---> 7) En dat ben jij ook. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 2.7: HET COMMANDO HERSTEL + + ** u maakt het laatste commando ongedaan, U herstelt een hele regel. ** + + 1. Ga met de cursor naar de regel hieronder met ---> en zet hem + op de eerste fout. + + 2. Tik x om het eerste ongewenste teken te wissen. + + 3. Tik nu u en maak daarmee het vorige commando ongedaan. + + 4. Herstel nu alle fouten in de regel met het x commando. + + 5. Tik een hoofdletter U om de regel in z'n oorspronkelijke staat terug + te brengen. + + 6. Tik nu een paar keer u en herstel daarmee de U en eerdere commando's. + + 7. Tik nu een paar keer CTRL-R (Ctrl-toets ingedrukt houden en R tikken) en + voer daarmee de commando's opnieuw uit: 'redo' oftewel 'undo de undo's'. + + ---> Heerstel de fouten inn deeze regel en brenng ze weer terugg met undo. + + 8. Dit zijn heel nuttige commando's. Ga verder met samenvatting van les 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 2 + + 1. Wis van de cursor tot het volgende woord met dw + + 2. Wis van de cursor tot het eind van de regel met d$ + + 3. Wis de hele regel met dd + + 4. Herhaal een beweging door er een getal voor te zetten: 2w + + 5. De opbouw van een wijzigingscommando is: + operator [getal] beweging + daarbij is: + operator - wat er moet gebeuren, bijvoorbeeld d om te wissen + [getal] - een (niet-verplichte) teller om 'beweging' te herhalen + beweging - een beweging door de te wijzigen tekst zoals w (woord) + of $ (tot het einde van de regel) enz. + + 6. Ga naar het begin van de regel met nul: 0 + + 7. Undo de voorgaande actie met u (kleine letter) + Undo alle veranderingen in een regel met U (hoofdletter) + Undo de undo's met CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 3.1: HET COMMANDO PLAK + + ** Tik p ('put') en plak daarmee zojuist gewiste tekst na te cursor. ** + + 1. Ga met de cursor naar de eerste regel met ---> hierna. + + 2. Wis de regel met dd en bewaar hem zodoende in een Vim-register. + + 3. Ga naar de c-regel, waar de gewiste regel ONDER moet komen. + + 4. Tik p om de regel terug te zetten onder de regel met de cursor. + + 5. Herhaal de stappen 2 tot 4 om de regels in de goede volgorde te zetten. + +---> d) Krijg je het ook onder de knie? +---> b) Viooltjes zijn blauw, +---> c) Begrip is te leren, +---> a) Rozen zijn rood, + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 3.2: HET COMMANDO VERVANG + + ** Tik rx ('replace') om het teken onder de cursor te vervangen door x. ** + + 1. Ga naar de eerste regel hieronder met --->. + + 2. Zet de cursor op de eerste fout. + + 3. Tik r en dan het teken dat er hoort te staan. + + 4. Herhaal de stappen 2 en 3 tot de eerste regel gelijk is aan de tweede. + + ---> Bij het tokken van dezf hegel heeft iemamd verklerde letters getikt. + ---> Bij het tikken van deze regel heeft iemand verkeerde letters getikt. + + 5. Ga nu naar les 3.3. + + LET OP: Door het te doen, leer je beter dan door het uit je hoofd te leren. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 3.3: HET COMMANDO VERANDER + + ** Tik ce om te veranderen tot het einde van een woord. ** + + 1. Ga met de cursor naar de eerste regel hieronder met --->. + + 2. Zet de cursor op de u van ruch. + + 3. Tik ce en de juiste letters (in dit geval "egel"). + + 4. Druk en ga naar het volgende teken dat moet worden veranderd. + + 5. Herhaal de stappen 3 en 4 tot de eerste regel gelijk is aan de tweede. + + ---> In deze ruch staan een paar weedrim die veranderd moud worden. + ---> In deze regel staan een paar woorden die veranderd moeten worden. + + LET OP: Met ce wordt (het laatste deel van) een woord gewist en kom je + in de invoegmodus. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 3.4: MEER VERANDERINGEN MET c + + 1. Het commando verander ('change') werkt op dezelfde manier als wis. De + opbouw is: + c [teller] beweging + + 2. De bewegingen zijn hetzelfde, zoals w (woord) en $ (einde regel). + + 3. Ga naar de eerste regel hieronder met --->. + + 4. Zet de cursor op de eerste fout. + + 5. Tik c$ en tik de rest van de regel zodat hij gelijk wordt aan de + tweede en sluit af met . + + ---> Het einde van deze regel moet precies zo worden als de tweede regel. + ---> Het einde van deze regel moet gecorrigeerd worden met het commando c$. + + OPMERKING: Je kan de toets gebruiken om tikfouten te herstellen. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 3 + + 1. Tik p om tekst terug te plakken, die zojuist is gewist. Dit zet de + gewiste tekst ACHTER de cursor (als een hele regel is gewist komt deze + op de regel ONDER de cursor. + + 2. Het teken waarop de cursor staat wordt vervangen met r gevolgd door + het teken dat je daar wilt hebben. + + 3. Het commando 'verander' stelt je in staat om tekst te veranderen vanaf + de cursor tot waar de 'beweging' je brengt. Dat wil zeggen: tik ce om + te veranderen vanaf de cursor tot het einde van het woord, c$ om te + veranderen tot het einde van de regel. + + 4. De opbouw van het commando verander is: + c [teller] beweging + + Ga nu naar de volgende les. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 4.1: PLAATS VAN DE CURSOR EN STATUS VAN HET BESTAND + + ** CTRL-G laat zien waar (regelnummer) je je bevindt en wat de status van + het bestand is. Met [nummer] G ga je naar een bepaalde regel. ** + + LET OP: Lees de hele les voordat je een stap uitvoert!! + + 1. Hou de Ctrl-toets ingedrukt en tik g . Dit noemen we CTRL-G. + Onderaan de pagina verschijnt een boodschap met de bestandsnaam en de + positie in het bestand. Onthou het regelnummer voor stap 3. + + OPMERKING: Als de optie 'ruler' aan staat, wordt de positie van de cursor + (regelnummer, kolom) steeds in de rechter-onderhoek van het + scherm vermeld. In dit geval vermeldt CTRL-G geen regelnummer. + CTRL-G geeft ook de status aan, namelijk of de tekst veranderd + is ('modified') sinds het de laatste keer is opgeslagen. + + 2. Tik hoofdletter G om naar het einde van het bestand te gaan. + Tik gg om naar het begin van het bestand te gaan. + + 3. Tik het regelnummer waar je bij stap 1 was en daarna G . Dit brengt je + terug naar de regel waar je was toen je de eerste keer CTRL-G tikte. + + 4. Voer de stappen 1 tot 3 uit als je dit goed hebt gelezen. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 4.2: HET COMMANDO ZOEKEN + + ** Met /ZOEK wordt naar de zoekterm (één of meer woorden) gezocht. ** + + 1. Tik in de opdrachtmodus het teken / . Je ziet dat het met de cursor + aan de onderkant van het scherm verschijnt, zoals bij het :-commando. + + 2. Tik nu 'ffouut' . Dit is het woord waarnaar gezocht wordt. + + 3. Tik n om verder te zoeken met dezelfde zoekterm. + Zoek met N met dezelfde zoekterm in de tegenovergestelde richting. + + 4. Zoek in achterwaartse richting met ?zoekterm in plaats van / . + + 5. Keer terug naar de vorige hit met CTRL-O (hou Ctrl-toets ingedrukt en + tik letter o). Herhaal om verder terug te gaan. CTRL-I gaat vooruit. + + ---> "ffouut" is niet de juiste spelling van fout, ffouut is een fout. + + OPMERKING: Als zoeken het einde van het bestand bereikt, wordt vanaf het + begin doorgezocht, tenzij de optie 'wrapscan' is uitgeschakeld. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 4.3: GA NAAR CORRESPONDERENDE HAAKJES + + ** Tik % om naar corresponderende ), ] of } te gaan. ** + + 1. Zet de cursor op een (, [ of { in de regel hieronder met --->. + + 2. Tik dan het teken % . + + 3. De cursor gaan naar het overeenkomstige haakje. + + 4. Met opnieuw % gaat de cursor terug naar het eerste haakje. + + 5. Plaats de cursor op een ander haakje en bekijk wat % doet. + + ---> Dit ( is een testregel met ('s, ['s ] en {'s } erin. )) + + OPMERKING: Dit is nuttig bij het debuggen van een programma waarin haakjes + niet corresponderen. Met de optie 'showmatch' wordt ook + aangegeven of haakjes corresponderen, maar de cursor wordt niet + (blijvend) verplaatst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 4.4: HET VERVANG COMMANDO + + ** Tik :s/oud/nieuw/g om 'oud' door 'nieuw' te vervangen. ** + + 1. Ga met de cursor naar de regel hieronder met --->. + + 2. Tik :s/dee/de . Zoals je ziet, vervangt ('substitute') dit + commando alleen de eerste "dee" in de regel. + + 3. Tik nu :s/dee/de/g . Met de g-vlag ('global') wordt elke "dee" in de + regel vervangen. + + ---> dee beste tijd om dee bloemen te zien is in dee lente. + + 4. Om in (een deel van) een tekst elk 'oud' te vervangen door 'nieuw': + tik :#,#s/oud/nieuw/g waar #,# de regelnummers zijn die het gebied + begrenzen waarin wordt vervangen. + tik :%s/oud/nieuw/g om alles te vervangen in het hele bestand. + tik :%s/oud/nieuw/gc om elke 'oud' in het hele bestand te vinden + en te vragen of er vervangen moet worden. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 4 + + 1. CTRL-G laat positie in het bestand zien en de status van het bestand. + G verplaatst je naar het einde van het bestand. + nummer G verplaatst je naar regelnummer. + gg verplaatst je naar de eerste regel. + + 2. Met / en een zoekterm wordt VOORWAARTS gezocht naar de term. + Met ? en een zoekterm wordt ACHTERWAARTS gezocht naar de term. + Tik n na een zoekopdracht om de volgende hit te vinden, + of tik N om in de andere richting te zoeken. + CTRL-O brengt je naar eerdere hit, CTRL-I naar nieuwere. + + 3. Tik % terwijl de cursor op een haakje ([{}]) staat, om naar het + corresponderende haakje te gaan. + + 4. :s/oud/nieuw vervangt het eerste 'oud' in een regel door 'nieuw'. + :s/oud/nieuw/g vervangt elk 'oud' in een regel door 'nieuw'. + :#,#s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' tussen de regelnummers. + :%s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' in het hele bestand. + Voeg c toe (:%s/oud/nieuw/gc) om elke keer om bevestiging + ('confirmation') te vragen. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 5.1: HOE EEN EXTERN COMMANDO WORDT UITGEVOERD + + ** Tik :! gevolgd door een extern commando om dat uit te voeren. ** + + 1. Tik het commando : waarmee de cursor op de onderste regel van het + scherm komt te staan. Nu kan je een opdracht geven via de commando-regel. + + 2. Tik een ! (uitroepteken). Dit stelt je in staat om elk shell-commando + uit te voeren. + + 3. Tik bijvoorbeeld ls na het uitroepteken en daarna . Hiermee + krijg je de inhoud van je map te zien, net alsof je de opdracht gaf + vanaf de shell-prompt. Probeer :!dir als het niet werkt. + + OPMERKING: Elk extern commando kan op deze manier uitgevoerd worden, ook + met argumenten. + + OPMERKING: Alle commando's na : moeten worden afgesloten met . + Vanaf nu zullen we dat niet meer altijd vermelden. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 5.2: MEER OVER HET OPSLAAN VAN BESTANDEN + + ** Tik :w BESTANDSNAAM om de tekst mèt veranderingen op te slaan. ** + + 1. Tik :!dir of :!ls om de inhoud van je map te tonen. Je weet + inmiddels dat je daarna een moet tikken. + + 2. Kies een bestandsnaam die nog niet bestaat, bijvoorbeeld TEST. + + 3. Tik nu: :w TEST (als je de naam TEST hebt gekozen). + + 4. Hierdoor wordt het hele bestand (de VIM lessen) opgeslagen onder de + naam TEST. Tik weer :!dir of :!ls om dit te controleren. + + OPMERKING: Als je Vim zou verlaten en opnieuw zou starten met vim TEST is + het bestand een exacte kopie van de lessen, zoals je ze opsloeg. + + 5. Wis het bestand nu met de opdracht (MS-DOS) :!del TEST + of (Unix) :!rm TEST + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 5.3: EEN DEEL VAN DE TEKST OPSLAAN + + ** Sla een deel van het bestand op met v beweging :w BESTANDSNAAM ** + + 1. Ga naar deze regel. + + 2. Tik v en ga met de cursor naar stap 5 hieronder. Je ziet dat de + tekst oplicht. + + 3. Tik : . Onderaan het scherm zal :'<,'> verschijnen. + + 4. Tik w TEST , waar TEST een bestandsnaam is, die nog niet bestaat. + Controleer dat je :'<,'>w TEST ziet staan voordat je tikt. + + 5. Vim slaat nu de geselecteerde regels op in het bestand TEST. Met + :!dir of !ls kan je dat zien. Wis het nog niet! We zullen het in + de volgende les gebruiken. + + OPMERKING: Het tikken van v zet zichtbare modus ('visual selection') aan. + Je kan de cursor rondbewegen om de selectie groter of kleiner + te maken. Vervolgens kan je een commando gebruiken om iets met + de tekst te doen. Met d bijvoorbeeld wis je de tekst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 5.4: OPHALEN EN SAMENVOEGEN VAN BESTANDEN + + ** Tik :r BESTANDSNAAM om de inhoud van een bestand in te voegen. ** + + 1. Zet de cursor precies boven deze regel. + + OPMERKING: Na het uitvoeren van stap 2 zie je tekst van les 5.3. Scrol + daarna naar beneden om deze les weer te zien. + + 2. Haal nu het bestand TEST op met het commando :r TEST . + Het bestand dat je ophaalt komt onder de regel waarin de cursor staat. + + 3. Controleer dat er een bestand is opgehaald. Ga met de cursor omhoog. + Dan zie je de tekst van les 5.3 dubbel, het origineel en de versie uit + het bestand. + + OPMERKING: Je kan ook de uitvoer van een extern commando inlezen. Om een + voorbeeld te geven: :r !ls leest de uitvoer van het commando + ls en zet dat onder de regel waarin de cursor staat. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 5 + + 1. :!COMMANDO voert een extern commando uit. + Enkele bruikbare voorbeelden zijn: + (MS-DOS) (Unix) + :!dir :!ls - laat de inhoud van een map zien + :!del BESTAND :!rm BESTAND - wist bestand BESTAND + + 2. :w BESTANDSNAAM schrijft het huidige Vim-bestand naar disk met de + naam BESTANDSNAAM. + + 3. v beweging :w BESTANDSNAAM laat je in zichtbare modus een fragment + selecteren, dat wordt opgeslagen in het bestand BESTANDSNAAM. + + 4. :r BESTANDSNAAM haalt het bestand BESTANDSNAAM op en voegt het onder + de cursor-positie in de tekst in. + + 5. :r !dir leest de uitvoer van het externe commando dir en zet het onder + de cursor-positie. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 6.1: HET COMMANDO OPEN + + ** Tik o om een regel onder de cursor te openen in invoegmodus. ** + + 1. Ga naar de eerste regel beneden met --->. + + 2. Tik de kleine letter o en open daarmee een regel ONDER de cursor en + ga naar de invoegmodus. + + 3. Tik wat tekst in en sluit af met om de invoegmodus te verlaten. + + ---> Als je o tikt, komt de cursor in een nieuwe regel in invoegmodus. + + 4. Om een regel BOVEN de cursor te openen, moet je gewoon een hoofdletter + O tikken in plaats van een kleine letter. Probeer dat vanaf de volgende + regel. + + ---> Open een regel hierboven. Tik een O terwijl de cursor hier staat. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 6.2: HET COMMANDO TOEVOEGEN + + ** Tik a om tekst toe te voegen ACHTER de cursor. ** + + 1. Ga naar het begin van de regel beneden met --->. + + 2. Tik e tot de cursor op het einde van "ste" staat. + + 3. Tik een (kleine letter) a ('append') om toe te voegen ACHTER de cursor. + + 4. Vul het woord aan zoals in de volgende regel. Druk om de + invoegmodus te verlaten. + + 5. Ga met e naar het einde van het volgende onvolledige woord en herhaal + de stappen 3 en 4. + + ---> Deze regel ste je in staat om te oef in het toevo van tekst. + Deze regel stelt je in staat om te oefenen in het toevoegen van tekst. + + OPMERKING: a, i en A openen allemaal dezelfde invoegmodus, het enige + verschil is waar tekens worden ingevoegd. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 6.3: VERVANGEN OP EEN ANDERE MANIER + + ** Tik een hoofdletter R om meer dan één teken te vervangen. ** + + 1. Ga naar de eerste regel beneden met --->. Ga met de cursor naar het + begin van de eerste "xxx" . + + 2. Tik nu R en daarna het getal eronder in de tweede regel, zodat xxx + wordt vervangen. + + 3. Druk om de vervangmodus te verlaten. Je ziet dat de rest van de + regel ongewijzigd blijft. + + 4. Herhaal de stappen om de overgebleven xxx te vervangen. + + ---> Optellen van 123 en xxx geeft je xxx. + ---> Optellen van 123 en 456 geeft je 579. + + OPMERKING: Vervangmodus lijkt op invoegmodus, maar elk teken dat je tikt, + vervangt een bestaand teken. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 6.4: TEKST KOPIËREN EN PLAKKEN + + ** Gebruik y om tekst te kopiëren en p om te plakken. ** + + 1. Ga naar de regel beneden met ---> en zet de cursor achter "a)". + + 2. Zet zichtbare modus aan met v en zet de cursor juist voor "eerste". + + 3. Tik y ('yank') om de opgelichte tekst ("dit is het") te kopiëren. + + 4. Ga met j$ met de cursor naar het einde van de volgende regel. + + 5. Plak de gekopieerde tekst met p en tik a tweede . + + 6. Selecteer in zichtbare modus "onderdeel", kopieer het met y en + ga met j$ naar het einde van de tweede regel. Plak de tekst daar + met p . + + ---> a) dit is het eerste onderdeel + b) + + OPMERKING: Je kan y ook als operator gebruiken; yw kopieert een woord, + yy een hele regel. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 6.5: OPTIES GEBRUIKEN + + ** Gebruik een optie voor al dan niet hoofdlettergevoelig zoeken. ** + + 1. Zoek naar 'hoofdlettergevoelig' met /hoofdlettergevoelig + Herhaal het zoeken enkele keren door n te tikken. + + 2. Schakel de optie 'ic' ('ignore case', niet-hoofdlettergevoelig) in + met :set ic + + 3. Zoek met n opnieuw naar 'hoofdlettergevoelig'. Je ziet dat + Hoofdlettergevoelig en HOOFDLETTERGEVOELIG nu ook gevonden worden. + + 4. Schakel de opties 'hlsearch' (treffers oplichten) en 'incsearch' (toon + gedeeltelijke treffers bij intikken) in met :set hls is + + 5. Tik weer /hoofdlettergevoelig en kijk wat er gebeurt. + + 6. Schakel 'hoofdlettergevoelig' weer in met :set noic + + OPMERKING: Schakel het oplichten van treffers uit met :nohlsearch + + OPMERKING: Om bij een enkel zoek-commando de hoofdlettergevoeligheid om + te draaien kan \c worden gebruikt na de zoekterm: + /hoofdlettergevoelig\c . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 6 + + 1. Tik o om een regel te openen ONDER de cursor en invoegmodus te starten. + Tik O om een regel te openen BOVEN de cursor. + + 2. Tik a om tekst toe te voegen NA de cursor. + Tik A om tekst toe te voegen aan het einde van de regel. + + 3. Het commando e beweegt de cursor naar het einde van een woord. + + 4. De operator y yankt (kopieert) tekst, p zet het terug (plakt). + + 5. Met hoofdletter R wordt de vervangmodus geopend, met afgesloten. + + 6. Met :set xxx wordt optie 'xxx' ingeschakeld. Opties zijn bijvoorbeeld: + ic ignorecase geen verschil hoofdletters/kleine letters bij zoeken + is incsearch toon gedeeltelijke treffers tijdens intikken zoekterm + hls hlsearch laat alle treffers oplichten + Je kan zowel de lange als de korte naam van een optie gebruiken. + + 7. Zet 'no' voor de naam om een optie uit te schakelen: :set noic + schakelt 'ic' uit. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 7.1: HULP INROEPEN + + ** Het gebruik van ingebouwde hulp. ** + + Vim heeft een uitgebreid ingebouwd hulpsysteem. Probeer, om te beginnen, + één van deze drie: + - druk de toets (als je die hebt) + - druk de toets (als je die hebt) + - tik :help + + Lees de tekst in het help-venster om te leren hoe 'help' werkt. + Tik CTRL-W CTRL-W om van het ene venster naar het andere te gaan. + Met :q wordt het help-venster gesloten. + + Je kan hulp vinden over nagenoeg elk onderwerp door een argument aan het + commando :help toe te voegen. Probeer deze (en vergeet niet): + :help w + :help c_CTRL-D + :help insert-index + :help user-manual + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 7.2: SCHRIJF EEN CONFIGURATIEBESTAND + + ** Mogelijkheden van Vim uitbreiden. ** + + Vim kent veel meer mogelijkheden dan Vi, maar de meeste zijn standaard + uitgeschakeld. Om meer functies te gebruiken moet je een 'vimrc'-bestand + schrijven. + + 1. Bewerk het bestand 'vimrc'. Hoe dat moet hangt af van je systeem: + :e ~/.vimrc voor Unix + :e $VIM/_vimrc voor MS-Windows + + 2. Lees de inhoud van het voorbeeld-bestand: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Sla het bestand op met :w + + De volgende keer dat je Vim start wordt 'syntaxiskleuring' gebruiken. + Je kan al je voorkeursinstellingen toevoegen aan dit 'vimrc'-bestand. + Tik :help vimrc-intro voor meer informatie. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Les 7.3: AANVULLEN + + ** Aanvullen van de 'command line' met CTRL-D en . ** + + 1. Zorg dat Vim niet in 'compatible mode' is met :set nocp + + 2. Kijk welke bestanden zich in de map bevinden met :!ls of :!dir + + 3. Tik het begin van een commando: :e + + 4. Met CTRL-D toont Vim een lijst commando's, die met "e" beginnen. + + 5. Druk enkele keren . Vim laat aanvullingen zien, zoals ":edit", + dat we hier gebruiken. + + 6. Voeg een spatie toe en de eerste letter(s) van een bestaande + bestandsnaam: :edit BESTAND + + 7. Druk . Vim vult de naam aan (als hij uniek is). + + OPMERKING: Aanvullen werkt bij tal van commando's. Probeer gewoon CTRL-D + en . Het is bijzonder nuttig bij :help . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + SAMENVATTING Les 7 + + 1. Tik :help of druk of om een help-venster te openen. + + 2. Tik :help CMD voor hulp over CMD . + + 3. Tik CTRL-W CTRL-W om naar een ander venster te gaan. + + 4. Tik :q om het help-venster te sluiten. + + 5. Maak een bestand met de naam 'vimrc' voor je voorkeursinstellingen. + + 6. Druk CTRL-D tijdens het intikken van een :-commando om mogelijke + aanvullingen te zien. Druk om aanvullen te gebruiken. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Hiermee komen de Vim-lessen tot een einde. Ze waren bedoeld om een kort + overzicht te geven van de Vim-editor, juist voldoende om de editor + redelijk makkelijk te gebruiken. Deze lessen zijn verre van volledig. Vim + kent veel meer commando's. Lees hierna de handleiding voor gebruikers: + ":help user-manual". + + Voor verdere studie wordt aanbevolen: + Vim - Vi Improved - door Steve Oualline + Uitgever: New Riders + Dit is het eerste boek dat geheel aan Vim is gewijd. Speciaal geschikt + voor beginners. Met veel voorbeelden en afbeeldingen. + Zie http://iccf-holland.org/click5.html + + Het volgende boek is ouder en gaat meer over Vi dan Vim, maar het wordt + toch aanbevolen: + Learning the Vi Editor - door Linda Lamb + Uitgever: O'Reilly & Associates Inc. + Het is een goed boek om nagenoeg alles te weten te komen dat je met Vi + zou willen doen. De zesde en vooral de nieuwe zevende druk (onder de + titel Learning the Vi and Vim Editors door Arnold Robbins, Elbert Hannah + & Linda Lamb) bevat ook informatie over Vim. + + Deze lessen zijn geschreven door Michael C. Pierce en Robert K. Ware, + Colorado School of Mines met gebruikmaking van ideeën van Charles Smith + van de Colorado State University. E-mail: bware@mines.colorado.edu. + + Aangepast voor Vim door Bram Moolenaar. + + Nederlandse vertaling door Rob Bishoff, april 2012 + e-mail: rob.bishoff@hccnet.nl) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim74/tutor/tutor.no b/share/vim/vim74/tutor/tutor.no new file mode 100644 index 00000000..2f1d14c2 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.no @@ -0,0 +1,973 @@ +=============================================================================== += V e l k o m m e n t i l i n n f ø r i n g e n i V i m -- Ver. 1.7 = +=============================================================================== + + Vim er en meget kraftig editor med mange kommandoer, alt for mange til å + kunne gå gjennom alle i en innføring som denne. Den er beregnet på å + sette deg inn i bruken av nok kommandoer så du vil være i stand til lett + å kunne bruke Vim som en editor til alle formål. + + Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30 + minutter, avhengig av hvor mye tid du bruker til eksperimentering. + + MERK: + Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne + filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er + dette allerede en kopi). + + Det er viktig å huske at denne innføringen er beregnet på læring gjennom + bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig. + Hvis du bare leser teksten, vil du glemme kommandoene! + + Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for + å flytte markøren helt til leksjon 1.1 fyller skjermen. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.1: FLYTTING AV MARKØREN + + + ** For å flytte markøren, trykk tastene h, j, k, l som vist. ** + ^ + k Tips: h-tasten er til venstre og flytter til venstre. + < h l > l-tasten er til høyre og flytter til høyre. + j j-tasten ser ut som en pil som peker nedover. + v + 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. + + 2. Hold inne nedovertasten (j) til den repeterer. + Nå vet du hvordan du beveger deg til neste leksjon. + + 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. + +Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til + normalmodus. Skriv deretter kommandoen du ønsket på nytt. + +Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til + å bevege markøren mye raskere når du er blitt vant til det. Helt sant! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.2: AVSLUTTE VIM + + + !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! + + 1. Trykk -tasten (for å forsikre deg om at du er i normalmodus). + + 2. Skriv: :q! . + Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. + + 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne + innføringen. Den er: vimtutor + + 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å + avslutte og starte editoren på nytt. + +MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen + få leksjoner vil du lære hvordan du lagrer forandringene til en fil. + + 5. Flytt markøren ned til leksjon 1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.3: REDIGERING AV TEKST -- SLETTING + + + ** Trykk x for å slette tegnet under markøren. ** + + 1. Flytt markøren til den første linjen merket med --->. + + 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som + skal slettes. + + 3. Trykk tasten x for å slette det uønskede tegnet. + + 4. Repeter punkt 2 til 4 til setningen er lik den som er under. + +---> Hessstennnn brrråsnudddde ii gaaata. +---> Hesten bråsnudde i gata. + + 5. Nå som linjen er korrekt, gå til leksjon 1.4. + +MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men + bruk dem helt til de sitter. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING + + + ** Trykk i for å sette inn tekst. ** + + 1. Flytt markøren til den første linjen som er merket med --->. + + 2. For å gjøre den første linjen lik den andre, flytt markøren til den står + på tegnet ETTER posisjonen der teksten skal settes inn. + + 3. Trykk i og skriv inn teksten som mangler. + + 4. Etterhvert som hver feil er fikset, trykk for å returnere til + normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. + +---> Det er tkst som mnglr . +---> Det er ganske mye tekst som mangler her. + + 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen + nedenfor. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL + + + ** Trykk A for å legge til tekst. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. + Det har ikke noe å si hvor markøren er plassert på den linjen. + + 2. Trykk A og skriv inn det som skal legges til. + + 3. Når teksten er lagt til, trykk for å returnere til normalmodusen. + + 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og + 3 for å reparere denne setningen. + +---> Det mangler noe tekst p + Det mangler noe tekst på denne linjen. +---> Det mangler også litt tek + Det mangler også litt tekst på denne linjen. + + 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.6: REDIGERE EN FIL + + + ** Bruk :wq for å lagre en fil og avslutte. ** + + !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! + + 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! + + 2. Skriv denne kommandoen på kommandolinja: vim tutor + «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila + som du vil redigere. Bruk en fil som kan forandres. + + 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. + + 4. Lagre filen med forandringene og avslutt Vim med: :wq + + 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. + + 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 1 + + + 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. + h (venstre) j (ned) k (opp) l (høyre) + + 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN + + 3. For å avslutte Vim, skriv: :q! for å forkaste endringer. + ELLER skriv: :wq for å lagre forandringene. + + 4. For å slette tegnet under markøren, trykk: x + + 5. For å sette inn eller legge til tekst, trykk: + i skriv innsatt tekst sett inn før markøren + A skriv tillagt tekst legg til på slutten av linjen + +MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket + og delvis fullført kommando. + + Nå kan du gå videre til leksjon 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.1: SLETTEKOMMANDOER + + + ** Trykk dw for å slette et ord. ** + + 1. Trykk for å være sikker på at du er i normalmodus. + + 2. Flytt markøren til den første linjen nedenfor merket --->. + + 3. Flytt markøren til begynnelsen av ordet som skal slettes. + + 4. Trykk dw og ordet vil forsvinne. + +MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når + du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet + tegn enn d har du skrevet noe feil; trykk og start på nytt. + +---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. +---> Det er tre ord som ikke hører hjemme i denne setningen. + + 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå + deretter til leksjon 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.2: FLERE SLETTEKOMMANDOER + + + ** Trykk d$ for å slette til slutten av linjen. ** + + 1. Trykk for å være sikker på at du er i normalmodus. + + 2. Flytt markøren til linjen nedenfor merket --->. + + 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). + + 4. Trykk d$ for å slette alt til slutten av linjen. + +---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. + + 5. Gå til leksjon 2.3 for å forstå hva som skjer. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.3: OM OPERATORER OG BEVEGELSER + + + Mange kommandoer som forandrer teksten er laget ut i fra en operator og en + bevegelse. Formatet for en slettekommando med sletteoperatoren d er: + + d bevegelse + + Der: + d - er sletteoperatoren. + bevegelse - er hva operatoren vil opere på (listet nedenfor). + + En kort liste med bevegelser: + w - til starten av det neste ordet, UNNTATT det første tegnet. + e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. + $ - til slutten av linjen, INKLUDERT det siste tegnet. + + Ved å skrive de vil altså alt fra markøren til slutten av ordet bli + slettet. + +MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil + markøren flyttes som spesifisert. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE + + + ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** + + 1. Flytt markøren til starten av linjen markert ---> nedenfor. + + 2. Skriv 2w for å flytte markøren to ord framover. + + 3. Skriv 3e for å flytte markøren framover til slutten av det tredje + ordet. + + 4. Skriv 0 (null) for å flytte til starten av linjen. + + 5. Repeter steg 2 og 3 med forskjellige tall. + +---> Dette er en linje med noen ord som du kan bevege deg rundt på. + + 6. Gå videre til leksjon 2.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER + + + ** Et tall sammen med en operator repeterer den så mange ganger. ** + + I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du + inn antall før bevegelsen for å slette mer: + d nummer bevegelse + + 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert + med --->. + + 2. Skriv 2dw for å slette de to ordene med store bokstaver. + + 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende + ordene som har store bokstaver. + +---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. + +MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å + bruke bevegelsen uten en operator. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.6: OPERERE PÅ LINJER + + + ** Trykk dd for å slette en hel linje. ** + + På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at + det vil være lettere å rett og slett trykke to d-er for å slette en linje. + + 1. Flytt markøren til den andre linjen i verset nedenfor. + 2. Trykk dd å slette linjen. + 3. Flytt deretter til den fjerde linjen. + 4. Trykk 2dd for å slette to linjer. + +---> 1) Roser er røde, +---> 2) Gjørme er gøy, +---> 3) Fioler er blå, +---> 4) Jeg har en bil, +---> 5) Klokker viser tiden, +---> 6) Druer er søte +---> 7) Og du er likeså. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.7: ANGRE-KOMMANDOEN + + + ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** + + 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den + første feilen. + 2. Trykk x for å slette det første uønskede tegnet. + 3. Trykk så u for å angre den siste utførte kommandoen. + 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . + 5. Trykk nå en stor U for å sette linjen tilbake til det den var + originalt. + 6. Trykk u noen ganger for å angre U og foregående kommandoer. + 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen + ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). + +---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. + + 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av + leksjon 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 2 + + + 1. For å slette fra markøren fram til det neste ordet, trykk: dw + 2. For å slette fra markøren til slutten av en linje, trykk: d$ + 3. For å slette en hel linje, trykk: dd + + 4. For å repetere en bevegelse, sett et nummer foran: 2w + 5. Formatet for en forandringskommando er: + operator [nummer] bevegelse + der: + operator - hva som skal gjøres, f.eks. d for å slette + [nummer] - et valgfritt antall for å repetere bevegelsen + bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), + $ (til slutten av linjen) og så videre. + + 6. For å gå til starten av en linje, bruk en null: 0 + + 7. For å angre tidligere endringer, skriv: u (liten u) + For å angre alle forandringer på en linje, skriv: U (stor U) + For å omgjøre angringen, trykk: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.1: «LIM INN»-KOMMANDOEN + + + ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** + + 1. Flytt markøren til den første linjen med ---> nedenfor. + + 2. Trykk dd for å slette linjen og lagre den i et Vim-register. + + 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. + + 4. Trykk p for å legge linjen under markøren. + + 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. + +---> d) Kan du også lære? +---> b) Fioler er blå, +---> c) Intelligens må læres, +---> a) Roser er røde, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.2: «ERSTATT»-KOMMANDOEN + + + ** Trykk rx for å erstatte tegnet under markøren med x. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. + + 2. Flytt markøren så den står oppå den første feilen. + + 3. Trykk r og deretter tegnet som skal være der. + + 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. + +---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! +---> Da denne linjen ble skrevet, var det noen som trykket feile taster! + + 5. Gå videre til leksjon 3.2. + +MERK: Husk at du bør lære ved å BRUKE, ikke pugge. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.3: «FORANDRE»-OPERATOREN + + + ** For å forandre til slutten av et ord, trykk ce . ** + + 1. Flytt markøren til den første linjen nedenfor som er merket --->. + + 2. Plasser markøren på u i «lubjwr». + + 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). + + 4. Trykk og gå til det neste tegnet som skal forandres. + + 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. + +---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. +---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. + +Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c + + + ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** + + 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: + + c [nummer] bevegelse + + 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en + linje). + + 3. Gå til den første linjen nedenfor som er merket --->. + + 4. Flytt markøren til den første feilen. + + 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . + +---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. +---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. + +MERK: Du kan bruke slettetasten for å rette feil mens du skriver. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 3 + + + 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette + limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet + vil den bli limt inn på linjen under markøren). + + 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som + du vil ha der. + + 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen + tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten + av ordet, c$ for å forandre til slutten av linjen. + + 4. Formatet for «forandre» er: + + c [nummer] bevegelse + +Nå kan du gå til neste leksjon. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS + + ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. + Trykk G for å gå til en spesifikk linje i filen. ** + + Merk: Les hele leksjonen før du utfører noen av punktene! + + 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding + vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i + filen. Husk linjenummeret for bruk i steg 3. + +Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette + skjer når «ruler»-valget er satt (forklart i leksjon 6). + + 2. Trykk G for å gå til bunnen av filen. + Skriv gg for å gå til begynnelsen av filen. + + 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg + tilbake til linjen du var på da du først trykket CTRL-G. + + 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.2: SØKEKOMMANDOEN + + ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** + + 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og + markøren kommer til syne på bunnen av skjermen i likhet med + «:»-kommandoene. + + 2. Skriv «feeeiil» og trykk . Dette er teksten du vil lete etter. + + 3. For å finne neste forekomst av søkestrengen, trykk n . + For å lete etter samme søketeksten i motsatt retning, trykk N . + + 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . + + 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens + du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I + går framover. + +---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. +Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt + hvis «wrapscan»-valget er resatt. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.3: FINN SAMSVARENDE PARENTESER + + + ** Trykk % for å finne en samsvarende ), ] eller } . ** + + 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. + + 2. Trykk % . + + 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. + + 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. + + 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. + +---> Dette ( er en testlinje med (, [ ] og { } i den )). + +Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert + antall parenteser! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.4: ERSTATT-KOMMANDOEN + + + ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** + + 1. Flytt markøren til linjen nedenfor som er merket med --->. + + 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare + forandrer den første forekomsten av «deen» på linjen. + + 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global + erstatning på linjen og erstatter alle forekomster av «deen» på linjen. + +---> deen som kan kaste deen tyngste steinen lengst er deen beste + + 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, + skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for + linjeområdet erstatningen skal gjøres. + Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. + Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og + deretter spørre om teksten skal erstattes eller + ikke. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 4 + + + 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. + G går til slutten av filen. + nummer G går til det linjenummeret. + gg går til den første linjen. + + 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. + Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. + Etter et søk kan du trykke n for å finne neste forekomst i den samme + retningen eller N for å lete i motsatt retning. + CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. + + 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den + som samsvarer. + + 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny + Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g + Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g + Erstatte alle forekomster i en fil: :%s/gammel/ny/g + For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO + + + ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** + + 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av + skjermen. Dette lar deg skrive en kommandolinjekommando. + + 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst + ekstern kommando. + + 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil + nå få en liste over filene i katalogen, akkurat som om du hadde kjørt + kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis + «ls» ikke virker. + +MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med + parametere. + +MERK: Alle «:»-kommandoer må avsluttes med . Fra dette punktet er det + ikke alltid vi nevner det. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.2: MER OM LAGRING AV FILER + + + ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** + + 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du + vet allerede at du må trykke etter dette. + + 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . + + 3. Skriv :w TEST (der TEST er filnavnet du velger). + + 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å + sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av + katalogen. + +Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», + ville filen vært en eksakt kopi av innføringen da du lagret den. + + 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende + operativsystem, eller :!del TEST hvis du bruker MS-DOS. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES + + + ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** + + 1. Flytt markøren til denne linjen. + + 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke + til at teksten blir markert. + + 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. + + 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller + at du ser :'<,'>w TEST før du trykker Enter. + + 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller :!ls + for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. + +MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for + å gjøre det valgte området større eller mindre. Deretter kan du bruke en + operator for å gjøre noe med teksten. For eksempel sletter d teksten. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER + + + ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** + + 1. Plasser markøren like over denne linjen. + +MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter + NED for å se denne leksjonen igjen. + + 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på + filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. + + 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av + leksjon 5.3, originalen og denne versjonen. + +MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls + leser utdataene av ls-kommandoen og legger dem nedenfor markøren. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 5 + + + 1. :!kommando utfører en ekstern kommandio. + + Noen nyttige eksempler er: + (MS-DOS) (Unix) + :!dir :!ls - List filene i katalogen. + :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. + + 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . + + 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen + FILNAVN. + + 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. + + 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor + markørposisjonen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN + + + ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til + innsettingsmodus ** + + 1. Flytt markøren til linjen nedenfor merket --->. + + 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i + innsettingsmodus. + + 3. Skriv litt tekst og trykk for å gå ut av innsettingsmodusen. + +---> Etter at o er skrevet blir markøren plassert på den tomme linjen. + + 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O + istedenfor en liten o . Prøv dette på linjen nedenfor. + +---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.2: «LEGG TIL»-KOMMANDOEN + + + ** Skriv a for å legge til tekst ETTER markøren. ** + + 1. Flytt markøren til starten av linjen merket ---> nedenfor. + + 2. Trykk e til markøren er på slutten av «li». + + 3. Trykk a (liten a) for å legge til tekst ETTER markøren. + + 4. Fullfør ordet sånn som på linjen nedenfor. Trykk for å gå ut av + innsettingsmodusen. + + 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og + 4. + +---> Denne li lar deg øve på å leg til tek på en linje. +---> Denne linjen lar deg øve på å legge til tekst på en linje. + +Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste + forskjellen er hvor tegnene blir satt inn. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ + + + ** Skriv en stor R for å erstatte mer enn ett tegn. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren + til begynnelsen av den første «xxx»-en. + + 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så + det erstatter xxx. + + 3. Trykk for å gå ut av erstatningsmodusen. Legg merke til at resten + av linjen forblir uforandret. + + 4. Repeter stegene for å erstatte den gjenværende xxx. + +---> Ved å legge 123 til xxx får vi xxx. +---> Ved å legge 123 til 456 får vi 579. + +MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives + erstatter et eksisterende tegn. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.4: KOPIERE OG LIME INN TEKST + + + ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** + + 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». + + 2. Gå inn i visuell modus med v og flytt markøren til like før «første». + + 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. + + 4. Flytt markøren til slutten av den neste linjen: j$ + + 5. Trykk p for å lime inn teksten. Trykk deretter: a andre . + + 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til + slutten av den neste linjen med j$ og legg inn teksten der med p . + +---> a) Dette er det første valget. + b) + +Merk: Du kan også bruke y som en operator; yw kopierer ett ord. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.5: SETT VALG + + + ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** + + 1. Let etter «ignore» ved å skrive: /ignore + Repeter flere ganger ved å trykke n . + + 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic + + 3. Søk etter «ignore» igjen ved å trykke n . + Legg merke til at både «Ignore» og «IGNORE» blir funnet. + + 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is + + 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore + + 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic + +Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch +Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk + \c i uttrykket: /ignore\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 6 + + 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i + innsettingsmodus. + Trykk O for å åpne en linje OVER markøren. + + 2. Skriv a for å sette inn tekst ETTER markøren. + Skriv A for å sette inn tekst etter slutten av linjen. + + 3. Kommandoen e går til slutten av et ord. + + 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. + + 5. Ved å trykke R går du inn i erstatningsmodus helt til trykkes. + + 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: + «ic» «ignorecase» ignorer store/små bokstaver under søk + «is» «incsearch» vis delvise treff for en søketekst + «hls» «hlsearch» uthev alle søketreff + + 7. Legg til «no» foran valget for å slå det av: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.1: FÅ HJELP + + + ** Bruk det innebygde hjelpesystemet. ** + + Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av + disse måtene: + - Trykk Hjelp-tasten (hvis du har en) + - Trykk F1-tasten (hvis du har en) + - Skriv :help + + Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. + Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet + Skriv :q for å lukke hjelpevinduet. + + Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til + «:help»-kommandoen. Prøv disse (ikke glem å trykke ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.2: LAG ET OPPSTARTSSKRIPT + + + ** Slå på funksjoner i Vim ** + + Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av + som standard. For å begynne å bruke flere funksjoner må du lage en + «vimrc»-fil. + + 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: + :e ~/.vimrc for Unix + :e $VIM/_vimrc for MS Windows + + 2. Les inn eksempelfilen for «vimrc»: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Lagre filen med: + :w + + Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til + alle dine foretrukne oppsett i denne «vimrc»-filen. + For mer informasjon, skriv :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.3: FULLFØRING + + + ** Kommandolinjefullføring med CTRL-D og ** + + 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp + + 2. Se hvilke filer som er i katalogen: :!ls eller :!dir + + 3. Skriv starten på en kommando: :e + + 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med + «e». + + 5. Trykk og Vim vil fullføre kommandonavnet til «:edit». + + 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL + + 7. Trykk . Vim vil fullføre navnet (hvis det er unikt). + +MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og + . Det er spesielt nyttig for bruk sammen med :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 7 + + + 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. + + 2. Skriv :help kommando for å få hjelp om kommando . + + 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. + + 4. Trykk :q for å lukke hjelpevinduet. + + 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. + + 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige + fullføringer. Trykk for å bruke en fullføring. + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Her slutter innføringen i Vim. Den var ment som en rask oversikt over + editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på + langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen + ved å skrive :help user-manual . + + For videre lesing og studier, kan denne boken anbefales: + «Vim - Vi Improved» av Steve Oualline + Utgiver: New Riders + Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for + nybegynnere. Inneholder mange eksempler og illustrasjoner. + Se http://iccf-holland.org/click5.html + + Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: + «Learning the Vi Editor» av Linda Lamb + Utgiver: O'Reilly & Associates Inc. + Det er en god bok for å få vite omtrent hva som helst om Vi. + Den sjette utgaven inneholder også informasjon om Vim. + + Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, + Colorado School of Mines med idéer av Charles Smith, Colorado State + University. E-mail: bware@mines.colorado.edu . + + Modifisert for Vim av Bram Moolenaar. + Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org + Id: tutor.no 406 2007-03-18 22:48:36Z sunny + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +vim: set ts=8 : diff --git a/share/vim/vim74/tutor/tutor.no.utf-8 b/share/vim/vim74/tutor/tutor.no.utf-8 new file mode 100644 index 00000000..f9d49c2a --- /dev/null +++ b/share/vim/vim74/tutor/tutor.no.utf-8 @@ -0,0 +1,973 @@ +=============================================================================== += V e l k o m m e n t i l i n n f ø r i n g e n i V i m -- Ver. 1.7 = +=============================================================================== + + Vim er en meget kraftig editor med mange kommandoer, alt for mange til å + kunne gå gjennom alle i en innføring som denne. Den er beregnet på å + sette deg inn i bruken av nok kommandoer så du vil være i stand til lett + å kunne bruke Vim som en editor til alle formål. + + Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30 + minutter, avhengig av hvor mye tid du bruker til eksperimentering. + + MERK: + Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne + filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er + dette allerede en kopi). + + Det er viktig å huske at denne innføringen er beregnet på læring gjennom + bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig. + Hvis du bare leser teksten, vil du glemme kommandoene! + + Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for + å flytte markøren helt til leksjon 1.1 fyller skjermen. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.1: FLYTTING AV MARKØREN + + + ** For å flytte markøren, trykk tastene h, j, k, l som vist. ** + ^ + k Tips: h-tasten er til venstre og flytter til venstre. + < h l > l-tasten er til høyre og flytter til høyre. + j j-tasten ser ut som en pil som peker nedover. + v + 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. + + 2. Hold inne nedovertasten (j) til den repeterer. + Nå vet du hvordan du beveger deg til neste leksjon. + + 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. + +Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til + normalmodus. Skriv deretter kommandoen du ønsket på nytt. + +Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til + å bevege markøren mye raskere når du er blitt vant til det. Helt sant! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.2: AVSLUTTE VIM + + + !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! + + 1. Trykk -tasten (for å forsikre deg om at du er i normalmodus). + + 2. Skriv: :q! . + Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. + + 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne + innføringen. Den er: vimtutor + + 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å + avslutte og starte editoren på nytt. + +MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen + få leksjoner vil du lære hvordan du lagrer forandringene til en fil. + + 5. Flytt markøren ned til leksjon 1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.3: REDIGERING AV TEKST -- SLETTING + + + ** Trykk x for å slette tegnet under markøren. ** + + 1. Flytt markøren til den første linjen merket med --->. + + 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som + skal slettes. + + 3. Trykk tasten x for å slette det uønskede tegnet. + + 4. Repeter punkt 2 til 4 til setningen er lik den som er under. + +---> Hessstennnn brrråsnudddde ii gaaata. +---> Hesten bråsnudde i gata. + + 5. Nå som linjen er korrekt, gå til leksjon 1.4. + +MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men + bruk dem helt til de sitter. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING + + + ** Trykk i for å sette inn tekst. ** + + 1. Flytt markøren til den første linjen som er merket med --->. + + 2. For å gjøre den første linjen lik den andre, flytt markøren til den står + på tegnet ETTER posisjonen der teksten skal settes inn. + + 3. Trykk i og skriv inn teksten som mangler. + + 4. Etterhvert som hver feil er fikset, trykk for å returnere til + normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. + +---> Det er tkst som mnglr . +---> Det er ganske mye tekst som mangler her. + + 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen + nedenfor. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL + + + ** Trykk A for å legge til tekst. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. + Det har ikke noe å si hvor markøren er plassert på den linjen. + + 2. Trykk A og skriv inn det som skal legges til. + + 3. Når teksten er lagt til, trykk for å returnere til normalmodusen. + + 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og + 3 for å reparere denne setningen. + +---> Det mangler noe tekst p + Det mangler noe tekst på denne linjen. +---> Det mangler også litt tek + Det mangler også litt tekst på denne linjen. + + 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.6: REDIGERE EN FIL + + + ** Bruk :wq for å lagre en fil og avslutte. ** + + !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! + + 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! + + 2. Skriv denne kommandoen på kommandolinja: vim tutor + «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila + som du vil redigere. Bruk en fil som kan forandres. + + 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. + + 4. Lagre filen med forandringene og avslutt Vim med: :wq + + 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. + + 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 1 + + + 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. + h (venstre) j (ned) k (opp) l (høyre) + + 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN + + 3. For å avslutte Vim, skriv: :q! for å forkaste endringer. + ELLER skriv: :wq for å lagre forandringene. + + 4. For å slette tegnet under markøren, trykk: x + + 5. For å sette inn eller legge til tekst, trykk: + i skriv innsatt tekst sett inn før markøren + A skriv tillagt tekst legg til på slutten av linjen + +MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket + og delvis fullført kommando. + + Nå kan du gå videre til leksjon 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.1: SLETTEKOMMANDOER + + + ** Trykk dw for å slette et ord. ** + + 1. Trykk for å være sikker på at du er i normalmodus. + + 2. Flytt markøren til den første linjen nedenfor merket --->. + + 3. Flytt markøren til begynnelsen av ordet som skal slettes. + + 4. Trykk dw og ordet vil forsvinne. + +MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når + du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet + tegn enn d har du skrevet noe feil; trykk og start på nytt. + +---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. +---> Det er tre ord som ikke hører hjemme i denne setningen. + + 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå + deretter til leksjon 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.2: FLERE SLETTEKOMMANDOER + + + ** Trykk d$ for å slette til slutten av linjen. ** + + 1. Trykk for å være sikker på at du er i normalmodus. + + 2. Flytt markøren til linjen nedenfor merket --->. + + 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). + + 4. Trykk d$ for å slette alt til slutten av linjen. + +---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. + + 5. Gå til leksjon 2.3 for å forstå hva som skjer. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.3: OM OPERATORER OG BEVEGELSER + + + Mange kommandoer som forandrer teksten er laget ut i fra en operator og en + bevegelse. Formatet for en slettekommando med sletteoperatoren d er: + + d bevegelse + + Der: + d - er sletteoperatoren. + bevegelse - er hva operatoren vil opere på (listet nedenfor). + + En kort liste med bevegelser: + w - til starten av det neste ordet, UNNTATT det første tegnet. + e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. + $ - til slutten av linjen, INKLUDERT det siste tegnet. + + Ved å skrive de vil altså alt fra markøren til slutten av ordet bli + slettet. + +MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil + markøren flyttes som spesifisert. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE + + + ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** + + 1. Flytt markøren til starten av linjen markert ---> nedenfor. + + 2. Skriv 2w for å flytte markøren to ord framover. + + 3. Skriv 3e for å flytte markøren framover til slutten av det tredje + ordet. + + 4. Skriv 0 (null) for å flytte til starten av linjen. + + 5. Repeter steg 2 og 3 med forskjellige tall. + +---> Dette er en linje med noen ord som du kan bevege deg rundt på. + + 6. Gå videre til leksjon 2.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER + + + ** Et tall sammen med en operator repeterer den så mange ganger. ** + + I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du + inn antall før bevegelsen for å slette mer: + d nummer bevegelse + + 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert + med --->. + + 2. Skriv 2dw for å slette de to ordene med store bokstaver. + + 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende + ordene som har store bokstaver. + +---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. + +MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å + bruke bevegelsen uten en operator. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.6: OPERERE PÅ LINJER + + + ** Trykk dd for å slette en hel linje. ** + + På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at + det vil være lettere å rett og slett trykke to d-er for å slette en linje. + + 1. Flytt markøren til den andre linjen i verset nedenfor. + 2. Trykk dd å slette linjen. + 3. Flytt deretter til den fjerde linjen. + 4. Trykk 2dd for å slette to linjer. + +---> 1) Roser er røde, +---> 2) Gjørme er gøy, +---> 3) Fioler er blå, +---> 4) Jeg har en bil, +---> 5) Klokker viser tiden, +---> 6) Druer er søte +---> 7) Og du er likeså. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.7: ANGRE-KOMMANDOEN + + + ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** + + 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den + første feilen. + 2. Trykk x for å slette det første uønskede tegnet. + 3. Trykk så u for å angre den siste utførte kommandoen. + 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . + 5. Trykk nå en stor U for å sette linjen tilbake til det den var + originalt. + 6. Trykk u noen ganger for å angre U og foregående kommandoer. + 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen + ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). + +---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. + + 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av + leksjon 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 2 + + + 1. For å slette fra markøren fram til det neste ordet, trykk: dw + 2. For å slette fra markøren til slutten av en linje, trykk: d$ + 3. For å slette en hel linje, trykk: dd + + 4. For å repetere en bevegelse, sett et nummer foran: 2w + 5. Formatet for en forandringskommando er: + operator [nummer] bevegelse + der: + operator - hva som skal gjøres, f.eks. d for å slette + [nummer] - et valgfritt antall for å repetere bevegelsen + bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), + $ (til slutten av linjen) og så videre. + + 6. For å gå til starten av en linje, bruk en null: 0 + + 7. For å angre tidligere endringer, skriv: u (liten u) + For å angre alle forandringer på en linje, skriv: U (stor U) + For å omgjøre angringen, trykk: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.1: «LIM INN»-KOMMANDOEN + + + ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** + + 1. Flytt markøren til den første linjen med ---> nedenfor. + + 2. Trykk dd for å slette linjen og lagre den i et Vim-register. + + 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. + + 4. Trykk p for å legge linjen under markøren. + + 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. + +---> d) Kan du også lære? +---> b) Fioler er blå, +---> c) Intelligens må læres, +---> a) Roser er røde, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.2: «ERSTATT»-KOMMANDOEN + + + ** Trykk rx for å erstatte tegnet under markøren med x. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. + + 2. Flytt markøren så den står oppå den første feilen. + + 3. Trykk r og deretter tegnet som skal være der. + + 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. + +---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! +---> Da denne linjen ble skrevet, var det noen som trykket feile taster! + + 5. Gå videre til leksjon 3.2. + +MERK: Husk at du bør lære ved å BRUKE, ikke pugge. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.3: «FORANDRE»-OPERATOREN + + + ** For å forandre til slutten av et ord, trykk ce . ** + + 1. Flytt markøren til den første linjen nedenfor som er merket --->. + + 2. Plasser markøren på u i «lubjwr». + + 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). + + 4. Trykk og gå til det neste tegnet som skal forandres. + + 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. + +---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. +---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. + +Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c + + + ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** + + 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: + + c [nummer] bevegelse + + 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en + linje). + + 3. Gå til den første linjen nedenfor som er merket --->. + + 4. Flytt markøren til den første feilen. + + 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . + +---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. +---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. + +MERK: Du kan bruke slettetasten for å rette feil mens du skriver. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 3 + + + 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette + limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet + vil den bli limt inn på linjen under markøren). + + 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som + du vil ha der. + + 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen + tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten + av ordet, c$ for å forandre til slutten av linjen. + + 4. Formatet for «forandre» er: + + c [nummer] bevegelse + +Nå kan du gå til neste leksjon. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS + + ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. + Trykk G for å gå til en spesifikk linje i filen. ** + + Merk: Les hele leksjonen før du utfører noen av punktene! + + 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding + vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i + filen. Husk linjenummeret for bruk i steg 3. + +Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette + skjer når «ruler»-valget er satt (forklart i leksjon 6). + + 2. Trykk G for å gå til bunnen av filen. + Skriv gg for å gå til begynnelsen av filen. + + 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg + tilbake til linjen du var på da du først trykket CTRL-G. + + 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.2: SØKEKOMMANDOEN + + ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** + + 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og + markøren kommer til syne på bunnen av skjermen i likhet med + «:»-kommandoene. + + 2. Skriv «feeeiil» og trykk . Dette er teksten du vil lete etter. + + 3. For å finne neste forekomst av søkestrengen, trykk n . + For å lete etter samme søketeksten i motsatt retning, trykk N . + + 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . + + 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens + du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I + går framover. + +---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. +Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt + hvis «wrapscan»-valget er resatt. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.3: FINN SAMSVARENDE PARENTESER + + + ** Trykk % for å finne en samsvarende ), ] eller } . ** + + 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. + + 2. Trykk % . + + 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. + + 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. + + 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. + +---> Dette ( er en testlinje med (, [ ] og { } i den )). + +Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert + antall parenteser! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.4: ERSTATT-KOMMANDOEN + + + ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** + + 1. Flytt markøren til linjen nedenfor som er merket med --->. + + 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare + forandrer den første forekomsten av «deen» på linjen. + + 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global + erstatning på linjen og erstatter alle forekomster av «deen» på linjen. + +---> deen som kan kaste deen tyngste steinen lengst er deen beste + + 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, + skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for + linjeområdet erstatningen skal gjøres. + Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. + Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og + deretter spørre om teksten skal erstattes eller + ikke. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 4 + + + 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. + G går til slutten av filen. + nummer G går til det linjenummeret. + gg går til den første linjen. + + 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. + Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. + Etter et søk kan du trykke n for å finne neste forekomst i den samme + retningen eller N for å lete i motsatt retning. + CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. + + 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den + som samsvarer. + + 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny + Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g + Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g + Erstatte alle forekomster i en fil: :%s/gammel/ny/g + For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO + + + ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** + + 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av + skjermen. Dette lar deg skrive en kommandolinjekommando. + + 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst + ekstern kommando. + + 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil + nå få en liste over filene i katalogen, akkurat som om du hadde kjørt + kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis + «ls» ikke virker. + +MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med + parametere. + +MERK: Alle «:»-kommandoer må avsluttes med . Fra dette punktet er det + ikke alltid vi nevner det. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.2: MER OM LAGRING AV FILER + + + ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** + + 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du + vet allerede at du må trykke etter dette. + + 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . + + 3. Skriv :w TEST (der TEST er filnavnet du velger). + + 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å + sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av + katalogen. + +Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», + ville filen vært en eksakt kopi av innføringen da du lagret den. + + 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende + operativsystem, eller :!del TEST hvis du bruker MS-DOS. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES + + + ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** + + 1. Flytt markøren til denne linjen. + + 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke + til at teksten blir markert. + + 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. + + 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller + at du ser :'<,'>w TEST før du trykker Enter. + + 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller :!ls + for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. + +MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for + å gjøre det valgte området større eller mindre. Deretter kan du bruke en + operator for å gjøre noe med teksten. For eksempel sletter d teksten. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER + + + ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** + + 1. Plasser markøren like over denne linjen. + +MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter + NED for å se denne leksjonen igjen. + + 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på + filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. + + 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av + leksjon 5.3, originalen og denne versjonen. + +MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls + leser utdataene av ls-kommandoen og legger dem nedenfor markøren. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 5 + + + 1. :!kommando utfører en ekstern kommandio. + + Noen nyttige eksempler er: + (MS-DOS) (Unix) + :!dir :!ls - List filene i katalogen. + :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. + + 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . + + 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen + FILNAVN. + + 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. + + 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor + markørposisjonen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN + + + ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til + innsettingsmodus ** + + 1. Flytt markøren til linjen nedenfor merket --->. + + 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i + innsettingsmodus. + + 3. Skriv litt tekst og trykk for å gå ut av innsettingsmodusen. + +---> Etter at o er skrevet blir markøren plassert på den tomme linjen. + + 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O + istedenfor en liten o . Prøv dette på linjen nedenfor. + +---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.2: «LEGG TIL»-KOMMANDOEN + + + ** Skriv a for å legge til tekst ETTER markøren. ** + + 1. Flytt markøren til starten av linjen merket ---> nedenfor. + + 2. Trykk e til markøren er på slutten av «li». + + 3. Trykk a (liten a) for å legge til tekst ETTER markøren. + + 4. Fullfør ordet sånn som på linjen nedenfor. Trykk for å gå ut av + innsettingsmodusen. + + 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og + 4. + +---> Denne li lar deg øve på å leg til tek på en linje. +---> Denne linjen lar deg øve på å legge til tekst på en linje. + +Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste + forskjellen er hvor tegnene blir satt inn. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ + + + ** Skriv en stor R for å erstatte mer enn ett tegn. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren + til begynnelsen av den første «xxx»-en. + + 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så + det erstatter xxx. + + 3. Trykk for å gå ut av erstatningsmodusen. Legg merke til at resten + av linjen forblir uforandret. + + 4. Repeter stegene for å erstatte den gjenværende xxx. + +---> Ved å legge 123 til xxx får vi xxx. +---> Ved å legge 123 til 456 får vi 579. + +MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives + erstatter et eksisterende tegn. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.4: KOPIERE OG LIME INN TEKST + + + ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** + + 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». + + 2. Gå inn i visuell modus med v og flytt markøren til like før «første». + + 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. + + 4. Flytt markøren til slutten av den neste linjen: j$ + + 5. Trykk p for å lime inn teksten. Trykk deretter: a andre . + + 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til + slutten av den neste linjen med j$ og legg inn teksten der med p . + +---> a) Dette er det første valget. + b) + +Merk: Du kan også bruke y som en operator; yw kopierer ett ord. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.5: SETT VALG + + + ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** + + 1. Let etter «ignore» ved å skrive: /ignore + Repeter flere ganger ved å trykke n . + + 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic + + 3. Søk etter «ignore» igjen ved å trykke n . + Legg merke til at både «Ignore» og «IGNORE» blir funnet. + + 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is + + 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore + + 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic + +Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch +Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk + \c i uttrykket: /ignore\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 6 + + 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i + innsettingsmodus. + Trykk O for å åpne en linje OVER markøren. + + 2. Skriv a for å sette inn tekst ETTER markøren. + Skriv A for å sette inn tekst etter slutten av linjen. + + 3. Kommandoen e går til slutten av et ord. + + 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. + + 5. Ved å trykke R går du inn i erstatningsmodus helt til trykkes. + + 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: + «ic» «ignorecase» ignorer store/små bokstaver under søk + «is» «incsearch» vis delvise treff for en søketekst + «hls» «hlsearch» uthev alle søketreff + + 7. Legg til «no» foran valget for å slå det av: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.1: FÅ HJELP + + + ** Bruk det innebygde hjelpesystemet. ** + + Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av + disse måtene: + - Trykk Hjelp-tasten (hvis du har en) + - Trykk F1-tasten (hvis du har en) + - Skriv :help + + Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. + Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet + Skriv :q for å lukke hjelpevinduet. + + Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til + «:help»-kommandoen. Prøv disse (ikke glem å trykke ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.2: LAG ET OPPSTARTSSKRIPT + + + ** Slå på funksjoner i Vim ** + + Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av + som standard. For å begynne å bruke flere funksjoner må du lage en + «vimrc»-fil. + + 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: + :e ~/.vimrc for Unix + :e $VIM/_vimrc for MS Windows + + 2. Les inn eksempelfilen for «vimrc»: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Lagre filen med: + :w + + Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til + alle dine foretrukne oppsett i denne «vimrc»-filen. + For mer informasjon, skriv :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.3: FULLFØRING + + + ** Kommandolinjefullføring med CTRL-D og ** + + 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp + + 2. Se hvilke filer som er i katalogen: :!ls eller :!dir + + 3. Skriv starten på en kommando: :e + + 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med + «e». + + 5. Trykk og Vim vil fullføre kommandonavnet til «:edit». + + 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL + + 7. Trykk . Vim vil fullføre navnet (hvis det er unikt). + +MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og + . Det er spesielt nyttig for bruk sammen med :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 7 + + + 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. + + 2. Skriv :help kommando for å få hjelp om kommando . + + 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. + + 4. Trykk :q for å lukke hjelpevinduet. + + 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. + + 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige + fullføringer. Trykk for å bruke en fullføring. + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Her slutter innføringen i Vim. Den var ment som en rask oversikt over + editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på + langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen + ved å skrive :help user-manual . + + For videre lesing og studier, kan denne boken anbefales: + «Vim - Vi Improved» av Steve Oualline + Utgiver: New Riders + Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for + nybegynnere. Inneholder mange eksempler og illustrasjoner. + Se http://iccf-holland.org/click5.html + + Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: + «Learning the Vi Editor» av Linda Lamb + Utgiver: O'Reilly & Associates Inc. + Det er en god bok for å få vite omtrent hva som helst om Vi. + Den sjette utgaven inneholder også informasjon om Vim. + + Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, + Colorado School of Mines med idéer av Charles Smith, Colorado State + University. E-mail: bware@mines.colorado.edu . + + Modifisert for Vim av Bram Moolenaar. + Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org + Id: tutor.no 406 2007-03-18 22:48:36Z sunny + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +vim: set ts=8 : diff --git a/share/vim/vim73/tutor/tutor.pl b/share/vim/vim74/tutor/tutor.pl similarity index 100% rename from share/vim/vim73/tutor/tutor.pl rename to share/vim/vim74/tutor/tutor.pl diff --git a/share/vim/vim73/tutor/tutor.pl.cp1250 b/share/vim/vim74/tutor/tutor.pl.cp1250 similarity index 100% rename from share/vim/vim73/tutor/tutor.pl.cp1250 rename to share/vim/vim74/tutor/tutor.pl.cp1250 diff --git a/share/vim/vim73/tutor/tutor.pl.utf-8 b/share/vim/vim74/tutor/tutor.pl.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.pl.utf-8 rename to share/vim/vim74/tutor/tutor.pl.utf-8 diff --git a/share/vim/vim73/tutor/tutor.pt b/share/vim/vim74/tutor/tutor.pt similarity index 100% rename from share/vim/vim73/tutor/tutor.pt rename to share/vim/vim74/tutor/tutor.pt diff --git a/share/vim/vim73/tutor/tutor.pt.utf-8 b/share/vim/vim74/tutor/tutor.pt.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.pt.utf-8 rename to share/vim/vim74/tutor/tutor.pt.utf-8 diff --git a/share/vim/vim73/tutor/tutor.ru b/share/vim/vim74/tutor/tutor.ru similarity index 100% rename from share/vim/vim73/tutor/tutor.ru rename to share/vim/vim74/tutor/tutor.ru diff --git a/share/vim/vim73/tutor/tutor.ru.cp1251 b/share/vim/vim74/tutor/tutor.ru.cp1251 similarity index 100% rename from share/vim/vim73/tutor/tutor.ru.cp1251 rename to share/vim/vim74/tutor/tutor.ru.cp1251 diff --git a/share/vim/vim73/tutor/tutor.ru.utf-8 b/share/vim/vim74/tutor/tutor.ru.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.ru.utf-8 rename to share/vim/vim74/tutor/tutor.ru.utf-8 diff --git a/share/vim/vim74/tutor/tutor.sk b/share/vim/vim74/tutor/tutor.sk new file mode 100644 index 00000000..bae13983 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.sk @@ -0,0 +1,1008 @@ +=============================================================================== += V i t a j t e v o V I M T u t o r i a l i - Verzia 1.7 = +=============================================================================== + + Vim je veµmi výkonný editor, ktorý má príli¾ veµa príkazov na to aby + mohli byt v¹etky popísané vo výuke akou je táto. Táto výuka + popisuje dostatoèné mno¾stvo príkazov nato aby bolo mo¾né pou¾íva» + Vim ako viacúèelový editor. + + Pribli¾ný èas potrebný na prebratie tejto výuky je 25-30 minút, + závisí na tom, koµko je stráveného èasu s preskú¹avaním. + + UPOZORNENIE: + Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby + sa mohlo precvièova» na òom (pri ¹tarte "vimtutor" je toto kópia). + + Je dôle¾ité zapamäta» si, ¾e táto výuka je vytvorená pre výuku + pou¾ívaním. To znamená, ¾e je potrebné si príkazy vyskú¹a», aby bolo + uèenie správne. Ak len èitas text, príkazy zabudne¹! + + Presvedè sa, ¾e Shift-Lock NIEJE stlaèený a stlaèt klávesu + j niekoµko krát, aby sa kurzor posunul natoµko, ¾e lekcia 1.1 + celkom zaplní obrazovku. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.1: POHYB KURZOROM + + + ** Pre pohyb kurzorum stlaè klávesy h,j,k,l ako je znázornené. ** + ^ + k Funkcia: Klávesa h je naµavo a vykoná pohyb doµava. + < h l > Klávesa l je napravo a vykoná pohyb doprava. + j Klávesa j vyzerá ako ¹ípka dole + v + 1. Pohybuj kurzorom po obrazovke, kým si na to nezvykne¹. + + 2. Dr¾ stlaèenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. +---> Teraz sa u¾ vie¹ pohybova» na nasledujúcu lekciu. + + 3. Pou¾itím klávesy pre pohyb dole prejdi na Lekciu 1.2. + +Poznámka: Ak si niesi istý tým èo si napísal, stlaè + na prechod do normálneho módu. + +Poznámka: Kurzorové klávesy sú tie¾ funkèné. Ale pou¾ívaním hjkl sa bude¹ + schopný pohybova» rýchlej¹ie, keï si zvykne¹ ich pou¾íva». Naozaj! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 1.2: ZATVÁRANIE VIMU + + + !! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú túto lekciu !! + + 1. Stlaè klávesu (aby si sa uèite nachádzal v normálnom móde) + + 2. Napí¹: :q! . + Tým ukonèí¹ prácu s editorom BEZ ulo¾enia zmien, ktoré si vykonal. + + 3. Keï sa dostane¹ na príkazový riadok, napí¹ príkaz, ktorým sa dostane¹ + spe» do tejto výuky. To mô¾e by»: vimtutor + + 4. Ak si si tieto kroky spoµahlivo zapamätal, vykonaj kroky 1 a¾ 3, pre + ukonèenie a znovu spustenie editora. + +POZNÁMKA: :q! neulo¾í zmeny, ktoré si vykonal. O niekoµko lekcií + sa nauèí¹ ako ulo¾i» zmeny do súboru + + 5. presuò kurzor dole na lekciu 1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.3: EDITÁCIA TEXTU - MAZANIE + + +** Stlaèenie klávesy x v normálnom móde zma¾e znak na mieste kurzora. ** + + 1. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou --->. + + 2. Aby si mohol odstráni» chyby, pohybuj kurzorom kým neprejde na znak, + ktorý chce¹ zmaza». + + 3. Stlaè klávesu x aby sa zmazal nechcený znak. + + 4. Zopakuj kroky 2 a¾ 4 a¾ kým veta nieje správna. + +---> Kraava skooèilla ccezz mesiiac. + + 5. Ak je veta správna, prejdi na lekciu 1.4. + +POZNÁMKA: Neskú¹aj si zapamäta» obsah tejto výuky, ale sa uè pou¾ívaním. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.4: EDITÁCIA TEXTU - VKLADANIE + + + ** Stlaèenie klávesy i umo¾òuje vkladanie textu. ** + + 1. Presuò kurzor ni¾¹ie na prvý riadok za znaèku --->. + + 2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok, + presuò kurzor na prvý znak za misto, kde má by» text vlo¾ený. + + 3. Stlaè klávesu i a napí¹ potrebný text. + + 4. Po opravení ka¾dej chyby, stlaè pre návrat do normálneho módu. + Zopakuj kroky 2 a¾ 4 kým nieje veta správna. + +---> Tu je text chýbajúci tejto. +---> Tu je nejaký text chýbajúci od tejto èiary. + + 5. Keï sa dostatoène nauèí¹ vklada» text, prejdi na nasledujúce zhrnutie. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.5: EDITÁCIA TEXTU - PRIDÁVANIE + + + ** Stlaèenie klávesy A umo¾òuje pridáva» text. ** + + 1. Presuò kurozr ni¾¹ie na prvý riadok za znaèkou --->. + Nezále¾í na tom, na ktorom znaku sa kurzor v tom riadku nachádza. + + 2. Stlaè klávesu A a napí¹ potrebný text. + + 3. Po pridaní textu stlaè klávesu pre návrat do Normálneho módu. + + 4. Presuò kurozr na druhý riadok oznaèený ---> a zopakuj + kroky 2 a 3 kým nieje veta správna. + +---> Tu je nejaký text chýbajúci o + Tu je nejaký text chýbajúci od tiaµto. +---> Tu tie¾ chýba nej + Tu tie¾ chýba nejaký text. + + 5. Keï sa dostatoène nauèí¹ pridáva» text, prejdi na lekciu 1.6. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.6: EDITÁCIA SÚBORU + + + ** Napísaním :wq sa súbor ulo¾í a zavrie ** + +!! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú lekciu!! + +1. Opusti túto výuku, ako si to urobil v lekcii 1.2: :q! + +2. Do príkazového riadku napí¹ príkaz: vim tutor + 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, + ktorý chce¹ editova». Pou¾i taký súbor, ktorý mô¾e¹ meni». + +3. Vlo¾ a zma¾ text tak, ako si sa nauèil v predo¹lých lekciach. + +4. Ulo¾ súbor so zmenami a opusti Vim príkazom: :wq + +5. Re¹tartuj vimtutor a presuò sa dole na nasledujúce zhrnutie. + +6. Urob tak po preèítaní predo¹lých krokov a porozumeniu im. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZHRNUTIE LEKCIE 1 + + + 1. Kurzor sa pohybuje pou¾itím kláves so ¹ípkami alebo klávesmi hjkl. + h (do lava) j (dole) k (hore) l (doprava) + + 2. Pre spustenie Vimu (z príkazového riadku) napí¹: vim FILENAME + + 3. Na ukonèenie Vimu napí¹: :q! pre zru¹enie v¹etkých zmien + alebo napí¹: :wq pre ulo¾enie zmien. + + 4. Na zmazanie znaku na mieste kurzora napí¹: x + + 5. Pre vlo¾enie textu na mieste kurzora v normálnom móde napí¹: + i napí¹ vkladaný text vkladanie pred kurzor + A napí¹ pridávaný text vkladanie za riadok + +POZNÁMKA: Stlaèenie »a premiestní do normálneho módu alebo zru¹í + nejaký nechcený a èiastoène dokonèený príkaz. + +Teraz pokraèuj lekciou 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.1: Mazacie príkazy + + + ** Napísanie príkazu dw zma¾e znaky do konca slova. ** + +1. Stlaè aby si bol bezpeène v normálnom móde. + +2. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou --->. + +3. Presuò kurzor na zaèiatok slova, ktoré je potrebné zmaza». + +4. Napí¹ dw aby slovo zmizlo. + +POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keï ho + napí¹e¹. Vim na teba poèká, aby si mohol napísa» + písmeno w. Ak vidí¹ nieèo iné ako d , tak si napísal + nesprávny znak; stlaè a zaèni znova. + +---> Tu je niekoµko slov zábava, ktoré nie patria list do tejto vety. + +5. Zopakuj kroky 3 a¾ 4 kým veta nieje správna a prejdi na lekciu 2.2. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.2: VIAC MAZACÍCH PRÍKAZOV + + + ** Napísanie príkazu d$ zma¾e znaky do konca riadku ** + +1. Stlaè aby si bol bezpeène v normálnom móde. + +2. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou --->. + +3. Presuò kurzor na koniec správnej vety (ZA prvú bodku). + +4. Napí¹ d$ aby sa zmazali znaky do konca riadku. + +---> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. + + +5. Prejdi na lekciu 2.3 pre pochopenie toho èo sa stalo. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.3: OPERÁTORY A POHYBY + + Veµa príkazov, ktoré menia text sú odvodené od operátorov a pohybov. + Formát pre príkaz mazania klávesou d je nasledovný: + + d pohyb + + kde: + d - je mazací operátor + pohyb - je to èo operátor vykonáva (vypísané ni¾¹ie) + + Krátky list pohybov: + w - do zaèiatku ïal¹ieho slova, okrem jeho prvého písmena. + e - do konca teraj¹ieho slova, vrátane posledného znaku. + $ - do konca riadku, vrátane posledného znaku + + Tak¾e napísaním de sa zma¾e v¹etko od kurzora do konca slova. + +POZNÁMKA: Stlaèením iba pohybu v normálnom móde bez operátora + sa presunie kurzor tak ako je to ¹pecivikované. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.4: Pou¾itie viacnásobného pohybu + + + ** Napísaním èísla pred pohyb ho zopakuje zadný poèet krát ** + + 1. Presuò kurozr ni¾¹ie na zaèiatok riadku oznaèeného --->. + + 2. Napí¹ 2w a kurozr sa presunie o dve slová vpred. + + 3. Napí¹ 3e a kurozr sa presunie vpred na koniec tretieho slova. + + 4. Napí¹ 0 (nula) a kurozr sa presunie na zaèiatok riadku. + + 5. Zopakuj kroky 2 a 3 s rôznymi èíslami. + +---> Toto je riadok so slovami po kotrých sa mô¾ete pohybova». + + 6. Prejdi na lekciu 2.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.5: POU®ITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE + + + ** Napísanie èísla spolu s operátorom ho zopakuje zadaný poèet krát ** + + V kombinácii operátorov mazania a pohybu spomínaného vy¹¹ie vlo¾ poèet + pred pohyb pre docielenie hromadného mazania: + d èíslo pohyb + + 1. Presuò kurzor na prvé slovo písané VE¥KÝMI PÍSMENAMI + v riadku oznaèenom --->. + + 2. Napí¹ 2dw a zma¾e¹ dve slová písané VE¥KÝMI PÍSMENAMI + + 3. Zopakuj kroky 1 a 2 s pou¾itím rôzneho èísla tak aby si zmazal slová + písané veµkými písmenami jedným príkazom. + +---> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. + +POZNÁMKA: Èíslo medzi operátorom d a pohybom funguje podobne ako pri + pou¾ití s pohybom bez operátora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.6: OPERÁCIE S RIADKAMI + + + ** Napísanie príkazu dd zma¾e celý riadok. ** + +Vzhµadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, +¾e bude jednoduch¹ie maza» celý riadok napísaním dvoch písmen d. + +1. Presuò kurzor na druhý riadok v texte na spodu. +2. Napí¹ dd aby si zmazal riadok. +3. Prejdi na ¹tvrtý riadok. +4. Napí¹ 2dd aby si zmazal dva riadky. + + 1) Ru¾e sú èervené, + 2) Blato je zábavné, + 3) Fialky sú modré, + 4) Mám auto, + 5) Hodinky ukazujú èas, + 6) Cukor je sladký, + 7) A to si ty. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.7: PRÍKAZ UNDO + + +** Stlaè u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** + +1. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou ---> a premiestni ho na + prvú chybu. +2. Napí¹ x pre zmazanie prvého nechceného riadku. +3. Teraz napí¹ u èím vrátí¹ spä» posledne vykonaný príkaz. +4. Teraz oprav v¹etky chyby na riadku pou¾itím príkazu x . +5. Teraz napí¹ veµké U èím vrátí¹ riadok do pôvodného stavu. +6. Teraz napí¹ u niekoµko krát, èím vrátí¹ spä» príkaz U. +7. Teraz napí¹ CTRL-R (dr¾ klávesu CTRL stlaèenú kým stláèa¹ R) niekoµko + krát, èím vrátí¹ spä» predtým vrátené príkazy (undo z undo). + +---> Opprav chybby nna toomto riadku a zmeeò ich pommocou undo. + + 8. Tieto príkazy sú èasto pou¾ívané. Teraz prejdi na zhrnutie lekcie 2. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 2 ZHRNUTIE + + + 1. Pre zmazanie znakov od kurzora do konca slova napí¹: dw + + 2. Pre zmazanie znakov od kurzora do konca riadku napí¹: d$ + + 3. Pre zmazanie celého riadku napí¹: dd + + 4. Pre zopakovanie pohybu, napí¹ pred neho èíslo: 2w + + 5. Formát pre píkaz: + + operátor [èíslo] pohyb + kde: + operátor - èo treba robi», napríklad d pre zmazanie + [èíslo] - je voliteµný poèet pre opakovanie pohybu + pohyb - pohyb po texte vzhµadom na operátor, napríklad w (slovo), + $ (do konca riadku), atï. + + 6. Pre pohyb na zaèiatok riadku pou¾i nulu: 0 + + 7. Pre vrátenie spä» predo¹lej operácie napí¹: u (malé u) + Pre vrátenie v¹etkých úprav na riadku napí¹: U (veµké U) + Pre vrátenie vrátených úprav napí¹: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.1: PRÍKAZ VLO®I« + + + ** Napísanie príkazu p vlo¾í psledný výmaz za kurzor. ** + + 1. Presuò kurzor ni¾¹ie na prvý riadok textu. + + 2. Napí¹ dd èím zma¾e¹ riadok a ulo¾í¹ ho do buffera editora Vim. + + 3. Presuò kurzor vy¹¹ie tam, kam zmazaný riadok patrí. + + 4. Ak napí¹e¹ v normálnom móde p zmazaný riadk sa vlo¾í. + + 5. Zopakuj kroky 2 a¾ 4, kým riadky niesú v správnom poradí. + +---> d) Tie¾ sa doká¾e¹ vzdeláva»? +---> b) Fialky sú modré, +---> c) Inteligencia sa vzdeláva, +---> a) Ru¾e sú èervené, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.2: PRÍKAZ NAHRADENIA + + + ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** + + 1. Presuò kurzor ni¾¹ie na prví riadok textu oznaèeného znaèkou --->. + + 2. Presuò kurzor na zaèiatok prvej chyby. + + 3. napí¹ r a potom znak, ktorý tam má by». + + 4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým. + +---> Kaï bol tento riasok píaaný, niekro stla¹il nesprábne klávesy! +---> Keï bol tento riadok písaný, niekto stlaèil nesprávne klávesy! + + 5. Teraz prejdi na lekciu 3.2. + +POZNÁMKA: Pamätaj si, ¾e nauèi» sa mô¾e¹ len pou¾ívanim, nie pamätaním. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.3. PRÍKAZ ÚPRAVY + + + ** Ak chce¹ zmeni» èas» slova do konca slova, napí¹ ce . ** + + 1. Presuò kurzor ni¾¹ie na prvý riadok oznaèený znaèkou --->. + + 2. Umiestni kurzor na písmeno o v slove rosfpl. + + 3. Napí¹ ce a oprav slovo (v tomto prípade napí¹ 'iadok'.) + + 4. Stlaè a prejdi na ïal¹í znak, ktorý treba zmeni». + + 5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá. + +---> Tento rosfpl má niekoµko skic, ktoré je pirewvbí zmeni» piy»uèán príkazu. +---> Tento riadok má niekoµko slov, ktoré je potrebné zmeni» pou¾itím príkazu. + +Poznámka, ¾e ce zma¾e slovo a nastaví vkladací mód. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.4: VIAC ZMIEN POU®ITÍM c + + + ** Príkaz pre úpravy sa pou¾íva s rovnakými pohybmi ako pre mazanie ** + + 1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je: + + c [èíslo] pohyb + + 2. Pohyby sú rovnaké, ako napríklad w (slovo) a $ (koniec riadku). + + 3. Presuò kurzor ni¾¹ie na prvý riadok oznaèený znaèkou --->. + + 4. Presuò kurzor na prvú chybu. + + 5. napí¹ c$ aby si mohol upravi» zvy¹ok riadku podµa druhého + a stlaè . + +---> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. +---> Koniec tohto riadku potrebuje opravi» pou¾itím príkazu c$ . + +POZNÁMKA: Mô¾e¹ pou¾i» klávesu backspace na úpravu zmien poèas písania. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 3 ZHRNUTIE + + + 1. Na vlo¾enie textu, ktorý u¾ bol zmazaný, napí¹ p . To vlo¾í zmazaný + text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom). + + 2. Pre naradenie znaku na mieste kurzora, napí¹ r a potom znak, ktorý + nahradí pôvodný znak. + + 3. Príkaz na upravenie umo¾òuje zmeni» od kurzora a¾ po miesto, ktoré + urèuje pohyb. napr. Napí¹ ce èím zmní¹ text od pozície + kurzora do konca slova, c$ zmení text do konca riadku. + + 4. Formát pre nahradenie je: + + c [èíslo] pohyb + + +Teraz prejdi na nalsedujúcu lekciu. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.1: POZÍCIA A STATUS SÚBORU + + + ** Stlaè CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. + Napí¹ G pre presun na riadok v súbore. ** + + Poznámka: Preèítaj si celú túto lekciu skôr ako zaène¹ vykonáva» kroky!! + + 1. Dr¾ stlaèenú klávesu Ctrl a stlaè g . Toto nazývame CTRL-G. + Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou + v súbore. Zapamätajsi si èíslo riadku pre pou¾itie v kroku 3. + + 2. Stlaè G èím sa dostane¹ na spodok súboru. + Napí¹ gg èím sa dostane¹ na zaèiatok súboru. + + 3. Napí¹ èíslo riadku na ktorom si sa nachádzal a stlaè G. To »a + vráti na riadok, na ktorom si prvý krát stlaèil CTRL-G. + + 4. Ak sa cítí¹ schopný vykona» teto kroky, vykonaj kroky 1 a¾ 3. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.2: PRÍKAZ VYH¥ADÁVANIA + + + ** Napí¹ / nasledované re»azcom pre vyhµadanie príslu¹ného re»azca. ** + + 1. Napí¹ znak / v normálnom móde. Poznámka, ¾e tento znak sa spolu + s kurzorom zobrazí v dolnej èasti obrazovky s : príkazom. + + 2. Teraz napí¹ 'errroor' . To je slovo, ktoré chce¹ vyhµada». + + 3. Pre vyhµadanie ïal¹ieho výskytu rovnakého re»azca, stlaè jednoducho n. + Pre vyhµadanie ïal¹ieho výskytu rovnakého re»azca opaèným smerom, + N. + + 4. Ak chce¹ vyhµada» re»azec v spätnom smere, pou¾í príkaz ? miesto + príkazu /. + + 5. Pre návrat na miesto z ktorého si pri¹iel stlaè CTRL-O (dr¾ stlaèenú + klávesu Ctrl poèas stlaèenia klávesy o). Zopakuj pre ïal¹í návrat + spä». CTRL-I ide vpred. + +POZNÁMKA: "errroor" nieje spôsob hláskovania error; errroor je error. +POZNÁMKA: Keï vyhµadávanie dosiahne koniec tohto súboru, bude pokraèova» na + zaèiatku, dokiaµ nieje resetované nastavenie 'wrapscan' . + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.3: VYH¥ADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK + + + ** Napí¹ % pre vyhµadanie príslu¹ného znaku ),], alebo } . ** + + 1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku ni¾¹ie + oznaèeného znaèkou --->. + + 2. Teraz napí¹ znak % . + + 3. Kurzor sa premiestni na zodpovedajúcu zátvorku. + + 4. Napí¹ % pre presun kurzoru spä» na otvárajúcu zátvorku. + + 5. Presuò kurzor na iný zo znakov (,),[,],{ alebo } a v¹imni si + èo % vykonáva. + +---> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. )) + +Poznámka: Toto je veµmi výhodné pou¾í» pri ladení programu s chýbajúcimi + uzatvárajúcimi zátvorkami! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.4: PRÍKAZ NAHRADENIA + + + ** Napí¹ :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** + + 1. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou --->. + + 2. Napí¹ :s/thee/the . Poznamka, ¾e tento príkaz zmení len prvý + výskyt "thee" v riadku. + + 3. Teraz napí¹ :s/thee/the/g èo znamená celkové nahradenie v riadku. + Toto nahradí v¹etky výskyty v riadku. + +---> Thee best time to see thee flowers in thee spring. + + 4. Pre zmenu v¹etkých výskytov daného re»azca medzi dvomi ridakami, + napí¹ :#,#s/starý/nový/g kde #,# sú èísla dvoch riadkov, v rozsahu + ktorých sa nahradenie vykoná. + napí¹ :%s/starý/nový/g pre zmenu v¹etkých výskytov v celom riadku + napí¹ :%s/starý/nový/gc nájde v¹etky výskyty v celom súbore, + s otázkou èi nahradi» alebo nie + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 4 ZHRNUTIE + + + 1. CTRL-g vypí¹e tvoju pozíciu v súbore a status súboru. + G »a premiestni na koniec riadku. + èíslo G »a premiestni na riadok s èíslom. + gg »a presunie na prvý riadok + + 2. Napísanie / nasledované re»azcom vyhµadá re»azec smerom DOPREDU. + Napísanie ? nasledované re»azcom vyhµada re»azec smerom DOZADU. + Napísanie n po vyhµadávaní, vyhµadá nasledujúci výskyt re»azca + v rovnakom smere, prièom N vyhµadá v opaènom smere. + CTRL-O »a vráti spä» na star¹iu pozíciu, CTRL-I na nov¹iu pozíciu. + + 3. Napísanie % keï kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu + párnu zátvorku. + + 4. Pre nahradenie nového za prvý starý v riadku napí¹ :s/starý/nový + Pre nahradenie nového za v¹etky staré v riadku napí¹ :s/starý/nový/g + Pre nahradenie re»azcov medzi dvoma riadkami 3 napí¹ :#,#/starý/nový/g + Pre nahradenie v¹etkých výskytov v súbore napí¹ :%s/starý/nový/g + Pre potvrdenie ka¾dého nahradenia pridaj 'c' :%s/starý/nový/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.1 AKO SPUSTI« VONKAJ©Í PRÍKAZ + + + ** Napí¹ príkaz :! nasledovaný vonkaj¹ím príkazom pre spustenie príkazu ** + + 1. Napí¹ obvyklý píkaz : ktorý nastaví kurzor na spodok obrazovky. + To umo¾ní napísa» príkaz. + + 2. Teraz napí¹ ! (výkrièník). To umo¾ní spusti» hociaký vonkaj¹í príkaz + z príkazového riadku. + + 3. Ako príklad napí¹ ls za ! a stlaè . Tento príkaz + zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku. + Alebo pou¾i :!dir ak ls nefunguje. + +Poznámka: Takto je mo¾né spusti» hociaký vonkaj¹í príkaz s argumentami. +Poznámka: V¹etky príkazy : musia by» dokonèené stlaèením + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.2: VIAC O UKLADANÍ SÚBOROV + + + ** Pre ulo¾enie zmien v súbore, napí¹ :w FILENAME. ** + + 1. Napí¹ :!dir alebo :!ls pre výpis aktuálneho adresára. + U¾ vie¹, ¾e musí¹ za týmto stlaèi» . + + 2. Vyber názov súboru, ktorý e¹te neexistuje, ako napr. TEST. + + 3. Teraz napí¹: :w TEST (kde TEST je názov vybratého súboru.) + + 4. To ulo¾í celý súbor (Vim Tutor) pod názovm TEST. + Pre overenie napí¹ :!dir , èím zobrazí¹ obsah adresára. + +Poznámka: ¾e ak ukonèí¹ prácu s editorom Vim a znovu ho spustí¹ príkazom + vim TEST, súbor bude kópia výuky, keï si ho ulo¾il. + + 5. Teraz odstráò súbor napísaním (MS-DOS): :!del TEST + alebo (Unix): :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.3 VÝBER TEXTU PRE ULO®ENIE + + + ** Pre ulo¾enie èasti súboru, napí¹ v pohyb :w FILENAME ** + + 1. Presuò kurozr na tento riadok. + + 2. Stlaè v a presuò kurozr na piatu polo¾ku dole. Poznámka, ¾e + tento text je vyznaèený (highlighted). + + 3. Stlaè klávesu : . V spodnej èasti okna sa objaví :'<,'>. + + 4. Napí¹ w TEST , kde TEST je meno súboru, ktorý zatial neexistuje. + Skontroluj, e vidí¹ :'<,'>w TEST predtým ne¾ stlaèí¹ Enter. + + 5. Vim zapí¹e oznaèené riadky do súboru TEST. Pou¾i :!dir alebo :!ls + pre overenie. Zatial ho e¹te nema¾! Pou¾ijeme ho v ïal¹ej lekcii. + +POZNÁMKA: Stlaèením klávesy v sa spustí vizuálne oznaèovanie. + Mô¾e¹ pohybova» kurzorom pre upresnenie vyznaèeného textu. + Potom mô¾e¹ pou¾i» operátor pre vykonanie nejakej akcie + s textom. Napríklad d zma¾e vyznaèený text. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.4: VÝBER A ZLUÈOVANIE SÚBOROV + + + ** Pre vlo¾enie obsahu súboru, napí¹ :r FILENAME ** + + 1. Premiestni kurzor nad tento riadok. + +POZNÁMKA: Po vykonaní kroku 2 uvidí¹ text z lekcie 5.3. Potom sa presuò + dole, aby si videl túto lekciu. + + 3. Teraz vlo¾ súbor TEST pou¾itím príkazu :r TEST kde TEST je názov + súboru. Súbor, ktorý si pou¾il je umiestnený pod riadkom s kurzorom. + +POZNÁMKA: Mô¾e¹ tie¾ naèíta» výstup vonkaj¹ieho príkazu. Napríklad :r !ls + naèíta výstup príkazu ls a umiestni ho za pozíciu kurzora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 5 ZHRNUTIE + + + 1. :!príkaz spustí vonkaj¹í príkaz. + + Niektoré vyu¾iteµné príklady sú: + (MS_DOS) (UNIX) + :!dir :!ls - zobrazí obsah adresára + :!del FILENAME :!rm FILENAME - odstráni súbor FILENAME + + 2. :w FILENAME ulo¾í aktuálny súbor na disk pod menom FILENAME. + + 3. v pohyb :w FILENAME ulo¾í vizuálne oznaèené riadky do + súboru FILENAME. + + 4. :r FILENAME vyberie z disku súbor FILENAME a vlo¾í ho do aktuálneho + súboru za pozíciou kurzora. + + 5. :r !dir naèíta výstup z príkazu dir a vlo¾í ho za pozíciu kurzora. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.1: PRÍKAZ OTVORI« + + +** Napí¹ o pre vlo¾enie riadku pod kurzor a prepnutie do vkladacieho módu ** + + 1. Presuò kurzor ni¾¹ie na riadok oznaèený znaèkou --->. + + 2. Napí¹ o (malé písmeno) pre vlo¾enie èistého riadku pod kurzorm + a prepnutie do vkladacieho módu. + + 3. Teraz skopíruj riadok oznaèený ---> a stlaè pre ukonèenie + vkladacieho módu. + +---> Po napísaní o sa kurzor premiestní na vlo¾ený riadok do vkladacieho + módu. + + 4. Pre otvorenie riadku nad kurzorom, jednotucho napí¹ veµké O , + namiesto malého o. Vyskú¹aj si to na riadku dole. + +---> Vlo¾ riadok nad týmto napísaním O, keï kurzor je na tomto riadku. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.2: PRÍKAZ PRIDA« + + + ** Napí¹ a pre vlo¾enie textu ZA kurzor. ** + + 1. Presuò kurzor ni¾¹ie na koniec prvého riadku oznaèeného znaèkou ---> + + 2. Stlaè klávesu e dokiaµ kurozr nieje na konci riadku. + + 3. Napí¹ a (malé písmeno) pre pridanie textu ZA kurzorom. + + 4. Dokonèí slovo tak ako je to v druhom riadku. Stla¹ pre + opustenie vkladacieho módu. + + 5. Pou¾i e na presun na ïal¹ie nedokonèené slovo a zopakuj kroky 3 a 4. + +---> Tento ri ti dovoµuje nácv priávan testu na koniec riadku. +---> Tento riadok ti dovoµuje nácvik pridávania textu na koniec riadku. + +POZNÁMKA: a, i, A ¹tartujú rovnaký vkladací mód, jediný rozidel je, kde + sa znaky vkladajú. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.3: INÝ SPOSOB NAHRADZOVANIA + + + ** Napí¹ veµké R pre nahradenie viac ako jedného znaku. ** + + 1. Presuò kurzor ni¾¹ie na prvý riadok oznaèený znaèkou --->. Premiestni + kurzor na zaèiatok prvého výskytu xxx. + + 2. Teraz napí¹ R a napí¹ èíslo uvedené v druhom riadku, tak¾e + sa ním nahradí pôvodné xxx. + + 3. Stlaè pre opustenie nahradzovacieho módu. Poznámka, ¾e zvy¹ok + riadku zostane nezmenený. + + 4. Zopakuj tieto kroky pre nahradenie zvy¹ných xxx. + +---> Pridaním 123 ku xxx dostane¹ xxx. +---> Pridaním 123 ku 456 dostane¹ 579. + +POZNÁMKA: Nahradzovací mód je ako vkladací mód, ale ka¾dý napísaný znak + zma¾e existujúci znak. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lekcia 6.4: Copy Paste textu + + ** pou¾í operátor y pre copy textku a p pre jeho paste ** + + 1. Choï ni¾¹ie na riadok oznaèený ---> a umiestni kurozr za "a)". + + 2. Na¹tartuj vizuálny mód pou¾itím v a presuò kurozr pred "first". + + 3. Napí¹ y pre vystrihnutie (copy) oznaèeného textu. + + 4. Presuò kurozr na koniec ïal¹ieho riadku: j$ + + 5. Napí¹ p pre vlo¾nie (paste) textu. Potom napí¹: a druha . + + 6. Pou¾i vizuálny mód pre oznaèenie "polo¾ka.", vystrihni to + pou¾itím y, presuò sa na koniec nasledujúceho riadku pou¾itím j$ + a vlo¾ sem text pou¾itím p. + +---> a) toto je prvá polo¾ka +---> b) + +POZNÁMKA: Mô¾e¹ pou¾i» tie¾ y ako operátor; yw vystrihne jedno slovo. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.5: NASTAVENIE MO®NOSTÍ + + +** Nastav mo¾nosti, tak¾e vyhµadávanie alebo nahradzovanie ignoruje + rozli¹ovanie ** + + + 1. Vyhµadaj re»azec 'ignore' napísaním: + /ignore + Zopakuj vyhµadávanie niekoµko krát stlaèením klávesy n . + + 2. Nastav mo¾nos» 'ic' (Ignore case) napísaním príkazu: + :set ic + + 3. Teraz vyhµadaj re»azec 'ingore' znova stlaèením klávesy n + Poznámka, ¾e teraz sú vyhµadané aj Ignore a IGNORE. + + 4. Nastav mo¾nos»i 'hlsearch' a 'incsearch': + :set hls is + + 5. Teraz spusti vyhµadávací príkaz znovu, a pozri èo sa stalo: + /ignore + + 6. Pre opetovné zapnutie rozly¹ovania veµkých a malých písmen + napí¹: :set noic + +POZNÁMKA: Na odstránenie zvýraznenia výrazov napí¹: :nohlsearch +POZNÁMKA: Ak chce¹ nerozly¹ova» veµkos» písmen len pre jedno + pou¾itie vyhµadávacieho príkazu, pou¾i \c: /ignore\c + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 6 ZHRNUTIE + + + 1. Napí¹ o pre otvorenie riadku pod kurzorom a ¹tart vkladacieho módu. + Napí¹ O pre otvorenie riadku nad kurzorom. + + 2. Napí¹ a pre vkladanie textu ZA kurzor. + Napí¹ A pre vkladanie textu za koncom riadku. + + 3. Príkaz e presunie kurozr na koniec slova + + 4. Operátor y vystrihne (skopíruje) text, p ho vlo¾í. + + 5. Napísanie veµkého R prepne do nahradzovacieho módu, kým nieje + stlaèené . + + 6. Napísanie ":set xxx" nastaví mo¾nos» "xxx". Niektoré nastavenia sú: + 'ic' 'ignorecase' ignoruje veµké a malé písmená poèas vyhµadávania. + 'is' 'incsearch' zobrazuje èiastoèné re»azce vyhµadávaného re»azca. + 'hls' 'hlsearch' vyznaèí v¹etky vyhµadávané re»azce. + Mô¾e¹ pou¾i» hociktorý z dlhých a krátkych názvov mo¾ností. + + 7. Vlo¾ "no" pred nastavenie pre jeho vypnutie: :set noic + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 7.1: ZÍSKANIE NÁPOVEDY + + + ** Pou¾ívaj on-line systém nápovedy ** + + Vim má obsiahly on-line systém nápovedy. Pre od¹tartovanie, vyskú¹aj jeden + z týchto troch: + - stlaè klávesu (ak nejakú má¹) + - stlaè klávesu (ak nejakú má¹) + - napí¹ :help + + Èítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. + Napí¹ CTRL-W CTRL-W pre skok z jedného okna do druhého. + Napí¹ :q èím zatvorí¹ okno nápovedy. + + Mô¾e¹ nájs» help ku hociakej téme pridaním argumentu ku príkazu ":help". + Vyskú¹aj tieto (nezabudni stlaèi» ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 7.2: VYTVORENIE ©TARTOVACIEHO SKRIPTU + + ** Zapni funkcie editora Vim ** + + Vim má omnoho viac funkcii ne¾ Vi, ale veè¹ina z nich je implicitne + vypnutá. Pre pou¾ívanie viac Vim funkcii vytvor "vimrc" súbor. + + 1. Zaèni editova» "vimrc" súbor, to závisí na pou¾itom systéme: + :e ~/.vimrc pre Unix + :e $VIM/_vimrc pre MS-Windows + + 2. Teraz si preèítaj text príkladu "vimrc" súboru: + + :r $VIMRUNTIME/vimrc_example.vim + + 3. Ulo¾ súbor: + :w + + Pri nasledujúcom ¹tarte editora Vim sa pou¾ije zvýrazòovanie syntaxe. + Do "vimrc" súboru mô¾e¹ prida» v¹etky svoje uprednostòované nastavenia. + Pre viac informácii napí¹ :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + LEKCIA 7.3 DOKONÈENIE + + ** Dokonèi príkaz na príkazovom riadku pou¾itím CTRL-D a ** + + 1. Uisti sa, ¾e Vim nieje v kompatibilnom móde: :set nocp + + 2. Pozri sa aké súbory sa nachádzajú v adresári: :!ls alebo :!dir + + 3. Napí¹ zaèiatok príkazu: :e + + 4. Stlaè CTRL-D a Vim zobrazí zoznam príkazov zaèínajúcich "e". + + 5. Stlaè a Vim dokonèí meno príkazu na ":edit". + + 6. Teraz pridaj medzerník a zaèiatok mena existujúceho súboru: + :edit FIL + + 7. Stlaè . Vim dokonèí meno (ak je jedineèné). + +POZNÁMKA: Dokonèovanie funguje pre veµa príkazov. Vyskú¹aj stlaèenie + CTRL-D a . ©peciálne je to u¾itoèné pre príkaz :help. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + LEKCIA 7 ZHRNUTIE + + 1. Napí¹ :help alebo stlaè alebo pre otvorenie okna nápovedy. + + 2. Napí¹ :help príkaz pre vyhµadanie nápovedy ku príkazu príkaz. + + 3. Napí¹ CTRL-W CTRL-W na preskoèenie do iného okna. + + 4. Napí¹ :q pre zatvorenie okna nápovedy + + 5. Vytvor ¹tartovací skript vimrc pre udr¾anie uprednostòovaných nastavení. + + 6. Poèas písania príkazu : stlaè CTRL-D pre zobrazenie dokonèení. + Stlaè pre pou¾itie jedného z dokonèení. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + + Toto vymedzuje výuku Vimu. Toto je urèené pre strucný prehµad o editore + Vim, úplne postaèujúce pre µahké a obstojné pou¾ívanie tohto editora. + Táto výuka je ïaleko od kompletnosti, preto¾e Vim má omnoho viacej príkazov. + Ako ïal¹ie si preèítaj u¾ívatµský manuál: ":help user-manual". + + Pre ïal¹ie èítanie a ¹túdium je odporúèaná kniha: + Vim - Vi Improved - od Steve Oualline + Vydavateµ: New Riders + Prvá kniha urèená pre Vim. ©peciálne vhodná pre zaèiatoèníkov. + Obsahuje mno¾stvo príkladov a obrázkov. + Pozri na http://iccf-holland.org/click5.html + + Táto kniha je star¹ia a je viac o Vi ako o Vim, ale je tie¾ odporúèaná: + Learning the Vi Editor - od Linda Lamb + Vydavateµ: O'Reilly & Associates Inc. + Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi. + ©ieste vydanie obsahuje tie¾ informácie o editore Vim. + + Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware, + Colorado School of Mines s pou¾itím my¹lienok dodanými od Charles Smith, + Colorado State University. E-mail: bware@mines.colorado.edu. + + Modifikované pre Vim od Bram Moolenaar. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Preklad do Slovenèiny: ¥ubo¹ Èelko + e-mail: celbos@inmail.sk + Last Change: 2006 Apr 18 + encoding: iso8859-2 diff --git a/share/vim/vim74/tutor/tutor.sk.cp1250 b/share/vim/vim74/tutor/tutor.sk.cp1250 new file mode 100644 index 00000000..c4e7b3d3 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.sk.cp1250 @@ -0,0 +1,1008 @@ +=============================================================================== += V i t a j t e v o V I M T u t o r i a l i - Verzia 1.7 = +=============================================================================== + + Vim je ve¾mi výkonný editor, ktorý má príliž ve¾a príkazov na to aby + mohli byt všetky popísané vo výuke akou je táto. Táto výuka + popisuje dostatoèné množstvo príkazov nato aby bolo možné používa� + Vim ako viacúèelový editor. + + Približný èas potrebný na prebratie tejto výuky je 25-30 minút, + závisí na tom, ko¾ko je stráveného èasu s preskúšavaním. + + UPOZORNENIE: + Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby + sa mohlo precvièova� na òom (pri štarte "vimtutor" je toto kópia). + + Je dôležité zapamäta� si, že táto výuka je vytvorená pre výuku + používaním. To znamená, že je potrebné si príkazy vyskúša�, aby bolo + uèenie správne. Ak len èitas text, príkazy zabudneš! + + Presvedè sa, že Shift-Lock NIEJE stlaèený a stlaèt klávesu + j nieko¾ko krát, aby sa kurzor posunul nato¾ko, že lekcia 1.1 + celkom zaplní obrazovku. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.1: POHYB KURZOROM + + + ** Pre pohyb kurzorum stlaè klávesy h,j,k,l ako je znázornené. ** + ^ + k Funkcia: Klávesa h je na¾avo a vykoná pohyb do¾ava. + < h l > Klávesa l je napravo a vykoná pohyb doprava. + j Klávesa j vyzerá ako šípka dole + v + 1. Pohybuj kurzorom po obrazovke, kým si na to nezvykneš. + + 2. Drž stlaèenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. +---> Teraz sa už vieš pohybova� na nasledujúcu lekciu. + + 3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.2. + +Poznámka: Ak si niesi istý tým èo si napísal, stlaè + na prechod do normálneho módu. + +Poznámka: Kurzorové klávesy sú tiež funkèné. Ale používaním hjkl sa budeš + schopný pohybova� rýchlejšie, keï si zvykneš ich používa�. Naozaj! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 1.2: ZATVÁRANIE VIMU + + + !! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú túto lekciu !! + + 1. Stlaè klávesu (aby si sa uèite nachádzal v normálnom móde) + + 2. Napíš: :q! . + Tým ukonèíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal. + + 3. Keï sa dostaneš na príkazový riadok, napíš príkaz, ktorým sa dostaneš + spe� do tejto výuky. To môže by�: vimtutor + + 4. Ak si si tieto kroky spo¾ahlivo zapamätal, vykonaj kroky 1 až 3, pre + ukonèenie a znovu spustenie editora. + +POZNÁMKA: :q! neuloží zmeny, ktoré si vykonal. O nieko¾ko lekcií + sa nauèíš ako uloži� zmeny do súboru + + 5. presuò kurzor dole na lekciu 1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.3: EDITÁCIA TEXTU - MAZANIE + + +** Stlaèenie klávesy x v normálnom móde zmaže znak na mieste kurzora. ** + + 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. + + 2. Aby si mohol odstráni� chyby, pohybuj kurzorom kým neprejde na znak, + ktorý chceš zmaza�. + + 3. Stlaè klávesu x aby sa zmazal nechcený znak. + + 4. Zopakuj kroky 2 až 4 až kým veta nieje správna. + +---> Kraava skooèilla ccezz mesiiac. + + 5. Ak je veta správna, prejdi na lekciu 1.4. + +POZNÁMKA: Neskúšaj si zapamäta� obsah tejto výuky, ale sa uè používaním. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.4: EDITÁCIA TEXTU - VKLADANIE + + + ** Stlaèenie klávesy i umožòuje vkladanie textu. ** + + 1. Presuò kurzor nižšie na prvý riadok za znaèku --->. + + 2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok, + presuò kurzor na prvý znak za misto, kde má by� text vložený. + + 3. Stlaè klávesu i a napíš potrebný text. + + 4. Po opravení každej chyby, stlaè pre návrat do normálneho módu. + Zopakuj kroky 2 až 4 kým nieje veta správna. + +---> Tu je text chýbajúci tejto. +---> Tu je nejaký text chýbajúci od tejto èiary. + + 5. Keï sa dostatoène nauèíš vklada� text, prejdi na nasledujúce zhrnutie. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.5: EDITÁCIA TEXTU - PRIDÁVANIE + + + ** Stlaèenie klávesy A umožòuje pridáva� text. ** + + 1. Presuò kurozr nižšie na prvý riadok za znaèkou --->. + Nezáleží na tom, na ktorom znaku sa kurzor v tom riadku nachádza. + + 2. Stlaè klávesu A a napíš potrebný text. + + 3. Po pridaní textu stlaè klávesu pre návrat do Normálneho módu. + + 4. Presuò kurozr na druhý riadok oznaèený ---> a zopakuj + kroky 2 a 3 kým nieje veta správna. + +---> Tu je nejaký text chýbajúci o + Tu je nejaký text chýbajúci od tia¾to. +---> Tu tiež chýba nej + Tu tiež chýba nejaký text. + + 5. Keï sa dostatoène nauèíš pridáva� text, prejdi na lekciu 1.6. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.6: EDITÁCIA SÚBORU + + + ** Napísaním :wq sa súbor uloží a zavrie ** + +!! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú lekciu!! + +1. Opusti túto výuku, ako si to urobil v lekcii 1.2: :q! + +2. Do príkazového riadku napíš príkaz: vim tutor + 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, + ktorý chceš editova�. Použi taký súbor, ktorý môžeš meni�. + +3. Vlož a zmaž text tak, ako si sa nauèil v predošlých lekciach. + +4. Ulož súbor so zmenami a opusti Vim príkazom: :wq + +5. Reštartuj vimtutor a presuò sa dole na nasledujúce zhrnutie. + +6. Urob tak po preèítaní predošlých krokov a porozumeniu im. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZHRNUTIE LEKCIE 1 + + + 1. Kurzor sa pohybuje použitím kláves so šípkami alebo klávesmi hjkl. + h (do lava) j (dole) k (hore) l (doprava) + + 2. Pre spustenie Vimu (z príkazového riadku) napíš: vim FILENAME + + 3. Na ukonèenie Vimu napíš: :q! pre zrušenie všetkých zmien + alebo napíš: :wq pre uloženie zmien. + + 4. Na zmazanie znaku na mieste kurzora napíš: x + + 5. Pre vloženie textu na mieste kurzora v normálnom móde napíš: + i napíš vkladaný text vkladanie pred kurzor + A napíš pridávaný text vkladanie za riadok + +POZNÁMKA: Stlaèenie �a premiestní do normálneho módu alebo zruší + nejaký nechcený a èiastoène dokonèený príkaz. + +Teraz pokraèuj lekciou 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.1: Mazacie príkazy + + + ** Napísanie príkazu dw zmaže znaky do konca slova. ** + +1. Stlaè aby si bol bezpeène v normálnom móde. + +2. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. + +3. Presuò kurzor na zaèiatok slova, ktoré je potrebné zmaza�. + +4. Napíš dw aby slovo zmizlo. + +POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keï ho + napíšeš. Vim na teba poèká, aby si mohol napísa� + písmeno w. Ak vidíš nieèo iné ako d , tak si napísal + nesprávny znak; stlaè a zaèni znova. + +---> Tu je nieko¾ko slov zábava, ktoré nie patria list do tejto vety. + +5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 2.2. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.2: VIAC MAZACÍCH PRÍKAZOV + + + ** Napísanie príkazu d$ zmaže znaky do konca riadku ** + +1. Stlaè aby si bol bezpeène v normálnom móde. + +2. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. + +3. Presuò kurzor na koniec správnej vety (ZA prvú bodku). + +4. Napíš d$ aby sa zmazali znaky do konca riadku. + +---> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. + + +5. Prejdi na lekciu 2.3 pre pochopenie toho èo sa stalo. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.3: OPERÁTORY A POHYBY + + Ve¾a príkazov, ktoré menia text sú odvodené od operátorov a pohybov. + Formát pre príkaz mazania klávesou d je nasledovný: + + d pohyb + + kde: + d - je mazací operátor + pohyb - je to èo operátor vykonáva (vypísané nižšie) + + Krátky list pohybov: + w - do zaèiatku ïalšieho slova, okrem jeho prvého písmena. + e - do konca terajšieho slova, vrátane posledného znaku. + $ - do konca riadku, vrátane posledného znaku + + Takže napísaním de sa zmaže všetko od kurzora do konca slova. + +POZNÁMKA: Stlaèením iba pohybu v normálnom móde bez operátora + sa presunie kurzor tak ako je to špecivikované. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.4: Použitie viacnásobného pohybu + + + ** Napísaním èísla pred pohyb ho zopakuje zadný poèet krát ** + + 1. Presuò kurozr nižšie na zaèiatok riadku oznaèeného --->. + + 2. Napíš 2w a kurozr sa presunie o dve slová vpred. + + 3. Napíš 3e a kurozr sa presunie vpred na koniec tretieho slova. + + 4. Napíš 0 (nula) a kurozr sa presunie na zaèiatok riadku. + + 5. Zopakuj kroky 2 a 3 s rôznymi èíslami. + +---> Toto je riadok so slovami po kotrých sa môžete pohybova�. + + 6. Prejdi na lekciu 2.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.5: POUŽITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE + + + ** Napísanie èísla spolu s operátorom ho zopakuje zadaný poèet krát ** + + V kombinácii operátorov mazania a pohybu spomínaného vyššie vlož poèet + pred pohyb pre docielenie hromadného mazania: + d èíslo pohyb + + 1. Presuò kurzor na prvé slovo písané VE¼KÝMI PÍSMENAMI + v riadku oznaèenom --->. + + 2. Napíš 2dw a zmažeš dve slová písané VE¼KÝMI PÍSMENAMI + + 3. Zopakuj kroky 1 a 2 s použitím rôzneho èísla tak aby si zmazal slová + písané ve¾kými písmenami jedným príkazom. + +---> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. + +POZNÁMKA: Èíslo medzi operátorom d a pohybom funguje podobne ako pri + použití s pohybom bez operátora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.6: OPERÁCIE S RIADKAMI + + + ** Napísanie príkazu dd zmaže celý riadok. ** + +Vzh¾adom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, +že bude jednoduchšie maza� celý riadok napísaním dvoch písmen d. + +1. Presuò kurzor na druhý riadok v texte na spodu. +2. Napíš dd aby si zmazal riadok. +3. Prejdi na štvrtý riadok. +4. Napíš 2dd aby si zmazal dva riadky. + + 1) Ruže sú èervené, + 2) Blato je zábavné, + 3) Fialky sú modré, + 4) Mám auto, + 5) Hodinky ukazujú èas, + 6) Cukor je sladký, + 7) A to si ty. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.7: PRÍKAZ UNDO + + +** Stlaè u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** + +1. Presuò kurzor nižšie na riadok oznaèený znaèkou ---> a premiestni ho na + prvú chybu. +2. Napíš x pre zmazanie prvého nechceného riadku. +3. Teraz napíš u èím vrátíš spä� posledne vykonaný príkaz. +4. Teraz oprav všetky chyby na riadku použitím príkazu x . +5. Teraz napíš ve¾ké U èím vrátíš riadok do pôvodného stavu. +6. Teraz napíš u nieko¾ko krát, èím vrátíš spä� príkaz U. +7. Teraz napíš CTRL-R (drž klávesu CTRL stlaèenú kým stláèaš R) nieko¾ko + krát, èím vrátíš spä� predtým vrátené príkazy (undo z undo). + +---> Opprav chybby nna toomto riadku a zmeeò ich pommocou undo. + + 8. Tieto príkazy sú èasto používané. Teraz prejdi na zhrnutie lekcie 2. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 2 ZHRNUTIE + + + 1. Pre zmazanie znakov od kurzora do konca slova napíš: dw + + 2. Pre zmazanie znakov od kurzora do konca riadku napíš: d$ + + 3. Pre zmazanie celého riadku napíš: dd + + 4. Pre zopakovanie pohybu, napíš pred neho èíslo: 2w + + 5. Formát pre píkaz: + + operátor [èíslo] pohyb + kde: + operátor - èo treba robi�, napríklad d pre zmazanie + [èíslo] - je volite¾ný poèet pre opakovanie pohybu + pohyb - pohyb po texte vzh¾adom na operátor, napríklad w (slovo), + $ (do konca riadku), atï. + + 6. Pre pohyb na zaèiatok riadku použi nulu: 0 + + 7. Pre vrátenie spä� predošlej operácie napíš: u (malé u) + Pre vrátenie všetkých úprav na riadku napíš: U (ve¾ké U) + Pre vrátenie vrátených úprav napíš: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.1: PRÍKAZ VLOŽI� + + + ** Napísanie príkazu p vloží psledný výmaz za kurzor. ** + + 1. Presuò kurzor nižšie na prvý riadok textu. + + 2. Napíš dd èím zmažeš riadok a uložíš ho do buffera editora Vim. + + 3. Presuò kurzor vyššie tam, kam zmazaný riadok patrí. + + 4. Ak napíšeš v normálnom móde p zmazaný riadk sa vloží. + + 5. Zopakuj kroky 2 až 4, kým riadky niesú v správnom poradí. + +---> d) Tiež sa dokážeš vzdeláva�? +---> b) Fialky sú modré, +---> c) Inteligencia sa vzdeláva, +---> a) Ruže sú èervené, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.2: PRÍKAZ NAHRADENIA + + + ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** + + 1. Presuò kurzor nižšie na prví riadok textu oznaèeného znaèkou --->. + + 2. Presuò kurzor na zaèiatok prvej chyby. + + 3. napíš r a potom znak, ktorý tam má by�. + + 4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým. + +---> Kaï bol tento riasok píaaný, niekro stlašil nesprábne klávesy! +---> Keï bol tento riadok písaný, niekto stlaèil nesprávne klávesy! + + 5. Teraz prejdi na lekciu 3.2. + +POZNÁMKA: Pamätaj si, že nauèi� sa môžeš len používanim, nie pamätaním. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.3. PRÍKAZ ÚPRAVY + + + ** Ak chceš zmeni� èas� slova do konca slova, napíš ce . ** + + 1. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. + + 2. Umiestni kurzor na písmeno o v slove rosfpl. + + 3. Napíš ce a oprav slovo (v tomto prípade napíš 'iadok'.) + + 4. Stlaè a prejdi na ïalší znak, ktorý treba zmeni�. + + 5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá. + +---> Tento rosfpl má nieko¾ko skic, ktoré je pirewvbí zmeni� piy�uèán príkazu. +---> Tento riadok má nieko¾ko slov, ktoré je potrebné zmeni� použitím príkazu. + +Poznámka, že ce zmaže slovo a nastaví vkladací mód. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.4: VIAC ZMIEN POUŽITÍM c + + + ** Príkaz pre úpravy sa používa s rovnakými pohybmi ako pre mazanie ** + + 1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je: + + c [èíslo] pohyb + + 2. Pohyby sú rovnaké, ako napríklad w (slovo) a $ (koniec riadku). + + 3. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. + + 4. Presuò kurzor na prvú chybu. + + 5. napíš c$ aby si mohol upravi� zvyšok riadku pod¾a druhého + a stlaè . + +---> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. +---> Koniec tohto riadku potrebuje opravi� použitím príkazu c$ . + +POZNÁMKA: Môžeš použi� klávesu backspace na úpravu zmien poèas písania. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 3 ZHRNUTIE + + + 1. Na vloženie textu, ktorý už bol zmazaný, napíš p . To vloží zmazaný + text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom). + + 2. Pre naradenie znaku na mieste kurzora, napíš r a potom znak, ktorý + nahradí pôvodný znak. + + 3. Príkaz na upravenie umožòuje zmeni� od kurzora až po miesto, ktoré + urèuje pohyb. napr. Napíš ce èím zmníš text od pozície + kurzora do konca slova, c$ zmení text do konca riadku. + + 4. Formát pre nahradenie je: + + c [èíslo] pohyb + + +Teraz prejdi na nalsedujúcu lekciu. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.1: POZÍCIA A STATUS SÚBORU + + + ** Stlaè CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. + Napíš G pre presun na riadok v súbore. ** + + Poznámka: Preèítaj si celú túto lekciu skôr ako zaèneš vykonáva� kroky!! + + 1. Drž stlaèenú klávesu Ctrl a stlaè g . Toto nazývame CTRL-G. + Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou + v súbore. Zapamätajsi si èíslo riadku pre použitie v kroku 3. + + 2. Stlaè G èím sa dostaneš na spodok súboru. + Napíš gg èím sa dostaneš na zaèiatok súboru. + + 3. Napíš èíslo riadku na ktorom si sa nachádzal a stlaè G. To �a + vráti na riadok, na ktorom si prvý krát stlaèil CTRL-G. + + 4. Ak sa cítíš schopný vykona� teto kroky, vykonaj kroky 1 až 3. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.2: PRÍKAZ VYH¼ADÁVANIA + + + ** Napíš / nasledované re�azcom pre vyh¾adanie príslušného re�azca. ** + + 1. Napíš znak / v normálnom móde. Poznámka, že tento znak sa spolu + s kurzorom zobrazí v dolnej èasti obrazovky s : príkazom. + + 2. Teraz napíš 'errroor' . To je slovo, ktoré chceš vyh¾ada�. + + 3. Pre vyh¾adanie ïalšieho výskytu rovnakého re�azca, stlaè jednoducho n. + Pre vyh¾adanie ïalšieho výskytu rovnakého re�azca opaèným smerom, + N. + + 4. Ak chceš vyh¾ada� re�azec v spätnom smere, použí príkaz ? miesto + príkazu /. + + 5. Pre návrat na miesto z ktorého si prišiel stlaè CTRL-O (drž stlaèenú + klávesu Ctrl poèas stlaèenia klávesy o). Zopakuj pre ïalší návrat + spä�. CTRL-I ide vpred. + +POZNÁMKA: "errroor" nieje spôsob hláskovania error; errroor je error. +POZNÁMKA: Keï vyh¾adávanie dosiahne koniec tohto súboru, bude pokraèova� na + zaèiatku, dokia¾ nieje resetované nastavenie 'wrapscan' . + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.3: VYH¼ADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK + + + ** Napíš % pre vyh¾adanie príslušného znaku ),], alebo } . ** + + 1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku nižšie + oznaèeného znaèkou --->. + + 2. Teraz napíš znak % . + + 3. Kurzor sa premiestni na zodpovedajúcu zátvorku. + + 4. Napíš % pre presun kurzoru spä� na otvárajúcu zátvorku. + + 5. Presuò kurzor na iný zo znakov (,),[,],{ alebo } a všimni si + èo % vykonáva. + +---> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. )) + +Poznámka: Toto je ve¾mi výhodné použí� pri ladení programu s chýbajúcimi + uzatvárajúcimi zátvorkami! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.4: PRÍKAZ NAHRADENIA + + + ** Napíš :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** + + 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. + + 2. Napíš :s/thee/the . Poznamka, že tento príkaz zmení len prvý + výskyt "thee" v riadku. + + 3. Teraz napíš :s/thee/the/g èo znamená celkové nahradenie v riadku. + Toto nahradí všetky výskyty v riadku. + +---> Thee best time to see thee flowers in thee spring. + + 4. Pre zmenu všetkých výskytov daného re�azca medzi dvomi ridakami, + napíš :#,#s/starý/nový/g kde #,# sú èísla dvoch riadkov, v rozsahu + ktorých sa nahradenie vykoná. + napíš :%s/starý/nový/g pre zmenu všetkých výskytov v celom riadku + napíš :%s/starý/nový/gc nájde všetky výskyty v celom súbore, + s otázkou èi nahradi� alebo nie + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 4 ZHRNUTIE + + + 1. CTRL-g vypíše tvoju pozíciu v súbore a status súboru. + G �a premiestni na koniec riadku. + èíslo G �a premiestni na riadok s èíslom. + gg �a presunie na prvý riadok + + 2. Napísanie / nasledované re�azcom vyh¾adá re�azec smerom DOPREDU. + Napísanie ? nasledované re�azcom vyh¾ada re�azec smerom DOZADU. + Napísanie n po vyh¾adávaní, vyh¾adá nasledujúci výskyt re�azca + v rovnakom smere, prièom N vyh¾adá v opaènom smere. + CTRL-O �a vráti spä� na staršiu pozíciu, CTRL-I na novšiu pozíciu. + + 3. Napísanie % keï kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu + párnu zátvorku. + + 4. Pre nahradenie nového za prvý starý v riadku napíš :s/starý/nový + Pre nahradenie nového za všetky staré v riadku napíš :s/starý/nový/g + Pre nahradenie re�azcov medzi dvoma riadkami 3 napíš :#,#/starý/nový/g + Pre nahradenie všetkých výskytov v súbore napíš :%s/starý/nový/g + Pre potvrdenie každého nahradenia pridaj 'c' :%s/starý/nový/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.1 AKO SPUSTI� VONKAJŠÍ PRÍKAZ + + + ** Napíš príkaz :! nasledovaný vonkajším príkazom pre spustenie príkazu ** + + 1. Napíš obvyklý píkaz : ktorý nastaví kurzor na spodok obrazovky. + To umožní napísa� príkaz. + + 2. Teraz napíš ! (výkrièník). To umožní spusti� hociaký vonkajší príkaz + z príkazového riadku. + + 3. Ako príklad napíš ls za ! a stlaè . Tento príkaz + zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku. + Alebo použi :!dir ak ls nefunguje. + +Poznámka: Takto je možné spusti� hociaký vonkajší príkaz s argumentami. +Poznámka: Všetky príkazy : musia by� dokonèené stlaèením + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.2: VIAC O UKLADANÍ SÚBOROV + + + ** Pre uloženie zmien v súbore, napíš :w FILENAME. ** + + 1. Napíš :!dir alebo :!ls pre výpis aktuálneho adresára. + Už vieš, že musíš za týmto stlaèi� . + + 2. Vyber názov súboru, ktorý ešte neexistuje, ako napr. TEST. + + 3. Teraz napíš: :w TEST (kde TEST je názov vybratého súboru.) + + 4. To uloží celý súbor (Vim Tutor) pod názovm TEST. + Pre overenie napíš :!dir , èím zobrazíš obsah adresára. + +Poznámka: že ak ukonèíš prácu s editorom Vim a znovu ho spustíš príkazom + vim TEST, súbor bude kópia výuky, keï si ho uložil. + + 5. Teraz odstráò súbor napísaním (MS-DOS): :!del TEST + alebo (Unix): :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.3 VÝBER TEXTU PRE ULOŽENIE + + + ** Pre uloženie èasti súboru, napíš v pohyb :w FILENAME ** + + 1. Presuò kurozr na tento riadok. + + 2. Stlaè v a presuò kurozr na piatu položku dole. Poznámka, že + tento text je vyznaèený (highlighted). + + 3. Stlaè klávesu : . V spodnej èasti okna sa objaví :'<,'>. + + 4. Napíš w TEST , kde TEST je meno súboru, ktorý zatial neexistuje. + Skontroluj, e vidíš :'<,'>w TEST predtým než stlaèíš Enter. + + 5. Vim zapíše oznaèené riadky do súboru TEST. Použi :!dir alebo :!ls + pre overenie. Zatial ho ešte nemaž! Použijeme ho v ïalšej lekcii. + +POZNÁMKA: Stlaèením klávesy v sa spustí vizuálne oznaèovanie. + Môžeš pohybova� kurzorom pre upresnenie vyznaèeného textu. + Potom môžeš použi� operátor pre vykonanie nejakej akcie + s textom. Napríklad d zmaže vyznaèený text. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.4: VÝBER A ZLUÈOVANIE SÚBOROV + + + ** Pre vloženie obsahu súboru, napíš :r FILENAME ** + + 1. Premiestni kurzor nad tento riadok. + +POZNÁMKA: Po vykonaní kroku 2 uvidíš text z lekcie 5.3. Potom sa presuò + dole, aby si videl túto lekciu. + + 3. Teraz vlož súbor TEST použitím príkazu :r TEST kde TEST je názov + súboru. Súbor, ktorý si použil je umiestnený pod riadkom s kurzorom. + +POZNÁMKA: Môžeš tiež naèíta� výstup vonkajšieho príkazu. Napríklad :r !ls + naèíta výstup príkazu ls a umiestni ho za pozíciu kurzora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 5 ZHRNUTIE + + + 1. :!príkaz spustí vonkajší príkaz. + + Niektoré využite¾né príklady sú: + (MS_DOS) (UNIX) + :!dir :!ls - zobrazí obsah adresára + :!del FILENAME :!rm FILENAME - odstráni súbor FILENAME + + 2. :w FILENAME uloží aktuálny súbor na disk pod menom FILENAME. + + 3. v pohyb :w FILENAME uloží vizuálne oznaèené riadky do + súboru FILENAME. + + 4. :r FILENAME vyberie z disku súbor FILENAME a vloží ho do aktuálneho + súboru za pozíciou kurzora. + + 5. :r !dir naèíta výstup z príkazu dir a vloží ho za pozíciu kurzora. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.1: PRÍKAZ OTVORI� + + +** Napíš o pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu ** + + 1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->. + + 2. Napíš o (malé písmeno) pre vloženie èistého riadku pod kurzorm + a prepnutie do vkladacieho módu. + + 3. Teraz skopíruj riadok oznaèený ---> a stlaè pre ukonèenie + vkladacieho módu. + +---> Po napísaní o sa kurzor premiestní na vložený riadok do vkladacieho + módu. + + 4. Pre otvorenie riadku nad kurzorom, jednotucho napíš ve¾ké O , + namiesto malého o. Vyskúšaj si to na riadku dole. + +---> Vlož riadok nad týmto napísaním O, keï kurzor je na tomto riadku. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.2: PRÍKAZ PRIDA� + + + ** Napíš a pre vloženie textu ZA kurzor. ** + + 1. Presuò kurzor nižšie na koniec prvého riadku oznaèeného znaèkou ---> + + 2. Stlaè klávesu e dokia¾ kurozr nieje na konci riadku. + + 3. Napíš a (malé písmeno) pre pridanie textu ZA kurzorom. + + 4. Dokonèí slovo tak ako je to v druhom riadku. Stlaš pre + opustenie vkladacieho módu. + + 5. Použi e na presun na ïalšie nedokonèené slovo a zopakuj kroky 3 a 4. + +---> Tento ri ti dovo¾uje nácv priávan testu na koniec riadku. +---> Tento riadok ti dovo¾uje nácvik pridávania textu na koniec riadku. + +POZNÁMKA: a, i, A štartujú rovnaký vkladací mód, jediný rozidel je, kde + sa znaky vkladajú. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.3: INÝ SPOSOB NAHRADZOVANIA + + + ** Napíš ve¾ké R pre nahradenie viac ako jedného znaku. ** + + 1. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->. Premiestni + kurzor na zaèiatok prvého výskytu xxx. + + 2. Teraz napíš R a napíš èíslo uvedené v druhom riadku, takže + sa ním nahradí pôvodné xxx. + + 3. Stlaè pre opustenie nahradzovacieho módu. Poznámka, že zvyšok + riadku zostane nezmenený. + + 4. Zopakuj tieto kroky pre nahradenie zvyšných xxx. + +---> Pridaním 123 ku xxx dostaneš xxx. +---> Pridaním 123 ku 456 dostaneš 579. + +POZNÁMKA: Nahradzovací mód je ako vkladací mód, ale každý napísaný znak + zmaže existujúci znak. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lekcia 6.4: Copy Paste textu + + ** použí operátor y pre copy textku a p pre jeho paste ** + + 1. Choï nižšie na riadok oznaèený ---> a umiestni kurozr za "a)". + + 2. Naštartuj vizuálny mód použitím v a presuò kurozr pred "first". + + 3. Napíš y pre vystrihnutie (copy) oznaèeného textu. + + 4. Presuò kurozr na koniec ïalšieho riadku: j$ + + 5. Napíš p pre vložnie (paste) textu. Potom napíš: a druha . + + 6. Použi vizuálny mód pre oznaèenie "položka.", vystrihni to + použitím y, presuò sa na koniec nasledujúceho riadku použitím j$ + a vlož sem text použitím p. + +---> a) toto je prvá položka +---> b) + +POZNÁMKA: Môžeš použi� tiež y ako operátor; yw vystrihne jedno slovo. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.5: NASTAVENIE MOŽNOSTÍ + + +** Nastav možnosti, takže vyh¾adávanie alebo nahradzovanie ignoruje + rozlišovanie ** + + + 1. Vyh¾adaj re�azec 'ignore' napísaním: + /ignore + Zopakuj vyh¾adávanie nieko¾ko krát stlaèením klávesy n . + + 2. Nastav možnos� 'ic' (Ignore case) napísaním príkazu: + :set ic + + 3. Teraz vyh¾adaj re�azec 'ingore' znova stlaèením klávesy n + Poznámka, že teraz sú vyh¾adané aj Ignore a IGNORE. + + 4. Nastav možnos�i 'hlsearch' a 'incsearch': + :set hls is + + 5. Teraz spusti vyh¾adávací príkaz znovu, a pozri èo sa stalo: + /ignore + + 6. Pre opetovné zapnutie rozlyšovania ve¾kých a malých písmen + napíš: :set noic + +POZNÁMKA: Na odstránenie zvýraznenia výrazov napíš: :nohlsearch +POZNÁMKA: Ak chceš nerozlyšova� ve¾kos� písmen len pre jedno + použitie vyh¾adávacieho príkazu, použi \c: /ignore\c + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 6 ZHRNUTIE + + + 1. Napíš o pre otvorenie riadku pod kurzorom a štart vkladacieho módu. + Napíš O pre otvorenie riadku nad kurzorom. + + 2. Napíš a pre vkladanie textu ZA kurzor. + Napíš A pre vkladanie textu za koncom riadku. + + 3. Príkaz e presunie kurozr na koniec slova + + 4. Operátor y vystrihne (skopíruje) text, p ho vloží. + + 5. Napísanie ve¾kého R prepne do nahradzovacieho módu, kým nieje + stlaèené . + + 6. Napísanie ":set xxx" nastaví možnos� "xxx". Niektoré nastavenia sú: + 'ic' 'ignorecase' ignoruje ve¾ké a malé písmená poèas vyh¾adávania. + 'is' 'incsearch' zobrazuje èiastoèné re�azce vyh¾adávaného re�azca. + 'hls' 'hlsearch' vyznaèí všetky vyh¾adávané re�azce. + Môžeš použi� hociktorý z dlhých a krátkych názvov možností. + + 7. Vlož "no" pred nastavenie pre jeho vypnutie: :set noic + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 7.1: ZÍSKANIE NÁPOVEDY + + + ** Používaj on-line systém nápovedy ** + + Vim má obsiahly on-line systém nápovedy. Pre odštartovanie, vyskúšaj jeden + z týchto troch: + - stlaè klávesu (ak nejakú máš) + - stlaè klávesu (ak nejakú máš) + - napíš :help + + Èítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. + Napíš CTRL-W CTRL-W pre skok z jedného okna do druhého. + Napíš :q èím zatvoríš okno nápovedy. + + Môžeš nájs� help ku hociakej téme pridaním argumentu ku príkazu ":help". + Vyskúšaj tieto (nezabudni stlaèi� ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 7.2: VYTVORENIE ŠTARTOVACIEHO SKRIPTU + + ** Zapni funkcie editora Vim ** + + Vim má omnoho viac funkcii než Vi, ale veèšina z nich je implicitne + vypnutá. Pre používanie viac Vim funkcii vytvor "vimrc" súbor. + + 1. Zaèni editova� "vimrc" súbor, to závisí na použitom systéme: + :e ~/.vimrc pre Unix + :e $VIM/_vimrc pre MS-Windows + + 2. Teraz si preèítaj text príkladu "vimrc" súboru: + + :r $VIMRUNTIME/vimrc_example.vim + + 3. Ulož súbor: + :w + + Pri nasledujúcom štarte editora Vim sa použije zvýrazòovanie syntaxe. + Do "vimrc" súboru môžeš prida� všetky svoje uprednostòované nastavenia. + Pre viac informácii napíš :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + LEKCIA 7.3 DOKONÈENIE + + ** Dokonèi príkaz na príkazovom riadku použitím CTRL-D a ** + + 1. Uisti sa, že Vim nieje v kompatibilnom móde: :set nocp + + 2. Pozri sa aké súbory sa nachádzajú v adresári: :!ls alebo :!dir + + 3. Napíš zaèiatok príkazu: :e + + 4. Stlaè CTRL-D a Vim zobrazí zoznam príkazov zaèínajúcich "e". + + 5. Stlaè a Vim dokonèí meno príkazu na ":edit". + + 6. Teraz pridaj medzerník a zaèiatok mena existujúceho súboru: + :edit FIL + + 7. Stlaè . Vim dokonèí meno (ak je jedineèné). + +POZNÁMKA: Dokonèovanie funguje pre ve¾a príkazov. Vyskúšaj stlaèenie + CTRL-D a . Špeciálne je to užitoèné pre príkaz :help. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + LEKCIA 7 ZHRNUTIE + + 1. Napíš :help alebo stlaè alebo pre otvorenie okna nápovedy. + + 2. Napíš :help príkaz pre vyh¾adanie nápovedy ku príkazu príkaz. + + 3. Napíš CTRL-W CTRL-W na preskoèenie do iného okna. + + 4. Napíš :q pre zatvorenie okna nápovedy + + 5. Vytvor štartovací skript vimrc pre udržanie uprednostòovaných nastavení. + + 6. Poèas písania príkazu : stlaè CTRL-D pre zobrazenie dokonèení. + Stlaè pre použitie jedného z dokonèení. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + + Toto vymedzuje výuku Vimu. Toto je urèené pre strucný preh¾ad o editore + Vim, úplne postaèujúce pre ¾ahké a obstojné používanie tohto editora. + Táto výuka je ïaleko od kompletnosti, pretože Vim má omnoho viacej príkazov. + Ako ïalšie si preèítaj užívat¾ský manuál: ":help user-manual". + + Pre ïalšie èítanie a štúdium je odporúèaná kniha: + Vim - Vi Improved - od Steve Oualline + Vydavate¾: New Riders + Prvá kniha urèená pre Vim. Špeciálne vhodná pre zaèiatoèníkov. + Obsahuje množstvo príkladov a obrázkov. + Pozri na http://iccf-holland.org/click5.html + + Táto kniha je staršia a je viac o Vi ako o Vim, ale je tiež odporúèaná: + Learning the Vi Editor - od Linda Lamb + Vydavate¾: O'Reilly & Associates Inc. + Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi. + Šieste vydanie obsahuje tiež informácie o editore Vim. + + Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware, + Colorado School of Mines s použitím myšlienok dodanými od Charles Smith, + Colorado State University. E-mail: bware@mines.colorado.edu. + + Modifikované pre Vim od Bram Moolenaar. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Preklad do Slovenèiny: ¼uboš Èelko + e-mail: celbos@inmail.sk + Last Change: 2006 Apr 18 + encoding: cp1250 diff --git a/share/vim/vim74/tutor/tutor.sk.utf-8 b/share/vim/vim74/tutor/tutor.sk.utf-8 new file mode 100644 index 00000000..51c5b4f1 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.sk.utf-8 @@ -0,0 +1,1008 @@ +=============================================================================== += V i t a j t e v o V I M T u t o r i a l i - Verzia 1.7 = +=============================================================================== + + Vim je veľmi výkonný editor, ktorý má príliž veľa príkazov na to aby + mohli byt všetky popísané vo výuke akou je táto. Táto výuka + popisuje dostatočné množstvo príkazov nato aby bolo možné používať + Vim ako viacúčelový editor. + + Približný čas potrebný na prebratie tejto výuky je 25-30 minút, + závisí na tom, koľko je stráveného času s preskúšavaním. + + UPOZORNENIE: + Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby + sa mohlo precvičovať na ňom (pri štarte "vimtutor" je toto kópia). + + Je dôležité zapamätať si, že táto výuka je vytvorená pre výuku + používaním. To znamená, že je potrebné si príkazy vyskúšať, aby bolo + učenie správne. Ak len čitas text, príkazy zabudneš! + + Presvedč sa, že Shift-Lock NIEJE stlačený a stlačt klávesu + j niekoľko krát, aby sa kurzor posunul natoľko, že lekcia 1.1 + celkom zaplní obrazovku. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.1: POHYB KURZOROM + + + ** Pre pohyb kurzorum stlač klávesy h,j,k,l ako je znázornené. ** + ^ + k Funkcia: Klávesa h je naľavo a vykoná pohyb doľava. + < h l > Klávesa l je napravo a vykoná pohyb doprava. + j Klávesa j vyzerá ako šípka dole + v + 1. Pohybuj kurzorom po obrazovke, kým si na to nezvykneš. + + 2. Drž stlačenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. +---> Teraz sa už vieš pohybovať na nasledujúcu lekciu. + + 3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.2. + +Poznámka: Ak si niesi istý tým čo si napísal, stlač + na prechod do normálneho módu. + +Poznámka: Kurzorové klávesy sú tiež funkčné. Ale používaním hjkl sa budeš + schopný pohybovať rýchlejšie, keď si zvykneš ich používať. Naozaj! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 1.2: ZATVÁRANIE VIMU + + + !! POZNÁMKA: Pred vykonaním týchto krokov si prečítaj celú túto lekciu !! + + 1. Stlač klávesu (aby si sa učite nachádzal v normálnom móde) + + 2. Napíš: :q! . + Tým ukončíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal. + + 3. Keď sa dostaneš na príkazový riadok, napíš príkaz, ktorým sa dostaneš + speť do tejto výuky. To môže byť: vimtutor + + 4. Ak si si tieto kroky spoľahlivo zapamätal, vykonaj kroky 1 až 3, pre + ukončenie a znovu spustenie editora. + +POZNÁMKA: :q! neuloží zmeny, ktoré si vykonal. O niekoľko lekcií + sa naučíš ako uložiť zmeny do súboru + + 5. presuň kurzor dole na lekciu 1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.3: EDITÁCIA TEXTU - MAZANIE + + +** Stlačenie klávesy x v normálnom móde zmaže znak na mieste kurzora. ** + + 1. Presuň kurzor nižšie na riadok označený značkou --->. + + 2. Aby si mohol odstrániť chyby, pohybuj kurzorom kým neprejde na znak, + ktorý chceš zmazať. + + 3. Stlač klávesu x aby sa zmazal nechcený znak. + + 4. Zopakuj kroky 2 až 4 až kým veta nieje správna. + +---> Kraava skoočilla ccezz mesiiac. + + 5. Ak je veta správna, prejdi na lekciu 1.4. + +POZNÁMKA: Neskúšaj si zapamätať obsah tejto výuky, ale sa uč používaním. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.4: EDITÁCIA TEXTU - VKLADANIE + + + ** Stlačenie klávesy i umožňuje vkladanie textu. ** + + 1. Presuň kurzor nižšie na prvý riadok za značku --->. + + 2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok, + presuň kurzor na prvý znak za misto, kde má byť text vložený. + + 3. Stlač klávesu i a napíš potrebný text. + + 4. Po opravení každej chyby, stlač pre návrat do normálneho módu. + Zopakuj kroky 2 až 4 kým nieje veta správna. + +---> Tu je text chýbajúci tejto. +---> Tu je nejaký text chýbajúci od tejto čiary. + + 5. Keď sa dostatočne naučíš vkladať text, prejdi na nasledujúce zhrnutie. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.5: EDITÁCIA TEXTU - PRIDÁVANIE + + + ** Stlačenie klávesy A umožňuje pridávať text. ** + + 1. Presuň kurozr nižšie na prvý riadok za značkou --->. + Nezáleží na tom, na ktorom znaku sa kurzor v tom riadku nachádza. + + 2. Stlač klávesu A a napíš potrebný text. + + 3. Po pridaní textu stlač klávesu pre návrat do Normálneho módu. + + 4. Presuň kurozr na druhý riadok označený ---> a zopakuj + kroky 2 a 3 kým nieje veta správna. + +---> Tu je nejaký text chýbajúci o + Tu je nejaký text chýbajúci od tiaľto. +---> Tu tiež chýba nej + Tu tiež chýba nejaký text. + + 5. Keď sa dostatočne naučíš pridávať text, prejdi na lekciu 1.6. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 1.6: EDITÁCIA SÚBORU + + + ** Napísaním :wq sa súbor uloží a zavrie ** + +!! POZNÁMKA: Pred vykonaním týchto krokov si prečítaj celú lekciu!! + +1. Opusti túto výuku, ako si to urobil v lekcii 1.2: :q! + +2. Do príkazového riadku napíš príkaz: vim tutor + 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, + ktorý chceš editovať. Použi taký súbor, ktorý môžeš meniť. + +3. Vlož a zmaž text tak, ako si sa naučil v predošlých lekciach. + +4. Ulož súbor so zmenami a opusti Vim príkazom: :wq + +5. Reštartuj vimtutor a presuň sa dole na nasledujúce zhrnutie. + +6. Urob tak po prečítaní predošlých krokov a porozumeniu im. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZHRNUTIE LEKCIE 1 + + + 1. Kurzor sa pohybuje použitím kláves so šípkami alebo klávesmi hjkl. + h (do lava) j (dole) k (hore) l (doprava) + + 2. Pre spustenie Vimu (z príkazového riadku) napíš: vim FILENAME + + 3. Na ukončenie Vimu napíš: :q! pre zrušenie všetkých zmien + alebo napíš: :wq pre uloženie zmien. + + 4. Na zmazanie znaku na mieste kurzora napíš: x + + 5. Pre vloženie textu na mieste kurzora v normálnom móde napíš: + i napíš vkladaný text vkladanie pred kurzor + A napíš pridávaný text vkladanie za riadok + +POZNÁMKA: Stlačenie ťa premiestní do normálneho módu alebo zruší + nejaký nechcený a čiastočne dokončený príkaz. + +Teraz pokračuj lekciou 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.1: Mazacie príkazy + + + ** Napísanie príkazu dw zmaže znaky do konca slova. ** + +1. Stlač aby si bol bezpečne v normálnom móde. + +2. Presuň kurzor nižšie na riadok označený značkou --->. + +3. Presuň kurzor na začiatok slova, ktoré je potrebné zmazať. + +4. Napíš dw aby slovo zmizlo. + +POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keď ho + napíšeš. Vim na teba počká, aby si mohol napísať + písmeno w. Ak vidíš niečo iné ako d , tak si napísal + nesprávny znak; stlač a začni znova. + +---> Tu je niekoľko slov zábava, ktoré nie patria list do tejto vety. + +5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 2.2. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.2: VIAC MAZACÍCH PRÍKAZOV + + + ** Napísanie príkazu d$ zmaže znaky do konca riadku ** + +1. Stlač aby si bol bezpečne v normálnom móde. + +2. Presuň kurzor nižšie na riadok označený značkou --->. + +3. Presuň kurzor na koniec správnej vety (ZA prvú bodku). + +4. Napíš d$ aby sa zmazali znaky do konca riadku. + +---> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. + + +5. Prejdi na lekciu 2.3 pre pochopenie toho čo sa stalo. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.3: OPERÁTORY A POHYBY + + Veľa príkazov, ktoré menia text sú odvodené od operátorov a pohybov. + Formát pre príkaz mazania klávesou d je nasledovný: + + d pohyb + + kde: + d - je mazací operátor + pohyb - je to čo operátor vykonáva (vypísané nižšie) + + Krátky list pohybov: + w - do začiatku ďalšieho slova, okrem jeho prvého písmena. + e - do konca terajšieho slova, vrátane posledného znaku. + $ - do konca riadku, vrátane posledného znaku + + Takže napísaním de sa zmaže všetko od kurzora do konca slova. + +POZNÁMKA: Stlačením iba pohybu v normálnom móde bez operátora + sa presunie kurzor tak ako je to špecivikované. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.4: Použitie viacnásobného pohybu + + + ** Napísaním čísla pred pohyb ho zopakuje zadný počet krát ** + + 1. Presuň kurozr nižšie na začiatok riadku označeného --->. + + 2. Napíš 2w a kurozr sa presunie o dve slová vpred. + + 3. Napíš 3e a kurozr sa presunie vpred na koniec tretieho slova. + + 4. Napíš 0 (nula) a kurozr sa presunie na začiatok riadku. + + 5. Zopakuj kroky 2 a 3 s rôznymi číslami. + +---> Toto je riadok so slovami po kotrých sa môžete pohybovať. + + 6. Prejdi na lekciu 2.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.5: POUŽITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE + + + ** Napísanie čísla spolu s operátorom ho zopakuje zadaný počet krát ** + + V kombinácii operátorov mazania a pohybu spomínaného vyššie vlož počet + pred pohyb pre docielenie hromadného mazania: + d číslo pohyb + + 1. Presuň kurzor na prvé slovo písané VEĽKÝMI PÍSMENAMI + v riadku označenom --->. + + 2. Napíš 2dw a zmažeš dve slová písané VEĽKÝMI PÍSMENAMI + + 3. Zopakuj kroky 1 a 2 s použitím rôzneho čísla tak aby si zmazal slová + písané veľkými písmenami jedným príkazom. + +---> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. + +POZNÁMKA: Číslo medzi operátorom d a pohybom funguje podobne ako pri + použití s pohybom bez operátora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.6: OPERÁCIE S RIADKAMI + + + ** Napísanie príkazu dd zmaže celý riadok. ** + +Vzhľadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, +že bude jednoduchšie mazať celý riadok napísaním dvoch písmen d. + +1. Presuň kurzor na druhý riadok v texte na spodu. +2. Napíš dd aby si zmazal riadok. +3. Prejdi na štvrtý riadok. +4. Napíš 2dd aby si zmazal dva riadky. + + 1) Ruže sú červené, + 2) Blato je zábavné, + 3) Fialky sú modré, + 4) Mám auto, + 5) Hodinky ukazujú čas, + 6) Cukor je sladký, + 7) A to si ty. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 2.7: PRÍKAZ UNDO + + +** Stlač u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** + +1. Presuň kurzor nižšie na riadok označený značkou ---> a premiestni ho na + prvú chybu. +2. Napíš x pre zmazanie prvého nechceného riadku. +3. Teraz napíš u čím vrátíš späť posledne vykonaný príkaz. +4. Teraz oprav všetky chyby na riadku použitím príkazu x . +5. Teraz napíš veľké U čím vrátíš riadok do pôvodného stavu. +6. Teraz napíš u niekoľko krát, čím vrátíš späť príkaz U. +7. Teraz napíš CTRL-R (drž klávesu CTRL stlačenú kým stláčaš R) niekoľko + krát, čím vrátíš späť predtým vrátené príkazy (undo z undo). + +---> Opprav chybby nna toomto riadku a zmeeň ich pommocou undo. + + 8. Tieto príkazy sú často používané. Teraz prejdi na zhrnutie lekcie 2. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 2 ZHRNUTIE + + + 1. Pre zmazanie znakov od kurzora do konca slova napíš: dw + + 2. Pre zmazanie znakov od kurzora do konca riadku napíš: d$ + + 3. Pre zmazanie celého riadku napíš: dd + + 4. Pre zopakovanie pohybu, napíš pred neho číslo: 2w + + 5. Formát pre píkaz: + + operátor [číslo] pohyb + kde: + operátor - čo treba robiť, napríklad d pre zmazanie + [číslo] - je voliteľný počet pre opakovanie pohybu + pohyb - pohyb po texte vzhľadom na operátor, napríklad w (slovo), + $ (do konca riadku), atď. + + 6. Pre pohyb na začiatok riadku použi nulu: 0 + + 7. Pre vrátenie späť predošlej operácie napíš: u (malé u) + Pre vrátenie všetkých úprav na riadku napíš: U (veľké U) + Pre vrátenie vrátených úprav napíš: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.1: PRÍKAZ VLOŽIŤ + + + ** Napísanie príkazu p vloží psledný výmaz za kurzor. ** + + 1. Presuň kurzor nižšie na prvý riadok textu. + + 2. Napíš dd čím zmažeš riadok a uložíš ho do buffera editora Vim. + + 3. Presuň kurzor vyššie tam, kam zmazaný riadok patrí. + + 4. Ak napíšeš v normálnom móde p zmazaný riadk sa vloží. + + 5. Zopakuj kroky 2 až 4, kým riadky niesú v správnom poradí. + +---> d) Tiež sa dokážeš vzdelávať? +---> b) Fialky sú modré, +---> c) Inteligencia sa vzdeláva, +---> a) Ruže sú červené, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.2: PRÍKAZ NAHRADENIA + + + ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** + + 1. Presuň kurzor nižšie na prví riadok textu označeného značkou --->. + + 2. Presuň kurzor na začiatok prvej chyby. + + 3. napíš r a potom znak, ktorý tam má byť. + + 4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým. + +---> Kaď bol tento riasok píaaný, niekro stlašil nesprábne klávesy! +---> Keď bol tento riadok písaný, niekto stlačil nesprávne klávesy! + + 5. Teraz prejdi na lekciu 3.2. + +POZNÁMKA: Pamätaj si, že naučiť sa môžeš len používanim, nie pamätaním. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.3. PRÍKAZ ÚPRAVY + + + ** Ak chceš zmeniť časť slova do konca slova, napíš ce . ** + + 1. Presuň kurzor nižšie na prvý riadok označený značkou --->. + + 2. Umiestni kurzor na písmeno o v slove rosfpl. + + 3. Napíš ce a oprav slovo (v tomto prípade napíš 'iadok'.) + + 4. Stlač a prejdi na ďalší znak, ktorý treba zmeniť. + + 5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá. + +---> Tento rosfpl má niekoľko skic, ktoré je pirewvbí zmeniť piyťučán príkazu. +---> Tento riadok má niekoľko slov, ktoré je potrebné zmeniť použitím príkazu. + +Poznámka, že ce zmaže slovo a nastaví vkladací mód. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 3.4: VIAC ZMIEN POUŽITÍM c + + + ** Príkaz pre úpravy sa používa s rovnakými pohybmi ako pre mazanie ** + + 1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je: + + c [číslo] pohyb + + 2. Pohyby sú rovnaké, ako napríklad w (slovo) a $ (koniec riadku). + + 3. Presuň kurzor nižšie na prvý riadok označený značkou --->. + + 4. Presuň kurzor na prvú chybu. + + 5. napíš c$ aby si mohol upraviť zvyšok riadku podľa druhého + a stlač . + +---> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. +---> Koniec tohto riadku potrebuje opraviť použitím príkazu c$ . + +POZNÁMKA: Môžeš použiť klávesu backspace na úpravu zmien počas písania. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 3 ZHRNUTIE + + + 1. Na vloženie textu, ktorý už bol zmazaný, napíš p . To vloží zmazaný + text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom). + + 2. Pre naradenie znaku na mieste kurzora, napíš r a potom znak, ktorý + nahradí pôvodný znak. + + 3. Príkaz na upravenie umožňuje zmeniť od kurzora až po miesto, ktoré + určuje pohyb. napr. Napíš ce čím zmníš text od pozície + kurzora do konca slova, c$ zmení text do konca riadku. + + 4. Formát pre nahradenie je: + + c [číslo] pohyb + + +Teraz prejdi na nalsedujúcu lekciu. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.1: POZÍCIA A STATUS SÚBORU + + + ** Stlač CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. + Napíš G pre presun na riadok v súbore. ** + + Poznámka: Prečítaj si celú túto lekciu skôr ako začneš vykonávať kroky!! + + 1. Drž stlačenú klávesu Ctrl a stlač g . Toto nazývame CTRL-G. + Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou + v súbore. Zapamätajsi si číslo riadku pre použitie v kroku 3. + + 2. Stlač G čím sa dostaneš na spodok súboru. + Napíš gg čím sa dostaneš na začiatok súboru. + + 3. Napíš číslo riadku na ktorom si sa nachádzal a stlač G. To ťa + vráti na riadok, na ktorom si prvý krát stlačil CTRL-G. + + 4. Ak sa cítíš schopný vykonať teto kroky, vykonaj kroky 1 až 3. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.2: PRÍKAZ VYHĽADÁVANIA + + + ** Napíš / nasledované reťazcom pre vyhľadanie príslušného reťazca. ** + + 1. Napíš znak / v normálnom móde. Poznámka, že tento znak sa spolu + s kurzorom zobrazí v dolnej časti obrazovky s : príkazom. + + 2. Teraz napíš 'errroor' . To je slovo, ktoré chceš vyhľadať. + + 3. Pre vyhľadanie ďalšieho výskytu rovnakého reťazca, stlač jednoducho n. + Pre vyhľadanie ďalšieho výskytu rovnakého reťazca opačným smerom, + N. + + 4. Ak chceš vyhľadať reťazec v spätnom smere, použí príkaz ? miesto + príkazu /. + + 5. Pre návrat na miesto z ktorého si prišiel stlač CTRL-O (drž stlačenú + klávesu Ctrl počas stlačenia klávesy o). Zopakuj pre ďalší návrat + späť. CTRL-I ide vpred. + +POZNÁMKA: "errroor" nieje spôsob hláskovania error; errroor je error. +POZNÁMKA: Keď vyhľadávanie dosiahne koniec tohto súboru, bude pokračovať na + začiatku, dokiaľ nieje resetované nastavenie 'wrapscan' . + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.3: VYHĽADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK + + + ** Napíš % pre vyhľadanie príslušného znaku ),], alebo } . ** + + 1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku nižšie + označeného značkou --->. + + 2. Teraz napíš znak % . + + 3. Kurzor sa premiestni na zodpovedajúcu zátvorku. + + 4. Napíš % pre presun kurzoru späť na otvárajúcu zátvorku. + + 5. Presuň kurzor na iný zo znakov (,),[,],{ alebo } a všimni si + čo % vykonáva. + +---> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. )) + +Poznámka: Toto je veľmi výhodné použíť pri ladení programu s chýbajúcimi + uzatvárajúcimi zátvorkami! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 4.4: PRÍKAZ NAHRADENIA + + + ** Napíš :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** + + 1. Presuň kurzor nižšie na riadok označený značkou --->. + + 2. Napíš :s/thee/the . Poznamka, že tento príkaz zmení len prvý + výskyt "thee" v riadku. + + 3. Teraz napíš :s/thee/the/g čo znamená celkové nahradenie v riadku. + Toto nahradí všetky výskyty v riadku. + +---> Thee best time to see thee flowers in thee spring. + + 4. Pre zmenu všetkých výskytov daného reťazca medzi dvomi ridakami, + napíš :#,#s/starý/nový/g kde #,# sú čísla dvoch riadkov, v rozsahu + ktorých sa nahradenie vykoná. + napíš :%s/starý/nový/g pre zmenu všetkých výskytov v celom riadku + napíš :%s/starý/nový/gc nájde všetky výskyty v celom súbore, + s otázkou či nahradiť alebo nie + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 4 ZHRNUTIE + + + 1. CTRL-g vypíše tvoju pozíciu v súbore a status súboru. + G ťa premiestni na koniec riadku. + číslo G ťa premiestni na riadok s číslom. + gg ťa presunie na prvý riadok + + 2. Napísanie / nasledované reťazcom vyhľadá reťazec smerom DOPREDU. + Napísanie ? nasledované reťazcom vyhľada reťazec smerom DOZADU. + Napísanie n po vyhľadávaní, vyhľadá nasledujúci výskyt reťazca + v rovnakom smere, pričom N vyhľadá v opačnom smere. + CTRL-O ťa vráti späť na staršiu pozíciu, CTRL-I na novšiu pozíciu. + + 3. Napísanie % keď kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu + párnu zátvorku. + + 4. Pre nahradenie nového za prvý starý v riadku napíš :s/starý/nový + Pre nahradenie nového za všetky staré v riadku napíš :s/starý/nový/g + Pre nahradenie reťazcov medzi dvoma riadkami 3 napíš :#,#/starý/nový/g + Pre nahradenie všetkých výskytov v súbore napíš :%s/starý/nový/g + Pre potvrdenie každého nahradenia pridaj 'c' :%s/starý/nový/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.1 AKO SPUSTIŤ VONKAJŠÍ PRÍKAZ + + + ** Napíš príkaz :! nasledovaný vonkajším príkazom pre spustenie príkazu ** + + 1. Napíš obvyklý píkaz : ktorý nastaví kurzor na spodok obrazovky. + To umožní napísať príkaz. + + 2. Teraz napíš ! (výkričník). To umožní spustiť hociaký vonkajší príkaz + z príkazového riadku. + + 3. Ako príklad napíš ls za ! a stlač . Tento príkaz + zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku. + Alebo použi :!dir ak ls nefunguje. + +Poznámka: Takto je možné spustiť hociaký vonkajší príkaz s argumentami. +Poznámka: Všetky príkazy : musia byť dokončené stlačením + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.2: VIAC O UKLADANÍ SÚBOROV + + + ** Pre uloženie zmien v súbore, napíš :w FILENAME. ** + + 1. Napíš :!dir alebo :!ls pre výpis aktuálneho adresára. + Už vieš, že musíš za týmto stlačiť . + + 2. Vyber názov súboru, ktorý ešte neexistuje, ako napr. TEST. + + 3. Teraz napíš: :w TEST (kde TEST je názov vybratého súboru.) + + 4. To uloží celý súbor (Vim Tutor) pod názovm TEST. + Pre overenie napíš :!dir , čím zobrazíš obsah adresára. + +Poznámka: že ak ukončíš prácu s editorom Vim a znovu ho spustíš príkazom + vim TEST, súbor bude kópia výuky, keď si ho uložil. + + 5. Teraz odstráň súbor napísaním (MS-DOS): :!del TEST + alebo (Unix): :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.3 VÝBER TEXTU PRE ULOŽENIE + + + ** Pre uloženie časti súboru, napíš v pohyb :w FILENAME ** + + 1. Presuň kurozr na tento riadok. + + 2. Stlač v a presuň kurozr na piatu položku dole. Poznámka, že + tento text je vyznačený (highlighted). + + 3. Stlač klávesu : . V spodnej časti okna sa objaví :'<,'>. + + 4. Napíš w TEST , kde TEST je meno súboru, ktorý zatial neexistuje. + Skontroluj, e vidíš :'<,'>w TEST predtým než stlačíš Enter. + + 5. Vim zapíše označené riadky do súboru TEST. Použi :!dir alebo :!ls + pre overenie. Zatial ho ešte nemaž! Použijeme ho v ďalšej lekcii. + +POZNÁMKA: Stlačením klávesy v sa spustí vizuálne označovanie. + Môžeš pohybovať kurzorom pre upresnenie vyznačeného textu. + Potom môžeš použiť operátor pre vykonanie nejakej akcie + s textom. Napríklad d zmaže vyznačený text. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 5.4: VÝBER A ZLUČOVANIE SÚBOROV + + + ** Pre vloženie obsahu súboru, napíš :r FILENAME ** + + 1. Premiestni kurzor nad tento riadok. + +POZNÁMKA: Po vykonaní kroku 2 uvidíš text z lekcie 5.3. Potom sa presuň + dole, aby si videl túto lekciu. + + 3. Teraz vlož súbor TEST použitím príkazu :r TEST kde TEST je názov + súboru. Súbor, ktorý si použil je umiestnený pod riadkom s kurzorom. + +POZNÁMKA: Môžeš tiež načítať výstup vonkajšieho príkazu. Napríklad :r !ls + načíta výstup príkazu ls a umiestni ho za pozíciu kurzora. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 5 ZHRNUTIE + + + 1. :!príkaz spustí vonkajší príkaz. + + Niektoré využiteľné príklady sú: + (MS_DOS) (UNIX) + :!dir :!ls - zobrazí obsah adresára + :!del FILENAME :!rm FILENAME - odstráni súbor FILENAME + + 2. :w FILENAME uloží aktuálny súbor na disk pod menom FILENAME. + + 3. v pohyb :w FILENAME uloží vizuálne označené riadky do + súboru FILENAME. + + 4. :r FILENAME vyberie z disku súbor FILENAME a vloží ho do aktuálneho + súboru za pozíciou kurzora. + + 5. :r !dir načíta výstup z príkazu dir a vloží ho za pozíciu kurzora. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.1: PRÍKAZ OTVORIŤ + + +** Napíš o pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu ** + + 1. Presuň kurzor nižšie na riadok označený značkou --->. + + 2. Napíš o (malé písmeno) pre vloženie čistého riadku pod kurzorm + a prepnutie do vkladacieho módu. + + 3. Teraz skopíruj riadok označený ---> a stlač pre ukončenie + vkladacieho módu. + +---> Po napísaní o sa kurzor premiestní na vložený riadok do vkladacieho + módu. + + 4. Pre otvorenie riadku nad kurzorom, jednotucho napíš veľké O , + namiesto malého o. Vyskúšaj si to na riadku dole. + +---> Vlož riadok nad týmto napísaním O, keď kurzor je na tomto riadku. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.2: PRÍKAZ PRIDAŤ + + + ** Napíš a pre vloženie textu ZA kurzor. ** + + 1. Presuň kurzor nižšie na koniec prvého riadku označeného značkou ---> + + 2. Stlač klávesu e dokiaľ kurozr nieje na konci riadku. + + 3. Napíš a (malé písmeno) pre pridanie textu ZA kurzorom. + + 4. Dokončí slovo tak ako je to v druhom riadku. Stlaš pre + opustenie vkladacieho módu. + + 5. Použi e na presun na ďalšie nedokončené slovo a zopakuj kroky 3 a 4. + +---> Tento ri ti dovoľuje nácv priávan testu na koniec riadku. +---> Tento riadok ti dovoľuje nácvik pridávania textu na koniec riadku. + +POZNÁMKA: a, i, A štartujú rovnaký vkladací mód, jediný rozidel je, kde + sa znaky vkladajú. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.3: INÝ SPOSOB NAHRADZOVANIA + + + ** Napíš veľké R pre nahradenie viac ako jedného znaku. ** + + 1. Presuň kurzor nižšie na prvý riadok označený značkou --->. Premiestni + kurzor na začiatok prvého výskytu xxx. + + 2. Teraz napíš R a napíš číslo uvedené v druhom riadku, takže + sa ním nahradí pôvodné xxx. + + 3. Stlač pre opustenie nahradzovacieho módu. Poznámka, že zvyšok + riadku zostane nezmenený. + + 4. Zopakuj tieto kroky pre nahradenie zvyšných xxx. + +---> Pridaním 123 ku xxx dostaneš xxx. +---> Pridaním 123 ku 456 dostaneš 579. + +POZNÁMKA: Nahradzovací mód je ako vkladací mód, ale každý napísaný znak + zmaže existujúci znak. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Lekcia 6.4: Copy Paste textu + + ** použí operátor y pre copy textku a p pre jeho paste ** + + 1. Choď nižšie na riadok označený ---> a umiestni kurozr za "a)". + + 2. Naštartuj vizuálny mód použitím v a presuň kurozr pred "first". + + 3. Napíš y pre vystrihnutie (copy) označeného textu. + + 4. Presuň kurozr na koniec ďalšieho riadku: j$ + + 5. Napíš p pre vložnie (paste) textu. Potom napíš: a druha . + + 6. Použi vizuálny mód pre označenie "položka.", vystrihni to + použitím y, presuň sa na koniec nasledujúceho riadku použitím j$ + a vlož sem text použitím p. + +---> a) toto je prvá položka +---> b) + +POZNÁMKA: Môžeš použiť tiež y ako operátor; yw vystrihne jedno slovo. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lekcia 6.5: NASTAVENIE MOŽNOSTÍ + + +** Nastav možnosti, takže vyhľadávanie alebo nahradzovanie ignoruje + rozlišovanie ** + + + 1. Vyhľadaj reťazec 'ignore' napísaním: + /ignore + Zopakuj vyhľadávanie niekoľko krát stlačením klávesy n . + + 2. Nastav možnosť 'ic' (Ignore case) napísaním príkazu: + :set ic + + 3. Teraz vyhľadaj reťazec 'ingore' znova stlačením klávesy n + Poznámka, že teraz sú vyhľadané aj Ignore a IGNORE. + + 4. Nastav možnosťi 'hlsearch' a 'incsearch': + :set hls is + + 5. Teraz spusti vyhľadávací príkaz znovu, a pozri čo sa stalo: + /ignore + + 6. Pre opetovné zapnutie rozlyšovania veľkých a malých písmen + napíš: :set noic + +POZNÁMKA: Na odstránenie zvýraznenia výrazov napíš: :nohlsearch +POZNÁMKA: Ak chceš nerozlyšovať veľkosť písmen len pre jedno + použitie vyhľadávacieho príkazu, použi \c: /ignore\c + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 6 ZHRNUTIE + + + 1. Napíš o pre otvorenie riadku pod kurzorom a štart vkladacieho módu. + Napíš O pre otvorenie riadku nad kurzorom. + + 2. Napíš a pre vkladanie textu ZA kurzor. + Napíš A pre vkladanie textu za koncom riadku. + + 3. Príkaz e presunie kurozr na koniec slova + + 4. Operátor y vystrihne (skopíruje) text, p ho vloží. + + 5. Napísanie veľkého R prepne do nahradzovacieho módu, kým nieje + stlačené . + + 6. Napísanie ":set xxx" nastaví možnosť "xxx". Niektoré nastavenia sú: + 'ic' 'ignorecase' ignoruje veľké a malé písmená počas vyhľadávania. + 'is' 'incsearch' zobrazuje čiastočné reťazce vyhľadávaného reťazca. + 'hls' 'hlsearch' vyznačí všetky vyhľadávané reťazce. + Môžeš použiť hociktorý z dlhých a krátkych názvov možností. + + 7. Vlož "no" pred nastavenie pre jeho vypnutie: :set noic + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 7.1: ZÍSKANIE NÁPOVEDY + + + ** Používaj on-line systém nápovedy ** + + Vim má obsiahly on-line systém nápovedy. Pre odštartovanie, vyskúšaj jeden + z týchto troch: + - stlač klávesu (ak nejakú máš) + - stlač klávesu (ak nejakú máš) + - napíš :help + + Čítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. + Napíš CTRL-W CTRL-W pre skok z jedného okna do druhého. + Napíš :q čím zatvoríš okno nápovedy. + + Môžeš nájsť help ku hociakej téme pridaním argumentu ku príkazu ":help". + Vyskúšaj tieto (nezabudni stlačiť ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKCIA 7.2: VYTVORENIE ŠTARTOVACIEHO SKRIPTU + + ** Zapni funkcie editora Vim ** + + Vim má omnoho viac funkcii než Vi, ale večšina z nich je implicitne + vypnutá. Pre používanie viac Vim funkcii vytvor "vimrc" súbor. + + 1. Začni editovať "vimrc" súbor, to závisí na použitom systéme: + :e ~/.vimrc pre Unix + :e $VIM/_vimrc pre MS-Windows + + 2. Teraz si prečítaj text príkladu "vimrc" súboru: + + :r $VIMRUNTIME/vimrc_example.vim + + 3. Ulož súbor: + :w + + Pri nasledujúcom štarte editora Vim sa použije zvýrazňovanie syntaxe. + Do "vimrc" súboru môžeš pridať všetky svoje uprednostňované nastavenia. + Pre viac informácii napíš :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + LEKCIA 7.3 DOKONČENIE + + ** Dokonči príkaz na príkazovom riadku použitím CTRL-D a ** + + 1. Uisti sa, že Vim nieje v kompatibilnom móde: :set nocp + + 2. Pozri sa aké súbory sa nachádzajú v adresári: :!ls alebo :!dir + + 3. Napíš začiatok príkazu: :e + + 4. Stlač CTRL-D a Vim zobrazí zoznam príkazov začínajúcich "e". + + 5. Stlač a Vim dokončí meno príkazu na ":edit". + + 6. Teraz pridaj medzerník a začiatok mena existujúceho súboru: + :edit FIL + + 7. Stlač . Vim dokončí meno (ak je jedinečné). + +POZNÁMKA: Dokončovanie funguje pre veľa príkazov. Vyskúšaj stlačenie + CTRL-D a . Špeciálne je to užitočné pre príkaz :help. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + LEKCIA 7 ZHRNUTIE + + 1. Napíš :help alebo stlač alebo pre otvorenie okna nápovedy. + + 2. Napíš :help príkaz pre vyhľadanie nápovedy ku príkazu príkaz. + + 3. Napíš CTRL-W CTRL-W na preskočenie do iného okna. + + 4. Napíš :q pre zatvorenie okna nápovedy + + 5. Vytvor štartovací skript vimrc pre udržanie uprednostňovaných nastavení. + + 6. Počas písania príkazu : stlač CTRL-D pre zobrazenie dokončení. + Stlač pre použitie jedného z dokončení. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + + Toto vymedzuje výuku Vimu. Toto je určené pre strucný prehľad o editore + Vim, úplne postačujúce pre ľahké a obstojné používanie tohto editora. + Táto výuka je ďaleko od kompletnosti, pretože Vim má omnoho viacej príkazov. + Ako ďalšie si prečítaj užívatľský manuál: ":help user-manual". + + Pre ďalšie čítanie a štúdium je odporúčaná kniha: + Vim - Vi Improved - od Steve Oualline + Vydavateľ: New Riders + Prvá kniha určená pre Vim. Špeciálne vhodná pre začiatočníkov. + Obsahuje množstvo príkladov a obrázkov. + Pozri na http://iccf-holland.org/click5.html + + Táto kniha je staršia a je viac o Vi ako o Vim, ale je tiež odporúčaná: + Learning the Vi Editor - od Linda Lamb + Vydavateľ: O'Reilly & Associates Inc. + Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi. + Šieste vydanie obsahuje tiež informácie o editore Vim. + + Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware, + Colorado School of Mines s použitím myšlienok dodanými od Charles Smith, + Colorado State University. E-mail: bware@mines.colorado.edu. + + Modifikované pre Vim od Bram Moolenaar. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Preklad do Slovenčiny: Ľuboš Čelko + e-mail: celbos@inmail.sk + Last Change: 2006 Apr 18 + encoding: iso8859-2 diff --git a/share/vim/vim73/tutor/tutor.sv b/share/vim/vim74/tutor/tutor.sv similarity index 100% rename from share/vim/vim73/tutor/tutor.sv rename to share/vim/vim74/tutor/tutor.sv diff --git a/share/vim/vim73/tutor/tutor.sv.utf-8 b/share/vim/vim74/tutor/tutor.sv.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.sv.utf-8 rename to share/vim/vim74/tutor/tutor.sv.utf-8 diff --git a/share/vim/vim73/tutor/tutor.tr.iso9 b/share/vim/vim74/tutor/tutor.tr.iso9 similarity index 100% rename from share/vim/vim73/tutor/tutor.tr.iso9 rename to share/vim/vim74/tutor/tutor.tr.iso9 diff --git a/share/vim/vim73/tutor/tutor.tr.utf-8 b/share/vim/vim74/tutor/tutor.tr.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.tr.utf-8 rename to share/vim/vim74/tutor/tutor.tr.utf-8 diff --git a/share/vim/vim74/tutor/tutor.utf-8 b/share/vim/vim74/tutor/tutor.utf-8 new file mode 100644 index 00000000..da28a153 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.utf-8 @@ -0,0 +1,970 @@ +=============================================================================== += W e l c o m e t o t h e V I M T u t o r - Version 1.7 = +=============================================================================== + + Vim is a very powerful editor that has many commands, too many to + explain in a tutor such as this. This tutor is designed to describe + enough of the commands that you will be able to easily use Vim as + an all-purpose editor. + + The approximate time required to complete the tutor is 25-30 minutes, + depending upon how much time is spent with experimentation. + + ATTENTION: + The commands in the lessons will modify the text. Make a copy of this + file to practise on (if you started "vimtutor" this is already a copy). + + It is important to remember that this tutor is set up to teach by + use. That means that you need to execute the commands to learn them + properly. If you only read the text, you will forget the commands! + + Now, make sure that your Shift-Lock key is NOT depressed and press + the j key enough times to move the cursor so that Lesson 1.1 + completely fills the screen. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.1: MOVING THE CURSOR + + + ** To move the cursor, press the h,j,k,l keys as indicated. ** + ^ + k Hint: The h key is at the left and moves left. + < h l > The l key is at the right and moves right. + j The j key looks like a down arrow. + v + 1. Move the cursor around the screen until you are comfortable. + + 2. Hold down the down key (j) until it repeats. + Now you know how to move to the next lesson. + + 3. Using the down key, move to Lesson 1.2. + +NOTE: If you are ever unsure about something you typed, press to place + you in Normal mode. Then retype the command you wanted. + +NOTE: The cursor keys should also work. But using hjkl you will be able to + move around much faster, once you get used to it. Really! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.2: EXITING VIM + + + !! NOTE: Before executing any of the steps below, read this entire lesson!! + + 1. Press the key (to make sure you are in Normal mode). + + 2. Type: :q! . + This exits the editor, DISCARDING any changes you have made. + + 3. When you see the shell prompt, type the command that got you into this + tutor. That would be: vimtutor + + 4. If you have these steps memorized and are confident, execute steps + 1 through 3 to exit and re-enter the editor. + +NOTE: :q! discards any changes you made. In a few lessons you + will learn how to save the changes to a file. + + 5. Move the cursor down to Lesson 1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.3: TEXT EDITING - DELETION + + + ** Press x to delete the character under the cursor. ** + + 1. Move the cursor to the line below marked --->. + + 2. To fix the errors, move the cursor until it is on top of the + character to be deleted. + + 3. Press the x key to delete the unwanted character. + + 4. Repeat steps 2 through 4 until the sentence is correct. + +---> The ccow jumpedd ovverr thhe mooon. + + 5. Now that the line is correct, go on to Lesson 1.4. + +NOTE: As you go through this tutor, do not try to memorize, learn by usage. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.4: TEXT EDITING - INSERTION + + + ** Press i to insert text. ** + + 1. Move the cursor to the first line below marked --->. + + 2. To make the first line the same as the second, move the cursor on top + of the first character AFTER where the text is to be inserted. + + 3. Press i and type in the necessary additions. + + 4. As each error is fixed press to return to Normal mode. + Repeat steps 2 through 4 to correct the sentence. + +---> There is text misng this . +---> There is some text missing from this line. + + 5. When you are comfortable inserting text move to lesson 1.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.5: TEXT EDITING - APPENDING + + + ** Press A to append text. ** + + 1. Move the cursor to the first line below marked --->. + It does not matter on what character the cursor is in that line. + + 2. Press A and type in the necessary additions. + + 3. As the text has been appended press to return to Normal mode. + + 4. Move the cursor to the second line marked ---> and repeat + steps 2 and 3 to correct this sentence. + +---> There is some text missing from th + There is some text missing from this line. +---> There is also some text miss + There is also some text missing here. + + 5. When you are comfortable appending text move to lesson 1.6. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.6: EDITING A FILE + + ** Use :wq to save a file and exit. ** + + !! NOTE: Before executing any of the steps below, read this entire lesson!! + + 1. Exit this tutor as you did in lesson 1.2: :q! + Or, if you have access to another terminal, do the following there. + + 2. At the shell prompt type this command: vim tutor + 'vim' is the command to start the Vim editor, 'tutor' is the name of the + file you wish to edit. Use a file that may be changed. + + 3. Insert and delete text as you learned in the previous lessons. + + 4. Save the file with changes and exit Vim with: :wq + + 5. If you have quit vimtutor in step 1 restart the vimtutor and move down to + the following summary. + + 6. After reading the above steps and understanding them: do it. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1 SUMMARY + + + 1. The cursor is moved using either the arrow keys or the hjkl keys. + h (left) j (down) k (up) l (right) + + 2. To start Vim from the shell prompt type: vim FILENAME + + 3. To exit Vim type: :q! to trash all changes. + OR type: :wq to save the changes. + + 4. To delete the character at the cursor type: x + + 5. To insert or append text type: + i type inserted text insert before the cursor + A type appended text append after the line + +NOTE: Pressing will place you in Normal mode or will cancel + an unwanted and partially completed command. + +Now continue with Lesson 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.1: DELETION COMMANDS + + + ** Type dw to delete a word. ** + + 1. Press to make sure you are in Normal mode. + + 2. Move the cursor to the line below marked --->. + + 3. Move the cursor to the beginning of a word that needs to be deleted. + + 4. Type dw to make the word disappear. + + NOTE: The letter d will appear on the last line of the screen as you type + it. Vim is waiting for you to type w . If you see another character + than d you typed something wrong; press and start over. + +---> There are a some words fun that don't belong paper in this sentence. + + 5. Repeat steps 3 and 4 until the sentence is correct and go to Lesson 2.2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.2: MORE DELETION COMMANDS + + + ** Type d$ to delete to the end of the line. ** + + 1. Press to make sure you are in Normal mode. + + 2. Move the cursor to the line below marked --->. + + 3. Move the cursor to the end of the correct line (AFTER the first . ). + + 4. Type d$ to delete to the end of the line. + +---> Somebody typed the end of this line twice. end of this line twice. + + + 5. Move on to Lesson 2.3 to understand what is happening. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.3: ON OPERATORS AND MOTIONS + + + Many commands that change text are made from an operator and a motion. + The format for a delete command with the d delete operator is as follows: + + d motion + + Where: + d - is the delete operator. + motion - is what the operator will operate on (listed below). + + A short list of motions: + w - until the start of the next word, EXCLUDING its first character. + e - to the end of the current word, INCLUDING the last character. + $ - to the end of the line, INCLUDING the last character. + + Thus typing de will delete from the cursor to the end of the word. + +NOTE: Pressing just the motion while in Normal mode without an operator will + move the cursor as specified. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.4: USING A COUNT FOR A MOTION + + + ** Typing a number before a motion repeats it that many times. ** + + 1. Move the cursor to the start of the line marked ---> below. + + 2. Type 2w to move the cursor two words forward. + + 3. Type 3e to move the cursor to the end of the third word forward. + + 4. Type 0 (zero) to move to the start of the line. + + 5. Repeat steps 2 and 3 with different numbers. + +---> This is just a line with words you can move around in. + + 6. Move on to Lesson 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.5: USING A COUNT TO DELETE MORE + + + ** Typing a number with an operator repeats it that many times. ** + + In the combination of the delete operator and a motion mentioned above you + insert a count before the motion to delete more: + d number motion + + 1. Move the cursor to the first UPPER CASE word in the line marked --->. + + 2. Type d2w to delete the two UPPER CASE words + + 3. Repeat steps 1 and 2 with a different count to delete the consecutive + UPPER CASE words with one command + +---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.6: OPERATING ON LINES + + + ** Type dd to delete a whole line. ** + + Due to the frequency of whole line deletion, the designers of Vi decided + it would be easier to simply type two d's to delete a line. + + 1. Move the cursor to the second line in the phrase below. + 2. Type dd to delete the line. + 3. Now move to the fourth line. + 4. Type 2dd to delete two lines. + +---> 1) Roses are red, +---> 2) Mud is fun, +---> 3) Violets are blue, +---> 4) I have a car, +---> 5) Clocks tell time, +---> 6) Sugar is sweet +---> 7) And so are you. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.7: THE UNDO COMMAND + + + ** Press u to undo the last commands, U to fix a whole line. ** + + 1. Move the cursor to the line below marked ---> and place it on the + first error. + 2. Type x to delete the first unwanted character. + 3. Now type u to undo the last command executed. + 4. This time fix all the errors on the line using the x command. + 5. Now type a capital U to return the line to its original state. + 6. Now type u a few times to undo the U and preceding commands. + 7. Now type CTRL-R (keeping CTRL key pressed while hitting R) a few times + to redo the commands (undo the undo's). + +---> Fiix the errors oon thhis line and reeplace them witth undo. + + 8. These are very useful commands. Now move on to the Lesson 2 Summary. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2 SUMMARY + + + 1. To delete from the cursor up to the next word type: dw + 2. To delete from the cursor to the end of a line type: d$ + 3. To delete a whole line type: dd + + 4. To repeat a motion prepend it with a number: 2w + 5. The format for a change command is: + operator [number] motion + where: + operator - is what to do, such as d for delete + [number] - is an optional count to repeat the motion + motion - moves over the text to operate on, such as w (word), + $ (to the end of line), etc. + + 6. To move to the start of the line use a zero: 0 + + 7. To undo previous actions, type: u (lowercase u) + To undo all the changes on a line, type: U (capital U) + To undo the undo's, type: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.1: THE PUT COMMAND + + + ** Type p to put previously deleted text after the cursor. ** + + 1. Move the cursor to the first ---> line below. + + 2. Type dd to delete the line and store it in a Vim register. + + 3. Move the cursor to the c) line, ABOVE where the deleted line should go. + + 4. Type p to put the line below the cursor. + + 5. Repeat steps 2 through 4 to put all the lines in correct order. + +---> d) Can you learn too? +---> b) Violets are blue, +---> c) Intelligence is learned, +---> a) Roses are red, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.2: THE REPLACE COMMAND + + + ** Type rx to replace the character at the cursor with x . ** + + 1. Move the cursor to the first line below marked --->. + + 2. Move the cursor so that it is on top of the first error. + + 3. Type r and then the character which should be there. + + 4. Repeat steps 2 and 3 until the first line is equal to the second one. + +---> Whan this lime was tuoed in, someone presswd some wrojg keys! +---> When this line was typed in, someone pressed some wrong keys! + + 5. Now move on to Lesson 3.3. + +NOTE: Remember that you should be learning by doing, not memorization. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.3: THE CHANGE OPERATOR + + + ** To change until the end of a word, type ce . ** + + 1. Move the cursor to the first line below marked --->. + + 2. Place the cursor on the u in lubw. + + 3. Type ce and the correct word (in this case, type ine ). + + 4. Press and move to the next character that needs to be changed. + + 5. Repeat steps 3 and 4 until the first sentence is the same as the second. + +---> This lubw has a few wptfd that mrrf changing usf the change operator. +---> This line has a few words that need changing using the change operator. + +Notice that ce deletes the word and places you in Insert mode. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.4: MORE CHANGES USING c + + + ** The change operator is used with the same motions as delete. ** + + 1. The change operator works in the same way as delete. The format is: + + c [number] motion + + 2. The motions are the same, such as w (word) and $ (end of line). + + 3. Move to the first line below marked --->. + + 4. Move the cursor to the first error. + + 5. Type c$ and type the rest of the line like the second and press . + +---> The end of this line needs some help to make it like the second. +---> The end of this line needs to be corrected using the c$ command. + +NOTE: You can use the Backspace key to correct mistakes while typing. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3 SUMMARY + + + 1. To put back text that has just been deleted, type p . This puts the + deleted text AFTER the cursor (if a line was deleted it will go on the + line below the cursor). + + 2. To replace the character under the cursor, type r and then the + character you want to have there. + + 3. The change operator allows you to change from the cursor to where the + motion takes you. eg. Type ce to change from the cursor to the end of + the word, c$ to change to the end of a line. + + 4. The format for change is: + + c [number] motion + +Now go on to the next lesson. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.1: CURSOR LOCATION AND FILE STATUS + + ** Type CTRL-G to show your location in the file and the file status. + Type G to move to a line in the file. ** + + NOTE: Read this entire lesson before executing any of the steps!! + + 1. Hold down the Ctrl key and press g . We call this CTRL-G. + A message will appear at the bottom of the page with the filename and the + position in the file. Remember the line number for Step 3. + +NOTE: You may see the cursor position in the lower right corner of the screen + This happens when the 'ruler' option is set (see :help 'ruler' ) + + 2. Press G to move you to the bottom of the file. + Type gg to move you to the start of the file. + + 3. Type the number of the line you were on and then G . This will + return you to the line you were on when you first pressed CTRL-G. + + 4. If you feel confident to do this, execute steps 1 through 3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.2: THE SEARCH COMMAND + + + ** Type / followed by a phrase to search for the phrase. ** + + 1. In Normal mode type the / character. Notice that it and the cursor + appear at the bottom of the screen as with the : command. + + 2. Now type 'errroor' . This is the word you want to search for. + + 3. To search for the same phrase again, simply type n . + To search for the same phrase in the opposite direction, type N . + + 4. To search for a phrase in the backward direction, use ? instead of / . + + 5. To go back to where you came from press CTRL-O (Keep Ctrl down while + pressing the letter o). Repeat to go back further. CTRL-I goes forward. + +---> "errroor" is not the way to spell error; errroor is an error. +NOTE: When the search reaches the end of the file it will continue at the + start, unless the 'wrapscan' option has been reset. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.3: MATCHING PARENTHESES SEARCH + + + ** Type % to find a matching ),], or } . ** + + 1. Place the cursor on any (, [, or { in the line below marked --->. + + 2. Now type the % character. + + 3. The cursor will move to the matching parenthesis or bracket. + + 4. Type % to move the cursor to the other matching bracket. + + 5. Move the cursor to another (,),[,],{ or } and see what % does. + +---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + + +NOTE: This is very useful in debugging a program with unmatched parentheses! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.4: THE SUBSTITUTE COMMAND + + + ** Type :s/old/new/g to substitute 'new' for 'old'. ** + + 1. Move the cursor to the line below marked --->. + + 2. Type :s/thee/the . Note that this command only changes the + first occurrence of "thee" in the line. + + 3. Now type :s/thee/the/g . Adding the g flag means to substitute + globally in the line, change all occurrences of "thee" in the line. + +---> thee best time to see thee flowers is in thee spring. + + 4. To change every occurrence of a character string between two lines, + type :#,#s/old/new/g where #,# are the line numbers of the range + of lines where the substitution is to be done. + Type :%s/old/new/g to change every occurrence in the whole file. + Type :%s/old/new/gc to find every occurrence in the whole file, + with a prompt whether to substitute or not. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4 SUMMARY + + + 1. CTRL-G displays your location in the file and the file status. + G moves to the end of the file. + number G moves to that line number. + gg moves to the first line. + + 2. Typing / followed by a phrase searches FORWARD for the phrase. + Typing ? followed by a phrase searches BACKWARD for the phrase. + After a search type n to find the next occurrence in the same direction + or N to search in the opposite direction. + CTRL-O takes you back to older positions, CTRL-I to newer positions. + + 3. Typing % while the cursor is on a (,),[,],{, or } goes to its match. + + 4. To substitute new for the first old in a line type :s/old/new + To substitute new for all 'old's on a line type :s/old/new/g + To substitute phrases between two line #'s type :#,#s/old/new/g + To substitute all occurrences in the file type :%s/old/new/g + To ask for confirmation each time add 'c' :%s/old/new/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.1: HOW TO EXECUTE AN EXTERNAL COMMAND + + + ** Type :! followed by an external command to execute that command. ** + + 1. Type the familiar command : to set the cursor at the bottom of the + screen. This allows you to enter a command-line command. + + 2. Now type the ! (exclamation point) character. This allows you to + execute any external shell command. + + 3. As an example type ls following the ! and then hit . This + will show you a listing of your directory, just as if you were at the + shell prompt. Or use :!dir if ls doesn't work. + +NOTE: It is possible to execute any external command this way, also with + arguments. + +NOTE: All : commands must be finished by hitting + From here on we will not always mention it. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.2: MORE ON WRITING FILES + + + ** To save the changes made to the text, type :w FILENAME. ** + + 1. Type :!dir or :!ls to get a listing of your directory. + You already know you must hit after this. + + 2. Choose a filename that does not exist yet, such as TEST. + + 3. Now type: :w TEST (where TEST is the filename you chose.) + + 4. This saves the whole file (the Vim Tutor) under the name TEST. + To verify this, type :!dir or :!ls again to see your directory. + +NOTE: If you were to exit Vim and start it again with vim TEST , the file + would be an exact copy of the tutor when you saved it. + + 5. Now remove the file by typing (MS-DOS): :!del TEST + or (Unix): :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.3: SELECTING TEXT TO WRITE + + + ** To save part of the file, type v motion :w FILENAME ** + + 1. Move the cursor to this line. + + 2. Press v and move the cursor to the fifth item below. Notice that the + text is highlighted. + + 3. Press the : character. At the bottom of the screen :'<,'> will appear. + + 4. Type w TEST , where TEST is a filename that does not exist yet. Verify + that you see :'<,'>w TEST before you press . + + 5. Vim will write the selected lines to the file TEST. Use :!dir or :!ls + to see it. Do not remove it yet! We will use it in the next lesson. + +NOTE: Pressing v starts Visual selection. You can move the cursor around + to make the selection bigger or smaller. Then you can use an operator + to do something with the text. For example, d deletes the text. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.4: RETRIEVING AND MERGING FILES + + + ** To insert the contents of a file, type :r FILENAME ** + + 1. Place the cursor just above this line. + +NOTE: After executing Step 2 you will see text from Lesson 5.3. Then move + DOWN to see this lesson again. + + 2. Now retrieve your TEST file using the command :r TEST where TEST is + the name of the file you used. + The file you retrieve is placed below the cursor line. + + 3. To verify that a file was retrieved, cursor back and notice that there + are now two copies of Lesson 5.3, the original and the file version. + +NOTE: You can also read the output of an external command. For example, + :r !ls reads the output of the ls command and puts it below the + cursor. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5 SUMMARY + + + 1. :!command executes an external command. + + Some useful examples are: + (MS-DOS) (Unix) + :!dir :!ls - shows a directory listing. + :!del FILENAME :!rm FILENAME - removes file FILENAME. + + 2. :w FILENAME writes the current Vim file to disk with name FILENAME. + + 3. v motion :w FILENAME saves the Visually selected lines in file + FILENAME. + + 4. :r FILENAME retrieves disk file FILENAME and puts it below the + cursor position. + + 5. :r !dir reads the output of the dir command and puts it below the + cursor position. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.1: THE OPEN COMMAND + + + ** Type o to open a line below the cursor and place you in Insert mode. ** + + 1. Move the cursor to the line below marked --->. + + 2. Type the lowercase letter o to open up a line BELOW the cursor and place + you in Insert mode. + + 3. Now type some text and press to exit Insert mode. + +---> After typing o the cursor is placed on the open line in Insert mode. + + 4. To open up a line ABOVE the cursor, simply type a capital O , rather + than a lowercase o. Try this on the line below. + +---> Open up a line above this by typing O while the cursor is on this line. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.2: THE APPEND COMMAND + + + ** Type a to insert text AFTER the cursor. ** + + 1. Move the cursor to the start of the line below marked --->. + + 2. Press e until the cursor is on the end of li . + + 3. Type an a (lowercase) to append text AFTER the cursor. + + 4. Complete the word like the line below it. Press to exit Insert + mode. + + 5. Use e to move to the next incomplete word and repeat steps 3 and 4. + +---> This li will allow you to pract appendi text to a line. +---> This line will allow you to practice appending text to a line. + +NOTE: a, i and A all go to the same Insert mode, the only difference is where + the characters are inserted. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.3: ANOTHER WAY TO REPLACE + + + ** Type a capital R to replace more than one character. ** + + 1. Move the cursor to the first line below marked --->. Move the cursor to + the beginning of the first xxx . + + 2. Now press R and type the number below it in the second line, so that it + replaces the xxx . + + 3. Press to leave Replace mode. Notice that the rest of the line + remains unmodified. + + 4. Repeat the steps to replace the remaining xxx. + +---> Adding 123 to xxx gives you xxx. +---> Adding 123 to 456 gives you 579. + +NOTE: Replace mode is like Insert mode, but every typed character deletes an + existing character. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.4: COPY AND PASTE TEXT + + + ** Use the y operator to copy text and p to paste it ** + + 1. Go to the line marked with ---> below and place the cursor after "a)". + + 2. Start Visual mode with v and move the cursor to just before "first". + + 3. Type y to yank (copy) the highlighted text. + + 4. Move the cursor to the end of the next line: j$ + + 5. Type p to put (paste) the text. Then type: a second . + + 6. Use Visual mode to select " item.", yank it with y , move to the end of + the next line with j$ and put the text there with p . + +---> a) this is the first item. + b) + + NOTE: you can also use y as an operator; yw yanks one word. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.5: SET OPTION + + + ** Set an option so a search or substitute ignores case ** + + 1. Search for 'ignore' by entering: /ignore + Repeat several times by pressing n . + + 2. Set the 'ic' (Ignore case) option by entering: :set ic + + 3. Now search for 'ignore' again by pressing n + Notice that Ignore and IGNORE are now also found. + + 4. Set the 'hlsearch' and 'incsearch' options: :set hls is + + 5. Now type the search command again and see what happens: /ignore + + 6. To disable ignoring case enter: :set noic + +NOTE: To remove the highlighting of matches enter: :nohlsearch +NOTE: If you want to ignore case for just one search command, use \c + in the phrase: /ignore\c +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6 SUMMARY + + 1. Type o to open a line BELOW the cursor and start Insert mode. + Type O to open a line ABOVE the cursor. + + 2. Type a to insert text AFTER the cursor. + Type A to insert text after the end of the line. + + 3. The e command moves to the end of a word. + + 4. The y operator yanks (copies) text, p puts (pastes) it. + + 5. Typing a capital R enters Replace mode until is pressed. + + 6. Typing ":set xxx" sets the option "xxx". Some options are: + 'ic' 'ignorecase' ignore upper/lower case when searching + 'is' 'incsearch' show partial matches for a search phrase + 'hls' 'hlsearch' highlight all matching phrases + You can either use the long or the short option name. + + 7. Prepend "no" to switch an option off: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7.1: GETTING HELP + + + ** Use the on-line help system ** + + Vim has a comprehensive on-line help system. To get started, try one of + these three: + - press the key (if you have one) + - press the key (if you have one) + - type :help + + Read the text in the help window to find out how the help works. + Type CTRL-W CTRL-W to jump from one window to another. + Type :q to close the help window. + + You can find help on just about any subject, by giving an argument to the + ":help" command. Try these (don't forget pressing ): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7.2: CREATE A STARTUP SCRIPT + + + ** Enable Vim features ** + + Vim has many more features than Vi, but most of them are disabled by + default. To start using more features you have to create a "vimrc" file. + + 1. Start editing the "vimrc" file. This depends on your system: + :e ~/.vimrc for Unix + :e $VIM/_vimrc for MS-Windows + + 2. Now read the example "vimrc" file contents: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Write the file with: + :w + + The next time you start Vim it will use syntax highlighting. + You can add all your preferred settings to this "vimrc" file. + For more information type :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7.3: COMPLETION + + + ** Command line completion with CTRL-D and ** + + 1. Make sure Vim is not in compatible mode: :set nocp + + 2. Look what files exist in the directory: :!ls or :!dir + + 3. Type the start of a command: :e + + 4. Press CTRL-D and Vim will show a list of commands that start with "e". + + 5. Press and Vim will complete the command name to ":edit". + + 6. Now add a space and the start of an existing file name: :edit FIL + + 7. Press . Vim will complete the name (if it is unique). + +NOTE: Completion works for many commands. Just try pressing CTRL-D and + . It is especially useful for :help . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7 SUMMARY + + + 1. Type :help or press or to open a help window. + + 2. Type :help cmd to find help on cmd . + + 3. Type CTRL-W CTRL-W to jump to another window + + 4. Type :q to close the help window + + 5. Create a vimrc startup script to keep your preferred settings. + + 6. When typing a : command, press CTRL-D to see possible completions. + Press to use one completion. + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + This concludes the Vim Tutor. It was intended to give a brief overview of + the Vim editor, just enough to allow you to use the editor fairly easily. + It is far from complete as Vim has many many more commands. Read the user + manual next: ":help user-manual". + + For further reading and studying, this book is recommended: + Vim - Vi Improved - by Steve Oualline + Publisher: New Riders + The first book completely dedicated to Vim. Especially useful for beginners. + There are many examples and pictures. + See http://iccf-holland.org/click5.html + + This book is older and more about Vi than Vim, but also recommended: + Learning the Vi Editor - by Linda Lamb + Publisher: O'Reilly & Associates Inc. + It is a good book to get to know almost anything you want to do with Vi. + The sixth edition also includes information on Vim. + + This tutorial was written by Michael C. Pierce and Robert K. Ware, + Colorado School of Mines using ideas supplied by Charles Smith, + Colorado State University. E-mail: bware@mines.colorado.edu. + + Modified for Vim by Bram Moolenaar. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.vi.utf-8 b/share/vim/vim74/tutor/tutor.vi.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.vi.utf-8 rename to share/vim/vim74/tutor/tutor.vi.utf-8 diff --git a/share/vim/vim74/tutor/tutor.vim b/share/vim/vim74/tutor/tutor.vim new file mode 100644 index 00000000..a48ff6a4 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.vim @@ -0,0 +1,189 @@ +" Vim tutor support file +" Author: Eduardo F. Amatria +" Maintainer: Bram Moolenaar +" Last Change: 2012 Sep 21 + +" This Vim script is used for detecting if a translation of the +" tutor file exist, i.e., a tutor.xx file, where xx is the language. +" If the translation does not exist, or no extension is given, +" it defaults to the english version. + +" It is invoked by the vimtutor shell script. + +" 1. Build the extension of the file, if any: +let s:ext = "" +if strlen($xx) > 1 + let s:ext = "." . $xx +else + let s:lang = "" + " Check that a potential value has at least two letters. + " Ignore "1043" and "C". + if exists("v:lang") && v:lang =~ '\a\a' + let s:lang = v:lang + elseif $LC_ALL =~ '\a\a' + let s:lang = $LC_ALL + elseif $LANG =~ '\a\a' + let s:lang = $LANG + endif + if s:lang != "" + " Remove "@euro" (ignoring case), it may be at the end + let s:lang = substitute(s:lang, '\c@euro', '', '') + " On MS-Windows it may be German_Germany.1252 or Polish_Poland.1250. How + " about other languages? + if s:lang =~ "German" + let s:ext = ".de" + elseif s:lang =~ "Polish" + let s:ext = ".pl" + elseif s:lang =~ "Slovak" + let s:ext = ".sk" + elseif s:lang =~ "Czech" + let s:ext = ".cs" + elseif s:lang =~ "Dutch" + let s:ext = ".nl" + else + let s:ext = "." . strpart(s:lang, 0, 2) + endif + endif +endif + +" Somehow ".ge" (Germany) is sometimes used for ".de" (Deutsch). +if s:ext =~? '\.ge' + let s:ext = ".de" +endif + +if s:ext =~? '\.en' + let s:ext = "" +endif + +" The japanese tutor is available in two encodings, guess which one to use +" The "sjis" one is actually "cp932", it doesn't matter for this text. +if s:ext =~? '\.ja' + if &enc =~ "euc" + let s:ext = ".ja.euc" + elseif &enc != "utf-8" + let s:ext = ".ja.sjis" + endif +endif + +" The korean tutor is available in two encodings, guess which one to use +if s:ext =~? '\.ko' + if &enc != "utf-8" + let s:ext = ".ko.euc" + endif +endif + +" The Chinese tutor is available in three encodings, guess which one to use +" This segment is from the above lines and modified by +" Mendel L Chan for Chinese vim tutorial +" When 'encoding' is utf-8, choose between China (simplified) and Taiwan +" (traditional) based on the language, suggested by Alick Zhao. +if s:ext =~? '\.zh' + if &enc =~ 'big5\|cp950' + let s:ext = ".zh.big5" + elseif &enc != 'utf-8' + let s:ext = ".zh.euc" + elseif s:ext =~? 'zh_tw' || (exists("s:lang") && s:lang =~? 'zh_tw') + let s:ext = ".zh_tw" + else + let s:ext = ".zh_cn" + endif +endif + +" The Polish tutor is available in two encodings, guess which one to use. +if s:ext =~? '\.pl' + if &enc =~ 1250 + let s:ext = ".pl.cp1250" + endif +endif + +" The Turkish tutor is available in two encodings, guess which one to use +if s:ext =~? '\.tr' + if &enc == "iso-8859-9" + let s:ext = ".tr.iso9" + endif +endif + +" The Greek tutor is available in three encodings, guess what to use. +" We used ".gr" (Greece) instead of ".el" (Greek); accept both. +if s:ext =~? '\.gr\|\.el' + if &enc == "iso-8859-7" + let s:ext = ".el" + elseif &enc == "utf-8" + let s:ext = ".el.utf-8" + elseif &enc =~ 737 + let s:ext = ".el.cp737" + endif +endif + +" The Slovak tutor is available in three encodings, guess which one to use +if s:ext =~? '\.sk' + if &enc =~ 1250 + let s:ext = ".sk.cp1250" + endif +endif + +" The Czech tutor is available in three encodings, guess which one to use +if s:ext =~? '\.cs' + if &enc =~ 1250 + let s:ext = ".cs.cp1250" + endif +endif + +" The Russian tutor is available in three encodings, guess which one to use. +if s:ext =~? '\.ru' + if &enc =~ '1251' + let s:ext = '.ru.cp1251' + elseif &enc =~ 'koi8' + let s:ext = '.ru' + endif +endif + +" The Hungarian tutor is available in three encodings, guess which one to use. +if s:ext =~? '\.hu' + if &enc =~ 1250 + let s:ext = ".hu.cp1250" + elseif &enc =~ 'iso-8859-2' + let s:ext = '.hu' + endif +endif + +" The Croatian tutor is available in three encodings, guess which one to use. +if s:ext =~? '\.hr' + if &enc =~ 1250 + let s:ext = ".hr.cp1250" + elseif &enc =~ 'iso-8859-2' + let s:ext = '.hr' + endif +endif + +" Esperanto is only available in utf-8 +if s:ext =~? '\.eo' + let s:ext = ".eo.utf-8" +endif +" Vietnamese is only available in utf-8 +if s:ext =~? '\.vi' + let s:ext = ".vi.utf-8" +endif + +" If 'encoding' is utf-8 s:ext must end in utf-8. +if &enc == 'utf-8' && s:ext !~ '\.utf-8' + let s:ext .= '.utf-8' +endif + +" 2. Build the name of the file: +let s:tutorfile = "/tutor/tutor" +let s:tutorxx = $VIMRUNTIME . s:tutorfile . s:ext + +" 3. Finding the file: +if filereadable(s:tutorxx) + let $TUTOR = s:tutorxx +else + let $TUTOR = $VIMRUNTIME . s:tutorfile + echo "The file " . s:tutorxx . " does not exist.\n" + echo "Copying English version: " . $TUTOR + 4sleep +endif + +" 4. Making the copy and exiting Vim: +e $TUTOR +wq! $TUTORCOPY diff --git a/share/vim/vim73/tutor/tutor.zh.big5 b/share/vim/vim74/tutor/tutor.zh.big5 similarity index 100% rename from share/vim/vim73/tutor/tutor.zh.big5 rename to share/vim/vim74/tutor/tutor.zh.big5 diff --git a/share/vim/vim74/tutor/tutor.zh.euc b/share/vim/vim74/tutor/tutor.zh.euc new file mode 100644 index 00000000..df59c320 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.zh.euc @@ -0,0 +1,996 @@ +=============================================================================== += »¶ Ó­ ÔÄ ¶Á ¡¶ V I M ½Ì ³Ì ¡· ¡ª¡ª °æ±¾ 1.7 = +=============================================================================== + + Vim ÊÇÒ»¸ö¾ßÓкܶàÃüÁîµÄ¹¦Äܷdz£Ç¿´óµÄ±à¼­Æ÷¡£ÏÞÓÚƪ·ù£¬ÔÚ±¾½Ì³Ìµ±ÖÐ + ¾Í²»Ïêϸ½éÉÜÁË¡£±¾½Ì³ÌµÄÉè¼ÆÄ¿±êÊǽ²ÊöһЩ±ØÒªµÄ»ù±¾ÃüÁ¶øÕÆÎÕºÃÕâ + ЩÃüÁÄú¾ÍÄܹ»ºÜÈÝÒ׵ؽ« Vim µ±×÷Ò»¸öͨÓñ༭Æ÷À´Ê¹ÓÃÁË¡£ + + Íê³É±¾½Ì³ÌµÄÄÚÈÝ´óÔ¼ÐèÒª25-30·ÖÖÓ£¬È¡¾öÓÚÄúѵÁ·µÄʱ¼ä¡£ + + ×¢Ò⣺ + ÿһ½ÚµÄÃüÁî²Ù×÷½«»á¸ü¸Ä±¾ÎÄ¡£ÍƼöÄú¸´ÖƱ¾ÎĵÄÒ»¸ö¸±±¾£¬È»ºóÔÚ¸±±¾ÉÏ + ½øÐÐѵÁ·(Èç¹ûÄúÊÇͨ¹ý"vimtutor"À´Æô¶¯½Ì³ÌµÄ£¬ÄÇô±¾ÎľÍÒѾ­ÊǸ±±¾ÁË)¡£ + + ÇмÇÒ»µã£º±¾½Ì³ÌµÄÉè¼Æ˼·ÊÇÔÚʹÓÃÖнøÐÐѧϰµÄ¡£Ò²¾ÍÊÇ˵£¬ÄúÐèҪͨ¹ý + Ö´ÐÐÃüÁîÀ´Ñ§Ï°ËüÃDZ¾ÉíµÄÕýÈ·Ó÷¨¡£Èç¹ûÄúÖ»ÊÇÔĶÁ¶ø²»²Ù×÷£¬ÄÇôÄú¿ÉÄÜ + »áºÜ¿ìÒÅÍüÕâЩÃüÁîµÄ£¡ + + ºÃÁË£¬ÏÖÔÚÇëÈ·¶¨ÄúµÄShift-Lock(´óСдËø¶¨¼ü)»¹Ã»Óа´Ï£¬È»ºó°´¼üÅÌÉÏ + µÄ×Öĸ¼ü j ×ã¹»¶à´ÎÀ´Òƶ¯¹â±ê£¬Ö±µ½µÚÒ»½ÚµÄÄÚÈÝÄܹ»ÍêÈ«³äÂúÆÁÄ»¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÒ»½²µÚÒ»½Ú£ºÒƶ¯¹â±ê + + + ** ÒªÒƶ¯¹â±ê£¬ÇëÒÀÕÕ˵Ã÷·Ö±ð°´Ï h¡¢j¡¢k¡¢l ¼ü¡£ ** + + ^ + k Ìáʾ£º h µÄ¼üλÓÚ×ó±ß£¬Ã¿´Î°´Ï¾ͻáÏò×óÒƶ¯¡£ + < h l > l µÄ¼üλÓÚÓұߣ¬Ã¿´Î°´Ï¾ͻáÏòÓÒÒƶ¯¡£ + j j ¼ü¿´ÆðÀ´ºÜÏóÒ»Ö§¼â¶Ë·½Ïò³¯ÏµļýÍ·¡£ + v + + 1. ÇëËæÒâÔÚÆÁÄ»ÄÚÒƶ¯¹â±ê£¬Ö±ÖÁÄú¾õµÃÊæ·þΪֹ¡£ + + 2. °´ÏÂÏÂÐмü(j)£¬Ö±µ½³öÏÖ¹â±êÖظ´ÏÂÐС£ + +---> ÏÖÔÚÄúÓ¦¸ÃÒѾ­Ñ§»áÈçºÎÒƶ¯µ½ÏÂÒ»½²°É¡£ + + 3. ÏÖÔÚÇëʹÓÃÏÂÐмü£¬½«¹â±êÒƶ¯µ½µÚÒ»½²µÚ¶þ½Ú¡£ + +Ìáʾ£ºÈç¹ûÄú²»¸ÒÈ·¶¨ÄúËù°´ÏµÄ×Öĸ£¬Ç밴ϼü»Øµ½Õý³£(Normal)ģʽ¡£ + È»ºóÔٴδӼüÅÌÊäÈëÄúÏëÒªµÄÃüÁî¡£ + +Ìáʾ£º¹â±ê¼üÓ¦µ±Ò²ÄÜÕý³£¹¤×÷µÄ¡£µ«ÊÇʹÓÃhjkl¼ü£¬ÔÚÏ°¹ßÖ®ºóÄú¾ÍÄܹ»¸ü¿ì + µØÔÚÆÁÄ»ÄÚËÄ´¦Òƶ¯¹â±ê¡£ÕæµÄÊÇÕâÑù£¡ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÒ»½²µÚ¶þ½Ú£ºVIMµÄ½øÈëºÍÍ˳ö + + + !! ÌرðÌáʾ£º¾´ÇëÔĶÁ±¾Ò»½ÚµÄÍêÕûÄÚÈÝ£¬È»ºóÔÙÖ´ÐÐÒÔÏÂËù½²½âµÄÃüÁî¡£ + + 1. °´¼ü(ÕâÊÇΪÁËÈ·±£Äú´¦ÔÚÕý³£Ä£Ê½)¡£ + + 2. È»ºóÊäÈ룺 :q! <»Ø³µ> + ÕâÖÖ·½Ê½µÄÍ˳ö±à¼­Æ÷»á¶ªÆúÄú½øÈë±à¼­Æ÷ÒÔÀ´Ëù×öµÄ¸Ä¶¯¡£ + + 3. Èç¹ûÄú¿´µ½ÁËÃüÁîÐÐÌáʾ·û£¬ÇëÊäÈëÄܹ»´øÄú»Øµ½±¾½Ì³ÌµÄÃüÁÄǾÍÊÇ£º + vimtutor <»Ø³µ> + + 4. Èç¹ûÄú×ÔÐÅÒѾ­ÀÎÀμÇסÁËÕâЩ²½ÖèµÄ»°£¬Çë´Ó²½Öè1Ö´Ðе½²½Öè3Í˳ö£¬È» + ºóÔٴνøÈë±à¼­Æ÷¡£ + +Ìáʾ£º :q! <»Ø³µ> »á¶ªÆúÄúËù×öµÄÈκθĶ¯¡£¼¸½²Ö®ºóÄú½«Ñ§»áÈçºÎ±£´æ¸Ä¶¯µ½Îļþ¡£ + + 5. ½«¹â±êÏÂÒƵ½µÚÒ»½²µÚÈý½Ú¡£ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÒ»½²µÚÈý½Ú£ºÎı¾±à¼­Ö®É¾³ý + + + ** ÔÚÕý³£(Normal)ģʽÏ£¬¿ÉÒÔ°´Ï x ¼üÀ´É¾³ý¹â±êËùÔÚλÖõÄ×Ö·û¡£** + + 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐС£ + + 2. ΪÁËÐÞÕýÊäÈë´íÎó£¬Ç뽫¹â±êÒÆÖÁ×¼±¸É¾³ýµÄ×Ö·ûµÄλÖô¦¡£ + + 3. È»ºó°´Ï x ¼ü½«´íÎó×Ö·ûɾ³ýµô¡£ + + 4. Öظ´²½Öè2µ½²½Öè4£¬Ö±µ½¾ä×ÓÐÞÕýΪֹ¡£ + +---> The ccow jumpedd ovverr thhe mooon. + + 5. ºÃÁË£¬¸ÃÐÐÒѾ­ÐÞÕýÁË£¬ÏÂÃæÊǵÚÒ»½²µÚËĽڡ£ + +ÌرðÌáʾ£ºÔÚä¯ÀÀ±¾½Ì³Ìʱ£¬²»ÒªÇ¿ÐмÇÒä¡£¼Çסһµã£ºÔÚʹÓÃÖÐѧϰ¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÒ»½²µÚËĽڣºÎı¾±à¼­Ö®²åÈë + + + ** ÔÚÕý³£Ä£Ê½Ï£¬¿ÉÒÔ°´Ï i ¼üÀ´²åÈëÎı¾¡£** + + 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐС£ + + 2. ΪÁËʹµÃµÚÒ»ÐÐÄÚÈÝÀ×ͬÓÚµÚ¶þÐУ¬Ç뽫¹â±êÒÆÖÁÎı¾µÚÒ»¸ö×¼±¸²åÈë×Ö·û + µÄλÖᣠ+ + 3. È»ºó°´Ï i ¼ü£¬½Ó×ÅÊäÈë±ØÒªµÄÎı¾×Ö·û¡£ + + 4. ÿ¸ö´íÎóÐÞÕýÍê±Ïºó£¬Çë°´Ï ¼ü·µ»ØÕý³£Ä£Ê½¡£ + Öظ´²½Öè2ÖÁ²½Öè4ÒÔ±ãÐÞÕý¾ä×Ó¡£ + +---> There is text misng this . +---> There is some text missing from this line. + + 5. Èç¹ûÄú¶ÔÎı¾²åÈë²Ù×÷ÒѾ­ºÜÂúÒ⣬Çë½Ó×ÅÔĶÁÏÂÃæµÄµÚÒ»½²µÚÎå½Ú¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÒ»½²µÚÎå½Ú£ºÎı¾±à¼­Ö®Ìí¼Ó + + + ** °´ A ¼üÒÔÌí¼ÓÎı¾¡£ ** + + 1. Òƶ¯¹â±êµ½ÏÂÃæµÚÒ»¸ö±ê¼ÇÓÐ ---> µÄÒ»ÐС£ + ¹â±ê·ÅÔÚÄÇÒ»ÐеÄÄĸö×Ö·ûÉϲ¢²»ÖØÒª¡£ + + 2. °´ A ¼üÊäÈë±ØÒªµÄÌí¼ÓÄÚÈÝ¡£ + + 3. Îı¾Ìí¼ÓÍê±Ïºó£¬°´ ¼ü»Øµ½Õý³£Ä£Ê½¡£ + + 4. Òƶ¯¹â±êµ½ÏÂÃæµÚ¶þ¸ö±ê¼ÇÓÐ ---> µÄÒ»ÐС£Öظ´²½Öè2ºÍ²½Öè3ÒÔ¸ÄÕýÕâ¸ö¾ä×Ó¡£ + +---> There is some text missing from th + There is some text missing from this line. +---> There is also some text miss + There is also some text missing here. + + 5. µ±Äú¶ÔÌí¼ÓÎı¾²Ù×÷¸Ðµ½ÂúÒâʱ£¬Çë¼ÌÐøѧϰµÚÒ»½²µÚÁù½Ú¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÒ»½²µÚÁù½Ú£º±à¼­Îļþ + + ** ʹÓà :wq ÒÔ±£´æÎļþ²¢Í˳ö¡£ ** + + ÌرðÌáʾ£ºÔÚÖ´ÐÐÒÔϲ½Öè֮ǰ£¬ÇëÏȶÁÍêÕû¸öС½Ú£¡ + + 1. ÈçÄúÔÚµÚÒ»½²µÚ¶þ½ÚÖÐËù×öµÄÄÇÑùÍ˳ö±¾½Ì³Ì£º :q! + »òÕߣ¬Èç¹ûÄú¿ÉÒÔ·ÃÎÊÁíÒ»¸öÖնˣ¬ÇëÔÚÄÇÀïÖ´ÐÐÒÔϲÙ×÷¡£ + + 2. ÔÚ shell µÄÌáʾ·ûÏÂÊäÈëÃüÁ vim tutor <»Ø³µ> + 'vim'ÊÇÆô¶¯ Vim ±à¼­Æ÷µÄÃüÁ'tutor'ÊÇÄúÏ£Íû±à¼­µÄÎļþµÄÃû×Ö¡£ + ÇëʹÓÃÒ»¸ö¿ÉÒԸĶ¯µÄÎļþ¡£ + + 3. ʹÓÃÄúÔÚÇ°ÃæµÄ½Ì³ÌÖÐѧµ½µÄÃüÁî²åÈëɾ³ýÎı¾¡£ + + 4. ±£´æ¸Ä¶¯¹ýµÄÎļþ²¢Í˳ö Vim£¬°´ÕâЩ¼ü£º :wq <»Ø³µ> + + 5. Èç¹ûÄúÔÚ²½Öè1ÖÐÒѾ­Í˳ö vimtutor£¬ÇëÖØÆô vimtutor Òƶ¯µ½ÏÂÃæµÄС½áÒ»½Ú¡£ + + 6. ÔĶÁÍêÒÔÉϲ½Ö裬Ū¶®ËüÃǵÄÒâÒ壬ȻºóÔÚʵ¼ùÖнøÐÐÁ·Ï°¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÒ»½²Ð¡½á + + + 1. ¹â±êÔÚÆÁÄ»Îı¾ÖеÄÒƶ¯¼È¿ÉÒÔÓüýÍ·¼ü£¬Ò²¿ÉÒÔʹÓà hjkl ×Öĸ¼ü¡£ + h (×óÒÆ) j (ÏÂÐÐ) k (ÉÏÐÐ) l (ÓÒÒÆ) + + 2. Óû½øÈë Vim ±à¼­Æ÷(´ÓÃüÁîÐÐÌáʾ·û)£¬ÇëÊäÈ룺vim ÎļþÃû <»Ø³µ> + + 3. ÓûÍ˳ö Vim ±à¼­Æ÷£¬ÇëÊäÈë :q! <»Ø³µ> ·ÅÆúËùÓиĶ¯¡£ + »òÕßÊäÈë :wq <»Ø³µ> ±£´æ¸Ä¶¯¡£ + + 4. ÔÚÕý³£Ä£Ê½ÏÂɾ³ý¹â±êËùÔÚλÖõÄ×Ö·û£¬Çë°´£º x + + 5. Óû²åÈë»òÌí¼ÓÎı¾£¬ÇëÊäÈ룺 + + i ÊäÈëÓû²åÈëÎı¾ ÔÚ¹â±êÇ°²åÈëÎı¾ + A ÊäÈëÓûÌí¼ÓÎı¾ ÔÚÒ»ÐкóÌí¼ÓÎı¾ + +ÌرðÌáʾ£º°´Ï ¼ü»á´øÄú»Øµ½Õý³£Ä£Ê½»òÕß³·ÏûÒ»¸ö²»ÏëÊäÈë»ò²¿·ÖÍêÕû +µÄÃüÁî¡£ + +ºÃÁË£¬µÚÒ»½²µ½´Ë½áÊø¡£ÏÂÃæ½ÓÏÂÀ´¼ÌÐøµÚ¶þ½²µÄÄÚÈÝ¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚ¶þ½²µÚÒ»½Ú£ºÉ¾³ýÀàÃüÁî + + + ** ÊäÈë dw ¿ÉÒÔ´Ó¹â±ê´¦É¾³ýÖÁÒ»¸öµ¥´ÊµÄĩβ¡£** + + 1. Çë°´Ï ¼üÈ·±£Äú´¦ÓÚÕý³£Ä£Ê½¡£ + + 2. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐС£ + + 3. Ç뽫¹â±êÒÆÖÁ×¼±¸ÒªÉ¾³ýµÄµ¥´ÊµÄÆðʼ´¦¡£ + + 4. ½Ó×ÅÊäÈë dw ɾ³ýµô¸Ãµ¥´Ê¡£ + + ÌرðÌáʾ£ºµ±ÄúÊäÈëʱ£¬×Öĸ d »áͬʱ³öÏÖÔÚÆÁÄ»µÄ×îºóÒ»ÐС£Vim ÔڵȴýÄúÊäÈë + ×Öĸ w¡£Èç¹ûÄú¿´µ½µÄÊdzý d ÍâµÄÆäËû×Ö·û£¬ÄDZíÃ÷Äú°´´íÁË£»Çë°´Ï ¼ü£¬ + È»ºóÖØÐÂÔÙÀ´¡£ + +---> There are a some words fun that don't belong paper in this sentence. + + 5. Öظ´²½Öè3ºÍ²½Öè4£¬Ö±ÖÁ¾ä×ÓÐÞÕýÍê±Ï¡£½Ó׿ÌÐøµÚ¶þ½²µÚ¶þ½ÚÄÚÈÝ¡£ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚ¶þ½²µÚ¶þ½Ú£º¸ü¶àɾ³ýÀàÃüÁî + + + ** ÊäÈë d$ ´Óµ±Ç°¹â±êɾ³ýµ½ÐÐÄ©¡£** + + 1. Çë°´Ï ¼üÈ·±£Äú´¦ÓÚÕý³£Ä£Ê½¡£ + + 2. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐС£ + + 3. Ç뽫¹â±êÒƶ¯µ½¸ÃÐеÄβ²¿(Ò²¾ÍÊÇÔÚµÚÒ»¸öµãºÅ¡®.¡¯ºóÃæ)¡£ + + 4. È»ºóÊäÈë d$ ´Ó¹â±ê´¦É¾ÖÁµ±Ç°ÐÐβ²¿¡£ + +---> Somebody typed the end of this line twice. end of this line twice. + + + 5. Çë¼ÌÐøѧϰµÚ¶þ½²µÚÈý½Ú¾ÍÖªµÀÊÇÔõô»ØÊÂÁË¡£ + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚ¶þ½²µÚÈý½Ú£º¹ØÓÚÃüÁîºÍ¶ÔÏó + + + Ðí¶à¸Ä±äÎı¾µÄÃüÁÓÉÒ»¸ö²Ù×÷·ûºÍÒ»¸ö¶¯×÷¹¹³É¡£ + ʹÓÃɾ³ý²Ù×÷·û d µÄɾ³ýÃüÁîµÄ¸ñʽÈçÏ£º + + d motion + + ÆäÖУº + d - ɾ³ý²Ù×÷·û¡£ + motion - ²Ù×÷·ûµÄ²Ù×÷¶ÔÏó(ÔÚÏÂÃæÁгö)¡£ + + Ò»¸ö¼ò¶ÌµÄ¶¯×÷ÁÐ±í£º + w - ´Óµ±Ç°¹â±êµ±Ç°Î»ÖÃÖ±µ½ÏÂÒ»¸öµ¥´ÊÆðʼ´¦£¬²»°üÀ¨ËüµÄµÚÒ»¸ö×Ö·û¡£ + e - ´Óµ±Ç°¹â±êµ±Ç°Î»ÖÃÖ±µ½µ¥´Êĩ⣬°üÀ¨×îºóÒ»¸ö×Ö·û¡£ + $ - ´Óµ±Ç°¹â±êµ±Ç°Î»ÖÃÖ±µ½µ±Ç°ÐÐÄ©¡£ + + Òò´ËÊäÈë de »á´Óµ±Ç°¹â±êλÖÃɾ³ýµ½µ¥´Êĩβ¡£ + +ÌرðÌáʾ£º + ¶ÔÓÚÓÂÓÚ̽Ë÷Õߣ¬ÇëÔÚÕý³£Ä£Ê½ÏÂÃæ½ö°´´ú±íÏàÓ¦¶¯×÷µÄ¼ü¶ø²»Ê¹ÓòÙ×÷·û£¬Äú + ½«¿´µ½¹â±êµÄÒƶ¯ÕýÈçÉÏÃæµÄ¶ÔÏóÁбíËù´ú±íµÄÒ»Ñù¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚ¶þ½²µÚËĽڣºÊ¹ÓüÆÊýÖ¸¶¨¶¯×÷ + + + ** ÔÚ¶¯×÷Ç°ÊäÈëÊý×Ö»áʹËüÖظ´ÄÇô¶à´Î¡£ ** + + 1. Òƶ¯¹â±êµ½ÏÂÃæ±ê¼ÇÓÐ ---> µÄÒ»ÐеĿªÊ¼¡£ + + 2. ÊäÈë 2w ʹ¹â±êÏòÇ°Òƶ¯Á½¸öµ¥´Ê¡£ + + 3. ÊäÈë 3e ʹ¹â±êÏòÇ°Òƶ¯µ½µÚÈý¸öµ¥´ÊµÄĩβ¡£ + + 4. ÊäÈë 0 (Êý×ÖÁã) Òƶ¯¹â±êµ½ÐÐÊס£ + + 5. Öظ´²½Öè2ºÍ²½Öè3£¬³¢ÊÔ²»Í¬µÄÊý×Ö¡£ + +---> This is just a line with words you can move around in. + + 6. Çë¼ÌÐøѧϰµÚ¶þ½²µÚÎå½Ú¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚ¶þ½²µÚÎå½Ú£ºÊ¹ÓüÆÊýÒÔɾ³ý¸ü¶à + + + ** ʹÓòÙ×÷·ûʱÊäÈëÊý×Ö¿ÉÒÔʹËüÖظ´ÄÇô¶à´Î¡£ ** + + ÉÏÃæÒѾ­Ìáµ½¹ýɾ³ý²Ù×÷·ûºÍ¶¯×÷µÄ×éºÏ£¬Äú¿ÉÒÔÔÚ×éºÏÖж¯×÷֮ǰ²åÈëÒ»¸öÊý×ÖÒÔ + ɾ³ý¸ü¶à£º + d number(Êý×Ö) motion + + 1. Òƶ¯¹â±êµ½ÏÂÃæ±ê¼ÇÓÐ ---> µÄÒ»ÐÐÖеÚÒ»¸ö´óд×Öĸµ¥´ÊÉÏ¡£ + + 2. ÊäÈë d2w ÒÔɾ³ýÁ½¸ö´óд×Öĸµ¥´Ê¡£ + + 3. Öظ´²½Öè1ºÍ²½Öè2£¬Ê¹Óò»Í¬µÄÊý×ÖʹµÃÓÃÒ»¸öÃüÁî¾ÍÄÜɾ³ýÈ«²¿ÏàÁڵĴóд×Öĸ + µ¥´Ê + +---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚ¶þ½²µÚÁù½Ú£º²Ù×÷ÕûÐÐ + + + ** ÊäÈë dd ¿ÉÒÔɾ³ýÕûÒ»¸öµ±Ç°ÐС£ ** + + ¼øÓÚÕûÐÐɾ³ýµÄ¸ßƵ¶È£¬Vi µÄÉè¼ÆÕß¾ö¶¨Òª¼ò»¯ÕûÐÐɾ³ý²Ù×÷£¬Äú½öÐèÒªÔÚͬһÐÐÉÏ + »÷´òÁ½´Î d ¾Í¿ÉÒÔɾ³ýµô¹â±êËùÔÚµÄÕûÐÐÁË¡£ + + 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæµÄ¶Ì¾ä¶ÎÂäÖеĵڶþÐС£ + 2. ÊäÈë dd ɾ³ý¸ÃÐС£ + 3. È»ºóÒƶ¯µ½µÚËÄÐС£ + 4. ½Ó×ÅÊäÈë 2dd ɾ³ýÁ½ÐС£ + +---> 1) Roses are red, +---> 2) Mud is fun, +---> 3) Violets are blue, +---> 4) I have a car, +---> 5) Clocks tell time, +---> 6) Sugar is sweet +---> 7) And so are you. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚ¶þ½²µÚÆß½Ú£º³·ÏûÀàÃüÁî + + + ** ÊäÈë u À´³·Ïû×îºóÖ´ÐеÄÃüÁÊäÈë U À´³·Ïû¶ÔÕûÐеÄÐ޸ġ£ ** + + 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐУ¬²¢½«ÆäÖÃÓÚµÚÒ»¸ö´íÎó + ´¦¡£ + 2. ÊäÈë x ɾ³ýµÚÒ»¸ö²»Ïë±£ÁôµÄ×Öĸ¡£ + 3. È»ºóÊäÈë u ³·Ïû×îºóÖ´ÐеÄ(Ò»´Î)ÃüÁî¡£ + 4. Õâ´ÎҪʹÓà x ÐÞÕý±¾ÐеÄËùÓдíÎó¡£ + 5. ÏÖÔÚÊäÈëÒ»¸ö´óдµÄ U £¬»Ö¸´µ½¸ÃÐеÄԭʼ״̬¡£ + 6. ½Ó×Ŷà´ÎÊäÈë u ÒÔ³·Ïû U ÒÔ¼°¸üÇ°µÄÃüÁî¡£ + 7. È»ºó¶à´ÎÊäÈë CTRL-R (ÏÈ°´Ï CTRL ¼ü²»·Å¿ª£¬½Ó×Å°´ R ¼ü)£¬ÕâÑù¾Í + ¿ÉÒÔÖØ×ö±»³·ÏûµÄÃüÁҲ¾ÍÊdz·Ïûµô³·ÏûÃüÁî¡£ + +---> Fiix the errors oon thhis line and reeplace them witth undo. + + 8. ÕâЩ¶¼ÊǷdz£ÓÐÓõÄÃüÁî¡£ÏÂÃæÊǵڶþ½²µÄС½áÁË¡£ + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚ¶þ½²Ð¡½á + + + 1. Óû´Óµ±Ç°¹â±êɾ³ýÖÁÏÂÒ»¸öµ¥´Ê£¬ÇëÊäÈ룺dw + 2. Óû´Óµ±Ç°¹â±êɾ³ýÖÁµ±Ç°ÐÐĩ⣬ÇëÊäÈ룺d$ + 3. Óûɾ³ýÕûÐУ¬ÇëÊäÈ룺dd + + 4. ÓûÖظ´Ò»¸ö¶¯×÷£¬ÇëÔÚËüÇ°Ãæ¼ÓÉÏÒ»¸öÊý×Ö£º2w + 5. ÔÚÕý³£Ä£Ê½ÏÂÐÞ¸ÄÃüÁîµÄ¸ñʽÊÇ£º + operator [number] motion + ÆäÖУº + operator - ²Ù×÷·û£¬´ú±íÒª×öµÄÊÂÇ飬±ÈÈç d ´ú±íɾ³ý + [number] - ¿ÉÒÔ¸½¼ÓµÄÊý×Ö£¬´ú±í¶¯×÷Öظ´µÄ´ÎÊý + motion - ¶¯×÷£¬´ú±íÔÚËù²Ù×÷µÄÎı¾ÉϵÄÒƶ¯£¬ÀýÈç w ´ú±íµ¥´Ê(word)£¬ + $ ´ú±íÐÐÄ©µÈµÈ¡£ + + 6. ÓûÒƶ¯¹â±êµ½ÐÐÊ×£¬Çë°´Êý×Ö0¼ü£º0 + + 7. Óû³·ÏûÒÔÇ°µÄ²Ù×÷£¬ÇëÊäÈ룺u (СдµÄu) + Óû³·ÏûÔÚÒ»ÐÐÖÐËù×öµÄ¸Ä¶¯£¬ÇëÊäÈ룺U (´óдµÄU) + Óû³·ÏûÒÔÇ°µÄ³·ÏûÃüÁ»Ö¸´ÒÔÇ°µÄ²Ù×÷½á¹û£¬ÇëÊäÈ룺CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÈý½²µÚÒ»½Ú£ºÖÃÈëÀàÃüÁî + + + ** ÊäÈë p ½«×îºóÒ»´Îɾ³ýµÄÄÚÈÝÖÃÈë¹â±êÖ®ºó¡£ ** + + 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæµÚÒ»¸ö±ê¼ÇÓÐ ---> µÄÒ»ÐС£ + + 2. ÊäÈë dd ½«¸ÃÐÐɾ³ý£¬ÕâÑù»á½«¸ÃÐб£´æµ½ Vim µÄÒ»¸ö¼Ä´æÆ÷ÖС£ + + 3. ½Ó׎«¹â±êÒƶ¯µ½ c) Ò»ÐУ¬¼´×¼±¸ÖÃÈëµÄλÖõÄÉÏ·½¡£¼Çס£ºÊÇÉÏ·½Å¶¡£ + + 4. È»ºóÔÚÕý³£Ä£Ê½ÏÂ(¼ü½øÈë)ÊäÈë p ½«¸ÃÐÐÕ³ÌùÖÃÈë¡£ + + 5. Öظ´²½Öè2ÖÁ²½Öè4£¬½«ËùÓеÄÐÐÒÀÐò·ÅÖõ½ÕýÈ·µÄλÖÃÉÏ¡£ + +---> d) Can you learn too? +---> b) Violets are blue, +---> c) Intelligence is learned, +---> a) Roses are red, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÈý½²µÚ¶þ½Ú£ºÌæ»»ÀàÃüÁî + + + ** ÊäÈë r ºÍÒ»¸ö×Ö·ûÌæ»»¹â±êËùÔÚλÖõÄ×Ö·û¡£** + + 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐС£ + + 2. ÇëÒƶ¯¹â±êµ½µÚÒ»¸ö³ö´íµÄλÖᣠ+ + 3. ½Ó×ÅÊäÈë r ºÍÒªÌæ»»³ÉµÄ×Ö·û£¬ÕâÑù¾ÍÄܽ«´íÎóÌæ»»µôÁË¡£ + + 4. Öظ´²½Öè2ºÍ²½Öè3£¬Ö±µ½µÚÒ»ÐÐÒѾ­ÐÞ¸ÄÍê±Ï¡£ + +---> Whan this lime was tuoed in, someone presswd some wrojg keys! +---> When this line was typed in, someone pressed some wrong keys! + + 5. È»ºóÎÒÃǼÌÐøѧϰµÚÈý½²µÚÈý½Ú¡£ + +ÌرðÌáʾ£ºÇмÇÄúÒªÔÚʹÓÃÖÐѧϰ£¬¶ø²»ÊÇÔÚ¼ÇÒäÖÐѧϰ¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÈý½²µÚÈý½Ú£º¸ü¸ÄÀàÃüÁî + + + ** Òª¸Ä±äÎı¾Ö±µ½Ò»¸öµ¥´ÊµÄĩ⣬ÇëÊäÈë ce ** + + 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐС£ + + 2. ½Ó×Űѹâ±ê·ÅÔÚµ¥´Ê lubw µÄ×Öĸ u µÄλÖÃÄÇÀï¡£ + + 3. È»ºóÊäÈë cw ÒÔ¼°ÕýÈ·µÄµ¥´Ê(ÔÚ±¾ÀýÖÐÊÇÊäÈë ine )¡£ + + 4. ×îºó°´ ¼ü£¬È»ºó¹â±ê¶¨Î»µ½ÏÂÒ»¸ö´íÎóµÚÒ»¸ö×¼±¸¸ü¸ÄµÄ×Öĸ´¦¡£ + + 5. Öظ´²½Öè3ºÍ²½Öè4£¬Ö±µ½µÚÒ»¸ö¾ä×ÓÍêÈ«À×ͬµÚ¶þ¸ö¾ä×Ó¡£ + +---> This lubw has a few wptfd that mrrf changing usf the change operator. +---> This line has a few words that need changing using the change operator. + +Ìáʾ£ºÇë×¢Òâ ce ÃüÁî²»½ö½öÊÇɾ³ýÁËÒ»¸öµ¥´Ê£¬ËüÒ²ÈÃÄú½øÈë²åÈëģʽÁË¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÈý½²µÚËĽڣºÊ¹ÓÃc¸ü¸Ä¸ü¶à + + + ** ¸ü¸ÄÀà²Ù×÷·û¿ÉÒÔÓëɾ³ýÖÐʹÓõÄͬÑùµÄ¶¯×÷ÅäºÏʹÓᣠ** + + 1. ¸ü¸ÄÀà²Ù×÷·ûµÄ¹¤×÷·½Ê½¸úɾ³ýÀàÊÇÒ»Öµġ£²Ù×÷¸ñʽÊÇ£º + + c [number] motion + + 2. ¶¯×÷²ÎÊý(motion)Ò²ÊÇÒ»ÑùµÄ£¬±ÈÈç w ´ú±íµ¥´Ê£¬$´ú±íÐÐÄ©µÈµÈ¡£ + + 3. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐС£ + + 4. ½Ó׎«¹â±êÒƶ¯µ½µÚÒ»¸ö´íÎ󴦡£ + + 5. È»ºóÊäÈë c$ ʹµÃ¸ÃÐÐʣϵIJ¿·Ö¸üÕýµÃͬµÚ¶þÐÐÒ»Ñù¡£×îºó°´ ¼ü¡£ + +---> The end of this line needs some help to make it like the second. +---> The end of this line needs to be corrected using the c$ command. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÈý½²Ð¡½á + + + 1. ÒªÖØÐÂÖÃÈëÒѾ­É¾³ýµÄÎı¾ÄÚÈÝ£¬Ç밴Сд×Öĸ p ¼ü¡£¸Ã²Ù×÷¿ÉÒÔ½«ÒÑɾ³ý + µÄÎı¾ÄÚÈÝÖÃÓÚ¹â±êÖ®ºó¡£Èç¹û×îºóÒ»´Îɾ³ýµÄÊÇÒ»¸öÕûÐУ¬ÄÇô¸ÃÐн«Öà + ÓÚµ±Ç°¹â±êËùÔÚÐеÄÏÂÒ»ÐС£ + + 2. ÒªÌæ»»¹â±êËùÔÚλÖõÄ×Ö·û£¬ÇëÊäÈëСдµÄ r ºÍÒªÌæ»»µôԭλÖÃ×Ö·ûµÄÐÂ×Ö + ·û¼´¿É¡£ + + 3. ¸ü¸ÄÀàÃüÁîÔÊÐíÄú¸Ä±ä´Óµ±Ç°¹â±êËùÔÚλÖÃÖ±µ½¶¯×÷ָʾµÄλÖÃÖмäµÄÎı¾¡£ + ±ÈÈçÊäÈë ce ¿ÉÒÔÌæ»»µ±Ç°¹â±êµ½µ¥´ÊµÄĩβµÄÄÚÈÝ£»ÊäÈë c$ ¿ÉÒÔÌæ»»µ± + Ç°¹â±êµ½ÐÐÄ©µÄÄÚÈÝ¡£ + + 4. ¸ü¸ÄÀàÃüÁîµÄ¸ñʽÊÇ£º + + c [number] motion + +ÏÖÔÚÎÒÃǼÌÐøѧϰÏÂÒ»½²¡£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚËĽ²µÚÒ»½Ú£º¶¨Î»¼°Îļþ״̬ + + ** ÊäÈë CTRL-G ÏÔʾµ±Ç°±à¼­ÎļþÖе±Ç°¹â±êËùÔÚÐÐλÖÃÒÔ¼°Îļþ״̬ÐÅÏ¢¡£ + ÊäÈë´óд G ÔòÖ±½ÓÌøתµ½ÎļþÖеÄijһָ¶¨ÐС£** + + Ìáʾ£ºÇмÇÒªÏÈͨ¶Á±¾½ÚÄÚÈÝ£¬Ö®ºó²Å¿ÉÒÔÖ´ÐÐÒÔϲ½Öè!!! + + 1. °´Ï CTRL ¼ü²»·Å¿ªÈ»ºó°´ g ¼ü¡£ÎÒÃdzÆÕâ¸ö¼ü×éºÏΪ CTRL-G¡£ + Äú»á¿´µ½Ò³Ãæ×îµ×²¿³öÏÖÒ»¸ö״̬ÐÅÏ¢ÐУ¬ÏÔʾµÄÄÚÈÝÊǵ±Ç°±à¼­µÄÎļþÃû + ºÍÎļþÖйâ±êλÖá£Çë¼ÇסÐкţ¬Ëü»áÔÚ²½Öè3ÖÐÓõ½¡£ + +Ìáʾ£ºÄúÒ²Ðí»áÔÚÆÁÄ»µÄÓÒϽǿ´µ½¹â±êλÖã¬Õâ»áÔÚ 'ruler' Ñ¡ÏîÉèÖÃʱ·¢Éú + (²Î¼û :help 'ruler') + + 2. ÊäÈë´óд G ¿ÉÒÔʹµÃµ±Ç°¹â±êÖ±½ÓÌøתµ½Îļþ×îºóÒ»ÐС£ + ÊäÈë gg ¿ÉÒÔʹµÃµ±Ç°¹â±êÖ±½ÓÌøתµ½ÎļþµÚÒ»ÐС£ + + 3. ÊäÈëÄúÔøÍ£ÁôµÄÐкţ¬È»ºóÊäÈë´óд G¡£ÕâÑù¾Í¿ÉÒÔ·µ»Øµ½ÄúµÚÒ»´Î°´Ï + CTRL-G ʱËùÔÚµÄÐÐÁË¡£ + + 4. Èç¹ûÄú¾õµÃûÎÊÌâµÄ»°£¬ÇëÖ´Ðв½Öè1ÖÁ²½Öè3µÄ²Ù×÷½øÐÐÁ·Ï°¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚËĽ²µÚ¶þ½Ú£ºËÑË÷ÀàÃüÁî + + + ** ÊäÈë / ¼ÓÉÏÒ»¸ö×Ö·û´®¿ÉÒÔÓÃÒÔÔÚµ±Ç°ÎļþÖвéÕÒ¸Ã×Ö·û´®¡£** + + 1. ÔÚÕý³£Ä£Ê½ÏÂÊäÈë / ×Ö·û¡£Äú´Ëʱ»á×¢Òâµ½¸Ã×Ö·ûºÍ¹â±ê¶¼»á³öÏÖÔÚÆÁÄ»µ× + ²¿£¬Õâ¸ú : ÃüÁîÊÇÒ»ÑùµÄ¡£ + + 2. ½Ó×ÅÊäÈë errroor <»Ø³µ>¡£ÄǸöerrroor¾ÍÊÇÄúÒª²éÕÒµÄ×Ö·û´®¡£ + + 3. Òª²éÕÒͬÉÏÒ»´ÎµÄ×Ö·û´®£¬Ö»ÐèÒª°´ n ¼ü¡£ÒªÏòÏà·´·½Ïò²éÕÒͬÉÏÒ»´ÎµÄ×Ö + ·û´®£¬ÇëÊäÈë´óд N ¼´¿É¡£ + + 4. Èç¹ûÄúÏëÄæÏò²éÕÒ×Ö·û´®£¬ÇëʹÓà ? ´úÌæ / ½øÐС£ + + 5. Òª»Øµ½Äú֮ǰµÄλÖð´ CTRL-O (°´×¡ Ctrl ¼ü²»·Åͬʱ°´ÏÂ×Öĸ o)¡£Öظ´°´¿ÉÒÔ + »ØÍ˸ü¶à²½¡£CTRL-I »áÌøתµ½½ÏеÄλÖᣠ+ +---> "errroor" is not the way to spell error; errroor is an error. +Ìáʾ£ºÈç¹û²éÕÒÒѾ­µ½´ïÎļþĩ⣬²éÕÒ»á×Ô¶¯´ÓÎļþÍ·²¿¼ÌÐø²éÕÒ£¬³ý·Ç + 'wrapscan' Ñ¡Ïî±»¸´Î»¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚËĽ²µÚÈý½Ú£ºÅä¶ÔÀ¨ºÅµÄ²éÕÒ + + + ** ÊäÈë % ¿ÉÒÔ²éÕÒÅä¶ÔµÄÀ¨ºÅ )¡¢]¡¢}¡£** + + 1. °Ñ¹â±ê·ÅÔÚ±¾½ÚÏÂÃæ±ê¼ÇÓÐ --> ÄÇÒ»ÐÐÖеÄÈκÎÒ»¸ö (¡¢[ »ò { ´¦¡£ + + 2. ½Ó×Å°´ % ×Ö·û¡£ + + 3. ´Ëʱ¹â±êµÄλÖÃÓ¦µ±ÊÇÔÚÅä¶ÔµÄÀ¨ºÅ´¦¡£ + + 4. Ôٴΰ´ % ¾Í¿ÉÒÔÌø»ØÅä¶ÔµÄµÚÒ»¸öÀ¨ºÅ´¦¡£ + + 5. Òƶ¯¹â±êµ½ÁíÒ»¸ö (¡¢)¡¢[¡¢]¡¢{ »ò } ´¦£¬°´ % ²é¿´ÆäËù×÷ËùΪ¡£ + +---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + + +Ìáʾ£ºÔÚ³ÌÐòµ÷ÊÔʱ£¬Õâ¸ö¹¦ÄÜÓÃÀ´²éÕÒ²»Åä¶ÔµÄÀ¨ºÅÊǺÜÓÐÓõġ£ + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚËĽ²µÚËĽڣºÌæ»»ÃüÁî + + + ** ÊäÈë :s/old/new/g ¿ÉÒÔÌæ»» old Ϊ new¡£** + + 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐС£ + + 2. ÊäÈë :s/thee/the <»Ø³µ> ¡£Çë×¢Òâ¸ÃÃüÁîÖ»¸Ä±ä¹â±êËùÔÚÐеĵÚÒ»¸öÆ¥Åä + ´®¡£ + + 3. ÊäÈë :s/thee/the/g ÔòÊÇÌ滻ȫÐеÄÆ¥Åä´®£¬¸ÃÐÐÖÐËùÓÐµÄ "thee" ¶¼»á±» + ¸Ä±ä¡£ + +---> thee best time to see thee flowers is in thee spring. + + 4. ÒªÌæ»»Á½ÐÐÖ®¼ä³öÏÖµÄÿ¸öÆ¥Åä´®£¬Çë + ÊäÈë :#,#s/old/new/g ÆäÖÐ #,# ´ú±íµÄÊÇÌæ»»²Ù×÷µÄÈô¸ÉÐÐÖÐ + Ê×βÁ½ÐеÄÐкš£ + ÊäÈë :%s/old/new/g ÔòÊÇÌæ»»Õû¸öÎļþÖеÄÿ¸öÆ¥Åä´®¡£ + ÊäÈë :%s/old/new/gc »áÕÒµ½Õû¸öÎļþÖеÄÿ¸öÆ¥Åä´®£¬²¢ÇÒ¶Ôÿ¸öÆ¥Åä´® + ÌáʾÊÇ·ñ½øÐÐÌæ»»¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚËĽ²Ð¡½á + + + 1. CTRL-G ÓÃÓÚÏÔʾµ±Ç°¹â±êËùÔÚλÖúÍÎļþ״̬ÐÅÏ¢¡£ + G ÓÃÓÚ½«¹â±êÌøתÖÁÎļþ×îºóÒ»ÐС£ + ÏÈÇÃÈëÒ»¸öÐкÅÈ»ºóÊäÈë´óд G ÔòÊǽ«¹â±êÒƶ¯ÖÁ¸ÃÐкŴú±íµÄÐС£ + gg ÓÃÓÚ½«¹â±êÌøתÖÁÎļþµÚÒ»ÐС£ + + 2. ÊäÈë / È»ºó½ôËæÒ»¸ö×Ö·û´®ÊÇÔÚµ±Ç°Ëù±à¼­µÄÎĵµÖÐÕýÏò²éÕÒ¸Ã×Ö·û´®¡£ + ÊäÈë ? È»ºó½ôËæÒ»¸ö×Ö·û´®ÔòÊÇÔÚµ±Ç°Ëù±à¼­µÄÎĵµÖз´Ïò²éÕÒ¸Ã×Ö·û´®¡£ + Íê³ÉÒ»´Î²éÕÒÖ®ºó°´ n ¼üÊÇÖظ´ÉÏÒ»´ÎµÄÃüÁ¿ÉÔÚͬһ·½ÏòÉϲé + ÕÒÏÂÒ»¸öÆ¥Åä×Ö·û´®ËùÔÚ£»»òÕß°´´óд N ÏòÏà·´·½Ïò²éÕÒÏÂһƥÅä×Ö·û´®ËùÔÚ¡£ + CTRL-O ´øÄúÌøת»Ø½Ï¾ÉµÄλÖã¬CTRL-I Ôò´øÄúµ½½ÏеÄλÖᣠ+ + 3. Èç¹û¹â±êµ±Ç°Î»ÖÃÊÇÀ¨ºÅ(¡¢)¡¢[¡¢]¡¢{¡¢}£¬°´ % »á½«¹â±êÒƶ¯µ½Åä¶ÔµÄÀ¨ºÅÉÏ¡£ + + 4. ÔÚÒ»ÐÐÄÚÌ滻ͷһ¸ö×Ö·û´® old ΪеÄ×Ö·û´® new£¬ÇëÊäÈë :s/old/new + ÔÚÒ»ÐÐÄÚÌæ»»ËùÓеÄ×Ö·û´® old ΪеÄ×Ö·û´® new£¬ÇëÊäÈë :s/old/new/g + ÔÚÁ½ÐÐÄÚÌæ»»ËùÓеÄ×Ö·û´® old ΪеÄ×Ö·û´® new£¬ÇëÊäÈë :#,#s/old/new/g + ÔÚÎļþÄÚÌæ»»ËùÓеÄ×Ö·û´® old ΪеÄ×Ö·û´® new£¬ÇëÊäÈë :%s/old/new/g + ½øÐÐÈ«ÎÄÌ滻ʱѯÎÊÓû§È·ÈÏÿ¸öÌæ»»ÐèÌí¼Ó c ±êÖ¾ :%s/old/new/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÎå½²µÚÒ»½Ú£ºÔÚ VIM ÄÚÖ´ÐÐÍⲿÃüÁîµÄ·½·¨ + + + ** ÊäÈë :! È»ºó½ô½Ó×ÅÊäÈëÒ»¸öÍⲿÃüÁî¿ÉÒÔÖ´ÐиÃÍⲿÃüÁî¡£** + + 1. °´ÏÂÎÒÃÇËùÊìϤµÄ : ÃüÁîʹ¹â±êÒƶ¯µ½ÆÁÄ»µ×²¿¡£ÕâÑùÄú¾Í¿ÉÒÔÊäÈëÒ»ÐÐÃüÁîÁË¡£ + + 2. ½Ó×ÅÊäÈë¸Ð̾ºÅ ! Õâ¸ö×Ö·û£¬ÕâÑù¾ÍÔÊÐíÄúÖ´ÐÐÍⲿµÄ shell ÃüÁîÁË¡£ + + 3. ÎÒÃÇÒÔ ls ÃüÁîΪÀý¡£ÊäÈë !ls <»Ø³µ> ¡£¸ÃÃüÁî¾Í»áÁоٳöÄúµ±Ç°Ä¿Â¼µÄ + ÄÚÈÝ£¬¾ÍÈçͬÄúÔÚÃüÁîÐÐÌáʾ·ûÏÂÊäÈë ls ÃüÁîµÄ½á¹ûÒ»Ñù¡£Èç¹û !ls ûÆð + ×÷Óã¬Äú¿ÉÒÔÊÔÊÔ :!dir ¿´¿´¡£ + +Ìáʾ£ºËùÓеÄÍⲿÃüÁ¿ÉÒÔÒÔÕâÖÖ·½Ê½Ö´ÐУ¬°üÀ¨´øÃüÁîÐвÎÊýµÄÄÇЩ¡£ + +Ìáʾ£ºËùÓÐµÄ : ÃüÁ±ØÐëÒÔÇà <»Ø³µ> ¼ü½áÊø¡£´Ó½ñÒÔºóÎÒÃǾͲ»»á×ÜÊÇÌáµ½ÕâÒ»µã + ÁË¡£ + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÎå½²µÚ¶þ½Ú£º¹ØÓÚ±£´æÎļþµÄ¸ü¶àÐÅÏ¢ + + + ** Òª½«¶ÔÎļþµÄ¸Ä¶¯±£´æµ½ÎļþÖУ¬ÇëÊäÈë :w FILENAME ¡£** + + 1. ÊäÈë :!dir »òÕß :!ls »ñÖªµ±Ç°Ä¿Â¼µÄÄÚÈÝ¡£ÄúÓ¦µ±ÒÑÖªµÀ×îºó»¹µÃÇà + <»Ø³µ> °É¡£ + + 2. Ñ¡ÔñÒ»¸öδ±»Óõ½µÄÎļþÃû£¬±ÈÈç TEST¡£ + + 3. ½Ó×ÅÊäÈë :w TEST (´Ë´¦ TEST ÊÇÄúËùÑ¡ÔñµÄÎļþÃû¡£) + + 4. ¸ÃÃüÁî»áÒÔ TEST ΪÎļþÃû±£´æÕû¸öÎļþ (Vim ½Ì³Ì)¡£ÎªÁËÑéÖ¤ÕâÒ»µã£¬ + ÇëÔÙ´ÎÊäÈë :!dir »ò :!ls ²é¿´ÄúµÄĿ¼ÁбíÄÚÈÝ¡£ + +Çë×¢Ò⣺Èç¹ûÄúÍ˳ö Vim È»ºóÔÚÒÔÃüÁî vim TEST ÔÙ´ÎÆô¶¯ Vim£¬ÄÇô¸ÃÎļþÄÚ + ÈÝÓ¦¸ÃͬÄú±£´æʱµÄÎļþÄÚÈÝÊÇÍêÈ«Ò»ÑùµÄ¡£ + + 5. ÏÖÔÚÄú¿ÉÒÔɾ³ý TEST ÎļþÁË¡£ÔÚ MS-DOS Ï£¬ÇëÊäÈ룺 :!del TEST + ÔÚ Unix Ï£¬ÇëÊäÈ룺 :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÎå½²µÚÈý½Ú£ºÒ»¸ö¾ßÓÐÑ¡ÔñÐԵı£´æÃüÁî + + + ** Òª±£´æÎļþµÄ²¿·ÖÄÚÈÝ£¬ÇëÊäÈë v motion :w FILENAME ** + + 1. Òƶ¯¹â±êµ½±¾ÐС£ + + 2. ½Ó×Å°´ v ¼ü£¬½«¹â±êÒƶ¯ÖÁÏÂÃæµÚÎå¸öÌõÄ¿ÉÏ¡£Äú»á×¢Òâµ½Ö®¼äµÄÎı¾±»¸ßÁÁÁË¡£ + + 3. È»ºó°´ : ×Ö·û¡£Äú½«¿´µ½ÆÁÄ»µ×²¿»á³öÏÖ :'<,'> ¡£ + + 4. ÏÖÔÚÇëÊäÈë w TEST£¬ÆäÖÐ TEST ÊÇÒ»¸öδ±»Ê¹ÓõÄÎļþÃû¡£È·ÈÏÄú¿´µ½ÁË + :'<,'>w TEST Ö®ºó°´ <»Ø³µ> ¼ü¡£ + + 5. Õâʱ Vim »á°ÑÑ¡ÖеÄÐÐдÈëµ½ÒÔ TEST ÃüÃûµÄÎļþÖÐÈ¥¡£Ê¹Óà :!dir »ò :!ls + È·ÈÏÎļþ±»ÕýÈ·±£´æ¡£Õâ´ÎÏȱðɾ³ýËü£¡ÎÒÃÇÔÚÏÂÒ»½²ÖлáÓõ½Ëü¡£ + +Ìáʾ£º°´ v ¼üʹ Vim ½øÈë¿ÉÊÓģʽ½øÐÐÑ¡È¡¡£Äú¿ÉÒÔËÄ´¦Òƶ¯¹â±êʹѡȡÇøÓò±ä´ó»ò + ±äС¡£½Ó×ÅÄú¿ÉÒÔʹÓÃÒ»¸ö²Ù×÷·û¶ÔÑ¡ÖÐÎı¾½øÐвÙ×÷¡£ÀýÈ磬°´ d ¼ü»áɾ³ý + Ñ¡ÖеÄÎı¾ÄÚÈÝ¡£ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÎå½²µÚËĽڣºÌáÈ¡ºÍºÏ²¢Îļþ + + + ** ÒªÏòµ±Ç°ÎļþÖвåÈëÁíÍâµÄÎļþµÄÄÚÈÝ£¬ÇëÊäÈë :r FILENAME ** + + 1. Çë°Ñ¹â±êÒƶ¯µ½±¾ÐÐÉÏÃæÒ»ÐС£ + +ÌرðÌáʾ£ºÖ´Ðв½Öè2Ö®ºóÄú½«¿´µ½µÚÎå½²µÚÈý½ÚµÄÎÄ×Ö£¬Çë½ìʱÍùÏÂÒƶ¯ + ÒÔÔٴο´µ½±¾½²ÄÚÈÝ¡£ + + 2. ½Ó×Åͨ¹ýÃüÁî :r TEST ½«Ç°Ãæ´´½¨µÄÃûΪ TEST µÄÎļþÌáÈ¡½øÀ´¡£ + ÄúËùÌáÈ¡½øÀ´µÄÎļþ½«´Ó¹â±êËùÔÚλÖô¦¿ªÊ¼ÖÃÈë¡£ + + 3. ΪÁËÈ·ÈÏÎļþÒѾ­ÌáÈ¡³É¹¦£¬Òƶ¯¹â±ê»Øµ½Ô­À´µÄλÖþͿÉÒÔ×¢ÒâÓÐÁ½·ÝµÚ + Îå½²µÚÈý½ÚµÄÄÚÈÝ£¬Ò»·ÝÊÇԭʼÄÚÈÝ£¬ÁíÍâÒ»·ÝÊÇÀ´×ÔÎļþµÄ¸±±¾¡£ + +Ìáʾ£ºÄú»¹¿ÉÒÔ¶ÁÈ¡ÍⲿÃüÁîµÄÊä³ö¡£ÀýÈ磬 :r !ls ¿ÉÒÔ¶ÁÈ¡ ls ÃüÁîµÄÊä³ö£¬²¢ + °ÑËü·ÅÖÃÔÚ¹â±êÏÂÃæ¡£ + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÎ彲С½á + + + 1. :!command ÓÃÓÚÖ´ÐÐÒ»¸öÍⲿÃüÁî command¡£ + + Ç뿴һЩʵ¼ÊÀý×Ó£º + (MS-DOS) (Unix) + :!dir :!ls - ÓÃÓÚÏÔʾµ±Ç°Ä¿Â¼µÄÄÚÈÝ¡£ + :!del FILENAME :!rm FILENAME - ÓÃÓÚɾ³ýÃûΪ FILENAME µÄÎļþ¡£ + + 2. :w FILENAME ¿É½«µ±Ç° VIM ÖÐÕýÔڱ༭µÄÎļþ±£´æµ½ÃûΪ FILENAME µÄÎÄ + ¼þÖС£ + + 3. v motion :w FILENAME ¿É½«µ±Ç°±à¼­ÎļþÖпÉÊÓģʽÏÂÑ¡ÖеÄÄÚÈݱ£´æµ½Îļþ + FILENAME ÖС£ + + 4. :r FILENAME ¿ÉÌáÈ¡´ÅÅÌÎļþ FILENAME ²¢½«Æä²åÈëµ½µ±Ç°ÎļþµÄ¹â±êλÖà + ºóÃæ¡£ + + 5. :r !dir ¿ÉÒÔ¶ÁÈ¡ dir ÃüÁîµÄÊä³ö²¢½«Æä·ÅÖõ½µ±Ç°ÎļþµÄ¹â±êλÖúóÃæ¡£ + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÁù½²µÚÒ»½Ú£º´ò¿ªÀàÃüÁî + + + ** ÊäÈë o ½«ÔÚ¹â±êµÄÏ·½´ò¿ªÐµÄÒ»Ðв¢½øÈë²åÈëģʽ¡£** + + 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄÄÇÒ»ÐС£ + + 2. ½Ó×ÅÊäÈëСдµÄ o ÔÚ¹â±ê *Ï·½* ´ò¿ªÐµÄÒ»ÐУ¬Õâ¸öÃüÁî»áʹÄú + ½øÈë²åÈëģʽ¡£ + + 3. È»ºóÊäÈëһЩÎÄ×Ö£¬Ö®ºó°´ ¼üÍ˳ö²åÈëģʽ¶ø½øÈëÕý³£Ä£Ê½¡£ + +---> After typing o the cursor is placed on the open line in Insert mode. + + 4. ΪÁËÔÚ¹â±ê *ÉÏ·½* ´ò¿ªÐµÄÒ»ÐУ¬Ö»ÐèÒªÊäÈë´óдµÄ O ¶ø²»ÊÇСдµÄ o + ¾Í¿ÉÒÔÁË¡£ÇëÔÚÏÂÐвâÊÔһϰɡ£ + +---> Open up a line above this by typing O while the cursor is on this line. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÁù½²µÚ¶þ½Ú£º¸½¼ÓÀàÃüÁî + + + ** ÊäÈë a ½«¿ÉÔÚ¹â±êÖ®ºó²åÈëÎı¾¡£ ** + + 1. ÇëÔÚÕý³£Ä£Ê½Ï½«¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐеÄÐÐÊס£ + + 2. ½Ó×ÅÊäÈë e Ö±µ½¹â±êλÓÚ li µÄĩβ¡£ + + 3. ÊäÈëСдµÄ a Ôò¿ÉÔÚ¹â±êÖ®ºó²åÈëÎı¾ÁË¡£ + + 4. ½«µ¥´Ê²¹³äÍêÕû£¬¾ÍÏñÏÂÒ»ÐÐÖеÄÄÇÑù¡£Ö®ºó°´ ¼üÍ˳ö²åÈëģʽ»Øµ½ + Õý³£Ä£Ê½¡£ + + 5. ʹÓà e Òƶ¯¹â±êµ½ÏÂÒ»²½²»ÍêÕûµÄµ¥´Ê£¬Öظ´²½Öè3ºÍ²½Öè4¡£ + +---> This li will allow you to pract appendi text to a line. +---> This line will allow you to practice appending text to a line. + +Ìáʾ£ºa¡¢i ºÍ A ¶¼»á´øÄú½øÈë²åÈëģʽ£¬Î©Ò»µÄÇø±ðÔÚÓÚ×Ö·û²åÈëµÄλÖᣠ+ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÁù½²µÚÈý½Ú£ºÁíÍâÒ»¸öÖû»ÀàÃüÁîµÄ°æ±¾ + + + ** ÊäÈë´óдµÄ R ¿ÉÁ¬ÐøÌæ»»¶à¸ö×Ö·û¡£** + + 1. Ç뽫¹â±êÒƶ¯µ½±¾½ÚÖÐÏÂÃæ±ê¼ÇÓÐ ---> µÄµÚÒ»ÐС£Òƶ¯¹â±êµ½µÚÒ»¸ö xxx µÄ + ÆðʼλÖᣠ+ + 2. È»ºóÊäÈë´óдµÄ R ¿ªÊ¼°ÑµÚÒ»ÐÐÖеIJ»Í¬ÓÚµÚ¶þÐеÄÊ£Óà×Ö·ûÖðÒ»ÊäÈ룬¾Í + ¿ÉÒÔÈ«²¿Ìæ»»µôÔ­ÓеÄ×Ö·û¶øʹµÃµÚÒ»ÐÐÍêÈ«À×ͬµÚ¶þÐÐÁË¡£ + + 3. ½Ó×Å°´ ¼üÍ˳öÌ滻ģʽ»Øµ½Õý³£Ä£Ê½¡£Äú¿ÉÒÔ×¢Òâµ½ÉÐδÌæ»»µÄÎı¾ + ÈÔÈ»±£³ÖÔ­×´¡£ + + 4. Öظ´ÒÔÉϲ½Ö裬½«Ê£ÓàµÄ xxx Ò²Ìæ»»µô¡£ + +---> Adding 123 to xxx gives you xxx. +---> Adding 123 to 456 gives you 579. + +Ìáʾ£ºÌ滻ģʽÓë²åÈëģʽÏàËÆ£¬²»¹ýÿ¸öÊäÈëµÄ×Ö·û¶¼»áɾ³ýÒ»¸öÒÑÓеÄ×Ö·û¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÁù½²µÚËĽڣº¸´ÖÆÕ³ÌùÎı¾ + + + ** ʹÓòÙ×÷·û y ¸´ÖÆÎı¾£¬Ê¹Óà p Õ³ÌùÎı¾ ** + + 1. ¶¨Î»µ½ÏÂÃæ±ê¼ÇÓÐ ---> µÄÒ»ÐУ¬½«¹â±êÒƶ¯µ½ "a)" Ö®ºó¡£ + + 2. ½Ó×ÅʹÓà v ½øÈë¿ÉÊÓģʽ£¬Òƶ¯¹â±êµ½ "first" µÄÇ°Ãæ¡£ + + 3. ÏÖÔÚÊäÈë y ÒÔ³é³ö(¸´ÖÆ)¸ßÁÁµÄÎı¾¡£ + + 4. È»ºóÒƶ¯¹â±êµ½ÏÂÒ»ÐеÄĩβ£ºj$ + + 5. ½Ó×ÅÊäÈë p ÒÔ·ÅÖÃ(Õ³Ìù)¸´ÖÆÁ˵ÄÎı¾¡£È»ºóÊäÈ룺a second ¡£ + + 6. ʹÓÿÉÊÓģʽѡÖÐ " item."£¬Óà y ¸´ÖÆ£¬ÔÙÓà j$ ½«¹â±êÒƶ¯µ½ÏÂÒ»ÐÐĩ⣬ + Óà p ½«Îı¾Õ³Ìùµ½ÄÇÀï¡£ + +---> a) this is the first item. + b) + + Ìáʾ£ºÄú»¹¿ÉÒÔ°Ñ y µ±×÷²Ù×÷·ûÀ´Ê¹Óã»ÀýÈç yw ¿ÉÒÔÓÃÀ´¸´ÖÆÒ»¸öµ¥´Ê¡£ + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÁù½²µÚÎå½Ú£ºÉèÖÃÀàÃüÁîµÄÑ¡Ïî + + + ** ÉèÖÿÉʹ²éÕÒ»òÕßÌæ»»¿ÉºöÂÔ´óСдµÄÑ¡Ïî ** + + 1. Òª²éÕÒµ¥´Ê ignore ¿ÉÔÚÕý³£Ä£Ê½ÏÂÊäÈë /ignore <»Ø³µ>¡£ + ÒªÖظ´²éÕҸôʣ¬¿ÉÒÔÖظ´°´ n ¼ü¡£ + + 2. È»ºóÉèÖà ic Ñ¡Ïî(Ignore Case£¬ºöÂÔ´óСд)£¬ÇëÊäÈ룺 :set ic + + 3. ÏÖÔÚ¿ÉÒÔͨ¹ý¼üÈë n ¼üÔٴβéÕÒµ¥´Ê ignore¡£×¢Òâµ½ Ignore ºÍ IGNORE ÏÖÔÚ + Ò²±»ÕÒµ½ÁË¡£ + + 4. È»ºóÉèÖà hlsearch ºÍ incsearch ÕâÁ½¸öÑ¡ÏÇëÊäÈ룺 :set hls is + + 5. ÏÖÔÚ¿ÉÒÔÔÙ´ÎÊäÈë²éÕÒÃüÁ¿´¿´»áÓÐʲôЧ¹û£º /ignore <»Ø³µ> + + 6. Òª½ûÓúöÂÔ´óСд£¬ÇëÊäÈ룺 :set noic + +Ìáʾ£ºÒªÒƳýÆ¥ÅäÏîµÄ¸ßÁÁÏÔʾ£¬ÇëÊäÈ룺 :nohlsearch +Ìáʾ£ºÈç¹ûÄúÏëÒª½öÔÚÒ»´Î²éÕÒʱºöÂÔ×Öĸ´óСд£¬Äú¿ÉÒÔʹÓà \c£º + /ignore\c <»Ø³µ> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÁù½²Ð¡½á + + 1. ÊäÈëСдµÄ o ¿ÉÒÔÔÚ¹â±êÏ·½´ò¿ªÐµÄÒ»Ðв¢½øÈë²åÈëģʽ¡£ + ÊäÈë´óдµÄ O ¿ÉÒÔÔÚ¹â±êÉÏ·½´ò¿ªÐµÄÒ»ÐС£ + + 2. ÊäÈëСдµÄ a ¿ÉÒÔÔÚ¹â±êËùÔÚλÖÃÖ®ºó²åÈëÎı¾¡£ + ÊäÈë´óдµÄ A ¿ÉÒÔÔÚ¹â±êËùÔÚÐеÄÐÐÄ©Ö®ºó²åÈëÎı¾¡£ + + 3. e ÃüÁî¿ÉÒÔʹ¹â±êÒƶ¯µ½µ¥´Êĩβ¡£ + + 4. ²Ù×÷·û y ¸´ÖÆÎı¾£¬p Õ³ÌùÏÈÇ°¸´ÖƵÄÎı¾¡£ + + 5. ÊäÈë´óдµÄ R ½«½øÈëÌ滻ģʽ£¬Ö±ÖÁ°´ ¼ü»Øµ½Õý³£Ä£Ê½¡£ + + 6. ÊäÈë :set xxx ¿ÉÒÔÉèÖà xxx Ñ¡ÏһЩÓÐÓõÄÑ¡ÏîÈçÏ£º + 'ic' 'ignorecase' ²éÕÒʱºöÂÔ×Öĸ´óСд + 'is' 'incsearch' ²éÕÒ¶ÌÓïʱÏÔʾ²¿·ÖÆ¥Åä + 'hls' 'hlsearch' ¸ßÁÁÏÔʾËùÓеÄÆ¥Åä¶ÌÓï + Ñ¡ÏîÃû¿ÉÒÔÓÃÍêÕû°æ±¾£¬Ò²¿ÉÒÔÓÃËõÂÔ°æ±¾¡£ + + 7. ÔÚÑ¡ÏîÇ°¼ÓÉÏ no ¿ÉÒԹرÕÑ¡Ï :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÆß½²µÚÒ»½Ú£º»ñÈ¡°ïÖúÐÅÏ¢ + + + ** ʹÓÃÔÚÏß°ïÖúϵͳ ** + + Vim ÓµÓÐÒ»¸öϸÖÂÈ«ÃæµÄÔÚÏß°ïÖúϵͳ¡£ÒªÆô¶¯¸Ã°ïÖúϵͳ£¬ÇëÑ¡ÔñÈçÏÂÈýÖÖ·½ + ·¨Ö®Ò»£º + - °´Ï ¼ü (Èç¹û¼üÅÌÉÏÓеĻ°) + - °´Ï ¼ü (Èç¹û¼üÅÌÉÏÓеĻ°) + - ÊäÈë :help <»Ø³µ> + + ÇëÔĶÁ°ïÖú´°¿ÚÖеÄÎÄ×ÖÒÔÁ˽â°ïÖúÊÇÈçºÎ¹¤×÷µÄ¡£ + ÊäÈë CTRL-W CTRL-W ¿ÉÒÔʹÄúÔÚ´°¿ÚÖ®¼äÌøת¡£ + ÊäÈë :q <»Ø³µ> ¿ÉÒԹرհïÖú´°¿Ú¡£ + + Ìṩһ¸öÕýÈ·µÄ²ÎÊý¸ø":help"ÃüÁÄú¿ÉÒÔÕÒµ½¹ØÓÚ¸ÃÖ÷ÌâµÄ°ïÖú¡£ÇëÊÔÑéÒÔ + ϲÎÊý(¿É±ðÍüÁË°´»Ø³µ¼üŶ)£º + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÆß½²µÚ¶þ½Ú£º´´½¨Æô¶¯½Å±¾ + + + ** ÆôÓà Vim µÄÌØÐÔ ** + + Vim µÄ¹¦ÄÜÌØÐÔÒª±È Vi ¶àµÃ¶à£¬µ«ÆäÖд󲿷ֶ¼Ã»ÓÐȱʡÆôÓá£ÎªÁËʹÓøü¶àµÄ + ÌØÐÔ£¬ÄúµÃ´´½¨Ò»¸ö vimrc Îļþ¡£ + + 1. ¿ªÊ¼±à¼­ vimrc Îļþ£¬¾ßÌåÃüÁîÈ¡¾öÓÚÄúËùʹÓõIJÙ×÷ϵͳ£º + :edit ~/.vimrc ÕâÊÇ Unix ϵͳËùʹÓõÄÃüÁî + :edit $VIM/_vimrc ÕâÊÇ MS-Windows ϵͳËùʹÓõÄÃüÁî + + 2. ½Ó×ŶÁÈ¡ vimrc ʾÀýÎļþµÄÄÚÈÝ£º + :r $VIMRUNTIME/vimrc_example.vim + + 3. ±£´æÎļþ£¬ÃüÁîΪ£º + :write + + Ï´ÎÄúÆô¶¯ Vim ʱ£¬±à¼­Æ÷¾Í»áÓÐÁËÓï·¨¸ßÁÁµÄ¹¦ÄÜ¡£ + Äú¿ÉÒÔ°ÑÄúϲ»¶µÄ¸÷ÖÖÉèÖÃÌí¼Óµ½Õâ¸ö vimrc ÎļþÖС£ + ÒªÁ˽â¸ü¶àÐÅÏ¢ÇëÊäÈë :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÆß½²µÚÈý½Ú£º²¹È«¹¦ÄÜ + + + ** ʹÓà CTRL-D ºÍ ¿ÉÒÔ½øÐÐÃüÁîÐв¹È« ** + + 1. ÇëÈ·±£ Vim ²»ÊÇÔÚÒÔ¼æÈÝģʽÔËÐУº :set nocp + + 2. ²é¿´Ò»Ïµ±Ç°Ä¿Â¼ÏÂÒѾ­´æÔÚÄÄЩÎļþ£¬ÊäÈ룺 :!ls »òÕß :!dir + + 3. ÏÖÔÚÊäÈëÒ»¸öĿ¼µÄÆðʼ²¿·Ö£¬ÀýÈçÊäÈ룺 :e + + 4. ½Ó×Å°´ CTRL-D ¼ü£¬Vim »áÏÔʾÒÔ e ¿ªÊ¼µÄÃüÁîµÄÁÐ±í¡£ + + 5. È»ºó°´ ¼ü£¬Vim »á²¹È«ÃüÁîΪ :edit ¡£ + + 6. ÏÖÔÚÌí¼ÓÒ»¸ö¿Õ¸ñ£¬ÒÔ¼°Ò»¸öÒÑÓÐÎļþµÄÎļþÃûµÄÆðʼ²¿·Ö£¬ÀýÈ磺 :edit FIL + + 7. ½Ó×Å°´ ¼ü£¬Vim »á²¹È«ÎļþÃû(Èç¹ûËüÊÇΩһƥÅäµÄ)¡£ + +Ìáʾ£º²¹È«¶ÔÓÚÐí¶àÃüÁÓÐЧ¡£ÄúÖ»Ðè³¢ÊÔ°´ CTRL-D ºÍ ¡£ + Ëü¶ÔÓÚ :help ÃüÁî·Ç³£ÓÐÓᣠ+ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + µÚÆß½²Ð¡½á + + + 1. ÊäÈë :help »òÕß°´ ¼ü»ò ¼ü¿ÉÒÔ´ò¿ª°ïÖú´°¿Ú¡£ + + 2. ÊäÈë :help cmd ¿ÉÒÔÕÒµ½¹ØÓÚ cmd ÃüÁîµÄ°ïÖú¡£ + + 3. ÊäÈë CTRL-W CTRL-W ¿ÉÒÔʹÄúÔÚ´°¿ÚÖ®¼äÌøת¡£ + + 4. ÊäÈë :q ÒԹرհïÖú´°¿Ú + + 5. Äú¿ÉÒÔ´´½¨Ò»¸ö vimrc Æô¶¯½Å±¾ÎļþÓÃÀ´±£´æÄúÆ«ºÃµÄÉèÖᣠ+ + 6. µ±ÊäÈë : ÃüÁîʱ£¬°´ CTRL-D ¿ÉÒԲ鿴¿ÉÄܵIJ¹È«½á¹û¡£ + °´ ¿ÉÒÔʹÓÃÒ»¸ö²¹È«¡£ + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + vim ½Ì³Ìµ½´Ë¾Í½áÊøÁË¡£±¾½Ì³ÌÖ»ÊÇΪÁ˼òÃ÷µØ½éÉÜһϠVim ±à¼­Æ÷£¬µ«ÒÑ×ãÒÔÈÃÄú + ºÜÈÝÒ×ʹÓÃÕâ¸ö±à¼­Æ÷ÁË¡£ÎãÓ¹ÖÊÒÉ£¬vim»¹ÓкܶàºÜ¶àµÄÃüÁ±¾½Ì³ÌËù½é + ÉܵľàÀëÍêÕûµÄ²îµÃºÜÔ¶¡£ËùÒÔÄúÒª¾«Í¨µÄ»°£¬»¹Íû¼ÌÐøŬÁ¦Å¶¡£ÏÂÒ»²½Äú¿ÉÒÔÔĶÁ + Vim µÄÓû§ÊֲᣬʹÓõÄÃüÁîÊÇ£º :help user-manual + + ÏÂÃæÕâ±¾ÊéÖµµÃÍƼöÓÃÓÚ¸ü½øÒ»²½µÄÔĶÁºÍѧϰ£º + Vim - Vi Improved - ×÷ÕߣºSteve Oualline + ³ö°æÉ磺New Riders + ÕâÊǵÚÒ»±¾ÍêÈ«½²½â Vim µÄÊé¼®¡£Ëü¶ÔÓÚ³õѧÕßÌرðÓÐÓá£ÆäÖаüº¬ÓдóÁ¿ÊµÀý + ºÍͼʾ¡£ + ÓûÖªÏêÇ飬Çë·ÃÎÊ http://iccf-holland.org/click5.html + + ÒÔÏÂÕâ±¾Êé±È½ÏÀÏÁ˶øÇÒÄÚÈݸü¶àÊǹØÓÚ Vi ¶ø·Ç Vim£¬µ«ÊÇÒ²ÖµµÃÍƼö£º + Learning the Vi Editor - ×÷ÕߣºLinda Lamb + ³ö°æÉ磺O'Reilly & Associates Inc. + ÕâÊÇÒ»±¾²»´íµÄÊ飬ͨ¹ýËüÄú¼¸ºõÄܹ»Á˽⵽ÈκÎÄúÏëҪʹÓà Vi ×öµÄÊÂÇé¡£ + ´ËÊéµÄµÚÁù¸ö°æ±¾Ò²°üº¬ÁËһЩ¹ØÓÚ Vim µÄÐÅÏ¢¡£ + + ±¾½Ì³ÌÊÇÓÉÀ´×Ô Calorado School of Mines µÄ Michael C. Pierce ºÍ + Robert K. Ware Ëù±àдµÄ£¬ÆäÖкܶഴÒâÓÉÀ´×Ô Colorado State University µÄ + Charles Smith Ìṩ¡£±àÕߵĵç×ÓÓÊÏäÊÇ£ºbware@mines.colorado.edu + + ±¾½Ì³ÌÒÑÓÉ Bram Moolenaar רΪ Vim ½øÐÐÐÞ¶©¡£ + + ÒëÖÆÕ߸½ÑÔ£º + =========== + ¼òÌåÖÐÎĽ̷̳­Òë°æÖ®ÒëÖÆÕßΪÁº²ýÌ© £¬»¹ÓÐ + ÁíÍâÒ»¸öÁªÏµµØÖ·£ºlinuxrat@gnuchina.org¡£ + + ·±ÌåÖÐÎĽ̳ÌÊÇ´Ó¼òÌåÖÐÎĽ̷̳­Òë°æʹÓà Debian GNU/Linux ÖÐÎÄÏîĿС + ×éµÄÓÚ¹ã»ÔÏÈÉú±àдµÄÖÐÎĺº×ÖתÂëÆ÷ autoconvert ת»»¶ø³ÉµÄ£¬²¢¶Ôת + »»µÄ½á¹û×öÁËһЩϸ½ÚµÄ¸Ä¶¯¡£ + + ±ä¸ü¼Ç¼£º + ========= + 2012Äê10ÔÂ01ÈÕ ÕÔÌÎ + ½« vimtutor ÖÐÒë°æ´Ó 1.5 Éý¼¶µ½ 1.7¡£ + + 2002Äê08ÔÂ30ÈÕ Áº²ýÌ© + ¸Ðл RMS@SMTH µÄÖ¸Õý£¬½«¶à´¦´íÎóÐÞÕý¡£ + + 2002Äê04ÔÂ22ÈÕ Áº²ýÌ© + ¸Ðл xuandong@sh163.net µÄÖ¸Õý£¬½«Á½´¦´í±ð×ÖÐÞÕý¡£ + + 2002Äê03ÔÂ18ÈÕ Áº²ýÌ© + ¸ù¾ÝBram MolenaarÏÈÉúÔÚ2002Äê03ÔÂ16ÈÕµÄÀ´ÐÅÒªÇ󣬽«vimtutor1.4ÖÐÒë + °æÉý¼¶µ½vimtutor1.5¡£ + + 2001Äê11ÔÂ15ÈÕ Áº²ýÌ© + ½«vimtutor1.4ÖÐÒë°æÌá½»¸øBram MolenaarºÍSven Guckes¡£ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.zh.utf-8 b/share/vim/vim74/tutor/tutor.zh.utf-8 similarity index 100% copy from share/vim/vim73/tutor/tutor.zh.utf-8 copy to share/vim/vim74/tutor/tutor.zh.utf-8 diff --git a/share/vim/vim74/tutor/tutor.zh_cn.utf-8 b/share/vim/vim74/tutor/tutor.zh_cn.utf-8 new file mode 100644 index 00000000..3ff031f7 --- /dev/null +++ b/share/vim/vim74/tutor/tutor.zh_cn.utf-8 @@ -0,0 +1,996 @@ +=============================================================================== += 欢 迎 阅 读 《 V I M 教 程 》 —— 版本 1.7 = +=============================================================================== + + Vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中 + 就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而掌握好这 + 些命令,您就能够很容易地将 Vim 当作一个通用编辑器来使用了。 + + 完成本教程的内容大约需要25-30分钟,取决于您训练的时间。 + + 注意: + 每一节的命令操作将会更改本文。推荐您复制本文的一个副本,然后在副本上 + 进行训练(如果您是通过"vimtutor"来启动教程的,那么本文就已经是副本了)。 + + 切记一点:本教程的设计思路是在使用中进行学习的。也就是说,您需要通过 + 执行命令来学习它们本身的正确用法。如果您只是阅读而不操作,那么您可能 + 会很快遗忘这些命令的! + + 好了,现在请确定您的Shift-Lock(大小写锁定键)还没有按下,然后按键盘上 + 的字母键 j 足够多次来移动光标,直到第一节的内容能够完全充满屏幕。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第一讲第一节:移动光标 + + + ** 要移动光标,请依照说明分别按下 h、j、k、l 键。 ** + + ^ + k 提示: h 的键位于左边,每次按下就会向左移动。 + < h l > l 的键位于右边,每次按下就会向右移动。 + j j 键看起来很象一支尖端方向朝下的箭头。 + v + + 1. 请随意在屏幕内移动光标,直至您觉得舒服为止。 + + 2. 按下下行键(j),直到出现光标重复下行。 + +---> 现在您应该已经学会如何移动到下一讲吧。 + + 3. 现在请使用下行键,将光标移动到第一讲第二节。 + +提示:如果您不敢确定您所按下的字母,请按下键回到正常(Normal)模式。 + 然后再次从键盘输入您想要的命令。 + +提示:光标键应当也能正常工作的。但是使用hjkl键,在习惯之后您就能够更快 + 地在屏幕内四处移动光标。真的是这样! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第一讲第二节:VIM的进入和退出 + + + !! 特别提示:敬请阅读本一节的完整内容,然后再执行以下所讲解的命令。 + + 1. 按键(这是为了确保您处在正常模式)。 + + 2. 然后输入: :q! <回车> + 这种方式的退出编辑器会丢弃您进入编辑器以来所做的改动。 + + 3. 如果您看到了命令行提示符,请输入能够带您回到本教程的命令,那就是: + vimtutor <回车> + + 4. 如果您自信已经牢牢记住了这些步骤的话,请从步骤1执行到步骤3退出,然 + 后再次进入编辑器。 + +提示: :q! <回车> 会丢弃您所做的任何改动。几讲之后您将学会如何保存改动到文件。 + + 5. 将光标下移到第一讲第三节。 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第一讲第三节:文本编辑之删除 + + + ** 在正常(Normal)模式下,可以按下 x 键来删除光标所在位置的字符。** + + 1. 请将光标移动到本节中下面标记有 ---> 的那一行。 + + 2. 为了修正输入错误,请将光标移至准备删除的字符的位置处。 + + 3. 然后按下 x 键将错误字符删除掉。 + + 4. 重复步骤2到步骤4,直到句子修正为止。 + +---> The ccow jumpedd ovverr thhe mooon. + + 5. 好了,该行已经修正了,下面是第一讲第四节。 + +特别提示:在浏览本教程时,不要强行记忆。记住一点:在使用中学习。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第一讲第四节:文本编辑之插入 + + + ** 在正常模式下,可以按下 i 键来插入文本。** + + 1. 请将光标移动到本节中下面标记有 ---> 的第一行。 + + 2. 为了使得第一行内容雷同于第二行,请将光标移至文本第一个准备插入字符 + 的位置。 + + 3. 然后按下 i 键,接着输入必要的文本字符。 + + 4. 每个错误修正完毕后,请按下 键返回正常模式。 + 重复步骤2至步骤4以便修正句子。 + +---> There is text misng this . +---> There is some text missing from this line. + + 5. 如果您对文本插入操作已经很满意,请接着阅读下面的第一讲第五节。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第一讲第五节:文本编辑之添加 + + + ** 按 A 键以添加文本。 ** + + 1. 移动光标到下面第一个标记有 ---> 的一行。 + 光标放在那一行的哪个字符上并不重要。 + + 2. 按 A 键输入必要的添加内容。 + + 3. 文本添加完毕后,按 键回到正常模式。 + + 4. 移动光标到下面第二个标记有 ---> 的一行。重复步骤2和步骤3以改正这个句子。 + +---> There is some text missing from th + There is some text missing from this line. +---> There is also some text miss + There is also some text missing here. + + 5. 当您对添加文本操作感到满意时,请继续学习第一讲第六节。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第一讲第六节:编辑文件 + + ** 使用 :wq 以保存文件并退出。 ** + + 特别提示:在执行以下步骤之前,请先读完整个小节! + + 1. 如您在第一讲第二节中所做的那样退出本教程: :q! + 或者,如果您可以访问另一个终端,请在那里执行以下操作。 + + 2. 在 shell 的提示符下输入命令: vim tutor <回车> + 'vim'是启动 Vim 编辑器的命令,'tutor'是您希望编辑的文件的名字。 + 请使用一个可以改动的文件。 + + 3. 使用您在前面的教程中学到的命令插入删除文本。 + + 4. 保存改动过的文件并退出 Vim,按这些键: :wq <回车> + + 5. 如果您在步骤1中已经退出 vimtutor,请重启 vimtutor 移动到下面的小结一节。 + + 6. 阅读完以上步骤,弄懂它们的意义,然后在实践中进行练习。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第一讲小结 + + + 1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。 + h (左移) j (下行) k (上行) l (右移) + + 2. 欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车> + + 3. 欲退出 Vim 编辑器,请输入 :q! <回车> 放弃所有改动。 + 或者输入 :wq <回车> 保存改动。 + + 4. 在正常模式下删除光标所在位置的字符,请按: x + + 5. 欲插入或添加文本,请输入: + + i 输入欲插入文本 在光标前插入文本 + A 输入欲添加文本 在一行后添加文本 + +特别提示:按下 键会带您回到正常模式或者撤消一个不想输入或部分完整 +的命令。 + +好了,第一讲到此结束。下面接下来继续第二讲的内容。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第二讲第一节:删除类命令 + + + ** 输入 dw 可以从光标处删除至一个单词的末尾。** + + 1. 请按下 键确保您处于正常模式。 + + 2. 请将光标移动到本节中下面标记有 ---> 的那一行。 + + 3. 请将光标移至准备要删除的单词的起始处。 + + 4. 接着输入 dw 删除掉该单词。 + + 特别提示:当您输入时,字母 d 会同时出现在屏幕的最后一行。Vim 在等待您输入 + 字母 w。如果您看到的是除 d 外的其他字符,那表明您按错了;请按下 键, + 然后重新再来。 + +---> There are a some words fun that don't belong paper in this sentence. + + 5. 重复步骤3和步骤4,直至句子修正完毕。接着继续第二讲第二节内容。 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第二讲第二节:更多删除类命令 + + + ** 输入 d$ 从当前光标删除到行末。** + + 1. 请按下 键确保您处于正常模式。 + + 2. 请将光标移动到本节中下面标记有 ---> 的那一行。 + + 3. 请将光标移动到该行的尾部(也就是在第一个点号‘.’后面)。 + + 4. 然后输入 d$ 从光标处删至当前行尾部。 + +---> Somebody typed the end of this line twice. end of this line twice. + + + 5. 请继续学习第二讲第三节就知道是怎么回事了。 + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第二讲第三节:关于命令和对象 + + + 许多改变文本的命令都由一个操作符和一个动作构成。 + 使用删除操作符 d 的删除命令的格式如下: + + d motion + + 其中: + d - 删除操作符。 + motion - 操作符的操作对象(在下面列出)。 + + 一个简短的动作列表: + w - 从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符。 + e - 从当前光标当前位置直到单词末尾,包括最后一个字符。 + $ - 从当前光标当前位置直到当前行末。 + + 因此输入 de 会从当前光标位置删除到单词末尾。 + +特别提示: + 对于勇于探索者,请在正常模式下面仅按代表相应动作的键而不使用操作符,您 + 将看到光标的移动正如上面的对象列表所代表的一样。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第二讲第四节:使用计数指定动作 + + + ** 在动作前输入数字会使它重复那么多次。 ** + + 1. 移动光标到下面标记有 ---> 的一行的开始。 + + 2. 输入 2w 使光标向前移动两个单词。 + + 3. 输入 3e 使光标向前移动到第三个单词的末尾。 + + 4. 输入 0 (数字零) 移动光标到行首。 + + 5. 重复步骤2和步骤3,尝试不同的数字。 + +---> This is just a line with words you can move around in. + + 6. 请继续学习第二讲第五节。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第二讲第五节:使用计数以删除更多 + + + ** 使用操作符时输入数字可以使它重复那么多次。 ** + + 上面已经提到过删除操作符和动作的组合,您可以在组合中动作之前插入一个数字以 + 删除更多: + d number(数字) motion + + 1. 移动光标到下面标记有 ---> 的一行中第一个大写字母单词上。 + + 2. 输入 d2w 以删除两个大写字母单词。 + + 3. 重复步骤1和步骤2,使用不同的数字使得用一个命令就能删除全部相邻的大写字母 + 单词 + +---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第二讲第六节:操作整行 + + + ** 输入 dd 可以删除整一个当前行。 ** + + 鉴于整行删除的高频度,Vi 的设计者决定要简化整行删除操作,您仅需要在同一行上 + 击打两次 d 就可以删除掉光标所在的整行了。 + + 1. 请将光标移动到本节中下面的短句段落中的第二行。 + 2. 输入 dd 删除该行。 + 3. 然后移动到第四行。 + 4. 接着输入 2dd 删除两行。 + +---> 1) Roses are red, +---> 2) Mud is fun, +---> 3) Violets are blue, +---> 4) I have a car, +---> 5) Clocks tell time, +---> 6) Sugar is sweet +---> 7) And so are you. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第二讲第七节:撤消类命令 + + + ** 输入 u 来撤消最后执行的命令,输入 U 来撤消对整行的修改。 ** + + 1. 请将光标移动到本节中下面标记有 ---> 的那一行,并将其置于第一个错误 + 处。 + 2. 输入 x 删除第一个不想保留的字母。 + 3. 然后输入 u 撤消最后执行的(一次)命令。 + 4. 这次要使用 x 修正本行的所有错误。 + 5. 现在输入一个大写的 U ,恢复到该行的原始状态。 + 6. 接着多次输入 u 以撤消 U 以及更前的命令。 + 7. 然后多次输入 CTRL-R (先按下 CTRL 键不放开,接着按 R 键),这样就 + 可以重做被撤消的命令,也就是撤消掉撤消命令。 + +---> Fiix the errors oon thhis line and reeplace them witth undo. + + 8. 这些都是非常有用的命令。下面是第二讲的小结了。 + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第二讲小结 + + + 1. 欲从当前光标删除至下一个单词,请输入:dw + 2. 欲从当前光标删除至当前行末尾,请输入:d$ + 3. 欲删除整行,请输入:dd + + 4. 欲重复一个动作,请在它前面加上一个数字:2w + 5. 在正常模式下修改命令的格式是: + operator [number] motion + 其中: + operator - 操作符,代表要做的事情,比如 d 代表删除 + [number] - 可以附加的数字,代表动作重复的次数 + motion - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word), + $ 代表行末等等。 + + 6. 欲移动光标到行首,请按数字0键:0 + + 7. 欲撤消以前的操作,请输入:u (小写的u) + 欲撤消在一行中所做的改动,请输入:U (大写的U) + 欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第三讲第一节:置入类命令 + + + ** 输入 p 将最后一次删除的内容置入光标之后。 ** + + 1. 请将光标移动到本节中下面第一个标记有 ---> 的一行。 + + 2. 输入 dd 将该行删除,这样会将该行保存到 Vim 的一个寄存器中。 + + 3. 接着将光标移动到 c) 一行,即准备置入的位置的上方。记住:是上方哦。 + + 4. 然后在正常模式下(键进入)输入 p 将该行粘贴置入。 + + 5. 重复步骤2至步骤4,将所有的行依序放置到正确的位置上。 + +---> d) Can you learn too? +---> b) Violets are blue, +---> c) Intelligence is learned, +---> a) Roses are red, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第三讲第二节:替换类命令 + + + ** 输入 r 和一个字符替换光标所在位置的字符。** + + 1. 请将光标移动到本节中下面标记有 ---> 的第一行。 + + 2. 请移动光标到第一个出错的位置。 + + 3. 接着输入 r 和要替换成的字符,这样就能将错误替换掉了。 + + 4. 重复步骤2和步骤3,直到第一行已经修改完毕。 + +---> Whan this lime was tuoed in, someone presswd some wrojg keys! +---> When this line was typed in, someone pressed some wrong keys! + + 5. 然后我们继续学习第三讲第三节。 + +特别提示:切记您要在使用中学习,而不是在记忆中学习。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第三讲第三节:更改类命令 + + + ** 要改变文本直到一个单词的末尾,请输入 ce ** + + 1. 请将光标移动到本节中下面标记有 ---> 的第一行。 + + 2. 接着把光标放在单词 lubw 的字母 u 的位置那里。 + + 3. 然后输入 cw 以及正确的单词(在本例中是输入 ine )。 + + 4. 最后按 键,然后光标定位到下一个错误第一个准备更改的字母处。 + + 5. 重复步骤3和步骤4,直到第一个句子完全雷同第二个句子。 + +---> This lubw has a few wptfd that mrrf changing usf the change operator. +---> This line has a few words that need changing using the change operator. + +提示:请注意 ce 命令不仅仅是删除了一个单词,它也让您进入插入模式了。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第三讲第四节:使用c更改更多 + + + ** 更改类操作符可以与删除中使用的同样的动作配合使用。 ** + + 1. 更改类操作符的工作方式跟删除类是一致的。操作格式是: + + c [number] motion + + 2. 动作参数(motion)也是一样的,比如 w 代表单词,$代表行末等等。 + + 3. 请将光标移动到本节中下面标记有 ---> 的第一行。 + + 4. 接着将光标移动到第一个错误处。 + + 5. 然后输入 c$ 使得该行剩下的部分更正得同第二行一样。最后按 键。 + +---> The end of this line needs some help to make it like the second. +---> The end of this line needs to be corrected using the c$ command. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第三讲小结 + + + 1. 要重新置入已经删除的文本内容,请按小写字母 p 键。该操作可以将已删除 + 的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置 + 于当前光标所在行的下一行。 + + 2. 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字 + 符即可。 + + 3. 更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。 + 比如输入 ce 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当 + 前光标到行末的内容。 + + 4. 更改类命令的格式是: + + c [number] motion + +现在我们继续学习下一讲。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第四讲第一节:定位及文件状态 + + ** 输入 CTRL-G 显示当前编辑文件中当前光标所在行位置以及文件状态信息。 + 输入大写 G 则直接跳转到文件中的某一指定行。** + + 提示:切记要先通读本节内容,之后才可以执行以下步骤!!! + + 1. 按下 CTRL 键不放开然后按 g 键。我们称这个键组合为 CTRL-G。 + 您会看到页面最底部出现一个状态信息行,显示的内容是当前编辑的文件名 + 和文件中光标位置。请记住行号,它会在步骤3中用到。 + +提示:您也许会在屏幕的右下角看到光标位置,这会在 'ruler' 选项设置时发生 + (参见 :help 'ruler') + + 2. 输入大写 G 可以使得当前光标直接跳转到文件最后一行。 + 输入 gg 可以使得当前光标直接跳转到文件第一行。 + + 3. 输入您曾停留的行号,然后输入大写 G。这样就可以返回到您第一次按下 + CTRL-G 时所在的行了。 + + 4. 如果您觉得没问题的话,请执行步骤1至步骤3的操作进行练习。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第四讲第二节:搜索类命令 + + + ** 输入 / 加上一个字符串可以用以在当前文件中查找该字符串。** + + 1. 在正常模式下输入 / 字符。您此时会注意到该字符和光标都会出现在屏幕底 + 部,这跟 : 命令是一样的。 + + 2. 接着输入 errroor <回车>。那个errroor就是您要查找的字符串。 + + 3. 要查找同上一次的字符串,只需要按 n 键。要向相反方向查找同上一次的字 + 符串,请输入大写 N 即可。 + + 4. 如果您想逆向查找字符串,请使用 ? 代替 / 进行。 + + 5. 要回到您之前的位置按 CTRL-O (按住 Ctrl 键不放同时按下字母 o)。重复按可以 + 回退更多步。CTRL-I 会跳转到较新的位置。 + +---> "errroor" is not the way to spell error; errroor is an error. +提示:如果查找已经到达文件末尾,查找会自动从文件头部继续查找,除非 + 'wrapscan' 选项被复位。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第四讲第三节:配对括号的查找 + + + ** 输入 % 可以查找配对的括号 )、]、}。** + + 1. 把光标放在本节下面标记有 --> 那一行中的任何一个 (、[ 或 { 处。 + + 2. 接着按 % 字符。 + + 3. 此时光标的位置应当是在配对的括号处。 + + 4. 再次按 % 就可以跳回配对的第一个括号处。 + + 5. 移动光标到另一个 (、)、[、]、{ 或 } 处,按 % 查看其所作所为。 + +---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + + +提示:在程序调试时,这个功能用来查找不配对的括号是很有用的。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第四讲第四节:替换命令 + + + ** 输入 :s/old/new/g 可以替换 old 为 new。** + + 1. 请将光标移动到本节中下面标记有 ---> 的那一行。 + + 2. 输入 :s/thee/the <回车> 。请注意该命令只改变光标所在行的第一个匹配 + 串。 + + 3. 输入 :s/thee/the/g 则是替换全行的匹配串,该行中所有的 "thee" 都会被 + 改变。 + +---> thee best time to see thee flowers is in thee spring. + + 4. 要替换两行之间出现的每个匹配串,请 + 输入 :#,#s/old/new/g 其中 #,# 代表的是替换操作的若干行中 + 首尾两行的行号。 + 输入 :%s/old/new/g 则是替换整个文件中的每个匹配串。 + 输入 :%s/old/new/gc 会找到整个文件中的每个匹配串,并且对每个匹配串 + 提示是否进行替换。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第四讲小结 + + + 1. CTRL-G 用于显示当前光标所在位置和文件状态信息。 + G 用于将光标跳转至文件最后一行。 + 先敲入一个行号然后输入大写 G 则是将光标移动至该行号代表的行。 + gg 用于将光标跳转至文件第一行。 + + 2. 输入 / 然后紧随一个字符串是在当前所编辑的文档中正向查找该字符串。 + 输入 ? 然后紧随一个字符串则是在当前所编辑的文档中反向查找该字符串。 + 完成一次查找之后按 n 键是重复上一次的命令,可在同一方向上查 + 找下一个匹配字符串所在;或者按大写 N 向相反方向查找下一匹配字符串所在。 + CTRL-O 带您跳转回较旧的位置,CTRL-I 则带您到较新的位置。 + + 3. 如果光标当前位置是括号(、)、[、]、{、},按 % 会将光标移动到配对的括号上。 + + 4. 在一行内替换头一个字符串 old 为新的字符串 new,请输入 :s/old/new + 在一行内替换所有的字符串 old 为新的字符串 new,请输入 :s/old/new/g + 在两行内替换所有的字符串 old 为新的字符串 new,请输入 :#,#s/old/new/g + 在文件内替换所有的字符串 old 为新的字符串 new,请输入 :%s/old/new/g + 进行全文替换时询问用户确认每个替换需添加 c 标志 :%s/old/new/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第五讲第一节:在 VIM 内执行外部命令的方法 + + + ** 输入 :! 然后紧接着输入一个外部命令可以执行该外部命令。** + + 1. 按下我们所熟悉的 : 命令使光标移动到屏幕底部。这样您就可以输入一行命令了。 + + 2. 接着输入感叹号 ! 这个字符,这样就允许您执行外部的 shell 命令了。 + + 3. 我们以 ls 命令为例。输入 !ls <回车> 。该命令就会列举出您当前目录的 + 内容,就如同您在命令行提示符下输入 ls 命令的结果一样。如果 !ls 没起 + 作用,您可以试试 :!dir 看看。 + +提示:所有的外部命令都可以以这种方式执行,包括带命令行参数的那些。 + +提示:所有的 : 命令都必须以敲 <回车> 键结束。从今以后我们就不会总是提到这一点 + 了。 + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第五讲第二节:关于保存文件的更多信息 + + + ** 要将对文件的改动保存到文件中,请输入 :w FILENAME 。** + + 1. 输入 :!dir 或者 :!ls 获知当前目录的内容。您应当已知道最后还得敲 + <回车> 吧。 + + 2. 选择一个未被用到的文件名,比如 TEST。 + + 3. 接着输入 :w TEST (此处 TEST 是您所选择的文件名。) + + 4. 该命令会以 TEST 为文件名保存整个文件 (Vim 教程)。为了验证这一点, + 请再次输入 :!dir 或 :!ls 查看您的目录列表内容。 + +请注意:如果您退出 Vim 然后在以命令 vim TEST 再次启动 Vim,那么该文件内 + 容应该同您保存时的文件内容是完全一样的。 + + 5. 现在您可以删除 TEST 文件了。在 MS-DOS 下,请输入: :!del TEST + 在 Unix 下,请输入: :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第五讲第三节:一个具有选择性的保存命令 + + + ** 要保存文件的部分内容,请输入 v motion :w FILENAME ** + + 1. 移动光标到本行。 + + 2. 接着按 v 键,将光标移动至下面第五个条目上。您会注意到之间的文本被高亮了。 + + 3. 然后按 : 字符。您将看到屏幕底部会出现 :'<,'> 。 + + 4. 现在请输入 w TEST,其中 TEST 是一个未被使用的文件名。确认您看到了 + :'<,'>w TEST 之后按 <回车> 键。 + + 5. 这时 Vim 会把选中的行写入到以 TEST 命名的文件中去。使用 :!dir 或 :!ls + 确认文件被正确保存。这次先别删除它!我们在下一讲中会用到它。 + +提示:按 v 键使 Vim 进入可视模式进行选取。您可以四处移动光标使选取区域变大或 + 变小。接着您可以使用一个操作符对选中文本进行操作。例如,按 d 键会删除 + 选中的文本内容。 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第五讲第四节:提取和合并文件 + + + ** 要向当前文件中插入另外的文件的内容,请输入 :r FILENAME ** + + 1. 请把光标移动到本行上面一行。 + +特别提示:执行步骤2之后您将看到第五讲第三节的文字,请届时往下移动 + 以再次看到本讲内容。 + + 2. 接着通过命令 :r TEST 将前面创建的名为 TEST 的文件提取进来。 + 您所提取进来的文件将从光标所在位置处开始置入。 + + 3. 为了确认文件已经提取成功,移动光标回到原来的位置就可以注意有两份第 + 五讲第三节的内容,一份是原始内容,另外一份是来自文件的副本。 + +提示:您还可以读取外部命令的输出。例如, :r !ls 可以读取 ls 命令的输出,并 + 把它放置在光标下面。 + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第五讲小结 + + + 1. :!command 用于执行一个外部命令 command。 + + 请看一些实际例子: + (MS-DOS) (Unix) + :!dir :!ls - 用于显示当前目录的内容。 + :!del FILENAME :!rm FILENAME - 用于删除名为 FILENAME 的文件。 + + 2. :w FILENAME 可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文 + 件中。 + + 3. v motion :w FILENAME 可将当前编辑文件中可视模式下选中的内容保存到文件 + FILENAME 中。 + + 4. :r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置 + 后面。 + + 5. :r !dir 可以读取 dir 命令的输出并将其放置到当前文件的光标位置后面。 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第六讲第一节:打开类命令 + + + ** 输入 o 将在光标的下方打开新的一行并进入插入模式。** + + 1. 请将光标移动到本节中下面标记有 ---> 的那一行。 + + 2. 接着输入小写的 o 在光标 *下方* 打开新的一行,这个命令会使您 + 进入插入模式。 + + 3. 然后输入一些文字,之后按 键退出插入模式而进入正常模式。 + +---> After typing o the cursor is placed on the open line in Insert mode. + + 4. 为了在光标 *上方* 打开新的一行,只需要输入大写的 O 而不是小写的 o + 就可以了。请在下行测试一下吧。 + +---> Open up a line above this by typing O while the cursor is on this line. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第六讲第二节:附加类命令 + + + ** 输入 a 将可在光标之后插入文本。 ** + + 1. 请在正常模式下将光标移动到本节中下面标记有 ---> 的第一行的行首。 + + 2. 接着输入 e 直到光标位于 li 的末尾。 + + 3. 输入小写的 a 则可在光标之后插入文本了。 + + 4. 将单词补充完整,就像下一行中的那样。之后按 键退出插入模式回到 + 正常模式。 + + 5. 使用 e 移动光标到下一步不完整的单词,重复步骤3和步骤4。 + +---> This li will allow you to pract appendi text to a line. +---> This line will allow you to practice appending text to a line. + +提示:a、i 和 A 都会带您进入插入模式,惟一的区别在于字符插入的位置。 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第六讲第三节:另外一个置换类命令的版本 + + + ** 输入大写的 R 可连续替换多个字符。** + + 1. 请将光标移动到本节中下面标记有 ---> 的第一行。移动光标到第一个 xxx 的 + 起始位置。 + + 2. 然后输入大写的 R 开始把第一行中的不同于第二行的剩余字符逐一输入,就 + 可以全部替换掉原有的字符而使得第一行完全雷同第二行了。 + + 3. 接着按 键退出替换模式回到正常模式。您可以注意到尚未替换的文本 + 仍然保持原状。 + + 4. 重复以上步骤,将剩余的 xxx 也替换掉。 + +---> Adding 123 to xxx gives you xxx. +---> Adding 123 to 456 gives you 579. + +提示:替换模式与插入模式相似,不过每个输入的字符都会删除一个已有的字符。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第六讲第四节:复制粘贴文本 + + + ** 使用操作符 y 复制文本,使用 p 粘贴文本 ** + + 1. 定位到下面标记有 ---> 的一行,将光标移动到 "a)" 之后。 + + 2. 接着使用 v 进入可视模式,移动光标到 "first" 的前面。 + + 3. 现在输入 y 以抽出(复制)高亮的文本。 + + 4. 然后移动光标到下一行的末尾:j$ + + 5. 接着输入 p 以放置(粘贴)复制了的文本。然后输入:a second 。 + + 6. 使用可视模式选中 " item.",用 y 复制,再用 j$ 将光标移动到下一行末尾, + 用 p 将文本粘贴到那里。 + +---> a) this is the first item. + b) + + 提示:您还可以把 y 当作操作符来使用;例如 yw 可以用来复制一个单词。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第六讲第五节:设置类命令的选项 + + + ** 设置可使查找或者替换可忽略大小写的选项 ** + + 1. 要查找单词 ignore 可在正常模式下输入 /ignore <回车>。 + 要重复查找该词,可以重复按 n 键。 + + 2. 然后设置 ic 选项(Ignore Case,忽略大小写),请输入: :set ic + + 3. 现在可以通过键入 n 键再次查找单词 ignore。注意到 Ignore 和 IGNORE 现在 + 也被找到了。 + + 4. 然后设置 hlsearch 和 incsearch 这两个选项,请输入: :set hls is + + 5. 现在可以再次输入查找命令,看看会有什么效果: /ignore <回车> + + 6. 要禁用忽略大小写,请输入: :set noic + +提示:要移除匹配项的高亮显示,请输入: :nohlsearch +提示:如果您想要仅在一次查找时忽略字母大小写,您可以使用 \c: + /ignore\c <回车> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第六讲小结 + + 1. 输入小写的 o 可以在光标下方打开新的一行并进入插入模式。 + 输入大写的 O 可以在光标上方打开新的一行。 + + 2. 输入小写的 a 可以在光标所在位置之后插入文本。 + 输入大写的 A 可以在光标所在行的行末之后插入文本。 + + 3. e 命令可以使光标移动到单词末尾。 + + 4. 操作符 y 复制文本,p 粘贴先前复制的文本。 + + 5. 输入大写的 R 将进入替换模式,直至按 键回到正常模式。 + + 6. 输入 :set xxx 可以设置 xxx 选项。一些有用的选项如下: + 'ic' 'ignorecase' 查找时忽略字母大小写 + 'is' 'incsearch' 查找短语时显示部分匹配 + 'hls' 'hlsearch' 高亮显示所有的匹配短语 + 选项名可以用完整版本,也可以用缩略版本。 + + 7. 在选项前加上 no 可以关闭选项: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第七讲第一节:获取帮助信息 + + + ** 使用在线帮助系统 ** + + Vim 拥有一个细致全面的在线帮助系统。要启动该帮助系统,请选择如下三种方 + 法之一: + - 按下 键 (如果键盘上有的话) + - 按下 键 (如果键盘上有的话) + - 输入 :help <回车> + + 请阅读帮助窗口中的文字以了解帮助是如何工作的。 + 输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。 + 输入 :q <回车> 可以关闭帮助窗口。 + + 提供一个正确的参数给":help"命令,您可以找到关于该主题的帮助。请试验以 + 下参数(可别忘了按回车键哦): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第七讲第二节:创建启动脚本 + + + ** 启用 Vim 的特性 ** + + Vim 的功能特性要比 Vi 多得多,但其中大部分都没有缺省启用。为了使用更多的 + 特性,您得创建一个 vimrc 文件。 + + 1. 开始编辑 vimrc 文件,具体命令取决于您所使用的操作系统: + :edit ~/.vimrc 这是 Unix 系统所使用的命令 + :edit $VIM/_vimrc 这是 MS-Windows 系统所使用的命令 + + 2. 接着读取 vimrc 示例文件的内容: + :r $VIMRUNTIME/vimrc_example.vim + + 3. 保存文件,命令为: + :write + + 下次您启动 Vim 时,编辑器就会有了语法高亮的功能。 + 您可以把您喜欢的各种设置添加到这个 vimrc 文件中。 + 要了解更多信息请输入 :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第七讲第三节:补全功能 + + + ** 使用 CTRL-D 和 可以进行命令行补全 ** + + 1. 请确保 Vim 不是在以兼容模式运行: :set nocp + + 2. 查看一下当前目录下已经存在哪些文件,输入: :!ls 或者 :!dir + + 3. 现在输入一个目录的起始部分,例如输入: :e + + 4. 接着按 CTRL-D 键,Vim 会显示以 e 开始的命令的列表。 + + 5. 然后按 键,Vim 会补全命令为 :edit 。 + + 6. 现在添加一个空格,以及一个已有文件的文件名的起始部分,例如: :edit FIL + + 7. 接着按 键,Vim 会补全文件名(如果它是惟一匹配的)。 + +提示:补全对于许多命令都有效。您只需尝试按 CTRL-D 和 。 + 它对于 :help 命令非常有用。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 第七讲小结 + + + 1. 输入 :help 或者按 键或 键可以打开帮助窗口。 + + 2. 输入 :help cmd 可以找到关于 cmd 命令的帮助。 + + 3. 输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。 + + 4. 输入 :q 以关闭帮助窗口 + + 5. 您可以创建一个 vimrc 启动脚本文件用来保存您偏好的设置。 + + 6. 当输入 : 命令时,按 CTRL-D 可以查看可能的补全结果。 + 按 可以使用一个补全。 + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + vim 教程到此就结束了。本教程只是为了简明地介绍一下 Vim 编辑器,但已足以让您 + 很容易使用这个编辑器了。毋庸质疑,vim还有很多很多的命令,本教程所介 + 绍的距离完整的差得很远。所以您要精通的话,还望继续努力哦。下一步您可以阅读 + Vim 的用户手册,使用的命令是: :help user-manual + + 下面这本书值得推荐用于更进一步的阅读和学习: + Vim - Vi Improved - 作者:Steve Oualline + 出版社:New Riders + 这是第一本完全讲解 Vim 的书籍。它对于初学者特别有用。其中包含有大量实例 + 和图示。 + 欲知详情,请访问 http://iccf-holland.org/click5.html + + 以下这本书比较老了而且内容更多是关于 Vi 而非 Vim,但是也值得推荐: + Learning the Vi Editor - 作者:Linda Lamb + 出版社:O'Reilly & Associates Inc. + 这是一本不错的书,通过它您几乎能够了解到任何您想要使用 Vi 做的事情。 + 此书的第六个版本也包含了一些关于 Vim 的信息。 + + 本教程是由来自 Calorado School of Mines 的 Michael C. Pierce 和 + Robert K. Ware 所编写的,其中很多创意由来自 Colorado State University 的 + Charles Smith 提供。编者的电子邮箱是:bware@mines.colorado.edu + + 本教程已由 Bram Moolenaar 专为 Vim 进行修订。 + + 译制者附言: + =========== + 简体中文教程翻译版之译制者为梁昌泰 ,还有 + 另外一个联系地址:linuxrat@gnuchina.org。 + + 繁体中文教程是从简体中文教程翻译版使用 Debian GNU/Linux 中文项目小 + 组的于广辉先生编写的中文汉字转码器 autoconvert 转换而成的,并对转 + 换的结果做了一些细节的改动。 + + 变更记录: + ========= + 2012年10月01日 赵涛 + 将 vimtutor 中译版从 1.5 升级到 1.7。 + + 2002年08月30日 梁昌泰 + 感谢 RMS@SMTH 的指正,将多处错误修正。 + + 2002年04月22日 梁昌泰 + 感谢 xuandong@sh163.net 的指正,将两处错别字修正。 + + 2002年03月18日 梁昌泰 + 根据Bram Molenaar先生在2002年03月16日的来信要求,将vimtutor1.4中译 + 版升级到vimtutor1.5。 + + 2001年11月15日 梁昌泰 + 将vimtutor1.4中译版提交给Bram Molenaar和Sven Guckes。 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/share/vim/vim73/tutor/tutor.zh.utf-8 b/share/vim/vim74/tutor/tutor.zh_tw.utf-8 similarity index 100% rename from share/vim/vim73/tutor/tutor.zh.utf-8 rename to share/vim/vim74/tutor/tutor.zh_tw.utf-8 diff --git a/share/vim/vim74/vim.exe b/share/vim/vim74/vim.exe new file mode 100644 index 0000000000000000000000000000000000000000..bcc06627fa2f2cf0e880ab19495b5e2b1f186505 GIT binary patch literal 1980928 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 +EaKx-~kou{K7y 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

!ij6%i- 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

D`)W0%wKb>ma{)g? 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μxYiv{jIIvR>6{P*80k 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

Dlydy{)(U|zSPm{@)Fwtj*U@rSUd&DfuVHLbt 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

jPjvTiZ2wi!&(k*B9fh zfH#%7dKG)EdX(zYE3$z0mm*jNONBlmr~(gZzIu)=LhRo-maUDx&arb4yP0EWL)cdj zGD~>38rKwEH$>UahN{`&eP&u!n&^ceqch_&MR)x7+v2iBzx;RF;_^fX{kPcS@N2z@Q-h1R*I}US_AaF^x?nS)F<}LT-CmA%g3*_9r89>Wo9}{r^83C-jAYE zX-ic#OE2hDw3t@Dk}68g-CrGyeeJj_qWz@Ji1MAjyfKlXsix>chdQlYoU` z?1*{@t`7e1>UvDnm00J#kU(Ytfs9hZm$%gARAE#2rC@GDQMM2qcb;%==i6%SXL}Cx zqOR9m?oj;25#|x4)AaVn4W93|DdJZ9y9i$zd5q!DO*!V&?bHAsfcoN3Km6(M&<6$y zpVbu791V1`aQMF5*18mB{d<9j-t|V#cp$-R-0D4f#)Cb}i^Jd3-tg^Kd)KsQtMN7M zBRqY)-8~f_G`GFoZk6TcQ{_AeMeHx%ttgw~`1vo&A4@ail*hK@S7yd}X4F(>r#MAj zr%_#s?{Ug2y&VV)=IwILPpuoDol+Jk%}xnB%W6}KDQ;d{9gX3+s-~$hoY?od>qMa6 zbJvSN|L4XvSss~1Pu{({%=94tB|OMaq}tKGJG>zHZZXn&T4_Zx&1Kxi_{-ZBr}!?Q zV3{!$T!`JdKd^ap)AzPsQnA`C^s05?9ii9i6gA#k=u{``UQpG_dPjlx140~XqU==~ z-H-LhpJ%#5ovM3xP-3C?3;Oo_Q}?zoE>dsS9|yf|GWLBF04>TBfQIm9)&pklr^ygt zS%|av_13dU@?*Fi?>?@5HG1NIgnAxcp?gs?HU(E_+#QMTnQhhHk>`Pf-Rf0ufgoVH)bN=><(-CVZG~g1XR4z_cY3#EXi#?@q&3#LM)Xh*6{((o);#RI z#q(*kHgNm{_Dr7rb!CoPLiOIztwm=ji(uBeW=>|Rs`x%+d_zgfyPLUc6N0r9TMoqQ z%h4bIesvgs2G*iupiM^WXM4A2z>d4AoO8o?-dq3n@Au52U6DrNYFV+5E7mAXb$B2Wl&RDR)*%%iq(s9r4&xC_g@O&PrRW~9(Q z^nCCx@A(rZGN_sByhXTzQr;bjdBBKxgAPW%pTc`VCz-GmR~V1eQ%y!AuU*m=sprEq zj+c^P@etg3rpQdayjzou0A&hNpow=kS7HL4#z3btTxkqrIzxfR5TU=$aMr4xCZK^C zgn5~vbTPDagmb8JnM(aRdtz5aW9a04#r*+?JwqRmv12NPMswBSMHj1sigMI5_<4Yk z+)G((3*ZUie?Gk_D7*?)n|1-%pAf~JoJD!?Y0gD`%~ocWU1rK}-p)0}>>W|haz2vdv=k+NI+6NZH6!=X&9FBR9ENCy_uY2fASpq+I3))9>%z&PVxzB}|)GEZR zLd?=z-H3_jn3vp$d9@c}oE-CG4}{$a`{#p`ESYt&3S{Uj^rNpqHyfFYiPz;c9^9_k5nI4DRE0t|NnEPUkv);B`8iV-E6Y z&*9me9Fc-g@!)Q-$_mwWg;*=@&w8$_h-0!{hd~C4STrTV2R$ScfBiwEVm;IXC9hif% zXLp;=RC?V?CvPyi52A*J_%xpE6yxv7C78>o9}1w*(f^6?8k4o zAOGgLyN1hVa?CdF#~?BOE_3|pJbtrm3FrJXx4WO)D(0AnIeaCTz1b=|17-i!A z$ds&$Uxw6wTAxs+Ha@g6`>7hzFO>c*)8DW*_U9i%;;JSY}^*Lhsh7u|C25 zW7$2?7KAB`+gScyM9e_MbyjvTsfo5dtbn*VzGa5M~?^h)ac9KT;F2U=ZvP$ zMEa4FR(b={zc$4z;@9GH_erxoSo$!UgzUD+04WgTRVzads(a4*1Z848Zhe9+Y51&9 za19NQ^$F&&QEh#K&urXy(l)krsIBaz)ptgp!%s#*Vr?=r%xcd?sfGA5PP6I*0cG^G z*9TUGar}fiR!FWJ|F%B!82_KJjTO$qjBQp1Je?Zrt4WDo5z0w82&WE2WsDWXN#JjN6lAT4b|fFa_iHF&x^PiET3>OuCIZ|Z&g1B zpFOQlyr&r_+E6SjrWknY##e1-KCrco7VEPUv$%ze^@`~vRBw#cZDy~a$7cM=`Ygg{ z9T&SSrnQNv{(h@^=%*XES)Wz-9LL4tQ0#m{r1%}Opxwo&>sf0&cs?<*tde*!G0w0) zaV;}?b46#$iq4W1rEx_!SQUY?HefqeeBw>fXt6#+JpNWxl#B`n&Y>#$a25TnD!`sL zR#;`gf^7q>kU-9KwV`{iQ%)>KX7^*G#Eb|Ly3!Ii5xC*rBwnfLgPKNgtuXu z@iymAmwh^$`_$L!(`V+#!Isvcq}E24 znyy!*_;;!U^r|FpdqnZQO2;x3qLWyj;~Te{pjV}|Zcp(f;s&|sXL*J*WM$7Umlpyb zT;nK9eGZF)@!{est`2Iy+}+{7i-lOw$nTR+n_obt;iV=`u#(EpzhBS;ithy1#xwyt zC@oEs%+-lhz?Szg#0=T?vC@F}Yv43wM* ztv^CFrTBMyzL3256f>`9FWq^!CQOR*w~Ok7+v)b2z*>2@vVuR6C4V#JZw7uh&ZL{k zCh*C8JB5Rq>Y%n=`&9c(aQ4m-oV{~Arw3;CtgGl*b23{<3L*O~^!x5?Fxns@%r5p$ zDUw)Mk;p|VWD%SS@A^=r_kSqTyRM=)7xBm<15jisiuCypMf%iL^x-1c$RhnvMD}B$OW+i^)CGv~C z2-uL{U^xeQ9N|A&^@bN$TV=vE)mDDve!+xh2Bo(F?x8{16 z);DZ9kf5yJ>D?JoBY@d(IjzBraow+f3p;t2# zOfkFbkw;nI;ysuHH>F35hNz827pkWfWqGa{jcS@UoS^o+ zTT=*hnka9es->pA*MnbK!3Pe8cVFv`MAV+*;mJ#-=D(NQ;EyOzG_>s-lw3Z=5q`Hi zC|q2Dy|xeRwJoX4>dK;SJ)-!fO=@&c?Lq!Tt5qw3BQ&8yIpv+ssA=Kl`U}z|D@URy&P-@XDZgIr#@ggC3{CW z75{HgG#R<|zRH{KQG;%D@`J-~l=Y*XwtT-szW%lxivNA;e;I23&@F2BJWo)X)m+Y! z{dkhZGw{E-Kd`P89vj?VnmJk+i65U?ft~SwQKD(#fd-I{r?Kkh(xmdsErISpB`ss6 zU`Nlr%H{B$aC-MgxZU!0NG*H*#&#B{WvU?$mVw?76PTw95nat`fULrvR{RTavND=b z{Lp6?nw9rb2z^uOPsJ^DJ!?xduc{jjC66%_Gxk?IbGSk*7xaT5TFw$Pa+%7EZyA1D zM|Z-o9EFWe@W=GgCunXntkoB<2yD!+UR39IQD&_80NJG?bP4^s>Xy1P7kX4z7Dqp0 zDXQ{v`g3)(cLL%qfVxKZ5C&fYGcrd@pz^_$D4w#n{M)4qLnd)Kn9niAT@kGZ)YObW z3O*QM+t5WA`v6Oi&L$NmIt&;o6IFUHgZ*}B?mr}_SC_KaDO!v4fAn;A7v$X0n&v_; za1EyV^S!i}Tmo;)GEQolAKl-qpDxN@|Z47T!D+0F2l zv*ml2>{HwbLR{G9q0%ehTZm_2P-irooTz-t2Fwu}7|jOz5V=2K2G_L-Ir{I+#giu# z8$|i4;J?DUTtM{q59N$%&NJIzEZQ&NF=0M0H`^}@`%WDT!zn?)>}V$AdT6`2aJU$M z0^gTWYmU|g(*sZlGj&sM1g@h7Y6|#`v34aka}Vmuj0N2}@Pgy}i`d?!bkzP16ayj5 z&^tq2VaaiAkOL=zV*ybz*r>Mb4HRLvgn>AQuRx`8VcNi2Dgm&0B z7wr7E$R(RKbhZ`OEW^@oV!mF(30ZTV2q-a_dxwn!liX=4SfM;W2a0 zsmO`(h@4{(zJ8lEwiGco{c?X~b`pAj>2W~O?02k=Qe0#2u88^gb;D(-=b;VN{C<`q z$4$M=f=Yo|D#~7=GH=~Reb`uyj_eCDifQolM(M0c(x;WJ%tTq{K3f^M`UR;In{%4X zIm?#wd6DzE*qlW&=YzJK4|fTBW~#~kXYLPjJz~o>r(5K@#>!PCbIrHqx~!I9eg|)? znKRNc!m}x$4tLaC?oeNY!^!}>w-9XY-UCDF6q4>{<}X`NxUZVv`8L||MRl&CY&8J} zomeJ=NDhbEUymD!9Kt9kt-MRi(LUz=mR>;pRBxt{6lE*^i>OE$g;9K{EbjEEfWk^s z%&3Tka|VK11ldL??8-et=Qr9VWoZ`0k)V$;`xhsF&n6@T2u)q7zfM5JKzG3`UEixS(nNkInIisl8!xWq46<#XU_FF|#{3 zJGD9gP;>lV>3cr>kD&KZws&L=Rp3(3#FZxW_(z9vUP9AGsb9+ii|Tpat=ZW7$t&Mr z8OXz??){f@oDPvjF=!+70mVS3P0FHaO@kaW9gdOs!(u@p?W+afJEl1t3nKWdKB)cJ z+MMDU?{D=~`6Hfm`c13(zSuL6NXNnSQDUe+j7}%rrY7FP(KY%kzgC?PlB#7AOaiTxCYe7d9&bsMrCOp+V@u~YA!4IZNYvGJPk-fgS4!QT6iK zXl)6%Hd`-uYb9>|Q6HD!+w!B!B&^+oEMC^8eU$ZMy)24co}iT^=;cXTNs?ZkqLrlR z<*8aps$R~<1uo@!)AaIett4A7PuEJ)_3{j@BttLHMEYr*o+(;1^%sSpQc0Fxo}-oI z=;e9HdFT@4%+t%+f6JHrm9Llcsnfz=Mf$8XTz!_HTVpdJ3;jm~$7KO=@bF9EuiXdT zL48&}^1jA-i;#B{=betcTRHC>US z;?J|i%@Kp*lhllxZ44CqCI)^3UK}ZW6L~aKUZ~E(oz4q4VoHkjeP35#{GHnK@)ylMoIc=p(tL3y6 zGVMuD+aS|;OVmzxiL}-D3eI$iv~`@O%CtsKtC49foaU2hUvgTlOgqGBYh_wHr|pnw z;5O>DTV)#juj|1BoEEF6g}4|!EvK!Y3<_q-beFBq{z_ZQOqZ?yEYWMz&2iaAo?Q=ly&x6}xzWO!eARQ5xyy(2l7!U> zp5dYjU&HLtT8lm|Nps1)oVwulga>gViK3oud{W)fmcVxP$0h0g3b~}Z6^GvAy3s@5QV&qIS|j!E zd~IxMYh!}?QO$cb-f!BpaS3MEwg=@cG*~#2yVM6XibHgX>d_i&zL`(?^*-TE)#4n7 z3xj0t%1$+-ARZKlI#6^efyP%*lBD)W_5J<3JxBRa=ET;LgaprNJS3hg@9ha~rrf0N zkfN~PVdx7Jx+39E(3Z({Sd;98OdaU6P|f{LOKE!93@4P4p1`>!C#O>Mr1!7S&HvB3 zy>k55*KL2#Ut70rJ#Fh2`s%D+bn)Q5Y0*IA(qt`tP|FjjMS$YCG`%E~>S3Ybxn@1$ znBr*4ULB3j(#Pf%Y@u4{rgbf9N#^*mdHT5gg7-x2m)UC1*Gq~D8Y!M?KgSkdq?b%L zTkRRGe!4zxj@jzr9#-@mecWs_`m<>CZ2fUIS|wB7wNm8aoMwBggn#d1I^p23)d#^i zkdWIZ9Omo&t8VE52OqFu3;J-JLmY8goot0Ap$(#r4$qnTCNQLYE zz*Nv)Nfg`+{c-OK1ZQ#(qCNGjdG5uUfx`#1=Js(RK|_d+m*_2o4$G~Vl3pWO@TG}forywHiS&*vbdcIs6QLd37$ z@t}Bh%oxJb-$-@KsAP_U&{}ETrk`=g2-baT!*(-4sd@su{lDy9B95SZf8?&u4DvV25^!?>3iB z?}Lgj%W+YSCSm}j2gvJ(A%xgmQfdR6eR8H zb7WLHM?q?|K2JvV;wXp?))&jD)(a2?*|7QMnZhaHQD_sW<$q z4|4Y)xL2Pd$ML)0U>uM_t520tlQ`;76o?@Tr+HZd?nWWY+su%|y`>ZVn_(`8(bOem z0Nk_ClIdn_Ppf$N*ePU6+qSzHi{?b4dS}KPQr@&kw!eQ6+Q*dD*K&s;$k^-!ie*&F zJ*mmRQ$44?lG7ozFW&2(BJz@vsnH5TlXIfVh7Tf<@Gg@_maT1rf}f@H_bzIMQNc8v z@w#BeRnb9`3Z0!(EgNdx%sZVSR9B9k!@Sd^y3&!3qHJ}V4?0=n+}D(Hl@Ato| z?>SLlPw-+Ls$x~OGyHl0Iv}R5Um!2XdAw#Wq?N`-)TFLXrkn0KrFOziQhI1|+g_Vds;80R61;XJ&Xs6YMjy?m?n z4AZ!}`V5G@rTO-IE^3ZHMyL=yH#c-M7d27fS6QxTc6C=xN0G4SR?{(+wu=*N@=*e|JYWKc}a!f(F z9%EksFLLAc0nZCH+mX5Z#XH3V4$b%vo9V_gOf_^WdIt87DD3%1)NPpwd$w=+Hc4|j zU2F7y13wyh-UDtaT9uF7&GJE#ufux(I#-dZ_?Cj&8Jp0$&87IE_k=ih96E;zDNi(N zJGO*Q_a1QOH!427!RjUO!pq^mpTG&a)r$WP3c=hh7J^ER?zRMKD$O-F zN0;@LF!T@b3on7441V!u7c<Eg}%cHndB=pUa)M`_quN-enAG#Sm( zFuL)&;QNUV9qeK@h;bd`GF1Dj9Cuz`E4L5tRz{+L@3&YqWw+oZsx+sq!i}o&Z^2j7 zXC-;N33y(1iYxeuZf?4Dt6RM+clTtM#`Ywu=KJG5;A+m=*8rh%4%s+SFHL{idjug`HU=k=xFQvaD zg)lrKMhZ3BcO2{z5pqTn-u)90uFSj>fOHjwH!{rb3*FQLZ(ZosCCG74LT*FbHawYm zU^&6;8pSa+%}Tj#+ngMp1;Fm@ZJ-W&-3+)%VzurX5FIbpi1!CS9#9EF8QInEI_n+hl7Tw>@qWgY|Fma2~hx#HXywD{k zm>n0IRj_RTI9r`8+ds+{!Lt3iwg{H(&*-q;Y%;Yb=xikF#f;+c&IJ{XBtm(N6OReF z`FacE#F7L8+9Dx$B;G}Y?2&Yj8Y6!s9${%e+?tw57(v?e6i@O1Z+&dif|IzkD?Z@N z)zsJ?RCrQ|d=(00nGnIt5bZ3hy57e+rO8RTKmEUr@QRPzVy*Z%-v9d9{{6F4KpfrB z!k5L`-p*JS*_Yq3r=n=(FZD}wgzKrFavuhHA9h6d;aj{92S@keTjoAgXVV^Jx`1oj zPTiOgG36NfPTMTy)6C~-7LzfV!VhM4Mhx+e!iM(o#K9Sx9Yg3}b#t+Mh{Lc$JMW&m zY~aAVXJWV6X6#dVJ*E{ye6Oe@Vr)V`!N>&Jfth&z^dqq|v8u1RYC*XfVPR##QCj_77=xAlfMBLqR^*4xWl@9pT;`^TwU@9D1pu=Q4*y7gw+kO*(R+iVd+5z7|A zTd&v_!CUX5u2Z(&*|r?KvyyEQyt6uOsET)1*cQP%>vM{*e7w$Jv+p^=G7zmZz%JC& z)fLgom`{uc`udc&*%Nv#?4+7v{`!E44@`B0CZl$iTBzRvc1fuaTlo02F3E_4E=V2S zW7J&j=WriM%Qmru{y9aH)yt@!-?DXy?=;hLkx2G@jq^80^bVzBNVS?roRd9GvS+h5 zMx{2?m)Xb@LC0_R;kKbZQ}c*xvN|y^&KYy}VpG{t$fCcJNb4oeV|V6hRA*?%Ckd>B zp^i02uR%Nx7KGunlhqN7UKA?$S@Gx7Z_Oj_$)2Z-VF3OzhRy*$bw--Ycw&jtE}?`C zsi^u5>c=Wn8h+6xx1@cl4^N<(XpYBUUXA#M+lA>hf&HMdrubn8t*sf$6h(j^IT!&R z*c^$pmLxdU5&AH!cVNP_f);gv4m$XJ8W?D<(6~oBBH=;7&^?oS;ZY~V1$yaa)2f3s zk+Y$Wfo$27P575Rk3z`gIgipt0z78>=tkL24c^i&_doI-eTZV^5YTalZM6u`6(@O5 zM1*|=Dmk3GDpZ8WO8n!_d=u@idziZSXmyZrn>u*@Xo=H)z{b8$;xoXMz-On^%wiR! z4l|=0$nr?FReT;~+KKUlI(Pm!i5uRF;)b;*Zt%P&HB3?L_2_}TnX$rOO|0P2rSdMa zE$%k)!4(1@43_u+bfL({*kHQVDaHj8tWU-S<<=+Tfy=B<#sXR0rt~J`fHSOA#sIyo zPu~Bq!Y)2}_aCx8dGG(T%i8;pzszS{B6sGR9<;1|yZNBW!LB_|UR_*@??*b^TIps+ z_lCtX=vMr_T#PPKM%!(1C&l^(jQ4^YsQJA_)=Vu5^HM~G~^D@kj;XIgzBj7IE7vwoESqd`{7R5 z`@K`>;IYW2kadCVDKM6nUJK79X=Zo*p!P*RU%a^UrNOoQv-UZ8%)uOU*s#x{>EJUr zkc!g?)J2BYCH4uM?mkx25s?KwQ>4Ue=GK3-o0Y6B=V@CswB2`PY-D+!V66NFB=)|0}?$ELFgb00m~E!^$+ z0yIN(hjG(nEyOy<Bwn9 z7{0@#QuV_i%jXkb>mhImY{4->^rB;?!=?6Y9>uDsp}o5a@((ZAijkT859&+?t;P%7 z%F0hrb3C_#cMZko>BaHf`qN3=6K?$v91il;3MQ5GWXvJ^#oNJ#E()3y-x^VPCo-+% zaLRgwmx*}3M*TCzAz0Y~79=WoU-3O5lHWt}jf`ygj3=j_kDa&WIg953#YZwx@Vz~Pm&%8IY-3|=vwjSJALr2xyC0y-g=@j^}GL9JD| zI4@v)Kb}~wHi^R-+@;IT=H|GGvrk93g(po(<4NW`>p6Zchx1Z+GI^r12O>O^CwwAL zzT+PVkLCCV$U*y-aX5$bOcvpf5FXF@5AcvbIg{(;KJ4vpPBLEKG0D%Qm@$WB%(FD5 z`fPV#Dc(R3@tIipt*D?fo#*mngwIE~{R^Js_Hz+Fz~R5}n$$2rUdYfNLi-3# ztCeX-FtzQS+^bi(=EK}d@H}p%k*D@Nl$b6{{K$O?a<2Qt!ti20OMPkf32_|t+e155M>i-ZZ)HI zTe0GQ2HCe|sQngv9Z@8b(3aJLTq8O(KSA-2j^aCSE!)^8LN8UuwASo;l-*AEO|+VI zd!~6eiw>wan3!@cMD3W5`m7SgpBq|0pGMS+3Vv3Hip$VQAx1w?KTS%Sr9gb2D5TH@ zUo*ze)_RD$NPx}8V-o*KlNn$G?D)dI7Vmad?m*oa5?Yhvm_2$v+p5w+p#iUe2PzI3 z=o zdaNT1q4qPGJI{SbXWz@P2NjxiIKg48;(U4>`?`c*!FRH`&FWxo#HiwYKmV(z!+3=A znaFVi)`O>Nds7#@h%$&YKpzT`PU@&GBDFXZxejGS%LvuK0hAJg`T!*2X+S<^7Sr|( z4g6P^NCs=Fo^y!QX@rSFk#D*pvQqzjR8i={mx*xsEoeKM(=9KV)>7oW-U1Utz?e{W zaSBBlI#xi(t=}#AUN=_Ir8MzlA;$qPvAUVJru}z{uM@YB_TLju)rw~+(q5)#2< zZ2O&xZx9D=_bA3$F7^W?tB}e#+*~nxa@2Q#W8wKqW>D5wMFL}5yeE4pLXn`AYNaiW z=dH~>jzqL(>foIf7Ns^v8c%?pY^1j%44<6Ewy~+#K?&%GXuEY)PQE?=Pkm}@j_DJ| zovm*6!5M%9Fv}AtW-bFu-Kq{T_S1~h^r#m$n;Iy9hdrIl)>qR4#m>6xoz$N`HSHI8 zKG7OSDgN^aEx)s(0sv;L0O`$JLtD(CQrDLeInnlCdf8WP@)%mR z342(i@gKU#Xc}PBYq;jp%#^`f@cINU21FAdj=V7KM9H(Hhl-~Aj7 z9+jAbuQ?VG^fq<-t-sQxa`j0#tK3-hHq{IAG4$@|+}g|phlnssmLKDc703wMGW4X# zczHjEh%hq_L=)yw=vI8&-Qu*>+02;4l;G4mHckec@EWeipKF>YuKAiv9QP3`q>Cd z{jQ(YA+6C=z5h)+TpO#I2>orjlX)Z4y+*;5JnqgHFwlT2z&f1rpC{jJ6v zHk^jbNzI50>HbX{q#oCnntb{i*uxR^n=0D(kEH_d%p|}x2H`x@Ra%Yp4418n|86My zY&OR+nZ5)}w!>|^WLgvb1bDqfTgQ{dvOleaAmAyF_DY_~(B3XH)Sd0y@9C#gYV?GT zhY_!NPHnTOVxH6Cx%3?{L25cic=nd7yXtyE3g{JTs3_ah6nM~Swl<%#{uz}S3tM?_ znqCrUNkwgzn*?XGtUvrB0V^aS^tjNWPZ`2KYO_Jun)RK4-nmKUriS1{4TL7~Pit(B zpMmNeU{8NAU9hLII-v*Kqm|r2m3U9M)MNo~_bUFck26%VTCC@-IET?f5j79tJ^Z$x zX+Dz=O&6Er@jnBZ=6woenwsLU^br<+oIo_f7r31Im%+dtlM~Mw3CO{^xUFx-IYL)` zK?q0{>CuDFbFMKBaf`(nccs%zyN=I}7Cy2^2zE*I5UIo#O8Ey{Q`suZ);X2+ErEwy zypdiHyje6%eO)^o8uTX9YO=}%6N|$TR*eI6aa}^q$!yi_+v(}M@e)4bv`>hJN;(X_ z)owLC{9`rzS99M+S$!Mh^zBsBP_lo`$;qBC>1c-Gf6o`;J&;+T(I0!XBN9WpJVGeO z5IRuaEiO%TdE+_MWLUS+0=c^lcnjQ!M+BmajI|MyP}8~I4bMfS3WG_ir5IT>f1!(R zIwD_nzK9oS+8F(lL_o3zV+0|1fyDr2^|<_oydN`4?9U1awj-xE6{aJ#@T4$-1xi7z z>r?Lwf(zGlk=2LwOVoDAQ=e@bF8-NeXoTVi)2ZemmqWdx?z%Y4#Ql^M9!6vKHn?Ta zSlIO@6q)TD;W>?MSf$iearRM&Cc0*qw!`e(?|wwiIKo9*qqi|mQbqjinffyempIgZ zbz@wxVCIK|$C`)Z9G;KO;upakEVkzNw7u&)Zx5Ua;-SH=q&8!L-bCZdpGQ1V0q<;%wW#w zKMyf25MN_ronLDew=CIe23qZfRs+=44dA4N7BUfLJV=di06Qggzlf-&h+^ZP1c#%H zohLyXY&VJ8%i@6?iWJ|}UIKUNp`Uhi zVm2nCHvO8D2v;6A%VvYZ0aq=wP83f@JBTpbDGW#HEr>@7S`AFOP~cBo{swA(An|-om4DV^oMRM|JVR zn2o&x8$0|AHg>0c7&YKYEfjvejlri09=^eJG%Gk_Q0l#Z65?ntAT?;4=RJnmm0ENK z%(hU5=*s;d#%J2d)4v+gHGxR%Mo25ygWnc9`A07D2QVZMVHQyhlOBNelSaK}d9p+d z?Nm+k!tqjl!@Cj6C(!6vI8jDfJeD&BWox;#(id8utU|f#aQ^>5BmDCkp4t#lB>Trm zP}c7fHu;oA^XcMLbMj(k(TnX89r>T7kntoupD)@g?r=r=A}RE&_+E~)_C5*NV6Y&P5+wI=x0RW!m`Tlt1tVrHsx0b_X%@nPo44pha-y}?Ev72l*o5bQOp_ykqt za21~A+z%51e*e9YSDfuUSMgs#2*Nn`khr#a-{RF*d{c0HA$r;S4zIo9cjB`3C_@B} z2R!~o#m0@V{~vMR0v|T15O%#+!q7foS2^uvjDkAoWsSj#V zcM%jZVRtc;WihpAZMBs&w$fHDz7Rzqyb{0{;ERVMpu!Fd@(}V)_J6+T-kF_E0;RwI z@7G^GAJ~~YckaD&?z!i6&pn6MIg8iNfhNX;&j?-#ET8{1&8@d7PMx1ma1ItEx30W} z#`hi~0dW9P-!e@8IR^#t49vmd7GfEP!7|SIm<8GRgOa-hil>oW)vvznfFkhH*frhq zTAUG0e2zRvBX$Y3IXGa`op7t47Y5&<2?!RyRMs*;o%mRYib5EQxa!L*_bfH6v4Rarfe@g4*KAuY|{(X{FB5Dj@>i4tdh63yQGKVB0p7*7TDPZ_5O0y3`A zvrRTde_M~pMTQtm^>d+p@X|f1KSA_Abl`b77j-vT7;$?N6z>m#&HCTIr_r&i&dmpb zk6qs|7v=d6(4rhoa~-;>cWa~?n<`9I&Ic*}MgLYN#bFG*iw;4dwe%oWW18#eG_*`^zdg<}n{V7pEig5y`YP0>aklr5h{ z?Szh3QHy=(>irVS2b4DfxX3oCD6#f0H%H~W{_mjk(njWQKEM_<{|A`Mwt0j}YXrT? z5B2^VGlXgq$Lh;LY4E2bV`r3u6IB{UGHwDbF=@b{9@Z^6ECTJN1&qE2tG*>L)}T{V z*~o2&{jr*1FMaGjz$a=ag&uIEtR=&J0PAS*K3+#sCAlX-< z<`V?drD=sCfZt6A+afinftYxF6q4^c5995<35p)KSMW0IhVh~~`U7{FrU)t%8=_bs zjlnhlu_4h=Gcnku^rqOliF27Sf4L`A=j+A-yo<}2{~>C5CR*h zp$T=25N~`BneW4B%in$*i6o5x9o8RdVP$Cni=iLWJ1+6g6L<#&#ykJ`){qlFKwWIO zhMLxK-5XFh%OWQ}`E68A%%_F?{vtMLenhWq4)QB!;T04ZuM~aDJbk$Kwy;{iBgB7X zB@G?_ye*PlOE^(cwwU0Pp9f;=ISL#|6u96>6qCc%S1cqEEDyWSm8WY{U4`02R}ofU z2UapNA0FU~QKUftbvjC`%33D6FV=nvj9`Vf!E>=tgonpf_VaCVXJHW!r58M3RVIw} z)q2j=I%qLAhW{R%WMdOsU3hhs>2MmZuS_6)`YW8e`+(ZXok(<+n$ub}GZ!cEZmbap zF|5jXRIKBQ9@|(p^T|5-B%I{KF1U!EmJ^SMr_Jms)kxS%j|*hd)(tt$qKBYE4X0@J zIqQX|t!=%wde#0xL5F>F6SY(j%v>F~Ss6+KkGF+zYBN=NVso(27G4>=%Lec1W0 z6@1B&yDztry054L$fc(5872Ue8%K)e8G&J3deAeAOKo*!SBw(wJe3Lh7sAb2g5+Zh z$>2Ha`DI(A(6cC**^V_7Hw>RtjVD8zR_)>=GC0K>yo&u-R(+SOM4WiaoP9j>;e72X zht7WRhFw&DT)52TYvUd42~9>rm37iVTS=mqfHB5Vi{Hs~)AMO*!X~qG0_}*d3asc(q{{ubHh@ zWqun`m5_Vg;fVeZdTJ88I+D)>9Y%?s-pX$>J^OVn(X-jRAogc?lHSbFnsg-XsZ6S% zFDh$(!0jw+e#CPg*383Q4UO1}^W@*NeE(ms1P6IN|DHK4!uozz`Tt<~)e%_uk`HjQ~JyN1S~ z@7XQ&k-4u5J>qNV5j$#mD8sp>U8d25h8n6Bj|O}zRaIk@S8o?&{@03ByfIZfmav2% z>>0aC1=qaWTH`%yjqgF#SMH2NmiEPd;%sb78&XT3YGDKz0h?YPL@a%MgOJjmxKIdY z{+$+)Fa2T?&>q<-DKlX$i=KE=x=X01x6s4Thzr`K^jEe}5hB#~9c>XkXQ%Pig_s~X zn}pV_6!ah6punX6+oCK3r)S^Cf$M7cs)YXZ6u%PwhF&>r5q$^HE1}e(NBEOI##1=Q z7*AWbMjOO=*7tG3z8bDHq4A=@Kj4*V7W>iqtpXPQp9@&b{Kf){w2KH9zoe2C0r1-^ zzcqcIGik}^n^|1%=#<5EoF$8EI`ObBd0a`(JYW0rU*vHm+Pj1F#;c-vTpzuUbGW+i zKZX3Qcb+JJYk`r!^|_sxPvmcPXZa&DQsIR)ZKX1H9d?grw_*1vaY|wx_X=;}@BnrQc8^qpKZx(@!~Ve7 zpDKvPYss(RJ>WjwF34-f#_H z!m&5}yqr1{gVUlItom^FygMuw_W876X1oQDO9+pNom{bl@i@Diyv6$U9j5E@@(%e; z?77@iAh@%`dT#wcg4YXwO?o&{m_&)!IPXYQCJ~vUZ343s)s-(An4Q9yy_LPejMEo5 z_n>WGwZ~b$8UtL87Q?-0Tw?-u@9GRxc^OrH)au_OEmo!}PY~IB5_B!WbIkMgUZVCrilvY zc66<99x!s2D+LbY$loeI^Hs4j^i{i^-uL9XcocYA&g)_e&cQWqgCkT`F#UqSNPonA z)(W6NH*>A}5T=2cM@lfI|7dS50;whj+yf9rd$oSHe1~KyswJ0Yv);xVwR? z>U*`D{)+~H%dFPl>G(h9@9I;eSsHoTw@FMpIiFX3UmHb|x1>dRi-^r+@Rz@S$^2yx z%5fHr=DDJ$jU8bN9PUd+vt`Uk1nGw(Uj} z?=G9c74lLuP!+L(^N{4(^OckqXT=fFJ`+r1V5BS4I4fcb;4Tp8MS|IRet9xcfXaA;kd85q zRG-cb!mgs(S!<7#fmU=Q17WiyFj^cMy9`WzQ|PgBD|dGIF}!)9F%1JR((x}d3FtX1fCot#YKpj z=E+(xH5sv^QDIvPj4(^-Uqqin|6>I`CeR-zOQob*h4u>MF*EGB$zx_)6ys#=63Y=Y zYz+#z@%|^SupA=W-fkWut5ZyA_f|gSH5f_wVhdG*)6hVR5X=JZ{Hl!^+KD zKK=EudCL;{f0?&@%&f$`<)eC6wMVRH(k?Nd^2xFD&09V>*5AD4Lug6nEgwQ_Y5PB> z7yq;RXTMEd^w08Fu)rf7vD!s<`ezX>-VOhw`sY)hcGW*iXgzE>q5kQ0Ul)sxM~wtsIv8b9Xw zIK3PClwBL1PtyT|uUro)yiDrL;CqX|dM9FA;_pAAFFY&s1&3HAGiZh!Zud+8!(q`A zL~=T-p5UHt)e+DN=bbfl1oy41A0W22kYnS792@8Ph8|ubqCA9+j^hrhI*; zWxoC+YiHr})_GB%`jc2aG&i18n41TzbMt(cxhdkgadba77t-8ZOmh?P3S*ivFTcmU zc;EQlQQFM(IR3HS78dv`P^oi z5|ziLE{lf%)JLzhMZz0}kbYY?Iw#B}Qq5d`5__O~;fZDJv~GFW#r0if3PZ*&7Ba4T= zk(TsxK?%}{KffU%-3_66&O&JVGoeYh^5>Ugd4K^|)Bcqnr8E6a{(J?L;Mxp5L;l*L z{2H--GPKVEmsL*|+tPyreGz*Ehlc}wIYh-4Pg1o*91g(o=?u16Zlp0fRR2mR&0vqf z2tM9D)s+z}7{TrI0PxSou+f_Kf zEetA)klMk2P_6hHi{@Z?YZ*rZ_|e7(_W5-19=^`!$N>)~a)ba5a`0!q&gUos-|}@8 zzdMe@Gfd|4hv7EI0WyMbVz(vdC)IabvO;&o@@_#7+?B|?_xUbU-aVZ}cZ)GX+~wfC z#WUpHP!1rmnByYs=O=Ji!;?hrUs;PMW6<8>3G&HYezKTH`4(T-a+rWaBA^717{NAz zZ+;+0a0N$hn6?B@-o-KUO2n4Mf$?HKRE}&IIiIP1G$GXV6cQqi1kS{kAfeQ79r|}^RYQU6Uc2hs9LH-E z7@;lZL;6(iAR0lqh*|cXVc5sSEYk$z9H=?BnhQu<1;}YtC|kbk#yb=_)&9O>&m_Ls^DT+9| z2`Q>VHDyW4C@0W<_Vv|#%BxO$|(n` zq_x6RWOC>RdZz{rdh@V`dOTTVv^$3M+R6S6?rdsst=S+f^w?w2gfI9M$QEb_jPeQD zXuT6np;l<`Q;7;M(;Ql+s_$w*zwe?c;<({G@L3-fNabZ*j z@ojd3!n2bC&=*hD_&v;9>f$Y8Qf|k2$-E50Rr_?c-iZtREyq4Rak*vu0TmhOxr)Z; zZF+H5qL`Rj=NkY#i$8o6fB5S}|DxVdHF&3b(?^We6-)4`dA0R?j*2sU1x6?z^0&=L z=8r&X?GiDneBAX-+bnuNOMr+&oUOL8`7wi-Two4MARpN@z6kUMCGoZp?(e2b*NXV` z*&FJelfRHIt|O}Csalv*1AXC_fjAhYRPW8+T3^(INtAO!51a<5?{KGkS0@MZ_{E5j zqd0wqBH_sN_`@NeX#?}A%FtA_q4EF3MCYgR@q{On#TaagLDyv9A9v4AaefX|5?c&K zV4pBlXV|hoUMI9vNowu1$j+LT}>bncvz@|+JM%k-e27I%b^(tZO6IiVJel1?Aw>ES~yV!Ry z>f~`9AT-wr(e&s;M4fskR!g+)j}Vi~iFFoj?inrvrtshqt*olP468lSsADd7t(U0$ zskMQ25np%VcS2Uol(OP7DkfPmlVn94fQAH9K8}qEqcwc>*Gfu9qW)|km;LuYyHcLx$PVo#iSkNrI+ww0+R`g5p z2(MxwdE5}1rGd=RxXI=Dx8T?gL}7*_;wQqz{$R7%dC0VAM43cX_c*=pvmmPaHd2+~ z9H|%KG}C4hM~~7Zj>I8$?PJiUB3EWGJz2`8n8t1+3^-hS?hgB3{gg2LM<=?)@m*H^SwOKU93)Cs@LBAe;dVPOzJ%6m|X?c%O^G zKAGL<@!Td}MRQA|ZDQ|&R)SpO*|nndHCU|kAb=tIFVNn%mO95y`UmtIYQ)))H*xjE zFO3*7`d?a^UX+0m@)|sXzyOs7`mUkhP~BZk5q)N(n97e6gpb;NjTRrZsXeI1t&P~* z|6ZsZh^42lOqD9fNN&24%1B3aGG5^||D%L+W$19Rk$kPU(QHoPR5j>8rzx(`#P_LU zBVsF#0Eh+C$a$D*e9^$3xS`8X12+Vhk7D7H(jN6Ot$By4z0Rk0H-LM`tMfB#u+-uf zt^%R#zr-o}JgO0D{ebEsCPAPIQn9ziHoaGUnQ@*YdkasJ)|U?k_8nO&c;`O>u)edX zjlu>2u;OHb%_wvUzJf*cGUGlAN1N1n8T9B{tuG$xedIf@#xs!pFLYRde3K~j9Xd_~ zq@1Nu$mGFmZQf=(hBl$|&~Q*uuSL*;IhauV=|4x4klulQ*V!QLa3XWn_dBYXQ%{ue zxb={cUUr;)H?=*Cbbu4L^BLL!ox&F(gm_>Cz9`g8vOm!TJPBTB8?rfPl{ya%q2&?B zE$oHQ;(rAgpLN{8eZ@raWSo>A0h*$phma$4K9DP>Nx_PVQ|E_{;Vl$HyA~_vbFS(Z zRp;;Ks>!p}dM-*fs@2c=URvn&8XS^1?`IB0M@j{4o4L&MTbMgaN~j|yftCjqM!I%F z;|<-{JBb5aYN>dl-*Sv0M6kV?YAn6k{FvWkvIKaxy8)iySlf_IHGq-+J%bgO(e?cX zmtiGOG0R4@8J`;k(honO%q^F$C>uoNv%ah>)mrcEqoxj>OX364VwI4{F@fl4I{i+B zB?-!ex0QsAHfl@zX4MbQz;aF&PDNpb1x~gm+1_uHc@4f$c&EI-$f(f7u>hzj=w~UW zFs)%-8p%yK&RXK?6H59og5WyX%kYlP-CH^ovBg65zX_G#W=_?JxXAoahC-7SIS86N z5jCJccsp9$w~)dYFBJM+f)7v1W8QEnI!+zVtkd{9rQmPR-5 zGi1Y31;=k|COBdg(%7^~$|nc_oujKhEJGp@gnwxv&r%MUMwi3^fn&X7Jhwg?$8+lw zy7jkhaD`8!+3Ta(^uIva1prhZGK%Q8u<}bX^f$QM&9b9u+q*F^jAt^H<=qYL(aRv~ zax5j&wkM3NR|n#}Yhc?Oq%t`CRo~(at{Hj0wAc!+sNe^a~&g2bs|h!@TiWXg&r*XPOZaVoioctjVxCRNP7x zf=gMbISB2faVxbx7tW7y1q#yAfg|TdSUt!HPVB1$5@qL-zk;268Rk)9igtc+;(Kx$V$(%`w$03nW-fr$jb zM7%#p7BZ|03z-+gLO|Oq3?A^Al?Tl0%mYYzT(DYQ0x0>B++>m6-IvE&&JjHOXJ8cG z&hUZE3=u-49aRK+!cR`Fb2)oSM%uYt^qa>0vbW?uYk7YzXRpam+s$@BQ`g*2^6M0Ef;?WM^-MgD zw?zw>K7Jn!W)4f)zsT+KV@LFLrhtEm1}*QB+hvudGSj~qMileTxm|u|smVm|I?FJb z`s7&(nEGT|3YhwwX(?c`n9K!C((0L{HMd49W8?G7%3TrL7^0bLVSOOJInxtEbD_=jB#xaEmJtDb?l(JXkYzEngk zcGGNpsUb7Qk1;07{sMyiJ)ffL9w%#a^xBNmq~RG9eDi+c$WZE?<#H*W37wW%p=Fs3 z`2SjCiDHeV%Qg10SYzq5#x_b@ZMtQRWpuN~3LLR(EV1hvJKG`GST|7MHKsUtjSY!8 z*K%ec6{}3d6xTbs451 z+$#b@gE2+zHZeuoHZecxVt&%a{2<#6(Wd_XgEO#`-``?F_g^8!)N8Reh3O1foAJNu zkD{(jEyBvA5yosC(8}CsU77e?oJWYRO{8=_#kINL##J-?4KsR0*QQIX%z7E%uIFPW znb!XvX@We$TX(gdfs1=16sNW(yH@wK!`ezBV>_Y(K7s#6W;f=32vWSiuw|4}>@Te5Ol_u-7eN8km3;vznhC}SW*M7wovS4YhB2hg$}lpx z@eA6RlxKorWOoRL;WCyzo1eVPCBwj`SI{pRhR*E51%I~TXAn61cW=)(a7p#yR0Xu| zU`iJAjG`feU&z1;8A!Z(cAFSLdiNa5-WJ2L(s>9OQGNyT)6I;kz872hBQp$sMK}^tpt!Q1826P`|t@tu|@6Hg*zMb9QmAJCYyi4zCF z5iG`cdZM;Y`z(M2X_?jRc~$F44&<@xRm9y}3t1hn*tRPjuYx7RY^(M-0&{pSXSt?% z_rw!kl8b_Ki{%rX#thEQmv^<3Whm(sOMVa+KM zcm96h9q*U%m%GoE;aA=4@41*u8{COGn^gZCsI-X0>e*Mlsh)RO{MUk+q;3-KMt+=~ z49;=MUJzyyHh#b1Gr|`n%s|L#hQAbbd<_v__>Alb3}YdONaZhVNSBbkA&|#H4$ZZ9 zRdV$4BlOmlfq^XQd^_Y*EssT=pR|E2>O|D}b0O;Nu!=e-^8GkWm8I{s4lni$;!-g%SP@HhCk0PeN!o`Dfu(xCd`;91RpCLYdub}Bz2uyam%C+_f7 z_0CPwpQ4_p0)L_FW*?3SEYR-|Hkm*wGjw{rH&uG0H(Zwar1mG-8+hvv{Es6FVlF4d zF?O-L*lKKF&&`rgKIWCMka6>7#=*smk9W{@aO`AMS?l1%w3ZzZf!K2vOBCtPh^jC$ zKgQR^?CAF;H(JG+tbT)r<_wl^q@nXURr2mN?hs$D`tN0<3|;168{cBX`w9qnOZyXn)t7@2Gu;@)-wjKLx5+l37P%$e(a6vB@_d1zz(PgsGrG|L0feQh0FMd? z20LdUPvQ0FNe{f~vx&X)x8T(_uo!%l;PD%}TRDE5JOWS5lRl4#z5k9lpkda>5+P{> z4mpCG#@%U-fMm_v={9s(GHL@VTpC5+=v+PhxH(sUZ#9rTwvGj&cRvn@erQ5;BY#_8 z&_hV8ds=vN<{VW0>uqsHt-+9%o&y=jCi^S#idgs_q9e6tqS>x-G3DF)*;gi&A%-M& zb9@4l{(^W(C8GQKVjCU)*gAr_f<<9Vi73$u&L5yYTZ`Gb;GQ<)qvydX2MBlGSi`MC zBHgXh{pGf=4oA1~zu(K@l6?aWJ0^CPn551bECiG;|CS+;g=IGf!$Y_#yg*F|iuiDr&Y)5haTi0ZyW>w}Jx9 za%F|D6rPub4ieyoXt}OX`=LbXjhR1z?XI(;cGsMNNyf8W*{XX|=+o~KaUl-PhQCL% zp=Dg=$r81T9VEwb>o1+8^&RP5TK6o`MEGLyrOEWA02Y#wbeq~CbuzZvzvG-2Aa%gB zW3&$HoYThLpUFgS-Ly^$0h8~ZEW_@wYfaYK6<)s|{>tWD$rjh{O zd^qWho{W*|a}e|D`PE`dvocyEff2Y13~c+=oydY78-=ZAP;102#QKX!BNcr()?nyp z+|h`B0~=Ts!FqfdO+qRM)9KU17Oz;sLD+WFhe-xtjv%-vODfE-*f|IstWUgng@H5N z6)J9THokKOXETA=0+OK6X z(EcZ!Ao5_v$eVO&pc2jrT4e={>Xq~OdI4Wg=IbeZ{X9b8SH1}8?#5ig-wh=9*HROG z@12fmhrFTnox<0L-^TT1z6N>H`cCBQd5BincQL!?JkQr}^Yy)ay_ByvL3Qo>0bPfG z4xdHSaiYF#o_RIdym~%GToEP`5^k<{Vodm}W&wyON(ZAL?i2y1x4Tl#d5;=b&zo2G znpYSSHwkFgOr36GxvL>+;l!j}@qkHpli2a;SZU0h9D@rDi zqJ{Sz7nBqzd#*)3bPqlIEmMiz78C6l;DWXI>4wStU8?d&i_7)_x}g?;(+kBAQF~`mQh%9Xrykj@=YONWiPTbs2$pp<|D=>e#Y&jE)_A$eg7$$YGPm%a&lb$tIUA zFWM?BSB;Nq1gaMB^*p|w!q=1e8p~Cy!Xgn1WJ5JpYYi3&FOX4AtXOw)=*5yar5e{Y zD6YoZt-(sE#>!<`uo~;O1}mi+tF{I!r5bCt1}mi+E4BtJg;$CG1!j*VEb8;-rQ?VX zGOp^^vq5W0sksH_r$EDR}t8s+l#cB0zqPc zl|#9wkO`dl?e%f3SgI_du|!(~AuLLk^onD` zld>eg#d!J6BO<=%!}KUP%| zLF2Rd9))|ejmPvmdJB)G-_g3D@H;{|ycuwIFxhUl$XfO=wv!y3ozhs(8I=7=amd^* z_U3a@dFQIV&cF)8|1PA69UCA*`7>=CBV5EKA+aqzUiH6?%egX5=pF?sAj7gat)Y%e zerX478O7>QvUXVju6zY1>D0D{KKBcKtQ@!Oo$(vC3w&bJ_yXOKmJQ|K;=Eya2ldCc z&C}n)D$^{S3Cf_6HVbcpVK&poQOWKE&#*fI;x|=^VWM@r`!2$a^zg+{`Na-o*=#rz z-5Imn$ZCW>30fGx%5D#=$-B>yTD*S%t%T4YE;C)6jogsbymya7_3woqc@RQeiOWTz z#jhm>L^n2~PFU_6tqxe)n#LV)zruNq{z11>I9c`A#QCaBEQY#(h);SG^&E5ziuKSE zzE=eHyT^47$@}M}Em)mUJfzbNW6D6bt?lp(^s;SD@xXgBJ<*d|zK6Y5da*xw`9?*_ zSLg=L0E}qD!a-jg+I$uKE-|D(cW}n}!HQ=DZqN9AifjLN}E_FZ{~eOE5;FvxJQl3h-oVV9HhEw$O>kzI--MR&km%OH+p6#m}l4t<~44MgBE2y(aU&) zeK5X<*IbKmDREnxW0#Wp)@T7cXe_Z5up7u` zDnEdjPXV6`QUD=V76-uh!9u%$H6`z!M8^7g;%>K{nBcvE55(O*2Qh%j^fuq^N}~oQ zn(tv~)6Dnc>AhLlIw6dmA~AP@{LRO2@BuOBNn!jS96lLA+B zXxgQ)L_LLPcKJ;8;~>(?KN;33ksD_thzv*FmP085G?2?8SM_~v@a(Ce6vWfDy2>3xGUU&3#ySI_b`Crx*jwcO=#jL8pg#Q~tYc!j{v6IZI(ax3 zu84X#4~X$^jz?$+$Qvi|Z#HUqwu3*6ti*=Wa4B(|>ENyO;WYli2}0%=Zfx5a1dL77 zfyFFykdSy^oGc11#qcT+1Z^URcpu5W4p#*(CFX*fm!c*RKiw4?>lg9vDyceEEyVLd zpa8R6BM}+CqK^u%b>FjbCa!01!Gp?_#EK%<@L+ELaD3I6%Ij@cYdg!DGu+3@nv>jz zd>h<7%4YSq<*B|(VLK?47+WBJbMdP#*~YEs6LR7_d?Ed6hd7=S%QD1CFyA7&6Cu{f z;8Q#Sw2)vo_%$%MI1M;6g)dWR;pC52eP{G!l%9x6cgCUZ8DfvgyAT*blJI#HIhYx{TPAv-6)EoZQ7jC906j_d<76a~Es|{0 zE>bG0zUeSFPjgfjJMjIG-j?A%eLmZlSN_G=ViVXsQR1}C#A$yf8Ys3^7TU_12{U#& zk#EyIxUBhd)prjyC4}D|rBz&lWL0Cdoxwi+D^vRWHhA{GnY)Zny{PQJg!MY5=x{_c zzPYR=&yzgX+d*9W^oX#L4<^14V{(EQOpNl;Zwk~`+zDwPF)6lb9}b=9%96meZOy}5 zPu>Kr%D2aOk@^$p*lOf@X-*=UFTr(et=e?jyw&x}Pe>y~q{0-#Q2EytrbU z6oy2S)UJmQMo4w+#uVQ&B{;{dT80H==TnK|W&rcvI3_5zUZjMex1eUcG+xaj~bafgG$mc?Y4|wz?GY0wsv~UV#alOw4 zM^L%+ViVJdM;JzM0awOI#uT##I**@W73C&a*8g%SkLaHh`oY4C#A96-*$YDKf=}V- zMm|RCAWpQ_X&l36|8eY7(yM0+awfdAlQST)OoV4@24AvOGu0uq@Sd_Q5P!T`EkU>Z{#oI~@?HAFP67bT`#7kq1)sNij?vY4_bTKV^_s=WS zmi_hSJES8jacvrLilHjqKu`|d`ExeJ=Ia%$a13!18E?IUrZJ9ox2_~XNd3-^%Xn1r&I7)IA zX(lPl{zf#UGEE=W%Dy}mC9qlhTsvtJk5(*jeJkdDBvT#Ut&nV;-Gp{LOnT7VdlHRi zy|oF^1;Sij@82Yos4=A(Q)f5oiZs1MlQIY%b&jmdqve{wD)G2J!9>-68z=uc9ysa! zK)j~<-nF8n{sP@q5l)U2`IR>|K@A)x)xZ)S{fAUm);v`8Jr3^LJW2KGd@)S*!`3#o zG6f=5p&UsJqtbCsS>j9zaOTIG7-xFO`MosW!cGL0{af^n6)>`Vz;BR7MCA?4&}{A` z;ECT&CCk=Q9kT^}YI8*7BD5p!b&J74&g3gXd|$5?umWe<4Cm#l{~Wqm2Dxa36Jx!n z!<^ad+K}TRCTcu^-n>L;h3+C6_5{U!RlPIO+zqQW>{&8vV8u@@kxYm z>cw}2HvS5Sl{amqo@b9Cnv$Qx5&|iLDbg_kgri|?hU#x~!W$&togTBVAMo+MKG?$R zhmS;ff%b5S)pc{6TwRyjSP+j{6nK1-%qS%GnU?x$V-{&g$%%C{9dh1k-ZJHEAdk zpV|y3s+7{IhB1lx?(3q?-G|s{s|QAKV4McGD`y14;ka`HlhVSerN{*p%DOB`3EYw5 z-{CnDxWwP!`P!f=LyyV5YbKs8+TqYUA4VeK>cBv3W`{qaf$oahB`gE|X9Ir)W6|g% zEfF1|a4HM!$PIo!GW3Y_(|7SP{iCb)BL8WyPrt_PdQCG^*!+O%Jz|qnPfMRTOuiNh zy}2U-_iRFvavM|D0>Ys|;xd;m`vBoL&`qJDE?C7*ADv>H(6h;eGpC_he*6sErKEjf zE8&VdA98egi#Qf^SjF{ud|k%ZLV<@w*!Ap5y%Hl+ni%uaaZ_K?S2aZmjU+H8q2bE< zv8YjGNmA4VB8(y}Y$mCRiyB3qOfroker*0mqxdpMYB+|pX*zr#I(IASoS<(o*)mAV zS2LjUU`SFtLkv4o27#_v@eCmLn_wJ(GADcmy`0J>B}?Joj+tLwnP$S`x5rp6CaU%& z=;Nl)AJ2ikNmc~sV1;10AfCAl|RwKWAR6ygoMZoc>RGh^vX|Ux#>A2%0rlW z%o9~ehWvR!q9QhJid;o-Sn~g|orRP9KqBFq{&c%#v{}))`|hWxH3+*s>eKJVMXf;# zQli!%Pl{;`Vxm+pwR8OuYGPThA`5vpTlfDY$f8~K9ka2P%}kTCR51&NFt8#;3In&H z2U;Bq*TR+NydL6i+6TDnPj{8K+bXs*doF7o=006r@*yd=%LY@=q~WSh^{38Cvl~DG z3m+xHc9p@Shi6ruHCA2nnaDvr{iu&f;%Pn53X#NQz95ol>k;K`A0IW&Z(d0FTzM@o zZ5J+Y?K6%V zMT?B0grgRBE|xKUe7+7J{qFuF5#2$oGW42D1~cb(K06Yz#J;6^dWj5{7L z?vTMt^_9xI!|QPOP6Fb%leYL|f)Z<4Fb2^>5KaGd=ugx&!llqRZ;TKJLO4FdcTMv06wpeK==5b|hma{#e>3&)GcC$f61}G}39j`_eQLsI!dc7`Q=?*rDID{}#nR%bKow%EObc7RkyKe_q{^TYYB<23uzX{&U?=ireg7_fP z#5whmWQAYy^sASqGNDHytM0psA{F>=IjAJ*N<}bAovW1bcTA<3A8y+iAk`*2QW;-S z;BxzF-M^&vrYi2Cqo~+@ZrSWeru%eUPmibTiSGF9$k@^0%~#WZA2lN1j^f$P8-Wvf z>r2BH2n+##ei&*mc0{1}dzOnwaMZOl#Z9&VS+-+YJ& zngXn06s(_VG2*;Mc1JyKiDTeYR(ajB602Ep|D(tkN#p>vZ4>CHp+72 zGes(10!dMLEutV%lO>9~2YpzHT$lmmyBr{eR*Z#oJT_W85Z_>il<;QV7ZI52e+fr( z2N3$o`LN(+baF7TfXqeTX-+P|@SYTB{H7{$s+k?9iJd%=z@7k7GA+5Qx>tfqPr+dr zjXm)_agL3|J_#gV@d*yq|24@d`mIJfYR;6vE8ZJ6h`>^V2u!0QCfV3ZGAQ)~n0T3*ZqS&@xbSyTMilyKAdQO+P5KPtWMc@UJv*`+>f(fTF4}r0@#p*r ziHdf(A})J}5p*!caD*8=J`qaTMYx`l6=zXG_wA3EDU>bJ);XjOX78X$TCk>ZNBMUp zSKq0G|F$9tU~>~btjNIC{lY?&A0UKPjO3O6W>yTqheAoYhvC}lF7!6p-C2G!-7+51 z{LX;?&W7vSMBYjIni&Rj(kF>lZh(GS^GI8SUkQImMPpG^WfmX%;(wiLs9&_?q6(WOe@*GQeAd8U8r?`Ur@u?rJ}&G?32H0N8Eq2C&;- z+Jwdlg9KCk*}2$B_q?WU4gU?*s@@^>tS7GWm%$PGJ{rX6sG2AsFp+Zv5RN-;FsHdkXV*As7WWz?Q}Kg>#1S249ZMvK0aPby-<-k=Yp-thVTs{z z=rHT7G$cPlsZA69Az}}Bo&v$?)bf3Q;%bYCWBE2w`WWcdf%}Bf|57`bDM+OB(SsZ$ zpCdzJGs3b1dE!&nCpfQq?kSyVQ&$di!M8OOb2#@YfPTN_v}#zjoKyApquENifJkT7 z3SSY2xrFsgoDj#DhUQz{v9(eq4knQy~x1$YQ>qSDT*v(zRYJ=WkEDb zK7pnJ;Cka%QP4Q7pt-FRXs$U0f3Q=AO~Jnln^k?Iuz`==NnrC_U-A9^+ODwqq1P$G zrV_BJ{-r>rtx1a5d;c^^Q0-Y$qd+^R{Achfm0?ETAA9tx0CFc^3RK(vuhuCg9sIu!%{1<^JfTCSxT8hVjvS|3S~>PSaZaKeiTR zC+f0Kf&~~gdSNOMu%hWJ4L9tv8NIfp#m+^+K9%d$VLU6 z4NmR~HI9FfhJdI$X7n`zQgPA`h?=>{7L21`O?Yyy1;+WxTG?L*4g3~pRWEZ(KrY+7 z8_VNJiD67YIO946al5jFd1eHT*?y^gF;;lM(0tc9MrB^D9j}ZZOLF&xP*rIbu0GxZ z5%;^wtJs(`%}J_Frs}(wek&ZKjOw1v^m3Fi-P*~!_i9T3i!)9TzoJ{;-cIo=DpNni zWEHuFSFD%Qg@d>3Pw{Gs(#6w8gno`i^*0hFs*A~@dAiD+r)TNeiVurA#e6oW>Pysl zC{cL3xD#d50*zzvcNT=SM5m12qwUO&0KN@l6Z2Ky<+O54pM6i5_jrB?w6ML zucg=?g^zIncZ=bj0+*rR;jRKkZ8!_m;I0Y|EO5>FC+-$amaQz~Rw`sG_1wxr*~(Ga zF)Ln_t#sh7YN>4HO6;&Mnqn8NjK|&5X?D@dZMa+Pwu@Ho!Cgg}U9|EL?y3+hAFVvW ztyIWXG;U?FY~@*QWxZ^rnp;^bTX~IJ*(F$a z0uMU;2i^OFW1B*k_axzVB!T?v0EgSu(u}&E&qI0nkx1zC8=cC^G7=0MzxD2m6X(aX zYv0GbRMnN?fs&6pA?@0atA4a=M_28!!;a=Yr@S83vbR*#JAMb89i4OZ z;bU=xdP52CMopzEr#VFpqIGrjJU?fnr?Fb8V{5=PxI7_6;+DEOsAbDXf#;A2y>MG# zOyb`VV_oDW3EY$dC}8(CVAsrJE_MC}T7-mYJ*Ti;Y5>*K>}8MBYZZvur;X`TJ}wdX zZSGIL!nj)t1R( zl-{GA4@+P#vl_K9%CGWhl>B07A}OROTJT&XQoa^?2Jfy@uT|*vojZBpLR5gN6xw&U z!s9p%o6nH`l3_z@CzS_l2K>}hc@T73BTP9^yvNP#u6_KfXM?K@6a=SUkm%Cg%;sv zdV{!m0XJXCoB6o;t=NdRk0*G|yt^&JlYytx=xOMMB%T02tc20T4P!wyV4ISst@O)O?e?EZ^J;5x53EU#HP&PLpagxFr?7Gj&F+;s{SvIvyGupnGFa# zUdFDW6lUJOBUzEgXTE=#?v3lUZ7po6`?ICKkDlAyu0p+>&)jv>H5}5Y;!x4`IVbKq zr&HHMEL~sIP1i|A*Pk9cdDn}Jxa)o=?s~=Tv0cA@d$j9MTDx{V|908+YHU9Xa?5mE zAJ-Bs08=rUiT|zU=o6HgjK%+o@&sij!|^|Dd4e*N`S`t-C!D>-U_|~$ zEl(=!7N+EX!183V-NK;!cUhjSw_BK%|0c^5l&C|G)FL6s*H@u5L_L}E=n z=dwew{`hfeVT$IrJ1~+)aNW`9P$31F+~03+iatS^IGZdBAd;A(h~Hy*f-+Mq@!w~8 zQpC+m5ygL}HhBi%gt7*A|JcJt&dJo)ed zmhMMl>0bSl)!9)b&nWzf*Zgo|X&pyIxU#J7!yksf{YMK?wPE352Rs7eeN1@SUu4$Wv}nC zeK3*UBU*KPPj({oy(H_z$vXQ`hiE+{ic7c-%W>xOFrG_J(@(VF$B`0xR`}Sxca@aV zMbWLI2{%s}%X637X|^tIkl^!N9Sgc2SM7C{*8y~-lARM6>oA2)m6(6O6@IQUeX zI9VM`ztDTR;`u@>KK-{;%=)sPBBv$Bf1L5ooSGY3Vy0#!PYsU84i9EtB&P?;W;d#) z>ia#W$L-2BBC@&RGoFp8Y%BEUW}dpNt`XlxN(-E5oegkojO*O`>;v5TNTc{{J}6-6mrP7g-@4D0is z@LW>80sP$4M#Qpd)L@42WC(?l`yEd-X}d zjwgL%Y-K-n$?9O?N^kRk=|_WwFX4B;*i)Upr>x~J_cvuN7r3|LSnCgH)Hr55%axw# z?l+DG?Jc6Os*FQ$T9jsZzRTJENN#XUr0ns?M0aX9J6ISgn-Q7liPzTWtbX{2sI*So zHe{8yev!?yY>b`^xD-2##Ml!hHJe)s+dkm#ekHZ)5 z9C%|q4zH48zKT;sF!$gi4t2>*j>@qef9|*Z4yAHT+@DXU-=&g4b5!c=gZhPZUl(uL z8(A!^Tn(GJCudrx=+%OoEtB19V}4tE}hi*HZ!ES^6qVc8|emx}wB&VK}X7Z1k-C zvly@ReYx#And1Y2HR+8?s!gl-iHd$i>eH$6!DzdIMSKG7pz6cVuE1x8*X`#|e)ZKWSPc`r>vb4m8u%o1;a z-+;-%u2b(!TYd){4)KNB4Gw*?Jof|0P|K?k4|R+UZ1}4)n5ygvK5A2!+-j>>)wr!9 z6-e2*byX;_TeN&0XVj1A4@MYda7~j52OmZq@Vm0Iedz=09t7Lq5@tl@&sP#(9>E4u)VYU*j4{{&?ssYM+2YErjy5O<%!=#t-uIpAMAjHyOFz8c#H z&=1_=&=DWe;5((&A{I5GuMvefj*VT!BWddVk^tzW}PA(zTFf_YmXmvT5X1EW{Qv|EpQ1KpxFY->UUem>_ zWr$hJ5c(b4zNtFYm%HPmTXy$v?+UR(9z z&xN^l?Y5Q(0hX@D_C6dL(qvdH6UU37Deg%Si%Q0eEbRS`wXhB`$jPSX)9anPsGSGt zDJ}7OFZ46q5W>3X@tO6`!?ohEoD*RWK>_+WaDH3F9LT6`!j#3^-gN)FtA!Hr19cU} zau=}to=)?3^C`^Vzm4av%7Oa?o)0$h90`{g&%bt_+Em`06f>1nD+7%#2NAO7NgXC4 z1Y|@}+zjo$-7u{Ccg*-%Oz8bS1YV*X2Vh)axZ>)6Jr}{D@i7taUse<&;(f?rF8=P) zl9@oMP3QuYL+09##q(zqP7W7O!U^C)?Cd8KEZ^tJ*;_*of-`O7ghU?smht>hOsOakQFOo4ZHrobrBXVUYk zvb^hrB7PMg7iM1pC_#EC=mKPF( zJ-wytVEf|;a^7K4p+{@i?0qRz7RyNvb><}11}AyJacZ1oc&tzmOEhEb;mOXE)6D&j z6VuG&Ce1t^ztN`Fh(4PA(*y|Oi8ieL%YyXB} zdx^n@-+8P}t%H7w!N2rW5y{-DHwwe`=%Xe{lEx|Jcw?|AV9b z18cg4|I-bTm^>j9T~Yhx?;B3q=ZfZ-J_m~|BGEn}&UYiXtG=RR;=7{XJlM>Aa$oaF z6TbWceRfLtLU_jcUeaa1<6~hR?YH)5q}zNism&HTH=(sFA-t^>6(prBXzNM{uWFO= z^Hl$=hLa-7ov{;@-WgFkO;mL7m$!9Blyq~UB#Ir3OzJ+n^`vvwyS1C{2cHm6qusyN z(iu&}qEI_LvV4^+zd)8hCd>aO%X`c6GFko`S>7T8r}||1 zOj*81mIr0|-Lib6EPqCpUn9%kl;zLK@@!fD2U-3{Sw29P&ynSSk>xg7e!nb#U6$)V zi1Hg{`BGWFS(aZW%WGx%d$RmzvixINUM{JC}aMJDD>P znA?+7oi&r4#m=gC;tGHD&P?+vO9uO1Q(9GBwq=r1)1Mx#k+zyl5;60u(`E{z2sQGn zz`(&X!8Y?8^pn&2#FfF}e?&uZBi^Q-!--?Obq*@NAP}!j6(?B#Fp|x;do_Nux)1#a zBZ`(jC%=Yo3S0#>8RDX_#w9L_YSL#y(9JaRa(EAs zO27T_8!U0Pt^D2L|lL4-{BrK4z}dr@aMx0g3mYtIMp~v z!1n&=ptbyC0GWFGxI){hsNU(2fWkX9n5uf2bdQ$*WNHm3pj`BDvW6_;8Q!%;B0psG z&3fnCkIO6hD*duf5nhH@YEV(@%V_ZT03tQ^b%@Cn9R_6V)XQi*H9)DbPoBpqURu#x zQ9@rdC*g1tuC>qVeXbe36{9;70`DwTFdtcFSvsvXQ8tohB@61%TKdJF zww->{V^MVUpv+z=h z@Xf?S(zz19tdnV`N*5{hsTYUbc2%jQ9S=$&Njk+)`I=+%<^IzD^ z<~JWIt@q6;@tfH2fy^L#ZHGkYL-q3y)8`gcoEkS1;gbYq_X(CTc~;Y!s(lk{mPHW%7$1ohDm} zPIf*uor|uD#W!Pt=c~St72Y~P^7i>}i&?^%g*D+DMt$I#+8g^8zqf+Z=ek$UI+iPM z?v_Nug|{6*+kJ>^{gPfsP0yrY`XC||gJ<6iiFC-f1x0$ZX*UsxLU0zE~9x~CDPx3}V^}K7K3eA`m`eist8Rf*S``6Z9zIu^< z>&+6x*+$7al4mX@2wrR$de5gXphsPmgx%J)SJCe!KBW#@C{TSDXV1R*UbSo z^JNwN`-_v6PUECmDGc=G!ETvxedzuD=3qx#2YZ1STCF=1lVZecc#+zpzIbT0y^JBv zNHm5-bqhO>VZ!kwg^wjJgzERUYcYNX@&HKBdxrW8jW7oxPF7lBRQ&?|!g=`t!i+Ry zArIY;8A~KBl5Q@ck$58!cOHFX8hzt%mVv0o4dve{tXsSLW!IK>&@x#_LPz;pjD*Gp zStNQBdRM15n`U?}A~~H1ja@N4xYy~jH=>vB4+AgqL;4grOopFhuMLP7Xl{Ni#kOkj z1J^}>+N{`B)|03x5cDh2fVO%m_M7QTyqKpARC*(owMRs%&j&!*<=*%^p(N$zo9SVj ze0ZH8%w6c9WOCioK{QmPiv_-VX)87rktZz<{eUjhqZ{Z!i|iuYA;Xi<*hWzQH{M8J z+@HgPP{}zwqNUB)Fy}z!RF*(3+=^a0=;19gHCB_3P~{R2>;ex2(y%vg9^-#Rt@sn; z|Gp^x2RqTG>gTZ#tt;Ybl&tn2bmtM|a~MZ?NoI!pAb<6M^*KG6axs}a9d2e3Po~yH zlWjNY7ha+op{CSm)dO_B5|bPH`(CjaMpsFkbzhCqoWHUqqOI0w;_aPWXs+=#Crpno zdn|sod!T`9o(sVQJM|kBFEg6Wa$RIdfd-mw*lVI0k0e|h5HA4D>R3{_)W!ls43hPG zP^cgqf8f_wGK$p_iV-kYP}vQoE5*?U?AaUA#yxv6zojdMD__Zf6S;2P$H-N>vNgi; zR7yk~SNe7@cPmt-Mgy&AJU{**(du+YD=PW=2cT8y%H{~i!bedO72Sg76^tHO74hzC z(*M~J^>HErPW!^(JHH4W`rahvH(N32uIIpaaQwqiT0B1pdRE7Nf&{f=J&1yK0C8pV zPNHd{SH2f0uoE@5Pz?iYm-A?~y6i}Jb!inw(g)_4_W>|%Yv?Yp=@C4vh8Z`9CPar- zXdTx2XBCA2f@(h!Gh2j-W_D?7`GX zR5o6M|5x8Bk4Y7=>@iNvb3ZYVGq7B$6ITka)#E=%TIeD55nAW~Osx~DC?X@U*N1m) z?wTrfWr6F0e061s>%1YGYETm;gSo^-C3wTEjs4D*&bf~v6Cc-f`f%O3j+n!#+L}Oq zN}Wxqvs2H*4L#;!e}g-$4F zk0&dh^GdxPm#DtXcx)|oT%`KO;i|l2x#HT!*~- z;;6O!#&uBJJX46b=L2)U#(1a~7#9!F`zw`4?^KpTH6rp+q;1rW&~IV5SE2V%f5!j% zI54$w@ufMcXTP^SP4yk8Nw2)V4{^z&ik`j=?$32JO5cGt+W->O8s+TNc&2Q;i2V=D z_F?BX+b3DJ0KW4N#vf9v32 zXTo<&ej_5g{mXCs&ffVOk*pmbScwn(iUv>=fY%}oAn3>sq_2DVkvk!XBxr{#Y%~PX z|Bwzg+;YDYPo>`ny7c>AoVDNZ+^U#13bmse!e+UtmD5VA%y#bJc5b3}PA3>%pUBg) zTl-1-1W}>1?fTUbj{n{Lbfn65+!q^T`H{zxC&t17+tQUJPgK|g^IV`JINmtV#&eQS;xSq&@Hco;h<)O*w`XFd-TOnD zJ1sZk(G=3+xKOoM+6m?b1m$xO=EuLmb7t-!b?z7&923xoV%rI@Cm~?u0sLF;yzlj`%jrq?;1Dv3d6<@lt(Di7HH;n^oT( zlZdA27giD;$y>X*`5M63+r%BH^C4@OR^!!*G06mSeIERlN&~5*QMA5dTynh=FW^s~ zhG#%y{dzHP1VT=lrn_5>c`U@)l({6FRbHPaCR(4(KDgRZeE{CCbN+x&s&n2be)fo; z8}OrNMz|d{_%;Ea$X|A?K7g7&0nSC&z%qoUk68m>2pIBk_9?)-G!yUE>xaa6|7E-X z)ur8Fv|T2aCV}}-|3fS1N-dE22L+0R3U)C90NnbHcEBY?5IsGf>qqau>U4iaTl5}q z+}P>>CBQ4Gy^8ch)^Db2amvtM2EXo_~E0w1xH7D=H#31=(o z>}Lsr^n9~*GJ8j?cbB$-cnTh-{~FsL{&zXjl#ZPS!#+v;EVcMCj){Ixbs=+JcVS>y z5v~rpFAwB_$ARAYY|w`kV#N{n9g;B?Nf|LGwGWl6{wylaai;S%Hm>WPTt6bRDi;}t zPtjj!@z+8gsH}J59;QrAGp??Tt9kixgohYs*HRb3R(Dg1w}q6jPe5TFaftEq2tM2O z|4925xT>n`|8pNGD0FCqqQWw}H87$Br3He9f<{V)MP^Cnl--=7a_W$lh}gZiI2^As zlg(7qOc71fubQ7dEVWEQ6x6KH%6#;&*K|&|hiRdLa{ueQ_CEJs(B|>`_xU9E?8n+` zuf6u#Yp=cb+9iSgYTy{gdQ{^28GK7toJMsy~A=d_6?( zfdD%uZ9NWX(Xhdd`g&YiKYi2?s2-!x3u8unXKS(=z||Oie`jl=7Vq1f+=MLO=PrE2 zi;tcn?HsBtJgj~DE;a@yQ}X1N&-*R@JWR+W?Ba5HACS<6@|cRIb*7+vc5hONo-~X4 zXk1aIr&d520ZFX~dc+&Tw$>4)DZieLh{TQM_X?}>28_>wM55XggayYuXpbwG!onEC zw4y1;2wJy9(Y8!rf`fud+W?HMT;pP+RfVGt;F=ze*PBg*oYEuiR65i^6M=w^nq`yZ{2ok&V$X>DI6;@Qdw8RL;`SEo z5qtHY%by|fAwh?^@cyv~K7LG3YooY7-N-|81ARQ>)->iC>m9^er?DS^84ouGn7P<8ezRz5~E|=(@F`W79TQ$%eVZ;3q4n)1xk*R4tMDQ7^H3Kc}b7Jq*>3iF0 zT?JoX=8AkCPc`s3rR4FPR09tpcR1z??Q_zN+e-3>W6r37dy&COW%E@4$JXqPuQY0r#MIKc{!7Q`V40rfVRFPBCH zuo}QDFt0hr&pHRLa>yW`>e6eGeiOl@N+V%w&BNs|eTGBmBZZiklsZg=811zsM_1Zq zB>f9^OG9y0os4qG>|Pnu`-+&}AKl5l7q9llYrkm3Myez~?g2v&$yqZSB@A;E6DQqn{zSsMfJKt`=hL=uC0ZN5-(KoAD*?OzKGl;>e zW`j5$m|_#!5Ctc{5>O@sO5rjUR7Uf}tE=MBr(PWzAd2}mX2S-~2Q6A^KAS-1B?We9 z3Hf|He|KC1`ds2|sv`)Kyn1Rq{cWu43(of*qaWJgjp&1IU``d2uh8AA?7a6Pyt@yR zu^%t;Q_@Luj5j6@$)D)fE>zdgbbIxgL)7&({k(e3P-7wwW$}^juzpxw(TbC6`rbF- zXjq@f=X!rr_-VCv4wIy=zum2yCGbuxSiNtAqC9fwSWY-NC+yAKGOZPIPVA zmrS}8DN_lpUZU7&$M;?${Rqcl)EpZW;*{w~i0L@@oS5FLFIVo6@=Y75u4-4;PaB%o zQT;!?v|4dVD5~Q|wJp*$M7M4`+#PP8C@vXAawB#kodY$oZkme|(Sr&rqJcw@UDckk z#+7cbace&q&uzSjGd!mHuB0t#b*aPI>no3s!M$IUFaoAJ}G!r z*h^KBT;tSDNvuioXfEE~^+bAq8}~ku`cc$-h)cK2rnO6HcbeEMuXcx>H=MTi3Bokx z0gU)w<+AN^YTySd(hxO-QQ5*ojL-;lKepfI8IelZe)J3T@EWqhhtOK|3|1zF?H2d)P667SBXkirI7hd(vsk$Fg#B| zc_L|tH**6hT*6OYM}{D{utyw1ti-Ai6!n8eC!LV!hdY?)=%NK3sfgMCl^$^^wjAy= z#hz)zELXZGp{?n#_wcW4gNT7meQ1|fZR1Mu@MLT+^mk;}<*px_h3Fnn->JWaQja`@6UUiI=flSKXv^M-OPI*y)Ut+)zDr|dOIS6)}#paHJeSW zS(zR9bN+aBeW_?Oy$m4Iuco6vmN#X>Xt88kNhJM`BE@%N9szNKcZ$JuJt$W>0;GPn`6YmLtim*yOcTkI-9)KI{aQx1suc_~t-^r1g>SmbJ$Ls8bQH zK;8!0&aq|LuCefKJr%zqwXPJrLxYuZ+)~sYAxl~>@~@D+t@dO)wQI!E(;rKZuhf&~ z%GuisNWCa*^aXOKNS7fbpW0idn3umLshBY%vZn3BwWf3}B`pZSmH`|kTRQNIf zo^VgYv4XF=-`xW->C_-Ra$7Da;uQ;cOP!ctmhB1~>D$ zwzfk!q4g~R>t758);(cX(N2#|yNS~5z7wQ0gJZ}4Vq1bzrh^;=$tph39mbF7IRZ?) zvtf5V(}DeX)&e%N_;Gkew5xH$(n9$!XHB5BLF(Ew-R{l{$36GFi$ z{>DQ(1m*jOI0bs_9ijY|da|(%eFNE*o`Rgcp~Qxw{0dLD>iZvs_4;`G#PoNONmkHV z=t$Of855I9=EtGUc-s*{tqV{!bNJTCQBjpWyaqNbM1V&YD8dh51_2;^(u|21uoPn= zupIv$FA80Ht@-ZAh85U$idM_F9TuKl&v&BBKE-+-2gg;N^@cpEGa z2L~PzC#Oy=iRR8O-^L-(u)rfcID0jVMjl=&<^hKYXQ}Nrl9(P_<|mnFZ?S1n_1oZr zL?UN;u!ylE>68-WMKU?a>n$tZsu(iS>yd=kaz<;2?{J*Zuf`0;6**xmbzwD~gL6uv z37#3s*=t=BmQGIsfSGZxB909g2k+|Dy!LOKFQDchi!`sD%S~%%8iTO5JuFI?wcnEt zXOjiCoC?0sS8=^<#)+eJ$iA$WePVLXL*3r}@5t z-(dFo*|$r7V}2HRpq$hmLfvk&J;vv#uM?j9D~^nbnLS$)m?PV8i1I6>jNS|_{lt$thd{KH1nsMKeR>W&g9525}AK9UlGTwqtMK) zo3Zu~ugy5%ex*)QtQY_<0Y?*ha9IM8_LFSOH5Wl%e`AhS@Y4jFTLggK&;y2aIDHo|#*Bgn+- zcft1})~YBO7$2K?mCQW*FMJ;?@}?P><&{x_VkbkYjD$Z*y7`w-w|L^d&FT`yh)SA9 z=C2n06mCqD6bFOd&oGW}|;73ieEZh@=-0FOR z+=oAPhpl}P{U;uNS^6$>%Td9G$+YX=>IBor&#+d049|i1n01tW!fi3E*1@)9{;@Uc zp7T<4CbLtMvr0%w)&GUa`L_b)N4%VGUxZ*d}h)MxjC-cAU1? z_qhv6i#K9Y67h1s7IQdD>Zs=T8^j!5iQLmE*W2*A^Z$Yzb#H-wM zeg~QS*j;k*AB<*3P&TD9i;cDfi?Mbo{L+4m_{X3r1Fm_tzvCU|)|QBvydk!Q(Raz! zuGIE*>=*!-cF=IA*&Uvs{gRl--zAtR5ll3M67KpiY%7N8HvR8t5%fQq)+Ff&wS-_5 zR;>eFBK|d`v&GP_3{56o4vS`00``z2lY{8JP zeVO0bXvdV3c6C?8zs*?7KCA5Hro}Hl0(#aAT)goym$b?fWE21$9z0)xH#k1)2h?p< z*X?e6*d)<~N0xokYk*(!M*sT_P$cYnwQehHL zL=A$mkLZMBC4%h^t`*I|-z#oFr2q0woJ;K%NQWZ`dDMdHLy#7O-!mIgHK=}^12Ncd zptOP!s{b!eHcS=k@@XxHpwYZ_VvD$mPp5xJh3W^@(I&smh2UUwfe1C33oK^$=YYax zMB$Y#w)QWz6sC5inTn2e6QvzKb#!=W)Os z!N|UF4`3hOVF*oEN*I?4zr2-i*fy%F+O^_YHtiER0+_Yz>c6TVBRQ7Fl93G8tPL&~ z2#O|h(ZnNMs;W^uGL$C5^W@lQ)#x-c=CUl1e(zHWCHQEXxrD>CdfI%{xuOHYPmQ5y zP#b^;;Ij}B?C3GRaaF)z1QP;Me}WXlt&Lw0LmG;@%02yDup-v3I@A<3YVUQ7R{gNF z>F?HUCB|be1cSV7Rk5u;-F|m)!z6f8sC6rG&UQFq-e8X7U7t9pF7cG{c^y?hIocep z^@FTG@|l6YC*gqaGgsA~;Fa#Yo%8w!r@8aqy?dM9-txUuKhpB46A|oG{~ARR@xYD5 z2ld21j?e45^C#+Xb}(yfuppnhoSjLH=5=UK=Im&wPdv4*G*ua&M@jb_Ky#sGi;qAy zsLLvFbRf7cm>BPEcU1hUZJblFis6?r$a;hHf!ccznCxZxWtCHEo#%az3{@eF(|kJtUNjQTy9xauD~`05mvT z>;X?&yb(q0HKCCUHES05YC!_Y*Holrb}*~cSi1Tj4L5P!W^E(M_BWv+jdc!yLokiw zHiG>ISVXt*Y{G&6)!#hyt}zM~DCH0{UE;vSN5W?*$~=GVXr=0RZP+FSp(Dv8IHRue4Me`f4Xk|0ievMbz#epraNib=us zDW?)`S^6j9p+IkY@xXAtBJj1KqspJt!{Y47d`4)In1^QkCccUzHy(T*W25upTixNH zyS8PY%VDOHTb(DT-^b1|!wJs%**MK4P zr%{Zw>Svjyi7~PxmFB)?FLkGxM_04TpH{2yBW#`)G}Xwrx!W+7>_yEhhcPb<7?(usa^zvk;(5 z>{$&Q{|&Ad+@B~_C*FRdpDA*Q_>soBsakfPpRgWPIPW@!cR#+y6yqzbRp;ytofSkJ zl93;Y0@`e&;3JuP4Udbh&(*FH%T9ly*gNJ#n9Ni0c029Scug=LKc@@K^~99OL+7&Q z)?r;?^C8O3X|^s8LzXdMu=t0!i-;KK2;fZ^O)NzSdl((t7aZ)QMLI|lx45Ndw3#DX ztBteL9EQ-zCCo^HvF$Om=%SJk+$SQ2;O!F-kMxV6A%#ZmV@)?N0pVg ziF~hNk>fX5#iCYvQn=kQWcZM?+s3&Sk*dFS=zZ}bN;?H< zA5&T<@tc#MbS-poL==B6pZp2ym0hKhj_$wDg9k1h-Zx9_&z^?RK^$tR^i`x*ZBt#KQi;{VD*50HhNICZ-lXd zPxQ})sIKs&G;&4a1raSsnu9k35&5vjIhS_9B4j?^ouG)dBCxxg16ey&e@Nl`d81{2 zldH0gr002`Qgt5DWBVO32Q(~<<8+pri2ZHeb4ORW!OZ{7_Yrl&9=bmtPEcafc<3JJ zoyJ3VSMM|)y6bzV@z71~oyJ3VQSUS!x^pNEOX~B^$bF}ry`rmu)G*Im#_wILztDzg zukH8Xc2u##f}{-D;%9mE=k(~$`SK@Ti>-0W#9EmM717i3Jq-~JL~eVG#rtnkK0NuN z%^B|ciEeNPUT^?sJR`QJk-*E(N?w{9so|`j=tPY!S>u4HQ2+s#_wn85zab~3t!ds9 z4yKIF+j&=J@ZNC!q;Tz#p<+*1dn8l!FLd%*zPLeVmp6ttzdlo`KZSNP;)>+K(4feE z1A7VD(k{qsukD&yWvZ_hIan>GJ<^ZcfTQ-Fe)w{T*r3cI4P`@Tf)ZM5%l8VC$i71O z&rReQu-=B?U5@%9hxHHmF!#o%n1qTlWb|Eg+6vu@wWV7;wVJH@uXFH-zXA!|(wQJk zQ*pJqN>zXJCp-hw+8$$5n<)wUh9u~za9-JjIh5*%m1OpF-nsPqd*0vCE;v}Ox*`)W z1)d4n=EwgOhHh+zRKJOdSSh?y(A;`7Q!XaUGZVV_GFi&bZnzre>PKiHY7jdXPf#!( z{TxE|dc|rm#4hrLXDG~PrBU7ATmk8v!M4e~Ls~q<#8dBgV>#hRMx}%VIGj2PE4ldaNSe|5Dq{Z^X1MUu!+?-r&DD1ga(C{R7-{#tLCy6||y1b>a^;m!y7jFQ|Mx zJAKj~`j9oehj(}OjIm(XhFx{KQQ?^tYhKH;*po4tEwFbdyx{O{oIayf+?}i35RSMP za&pl2Cq3GaEp5pN^Z2|ch5krety=dSM!Wv`s4e`_Xor}wJFin9;P;!?eaU80HBgTn zQ~KbB4}Gv0w=)WTU%It^i{Akqu&~|Z>`g!AU(nC?%vkUbrW;$3&XF8+2c?yfyzR6Q z3!CIFVe;-50uw*%RCqxO2Rbxv2p5X~f@?hp&PekfC*=p9^%|*P(71R>v%?EIlzlh- z@vb?~dGOgoo6u9$kMRZG2)UHg99+UBLy2BJWnAGHOjIqwzKR|48q16C1O!~@KAA6f z4LI+1g1JBfw;i#KA>d9^ZMepcA7MHwLuxk$(WBNutlGIeV>-d&J51 zZ=jv-C5BMLcpvS57$Ffy0@*zs-MudS{#(YQ?%u*9l1_^{#v~b=+uCC>{@A6^&03=e zNcT})^Q!+j-md`&Y`Rtv$A#BZzo5%O=GvZ}z`*T@!9a`3+{d038-`6l=_2X|;`JDc z(9s^C%qwu%%2Ad>mv%(EBuN{Je{M%v0uwULltcafKK6z$972ZK9anCK2oT zS`mbDgq#P;CUM}1tEBoabD=!2d_xYJOX#OCHD#c>1A|SP+nqRL{5}Cf784i{+NjEU z5F+zXFy#VTJJW;Db7p81(XJq0y9AUPb|Q`;oh^p3LnWMhY;cu>brLA~m1~!c-R6APHHjbAc1mlfke0H|BL7qoMdLLQ4o?9dc zka(w1<@$doV$t9f)JkAoa`mam6IfW8VdhJ|pKXr*tUv9eM~Z!P0DIAPX-8Z6^pUWU zI#TSZ1OF?h_w)1}F?;>(8DSVJw(ViI7nomWl-L<|jay|#tYPf&r)jeO_l7Y;+AyA= z?%LeB{9{_J^F{wC4HMQZy^z+bTxqia@r_X#!Uh!>#$N^KQXyLxlzW7AfhB0Oc9y+u zku%<1D<|lZXM}L;RQ+FxBld`sdu*|rL@}!sb{RhNvWYwJ@1)fBs?KI?+uwxru zmCW*T`+*XnNOnRznM9tcP4d#jPe|EGDOWUsq^p~8!|mA}c*cf)d7I!1FFe$ZQE*>p z45>kNRfjPcKJ0%Q*zeNq z8Hq9lO|a=w#c>j)3!3cSvduEwp|>{KOeLd79jEs#lH76;Q!2TsP*}l^i_~S8Q)M~u zt&v(Njb2UCh2zgX+zLbIV*|`Tdw#gTWjhujRVpV0oRQn(a%Jy~QH(4x&2IpXkj6Eu zzDs7vr72+WRr4*TLZy#b`>5%S`o?G zp_D43`;~h<^cx}mq<8drZN;9fA>PI%3q*k75eNvI9K`M2a&hy)#+L1zvGV6#9-kDi zp?S{p<{hk=t*+mzu5Zh1RaXp#qioARlf5~ewA5zs1qqthINe6ChA1%}!e0n5v1Lwl ziDHu|CNEJ0?Ry&P`oZY0>}=5OLMMiL8~qFHfXR*b%b))rT{WNN#^EhJlp|CGwLy-| zw!Hl{v-H-?ga2KJ4?g)Hb@;s}V>=9AuXNuSc2U-ng|9OH6TZsPZ(4u6Y}rXM|K1M* zA+})DKl)H3M+EBSAAM#o|L8R7A8l4{Csp$$+aEggq40tZeJ1pbB?@n1o>17>3LC#M zxB~NGZ_Vw-63{<-ZwU~pO8eK$Z(pgm(KbrI_ik9XG#9{kvZj3|x!_ z%CW4IYh6J2`PMSYoa)kZ>8ovmQrkAcajb2EbJpvSx)$OpH4v9Cg6x>joQx0`#Npz+ zLPHY!yO=|%4fCyyqVKzvm|KdlPX|jq8ZKYhqNvwxv)0GuZlr3qky<81W?-VwasN-N z!@ZB6aCMk0bPv)^W_jV4#>WNXJ|J9D#C^aE9rk@d1gWQqJKOxASwT*8$7SokmhQeegAkx8Wm$S-5xuMjh+te) zn38Q9gH};#$0z_dmJ1dm5I3w5WZp`ZePNe)`q`#8+u#H~*1LQM@bO>7E7l8q4n@OP z18RXD)VKN61P#q1?&gp+qMIHnSzqj_sl)w`R}Wi*!pGk=EQ{PVJfDPu^#ix_fRldy zll=z7k!Ex*@qE-b)R%e+>gqrV`nAYUO6?*s%ut-E2Y3fl(WW8e9uQ_fPg!FOlbX6# z<$#}oOXFLz$>oAviLWu)H}Gv3+Hb`%rNLLP9t{)i3uNO)sb_v?OT6m;QQ@1i1;hb} zN)p_KkPP$Aq%A zW{P!I3^Cz$(FWSt#NiA7ao~;ixC;AoP&dDvkbse3auG%9rm;fI{y?N2m(W+7jc(m$ z-{xApoDJ9Z$1dfg@&feN_vs;;cJoCCu!(@Drwaip1%tdq4b|1LEG*`LU5a%#HM%$q zw;VOF0J{{#CwL8*T0V5_*!PFR77V7sU$2_@k~z-r!Qo|_+ewNFFBzTUeftKI%gDj^ zr%=0=@F%!%Ax&12>1;Gk^qBdd!_L>3{FYEcI~;7X3G8w3&J(5TT?GSF|9Y6RlT`l$ zH1`W=JP+Z!zv@@0wSqIM&LF9V792Gv%WAa?9M!77%Z;@J?g2q@pSqWFbfOjW$v^Xo zNt0$4ujnzwZL~{ciVqaUX>XDYyB<6vfq#lP@4-XA${MMM!6{Dhx{`p6*BA`tg4anM zSF$%mRg4i{V>r|iednQ%^>@6P9|YZ}dh;qhBh+OG=c~6h3Yzt3cfD1+Fm2_FZ7p` zM|+QkEPA4mSp0}R68A<&Lc3kx{eL6*XeRlhGX=Q^&^(T%w`GXA&Hcq2@Z8_f<`a&& zbuaJv2?5qJ^9Q3@VqtLLdJdsosGTXV@}5Haudmgqos>VAZ;ss$w>usObl7@|AM)Vt z+$0Ql#qI>kcq6#Twbji=?8B*PatMhUYc?+sne!9%i<%kvL17 z%g9FUE>t~f=ZD4FfCMXxS=HbLeYe$xz!9Tl&V4Zew9_SezhLwd1$yfJaBI+aK{=mJ z3)qzoz8M*_8L7Ys&ZPBuPK;iDi>;T>Ie}h2y;twb{v`Es0t@AQCN44V4Hl<4@;1~| z>+eSQBKwjT&-Uc|tvGO9Jz&bSxHTYG#Pob^RcpP5}SQGMWMe(|C?>J1&kq zMGYo3&xQger?DKm$zGjV*0N}U|F>L{{YTh%Z7%1zWliKYE<vmmXH5FOk0H6z4YDg8r0cH#~}alCx##6l+6|^kFwAAa4K5kGP=`T%V2ufdn-(HwbFYCBj(u_b_$p z7sz=1b^Jq;eT9hZ&!xws^mHu$04?AzMOrZ+i22n7A}7{?>I>FURwi#o1bO|~f(R-$ zQMI5D#nG-Eco2kuKJMH1l`fWmXzqs(qT{c_isl>h#cTpt75BQrT`Jr>6Xw@HHVdD{ zUZ$~sP_=2(NSEBqBaFzcvbu;NqOLD;tE+nSu9nY|)m0Uqf`oTzV$Qag zdwaLoYXbWo6dP#)6_4C=TUG8U1gYgKJ1Rjp0Vv@9+7(Zyic_bGQN(}NQI7H@-zbKQLtu*dyN>eKC9SN`y!4yc#0Q#>H5*^U)c=(Eh0fB&}43{e>tv*D|{!`4CZ){`KF zSO~Uz^I8_U9}bo|BqtY|zj%X)u(_MvQ7fr`l>n9S)c0Xh;hz_hIbP zq(D0g@>TzDiI@fBRR8(-TSUqrl`1F^cd`mfX%CI`+f@HX{Pn8-PW-(=_2Yb|;IgWL zdWZSpx9l}vnfaD3S{bJc)x$ddCvktj0ITm^1FXN3h_aeBg8fbvB%Z3pndO6(8BSyDYP{&(7bBlTB+ouNI&J)Kw+1mhUK-I!M zJ~3~1zAmu0#)SE;Rgij|q%1*F*Yg@G0v#0UTg|8K@=08tr3Ds4UZ(Rp7E-a;p_ykF z$1&bG;(mZHGX>}Ez;kDf*+J@R{+PA9#SV@gh zvw2!_$cBD`&Mh{FRRp-)b3X{9} z`5K8EobYHM&k4zI4zIOpgSo*jaCStlor_Rajt=WlmZTM)VrT>7)fKyPI{PZ1$H|8q zmr3nY_2)n}jF}W-kq`F@dr=^YTXD7w=Qty+4fcKVdY8YsN)3(TJVz@&wG5h#>blh5 zO`btxp`G10{U$!L`7qY+2Gw@)g>!Gi6Sx9W=L+p4U5xMZ(_&8~%4m=KaDk9TjW1Ns zR9taSRr9kL@w5)?qMweArd?E^wedsxIJBz?r9(%oiv-iwA9y- z7>diC z&l?dD;2SC_!jZk<+gLKA)rQ%)4>|$v>D>C?!O<>j{HB`cO^S3>45yl$2?zaWfamle zA~@K1PK`9BJrt0!_<_oXc=-B8GJ9os8?MILqP~G}NP(fs7~K3OX)mA1Q*`M+hG6x$ z+>nB8Lu2!TsG)k2B8+~o7|gi7jh-3TN8=TYwAn&>5pk7S^Z21keh%aIcM|ZR4&Kr_ zN#0D9ceT;Kxl1_yruL;xxn9n6gcn}^Nh4M3B4G?oJ~4U(=@dg6akWQsnnRBU`5rHO zGtQO+0Pr+k9MU1NzB?>E7dGckRm^={JNmK^6?tnL-&D-_HgwQkhmJ|CY(S@zCQ#G2aSr=) z@x94-r~vORfWb~1uy`ZBai_9T5qIm=CgeranP_gN?GO-db{*5wT=@VbqIn(uXfo)S zT(0g!KUaE&xW!@My@Uz=epUy^bT>a1X)de->&N)7Xgb5?*3r(&IynDTusuV@yE4{# z{0dv^>J+vM!2;|HPtq>;h5Kp0vR6R9i0AjzD&oZC99?oYM~D(~zuQr@-9((dMkYkF z){2siRPst8^fw$0Hz8d(w>+T_R&Hk9 zs{*_$;)J*(6@PK%VZMp}EdI6`C`Dfl1P+GFryYWE;8#q&nBI4ql+zSR5lVO2&rXqp z4~V6Qui|EzBcB%xZsAo6tjQDkXc{Dwv95Y!IQI&|Y!fXm6<8Dyf!659#~6s;>N`A; zJp&J4Vox;;TQg}t54|B=Zm{<;QjrvNU(vG9>55CH-+G!p$F0wg4}7cLI9})M_PEUp zWHg?!4sDJI9elm8as6u=zCBgY@H@iPrr?z4 zK=MmS-ej%mk+BNXIfjVMZS4DU0gYFg&@*sftXX97TW>GikC_tJER`od3+3a>TDLG( zyJ5SoN*3oJNR)T9{hn%;a0EBG#!Oar^o_=7%n z?ryRtW;fw^bx=UI33c>55o=tohTIU9Pt1Vd#sju>bY#w6L!f~^8_8G#uZW*!2w1Uc zQ_a6oEo(%Wubd#)NDeOHs>J?0aLH#e7lePomvO3|f;qVL zxFC!ZMAd(wNB9>$`W80P)|WP4WEmoqQhI&4=ghitPkLRk=S)MolQouA3(kKyz_PJd zTD3^ydxv%m1+4P*1b~2~)Ar|hK$o8YP?1PmjAw8ZZ3t+GlbT5WpY4V+?0aOwNM+|Q z=$$X)d2Zk5q6Llr%`n`7A=T1^XV<#St`*g@@j3!bSq0G$P>8c_{;D?WU;HbKc%`R6 zYLT-5>JK@JA}*j{0vqDAO&AGG-gWGf(z0$2*~g8=;ESg6L_wdb*JEQ=Ycfm=nd2)GOFnJd4+i|BM!wanmV{E78=7 zU9Q1gg8y~Ji8|4Hee(w#Z+^8O~m=N*q*D9-J5@{ zh=>~_Z2E&>w=5PL4g3AGzuDnEqHms6MoSlq(snM#-z)VDA!SE>?Lne6E9E9!Pa}Q4 z=RQ_b1!cv(;q*x6?ECl?nrNor@kqW0m7|-4jP?_34olj)}6QHx0JacMvYBnqu`>P^;4zK2_ zE-Y1Uk2UYQ=yg^W20_i^0c*cQ(DWZ(`+bB?qhX%?f;zVb%4bfq{=va#+vAYHn~kD^ zCKLQo9>YQBh(>LaE#8O@iuDQI#ia%;VNP+VOMk{-YoMJm22@i0?{PbeH=^8(nWU}> znUhiOh;F<{L&&hzA5M3BGC{HFi{vgr4SXp{p8_p}*y4>vf)q)Ih30$CYkz>$-epe5 zU68|4#Rxx%bMwP;-Hos&)sI_bZy_R!-mLvX!8}mI9LI}0zDHBhsnTUP(u)RWk#<&m z0555gyrszrRBL685Y3eLBK@4!9)|(Ie~m{a;3HJ$%D#Yueovu8fUp+9c@m}D<$g<- zr%~AwWehA@xSAWoT^{!KCS@H@uGqX~m&&V&kaLotJ_8l_^nv^bS?AcoUXX2&cJ@CP zMnLXW{td_nWu0eF4ARbi&<0sG_g{i@O3KeTF*rNBID(;n?J=-}OL}F;=KWseZATu=fg~@@@&l3Wusgz5FINi=E@zpZ zttZPHw|mvAh*Yl3?gflDt=if45@?Df4gyo{DTLwd zBasB`4((#?pYY>fY=dg!Y#?16$u5-HRQvCd?1D&kZZx}2WP>D*6O*JA;cCwcx}Dn( zLvN7;D(RIvB$iw}KNxJfG4VXFJ`su&3nyVO=YsdSMZvTMLV2K{sS9A5BC@0`fK7{1 zhS86!V+rbQFfXSxYZdQbu+|KbqV+H(mo<9i*VptlwJ}3}eF(sfS@P>`E}3oX6I^nn z{CbH?=E|?9xMYF+`XiTwD7UvMOBVc>>)WmOMAkQZ-@a08*w^xgJ!We@ zcEX6rPX(~e=fNZT?5(ob6F-99ONSu%J;R9$Q>lZrKdSqY5{+&!ZN6AL}IzzJ=pjyA}SY*DcB0{*X8LA&VGPLi`!1geG~d0`~b19ghKEZy=d zts~)HF|7%wOR5t1t%uNaz1|oyzra3U&_s9ApzYCP9%udF^#t)Siv`EchCaMrLttY5Nj$AlLceZj>;2ZYbB2n&$y8^dqrX}=WO zS5<#uR7bxLNA(ZFLY>eR4t>^OTfZZ|((rN`Qa`9}J51frB6AEPWw_O4uh56O?tmRe zOREMwT!I-)4|N%}h!lyn3lO;IH7ZU}wrE=93Bu9l`*%fD(BZLjdcwJixPNsj>LDULiPcE!V?#7{(p-+66uRHrAT6OB!vx)q#L~R{lOwiaa>V@W z6m#;VuCO_U5`l3{m(&1m>V%r8PH_DCg45;=R@d$DeO(Akt#2*v_*A)ktuTXSODGE%v*9ok!c8`~lqJFYDmKW@!8{S{#cfwL1$wqgg{C5N@k zO}HU-At^b|ezfm3!s>zHyie{P8rh&dphyQ}M?0ktsPA7;q1{sOYt0+ktQ4Ei{Vu{O z7sYbQ8RsZsvvRgQ+kSX0A@WM|D-UCRWXH0zID<9$T56wbhT`05Jq{Jtpyt7+t3I-48f_TQvO(N?r(9CC zb(};4{?&_ojn+MWzI^AIzC%ygxVZ#w2%ARJUJYO&uD{Ze+oAe*2n>hy;_Oe+L(lC| z&hCiiY{H=7EJa3KeNyB^xx3Oc6bQ^*#iJl%zS}jCelBzN?Xh)q8O-vtheWL7ua`$z z`(yeYsw8Aq1aIB8Ih`R7^?Tyt9@B+Q zykAUY=Gx-<;u+>YuT1D2(7Tcsh*-wyS|5DWiyJAGmkPf+cJ67G z`;&urM0Vo9xACY55d>IgfS3=S{X;l%k_`R&!R~O3ttiIkYGV?VQQvHAUcAHJi=^3F z@cnnNu|A9KNfA>=;auMHEV6Z*NXD<{_OU4a*Yk4l9sl3+^0V6`^U|2$wiV!tTRASu zd}Hu7SVHz{jmA~(*Lmc3>mP_=y%a`w))J|Lk1MDF4(qwlt?xz&bzO1dnJo7fe9z}U z(D_T6kiu%=UeN6 zHwM3D<=Zzv_j^hmF)>*T5fGJ6=9Y+ol#y7Mi18FU2%E=7@mahGJ%t!b%UNR~WO2zi z7*SSEe4cksCGVqxqWzyOcJ$VWy<)qI`eQ zJa;5E-*ziD<|F@OpOKNheMUGGHnmkdwQs1v$M+ry``!%mt1Zyyu|xIuW!G3fJ^$8N zJ_UE;F(2!?V-Z}ZFYOLnc|DOB6WC)v=BZV9@<8^I7$`n|IBRZ{LrK#+E0pNv@ysvx zWG$SOmsWKEqxr4+P_bt$(SCVLZmDOi_K`8&O=Clw-o%_OJj5-R>X(7#!2@>O0K^)P z>{b1|%LhMh74-U#hUeVhMuulJjnvgd(=<%EqknSn*>=~D-~-{%)mC(>qpj$4 zXIs%3j^M57>z<{R@WllE`-4vf7o7XzsRy4m^;W1kG*qqAqCWM{{fkx4m=3`%N(pZfp;sthv7xcC3hZ+p0Ots+S25*MIBbMja|Z z7?;siNezX%{h|FxZ6R8*AL2ha*FiI&|k&>!$Um>n4R zYBS$pr^O`b9h>3}e(rse+>pjDwNghbe3rNN@6}I0%;&7S@u&9QzG^37jV-{nuMF%B zjY=ZUx2peCA$v;a+jbShb~4v~<_V)Gj~od{KCZd2D-1gE#a?1)D1&prm)KIuU3lbu zocb%%F;u_9f%dMPEun!(D;r$s-=UpS+jV`_!M4KmAxtfiTJ<%ebh2;kF7vsa;;QgL zl4aHiIKRG{2BCR8;y?HHl65!+@h3)cIMlCjgtJlV9R)h;)tHdxhmUrLn>LEc@4rAS z7V$h)W#qtB&m>6Ir0G~>ugz9Qzvl(?yE(TBrq9<3NwHfqUWp!oApzg!Gkc_8M-$HO z3=sts?fsh2ek~CZjZ(`gr!o6YyhcgNF?s;-}el6VI|HVTD!wqx%cd23-|M z5A_P`c`FhDC8Bo5i<}a5>D&F}$RUI`>WxpaK}1SF%I(BAmdNi(Hzp`ol4^LN*C@Nt z>+5o833#9_HI2leQI^r!maHXu4;7B>q3QS%^`Z8k@!EjS!UCrnScM_7;S9JDHsn(I z_2Uh~2k;(sRhcuGl1!spsIHph4rXOghl}osm;&3PDps|pP{gSgVejyGc~pxUR^cfL z77scK;N1_?0P~4nvzCVUMu~q4?VGwN&_lRHQ28C9a#gU@Q-;{(In72YQ-W$3gP)+m zVIfX!7tr_?d&+(k{4$G0WwGaG2mN!4lm5BYL0g{6SZQAEse(AiQvFk0M3n0vLy+GN zed{q^6WI;75E3t+$A)IlFBoKv+>VO_{Xc518=k?dcuutj%@IV8k*90|bOd-}!*J#7b-wa-yrpblOgIY)W&1_b1>&rz1s*OifTl>2W0FWcuR z^TErJbCg?dz{!byj#2^UikzcN;TB@gQHr@VpQB_zX8-6E=iJeUeD78o? zzreVSn0`&(YV3z^p?_0;Jr$02Xs077@nl75f^;#4^QCC{9QNX^iK)lQoj@HT9KP)q z$vA$XKW6F;tZb0e4Qd=Pm+sCmAYUOuh4Hc5Uy)cE-E<~EpEgJ4&-2xIN z1-gaoKdt{AVc2TRr3b3F0Sd+$5&pMQkBPVzH?flOmA7G{r0HP1z?ZveD?8QG_dqgTJ~ zy$=1#JyDrRzouP>eieu^z5NP{t`q9Vajt>qUl*}>KY=-Jrw^4CUZ{o_8nT*pNx<>3 zfSsb8z6m+E$L5$7B8R3N^5(|oZIgNM<#kVw&3Q@Yw9^7rm>J4E*e)YBkLfxjB8grR zhfVhMNi+CCGXGDofi8W{4Zmrp>VM6JA1>7&5c^-;Tu~bGHCpYKedgp{QAy_hCOFrb zzc?&nue{`hJqFjJc#g<;cH54~2480T_*}ceeca&fc7u!U2JvWTPB^byU6w&g76jJF|}_=oMEa<$c{cE}2* zoZQlt&~oIg%&kPBrMNMfvx6;N4M8`xp{Og~IlhI0lUu^nLd)T^GTVt^mcB!4SWej5 z%JFve?V=xc568Q~qvt^h9mid@PG?-$YqVvbtLZ}?0`Qnsc#M%9j5YB!j`KsPsw=jx zJ1Y>H8jAvH-o-89IP~%ZtAyL-^6HAO*Kk?$kQFJbQQ4k2-6V=wWj&Fy`gV22TdPs} z5Uu}lOa$vahNZ5ch1}ZAzk?|{)A}7rG6GrZ*h*B>vDOg+^v9YZ)`n==1h;c>v~2&_ zvcDE(sTB4qd>J=NYt%cA*8L@|t(hnr9YfIwk70j-e(Es^yURKs0WCC;?|^kJl4E%0 zxK_Y3{h4R15ywRACA=GAwF+GE-H31XnEf5No|GSk1_PlaqrSc6NE~`aXoJ(gJ{hKgRG0>SY%2^)(*P2yLa+>!h_YqovNmBG zSb2~Do=>T3Ad2|SADYLPN7wLH>wkX&PqjA0zR^hHlsE|XxN@V?Gu;rENZ`to*51e8 z3x3x)og&Sq7#2UNf|+ZkLOu=AUHtWUeK(9qW$aZm&JcHI7@jdmFXyXt$q`7>!$>NN z<{bi(0sSr6a3O4weFP=$oU&N@?dtvzQQE!NDQ4AGSSa_kvCz5?DK}n)<^GE{T;ED> zZHPIi!%U$*mY}bF`)0tGtysK6Z|~=JmjRnJ-4!fW_*vAAdQ8_Yh<1mDxKuCgUHLIl z*%(BbWroAs?k-c5nDaD&R{`NvPPk1Egw>@_D7={~%lS4mxWU)zygbmUmDoG-CAmk# zjyA`pK)9w@UF8ZkC>i1K;;t|W`FZd9!Vc|Ps-dnLNO+_#wv-P^P98z#-9rgX)f#?N z_3%XmgCHzgN3zNEZ7h&B!IsYk7^wCsDg^xl5Qm+h`M!7Zv)aJLOG527$j@&{_qJ(T z!4jo}^xvg;9US(Dc6sqJbRqRI3`dSm?JRvmOV@zKUl(TJYWOMVqLn1&Ly{=^M5nLK zjbfRhz}}jR9N)9*UEndlz3^yQ-;}p&5qzr5)(eh?#~^&eqUQfT0-c0&$UZpC z6FBc*bPm4M7@WhvxxcU7X; z=*^Y4?Mj0rNBE(EMx5V4$So6Cj+EHOKXmVP!o8rvGm_8h<{!nO>WwrjM+UyFx-IA1 z_P%ElRO;Bgqv4z_#;HKiEQCcg(wp<|7roI2=`FGVf?Y{`sRK7@-C?UJ%dhPX(fxo|}*IV-nhXlron+|046WqFvroMTPdli1+!kZO0%H=920nMV+4VIo9hM7&@Tqtdu&LQwm znqsSfSqyUu-W%h)JJ|%1>CN3B!E@t-2}&Q(?vrSGmyE;I(Ay6_#TIyywvSA~@eoa7 z+tJgID9?ujH$SVz5V$IFCu z^&BEh@%B&kcKti1ORwkf0DtpN;TChwWikLVXl8>rQ-WZ-HMT61Pub+q4=uO_acRnR&4=N^Ka21Uh`n_|#Y!zp`PxFG}E^ zw)xZK7#Q(3jF&};Cy@B=WW0+dOZ=1icNI$fUX;KIzWL&0M5ngTnJ*KE%Xis~^4wf; zMT=;eWOMBLO93XVC4i7G(Z`iEej@{0sDvD`zg#N3h7&-nhD+J|q$1)6x64|3OxRXn zj8Lqw(CN&JE@MN_Fmnq1;9zhKw%8)TxzM+X7$_xSE(Bi)`vkybV|$U9(2BUS#KV(keSYR_@^LcCEtPU%}Xjb7~kupTjJX zkJhWpT7)GTnMRtgTTugdQOe5>y(i~eYAH7~7B;Uo(hyDxu2DP)CdsNp3a$OU*8Ry; z2p!t?Yv>A-v9{yY4Ruw&UMk0K+y!4@REt~rk8@#=r?Ix1qkCc=f37IDhqiHkpi^Bs zR7jHoQXqy>+X0r|&zbbqsq;`t8l>w0`J``k5QQ`nQs{ zl7wG%?^_iYOcau~Em-IP5l&siBT+#-ckyvT)L!;a04FrT7NQkx?riXX1w3_-n-g=6 zZ>N>=B3fWCqHAVxbk_MwEoG#zu7{m-Hw_e1>PM%8Rvz^BC4|D~v3HPIICofBf}Cdj%OwqV~iAx89vE)i}i z1EM|%#srp`yDyP=uf;5zP>i%qm&of-aNb%MqbB_z?elqf+IZ=RXpJU75w~G*O9@G< zCy2ute>Wi@>lgFB0>f+O)Ju2m6cH1f-|Bn&&`x5Q?9BaCB-gQ1^}i*?LWFU-Td5tZ zsQw2Pj#2C(#T>3{U{OekxelqzfKzOp#&<8zKe$3(Pn))1>n%CWp@fFIlMD0OYt9~5 zpVF_kE2(OKZFN7#fGVpnTFrNN7Q4;UI8fFVzQZbV z?ml%5CM`{bryw?ZifC=O%wy5Q?qaB7Ehrn>jkWl&wN##yc;F~y-O&?$(0JJd=*N7G zK=of37O^FsEaC`MhIC1Oxd?nii!r7;+@WmL&^KG*t41i4@WpFAO=oxdh1VV)=2hM>qtyW363iolNfaP#L=bAd$MPQI18o)p%=Wqf~yrR zj^Ho)5h`owuR?LOVP+(@^oI&%H!)FN>G>VboDy0>q)H54v8ErOP)wHlwd$O_HaScX4^9Ls{ zL=@nzI9^L&78}_(Ys*ZDp-kTn zRYM|_g?34P6gpM^r%v$`=Nr^OBgjNJmKo^?PwoGJvh|Ot4n(yQ%5A9aO3(_SNjO^a zlhUa0qVpYC2gmT89Gb-lksp*k^o~}zAzkDUEBbHCzYlXvvDe#NaPq4w_mFNJ#JhX- z^s{b|=v6KEikLRRA@1Vw`cBL@<}Mdc2uLz8bIXkHS;sRNkG#$5vIS07lXC47(hpcv z8zL}7a&UrUm{1WSw`chb5a(R?I9ZB<<6oQI&5xVDM1SjJaT-?X$)N75fsKkl@I!~( zq7?±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%0DWb3aMxEToDT$Ovpa0Yx3iV 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

Q`tn%S1SE=sNV#FW-Fks2R;N` zWz0BW)F!_x<#(0**2(Wg{cUOzRjv;T#XmwsGwDjpQ`Xcpj@1$&W>MWNnl(MNWG1!E z!hiXhMHkOv7WuhY_?nt#z%%}BS}8}ZSAh_pdYO`=q)eDg(IA^z)W4FZG1T|pf-{@w zTwpn{3Wx#;APw{YmjTxRp9XFLwgUG6p9Ag(z6?AFJOVrpd>z;e>;rxP{2cf#@CV>O zfn)2MsI8nC*0pTmB;&MqJ)|5%ol&He7znDpl`V6uW_u_4%9fzrL8V`LDW2+1WYa0B$aeihuOK+~9IDJ6;!b4*1-}!u7xNm|oQ0Pq zKAz)ZJYJ{wN^H-iLO9Z0Ik{Ek>5>5T}OxipLXL=<>ow6xCS@q!diNrRFvzb|iD zp-c`JI*~vVGmd2i$V#pp#rLP}yvQYkB94NilV24fF5|BAQnK0^qool{B($+{xpCE@ za7lI5gsDls&PEa}j#xvyrK?TEn@n(=WxQxr%vZOHMJS2hVUJJn#41awp&*Ew=Df%J zFc;5IB8BlgbtQ6S=WayH=7#A5VMT3#9vPr5C}8%YQP%?-V16<1r+Hx-JU>jQ0vYJP z2fa$fp?WW!Oy+SmdPyRexb&Vk${5Cn0rrAP7`~%#tZS9H3{>_at=U9JgwMq-2sO`H zuz;0w!b_LVnHOG43+61GM`UJ~YAt_JLW&87oaidEQEF2q-isf!4@niNZR}}@@-v`s z2BA4W^F(#mIr--2T);E-5Y%}}=tNy(jF@@cC4C4m2!0H%hF}ialSoa_ML3oh;@G3e zWn;6sOoda*+b(>Xd}29sm2zg7lI~Qd(2Te<%2_6u@GOn1V5jM9jt-^H^sdd;k%8?> zV`Cj?Iots+I977wRDL7bnmT!Fb5b(u&<0vh1AcienWIgaBW;=E$-lCqFiTv2El08; z#APiY29@J$S!`{UGISnFla$Lz0b$xQ4`#ugGQI-4Y*T3Y_U}y>3dA-ICU~ag^Z0_b zg{4BD117iKtf}(7$fFaWEy0eoQuJb!0*bm6>*95rRFc}_StK6C&@H6+;AeYtS4u`} zER`Xa?u2pkyn1qZE{A3WeM4)O&ksW(z5tkjWyEn!1PpN(#GGS(t_9k1W%eSd|d5_iaS4wC!O^@>V<(W{IFIvKvcB5Qypt@G& z%U4h%Mjt`>U`3Ydm|r$&XQFJ?R{6`i_Ueq@i}dboPUbc_@EP8!YGF2 z=}zm8y(>GJ#}%Q%Pr+Nz-bGkniV2r{zH=Q|FX~$~JlEr@{B>io6I?mw{UQIZmM8K! zxIiubP4;E*$Zlmo_+enJzt)!;!-E9Zu2j(+vtQ*k54lK-!$+^l8R}20CX6X5oj9v< ze8mT8xolMOs$4?%%~r^Y&jlQJMV3|oAj_h;S zhv^f*ZlhXkH{kE#X|;aaDz}xi74#Arf3rUmrs3}(HW%o(8+DgacLVzX8xH2*1lUD1 zzUGxd!MYd zx~hun#gzPdk+&)k+!Emhe(k6H?hIqmb1|6oS7u9MK9k!YSGal_I?6trGhbxC;4oKc zcKN6oGpCRJ$Y^`-E+yiCIS$o<^DF+z6wo>3Azl^!Enynu*8FT%Fjt;y@Dqzly@YN8?se+zjT-29=)xaPWj$o6Uh zp}M@@6cuT(#7%f#jlFA@oY`lQ=NZovh8tLi3d&1JIdWZwWk;JbN(*^{#%WN?YxYa5 zqkT--dtnow3*WL}Qj5v#pG!FQ4rj_#Vdm+hKQtD`G zR_HhhBiRlkI;6NRQ`fHHoWf#i!rZVRU!xUb?W7G<$wSVx#!TfJP4KHk<9*S_?so}QF?9@v+K(|t-hj2W> ze;D`Ht)nP!B+$BI{2vVz>BZi@mLTcg|ZnA3e$njuP8{L zFT-rCu|I7{ep(j7G2h>O*IfG9yZTS(XYuXvcO5zW79Ry4qs<^_W_dV$7(SP{ zFbsw0D{UE{8q&YLV_x^;!uB~X%lqM<*N6F@AzE&B4aqN~?3RsNFpmoJ#qt~}or7Tv z;wSxtlgo=OGd3TOdAByc&L19#F$ zzh%IsKw-U{F!=B`xW6*jpZP%OFMX|fU*+@6KJw7=2m1h4kJQ#23Bht=-L__hX>xWS z?ZnTFowX)U3d`~GKs(T1UKiGtU>FMBV;pVy>Cc}a-Cw)FWiLD}a4yg+aeHfZ6@gc+ zyoWFQS{JP3d5%8%$kIC!=`PoIg@y89Bx)b1D0L<{Wo2Xa{6V>_QHo;&P*ydrFwBWou`=DMcGfw*1FX}RlQ>c^BOSDjaxTt!WR>S< zv@btJ?!w_-ijPrerdTJ(kyNuza(eOC2~O#{i(S^SbF3@X=b;?O^POJ|(J*A7V z#>;)JJMi48#vGzf$?BM_t9ak|-8Qq-<*Mv2rwv2!6!mFZ;Ve2^rgl9TbB`$}esD#f zT`|{oWcjUCpOWB3;|L!nh?4h61xw8rv4-*h3;ds~=LdV_Wx<&<>7sL6=aSjzgTFI% z^=GDRfL5zg0|h48c-u^GnQA6IJbEs@I%Y0ShI-@s@-c0UPro=8W2h3P&lsD}_mfd` zX=U+Ty0~;Mg`j^w^x^8MXZq_TJQeXz6z6TC7v%~3r0`Te?;5sp`1E*Dqzk#P3s5Tf zHvcg@H4C_5_w>WP`5XFrcS*MN+tU2IP-jZQ#M50~=9C8`D$}i%;y4Ocin{eSlxazt zQFjfwj!I&NZ1>3y%h_Y(*);3E_EJ5rB`b=}vdP`kVg)8TQzukOWj9O<_;p>h6I`7~ zjg4mDC-065p_LLJeDhQ~@I~7UH{HxqTHwf7H|;e(ZX#%&kT3GIV0uQC!}=K-jPAOi zSjQQ9;jYXsM$~1B$C+9t>j&C47o%k;Mq{E9fyxfEQ`cTRt^!R^={VvxMBkYcp3;)i zan6hxPHCw#b}ZuSbt=$tX(=lm1BU6`Zo=q@=b!n$G^Wph4D3&*5xWRQSG(XGphYk z(xX21a&H!Va?h>f_lMEJ%J~4tG07~=cng0rjkw{mZ#4P_1-^5HJ^xwbrxYrbDHXja z4u|Jgws_ox;$AMV#T-I5_T=J~v8{2Ye<`*{Fc7kUq&vgIesCF_5h#^f9<>C{2$oBV zNq@obRs^cT;qyENp(T;`Mq1+S?3b*$ z+H(}%c?kc`EAN&XMNTKOxU#@0FO@M!{z*(dk|gQm-D9=Ql3XY8#LS5tIUWS*i7;M` z;p6OjJ=NUnG#9c&$`<#ZeBp<0c*-qL4v%c#$R$o;O1TYR_t-8ek{rp8@v*R(xkm3y)(XIgB-0L=GlJB+DZ5Op8$2Hj()$qfFjV zVJgkP(#w0B>k&7aNO+gKBV8%6-69(mEj*CnHjLkt5=UC(^a{0z6!R9_K9V#b)M5wM z7%{Pgu^8#?XZaOZnBZMXA*3j`m!`+_RgHQS zZkvrSCPlm+6NZ}wiOP+osAY=cKkpf%{ikSLZb?VgmRiwBMp>Su=v9WLSOuw^?OX}X zkv@_mgHq3gQqjT^zo?{?@r~Cy`NsrXQaUP0hhG-37EP&#_OTryY;?V>HR4N?F*!WN zn>w;v!wrXV*&GyPP7DU4UcN*#>i$K1GB9c~De7`%jw0vT$F7w1&lH8Io;BdjSRE_J z_=uwZwq@h-n8-)9jTcC-sWH;=5CKk!5)KnH<$tv%8vZ^nf3Du=vbhyG4_x}EE z{+JxZj%gd{jpx0VnquZse@q>KCYeAQ@gX?*!F*8E_M|8*L7LT+%sF@xBoXF;AdBlx z#aPlil%94@w0JM6_*RkK%FS&TFItnfe!O?aKM2NJbAXSu7_}yPxyXyeK~J`-P_eXR zkCFlDtHx9XiDGKgmd>RKNu7}&u1IZN2|1-Gt+{y3gs?Cn@($WD{MYAoi~vuQuL)ai zcDM=zAR3}U- z5`mIZuajD@rKZ?(ca*d>IqBE#q^;D+2-n%9HAXc~YK2T{>LyLsDf2EgT!1*GmNj3J zwt6T1>YcRJJ1J?IwCSDnl9xr8YCtstBIm(NG*BII&?Z_^>UL7=c2es$w{Ie{(0?6U zW~AJ6Cbdo{r2r(oTAS2bn>6(`$<;O46=9&w#IJtVWKW`4Xh;nq;Wu?S>5|9~<%&!a zRxjvUw~a_u`^XrlGj(>zBq1QIqC@3Abav>3f>lIFp9#O%G)A2lOQ<9TQZ0O-CDo#t zlWI{x;ylciAg8=QXgNvQ^hRpvd^QW}u zb6Qz=5|Or^r9F3b2n0*&V%oaclQLr@5w<}YjbJ98P09~T;gH@ogXwZce#~Q=adc$XKw_#$3^AVBV!`XRU1E2ZP*qUDL9#&o+%=3 zXEQx8SexV4FSC{dx>h}0JBc9%{84oBMfwc>;gBDjdJrNRLre zT8KB*XG)|tXXCt3qYt={37}42%n5#|EoS)IGhcm8@XIy_k|8^0gf~GeKO_JAFTn$lYq%9F;B_lstQe7RJYY0;;?Z!=|4W})+ zu2*t(Mr0)4a;in(2`jCfsXV*IxU)@m7HA-E#PCP!K+ zr0dH?Oj82_aWHdhRwdm<&8k>jX%1PAdPMapb)-dF0v48Q;|$t(V2eVIh3n^{Ne258 z)$S#SOyZ%9sh#qI18HQnhUO$2ljjgU0(x0GOjp3oCqXAW!*s`! zgX#PWe7may^f$qCRVqyHdTKCzkNw);Ks0Cs?FXItc9@PY8z%E`rcXzh518<9TzKxe zeJ|{WkEMe!U%yww|9g((j@dK_^dC74skwCPWy9zY=;7aH{y{RQKls@&ZDKbA=|C}r zpWQ)R-UYhM&?ka^;~91T4AA=w{YJpOIC&Xssg0e#ikn*K9EH!VU?F<}f-J=EGLZrek1!LCjCv=9nLsHjh4*GN5m~uYp3xRZ$Py;rVcY z-VpQ4!^W6j9&X@x?K_uFLzp+SU*9>GHVq~E9J~Mhb7|xtqA!DwBONJ>Nj#K~?l43En|$9=!1f!_9M<(~n1&%>Hl^=#Lq)q=QRFP6mpv|Ryu@jV*f=74!?z@2p5Pyb5- z?pzM~iC={!O|A*Ja~r2pVnv>}r?oFk|R^oG(f4LWxioep~b z$F!b~0!<|iw26jMCFp}w7SZ6Ls8gU1pfGTlXM>(RV-6iR$f5b5_cyBfV$jL*IVe94 zUFh);wSa!3a*mX%B@29i#a| zzpDv6=?2<}_U-ln|2+YBezsEErT2s93ozgI3C-UJK<|Bb0}VzxJk0b^rN0Kc_KJGA zKZ3p)F#m3VKZ?8_bFb$64_lRH^PhoU_tIH(dE+qZ0nek`l;;69W~ahC0FpbwzG zIJM1h(|E0uzM^UPFU;RLmp*|0;{Bi-?o)rqGXLVR(3R{y`itY??}K=qk{6queeF(2)So8qnK6rD?@$uCI)3pyQEWDVQ(b+<^QVL0zCn zfPYYU1YHbz=O50cPc;%<8lbNP{n{nmuMMY<2WVcu-SbPh34gDJ`SgnsU(h#!9{$3) z(s$eidc{XkW)PSA*nCkVl^&;SzI(oe_#&KVpv;W;Wmw$dHQ?P%^CaDNwwb;j?ZzW* zejWUJo8PwY1^wJ7HICnD^ULA$ZGQRuNt@qB9cc60x_@u;+o)FpJbw-NbzHm8b28}M ztrtkXoYwBU|F7-7zhm0{c4K_I@6MEVzulMtI{7{1(Qz572fejX+w=LL9i+)=NRwv+ z{qKn@efqcneHQqi*n+Zg++teP?zeU41?VQGO}UDIo*&h?uW9%D7q{K-cRteY_eWQ@ z`}Ow|?S4OaL%ZJ}-4viVxBGqKz3qOxdVjm$Cyoq+eSqFBdoB>>p9kV{u-z}WzYoxVY4^+IpoH({-~e5e@cYeS3BNp?mhj8W2NLS$N${&A zz%wD?r}^ZB-^YD0U|tV;|BkSP|7_4@i@2j7M!N%feLl=LtZbkwP&Ypma3`Md`?!vP zn_U5VT_7$SK)-ea`b~IoHR#Ro_j364iG*gM zMuOh8Rm=9MHJUzmBhAa#_-RrN`Uw}~f3(|EjroSzMAHq;VQ4TkyR(4#6WY!%UgMXI z^Vay~r+JOvp2Pz@sepO!8b7Tb4wQ}cFu!rD_7@*tvbG9iVUhbC|9y8$tK1 z@!N+ltnu@A=Ni8)dKC1=4h{1Vj~+%R zg5G>vn3_+SOz#1G0%)#Z?*)D6Rt?(+Kp*@g#tfiKK=i$TwRH6-O^dD0&*eJJVoFZT!POAO{aF?aYR%5yU5$MK@1ANSs* zAK%MBkAc6pB2TYm{+q(mZd?nx{V#Bz+sUL~X6{V-bNu^~{yM|GfiUcV`LHoznu&4a zgGqm0|8Gg1Q*>bkd*K?@j9bn#<>NNu8%N{gb55)0yYjNu8%N{c^yaLjk*kI^ov@ zP5%=?9~`f3)JV|l&@b~iZ4Bu4o5C{oE(5*evj{VICI`%C2IzU6e*1P#r=R}IKyUi2 z`gLKarYFy9cwc^dH|Er6&nr#8e+BX`0-oW2*Noa^-4leL|G z`}46*ziqj?({GkTkGIqIrI5$9FnDWb2OUiG16Dhy#y(kcdwJAUDmx69G zZ3~~fa6YCyzb=iw5||0w*>0QJurXc zdagT|%cpcLh|M3c;rTA|!q9hsehPH&_3H1lp!Z#ewgT?|AYlG8LrdJ7eRqD%;lEnr z`}+XT-vab8Y2Td_Kv#T9)8Uk~--eu)_S=y6rTsQ!w4pbk9UGta)1d}**&TCf1NyI8 zW6pUr)6iV58q$9GJS$*#a$wB7IADHZfNlYO>(x51Yz?@dO8a@;4f@4TB97+`qf0=) zGDGJw8$drdOX*Lf{c*+3X}|p333_moj!W-N`(xBErL|n~SmiZ0;$*2O&l+uKZ33cl#S=p{(Ss}0R4-!KQ8@kfPM}1Ml&~m zBkkAyK^eadd3VN7=TkC1&wDd|`TszG=fi9eGKD9(EI+t{q3hw+SVE)^T&p-QYzwP~9#&`c!(0i}ZI{wFiU(V3tb-d58`s#eS zZ}yM(7LGOafdI|xA<~)x-&d?_Y=w}0VM+VGy2h1N1&^+Eb z-q803%qs(aZ87GEshWl4PbpHdZx8D7QJHNPf^_{D~ zvhB+c+;!L8Uw-J)zQe_T;c7mUUl%w_uA*5|BDTyIZbSajax3ji50-nzv4k6qWMgrA zJUu*>kA>IqiwUW?N>%o5)}Al2zQ9rI-Ib}6eMiT8N#5M5E(L2TUxMKWK|q)BPaQdB zCGI#1_%61MEcq!cuAwf`dbq!QH@jBk#PDw3#5%syeHc@T>vTq9ETK9j+vFuId&ceR zWbs9=A5E&$!-93*;WZ=q%?}lYMTnt@OY+3pi5WHeV(zHt`nmL->-xv80lps?;QQ_Y zzCVZWEM_E(_*M9l??kT9!JFpN7mtA1xBPwIpSyWr`^Ynv17y=#3I;zPuer!qIXEMw zVED<3!o>w!4pRCyc(WQ`CVO8Ztt^S9&K`uDP#!2#!TS?aShzi|U0x2wPIN4`6e%miqS`Q1{A(8)7!}nIWl-B8CKdl^^0Q`MY@Vh39a&W>R z!c*(KI3AW5(}KaY34!piJWVO${Utc;)@YcylIJ-~_ufC3ez2o|eEv&E{(jp4-+Kr6 z9>sV5tD7-<=B$Zw!D)hN@6hH%J7dimmcDJ}*99e;CF7~KTs!mDR#%(5Oh!x?%e2%x zefA<>O0OMhyV*nb;?4pVd8*Ps&BFvJSKev&Mt-ead5T7}1kU+-sNE^!lXtF&GvxxNUdl1QrR6!H$Ax)YcPtoEz%jTOCyZ$MEbAk*m@!=IY-NJJC^j1+3O_(r& z9PwsM$!J;`Op#R>Udxe_mK?b~tu$T3Hq)8DEYgDCQ00o5_&I-O;g?9@lS&ved5MO8 z4*I9=xD_zwOA|D&tUHtWHF;2g}iIxLRK+E+y9^&!AD;QT=n(q;ez&v!2(epX} zWe?2t^rr(WF7f%#0JaD8BY@oj{l5S&1oV75}oI`I0;B@(C$&7*6L+6y(;s`T4M?C-Syc5om*FwZ-M zJ=X75O}`3$qGx<->kPDj}sl~`i{uGv_8zm zaqe4u26ca$eG9?dw8)dfEk$Wytyi z6R*egUKwHMRm5Dv4GNE@l?&rNQVLcn+0eKo99p($$pz3$;ouZ*Nwh(`*n6bMX^5v1 z`V1Ra5|pEI4(;M>L6ir0+knUDj(z7ro<5Soi!nnH&o|7APbyWqE9zFZq&r0pcBv8e zmWy|0dmD+?Bc=gnE*)L*bH zT<~d0cus@bS-OhjTh(uVa@2WrTo8RJ2UDj__1{D*EU%J7k*LajHrX#}TlhwveHM?U z2g+@_xYw5CSirP>l7{V0&a-O@Sx`2lef%mQBH!tW@O*~-C9-0RH9n>X5c$QicsGlQ z3{PW0cNFLt^n?HOpO!DaoS|R57XaZ0$_*=%RWa}S4EO*Q{+7>KvaoUCJQ35aVQY`L zh!Rvi zKjDHsZsSB?tv<;h0=oya2z%Z;F;d&SN^9))@84mvjtBBBJf*tI`o(vI2DG4U_hf6Q zkCw%ky9lqwle5N=Q`jm|(4Pdccpau+_GO|3i%O4H>@EkhKDjxpnl1q?33!=d>`E{Fu~l__a5XHZf)fv4tLt zU37NQSdoFkR_!Y?gt6tESd5jBSZ7LSMofv^7be(_NQ|&_R=&?q#9}O>r>k{AoTWd2 zK-D#h_+!VeMh$g(q;<{=E|@$|ugrs5o=ACqgZ5lsZZ6X^Dfe(JVO>*A*8jjh0zKA2 zrPaX@uU{?IOP(P!&uU-^-6469eLmlF_Q^&=pCb=r2Ixi#n~QU%w#Yk{)=V^Wq!p7u z2DAvKuj7Cg*0{qAJQs}Nl0~BP($muzr)`=u%@TWr@Dt3}Wdom#1*BHcU8_}2=<=NL z^!zy;?Q-WuSo)LF3xugF6+JIypBtKYUZds*h`HLqHOg%|jhN9Wi_)599#fWmIwzj$ zS}YRf&*i7#=O%g)b_r5Y4@MT|&gv4(Gjm9lOmZz13PX_uw)RD%@lw59K4d49;xt;C zQJ%P24x*(zWAW0=*RidhNG7b$f}3YhmPJ}LdLT4z%P^<1C5Y)IaW|7je4**h`5!#G zkyv^+&z#gD5bBU6*ki9IdDRGCm&nCcnfCPicl;Jz7dz3YXKc~^&QV)*PqTcB?x{}Q zqWh+Ewx|q}v!U`C$Yonp2Fl7UDx;)zi^@nzZBbbyYmNT$Eh_WmTBy8+cr#R98@y+W z${hLf7TsHYY>Ubyd3uY=H2J>K|9p$eLirt3Uc>y$7L}cH?A9h(qdXZZubqyB%B!2D zP#HjoCWo4s0*OZhT3G*1XNyQ?S;x~t5-nfHPua9RaVR0P`|nm6GL?6$Y?lw-t+HOuzFTFr zTzI$2a%sI=WxHgc@*^xCxm#tkTnTkN)a#&DK)oGmCDhMD<&BN6LY)J3H`IwxpM}bT z?0yEdn!^XR2I`-n@@ny*dzxqxhY#vP4jSCx5LOqwm3H3~<--KER^?Oi12=ymW zr$hY>R9-iF1uDP&`d6qk$p6cqQyD?@cC=dO6fc*T*h-@ra}%D0Lhb)t6YuHN6wE(u zmu-e0{tkkb&p+(*S~rFmzgd0dGfniL0E@rix6NsMWo5}EyYA<(F`UF0Y0?z`eHSyI z;g33tw5ubfY@{o1rDCVre_L7yr32V0kq4|R01?~4+qa%z#I#SAL_KMao>`dX;#KK; zyzGfS95CiSjq~({>C8-OI=u+gf|)coi}4FDS|N#?>U?btFPn4X#$*#pW_@Pd$l>W! zNlmWE0%F}L=Eo$FCmzuHD|IqlH3A$nD&1<&qQ2)^`fQ*16EH)p|wKm|FnYNrz@ssdw5@Oe!3Hh z_-q%`;ZzLdb53#jVo@q%hI-G*<@D_HFkeg0{t!xxp4~6X2xg)_|1SFi`i)_#a{K)W zqyL1_-}nXXpYDKq49q|G1?^XM82y7recY%|8P)!^woxWZi4=8q5}zuVG9|Dv#5<$B z>@x+WK8D#LF9YkE6B||s)}Ar!#E3JMBi;sGnB~OfR>LfCi7*aWk{jIYuz6X?DJzMU zl<<@~omtCzOgBnmD!Zc{8Ht*;*t|hhG8I+KQ5Vb+9M82#OWMpn`u=-@f7avwY}N5U zTECv2c;X2t>*>watBKyk|2NtAO?q>-YTjf6`Fm6Ti<#)&6kh(0c}sh9Bo@;b6c7J% z5{)zh7zPXh2sqT~ptcmmi3>;Sd}usMJmfop-Qfb~ExumH#a?LdRU zYGeLS96eSTEH)U3|488U-?avL32Xy412+QK0#^a+fnFd3v;(Vw6~JO(J}?`o1*(8D zzyU@8!+;?G0f$hYUIDJ@0|$Wvz;v`y zPXN1s9l$nVGjJntEpQdE9_R%!Ks&G+SOF{s<^!{VTA&K})|$gn26G1(0Sp6%00bPu zw^x9JzyV-CuqpZWu)ZIgX~fg!*fov3fXi@i@7#_5Zb``hQs5({CNu1Jez?EVq@M%N1J3|Y0uKUTxJc{L7N|D?p8_s7W|u&{2xtRV0ZV~KU=}b1 z7!QmB&HzpXjs^ajQM>;E^;f`8fbRm|Fy@bC{QCP9(4RB&p{tEr8gTnx4Sg!qHxd6or3Y?L{*f38e-Gvw>0_?qg#i8k8ulUVyMbN6 zc3?BG3AhSa*H64MFpmK%fCT}b*`Ox_Wxz;a7%&)k1K(Z)UNU?;fNe(+wjeee^~R&% z?aQ9E%l_7PP@PjuMd#Rk4_Vl#V>$DkPGx&>5iMOdXUVe0h4ZMWh&QlgL%-9FM~jG0 zWkow2$8qDy*6~)Jy=vwe?HMGM3D zSrWp;y0*q!1kxRJJ}x7>d+b(|in0XNxUg{rWy3*gZJwgH=f^*|C>0qlk!4NxZo zV+=+Z^MB&#al#!6G8l;eNZ|BGQ9wbsc_Lr&nRwYv6A!(>rGn_HI~(6IB#&VJKLtk< zhqr2HAot#CIvh=yj%2scjkdcmmVr8COCt>e{s#RYftP@5fR6!}0+#?ifD5F74&YY- z{49VU0{eh(0$&3j0R{s*fiD2}7~EmZ|B0i=jRw~l48(sVaQeS^=R1ew5zPOm;ArCT zR_zSr-djzFqY2ZI>=wFl)>g%E)c5AC3Z@6bilgNF@5E0LrgMSM0@ngp10Mx00doC> zw-e^Az;}Q>0iLr=T099n415LH4%`jg4*bCIaym?Zi)nGPQA2Ojp0&&V#?wKI@=Z#5l`CQL`NTj<8|cfE6XX>0%H|5I=@ad@kC26FGMro+*M=}2}9 z-57aKBb^Eq0fT@;cQ?|10KW!)3Oolq1AGm52-pGK3%m|@ZijkRj_#|M#SHNZH)c^m0>hRGMEPlCE`8?eP!+qWsi>Z(a7=hk zfO_a&j5~mRz@xx6U=y(Z-oEW7VZH)r0IGsKCM`z7YzXig>coq{bHHw3=RL~DX|eU5 zfx{TYCc~dQ3VZDV9=2B-u*?4HJAc`vzO2V8(XuZz(tKb#Pz8(uMgS)O1iZGrkq!bc z0Q-R5z@tD6*a>Vm^sT@qU?Z>rSZB<0z*Zn>aDp-aCypK`6sT_poG;&dxRHAA_pzfu zZ@+)CAM<2^`B??}vI70_1^O2s>f7D^)UOrrZ!XY(q(I+Ppsy>?k0{Xpc~`#vxdQz+ zAIaC>TcE$ZKp!p8&neJg7XX#ONx**~4EumD z0oMaAa60f8gylPr!ad+Gz{|idfgb_$9&4l-z$9QC@B!d7;N8F=;5Wcef$sy~1pW

60frlPHJe>E#>~7!|;5y(+;KP6mBp&ZSoXz-l9&k1=2bcyN2fY56AI?`n zA9&*J;hKKv{&)(_|2N^Cj@N+#_3eP|R_#Xp-R-MKLRB9a$j(6S4aD=0fDP-;rxniE z|M9SH_k~Blak$x@KFp352ln)B{*p0&1L}}(`sTv|{K*2lyZdl!U%+gap(h*nMnEky z^u~fX+z9N{*b1ZXz&c}=h1w2$2$=lsMk)s! z;B?>w;27Z0-bVU8@FMVIVBcP~`!v)?fiDBwfZL7vCZjU00lnVnyP+lx-2!z5u+Zom zpwM z=M#6uub%dJHZC6%EFVKJQ&Qzc&Pus=&pfO0`1xXxo`4Vr#Al9;LS2#gRXKF%&_#S% zN-W5Gkme4tJXs9y!IMnDAd(z9v>~lRZTMw-xSou$%uAOlyWz_D3Av%;lqC}#aXz$D zJdP^k_z>>R`w;Kt4`F<0?962O3aw)}I6N-Qm&z?0r>upq?2j{+MIr8>qG@`Of%dET*IdL;iWsImmKJcG&7=I$A1tQ2-*#fruL@JWiz)>YK zV(5Z|n=y%28G@c~FvF1+o9pK%>YUQ3XUKO6D;I)~MFOgH0pyqe9n7h8K08&OzjEQK zm91PRRv`p&ho38CnG`FN@$PuiS-1*Ry3Ik6;Y#B20Uzb2$_CCFd0CrdZ^D@p{~dn( zQWB)X>4IyW@lKX;C=XRuW;JR#pUD+D0P<2bhbfCR)lzMW>o{bKyxi(Uvk{g*>)7Xg zD;IEC0t?FtsLWF39O&gnJg4)VY@{U-H7PouIqjGEaef)oe3={kGB=WS6Sk;QRM-l9<$=QnM$j; zI$QBXkb@eTqilSct1^RpLM>)7Bn$m>XHFSfh)7p5SBJD!NfGf#R8vmNbUJ9y98Vj- zR^=kGvw#bJW!h=!;ua6h1DB0lA}TUM$9qW@L0gfES!oC~etI(1)j2cpRm6X&DaSY3 z8FQwaQ(QBLhK=kj&%|koxANIQEAE0*%RhcbmC=CZK5T2VW-Y7K4Q?96GN;E9TVt;v_eYur?wAL$oxxM7h!3kT;>T zPNLPxq>*AO5X#!E)Z3GuEr;u7g`=WTMABUZ4#93tx;Z%tXk7H&;A@t?3v*b=nF$$} zMfu8QR$C6lvYjQuwD93S?iS^?Tb^5gPoRQsq1vq!2Uo2$POj=dnB45ydg^52SyO(! zbmBap-VtBxa|6WS8AY6c2k0IWSWcc$~N33@I)u?6jOr%DS8xS&j$hSDf^W%x|5CYmj|=7W>t z$8qy}8s!uF3293C#BiWx6>YF>onQ>9vYiKH4zh&htqhg>kZAOi8K;cLJl2tER%B98(yzxqMn&Zs9x}rxmU5fUc93n=MS^c2>f|Rq`Kf70E)x`yK8vzRIO&S} z+#gHf(dOHVwJ@iM^|J4r91F2h>A~FAYn9jfA8AAJ=2O?jMSL&UoGVs|R=!9}X6R|5 z$l(meEtQ$aY;`3r%Yg|07IV%2^Zyn`{e#22@;9o^g*pjvfZ@jMr@zkU{TB4s|EiJN z4r2ax&^I3edgCvBJn|b=Up%1SmmSP^rx1UJo4bK+h}$E-ReLQ^AN{quWBD$J{LN$t}^}}gn1U~NpPb9^a-#-zxbbr=U+rTUi9^^{&HYDh4%Y0|L6em z&6)2Js7ryc(eH=oU@{gf6E}SRl(C1*(9~DVXZShnbvkfCF!KD!SR|WWFax#)? z6RFp1fyJ%Gb8s@RCC+Qky*>g1aei`wN}-lIMn*7a`g#c%gLMIv!R!o>a)ba@>d-y!E{9G5Jkhq=Pfjc^ zpQv)^?YLXbUE}y9?@EpB;p43omF}&?zi#8LknpJknUiNDW|GI{Q{`E3kC*GprnFm@ z`5a<`VjquW<<5@WBcV3qf{c?TXU3^ zyf7jojQoC;nMyrb#5>lNNus!9(%D>=>u@H5!72;>Px3XIHR%?a`w@?TTH~nyMo71n zpKr?xElab|5X{zOY057~b}`B^@@{o{Me`!r79JVvWUJ6I-?ifLCTWT*oZ?EaC>8VQ zt~jqK6$dT<|7sJZfGdF8fJcGXU+r5qJpWla^K=xd{d>FSf3JQZ)&Bke zqVF&M!M}mhY#_If*8K0)52V_^|6lY2#eX0^`?vAG`ZmA5AM+av%x^8wZ!XYpEzoc4 z$KC$^b{6pOD$qY#pnsx3zq>%cr$E2AK)e|>I)4eT~y&PPtj=a0iJX# zdYo*BK0cO6nGsK)&+-f{i4KJ`LrY>sRB7HosH7qz_g)q}SwNJm^HWLGDVYQ>r?9`1 zV;l(j2+Qf4Q+F19@65C4*bl0Dw7Bdo@>?X0z2$Gy{@;Uo<7Xw*5r9Y-z8IOWCNBp@t9V`U5BXUV1&fHn)*og# z3$F2$$}0gfpyS*R*YLY}EpoY>1s3yciZ#6Oh;LJQgdXoOVzPM^-)?iL{A}i#R_81a z$kGln{a^Op12D3yx*xvMx~@C8fld6jXjOL9`)pMi?aHg>8Es=F%TuLUP1|`hl6Ji| zhM3R;3H1vkH2(vE5K1V9ki-EeKxn1}2nJ$$4b@2qu*~=SoqONBH?z`eO~^<7Ul{4U zbMAfT-gn=9x18I~kvO{6j)Sr;S-Q0`g;itFzd$E#ROGT^f6k;AGSPBAi@fc?@UqUR z3sf!ka*mfhs$%hy2dObyR1KzxH*Vzc)aq<$bNPmz8vJ625ZoM0W5Aa8=7Br@=GR;O4o4Sp z?>+h2Cix+ErA!p^`IS#K$p>p`a=zPWrmP>bZ14l66?e3GICs@rBHd`hlzA-$zZO2( zq@lSP-wm~?xp|{nrpj>?xq<2Fz{K?EB=v@F9AQ%MHQmA)IVn@XGD9r$jfb_>I5Tn* zp3NruiNN7N5bR-3(cQ!a>x~WVjn;rMVTSKDpAV-UrR#B{k%3RK`4omiqDK=t_wg_G z+`@L;C*LVTM?Rh?rX2kQ96c9v=KC&ZEsnV2l5Lzw4rfq2_^F*IY%G6^<%Kxyfrz39 z-PGG+SI)AieAvekNrjz48WH5MhU5E&4!)AvKH!Yovw8tu$8J_OTjaZ}`aZIxu-Tv2 zOQCuM#4QWWc?((1P@;NMFO*6sok**}b~TTi`zJRyGFi^EXh$NJjOk|@O_4rF|ET0d z`4ew;pA}xpI$_LwI^qm@IjgizZc^K1C6WzSGj}9x+!oOG>P{|);V`Sb8@Fi%4wdDD5A0WtK;hc2ylx-+211>XrB2s$TqzTh%iGhXBuk z`&{j&Zda-5R5}{R_=vV8lV^7Or3;~kOl<|g*dywsu1pCN#ls7x6-KkI<7YE`&i1-f z+VeiYbx`zMaM8uQmoVCUc%Q~c(y6&(E;c8=Z4HfnYd9I>I@f%>VB&1svxmI28!2;u z?xI0Cdu0y>dS73;yjaP!XSt8z+x^yLHb<+WS@W)LHQuyI^K?`iDUf!-?WfR-^{tY= zOdd%*$IbS0-R#(N?tJXxr*PHsiv5qW*;C2mZplML>YBIW;~aB*qb ze5Y=0%gXa@*=jqwXC;qZ8#*o<3I*GnhBi_(YSBo;Hl4O!WM zzeUC#51&LcoXM6Oq-ExWm={7SC=0Odk-k(4cV%JHZEWQf_L{vj8XztXR>>pM)G_hB zVsdPKk>srBRrl_Qv23kJj8^2eX$J5q-^Og-HTY4s-eBy6w5YSZtOi*mrp9)$50Vb2 zQqqK@YfL9I$#fBK6HXQ5jq-YxA6&o zQ6!fX?rCIjiN_62FP$uDRJ4s5K6GN(XdyT968q&i<(=~l^#;8mKR z$#3WQ!}JYh)63x6?fsFl!?au6%~&v2xugX%T?@YH4qX%ZopegdbKO$U`CwIHKZVg& z8Bj3`^e9W^WJQg|k64R!6lKd^kgiA;vbftLPNss4G*Q|o544EvNzOFq%&RPFv5$A9 zH8i2Jxk3x6?AJCb7OZ?RBLbzwV>?~rexzS zH`Anf179#r#xBDs-L{ORSh2Ou5p^hOBZrmV%q8)5d)UohT+?&vRVBTMs*HU&q^0I3 zx2gw!bgO#w#~N3|uAiLk*8snps{F5nJ7)Y28+W`-dzD)YF*LE~lRJhRRCFeN6z#5;lyz%U)0qsWExVOqIzyUQFG z)ws=3bMxu0HhzzOen)M75=D8JYBK8cKY7ssHM`+}da}XQu(XQ*AHwgQRsNgdzR37} z=R%El!<|{Ov$T!HpHud#%iy`nB!4%rbAP?xdhxIKyJ|g#^Zc`EU9>ccs6i$7eU9YtK+?9&?l{z+YaBNK58||aa7I4ftj-;~TLdB|{-rSaG zXjCnAl)Zat7`8m-E3XK$^p-jCd%o|0dRyZG)nxFwVAC2r4{TpQ>|=qQi0`HC2h?9T z{^r2vtHkFEtEKzO$M7x;PkuhvfphU+*;vFerP4C?jnfNToJz8&29h9$|^YaF(SZ&M=C2 z8km?41Uc4`J>$-92+9IxzDR9US8TM@*Z_sQac2i47y1jdvXzIZ$Vsqq^oZzk!g*^a z-FufX;K}CacT2hNVg0fpGbE!)Rt~r9S5yToM-K&rni`niuV&Pczf}#! zws4lU@ln+g%Im2Fli=8qM-Ys)@ zsU#=%DZiz&G6dH4Bct+l?M5-|x>oqJd0TwS@@YM&W|;5HgxX^ISniBqlxJrDP*NLC zwq_dlD1T0AllHQ^19{ckrScTp(ZwSxk;hSG=cCHH6i>KxquN@ha>WQzuW}qki7gU* z_9gD)kiEPt^NLf6%IyE=7MKF~?LxkYP7(ceS`{;Pa-L_73_`I{H0`J$K0`*Lxnw0x zyuu5{)vg_P-nF?Na#>ctGjlnyVMSKr`n}%y>m?MEmpz+{Q3Z` zfNfRxpSTMDT5zR@x0Z3P!tJ97oRv(DKtr7pj2wk#jW2w^T)v=`=BPU2`hVp&_!0KH0wqbiY5f$pyE zvu)zgv}lDvCwTR(VkW1n-{s52^HCIaw0kOQFF;=C>JZ(+vMej7hc;POLs;*e6saNw zQS@X%51+_Sn>(z89BavU?TsE6YF*E(a zDI^SkIQb>s~5xr58zt`n=BP_EDV@55hq{^$PiY8ISR8}paDN(kvV`|A( zOEHyJ>6Eh5V(X4SXS~>~+#mf~ROPSL_&fY<9-6q_q7E0ZqiQHLs#bX6FniEO8@`~1A;B2?u#2QI^d6=J zHO9?^LD@{W0>2gUToKFtvlL9c=C3>i}N|;{jg>_&UJX0lp6Kb%3t}d>!EH1YalkI{85Gb%L)Ge4XIy z>{TmB%L)>+g4C=aIXw9RSrAf*8R`S6MMKj-nOcA{x~M-+`6!MJfsXs+`=jp zqBzp7pLe8P9(JVNdD4*%bE8Aw=x}ZfbDQ`?F{MHiK}fj8`Eyhr{4BsDH_oa{fxiK~ z;X|boF(=8sWAMKk{BH*T5}0RSYM!9+1qNRR{Ng_@m98=PT434^{T<+!18)Z2@E4`h zHsI56ZwF@k&`SQlDwTQ+_LJ|;rP2W1&n}flh+keRjS|1GRGJ`uUa1r!-`|uba|Mm$OKeXLZ<5r4E)vWY)ZDlHLzxKuhx{Ewy5X=1$hQ;0uUDm{((1Etc_ ziT|NgdM5FMrP6bN--Gy`PmK6pNR0SiN{skkPK@|oNsRbjON{tlM~wL1NR0U2OpJ8@ zB{9ko+W9ezUmrc&uYfHxprKPUeCQmI6Y_ucSB z;P;nG7Xv?x_r47H^LUS|fnSX0UuW>m+6V-uWukmzP^bV`T7=Oyw6_}BVXT1jC_4JG4l1jz_iW! zx4;*^u2gy-@TI^X1l|bz3E;;8e;)Ypz+dNkeX3OYJ~5vAQ{qpSN*CM&{E1TO3Sy+= z3B(VTO7+AaM}83_|8^6joQ)A99}W{E-@?R5SB4nrI!%o4{aj+?+aH_zZ!-7aMf|5I zSH%AZ<%#&dQt4yFuPv26NBo*n=@H^rqr4Ems#N+Ba1Gw$-|0p<`5Ez_mrB39$(4_5 zxApIBuie(Rx1+YHeQ#H7Q^(%!+NRFEJ+)0;i^H`|-HT(jO}%@2FF12#Z*Of=|K9%E zrnbFpwOiWj+H1FTEG}Gd=J4V|?Uv5P(b_Fti>V9F99&G*)`jajYwIF)UA1-5y6)P# zSY2;zUA(TZwk}cEUt2d{*H&A%unjE9#ry?l4lU+u>yB^huHDqWt*3TV$F|s2XD(apsXcS~VsGu4D;5#Um5T^_)gppjJ%SL|j3C70MiAohBM5Qr2tr&p zf)Lk_AjAzL2yx>GLOfw)p!UoYM+R%p+%z&&d*{)Q?Qoo@p4Fsy)*z)64&h#HtRa2U|R;YzdWizExps#r)g_o-skZtf5of)E{DDrsk% z`}(^3n>j#|ZIN6K)MJJy22-4tb(tVTr8pjHmxWAQ;)rC^K8fCEhWS3j!s!+@ad1r4 zwRNmm+q)_BJHmHLgN`HLkw3buG)up`+CH`r(Ldc zx2IFC!qd|u*M44myKwFA?2s${`@87hFEO`wIH+BtPK~-W>ei@7qh5{rI1!W2ro$P$ zUbH!l7GNRQEFOL8o14*xp#l3E#+Y~1&6eA{MGw8?p`YrZpX;Gt>Y-obq2J`8@AuFT zdgzBd^cOtz!%UkQ`+m#g{{s*G$KY{>$FBuFZRmdok7LpJ&)|Qp3Ghq!Z#DE=;Qu1S zbMdxWb)TWH+NS5WA?cN_GxSHcDRr}<@56w5lcB!|{{}-p1iIDGUjp4@=y!sD$2Ohj zci=K$=r7~uK0{v&o^eA5L5B=I4f?2|4}+dF^ij}pL(hO-H1sU!6NbJW^s=GnK;LEP zFzDYkbOiLX3>^pkd_x}x{bJAizTD8S2mNY8zXSB^Jn#4>6ZR|kAa6JHS3&=kp}!9L zeTM!9=nonCn-?(eH2p2mpEdNiFJL}u`a7V%PFiN>mHPfRw+#HdhYn}#q^IKRo~c8l zPK{7kPUe#-&Vd^}3iJ7Rd{Hfkx*yHctqR5bBB$lV*+X;kF>n?Z!b$Dbt5Kgu{cKA5 zIPJ;qm(59sTq3$@G1xRY?8bSGI1Nz5cg+HPI7Fw@qzS<$ zgiQw+pIN1x(?TRY@9%|IG@IM*+NTd1Yjk?@?ADHu3|JJDM z@h^e7o^)Z;tgIwsTu@GA_y5BPfEHyZa_4Zh#t z2Mqp@;roQap9kjL<(GgtNBI?C&Ru@P;O_u)uJZf9v|InE!DkGv-9D?H0DL*{6M-LR z@D1Db9K(|g-U`gU2~FGe^V+uS=k;vY&+!{PxLrSwZ5Z(=-2K4g20Op?7a(j4#Id#;MS@q}YKTAJT6T8psIRpM*F8&fRl&&h(s3(>zTz8cA z;(DwUFF7r}{%thCI?wvfx_+h7`(Ie!XAaf1G}%BiJ4wv!HU~@i<1+AybH1sL|IKyW zUCnhU?uIVNQGdOQFIvpo*}Ss3E2z9g<|uV@b~d?c4eEFL>UXP_?P?QJmq-`X#`;+m z=Y0`HM~i~12@7S_`AT5SQ^t!_?`jMHv(Q^;12LzT?JpbMZ<%D`vJ|{ zn_BC3?%sC#_D#Fg=IuGx1`6_U5y%pL*c$!Q71NG z1m4qwT-Vzu<*Z&g$8o2_Zw(amPEszTxm>*2DL2guo9C8)A+BVLsY*-7m$8~{)#7W} z&T&)rR8;{AgY0ohgiw)ox}*qZc9Ym($94IZt_SGFkl-O=UF7gql^{9~!aIa1Dxa!!=< zpqvBc{3qu=Iq%6iPtIp@E|c?|oa5wtCg(CakI6Yq&R=rwa>FZ2rRryl?Vb?Kmi3{y zrYW1fXktR`#VCmK+04Zg!Xaa=qnd|u+Wrace^HsgMqLa#bz1XKR=f5eG)+0}j;Cmv zZT8AxO|$KG(!e%+`Zi5pQRbRYozwo5;b!jAH08Ey zKR+%sWw*D}A1_Eb%z2mVJz)=d=p_$*1Hd|@Y06wqUQzDS`JhDRdc_a)vnX%reAD|u zW8)K&XHNp$bFWUr?|{DKw5D%SZa!FmBQu&tBc@*ed`whS&i?iTnx@>yJSW|P z>(`k68ojpu!?)|Olo{{YsA;aLJNe(?p*uZvmxu25&^;cy*F*Pt=zb6F2c-T|KX-?6 z(yU}%f_Zok@Gj-%=WdTb4-h!%-wSvy^BH&maK~S0|3UKKrr&*t@&3Jj_hAnm0Da$4 z%`;-sa0T+2XEMHbsrKKG>#MHRagKW8zZG!Ln>5XhbI!LI^YD**XkNe9pyQmxb>^ws ze+ux-KhyMW^iNDk84H3w@_Owb0$lQXoo3FPIO#kH`bDqPJcpJ0E=QF6jz>K-_c+{) z^0uK??{C;T$TC(caqZG6&$DI!8rjpJ%f^Lj4%gVU=D9;T?$tUh59K-UvZCC4 z=J5*WeNO?dexZJ^I{|y8?w3kjH@^2$&2v}Tzee57^t?d(zgD^Bihag=cWWN@A@4Qc zi~WeEb$_DiUrJx}kzI!8Js$d#9{Lj=`rRJ-ArJj=5B)I@{ZSA75fA-g5B;Ye`u}+7 z`#kh(J@jil^s7BI`c`Q-khdHDq*Ss@8^SePr#^Ds)}dw1-t=W$cV{`dgFHVkmDu-P zjlAMIJj;^!|IG2Pk#%{Ny+`2xMZ62k^9#uH22DRgp68WHEN|p__$8$h%Yg9wnWly3 z%{tCI@GP$VIyBdVHC-cX!4A#!>_0cW&hf92_36SP!~Zdt{^Cb9 zE&Q)9mDrBapZgJ{eA55TF3olD3rxM>+W5WfE73l@*h6zo-Jvf-8h-eo$yMdbbd=qjx_{TKiltO+LB+PJDE?ClBY=}9m0whlp7ZxXg#9q! zV}MTpJ`MOR;PZel0yb{3g61Fsm4NVso*LRe5LEim9(Bfa@l2rBcUC^LAbYqmnA}_! zRhQP;q6DV3rEZIVm(r)uWV`e9PP>3g`Hz%jWtN0a?Hiz>07TWmEPJi|6rD`c#H! z65&9Kh#Syw+v9UMn~zoc407M*eNolrfv=(zeaT$ zZPBPzqg_NF^G~X4cT5WQ!fJl2!MXU(H;!ul^9e_u^Wj@9EsrJKe)y$u$@#A_>%@;B3sF}aDW_}N4)lnJooJ!Q3%GR8ktT`2} zIW<&sDpqr9xMqI2W`1u)fHAQ+qs zs$zyMS- zlU&8EHum$f1EfN;t{p#7jDuT+kpl&zD7KEB=q^?+m58OOX;yUe!Vy=AbRIYffICgU z3>8-;;u#$bpOO3G{TL@v@fj5a!++B*eFRbz4l8N$bw@B=o`lZE;<`5w|9z<}-ow$F zDyktocgL8VwQf%4v=th9w9Yi`Id*#IZpnj={_=bz)dJV^b?aq*SWYzQ8FTV==sij0 zUHwkJ;9ei%sE>rBi^W`grBE*?qv~@!6v1O4aOdOt6uX>X@*D?Kfj%D19?E7CsbsWZ zra>j`Y}x8r`dAEX&U1jb`y9N;;FRH=_wz_f-ky^#HWtov5}tGTJe`48={o!D3YARbIg_eK*7nY^v@uE&kYITV&C7g*fy^*$(_ z4%4sCoVnI|xlUSPt6sl_E|XO7#^ZtEB)(QLBj@+DqOm;QI2L!Sh46QF;~DilRhJIu z>Jhc0M9-}~jsjkz`h{WoD#8R-3i+@bz%deK$J0s49yu%D5{|`G%W|Z+XeVQ{g@aOC zyH~5NP8LL&1)V*9{px7bP85^*xSYe}jb3fUNRBE>X1fPrbkQ?O?+hhYH1|<-;pSPCj|-rn;u)?K^jGx%2e4)|r+asu0a*PjoD$BJJt%!Hh4wd|YLg zxT}EIg}j<;@hN<`RH~IrPolWGkSwI)vJp)!hwV93qB*M2h!*ql)X9cM)x@8|x2MLD z1+;mod39=Gj-Q&1eq8Hf=T7zl1$2FS5jVS5xrxtFOlNGzA_SkM^KMR8`#F7D2TzUW zl-4HA6E+KJQ?}6F4QTNszHF=lRjJhCQ7@ky^-3gcbTWFsqS;ij7(a;;!vfUp4v_Sd z{kp3{`9>Q&q3eS4#r@LSnZ_=YMNT5WGD~0<#a0#Zs9pX|+jjC6+7#VriFN|Jn4_v{ z(Y4r3MNYCm(j19O()fv3{o+#F9v#IVUUvBzSsxEH9f+Tl_S7;>-RfyIrFWM(g6WHA zQy$VM%StMOLf}&izLZbx^zHVkW4>9Rf)tOIZEk8ZG1%FQ94%A@pK_uFq9e^mUFP?kk$CubRamc3XvrG7&$DA zjwQTLY_P(~xHnYtP-iHk#s-P_b6{L{STV!WQx&>V>u!YabEMPdv^ zvo9K)b_fY0)F~HBSaC4C5QsxR4@IeC_qKLK7)7TURrbmW#Z!E(QGG;_XBD|~C7g=q z7H~z~EhNLKWY`u;%CafY_Ch#^PCjoiOB3q`Dp)uV##F%+`0!#{h0~EF+FyJPP^fyy z98`PJ;l6-cr^3;gxO8Dr;iR~v`BsdgNUH>4+IbOLs{{=%yAH}4;brDnbWxiUP?33Y z=>xnGTj?%VMHUSe&E`(R6_rSgAJY=yrNtNZ&lJ)*L1vQxa~!rSd3F; zVFHmQR7A|t5dpF`4>bx_k!(7mk9mg?1^QI$(oK8OeD3i3T3YwOC%X(eijTMDT1+e? zW5^5@S)hY`xeQzA;AD!56y#Jgb2ysjp=W)H)3+Fp=fZY0nMCg=Xg<=XXAjtU`E;{v|^vM=H*`U*beVivM&IAvBRquFTD@e*TyOrjf_TNqR{ zQ7n5P$3UZHif4*G(|0g@BAHKvk)#w7!HPw){8`uxn*7G^SLl~_AkbhmK4R-b$$Ci~ zua9O34~nyKWHRB*MIFEVJe_i-+aR>=(M3oKaGppQKXlN@x+SvY9X?uUh+@c7cA^><=PyQ$hu#BHOqt!tTBi_^x_!oO+5#whrSL`(O`^=i zAnGCmStChmGasV5l(UU7RAf5%jbfTbD>7h{9G&5XBIU?<=YdUuO=Go14iOu4f(w=2j&0x)1 zb)5V#H~paMqW&_Y-}NPNx-NAZj4EzNrJaZ`Dtt-w2lE-U%PO8Uwoqun2C_kXB_E|V z6~08dFBF||ULU*i^o86ruZOSXy7cHzKT7m4B$7HJX$BJoRUW&j1fpXD=RfV^CJbIo$+Cm$;#iEhM7GrOR6)78R#aPbDOaNt=-7Rkw&k*ZeZ2i3H0cXI)H4X3v8)6a-Q9^;q3nP->zQFs@Uw{1XDqtr^)dfq;gWd zW@0njkIl^bTN>}0DOj`cF^nv{3FNJPk{{Mq^Ul$j`IwR#BpZpjmpErW>pV)Wr&NIu zO#R^~Tx4XN^Q?)P7+PzqHKXS7vbyP=k8;qKXEbpiAPy?S zsIh9kkTUKRj_B{3EP$G2e&~LsBh$1AbaE9*D(! zLqdrfj<|1F9Qw??Z(1CZ3A_CvR8nOD=>-gbd`i$jrr&T)*OdGc*CS!xp2 z;>lqY;~`2t`W8O4SXKa53(|NkENX%jAf;104U!f2Hwn#?576w0e+_;4muRHh`;h*K;r6PL$nt-cvwi?12uwe3Ei zZ;NlMug-_I*~gKm-?z7UuWys@ZXZUiwrolx_Kxv7`kLE&dVL)oUCkYxGS-Wqq~z=J za8xK`mE#z}$biFE$8Aw*vIqf-10jyD;ZP|LfsMA{IM_Y2$e$=$zUhRq8JmJ%KcwO?9pI^*S z`xX$VkD86fDW4>W6SB=>gs+*pMVocK*4~r}nnfM3>%{$dIBh({%4l;TTM^3SbF&y( zMVsP$H8dJD2!Q4sO(`Upynb89Aqk}+KnOMZj^mI!61AP=@TS?^@QKkt{qnw|?NI4r z0_CT9SvU5+FtyS99OZ2$o>aDAd&nkDhoe-32*J0?DFsioW=YW%p~@#Uueq4v1OZ#G z=4|9Rmrlyl-zo*M5F)sLtJukNY~-Pjg+Ml+_f3&6g$>hNZ=vcIdeuO=_ewL@1R$g+WfHP)w6jnY<&< zqtVVr3+QGS;$^dXXz(Klyq)s zSxIp=FPY;@ibr`EmE$lAAZ^D}M-80OK8{Sx2@2}XOA{5-&U-DW6GgOa7%j4N zoQSI#-hy!KJq9ad716PFo8PtjHyy%crs6W zmNNO6PipIp+Kyw&b#NXvpNc9YeB_H9?B|P`Fe8+FG2v(nlrNbta1Y~Fs#a`WN~T2t zp^s90rOU|lm3LZYGTc`gSbK7HLAmxSK}L*|=9rXy+_wt%Xy$Z-t2=d}a%DXw;FT8anA6WW=V ziBBQ5IxX8aG04;_#>P40WJRVCa5`3;SV)_)X0OE6=542U?rvz@d%Hf#sV9T&ymsl< z#a`Bm8L8-<(+8OqE`Mo1ZCX4-$Fi2M>_}c*G7%pYlB@fi?6MODaZ6u7^=smge3e=I z>@r7+EYavF@lI${orNXa3$q5(4tf+{B z15Vm8EK&!*X#IgIQZ>o;GDas779Btum@m(VU5 zh1xk2fnA)Jy$v>c!iXj?*n=F!v_`Z`TTX>ItS!Zw2{1dGQd*ETnE@x2uHw6aP%V-0 zA|&vZtgmIk*FwegKI&kHN91^!kxQr;LMkd<*Qs1ih(jhI>}A9x)6FQepdvKeDxEUb z;zb=Ju0YE9B>W<#_;T{4facrDLu4U7Z^Seeg@`!y;mRvp`F=^TME7T1omG zH{KYzT>zG4A-TvZ6q|Fpcv=|JtSms_E0UJNQ&0ZhXo+-5U(v7fX-m9Rw#+gM&x_OKEg>s)jVU&B4iBBug!KLOxq=@8Gq+ zhgS&0YB`=nbE=nOmXk}=3>#e#yTZ%MD&pe`btEKh+`u3& zBfN~^!pb}sLA9ET@-Cz&TJlRAV83;J9v%u589Va5_;hy+*QQ;loxqMFD@a52%)mfv7*e`ObhGr9GjWB0{sd} zGLvE@pIc%GHZF5Zys<>T!&AI4K_NyT;AMq3p1hxzV0j5pxl4d2(Y{J2hVgNVi+keW z^rUtfqulsTxhy3p>A{_zTy|(V<;B4=VIjhSnwJe#Xm)j<9hZemEh*^AWR`E7M%Fe* zdeO@&PG~DLp{>fxOJ>GNCbLDv;RJ}Z)kO{!vYEJyTx9T|=o3!m7Q(FiDwZvBn1fbV zDt}pvtn7~yp@(gt^huP3*vb=gE&<<7hBVxL!fZfuCVeo+Fk#cJsZ5+*ImTaTCKvMP z@FK`$C4(dk>e*W9t)a+0GZrz2FL}Y6IHJFDx^!7Y5OLltAn3H&+(wln zcNC?c{R+xPKAcQB%aH6%(Va+Z!faRSFim+4$RfS7HN&i4bflvumrjQbCR+P2p*s;d4)Dk}@8w4@d z85lk^Fg4oQ(K0+Xrb6)ot!lyejWu@H+0Pd~yk;V?K_G zn$N^jogIv5zf8Z3x<+}*n>LK<`xY*I>r&E+R#vq}BqOPs%-JM!nj0otqufm-J11r9 zmnd$|i%MHL#h`xs`|a<%erP^fhXO~Y6${@Emc|{B)eAdXI2PK0ayKzLu~i)i1SbMx zrv9Mx522%gM0Z$EYB+^ls-S!KK>Vca2^kBYgrvy|GoUtJammFuDRtS6x1ATsF8Fz_l*zzjk$=^M#wM!hh@W>xc2e zgW$i(e4Cr9fb$eQTgfxNJiE#>r99tx!ua#NFVC^^d@0X*=8Zqk{_=eH9ZH}3w2eRa zH}kA3C&_pQv|#*sCYa}5c?Ol|L5s$JuhM5=c^;K}6PAoWdl8<8WwVn}`Yb2?d2X0z zW4UpcYuzixpJ#~KIq=LX-|3|B=XqkDndSLazSAk=|MXI+^bEkW0M7y3Y5ac=^fLj^ z20RzA)%f$w@%!LrI^GYw&G_^D@q=(vo$WsWHW`1OwEF_s4I(X#6LtAZ`3_t%BpmzqbnRF#ey%vmOR~ z0q{jY*!X`5^uGWe0el${G5%ix{Z+u%0AB}0jsG`5e-rR6z_$T0XrX{B{oCrp5p-9jb&I;dl8e{;Pp9 zeBUze_W}YP+6heI|%wXG5P(3iPyhy4$#OCQiPp z<~TBbo4Rl8Hubd8N?3tkZWaI4V8QTB8GIw~zywB-L;Go9GcY*1uUicVMg|U!O{@I_ z6Z-;?DJKKtDztxeWcpSNfasp_`r|~9t?#>2PV|?{((_7eK2@nG_)U;ATT{KfNBun7-GoT zBHBS$FubhKrkc&ydLO+iRsEQM^U9fjLSzcy~BQ0t3@?$P4GrzQFV}WFN;lHaRpf7MR-)_wZ4qe00deAz_C? zL&yxrH9mNBy3#Q>Iv((Zu5v+`I%G9-n%rt$wwlwNdfb)l?CY_b4~HSbH&1q2&53L} z$pvE6f@a59Go11HX1#jetOb24VES#|teH2K)tt3x2MjHn)tqu9RFD|+=Y^P$B?X6L zOW~X*(dxxg^9~s;=n#&@_R*d&Zr|(hbR}&V>#hW4nzuit{}3Y z_oeDzptH}_aV4_`KC9mB`L1`)r_tUq#;x$qiS3FF^vE+#acVLz$aQJ$j z_j2|-#?orp?=a2jGe7!W+eD>UBwHwC(|n4P=gCyM&J!VcicaYK> zXH{KCjKHSU&vf(Rq@5-fE%?|s8w;jt& zYlN7oYnTc9XBuaA$-DG=4$sY=&8>Olcu@Js&KeQd&9vOU^=`-)%}CWi;PB|sllL)U z2;bw{OIkH7&oJ?0k+*jpUe(ehk0CG5y?Hhv*Sja}GFi(hb4Uq!``!1%=g~*fTw_SG z#>Paep(j%dAW{+1Ndxm3zol#Ns)yg-SoKXh7RbXfISOZq=n<9b6orJQiEu0?gkH-^ zIsPffKdyHdYYhT41#4nw(I}g^m5EMnNmZ#brMn>?ZOFAYwahdWRthtx_v~4jY2=Y2 z?&Cz8qQf|Z!Cbpad1%cf*Ya(LpiI!$N%M9zKumEb?dD|CHH0PE?Hh6SH+b#K^Yyfl zB%4@La;=L=nV0jl{!OZ7X1n6vUe$tctd2EXm$u9{>2cS$pE@gJwSNUp85}j3 zrwt#+6psRPto9$kONP%j_XFMfbhfcMEgM^=p0>7rx0n3vHnjsV4VX8ygU<)1*MMtR z@jGq8tcA(*1OwG!S9|ugzecEj-v2b3}-ym4Q%&a+Sdn!uaJ^X(J4mt(<$X@+M=ia($y!cAWJMs+Zz6G0E@+q- z8ECYIvPIJkAfHnfs=;{%%Yzr3 z@<2SJiU(6;ajF+pKWz`HYdThkZ=U0x1D`n$o^!#up8xmf5%=4{gMOe}_XC#R4clln z9Oijy%N*PmMI?EQlyh0Tz(H^!Yq8hxxr%$l=&)^Z!z-sConbWN?x~8KN+9ByY;k_U zlGcW?$(~y2c9s{icrf|Z*2$o{H-PUy;o_?eO?dryP(3mhR9gY513~rvTk(Bwb?=`G zeCNrxR=E2{QRerb4L9%m^?>uN^MUo!>`nXmzRz z91g1AzayyTaDNf^Gjl<86fg{E1w0XO^X)-p;r?ZSe+SQ(0k?wg2Ao9L7~oy-dkx@u zfEB<;V!zqv{uciK4SxZ6OA7t^qKh9ZSnIg|tMUJT1?QVS@|_Q?7tdpjuaF6!= z-j(|G!n4ys_0^P)`@bXpUnelF=L3J2((kk$tQU_1>&4^1%T|KwPnLf*n0^dlA6UbG z>nWGs4?57@-Q~AJavDP~(paLR?#`B$mb3Itvu8k~}#A>K9eP8(t7p>KQ?G z%kwMo`M`VsAgEpd_&(sPh-V7;!RMe{19m<~^EmjqFF7~-{6#_al^474cYk>9XFvSH zUk|+Xg>E|6gZ1*mf%W2ftnnRwE@UCVhmc1v13Vphb35QI$fqu(KMi=~*+KP&=iwe; z8qf;(CBpnO;Prst1B1j) zAcHji;~RqN#elE>Nl=A>Zv)%}s0Doc&w}b5fIk8}6|eyKA^45}U-ibID!oC*ZhdFZ z;ZZAE6az9V&7JEfjFld?X7_jo9%e(_<*R=|4!pZj=F-4EFR z3CKXer-45R|F?WBs9y0=4L|yPP<`N2sAGWer-SNWfK#8t`+PE}_Iy^u2R@^r_-PHK z>HofehHM5HLmZa@e;9ZS_>VuO;olI)*8#1dGk~{)z7O!_uc6%oyb5p+APn#WZUQ{| z)u8$(z+V8K4_E+<0yYCS0KV`Qd@I090Ly?Wz#BjOn}a|6^7+B1A2~l@oWJwP`ar%r z{$+h2-)p|KK9KL~FRc$R{^I$;UIXjp-~V)YS~2F# zDctWp2ZKBywvsI#2IG!yZ>s9#p~}fe z=O4NLu|5Co*Xwt6^7R5wp8OX6_X5kq^Pdz_DM0HDF6^yx|K9-radSvLbo1H%8$Et+ zTjRa{W0i2{dd_PK5c>W#oJ20jQVZ3(IO1D*l!0baK`q!s}!fQtc-YznD& z1O5>3ySMxneqHcmE2Q4j6jB?W^sB+$k0ES+4c?f?|C@~=>gRU*>$CgHy|M<<)8^UY zr&YABIAc$nTd}D%+}750n&9s6xa*>LhBy4osRnA=_HG)q>C?gOd!i5m;e@G^h8d>x zjxAZKp^*r^m!R7jGX!O@E5=oMGPB67nh2kx&Xa;@Lsx2aVmc6<7#MT+i&qVa#jVH1 zh`ZN`+f@>-)#X_AGpFjJ_3QC)Ltwqx^8lGe6bf3@1HfaWvN9w_1bDy{*-n{5r-EA* z)Fru)+6lOJDWrB~A$y$Av;*`bJkxgRM{?_f!#iW*d!{E|Z(I)T#jDY4xz`Fyc>4*L z{u1E9Ro>-%pZ|;eV|#v=U73eJ^o08@{O^SuQ6@K>3aM9~45`C87d}|!{=WfQkmd_l zN%u=vTzYAZ_iA|z@4FVS*Pry4o)%L6lfN3g`Z0uk*&4jh_V}Lw{mtLQcLv-E`0mp~ zsuTFNz=wf90DKkjQ-F^F9uMdR{NUb@`Y_=AxQF(<{~Yc9UfnnJwpGo;>JEUKyx9Kd z0tY~7r)|uF3%To4AM&~^&y8*a|XgWg+;}-RE``&bSsV>nry<^N0H2k`k`ntE(fww z>zEB)Vlq3chY zX?vI9A$`Axe!HPRVR-rbq=){LhyJvO{wELp84un2b5;I*&g1{j9{Teh`e6_K1rNQ; z6VI1C{(C(Bk9hpQ?4bueJYV(rf6YS&JUrj<_8Z%K|W9!QMjrtDB`c;!fTa{2JW{_sF*tawn}^VV6h*G;?Iw6{$=+qAFE z^WU_mO*`7OpG~{jmeO{zd8U$Qka_;OPHFqs6zX{XnEEw%P?P0|=Y@I3nCFRUx4KRJ z7k)K0_{W7OX=|LHL&{ylqBN7^EwuN3O~rlsAOA(Ev6g`3GgJqEr3mct$;cYUhUN*er@(d zTh9{xX=2YRACG49qQTKpbxo-luFZlRZDd|GgdSCCJZ#xRBl!so6_oPKm{jf)lMGr-Odwj_`TpSXOX(bq=n`URW^K8|eJu}B! zGj}%Mb?o-m+1)dzx6YiV_paSDEZ;k6YHDUT1~UyaXY+z*CW_d}v>Vjs9V(eHCgtKO z)zEls_RhO@?gnw^UB{3pMMgDaB2_b|KA)`YVo(^St2Izc7OG4=NuF53OlOJnUIG4jod+>O(d*_g+~9zyD|I*%b1w*vh}+; zLu%YrcdNRn`AfxQupTN#(6twMZe6u(+CylZ-CVEaB5Cb(C)dq`^_e%xKHTr}JN^sF zf;BxkCF9*}v7o;x7xVNPZSZzi@D5H+Pfw1o!LEe}gz2I2ICFZieosB$x4yOBGIJL7 zJ7nx#*VeJ3R5-%(SGdOTAIE5F$q+d6vsJKLh2@t(HM{%~h!G~U(S z-_w;ybhP*MCVHs9D%REBAB(j0MB5ohG#2gcLBRh0_O3*vzoV}`+#c#dvnmDfZjCp)<$1zfQ3I=D zOF23@p#~04@1G2+!1%x@6(>y{4UX>HKdstTAzzHErY)_TFJ-)eKG8$q5&z5@uFs-6 zb$#O0Imm&E;Fu2z^mcbt*s--lb*5#SVA>&4Gl$TEu>AmYr^hg)6c3+Pttko?jZ!lz z1@jvlm@U-CnWqW~yC`!=yHeBCT3x_U89ZvqPS1?ptdq-zicTaC$e?#-m z+qar>g>M=w=2A)7AR(GQkcZ;~Q}{lG{7L`t~i{cohX_ti zPL~}clfl8!VR+^LZxdILf_eA1dvF2$|od{!o4>|&}=^$O)@Oa+4D zqtk0V!@c=mdWOWl-F?S{W7KDaaw}mgyv;W{JG;GH7Tl>(z8cZzZ_B @mUat0Z8!+_G!F)hgwH+zF@btUe0M8jR}J8XO1)S`P#QQ_QH= za^-9FR!a%PFGx7Ovo<9=V(BMrZeYMXmVt7Bse)P#PlQ!{`e%z*ue~EDCRTCQ%Dzb z%k7!n%}>>Bs?&)fQ(BQJt;iJ3BHYw$X3D1))ok6UFE50t;Z=WfaE7^g3UAkff};EL zs#+(E&RD8kupK7L(M;Sb(wjju&9|%a95GMJ<+2&QoT`=1SF8fd5M25Lb*@0P%-$+? zwJU;1b|NdC++fZ+d8IRA5HD!qJBev`-jv2Lpt>kI28=WGcMnyZh z2(`{FSvAgNGtC2`q0v#VNN+O4yskXX`=Vu)#TDsqEqj|hH%~k}q1Bwa@6&I!W*|pu zuY9KCyWS(+@?=7+#?!iPEUGN)7*Q~@+JK~@4zDHOoc&GgwZ90GUx0Y&E{h1ipY6_+ zo~@KY2y25F$;{02J55xwn|$_i`DH0(S^Bo59BVb=s>qOD;WAKOpD}h>oUPPo6_^ey zB8uXiG9!B+-Jt=a;E+fe$zE$kH=;SmMjY>m@htsRt!}4?QcrPImaUu&=X9=;@l+SW zQ0+r8N9nY${AFFa98BHro zcjRTVY8Z{xCgp3HQ>}XNC$pN0!xAx_QMT^E1_Q~fFZ6Rk zBJ&#`<i^Xu8qxGd^n$K@*cQ;$n7+RY4?_9-R=G%Y|`MWQi zkI?>=ZlTO%v~U!%Ic?<^0Ua{X+27`Fw+`p$i|M%0(}@?LT6|-gBQI*@b-L%o?v!r3 zHko&6rO6tmThcu5_i!5P!^T{V*I=ynnlUdrFg7-LaGD6R#}qYjPY;Yv1csH#CbesV zLj4X)p@~KdnzEG7qRBZ;8wn&r8_RLgtw#^A>v=kT-_oWd^rxB6XCYupq-peq>G&?S z0K5R42hIbhqPtYYZ`Kgz%quKcd#tRiD4*J;P2y;M_F{7*_G)cwQlpK*1S!jX zUA{GdmyBAMY_hCNl$67cF3&S!<)K&E z;IH%r1+>PIqTZ3ft`8p~IL?7bpoe=o4rWBx42w?XctO(PbY6$sS3P=A&Bpic_oS(u z66ummE=UN79Ckb}_5Qh^I;>KU5gt4bp5G+=9^h}+xc8n_{GMCoeh1(!hJGUeZ6n$y zH#<$PSF}vv>F|41b2!Zmq^`|=H!N#_rBx;~OsD62ts4UTD0BMh3t`bE%2HkYtelcpf!9r73AmP`NWP+LMZ8Q>Jf#+);FOW}>R0F|zR( z=iPh!Wo?IN-|Tg7Ry4lTf#A3rlIy;MqZmF-Ol#-JK8*+WDKsF6fnDQ1OI`=*(5jgu zywib(eX#mYj7Dm-(QU+w$Z#E$YiLS^rU!!4xK7e6kJMv)H?!Y}8nR=qaA4Bk(YZ$F zfrRzBw`9od1Zn4jDbplv6S0=9S!i5gU%2P}-p{1XZClceN>^Z+7IoJcUua)Ge)1eV z!+3LHspK)=yv!!Ofmw_-4fn1{iW+CieHuDOo_Xr$BsR?fac(h{Wq*@3D;VCcaJB9c zJ$1LMP4ui%(Z*#|(Jxw+r)|9?%EvINoK4ze>HGWSo=E!C-X;UxWX9EKDssq-QGN>k zes|Bc+g3W`DfA#nVL7am4*lq8G@dIs&qmAI<=Lh#iyrd58Aqq7lgA3PWL_n>eimXF zPP$9z&hUcMG@L=Ba2|`9sUN0YPYxKlz%!H>ADAB6zb`m>a7qOxhE?dm=oF*xb2Gbs zSH0&Q``2ohOqWnzr7-;M@?5*fh4l&%PJf`@K97>v`dR%XetEhP&rq{nI4Qc1(()X| zF@(NdX4CeZEVYr_E6kyC-qVUkxtl_5^hBxEk9wJ1KAq-{bEbKS(`5m+E;>z$TUbJB ze00JP14lH$tBl-2GCic*3VKpb<2UIn=Ngme*W#9$Tb1pKwj+(YAIvH&(?wLLfy)hSG;pPXOATCM;4%YODXp(wt@2y#`A;+OQv=TPe{6uyrcDq& zn`@(d_A8Zs_9IF^`^!o{`|IklKi^W?2FkPn=lMYcd_KP&pU>~d=hGGppHDj>d_HZW z@cAq|=XyS$$>%e_nHE0(A_HsXzmv~S{yX{Xd>1GGo$um2e^9z3_Gg1^W=+Qy&j>Yi zGOURpnnU7o3wMALnS%M|={tYL?Mk338mgwl_60)Uh! zi(4o@UtA=dM2LsuFzFCKLm!rbOx5q9&(EsQ0R9E=ZNQHKKLcF!@T|HVa0B3Gz$U{%%a0oC1mLnV$4IZY!D@atT~n*Ul>fmdCX!7(S0~SIY6ph(Lchb4N#~rG8Gn z4TfW@$KzO``?PMn=k?JJ9i&kQO}L|tJdp>-9X+_WJ0gq z54%!&bx?0Vx=vrbb|fZ-$IuV2+u)tEjjyQEZib(`|2}8ey-weK?rwXXKKp#S>&Mn# zpI=|?9ha2HRh519xw>h$p*yRO9&}rrL}e}WRJyhM-0G%vwN7{4KG)k$By^{H&OY+2 z#==v>tJ(>t{;u0Uo-58(;#;?Ge2np}-7mV|VC{afs_*r5xaaH_s|2P>pU2WCRtTM| zcZm**QjfJylm*eV^R--OJUx?}SL^qORYjd-SKF`D7j~UbU+9r5UDx`3mp5m` zr!uR(di#vbJF9d4;vbn+v1cDv-N5%>dPM!*M`zVf|MRfAmiE1q>&-2?ZL7aUes z!~NVhA6Cb~_vqt}sHXsb@WvzR*vDtpr{8^8orHV;|J&ZTz{gpYc|VzglyYf<+@x4u zN&}_oB$>&zX&O4oOxlpExiqD>VKVbhGGuPdJ82TWE@ZXRx}xHO3sTg|r--PC2!4tz zRzYPIhf)=hW!ZwrvK67SfCbrh|Ic&IJ2QC`+}-c?`|bXiO|} zhZ)EYSp6gGBK~Mwl3&%)(}>Gq$?ohx$QNr*cAJ5SpO|3=;+={?9McS>d(A+y8=+=k za$|O&hzPgxBISsmS@BNF4rKa5zGS!6pY9F$GJVX>4v^J9))8w@_lk^7@EYe>J8R3c z%s`?m-J2blx{OBFW%^P*FcxAIEsOrN7JB+OYk>=Jvq5(>E?I`Vr}*Zhw2q?eVS-*KL!{Y+eJ z`_~fH+5Y)N?b^@pMlaX?X&_Pv_rC_~&W=vfNf$4y**KfEu6yXv*admalPNuy*N=i?;E4^=l6o<|E16 zMgE*4v#w;Ih~d=cxsEbSkqpTK*7_^|7WM*903a8R0RcyX`#g=7+f86V3iq_)h zGs;=A$Cf}%H5--+=_PZr5ICEknWetzEuiy*1HN@Z?eOgVV1G~FK)`=uF)PsB+T(BU zUU#Be+(uI;L#wQPj!)rW&P-a#HO$QCR0`?E zL(Xir*)>_1OleN?S7hSP_PqNcN$PrWALqg_1}z<3O~Eb9{^1#N=Tjr@8_KLxc!9ze zYs-q|v~A1g3qtOzeC|!bty?O#tdMo25`xC4buO-k-j&7`{Ed5LTupd9pUbmK?=3l3 zW}&90QCn@Xb>tUm-*V4JI`FlP^f9>4eM8~bUn}?nwLI-LRJ@-nN6+s;)AX9`2U#aF zdOz18_a5z{p!LP`HA3moa4a6nP8mzXiKT^EU=71D-p@8!?WM&#$|4DBif5at zslVOdEGxO2I?WL7Sej|1F%e3~g#eQuPG*KMM+a|FpP&cq#K+7j^$nVht7T)!pgQ;J zR$oV198yi!k3Z$Fi#J)9%PDynW+UAvk*Ra7IMJ+yc;$!?zH~@!!+i{_3Iki z(?!|rlx#;DO2kG&$U_HkDbNX&MflhyzAic$Zk3V7(IdyI1P=9l@bIC!nvXT&MLHZQ zRu)-Z7FjRxTWODv_O#F*Kkb2kfcEs$9s?|6E$!Jvd#bLcJs!XdR0B0YEl>y40}a3` zmJvag^suOhWj!qHVQCMGdsyDX5j-5@64u7CYB*L6$Ex87HHd&TBq0v21wCx0EH|!m zG30su;>}*J2`P~(Vr_yNxRBgLAjRS8@c}J>A7~|spAKs^qN7&iYgX4tB~{n0u7Seb zddl@uu7h%2l(Q(8rQB-DHBoL2<(esX3FX#O&PTZx%C%C?Pq`0M?pn$XP;QWN8z?tK zxs8;&jB=YOx0!NV2$%ERF3RnuTp#87DYuStJ(T+Z<=SyBpka4($~nQuF7fdZ+1qgi zupQU{aI^04c)a3pzIRCBcX+)*)S<;abrO46j!{15TY3koVMjj@D6lh>dzf;MQSR?3 z_fyI(q}&fEH$l0dQEr@a-ITkOa`lvZigM3T?m5c6K)FMddzo^tQtl1Py+ygBv^`tx zt>W6`d~NnhH}h0^SF4urRC#P4+89T#9ING6Bga}f*2}R$j;r|St&*d}@`}7y&A zt&^k3dquulB&$V#wa8a1dGU%~J_t`#u!f#70J-Z)0jTSqE|jMh0~Fc>)qh!8xq*LL zJV1*FY4LjI_4fc?nv|0^e=23*y~H!Rc#XL6#m%&Mt7kQx0LQx;yoS{xmgT$@yvFB-CFI|YqvqW ztCZ`l(yrFy)$zSL{wDV8INmz#Y89(jtXB?Ks`%^kA#HGKbV!@jg@owb)aejzi51)w zE4VFIaAU0K;zLsEOewQ-sN;Hd&Z~8ft95p&wS2YCd5z}RXnu{&*LrGnX=-$)YjhTC zwEkM1ZmmwIR_m+P`f9blTCJ~E>#NoJYDHfx6Uz@_t173sp(>}OR7|Wv@7cV@8wX=e z-KZSdkH+w-p?tMCULL1Fsw$6i zyvnIoPK|PEl~bo29ic%vtHkkCDMxAXC@mhP#iO)%lopTD;!#>WN{dHn@hUA|rNyhX zc$F5f%5}9!N)M~4Q{|{q4#Fem@c0OAZVhb3!Hm+WX}wT=us0D`RxMsWw$+H2 zk8QPlsN(}?sI7qyt3*ka97T)AD~X88e)pty+q|08q1BpHuBc~Hxsni^I_1Y*J3IZ(U%pS9|Z{n7GBt>O)V3gI%3kSns3u)A?HlE;{b4i8t{P3{6lC}&3 z8BZEBf1LXW@e`?9^pp4L1;cSXD^gVKxac}k%Ct-BQJti0lE*SOQeznxuwPybG|02P zDj;e>3N3FCmX}!<%ftIh)JIKKzCQTDTg?R4?;Y^WJs#vhJvCMp%Ti`3M5duyY{MYB zE;6T{e?vgF-84LD@|O;-aFzR_0Jc?A2;kI$+}vz3h4d5uM26pu7YZQj)p?nY{e=^Z zi#Qk@vDY=k6O}k-YP*?HvE|V|uVN+d8?L7Bht!J@~JCxfzM;&A%f_rOl#< z^7cxfgpImyXp>j7OM*6)`PWIenG9#9r0<9lUZhfB%_={1*6F?=;t^9sZF@9%V^)yk zY0_e>E0m4#v+qn@NQdV`%i9s2jLnm%b@zzm+l@Dgk!Z1GG^NiNbiqoDBz*P-d4!Oq zA65dx0F93Zc^uJaR&pdeO6qBzUx(WAyo}69gfe3|qY7*3b=0<4GG?(c`HZsx^5y53 zHu6nHt^U_pE?R2C=HuC9pF~ZkaH^s7tMk@8xKmGrSSCCgi$^kMl3FnEB-la}PwVFy z@X&{z%Eix|PyOjs(n8ZRCt_|lWF7>yWF(|HX|0k&7vj3Fp0 z{YzQ9&=$-QK;f(HM%M zIwmY*Rc+;}hRUu0ijtM;nwg&oCAO+IpCel@FDl@(lgdNNpe8No>UY~}tG({w7?1SG z6&i~_Jn>4`1-t^8yQM+HQwFW21ue0WyvZ!GEnTb|Y_H&Vgl(p50ALw;bBoK%#W*5& z#^vsd8`)H(VNF@Q0AzbCkqPS#y;PQuZV?tO6)8iS&nd;%{w+ZzXLys5cNPMV8J1RR zRA=TE=5%d^g=Edi*{L!QGWk?z%7`8<62;l%mi7Hy`y9j~M$|o=XXvG}%vW_Rt=?$R z0-j$oCSwrQSJa>nK-zGl`x@5Qyw2j5uk#gl;H8y_(|RV!sRzO+-DIc#`61_Emg zPeWr>b)%>1;@K*Q@{NdwZOMcZMpr7u@4!PS7~d6C@L(_Rn|YM9QsbGhDXS`@8PkmO zb;VK(J!KIv_iCK1Y;r`Ol{_d9jvzwle8)M)=UveW^XJa7D`(2tKU^dD_9#!!(4UV2 zrAAYmN1p>2s%2nfk(v3?HBmqFoVV*ohR(im+jc2eV$q>ChBzP+3&m3-NF~YsXq1m5nNWJvB6kGRZgV)yb}Y)xL?~q6{-rIh#CIp4c$IlxI)Ul(p{c zwbFL&b2QW?iX?CEIgUF%juP=j2gfmszp8NEpvT6dQ^BZw?E=LswB6$9iWFP-L1|>% zVXBNOo|uSsC$6%>qb4G|lV*0<#H9@-%Z^Yv*NCo2ciPM#vuQquEWS698)UFkR@Mq< zVtAM+mu29nD>p_Y`6A~|PvLTswB2edzj8bl9*f2%sXSxGY8y|N$CvosDyibQBq{I+HH*|gA=LDm^GS0J?r)F<>($k z=nQ41lppOI)L#VMOyedbs8;8@vtgVoSv0sL$L9#HfP8sJLfi*Z!&l%!jcjFk-V`J- z&JKsrNBANV)V3xNjPoXI@lpzSW5{a=!?_}OI*{$^j*1JGI%RBw*;GEkyWJ?G4&qlW zuWtz8;rnI2CXJ(OOh!|Dt|Gsau>=mB>!3U;x+l|#;6$|-V@3T5+i3ks+vo#85Eua_ zfStg{fIYzNzca4}E;)B!EPdY})u92fz{fe!(H z1>6Aa0qy|41$-aa4?G1t2mB6r4LAmzbjmh512_*@2CM*TfmYyBU;}UkupO8NJ^}0j zJ`dajJP7<4*bh7jJPZ5|cnvrP9DnLIDh194%7B%?Dj)##1Dk;nU;?-n_$Y8Aa2xP- z;9J1=fE@5^;054i;7`DD3%Aj!z&XG&zzsA4exMx~T)1t{@juYOc0p_-3GMzyd9GY; zuM{4^D8YA@SqwjXEmX^qaq0A2%u#uTw|~ZWYW|WQsOPn_|GPRpqBEo)TeG1tGpY3I z`$4u2%+JhhtD@+`ZT`zXUteWhWf}ENQGLzl73DJB%1~oIHC9$qp7r#%iO}44?fbVD2IR-iyj;AbK$v7N$G4d=8JzhI+mRi@uCRL)!pu})0 zE8~xR6dpAVOYG|Kkb-zM`SeAv`tGih<+k!vJHquH)ss)>!$gh>^+T+EWIy6_auJ4k9n(dLAmW&8a^ zenvvRDD;=_-A1u!P+hev!pbfS9t_T3W5@^ZY$|KBnvE)I6*>OGE)Tc-tXUjh}Z0ddR3oHBQHjU|rPnuFiOwv3uNcf24Q9h_fK*;~VuMT!FS_A$IE9Iy2+ zde@<|Z)a2LT77SaY+YU!*D|MQ@$I>)OWtR#$R@HwT;Bh%i7m=knYzy55fJ5)_1nVQN3U^v(3al1ylr#)z0ItSF2i_} zHaF5tWo*WZu2g-;%XY)&h+!4I;!Rtm`G=hKu;Sr zrnRC9w$)Op-zn9qO^);L9gE(1qDUb_o3NPKMI~NcW6=)iVY#^3a_Lx_$4tv`N8*M% zs^4EBPf9FUR1$O24C~i-`dq3m)@!9h6Zvxwg$eUZ>xsE_VSI|nsmhOl*;Fu^wiRdo zefemnNZuy~?wsc(N?|O&fX&SDmKlyv%TU(9%H6USC{R75%97txMa$(hkdo#2y53$t{gWryl6JF(eWIrZ)NfO4N1-Vxbh?uhOf*%8}e?Z_%4V)8zye-t-NGR!7$ za-sm#!5=q5MR}1S)3`tz%G;0c zeyiOGnXjI^jlvWm+~81*EU{to=YGF{{1d>Fz*E3i7H^}c;XVT#Ja_JAhT>ndo;{-vH2LXzIWBBj_^ee`fLYX z)o7i3?uuOL*M5uq`zO}CeZ@?DH4ggnv6=K~4t@5#bemq}D9@=5y39c@bka1FKG6}r zz(Jqnpig$tXVOgCo-d!5chL46dYdN4ucD$-{f~sh?wX34imJ+ZY#4;*Ribl8VV~??@YDz!;B{N0Yy{EGXEPoPsLHtTLSt!uE^x+VQ?A?f4Kzmjb*-(?X{cB-2H@E% zl@MEU5Oz0Pv8zmD%^HKM+VIkZT;M9h-w%~EGRc!>FPNz2a-iO%+x z*2~s)wRf*`2iCg>{9PV*|D~Omy4MY??{hPINM5DP`J4FWCi)BDR^W?(54a0pzWw7i zV4E{+UxxcXw-NXAQsBJ+P951_kN4K&ef4-hJ$@c$J4L)6f%nd1yG3l{i1*6l&5Zb) zLJ~s^2CykoOU~Akn8?|8?AWn?^qslkpFaEbc|T}+^gEl#bN`>mOApM(zZd5}ivNtR z2XtP)`JF=Dso&vCl)G%LaxYWv+D|BV_e09P;)uA@J1czb?msOo?#^G`B(C|hpRsEM z_qy0j)Qj8K*Ry-ujprobuKn$;Rky*te#yfRJOQ`n!q>-6Zl&pi^-~Y|T50c-A0DdN z-b#;jk0ieTl~!8w$;+SL_-yOi>+YL;|JTp(_rCJn6VIR1;s5JjcD?7Z!_$7!zXv|@ zBy6&<0_irw1O?@@8{5_A@!{Y3pPXDar z@%P>L?Hk%&fAf-mp4ZdR<$ZtEo9ib&xT)!T);0gobH?~PMK5fHBinhIQS!C4`U5f! z+;#7Bfrq}azw|qmwD<4ko%ZbBj=F#Oj+ra{^8FY~FMYB8@!VSrmcRIT=_hyH=l#P! z4{g2w6Q=~qzP7*g<~!z7-Qv=Dm#_Soai}r2=(b;BEUl{g%yj>`yY{w#KBVY_J^NMo zlZrNsm(CaZ9~8aza4_w z{iPqg6ycj&KNPy?yEJhH!fREy>7e&@>^t&2FH50pN*67_M%n$KVR$IZ`NweCRahdzVwU!T4IqZbXeE%t%F zMbUrdpr=>A`lrLcS-fcHZsfOl!;!U4`nR9F`!^qYtn^FoCFASAx@q{te^jIQKGjrh zB@X&M4*GZpeS(Aj(TaNxeZLC&e+S;?yH5I{gMQdSKjff);Gn%z2*r27YF^SgZ_hqKJ1`hanLV2=-)Z$Lk{|%9rTM1`UMC5 zTL(>N%%q=pg#X4tKj)yIb-?tpxAwBHq2=HG#MB*#d78cTG2gclK`zya&MB_~H^8DB|sKokur zCZHF%97qGxz{i1Gfjfb31CIdD18)HfUR^>h}U z(Z8TBfKFf&FbYfqHv{(qKLVZyjsmB>hB^nDfek* zNnjHAAaEVgTPOKUjWYlhk>_%_xurM1kMF61gd~$U_H6ff06Yvl3LF5Q23`PO2HpUU0`ED3HUQ2B3}87>1vCI_flGk_ zU>HaOSzrfnEpR<>3-ATtF5uh1gTN!e0pKa%Ip8JW4S?Rnc?g^doC_=iDu6nm8CVbW z0b775kOr;-b^_M}w*X%N?gG9I`~Y|qcmg;Gya2omyaCW#Xn){zV98sBwp$K=6VO@2 z+XjEOh~5eR&A^?&13(UV3OEe7{sf)CGN1vt6xag9fvbSsz|Fu{fqlRM;2`i4@HVjM zZR7{20M-KAfDCXoa3gR#a4)bQcm{YGI0`KKSB%p@1JDg@12Vt|fg6F_fd_y`foFg> z0Kzza`q4tU-W@;R9Y5b4Ki?fc-yJ{y^W*3H$QNPL3j@5RWN#+6Jr*~4zR10_&dmD4 zCeeM$7jG|`1n@fZcu$q?P{Q;PomtYEN{x-D^9nZbW&u7jOM23*Rz7=55^TqXtbk;YV%4E6pMDJ(1WlX81 zC5mFB&~yp=S(h&!8$tc}Y+B2gi-w$*Dcw=2$qpUhDFv4ZH6D-m zhO(o&#@0G{(CKGhXDBlw=e87DEr02cU1d^0g<4rX7OfMSCsRuvptDnPk|Raw^e_)q zJsy`%t+^j4a8;JU+r~V#-DFQR-$vt>*)pEZ%2(nzOK^4J_>EsP zP|G3$lQ<(v*2&BZUp$WC?Z=wpbAaflnnDF)oY}7_sc8DSrUsL734N)gou^NQ;s|vP z27f>p&I1<2Rbo=FfBaKPyVVkk@Q~J<<*h$l?Uui#wV%z{v`l5qz$DS};BDZUE3G&Y zWVAfVh4AgOlAx1aovBbnpSOG^b4jyHK`wT6rMBzQYh~U)M3t_t@wh*>ov4a^*%&7~ zkQ$0bOdfy8@9M<}tDCu8^5lxA13= zbKjVY4?W*uzS=@U^8L3=&l=4hoXtht-!OMDIVu&$-Pn{RpOE9$f5p`wH_bHt(KVpV z8s#snMCZ@jpwyz>OOC|t+ntJecE=k?<$EL5&f_(-rlXtG&Be{v zYW*CcMHf_Bt-`s4cV~W8su#Xg4A(w(<3t0luo;89!4;Nae#pg&Hu4dvU*-zS zy!kCI6?-e(GzDEz-H(P{(P(^}B~4cp&1})AD;iJX!W?r&r4_DlsZx!(qOy`GN^$tc zvtdezYf;)2l|FSPyU;oAic0sJa7D9hA$7_X)qUwNTqCA*L;9Rc)=#k|15kSvB{}^( z{3CQ5A3as{1sAWF=DYekTnRG~9!1-IS$y0}zrsG*)9kD4;|XK*byr%?%f8!{PEBB( z(b=YNx;Wc>)%ahoE7@ov#+nQ-2&4O5D1apM0DNlC%fE$hLgq>Db3w7nF8#p8Yo9`> z?}uF6P!IDFwf94prIY!Q%eoS(>BlZhlt1FKtZ*oa^#9I<4ix5A|B3jxEI$<=m*r9M zaqs$>_|h1Ka^kbnN!ri8s8kRgU_V=eq@ODvqW?nq5a|i_iSj4eXYqCWDfVSk7!m$n z`H=sEF10?G=vfzcwdeRa%44WX<)2*H)OZ?oNrznHxEVl$)2l8F5K@9S#K(DjlYMdS z)hFX=Q$4S=C)qYLKhc(fSGeoo{iIq`gUMJC$3;cA?>;;dold-liX#Rs}kcoun*&TDym4iZzTEzIH<|gl;YBjM4!^-Tczi>~>nN)Y{HZ9NJ`~(c1Qtof1O$ACS zbxVO(iO~++Mdq`q9_I3v28pglsH*=$&Fuou&iySVeAn1vPD%96&{T@Au6LAlh0^+x zjWEQyt3=0d;cNVNOS-HPeF>KfUzWUH(r+dsy5jQ+j|jJ*{{*=Yn%Rn{Fi%IseL0<4M5{_& z=->>|X>v!D%9y-iq}^$#fw{Wp^7W;$K@cB3RdfThL6@Iq7Npw1RjMknmf9JXae>r&nx3SL82}k0* zH$fBVcky2j9f7{?Kxe)gsTaKeEE3lCa3-rXL_oib|5_++ze&(GdO8F7j&U7mM*sRi zXQv)k_JaQJgu(tmU*Syn|NndJ+7tSf?>Lz&T}3o~Jc%v(X`Uy2H(Xu^a8Q}2FOqkO z?f72sd8XLttnd;#@i=}D=}brQ*E{%3E-Invo8Ljt#yRAdL;jI>kRP2RU1lA52l>eo z-ea_v`lubx%>#Ij?xc0pf;-8LbOL`JK}e7`z}H2)OV6Vh)$};|rB6SP^OFDFe8ze7 zLV={|GtZ-?Mf4XyA1R8@bIc7=lgLYC2LWBFbN;4P38tr&!+*@eVc))e#P7QKpN<_< z4*wmK{ZZdZ;c;u7jDmL;ZpU{|?F^$QnWbUwM@PLr|h zHdH^MLoAq&&XZoc7UAh5yPyf~LUd1djU&6bxpoovS2Tv9(v`YDdJWO@XQ;9jW4dUJ zVE?{(8YQ}@%xh)YN3Lg?mm8y*um`CL9BWejPTBIl*Pk9JD;t~s9 z)GwoN0Hbg}Qtjb)n=(?j!Oy?HJ?@pGs#oz!pR-GBmlv~?QyxHvNyR`WU8nJSS4;i*8eo4K1)#FDN0aUYJCd134t<|ZfHuN?);#)OM9ds zXCftKjOuba7xC@%Sjs}XaX!*gpDEdyUFk89A5J9$F6)Yb;|6@d0O(1?Fp#f^v_(qx za&M$liu7;LDHrtC(@Mmtk)xLyP%`#aN!W7KR*BR>R^lb4bql3aS3#Z>UJAKR@J2+U zRmwOer5M2-0k6ND%`@oBfCsg?it0$!?r}5p3_v<0>o^l|Gc=~_Ow}pxYd;_IJz8f> z=g%%{(vi;!)XYY}E?2MAV}!<0-`P3ZjNA5Ndi!Q 8 1 false[8 0 0 1 0 0]{}imagemask}{/$bkg true def}ifelse}if}ifelse +@gr $wid 0 gt $hei 0 gt and{$pn cvlit load aload pop/$pd xd 3 -1 roll sub +/$phei xd exch sub/$pwid xd $wid $pwid div ceiling 1 add/$tlx xd $hei $phei div +ceiling 1 add/$tly xd currentdict/CorelPtrnL2Pattern known $psy 0 eq and $psx 0 +eq and{CorelPtrnL2Pattern}{$psx 0 eq{CorelPtrnTileVeritcal}{CorelPtrnTileHoriz +}ifelse}ifelse}if @gr @np/$bkg false def}bd/CorelPtrnSetBBox{pathbbox/$ury xd +/$urx xd/$lly xd/$llx xd}bd/CorelPtrnSetFirstTile{$tllx $pxf add dup $tllx gt +{$pwid sub}if/$tx xd $tury $pyf sub dup $tury lt{$phei add}if/$ty xd}bd/p{/$pm +xd 7 rp/$pyf xd/$pxf xd/$pn xd/$fil 1 def}bd/CorelPtrnDraw{@ep}bd +/CorelPtrnPutTile{@sv/$in true def 2 copy dup $lly le{/$in false def}if $phei +sub $ury ge{/$in false def}if dup $urx ge{/$in false def}if $pwid add $llx le{ +/$in false def}if $in{@np 2 copy m $pwid 0 rl 0 $phei neg rl $pwid neg 0 rl 0 +$phei rl clip @np $pn cvlit load aload pop 7 -1 roll 5 index sub 7 -1 roll 3 +index sub Tl matrix currentmatrix/$ctm xd CorelPtrnDraw pop pop pop pop}{pop +pop}ifelse @rs}bd/CorelPtrnTileHoriz{CorelPtrnSetFirstTile 0 1 $tly 1 sub{dup +$psx mul $tx add{dup $llx gt{$pwid sub}{exit}ifelse}loop exch $phei mul $ty +exch sub 0 1 $tlx 1 sub{$pwid mul 3 copy 3 -1 roll add exch CorelPtrnPutTile +pop}for pop pop}for}bd/CorelPtrnTileVeritcal{CorelPtrnSetFirstTile 0 1 $tlx 1 +sub{dup $pwid mul $tx add exch $psy mul $ty exch sub{dup $ury lt{$phei add} +{exit}ifelse}loop 0 1 $tly 1 sub{$phei mul 3 copy sub CorelPtrnPutTile pop}for +pop pop}for}bd L2? UseLevel 2 ge and{/CorelPtrnL2Pattern{@sv[$pn cvlit load +aload pop pop]$pwid $phei $pn cvlit load aload pop pop pop pop pathbbox pop pop +2 index sub exch 3 index sub 4 -2 roll pop pop exch matrix identmatrix +translate/PatternMatrix xd/PatternYStep xd/PatternXStep xd/PatternBBox xd +currentdict/PatternMainDict xd <> +PatternMatrix makepattern setpattern fill @rs}def}if +end +%%EndResource +%%EndProlog +%%BeginSetup +wCorel11Dict begin +@BeginSysCorelDict +2.6131 setmiterlimit +1.00 setflat +/$fst 128 def +%%EndSetup + +%%Page: 1 1 +%LogicalPage: 1 +%%BeginPageSetup +@sv +@sm +@sv +%%EndPageSetup +@rax %Note: Object +147.81600 74.66400 428.47200 355.32000 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +428.47200 216.43200 m +286.70400 355.32000 L +147.81600 213.62400 L +286.70400 74.66400 L +428.47200 216.43200 L +@c +B + +@rax %Note: Object +286.70400 80.35200 422.78400 216.43200 @E + 0 O 0 @g +0.60 0.00 0.40 0.58 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +414.28800 216.43200 m +422.78400 216.43200 L +286.70400 80.35200 L +286.70400 88.84800 L +414.28800 216.43200 L +@c +B + +@rax %Note: Object +153.50400 80.35200 286.70400 213.62400 @E + 0 O 0 @g +0.60 0.00 0.40 0.51 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +153.50400 213.62400 m +162.00000 213.62400 L +286.70400 88.84800 L +286.70400 80.35200 L +153.50400 213.62400 L +@c +B + +@rax %Note: Object +153.50400 213.62400 286.70400 349.63200 @E + 0 O 0 @g +0.60 0.00 0.40 0.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +286.70400 341.20800 m +286.70400 349.63200 L +153.50400 213.62400 L +162.00000 213.62400 L +286.70400 341.20800 L +@c +B + +@rax %Note: Object +286.70400 216.43200 422.78400 349.63200 @E + 0 O 0 @g +0.73 0.00 0.99 0.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +286.70400 349.63200 m +286.70400 341.20800 L +414.28800 216.43200 L +422.78400 216.43200 L +286.70400 349.63200 L +@c +B + +@rax %Note: Object +162.00000 88.84800 414.28800 341.20800 @E + 0 O 0 @g +0.60 0.00 0.40 0.40 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +286.70400 88.84800 m +414.28800 216.43200 L +286.70400 341.20800 L +162.00000 213.62400 L +286.70400 88.84800 L +@c +B + +@rax %Note: Object +165.81600 103.03200 423.72000 344.01600 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +313.20000 312.84000 m +321.69600 304.27200 L +321.69600 304.27200 L +263.08800 244.80000 L +263.08800 304.27200 L +268.77600 304.27200 L +277.27200 312.84000 L +277.27200 335.44800 L +268.77600 344.01600 L +174.31200 344.01600 L +165.81600 335.44800 L +165.81600 312.84000 L +174.31200 304.27200 L +180.93600 304.27200 L +180.93600 111.52800 L +191.30400 103.03200 L +220.60800 103.03200 L +423.72000 312.84000 L +423.72000 335.44800 L +415.22400 344.01600 L +322.63200 344.01600 L +313.20000 335.44800 L +313.20000 312.84000 L +@c +B + +@rax %Note: Object +171.43200 309.96000 271.58400 338.40000 @E + 0 O 0 @g +0.00 0.00 0.00 0.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +177.12000 309.96000 m +171.43200 315.64800 L +171.43200 332.64000 L +177.12000 338.32800 L +265.96800 338.40000 L +271.58400 332.64000 L +265.96800 329.90400 L +263.08800 332.64000 L +177.12000 318.52800 L +177.12000 309.96000 L +@c +B + +@rax %Note: Object +187.48800 108.72000 194.11200 315.64800 @E + 0 O 0 @g +0.00 0.00 0.00 0.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +194.11200 108.72000 m +187.48800 114.40800 L +187.48800 310.03200 L +194.11200 315.64800 L +194.11200 108.72000 L +@c +B + +@rax %Note: Object +247.03200 207.93600 341.56800 315.64800 @E + 0 O 0 @g +0.00 0.00 0.00 0.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +335.88000 309.96000 m +341.56800 315.64800 L +341.56800 304.27200 L +247.03200 207.93600 L +257.47200 230.61600 L +335.88000 309.96000 L +@c +B + +@rax %Note: Object +177.12000 309.96000 196.05600 321.33600 @E + 0 O 0 @g +0.00 0.00 0.00 0.50 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +196.05600 318.45600 m +194.11200 315.64800 L +187.48800 309.96000 L +177.12000 309.96000 L +177.12000 321.33600 L +196.05600 318.45600 L +@c +B + +@rax %Note: Object +247.03200 208.00800 271.58400 332.64000 @E + 0 O 0 @g +0.00 0.00 0.00 0.50 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +257.47200 309.96000 m +257.47200 230.61600 L +247.03200 208.00800 L +247.03200 315.72000 L +263.08800 315.72000 L +265.96800 318.52800 L +263.08800 332.64000 L +271.58400 332.64000 L +271.58400 315.64800 L +265.96800 309.96000 L +257.47200 309.96000 L +@c +B + +@rax %Note: Object +318.88800 309.96000 418.10400 338.32800 @E + 0 O 0 @g +0.00 0.00 0.00 0.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +324.50400 309.96000 m +318.88800 315.64800 L +318.88800 332.64000 L +325.44000 338.32800 L +411.48000 338.32800 L +418.10400 332.64000 L +408.60000 324.14400 L +324.50400 318.52800 L +324.50400 309.96000 L +@c +B + +@rax %Note: Object +194.11200 108.72000 418.10400 332.64000 @E + 0 O 0 @g +0.00 0.00 0.00 0.50 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +418.10400 315.64800 m +218.66400 108.72000 L +194.11200 108.72000 L +194.11200 117.21600 L +212.11200 117.21600 L +411.48000 321.33600 L +408.60000 332.64000 L +418.10400 332.64000 L +418.10400 315.64800 L +@c +B + +@rax %Note: Object +324.50400 309.96000 343.44000 321.33600 @E + 0 O 0 @g +0.00 0.00 0.00 0.50 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +343.44000 318.45600 m +341.49600 315.64800 L +335.88000 309.96000 L +324.50400 309.96000 L +324.50400 321.33600 L +343.44000 318.45600 L +@c +B + +@rax %Note: Object +177.12000 114.40800 412.41600 332.71200 @E + 0 O 0 @g +0.00 0.00 0.00 0.20 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +247.03200 208.00800 m +247.03200 315.72000 L +263.08800 315.72000 L +265.96800 318.52800 L +265.96800 329.90400 L +263.08800 332.71200 L +179.92800 332.71200 L +177.12000 329.90400 L +177.12000 318.52800 L +179.92800 315.72000 L +194.11200 315.72000 L +194.11200 117.21600 L +197.78400 114.40800 L +213.98400 114.40800 L +412.41600 321.33600 L +412.41600 329.47200 L +409.53600 332.71200 L +327.38400 332.71200 L +324.50400 329.90400 L +324.50400 318.45600 L +327.38400 315.64800 L +341.56800 315.64800 L +341.56800 304.27200 L +247.03200 208.00800 L +@c +B + +@rax %Note: Object +292.89600 185.18400 326.95200 213.55200 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +298.58400 207.86400 m +305.20800 213.55200 L +322.20000 213.55200 L +326.95200 207.86400 L +321.26400 190.87200 L +314.71200 185.18400 L +297.72000 185.18400 L +292.89600 190.87200 L +298.58400 207.86400 L +@c +B + +@rax %Note: Object +304.27200 114.33600 424.22400 182.37600 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +304.27200 114.33600 m +321.33600 165.31200 L +315.64800 165.31200 L +321.33600 182.37600 L +346.75200 182.37600 L +352.44000 176.68800 L +356.25600 176.68800 L +361.87200 182.37600 L +380.80800 182.37600 L +386.49600 176.68800 L +390.24000 176.68800 L +395.92800 182.37600 L +416.66400 182.37600 L +424.22400 171.00000 L +411.84000 130.68000 L +417.45600 130.68000 L +411.98400 114.33600 L +377.92800 114.33600 L +391.24800 154.00800 L +382.75200 154.00800 L +374.90400 130.82400 L +380.52000 130.82400 L +375.19200 114.33600 L +341.13600 114.33600 L +354.38400 154.00800 L +345.88800 154.00800 L +337.96800 130.68000 L +343.65600 130.68000 L +338.32800 114.33600 L +304.27200 114.33600 L +@c +B + +@rax %Note: Object +311.83200 120.02400 418.46400 176.68800 @E + 0 O 0 @g +0.00 0.00 0.00 0.20 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +414.07200 176.68800 m +418.46400 170.42400 L +404.49600 125.64000 L +410.11200 125.64000 L +408.24000 120.02400 L +385.56000 120.02400 L +398.80800 159.69600 L +378.93600 159.69600 L +367.63200 125.64000 L +373.24800 125.64000 L +371.37600 120.02400 L +348.69600 120.02400 L +361.94400 159.69600 L +342.07200 159.69600 L +330.76800 125.64000 L +336.45600 125.64000 L +334.51200 120.02400 L +311.83200 120.02400 L +328.89600 171.00000 L +323.20800 171.00000 L +325.08000 176.68800 L +345.88800 176.68800 L +351.57600 171.00000 L +357.19200 171.00000 L +362.88000 176.68800 L +379.87200 176.68800 L +385.56000 171.00000 L +391.24800 171.00000 L +396.93600 176.68800 L +414.07200 176.68800 L +@c +B + +@rax %Note: Object +267.40800 114.33600 318.45600 182.37600 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +/$fm 0 def +318.45600 182.37600 m +301.10400 130.75200 L +307.00800 130.75200 L +301.39200 114.33600 L +267.40800 114.33600 L +284.40000 165.31200 L +278.71200 165.31200 L +318.45600 182.37600 L +@c +278.71200 165.31200 m +284.40000 182.37600 L +318.45600 182.37600 L +@c +F + +@rax %Note: Object +267.40800 114.33600 318.45600 182.37600 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +318.45600 182.37600 m +301.10400 130.75200 L +307.00800 130.75200 L +301.39200 114.33600 L +267.40800 114.33600 L +284.40000 165.31200 L +278.71200 165.31200 L +@c +278.71200 165.31200 m +284.40000 182.37600 L +318.45600 182.37600 L +@c +S + +@rax %Note: Object +274.96800 120.02400 310.89600 176.68800 @E + 0 O 0 @g +0.00 0.00 0.00 0.20 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +297.64800 120.02400 m +299.52000 125.64000 L +293.83200 125.64000 L +310.89600 176.68800 L +287.28000 176.68800 L +285.33600 171.00000 L +291.96000 171.00000 L +274.96800 120.02400 L +297.64800 120.02400 L +@c +B + +@rax %Note: Object +299.52000 190.87200 320.32800 207.86400 @E + 0 O 0 @g +0.00 0.00 0.00 0.20 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +/$fm 0 def +316.51200 193.68000 m +320.32800 205.05600 L +318.45600 207.86400 L +307.08000 207.86400 L +303.33600 205.05600 L +299.52000 193.68000 L +301.46400 190.87200 L +312.84000 190.87200 L +316.51200 193.68000 L +@c +B + +%%PageTrailer +@rs +@rs +%%Trailer +@EndSysCorelDict +end +%%DocumentSuppliedResources: procset wCorel11Dict 11.0 0 +%%EOF diff --git a/share/vim/vim73/vimlogo.gif b/share/vim/vim74/vimlogo.gif similarity index 100% rename from share/vim/vim73/vimlogo.gif rename to share/vim/vim74/vimlogo.gif diff --git a/share/vim/vim73/vimlogo.pdf b/share/vim/vim74/vimlogo.pdf similarity index 100% rename from share/vim/vim73/vimlogo.pdf rename to share/vim/vim74/vimlogo.pdf diff --git a/share/vim/vim73/vimlogo.xpm b/share/vim/vim74/vimlogo.xpm similarity index 100% rename from share/vim/vim73/vimlogo.xpm rename to share/vim/vim74/vimlogo.xpm diff --git a/share/vim/vim74/vimrc_example.vim b/share/vim/vim74/vimrc_example.vim new file mode 100644 index 00000000..3e9b56f0 --- /dev/null +++ b/share/vim/vim74/vimrc_example.vim @@ -0,0 +1,96 @@ +" An example for a vimrc file. +" +" Maintainer: Bram Moolenaar +" Last change: 2011 Apr 15 +" +" To use it, copy it to +" for Unix and OS/2: ~/.vimrc +" for Amiga: s:.vimrc +" for MS-DOS and Win32: $VIM\_vimrc +" for OpenVMS: sys$login:.vimrc + +" When started as "evim", evim.vim will already have done these settings. +if v:progname =~? "evim" + finish +endif + +" Use Vim settings, rather than Vi settings (much better!). +" This must be first, because it changes other options as a side effect. +set nocompatible + +" allow backspacing over everything in insert mode +set backspace=indent,eol,start + +if has("vms") + set nobackup " do not keep a backup file, use versions instead +else + set backup " keep a backup file +endif +set history=50 " keep 50 lines of command line history +set ruler " show the cursor position all the time +set showcmd " display incomplete commands +set incsearch " do incremental searching + +" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries +" let &guioptions = substitute(&guioptions, "t", "", "g") + +" Don't use Ex mode, use Q for formatting +map Q gq + +" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo, +" so that you can undo CTRL-U after inserting a line break. +inoremap u + +" In many terminal emulators the mouse works just fine, thus enable it. +if has('mouse') + set mouse=a +endif + +" Switch syntax highlighting on, when the terminal has colors +" Also switch on highlighting the last used search pattern. +if &t_Co > 2 || has("gui_running") + syntax on + set hlsearch +endif + +" Only do this part when compiled with support for autocommands. +if has("autocmd") + + " Enable file type detection. + " Use the default filetype settings, so that mail gets 'tw' set to 72, + " 'cindent' is on in C files, etc. + " Also load indent files, to automatically do language-dependent indenting. + filetype plugin indent on + + " Put these in an autocmd group, so that we can delete them easily. + augroup vimrcEx + au! + + " For all text files set 'textwidth' to 78 characters. + autocmd FileType text setlocal textwidth=78 + + " When editing a file, always jump to the last known cursor position. + " Don't do it when the position is invalid or when inside an event handler + " (happens when dropping a file on gvim). + " Also don't do it when the mark is in the first line, that is the default + " position when opening a file. + autocmd BufReadPost * + \ if line("'\"") > 1 && line("'\"") <= line("$") | + \ exe "normal! g`\"" | + \ endif + + augroup END + +else + + set autoindent " always set autoindenting on + +endif " has("autocmd") + +" Convenient command to see the difference between the current buffer and the +" file it was loaded from, thus the changes you made. +" Only define it when not defined already. +if !exists(":DiffOrig") + command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis + \ | wincmd p | diffthis +endif -- 2.11.4.GIT